<?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>176200</bug_id>
          
          <creation_ts>2017-08-31 17:18:41 -0700</creation_ts>
          <short_desc>[CG] Upstream CoreGraphics-related WebKitSystemInterface functions</short_desc>
          <delta_ts>2017-09-27 12:46:06 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Andy Estes">aestes</reporter>
          <assigned_to name="Andy Estes">aestes</assigned_to>
          <cc>achristensen</cc>
    
    <cc>beidson</cc>
    
    <cc>buildbot</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dino</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>jer.noble</cc>
    
    <cc>joepeck</cc>
    
    <cc>rniwa</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1344218</commentid>
    <comment_count>0</comment_count>
    <who name="Andy Estes">aestes</who>
    <bug_when>2017-08-31 17:18:41 -0700</bug_when>
    <thetext>[Cocoa] Upstream CoreGraphics-related WebKitSystemInterface functions</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1344219</commentid>
    <comment_count>1</comment_count>
      <attachid>319546</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2017-08-31 17:19:42 -0700</bug_when>
    <thetext>Created attachment 319546
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1344220</commentid>
    <comment_count>2</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-08-31 17:21:56 -0700</bug_when>
    <thetext>Attachment 319546 did not pass style-queue:


ERROR: Source/WebCore/PAL/pal/spi/cg/CoreGraphicsSPI.h:153:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebCore/PAL/pal/spi/cg/CoreGraphicsSPI.h:158:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
Total errors found: 2 in 27 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>1344230</commentid>
    <comment_count>3</comment_count>
      <attachid>319550</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2017-08-31 17:28:05 -0700</bug_when>
    <thetext>Created attachment 319550
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1344232</commentid>
    <comment_count>4</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-08-31 17:29:59 -0700</bug_when>
    <thetext>Attachment 319550 did not pass style-queue:


ERROR: Source/WebCore/PAL/pal/spi/cg/CoreGraphicsSPI.h:153:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
Total errors found: 1 in 27 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>1344245</commentid>
    <comment_count>5</comment_count>
      <attachid>319555</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2017-08-31 17:40:37 -0700</bug_when>
    <thetext>Created attachment 319555
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1344247</commentid>
    <comment_count>6</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-08-31 17:42:44 -0700</bug_when>
    <thetext>Attachment 319555 did not pass style-queue:


ERROR: Source/WebCore/PAL/pal/spi/cg/CoreGraphicsSPI.h:153:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebCore/PAL/pal/spi/cg/CoreGraphicsSPI.h:163:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebCore/PAL/pal/spi/cg/CoreGraphicsSPI.h:168:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebCore/PAL/pal/spi/cg/CoreGraphicsSPI.h:174:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebCore/PAL/pal/spi/cg/CoreGraphicsSPI.h:181:  Omit int when using unsigned  [runtime/unsigned] [1]
Total errors found: 5 in 27 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>1344291</commentid>
    <comment_count>7</comment_count>
      <attachid>319567</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2017-08-31 20:39:34 -0700</bug_when>
    <thetext>Created attachment 319567
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1344292</commentid>
    <comment_count>8</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-08-31 20:42:15 -0700</bug_when>
    <thetext>Attachment 319567 did not pass style-queue:


ERROR: Source/WebCore/PAL/pal/spi/cg/CoreGraphicsSPI.h:153:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebCore/PAL/pal/spi/cg/CoreGraphicsSPI.h:163:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebCore/PAL/pal/spi/cg/CoreGraphicsSPI.h:168:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebCore/PAL/pal/spi/cg/CoreGraphicsSPI.h:174:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebCore/PAL/pal/spi/cg/CoreGraphicsSPI.h:181:  Omit int when using unsigned  [runtime/unsigned] [1]
Total errors found: 5 in 27 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>1344295</commentid>
    <comment_count>9</comment_count>
      <attachid>319569</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2017-08-31 20:53:57 -0700</bug_when>
    <thetext>Created attachment 319569
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1344296</commentid>
    <comment_count>10</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-08-31 20:56:22 -0700</bug_when>
    <thetext>Attachment 319569 did not pass style-queue:


ERROR: Source/WebCore/PAL/pal/spi/cg/CoreGraphicsSPI.h:153:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebCore/PAL/pal/spi/cg/CoreGraphicsSPI.h:163:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebCore/PAL/pal/spi/cg/CoreGraphicsSPI.h:168:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebCore/PAL/pal/spi/cg/CoreGraphicsSPI.h:174:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebCore/PAL/pal/spi/cg/CoreGraphicsSPI.h:181:  Omit int when using unsigned  [runtime/unsigned] [1]
Total errors found: 5 in 27 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>1344297</commentid>
    <comment_count>11</comment_count>
      <attachid>319570</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2017-08-31 21:02:21 -0700</bug_when>
    <thetext>Created attachment 319570
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1344298</commentid>
    <comment_count>12</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-08-31 21:03:31 -0700</bug_when>
    <thetext>Attachment 319570 did not pass style-queue:


ERROR: Source/WebCore/PAL/pal/spi/cg/CoreGraphicsSPI.h:153:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebCore/PAL/pal/spi/cg/CoreGraphicsSPI.h:163:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebCore/PAL/pal/spi/cg/CoreGraphicsSPI.h:168:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebCore/PAL/pal/spi/cg/CoreGraphicsSPI.h:174:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebCore/PAL/pal/spi/cg/CoreGraphicsSPI.h:181:  Omit int when using unsigned  [runtime/unsigned] [1]
Total errors found: 5 in 27 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>1344309</commentid>
    <comment_count>13</comment_count>
      <attachid>319576</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2017-08-31 22:27:10 -0700</bug_when>
    <thetext>Created attachment 319576
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1344310</commentid>
    <comment_count>14</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-08-31 22:28:10 -0700</bug_when>
    <thetext>Attachment 319576 did not pass style-queue:


ERROR: Source/WebCore/PAL/pal/spi/cg/CoreGraphicsSPI.h:148:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebCore/PAL/pal/spi/cg/CoreGraphicsSPI.h:154:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebCore/PAL/pal/spi/cg/CoreGraphicsSPI.h:160:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebCore/PAL/pal/spi/cg/CoreGraphicsSPI.h:166:  Omit int when using unsigned  [runtime/unsigned] [1]
ERROR: Source/WebCore/PAL/pal/spi/cg/CoreGraphicsSPI.h:177:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
Total errors found: 5 in 27 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>1344312</commentid>
    <comment_count>15</comment_count>
      <attachid>319577</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2017-08-31 22:38:25 -0700</bug_when>
    <thetext>Created attachment 319577
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1344313</commentid>
    <comment_count>16</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-08-31 22:39:35 -0700</bug_when>
    <thetext>Attachment 319577 did not pass style-queue:


ERROR: Source/WebCore/PAL/pal/spi/cg/CoreGraphicsSPI.h:148:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebCore/PAL/pal/spi/cg/CoreGraphicsSPI.h:154:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebCore/PAL/pal/spi/cg/CoreGraphicsSPI.h:160:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebCore/PAL/pal/spi/cg/CoreGraphicsSPI.h:166:  Omit int when using unsigned  [runtime/unsigned] [1]
ERROR: Source/WebCore/PAL/pal/spi/cg/CoreGraphicsSPI.h:177:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
Total errors found: 5 in 27 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>1344329</commentid>
    <comment_count>17</comment_count>
      <attachid>319580</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2017-08-31 23:35:15 -0700</bug_when>
    <thetext>Created attachment 319580
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1344332</commentid>
    <comment_count>18</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-08-31 23:37:41 -0700</bug_when>
    <thetext>Attachment 319580 did not pass style-queue:


ERROR: Source/WebCore/PAL/pal/spi/cg/CoreGraphicsSPI.h:148:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebCore/PAL/pal/spi/cg/CoreGraphicsSPI.h:154:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebCore/PAL/pal/spi/cg/CoreGraphicsSPI.h:160:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebCore/PAL/pal/spi/cg/CoreGraphicsSPI.h:166:  Omit int when using unsigned  [runtime/unsigned] [1]
ERROR: Source/WebCore/PAL/pal/spi/cg/CoreGraphicsSPI.h:177:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
Total errors found: 5 in 27 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>1344335</commentid>
    <comment_count>19</comment_count>
      <attachid>319581</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2017-08-31 23:52:33 -0700</bug_when>
    <thetext>Created attachment 319581
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1344336</commentid>
    <comment_count>20</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-08-31 23:55:05 -0700</bug_when>
    <thetext>Attachment 319581 did not pass style-queue:


ERROR: Source/WebCore/PAL/pal/spi/cg/CoreGraphicsSPI.h:148:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebCore/PAL/pal/spi/cg/CoreGraphicsSPI.h:154:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebCore/PAL/pal/spi/cg/CoreGraphicsSPI.h:160:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebCore/PAL/pal/spi/cg/CoreGraphicsSPI.h:166:  Omit int when using unsigned  [runtime/unsigned] [1]
ERROR: Source/WebCore/PAL/pal/spi/cg/CoreGraphicsSPI.h:177:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
Total errors found: 5 in 27 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>1344340</commentid>
    <comment_count>21</comment_count>
      <attachid>319584</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2017-09-01 00:58:04 -0700</bug_when>
    <thetext>Created attachment 319584
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1344341</commentid>
    <comment_count>22</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-09-01 01:00:10 -0700</bug_when>
    <thetext>Attachment 319584 did not pass style-queue:


ERROR: Source/WebCore/PAL/pal/spi/cg/CoreGraphicsSPI.h:148:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebCore/PAL/pal/spi/cg/CoreGraphicsSPI.h:154:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebCore/PAL/pal/spi/cg/CoreGraphicsSPI.h:160:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebCore/PAL/pal/spi/cg/CoreGraphicsSPI.h:166:  Omit int when using unsigned  [runtime/unsigned] [1]
ERROR: Source/WebCore/PAL/pal/spi/cg/CoreGraphicsSPI.h:177:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
Total errors found: 5 in 27 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>1344398</commentid>
    <comment_count>23</comment_count>
      <attachid>319595</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2017-09-01 08:36:26 -0700</bug_when>
    <thetext>Created attachment 319595
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1344401</commentid>
    <comment_count>24</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-09-01 08:38:38 -0700</bug_when>
    <thetext>Attachment 319595 did not pass style-queue:


ERROR: Source/WebCore/PAL/pal/spi/cg/CoreGraphicsSPI.h:148:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebCore/PAL/pal/spi/cg/CoreGraphicsSPI.h:154:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebCore/PAL/pal/spi/cg/CoreGraphicsSPI.h:160:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebCore/PAL/pal/spi/cg/CoreGraphicsSPI.h:166:  Omit int when using unsigned  [runtime/unsigned] [1]
ERROR: Source/WebCore/PAL/pal/spi/cg/CoreGraphicsSPI.h:177:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
Total errors found: 5 in 27 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>1344408</commentid>
    <comment_count>25</comment_count>
      <attachid>319598</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2017-09-01 08:52:32 -0700</bug_when>
    <thetext>Created attachment 319598
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1344409</commentid>
    <comment_count>26</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-09-01 08:55:28 -0700</bug_when>
    <thetext>Attachment 319598 did not pass style-queue:


ERROR: Source/WebCore/PAL/pal/spi/cg/CoreGraphicsSPI.h:148:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebCore/PAL/pal/spi/cg/CoreGraphicsSPI.h:154:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebCore/PAL/pal/spi/cg/CoreGraphicsSPI.h:160:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebCore/PAL/pal/spi/cg/CoreGraphicsSPI.h:166:  Omit int when using unsigned  [runtime/unsigned] [1]
ERROR: Source/WebCore/PAL/pal/spi/cg/CoreGraphicsSPI.h:177:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
Total errors found: 5 in 27 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>1344420</commentid>
    <comment_count>27</comment_count>
      <attachid>319602</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2017-09-01 09:34:58 -0700</bug_when>
    <thetext>Created attachment 319602
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1344421</commentid>
    <comment_count>28</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-09-01 09:37:12 -0700</bug_when>
    <thetext>Attachment 319602 did not pass style-queue:


ERROR: Source/WebCore/PAL/pal/spi/cg/CoreGraphicsSPI.h:148:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebCore/PAL/pal/spi/cg/CoreGraphicsSPI.h:154:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebCore/PAL/pal/spi/cg/CoreGraphicsSPI.h:160:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebCore/PAL/pal/spi/cg/CoreGraphicsSPI.h:166:  Omit int when using unsigned  [runtime/unsigned] [1]
ERROR: Source/WebCore/PAL/pal/spi/cg/CoreGraphicsSPI.h:177:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
Total errors found: 5 in 27 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>1344423</commentid>
    <comment_count>29</comment_count>
      <attachid>319603</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2017-09-01 09:44:29 -0700</bug_when>
    <thetext>Created attachment 319603
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1344424</commentid>
    <comment_count>30</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-09-01 09:46:21 -0700</bug_when>
    <thetext>Attachment 319603 did not pass style-queue:


ERROR: Source/WebCore/PAL/pal/spi/cg/CoreGraphicsSPI.h:148:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebCore/PAL/pal/spi/cg/CoreGraphicsSPI.h:154:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebCore/PAL/pal/spi/cg/CoreGraphicsSPI.h:160:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebCore/PAL/pal/spi/cg/CoreGraphicsSPI.h:166:  Omit int when using unsigned  [runtime/unsigned] [1]
ERROR: Source/WebCore/PAL/pal/spi/cg/CoreGraphicsSPI.h:177:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
Total errors found: 5 in 27 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>1344432</commentid>
    <comment_count>31</comment_count>
      <attachid>319606</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2017-09-01 09:56:23 -0700</bug_when>
    <thetext>Created attachment 319606
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1344433</commentid>
    <comment_count>32</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-09-01 09:57:56 -0700</bug_when>
    <thetext>Attachment 319606 did not pass style-queue:


ERROR: Source/WebCore/PAL/pal/spi/cg/CoreGraphicsSPI.h:148:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebCore/PAL/pal/spi/cg/CoreGraphicsSPI.h:154:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebCore/PAL/pal/spi/cg/CoreGraphicsSPI.h:160:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebCore/PAL/pal/spi/cg/CoreGraphicsSPI.h:166:  Omit int when using unsigned  [runtime/unsigned] [1]
ERROR: Source/WebCore/PAL/pal/spi/cg/CoreGraphicsSPI.h:177:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
Total errors found: 5 in 27 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>1344465</commentid>
    <comment_count>33</comment_count>
      <attachid>319618</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2017-09-01 10:56:00 -0700</bug_when>
    <thetext>Created attachment 319618
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1344492</commentid>
    <comment_count>34</comment_count>
      <attachid>319618</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-09-01 11:37:33 -0700</bug_when>
    <thetext>Comment on attachment 319618
Patch

Clearing flags on attachment: 319618

Committed r221485: &lt;http://trac.webkit.org/changeset/221485&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1344493</commentid>
    <comment_count>35</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-09-01 11:37:35 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1353641</commentid>
    <comment_count>36</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-09-27 12:46:06 -0700</bug_when>
    <thetext>&lt;rdar://problem/34693910&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>319546</attachid>
            <date>2017-08-31 17:19:42 -0700</date>
            <delta_ts>2017-08-31 17:28:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-176200-20170831171942.patch</filename>
            <type>text/plain</type>
            <size>60660</size>
            <attacher name="Andy Estes">aestes</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIxMzgxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzVhYmE3NzU1NjhiNjgz
ZmZjOWVjZWE4MzhlNWFmOGRlMTVjOTY4Ni4uNmFhZDZiNmQxYzY3MzhkNGZkMTQwM2U4YjlhYjJj
MDZmZGEzM2M0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBACisyMDE3LTA4LTMxICBBbmR5
IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29jb2FdIFVwc3RyZWFtIENv
cmVHcmFwaGljcy1yZWxhdGVkIFdlYktpdFN5c3RlbUludGVyZmFjZSBmdW5jdGlvbnMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NjIwMAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NDb250ZXh0Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2VTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OnN1YnNhbXBsaW5n
TGV2ZWxGb3JTY2FsZUZhY3Rvcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3Jh
cGhpY3NDb250ZXh0Q0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0Ojpj
bGlwT3V0KToKKyAgICAgICAgKFdlYkNvcmU6OmFwcGx5U2hhZG93T2Zmc2V0V29ya2Fyb3VuZElm
TmVlZGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9QYXR0ZXJuQ0cuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UGF0dGVybjo6Y3JlYXRlUGxhdGZvcm1QYXR0ZXJuIGNvbnN0KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRDb2NvYS5t
bToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6Zm9jdXNSaW5nQ29sb3IpOgor
ICAgICAgICAoV2ViQ29yZTo6ZHJhd0ZvY3VzUmluZ0F0VGltZSk6CisgICAgICAgIChXZWJDb3Jl
OjpkcmF3Rm9jdXNSaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OmRyYXdGb2N1c1JpbmdUb0NvbnRl
eHQpOgorICAgICAgICAoV2ViQ29yZTo6ZHJhd0ZvY3VzUmluZ1RvQ29udGV4dEF0VGltZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vaW9zL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2VJT1MubW06CisgICAg
ICAgICogcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpm
bGlwSW1hZ2VTcGVjKToKKyAgICAgICAgKFdlYkNvcmU6OnNldERyYWdJbWFnZUltcGwpOgorICAg
ICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6c2V0RHJhZ0ltYWdlKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9tYWMvUGxhdGZvcm1FdmVudEZhY3RvcnlNYWMubW06CisgICAgICAgICogcGxhdGZvcm0v
bWFjL1Njcm9sbGJhclRoZW1lTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6bGluZW5CYWNrZ3Jv
dW5kQ29sb3IpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9UaGVtZU1hYy5tbToKKyAgICAgICAg
KFdlYkNvcmU6OmRyYXdDZWxsRm9jdXNSaW5nV2l0aEZyYW1lQXRUaW1lKToKKyAgICAgICAgKFdl
YkNvcmU6OmRyYXdDZWxsRm9jdXNSaW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvV2ViQ29y
ZVN5c3RlbUludGVyZmFjZS5oOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9XZWJDb3JlU3lzdGVt
SW50ZXJmYWNlLm1tOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9XZWJXaW5kb3dBbmltYXRpb24u
bW06CisgICAgICAgIChmbGlwUmVjdCk6CisgICAgICAgIChtYWluV2luZG93U2VydmVyQ29ubmVj
dGlvbklEKToKKyAgICAgICAgKHNldFNjYWxlZEZyYW1lRm9yV2luZG93KToKKyAgICAgICAgKC1b
V2ViV2luZG93U2NhbGVBbmltYXRpb24gc2V0Q3VycmVudFByb2dyZXNzOl0pOgorICAgICAgICAo
LVtXZWJXaW5kb3dGYWRlQW5pbWF0aW9uIHNldEN1cnJlbnRQcm9ncmVzczpdKToKKwogMjAxNy0w
OC0zMCAgQW5keSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+CiAKICAgICAgICAgW01hY10gVXBz
dHJlYW0gQWNjZXNzaWJpbGl0eS1yZWxhdGVkIFdlYktpdFN5c3RlbUludGVyZmFjZSBmdW5jdGlv
bnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
Q29yZS9QQUwvQ2hhbmdlTG9nCmluZGV4IDdiNGI2MDFmZTRlNWUxNTBmODE4OTc0NDU3YzY5ZWVi
OWI2MDEzNTEuLjYyN2UzZjM4ZmI0NDUyNGRiZTA5NDNjYzdkNGVjMjljMTg3ZTc2MzkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUv
UEFML0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDE3LTA4LTMxICBBbmR5IEVzdGVzICA8
YWVzdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29jb2FdIFVwc3RyZWFtIENvcmVHcmFwaGlj
cy1yZWxhdGVkIFdlYktpdFN5c3RlbUludGVyZmFjZSBmdW5jdGlvbnMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NjIwMAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogUEFMLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2o6CisgICAgICAgICogcGFsL3NwaS9jZy9Db3JlR3JhcGhpY3NTUEkuaDoKKyAgICAg
ICAgKiBwYWwvc3BpL21hYy9ISVNlcnZpY2VzU1BJLmg6CisgICAgICAgICogcGFsL3NwaS9tYWMv
TlNHcmFwaGljc1NQSS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9t
YWMvSElTZXJ2aWNlc1NQSS5oLgorCiAyMDE3LTA4LTMwICBBbmR5IEVzdGVzICA8YWVzdGVzQGFw
cGxlLmNvbT4KIAogICAgICAgICBbTWFjXSBVcHN0cmVhbSBBY2Nlc3NpYmlsaXR5LXJlbGF0ZWQg
V2ViS2l0U3lzdGVtSW50ZXJmYWNlIGZ1bmN0aW9ucwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBhODY2NmYzMzg1MzQx
ZDM1NmQ3YTBjNzEzMWVhMmFmZjY4MTRhNjhiLi4yMTVkMmY3ZDg0ZmUwZWNlYmNjOTRhN2QxMTZm
N2YxYTYyNTYxZDA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDE3LTA4LTMxICBBbmR5
IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29jb2FdIFVwc3RyZWFtIENv
cmVHcmFwaGljcy1yZWxhdGVkIFdlYktpdFN5c3RlbUludGVyZmFjZSBmdW5jdGlvbnMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NjIwMAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogUGx1Z2luUHJvY2Vz
cy9tYWMvUGx1Z2luUHJvY2Vzc01hYy5tbToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJvY2Vz
czo6cGxhdGZvcm1Jbml0aWFsaXplUHJvY2Vzcyk6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9X
aW5kb3dTZXJ2ZXJDb25uZWN0aW9uLmg6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9XaW5kb3dT
ZXJ2ZXJDb25uZWN0aW9uLm1tOgorICAgICAgICAoV2ViS2l0OjpyZWdpc3Rlck9jY2x1c2lvbk5v
dGlmaWNhdGlvbkhhbmRsZXIpOgorICAgICAgICAoV2ViS2l0OjpXaW5kb3dTZXJ2ZXJDb25uZWN0
aW9uOjpXaW5kb3dTZXJ2ZXJDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2luZG93U2Vy
dmVyQ29ubmVjdGlvbjo6YXBwbGljYXRpb25XaW5kb3dNb2RpZmljYXRpb25zU3RhcnRlZCk6IERl
bGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViU3lzdGVt
SW50ZXJmYWNlLm1tOgorICAgICAgICAoSW5pdFdlYkNvcmVTeXN0ZW1JbnRlcmZhY2UpOgorCiAy
MDE3LTA4LTMwICBBbmR5IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KIAogICAgICAgICBbTWFj
XSBVcHN0cmVhbSBBY2Nlc3NpYmlsaXR5LXJlbGF0ZWQgV2ViS2l0U3lzdGVtSW50ZXJmYWNlIGZ1
bmN0aW9ucwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4IGJkZjVkMzhhZTdlNWI3NjE0
MDliM2QxMDU0ZDg0MzgzODY4OWZiZGEuLjRkMzE2OTQxYjM2ZjllMzMyM2MzODI5NjgzNDcyNWMw
Njc4OTAwMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNCBAQAor
MjAxNy0wOC0zMSAgQW5keSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+CisKKyAgICAgICAgW0Nv
Y29hXSBVcHN0cmVhbSBDb3JlR3JhcGhpY3MtcmVsYXRlZCBXZWJLaXRTeXN0ZW1JbnRlcmZhY2Ug
ZnVuY3Rpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNzYyMDAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIENhcmJvbi9ISVdlYlZpZXcubW06CisgICAgICAgICgtW05TV2luZG93R3JhcGhpY3NDb250
ZXh0IF93ZWJfc2V0R3JhcGhpY3NQb3J0Ol0pOgorICAgICAgICAob3ZlcnJpZGVDR0NvbnRleHQp
OgorICAgICAgICAocmVzdG9yZUNHQ29udGV4dCk6CisgICAgICAgIChEcmF3KToKKyAgICAgICAg
KiBQbHVnaW5zL0hvc3RlZC9XZWJIb3N0ZWROZXRzY2FwZVBsdWdpblZpZXcubW06CisgICAgICAg
ICgrW1dlYkhvc3RlZE5ldHNjYXBlUGx1Z2luVmlldyBpbml0aWFsaXplXSk6CisgICAgICAgICog
UGx1Z2lucy9XZWJCYXNlTmV0c2NhcGVQbHVnaW5WaWV3Lmg6CisgICAgICAgICogUGx1Z2lucy9X
ZWJCYXNlTmV0c2NhcGVQbHVnaW5WaWV3Lm1tOgorICAgICAgICAoV2ViS2l0OjpzZW5kVXNlckNo
YW5nZU5vdGlmaWNhdGlvbnMpOgorICAgICAgICAqIFBsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5W
aWV3Lm1tOgorICAgICAgICAoK1tXZWJOZXRzY2FwZVBsdWdpblZpZXcgaW5pdGlhbGl6ZV0pOgor
ICAgICAgICAoLVtXZWJOZXRzY2FwZVBsdWdpblZpZXcgc2F2ZUFuZFNldE5ld1BvcnRTdGF0ZUZv
clVwZGF0ZTpdKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJTeXN0ZW1JbnRlcmZhY2Uu
bW06CisgICAgICAgIChJbml0V2ViQ29yZVN5c3RlbUludGVyZmFjZSk6CisgICAgICAgICogV2Vi
Vmlldy9XZWJGcmFtZS5tbToKKyAgICAgICAgKC1bV2ViRnJhbWUgX3BhaW50QmVoYXZpb3JGb3JE
ZXN0aW5hdGlvbkNvbnRleHQ6XSk6CisgICAgICAgICogV2ViVmlldy9XZWJGdWxsU2NyZWVuQ29u
dHJvbGxlci5tbToKKyAgICAgICAgKHNldENsaXBSZWN0Rm9yV2luZG93KToKKyAgICAgICAgKC1b
V2ViRnVsbFNjcmVlbkNvbnRyb2xsZXIgZmluaXNoZWRFbnRlckZ1bGxTY3JlZW5BbmltYXRpb246
XSk6CisgICAgICAgICgtW1dlYkZ1bGxTY3JlZW5Db250cm9sbGVyIGZpbmlzaGVkRXhpdEZ1bGxT
Y3JlZW5BbmltYXRpb246XSk6CisgICAgICAgICgtW1dlYkZ1bGxTY3JlZW5Db250cm9sbGVyIF9z
dGFydEVudGVyRnVsbFNjcmVlbkFuaW1hdGlvbldpdGhEdXJhdGlvbjpdKToKKyAgICAgICAgKC1b
V2ViRnVsbFNjcmVlbkNvbnRyb2xsZXIgX3N0YXJ0RXhpdEZ1bGxTY3JlZW5BbmltYXRpb25XaXRo
RHVyYXRpb246XSk6CisKIDIwMTctMDgtMzAgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29t
PgogCiAgICAgICAgIFtNYWNdIFVwc3RyZWFtIEFjY2Vzc2liaWxpdHktcmVsYXRlZCBXZWJLaXRT
eXN0ZW1JbnRlcmZhY2UgZnVuY3Rpb25zCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwv
UEFMLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9QQUwvUEFMLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZDk4NThmOWVlMmI0MWYwMDU5MzcxYWU5MGNi
MmJmZGRkYTNkMGI4OC4uNjFkOWUzNDZkMGNiNjAzYWQyOWY2MzVkZmUzNTE4ZWZlYmM0ODM3NiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML1BBTC54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9QQUwueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agpAQCAtMTAxLDYgKzEwMSw3IEBACiAJCUExMDI2NTg5MUY1Njc0N0EwMEI0Qzg0NCAvKiBISVRv
b2xib3hTUEkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEExMDI2NTg4MUY1Njc0N0EwMEI0Qzg0NCAvKiBISVRvb2xib3hTUEkuaCAqLzsgfTsKIAkJQTEw
MjY1OEIxRjU2NzQ4QzAwQjRDODQ0IC8qIFF1aWNrRHJhd1NQSS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTEwMjY1OEExRjU2NzQ4QzAwQjRDODQ0IC8q
IFF1aWNrRHJhd1NQSS5oICovOyB9OwogCQlBMTAyNjU4RTFGNTY3RTlEMDBCNEM4NDQgLyogSElT
ZXJ2aWNlc1NQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQTEwMjY1OEQxRjU2N0U5RDAwQjRDODQ0IC8qIEhJU2VydmljZXNTUEkuaCAqLzsgfTsKKwkJ
QTEwODI2RkUxRjU4QTQzMzAwNDc3MkFDIC8qIE5TR3JhcGhpY3NTUEkuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExMDgyNkZEMUY1OEE0MzMwMDQ3NzJB
QyAvKiBOU0dyYXBoaWNzU1BJLmggKi87IH07CiAJCUExRjU1RENGMUY1NTI4RUMwMEVEQjc1RiAv
KiBNZXRhZGF0YVNQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQTFGNTVEQ0UxRjU1MjhFQzAwRURCNzVGIC8qIE1ldGFkYXRhU1BJLmggKi87IH07CiAJ
CUEzMEQ0MTIxMUYwREQwRUEwMEI3MTk1NCAvKiBLaWxsUmluZy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTMwRDQxMUUxRjBERDBFQTAwQjcxOTU0IC8q
IEtpbGxSaW5nLmggKi87IH07CiAJCUEzMEQ0MTIyMUYwREQwRUEwMEI3MTk1NCAvKiBLaWxsUmlu
Z05vbmUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QTMwRDQxMUYxRjBERDBFQTAwQjcxOTU0IC8qIEtpbGxSaW5nTm9uZS5jcHAgKi87IH07CkBAIC0y
MTcsNiArMjE4LDcgQEAKIAkJQTEwMjY1ODgxRjU2NzQ3QTAwQjRDODQ0IC8qIEhJVG9vbGJveFNQ
SS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBISVRvb2xib3hTUEkuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTEwMjY1OEExRjU2NzQ4QzAwQjRDODQ0IC8qIFF1
aWNrRHJhd1NQSS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBRdWlja0RyYXdT
UEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTEwMjY1OEQxRjU2N0U5RDAwQjRD
ODQ0IC8qIEhJU2VydmljZXNTUEkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSElTZXJ2aWNlc1NQSS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBMTA4MjZGRDFGNThBNDMzMDA0NzcyQUMgLyog
TlNHcmFwaGljc1NQSS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOU0dyYXBoaWNzU1BJLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUExRjU1RENFMUY1NTI4RUMwMEVEQjc1RiAvKiBNZXRhZGF0
YVNQSS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBNZXRhZGF0YVNQSS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlBMzBENDExRTFGMEREMEVBMDBCNzE5NTQgLyogS2lsbFJpbmcuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gS2lsbFJpbmcuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQTMwRDQxMUYxRjBERDBFQTAwQjcxOTU0IC8qIEtpbGxSaW5nTm9uZS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBLaWxsUmluZ05vbmUuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzQ5LDYgKzM1MSw3IEBACiAJCQkJMEM3Nzg1
NzUxRjQ1MTMwRjAwRjRFQkI2IC8qIE5TQXBwbGljYXRpb25TUEkuaCAqLywKIAkJCQkwQzc3ODU3
NjFGNDUxMzBGMDBGNEVCQjYgLyogTlNFdmVudFNQSS5oICovLAogCQkJCTBDNzc4NTc3MUY0NTEz
MEYwMEY0RUJCNiAvKiBOU0ZvbnRTUEkuaCAqLywKKwkJCQlBMTA4MjZGRDFGNThBNDMzMDA0Nzcy
QUMgLyogTlNHcmFwaGljc1NQSS5oICovLAogCQkJCTBDNzc4NTc4MUY0NTEzMEYwMEY0RUJCNiAv
KiBOU0ltbWVkaWF0ZUFjdGlvbkdlc3R1cmVSZWNvZ25pemVyU1BJLmggKi8sCiAJCQkJMEM3Nzg1
NzkxRjQ1MTMwRjAwRjRFQkI2IC8qIE5TTWVudVNQSS5oICovLAogCQkJCTBDNzc4NTdBMUY0NTEz
MEYwMEY0RUJCNiAvKiBOU1Bhc3RlYm9hcmRTUEkuaCAqLywKQEAgLTU0Miw2ICs1NDUsNyBAQAog
CQkJCTBDMkRBMTRFMUYzQkVCNDkwMERCQzMxNyAvKiBOU0V4dGVuc2lvblNQSS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMEMyREExNEYxRjNCRUI0OTAwREJDMzE3IC8qIE5TRmlsZU1hbmFnZXJTUEku
aCBpbiBIZWFkZXJzICovLAogCQkJCTBDNzc4NTkwMUY0NTEzMEYwMEY0RUJCNiAvKiBOU0ZvbnRT
UEkuaCBpbiBIZWFkZXJzICovLAorCQkJCUExMDgyNkZFMUY1OEE0MzMwMDQ3NzJBQyAvKiBOU0dy
YXBoaWNzU1BJLmggaW4gSGVhZGVycyAqLywKIAkJCQkwQzc3ODU5MTFGNDUxMzBGMDBGNEVCQjYg
LyogTlNJbW1lZGlhdGVBY3Rpb25HZXN0dXJlUmVjb2duaXplclNQSS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMEM3Nzg1OTIxRjQ1MTMwRjAwRjRFQkI2IC8qIE5TTWVudVNQSS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMEM3Nzg1OTMxRjQ1MTMwRjAwRjRFQkI2IC8qIE5TUGFzdGVib2FyZFNQSS5oIGlu
IEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jZy9D
b3JlR3JhcGhpY3NTUEkuaCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NnL0NvcmVHcmFw
aGljc1NQSS5oCmluZGV4IDdjMjkxYzkxNGQ2OWY1NmQ4NmRiYjRhODgxZmIyMzE4OWM1YTVhNWMu
LmFhMjQ3NmNiYmM5ODg4MmE0ZTQyNWViZjhhOGExMjJjMTY2ZDhkYjcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NnL0NvcmVHcmFwaGljc1NQSS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NnL0NvcmVHcmFwaGljc1NQSS5oCkBAIC0xNTAsOCArMTUw
LDMxIEBAIGVudW0gewogdHlwZWRlZiB1aW50MzJfdCBDR1NXaW5kb3dDYXB0dXJlT3B0aW9uczsK
ICNlbmRpZgogCit0eXBlZGVmIENGX0VOVU0odWludDMyX3QsIENHU05vdGlmaWNhdGlvblR5cGUp
IHsKKyAgICBrQ0dTRmlyc3RDb25uZWN0aW9uTm90aWZpY2F0aW9uID0gOTAwLAorICAgIGtDR1NG
aXJzdFNlc3Npb25Ob3RpZmljYXRpb24gPSAxNTAwLAorfTsKKwordHlwZWRlZiBDRl9FTlVNKGlu
dDMyX3QsIENHUGF0dGVyblRpbGluZykgeworICAgIGtDR1BhdHRlcm5UaWxpbmdOb0Rpc3RvcnRp
b24sCisgICAga0NHUGF0dGVyblRpbGluZ0NvbnN0YW50U3BhY2luZ01pbmltYWxEaXN0b3J0aW9u
LAorICAgIGtDR1BhdHRlcm5UaWxpbmdDb25zdGFudFNwYWNpbmcKK307CisKK3N0YXRpYyBjb25z
dCBDR1NOb3RpZmljYXRpb25UeXBlIGtDR1Nlc3Npb25Db25zb2xlQ29ubmVjdCA9IGtDR1NGaXJz
dFNlc3Npb25Ob3RpZmljYXRpb247CitzdGF0aWMgY29uc3QgQ0dTTm90aWZpY2F0aW9uVHlwZSBr
Q0dTZXNzaW9uQ29uc29sZURpc2Nvbm5lY3QgPSAoQ0dTTm90aWZpY2F0aW9uVHlwZSkoa0NHU2Vz
c2lvbkNvbnNvbGVDb25uZWN0ICsgMSk7CitzdGF0aWMgY29uc3QgQ0dTTm90aWZpY2F0aW9uVHlw
ZSBrQ0dTQ29ubmVjdGlvbldpbmRvd01vZGlmaWNhdGlvbnNTdGFydGVkID0gKENHU05vdGlmaWNh
dGlvblR5cGUpKGtDR1NGaXJzdENvbm5lY3Rpb25Ob3RpZmljYXRpb24gKyA2KTsKK3N0YXRpYyBj
b25zdCBDR1NOb3RpZmljYXRpb25UeXBlIGtDR1NDb25uZWN0aW9uV2luZG93TW9kaWZpY2F0aW9u
c1N0b3BwZWQgPSAoQ0dTTm90aWZpY2F0aW9uVHlwZSkoa0NHU0ZpcnN0Q29ubmVjdGlvbk5vdGlm
aWNhdGlvbiArIDcpOworCiAjZW5kaWYgLy8gVVNFKEFQUExFX0lOVEVSTkFMX1NESykKIAordHlw
ZWRlZiBzdHJ1Y3QgQ0ZfQlJJREdFRF9UWVBFKGlkKSBDR1NSZWdpb25PYmplY3QqIENHU1JlZ2lv
bk9iajsKK3R5cGVkZWYgdm9pZCogQ0dTTm90aWZpY2F0aW9uQXJnOwordHlwZWRlZiB2b2lkKiBD
R1NOb3RpZmljYXRpb25EYXRhOwordHlwZWRlZiB1aW50MzJfdCBDR1NCeXRlQ291bnQ7Cit0eXBl
ZGVmIHZvaWQgKCpDR1NOb3RpZnlQcm9jUHRyKShDR1NOb3RpZmljYXRpb25UeXBlLCB2b2lkKiBk
YXRhLCB1aW50MzJfdCBkYXRhX2xlbmd0aCwgdm9pZCogYXJnKTsKK3R5cGVkZWYgdm9pZCAoKkNH
U05vdGlmeUNvbm5lY3Rpb25Qcm9jUHRyKShDR1NOb3RpZmljYXRpb25UeXBlLCB2b2lkKiBkYXRh
LCB1aW50MzJfdCBkYXRhX2xlbmd0aCwgdm9pZCogYXJnLCBDR1NDb25uZWN0aW9uSUQpOworCiBX
VEZfRVhURVJOX0NfQkVHSU4KIAogQ0dDb2xvclJlZiBDR0NvbG9yVHJhbnNmb3JtQ29udmVydENv
bG9yKENHQ29sb3JUcmFuc2Zvcm1SZWYsIENHQ29sb3JSZWYsIENHQ29sb3JSZW5kZXJpbmdJbnRl
bnQpOwpAQCAtMjI1LDQgKzI0OCwxMiBAQCBDR0Vycm9yIENHU0dldFNjcmVlblJlY3RGb3JXaW5k
b3coQ0dTQ29ubmVjdGlvbklELCBDR1NXaW5kb3dJRCwgQ0dSZWN0ICopOwogYm9vbCBDb2xvclN5
bmNQcm9maWxlSXNXaWRlR2FtdXQoQ29sb3JTeW5jUHJvZmlsZVJlZik7CiAjZW5kaWYKIAorQ0dT
dHlsZVJlZiBDR1N0eWxlQ3JlYXRlRm9jdXNSaW5nV2l0aENvbG9yKGNvbnN0IENHRm9jdXNSaW5n
U3R5bGUqLCBDR0NvbG9yUmVmKTsKK0NHRXJyb3IgQ0dTUmVnaXN0ZXJOb3RpZnlQcm9jKENHU05v
dGlmeVByb2NQdHIsIENHU05vdGlmaWNhdGlvblR5cGUsIHZvaWQqIGFyZyk7CitDR1BhdHRlcm5S
ZWYgQ0dQYXR0ZXJuQ3JlYXRlV2l0aEltYWdlMihDR0ltYWdlUmVmLCBDR0FmZmluZVRyYW5zZm9y
bSwgQ0dQYXR0ZXJuVGlsaW5nKTsKK2Jvb2wgQ0dDb250ZXh0RHJhd3NXaXRoQ29ycmVjdFNoYWRv
d09mZnNldHMoQ0dDb250ZXh0UmVmKTsKK0NHRXJyb3IgQ0dTUmVnaXN0ZXJDb25uZWN0aW9uTm90
aWZ5UHJvYyhDR1NDb25uZWN0aW9uSUQsIENHU05vdGlmeUNvbm5lY3Rpb25Qcm9jUHRyLCBDR1NO
b3RpZmljYXRpb25UeXBlLCB2b2lkKiBhcmcpOworQ0dFcnJvciBDR1NQYWNrYWdlc0VuYWJsZUNv
bm5lY3Rpb25PY2NsdXNpb25Ob3RpZmljYXRpb25zKENHU0Nvbm5lY3Rpb25JRCwgYm9vbCBmbGFn
LCBib29sKiBvdXRDdXJyZW50VmlzaWJpbGl0eVN0YXRlKTsKK0NHRXJyb3IgQ0dTUGFja2FnZXNF
bmFibGVDb25uZWN0aW9uV2luZG93TW9kaWZpY2F0aW9uTm90aWZpY2F0aW9ucyhDR1NDb25uZWN0
aW9uSUQsIGJvb2wgZmxhZywgYm9vbCogb3V0Q29ubmVjdGlvbklzQ3VycmVudGx5SWRsZSk7CisK
IFdURl9FWFRFUk5fQ19FTkQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3Bp
L21hYy9ISVNlcnZpY2VzU1BJLmggYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9tYWMvSElT
ZXJ2aWNlc1NQSS5oCmluZGV4IDlmMzVkY2Q0ZDAzYTU3YTA4NmIwYTM2NWRmYjM5ZGRmZmNjODE5
ODUuLjY4M2FiYTFhOTVlOGI4NzRlNmRmZjQ0OGFhMDQxNzFjNTEyZmQ1YzIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL21hYy9ISVNlcnZpY2VzU1BJLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvbWFjL0hJU2VydmljZXNTUEkuaApAQCAtMjgsOSArMjgs
MzEgQEAKICNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQogCiAjaW5jbHVkZSA8SElTZXJ2aWNl
cy9BWFRleHRNYXJrZXIuaD4KKyNpbmNsdWRlIDxISVNlcnZpY2VzL0NvcmVEcmFnLmg+CisKKyNl
bHNlCisKK2VudW0geworICAgIGtDb3JlRHJhZ0ltYWdlU3BlY1ZlcnNpb25PbmUgPSAxLAorfTsK
Kworc3RydWN0IENvcmVEcmFnSW1hZ2VTcGVjIHsKKyAgICBVSW50MzIgdmVyc2lvbjsKKyAgICBT
SW50MzIgcGl4ZWxzV2lkZTsKKyAgICBTSW50MzIgcGl4ZWxzSGlnaDsKKyAgICBTSW50MzIgYml0
c1BlclNhbXBsZTsKKyAgICBTSW50MzIgc2FtcGxlc1BlclBpeGVsOworICAgIFNJbnQzMiBiaXRz
UGVyUGl4ZWw7CisgICAgU0ludDMyIGJ5dGVzUGVyUm93OworICAgIEJvb2xlYW4gaXNQbGFuYXI7
CisgICAgQm9vbGVhbiBoYXNBbHBoYTsKKyAgICBjb25zdCBVSW50OCogZGF0YVs1XTsKK307CiAK
ICNlbmRpZgogCit0eXBlZGVmIHN0cnVjdCBDb3JlRHJhZ0ltYWdlU3BlYyBDb3JlRHJhZ0ltYWdl
U3BlYzsKK3R5cGVkZWYgc3RydWN0IE9wYXF1ZUNvcmVEcmFnKiBDb3JlRHJhZ1JlZjsKIHR5cGVk
ZWYgY29uc3Qgc3RydWN0IF9fQVhUZXh0TWFya2VyICpBWFRleHRNYXJrZXJSZWY7CiB0eXBlZGVm
IGNvbnN0IHN0cnVjdCBfX0FYVGV4dE1hcmtlclJhbmdlICpBWFRleHRNYXJrZXJSYW5nZVJlZjsK
IApAQCAtNDQsNSArNjYsNiBAQCBjb25zdCBVSW50OCogQVhUZXh0TWFya2VyR2V0Qnl0ZVB0cihB
WFRleHRNYXJrZXJSZWYpOwogQVhUZXh0TWFya2VyUmFuZ2VSZWYgQVhUZXh0TWFya2VyUmFuZ2VD
cmVhdGUoQ0ZBbGxvY2F0b3JSZWYsIEFYVGV4dE1hcmtlclJlZiBzdGFydE1hcmtlciwgQVhUZXh0
TWFya2VyUmVmIGVuZE1hcmtlcik7CiBBWFRleHRNYXJrZXJSZWYgQVhUZXh0TWFya2VyUmFuZ2VD
b3B5U3RhcnRNYXJrZXIoQVhUZXh0TWFya2VyUmFuZ2VSZWYpOwogQVhUZXh0TWFya2VyUmVmIEFY
VGV4dE1hcmtlclJhbmdlQ29weUVuZE1hcmtlcihBWFRleHRNYXJrZXJSYW5nZVJlZik7CitDb3Jl
RHJhZ1JlZiBDb3JlRHJhZ0dldEN1cnJlbnREcmFnKCk7CiAKIFdURl9FWFRFUk5fQ19FTkQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL21hYy9OU0dyYXBoaWNzU1BJLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9tYWMvTlNHcmFwaGljc1NQSS5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjc1ZWNiMTQwNzNjZmJjYjQ1ZjllYzRiMDc3MGY5YWUyZGRkNjNkN2YKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9tYWMvTlNHcmFwaGljc1NQSS5oCkBA
IC0wLDAgKzEsMzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIFVTRShBUFBM
RV9JTlRFUk5BTF9TREspCisKKyNpbmNsdWRlIDxBcHBLaXQvTlNHcmFwaGljc19Qcml2YXRlLmg+
CisKKyNlbmRpZgorCitXVEZfRVhURVJOX0NfQkVHSU4KKworQk9PTCBOU0luaXRpYWxpemVDR0Zv
Y3VzUmluZ1N0eWxlRm9yVGltZShOU0ZvY3VzUmluZ1BsYWNlbWVudCwgQ0dGb2N1c1JpbmdTdHls
ZSosIE5TVGltZUludGVydmFsKTsKKworV1RGX0VYVEVSTl9DX0VORApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAppbmRleCAxOGFjZGRi
ZTdlZmZmYTQyOWQxODU3ODM5YWI2ZTY2NzQ2NmEzZDg1Li5jMTRiMmE1NWU2YWE3ZjkwZDIwMDNj
NDY2ODQzNDMyMmUwODU0NTlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc0NvbnRleHQuaApAQCAtNDQ1LDYgKzQ0NSw3IEBAIHB1YmxpYzoKICNp
ZiBQTEFURk9STShNQUMpCiAgICAgdm9pZCBkcmF3Rm9jdXNSaW5nKGNvbnN0IFBhdGgmLCBkb3Vi
bGUgdGltZU9mZnNldCwgYm9vbCYgbmVlZHNSZWRyYXcpOwogICAgIHZvaWQgZHJhd0ZvY3VzUmlu
Zyhjb25zdCBWZWN0b3I8RmxvYXRSZWN0PiYsIGRvdWJsZSB0aW1lT2Zmc2V0LCBib29sJiBuZWVk
c1JlZHJhdyk7CisgICAgc3RhdGljIENHQ29sb3JSZWYgZm9jdXNSaW5nQ29sb3IoKTsKICNlbmRp
ZgogCiAgICAgdm9pZCBzZXRMaW5lQ2FwKExpbmVDYXApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwCmluZGV4IDY2OTZjOTYwYTU4NzVmMDQz
MTcyOWIxMTlhYjZiMjQxMjdkN2E1Y2EuLjAyMjhlMzkyOWEyNjZlYTk3MzJiYmE4ZWU2MDU3M2Zh
NTA5YTM1MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZVNvdXJjZS5jcHAKQEAgLTE4NCw3ICsxODQsNyBAQCBTdWJzYW1wbGluZ0xldmVsIEltYWdlU291
cmNlOjpzdWJzYW1wbGluZ0xldmVsRm9yU2NhbGVGYWN0b3IoR3JhcGhpY3NDb250ZXh0JiBjbwog
ewogI2lmIFVTRShDRykKICAgICAvLyBOZXZlciB1c2Ugc3Vic2FtcGxlZCBpbWFnZXMgZm9yIGRy
YXdpbmcgaW50byBQREYgY29udGV4dHMuCi0gICAgaWYgKHdrQ0dDb250ZXh0SXNQREZDb250ZXh0
KGNvbnRleHQucGxhdGZvcm1Db250ZXh0KCkpKQorICAgIGlmIChDR0NvbnRleHRHZXRUeXBlKGNv
bnRleHQucGxhdGZvcm1Db250ZXh0KCkpID09IGtDR0NvbnRleHRUeXBlUERGKQogICAgICAgICBy
ZXR1cm4gU3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVsdDsKIAogICAgIGZsb2F0IHNjYWxlID0gc3Rk
OjptaW4oZmxvYXQoMSksIHN0ZDo6bWF4KHNjYWxlRmFjdG9yLndpZHRoKCksIHNjYWxlRmFjdG9y
LmhlaWdodCgpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAKaW5kZXggZDU4ODM5YWU1OGJiNTEwZDUwN2Q0
NjViMDYxOTJlMDIwYmFkNWFiZC4uMzc4OGJjMjQxNDI0ZjU0NjdlZjFhMjFhMjZlY2ZmYTRlODNj
YTAwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3Jh
cGhpY3NDb250ZXh0Q0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcApAQCAtOTg3LDcgKzk4Nyw3IEBAIHZvaWQgR3JhcGhp
Y3NDb250ZXh0OjpjbGlwT3V0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKICAgICAvLyBoYXMgY2Vy
dGFpbiB0cmFuc2Zvcm1zIHRoYXQgYXJlbid0IGp1c3QgYSB0cmFuc2xhdGlvbiBvciBhIHNjYWxl
LiBBbmQgZHVlIHRvIDxyZGFyOi8vcHJvYmxlbS8xNDYzNDQ1Mz4KICAgICAvLyB3ZSBjYW5ub3Qg
dXNlIGl0IGluIGZvciBhIHByaW50aW5nIGNvbnRleHQgZWl0aGVyLgogICAgIGNvbnN0IEFmZmlu
ZVRyYW5zZm9ybSYgY3RtID0gZ2V0Q1RNKCk7Ci0gICAgYm9vbCBjYW5Vc2VDR1JlY3RJbmZpbml0
ZSA9ICF3a0NHQ29udGV4dElzUERGQ29udGV4dChwbGF0Zm9ybUNvbnRleHQoKSkgJiYgKCFpc0Fj
Y2VsZXJhdGVkQ29udGV4dCgpIHx8ICghY3RtLmIoKSAmJiAhY3RtLmMoKSkpOworICAgIGJvb2wg
Y2FuVXNlQ0dSZWN0SW5maW5pdGUgPSBDR0NvbnRleHRHZXRUeXBlKHBsYXRmb3JtQ29udGV4dCgp
KSAhPSBrQ0dDb250ZXh0VHlwZVBERiAmJiAoIWlzQWNjZWxlcmF0ZWRDb250ZXh0KCkgfHwgKCFj
dG0uYigpICYmICFjdG0uYygpKSk7CiAgICAgQ0dSZWN0IHJlY3RzWzJdID0geyBjYW5Vc2VDR1Jl
Y3RJbmZpbml0ZSA/IENHUmVjdEluZmluaXRlIDogQ0dDb250ZXh0R2V0Q2xpcEJvdW5kaW5nQm94
KHBsYXRmb3JtQ29udGV4dCgpKSwgcmVjdCB9OwogICAgIENHQ29udGV4dEJlZ2luUGF0aChwbGF0
Zm9ybUNvbnRleHQoKSk7CiAgICAgQ0dDb250ZXh0QWRkUmVjdHMocGxhdGZvcm1Db250ZXh0KCks
IHJlY3RzLCAyKTsKQEAgLTEwOTMsNyArMTA5Myw3IEBAIHN0YXRpYyB2b2lkIGFwcGx5U2hhZG93
T2Zmc2V0V29ya2Fyb3VuZElmTmVlZGVkKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwK
ICAgICBpZiAoY29udGV4dC5pc0FjY2VsZXJhdGVkQ29udGV4dCgpKQogICAgICAgICByZXR1cm47
CiAKLSAgICBpZiAod2tDR0NvbnRleHREcmF3c1dpdGhDb3JyZWN0U2hhZG93T2Zmc2V0cyhjb250
ZXh0LnBsYXRmb3JtQ29udGV4dCgpKSkKKyAgICBpZiAoQ0dDb250ZXh0RHJhd3NXaXRoQ29ycmVj
dFNoYWRvd09mZnNldHMoY29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKSkpCiAgICAgICAgIHJldHVy
bjsKIAogICAgIC8vIFdvcmsgYXJvdW5kIDxyZGFyOi8vcHJvYmxlbS81NTM5Mzg4PiBieSBlbnN1
cmluZyB0aGF0IHRoZSBvZmZzZXRzIHdpbGwgZ2V0IHRydW5jYXRlZApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGF0dGVybkNHLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BhdHRlcm5DRy5jcHAKaW5kZXggOThlNjlkZThl
ZDg5YTI0ZTg4NmExNDJhMDgzOTU5ZTJjNzIxMzVmMC4uZDBlMjFjODczYWEyZGMzMGM1M2NjOGJh
YjRmOGIwNDE0MzQwMDA5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvUGF0dGVybkNHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jZy9QYXR0ZXJuQ0cuY3BwCkBAIC0zMSw4ICszMSw4IEBACiAKICNpbmNsdWRlICJBZmZp
bmVUcmFuc2Zvcm0uaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKLQogI2luY2x1ZGUg
PENvcmVHcmFwaGljcy9Db3JlR3JhcGhpY3MuaD4KKyNpbmNsdWRlIDxwYWwvc3BpL2NnL0NvcmVH
cmFwaGljc1NQSS5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAKICNpZiBQTEFURk9S
TShDT0NPQSkKQEAgLTc0LDcgKzc0LDcgQEAgQ0dQYXR0ZXJuUmVmIFBhdHRlcm46OmNyZWF0ZVBs
YXRmb3JtUGF0dGVybihjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHVzZXJTcGFjZVRyYW4KICAgICAv
LyBJZiB3ZSdyZSByZXBlYXRpbmcgaW4gYm90aCBkaXJlY3Rpb25zLCB3ZSBjYW4gdXNlIGltYWdl
LWJhY2tlZCBwYXR0ZXJucwogICAgIC8vIGluc3RlYWQgb2YgY3VzdG9tIHBhdHRlcm5zLCBhbmQg
YXZvaWQgdGlsaW5nLWVkZ2UgcGl4ZWwgY3JhY2tzLgogICAgIGlmIChtX3JlcGVhdFggJiYgbV9y
ZXBlYXRZKQotICAgICAgICByZXR1cm4gd2tDR1BhdHRlcm5DcmVhdGVXaXRoSW1hZ2VBbmRUcmFu
c2Zvcm0odGlsZUltYWdlKCkubmF0aXZlSW1hZ2UoKS5nZXQoKSwgcGF0dGVyblRyYW5zZm9ybSwg
d2tQYXR0ZXJuVGlsaW5nQ29uc3RhbnRTcGFjaW5nKTsKKyAgICAgICAgcmV0dXJuIENHUGF0dGVy
bkNyZWF0ZVdpdGhJbWFnZTIodGlsZUltYWdlKCkubmF0aXZlSW1hZ2UoKS5nZXQoKSwgcGF0dGVy
blRyYW5zZm9ybSwga0NHUGF0dGVyblRpbGluZ0NvbnN0YW50U3BhY2luZyk7CiAKICAgICAvLyBJ
ZiBGTFRfTUFYIHNob3VsZCBhbHNvIGJlIHVzZWQgZm9yIHhTdGVwIG9yIHlTdGVwLCBub3RoaW5n
IGlzIHJlbmRlcmVkLiBVc2luZyBmcmFjdGlvbnMgb2YgRkxUX01BWCBhbHNvCiAgICAgLy8gcmVz
dWx0IGluIG5vdGhpbmcgYmVpbmcgcmVuZGVyZWQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRDb2NvYS5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dENvY29hLm1t
CmluZGV4IDY3ZjRkZWIxNzJiNmMwZmUyM2MxYjFkMWZiMDllYWI4YWRhZTEzMWIuLjQ1ZDc3Mzlk
NjQ2ZDc4YTE3ZTdkNzIxODlkMmQ3Y2MzMTFkY2M3Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dENvY29hLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dENv
Y29hLm1tCkBAIC0yOSwxMCArMjksMTMgQEAKICNpbXBvcnQgIkdyYXBoaWNzQ29udGV4dENHLmgi
CiAjaW1wb3J0ICJHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGVDRy5oIgogI2ltcG9ydCAi
SW50UmVjdC5oIgorI2ltcG9ydCA8cGFsL3NwaS9jZy9Db3JlR3JhcGhpY3NTUEkuaD4KKyNpbXBv
cnQgPHBhbC9zcGkvbWFjL05TR3JhcGhpY3NTUEkuaD4KKyNpbXBvcnQgPHd0Zi9TdGRMaWJFeHRy
YXMuaD4KKwogI2lmIFVTRShBUFBLSVQpCiAjaW1wb3J0IDxBcHBLaXQvQXBwS2l0Lmg+CiAjZW5k
aWYKLSNpbXBvcnQgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KIAogI2lmIFBMQVRGT1JNKElPUykKICNp
bXBvcnQgIkNvbG9yLmgiCkBAIC00Myw3ICs0Niw2IEBACiAjaWYgIVBMQVRGT1JNKElPUykKICNp
bXBvcnQgIkxvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dC5oIgogI2VuZGlmCi0jaW1wb3J0ICJX
ZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmgiCiAKIEBjbGFzcyBOU0NvbG9yOwogCkBAIC01NywxMSAr
NTksNDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogLy8gZXhjZXB0aW9ucyBmb3IgdGhvc2UuCiAK
ICNpZiAhUExBVEZPUk0oSU9TKQorQ0dDb2xvclJlZiBHcmFwaGljc0NvbnRleHQ6OmZvY3VzUmlu
Z0NvbG9yKCkKK3sKKyAgICBzdGF0aWMgQ0dDb2xvclJlZiBjb2xvcjsKKyAgICBpZiAoIWNvbG9y
KSB7CisgICAgICAgIENHRmxvYXQgY29sb3JDb21wb25lbnRzW10gPSB7IDAuNSwgMC43NSwgMS4w
LCAxLjAgfTsKKyAgICAgICAgYXV0byBjb2xvclNwYWNlID0gYWRvcHRDRihDR0NvbG9yU3BhY2VD
cmVhdGVXaXRoTmFtZShrQ0dDb2xvclNwYWNlU1JHQikpOworICAgICAgICBjb2xvciA9IENHQ29s
b3JDcmVhdGUoY29sb3JTcGFjZS5nZXQoKSwgY29sb3JDb21wb25lbnRzKTsKKyAgICB9CisgICAg
cmV0dXJuIGNvbG9yOworfQorCitzdGF0aWMgYm9vbCBkcmF3Rm9jdXNSaW5nQXRUaW1lKENHQ29u
dGV4dFJlZiBjb250ZXh0LCBOU1RpbWVJbnRlcnZhbCB0aW1lT2Zmc2V0KQoreworICAgIENHRm9j
dXNSaW5nU3R5bGUgZm9jdXNSaW5nU3R5bGU7CisgICAgQk9PTCBuZWVkc1JlcGFpbnQgPSBOU0lu
aXRpYWxpemVDR0ZvY3VzUmluZ1N0eWxlRm9yVGltZShOU0ZvY3VzUmluZ09ubHksICZmb2N1c1Jp
bmdTdHlsZSwgdGltZU9mZnNldCk7CisKKyAgICAvLyBXZSB3YW50IHRvIHJlc3BlY3QgdGhlIENH
Q29udGV4dCBjbGlwcGluZyBhbmQgYWxzbyBub3Qgb3ZlcnBhaW50IGFueQorICAgIC8vIGV4aXN0
aW5nIGZvY3VzIHJpbmcuIFRoZSB3YXkgdG8gZG8gdGhpcyBpcyBzZXQgYWNjdW11bGF0ZSB0bwor
ICAgIC8vIC0xLiBBY2NvcmRpbmcgdG8gQ29yZUdyYXBoaWNzLCB0aGUgcmVhc29uaW5nIGZvciB0
aGlzIGJlaGF2aW9yIGhhcyBiZWVuCisgICAgLy8gbG9zdCBpbiB0aW1lLgorICAgIGZvY3VzUmlu
Z1N0eWxlLmFjY3VtdWxhdGUgPSAtMTsKKyAgICBhdXRvIHN0eWxlID0gYWRvcHRDRihDR1N0eWxl
Q3JlYXRlRm9jdXNSaW5nV2l0aENvbG9yKCZmb2N1c1JpbmdTdHlsZSwgR3JhcGhpY3NDb250ZXh0
Ojpmb2N1c1JpbmdDb2xvcigpKSk7CisKKyAgICBDR0NvbnRleHRTYXZlR1N0YXRlKGNvbnRleHQp
OworICAgIENHQ29udGV4dFNldFN0eWxlKGNvbnRleHQsIHN0eWxlLmdldCgpKTsKKyAgICBDR0Nv
bnRleHRGaWxsUGF0aChjb250ZXh0KTsKKyAgICBDR0NvbnRleHRSZXN0b3JlR1N0YXRlKGNvbnRl
eHQpOworCisgICAgcmV0dXJuIG5lZWRzUmVwYWludDsKK30KKworc3RhdGljIHZvaWQgZHJhd0Zv
Y3VzUmluZyhDR0NvbnRleHRSZWYgY29udGV4dCkKK3sKKyAgICBkcmF3Rm9jdXNSaW5nQXRUaW1l
KGNvbnRleHQsIERCTF9NQVgpOworfQorCiBzdGF0aWMgdm9pZCBkcmF3Rm9jdXNSaW5nVG9Db250
ZXh0KENHQ29udGV4dFJlZiBjb250ZXh0LCBDR1BhdGhSZWYgZm9jdXNSaW5nUGF0aCkKIHsKICAg
ICBDR0NvbnRleHRCZWdpblBhdGgoY29udGV4dCk7CiAgICAgQ0dDb250ZXh0QWRkUGF0aChjb250
ZXh0LCBmb2N1c1JpbmdQYXRoKTsKLSAgICB3a0RyYXdGb2N1c1JpbmcoY29udGV4dCwgbnVsbHB0
ciwgMCk7CisgICAgZHJhd0ZvY3VzUmluZyhjb250ZXh0KTsKIH0KIAogc3RhdGljIGJvb2wgZHJh
d0ZvY3VzUmluZ1RvQ29udGV4dEF0VGltZShDR0NvbnRleHRSZWYgY29udGV4dCwgQ0dQYXRoUmVm
IGZvY3VzUmluZ1BhdGgsIGRvdWJsZSB0aW1lT2Zmc2V0KQpAQCAtNjksNyArMTA3LDcgQEAgc3Rh
dGljIGJvb2wgZHJhd0ZvY3VzUmluZ1RvQ29udGV4dEF0VGltZShDR0NvbnRleHRSZWYgY29udGV4
dCwgQ0dQYXRoUmVmIGZvY3VzUmkKICAgICBVTlVTRURfUEFSQU0odGltZU9mZnNldCk7CiAgICAg
Q0dDb250ZXh0QmVnaW5QYXRoKGNvbnRleHQpOwogICAgIENHQ29udGV4dEFkZFBhdGgoY29udGV4
dCwgZm9jdXNSaW5nUGF0aCk7Ci0gICAgcmV0dXJuIHdrRHJhd0ZvY3VzUmluZ0F0VGltZShjb250
ZXh0LCBzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46Om1heCgpKTsKKyAgICByZXR1cm4gZHJh
d0ZvY3VzUmluZ0F0VGltZShjb250ZXh0LCBzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46Om1h
eCgpKTsKIH0KICNlbmRpZiAvLyAhUExBVEZPUk0oSU9TKQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViQ29yZVN5c3RlbUludGVyZmFjZUlPUy5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlSU9TLm1tCmluZGV4
IDA5YTE4MjgxNGQxNDAxM2I3Yzg4ZThlZWJmMDNkOWFlMGNmYTI4NjkuLjc1N2QwNDVmNWM1ODU0
NDQ5NmYyZGQ2OTA1MGJkMWFmODY4YzJlZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2lvcy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2lvcy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlSU9TLm1tCkBAIC0yNywxMCAr
MjcsOCBAQAogI2ltcG9ydCAiV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oIgogCiBXRUJDT1JFX0VY
UE9SVCB2b2lkICgqd2tDQUxheWVyRW51bWVyYXRlUmVjdHNCZWluZ0RyYXduV2l0aEJsb2NrKShD
QUxheWVyICosIENHQ29udGV4dFJlZiBjb250ZXh0LCB2b2lkICheYmxvY2spKENHUmVjdCByZWN0
KSk7Ci1XRUJDT1JFX0VYUE9SVCBDR1BhdHRlcm5SZWYgKCp3a0NHUGF0dGVybkNyZWF0ZVdpdGhJ
bWFnZUFuZFRyYW5zZm9ybSkoQ0dJbWFnZVJlZiwgQ0dBZmZpbmVUcmFuc2Zvcm0sIGludCk7CiBX
RUJDT1JFX0VYUE9SVCB2b2lkICgqd2tDbGVhckdseXBoVmVjdG9yKSh2b2lkKiBnbHlwaHMpOwog
V0VCQ09SRV9FWFBPUlQgT1NTdGF0dXMgKCp3a0NvbnZlcnRDaGFyVG9HbHlwaHMpKHZvaWQqIHN0
eWxlR3JvdXAsIGNvbnN0IFVuaUNoYXIqLCB1bnNpZ25lZCBudW1DaGFyYWN0ZXJzLCB2b2lkKiBn
bHlwaHMpOwotV0VCQ09SRV9FWFBPUlQgYm9vbCAoKndrQ0dDb250ZXh0SXNQREZDb250ZXh0KShD
R0NvbnRleHRSZWYpOwogV0VCQ09SRV9FWFBPUlQgaWQgKCp3a0NyZWF0ZU5TVVJMQ29ubmVjdGlv
bkRlbGVnYXRlUHJveHkpKHZvaWQpOwogV0VCQ09SRV9FWFBPUlQgdm9pZCAoKndrU2V0Q09OTkVD
VFByb3h5Rm9yU3RyZWFtKShDRlJlYWRTdHJlYW1SZWYsIENGU3RyaW5nUmVmIHByb3h5SG9zdCwg
Q0ZOdW1iZXJSZWYgcHJveHlQb3J0KTsKIFdFQkNPUkVfRVhQT1JUIHZvaWQgKCp3a1NldENPTk5F
Q1RQcm94eUF1dGhvcml6YXRpb25Gb3JTdHJlYW0pKENGUmVhZFN0cmVhbVJlZiwgQ0ZTdHJpbmdS
ZWYgcHJveHlBdXRob3JpemF0aW9uU3RyaW5nKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL1Bhc3RlYm9hcmRNYWMubW0KaW5kZXggMjBlNjM1YzA5MDVhZTg5NmM3YmI1NDIxYzg1NmIy
MWIyYTQ0NmI0OS4uOTRmODBlOWE1NDJlMjYxYTM1ZTBhMGJhMGJjZTQxNmFiNmY1OTJjNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0KQEAgLTUyLDYg
KzUyLDcgQEAKICNpbXBvcnQgIldlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaCIKICNpbXBvcnQgIldl
Yk5TQXR0cmlidXRlZFN0cmluZ0V4dHJhcy5oIgogI2ltcG9ydCAibWFya3VwLmgiCisjaW1wb3J0
IDxwYWwvc3BpL21hYy9ISVNlcnZpY2VzU1BJLmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+
CiAjaW1wb3J0IDx3dGYvU3RkTGliRXh0cmFzLmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9TdHJpbmdC
dWlsZGVyLmg+CkBAIC02NjksNiArNjcwLDgwIEBAIFZlY3RvcjxTdHJpbmc+IFBhc3RlYm9hcmQ6
OnJlYWRGaWxlbmFtZXMoKQogfQogCiAjaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkKK3N0YXRpYyB2
b2lkIGZsaXBJbWFnZVNwZWMoQ29yZURyYWdJbWFnZVNwZWMqIGltYWdlU3BlYykKK3sKKyAgICB1
bnNpZ25lZCBjaGFyKiB0ZW1wUm93ID0gKHVuc2lnbmVkIGNoYXIqKWZhc3RNYWxsb2MoaW1hZ2VT
cGVjLT5ieXRlc1BlclJvdyk7CisgICAgaW50IHBsYW5lcyA9IGltYWdlU3BlYy0+aXNQbGFuYXIg
PyBpbWFnZVNwZWMtPnNhbXBsZXNQZXJQaXhlbCA6IDE7CisKKyAgICBmb3IgKGludCBwID0gMDsg
cCA8IHBsYW5lczsgcCsrKSB7CisgICAgICAgIHVuc2lnbmVkIGNoYXIqIHRvcFJvdyA9ICh1bnNp
Z25lZCBjaGFyKilpbWFnZVNwZWMtPmRhdGFbcF07CisgICAgICAgIHVuc2lnbmVkIGNoYXIqIGJv
dFJvdyA9IHRvcFJvdyArIChpbWFnZVNwZWMtPnBpeGVsc0hpZ2ggLSAxKSAqIGltYWdlU3BlYy0+
Ynl0ZXNQZXJSb3c7CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgaW1hZ2VTcGVjLT5waXhl
bHNIaWdoIC8gMjsgaSsrLCB0b3BSb3cgKz0gaW1hZ2VTcGVjLT5ieXRlc1BlclJvdywgYm90Um93
IC09IGltYWdlU3BlYy0+Ynl0ZXNQZXJSb3cpIHsKKyAgICAgICAgICAgIGJjb3B5KHRvcFJvdywg
IHRlbXBSb3csIGltYWdlU3BlYy0+Ynl0ZXNQZXJSb3cpOworICAgICAgICAgICAgYmNvcHkoYm90
Um93LCAgdG9wUm93LCAgaW1hZ2VTcGVjLT5ieXRlc1BlclJvdyk7CisgICAgICAgICAgICBiY29w
eSh0ZW1wUm93LCBib3RSb3csICBpbWFnZVNwZWMtPmJ5dGVzUGVyUm93KTsKKyAgICAgICAgfQor
ICAgIH0KKworICAgIGZhc3RGcmVlKHRlbXBSb3cpOworfQorCitzdGF0aWMgdm9pZCBzZXREcmFn
SW1hZ2VJbXBsKE5TSW1hZ2UgKmltYWdlLCBOU1BvaW50IG9mZnNldCkKK3sKKyAgICBib29sIGZs
aXBJbWFnZTsKKyAgICBOU1NpemUgaW1hZ2VTaXplID0gaW1hZ2Uuc2l6ZTsKKyAgICBDR1JlY3Qg
aW1hZ2VSZWN0ID0gQ0dSZWN0TWFrZSgwLCAwLCBpbWFnZVNpemUud2lkdGgsIGltYWdlU2l6ZS5o
ZWlnaHQpOworICAgIE5TSW1hZ2VSZXAgKmltYWdlUmVwID0gW2ltYWdlIGJlc3RSZXByZXNlbnRh
dGlvbkZvclJlY3Q6TlNSZWN0RnJvbUNHUmVjdChpbWFnZVJlY3QpIGNvbnRleHQ6bmlsIGhpbnRz
Om5pbF07CisgICAgUmV0YWluUHRyPE5TQml0bWFwSW1hZ2VSZXA+IGJpdG1hcEltYWdlOworICAg
IGlmICghaW1hZ2VSZXAgfHwgIVtpbWFnZVJlcCBpc0tpbmRPZkNsYXNzOltOU0JpdG1hcEltYWdl
UmVwIGNsYXNzXV0gfHwgIU5TRXF1YWxTaXplcyhpbWFnZVJlcC5zaXplLCBpbWFnZVNpemUpKSB7
CisgICAgICAgIFtpbWFnZSBsb2NrRm9jdXNdOworICAgICAgICBiaXRtYXBJbWFnZSA9IGFkb3B0
TlMoW1tOU0JpdG1hcEltYWdlUmVwIGFsbG9jXSBpbml0V2l0aEZvY3VzZWRWaWV3UmVjdDoqKE5T
UmVjdCAqKSZpbWFnZVJlY3RdKTsKKyAgICAgICAgW2ltYWdlIHVubG9ja0ZvY3VzXTsKKyAgICAg
ICAgCisgICAgICAgIC8vIHdlIG1heSBoYXZlIHRvIGZsaXAgdGhlIGJpdHMgd2UganVzdCByZWFk
IGlmIHRoZSBpbWFnZSB3YXMgZmxpcHBlZCBzaW5jZSBpdCBtZWFucyB0aGUgY2FjaGUgd2FzIGFs
c28KKyAgICAgICAgLy8gYW5kIENvcmVEcmFnU2V0SW1hZ2UgY2FuJ3QgdGFrZSBhIHRyYW5zZm9y
bSBmb3IgcmVuZGVyaW5nLgorI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHB1c2gKKyNwcmFnbWEg
Y2xhbmcgZGlhZ25vc3RpYyBpZ25vcmVkICItV2RlcHJlY2F0ZWQtZGVjbGFyYXRpb25zIgorICAg
ICAgICBmbGlwSW1hZ2UgPSBpbWFnZS5pc0ZsaXBwZWQ7CisjcHJhZ21hIGNsYW5nIGRpYWdub3N0
aWMgcG9wCisgICAgfSBlbHNlIHsKKyAgICAgICAgZmxpcEltYWdlID0gZmFsc2U7CisgICAgICAg
IGJpdG1hcEltYWdlID0gKE5TQml0bWFwSW1hZ2VSZXAgKilpbWFnZVJlcDsKKyAgICB9CisgICAg
QVNTRVJUKGJpdG1hcEltYWdlKTsKKworICAgIENvcmVEcmFnSW1hZ2VTcGVjIGltYWdlU3BlYzsK
KyAgICBpbWFnZVNwZWMudmVyc2lvbiA9IGtDb3JlRHJhZ0ltYWdlU3BlY1ZlcnNpb25PbmU7Cisg
ICAgaW1hZ2VTcGVjLnBpeGVsc1dpZGUgPSBbYml0bWFwSW1hZ2UgcGl4ZWxzV2lkZV07CisgICAg
aW1hZ2VTcGVjLnBpeGVsc0hpZ2ggPSBbYml0bWFwSW1hZ2UgcGl4ZWxzSGlnaF07CisgICAgaW1h
Z2VTcGVjLmJpdHNQZXJTYW1wbGUgPSBbYml0bWFwSW1hZ2UgYml0c1BlclNhbXBsZV07CisgICAg
aW1hZ2VTcGVjLnNhbXBsZXNQZXJQaXhlbCA9IFtiaXRtYXBJbWFnZSBzYW1wbGVzUGVyUGl4ZWxd
OworICAgIGltYWdlU3BlYy5iaXRzUGVyUGl4ZWwgPSBbYml0bWFwSW1hZ2UgYml0c1BlclBpeGVs
XTsKKyAgICBpbWFnZVNwZWMuYnl0ZXNQZXJSb3cgPSBbYml0bWFwSW1hZ2UgYnl0ZXNQZXJSb3dd
OworICAgIGltYWdlU3BlYy5pc1BsYW5hciA9IFtiaXRtYXBJbWFnZSBpc1BsYW5hcl07CisgICAg
aW1hZ2VTcGVjLmhhc0FscGhhID0gW2JpdG1hcEltYWdlIGhhc0FscGhhXTsKKyAgICBbYml0bWFw
SW1hZ2UgZ2V0Qml0bWFwRGF0YVBsYW5lczoodW5zaWduZWQgY2hhcioqKWltYWdlU3BlYy5kYXRh
XTsKKworICAgIC8vIGlmIGltYWdlIHdhcyBmbGlwcGVkLCB3ZSBoYXZlIGFuIHVwc2lkZSBkb3du
IGJpdG1hcCBzaW5jZSB0aGUgY2FjaGUgaXMgcmVuZGVyZWQgZmxpcHBlZAorICAgIGlmIChmbGlw
SW1hZ2UpCisgICAgICAgIGZsaXBJbWFnZVNwZWMoJmltYWdlU3BlYyk7CisKKyAgICBDR1NSZWdp
b25PYmogaW1hZ2VTaGFwZTsKKyAgICBPU1N0YXR1cyBlcnJvciA9IENHU05ld1JlZ2lvbldpdGhS
ZWN0KCZpbWFnZVJlY3QsICZpbWFnZVNoYXBlKTsKKyAgICBBU1NFUlQoZXJyb3IgPT0ga0NHRXJy
b3JTdWNjZXNzKTsKKyAgICBpZiAoZXJyb3IgIT0ga0NHRXJyb3JTdWNjZXNzKQorICAgICAgICBy
ZXR1cm47CisKKyAgICAvLyBtYWtlIHN1cmUgaW1hZ2UgaGFzIGludGVnZXIgb2Zmc2V0CisgICAg
Q0dQb2ludCBpbWFnZU9mZnNldCA9IHstb2Zmc2V0LngsIC0oaW1hZ2VTaXplLmhlaWdodCAtIG9m
ZnNldC55KX07CisgICAgaW1hZ2VPZmZzZXQueCA9IGZsb29yKGltYWdlT2Zmc2V0LnggKyAwLjUp
OworICAgIGltYWdlT2Zmc2V0LnkgPSBmbG9vcihpbWFnZU9mZnNldC55ICsgMC41KTsKKworICAg
IGVycm9yID0gQ29yZURyYWdTZXRJbWFnZShDb3JlRHJhZ0dldEN1cnJlbnREcmFnKCksIGltYWdl
T2Zmc2V0LCAmaW1hZ2VTcGVjLCBpbWFnZVNoYXBlLCAxLjApOworICAgIENHU1JlbGVhc2VSZWdp
b24oaW1hZ2VTaGFwZSk7CisgICAgQVNTRVJUKGVycm9yID09IGtDR0Vycm9yU3VjY2Vzcyk7Cit9
CisKIHZvaWQgUGFzdGVib2FyZDo6c2V0RHJhZ0ltYWdlKERyYWdJbWFnZSBpbWFnZSwgY29uc3Qg
SW50UG9pbnQmIGxvY2F0aW9uKQogewogICAgIC8vIERvbid0IGFsbG93IHNldHRpbmcgdGhlIGRy
YWcgaW1hZ2UgaWYgc29tZW9uZSBrZXB0IGEgcGFzdGVib2FyZCBhbmQgaXMgdHJ5aW5nIHRvIHNl
dCB0aGUgaW1hZ2UgdG9vIGxhdGUuCkBAIC02NzcsNyArNzUyLDcgQEAgdm9pZCBQYXN0ZWJvYXJk
OjpzZXREcmFnSW1hZ2UoRHJhZ0ltYWdlIGltYWdlLCBjb25zdCBJbnRQb2ludCYgbG9jYXRpb24p
CiAKICAgICAvLyBEYXNoYm9hcmQgd2FudHMgdG8gYmUgYWJsZSB0byBzZXQgdGhlIGRyYWcgaW1h
Z2UgZHVyaW5nIGRyYWdnaW5nLCBidXQgQ29jb2EgZG9lcyBub3QgYWxsb3cgdGhpcy4KICAgICAv
LyBJbnN0ZWFkIHdlIG11c3QgZHJvcCBkb3duIHRvIHRoZSBDb3JlR3JhcGhpY3MgQVBJLgotICAg
IHdrU2V0RHJhZ0ltYWdlKGltYWdlLmdldCgpLmdldCgpLCBsb2NhdGlvbik7CisgICAgc2V0RHJh
Z0ltYWdlSW1wbChpbWFnZS5nZXQoKS5nZXQoKSwgbG9jYXRpb24pOwogCiAgICAgLy8gSGFjazog
V2UgbXVzdCBwb3N0IGFuIGV2ZW50IHRvIHdha2UgdXAgdGhlIE5TRHJhZ01hbmFnZXIsIHdoaWNo
IGlzIHNpdHRpbmcgaW4gYSBuZXh0RXZlbnQgY2FsbAogICAgIC8vIHVwIHRoZSBzdGFjayBmcm9t
IHVzIGJlY2F1c2UgdGhlIENvcmVGb3VuZGF0aW9uIGRyYWcgbWFuYWdlciBkb2VzIG5vdCB1c2Ug
dGhlIHJ1biBsb29wIGJ5IGl0c2VsZi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21hYy9QbGF0Zm9ybUV2ZW50RmFjdG9yeU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21hYy9QbGF0Zm9ybUV2ZW50RmFjdG9yeU1hYy5tbQppbmRleCBiYzFlMzY3ZmM0Njk0ZWFm
NDYwYWIwZWE1YTQyMzBkMDAwMDFhYzg5Li41MDAxMDA5ZjIxMTk0NWRhOTc3OGEzZWFhZjk5ZWQ4
MzEyZmQ3NzU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZv
cm1FdmVudEZhY3RvcnlNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bs
YXRmb3JtRXZlbnRGYWN0b3J5TWFjLm1tCkBAIC02NzMsNyArNjczLDcgQEAgc3RhdGljIGludCB0
eXBlRm9yRXZlbnQoTlNFdmVudCAqZXZlbnQpCiB7CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGlu
dD4oW05TTWVudSBtZW51VHlwZUZvckV2ZW50OmV2ZW50XSk7CiB9Ci0gICAgCisKIGNsYXNzIFBs
YXRmb3JtTW91c2VFdmVudEJ1aWxkZXIgOiBwdWJsaWMgUGxhdGZvcm1Nb3VzZUV2ZW50IHsKIHB1
YmxpYzoKICAgICBQbGF0Zm9ybU1vdXNlRXZlbnRCdWlsZGVyKE5TRXZlbnQgKmV2ZW50LCBOU0V2
ZW50ICpjb3JyZXNwb25kaW5nUHJlc3N1cmVFdmVudCwgTlNWaWV3ICp3aW5kb3dWaWV3KQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbGJhclRoZW1lTWFjLm1t
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbGJhclRoZW1lTWFjLm1tCmluZGV4
IGM0YzI4Nzc2ODM1NzQ5NmFlYjI4OGZhNDFmMGRkOTVkMmQ3Y2MyODguLjZkMDViODZjNjNkMDVm
N2I2ZDE0NzMxN2VmZDI3ZmYzNDE1ODMxOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21hYy9TY3JvbGxiYXJUaGVtZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tYWMvU2Nyb2xsYmFyVGhlbWVNYWMubW0KQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRl
ICJTY3JvbGxWaWV3LmgiCiAjaW5jbHVkZSAiV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oIgogI2lu
Y2x1ZGUgPENhcmJvbi9DYXJib24uaD4KKyNpbmNsdWRlIDxwYWwvc3BpL2NnL0NvcmVHcmFwaGlj
c1NQSS5oPgogI2luY2x1ZGUgPHBhbC9zcGkvbWFjL05TU2Nyb2xsZXJJbXBTUEkuaD4KICNpbmNs
dWRlIDx3dGYvQmxvY2tPYmpDRXhjZXB0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+
CkBAIC01NzMsNyArNTc0LDcgQEAgc3RhdGljIFJldGFpblB0cjxDR0NvbG9yUmVmPiBsaW5lbkJh
Y2tncm91bmRDb2xvcigpCiAgICAgaWYgKCFjZ0ltYWdlKQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKIAotICAgIFJldGFpblB0cjxDR1BhdHRlcm5SZWY+IHBhdHRlcm4gPSBhZG9wdENGKHdrQ0dQ
YXR0ZXJuQ3JlYXRlV2l0aEltYWdlQW5kVHJhbnNmb3JtKGNnSW1hZ2UsIENHQWZmaW5lVHJhbnNm
b3JtSWRlbnRpdHksIHdrUGF0dGVyblRpbGluZ05vRGlzdG9ydGlvbikpOworICAgIFJldGFpblB0
cjxDR1BhdHRlcm5SZWY+IHBhdHRlcm4gPSBhZG9wdENGKENHUGF0dGVybkNyZWF0ZVdpdGhJbWFn
ZTIoY2dJbWFnZSwgQ0dBZmZpbmVUcmFuc2Zvcm1JZGVudGl0eSwga0NHUGF0dGVyblRpbGluZ05v
RGlzdG9ydGlvbikpOwogICAgIFJldGFpblB0cjxDR0NvbG9yU3BhY2VSZWY+IGNvbG9yU3BhY2Ug
PSBhZG9wdENGKENHQ29sb3JTcGFjZUNyZWF0ZVBhdHRlcm4oMCkpOwogCiAgICAgY29uc3QgQ0dG
bG9hdCBhbHBoYSA9IDEuMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21h
Yy9UaGVtZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9UaGVtZU1hYy5tbQpp
bmRleCA5MGYxMDQxZWZmN2YwYzY0N2Q2ZjgzOTFjMDI3ZjUzZDFhYjQ0NzE0Li44YTE5MjY1Y2Y1
ZDgyZjIwMjVmZjUwMWVlZTJlZjk1MWY4NDM3ODUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tYWMvVGhlbWVNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL1RoZW1lTWFjLm1tCkBAIC0zNiw2ICszNiw3IEBACiAjaW1wb3J0ICJXZWJDb3JlU3lzdGVt
SW50ZXJmYWNlLmgiCiAjaW1wb3J0IDxDYXJib24vQ2FyYm9uLmg+CiAjaW1wb3J0IDxwYWwvc3Bp
L2NvY29hL05TQnV0dG9uQ2VsbFNQSS5oPgorI2ltcG9ydCA8cGFsL3NwaS9tYWMvTlNHcmFwaGlj
c1NQSS5oPgogI2ltcG9ydCA8d3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMuaD4KICNpbXBvcnQgPHd0
Zi9OZXZlckRlc3Ryb3llZC5oPgogI2ltcG9ydCA8d3RmL1N0ZExpYkV4dHJhcy5oPgpAQCAtMzQ5
LDkgKzM1MCwzMiBAQCBzdGF0aWMgTlNCdXR0b25DZWxsICpzaGFyZWRDaGVja2JveENlbGwoY29u
c3QgQ29udHJvbFN0YXRlcyYgc3RhdGVzLCBjb25zdCBJbnRTaQogICAgIHJldHVybiBjaGVja2Jv
eENlbGw7CiB9CiAKK3N0YXRpYyBib29sIGRyYXdDZWxsRm9jdXNSaW5nV2l0aEZyYW1lQXRUaW1l
KE5TQ2VsbCAqY2VsbCwgTlNSZWN0IGNlbGxGcmFtZSwgTlNWaWV3ICpjb250cm9sVmlldywgTlNU
aW1lSW50ZXJ2YWwgdGltZU9mZnNldCkKK3sKKyAgICBDR0NvbnRleHRSZWYgY2dDb250ZXh0ID0g
KENHQ29udGV4dFJlZilbW05TR3JhcGhpY3NDb250ZXh0IGN1cnJlbnRDb250ZXh0XSBncmFwaGlj
c1BvcnRdOworICAgIENHQ29udGV4dFNhdmVHU3RhdGUoY2dDb250ZXh0KTsKKworICAgIENHRm9j
dXNSaW5nU3R5bGUgZm9jdXNSaW5nU3R5bGU7CisgICAgYm9vbCBuZWVkc1JlcGFpbnQgPSBOU0lu
aXRpYWxpemVDR0ZvY3VzUmluZ1N0eWxlRm9yVGltZShOU0ZvY3VzUmluZ09ubHksICZmb2N1c1Jp
bmdTdHlsZSwgdGltZU9mZnNldCk7CisgICAgLy8gV2Ugd2FudCB0byByZXNwZWN0IHRoZSBDR0Nv
bnRleHQgY2xpcHBpbmcgYW5kIGFsc28gbm90IG92ZXJwYWludCBhbnkKKyAgICAvLyBleGlzdGlu
ZyBmb2N1cyByaW5nLiBUaGUgd2F5IHRvIGRvIHRoaXMgaXMgc2V0IGFjY3VtdWxhdGUgdG8KKyAg
ICAvLyAtMS4gQWNjb3JkaW5nIHRvIENvcmVHcmFwaGljcywgdGhlIHJlYXNvbmluZyBmb3IgdGhp
cyBiZWhhdmlvciBoYXMgYmVlbgorICAgIC8vIGxvc3QgaW4gdGltZS4KKyAgICBmb2N1c1JpbmdT
dHlsZS5hY2N1bXVsYXRlID0gLTE7CisgICAgYXV0byBzdHlsZSA9IGFkb3B0Q0YoQ0dTdHlsZUNy
ZWF0ZUZvY3VzUmluZ1dpdGhDb2xvcigmZm9jdXNSaW5nU3R5bGUsIEdyYXBoaWNzQ29udGV4dDo6
Zm9jdXNSaW5nQ29sb3IoKSkpOworICAgIENHQ29udGV4dFNldFN0eWxlKGNnQ29udGV4dCwgc3R5
bGUuZ2V0KCkpOworCisgICAgQ0dDb250ZXh0QmVnaW5UcmFuc3BhcmVuY3lMYXllcldpdGhSZWN0
KGNnQ29udGV4dCwgTlNSZWN0VG9DR1JlY3QoY2VsbEZyYW1lKSwgMCk7CisgICAgW2NlbGwgZHJh
d0ZvY3VzUmluZ01hc2tXaXRoRnJhbWU6Y2VsbEZyYW1lIGluVmlldzpjb250cm9sVmlld107Cisg
ICAgQ0dDb250ZXh0RW5kVHJhbnNwYXJlbmN5TGF5ZXIoY2dDb250ZXh0KTsKKyAgICBDR0NvbnRl
eHRSZXN0b3JlR1N0YXRlKGNnQ29udGV4dCk7CisKKyAgICByZXR1cm4gbmVlZHNSZXBhaW50Owor
fQorCiBzdGF0aWMgYm9vbCBkcmF3Q2VsbEZvY3VzUmluZyhOU0NlbGwgKmNlbGwsIE5TUmVjdCBj
ZWxsRnJhbWUsIE5TVmlldyAqY29udHJvbFZpZXcpCiB7Ci0gICAgd2tEcmF3Q2VsbEZvY3VzUmlu
Z1dpdGhGcmFtZUF0VGltZShjZWxsLCBjZWxsRnJhbWUsIGNvbnRyb2xWaWV3LCBzdGQ6Om51bWVy
aWNfbGltaXRzPGRvdWJsZT46Om1heCgpKTsKKyAgICBkcmF3Q2VsbEZvY3VzUmluZ1dpdGhGcmFt
ZUF0VGltZShjZWxsLCBjZWxsRnJhbWUsIGNvbnRyb2xWaWV3LCBzdGQ6Om51bWVyaWNfbGltaXRz
PGRvdWJsZT46Om1heCgpKTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oCmluZGV4IDkz
Y2RmZDBjN2FiMWU5NjgwMTA2Y2E2NDg1NDQ4NTY2Yjc0NDRlNDYuLjZiZDE0Y2RiMmIwZWU2MDkw
MTRlZDI3OTE3NWQ0NzE1ZDdkMGU5YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21hYy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWFjL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaApAQCAtMTI2LDE0ICsxMjYsNyBAQCB0
eXBlZGVmIGVudW0gewogICAgIHdrUGF0dGVyblRpbGluZ0NvbnN0YW50U3BhY2luZwogfSB3a1Bh
dHRlcm5UaWxpbmc7CiAjaWYgIVBMQVRGT1JNKElPUykKLWV4dGVybiBib29sICgqd2tDR0NvbnRl
eHREcmF3c1dpdGhDb3JyZWN0U2hhZG93T2Zmc2V0cykoQ0dDb250ZXh0UmVmKTsKLSNlbmRpZgot
ZXh0ZXJuIENHUGF0dGVyblJlZiAoKndrQ0dQYXR0ZXJuQ3JlYXRlV2l0aEltYWdlQW5kVHJhbnNm
b3JtKShDR0ltYWdlUmVmLCBDR0FmZmluZVRyYW5zZm9ybSwgaW50KTsKLSNpZiAhUExBVEZPUk0o
SU9TKQogZXh0ZXJuIHZvaWQgKCp3a0RyYXdCZXplbGVkVGV4dEFyZWEpKE5TUmVjdCwgQk9PTCBl
bmFibGVkKTsKLWV4dGVybiB2b2lkICgqd2tEcmF3Rm9jdXNSaW5nKShDR0NvbnRleHRSZWYsIENH
Q29sb3JSZWYsIGludCk7Ci1leHRlcm4gYm9vbCAoKndrRHJhd0ZvY3VzUmluZ0F0VGltZSkoQ0dD
b250ZXh0UmVmLCBOU1RpbWVJbnRlcnZhbCB0aW1lKTsKLWV4dGVybiBib29sICgqd2tEcmF3Q2Vs
bEZvY3VzUmluZ1dpdGhGcmFtZUF0VGltZSkoTlNDZWxsICpjZWxsLCBOU1JlY3QgY2VsbEZyYW1l
LCBOU1ZpZXcgKmNvbnRyb2xWaWV3LCBOU1RpbWVJbnRlcnZhbCB0aW1lKTsKIGV4dGVybiB2b2lk
ICgqd2tEcmF3TWVkaWFTbGlkZXJUcmFjaykoQ0dDb250ZXh0UmVmIGNvbnRleHQsIENHUmVjdCBy
ZWN0LCBmbG9hdCB0aW1lTG9hZGVkLCBmbG9hdCBjdXJyZW50VGltZSwKICAgICBmbG9hdCBkdXJh
dGlvbiwgdW5zaWduZWQgc3RhdGUpOwogZXh0ZXJuIHZvaWQgKCp3a0RyYXdNZWRpYVVJUGFydCko
aW50IHBhcnQsIENHQ29udGV4dFJlZiBjb250ZXh0LCBDR1JlY3QgcmVjdCwgdW5zaWduZWQgc3Rh
dGUpOwpAQCAtMTU3LDkgKzE1MCw2IEBAIHR5cGVkZWYgZW51bSB7CiB9IHdrTWVkaWFVSUNvbnRy
b2xUeXBlOwogZXh0ZXJuIE5TQ29udHJvbCAqKCp3a0NyZWF0ZU1lZGlhVUlDb250cm9sKShpbnQp
OwogCi1leHRlcm4gdm9pZCAoKndrV2luZG93U2V0QWxwaGEpKE5TV2luZG93ICosIGZsb2F0KTsK
LWV4dGVybiB2b2lkICgqd2tXaW5kb3dTZXRTY2FsZWRGcmFtZSkoTlNXaW5kb3cgKiwgTlNSZWN0
LCBOU1JlY3QpOwotCiBleHRlcm4gdW5zaWduZWQgKCp3a1FUSW5jbHVkZU9ubHlNb2Rlcm5NZWRp
YUZpbGVUeXBlcykodm9pZCk7CiBleHRlcm4gdm9pZCAoKndrUVRNb3ZpZURpc2FibGVDb21wb25l
bnQpKHVpbnQzMl90WzVdKTsKIGV4dGVybiBmbG9hdCAoKndrUVRNb3ZpZU1heFRpbWVMb2FkZWQp
KFFUTW92aWUqKTsKQEAgLTE3Myw5ICsxNjMsNyBAQCBleHRlcm4gTlNBcnJheSAqKCp3a1FUR2V0
U2l0ZXNJbk1lZGlhRG93bmxvYWRDYWNoZSkoKTsKIGV4dGVybiB2b2lkICgqd2tRVENsZWFyTWVk
aWFEb3dubG9hZENhY2hlRm9yU2l0ZSkoTlNTdHJpbmcgKnNpdGUpOwogZXh0ZXJuIHZvaWQgKCp3
a1FUQ2xlYXJNZWRpYURvd25sb2FkQ2FjaGUpKCk7CiBleHRlcm4gdm9pZCAoKndrU2V0Q29va2ll
U3RvcmFnZVByaXZhdGVCcm93c2luZ0VuYWJsZWQpKEJPT0wpOwotZXh0ZXJuIHZvaWQgKCp3a1Nl
dERyYWdJbWFnZSkoTlNJbWFnZSosIE5TUG9pbnQgb2Zmc2V0KTsKICNlbmRpZgotZXh0ZXJuIGJv
b2wgKCp3a0NHQ29udGV4dElzUERGQ29udGV4dCkoQ0dDb250ZXh0UmVmKTsKIGV4dGVybiB2b2lk
ICgqd2tTZXRDT05ORUNUUHJveHlGb3JTdHJlYW0pKENGUmVhZFN0cmVhbVJlZiwgQ0ZTdHJpbmdS
ZWYgcHJveHlIb3N0LCBDRk51bWJlclJlZiBwcm94eVBvcnQpOwogZXh0ZXJuIHZvaWQgKCp3a1Nl
dENPTk5FQ1RQcm94eUF1dGhvcml6YXRpb25Gb3JTdHJlYW0pKENGUmVhZFN0cmVhbVJlZiwgQ0ZT
dHJpbmdSZWYgcHJveHlBdXRob3JpemF0aW9uU3RyaW5nKTsKIGV4dGVybiBDRkhUVFBNZXNzYWdl
UmVmICgqd2tDb3B5Q09OTkVDVFByb3h5UmVzcG9uc2UpKENGUmVhZFN0cmVhbVJlZiwgQ0ZVUkxS
ZWYgcmVzcG9uc2VVUkwsIENGU3RyaW5nUmVmIHByb3h5SG9zdCwgQ0ZOdW1iZXJSZWYgcHJveHlQ
b3J0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlU3lz
dGVtSW50ZXJmYWNlLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVTeXN0
ZW1JbnRlcmZhY2UubW0KaW5kZXggNjQ5ZDdhNjdjZDY3NjU0YTJhM2UzOTRlOTM1ZjhjNTI2ZmEz
OTI1YS4uYjRiNWMwMDg2YzQyZTJkNDNkMzA2YjkyZjYxNDI2ZjQ3YzkzNmI4MiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2UubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2Uu
bW0KQEAgLTMxLDEyICszMSw3IEBACiAjaW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4K
IAogdm9pZCAoKndrQ0FMYXllckVudW1lcmF0ZVJlY3RzQmVpbmdEcmF3bldpdGhCbG9jaykoQ0FM
YXllciAqLCBDR0NvbnRleHRSZWYgY29udGV4dCwgdm9pZCAoXmJsb2NrKShDR1JlY3QgcmVjdCkp
OwotYm9vbCAoKndrQ0dDb250ZXh0RHJhd3NXaXRoQ29ycmVjdFNoYWRvd09mZnNldHMpKENHQ29u
dGV4dFJlZik7Ci1DR1BhdHRlcm5SZWYgKCp3a0NHUGF0dGVybkNyZWF0ZVdpdGhJbWFnZUFuZFRy
YW5zZm9ybSkoQ0dJbWFnZVJlZiwgQ0dBZmZpbmVUcmFuc2Zvcm0sIGludCk7CiB2b2lkICgqd2tE
cmF3QmV6ZWxlZFRleHRBcmVhKShOU1JlY3QsIEJPT0wgZW5hYmxlZCk7Ci12b2lkICgqd2tEcmF3
Rm9jdXNSaW5nKShDR0NvbnRleHRSZWYsIENHQ29sb3JSZWYsIGludCk7Ci1ib29sICgqd2tEcmF3
Rm9jdXNSaW5nQXRUaW1lKShDR0NvbnRleHRSZWYsIE5TVGltZUludGVydmFsKTsKLWJvb2wgKCp3
a0RyYXdDZWxsRm9jdXNSaW5nV2l0aEZyYW1lQXRUaW1lKShOU0NlbGwqLCBOU1JlY3QsIE5TVmll
dyosIE5TVGltZUludGVydmFsKTsKIHZvaWQgKCp3a0RyYXdNZWRpYVNsaWRlclRyYWNrKShDR0Nv
bnRleHRSZWYgY29udGV4dCwgQ0dSZWN0IHJlY3QsIGZsb2F0IHRpbWVMb2FkZWQsIGZsb2F0IGN1
cnJlbnRUaW1lLAogICAgIGZsb2F0IGR1cmF0aW9uLCB1bnNpZ25lZCBzdGF0ZSk7CiBCT09MICgq
d2tIaXRUZXN0TWVkaWFVSVBhcnQpKGludCBwYXJ0LCBDR1JlY3QgYm91bmRzLCBDR1BvaW50IHBv
aW50KTsKQEAgLTQ0LDggKzM5LDYgQEAgdm9pZCAoKndrRHJhd01lZGlhVUlQYXJ0KShpbnQgcGFy
dCwgQ0dDb250ZXh0UmVmIGNvbnRleHQsIENHUmVjdCByZWN0LCB1bnNpZ25lZAogdm9pZCAoKndr
TWVhc3VyZU1lZGlhVUlQYXJ0KShpbnQgcGFydCwgQ0dSZWN0ICpib3VuZHMsIENHU2l6ZSAqbmF0
dXJhbFNpemUpOwogTlNWaWV3ICooKndrQ3JlYXRlTWVkaWFVSUJhY2tncm91bmRWaWV3KSh2b2lk
KTsKIE5TQ29udHJvbCAqKCp3a0NyZWF0ZU1lZGlhVUlDb250cm9sKShpbnQpOwotdm9pZCAoKndr
V2luZG93U2V0QWxwaGEpKE5TV2luZG93ICosIGZsb2F0KTsKLXZvaWQgKCp3a1dpbmRvd1NldFNj
YWxlZEZyYW1lKShOU1dpbmRvdyAqLCBOU1JlY3QsIE5TUmVjdCk7CiBOU1RpbWVJbnRlcnZhbCAo
KndrR2V0TlNVUkxSZXNwb25zZUNhbGN1bGF0ZWRFeHBpcmF0aW9uKShOU1VSTFJlc3BvbnNlICpy
ZXNwb25zZSk7CiBCT09MICgqd2tHZXROU1VSTFJlc3BvbnNlTXVzdFJldmFsaWRhdGUpKE5TVVJM
UmVzcG9uc2UgKnJlc3BvbnNlKTsKIHZvaWQgKCp3a0dldFdoZWVsRXZlbnREZWx0YXMpKE5TRXZl
bnQqLCBmbG9hdCogZGVsdGFYLCBmbG9hdCogZGVsdGFZLCBCT09MKiBjb250aW51b3VzKTsKQEAg
LTY0LDggKzU3LDYgQEAgTlNBcnJheSAqKCp3a1FUR2V0U2l0ZXNJbk1lZGlhRG93bmxvYWRDYWNo
ZSkoKTsKIHZvaWQgKCp3a1FUQ2xlYXJNZWRpYURvd25sb2FkQ2FjaGVGb3JTaXRlKShOU1N0cmlu
ZyAqc2l0ZSk7CiB2b2lkICgqd2tRVENsZWFyTWVkaWFEb3dubG9hZENhY2hlKSgpOwogCi12b2lk
ICgqd2tTZXREcmFnSW1hZ2UpKE5TSW1hZ2UqLCBOU1BvaW50IG9mZnNldCk7Ci1ib29sICgqd2tD
R0NvbnRleHRJc1BERkNvbnRleHQpKENHQ29udGV4dFJlZik7CiB2b2lkICgqd2tTZXRDT05ORUNU
UHJveHlGb3JTdHJlYW0pKENGUmVhZFN0cmVhbVJlZiwgQ0ZTdHJpbmdSZWYgcHJveHlIb3N0LCBD
Rk51bWJlclJlZiBwcm94eVBvcnQpOwogdm9pZCAoKndrU2V0Q09OTkVDVFByb3h5QXV0aG9yaXph
dGlvbkZvclN0cmVhbSkoQ0ZSZWFkU3RyZWFtUmVmLCBDRlN0cmluZ1JlZiBwcm94eUF1dGhvcml6
YXRpb25TdHJpbmcpOwogQ0ZIVFRQTWVzc2FnZVJlZiAoKndrQ29weUNPTk5FQ1RQcm94eVJlc3Bv
bnNlKShDRlJlYWRTdHJlYW1SZWYsIENGVVJMUmVmIHJlc3BvbnNlVVJMLCBDRlN0cmluZ1JlZiBw
cm94eUhvc3QsIENGTnVtYmVyUmVmIHByb3h5UG9ydCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvV2ViV2luZG93QW5pbWF0aW9uLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL1dlYldpbmRvd0FuaW1hdGlvbi5tbQppbmRleCA4YWJjODQwYjczY2M2NDVj
OGFjNDA2ZGVhZmFlOTQyMmNkYzM1M2UyLi5jYTU1OWRmMGJjYTliNjI0ZGUyZmMwNDJhMmYzYTE1
NmM4NzBhODJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViV2lu
ZG93QW5pbWF0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJXaW5k
b3dBbmltYXRpb24ubW0KQEAgLTI5LDYgKzI5LDcgQEAKIAogI2ltcG9ydCAiRmxvYXRDb252ZXJz
aW9uLmgiCiAjaW1wb3J0ICJXZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmgiCisjaW1wb3J0IDxwYWwv
c3BpL2NnL0NvcmVHcmFwaGljc1NQSS5oPgogI2ltcG9ydCA8d3RmL0Fzc2VydGlvbnMuaD4KICNp
bXBvcnQgPHd0Zi9NYXRoRXh0cmFzLmg+CiAKQEAgLTEwOSw2ICsxMTAsNTkgQEAgLSAoTlNSZWN0
KWN1cnJlbnRGcmFtZQogICAgIHJldHVybiBzY2FsZWRSZWN0KF9maW5hbEZyYW1lLCBfaW5pdGlh
bEZyYW1lLCBbc2VsZiBjdXJyZW50VmFsdWVdKTsKIH0KIAorc3RhdGljIHZvaWQgZmxpcFJlY3Qo
TlNSZWN0ICpyZWN0KQoreworICAgIHJlY3QtPm9yaWdpbi55ID0gTlNNYXhZKFsoTlNTY3JlZW4g
KilbW05TU2NyZWVuIHNjcmVlbnNdIG9iamVjdEF0SW5kZXg6MF0gZnJhbWVdKSAtIE5TTWF4WSgq
cmVjdCk7Cit9CisKK3N0YXRpYyBDR1NDb25uZWN0aW9uSUQgbWFpbldpbmRvd1NlcnZlckNvbm5l
Y3Rpb25JRCgpCit7CisgICAgc3RhdGljIENHU0Nvbm5lY3Rpb25JRCBjZ3NJZDsKKyAgICBpZiAo
IWNnc0lkKQorICAgICAgICBjZ3NJZCA9IENHU01haW5Db25uZWN0aW9uSUQoKTsKKyAgICByZXR1
cm4gY2dzSWQ7Cit9CisKK3N0YXRpYyB2b2lkIHNldFNjYWxlZEZyYW1lRm9yV2luZG93KE5TV2lu
ZG93ICp3aW5kb3csIE5TUmVjdCBzY2FsZUZyYW1lLCBOU1JlY3Qgbm9uU2NhbGVkRnJhbWUpCit7
CisgICAgaWYgKE5TRXF1YWxSZWN0cyhzY2FsZUZyYW1lLCBub25TY2FsZWRGcmFtZSkpIHsKKyAg
ICAgICAgQ0dTU2V0V2luZG93V2FycChtYWluV2luZG93U2VydmVyQ29ubmVjdGlvbklEKCksIFt3
aW5kb3cgd2luZG93TnVtYmVyXSwgMCwgMCwgTlVMTCk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisgICAgCisgICAgZmxvYXQgbWVzaFsxNl07CisgICAgCisgICAgZmxpcFJlY3QoJnNjYWxlRnJh
bWUpOworICAgIGZsaXBSZWN0KCZub25TY2FsZWRGcmFtZSk7CisgICAgCisgICAgLy8gdG9wLWxl
ZnQgcG9pbnQgKHRvIGFuZCBmcm9tKQorICAgIG1lc2hbMF0gPSAwOworICAgIG1lc2hbMV0gPSAw
OworICAgIG1lc2hbMl0gPSBOU01pblgoc2NhbGVGcmFtZSk7CisgICAgbWVzaFszXSA9IE5TTWlu
WShzY2FsZUZyYW1lKTsKKyAgICAKKyAgICAvLyB0b3AtcmlnaHQgcG9pbnQgKHRvIGFuZCBmcm9t
KQorICAgIG1lc2hbNF0gPSBOU1dpZHRoKG5vblNjYWxlZEZyYW1lKTsKKyAgICBtZXNoWzVdID0g
MDsKKyAgICBtZXNoWzZdID0gTlNNYXhYKHNjYWxlRnJhbWUpOworICAgIG1lc2hbN10gPSBOU01p
blkoc2NhbGVGcmFtZSk7CisgICAgCisgICAgLy8gYm90dG9tLWxlZnQgKHRvIGFuZCBmcm9tKQor
ICAgIG1lc2hbOF0gPSAwOworICAgIG1lc2hbOV0gPSBOU0hlaWdodChub25TY2FsZWRGcmFtZSk7
CisgICAgbWVzaFsxMF0gPSBOU01pblgoc2NhbGVGcmFtZSk7CisgICAgbWVzaFsxMV0gPSBOU01h
eFkoc2NhbGVGcmFtZSk7CisgICAgCisgICAgLy8gYm90dG9tLXJpZ2h0ICh0byBhbmQgZnJvbSkK
KyAgICBtZXNoWzEyXSA9IE5TV2lkdGgobm9uU2NhbGVkRnJhbWUpOworICAgIG1lc2hbMTNdID0g
TlNIZWlnaHQobm9uU2NhbGVkRnJhbWUpOworICAgIG1lc2hbMTRdID0gTlNNYXhYKHNjYWxlRnJh
bWUpOworICAgIG1lc2hbMTVdID0gTlNNYXhZKHNjYWxlRnJhbWUpOworICAgIAorICAgIC8vIEFw
cGx5IHRoZSB3YXJwLgorICAgIENHU1NldFdpbmRvd1dhcnAobWFpbldpbmRvd1NlcnZlckNvbm5l
Y3Rpb25JRCgpLCBbd2luZG93IHdpbmRvd051bWJlcl0sIDIsIDIsIG1lc2gpOworfQorCiAtICh2
b2lkKXNldEN1cnJlbnRQcm9ncmVzczooTlNBbmltYXRpb25Qcm9ncmVzcylwcm9ncmVzcwogewog
ICAgIGlmICghX3dpbmRvdykKQEAgLTExNyw3ICsxNzEsNyBAQCAtICh2b2lkKXNldEN1cnJlbnRQ
cm9ncmVzczooTlNBbmltYXRpb25Qcm9ncmVzcylwcm9ncmVzcwogICAgIFtzdXBlciBzZXRDdXJy
ZW50UHJvZ3Jlc3M6cHJvZ3Jlc3NdOwogCiAgICAgTlNSZWN0IGN1cnJlbnRSZWN0ID0gW3NlbGYg
Y3VycmVudEZyYW1lXTsKLSAgICB3a1dpbmRvd1NldFNjYWxlZEZyYW1lKF93aW5kb3csIGN1cnJl
bnRSZWN0LCBfcmVhbEZyYW1lKTsKKyAgICBzZXRTY2FsZWRGcmFtZUZvcldpbmRvdyhfd2luZG93
LCBjdXJyZW50UmVjdCwgX3JlYWxGcmFtZSk7CiAgICAgW19zdWJBbmltYXRpb24gc2V0Q3VycmVu
dFByb2dyZXNzOnByb2dyZXNzXTsKIH0KIApAQCAtMjExLDcgKzI2NSw3IEBAIC0gKHZvaWQpc2V0
Q3VycmVudFByb2dyZXNzOihOU0FuaW1hdGlvblByb2dyZXNzKXByb2dyZXNzCiAgICAgQVNTRVJU
KF93aW5kb3cpOwogICAgIFtzdXBlciBzZXRDdXJyZW50UHJvZ3Jlc3M6cHJvZ3Jlc3NdOwogCi0g
ICAgd2tXaW5kb3dTZXRBbHBoYShfd2luZG93LCBbc2VsZiBjdXJyZW50QWxwaGFdKTsKKyAgICBD
R1NTZXRXaW5kb3dBbHBoYShtYWluV2luZG93U2VydmVyQ29ubmVjdGlvbklEKCksIF93aW5kb3cu
d2luZG93TnVtYmVyLCBbc2VsZiBjdXJyZW50QWxwaGFdKTsKIH0KIAogLSAodm9pZClzZXRXaW5k
b3c6KE5TV2luZG93Kil3aW5kb3cKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGx1Z2luUHJv
Y2Vzcy9tYWMvUGx1Z2luUHJvY2Vzc01hYy5tbSBiL1NvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vz
cy9tYWMvUGx1Z2luUHJvY2Vzc01hYy5tbQppbmRleCBkZDUzMzcwMjQ3ZjBhNmI3NGEwMWJmY2M4
YWE5NmZhNmZmZjM0NDE4Li43ZmYxYmM5N2IyOTQ3ZmZhNDg5OWRkZjM5M2ZjMDk0OTQ5YTU3NWMz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvbWFjL1BsdWdpblByb2Nl
c3NNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL21hYy9QbHVnaW5Qcm9j
ZXNzTWFjLm1tCkBAIC01MzAsNyArNTMwLDEwIEBAIHZvaWQgUGx1Z2luUHJvY2Vzczo6cGxhdGZv
cm1Jbml0aWFsaXplUHJvY2Vzcyhjb25zdCBDaGlsZFByb2Nlc3NJbml0aWFsaXphdGlvblBhCiAK
ICAgICAvLyBGSVhNRTogSXQgd291bGQgYmUgYmV0dGVyIHRvIHByb3h5IFNldEN1cnNvciBjYWxs
cyBvdmVyIHRvIHRoZSBVSSBwcm9jZXNzIGluc3RlYWQgb2YKICAgICAvLyBhbGxvd2luZyBwbHVn
LWlucyB0byBjaGFuZ2UgdGhlIG1vdXNlIGN1cnNvciBhdCBhbnkgdGltZS4KLSAgICBXS0VuYWJs
ZVNldHRpbmdDdXJzb3JXaGVuSW5CYWNrZ3JvdW5kKCk7CisgICAgLy8gRklYTUU6IFNldHNDdXJz
b3JJbkJhY2tncm91bmQgY29ubmVjdGlvbiBwcm9wZXJ0eSBpcyBkZXByZWNhdGVkIGluIGZhdm9y
IG9mIGtDR1NTZXRzQ3Vyc29ySW5CYWNrZ3JvdW5kVGFnQml0IHdpbmRvdyB0YWcgYml0LgorICAg
IC8vIDxyZGFyOi8vcHJvYmxlbS83NzUyNDIyPiBhc2tzIGZvciBhbiBBUEkgdG8gc2V0IGN1cnNv
ciBmcm9tIGJhY2tncm91bmQgcHJvY2Vzc2VzLgorICAgIENHU0Nvbm5lY3Rpb25JRCBjaWQgPSBD
R1NNYWluQ29ubmVjdGlvbklEKCk7CisgICAgQ0dTU2V0Q29ubmVjdGlvblByb3BlcnR5KGNpZCwg
Y2lkLCBDRlNUUigiU2V0c0N1cnNvckluQmFja2dyb3VuZCIpLCAoQ0ZUeXBlUmVmKWtDRkJvb2xl
YW5UcnVlKTsKIAogICAgIFJldGFpblB0cjxDRlVSTFJlZj4gcGx1Z2luVVJMID0gYWRvcHRDRihD
RlVSTENyZWF0ZVdpdGhGaWxlU3lzdGVtUGF0aCgwLCBtX3BsdWdpblBhdGguY3JlYXRlQ0ZTdHJp
bmcoKS5nZXQoKSwga0NGVVJMUE9TSVhQYXRoU3R5bGUsIGZhbHNlKSk7CiAgICAgaWYgKCFwbHVn
aW5VUkwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2luZG93U2Vy
dmVyQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dpbmRvd1NlcnZl
ckNvbm5lY3Rpb24uaAppbmRleCA4MzhhMzRmYjVjMmQ0NGVlZTU0NjRlNTdlZGM3MGUxMGFkYmQz
YjIwLi5lN2I1MThjNmM1ZWIwYjA2MmQ4OWE5MWNhNzA1NzdiYTg0ZWIwNTExIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2luZG93U2VydmVyQ29ubmVjdGlvbi5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XaW5kb3dTZXJ2ZXJDb25uZWN0aW9uLmgK
QEAgLTQxLDkgKzQxLDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIHdpbmRvd1NlcnZlckNvbm5lY3Rp
b25TdGF0ZUNoYW5nZWQoKTsKIAogICAgIHZvaWQgYXBwbGljYXRpb25XaW5kb3dNb2RpZmljYXRp
b25zU3RvcHBlZChib29sIHN0b3BwZWQpOwotCi0gICAgc3RhdGljIHZvaWQgYXBwbGljYXRpb25X
aW5kb3dNb2RpZmljYXRpb25zU3RhcnRlZCh1aW50MzJfdCwgdm9pZCosIHVpbnQzMl90LCB2b2lk
KiwgdWludDMyX3QpOwotICAgIHN0YXRpYyB2b2lkIGFwcGxpY2F0aW9uV2luZG93TW9kaWZpY2F0
aW9uc1N0b3BwZWQodWludDMyX3QsIHZvaWQqLCB1aW50MzJfdCwgdm9pZCosIHVpbnQzMl90KTsK
ICNlbmRpZgogCiAgICAgYm9vbCBtX2FwcGxpY2F0aW9uV2luZG93TW9kaWZpY2F0aW9uc0hhdmVT
dG9wcGVkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dpbmRvd1Nl
cnZlckNvbm5lY3Rpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2luZG93U2Vy
dmVyQ29ubmVjdGlvbi5tbQppbmRleCA4MTk1MzVjMmFjMTI5YzhkNTIxMjE4Yzk3NTVjODRiNjFk
NDRmMjg1Li5jOTc1NWQ3MjJhNWRjMzUyZjNhYTEyZTQwODc5NTAwY2UyOTQzM2JkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2luZG93U2VydmVyQ29ubmVjdGlvbi5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2luZG93U2VydmVyQ29ubmVjdGlv
bi5tbQpAQCAtNDEsMTYgKzQxLDYgQEAgdm9pZCBXaW5kb3dTZXJ2ZXJDb25uZWN0aW9uOjphcHBs
aWNhdGlvbldpbmRvd01vZGlmaWNhdGlvbnNTdG9wcGVkKGJvb2wgc3RvcHBlZCkKICAgICB3aW5k
b3dTZXJ2ZXJDb25uZWN0aW9uU3RhdGVDaGFuZ2VkKCk7CiB9CiAKLXZvaWQgV2luZG93U2VydmVy
Q29ubmVjdGlvbjo6YXBwbGljYXRpb25XaW5kb3dNb2RpZmljYXRpb25zU3RhcnRlZCh1aW50MzJf
dCwgdm9pZCosIHVpbnQzMl90LCB2b2lkKiwgdWludDMyX3QpCi17Ci0gICAgV2luZG93U2VydmVy
Q29ubmVjdGlvbjo6c2luZ2xldG9uKCkuYXBwbGljYXRpb25XaW5kb3dNb2RpZmljYXRpb25zU3Rv
cHBlZChmYWxzZSk7Ci19Ci0KLXZvaWQgV2luZG93U2VydmVyQ29ubmVjdGlvbjo6YXBwbGljYXRp
b25XaW5kb3dNb2RpZmljYXRpb25zU3RvcHBlZCh1aW50MzJfdCwgdm9pZCosIHVpbnQzMl90LCB2
b2lkKiwgdWludDMyX3QpCi17Ci0gICAgV2luZG93U2VydmVyQ29ubmVjdGlvbjo6c2luZ2xldG9u
KCkuYXBwbGljYXRpb25XaW5kb3dNb2RpZmljYXRpb25zU3RvcHBlZCh0cnVlKTsKLX0KLQogdm9p
ZCBXaW5kb3dTZXJ2ZXJDb25uZWN0aW9uOjp3aW5kb3dTZXJ2ZXJDb25uZWN0aW9uU3RhdGVDaGFu
Z2VkKCkKIHsKICAgICBmb3IgKGF1dG8qIHByb2Nlc3NQb29sIDogV2ViUHJvY2Vzc1Bvb2w6OmFs
bFByb2Nlc3NQb29scygpKQpAQCAtNjUsMjMgKzU1LDQ2IEBAIFdpbmRvd1NlcnZlckNvbm5lY3Rp
b24mIFdpbmRvd1NlcnZlckNvbm5lY3Rpb246OnNpbmdsZXRvbigpCiAgICAgcmV0dXJuIHdpbmRv
d1NlcnZlckNvbm5lY3Rpb247CiB9CiAKK3N0YXRpYyBib29sIHJlZ2lzdGVyT2NjbHVzaW9uTm90
aWZpY2F0aW9uSGFuZGxlcihDR1NOb3RpZmljYXRpb25UeXBlIHR5cGUsIENHU05vdGlmeUNvbm5l
Y3Rpb25Qcm9jUHRyIGhhbmRsZXIpCit7CisgICAgQ0dTQ29ubmVjdGlvbklEIG1haW5Db25uZWN0
aW9uID0gQ0dTTWFpbkNvbm5lY3Rpb25JRCgpOworICAgIHN0YXRpYyBib29sIG5vdGlmaWNhdGlv
bnNFbmFibGVkOworICAgIGlmICghbm90aWZpY2F0aW9uc0VuYWJsZWQpIHsKKyAgICAgICAgaWYg
KENHU1BhY2thZ2VzRW5hYmxlQ29ubmVjdGlvbk9jY2x1c2lvbk5vdGlmaWNhdGlvbnMobWFpbkNv
bm5lY3Rpb24sIHRydWUsIG51bGxwdHIpICE9IGtDR0Vycm9yU3VjY2VzcykKKyAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYgKENHU1BhY2thZ2VzRW5hYmxlQ29ubmVjdGlvbldp
bmRvd01vZGlmaWNhdGlvbk5vdGlmaWNhdGlvbnMobWFpbkNvbm5lY3Rpb24sIHRydWUsIG51bGxw
dHIpICE9IGtDR0Vycm9yU3VjY2VzcykKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
ICAgbm90aWZpY2F0aW9uc0VuYWJsZWQgPSB0cnVlOworICAgIH0KKworICAgIHJldHVybiBDR1NS
ZWdpc3RlckNvbm5lY3Rpb25Ob3RpZnlQcm9jKG1haW5Db25uZWN0aW9uLCBoYW5kbGVyLCB0eXBl
LCBudWxscHRyKSA9PSBrQ0dFcnJvclN1Y2Nlc3M7Cit9CisKIFdpbmRvd1NlcnZlckNvbm5lY3Rp
b246OldpbmRvd1NlcnZlckNvbm5lY3Rpb24oKQogICAgIDogbV9hcHBsaWNhdGlvbldpbmRvd01v
ZGlmaWNhdGlvbnNIYXZlU3RvcHBlZChmYWxzZSkKIHsKICNpZiBIQVZFKFdJTkRPV19TRVJWRVJf
T0NDTFVTSU9OX05PVElGSUNBVElPTlMpCiAgICAgc3RydWN0IE9jY2x1c2lvbk5vdGlmaWNhdGlv
bkhhbmRsZXIgewotICAgICAgICBXS09jY2x1c2lvbk5vdGlmaWNhdGlvblR5cGUgbm90aWZpY2F0
aW9uVHlwZTsKLSAgICAgICAgV0tPY2NsdXNpb25Ob3RpZmljYXRpb25IYW5kbGVyIGhhbmRsZXI7
CisgICAgICAgIENHU05vdGlmaWNhdGlvblR5cGUgbm90aWZpY2F0aW9uVHlwZTsKKyAgICAgICAg
Q0dTTm90aWZ5Q29ubmVjdGlvblByb2NQdHIgaGFuZGxlcjsKICAgICAgICAgY29uc3QgY2hhciog
bmFtZTsKICAgICB9OwogCisgICAgc3RhdGljIGF1dG8gd2luZG93TW9kaWZpY2F0aW9uc1N0YXJ0
ZWQgPSBbXShDR1NOb3RpZmljYXRpb25UeXBlLCB2b2lkKiwgdWludDMyX3QsIHZvaWQqLCBDR1ND
b25uZWN0aW9uSUQpIHsKKyAgICAgICAgV2luZG93U2VydmVyQ29ubmVjdGlvbjo6c2luZ2xldG9u
KCkuYXBwbGljYXRpb25XaW5kb3dNb2RpZmljYXRpb25zU3RvcHBlZChmYWxzZSk7CisgICAgfTsK
KworICAgIHN0YXRpYyBhdXRvIHdpbmRvd01vZGlmaWNhdGlvbnNTdG9wcGVkID0gW10oQ0dTTm90
aWZpY2F0aW9uVHlwZSwgdm9pZCosIHVpbnQzMl90LCB2b2lkKiwgQ0dTQ29ubmVjdGlvbklEKSB7
CisgICAgICAgIFdpbmRvd1NlcnZlckNvbm5lY3Rpb246OnNpbmdsZXRvbigpLmFwcGxpY2F0aW9u
V2luZG93TW9kaWZpY2F0aW9uc1N0b3BwZWQodHJ1ZSk7CisgICAgfTsKKwogICAgIHN0YXRpYyBj
b25zdCBPY2NsdXNpb25Ob3RpZmljYXRpb25IYW5kbGVyIG9jY2x1c2lvbk5vdGlmaWNhdGlvbkhh
bmRsZXJzW10gPSB7Ci0gICAgICAgIHsgV0tPY2NsdXNpb25Ob3RpZmljYXRpb25UeXBlQXBwbGlj
YXRpb25XaW5kb3dNb2RpZmljYXRpb25zU3RhcnRlZCwgYXBwbGljYXRpb25XaW5kb3dNb2RpZmlj
YXRpb25zU3RhcnRlZCwgIkFwcGxpY2F0aW9uIFdpbmRvdyBNb2RpZmljYXRpb25zIFN0YXJ0ZWQi
IH0sCi0gICAgICAgIHsgV0tPY2NsdXNpb25Ob3RpZmljYXRpb25UeXBlQXBwbGljYXRpb25XaW5k
b3dNb2RpZmljYXRpb25zU3RvcHBlZCwgYXBwbGljYXRpb25XaW5kb3dNb2RpZmljYXRpb25zU3Rv
cHBlZCwgIkFwcGxpY2F0aW9uIFdpbmRvdyBNb2RpZmljYXRpb25zIFN0b3BwZWQiIH0sCisgICAg
ICAgIHsga0NHU0Nvbm5lY3Rpb25XaW5kb3dNb2RpZmljYXRpb25zU3RhcnRlZCwgd2luZG93TW9k
aWZpY2F0aW9uc1N0YXJ0ZWQsICJBcHBsaWNhdGlvbiBXaW5kb3cgTW9kaWZpY2F0aW9ucyBTdGFy
dGVkIiB9LAorICAgICAgICB7IGtDR1NDb25uZWN0aW9uV2luZG93TW9kaWZpY2F0aW9uc1N0b3Bw
ZWQsIHdpbmRvd01vZGlmaWNhdGlvbnNTdG9wcGVkLCAiQXBwbGljYXRpb24gV2luZG93IE1vZGlm
aWNhdGlvbnMgU3RvcHBlZCIgfSwKICAgICB9OwogCiAgICAgZm9yIChjb25zdCBhdXRvJiBvY2Ns
dXNpb25Ob3RpZmljYXRpb25IYW5kbGVyIDogb2NjbHVzaW9uTm90aWZpY2F0aW9uSGFuZGxlcnMp
IHsKLSAgICAgICAgYm9vbCByZXN1bHQgPSBXS1JlZ2lzdGVyT2NjbHVzaW9uTm90aWZpY2F0aW9u
SGFuZGxlcihvY2NsdXNpb25Ob3RpZmljYXRpb25IYW5kbGVyLm5vdGlmaWNhdGlvblR5cGUsIG9j
Y2x1c2lvbk5vdGlmaWNhdGlvbkhhbmRsZXIuaGFuZGxlcik7CisgICAgICAgIGJvb2wgcmVzdWx0
ID0gcmVnaXN0ZXJPY2NsdXNpb25Ob3RpZmljYXRpb25IYW5kbGVyKG9jY2x1c2lvbk5vdGlmaWNh
dGlvbkhhbmRsZXIubm90aWZpY2F0aW9uVHlwZSwgb2NjbHVzaW9uTm90aWZpY2F0aW9uSGFuZGxl
ci5oYW5kbGVyKTsKICAgICAgICAgVU5VU0VEX1BBUkFNKHJlc3VsdCk7CiAgICAgICAgIEFTU0VS
VF9XSVRIX01FU1NBR0UocmVzdWx0LCAiUmVnaXN0cmF0aW9uIG9mIFwiJXNcIiBub3RpZmljYXRp
b24gaGFuZGxlciBmYWlsZWQuXG4iLCBvY2NsdXNpb25Ob3RpZmljYXRpb25IYW5kbGVyLm5hbWUp
OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9tYWMvV2ViU3lzdGVtSW50ZXJmYWNlLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L21hYy9XZWJTeXN0ZW1JbnRlcmZhY2UubW0KaW5kZXggNDRkYzdlY2Iz
NjIwZThmNDUxNDJlYjM3Yzc4NzVhZGNiM2I5NDEyYi4uODNkZDgzZTQzNGRiZDM0OTUzNDNhZTcx
MDE5MjQ5MzJkOGZiYTUyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L21hYy9XZWJTeXN0ZW1JbnRlcmZhY2UubW0KKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJTeXN0ZW1JbnRlcmZhY2UubW0KQEAg
LTM3LDIxICszNywxMSBAQCB2b2lkIEluaXRXZWJDb3JlU3lzdGVtSW50ZXJmYWNlKHZvaWQpCiAg
ICAgCiAgICAgZGlzcGF0Y2hfb25jZSgmaW5pdE9uY2UsIF57CiAgICAgICAgIElOSVQoQ0FMYXll
ckVudW1lcmF0ZVJlY3RzQmVpbmdEcmF3bldpdGhCbG9jayk7Ci0gICAgICAgIElOSVQoQ0dQYXR0
ZXJuQ3JlYXRlV2l0aEltYWdlQW5kVHJhbnNmb3JtKTsKLSNpZiAhUExBVEZPUk0oSU9TKQotICAg
ICAgICBJTklUKENHQ29udGV4dERyYXdzV2l0aENvcnJlY3RTaGFkb3dPZmZzZXRzKTsKLSNlbmRp
ZgogICAgICAgICBJTklUKENvcHlDT05ORUNUUHJveHlSZXNwb25zZSk7CiAjaWYgIVBMQVRGT1JN
KElPUykKICAgICAgICAgSU5JVChEcmF3QmV6ZWxlZFRleHRBcmVhKTsKLSAgICAgICAgSU5JVChE
cmF3Rm9jdXNSaW5nKTsKLSAgICAgICAgSU5JVChEcmF3Rm9jdXNSaW5nQXRUaW1lKTsKLSAgICAg
ICAgSU5JVChEcmF3Q2VsbEZvY3VzUmluZ1dpdGhGcmFtZUF0VGltZSk7CiAgICAgICAgIElOSVQo
RHJhd01lZGlhU2xpZGVyVHJhY2spOwogICAgICAgICBJTklUKERyYXdNZWRpYVVJUGFydCk7Ci0j
ZW5kaWYKLSAgICAgICAgSU5JVChDR0NvbnRleHRJc1BERkNvbnRleHQpOwotI2lmICFQTEFURk9S
TShJT1MpCiAgICAgICAgIElOSVQoR2V0V2hlZWxFdmVudERlbHRhcyk7CiAgICAgICAgIElOSVQo
R2V0TlNFdmVudEtleUNoYXIpOwogICAgICAgICBJTklUKEhpdFRlc3RNZWRpYVVJUGFydCk7CkBA
IC03MSwxNiArNjEsMTEgQEAgdm9pZCBJbml0V2ViQ29yZVN5c3RlbUludGVyZmFjZSh2b2lkKQog
I2VuZGlmCiAgICAgICAgIElOSVQoU2V0Q09OTkVDVFByb3h5QXV0aG9yaXphdGlvbkZvclN0cmVh
bSk7CiAgICAgICAgIElOSVQoU2V0Q09OTkVDVFByb3h5Rm9yU3RyZWFtKTsKLSNpZiAhUExBVEZP
Uk0oSU9TKQotICAgICAgICBJTklUKFNldERyYWdJbWFnZSk7Ci0jZW5kaWYKIAogI2lmICFQTEFU
Rk9STShJT1MpCiAgICAgICAgIElOSVQoRXhlY3V0YWJsZVdhc0xpbmtlZE9uT3JCZWZvcmVTbm93
TGVvcGFyZCk7CiAgICAgICAgIElOSVQoQ29weURlZmF1bHRTZWFyY2hQcm92aWRlckRpc3BsYXlO
YW1lKTsKICAgICAgICAgSU5JVChDdXJzb3IpOwotICAgICAgICBJTklUKFdpbmRvd1NldFNjYWxl
ZEZyYW1lKTsKLSAgICAgICAgSU5JVChXaW5kb3dTZXRBbHBoYSk7CiAgICAgICAgIElOSVQoU3Bl
ZWNoU3ludGhlc2lzR2V0Vm9pY2VJZGVudGlmaWVycyk7CiAgICAgICAgIElOSVQoU3BlZWNoU3lu
dGhlc2lzR2V0RGVmYXVsdFZvaWNlSWRlbnRpZmllckZvckxvY2FsZSk7CiAgICAgICAgIElOSVQo
TlNFbGFzdGljRGVsdGFGb3JUaW1lRGVsdGEpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvQ2FyYm9uL0hJV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0Nh
cmJvbi9ISVdlYlZpZXcubW0KaW5kZXggMzQ1ODVjMjUyYzNiMThjYWNkNmUwN2FkNWU5NDQ4Nzc5
ZDhiZTQ1Ny4uYTlmNmVhZWQ3MjAzODg0NzNlZTM2YWEwMWRiMWQ5YjM0MzFkNmUwOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2FyYm9uL0hJV2ViVmlldy5tbQorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DYXJib24vSElXZWJWaWV3Lm1tCkBAIC04NSw2ICs4NSwy
MSBAQCAtIChpbnQpdGFnCiAKIEBlbmQKIAorQGludGVyZmFjZSBOU1dpbmRvd0dyYXBoaWNzQ29u
dGV4dCAoKQorLSAodm9pZClfd2ViX3NldEdyYXBoaWNzUG9ydDooQ0dDb250ZXh0UmVmKWNvbnRl
eHQ7CitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBOU1dpbmRvd0dyYXBoaWNzQ29udGV4dCAoKQor
CistICh2b2lkKV93ZWJfc2V0R3JhcGhpY3NQb3J0OihDR0NvbnRleHRSZWYpY29udGV4dAorewor
ICAgIENHQ29udGV4dFJldGFpbihjb250ZXh0KTsKKyAgICBDR0NvbnRleHRSZWxlYXNlKF9jZ3ND
b250ZXh0KTsKKyAgICBfY2dzQ29udGV4dCA9IGNvbnRleHQ7Cit9CisKK0BlbmQKKwogc3RydWN0
IEhJV2ViVmlldwogewogICAgIEhJVmlld1JlZgkJCQkJCQlmVmlld1JlZjsKQEAgLTI5MCw2ICsz
MDUsMjIgQEAgR2V0QmVoYXZpb3JzKCkKIAlyZXR1cm4ga0NvbnRyb2xTdXBwb3J0c0RhdGFBY2Nl
c3MgfCBrQ29udHJvbFN1cHBvcnRzR2V0UmVnaW9uIHwga0NvbnRyb2xHZXRzRm9jdXNPbkNsaWNr
OwogfQogCitzdGF0aWMgQ0dDb250ZXh0UmVmIG92ZXJyaWRlQ0dDb250ZXh0KE5TV2luZG93ICp3
aW5kb3csIENHQ29udGV4dFJlZiBjb250ZXh0KQoreworICAgIE5TV2luZG93R3JhcGhpY3NDb250
ZXh0ICpncmFwaGljc0NvbnRleHQgPSAoTlNXaW5kb3dHcmFwaGljc0NvbnRleHQgKilbd2luZG93
IGdyYXBoaWNzQ29udGV4dF07CisgICAgQ0dDb250ZXh0UmVmIHNhdmVkQ29udGV4dCA9IChDR0Nv
bnRleHRSZWYpW2dyYXBoaWNzQ29udGV4dCBncmFwaGljc1BvcnRdOworICAgIENHQ29udGV4dFJl
dGFpbihzYXZlZENvbnRleHQpOworICAgIFtncmFwaGljc0NvbnRleHQgX3dlYl9zZXRHcmFwaGlj
c1BvcnQ6Y29udGV4dF07CisgICAgcmV0dXJuIHNhdmVkQ29udGV4dDsKK30KKworc3RhdGljIHZv
aWQgcmVzdG9yZUNHQ29udGV4dChOU1dpbmRvdyAqd2luZG93LCBDR0NvbnRleHRSZWYgc2F2ZWRD
b250ZXh0KQoreworICAgIE5TV2luZG93R3JhcGhpY3NDb250ZXh0ICpncmFwaGljc0NvbnRleHQg
PSAoTlNXaW5kb3dHcmFwaGljc0NvbnRleHQgKilbd2luZG93IGdyYXBoaWNzQ29udGV4dF07Cisg
ICAgW2dyYXBoaWNzQ29udGV4dCBfd2ViX3NldEdyYXBoaWNzUG9ydDpzYXZlZENvbnRleHRdOwor
ICAgIENHQ29udGV4dFJlbGVhc2Uoc2F2ZWRDb250ZXh0KTsKK30KKwogLy8tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCiAvLyBEcmF3CiAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTMy
MSw3ICszNTIsNyBAQCBEcmF3KCBISVdlYlZpZXcqIGluVmlldywgUmduSGFuZGxlIGxpbWl0Umdu
LCBDR0NvbnRleHRSZWYgaW5Db250ZXh0ICkKIAogCUhJVmlld0dldEJvdW5kcyggaW5WaWV3LT5m
Vmlld1JlZiwgJmJvdW5kcyApOwogCi0gICAgQ0dDb250ZXh0UmVmIHNhdmVkQ29udGV4dCA9IFdL
TlNXaW5kb3dPdmVycmlkZUNHQ29udGV4dChpblZpZXctPmZLaXRXaW5kb3csIGluQ29udGV4dCk7
CisgICAgQ0dDb250ZXh0UmVmIHNhdmVkQ29udGV4dCA9IG92ZXJyaWRlQ0dDb250ZXh0KGluVmll
dy0+ZktpdFdpbmRvdywgaW5Db250ZXh0KTsKICAgICBbTlNHcmFwaGljc0NvbnRleHQgc2V0Q3Vy
cmVudENvbnRleHQ6W2luVmlldy0+ZktpdFdpbmRvdyBncmFwaGljc0NvbnRleHRdXTsKIAogCUdl
dFJlZ2lvbkJvdW5kcyggbGltaXRSZ24sICZkcmF3UmVjdCApOwpAQCAtMzUxLDcgKzM4Miw3IEBA
IERyYXcoIEhJV2ViVmlldyogaW5WaWV3LCBSZ25IYW5kbGUgbGltaXRSZ24sIENHQ29udGV4dFJl
ZiBpbkNvbnRleHQgKQogICAgIGVsc2UKICAgICAgICAgW2luVmlldy0+ZldlYlZpZXcgZGlzcGxh
eVJlY3Q6KihOU1JlY3QqKSZoaVJlY3RdOwogCi0gICAgV0tOU1dpbmRvd1Jlc3RvcmVDR0NvbnRl
eHQoaW5WaWV3LT5mS2l0V2luZG93LCBzYXZlZENvbnRleHQpOworICAgIHJlc3RvcmVDR0NvbnRl
eHQoaW5WaWV3LT5mS2l0V2luZG93LCBzYXZlZENvbnRleHQpOwogCiAgICAgaWYgKCAhaW5WaWV3
LT5mSXNDb21wb3NpdGVkICkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9QbHVnaW5zL0hvc3RlZC9XZWJIb3N0ZWROZXRzY2FwZVBsdWdpblZpZXcubW0gYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9XZWJIb3N0ZWROZXRzY2FwZVBsdWdp
blZpZXcubW0KaW5kZXggOWUyMDQ0ZTI2ZTEzOTAyMWViOGNhNjMzNjI1NWYyYzgzM2MxYjhiMi4u
Njk1YTVjZjUyNzM3M2QzMDlhODNiNjRkNmYxZDAxMDBlZDNhNDA4YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvV2ViSG9zdGVkTmV0c2NhcGVQbHVn
aW5WaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL1dl
Ykhvc3RlZE5ldHNjYXBlUGx1Z2luVmlldy5tbQpAQCAtNzYsNyArNzYsNyBAQCArICh2b2lkKWlu
aXRpYWxpemUKICAgICBXVEY6OmluaXRpYWxpemVNYWluVGhyZWFkVG9Qcm9jZXNzTWFpblRocmVh
ZCgpOwogICAgIFJ1bkxvb3A6OmluaXRpYWxpemVNYWluUnVuTG9vcCgpOwogI2VuZGlmCi0gICAg
V0tTZW5kVXNlckNoYW5nZU5vdGlmaWNhdGlvbnMoKTsKKyAgICBzZW5kVXNlckNoYW5nZU5vdGlm
aWNhdGlvbnMoKTsKIH0KIAogLSAoaWQpaW5pdFdpdGhGcmFtZTooTlNSZWN0KWZyYW1lCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYkJhc2VOZXRzY2FwZVBs
dWdpblZpZXcuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViQmFzZU5ldHNj
YXBlUGx1Z2luVmlldy5oCmluZGV4IGMyMjIzYWI2ZDI2NzUxZjM4YzM4OTU4MWJkMzQ5ZGU5ODE0
YzE1YjEuLmNkNDMwZDM2Njk3MWVjOWZlMmVhMGQ0NDA1OTNiNTgwYzljYTJlMjcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViQmFzZU5ldHNjYXBlUGx1Z2lu
Vmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViQmFzZU5ldHNj
YXBlUGx1Z2luVmlldy5oCkBAIC0xMzQsNiArMTM0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
bmFtZXNwYWNlIFdlYktpdCB7CiBib29sIGdldEF1dGhlbnRpY2F0aW9uSW5mbyhjb25zdCBjaGFy
KiBwcm90b2NvbFN0ciwgY29uc3QgY2hhciogaG9zdFN0ciwgaW50MzJfdCBwb3J0LCBjb25zdCBj
aGFyKiBzY2hlbWVTdHIsIGNvbnN0IGNoYXIqIHJlYWxtU3RyLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgV1RGOjpDU3RyaW5nJiB1c2VybmFtZSwgV1RGOjpDU3RyaW5nJiBwYXNzd29yZCk7
Cit2b2lkIHNlbmRVc2VyQ2hhbmdlTm90aWZpY2F0aW9ucygpOwogfSAKIAogI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYkJhc2VOZXRzY2FwZVBs
dWdpblZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYkJhc2VOZXRz
Y2FwZVBsdWdpblZpZXcubW0KaW5kZXggNjRkZTkwMTBlYmRiMGIwNjlkNmY4NjNhM2ZlZjJmZmQ3
YjVkNDMzOC4uYmUxYzMwYjNmMzA5ZGE2ODU1ZjNjZDFkMjdhYjQ3MDg5YWVkMmMzNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJCYXNlTmV0c2NhcGVQbHVn
aW5WaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViQmFzZU5l
dHNjYXBlUGx1Z2luVmlldy5tbQpAQCAtNTUsNiArNTUsNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9T
ZWN1cml0eU9yaWdpbi5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJDb3JlT2JqQ0V4dHJhcy5oPgog
I2ltcG9ydCA8V2ViS2l0TGVnYWN5L0RPTVByaXZhdGUuaD4KKyNpbXBvcnQgPHBhbC9zcGkvY2cv
Q29yZUdyYXBoaWNzU1BJLmg+CiAjaW1wb3J0IDxydW50aW1lL0luaXRpYWxpemVUaHJlYWRpbmcu
aD4KICNpbXBvcnQgPHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW1wb3J0IDx3dGYvTWFpblRocmVhZC5o
PgpAQCAtNzMsNyArNzQsNyBAQCArICh2b2lkKWluaXRpYWxpemUKICAgICBKU0M6OmluaXRpYWxp
emVUaHJlYWRpbmcoKTsKICAgICBXVEY6OmluaXRpYWxpemVNYWluVGhyZWFkVG9Qcm9jZXNzTWFp
blRocmVhZCgpOwogICAgIFJ1bkxvb3A6OmluaXRpYWxpemVNYWluUnVuTG9vcCgpOwotICAgIFdL
U2VuZFVzZXJDaGFuZ2VOb3RpZmljYXRpb25zKCk7CisgICAgV2ViS2l0OjpzZW5kVXNlckNoYW5n
ZU5vdGlmaWNhdGlvbnMoKTsKIH0KIAogLSAoaWQpaW5pdFdpdGhGcmFtZTooTlNSZWN0KWZyYW1l
CkBAIC05MDAsNiArOTAxLDIzIEBAIGJvb2wgZ2V0QXV0aGVudGljYXRpb25JbmZvKGNvbnN0IGNo
YXIqIHByb3RvY29sU3RyLCBjb25zdCBjaGFyKiBob3N0U3RyLCBpbnQzMl90CiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKK3ZvaWQgc2VuZFVzZXJDaGFuZ2VOb3RpZmljYXRpb25zKCkKK3sKKyAgICBh
dXRvIGNvbnNvbGVDb25uZWN0aW9uQ2hhbmdlTm90aWZ5UHJvYyA9IFtdKENHU05vdGlmaWNhdGlv
blR5cGUgdHlwZSwgQ0dTTm90aWZpY2F0aW9uRGF0YSwgQ0dTQnl0ZUNvdW50LCBDR1NOb3RpZmlj
YXRpb25BcmcpIHsKKyAgICAgICAgTlNTdHJpbmcgKm5vdGlmaWNhdGlvbk5hbWUgPSBuaWw7Cisg
ICAgICAgIGlmICh0eXBlID09IGtDR1Nlc3Npb25Db25zb2xlQ29ubmVjdCkKKyAgICAgICAgICAg
IG5vdGlmaWNhdGlvbk5hbWUgPSBMb2dpbldpbmRvd0RpZFN3aXRjaFRvVXNlck5vdGlmaWNhdGlv
bjsKKyAgICAgICAgZWxzZSBpZiAodHlwZSA9PSBrQ0dTZXNzaW9uQ29uc29sZURpc2Nvbm5lY3Qp
CisgICAgICAgICAgICBub3RpZmljYXRpb25OYW1lID0gTG9naW5XaW5kb3dEaWRTd2l0Y2hGcm9t
VXNlck5vdGlmaWNhdGlvbjsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisgICAgICAgIFtbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0g
cG9zdE5vdGlmaWNhdGlvbk5hbWU6bm90aWZpY2F0aW9uTmFtZSBvYmplY3Q6bmlsXTsKKyAgICB9
OworCisgICAgQ0dTUmVnaXN0ZXJOb3RpZnlQcm9jKGNvbnNvbGVDb25uZWN0aW9uQ2hhbmdlTm90
aWZ5UHJvYywga0NHU2Vzc2lvbkNvbnNvbGVDb25uZWN0LCBOVUxMKTsKKyAgICBDR1NSZWdpc3Rl
ck5vdGlmeVByb2MoY29uc29sZUNvbm5lY3Rpb25DaGFuZ2VOb3RpZnlQcm9jLCBrQ0dTZXNzaW9u
Q29uc29sZURpc2Nvbm5lY3QsIE5VTEwpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAog
I2VuZGlmIC8vICBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5WaWV3Lm1tIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblZpZXcubW0KaW5k
ZXggYzY4MGZmN2VlMzFjOTNiOGZiNDkyMjk3ZTRlN2FkOTE0MWE0ZGRlNC4uMmJiZDNkZWJlNjZl
MThkOGYzMTgwYzk0Y2ExMzM3ZmNmN2Q4ODE3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblZpZXcubW0KKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblZpZXcubW0KQEAgLTE5Myw3
ICsxOTMsNyBAQCArICh2b2lkKWluaXRpYWxpemUKICAgICBKU0M6OmluaXRpYWxpemVUaHJlYWRp
bmcoKTsKICAgICBXVEY6OmluaXRpYWxpemVNYWluVGhyZWFkVG9Qcm9jZXNzTWFpblRocmVhZCgp
OwogICAgIFJ1bkxvb3A6OmluaXRpYWxpemVNYWluUnVuTG9vcCgpOwotICAgIFdLU2VuZFVzZXJD
aGFuZ2VOb3RpZmljYXRpb25zKCk7CisgICAgc2VuZFVzZXJDaGFuZ2VOb3RpZmljYXRpb25zKCk7
CiB9CiAKIC8vIE1BUks6IEVWRU5UUwpAQCAtMzc5LDEwICszNzksMTAgQEAgLSAoUG9ydFN0YXRl
KXNhdmVBbmRTZXROZXdQb3J0U3RhdGVGb3JVcGRhdGU6KEJPT0wpZm9yVXBkYXRlCiAgICAgICAg
ICAgICBxZFBvcnRTdGF0ZS0+Y2xpcFJlZ2lvbiA9IGNsaXBSZWdpb247CiAKICAgICAgICAgICAg
IENHQ29udGV4dFJlZiBjdXJyZW50Q29udGV4dCA9IChDR0NvbnRleHRSZWYpW1tOU0dyYXBoaWNz
Q29udGV4dCBjdXJyZW50Q29udGV4dF0gZ3JhcGhpY3NQb3J0XTsKLSAgICAgICAgICAgIGlmIChj
dXJyZW50Q29udGV4dCAmJiBXS0NHQ29udGV4dElzQml0bWFwQ29udGV4dChjdXJyZW50Q29udGV4
dCkpIHsKLSAgICAgICAgICAgICAgICAvLyBXZSB1c2UgV0tDR0NvbnRleHRJc0JpdG1hcENvbnRl
eHQgaGVyZSwgYmVjYXVzZSBpZiB3ZSBqdXN0IGNhbGxlZCBDR0JpdG1hcENvbnRleHRHZXREYXRh
Ci0gICAgICAgICAgICAgICAgLy8gb24gYW55IGNvbnRleHQsIHdlJ2QgbG9nIHRvIHRoZSBjb25z
b2xlIGV2ZXJ5IHRpbWUuIEJ1dCBldmVuIGlmIFdLQ0dDb250ZXh0SXNCaXRtYXBDb250ZXh0Ci0g
ICAgICAgICAgICAgICAgLy8gcmV0dXJucyB0cnVlLCBpdCBzdGlsbCBtaWdodCBub3QgYmUgYSBj
b250ZXh0IHdlIG5lZWQgdG8gY3JlYXRlIGEgR1dvcmxkIGZvcjsgZm9yIGV4YW1wbGUKKyAgICAg
ICAgICAgIGlmIChjdXJyZW50Q29udGV4dCAmJiBDR0NvbnRleHRHZXRUeXBlKGN1cnJlbnRDb250
ZXh0KSA9PSBrQ0dDb250ZXh0VHlwZUJpdG1hcCkgeworICAgICAgICAgICAgICAgIC8vIFdlIGNo
ZWNrIGZvciBrQ0dDb250ZXh0VHlwZUJpdG1hcCBoZXJlLCBiZWNhdXNlIGlmIHdlIGp1c3QgY2Fs
bGVkIENHQml0bWFwQ29udGV4dEdldERhdGEKKyAgICAgICAgICAgICAgICAvLyBvbiBhbnkgY29u
dGV4dCwgd2UnZCBsb2cgdG8gdGhlIGNvbnNvbGUgZXZlcnkgdGltZS4gQnV0IGV2ZW4gaWYgY3Vy
cmVudENvbnRleHQgaXMgYQorICAgICAgICAgICAgICAgIC8vIGtDR0NvbnRleHRUeXBlQml0bWFw
LCBpdCBzdGlsbCBtaWdodCBub3QgYmUgYSBjb250ZXh0IHdlIG5lZWQgdG8gY3JlYXRlIGEgR1dv
cmxkIGZvcjsgZm9yIGV4YW1wbGUKICAgICAgICAgICAgICAgICAvLyB0cmFuc3BhcmVuY3kgbGF5
ZXJzIHdpbGwgcmV0dXJuIHRydWUsIGJ1dCByZXR1cm4gMCBmb3IgQ0dCaXRtYXBDb250ZXh0R2V0
RGF0YS4KICAgICAgICAgICAgICAgICB2b2lkKiBvZmZzY3JlZW5EYXRhID0gQ0dCaXRtYXBDb250
ZXh0R2V0RGF0YShjdXJyZW50Q29udGV4dCk7CiAgICAgICAgICAgICAgICAgaWYgKG9mZnNjcmVl
bkRhdGEpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYlN5c3RlbUludGVyZmFjZS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYlN5c3RlbUludGVyZmFjZS5tbQppbmRleCBkNDU1MTZmNWVlZTFjMDgyYzk4
MjhkOWU3NDc0ZWM5Njg5YzQ3YjU4Li45YmUwMDAyZmQ1M2Y0OTMzMzRlYjJjOTk5MzExZmE4Mzk0
MmY3ZTNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJTeXN0ZW1JbnRlcmZhY2UubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViU3lzdGVtSW50ZXJmYWNlLm1tCkBAIC00MywxNiArNDMsOSBAQCB2b2lk
IEluaXRXZWJDb3JlU3lzdGVtSW50ZXJmYWNlKHZvaWQpCiAgICAgICAgIHJldHVybjsKIAogICAg
IElOSVQoQ0FMYXllckVudW1lcmF0ZVJlY3RzQmVpbmdEcmF3bldpdGhCbG9jayk7Ci0gICAgSU5J
VChDR1BhdHRlcm5DcmVhdGVXaXRoSW1hZ2VBbmRUcmFuc2Zvcm0pOwotI2lmICFQTEFURk9STShJ
T1MpCi0gICAgSU5JVChDR0NvbnRleHREcmF3c1dpdGhDb3JyZWN0U2hhZG93T2Zmc2V0cyk7Ci0j
ZW5kaWYKICAgICBJTklUKENvcHlDT05ORUNUUHJveHlSZXNwb25zZSk7CiAjaWYgIVBMQVRGT1JN
KElPUykKICAgICBJTklUKERyYXdCZXplbGVkVGV4dEFyZWEpOwotICAgIElOSVQoRHJhd0ZvY3Vz
UmluZyk7Ci0gICAgSU5JVChEcmF3Rm9jdXNSaW5nQXRUaW1lKTsKLSAgICBJTklUKERyYXdDZWxs
Rm9jdXNSaW5nV2l0aEZyYW1lQXRUaW1lKTsKICAgICBJTklUKERyYXdNZWRpYVVJUGFydCk7CiAg
ICAgSU5JVChEcmF3TWVkaWFTbGlkZXJUcmFjayk7CiAgICAgSU5JVChHZXRXaGVlbEV2ZW50RGVs
dGFzKTsKQEAgLTYxLDE1ICs1NCw5IEBAIHZvaWQgSW5pdFdlYkNvcmVTeXN0ZW1JbnRlcmZhY2Uo
dm9pZCkKICAgICBJTklUKE1lYXN1cmVNZWRpYVVJUGFydCk7CiAgICAgSU5JVChDcmVhdGVNZWRp
YVVJQmFja2dyb3VuZFZpZXcpOwogICAgIElOSVQoQ3JlYXRlTWVkaWFVSUNvbnRyb2wpOwotICAg
IElOSVQoV2luZG93U2V0QWxwaGEpOwotICAgIElOSVQoV2luZG93U2V0U2NhbGVkRnJhbWUpOwog
I2VuZGlmCiAgICAgSU5JVChTZXRDT05ORUNUUHJveHlBdXRob3JpemF0aW9uRm9yU3RyZWFtKTsK
ICAgICBJTklUKFNldENPTk5FQ1RQcm94eUZvclN0cmVhbSk7Ci0jaWYgIVBMQVRGT1JNKElPUykK
LSAgICBJTklUKFNldERyYWdJbWFnZSk7Ci0jZW5kaWYKLSAgICBJTklUKENHQ29udGV4dElzUERG
Q29udGV4dCk7CiAjaWYgRU5BQkxFKFZJREVPKSAmJiAhUExBVEZPUk0oSU9TKQogICAgIElOSVQo
UVRJbmNsdWRlT25seU1vZGVybk1lZGlhRmlsZVR5cGVzKTsKICAgICBJTklUKFFUTW92aWVEaXNh
YmxlQ29tcG9uZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZp
ZXcvV2ViRnJhbWUubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1l
Lm1tCmluZGV4IGYwZjhlNjI4NTgwYjI5ZmUwNDdlZGRmNmViNDc1NzhjNmQwNWRkMmQuLmU3MDkz
Yzk2YWFjNDc0ZTNhZWU5ZTcyZDIzYjI0ZWIxYzU4OWEyZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQpAQCAtNTk4LDcgKzU5OCw3IEBAIC0gKFBhaW50
QmVoYXZpb3IpX3BhaW50QmVoYXZpb3JGb3JEZXN0aW5hdGlvbkNvbnRleHQ6KENHQ29udGV4dFJl
Ziljb250ZXh0CiAgICAgICAgIHJldHVybiBQYWludEJlaGF2aW9yRmxhdHRlbkNvbXBvc2l0aW5n
TGF5ZXJzIHwgUGFpbnRCZWhhdmlvclNuYXBzaG90dGluZzsKICNlbmRpZgogCi0gICAgaWYgKCFX
S0NHQ29udGV4dElzQml0bWFwQ29udGV4dChjb250ZXh0KSkKKyAgICBpZiAoQ0dDb250ZXh0R2V0
VHlwZShjb250ZXh0KSAhPSBrQ0dDb250ZXh0VHlwZUJpdG1hcCkKICAgICAgICAgcmV0dXJuIFBh
aW50QmVoYXZpb3JOb3JtYWw7CiAKICAgICAvLyBJZiB3ZSdyZSBkcmF3aW5nIGludG8gYSBiaXRt
YXAsIHdlIG1pZ2h0IGJlIHNuYXBzaG90dGluZywgb3IgZHJhd2luZyBpbnRvIGEgbGF5ZXItYmFj
a2VkIHZpZXcuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dl
YkZ1bGxTY3JlZW5Db250cm9sbGVyLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmll
dy9XZWJGdWxsU2NyZWVuQ29udHJvbGxlci5tbQppbmRleCBmZDhmYzU2OTk3YWZjYjZhZDdmOTBj
NWZjOTk4NGJhMzE3NjZlOTA3Li40MDUzZmZjODQ2NGEzNWJiODZhZmI2NjZlM2NlZTdlZGNhY2U1
ZWZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZ1bGxT
Y3JlZW5Db250cm9sbGVyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcv
V2ViRnVsbFNjcmVlbkNvbnRyb2xsZXIubW0KQEAgLTI0OSw2ICsyNDksMTYgQEAgLSAodm9pZCll
bnRlckZ1bGxTY3JlZW46KE5TU2NyZWVuICopc2NyZWVuCiAgICAgX2lzRW50ZXJpbmdGdWxsU2Ny
ZWVuID0gdHJ1ZTsKIH0KIAorc3RhdGljIHZvaWQgc2V0Q2xpcFJlY3RGb3JXaW5kb3coTlNXaW5k
b3cgKndpbmRvdywgTlNSZWN0IGNsaXBSZWN0KQoreworICAgIENHU1dpbmRvd0lEIHdpbmRvd051
bWJlciA9IChDR1NXaW5kb3dJRClbd2luZG93IHdpbmRvd051bWJlcl07CisgICAgQ0dTUmVnaW9u
T2JqIHNoYXBlOworICAgIENHUmVjdCBjZ0NsaXBSZWN0ID0gTlNSZWN0VG9DR1JlY3QoY2xpcFJl
Y3QpOworICAgIENHU05ld1JlZ2lvbldpdGhSZWN0KCZjZ0NsaXBSZWN0LCAmc2hhcGUpOworICAg
IENHU1NldFdpbmRvd0NsaXBTaGFwZShDR1NNYWluQ29ubmVjdGlvbklEKCksIHdpbmRvd051bWJl
ciwgc2hhcGUpOworICAgIENHU1JlbGVhc2VSZWdpb24oc2hhcGUpOworfQorCiAtICh2b2lkKWZp
bmlzaGVkRW50ZXJGdWxsU2NyZWVuQW5pbWF0aW9uOihib29sKWNvbXBsZXRlZAogewogICAgIGlm
ICghX2lzRW50ZXJpbmdGdWxsU2NyZWVuKQpAQCAtMjYzLDcgKzI3Myw3IEBAIC0gKHZvaWQpZmlu
aXNoZWRFbnRlckZ1bGxTY3JlZW5BbmltYXRpb246KGJvb2wpY29tcGxldGVkCiAgICAgICAgIAog
ICAgICAgICBOU1JlY3Qgd2luZG93Qm91bmRzID0gW1tzZWxmIHdpbmRvd10gZnJhbWVdOwogICAg
ICAgICB3aW5kb3dCb3VuZHMub3JpZ2luID0gTlNaZXJvUG9pbnQ7Ci0gICAgICAgIFdLV2luZG93
U2V0Q2xpcFJlY3QoW3NlbGYgd2luZG93XSwgd2luZG93Qm91bmRzKTsKKyAgICAgICAgc2V0Q2xp
cFJlY3RGb3JXaW5kb3coW3NlbGYgd2luZG93XSwgd2luZG93Qm91bmRzKTsKICAgICAgICAgCiAg
ICAgICAgIE5TV2luZG93ICp3ZWJXaW5kb3cgPSBbX3dlYlZpZXdQbGFjZWhvbGRlci5nZXQoKSB3
aW5kb3ddOwogICAgICAgICAvLyBJbiBMaW9uLCBOU1dpbmRvdyB3aWxsIGFuaW1hdGUgaW50byBh
bmQgb3V0IG9mIG9yZGVyT3V0IG9wZXJhdGlvbnMuIFN1cHByZXNzIHRoYXQKQEAgLTM1Myw3ICsz
NjMsNyBAQCAtICh2b2lkKWZpbmlzaGVkRXhpdEZ1bGxTY3JlZW5BbmltYXRpb246KGJvb2wpY29t
cGxldGVkCiAgICAgCiAgICAgTlNSZWN0IHdpbmRvd0JvdW5kcyA9IFtbc2VsZiB3aW5kb3ddIGZy
YW1lXTsKICAgICB3aW5kb3dCb3VuZHMub3JpZ2luID0gTlNaZXJvUG9pbnQ7Ci0gICAgV0tXaW5k
b3dTZXRDbGlwUmVjdChbc2VsZiB3aW5kb3ddLCB3aW5kb3dCb3VuZHMpOworICAgIHNldENsaXBS
ZWN0Rm9yV2luZG93KFtzZWxmIHdpbmRvd10sIHdpbmRvd0JvdW5kcyk7CiAgICAgCiAgICAgW1tz
ZWxmIHdpbmRvd10gb3JkZXJPdXQ6c2VsZl07CiAgICAgW1tzZWxmIHdpbmRvd10gc2V0RnJhbWU6
TlNaZXJvUmVjdCBkaXNwbGF5OllFU107CkBAIC00ODQsMTMgKzQ5NCwxMyBAQCAtICh2b2lkKV9z
dGFydEVudGVyRnVsbFNjcmVlbkFuaW1hdGlvbldpdGhEdXJhdGlvbjooTlNUaW1lSW50ZXJ2YWwp
ZHVyYXRpb24KICAgICBbX3NjYWxlQW5pbWF0aW9uLmdldCgpIHNldEN1cnJlbnRQcm9ncmVzczow
XTsKICAgICBbX3NjYWxlQW5pbWF0aW9uLmdldCgpIHN0YXJ0QW5pbWF0aW9uXTsKICAgICAKLSAg
ICAvLyBXS1dpbmRvd1NldENsaXBSZWN0IHRha2VzIHdpbmRvdyBjb29yZGluYXRlcywgc28gY29u
dmVydCBmcm9tIHNjcmVlbiBjb29yZGluYXRlcyBoZXJlOgorICAgIC8vIHNldENsaXBSZWN0Rm9y
V2luZG93IHRha2VzIHdpbmRvdyBjb29yZGluYXRlcywgc28gY29udmVydCBmcm9tIHNjcmVlbiBj
b29yZGluYXRlcyBoZXJlOgogICAgIE5TUmVjdCBmaW5hbEJvdW5kcyA9IF9maW5hbEZyYW1lOwog
I3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHB1c2gKICNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBp
Z25vcmVkICItV2RlcHJlY2F0ZWQtZGVjbGFyYXRpb25zIgogICAgIGZpbmFsQm91bmRzLm9yaWdp
biA9IFtbc2VsZiB3aW5kb3ddIGNvbnZlcnRTY3JlZW5Ub0Jhc2U6ZmluYWxCb3VuZHMub3JpZ2lu
XTsKICNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwb3AKLSAgICBXS1dpbmRvd1NldENsaXBSZWN0
KFtzZWxmIHdpbmRvd10sIGZpbmFsQm91bmRzKTsKKyAgICBzZXRDbGlwUmVjdEZvcldpbmRvdyhb
c2VsZiB3aW5kb3ddLCBmaW5hbEJvdW5kcyk7CiAgICAgCiAgICAgW1tzZWxmIHdpbmRvd10gbWFr
ZUtleUFuZE9yZGVyRnJvbnQ6c2VsZl07CiAgICAgCkBAIC01NTYsMTMgKzU2NiwxMyBAQCAtICh2
b2lkKV9zdGFydEV4aXRGdWxsU2NyZWVuQW5pbWF0aW9uV2l0aER1cmF0aW9uOihOU1RpbWVJbnRl
cnZhbClkdXJhdGlvbgogICAgIAogICAgIFtfYmFja2dyb3VuZFdpbmRvdy5nZXQoKSBvcmRlcldp
bmRvdzpOU1dpbmRvd0JlbG93IHJlbGF0aXZlVG86W1tzZWxmIHdpbmRvd10gd2luZG93TnVtYmVy
XV07CiAgICAgCi0gICAgLy8gV0tXaW5kb3dTZXRDbGlwUmVjdCB0YWtlcyB3aW5kb3cgY29vcmRp
bmF0ZXMsIHNvIGNvbnZlcnQgZnJvbSBzY3JlZW4gY29vcmRpbmF0ZXMgaGVyZToKKyAgICAvLyBz
ZXRDbGlwUmVjdEZvcldpbmRvdyB0YWtlcyB3aW5kb3cgY29vcmRpbmF0ZXMsIHNvIGNvbnZlcnQg
ZnJvbSBzY3JlZW4gY29vcmRpbmF0ZXMgaGVyZToKICAgICBOU1JlY3QgZmluYWxCb3VuZHMgPSBf
ZmluYWxGcmFtZTsKICNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwdXNoCiAjcHJhZ21hIGNsYW5n
IGRpYWdub3N0aWMgaWdub3JlZCAiLVdkZXByZWNhdGVkLWRlY2xhcmF0aW9ucyIKICAgICBmaW5h
bEJvdW5kcy5vcmlnaW4gPSBbW3NlbGYgd2luZG93XSBjb252ZXJ0U2NyZWVuVG9CYXNlOmZpbmFs
Qm91bmRzLm9yaWdpbl07CiAjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcG9wCi0gICAgV0tXaW5k
b3dTZXRDbGlwUmVjdChbc2VsZiB3aW5kb3ddLCBmaW5hbEJvdW5kcyk7CisgICAgc2V0Q2xpcFJl
Y3RGb3JXaW5kb3coW3NlbGYgd2luZG93XSwgZmluYWxCb3VuZHMpOwogICAgIAogICAgIFtbc2Vs
ZiB3aW5kb3ddIHNldEF1dG9kaXNwbGF5OllFU107CiAgICAgW1tzZWxmIHdpbmRvd10gZGlzcGxh
eUlmTmVlZGVkXTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>319550</attachid>
            <date>2017-08-31 17:28:05 -0700</date>
            <delta_ts>2017-08-31 17:40:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-176200-20170831172804.patch</filename>
            <type>text/plain</type>
            <size>60482</size>
            <attacher name="Andy Estes">aestes</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIxMzgxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzVhYmE3NzU1NjhiNjgz
ZmZjOWVjZWE4MzhlNWFmOGRlMTVjOTY4Ni4uNmFhZDZiNmQxYzY3MzhkNGZkMTQwM2U4YjlhYjJj
MDZmZGEzM2M0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBACisyMDE3LTA4LTMxICBBbmR5
IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29jb2FdIFVwc3RyZWFtIENv
cmVHcmFwaGljcy1yZWxhdGVkIFdlYktpdFN5c3RlbUludGVyZmFjZSBmdW5jdGlvbnMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NjIwMAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NDb250ZXh0Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2VTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OnN1YnNhbXBsaW5n
TGV2ZWxGb3JTY2FsZUZhY3Rvcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3Jh
cGhpY3NDb250ZXh0Q0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0Ojpj
bGlwT3V0KToKKyAgICAgICAgKFdlYkNvcmU6OmFwcGx5U2hhZG93T2Zmc2V0V29ya2Fyb3VuZElm
TmVlZGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9QYXR0ZXJuQ0cuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UGF0dGVybjo6Y3JlYXRlUGxhdGZvcm1QYXR0ZXJuIGNvbnN0KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRDb2NvYS5t
bToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6Zm9jdXNSaW5nQ29sb3IpOgor
ICAgICAgICAoV2ViQ29yZTo6ZHJhd0ZvY3VzUmluZ0F0VGltZSk6CisgICAgICAgIChXZWJDb3Jl
OjpkcmF3Rm9jdXNSaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OmRyYXdGb2N1c1JpbmdUb0NvbnRl
eHQpOgorICAgICAgICAoV2ViQ29yZTo6ZHJhd0ZvY3VzUmluZ1RvQ29udGV4dEF0VGltZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vaW9zL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2VJT1MubW06CisgICAg
ICAgICogcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpm
bGlwSW1hZ2VTcGVjKToKKyAgICAgICAgKFdlYkNvcmU6OnNldERyYWdJbWFnZUltcGwpOgorICAg
ICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6c2V0RHJhZ0ltYWdlKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9tYWMvUGxhdGZvcm1FdmVudEZhY3RvcnlNYWMubW06CisgICAgICAgICogcGxhdGZvcm0v
bWFjL1Njcm9sbGJhclRoZW1lTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6bGluZW5CYWNrZ3Jv
dW5kQ29sb3IpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9UaGVtZU1hYy5tbToKKyAgICAgICAg
KFdlYkNvcmU6OmRyYXdDZWxsRm9jdXNSaW5nV2l0aEZyYW1lQXRUaW1lKToKKyAgICAgICAgKFdl
YkNvcmU6OmRyYXdDZWxsRm9jdXNSaW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvV2ViQ29y
ZVN5c3RlbUludGVyZmFjZS5oOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9XZWJDb3JlU3lzdGVt
SW50ZXJmYWNlLm1tOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9XZWJXaW5kb3dBbmltYXRpb24u
bW06CisgICAgICAgIChmbGlwUmVjdCk6CisgICAgICAgIChtYWluV2luZG93U2VydmVyQ29ubmVj
dGlvbklEKToKKyAgICAgICAgKHNldFNjYWxlZEZyYW1lRm9yV2luZG93KToKKyAgICAgICAgKC1b
V2ViV2luZG93U2NhbGVBbmltYXRpb24gc2V0Q3VycmVudFByb2dyZXNzOl0pOgorICAgICAgICAo
LVtXZWJXaW5kb3dGYWRlQW5pbWF0aW9uIHNldEN1cnJlbnRQcm9ncmVzczpdKToKKwogMjAxNy0w
OC0zMCAgQW5keSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+CiAKICAgICAgICAgW01hY10gVXBz
dHJlYW0gQWNjZXNzaWJpbGl0eS1yZWxhdGVkIFdlYktpdFN5c3RlbUludGVyZmFjZSBmdW5jdGlv
bnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
Q29yZS9QQUwvQ2hhbmdlTG9nCmluZGV4IDdiNGI2MDFmZTRlNWUxNTBmODE4OTc0NDU3YzY5ZWVi
OWI2MDEzNTEuLjYyN2UzZjM4ZmI0NDUyNGRiZTA5NDNjYzdkNGVjMjljMTg3ZTc2MzkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUv
UEFML0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDE3LTA4LTMxICBBbmR5IEVzdGVzICA8
YWVzdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29jb2FdIFVwc3RyZWFtIENvcmVHcmFwaGlj
cy1yZWxhdGVkIFdlYktpdFN5c3RlbUludGVyZmFjZSBmdW5jdGlvbnMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NjIwMAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogUEFMLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2o6CisgICAgICAgICogcGFsL3NwaS9jZy9Db3JlR3JhcGhpY3NTUEkuaDoKKyAgICAg
ICAgKiBwYWwvc3BpL21hYy9ISVNlcnZpY2VzU1BJLmg6CisgICAgICAgICogcGFsL3NwaS9tYWMv
TlNHcmFwaGljc1NQSS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9t
YWMvSElTZXJ2aWNlc1NQSS5oLgorCiAyMDE3LTA4LTMwICBBbmR5IEVzdGVzICA8YWVzdGVzQGFw
cGxlLmNvbT4KIAogICAgICAgICBbTWFjXSBVcHN0cmVhbSBBY2Nlc3NpYmlsaXR5LXJlbGF0ZWQg
V2ViS2l0U3lzdGVtSW50ZXJmYWNlIGZ1bmN0aW9ucwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBhODY2NmYzMzg1MzQx
ZDM1NmQ3YTBjNzEzMWVhMmFmZjY4MTRhNjhiLi4yMTVkMmY3ZDg0ZmUwZWNlYmNjOTRhN2QxMTZm
N2YxYTYyNTYxZDA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDE3LTA4LTMxICBBbmR5
IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29jb2FdIFVwc3RyZWFtIENv
cmVHcmFwaGljcy1yZWxhdGVkIFdlYktpdFN5c3RlbUludGVyZmFjZSBmdW5jdGlvbnMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NjIwMAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogUGx1Z2luUHJvY2Vz
cy9tYWMvUGx1Z2luUHJvY2Vzc01hYy5tbToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJvY2Vz
czo6cGxhdGZvcm1Jbml0aWFsaXplUHJvY2Vzcyk6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9X
aW5kb3dTZXJ2ZXJDb25uZWN0aW9uLmg6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9XaW5kb3dT
ZXJ2ZXJDb25uZWN0aW9uLm1tOgorICAgICAgICAoV2ViS2l0OjpyZWdpc3Rlck9jY2x1c2lvbk5v
dGlmaWNhdGlvbkhhbmRsZXIpOgorICAgICAgICAoV2ViS2l0OjpXaW5kb3dTZXJ2ZXJDb25uZWN0
aW9uOjpXaW5kb3dTZXJ2ZXJDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2luZG93U2Vy
dmVyQ29ubmVjdGlvbjo6YXBwbGljYXRpb25XaW5kb3dNb2RpZmljYXRpb25zU3RhcnRlZCk6IERl
bGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViU3lzdGVt
SW50ZXJmYWNlLm1tOgorICAgICAgICAoSW5pdFdlYkNvcmVTeXN0ZW1JbnRlcmZhY2UpOgorCiAy
MDE3LTA4LTMwICBBbmR5IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KIAogICAgICAgICBbTWFj
XSBVcHN0cmVhbSBBY2Nlc3NpYmlsaXR5LXJlbGF0ZWQgV2ViS2l0U3lzdGVtSW50ZXJmYWNlIGZ1
bmN0aW9ucwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4IGJkZjVkMzhhZTdlNWI3NjE0
MDliM2QxMDU0ZDg0MzgzODY4OWZiZGEuLjRkMzE2OTQxYjM2ZjllMzMyM2MzODI5NjgzNDcyNWMw
Njc4OTAwMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNCBAQAor
MjAxNy0wOC0zMSAgQW5keSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+CisKKyAgICAgICAgW0Nv
Y29hXSBVcHN0cmVhbSBDb3JlR3JhcGhpY3MtcmVsYXRlZCBXZWJLaXRTeXN0ZW1JbnRlcmZhY2Ug
ZnVuY3Rpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNzYyMDAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIENhcmJvbi9ISVdlYlZpZXcubW06CisgICAgICAgICgtW05TV2luZG93R3JhcGhpY3NDb250
ZXh0IF93ZWJfc2V0R3JhcGhpY3NQb3J0Ol0pOgorICAgICAgICAob3ZlcnJpZGVDR0NvbnRleHQp
OgorICAgICAgICAocmVzdG9yZUNHQ29udGV4dCk6CisgICAgICAgIChEcmF3KToKKyAgICAgICAg
KiBQbHVnaW5zL0hvc3RlZC9XZWJIb3N0ZWROZXRzY2FwZVBsdWdpblZpZXcubW06CisgICAgICAg
ICgrW1dlYkhvc3RlZE5ldHNjYXBlUGx1Z2luVmlldyBpbml0aWFsaXplXSk6CisgICAgICAgICog
UGx1Z2lucy9XZWJCYXNlTmV0c2NhcGVQbHVnaW5WaWV3Lmg6CisgICAgICAgICogUGx1Z2lucy9X
ZWJCYXNlTmV0c2NhcGVQbHVnaW5WaWV3Lm1tOgorICAgICAgICAoV2ViS2l0OjpzZW5kVXNlckNo
YW5nZU5vdGlmaWNhdGlvbnMpOgorICAgICAgICAqIFBsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5W
aWV3Lm1tOgorICAgICAgICAoK1tXZWJOZXRzY2FwZVBsdWdpblZpZXcgaW5pdGlhbGl6ZV0pOgor
ICAgICAgICAoLVtXZWJOZXRzY2FwZVBsdWdpblZpZXcgc2F2ZUFuZFNldE5ld1BvcnRTdGF0ZUZv
clVwZGF0ZTpdKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJTeXN0ZW1JbnRlcmZhY2Uu
bW06CisgICAgICAgIChJbml0V2ViQ29yZVN5c3RlbUludGVyZmFjZSk6CisgICAgICAgICogV2Vi
Vmlldy9XZWJGcmFtZS5tbToKKyAgICAgICAgKC1bV2ViRnJhbWUgX3BhaW50QmVoYXZpb3JGb3JE
ZXN0aW5hdGlvbkNvbnRleHQ6XSk6CisgICAgICAgICogV2ViVmlldy9XZWJGdWxsU2NyZWVuQ29u
dHJvbGxlci5tbToKKyAgICAgICAgKHNldENsaXBSZWN0Rm9yV2luZG93KToKKyAgICAgICAgKC1b
V2ViRnVsbFNjcmVlbkNvbnRyb2xsZXIgZmluaXNoZWRFbnRlckZ1bGxTY3JlZW5BbmltYXRpb246
XSk6CisgICAgICAgICgtW1dlYkZ1bGxTY3JlZW5Db250cm9sbGVyIGZpbmlzaGVkRXhpdEZ1bGxT
Y3JlZW5BbmltYXRpb246XSk6CisgICAgICAgICgtW1dlYkZ1bGxTY3JlZW5Db250cm9sbGVyIF9z
dGFydEVudGVyRnVsbFNjcmVlbkFuaW1hdGlvbldpdGhEdXJhdGlvbjpdKToKKyAgICAgICAgKC1b
V2ViRnVsbFNjcmVlbkNvbnRyb2xsZXIgX3N0YXJ0RXhpdEZ1bGxTY3JlZW5BbmltYXRpb25XaXRo
RHVyYXRpb246XSk6CisKIDIwMTctMDgtMzAgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29t
PgogCiAgICAgICAgIFtNYWNdIFVwc3RyZWFtIEFjY2Vzc2liaWxpdHktcmVsYXRlZCBXZWJLaXRT
eXN0ZW1JbnRlcmZhY2UgZnVuY3Rpb25zCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwv
UEFMLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9QQUwvUEFMLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZDk4NThmOWVlMmI0MWYwMDU5MzcxYWU5MGNi
MmJmZGRkYTNkMGI4OC4uNjFkOWUzNDZkMGNiNjAzYWQyOWY2MzVkZmUzNTE4ZWZlYmM0ODM3NiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML1BBTC54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9QQUwueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agpAQCAtMTAxLDYgKzEwMSw3IEBACiAJCUExMDI2NTg5MUY1Njc0N0EwMEI0Qzg0NCAvKiBISVRv
b2xib3hTUEkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEExMDI2NTg4MUY1Njc0N0EwMEI0Qzg0NCAvKiBISVRvb2xib3hTUEkuaCAqLzsgfTsKIAkJQTEw
MjY1OEIxRjU2NzQ4QzAwQjRDODQ0IC8qIFF1aWNrRHJhd1NQSS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTEwMjY1OEExRjU2NzQ4QzAwQjRDODQ0IC8q
IFF1aWNrRHJhd1NQSS5oICovOyB9OwogCQlBMTAyNjU4RTFGNTY3RTlEMDBCNEM4NDQgLyogSElT
ZXJ2aWNlc1NQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQTEwMjY1OEQxRjU2N0U5RDAwQjRDODQ0IC8qIEhJU2VydmljZXNTUEkuaCAqLzsgfTsKKwkJ
QTEwODI2RkUxRjU4QTQzMzAwNDc3MkFDIC8qIE5TR3JhcGhpY3NTUEkuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExMDgyNkZEMUY1OEE0MzMwMDQ3NzJB
QyAvKiBOU0dyYXBoaWNzU1BJLmggKi87IH07CiAJCUExRjU1RENGMUY1NTI4RUMwMEVEQjc1RiAv
KiBNZXRhZGF0YVNQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQTFGNTVEQ0UxRjU1MjhFQzAwRURCNzVGIC8qIE1ldGFkYXRhU1BJLmggKi87IH07CiAJ
CUEzMEQ0MTIxMUYwREQwRUEwMEI3MTk1NCAvKiBLaWxsUmluZy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTMwRDQxMUUxRjBERDBFQTAwQjcxOTU0IC8q
IEtpbGxSaW5nLmggKi87IH07CiAJCUEzMEQ0MTIyMUYwREQwRUEwMEI3MTk1NCAvKiBLaWxsUmlu
Z05vbmUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QTMwRDQxMUYxRjBERDBFQTAwQjcxOTU0IC8qIEtpbGxSaW5nTm9uZS5jcHAgKi87IH07CkBAIC0y
MTcsNiArMjE4LDcgQEAKIAkJQTEwMjY1ODgxRjU2NzQ3QTAwQjRDODQ0IC8qIEhJVG9vbGJveFNQ
SS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBISVRvb2xib3hTUEkuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTEwMjY1OEExRjU2NzQ4QzAwQjRDODQ0IC8qIFF1
aWNrRHJhd1NQSS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBRdWlja0RyYXdT
UEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTEwMjY1OEQxRjU2N0U5RDAwQjRD
ODQ0IC8qIEhJU2VydmljZXNTUEkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSElTZXJ2aWNlc1NQSS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBMTA4MjZGRDFGNThBNDMzMDA0NzcyQUMgLyog
TlNHcmFwaGljc1NQSS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOU0dyYXBoaWNzU1BJLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUExRjU1RENFMUY1NTI4RUMwMEVEQjc1RiAvKiBNZXRhZGF0
YVNQSS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBNZXRhZGF0YVNQSS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlBMzBENDExRTFGMEREMEVBMDBCNzE5NTQgLyogS2lsbFJpbmcuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gS2lsbFJpbmcuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQTMwRDQxMUYxRjBERDBFQTAwQjcxOTU0IC8qIEtpbGxSaW5nTm9uZS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBLaWxsUmluZ05vbmUuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzQ5LDYgKzM1MSw3IEBACiAJCQkJMEM3Nzg1
NzUxRjQ1MTMwRjAwRjRFQkI2IC8qIE5TQXBwbGljYXRpb25TUEkuaCAqLywKIAkJCQkwQzc3ODU3
NjFGNDUxMzBGMDBGNEVCQjYgLyogTlNFdmVudFNQSS5oICovLAogCQkJCTBDNzc4NTc3MUY0NTEz
MEYwMEY0RUJCNiAvKiBOU0ZvbnRTUEkuaCAqLywKKwkJCQlBMTA4MjZGRDFGNThBNDMzMDA0Nzcy
QUMgLyogTlNHcmFwaGljc1NQSS5oICovLAogCQkJCTBDNzc4NTc4MUY0NTEzMEYwMEY0RUJCNiAv
KiBOU0ltbWVkaWF0ZUFjdGlvbkdlc3R1cmVSZWNvZ25pemVyU1BJLmggKi8sCiAJCQkJMEM3Nzg1
NzkxRjQ1MTMwRjAwRjRFQkI2IC8qIE5TTWVudVNQSS5oICovLAogCQkJCTBDNzc4NTdBMUY0NTEz
MEYwMEY0RUJCNiAvKiBOU1Bhc3RlYm9hcmRTUEkuaCAqLywKQEAgLTU0Miw2ICs1NDUsNyBAQAog
CQkJCTBDMkRBMTRFMUYzQkVCNDkwMERCQzMxNyAvKiBOU0V4dGVuc2lvblNQSS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMEMyREExNEYxRjNCRUI0OTAwREJDMzE3IC8qIE5TRmlsZU1hbmFnZXJTUEku
aCBpbiBIZWFkZXJzICovLAogCQkJCTBDNzc4NTkwMUY0NTEzMEYwMEY0RUJCNiAvKiBOU0ZvbnRT
UEkuaCBpbiBIZWFkZXJzICovLAorCQkJCUExMDgyNkZFMUY1OEE0MzMwMDQ3NzJBQyAvKiBOU0dy
YXBoaWNzU1BJLmggaW4gSGVhZGVycyAqLywKIAkJCQkwQzc3ODU5MTFGNDUxMzBGMDBGNEVCQjYg
LyogTlNJbW1lZGlhdGVBY3Rpb25HZXN0dXJlUmVjb2duaXplclNQSS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMEM3Nzg1OTIxRjQ1MTMwRjAwRjRFQkI2IC8qIE5TTWVudVNQSS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMEM3Nzg1OTMxRjQ1MTMwRjAwRjRFQkI2IC8qIE5TUGFzdGVib2FyZFNQSS5oIGlu
IEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jZy9D
b3JlR3JhcGhpY3NTUEkuaCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NnL0NvcmVHcmFw
aGljc1NQSS5oCmluZGV4IDdjMjkxYzkxNGQ2OWY1NmQ4NmRiYjRhODgxZmIyMzE4OWM1YTVhNWMu
LjNhM2QwNjY5OGZkOGEyZDY1ZjZiNTM3N2M1NjRiYTQzNjY5ZmVkMWQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NnL0NvcmVHcmFwaGljc1NQSS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NnL0NvcmVHcmFwaGljc1NQSS5oCkBAIC0xNTAsOCArMTUw
LDI1IEBAIGVudW0gewogdHlwZWRlZiB1aW50MzJfdCBDR1NXaW5kb3dDYXB0dXJlT3B0aW9uczsK
ICNlbmRpZgogCit0eXBlZGVmIENGX0VOVU0odWludDMyX3QsIENHU05vdGlmaWNhdGlvblR5cGUp
IHsKKyAgICBrQ0dTRmlyc3RDb25uZWN0aW9uTm90aWZpY2F0aW9uID0gOTAwLAorICAgIGtDR1NG
aXJzdFNlc3Npb25Ob3RpZmljYXRpb24gPSAxNTAwLAorfTsKKworc3RhdGljIGNvbnN0IENHU05v
dGlmaWNhdGlvblR5cGUga0NHU2Vzc2lvbkNvbnNvbGVDb25uZWN0ID0ga0NHU0ZpcnN0U2Vzc2lv
bk5vdGlmaWNhdGlvbjsKK3N0YXRpYyBjb25zdCBDR1NOb3RpZmljYXRpb25UeXBlIGtDR1Nlc3Np
b25Db25zb2xlRGlzY29ubmVjdCA9IChDR1NOb3RpZmljYXRpb25UeXBlKShrQ0dTZXNzaW9uQ29u
c29sZUNvbm5lY3QgKyAxKTsKK3N0YXRpYyBjb25zdCBDR1NOb3RpZmljYXRpb25UeXBlIGtDR1ND
b25uZWN0aW9uV2luZG93TW9kaWZpY2F0aW9uc1N0YXJ0ZWQgPSAoQ0dTTm90aWZpY2F0aW9uVHlw
ZSkoa0NHU0ZpcnN0Q29ubmVjdGlvbk5vdGlmaWNhdGlvbiArIDYpOworc3RhdGljIGNvbnN0IENH
U05vdGlmaWNhdGlvblR5cGUga0NHU0Nvbm5lY3Rpb25XaW5kb3dNb2RpZmljYXRpb25zU3RvcHBl
ZCA9IChDR1NOb3RpZmljYXRpb25UeXBlKShrQ0dTRmlyc3RDb25uZWN0aW9uTm90aWZpY2F0aW9u
ICsgNyk7CisKICNlbmRpZiAvLyBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQogCit0eXBlZGVmIHN0
cnVjdCBDRl9CUklER0VEX1RZUEUoaWQpIENHU1JlZ2lvbk9iamVjdCogQ0dTUmVnaW9uT2JqOwor
dHlwZWRlZiB2b2lkKiBDR1NOb3RpZmljYXRpb25Bcmc7Cit0eXBlZGVmIHZvaWQqIENHU05vdGlm
aWNhdGlvbkRhdGE7Cit0eXBlZGVmIHVpbnQzMl90IENHU0J5dGVDb3VudDsKK3R5cGVkZWYgdm9p
ZCAoKkNHU05vdGlmeVByb2NQdHIpKENHU05vdGlmaWNhdGlvblR5cGUsIHZvaWQqIGRhdGEsIHVp
bnQzMl90IGRhdGFfbGVuZ3RoLCB2b2lkKiBhcmcpOwordHlwZWRlZiB2b2lkICgqQ0dTTm90aWZ5
Q29ubmVjdGlvblByb2NQdHIpKENHU05vdGlmaWNhdGlvblR5cGUsIHZvaWQqIGRhdGEsIHVpbnQz
Ml90IGRhdGFfbGVuZ3RoLCB2b2lkKiBhcmcsIENHU0Nvbm5lY3Rpb25JRCk7CisKIFdURl9FWFRF
Uk5fQ19CRUdJTgogCiBDR0NvbG9yUmVmIENHQ29sb3JUcmFuc2Zvcm1Db252ZXJ0Q29sb3IoQ0dD
b2xvclRyYW5zZm9ybVJlZiwgQ0dDb2xvclJlZiwgQ0dDb2xvclJlbmRlcmluZ0ludGVudCk7CkBA
IC0yMjUsNCArMjQyLDEyIEBAIENHRXJyb3IgQ0dTR2V0U2NyZWVuUmVjdEZvcldpbmRvdyhDR1ND
b25uZWN0aW9uSUQsIENHU1dpbmRvd0lELCBDR1JlY3QgKik7CiBib29sIENvbG9yU3luY1Byb2Zp
bGVJc1dpZGVHYW11dChDb2xvclN5bmNQcm9maWxlUmVmKTsKICNlbmRpZgogCitDR1N0eWxlUmVm
IENHU3R5bGVDcmVhdGVGb2N1c1JpbmdXaXRoQ29sb3IoY29uc3QgQ0dGb2N1c1JpbmdTdHlsZSos
IENHQ29sb3JSZWYpOworQ0dFcnJvciBDR1NSZWdpc3Rlck5vdGlmeVByb2MoQ0dTTm90aWZ5UHJv
Y1B0ciwgQ0dTTm90aWZpY2F0aW9uVHlwZSwgdm9pZCogYXJnKTsKK0NHUGF0dGVyblJlZiBDR1Bh
dHRlcm5DcmVhdGVXaXRoSW1hZ2UyKENHSW1hZ2VSZWYsIENHQWZmaW5lVHJhbnNmb3JtLCBDR1Bh
dHRlcm5UaWxpbmcpOworYm9vbCBDR0NvbnRleHREcmF3c1dpdGhDb3JyZWN0U2hhZG93T2Zmc2V0
cyhDR0NvbnRleHRSZWYpOworQ0dFcnJvciBDR1NSZWdpc3RlckNvbm5lY3Rpb25Ob3RpZnlQcm9j
KENHU0Nvbm5lY3Rpb25JRCwgQ0dTTm90aWZ5Q29ubmVjdGlvblByb2NQdHIsIENHU05vdGlmaWNh
dGlvblR5cGUsIHZvaWQqIGFyZyk7CitDR0Vycm9yIENHU1BhY2thZ2VzRW5hYmxlQ29ubmVjdGlv
bk9jY2x1c2lvbk5vdGlmaWNhdGlvbnMoQ0dTQ29ubmVjdGlvbklELCBib29sIGZsYWcsIGJvb2wq
IG91dEN1cnJlbnRWaXNpYmlsaXR5U3RhdGUpOworQ0dFcnJvciBDR1NQYWNrYWdlc0VuYWJsZUNv
bm5lY3Rpb25XaW5kb3dNb2RpZmljYXRpb25Ob3RpZmljYXRpb25zKENHU0Nvbm5lY3Rpb25JRCwg
Ym9vbCBmbGFnLCBib29sKiBvdXRDb25uZWN0aW9uSXNDdXJyZW50bHlJZGxlKTsKKwogV1RGX0VY
VEVSTl9DX0VORApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvbWFjL0hJ
U2VydmljZXNTUEkuaCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL21hYy9ISVNlcnZpY2Vz
U1BJLmgKaW5kZXggOWYzNWRjZDRkMDNhNTdhMDg2YjBhMzY1ZGZiMzlkZGZmY2M4MTk4NS4uNjgz
YWJhMWE5NWU4Yjg3NGU2ZGZmNDQ4YWEwNDE3MWM1MTJmZDVjMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvUEFML3BhbC9zcGkvbWFjL0hJU2VydmljZXNTUEkuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9QQUwvcGFsL3NwaS9tYWMvSElTZXJ2aWNlc1NQSS5oCkBAIC0yOCw5ICsyOCwzMSBAQAog
I2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCiAKICNpbmNsdWRlIDxISVNlcnZpY2VzL0FYVGV4
dE1hcmtlci5oPgorI2luY2x1ZGUgPEhJU2VydmljZXMvQ29yZURyYWcuaD4KKworI2Vsc2UKKwor
ZW51bSB7CisgICAga0NvcmVEcmFnSW1hZ2VTcGVjVmVyc2lvbk9uZSA9IDEsCit9OworCitzdHJ1
Y3QgQ29yZURyYWdJbWFnZVNwZWMgeworICAgIFVJbnQzMiB2ZXJzaW9uOworICAgIFNJbnQzMiBw
aXhlbHNXaWRlOworICAgIFNJbnQzMiBwaXhlbHNIaWdoOworICAgIFNJbnQzMiBiaXRzUGVyU2Ft
cGxlOworICAgIFNJbnQzMiBzYW1wbGVzUGVyUGl4ZWw7CisgICAgU0ludDMyIGJpdHNQZXJQaXhl
bDsKKyAgICBTSW50MzIgYnl0ZXNQZXJSb3c7CisgICAgQm9vbGVhbiBpc1BsYW5hcjsKKyAgICBC
b29sZWFuIGhhc0FscGhhOworICAgIGNvbnN0IFVJbnQ4KiBkYXRhWzVdOworfTsKIAogI2VuZGlm
CiAKK3R5cGVkZWYgc3RydWN0IENvcmVEcmFnSW1hZ2VTcGVjIENvcmVEcmFnSW1hZ2VTcGVjOwor
dHlwZWRlZiBzdHJ1Y3QgT3BhcXVlQ29yZURyYWcqIENvcmVEcmFnUmVmOwogdHlwZWRlZiBjb25z
dCBzdHJ1Y3QgX19BWFRleHRNYXJrZXIgKkFYVGV4dE1hcmtlclJlZjsKIHR5cGVkZWYgY29uc3Qg
c3RydWN0IF9fQVhUZXh0TWFya2VyUmFuZ2UgKkFYVGV4dE1hcmtlclJhbmdlUmVmOwogCkBAIC00
NCw1ICs2Niw2IEBAIGNvbnN0IFVJbnQ4KiBBWFRleHRNYXJrZXJHZXRCeXRlUHRyKEFYVGV4dE1h
cmtlclJlZik7CiBBWFRleHRNYXJrZXJSYW5nZVJlZiBBWFRleHRNYXJrZXJSYW5nZUNyZWF0ZShD
RkFsbG9jYXRvclJlZiwgQVhUZXh0TWFya2VyUmVmIHN0YXJ0TWFya2VyLCBBWFRleHRNYXJrZXJS
ZWYgZW5kTWFya2VyKTsKIEFYVGV4dE1hcmtlclJlZiBBWFRleHRNYXJrZXJSYW5nZUNvcHlTdGFy
dE1hcmtlcihBWFRleHRNYXJrZXJSYW5nZVJlZik7CiBBWFRleHRNYXJrZXJSZWYgQVhUZXh0TWFy
a2VyUmFuZ2VDb3B5RW5kTWFya2VyKEFYVGV4dE1hcmtlclJhbmdlUmVmKTsKK0NvcmVEcmFnUmVm
IENvcmVEcmFnR2V0Q3VycmVudERyYWcoKTsKIAogV1RGX0VYVEVSTl9DX0VORApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvbWFjL05TR3JhcGhpY3NTUEkuaCBiL1NvdXJj
ZS9XZWJDb3JlL1BBTC9wYWwvc3BpL21hYy9OU0dyYXBoaWNzU1BJLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzVl
Y2IxNDA3M2NmYmNiNDVmOWVjNGIwNzcwZjlhZTJkZGQ2M2Q3ZgotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL21hYy9OU0dyYXBoaWNzU1BJLmgKQEAgLTAsMCAr
MSwzOCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgVVNFKEFQUExFX0lOVEVS
TkFMX1NESykKKworI2luY2x1ZGUgPEFwcEtpdC9OU0dyYXBoaWNzX1ByaXZhdGUuaD4KKworI2Vu
ZGlmCisKK1dURl9FWFRFUk5fQ19CRUdJTgorCitCT09MIE5TSW5pdGlhbGl6ZUNHRm9jdXNSaW5n
U3R5bGVGb3JUaW1lKE5TRm9jdXNSaW5nUGxhY2VtZW50LCBDR0ZvY3VzUmluZ1N0eWxlKiwgTlNU
aW1lSW50ZXJ2YWwpOworCitXVEZfRVhURVJOX0NfRU5ECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCmluZGV4IDE4YWNkZGJlN2VmZmZh
NDI5ZDE4NTc4MzlhYjZlNjY3NDY2YTNkODUuLmMxNGIyYTU1ZTZhYTdmOTBkMjAwM2M0NjY4NDM0
MzIyZTA4NTQ1OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzQ29udGV4dC5oCkBAIC00NDUsNiArNDQ1LDcgQEAgcHVibGljOgogI2lmIFBMQVRG
T1JNKE1BQykKICAgICB2b2lkIGRyYXdGb2N1c1JpbmcoY29uc3QgUGF0aCYsIGRvdWJsZSB0aW1l
T2Zmc2V0LCBib29sJiBuZWVkc1JlZHJhdyk7CiAgICAgdm9pZCBkcmF3Rm9jdXNSaW5nKGNvbnN0
IFZlY3RvcjxGbG9hdFJlY3Q+JiwgZG91YmxlIHRpbWVPZmZzZXQsIGJvb2wmIG5lZWRzUmVkcmF3
KTsKKyAgICBzdGF0aWMgQ0dDb2xvclJlZiBmb2N1c1JpbmdDb2xvcigpOwogI2VuZGlmCiAKICAg
ICB2b2lkIHNldExpbmVDYXAoTGluZUNhcCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAKaW5kZXggNjY5NmM5NjBhNTg3NWYwNDMxNzI5YjEx
OWFiNmIyNDEyN2Q3YTVjYS4uMDIyOGUzOTI5YTI2NmVhOTczMmJiYThlZTYwNTczZmE1MDlhMzUw
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3Vy
Y2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNl
LmNwcApAQCAtMTg0LDcgKzE4NCw3IEBAIFN1YnNhbXBsaW5nTGV2ZWwgSW1hZ2VTb3VyY2U6OnN1
YnNhbXBsaW5nTGV2ZWxGb3JTY2FsZUZhY3RvcihHcmFwaGljc0NvbnRleHQmIGNvCiB7CiAjaWYg
VVNFKENHKQogICAgIC8vIE5ldmVyIHVzZSBzdWJzYW1wbGVkIGltYWdlcyBmb3IgZHJhd2luZyBp
bnRvIFBERiBjb250ZXh0cy4KLSAgICBpZiAod2tDR0NvbnRleHRJc1BERkNvbnRleHQoY29udGV4
dC5wbGF0Zm9ybUNvbnRleHQoKSkpCisgICAgaWYgKENHQ29udGV4dEdldFR5cGUoY29udGV4dC5w
bGF0Zm9ybUNvbnRleHQoKSkgPT0ga0NHQ29udGV4dFR5cGVQREYpCiAgICAgICAgIHJldHVybiBT
dWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0OwogCiAgICAgZmxvYXQgc2NhbGUgPSBzdGQ6Om1pbihm
bG9hdCgxKSwgc3RkOjptYXgoc2NhbGVGYWN0b3Iud2lkdGgoKSwgc2NhbGVGYWN0b3IuaGVpZ2h0
KCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dy
YXBoaWNzQ29udGV4dENHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L0dyYXBoaWNzQ29udGV4dENHLmNwcAppbmRleCBkNTg4MzlhZTU4YmI1MTBkNTA3ZDQ2NWIwNjE5
MmUwMjBiYWQ1YWJkLi4zNzg4YmMyNDE0MjRmNTQ2N2VmMWEyMWEyNmVjZmZhNGU4M2NhMDBjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0Nv
bnRleHRDRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3Jh
cGhpY3NDb250ZXh0Q0cuY3BwCkBAIC05ODcsNyArOTg3LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRl
eHQ6OmNsaXBPdXQoY29uc3QgRmxvYXRSZWN0JiByZWN0KQogICAgIC8vIGhhcyBjZXJ0YWluIHRy
YW5zZm9ybXMgdGhhdCBhcmVuJ3QganVzdCBhIHRyYW5zbGF0aW9uIG9yIGEgc2NhbGUuIEFuZCBk
dWUgdG8gPHJkYXI6Ly9wcm9ibGVtLzE0NjM0NDUzPgogICAgIC8vIHdlIGNhbm5vdCB1c2UgaXQg
aW4gZm9yIGEgcHJpbnRpbmcgY29udGV4dCBlaXRoZXIuCiAgICAgY29uc3QgQWZmaW5lVHJhbnNm
b3JtJiBjdG0gPSBnZXRDVE0oKTsKLSAgICBib29sIGNhblVzZUNHUmVjdEluZmluaXRlID0gIXdr
Q0dDb250ZXh0SXNQREZDb250ZXh0KHBsYXRmb3JtQ29udGV4dCgpKSAmJiAoIWlzQWNjZWxlcmF0
ZWRDb250ZXh0KCkgfHwgKCFjdG0uYigpICYmICFjdG0uYygpKSk7CisgICAgYm9vbCBjYW5Vc2VD
R1JlY3RJbmZpbml0ZSA9IENHQ29udGV4dEdldFR5cGUocGxhdGZvcm1Db250ZXh0KCkpICE9IGtD
R0NvbnRleHRUeXBlUERGICYmICghaXNBY2NlbGVyYXRlZENvbnRleHQoKSB8fCAoIWN0bS5iKCkg
JiYgIWN0bS5jKCkpKTsKICAgICBDR1JlY3QgcmVjdHNbMl0gPSB7IGNhblVzZUNHUmVjdEluZmlu
aXRlID8gQ0dSZWN0SW5maW5pdGUgOiBDR0NvbnRleHRHZXRDbGlwQm91bmRpbmdCb3gocGxhdGZv
cm1Db250ZXh0KCkpLCByZWN0IH07CiAgICAgQ0dDb250ZXh0QmVnaW5QYXRoKHBsYXRmb3JtQ29u
dGV4dCgpKTsKICAgICBDR0NvbnRleHRBZGRSZWN0cyhwbGF0Zm9ybUNvbnRleHQoKSwgcmVjdHMs
IDIpOwpAQCAtMTA5Myw3ICsxMDkzLDcgQEAgc3RhdGljIHZvaWQgYXBwbHlTaGFkb3dPZmZzZXRX
b3JrYXJvdW5kSWZOZWVkZWQoY29uc3QgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LAogICAgIGlm
IChjb250ZXh0LmlzQWNjZWxlcmF0ZWRDb250ZXh0KCkpCiAgICAgICAgIHJldHVybjsKIAotICAg
IGlmICh3a0NHQ29udGV4dERyYXdzV2l0aENvcnJlY3RTaGFkb3dPZmZzZXRzKGNvbnRleHQucGxh
dGZvcm1Db250ZXh0KCkpKQorICAgIGlmIChDR0NvbnRleHREcmF3c1dpdGhDb3JyZWN0U2hhZG93
T2Zmc2V0cyhjb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpKSkKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgLy8gV29yayBhcm91bmQgPHJkYXI6Ly9wcm9ibGVtLzU1MzkzODg+IGJ5IGVuc3VyaW5nIHRo
YXQgdGhlIG9mZnNldHMgd2lsbCBnZXQgdHJ1bmNhdGVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QYXR0ZXJuQ0cuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGF0dGVybkNHLmNwcAppbmRleCA5OGU2OWRlOGVkODlhMjRl
ODg2YTE0MmEwODM5NTllMmM3MjEzNWYwLi5kMGUyMWM4NzNhYTJkYzMwYzUzY2M4YmFiNGY4YjA0
MTQzNDAwMDk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9QYXR0ZXJuQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L1BhdHRlcm5DRy5jcHAKQEAgLTMxLDggKzMxLDggQEAKIAogI2luY2x1ZGUgIkFmZmluZVRyYW5z
Zm9ybS5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgotCiAjaW5jbHVkZSA8Q29yZUdy
YXBoaWNzL0NvcmVHcmFwaGljcy5oPgorI2luY2x1ZGUgPHBhbC9zcGkvY2cvQ29yZUdyYXBoaWNz
U1BJLmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KIAogI2lmIFBMQVRGT1JNKENPQ09B
KQpAQCAtNzQsNyArNzQsNyBAQCBDR1BhdHRlcm5SZWYgUGF0dGVybjo6Y3JlYXRlUGxhdGZvcm1Q
YXR0ZXJuKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdXNlclNwYWNlVHJhbgogICAgIC8vIElmIHdl
J3JlIHJlcGVhdGluZyBpbiBib3RoIGRpcmVjdGlvbnMsIHdlIGNhbiB1c2UgaW1hZ2UtYmFja2Vk
IHBhdHRlcm5zCiAgICAgLy8gaW5zdGVhZCBvZiBjdXN0b20gcGF0dGVybnMsIGFuZCBhdm9pZCB0
aWxpbmctZWRnZSBwaXhlbCBjcmFja3MuCiAgICAgaWYgKG1fcmVwZWF0WCAmJiBtX3JlcGVhdFkp
Ci0gICAgICAgIHJldHVybiB3a0NHUGF0dGVybkNyZWF0ZVdpdGhJbWFnZUFuZFRyYW5zZm9ybSh0
aWxlSW1hZ2UoKS5uYXRpdmVJbWFnZSgpLmdldCgpLCBwYXR0ZXJuVHJhbnNmb3JtLCB3a1BhdHRl
cm5UaWxpbmdDb25zdGFudFNwYWNpbmcpOworICAgICAgICByZXR1cm4gQ0dQYXR0ZXJuQ3JlYXRl
V2l0aEltYWdlMih0aWxlSW1hZ2UoKS5uYXRpdmVJbWFnZSgpLmdldCgpLCBwYXR0ZXJuVHJhbnNm
b3JtLCBrQ0dQYXR0ZXJuVGlsaW5nQ29uc3RhbnRTcGFjaW5nKTsKIAogICAgIC8vIElmIEZMVF9N
QVggc2hvdWxkIGFsc28gYmUgdXNlZCBmb3IgeFN0ZXAgb3IgeVN0ZXAsIG5vdGhpbmcgaXMgcmVu
ZGVyZWQuIFVzaW5nIGZyYWN0aW9ucyBvZiBGTFRfTUFYIGFsc28KICAgICAvLyByZXN1bHQgaW4g
bm90aGluZyBiZWluZyByZW5kZXJlZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dENvY29hLm1tIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0Q29jb2EubW0KaW5kZXgg
NjdmNGRlYjE3MmI2YzBmZTIzYzFiMWQxZmIwOWVhYjhhZGFlMTMxYi4uNDVkNzczOWQ2NDZkNzhh
MTdlN2Q3MjE4OWQyZDdjYzMxMWRjYzdjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0Q29jb2EubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0Q29jb2EubW0K
QEAgLTI5LDEwICsyOSwxMyBAQAogI2ltcG9ydCAiR3JhcGhpY3NDb250ZXh0Q0cuaCIKICNpbXBv
cnQgIkdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZUNHLmgiCiAjaW1wb3J0ICJJbnRSZWN0
LmgiCisjaW1wb3J0IDxwYWwvc3BpL2NnL0NvcmVHcmFwaGljc1NQSS5oPgorI2ltcG9ydCA8cGFs
L3NwaS9tYWMvTlNHcmFwaGljc1NQSS5oPgorI2ltcG9ydCA8d3RmL1N0ZExpYkV4dHJhcy5oPgor
CiAjaWYgVVNFKEFQUEtJVCkKICNpbXBvcnQgPEFwcEtpdC9BcHBLaXQuaD4KICNlbmRpZgotI2lt
cG9ydCA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCiAjaWYgUExBVEZPUk0oSU9TKQogI2ltcG9ydCAi
Q29sb3IuaCIKQEAgLTQzLDcgKzQ2LDYgQEAKICNpZiAhUExBVEZPUk0oSU9TKQogI2ltcG9ydCAi
TG9jYWxDdXJyZW50R3JhcGhpY3NDb250ZXh0LmgiCiAjZW5kaWYKLSNpbXBvcnQgIldlYkNvcmVT
eXN0ZW1JbnRlcmZhY2UuaCIKIAogQGNsYXNzIE5TQ29sb3I7CiAKQEAgLTU3LDExICs1OSw0NyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAvLyBleGNlcHRpb25zIGZvciB0aG9zZS4KIAogI2lmICFQ
TEFURk9STShJT1MpCitDR0NvbG9yUmVmIEdyYXBoaWNzQ29udGV4dDo6Zm9jdXNSaW5nQ29sb3Io
KQoreworICAgIHN0YXRpYyBDR0NvbG9yUmVmIGNvbG9yOworICAgIGlmICghY29sb3IpIHsKKyAg
ICAgICAgQ0dGbG9hdCBjb2xvckNvbXBvbmVudHNbXSA9IHsgMC41LCAwLjc1LCAxLjAsIDEuMCB9
OworICAgICAgICBhdXRvIGNvbG9yU3BhY2UgPSBhZG9wdENGKENHQ29sb3JTcGFjZUNyZWF0ZVdp
dGhOYW1lKGtDR0NvbG9yU3BhY2VTUkdCKSk7CisgICAgICAgIGNvbG9yID0gQ0dDb2xvckNyZWF0
ZShjb2xvclNwYWNlLmdldCgpLCBjb2xvckNvbXBvbmVudHMpOworICAgIH0KKyAgICByZXR1cm4g
Y29sb3I7Cit9CisKK3N0YXRpYyBib29sIGRyYXdGb2N1c1JpbmdBdFRpbWUoQ0dDb250ZXh0UmVm
IGNvbnRleHQsIE5TVGltZUludGVydmFsIHRpbWVPZmZzZXQpCit7CisgICAgQ0dGb2N1c1JpbmdT
dHlsZSBmb2N1c1JpbmdTdHlsZTsKKyAgICBCT09MIG5lZWRzUmVwYWludCA9IE5TSW5pdGlhbGl6
ZUNHRm9jdXNSaW5nU3R5bGVGb3JUaW1lKE5TRm9jdXNSaW5nT25seSwgJmZvY3VzUmluZ1N0eWxl
LCB0aW1lT2Zmc2V0KTsKKworICAgIC8vIFdlIHdhbnQgdG8gcmVzcGVjdCB0aGUgQ0dDb250ZXh0
IGNsaXBwaW5nIGFuZCBhbHNvIG5vdCBvdmVycGFpbnQgYW55CisgICAgLy8gZXhpc3RpbmcgZm9j
dXMgcmluZy4gVGhlIHdheSB0byBkbyB0aGlzIGlzIHNldCBhY2N1bXVsYXRlIHRvCisgICAgLy8g
LTEuIEFjY29yZGluZyB0byBDb3JlR3JhcGhpY3MsIHRoZSByZWFzb25pbmcgZm9yIHRoaXMgYmVo
YXZpb3IgaGFzIGJlZW4KKyAgICAvLyBsb3N0IGluIHRpbWUuCisgICAgZm9jdXNSaW5nU3R5bGUu
YWNjdW11bGF0ZSA9IC0xOworICAgIGF1dG8gc3R5bGUgPSBhZG9wdENGKENHU3R5bGVDcmVhdGVG
b2N1c1JpbmdXaXRoQ29sb3IoJmZvY3VzUmluZ1N0eWxlLCBHcmFwaGljc0NvbnRleHQ6OmZvY3Vz
UmluZ0NvbG9yKCkpKTsKKworICAgIENHQ29udGV4dFNhdmVHU3RhdGUoY29udGV4dCk7CisgICAg
Q0dDb250ZXh0U2V0U3R5bGUoY29udGV4dCwgc3R5bGUuZ2V0KCkpOworICAgIENHQ29udGV4dEZp
bGxQYXRoKGNvbnRleHQpOworICAgIENHQ29udGV4dFJlc3RvcmVHU3RhdGUoY29udGV4dCk7CisK
KyAgICByZXR1cm4gbmVlZHNSZXBhaW50OworfQorCitzdGF0aWMgdm9pZCBkcmF3Rm9jdXNSaW5n
KENHQ29udGV4dFJlZiBjb250ZXh0KQoreworICAgIGRyYXdGb2N1c1JpbmdBdFRpbWUoY29udGV4
dCwgREJMX01BWCk7Cit9CisKIHN0YXRpYyB2b2lkIGRyYXdGb2N1c1JpbmdUb0NvbnRleHQoQ0dD
b250ZXh0UmVmIGNvbnRleHQsIENHUGF0aFJlZiBmb2N1c1JpbmdQYXRoKQogewogICAgIENHQ29u
dGV4dEJlZ2luUGF0aChjb250ZXh0KTsKICAgICBDR0NvbnRleHRBZGRQYXRoKGNvbnRleHQsIGZv
Y3VzUmluZ1BhdGgpOwotICAgIHdrRHJhd0ZvY3VzUmluZyhjb250ZXh0LCBudWxscHRyLCAwKTsK
KyAgICBkcmF3Rm9jdXNSaW5nKGNvbnRleHQpOwogfQogCiBzdGF0aWMgYm9vbCBkcmF3Rm9jdXNS
aW5nVG9Db250ZXh0QXRUaW1lKENHQ29udGV4dFJlZiBjb250ZXh0LCBDR1BhdGhSZWYgZm9jdXNS
aW5nUGF0aCwgZG91YmxlIHRpbWVPZmZzZXQpCkBAIC02OSw3ICsxMDcsNyBAQCBzdGF0aWMgYm9v
bCBkcmF3Rm9jdXNSaW5nVG9Db250ZXh0QXRUaW1lKENHQ29udGV4dFJlZiBjb250ZXh0LCBDR1Bh
dGhSZWYgZm9jdXNSaQogICAgIFVOVVNFRF9QQVJBTSh0aW1lT2Zmc2V0KTsKICAgICBDR0NvbnRl
eHRCZWdpblBhdGgoY29udGV4dCk7CiAgICAgQ0dDb250ZXh0QWRkUGF0aChjb250ZXh0LCBmb2N1
c1JpbmdQYXRoKTsKLSAgICByZXR1cm4gd2tEcmF3Rm9jdXNSaW5nQXRUaW1lKGNvbnRleHQsIHN0
ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6bWF4KCkpOworICAgIHJldHVybiBkcmF3Rm9jdXNS
aW5nQXRUaW1lKGNvbnRleHQsIHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6bWF4KCkpOwog
fQogI2VuZGlmIC8vICFQTEFURk9STShJT1MpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2lvcy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlSU9TLm1tIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW9zL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2VJT1MubW0KaW5kZXggMDlhMTgy
ODE0ZDE0MDEzYjdjODhlOGVlYmYwM2Q5YWUwY2ZhMjg2OS4uNzU3ZDA0NWY1YzU4NTQ0NDk2ZjJk
ZDY5MDUwYmQxYWY4NjhjMmVkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW9zL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2VJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW9zL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2VJT1MubW0KQEAgLTI3LDEwICsyNyw4IEBA
CiAjaW1wb3J0ICJXZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmgiCiAKIFdFQkNPUkVfRVhQT1JUIHZv
aWQgKCp3a0NBTGF5ZXJFbnVtZXJhdGVSZWN0c0JlaW5nRHJhd25XaXRoQmxvY2spKENBTGF5ZXIg
KiwgQ0dDb250ZXh0UmVmIGNvbnRleHQsIHZvaWQgKF5ibG9jaykoQ0dSZWN0IHJlY3QpKTsKLVdF
QkNPUkVfRVhQT1JUIENHUGF0dGVyblJlZiAoKndrQ0dQYXR0ZXJuQ3JlYXRlV2l0aEltYWdlQW5k
VHJhbnNmb3JtKShDR0ltYWdlUmVmLCBDR0FmZmluZVRyYW5zZm9ybSwgaW50KTsKIFdFQkNPUkVf
RVhQT1JUIHZvaWQgKCp3a0NsZWFyR2x5cGhWZWN0b3IpKHZvaWQqIGdseXBocyk7CiBXRUJDT1JF
X0VYUE9SVCBPU1N0YXR1cyAoKndrQ29udmVydENoYXJUb0dseXBocykodm9pZCogc3R5bGVHcm91
cCwgY29uc3QgVW5pQ2hhciosIHVuc2lnbmVkIG51bUNoYXJhY3RlcnMsIHZvaWQqIGdseXBocyk7
Ci1XRUJDT1JFX0VYUE9SVCBib29sICgqd2tDR0NvbnRleHRJc1BERkNvbnRleHQpKENHQ29udGV4
dFJlZik7CiBXRUJDT1JFX0VYUE9SVCBpZCAoKndrQ3JlYXRlTlNVUkxDb25uZWN0aW9uRGVsZWdh
dGVQcm94eSkodm9pZCk7CiBXRUJDT1JFX0VYUE9SVCB2b2lkICgqd2tTZXRDT05ORUNUUHJveHlG
b3JTdHJlYW0pKENGUmVhZFN0cmVhbVJlZiwgQ0ZTdHJpbmdSZWYgcHJveHlIb3N0LCBDRk51bWJl
clJlZiBwcm94eVBvcnQpOwogV0VCQ09SRV9FWFBPUlQgdm9pZCAoKndrU2V0Q09OTkVDVFByb3h5
QXV0aG9yaXphdGlvbkZvclN0cmVhbSkoQ0ZSZWFkU3RyZWFtUmVmLCBDRlN0cmluZ1JlZiBwcm94
eUF1dGhvcml6YXRpb25TdHJpbmcpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFz
dGVib2FyZE1hYy5tbQppbmRleCAyMGU2MzVjMDkwNWFlODk2YzdiYjU0MjFjODU2YjIxYjJhNDQ2
YjQ5Li45NGY4MGU5YTU0MmUyNjFhMzVlMGEwYmEwYmNlNDE2YWI2ZjU5MmM2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbQpAQCAtNTIsNiArNTIsNyBA
QAogI2ltcG9ydCAiV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oIgogI2ltcG9ydCAiV2ViTlNBdHRy
aWJ1dGVkU3RyaW5nRXh0cmFzLmgiCiAjaW1wb3J0ICJtYXJrdXAuaCIKKyNpbXBvcnQgPHBhbC9z
cGkvbWFjL0hJU2VydmljZXNTUEkuaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbXBv
cnQgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIu
aD4KQEAgLTY2OSw2ICs2NzAsODAgQEAgVmVjdG9yPFN0cmluZz4gUGFzdGVib2FyZDo6cmVhZEZp
bGVuYW1lcygpCiB9CiAKICNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQorc3RhdGljIHZvaWQgZmxp
cEltYWdlU3BlYyhDb3JlRHJhZ0ltYWdlU3BlYyogaW1hZ2VTcGVjKQoreworICAgIHVuc2lnbmVk
IGNoYXIqIHRlbXBSb3cgPSAodW5zaWduZWQgY2hhciopZmFzdE1hbGxvYyhpbWFnZVNwZWMtPmJ5
dGVzUGVyUm93KTsKKyAgICBpbnQgcGxhbmVzID0gaW1hZ2VTcGVjLT5pc1BsYW5hciA/IGltYWdl
U3BlYy0+c2FtcGxlc1BlclBpeGVsIDogMTsKKworICAgIGZvciAoaW50IHAgPSAwOyBwIDwgcGxh
bmVzOyBwKyspIHsKKyAgICAgICAgdW5zaWduZWQgY2hhciogdG9wUm93ID0gKHVuc2lnbmVkIGNo
YXIqKWltYWdlU3BlYy0+ZGF0YVtwXTsKKyAgICAgICAgdW5zaWduZWQgY2hhciogYm90Um93ID0g
dG9wUm93ICsgKGltYWdlU3BlYy0+cGl4ZWxzSGlnaCAtIDEpICogaW1hZ2VTcGVjLT5ieXRlc1Bl
clJvdzsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBpbWFnZVNwZWMtPnBpeGVsc0hpZ2gg
LyAyOyBpKyssIHRvcFJvdyArPSBpbWFnZVNwZWMtPmJ5dGVzUGVyUm93LCBib3RSb3cgLT0gaW1h
Z2VTcGVjLT5ieXRlc1BlclJvdykgeworICAgICAgICAgICAgYmNvcHkodG9wUm93LCAgdGVtcFJv
dywgaW1hZ2VTcGVjLT5ieXRlc1BlclJvdyk7CisgICAgICAgICAgICBiY29weShib3RSb3csICB0
b3BSb3csICBpbWFnZVNwZWMtPmJ5dGVzUGVyUm93KTsKKyAgICAgICAgICAgIGJjb3B5KHRlbXBS
b3csIGJvdFJvdywgIGltYWdlU3BlYy0+Ynl0ZXNQZXJSb3cpOworICAgICAgICB9CisgICAgfQor
CisgICAgZmFzdEZyZWUodGVtcFJvdyk7Cit9CisKK3N0YXRpYyB2b2lkIHNldERyYWdJbWFnZUlt
cGwoTlNJbWFnZSAqaW1hZ2UsIE5TUG9pbnQgb2Zmc2V0KQoreworICAgIGJvb2wgZmxpcEltYWdl
OworICAgIE5TU2l6ZSBpbWFnZVNpemUgPSBpbWFnZS5zaXplOworICAgIENHUmVjdCBpbWFnZVJl
Y3QgPSBDR1JlY3RNYWtlKDAsIDAsIGltYWdlU2l6ZS53aWR0aCwgaW1hZ2VTaXplLmhlaWdodCk7
CisgICAgTlNJbWFnZVJlcCAqaW1hZ2VSZXAgPSBbaW1hZ2UgYmVzdFJlcHJlc2VudGF0aW9uRm9y
UmVjdDpOU1JlY3RGcm9tQ0dSZWN0KGltYWdlUmVjdCkgY29udGV4dDpuaWwgaGludHM6bmlsXTsK
KyAgICBSZXRhaW5QdHI8TlNCaXRtYXBJbWFnZVJlcD4gYml0bWFwSW1hZ2U7CisgICAgaWYgKCFp
bWFnZVJlcCB8fCAhW2ltYWdlUmVwIGlzS2luZE9mQ2xhc3M6W05TQml0bWFwSW1hZ2VSZXAgY2xh
c3NdXSB8fCAhTlNFcXVhbFNpemVzKGltYWdlUmVwLnNpemUsIGltYWdlU2l6ZSkpIHsKKyAgICAg
ICAgW2ltYWdlIGxvY2tGb2N1c107CisgICAgICAgIGJpdG1hcEltYWdlID0gYWRvcHROUyhbW05T
Qml0bWFwSW1hZ2VSZXAgYWxsb2NdIGluaXRXaXRoRm9jdXNlZFZpZXdSZWN0OiooTlNSZWN0ICop
JmltYWdlUmVjdF0pOworICAgICAgICBbaW1hZ2UgdW5sb2NrRm9jdXNdOworICAgICAgICAKKyAg
ICAgICAgLy8gd2UgbWF5IGhhdmUgdG8gZmxpcCB0aGUgYml0cyB3ZSBqdXN0IHJlYWQgaWYgdGhl
IGltYWdlIHdhcyBmbGlwcGVkIHNpbmNlIGl0IG1lYW5zIHRoZSBjYWNoZSB3YXMgYWxzbworICAg
ICAgICAvLyBhbmQgQ29yZURyYWdTZXRJbWFnZSBjYW4ndCB0YWtlIGEgdHJhbnNmb3JtIGZvciBy
ZW5kZXJpbmcuCisjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcHVzaAorI3ByYWdtYSBjbGFuZyBk
aWFnbm9zdGljIGlnbm9yZWQgIi1XZGVwcmVjYXRlZC1kZWNsYXJhdGlvbnMiCisgICAgICAgIGZs
aXBJbWFnZSA9IGltYWdlLmlzRmxpcHBlZDsKKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwb3AK
KyAgICB9IGVsc2UgeworICAgICAgICBmbGlwSW1hZ2UgPSBmYWxzZTsKKyAgICAgICAgYml0bWFw
SW1hZ2UgPSAoTlNCaXRtYXBJbWFnZVJlcCAqKWltYWdlUmVwOworICAgIH0KKyAgICBBU1NFUlQo
Yml0bWFwSW1hZ2UpOworCisgICAgQ29yZURyYWdJbWFnZVNwZWMgaW1hZ2VTcGVjOworICAgIGlt
YWdlU3BlYy52ZXJzaW9uID0ga0NvcmVEcmFnSW1hZ2VTcGVjVmVyc2lvbk9uZTsKKyAgICBpbWFn
ZVNwZWMucGl4ZWxzV2lkZSA9IFtiaXRtYXBJbWFnZSBwaXhlbHNXaWRlXTsKKyAgICBpbWFnZVNw
ZWMucGl4ZWxzSGlnaCA9IFtiaXRtYXBJbWFnZSBwaXhlbHNIaWdoXTsKKyAgICBpbWFnZVNwZWMu
Yml0c1BlclNhbXBsZSA9IFtiaXRtYXBJbWFnZSBiaXRzUGVyU2FtcGxlXTsKKyAgICBpbWFnZVNw
ZWMuc2FtcGxlc1BlclBpeGVsID0gW2JpdG1hcEltYWdlIHNhbXBsZXNQZXJQaXhlbF07CisgICAg
aW1hZ2VTcGVjLmJpdHNQZXJQaXhlbCA9IFtiaXRtYXBJbWFnZSBiaXRzUGVyUGl4ZWxdOworICAg
IGltYWdlU3BlYy5ieXRlc1BlclJvdyA9IFtiaXRtYXBJbWFnZSBieXRlc1BlclJvd107CisgICAg
aW1hZ2VTcGVjLmlzUGxhbmFyID0gW2JpdG1hcEltYWdlIGlzUGxhbmFyXTsKKyAgICBpbWFnZVNw
ZWMuaGFzQWxwaGEgPSBbYml0bWFwSW1hZ2UgaGFzQWxwaGFdOworICAgIFtiaXRtYXBJbWFnZSBn
ZXRCaXRtYXBEYXRhUGxhbmVzOih1bnNpZ25lZCBjaGFyKiopaW1hZ2VTcGVjLmRhdGFdOworCisg
ICAgLy8gaWYgaW1hZ2Ugd2FzIGZsaXBwZWQsIHdlIGhhdmUgYW4gdXBzaWRlIGRvd24gYml0bWFw
IHNpbmNlIHRoZSBjYWNoZSBpcyByZW5kZXJlZCBmbGlwcGVkCisgICAgaWYgKGZsaXBJbWFnZSkK
KyAgICAgICAgZmxpcEltYWdlU3BlYygmaW1hZ2VTcGVjKTsKKworICAgIENHU1JlZ2lvbk9iaiBp
bWFnZVNoYXBlOworICAgIE9TU3RhdHVzIGVycm9yID0gQ0dTTmV3UmVnaW9uV2l0aFJlY3QoJmlt
YWdlUmVjdCwgJmltYWdlU2hhcGUpOworICAgIEFTU0VSVChlcnJvciA9PSBrQ0dFcnJvclN1Y2Nl
c3MpOworICAgIGlmIChlcnJvciAhPSBrQ0dFcnJvclN1Y2Nlc3MpCisgICAgICAgIHJldHVybjsK
KworICAgIC8vIG1ha2Ugc3VyZSBpbWFnZSBoYXMgaW50ZWdlciBvZmZzZXQKKyAgICBDR1BvaW50
IGltYWdlT2Zmc2V0ID0gey1vZmZzZXQueCwgLShpbWFnZVNpemUuaGVpZ2h0IC0gb2Zmc2V0Lnkp
fTsKKyAgICBpbWFnZU9mZnNldC54ID0gZmxvb3IoaW1hZ2VPZmZzZXQueCArIDAuNSk7CisgICAg
aW1hZ2VPZmZzZXQueSA9IGZsb29yKGltYWdlT2Zmc2V0LnkgKyAwLjUpOworCisgICAgZXJyb3Ig
PSBDb3JlRHJhZ1NldEltYWdlKENvcmVEcmFnR2V0Q3VycmVudERyYWcoKSwgaW1hZ2VPZmZzZXQs
ICZpbWFnZVNwZWMsIGltYWdlU2hhcGUsIDEuMCk7CisgICAgQ0dTUmVsZWFzZVJlZ2lvbihpbWFn
ZVNoYXBlKTsKKyAgICBBU1NFUlQoZXJyb3IgPT0ga0NHRXJyb3JTdWNjZXNzKTsKK30KKwogdm9p
ZCBQYXN0ZWJvYXJkOjpzZXREcmFnSW1hZ2UoRHJhZ0ltYWdlIGltYWdlLCBjb25zdCBJbnRQb2lu
dCYgbG9jYXRpb24pCiB7CiAgICAgLy8gRG9uJ3QgYWxsb3cgc2V0dGluZyB0aGUgZHJhZyBpbWFn
ZSBpZiBzb21lb25lIGtlcHQgYSBwYXN0ZWJvYXJkIGFuZCBpcyB0cnlpbmcgdG8gc2V0IHRoZSBp
bWFnZSB0b28gbGF0ZS4KQEAgLTY3Nyw3ICs3NTIsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6OnNldERy
YWdJbWFnZShEcmFnSW1hZ2UgaW1hZ2UsIGNvbnN0IEludFBvaW50JiBsb2NhdGlvbikKIAogICAg
IC8vIERhc2hib2FyZCB3YW50cyB0byBiZSBhYmxlIHRvIHNldCB0aGUgZHJhZyBpbWFnZSBkdXJp
bmcgZHJhZ2dpbmcsIGJ1dCBDb2NvYSBkb2VzIG5vdCBhbGxvdyB0aGlzLgogICAgIC8vIEluc3Rl
YWQgd2UgbXVzdCBkcm9wIGRvd24gdG8gdGhlIENvcmVHcmFwaGljcyBBUEkuCi0gICAgd2tTZXRE
cmFnSW1hZ2UoaW1hZ2UuZ2V0KCkuZ2V0KCksIGxvY2F0aW9uKTsKKyAgICBzZXREcmFnSW1hZ2VJ
bXBsKGltYWdlLmdldCgpLmdldCgpLCBsb2NhdGlvbik7CiAKICAgICAvLyBIYWNrOiBXZSBtdXN0
IHBvc3QgYW4gZXZlbnQgdG8gd2FrZSB1cCB0aGUgTlNEcmFnTWFuYWdlciwgd2hpY2ggaXMgc2l0
dGluZyBpbiBhIG5leHRFdmVudCBjYWxsCiAgICAgLy8gdXAgdGhlIHN0YWNrIGZyb20gdXMgYmVj
YXVzZSB0aGUgQ29yZUZvdW5kYXRpb24gZHJhZyBtYW5hZ2VyIGRvZXMgbm90IHVzZSB0aGUgcnVu
IGxvb3AgYnkgaXRzZWxmLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFj
L1BsYXRmb3JtRXZlbnRGYWN0b3J5TWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFj
L1BsYXRmb3JtRXZlbnRGYWN0b3J5TWFjLm1tCmluZGV4IGJjMWUzNjdmYzQ2OTRlYWY0NjBhYjBl
YTVhNDIzMGQwMDAwMWFjODkuLjUwMDEwMDlmMjExOTQ1ZGE5Nzc4YTNlYWFmOTllZDgzMTJmZDc3
NTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybUV2ZW50
RmFjdG9yeU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1F
dmVudEZhY3RvcnlNYWMubW0KQEAgLTY3Myw3ICs2NzMsNyBAQCBzdGF0aWMgaW50IHR5cGVGb3JF
dmVudChOU0V2ZW50ICpldmVudCkKIHsKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihbTlNN
ZW51IG1lbnVUeXBlRm9yRXZlbnQ6ZXZlbnRdKTsKIH0KLSAgICAKKwogY2xhc3MgUGxhdGZvcm1N
b3VzZUV2ZW50QnVpbGRlciA6IHB1YmxpYyBQbGF0Zm9ybU1vdXNlRXZlbnQgewogcHVibGljOgog
ICAgIFBsYXRmb3JtTW91c2VFdmVudEJ1aWxkZXIoTlNFdmVudCAqZXZlbnQsIE5TRXZlbnQgKmNv
cnJlc3BvbmRpbmdQcmVzc3VyZUV2ZW50LCBOU1ZpZXcgKndpbmRvd1ZpZXcpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsYmFyVGhlbWVNYWMubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsYmFyVGhlbWVNYWMubW0KaW5kZXggYzRjMjg3
NzY4MzU3NDk2YWViMjg4ZmE0MWYwZGQ5NWQyZDdjYzI4OC4uNmQwNWI4NmM2M2QwNWY3YjZkMTQ3
MzE3ZWZkMjdmZjM0MTU4MzE5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL1Njcm9sbGJhclRoZW1lTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21h
Yy9TY3JvbGxiYXJUaGVtZU1hYy5tbQpAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUgIlNjcm9s
bFZpZXcuaCIKICNpbmNsdWRlICJXZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmgiCiAjaW5jbHVkZSA8
Q2FyYm9uL0NhcmJvbi5oPgorI2luY2x1ZGUgPHBhbC9zcGkvY2cvQ29yZUdyYXBoaWNzU1BJLmg+
CiAjaW5jbHVkZSA8cGFsL3NwaS9tYWMvTlNTY3JvbGxlckltcFNQSS5oPgogI2luY2x1ZGUgPHd0
Zi9CbG9ja09iakNFeGNlcHRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KQEAgLTU3
Myw3ICs1NzQsNyBAQCBzdGF0aWMgUmV0YWluUHRyPENHQ29sb3JSZWY+IGxpbmVuQmFja2dyb3Vu
ZENvbG9yKCkKICAgICBpZiAoIWNnSW1hZ2UpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0g
ICAgUmV0YWluUHRyPENHUGF0dGVyblJlZj4gcGF0dGVybiA9IGFkb3B0Q0Yod2tDR1BhdHRlcm5D
cmVhdGVXaXRoSW1hZ2VBbmRUcmFuc2Zvcm0oY2dJbWFnZSwgQ0dBZmZpbmVUcmFuc2Zvcm1JZGVu
dGl0eSwgd2tQYXR0ZXJuVGlsaW5nTm9EaXN0b3J0aW9uKSk7CisgICAgUmV0YWluUHRyPENHUGF0
dGVyblJlZj4gcGF0dGVybiA9IGFkb3B0Q0YoQ0dQYXR0ZXJuQ3JlYXRlV2l0aEltYWdlMihjZ0lt
YWdlLCBDR0FmZmluZVRyYW5zZm9ybUlkZW50aXR5LCBrQ0dQYXR0ZXJuVGlsaW5nTm9EaXN0b3J0
aW9uKSk7CiAgICAgUmV0YWluUHRyPENHQ29sb3JTcGFjZVJlZj4gY29sb3JTcGFjZSA9IGFkb3B0
Q0YoQ0dDb2xvclNwYWNlQ3JlYXRlUGF0dGVybigwKSk7CiAKICAgICBjb25zdCBDR0Zsb2F0IGFs
cGhhID0gMS4wOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1RoZW1l
TWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1RoZW1lTWFjLm1tCmluZGV4IDkw
ZjEwNDFlZmY3ZjBjNjQ3ZDZmODM5MWMwMjdmNTNkMWFiNDQ3MTQuLjhhMTkyNjVjZjVkODJmMjAy
NWZmNTAxZWVlMmVmOTUxZjg0Mzc4NTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21hYy9UaGVtZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvVGhl
bWVNYWMubW0KQEAgLTM2LDYgKzM2LDcgQEAKICNpbXBvcnQgIldlYkNvcmVTeXN0ZW1JbnRlcmZh
Y2UuaCIKICNpbXBvcnQgPENhcmJvbi9DYXJib24uaD4KICNpbXBvcnQgPHBhbC9zcGkvY29jb2Ev
TlNCdXR0b25DZWxsU1BJLmg+CisjaW1wb3J0IDxwYWwvc3BpL21hYy9OU0dyYXBoaWNzU1BJLmg+
CiAjaW1wb3J0IDx3dGYvQmxvY2tPYmpDRXhjZXB0aW9ucy5oPgogI2ltcG9ydCA8d3RmL05ldmVy
RGVzdHJveWVkLmg+CiAjaW1wb3J0IDx3dGYvU3RkTGliRXh0cmFzLmg+CkBAIC0zNDksOSArMzUw
LDMyIEBAIHN0YXRpYyBOU0J1dHRvbkNlbGwgKnNoYXJlZENoZWNrYm94Q2VsbChjb25zdCBDb250
cm9sU3RhdGVzJiBzdGF0ZXMsIGNvbnN0IEludFNpCiAgICAgcmV0dXJuIGNoZWNrYm94Q2VsbDsK
IH0KIAorc3RhdGljIGJvb2wgZHJhd0NlbGxGb2N1c1JpbmdXaXRoRnJhbWVBdFRpbWUoTlNDZWxs
ICpjZWxsLCBOU1JlY3QgY2VsbEZyYW1lLCBOU1ZpZXcgKmNvbnRyb2xWaWV3LCBOU1RpbWVJbnRl
cnZhbCB0aW1lT2Zmc2V0KQoreworICAgIENHQ29udGV4dFJlZiBjZ0NvbnRleHQgPSAoQ0dDb250
ZXh0UmVmKVtbTlNHcmFwaGljc0NvbnRleHQgY3VycmVudENvbnRleHRdIGdyYXBoaWNzUG9ydF07
CisgICAgQ0dDb250ZXh0U2F2ZUdTdGF0ZShjZ0NvbnRleHQpOworCisgICAgQ0dGb2N1c1JpbmdT
dHlsZSBmb2N1c1JpbmdTdHlsZTsKKyAgICBib29sIG5lZWRzUmVwYWludCA9IE5TSW5pdGlhbGl6
ZUNHRm9jdXNSaW5nU3R5bGVGb3JUaW1lKE5TRm9jdXNSaW5nT25seSwgJmZvY3VzUmluZ1N0eWxl
LCB0aW1lT2Zmc2V0KTsKKyAgICAvLyBXZSB3YW50IHRvIHJlc3BlY3QgdGhlIENHQ29udGV4dCBj
bGlwcGluZyBhbmQgYWxzbyBub3Qgb3ZlcnBhaW50IGFueQorICAgIC8vIGV4aXN0aW5nIGZvY3Vz
IHJpbmcuIFRoZSB3YXkgdG8gZG8gdGhpcyBpcyBzZXQgYWNjdW11bGF0ZSB0bworICAgIC8vIC0x
LiBBY2NvcmRpbmcgdG8gQ29yZUdyYXBoaWNzLCB0aGUgcmVhc29uaW5nIGZvciB0aGlzIGJlaGF2
aW9yIGhhcyBiZWVuCisgICAgLy8gbG9zdCBpbiB0aW1lLgorICAgIGZvY3VzUmluZ1N0eWxlLmFj
Y3VtdWxhdGUgPSAtMTsKKyAgICBhdXRvIHN0eWxlID0gYWRvcHRDRihDR1N0eWxlQ3JlYXRlRm9j
dXNSaW5nV2l0aENvbG9yKCZmb2N1c1JpbmdTdHlsZSwgR3JhcGhpY3NDb250ZXh0Ojpmb2N1c1Jp
bmdDb2xvcigpKSk7CisgICAgQ0dDb250ZXh0U2V0U3R5bGUoY2dDb250ZXh0LCBzdHlsZS5nZXQo
KSk7CisKKyAgICBDR0NvbnRleHRCZWdpblRyYW5zcGFyZW5jeUxheWVyV2l0aFJlY3QoY2dDb250
ZXh0LCBOU1JlY3RUb0NHUmVjdChjZWxsRnJhbWUpLCAwKTsKKyAgICBbY2VsbCBkcmF3Rm9jdXNS
aW5nTWFza1dpdGhGcmFtZTpjZWxsRnJhbWUgaW5WaWV3OmNvbnRyb2xWaWV3XTsKKyAgICBDR0Nv
bnRleHRFbmRUcmFuc3BhcmVuY3lMYXllcihjZ0NvbnRleHQpOworICAgIENHQ29udGV4dFJlc3Rv
cmVHU3RhdGUoY2dDb250ZXh0KTsKKworICAgIHJldHVybiBuZWVkc1JlcGFpbnQ7Cit9CisKIHN0
YXRpYyBib29sIGRyYXdDZWxsRm9jdXNSaW5nKE5TQ2VsbCAqY2VsbCwgTlNSZWN0IGNlbGxGcmFt
ZSwgTlNWaWV3ICpjb250cm9sVmlldykKIHsKLSAgICB3a0RyYXdDZWxsRm9jdXNSaW5nV2l0aEZy
YW1lQXRUaW1lKGNlbGwsIGNlbGxGcmFtZSwgY29udHJvbFZpZXcsIHN0ZDo6bnVtZXJpY19saW1p
dHM8ZG91YmxlPjo6bWF4KCkpOworICAgIGRyYXdDZWxsRm9jdXNSaW5nV2l0aEZyYW1lQXRUaW1l
KGNlbGwsIGNlbGxGcmFtZSwgY29udHJvbFZpZXcsIHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91Ymxl
Pjo6bWF4KCkpOwogICAgIHJldHVybiBmYWxzZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmgKaW5kZXggOTNjZGZkMGM3
YWIxZTk2ODAxMDZjYTY0ODU0NDg1NjZiNzQ0NGU0Ni4uNmJkMTRjZGIyYjBlZTYwOTAxNGVkMjc5
MTc1ZDQ3MTVkN2QwZTlhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFj
L1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
YWMvV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oCkBAIC0xMjYsMTQgKzEyNiw3IEBAIHR5cGVkZWYg
ZW51bSB7CiAgICAgd2tQYXR0ZXJuVGlsaW5nQ29uc3RhbnRTcGFjaW5nCiB9IHdrUGF0dGVyblRp
bGluZzsKICNpZiAhUExBVEZPUk0oSU9TKQotZXh0ZXJuIGJvb2wgKCp3a0NHQ29udGV4dERyYXdz
V2l0aENvcnJlY3RTaGFkb3dPZmZzZXRzKShDR0NvbnRleHRSZWYpOwotI2VuZGlmCi1leHRlcm4g
Q0dQYXR0ZXJuUmVmICgqd2tDR1BhdHRlcm5DcmVhdGVXaXRoSW1hZ2VBbmRUcmFuc2Zvcm0pKENH
SW1hZ2VSZWYsIENHQWZmaW5lVHJhbnNmb3JtLCBpbnQpOwotI2lmICFQTEFURk9STShJT1MpCiBl
eHRlcm4gdm9pZCAoKndrRHJhd0JlemVsZWRUZXh0QXJlYSkoTlNSZWN0LCBCT09MIGVuYWJsZWQp
OwotZXh0ZXJuIHZvaWQgKCp3a0RyYXdGb2N1c1JpbmcpKENHQ29udGV4dFJlZiwgQ0dDb2xvclJl
ZiwgaW50KTsKLWV4dGVybiBib29sICgqd2tEcmF3Rm9jdXNSaW5nQXRUaW1lKShDR0NvbnRleHRS
ZWYsIE5TVGltZUludGVydmFsIHRpbWUpOwotZXh0ZXJuIGJvb2wgKCp3a0RyYXdDZWxsRm9jdXNS
aW5nV2l0aEZyYW1lQXRUaW1lKShOU0NlbGwgKmNlbGwsIE5TUmVjdCBjZWxsRnJhbWUsIE5TVmll
dyAqY29udHJvbFZpZXcsIE5TVGltZUludGVydmFsIHRpbWUpOwogZXh0ZXJuIHZvaWQgKCp3a0Ry
YXdNZWRpYVNsaWRlclRyYWNrKShDR0NvbnRleHRSZWYgY29udGV4dCwgQ0dSZWN0IHJlY3QsIGZs
b2F0IHRpbWVMb2FkZWQsIGZsb2F0IGN1cnJlbnRUaW1lLAogICAgIGZsb2F0IGR1cmF0aW9uLCB1
bnNpZ25lZCBzdGF0ZSk7CiBleHRlcm4gdm9pZCAoKndrRHJhd01lZGlhVUlQYXJ0KShpbnQgcGFy
dCwgQ0dDb250ZXh0UmVmIGNvbnRleHQsIENHUmVjdCByZWN0LCB1bnNpZ25lZCBzdGF0ZSk7CkBA
IC0xNTcsOSArMTUwLDYgQEAgdHlwZWRlZiBlbnVtIHsKIH0gd2tNZWRpYVVJQ29udHJvbFR5cGU7
CiBleHRlcm4gTlNDb250cm9sICooKndrQ3JlYXRlTWVkaWFVSUNvbnRyb2wpKGludCk7CiAKLWV4
dGVybiB2b2lkICgqd2tXaW5kb3dTZXRBbHBoYSkoTlNXaW5kb3cgKiwgZmxvYXQpOwotZXh0ZXJu
IHZvaWQgKCp3a1dpbmRvd1NldFNjYWxlZEZyYW1lKShOU1dpbmRvdyAqLCBOU1JlY3QsIE5TUmVj
dCk7Ci0KIGV4dGVybiB1bnNpZ25lZCAoKndrUVRJbmNsdWRlT25seU1vZGVybk1lZGlhRmlsZVR5
cGVzKSh2b2lkKTsKIGV4dGVybiB2b2lkICgqd2tRVE1vdmllRGlzYWJsZUNvbXBvbmVudCkodWlu
dDMyX3RbNV0pOwogZXh0ZXJuIGZsb2F0ICgqd2tRVE1vdmllTWF4VGltZUxvYWRlZCkoUVRNb3Zp
ZSopOwpAQCAtMTczLDkgKzE2Myw3IEBAIGV4dGVybiBOU0FycmF5ICooKndrUVRHZXRTaXRlc0lu
TWVkaWFEb3dubG9hZENhY2hlKSgpOwogZXh0ZXJuIHZvaWQgKCp3a1FUQ2xlYXJNZWRpYURvd25s
b2FkQ2FjaGVGb3JTaXRlKShOU1N0cmluZyAqc2l0ZSk7CiBleHRlcm4gdm9pZCAoKndrUVRDbGVh
ck1lZGlhRG93bmxvYWRDYWNoZSkoKTsKIGV4dGVybiB2b2lkICgqd2tTZXRDb29raWVTdG9yYWdl
UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCkoQk9PTCk7Ci1leHRlcm4gdm9pZCAoKndrU2V0RHJhZ0lt
YWdlKShOU0ltYWdlKiwgTlNQb2ludCBvZmZzZXQpOwogI2VuZGlmCi1leHRlcm4gYm9vbCAoKndr
Q0dDb250ZXh0SXNQREZDb250ZXh0KShDR0NvbnRleHRSZWYpOwogZXh0ZXJuIHZvaWQgKCp3a1Nl
dENPTk5FQ1RQcm94eUZvclN0cmVhbSkoQ0ZSZWFkU3RyZWFtUmVmLCBDRlN0cmluZ1JlZiBwcm94
eUhvc3QsIENGTnVtYmVyUmVmIHByb3h5UG9ydCk7CiBleHRlcm4gdm9pZCAoKndrU2V0Q09OTkVD
VFByb3h5QXV0aG9yaXphdGlvbkZvclN0cmVhbSkoQ0ZSZWFkU3RyZWFtUmVmLCBDRlN0cmluZ1Jl
ZiBwcm94eUF1dGhvcml6YXRpb25TdHJpbmcpOwogZXh0ZXJuIENGSFRUUE1lc3NhZ2VSZWYgKCp3
a0NvcHlDT05ORUNUUHJveHlSZXNwb25zZSkoQ0ZSZWFkU3RyZWFtUmVmLCBDRlVSTFJlZiByZXNw
b25zZVVSTCwgQ0ZTdHJpbmdSZWYgcHJveHlIb3N0LCBDRk51bWJlclJlZiBwcm94eVBvcnQpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVTeXN0ZW1JbnRl
cmZhY2UubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZVN5c3RlbUludGVy
ZmFjZS5tbQppbmRleCA2NDlkN2E2N2NkNjc2NTRhMmEzZTM5NGU5MzVmOGM1MjZmYTM5MjVhLi5i
NGI1YzAwODZjNDJlMmQ0M2QzMDZiOTJmNjE0MjZmNDdjOTM2YjgyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZVN5c3RlbUludGVyZmFjZS5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZVN5c3RlbUludGVyZmFjZS5tbQpAQCAt
MzEsMTIgKzMxLDcgQEAKICNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgogCiB2b2lk
ICgqd2tDQUxheWVyRW51bWVyYXRlUmVjdHNCZWluZ0RyYXduV2l0aEJsb2NrKShDQUxheWVyICos
IENHQ29udGV4dFJlZiBjb250ZXh0LCB2b2lkICheYmxvY2spKENHUmVjdCByZWN0KSk7Ci1ib29s
ICgqd2tDR0NvbnRleHREcmF3c1dpdGhDb3JyZWN0U2hhZG93T2Zmc2V0cykoQ0dDb250ZXh0UmVm
KTsKLUNHUGF0dGVyblJlZiAoKndrQ0dQYXR0ZXJuQ3JlYXRlV2l0aEltYWdlQW5kVHJhbnNmb3Jt
KShDR0ltYWdlUmVmLCBDR0FmZmluZVRyYW5zZm9ybSwgaW50KTsKIHZvaWQgKCp3a0RyYXdCZXpl
bGVkVGV4dEFyZWEpKE5TUmVjdCwgQk9PTCBlbmFibGVkKTsKLXZvaWQgKCp3a0RyYXdGb2N1c1Jp
bmcpKENHQ29udGV4dFJlZiwgQ0dDb2xvclJlZiwgaW50KTsKLWJvb2wgKCp3a0RyYXdGb2N1c1Jp
bmdBdFRpbWUpKENHQ29udGV4dFJlZiwgTlNUaW1lSW50ZXJ2YWwpOwotYm9vbCAoKndrRHJhd0Nl
bGxGb2N1c1JpbmdXaXRoRnJhbWVBdFRpbWUpKE5TQ2VsbCosIE5TUmVjdCwgTlNWaWV3KiwgTlNU
aW1lSW50ZXJ2YWwpOwogdm9pZCAoKndrRHJhd01lZGlhU2xpZGVyVHJhY2spKENHQ29udGV4dFJl
ZiBjb250ZXh0LCBDR1JlY3QgcmVjdCwgZmxvYXQgdGltZUxvYWRlZCwgZmxvYXQgY3VycmVudFRp
bWUsCiAgICAgZmxvYXQgZHVyYXRpb24sIHVuc2lnbmVkIHN0YXRlKTsKIEJPT0wgKCp3a0hpdFRl
c3RNZWRpYVVJUGFydCkoaW50IHBhcnQsIENHUmVjdCBib3VuZHMsIENHUG9pbnQgcG9pbnQpOwpA
QCAtNDQsOCArMzksNiBAQCB2b2lkICgqd2tEcmF3TWVkaWFVSVBhcnQpKGludCBwYXJ0LCBDR0Nv
bnRleHRSZWYgY29udGV4dCwgQ0dSZWN0IHJlY3QsIHVuc2lnbmVkCiB2b2lkICgqd2tNZWFzdXJl
TWVkaWFVSVBhcnQpKGludCBwYXJ0LCBDR1JlY3QgKmJvdW5kcywgQ0dTaXplICpuYXR1cmFsU2l6
ZSk7CiBOU1ZpZXcgKigqd2tDcmVhdGVNZWRpYVVJQmFja2dyb3VuZFZpZXcpKHZvaWQpOwogTlND
b250cm9sICooKndrQ3JlYXRlTWVkaWFVSUNvbnRyb2wpKGludCk7Ci12b2lkICgqd2tXaW5kb3dT
ZXRBbHBoYSkoTlNXaW5kb3cgKiwgZmxvYXQpOwotdm9pZCAoKndrV2luZG93U2V0U2NhbGVkRnJh
bWUpKE5TV2luZG93ICosIE5TUmVjdCwgTlNSZWN0KTsKIE5TVGltZUludGVydmFsICgqd2tHZXRO
U1VSTFJlc3BvbnNlQ2FsY3VsYXRlZEV4cGlyYXRpb24pKE5TVVJMUmVzcG9uc2UgKnJlc3BvbnNl
KTsKIEJPT0wgKCp3a0dldE5TVVJMUmVzcG9uc2VNdXN0UmV2YWxpZGF0ZSkoTlNVUkxSZXNwb25z
ZSAqcmVzcG9uc2UpOwogdm9pZCAoKndrR2V0V2hlZWxFdmVudERlbHRhcykoTlNFdmVudCosIGZs
b2F0KiBkZWx0YVgsIGZsb2F0KiBkZWx0YVksIEJPT0wqIGNvbnRpbnVvdXMpOwpAQCAtNjQsOCAr
NTcsNiBAQCBOU0FycmF5ICooKndrUVRHZXRTaXRlc0luTWVkaWFEb3dubG9hZENhY2hlKSgpOwog
dm9pZCAoKndrUVRDbGVhck1lZGlhRG93bmxvYWRDYWNoZUZvclNpdGUpKE5TU3RyaW5nICpzaXRl
KTsKIHZvaWQgKCp3a1FUQ2xlYXJNZWRpYURvd25sb2FkQ2FjaGUpKCk7CiAKLXZvaWQgKCp3a1Nl
dERyYWdJbWFnZSkoTlNJbWFnZSosIE5TUG9pbnQgb2Zmc2V0KTsKLWJvb2wgKCp3a0NHQ29udGV4
dElzUERGQ29udGV4dCkoQ0dDb250ZXh0UmVmKTsKIHZvaWQgKCp3a1NldENPTk5FQ1RQcm94eUZv
clN0cmVhbSkoQ0ZSZWFkU3RyZWFtUmVmLCBDRlN0cmluZ1JlZiBwcm94eUhvc3QsIENGTnVtYmVy
UmVmIHByb3h5UG9ydCk7CiB2b2lkICgqd2tTZXRDT05ORUNUUHJveHlBdXRob3JpemF0aW9uRm9y
U3RyZWFtKShDRlJlYWRTdHJlYW1SZWYsIENGU3RyaW5nUmVmIHByb3h5QXV0aG9yaXphdGlvblN0
cmluZyk7CiBDRkhUVFBNZXNzYWdlUmVmICgqd2tDb3B5Q09OTkVDVFByb3h5UmVzcG9uc2UpKENG
UmVhZFN0cmVhbVJlZiwgQ0ZVUkxSZWYgcmVzcG9uc2VVUkwsIENGU3RyaW5nUmVmIHByb3h5SG9z
dCwgQ0ZOdW1iZXJSZWYgcHJveHlQb3J0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21hYy9XZWJXaW5kb3dBbmltYXRpb24ubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tYWMvV2ViV2luZG93QW5pbWF0aW9uLm1tCmluZGV4IDhhYmM4NDBiNzNjYzY0NWM4YWM0MDZk
ZWFmYWU5NDIyY2RjMzUzZTIuLmNhNTU5ZGYwYmNhOWI2MjRkZTJmYzA0MmEyZjNhMTU2Yzg3MGE4
MmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJXaW5kb3dBbmlt
YXRpb24ubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYldpbmRvd0FuaW1h
dGlvbi5tbQpAQCAtMjksNiArMjksNyBAQAogCiAjaW1wb3J0ICJGbG9hdENvbnZlcnNpb24uaCIK
ICNpbXBvcnQgIldlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaCIKKyNpbXBvcnQgPHBhbC9zcGkvY2cv
Q29yZUdyYXBoaWNzU1BJLmg+CiAjaW1wb3J0IDx3dGYvQXNzZXJ0aW9ucy5oPgogI2ltcG9ydCA8
d3RmL01hdGhFeHRyYXMuaD4KIApAQCAtMTA5LDYgKzExMCw1OSBAQCAtIChOU1JlY3QpY3VycmVu
dEZyYW1lCiAgICAgcmV0dXJuIHNjYWxlZFJlY3QoX2ZpbmFsRnJhbWUsIF9pbml0aWFsRnJhbWUs
IFtzZWxmIGN1cnJlbnRWYWx1ZV0pOwogfQogCitzdGF0aWMgdm9pZCBmbGlwUmVjdChOU1JlY3Qg
KnJlY3QpCit7CisgICAgcmVjdC0+b3JpZ2luLnkgPSBOU01heFkoWyhOU1NjcmVlbiAqKVtbTlNT
Y3JlZW4gc2NyZWVuc10gb2JqZWN0QXRJbmRleDowXSBmcmFtZV0pIC0gTlNNYXhZKCpyZWN0KTsK
K30KKworc3RhdGljIENHU0Nvbm5lY3Rpb25JRCBtYWluV2luZG93U2VydmVyQ29ubmVjdGlvbklE
KCkKK3sKKyAgICBzdGF0aWMgQ0dTQ29ubmVjdGlvbklEIGNnc0lkOworICAgIGlmICghY2dzSWQp
CisgICAgICAgIGNnc0lkID0gQ0dTTWFpbkNvbm5lY3Rpb25JRCgpOworICAgIHJldHVybiBjZ3NJ
ZDsKK30KKworc3RhdGljIHZvaWQgc2V0U2NhbGVkRnJhbWVGb3JXaW5kb3coTlNXaW5kb3cgKndp
bmRvdywgTlNSZWN0IHNjYWxlRnJhbWUsIE5TUmVjdCBub25TY2FsZWRGcmFtZSkKK3sKKyAgICBp
ZiAoTlNFcXVhbFJlY3RzKHNjYWxlRnJhbWUsIG5vblNjYWxlZEZyYW1lKSkgeworICAgICAgICBD
R1NTZXRXaW5kb3dXYXJwKG1haW5XaW5kb3dTZXJ2ZXJDb25uZWN0aW9uSUQoKSwgW3dpbmRvdyB3
aW5kb3dOdW1iZXJdLCAwLCAwLCBOVUxMKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAK
KyAgICBmbG9hdCBtZXNoWzE2XTsKKyAgICAKKyAgICBmbGlwUmVjdCgmc2NhbGVGcmFtZSk7Cisg
ICAgZmxpcFJlY3QoJm5vblNjYWxlZEZyYW1lKTsKKyAgICAKKyAgICAvLyB0b3AtbGVmdCBwb2lu
dCAodG8gYW5kIGZyb20pCisgICAgbWVzaFswXSA9IDA7CisgICAgbWVzaFsxXSA9IDA7CisgICAg
bWVzaFsyXSA9IE5TTWluWChzY2FsZUZyYW1lKTsKKyAgICBtZXNoWzNdID0gTlNNaW5ZKHNjYWxl
RnJhbWUpOworICAgIAorICAgIC8vIHRvcC1yaWdodCBwb2ludCAodG8gYW5kIGZyb20pCisgICAg
bWVzaFs0XSA9IE5TV2lkdGgobm9uU2NhbGVkRnJhbWUpOworICAgIG1lc2hbNV0gPSAwOworICAg
IG1lc2hbNl0gPSBOU01heFgoc2NhbGVGcmFtZSk7CisgICAgbWVzaFs3XSA9IE5TTWluWShzY2Fs
ZUZyYW1lKTsKKyAgICAKKyAgICAvLyBib3R0b20tbGVmdCAodG8gYW5kIGZyb20pCisgICAgbWVz
aFs4XSA9IDA7CisgICAgbWVzaFs5XSA9IE5TSGVpZ2h0KG5vblNjYWxlZEZyYW1lKTsKKyAgICBt
ZXNoWzEwXSA9IE5TTWluWChzY2FsZUZyYW1lKTsKKyAgICBtZXNoWzExXSA9IE5TTWF4WShzY2Fs
ZUZyYW1lKTsKKyAgICAKKyAgICAvLyBib3R0b20tcmlnaHQgKHRvIGFuZCBmcm9tKQorICAgIG1l
c2hbMTJdID0gTlNXaWR0aChub25TY2FsZWRGcmFtZSk7CisgICAgbWVzaFsxM10gPSBOU0hlaWdo
dChub25TY2FsZWRGcmFtZSk7CisgICAgbWVzaFsxNF0gPSBOU01heFgoc2NhbGVGcmFtZSk7Cisg
ICAgbWVzaFsxNV0gPSBOU01heFkoc2NhbGVGcmFtZSk7CisgICAgCisgICAgLy8gQXBwbHkgdGhl
IHdhcnAuCisgICAgQ0dTU2V0V2luZG93V2FycChtYWluV2luZG93U2VydmVyQ29ubmVjdGlvbklE
KCksIFt3aW5kb3cgd2luZG93TnVtYmVyXSwgMiwgMiwgbWVzaCk7Cit9CisKIC0gKHZvaWQpc2V0
Q3VycmVudFByb2dyZXNzOihOU0FuaW1hdGlvblByb2dyZXNzKXByb2dyZXNzCiB7CiAgICAgaWYg
KCFfd2luZG93KQpAQCAtMTE3LDcgKzE3MSw3IEBAIC0gKHZvaWQpc2V0Q3VycmVudFByb2dyZXNz
OihOU0FuaW1hdGlvblByb2dyZXNzKXByb2dyZXNzCiAgICAgW3N1cGVyIHNldEN1cnJlbnRQcm9n
cmVzczpwcm9ncmVzc107CiAKICAgICBOU1JlY3QgY3VycmVudFJlY3QgPSBbc2VsZiBjdXJyZW50
RnJhbWVdOwotICAgIHdrV2luZG93U2V0U2NhbGVkRnJhbWUoX3dpbmRvdywgY3VycmVudFJlY3Qs
IF9yZWFsRnJhbWUpOworICAgIHNldFNjYWxlZEZyYW1lRm9yV2luZG93KF93aW5kb3csIGN1cnJl
bnRSZWN0LCBfcmVhbEZyYW1lKTsKICAgICBbX3N1YkFuaW1hdGlvbiBzZXRDdXJyZW50UHJvZ3Jl
c3M6cHJvZ3Jlc3NdOwogfQogCkBAIC0yMTEsNyArMjY1LDcgQEAgLSAodm9pZClzZXRDdXJyZW50
UHJvZ3Jlc3M6KE5TQW5pbWF0aW9uUHJvZ3Jlc3MpcHJvZ3Jlc3MKICAgICBBU1NFUlQoX3dpbmRv
dyk7CiAgICAgW3N1cGVyIHNldEN1cnJlbnRQcm9ncmVzczpwcm9ncmVzc107CiAKLSAgICB3a1dp
bmRvd1NldEFscGhhKF93aW5kb3csIFtzZWxmIGN1cnJlbnRBbHBoYV0pOworICAgIENHU1NldFdp
bmRvd0FscGhhKG1haW5XaW5kb3dTZXJ2ZXJDb25uZWN0aW9uSUQoKSwgX3dpbmRvdy53aW5kb3dO
dW1iZXIsIFtzZWxmIGN1cnJlbnRBbHBoYV0pOwogfQogCiAtICh2b2lkKXNldFdpbmRvdzooTlNX
aW5kb3cqKXdpbmRvdwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL21h
Yy9QbHVnaW5Qcm9jZXNzTWFjLm1tIGIvU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL21hYy9Q
bHVnaW5Qcm9jZXNzTWFjLm1tCmluZGV4IGRkNTMzNzAyNDdmMGE2Yjc0YTAxYmZjYzhhYTk2ZmE2
ZmZmMzQ0MTguLjdmZjFiYzk3YjI5NDdmZmE0ODk5ZGRmMzkzZmMwOTQ5NDlhNTc1YzMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9tYWMvUGx1Z2luUHJvY2Vzc01hYy5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvbWFjL1BsdWdpblByb2Nlc3NNYWMu
bW0KQEAgLTUzMCw3ICs1MzAsMTAgQEAgdm9pZCBQbHVnaW5Qcm9jZXNzOjpwbGF0Zm9ybUluaXRp
YWxpemVQcm9jZXNzKGNvbnN0IENoaWxkUHJvY2Vzc0luaXRpYWxpemF0aW9uUGEKIAogICAgIC8v
IEZJWE1FOiBJdCB3b3VsZCBiZSBiZXR0ZXIgdG8gcHJveHkgU2V0Q3Vyc29yIGNhbGxzIG92ZXIg
dG8gdGhlIFVJIHByb2Nlc3MgaW5zdGVhZCBvZgogICAgIC8vIGFsbG93aW5nIHBsdWctaW5zIHRv
IGNoYW5nZSB0aGUgbW91c2UgY3Vyc29yIGF0IGFueSB0aW1lLgotICAgIFdLRW5hYmxlU2V0dGlu
Z0N1cnNvcldoZW5JbkJhY2tncm91bmQoKTsKKyAgICAvLyBGSVhNRTogU2V0c0N1cnNvckluQmFj
a2dyb3VuZCBjb25uZWN0aW9uIHByb3BlcnR5IGlzIGRlcHJlY2F0ZWQgaW4gZmF2b3Igb2Yga0NH
U1NldHNDdXJzb3JJbkJhY2tncm91bmRUYWdCaXQgd2luZG93IHRhZyBiaXQuCisgICAgLy8gPHJk
YXI6Ly9wcm9ibGVtLzc3NTI0MjI+IGFza3MgZm9yIGFuIEFQSSB0byBzZXQgY3Vyc29yIGZyb20g
YmFja2dyb3VuZCBwcm9jZXNzZXMuCisgICAgQ0dTQ29ubmVjdGlvbklEIGNpZCA9IENHU01haW5D
b25uZWN0aW9uSUQoKTsKKyAgICBDR1NTZXRDb25uZWN0aW9uUHJvcGVydHkoY2lkLCBjaWQsIENG
U1RSKCJTZXRzQ3Vyc29ySW5CYWNrZ3JvdW5kIiksIChDRlR5cGVSZWYpa0NGQm9vbGVhblRydWUp
OwogCiAgICAgUmV0YWluUHRyPENGVVJMUmVmPiBwbHVnaW5VUkwgPSBhZG9wdENGKENGVVJMQ3Jl
YXRlV2l0aEZpbGVTeXN0ZW1QYXRoKDAsIG1fcGx1Z2luUGF0aC5jcmVhdGVDRlN0cmluZygpLmdl
dCgpLCBrQ0ZVUkxQT1NJWFBhdGhTdHlsZSwgZmFsc2UpKTsKICAgICBpZiAoIXBsdWdpblVSTCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XaW5kb3dTZXJ2ZXJDb25u
ZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2luZG93U2VydmVyQ29ubmVj
dGlvbi5oCmluZGV4IDgzOGEzNGZiNWMyZDQ0ZWVlNTQ2NGU1N2VkYzcwZTEwYWRiZDNiMjAuLmU3
YjUxOGM2YzVlYjBiMDYyZDg5YTkxY2E3MDU3N2JhODRlYjA1MTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XaW5kb3dTZXJ2ZXJDb25uZWN0aW9uLmgKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dpbmRvd1NlcnZlckNvbm5lY3Rpb24uaApAQCAtNDEs
OSArNDEsNiBAQCBwcml2YXRlOgogICAgIHZvaWQgd2luZG93U2VydmVyQ29ubmVjdGlvblN0YXRl
Q2hhbmdlZCgpOwogCiAgICAgdm9pZCBhcHBsaWNhdGlvbldpbmRvd01vZGlmaWNhdGlvbnNTdG9w
cGVkKGJvb2wgc3RvcHBlZCk7Ci0KLSAgICBzdGF0aWMgdm9pZCBhcHBsaWNhdGlvbldpbmRvd01v
ZGlmaWNhdGlvbnNTdGFydGVkKHVpbnQzMl90LCB2b2lkKiwgdWludDMyX3QsIHZvaWQqLCB1aW50
MzJfdCk7Ci0gICAgc3RhdGljIHZvaWQgYXBwbGljYXRpb25XaW5kb3dNb2RpZmljYXRpb25zU3Rv
cHBlZCh1aW50MzJfdCwgdm9pZCosIHVpbnQzMl90LCB2b2lkKiwgdWludDMyX3QpOwogI2VuZGlm
CiAKICAgICBib29sIG1fYXBwbGljYXRpb25XaW5kb3dNb2RpZmljYXRpb25zSGF2ZVN0b3BwZWQ7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2luZG93U2VydmVyQ29u
bmVjdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XaW5kb3dTZXJ2ZXJDb25u
ZWN0aW9uLm1tCmluZGV4IDgxOTUzNWMyYWMxMjljOGQ1MjEyMThjOTc1NWM4NGI2MWQ0NGYyODUu
LmM5NzU1ZDcyMmE1ZGMzNTJmM2FhMTJlNDA4Nzk1MDBjZTI5NDMzYmQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XaW5kb3dTZXJ2ZXJDb25uZWN0aW9uLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XaW5kb3dTZXJ2ZXJDb25uZWN0aW9uLm1tCkBA
IC00MSwxNiArNDEsNiBAQCB2b2lkIFdpbmRvd1NlcnZlckNvbm5lY3Rpb246OmFwcGxpY2F0aW9u
V2luZG93TW9kaWZpY2F0aW9uc1N0b3BwZWQoYm9vbCBzdG9wcGVkKQogICAgIHdpbmRvd1NlcnZl
ckNvbm5lY3Rpb25TdGF0ZUNoYW5nZWQoKTsKIH0KIAotdm9pZCBXaW5kb3dTZXJ2ZXJDb25uZWN0
aW9uOjphcHBsaWNhdGlvbldpbmRvd01vZGlmaWNhdGlvbnNTdGFydGVkKHVpbnQzMl90LCB2b2lk
KiwgdWludDMyX3QsIHZvaWQqLCB1aW50MzJfdCkKLXsKLSAgICBXaW5kb3dTZXJ2ZXJDb25uZWN0
aW9uOjpzaW5nbGV0b24oKS5hcHBsaWNhdGlvbldpbmRvd01vZGlmaWNhdGlvbnNTdG9wcGVkKGZh
bHNlKTsKLX0KLQotdm9pZCBXaW5kb3dTZXJ2ZXJDb25uZWN0aW9uOjphcHBsaWNhdGlvbldpbmRv
d01vZGlmaWNhdGlvbnNTdG9wcGVkKHVpbnQzMl90LCB2b2lkKiwgdWludDMyX3QsIHZvaWQqLCB1
aW50MzJfdCkKLXsKLSAgICBXaW5kb3dTZXJ2ZXJDb25uZWN0aW9uOjpzaW5nbGV0b24oKS5hcHBs
aWNhdGlvbldpbmRvd01vZGlmaWNhdGlvbnNTdG9wcGVkKHRydWUpOwotfQotCiB2b2lkIFdpbmRv
d1NlcnZlckNvbm5lY3Rpb246OndpbmRvd1NlcnZlckNvbm5lY3Rpb25TdGF0ZUNoYW5nZWQoKQog
ewogICAgIGZvciAoYXV0byogcHJvY2Vzc1Bvb2wgOiBXZWJQcm9jZXNzUG9vbDo6YWxsUHJvY2Vz
c1Bvb2xzKCkpCkBAIC02NSwyMyArNTUsNDYgQEAgV2luZG93U2VydmVyQ29ubmVjdGlvbiYgV2lu
ZG93U2VydmVyQ29ubmVjdGlvbjo6c2luZ2xldG9uKCkKICAgICByZXR1cm4gd2luZG93U2VydmVy
Q29ubmVjdGlvbjsKIH0KIAorc3RhdGljIGJvb2wgcmVnaXN0ZXJPY2NsdXNpb25Ob3RpZmljYXRp
b25IYW5kbGVyKENHU05vdGlmaWNhdGlvblR5cGUgdHlwZSwgQ0dTTm90aWZ5Q29ubmVjdGlvblBy
b2NQdHIgaGFuZGxlcikKK3sKKyAgICBDR1NDb25uZWN0aW9uSUQgbWFpbkNvbm5lY3Rpb24gPSBD
R1NNYWluQ29ubmVjdGlvbklEKCk7CisgICAgc3RhdGljIGJvb2wgbm90aWZpY2F0aW9uc0VuYWJs
ZWQ7CisgICAgaWYgKCFub3RpZmljYXRpb25zRW5hYmxlZCkgeworICAgICAgICBpZiAoQ0dTUGFj
a2FnZXNFbmFibGVDb25uZWN0aW9uT2NjbHVzaW9uTm90aWZpY2F0aW9ucyhtYWluQ29ubmVjdGlv
biwgdHJ1ZSwgbnVsbHB0cikgIT0ga0NHRXJyb3JTdWNjZXNzKQorICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgICAgICBpZiAoQ0dTUGFja2FnZXNFbmFibGVDb25uZWN0aW9uV2luZG93TW9k
aWZpY2F0aW9uTm90aWZpY2F0aW9ucyhtYWluQ29ubmVjdGlvbiwgdHJ1ZSwgbnVsbHB0cikgIT0g
a0NHRXJyb3JTdWNjZXNzKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBub3Rp
ZmljYXRpb25zRW5hYmxlZCA9IHRydWU7CisgICAgfQorCisgICAgcmV0dXJuIENHU1JlZ2lzdGVy
Q29ubmVjdGlvbk5vdGlmeVByb2MobWFpbkNvbm5lY3Rpb24sIGhhbmRsZXIsIHR5cGUsIG51bGxw
dHIpID09IGtDR0Vycm9yU3VjY2VzczsKK30KKwogV2luZG93U2VydmVyQ29ubmVjdGlvbjo6V2lu
ZG93U2VydmVyQ29ubmVjdGlvbigpCiAgICAgOiBtX2FwcGxpY2F0aW9uV2luZG93TW9kaWZpY2F0
aW9uc0hhdmVTdG9wcGVkKGZhbHNlKQogewogI2lmIEhBVkUoV0lORE9XX1NFUlZFUl9PQ0NMVVNJ
T05fTk9USUZJQ0FUSU9OUykKICAgICBzdHJ1Y3QgT2NjbHVzaW9uTm90aWZpY2F0aW9uSGFuZGxl
ciB7Ci0gICAgICAgIFdLT2NjbHVzaW9uTm90aWZpY2F0aW9uVHlwZSBub3RpZmljYXRpb25UeXBl
OwotICAgICAgICBXS09jY2x1c2lvbk5vdGlmaWNhdGlvbkhhbmRsZXIgaGFuZGxlcjsKKyAgICAg
ICAgQ0dTTm90aWZpY2F0aW9uVHlwZSBub3RpZmljYXRpb25UeXBlOworICAgICAgICBDR1NOb3Rp
ZnlDb25uZWN0aW9uUHJvY1B0ciBoYW5kbGVyOwogICAgICAgICBjb25zdCBjaGFyKiBuYW1lOwog
ICAgIH07CiAKKyAgICBzdGF0aWMgYXV0byB3aW5kb3dNb2RpZmljYXRpb25zU3RhcnRlZCA9IFtd
KENHU05vdGlmaWNhdGlvblR5cGUsIHZvaWQqLCB1aW50MzJfdCwgdm9pZCosIENHU0Nvbm5lY3Rp
b25JRCkgeworICAgICAgICBXaW5kb3dTZXJ2ZXJDb25uZWN0aW9uOjpzaW5nbGV0b24oKS5hcHBs
aWNhdGlvbldpbmRvd01vZGlmaWNhdGlvbnNTdG9wcGVkKGZhbHNlKTsKKyAgICB9OworCisgICAg
c3RhdGljIGF1dG8gd2luZG93TW9kaWZpY2F0aW9uc1N0b3BwZWQgPSBbXShDR1NOb3RpZmljYXRp
b25UeXBlLCB2b2lkKiwgdWludDMyX3QsIHZvaWQqLCBDR1NDb25uZWN0aW9uSUQpIHsKKyAgICAg
ICAgV2luZG93U2VydmVyQ29ubmVjdGlvbjo6c2luZ2xldG9uKCkuYXBwbGljYXRpb25XaW5kb3dN
b2RpZmljYXRpb25zU3RvcHBlZCh0cnVlKTsKKyAgICB9OworCiAgICAgc3RhdGljIGNvbnN0IE9j
Y2x1c2lvbk5vdGlmaWNhdGlvbkhhbmRsZXIgb2NjbHVzaW9uTm90aWZpY2F0aW9uSGFuZGxlcnNb
XSA9IHsKLSAgICAgICAgeyBXS09jY2x1c2lvbk5vdGlmaWNhdGlvblR5cGVBcHBsaWNhdGlvbldp
bmRvd01vZGlmaWNhdGlvbnNTdGFydGVkLCBhcHBsaWNhdGlvbldpbmRvd01vZGlmaWNhdGlvbnNT
dGFydGVkLCAiQXBwbGljYXRpb24gV2luZG93IE1vZGlmaWNhdGlvbnMgU3RhcnRlZCIgfSwKLSAg
ICAgICAgeyBXS09jY2x1c2lvbk5vdGlmaWNhdGlvblR5cGVBcHBsaWNhdGlvbldpbmRvd01vZGlm
aWNhdGlvbnNTdG9wcGVkLCBhcHBsaWNhdGlvbldpbmRvd01vZGlmaWNhdGlvbnNTdG9wcGVkLCAi
QXBwbGljYXRpb24gV2luZG93IE1vZGlmaWNhdGlvbnMgU3RvcHBlZCIgfSwKKyAgICAgICAgeyBr
Q0dTQ29ubmVjdGlvbldpbmRvd01vZGlmaWNhdGlvbnNTdGFydGVkLCB3aW5kb3dNb2RpZmljYXRp
b25zU3RhcnRlZCwgIkFwcGxpY2F0aW9uIFdpbmRvdyBNb2RpZmljYXRpb25zIFN0YXJ0ZWQiIH0s
CisgICAgICAgIHsga0NHU0Nvbm5lY3Rpb25XaW5kb3dNb2RpZmljYXRpb25zU3RvcHBlZCwgd2lu
ZG93TW9kaWZpY2F0aW9uc1N0b3BwZWQsICJBcHBsaWNhdGlvbiBXaW5kb3cgTW9kaWZpY2F0aW9u
cyBTdG9wcGVkIiB9LAogICAgIH07CiAKICAgICBmb3IgKGNvbnN0IGF1dG8mIG9jY2x1c2lvbk5v
dGlmaWNhdGlvbkhhbmRsZXIgOiBvY2NsdXNpb25Ob3RpZmljYXRpb25IYW5kbGVycykgewotICAg
ICAgICBib29sIHJlc3VsdCA9IFdLUmVnaXN0ZXJPY2NsdXNpb25Ob3RpZmljYXRpb25IYW5kbGVy
KG9jY2x1c2lvbk5vdGlmaWNhdGlvbkhhbmRsZXIubm90aWZpY2F0aW9uVHlwZSwgb2NjbHVzaW9u
Tm90aWZpY2F0aW9uSGFuZGxlci5oYW5kbGVyKTsKKyAgICAgICAgYm9vbCByZXN1bHQgPSByZWdp
c3Rlck9jY2x1c2lvbk5vdGlmaWNhdGlvbkhhbmRsZXIob2NjbHVzaW9uTm90aWZpY2F0aW9uSGFu
ZGxlci5ub3RpZmljYXRpb25UeXBlLCBvY2NsdXNpb25Ob3RpZmljYXRpb25IYW5kbGVyLmhhbmRs
ZXIpOwogICAgICAgICBVTlVTRURfUEFSQU0ocmVzdWx0KTsKICAgICAgICAgQVNTRVJUX1dJVEhf
TUVTU0FHRShyZXN1bHQsICJSZWdpc3RyYXRpb24gb2YgXCIlc1wiIG5vdGlmaWNhdGlvbiBoYW5k
bGVyIGZhaWxlZC5cbiIsIG9jY2x1c2lvbk5vdGlmaWNhdGlvbkhhbmRsZXIubmFtZSk7CiAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21h
Yy9XZWJTeXN0ZW1JbnRlcmZhY2UubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvbWFjL1dlYlN5c3RlbUludGVyZmFjZS5tbQppbmRleCA0NGRjN2VjYjM2MjBlOGY0
NTE0MmViMzdjNzg3NWFkY2IzYjk0MTJiLi44M2RkODNlNDM0ZGJkMzQ5NTM0M2FlNzEwMTkyNDkz
MmQ4ZmJhNTIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvbWFjL1dlYlN5c3RlbUludGVyZmFjZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYlN5c3RlbUludGVyZmFjZS5tbQpAQCAtMzcsMjEg
KzM3LDExIEBAIHZvaWQgSW5pdFdlYkNvcmVTeXN0ZW1JbnRlcmZhY2Uodm9pZCkKICAgICAKICAg
ICBkaXNwYXRjaF9vbmNlKCZpbml0T25jZSwgXnsKICAgICAgICAgSU5JVChDQUxheWVyRW51bWVy
YXRlUmVjdHNCZWluZ0RyYXduV2l0aEJsb2NrKTsKLSAgICAgICAgSU5JVChDR1BhdHRlcm5DcmVh
dGVXaXRoSW1hZ2VBbmRUcmFuc2Zvcm0pOwotI2lmICFQTEFURk9STShJT1MpCi0gICAgICAgIElO
SVQoQ0dDb250ZXh0RHJhd3NXaXRoQ29ycmVjdFNoYWRvd09mZnNldHMpOwotI2VuZGlmCiAgICAg
ICAgIElOSVQoQ29weUNPTk5FQ1RQcm94eVJlc3BvbnNlKTsKICNpZiAhUExBVEZPUk0oSU9TKQog
ICAgICAgICBJTklUKERyYXdCZXplbGVkVGV4dEFyZWEpOwotICAgICAgICBJTklUKERyYXdGb2N1
c1JpbmcpOwotICAgICAgICBJTklUKERyYXdGb2N1c1JpbmdBdFRpbWUpOwotICAgICAgICBJTklU
KERyYXdDZWxsRm9jdXNSaW5nV2l0aEZyYW1lQXRUaW1lKTsKICAgICAgICAgSU5JVChEcmF3TWVk
aWFTbGlkZXJUcmFjayk7CiAgICAgICAgIElOSVQoRHJhd01lZGlhVUlQYXJ0KTsKLSNlbmRpZgot
ICAgICAgICBJTklUKENHQ29udGV4dElzUERGQ29udGV4dCk7Ci0jaWYgIVBMQVRGT1JNKElPUykK
ICAgICAgICAgSU5JVChHZXRXaGVlbEV2ZW50RGVsdGFzKTsKICAgICAgICAgSU5JVChHZXROU0V2
ZW50S2V5Q2hhcik7CiAgICAgICAgIElOSVQoSGl0VGVzdE1lZGlhVUlQYXJ0KTsKQEAgLTcxLDE2
ICs2MSwxMSBAQCB2b2lkIEluaXRXZWJDb3JlU3lzdGVtSW50ZXJmYWNlKHZvaWQpCiAjZW5kaWYK
ICAgICAgICAgSU5JVChTZXRDT05ORUNUUHJveHlBdXRob3JpemF0aW9uRm9yU3RyZWFtKTsKICAg
ICAgICAgSU5JVChTZXRDT05ORUNUUHJveHlGb3JTdHJlYW0pOwotI2lmICFQTEFURk9STShJT1Mp
Ci0gICAgICAgIElOSVQoU2V0RHJhZ0ltYWdlKTsKLSNlbmRpZgogCiAjaWYgIVBMQVRGT1JNKElP
UykKICAgICAgICAgSU5JVChFeGVjdXRhYmxlV2FzTGlua2VkT25PckJlZm9yZVNub3dMZW9wYXJk
KTsKICAgICAgICAgSU5JVChDb3B5RGVmYXVsdFNlYXJjaFByb3ZpZGVyRGlzcGxheU5hbWUpOwog
ICAgICAgICBJTklUKEN1cnNvcik7Ci0gICAgICAgIElOSVQoV2luZG93U2V0U2NhbGVkRnJhbWUp
OwotICAgICAgICBJTklUKFdpbmRvd1NldEFscGhhKTsKICAgICAgICAgSU5JVChTcGVlY2hTeW50
aGVzaXNHZXRWb2ljZUlkZW50aWZpZXJzKTsKICAgICAgICAgSU5JVChTcGVlY2hTeW50aGVzaXNH
ZXREZWZhdWx0Vm9pY2VJZGVudGlmaWVyRm9yTG9jYWxlKTsKICAgICAgICAgSU5JVChOU0VsYXN0
aWNEZWx0YUZvclRpbWVEZWx0YSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9DYXJib24vSElXZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2FyYm9uL0hJ
V2ViVmlldy5tbQppbmRleCAzNDU4NWMyNTJjM2IxOGNhY2Q2ZTA3YWQ1ZTk0NDg3NzlkOGJlNDU3
Li5hOWY2ZWFlZDcyMDM4ODQ3M2VlMzZhYTAxZGIxZDliMzQzMWQ2ZTA4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DYXJib24vSElXZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL0NhcmJvbi9ISVdlYlZpZXcubW0KQEAgLTg1LDYgKzg1LDIxIEBAIC0g
KGludCl0YWcKIAogQGVuZAogCitAaW50ZXJmYWNlIE5TV2luZG93R3JhcGhpY3NDb250ZXh0ICgp
CistICh2b2lkKV93ZWJfc2V0R3JhcGhpY3NQb3J0OihDR0NvbnRleHRSZWYpY29udGV4dDsKK0Bl
bmQKKworQGltcGxlbWVudGF0aW9uIE5TV2luZG93R3JhcGhpY3NDb250ZXh0ICgpCisKKy0gKHZv
aWQpX3dlYl9zZXRHcmFwaGljc1BvcnQ6KENHQ29udGV4dFJlZiljb250ZXh0Cit7CisgICAgQ0dD
b250ZXh0UmV0YWluKGNvbnRleHQpOworICAgIENHQ29udGV4dFJlbGVhc2UoX2Nnc0NvbnRleHQp
OworICAgIF9jZ3NDb250ZXh0ID0gY29udGV4dDsKK30KKworQGVuZAorCiBzdHJ1Y3QgSElXZWJW
aWV3CiB7CiAgICAgSElWaWV3UmVmCQkJCQkJCWZWaWV3UmVmOwpAQCAtMjkwLDYgKzMwNSwyMiBA
QCBHZXRCZWhhdmlvcnMoKQogCXJldHVybiBrQ29udHJvbFN1cHBvcnRzRGF0YUFjY2VzcyB8IGtD
b250cm9sU3VwcG9ydHNHZXRSZWdpb24gfCBrQ29udHJvbEdldHNGb2N1c09uQ2xpY2s7CiB9CiAK
K3N0YXRpYyBDR0NvbnRleHRSZWYgb3ZlcnJpZGVDR0NvbnRleHQoTlNXaW5kb3cgKndpbmRvdywg
Q0dDb250ZXh0UmVmIGNvbnRleHQpCit7CisgICAgTlNXaW5kb3dHcmFwaGljc0NvbnRleHQgKmdy
YXBoaWNzQ29udGV4dCA9IChOU1dpbmRvd0dyYXBoaWNzQ29udGV4dCAqKVt3aW5kb3cgZ3JhcGhp
Y3NDb250ZXh0XTsKKyAgICBDR0NvbnRleHRSZWYgc2F2ZWRDb250ZXh0ID0gKENHQ29udGV4dFJl
ZilbZ3JhcGhpY3NDb250ZXh0IGdyYXBoaWNzUG9ydF07CisgICAgQ0dDb250ZXh0UmV0YWluKHNh
dmVkQ29udGV4dCk7CisgICAgW2dyYXBoaWNzQ29udGV4dCBfd2ViX3NldEdyYXBoaWNzUG9ydDpj
b250ZXh0XTsKKyAgICByZXR1cm4gc2F2ZWRDb250ZXh0OworfQorCitzdGF0aWMgdm9pZCByZXN0
b3JlQ0dDb250ZXh0KE5TV2luZG93ICp3aW5kb3csIENHQ29udGV4dFJlZiBzYXZlZENvbnRleHQp
Cit7CisgICAgTlNXaW5kb3dHcmFwaGljc0NvbnRleHQgKmdyYXBoaWNzQ29udGV4dCA9IChOU1dp
bmRvd0dyYXBoaWNzQ29udGV4dCAqKVt3aW5kb3cgZ3JhcGhpY3NDb250ZXh0XTsKKyAgICBbZ3Jh
cGhpY3NDb250ZXh0IF93ZWJfc2V0R3JhcGhpY3NQb3J0OnNhdmVkQ29udGV4dF07CisgICAgQ0dD
b250ZXh0UmVsZWFzZShzYXZlZENvbnRleHQpOworfQorCiAvLy0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KIC8vIERyYXcKIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtMzIxLDcgKzM1
Miw3IEBAIERyYXcoIEhJV2ViVmlldyogaW5WaWV3LCBSZ25IYW5kbGUgbGltaXRSZ24sIENHQ29u
dGV4dFJlZiBpbkNvbnRleHQgKQogCiAJSElWaWV3R2V0Qm91bmRzKCBpblZpZXctPmZWaWV3UmVm
LCAmYm91bmRzICk7CiAKLSAgICBDR0NvbnRleHRSZWYgc2F2ZWRDb250ZXh0ID0gV0tOU1dpbmRv
d092ZXJyaWRlQ0dDb250ZXh0KGluVmlldy0+ZktpdFdpbmRvdywgaW5Db250ZXh0KTsKKyAgICBD
R0NvbnRleHRSZWYgc2F2ZWRDb250ZXh0ID0gb3ZlcnJpZGVDR0NvbnRleHQoaW5WaWV3LT5mS2l0
V2luZG93LCBpbkNvbnRleHQpOwogICAgIFtOU0dyYXBoaWNzQ29udGV4dCBzZXRDdXJyZW50Q29u
dGV4dDpbaW5WaWV3LT5mS2l0V2luZG93IGdyYXBoaWNzQ29udGV4dF1dOwogCiAJR2V0UmVnaW9u
Qm91bmRzKCBsaW1pdFJnbiwgJmRyYXdSZWN0ICk7CkBAIC0zNTEsNyArMzgyLDcgQEAgRHJhdygg
SElXZWJWaWV3KiBpblZpZXcsIFJnbkhhbmRsZSBsaW1pdFJnbiwgQ0dDb250ZXh0UmVmIGluQ29u
dGV4dCApCiAgICAgZWxzZQogICAgICAgICBbaW5WaWV3LT5mV2ViVmlldyBkaXNwbGF5UmVjdDoq
KE5TUmVjdCopJmhpUmVjdF07CiAKLSAgICBXS05TV2luZG93UmVzdG9yZUNHQ29udGV4dChpblZp
ZXctPmZLaXRXaW5kb3csIHNhdmVkQ29udGV4dCk7CisgICAgcmVzdG9yZUNHQ29udGV4dChpblZp
ZXctPmZLaXRXaW5kb3csIHNhdmVkQ29udGV4dCk7CiAKICAgICBpZiAoICFpblZpZXctPmZJc0Nv
bXBvc2l0ZWQgKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1Bs
dWdpbnMvSG9zdGVkL1dlYkhvc3RlZE5ldHNjYXBlUGx1Z2luVmlldy5tbSBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL1dlYkhvc3RlZE5ldHNjYXBlUGx1Z2luVmlldy5t
bQppbmRleCA5ZTIwNDRlMjZlMTM5MDIxZWI4Y2E2MzM2MjU1ZjJjODMzYzFiOGIyLi42OTVhNWNm
NTI3MzczZDMwOWE4M2I2NGQ2ZjFkMDEwMGVkM2E0MDhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9XZWJIb3N0ZWROZXRzY2FwZVBsdWdpblZpZXcu
bW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvV2ViSG9zdGVk
TmV0c2NhcGVQbHVnaW5WaWV3Lm1tCkBAIC03Niw3ICs3Niw3IEBAICsgKHZvaWQpaW5pdGlhbGl6
ZQogICAgIFdURjo6aW5pdGlhbGl6ZU1haW5UaHJlYWRUb1Byb2Nlc3NNYWluVGhyZWFkKCk7CiAg
ICAgUnVuTG9vcDo6aW5pdGlhbGl6ZU1haW5SdW5Mb29wKCk7CiAjZW5kaWYKLSAgICBXS1NlbmRV
c2VyQ2hhbmdlTm90aWZpY2F0aW9ucygpOworICAgIHNlbmRVc2VyQ2hhbmdlTm90aWZpY2F0aW9u
cygpOwogfQogCiAtIChpZClpbml0V2l0aEZyYW1lOihOU1JlY3QpZnJhbWUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViQmFzZU5ldHNjYXBlUGx1Z2luVmll
dy5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJCYXNlTmV0c2NhcGVQbHVn
aW5WaWV3LmgKaW5kZXggYzIyMjNhYjZkMjY3NTFmMzhjMzg5NTgxYmQzNDlkZTk4MTRjMTViMS4u
Y2Q0MzBkMzY2OTcxZWM5ZmUyZWEwZDQ0MDU5M2I1ODBjOWNhMmUyNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJCYXNlTmV0c2NhcGVQbHVnaW5WaWV3LmgK
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJCYXNlTmV0c2NhcGVQbHVn
aW5WaWV3LmgKQEAgLTEzNCw2ICsxMzQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIGJvb2wgZ2V0QXV0aGVudGljYXRpb25JbmZvKGNvbnN0IGNoYXIqIHByb3Rv
Y29sU3RyLCBjb25zdCBjaGFyKiBob3N0U3RyLCBpbnQzMl90IHBvcnQsIGNvbnN0IGNoYXIqIHNj
aGVtZVN0ciwgY29uc3QgY2hhciogcmVhbG1TdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBXVEY6OkNTdHJpbmcmIHVzZXJuYW1lLCBXVEY6OkNTdHJpbmcmIHBhc3N3b3JkKTsKK3ZvaWQg
c2VuZFVzZXJDaGFuZ2VOb3RpZmljYXRpb25zKCk7CiB9IAogCiAjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViQmFzZU5ldHNjYXBlUGx1Z2luVmll
dy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViQmFzZU5ldHNjYXBlUGx1
Z2luVmlldy5tbQppbmRleCA2NGRlOTAxMGViZGIwYjA2OWQ2Zjg2M2EzZmVmMmZmZDdiNWQ0MzM4
Li5iZTFjMzBiM2YzMDlkYTY4NTVmM2NkMWQyN2FiNDcwODlhZWQyYzM1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYkJhc2VOZXRzY2FwZVBsdWdpblZpZXcu
bW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJCYXNlTmV0c2NhcGVQ
bHVnaW5WaWV3Lm1tCkBAIC01NSw2ICs1NSw3IEBACiAjaW1wb3J0IDxXZWJDb3JlL1NlY3VyaXR5
T3JpZ2luLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYkNvcmVPYmpDRXh0cmFzLmg+CiAjaW1wb3J0
IDxXZWJLaXRMZWdhY3kvRE9NUHJpdmF0ZS5oPgorI2ltcG9ydCA8cGFsL3NwaS9jZy9Db3JlR3Jh
cGhpY3NTUEkuaD4KICNpbXBvcnQgPHJ1bnRpbWUvSW5pdGlhbGl6ZVRocmVhZGluZy5oPgogI2lt
cG9ydCA8d3RmL0Fzc2VydGlvbnMuaD4KICNpbXBvcnQgPHd0Zi9NYWluVGhyZWFkLmg+CkBAIC03
Myw3ICs3NCw3IEBAICsgKHZvaWQpaW5pdGlhbGl6ZQogICAgIEpTQzo6aW5pdGlhbGl6ZVRocmVh
ZGluZygpOwogICAgIFdURjo6aW5pdGlhbGl6ZU1haW5UaHJlYWRUb1Byb2Nlc3NNYWluVGhyZWFk
KCk7CiAgICAgUnVuTG9vcDo6aW5pdGlhbGl6ZU1haW5SdW5Mb29wKCk7Ci0gICAgV0tTZW5kVXNl
ckNoYW5nZU5vdGlmaWNhdGlvbnMoKTsKKyAgICBXZWJLaXQ6OnNlbmRVc2VyQ2hhbmdlTm90aWZp
Y2F0aW9ucygpOwogfQogCiAtIChpZClpbml0V2l0aEZyYW1lOihOU1JlY3QpZnJhbWUKQEAgLTkw
MCw2ICs5MDEsMjMgQEAgYm9vbCBnZXRBdXRoZW50aWNhdGlvbkluZm8oY29uc3QgY2hhciogcHJv
dG9jb2xTdHIsIGNvbnN0IGNoYXIqIGhvc3RTdHIsIGludDMyX3QKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIAordm9pZCBzZW5kVXNlckNoYW5nZU5vdGlmaWNhdGlvbnMoKQoreworICAgIGF1dG8gY29u
c29sZUNvbm5lY3Rpb25DaGFuZ2VOb3RpZnlQcm9jID0gW10oQ0dTTm90aWZpY2F0aW9uVHlwZSB0
eXBlLCBDR1NOb3RpZmljYXRpb25EYXRhLCBDR1NCeXRlQ291bnQsIENHU05vdGlmaWNhdGlvbkFy
ZykgeworICAgICAgICBOU1N0cmluZyAqbm90aWZpY2F0aW9uTmFtZSA9IG5pbDsKKyAgICAgICAg
aWYgKHR5cGUgPT0ga0NHU2Vzc2lvbkNvbnNvbGVDb25uZWN0KQorICAgICAgICAgICAgbm90aWZp
Y2F0aW9uTmFtZSA9IExvZ2luV2luZG93RGlkU3dpdGNoVG9Vc2VyTm90aWZpY2F0aW9uOworICAg
ICAgICBlbHNlIGlmICh0eXBlID09IGtDR1Nlc3Npb25Db25zb2xlRGlzY29ubmVjdCkKKyAgICAg
ICAgICAgIG5vdGlmaWNhdGlvbk5hbWUgPSBMb2dpbldpbmRvd0RpZFN3aXRjaEZyb21Vc2VyTm90
aWZpY2F0aW9uOworICAgICAgICBlbHNlCisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKKyAgICAgICAgW1tOU05vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXSBwb3N0Tm90
aWZpY2F0aW9uTmFtZTpub3RpZmljYXRpb25OYW1lIG9iamVjdDpuaWxdOworICAgIH07CisKKyAg
ICBDR1NSZWdpc3Rlck5vdGlmeVByb2MoY29uc29sZUNvbm5lY3Rpb25DaGFuZ2VOb3RpZnlQcm9j
LCBrQ0dTZXNzaW9uQ29uc29sZUNvbm5lY3QsIE5VTEwpOworICAgIENHU1JlZ2lzdGVyTm90aWZ5
UHJvYyhjb25zb2xlQ29ubmVjdGlvbkNoYW5nZU5vdGlmeVByb2MsIGtDR1Nlc3Npb25Db25zb2xl
RGlzY29ubmVjdCwgTlVMTCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYg
Ly8gIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblZpZXcubW0gYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luVmlldy5tbQppbmRleCBjNjgw
ZmY3ZWUzMWM5M2I4ZmI0OTIyOTdlNGU3YWQ5MTQxYTRkZGU0Li4yYmJkM2RlYmU2NmUxOGQ4ZjMx
ODBjOTRjYTEzMzdmY2Y3ZDg4MTcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luVmlldy5tbQpAQCAtMTkzLDcgKzE5Myw3
IEBAICsgKHZvaWQpaW5pdGlhbGl6ZQogICAgIEpTQzo6aW5pdGlhbGl6ZVRocmVhZGluZygpOwog
ICAgIFdURjo6aW5pdGlhbGl6ZU1haW5UaHJlYWRUb1Byb2Nlc3NNYWluVGhyZWFkKCk7CiAgICAg
UnVuTG9vcDo6aW5pdGlhbGl6ZU1haW5SdW5Mb29wKCk7Ci0gICAgV0tTZW5kVXNlckNoYW5nZU5v
dGlmaWNhdGlvbnMoKTsKKyAgICBzZW5kVXNlckNoYW5nZU5vdGlmaWNhdGlvbnMoKTsKIH0KIAog
Ly8gTUFSSzogRVZFTlRTCkBAIC0zNzksMTAgKzM3OSwxMCBAQCAtIChQb3J0U3RhdGUpc2F2ZUFu
ZFNldE5ld1BvcnRTdGF0ZUZvclVwZGF0ZTooQk9PTClmb3JVcGRhdGUKICAgICAgICAgICAgIHFk
UG9ydFN0YXRlLT5jbGlwUmVnaW9uID0gY2xpcFJlZ2lvbjsKIAogICAgICAgICAgICAgQ0dDb250
ZXh0UmVmIGN1cnJlbnRDb250ZXh0ID0gKENHQ29udGV4dFJlZilbW05TR3JhcGhpY3NDb250ZXh0
IGN1cnJlbnRDb250ZXh0XSBncmFwaGljc1BvcnRdOwotICAgICAgICAgICAgaWYgKGN1cnJlbnRD
b250ZXh0ICYmIFdLQ0dDb250ZXh0SXNCaXRtYXBDb250ZXh0KGN1cnJlbnRDb250ZXh0KSkgewot
ICAgICAgICAgICAgICAgIC8vIFdlIHVzZSBXS0NHQ29udGV4dElzQml0bWFwQ29udGV4dCBoZXJl
LCBiZWNhdXNlIGlmIHdlIGp1c3QgY2FsbGVkIENHQml0bWFwQ29udGV4dEdldERhdGEKLSAgICAg
ICAgICAgICAgICAvLyBvbiBhbnkgY29udGV4dCwgd2UnZCBsb2cgdG8gdGhlIGNvbnNvbGUgZXZl
cnkgdGltZS4gQnV0IGV2ZW4gaWYgV0tDR0NvbnRleHRJc0JpdG1hcENvbnRleHQKLSAgICAgICAg
ICAgICAgICAvLyByZXR1cm5zIHRydWUsIGl0IHN0aWxsIG1pZ2h0IG5vdCBiZSBhIGNvbnRleHQg
d2UgbmVlZCB0byBjcmVhdGUgYSBHV29ybGQgZm9yOyBmb3IgZXhhbXBsZQorICAgICAgICAgICAg
aWYgKGN1cnJlbnRDb250ZXh0ICYmIENHQ29udGV4dEdldFR5cGUoY3VycmVudENvbnRleHQpID09
IGtDR0NvbnRleHRUeXBlQml0bWFwKSB7CisgICAgICAgICAgICAgICAgLy8gV2UgY2hlY2sgZm9y
IGtDR0NvbnRleHRUeXBlQml0bWFwIGhlcmUsIGJlY2F1c2UgaWYgd2UganVzdCBjYWxsZWQgQ0dC
aXRtYXBDb250ZXh0R2V0RGF0YQorICAgICAgICAgICAgICAgIC8vIG9uIGFueSBjb250ZXh0LCB3
ZSdkIGxvZyB0byB0aGUgY29uc29sZSBldmVyeSB0aW1lLiBCdXQgZXZlbiBpZiBjdXJyZW50Q29u
dGV4dCBpcyBhCisgICAgICAgICAgICAgICAgLy8ga0NHQ29udGV4dFR5cGVCaXRtYXAsIGl0IHN0
aWxsIG1pZ2h0IG5vdCBiZSBhIGNvbnRleHQgd2UgbmVlZCB0byBjcmVhdGUgYSBHV29ybGQgZm9y
OyBmb3IgZXhhbXBsZQogICAgICAgICAgICAgICAgIC8vIHRyYW5zcGFyZW5jeSBsYXllcnMgd2ls
bCByZXR1cm4gdHJ1ZSwgYnV0IHJldHVybiAwIGZvciBDR0JpdG1hcENvbnRleHRHZXREYXRhLgog
ICAgICAgICAgICAgICAgIHZvaWQqIG9mZnNjcmVlbkRhdGEgPSBDR0JpdG1hcENvbnRleHRHZXRE
YXRhKGN1cnJlbnRDb250ZXh0KTsKICAgICAgICAgICAgICAgICBpZiAob2Zmc2NyZWVuRGF0YSkg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
U3lzdGVtSW50ZXJmYWNlLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViU3lzdGVtSW50ZXJmYWNlLm1tCmluZGV4IGQ0NTUxNmY1ZWVlMWMwODJjOTgyOGQ5ZTc0
NzRlYzk2ODljNDdiNTguLjliZTAwMDJmZDUzZjQ5MzMzNGViMmM5OTkzMTFmYTgzOTQyZjdlM2Yg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlN5
c3RlbUludGVyZmFjZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJTeXN0ZW1JbnRlcmZhY2UubW0KQEAgLTQzLDE2ICs0Myw5IEBAIHZvaWQgSW5pdFdl
YkNvcmVTeXN0ZW1JbnRlcmZhY2Uodm9pZCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgSU5JVChD
QUxheWVyRW51bWVyYXRlUmVjdHNCZWluZ0RyYXduV2l0aEJsb2NrKTsKLSAgICBJTklUKENHUGF0
dGVybkNyZWF0ZVdpdGhJbWFnZUFuZFRyYW5zZm9ybSk7Ci0jaWYgIVBMQVRGT1JNKElPUykKLSAg
ICBJTklUKENHQ29udGV4dERyYXdzV2l0aENvcnJlY3RTaGFkb3dPZmZzZXRzKTsKLSNlbmRpZgog
ICAgIElOSVQoQ29weUNPTk5FQ1RQcm94eVJlc3BvbnNlKTsKICNpZiAhUExBVEZPUk0oSU9TKQog
ICAgIElOSVQoRHJhd0JlemVsZWRUZXh0QXJlYSk7Ci0gICAgSU5JVChEcmF3Rm9jdXNSaW5nKTsK
LSAgICBJTklUKERyYXdGb2N1c1JpbmdBdFRpbWUpOwotICAgIElOSVQoRHJhd0NlbGxGb2N1c1Jp
bmdXaXRoRnJhbWVBdFRpbWUpOwogICAgIElOSVQoRHJhd01lZGlhVUlQYXJ0KTsKICAgICBJTklU
KERyYXdNZWRpYVNsaWRlclRyYWNrKTsKICAgICBJTklUKEdldFdoZWVsRXZlbnREZWx0YXMpOwpA
QCAtNjEsMTUgKzU0LDkgQEAgdm9pZCBJbml0V2ViQ29yZVN5c3RlbUludGVyZmFjZSh2b2lkKQog
ICAgIElOSVQoTWVhc3VyZU1lZGlhVUlQYXJ0KTsKICAgICBJTklUKENyZWF0ZU1lZGlhVUlCYWNr
Z3JvdW5kVmlldyk7CiAgICAgSU5JVChDcmVhdGVNZWRpYVVJQ29udHJvbCk7Ci0gICAgSU5JVChX
aW5kb3dTZXRBbHBoYSk7Ci0gICAgSU5JVChXaW5kb3dTZXRTY2FsZWRGcmFtZSk7CiAjZW5kaWYK
ICAgICBJTklUKFNldENPTk5FQ1RQcm94eUF1dGhvcml6YXRpb25Gb3JTdHJlYW0pOwogICAgIElO
SVQoU2V0Q09OTkVDVFByb3h5Rm9yU3RyZWFtKTsKLSNpZiAhUExBVEZPUk0oSU9TKQotICAgIElO
SVQoU2V0RHJhZ0ltYWdlKTsKLSNlbmRpZgotICAgIElOSVQoQ0dDb250ZXh0SXNQREZDb250ZXh0
KTsKICNpZiBFTkFCTEUoVklERU8pICYmICFQTEFURk9STShJT1MpCiAgICAgSU5JVChRVEluY2x1
ZGVPbmx5TW9kZXJuTWVkaWFGaWxlVHlwZXMpOwogICAgIElOSVQoUVRNb3ZpZURpc2FibGVDb21w
b25lbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJG
cmFtZS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KaW5k
ZXggZjBmOGU2Mjg1ODBiMjlmZTA0N2VkZGY2ZWI0NzU3OGM2ZDA1ZGQyZC4uZTcwOTNjOTZhYWM0
NzRlM2FlZTllNzJkMjNiMjRlYjFjNTg5YTJlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJWaWV3L1dlYkZyYW1lLm1tCkBAIC01OTgsNyArNTk4LDcgQEAgLSAoUGFpbnRCZWhhdmlv
cilfcGFpbnRCZWhhdmlvckZvckRlc3RpbmF0aW9uQ29udGV4dDooQ0dDb250ZXh0UmVmKWNvbnRl
eHQKICAgICAgICAgcmV0dXJuIFBhaW50QmVoYXZpb3JGbGF0dGVuQ29tcG9zaXRpbmdMYXllcnMg
fCBQYWludEJlaGF2aW9yU25hcHNob3R0aW5nOwogI2VuZGlmCiAKLSAgICBpZiAoIVdLQ0dDb250
ZXh0SXNCaXRtYXBDb250ZXh0KGNvbnRleHQpKQorICAgIGlmIChDR0NvbnRleHRHZXRUeXBlKGNv
bnRleHQpICE9IGtDR0NvbnRleHRUeXBlQml0bWFwKQogICAgICAgICByZXR1cm4gUGFpbnRCZWhh
dmlvck5vcm1hbDsKIAogICAgIC8vIElmIHdlJ3JlIGRyYXdpbmcgaW50byBhIGJpdG1hcCwgd2Ug
bWlnaHQgYmUgc25hcHNob3R0aW5nLCBvciBkcmF3aW5nIGludG8gYSBsYXllci1iYWNrZWQgdmll
dy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnVsbFNj
cmVlbkNvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZ1
bGxTY3JlZW5Db250cm9sbGVyLm1tCmluZGV4IGZkOGZjNTY5OTdhZmNiNmFkN2Y5MGM1ZmM5OTg0
YmEzMTc2NmU5MDcuLjQwNTNmZmM4NDY0YTM1YmI4NmFmYjY2NmUzY2VlN2VkY2FjZTVlZmIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnVsbFNjcmVlbkNv
bnRyb2xsZXIubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGdWxs
U2NyZWVuQ29udHJvbGxlci5tbQpAQCAtMjQ5LDYgKzI0OSwxNiBAQCAtICh2b2lkKWVudGVyRnVs
bFNjcmVlbjooTlNTY3JlZW4gKilzY3JlZW4KICAgICBfaXNFbnRlcmluZ0Z1bGxTY3JlZW4gPSB0
cnVlOwogfQogCitzdGF0aWMgdm9pZCBzZXRDbGlwUmVjdEZvcldpbmRvdyhOU1dpbmRvdyAqd2lu
ZG93LCBOU1JlY3QgY2xpcFJlY3QpCit7CisgICAgQ0dTV2luZG93SUQgd2luZG93TnVtYmVyID0g
KENHU1dpbmRvd0lEKVt3aW5kb3cgd2luZG93TnVtYmVyXTsKKyAgICBDR1NSZWdpb25PYmogc2hh
cGU7CisgICAgQ0dSZWN0IGNnQ2xpcFJlY3QgPSBOU1JlY3RUb0NHUmVjdChjbGlwUmVjdCk7Cisg
ICAgQ0dTTmV3UmVnaW9uV2l0aFJlY3QoJmNnQ2xpcFJlY3QsICZzaGFwZSk7CisgICAgQ0dTU2V0
V2luZG93Q2xpcFNoYXBlKENHU01haW5Db25uZWN0aW9uSUQoKSwgd2luZG93TnVtYmVyLCBzaGFw
ZSk7CisgICAgQ0dTUmVsZWFzZVJlZ2lvbihzaGFwZSk7Cit9CisKIC0gKHZvaWQpZmluaXNoZWRF
bnRlckZ1bGxTY3JlZW5BbmltYXRpb246KGJvb2wpY29tcGxldGVkCiB7CiAgICAgaWYgKCFfaXNF
bnRlcmluZ0Z1bGxTY3JlZW4pCkBAIC0yNjMsNyArMjczLDcgQEAgLSAodm9pZClmaW5pc2hlZEVu
dGVyRnVsbFNjcmVlbkFuaW1hdGlvbjooYm9vbCljb21wbGV0ZWQKICAgICAgICAgCiAgICAgICAg
IE5TUmVjdCB3aW5kb3dCb3VuZHMgPSBbW3NlbGYgd2luZG93XSBmcmFtZV07CiAgICAgICAgIHdp
bmRvd0JvdW5kcy5vcmlnaW4gPSBOU1plcm9Qb2ludDsKLSAgICAgICAgV0tXaW5kb3dTZXRDbGlw
UmVjdChbc2VsZiB3aW5kb3ddLCB3aW5kb3dCb3VuZHMpOworICAgICAgICBzZXRDbGlwUmVjdEZv
cldpbmRvdyhbc2VsZiB3aW5kb3ddLCB3aW5kb3dCb3VuZHMpOwogICAgICAgICAKICAgICAgICAg
TlNXaW5kb3cgKndlYldpbmRvdyA9IFtfd2ViVmlld1BsYWNlaG9sZGVyLmdldCgpIHdpbmRvd107
CiAgICAgICAgIC8vIEluIExpb24sIE5TV2luZG93IHdpbGwgYW5pbWF0ZSBpbnRvIGFuZCBvdXQg
b2Ygb3JkZXJPdXQgb3BlcmF0aW9ucy4gU3VwcHJlc3MgdGhhdApAQCAtMzUzLDcgKzM2Myw3IEBA
IC0gKHZvaWQpZmluaXNoZWRFeGl0RnVsbFNjcmVlbkFuaW1hdGlvbjooYm9vbCljb21wbGV0ZWQK
ICAgICAKICAgICBOU1JlY3Qgd2luZG93Qm91bmRzID0gW1tzZWxmIHdpbmRvd10gZnJhbWVdOwog
ICAgIHdpbmRvd0JvdW5kcy5vcmlnaW4gPSBOU1plcm9Qb2ludDsKLSAgICBXS1dpbmRvd1NldENs
aXBSZWN0KFtzZWxmIHdpbmRvd10sIHdpbmRvd0JvdW5kcyk7CisgICAgc2V0Q2xpcFJlY3RGb3JX
aW5kb3coW3NlbGYgd2luZG93XSwgd2luZG93Qm91bmRzKTsKICAgICAKICAgICBbW3NlbGYgd2lu
ZG93XSBvcmRlck91dDpzZWxmXTsKICAgICBbW3NlbGYgd2luZG93XSBzZXRGcmFtZTpOU1plcm9S
ZWN0IGRpc3BsYXk6WUVTXTsKQEAgLTQ4NCwxMyArNDk0LDEzIEBAIC0gKHZvaWQpX3N0YXJ0RW50
ZXJGdWxsU2NyZWVuQW5pbWF0aW9uV2l0aER1cmF0aW9uOihOU1RpbWVJbnRlcnZhbClkdXJhdGlv
bgogICAgIFtfc2NhbGVBbmltYXRpb24uZ2V0KCkgc2V0Q3VycmVudFByb2dyZXNzOjBdOwogICAg
IFtfc2NhbGVBbmltYXRpb24uZ2V0KCkgc3RhcnRBbmltYXRpb25dOwogICAgIAotICAgIC8vIFdL
V2luZG93U2V0Q2xpcFJlY3QgdGFrZXMgd2luZG93IGNvb3JkaW5hdGVzLCBzbyBjb252ZXJ0IGZy
b20gc2NyZWVuIGNvb3JkaW5hdGVzIGhlcmU6CisgICAgLy8gc2V0Q2xpcFJlY3RGb3JXaW5kb3cg
dGFrZXMgd2luZG93IGNvb3JkaW5hdGVzLCBzbyBjb252ZXJ0IGZyb20gc2NyZWVuIGNvb3JkaW5h
dGVzIGhlcmU6CiAgICAgTlNSZWN0IGZpbmFsQm91bmRzID0gX2ZpbmFsRnJhbWU7CiAjcHJhZ21h
IGNsYW5nIGRpYWdub3N0aWMgcHVzaAogI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIGlnbm9yZWQg
Ii1XZGVwcmVjYXRlZC1kZWNsYXJhdGlvbnMiCiAgICAgZmluYWxCb3VuZHMub3JpZ2luID0gW1tz
ZWxmIHdpbmRvd10gY29udmVydFNjcmVlblRvQmFzZTpmaW5hbEJvdW5kcy5vcmlnaW5dOwogI3By
YWdtYSBjbGFuZyBkaWFnbm9zdGljIHBvcAotICAgIFdLV2luZG93U2V0Q2xpcFJlY3QoW3NlbGYg
d2luZG93XSwgZmluYWxCb3VuZHMpOworICAgIHNldENsaXBSZWN0Rm9yV2luZG93KFtzZWxmIHdp
bmRvd10sIGZpbmFsQm91bmRzKTsKICAgICAKICAgICBbW3NlbGYgd2luZG93XSBtYWtlS2V5QW5k
T3JkZXJGcm9udDpzZWxmXTsKICAgICAKQEAgLTU1NiwxMyArNTY2LDEzIEBAIC0gKHZvaWQpX3N0
YXJ0RXhpdEZ1bGxTY3JlZW5BbmltYXRpb25XaXRoRHVyYXRpb246KE5TVGltZUludGVydmFsKWR1
cmF0aW9uCiAgICAgCiAgICAgW19iYWNrZ3JvdW5kV2luZG93LmdldCgpIG9yZGVyV2luZG93Ok5T
V2luZG93QmVsb3cgcmVsYXRpdmVUbzpbW3NlbGYgd2luZG93XSB3aW5kb3dOdW1iZXJdXTsKICAg
ICAKLSAgICAvLyBXS1dpbmRvd1NldENsaXBSZWN0IHRha2VzIHdpbmRvdyBjb29yZGluYXRlcywg
c28gY29udmVydCBmcm9tIHNjcmVlbiBjb29yZGluYXRlcyBoZXJlOgorICAgIC8vIHNldENsaXBS
ZWN0Rm9yV2luZG93IHRha2VzIHdpbmRvdyBjb29yZGluYXRlcywgc28gY29udmVydCBmcm9tIHNj
cmVlbiBjb29yZGluYXRlcyBoZXJlOgogICAgIE5TUmVjdCBmaW5hbEJvdW5kcyA9IF9maW5hbEZy
YW1lOwogI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHB1c2gKICNwcmFnbWEgY2xhbmcgZGlhZ25v
c3RpYyBpZ25vcmVkICItV2RlcHJlY2F0ZWQtZGVjbGFyYXRpb25zIgogICAgIGZpbmFsQm91bmRz
Lm9yaWdpbiA9IFtbc2VsZiB3aW5kb3ddIGNvbnZlcnRTY3JlZW5Ub0Jhc2U6ZmluYWxCb3VuZHMu
b3JpZ2luXTsKICNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwb3AKLSAgICBXS1dpbmRvd1NldENs
aXBSZWN0KFtzZWxmIHdpbmRvd10sIGZpbmFsQm91bmRzKTsKKyAgICBzZXRDbGlwUmVjdEZvcldp
bmRvdyhbc2VsZiB3aW5kb3ddLCBmaW5hbEJvdW5kcyk7CiAgICAgCiAgICAgW1tzZWxmIHdpbmRv
d10gc2V0QXV0b2Rpc3BsYXk6WUVTXTsKICAgICBbW3NlbGYgd2luZG93XSBkaXNwbGF5SWZOZWVk
ZWRdOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>319555</attachid>
            <date>2017-08-31 17:40:37 -0700</date>
            <delta_ts>2017-08-31 20:39:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-176200-20170831174036.patch</filename>
            <type>text/plain</type>
            <size>61340</size>
            <attacher name="Andy Estes">aestes</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIxMzgxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzVhYmE3NzU1NjhiNjgz
ZmZjOWVjZWE4MzhlNWFmOGRlMTVjOTY4Ni4uNmFhZDZiNmQxYzY3MzhkNGZkMTQwM2U4YjlhYjJj
MDZmZGEzM2M0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBACisyMDE3LTA4LTMxICBBbmR5
IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29jb2FdIFVwc3RyZWFtIENv
cmVHcmFwaGljcy1yZWxhdGVkIFdlYktpdFN5c3RlbUludGVyZmFjZSBmdW5jdGlvbnMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NjIwMAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NDb250ZXh0Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2VTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OnN1YnNhbXBsaW5n
TGV2ZWxGb3JTY2FsZUZhY3Rvcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3Jh
cGhpY3NDb250ZXh0Q0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0Ojpj
bGlwT3V0KToKKyAgICAgICAgKFdlYkNvcmU6OmFwcGx5U2hhZG93T2Zmc2V0V29ya2Fyb3VuZElm
TmVlZGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9QYXR0ZXJuQ0cuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UGF0dGVybjo6Y3JlYXRlUGxhdGZvcm1QYXR0ZXJuIGNvbnN0KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRDb2NvYS5t
bToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6Zm9jdXNSaW5nQ29sb3IpOgor
ICAgICAgICAoV2ViQ29yZTo6ZHJhd0ZvY3VzUmluZ0F0VGltZSk6CisgICAgICAgIChXZWJDb3Jl
OjpkcmF3Rm9jdXNSaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OmRyYXdGb2N1c1JpbmdUb0NvbnRl
eHQpOgorICAgICAgICAoV2ViQ29yZTo6ZHJhd0ZvY3VzUmluZ1RvQ29udGV4dEF0VGltZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vaW9zL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2VJT1MubW06CisgICAg
ICAgICogcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpm
bGlwSW1hZ2VTcGVjKToKKyAgICAgICAgKFdlYkNvcmU6OnNldERyYWdJbWFnZUltcGwpOgorICAg
ICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6c2V0RHJhZ0ltYWdlKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9tYWMvUGxhdGZvcm1FdmVudEZhY3RvcnlNYWMubW06CisgICAgICAgICogcGxhdGZvcm0v
bWFjL1Njcm9sbGJhclRoZW1lTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6bGluZW5CYWNrZ3Jv
dW5kQ29sb3IpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9UaGVtZU1hYy5tbToKKyAgICAgICAg
KFdlYkNvcmU6OmRyYXdDZWxsRm9jdXNSaW5nV2l0aEZyYW1lQXRUaW1lKToKKyAgICAgICAgKFdl
YkNvcmU6OmRyYXdDZWxsRm9jdXNSaW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvV2ViQ29y
ZVN5c3RlbUludGVyZmFjZS5oOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9XZWJDb3JlU3lzdGVt
SW50ZXJmYWNlLm1tOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9XZWJXaW5kb3dBbmltYXRpb24u
bW06CisgICAgICAgIChmbGlwUmVjdCk6CisgICAgICAgIChtYWluV2luZG93U2VydmVyQ29ubmVj
dGlvbklEKToKKyAgICAgICAgKHNldFNjYWxlZEZyYW1lRm9yV2luZG93KToKKyAgICAgICAgKC1b
V2ViV2luZG93U2NhbGVBbmltYXRpb24gc2V0Q3VycmVudFByb2dyZXNzOl0pOgorICAgICAgICAo
LVtXZWJXaW5kb3dGYWRlQW5pbWF0aW9uIHNldEN1cnJlbnRQcm9ncmVzczpdKToKKwogMjAxNy0w
OC0zMCAgQW5keSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+CiAKICAgICAgICAgW01hY10gVXBz
dHJlYW0gQWNjZXNzaWJpbGl0eS1yZWxhdGVkIFdlYktpdFN5c3RlbUludGVyZmFjZSBmdW5jdGlv
bnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
Q29yZS9QQUwvQ2hhbmdlTG9nCmluZGV4IDdiNGI2MDFmZTRlNWUxNTBmODE4OTc0NDU3YzY5ZWVi
OWI2MDEzNTEuLjYyN2UzZjM4ZmI0NDUyNGRiZTA5NDNjYzdkNGVjMjljMTg3ZTc2MzkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUv
UEFML0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDE3LTA4LTMxICBBbmR5IEVzdGVzICA8
YWVzdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29jb2FdIFVwc3RyZWFtIENvcmVHcmFwaGlj
cy1yZWxhdGVkIFdlYktpdFN5c3RlbUludGVyZmFjZSBmdW5jdGlvbnMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NjIwMAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogUEFMLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2o6CisgICAgICAgICogcGFsL3NwaS9jZy9Db3JlR3JhcGhpY3NTUEkuaDoKKyAgICAg
ICAgKiBwYWwvc3BpL21hYy9ISVNlcnZpY2VzU1BJLmg6CisgICAgICAgICogcGFsL3NwaS9tYWMv
TlNHcmFwaGljc1NQSS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9t
YWMvSElTZXJ2aWNlc1NQSS5oLgorCiAyMDE3LTA4LTMwICBBbmR5IEVzdGVzICA8YWVzdGVzQGFw
cGxlLmNvbT4KIAogICAgICAgICBbTWFjXSBVcHN0cmVhbSBBY2Nlc3NpYmlsaXR5LXJlbGF0ZWQg
V2ViS2l0U3lzdGVtSW50ZXJmYWNlIGZ1bmN0aW9ucwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBhODY2NmYzMzg1MzQx
ZDM1NmQ3YTBjNzEzMWVhMmFmZjY4MTRhNjhiLi4yMTVkMmY3ZDg0ZmUwZWNlYmNjOTRhN2QxMTZm
N2YxYTYyNTYxZDA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDE3LTA4LTMxICBBbmR5
IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29jb2FdIFVwc3RyZWFtIENv
cmVHcmFwaGljcy1yZWxhdGVkIFdlYktpdFN5c3RlbUludGVyZmFjZSBmdW5jdGlvbnMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NjIwMAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogUGx1Z2luUHJvY2Vz
cy9tYWMvUGx1Z2luUHJvY2Vzc01hYy5tbToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJvY2Vz
czo6cGxhdGZvcm1Jbml0aWFsaXplUHJvY2Vzcyk6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9X
aW5kb3dTZXJ2ZXJDb25uZWN0aW9uLmg6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9XaW5kb3dT
ZXJ2ZXJDb25uZWN0aW9uLm1tOgorICAgICAgICAoV2ViS2l0OjpyZWdpc3Rlck9jY2x1c2lvbk5v
dGlmaWNhdGlvbkhhbmRsZXIpOgorICAgICAgICAoV2ViS2l0OjpXaW5kb3dTZXJ2ZXJDb25uZWN0
aW9uOjpXaW5kb3dTZXJ2ZXJDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2luZG93U2Vy
dmVyQ29ubmVjdGlvbjo6YXBwbGljYXRpb25XaW5kb3dNb2RpZmljYXRpb25zU3RhcnRlZCk6IERl
bGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViU3lzdGVt
SW50ZXJmYWNlLm1tOgorICAgICAgICAoSW5pdFdlYkNvcmVTeXN0ZW1JbnRlcmZhY2UpOgorCiAy
MDE3LTA4LTMwICBBbmR5IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KIAogICAgICAgICBbTWFj
XSBVcHN0cmVhbSBBY2Nlc3NpYmlsaXR5LXJlbGF0ZWQgV2ViS2l0U3lzdGVtSW50ZXJmYWNlIGZ1
bmN0aW9ucwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4IGJkZjVkMzhhZTdlNWI3NjE0
MDliM2QxMDU0ZDg0MzgzODY4OWZiZGEuLjRkMzE2OTQxYjM2ZjllMzMyM2MzODI5NjgzNDcyNWMw
Njc4OTAwMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNCBAQAor
MjAxNy0wOC0zMSAgQW5keSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+CisKKyAgICAgICAgW0Nv
Y29hXSBVcHN0cmVhbSBDb3JlR3JhcGhpY3MtcmVsYXRlZCBXZWJLaXRTeXN0ZW1JbnRlcmZhY2Ug
ZnVuY3Rpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNzYyMDAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIENhcmJvbi9ISVdlYlZpZXcubW06CisgICAgICAgICgtW05TV2luZG93R3JhcGhpY3NDb250
ZXh0IF93ZWJfc2V0R3JhcGhpY3NQb3J0Ol0pOgorICAgICAgICAob3ZlcnJpZGVDR0NvbnRleHQp
OgorICAgICAgICAocmVzdG9yZUNHQ29udGV4dCk6CisgICAgICAgIChEcmF3KToKKyAgICAgICAg
KiBQbHVnaW5zL0hvc3RlZC9XZWJIb3N0ZWROZXRzY2FwZVBsdWdpblZpZXcubW06CisgICAgICAg
ICgrW1dlYkhvc3RlZE5ldHNjYXBlUGx1Z2luVmlldyBpbml0aWFsaXplXSk6CisgICAgICAgICog
UGx1Z2lucy9XZWJCYXNlTmV0c2NhcGVQbHVnaW5WaWV3Lmg6CisgICAgICAgICogUGx1Z2lucy9X
ZWJCYXNlTmV0c2NhcGVQbHVnaW5WaWV3Lm1tOgorICAgICAgICAoV2ViS2l0OjpzZW5kVXNlckNo
YW5nZU5vdGlmaWNhdGlvbnMpOgorICAgICAgICAqIFBsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5W
aWV3Lm1tOgorICAgICAgICAoK1tXZWJOZXRzY2FwZVBsdWdpblZpZXcgaW5pdGlhbGl6ZV0pOgor
ICAgICAgICAoLVtXZWJOZXRzY2FwZVBsdWdpblZpZXcgc2F2ZUFuZFNldE5ld1BvcnRTdGF0ZUZv
clVwZGF0ZTpdKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJTeXN0ZW1JbnRlcmZhY2Uu
bW06CisgICAgICAgIChJbml0V2ViQ29yZVN5c3RlbUludGVyZmFjZSk6CisgICAgICAgICogV2Vi
Vmlldy9XZWJGcmFtZS5tbToKKyAgICAgICAgKC1bV2ViRnJhbWUgX3BhaW50QmVoYXZpb3JGb3JE
ZXN0aW5hdGlvbkNvbnRleHQ6XSk6CisgICAgICAgICogV2ViVmlldy9XZWJGdWxsU2NyZWVuQ29u
dHJvbGxlci5tbToKKyAgICAgICAgKHNldENsaXBSZWN0Rm9yV2luZG93KToKKyAgICAgICAgKC1b
V2ViRnVsbFNjcmVlbkNvbnRyb2xsZXIgZmluaXNoZWRFbnRlckZ1bGxTY3JlZW5BbmltYXRpb246
XSk6CisgICAgICAgICgtW1dlYkZ1bGxTY3JlZW5Db250cm9sbGVyIGZpbmlzaGVkRXhpdEZ1bGxT
Y3JlZW5BbmltYXRpb246XSk6CisgICAgICAgICgtW1dlYkZ1bGxTY3JlZW5Db250cm9sbGVyIF9z
dGFydEVudGVyRnVsbFNjcmVlbkFuaW1hdGlvbldpdGhEdXJhdGlvbjpdKToKKyAgICAgICAgKC1b
V2ViRnVsbFNjcmVlbkNvbnRyb2xsZXIgX3N0YXJ0RXhpdEZ1bGxTY3JlZW5BbmltYXRpb25XaXRo
RHVyYXRpb246XSk6CisKIDIwMTctMDgtMzAgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29t
PgogCiAgICAgICAgIFtNYWNdIFVwc3RyZWFtIEFjY2Vzc2liaWxpdHktcmVsYXRlZCBXZWJLaXRT
eXN0ZW1JbnRlcmZhY2UgZnVuY3Rpb25zCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwv
UEFMLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9QQUwvUEFMLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZDk4NThmOWVlMmI0MWYwMDU5MzcxYWU5MGNi
MmJmZGRkYTNkMGI4OC4uNjFkOWUzNDZkMGNiNjAzYWQyOWY2MzVkZmUzNTE4ZWZlYmM0ODM3NiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML1BBTC54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9QQUwueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agpAQCAtMTAxLDYgKzEwMSw3IEBACiAJCUExMDI2NTg5MUY1Njc0N0EwMEI0Qzg0NCAvKiBISVRv
b2xib3hTUEkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEExMDI2NTg4MUY1Njc0N0EwMEI0Qzg0NCAvKiBISVRvb2xib3hTUEkuaCAqLzsgfTsKIAkJQTEw
MjY1OEIxRjU2NzQ4QzAwQjRDODQ0IC8qIFF1aWNrRHJhd1NQSS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTEwMjY1OEExRjU2NzQ4QzAwQjRDODQ0IC8q
IFF1aWNrRHJhd1NQSS5oICovOyB9OwogCQlBMTAyNjU4RTFGNTY3RTlEMDBCNEM4NDQgLyogSElT
ZXJ2aWNlc1NQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQTEwMjY1OEQxRjU2N0U5RDAwQjRDODQ0IC8qIEhJU2VydmljZXNTUEkuaCAqLzsgfTsKKwkJ
QTEwODI2RkUxRjU4QTQzMzAwNDc3MkFDIC8qIE5TR3JhcGhpY3NTUEkuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExMDgyNkZEMUY1OEE0MzMwMDQ3NzJB
QyAvKiBOU0dyYXBoaWNzU1BJLmggKi87IH07CiAJCUExRjU1RENGMUY1NTI4RUMwMEVEQjc1RiAv
KiBNZXRhZGF0YVNQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQTFGNTVEQ0UxRjU1MjhFQzAwRURCNzVGIC8qIE1ldGFkYXRhU1BJLmggKi87IH07CiAJ
CUEzMEQ0MTIxMUYwREQwRUEwMEI3MTk1NCAvKiBLaWxsUmluZy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTMwRDQxMUUxRjBERDBFQTAwQjcxOTU0IC8q
IEtpbGxSaW5nLmggKi87IH07CiAJCUEzMEQ0MTIyMUYwREQwRUEwMEI3MTk1NCAvKiBLaWxsUmlu
Z05vbmUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QTMwRDQxMUYxRjBERDBFQTAwQjcxOTU0IC8qIEtpbGxSaW5nTm9uZS5jcHAgKi87IH07CkBAIC0y
MTcsNiArMjE4LDcgQEAKIAkJQTEwMjY1ODgxRjU2NzQ3QTAwQjRDODQ0IC8qIEhJVG9vbGJveFNQ
SS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBISVRvb2xib3hTUEkuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTEwMjY1OEExRjU2NzQ4QzAwQjRDODQ0IC8qIFF1
aWNrRHJhd1NQSS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBRdWlja0RyYXdT
UEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTEwMjY1OEQxRjU2N0U5RDAwQjRD
ODQ0IC8qIEhJU2VydmljZXNTUEkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSElTZXJ2aWNlc1NQSS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBMTA4MjZGRDFGNThBNDMzMDA0NzcyQUMgLyog
TlNHcmFwaGljc1NQSS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOU0dyYXBoaWNzU1BJLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUExRjU1RENFMUY1NTI4RUMwMEVEQjc1RiAvKiBNZXRhZGF0
YVNQSS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBNZXRhZGF0YVNQSS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlBMzBENDExRTFGMEREMEVBMDBCNzE5NTQgLyogS2lsbFJpbmcuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gS2lsbFJpbmcuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQTMwRDQxMUYxRjBERDBFQTAwQjcxOTU0IC8qIEtpbGxSaW5nTm9uZS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBLaWxsUmluZ05vbmUuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzQ5LDYgKzM1MSw3IEBACiAJCQkJMEM3Nzg1
NzUxRjQ1MTMwRjAwRjRFQkI2IC8qIE5TQXBwbGljYXRpb25TUEkuaCAqLywKIAkJCQkwQzc3ODU3
NjFGNDUxMzBGMDBGNEVCQjYgLyogTlNFdmVudFNQSS5oICovLAogCQkJCTBDNzc4NTc3MUY0NTEz
MEYwMEY0RUJCNiAvKiBOU0ZvbnRTUEkuaCAqLywKKwkJCQlBMTA4MjZGRDFGNThBNDMzMDA0Nzcy
QUMgLyogTlNHcmFwaGljc1NQSS5oICovLAogCQkJCTBDNzc4NTc4MUY0NTEzMEYwMEY0RUJCNiAv
KiBOU0ltbWVkaWF0ZUFjdGlvbkdlc3R1cmVSZWNvZ25pemVyU1BJLmggKi8sCiAJCQkJMEM3Nzg1
NzkxRjQ1MTMwRjAwRjRFQkI2IC8qIE5TTWVudVNQSS5oICovLAogCQkJCTBDNzc4NTdBMUY0NTEz
MEYwMEY0RUJCNiAvKiBOU1Bhc3RlYm9hcmRTUEkuaCAqLywKQEAgLTU0Miw2ICs1NDUsNyBAQAog
CQkJCTBDMkRBMTRFMUYzQkVCNDkwMERCQzMxNyAvKiBOU0V4dGVuc2lvblNQSS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMEMyREExNEYxRjNCRUI0OTAwREJDMzE3IC8qIE5TRmlsZU1hbmFnZXJTUEku
aCBpbiBIZWFkZXJzICovLAogCQkJCTBDNzc4NTkwMUY0NTEzMEYwMEY0RUJCNiAvKiBOU0ZvbnRT
UEkuaCBpbiBIZWFkZXJzICovLAorCQkJCUExMDgyNkZFMUY1OEE0MzMwMDQ3NzJBQyAvKiBOU0dy
YXBoaWNzU1BJLmggaW4gSGVhZGVycyAqLywKIAkJCQkwQzc3ODU5MTFGNDUxMzBGMDBGNEVCQjYg
LyogTlNJbW1lZGlhdGVBY3Rpb25HZXN0dXJlUmVjb2duaXplclNQSS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMEM3Nzg1OTIxRjQ1MTMwRjAwRjRFQkI2IC8qIE5TTWVudVNQSS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMEM3Nzg1OTMxRjQ1MTMwRjAwRjRFQkI2IC8qIE5TUGFzdGVib2FyZFNQSS5oIGlu
IEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jZy9D
b3JlR3JhcGhpY3NTUEkuaCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NnL0NvcmVHcmFw
aGljc1NQSS5oCmluZGV4IDdjMjkxYzkxNGQ2OWY1NmQ4NmRiYjRhODgxZmIyMzE4OWM1YTVhNWMu
LjJiYmZjN2U3MzA5MGU3ZmZmYTIwNTg4YTMwZjJmYTZlY2UyMjY3NzggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NnL0NvcmVHcmFwaGljc1NQSS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NnL0NvcmVHcmFwaGljc1NQSS5oCkBAIC0xNTAsOCArMTUw
LDU1IEBAIGVudW0gewogdHlwZWRlZiB1aW50MzJfdCBDR1NXaW5kb3dDYXB0dXJlT3B0aW9uczsK
ICNlbmRpZgogCit0eXBlZGVmIENGX0VOVU0odWludDMyX3QsIENHU05vdGlmaWNhdGlvblR5cGUp
IHsKKyAgICBrQ0dTRmlyc3RDb25uZWN0aW9uTm90aWZpY2F0aW9uID0gOTAwLAorICAgIGtDR1NG
aXJzdFNlc3Npb25Ob3RpZmljYXRpb24gPSAxNTAwLAorfTsKKworc3RhdGljIGNvbnN0IENHU05v
dGlmaWNhdGlvblR5cGUga0NHU2Vzc2lvbkNvbnNvbGVDb25uZWN0ID0ga0NHU0ZpcnN0U2Vzc2lv
bk5vdGlmaWNhdGlvbjsKK3N0YXRpYyBjb25zdCBDR1NOb3RpZmljYXRpb25UeXBlIGtDR1Nlc3Np
b25Db25zb2xlRGlzY29ubmVjdCA9IChDR1NOb3RpZmljYXRpb25UeXBlKShrQ0dTZXNzaW9uQ29u
c29sZUNvbm5lY3QgKyAxKTsKK3N0YXRpYyBjb25zdCBDR1NOb3RpZmljYXRpb25UeXBlIGtDR1ND
b25uZWN0aW9uV2luZG93TW9kaWZpY2F0aW9uc1N0YXJ0ZWQgPSAoQ0dTTm90aWZpY2F0aW9uVHlw
ZSkoa0NHU0ZpcnN0Q29ubmVjdGlvbk5vdGlmaWNhdGlvbiArIDYpOworc3RhdGljIGNvbnN0IENH
U05vdGlmaWNhdGlvblR5cGUga0NHU0Nvbm5lY3Rpb25XaW5kb3dNb2RpZmljYXRpb25zU3RvcHBl
ZCA9IChDR1NOb3RpZmljYXRpb25UeXBlKShrQ0dTRmlyc3RDb25uZWN0aW9uTm90aWZpY2F0aW9u
ICsgNyk7CisKK3R5cGVkZWYgQ0ZfRU5VTSAoaW50MzJfdCwgQ0dGb2N1c1JpbmdUaW50KSB7Cisg
ICAga0NHRm9jdXNSaW5nVGludEJsdWUgPSAwLAorICAgIGtDR0ZvY3VzUmluZ1RpbnRHcmFwaGl0
ZSA9IDEKK307CisKK3R5cGVkZWYgQ0ZfRU5VTSAoaW50MzJfdCwgQ0dTdHlsZURyYXdPcmRlcmlu
ZykgeworICAgIGtDR1N0eWxlRHJhd09yZGVyaW5nU3R5bGVPbmx5ID0gMCwKKyAgICBrQ0dTdHls
ZURyYXdPcmRlcmluZ0JlbG93ID0gMSwKKyAgICBrQ0dTdHlsZURyYXdPcmRlcmluZ0Fib3ZlID0g
MgorfTsKKwordHlwZWRlZiBDRl9FTlVNIChpbnQzMl90LCBDR0ZvY3VzUmluZ09yZGVyaW5nKSB7
CisgICAga0NHRm9jdXNSaW5nT3JkZXJpbmdOb25lID0ga0NHU3R5bGVEcmF3T3JkZXJpbmdTdHls
ZU9ubHksCisgICAga0NHRm9jdXNSaW5nT3JkZXJpbmdCZWxvdyA9IGtDR1N0eWxlRHJhd09yZGVy
aW5nQmVsb3csCisgICAga0NHRm9jdXNSaW5nT3JkZXJpbmdBYm92ZSA9IGtDR1N0eWxlRHJhd09y
ZGVyaW5nQWJvdmUKK307CisKK3N0cnVjdCBDR0ZvY3VzUmluZ1N0eWxlIHsKKyAgICB1bnNpZ25l
ZCBpbnQgdmVyc2lvbjsKKyAgICBDR0ZvY3VzUmluZ1RpbnQgdGludDsKKyAgICBDR0ZvY3VzUmlu
Z09yZGVyaW5nIG9yZGVyaW5nOworICAgIENHRmxvYXQgYWxwaGE7CisgICAgQ0dGbG9hdCByYWRp
dXM7CisgICAgQ0dGbG9hdCB0aHJlc2hvbGQ7CisgICAgQ0dSZWN0IGJvdW5kczsKKyAgICBpbnQg
YWNjdW11bGF0ZTsKK307Cit0eXBlZGVmIHN0cnVjdCBDR0ZvY3VzUmluZ1N0eWxlIENHRm9jdXNS
aW5nU3R5bGU7CisKICNlbmRpZiAvLyBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQogCit0eXBlZGVm
IHN0cnVjdCBDRl9CUklER0VEX1RZUEUoaWQpIENHU3R5bGUgKkNHU3R5bGVSZWY7Cit0eXBlZGVm
IHN0cnVjdCBDRl9CUklER0VEX1RZUEUoaWQpIENHU1JlZ2lvbk9iamVjdCogQ0dTUmVnaW9uT2Jq
OwordHlwZWRlZiB2b2lkKiBDR1NOb3RpZmljYXRpb25Bcmc7Cit0eXBlZGVmIHZvaWQqIENHU05v
dGlmaWNhdGlvbkRhdGE7Cit0eXBlZGVmIHVpbnQzMl90IENHU0J5dGVDb3VudDsKK3R5cGVkZWYg
dm9pZCAoKkNHU05vdGlmeVByb2NQdHIpKENHU05vdGlmaWNhdGlvblR5cGUsIHZvaWQqIGRhdGEs
IHVpbnQzMl90IGRhdGFfbGVuZ3RoLCB2b2lkKiBhcmcpOwordHlwZWRlZiB2b2lkICgqQ0dTTm90
aWZ5Q29ubmVjdGlvblByb2NQdHIpKENHU05vdGlmaWNhdGlvblR5cGUsIHZvaWQqIGRhdGEsIHVp
bnQzMl90IGRhdGFfbGVuZ3RoLCB2b2lkKiBhcmcsIENHU0Nvbm5lY3Rpb25JRCk7CisKIFdURl9F
WFRFUk5fQ19CRUdJTgogCiBDR0NvbG9yUmVmIENHQ29sb3JUcmFuc2Zvcm1Db252ZXJ0Q29sb3Io
Q0dDb2xvclRyYW5zZm9ybVJlZiwgQ0dDb2xvclJlZiwgQ0dDb2xvclJlbmRlcmluZ0ludGVudCk7
CkBAIC0yMjUsNCArMjcyLDEyIEBAIENHRXJyb3IgQ0dTR2V0U2NyZWVuUmVjdEZvcldpbmRvdyhD
R1NDb25uZWN0aW9uSUQsIENHU1dpbmRvd0lELCBDR1JlY3QgKik7CiBib29sIENvbG9yU3luY1By
b2ZpbGVJc1dpZGVHYW11dChDb2xvclN5bmNQcm9maWxlUmVmKTsKICNlbmRpZgogCitDR1N0eWxl
UmVmIENHU3R5bGVDcmVhdGVGb2N1c1JpbmdXaXRoQ29sb3IoY29uc3QgQ0dGb2N1c1JpbmdTdHls
ZSosIENHQ29sb3JSZWYpOworQ0dFcnJvciBDR1NSZWdpc3Rlck5vdGlmeVByb2MoQ0dTTm90aWZ5
UHJvY1B0ciwgQ0dTTm90aWZpY2F0aW9uVHlwZSwgdm9pZCogYXJnKTsKK0NHUGF0dGVyblJlZiBD
R1BhdHRlcm5DcmVhdGVXaXRoSW1hZ2UyKENHSW1hZ2VSZWYsIENHQWZmaW5lVHJhbnNmb3JtLCBD
R1BhdHRlcm5UaWxpbmcpOworYm9vbCBDR0NvbnRleHREcmF3c1dpdGhDb3JyZWN0U2hhZG93T2Zm
c2V0cyhDR0NvbnRleHRSZWYpOworQ0dFcnJvciBDR1NSZWdpc3RlckNvbm5lY3Rpb25Ob3RpZnlQ
cm9jKENHU0Nvbm5lY3Rpb25JRCwgQ0dTTm90aWZ5Q29ubmVjdGlvblByb2NQdHIsIENHU05vdGlm
aWNhdGlvblR5cGUsIHZvaWQqIGFyZyk7CitDR0Vycm9yIENHU1BhY2thZ2VzRW5hYmxlQ29ubmVj
dGlvbk9jY2x1c2lvbk5vdGlmaWNhdGlvbnMoQ0dTQ29ubmVjdGlvbklELCBib29sIGZsYWcsIGJv
b2wqIG91dEN1cnJlbnRWaXNpYmlsaXR5U3RhdGUpOworQ0dFcnJvciBDR1NQYWNrYWdlc0VuYWJs
ZUNvbm5lY3Rpb25XaW5kb3dNb2RpZmljYXRpb25Ob3RpZmljYXRpb25zKENHU0Nvbm5lY3Rpb25J
RCwgYm9vbCBmbGFnLCBib29sKiBvdXRDb25uZWN0aW9uSXNDdXJyZW50bHlJZGxlKTsKKwogV1RG
X0VYVEVSTl9DX0VORApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvbWFj
L0hJU2VydmljZXNTUEkuaCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL21hYy9ISVNlcnZp
Y2VzU1BJLmgKaW5kZXggOWYzNWRjZDRkMDNhNTdhMDg2YjBhMzY1ZGZiMzlkZGZmY2M4MTk4NS4u
NjgzYWJhMWE5NWU4Yjg3NGU2ZGZmNDQ4YWEwNDE3MWM1MTJmZDVjMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvbWFjL0hJU2VydmljZXNTUEkuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9QQUwvcGFsL3NwaS9tYWMvSElTZXJ2aWNlc1NQSS5oCkBAIC0yOCw5ICsyOCwzMSBA
QAogI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCiAKICNpbmNsdWRlIDxISVNlcnZpY2VzL0FY
VGV4dE1hcmtlci5oPgorI2luY2x1ZGUgPEhJU2VydmljZXMvQ29yZURyYWcuaD4KKworI2Vsc2UK
KworZW51bSB7CisgICAga0NvcmVEcmFnSW1hZ2VTcGVjVmVyc2lvbk9uZSA9IDEsCit9OworCitz
dHJ1Y3QgQ29yZURyYWdJbWFnZVNwZWMgeworICAgIFVJbnQzMiB2ZXJzaW9uOworICAgIFNJbnQz
MiBwaXhlbHNXaWRlOworICAgIFNJbnQzMiBwaXhlbHNIaWdoOworICAgIFNJbnQzMiBiaXRzUGVy
U2FtcGxlOworICAgIFNJbnQzMiBzYW1wbGVzUGVyUGl4ZWw7CisgICAgU0ludDMyIGJpdHNQZXJQ
aXhlbDsKKyAgICBTSW50MzIgYnl0ZXNQZXJSb3c7CisgICAgQm9vbGVhbiBpc1BsYW5hcjsKKyAg
ICBCb29sZWFuIGhhc0FscGhhOworICAgIGNvbnN0IFVJbnQ4KiBkYXRhWzVdOworfTsKIAogI2Vu
ZGlmCiAKK3R5cGVkZWYgc3RydWN0IENvcmVEcmFnSW1hZ2VTcGVjIENvcmVEcmFnSW1hZ2VTcGVj
OwordHlwZWRlZiBzdHJ1Y3QgT3BhcXVlQ29yZURyYWcqIENvcmVEcmFnUmVmOwogdHlwZWRlZiBj
b25zdCBzdHJ1Y3QgX19BWFRleHRNYXJrZXIgKkFYVGV4dE1hcmtlclJlZjsKIHR5cGVkZWYgY29u
c3Qgc3RydWN0IF9fQVhUZXh0TWFya2VyUmFuZ2UgKkFYVGV4dE1hcmtlclJhbmdlUmVmOwogCkBA
IC00NCw1ICs2Niw2IEBAIGNvbnN0IFVJbnQ4KiBBWFRleHRNYXJrZXJHZXRCeXRlUHRyKEFYVGV4
dE1hcmtlclJlZik7CiBBWFRleHRNYXJrZXJSYW5nZVJlZiBBWFRleHRNYXJrZXJSYW5nZUNyZWF0
ZShDRkFsbG9jYXRvclJlZiwgQVhUZXh0TWFya2VyUmVmIHN0YXJ0TWFya2VyLCBBWFRleHRNYXJr
ZXJSZWYgZW5kTWFya2VyKTsKIEFYVGV4dE1hcmtlclJlZiBBWFRleHRNYXJrZXJSYW5nZUNvcHlT
dGFydE1hcmtlcihBWFRleHRNYXJrZXJSYW5nZVJlZik7CiBBWFRleHRNYXJrZXJSZWYgQVhUZXh0
TWFya2VyUmFuZ2VDb3B5RW5kTWFya2VyKEFYVGV4dE1hcmtlclJhbmdlUmVmKTsKK0NvcmVEcmFn
UmVmIENvcmVEcmFnR2V0Q3VycmVudERyYWcoKTsKIAogV1RGX0VYVEVSTl9DX0VORApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvbWFjL05TR3JhcGhpY3NTUEkuaCBiL1Nv
dXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL21hYy9OU0dyYXBoaWNzU1BJLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NzVlY2IxNDA3M2NmYmNiNDVmOWVjNGIwNzcwZjlhZTJkZGQ2M2Q3ZgotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL21hYy9OU0dyYXBoaWNzU1BJLmgKQEAgLTAs
MCArMSwzOCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgVVNFKEFQUExFX0lO
VEVSTkFMX1NESykKKworI2luY2x1ZGUgPEFwcEtpdC9OU0dyYXBoaWNzX1ByaXZhdGUuaD4KKwor
I2VuZGlmCisKK1dURl9FWFRFUk5fQ19CRUdJTgorCitCT09MIE5TSW5pdGlhbGl6ZUNHRm9jdXNS
aW5nU3R5bGVGb3JUaW1lKE5TRm9jdXNSaW5nUGxhY2VtZW50LCBDR0ZvY3VzUmluZ1N0eWxlKiwg
TlNUaW1lSW50ZXJ2YWwpOworCitXVEZfRVhURVJOX0NfRU5ECmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCmluZGV4IDE4YWNkZGJlN2Vm
ZmZhNDI5ZDE4NTc4MzlhYjZlNjY3NDY2YTNkODUuLmMxNGIyYTU1ZTZhYTdmOTBkMjAwM2M0NjY4
NDM0MzIyZTA4NTQ1OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzQ29udGV4dC5oCkBAIC00NDUsNiArNDQ1LDcgQEAgcHVibGljOgogI2lmIFBM
QVRGT1JNKE1BQykKICAgICB2b2lkIGRyYXdGb2N1c1JpbmcoY29uc3QgUGF0aCYsIGRvdWJsZSB0
aW1lT2Zmc2V0LCBib29sJiBuZWVkc1JlZHJhdyk7CiAgICAgdm9pZCBkcmF3Rm9jdXNSaW5nKGNv
bnN0IFZlY3RvcjxGbG9hdFJlY3Q+JiwgZG91YmxlIHRpbWVPZmZzZXQsIGJvb2wmIG5lZWRzUmVk
cmF3KTsKKyAgICBzdGF0aWMgQ0dDb2xvclJlZiBmb2N1c1JpbmdDb2xvcigpOwogI2VuZGlmCiAK
ICAgICB2b2lkIHNldExpbmVDYXAoTGluZUNhcCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAKaW5kZXggNjY5NmM5NjBhNTg3NWYwNDMxNzI5
YjExOWFiNmIyNDEyN2Q3YTVjYS4uMDIyOGUzOTI5YTI2NmVhOTczMmJiYThlZTYwNTczZmE1MDlh
MzUwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VT
b3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291
cmNlLmNwcApAQCAtMTg0LDcgKzE4NCw3IEBAIFN1YnNhbXBsaW5nTGV2ZWwgSW1hZ2VTb3VyY2U6
OnN1YnNhbXBsaW5nTGV2ZWxGb3JTY2FsZUZhY3RvcihHcmFwaGljc0NvbnRleHQmIGNvCiB7CiAj
aWYgVVNFKENHKQogICAgIC8vIE5ldmVyIHVzZSBzdWJzYW1wbGVkIGltYWdlcyBmb3IgZHJhd2lu
ZyBpbnRvIFBERiBjb250ZXh0cy4KLSAgICBpZiAod2tDR0NvbnRleHRJc1BERkNvbnRleHQoY29u
dGV4dC5wbGF0Zm9ybUNvbnRleHQoKSkpCisgICAgaWYgKENHQ29udGV4dEdldFR5cGUoY29udGV4
dC5wbGF0Zm9ybUNvbnRleHQoKSkgPT0ga0NHQ29udGV4dFR5cGVQREYpCiAgICAgICAgIHJldHVy
biBTdWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0OwogCiAgICAgZmxvYXQgc2NhbGUgPSBzdGQ6Om1p
bihmbG9hdCgxKSwgc3RkOjptYXgoc2NhbGVGYWN0b3Iud2lkdGgoKSwgc2NhbGVGYWN0b3IuaGVp
Z2h0KCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L0dyYXBoaWNzQ29udGV4dENHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcAppbmRleCBkNTg4MzlhZTU4YmI1MTBkNTA3ZDQ2NWIw
NjE5MmUwMjBiYWQ1YWJkLi4zNzg4YmMyNDE0MjRmNTQ2N2VmMWEyMWEyNmVjZmZhNGU4M2NhMDBj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGlj
c0NvbnRleHRDRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
R3JhcGhpY3NDb250ZXh0Q0cuY3BwCkBAIC05ODcsNyArOTg3LDcgQEAgdm9pZCBHcmFwaGljc0Nv
bnRleHQ6OmNsaXBPdXQoY29uc3QgRmxvYXRSZWN0JiByZWN0KQogICAgIC8vIGhhcyBjZXJ0YWlu
IHRyYW5zZm9ybXMgdGhhdCBhcmVuJ3QganVzdCBhIHRyYW5zbGF0aW9uIG9yIGEgc2NhbGUuIEFu
ZCBkdWUgdG8gPHJkYXI6Ly9wcm9ibGVtLzE0NjM0NDUzPgogICAgIC8vIHdlIGNhbm5vdCB1c2Ug
aXQgaW4gZm9yIGEgcHJpbnRpbmcgY29udGV4dCBlaXRoZXIuCiAgICAgY29uc3QgQWZmaW5lVHJh
bnNmb3JtJiBjdG0gPSBnZXRDVE0oKTsKLSAgICBib29sIGNhblVzZUNHUmVjdEluZmluaXRlID0g
IXdrQ0dDb250ZXh0SXNQREZDb250ZXh0KHBsYXRmb3JtQ29udGV4dCgpKSAmJiAoIWlzQWNjZWxl
cmF0ZWRDb250ZXh0KCkgfHwgKCFjdG0uYigpICYmICFjdG0uYygpKSk7CisgICAgYm9vbCBjYW5V
c2VDR1JlY3RJbmZpbml0ZSA9IENHQ29udGV4dEdldFR5cGUocGxhdGZvcm1Db250ZXh0KCkpICE9
IGtDR0NvbnRleHRUeXBlUERGICYmICghaXNBY2NlbGVyYXRlZENvbnRleHQoKSB8fCAoIWN0bS5i
KCkgJiYgIWN0bS5jKCkpKTsKICAgICBDR1JlY3QgcmVjdHNbMl0gPSB7IGNhblVzZUNHUmVjdElu
ZmluaXRlID8gQ0dSZWN0SW5maW5pdGUgOiBDR0NvbnRleHRHZXRDbGlwQm91bmRpbmdCb3gocGxh
dGZvcm1Db250ZXh0KCkpLCByZWN0IH07CiAgICAgQ0dDb250ZXh0QmVnaW5QYXRoKHBsYXRmb3Jt
Q29udGV4dCgpKTsKICAgICBDR0NvbnRleHRBZGRSZWN0cyhwbGF0Zm9ybUNvbnRleHQoKSwgcmVj
dHMsIDIpOwpAQCAtMTA5Myw3ICsxMDkzLDcgQEAgc3RhdGljIHZvaWQgYXBwbHlTaGFkb3dPZmZz
ZXRXb3JrYXJvdW5kSWZOZWVkZWQoY29uc3QgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LAogICAg
IGlmIChjb250ZXh0LmlzQWNjZWxlcmF0ZWRDb250ZXh0KCkpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIGlmICh3a0NHQ29udGV4dERyYXdzV2l0aENvcnJlY3RTaGFkb3dPZmZzZXRzKGNvbnRleHQu
cGxhdGZvcm1Db250ZXh0KCkpKQorICAgIGlmIChDR0NvbnRleHREcmF3c1dpdGhDb3JyZWN0U2hh
ZG93T2Zmc2V0cyhjb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpKSkKICAgICAgICAgcmV0dXJuOwog
CiAgICAgLy8gV29yayBhcm91bmQgPHJkYXI6Ly9wcm9ibGVtLzU1MzkzODg+IGJ5IGVuc3VyaW5n
IHRoYXQgdGhlIG9mZnNldHMgd2lsbCBnZXQgdHJ1bmNhdGVkCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QYXR0ZXJuQ0cuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGF0dGVybkNHLmNwcAppbmRleCA5OGU2OWRlOGVkODlh
MjRlODg2YTE0MmEwODM5NTllMmM3MjEzNWYwLi5kMGUyMWM4NzNhYTJkYzMwYzUzY2M4YmFiNGY4
YjA0MTQzNDAwMDk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9QYXR0ZXJuQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL1BhdHRlcm5DRy5jcHAKQEAgLTMxLDggKzMxLDggQEAKIAogI2luY2x1ZGUgIkFmZmluZVRy
YW5zZm9ybS5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgotCiAjaW5jbHVkZSA8Q29y
ZUdyYXBoaWNzL0NvcmVHcmFwaGljcy5oPgorI2luY2x1ZGUgPHBhbC9zcGkvY2cvQ29yZUdyYXBo
aWNzU1BJLmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KIAogI2lmIFBMQVRGT1JNKENP
Q09BKQpAQCAtNzQsNyArNzQsNyBAQCBDR1BhdHRlcm5SZWYgUGF0dGVybjo6Y3JlYXRlUGxhdGZv
cm1QYXR0ZXJuKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdXNlclNwYWNlVHJhbgogICAgIC8vIElm
IHdlJ3JlIHJlcGVhdGluZyBpbiBib3RoIGRpcmVjdGlvbnMsIHdlIGNhbiB1c2UgaW1hZ2UtYmFj
a2VkIHBhdHRlcm5zCiAgICAgLy8gaW5zdGVhZCBvZiBjdXN0b20gcGF0dGVybnMsIGFuZCBhdm9p
ZCB0aWxpbmctZWRnZSBwaXhlbCBjcmFja3MuCiAgICAgaWYgKG1fcmVwZWF0WCAmJiBtX3JlcGVh
dFkpCi0gICAgICAgIHJldHVybiB3a0NHUGF0dGVybkNyZWF0ZVdpdGhJbWFnZUFuZFRyYW5zZm9y
bSh0aWxlSW1hZ2UoKS5uYXRpdmVJbWFnZSgpLmdldCgpLCBwYXR0ZXJuVHJhbnNmb3JtLCB3a1Bh
dHRlcm5UaWxpbmdDb25zdGFudFNwYWNpbmcpOworICAgICAgICByZXR1cm4gQ0dQYXR0ZXJuQ3Jl
YXRlV2l0aEltYWdlMih0aWxlSW1hZ2UoKS5uYXRpdmVJbWFnZSgpLmdldCgpLCBwYXR0ZXJuVHJh
bnNmb3JtLCBrQ0dQYXR0ZXJuVGlsaW5nQ29uc3RhbnRTcGFjaW5nKTsKIAogICAgIC8vIElmIEZM
VF9NQVggc2hvdWxkIGFsc28gYmUgdXNlZCBmb3IgeFN0ZXAgb3IgeVN0ZXAsIG5vdGhpbmcgaXMg
cmVuZGVyZWQuIFVzaW5nIGZyYWN0aW9ucyBvZiBGTFRfTUFYIGFsc28KICAgICAvLyByZXN1bHQg
aW4gbm90aGluZyBiZWluZyByZW5kZXJlZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dENvY29hLm1tIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0Q29jb2EubW0KaW5k
ZXggNjdmNGRlYjE3MmI2YzBmZTIzYzFiMWQxZmIwOWVhYjhhZGFlMTMxYi4uNDVkNzczOWQ2NDZk
NzhhMTdlN2Q3MjE4OWQyZDdjYzMxMWRjYzdjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0Q29jb2EubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0Q29jb2Eu
bW0KQEAgLTI5LDEwICsyOSwxMyBAQAogI2ltcG9ydCAiR3JhcGhpY3NDb250ZXh0Q0cuaCIKICNp
bXBvcnQgIkdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZUNHLmgiCiAjaW1wb3J0ICJJbnRS
ZWN0LmgiCisjaW1wb3J0IDxwYWwvc3BpL2NnL0NvcmVHcmFwaGljc1NQSS5oPgorI2ltcG9ydCA8
cGFsL3NwaS9tYWMvTlNHcmFwaGljc1NQSS5oPgorI2ltcG9ydCA8d3RmL1N0ZExpYkV4dHJhcy5o
PgorCiAjaWYgVVNFKEFQUEtJVCkKICNpbXBvcnQgPEFwcEtpdC9BcHBLaXQuaD4KICNlbmRpZgot
I2ltcG9ydCA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCiAjaWYgUExBVEZPUk0oSU9TKQogI2ltcG9y
dCAiQ29sb3IuaCIKQEAgLTQzLDcgKzQ2LDYgQEAKICNpZiAhUExBVEZPUk0oSU9TKQogI2ltcG9y
dCAiTG9jYWxDdXJyZW50R3JhcGhpY3NDb250ZXh0LmgiCiAjZW5kaWYKLSNpbXBvcnQgIldlYkNv
cmVTeXN0ZW1JbnRlcmZhY2UuaCIKIAogQGNsYXNzIE5TQ29sb3I7CiAKQEAgLTU3LDExICs1OSw0
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAvLyBleGNlcHRpb25zIGZvciB0aG9zZS4KIAogI2lm
ICFQTEFURk9STShJT1MpCitDR0NvbG9yUmVmIEdyYXBoaWNzQ29udGV4dDo6Zm9jdXNSaW5nQ29s
b3IoKQoreworICAgIHN0YXRpYyBDR0NvbG9yUmVmIGNvbG9yOworICAgIGlmICghY29sb3IpIHsK
KyAgICAgICAgQ0dGbG9hdCBjb2xvckNvbXBvbmVudHNbXSA9IHsgMC41LCAwLjc1LCAxLjAsIDEu
MCB9OworICAgICAgICBhdXRvIGNvbG9yU3BhY2UgPSBhZG9wdENGKENHQ29sb3JTcGFjZUNyZWF0
ZVdpdGhOYW1lKGtDR0NvbG9yU3BhY2VTUkdCKSk7CisgICAgICAgIGNvbG9yID0gQ0dDb2xvckNy
ZWF0ZShjb2xvclNwYWNlLmdldCgpLCBjb2xvckNvbXBvbmVudHMpOworICAgIH0KKyAgICByZXR1
cm4gY29sb3I7Cit9CisKK3N0YXRpYyBib29sIGRyYXdGb2N1c1JpbmdBdFRpbWUoQ0dDb250ZXh0
UmVmIGNvbnRleHQsIE5TVGltZUludGVydmFsIHRpbWVPZmZzZXQpCit7CisgICAgQ0dGb2N1c1Jp
bmdTdHlsZSBmb2N1c1JpbmdTdHlsZTsKKyAgICBCT09MIG5lZWRzUmVwYWludCA9IE5TSW5pdGlh
bGl6ZUNHRm9jdXNSaW5nU3R5bGVGb3JUaW1lKE5TRm9jdXNSaW5nT25seSwgJmZvY3VzUmluZ1N0
eWxlLCB0aW1lT2Zmc2V0KTsKKworICAgIC8vIFdlIHdhbnQgdG8gcmVzcGVjdCB0aGUgQ0dDb250
ZXh0IGNsaXBwaW5nIGFuZCBhbHNvIG5vdCBvdmVycGFpbnQgYW55CisgICAgLy8gZXhpc3Rpbmcg
Zm9jdXMgcmluZy4gVGhlIHdheSB0byBkbyB0aGlzIGlzIHNldCBhY2N1bXVsYXRlIHRvCisgICAg
Ly8gLTEuIEFjY29yZGluZyB0byBDb3JlR3JhcGhpY3MsIHRoZSByZWFzb25pbmcgZm9yIHRoaXMg
YmVoYXZpb3IgaGFzIGJlZW4KKyAgICAvLyBsb3N0IGluIHRpbWUuCisgICAgZm9jdXNSaW5nU3R5
bGUuYWNjdW11bGF0ZSA9IC0xOworICAgIGF1dG8gc3R5bGUgPSBhZG9wdENGKENHU3R5bGVDcmVh
dGVGb2N1c1JpbmdXaXRoQ29sb3IoJmZvY3VzUmluZ1N0eWxlLCBHcmFwaGljc0NvbnRleHQ6OmZv
Y3VzUmluZ0NvbG9yKCkpKTsKKworICAgIENHQ29udGV4dFNhdmVHU3RhdGUoY29udGV4dCk7Cisg
ICAgQ0dDb250ZXh0U2V0U3R5bGUoY29udGV4dCwgc3R5bGUuZ2V0KCkpOworICAgIENHQ29udGV4
dEZpbGxQYXRoKGNvbnRleHQpOworICAgIENHQ29udGV4dFJlc3RvcmVHU3RhdGUoY29udGV4dCk7
CisKKyAgICByZXR1cm4gbmVlZHNSZXBhaW50OworfQorCitzdGF0aWMgdm9pZCBkcmF3Rm9jdXNS
aW5nKENHQ29udGV4dFJlZiBjb250ZXh0KQoreworICAgIGRyYXdGb2N1c1JpbmdBdFRpbWUoY29u
dGV4dCwgREJMX01BWCk7Cit9CisKIHN0YXRpYyB2b2lkIGRyYXdGb2N1c1JpbmdUb0NvbnRleHQo
Q0dDb250ZXh0UmVmIGNvbnRleHQsIENHUGF0aFJlZiBmb2N1c1JpbmdQYXRoKQogewogICAgIENH
Q29udGV4dEJlZ2luUGF0aChjb250ZXh0KTsKICAgICBDR0NvbnRleHRBZGRQYXRoKGNvbnRleHQs
IGZvY3VzUmluZ1BhdGgpOwotICAgIHdrRHJhd0ZvY3VzUmluZyhjb250ZXh0LCBudWxscHRyLCAw
KTsKKyAgICBkcmF3Rm9jdXNSaW5nKGNvbnRleHQpOwogfQogCiBzdGF0aWMgYm9vbCBkcmF3Rm9j
dXNSaW5nVG9Db250ZXh0QXRUaW1lKENHQ29udGV4dFJlZiBjb250ZXh0LCBDR1BhdGhSZWYgZm9j
dXNSaW5nUGF0aCwgZG91YmxlIHRpbWVPZmZzZXQpCkBAIC02OSw3ICsxMDcsNyBAQCBzdGF0aWMg
Ym9vbCBkcmF3Rm9jdXNSaW5nVG9Db250ZXh0QXRUaW1lKENHQ29udGV4dFJlZiBjb250ZXh0LCBD
R1BhdGhSZWYgZm9jdXNSaQogICAgIFVOVVNFRF9QQVJBTSh0aW1lT2Zmc2V0KTsKICAgICBDR0Nv
bnRleHRCZWdpblBhdGgoY29udGV4dCk7CiAgICAgQ0dDb250ZXh0QWRkUGF0aChjb250ZXh0LCBm
b2N1c1JpbmdQYXRoKTsKLSAgICByZXR1cm4gd2tEcmF3Rm9jdXNSaW5nQXRUaW1lKGNvbnRleHQs
IHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6bWF4KCkpOworICAgIHJldHVybiBkcmF3Rm9j
dXNSaW5nQXRUaW1lKGNvbnRleHQsIHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6bWF4KCkp
OwogfQogI2VuZGlmIC8vICFQTEFURk9STShJT1MpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2lvcy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlSU9TLm1tIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW9zL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2VJT1MubW0KaW5kZXggMDlh
MTgyODE0ZDE0MDEzYjdjODhlOGVlYmYwM2Q5YWUwY2ZhMjg2OS4uNzU3ZDA0NWY1YzU4NTQ0NDk2
ZjJkZDY5MDUwYmQxYWY4NjhjMmVkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW9zL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2VJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW9zL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2VJT1MubW0KQEAgLTI3LDEwICsyNyw4
IEBACiAjaW1wb3J0ICJXZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmgiCiAKIFdFQkNPUkVfRVhQT1JU
IHZvaWQgKCp3a0NBTGF5ZXJFbnVtZXJhdGVSZWN0c0JlaW5nRHJhd25XaXRoQmxvY2spKENBTGF5
ZXIgKiwgQ0dDb250ZXh0UmVmIGNvbnRleHQsIHZvaWQgKF5ibG9jaykoQ0dSZWN0IHJlY3QpKTsK
LVdFQkNPUkVfRVhQT1JUIENHUGF0dGVyblJlZiAoKndrQ0dQYXR0ZXJuQ3JlYXRlV2l0aEltYWdl
QW5kVHJhbnNmb3JtKShDR0ltYWdlUmVmLCBDR0FmZmluZVRyYW5zZm9ybSwgaW50KTsKIFdFQkNP
UkVfRVhQT1JUIHZvaWQgKCp3a0NsZWFyR2x5cGhWZWN0b3IpKHZvaWQqIGdseXBocyk7CiBXRUJD
T1JFX0VYUE9SVCBPU1N0YXR1cyAoKndrQ29udmVydENoYXJUb0dseXBocykodm9pZCogc3R5bGVH
cm91cCwgY29uc3QgVW5pQ2hhciosIHVuc2lnbmVkIG51bUNoYXJhY3RlcnMsIHZvaWQqIGdseXBo
cyk7Ci1XRUJDT1JFX0VYUE9SVCBib29sICgqd2tDR0NvbnRleHRJc1BERkNvbnRleHQpKENHQ29u
dGV4dFJlZik7CiBXRUJDT1JFX0VYUE9SVCBpZCAoKndrQ3JlYXRlTlNVUkxDb25uZWN0aW9uRGVs
ZWdhdGVQcm94eSkodm9pZCk7CiBXRUJDT1JFX0VYUE9SVCB2b2lkICgqd2tTZXRDT05ORUNUUHJv
eHlGb3JTdHJlYW0pKENGUmVhZFN0cmVhbVJlZiwgQ0ZTdHJpbmdSZWYgcHJveHlIb3N0LCBDRk51
bWJlclJlZiBwcm94eVBvcnQpOwogV0VCQ09SRV9FWFBPUlQgdm9pZCAoKndrU2V0Q09OTkVDVFBy
b3h5QXV0aG9yaXphdGlvbkZvclN0cmVhbSkoQ0ZSZWFkU3RyZWFtUmVmLCBDRlN0cmluZ1JlZiBw
cm94eUF1dGhvcml6YXRpb25TdHJpbmcpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMv
UGFzdGVib2FyZE1hYy5tbQppbmRleCAyMGU2MzVjMDkwNWFlODk2YzdiYjU0MjFjODU2YjIxYjJh
NDQ2YjQ5Li45NGY4MGU5YTU0MmUyNjFhMzVlMGEwYmEwYmNlNDE2YWI2ZjU5MmM2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbQpAQCAtNTIsNiArNTIs
NyBAQAogI2ltcG9ydCAiV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oIgogI2ltcG9ydCAiV2ViTlNB
dHRyaWJ1dGVkU3RyaW5nRXh0cmFzLmgiCiAjaW1wb3J0ICJtYXJrdXAuaCIKKyNpbXBvcnQgPHBh
bC9zcGkvbWFjL0hJU2VydmljZXNTUEkuaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KICNp
bXBvcnQgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L1N0cmluZ0J1aWxk
ZXIuaD4KQEAgLTY2OSw2ICs2NzAsODAgQEAgVmVjdG9yPFN0cmluZz4gUGFzdGVib2FyZDo6cmVh
ZEZpbGVuYW1lcygpCiB9CiAKICNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQorc3RhdGljIHZvaWQg
ZmxpcEltYWdlU3BlYyhDb3JlRHJhZ0ltYWdlU3BlYyogaW1hZ2VTcGVjKQoreworICAgIHVuc2ln
bmVkIGNoYXIqIHRlbXBSb3cgPSAodW5zaWduZWQgY2hhciopZmFzdE1hbGxvYyhpbWFnZVNwZWMt
PmJ5dGVzUGVyUm93KTsKKyAgICBpbnQgcGxhbmVzID0gaW1hZ2VTcGVjLT5pc1BsYW5hciA/IGlt
YWdlU3BlYy0+c2FtcGxlc1BlclBpeGVsIDogMTsKKworICAgIGZvciAoaW50IHAgPSAwOyBwIDwg
cGxhbmVzOyBwKyspIHsKKyAgICAgICAgdW5zaWduZWQgY2hhciogdG9wUm93ID0gKHVuc2lnbmVk
IGNoYXIqKWltYWdlU3BlYy0+ZGF0YVtwXTsKKyAgICAgICAgdW5zaWduZWQgY2hhciogYm90Um93
ID0gdG9wUm93ICsgKGltYWdlU3BlYy0+cGl4ZWxzSGlnaCAtIDEpICogaW1hZ2VTcGVjLT5ieXRl
c1BlclJvdzsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBpbWFnZVNwZWMtPnBpeGVsc0hp
Z2ggLyAyOyBpKyssIHRvcFJvdyArPSBpbWFnZVNwZWMtPmJ5dGVzUGVyUm93LCBib3RSb3cgLT0g
aW1hZ2VTcGVjLT5ieXRlc1BlclJvdykgeworICAgICAgICAgICAgYmNvcHkodG9wUm93LCAgdGVt
cFJvdywgaW1hZ2VTcGVjLT5ieXRlc1BlclJvdyk7CisgICAgICAgICAgICBiY29weShib3RSb3cs
ICB0b3BSb3csICBpbWFnZVNwZWMtPmJ5dGVzUGVyUm93KTsKKyAgICAgICAgICAgIGJjb3B5KHRl
bXBSb3csIGJvdFJvdywgIGltYWdlU3BlYy0+Ynl0ZXNQZXJSb3cpOworICAgICAgICB9CisgICAg
fQorCisgICAgZmFzdEZyZWUodGVtcFJvdyk7Cit9CisKK3N0YXRpYyB2b2lkIHNldERyYWdJbWFn
ZUltcGwoTlNJbWFnZSAqaW1hZ2UsIE5TUG9pbnQgb2Zmc2V0KQoreworICAgIGJvb2wgZmxpcElt
YWdlOworICAgIE5TU2l6ZSBpbWFnZVNpemUgPSBpbWFnZS5zaXplOworICAgIENHUmVjdCBpbWFn
ZVJlY3QgPSBDR1JlY3RNYWtlKDAsIDAsIGltYWdlU2l6ZS53aWR0aCwgaW1hZ2VTaXplLmhlaWdo
dCk7CisgICAgTlNJbWFnZVJlcCAqaW1hZ2VSZXAgPSBbaW1hZ2UgYmVzdFJlcHJlc2VudGF0aW9u
Rm9yUmVjdDpOU1JlY3RGcm9tQ0dSZWN0KGltYWdlUmVjdCkgY29udGV4dDpuaWwgaGludHM6bmls
XTsKKyAgICBSZXRhaW5QdHI8TlNCaXRtYXBJbWFnZVJlcD4gYml0bWFwSW1hZ2U7CisgICAgaWYg
KCFpbWFnZVJlcCB8fCAhW2ltYWdlUmVwIGlzS2luZE9mQ2xhc3M6W05TQml0bWFwSW1hZ2VSZXAg
Y2xhc3NdXSB8fCAhTlNFcXVhbFNpemVzKGltYWdlUmVwLnNpemUsIGltYWdlU2l6ZSkpIHsKKyAg
ICAgICAgW2ltYWdlIGxvY2tGb2N1c107CisgICAgICAgIGJpdG1hcEltYWdlID0gYWRvcHROUyhb
W05TQml0bWFwSW1hZ2VSZXAgYWxsb2NdIGluaXRXaXRoRm9jdXNlZFZpZXdSZWN0OiooTlNSZWN0
ICopJmltYWdlUmVjdF0pOworICAgICAgICBbaW1hZ2UgdW5sb2NrRm9jdXNdOworICAgICAgICAK
KyAgICAgICAgLy8gd2UgbWF5IGhhdmUgdG8gZmxpcCB0aGUgYml0cyB3ZSBqdXN0IHJlYWQgaWYg
dGhlIGltYWdlIHdhcyBmbGlwcGVkIHNpbmNlIGl0IG1lYW5zIHRoZSBjYWNoZSB3YXMgYWxzbwor
ICAgICAgICAvLyBhbmQgQ29yZURyYWdTZXRJbWFnZSBjYW4ndCB0YWtlIGEgdHJhbnNmb3JtIGZv
ciByZW5kZXJpbmcuCisjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcHVzaAorI3ByYWdtYSBjbGFu
ZyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XZGVwcmVjYXRlZC1kZWNsYXJhdGlvbnMiCisgICAgICAg
IGZsaXBJbWFnZSA9IGltYWdlLmlzRmxpcHBlZDsKKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBw
b3AKKyAgICB9IGVsc2UgeworICAgICAgICBmbGlwSW1hZ2UgPSBmYWxzZTsKKyAgICAgICAgYml0
bWFwSW1hZ2UgPSAoTlNCaXRtYXBJbWFnZVJlcCAqKWltYWdlUmVwOworICAgIH0KKyAgICBBU1NF
UlQoYml0bWFwSW1hZ2UpOworCisgICAgQ29yZURyYWdJbWFnZVNwZWMgaW1hZ2VTcGVjOworICAg
IGltYWdlU3BlYy52ZXJzaW9uID0ga0NvcmVEcmFnSW1hZ2VTcGVjVmVyc2lvbk9uZTsKKyAgICBp
bWFnZVNwZWMucGl4ZWxzV2lkZSA9IFtiaXRtYXBJbWFnZSBwaXhlbHNXaWRlXTsKKyAgICBpbWFn
ZVNwZWMucGl4ZWxzSGlnaCA9IFtiaXRtYXBJbWFnZSBwaXhlbHNIaWdoXTsKKyAgICBpbWFnZVNw
ZWMuYml0c1BlclNhbXBsZSA9IFtiaXRtYXBJbWFnZSBiaXRzUGVyU2FtcGxlXTsKKyAgICBpbWFn
ZVNwZWMuc2FtcGxlc1BlclBpeGVsID0gW2JpdG1hcEltYWdlIHNhbXBsZXNQZXJQaXhlbF07Cisg
ICAgaW1hZ2VTcGVjLmJpdHNQZXJQaXhlbCA9IFtiaXRtYXBJbWFnZSBiaXRzUGVyUGl4ZWxdOwor
ICAgIGltYWdlU3BlYy5ieXRlc1BlclJvdyA9IFtiaXRtYXBJbWFnZSBieXRlc1BlclJvd107Cisg
ICAgaW1hZ2VTcGVjLmlzUGxhbmFyID0gW2JpdG1hcEltYWdlIGlzUGxhbmFyXTsKKyAgICBpbWFn
ZVNwZWMuaGFzQWxwaGEgPSBbYml0bWFwSW1hZ2UgaGFzQWxwaGFdOworICAgIFtiaXRtYXBJbWFn
ZSBnZXRCaXRtYXBEYXRhUGxhbmVzOih1bnNpZ25lZCBjaGFyKiopaW1hZ2VTcGVjLmRhdGFdOwor
CisgICAgLy8gaWYgaW1hZ2Ugd2FzIGZsaXBwZWQsIHdlIGhhdmUgYW4gdXBzaWRlIGRvd24gYml0
bWFwIHNpbmNlIHRoZSBjYWNoZSBpcyByZW5kZXJlZCBmbGlwcGVkCisgICAgaWYgKGZsaXBJbWFn
ZSkKKyAgICAgICAgZmxpcEltYWdlU3BlYygmaW1hZ2VTcGVjKTsKKworICAgIENHU1JlZ2lvbk9i
aiBpbWFnZVNoYXBlOworICAgIE9TU3RhdHVzIGVycm9yID0gQ0dTTmV3UmVnaW9uV2l0aFJlY3Qo
JmltYWdlUmVjdCwgJmltYWdlU2hhcGUpOworICAgIEFTU0VSVChlcnJvciA9PSBrQ0dFcnJvclN1
Y2Nlc3MpOworICAgIGlmIChlcnJvciAhPSBrQ0dFcnJvclN1Y2Nlc3MpCisgICAgICAgIHJldHVy
bjsKKworICAgIC8vIG1ha2Ugc3VyZSBpbWFnZSBoYXMgaW50ZWdlciBvZmZzZXQKKyAgICBDR1Bv
aW50IGltYWdlT2Zmc2V0ID0gey1vZmZzZXQueCwgLShpbWFnZVNpemUuaGVpZ2h0IC0gb2Zmc2V0
LnkpfTsKKyAgICBpbWFnZU9mZnNldC54ID0gZmxvb3IoaW1hZ2VPZmZzZXQueCArIDAuNSk7Cisg
ICAgaW1hZ2VPZmZzZXQueSA9IGZsb29yKGltYWdlT2Zmc2V0LnkgKyAwLjUpOworCisgICAgZXJy
b3IgPSBDb3JlRHJhZ1NldEltYWdlKENvcmVEcmFnR2V0Q3VycmVudERyYWcoKSwgaW1hZ2VPZmZz
ZXQsICZpbWFnZVNwZWMsIGltYWdlU2hhcGUsIDEuMCk7CisgICAgQ0dTUmVsZWFzZVJlZ2lvbihp
bWFnZVNoYXBlKTsKKyAgICBBU1NFUlQoZXJyb3IgPT0ga0NHRXJyb3JTdWNjZXNzKTsKK30KKwog
dm9pZCBQYXN0ZWJvYXJkOjpzZXREcmFnSW1hZ2UoRHJhZ0ltYWdlIGltYWdlLCBjb25zdCBJbnRQ
b2ludCYgbG9jYXRpb24pCiB7CiAgICAgLy8gRG9uJ3QgYWxsb3cgc2V0dGluZyB0aGUgZHJhZyBp
bWFnZSBpZiBzb21lb25lIGtlcHQgYSBwYXN0ZWJvYXJkIGFuZCBpcyB0cnlpbmcgdG8gc2V0IHRo
ZSBpbWFnZSB0b28gbGF0ZS4KQEAgLTY3Nyw3ICs3NTIsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6OnNl
dERyYWdJbWFnZShEcmFnSW1hZ2UgaW1hZ2UsIGNvbnN0IEludFBvaW50JiBsb2NhdGlvbikKIAog
ICAgIC8vIERhc2hib2FyZCB3YW50cyB0byBiZSBhYmxlIHRvIHNldCB0aGUgZHJhZyBpbWFnZSBk
dXJpbmcgZHJhZ2dpbmcsIGJ1dCBDb2NvYSBkb2VzIG5vdCBhbGxvdyB0aGlzLgogICAgIC8vIElu
c3RlYWQgd2UgbXVzdCBkcm9wIGRvd24gdG8gdGhlIENvcmVHcmFwaGljcyBBUEkuCi0gICAgd2tT
ZXREcmFnSW1hZ2UoaW1hZ2UuZ2V0KCkuZ2V0KCksIGxvY2F0aW9uKTsKKyAgICBzZXREcmFnSW1h
Z2VJbXBsKGltYWdlLmdldCgpLmdldCgpLCBsb2NhdGlvbik7CiAKICAgICAvLyBIYWNrOiBXZSBt
dXN0IHBvc3QgYW4gZXZlbnQgdG8gd2FrZSB1cCB0aGUgTlNEcmFnTWFuYWdlciwgd2hpY2ggaXMg
c2l0dGluZyBpbiBhIG5leHRFdmVudCBjYWxsCiAgICAgLy8gdXAgdGhlIHN0YWNrIGZyb20gdXMg
YmVjYXVzZSB0aGUgQ29yZUZvdW5kYXRpb24gZHJhZyBtYW5hZ2VyIGRvZXMgbm90IHVzZSB0aGUg
cnVuIGxvb3AgYnkgaXRzZWxmLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL1BsYXRmb3JtRXZlbnRGYWN0b3J5TWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL1BsYXRmb3JtRXZlbnRGYWN0b3J5TWFjLm1tCmluZGV4IGJjMWUzNjdmYzQ2OTRlYWY0NjBh
YjBlYTVhNDIzMGQwMDAwMWFjODkuLjUwMDEwMDlmMjExOTQ1ZGE5Nzc4YTNlYWFmOTllZDgzMTJm
ZDc3NTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybUV2
ZW50RmFjdG9yeU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZv
cm1FdmVudEZhY3RvcnlNYWMubW0KQEAgLTY3Myw3ICs2NzMsNyBAQCBzdGF0aWMgaW50IHR5cGVG
b3JFdmVudChOU0V2ZW50ICpldmVudCkKIHsKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50Pihb
TlNNZW51IG1lbnVUeXBlRm9yRXZlbnQ6ZXZlbnRdKTsKIH0KLSAgICAKKwogY2xhc3MgUGxhdGZv
cm1Nb3VzZUV2ZW50QnVpbGRlciA6IHB1YmxpYyBQbGF0Zm9ybU1vdXNlRXZlbnQgewogcHVibGlj
OgogICAgIFBsYXRmb3JtTW91c2VFdmVudEJ1aWxkZXIoTlNFdmVudCAqZXZlbnQsIE5TRXZlbnQg
KmNvcnJlc3BvbmRpbmdQcmVzc3VyZUV2ZW50LCBOU1ZpZXcgKndpbmRvd1ZpZXcpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsYmFyVGhlbWVNYWMubW0gYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsYmFyVGhlbWVNYWMubW0KaW5kZXggYzRj
Mjg3NzY4MzU3NDk2YWViMjg4ZmE0MWYwZGQ5NWQyZDdjYzI4OC4uNmQwNWI4NmM2M2QwNWY3YjZk
MTQ3MzE3ZWZkMjdmZjM0MTU4MzE5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWFjL1Njcm9sbGJhclRoZW1lTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21hYy9TY3JvbGxiYXJUaGVtZU1hYy5tbQpAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUgIlNj
cm9sbFZpZXcuaCIKICNpbmNsdWRlICJXZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmgiCiAjaW5jbHVk
ZSA8Q2FyYm9uL0NhcmJvbi5oPgorI2luY2x1ZGUgPHBhbC9zcGkvY2cvQ29yZUdyYXBoaWNzU1BJ
Lmg+CiAjaW5jbHVkZSA8cGFsL3NwaS9tYWMvTlNTY3JvbGxlckltcFNQSS5oPgogI2luY2x1ZGUg
PHd0Zi9CbG9ja09iakNFeGNlcHRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KQEAg
LTU3Myw3ICs1NzQsNyBAQCBzdGF0aWMgUmV0YWluUHRyPENHQ29sb3JSZWY+IGxpbmVuQmFja2dy
b3VuZENvbG9yKCkKICAgICBpZiAoIWNnSW1hZ2UpCiAgICAgICAgIHJldHVybiBudWxscHRyOwog
Ci0gICAgUmV0YWluUHRyPENHUGF0dGVyblJlZj4gcGF0dGVybiA9IGFkb3B0Q0Yod2tDR1BhdHRl
cm5DcmVhdGVXaXRoSW1hZ2VBbmRUcmFuc2Zvcm0oY2dJbWFnZSwgQ0dBZmZpbmVUcmFuc2Zvcm1J
ZGVudGl0eSwgd2tQYXR0ZXJuVGlsaW5nTm9EaXN0b3J0aW9uKSk7CisgICAgUmV0YWluUHRyPENH
UGF0dGVyblJlZj4gcGF0dGVybiA9IGFkb3B0Q0YoQ0dQYXR0ZXJuQ3JlYXRlV2l0aEltYWdlMihj
Z0ltYWdlLCBDR0FmZmluZVRyYW5zZm9ybUlkZW50aXR5LCBrQ0dQYXR0ZXJuVGlsaW5nTm9EaXN0
b3J0aW9uKSk7CiAgICAgUmV0YWluUHRyPENHQ29sb3JTcGFjZVJlZj4gY29sb3JTcGFjZSA9IGFk
b3B0Q0YoQ0dDb2xvclNwYWNlQ3JlYXRlUGF0dGVybigwKSk7CiAKICAgICBjb25zdCBDR0Zsb2F0
IGFscGhhID0gMS4wOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Ro
ZW1lTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1RoZW1lTWFjLm1tCmluZGV4
IDkwZjEwNDFlZmY3ZjBjNjQ3ZDZmODM5MWMwMjdmNTNkMWFiNDQ3MTQuLjhhMTkyNjVjZjVkODJm
MjAyNWZmNTAxZWVlMmVmOTUxZjg0Mzc4NTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21hYy9UaGVtZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMv
VGhlbWVNYWMubW0KQEAgLTM2LDYgKzM2LDcgQEAKICNpbXBvcnQgIldlYkNvcmVTeXN0ZW1JbnRl
cmZhY2UuaCIKICNpbXBvcnQgPENhcmJvbi9DYXJib24uaD4KICNpbXBvcnQgPHBhbC9zcGkvY29j
b2EvTlNCdXR0b25DZWxsU1BJLmg+CisjaW1wb3J0IDxwYWwvc3BpL21hYy9OU0dyYXBoaWNzU1BJ
Lmg+CiAjaW1wb3J0IDx3dGYvQmxvY2tPYmpDRXhjZXB0aW9ucy5oPgogI2ltcG9ydCA8d3RmL05l
dmVyRGVzdHJveWVkLmg+CiAjaW1wb3J0IDx3dGYvU3RkTGliRXh0cmFzLmg+CkBAIC0zNDksOSAr
MzUwLDMyIEBAIHN0YXRpYyBOU0J1dHRvbkNlbGwgKnNoYXJlZENoZWNrYm94Q2VsbChjb25zdCBD
b250cm9sU3RhdGVzJiBzdGF0ZXMsIGNvbnN0IEludFNpCiAgICAgcmV0dXJuIGNoZWNrYm94Q2Vs
bDsKIH0KIAorc3RhdGljIGJvb2wgZHJhd0NlbGxGb2N1c1JpbmdXaXRoRnJhbWVBdFRpbWUoTlND
ZWxsICpjZWxsLCBOU1JlY3QgY2VsbEZyYW1lLCBOU1ZpZXcgKmNvbnRyb2xWaWV3LCBOU1RpbWVJ
bnRlcnZhbCB0aW1lT2Zmc2V0KQoreworICAgIENHQ29udGV4dFJlZiBjZ0NvbnRleHQgPSAoQ0dD
b250ZXh0UmVmKVtbTlNHcmFwaGljc0NvbnRleHQgY3VycmVudENvbnRleHRdIGdyYXBoaWNzUG9y
dF07CisgICAgQ0dDb250ZXh0U2F2ZUdTdGF0ZShjZ0NvbnRleHQpOworCisgICAgQ0dGb2N1c1Jp
bmdTdHlsZSBmb2N1c1JpbmdTdHlsZTsKKyAgICBib29sIG5lZWRzUmVwYWludCA9IE5TSW5pdGlh
bGl6ZUNHRm9jdXNSaW5nU3R5bGVGb3JUaW1lKE5TRm9jdXNSaW5nT25seSwgJmZvY3VzUmluZ1N0
eWxlLCB0aW1lT2Zmc2V0KTsKKyAgICAvLyBXZSB3YW50IHRvIHJlc3BlY3QgdGhlIENHQ29udGV4
dCBjbGlwcGluZyBhbmQgYWxzbyBub3Qgb3ZlcnBhaW50IGFueQorICAgIC8vIGV4aXN0aW5nIGZv
Y3VzIHJpbmcuIFRoZSB3YXkgdG8gZG8gdGhpcyBpcyBzZXQgYWNjdW11bGF0ZSB0bworICAgIC8v
IC0xLiBBY2NvcmRpbmcgdG8gQ29yZUdyYXBoaWNzLCB0aGUgcmVhc29uaW5nIGZvciB0aGlzIGJl
aGF2aW9yIGhhcyBiZWVuCisgICAgLy8gbG9zdCBpbiB0aW1lLgorICAgIGZvY3VzUmluZ1N0eWxl
LmFjY3VtdWxhdGUgPSAtMTsKKyAgICBhdXRvIHN0eWxlID0gYWRvcHRDRihDR1N0eWxlQ3JlYXRl
Rm9jdXNSaW5nV2l0aENvbG9yKCZmb2N1c1JpbmdTdHlsZSwgR3JhcGhpY3NDb250ZXh0Ojpmb2N1
c1JpbmdDb2xvcigpKSk7CisgICAgQ0dDb250ZXh0U2V0U3R5bGUoY2dDb250ZXh0LCBzdHlsZS5n
ZXQoKSk7CisKKyAgICBDR0NvbnRleHRCZWdpblRyYW5zcGFyZW5jeUxheWVyV2l0aFJlY3QoY2dD
b250ZXh0LCBOU1JlY3RUb0NHUmVjdChjZWxsRnJhbWUpLCAwKTsKKyAgICBbY2VsbCBkcmF3Rm9j
dXNSaW5nTWFza1dpdGhGcmFtZTpjZWxsRnJhbWUgaW5WaWV3OmNvbnRyb2xWaWV3XTsKKyAgICBD
R0NvbnRleHRFbmRUcmFuc3BhcmVuY3lMYXllcihjZ0NvbnRleHQpOworICAgIENHQ29udGV4dFJl
c3RvcmVHU3RhdGUoY2dDb250ZXh0KTsKKworICAgIHJldHVybiBuZWVkc1JlcGFpbnQ7Cit9CisK
IHN0YXRpYyBib29sIGRyYXdDZWxsRm9jdXNSaW5nKE5TQ2VsbCAqY2VsbCwgTlNSZWN0IGNlbGxG
cmFtZSwgTlNWaWV3ICpjb250cm9sVmlldykKIHsKLSAgICB3a0RyYXdDZWxsRm9jdXNSaW5nV2l0
aEZyYW1lQXRUaW1lKGNlbGwsIGNlbGxGcmFtZSwgY29udHJvbFZpZXcsIHN0ZDo6bnVtZXJpY19s
aW1pdHM8ZG91YmxlPjo6bWF4KCkpOworICAgIGRyYXdDZWxsRm9jdXNSaW5nV2l0aEZyYW1lQXRU
aW1lKGNlbGwsIGNlbGxGcmFtZSwgY29udHJvbFZpZXcsIHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91
YmxlPjo6bWF4KCkpOwogICAgIHJldHVybiBmYWxzZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmgKaW5kZXggOTNjZGZk
MGM3YWIxZTk2ODAxMDZjYTY0ODU0NDg1NjZiNzQ0NGU0Ni4uNmJkMTRjZGIyYjBlZTYwOTAxNGVk
Mjc5MTc1ZDQ3MTVkN2QwZTlhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tYWMvV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oCkBAIC0xMjYsMTQgKzEyNiw3IEBAIHR5cGVk
ZWYgZW51bSB7CiAgICAgd2tQYXR0ZXJuVGlsaW5nQ29uc3RhbnRTcGFjaW5nCiB9IHdrUGF0dGVy
blRpbGluZzsKICNpZiAhUExBVEZPUk0oSU9TKQotZXh0ZXJuIGJvb2wgKCp3a0NHQ29udGV4dERy
YXdzV2l0aENvcnJlY3RTaGFkb3dPZmZzZXRzKShDR0NvbnRleHRSZWYpOwotI2VuZGlmCi1leHRl
cm4gQ0dQYXR0ZXJuUmVmICgqd2tDR1BhdHRlcm5DcmVhdGVXaXRoSW1hZ2VBbmRUcmFuc2Zvcm0p
KENHSW1hZ2VSZWYsIENHQWZmaW5lVHJhbnNmb3JtLCBpbnQpOwotI2lmICFQTEFURk9STShJT1Mp
CiBleHRlcm4gdm9pZCAoKndrRHJhd0JlemVsZWRUZXh0QXJlYSkoTlNSZWN0LCBCT09MIGVuYWJs
ZWQpOwotZXh0ZXJuIHZvaWQgKCp3a0RyYXdGb2N1c1JpbmcpKENHQ29udGV4dFJlZiwgQ0dDb2xv
clJlZiwgaW50KTsKLWV4dGVybiBib29sICgqd2tEcmF3Rm9jdXNSaW5nQXRUaW1lKShDR0NvbnRl
eHRSZWYsIE5TVGltZUludGVydmFsIHRpbWUpOwotZXh0ZXJuIGJvb2wgKCp3a0RyYXdDZWxsRm9j
dXNSaW5nV2l0aEZyYW1lQXRUaW1lKShOU0NlbGwgKmNlbGwsIE5TUmVjdCBjZWxsRnJhbWUsIE5T
VmlldyAqY29udHJvbFZpZXcsIE5TVGltZUludGVydmFsIHRpbWUpOwogZXh0ZXJuIHZvaWQgKCp3
a0RyYXdNZWRpYVNsaWRlclRyYWNrKShDR0NvbnRleHRSZWYgY29udGV4dCwgQ0dSZWN0IHJlY3Qs
IGZsb2F0IHRpbWVMb2FkZWQsIGZsb2F0IGN1cnJlbnRUaW1lLAogICAgIGZsb2F0IGR1cmF0aW9u
LCB1bnNpZ25lZCBzdGF0ZSk7CiBleHRlcm4gdm9pZCAoKndrRHJhd01lZGlhVUlQYXJ0KShpbnQg
cGFydCwgQ0dDb250ZXh0UmVmIGNvbnRleHQsIENHUmVjdCByZWN0LCB1bnNpZ25lZCBzdGF0ZSk7
CkBAIC0xNTcsOSArMTUwLDYgQEAgdHlwZWRlZiBlbnVtIHsKIH0gd2tNZWRpYVVJQ29udHJvbFR5
cGU7CiBleHRlcm4gTlNDb250cm9sICooKndrQ3JlYXRlTWVkaWFVSUNvbnRyb2wpKGludCk7CiAK
LWV4dGVybiB2b2lkICgqd2tXaW5kb3dTZXRBbHBoYSkoTlNXaW5kb3cgKiwgZmxvYXQpOwotZXh0
ZXJuIHZvaWQgKCp3a1dpbmRvd1NldFNjYWxlZEZyYW1lKShOU1dpbmRvdyAqLCBOU1JlY3QsIE5T
UmVjdCk7Ci0KIGV4dGVybiB1bnNpZ25lZCAoKndrUVRJbmNsdWRlT25seU1vZGVybk1lZGlhRmls
ZVR5cGVzKSh2b2lkKTsKIGV4dGVybiB2b2lkICgqd2tRVE1vdmllRGlzYWJsZUNvbXBvbmVudCko
dWludDMyX3RbNV0pOwogZXh0ZXJuIGZsb2F0ICgqd2tRVE1vdmllTWF4VGltZUxvYWRlZCkoUVRN
b3ZpZSopOwpAQCAtMTczLDkgKzE2Myw3IEBAIGV4dGVybiBOU0FycmF5ICooKndrUVRHZXRTaXRl
c0luTWVkaWFEb3dubG9hZENhY2hlKSgpOwogZXh0ZXJuIHZvaWQgKCp3a1FUQ2xlYXJNZWRpYURv
d25sb2FkQ2FjaGVGb3JTaXRlKShOU1N0cmluZyAqc2l0ZSk7CiBleHRlcm4gdm9pZCAoKndrUVRD
bGVhck1lZGlhRG93bmxvYWRDYWNoZSkoKTsKIGV4dGVybiB2b2lkICgqd2tTZXRDb29raWVTdG9y
YWdlUHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCkoQk9PTCk7Ci1leHRlcm4gdm9pZCAoKndrU2V0RHJh
Z0ltYWdlKShOU0ltYWdlKiwgTlNQb2ludCBvZmZzZXQpOwogI2VuZGlmCi1leHRlcm4gYm9vbCAo
KndrQ0dDb250ZXh0SXNQREZDb250ZXh0KShDR0NvbnRleHRSZWYpOwogZXh0ZXJuIHZvaWQgKCp3
a1NldENPTk5FQ1RQcm94eUZvclN0cmVhbSkoQ0ZSZWFkU3RyZWFtUmVmLCBDRlN0cmluZ1JlZiBw
cm94eUhvc3QsIENGTnVtYmVyUmVmIHByb3h5UG9ydCk7CiBleHRlcm4gdm9pZCAoKndrU2V0Q09O
TkVDVFByb3h5QXV0aG9yaXphdGlvbkZvclN0cmVhbSkoQ0ZSZWFkU3RyZWFtUmVmLCBDRlN0cmlu
Z1JlZiBwcm94eUF1dGhvcml6YXRpb25TdHJpbmcpOwogZXh0ZXJuIENGSFRUUE1lc3NhZ2VSZWYg
KCp3a0NvcHlDT05ORUNUUHJveHlSZXNwb25zZSkoQ0ZSZWFkU3RyZWFtUmVmLCBDRlVSTFJlZiBy
ZXNwb25zZVVSTCwgQ0ZTdHJpbmdSZWYgcHJveHlIb3N0LCBDRk51bWJlclJlZiBwcm94eVBvcnQp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVTeXN0ZW1J
bnRlcmZhY2UubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZVN5c3RlbUlu
dGVyZmFjZS5tbQppbmRleCA2NDlkN2E2N2NkNjc2NTRhMmEzZTM5NGU5MzVmOGM1MjZmYTM5MjVh
Li5iNGI1YzAwODZjNDJlMmQ0M2QzMDZiOTJmNjE0MjZmNDdjOTM2YjgyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZVN5c3RlbUludGVyZmFjZS5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZVN5c3RlbUludGVyZmFjZS5tbQpA
QCAtMzEsMTIgKzMxLDcgQEAKICNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgogCiB2
b2lkICgqd2tDQUxheWVyRW51bWVyYXRlUmVjdHNCZWluZ0RyYXduV2l0aEJsb2NrKShDQUxheWVy
ICosIENHQ29udGV4dFJlZiBjb250ZXh0LCB2b2lkICheYmxvY2spKENHUmVjdCByZWN0KSk7Ci1i
b29sICgqd2tDR0NvbnRleHREcmF3c1dpdGhDb3JyZWN0U2hhZG93T2Zmc2V0cykoQ0dDb250ZXh0
UmVmKTsKLUNHUGF0dGVyblJlZiAoKndrQ0dQYXR0ZXJuQ3JlYXRlV2l0aEltYWdlQW5kVHJhbnNm
b3JtKShDR0ltYWdlUmVmLCBDR0FmZmluZVRyYW5zZm9ybSwgaW50KTsKIHZvaWQgKCp3a0RyYXdC
ZXplbGVkVGV4dEFyZWEpKE5TUmVjdCwgQk9PTCBlbmFibGVkKTsKLXZvaWQgKCp3a0RyYXdGb2N1
c1JpbmcpKENHQ29udGV4dFJlZiwgQ0dDb2xvclJlZiwgaW50KTsKLWJvb2wgKCp3a0RyYXdGb2N1
c1JpbmdBdFRpbWUpKENHQ29udGV4dFJlZiwgTlNUaW1lSW50ZXJ2YWwpOwotYm9vbCAoKndrRHJh
d0NlbGxGb2N1c1JpbmdXaXRoRnJhbWVBdFRpbWUpKE5TQ2VsbCosIE5TUmVjdCwgTlNWaWV3Kiwg
TlNUaW1lSW50ZXJ2YWwpOwogdm9pZCAoKndrRHJhd01lZGlhU2xpZGVyVHJhY2spKENHQ29udGV4
dFJlZiBjb250ZXh0LCBDR1JlY3QgcmVjdCwgZmxvYXQgdGltZUxvYWRlZCwgZmxvYXQgY3VycmVu
dFRpbWUsCiAgICAgZmxvYXQgZHVyYXRpb24sIHVuc2lnbmVkIHN0YXRlKTsKIEJPT0wgKCp3a0hp
dFRlc3RNZWRpYVVJUGFydCkoaW50IHBhcnQsIENHUmVjdCBib3VuZHMsIENHUG9pbnQgcG9pbnQp
OwpAQCAtNDQsOCArMzksNiBAQCB2b2lkICgqd2tEcmF3TWVkaWFVSVBhcnQpKGludCBwYXJ0LCBD
R0NvbnRleHRSZWYgY29udGV4dCwgQ0dSZWN0IHJlY3QsIHVuc2lnbmVkCiB2b2lkICgqd2tNZWFz
dXJlTWVkaWFVSVBhcnQpKGludCBwYXJ0LCBDR1JlY3QgKmJvdW5kcywgQ0dTaXplICpuYXR1cmFs
U2l6ZSk7CiBOU1ZpZXcgKigqd2tDcmVhdGVNZWRpYVVJQmFja2dyb3VuZFZpZXcpKHZvaWQpOwog
TlNDb250cm9sICooKndrQ3JlYXRlTWVkaWFVSUNvbnRyb2wpKGludCk7Ci12b2lkICgqd2tXaW5k
b3dTZXRBbHBoYSkoTlNXaW5kb3cgKiwgZmxvYXQpOwotdm9pZCAoKndrV2luZG93U2V0U2NhbGVk
RnJhbWUpKE5TV2luZG93ICosIE5TUmVjdCwgTlNSZWN0KTsKIE5TVGltZUludGVydmFsICgqd2tH
ZXROU1VSTFJlc3BvbnNlQ2FsY3VsYXRlZEV4cGlyYXRpb24pKE5TVVJMUmVzcG9uc2UgKnJlc3Bv
bnNlKTsKIEJPT0wgKCp3a0dldE5TVVJMUmVzcG9uc2VNdXN0UmV2YWxpZGF0ZSkoTlNVUkxSZXNw
b25zZSAqcmVzcG9uc2UpOwogdm9pZCAoKndrR2V0V2hlZWxFdmVudERlbHRhcykoTlNFdmVudCos
IGZsb2F0KiBkZWx0YVgsIGZsb2F0KiBkZWx0YVksIEJPT0wqIGNvbnRpbnVvdXMpOwpAQCAtNjQs
OCArNTcsNiBAQCBOU0FycmF5ICooKndrUVRHZXRTaXRlc0luTWVkaWFEb3dubG9hZENhY2hlKSgp
Owogdm9pZCAoKndrUVRDbGVhck1lZGlhRG93bmxvYWRDYWNoZUZvclNpdGUpKE5TU3RyaW5nICpz
aXRlKTsKIHZvaWQgKCp3a1FUQ2xlYXJNZWRpYURvd25sb2FkQ2FjaGUpKCk7CiAKLXZvaWQgKCp3
a1NldERyYWdJbWFnZSkoTlNJbWFnZSosIE5TUG9pbnQgb2Zmc2V0KTsKLWJvb2wgKCp3a0NHQ29u
dGV4dElzUERGQ29udGV4dCkoQ0dDb250ZXh0UmVmKTsKIHZvaWQgKCp3a1NldENPTk5FQ1RQcm94
eUZvclN0cmVhbSkoQ0ZSZWFkU3RyZWFtUmVmLCBDRlN0cmluZ1JlZiBwcm94eUhvc3QsIENGTnVt
YmVyUmVmIHByb3h5UG9ydCk7CiB2b2lkICgqd2tTZXRDT05ORUNUUHJveHlBdXRob3JpemF0aW9u
Rm9yU3RyZWFtKShDRlJlYWRTdHJlYW1SZWYsIENGU3RyaW5nUmVmIHByb3h5QXV0aG9yaXphdGlv
blN0cmluZyk7CiBDRkhUVFBNZXNzYWdlUmVmICgqd2tDb3B5Q09OTkVDVFByb3h5UmVzcG9uc2Up
KENGUmVhZFN0cmVhbVJlZiwgQ0ZVUkxSZWYgcmVzcG9uc2VVUkwsIENGU3RyaW5nUmVmIHByb3h5
SG9zdCwgQ0ZOdW1iZXJSZWYgcHJveHlQb3J0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21hYy9XZWJXaW5kb3dBbmltYXRpb24ubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tYWMvV2ViV2luZG93QW5pbWF0aW9uLm1tCmluZGV4IDhhYmM4NDBiNzNjYzY0NWM4YWM0
MDZkZWFmYWU5NDIyY2RjMzUzZTIuLmNhNTU5ZGYwYmNhOWI2MjRkZTJmYzA0MmEyZjNhMTU2Yzg3
MGE4MmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJXaW5kb3dB
bmltYXRpb24ubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYldpbmRvd0Fu
aW1hdGlvbi5tbQpAQCAtMjksNiArMjksNyBAQAogCiAjaW1wb3J0ICJGbG9hdENvbnZlcnNpb24u
aCIKICNpbXBvcnQgIldlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaCIKKyNpbXBvcnQgPHBhbC9zcGkv
Y2cvQ29yZUdyYXBoaWNzU1BJLmg+CiAjaW1wb3J0IDx3dGYvQXNzZXJ0aW9ucy5oPgogI2ltcG9y
dCA8d3RmL01hdGhFeHRyYXMuaD4KIApAQCAtMTA5LDYgKzExMCw1OSBAQCAtIChOU1JlY3QpY3Vy
cmVudEZyYW1lCiAgICAgcmV0dXJuIHNjYWxlZFJlY3QoX2ZpbmFsRnJhbWUsIF9pbml0aWFsRnJh
bWUsIFtzZWxmIGN1cnJlbnRWYWx1ZV0pOwogfQogCitzdGF0aWMgdm9pZCBmbGlwUmVjdChOU1Jl
Y3QgKnJlY3QpCit7CisgICAgcmVjdC0+b3JpZ2luLnkgPSBOU01heFkoWyhOU1NjcmVlbiAqKVtb
TlNTY3JlZW4gc2NyZWVuc10gb2JqZWN0QXRJbmRleDowXSBmcmFtZV0pIC0gTlNNYXhZKCpyZWN0
KTsKK30KKworc3RhdGljIENHU0Nvbm5lY3Rpb25JRCBtYWluV2luZG93U2VydmVyQ29ubmVjdGlv
bklEKCkKK3sKKyAgICBzdGF0aWMgQ0dTQ29ubmVjdGlvbklEIGNnc0lkOworICAgIGlmICghY2dz
SWQpCisgICAgICAgIGNnc0lkID0gQ0dTTWFpbkNvbm5lY3Rpb25JRCgpOworICAgIHJldHVybiBj
Z3NJZDsKK30KKworc3RhdGljIHZvaWQgc2V0U2NhbGVkRnJhbWVGb3JXaW5kb3coTlNXaW5kb3cg
KndpbmRvdywgTlNSZWN0IHNjYWxlRnJhbWUsIE5TUmVjdCBub25TY2FsZWRGcmFtZSkKK3sKKyAg
ICBpZiAoTlNFcXVhbFJlY3RzKHNjYWxlRnJhbWUsIG5vblNjYWxlZEZyYW1lKSkgeworICAgICAg
ICBDR1NTZXRXaW5kb3dXYXJwKG1haW5XaW5kb3dTZXJ2ZXJDb25uZWN0aW9uSUQoKSwgW3dpbmRv
dyB3aW5kb3dOdW1iZXJdLCAwLCAwLCBOVUxMKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAg
ICAKKyAgICBmbG9hdCBtZXNoWzE2XTsKKyAgICAKKyAgICBmbGlwUmVjdCgmc2NhbGVGcmFtZSk7
CisgICAgZmxpcFJlY3QoJm5vblNjYWxlZEZyYW1lKTsKKyAgICAKKyAgICAvLyB0b3AtbGVmdCBw
b2ludCAodG8gYW5kIGZyb20pCisgICAgbWVzaFswXSA9IDA7CisgICAgbWVzaFsxXSA9IDA7Cisg
ICAgbWVzaFsyXSA9IE5TTWluWChzY2FsZUZyYW1lKTsKKyAgICBtZXNoWzNdID0gTlNNaW5ZKHNj
YWxlRnJhbWUpOworICAgIAorICAgIC8vIHRvcC1yaWdodCBwb2ludCAodG8gYW5kIGZyb20pCisg
ICAgbWVzaFs0XSA9IE5TV2lkdGgobm9uU2NhbGVkRnJhbWUpOworICAgIG1lc2hbNV0gPSAwOwor
ICAgIG1lc2hbNl0gPSBOU01heFgoc2NhbGVGcmFtZSk7CisgICAgbWVzaFs3XSA9IE5TTWluWShz
Y2FsZUZyYW1lKTsKKyAgICAKKyAgICAvLyBib3R0b20tbGVmdCAodG8gYW5kIGZyb20pCisgICAg
bWVzaFs4XSA9IDA7CisgICAgbWVzaFs5XSA9IE5TSGVpZ2h0KG5vblNjYWxlZEZyYW1lKTsKKyAg
ICBtZXNoWzEwXSA9IE5TTWluWChzY2FsZUZyYW1lKTsKKyAgICBtZXNoWzExXSA9IE5TTWF4WShz
Y2FsZUZyYW1lKTsKKyAgICAKKyAgICAvLyBib3R0b20tcmlnaHQgKHRvIGFuZCBmcm9tKQorICAg
IG1lc2hbMTJdID0gTlNXaWR0aChub25TY2FsZWRGcmFtZSk7CisgICAgbWVzaFsxM10gPSBOU0hl
aWdodChub25TY2FsZWRGcmFtZSk7CisgICAgbWVzaFsxNF0gPSBOU01heFgoc2NhbGVGcmFtZSk7
CisgICAgbWVzaFsxNV0gPSBOU01heFkoc2NhbGVGcmFtZSk7CisgICAgCisgICAgLy8gQXBwbHkg
dGhlIHdhcnAuCisgICAgQ0dTU2V0V2luZG93V2FycChtYWluV2luZG93U2VydmVyQ29ubmVjdGlv
bklEKCksIFt3aW5kb3cgd2luZG93TnVtYmVyXSwgMiwgMiwgbWVzaCk7Cit9CisKIC0gKHZvaWQp
c2V0Q3VycmVudFByb2dyZXNzOihOU0FuaW1hdGlvblByb2dyZXNzKXByb2dyZXNzCiB7CiAgICAg
aWYgKCFfd2luZG93KQpAQCAtMTE3LDcgKzE3MSw3IEBAIC0gKHZvaWQpc2V0Q3VycmVudFByb2dy
ZXNzOihOU0FuaW1hdGlvblByb2dyZXNzKXByb2dyZXNzCiAgICAgW3N1cGVyIHNldEN1cnJlbnRQ
cm9ncmVzczpwcm9ncmVzc107CiAKICAgICBOU1JlY3QgY3VycmVudFJlY3QgPSBbc2VsZiBjdXJy
ZW50RnJhbWVdOwotICAgIHdrV2luZG93U2V0U2NhbGVkRnJhbWUoX3dpbmRvdywgY3VycmVudFJl
Y3QsIF9yZWFsRnJhbWUpOworICAgIHNldFNjYWxlZEZyYW1lRm9yV2luZG93KF93aW5kb3csIGN1
cnJlbnRSZWN0LCBfcmVhbEZyYW1lKTsKICAgICBbX3N1YkFuaW1hdGlvbiBzZXRDdXJyZW50UHJv
Z3Jlc3M6cHJvZ3Jlc3NdOwogfQogCkBAIC0yMTEsNyArMjY1LDcgQEAgLSAodm9pZClzZXRDdXJy
ZW50UHJvZ3Jlc3M6KE5TQW5pbWF0aW9uUHJvZ3Jlc3MpcHJvZ3Jlc3MKICAgICBBU1NFUlQoX3dp
bmRvdyk7CiAgICAgW3N1cGVyIHNldEN1cnJlbnRQcm9ncmVzczpwcm9ncmVzc107CiAKLSAgICB3
a1dpbmRvd1NldEFscGhhKF93aW5kb3csIFtzZWxmIGN1cnJlbnRBbHBoYV0pOworICAgIENHU1Nl
dFdpbmRvd0FscGhhKG1haW5XaW5kb3dTZXJ2ZXJDb25uZWN0aW9uSUQoKSwgX3dpbmRvdy53aW5k
b3dOdW1iZXIsIFtzZWxmIGN1cnJlbnRBbHBoYV0pOwogfQogCiAtICh2b2lkKXNldFdpbmRvdzoo
TlNXaW5kb3cqKXdpbmRvdwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNz
L21hYy9QbHVnaW5Qcm9jZXNzTWFjLm1tIGIvU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL21h
Yy9QbHVnaW5Qcm9jZXNzTWFjLm1tCmluZGV4IGRkNTMzNzAyNDdmMGE2Yjc0YTAxYmZjYzhhYTk2
ZmE2ZmZmMzQ0MTguLjdmZjFiYzk3YjI5NDdmZmE0ODk5ZGRmMzkzZmMwOTQ5NDlhNTc1YzMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9tYWMvUGx1Z2luUHJvY2Vzc01h
Yy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvbWFjL1BsdWdpblByb2Nlc3NN
YWMubW0KQEAgLTUzMCw3ICs1MzAsMTAgQEAgdm9pZCBQbHVnaW5Qcm9jZXNzOjpwbGF0Zm9ybUlu
aXRpYWxpemVQcm9jZXNzKGNvbnN0IENoaWxkUHJvY2Vzc0luaXRpYWxpemF0aW9uUGEKIAogICAg
IC8vIEZJWE1FOiBJdCB3b3VsZCBiZSBiZXR0ZXIgdG8gcHJveHkgU2V0Q3Vyc29yIGNhbGxzIG92
ZXIgdG8gdGhlIFVJIHByb2Nlc3MgaW5zdGVhZCBvZgogICAgIC8vIGFsbG93aW5nIHBsdWctaW5z
IHRvIGNoYW5nZSB0aGUgbW91c2UgY3Vyc29yIGF0IGFueSB0aW1lLgotICAgIFdLRW5hYmxlU2V0
dGluZ0N1cnNvcldoZW5JbkJhY2tncm91bmQoKTsKKyAgICAvLyBGSVhNRTogU2V0c0N1cnNvcklu
QmFja2dyb3VuZCBjb25uZWN0aW9uIHByb3BlcnR5IGlzIGRlcHJlY2F0ZWQgaW4gZmF2b3Igb2Yg
a0NHU1NldHNDdXJzb3JJbkJhY2tncm91bmRUYWdCaXQgd2luZG93IHRhZyBiaXQuCisgICAgLy8g
PHJkYXI6Ly9wcm9ibGVtLzc3NTI0MjI+IGFza3MgZm9yIGFuIEFQSSB0byBzZXQgY3Vyc29yIGZy
b20gYmFja2dyb3VuZCBwcm9jZXNzZXMuCisgICAgQ0dTQ29ubmVjdGlvbklEIGNpZCA9IENHU01h
aW5Db25uZWN0aW9uSUQoKTsKKyAgICBDR1NTZXRDb25uZWN0aW9uUHJvcGVydHkoY2lkLCBjaWQs
IENGU1RSKCJTZXRzQ3Vyc29ySW5CYWNrZ3JvdW5kIiksIChDRlR5cGVSZWYpa0NGQm9vbGVhblRy
dWUpOwogCiAgICAgUmV0YWluUHRyPENGVVJMUmVmPiBwbHVnaW5VUkwgPSBhZG9wdENGKENGVVJM
Q3JlYXRlV2l0aEZpbGVTeXN0ZW1QYXRoKDAsIG1fcGx1Z2luUGF0aC5jcmVhdGVDRlN0cmluZygp
LmdldCgpLCBrQ0ZVUkxQT1NJWFBhdGhTdHlsZSwgZmFsc2UpKTsKICAgICBpZiAoIXBsdWdpblVS
TCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XaW5kb3dTZXJ2ZXJD
b25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2luZG93U2VydmVyQ29u
bmVjdGlvbi5oCmluZGV4IDgzOGEzNGZiNWMyZDQ0ZWVlNTQ2NGU1N2VkYzcwZTEwYWRiZDNiMjAu
LmU3YjUxOGM2YzVlYjBiMDYyZDg5YTkxY2E3MDU3N2JhODRlYjA1MTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XaW5kb3dTZXJ2ZXJDb25uZWN0aW9uLmgKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dpbmRvd1NlcnZlckNvbm5lY3Rpb24uaApAQCAt
NDEsOSArNDEsNiBAQCBwcml2YXRlOgogICAgIHZvaWQgd2luZG93U2VydmVyQ29ubmVjdGlvblN0
YXRlQ2hhbmdlZCgpOwogCiAgICAgdm9pZCBhcHBsaWNhdGlvbldpbmRvd01vZGlmaWNhdGlvbnNT
dG9wcGVkKGJvb2wgc3RvcHBlZCk7Ci0KLSAgICBzdGF0aWMgdm9pZCBhcHBsaWNhdGlvbldpbmRv
d01vZGlmaWNhdGlvbnNTdGFydGVkKHVpbnQzMl90LCB2b2lkKiwgdWludDMyX3QsIHZvaWQqLCB1
aW50MzJfdCk7Ci0gICAgc3RhdGljIHZvaWQgYXBwbGljYXRpb25XaW5kb3dNb2RpZmljYXRpb25z
U3RvcHBlZCh1aW50MzJfdCwgdm9pZCosIHVpbnQzMl90LCB2b2lkKiwgdWludDMyX3QpOwogI2Vu
ZGlmCiAKICAgICBib29sIG1fYXBwbGljYXRpb25XaW5kb3dNb2RpZmljYXRpb25zSGF2ZVN0b3Bw
ZWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2luZG93U2VydmVy
Q29ubmVjdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XaW5kb3dTZXJ2ZXJD
b25uZWN0aW9uLm1tCmluZGV4IDgxOTUzNWMyYWMxMjljOGQ1MjEyMThjOTc1NWM4NGI2MWQ0NGYy
ODUuLmM5NzU1ZDcyMmE1ZGMzNTJmM2FhMTJlNDA4Nzk1MDBjZTI5NDMzYmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XaW5kb3dTZXJ2ZXJDb25uZWN0aW9uLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XaW5kb3dTZXJ2ZXJDb25uZWN0aW9uLm1t
CkBAIC00MSwxNiArNDEsNiBAQCB2b2lkIFdpbmRvd1NlcnZlckNvbm5lY3Rpb246OmFwcGxpY2F0
aW9uV2luZG93TW9kaWZpY2F0aW9uc1N0b3BwZWQoYm9vbCBzdG9wcGVkKQogICAgIHdpbmRvd1Nl
cnZlckNvbm5lY3Rpb25TdGF0ZUNoYW5nZWQoKTsKIH0KIAotdm9pZCBXaW5kb3dTZXJ2ZXJDb25u
ZWN0aW9uOjphcHBsaWNhdGlvbldpbmRvd01vZGlmaWNhdGlvbnNTdGFydGVkKHVpbnQzMl90LCB2
b2lkKiwgdWludDMyX3QsIHZvaWQqLCB1aW50MzJfdCkKLXsKLSAgICBXaW5kb3dTZXJ2ZXJDb25u
ZWN0aW9uOjpzaW5nbGV0b24oKS5hcHBsaWNhdGlvbldpbmRvd01vZGlmaWNhdGlvbnNTdG9wcGVk
KGZhbHNlKTsKLX0KLQotdm9pZCBXaW5kb3dTZXJ2ZXJDb25uZWN0aW9uOjphcHBsaWNhdGlvbldp
bmRvd01vZGlmaWNhdGlvbnNTdG9wcGVkKHVpbnQzMl90LCB2b2lkKiwgdWludDMyX3QsIHZvaWQq
LCB1aW50MzJfdCkKLXsKLSAgICBXaW5kb3dTZXJ2ZXJDb25uZWN0aW9uOjpzaW5nbGV0b24oKS5h
cHBsaWNhdGlvbldpbmRvd01vZGlmaWNhdGlvbnNTdG9wcGVkKHRydWUpOwotfQotCiB2b2lkIFdp
bmRvd1NlcnZlckNvbm5lY3Rpb246OndpbmRvd1NlcnZlckNvbm5lY3Rpb25TdGF0ZUNoYW5nZWQo
KQogewogICAgIGZvciAoYXV0byogcHJvY2Vzc1Bvb2wgOiBXZWJQcm9jZXNzUG9vbDo6YWxsUHJv
Y2Vzc1Bvb2xzKCkpCkBAIC02NSwyMyArNTUsNDYgQEAgV2luZG93U2VydmVyQ29ubmVjdGlvbiYg
V2luZG93U2VydmVyQ29ubmVjdGlvbjo6c2luZ2xldG9uKCkKICAgICByZXR1cm4gd2luZG93U2Vy
dmVyQ29ubmVjdGlvbjsKIH0KIAorc3RhdGljIGJvb2wgcmVnaXN0ZXJPY2NsdXNpb25Ob3RpZmlj
YXRpb25IYW5kbGVyKENHU05vdGlmaWNhdGlvblR5cGUgdHlwZSwgQ0dTTm90aWZ5Q29ubmVjdGlv
blByb2NQdHIgaGFuZGxlcikKK3sKKyAgICBDR1NDb25uZWN0aW9uSUQgbWFpbkNvbm5lY3Rpb24g
PSBDR1NNYWluQ29ubmVjdGlvbklEKCk7CisgICAgc3RhdGljIGJvb2wgbm90aWZpY2F0aW9uc0Vu
YWJsZWQ7CisgICAgaWYgKCFub3RpZmljYXRpb25zRW5hYmxlZCkgeworICAgICAgICBpZiAoQ0dT
UGFja2FnZXNFbmFibGVDb25uZWN0aW9uT2NjbHVzaW9uTm90aWZpY2F0aW9ucyhtYWluQ29ubmVj
dGlvbiwgdHJ1ZSwgbnVsbHB0cikgIT0ga0NHRXJyb3JTdWNjZXNzKQorICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgICAgICBpZiAoQ0dTUGFja2FnZXNFbmFibGVDb25uZWN0aW9uV2luZG93
TW9kaWZpY2F0aW9uTm90aWZpY2F0aW9ucyhtYWluQ29ubmVjdGlvbiwgdHJ1ZSwgbnVsbHB0cikg
IT0ga0NHRXJyb3JTdWNjZXNzKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBu
b3RpZmljYXRpb25zRW5hYmxlZCA9IHRydWU7CisgICAgfQorCisgICAgcmV0dXJuIENHU1JlZ2lz
dGVyQ29ubmVjdGlvbk5vdGlmeVByb2MobWFpbkNvbm5lY3Rpb24sIGhhbmRsZXIsIHR5cGUsIG51
bGxwdHIpID09IGtDR0Vycm9yU3VjY2VzczsKK30KKwogV2luZG93U2VydmVyQ29ubmVjdGlvbjo6
V2luZG93U2VydmVyQ29ubmVjdGlvbigpCiAgICAgOiBtX2FwcGxpY2F0aW9uV2luZG93TW9kaWZp
Y2F0aW9uc0hhdmVTdG9wcGVkKGZhbHNlKQogewogI2lmIEhBVkUoV0lORE9XX1NFUlZFUl9PQ0NM
VVNJT05fTk9USUZJQ0FUSU9OUykKICAgICBzdHJ1Y3QgT2NjbHVzaW9uTm90aWZpY2F0aW9uSGFu
ZGxlciB7Ci0gICAgICAgIFdLT2NjbHVzaW9uTm90aWZpY2F0aW9uVHlwZSBub3RpZmljYXRpb25U
eXBlOwotICAgICAgICBXS09jY2x1c2lvbk5vdGlmaWNhdGlvbkhhbmRsZXIgaGFuZGxlcjsKKyAg
ICAgICAgQ0dTTm90aWZpY2F0aW9uVHlwZSBub3RpZmljYXRpb25UeXBlOworICAgICAgICBDR1NO
b3RpZnlDb25uZWN0aW9uUHJvY1B0ciBoYW5kbGVyOwogICAgICAgICBjb25zdCBjaGFyKiBuYW1l
OwogICAgIH07CiAKKyAgICBzdGF0aWMgYXV0byB3aW5kb3dNb2RpZmljYXRpb25zU3RhcnRlZCA9
IFtdKENHU05vdGlmaWNhdGlvblR5cGUsIHZvaWQqLCB1aW50MzJfdCwgdm9pZCosIENHU0Nvbm5l
Y3Rpb25JRCkgeworICAgICAgICBXaW5kb3dTZXJ2ZXJDb25uZWN0aW9uOjpzaW5nbGV0b24oKS5h
cHBsaWNhdGlvbldpbmRvd01vZGlmaWNhdGlvbnNTdG9wcGVkKGZhbHNlKTsKKyAgICB9OworCisg
ICAgc3RhdGljIGF1dG8gd2luZG93TW9kaWZpY2F0aW9uc1N0b3BwZWQgPSBbXShDR1NOb3RpZmlj
YXRpb25UeXBlLCB2b2lkKiwgdWludDMyX3QsIHZvaWQqLCBDR1NDb25uZWN0aW9uSUQpIHsKKyAg
ICAgICAgV2luZG93U2VydmVyQ29ubmVjdGlvbjo6c2luZ2xldG9uKCkuYXBwbGljYXRpb25XaW5k
b3dNb2RpZmljYXRpb25zU3RvcHBlZCh0cnVlKTsKKyAgICB9OworCiAgICAgc3RhdGljIGNvbnN0
IE9jY2x1c2lvbk5vdGlmaWNhdGlvbkhhbmRsZXIgb2NjbHVzaW9uTm90aWZpY2F0aW9uSGFuZGxl
cnNbXSA9IHsKLSAgICAgICAgeyBXS09jY2x1c2lvbk5vdGlmaWNhdGlvblR5cGVBcHBsaWNhdGlv
bldpbmRvd01vZGlmaWNhdGlvbnNTdGFydGVkLCBhcHBsaWNhdGlvbldpbmRvd01vZGlmaWNhdGlv
bnNTdGFydGVkLCAiQXBwbGljYXRpb24gV2luZG93IE1vZGlmaWNhdGlvbnMgU3RhcnRlZCIgfSwK
LSAgICAgICAgeyBXS09jY2x1c2lvbk5vdGlmaWNhdGlvblR5cGVBcHBsaWNhdGlvbldpbmRvd01v
ZGlmaWNhdGlvbnNTdG9wcGVkLCBhcHBsaWNhdGlvbldpbmRvd01vZGlmaWNhdGlvbnNTdG9wcGVk
LCAiQXBwbGljYXRpb24gV2luZG93IE1vZGlmaWNhdGlvbnMgU3RvcHBlZCIgfSwKKyAgICAgICAg
eyBrQ0dTQ29ubmVjdGlvbldpbmRvd01vZGlmaWNhdGlvbnNTdGFydGVkLCB3aW5kb3dNb2RpZmlj
YXRpb25zU3RhcnRlZCwgIkFwcGxpY2F0aW9uIFdpbmRvdyBNb2RpZmljYXRpb25zIFN0YXJ0ZWQi
IH0sCisgICAgICAgIHsga0NHU0Nvbm5lY3Rpb25XaW5kb3dNb2RpZmljYXRpb25zU3RvcHBlZCwg
d2luZG93TW9kaWZpY2F0aW9uc1N0b3BwZWQsICJBcHBsaWNhdGlvbiBXaW5kb3cgTW9kaWZpY2F0
aW9ucyBTdG9wcGVkIiB9LAogICAgIH07CiAKICAgICBmb3IgKGNvbnN0IGF1dG8mIG9jY2x1c2lv
bk5vdGlmaWNhdGlvbkhhbmRsZXIgOiBvY2NsdXNpb25Ob3RpZmljYXRpb25IYW5kbGVycykgewot
ICAgICAgICBib29sIHJlc3VsdCA9IFdLUmVnaXN0ZXJPY2NsdXNpb25Ob3RpZmljYXRpb25IYW5k
bGVyKG9jY2x1c2lvbk5vdGlmaWNhdGlvbkhhbmRsZXIubm90aWZpY2F0aW9uVHlwZSwgb2NjbHVz
aW9uTm90aWZpY2F0aW9uSGFuZGxlci5oYW5kbGVyKTsKKyAgICAgICAgYm9vbCByZXN1bHQgPSBy
ZWdpc3Rlck9jY2x1c2lvbk5vdGlmaWNhdGlvbkhhbmRsZXIob2NjbHVzaW9uTm90aWZpY2F0aW9u
SGFuZGxlci5ub3RpZmljYXRpb25UeXBlLCBvY2NsdXNpb25Ob3RpZmljYXRpb25IYW5kbGVyLmhh
bmRsZXIpOwogICAgICAgICBVTlVTRURfUEFSQU0ocmVzdWx0KTsKICAgICAgICAgQVNTRVJUX1dJ
VEhfTUVTU0FHRShyZXN1bHQsICJSZWdpc3RyYXRpb24gb2YgXCIlc1wiIG5vdGlmaWNhdGlvbiBo
YW5kbGVyIGZhaWxlZC5cbiIsIG9jY2x1c2lvbk5vdGlmaWNhdGlvbkhhbmRsZXIubmFtZSk7CiAg
ICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L21hYy9XZWJTeXN0ZW1JbnRlcmZhY2UubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvbWFjL1dlYlN5c3RlbUludGVyZmFjZS5tbQppbmRleCA0NGRjN2VjYjM2MjBl
OGY0NTE0MmViMzdjNzg3NWFkY2IzYjk0MTJiLi44M2RkODNlNDM0ZGJkMzQ5NTM0M2FlNzEwMTky
NDkzMmQ4ZmJhNTIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvbWFjL1dlYlN5c3RlbUludGVyZmFjZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYlN5c3RlbUludGVyZmFjZS5tbQpAQCAtMzcs
MjEgKzM3LDExIEBAIHZvaWQgSW5pdFdlYkNvcmVTeXN0ZW1JbnRlcmZhY2Uodm9pZCkKICAgICAK
ICAgICBkaXNwYXRjaF9vbmNlKCZpbml0T25jZSwgXnsKICAgICAgICAgSU5JVChDQUxheWVyRW51
bWVyYXRlUmVjdHNCZWluZ0RyYXduV2l0aEJsb2NrKTsKLSAgICAgICAgSU5JVChDR1BhdHRlcm5D
cmVhdGVXaXRoSW1hZ2VBbmRUcmFuc2Zvcm0pOwotI2lmICFQTEFURk9STShJT1MpCi0gICAgICAg
IElOSVQoQ0dDb250ZXh0RHJhd3NXaXRoQ29ycmVjdFNoYWRvd09mZnNldHMpOwotI2VuZGlmCiAg
ICAgICAgIElOSVQoQ29weUNPTk5FQ1RQcm94eVJlc3BvbnNlKTsKICNpZiAhUExBVEZPUk0oSU9T
KQogICAgICAgICBJTklUKERyYXdCZXplbGVkVGV4dEFyZWEpOwotICAgICAgICBJTklUKERyYXdG
b2N1c1JpbmcpOwotICAgICAgICBJTklUKERyYXdGb2N1c1JpbmdBdFRpbWUpOwotICAgICAgICBJ
TklUKERyYXdDZWxsRm9jdXNSaW5nV2l0aEZyYW1lQXRUaW1lKTsKICAgICAgICAgSU5JVChEcmF3
TWVkaWFTbGlkZXJUcmFjayk7CiAgICAgICAgIElOSVQoRHJhd01lZGlhVUlQYXJ0KTsKLSNlbmRp
ZgotICAgICAgICBJTklUKENHQ29udGV4dElzUERGQ29udGV4dCk7Ci0jaWYgIVBMQVRGT1JNKElP
UykKICAgICAgICAgSU5JVChHZXRXaGVlbEV2ZW50RGVsdGFzKTsKICAgICAgICAgSU5JVChHZXRO
U0V2ZW50S2V5Q2hhcik7CiAgICAgICAgIElOSVQoSGl0VGVzdE1lZGlhVUlQYXJ0KTsKQEAgLTcx
LDE2ICs2MSwxMSBAQCB2b2lkIEluaXRXZWJDb3JlU3lzdGVtSW50ZXJmYWNlKHZvaWQpCiAjZW5k
aWYKICAgICAgICAgSU5JVChTZXRDT05ORUNUUHJveHlBdXRob3JpemF0aW9uRm9yU3RyZWFtKTsK
ICAgICAgICAgSU5JVChTZXRDT05ORUNUUHJveHlGb3JTdHJlYW0pOwotI2lmICFQTEFURk9STShJ
T1MpCi0gICAgICAgIElOSVQoU2V0RHJhZ0ltYWdlKTsKLSNlbmRpZgogCiAjaWYgIVBMQVRGT1JN
KElPUykKICAgICAgICAgSU5JVChFeGVjdXRhYmxlV2FzTGlua2VkT25PckJlZm9yZVNub3dMZW9w
YXJkKTsKICAgICAgICAgSU5JVChDb3B5RGVmYXVsdFNlYXJjaFByb3ZpZGVyRGlzcGxheU5hbWUp
OwogICAgICAgICBJTklUKEN1cnNvcik7Ci0gICAgICAgIElOSVQoV2luZG93U2V0U2NhbGVkRnJh
bWUpOwotICAgICAgICBJTklUKFdpbmRvd1NldEFscGhhKTsKICAgICAgICAgSU5JVChTcGVlY2hT
eW50aGVzaXNHZXRWb2ljZUlkZW50aWZpZXJzKTsKICAgICAgICAgSU5JVChTcGVlY2hTeW50aGVz
aXNHZXREZWZhdWx0Vm9pY2VJZGVudGlmaWVyRm9yTG9jYWxlKTsKICAgICAgICAgSU5JVChOU0Vs
YXN0aWNEZWx0YUZvclRpbWVEZWx0YSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9DYXJib24vSElXZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2FyYm9u
L0hJV2ViVmlldy5tbQppbmRleCAzNDU4NWMyNTJjM2IxOGNhY2Q2ZTA3YWQ1ZTk0NDg3NzlkOGJl
NDU3Li5hOWY2ZWFlZDcyMDM4ODQ3M2VlMzZhYTAxZGIxZDliMzQzMWQ2ZTA4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DYXJib24vSElXZWJWaWV3Lm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0NhcmJvbi9ISVdlYlZpZXcubW0KQEAgLTg1LDYgKzg1LDIxIEBA
IC0gKGludCl0YWcKIAogQGVuZAogCitAaW50ZXJmYWNlIE5TV2luZG93R3JhcGhpY3NDb250ZXh0
ICgpCistICh2b2lkKV93ZWJfc2V0R3JhcGhpY3NQb3J0OihDR0NvbnRleHRSZWYpY29udGV4dDsK
K0BlbmQKKworQGltcGxlbWVudGF0aW9uIE5TV2luZG93R3JhcGhpY3NDb250ZXh0ICgpCisKKy0g
KHZvaWQpX3dlYl9zZXRHcmFwaGljc1BvcnQ6KENHQ29udGV4dFJlZiljb250ZXh0Cit7CisgICAg
Q0dDb250ZXh0UmV0YWluKGNvbnRleHQpOworICAgIENHQ29udGV4dFJlbGVhc2UoX2Nnc0NvbnRl
eHQpOworICAgIF9jZ3NDb250ZXh0ID0gY29udGV4dDsKK30KKworQGVuZAorCiBzdHJ1Y3QgSElX
ZWJWaWV3CiB7CiAgICAgSElWaWV3UmVmCQkJCQkJCWZWaWV3UmVmOwpAQCAtMjkwLDYgKzMwNSwy
MiBAQCBHZXRCZWhhdmlvcnMoKQogCXJldHVybiBrQ29udHJvbFN1cHBvcnRzRGF0YUFjY2VzcyB8
IGtDb250cm9sU3VwcG9ydHNHZXRSZWdpb24gfCBrQ29udHJvbEdldHNGb2N1c09uQ2xpY2s7CiB9
CiAKK3N0YXRpYyBDR0NvbnRleHRSZWYgb3ZlcnJpZGVDR0NvbnRleHQoTlNXaW5kb3cgKndpbmRv
dywgQ0dDb250ZXh0UmVmIGNvbnRleHQpCit7CisgICAgTlNXaW5kb3dHcmFwaGljc0NvbnRleHQg
KmdyYXBoaWNzQ29udGV4dCA9IChOU1dpbmRvd0dyYXBoaWNzQ29udGV4dCAqKVt3aW5kb3cgZ3Jh
cGhpY3NDb250ZXh0XTsKKyAgICBDR0NvbnRleHRSZWYgc2F2ZWRDb250ZXh0ID0gKENHQ29udGV4
dFJlZilbZ3JhcGhpY3NDb250ZXh0IGdyYXBoaWNzUG9ydF07CisgICAgQ0dDb250ZXh0UmV0YWlu
KHNhdmVkQ29udGV4dCk7CisgICAgW2dyYXBoaWNzQ29udGV4dCBfd2ViX3NldEdyYXBoaWNzUG9y
dDpjb250ZXh0XTsKKyAgICByZXR1cm4gc2F2ZWRDb250ZXh0OworfQorCitzdGF0aWMgdm9pZCBy
ZXN0b3JlQ0dDb250ZXh0KE5TV2luZG93ICp3aW5kb3csIENHQ29udGV4dFJlZiBzYXZlZENvbnRl
eHQpCit7CisgICAgTlNXaW5kb3dHcmFwaGljc0NvbnRleHQgKmdyYXBoaWNzQ29udGV4dCA9IChO
U1dpbmRvd0dyYXBoaWNzQ29udGV4dCAqKVt3aW5kb3cgZ3JhcGhpY3NDb250ZXh0XTsKKyAgICBb
Z3JhcGhpY3NDb250ZXh0IF93ZWJfc2V0R3JhcGhpY3NQb3J0OnNhdmVkQ29udGV4dF07CisgICAg
Q0dDb250ZXh0UmVsZWFzZShzYXZlZENvbnRleHQpOworfQorCiAvLy0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KIC8vIERyYXcKIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtMzIxLDcg
KzM1Miw3IEBAIERyYXcoIEhJV2ViVmlldyogaW5WaWV3LCBSZ25IYW5kbGUgbGltaXRSZ24sIENH
Q29udGV4dFJlZiBpbkNvbnRleHQgKQogCiAJSElWaWV3R2V0Qm91bmRzKCBpblZpZXctPmZWaWV3
UmVmLCAmYm91bmRzICk7CiAKLSAgICBDR0NvbnRleHRSZWYgc2F2ZWRDb250ZXh0ID0gV0tOU1dp
bmRvd092ZXJyaWRlQ0dDb250ZXh0KGluVmlldy0+ZktpdFdpbmRvdywgaW5Db250ZXh0KTsKKyAg
ICBDR0NvbnRleHRSZWYgc2F2ZWRDb250ZXh0ID0gb3ZlcnJpZGVDR0NvbnRleHQoaW5WaWV3LT5m
S2l0V2luZG93LCBpbkNvbnRleHQpOwogICAgIFtOU0dyYXBoaWNzQ29udGV4dCBzZXRDdXJyZW50
Q29udGV4dDpbaW5WaWV3LT5mS2l0V2luZG93IGdyYXBoaWNzQ29udGV4dF1dOwogCiAJR2V0UmVn
aW9uQm91bmRzKCBsaW1pdFJnbiwgJmRyYXdSZWN0ICk7CkBAIC0zNTEsNyArMzgyLDcgQEAgRHJh
dyggSElXZWJWaWV3KiBpblZpZXcsIFJnbkhhbmRsZSBsaW1pdFJnbiwgQ0dDb250ZXh0UmVmIGlu
Q29udGV4dCApCiAgICAgZWxzZQogICAgICAgICBbaW5WaWV3LT5mV2ViVmlldyBkaXNwbGF5UmVj
dDoqKE5TUmVjdCopJmhpUmVjdF07CiAKLSAgICBXS05TV2luZG93UmVzdG9yZUNHQ29udGV4dChp
blZpZXctPmZLaXRXaW5kb3csIHNhdmVkQ29udGV4dCk7CisgICAgcmVzdG9yZUNHQ29udGV4dChp
blZpZXctPmZLaXRXaW5kb3csIHNhdmVkQ29udGV4dCk7CiAKICAgICBpZiAoICFpblZpZXctPmZJ
c0NvbXBvc2l0ZWQgKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1BsdWdpbnMvSG9zdGVkL1dlYkhvc3RlZE5ldHNjYXBlUGx1Z2luVmlldy5tbSBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL1dlYkhvc3RlZE5ldHNjYXBlUGx1Z2luVmll
dy5tbQppbmRleCA5ZTIwNDRlMjZlMTM5MDIxZWI4Y2E2MzM2MjU1ZjJjODMzYzFiOGIyLi42OTVh
NWNmNTI3MzczZDMwOWE4M2I2NGQ2ZjFkMDEwMGVkM2E0MDhhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9XZWJIb3N0ZWROZXRzY2FwZVBsdWdpblZp
ZXcubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvV2ViSG9z
dGVkTmV0c2NhcGVQbHVnaW5WaWV3Lm1tCkBAIC03Niw3ICs3Niw3IEBAICsgKHZvaWQpaW5pdGlh
bGl6ZQogICAgIFdURjo6aW5pdGlhbGl6ZU1haW5UaHJlYWRUb1Byb2Nlc3NNYWluVGhyZWFkKCk7
CiAgICAgUnVuTG9vcDo6aW5pdGlhbGl6ZU1haW5SdW5Mb29wKCk7CiAjZW5kaWYKLSAgICBXS1Nl
bmRVc2VyQ2hhbmdlTm90aWZpY2F0aW9ucygpOworICAgIHNlbmRVc2VyQ2hhbmdlTm90aWZpY2F0
aW9ucygpOwogfQogCiAtIChpZClpbml0V2l0aEZyYW1lOihOU1JlY3QpZnJhbWUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViQmFzZU5ldHNjYXBlUGx1Z2lu
Vmlldy5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJCYXNlTmV0c2NhcGVQ
bHVnaW5WaWV3LmgKaW5kZXggYzIyMjNhYjZkMjY3NTFmMzhjMzg5NTgxYmQzNDlkZTk4MTRjMTVi
MS4uY2Q0MzBkMzY2OTcxZWM5ZmUyZWEwZDQ0MDU5M2I1ODBjOWNhMmUyNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJCYXNlTmV0c2NhcGVQbHVnaW5WaWV3
LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJCYXNlTmV0c2NhcGVQ
bHVnaW5WaWV3LmgKQEAgLTEzNCw2ICsxMzQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBuYW1l
c3BhY2UgV2ViS2l0IHsKIGJvb2wgZ2V0QXV0aGVudGljYXRpb25JbmZvKGNvbnN0IGNoYXIqIHBy
b3RvY29sU3RyLCBjb25zdCBjaGFyKiBob3N0U3RyLCBpbnQzMl90IHBvcnQsIGNvbnN0IGNoYXIq
IHNjaGVtZVN0ciwgY29uc3QgY2hhciogcmVhbG1TdHIsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBXVEY6OkNTdHJpbmcmIHVzZXJuYW1lLCBXVEY6OkNTdHJpbmcmIHBhc3N3b3JkKTsKK3Zv
aWQgc2VuZFVzZXJDaGFuZ2VOb3RpZmljYXRpb25zKCk7CiB9IAogCiAjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViQmFzZU5ldHNjYXBlUGx1Z2lu
Vmlldy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViQmFzZU5ldHNjYXBl
UGx1Z2luVmlldy5tbQppbmRleCA2NGRlOTAxMGViZGIwYjA2OWQ2Zjg2M2EzZmVmMmZmZDdiNWQ0
MzM4Li5iZTFjMzBiM2YzMDlkYTY4NTVmM2NkMWQyN2FiNDcwODlhZWQyYzM1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYkJhc2VOZXRzY2FwZVBsdWdpblZp
ZXcubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJCYXNlTmV0c2Nh
cGVQbHVnaW5WaWV3Lm1tCkBAIC01NSw2ICs1NSw3IEBACiAjaW1wb3J0IDxXZWJDb3JlL1NlY3Vy
aXR5T3JpZ2luLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYkNvcmVPYmpDRXh0cmFzLmg+CiAjaW1w
b3J0IDxXZWJLaXRMZWdhY3kvRE9NUHJpdmF0ZS5oPgorI2ltcG9ydCA8cGFsL3NwaS9jZy9Db3Jl
R3JhcGhpY3NTUEkuaD4KICNpbXBvcnQgPHJ1bnRpbWUvSW5pdGlhbGl6ZVRocmVhZGluZy5oPgog
I2ltcG9ydCA8d3RmL0Fzc2VydGlvbnMuaD4KICNpbXBvcnQgPHd0Zi9NYWluVGhyZWFkLmg+CkBA
IC03Myw3ICs3NCw3IEBAICsgKHZvaWQpaW5pdGlhbGl6ZQogICAgIEpTQzo6aW5pdGlhbGl6ZVRo
cmVhZGluZygpOwogICAgIFdURjo6aW5pdGlhbGl6ZU1haW5UaHJlYWRUb1Byb2Nlc3NNYWluVGhy
ZWFkKCk7CiAgICAgUnVuTG9vcDo6aW5pdGlhbGl6ZU1haW5SdW5Mb29wKCk7Ci0gICAgV0tTZW5k
VXNlckNoYW5nZU5vdGlmaWNhdGlvbnMoKTsKKyAgICBXZWJLaXQ6OnNlbmRVc2VyQ2hhbmdlTm90
aWZpY2F0aW9ucygpOwogfQogCiAtIChpZClpbml0V2l0aEZyYW1lOihOU1JlY3QpZnJhbWUKQEAg
LTkwMCw2ICs5MDEsMjMgQEAgYm9vbCBnZXRBdXRoZW50aWNhdGlvbkluZm8oY29uc3QgY2hhciog
cHJvdG9jb2xTdHIsIGNvbnN0IGNoYXIqIGhvc3RTdHIsIGludDMyX3QKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIAordm9pZCBzZW5kVXNlckNoYW5nZU5vdGlmaWNhdGlvbnMoKQoreworICAgIGF1dG8g
Y29uc29sZUNvbm5lY3Rpb25DaGFuZ2VOb3RpZnlQcm9jID0gW10oQ0dTTm90aWZpY2F0aW9uVHlw
ZSB0eXBlLCBDR1NOb3RpZmljYXRpb25EYXRhLCBDR1NCeXRlQ291bnQsIENHU05vdGlmaWNhdGlv
bkFyZykgeworICAgICAgICBOU1N0cmluZyAqbm90aWZpY2F0aW9uTmFtZSA9IG5pbDsKKyAgICAg
ICAgaWYgKHR5cGUgPT0ga0NHU2Vzc2lvbkNvbnNvbGVDb25uZWN0KQorICAgICAgICAgICAgbm90
aWZpY2F0aW9uTmFtZSA9IExvZ2luV2luZG93RGlkU3dpdGNoVG9Vc2VyTm90aWZpY2F0aW9uOwor
ICAgICAgICBlbHNlIGlmICh0eXBlID09IGtDR1Nlc3Npb25Db25zb2xlRGlzY29ubmVjdCkKKyAg
ICAgICAgICAgIG5vdGlmaWNhdGlvbk5hbWUgPSBMb2dpbldpbmRvd0RpZFN3aXRjaEZyb21Vc2Vy
Tm90aWZpY2F0aW9uOworICAgICAgICBlbHNlCisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICAgICAgW1tOU05vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXSBwb3N0
Tm90aWZpY2F0aW9uTmFtZTpub3RpZmljYXRpb25OYW1lIG9iamVjdDpuaWxdOworICAgIH07CisK
KyAgICBDR1NSZWdpc3Rlck5vdGlmeVByb2MoY29uc29sZUNvbm5lY3Rpb25DaGFuZ2VOb3RpZnlQ
cm9jLCBrQ0dTZXNzaW9uQ29uc29sZUNvbm5lY3QsIE5VTEwpOworICAgIENHU1JlZ2lzdGVyTm90
aWZ5UHJvYyhjb25zb2xlQ29ubmVjdGlvbkNoYW5nZU5vdGlmeVByb2MsIGtDR1Nlc3Npb25Db25z
b2xlRGlzY29ubmVjdCwgTlVMTCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5k
aWYgLy8gIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblZpZXcubW0gYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luVmlldy5tbQppbmRleCBj
NjgwZmY3ZWUzMWM5M2I4ZmI0OTIyOTdlNGU3YWQ5MTQxYTRkZGU0Li4yYmJkM2RlYmU2NmUxOGQ4
ZjMxODBjOTRjYTEzMzdmY2Y3ZDg4MTcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luVmlldy5tbQpAQCAtMTkzLDcgKzE5
Myw3IEBAICsgKHZvaWQpaW5pdGlhbGl6ZQogICAgIEpTQzo6aW5pdGlhbGl6ZVRocmVhZGluZygp
OwogICAgIFdURjo6aW5pdGlhbGl6ZU1haW5UaHJlYWRUb1Byb2Nlc3NNYWluVGhyZWFkKCk7CiAg
ICAgUnVuTG9vcDo6aW5pdGlhbGl6ZU1haW5SdW5Mb29wKCk7Ci0gICAgV0tTZW5kVXNlckNoYW5n
ZU5vdGlmaWNhdGlvbnMoKTsKKyAgICBzZW5kVXNlckNoYW5nZU5vdGlmaWNhdGlvbnMoKTsKIH0K
IAogLy8gTUFSSzogRVZFTlRTCkBAIC0zNzksMTAgKzM3OSwxMCBAQCAtIChQb3J0U3RhdGUpc2F2
ZUFuZFNldE5ld1BvcnRTdGF0ZUZvclVwZGF0ZTooQk9PTClmb3JVcGRhdGUKICAgICAgICAgICAg
IHFkUG9ydFN0YXRlLT5jbGlwUmVnaW9uID0gY2xpcFJlZ2lvbjsKIAogICAgICAgICAgICAgQ0dD
b250ZXh0UmVmIGN1cnJlbnRDb250ZXh0ID0gKENHQ29udGV4dFJlZilbW05TR3JhcGhpY3NDb250
ZXh0IGN1cnJlbnRDb250ZXh0XSBncmFwaGljc1BvcnRdOwotICAgICAgICAgICAgaWYgKGN1cnJl
bnRDb250ZXh0ICYmIFdLQ0dDb250ZXh0SXNCaXRtYXBDb250ZXh0KGN1cnJlbnRDb250ZXh0KSkg
ewotICAgICAgICAgICAgICAgIC8vIFdlIHVzZSBXS0NHQ29udGV4dElzQml0bWFwQ29udGV4dCBo
ZXJlLCBiZWNhdXNlIGlmIHdlIGp1c3QgY2FsbGVkIENHQml0bWFwQ29udGV4dEdldERhdGEKLSAg
ICAgICAgICAgICAgICAvLyBvbiBhbnkgY29udGV4dCwgd2UnZCBsb2cgdG8gdGhlIGNvbnNvbGUg
ZXZlcnkgdGltZS4gQnV0IGV2ZW4gaWYgV0tDR0NvbnRleHRJc0JpdG1hcENvbnRleHQKLSAgICAg
ICAgICAgICAgICAvLyByZXR1cm5zIHRydWUsIGl0IHN0aWxsIG1pZ2h0IG5vdCBiZSBhIGNvbnRl
eHQgd2UgbmVlZCB0byBjcmVhdGUgYSBHV29ybGQgZm9yOyBmb3IgZXhhbXBsZQorICAgICAgICAg
ICAgaWYgKGN1cnJlbnRDb250ZXh0ICYmIENHQ29udGV4dEdldFR5cGUoY3VycmVudENvbnRleHQp
ID09IGtDR0NvbnRleHRUeXBlQml0bWFwKSB7CisgICAgICAgICAgICAgICAgLy8gV2UgY2hlY2sg
Zm9yIGtDR0NvbnRleHRUeXBlQml0bWFwIGhlcmUsIGJlY2F1c2UgaWYgd2UganVzdCBjYWxsZWQg
Q0dCaXRtYXBDb250ZXh0R2V0RGF0YQorICAgICAgICAgICAgICAgIC8vIG9uIGFueSBjb250ZXh0
LCB3ZSdkIGxvZyB0byB0aGUgY29uc29sZSBldmVyeSB0aW1lLiBCdXQgZXZlbiBpZiBjdXJyZW50
Q29udGV4dCBpcyBhCisgICAgICAgICAgICAgICAgLy8ga0NHQ29udGV4dFR5cGVCaXRtYXAsIGl0
IHN0aWxsIG1pZ2h0IG5vdCBiZSBhIGNvbnRleHQgd2UgbmVlZCB0byBjcmVhdGUgYSBHV29ybGQg
Zm9yOyBmb3IgZXhhbXBsZQogICAgICAgICAgICAgICAgIC8vIHRyYW5zcGFyZW5jeSBsYXllcnMg
d2lsbCByZXR1cm4gdHJ1ZSwgYnV0IHJldHVybiAwIGZvciBDR0JpdG1hcENvbnRleHRHZXREYXRh
LgogICAgICAgICAgICAgICAgIHZvaWQqIG9mZnNjcmVlbkRhdGEgPSBDR0JpdG1hcENvbnRleHRH
ZXREYXRhKGN1cnJlbnRDb250ZXh0KTsKICAgICAgICAgICAgICAgICBpZiAob2Zmc2NyZWVuRGF0
YSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViU3lzdGVtSW50ZXJmYWNlLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViU3lzdGVtSW50ZXJmYWNlLm1tCmluZGV4IGQ0NTUxNmY1ZWVlMWMwODJjOTgyOGQ5
ZTc0NzRlYzk2ODljNDdiNTguLjliZTAwMDJmZDUzZjQ5MzMzNGViMmM5OTkzMTFmYTgzOTQyZjdl
M2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YlN5c3RlbUludGVyZmFjZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJTeXN0ZW1JbnRlcmZhY2UubW0KQEAgLTQzLDE2ICs0Myw5IEBAIHZvaWQgSW5p
dFdlYkNvcmVTeXN0ZW1JbnRlcmZhY2Uodm9pZCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgSU5J
VChDQUxheWVyRW51bWVyYXRlUmVjdHNCZWluZ0RyYXduV2l0aEJsb2NrKTsKLSAgICBJTklUKENH
UGF0dGVybkNyZWF0ZVdpdGhJbWFnZUFuZFRyYW5zZm9ybSk7Ci0jaWYgIVBMQVRGT1JNKElPUykK
LSAgICBJTklUKENHQ29udGV4dERyYXdzV2l0aENvcnJlY3RTaGFkb3dPZmZzZXRzKTsKLSNlbmRp
ZgogICAgIElOSVQoQ29weUNPTk5FQ1RQcm94eVJlc3BvbnNlKTsKICNpZiAhUExBVEZPUk0oSU9T
KQogICAgIElOSVQoRHJhd0JlemVsZWRUZXh0QXJlYSk7Ci0gICAgSU5JVChEcmF3Rm9jdXNSaW5n
KTsKLSAgICBJTklUKERyYXdGb2N1c1JpbmdBdFRpbWUpOwotICAgIElOSVQoRHJhd0NlbGxGb2N1
c1JpbmdXaXRoRnJhbWVBdFRpbWUpOwogICAgIElOSVQoRHJhd01lZGlhVUlQYXJ0KTsKICAgICBJ
TklUKERyYXdNZWRpYVNsaWRlclRyYWNrKTsKICAgICBJTklUKEdldFdoZWVsRXZlbnREZWx0YXMp
OwpAQCAtNjEsMTUgKzU0LDkgQEAgdm9pZCBJbml0V2ViQ29yZVN5c3RlbUludGVyZmFjZSh2b2lk
KQogICAgIElOSVQoTWVhc3VyZU1lZGlhVUlQYXJ0KTsKICAgICBJTklUKENyZWF0ZU1lZGlhVUlC
YWNrZ3JvdW5kVmlldyk7CiAgICAgSU5JVChDcmVhdGVNZWRpYVVJQ29udHJvbCk7Ci0gICAgSU5J
VChXaW5kb3dTZXRBbHBoYSk7Ci0gICAgSU5JVChXaW5kb3dTZXRTY2FsZWRGcmFtZSk7CiAjZW5k
aWYKICAgICBJTklUKFNldENPTk5FQ1RQcm94eUF1dGhvcml6YXRpb25Gb3JTdHJlYW0pOwogICAg
IElOSVQoU2V0Q09OTkVDVFByb3h5Rm9yU3RyZWFtKTsKLSNpZiAhUExBVEZPUk0oSU9TKQotICAg
IElOSVQoU2V0RHJhZ0ltYWdlKTsKLSNlbmRpZgotICAgIElOSVQoQ0dDb250ZXh0SXNQREZDb250
ZXh0KTsKICNpZiBFTkFCTEUoVklERU8pICYmICFQTEFURk9STShJT1MpCiAgICAgSU5JVChRVElu
Y2x1ZGVPbmx5TW9kZXJuTWVkaWFGaWxlVHlwZXMpOwogICAgIElOSVQoUVRNb3ZpZURpc2FibGVD
b21wb25lbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9X
ZWJGcmFtZS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0K
aW5kZXggZjBmOGU2Mjg1ODBiMjlmZTA0N2VkZGY2ZWI0NzU3OGM2ZDA1ZGQyZC4uZTcwOTNjOTZh
YWM0NzRlM2FlZTllNzJkMjNiMjRlYjFjNTg5YTJlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCkBAIC01OTgsNyArNTk4LDcgQEAgLSAoUGFpbnRCZWhh
dmlvcilfcGFpbnRCZWhhdmlvckZvckRlc3RpbmF0aW9uQ29udGV4dDooQ0dDb250ZXh0UmVmKWNv
bnRleHQKICAgICAgICAgcmV0dXJuIFBhaW50QmVoYXZpb3JGbGF0dGVuQ29tcG9zaXRpbmdMYXll
cnMgfCBQYWludEJlaGF2aW9yU25hcHNob3R0aW5nOwogI2VuZGlmCiAKLSAgICBpZiAoIVdLQ0dD
b250ZXh0SXNCaXRtYXBDb250ZXh0KGNvbnRleHQpKQorICAgIGlmIChDR0NvbnRleHRHZXRUeXBl
KGNvbnRleHQpICE9IGtDR0NvbnRleHRUeXBlQml0bWFwKQogICAgICAgICByZXR1cm4gUGFpbnRC
ZWhhdmlvck5vcm1hbDsKIAogICAgIC8vIElmIHdlJ3JlIGRyYXdpbmcgaW50byBhIGJpdG1hcCwg
d2UgbWlnaHQgYmUgc25hcHNob3R0aW5nLCBvciBkcmF3aW5nIGludG8gYSBsYXllci1iYWNrZWQg
dmlldy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnVs
bFNjcmVlbkNvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dl
YkZ1bGxTY3JlZW5Db250cm9sbGVyLm1tCmluZGV4IGZkOGZjNTY5OTdhZmNiNmFkN2Y5MGM1ZmM5
OTg0YmEzMTc2NmU5MDcuLjQwNTNmZmM4NDY0YTM1YmI4NmFmYjY2NmUzY2VlN2VkY2FjZTVlZmIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnVsbFNjcmVl
bkNvbnRyb2xsZXIubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJG
dWxsU2NyZWVuQ29udHJvbGxlci5tbQpAQCAtMjQ5LDYgKzI0OSwxNiBAQCAtICh2b2lkKWVudGVy
RnVsbFNjcmVlbjooTlNTY3JlZW4gKilzY3JlZW4KICAgICBfaXNFbnRlcmluZ0Z1bGxTY3JlZW4g
PSB0cnVlOwogfQogCitzdGF0aWMgdm9pZCBzZXRDbGlwUmVjdEZvcldpbmRvdyhOU1dpbmRvdyAq
d2luZG93LCBOU1JlY3QgY2xpcFJlY3QpCit7CisgICAgQ0dTV2luZG93SUQgd2luZG93TnVtYmVy
ID0gKENHU1dpbmRvd0lEKVt3aW5kb3cgd2luZG93TnVtYmVyXTsKKyAgICBDR1NSZWdpb25PYmog
c2hhcGU7CisgICAgQ0dSZWN0IGNnQ2xpcFJlY3QgPSBOU1JlY3RUb0NHUmVjdChjbGlwUmVjdCk7
CisgICAgQ0dTTmV3UmVnaW9uV2l0aFJlY3QoJmNnQ2xpcFJlY3QsICZzaGFwZSk7CisgICAgQ0dT
U2V0V2luZG93Q2xpcFNoYXBlKENHU01haW5Db25uZWN0aW9uSUQoKSwgd2luZG93TnVtYmVyLCBz
aGFwZSk7CisgICAgQ0dTUmVsZWFzZVJlZ2lvbihzaGFwZSk7Cit9CisKIC0gKHZvaWQpZmluaXNo
ZWRFbnRlckZ1bGxTY3JlZW5BbmltYXRpb246KGJvb2wpY29tcGxldGVkCiB7CiAgICAgaWYgKCFf
aXNFbnRlcmluZ0Z1bGxTY3JlZW4pCkBAIC0yNjMsNyArMjczLDcgQEAgLSAodm9pZClmaW5pc2hl
ZEVudGVyRnVsbFNjcmVlbkFuaW1hdGlvbjooYm9vbCljb21wbGV0ZWQKICAgICAgICAgCiAgICAg
ICAgIE5TUmVjdCB3aW5kb3dCb3VuZHMgPSBbW3NlbGYgd2luZG93XSBmcmFtZV07CiAgICAgICAg
IHdpbmRvd0JvdW5kcy5vcmlnaW4gPSBOU1plcm9Qb2ludDsKLSAgICAgICAgV0tXaW5kb3dTZXRD
bGlwUmVjdChbc2VsZiB3aW5kb3ddLCB3aW5kb3dCb3VuZHMpOworICAgICAgICBzZXRDbGlwUmVj
dEZvcldpbmRvdyhbc2VsZiB3aW5kb3ddLCB3aW5kb3dCb3VuZHMpOwogICAgICAgICAKICAgICAg
ICAgTlNXaW5kb3cgKndlYldpbmRvdyA9IFtfd2ViVmlld1BsYWNlaG9sZGVyLmdldCgpIHdpbmRv
d107CiAgICAgICAgIC8vIEluIExpb24sIE5TV2luZG93IHdpbGwgYW5pbWF0ZSBpbnRvIGFuZCBv
dXQgb2Ygb3JkZXJPdXQgb3BlcmF0aW9ucy4gU3VwcHJlc3MgdGhhdApAQCAtMzUzLDcgKzM2Myw3
IEBAIC0gKHZvaWQpZmluaXNoZWRFeGl0RnVsbFNjcmVlbkFuaW1hdGlvbjooYm9vbCljb21wbGV0
ZWQKICAgICAKICAgICBOU1JlY3Qgd2luZG93Qm91bmRzID0gW1tzZWxmIHdpbmRvd10gZnJhbWVd
OwogICAgIHdpbmRvd0JvdW5kcy5vcmlnaW4gPSBOU1plcm9Qb2ludDsKLSAgICBXS1dpbmRvd1Nl
dENsaXBSZWN0KFtzZWxmIHdpbmRvd10sIHdpbmRvd0JvdW5kcyk7CisgICAgc2V0Q2xpcFJlY3RG
b3JXaW5kb3coW3NlbGYgd2luZG93XSwgd2luZG93Qm91bmRzKTsKICAgICAKICAgICBbW3NlbGYg
d2luZG93XSBvcmRlck91dDpzZWxmXTsKICAgICBbW3NlbGYgd2luZG93XSBzZXRGcmFtZTpOU1pl
cm9SZWN0IGRpc3BsYXk6WUVTXTsKQEAgLTQ4NCwxMyArNDk0LDEzIEBAIC0gKHZvaWQpX3N0YXJ0
RW50ZXJGdWxsU2NyZWVuQW5pbWF0aW9uV2l0aER1cmF0aW9uOihOU1RpbWVJbnRlcnZhbClkdXJh
dGlvbgogICAgIFtfc2NhbGVBbmltYXRpb24uZ2V0KCkgc2V0Q3VycmVudFByb2dyZXNzOjBdOwog
ICAgIFtfc2NhbGVBbmltYXRpb24uZ2V0KCkgc3RhcnRBbmltYXRpb25dOwogICAgIAotICAgIC8v
IFdLV2luZG93U2V0Q2xpcFJlY3QgdGFrZXMgd2luZG93IGNvb3JkaW5hdGVzLCBzbyBjb252ZXJ0
IGZyb20gc2NyZWVuIGNvb3JkaW5hdGVzIGhlcmU6CisgICAgLy8gc2V0Q2xpcFJlY3RGb3JXaW5k
b3cgdGFrZXMgd2luZG93IGNvb3JkaW5hdGVzLCBzbyBjb252ZXJ0IGZyb20gc2NyZWVuIGNvb3Jk
aW5hdGVzIGhlcmU6CiAgICAgTlNSZWN0IGZpbmFsQm91bmRzID0gX2ZpbmFsRnJhbWU7CiAjcHJh
Z21hIGNsYW5nIGRpYWdub3N0aWMgcHVzaAogI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIGlnbm9y
ZWQgIi1XZGVwcmVjYXRlZC1kZWNsYXJhdGlvbnMiCiAgICAgZmluYWxCb3VuZHMub3JpZ2luID0g
W1tzZWxmIHdpbmRvd10gY29udmVydFNjcmVlblRvQmFzZTpmaW5hbEJvdW5kcy5vcmlnaW5dOwog
I3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHBvcAotICAgIFdLV2luZG93U2V0Q2xpcFJlY3QoW3Nl
bGYgd2luZG93XSwgZmluYWxCb3VuZHMpOworICAgIHNldENsaXBSZWN0Rm9yV2luZG93KFtzZWxm
IHdpbmRvd10sIGZpbmFsQm91bmRzKTsKICAgICAKICAgICBbW3NlbGYgd2luZG93XSBtYWtlS2V5
QW5kT3JkZXJGcm9udDpzZWxmXTsKICAgICAKQEAgLTU1NiwxMyArNTY2LDEzIEBAIC0gKHZvaWQp
X3N0YXJ0RXhpdEZ1bGxTY3JlZW5BbmltYXRpb25XaXRoRHVyYXRpb246KE5TVGltZUludGVydmFs
KWR1cmF0aW9uCiAgICAgCiAgICAgW19iYWNrZ3JvdW5kV2luZG93LmdldCgpIG9yZGVyV2luZG93
Ok5TV2luZG93QmVsb3cgcmVsYXRpdmVUbzpbW3NlbGYgd2luZG93XSB3aW5kb3dOdW1iZXJdXTsK
ICAgICAKLSAgICAvLyBXS1dpbmRvd1NldENsaXBSZWN0IHRha2VzIHdpbmRvdyBjb29yZGluYXRl
cywgc28gY29udmVydCBmcm9tIHNjcmVlbiBjb29yZGluYXRlcyBoZXJlOgorICAgIC8vIHNldENs
aXBSZWN0Rm9yV2luZG93IHRha2VzIHdpbmRvdyBjb29yZGluYXRlcywgc28gY29udmVydCBmcm9t
IHNjcmVlbiBjb29yZGluYXRlcyBoZXJlOgogICAgIE5TUmVjdCBmaW5hbEJvdW5kcyA9IF9maW5h
bEZyYW1lOwogI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHB1c2gKICNwcmFnbWEgY2xhbmcgZGlh
Z25vc3RpYyBpZ25vcmVkICItV2RlcHJlY2F0ZWQtZGVjbGFyYXRpb25zIgogICAgIGZpbmFsQm91
bmRzLm9yaWdpbiA9IFtbc2VsZiB3aW5kb3ddIGNvbnZlcnRTY3JlZW5Ub0Jhc2U6ZmluYWxCb3Vu
ZHMub3JpZ2luXTsKICNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwb3AKLSAgICBXS1dpbmRvd1Nl
dENsaXBSZWN0KFtzZWxmIHdpbmRvd10sIGZpbmFsQm91bmRzKTsKKyAgICBzZXRDbGlwUmVjdEZv
cldpbmRvdyhbc2VsZiB3aW5kb3ddLCBmaW5hbEJvdW5kcyk7CiAgICAgCiAgICAgW1tzZWxmIHdp
bmRvd10gc2V0QXV0b2Rpc3BsYXk6WUVTXTsKICAgICBbW3NlbGYgd2luZG93XSBkaXNwbGF5SWZO
ZWVkZWRdOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>319567</attachid>
            <date>2017-08-31 20:39:34 -0700</date>
            <delta_ts>2017-08-31 20:53:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-176200-20170831203933.patch</filename>
            <type>text/plain</type>
            <size>61807</size>
            <attacher name="Andy Estes">aestes</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIxMzgxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzVhYmE3NzU1NjhiNjgz
ZmZjOWVjZWE4MzhlNWFmOGRlMTVjOTY4Ni4uNmFhZDZiNmQxYzY3MzhkNGZkMTQwM2U4YjlhYjJj
MDZmZGEzM2M0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBACisyMDE3LTA4LTMxICBBbmR5
IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29jb2FdIFVwc3RyZWFtIENv
cmVHcmFwaGljcy1yZWxhdGVkIFdlYktpdFN5c3RlbUludGVyZmFjZSBmdW5jdGlvbnMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NjIwMAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NDb250ZXh0Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2VTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OnN1YnNhbXBsaW5n
TGV2ZWxGb3JTY2FsZUZhY3Rvcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3Jh
cGhpY3NDb250ZXh0Q0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0Ojpj
bGlwT3V0KToKKyAgICAgICAgKFdlYkNvcmU6OmFwcGx5U2hhZG93T2Zmc2V0V29ya2Fyb3VuZElm
TmVlZGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9QYXR0ZXJuQ0cuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UGF0dGVybjo6Y3JlYXRlUGxhdGZvcm1QYXR0ZXJuIGNvbnN0KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRDb2NvYS5t
bToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6Zm9jdXNSaW5nQ29sb3IpOgor
ICAgICAgICAoV2ViQ29yZTo6ZHJhd0ZvY3VzUmluZ0F0VGltZSk6CisgICAgICAgIChXZWJDb3Jl
OjpkcmF3Rm9jdXNSaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OmRyYXdGb2N1c1JpbmdUb0NvbnRl
eHQpOgorICAgICAgICAoV2ViQ29yZTo6ZHJhd0ZvY3VzUmluZ1RvQ29udGV4dEF0VGltZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vaW9zL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2VJT1MubW06CisgICAg
ICAgICogcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpm
bGlwSW1hZ2VTcGVjKToKKyAgICAgICAgKFdlYkNvcmU6OnNldERyYWdJbWFnZUltcGwpOgorICAg
ICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6c2V0RHJhZ0ltYWdlKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9tYWMvUGxhdGZvcm1FdmVudEZhY3RvcnlNYWMubW06CisgICAgICAgICogcGxhdGZvcm0v
bWFjL1Njcm9sbGJhclRoZW1lTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6bGluZW5CYWNrZ3Jv
dW5kQ29sb3IpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9UaGVtZU1hYy5tbToKKyAgICAgICAg
KFdlYkNvcmU6OmRyYXdDZWxsRm9jdXNSaW5nV2l0aEZyYW1lQXRUaW1lKToKKyAgICAgICAgKFdl
YkNvcmU6OmRyYXdDZWxsRm9jdXNSaW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvV2ViQ29y
ZVN5c3RlbUludGVyZmFjZS5oOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9XZWJDb3JlU3lzdGVt
SW50ZXJmYWNlLm1tOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9XZWJXaW5kb3dBbmltYXRpb24u
bW06CisgICAgICAgIChmbGlwUmVjdCk6CisgICAgICAgIChtYWluV2luZG93U2VydmVyQ29ubmVj
dGlvbklEKToKKyAgICAgICAgKHNldFNjYWxlZEZyYW1lRm9yV2luZG93KToKKyAgICAgICAgKC1b
V2ViV2luZG93U2NhbGVBbmltYXRpb24gc2V0Q3VycmVudFByb2dyZXNzOl0pOgorICAgICAgICAo
LVtXZWJXaW5kb3dGYWRlQW5pbWF0aW9uIHNldEN1cnJlbnRQcm9ncmVzczpdKToKKwogMjAxNy0w
OC0zMCAgQW5keSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+CiAKICAgICAgICAgW01hY10gVXBz
dHJlYW0gQWNjZXNzaWJpbGl0eS1yZWxhdGVkIFdlYktpdFN5c3RlbUludGVyZmFjZSBmdW5jdGlv
bnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
Q29yZS9QQUwvQ2hhbmdlTG9nCmluZGV4IDdiNGI2MDFmZTRlNWUxNTBmODE4OTc0NDU3YzY5ZWVi
OWI2MDEzNTEuLjYyN2UzZjM4ZmI0NDUyNGRiZTA5NDNjYzdkNGVjMjljMTg3ZTc2MzkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUv
UEFML0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDE3LTA4LTMxICBBbmR5IEVzdGVzICA8
YWVzdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29jb2FdIFVwc3RyZWFtIENvcmVHcmFwaGlj
cy1yZWxhdGVkIFdlYktpdFN5c3RlbUludGVyZmFjZSBmdW5jdGlvbnMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NjIwMAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogUEFMLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2o6CisgICAgICAgICogcGFsL3NwaS9jZy9Db3JlR3JhcGhpY3NTUEkuaDoKKyAgICAg
ICAgKiBwYWwvc3BpL21hYy9ISVNlcnZpY2VzU1BJLmg6CisgICAgICAgICogcGFsL3NwaS9tYWMv
TlNHcmFwaGljc1NQSS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9t
YWMvSElTZXJ2aWNlc1NQSS5oLgorCiAyMDE3LTA4LTMwICBBbmR5IEVzdGVzICA8YWVzdGVzQGFw
cGxlLmNvbT4KIAogICAgICAgICBbTWFjXSBVcHN0cmVhbSBBY2Nlc3NpYmlsaXR5LXJlbGF0ZWQg
V2ViS2l0U3lzdGVtSW50ZXJmYWNlIGZ1bmN0aW9ucwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBhODY2NmYzMzg1MzQx
ZDM1NmQ3YTBjNzEzMWVhMmFmZjY4MTRhNjhiLi4yMTVkMmY3ZDg0ZmUwZWNlYmNjOTRhN2QxMTZm
N2YxYTYyNTYxZDA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDE3LTA4LTMxICBBbmR5
IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29jb2FdIFVwc3RyZWFtIENv
cmVHcmFwaGljcy1yZWxhdGVkIFdlYktpdFN5c3RlbUludGVyZmFjZSBmdW5jdGlvbnMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NjIwMAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogUGx1Z2luUHJvY2Vz
cy9tYWMvUGx1Z2luUHJvY2Vzc01hYy5tbToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJvY2Vz
czo6cGxhdGZvcm1Jbml0aWFsaXplUHJvY2Vzcyk6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9X
aW5kb3dTZXJ2ZXJDb25uZWN0aW9uLmg6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9XaW5kb3dT
ZXJ2ZXJDb25uZWN0aW9uLm1tOgorICAgICAgICAoV2ViS2l0OjpyZWdpc3Rlck9jY2x1c2lvbk5v
dGlmaWNhdGlvbkhhbmRsZXIpOgorICAgICAgICAoV2ViS2l0OjpXaW5kb3dTZXJ2ZXJDb25uZWN0
aW9uOjpXaW5kb3dTZXJ2ZXJDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2luZG93U2Vy
dmVyQ29ubmVjdGlvbjo6YXBwbGljYXRpb25XaW5kb3dNb2RpZmljYXRpb25zU3RhcnRlZCk6IERl
bGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViU3lzdGVt
SW50ZXJmYWNlLm1tOgorICAgICAgICAoSW5pdFdlYkNvcmVTeXN0ZW1JbnRlcmZhY2UpOgorCiAy
MDE3LTA4LTMwICBBbmR5IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KIAogICAgICAgICBbTWFj
XSBVcHN0cmVhbSBBY2Nlc3NpYmlsaXR5LXJlbGF0ZWQgV2ViS2l0U3lzdGVtSW50ZXJmYWNlIGZ1
bmN0aW9ucwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4IGJkZjVkMzhhZTdlNWI3NjE0
MDliM2QxMDU0ZDg0MzgzODY4OWZiZGEuLjRkMzE2OTQxYjM2ZjllMzMyM2MzODI5NjgzNDcyNWMw
Njc4OTAwMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNCBAQAor
MjAxNy0wOC0zMSAgQW5keSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+CisKKyAgICAgICAgW0Nv
Y29hXSBVcHN0cmVhbSBDb3JlR3JhcGhpY3MtcmVsYXRlZCBXZWJLaXRTeXN0ZW1JbnRlcmZhY2Ug
ZnVuY3Rpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNzYyMDAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIENhcmJvbi9ISVdlYlZpZXcubW06CisgICAgICAgICgtW05TV2luZG93R3JhcGhpY3NDb250
ZXh0IF93ZWJfc2V0R3JhcGhpY3NQb3J0Ol0pOgorICAgICAgICAob3ZlcnJpZGVDR0NvbnRleHQp
OgorICAgICAgICAocmVzdG9yZUNHQ29udGV4dCk6CisgICAgICAgIChEcmF3KToKKyAgICAgICAg
KiBQbHVnaW5zL0hvc3RlZC9XZWJIb3N0ZWROZXRzY2FwZVBsdWdpblZpZXcubW06CisgICAgICAg
ICgrW1dlYkhvc3RlZE5ldHNjYXBlUGx1Z2luVmlldyBpbml0aWFsaXplXSk6CisgICAgICAgICog
UGx1Z2lucy9XZWJCYXNlTmV0c2NhcGVQbHVnaW5WaWV3Lmg6CisgICAgICAgICogUGx1Z2lucy9X
ZWJCYXNlTmV0c2NhcGVQbHVnaW5WaWV3Lm1tOgorICAgICAgICAoV2ViS2l0OjpzZW5kVXNlckNo
YW5nZU5vdGlmaWNhdGlvbnMpOgorICAgICAgICAqIFBsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5W
aWV3Lm1tOgorICAgICAgICAoK1tXZWJOZXRzY2FwZVBsdWdpblZpZXcgaW5pdGlhbGl6ZV0pOgor
ICAgICAgICAoLVtXZWJOZXRzY2FwZVBsdWdpblZpZXcgc2F2ZUFuZFNldE5ld1BvcnRTdGF0ZUZv
clVwZGF0ZTpdKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJTeXN0ZW1JbnRlcmZhY2Uu
bW06CisgICAgICAgIChJbml0V2ViQ29yZVN5c3RlbUludGVyZmFjZSk6CisgICAgICAgICogV2Vi
Vmlldy9XZWJGcmFtZS5tbToKKyAgICAgICAgKC1bV2ViRnJhbWUgX3BhaW50QmVoYXZpb3JGb3JE
ZXN0aW5hdGlvbkNvbnRleHQ6XSk6CisgICAgICAgICogV2ViVmlldy9XZWJGdWxsU2NyZWVuQ29u
dHJvbGxlci5tbToKKyAgICAgICAgKHNldENsaXBSZWN0Rm9yV2luZG93KToKKyAgICAgICAgKC1b
V2ViRnVsbFNjcmVlbkNvbnRyb2xsZXIgZmluaXNoZWRFbnRlckZ1bGxTY3JlZW5BbmltYXRpb246
XSk6CisgICAgICAgICgtW1dlYkZ1bGxTY3JlZW5Db250cm9sbGVyIGZpbmlzaGVkRXhpdEZ1bGxT
Y3JlZW5BbmltYXRpb246XSk6CisgICAgICAgICgtW1dlYkZ1bGxTY3JlZW5Db250cm9sbGVyIF9z
dGFydEVudGVyRnVsbFNjcmVlbkFuaW1hdGlvbldpdGhEdXJhdGlvbjpdKToKKyAgICAgICAgKC1b
V2ViRnVsbFNjcmVlbkNvbnRyb2xsZXIgX3N0YXJ0RXhpdEZ1bGxTY3JlZW5BbmltYXRpb25XaXRo
RHVyYXRpb246XSk6CisKIDIwMTctMDgtMzAgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29t
PgogCiAgICAgICAgIFtNYWNdIFVwc3RyZWFtIEFjY2Vzc2liaWxpdHktcmVsYXRlZCBXZWJLaXRT
eXN0ZW1JbnRlcmZhY2UgZnVuY3Rpb25zCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwv
UEFMLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9QQUwvUEFMLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZDk4NThmOWVlMmI0MWYwMDU5MzcxYWU5MGNi
MmJmZGRkYTNkMGI4OC4uNjFkOWUzNDZkMGNiNjAzYWQyOWY2MzVkZmUzNTE4ZWZlYmM0ODM3NiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML1BBTC54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9QQUwueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agpAQCAtMTAxLDYgKzEwMSw3IEBACiAJCUExMDI2NTg5MUY1Njc0N0EwMEI0Qzg0NCAvKiBISVRv
b2xib3hTUEkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEExMDI2NTg4MUY1Njc0N0EwMEI0Qzg0NCAvKiBISVRvb2xib3hTUEkuaCAqLzsgfTsKIAkJQTEw
MjY1OEIxRjU2NzQ4QzAwQjRDODQ0IC8qIFF1aWNrRHJhd1NQSS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTEwMjY1OEExRjU2NzQ4QzAwQjRDODQ0IC8q
IFF1aWNrRHJhd1NQSS5oICovOyB9OwogCQlBMTAyNjU4RTFGNTY3RTlEMDBCNEM4NDQgLyogSElT
ZXJ2aWNlc1NQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQTEwMjY1OEQxRjU2N0U5RDAwQjRDODQ0IC8qIEhJU2VydmljZXNTUEkuaCAqLzsgfTsKKwkJ
QTEwODI2RkUxRjU4QTQzMzAwNDc3MkFDIC8qIE5TR3JhcGhpY3NTUEkuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExMDgyNkZEMUY1OEE0MzMwMDQ3NzJB
QyAvKiBOU0dyYXBoaWNzU1BJLmggKi87IH07CiAJCUExRjU1RENGMUY1NTI4RUMwMEVEQjc1RiAv
KiBNZXRhZGF0YVNQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQTFGNTVEQ0UxRjU1MjhFQzAwRURCNzVGIC8qIE1ldGFkYXRhU1BJLmggKi87IH07CiAJ
CUEzMEQ0MTIxMUYwREQwRUEwMEI3MTk1NCAvKiBLaWxsUmluZy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTMwRDQxMUUxRjBERDBFQTAwQjcxOTU0IC8q
IEtpbGxSaW5nLmggKi87IH07CiAJCUEzMEQ0MTIyMUYwREQwRUEwMEI3MTk1NCAvKiBLaWxsUmlu
Z05vbmUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QTMwRDQxMUYxRjBERDBFQTAwQjcxOTU0IC8qIEtpbGxSaW5nTm9uZS5jcHAgKi87IH07CkBAIC0y
MTcsNiArMjE4LDcgQEAKIAkJQTEwMjY1ODgxRjU2NzQ3QTAwQjRDODQ0IC8qIEhJVG9vbGJveFNQ
SS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBISVRvb2xib3hTUEkuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTEwMjY1OEExRjU2NzQ4QzAwQjRDODQ0IC8qIFF1
aWNrRHJhd1NQSS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBRdWlja0RyYXdT
UEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTEwMjY1OEQxRjU2N0U5RDAwQjRD
ODQ0IC8qIEhJU2VydmljZXNTUEkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSElTZXJ2aWNlc1NQSS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBMTA4MjZGRDFGNThBNDMzMDA0NzcyQUMgLyog
TlNHcmFwaGljc1NQSS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOU0dyYXBoaWNzU1BJLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUExRjU1RENFMUY1NTI4RUMwMEVEQjc1RiAvKiBNZXRhZGF0
YVNQSS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBNZXRhZGF0YVNQSS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlBMzBENDExRTFGMEREMEVBMDBCNzE5NTQgLyogS2lsbFJpbmcuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gS2lsbFJpbmcuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQTMwRDQxMUYxRjBERDBFQTAwQjcxOTU0IC8qIEtpbGxSaW5nTm9uZS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBLaWxsUmluZ05vbmUuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzQ5LDYgKzM1MSw3IEBACiAJCQkJMEM3Nzg1
NzUxRjQ1MTMwRjAwRjRFQkI2IC8qIE5TQXBwbGljYXRpb25TUEkuaCAqLywKIAkJCQkwQzc3ODU3
NjFGNDUxMzBGMDBGNEVCQjYgLyogTlNFdmVudFNQSS5oICovLAogCQkJCTBDNzc4NTc3MUY0NTEz
MEYwMEY0RUJCNiAvKiBOU0ZvbnRTUEkuaCAqLywKKwkJCQlBMTA4MjZGRDFGNThBNDMzMDA0Nzcy
QUMgLyogTlNHcmFwaGljc1NQSS5oICovLAogCQkJCTBDNzc4NTc4MUY0NTEzMEYwMEY0RUJCNiAv
KiBOU0ltbWVkaWF0ZUFjdGlvbkdlc3R1cmVSZWNvZ25pemVyU1BJLmggKi8sCiAJCQkJMEM3Nzg1
NzkxRjQ1MTMwRjAwRjRFQkI2IC8qIE5TTWVudVNQSS5oICovLAogCQkJCTBDNzc4NTdBMUY0NTEz
MEYwMEY0RUJCNiAvKiBOU1Bhc3RlYm9hcmRTUEkuaCAqLywKQEAgLTU0Miw2ICs1NDUsNyBAQAog
CQkJCTBDMkRBMTRFMUYzQkVCNDkwMERCQzMxNyAvKiBOU0V4dGVuc2lvblNQSS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMEMyREExNEYxRjNCRUI0OTAwREJDMzE3IC8qIE5TRmlsZU1hbmFnZXJTUEku
aCBpbiBIZWFkZXJzICovLAogCQkJCTBDNzc4NTkwMUY0NTEzMEYwMEY0RUJCNiAvKiBOU0ZvbnRT
UEkuaCBpbiBIZWFkZXJzICovLAorCQkJCUExMDgyNkZFMUY1OEE0MzMwMDQ3NzJBQyAvKiBOU0dy
YXBoaWNzU1BJLmggaW4gSGVhZGVycyAqLywKIAkJCQkwQzc3ODU5MTFGNDUxMzBGMDBGNEVCQjYg
LyogTlNJbW1lZGlhdGVBY3Rpb25HZXN0dXJlUmVjb2duaXplclNQSS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMEM3Nzg1OTIxRjQ1MTMwRjAwRjRFQkI2IC8qIE5TTWVudVNQSS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMEM3Nzg1OTMxRjQ1MTMwRjAwRjRFQkI2IC8qIE5TUGFzdGVib2FyZFNQSS5oIGlu
IEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jZy9D
b3JlR3JhcGhpY3NTUEkuaCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NnL0NvcmVHcmFw
aGljc1NQSS5oCmluZGV4IDdjMjkxYzkxNGQ2OWY1NmQ4NmRiYjRhODgxZmIyMzE4OWM1YTVhNWMu
LmRjYzgzOGY0MTE0MTZhNzUzODVjNzU1MTFiOTFmNzNkNTBhNGJlNDggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NnL0NvcmVHcmFwaGljc1NQSS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NnL0NvcmVHcmFwaGljc1NQSS5oCkBAIC0xMzYsOSArMTM2
LDkgQEAgdHlwZWRlZiBzdHJ1Y3QgQ0dTUmVnaW9uT2JqZWN0KiBDR1JlZ2lvblJlZjsKIHN0YXRp
YyBpbmxpbmUgQ0dGbG9hdCBDR0Zsb2F0TWluKENHRmxvYXQgYSwgQ0dGbG9hdCBiKSB7IHJldHVy
biBpc25hbihhKSA/IGIgOiAoKGlzbmFuKGIpIHx8IGEgPCBiKSA/IGEgOiBiKTsgfQogCiB0eXBl
ZGVmIHN0cnVjdCBDR0ZvbnRDYWNoZSBDR0ZvbnRDYWNoZTsKK3R5cGVkZWYgdWludDMyX3QgQ0dT
Q29ubmVjdGlvbklEOwogCiAjaWYgUExBVEZPUk0oTUFDKQotdHlwZWRlZiB1aW50MzJfdCBDR1ND
b25uZWN0aW9uSUQ7CiB0eXBlZGVmIHVpbnQzMl90IENHU1dpbmRvd0lEOwogdHlwZWRlZiB1aW50
MzJfdCBDR1NXaW5kb3dDb3VudDsKIHR5cGVkZWYgQ0dTV2luZG93SUQgKkNHU1dpbmRvd0lETGlz
dDsKQEAgLTE1MCw4ICsxNTAsNTUgQEAgZW51bSB7CiB0eXBlZGVmIHVpbnQzMl90IENHU1dpbmRv
d0NhcHR1cmVPcHRpb25zOwogI2VuZGlmCiAKK3R5cGVkZWYgQ0ZfRU5VTSh1aW50MzJfdCwgQ0dT
Tm90aWZpY2F0aW9uVHlwZSkgeworICAgIGtDR1NGaXJzdENvbm5lY3Rpb25Ob3RpZmljYXRpb24g
PSA5MDAsCisgICAga0NHU0ZpcnN0U2Vzc2lvbk5vdGlmaWNhdGlvbiA9IDE1MDAsCit9OworCitz
dGF0aWMgY29uc3QgQ0dTTm90aWZpY2F0aW9uVHlwZSBrQ0dTZXNzaW9uQ29uc29sZUNvbm5lY3Qg
PSBrQ0dTRmlyc3RTZXNzaW9uTm90aWZpY2F0aW9uOworc3RhdGljIGNvbnN0IENHU05vdGlmaWNh
dGlvblR5cGUga0NHU2Vzc2lvbkNvbnNvbGVEaXNjb25uZWN0ID0gKENHU05vdGlmaWNhdGlvblR5
cGUpKGtDR1Nlc3Npb25Db25zb2xlQ29ubmVjdCArIDEpOworc3RhdGljIGNvbnN0IENHU05vdGlm
aWNhdGlvblR5cGUga0NHU0Nvbm5lY3Rpb25XaW5kb3dNb2RpZmljYXRpb25zU3RhcnRlZCA9IChD
R1NOb3RpZmljYXRpb25UeXBlKShrQ0dTRmlyc3RDb25uZWN0aW9uTm90aWZpY2F0aW9uICsgNik7
CitzdGF0aWMgY29uc3QgQ0dTTm90aWZpY2F0aW9uVHlwZSBrQ0dTQ29ubmVjdGlvbldpbmRvd01v
ZGlmaWNhdGlvbnNTdG9wcGVkID0gKENHU05vdGlmaWNhdGlvblR5cGUpKGtDR1NGaXJzdENvbm5l
Y3Rpb25Ob3RpZmljYXRpb24gKyA3KTsKKwordHlwZWRlZiBDRl9FTlVNIChpbnQzMl90LCBDR0Zv
Y3VzUmluZ1RpbnQpIHsKKyAgICBrQ0dGb2N1c1JpbmdUaW50Qmx1ZSA9IDAsCisgICAga0NHRm9j
dXNSaW5nVGludEdyYXBoaXRlID0gMQorfTsKKwordHlwZWRlZiBDRl9FTlVNIChpbnQzMl90LCBD
R1N0eWxlRHJhd09yZGVyaW5nKSB7CisgICAga0NHU3R5bGVEcmF3T3JkZXJpbmdTdHlsZU9ubHkg
PSAwLAorICAgIGtDR1N0eWxlRHJhd09yZGVyaW5nQmVsb3cgPSAxLAorICAgIGtDR1N0eWxlRHJh
d09yZGVyaW5nQWJvdmUgPSAyCit9OworCit0eXBlZGVmIENGX0VOVU0gKGludDMyX3QsIENHRm9j
dXNSaW5nT3JkZXJpbmcpIHsKKyAgICBrQ0dGb2N1c1JpbmdPcmRlcmluZ05vbmUgPSBrQ0dTdHls
ZURyYXdPcmRlcmluZ1N0eWxlT25seSwKKyAgICBrQ0dGb2N1c1JpbmdPcmRlcmluZ0JlbG93ID0g
a0NHU3R5bGVEcmF3T3JkZXJpbmdCZWxvdywKKyAgICBrQ0dGb2N1c1JpbmdPcmRlcmluZ0Fib3Zl
ID0ga0NHU3R5bGVEcmF3T3JkZXJpbmdBYm92ZQorfTsKKworc3RydWN0IENHRm9jdXNSaW5nU3R5
bGUgeworICAgIHVuc2lnbmVkIGludCB2ZXJzaW9uOworICAgIENHRm9jdXNSaW5nVGludCB0aW50
OworICAgIENHRm9jdXNSaW5nT3JkZXJpbmcgb3JkZXJpbmc7CisgICAgQ0dGbG9hdCBhbHBoYTsK
KyAgICBDR0Zsb2F0IHJhZGl1czsKKyAgICBDR0Zsb2F0IHRocmVzaG9sZDsKKyAgICBDR1JlY3Qg
Ym91bmRzOworICAgIGludCBhY2N1bXVsYXRlOworfTsKK3R5cGVkZWYgc3RydWN0IENHRm9jdXNS
aW5nU3R5bGUgQ0dGb2N1c1JpbmdTdHlsZTsKKwogI2VuZGlmIC8vIFVTRShBUFBMRV9JTlRFUk5B
TF9TREspCiAKK3R5cGVkZWYgc3RydWN0IENGX0JSSURHRURfVFlQRShpZCkgQ0dTdHlsZSAqQ0dT
dHlsZVJlZjsKK3R5cGVkZWYgc3RydWN0IENGX0JSSURHRURfVFlQRShpZCkgQ0dTUmVnaW9uT2Jq
ZWN0KiBDR1NSZWdpb25PYmo7Cit0eXBlZGVmIHZvaWQqIENHU05vdGlmaWNhdGlvbkFyZzsKK3R5
cGVkZWYgdm9pZCogQ0dTTm90aWZpY2F0aW9uRGF0YTsKK3R5cGVkZWYgdWludDMyX3QgQ0dTQnl0
ZUNvdW50OwordHlwZWRlZiB2b2lkICgqQ0dTTm90aWZ5UHJvY1B0cikoQ0dTTm90aWZpY2F0aW9u
VHlwZSwgdm9pZCogZGF0YSwgdWludDMyX3QgZGF0YV9sZW5ndGgsIHZvaWQqIGFyZyk7Cit0eXBl
ZGVmIHZvaWQgKCpDR1NOb3RpZnlDb25uZWN0aW9uUHJvY1B0cikoQ0dTTm90aWZpY2F0aW9uVHlw
ZSwgdm9pZCogZGF0YSwgdWludDMyX3QgZGF0YV9sZW5ndGgsIHZvaWQqIGFyZywgQ0dTQ29ubmVj
dGlvbklEKTsKKwogV1RGX0VYVEVSTl9DX0JFR0lOCiAKIENHQ29sb3JSZWYgQ0dDb2xvclRyYW5z
Zm9ybUNvbnZlcnRDb2xvcihDR0NvbG9yVHJhbnNmb3JtUmVmLCBDR0NvbG9yUmVmLCBDR0NvbG9y
UmVuZGVyaW5nSW50ZW50KTsKQEAgLTIyNSw0ICsyNzIsMTMgQEAgQ0dFcnJvciBDR1NHZXRTY3Jl
ZW5SZWN0Rm9yV2luZG93KENHU0Nvbm5lY3Rpb25JRCwgQ0dTV2luZG93SUQsIENHUmVjdCAqKTsK
IGJvb2wgQ29sb3JTeW5jUHJvZmlsZUlzV2lkZUdhbXV0KENvbG9yU3luY1Byb2ZpbGVSZWYpOwog
I2VuZGlmCiAKK2Jvb2wgQ0dDb250ZXh0RHJhd3NXaXRoQ29ycmVjdFNoYWRvd09mZnNldHMoQ0dD
b250ZXh0UmVmKTsKK3ZvaWQgQ0dDb250ZXh0U2V0U3R5bGUoQ0dDb250ZXh0UmVmLCBDR1N0eWxl
UmVmKTsKK0NHRXJyb3IgQ0dTUGFja2FnZXNFbmFibGVDb25uZWN0aW9uT2NjbHVzaW9uTm90aWZp
Y2F0aW9ucyhDR1NDb25uZWN0aW9uSUQsIGJvb2wgZmxhZywgYm9vbCogb3V0Q3VycmVudFZpc2li
aWxpdHlTdGF0ZSk7CitDR0Vycm9yIENHU1BhY2thZ2VzRW5hYmxlQ29ubmVjdGlvbldpbmRvd01v
ZGlmaWNhdGlvbk5vdGlmaWNhdGlvbnMoQ0dTQ29ubmVjdGlvbklELCBib29sIGZsYWcsIGJvb2wq
IG91dENvbm5lY3Rpb25Jc0N1cnJlbnRseUlkbGUpOworQ0dFcnJvciBDR1NSZWdpc3RlckNvbm5l
Y3Rpb25Ob3RpZnlQcm9jKENHU0Nvbm5lY3Rpb25JRCwgQ0dTTm90aWZ5Q29ubmVjdGlvblByb2NQ
dHIsIENHU05vdGlmaWNhdGlvblR5cGUsIHZvaWQqIGFyZyk7CitDR0Vycm9yIENHU1JlZ2lzdGVy
Tm90aWZ5UHJvYyhDR1NOb3RpZnlQcm9jUHRyLCBDR1NOb3RpZmljYXRpb25UeXBlLCB2b2lkKiBh
cmcpOworQ0dQYXR0ZXJuUmVmIENHUGF0dGVybkNyZWF0ZVdpdGhJbWFnZTIoQ0dJbWFnZVJlZiwg
Q0dBZmZpbmVUcmFuc2Zvcm0sIENHUGF0dGVyblRpbGluZyk7CitDR1N0eWxlUmVmIENHU3R5bGVD
cmVhdGVGb2N1c1JpbmdXaXRoQ29sb3IoY29uc3QgQ0dGb2N1c1JpbmdTdHlsZSosIENHQ29sb3JS
ZWYpOworCiBXVEZfRVhURVJOX0NfRU5ECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwv
cGFsL3NwaS9tYWMvSElTZXJ2aWNlc1NQSS5oIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkv
bWFjL0hJU2VydmljZXNTUEkuaAppbmRleCA5ZjM1ZGNkNGQwM2E1N2EwODZiMGEzNjVkZmIzOWRk
ZmZjYzgxOTg1Li42ODNhYmExYTk1ZThiODc0ZTZkZmY0NDhhYTA0MTcxYzUxMmZkNWMyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9tYWMvSElTZXJ2aWNlc1NQSS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL21hYy9ISVNlcnZpY2VzU1BJLmgKQEAgLTI4
LDkgKzI4LDMxIEBACiAjaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKIAogI2luY2x1ZGUgPEhJ
U2VydmljZXMvQVhUZXh0TWFya2VyLmg+CisjaW5jbHVkZSA8SElTZXJ2aWNlcy9Db3JlRHJhZy5o
PgorCisjZWxzZQorCitlbnVtIHsKKyAgICBrQ29yZURyYWdJbWFnZVNwZWNWZXJzaW9uT25lID0g
MSwKK307CisKK3N0cnVjdCBDb3JlRHJhZ0ltYWdlU3BlYyB7CisgICAgVUludDMyIHZlcnNpb247
CisgICAgU0ludDMyIHBpeGVsc1dpZGU7CisgICAgU0ludDMyIHBpeGVsc0hpZ2g7CisgICAgU0lu
dDMyIGJpdHNQZXJTYW1wbGU7CisgICAgU0ludDMyIHNhbXBsZXNQZXJQaXhlbDsKKyAgICBTSW50
MzIgYml0c1BlclBpeGVsOworICAgIFNJbnQzMiBieXRlc1BlclJvdzsKKyAgICBCb29sZWFuIGlz
UGxhbmFyOworICAgIEJvb2xlYW4gaGFzQWxwaGE7CisgICAgY29uc3QgVUludDgqIGRhdGFbNV07
Cit9OwogCiAjZW5kaWYKIAordHlwZWRlZiBzdHJ1Y3QgQ29yZURyYWdJbWFnZVNwZWMgQ29yZURy
YWdJbWFnZVNwZWM7Cit0eXBlZGVmIHN0cnVjdCBPcGFxdWVDb3JlRHJhZyogQ29yZURyYWdSZWY7
CiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBfX0FYVGV4dE1hcmtlciAqQVhUZXh0TWFya2VyUmVmOwog
dHlwZWRlZiBjb25zdCBzdHJ1Y3QgX19BWFRleHRNYXJrZXJSYW5nZSAqQVhUZXh0TWFya2VyUmFu
Z2VSZWY7CiAKQEAgLTQ0LDUgKzY2LDYgQEAgY29uc3QgVUludDgqIEFYVGV4dE1hcmtlckdldEJ5
dGVQdHIoQVhUZXh0TWFya2VyUmVmKTsKIEFYVGV4dE1hcmtlclJhbmdlUmVmIEFYVGV4dE1hcmtl
clJhbmdlQ3JlYXRlKENGQWxsb2NhdG9yUmVmLCBBWFRleHRNYXJrZXJSZWYgc3RhcnRNYXJrZXIs
IEFYVGV4dE1hcmtlclJlZiBlbmRNYXJrZXIpOwogQVhUZXh0TWFya2VyUmVmIEFYVGV4dE1hcmtl
clJhbmdlQ29weVN0YXJ0TWFya2VyKEFYVGV4dE1hcmtlclJhbmdlUmVmKTsKIEFYVGV4dE1hcmtl
clJlZiBBWFRleHRNYXJrZXJSYW5nZUNvcHlFbmRNYXJrZXIoQVhUZXh0TWFya2VyUmFuZ2VSZWYp
OworQ29yZURyYWdSZWYgQ29yZURyYWdHZXRDdXJyZW50RHJhZygpOwogCiBXVEZfRVhURVJOX0Nf
RU5ECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9tYWMvTlNHcmFwaGlj
c1NQSS5oIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvbWFjL05TR3JhcGhpY3NTUEkuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi43NWVjYjE0MDczY2ZiY2I0NWY5ZWM0YjA3NzBmOWFlMmRkZDYzZDdmCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvbWFjL05TR3JhcGhpY3NT
UEkuaApAQCAtMCwwICsxLDM4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBV
U0UoQVBQTEVfSU5URVJOQUxfU0RLKQorCisjaW5jbHVkZSA8QXBwS2l0L05TR3JhcGhpY3NfUHJp
dmF0ZS5oPgorCisjZW5kaWYKKworV1RGX0VYVEVSTl9DX0JFR0lOCisKK0JPT0wgTlNJbml0aWFs
aXplQ0dGb2N1c1JpbmdTdHlsZUZvclRpbWUoTlNGb2N1c1JpbmdQbGFjZW1lbnQsIENHRm9jdXNS
aW5nU3R5bGUqLCBOU1RpbWVJbnRlcnZhbCk7CisKK1dURl9FWFRFUk5fQ19FTkQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKaW5kZXgg
MThhY2RkYmU3ZWZmZmE0MjlkMTg1NzgzOWFiNmU2Njc0NjZhM2Q4NS4uYzE0YjJhNTVlNmFhN2Y5
MGQyMDAzYzQ2Njg0MzQzMjJlMDg1NDU5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKQEAgLTQ0NSw2ICs0NDUsNyBAQCBwdWJs
aWM6CiAjaWYgUExBVEZPUk0oTUFDKQogICAgIHZvaWQgZHJhd0ZvY3VzUmluZyhjb25zdCBQYXRo
JiwgZG91YmxlIHRpbWVPZmZzZXQsIGJvb2wmIG5lZWRzUmVkcmF3KTsKICAgICB2b2lkIGRyYXdG
b2N1c1JpbmcoY29uc3QgVmVjdG9yPEZsb2F0UmVjdD4mLCBkb3VibGUgdGltZU9mZnNldCwgYm9v
bCYgbmVlZHNSZWRyYXcpOworICAgIHN0YXRpYyBDR0NvbG9yUmVmIGZvY3VzUmluZ0NvbG9yKCk7
CiAjZW5kaWYKIAogICAgIHZvaWQgc2V0TGluZUNhcChMaW5lQ2FwKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcAppbmRleCA2Njk2Yzk2MGE1
ODc1ZjA0MzE3MjliMTE5YWI2YjI0MTI3ZDdhNWNhLi4wMjI4ZTM5MjlhMjY2ZWE5NzMyYmJhOGVl
NjA1NzNmYTUwOWEzNTBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9JbWFnZVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2VTb3VyY2UuY3BwCkBAIC0xODQsNyArMTg0LDcgQEAgU3Vic2FtcGxpbmdMZXZlbCBJ
bWFnZVNvdXJjZTo6c3Vic2FtcGxpbmdMZXZlbEZvclNjYWxlRmFjdG9yKEdyYXBoaWNzQ29udGV4
dCYgY28KIHsKICNpZiBVU0UoQ0cpCiAgICAgLy8gTmV2ZXIgdXNlIHN1YnNhbXBsZWQgaW1hZ2Vz
IGZvciBkcmF3aW5nIGludG8gUERGIGNvbnRleHRzLgotICAgIGlmICh3a0NHQ29udGV4dElzUERG
Q29udGV4dChjb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpKSkKKyAgICBpZiAoQ0dDb250ZXh0R2V0
VHlwZShjb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpKSA9PSBrQ0dDb250ZXh0VHlwZVBERikKICAg
ICAgICAgcmV0dXJuIFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQ7CiAKICAgICBmbG9hdCBzY2Fs
ZSA9IHN0ZDo6bWluKGZsb2F0KDEpLCBzdGQ6Om1heChzY2FsZUZhY3Rvci53aWR0aCgpLCBzY2Fs
ZUZhY3Rvci5oZWlnaHQoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCmluZGV4IGQ1ODgzOWFlNThiYjUx
MGQ1MDdkNDY1YjA2MTkyZTAyMGJhZDVhYmQuLjM3ODhiYzI0MTQyNGY1NDY3ZWYxYTIxYTI2ZWNm
ZmE0ZTgzY2EwMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAKQEAgLTk4Nyw3ICs5ODcsNyBAQCB2b2lk
IEdyYXBoaWNzQ29udGV4dDo6Y2xpcE91dChjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiAgICAgLy8g
aGFzIGNlcnRhaW4gdHJhbnNmb3JtcyB0aGF0IGFyZW4ndCBqdXN0IGEgdHJhbnNsYXRpb24gb3Ig
YSBzY2FsZS4gQW5kIGR1ZSB0byA8cmRhcjovL3Byb2JsZW0vMTQ2MzQ0NTM+CiAgICAgLy8gd2Ug
Y2Fubm90IHVzZSBpdCBpbiBmb3IgYSBwcmludGluZyBjb250ZXh0IGVpdGhlci4KICAgICBjb25z
dCBBZmZpbmVUcmFuc2Zvcm0mIGN0bSA9IGdldENUTSgpOwotICAgIGJvb2wgY2FuVXNlQ0dSZWN0
SW5maW5pdGUgPSAhd2tDR0NvbnRleHRJc1BERkNvbnRleHQocGxhdGZvcm1Db250ZXh0KCkpICYm
ICghaXNBY2NlbGVyYXRlZENvbnRleHQoKSB8fCAoIWN0bS5iKCkgJiYgIWN0bS5jKCkpKTsKKyAg
ICBib29sIGNhblVzZUNHUmVjdEluZmluaXRlID0gQ0dDb250ZXh0R2V0VHlwZShwbGF0Zm9ybUNv
bnRleHQoKSkgIT0ga0NHQ29udGV4dFR5cGVQREYgJiYgKCFpc0FjY2VsZXJhdGVkQ29udGV4dCgp
IHx8ICghY3RtLmIoKSAmJiAhY3RtLmMoKSkpOwogICAgIENHUmVjdCByZWN0c1syXSA9IHsgY2Fu
VXNlQ0dSZWN0SW5maW5pdGUgPyBDR1JlY3RJbmZpbml0ZSA6IENHQ29udGV4dEdldENsaXBCb3Vu
ZGluZ0JveChwbGF0Zm9ybUNvbnRleHQoKSksIHJlY3QgfTsKICAgICBDR0NvbnRleHRCZWdpblBh
dGgocGxhdGZvcm1Db250ZXh0KCkpOwogICAgIENHQ29udGV4dEFkZFJlY3RzKHBsYXRmb3JtQ29u
dGV4dCgpLCByZWN0cywgMik7CkBAIC0xMDkzLDcgKzEwOTMsNyBAQCBzdGF0aWMgdm9pZCBhcHBs
eVNoYWRvd09mZnNldFdvcmthcm91bmRJZk5lZWRlZChjb25zdCBHcmFwaGljc0NvbnRleHQmIGNv
bnRleHQsCiAgICAgaWYgKGNvbnRleHQuaXNBY2NlbGVyYXRlZENvbnRleHQoKSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgaWYgKHdrQ0dDb250ZXh0RHJhd3NXaXRoQ29ycmVjdFNoYWRvd09mZnNl
dHMoY29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKSkpCisgICAgaWYgKENHQ29udGV4dERyYXdzV2l0
aENvcnJlY3RTaGFkb3dPZmZzZXRzKGNvbnRleHQucGxhdGZvcm1Db250ZXh0KCkpKQogICAgICAg
ICByZXR1cm47CiAKICAgICAvLyBXb3JrIGFyb3VuZCA8cmRhcjovL3Byb2JsZW0vNTUzOTM4OD4g
YnkgZW5zdXJpbmcgdGhhdCB0aGUgb2Zmc2V0cyB3aWxsIGdldCB0cnVuY2F0ZWQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BhdHRlcm5DRy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QYXR0ZXJuQ0cuY3BwCmluZGV4IDk4
ZTY5ZGU4ZWQ4OWEyNGU4ODZhMTQyYTA4Mzk1OWUyYzcyMTM1ZjAuLmQwZTIxYzg3M2FhMmRjMzBj
NTNjYzhiYWI0ZjhiMDQxNDM0MDAwOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL1BhdHRlcm5DRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvUGF0dGVybkNHLmNwcApAQCAtMzEsOCArMzEsOCBAQAogCiAjaW5jbHVk
ZSAiQWZmaW5lVHJhbnNmb3JtLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCi0KICNp
bmNsdWRlIDxDb3JlR3JhcGhpY3MvQ29yZUdyYXBoaWNzLmg+CisjaW5jbHVkZSA8cGFsL3NwaS9j
Zy9Db3JlR3JhcGhpY3NTUEkuaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogCiAjaWYg
UExBVEZPUk0oQ09DT0EpCkBAIC03NCw3ICs3NCw3IEBAIENHUGF0dGVyblJlZiBQYXR0ZXJuOjpj
cmVhdGVQbGF0Zm9ybVBhdHRlcm4oY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB1c2VyU3BhY2VUcmFu
CiAgICAgLy8gSWYgd2UncmUgcmVwZWF0aW5nIGluIGJvdGggZGlyZWN0aW9ucywgd2UgY2FuIHVz
ZSBpbWFnZS1iYWNrZWQgcGF0dGVybnMKICAgICAvLyBpbnN0ZWFkIG9mIGN1c3RvbSBwYXR0ZXJu
cywgYW5kIGF2b2lkIHRpbGluZy1lZGdlIHBpeGVsIGNyYWNrcy4KICAgICBpZiAobV9yZXBlYXRY
ICYmIG1fcmVwZWF0WSkKLSAgICAgICAgcmV0dXJuIHdrQ0dQYXR0ZXJuQ3JlYXRlV2l0aEltYWdl
QW5kVHJhbnNmb3JtKHRpbGVJbWFnZSgpLm5hdGl2ZUltYWdlKCkuZ2V0KCksIHBhdHRlcm5UcmFu
c2Zvcm0sIHdrUGF0dGVyblRpbGluZ0NvbnN0YW50U3BhY2luZyk7CisgICAgICAgIHJldHVybiBD
R1BhdHRlcm5DcmVhdGVXaXRoSW1hZ2UyKHRpbGVJbWFnZSgpLm5hdGl2ZUltYWdlKCkuZ2V0KCks
IHBhdHRlcm5UcmFuc2Zvcm0sIGtDR1BhdHRlcm5UaWxpbmdDb25zdGFudFNwYWNpbmcpOwogCiAg
ICAgLy8gSWYgRkxUX01BWCBzaG91bGQgYWxzbyBiZSB1c2VkIGZvciB4U3RlcCBvciB5U3RlcCwg
bm90aGluZyBpcyByZW5kZXJlZC4gVXNpbmcgZnJhY3Rpb25zIG9mIEZMVF9NQVggYWxzbwogICAg
IC8vIHJlc3VsdCBpbiBub3RoaW5nIGJlaW5nIHJlbmRlcmVkLgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0Q29jb2EubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRD
b2NvYS5tbQppbmRleCA2N2Y0ZGViMTcyYjZjMGZlMjNjMWIxZDFmYjA5ZWFiOGFkYWUxMzFiLi40
NWQ3NzM5ZDY0NmQ3OGExN2U3ZDcyMTg5ZDJkN2NjMzExZGNjN2NkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRDb2NvYS5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0Nv
bnRleHRDb2NvYS5tbQpAQCAtMjksMTAgKzI5LDEzIEBACiAjaW1wb3J0ICJHcmFwaGljc0NvbnRl
eHRDRy5oIgogI2ltcG9ydCAiR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlQ0cuaCIKICNp
bXBvcnQgIkludFJlY3QuaCIKKyNpbXBvcnQgPHBhbC9zcGkvY2cvQ29yZUdyYXBoaWNzU1BJLmg+
CisjaW1wb3J0IDxwYWwvc3BpL21hYy9OU0dyYXBoaWNzU1BJLmg+CisjaW1wb3J0IDx3dGYvU3Rk
TGliRXh0cmFzLmg+CisKICNpZiBVU0UoQVBQS0lUKQogI2ltcG9ydCA8QXBwS2l0L0FwcEtpdC5o
PgogI2VuZGlmCi0jaW1wb3J0IDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKICNpZiBQTEFURk9STShJ
T1MpCiAjaW1wb3J0ICJDb2xvci5oIgpAQCAtNDMsNyArNDYsNiBAQAogI2lmICFQTEFURk9STShJ
T1MpCiAjaW1wb3J0ICJMb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHQuaCIKICNlbmRpZgotI2lt
cG9ydCAiV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oIgogCiBAY2xhc3MgTlNDb2xvcjsKIApAQCAt
NTcsMTEgKzU5LDQ3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIC8vIGV4Y2VwdGlvbnMgZm9yIHRo
b3NlLgogCiAjaWYgIVBMQVRGT1JNKElPUykKK0NHQ29sb3JSZWYgR3JhcGhpY3NDb250ZXh0Ojpm
b2N1c1JpbmdDb2xvcigpCit7CisgICAgc3RhdGljIENHQ29sb3JSZWYgY29sb3I7CisgICAgaWYg
KCFjb2xvcikgeworICAgICAgICBDR0Zsb2F0IGNvbG9yQ29tcG9uZW50c1tdID0geyAwLjUsIDAu
NzUsIDEuMCwgMS4wIH07CisgICAgICAgIGF1dG8gY29sb3JTcGFjZSA9IGFkb3B0Q0YoQ0dDb2xv
clNwYWNlQ3JlYXRlV2l0aE5hbWUoa0NHQ29sb3JTcGFjZVNSR0IpKTsKKyAgICAgICAgY29sb3Ig
PSBDR0NvbG9yQ3JlYXRlKGNvbG9yU3BhY2UuZ2V0KCksIGNvbG9yQ29tcG9uZW50cyk7CisgICAg
fQorICAgIHJldHVybiBjb2xvcjsKK30KKworc3RhdGljIGJvb2wgZHJhd0ZvY3VzUmluZ0F0VGlt
ZShDR0NvbnRleHRSZWYgY29udGV4dCwgTlNUaW1lSW50ZXJ2YWwgdGltZU9mZnNldCkKK3sKKyAg
ICBDR0ZvY3VzUmluZ1N0eWxlIGZvY3VzUmluZ1N0eWxlOworICAgIEJPT0wgbmVlZHNSZXBhaW50
ID0gTlNJbml0aWFsaXplQ0dGb2N1c1JpbmdTdHlsZUZvclRpbWUoTlNGb2N1c1JpbmdPbmx5LCAm
Zm9jdXNSaW5nU3R5bGUsIHRpbWVPZmZzZXQpOworCisgICAgLy8gV2Ugd2FudCB0byByZXNwZWN0
IHRoZSBDR0NvbnRleHQgY2xpcHBpbmcgYW5kIGFsc28gbm90IG92ZXJwYWludCBhbnkKKyAgICAv
LyBleGlzdGluZyBmb2N1cyByaW5nLiBUaGUgd2F5IHRvIGRvIHRoaXMgaXMgc2V0IGFjY3VtdWxh
dGUgdG8KKyAgICAvLyAtMS4gQWNjb3JkaW5nIHRvIENvcmVHcmFwaGljcywgdGhlIHJlYXNvbmlu
ZyBmb3IgdGhpcyBiZWhhdmlvciBoYXMgYmVlbgorICAgIC8vIGxvc3QgaW4gdGltZS4KKyAgICBm
b2N1c1JpbmdTdHlsZS5hY2N1bXVsYXRlID0gLTE7CisgICAgYXV0byBzdHlsZSA9IGFkb3B0Q0Yo
Q0dTdHlsZUNyZWF0ZUZvY3VzUmluZ1dpdGhDb2xvcigmZm9jdXNSaW5nU3R5bGUsIEdyYXBoaWNz
Q29udGV4dDo6Zm9jdXNSaW5nQ29sb3IoKSkpOworCisgICAgQ0dDb250ZXh0U2F2ZUdTdGF0ZShj
b250ZXh0KTsKKyAgICBDR0NvbnRleHRTZXRTdHlsZShjb250ZXh0LCBzdHlsZS5nZXQoKSk7Cisg
ICAgQ0dDb250ZXh0RmlsbFBhdGgoY29udGV4dCk7CisgICAgQ0dDb250ZXh0UmVzdG9yZUdTdGF0
ZShjb250ZXh0KTsKKworICAgIHJldHVybiBuZWVkc1JlcGFpbnQ7Cit9CisKK3N0YXRpYyB2b2lk
IGRyYXdGb2N1c1JpbmcoQ0dDb250ZXh0UmVmIGNvbnRleHQpCit7CisgICAgZHJhd0ZvY3VzUmlu
Z0F0VGltZShjb250ZXh0LCBEQkxfTUFYKTsKK30KKwogc3RhdGljIHZvaWQgZHJhd0ZvY3VzUmlu
Z1RvQ29udGV4dChDR0NvbnRleHRSZWYgY29udGV4dCwgQ0dQYXRoUmVmIGZvY3VzUmluZ1BhdGgp
CiB7CiAgICAgQ0dDb250ZXh0QmVnaW5QYXRoKGNvbnRleHQpOwogICAgIENHQ29udGV4dEFkZFBh
dGgoY29udGV4dCwgZm9jdXNSaW5nUGF0aCk7Ci0gICAgd2tEcmF3Rm9jdXNSaW5nKGNvbnRleHQs
IG51bGxwdHIsIDApOworICAgIGRyYXdGb2N1c1JpbmcoY29udGV4dCk7CiB9CiAKIHN0YXRpYyBi
b29sIGRyYXdGb2N1c1JpbmdUb0NvbnRleHRBdFRpbWUoQ0dDb250ZXh0UmVmIGNvbnRleHQsIENH
UGF0aFJlZiBmb2N1c1JpbmdQYXRoLCBkb3VibGUgdGltZU9mZnNldCkKQEAgLTY5LDcgKzEwNyw3
IEBAIHN0YXRpYyBib29sIGRyYXdGb2N1c1JpbmdUb0NvbnRleHRBdFRpbWUoQ0dDb250ZXh0UmVm
IGNvbnRleHQsIENHUGF0aFJlZiBmb2N1c1JpCiAgICAgVU5VU0VEX1BBUkFNKHRpbWVPZmZzZXQp
OwogICAgIENHQ29udGV4dEJlZ2luUGF0aChjb250ZXh0KTsKICAgICBDR0NvbnRleHRBZGRQYXRo
KGNvbnRleHQsIGZvY3VzUmluZ1BhdGgpOwotICAgIHJldHVybiB3a0RyYXdGb2N1c1JpbmdBdFRp
bWUoY29udGV4dCwgc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjptYXgoKSk7CisgICAgcmV0
dXJuIGRyYXdGb2N1c1JpbmdBdFRpbWUoY29udGV4dCwgc3RkOjpudW1lcmljX2xpbWl0czxkb3Vi
bGU+OjptYXgoKSk7CiB9CiAjZW5kaWYgLy8gIVBMQVRGT1JNKElPUykKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2VJT1MubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViQ29yZVN5c3RlbUludGVyZmFjZUlPUy5t
bQppbmRleCAwOWExODI4MTRkMTQwMTNiN2M4OGU4ZWViZjAzZDlhZTBjZmEyODY5Li43NTdkMDQ1
ZjVjNTg1NDQ0OTZmMmRkNjkwNTBiZDFhZjg2OGMyZWRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pb3MvV2ViQ29yZVN5c3RlbUludGVyZmFjZUlPUy5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViQ29yZVN5c3RlbUludGVyZmFjZUlPUy5tbQpAQCAt
MjcsMTAgKzI3LDggQEAKICNpbXBvcnQgIldlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaCIKIAogV0VC
Q09SRV9FWFBPUlQgdm9pZCAoKndrQ0FMYXllckVudW1lcmF0ZVJlY3RzQmVpbmdEcmF3bldpdGhC
bG9jaykoQ0FMYXllciAqLCBDR0NvbnRleHRSZWYgY29udGV4dCwgdm9pZCAoXmJsb2NrKShDR1Jl
Y3QgcmVjdCkpOwotV0VCQ09SRV9FWFBPUlQgQ0dQYXR0ZXJuUmVmICgqd2tDR1BhdHRlcm5DcmVh
dGVXaXRoSW1hZ2VBbmRUcmFuc2Zvcm0pKENHSW1hZ2VSZWYsIENHQWZmaW5lVHJhbnNmb3JtLCBp
bnQpOwogV0VCQ09SRV9FWFBPUlQgdm9pZCAoKndrQ2xlYXJHbHlwaFZlY3Rvcikodm9pZCogZ2x5
cGhzKTsKIFdFQkNPUkVfRVhQT1JUIE9TU3RhdHVzICgqd2tDb252ZXJ0Q2hhclRvR2x5cGhzKSh2
b2lkKiBzdHlsZUdyb3VwLCBjb25zdCBVbmlDaGFyKiwgdW5zaWduZWQgbnVtQ2hhcmFjdGVycywg
dm9pZCogZ2x5cGhzKTsKLVdFQkNPUkVfRVhQT1JUIGJvb2wgKCp3a0NHQ29udGV4dElzUERGQ29u
dGV4dCkoQ0dDb250ZXh0UmVmKTsKIFdFQkNPUkVfRVhQT1JUIGlkICgqd2tDcmVhdGVOU1VSTENv
bm5lY3Rpb25EZWxlZ2F0ZVByb3h5KSh2b2lkKTsKIFdFQkNPUkVfRVhQT1JUIHZvaWQgKCp3a1Nl
dENPTk5FQ1RQcm94eUZvclN0cmVhbSkoQ0ZSZWFkU3RyZWFtUmVmLCBDRlN0cmluZ1JlZiBwcm94
eUhvc3QsIENGTnVtYmVyUmVmIHByb3h5UG9ydCk7CiBXRUJDT1JFX0VYUE9SVCB2b2lkICgqd2tT
ZXRDT05ORUNUUHJveHlBdXRob3JpemF0aW9uRm9yU3RyZWFtKShDRlJlYWRTdHJlYW1SZWYsIENG
U3RyaW5nUmVmIHByb3h5QXV0aG9yaXphdGlvblN0cmluZyk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tCmluZGV4IDIwZTYzNWMwOTA1YWU4OTZjN2JiNTQy
MWM4NTZiMjFiMmE0NDZiNDkuLjk0ZjgwZTlhNTQyZTI2MWEzNWUwYTBiYTBiY2U0MTZhYjZmNTky
YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFj
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tCkBA
IC01Miw2ICs1Miw3IEBACiAjaW1wb3J0ICJXZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmgiCiAjaW1w
b3J0ICJXZWJOU0F0dHJpYnV0ZWRTdHJpbmdFeHRyYXMuaCIKICNpbXBvcnQgIm1hcmt1cC5oIgor
I2ltcG9ydCA8cGFsL3NwaS9tYWMvSElTZXJ2aWNlc1NQSS5oPgogI2ltcG9ydCA8d3RmL1JldGFp
blB0ci5oPgogI2ltcG9ydCA8d3RmL1N0ZExpYkV4dHJhcy5oPgogI2ltcG9ydCA8d3RmL3RleHQv
U3RyaW5nQnVpbGRlci5oPgpAQCAtNjY5LDYgKzY3MCw4MCBAQCBWZWN0b3I8U3RyaW5nPiBQYXN0
ZWJvYXJkOjpyZWFkRmlsZW5hbWVzKCkKIH0KIAogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCitz
dGF0aWMgdm9pZCBmbGlwSW1hZ2VTcGVjKENvcmVEcmFnSW1hZ2VTcGVjKiBpbWFnZVNwZWMpCit7
CisgICAgdW5zaWduZWQgY2hhciogdGVtcFJvdyA9ICh1bnNpZ25lZCBjaGFyKilmYXN0TWFsbG9j
KGltYWdlU3BlYy0+Ynl0ZXNQZXJSb3cpOworICAgIGludCBwbGFuZXMgPSBpbWFnZVNwZWMtPmlz
UGxhbmFyID8gaW1hZ2VTcGVjLT5zYW1wbGVzUGVyUGl4ZWwgOiAxOworCisgICAgZm9yIChpbnQg
cCA9IDA7IHAgPCBwbGFuZXM7IHArKykgeworICAgICAgICB1bnNpZ25lZCBjaGFyKiB0b3BSb3cg
PSAodW5zaWduZWQgY2hhciopaW1hZ2VTcGVjLT5kYXRhW3BdOworICAgICAgICB1bnNpZ25lZCBj
aGFyKiBib3RSb3cgPSB0b3BSb3cgKyAoaW1hZ2VTcGVjLT5waXhlbHNIaWdoIC0gMSkgKiBpbWFn
ZVNwZWMtPmJ5dGVzUGVyUm93OworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGltYWdlU3Bl
Yy0+cGl4ZWxzSGlnaCAvIDI7IGkrKywgdG9wUm93ICs9IGltYWdlU3BlYy0+Ynl0ZXNQZXJSb3cs
IGJvdFJvdyAtPSBpbWFnZVNwZWMtPmJ5dGVzUGVyUm93KSB7CisgICAgICAgICAgICBiY29weSh0
b3BSb3csICB0ZW1wUm93LCBpbWFnZVNwZWMtPmJ5dGVzUGVyUm93KTsKKyAgICAgICAgICAgIGJj
b3B5KGJvdFJvdywgIHRvcFJvdywgIGltYWdlU3BlYy0+Ynl0ZXNQZXJSb3cpOworICAgICAgICAg
ICAgYmNvcHkodGVtcFJvdywgYm90Um93LCAgaW1hZ2VTcGVjLT5ieXRlc1BlclJvdyk7CisgICAg
ICAgIH0KKyAgICB9CisKKyAgICBmYXN0RnJlZSh0ZW1wUm93KTsKK30KKworc3RhdGljIHZvaWQg
c2V0RHJhZ0ltYWdlSW1wbChOU0ltYWdlICppbWFnZSwgTlNQb2ludCBvZmZzZXQpCit7CisgICAg
Ym9vbCBmbGlwSW1hZ2U7CisgICAgTlNTaXplIGltYWdlU2l6ZSA9IGltYWdlLnNpemU7CisgICAg
Q0dSZWN0IGltYWdlUmVjdCA9IENHUmVjdE1ha2UoMCwgMCwgaW1hZ2VTaXplLndpZHRoLCBpbWFn
ZVNpemUuaGVpZ2h0KTsKKyAgICBOU0ltYWdlUmVwICppbWFnZVJlcCA9IFtpbWFnZSBiZXN0UmVw
cmVzZW50YXRpb25Gb3JSZWN0Ok5TUmVjdEZyb21DR1JlY3QoaW1hZ2VSZWN0KSBjb250ZXh0Om5p
bCBoaW50czpuaWxdOworICAgIFJldGFpblB0cjxOU0JpdG1hcEltYWdlUmVwPiBiaXRtYXBJbWFn
ZTsKKyAgICBpZiAoIWltYWdlUmVwIHx8ICFbaW1hZ2VSZXAgaXNLaW5kT2ZDbGFzczpbTlNCaXRt
YXBJbWFnZVJlcCBjbGFzc11dIHx8ICFOU0VxdWFsU2l6ZXMoaW1hZ2VSZXAuc2l6ZSwgaW1hZ2VT
aXplKSkgeworICAgICAgICBbaW1hZ2UgbG9ja0ZvY3VzXTsKKyAgICAgICAgYml0bWFwSW1hZ2Ug
PSBhZG9wdE5TKFtbTlNCaXRtYXBJbWFnZVJlcCBhbGxvY10gaW5pdFdpdGhGb2N1c2VkVmlld1Jl
Y3Q6KihOU1JlY3QgKikmaW1hZ2VSZWN0XSk7CisgICAgICAgIFtpbWFnZSB1bmxvY2tGb2N1c107
CisgICAgICAgIAorICAgICAgICAvLyB3ZSBtYXkgaGF2ZSB0byBmbGlwIHRoZSBiaXRzIHdlIGp1
c3QgcmVhZCBpZiB0aGUgaW1hZ2Ugd2FzIGZsaXBwZWQgc2luY2UgaXQgbWVhbnMgdGhlIGNhY2hl
IHdhcyBhbHNvCisgICAgICAgIC8vIGFuZCBDb3JlRHJhZ1NldEltYWdlIGNhbid0IHRha2UgYSB0
cmFuc2Zvcm0gZm9yIHJlbmRlcmluZy4KKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwdXNoCisj
cHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgaWdub3JlZCAiLVdkZXByZWNhdGVkLWRlY2xhcmF0aW9u
cyIKKyAgICAgICAgZmxpcEltYWdlID0gaW1hZ2UuaXNGbGlwcGVkOworI3ByYWdtYSBjbGFuZyBk
aWFnbm9zdGljIHBvcAorICAgIH0gZWxzZSB7CisgICAgICAgIGZsaXBJbWFnZSA9IGZhbHNlOwor
ICAgICAgICBiaXRtYXBJbWFnZSA9IChOU0JpdG1hcEltYWdlUmVwICopaW1hZ2VSZXA7CisgICAg
fQorICAgIEFTU0VSVChiaXRtYXBJbWFnZSk7CisKKyAgICBDb3JlRHJhZ0ltYWdlU3BlYyBpbWFn
ZVNwZWM7CisgICAgaW1hZ2VTcGVjLnZlcnNpb24gPSBrQ29yZURyYWdJbWFnZVNwZWNWZXJzaW9u
T25lOworICAgIGltYWdlU3BlYy5waXhlbHNXaWRlID0gW2JpdG1hcEltYWdlIHBpeGVsc1dpZGVd
OworICAgIGltYWdlU3BlYy5waXhlbHNIaWdoID0gW2JpdG1hcEltYWdlIHBpeGVsc0hpZ2hdOwor
ICAgIGltYWdlU3BlYy5iaXRzUGVyU2FtcGxlID0gW2JpdG1hcEltYWdlIGJpdHNQZXJTYW1wbGVd
OworICAgIGltYWdlU3BlYy5zYW1wbGVzUGVyUGl4ZWwgPSBbYml0bWFwSW1hZ2Ugc2FtcGxlc1Bl
clBpeGVsXTsKKyAgICBpbWFnZVNwZWMuYml0c1BlclBpeGVsID0gW2JpdG1hcEltYWdlIGJpdHNQ
ZXJQaXhlbF07CisgICAgaW1hZ2VTcGVjLmJ5dGVzUGVyUm93ID0gW2JpdG1hcEltYWdlIGJ5dGVz
UGVyUm93XTsKKyAgICBpbWFnZVNwZWMuaXNQbGFuYXIgPSBbYml0bWFwSW1hZ2UgaXNQbGFuYXJd
OworICAgIGltYWdlU3BlYy5oYXNBbHBoYSA9IFtiaXRtYXBJbWFnZSBoYXNBbHBoYV07CisgICAg
W2JpdG1hcEltYWdlIGdldEJpdG1hcERhdGFQbGFuZXM6KHVuc2lnbmVkIGNoYXIqKilpbWFnZVNw
ZWMuZGF0YV07CisKKyAgICAvLyBpZiBpbWFnZSB3YXMgZmxpcHBlZCwgd2UgaGF2ZSBhbiB1cHNp
ZGUgZG93biBiaXRtYXAgc2luY2UgdGhlIGNhY2hlIGlzIHJlbmRlcmVkIGZsaXBwZWQKKyAgICBp
ZiAoZmxpcEltYWdlKQorICAgICAgICBmbGlwSW1hZ2VTcGVjKCZpbWFnZVNwZWMpOworCisgICAg
Q0dTUmVnaW9uT2JqIGltYWdlU2hhcGU7CisgICAgT1NTdGF0dXMgZXJyb3IgPSBDR1NOZXdSZWdp
b25XaXRoUmVjdCgmaW1hZ2VSZWN0LCAmaW1hZ2VTaGFwZSk7CisgICAgQVNTRVJUKGVycm9yID09
IGtDR0Vycm9yU3VjY2Vzcyk7CisgICAgaWYgKGVycm9yICE9IGtDR0Vycm9yU3VjY2VzcykKKyAg
ICAgICAgcmV0dXJuOworCisgICAgLy8gbWFrZSBzdXJlIGltYWdlIGhhcyBpbnRlZ2VyIG9mZnNl
dAorICAgIENHUG9pbnQgaW1hZ2VPZmZzZXQgPSB7LW9mZnNldC54LCAtKGltYWdlU2l6ZS5oZWln
aHQgLSBvZmZzZXQueSl9OworICAgIGltYWdlT2Zmc2V0LnggPSBmbG9vcihpbWFnZU9mZnNldC54
ICsgMC41KTsKKyAgICBpbWFnZU9mZnNldC55ID0gZmxvb3IoaW1hZ2VPZmZzZXQueSArIDAuNSk7
CisKKyAgICBlcnJvciA9IENvcmVEcmFnU2V0SW1hZ2UoQ29yZURyYWdHZXRDdXJyZW50RHJhZygp
LCBpbWFnZU9mZnNldCwgJmltYWdlU3BlYywgaW1hZ2VTaGFwZSwgMS4wKTsKKyAgICBDR1NSZWxl
YXNlUmVnaW9uKGltYWdlU2hhcGUpOworICAgIEFTU0VSVChlcnJvciA9PSBrQ0dFcnJvclN1Y2Nl
c3MpOworfQorCiB2b2lkIFBhc3RlYm9hcmQ6OnNldERyYWdJbWFnZShEcmFnSW1hZ2UgaW1hZ2Us
IGNvbnN0IEludFBvaW50JiBsb2NhdGlvbikKIHsKICAgICAvLyBEb24ndCBhbGxvdyBzZXR0aW5n
IHRoZSBkcmFnIGltYWdlIGlmIHNvbWVvbmUga2VwdCBhIHBhc3RlYm9hcmQgYW5kIGlzIHRyeWlu
ZyB0byBzZXQgdGhlIGltYWdlIHRvbyBsYXRlLgpAQCAtNjc3LDcgKzc1Miw3IEBAIHZvaWQgUGFz
dGVib2FyZDo6c2V0RHJhZ0ltYWdlKERyYWdJbWFnZSBpbWFnZSwgY29uc3QgSW50UG9pbnQmIGxv
Y2F0aW9uKQogCiAgICAgLy8gRGFzaGJvYXJkIHdhbnRzIHRvIGJlIGFibGUgdG8gc2V0IHRoZSBk
cmFnIGltYWdlIGR1cmluZyBkcmFnZ2luZywgYnV0IENvY29hIGRvZXMgbm90IGFsbG93IHRoaXMu
CiAgICAgLy8gSW5zdGVhZCB3ZSBtdXN0IGRyb3AgZG93biB0byB0aGUgQ29yZUdyYXBoaWNzIEFQ
SS4KLSAgICB3a1NldERyYWdJbWFnZShpbWFnZS5nZXQoKS5nZXQoKSwgbG9jYXRpb24pOworICAg
IHNldERyYWdJbWFnZUltcGwoaW1hZ2UuZ2V0KCkuZ2V0KCksIGxvY2F0aW9uKTsKIAogICAgIC8v
IEhhY2s6IFdlIG11c3QgcG9zdCBhbiBldmVudCB0byB3YWtlIHVwIHRoZSBOU0RyYWdNYW5hZ2Vy
LCB3aGljaCBpcyBzaXR0aW5nIGluIGEgbmV4dEV2ZW50IGNhbGwKICAgICAvLyB1cCB0aGUgc3Rh
Y2sgZnJvbSB1cyBiZWNhdXNlIHRoZSBDb3JlRm91bmRhdGlvbiBkcmFnIG1hbmFnZXIgZG9lcyBu
b3QgdXNlIHRoZSBydW4gbG9vcCBieSBpdHNlbGYuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1FdmVudEZhY3RvcnlNYWMubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1FdmVudEZhY3RvcnlNYWMubW0KaW5kZXggYmMxZTM2N2Zj
NDY5NGVhZjQ2MGFiMGVhNWE0MjMwZDAwMDAxYWM4OS4uNTAwMTAwOWYyMTE5NDVkYTk3NzhhM2Vh
YWY5OWVkODMxMmZkNzc1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFj
L1BsYXRmb3JtRXZlbnRGYWN0b3J5TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21hYy9QbGF0Zm9ybUV2ZW50RmFjdG9yeU1hYy5tbQpAQCAtNjczLDcgKzY3Myw3IEBAIHN0YXRp
YyBpbnQgdHlwZUZvckV2ZW50KE5TRXZlbnQgKmV2ZW50KQogewogICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxpbnQ+KFtOU01lbnUgbWVudVR5cGVGb3JFdmVudDpldmVudF0pOwogfQotICAgIAorCiBj
bGFzcyBQbGF0Zm9ybU1vdXNlRXZlbnRCdWlsZGVyIDogcHVibGljIFBsYXRmb3JtTW91c2VFdmVu
dCB7CiBwdWJsaWM6CiAgICAgUGxhdGZvcm1Nb3VzZUV2ZW50QnVpbGRlcihOU0V2ZW50ICpldmVu
dCwgTlNFdmVudCAqY29ycmVzcG9uZGluZ1ByZXNzdXJlRXZlbnQsIE5TVmlldyAqd2luZG93Vmll
dykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxiYXJUaGVt
ZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxiYXJUaGVtZU1hYy5t
bQppbmRleCBjNGMyODc3NjgzNTc0OTZhZWIyODhmYTQxZjBkZDk1ZDJkN2NjMjg4Li42ZDA1Yjg2
YzYzZDA1ZjdiNmQxNDczMTdlZmQyN2ZmMzQxNTgzMTkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsYmFyVGhlbWVNYWMubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWFjL1Njcm9sbGJhclRoZW1lTWFjLm1tCkBAIC0zNiw2ICszNiw3IEBACiAj
aW5jbHVkZSAiU2Nyb2xsVmlldy5oIgogI2luY2x1ZGUgIldlYkNvcmVTeXN0ZW1JbnRlcmZhY2Uu
aCIKICNpbmNsdWRlIDxDYXJib24vQ2FyYm9uLmg+CisjaW5jbHVkZSA8cGFsL3NwaS9jZy9Db3Jl
R3JhcGhpY3NTUEkuaD4KICNpbmNsdWRlIDxwYWwvc3BpL21hYy9OU1Njcm9sbGVySW1wU1BJLmg+
CiAjaW5jbHVkZSA8d3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMuaD4KICNpbmNsdWRlIDx3dGYvSGFz
aE1hcC5oPgpAQCAtNTczLDcgKzU3NCw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8Q0dDb2xvclJlZj4g
bGluZW5CYWNrZ3JvdW5kQ29sb3IoKQogICAgIGlmICghY2dJbWFnZSkKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAKLSAgICBSZXRhaW5QdHI8Q0dQYXR0ZXJuUmVmPiBwYXR0ZXJuID0gYWRvcHRD
Rih3a0NHUGF0dGVybkNyZWF0ZVdpdGhJbWFnZUFuZFRyYW5zZm9ybShjZ0ltYWdlLCBDR0FmZmlu
ZVRyYW5zZm9ybUlkZW50aXR5LCB3a1BhdHRlcm5UaWxpbmdOb0Rpc3RvcnRpb24pKTsKKyAgICBS
ZXRhaW5QdHI8Q0dQYXR0ZXJuUmVmPiBwYXR0ZXJuID0gYWRvcHRDRihDR1BhdHRlcm5DcmVhdGVX
aXRoSW1hZ2UyKGNnSW1hZ2UsIENHQWZmaW5lVHJhbnNmb3JtSWRlbnRpdHksIGtDR1BhdHRlcm5U
aWxpbmdOb0Rpc3RvcnRpb24pKTsKICAgICBSZXRhaW5QdHI8Q0dDb2xvclNwYWNlUmVmPiBjb2xv
clNwYWNlID0gYWRvcHRDRihDR0NvbG9yU3BhY2VDcmVhdGVQYXR0ZXJuKDApKTsKIAogICAgIGNv
bnN0IENHRmxvYXQgYWxwaGEgPSAxLjA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tYWMvVGhlbWVNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvVGhlbWVN
YWMubW0KaW5kZXggOTBmMTA0MWVmZjdmMGM2NDdkNmY4MzkxYzAyN2Y1M2QxYWI0NDcxNC4uOGEx
OTI2NWNmNWQ4MmYyMDI1ZmY1MDFlZWUyZWY5NTFmODQzNzg1MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWFjL1RoZW1lTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21hYy9UaGVtZU1hYy5tbQpAQCAtMzYsNiArMzYsNyBAQAogI2ltcG9ydCAiV2ViQ29y
ZVN5c3RlbUludGVyZmFjZS5oIgogI2ltcG9ydCA8Q2FyYm9uL0NhcmJvbi5oPgogI2ltcG9ydCA8
cGFsL3NwaS9jb2NvYS9OU0J1dHRvbkNlbGxTUEkuaD4KKyNpbXBvcnQgPHBhbC9zcGkvbWFjL05T
R3JhcGhpY3NTUEkuaD4KICNpbXBvcnQgPHd0Zi9CbG9ja09iakNFeGNlcHRpb25zLmg+CiAjaW1w
b3J0IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbXBvcnQgPHd0Zi9TdGRMaWJFeHRyYXMuaD4K
QEAgLTM0OSw5ICszNTAsMzIgQEAgc3RhdGljIE5TQnV0dG9uQ2VsbCAqc2hhcmVkQ2hlY2tib3hD
ZWxsKGNvbnN0IENvbnRyb2xTdGF0ZXMmIHN0YXRlcywgY29uc3QgSW50U2kKICAgICByZXR1cm4g
Y2hlY2tib3hDZWxsOwogfQogCitzdGF0aWMgYm9vbCBkcmF3Q2VsbEZvY3VzUmluZ1dpdGhGcmFt
ZUF0VGltZShOU0NlbGwgKmNlbGwsIE5TUmVjdCBjZWxsRnJhbWUsIE5TVmlldyAqY29udHJvbFZp
ZXcsIE5TVGltZUludGVydmFsIHRpbWVPZmZzZXQpCit7CisgICAgQ0dDb250ZXh0UmVmIGNnQ29u
dGV4dCA9IChDR0NvbnRleHRSZWYpW1tOU0dyYXBoaWNzQ29udGV4dCBjdXJyZW50Q29udGV4dF0g
Z3JhcGhpY3NQb3J0XTsKKyAgICBDR0NvbnRleHRTYXZlR1N0YXRlKGNnQ29udGV4dCk7CisKKyAg
ICBDR0ZvY3VzUmluZ1N0eWxlIGZvY3VzUmluZ1N0eWxlOworICAgIGJvb2wgbmVlZHNSZXBhaW50
ID0gTlNJbml0aWFsaXplQ0dGb2N1c1JpbmdTdHlsZUZvclRpbWUoTlNGb2N1c1JpbmdPbmx5LCAm
Zm9jdXNSaW5nU3R5bGUsIHRpbWVPZmZzZXQpOworICAgIC8vIFdlIHdhbnQgdG8gcmVzcGVjdCB0
aGUgQ0dDb250ZXh0IGNsaXBwaW5nIGFuZCBhbHNvIG5vdCBvdmVycGFpbnQgYW55CisgICAgLy8g
ZXhpc3RpbmcgZm9jdXMgcmluZy4gVGhlIHdheSB0byBkbyB0aGlzIGlzIHNldCBhY2N1bXVsYXRl
IHRvCisgICAgLy8gLTEuIEFjY29yZGluZyB0byBDb3JlR3JhcGhpY3MsIHRoZSByZWFzb25pbmcg
Zm9yIHRoaXMgYmVoYXZpb3IgaGFzIGJlZW4KKyAgICAvLyBsb3N0IGluIHRpbWUuCisgICAgZm9j
dXNSaW5nU3R5bGUuYWNjdW11bGF0ZSA9IC0xOworICAgIGF1dG8gc3R5bGUgPSBhZG9wdENGKENH
U3R5bGVDcmVhdGVGb2N1c1JpbmdXaXRoQ29sb3IoJmZvY3VzUmluZ1N0eWxlLCBHcmFwaGljc0Nv
bnRleHQ6OmZvY3VzUmluZ0NvbG9yKCkpKTsKKyAgICBDR0NvbnRleHRTZXRTdHlsZShjZ0NvbnRl
eHQsIHN0eWxlLmdldCgpKTsKKworICAgIENHQ29udGV4dEJlZ2luVHJhbnNwYXJlbmN5TGF5ZXJX
aXRoUmVjdChjZ0NvbnRleHQsIE5TUmVjdFRvQ0dSZWN0KGNlbGxGcmFtZSksIDApOworICAgIFtj
ZWxsIGRyYXdGb2N1c1JpbmdNYXNrV2l0aEZyYW1lOmNlbGxGcmFtZSBpblZpZXc6Y29udHJvbFZp
ZXddOworICAgIENHQ29udGV4dEVuZFRyYW5zcGFyZW5jeUxheWVyKGNnQ29udGV4dCk7CisgICAg
Q0dDb250ZXh0UmVzdG9yZUdTdGF0ZShjZ0NvbnRleHQpOworCisgICAgcmV0dXJuIG5lZWRzUmVw
YWludDsKK30KKwogc3RhdGljIGJvb2wgZHJhd0NlbGxGb2N1c1JpbmcoTlNDZWxsICpjZWxsLCBO
U1JlY3QgY2VsbEZyYW1lLCBOU1ZpZXcgKmNvbnRyb2xWaWV3KQogewotICAgIHdrRHJhd0NlbGxG
b2N1c1JpbmdXaXRoRnJhbWVBdFRpbWUoY2VsbCwgY2VsbEZyYW1lLCBjb250cm9sVmlldywgc3Rk
OjpudW1lcmljX2xpbWl0czxkb3VibGU+OjptYXgoKSk7CisgICAgZHJhd0NlbGxGb2N1c1JpbmdX
aXRoRnJhbWVBdFRpbWUoY2VsbCwgY2VsbEZyYW1lLCBjb250cm9sVmlldywgc3RkOjpudW1lcmlj
X2xpbWl0czxkb3VibGU+OjptYXgoKSk7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZVN5c3RlbUludGVyZmFjZS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaApp
bmRleCA5M2NkZmQwYzdhYjFlOTY4MDEwNmNhNjQ4NTQ0ODU2NmI3NDQ0ZTQ2Li42YmQxNGNkYjJi
MGVlNjA5MDE0ZWQyNzkxNzVkNDcxNWQ3ZDBlOWFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmgKQEAgLTEyNiwxNCArMTI2
LDcgQEAgdHlwZWRlZiBlbnVtIHsKICAgICB3a1BhdHRlcm5UaWxpbmdDb25zdGFudFNwYWNpbmcK
IH0gd2tQYXR0ZXJuVGlsaW5nOwogI2lmICFQTEFURk9STShJT1MpCi1leHRlcm4gYm9vbCAoKndr
Q0dDb250ZXh0RHJhd3NXaXRoQ29ycmVjdFNoYWRvd09mZnNldHMpKENHQ29udGV4dFJlZik7Ci0j
ZW5kaWYKLWV4dGVybiBDR1BhdHRlcm5SZWYgKCp3a0NHUGF0dGVybkNyZWF0ZVdpdGhJbWFnZUFu
ZFRyYW5zZm9ybSkoQ0dJbWFnZVJlZiwgQ0dBZmZpbmVUcmFuc2Zvcm0sIGludCk7Ci0jaWYgIVBM
QVRGT1JNKElPUykKIGV4dGVybiB2b2lkICgqd2tEcmF3QmV6ZWxlZFRleHRBcmVhKShOU1JlY3Qs
IEJPT0wgZW5hYmxlZCk7Ci1leHRlcm4gdm9pZCAoKndrRHJhd0ZvY3VzUmluZykoQ0dDb250ZXh0
UmVmLCBDR0NvbG9yUmVmLCBpbnQpOwotZXh0ZXJuIGJvb2wgKCp3a0RyYXdGb2N1c1JpbmdBdFRp
bWUpKENHQ29udGV4dFJlZiwgTlNUaW1lSW50ZXJ2YWwgdGltZSk7Ci1leHRlcm4gYm9vbCAoKndr
RHJhd0NlbGxGb2N1c1JpbmdXaXRoRnJhbWVBdFRpbWUpKE5TQ2VsbCAqY2VsbCwgTlNSZWN0IGNl
bGxGcmFtZSwgTlNWaWV3ICpjb250cm9sVmlldywgTlNUaW1lSW50ZXJ2YWwgdGltZSk7CiBleHRl
cm4gdm9pZCAoKndrRHJhd01lZGlhU2xpZGVyVHJhY2spKENHQ29udGV4dFJlZiBjb250ZXh0LCBD
R1JlY3QgcmVjdCwgZmxvYXQgdGltZUxvYWRlZCwgZmxvYXQgY3VycmVudFRpbWUsCiAgICAgZmxv
YXQgZHVyYXRpb24sIHVuc2lnbmVkIHN0YXRlKTsKIGV4dGVybiB2b2lkICgqd2tEcmF3TWVkaWFV
SVBhcnQpKGludCBwYXJ0LCBDR0NvbnRleHRSZWYgY29udGV4dCwgQ0dSZWN0IHJlY3QsIHVuc2ln
bmVkIHN0YXRlKTsKQEAgLTE1Nyw5ICsxNTAsNiBAQCB0eXBlZGVmIGVudW0gewogfSB3a01lZGlh
VUlDb250cm9sVHlwZTsKIGV4dGVybiBOU0NvbnRyb2wgKigqd2tDcmVhdGVNZWRpYVVJQ29udHJv
bCkoaW50KTsKIAotZXh0ZXJuIHZvaWQgKCp3a1dpbmRvd1NldEFscGhhKShOU1dpbmRvdyAqLCBm
bG9hdCk7Ci1leHRlcm4gdm9pZCAoKndrV2luZG93U2V0U2NhbGVkRnJhbWUpKE5TV2luZG93ICos
IE5TUmVjdCwgTlNSZWN0KTsKLQogZXh0ZXJuIHVuc2lnbmVkICgqd2tRVEluY2x1ZGVPbmx5TW9k
ZXJuTWVkaWFGaWxlVHlwZXMpKHZvaWQpOwogZXh0ZXJuIHZvaWQgKCp3a1FUTW92aWVEaXNhYmxl
Q29tcG9uZW50KSh1aW50MzJfdFs1XSk7CiBleHRlcm4gZmxvYXQgKCp3a1FUTW92aWVNYXhUaW1l
TG9hZGVkKShRVE1vdmllKik7CkBAIC0xNzMsOSArMTYzLDcgQEAgZXh0ZXJuIE5TQXJyYXkgKigq
d2tRVEdldFNpdGVzSW5NZWRpYURvd25sb2FkQ2FjaGUpKCk7CiBleHRlcm4gdm9pZCAoKndrUVRD
bGVhck1lZGlhRG93bmxvYWRDYWNoZUZvclNpdGUpKE5TU3RyaW5nICpzaXRlKTsKIGV4dGVybiB2
b2lkICgqd2tRVENsZWFyTWVkaWFEb3dubG9hZENhY2hlKSgpOwogZXh0ZXJuIHZvaWQgKCp3a1Nl
dENvb2tpZVN0b3JhZ2VQcml2YXRlQnJvd3NpbmdFbmFibGVkKShCT09MKTsKLWV4dGVybiB2b2lk
ICgqd2tTZXREcmFnSW1hZ2UpKE5TSW1hZ2UqLCBOU1BvaW50IG9mZnNldCk7CiAjZW5kaWYKLWV4
dGVybiBib29sICgqd2tDR0NvbnRleHRJc1BERkNvbnRleHQpKENHQ29udGV4dFJlZik7CiBleHRl
cm4gdm9pZCAoKndrU2V0Q09OTkVDVFByb3h5Rm9yU3RyZWFtKShDRlJlYWRTdHJlYW1SZWYsIENG
U3RyaW5nUmVmIHByb3h5SG9zdCwgQ0ZOdW1iZXJSZWYgcHJveHlQb3J0KTsKIGV4dGVybiB2b2lk
ICgqd2tTZXRDT05ORUNUUHJveHlBdXRob3JpemF0aW9uRm9yU3RyZWFtKShDRlJlYWRTdHJlYW1S
ZWYsIENGU3RyaW5nUmVmIHByb3h5QXV0aG9yaXphdGlvblN0cmluZyk7CiBleHRlcm4gQ0ZIVFRQ
TWVzc2FnZVJlZiAoKndrQ29weUNPTk5FQ1RQcm94eVJlc3BvbnNlKShDRlJlYWRTdHJlYW1SZWYs
IENGVVJMUmVmIHJlc3BvbnNlVVJMLCBDRlN0cmluZ1JlZiBwcm94eUhvc3QsIENGTnVtYmVyUmVm
IHByb3h5UG9ydCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2Vi
Q29yZVN5c3RlbUludGVyZmFjZS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJD
b3JlU3lzdGVtSW50ZXJmYWNlLm1tCmluZGV4IDY0OWQ3YTY3Y2Q2NzY1NGEyYTNlMzk0ZTkzNWY4
YzUyNmZhMzkyNWEuLmI0YjVjMDA4NmM0MmUyZDQzZDMwNmI5MmY2MTQyNmY0N2M5MzZiODIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlU3lzdGVtSW50ZXJm
YWNlLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlU3lzdGVtSW50
ZXJmYWNlLm1tCkBAIC0zMSwxMiArMzEsNyBAQAogI2ltcG9ydCA8Rm91bmRhdGlvbi9Gb3VuZGF0
aW9uLmg+CiAKIHZvaWQgKCp3a0NBTGF5ZXJFbnVtZXJhdGVSZWN0c0JlaW5nRHJhd25XaXRoQmxv
Y2spKENBTGF5ZXIgKiwgQ0dDb250ZXh0UmVmIGNvbnRleHQsIHZvaWQgKF5ibG9jaykoQ0dSZWN0
IHJlY3QpKTsKLWJvb2wgKCp3a0NHQ29udGV4dERyYXdzV2l0aENvcnJlY3RTaGFkb3dPZmZzZXRz
KShDR0NvbnRleHRSZWYpOwotQ0dQYXR0ZXJuUmVmICgqd2tDR1BhdHRlcm5DcmVhdGVXaXRoSW1h
Z2VBbmRUcmFuc2Zvcm0pKENHSW1hZ2VSZWYsIENHQWZmaW5lVHJhbnNmb3JtLCBpbnQpOwogdm9p
ZCAoKndrRHJhd0JlemVsZWRUZXh0QXJlYSkoTlNSZWN0LCBCT09MIGVuYWJsZWQpOwotdm9pZCAo
KndrRHJhd0ZvY3VzUmluZykoQ0dDb250ZXh0UmVmLCBDR0NvbG9yUmVmLCBpbnQpOwotYm9vbCAo
KndrRHJhd0ZvY3VzUmluZ0F0VGltZSkoQ0dDb250ZXh0UmVmLCBOU1RpbWVJbnRlcnZhbCk7Ci1i
b29sICgqd2tEcmF3Q2VsbEZvY3VzUmluZ1dpdGhGcmFtZUF0VGltZSkoTlNDZWxsKiwgTlNSZWN0
LCBOU1ZpZXcqLCBOU1RpbWVJbnRlcnZhbCk7CiB2b2lkICgqd2tEcmF3TWVkaWFTbGlkZXJUcmFj
aykoQ0dDb250ZXh0UmVmIGNvbnRleHQsIENHUmVjdCByZWN0LCBmbG9hdCB0aW1lTG9hZGVkLCBm
bG9hdCBjdXJyZW50VGltZSwKICAgICBmbG9hdCBkdXJhdGlvbiwgdW5zaWduZWQgc3RhdGUpOwog
Qk9PTCAoKndrSGl0VGVzdE1lZGlhVUlQYXJ0KShpbnQgcGFydCwgQ0dSZWN0IGJvdW5kcywgQ0dQ
b2ludCBwb2ludCk7CkBAIC00NCw4ICszOSw2IEBAIHZvaWQgKCp3a0RyYXdNZWRpYVVJUGFydCko
aW50IHBhcnQsIENHQ29udGV4dFJlZiBjb250ZXh0LCBDR1JlY3QgcmVjdCwgdW5zaWduZWQKIHZv
aWQgKCp3a01lYXN1cmVNZWRpYVVJUGFydCkoaW50IHBhcnQsIENHUmVjdCAqYm91bmRzLCBDR1Np
emUgKm5hdHVyYWxTaXplKTsKIE5TVmlldyAqKCp3a0NyZWF0ZU1lZGlhVUlCYWNrZ3JvdW5kVmll
dykodm9pZCk7CiBOU0NvbnRyb2wgKigqd2tDcmVhdGVNZWRpYVVJQ29udHJvbCkoaW50KTsKLXZv
aWQgKCp3a1dpbmRvd1NldEFscGhhKShOU1dpbmRvdyAqLCBmbG9hdCk7Ci12b2lkICgqd2tXaW5k
b3dTZXRTY2FsZWRGcmFtZSkoTlNXaW5kb3cgKiwgTlNSZWN0LCBOU1JlY3QpOwogTlNUaW1lSW50
ZXJ2YWwgKCp3a0dldE5TVVJMUmVzcG9uc2VDYWxjdWxhdGVkRXhwaXJhdGlvbikoTlNVUkxSZXNw
b25zZSAqcmVzcG9uc2UpOwogQk9PTCAoKndrR2V0TlNVUkxSZXNwb25zZU11c3RSZXZhbGlkYXRl
KShOU1VSTFJlc3BvbnNlICpyZXNwb25zZSk7CiB2b2lkICgqd2tHZXRXaGVlbEV2ZW50RGVsdGFz
KShOU0V2ZW50KiwgZmxvYXQqIGRlbHRhWCwgZmxvYXQqIGRlbHRhWSwgQk9PTCogY29udGludW91
cyk7CkBAIC02NCw4ICs1Nyw2IEBAIE5TQXJyYXkgKigqd2tRVEdldFNpdGVzSW5NZWRpYURvd25s
b2FkQ2FjaGUpKCk7CiB2b2lkICgqd2tRVENsZWFyTWVkaWFEb3dubG9hZENhY2hlRm9yU2l0ZSko
TlNTdHJpbmcgKnNpdGUpOwogdm9pZCAoKndrUVRDbGVhck1lZGlhRG93bmxvYWRDYWNoZSkoKTsK
IAotdm9pZCAoKndrU2V0RHJhZ0ltYWdlKShOU0ltYWdlKiwgTlNQb2ludCBvZmZzZXQpOwotYm9v
bCAoKndrQ0dDb250ZXh0SXNQREZDb250ZXh0KShDR0NvbnRleHRSZWYpOwogdm9pZCAoKndrU2V0
Q09OTkVDVFByb3h5Rm9yU3RyZWFtKShDRlJlYWRTdHJlYW1SZWYsIENGU3RyaW5nUmVmIHByb3h5
SG9zdCwgQ0ZOdW1iZXJSZWYgcHJveHlQb3J0KTsKIHZvaWQgKCp3a1NldENPTk5FQ1RQcm94eUF1
dGhvcml6YXRpb25Gb3JTdHJlYW0pKENGUmVhZFN0cmVhbVJlZiwgQ0ZTdHJpbmdSZWYgcHJveHlB
dXRob3JpemF0aW9uU3RyaW5nKTsKIENGSFRUUE1lc3NhZ2VSZWYgKCp3a0NvcHlDT05ORUNUUHJv
eHlSZXNwb25zZSkoQ0ZSZWFkU3RyZWFtUmVmLCBDRlVSTFJlZiByZXNwb25zZVVSTCwgQ0ZTdHJp
bmdSZWYgcHJveHlIb3N0LCBDRk51bWJlclJlZiBwcm94eVBvcnQpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYldpbmRvd0FuaW1hdGlvbi5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJXaW5kb3dBbmltYXRpb24ubW0KaW5kZXggOGFiYzg0MGI3
M2NjNjQ1YzhhYzQwNmRlYWZhZTk0MjJjZGMzNTNlMi4uY2E1NTlkZjBiY2E5YjYyNGRlMmZjMDQy
YTJmM2ExNTZjODcwYTgyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFj
L1dlYldpbmRvd0FuaW1hdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMv
V2ViV2luZG93QW5pbWF0aW9uLm1tCkBAIC0yOSw2ICsyOSw3IEBACiAKICNpbXBvcnQgIkZsb2F0
Q29udmVyc2lvbi5oIgogI2ltcG9ydCAiV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oIgorI2ltcG9y
dCA8cGFsL3NwaS9jZy9Db3JlR3JhcGhpY3NTUEkuaD4KICNpbXBvcnQgPHd0Zi9Bc3NlcnRpb25z
Lmg+CiAjaW1wb3J0IDx3dGYvTWF0aEV4dHJhcy5oPgogCkBAIC0xMDksNiArMTEwLDU5IEBAIC0g
KE5TUmVjdCljdXJyZW50RnJhbWUKICAgICByZXR1cm4gc2NhbGVkUmVjdChfZmluYWxGcmFtZSwg
X2luaXRpYWxGcmFtZSwgW3NlbGYgY3VycmVudFZhbHVlXSk7CiB9CiAKK3N0YXRpYyB2b2lkIGZs
aXBSZWN0KE5TUmVjdCAqcmVjdCkKK3sKKyAgICByZWN0LT5vcmlnaW4ueSA9IE5TTWF4WShbKE5T
U2NyZWVuICopW1tOU1NjcmVlbiBzY3JlZW5zXSBvYmplY3RBdEluZGV4OjBdIGZyYW1lXSkgLSBO
U01heFkoKnJlY3QpOworfQorCitzdGF0aWMgQ0dTQ29ubmVjdGlvbklEIG1haW5XaW5kb3dTZXJ2
ZXJDb25uZWN0aW9uSUQoKQoreworICAgIHN0YXRpYyBDR1NDb25uZWN0aW9uSUQgY2dzSWQ7Cisg
ICAgaWYgKCFjZ3NJZCkKKyAgICAgICAgY2dzSWQgPSBDR1NNYWluQ29ubmVjdGlvbklEKCk7Cisg
ICAgcmV0dXJuIGNnc0lkOworfQorCitzdGF0aWMgdm9pZCBzZXRTY2FsZWRGcmFtZUZvcldpbmRv
dyhOU1dpbmRvdyAqd2luZG93LCBOU1JlY3Qgc2NhbGVGcmFtZSwgTlNSZWN0IG5vblNjYWxlZEZy
YW1lKQoreworICAgIGlmIChOU0VxdWFsUmVjdHMoc2NhbGVGcmFtZSwgbm9uU2NhbGVkRnJhbWUp
KSB7CisgICAgICAgIENHU1NldFdpbmRvd1dhcnAobWFpbldpbmRvd1NlcnZlckNvbm5lY3Rpb25J
RCgpLCBbd2luZG93IHdpbmRvd051bWJlcl0sIDAsIDAsIE5VTEwpOworICAgICAgICByZXR1cm47
CisgICAgfQorICAgIAorICAgIGZsb2F0IG1lc2hbMTZdOworICAgIAorICAgIGZsaXBSZWN0KCZz
Y2FsZUZyYW1lKTsKKyAgICBmbGlwUmVjdCgmbm9uU2NhbGVkRnJhbWUpOworICAgIAorICAgIC8v
IHRvcC1sZWZ0IHBvaW50ICh0byBhbmQgZnJvbSkKKyAgICBtZXNoWzBdID0gMDsKKyAgICBtZXNo
WzFdID0gMDsKKyAgICBtZXNoWzJdID0gTlNNaW5YKHNjYWxlRnJhbWUpOworICAgIG1lc2hbM10g
PSBOU01pblkoc2NhbGVGcmFtZSk7CisgICAgCisgICAgLy8gdG9wLXJpZ2h0IHBvaW50ICh0byBh
bmQgZnJvbSkKKyAgICBtZXNoWzRdID0gTlNXaWR0aChub25TY2FsZWRGcmFtZSk7CisgICAgbWVz
aFs1XSA9IDA7CisgICAgbWVzaFs2XSA9IE5TTWF4WChzY2FsZUZyYW1lKTsKKyAgICBtZXNoWzdd
ID0gTlNNaW5ZKHNjYWxlRnJhbWUpOworICAgIAorICAgIC8vIGJvdHRvbS1sZWZ0ICh0byBhbmQg
ZnJvbSkKKyAgICBtZXNoWzhdID0gMDsKKyAgICBtZXNoWzldID0gTlNIZWlnaHQobm9uU2NhbGVk
RnJhbWUpOworICAgIG1lc2hbMTBdID0gTlNNaW5YKHNjYWxlRnJhbWUpOworICAgIG1lc2hbMTFd
ID0gTlNNYXhZKHNjYWxlRnJhbWUpOworICAgIAorICAgIC8vIGJvdHRvbS1yaWdodCAodG8gYW5k
IGZyb20pCisgICAgbWVzaFsxMl0gPSBOU1dpZHRoKG5vblNjYWxlZEZyYW1lKTsKKyAgICBtZXNo
WzEzXSA9IE5TSGVpZ2h0KG5vblNjYWxlZEZyYW1lKTsKKyAgICBtZXNoWzE0XSA9IE5TTWF4WChz
Y2FsZUZyYW1lKTsKKyAgICBtZXNoWzE1XSA9IE5TTWF4WShzY2FsZUZyYW1lKTsKKyAgICAKKyAg
ICAvLyBBcHBseSB0aGUgd2FycC4KKyAgICBDR1NTZXRXaW5kb3dXYXJwKG1haW5XaW5kb3dTZXJ2
ZXJDb25uZWN0aW9uSUQoKSwgW3dpbmRvdyB3aW5kb3dOdW1iZXJdLCAyLCAyLCBtZXNoKTsKK30K
KwogLSAodm9pZClzZXRDdXJyZW50UHJvZ3Jlc3M6KE5TQW5pbWF0aW9uUHJvZ3Jlc3MpcHJvZ3Jl
c3MKIHsKICAgICBpZiAoIV93aW5kb3cpCkBAIC0xMTcsNyArMTcxLDcgQEAgLSAodm9pZClzZXRD
dXJyZW50UHJvZ3Jlc3M6KE5TQW5pbWF0aW9uUHJvZ3Jlc3MpcHJvZ3Jlc3MKICAgICBbc3VwZXIg
c2V0Q3VycmVudFByb2dyZXNzOnByb2dyZXNzXTsKIAogICAgIE5TUmVjdCBjdXJyZW50UmVjdCA9
IFtzZWxmIGN1cnJlbnRGcmFtZV07Ci0gICAgd2tXaW5kb3dTZXRTY2FsZWRGcmFtZShfd2luZG93
LCBjdXJyZW50UmVjdCwgX3JlYWxGcmFtZSk7CisgICAgc2V0U2NhbGVkRnJhbWVGb3JXaW5kb3co
X3dpbmRvdywgY3VycmVudFJlY3QsIF9yZWFsRnJhbWUpOwogICAgIFtfc3ViQW5pbWF0aW9uIHNl
dEN1cnJlbnRQcm9ncmVzczpwcm9ncmVzc107CiB9CiAKQEAgLTIxMSw3ICsyNjUsNyBAQCAtICh2
b2lkKXNldEN1cnJlbnRQcm9ncmVzczooTlNBbmltYXRpb25Qcm9ncmVzcylwcm9ncmVzcwogICAg
IEFTU0VSVChfd2luZG93KTsKICAgICBbc3VwZXIgc2V0Q3VycmVudFByb2dyZXNzOnByb2dyZXNz
XTsKIAotICAgIHdrV2luZG93U2V0QWxwaGEoX3dpbmRvdywgW3NlbGYgY3VycmVudEFscGhhXSk7
CisgICAgQ0dTU2V0V2luZG93QWxwaGEobWFpbldpbmRvd1NlcnZlckNvbm5lY3Rpb25JRCgpLCBf
d2luZG93LndpbmRvd051bWJlciwgW3NlbGYgY3VycmVudEFscGhhXSk7CiB9CiAKIC0gKHZvaWQp
c2V0V2luZG93OihOU1dpbmRvdyopd2luZG93CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1Bs
dWdpblByb2Nlc3MvbWFjL1BsdWdpblByb2Nlc3NNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1BsdWdp
blByb2Nlc3MvbWFjL1BsdWdpblByb2Nlc3NNYWMubW0KaW5kZXggZGQ1MzM3MDI0N2YwYTZiNzRh
MDFiZmNjOGFhOTZmYTZmZmYzNDQxOC4uN2ZmMWJjOTdiMjk0N2ZmYTQ4OTlkZGYzOTNmYzA5NDk0
OWE1NzVjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL21hYy9QbHVn
aW5Qcm9jZXNzTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9tYWMvUGx1
Z2luUHJvY2Vzc01hYy5tbQpAQCAtNTMwLDcgKzUzMCwxMCBAQCB2b2lkIFBsdWdpblByb2Nlc3M6
OnBsYXRmb3JtSW5pdGlhbGl6ZVByb2Nlc3MoY29uc3QgQ2hpbGRQcm9jZXNzSW5pdGlhbGl6YXRp
b25QYQogCiAgICAgLy8gRklYTUU6IEl0IHdvdWxkIGJlIGJldHRlciB0byBwcm94eSBTZXRDdXJz
b3IgY2FsbHMgb3ZlciB0byB0aGUgVUkgcHJvY2VzcyBpbnN0ZWFkIG9mCiAgICAgLy8gYWxsb3dp
bmcgcGx1Zy1pbnMgdG8gY2hhbmdlIHRoZSBtb3VzZSBjdXJzb3IgYXQgYW55IHRpbWUuCi0gICAg
V0tFbmFibGVTZXR0aW5nQ3Vyc29yV2hlbkluQmFja2dyb3VuZCgpOworICAgIC8vIEZJWE1FOiBT
ZXRzQ3Vyc29ySW5CYWNrZ3JvdW5kIGNvbm5lY3Rpb24gcHJvcGVydHkgaXMgZGVwcmVjYXRlZCBp
biBmYXZvciBvZiBrQ0dTU2V0c0N1cnNvckluQmFja2dyb3VuZFRhZ0JpdCB3aW5kb3cgdGFnIGJp
dC4KKyAgICAvLyA8cmRhcjovL3Byb2JsZW0vNzc1MjQyMj4gYXNrcyBmb3IgYW4gQVBJIHRvIHNl
dCBjdXJzb3IgZnJvbSBiYWNrZ3JvdW5kIHByb2Nlc3Nlcy4KKyAgICBDR1NDb25uZWN0aW9uSUQg
Y2lkID0gQ0dTTWFpbkNvbm5lY3Rpb25JRCgpOworICAgIENHU1NldENvbm5lY3Rpb25Qcm9wZXJ0
eShjaWQsIGNpZCwgQ0ZTVFIoIlNldHNDdXJzb3JJbkJhY2tncm91bmQiKSwgKENGVHlwZVJlZilr
Q0ZCb29sZWFuVHJ1ZSk7CiAKICAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IHBsdWdpblVSTCA9IGFk
b3B0Q0YoQ0ZVUkxDcmVhdGVXaXRoRmlsZVN5c3RlbVBhdGgoMCwgbV9wbHVnaW5QYXRoLmNyZWF0
ZUNGU3RyaW5nKCkuZ2V0KCksIGtDRlVSTFBPU0lYUGF0aFN0eWxlLCBmYWxzZSkpOwogICAgIGlm
ICghcGx1Z2luVVJMKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dp
bmRvd1NlcnZlckNvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XaW5k
b3dTZXJ2ZXJDb25uZWN0aW9uLmgKaW5kZXggODM4YTM0ZmI1YzJkNDRlZWU1NDY0ZTU3ZWRjNzBl
MTBhZGJkM2IyMC4uZTdiNTE4YzZjNWViMGIwNjJkODlhOTFjYTcwNTc3YmE4NGViMDUxMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dpbmRvd1NlcnZlckNvbm5lY3Rp
b24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2luZG93U2VydmVyQ29ubmVj
dGlvbi5oCkBAIC00MSw5ICs0MSw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCB3aW5kb3dTZXJ2ZXJD
b25uZWN0aW9uU3RhdGVDaGFuZ2VkKCk7CiAKICAgICB2b2lkIGFwcGxpY2F0aW9uV2luZG93TW9k
aWZpY2F0aW9uc1N0b3BwZWQoYm9vbCBzdG9wcGVkKTsKLQotICAgIHN0YXRpYyB2b2lkIGFwcGxp
Y2F0aW9uV2luZG93TW9kaWZpY2F0aW9uc1N0YXJ0ZWQodWludDMyX3QsIHZvaWQqLCB1aW50MzJf
dCwgdm9pZCosIHVpbnQzMl90KTsKLSAgICBzdGF0aWMgdm9pZCBhcHBsaWNhdGlvbldpbmRvd01v
ZGlmaWNhdGlvbnNTdG9wcGVkKHVpbnQzMl90LCB2b2lkKiwgdWludDMyX3QsIHZvaWQqLCB1aW50
MzJfdCk7CiAjZW5kaWYKIAogICAgIGJvb2wgbV9hcHBsaWNhdGlvbldpbmRvd01vZGlmaWNhdGlv
bnNIYXZlU3RvcHBlZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9X
aW5kb3dTZXJ2ZXJDb25uZWN0aW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dp
bmRvd1NlcnZlckNvbm5lY3Rpb24ubW0KaW5kZXggODE5NTM1YzJhYzEyOWM4ZDUyMTIxOGM5NzU1
Yzg0YjYxZDQ0ZjI4NS4uYzk3NTVkNzIyYTVkYzM1MmYzYWExMmU0MDg3OTUwMGNlMjk0MzNiZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dpbmRvd1NlcnZlckNvbm5l
Y3Rpb24ubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dpbmRvd1NlcnZlckNv
bm5lY3Rpb24ubW0KQEAgLTQxLDE2ICs0MSw2IEBAIHZvaWQgV2luZG93U2VydmVyQ29ubmVjdGlv
bjo6YXBwbGljYXRpb25XaW5kb3dNb2RpZmljYXRpb25zU3RvcHBlZChib29sIHN0b3BwZWQpCiAg
ICAgd2luZG93U2VydmVyQ29ubmVjdGlvblN0YXRlQ2hhbmdlZCgpOwogfQogCi12b2lkIFdpbmRv
d1NlcnZlckNvbm5lY3Rpb246OmFwcGxpY2F0aW9uV2luZG93TW9kaWZpY2F0aW9uc1N0YXJ0ZWQo
dWludDMyX3QsIHZvaWQqLCB1aW50MzJfdCwgdm9pZCosIHVpbnQzMl90KQotewotICAgIFdpbmRv
d1NlcnZlckNvbm5lY3Rpb246OnNpbmdsZXRvbigpLmFwcGxpY2F0aW9uV2luZG93TW9kaWZpY2F0
aW9uc1N0b3BwZWQoZmFsc2UpOwotfQotCi12b2lkIFdpbmRvd1NlcnZlckNvbm5lY3Rpb246OmFw
cGxpY2F0aW9uV2luZG93TW9kaWZpY2F0aW9uc1N0b3BwZWQodWludDMyX3QsIHZvaWQqLCB1aW50
MzJfdCwgdm9pZCosIHVpbnQzMl90KQotewotICAgIFdpbmRvd1NlcnZlckNvbm5lY3Rpb246OnNp
bmdsZXRvbigpLmFwcGxpY2F0aW9uV2luZG93TW9kaWZpY2F0aW9uc1N0b3BwZWQodHJ1ZSk7Ci19
Ci0KIHZvaWQgV2luZG93U2VydmVyQ29ubmVjdGlvbjo6d2luZG93U2VydmVyQ29ubmVjdGlvblN0
YXRlQ2hhbmdlZCgpCiB7CiAgICAgZm9yIChhdXRvKiBwcm9jZXNzUG9vbCA6IFdlYlByb2Nlc3NQ
b29sOjphbGxQcm9jZXNzUG9vbHMoKSkKQEAgLTY1LDIzICs1NSw0NiBAQCBXaW5kb3dTZXJ2ZXJD
b25uZWN0aW9uJiBXaW5kb3dTZXJ2ZXJDb25uZWN0aW9uOjpzaW5nbGV0b24oKQogICAgIHJldHVy
biB3aW5kb3dTZXJ2ZXJDb25uZWN0aW9uOwogfQogCitzdGF0aWMgYm9vbCByZWdpc3Rlck9jY2x1
c2lvbk5vdGlmaWNhdGlvbkhhbmRsZXIoQ0dTTm90aWZpY2F0aW9uVHlwZSB0eXBlLCBDR1NOb3Rp
ZnlDb25uZWN0aW9uUHJvY1B0ciBoYW5kbGVyKQoreworICAgIENHU0Nvbm5lY3Rpb25JRCBtYWlu
Q29ubmVjdGlvbiA9IENHU01haW5Db25uZWN0aW9uSUQoKTsKKyAgICBzdGF0aWMgYm9vbCBub3Rp
ZmljYXRpb25zRW5hYmxlZDsKKyAgICBpZiAoIW5vdGlmaWNhdGlvbnNFbmFibGVkKSB7CisgICAg
ICAgIGlmIChDR1NQYWNrYWdlc0VuYWJsZUNvbm5lY3Rpb25PY2NsdXNpb25Ob3RpZmljYXRpb25z
KG1haW5Db25uZWN0aW9uLCB0cnVlLCBudWxscHRyKSAhPSBrQ0dFcnJvclN1Y2Nlc3MpCisgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGlmIChDR1NQYWNrYWdlc0VuYWJsZUNvbm5l
Y3Rpb25XaW5kb3dNb2RpZmljYXRpb25Ob3RpZmljYXRpb25zKG1haW5Db25uZWN0aW9uLCB0cnVl
LCBudWxscHRyKSAhPSBrQ0dFcnJvclN1Y2Nlc3MpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgICAgIG5vdGlmaWNhdGlvbnNFbmFibGVkID0gdHJ1ZTsKKyAgICB9CisKKyAgICByZXR1
cm4gQ0dTUmVnaXN0ZXJDb25uZWN0aW9uTm90aWZ5UHJvYyhtYWluQ29ubmVjdGlvbiwgaGFuZGxl
ciwgdHlwZSwgbnVsbHB0cikgPT0ga0NHRXJyb3JTdWNjZXNzOworfQorCiBXaW5kb3dTZXJ2ZXJD
b25uZWN0aW9uOjpXaW5kb3dTZXJ2ZXJDb25uZWN0aW9uKCkKICAgICA6IG1fYXBwbGljYXRpb25X
aW5kb3dNb2RpZmljYXRpb25zSGF2ZVN0b3BwZWQoZmFsc2UpCiB7CiAjaWYgSEFWRShXSU5ET1df
U0VSVkVSX09DQ0xVU0lPTl9OT1RJRklDQVRJT05TKQogICAgIHN0cnVjdCBPY2NsdXNpb25Ob3Rp
ZmljYXRpb25IYW5kbGVyIHsKLSAgICAgICAgV0tPY2NsdXNpb25Ob3RpZmljYXRpb25UeXBlIG5v
dGlmaWNhdGlvblR5cGU7Ci0gICAgICAgIFdLT2NjbHVzaW9uTm90aWZpY2F0aW9uSGFuZGxlciBo
YW5kbGVyOworICAgICAgICBDR1NOb3RpZmljYXRpb25UeXBlIG5vdGlmaWNhdGlvblR5cGU7Cisg
ICAgICAgIENHU05vdGlmeUNvbm5lY3Rpb25Qcm9jUHRyIGhhbmRsZXI7CiAgICAgICAgIGNvbnN0
IGNoYXIqIG5hbWU7CiAgICAgfTsKIAorICAgIHN0YXRpYyBhdXRvIHdpbmRvd01vZGlmaWNhdGlv
bnNTdGFydGVkID0gW10oQ0dTTm90aWZpY2F0aW9uVHlwZSwgdm9pZCosIHVpbnQzMl90LCB2b2lk
KiwgQ0dTQ29ubmVjdGlvbklEKSB7CisgICAgICAgIFdpbmRvd1NlcnZlckNvbm5lY3Rpb246OnNp
bmdsZXRvbigpLmFwcGxpY2F0aW9uV2luZG93TW9kaWZpY2F0aW9uc1N0b3BwZWQoZmFsc2UpOwor
ICAgIH07CisKKyAgICBzdGF0aWMgYXV0byB3aW5kb3dNb2RpZmljYXRpb25zU3RvcHBlZCA9IFtd
KENHU05vdGlmaWNhdGlvblR5cGUsIHZvaWQqLCB1aW50MzJfdCwgdm9pZCosIENHU0Nvbm5lY3Rp
b25JRCkgeworICAgICAgICBXaW5kb3dTZXJ2ZXJDb25uZWN0aW9uOjpzaW5nbGV0b24oKS5hcHBs
aWNhdGlvbldpbmRvd01vZGlmaWNhdGlvbnNTdG9wcGVkKHRydWUpOworICAgIH07CisKICAgICBz
dGF0aWMgY29uc3QgT2NjbHVzaW9uTm90aWZpY2F0aW9uSGFuZGxlciBvY2NsdXNpb25Ob3RpZmlj
YXRpb25IYW5kbGVyc1tdID0gewotICAgICAgICB7IFdLT2NjbHVzaW9uTm90aWZpY2F0aW9uVHlw
ZUFwcGxpY2F0aW9uV2luZG93TW9kaWZpY2F0aW9uc1N0YXJ0ZWQsIGFwcGxpY2F0aW9uV2luZG93
TW9kaWZpY2F0aW9uc1N0YXJ0ZWQsICJBcHBsaWNhdGlvbiBXaW5kb3cgTW9kaWZpY2F0aW9ucyBT
dGFydGVkIiB9LAotICAgICAgICB7IFdLT2NjbHVzaW9uTm90aWZpY2F0aW9uVHlwZUFwcGxpY2F0
aW9uV2luZG93TW9kaWZpY2F0aW9uc1N0b3BwZWQsIGFwcGxpY2F0aW9uV2luZG93TW9kaWZpY2F0
aW9uc1N0b3BwZWQsICJBcHBsaWNhdGlvbiBXaW5kb3cgTW9kaWZpY2F0aW9ucyBTdG9wcGVkIiB9
LAorICAgICAgICB7IGtDR1NDb25uZWN0aW9uV2luZG93TW9kaWZpY2F0aW9uc1N0YXJ0ZWQsIHdp
bmRvd01vZGlmaWNhdGlvbnNTdGFydGVkLCAiQXBwbGljYXRpb24gV2luZG93IE1vZGlmaWNhdGlv
bnMgU3RhcnRlZCIgfSwKKyAgICAgICAgeyBrQ0dTQ29ubmVjdGlvbldpbmRvd01vZGlmaWNhdGlv
bnNTdG9wcGVkLCB3aW5kb3dNb2RpZmljYXRpb25zU3RvcHBlZCwgIkFwcGxpY2F0aW9uIFdpbmRv
dyBNb2RpZmljYXRpb25zIFN0b3BwZWQiIH0sCiAgICAgfTsKIAogICAgIGZvciAoY29uc3QgYXV0
byYgb2NjbHVzaW9uTm90aWZpY2F0aW9uSGFuZGxlciA6IG9jY2x1c2lvbk5vdGlmaWNhdGlvbkhh
bmRsZXJzKSB7Ci0gICAgICAgIGJvb2wgcmVzdWx0ID0gV0tSZWdpc3Rlck9jY2x1c2lvbk5vdGlm
aWNhdGlvbkhhbmRsZXIob2NjbHVzaW9uTm90aWZpY2F0aW9uSGFuZGxlci5ub3RpZmljYXRpb25U
eXBlLCBvY2NsdXNpb25Ob3RpZmljYXRpb25IYW5kbGVyLmhhbmRsZXIpOworICAgICAgICBib29s
IHJlc3VsdCA9IHJlZ2lzdGVyT2NjbHVzaW9uTm90aWZpY2F0aW9uSGFuZGxlcihvY2NsdXNpb25O
b3RpZmljYXRpb25IYW5kbGVyLm5vdGlmaWNhdGlvblR5cGUsIG9jY2x1c2lvbk5vdGlmaWNhdGlv
bkhhbmRsZXIuaGFuZGxlcik7CiAgICAgICAgIFVOVVNFRF9QQVJBTShyZXN1bHQpOwogICAgICAg
ICBBU1NFUlRfV0lUSF9NRVNTQUdFKHJlc3VsdCwgIlJlZ2lzdHJhdGlvbiBvZiBcIiVzXCIgbm90
aWZpY2F0aW9uIGhhbmRsZXIgZmFpbGVkLlxuIiwgb2NjbHVzaW9uTm90aWZpY2F0aW9uSGFuZGxl
ci5uYW1lKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvbWFjL1dlYlN5c3RlbUludGVyZmFjZS5tbSBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViU3lzdGVtSW50ZXJmYWNlLm1tCmluZGV4IDQ0
ZGM3ZWNiMzYyMGU4ZjQ1MTQyZWIzN2M3ODc1YWRjYjNiOTQxMmIuLjgzZGQ4M2U0MzRkYmQzNDk1
MzQzYWU3MTAxOTI0OTMyZDhmYmE1MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViU3lzdGVtSW50ZXJmYWNlLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViU3lzdGVtSW50ZXJmYWNl
Lm1tCkBAIC0zNywyMSArMzcsMTEgQEAgdm9pZCBJbml0V2ViQ29yZVN5c3RlbUludGVyZmFjZSh2
b2lkKQogICAgIAogICAgIGRpc3BhdGNoX29uY2UoJmluaXRPbmNlLCBeewogICAgICAgICBJTklU
KENBTGF5ZXJFbnVtZXJhdGVSZWN0c0JlaW5nRHJhd25XaXRoQmxvY2spOwotICAgICAgICBJTklU
KENHUGF0dGVybkNyZWF0ZVdpdGhJbWFnZUFuZFRyYW5zZm9ybSk7Ci0jaWYgIVBMQVRGT1JNKElP
UykKLSAgICAgICAgSU5JVChDR0NvbnRleHREcmF3c1dpdGhDb3JyZWN0U2hhZG93T2Zmc2V0cyk7
Ci0jZW5kaWYKICAgICAgICAgSU5JVChDb3B5Q09OTkVDVFByb3h5UmVzcG9uc2UpOwogI2lmICFQ
TEFURk9STShJT1MpCiAgICAgICAgIElOSVQoRHJhd0JlemVsZWRUZXh0QXJlYSk7Ci0gICAgICAg
IElOSVQoRHJhd0ZvY3VzUmluZyk7Ci0gICAgICAgIElOSVQoRHJhd0ZvY3VzUmluZ0F0VGltZSk7
Ci0gICAgICAgIElOSVQoRHJhd0NlbGxGb2N1c1JpbmdXaXRoRnJhbWVBdFRpbWUpOwogICAgICAg
ICBJTklUKERyYXdNZWRpYVNsaWRlclRyYWNrKTsKICAgICAgICAgSU5JVChEcmF3TWVkaWFVSVBh
cnQpOwotI2VuZGlmCi0gICAgICAgIElOSVQoQ0dDb250ZXh0SXNQREZDb250ZXh0KTsKLSNpZiAh
UExBVEZPUk0oSU9TKQogICAgICAgICBJTklUKEdldFdoZWVsRXZlbnREZWx0YXMpOwogICAgICAg
ICBJTklUKEdldE5TRXZlbnRLZXlDaGFyKTsKICAgICAgICAgSU5JVChIaXRUZXN0TWVkaWFVSVBh
cnQpOwpAQCAtNzEsMTYgKzYxLDExIEBAIHZvaWQgSW5pdFdlYkNvcmVTeXN0ZW1JbnRlcmZhY2Uo
dm9pZCkKICNlbmRpZgogICAgICAgICBJTklUKFNldENPTk5FQ1RQcm94eUF1dGhvcml6YXRpb25G
b3JTdHJlYW0pOwogICAgICAgICBJTklUKFNldENPTk5FQ1RQcm94eUZvclN0cmVhbSk7Ci0jaWYg
IVBMQVRGT1JNKElPUykKLSAgICAgICAgSU5JVChTZXREcmFnSW1hZ2UpOwotI2VuZGlmCiAKICNp
ZiAhUExBVEZPUk0oSU9TKQogICAgICAgICBJTklUKEV4ZWN1dGFibGVXYXNMaW5rZWRPbk9yQmVm
b3JlU25vd0xlb3BhcmQpOwogICAgICAgICBJTklUKENvcHlEZWZhdWx0U2VhcmNoUHJvdmlkZXJE
aXNwbGF5TmFtZSk7CiAgICAgICAgIElOSVQoQ3Vyc29yKTsKLSAgICAgICAgSU5JVChXaW5kb3dT
ZXRTY2FsZWRGcmFtZSk7Ci0gICAgICAgIElOSVQoV2luZG93U2V0QWxwaGEpOwogICAgICAgICBJ
TklUKFNwZWVjaFN5bnRoZXNpc0dldFZvaWNlSWRlbnRpZmllcnMpOwogICAgICAgICBJTklUKFNw
ZWVjaFN5bnRoZXNpc0dldERlZmF1bHRWb2ljZUlkZW50aWZpZXJGb3JMb2NhbGUpOwogICAgICAg
ICBJTklUKE5TRWxhc3RpY0RlbHRhRm9yVGltZURlbHRhKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL0NhcmJvbi9ISVdlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9DYXJib24vSElXZWJWaWV3Lm1tCmluZGV4IDM0NTg1YzI1MmMzYjE4Y2FjZDZlMDdhZDVl
OTQ0ODc3OWQ4YmU0NTcuLmE5ZjZlYWVkNzIwMzg4NDczZWUzNmFhMDFkYjFkOWIzNDMxZDZlMDgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NhcmJvbi9ISVdlYlZpZXcubW0K
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2FyYm9uL0hJV2ViVmlldy5tbQpAQCAtODUs
NiArODUsMjEgQEAgLSAoaW50KXRhZwogCiBAZW5kCiAKK0BpbnRlcmZhY2UgTlNXaW5kb3dHcmFw
aGljc0NvbnRleHQgKCkKKy0gKHZvaWQpX3dlYl9zZXRHcmFwaGljc1BvcnQ6KENHQ29udGV4dFJl
Ziljb250ZXh0OworQGVuZAorCitAaW1wbGVtZW50YXRpb24gTlNXaW5kb3dHcmFwaGljc0NvbnRl
eHQgKCkKKworLSAodm9pZClfd2ViX3NldEdyYXBoaWNzUG9ydDooQ0dDb250ZXh0UmVmKWNvbnRl
eHQKK3sKKyAgICBDR0NvbnRleHRSZXRhaW4oY29udGV4dCk7CisgICAgQ0dDb250ZXh0UmVsZWFz
ZShfY2dzQ29udGV4dCk7CisgICAgX2Nnc0NvbnRleHQgPSBjb250ZXh0OworfQorCitAZW5kCisK
IHN0cnVjdCBISVdlYlZpZXcKIHsKICAgICBISVZpZXdSZWYJCQkJCQkJZlZpZXdSZWY7CkBAIC0y
OTAsNiArMzA1LDIyIEBAIEdldEJlaGF2aW9ycygpCiAJcmV0dXJuIGtDb250cm9sU3VwcG9ydHNE
YXRhQWNjZXNzIHwga0NvbnRyb2xTdXBwb3J0c0dldFJlZ2lvbiB8IGtDb250cm9sR2V0c0ZvY3Vz
T25DbGljazsKIH0KIAorc3RhdGljIENHQ29udGV4dFJlZiBvdmVycmlkZUNHQ29udGV4dChOU1dp
bmRvdyAqd2luZG93LCBDR0NvbnRleHRSZWYgY29udGV4dCkKK3sKKyAgICBOU1dpbmRvd0dyYXBo
aWNzQ29udGV4dCAqZ3JhcGhpY3NDb250ZXh0ID0gKE5TV2luZG93R3JhcGhpY3NDb250ZXh0ICop
W3dpbmRvdyBncmFwaGljc0NvbnRleHRdOworICAgIENHQ29udGV4dFJlZiBzYXZlZENvbnRleHQg
PSAoQ0dDb250ZXh0UmVmKVtncmFwaGljc0NvbnRleHQgZ3JhcGhpY3NQb3J0XTsKKyAgICBDR0Nv
bnRleHRSZXRhaW4oc2F2ZWRDb250ZXh0KTsKKyAgICBbZ3JhcGhpY3NDb250ZXh0IF93ZWJfc2V0
R3JhcGhpY3NQb3J0OmNvbnRleHRdOworICAgIHJldHVybiBzYXZlZENvbnRleHQ7Cit9CisKK3N0
YXRpYyB2b2lkIHJlc3RvcmVDR0NvbnRleHQoTlNXaW5kb3cgKndpbmRvdywgQ0dDb250ZXh0UmVm
IHNhdmVkQ29udGV4dCkKK3sKKyAgICBOU1dpbmRvd0dyYXBoaWNzQ29udGV4dCAqZ3JhcGhpY3ND
b250ZXh0ID0gKE5TV2luZG93R3JhcGhpY3NDb250ZXh0ICopW3dpbmRvdyBncmFwaGljc0NvbnRl
eHRdOworICAgIFtncmFwaGljc0NvbnRleHQgX3dlYl9zZXRHcmFwaGljc1BvcnQ6c2F2ZWRDb250
ZXh0XTsKKyAgICBDR0NvbnRleHRSZWxlYXNlKHNhdmVkQ29udGV4dCk7Cit9CisKIC8vLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQogLy8gRHJhdwogLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CkBAIC0zMjEsNyArMzUyLDcgQEAgRHJhdyggSElXZWJWaWV3KiBpblZpZXcsIFJnbkhhbmRsZSBs
aW1pdFJnbiwgQ0dDb250ZXh0UmVmIGluQ29udGV4dCApCiAKIAlISVZpZXdHZXRCb3VuZHMoIGlu
Vmlldy0+ZlZpZXdSZWYsICZib3VuZHMgKTsKIAotICAgIENHQ29udGV4dFJlZiBzYXZlZENvbnRl
eHQgPSBXS05TV2luZG93T3ZlcnJpZGVDR0NvbnRleHQoaW5WaWV3LT5mS2l0V2luZG93LCBpbkNv
bnRleHQpOworICAgIENHQ29udGV4dFJlZiBzYXZlZENvbnRleHQgPSBvdmVycmlkZUNHQ29udGV4
dChpblZpZXctPmZLaXRXaW5kb3csIGluQ29udGV4dCk7CiAgICAgW05TR3JhcGhpY3NDb250ZXh0
IHNldEN1cnJlbnRDb250ZXh0OltpblZpZXctPmZLaXRXaW5kb3cgZ3JhcGhpY3NDb250ZXh0XV07
CiAKIAlHZXRSZWdpb25Cb3VuZHMoIGxpbWl0UmduLCAmZHJhd1JlY3QgKTsKQEAgLTM1MSw3ICsz
ODIsNyBAQCBEcmF3KCBISVdlYlZpZXcqIGluVmlldywgUmduSGFuZGxlIGxpbWl0UmduLCBDR0Nv
bnRleHRSZWYgaW5Db250ZXh0ICkKICAgICBlbHNlCiAgICAgICAgIFtpblZpZXctPmZXZWJWaWV3
IGRpc3BsYXlSZWN0OiooTlNSZWN0KikmaGlSZWN0XTsKIAotICAgIFdLTlNXaW5kb3dSZXN0b3Jl
Q0dDb250ZXh0KGluVmlldy0+ZktpdFdpbmRvdywgc2F2ZWRDb250ZXh0KTsKKyAgICByZXN0b3Jl
Q0dDb250ZXh0KGluVmlldy0+ZktpdFdpbmRvdywgc2F2ZWRDb250ZXh0KTsKIAogICAgIGlmICgg
IWluVmlldy0+ZklzQ29tcG9zaXRlZCApCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvV2ViSG9zdGVkTmV0c2NhcGVQbHVnaW5WaWV3Lm1t
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvV2ViSG9zdGVkTmV0c2Nh
cGVQbHVnaW5WaWV3Lm1tCmluZGV4IDllMjA0NGUyNmUxMzkwMjFlYjhjYTYzMzYyNTVmMmM4MzNj
MWI4YjIuLjY5NWE1Y2Y1MjczNzNkMzA5YTgzYjY0ZDZmMWQwMTAwZWQzYTQwOGEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL1dlYkhvc3RlZE5ldHNj
YXBlUGx1Z2luVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hv
c3RlZC9XZWJIb3N0ZWROZXRzY2FwZVBsdWdpblZpZXcubW0KQEAgLTc2LDcgKzc2LDcgQEAgKyAo
dm9pZClpbml0aWFsaXplCiAgICAgV1RGOjppbml0aWFsaXplTWFpblRocmVhZFRvUHJvY2Vzc01h
aW5UaHJlYWQoKTsKICAgICBSdW5Mb29wOjppbml0aWFsaXplTWFpblJ1bkxvb3AoKTsKICNlbmRp
ZgotICAgIFdLU2VuZFVzZXJDaGFuZ2VOb3RpZmljYXRpb25zKCk7CisgICAgc2VuZFVzZXJDaGFu
Z2VOb3RpZmljYXRpb25zKCk7CiB9CiAKIC0gKGlkKWluaXRXaXRoRnJhbWU6KE5TUmVjdClmcmFt
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJCYXNlTmV0
c2NhcGVQbHVnaW5WaWV3LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYkJh
c2VOZXRzY2FwZVBsdWdpblZpZXcuaAppbmRleCBjMjIyM2FiNmQyNjc1MWYzOGMzODk1ODFiZDM0
OWRlOTgxNGMxNWIxLi5jZDQzMGQzNjY5NzFlYzlmZTJlYTBkNDQwNTkzYjU4MGM5Y2EyZTI3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYkJhc2VOZXRzY2Fw
ZVBsdWdpblZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYkJh
c2VOZXRzY2FwZVBsdWdpblZpZXcuaApAQCAtMTM0LDYgKzEzNCw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIG5hbWVzcGFjZSBXZWJLaXQgewogYm9vbCBnZXRBdXRoZW50aWNhdGlvbkluZm8oY29u
c3QgY2hhciogcHJvdG9jb2xTdHIsIGNvbnN0IGNoYXIqIGhvc3RTdHIsIGludDMyX3QgcG9ydCwg
Y29uc3QgY2hhciogc2NoZW1lU3RyLCBjb25zdCBjaGFyKiByZWFsbVN0ciwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFdURjo6Q1N0cmluZyYgdXNlcm5hbWUsIFdURjo6Q1N0cmluZyYgcGFz
c3dvcmQpOwordm9pZCBzZW5kVXNlckNoYW5nZU5vdGlmaWNhdGlvbnMoKTsKIH0gCiAKICNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJCYXNlTmV0
c2NhcGVQbHVnaW5WaWV3Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJC
YXNlTmV0c2NhcGVQbHVnaW5WaWV3Lm1tCmluZGV4IDY0ZGU5MDEwZWJkYjBiMDY5ZDZmODYzYTNm
ZWYyZmZkN2I1ZDQzMzguLmJlMWMzMGIzZjMwOWRhNjg1NWYzY2QxZDI3YWI0NzA4OWFlZDJjMzUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViQmFzZU5ldHNj
YXBlUGx1Z2luVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dl
YkJhc2VOZXRzY2FwZVBsdWdpblZpZXcubW0KQEAgLTU1LDYgKzU1LDcgQEAKICNpbXBvcnQgPFdl
YkNvcmUvU2VjdXJpdHlPcmlnaW4uaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViQ29yZU9iakNFeHRy
YXMuaD4KICNpbXBvcnQgPFdlYktpdExlZ2FjeS9ET01Qcml2YXRlLmg+CisjaW1wb3J0IDxwYWwv
c3BpL2NnL0NvcmVHcmFwaGljc1NQSS5oPgogI2ltcG9ydCA8cnVudGltZS9Jbml0aWFsaXplVGhy
ZWFkaW5nLmg+CiAjaW1wb3J0IDx3dGYvQXNzZXJ0aW9ucy5oPgogI2ltcG9ydCA8d3RmL01haW5U
aHJlYWQuaD4KQEAgLTczLDcgKzc0LDcgQEAgKyAodm9pZClpbml0aWFsaXplCiAgICAgSlNDOjpp
bml0aWFsaXplVGhyZWFkaW5nKCk7CiAgICAgV1RGOjppbml0aWFsaXplTWFpblRocmVhZFRvUHJv
Y2Vzc01haW5UaHJlYWQoKTsKICAgICBSdW5Mb29wOjppbml0aWFsaXplTWFpblJ1bkxvb3AoKTsK
LSAgICBXS1NlbmRVc2VyQ2hhbmdlTm90aWZpY2F0aW9ucygpOworICAgIFdlYktpdDo6c2VuZFVz
ZXJDaGFuZ2VOb3RpZmljYXRpb25zKCk7CiB9CiAKIC0gKGlkKWluaXRXaXRoRnJhbWU6KE5TUmVj
dClmcmFtZQpAQCAtOTAwLDYgKzkwMSwyMyBAQCBib29sIGdldEF1dGhlbnRpY2F0aW9uSW5mbyhj
b25zdCBjaGFyKiBwcm90b2NvbFN0ciwgY29uc3QgY2hhciogaG9zdFN0ciwgaW50MzJfdAogICAg
IHJldHVybiB0cnVlOwogfQogCit2b2lkIHNlbmRVc2VyQ2hhbmdlTm90aWZpY2F0aW9ucygpCit7
CisgICAgYXV0byBjb25zb2xlQ29ubmVjdGlvbkNoYW5nZU5vdGlmeVByb2MgPSBbXShDR1NOb3Rp
ZmljYXRpb25UeXBlIHR5cGUsIENHU05vdGlmaWNhdGlvbkRhdGEsIENHU0J5dGVDb3VudCwgQ0dT
Tm90aWZpY2F0aW9uQXJnKSB7CisgICAgICAgIE5TU3RyaW5nICpub3RpZmljYXRpb25OYW1lID0g
bmlsOworICAgICAgICBpZiAodHlwZSA9PSBrQ0dTZXNzaW9uQ29uc29sZUNvbm5lY3QpCisgICAg
ICAgICAgICBub3RpZmljYXRpb25OYW1lID0gTG9naW5XaW5kb3dEaWRTd2l0Y2hUb1VzZXJOb3Rp
ZmljYXRpb247CisgICAgICAgIGVsc2UgaWYgKHR5cGUgPT0ga0NHU2Vzc2lvbkNvbnNvbGVEaXNj
b25uZWN0KQorICAgICAgICAgICAgbm90aWZpY2F0aW9uTmFtZSA9IExvZ2luV2luZG93RGlkU3dp
dGNoRnJvbVVzZXJOb3RpZmljYXRpb247CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBbW05TTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRD
ZW50ZXJdIHBvc3ROb3RpZmljYXRpb25OYW1lOm5vdGlmaWNhdGlvbk5hbWUgb2JqZWN0Om5pbF07
CisgICAgfTsKKworICAgIENHU1JlZ2lzdGVyTm90aWZ5UHJvYyhjb25zb2xlQ29ubmVjdGlvbkNo
YW5nZU5vdGlmeVByb2MsIGtDR1Nlc3Npb25Db25zb2xlQ29ubmVjdCwgTlVMTCk7CisgICAgQ0dT
UmVnaXN0ZXJOb3RpZnlQcm9jKGNvbnNvbGVDb25uZWN0aW9uQ2hhbmdlTm90aWZ5UHJvYywga0NH
U2Vzc2lvbkNvbnNvbGVEaXNjb25uZWN0LCBOVUxMKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CiAKICNlbmRpZiAvLyAgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luVmlldy5t
bSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5WaWV3
Lm1tCmluZGV4IGM2ODBmZjdlZTMxYzkzYjhmYjQ5MjI5N2U0ZTdhZDkxNDFhNGRkZTQuLjJiYmQz
ZGViZTY2ZTE4ZDhmMzE4MGM5NGNhMTMzN2ZjZjdkODgxNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5WaWV3Lm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5WaWV3Lm1tCkBA
IC0xOTMsNyArMTkzLDcgQEAgKyAodm9pZClpbml0aWFsaXplCiAgICAgSlNDOjppbml0aWFsaXpl
VGhyZWFkaW5nKCk7CiAgICAgV1RGOjppbml0aWFsaXplTWFpblRocmVhZFRvUHJvY2Vzc01haW5U
aHJlYWQoKTsKICAgICBSdW5Mb29wOjppbml0aWFsaXplTWFpblJ1bkxvb3AoKTsKLSAgICBXS1Nl
bmRVc2VyQ2hhbmdlTm90aWZpY2F0aW9ucygpOworICAgIHNlbmRVc2VyQ2hhbmdlTm90aWZpY2F0
aW9ucygpOwogfQogCiAvLyBNQVJLOiBFVkVOVFMKQEAgLTM3OSwxMCArMzc5LDEwIEBAIC0gKFBv
cnRTdGF0ZSlzYXZlQW5kU2V0TmV3UG9ydFN0YXRlRm9yVXBkYXRlOihCT09MKWZvclVwZGF0ZQog
ICAgICAgICAgICAgcWRQb3J0U3RhdGUtPmNsaXBSZWdpb24gPSBjbGlwUmVnaW9uOwogCiAgICAg
ICAgICAgICBDR0NvbnRleHRSZWYgY3VycmVudENvbnRleHQgPSAoQ0dDb250ZXh0UmVmKVtbTlNH
cmFwaGljc0NvbnRleHQgY3VycmVudENvbnRleHRdIGdyYXBoaWNzUG9ydF07Ci0gICAgICAgICAg
ICBpZiAoY3VycmVudENvbnRleHQgJiYgV0tDR0NvbnRleHRJc0JpdG1hcENvbnRleHQoY3VycmVu
dENvbnRleHQpKSB7Ci0gICAgICAgICAgICAgICAgLy8gV2UgdXNlIFdLQ0dDb250ZXh0SXNCaXRt
YXBDb250ZXh0IGhlcmUsIGJlY2F1c2UgaWYgd2UganVzdCBjYWxsZWQgQ0dCaXRtYXBDb250ZXh0
R2V0RGF0YQotICAgICAgICAgICAgICAgIC8vIG9uIGFueSBjb250ZXh0LCB3ZSdkIGxvZyB0byB0
aGUgY29uc29sZSBldmVyeSB0aW1lLiBCdXQgZXZlbiBpZiBXS0NHQ29udGV4dElzQml0bWFwQ29u
dGV4dAotICAgICAgICAgICAgICAgIC8vIHJldHVybnMgdHJ1ZSwgaXQgc3RpbGwgbWlnaHQgbm90
IGJlIGEgY29udGV4dCB3ZSBuZWVkIHRvIGNyZWF0ZSBhIEdXb3JsZCBmb3I7IGZvciBleGFtcGxl
CisgICAgICAgICAgICBpZiAoY3VycmVudENvbnRleHQgJiYgQ0dDb250ZXh0R2V0VHlwZShjdXJy
ZW50Q29udGV4dCkgPT0ga0NHQ29udGV4dFR5cGVCaXRtYXApIHsKKyAgICAgICAgICAgICAgICAv
LyBXZSBjaGVjayBmb3Iga0NHQ29udGV4dFR5cGVCaXRtYXAgaGVyZSwgYmVjYXVzZSBpZiB3ZSBq
dXN0IGNhbGxlZCBDR0JpdG1hcENvbnRleHRHZXREYXRhCisgICAgICAgICAgICAgICAgLy8gb24g
YW55IGNvbnRleHQsIHdlJ2QgbG9nIHRvIHRoZSBjb25zb2xlIGV2ZXJ5IHRpbWUuIEJ1dCBldmVu
IGlmIGN1cnJlbnRDb250ZXh0IGlzIGEKKyAgICAgICAgICAgICAgICAvLyBrQ0dDb250ZXh0VHlw
ZUJpdG1hcCwgaXQgc3RpbGwgbWlnaHQgbm90IGJlIGEgY29udGV4dCB3ZSBuZWVkIHRvIGNyZWF0
ZSBhIEdXb3JsZCBmb3I7IGZvciBleGFtcGxlCiAgICAgICAgICAgICAgICAgLy8gdHJhbnNwYXJl
bmN5IGxheWVycyB3aWxsIHJldHVybiB0cnVlLCBidXQgcmV0dXJuIDAgZm9yIENHQml0bWFwQ29u
dGV4dEdldERhdGEuCiAgICAgICAgICAgICAgICAgdm9pZCogb2Zmc2NyZWVuRGF0YSA9IENHQml0
bWFwQ29udGV4dEdldERhdGEoY3VycmVudENvbnRleHQpOwogICAgICAgICAgICAgICAgIGlmIChv
ZmZzY3JlZW5EYXRhKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJTeXN0ZW1JbnRlcmZhY2UubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJDb3JlU3VwcG9ydC9XZWJTeXN0ZW1JbnRlcmZhY2UubW0KaW5kZXggZDQ1NTE2ZjVlZWUx
YzA4MmM5ODI4ZDllNzQ3NGVjOTY4OWM0N2I1OC4uOWJlMDAwMmZkNTNmNDkzMzM0ZWIyYzk5OTMx
MWZhODM5NDJmN2UzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViU3lzdGVtSW50ZXJmYWNlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYlN5c3RlbUludGVyZmFjZS5tbQpAQCAtNDMsMTYgKzQzLDkg
QEAgdm9pZCBJbml0V2ViQ29yZVN5c3RlbUludGVyZmFjZSh2b2lkKQogICAgICAgICByZXR1cm47
CiAKICAgICBJTklUKENBTGF5ZXJFbnVtZXJhdGVSZWN0c0JlaW5nRHJhd25XaXRoQmxvY2spOwot
ICAgIElOSVQoQ0dQYXR0ZXJuQ3JlYXRlV2l0aEltYWdlQW5kVHJhbnNmb3JtKTsKLSNpZiAhUExB
VEZPUk0oSU9TKQotICAgIElOSVQoQ0dDb250ZXh0RHJhd3NXaXRoQ29ycmVjdFNoYWRvd09mZnNl
dHMpOwotI2VuZGlmCiAgICAgSU5JVChDb3B5Q09OTkVDVFByb3h5UmVzcG9uc2UpOwogI2lmICFQ
TEFURk9STShJT1MpCiAgICAgSU5JVChEcmF3QmV6ZWxlZFRleHRBcmVhKTsKLSAgICBJTklUKERy
YXdGb2N1c1JpbmcpOwotICAgIElOSVQoRHJhd0ZvY3VzUmluZ0F0VGltZSk7Ci0gICAgSU5JVChE
cmF3Q2VsbEZvY3VzUmluZ1dpdGhGcmFtZUF0VGltZSk7CiAgICAgSU5JVChEcmF3TWVkaWFVSVBh
cnQpOwogICAgIElOSVQoRHJhd01lZGlhU2xpZGVyVHJhY2spOwogICAgIElOSVQoR2V0V2hlZWxF
dmVudERlbHRhcyk7CkBAIC02MSwxNSArNTQsOSBAQCB2b2lkIEluaXRXZWJDb3JlU3lzdGVtSW50
ZXJmYWNlKHZvaWQpCiAgICAgSU5JVChNZWFzdXJlTWVkaWFVSVBhcnQpOwogICAgIElOSVQoQ3Jl
YXRlTWVkaWFVSUJhY2tncm91bmRWaWV3KTsKICAgICBJTklUKENyZWF0ZU1lZGlhVUlDb250cm9s
KTsKLSAgICBJTklUKFdpbmRvd1NldEFscGhhKTsKLSAgICBJTklUKFdpbmRvd1NldFNjYWxlZEZy
YW1lKTsKICNlbmRpZgogICAgIElOSVQoU2V0Q09OTkVDVFByb3h5QXV0aG9yaXphdGlvbkZvclN0
cmVhbSk7CiAgICAgSU5JVChTZXRDT05ORUNUUHJveHlGb3JTdHJlYW0pOwotI2lmICFQTEFURk9S
TShJT1MpCi0gICAgSU5JVChTZXREcmFnSW1hZ2UpOwotI2VuZGlmCi0gICAgSU5JVChDR0NvbnRl
eHRJc1BERkNvbnRleHQpOwogI2lmIEVOQUJMRShWSURFTykgJiYgIVBMQVRGT1JNKElPUykKICAg
ICBJTklUKFFUSW5jbHVkZU9ubHlNb2Rlcm5NZWRpYUZpbGVUeXBlcyk7CiAgICAgSU5JVChRVE1v
dmllRGlzYWJsZUNvbXBvbmVudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJWaWV3L1dlYkZyYW1lLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9X
ZWJGcmFtZS5tbQppbmRleCBmMGY4ZTYyODU4MGIyOWZlMDQ3ZWRkZjZlYjQ3NTc4YzZkMDVkZDJk
Li5lNzA5M2M5NmFhYzQ3NGUzYWVlOWU3MmQyM2IyNGViMWM1ODlhMmViIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KQEAgLTU5OCw3ICs1OTgsNyBAQCAt
IChQYWludEJlaGF2aW9yKV9wYWludEJlaGF2aW9yRm9yRGVzdGluYXRpb25Db250ZXh0OihDR0Nv
bnRleHRSZWYpY29udGV4dAogICAgICAgICByZXR1cm4gUGFpbnRCZWhhdmlvckZsYXR0ZW5Db21w
b3NpdGluZ0xheWVycyB8IFBhaW50QmVoYXZpb3JTbmFwc2hvdHRpbmc7CiAjZW5kaWYKIAotICAg
IGlmICghV0tDR0NvbnRleHRJc0JpdG1hcENvbnRleHQoY29udGV4dCkpCisgICAgaWYgKENHQ29u
dGV4dEdldFR5cGUoY29udGV4dCkgIT0ga0NHQ29udGV4dFR5cGVCaXRtYXApCiAgICAgICAgIHJl
dHVybiBQYWludEJlaGF2aW9yTm9ybWFsOwogCiAgICAgLy8gSWYgd2UncmUgZHJhd2luZyBpbnRv
IGEgYml0bWFwLCB3ZSBtaWdodCBiZSBzbmFwc2hvdHRpbmcsIG9yIGRyYXdpbmcgaW50byBhIGxh
eWVyLWJhY2tlZCB2aWV3LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Vmlldy9XZWJGdWxsU2NyZWVuQ29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYlZpZXcvV2ViRnVsbFNjcmVlbkNvbnRyb2xsZXIubW0KaW5kZXggZmQ4ZmM1Njk5N2FmY2I2
YWQ3ZjkwYzVmYzk5ODRiYTMxNzY2ZTkwNy4uNDA1M2ZmYzg0NjRhMzViYjg2YWZiNjY2ZTNjZWU3
ZWRjYWNlNWVmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9X
ZWJGdWxsU2NyZWVuQ29udHJvbGxlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJWaWV3L1dlYkZ1bGxTY3JlZW5Db250cm9sbGVyLm1tCkBAIC0yNDksNiArMjQ5LDE2IEBAIC0g
KHZvaWQpZW50ZXJGdWxsU2NyZWVuOihOU1NjcmVlbiAqKXNjcmVlbgogICAgIF9pc0VudGVyaW5n
RnVsbFNjcmVlbiA9IHRydWU7CiB9CiAKK3N0YXRpYyB2b2lkIHNldENsaXBSZWN0Rm9yV2luZG93
KE5TV2luZG93ICp3aW5kb3csIE5TUmVjdCBjbGlwUmVjdCkKK3sKKyAgICBDR1NXaW5kb3dJRCB3
aW5kb3dOdW1iZXIgPSAoQ0dTV2luZG93SUQpW3dpbmRvdyB3aW5kb3dOdW1iZXJdOworICAgIENH
U1JlZ2lvbk9iaiBzaGFwZTsKKyAgICBDR1JlY3QgY2dDbGlwUmVjdCA9IE5TUmVjdFRvQ0dSZWN0
KGNsaXBSZWN0KTsKKyAgICBDR1NOZXdSZWdpb25XaXRoUmVjdCgmY2dDbGlwUmVjdCwgJnNoYXBl
KTsKKyAgICBDR1NTZXRXaW5kb3dDbGlwU2hhcGUoQ0dTTWFpbkNvbm5lY3Rpb25JRCgpLCB3aW5k
b3dOdW1iZXIsIHNoYXBlKTsKKyAgICBDR1NSZWxlYXNlUmVnaW9uKHNoYXBlKTsKK30KKwogLSAo
dm9pZClmaW5pc2hlZEVudGVyRnVsbFNjcmVlbkFuaW1hdGlvbjooYm9vbCljb21wbGV0ZWQKIHsK
ICAgICBpZiAoIV9pc0VudGVyaW5nRnVsbFNjcmVlbikKQEAgLTI2Myw3ICsyNzMsNyBAQCAtICh2
b2lkKWZpbmlzaGVkRW50ZXJGdWxsU2NyZWVuQW5pbWF0aW9uOihib29sKWNvbXBsZXRlZAogICAg
ICAgICAKICAgICAgICAgTlNSZWN0IHdpbmRvd0JvdW5kcyA9IFtbc2VsZiB3aW5kb3ddIGZyYW1l
XTsKICAgICAgICAgd2luZG93Qm91bmRzLm9yaWdpbiA9IE5TWmVyb1BvaW50OwotICAgICAgICBX
S1dpbmRvd1NldENsaXBSZWN0KFtzZWxmIHdpbmRvd10sIHdpbmRvd0JvdW5kcyk7CisgICAgICAg
IHNldENsaXBSZWN0Rm9yV2luZG93KFtzZWxmIHdpbmRvd10sIHdpbmRvd0JvdW5kcyk7CiAgICAg
ICAgIAogICAgICAgICBOU1dpbmRvdyAqd2ViV2luZG93ID0gW193ZWJWaWV3UGxhY2Vob2xkZXIu
Z2V0KCkgd2luZG93XTsKICAgICAgICAgLy8gSW4gTGlvbiwgTlNXaW5kb3cgd2lsbCBhbmltYXRl
IGludG8gYW5kIG91dCBvZiBvcmRlck91dCBvcGVyYXRpb25zLiBTdXBwcmVzcyB0aGF0CkBAIC0z
NTMsNyArMzYzLDcgQEAgLSAodm9pZClmaW5pc2hlZEV4aXRGdWxsU2NyZWVuQW5pbWF0aW9uOihi
b29sKWNvbXBsZXRlZAogICAgIAogICAgIE5TUmVjdCB3aW5kb3dCb3VuZHMgPSBbW3NlbGYgd2lu
ZG93XSBmcmFtZV07CiAgICAgd2luZG93Qm91bmRzLm9yaWdpbiA9IE5TWmVyb1BvaW50OwotICAg
IFdLV2luZG93U2V0Q2xpcFJlY3QoW3NlbGYgd2luZG93XSwgd2luZG93Qm91bmRzKTsKKyAgICBz
ZXRDbGlwUmVjdEZvcldpbmRvdyhbc2VsZiB3aW5kb3ddLCB3aW5kb3dCb3VuZHMpOwogICAgIAog
ICAgIFtbc2VsZiB3aW5kb3ddIG9yZGVyT3V0OnNlbGZdOwogICAgIFtbc2VsZiB3aW5kb3ddIHNl
dEZyYW1lOk5TWmVyb1JlY3QgZGlzcGxheTpZRVNdOwpAQCAtNDg0LDEzICs0OTQsMTMgQEAgLSAo
dm9pZClfc3RhcnRFbnRlckZ1bGxTY3JlZW5BbmltYXRpb25XaXRoRHVyYXRpb246KE5TVGltZUlu
dGVydmFsKWR1cmF0aW9uCiAgICAgW19zY2FsZUFuaW1hdGlvbi5nZXQoKSBzZXRDdXJyZW50UHJv
Z3Jlc3M6MF07CiAgICAgW19zY2FsZUFuaW1hdGlvbi5nZXQoKSBzdGFydEFuaW1hdGlvbl07CiAg
ICAgCi0gICAgLy8gV0tXaW5kb3dTZXRDbGlwUmVjdCB0YWtlcyB3aW5kb3cgY29vcmRpbmF0ZXMs
IHNvIGNvbnZlcnQgZnJvbSBzY3JlZW4gY29vcmRpbmF0ZXMgaGVyZToKKyAgICAvLyBzZXRDbGlw
UmVjdEZvcldpbmRvdyB0YWtlcyB3aW5kb3cgY29vcmRpbmF0ZXMsIHNvIGNvbnZlcnQgZnJvbSBz
Y3JlZW4gY29vcmRpbmF0ZXMgaGVyZToKICAgICBOU1JlY3QgZmluYWxCb3VuZHMgPSBfZmluYWxG
cmFtZTsKICNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwdXNoCiAjcHJhZ21hIGNsYW5nIGRpYWdu
b3N0aWMgaWdub3JlZCAiLVdkZXByZWNhdGVkLWRlY2xhcmF0aW9ucyIKICAgICBmaW5hbEJvdW5k
cy5vcmlnaW4gPSBbW3NlbGYgd2luZG93XSBjb252ZXJ0U2NyZWVuVG9CYXNlOmZpbmFsQm91bmRz
Lm9yaWdpbl07CiAjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcG9wCi0gICAgV0tXaW5kb3dTZXRD
bGlwUmVjdChbc2VsZiB3aW5kb3ddLCBmaW5hbEJvdW5kcyk7CisgICAgc2V0Q2xpcFJlY3RGb3JX
aW5kb3coW3NlbGYgd2luZG93XSwgZmluYWxCb3VuZHMpOwogICAgIAogICAgIFtbc2VsZiB3aW5k
b3ddIG1ha2VLZXlBbmRPcmRlckZyb250OnNlbGZdOwogICAgIApAQCAtNTU2LDEzICs1NjYsMTMg
QEAgLSAodm9pZClfc3RhcnRFeGl0RnVsbFNjcmVlbkFuaW1hdGlvbldpdGhEdXJhdGlvbjooTlNU
aW1lSW50ZXJ2YWwpZHVyYXRpb24KICAgICAKICAgICBbX2JhY2tncm91bmRXaW5kb3cuZ2V0KCkg
b3JkZXJXaW5kb3c6TlNXaW5kb3dCZWxvdyByZWxhdGl2ZVRvOltbc2VsZiB3aW5kb3ddIHdpbmRv
d051bWJlcl1dOwogICAgIAotICAgIC8vIFdLV2luZG93U2V0Q2xpcFJlY3QgdGFrZXMgd2luZG93
IGNvb3JkaW5hdGVzLCBzbyBjb252ZXJ0IGZyb20gc2NyZWVuIGNvb3JkaW5hdGVzIGhlcmU6Cisg
ICAgLy8gc2V0Q2xpcFJlY3RGb3JXaW5kb3cgdGFrZXMgd2luZG93IGNvb3JkaW5hdGVzLCBzbyBj
b252ZXJ0IGZyb20gc2NyZWVuIGNvb3JkaW5hdGVzIGhlcmU6CiAgICAgTlNSZWN0IGZpbmFsQm91
bmRzID0gX2ZpbmFsRnJhbWU7CiAjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcHVzaAogI3ByYWdt
YSBjbGFuZyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XZGVwcmVjYXRlZC1kZWNsYXJhdGlvbnMiCiAg
ICAgZmluYWxCb3VuZHMub3JpZ2luID0gW1tzZWxmIHdpbmRvd10gY29udmVydFNjcmVlblRvQmFz
ZTpmaW5hbEJvdW5kcy5vcmlnaW5dOwogI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHBvcAotICAg
IFdLV2luZG93U2V0Q2xpcFJlY3QoW3NlbGYgd2luZG93XSwgZmluYWxCb3VuZHMpOworICAgIHNl
dENsaXBSZWN0Rm9yV2luZG93KFtzZWxmIHdpbmRvd10sIGZpbmFsQm91bmRzKTsKICAgICAKICAg
ICBbW3NlbGYgd2luZG93XSBzZXRBdXRvZGlzcGxheTpZRVNdOwogICAgIFtbc2VsZiB3aW5kb3dd
IGRpc3BsYXlJZk5lZWRlZF07Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>319569</attachid>
            <date>2017-08-31 20:53:57 -0700</date>
            <delta_ts>2017-08-31 21:02:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-176200-20170831205356.patch</filename>
            <type>text/plain</type>
            <size>61855</size>
            <attacher name="Andy Estes">aestes</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIxMzgxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzVhYmE3NzU1NjhiNjgz
ZmZjOWVjZWE4MzhlNWFmOGRlMTVjOTY4Ni4uNmFhZDZiNmQxYzY3MzhkNGZkMTQwM2U4YjlhYjJj
MDZmZGEzM2M0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBACisyMDE3LTA4LTMxICBBbmR5
IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29jb2FdIFVwc3RyZWFtIENv
cmVHcmFwaGljcy1yZWxhdGVkIFdlYktpdFN5c3RlbUludGVyZmFjZSBmdW5jdGlvbnMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NjIwMAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NDb250ZXh0Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2VTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OnN1YnNhbXBsaW5n
TGV2ZWxGb3JTY2FsZUZhY3Rvcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3Jh
cGhpY3NDb250ZXh0Q0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0Ojpj
bGlwT3V0KToKKyAgICAgICAgKFdlYkNvcmU6OmFwcGx5U2hhZG93T2Zmc2V0V29ya2Fyb3VuZElm
TmVlZGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9QYXR0ZXJuQ0cuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UGF0dGVybjo6Y3JlYXRlUGxhdGZvcm1QYXR0ZXJuIGNvbnN0KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRDb2NvYS5t
bToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6Zm9jdXNSaW5nQ29sb3IpOgor
ICAgICAgICAoV2ViQ29yZTo6ZHJhd0ZvY3VzUmluZ0F0VGltZSk6CisgICAgICAgIChXZWJDb3Jl
OjpkcmF3Rm9jdXNSaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OmRyYXdGb2N1c1JpbmdUb0NvbnRl
eHQpOgorICAgICAgICAoV2ViQ29yZTo6ZHJhd0ZvY3VzUmluZ1RvQ29udGV4dEF0VGltZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vaW9zL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2VJT1MubW06CisgICAg
ICAgICogcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpm
bGlwSW1hZ2VTcGVjKToKKyAgICAgICAgKFdlYkNvcmU6OnNldERyYWdJbWFnZUltcGwpOgorICAg
ICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6c2V0RHJhZ0ltYWdlKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9tYWMvUGxhdGZvcm1FdmVudEZhY3RvcnlNYWMubW06CisgICAgICAgICogcGxhdGZvcm0v
bWFjL1Njcm9sbGJhclRoZW1lTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6bGluZW5CYWNrZ3Jv
dW5kQ29sb3IpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9UaGVtZU1hYy5tbToKKyAgICAgICAg
KFdlYkNvcmU6OmRyYXdDZWxsRm9jdXNSaW5nV2l0aEZyYW1lQXRUaW1lKToKKyAgICAgICAgKFdl
YkNvcmU6OmRyYXdDZWxsRm9jdXNSaW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvV2ViQ29y
ZVN5c3RlbUludGVyZmFjZS5oOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9XZWJDb3JlU3lzdGVt
SW50ZXJmYWNlLm1tOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9XZWJXaW5kb3dBbmltYXRpb24u
bW06CisgICAgICAgIChmbGlwUmVjdCk6CisgICAgICAgIChtYWluV2luZG93U2VydmVyQ29ubmVj
dGlvbklEKToKKyAgICAgICAgKHNldFNjYWxlZEZyYW1lRm9yV2luZG93KToKKyAgICAgICAgKC1b
V2ViV2luZG93U2NhbGVBbmltYXRpb24gc2V0Q3VycmVudFByb2dyZXNzOl0pOgorICAgICAgICAo
LVtXZWJXaW5kb3dGYWRlQW5pbWF0aW9uIHNldEN1cnJlbnRQcm9ncmVzczpdKToKKwogMjAxNy0w
OC0zMCAgQW5keSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+CiAKICAgICAgICAgW01hY10gVXBz
dHJlYW0gQWNjZXNzaWJpbGl0eS1yZWxhdGVkIFdlYktpdFN5c3RlbUludGVyZmFjZSBmdW5jdGlv
bnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
Q29yZS9QQUwvQ2hhbmdlTG9nCmluZGV4IDdiNGI2MDFmZTRlNWUxNTBmODE4OTc0NDU3YzY5ZWVi
OWI2MDEzNTEuLjYyN2UzZjM4ZmI0NDUyNGRiZTA5NDNjYzdkNGVjMjljMTg3ZTc2MzkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUv
UEFML0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDE3LTA4LTMxICBBbmR5IEVzdGVzICA8
YWVzdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29jb2FdIFVwc3RyZWFtIENvcmVHcmFwaGlj
cy1yZWxhdGVkIFdlYktpdFN5c3RlbUludGVyZmFjZSBmdW5jdGlvbnMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NjIwMAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogUEFMLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2o6CisgICAgICAgICogcGFsL3NwaS9jZy9Db3JlR3JhcGhpY3NTUEkuaDoKKyAgICAg
ICAgKiBwYWwvc3BpL21hYy9ISVNlcnZpY2VzU1BJLmg6CisgICAgICAgICogcGFsL3NwaS9tYWMv
TlNHcmFwaGljc1NQSS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9t
YWMvSElTZXJ2aWNlc1NQSS5oLgorCiAyMDE3LTA4LTMwICBBbmR5IEVzdGVzICA8YWVzdGVzQGFw
cGxlLmNvbT4KIAogICAgICAgICBbTWFjXSBVcHN0cmVhbSBBY2Nlc3NpYmlsaXR5LXJlbGF0ZWQg
V2ViS2l0U3lzdGVtSW50ZXJmYWNlIGZ1bmN0aW9ucwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBhODY2NmYzMzg1MzQx
ZDM1NmQ3YTBjNzEzMWVhMmFmZjY4MTRhNjhiLi4yMTVkMmY3ZDg0ZmUwZWNlYmNjOTRhN2QxMTZm
N2YxYTYyNTYxZDA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDE3LTA4LTMxICBBbmR5
IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29jb2FdIFVwc3RyZWFtIENv
cmVHcmFwaGljcy1yZWxhdGVkIFdlYktpdFN5c3RlbUludGVyZmFjZSBmdW5jdGlvbnMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NjIwMAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogUGx1Z2luUHJvY2Vz
cy9tYWMvUGx1Z2luUHJvY2Vzc01hYy5tbToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJvY2Vz
czo6cGxhdGZvcm1Jbml0aWFsaXplUHJvY2Vzcyk6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9X
aW5kb3dTZXJ2ZXJDb25uZWN0aW9uLmg6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9XaW5kb3dT
ZXJ2ZXJDb25uZWN0aW9uLm1tOgorICAgICAgICAoV2ViS2l0OjpyZWdpc3Rlck9jY2x1c2lvbk5v
dGlmaWNhdGlvbkhhbmRsZXIpOgorICAgICAgICAoV2ViS2l0OjpXaW5kb3dTZXJ2ZXJDb25uZWN0
aW9uOjpXaW5kb3dTZXJ2ZXJDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2luZG93U2Vy
dmVyQ29ubmVjdGlvbjo6YXBwbGljYXRpb25XaW5kb3dNb2RpZmljYXRpb25zU3RhcnRlZCk6IERl
bGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViU3lzdGVt
SW50ZXJmYWNlLm1tOgorICAgICAgICAoSW5pdFdlYkNvcmVTeXN0ZW1JbnRlcmZhY2UpOgorCiAy
MDE3LTA4LTMwICBBbmR5IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KIAogICAgICAgICBbTWFj
XSBVcHN0cmVhbSBBY2Nlc3NpYmlsaXR5LXJlbGF0ZWQgV2ViS2l0U3lzdGVtSW50ZXJmYWNlIGZ1
bmN0aW9ucwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4IGJkZjVkMzhhZTdlNWI3NjE0
MDliM2QxMDU0ZDg0MzgzODY4OWZiZGEuLjRkMzE2OTQxYjM2ZjllMzMyM2MzODI5NjgzNDcyNWMw
Njc4OTAwMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNCBAQAor
MjAxNy0wOC0zMSAgQW5keSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+CisKKyAgICAgICAgW0Nv
Y29hXSBVcHN0cmVhbSBDb3JlR3JhcGhpY3MtcmVsYXRlZCBXZWJLaXRTeXN0ZW1JbnRlcmZhY2Ug
ZnVuY3Rpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNzYyMDAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIENhcmJvbi9ISVdlYlZpZXcubW06CisgICAgICAgICgtW05TV2luZG93R3JhcGhpY3NDb250
ZXh0IF93ZWJfc2V0R3JhcGhpY3NQb3J0Ol0pOgorICAgICAgICAob3ZlcnJpZGVDR0NvbnRleHQp
OgorICAgICAgICAocmVzdG9yZUNHQ29udGV4dCk6CisgICAgICAgIChEcmF3KToKKyAgICAgICAg
KiBQbHVnaW5zL0hvc3RlZC9XZWJIb3N0ZWROZXRzY2FwZVBsdWdpblZpZXcubW06CisgICAgICAg
ICgrW1dlYkhvc3RlZE5ldHNjYXBlUGx1Z2luVmlldyBpbml0aWFsaXplXSk6CisgICAgICAgICog
UGx1Z2lucy9XZWJCYXNlTmV0c2NhcGVQbHVnaW5WaWV3Lmg6CisgICAgICAgICogUGx1Z2lucy9X
ZWJCYXNlTmV0c2NhcGVQbHVnaW5WaWV3Lm1tOgorICAgICAgICAoV2ViS2l0OjpzZW5kVXNlckNo
YW5nZU5vdGlmaWNhdGlvbnMpOgorICAgICAgICAqIFBsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5W
aWV3Lm1tOgorICAgICAgICAoK1tXZWJOZXRzY2FwZVBsdWdpblZpZXcgaW5pdGlhbGl6ZV0pOgor
ICAgICAgICAoLVtXZWJOZXRzY2FwZVBsdWdpblZpZXcgc2F2ZUFuZFNldE5ld1BvcnRTdGF0ZUZv
clVwZGF0ZTpdKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJTeXN0ZW1JbnRlcmZhY2Uu
bW06CisgICAgICAgIChJbml0V2ViQ29yZVN5c3RlbUludGVyZmFjZSk6CisgICAgICAgICogV2Vi
Vmlldy9XZWJGcmFtZS5tbToKKyAgICAgICAgKC1bV2ViRnJhbWUgX3BhaW50QmVoYXZpb3JGb3JE
ZXN0aW5hdGlvbkNvbnRleHQ6XSk6CisgICAgICAgICogV2ViVmlldy9XZWJGdWxsU2NyZWVuQ29u
dHJvbGxlci5tbToKKyAgICAgICAgKHNldENsaXBSZWN0Rm9yV2luZG93KToKKyAgICAgICAgKC1b
V2ViRnVsbFNjcmVlbkNvbnRyb2xsZXIgZmluaXNoZWRFbnRlckZ1bGxTY3JlZW5BbmltYXRpb246
XSk6CisgICAgICAgICgtW1dlYkZ1bGxTY3JlZW5Db250cm9sbGVyIGZpbmlzaGVkRXhpdEZ1bGxT
Y3JlZW5BbmltYXRpb246XSk6CisgICAgICAgICgtW1dlYkZ1bGxTY3JlZW5Db250cm9sbGVyIF9z
dGFydEVudGVyRnVsbFNjcmVlbkFuaW1hdGlvbldpdGhEdXJhdGlvbjpdKToKKyAgICAgICAgKC1b
V2ViRnVsbFNjcmVlbkNvbnRyb2xsZXIgX3N0YXJ0RXhpdEZ1bGxTY3JlZW5BbmltYXRpb25XaXRo
RHVyYXRpb246XSk6CisKIDIwMTctMDgtMzAgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29t
PgogCiAgICAgICAgIFtNYWNdIFVwc3RyZWFtIEFjY2Vzc2liaWxpdHktcmVsYXRlZCBXZWJLaXRT
eXN0ZW1JbnRlcmZhY2UgZnVuY3Rpb25zCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwv
UEFMLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9QQUwvUEFMLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZDk4NThmOWVlMmI0MWYwMDU5MzcxYWU5MGNi
MmJmZGRkYTNkMGI4OC4uNjFkOWUzNDZkMGNiNjAzYWQyOWY2MzVkZmUzNTE4ZWZlYmM0ODM3NiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML1BBTC54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9QQUwueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agpAQCAtMTAxLDYgKzEwMSw3IEBACiAJCUExMDI2NTg5MUY1Njc0N0EwMEI0Qzg0NCAvKiBISVRv
b2xib3hTUEkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEExMDI2NTg4MUY1Njc0N0EwMEI0Qzg0NCAvKiBISVRvb2xib3hTUEkuaCAqLzsgfTsKIAkJQTEw
MjY1OEIxRjU2NzQ4QzAwQjRDODQ0IC8qIFF1aWNrRHJhd1NQSS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTEwMjY1OEExRjU2NzQ4QzAwQjRDODQ0IC8q
IFF1aWNrRHJhd1NQSS5oICovOyB9OwogCQlBMTAyNjU4RTFGNTY3RTlEMDBCNEM4NDQgLyogSElT
ZXJ2aWNlc1NQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQTEwMjY1OEQxRjU2N0U5RDAwQjRDODQ0IC8qIEhJU2VydmljZXNTUEkuaCAqLzsgfTsKKwkJ
QTEwODI2RkUxRjU4QTQzMzAwNDc3MkFDIC8qIE5TR3JhcGhpY3NTUEkuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExMDgyNkZEMUY1OEE0MzMwMDQ3NzJB
QyAvKiBOU0dyYXBoaWNzU1BJLmggKi87IH07CiAJCUExRjU1RENGMUY1NTI4RUMwMEVEQjc1RiAv
KiBNZXRhZGF0YVNQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQTFGNTVEQ0UxRjU1MjhFQzAwRURCNzVGIC8qIE1ldGFkYXRhU1BJLmggKi87IH07CiAJ
CUEzMEQ0MTIxMUYwREQwRUEwMEI3MTk1NCAvKiBLaWxsUmluZy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTMwRDQxMUUxRjBERDBFQTAwQjcxOTU0IC8q
IEtpbGxSaW5nLmggKi87IH07CiAJCUEzMEQ0MTIyMUYwREQwRUEwMEI3MTk1NCAvKiBLaWxsUmlu
Z05vbmUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QTMwRDQxMUYxRjBERDBFQTAwQjcxOTU0IC8qIEtpbGxSaW5nTm9uZS5jcHAgKi87IH07CkBAIC0y
MTcsNiArMjE4LDcgQEAKIAkJQTEwMjY1ODgxRjU2NzQ3QTAwQjRDODQ0IC8qIEhJVG9vbGJveFNQ
SS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBISVRvb2xib3hTUEkuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTEwMjY1OEExRjU2NzQ4QzAwQjRDODQ0IC8qIFF1
aWNrRHJhd1NQSS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBRdWlja0RyYXdT
UEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTEwMjY1OEQxRjU2N0U5RDAwQjRD
ODQ0IC8qIEhJU2VydmljZXNTUEkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSElTZXJ2aWNlc1NQSS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBMTA4MjZGRDFGNThBNDMzMDA0NzcyQUMgLyog
TlNHcmFwaGljc1NQSS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOU0dyYXBoaWNzU1BJLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUExRjU1RENFMUY1NTI4RUMwMEVEQjc1RiAvKiBNZXRhZGF0
YVNQSS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBNZXRhZGF0YVNQSS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlBMzBENDExRTFGMEREMEVBMDBCNzE5NTQgLyogS2lsbFJpbmcuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gS2lsbFJpbmcuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQTMwRDQxMUYxRjBERDBFQTAwQjcxOTU0IC8qIEtpbGxSaW5nTm9uZS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBLaWxsUmluZ05vbmUuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzQ5LDYgKzM1MSw3IEBACiAJCQkJMEM3Nzg1
NzUxRjQ1MTMwRjAwRjRFQkI2IC8qIE5TQXBwbGljYXRpb25TUEkuaCAqLywKIAkJCQkwQzc3ODU3
NjFGNDUxMzBGMDBGNEVCQjYgLyogTlNFdmVudFNQSS5oICovLAogCQkJCTBDNzc4NTc3MUY0NTEz
MEYwMEY0RUJCNiAvKiBOU0ZvbnRTUEkuaCAqLywKKwkJCQlBMTA4MjZGRDFGNThBNDMzMDA0Nzcy
QUMgLyogTlNHcmFwaGljc1NQSS5oICovLAogCQkJCTBDNzc4NTc4MUY0NTEzMEYwMEY0RUJCNiAv
KiBOU0ltbWVkaWF0ZUFjdGlvbkdlc3R1cmVSZWNvZ25pemVyU1BJLmggKi8sCiAJCQkJMEM3Nzg1
NzkxRjQ1MTMwRjAwRjRFQkI2IC8qIE5TTWVudVNQSS5oICovLAogCQkJCTBDNzc4NTdBMUY0NTEz
MEYwMEY0RUJCNiAvKiBOU1Bhc3RlYm9hcmRTUEkuaCAqLywKQEAgLTU0Miw2ICs1NDUsNyBAQAog
CQkJCTBDMkRBMTRFMUYzQkVCNDkwMERCQzMxNyAvKiBOU0V4dGVuc2lvblNQSS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMEMyREExNEYxRjNCRUI0OTAwREJDMzE3IC8qIE5TRmlsZU1hbmFnZXJTUEku
aCBpbiBIZWFkZXJzICovLAogCQkJCTBDNzc4NTkwMUY0NTEzMEYwMEY0RUJCNiAvKiBOU0ZvbnRT
UEkuaCBpbiBIZWFkZXJzICovLAorCQkJCUExMDgyNkZFMUY1OEE0MzMwMDQ3NzJBQyAvKiBOU0dy
YXBoaWNzU1BJLmggaW4gSGVhZGVycyAqLywKIAkJCQkwQzc3ODU5MTFGNDUxMzBGMDBGNEVCQjYg
LyogTlNJbW1lZGlhdGVBY3Rpb25HZXN0dXJlUmVjb2duaXplclNQSS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMEM3Nzg1OTIxRjQ1MTMwRjAwRjRFQkI2IC8qIE5TTWVudVNQSS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMEM3Nzg1OTMxRjQ1MTMwRjAwRjRFQkI2IC8qIE5TUGFzdGVib2FyZFNQSS5oIGlu
IEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jZy9D
b3JlR3JhcGhpY3NTUEkuaCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NnL0NvcmVHcmFw
aGljc1NQSS5oCmluZGV4IDdjMjkxYzkxNGQ2OWY1NmQ4NmRiYjRhODgxZmIyMzE4OWM1YTVhNWMu
LmRjYzgzOGY0MTE0MTZhNzUzODVjNzU1MTFiOTFmNzNkNTBhNGJlNDggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NnL0NvcmVHcmFwaGljc1NQSS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NnL0NvcmVHcmFwaGljc1NQSS5oCkBAIC0xMzYsOSArMTM2
LDkgQEAgdHlwZWRlZiBzdHJ1Y3QgQ0dTUmVnaW9uT2JqZWN0KiBDR1JlZ2lvblJlZjsKIHN0YXRp
YyBpbmxpbmUgQ0dGbG9hdCBDR0Zsb2F0TWluKENHRmxvYXQgYSwgQ0dGbG9hdCBiKSB7IHJldHVy
biBpc25hbihhKSA/IGIgOiAoKGlzbmFuKGIpIHx8IGEgPCBiKSA/IGEgOiBiKTsgfQogCiB0eXBl
ZGVmIHN0cnVjdCBDR0ZvbnRDYWNoZSBDR0ZvbnRDYWNoZTsKK3R5cGVkZWYgdWludDMyX3QgQ0dT
Q29ubmVjdGlvbklEOwogCiAjaWYgUExBVEZPUk0oTUFDKQotdHlwZWRlZiB1aW50MzJfdCBDR1ND
b25uZWN0aW9uSUQ7CiB0eXBlZGVmIHVpbnQzMl90IENHU1dpbmRvd0lEOwogdHlwZWRlZiB1aW50
MzJfdCBDR1NXaW5kb3dDb3VudDsKIHR5cGVkZWYgQ0dTV2luZG93SUQgKkNHU1dpbmRvd0lETGlz
dDsKQEAgLTE1MCw4ICsxNTAsNTUgQEAgZW51bSB7CiB0eXBlZGVmIHVpbnQzMl90IENHU1dpbmRv
d0NhcHR1cmVPcHRpb25zOwogI2VuZGlmCiAKK3R5cGVkZWYgQ0ZfRU5VTSh1aW50MzJfdCwgQ0dT
Tm90aWZpY2F0aW9uVHlwZSkgeworICAgIGtDR1NGaXJzdENvbm5lY3Rpb25Ob3RpZmljYXRpb24g
PSA5MDAsCisgICAga0NHU0ZpcnN0U2Vzc2lvbk5vdGlmaWNhdGlvbiA9IDE1MDAsCit9OworCitz
dGF0aWMgY29uc3QgQ0dTTm90aWZpY2F0aW9uVHlwZSBrQ0dTZXNzaW9uQ29uc29sZUNvbm5lY3Qg
PSBrQ0dTRmlyc3RTZXNzaW9uTm90aWZpY2F0aW9uOworc3RhdGljIGNvbnN0IENHU05vdGlmaWNh
dGlvblR5cGUga0NHU2Vzc2lvbkNvbnNvbGVEaXNjb25uZWN0ID0gKENHU05vdGlmaWNhdGlvblR5
cGUpKGtDR1Nlc3Npb25Db25zb2xlQ29ubmVjdCArIDEpOworc3RhdGljIGNvbnN0IENHU05vdGlm
aWNhdGlvblR5cGUga0NHU0Nvbm5lY3Rpb25XaW5kb3dNb2RpZmljYXRpb25zU3RhcnRlZCA9IChD
R1NOb3RpZmljYXRpb25UeXBlKShrQ0dTRmlyc3RDb25uZWN0aW9uTm90aWZpY2F0aW9uICsgNik7
CitzdGF0aWMgY29uc3QgQ0dTTm90aWZpY2F0aW9uVHlwZSBrQ0dTQ29ubmVjdGlvbldpbmRvd01v
ZGlmaWNhdGlvbnNTdG9wcGVkID0gKENHU05vdGlmaWNhdGlvblR5cGUpKGtDR1NGaXJzdENvbm5l
Y3Rpb25Ob3RpZmljYXRpb24gKyA3KTsKKwordHlwZWRlZiBDRl9FTlVNIChpbnQzMl90LCBDR0Zv
Y3VzUmluZ1RpbnQpIHsKKyAgICBrQ0dGb2N1c1JpbmdUaW50Qmx1ZSA9IDAsCisgICAga0NHRm9j
dXNSaW5nVGludEdyYXBoaXRlID0gMQorfTsKKwordHlwZWRlZiBDRl9FTlVNIChpbnQzMl90LCBD
R1N0eWxlRHJhd09yZGVyaW5nKSB7CisgICAga0NHU3R5bGVEcmF3T3JkZXJpbmdTdHlsZU9ubHkg
PSAwLAorICAgIGtDR1N0eWxlRHJhd09yZGVyaW5nQmVsb3cgPSAxLAorICAgIGtDR1N0eWxlRHJh
d09yZGVyaW5nQWJvdmUgPSAyCit9OworCit0eXBlZGVmIENGX0VOVU0gKGludDMyX3QsIENHRm9j
dXNSaW5nT3JkZXJpbmcpIHsKKyAgICBrQ0dGb2N1c1JpbmdPcmRlcmluZ05vbmUgPSBrQ0dTdHls
ZURyYXdPcmRlcmluZ1N0eWxlT25seSwKKyAgICBrQ0dGb2N1c1JpbmdPcmRlcmluZ0JlbG93ID0g
a0NHU3R5bGVEcmF3T3JkZXJpbmdCZWxvdywKKyAgICBrQ0dGb2N1c1JpbmdPcmRlcmluZ0Fib3Zl
ID0ga0NHU3R5bGVEcmF3T3JkZXJpbmdBYm92ZQorfTsKKworc3RydWN0IENHRm9jdXNSaW5nU3R5
bGUgeworICAgIHVuc2lnbmVkIGludCB2ZXJzaW9uOworICAgIENHRm9jdXNSaW5nVGludCB0aW50
OworICAgIENHRm9jdXNSaW5nT3JkZXJpbmcgb3JkZXJpbmc7CisgICAgQ0dGbG9hdCBhbHBoYTsK
KyAgICBDR0Zsb2F0IHJhZGl1czsKKyAgICBDR0Zsb2F0IHRocmVzaG9sZDsKKyAgICBDR1JlY3Qg
Ym91bmRzOworICAgIGludCBhY2N1bXVsYXRlOworfTsKK3R5cGVkZWYgc3RydWN0IENHRm9jdXNS
aW5nU3R5bGUgQ0dGb2N1c1JpbmdTdHlsZTsKKwogI2VuZGlmIC8vIFVTRShBUFBMRV9JTlRFUk5B
TF9TREspCiAKK3R5cGVkZWYgc3RydWN0IENGX0JSSURHRURfVFlQRShpZCkgQ0dTdHlsZSAqQ0dT
dHlsZVJlZjsKK3R5cGVkZWYgc3RydWN0IENGX0JSSURHRURfVFlQRShpZCkgQ0dTUmVnaW9uT2Jq
ZWN0KiBDR1NSZWdpb25PYmo7Cit0eXBlZGVmIHZvaWQqIENHU05vdGlmaWNhdGlvbkFyZzsKK3R5
cGVkZWYgdm9pZCogQ0dTTm90aWZpY2F0aW9uRGF0YTsKK3R5cGVkZWYgdWludDMyX3QgQ0dTQnl0
ZUNvdW50OwordHlwZWRlZiB2b2lkICgqQ0dTTm90aWZ5UHJvY1B0cikoQ0dTTm90aWZpY2F0aW9u
VHlwZSwgdm9pZCogZGF0YSwgdWludDMyX3QgZGF0YV9sZW5ndGgsIHZvaWQqIGFyZyk7Cit0eXBl
ZGVmIHZvaWQgKCpDR1NOb3RpZnlDb25uZWN0aW9uUHJvY1B0cikoQ0dTTm90aWZpY2F0aW9uVHlw
ZSwgdm9pZCogZGF0YSwgdWludDMyX3QgZGF0YV9sZW5ndGgsIHZvaWQqIGFyZywgQ0dTQ29ubmVj
dGlvbklEKTsKKwogV1RGX0VYVEVSTl9DX0JFR0lOCiAKIENHQ29sb3JSZWYgQ0dDb2xvclRyYW5z
Zm9ybUNvbnZlcnRDb2xvcihDR0NvbG9yVHJhbnNmb3JtUmVmLCBDR0NvbG9yUmVmLCBDR0NvbG9y
UmVuZGVyaW5nSW50ZW50KTsKQEAgLTIyNSw0ICsyNzIsMTMgQEAgQ0dFcnJvciBDR1NHZXRTY3Jl
ZW5SZWN0Rm9yV2luZG93KENHU0Nvbm5lY3Rpb25JRCwgQ0dTV2luZG93SUQsIENHUmVjdCAqKTsK
IGJvb2wgQ29sb3JTeW5jUHJvZmlsZUlzV2lkZUdhbXV0KENvbG9yU3luY1Byb2ZpbGVSZWYpOwog
I2VuZGlmCiAKK2Jvb2wgQ0dDb250ZXh0RHJhd3NXaXRoQ29ycmVjdFNoYWRvd09mZnNldHMoQ0dD
b250ZXh0UmVmKTsKK3ZvaWQgQ0dDb250ZXh0U2V0U3R5bGUoQ0dDb250ZXh0UmVmLCBDR1N0eWxl
UmVmKTsKK0NHRXJyb3IgQ0dTUGFja2FnZXNFbmFibGVDb25uZWN0aW9uT2NjbHVzaW9uTm90aWZp
Y2F0aW9ucyhDR1NDb25uZWN0aW9uSUQsIGJvb2wgZmxhZywgYm9vbCogb3V0Q3VycmVudFZpc2li
aWxpdHlTdGF0ZSk7CitDR0Vycm9yIENHU1BhY2thZ2VzRW5hYmxlQ29ubmVjdGlvbldpbmRvd01v
ZGlmaWNhdGlvbk5vdGlmaWNhdGlvbnMoQ0dTQ29ubmVjdGlvbklELCBib29sIGZsYWcsIGJvb2wq
IG91dENvbm5lY3Rpb25Jc0N1cnJlbnRseUlkbGUpOworQ0dFcnJvciBDR1NSZWdpc3RlckNvbm5l
Y3Rpb25Ob3RpZnlQcm9jKENHU0Nvbm5lY3Rpb25JRCwgQ0dTTm90aWZ5Q29ubmVjdGlvblByb2NQ
dHIsIENHU05vdGlmaWNhdGlvblR5cGUsIHZvaWQqIGFyZyk7CitDR0Vycm9yIENHU1JlZ2lzdGVy
Tm90aWZ5UHJvYyhDR1NOb3RpZnlQcm9jUHRyLCBDR1NOb3RpZmljYXRpb25UeXBlLCB2b2lkKiBh
cmcpOworQ0dQYXR0ZXJuUmVmIENHUGF0dGVybkNyZWF0ZVdpdGhJbWFnZTIoQ0dJbWFnZVJlZiwg
Q0dBZmZpbmVUcmFuc2Zvcm0sIENHUGF0dGVyblRpbGluZyk7CitDR1N0eWxlUmVmIENHU3R5bGVD
cmVhdGVGb2N1c1JpbmdXaXRoQ29sb3IoY29uc3QgQ0dGb2N1c1JpbmdTdHlsZSosIENHQ29sb3JS
ZWYpOworCiBXVEZfRVhURVJOX0NfRU5ECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwv
cGFsL3NwaS9tYWMvSElTZXJ2aWNlc1NQSS5oIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkv
bWFjL0hJU2VydmljZXNTUEkuaAppbmRleCA5ZjM1ZGNkNGQwM2E1N2EwODZiMGEzNjVkZmIzOWRk
ZmZjYzgxOTg1Li42ODNhYmExYTk1ZThiODc0ZTZkZmY0NDhhYTA0MTcxYzUxMmZkNWMyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9tYWMvSElTZXJ2aWNlc1NQSS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL21hYy9ISVNlcnZpY2VzU1BJLmgKQEAgLTI4
LDkgKzI4LDMxIEBACiAjaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKIAogI2luY2x1ZGUgPEhJ
U2VydmljZXMvQVhUZXh0TWFya2VyLmg+CisjaW5jbHVkZSA8SElTZXJ2aWNlcy9Db3JlRHJhZy5o
PgorCisjZWxzZQorCitlbnVtIHsKKyAgICBrQ29yZURyYWdJbWFnZVNwZWNWZXJzaW9uT25lID0g
MSwKK307CisKK3N0cnVjdCBDb3JlRHJhZ0ltYWdlU3BlYyB7CisgICAgVUludDMyIHZlcnNpb247
CisgICAgU0ludDMyIHBpeGVsc1dpZGU7CisgICAgU0ludDMyIHBpeGVsc0hpZ2g7CisgICAgU0lu
dDMyIGJpdHNQZXJTYW1wbGU7CisgICAgU0ludDMyIHNhbXBsZXNQZXJQaXhlbDsKKyAgICBTSW50
MzIgYml0c1BlclBpeGVsOworICAgIFNJbnQzMiBieXRlc1BlclJvdzsKKyAgICBCb29sZWFuIGlz
UGxhbmFyOworICAgIEJvb2xlYW4gaGFzQWxwaGE7CisgICAgY29uc3QgVUludDgqIGRhdGFbNV07
Cit9OwogCiAjZW5kaWYKIAordHlwZWRlZiBzdHJ1Y3QgQ29yZURyYWdJbWFnZVNwZWMgQ29yZURy
YWdJbWFnZVNwZWM7Cit0eXBlZGVmIHN0cnVjdCBPcGFxdWVDb3JlRHJhZyogQ29yZURyYWdSZWY7
CiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBfX0FYVGV4dE1hcmtlciAqQVhUZXh0TWFya2VyUmVmOwog
dHlwZWRlZiBjb25zdCBzdHJ1Y3QgX19BWFRleHRNYXJrZXJSYW5nZSAqQVhUZXh0TWFya2VyUmFu
Z2VSZWY7CiAKQEAgLTQ0LDUgKzY2LDYgQEAgY29uc3QgVUludDgqIEFYVGV4dE1hcmtlckdldEJ5
dGVQdHIoQVhUZXh0TWFya2VyUmVmKTsKIEFYVGV4dE1hcmtlclJhbmdlUmVmIEFYVGV4dE1hcmtl
clJhbmdlQ3JlYXRlKENGQWxsb2NhdG9yUmVmLCBBWFRleHRNYXJrZXJSZWYgc3RhcnRNYXJrZXIs
IEFYVGV4dE1hcmtlclJlZiBlbmRNYXJrZXIpOwogQVhUZXh0TWFya2VyUmVmIEFYVGV4dE1hcmtl
clJhbmdlQ29weVN0YXJ0TWFya2VyKEFYVGV4dE1hcmtlclJhbmdlUmVmKTsKIEFYVGV4dE1hcmtl
clJlZiBBWFRleHRNYXJrZXJSYW5nZUNvcHlFbmRNYXJrZXIoQVhUZXh0TWFya2VyUmFuZ2VSZWYp
OworQ29yZURyYWdSZWYgQ29yZURyYWdHZXRDdXJyZW50RHJhZygpOwogCiBXVEZfRVhURVJOX0Nf
RU5ECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9tYWMvTlNHcmFwaGlj
c1NQSS5oIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvbWFjL05TR3JhcGhpY3NTUEkuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4xMDYxZTJlOTk5YjE4YjIxMGJlMDAxY2FhYzI3YmEyYjJiYWJiMmU2Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvbWFjL05TR3JhcGhpY3NT
UEkuaApAQCAtMCwwICsxLDQyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBQ
TEFURk9STShNQUMpCisKKyNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQorCisjaW5jbHVkZSA8
QXBwS2l0L05TR3JhcGhpY3NfUHJpdmF0ZS5oPgorCisjZW5kaWYKKworV1RGX0VYVEVSTl9DX0JF
R0lOCisKK0JPT0wgTlNJbml0aWFsaXplQ0dGb2N1c1JpbmdTdHlsZUZvclRpbWUoTlNGb2N1c1Jp
bmdQbGFjZW1lbnQsIENHRm9jdXNSaW5nU3R5bGUqLCBOU1RpbWVJbnRlcnZhbCk7CisKK1dURl9F
WFRFUk5fQ19FTkQKKworI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKaW5kZXggMThhY2RkYmU3
ZWZmZmE0MjlkMTg1NzgzOWFiNmU2Njc0NjZhM2Q4NS4uYzE0YjJhNTVlNmFhN2Y5MGQyMDAzYzQ2
Njg0MzQzMjJlMDg1NDU5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKQEAgLTQ0NSw2ICs0NDUsNyBAQCBwdWJsaWM6CiAjaWYg
UExBVEZPUk0oTUFDKQogICAgIHZvaWQgZHJhd0ZvY3VzUmluZyhjb25zdCBQYXRoJiwgZG91Ymxl
IHRpbWVPZmZzZXQsIGJvb2wmIG5lZWRzUmVkcmF3KTsKICAgICB2b2lkIGRyYXdGb2N1c1Jpbmco
Y29uc3QgVmVjdG9yPEZsb2F0UmVjdD4mLCBkb3VibGUgdGltZU9mZnNldCwgYm9vbCYgbmVlZHNS
ZWRyYXcpOworICAgIHN0YXRpYyBDR0NvbG9yUmVmIGZvY3VzUmluZ0NvbG9yKCk7CiAjZW5kaWYK
IAogICAgIHZvaWQgc2V0TGluZUNhcChMaW5lQ2FwKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcAppbmRleCA2Njk2Yzk2MGE1ODc1ZjA0MzE3
MjliMTE5YWI2YjI0MTI3ZDdhNWNhLi4wMjI4ZTM5MjlhMjY2ZWE5NzMyYmJhOGVlNjA1NzNmYTUw
OWEzNTBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VT
b3VyY2UuY3BwCkBAIC0xODQsNyArMTg0LDcgQEAgU3Vic2FtcGxpbmdMZXZlbCBJbWFnZVNvdXJj
ZTo6c3Vic2FtcGxpbmdMZXZlbEZvclNjYWxlRmFjdG9yKEdyYXBoaWNzQ29udGV4dCYgY28KIHsK
ICNpZiBVU0UoQ0cpCiAgICAgLy8gTmV2ZXIgdXNlIHN1YnNhbXBsZWQgaW1hZ2VzIGZvciBkcmF3
aW5nIGludG8gUERGIGNvbnRleHRzLgotICAgIGlmICh3a0NHQ29udGV4dElzUERGQ29udGV4dChj
b250ZXh0LnBsYXRmb3JtQ29udGV4dCgpKSkKKyAgICBpZiAoQ0dDb250ZXh0R2V0VHlwZShjb250
ZXh0LnBsYXRmb3JtQ29udGV4dCgpKSA9PSBrQ0dDb250ZXh0VHlwZVBERikKICAgICAgICAgcmV0
dXJuIFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQ7CiAKICAgICBmbG9hdCBzY2FsZSA9IHN0ZDo6
bWluKGZsb2F0KDEpLCBzdGQ6Om1heChzY2FsZUZhY3Rvci53aWR0aCgpLCBzY2FsZUZhY3Rvci5o
ZWlnaHQoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCmluZGV4IGQ1ODgzOWFlNThiYjUxMGQ1MDdkNDY1
YjA2MTkyZTAyMGJhZDVhYmQuLjM3ODhiYzI0MTQyNGY1NDY3ZWYxYTIxYTI2ZWNmZmE0ZTgzY2Ew
MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBo
aWNzQ29udGV4dENHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9HcmFwaGljc0NvbnRleHRDRy5jcHAKQEAgLTk4Nyw3ICs5ODcsNyBAQCB2b2lkIEdyYXBoaWNz
Q29udGV4dDo6Y2xpcE91dChjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiAgICAgLy8gaGFzIGNlcnRh
aW4gdHJhbnNmb3JtcyB0aGF0IGFyZW4ndCBqdXN0IGEgdHJhbnNsYXRpb24gb3IgYSBzY2FsZS4g
QW5kIGR1ZSB0byA8cmRhcjovL3Byb2JsZW0vMTQ2MzQ0NTM+CiAgICAgLy8gd2UgY2Fubm90IHVz
ZSBpdCBpbiBmb3IgYSBwcmludGluZyBjb250ZXh0IGVpdGhlci4KICAgICBjb25zdCBBZmZpbmVU
cmFuc2Zvcm0mIGN0bSA9IGdldENUTSgpOwotICAgIGJvb2wgY2FuVXNlQ0dSZWN0SW5maW5pdGUg
PSAhd2tDR0NvbnRleHRJc1BERkNvbnRleHQocGxhdGZvcm1Db250ZXh0KCkpICYmICghaXNBY2Nl
bGVyYXRlZENvbnRleHQoKSB8fCAoIWN0bS5iKCkgJiYgIWN0bS5jKCkpKTsKKyAgICBib29sIGNh
blVzZUNHUmVjdEluZmluaXRlID0gQ0dDb250ZXh0R2V0VHlwZShwbGF0Zm9ybUNvbnRleHQoKSkg
IT0ga0NHQ29udGV4dFR5cGVQREYgJiYgKCFpc0FjY2VsZXJhdGVkQ29udGV4dCgpIHx8ICghY3Rt
LmIoKSAmJiAhY3RtLmMoKSkpOwogICAgIENHUmVjdCByZWN0c1syXSA9IHsgY2FuVXNlQ0dSZWN0
SW5maW5pdGUgPyBDR1JlY3RJbmZpbml0ZSA6IENHQ29udGV4dEdldENsaXBCb3VuZGluZ0JveChw
bGF0Zm9ybUNvbnRleHQoKSksIHJlY3QgfTsKICAgICBDR0NvbnRleHRCZWdpblBhdGgocGxhdGZv
cm1Db250ZXh0KCkpOwogICAgIENHQ29udGV4dEFkZFJlY3RzKHBsYXRmb3JtQ29udGV4dCgpLCBy
ZWN0cywgMik7CkBAIC0xMDkzLDcgKzEwOTMsNyBAQCBzdGF0aWMgdm9pZCBhcHBseVNoYWRvd09m
ZnNldFdvcmthcm91bmRJZk5lZWRlZChjb25zdCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsCiAg
ICAgaWYgKGNvbnRleHQuaXNBY2NlbGVyYXRlZENvbnRleHQoKSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgaWYgKHdrQ0dDb250ZXh0RHJhd3NXaXRoQ29ycmVjdFNoYWRvd09mZnNldHMoY29udGV4
dC5wbGF0Zm9ybUNvbnRleHQoKSkpCisgICAgaWYgKENHQ29udGV4dERyYXdzV2l0aENvcnJlY3RT
aGFkb3dPZmZzZXRzKGNvbnRleHQucGxhdGZvcm1Db250ZXh0KCkpKQogICAgICAgICByZXR1cm47
CiAKICAgICAvLyBXb3JrIGFyb3VuZCA8cmRhcjovL3Byb2JsZW0vNTUzOTM4OD4gYnkgZW5zdXJp
bmcgdGhhdCB0aGUgb2Zmc2V0cyB3aWxsIGdldCB0cnVuY2F0ZWQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BhdHRlcm5DRy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QYXR0ZXJuQ0cuY3BwCmluZGV4IDk4ZTY5ZGU4ZWQ4
OWEyNGU4ODZhMTQyYTA4Mzk1OWUyYzcyMTM1ZjAuLmQwZTIxYzg3M2FhMmRjMzBjNTNjYzhiYWI0
ZjhiMDQxNDM0MDAwOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NnL1BhdHRlcm5DRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvUGF0dGVybkNHLmNwcApAQCAtMzEsOCArMzEsOCBAQAogCiAjaW5jbHVkZSAiQWZmaW5l
VHJhbnNmb3JtLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCi0KICNpbmNsdWRlIDxD
b3JlR3JhcGhpY3MvQ29yZUdyYXBoaWNzLmg+CisjaW5jbHVkZSA8cGFsL3NwaS9jZy9Db3JlR3Jh
cGhpY3NTUEkuaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogCiAjaWYgUExBVEZPUk0o
Q09DT0EpCkBAIC03NCw3ICs3NCw3IEBAIENHUGF0dGVyblJlZiBQYXR0ZXJuOjpjcmVhdGVQbGF0
Zm9ybVBhdHRlcm4oY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB1c2VyU3BhY2VUcmFuCiAgICAgLy8g
SWYgd2UncmUgcmVwZWF0aW5nIGluIGJvdGggZGlyZWN0aW9ucywgd2UgY2FuIHVzZSBpbWFnZS1i
YWNrZWQgcGF0dGVybnMKICAgICAvLyBpbnN0ZWFkIG9mIGN1c3RvbSBwYXR0ZXJucywgYW5kIGF2
b2lkIHRpbGluZy1lZGdlIHBpeGVsIGNyYWNrcy4KICAgICBpZiAobV9yZXBlYXRYICYmIG1fcmVw
ZWF0WSkKLSAgICAgICAgcmV0dXJuIHdrQ0dQYXR0ZXJuQ3JlYXRlV2l0aEltYWdlQW5kVHJhbnNm
b3JtKHRpbGVJbWFnZSgpLm5hdGl2ZUltYWdlKCkuZ2V0KCksIHBhdHRlcm5UcmFuc2Zvcm0sIHdr
UGF0dGVyblRpbGluZ0NvbnN0YW50U3BhY2luZyk7CisgICAgICAgIHJldHVybiBDR1BhdHRlcm5D
cmVhdGVXaXRoSW1hZ2UyKHRpbGVJbWFnZSgpLm5hdGl2ZUltYWdlKCkuZ2V0KCksIHBhdHRlcm5U
cmFuc2Zvcm0sIGtDR1BhdHRlcm5UaWxpbmdDb25zdGFudFNwYWNpbmcpOwogCiAgICAgLy8gSWYg
RkxUX01BWCBzaG91bGQgYWxzbyBiZSB1c2VkIGZvciB4U3RlcCBvciB5U3RlcCwgbm90aGluZyBp
cyByZW5kZXJlZC4gVXNpbmcgZnJhY3Rpb25zIG9mIEZMVF9NQVggYWxzbwogICAgIC8vIHJlc3Vs
dCBpbiBub3RoaW5nIGJlaW5nIHJlbmRlcmVkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0Q29jb2EubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRDb2NvYS5tbQpp
bmRleCA2N2Y0ZGViMTcyYjZjMGZlMjNjMWIxZDFmYjA5ZWFiOGFkYWUxMzFiLi40NWQ3NzM5ZDY0
NmQ3OGExN2U3ZDcyMTg5ZDJkN2NjMzExZGNjN2NkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRDb2NvYS5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRDb2Nv
YS5tbQpAQCAtMjksMTAgKzI5LDEzIEBACiAjaW1wb3J0ICJHcmFwaGljc0NvbnRleHRDRy5oIgog
I2ltcG9ydCAiR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlQ0cuaCIKICNpbXBvcnQgIklu
dFJlY3QuaCIKKyNpbXBvcnQgPHBhbC9zcGkvY2cvQ29yZUdyYXBoaWNzU1BJLmg+CisjaW1wb3J0
IDxwYWwvc3BpL21hYy9OU0dyYXBoaWNzU1BJLmg+CisjaW1wb3J0IDx3dGYvU3RkTGliRXh0cmFz
Lmg+CisKICNpZiBVU0UoQVBQS0lUKQogI2ltcG9ydCA8QXBwS2l0L0FwcEtpdC5oPgogI2VuZGlm
Ci0jaW1wb3J0IDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKICNpZiBQTEFURk9STShJT1MpCiAjaW1w
b3J0ICJDb2xvci5oIgpAQCAtNDMsNyArNDYsNiBAQAogI2lmICFQTEFURk9STShJT1MpCiAjaW1w
b3J0ICJMb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHQuaCIKICNlbmRpZgotI2ltcG9ydCAiV2Vi
Q29yZVN5c3RlbUludGVyZmFjZS5oIgogCiBAY2xhc3MgTlNDb2xvcjsKIApAQCAtNTcsMTEgKzU5
LDQ3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIC8vIGV4Y2VwdGlvbnMgZm9yIHRob3NlLgogCiAj
aWYgIVBMQVRGT1JNKElPUykKK0NHQ29sb3JSZWYgR3JhcGhpY3NDb250ZXh0Ojpmb2N1c1JpbmdD
b2xvcigpCit7CisgICAgc3RhdGljIENHQ29sb3JSZWYgY29sb3I7CisgICAgaWYgKCFjb2xvcikg
eworICAgICAgICBDR0Zsb2F0IGNvbG9yQ29tcG9uZW50c1tdID0geyAwLjUsIDAuNzUsIDEuMCwg
MS4wIH07CisgICAgICAgIGF1dG8gY29sb3JTcGFjZSA9IGFkb3B0Q0YoQ0dDb2xvclNwYWNlQ3Jl
YXRlV2l0aE5hbWUoa0NHQ29sb3JTcGFjZVNSR0IpKTsKKyAgICAgICAgY29sb3IgPSBDR0NvbG9y
Q3JlYXRlKGNvbG9yU3BhY2UuZ2V0KCksIGNvbG9yQ29tcG9uZW50cyk7CisgICAgfQorICAgIHJl
dHVybiBjb2xvcjsKK30KKworc3RhdGljIGJvb2wgZHJhd0ZvY3VzUmluZ0F0VGltZShDR0NvbnRl
eHRSZWYgY29udGV4dCwgTlNUaW1lSW50ZXJ2YWwgdGltZU9mZnNldCkKK3sKKyAgICBDR0ZvY3Vz
UmluZ1N0eWxlIGZvY3VzUmluZ1N0eWxlOworICAgIEJPT0wgbmVlZHNSZXBhaW50ID0gTlNJbml0
aWFsaXplQ0dGb2N1c1JpbmdTdHlsZUZvclRpbWUoTlNGb2N1c1JpbmdPbmx5LCAmZm9jdXNSaW5n
U3R5bGUsIHRpbWVPZmZzZXQpOworCisgICAgLy8gV2Ugd2FudCB0byByZXNwZWN0IHRoZSBDR0Nv
bnRleHQgY2xpcHBpbmcgYW5kIGFsc28gbm90IG92ZXJwYWludCBhbnkKKyAgICAvLyBleGlzdGlu
ZyBmb2N1cyByaW5nLiBUaGUgd2F5IHRvIGRvIHRoaXMgaXMgc2V0IGFjY3VtdWxhdGUgdG8KKyAg
ICAvLyAtMS4gQWNjb3JkaW5nIHRvIENvcmVHcmFwaGljcywgdGhlIHJlYXNvbmluZyBmb3IgdGhp
cyBiZWhhdmlvciBoYXMgYmVlbgorICAgIC8vIGxvc3QgaW4gdGltZS4KKyAgICBmb2N1c1JpbmdT
dHlsZS5hY2N1bXVsYXRlID0gLTE7CisgICAgYXV0byBzdHlsZSA9IGFkb3B0Q0YoQ0dTdHlsZUNy
ZWF0ZUZvY3VzUmluZ1dpdGhDb2xvcigmZm9jdXNSaW5nU3R5bGUsIEdyYXBoaWNzQ29udGV4dDo6
Zm9jdXNSaW5nQ29sb3IoKSkpOworCisgICAgQ0dDb250ZXh0U2F2ZUdTdGF0ZShjb250ZXh0KTsK
KyAgICBDR0NvbnRleHRTZXRTdHlsZShjb250ZXh0LCBzdHlsZS5nZXQoKSk7CisgICAgQ0dDb250
ZXh0RmlsbFBhdGgoY29udGV4dCk7CisgICAgQ0dDb250ZXh0UmVzdG9yZUdTdGF0ZShjb250ZXh0
KTsKKworICAgIHJldHVybiBuZWVkc1JlcGFpbnQ7Cit9CisKK3N0YXRpYyB2b2lkIGRyYXdGb2N1
c1JpbmcoQ0dDb250ZXh0UmVmIGNvbnRleHQpCit7CisgICAgZHJhd0ZvY3VzUmluZ0F0VGltZShj
b250ZXh0LCBEQkxfTUFYKTsKK30KKwogc3RhdGljIHZvaWQgZHJhd0ZvY3VzUmluZ1RvQ29udGV4
dChDR0NvbnRleHRSZWYgY29udGV4dCwgQ0dQYXRoUmVmIGZvY3VzUmluZ1BhdGgpCiB7CiAgICAg
Q0dDb250ZXh0QmVnaW5QYXRoKGNvbnRleHQpOwogICAgIENHQ29udGV4dEFkZFBhdGgoY29udGV4
dCwgZm9jdXNSaW5nUGF0aCk7Ci0gICAgd2tEcmF3Rm9jdXNSaW5nKGNvbnRleHQsIG51bGxwdHIs
IDApOworICAgIGRyYXdGb2N1c1JpbmcoY29udGV4dCk7CiB9CiAKIHN0YXRpYyBib29sIGRyYXdG
b2N1c1JpbmdUb0NvbnRleHRBdFRpbWUoQ0dDb250ZXh0UmVmIGNvbnRleHQsIENHUGF0aFJlZiBm
b2N1c1JpbmdQYXRoLCBkb3VibGUgdGltZU9mZnNldCkKQEAgLTY5LDcgKzEwNyw3IEBAIHN0YXRp
YyBib29sIGRyYXdGb2N1c1JpbmdUb0NvbnRleHRBdFRpbWUoQ0dDb250ZXh0UmVmIGNvbnRleHQs
IENHUGF0aFJlZiBmb2N1c1JpCiAgICAgVU5VU0VEX1BBUkFNKHRpbWVPZmZzZXQpOwogICAgIENH
Q29udGV4dEJlZ2luUGF0aChjb250ZXh0KTsKICAgICBDR0NvbnRleHRBZGRQYXRoKGNvbnRleHQs
IGZvY3VzUmluZ1BhdGgpOwotICAgIHJldHVybiB3a0RyYXdGb2N1c1JpbmdBdFRpbWUoY29udGV4
dCwgc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjptYXgoKSk7CisgICAgcmV0dXJuIGRyYXdG
b2N1c1JpbmdBdFRpbWUoY29udGV4dCwgc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjptYXgo
KSk7CiB9CiAjZW5kaWYgLy8gIVBMQVRGT1JNKElPUykKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW9zL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2VJT1MubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViQ29yZVN5c3RlbUludGVyZmFjZUlPUy5tbQppbmRleCAw
OWExODI4MTRkMTQwMTNiN2M4OGU4ZWViZjAzZDlhZTBjZmEyODY5Li43NTdkMDQ1ZjVjNTg1NDQ0
OTZmMmRkNjkwNTBiZDFhZjg2OGMyZWRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pb3MvV2ViQ29yZVN5c3RlbUludGVyZmFjZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pb3MvV2ViQ29yZVN5c3RlbUludGVyZmFjZUlPUy5tbQpAQCAtMjcsMTAgKzI3
LDggQEAKICNpbXBvcnQgIldlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaCIKIAogV0VCQ09SRV9FWFBP
UlQgdm9pZCAoKndrQ0FMYXllckVudW1lcmF0ZVJlY3RzQmVpbmdEcmF3bldpdGhCbG9jaykoQ0FM
YXllciAqLCBDR0NvbnRleHRSZWYgY29udGV4dCwgdm9pZCAoXmJsb2NrKShDR1JlY3QgcmVjdCkp
OwotV0VCQ09SRV9FWFBPUlQgQ0dQYXR0ZXJuUmVmICgqd2tDR1BhdHRlcm5DcmVhdGVXaXRoSW1h
Z2VBbmRUcmFuc2Zvcm0pKENHSW1hZ2VSZWYsIENHQWZmaW5lVHJhbnNmb3JtLCBpbnQpOwogV0VC
Q09SRV9FWFBPUlQgdm9pZCAoKndrQ2xlYXJHbHlwaFZlY3Rvcikodm9pZCogZ2x5cGhzKTsKIFdF
QkNPUkVfRVhQT1JUIE9TU3RhdHVzICgqd2tDb252ZXJ0Q2hhclRvR2x5cGhzKSh2b2lkKiBzdHls
ZUdyb3VwLCBjb25zdCBVbmlDaGFyKiwgdW5zaWduZWQgbnVtQ2hhcmFjdGVycywgdm9pZCogZ2x5
cGhzKTsKLVdFQkNPUkVfRVhQT1JUIGJvb2wgKCp3a0NHQ29udGV4dElzUERGQ29udGV4dCkoQ0dD
b250ZXh0UmVmKTsKIFdFQkNPUkVfRVhQT1JUIGlkICgqd2tDcmVhdGVOU1VSTENvbm5lY3Rpb25E
ZWxlZ2F0ZVByb3h5KSh2b2lkKTsKIFdFQkNPUkVfRVhQT1JUIHZvaWQgKCp3a1NldENPTk5FQ1RQ
cm94eUZvclN0cmVhbSkoQ0ZSZWFkU3RyZWFtUmVmLCBDRlN0cmluZ1JlZiBwcm94eUhvc3QsIENG
TnVtYmVyUmVmIHByb3h5UG9ydCk7CiBXRUJDT1JFX0VYUE9SVCB2b2lkICgqd2tTZXRDT05ORUNU
UHJveHlBdXRob3JpemF0aW9uRm9yU3RyZWFtKShDRlJlYWRTdHJlYW1SZWYsIENGU3RyaW5nUmVm
IHByb3h5QXV0aG9yaXphdGlvblN0cmluZyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21h
Yy9QYXN0ZWJvYXJkTWFjLm1tCmluZGV4IDIwZTYzNWMwOTA1YWU4OTZjN2JiNTQyMWM4NTZiMjFi
MmE0NDZiNDkuLjk0ZjgwZTlhNTQyZTI2MWEzNWUwYTBiYTBiY2U0MTZhYjZmNTkyYzYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tCkBAIC01Miw2ICs1
Miw3IEBACiAjaW1wb3J0ICJXZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmgiCiAjaW1wb3J0ICJXZWJO
U0F0dHJpYnV0ZWRTdHJpbmdFeHRyYXMuaCIKICNpbXBvcnQgIm1hcmt1cC5oIgorI2ltcG9ydCA8
cGFsL3NwaS9tYWMvSElTZXJ2aWNlc1NQSS5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgog
I2ltcG9ydCA8d3RmL1N0ZExpYkV4dHJhcy5oPgogI2ltcG9ydCA8d3RmL3RleHQvU3RyaW5nQnVp
bGRlci5oPgpAQCAtNjY5LDYgKzY3MCw4MCBAQCBWZWN0b3I8U3RyaW5nPiBQYXN0ZWJvYXJkOjpy
ZWFkRmlsZW5hbWVzKCkKIH0KIAogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCitzdGF0aWMgdm9p
ZCBmbGlwSW1hZ2VTcGVjKENvcmVEcmFnSW1hZ2VTcGVjKiBpbWFnZVNwZWMpCit7CisgICAgdW5z
aWduZWQgY2hhciogdGVtcFJvdyA9ICh1bnNpZ25lZCBjaGFyKilmYXN0TWFsbG9jKGltYWdlU3Bl
Yy0+Ynl0ZXNQZXJSb3cpOworICAgIGludCBwbGFuZXMgPSBpbWFnZVNwZWMtPmlzUGxhbmFyID8g
aW1hZ2VTcGVjLT5zYW1wbGVzUGVyUGl4ZWwgOiAxOworCisgICAgZm9yIChpbnQgcCA9IDA7IHAg
PCBwbGFuZXM7IHArKykgeworICAgICAgICB1bnNpZ25lZCBjaGFyKiB0b3BSb3cgPSAodW5zaWdu
ZWQgY2hhciopaW1hZ2VTcGVjLT5kYXRhW3BdOworICAgICAgICB1bnNpZ25lZCBjaGFyKiBib3RS
b3cgPSB0b3BSb3cgKyAoaW1hZ2VTcGVjLT5waXhlbHNIaWdoIC0gMSkgKiBpbWFnZVNwZWMtPmJ5
dGVzUGVyUm93OworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGltYWdlU3BlYy0+cGl4ZWxz
SGlnaCAvIDI7IGkrKywgdG9wUm93ICs9IGltYWdlU3BlYy0+Ynl0ZXNQZXJSb3csIGJvdFJvdyAt
PSBpbWFnZVNwZWMtPmJ5dGVzUGVyUm93KSB7CisgICAgICAgICAgICBiY29weSh0b3BSb3csICB0
ZW1wUm93LCBpbWFnZVNwZWMtPmJ5dGVzUGVyUm93KTsKKyAgICAgICAgICAgIGJjb3B5KGJvdFJv
dywgIHRvcFJvdywgIGltYWdlU3BlYy0+Ynl0ZXNQZXJSb3cpOworICAgICAgICAgICAgYmNvcHko
dGVtcFJvdywgYm90Um93LCAgaW1hZ2VTcGVjLT5ieXRlc1BlclJvdyk7CisgICAgICAgIH0KKyAg
ICB9CisKKyAgICBmYXN0RnJlZSh0ZW1wUm93KTsKK30KKworc3RhdGljIHZvaWQgc2V0RHJhZ0lt
YWdlSW1wbChOU0ltYWdlICppbWFnZSwgTlNQb2ludCBvZmZzZXQpCit7CisgICAgYm9vbCBmbGlw
SW1hZ2U7CisgICAgTlNTaXplIGltYWdlU2l6ZSA9IGltYWdlLnNpemU7CisgICAgQ0dSZWN0IGlt
YWdlUmVjdCA9IENHUmVjdE1ha2UoMCwgMCwgaW1hZ2VTaXplLndpZHRoLCBpbWFnZVNpemUuaGVp
Z2h0KTsKKyAgICBOU0ltYWdlUmVwICppbWFnZVJlcCA9IFtpbWFnZSBiZXN0UmVwcmVzZW50YXRp
b25Gb3JSZWN0Ok5TUmVjdEZyb21DR1JlY3QoaW1hZ2VSZWN0KSBjb250ZXh0Om5pbCBoaW50czpu
aWxdOworICAgIFJldGFpblB0cjxOU0JpdG1hcEltYWdlUmVwPiBiaXRtYXBJbWFnZTsKKyAgICBp
ZiAoIWltYWdlUmVwIHx8ICFbaW1hZ2VSZXAgaXNLaW5kT2ZDbGFzczpbTlNCaXRtYXBJbWFnZVJl
cCBjbGFzc11dIHx8ICFOU0VxdWFsU2l6ZXMoaW1hZ2VSZXAuc2l6ZSwgaW1hZ2VTaXplKSkgewor
ICAgICAgICBbaW1hZ2UgbG9ja0ZvY3VzXTsKKyAgICAgICAgYml0bWFwSW1hZ2UgPSBhZG9wdE5T
KFtbTlNCaXRtYXBJbWFnZVJlcCBhbGxvY10gaW5pdFdpdGhGb2N1c2VkVmlld1JlY3Q6KihOU1Jl
Y3QgKikmaW1hZ2VSZWN0XSk7CisgICAgICAgIFtpbWFnZSB1bmxvY2tGb2N1c107CisgICAgICAg
IAorICAgICAgICAvLyB3ZSBtYXkgaGF2ZSB0byBmbGlwIHRoZSBiaXRzIHdlIGp1c3QgcmVhZCBp
ZiB0aGUgaW1hZ2Ugd2FzIGZsaXBwZWQgc2luY2UgaXQgbWVhbnMgdGhlIGNhY2hlIHdhcyBhbHNv
CisgICAgICAgIC8vIGFuZCBDb3JlRHJhZ1NldEltYWdlIGNhbid0IHRha2UgYSB0cmFuc2Zvcm0g
Zm9yIHJlbmRlcmluZy4KKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwdXNoCisjcHJhZ21hIGNs
YW5nIGRpYWdub3N0aWMgaWdub3JlZCAiLVdkZXByZWNhdGVkLWRlY2xhcmF0aW9ucyIKKyAgICAg
ICAgZmxpcEltYWdlID0gaW1hZ2UuaXNGbGlwcGVkOworI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGlj
IHBvcAorICAgIH0gZWxzZSB7CisgICAgICAgIGZsaXBJbWFnZSA9IGZhbHNlOworICAgICAgICBi
aXRtYXBJbWFnZSA9IChOU0JpdG1hcEltYWdlUmVwICopaW1hZ2VSZXA7CisgICAgfQorICAgIEFT
U0VSVChiaXRtYXBJbWFnZSk7CisKKyAgICBDb3JlRHJhZ0ltYWdlU3BlYyBpbWFnZVNwZWM7Cisg
ICAgaW1hZ2VTcGVjLnZlcnNpb24gPSBrQ29yZURyYWdJbWFnZVNwZWNWZXJzaW9uT25lOworICAg
IGltYWdlU3BlYy5waXhlbHNXaWRlID0gW2JpdG1hcEltYWdlIHBpeGVsc1dpZGVdOworICAgIGlt
YWdlU3BlYy5waXhlbHNIaWdoID0gW2JpdG1hcEltYWdlIHBpeGVsc0hpZ2hdOworICAgIGltYWdl
U3BlYy5iaXRzUGVyU2FtcGxlID0gW2JpdG1hcEltYWdlIGJpdHNQZXJTYW1wbGVdOworICAgIGlt
YWdlU3BlYy5zYW1wbGVzUGVyUGl4ZWwgPSBbYml0bWFwSW1hZ2Ugc2FtcGxlc1BlclBpeGVsXTsK
KyAgICBpbWFnZVNwZWMuYml0c1BlclBpeGVsID0gW2JpdG1hcEltYWdlIGJpdHNQZXJQaXhlbF07
CisgICAgaW1hZ2VTcGVjLmJ5dGVzUGVyUm93ID0gW2JpdG1hcEltYWdlIGJ5dGVzUGVyUm93XTsK
KyAgICBpbWFnZVNwZWMuaXNQbGFuYXIgPSBbYml0bWFwSW1hZ2UgaXNQbGFuYXJdOworICAgIGlt
YWdlU3BlYy5oYXNBbHBoYSA9IFtiaXRtYXBJbWFnZSBoYXNBbHBoYV07CisgICAgW2JpdG1hcElt
YWdlIGdldEJpdG1hcERhdGFQbGFuZXM6KHVuc2lnbmVkIGNoYXIqKilpbWFnZVNwZWMuZGF0YV07
CisKKyAgICAvLyBpZiBpbWFnZSB3YXMgZmxpcHBlZCwgd2UgaGF2ZSBhbiB1cHNpZGUgZG93biBi
aXRtYXAgc2luY2UgdGhlIGNhY2hlIGlzIHJlbmRlcmVkIGZsaXBwZWQKKyAgICBpZiAoZmxpcElt
YWdlKQorICAgICAgICBmbGlwSW1hZ2VTcGVjKCZpbWFnZVNwZWMpOworCisgICAgQ0dTUmVnaW9u
T2JqIGltYWdlU2hhcGU7CisgICAgT1NTdGF0dXMgZXJyb3IgPSBDR1NOZXdSZWdpb25XaXRoUmVj
dCgmaW1hZ2VSZWN0LCAmaW1hZ2VTaGFwZSk7CisgICAgQVNTRVJUKGVycm9yID09IGtDR0Vycm9y
U3VjY2Vzcyk7CisgICAgaWYgKGVycm9yICE9IGtDR0Vycm9yU3VjY2VzcykKKyAgICAgICAgcmV0
dXJuOworCisgICAgLy8gbWFrZSBzdXJlIGltYWdlIGhhcyBpbnRlZ2VyIG9mZnNldAorICAgIENH
UG9pbnQgaW1hZ2VPZmZzZXQgPSB7LW9mZnNldC54LCAtKGltYWdlU2l6ZS5oZWlnaHQgLSBvZmZz
ZXQueSl9OworICAgIGltYWdlT2Zmc2V0LnggPSBmbG9vcihpbWFnZU9mZnNldC54ICsgMC41KTsK
KyAgICBpbWFnZU9mZnNldC55ID0gZmxvb3IoaW1hZ2VPZmZzZXQueSArIDAuNSk7CisKKyAgICBl
cnJvciA9IENvcmVEcmFnU2V0SW1hZ2UoQ29yZURyYWdHZXRDdXJyZW50RHJhZygpLCBpbWFnZU9m
ZnNldCwgJmltYWdlU3BlYywgaW1hZ2VTaGFwZSwgMS4wKTsKKyAgICBDR1NSZWxlYXNlUmVnaW9u
KGltYWdlU2hhcGUpOworICAgIEFTU0VSVChlcnJvciA9PSBrQ0dFcnJvclN1Y2Nlc3MpOworfQor
CiB2b2lkIFBhc3RlYm9hcmQ6OnNldERyYWdJbWFnZShEcmFnSW1hZ2UgaW1hZ2UsIGNvbnN0IElu
dFBvaW50JiBsb2NhdGlvbikKIHsKICAgICAvLyBEb24ndCBhbGxvdyBzZXR0aW5nIHRoZSBkcmFn
IGltYWdlIGlmIHNvbWVvbmUga2VwdCBhIHBhc3RlYm9hcmQgYW5kIGlzIHRyeWluZyB0byBzZXQg
dGhlIGltYWdlIHRvbyBsYXRlLgpAQCAtNjc3LDcgKzc1Miw3IEBAIHZvaWQgUGFzdGVib2FyZDo6
c2V0RHJhZ0ltYWdlKERyYWdJbWFnZSBpbWFnZSwgY29uc3QgSW50UG9pbnQmIGxvY2F0aW9uKQog
CiAgICAgLy8gRGFzaGJvYXJkIHdhbnRzIHRvIGJlIGFibGUgdG8gc2V0IHRoZSBkcmFnIGltYWdl
IGR1cmluZyBkcmFnZ2luZywgYnV0IENvY29hIGRvZXMgbm90IGFsbG93IHRoaXMuCiAgICAgLy8g
SW5zdGVhZCB3ZSBtdXN0IGRyb3AgZG93biB0byB0aGUgQ29yZUdyYXBoaWNzIEFQSS4KLSAgICB3
a1NldERyYWdJbWFnZShpbWFnZS5nZXQoKS5nZXQoKSwgbG9jYXRpb24pOworICAgIHNldERyYWdJ
bWFnZUltcGwoaW1hZ2UuZ2V0KCkuZ2V0KCksIGxvY2F0aW9uKTsKIAogICAgIC8vIEhhY2s6IFdl
IG11c3QgcG9zdCBhbiBldmVudCB0byB3YWtlIHVwIHRoZSBOU0RyYWdNYW5hZ2VyLCB3aGljaCBp
cyBzaXR0aW5nIGluIGEgbmV4dEV2ZW50IGNhbGwKICAgICAvLyB1cCB0aGUgc3RhY2sgZnJvbSB1
cyBiZWNhdXNlIHRoZSBDb3JlRm91bmRhdGlvbiBkcmFnIG1hbmFnZXIgZG9lcyBub3QgdXNlIHRo
ZSBydW4gbG9vcCBieSBpdHNlbGYuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tYWMvUGxhdGZvcm1FdmVudEZhY3RvcnlNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tYWMvUGxhdGZvcm1FdmVudEZhY3RvcnlNYWMubW0KaW5kZXggYmMxZTM2N2ZjNDY5NGVhZjQ2
MGFiMGVhNWE0MjMwZDAwMDAxYWM4OS4uNTAwMTAwOWYyMTE5NDVkYTk3NzhhM2VhYWY5OWVkODMx
MmZkNzc1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3Jt
RXZlbnRGYWN0b3J5TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0
Zm9ybUV2ZW50RmFjdG9yeU1hYy5tbQpAQCAtNjczLDcgKzY3Myw3IEBAIHN0YXRpYyBpbnQgdHlw
ZUZvckV2ZW50KE5TRXZlbnQgKmV2ZW50KQogewogICAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+
KFtOU01lbnUgbWVudVR5cGVGb3JFdmVudDpldmVudF0pOwogfQotICAgIAorCiBjbGFzcyBQbGF0
Zm9ybU1vdXNlRXZlbnRCdWlsZGVyIDogcHVibGljIFBsYXRmb3JtTW91c2VFdmVudCB7CiBwdWJs
aWM6CiAgICAgUGxhdGZvcm1Nb3VzZUV2ZW50QnVpbGRlcihOU0V2ZW50ICpldmVudCwgTlNFdmVu
dCAqY29ycmVzcG9uZGluZ1ByZXNzdXJlRXZlbnQsIE5TVmlldyAqd2luZG93VmlldykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxiYXJUaGVtZU1hYy5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxiYXJUaGVtZU1hYy5tbQppbmRleCBj
NGMyODc3NjgzNTc0OTZhZWIyODhmYTQxZjBkZDk1ZDJkN2NjMjg4Li42ZDA1Yjg2YzYzZDA1Zjdi
NmQxNDczMTdlZmQyN2ZmMzQxNTgzMTkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tYWMvU2Nyb2xsYmFyVGhlbWVNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWFjL1Njcm9sbGJhclRoZW1lTWFjLm1tCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAi
U2Nyb2xsVmlldy5oIgogI2luY2x1ZGUgIldlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaCIKICNpbmNs
dWRlIDxDYXJib24vQ2FyYm9uLmg+CisjaW5jbHVkZSA8cGFsL3NwaS9jZy9Db3JlR3JhcGhpY3NT
UEkuaD4KICNpbmNsdWRlIDxwYWwvc3BpL21hYy9OU1Njcm9sbGVySW1wU1BJLmg+CiAjaW5jbHVk
ZSA8d3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgpA
QCAtNTczLDcgKzU3NCw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8Q0dDb2xvclJlZj4gbGluZW5CYWNr
Z3JvdW5kQ29sb3IoKQogICAgIGlmICghY2dJbWFnZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAKLSAgICBSZXRhaW5QdHI8Q0dQYXR0ZXJuUmVmPiBwYXR0ZXJuID0gYWRvcHRDRih3a0NHUGF0
dGVybkNyZWF0ZVdpdGhJbWFnZUFuZFRyYW5zZm9ybShjZ0ltYWdlLCBDR0FmZmluZVRyYW5zZm9y
bUlkZW50aXR5LCB3a1BhdHRlcm5UaWxpbmdOb0Rpc3RvcnRpb24pKTsKKyAgICBSZXRhaW5QdHI8
Q0dQYXR0ZXJuUmVmPiBwYXR0ZXJuID0gYWRvcHRDRihDR1BhdHRlcm5DcmVhdGVXaXRoSW1hZ2Uy
KGNnSW1hZ2UsIENHQWZmaW5lVHJhbnNmb3JtSWRlbnRpdHksIGtDR1BhdHRlcm5UaWxpbmdOb0Rp
c3RvcnRpb24pKTsKICAgICBSZXRhaW5QdHI8Q0dDb2xvclNwYWNlUmVmPiBjb2xvclNwYWNlID0g
YWRvcHRDRihDR0NvbG9yU3BhY2VDcmVhdGVQYXR0ZXJuKDApKTsKIAogICAgIGNvbnN0IENHRmxv
YXQgYWxwaGEgPSAxLjA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMv
VGhlbWVNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvVGhlbWVNYWMubW0KaW5k
ZXggOTBmMTA0MWVmZjdmMGM2NDdkNmY4MzkxYzAyN2Y1M2QxYWI0NDcxNC4uOGExOTI2NWNmNWQ4
MmYyMDI1ZmY1MDFlZWUyZWY5NTFmODQzNzg1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL1RoZW1lTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21h
Yy9UaGVtZU1hYy5tbQpAQCAtMzYsNiArMzYsNyBAQAogI2ltcG9ydCAiV2ViQ29yZVN5c3RlbUlu
dGVyZmFjZS5oIgogI2ltcG9ydCA8Q2FyYm9uL0NhcmJvbi5oPgogI2ltcG9ydCA8cGFsL3NwaS9j
b2NvYS9OU0J1dHRvbkNlbGxTUEkuaD4KKyNpbXBvcnQgPHBhbC9zcGkvbWFjL05TR3JhcGhpY3NT
UEkuaD4KICNpbXBvcnQgPHd0Zi9CbG9ja09iakNFeGNlcHRpb25zLmg+CiAjaW1wb3J0IDx3dGYv
TmV2ZXJEZXN0cm95ZWQuaD4KICNpbXBvcnQgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KQEAgLTM0OSw5
ICszNTAsMzIgQEAgc3RhdGljIE5TQnV0dG9uQ2VsbCAqc2hhcmVkQ2hlY2tib3hDZWxsKGNvbnN0
IENvbnRyb2xTdGF0ZXMmIHN0YXRlcywgY29uc3QgSW50U2kKICAgICByZXR1cm4gY2hlY2tib3hD
ZWxsOwogfQogCitzdGF0aWMgYm9vbCBkcmF3Q2VsbEZvY3VzUmluZ1dpdGhGcmFtZUF0VGltZShO
U0NlbGwgKmNlbGwsIE5TUmVjdCBjZWxsRnJhbWUsIE5TVmlldyAqY29udHJvbFZpZXcsIE5TVGlt
ZUludGVydmFsIHRpbWVPZmZzZXQpCit7CisgICAgQ0dDb250ZXh0UmVmIGNnQ29udGV4dCA9IChD
R0NvbnRleHRSZWYpW1tOU0dyYXBoaWNzQ29udGV4dCBjdXJyZW50Q29udGV4dF0gZ3JhcGhpY3NQ
b3J0XTsKKyAgICBDR0NvbnRleHRTYXZlR1N0YXRlKGNnQ29udGV4dCk7CisKKyAgICBDR0ZvY3Vz
UmluZ1N0eWxlIGZvY3VzUmluZ1N0eWxlOworICAgIGJvb2wgbmVlZHNSZXBhaW50ID0gTlNJbml0
aWFsaXplQ0dGb2N1c1JpbmdTdHlsZUZvclRpbWUoTlNGb2N1c1JpbmdPbmx5LCAmZm9jdXNSaW5n
U3R5bGUsIHRpbWVPZmZzZXQpOworICAgIC8vIFdlIHdhbnQgdG8gcmVzcGVjdCB0aGUgQ0dDb250
ZXh0IGNsaXBwaW5nIGFuZCBhbHNvIG5vdCBvdmVycGFpbnQgYW55CisgICAgLy8gZXhpc3Rpbmcg
Zm9jdXMgcmluZy4gVGhlIHdheSB0byBkbyB0aGlzIGlzIHNldCBhY2N1bXVsYXRlIHRvCisgICAg
Ly8gLTEuIEFjY29yZGluZyB0byBDb3JlR3JhcGhpY3MsIHRoZSByZWFzb25pbmcgZm9yIHRoaXMg
YmVoYXZpb3IgaGFzIGJlZW4KKyAgICAvLyBsb3N0IGluIHRpbWUuCisgICAgZm9jdXNSaW5nU3R5
bGUuYWNjdW11bGF0ZSA9IC0xOworICAgIGF1dG8gc3R5bGUgPSBhZG9wdENGKENHU3R5bGVDcmVh
dGVGb2N1c1JpbmdXaXRoQ29sb3IoJmZvY3VzUmluZ1N0eWxlLCBHcmFwaGljc0NvbnRleHQ6OmZv
Y3VzUmluZ0NvbG9yKCkpKTsKKyAgICBDR0NvbnRleHRTZXRTdHlsZShjZ0NvbnRleHQsIHN0eWxl
LmdldCgpKTsKKworICAgIENHQ29udGV4dEJlZ2luVHJhbnNwYXJlbmN5TGF5ZXJXaXRoUmVjdChj
Z0NvbnRleHQsIE5TUmVjdFRvQ0dSZWN0KGNlbGxGcmFtZSksIDApOworICAgIFtjZWxsIGRyYXdG
b2N1c1JpbmdNYXNrV2l0aEZyYW1lOmNlbGxGcmFtZSBpblZpZXc6Y29udHJvbFZpZXddOworICAg
IENHQ29udGV4dEVuZFRyYW5zcGFyZW5jeUxheWVyKGNnQ29udGV4dCk7CisgICAgQ0dDb250ZXh0
UmVzdG9yZUdTdGF0ZShjZ0NvbnRleHQpOworCisgICAgcmV0dXJuIG5lZWRzUmVwYWludDsKK30K
Kwogc3RhdGljIGJvb2wgZHJhd0NlbGxGb2N1c1JpbmcoTlNDZWxsICpjZWxsLCBOU1JlY3QgY2Vs
bEZyYW1lLCBOU1ZpZXcgKmNvbnRyb2xWaWV3KQogewotICAgIHdrRHJhd0NlbGxGb2N1c1JpbmdX
aXRoRnJhbWVBdFRpbWUoY2VsbCwgY2VsbEZyYW1lLCBjb250cm9sVmlldywgc3RkOjpudW1lcmlj
X2xpbWl0czxkb3VibGU+OjptYXgoKSk7CisgICAgZHJhd0NlbGxGb2N1c1JpbmdXaXRoRnJhbWVB
dFRpbWUoY2VsbCwgY2VsbEZyYW1lLCBjb250cm9sVmlldywgc3RkOjpudW1lcmljX2xpbWl0czxk
b3VibGU+OjptYXgoKSk7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaAppbmRleCA5M2Nk
ZmQwYzdhYjFlOTY4MDEwNmNhNjQ4NTQ0ODU2NmI3NDQ0ZTQ2Li42YmQxNGNkYjJiMGVlNjA5MDE0
ZWQyNzkxNzVkNDcxNWQ3ZDBlOWFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tYWMvV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21hYy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmgKQEAgLTEyNiwxNCArMTI2LDcgQEAgdHlw
ZWRlZiBlbnVtIHsKICAgICB3a1BhdHRlcm5UaWxpbmdDb25zdGFudFNwYWNpbmcKIH0gd2tQYXR0
ZXJuVGlsaW5nOwogI2lmICFQTEFURk9STShJT1MpCi1leHRlcm4gYm9vbCAoKndrQ0dDb250ZXh0
RHJhd3NXaXRoQ29ycmVjdFNoYWRvd09mZnNldHMpKENHQ29udGV4dFJlZik7Ci0jZW5kaWYKLWV4
dGVybiBDR1BhdHRlcm5SZWYgKCp3a0NHUGF0dGVybkNyZWF0ZVdpdGhJbWFnZUFuZFRyYW5zZm9y
bSkoQ0dJbWFnZVJlZiwgQ0dBZmZpbmVUcmFuc2Zvcm0sIGludCk7Ci0jaWYgIVBMQVRGT1JNKElP
UykKIGV4dGVybiB2b2lkICgqd2tEcmF3QmV6ZWxlZFRleHRBcmVhKShOU1JlY3QsIEJPT0wgZW5h
YmxlZCk7Ci1leHRlcm4gdm9pZCAoKndrRHJhd0ZvY3VzUmluZykoQ0dDb250ZXh0UmVmLCBDR0Nv
bG9yUmVmLCBpbnQpOwotZXh0ZXJuIGJvb2wgKCp3a0RyYXdGb2N1c1JpbmdBdFRpbWUpKENHQ29u
dGV4dFJlZiwgTlNUaW1lSW50ZXJ2YWwgdGltZSk7Ci1leHRlcm4gYm9vbCAoKndrRHJhd0NlbGxG
b2N1c1JpbmdXaXRoRnJhbWVBdFRpbWUpKE5TQ2VsbCAqY2VsbCwgTlNSZWN0IGNlbGxGcmFtZSwg
TlNWaWV3ICpjb250cm9sVmlldywgTlNUaW1lSW50ZXJ2YWwgdGltZSk7CiBleHRlcm4gdm9pZCAo
KndrRHJhd01lZGlhU2xpZGVyVHJhY2spKENHQ29udGV4dFJlZiBjb250ZXh0LCBDR1JlY3QgcmVj
dCwgZmxvYXQgdGltZUxvYWRlZCwgZmxvYXQgY3VycmVudFRpbWUsCiAgICAgZmxvYXQgZHVyYXRp
b24sIHVuc2lnbmVkIHN0YXRlKTsKIGV4dGVybiB2b2lkICgqd2tEcmF3TWVkaWFVSVBhcnQpKGlu
dCBwYXJ0LCBDR0NvbnRleHRSZWYgY29udGV4dCwgQ0dSZWN0IHJlY3QsIHVuc2lnbmVkIHN0YXRl
KTsKQEAgLTE1Nyw5ICsxNTAsNiBAQCB0eXBlZGVmIGVudW0gewogfSB3a01lZGlhVUlDb250cm9s
VHlwZTsKIGV4dGVybiBOU0NvbnRyb2wgKigqd2tDcmVhdGVNZWRpYVVJQ29udHJvbCkoaW50KTsK
IAotZXh0ZXJuIHZvaWQgKCp3a1dpbmRvd1NldEFscGhhKShOU1dpbmRvdyAqLCBmbG9hdCk7Ci1l
eHRlcm4gdm9pZCAoKndrV2luZG93U2V0U2NhbGVkRnJhbWUpKE5TV2luZG93ICosIE5TUmVjdCwg
TlNSZWN0KTsKLQogZXh0ZXJuIHVuc2lnbmVkICgqd2tRVEluY2x1ZGVPbmx5TW9kZXJuTWVkaWFG
aWxlVHlwZXMpKHZvaWQpOwogZXh0ZXJuIHZvaWQgKCp3a1FUTW92aWVEaXNhYmxlQ29tcG9uZW50
KSh1aW50MzJfdFs1XSk7CiBleHRlcm4gZmxvYXQgKCp3a1FUTW92aWVNYXhUaW1lTG9hZGVkKShR
VE1vdmllKik7CkBAIC0xNzMsOSArMTYzLDcgQEAgZXh0ZXJuIE5TQXJyYXkgKigqd2tRVEdldFNp
dGVzSW5NZWRpYURvd25sb2FkQ2FjaGUpKCk7CiBleHRlcm4gdm9pZCAoKndrUVRDbGVhck1lZGlh
RG93bmxvYWRDYWNoZUZvclNpdGUpKE5TU3RyaW5nICpzaXRlKTsKIGV4dGVybiB2b2lkICgqd2tR
VENsZWFyTWVkaWFEb3dubG9hZENhY2hlKSgpOwogZXh0ZXJuIHZvaWQgKCp3a1NldENvb2tpZVN0
b3JhZ2VQcml2YXRlQnJvd3NpbmdFbmFibGVkKShCT09MKTsKLWV4dGVybiB2b2lkICgqd2tTZXRE
cmFnSW1hZ2UpKE5TSW1hZ2UqLCBOU1BvaW50IG9mZnNldCk7CiAjZW5kaWYKLWV4dGVybiBib29s
ICgqd2tDR0NvbnRleHRJc1BERkNvbnRleHQpKENHQ29udGV4dFJlZik7CiBleHRlcm4gdm9pZCAo
KndrU2V0Q09OTkVDVFByb3h5Rm9yU3RyZWFtKShDRlJlYWRTdHJlYW1SZWYsIENGU3RyaW5nUmVm
IHByb3h5SG9zdCwgQ0ZOdW1iZXJSZWYgcHJveHlQb3J0KTsKIGV4dGVybiB2b2lkICgqd2tTZXRD
T05ORUNUUHJveHlBdXRob3JpemF0aW9uRm9yU3RyZWFtKShDRlJlYWRTdHJlYW1SZWYsIENGU3Ry
aW5nUmVmIHByb3h5QXV0aG9yaXphdGlvblN0cmluZyk7CiBleHRlcm4gQ0ZIVFRQTWVzc2FnZVJl
ZiAoKndrQ29weUNPTk5FQ1RQcm94eVJlc3BvbnNlKShDRlJlYWRTdHJlYW1SZWYsIENGVVJMUmVm
IHJlc3BvbnNlVVJMLCBDRlN0cmluZ1JlZiBwcm94eUhvc3QsIENGTnVtYmVyUmVmIHByb3h5UG9y
dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZVN5c3Rl
bUludGVyZmFjZS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlU3lzdGVt
SW50ZXJmYWNlLm1tCmluZGV4IDY0OWQ3YTY3Y2Q2NzY1NGEyYTNlMzk0ZTkzNWY4YzUyNmZhMzky
NWEuLmI0YjVjMDA4NmM0MmUyZDQzZDMwNmI5MmY2MTQyNmY0N2M5MzZiODIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlLm1t
CkBAIC0zMSwxMiArMzEsNyBAQAogI2ltcG9ydCA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmg+CiAK
IHZvaWQgKCp3a0NBTGF5ZXJFbnVtZXJhdGVSZWN0c0JlaW5nRHJhd25XaXRoQmxvY2spKENBTGF5
ZXIgKiwgQ0dDb250ZXh0UmVmIGNvbnRleHQsIHZvaWQgKF5ibG9jaykoQ0dSZWN0IHJlY3QpKTsK
LWJvb2wgKCp3a0NHQ29udGV4dERyYXdzV2l0aENvcnJlY3RTaGFkb3dPZmZzZXRzKShDR0NvbnRl
eHRSZWYpOwotQ0dQYXR0ZXJuUmVmICgqd2tDR1BhdHRlcm5DcmVhdGVXaXRoSW1hZ2VBbmRUcmFu
c2Zvcm0pKENHSW1hZ2VSZWYsIENHQWZmaW5lVHJhbnNmb3JtLCBpbnQpOwogdm9pZCAoKndrRHJh
d0JlemVsZWRUZXh0QXJlYSkoTlNSZWN0LCBCT09MIGVuYWJsZWQpOwotdm9pZCAoKndrRHJhd0Zv
Y3VzUmluZykoQ0dDb250ZXh0UmVmLCBDR0NvbG9yUmVmLCBpbnQpOwotYm9vbCAoKndrRHJhd0Zv
Y3VzUmluZ0F0VGltZSkoQ0dDb250ZXh0UmVmLCBOU1RpbWVJbnRlcnZhbCk7Ci1ib29sICgqd2tE
cmF3Q2VsbEZvY3VzUmluZ1dpdGhGcmFtZUF0VGltZSkoTlNDZWxsKiwgTlNSZWN0LCBOU1ZpZXcq
LCBOU1RpbWVJbnRlcnZhbCk7CiB2b2lkICgqd2tEcmF3TWVkaWFTbGlkZXJUcmFjaykoQ0dDb250
ZXh0UmVmIGNvbnRleHQsIENHUmVjdCByZWN0LCBmbG9hdCB0aW1lTG9hZGVkLCBmbG9hdCBjdXJy
ZW50VGltZSwKICAgICBmbG9hdCBkdXJhdGlvbiwgdW5zaWduZWQgc3RhdGUpOwogQk9PTCAoKndr
SGl0VGVzdE1lZGlhVUlQYXJ0KShpbnQgcGFydCwgQ0dSZWN0IGJvdW5kcywgQ0dQb2ludCBwb2lu
dCk7CkBAIC00NCw4ICszOSw2IEBAIHZvaWQgKCp3a0RyYXdNZWRpYVVJUGFydCkoaW50IHBhcnQs
IENHQ29udGV4dFJlZiBjb250ZXh0LCBDR1JlY3QgcmVjdCwgdW5zaWduZWQKIHZvaWQgKCp3a01l
YXN1cmVNZWRpYVVJUGFydCkoaW50IHBhcnQsIENHUmVjdCAqYm91bmRzLCBDR1NpemUgKm5hdHVy
YWxTaXplKTsKIE5TVmlldyAqKCp3a0NyZWF0ZU1lZGlhVUlCYWNrZ3JvdW5kVmlldykodm9pZCk7
CiBOU0NvbnRyb2wgKigqd2tDcmVhdGVNZWRpYVVJQ29udHJvbCkoaW50KTsKLXZvaWQgKCp3a1dp
bmRvd1NldEFscGhhKShOU1dpbmRvdyAqLCBmbG9hdCk7Ci12b2lkICgqd2tXaW5kb3dTZXRTY2Fs
ZWRGcmFtZSkoTlNXaW5kb3cgKiwgTlNSZWN0LCBOU1JlY3QpOwogTlNUaW1lSW50ZXJ2YWwgKCp3
a0dldE5TVVJMUmVzcG9uc2VDYWxjdWxhdGVkRXhwaXJhdGlvbikoTlNVUkxSZXNwb25zZSAqcmVz
cG9uc2UpOwogQk9PTCAoKndrR2V0TlNVUkxSZXNwb25zZU11c3RSZXZhbGlkYXRlKShOU1VSTFJl
c3BvbnNlICpyZXNwb25zZSk7CiB2b2lkICgqd2tHZXRXaGVlbEV2ZW50RGVsdGFzKShOU0V2ZW50
KiwgZmxvYXQqIGRlbHRhWCwgZmxvYXQqIGRlbHRhWSwgQk9PTCogY29udGludW91cyk7CkBAIC02
NCw4ICs1Nyw2IEBAIE5TQXJyYXkgKigqd2tRVEdldFNpdGVzSW5NZWRpYURvd25sb2FkQ2FjaGUp
KCk7CiB2b2lkICgqd2tRVENsZWFyTWVkaWFEb3dubG9hZENhY2hlRm9yU2l0ZSkoTlNTdHJpbmcg
KnNpdGUpOwogdm9pZCAoKndrUVRDbGVhck1lZGlhRG93bmxvYWRDYWNoZSkoKTsKIAotdm9pZCAo
KndrU2V0RHJhZ0ltYWdlKShOU0ltYWdlKiwgTlNQb2ludCBvZmZzZXQpOwotYm9vbCAoKndrQ0dD
b250ZXh0SXNQREZDb250ZXh0KShDR0NvbnRleHRSZWYpOwogdm9pZCAoKndrU2V0Q09OTkVDVFBy
b3h5Rm9yU3RyZWFtKShDRlJlYWRTdHJlYW1SZWYsIENGU3RyaW5nUmVmIHByb3h5SG9zdCwgQ0ZO
dW1iZXJSZWYgcHJveHlQb3J0KTsKIHZvaWQgKCp3a1NldENPTk5FQ1RQcm94eUF1dGhvcml6YXRp
b25Gb3JTdHJlYW0pKENGUmVhZFN0cmVhbVJlZiwgQ0ZTdHJpbmdSZWYgcHJveHlBdXRob3JpemF0
aW9uU3RyaW5nKTsKIENGSFRUUE1lc3NhZ2VSZWYgKCp3a0NvcHlDT05ORUNUUHJveHlSZXNwb25z
ZSkoQ0ZSZWFkU3RyZWFtUmVmLCBDRlVSTFJlZiByZXNwb25zZVVSTCwgQ0ZTdHJpbmdSZWYgcHJv
eHlIb3N0LCBDRk51bWJlclJlZiBwcm94eVBvcnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWFjL1dlYldpbmRvd0FuaW1hdGlvbi5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21hYy9XZWJXaW5kb3dBbmltYXRpb24ubW0KaW5kZXggOGFiYzg0MGI3M2NjNjQ1Yzhh
YzQwNmRlYWZhZTk0MjJjZGMzNTNlMi4uY2E1NTlkZjBiY2E5YjYyNGRlMmZjMDQyYTJmM2ExNTZj
ODcwYTgyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYldpbmRv
d0FuaW1hdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViV2luZG93
QW5pbWF0aW9uLm1tCkBAIC0yOSw2ICsyOSw3IEBACiAKICNpbXBvcnQgIkZsb2F0Q29udmVyc2lv
bi5oIgogI2ltcG9ydCAiV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oIgorI2ltcG9ydCA8cGFsL3Nw
aS9jZy9Db3JlR3JhcGhpY3NTUEkuaD4KICNpbXBvcnQgPHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW1w
b3J0IDx3dGYvTWF0aEV4dHJhcy5oPgogCkBAIC0xMDksNiArMTEwLDU5IEBAIC0gKE5TUmVjdClj
dXJyZW50RnJhbWUKICAgICByZXR1cm4gc2NhbGVkUmVjdChfZmluYWxGcmFtZSwgX2luaXRpYWxG
cmFtZSwgW3NlbGYgY3VycmVudFZhbHVlXSk7CiB9CiAKK3N0YXRpYyB2b2lkIGZsaXBSZWN0KE5T
UmVjdCAqcmVjdCkKK3sKKyAgICByZWN0LT5vcmlnaW4ueSA9IE5TTWF4WShbKE5TU2NyZWVuICop
W1tOU1NjcmVlbiBzY3JlZW5zXSBvYmplY3RBdEluZGV4OjBdIGZyYW1lXSkgLSBOU01heFkoKnJl
Y3QpOworfQorCitzdGF0aWMgQ0dTQ29ubmVjdGlvbklEIG1haW5XaW5kb3dTZXJ2ZXJDb25uZWN0
aW9uSUQoKQoreworICAgIHN0YXRpYyBDR1NDb25uZWN0aW9uSUQgY2dzSWQ7CisgICAgaWYgKCFj
Z3NJZCkKKyAgICAgICAgY2dzSWQgPSBDR1NNYWluQ29ubmVjdGlvbklEKCk7CisgICAgcmV0dXJu
IGNnc0lkOworfQorCitzdGF0aWMgdm9pZCBzZXRTY2FsZWRGcmFtZUZvcldpbmRvdyhOU1dpbmRv
dyAqd2luZG93LCBOU1JlY3Qgc2NhbGVGcmFtZSwgTlNSZWN0IG5vblNjYWxlZEZyYW1lKQorewor
ICAgIGlmIChOU0VxdWFsUmVjdHMoc2NhbGVGcmFtZSwgbm9uU2NhbGVkRnJhbWUpKSB7CisgICAg
ICAgIENHU1NldFdpbmRvd1dhcnAobWFpbldpbmRvd1NlcnZlckNvbm5lY3Rpb25JRCgpLCBbd2lu
ZG93IHdpbmRvd051bWJlcl0sIDAsIDAsIE5VTEwpOworICAgICAgICByZXR1cm47CisgICAgfQor
ICAgIAorICAgIGZsb2F0IG1lc2hbMTZdOworICAgIAorICAgIGZsaXBSZWN0KCZzY2FsZUZyYW1l
KTsKKyAgICBmbGlwUmVjdCgmbm9uU2NhbGVkRnJhbWUpOworICAgIAorICAgIC8vIHRvcC1sZWZ0
IHBvaW50ICh0byBhbmQgZnJvbSkKKyAgICBtZXNoWzBdID0gMDsKKyAgICBtZXNoWzFdID0gMDsK
KyAgICBtZXNoWzJdID0gTlNNaW5YKHNjYWxlRnJhbWUpOworICAgIG1lc2hbM10gPSBOU01pblko
c2NhbGVGcmFtZSk7CisgICAgCisgICAgLy8gdG9wLXJpZ2h0IHBvaW50ICh0byBhbmQgZnJvbSkK
KyAgICBtZXNoWzRdID0gTlNXaWR0aChub25TY2FsZWRGcmFtZSk7CisgICAgbWVzaFs1XSA9IDA7
CisgICAgbWVzaFs2XSA9IE5TTWF4WChzY2FsZUZyYW1lKTsKKyAgICBtZXNoWzddID0gTlNNaW5Z
KHNjYWxlRnJhbWUpOworICAgIAorICAgIC8vIGJvdHRvbS1sZWZ0ICh0byBhbmQgZnJvbSkKKyAg
ICBtZXNoWzhdID0gMDsKKyAgICBtZXNoWzldID0gTlNIZWlnaHQobm9uU2NhbGVkRnJhbWUpOwor
ICAgIG1lc2hbMTBdID0gTlNNaW5YKHNjYWxlRnJhbWUpOworICAgIG1lc2hbMTFdID0gTlNNYXhZ
KHNjYWxlRnJhbWUpOworICAgIAorICAgIC8vIGJvdHRvbS1yaWdodCAodG8gYW5kIGZyb20pCisg
ICAgbWVzaFsxMl0gPSBOU1dpZHRoKG5vblNjYWxlZEZyYW1lKTsKKyAgICBtZXNoWzEzXSA9IE5T
SGVpZ2h0KG5vblNjYWxlZEZyYW1lKTsKKyAgICBtZXNoWzE0XSA9IE5TTWF4WChzY2FsZUZyYW1l
KTsKKyAgICBtZXNoWzE1XSA9IE5TTWF4WShzY2FsZUZyYW1lKTsKKyAgICAKKyAgICAvLyBBcHBs
eSB0aGUgd2FycC4KKyAgICBDR1NTZXRXaW5kb3dXYXJwKG1haW5XaW5kb3dTZXJ2ZXJDb25uZWN0
aW9uSUQoKSwgW3dpbmRvdyB3aW5kb3dOdW1iZXJdLCAyLCAyLCBtZXNoKTsKK30KKwogLSAodm9p
ZClzZXRDdXJyZW50UHJvZ3Jlc3M6KE5TQW5pbWF0aW9uUHJvZ3Jlc3MpcHJvZ3Jlc3MKIHsKICAg
ICBpZiAoIV93aW5kb3cpCkBAIC0xMTcsNyArMTcxLDcgQEAgLSAodm9pZClzZXRDdXJyZW50UHJv
Z3Jlc3M6KE5TQW5pbWF0aW9uUHJvZ3Jlc3MpcHJvZ3Jlc3MKICAgICBbc3VwZXIgc2V0Q3VycmVu
dFByb2dyZXNzOnByb2dyZXNzXTsKIAogICAgIE5TUmVjdCBjdXJyZW50UmVjdCA9IFtzZWxmIGN1
cnJlbnRGcmFtZV07Ci0gICAgd2tXaW5kb3dTZXRTY2FsZWRGcmFtZShfd2luZG93LCBjdXJyZW50
UmVjdCwgX3JlYWxGcmFtZSk7CisgICAgc2V0U2NhbGVkRnJhbWVGb3JXaW5kb3coX3dpbmRvdywg
Y3VycmVudFJlY3QsIF9yZWFsRnJhbWUpOwogICAgIFtfc3ViQW5pbWF0aW9uIHNldEN1cnJlbnRQ
cm9ncmVzczpwcm9ncmVzc107CiB9CiAKQEAgLTIxMSw3ICsyNjUsNyBAQCAtICh2b2lkKXNldEN1
cnJlbnRQcm9ncmVzczooTlNBbmltYXRpb25Qcm9ncmVzcylwcm9ncmVzcwogICAgIEFTU0VSVChf
d2luZG93KTsKICAgICBbc3VwZXIgc2V0Q3VycmVudFByb2dyZXNzOnByb2dyZXNzXTsKIAotICAg
IHdrV2luZG93U2V0QWxwaGEoX3dpbmRvdywgW3NlbGYgY3VycmVudEFscGhhXSk7CisgICAgQ0dT
U2V0V2luZG93QWxwaGEobWFpbldpbmRvd1NlcnZlckNvbm5lY3Rpb25JRCgpLCBfd2luZG93Lndp
bmRvd051bWJlciwgW3NlbGYgY3VycmVudEFscGhhXSk7CiB9CiAKIC0gKHZvaWQpc2V0V2luZG93
OihOU1dpbmRvdyopd2luZG93CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nl
c3MvbWFjL1BsdWdpblByb2Nlc3NNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3Mv
bWFjL1BsdWdpblByb2Nlc3NNYWMubW0KaW5kZXggZGQ1MzM3MDI0N2YwYTZiNzRhMDFiZmNjOGFh
OTZmYTZmZmYzNDQxOC4uN2ZmMWJjOTdiMjk0N2ZmYTQ4OTlkZGYzOTNmYzA5NDk0OWE1NzVjMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL21hYy9QbHVnaW5Qcm9jZXNz
TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9tYWMvUGx1Z2luUHJvY2Vz
c01hYy5tbQpAQCAtNTMwLDcgKzUzMCwxMCBAQCB2b2lkIFBsdWdpblByb2Nlc3M6OnBsYXRmb3Jt
SW5pdGlhbGl6ZVByb2Nlc3MoY29uc3QgQ2hpbGRQcm9jZXNzSW5pdGlhbGl6YXRpb25QYQogCiAg
ICAgLy8gRklYTUU6IEl0IHdvdWxkIGJlIGJldHRlciB0byBwcm94eSBTZXRDdXJzb3IgY2FsbHMg
b3ZlciB0byB0aGUgVUkgcHJvY2VzcyBpbnN0ZWFkIG9mCiAgICAgLy8gYWxsb3dpbmcgcGx1Zy1p
bnMgdG8gY2hhbmdlIHRoZSBtb3VzZSBjdXJzb3IgYXQgYW55IHRpbWUuCi0gICAgV0tFbmFibGVT
ZXR0aW5nQ3Vyc29yV2hlbkluQmFja2dyb3VuZCgpOworICAgIC8vIEZJWE1FOiBTZXRzQ3Vyc29y
SW5CYWNrZ3JvdW5kIGNvbm5lY3Rpb24gcHJvcGVydHkgaXMgZGVwcmVjYXRlZCBpbiBmYXZvciBv
ZiBrQ0dTU2V0c0N1cnNvckluQmFja2dyb3VuZFRhZ0JpdCB3aW5kb3cgdGFnIGJpdC4KKyAgICAv
LyA8cmRhcjovL3Byb2JsZW0vNzc1MjQyMj4gYXNrcyBmb3IgYW4gQVBJIHRvIHNldCBjdXJzb3Ig
ZnJvbSBiYWNrZ3JvdW5kIHByb2Nlc3Nlcy4KKyAgICBDR1NDb25uZWN0aW9uSUQgY2lkID0gQ0dT
TWFpbkNvbm5lY3Rpb25JRCgpOworICAgIENHU1NldENvbm5lY3Rpb25Qcm9wZXJ0eShjaWQsIGNp
ZCwgQ0ZTVFIoIlNldHNDdXJzb3JJbkJhY2tncm91bmQiKSwgKENGVHlwZVJlZilrQ0ZCb29sZWFu
VHJ1ZSk7CiAKICAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IHBsdWdpblVSTCA9IGFkb3B0Q0YoQ0ZV
UkxDcmVhdGVXaXRoRmlsZVN5c3RlbVBhdGgoMCwgbV9wbHVnaW5QYXRoLmNyZWF0ZUNGU3RyaW5n
KCkuZ2V0KCksIGtDRlVSTFBPU0lYUGF0aFN0eWxlLCBmYWxzZSkpOwogICAgIGlmICghcGx1Z2lu
VVJMKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dpbmRvd1NlcnZl
ckNvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XaW5kb3dTZXJ2ZXJD
b25uZWN0aW9uLmgKaW5kZXggODM4YTM0ZmI1YzJkNDRlZWU1NDY0ZTU3ZWRjNzBlMTBhZGJkM2Iy
MC4uZTdiNTE4YzZjNWViMGIwNjJkODlhOTFjYTcwNTc3YmE4NGViMDUxMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dpbmRvd1NlcnZlckNvbm5lY3Rpb24uaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2luZG93U2VydmVyQ29ubmVjdGlvbi5oCkBA
IC00MSw5ICs0MSw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCB3aW5kb3dTZXJ2ZXJDb25uZWN0aW9u
U3RhdGVDaGFuZ2VkKCk7CiAKICAgICB2b2lkIGFwcGxpY2F0aW9uV2luZG93TW9kaWZpY2F0aW9u
c1N0b3BwZWQoYm9vbCBzdG9wcGVkKTsKLQotICAgIHN0YXRpYyB2b2lkIGFwcGxpY2F0aW9uV2lu
ZG93TW9kaWZpY2F0aW9uc1N0YXJ0ZWQodWludDMyX3QsIHZvaWQqLCB1aW50MzJfdCwgdm9pZCos
IHVpbnQzMl90KTsKLSAgICBzdGF0aWMgdm9pZCBhcHBsaWNhdGlvbldpbmRvd01vZGlmaWNhdGlv
bnNTdG9wcGVkKHVpbnQzMl90LCB2b2lkKiwgdWludDMyX3QsIHZvaWQqLCB1aW50MzJfdCk7CiAj
ZW5kaWYKIAogICAgIGJvb2wgbV9hcHBsaWNhdGlvbldpbmRvd01vZGlmaWNhdGlvbnNIYXZlU3Rv
cHBlZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XaW5kb3dTZXJ2
ZXJDb25uZWN0aW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dpbmRvd1NlcnZl
ckNvbm5lY3Rpb24ubW0KaW5kZXggODE5NTM1YzJhYzEyOWM4ZDUyMTIxOGM5NzU1Yzg0YjYxZDQ0
ZjI4NS4uYzk3NTVkNzIyYTVkYzM1MmYzYWExMmU0MDg3OTUwMGNlMjk0MzNiZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dpbmRvd1NlcnZlckNvbm5lY3Rpb24ubW0K
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dpbmRvd1NlcnZlckNvbm5lY3Rpb24u
bW0KQEAgLTQxLDE2ICs0MSw2IEBAIHZvaWQgV2luZG93U2VydmVyQ29ubmVjdGlvbjo6YXBwbGlj
YXRpb25XaW5kb3dNb2RpZmljYXRpb25zU3RvcHBlZChib29sIHN0b3BwZWQpCiAgICAgd2luZG93
U2VydmVyQ29ubmVjdGlvblN0YXRlQ2hhbmdlZCgpOwogfQogCi12b2lkIFdpbmRvd1NlcnZlckNv
bm5lY3Rpb246OmFwcGxpY2F0aW9uV2luZG93TW9kaWZpY2F0aW9uc1N0YXJ0ZWQodWludDMyX3Qs
IHZvaWQqLCB1aW50MzJfdCwgdm9pZCosIHVpbnQzMl90KQotewotICAgIFdpbmRvd1NlcnZlckNv
bm5lY3Rpb246OnNpbmdsZXRvbigpLmFwcGxpY2F0aW9uV2luZG93TW9kaWZpY2F0aW9uc1N0b3Bw
ZWQoZmFsc2UpOwotfQotCi12b2lkIFdpbmRvd1NlcnZlckNvbm5lY3Rpb246OmFwcGxpY2F0aW9u
V2luZG93TW9kaWZpY2F0aW9uc1N0b3BwZWQodWludDMyX3QsIHZvaWQqLCB1aW50MzJfdCwgdm9p
ZCosIHVpbnQzMl90KQotewotICAgIFdpbmRvd1NlcnZlckNvbm5lY3Rpb246OnNpbmdsZXRvbigp
LmFwcGxpY2F0aW9uV2luZG93TW9kaWZpY2F0aW9uc1N0b3BwZWQodHJ1ZSk7Ci19Ci0KIHZvaWQg
V2luZG93U2VydmVyQ29ubmVjdGlvbjo6d2luZG93U2VydmVyQ29ubmVjdGlvblN0YXRlQ2hhbmdl
ZCgpCiB7CiAgICAgZm9yIChhdXRvKiBwcm9jZXNzUG9vbCA6IFdlYlByb2Nlc3NQb29sOjphbGxQ
cm9jZXNzUG9vbHMoKSkKQEAgLTY1LDIzICs1NSw0NiBAQCBXaW5kb3dTZXJ2ZXJDb25uZWN0aW9u
JiBXaW5kb3dTZXJ2ZXJDb25uZWN0aW9uOjpzaW5nbGV0b24oKQogICAgIHJldHVybiB3aW5kb3dT
ZXJ2ZXJDb25uZWN0aW9uOwogfQogCitzdGF0aWMgYm9vbCByZWdpc3Rlck9jY2x1c2lvbk5vdGlm
aWNhdGlvbkhhbmRsZXIoQ0dTTm90aWZpY2F0aW9uVHlwZSB0eXBlLCBDR1NOb3RpZnlDb25uZWN0
aW9uUHJvY1B0ciBoYW5kbGVyKQoreworICAgIENHU0Nvbm5lY3Rpb25JRCBtYWluQ29ubmVjdGlv
biA9IENHU01haW5Db25uZWN0aW9uSUQoKTsKKyAgICBzdGF0aWMgYm9vbCBub3RpZmljYXRpb25z
RW5hYmxlZDsKKyAgICBpZiAoIW5vdGlmaWNhdGlvbnNFbmFibGVkKSB7CisgICAgICAgIGlmIChD
R1NQYWNrYWdlc0VuYWJsZUNvbm5lY3Rpb25PY2NsdXNpb25Ob3RpZmljYXRpb25zKG1haW5Db25u
ZWN0aW9uLCB0cnVlLCBudWxscHRyKSAhPSBrQ0dFcnJvclN1Y2Nlc3MpCisgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgIGlmIChDR1NQYWNrYWdlc0VuYWJsZUNvbm5lY3Rpb25XaW5k
b3dNb2RpZmljYXRpb25Ob3RpZmljYXRpb25zKG1haW5Db25uZWN0aW9uLCB0cnVlLCBudWxscHRy
KSAhPSBrQ0dFcnJvclN1Y2Nlc3MpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg
IG5vdGlmaWNhdGlvbnNFbmFibGVkID0gdHJ1ZTsKKyAgICB9CisKKyAgICByZXR1cm4gQ0dTUmVn
aXN0ZXJDb25uZWN0aW9uTm90aWZ5UHJvYyhtYWluQ29ubmVjdGlvbiwgaGFuZGxlciwgdHlwZSwg
bnVsbHB0cikgPT0ga0NHRXJyb3JTdWNjZXNzOworfQorCiBXaW5kb3dTZXJ2ZXJDb25uZWN0aW9u
OjpXaW5kb3dTZXJ2ZXJDb25uZWN0aW9uKCkKICAgICA6IG1fYXBwbGljYXRpb25XaW5kb3dNb2Rp
ZmljYXRpb25zSGF2ZVN0b3BwZWQoZmFsc2UpCiB7CiAjaWYgSEFWRShXSU5ET1dfU0VSVkVSX09D
Q0xVU0lPTl9OT1RJRklDQVRJT05TKQogICAgIHN0cnVjdCBPY2NsdXNpb25Ob3RpZmljYXRpb25I
YW5kbGVyIHsKLSAgICAgICAgV0tPY2NsdXNpb25Ob3RpZmljYXRpb25UeXBlIG5vdGlmaWNhdGlv
blR5cGU7Ci0gICAgICAgIFdLT2NjbHVzaW9uTm90aWZpY2F0aW9uSGFuZGxlciBoYW5kbGVyOwor
ICAgICAgICBDR1NOb3RpZmljYXRpb25UeXBlIG5vdGlmaWNhdGlvblR5cGU7CisgICAgICAgIENH
U05vdGlmeUNvbm5lY3Rpb25Qcm9jUHRyIGhhbmRsZXI7CiAgICAgICAgIGNvbnN0IGNoYXIqIG5h
bWU7CiAgICAgfTsKIAorICAgIHN0YXRpYyBhdXRvIHdpbmRvd01vZGlmaWNhdGlvbnNTdGFydGVk
ID0gW10oQ0dTTm90aWZpY2F0aW9uVHlwZSwgdm9pZCosIHVpbnQzMl90LCB2b2lkKiwgQ0dTQ29u
bmVjdGlvbklEKSB7CisgICAgICAgIFdpbmRvd1NlcnZlckNvbm5lY3Rpb246OnNpbmdsZXRvbigp
LmFwcGxpY2F0aW9uV2luZG93TW9kaWZpY2F0aW9uc1N0b3BwZWQoZmFsc2UpOworICAgIH07CisK
KyAgICBzdGF0aWMgYXV0byB3aW5kb3dNb2RpZmljYXRpb25zU3RvcHBlZCA9IFtdKENHU05vdGlm
aWNhdGlvblR5cGUsIHZvaWQqLCB1aW50MzJfdCwgdm9pZCosIENHU0Nvbm5lY3Rpb25JRCkgewor
ICAgICAgICBXaW5kb3dTZXJ2ZXJDb25uZWN0aW9uOjpzaW5nbGV0b24oKS5hcHBsaWNhdGlvbldp
bmRvd01vZGlmaWNhdGlvbnNTdG9wcGVkKHRydWUpOworICAgIH07CisKICAgICBzdGF0aWMgY29u
c3QgT2NjbHVzaW9uTm90aWZpY2F0aW9uSGFuZGxlciBvY2NsdXNpb25Ob3RpZmljYXRpb25IYW5k
bGVyc1tdID0gewotICAgICAgICB7IFdLT2NjbHVzaW9uTm90aWZpY2F0aW9uVHlwZUFwcGxpY2F0
aW9uV2luZG93TW9kaWZpY2F0aW9uc1N0YXJ0ZWQsIGFwcGxpY2F0aW9uV2luZG93TW9kaWZpY2F0
aW9uc1N0YXJ0ZWQsICJBcHBsaWNhdGlvbiBXaW5kb3cgTW9kaWZpY2F0aW9ucyBTdGFydGVkIiB9
LAotICAgICAgICB7IFdLT2NjbHVzaW9uTm90aWZpY2F0aW9uVHlwZUFwcGxpY2F0aW9uV2luZG93
TW9kaWZpY2F0aW9uc1N0b3BwZWQsIGFwcGxpY2F0aW9uV2luZG93TW9kaWZpY2F0aW9uc1N0b3Bw
ZWQsICJBcHBsaWNhdGlvbiBXaW5kb3cgTW9kaWZpY2F0aW9ucyBTdG9wcGVkIiB9LAorICAgICAg
ICB7IGtDR1NDb25uZWN0aW9uV2luZG93TW9kaWZpY2F0aW9uc1N0YXJ0ZWQsIHdpbmRvd01vZGlm
aWNhdGlvbnNTdGFydGVkLCAiQXBwbGljYXRpb24gV2luZG93IE1vZGlmaWNhdGlvbnMgU3RhcnRl
ZCIgfSwKKyAgICAgICAgeyBrQ0dTQ29ubmVjdGlvbldpbmRvd01vZGlmaWNhdGlvbnNTdG9wcGVk
LCB3aW5kb3dNb2RpZmljYXRpb25zU3RvcHBlZCwgIkFwcGxpY2F0aW9uIFdpbmRvdyBNb2RpZmlj
YXRpb25zIFN0b3BwZWQiIH0sCiAgICAgfTsKIAogICAgIGZvciAoY29uc3QgYXV0byYgb2NjbHVz
aW9uTm90aWZpY2F0aW9uSGFuZGxlciA6IG9jY2x1c2lvbk5vdGlmaWNhdGlvbkhhbmRsZXJzKSB7
Ci0gICAgICAgIGJvb2wgcmVzdWx0ID0gV0tSZWdpc3Rlck9jY2x1c2lvbk5vdGlmaWNhdGlvbkhh
bmRsZXIob2NjbHVzaW9uTm90aWZpY2F0aW9uSGFuZGxlci5ub3RpZmljYXRpb25UeXBlLCBvY2Ns
dXNpb25Ob3RpZmljYXRpb25IYW5kbGVyLmhhbmRsZXIpOworICAgICAgICBib29sIHJlc3VsdCA9
IHJlZ2lzdGVyT2NjbHVzaW9uTm90aWZpY2F0aW9uSGFuZGxlcihvY2NsdXNpb25Ob3RpZmljYXRp
b25IYW5kbGVyLm5vdGlmaWNhdGlvblR5cGUsIG9jY2x1c2lvbk5vdGlmaWNhdGlvbkhhbmRsZXIu
aGFuZGxlcik7CiAgICAgICAgIFVOVVNFRF9QQVJBTShyZXN1bHQpOwogICAgICAgICBBU1NFUlRf
V0lUSF9NRVNTQUdFKHJlc3VsdCwgIlJlZ2lzdHJhdGlvbiBvZiBcIiVzXCIgbm90aWZpY2F0aW9u
IGhhbmRsZXIgZmFpbGVkLlxuIiwgb2NjbHVzaW9uTm90aWZpY2F0aW9uSGFuZGxlci5uYW1lKTsK
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvbWFjL1dlYlN5c3RlbUludGVyZmFjZS5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9tYWMvV2ViU3lzdGVtSW50ZXJmYWNlLm1tCmluZGV4IDQ0ZGM3ZWNiMzYy
MGU4ZjQ1MTQyZWIzN2M3ODc1YWRjYjNiOTQxMmIuLjgzZGQ4M2U0MzRkYmQzNDk1MzQzYWU3MTAx
OTI0OTMyZDhmYmE1MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9tYWMvV2ViU3lzdGVtSW50ZXJmYWNlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViU3lzdGVtSW50ZXJmYWNlLm1tCkBAIC0z
NywyMSArMzcsMTEgQEAgdm9pZCBJbml0V2ViQ29yZVN5c3RlbUludGVyZmFjZSh2b2lkKQogICAg
IAogICAgIGRpc3BhdGNoX29uY2UoJmluaXRPbmNlLCBeewogICAgICAgICBJTklUKENBTGF5ZXJF
bnVtZXJhdGVSZWN0c0JlaW5nRHJhd25XaXRoQmxvY2spOwotICAgICAgICBJTklUKENHUGF0dGVy
bkNyZWF0ZVdpdGhJbWFnZUFuZFRyYW5zZm9ybSk7Ci0jaWYgIVBMQVRGT1JNKElPUykKLSAgICAg
ICAgSU5JVChDR0NvbnRleHREcmF3c1dpdGhDb3JyZWN0U2hhZG93T2Zmc2V0cyk7Ci0jZW5kaWYK
ICAgICAgICAgSU5JVChDb3B5Q09OTkVDVFByb3h5UmVzcG9uc2UpOwogI2lmICFQTEFURk9STShJ
T1MpCiAgICAgICAgIElOSVQoRHJhd0JlemVsZWRUZXh0QXJlYSk7Ci0gICAgICAgIElOSVQoRHJh
d0ZvY3VzUmluZyk7Ci0gICAgICAgIElOSVQoRHJhd0ZvY3VzUmluZ0F0VGltZSk7Ci0gICAgICAg
IElOSVQoRHJhd0NlbGxGb2N1c1JpbmdXaXRoRnJhbWVBdFRpbWUpOwogICAgICAgICBJTklUKERy
YXdNZWRpYVNsaWRlclRyYWNrKTsKICAgICAgICAgSU5JVChEcmF3TWVkaWFVSVBhcnQpOwotI2Vu
ZGlmCi0gICAgICAgIElOSVQoQ0dDb250ZXh0SXNQREZDb250ZXh0KTsKLSNpZiAhUExBVEZPUk0o
SU9TKQogICAgICAgICBJTklUKEdldFdoZWVsRXZlbnREZWx0YXMpOwogICAgICAgICBJTklUKEdl
dE5TRXZlbnRLZXlDaGFyKTsKICAgICAgICAgSU5JVChIaXRUZXN0TWVkaWFVSVBhcnQpOwpAQCAt
NzEsMTYgKzYxLDExIEBAIHZvaWQgSW5pdFdlYkNvcmVTeXN0ZW1JbnRlcmZhY2Uodm9pZCkKICNl
bmRpZgogICAgICAgICBJTklUKFNldENPTk5FQ1RQcm94eUF1dGhvcml6YXRpb25Gb3JTdHJlYW0p
OwogICAgICAgICBJTklUKFNldENPTk5FQ1RQcm94eUZvclN0cmVhbSk7Ci0jaWYgIVBMQVRGT1JN
KElPUykKLSAgICAgICAgSU5JVChTZXREcmFnSW1hZ2UpOwotI2VuZGlmCiAKICNpZiAhUExBVEZP
Uk0oSU9TKQogICAgICAgICBJTklUKEV4ZWN1dGFibGVXYXNMaW5rZWRPbk9yQmVmb3JlU25vd0xl
b3BhcmQpOwogICAgICAgICBJTklUKENvcHlEZWZhdWx0U2VhcmNoUHJvdmlkZXJEaXNwbGF5TmFt
ZSk7CiAgICAgICAgIElOSVQoQ3Vyc29yKTsKLSAgICAgICAgSU5JVChXaW5kb3dTZXRTY2FsZWRG
cmFtZSk7Ci0gICAgICAgIElOSVQoV2luZG93U2V0QWxwaGEpOwogICAgICAgICBJTklUKFNwZWVj
aFN5bnRoZXNpc0dldFZvaWNlSWRlbnRpZmllcnMpOwogICAgICAgICBJTklUKFNwZWVjaFN5bnRo
ZXNpc0dldERlZmF1bHRWb2ljZUlkZW50aWZpZXJGb3JMb2NhbGUpOwogICAgICAgICBJTklUKE5T
RWxhc3RpY0RlbHRhRm9yVGltZURlbHRhKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0NhcmJvbi9ISVdlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DYXJi
b24vSElXZWJWaWV3Lm1tCmluZGV4IDM0NTg1YzI1MmMzYjE4Y2FjZDZlMDdhZDVlOTQ0ODc3OWQ4
YmU0NTcuLmE5ZjZlYWVkNzIwMzg4NDczZWUzNmFhMDFkYjFkOWIzNDMxZDZlMDggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NhcmJvbi9ISVdlYlZpZXcubW0KKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2FyYm9uL0hJV2ViVmlldy5tbQpAQCAtODUsNiArODUsMjEg
QEAgLSAoaW50KXRhZwogCiBAZW5kCiAKK0BpbnRlcmZhY2UgTlNXaW5kb3dHcmFwaGljc0NvbnRl
eHQgKCkKKy0gKHZvaWQpX3dlYl9zZXRHcmFwaGljc1BvcnQ6KENHQ29udGV4dFJlZiljb250ZXh0
OworQGVuZAorCitAaW1wbGVtZW50YXRpb24gTlNXaW5kb3dHcmFwaGljc0NvbnRleHQgKCkKKwor
LSAodm9pZClfd2ViX3NldEdyYXBoaWNzUG9ydDooQ0dDb250ZXh0UmVmKWNvbnRleHQKK3sKKyAg
ICBDR0NvbnRleHRSZXRhaW4oY29udGV4dCk7CisgICAgQ0dDb250ZXh0UmVsZWFzZShfY2dzQ29u
dGV4dCk7CisgICAgX2Nnc0NvbnRleHQgPSBjb250ZXh0OworfQorCitAZW5kCisKIHN0cnVjdCBI
SVdlYlZpZXcKIHsKICAgICBISVZpZXdSZWYJCQkJCQkJZlZpZXdSZWY7CkBAIC0yOTAsNiArMzA1
LDIyIEBAIEdldEJlaGF2aW9ycygpCiAJcmV0dXJuIGtDb250cm9sU3VwcG9ydHNEYXRhQWNjZXNz
IHwga0NvbnRyb2xTdXBwb3J0c0dldFJlZ2lvbiB8IGtDb250cm9sR2V0c0ZvY3VzT25DbGljazsK
IH0KIAorc3RhdGljIENHQ29udGV4dFJlZiBvdmVycmlkZUNHQ29udGV4dChOU1dpbmRvdyAqd2lu
ZG93LCBDR0NvbnRleHRSZWYgY29udGV4dCkKK3sKKyAgICBOU1dpbmRvd0dyYXBoaWNzQ29udGV4
dCAqZ3JhcGhpY3NDb250ZXh0ID0gKE5TV2luZG93R3JhcGhpY3NDb250ZXh0ICopW3dpbmRvdyBn
cmFwaGljc0NvbnRleHRdOworICAgIENHQ29udGV4dFJlZiBzYXZlZENvbnRleHQgPSAoQ0dDb250
ZXh0UmVmKVtncmFwaGljc0NvbnRleHQgZ3JhcGhpY3NQb3J0XTsKKyAgICBDR0NvbnRleHRSZXRh
aW4oc2F2ZWRDb250ZXh0KTsKKyAgICBbZ3JhcGhpY3NDb250ZXh0IF93ZWJfc2V0R3JhcGhpY3NQ
b3J0OmNvbnRleHRdOworICAgIHJldHVybiBzYXZlZENvbnRleHQ7Cit9CisKK3N0YXRpYyB2b2lk
IHJlc3RvcmVDR0NvbnRleHQoTlNXaW5kb3cgKndpbmRvdywgQ0dDb250ZXh0UmVmIHNhdmVkQ29u
dGV4dCkKK3sKKyAgICBOU1dpbmRvd0dyYXBoaWNzQ29udGV4dCAqZ3JhcGhpY3NDb250ZXh0ID0g
KE5TV2luZG93R3JhcGhpY3NDb250ZXh0ICopW3dpbmRvdyBncmFwaGljc0NvbnRleHRdOworICAg
IFtncmFwaGljc0NvbnRleHQgX3dlYl9zZXRHcmFwaGljc1BvcnQ6c2F2ZWRDb250ZXh0XTsKKyAg
ICBDR0NvbnRleHRSZWxlYXNlKHNhdmVkQ29udGV4dCk7Cit9CisKIC8vLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQogLy8gRHJhdwogLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC0zMjEs
NyArMzUyLDcgQEAgRHJhdyggSElXZWJWaWV3KiBpblZpZXcsIFJnbkhhbmRsZSBsaW1pdFJnbiwg
Q0dDb250ZXh0UmVmIGluQ29udGV4dCApCiAKIAlISVZpZXdHZXRCb3VuZHMoIGluVmlldy0+ZlZp
ZXdSZWYsICZib3VuZHMgKTsKIAotICAgIENHQ29udGV4dFJlZiBzYXZlZENvbnRleHQgPSBXS05T
V2luZG93T3ZlcnJpZGVDR0NvbnRleHQoaW5WaWV3LT5mS2l0V2luZG93LCBpbkNvbnRleHQpOwor
ICAgIENHQ29udGV4dFJlZiBzYXZlZENvbnRleHQgPSBvdmVycmlkZUNHQ29udGV4dChpblZpZXct
PmZLaXRXaW5kb3csIGluQ29udGV4dCk7CiAgICAgW05TR3JhcGhpY3NDb250ZXh0IHNldEN1cnJl
bnRDb250ZXh0OltpblZpZXctPmZLaXRXaW5kb3cgZ3JhcGhpY3NDb250ZXh0XV07CiAKIAlHZXRS
ZWdpb25Cb3VuZHMoIGxpbWl0UmduLCAmZHJhd1JlY3QgKTsKQEAgLTM1MSw3ICszODIsNyBAQCBE
cmF3KCBISVdlYlZpZXcqIGluVmlldywgUmduSGFuZGxlIGxpbWl0UmduLCBDR0NvbnRleHRSZWYg
aW5Db250ZXh0ICkKICAgICBlbHNlCiAgICAgICAgIFtpblZpZXctPmZXZWJWaWV3IGRpc3BsYXlS
ZWN0OiooTlNSZWN0KikmaGlSZWN0XTsKIAotICAgIFdLTlNXaW5kb3dSZXN0b3JlQ0dDb250ZXh0
KGluVmlldy0+ZktpdFdpbmRvdywgc2F2ZWRDb250ZXh0KTsKKyAgICByZXN0b3JlQ0dDb250ZXh0
KGluVmlldy0+ZktpdFdpbmRvdywgc2F2ZWRDb250ZXh0KTsKIAogICAgIGlmICggIWluVmlldy0+
ZklzQ29tcG9zaXRlZCApCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvUGx1Z2lucy9Ib3N0ZWQvV2ViSG9zdGVkTmV0c2NhcGVQbHVnaW5WaWV3Lm1tIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvV2ViSG9zdGVkTmV0c2NhcGVQbHVnaW5W
aWV3Lm1tCmluZGV4IDllMjA0NGUyNmUxMzkwMjFlYjhjYTYzMzYyNTVmMmM4MzNjMWI4YjIuLjY5
NWE1Y2Y1MjczNzNkMzA5YTgzYjY0ZDZmMWQwMTAwZWQzYTQwOGEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL1dlYkhvc3RlZE5ldHNjYXBlUGx1Z2lu
Vmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9XZWJI
b3N0ZWROZXRzY2FwZVBsdWdpblZpZXcubW0KQEAgLTc2LDcgKzc2LDcgQEAgKyAodm9pZClpbml0
aWFsaXplCiAgICAgV1RGOjppbml0aWFsaXplTWFpblRocmVhZFRvUHJvY2Vzc01haW5UaHJlYWQo
KTsKICAgICBSdW5Mb29wOjppbml0aWFsaXplTWFpblJ1bkxvb3AoKTsKICNlbmRpZgotICAgIFdL
U2VuZFVzZXJDaGFuZ2VOb3RpZmljYXRpb25zKCk7CisgICAgc2VuZFVzZXJDaGFuZ2VOb3RpZmlj
YXRpb25zKCk7CiB9CiAKIC0gKGlkKWluaXRXaXRoRnJhbWU6KE5TUmVjdClmcmFtZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJCYXNlTmV0c2NhcGVQbHVn
aW5WaWV3LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYkJhc2VOZXRzY2Fw
ZVBsdWdpblZpZXcuaAppbmRleCBjMjIyM2FiNmQyNjc1MWYzOGMzODk1ODFiZDM0OWRlOTgxNGMx
NWIxLi5jZDQzMGQzNjY5NzFlYzlmZTJlYTBkNDQwNTkzYjU4MGM5Y2EyZTI3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYkJhc2VOZXRzY2FwZVBsdWdpblZp
ZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYkJhc2VOZXRzY2Fw
ZVBsdWdpblZpZXcuaApAQCAtMTM0LDYgKzEzNCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIG5h
bWVzcGFjZSBXZWJLaXQgewogYm9vbCBnZXRBdXRoZW50aWNhdGlvbkluZm8oY29uc3QgY2hhciog
cHJvdG9jb2xTdHIsIGNvbnN0IGNoYXIqIGhvc3RTdHIsIGludDMyX3QgcG9ydCwgY29uc3QgY2hh
ciogc2NoZW1lU3RyLCBjb25zdCBjaGFyKiByZWFsbVN0ciwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFdURjo6Q1N0cmluZyYgdXNlcm5hbWUsIFdURjo6Q1N0cmluZyYgcGFzc3dvcmQpOwor
dm9pZCBzZW5kVXNlckNoYW5nZU5vdGlmaWNhdGlvbnMoKTsKIH0gCiAKICNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJCYXNlTmV0c2NhcGVQbHVn
aW5WaWV3Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJCYXNlTmV0c2Nh
cGVQbHVnaW5WaWV3Lm1tCmluZGV4IDY0ZGU5MDEwZWJkYjBiMDY5ZDZmODYzYTNmZWYyZmZkN2I1
ZDQzMzguLmJlMWMzMGIzZjMwOWRhNjg1NWYzY2QxZDI3YWI0NzA4OWFlZDJjMzUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViQmFzZU5ldHNjYXBlUGx1Z2lu
Vmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYkJhc2VOZXRz
Y2FwZVBsdWdpblZpZXcubW0KQEAgLTU1LDYgKzU1LDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvU2Vj
dXJpdHlPcmlnaW4uaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViQ29yZU9iakNFeHRyYXMuaD4KICNp
bXBvcnQgPFdlYktpdExlZ2FjeS9ET01Qcml2YXRlLmg+CisjaW1wb3J0IDxwYWwvc3BpL2NnL0Nv
cmVHcmFwaGljc1NQSS5oPgogI2ltcG9ydCA8cnVudGltZS9Jbml0aWFsaXplVGhyZWFkaW5nLmg+
CiAjaW1wb3J0IDx3dGYvQXNzZXJ0aW9ucy5oPgogI2ltcG9ydCA8d3RmL01haW5UaHJlYWQuaD4K
QEAgLTczLDcgKzc0LDcgQEAgKyAodm9pZClpbml0aWFsaXplCiAgICAgSlNDOjppbml0aWFsaXpl
VGhyZWFkaW5nKCk7CiAgICAgV1RGOjppbml0aWFsaXplTWFpblRocmVhZFRvUHJvY2Vzc01haW5U
aHJlYWQoKTsKICAgICBSdW5Mb29wOjppbml0aWFsaXplTWFpblJ1bkxvb3AoKTsKLSAgICBXS1Nl
bmRVc2VyQ2hhbmdlTm90aWZpY2F0aW9ucygpOworICAgIFdlYktpdDo6c2VuZFVzZXJDaGFuZ2VO
b3RpZmljYXRpb25zKCk7CiB9CiAKIC0gKGlkKWluaXRXaXRoRnJhbWU6KE5TUmVjdClmcmFtZQpA
QCAtOTAwLDYgKzkwMSwyMyBAQCBib29sIGdldEF1dGhlbnRpY2F0aW9uSW5mbyhjb25zdCBjaGFy
KiBwcm90b2NvbFN0ciwgY29uc3QgY2hhciogaG9zdFN0ciwgaW50MzJfdAogICAgIHJldHVybiB0
cnVlOwogfQogCit2b2lkIHNlbmRVc2VyQ2hhbmdlTm90aWZpY2F0aW9ucygpCit7CisgICAgYXV0
byBjb25zb2xlQ29ubmVjdGlvbkNoYW5nZU5vdGlmeVByb2MgPSBbXShDR1NOb3RpZmljYXRpb25U
eXBlIHR5cGUsIENHU05vdGlmaWNhdGlvbkRhdGEsIENHU0J5dGVDb3VudCwgQ0dTTm90aWZpY2F0
aW9uQXJnKSB7CisgICAgICAgIE5TU3RyaW5nICpub3RpZmljYXRpb25OYW1lID0gbmlsOworICAg
ICAgICBpZiAodHlwZSA9PSBrQ0dTZXNzaW9uQ29uc29sZUNvbm5lY3QpCisgICAgICAgICAgICBu
b3RpZmljYXRpb25OYW1lID0gTG9naW5XaW5kb3dEaWRTd2l0Y2hUb1VzZXJOb3RpZmljYXRpb247
CisgICAgICAgIGVsc2UgaWYgKHR5cGUgPT0ga0NHU2Vzc2lvbkNvbnNvbGVEaXNjb25uZWN0KQor
ICAgICAgICAgICAgbm90aWZpY2F0aW9uTmFtZSA9IExvZ2luV2luZG93RGlkU3dpdGNoRnJvbVVz
ZXJOb3RpZmljYXRpb247CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgICAgICBbW05TTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdIHBv
c3ROb3RpZmljYXRpb25OYW1lOm5vdGlmaWNhdGlvbk5hbWUgb2JqZWN0Om5pbF07CisgICAgfTsK
KworICAgIENHU1JlZ2lzdGVyTm90aWZ5UHJvYyhjb25zb2xlQ29ubmVjdGlvbkNoYW5nZU5vdGlm
eVByb2MsIGtDR1Nlc3Npb25Db25zb2xlQ29ubmVjdCwgTlVMTCk7CisgICAgQ0dTUmVnaXN0ZXJO
b3RpZnlQcm9jKGNvbnNvbGVDb25uZWN0aW9uQ2hhbmdlTm90aWZ5UHJvYywga0NHU2Vzc2lvbkNv
bnNvbGVEaXNjb25uZWN0LCBOVUxMKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNl
bmRpZiAvLyAgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luVmlldy5tbSBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5WaWV3Lm1tCmluZGV4
IGM2ODBmZjdlZTMxYzkzYjhmYjQ5MjI5N2U0ZTdhZDkxNDFhNGRkZTQuLjJiYmQzZGViZTY2ZTE4
ZDhmMzE4MGM5NGNhMTMzN2ZjZjdkODgxNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5WaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5WaWV3Lm1tCkBAIC0xOTMsNyAr
MTkzLDcgQEAgKyAodm9pZClpbml0aWFsaXplCiAgICAgSlNDOjppbml0aWFsaXplVGhyZWFkaW5n
KCk7CiAgICAgV1RGOjppbml0aWFsaXplTWFpblRocmVhZFRvUHJvY2Vzc01haW5UaHJlYWQoKTsK
ICAgICBSdW5Mb29wOjppbml0aWFsaXplTWFpblJ1bkxvb3AoKTsKLSAgICBXS1NlbmRVc2VyQ2hh
bmdlTm90aWZpY2F0aW9ucygpOworICAgIHNlbmRVc2VyQ2hhbmdlTm90aWZpY2F0aW9ucygpOwog
fQogCiAvLyBNQVJLOiBFVkVOVFMKQEAgLTM3OSwxMCArMzc5LDEwIEBAIC0gKFBvcnRTdGF0ZSlz
YXZlQW5kU2V0TmV3UG9ydFN0YXRlRm9yVXBkYXRlOihCT09MKWZvclVwZGF0ZQogICAgICAgICAg
ICAgcWRQb3J0U3RhdGUtPmNsaXBSZWdpb24gPSBjbGlwUmVnaW9uOwogCiAgICAgICAgICAgICBD
R0NvbnRleHRSZWYgY3VycmVudENvbnRleHQgPSAoQ0dDb250ZXh0UmVmKVtbTlNHcmFwaGljc0Nv
bnRleHQgY3VycmVudENvbnRleHRdIGdyYXBoaWNzUG9ydF07Ci0gICAgICAgICAgICBpZiAoY3Vy
cmVudENvbnRleHQgJiYgV0tDR0NvbnRleHRJc0JpdG1hcENvbnRleHQoY3VycmVudENvbnRleHQp
KSB7Ci0gICAgICAgICAgICAgICAgLy8gV2UgdXNlIFdLQ0dDb250ZXh0SXNCaXRtYXBDb250ZXh0
IGhlcmUsIGJlY2F1c2UgaWYgd2UganVzdCBjYWxsZWQgQ0dCaXRtYXBDb250ZXh0R2V0RGF0YQot
ICAgICAgICAgICAgICAgIC8vIG9uIGFueSBjb250ZXh0LCB3ZSdkIGxvZyB0byB0aGUgY29uc29s
ZSBldmVyeSB0aW1lLiBCdXQgZXZlbiBpZiBXS0NHQ29udGV4dElzQml0bWFwQ29udGV4dAotICAg
ICAgICAgICAgICAgIC8vIHJldHVybnMgdHJ1ZSwgaXQgc3RpbGwgbWlnaHQgbm90IGJlIGEgY29u
dGV4dCB3ZSBuZWVkIHRvIGNyZWF0ZSBhIEdXb3JsZCBmb3I7IGZvciBleGFtcGxlCisgICAgICAg
ICAgICBpZiAoY3VycmVudENvbnRleHQgJiYgQ0dDb250ZXh0R2V0VHlwZShjdXJyZW50Q29udGV4
dCkgPT0ga0NHQ29udGV4dFR5cGVCaXRtYXApIHsKKyAgICAgICAgICAgICAgICAvLyBXZSBjaGVj
ayBmb3Iga0NHQ29udGV4dFR5cGVCaXRtYXAgaGVyZSwgYmVjYXVzZSBpZiB3ZSBqdXN0IGNhbGxl
ZCBDR0JpdG1hcENvbnRleHRHZXREYXRhCisgICAgICAgICAgICAgICAgLy8gb24gYW55IGNvbnRl
eHQsIHdlJ2QgbG9nIHRvIHRoZSBjb25zb2xlIGV2ZXJ5IHRpbWUuIEJ1dCBldmVuIGlmIGN1cnJl
bnRDb250ZXh0IGlzIGEKKyAgICAgICAgICAgICAgICAvLyBrQ0dDb250ZXh0VHlwZUJpdG1hcCwg
aXQgc3RpbGwgbWlnaHQgbm90IGJlIGEgY29udGV4dCB3ZSBuZWVkIHRvIGNyZWF0ZSBhIEdXb3Js
ZCBmb3I7IGZvciBleGFtcGxlCiAgICAgICAgICAgICAgICAgLy8gdHJhbnNwYXJlbmN5IGxheWVy
cyB3aWxsIHJldHVybiB0cnVlLCBidXQgcmV0dXJuIDAgZm9yIENHQml0bWFwQ29udGV4dEdldERh
dGEuCiAgICAgICAgICAgICAgICAgdm9pZCogb2Zmc2NyZWVuRGF0YSA9IENHQml0bWFwQ29udGV4
dEdldERhdGEoY3VycmVudENvbnRleHQpOwogICAgICAgICAgICAgICAgIGlmIChvZmZzY3JlZW5E
YXRhKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJTeXN0ZW1JbnRlcmZhY2UubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJTeXN0ZW1JbnRlcmZhY2UubW0KaW5kZXggZDQ1NTE2ZjVlZWUxYzA4MmM5ODI4
ZDllNzQ3NGVjOTY4OWM0N2I1OC4uOWJlMDAwMmZkNTNmNDkzMzM0ZWIyYzk5OTMxMWZhODM5NDJm
N2UzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViU3lzdGVtSW50ZXJmYWNlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYlN5c3RlbUludGVyZmFjZS5tbQpAQCAtNDMsMTYgKzQzLDkgQEAgdm9pZCBJ
bml0V2ViQ29yZVN5c3RlbUludGVyZmFjZSh2b2lkKQogICAgICAgICByZXR1cm47CiAKICAgICBJ
TklUKENBTGF5ZXJFbnVtZXJhdGVSZWN0c0JlaW5nRHJhd25XaXRoQmxvY2spOwotICAgIElOSVQo
Q0dQYXR0ZXJuQ3JlYXRlV2l0aEltYWdlQW5kVHJhbnNmb3JtKTsKLSNpZiAhUExBVEZPUk0oSU9T
KQotICAgIElOSVQoQ0dDb250ZXh0RHJhd3NXaXRoQ29ycmVjdFNoYWRvd09mZnNldHMpOwotI2Vu
ZGlmCiAgICAgSU5JVChDb3B5Q09OTkVDVFByb3h5UmVzcG9uc2UpOwogI2lmICFQTEFURk9STShJ
T1MpCiAgICAgSU5JVChEcmF3QmV6ZWxlZFRleHRBcmVhKTsKLSAgICBJTklUKERyYXdGb2N1c1Jp
bmcpOwotICAgIElOSVQoRHJhd0ZvY3VzUmluZ0F0VGltZSk7Ci0gICAgSU5JVChEcmF3Q2VsbEZv
Y3VzUmluZ1dpdGhGcmFtZUF0VGltZSk7CiAgICAgSU5JVChEcmF3TWVkaWFVSVBhcnQpOwogICAg
IElOSVQoRHJhd01lZGlhU2xpZGVyVHJhY2spOwogICAgIElOSVQoR2V0V2hlZWxFdmVudERlbHRh
cyk7CkBAIC02MSwxNSArNTQsOSBAQCB2b2lkIEluaXRXZWJDb3JlU3lzdGVtSW50ZXJmYWNlKHZv
aWQpCiAgICAgSU5JVChNZWFzdXJlTWVkaWFVSVBhcnQpOwogICAgIElOSVQoQ3JlYXRlTWVkaWFV
SUJhY2tncm91bmRWaWV3KTsKICAgICBJTklUKENyZWF0ZU1lZGlhVUlDb250cm9sKTsKLSAgICBJ
TklUKFdpbmRvd1NldEFscGhhKTsKLSAgICBJTklUKFdpbmRvd1NldFNjYWxlZEZyYW1lKTsKICNl
bmRpZgogICAgIElOSVQoU2V0Q09OTkVDVFByb3h5QXV0aG9yaXphdGlvbkZvclN0cmVhbSk7CiAg
ICAgSU5JVChTZXRDT05ORUNUUHJveHlGb3JTdHJlYW0pOwotI2lmICFQTEFURk9STShJT1MpCi0g
ICAgSU5JVChTZXREcmFnSW1hZ2UpOwotI2VuZGlmCi0gICAgSU5JVChDR0NvbnRleHRJc1BERkNv
bnRleHQpOwogI2lmIEVOQUJMRShWSURFTykgJiYgIVBMQVRGT1JNKElPUykKICAgICBJTklUKFFU
SW5jbHVkZU9ubHlNb2Rlcm5NZWRpYUZpbGVUeXBlcyk7CiAgICAgSU5JVChRVE1vdmllRGlzYWJs
ZUNvbXBvbmVudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3
L1dlYkZyYW1lLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZS5t
bQppbmRleCBmMGY4ZTYyODU4MGIyOWZlMDQ3ZWRkZjZlYjQ3NTc4YzZkMDVkZDJkLi5lNzA5M2M5
NmFhYzQ3NGUzYWVlOWU3MmQyM2IyNGViMWM1ODlhMmViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KQEAgLTU5OCw3ICs1OTgsNyBAQCAtIChQYWludEJl
aGF2aW9yKV9wYWludEJlaGF2aW9yRm9yRGVzdGluYXRpb25Db250ZXh0OihDR0NvbnRleHRSZWYp
Y29udGV4dAogICAgICAgICByZXR1cm4gUGFpbnRCZWhhdmlvckZsYXR0ZW5Db21wb3NpdGluZ0xh
eWVycyB8IFBhaW50QmVoYXZpb3JTbmFwc2hvdHRpbmc7CiAjZW5kaWYKIAotICAgIGlmICghV0tD
R0NvbnRleHRJc0JpdG1hcENvbnRleHQoY29udGV4dCkpCisgICAgaWYgKENHQ29udGV4dEdldFR5
cGUoY29udGV4dCkgIT0ga0NHQ29udGV4dFR5cGVCaXRtYXApCiAgICAgICAgIHJldHVybiBQYWlu
dEJlaGF2aW9yTm9ybWFsOwogCiAgICAgLy8gSWYgd2UncmUgZHJhd2luZyBpbnRvIGEgYml0bWFw
LCB3ZSBtaWdodCBiZSBzbmFwc2hvdHRpbmcsIG9yIGRyYXdpbmcgaW50byBhIGxheWVyLWJhY2tl
ZCB2aWV3LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJG
dWxsU2NyZWVuQ29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcv
V2ViRnVsbFNjcmVlbkNvbnRyb2xsZXIubW0KaW5kZXggZmQ4ZmM1Njk5N2FmY2I2YWQ3ZjkwYzVm
Yzk5ODRiYTMxNzY2ZTkwNy4uNDA1M2ZmYzg0NjRhMzViYjg2YWZiNjY2ZTNjZWU3ZWRjYWNlNWVm
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGdWxsU2Ny
ZWVuQ29udHJvbGxlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dl
YkZ1bGxTY3JlZW5Db250cm9sbGVyLm1tCkBAIC0yNDksNiArMjQ5LDE2IEBAIC0gKHZvaWQpZW50
ZXJGdWxsU2NyZWVuOihOU1NjcmVlbiAqKXNjcmVlbgogICAgIF9pc0VudGVyaW5nRnVsbFNjcmVl
biA9IHRydWU7CiB9CiAKK3N0YXRpYyB2b2lkIHNldENsaXBSZWN0Rm9yV2luZG93KE5TV2luZG93
ICp3aW5kb3csIE5TUmVjdCBjbGlwUmVjdCkKK3sKKyAgICBDR1NXaW5kb3dJRCB3aW5kb3dOdW1i
ZXIgPSAoQ0dTV2luZG93SUQpW3dpbmRvdyB3aW5kb3dOdW1iZXJdOworICAgIENHU1JlZ2lvbk9i
aiBzaGFwZTsKKyAgICBDR1JlY3QgY2dDbGlwUmVjdCA9IE5TUmVjdFRvQ0dSZWN0KGNsaXBSZWN0
KTsKKyAgICBDR1NOZXdSZWdpb25XaXRoUmVjdCgmY2dDbGlwUmVjdCwgJnNoYXBlKTsKKyAgICBD
R1NTZXRXaW5kb3dDbGlwU2hhcGUoQ0dTTWFpbkNvbm5lY3Rpb25JRCgpLCB3aW5kb3dOdW1iZXIs
IHNoYXBlKTsKKyAgICBDR1NSZWxlYXNlUmVnaW9uKHNoYXBlKTsKK30KKwogLSAodm9pZClmaW5p
c2hlZEVudGVyRnVsbFNjcmVlbkFuaW1hdGlvbjooYm9vbCljb21wbGV0ZWQKIHsKICAgICBpZiAo
IV9pc0VudGVyaW5nRnVsbFNjcmVlbikKQEAgLTI2Myw3ICsyNzMsNyBAQCAtICh2b2lkKWZpbmlz
aGVkRW50ZXJGdWxsU2NyZWVuQW5pbWF0aW9uOihib29sKWNvbXBsZXRlZAogICAgICAgICAKICAg
ICAgICAgTlNSZWN0IHdpbmRvd0JvdW5kcyA9IFtbc2VsZiB3aW5kb3ddIGZyYW1lXTsKICAgICAg
ICAgd2luZG93Qm91bmRzLm9yaWdpbiA9IE5TWmVyb1BvaW50OwotICAgICAgICBXS1dpbmRvd1Nl
dENsaXBSZWN0KFtzZWxmIHdpbmRvd10sIHdpbmRvd0JvdW5kcyk7CisgICAgICAgIHNldENsaXBS
ZWN0Rm9yV2luZG93KFtzZWxmIHdpbmRvd10sIHdpbmRvd0JvdW5kcyk7CiAgICAgICAgIAogICAg
ICAgICBOU1dpbmRvdyAqd2ViV2luZG93ID0gW193ZWJWaWV3UGxhY2Vob2xkZXIuZ2V0KCkgd2lu
ZG93XTsKICAgICAgICAgLy8gSW4gTGlvbiwgTlNXaW5kb3cgd2lsbCBhbmltYXRlIGludG8gYW5k
IG91dCBvZiBvcmRlck91dCBvcGVyYXRpb25zLiBTdXBwcmVzcyB0aGF0CkBAIC0zNTMsNyArMzYz
LDcgQEAgLSAodm9pZClmaW5pc2hlZEV4aXRGdWxsU2NyZWVuQW5pbWF0aW9uOihib29sKWNvbXBs
ZXRlZAogICAgIAogICAgIE5TUmVjdCB3aW5kb3dCb3VuZHMgPSBbW3NlbGYgd2luZG93XSBmcmFt
ZV07CiAgICAgd2luZG93Qm91bmRzLm9yaWdpbiA9IE5TWmVyb1BvaW50OwotICAgIFdLV2luZG93
U2V0Q2xpcFJlY3QoW3NlbGYgd2luZG93XSwgd2luZG93Qm91bmRzKTsKKyAgICBzZXRDbGlwUmVj
dEZvcldpbmRvdyhbc2VsZiB3aW5kb3ddLCB3aW5kb3dCb3VuZHMpOwogICAgIAogICAgIFtbc2Vs
ZiB3aW5kb3ddIG9yZGVyT3V0OnNlbGZdOwogICAgIFtbc2VsZiB3aW5kb3ddIHNldEZyYW1lOk5T
WmVyb1JlY3QgZGlzcGxheTpZRVNdOwpAQCAtNDg0LDEzICs0OTQsMTMgQEAgLSAodm9pZClfc3Rh
cnRFbnRlckZ1bGxTY3JlZW5BbmltYXRpb25XaXRoRHVyYXRpb246KE5TVGltZUludGVydmFsKWR1
cmF0aW9uCiAgICAgW19zY2FsZUFuaW1hdGlvbi5nZXQoKSBzZXRDdXJyZW50UHJvZ3Jlc3M6MF07
CiAgICAgW19zY2FsZUFuaW1hdGlvbi5nZXQoKSBzdGFydEFuaW1hdGlvbl07CiAgICAgCi0gICAg
Ly8gV0tXaW5kb3dTZXRDbGlwUmVjdCB0YWtlcyB3aW5kb3cgY29vcmRpbmF0ZXMsIHNvIGNvbnZl
cnQgZnJvbSBzY3JlZW4gY29vcmRpbmF0ZXMgaGVyZToKKyAgICAvLyBzZXRDbGlwUmVjdEZvcldp
bmRvdyB0YWtlcyB3aW5kb3cgY29vcmRpbmF0ZXMsIHNvIGNvbnZlcnQgZnJvbSBzY3JlZW4gY29v
cmRpbmF0ZXMgaGVyZToKICAgICBOU1JlY3QgZmluYWxCb3VuZHMgPSBfZmluYWxGcmFtZTsKICNw
cmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwdXNoCiAjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgaWdu
b3JlZCAiLVdkZXByZWNhdGVkLWRlY2xhcmF0aW9ucyIKICAgICBmaW5hbEJvdW5kcy5vcmlnaW4g
PSBbW3NlbGYgd2luZG93XSBjb252ZXJ0U2NyZWVuVG9CYXNlOmZpbmFsQm91bmRzLm9yaWdpbl07
CiAjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcG9wCi0gICAgV0tXaW5kb3dTZXRDbGlwUmVjdChb
c2VsZiB3aW5kb3ddLCBmaW5hbEJvdW5kcyk7CisgICAgc2V0Q2xpcFJlY3RGb3JXaW5kb3coW3Nl
bGYgd2luZG93XSwgZmluYWxCb3VuZHMpOwogICAgIAogICAgIFtbc2VsZiB3aW5kb3ddIG1ha2VL
ZXlBbmRPcmRlckZyb250OnNlbGZdOwogICAgIApAQCAtNTU2LDEzICs1NjYsMTMgQEAgLSAodm9p
ZClfc3RhcnRFeGl0RnVsbFNjcmVlbkFuaW1hdGlvbldpdGhEdXJhdGlvbjooTlNUaW1lSW50ZXJ2
YWwpZHVyYXRpb24KICAgICAKICAgICBbX2JhY2tncm91bmRXaW5kb3cuZ2V0KCkgb3JkZXJXaW5k
b3c6TlNXaW5kb3dCZWxvdyByZWxhdGl2ZVRvOltbc2VsZiB3aW5kb3ddIHdpbmRvd051bWJlcl1d
OwogICAgIAotICAgIC8vIFdLV2luZG93U2V0Q2xpcFJlY3QgdGFrZXMgd2luZG93IGNvb3JkaW5h
dGVzLCBzbyBjb252ZXJ0IGZyb20gc2NyZWVuIGNvb3JkaW5hdGVzIGhlcmU6CisgICAgLy8gc2V0
Q2xpcFJlY3RGb3JXaW5kb3cgdGFrZXMgd2luZG93IGNvb3JkaW5hdGVzLCBzbyBjb252ZXJ0IGZy
b20gc2NyZWVuIGNvb3JkaW5hdGVzIGhlcmU6CiAgICAgTlNSZWN0IGZpbmFsQm91bmRzID0gX2Zp
bmFsRnJhbWU7CiAjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcHVzaAogI3ByYWdtYSBjbGFuZyBk
aWFnbm9zdGljIGlnbm9yZWQgIi1XZGVwcmVjYXRlZC1kZWNsYXJhdGlvbnMiCiAgICAgZmluYWxC
b3VuZHMub3JpZ2luID0gW1tzZWxmIHdpbmRvd10gY29udmVydFNjcmVlblRvQmFzZTpmaW5hbEJv
dW5kcy5vcmlnaW5dOwogI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHBvcAotICAgIFdLV2luZG93
U2V0Q2xpcFJlY3QoW3NlbGYgd2luZG93XSwgZmluYWxCb3VuZHMpOworICAgIHNldENsaXBSZWN0
Rm9yV2luZG93KFtzZWxmIHdpbmRvd10sIGZpbmFsQm91bmRzKTsKICAgICAKICAgICBbW3NlbGYg
d2luZG93XSBzZXRBdXRvZGlzcGxheTpZRVNdOwogICAgIFtbc2VsZiB3aW5kb3ddIGRpc3BsYXlJ
Zk5lZWRlZF07Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>319570</attachid>
            <date>2017-08-31 21:02:21 -0700</date>
            <delta_ts>2017-08-31 22:27:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-176200-20170831210220.patch</filename>
            <type>text/plain</type>
            <size>61895</size>
            <attacher name="Andy Estes">aestes</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIxMzgxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzVhYmE3NzU1NjhiNjgz
ZmZjOWVjZWE4MzhlNWFmOGRlMTVjOTY4Ni4uNmFhZDZiNmQxYzY3MzhkNGZkMTQwM2U4YjlhYjJj
MDZmZGEzM2M0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBACisyMDE3LTA4LTMxICBBbmR5
IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29jb2FdIFVwc3RyZWFtIENv
cmVHcmFwaGljcy1yZWxhdGVkIFdlYktpdFN5c3RlbUludGVyZmFjZSBmdW5jdGlvbnMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NjIwMAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NDb250ZXh0Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2VTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OnN1YnNhbXBsaW5n
TGV2ZWxGb3JTY2FsZUZhY3Rvcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3Jh
cGhpY3NDb250ZXh0Q0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0Ojpj
bGlwT3V0KToKKyAgICAgICAgKFdlYkNvcmU6OmFwcGx5U2hhZG93T2Zmc2V0V29ya2Fyb3VuZElm
TmVlZGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9QYXR0ZXJuQ0cuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UGF0dGVybjo6Y3JlYXRlUGxhdGZvcm1QYXR0ZXJuIGNvbnN0KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRDb2NvYS5t
bToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6Zm9jdXNSaW5nQ29sb3IpOgor
ICAgICAgICAoV2ViQ29yZTo6ZHJhd0ZvY3VzUmluZ0F0VGltZSk6CisgICAgICAgIChXZWJDb3Jl
OjpkcmF3Rm9jdXNSaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OmRyYXdGb2N1c1JpbmdUb0NvbnRl
eHQpOgorICAgICAgICAoV2ViQ29yZTo6ZHJhd0ZvY3VzUmluZ1RvQ29udGV4dEF0VGltZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vaW9zL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2VJT1MubW06CisgICAg
ICAgICogcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpm
bGlwSW1hZ2VTcGVjKToKKyAgICAgICAgKFdlYkNvcmU6OnNldERyYWdJbWFnZUltcGwpOgorICAg
ICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6c2V0RHJhZ0ltYWdlKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9tYWMvUGxhdGZvcm1FdmVudEZhY3RvcnlNYWMubW06CisgICAgICAgICogcGxhdGZvcm0v
bWFjL1Njcm9sbGJhclRoZW1lTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6bGluZW5CYWNrZ3Jv
dW5kQ29sb3IpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9UaGVtZU1hYy5tbToKKyAgICAgICAg
KFdlYkNvcmU6OmRyYXdDZWxsRm9jdXNSaW5nV2l0aEZyYW1lQXRUaW1lKToKKyAgICAgICAgKFdl
YkNvcmU6OmRyYXdDZWxsRm9jdXNSaW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvV2ViQ29y
ZVN5c3RlbUludGVyZmFjZS5oOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9XZWJDb3JlU3lzdGVt
SW50ZXJmYWNlLm1tOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9XZWJXaW5kb3dBbmltYXRpb24u
bW06CisgICAgICAgIChmbGlwUmVjdCk6CisgICAgICAgIChtYWluV2luZG93U2VydmVyQ29ubmVj
dGlvbklEKToKKyAgICAgICAgKHNldFNjYWxlZEZyYW1lRm9yV2luZG93KToKKyAgICAgICAgKC1b
V2ViV2luZG93U2NhbGVBbmltYXRpb24gc2V0Q3VycmVudFByb2dyZXNzOl0pOgorICAgICAgICAo
LVtXZWJXaW5kb3dGYWRlQW5pbWF0aW9uIHNldEN1cnJlbnRQcm9ncmVzczpdKToKKwogMjAxNy0w
OC0zMCAgQW5keSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+CiAKICAgICAgICAgW01hY10gVXBz
dHJlYW0gQWNjZXNzaWJpbGl0eS1yZWxhdGVkIFdlYktpdFN5c3RlbUludGVyZmFjZSBmdW5jdGlv
bnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
Q29yZS9QQUwvQ2hhbmdlTG9nCmluZGV4IDdiNGI2MDFmZTRlNWUxNTBmODE4OTc0NDU3YzY5ZWVi
OWI2MDEzNTEuLjYyN2UzZjM4ZmI0NDUyNGRiZTA5NDNjYzdkNGVjMjljMTg3ZTc2MzkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUv
UEFML0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDE3LTA4LTMxICBBbmR5IEVzdGVzICA8
YWVzdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29jb2FdIFVwc3RyZWFtIENvcmVHcmFwaGlj
cy1yZWxhdGVkIFdlYktpdFN5c3RlbUludGVyZmFjZSBmdW5jdGlvbnMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NjIwMAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogUEFMLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2o6CisgICAgICAgICogcGFsL3NwaS9jZy9Db3JlR3JhcGhpY3NTUEkuaDoKKyAgICAg
ICAgKiBwYWwvc3BpL21hYy9ISVNlcnZpY2VzU1BJLmg6CisgICAgICAgICogcGFsL3NwaS9tYWMv
TlNHcmFwaGljc1NQSS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9t
YWMvSElTZXJ2aWNlc1NQSS5oLgorCiAyMDE3LTA4LTMwICBBbmR5IEVzdGVzICA8YWVzdGVzQGFw
cGxlLmNvbT4KIAogICAgICAgICBbTWFjXSBVcHN0cmVhbSBBY2Nlc3NpYmlsaXR5LXJlbGF0ZWQg
V2ViS2l0U3lzdGVtSW50ZXJmYWNlIGZ1bmN0aW9ucwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBhODY2NmYzMzg1MzQx
ZDM1NmQ3YTBjNzEzMWVhMmFmZjY4MTRhNjhiLi4yMTVkMmY3ZDg0ZmUwZWNlYmNjOTRhN2QxMTZm
N2YxYTYyNTYxZDA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDE3LTA4LTMxICBBbmR5
IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29jb2FdIFVwc3RyZWFtIENv
cmVHcmFwaGljcy1yZWxhdGVkIFdlYktpdFN5c3RlbUludGVyZmFjZSBmdW5jdGlvbnMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NjIwMAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogUGx1Z2luUHJvY2Vz
cy9tYWMvUGx1Z2luUHJvY2Vzc01hYy5tbToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJvY2Vz
czo6cGxhdGZvcm1Jbml0aWFsaXplUHJvY2Vzcyk6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9X
aW5kb3dTZXJ2ZXJDb25uZWN0aW9uLmg6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9XaW5kb3dT
ZXJ2ZXJDb25uZWN0aW9uLm1tOgorICAgICAgICAoV2ViS2l0OjpyZWdpc3Rlck9jY2x1c2lvbk5v
dGlmaWNhdGlvbkhhbmRsZXIpOgorICAgICAgICAoV2ViS2l0OjpXaW5kb3dTZXJ2ZXJDb25uZWN0
aW9uOjpXaW5kb3dTZXJ2ZXJDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2luZG93U2Vy
dmVyQ29ubmVjdGlvbjo6YXBwbGljYXRpb25XaW5kb3dNb2RpZmljYXRpb25zU3RhcnRlZCk6IERl
bGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViU3lzdGVt
SW50ZXJmYWNlLm1tOgorICAgICAgICAoSW5pdFdlYkNvcmVTeXN0ZW1JbnRlcmZhY2UpOgorCiAy
MDE3LTA4LTMwICBBbmR5IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KIAogICAgICAgICBbTWFj
XSBVcHN0cmVhbSBBY2Nlc3NpYmlsaXR5LXJlbGF0ZWQgV2ViS2l0U3lzdGVtSW50ZXJmYWNlIGZ1
bmN0aW9ucwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4IGJkZjVkMzhhZTdlNWI3NjE0
MDliM2QxMDU0ZDg0MzgzODY4OWZiZGEuLjRkMzE2OTQxYjM2ZjllMzMyM2MzODI5NjgzNDcyNWMw
Njc4OTAwMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNCBAQAor
MjAxNy0wOC0zMSAgQW5keSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+CisKKyAgICAgICAgW0Nv
Y29hXSBVcHN0cmVhbSBDb3JlR3JhcGhpY3MtcmVsYXRlZCBXZWJLaXRTeXN0ZW1JbnRlcmZhY2Ug
ZnVuY3Rpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNzYyMDAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIENhcmJvbi9ISVdlYlZpZXcubW06CisgICAgICAgICgtW05TV2luZG93R3JhcGhpY3NDb250
ZXh0IF93ZWJfc2V0R3JhcGhpY3NQb3J0Ol0pOgorICAgICAgICAob3ZlcnJpZGVDR0NvbnRleHQp
OgorICAgICAgICAocmVzdG9yZUNHQ29udGV4dCk6CisgICAgICAgIChEcmF3KToKKyAgICAgICAg
KiBQbHVnaW5zL0hvc3RlZC9XZWJIb3N0ZWROZXRzY2FwZVBsdWdpblZpZXcubW06CisgICAgICAg
ICgrW1dlYkhvc3RlZE5ldHNjYXBlUGx1Z2luVmlldyBpbml0aWFsaXplXSk6CisgICAgICAgICog
UGx1Z2lucy9XZWJCYXNlTmV0c2NhcGVQbHVnaW5WaWV3Lmg6CisgICAgICAgICogUGx1Z2lucy9X
ZWJCYXNlTmV0c2NhcGVQbHVnaW5WaWV3Lm1tOgorICAgICAgICAoV2ViS2l0OjpzZW5kVXNlckNo
YW5nZU5vdGlmaWNhdGlvbnMpOgorICAgICAgICAqIFBsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5W
aWV3Lm1tOgorICAgICAgICAoK1tXZWJOZXRzY2FwZVBsdWdpblZpZXcgaW5pdGlhbGl6ZV0pOgor
ICAgICAgICAoLVtXZWJOZXRzY2FwZVBsdWdpblZpZXcgc2F2ZUFuZFNldE5ld1BvcnRTdGF0ZUZv
clVwZGF0ZTpdKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJTeXN0ZW1JbnRlcmZhY2Uu
bW06CisgICAgICAgIChJbml0V2ViQ29yZVN5c3RlbUludGVyZmFjZSk6CisgICAgICAgICogV2Vi
Vmlldy9XZWJGcmFtZS5tbToKKyAgICAgICAgKC1bV2ViRnJhbWUgX3BhaW50QmVoYXZpb3JGb3JE
ZXN0aW5hdGlvbkNvbnRleHQ6XSk6CisgICAgICAgICogV2ViVmlldy9XZWJGdWxsU2NyZWVuQ29u
dHJvbGxlci5tbToKKyAgICAgICAgKHNldENsaXBSZWN0Rm9yV2luZG93KToKKyAgICAgICAgKC1b
V2ViRnVsbFNjcmVlbkNvbnRyb2xsZXIgZmluaXNoZWRFbnRlckZ1bGxTY3JlZW5BbmltYXRpb246
XSk6CisgICAgICAgICgtW1dlYkZ1bGxTY3JlZW5Db250cm9sbGVyIGZpbmlzaGVkRXhpdEZ1bGxT
Y3JlZW5BbmltYXRpb246XSk6CisgICAgICAgICgtW1dlYkZ1bGxTY3JlZW5Db250cm9sbGVyIF9z
dGFydEVudGVyRnVsbFNjcmVlbkFuaW1hdGlvbldpdGhEdXJhdGlvbjpdKToKKyAgICAgICAgKC1b
V2ViRnVsbFNjcmVlbkNvbnRyb2xsZXIgX3N0YXJ0RXhpdEZ1bGxTY3JlZW5BbmltYXRpb25XaXRo
RHVyYXRpb246XSk6CisKIDIwMTctMDgtMzAgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29t
PgogCiAgICAgICAgIFtNYWNdIFVwc3RyZWFtIEFjY2Vzc2liaWxpdHktcmVsYXRlZCBXZWJLaXRT
eXN0ZW1JbnRlcmZhY2UgZnVuY3Rpb25zCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwv
UEFMLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9QQUwvUEFMLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZDk4NThmOWVlMmI0MWYwMDU5MzcxYWU5MGNi
MmJmZGRkYTNkMGI4OC4uNjFkOWUzNDZkMGNiNjAzYWQyOWY2MzVkZmUzNTE4ZWZlYmM0ODM3NiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML1BBTC54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9QQUwueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agpAQCAtMTAxLDYgKzEwMSw3IEBACiAJCUExMDI2NTg5MUY1Njc0N0EwMEI0Qzg0NCAvKiBISVRv
b2xib3hTUEkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEExMDI2NTg4MUY1Njc0N0EwMEI0Qzg0NCAvKiBISVRvb2xib3hTUEkuaCAqLzsgfTsKIAkJQTEw
MjY1OEIxRjU2NzQ4QzAwQjRDODQ0IC8qIFF1aWNrRHJhd1NQSS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTEwMjY1OEExRjU2NzQ4QzAwQjRDODQ0IC8q
IFF1aWNrRHJhd1NQSS5oICovOyB9OwogCQlBMTAyNjU4RTFGNTY3RTlEMDBCNEM4NDQgLyogSElT
ZXJ2aWNlc1NQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQTEwMjY1OEQxRjU2N0U5RDAwQjRDODQ0IC8qIEhJU2VydmljZXNTUEkuaCAqLzsgfTsKKwkJ
QTEwODI2RkUxRjU4QTQzMzAwNDc3MkFDIC8qIE5TR3JhcGhpY3NTUEkuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExMDgyNkZEMUY1OEE0MzMwMDQ3NzJB
QyAvKiBOU0dyYXBoaWNzU1BJLmggKi87IH07CiAJCUExRjU1RENGMUY1NTI4RUMwMEVEQjc1RiAv
KiBNZXRhZGF0YVNQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQTFGNTVEQ0UxRjU1MjhFQzAwRURCNzVGIC8qIE1ldGFkYXRhU1BJLmggKi87IH07CiAJ
CUEzMEQ0MTIxMUYwREQwRUEwMEI3MTk1NCAvKiBLaWxsUmluZy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTMwRDQxMUUxRjBERDBFQTAwQjcxOTU0IC8q
IEtpbGxSaW5nLmggKi87IH07CiAJCUEzMEQ0MTIyMUYwREQwRUEwMEI3MTk1NCAvKiBLaWxsUmlu
Z05vbmUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QTMwRDQxMUYxRjBERDBFQTAwQjcxOTU0IC8qIEtpbGxSaW5nTm9uZS5jcHAgKi87IH07CkBAIC0y
MTcsNiArMjE4LDcgQEAKIAkJQTEwMjY1ODgxRjU2NzQ3QTAwQjRDODQ0IC8qIEhJVG9vbGJveFNQ
SS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBISVRvb2xib3hTUEkuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTEwMjY1OEExRjU2NzQ4QzAwQjRDODQ0IC8qIFF1
aWNrRHJhd1NQSS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBRdWlja0RyYXdT
UEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTEwMjY1OEQxRjU2N0U5RDAwQjRD
ODQ0IC8qIEhJU2VydmljZXNTUEkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSElTZXJ2aWNlc1NQSS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBMTA4MjZGRDFGNThBNDMzMDA0NzcyQUMgLyog
TlNHcmFwaGljc1NQSS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOU0dyYXBoaWNzU1BJLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUExRjU1RENFMUY1NTI4RUMwMEVEQjc1RiAvKiBNZXRhZGF0
YVNQSS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBNZXRhZGF0YVNQSS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlBMzBENDExRTFGMEREMEVBMDBCNzE5NTQgLyogS2lsbFJpbmcuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gS2lsbFJpbmcuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQTMwRDQxMUYxRjBERDBFQTAwQjcxOTU0IC8qIEtpbGxSaW5nTm9uZS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBLaWxsUmluZ05vbmUuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzQ5LDYgKzM1MSw3IEBACiAJCQkJMEM3Nzg1
NzUxRjQ1MTMwRjAwRjRFQkI2IC8qIE5TQXBwbGljYXRpb25TUEkuaCAqLywKIAkJCQkwQzc3ODU3
NjFGNDUxMzBGMDBGNEVCQjYgLyogTlNFdmVudFNQSS5oICovLAogCQkJCTBDNzc4NTc3MUY0NTEz
MEYwMEY0RUJCNiAvKiBOU0ZvbnRTUEkuaCAqLywKKwkJCQlBMTA4MjZGRDFGNThBNDMzMDA0Nzcy
QUMgLyogTlNHcmFwaGljc1NQSS5oICovLAogCQkJCTBDNzc4NTc4MUY0NTEzMEYwMEY0RUJCNiAv
KiBOU0ltbWVkaWF0ZUFjdGlvbkdlc3R1cmVSZWNvZ25pemVyU1BJLmggKi8sCiAJCQkJMEM3Nzg1
NzkxRjQ1MTMwRjAwRjRFQkI2IC8qIE5TTWVudVNQSS5oICovLAogCQkJCTBDNzc4NTdBMUY0NTEz
MEYwMEY0RUJCNiAvKiBOU1Bhc3RlYm9hcmRTUEkuaCAqLywKQEAgLTU0Miw2ICs1NDUsNyBAQAog
CQkJCTBDMkRBMTRFMUYzQkVCNDkwMERCQzMxNyAvKiBOU0V4dGVuc2lvblNQSS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMEMyREExNEYxRjNCRUI0OTAwREJDMzE3IC8qIE5TRmlsZU1hbmFnZXJTUEku
aCBpbiBIZWFkZXJzICovLAogCQkJCTBDNzc4NTkwMUY0NTEzMEYwMEY0RUJCNiAvKiBOU0ZvbnRT
UEkuaCBpbiBIZWFkZXJzICovLAorCQkJCUExMDgyNkZFMUY1OEE0MzMwMDQ3NzJBQyAvKiBOU0dy
YXBoaWNzU1BJLmggaW4gSGVhZGVycyAqLywKIAkJCQkwQzc3ODU5MTFGNDUxMzBGMDBGNEVCQjYg
LyogTlNJbW1lZGlhdGVBY3Rpb25HZXN0dXJlUmVjb2duaXplclNQSS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMEM3Nzg1OTIxRjQ1MTMwRjAwRjRFQkI2IC8qIE5TTWVudVNQSS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMEM3Nzg1OTMxRjQ1MTMwRjAwRjRFQkI2IC8qIE5TUGFzdGVib2FyZFNQSS5oIGlu
IEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jZy9D
b3JlR3JhcGhpY3NTUEkuaCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NnL0NvcmVHcmFw
aGljc1NQSS5oCmluZGV4IDdjMjkxYzkxNGQ2OWY1NmQ4NmRiYjRhODgxZmIyMzE4OWM1YTVhNWMu
LmRjYzgzOGY0MTE0MTZhNzUzODVjNzU1MTFiOTFmNzNkNTBhNGJlNDggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NnL0NvcmVHcmFwaGljc1NQSS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NnL0NvcmVHcmFwaGljc1NQSS5oCkBAIC0xMzYsOSArMTM2
LDkgQEAgdHlwZWRlZiBzdHJ1Y3QgQ0dTUmVnaW9uT2JqZWN0KiBDR1JlZ2lvblJlZjsKIHN0YXRp
YyBpbmxpbmUgQ0dGbG9hdCBDR0Zsb2F0TWluKENHRmxvYXQgYSwgQ0dGbG9hdCBiKSB7IHJldHVy
biBpc25hbihhKSA/IGIgOiAoKGlzbmFuKGIpIHx8IGEgPCBiKSA/IGEgOiBiKTsgfQogCiB0eXBl
ZGVmIHN0cnVjdCBDR0ZvbnRDYWNoZSBDR0ZvbnRDYWNoZTsKK3R5cGVkZWYgdWludDMyX3QgQ0dT
Q29ubmVjdGlvbklEOwogCiAjaWYgUExBVEZPUk0oTUFDKQotdHlwZWRlZiB1aW50MzJfdCBDR1ND
b25uZWN0aW9uSUQ7CiB0eXBlZGVmIHVpbnQzMl90IENHU1dpbmRvd0lEOwogdHlwZWRlZiB1aW50
MzJfdCBDR1NXaW5kb3dDb3VudDsKIHR5cGVkZWYgQ0dTV2luZG93SUQgKkNHU1dpbmRvd0lETGlz
dDsKQEAgLTE1MCw4ICsxNTAsNTUgQEAgZW51bSB7CiB0eXBlZGVmIHVpbnQzMl90IENHU1dpbmRv
d0NhcHR1cmVPcHRpb25zOwogI2VuZGlmCiAKK3R5cGVkZWYgQ0ZfRU5VTSh1aW50MzJfdCwgQ0dT
Tm90aWZpY2F0aW9uVHlwZSkgeworICAgIGtDR1NGaXJzdENvbm5lY3Rpb25Ob3RpZmljYXRpb24g
PSA5MDAsCisgICAga0NHU0ZpcnN0U2Vzc2lvbk5vdGlmaWNhdGlvbiA9IDE1MDAsCit9OworCitz
dGF0aWMgY29uc3QgQ0dTTm90aWZpY2F0aW9uVHlwZSBrQ0dTZXNzaW9uQ29uc29sZUNvbm5lY3Qg
PSBrQ0dTRmlyc3RTZXNzaW9uTm90aWZpY2F0aW9uOworc3RhdGljIGNvbnN0IENHU05vdGlmaWNh
dGlvblR5cGUga0NHU2Vzc2lvbkNvbnNvbGVEaXNjb25uZWN0ID0gKENHU05vdGlmaWNhdGlvblR5
cGUpKGtDR1Nlc3Npb25Db25zb2xlQ29ubmVjdCArIDEpOworc3RhdGljIGNvbnN0IENHU05vdGlm
aWNhdGlvblR5cGUga0NHU0Nvbm5lY3Rpb25XaW5kb3dNb2RpZmljYXRpb25zU3RhcnRlZCA9IChD
R1NOb3RpZmljYXRpb25UeXBlKShrQ0dTRmlyc3RDb25uZWN0aW9uTm90aWZpY2F0aW9uICsgNik7
CitzdGF0aWMgY29uc3QgQ0dTTm90aWZpY2F0aW9uVHlwZSBrQ0dTQ29ubmVjdGlvbldpbmRvd01v
ZGlmaWNhdGlvbnNTdG9wcGVkID0gKENHU05vdGlmaWNhdGlvblR5cGUpKGtDR1NGaXJzdENvbm5l
Y3Rpb25Ob3RpZmljYXRpb24gKyA3KTsKKwordHlwZWRlZiBDRl9FTlVNIChpbnQzMl90LCBDR0Zv
Y3VzUmluZ1RpbnQpIHsKKyAgICBrQ0dGb2N1c1JpbmdUaW50Qmx1ZSA9IDAsCisgICAga0NHRm9j
dXNSaW5nVGludEdyYXBoaXRlID0gMQorfTsKKwordHlwZWRlZiBDRl9FTlVNIChpbnQzMl90LCBD
R1N0eWxlRHJhd09yZGVyaW5nKSB7CisgICAga0NHU3R5bGVEcmF3T3JkZXJpbmdTdHlsZU9ubHkg
PSAwLAorICAgIGtDR1N0eWxlRHJhd09yZGVyaW5nQmVsb3cgPSAxLAorICAgIGtDR1N0eWxlRHJh
d09yZGVyaW5nQWJvdmUgPSAyCit9OworCit0eXBlZGVmIENGX0VOVU0gKGludDMyX3QsIENHRm9j
dXNSaW5nT3JkZXJpbmcpIHsKKyAgICBrQ0dGb2N1c1JpbmdPcmRlcmluZ05vbmUgPSBrQ0dTdHls
ZURyYXdPcmRlcmluZ1N0eWxlT25seSwKKyAgICBrQ0dGb2N1c1JpbmdPcmRlcmluZ0JlbG93ID0g
a0NHU3R5bGVEcmF3T3JkZXJpbmdCZWxvdywKKyAgICBrQ0dGb2N1c1JpbmdPcmRlcmluZ0Fib3Zl
ID0ga0NHU3R5bGVEcmF3T3JkZXJpbmdBYm92ZQorfTsKKworc3RydWN0IENHRm9jdXNSaW5nU3R5
bGUgeworICAgIHVuc2lnbmVkIGludCB2ZXJzaW9uOworICAgIENHRm9jdXNSaW5nVGludCB0aW50
OworICAgIENHRm9jdXNSaW5nT3JkZXJpbmcgb3JkZXJpbmc7CisgICAgQ0dGbG9hdCBhbHBoYTsK
KyAgICBDR0Zsb2F0IHJhZGl1czsKKyAgICBDR0Zsb2F0IHRocmVzaG9sZDsKKyAgICBDR1JlY3Qg
Ym91bmRzOworICAgIGludCBhY2N1bXVsYXRlOworfTsKK3R5cGVkZWYgc3RydWN0IENHRm9jdXNS
aW5nU3R5bGUgQ0dGb2N1c1JpbmdTdHlsZTsKKwogI2VuZGlmIC8vIFVTRShBUFBMRV9JTlRFUk5B
TF9TREspCiAKK3R5cGVkZWYgc3RydWN0IENGX0JSSURHRURfVFlQRShpZCkgQ0dTdHlsZSAqQ0dT
dHlsZVJlZjsKK3R5cGVkZWYgc3RydWN0IENGX0JSSURHRURfVFlQRShpZCkgQ0dTUmVnaW9uT2Jq
ZWN0KiBDR1NSZWdpb25PYmo7Cit0eXBlZGVmIHZvaWQqIENHU05vdGlmaWNhdGlvbkFyZzsKK3R5
cGVkZWYgdm9pZCogQ0dTTm90aWZpY2F0aW9uRGF0YTsKK3R5cGVkZWYgdWludDMyX3QgQ0dTQnl0
ZUNvdW50OwordHlwZWRlZiB2b2lkICgqQ0dTTm90aWZ5UHJvY1B0cikoQ0dTTm90aWZpY2F0aW9u
VHlwZSwgdm9pZCogZGF0YSwgdWludDMyX3QgZGF0YV9sZW5ndGgsIHZvaWQqIGFyZyk7Cit0eXBl
ZGVmIHZvaWQgKCpDR1NOb3RpZnlDb25uZWN0aW9uUHJvY1B0cikoQ0dTTm90aWZpY2F0aW9uVHlw
ZSwgdm9pZCogZGF0YSwgdWludDMyX3QgZGF0YV9sZW5ndGgsIHZvaWQqIGFyZywgQ0dTQ29ubmVj
dGlvbklEKTsKKwogV1RGX0VYVEVSTl9DX0JFR0lOCiAKIENHQ29sb3JSZWYgQ0dDb2xvclRyYW5z
Zm9ybUNvbnZlcnRDb2xvcihDR0NvbG9yVHJhbnNmb3JtUmVmLCBDR0NvbG9yUmVmLCBDR0NvbG9y
UmVuZGVyaW5nSW50ZW50KTsKQEAgLTIyNSw0ICsyNzIsMTMgQEAgQ0dFcnJvciBDR1NHZXRTY3Jl
ZW5SZWN0Rm9yV2luZG93KENHU0Nvbm5lY3Rpb25JRCwgQ0dTV2luZG93SUQsIENHUmVjdCAqKTsK
IGJvb2wgQ29sb3JTeW5jUHJvZmlsZUlzV2lkZUdhbXV0KENvbG9yU3luY1Byb2ZpbGVSZWYpOwog
I2VuZGlmCiAKK2Jvb2wgQ0dDb250ZXh0RHJhd3NXaXRoQ29ycmVjdFNoYWRvd09mZnNldHMoQ0dD
b250ZXh0UmVmKTsKK3ZvaWQgQ0dDb250ZXh0U2V0U3R5bGUoQ0dDb250ZXh0UmVmLCBDR1N0eWxl
UmVmKTsKK0NHRXJyb3IgQ0dTUGFja2FnZXNFbmFibGVDb25uZWN0aW9uT2NjbHVzaW9uTm90aWZp
Y2F0aW9ucyhDR1NDb25uZWN0aW9uSUQsIGJvb2wgZmxhZywgYm9vbCogb3V0Q3VycmVudFZpc2li
aWxpdHlTdGF0ZSk7CitDR0Vycm9yIENHU1BhY2thZ2VzRW5hYmxlQ29ubmVjdGlvbldpbmRvd01v
ZGlmaWNhdGlvbk5vdGlmaWNhdGlvbnMoQ0dTQ29ubmVjdGlvbklELCBib29sIGZsYWcsIGJvb2wq
IG91dENvbm5lY3Rpb25Jc0N1cnJlbnRseUlkbGUpOworQ0dFcnJvciBDR1NSZWdpc3RlckNvbm5l
Y3Rpb25Ob3RpZnlQcm9jKENHU0Nvbm5lY3Rpb25JRCwgQ0dTTm90aWZ5Q29ubmVjdGlvblByb2NQ
dHIsIENHU05vdGlmaWNhdGlvblR5cGUsIHZvaWQqIGFyZyk7CitDR0Vycm9yIENHU1JlZ2lzdGVy
Tm90aWZ5UHJvYyhDR1NOb3RpZnlQcm9jUHRyLCBDR1NOb3RpZmljYXRpb25UeXBlLCB2b2lkKiBh
cmcpOworQ0dQYXR0ZXJuUmVmIENHUGF0dGVybkNyZWF0ZVdpdGhJbWFnZTIoQ0dJbWFnZVJlZiwg
Q0dBZmZpbmVUcmFuc2Zvcm0sIENHUGF0dGVyblRpbGluZyk7CitDR1N0eWxlUmVmIENHU3R5bGVD
cmVhdGVGb2N1c1JpbmdXaXRoQ29sb3IoY29uc3QgQ0dGb2N1c1JpbmdTdHlsZSosIENHQ29sb3JS
ZWYpOworCiBXVEZfRVhURVJOX0NfRU5ECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwv
cGFsL3NwaS9tYWMvSElTZXJ2aWNlc1NQSS5oIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkv
bWFjL0hJU2VydmljZXNTUEkuaAppbmRleCA5ZjM1ZGNkNGQwM2E1N2EwODZiMGEzNjVkZmIzOWRk
ZmZjYzgxOTg1Li42ODNhYmExYTk1ZThiODc0ZTZkZmY0NDhhYTA0MTcxYzUxMmZkNWMyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9tYWMvSElTZXJ2aWNlc1NQSS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL21hYy9ISVNlcnZpY2VzU1BJLmgKQEAgLTI4
LDkgKzI4LDMxIEBACiAjaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKIAogI2luY2x1ZGUgPEhJ
U2VydmljZXMvQVhUZXh0TWFya2VyLmg+CisjaW5jbHVkZSA8SElTZXJ2aWNlcy9Db3JlRHJhZy5o
PgorCisjZWxzZQorCitlbnVtIHsKKyAgICBrQ29yZURyYWdJbWFnZVNwZWNWZXJzaW9uT25lID0g
MSwKK307CisKK3N0cnVjdCBDb3JlRHJhZ0ltYWdlU3BlYyB7CisgICAgVUludDMyIHZlcnNpb247
CisgICAgU0ludDMyIHBpeGVsc1dpZGU7CisgICAgU0ludDMyIHBpeGVsc0hpZ2g7CisgICAgU0lu
dDMyIGJpdHNQZXJTYW1wbGU7CisgICAgU0ludDMyIHNhbXBsZXNQZXJQaXhlbDsKKyAgICBTSW50
MzIgYml0c1BlclBpeGVsOworICAgIFNJbnQzMiBieXRlc1BlclJvdzsKKyAgICBCb29sZWFuIGlz
UGxhbmFyOworICAgIEJvb2xlYW4gaGFzQWxwaGE7CisgICAgY29uc3QgVUludDgqIGRhdGFbNV07
Cit9OwogCiAjZW5kaWYKIAordHlwZWRlZiBzdHJ1Y3QgQ29yZURyYWdJbWFnZVNwZWMgQ29yZURy
YWdJbWFnZVNwZWM7Cit0eXBlZGVmIHN0cnVjdCBPcGFxdWVDb3JlRHJhZyogQ29yZURyYWdSZWY7
CiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBfX0FYVGV4dE1hcmtlciAqQVhUZXh0TWFya2VyUmVmOwog
dHlwZWRlZiBjb25zdCBzdHJ1Y3QgX19BWFRleHRNYXJrZXJSYW5nZSAqQVhUZXh0TWFya2VyUmFu
Z2VSZWY7CiAKQEAgLTQ0LDUgKzY2LDYgQEAgY29uc3QgVUludDgqIEFYVGV4dE1hcmtlckdldEJ5
dGVQdHIoQVhUZXh0TWFya2VyUmVmKTsKIEFYVGV4dE1hcmtlclJhbmdlUmVmIEFYVGV4dE1hcmtl
clJhbmdlQ3JlYXRlKENGQWxsb2NhdG9yUmVmLCBBWFRleHRNYXJrZXJSZWYgc3RhcnRNYXJrZXIs
IEFYVGV4dE1hcmtlclJlZiBlbmRNYXJrZXIpOwogQVhUZXh0TWFya2VyUmVmIEFYVGV4dE1hcmtl
clJhbmdlQ29weVN0YXJ0TWFya2VyKEFYVGV4dE1hcmtlclJhbmdlUmVmKTsKIEFYVGV4dE1hcmtl
clJlZiBBWFRleHRNYXJrZXJSYW5nZUNvcHlFbmRNYXJrZXIoQVhUZXh0TWFya2VyUmFuZ2VSZWYp
OworQ29yZURyYWdSZWYgQ29yZURyYWdHZXRDdXJyZW50RHJhZygpOwogCiBXVEZfRVhURVJOX0Nf
RU5ECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9tYWMvTlNHcmFwaGlj
c1NQSS5oIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvbWFjL05TR3JhcGhpY3NTUEkuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4xMDYxZTJlOTk5YjE4YjIxMGJlMDAxY2FhYzI3YmEyYjJiYWJiMmU2Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvbWFjL05TR3JhcGhpY3NT
UEkuaApAQCAtMCwwICsxLDQyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBQ
TEFURk9STShNQUMpCisKKyNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQorCisjaW5jbHVkZSA8
QXBwS2l0L05TR3JhcGhpY3NfUHJpdmF0ZS5oPgorCisjZW5kaWYKKworV1RGX0VYVEVSTl9DX0JF
R0lOCisKK0JPT0wgTlNJbml0aWFsaXplQ0dGb2N1c1JpbmdTdHlsZUZvclRpbWUoTlNGb2N1c1Jp
bmdQbGFjZW1lbnQsIENHRm9jdXNSaW5nU3R5bGUqLCBOU1RpbWVJbnRlcnZhbCk7CisKK1dURl9F
WFRFUk5fQ19FTkQKKworI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKaW5kZXggMThhY2RkYmU3
ZWZmZmE0MjlkMTg1NzgzOWFiNmU2Njc0NjZhM2Q4NS4uYzE0YjJhNTVlNmFhN2Y5MGQyMDAzYzQ2
Njg0MzQzMjJlMDg1NDU5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKQEAgLTQ0NSw2ICs0NDUsNyBAQCBwdWJsaWM6CiAjaWYg
UExBVEZPUk0oTUFDKQogICAgIHZvaWQgZHJhd0ZvY3VzUmluZyhjb25zdCBQYXRoJiwgZG91Ymxl
IHRpbWVPZmZzZXQsIGJvb2wmIG5lZWRzUmVkcmF3KTsKICAgICB2b2lkIGRyYXdGb2N1c1Jpbmco
Y29uc3QgVmVjdG9yPEZsb2F0UmVjdD4mLCBkb3VibGUgdGltZU9mZnNldCwgYm9vbCYgbmVlZHNS
ZWRyYXcpOworICAgIHN0YXRpYyBDR0NvbG9yUmVmIGZvY3VzUmluZ0NvbG9yKCk7CiAjZW5kaWYK
IAogICAgIHZvaWQgc2V0TGluZUNhcChMaW5lQ2FwKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcAppbmRleCA2Njk2Yzk2MGE1ODc1ZjA0MzE3
MjliMTE5YWI2YjI0MTI3ZDdhNWNhLi4wMjI4ZTM5MjlhMjY2ZWE5NzMyYmJhOGVlNjA1NzNmYTUw
OWEzNTBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VT
b3VyY2UuY3BwCkBAIC0xODQsNyArMTg0LDcgQEAgU3Vic2FtcGxpbmdMZXZlbCBJbWFnZVNvdXJj
ZTo6c3Vic2FtcGxpbmdMZXZlbEZvclNjYWxlRmFjdG9yKEdyYXBoaWNzQ29udGV4dCYgY28KIHsK
ICNpZiBVU0UoQ0cpCiAgICAgLy8gTmV2ZXIgdXNlIHN1YnNhbXBsZWQgaW1hZ2VzIGZvciBkcmF3
aW5nIGludG8gUERGIGNvbnRleHRzLgotICAgIGlmICh3a0NHQ29udGV4dElzUERGQ29udGV4dChj
b250ZXh0LnBsYXRmb3JtQ29udGV4dCgpKSkKKyAgICBpZiAoQ0dDb250ZXh0R2V0VHlwZShjb250
ZXh0LnBsYXRmb3JtQ29udGV4dCgpKSA9PSBrQ0dDb250ZXh0VHlwZVBERikKICAgICAgICAgcmV0
dXJuIFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQ7CiAKICAgICBmbG9hdCBzY2FsZSA9IHN0ZDo6
bWluKGZsb2F0KDEpLCBzdGQ6Om1heChzY2FsZUZhY3Rvci53aWR0aCgpLCBzY2FsZUZhY3Rvci5o
ZWlnaHQoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCmluZGV4IGQ1ODgzOWFlNThiYjUxMGQ1MDdkNDY1
YjA2MTkyZTAyMGJhZDVhYmQuLjM3ODhiYzI0MTQyNGY1NDY3ZWYxYTIxYTI2ZWNmZmE0ZTgzY2Ew
MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBo
aWNzQ29udGV4dENHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9HcmFwaGljc0NvbnRleHRDRy5jcHAKQEAgLTk4Nyw3ICs5ODcsNyBAQCB2b2lkIEdyYXBoaWNz
Q29udGV4dDo6Y2xpcE91dChjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiAgICAgLy8gaGFzIGNlcnRh
aW4gdHJhbnNmb3JtcyB0aGF0IGFyZW4ndCBqdXN0IGEgdHJhbnNsYXRpb24gb3IgYSBzY2FsZS4g
QW5kIGR1ZSB0byA8cmRhcjovL3Byb2JsZW0vMTQ2MzQ0NTM+CiAgICAgLy8gd2UgY2Fubm90IHVz
ZSBpdCBpbiBmb3IgYSBwcmludGluZyBjb250ZXh0IGVpdGhlci4KICAgICBjb25zdCBBZmZpbmVU
cmFuc2Zvcm0mIGN0bSA9IGdldENUTSgpOwotICAgIGJvb2wgY2FuVXNlQ0dSZWN0SW5maW5pdGUg
PSAhd2tDR0NvbnRleHRJc1BERkNvbnRleHQocGxhdGZvcm1Db250ZXh0KCkpICYmICghaXNBY2Nl
bGVyYXRlZENvbnRleHQoKSB8fCAoIWN0bS5iKCkgJiYgIWN0bS5jKCkpKTsKKyAgICBib29sIGNh
blVzZUNHUmVjdEluZmluaXRlID0gQ0dDb250ZXh0R2V0VHlwZShwbGF0Zm9ybUNvbnRleHQoKSkg
IT0ga0NHQ29udGV4dFR5cGVQREYgJiYgKCFpc0FjY2VsZXJhdGVkQ29udGV4dCgpIHx8ICghY3Rt
LmIoKSAmJiAhY3RtLmMoKSkpOwogICAgIENHUmVjdCByZWN0c1syXSA9IHsgY2FuVXNlQ0dSZWN0
SW5maW5pdGUgPyBDR1JlY3RJbmZpbml0ZSA6IENHQ29udGV4dEdldENsaXBCb3VuZGluZ0JveChw
bGF0Zm9ybUNvbnRleHQoKSksIHJlY3QgfTsKICAgICBDR0NvbnRleHRCZWdpblBhdGgocGxhdGZv
cm1Db250ZXh0KCkpOwogICAgIENHQ29udGV4dEFkZFJlY3RzKHBsYXRmb3JtQ29udGV4dCgpLCBy
ZWN0cywgMik7CkBAIC0xMDkzLDcgKzEwOTMsNyBAQCBzdGF0aWMgdm9pZCBhcHBseVNoYWRvd09m
ZnNldFdvcmthcm91bmRJZk5lZWRlZChjb25zdCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsCiAg
ICAgaWYgKGNvbnRleHQuaXNBY2NlbGVyYXRlZENvbnRleHQoKSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgaWYgKHdrQ0dDb250ZXh0RHJhd3NXaXRoQ29ycmVjdFNoYWRvd09mZnNldHMoY29udGV4
dC5wbGF0Zm9ybUNvbnRleHQoKSkpCisgICAgaWYgKENHQ29udGV4dERyYXdzV2l0aENvcnJlY3RT
aGFkb3dPZmZzZXRzKGNvbnRleHQucGxhdGZvcm1Db250ZXh0KCkpKQogICAgICAgICByZXR1cm47
CiAKICAgICAvLyBXb3JrIGFyb3VuZCA8cmRhcjovL3Byb2JsZW0vNTUzOTM4OD4gYnkgZW5zdXJp
bmcgdGhhdCB0aGUgb2Zmc2V0cyB3aWxsIGdldCB0cnVuY2F0ZWQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BhdHRlcm5DRy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QYXR0ZXJuQ0cuY3BwCmluZGV4IDk4ZTY5ZGU4ZWQ4
OWEyNGU4ODZhMTQyYTA4Mzk1OWUyYzcyMTM1ZjAuLmQwZTIxYzg3M2FhMmRjMzBjNTNjYzhiYWI0
ZjhiMDQxNDM0MDAwOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NnL1BhdHRlcm5DRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvUGF0dGVybkNHLmNwcApAQCAtMzEsOCArMzEsOCBAQAogCiAjaW5jbHVkZSAiQWZmaW5l
VHJhbnNmb3JtLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCi0KICNpbmNsdWRlIDxD
b3JlR3JhcGhpY3MvQ29yZUdyYXBoaWNzLmg+CisjaW5jbHVkZSA8cGFsL3NwaS9jZy9Db3JlR3Jh
cGhpY3NTUEkuaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogCiAjaWYgUExBVEZPUk0o
Q09DT0EpCkBAIC03NCw3ICs3NCw3IEBAIENHUGF0dGVyblJlZiBQYXR0ZXJuOjpjcmVhdGVQbGF0
Zm9ybVBhdHRlcm4oY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB1c2VyU3BhY2VUcmFuCiAgICAgLy8g
SWYgd2UncmUgcmVwZWF0aW5nIGluIGJvdGggZGlyZWN0aW9ucywgd2UgY2FuIHVzZSBpbWFnZS1i
YWNrZWQgcGF0dGVybnMKICAgICAvLyBpbnN0ZWFkIG9mIGN1c3RvbSBwYXR0ZXJucywgYW5kIGF2
b2lkIHRpbGluZy1lZGdlIHBpeGVsIGNyYWNrcy4KICAgICBpZiAobV9yZXBlYXRYICYmIG1fcmVw
ZWF0WSkKLSAgICAgICAgcmV0dXJuIHdrQ0dQYXR0ZXJuQ3JlYXRlV2l0aEltYWdlQW5kVHJhbnNm
b3JtKHRpbGVJbWFnZSgpLm5hdGl2ZUltYWdlKCkuZ2V0KCksIHBhdHRlcm5UcmFuc2Zvcm0sIHdr
UGF0dGVyblRpbGluZ0NvbnN0YW50U3BhY2luZyk7CisgICAgICAgIHJldHVybiBDR1BhdHRlcm5D
cmVhdGVXaXRoSW1hZ2UyKHRpbGVJbWFnZSgpLm5hdGl2ZUltYWdlKCkuZ2V0KCksIHBhdHRlcm5U
cmFuc2Zvcm0sIGtDR1BhdHRlcm5UaWxpbmdDb25zdGFudFNwYWNpbmcpOwogCiAgICAgLy8gSWYg
RkxUX01BWCBzaG91bGQgYWxzbyBiZSB1c2VkIGZvciB4U3RlcCBvciB5U3RlcCwgbm90aGluZyBp
cyByZW5kZXJlZC4gVXNpbmcgZnJhY3Rpb25zIG9mIEZMVF9NQVggYWxzbwogICAgIC8vIHJlc3Vs
dCBpbiBub3RoaW5nIGJlaW5nIHJlbmRlcmVkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0Q29jb2EubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRDb2NvYS5tbQpp
bmRleCA2N2Y0ZGViMTcyYjZjMGZlMjNjMWIxZDFmYjA5ZWFiOGFkYWUxMzFiLi40NWQ3NzM5ZDY0
NmQ3OGExN2U3ZDcyMTg5ZDJkN2NjMzExZGNjN2NkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRDb2NvYS5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRDb2Nv
YS5tbQpAQCAtMjksMTAgKzI5LDEzIEBACiAjaW1wb3J0ICJHcmFwaGljc0NvbnRleHRDRy5oIgog
I2ltcG9ydCAiR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlQ0cuaCIKICNpbXBvcnQgIklu
dFJlY3QuaCIKKyNpbXBvcnQgPHBhbC9zcGkvY2cvQ29yZUdyYXBoaWNzU1BJLmg+CisjaW1wb3J0
IDxwYWwvc3BpL21hYy9OU0dyYXBoaWNzU1BJLmg+CisjaW1wb3J0IDx3dGYvU3RkTGliRXh0cmFz
Lmg+CisKICNpZiBVU0UoQVBQS0lUKQogI2ltcG9ydCA8QXBwS2l0L0FwcEtpdC5oPgogI2VuZGlm
Ci0jaW1wb3J0IDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKICNpZiBQTEFURk9STShJT1MpCiAjaW1w
b3J0ICJDb2xvci5oIgpAQCAtNDMsNyArNDYsNiBAQAogI2lmICFQTEFURk9STShJT1MpCiAjaW1w
b3J0ICJMb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHQuaCIKICNlbmRpZgotI2ltcG9ydCAiV2Vi
Q29yZVN5c3RlbUludGVyZmFjZS5oIgogCiBAY2xhc3MgTlNDb2xvcjsKIApAQCAtNTcsMTEgKzU5
LDQ3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIC8vIGV4Y2VwdGlvbnMgZm9yIHRob3NlLgogCiAj
aWYgIVBMQVRGT1JNKElPUykKK0NHQ29sb3JSZWYgR3JhcGhpY3NDb250ZXh0Ojpmb2N1c1JpbmdD
b2xvcigpCit7CisgICAgc3RhdGljIENHQ29sb3JSZWYgY29sb3I7CisgICAgaWYgKCFjb2xvcikg
eworICAgICAgICBDR0Zsb2F0IGNvbG9yQ29tcG9uZW50c1tdID0geyAwLjUsIDAuNzUsIDEuMCwg
MS4wIH07CisgICAgICAgIGF1dG8gY29sb3JTcGFjZSA9IGFkb3B0Q0YoQ0dDb2xvclNwYWNlQ3Jl
YXRlV2l0aE5hbWUoa0NHQ29sb3JTcGFjZVNSR0IpKTsKKyAgICAgICAgY29sb3IgPSBDR0NvbG9y
Q3JlYXRlKGNvbG9yU3BhY2UuZ2V0KCksIGNvbG9yQ29tcG9uZW50cyk7CisgICAgfQorICAgIHJl
dHVybiBjb2xvcjsKK30KKworc3RhdGljIGJvb2wgZHJhd0ZvY3VzUmluZ0F0VGltZShDR0NvbnRl
eHRSZWYgY29udGV4dCwgTlNUaW1lSW50ZXJ2YWwgdGltZU9mZnNldCkKK3sKKyAgICBDR0ZvY3Vz
UmluZ1N0eWxlIGZvY3VzUmluZ1N0eWxlOworICAgIEJPT0wgbmVlZHNSZXBhaW50ID0gTlNJbml0
aWFsaXplQ0dGb2N1c1JpbmdTdHlsZUZvclRpbWUoTlNGb2N1c1JpbmdPbmx5LCAmZm9jdXNSaW5n
U3R5bGUsIHRpbWVPZmZzZXQpOworCisgICAgLy8gV2Ugd2FudCB0byByZXNwZWN0IHRoZSBDR0Nv
bnRleHQgY2xpcHBpbmcgYW5kIGFsc28gbm90IG92ZXJwYWludCBhbnkKKyAgICAvLyBleGlzdGlu
ZyBmb2N1cyByaW5nLiBUaGUgd2F5IHRvIGRvIHRoaXMgaXMgc2V0IGFjY3VtdWxhdGUgdG8KKyAg
ICAvLyAtMS4gQWNjb3JkaW5nIHRvIENvcmVHcmFwaGljcywgdGhlIHJlYXNvbmluZyBmb3IgdGhp
cyBiZWhhdmlvciBoYXMgYmVlbgorICAgIC8vIGxvc3QgaW4gdGltZS4KKyAgICBmb2N1c1JpbmdT
dHlsZS5hY2N1bXVsYXRlID0gLTE7CisgICAgYXV0byBzdHlsZSA9IGFkb3B0Q0YoQ0dTdHlsZUNy
ZWF0ZUZvY3VzUmluZ1dpdGhDb2xvcigmZm9jdXNSaW5nU3R5bGUsIEdyYXBoaWNzQ29udGV4dDo6
Zm9jdXNSaW5nQ29sb3IoKSkpOworCisgICAgQ0dDb250ZXh0U2F2ZUdTdGF0ZShjb250ZXh0KTsK
KyAgICBDR0NvbnRleHRTZXRTdHlsZShjb250ZXh0LCBzdHlsZS5nZXQoKSk7CisgICAgQ0dDb250
ZXh0RmlsbFBhdGgoY29udGV4dCk7CisgICAgQ0dDb250ZXh0UmVzdG9yZUdTdGF0ZShjb250ZXh0
KTsKKworICAgIHJldHVybiBuZWVkc1JlcGFpbnQ7Cit9CisKK3N0YXRpYyB2b2lkIGRyYXdGb2N1
c1JpbmcoQ0dDb250ZXh0UmVmIGNvbnRleHQpCit7CisgICAgZHJhd0ZvY3VzUmluZ0F0VGltZShj
b250ZXh0LCBEQkxfTUFYKTsKK30KKwogc3RhdGljIHZvaWQgZHJhd0ZvY3VzUmluZ1RvQ29udGV4
dChDR0NvbnRleHRSZWYgY29udGV4dCwgQ0dQYXRoUmVmIGZvY3VzUmluZ1BhdGgpCiB7CiAgICAg
Q0dDb250ZXh0QmVnaW5QYXRoKGNvbnRleHQpOwogICAgIENHQ29udGV4dEFkZFBhdGgoY29udGV4
dCwgZm9jdXNSaW5nUGF0aCk7Ci0gICAgd2tEcmF3Rm9jdXNSaW5nKGNvbnRleHQsIG51bGxwdHIs
IDApOworICAgIGRyYXdGb2N1c1JpbmcoY29udGV4dCk7CiB9CiAKIHN0YXRpYyBib29sIGRyYXdG
b2N1c1JpbmdUb0NvbnRleHRBdFRpbWUoQ0dDb250ZXh0UmVmIGNvbnRleHQsIENHUGF0aFJlZiBm
b2N1c1JpbmdQYXRoLCBkb3VibGUgdGltZU9mZnNldCkKQEAgLTY5LDcgKzEwNyw3IEBAIHN0YXRp
YyBib29sIGRyYXdGb2N1c1JpbmdUb0NvbnRleHRBdFRpbWUoQ0dDb250ZXh0UmVmIGNvbnRleHQs
IENHUGF0aFJlZiBmb2N1c1JpCiAgICAgVU5VU0VEX1BBUkFNKHRpbWVPZmZzZXQpOwogICAgIENH
Q29udGV4dEJlZ2luUGF0aChjb250ZXh0KTsKICAgICBDR0NvbnRleHRBZGRQYXRoKGNvbnRleHQs
IGZvY3VzUmluZ1BhdGgpOwotICAgIHJldHVybiB3a0RyYXdGb2N1c1JpbmdBdFRpbWUoY29udGV4
dCwgc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjptYXgoKSk7CisgICAgcmV0dXJuIGRyYXdG
b2N1c1JpbmdBdFRpbWUoY29udGV4dCwgc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjptYXgo
KSk7CiB9CiAjZW5kaWYgLy8gIVBMQVRGT1JNKElPUykKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW9zL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2VJT1MubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViQ29yZVN5c3RlbUludGVyZmFjZUlPUy5tbQppbmRleCAw
OWExODI4MTRkMTQwMTNiN2M4OGU4ZWViZjAzZDlhZTBjZmEyODY5Li43NTdkMDQ1ZjVjNTg1NDQ0
OTZmMmRkNjkwNTBiZDFhZjg2OGMyZWRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pb3MvV2ViQ29yZVN5c3RlbUludGVyZmFjZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pb3MvV2ViQ29yZVN5c3RlbUludGVyZmFjZUlPUy5tbQpAQCAtMjcsMTAgKzI3
LDggQEAKICNpbXBvcnQgIldlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaCIKIAogV0VCQ09SRV9FWFBP
UlQgdm9pZCAoKndrQ0FMYXllckVudW1lcmF0ZVJlY3RzQmVpbmdEcmF3bldpdGhCbG9jaykoQ0FM
YXllciAqLCBDR0NvbnRleHRSZWYgY29udGV4dCwgdm9pZCAoXmJsb2NrKShDR1JlY3QgcmVjdCkp
OwotV0VCQ09SRV9FWFBPUlQgQ0dQYXR0ZXJuUmVmICgqd2tDR1BhdHRlcm5DcmVhdGVXaXRoSW1h
Z2VBbmRUcmFuc2Zvcm0pKENHSW1hZ2VSZWYsIENHQWZmaW5lVHJhbnNmb3JtLCBpbnQpOwogV0VC
Q09SRV9FWFBPUlQgdm9pZCAoKndrQ2xlYXJHbHlwaFZlY3Rvcikodm9pZCogZ2x5cGhzKTsKIFdF
QkNPUkVfRVhQT1JUIE9TU3RhdHVzICgqd2tDb252ZXJ0Q2hhclRvR2x5cGhzKSh2b2lkKiBzdHls
ZUdyb3VwLCBjb25zdCBVbmlDaGFyKiwgdW5zaWduZWQgbnVtQ2hhcmFjdGVycywgdm9pZCogZ2x5
cGhzKTsKLVdFQkNPUkVfRVhQT1JUIGJvb2wgKCp3a0NHQ29udGV4dElzUERGQ29udGV4dCkoQ0dD
b250ZXh0UmVmKTsKIFdFQkNPUkVfRVhQT1JUIGlkICgqd2tDcmVhdGVOU1VSTENvbm5lY3Rpb25E
ZWxlZ2F0ZVByb3h5KSh2b2lkKTsKIFdFQkNPUkVfRVhQT1JUIHZvaWQgKCp3a1NldENPTk5FQ1RQ
cm94eUZvclN0cmVhbSkoQ0ZSZWFkU3RyZWFtUmVmLCBDRlN0cmluZ1JlZiBwcm94eUhvc3QsIENG
TnVtYmVyUmVmIHByb3h5UG9ydCk7CiBXRUJDT1JFX0VYUE9SVCB2b2lkICgqd2tTZXRDT05ORUNU
UHJveHlBdXRob3JpemF0aW9uRm9yU3RyZWFtKShDRlJlYWRTdHJlYW1SZWYsIENGU3RyaW5nUmVm
IHByb3h5QXV0aG9yaXphdGlvblN0cmluZyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21h
Yy9QYXN0ZWJvYXJkTWFjLm1tCmluZGV4IDIwZTYzNWMwOTA1YWU4OTZjN2JiNTQyMWM4NTZiMjFi
MmE0NDZiNDkuLjgxODlkYmI4NjliNTFlYzFmNmMwMDE0YWM4YTZjMmE1MzAyODM2OTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tCkBAIC01Miw2ICs1
Miw4IEBACiAjaW1wb3J0ICJXZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmgiCiAjaW1wb3J0ICJXZWJO
U0F0dHJpYnV0ZWRTdHJpbmdFeHRyYXMuaCIKICNpbXBvcnQgIm1hcmt1cC5oIgorI2ltcG9ydCA8
cGFsL3NwaS9jZy9Db3JlR3JhcGhpY3NTUEkuaD4KKyNpbXBvcnQgPHBhbC9zcGkvbWFjL0hJU2Vy
dmljZXNTUEkuaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbXBvcnQgPHd0Zi9TdGRM
aWJFeHRyYXMuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KQEAgLTY2OSw2
ICs2NzEsODAgQEAgVmVjdG9yPFN0cmluZz4gUGFzdGVib2FyZDo6cmVhZEZpbGVuYW1lcygpCiB9
CiAKICNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQorc3RhdGljIHZvaWQgZmxpcEltYWdlU3BlYyhD
b3JlRHJhZ0ltYWdlU3BlYyogaW1hZ2VTcGVjKQoreworICAgIHVuc2lnbmVkIGNoYXIqIHRlbXBS
b3cgPSAodW5zaWduZWQgY2hhciopZmFzdE1hbGxvYyhpbWFnZVNwZWMtPmJ5dGVzUGVyUm93KTsK
KyAgICBpbnQgcGxhbmVzID0gaW1hZ2VTcGVjLT5pc1BsYW5hciA/IGltYWdlU3BlYy0+c2FtcGxl
c1BlclBpeGVsIDogMTsKKworICAgIGZvciAoaW50IHAgPSAwOyBwIDwgcGxhbmVzOyBwKyspIHsK
KyAgICAgICAgdW5zaWduZWQgY2hhciogdG9wUm93ID0gKHVuc2lnbmVkIGNoYXIqKWltYWdlU3Bl
Yy0+ZGF0YVtwXTsKKyAgICAgICAgdW5zaWduZWQgY2hhciogYm90Um93ID0gdG9wUm93ICsgKGlt
YWdlU3BlYy0+cGl4ZWxzSGlnaCAtIDEpICogaW1hZ2VTcGVjLT5ieXRlc1BlclJvdzsKKyAgICAg
ICAgZm9yIChpbnQgaSA9IDA7IGkgPCBpbWFnZVNwZWMtPnBpeGVsc0hpZ2ggLyAyOyBpKyssIHRv
cFJvdyArPSBpbWFnZVNwZWMtPmJ5dGVzUGVyUm93LCBib3RSb3cgLT0gaW1hZ2VTcGVjLT5ieXRl
c1BlclJvdykgeworICAgICAgICAgICAgYmNvcHkodG9wUm93LCAgdGVtcFJvdywgaW1hZ2VTcGVj
LT5ieXRlc1BlclJvdyk7CisgICAgICAgICAgICBiY29weShib3RSb3csICB0b3BSb3csICBpbWFn
ZVNwZWMtPmJ5dGVzUGVyUm93KTsKKyAgICAgICAgICAgIGJjb3B5KHRlbXBSb3csIGJvdFJvdywg
IGltYWdlU3BlYy0+Ynl0ZXNQZXJSb3cpOworICAgICAgICB9CisgICAgfQorCisgICAgZmFzdEZy
ZWUodGVtcFJvdyk7Cit9CisKK3N0YXRpYyB2b2lkIHNldERyYWdJbWFnZUltcGwoTlNJbWFnZSAq
aW1hZ2UsIE5TUG9pbnQgb2Zmc2V0KQoreworICAgIGJvb2wgZmxpcEltYWdlOworICAgIE5TU2l6
ZSBpbWFnZVNpemUgPSBpbWFnZS5zaXplOworICAgIENHUmVjdCBpbWFnZVJlY3QgPSBDR1JlY3RN
YWtlKDAsIDAsIGltYWdlU2l6ZS53aWR0aCwgaW1hZ2VTaXplLmhlaWdodCk7CisgICAgTlNJbWFn
ZVJlcCAqaW1hZ2VSZXAgPSBbaW1hZ2UgYmVzdFJlcHJlc2VudGF0aW9uRm9yUmVjdDpOU1JlY3RG
cm9tQ0dSZWN0KGltYWdlUmVjdCkgY29udGV4dDpuaWwgaGludHM6bmlsXTsKKyAgICBSZXRhaW5Q
dHI8TlNCaXRtYXBJbWFnZVJlcD4gYml0bWFwSW1hZ2U7CisgICAgaWYgKCFpbWFnZVJlcCB8fCAh
W2ltYWdlUmVwIGlzS2luZE9mQ2xhc3M6W05TQml0bWFwSW1hZ2VSZXAgY2xhc3NdXSB8fCAhTlNF
cXVhbFNpemVzKGltYWdlUmVwLnNpemUsIGltYWdlU2l6ZSkpIHsKKyAgICAgICAgW2ltYWdlIGxv
Y2tGb2N1c107CisgICAgICAgIGJpdG1hcEltYWdlID0gYWRvcHROUyhbW05TQml0bWFwSW1hZ2VS
ZXAgYWxsb2NdIGluaXRXaXRoRm9jdXNlZFZpZXdSZWN0OiooTlNSZWN0ICopJmltYWdlUmVjdF0p
OworICAgICAgICBbaW1hZ2UgdW5sb2NrRm9jdXNdOworICAgICAgICAKKyAgICAgICAgLy8gd2Ug
bWF5IGhhdmUgdG8gZmxpcCB0aGUgYml0cyB3ZSBqdXN0IHJlYWQgaWYgdGhlIGltYWdlIHdhcyBm
bGlwcGVkIHNpbmNlIGl0IG1lYW5zIHRoZSBjYWNoZSB3YXMgYWxzbworICAgICAgICAvLyBhbmQg
Q29yZURyYWdTZXRJbWFnZSBjYW4ndCB0YWtlIGEgdHJhbnNmb3JtIGZvciByZW5kZXJpbmcuCisj
cHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcHVzaAorI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIGln
bm9yZWQgIi1XZGVwcmVjYXRlZC1kZWNsYXJhdGlvbnMiCisgICAgICAgIGZsaXBJbWFnZSA9IGlt
YWdlLmlzRmxpcHBlZDsKKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwb3AKKyAgICB9IGVsc2Ug
eworICAgICAgICBmbGlwSW1hZ2UgPSBmYWxzZTsKKyAgICAgICAgYml0bWFwSW1hZ2UgPSAoTlNC
aXRtYXBJbWFnZVJlcCAqKWltYWdlUmVwOworICAgIH0KKyAgICBBU1NFUlQoYml0bWFwSW1hZ2Up
OworCisgICAgQ29yZURyYWdJbWFnZVNwZWMgaW1hZ2VTcGVjOworICAgIGltYWdlU3BlYy52ZXJz
aW9uID0ga0NvcmVEcmFnSW1hZ2VTcGVjVmVyc2lvbk9uZTsKKyAgICBpbWFnZVNwZWMucGl4ZWxz
V2lkZSA9IFtiaXRtYXBJbWFnZSBwaXhlbHNXaWRlXTsKKyAgICBpbWFnZVNwZWMucGl4ZWxzSGln
aCA9IFtiaXRtYXBJbWFnZSBwaXhlbHNIaWdoXTsKKyAgICBpbWFnZVNwZWMuYml0c1BlclNhbXBs
ZSA9IFtiaXRtYXBJbWFnZSBiaXRzUGVyU2FtcGxlXTsKKyAgICBpbWFnZVNwZWMuc2FtcGxlc1Bl
clBpeGVsID0gW2JpdG1hcEltYWdlIHNhbXBsZXNQZXJQaXhlbF07CisgICAgaW1hZ2VTcGVjLmJp
dHNQZXJQaXhlbCA9IFtiaXRtYXBJbWFnZSBiaXRzUGVyUGl4ZWxdOworICAgIGltYWdlU3BlYy5i
eXRlc1BlclJvdyA9IFtiaXRtYXBJbWFnZSBieXRlc1BlclJvd107CisgICAgaW1hZ2VTcGVjLmlz
UGxhbmFyID0gW2JpdG1hcEltYWdlIGlzUGxhbmFyXTsKKyAgICBpbWFnZVNwZWMuaGFzQWxwaGEg
PSBbYml0bWFwSW1hZ2UgaGFzQWxwaGFdOworICAgIFtiaXRtYXBJbWFnZSBnZXRCaXRtYXBEYXRh
UGxhbmVzOih1bnNpZ25lZCBjaGFyKiopaW1hZ2VTcGVjLmRhdGFdOworCisgICAgLy8gaWYgaW1h
Z2Ugd2FzIGZsaXBwZWQsIHdlIGhhdmUgYW4gdXBzaWRlIGRvd24gYml0bWFwIHNpbmNlIHRoZSBj
YWNoZSBpcyByZW5kZXJlZCBmbGlwcGVkCisgICAgaWYgKGZsaXBJbWFnZSkKKyAgICAgICAgZmxp
cEltYWdlU3BlYygmaW1hZ2VTcGVjKTsKKworICAgIENHU1JlZ2lvbk9iaiBpbWFnZVNoYXBlOwor
ICAgIE9TU3RhdHVzIGVycm9yID0gQ0dTTmV3UmVnaW9uV2l0aFJlY3QoJmltYWdlUmVjdCwgJmlt
YWdlU2hhcGUpOworICAgIEFTU0VSVChlcnJvciA9PSBrQ0dFcnJvclN1Y2Nlc3MpOworICAgIGlm
IChlcnJvciAhPSBrQ0dFcnJvclN1Y2Nlc3MpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIG1h
a2Ugc3VyZSBpbWFnZSBoYXMgaW50ZWdlciBvZmZzZXQKKyAgICBDR1BvaW50IGltYWdlT2Zmc2V0
ID0gey1vZmZzZXQueCwgLShpbWFnZVNpemUuaGVpZ2h0IC0gb2Zmc2V0LnkpfTsKKyAgICBpbWFn
ZU9mZnNldC54ID0gZmxvb3IoaW1hZ2VPZmZzZXQueCArIDAuNSk7CisgICAgaW1hZ2VPZmZzZXQu
eSA9IGZsb29yKGltYWdlT2Zmc2V0LnkgKyAwLjUpOworCisgICAgZXJyb3IgPSBDb3JlRHJhZ1Nl
dEltYWdlKENvcmVEcmFnR2V0Q3VycmVudERyYWcoKSwgaW1hZ2VPZmZzZXQsICZpbWFnZVNwZWMs
IGltYWdlU2hhcGUsIDEuMCk7CisgICAgQ0dTUmVsZWFzZVJlZ2lvbihpbWFnZVNoYXBlKTsKKyAg
ICBBU1NFUlQoZXJyb3IgPT0ga0NHRXJyb3JTdWNjZXNzKTsKK30KKwogdm9pZCBQYXN0ZWJvYXJk
OjpzZXREcmFnSW1hZ2UoRHJhZ0ltYWdlIGltYWdlLCBjb25zdCBJbnRQb2ludCYgbG9jYXRpb24p
CiB7CiAgICAgLy8gRG9uJ3QgYWxsb3cgc2V0dGluZyB0aGUgZHJhZyBpbWFnZSBpZiBzb21lb25l
IGtlcHQgYSBwYXN0ZWJvYXJkIGFuZCBpcyB0cnlpbmcgdG8gc2V0IHRoZSBpbWFnZSB0b28gbGF0
ZS4KQEAgLTY3Nyw3ICs3NTMsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6OnNldERyYWdJbWFnZShEcmFn
SW1hZ2UgaW1hZ2UsIGNvbnN0IEludFBvaW50JiBsb2NhdGlvbikKIAogICAgIC8vIERhc2hib2Fy
ZCB3YW50cyB0byBiZSBhYmxlIHRvIHNldCB0aGUgZHJhZyBpbWFnZSBkdXJpbmcgZHJhZ2dpbmcs
IGJ1dCBDb2NvYSBkb2VzIG5vdCBhbGxvdyB0aGlzLgogICAgIC8vIEluc3RlYWQgd2UgbXVzdCBk
cm9wIGRvd24gdG8gdGhlIENvcmVHcmFwaGljcyBBUEkuCi0gICAgd2tTZXREcmFnSW1hZ2UoaW1h
Z2UuZ2V0KCkuZ2V0KCksIGxvY2F0aW9uKTsKKyAgICBzZXREcmFnSW1hZ2VJbXBsKGltYWdlLmdl
dCgpLmdldCgpLCBsb2NhdGlvbik7CiAKICAgICAvLyBIYWNrOiBXZSBtdXN0IHBvc3QgYW4gZXZl
bnQgdG8gd2FrZSB1cCB0aGUgTlNEcmFnTWFuYWdlciwgd2hpY2ggaXMgc2l0dGluZyBpbiBhIG5l
eHRFdmVudCBjYWxsCiAgICAgLy8gdXAgdGhlIHN0YWNrIGZyb20gdXMgYmVjYXVzZSB0aGUgQ29y
ZUZvdW5kYXRpb24gZHJhZyBtYW5hZ2VyIGRvZXMgbm90IHVzZSB0aGUgcnVuIGxvb3AgYnkgaXRz
ZWxmLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtRXZl
bnRGYWN0b3J5TWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtRXZl
bnRGYWN0b3J5TWFjLm1tCmluZGV4IGJjMWUzNjdmYzQ2OTRlYWY0NjBhYjBlYTVhNDIzMGQwMDAw
MWFjODkuLjUwMDEwMDlmMjExOTQ1ZGE5Nzc4YTNlYWFmOTllZDgzMTJmZDc3NTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybUV2ZW50RmFjdG9yeU1hYy5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1FdmVudEZhY3RvcnlN
YWMubW0KQEAgLTY3Myw3ICs2NzMsNyBAQCBzdGF0aWMgaW50IHR5cGVGb3JFdmVudChOU0V2ZW50
ICpldmVudCkKIHsKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihbTlNNZW51IG1lbnVUeXBl
Rm9yRXZlbnQ6ZXZlbnRdKTsKIH0KLSAgICAKKwogY2xhc3MgUGxhdGZvcm1Nb3VzZUV2ZW50QnVp
bGRlciA6IHB1YmxpYyBQbGF0Zm9ybU1vdXNlRXZlbnQgewogcHVibGljOgogICAgIFBsYXRmb3Jt
TW91c2VFdmVudEJ1aWxkZXIoTlNFdmVudCAqZXZlbnQsIE5TRXZlbnQgKmNvcnJlc3BvbmRpbmdQ
cmVzc3VyZUV2ZW50LCBOU1ZpZXcgKndpbmRvd1ZpZXcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsYmFyVGhlbWVNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tYWMvU2Nyb2xsYmFyVGhlbWVNYWMubW0KaW5kZXggYzRjMjg3NzY4MzU3NDk2YWVi
Mjg4ZmE0MWYwZGQ5NWQyZDdjYzI4OC4uNmQwNWI4NmM2M2QwNWY3YjZkMTQ3MzE3ZWZkMjdmZjM0
MTU4MzE5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbGJh
clRoZW1lTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxiYXJU
aGVtZU1hYy5tbQpAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUgIlNjcm9sbFZpZXcuaCIKICNp
bmNsdWRlICJXZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmgiCiAjaW5jbHVkZSA8Q2FyYm9uL0NhcmJv
bi5oPgorI2luY2x1ZGUgPHBhbC9zcGkvY2cvQ29yZUdyYXBoaWNzU1BJLmg+CiAjaW5jbHVkZSA8
cGFsL3NwaS9tYWMvTlNTY3JvbGxlckltcFNQSS5oPgogI2luY2x1ZGUgPHd0Zi9CbG9ja09iakNF
eGNlcHRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KQEAgLTU3Myw3ICs1NzQsNyBA
QCBzdGF0aWMgUmV0YWluUHRyPENHQ29sb3JSZWY+IGxpbmVuQmFja2dyb3VuZENvbG9yKCkKICAg
ICBpZiAoIWNnSW1hZ2UpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgUmV0YWluUHRy
PENHUGF0dGVyblJlZj4gcGF0dGVybiA9IGFkb3B0Q0Yod2tDR1BhdHRlcm5DcmVhdGVXaXRoSW1h
Z2VBbmRUcmFuc2Zvcm0oY2dJbWFnZSwgQ0dBZmZpbmVUcmFuc2Zvcm1JZGVudGl0eSwgd2tQYXR0
ZXJuVGlsaW5nTm9EaXN0b3J0aW9uKSk7CisgICAgUmV0YWluUHRyPENHUGF0dGVyblJlZj4gcGF0
dGVybiA9IGFkb3B0Q0YoQ0dQYXR0ZXJuQ3JlYXRlV2l0aEltYWdlMihjZ0ltYWdlLCBDR0FmZmlu
ZVRyYW5zZm9ybUlkZW50aXR5LCBrQ0dQYXR0ZXJuVGlsaW5nTm9EaXN0b3J0aW9uKSk7CiAgICAg
UmV0YWluUHRyPENHQ29sb3JTcGFjZVJlZj4gY29sb3JTcGFjZSA9IGFkb3B0Q0YoQ0dDb2xvclNw
YWNlQ3JlYXRlUGF0dGVybigwKSk7CiAKICAgICBjb25zdCBDR0Zsb2F0IGFscGhhID0gMS4wOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1RoZW1lTWFjLm1tIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1RoZW1lTWFjLm1tCmluZGV4IDkwZjEwNDFlZmY3ZjBj
NjQ3ZDZmODM5MWMwMjdmNTNkMWFiNDQ3MTQuLjhhMTkyNjVjZjVkODJmMjAyNWZmNTAxZWVlMmVm
OTUxZjg0Mzc4NTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9UaGVt
ZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvVGhlbWVNYWMubW0KQEAg
LTM2LDYgKzM2LDcgQEAKICNpbXBvcnQgIldlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaCIKICNpbXBv
cnQgPENhcmJvbi9DYXJib24uaD4KICNpbXBvcnQgPHBhbC9zcGkvY29jb2EvTlNCdXR0b25DZWxs
U1BJLmg+CisjaW1wb3J0IDxwYWwvc3BpL21hYy9OU0dyYXBoaWNzU1BJLmg+CiAjaW1wb3J0IDx3
dGYvQmxvY2tPYmpDRXhjZXB0aW9ucy5oPgogI2ltcG9ydCA8d3RmL05ldmVyRGVzdHJveWVkLmg+
CiAjaW1wb3J0IDx3dGYvU3RkTGliRXh0cmFzLmg+CkBAIC0zNDksOSArMzUwLDMyIEBAIHN0YXRp
YyBOU0J1dHRvbkNlbGwgKnNoYXJlZENoZWNrYm94Q2VsbChjb25zdCBDb250cm9sU3RhdGVzJiBz
dGF0ZXMsIGNvbnN0IEludFNpCiAgICAgcmV0dXJuIGNoZWNrYm94Q2VsbDsKIH0KIAorc3RhdGlj
IGJvb2wgZHJhd0NlbGxGb2N1c1JpbmdXaXRoRnJhbWVBdFRpbWUoTlNDZWxsICpjZWxsLCBOU1Jl
Y3QgY2VsbEZyYW1lLCBOU1ZpZXcgKmNvbnRyb2xWaWV3LCBOU1RpbWVJbnRlcnZhbCB0aW1lT2Zm
c2V0KQoreworICAgIENHQ29udGV4dFJlZiBjZ0NvbnRleHQgPSAoQ0dDb250ZXh0UmVmKVtbTlNH
cmFwaGljc0NvbnRleHQgY3VycmVudENvbnRleHRdIGdyYXBoaWNzUG9ydF07CisgICAgQ0dDb250
ZXh0U2F2ZUdTdGF0ZShjZ0NvbnRleHQpOworCisgICAgQ0dGb2N1c1JpbmdTdHlsZSBmb2N1c1Jp
bmdTdHlsZTsKKyAgICBib29sIG5lZWRzUmVwYWludCA9IE5TSW5pdGlhbGl6ZUNHRm9jdXNSaW5n
U3R5bGVGb3JUaW1lKE5TRm9jdXNSaW5nT25seSwgJmZvY3VzUmluZ1N0eWxlLCB0aW1lT2Zmc2V0
KTsKKyAgICAvLyBXZSB3YW50IHRvIHJlc3BlY3QgdGhlIENHQ29udGV4dCBjbGlwcGluZyBhbmQg
YWxzbyBub3Qgb3ZlcnBhaW50IGFueQorICAgIC8vIGV4aXN0aW5nIGZvY3VzIHJpbmcuIFRoZSB3
YXkgdG8gZG8gdGhpcyBpcyBzZXQgYWNjdW11bGF0ZSB0bworICAgIC8vIC0xLiBBY2NvcmRpbmcg
dG8gQ29yZUdyYXBoaWNzLCB0aGUgcmVhc29uaW5nIGZvciB0aGlzIGJlaGF2aW9yIGhhcyBiZWVu
CisgICAgLy8gbG9zdCBpbiB0aW1lLgorICAgIGZvY3VzUmluZ1N0eWxlLmFjY3VtdWxhdGUgPSAt
MTsKKyAgICBhdXRvIHN0eWxlID0gYWRvcHRDRihDR1N0eWxlQ3JlYXRlRm9jdXNSaW5nV2l0aENv
bG9yKCZmb2N1c1JpbmdTdHlsZSwgR3JhcGhpY3NDb250ZXh0Ojpmb2N1c1JpbmdDb2xvcigpKSk7
CisgICAgQ0dDb250ZXh0U2V0U3R5bGUoY2dDb250ZXh0LCBzdHlsZS5nZXQoKSk7CisKKyAgICBD
R0NvbnRleHRCZWdpblRyYW5zcGFyZW5jeUxheWVyV2l0aFJlY3QoY2dDb250ZXh0LCBOU1JlY3RU
b0NHUmVjdChjZWxsRnJhbWUpLCAwKTsKKyAgICBbY2VsbCBkcmF3Rm9jdXNSaW5nTWFza1dpdGhG
cmFtZTpjZWxsRnJhbWUgaW5WaWV3OmNvbnRyb2xWaWV3XTsKKyAgICBDR0NvbnRleHRFbmRUcmFu
c3BhcmVuY3lMYXllcihjZ0NvbnRleHQpOworICAgIENHQ29udGV4dFJlc3RvcmVHU3RhdGUoY2dD
b250ZXh0KTsKKworICAgIHJldHVybiBuZWVkc1JlcGFpbnQ7Cit9CisKIHN0YXRpYyBib29sIGRy
YXdDZWxsRm9jdXNSaW5nKE5TQ2VsbCAqY2VsbCwgTlNSZWN0IGNlbGxGcmFtZSwgTlNWaWV3ICpj
b250cm9sVmlldykKIHsKLSAgICB3a0RyYXdDZWxsRm9jdXNSaW5nV2l0aEZyYW1lQXRUaW1lKGNl
bGwsIGNlbGxGcmFtZSwgY29udHJvbFZpZXcsIHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6
bWF4KCkpOworICAgIGRyYXdDZWxsRm9jdXNSaW5nV2l0aEZyYW1lQXRUaW1lKGNlbGwsIGNlbGxG
cmFtZSwgY29udHJvbFZpZXcsIHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6bWF4KCkpOwog
ICAgIHJldHVybiBmYWxzZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWFjL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21hYy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmgKaW5kZXggOTNjZGZkMGM3YWIxZTk2ODAxMDZj
YTY0ODU0NDg1NjZiNzQ0NGU0Ni4uNmJkMTRjZGIyYjBlZTYwOTAxNGVkMjc5MTc1ZDQ3MTVkN2Qw
ZTlhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVTeXN0
ZW1JbnRlcmZhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZVN5
c3RlbUludGVyZmFjZS5oCkBAIC0xMjYsMTQgKzEyNiw3IEBAIHR5cGVkZWYgZW51bSB7CiAgICAg
d2tQYXR0ZXJuVGlsaW5nQ29uc3RhbnRTcGFjaW5nCiB9IHdrUGF0dGVyblRpbGluZzsKICNpZiAh
UExBVEZPUk0oSU9TKQotZXh0ZXJuIGJvb2wgKCp3a0NHQ29udGV4dERyYXdzV2l0aENvcnJlY3RT
aGFkb3dPZmZzZXRzKShDR0NvbnRleHRSZWYpOwotI2VuZGlmCi1leHRlcm4gQ0dQYXR0ZXJuUmVm
ICgqd2tDR1BhdHRlcm5DcmVhdGVXaXRoSW1hZ2VBbmRUcmFuc2Zvcm0pKENHSW1hZ2VSZWYsIENH
QWZmaW5lVHJhbnNmb3JtLCBpbnQpOwotI2lmICFQTEFURk9STShJT1MpCiBleHRlcm4gdm9pZCAo
KndrRHJhd0JlemVsZWRUZXh0QXJlYSkoTlNSZWN0LCBCT09MIGVuYWJsZWQpOwotZXh0ZXJuIHZv
aWQgKCp3a0RyYXdGb2N1c1JpbmcpKENHQ29udGV4dFJlZiwgQ0dDb2xvclJlZiwgaW50KTsKLWV4
dGVybiBib29sICgqd2tEcmF3Rm9jdXNSaW5nQXRUaW1lKShDR0NvbnRleHRSZWYsIE5TVGltZUlu
dGVydmFsIHRpbWUpOwotZXh0ZXJuIGJvb2wgKCp3a0RyYXdDZWxsRm9jdXNSaW5nV2l0aEZyYW1l
QXRUaW1lKShOU0NlbGwgKmNlbGwsIE5TUmVjdCBjZWxsRnJhbWUsIE5TVmlldyAqY29udHJvbFZp
ZXcsIE5TVGltZUludGVydmFsIHRpbWUpOwogZXh0ZXJuIHZvaWQgKCp3a0RyYXdNZWRpYVNsaWRl
clRyYWNrKShDR0NvbnRleHRSZWYgY29udGV4dCwgQ0dSZWN0IHJlY3QsIGZsb2F0IHRpbWVMb2Fk
ZWQsIGZsb2F0IGN1cnJlbnRUaW1lLAogICAgIGZsb2F0IGR1cmF0aW9uLCB1bnNpZ25lZCBzdGF0
ZSk7CiBleHRlcm4gdm9pZCAoKndrRHJhd01lZGlhVUlQYXJ0KShpbnQgcGFydCwgQ0dDb250ZXh0
UmVmIGNvbnRleHQsIENHUmVjdCByZWN0LCB1bnNpZ25lZCBzdGF0ZSk7CkBAIC0xNTcsOSArMTUw
LDYgQEAgdHlwZWRlZiBlbnVtIHsKIH0gd2tNZWRpYVVJQ29udHJvbFR5cGU7CiBleHRlcm4gTlND
b250cm9sICooKndrQ3JlYXRlTWVkaWFVSUNvbnRyb2wpKGludCk7CiAKLWV4dGVybiB2b2lkICgq
d2tXaW5kb3dTZXRBbHBoYSkoTlNXaW5kb3cgKiwgZmxvYXQpOwotZXh0ZXJuIHZvaWQgKCp3a1dp
bmRvd1NldFNjYWxlZEZyYW1lKShOU1dpbmRvdyAqLCBOU1JlY3QsIE5TUmVjdCk7Ci0KIGV4dGVy
biB1bnNpZ25lZCAoKndrUVRJbmNsdWRlT25seU1vZGVybk1lZGlhRmlsZVR5cGVzKSh2b2lkKTsK
IGV4dGVybiB2b2lkICgqd2tRVE1vdmllRGlzYWJsZUNvbXBvbmVudCkodWludDMyX3RbNV0pOwog
ZXh0ZXJuIGZsb2F0ICgqd2tRVE1vdmllTWF4VGltZUxvYWRlZCkoUVRNb3ZpZSopOwpAQCAtMTcz
LDkgKzE2Myw3IEBAIGV4dGVybiBOU0FycmF5ICooKndrUVRHZXRTaXRlc0luTWVkaWFEb3dubG9h
ZENhY2hlKSgpOwogZXh0ZXJuIHZvaWQgKCp3a1FUQ2xlYXJNZWRpYURvd25sb2FkQ2FjaGVGb3JT
aXRlKShOU1N0cmluZyAqc2l0ZSk7CiBleHRlcm4gdm9pZCAoKndrUVRDbGVhck1lZGlhRG93bmxv
YWRDYWNoZSkoKTsKIGV4dGVybiB2b2lkICgqd2tTZXRDb29raWVTdG9yYWdlUHJpdmF0ZUJyb3dz
aW5nRW5hYmxlZCkoQk9PTCk7Ci1leHRlcm4gdm9pZCAoKndrU2V0RHJhZ0ltYWdlKShOU0ltYWdl
KiwgTlNQb2ludCBvZmZzZXQpOwogI2VuZGlmCi1leHRlcm4gYm9vbCAoKndrQ0dDb250ZXh0SXNQ
REZDb250ZXh0KShDR0NvbnRleHRSZWYpOwogZXh0ZXJuIHZvaWQgKCp3a1NldENPTk5FQ1RQcm94
eUZvclN0cmVhbSkoQ0ZSZWFkU3RyZWFtUmVmLCBDRlN0cmluZ1JlZiBwcm94eUhvc3QsIENGTnVt
YmVyUmVmIHByb3h5UG9ydCk7CiBleHRlcm4gdm9pZCAoKndrU2V0Q09OTkVDVFByb3h5QXV0aG9y
aXphdGlvbkZvclN0cmVhbSkoQ0ZSZWFkU3RyZWFtUmVmLCBDRlN0cmluZ1JlZiBwcm94eUF1dGhv
cml6YXRpb25TdHJpbmcpOwogZXh0ZXJuIENGSFRUUE1lc3NhZ2VSZWYgKCp3a0NvcHlDT05ORUNU
UHJveHlSZXNwb25zZSkoQ0ZSZWFkU3RyZWFtUmVmLCBDRlVSTFJlZiByZXNwb25zZVVSTCwgQ0ZT
dHJpbmdSZWYgcHJveHlIb3N0LCBDRk51bWJlclJlZiBwcm94eVBvcnQpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2UubW0gYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZVN5c3RlbUludGVyZmFjZS5tbQppbmRl
eCA2NDlkN2E2N2NkNjc2NTRhMmEzZTM5NGU5MzVmOGM1MjZmYTM5MjVhLi5iNGI1YzAwODZjNDJl
MmQ0M2QzMDZiOTJmNjE0MjZmNDdjOTM2YjgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tYWMvV2ViQ29yZVN5c3RlbUludGVyZmFjZS5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZVN5c3RlbUludGVyZmFjZS5tbQpAQCAtMzEsMTIgKzMxLDcg
QEAKICNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgogCiB2b2lkICgqd2tDQUxheWVy
RW51bWVyYXRlUmVjdHNCZWluZ0RyYXduV2l0aEJsb2NrKShDQUxheWVyICosIENHQ29udGV4dFJl
ZiBjb250ZXh0LCB2b2lkICheYmxvY2spKENHUmVjdCByZWN0KSk7Ci1ib29sICgqd2tDR0NvbnRl
eHREcmF3c1dpdGhDb3JyZWN0U2hhZG93T2Zmc2V0cykoQ0dDb250ZXh0UmVmKTsKLUNHUGF0dGVy
blJlZiAoKndrQ0dQYXR0ZXJuQ3JlYXRlV2l0aEltYWdlQW5kVHJhbnNmb3JtKShDR0ltYWdlUmVm
LCBDR0FmZmluZVRyYW5zZm9ybSwgaW50KTsKIHZvaWQgKCp3a0RyYXdCZXplbGVkVGV4dEFyZWEp
KE5TUmVjdCwgQk9PTCBlbmFibGVkKTsKLXZvaWQgKCp3a0RyYXdGb2N1c1JpbmcpKENHQ29udGV4
dFJlZiwgQ0dDb2xvclJlZiwgaW50KTsKLWJvb2wgKCp3a0RyYXdGb2N1c1JpbmdBdFRpbWUpKENH
Q29udGV4dFJlZiwgTlNUaW1lSW50ZXJ2YWwpOwotYm9vbCAoKndrRHJhd0NlbGxGb2N1c1JpbmdX
aXRoRnJhbWVBdFRpbWUpKE5TQ2VsbCosIE5TUmVjdCwgTlNWaWV3KiwgTlNUaW1lSW50ZXJ2YWwp
Owogdm9pZCAoKndrRHJhd01lZGlhU2xpZGVyVHJhY2spKENHQ29udGV4dFJlZiBjb250ZXh0LCBD
R1JlY3QgcmVjdCwgZmxvYXQgdGltZUxvYWRlZCwgZmxvYXQgY3VycmVudFRpbWUsCiAgICAgZmxv
YXQgZHVyYXRpb24sIHVuc2lnbmVkIHN0YXRlKTsKIEJPT0wgKCp3a0hpdFRlc3RNZWRpYVVJUGFy
dCkoaW50IHBhcnQsIENHUmVjdCBib3VuZHMsIENHUG9pbnQgcG9pbnQpOwpAQCAtNDQsOCArMzks
NiBAQCB2b2lkICgqd2tEcmF3TWVkaWFVSVBhcnQpKGludCBwYXJ0LCBDR0NvbnRleHRSZWYgY29u
dGV4dCwgQ0dSZWN0IHJlY3QsIHVuc2lnbmVkCiB2b2lkICgqd2tNZWFzdXJlTWVkaWFVSVBhcnQp
KGludCBwYXJ0LCBDR1JlY3QgKmJvdW5kcywgQ0dTaXplICpuYXR1cmFsU2l6ZSk7CiBOU1ZpZXcg
Kigqd2tDcmVhdGVNZWRpYVVJQmFja2dyb3VuZFZpZXcpKHZvaWQpOwogTlNDb250cm9sICooKndr
Q3JlYXRlTWVkaWFVSUNvbnRyb2wpKGludCk7Ci12b2lkICgqd2tXaW5kb3dTZXRBbHBoYSkoTlNX
aW5kb3cgKiwgZmxvYXQpOwotdm9pZCAoKndrV2luZG93U2V0U2NhbGVkRnJhbWUpKE5TV2luZG93
ICosIE5TUmVjdCwgTlNSZWN0KTsKIE5TVGltZUludGVydmFsICgqd2tHZXROU1VSTFJlc3BvbnNl
Q2FsY3VsYXRlZEV4cGlyYXRpb24pKE5TVVJMUmVzcG9uc2UgKnJlc3BvbnNlKTsKIEJPT0wgKCp3
a0dldE5TVVJMUmVzcG9uc2VNdXN0UmV2YWxpZGF0ZSkoTlNVUkxSZXNwb25zZSAqcmVzcG9uc2Up
Owogdm9pZCAoKndrR2V0V2hlZWxFdmVudERlbHRhcykoTlNFdmVudCosIGZsb2F0KiBkZWx0YVgs
IGZsb2F0KiBkZWx0YVksIEJPT0wqIGNvbnRpbnVvdXMpOwpAQCAtNjQsOCArNTcsNiBAQCBOU0Fy
cmF5ICooKndrUVRHZXRTaXRlc0luTWVkaWFEb3dubG9hZENhY2hlKSgpOwogdm9pZCAoKndrUVRD
bGVhck1lZGlhRG93bmxvYWRDYWNoZUZvclNpdGUpKE5TU3RyaW5nICpzaXRlKTsKIHZvaWQgKCp3
a1FUQ2xlYXJNZWRpYURvd25sb2FkQ2FjaGUpKCk7CiAKLXZvaWQgKCp3a1NldERyYWdJbWFnZSko
TlNJbWFnZSosIE5TUG9pbnQgb2Zmc2V0KTsKLWJvb2wgKCp3a0NHQ29udGV4dElzUERGQ29udGV4
dCkoQ0dDb250ZXh0UmVmKTsKIHZvaWQgKCp3a1NldENPTk5FQ1RQcm94eUZvclN0cmVhbSkoQ0ZS
ZWFkU3RyZWFtUmVmLCBDRlN0cmluZ1JlZiBwcm94eUhvc3QsIENGTnVtYmVyUmVmIHByb3h5UG9y
dCk7CiB2b2lkICgqd2tTZXRDT05ORUNUUHJveHlBdXRob3JpemF0aW9uRm9yU3RyZWFtKShDRlJl
YWRTdHJlYW1SZWYsIENGU3RyaW5nUmVmIHByb3h5QXV0aG9yaXphdGlvblN0cmluZyk7CiBDRkhU
VFBNZXNzYWdlUmVmICgqd2tDb3B5Q09OTkVDVFByb3h5UmVzcG9uc2UpKENGUmVhZFN0cmVhbVJl
ZiwgQ0ZVUkxSZWYgcmVzcG9uc2VVUkwsIENGU3RyaW5nUmVmIHByb3h5SG9zdCwgQ0ZOdW1iZXJS
ZWYgcHJveHlQb3J0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9X
ZWJXaW5kb3dBbmltYXRpb24ubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViV2lu
ZG93QW5pbWF0aW9uLm1tCmluZGV4IDhhYmM4NDBiNzNjYzY0NWM4YWM0MDZkZWFmYWU5NDIyY2Rj
MzUzZTIuLmNhNTU5ZGYwYmNhOWI2MjRkZTJmYzA0MmEyZjNhMTU2Yzg3MGE4MmYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJXaW5kb3dBbmltYXRpb24ubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYldpbmRvd0FuaW1hdGlvbi5tbQpAQCAt
MjksNiArMjksNyBAQAogCiAjaW1wb3J0ICJGbG9hdENvbnZlcnNpb24uaCIKICNpbXBvcnQgIldl
YkNvcmVTeXN0ZW1JbnRlcmZhY2UuaCIKKyNpbXBvcnQgPHBhbC9zcGkvY2cvQ29yZUdyYXBoaWNz
U1BJLmg+CiAjaW1wb3J0IDx3dGYvQXNzZXJ0aW9ucy5oPgogI2ltcG9ydCA8d3RmL01hdGhFeHRy
YXMuaD4KIApAQCAtMTA5LDYgKzExMCw1OSBAQCAtIChOU1JlY3QpY3VycmVudEZyYW1lCiAgICAg
cmV0dXJuIHNjYWxlZFJlY3QoX2ZpbmFsRnJhbWUsIF9pbml0aWFsRnJhbWUsIFtzZWxmIGN1cnJl
bnRWYWx1ZV0pOwogfQogCitzdGF0aWMgdm9pZCBmbGlwUmVjdChOU1JlY3QgKnJlY3QpCit7Cisg
ICAgcmVjdC0+b3JpZ2luLnkgPSBOU01heFkoWyhOU1NjcmVlbiAqKVtbTlNTY3JlZW4gc2NyZWVu
c10gb2JqZWN0QXRJbmRleDowXSBmcmFtZV0pIC0gTlNNYXhZKCpyZWN0KTsKK30KKworc3RhdGlj
IENHU0Nvbm5lY3Rpb25JRCBtYWluV2luZG93U2VydmVyQ29ubmVjdGlvbklEKCkKK3sKKyAgICBz
dGF0aWMgQ0dTQ29ubmVjdGlvbklEIGNnc0lkOworICAgIGlmICghY2dzSWQpCisgICAgICAgIGNn
c0lkID0gQ0dTTWFpbkNvbm5lY3Rpb25JRCgpOworICAgIHJldHVybiBjZ3NJZDsKK30KKworc3Rh
dGljIHZvaWQgc2V0U2NhbGVkRnJhbWVGb3JXaW5kb3coTlNXaW5kb3cgKndpbmRvdywgTlNSZWN0
IHNjYWxlRnJhbWUsIE5TUmVjdCBub25TY2FsZWRGcmFtZSkKK3sKKyAgICBpZiAoTlNFcXVhbFJl
Y3RzKHNjYWxlRnJhbWUsIG5vblNjYWxlZEZyYW1lKSkgeworICAgICAgICBDR1NTZXRXaW5kb3dX
YXJwKG1haW5XaW5kb3dTZXJ2ZXJDb25uZWN0aW9uSUQoKSwgW3dpbmRvdyB3aW5kb3dOdW1iZXJd
LCAwLCAwLCBOVUxMKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBmbG9hdCBt
ZXNoWzE2XTsKKyAgICAKKyAgICBmbGlwUmVjdCgmc2NhbGVGcmFtZSk7CisgICAgZmxpcFJlY3Qo
Jm5vblNjYWxlZEZyYW1lKTsKKyAgICAKKyAgICAvLyB0b3AtbGVmdCBwb2ludCAodG8gYW5kIGZy
b20pCisgICAgbWVzaFswXSA9IDA7CisgICAgbWVzaFsxXSA9IDA7CisgICAgbWVzaFsyXSA9IE5T
TWluWChzY2FsZUZyYW1lKTsKKyAgICBtZXNoWzNdID0gTlNNaW5ZKHNjYWxlRnJhbWUpOworICAg
IAorICAgIC8vIHRvcC1yaWdodCBwb2ludCAodG8gYW5kIGZyb20pCisgICAgbWVzaFs0XSA9IE5T
V2lkdGgobm9uU2NhbGVkRnJhbWUpOworICAgIG1lc2hbNV0gPSAwOworICAgIG1lc2hbNl0gPSBO
U01heFgoc2NhbGVGcmFtZSk7CisgICAgbWVzaFs3XSA9IE5TTWluWShzY2FsZUZyYW1lKTsKKyAg
ICAKKyAgICAvLyBib3R0b20tbGVmdCAodG8gYW5kIGZyb20pCisgICAgbWVzaFs4XSA9IDA7Cisg
ICAgbWVzaFs5XSA9IE5TSGVpZ2h0KG5vblNjYWxlZEZyYW1lKTsKKyAgICBtZXNoWzEwXSA9IE5T
TWluWChzY2FsZUZyYW1lKTsKKyAgICBtZXNoWzExXSA9IE5TTWF4WShzY2FsZUZyYW1lKTsKKyAg
ICAKKyAgICAvLyBib3R0b20tcmlnaHQgKHRvIGFuZCBmcm9tKQorICAgIG1lc2hbMTJdID0gTlNX
aWR0aChub25TY2FsZWRGcmFtZSk7CisgICAgbWVzaFsxM10gPSBOU0hlaWdodChub25TY2FsZWRG
cmFtZSk7CisgICAgbWVzaFsxNF0gPSBOU01heFgoc2NhbGVGcmFtZSk7CisgICAgbWVzaFsxNV0g
PSBOU01heFkoc2NhbGVGcmFtZSk7CisgICAgCisgICAgLy8gQXBwbHkgdGhlIHdhcnAuCisgICAg
Q0dTU2V0V2luZG93V2FycChtYWluV2luZG93U2VydmVyQ29ubmVjdGlvbklEKCksIFt3aW5kb3cg
d2luZG93TnVtYmVyXSwgMiwgMiwgbWVzaCk7Cit9CisKIC0gKHZvaWQpc2V0Q3VycmVudFByb2dy
ZXNzOihOU0FuaW1hdGlvblByb2dyZXNzKXByb2dyZXNzCiB7CiAgICAgaWYgKCFfd2luZG93KQpA
QCAtMTE3LDcgKzE3MSw3IEBAIC0gKHZvaWQpc2V0Q3VycmVudFByb2dyZXNzOihOU0FuaW1hdGlv
blByb2dyZXNzKXByb2dyZXNzCiAgICAgW3N1cGVyIHNldEN1cnJlbnRQcm9ncmVzczpwcm9ncmVz
c107CiAKICAgICBOU1JlY3QgY3VycmVudFJlY3QgPSBbc2VsZiBjdXJyZW50RnJhbWVdOwotICAg
IHdrV2luZG93U2V0U2NhbGVkRnJhbWUoX3dpbmRvdywgY3VycmVudFJlY3QsIF9yZWFsRnJhbWUp
OworICAgIHNldFNjYWxlZEZyYW1lRm9yV2luZG93KF93aW5kb3csIGN1cnJlbnRSZWN0LCBfcmVh
bEZyYW1lKTsKICAgICBbX3N1YkFuaW1hdGlvbiBzZXRDdXJyZW50UHJvZ3Jlc3M6cHJvZ3Jlc3Nd
OwogfQogCkBAIC0yMTEsNyArMjY1LDcgQEAgLSAodm9pZClzZXRDdXJyZW50UHJvZ3Jlc3M6KE5T
QW5pbWF0aW9uUHJvZ3Jlc3MpcHJvZ3Jlc3MKICAgICBBU1NFUlQoX3dpbmRvdyk7CiAgICAgW3N1
cGVyIHNldEN1cnJlbnRQcm9ncmVzczpwcm9ncmVzc107CiAKLSAgICB3a1dpbmRvd1NldEFscGhh
KF93aW5kb3csIFtzZWxmIGN1cnJlbnRBbHBoYV0pOworICAgIENHU1NldFdpbmRvd0FscGhhKG1h
aW5XaW5kb3dTZXJ2ZXJDb25uZWN0aW9uSUQoKSwgX3dpbmRvdy53aW5kb3dOdW1iZXIsIFtzZWxm
IGN1cnJlbnRBbHBoYV0pOwogfQogCiAtICh2b2lkKXNldFdpbmRvdzooTlNXaW5kb3cqKXdpbmRv
dwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL21hYy9QbHVnaW5Qcm9j
ZXNzTWFjLm1tIGIvU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL21hYy9QbHVnaW5Qcm9jZXNz
TWFjLm1tCmluZGV4IGRkNTMzNzAyNDdmMGE2Yjc0YTAxYmZjYzhhYTk2ZmE2ZmZmMzQ0MTguLjdm
ZjFiYzk3YjI5NDdmZmE0ODk5ZGRmMzkzZmMwOTQ5NDlhNTc1YzMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9tYWMvUGx1Z2luUHJvY2Vzc01hYy5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvbWFjL1BsdWdpblByb2Nlc3NNYWMubW0KQEAgLTUzMCw3
ICs1MzAsMTAgQEAgdm9pZCBQbHVnaW5Qcm9jZXNzOjpwbGF0Zm9ybUluaXRpYWxpemVQcm9jZXNz
KGNvbnN0IENoaWxkUHJvY2Vzc0luaXRpYWxpemF0aW9uUGEKIAogICAgIC8vIEZJWE1FOiBJdCB3
b3VsZCBiZSBiZXR0ZXIgdG8gcHJveHkgU2V0Q3Vyc29yIGNhbGxzIG92ZXIgdG8gdGhlIFVJIHBy
b2Nlc3MgaW5zdGVhZCBvZgogICAgIC8vIGFsbG93aW5nIHBsdWctaW5zIHRvIGNoYW5nZSB0aGUg
bW91c2UgY3Vyc29yIGF0IGFueSB0aW1lLgotICAgIFdLRW5hYmxlU2V0dGluZ0N1cnNvcldoZW5J
bkJhY2tncm91bmQoKTsKKyAgICAvLyBGSVhNRTogU2V0c0N1cnNvckluQmFja2dyb3VuZCBjb25u
ZWN0aW9uIHByb3BlcnR5IGlzIGRlcHJlY2F0ZWQgaW4gZmF2b3Igb2Yga0NHU1NldHNDdXJzb3JJ
bkJhY2tncm91bmRUYWdCaXQgd2luZG93IHRhZyBiaXQuCisgICAgLy8gPHJkYXI6Ly9wcm9ibGVt
Lzc3NTI0MjI+IGFza3MgZm9yIGFuIEFQSSB0byBzZXQgY3Vyc29yIGZyb20gYmFja2dyb3VuZCBw
cm9jZXNzZXMuCisgICAgQ0dTQ29ubmVjdGlvbklEIGNpZCA9IENHU01haW5Db25uZWN0aW9uSUQo
KTsKKyAgICBDR1NTZXRDb25uZWN0aW9uUHJvcGVydHkoY2lkLCBjaWQsIENGU1RSKCJTZXRzQ3Vy
c29ySW5CYWNrZ3JvdW5kIiksIChDRlR5cGVSZWYpa0NGQm9vbGVhblRydWUpOwogCiAgICAgUmV0
YWluUHRyPENGVVJMUmVmPiBwbHVnaW5VUkwgPSBhZG9wdENGKENGVVJMQ3JlYXRlV2l0aEZpbGVT
eXN0ZW1QYXRoKDAsIG1fcGx1Z2luUGF0aC5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBrQ0ZVUkxQ
T1NJWFBhdGhTdHlsZSwgZmFsc2UpKTsKICAgICBpZiAoIXBsdWdpblVSTCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XaW5kb3dTZXJ2ZXJDb25uZWN0aW9uLmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2luZG93U2VydmVyQ29ubmVjdGlvbi5oCmluZGV4
IDgzOGEzNGZiNWMyZDQ0ZWVlNTQ2NGU1N2VkYzcwZTEwYWRiZDNiMjAuLmU3YjUxOGM2YzVlYjBi
MDYyZDg5YTkxY2E3MDU3N2JhODRlYjA1MTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL21hYy9XaW5kb3dTZXJ2ZXJDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvbWFjL1dpbmRvd1NlcnZlckNvbm5lY3Rpb24uaApAQCAtNDEsOSArNDEsNiBAQCBw
cml2YXRlOgogICAgIHZvaWQgd2luZG93U2VydmVyQ29ubmVjdGlvblN0YXRlQ2hhbmdlZCgpOwog
CiAgICAgdm9pZCBhcHBsaWNhdGlvbldpbmRvd01vZGlmaWNhdGlvbnNTdG9wcGVkKGJvb2wgc3Rv
cHBlZCk7Ci0KLSAgICBzdGF0aWMgdm9pZCBhcHBsaWNhdGlvbldpbmRvd01vZGlmaWNhdGlvbnNT
dGFydGVkKHVpbnQzMl90LCB2b2lkKiwgdWludDMyX3QsIHZvaWQqLCB1aW50MzJfdCk7Ci0gICAg
c3RhdGljIHZvaWQgYXBwbGljYXRpb25XaW5kb3dNb2RpZmljYXRpb25zU3RvcHBlZCh1aW50MzJf
dCwgdm9pZCosIHVpbnQzMl90LCB2b2lkKiwgdWludDMyX3QpOwogI2VuZGlmCiAKICAgICBib29s
IG1fYXBwbGljYXRpb25XaW5kb3dNb2RpZmljYXRpb25zSGF2ZVN0b3BwZWQ7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2luZG93U2VydmVyQ29ubmVjdGlvbi5tbSBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XaW5kb3dTZXJ2ZXJDb25uZWN0aW9uLm1tCmlu
ZGV4IDgxOTUzNWMyYWMxMjljOGQ1MjEyMThjOTc1NWM4NGI2MWQ0NGYyODUuLmM5NzU1ZDcyMmE1
ZGMzNTJmM2FhMTJlNDA4Nzk1MDBjZTI5NDMzYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL21hYy9XaW5kb3dTZXJ2ZXJDb25uZWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL21hYy9XaW5kb3dTZXJ2ZXJDb25uZWN0aW9uLm1tCkBAIC00MSwxNiArNDEs
NiBAQCB2b2lkIFdpbmRvd1NlcnZlckNvbm5lY3Rpb246OmFwcGxpY2F0aW9uV2luZG93TW9kaWZp
Y2F0aW9uc1N0b3BwZWQoYm9vbCBzdG9wcGVkKQogICAgIHdpbmRvd1NlcnZlckNvbm5lY3Rpb25T
dGF0ZUNoYW5nZWQoKTsKIH0KIAotdm9pZCBXaW5kb3dTZXJ2ZXJDb25uZWN0aW9uOjphcHBsaWNh
dGlvbldpbmRvd01vZGlmaWNhdGlvbnNTdGFydGVkKHVpbnQzMl90LCB2b2lkKiwgdWludDMyX3Qs
IHZvaWQqLCB1aW50MzJfdCkKLXsKLSAgICBXaW5kb3dTZXJ2ZXJDb25uZWN0aW9uOjpzaW5nbGV0
b24oKS5hcHBsaWNhdGlvbldpbmRvd01vZGlmaWNhdGlvbnNTdG9wcGVkKGZhbHNlKTsKLX0KLQot
dm9pZCBXaW5kb3dTZXJ2ZXJDb25uZWN0aW9uOjphcHBsaWNhdGlvbldpbmRvd01vZGlmaWNhdGlv
bnNTdG9wcGVkKHVpbnQzMl90LCB2b2lkKiwgdWludDMyX3QsIHZvaWQqLCB1aW50MzJfdCkKLXsK
LSAgICBXaW5kb3dTZXJ2ZXJDb25uZWN0aW9uOjpzaW5nbGV0b24oKS5hcHBsaWNhdGlvbldpbmRv
d01vZGlmaWNhdGlvbnNTdG9wcGVkKHRydWUpOwotfQotCiB2b2lkIFdpbmRvd1NlcnZlckNvbm5l
Y3Rpb246OndpbmRvd1NlcnZlckNvbm5lY3Rpb25TdGF0ZUNoYW5nZWQoKQogewogICAgIGZvciAo
YXV0byogcHJvY2Vzc1Bvb2wgOiBXZWJQcm9jZXNzUG9vbDo6YWxsUHJvY2Vzc1Bvb2xzKCkpCkBA
IC02NSwyMyArNTUsNDYgQEAgV2luZG93U2VydmVyQ29ubmVjdGlvbiYgV2luZG93U2VydmVyQ29u
bmVjdGlvbjo6c2luZ2xldG9uKCkKICAgICByZXR1cm4gd2luZG93U2VydmVyQ29ubmVjdGlvbjsK
IH0KIAorc3RhdGljIGJvb2wgcmVnaXN0ZXJPY2NsdXNpb25Ob3RpZmljYXRpb25IYW5kbGVyKENH
U05vdGlmaWNhdGlvblR5cGUgdHlwZSwgQ0dTTm90aWZ5Q29ubmVjdGlvblByb2NQdHIgaGFuZGxl
cikKK3sKKyAgICBDR1NDb25uZWN0aW9uSUQgbWFpbkNvbm5lY3Rpb24gPSBDR1NNYWluQ29ubmVj
dGlvbklEKCk7CisgICAgc3RhdGljIGJvb2wgbm90aWZpY2F0aW9uc0VuYWJsZWQ7CisgICAgaWYg
KCFub3RpZmljYXRpb25zRW5hYmxlZCkgeworICAgICAgICBpZiAoQ0dTUGFja2FnZXNFbmFibGVD
b25uZWN0aW9uT2NjbHVzaW9uTm90aWZpY2F0aW9ucyhtYWluQ29ubmVjdGlvbiwgdHJ1ZSwgbnVs
bHB0cikgIT0ga0NHRXJyb3JTdWNjZXNzKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
ICAgICBpZiAoQ0dTUGFja2FnZXNFbmFibGVDb25uZWN0aW9uV2luZG93TW9kaWZpY2F0aW9uTm90
aWZpY2F0aW9ucyhtYWluQ29ubmVjdGlvbiwgdHJ1ZSwgbnVsbHB0cikgIT0ga0NHRXJyb3JTdWNj
ZXNzKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBub3RpZmljYXRpb25zRW5h
YmxlZCA9IHRydWU7CisgICAgfQorCisgICAgcmV0dXJuIENHU1JlZ2lzdGVyQ29ubmVjdGlvbk5v
dGlmeVByb2MobWFpbkNvbm5lY3Rpb24sIGhhbmRsZXIsIHR5cGUsIG51bGxwdHIpID09IGtDR0Vy
cm9yU3VjY2VzczsKK30KKwogV2luZG93U2VydmVyQ29ubmVjdGlvbjo6V2luZG93U2VydmVyQ29u
bmVjdGlvbigpCiAgICAgOiBtX2FwcGxpY2F0aW9uV2luZG93TW9kaWZpY2F0aW9uc0hhdmVTdG9w
cGVkKGZhbHNlKQogewogI2lmIEhBVkUoV0lORE9XX1NFUlZFUl9PQ0NMVVNJT05fTk9USUZJQ0FU
SU9OUykKICAgICBzdHJ1Y3QgT2NjbHVzaW9uTm90aWZpY2F0aW9uSGFuZGxlciB7Ci0gICAgICAg
IFdLT2NjbHVzaW9uTm90aWZpY2F0aW9uVHlwZSBub3RpZmljYXRpb25UeXBlOwotICAgICAgICBX
S09jY2x1c2lvbk5vdGlmaWNhdGlvbkhhbmRsZXIgaGFuZGxlcjsKKyAgICAgICAgQ0dTTm90aWZp
Y2F0aW9uVHlwZSBub3RpZmljYXRpb25UeXBlOworICAgICAgICBDR1NOb3RpZnlDb25uZWN0aW9u
UHJvY1B0ciBoYW5kbGVyOwogICAgICAgICBjb25zdCBjaGFyKiBuYW1lOwogICAgIH07CiAKKyAg
ICBzdGF0aWMgYXV0byB3aW5kb3dNb2RpZmljYXRpb25zU3RhcnRlZCA9IFtdKENHU05vdGlmaWNh
dGlvblR5cGUsIHZvaWQqLCB1aW50MzJfdCwgdm9pZCosIENHU0Nvbm5lY3Rpb25JRCkgeworICAg
ICAgICBXaW5kb3dTZXJ2ZXJDb25uZWN0aW9uOjpzaW5nbGV0b24oKS5hcHBsaWNhdGlvbldpbmRv
d01vZGlmaWNhdGlvbnNTdG9wcGVkKGZhbHNlKTsKKyAgICB9OworCisgICAgc3RhdGljIGF1dG8g
d2luZG93TW9kaWZpY2F0aW9uc1N0b3BwZWQgPSBbXShDR1NOb3RpZmljYXRpb25UeXBlLCB2b2lk
KiwgdWludDMyX3QsIHZvaWQqLCBDR1NDb25uZWN0aW9uSUQpIHsKKyAgICAgICAgV2luZG93U2Vy
dmVyQ29ubmVjdGlvbjo6c2luZ2xldG9uKCkuYXBwbGljYXRpb25XaW5kb3dNb2RpZmljYXRpb25z
U3RvcHBlZCh0cnVlKTsKKyAgICB9OworCiAgICAgc3RhdGljIGNvbnN0IE9jY2x1c2lvbk5vdGlm
aWNhdGlvbkhhbmRsZXIgb2NjbHVzaW9uTm90aWZpY2F0aW9uSGFuZGxlcnNbXSA9IHsKLSAgICAg
ICAgeyBXS09jY2x1c2lvbk5vdGlmaWNhdGlvblR5cGVBcHBsaWNhdGlvbldpbmRvd01vZGlmaWNh
dGlvbnNTdGFydGVkLCBhcHBsaWNhdGlvbldpbmRvd01vZGlmaWNhdGlvbnNTdGFydGVkLCAiQXBw
bGljYXRpb24gV2luZG93IE1vZGlmaWNhdGlvbnMgU3RhcnRlZCIgfSwKLSAgICAgICAgeyBXS09j
Y2x1c2lvbk5vdGlmaWNhdGlvblR5cGVBcHBsaWNhdGlvbldpbmRvd01vZGlmaWNhdGlvbnNTdG9w
cGVkLCBhcHBsaWNhdGlvbldpbmRvd01vZGlmaWNhdGlvbnNTdG9wcGVkLCAiQXBwbGljYXRpb24g
V2luZG93IE1vZGlmaWNhdGlvbnMgU3RvcHBlZCIgfSwKKyAgICAgICAgeyBrQ0dTQ29ubmVjdGlv
bldpbmRvd01vZGlmaWNhdGlvbnNTdGFydGVkLCB3aW5kb3dNb2RpZmljYXRpb25zU3RhcnRlZCwg
IkFwcGxpY2F0aW9uIFdpbmRvdyBNb2RpZmljYXRpb25zIFN0YXJ0ZWQiIH0sCisgICAgICAgIHsg
a0NHU0Nvbm5lY3Rpb25XaW5kb3dNb2RpZmljYXRpb25zU3RvcHBlZCwgd2luZG93TW9kaWZpY2F0
aW9uc1N0b3BwZWQsICJBcHBsaWNhdGlvbiBXaW5kb3cgTW9kaWZpY2F0aW9ucyBTdG9wcGVkIiB9
LAogICAgIH07CiAKICAgICBmb3IgKGNvbnN0IGF1dG8mIG9jY2x1c2lvbk5vdGlmaWNhdGlvbkhh
bmRsZXIgOiBvY2NsdXNpb25Ob3RpZmljYXRpb25IYW5kbGVycykgewotICAgICAgICBib29sIHJl
c3VsdCA9IFdLUmVnaXN0ZXJPY2NsdXNpb25Ob3RpZmljYXRpb25IYW5kbGVyKG9jY2x1c2lvbk5v
dGlmaWNhdGlvbkhhbmRsZXIubm90aWZpY2F0aW9uVHlwZSwgb2NjbHVzaW9uTm90aWZpY2F0aW9u
SGFuZGxlci5oYW5kbGVyKTsKKyAgICAgICAgYm9vbCByZXN1bHQgPSByZWdpc3Rlck9jY2x1c2lv
bk5vdGlmaWNhdGlvbkhhbmRsZXIob2NjbHVzaW9uTm90aWZpY2F0aW9uSGFuZGxlci5ub3RpZmlj
YXRpb25UeXBlLCBvY2NsdXNpb25Ob3RpZmljYXRpb25IYW5kbGVyLmhhbmRsZXIpOwogICAgICAg
ICBVTlVTRURfUEFSQU0ocmVzdWx0KTsKICAgICAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShyZXN1
bHQsICJSZWdpc3RyYXRpb24gb2YgXCIlc1wiIG5vdGlmaWNhdGlvbiBoYW5kbGVyIGZhaWxlZC5c
biIsIG9jY2x1c2lvbk5vdGlmaWNhdGlvbkhhbmRsZXIubmFtZSk7CiAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJTeXN0ZW1J
bnRlcmZhY2UubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFj
L1dlYlN5c3RlbUludGVyZmFjZS5tbQppbmRleCA0NGRjN2VjYjM2MjBlOGY0NTE0MmViMzdjNzg3
NWFkY2IzYjk0MTJiLi44M2RkODNlNDM0ZGJkMzQ5NTM0M2FlNzEwMTkyNDkzMmQ4ZmJhNTIyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dl
YlN5c3RlbUludGVyZmFjZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvbWFjL1dlYlN5c3RlbUludGVyZmFjZS5tbQpAQCAtMzcsMjEgKzM3LDExIEBAIHZv
aWQgSW5pdFdlYkNvcmVTeXN0ZW1JbnRlcmZhY2Uodm9pZCkKICAgICAKICAgICBkaXNwYXRjaF9v
bmNlKCZpbml0T25jZSwgXnsKICAgICAgICAgSU5JVChDQUxheWVyRW51bWVyYXRlUmVjdHNCZWlu
Z0RyYXduV2l0aEJsb2NrKTsKLSAgICAgICAgSU5JVChDR1BhdHRlcm5DcmVhdGVXaXRoSW1hZ2VB
bmRUcmFuc2Zvcm0pOwotI2lmICFQTEFURk9STShJT1MpCi0gICAgICAgIElOSVQoQ0dDb250ZXh0
RHJhd3NXaXRoQ29ycmVjdFNoYWRvd09mZnNldHMpOwotI2VuZGlmCiAgICAgICAgIElOSVQoQ29w
eUNPTk5FQ1RQcm94eVJlc3BvbnNlKTsKICNpZiAhUExBVEZPUk0oSU9TKQogICAgICAgICBJTklU
KERyYXdCZXplbGVkVGV4dEFyZWEpOwotICAgICAgICBJTklUKERyYXdGb2N1c1JpbmcpOwotICAg
ICAgICBJTklUKERyYXdGb2N1c1JpbmdBdFRpbWUpOwotICAgICAgICBJTklUKERyYXdDZWxsRm9j
dXNSaW5nV2l0aEZyYW1lQXRUaW1lKTsKICAgICAgICAgSU5JVChEcmF3TWVkaWFTbGlkZXJUcmFj
ayk7CiAgICAgICAgIElOSVQoRHJhd01lZGlhVUlQYXJ0KTsKLSNlbmRpZgotICAgICAgICBJTklU
KENHQ29udGV4dElzUERGQ29udGV4dCk7Ci0jaWYgIVBMQVRGT1JNKElPUykKICAgICAgICAgSU5J
VChHZXRXaGVlbEV2ZW50RGVsdGFzKTsKICAgICAgICAgSU5JVChHZXROU0V2ZW50S2V5Q2hhcik7
CiAgICAgICAgIElOSVQoSGl0VGVzdE1lZGlhVUlQYXJ0KTsKQEAgLTcxLDE2ICs2MSwxMSBAQCB2
b2lkIEluaXRXZWJDb3JlU3lzdGVtSW50ZXJmYWNlKHZvaWQpCiAjZW5kaWYKICAgICAgICAgSU5J
VChTZXRDT05ORUNUUHJveHlBdXRob3JpemF0aW9uRm9yU3RyZWFtKTsKICAgICAgICAgSU5JVChT
ZXRDT05ORUNUUHJveHlGb3JTdHJlYW0pOwotI2lmICFQTEFURk9STShJT1MpCi0gICAgICAgIElO
SVQoU2V0RHJhZ0ltYWdlKTsKLSNlbmRpZgogCiAjaWYgIVBMQVRGT1JNKElPUykKICAgICAgICAg
SU5JVChFeGVjdXRhYmxlV2FzTGlua2VkT25PckJlZm9yZVNub3dMZW9wYXJkKTsKICAgICAgICAg
SU5JVChDb3B5RGVmYXVsdFNlYXJjaFByb3ZpZGVyRGlzcGxheU5hbWUpOwogICAgICAgICBJTklU
KEN1cnNvcik7Ci0gICAgICAgIElOSVQoV2luZG93U2V0U2NhbGVkRnJhbWUpOwotICAgICAgICBJ
TklUKFdpbmRvd1NldEFscGhhKTsKICAgICAgICAgSU5JVChTcGVlY2hTeW50aGVzaXNHZXRWb2lj
ZUlkZW50aWZpZXJzKTsKICAgICAgICAgSU5JVChTcGVlY2hTeW50aGVzaXNHZXREZWZhdWx0Vm9p
Y2VJZGVudGlmaWVyRm9yTG9jYWxlKTsKICAgICAgICAgSU5JVChOU0VsYXN0aWNEZWx0YUZvclRp
bWVEZWx0YSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DYXJib24vSElX
ZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2FyYm9uL0hJV2ViVmlldy5tbQpp
bmRleCAzNDU4NWMyNTJjM2IxOGNhY2Q2ZTA3YWQ1ZTk0NDg3NzlkOGJlNDU3Li5hOWY2ZWFlZDcy
MDM4ODQ3M2VlMzZhYTAxZGIxZDliMzQzMWQ2ZTA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9DYXJib24vSElXZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0NhcmJvbi9ISVdlYlZpZXcubW0KQEAgLTg1LDYgKzg1LDIxIEBAIC0gKGludCl0YWcKIAog
QGVuZAogCitAaW50ZXJmYWNlIE5TV2luZG93R3JhcGhpY3NDb250ZXh0ICgpCistICh2b2lkKV93
ZWJfc2V0R3JhcGhpY3NQb3J0OihDR0NvbnRleHRSZWYpY29udGV4dDsKK0BlbmQKKworQGltcGxl
bWVudGF0aW9uIE5TV2luZG93R3JhcGhpY3NDb250ZXh0ICgpCisKKy0gKHZvaWQpX3dlYl9zZXRH
cmFwaGljc1BvcnQ6KENHQ29udGV4dFJlZiljb250ZXh0Cit7CisgICAgQ0dDb250ZXh0UmV0YWlu
KGNvbnRleHQpOworICAgIENHQ29udGV4dFJlbGVhc2UoX2Nnc0NvbnRleHQpOworICAgIF9jZ3ND
b250ZXh0ID0gY29udGV4dDsKK30KKworQGVuZAorCiBzdHJ1Y3QgSElXZWJWaWV3CiB7CiAgICAg
SElWaWV3UmVmCQkJCQkJCWZWaWV3UmVmOwpAQCAtMjkwLDYgKzMwNSwyMiBAQCBHZXRCZWhhdmlv
cnMoKQogCXJldHVybiBrQ29udHJvbFN1cHBvcnRzRGF0YUFjY2VzcyB8IGtDb250cm9sU3VwcG9y
dHNHZXRSZWdpb24gfCBrQ29udHJvbEdldHNGb2N1c09uQ2xpY2s7CiB9CiAKK3N0YXRpYyBDR0Nv
bnRleHRSZWYgb3ZlcnJpZGVDR0NvbnRleHQoTlNXaW5kb3cgKndpbmRvdywgQ0dDb250ZXh0UmVm
IGNvbnRleHQpCit7CisgICAgTlNXaW5kb3dHcmFwaGljc0NvbnRleHQgKmdyYXBoaWNzQ29udGV4
dCA9IChOU1dpbmRvd0dyYXBoaWNzQ29udGV4dCAqKVt3aW5kb3cgZ3JhcGhpY3NDb250ZXh0XTsK
KyAgICBDR0NvbnRleHRSZWYgc2F2ZWRDb250ZXh0ID0gKENHQ29udGV4dFJlZilbZ3JhcGhpY3ND
b250ZXh0IGdyYXBoaWNzUG9ydF07CisgICAgQ0dDb250ZXh0UmV0YWluKHNhdmVkQ29udGV4dCk7
CisgICAgW2dyYXBoaWNzQ29udGV4dCBfd2ViX3NldEdyYXBoaWNzUG9ydDpjb250ZXh0XTsKKyAg
ICByZXR1cm4gc2F2ZWRDb250ZXh0OworfQorCitzdGF0aWMgdm9pZCByZXN0b3JlQ0dDb250ZXh0
KE5TV2luZG93ICp3aW5kb3csIENHQ29udGV4dFJlZiBzYXZlZENvbnRleHQpCit7CisgICAgTlNX
aW5kb3dHcmFwaGljc0NvbnRleHQgKmdyYXBoaWNzQ29udGV4dCA9IChOU1dpbmRvd0dyYXBoaWNz
Q29udGV4dCAqKVt3aW5kb3cgZ3JhcGhpY3NDb250ZXh0XTsKKyAgICBbZ3JhcGhpY3NDb250ZXh0
IF93ZWJfc2V0R3JhcGhpY3NQb3J0OnNhdmVkQ29udGV4dF07CisgICAgQ0dDb250ZXh0UmVsZWFz
ZShzYXZlZENvbnRleHQpOworfQorCiAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIC8vIERy
YXcKIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtMzIxLDcgKzM1Miw3IEBAIERyYXco
IEhJV2ViVmlldyogaW5WaWV3LCBSZ25IYW5kbGUgbGltaXRSZ24sIENHQ29udGV4dFJlZiBpbkNv
bnRleHQgKQogCiAJSElWaWV3R2V0Qm91bmRzKCBpblZpZXctPmZWaWV3UmVmLCAmYm91bmRzICk7
CiAKLSAgICBDR0NvbnRleHRSZWYgc2F2ZWRDb250ZXh0ID0gV0tOU1dpbmRvd092ZXJyaWRlQ0dD
b250ZXh0KGluVmlldy0+ZktpdFdpbmRvdywgaW5Db250ZXh0KTsKKyAgICBDR0NvbnRleHRSZWYg
c2F2ZWRDb250ZXh0ID0gb3ZlcnJpZGVDR0NvbnRleHQoaW5WaWV3LT5mS2l0V2luZG93LCBpbkNv
bnRleHQpOwogICAgIFtOU0dyYXBoaWNzQ29udGV4dCBzZXRDdXJyZW50Q29udGV4dDpbaW5WaWV3
LT5mS2l0V2luZG93IGdyYXBoaWNzQ29udGV4dF1dOwogCiAJR2V0UmVnaW9uQm91bmRzKCBsaW1p
dFJnbiwgJmRyYXdSZWN0ICk7CkBAIC0zNTEsNyArMzgyLDcgQEAgRHJhdyggSElXZWJWaWV3KiBp
blZpZXcsIFJnbkhhbmRsZSBsaW1pdFJnbiwgQ0dDb250ZXh0UmVmIGluQ29udGV4dCApCiAgICAg
ZWxzZQogICAgICAgICBbaW5WaWV3LT5mV2ViVmlldyBkaXNwbGF5UmVjdDoqKE5TUmVjdCopJmhp
UmVjdF07CiAKLSAgICBXS05TV2luZG93UmVzdG9yZUNHQ29udGV4dChpblZpZXctPmZLaXRXaW5k
b3csIHNhdmVkQ29udGV4dCk7CisgICAgcmVzdG9yZUNHQ29udGV4dChpblZpZXctPmZLaXRXaW5k
b3csIHNhdmVkQ29udGV4dCk7CiAKICAgICBpZiAoICFpblZpZXctPmZJc0NvbXBvc2l0ZWQgKQog
ICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVk
L1dlYkhvc3RlZE5ldHNjYXBlUGx1Z2luVmlldy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1BsdWdpbnMvSG9zdGVkL1dlYkhvc3RlZE5ldHNjYXBlUGx1Z2luVmlldy5tbQppbmRleCA5ZTIw
NDRlMjZlMTM5MDIxZWI4Y2E2MzM2MjU1ZjJjODMzYzFiOGIyLi42OTVhNWNmNTI3MzczZDMwOWE4
M2I2NGQ2ZjFkMDEwMGVkM2E0MDhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9QbHVnaW5zL0hvc3RlZC9XZWJIb3N0ZWROZXRzY2FwZVBsdWdpblZpZXcubW0KKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvV2ViSG9zdGVkTmV0c2NhcGVQbHVn
aW5WaWV3Lm1tCkBAIC03Niw3ICs3Niw3IEBAICsgKHZvaWQpaW5pdGlhbGl6ZQogICAgIFdURjo6
aW5pdGlhbGl6ZU1haW5UaHJlYWRUb1Byb2Nlc3NNYWluVGhyZWFkKCk7CiAgICAgUnVuTG9vcDo6
aW5pdGlhbGl6ZU1haW5SdW5Mb29wKCk7CiAjZW5kaWYKLSAgICBXS1NlbmRVc2VyQ2hhbmdlTm90
aWZpY2F0aW9ucygpOworICAgIHNlbmRVc2VyQ2hhbmdlTm90aWZpY2F0aW9ucygpOwogfQogCiAt
IChpZClpbml0V2l0aEZyYW1lOihOU1JlY3QpZnJhbWUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViQmFzZU5ldHNjYXBlUGx1Z2luVmlldy5oIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJCYXNlTmV0c2NhcGVQbHVnaW5WaWV3LmgKaW5k
ZXggYzIyMjNhYjZkMjY3NTFmMzhjMzg5NTgxYmQzNDlkZTk4MTRjMTViMS4uY2Q0MzBkMzY2OTcx
ZWM5ZmUyZWEwZDQ0MDU5M2I1ODBjOWNhMmUyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvUGx1Z2lucy9XZWJCYXNlTmV0c2NhcGVQbHVnaW5WaWV3LmgKKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJCYXNlTmV0c2NhcGVQbHVnaW5WaWV3LmgKQEAg
LTEzNCw2ICsxMzQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBuYW1lc3BhY2UgV2ViS2l0IHsK
IGJvb2wgZ2V0QXV0aGVudGljYXRpb25JbmZvKGNvbnN0IGNoYXIqIHByb3RvY29sU3RyLCBjb25z
dCBjaGFyKiBob3N0U3RyLCBpbnQzMl90IHBvcnQsIGNvbnN0IGNoYXIqIHNjaGVtZVN0ciwgY29u
c3QgY2hhciogcmVhbG1TdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBXVEY6OkNTdHJp
bmcmIHVzZXJuYW1lLCBXVEY6OkNTdHJpbmcmIHBhc3N3b3JkKTsKK3ZvaWQgc2VuZFVzZXJDaGFu
Z2VOb3RpZmljYXRpb25zKCk7CiB9IAogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViQmFzZU5ldHNjYXBlUGx1Z2luVmlldy5tbSBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViQmFzZU5ldHNjYXBlUGx1Z2luVmlldy5tbQpp
bmRleCA2NGRlOTAxMGViZGIwYjA2OWQ2Zjg2M2EzZmVmMmZmZDdiNWQ0MzM4Li5iZTFjMzBiM2Yz
MDlkYTY4NTVmM2NkMWQyN2FiNDcwODlhZWQyYzM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9QbHVnaW5zL1dlYkJhc2VOZXRzY2FwZVBsdWdpblZpZXcubW0KKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJCYXNlTmV0c2NhcGVQbHVnaW5WaWV3Lm1t
CkBAIC01NSw2ICs1NSw3IEBACiAjaW1wb3J0IDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmg+CiAj
aW1wb3J0IDxXZWJDb3JlL1dlYkNvcmVPYmpDRXh0cmFzLmg+CiAjaW1wb3J0IDxXZWJLaXRMZWdh
Y3kvRE9NUHJpdmF0ZS5oPgorI2ltcG9ydCA8cGFsL3NwaS9jZy9Db3JlR3JhcGhpY3NTUEkuaD4K
ICNpbXBvcnQgPHJ1bnRpbWUvSW5pdGlhbGl6ZVRocmVhZGluZy5oPgogI2ltcG9ydCA8d3RmL0Fz
c2VydGlvbnMuaD4KICNpbXBvcnQgPHd0Zi9NYWluVGhyZWFkLmg+CkBAIC03Myw3ICs3NCw3IEBA
ICsgKHZvaWQpaW5pdGlhbGl6ZQogICAgIEpTQzo6aW5pdGlhbGl6ZVRocmVhZGluZygpOwogICAg
IFdURjo6aW5pdGlhbGl6ZU1haW5UaHJlYWRUb1Byb2Nlc3NNYWluVGhyZWFkKCk7CiAgICAgUnVu
TG9vcDo6aW5pdGlhbGl6ZU1haW5SdW5Mb29wKCk7Ci0gICAgV0tTZW5kVXNlckNoYW5nZU5vdGlm
aWNhdGlvbnMoKTsKKyAgICBXZWJLaXQ6OnNlbmRVc2VyQ2hhbmdlTm90aWZpY2F0aW9ucygpOwog
fQogCiAtIChpZClpbml0V2l0aEZyYW1lOihOU1JlY3QpZnJhbWUKQEAgLTkwMCw2ICs5MDEsMjMg
QEAgYm9vbCBnZXRBdXRoZW50aWNhdGlvbkluZm8oY29uc3QgY2hhciogcHJvdG9jb2xTdHIsIGNv
bnN0IGNoYXIqIGhvc3RTdHIsIGludDMyX3QKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAordm9pZCBz
ZW5kVXNlckNoYW5nZU5vdGlmaWNhdGlvbnMoKQoreworICAgIGF1dG8gY29uc29sZUNvbm5lY3Rp
b25DaGFuZ2VOb3RpZnlQcm9jID0gW10oQ0dTTm90aWZpY2F0aW9uVHlwZSB0eXBlLCBDR1NOb3Rp
ZmljYXRpb25EYXRhLCBDR1NCeXRlQ291bnQsIENHU05vdGlmaWNhdGlvbkFyZykgeworICAgICAg
ICBOU1N0cmluZyAqbm90aWZpY2F0aW9uTmFtZSA9IG5pbDsKKyAgICAgICAgaWYgKHR5cGUgPT0g
a0NHU2Vzc2lvbkNvbnNvbGVDb25uZWN0KQorICAgICAgICAgICAgbm90aWZpY2F0aW9uTmFtZSA9
IExvZ2luV2luZG93RGlkU3dpdGNoVG9Vc2VyTm90aWZpY2F0aW9uOworICAgICAgICBlbHNlIGlm
ICh0eXBlID09IGtDR1Nlc3Npb25Db25zb2xlRGlzY29ubmVjdCkKKyAgICAgICAgICAgIG5vdGlm
aWNhdGlvbk5hbWUgPSBMb2dpbldpbmRvd0RpZFN3aXRjaEZyb21Vc2VyTm90aWZpY2F0aW9uOwor
ICAgICAgICBlbHNlCisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAg
W1tOU05vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXSBwb3N0Tm90aWZpY2F0aW9uTmFt
ZTpub3RpZmljYXRpb25OYW1lIG9iamVjdDpuaWxdOworICAgIH07CisKKyAgICBDR1NSZWdpc3Rl
ck5vdGlmeVByb2MoY29uc29sZUNvbm5lY3Rpb25DaGFuZ2VOb3RpZnlQcm9jLCBrQ0dTZXNzaW9u
Q29uc29sZUNvbm5lY3QsIE5VTEwpOworICAgIENHU1JlZ2lzdGVyTm90aWZ5UHJvYyhjb25zb2xl
Q29ubmVjdGlvbkNoYW5nZU5vdGlmeVByb2MsIGtDR1Nlc3Npb25Db25zb2xlRGlzY29ubmVjdCwg
TlVMTCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8gIEVOQUJMRShO
RVRTQ0FQRV9QTFVHSU5fQVBJKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
UGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luVmlldy5tbQppbmRleCBjNjgwZmY3ZWUzMWM5M2I4
ZmI0OTIyOTdlNGU3YWQ5MTQxYTRkZGU0Li4yYmJkM2RlYmU2NmUxOGQ4ZjMxODBjOTRjYTEzMzdm
Y2Y3ZDg4MTcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dl
Yk5ldHNjYXBlUGx1Z2luVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVn
aW5zL1dlYk5ldHNjYXBlUGx1Z2luVmlldy5tbQpAQCAtMTkzLDcgKzE5Myw3IEBAICsgKHZvaWQp
aW5pdGlhbGl6ZQogICAgIEpTQzo6aW5pdGlhbGl6ZVRocmVhZGluZygpOwogICAgIFdURjo6aW5p
dGlhbGl6ZU1haW5UaHJlYWRUb1Byb2Nlc3NNYWluVGhyZWFkKCk7CiAgICAgUnVuTG9vcDo6aW5p
dGlhbGl6ZU1haW5SdW5Mb29wKCk7Ci0gICAgV0tTZW5kVXNlckNoYW5nZU5vdGlmaWNhdGlvbnMo
KTsKKyAgICBzZW5kVXNlckNoYW5nZU5vdGlmaWNhdGlvbnMoKTsKIH0KIAogLy8gTUFSSzogRVZF
TlRTCkBAIC0zNzksMTAgKzM3OSwxMCBAQCAtIChQb3J0U3RhdGUpc2F2ZUFuZFNldE5ld1BvcnRT
dGF0ZUZvclVwZGF0ZTooQk9PTClmb3JVcGRhdGUKICAgICAgICAgICAgIHFkUG9ydFN0YXRlLT5j
bGlwUmVnaW9uID0gY2xpcFJlZ2lvbjsKIAogICAgICAgICAgICAgQ0dDb250ZXh0UmVmIGN1cnJl
bnRDb250ZXh0ID0gKENHQ29udGV4dFJlZilbW05TR3JhcGhpY3NDb250ZXh0IGN1cnJlbnRDb250
ZXh0XSBncmFwaGljc1BvcnRdOwotICAgICAgICAgICAgaWYgKGN1cnJlbnRDb250ZXh0ICYmIFdL
Q0dDb250ZXh0SXNCaXRtYXBDb250ZXh0KGN1cnJlbnRDb250ZXh0KSkgewotICAgICAgICAgICAg
ICAgIC8vIFdlIHVzZSBXS0NHQ29udGV4dElzQml0bWFwQ29udGV4dCBoZXJlLCBiZWNhdXNlIGlm
IHdlIGp1c3QgY2FsbGVkIENHQml0bWFwQ29udGV4dEdldERhdGEKLSAgICAgICAgICAgICAgICAv
LyBvbiBhbnkgY29udGV4dCwgd2UnZCBsb2cgdG8gdGhlIGNvbnNvbGUgZXZlcnkgdGltZS4gQnV0
IGV2ZW4gaWYgV0tDR0NvbnRleHRJc0JpdG1hcENvbnRleHQKLSAgICAgICAgICAgICAgICAvLyBy
ZXR1cm5zIHRydWUsIGl0IHN0aWxsIG1pZ2h0IG5vdCBiZSBhIGNvbnRleHQgd2UgbmVlZCB0byBj
cmVhdGUgYSBHV29ybGQgZm9yOyBmb3IgZXhhbXBsZQorICAgICAgICAgICAgaWYgKGN1cnJlbnRD
b250ZXh0ICYmIENHQ29udGV4dEdldFR5cGUoY3VycmVudENvbnRleHQpID09IGtDR0NvbnRleHRU
eXBlQml0bWFwKSB7CisgICAgICAgICAgICAgICAgLy8gV2UgY2hlY2sgZm9yIGtDR0NvbnRleHRU
eXBlQml0bWFwIGhlcmUsIGJlY2F1c2UgaWYgd2UganVzdCBjYWxsZWQgQ0dCaXRtYXBDb250ZXh0
R2V0RGF0YQorICAgICAgICAgICAgICAgIC8vIG9uIGFueSBjb250ZXh0LCB3ZSdkIGxvZyB0byB0
aGUgY29uc29sZSBldmVyeSB0aW1lLiBCdXQgZXZlbiBpZiBjdXJyZW50Q29udGV4dCBpcyBhCisg
ICAgICAgICAgICAgICAgLy8ga0NHQ29udGV4dFR5cGVCaXRtYXAsIGl0IHN0aWxsIG1pZ2h0IG5v
dCBiZSBhIGNvbnRleHQgd2UgbmVlZCB0byBjcmVhdGUgYSBHV29ybGQgZm9yOyBmb3IgZXhhbXBs
ZQogICAgICAgICAgICAgICAgIC8vIHRyYW5zcGFyZW5jeSBsYXllcnMgd2lsbCByZXR1cm4gdHJ1
ZSwgYnV0IHJldHVybiAwIGZvciBDR0JpdG1hcENvbnRleHRHZXREYXRhLgogICAgICAgICAgICAg
ICAgIHZvaWQqIG9mZnNjcmVlbkRhdGEgPSBDR0JpdG1hcENvbnRleHRHZXREYXRhKGN1cnJlbnRD
b250ZXh0KTsKICAgICAgICAgICAgICAgICBpZiAob2Zmc2NyZWVuRGF0YSkgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViU3lzdGVtSW50ZXJm
YWNlLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViU3lzdGVt
SW50ZXJmYWNlLm1tCmluZGV4IGQ0NTUxNmY1ZWVlMWMwODJjOTgyOGQ5ZTc0NzRlYzk2ODljNDdi
NTguLjliZTAwMDJmZDUzZjQ5MzMzNGViMmM5OTkzMTFmYTgzOTQyZjdlM2YgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlN5c3RlbUludGVyZmFj
ZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJTeXN0
ZW1JbnRlcmZhY2UubW0KQEAgLTQzLDE2ICs0Myw5IEBAIHZvaWQgSW5pdFdlYkNvcmVTeXN0ZW1J
bnRlcmZhY2Uodm9pZCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgSU5JVChDQUxheWVyRW51bWVy
YXRlUmVjdHNCZWluZ0RyYXduV2l0aEJsb2NrKTsKLSAgICBJTklUKENHUGF0dGVybkNyZWF0ZVdp
dGhJbWFnZUFuZFRyYW5zZm9ybSk7Ci0jaWYgIVBMQVRGT1JNKElPUykKLSAgICBJTklUKENHQ29u
dGV4dERyYXdzV2l0aENvcnJlY3RTaGFkb3dPZmZzZXRzKTsKLSNlbmRpZgogICAgIElOSVQoQ29w
eUNPTk5FQ1RQcm94eVJlc3BvbnNlKTsKICNpZiAhUExBVEZPUk0oSU9TKQogICAgIElOSVQoRHJh
d0JlemVsZWRUZXh0QXJlYSk7Ci0gICAgSU5JVChEcmF3Rm9jdXNSaW5nKTsKLSAgICBJTklUKERy
YXdGb2N1c1JpbmdBdFRpbWUpOwotICAgIElOSVQoRHJhd0NlbGxGb2N1c1JpbmdXaXRoRnJhbWVB
dFRpbWUpOwogICAgIElOSVQoRHJhd01lZGlhVUlQYXJ0KTsKICAgICBJTklUKERyYXdNZWRpYVNs
aWRlclRyYWNrKTsKICAgICBJTklUKEdldFdoZWVsRXZlbnREZWx0YXMpOwpAQCAtNjEsMTUgKzU0
LDkgQEAgdm9pZCBJbml0V2ViQ29yZVN5c3RlbUludGVyZmFjZSh2b2lkKQogICAgIElOSVQoTWVh
c3VyZU1lZGlhVUlQYXJ0KTsKICAgICBJTklUKENyZWF0ZU1lZGlhVUlCYWNrZ3JvdW5kVmlldyk7
CiAgICAgSU5JVChDcmVhdGVNZWRpYVVJQ29udHJvbCk7Ci0gICAgSU5JVChXaW5kb3dTZXRBbHBo
YSk7Ci0gICAgSU5JVChXaW5kb3dTZXRTY2FsZWRGcmFtZSk7CiAjZW5kaWYKICAgICBJTklUKFNl
dENPTk5FQ1RQcm94eUF1dGhvcml6YXRpb25Gb3JTdHJlYW0pOwogICAgIElOSVQoU2V0Q09OTkVD
VFByb3h5Rm9yU3RyZWFtKTsKLSNpZiAhUExBVEZPUk0oSU9TKQotICAgIElOSVQoU2V0RHJhZ0lt
YWdlKTsKLSNlbmRpZgotICAgIElOSVQoQ0dDb250ZXh0SXNQREZDb250ZXh0KTsKICNpZiBFTkFC
TEUoVklERU8pICYmICFQTEFURk9STShJT1MpCiAgICAgSU5JVChRVEluY2x1ZGVPbmx5TW9kZXJu
TWVkaWFGaWxlVHlwZXMpOwogICAgIElOSVQoUVRNb3ZpZURpc2FibGVDb21wb25lbnQpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbSBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KaW5kZXggZjBmOGU2Mjg1
ODBiMjlmZTA0N2VkZGY2ZWI0NzU3OGM2ZDA1ZGQyZC4uZTcwOTNjOTZhYWM0NzRlM2FlZTllNzJk
MjNiMjRlYjFjNTg5YTJlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Vmlldy9XZWJGcmFtZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dl
YkZyYW1lLm1tCkBAIC01OTgsNyArNTk4LDcgQEAgLSAoUGFpbnRCZWhhdmlvcilfcGFpbnRCZWhh
dmlvckZvckRlc3RpbmF0aW9uQ29udGV4dDooQ0dDb250ZXh0UmVmKWNvbnRleHQKICAgICAgICAg
cmV0dXJuIFBhaW50QmVoYXZpb3JGbGF0dGVuQ29tcG9zaXRpbmdMYXllcnMgfCBQYWludEJlaGF2
aW9yU25hcHNob3R0aW5nOwogI2VuZGlmCiAKLSAgICBpZiAoIVdLQ0dDb250ZXh0SXNCaXRtYXBD
b250ZXh0KGNvbnRleHQpKQorICAgIGlmIChDR0NvbnRleHRHZXRUeXBlKGNvbnRleHQpICE9IGtD
R0NvbnRleHRUeXBlQml0bWFwKQogICAgICAgICByZXR1cm4gUGFpbnRCZWhhdmlvck5vcm1hbDsK
IAogICAgIC8vIElmIHdlJ3JlIGRyYXdpbmcgaW50byBhIGJpdG1hcCwgd2UgbWlnaHQgYmUgc25h
cHNob3R0aW5nLCBvciBkcmF3aW5nIGludG8gYSBsYXllci1iYWNrZWQgdmlldy4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnVsbFNjcmVlbkNvbnRyb2xs
ZXIubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZ1bGxTY3JlZW5Db250
cm9sbGVyLm1tCmluZGV4IGZkOGZjNTY5OTdhZmNiNmFkN2Y5MGM1ZmM5OTg0YmEzMTc2NmU5MDcu
LjQwNTNmZmM4NDY0YTM1YmI4NmFmYjY2NmUzY2VlN2VkY2FjZTVlZmIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnVsbFNjcmVlbkNvbnRyb2xsZXIubW0K
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGdWxsU2NyZWVuQ29udHJv
bGxlci5tbQpAQCAtMjQ5LDYgKzI0OSwxNiBAQCAtICh2b2lkKWVudGVyRnVsbFNjcmVlbjooTlNT
Y3JlZW4gKilzY3JlZW4KICAgICBfaXNFbnRlcmluZ0Z1bGxTY3JlZW4gPSB0cnVlOwogfQogCitz
dGF0aWMgdm9pZCBzZXRDbGlwUmVjdEZvcldpbmRvdyhOU1dpbmRvdyAqd2luZG93LCBOU1JlY3Qg
Y2xpcFJlY3QpCit7CisgICAgQ0dTV2luZG93SUQgd2luZG93TnVtYmVyID0gKENHU1dpbmRvd0lE
KVt3aW5kb3cgd2luZG93TnVtYmVyXTsKKyAgICBDR1NSZWdpb25PYmogc2hhcGU7CisgICAgQ0dS
ZWN0IGNnQ2xpcFJlY3QgPSBOU1JlY3RUb0NHUmVjdChjbGlwUmVjdCk7CisgICAgQ0dTTmV3UmVn
aW9uV2l0aFJlY3QoJmNnQ2xpcFJlY3QsICZzaGFwZSk7CisgICAgQ0dTU2V0V2luZG93Q2xpcFNo
YXBlKENHU01haW5Db25uZWN0aW9uSUQoKSwgd2luZG93TnVtYmVyLCBzaGFwZSk7CisgICAgQ0dT
UmVsZWFzZVJlZ2lvbihzaGFwZSk7Cit9CisKIC0gKHZvaWQpZmluaXNoZWRFbnRlckZ1bGxTY3Jl
ZW5BbmltYXRpb246KGJvb2wpY29tcGxldGVkCiB7CiAgICAgaWYgKCFfaXNFbnRlcmluZ0Z1bGxT
Y3JlZW4pCkBAIC0yNjMsNyArMjczLDcgQEAgLSAodm9pZClmaW5pc2hlZEVudGVyRnVsbFNjcmVl
bkFuaW1hdGlvbjooYm9vbCljb21wbGV0ZWQKICAgICAgICAgCiAgICAgICAgIE5TUmVjdCB3aW5k
b3dCb3VuZHMgPSBbW3NlbGYgd2luZG93XSBmcmFtZV07CiAgICAgICAgIHdpbmRvd0JvdW5kcy5v
cmlnaW4gPSBOU1plcm9Qb2ludDsKLSAgICAgICAgV0tXaW5kb3dTZXRDbGlwUmVjdChbc2VsZiB3
aW5kb3ddLCB3aW5kb3dCb3VuZHMpOworICAgICAgICBzZXRDbGlwUmVjdEZvcldpbmRvdyhbc2Vs
ZiB3aW5kb3ddLCB3aW5kb3dCb3VuZHMpOwogICAgICAgICAKICAgICAgICAgTlNXaW5kb3cgKndl
YldpbmRvdyA9IFtfd2ViVmlld1BsYWNlaG9sZGVyLmdldCgpIHdpbmRvd107CiAgICAgICAgIC8v
IEluIExpb24sIE5TV2luZG93IHdpbGwgYW5pbWF0ZSBpbnRvIGFuZCBvdXQgb2Ygb3JkZXJPdXQg
b3BlcmF0aW9ucy4gU3VwcHJlc3MgdGhhdApAQCAtMzUzLDcgKzM2Myw3IEBAIC0gKHZvaWQpZmlu
aXNoZWRFeGl0RnVsbFNjcmVlbkFuaW1hdGlvbjooYm9vbCljb21wbGV0ZWQKICAgICAKICAgICBO
U1JlY3Qgd2luZG93Qm91bmRzID0gW1tzZWxmIHdpbmRvd10gZnJhbWVdOwogICAgIHdpbmRvd0Jv
dW5kcy5vcmlnaW4gPSBOU1plcm9Qb2ludDsKLSAgICBXS1dpbmRvd1NldENsaXBSZWN0KFtzZWxm
IHdpbmRvd10sIHdpbmRvd0JvdW5kcyk7CisgICAgc2V0Q2xpcFJlY3RGb3JXaW5kb3coW3NlbGYg
d2luZG93XSwgd2luZG93Qm91bmRzKTsKICAgICAKICAgICBbW3NlbGYgd2luZG93XSBvcmRlck91
dDpzZWxmXTsKICAgICBbW3NlbGYgd2luZG93XSBzZXRGcmFtZTpOU1plcm9SZWN0IGRpc3BsYXk6
WUVTXTsKQEAgLTQ4NCwxMyArNDk0LDEzIEBAIC0gKHZvaWQpX3N0YXJ0RW50ZXJGdWxsU2NyZWVu
QW5pbWF0aW9uV2l0aER1cmF0aW9uOihOU1RpbWVJbnRlcnZhbClkdXJhdGlvbgogICAgIFtfc2Nh
bGVBbmltYXRpb24uZ2V0KCkgc2V0Q3VycmVudFByb2dyZXNzOjBdOwogICAgIFtfc2NhbGVBbmlt
YXRpb24uZ2V0KCkgc3RhcnRBbmltYXRpb25dOwogICAgIAotICAgIC8vIFdLV2luZG93U2V0Q2xp
cFJlY3QgdGFrZXMgd2luZG93IGNvb3JkaW5hdGVzLCBzbyBjb252ZXJ0IGZyb20gc2NyZWVuIGNv
b3JkaW5hdGVzIGhlcmU6CisgICAgLy8gc2V0Q2xpcFJlY3RGb3JXaW5kb3cgdGFrZXMgd2luZG93
IGNvb3JkaW5hdGVzLCBzbyBjb252ZXJ0IGZyb20gc2NyZWVuIGNvb3JkaW5hdGVzIGhlcmU6CiAg
ICAgTlNSZWN0IGZpbmFsQm91bmRzID0gX2ZpbmFsRnJhbWU7CiAjcHJhZ21hIGNsYW5nIGRpYWdu
b3N0aWMgcHVzaAogI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XZGVwcmVjYXRl
ZC1kZWNsYXJhdGlvbnMiCiAgICAgZmluYWxCb3VuZHMub3JpZ2luID0gW1tzZWxmIHdpbmRvd10g
Y29udmVydFNjcmVlblRvQmFzZTpmaW5hbEJvdW5kcy5vcmlnaW5dOwogI3ByYWdtYSBjbGFuZyBk
aWFnbm9zdGljIHBvcAotICAgIFdLV2luZG93U2V0Q2xpcFJlY3QoW3NlbGYgd2luZG93XSwgZmlu
YWxCb3VuZHMpOworICAgIHNldENsaXBSZWN0Rm9yV2luZG93KFtzZWxmIHdpbmRvd10sIGZpbmFs
Qm91bmRzKTsKICAgICAKICAgICBbW3NlbGYgd2luZG93XSBtYWtlS2V5QW5kT3JkZXJGcm9udDpz
ZWxmXTsKICAgICAKQEAgLTU1NiwxMyArNTY2LDEzIEBAIC0gKHZvaWQpX3N0YXJ0RXhpdEZ1bGxT
Y3JlZW5BbmltYXRpb25XaXRoRHVyYXRpb246KE5TVGltZUludGVydmFsKWR1cmF0aW9uCiAgICAg
CiAgICAgW19iYWNrZ3JvdW5kV2luZG93LmdldCgpIG9yZGVyV2luZG93Ok5TV2luZG93QmVsb3cg
cmVsYXRpdmVUbzpbW3NlbGYgd2luZG93XSB3aW5kb3dOdW1iZXJdXTsKICAgICAKLSAgICAvLyBX
S1dpbmRvd1NldENsaXBSZWN0IHRha2VzIHdpbmRvdyBjb29yZGluYXRlcywgc28gY29udmVydCBm
cm9tIHNjcmVlbiBjb29yZGluYXRlcyBoZXJlOgorICAgIC8vIHNldENsaXBSZWN0Rm9yV2luZG93
IHRha2VzIHdpbmRvdyBjb29yZGluYXRlcywgc28gY29udmVydCBmcm9tIHNjcmVlbiBjb29yZGlu
YXRlcyBoZXJlOgogICAgIE5TUmVjdCBmaW5hbEJvdW5kcyA9IF9maW5hbEZyYW1lOwogI3ByYWdt
YSBjbGFuZyBkaWFnbm9zdGljIHB1c2gKICNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBpZ25vcmVk
ICItV2RlcHJlY2F0ZWQtZGVjbGFyYXRpb25zIgogICAgIGZpbmFsQm91bmRzLm9yaWdpbiA9IFtb
c2VsZiB3aW5kb3ddIGNvbnZlcnRTY3JlZW5Ub0Jhc2U6ZmluYWxCb3VuZHMub3JpZ2luXTsKICNw
cmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwb3AKLSAgICBXS1dpbmRvd1NldENsaXBSZWN0KFtzZWxm
IHdpbmRvd10sIGZpbmFsQm91bmRzKTsKKyAgICBzZXRDbGlwUmVjdEZvcldpbmRvdyhbc2VsZiB3
aW5kb3ddLCBmaW5hbEJvdW5kcyk7CiAgICAgCiAgICAgW1tzZWxmIHdpbmRvd10gc2V0QXV0b2Rp
c3BsYXk6WUVTXTsKICAgICBbW3NlbGYgd2luZG93XSBkaXNwbGF5SWZOZWVkZWRdOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>319576</attachid>
            <date>2017-08-31 22:27:10 -0700</date>
            <delta_ts>2017-08-31 22:38:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-176200-20170831222710.patch</filename>
            <type>text/plain</type>
            <size>63534</size>
            <attacher name="Andy Estes">aestes</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIxMzgxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzVhYmE3NzU1NjhiNjgz
ZmZjOWVjZWE4MzhlNWFmOGRlMTVjOTY4Ni4uNmFhZDZiNmQxYzY3MzhkNGZkMTQwM2U4YjlhYjJj
MDZmZGEzM2M0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBACisyMDE3LTA4LTMxICBBbmR5
IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29jb2FdIFVwc3RyZWFtIENv
cmVHcmFwaGljcy1yZWxhdGVkIFdlYktpdFN5c3RlbUludGVyZmFjZSBmdW5jdGlvbnMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NjIwMAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NDb250ZXh0Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2VTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OnN1YnNhbXBsaW5n
TGV2ZWxGb3JTY2FsZUZhY3Rvcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3Jh
cGhpY3NDb250ZXh0Q0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0Ojpj
bGlwT3V0KToKKyAgICAgICAgKFdlYkNvcmU6OmFwcGx5U2hhZG93T2Zmc2V0V29ya2Fyb3VuZElm
TmVlZGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9QYXR0ZXJuQ0cuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UGF0dGVybjo6Y3JlYXRlUGxhdGZvcm1QYXR0ZXJuIGNvbnN0KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRDb2NvYS5t
bToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6Zm9jdXNSaW5nQ29sb3IpOgor
ICAgICAgICAoV2ViQ29yZTo6ZHJhd0ZvY3VzUmluZ0F0VGltZSk6CisgICAgICAgIChXZWJDb3Jl
OjpkcmF3Rm9jdXNSaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OmRyYXdGb2N1c1JpbmdUb0NvbnRl
eHQpOgorICAgICAgICAoV2ViQ29yZTo6ZHJhd0ZvY3VzUmluZ1RvQ29udGV4dEF0VGltZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vaW9zL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2VJT1MubW06CisgICAg
ICAgICogcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpm
bGlwSW1hZ2VTcGVjKToKKyAgICAgICAgKFdlYkNvcmU6OnNldERyYWdJbWFnZUltcGwpOgorICAg
ICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6c2V0RHJhZ0ltYWdlKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9tYWMvUGxhdGZvcm1FdmVudEZhY3RvcnlNYWMubW06CisgICAgICAgICogcGxhdGZvcm0v
bWFjL1Njcm9sbGJhclRoZW1lTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6bGluZW5CYWNrZ3Jv
dW5kQ29sb3IpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9UaGVtZU1hYy5tbToKKyAgICAgICAg
KFdlYkNvcmU6OmRyYXdDZWxsRm9jdXNSaW5nV2l0aEZyYW1lQXRUaW1lKToKKyAgICAgICAgKFdl
YkNvcmU6OmRyYXdDZWxsRm9jdXNSaW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvV2ViQ29y
ZVN5c3RlbUludGVyZmFjZS5oOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9XZWJDb3JlU3lzdGVt
SW50ZXJmYWNlLm1tOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9XZWJXaW5kb3dBbmltYXRpb24u
bW06CisgICAgICAgIChmbGlwUmVjdCk6CisgICAgICAgIChtYWluV2luZG93U2VydmVyQ29ubmVj
dGlvbklEKToKKyAgICAgICAgKHNldFNjYWxlZEZyYW1lRm9yV2luZG93KToKKyAgICAgICAgKC1b
V2ViV2luZG93U2NhbGVBbmltYXRpb24gc2V0Q3VycmVudFByb2dyZXNzOl0pOgorICAgICAgICAo
LVtXZWJXaW5kb3dGYWRlQW5pbWF0aW9uIHNldEN1cnJlbnRQcm9ncmVzczpdKToKKwogMjAxNy0w
OC0zMCAgQW5keSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+CiAKICAgICAgICAgW01hY10gVXBz
dHJlYW0gQWNjZXNzaWJpbGl0eS1yZWxhdGVkIFdlYktpdFN5c3RlbUludGVyZmFjZSBmdW5jdGlv
bnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
Q29yZS9QQUwvQ2hhbmdlTG9nCmluZGV4IDdiNGI2MDFmZTRlNWUxNTBmODE4OTc0NDU3YzY5ZWVi
OWI2MDEzNTEuLjYyN2UzZjM4ZmI0NDUyNGRiZTA5NDNjYzdkNGVjMjljMTg3ZTc2MzkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUv
UEFML0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDE3LTA4LTMxICBBbmR5IEVzdGVzICA8
YWVzdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29jb2FdIFVwc3RyZWFtIENvcmVHcmFwaGlj
cy1yZWxhdGVkIFdlYktpdFN5c3RlbUludGVyZmFjZSBmdW5jdGlvbnMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NjIwMAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogUEFMLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2o6CisgICAgICAgICogcGFsL3NwaS9jZy9Db3JlR3JhcGhpY3NTUEkuaDoKKyAgICAg
ICAgKiBwYWwvc3BpL21hYy9ISVNlcnZpY2VzU1BJLmg6CisgICAgICAgICogcGFsL3NwaS9tYWMv
TlNHcmFwaGljc1NQSS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9t
YWMvSElTZXJ2aWNlc1NQSS5oLgorCiAyMDE3LTA4LTMwICBBbmR5IEVzdGVzICA8YWVzdGVzQGFw
cGxlLmNvbT4KIAogICAgICAgICBbTWFjXSBVcHN0cmVhbSBBY2Nlc3NpYmlsaXR5LXJlbGF0ZWQg
V2ViS2l0U3lzdGVtSW50ZXJmYWNlIGZ1bmN0aW9ucwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBhODY2NmYzMzg1MzQx
ZDM1NmQ3YTBjNzEzMWVhMmFmZjY4MTRhNjhiLi4yMTVkMmY3ZDg0ZmUwZWNlYmNjOTRhN2QxMTZm
N2YxYTYyNTYxZDA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDE3LTA4LTMxICBBbmR5
IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29jb2FdIFVwc3RyZWFtIENv
cmVHcmFwaGljcy1yZWxhdGVkIFdlYktpdFN5c3RlbUludGVyZmFjZSBmdW5jdGlvbnMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NjIwMAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogUGx1Z2luUHJvY2Vz
cy9tYWMvUGx1Z2luUHJvY2Vzc01hYy5tbToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJvY2Vz
czo6cGxhdGZvcm1Jbml0aWFsaXplUHJvY2Vzcyk6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9X
aW5kb3dTZXJ2ZXJDb25uZWN0aW9uLmg6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9XaW5kb3dT
ZXJ2ZXJDb25uZWN0aW9uLm1tOgorICAgICAgICAoV2ViS2l0OjpyZWdpc3Rlck9jY2x1c2lvbk5v
dGlmaWNhdGlvbkhhbmRsZXIpOgorICAgICAgICAoV2ViS2l0OjpXaW5kb3dTZXJ2ZXJDb25uZWN0
aW9uOjpXaW5kb3dTZXJ2ZXJDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2luZG93U2Vy
dmVyQ29ubmVjdGlvbjo6YXBwbGljYXRpb25XaW5kb3dNb2RpZmljYXRpb25zU3RhcnRlZCk6IERl
bGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViU3lzdGVt
SW50ZXJmYWNlLm1tOgorICAgICAgICAoSW5pdFdlYkNvcmVTeXN0ZW1JbnRlcmZhY2UpOgorCiAy
MDE3LTA4LTMwICBBbmR5IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KIAogICAgICAgICBbTWFj
XSBVcHN0cmVhbSBBY2Nlc3NpYmlsaXR5LXJlbGF0ZWQgV2ViS2l0U3lzdGVtSW50ZXJmYWNlIGZ1
bmN0aW9ucwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4IGJkZjVkMzhhZTdlNWI3NjE0
MDliM2QxMDU0ZDg0MzgzODY4OWZiZGEuLjRkMzE2OTQxYjM2ZjllMzMyM2MzODI5NjgzNDcyNWMw
Njc4OTAwMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNCBAQAor
MjAxNy0wOC0zMSAgQW5keSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+CisKKyAgICAgICAgW0Nv
Y29hXSBVcHN0cmVhbSBDb3JlR3JhcGhpY3MtcmVsYXRlZCBXZWJLaXRTeXN0ZW1JbnRlcmZhY2Ug
ZnVuY3Rpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNzYyMDAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIENhcmJvbi9ISVdlYlZpZXcubW06CisgICAgICAgICgtW05TV2luZG93R3JhcGhpY3NDb250
ZXh0IF93ZWJfc2V0R3JhcGhpY3NQb3J0Ol0pOgorICAgICAgICAob3ZlcnJpZGVDR0NvbnRleHQp
OgorICAgICAgICAocmVzdG9yZUNHQ29udGV4dCk6CisgICAgICAgIChEcmF3KToKKyAgICAgICAg
KiBQbHVnaW5zL0hvc3RlZC9XZWJIb3N0ZWROZXRzY2FwZVBsdWdpblZpZXcubW06CisgICAgICAg
ICgrW1dlYkhvc3RlZE5ldHNjYXBlUGx1Z2luVmlldyBpbml0aWFsaXplXSk6CisgICAgICAgICog
UGx1Z2lucy9XZWJCYXNlTmV0c2NhcGVQbHVnaW5WaWV3Lmg6CisgICAgICAgICogUGx1Z2lucy9X
ZWJCYXNlTmV0c2NhcGVQbHVnaW5WaWV3Lm1tOgorICAgICAgICAoV2ViS2l0OjpzZW5kVXNlckNo
YW5nZU5vdGlmaWNhdGlvbnMpOgorICAgICAgICAqIFBsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5W
aWV3Lm1tOgorICAgICAgICAoK1tXZWJOZXRzY2FwZVBsdWdpblZpZXcgaW5pdGlhbGl6ZV0pOgor
ICAgICAgICAoLVtXZWJOZXRzY2FwZVBsdWdpblZpZXcgc2F2ZUFuZFNldE5ld1BvcnRTdGF0ZUZv
clVwZGF0ZTpdKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJTeXN0ZW1JbnRlcmZhY2Uu
bW06CisgICAgICAgIChJbml0V2ViQ29yZVN5c3RlbUludGVyZmFjZSk6CisgICAgICAgICogV2Vi
Vmlldy9XZWJGcmFtZS5tbToKKyAgICAgICAgKC1bV2ViRnJhbWUgX3BhaW50QmVoYXZpb3JGb3JE
ZXN0aW5hdGlvbkNvbnRleHQ6XSk6CisgICAgICAgICogV2ViVmlldy9XZWJGdWxsU2NyZWVuQ29u
dHJvbGxlci5tbToKKyAgICAgICAgKHNldENsaXBSZWN0Rm9yV2luZG93KToKKyAgICAgICAgKC1b
V2ViRnVsbFNjcmVlbkNvbnRyb2xsZXIgZmluaXNoZWRFbnRlckZ1bGxTY3JlZW5BbmltYXRpb246
XSk6CisgICAgICAgICgtW1dlYkZ1bGxTY3JlZW5Db250cm9sbGVyIGZpbmlzaGVkRXhpdEZ1bGxT
Y3JlZW5BbmltYXRpb246XSk6CisgICAgICAgICgtW1dlYkZ1bGxTY3JlZW5Db250cm9sbGVyIF9z
dGFydEVudGVyRnVsbFNjcmVlbkFuaW1hdGlvbldpdGhEdXJhdGlvbjpdKToKKyAgICAgICAgKC1b
V2ViRnVsbFNjcmVlbkNvbnRyb2xsZXIgX3N0YXJ0RXhpdEZ1bGxTY3JlZW5BbmltYXRpb25XaXRo
RHVyYXRpb246XSk6CisKIDIwMTctMDgtMzAgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29t
PgogCiAgICAgICAgIFtNYWNdIFVwc3RyZWFtIEFjY2Vzc2liaWxpdHktcmVsYXRlZCBXZWJLaXRT
eXN0ZW1JbnRlcmZhY2UgZnVuY3Rpb25zCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwv
UEFMLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9QQUwvUEFMLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZDk4NThmOWVlMmI0MWYwMDU5MzcxYWU5MGNi
MmJmZGRkYTNkMGI4OC4uNjFkOWUzNDZkMGNiNjAzYWQyOWY2MzVkZmUzNTE4ZWZlYmM0ODM3NiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML1BBTC54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9QQUwueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agpAQCAtMTAxLDYgKzEwMSw3IEBACiAJCUExMDI2NTg5MUY1Njc0N0EwMEI0Qzg0NCAvKiBISVRv
b2xib3hTUEkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEExMDI2NTg4MUY1Njc0N0EwMEI0Qzg0NCAvKiBISVRvb2xib3hTUEkuaCAqLzsgfTsKIAkJQTEw
MjY1OEIxRjU2NzQ4QzAwQjRDODQ0IC8qIFF1aWNrRHJhd1NQSS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTEwMjY1OEExRjU2NzQ4QzAwQjRDODQ0IC8q
IFF1aWNrRHJhd1NQSS5oICovOyB9OwogCQlBMTAyNjU4RTFGNTY3RTlEMDBCNEM4NDQgLyogSElT
ZXJ2aWNlc1NQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQTEwMjY1OEQxRjU2N0U5RDAwQjRDODQ0IC8qIEhJU2VydmljZXNTUEkuaCAqLzsgfTsKKwkJ
QTEwODI2RkUxRjU4QTQzMzAwNDc3MkFDIC8qIE5TR3JhcGhpY3NTUEkuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExMDgyNkZEMUY1OEE0MzMwMDQ3NzJB
QyAvKiBOU0dyYXBoaWNzU1BJLmggKi87IH07CiAJCUExRjU1RENGMUY1NTI4RUMwMEVEQjc1RiAv
KiBNZXRhZGF0YVNQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQTFGNTVEQ0UxRjU1MjhFQzAwRURCNzVGIC8qIE1ldGFkYXRhU1BJLmggKi87IH07CiAJ
CUEzMEQ0MTIxMUYwREQwRUEwMEI3MTk1NCAvKiBLaWxsUmluZy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTMwRDQxMUUxRjBERDBFQTAwQjcxOTU0IC8q
IEtpbGxSaW5nLmggKi87IH07CiAJCUEzMEQ0MTIyMUYwREQwRUEwMEI3MTk1NCAvKiBLaWxsUmlu
Z05vbmUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QTMwRDQxMUYxRjBERDBFQTAwQjcxOTU0IC8qIEtpbGxSaW5nTm9uZS5jcHAgKi87IH07CkBAIC0y
MTcsNiArMjE4LDcgQEAKIAkJQTEwMjY1ODgxRjU2NzQ3QTAwQjRDODQ0IC8qIEhJVG9vbGJveFNQ
SS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBISVRvb2xib3hTUEkuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTEwMjY1OEExRjU2NzQ4QzAwQjRDODQ0IC8qIFF1
aWNrRHJhd1NQSS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBRdWlja0RyYXdT
UEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTEwMjY1OEQxRjU2N0U5RDAwQjRD
ODQ0IC8qIEhJU2VydmljZXNTUEkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSElTZXJ2aWNlc1NQSS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBMTA4MjZGRDFGNThBNDMzMDA0NzcyQUMgLyog
TlNHcmFwaGljc1NQSS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOU0dyYXBoaWNzU1BJLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUExRjU1RENFMUY1NTI4RUMwMEVEQjc1RiAvKiBNZXRhZGF0
YVNQSS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBNZXRhZGF0YVNQSS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlBMzBENDExRTFGMEREMEVBMDBCNzE5NTQgLyogS2lsbFJpbmcuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gS2lsbFJpbmcuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQTMwRDQxMUYxRjBERDBFQTAwQjcxOTU0IC8qIEtpbGxSaW5nTm9uZS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBLaWxsUmluZ05vbmUuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzQ5LDYgKzM1MSw3IEBACiAJCQkJMEM3Nzg1
NzUxRjQ1MTMwRjAwRjRFQkI2IC8qIE5TQXBwbGljYXRpb25TUEkuaCAqLywKIAkJCQkwQzc3ODU3
NjFGNDUxMzBGMDBGNEVCQjYgLyogTlNFdmVudFNQSS5oICovLAogCQkJCTBDNzc4NTc3MUY0NTEz
MEYwMEY0RUJCNiAvKiBOU0ZvbnRTUEkuaCAqLywKKwkJCQlBMTA4MjZGRDFGNThBNDMzMDA0Nzcy
QUMgLyogTlNHcmFwaGljc1NQSS5oICovLAogCQkJCTBDNzc4NTc4MUY0NTEzMEYwMEY0RUJCNiAv
KiBOU0ltbWVkaWF0ZUFjdGlvbkdlc3R1cmVSZWNvZ25pemVyU1BJLmggKi8sCiAJCQkJMEM3Nzg1
NzkxRjQ1MTMwRjAwRjRFQkI2IC8qIE5TTWVudVNQSS5oICovLAogCQkJCTBDNzc4NTdBMUY0NTEz
MEYwMEY0RUJCNiAvKiBOU1Bhc3RlYm9hcmRTUEkuaCAqLywKQEAgLTU0Miw2ICs1NDUsNyBAQAog
CQkJCTBDMkRBMTRFMUYzQkVCNDkwMERCQzMxNyAvKiBOU0V4dGVuc2lvblNQSS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMEMyREExNEYxRjNCRUI0OTAwREJDMzE3IC8qIE5TRmlsZU1hbmFnZXJTUEku
aCBpbiBIZWFkZXJzICovLAogCQkJCTBDNzc4NTkwMUY0NTEzMEYwMEY0RUJCNiAvKiBOU0ZvbnRT
UEkuaCBpbiBIZWFkZXJzICovLAorCQkJCUExMDgyNkZFMUY1OEE0MzMwMDQ3NzJBQyAvKiBOU0dy
YXBoaWNzU1BJLmggaW4gSGVhZGVycyAqLywKIAkJCQkwQzc3ODU5MTFGNDUxMzBGMDBGNEVCQjYg
LyogTlNJbW1lZGlhdGVBY3Rpb25HZXN0dXJlUmVjb2duaXplclNQSS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMEM3Nzg1OTIxRjQ1MTMwRjAwRjRFQkI2IC8qIE5TTWVudVNQSS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMEM3Nzg1OTMxRjQ1MTMwRjAwRjRFQkI2IC8qIE5TUGFzdGVib2FyZFNQSS5oIGlu
IEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jZy9D
b3JlR3JhcGhpY3NTUEkuaCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NnL0NvcmVHcmFw
aGljc1NQSS5oCmluZGV4IDdjMjkxYzkxNGQ2OWY1NmQ4NmRiYjRhODgxZmIyMzE4OWM1YTVhNWMu
LjZiZWYxNjk4MzgwOTFjODNhNDg5ZDQzNWE2MTUzNzIzMzdmZmY0NTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NnL0NvcmVHcmFwaGljc1NQSS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NnL0NvcmVHcmFwaGljc1NQSS5oCkBAIC0xMzcsMjEgKzEz
Nyw3MSBAQCBzdGF0aWMgaW5saW5lIENHRmxvYXQgQ0dGbG9hdE1pbihDR0Zsb2F0IGEsIENHRmxv
YXQgYikgeyByZXR1cm4gaXNuYW4oYSkgPyBiIDogKAogCiB0eXBlZGVmIHN0cnVjdCBDR0ZvbnRD
YWNoZSBDR0ZvbnRDYWNoZTsKIAotI2lmIFBMQVRGT1JNKE1BQykKLXR5cGVkZWYgdWludDMyX3Qg
Q0dTQ29ubmVjdGlvbklEOwotdHlwZWRlZiB1aW50MzJfdCBDR1NXaW5kb3dJRDsKLXR5cGVkZWYg
dWludDMyX3QgQ0dTV2luZG93Q291bnQ7Ci10eXBlZGVmIENHU1dpbmRvd0lEICpDR1NXaW5kb3dJ
RExpc3Q7CisjaWYgUExBVEZPUk0oQ09DT0EpCiAKIGVudW0gewogICAgIGtDR1NXaW5kb3dDYXB0
dXJlTm9taW5hbFJlc29sdXRpb24gPSAweDAyMDAsCiAgICAga0NHU0NhcHR1cmVJZ25vcmVHbG9i
YWxDbGlwU2hhcGUgPSAweDA4MDAsCiB9OwogdHlwZWRlZiB1aW50MzJfdCBDR1NXaW5kb3dDYXB0
dXJlT3B0aW9uczsKLSNlbmRpZgorCit0eXBlZGVmIENGX0VOVU0gKGludDMyX3QsIENHU3R5bGVE
cmF3T3JkZXJpbmcpIHsKKyAgICBrQ0dTdHlsZURyYXdPcmRlcmluZ1N0eWxlT25seSA9IDAsCisg
ICAga0NHU3R5bGVEcmF3T3JkZXJpbmdCZWxvdyA9IDEsCisgICAga0NHU3R5bGVEcmF3T3JkZXJp
bmdBYm92ZSA9IDIsCit9OworCit0eXBlZGVmIENGX0VOVU0gKGludDMyX3QsIENHRm9jdXNSaW5n
T3JkZXJpbmcpIHsKKyAgICBrQ0dGb2N1c1JpbmdPcmRlcmluZ05vbmUgPSBrQ0dTdHlsZURyYXdP
cmRlcmluZ1N0eWxlT25seSwKKyAgICBrQ0dGb2N1c1JpbmdPcmRlcmluZ0JlbG93ID0ga0NHU3R5
bGVEcmF3T3JkZXJpbmdCZWxvdywKKyAgICBrQ0dGb2N1c1JpbmdPcmRlcmluZ0Fib3ZlID0ga0NH
U3R5bGVEcmF3T3JkZXJpbmdBYm92ZSwKK307CisKK3R5cGVkZWYgQ0ZfRU5VTSAoaW50MzJfdCwg
Q0dGb2N1c1JpbmdUaW50KSB7CisgICAga0NHRm9jdXNSaW5nVGludEJsdWUgPSAwLAorICAgIGtD
R0ZvY3VzUmluZ1RpbnRHcmFwaGl0ZSA9IDEsCit9OworCitzdHJ1Y3QgQ0dGb2N1c1JpbmdTdHls
ZSB7CisgICAgdW5zaWduZWQgaW50IHZlcnNpb247CisgICAgQ0dGb2N1c1JpbmdUaW50IHRpbnQ7
CisgICAgQ0dGb2N1c1JpbmdPcmRlcmluZyBvcmRlcmluZzsKKyAgICBDR0Zsb2F0IGFscGhhOwor
ICAgIENHRmxvYXQgcmFkaXVzOworICAgIENHRmxvYXQgdGhyZXNob2xkOworICAgIENHUmVjdCBi
b3VuZHM7CisgICAgaW50IGFjY3VtdWxhdGU7Cit9OwordHlwZWRlZiBzdHJ1Y3QgQ0dGb2N1c1Jp
bmdTdHlsZSBDR0ZvY3VzUmluZ1N0eWxlOworCit0eXBlZGVmIENGX0VOVU0odWludDMyX3QsIENH
U05vdGlmaWNhdGlvblR5cGUpIHsKKyAgICBrQ0dTRmlyc3RDb25uZWN0aW9uTm90aWZpY2F0aW9u
ID0gOTAwLAorICAgIGtDR1NGaXJzdFNlc3Npb25Ob3RpZmljYXRpb24gPSAxNTAwLAorfTsKKwor
c3RhdGljIGNvbnN0IENHU05vdGlmaWNhdGlvblR5cGUga0NHU0Nvbm5lY3Rpb25XaW5kb3dNb2Rp
ZmljYXRpb25zU3RhcnRlZCA9IChDR1NOb3RpZmljYXRpb25UeXBlKShrQ0dTRmlyc3RDb25uZWN0
aW9uTm90aWZpY2F0aW9uICsgNik7CitzdGF0aWMgY29uc3QgQ0dTTm90aWZpY2F0aW9uVHlwZSBr
Q0dTQ29ubmVjdGlvbldpbmRvd01vZGlmaWNhdGlvbnNTdG9wcGVkID0gKENHU05vdGlmaWNhdGlv
blR5cGUpKGtDR1NGaXJzdENvbm5lY3Rpb25Ob3RpZmljYXRpb24gKyA3KTsKK3N0YXRpYyBjb25z
dCBDR1NOb3RpZmljYXRpb25UeXBlIGtDR1Nlc3Npb25Db25zb2xlQ29ubmVjdCA9IGtDR1NGaXJz
dFNlc3Npb25Ob3RpZmljYXRpb247CitzdGF0aWMgY29uc3QgQ0dTTm90aWZpY2F0aW9uVHlwZSBr
Q0dTZXNzaW9uQ29uc29sZURpc2Nvbm5lY3QgPSAoQ0dTTm90aWZpY2F0aW9uVHlwZSkoa0NHU2Vz
c2lvbkNvbnNvbGVDb25uZWN0ICsgMSk7CisKKyNlbmRpZiAvLyBQTEFURk9STShDT0NPQSkKIAog
I2VuZGlmIC8vIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCiAKKyNpZiBQTEFURk9STShDT0NPQSkK
K3R5cGVkZWYgQ0dTV2luZG93SUQqIENHU1dpbmRvd0lETGlzdDsKK3R5cGVkZWYgc3RydWN0IENG
X0JSSURHRURfVFlQRShpZCkgQ0dTUmVnaW9uT2JqZWN0KiBDR1NSZWdpb25PYmo7Cit0eXBlZGVm
IHN0cnVjdCBDRl9CUklER0VEX1RZUEUoaWQpIENHU3R5bGUqIENHU3R5bGVSZWY7Cit0eXBlZGVm
IHVpbnQzMl90IENHU0J5dGVDb3VudDsKK3R5cGVkZWYgdWludDMyX3QgQ0dTQ29ubmVjdGlvbklE
OwordHlwZWRlZiB1aW50MzJfdCBDR1NXaW5kb3dDb3VudDsKK3R5cGVkZWYgdWludDMyX3QgQ0dT
V2luZG93SUQ7Cit0eXBlZGVmIHZvaWQqIENHU05vdGlmaWNhdGlvbkFyZzsKK3R5cGVkZWYgdm9p
ZCogQ0dTTm90aWZpY2F0aW9uRGF0YTsKK3R5cGVkZWYgdm9pZCAoKkNHU05vdGlmeUNvbm5lY3Rp
b25Qcm9jUHRyKShDR1NOb3RpZmljYXRpb25UeXBlLCB2b2lkKiBkYXRhLCB1aW50MzJfdCBkYXRh
X2xlbmd0aCwgdm9pZCogYXJnLCBDR1NDb25uZWN0aW9uSUQpOwordHlwZWRlZiB2b2lkICgqQ0dT
Tm90aWZ5UHJvY1B0cikoQ0dTTm90aWZpY2F0aW9uVHlwZSwgdm9pZCogZGF0YSwgdWludDMyX3Qg
ZGF0YV9sZW5ndGgsIHZvaWQqIGFyZyk7CisjZW5kaWYKKwogV1RGX0VYVEVSTl9DX0JFR0lOCiAK
IENHQ29sb3JSZWYgQ0dDb2xvclRyYW5zZm9ybUNvbnZlcnRDb2xvcihDR0NvbG9yVHJhbnNmb3Jt
UmVmLCBDR0NvbG9yUmVmLCBDR0NvbG9yUmVuZGVyaW5nSW50ZW50KTsKQEAgLTIwMywxMCArMjUz
LDIwIEBAIENHQ29sb3JTcGFjZVJlZiBDR0lPU3VyZmFjZUNvbnRleHRHZXRDb2xvclNwYWNlKENH
Q29udGV4dFJlZik7CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKENPQ09BKQotQ0dTUmVnaW9uRW51
bWVyYXRvck9iaiBDR1NSZWdpb25FbnVtZXJhdG9yKENHUmVnaW9uUmVmKTsKLUNHUmVjdCogQ0dT
TmV4dFJlY3QoY29uc3QgQ0dTUmVnaW9uRW51bWVyYXRvck9iaik7Ci1DR0Vycm9yIENHU1JlbGVh
c2VSZWdpb25FbnVtZXJhdG9yKGNvbnN0IENHU1JlZ2lvbkVudW1lcmF0b3JPYmopOwogQ0dDb2xv
clNwYWNlUmVmIENHQ29udGV4dENvcHlEZXZpY2VDb2xvclNwYWNlKENHQ29udGV4dFJlZik7CitD
R0Vycm9yIENHU05ld1JlZ2lvbldpdGhSZWN0KGNvbnN0IENHUmVjdCosIENHUmVnaW9uUmVmKik7
CitDR0Vycm9yIENHU1BhY2thZ2VzRW5hYmxlQ29ubmVjdGlvbk9jY2x1c2lvbk5vdGlmaWNhdGlv
bnMoQ0dTQ29ubmVjdGlvbklELCBib29sIGZsYWcsIGJvb2wqIG91dEN1cnJlbnRWaXNpYmlsaXR5
U3RhdGUpOworQ0dFcnJvciBDR1NQYWNrYWdlc0VuYWJsZUNvbm5lY3Rpb25XaW5kb3dNb2RpZmlj
YXRpb25Ob3RpZmljYXRpb25zKENHU0Nvbm5lY3Rpb25JRCwgYm9vbCBmbGFnLCBib29sKiBvdXRD
b25uZWN0aW9uSXNDdXJyZW50bHlJZGxlKTsKK0NHRXJyb3IgQ0dTUmVnaXN0ZXJDb25uZWN0aW9u
Tm90aWZ5UHJvYyhDR1NDb25uZWN0aW9uSUQsIENHU05vdGlmeUNvbm5lY3Rpb25Qcm9jUHRyLCBD
R1NOb3RpZmljYXRpb25UeXBlLCB2b2lkKiBhcmcpOworQ0dFcnJvciBDR1NSZWdpc3Rlck5vdGlm
eVByb2MoQ0dTTm90aWZ5UHJvY1B0ciwgQ0dTTm90aWZpY2F0aW9uVHlwZSwgdm9pZCogYXJnKTsK
K0NHRXJyb3IgQ0dTUmVsZWFzZVJlZ2lvbihjb25zdCBDR1JlZ2lvblJlZiBDRl9SRUxFQVNFU19B
UkdVTUVOVCk7CitDR0Vycm9yIENHU1JlbGVhc2VSZWdpb25FbnVtZXJhdG9yKGNvbnN0IENHU1Jl
Z2lvbkVudW1lcmF0b3JPYmopOworQ0dQYXR0ZXJuUmVmIENHUGF0dGVybkNyZWF0ZVdpdGhJbWFn
ZTIoQ0dJbWFnZVJlZiwgQ0dBZmZpbmVUcmFuc2Zvcm0sIENHUGF0dGVyblRpbGluZyk7CitDR1Jl
Y3QqIENHU05leHRSZWN0KGNvbnN0IENHU1JlZ2lvbkVudW1lcmF0b3JPYmopOworQ0dTUmVnaW9u
RW51bWVyYXRvck9iaiBDR1NSZWdpb25FbnVtZXJhdG9yKENHUmVnaW9uUmVmKTsKK0NHU3R5bGVS
ZWYgQ0dTdHlsZUNyZWF0ZUZvY3VzUmluZ1dpdGhDb2xvcihjb25zdCBDR0ZvY3VzUmluZ1N0eWxl
KiwgQ0dDb2xvclJlZik7Citib29sIENHQ29udGV4dERyYXdzV2l0aENvcnJlY3RTaGFkb3dPZmZz
ZXRzKENHQ29udGV4dFJlZik7Cit2b2lkIENHQ29udGV4dFNldFN0eWxlKENHQ29udGV4dFJlZiwg
Q0dTdHlsZVJlZik7CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKFdJTikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL21hYy9ISVNlcnZpY2VzU1BJLmggYi9Tb3VyY2UvV2Vi
Q29yZS9QQUwvcGFsL3NwaS9tYWMvSElTZXJ2aWNlc1NQSS5oCmluZGV4IDlmMzVkY2Q0ZDAzYTU3
YTA4NmIwYTM2NWRmYjM5ZGRmZmNjODE5ODUuLmEzNTViOTRmZTYzMDkyZWY1YWNkMGI1Yzk1ZTAz
ZGQ0NmU5NTM4MTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL21hYy9I
SVNlcnZpY2VzU1BJLmgKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvbWFjL0hJU2Vy
dmljZXNTUEkuaApAQCAtMjgsMjEgKzI4LDQ1IEBACiAjaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NE
SykKIAogI2luY2x1ZGUgPEhJU2VydmljZXMvQVhUZXh0TWFya2VyLmg+CisjaW5jbHVkZSA8SElT
ZXJ2aWNlcy9Db3JlRHJhZy5oPgorCisjZWxzZQorCitlbnVtIHsKKyAgICBrQ29yZURyYWdJbWFn
ZVNwZWNWZXJzaW9uT25lID0gMSwKK307CisKK3N0cnVjdCBDb3JlRHJhZ0ltYWdlU3BlYyB7Cisg
ICAgVUludDMyIHZlcnNpb247CisgICAgU0ludDMyIHBpeGVsc1dpZGU7CisgICAgU0ludDMyIHBp
eGVsc0hpZ2g7CisgICAgU0ludDMyIGJpdHNQZXJTYW1wbGU7CisgICAgU0ludDMyIHNhbXBsZXNQ
ZXJQaXhlbDsKKyAgICBTSW50MzIgYml0c1BlclBpeGVsOworICAgIFNJbnQzMiBieXRlc1BlclJv
dzsKKyAgICBCb29sZWFuIGlzUGxhbmFyOworICAgIEJvb2xlYW4gaGFzQWxwaGE7CisgICAgY29u
c3QgVUludDgqIGRhdGFbNV07Cit9OwogCiAjZW5kaWYKIAotdHlwZWRlZiBjb25zdCBzdHJ1Y3Qg
X19BWFRleHRNYXJrZXIgKkFYVGV4dE1hcmtlclJlZjsKLXR5cGVkZWYgY29uc3Qgc3RydWN0IF9f
QVhUZXh0TWFya2VyUmFuZ2UgKkFYVGV4dE1hcmtlclJhbmdlUmVmOwordHlwZWRlZiBjb25zdCBz
dHJ1Y3QgX19BWFRleHRNYXJrZXIqIEFYVGV4dE1hcmtlclJlZjsKK3R5cGVkZWYgY29uc3Qgc3Ry
dWN0IF9fQVhUZXh0TWFya2VyUmFuZ2UqIEFYVGV4dE1hcmtlclJhbmdlUmVmOwordHlwZWRlZiBz
dHJ1Y3QgQ29yZURyYWdJbWFnZVNwZWMgQ29yZURyYWdJbWFnZVNwZWM7Cit0eXBlZGVmIHN0cnVj
dCBPcGFxdWVDb3JlRHJhZyogQ29yZURyYWdSZWY7CiAKIFdURl9FWFRFUk5fQ19CRUdJTgogCi1D
RlR5cGVJRCBBWFRleHRNYXJrZXJHZXRUeXBlSUQoKTsKLUNGVHlwZUlEIEFYVGV4dE1hcmtlclJh
bmdlR2V0VHlwZUlEKCk7Ci1BWFRleHRNYXJrZXJSZWYgQVhUZXh0TWFya2VyQ3JlYXRlKENGQWxs
b2NhdG9yUmVmLCBjb25zdCBVSW50OCogYnl0ZXMsIENGSW5kZXggbGVuZ3RoKTsKLUNGSW5kZXgg
QVhUZXh0TWFya2VyR2V0TGVuZ3RoKEFYVGV4dE1hcmtlclJlZik7Ci1jb25zdCBVSW50OCogQVhU
ZXh0TWFya2VyR2V0Qnl0ZVB0cihBWFRleHRNYXJrZXJSZWYpOwogQVhUZXh0TWFya2VyUmFuZ2VS
ZWYgQVhUZXh0TWFya2VyUmFuZ2VDcmVhdGUoQ0ZBbGxvY2F0b3JSZWYsIEFYVGV4dE1hcmtlclJl
ZiBzdGFydE1hcmtlciwgQVhUZXh0TWFya2VyUmVmIGVuZE1hcmtlcik7CitBWFRleHRNYXJrZXJS
ZWYgQVhUZXh0TWFya2VyQ3JlYXRlKENGQWxsb2NhdG9yUmVmLCBjb25zdCBVSW50OCogYnl0ZXMs
IENGSW5kZXggbGVuZ3RoKTsKIEFYVGV4dE1hcmtlclJlZiBBWFRleHRNYXJrZXJSYW5nZUNvcHlT
dGFydE1hcmtlcihBWFRleHRNYXJrZXJSYW5nZVJlZik7CiBBWFRleHRNYXJrZXJSZWYgQVhUZXh0
TWFya2VyUmFuZ2VDb3B5RW5kTWFya2VyKEFYVGV4dE1hcmtlclJhbmdlUmVmKTsKK0NGSW5kZXgg
QVhUZXh0TWFya2VyR2V0TGVuZ3RoKEFYVGV4dE1hcmtlclJlZik7CitDRlR5cGVJRCBBWFRleHRN
YXJrZXJHZXRUeXBlSUQoKTsKK0NGVHlwZUlEIEFYVGV4dE1hcmtlclJhbmdlR2V0VHlwZUlEKCk7
CitDb3JlRHJhZ1JlZiBDb3JlRHJhZ0dldEN1cnJlbnREcmFnKCk7CitPU1N0YXR1cyBDb3JlRHJh
Z1NldEltYWdlKENvcmVEcmFnUmVmLCBDR1BvaW50IGltYWdlT2Zmc2V0LCBDb3JlRHJhZ0ltYWdl
U3BlYyosIENHU1JlZ2lvbk9iaiBpbWFnZVNoYXBlLCBmbG9hdCBvdmVyYWxsQWxwaGEpOworY29u
c3QgVUludDgqIEFYVGV4dE1hcmtlckdldEJ5dGVQdHIoQVhUZXh0TWFya2VyUmVmKTsKIAogV1RG
X0VYVEVSTl9DX0VORApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvbWFj
L05TR3JhcGhpY3NTUEkuaCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL21hYy9OU0dyYXBo
aWNzU1BJLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMTA2MWUyZTk5OWIxOGIyMTBiZTAwMWNhYWMyN2JhMmIyYmFi
YjJlNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL21hYy9O
U0dyYXBoaWNzU1BJLmgKQEAgLTAsMCArMSw0MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
NyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25j
ZQorCisjaWYgUExBVEZPUk0oTUFDKQorCisjaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKKwor
I2luY2x1ZGUgPEFwcEtpdC9OU0dyYXBoaWNzX1ByaXZhdGUuaD4KKworI2VuZGlmCisKK1dURl9F
WFRFUk5fQ19CRUdJTgorCitCT09MIE5TSW5pdGlhbGl6ZUNHRm9jdXNSaW5nU3R5bGVGb3JUaW1l
KE5TRm9jdXNSaW5nUGxhY2VtZW50LCBDR0ZvY3VzUmluZ1N0eWxlKiwgTlNUaW1lSW50ZXJ2YWwp
OworCitXVEZfRVhURVJOX0NfRU5ECisKKyNlbmRpZiAvLyBQTEFURk9STShNQUMpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCmluZGV4
IDE4YWNkZGJlN2VmZmZhNDI5ZDE4NTc4MzlhYjZlNjY3NDY2YTNkODUuLmMxNGIyYTU1ZTZhYTdm
OTBkMjAwM2M0NjY4NDM0MzIyZTA4NTQ1OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCkBAIC00NDUsNiArNDQ1LDcgQEAgcHVi
bGljOgogI2lmIFBMQVRGT1JNKE1BQykKICAgICB2b2lkIGRyYXdGb2N1c1JpbmcoY29uc3QgUGF0
aCYsIGRvdWJsZSB0aW1lT2Zmc2V0LCBib29sJiBuZWVkc1JlZHJhdyk7CiAgICAgdm9pZCBkcmF3
Rm9jdXNSaW5nKGNvbnN0IFZlY3RvcjxGbG9hdFJlY3Q+JiwgZG91YmxlIHRpbWVPZmZzZXQsIGJv
b2wmIG5lZWRzUmVkcmF3KTsKKyAgICBzdGF0aWMgQ0dDb2xvclJlZiBmb2N1c1JpbmdDb2xvcigp
OwogI2VuZGlmCiAKICAgICB2b2lkIHNldExpbmVDYXAoTGluZUNhcCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAKaW5kZXggNjY5NmM5NjBh
NTg3NWYwNDMxNzI5YjExOWFiNmIyNDEyN2Q3YTVjYS4uMDIyOGUzOTI5YTI2NmVhOTczMmJiYThl
ZTYwNTczZmE1MDlhMzUwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvSW1hZ2VTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ltYWdlU291cmNlLmNwcApAQCAtMTg0LDcgKzE4NCw3IEBAIFN1YnNhbXBsaW5nTGV2ZWwg
SW1hZ2VTb3VyY2U6OnN1YnNhbXBsaW5nTGV2ZWxGb3JTY2FsZUZhY3RvcihHcmFwaGljc0NvbnRl
eHQmIGNvCiB7CiAjaWYgVVNFKENHKQogICAgIC8vIE5ldmVyIHVzZSBzdWJzYW1wbGVkIGltYWdl
cyBmb3IgZHJhd2luZyBpbnRvIFBERiBjb250ZXh0cy4KLSAgICBpZiAod2tDR0NvbnRleHRJc1BE
RkNvbnRleHQoY29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKSkpCisgICAgaWYgKENHQ29udGV4dEdl
dFR5cGUoY29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKSkgPT0ga0NHQ29udGV4dFR5cGVQREYpCiAg
ICAgICAgIHJldHVybiBTdWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0OwogCiAgICAgZmxvYXQgc2Nh
bGUgPSBzdGQ6Om1pbihmbG9hdCgxKSwgc3RkOjptYXgoc2NhbGVGYWN0b3Iud2lkdGgoKSwgc2Nh
bGVGYWN0b3IuaGVpZ2h0KCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcAppbmRleCBkNTg4MzlhZTU4YmI1
MTBkNTA3ZDQ2NWIwNjE5MmUwMjBiYWQ1YWJkLi4zNzg4YmMyNDE0MjRmNTQ2N2VmMWEyMWEyNmVj
ZmZhNGU4M2NhMDBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCkBAIC05ODcsNyArOTg3LDcgQEAgdm9p
ZCBHcmFwaGljc0NvbnRleHQ6OmNsaXBPdXQoY29uc3QgRmxvYXRSZWN0JiByZWN0KQogICAgIC8v
IGhhcyBjZXJ0YWluIHRyYW5zZm9ybXMgdGhhdCBhcmVuJ3QganVzdCBhIHRyYW5zbGF0aW9uIG9y
IGEgc2NhbGUuIEFuZCBkdWUgdG8gPHJkYXI6Ly9wcm9ibGVtLzE0NjM0NDUzPgogICAgIC8vIHdl
IGNhbm5vdCB1c2UgaXQgaW4gZm9yIGEgcHJpbnRpbmcgY29udGV4dCBlaXRoZXIuCiAgICAgY29u
c3QgQWZmaW5lVHJhbnNmb3JtJiBjdG0gPSBnZXRDVE0oKTsKLSAgICBib29sIGNhblVzZUNHUmVj
dEluZmluaXRlID0gIXdrQ0dDb250ZXh0SXNQREZDb250ZXh0KHBsYXRmb3JtQ29udGV4dCgpKSAm
JiAoIWlzQWNjZWxlcmF0ZWRDb250ZXh0KCkgfHwgKCFjdG0uYigpICYmICFjdG0uYygpKSk7Cisg
ICAgYm9vbCBjYW5Vc2VDR1JlY3RJbmZpbml0ZSA9IENHQ29udGV4dEdldFR5cGUocGxhdGZvcm1D
b250ZXh0KCkpICE9IGtDR0NvbnRleHRUeXBlUERGICYmICghaXNBY2NlbGVyYXRlZENvbnRleHQo
KSB8fCAoIWN0bS5iKCkgJiYgIWN0bS5jKCkpKTsKICAgICBDR1JlY3QgcmVjdHNbMl0gPSB7IGNh
blVzZUNHUmVjdEluZmluaXRlID8gQ0dSZWN0SW5maW5pdGUgOiBDR0NvbnRleHRHZXRDbGlwQm91
bmRpbmdCb3gocGxhdGZvcm1Db250ZXh0KCkpLCByZWN0IH07CiAgICAgQ0dDb250ZXh0QmVnaW5Q
YXRoKHBsYXRmb3JtQ29udGV4dCgpKTsKICAgICBDR0NvbnRleHRBZGRSZWN0cyhwbGF0Zm9ybUNv
bnRleHQoKSwgcmVjdHMsIDIpOwpAQCAtMTA5Myw3ICsxMDkzLDcgQEAgc3RhdGljIHZvaWQgYXBw
bHlTaGFkb3dPZmZzZXRXb3JrYXJvdW5kSWZOZWVkZWQoY29uc3QgR3JhcGhpY3NDb250ZXh0JiBj
b250ZXh0LAogICAgIGlmIChjb250ZXh0LmlzQWNjZWxlcmF0ZWRDb250ZXh0KCkpCiAgICAgICAg
IHJldHVybjsKIAotICAgIGlmICh3a0NHQ29udGV4dERyYXdzV2l0aENvcnJlY3RTaGFkb3dPZmZz
ZXRzKGNvbnRleHQucGxhdGZvcm1Db250ZXh0KCkpKQorICAgIGlmIChDR0NvbnRleHREcmF3c1dp
dGhDb3JyZWN0U2hhZG93T2Zmc2V0cyhjb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpKSkKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgLy8gV29yayBhcm91bmQgPHJkYXI6Ly9wcm9ibGVtLzU1MzkzODg+
IGJ5IGVuc3VyaW5nIHRoYXQgdGhlIG9mZnNldHMgd2lsbCBnZXQgdHJ1bmNhdGVkCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QYXR0ZXJuQ0cuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGF0dGVybkNHLmNwcAppbmRleCA5
OGU2OWRlOGVkODlhMjRlODg2YTE0MmEwODM5NTllMmM3MjEzNWYwLi5kMGUyMWM4NzNhYTJkYzMw
YzUzY2M4YmFiNGY4YjA0MTQzNDAwMDk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jZy9QYXR0ZXJuQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL1BhdHRlcm5DRy5jcHAKQEAgLTMxLDggKzMxLDggQEAKIAogI2luY2x1
ZGUgIkFmZmluZVRyYW5zZm9ybS5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgotCiAj
aW5jbHVkZSA8Q29yZUdyYXBoaWNzL0NvcmVHcmFwaGljcy5oPgorI2luY2x1ZGUgPHBhbC9zcGkv
Y2cvQ29yZUdyYXBoaWNzU1BJLmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KIAogI2lm
IFBMQVRGT1JNKENPQ09BKQpAQCAtNzQsNyArNzQsNyBAQCBDR1BhdHRlcm5SZWYgUGF0dGVybjo6
Y3JlYXRlUGxhdGZvcm1QYXR0ZXJuKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdXNlclNwYWNlVHJh
bgogICAgIC8vIElmIHdlJ3JlIHJlcGVhdGluZyBpbiBib3RoIGRpcmVjdGlvbnMsIHdlIGNhbiB1
c2UgaW1hZ2UtYmFja2VkIHBhdHRlcm5zCiAgICAgLy8gaW5zdGVhZCBvZiBjdXN0b20gcGF0dGVy
bnMsIGFuZCBhdm9pZCB0aWxpbmctZWRnZSBwaXhlbCBjcmFja3MuCiAgICAgaWYgKG1fcmVwZWF0
WCAmJiBtX3JlcGVhdFkpCi0gICAgICAgIHJldHVybiB3a0NHUGF0dGVybkNyZWF0ZVdpdGhJbWFn
ZUFuZFRyYW5zZm9ybSh0aWxlSW1hZ2UoKS5uYXRpdmVJbWFnZSgpLmdldCgpLCBwYXR0ZXJuVHJh
bnNmb3JtLCB3a1BhdHRlcm5UaWxpbmdDb25zdGFudFNwYWNpbmcpOworICAgICAgICByZXR1cm4g
Q0dQYXR0ZXJuQ3JlYXRlV2l0aEltYWdlMih0aWxlSW1hZ2UoKS5uYXRpdmVJbWFnZSgpLmdldCgp
LCBwYXR0ZXJuVHJhbnNmb3JtLCBrQ0dQYXR0ZXJuVGlsaW5nQ29uc3RhbnRTcGFjaW5nKTsKIAog
ICAgIC8vIElmIEZMVF9NQVggc2hvdWxkIGFsc28gYmUgdXNlZCBmb3IgeFN0ZXAgb3IgeVN0ZXAs
IG5vdGhpbmcgaXMgcmVuZGVyZWQuIFVzaW5nIGZyYWN0aW9ucyBvZiBGTFRfTUFYIGFsc28KICAg
ICAvLyByZXN1bHQgaW4gbm90aGluZyBiZWluZyByZW5kZXJlZC4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dENvY29hLm1t
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0
Q29jb2EubW0KaW5kZXggNjdmNGRlYjE3MmI2YzBmZTIzYzFiMWQxZmIwOWVhYjhhZGFlMTMxYi4u
NDVkNzczOWQ2NDZkNzhhMTdlN2Q3MjE4OWQyZDdjYzMxMWRjYzdjZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0Q29jb2Eu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3ND
b250ZXh0Q29jb2EubW0KQEAgLTI5LDEwICsyOSwxMyBAQAogI2ltcG9ydCAiR3JhcGhpY3NDb250
ZXh0Q0cuaCIKICNpbXBvcnQgIkdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZUNHLmgiCiAj
aW1wb3J0ICJJbnRSZWN0LmgiCisjaW1wb3J0IDxwYWwvc3BpL2NnL0NvcmVHcmFwaGljc1NQSS5o
PgorI2ltcG9ydCA8cGFsL3NwaS9tYWMvTlNHcmFwaGljc1NQSS5oPgorI2ltcG9ydCA8d3RmL1N0
ZExpYkV4dHJhcy5oPgorCiAjaWYgVVNFKEFQUEtJVCkKICNpbXBvcnQgPEFwcEtpdC9BcHBLaXQu
aD4KICNlbmRpZgotI2ltcG9ydCA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCiAjaWYgUExBVEZPUk0o
SU9TKQogI2ltcG9ydCAiQ29sb3IuaCIKQEAgLTQzLDcgKzQ2LDYgQEAKICNpZiAhUExBVEZPUk0o
SU9TKQogI2ltcG9ydCAiTG9jYWxDdXJyZW50R3JhcGhpY3NDb250ZXh0LmgiCiAjZW5kaWYKLSNp
bXBvcnQgIldlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaCIKIAogQGNsYXNzIE5TQ29sb3I7CiAKQEAg
LTU3LDExICs1OSw0NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAvLyBleGNlcHRpb25zIGZvciB0
aG9zZS4KIAogI2lmICFQTEFURk9STShJT1MpCitDR0NvbG9yUmVmIEdyYXBoaWNzQ29udGV4dDo6
Zm9jdXNSaW5nQ29sb3IoKQoreworICAgIHN0YXRpYyBDR0NvbG9yUmVmIGNvbG9yOworICAgIGlm
ICghY29sb3IpIHsKKyAgICAgICAgQ0dGbG9hdCBjb2xvckNvbXBvbmVudHNbXSA9IHsgMC41LCAw
Ljc1LCAxLjAsIDEuMCB9OworICAgICAgICBhdXRvIGNvbG9yU3BhY2UgPSBhZG9wdENGKENHQ29s
b3JTcGFjZUNyZWF0ZVdpdGhOYW1lKGtDR0NvbG9yU3BhY2VTUkdCKSk7CisgICAgICAgIGNvbG9y
ID0gQ0dDb2xvckNyZWF0ZShjb2xvclNwYWNlLmdldCgpLCBjb2xvckNvbXBvbmVudHMpOworICAg
IH0KKyAgICByZXR1cm4gY29sb3I7Cit9CisKK3N0YXRpYyBib29sIGRyYXdGb2N1c1JpbmdBdFRp
bWUoQ0dDb250ZXh0UmVmIGNvbnRleHQsIE5TVGltZUludGVydmFsIHRpbWVPZmZzZXQpCit7Cisg
ICAgQ0dGb2N1c1JpbmdTdHlsZSBmb2N1c1JpbmdTdHlsZTsKKyAgICBCT09MIG5lZWRzUmVwYWlu
dCA9IE5TSW5pdGlhbGl6ZUNHRm9jdXNSaW5nU3R5bGVGb3JUaW1lKE5TRm9jdXNSaW5nT25seSwg
JmZvY3VzUmluZ1N0eWxlLCB0aW1lT2Zmc2V0KTsKKworICAgIC8vIFdlIHdhbnQgdG8gcmVzcGVj
dCB0aGUgQ0dDb250ZXh0IGNsaXBwaW5nIGFuZCBhbHNvIG5vdCBvdmVycGFpbnQgYW55CisgICAg
Ly8gZXhpc3RpbmcgZm9jdXMgcmluZy4gVGhlIHdheSB0byBkbyB0aGlzIGlzIHNldCBhY2N1bXVs
YXRlIHRvCisgICAgLy8gLTEuIEFjY29yZGluZyB0byBDb3JlR3JhcGhpY3MsIHRoZSByZWFzb25p
bmcgZm9yIHRoaXMgYmVoYXZpb3IgaGFzIGJlZW4KKyAgICAvLyBsb3N0IGluIHRpbWUuCisgICAg
Zm9jdXNSaW5nU3R5bGUuYWNjdW11bGF0ZSA9IC0xOworICAgIGF1dG8gc3R5bGUgPSBhZG9wdENG
KENHU3R5bGVDcmVhdGVGb2N1c1JpbmdXaXRoQ29sb3IoJmZvY3VzUmluZ1N0eWxlLCBHcmFwaGlj
c0NvbnRleHQ6OmZvY3VzUmluZ0NvbG9yKCkpKTsKKworICAgIENHQ29udGV4dFNhdmVHU3RhdGUo
Y29udGV4dCk7CisgICAgQ0dDb250ZXh0U2V0U3R5bGUoY29udGV4dCwgc3R5bGUuZ2V0KCkpOwor
ICAgIENHQ29udGV4dEZpbGxQYXRoKGNvbnRleHQpOworICAgIENHQ29udGV4dFJlc3RvcmVHU3Rh
dGUoY29udGV4dCk7CisKKyAgICByZXR1cm4gbmVlZHNSZXBhaW50OworfQorCitzdGF0aWMgdm9p
ZCBkcmF3Rm9jdXNSaW5nKENHQ29udGV4dFJlZiBjb250ZXh0KQoreworICAgIGRyYXdGb2N1c1Jp
bmdBdFRpbWUoY29udGV4dCwgREJMX01BWCk7Cit9CisKIHN0YXRpYyB2b2lkIGRyYXdGb2N1c1Jp
bmdUb0NvbnRleHQoQ0dDb250ZXh0UmVmIGNvbnRleHQsIENHUGF0aFJlZiBmb2N1c1JpbmdQYXRo
KQogewogICAgIENHQ29udGV4dEJlZ2luUGF0aChjb250ZXh0KTsKICAgICBDR0NvbnRleHRBZGRQ
YXRoKGNvbnRleHQsIGZvY3VzUmluZ1BhdGgpOwotICAgIHdrRHJhd0ZvY3VzUmluZyhjb250ZXh0
LCBudWxscHRyLCAwKTsKKyAgICBkcmF3Rm9jdXNSaW5nKGNvbnRleHQpOwogfQogCiBzdGF0aWMg
Ym9vbCBkcmF3Rm9jdXNSaW5nVG9Db250ZXh0QXRUaW1lKENHQ29udGV4dFJlZiBjb250ZXh0LCBD
R1BhdGhSZWYgZm9jdXNSaW5nUGF0aCwgZG91YmxlIHRpbWVPZmZzZXQpCkBAIC02OSw3ICsxMDcs
NyBAQCBzdGF0aWMgYm9vbCBkcmF3Rm9jdXNSaW5nVG9Db250ZXh0QXRUaW1lKENHQ29udGV4dFJl
ZiBjb250ZXh0LCBDR1BhdGhSZWYgZm9jdXNSaQogICAgIFVOVVNFRF9QQVJBTSh0aW1lT2Zmc2V0
KTsKICAgICBDR0NvbnRleHRCZWdpblBhdGgoY29udGV4dCk7CiAgICAgQ0dDb250ZXh0QWRkUGF0
aChjb250ZXh0LCBmb2N1c1JpbmdQYXRoKTsKLSAgICByZXR1cm4gd2tEcmF3Rm9jdXNSaW5nQXRU
aW1lKGNvbnRleHQsIHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6bWF4KCkpOworICAgIHJl
dHVybiBkcmF3Rm9jdXNSaW5nQXRUaW1lKGNvbnRleHQsIHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91
YmxlPjo6bWF4KCkpOwogfQogI2VuZGlmIC8vICFQTEFURk9STShJT1MpCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlSU9TLm1t
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2VJT1Mu
bW0KaW5kZXggMDlhMTgyODE0ZDE0MDEzYjdjODhlOGVlYmYwM2Q5YWUwY2ZhMjg2OS4uNzU3ZDA0
NWY1YzU4NTQ0NDk2ZjJkZDY5MDUwYmQxYWY4NjhjMmVkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW9zL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2VJT1MubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2VJT1MubW0KQEAg
LTI3LDEwICsyNyw4IEBACiAjaW1wb3J0ICJXZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmgiCiAKIFdF
QkNPUkVfRVhQT1JUIHZvaWQgKCp3a0NBTGF5ZXJFbnVtZXJhdGVSZWN0c0JlaW5nRHJhd25XaXRo
QmxvY2spKENBTGF5ZXIgKiwgQ0dDb250ZXh0UmVmIGNvbnRleHQsIHZvaWQgKF5ibG9jaykoQ0dS
ZWN0IHJlY3QpKTsKLVdFQkNPUkVfRVhQT1JUIENHUGF0dGVyblJlZiAoKndrQ0dQYXR0ZXJuQ3Jl
YXRlV2l0aEltYWdlQW5kVHJhbnNmb3JtKShDR0ltYWdlUmVmLCBDR0FmZmluZVRyYW5zZm9ybSwg
aW50KTsKIFdFQkNPUkVfRVhQT1JUIHZvaWQgKCp3a0NsZWFyR2x5cGhWZWN0b3IpKHZvaWQqIGds
eXBocyk7CiBXRUJDT1JFX0VYUE9SVCBPU1N0YXR1cyAoKndrQ29udmVydENoYXJUb0dseXBocyko
dm9pZCogc3R5bGVHcm91cCwgY29uc3QgVW5pQ2hhciosIHVuc2lnbmVkIG51bUNoYXJhY3RlcnMs
IHZvaWQqIGdseXBocyk7Ci1XRUJDT1JFX0VYUE9SVCBib29sICgqd2tDR0NvbnRleHRJc1BERkNv
bnRleHQpKENHQ29udGV4dFJlZik7CiBXRUJDT1JFX0VYUE9SVCBpZCAoKndrQ3JlYXRlTlNVUkxD
b25uZWN0aW9uRGVsZWdhdGVQcm94eSkodm9pZCk7CiBXRUJDT1JFX0VYUE9SVCB2b2lkICgqd2tT
ZXRDT05ORUNUUHJveHlGb3JTdHJlYW0pKENGUmVhZFN0cmVhbVJlZiwgQ0ZTdHJpbmdSZWYgcHJv
eHlIb3N0LCBDRk51bWJlclJlZiBwcm94eVBvcnQpOwogV0VCQ09SRV9FWFBPUlQgdm9pZCAoKndr
U2V0Q09OTkVDVFByb3h5QXV0aG9yaXphdGlvbkZvclN0cmVhbSkoQ0ZSZWFkU3RyZWFtUmVmLCBD
RlN0cmluZ1JlZiBwcm94eUF1dGhvcml6YXRpb25TdHJpbmcpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbQppbmRleCAyMGU2MzVjMDkwNWFlODk2YzdiYjU0
MjFjODU2YjIxYjJhNDQ2YjQ5Li44MTg5ZGJiODY5YjUxZWMxZjZjMDAxNGFjOGE2YzJhNTMwMjgz
Njk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1h
Yy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbQpA
QCAtNTIsNiArNTIsOCBAQAogI2ltcG9ydCAiV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oIgogI2lt
cG9ydCAiV2ViTlNBdHRyaWJ1dGVkU3RyaW5nRXh0cmFzLmgiCiAjaW1wb3J0ICJtYXJrdXAuaCIK
KyNpbXBvcnQgPHBhbC9zcGkvY2cvQ29yZUdyYXBoaWNzU1BJLmg+CisjaW1wb3J0IDxwYWwvc3Bp
L21hYy9ISVNlcnZpY2VzU1BJLmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAjaW1wb3J0
IDx3dGYvU3RkTGliRXh0cmFzLmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+
CkBAIC02NjksNiArNjcxLDgwIEBAIFZlY3RvcjxTdHJpbmc+IFBhc3RlYm9hcmQ6OnJlYWRGaWxl
bmFtZXMoKQogfQogCiAjaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkKK3N0YXRpYyB2b2lkIGZsaXBJ
bWFnZVNwZWMoQ29yZURyYWdJbWFnZVNwZWMqIGltYWdlU3BlYykKK3sKKyAgICB1bnNpZ25lZCBj
aGFyKiB0ZW1wUm93ID0gKHVuc2lnbmVkIGNoYXIqKWZhc3RNYWxsb2MoaW1hZ2VTcGVjLT5ieXRl
c1BlclJvdyk7CisgICAgaW50IHBsYW5lcyA9IGltYWdlU3BlYy0+aXNQbGFuYXIgPyBpbWFnZVNw
ZWMtPnNhbXBsZXNQZXJQaXhlbCA6IDE7CisKKyAgICBmb3IgKGludCBwID0gMDsgcCA8IHBsYW5l
czsgcCsrKSB7CisgICAgICAgIHVuc2lnbmVkIGNoYXIqIHRvcFJvdyA9ICh1bnNpZ25lZCBjaGFy
KilpbWFnZVNwZWMtPmRhdGFbcF07CisgICAgICAgIHVuc2lnbmVkIGNoYXIqIGJvdFJvdyA9IHRv
cFJvdyArIChpbWFnZVNwZWMtPnBpeGVsc0hpZ2ggLSAxKSAqIGltYWdlU3BlYy0+Ynl0ZXNQZXJS
b3c7CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgaW1hZ2VTcGVjLT5waXhlbHNIaWdoIC8g
MjsgaSsrLCB0b3BSb3cgKz0gaW1hZ2VTcGVjLT5ieXRlc1BlclJvdywgYm90Um93IC09IGltYWdl
U3BlYy0+Ynl0ZXNQZXJSb3cpIHsKKyAgICAgICAgICAgIGJjb3B5KHRvcFJvdywgIHRlbXBSb3cs
IGltYWdlU3BlYy0+Ynl0ZXNQZXJSb3cpOworICAgICAgICAgICAgYmNvcHkoYm90Um93LCAgdG9w
Um93LCAgaW1hZ2VTcGVjLT5ieXRlc1BlclJvdyk7CisgICAgICAgICAgICBiY29weSh0ZW1wUm93
LCBib3RSb3csICBpbWFnZVNwZWMtPmJ5dGVzUGVyUm93KTsKKyAgICAgICAgfQorICAgIH0KKwor
ICAgIGZhc3RGcmVlKHRlbXBSb3cpOworfQorCitzdGF0aWMgdm9pZCBzZXREcmFnSW1hZ2VJbXBs
KE5TSW1hZ2UgKmltYWdlLCBOU1BvaW50IG9mZnNldCkKK3sKKyAgICBib29sIGZsaXBJbWFnZTsK
KyAgICBOU1NpemUgaW1hZ2VTaXplID0gaW1hZ2Uuc2l6ZTsKKyAgICBDR1JlY3QgaW1hZ2VSZWN0
ID0gQ0dSZWN0TWFrZSgwLCAwLCBpbWFnZVNpemUud2lkdGgsIGltYWdlU2l6ZS5oZWlnaHQpOwor
ICAgIE5TSW1hZ2VSZXAgKmltYWdlUmVwID0gW2ltYWdlIGJlc3RSZXByZXNlbnRhdGlvbkZvclJl
Y3Q6TlNSZWN0RnJvbUNHUmVjdChpbWFnZVJlY3QpIGNvbnRleHQ6bmlsIGhpbnRzOm5pbF07Cisg
ICAgUmV0YWluUHRyPE5TQml0bWFwSW1hZ2VSZXA+IGJpdG1hcEltYWdlOworICAgIGlmICghaW1h
Z2VSZXAgfHwgIVtpbWFnZVJlcCBpc0tpbmRPZkNsYXNzOltOU0JpdG1hcEltYWdlUmVwIGNsYXNz
XV0gfHwgIU5TRXF1YWxTaXplcyhpbWFnZVJlcC5zaXplLCBpbWFnZVNpemUpKSB7CisgICAgICAg
IFtpbWFnZSBsb2NrRm9jdXNdOworICAgICAgICBiaXRtYXBJbWFnZSA9IGFkb3B0TlMoW1tOU0Jp
dG1hcEltYWdlUmVwIGFsbG9jXSBpbml0V2l0aEZvY3VzZWRWaWV3UmVjdDoqKE5TUmVjdCAqKSZp
bWFnZVJlY3RdKTsKKyAgICAgICAgW2ltYWdlIHVubG9ja0ZvY3VzXTsKKyAgICAgICAgCisgICAg
ICAgIC8vIHdlIG1heSBoYXZlIHRvIGZsaXAgdGhlIGJpdHMgd2UganVzdCByZWFkIGlmIHRoZSBp
bWFnZSB3YXMgZmxpcHBlZCBzaW5jZSBpdCBtZWFucyB0aGUgY2FjaGUgd2FzIGFsc28KKyAgICAg
ICAgLy8gYW5kIENvcmVEcmFnU2V0SW1hZ2UgY2FuJ3QgdGFrZSBhIHRyYW5zZm9ybSBmb3IgcmVu
ZGVyaW5nLgorI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHB1c2gKKyNwcmFnbWEgY2xhbmcgZGlh
Z25vc3RpYyBpZ25vcmVkICItV2RlcHJlY2F0ZWQtZGVjbGFyYXRpb25zIgorICAgICAgICBmbGlw
SW1hZ2UgPSBpbWFnZS5pc0ZsaXBwZWQ7CisjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcG9wCisg
ICAgfSBlbHNlIHsKKyAgICAgICAgZmxpcEltYWdlID0gZmFsc2U7CisgICAgICAgIGJpdG1hcElt
YWdlID0gKE5TQml0bWFwSW1hZ2VSZXAgKilpbWFnZVJlcDsKKyAgICB9CisgICAgQVNTRVJUKGJp
dG1hcEltYWdlKTsKKworICAgIENvcmVEcmFnSW1hZ2VTcGVjIGltYWdlU3BlYzsKKyAgICBpbWFn
ZVNwZWMudmVyc2lvbiA9IGtDb3JlRHJhZ0ltYWdlU3BlY1ZlcnNpb25PbmU7CisgICAgaW1hZ2VT
cGVjLnBpeGVsc1dpZGUgPSBbYml0bWFwSW1hZ2UgcGl4ZWxzV2lkZV07CisgICAgaW1hZ2VTcGVj
LnBpeGVsc0hpZ2ggPSBbYml0bWFwSW1hZ2UgcGl4ZWxzSGlnaF07CisgICAgaW1hZ2VTcGVjLmJp
dHNQZXJTYW1wbGUgPSBbYml0bWFwSW1hZ2UgYml0c1BlclNhbXBsZV07CisgICAgaW1hZ2VTcGVj
LnNhbXBsZXNQZXJQaXhlbCA9IFtiaXRtYXBJbWFnZSBzYW1wbGVzUGVyUGl4ZWxdOworICAgIGlt
YWdlU3BlYy5iaXRzUGVyUGl4ZWwgPSBbYml0bWFwSW1hZ2UgYml0c1BlclBpeGVsXTsKKyAgICBp
bWFnZVNwZWMuYnl0ZXNQZXJSb3cgPSBbYml0bWFwSW1hZ2UgYnl0ZXNQZXJSb3ddOworICAgIGlt
YWdlU3BlYy5pc1BsYW5hciA9IFtiaXRtYXBJbWFnZSBpc1BsYW5hcl07CisgICAgaW1hZ2VTcGVj
Lmhhc0FscGhhID0gW2JpdG1hcEltYWdlIGhhc0FscGhhXTsKKyAgICBbYml0bWFwSW1hZ2UgZ2V0
Qml0bWFwRGF0YVBsYW5lczoodW5zaWduZWQgY2hhcioqKWltYWdlU3BlYy5kYXRhXTsKKworICAg
IC8vIGlmIGltYWdlIHdhcyBmbGlwcGVkLCB3ZSBoYXZlIGFuIHVwc2lkZSBkb3duIGJpdG1hcCBz
aW5jZSB0aGUgY2FjaGUgaXMgcmVuZGVyZWQgZmxpcHBlZAorICAgIGlmIChmbGlwSW1hZ2UpCisg
ICAgICAgIGZsaXBJbWFnZVNwZWMoJmltYWdlU3BlYyk7CisKKyAgICBDR1NSZWdpb25PYmogaW1h
Z2VTaGFwZTsKKyAgICBPU1N0YXR1cyBlcnJvciA9IENHU05ld1JlZ2lvbldpdGhSZWN0KCZpbWFn
ZVJlY3QsICZpbWFnZVNoYXBlKTsKKyAgICBBU1NFUlQoZXJyb3IgPT0ga0NHRXJyb3JTdWNjZXNz
KTsKKyAgICBpZiAoZXJyb3IgIT0ga0NHRXJyb3JTdWNjZXNzKQorICAgICAgICByZXR1cm47CisK
KyAgICAvLyBtYWtlIHN1cmUgaW1hZ2UgaGFzIGludGVnZXIgb2Zmc2V0CisgICAgQ0dQb2ludCBp
bWFnZU9mZnNldCA9IHstb2Zmc2V0LngsIC0oaW1hZ2VTaXplLmhlaWdodCAtIG9mZnNldC55KX07
CisgICAgaW1hZ2VPZmZzZXQueCA9IGZsb29yKGltYWdlT2Zmc2V0LnggKyAwLjUpOworICAgIGlt
YWdlT2Zmc2V0LnkgPSBmbG9vcihpbWFnZU9mZnNldC55ICsgMC41KTsKKworICAgIGVycm9yID0g
Q29yZURyYWdTZXRJbWFnZShDb3JlRHJhZ0dldEN1cnJlbnREcmFnKCksIGltYWdlT2Zmc2V0LCAm
aW1hZ2VTcGVjLCBpbWFnZVNoYXBlLCAxLjApOworICAgIENHU1JlbGVhc2VSZWdpb24oaW1hZ2VT
aGFwZSk7CisgICAgQVNTRVJUKGVycm9yID09IGtDR0Vycm9yU3VjY2Vzcyk7Cit9CisKIHZvaWQg
UGFzdGVib2FyZDo6c2V0RHJhZ0ltYWdlKERyYWdJbWFnZSBpbWFnZSwgY29uc3QgSW50UG9pbnQm
IGxvY2F0aW9uKQogewogICAgIC8vIERvbid0IGFsbG93IHNldHRpbmcgdGhlIGRyYWcgaW1hZ2Ug
aWYgc29tZW9uZSBrZXB0IGEgcGFzdGVib2FyZCBhbmQgaXMgdHJ5aW5nIHRvIHNldCB0aGUgaW1h
Z2UgdG9vIGxhdGUuCkBAIC02NzcsNyArNzUzLDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjpzZXREcmFn
SW1hZ2UoRHJhZ0ltYWdlIGltYWdlLCBjb25zdCBJbnRQb2ludCYgbG9jYXRpb24pCiAKICAgICAv
LyBEYXNoYm9hcmQgd2FudHMgdG8gYmUgYWJsZSB0byBzZXQgdGhlIGRyYWcgaW1hZ2UgZHVyaW5n
IGRyYWdnaW5nLCBidXQgQ29jb2EgZG9lcyBub3QgYWxsb3cgdGhpcy4KICAgICAvLyBJbnN0ZWFk
IHdlIG11c3QgZHJvcCBkb3duIHRvIHRoZSBDb3JlR3JhcGhpY3MgQVBJLgotICAgIHdrU2V0RHJh
Z0ltYWdlKGltYWdlLmdldCgpLmdldCgpLCBsb2NhdGlvbik7CisgICAgc2V0RHJhZ0ltYWdlSW1w
bChpbWFnZS5nZXQoKS5nZXQoKSwgbG9jYXRpb24pOwogCiAgICAgLy8gSGFjazogV2UgbXVzdCBw
b3N0IGFuIGV2ZW50IHRvIHdha2UgdXAgdGhlIE5TRHJhZ01hbmFnZXIsIHdoaWNoIGlzIHNpdHRp
bmcgaW4gYSBuZXh0RXZlbnQgY2FsbAogICAgIC8vIHVwIHRoZSBzdGFjayBmcm9tIHVzIGJlY2F1
c2UgdGhlIENvcmVGb3VuZGF0aW9uIGRyYWcgbWFuYWdlciBkb2VzIG5vdCB1c2UgdGhlIHJ1biBs
b29wIGJ5IGl0c2VsZi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9Q
bGF0Zm9ybUV2ZW50RmFjdG9yeU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9Q
bGF0Zm9ybUV2ZW50RmFjdG9yeU1hYy5tbQppbmRleCBiYzFlMzY3ZmM0Njk0ZWFmNDYwYWIwZWE1
YTQyMzBkMDAwMDFhYzg5Li41MDAxMDA5ZjIxMTk0NWRhOTc3OGEzZWFhZjk5ZWQ4MzEyZmQ3NzU5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1FdmVudEZh
Y3RvcnlNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtRXZl
bnRGYWN0b3J5TWFjLm1tCkBAIC02NzMsNyArNjczLDcgQEAgc3RhdGljIGludCB0eXBlRm9yRXZl
bnQoTlNFdmVudCAqZXZlbnQpCiB7CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4oW05TTWVu
dSBtZW51VHlwZUZvckV2ZW50OmV2ZW50XSk7CiB9Ci0gICAgCisKIGNsYXNzIFBsYXRmb3JtTW91
c2VFdmVudEJ1aWxkZXIgOiBwdWJsaWMgUGxhdGZvcm1Nb3VzZUV2ZW50IHsKIHB1YmxpYzoKICAg
ICBQbGF0Zm9ybU1vdXNlRXZlbnRCdWlsZGVyKE5TRXZlbnQgKmV2ZW50LCBOU0V2ZW50ICpjb3Jy
ZXNwb25kaW5nUHJlc3N1cmVFdmVudCwgTlNWaWV3ICp3aW5kb3dWaWV3KQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbGJhclRoZW1lTWFjLm1tIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbGJhclRoZW1lTWFjLm1tCmluZGV4IGM0YzI4Nzc2
ODM1NzQ5NmFlYjI4OGZhNDFmMGRkOTVkMmQ3Y2MyODguLjZkMDViODZjNjNkMDVmN2I2ZDE0NzMx
N2VmZDI3ZmYzNDE1ODMxOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21h
Yy9TY3JvbGxiYXJUaGVtZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMv
U2Nyb2xsYmFyVGhlbWVNYWMubW0KQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJTY3JvbGxW
aWV3LmgiCiAjaW5jbHVkZSAiV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oIgogI2luY2x1ZGUgPENh
cmJvbi9DYXJib24uaD4KKyNpbmNsdWRlIDxwYWwvc3BpL2NnL0NvcmVHcmFwaGljc1NQSS5oPgog
I2luY2x1ZGUgPHBhbC9zcGkvbWFjL05TU2Nyb2xsZXJJbXBTUEkuaD4KICNpbmNsdWRlIDx3dGYv
QmxvY2tPYmpDRXhjZXB0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CkBAIC01NzMs
NyArNTc0LDcgQEAgc3RhdGljIFJldGFpblB0cjxDR0NvbG9yUmVmPiBsaW5lbkJhY2tncm91bmRD
b2xvcigpCiAgICAgaWYgKCFjZ0ltYWdlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAg
IFJldGFpblB0cjxDR1BhdHRlcm5SZWY+IHBhdHRlcm4gPSBhZG9wdENGKHdrQ0dQYXR0ZXJuQ3Jl
YXRlV2l0aEltYWdlQW5kVHJhbnNmb3JtKGNnSW1hZ2UsIENHQWZmaW5lVHJhbnNmb3JtSWRlbnRp
dHksIHdrUGF0dGVyblRpbGluZ05vRGlzdG9ydGlvbikpOworICAgIFJldGFpblB0cjxDR1BhdHRl
cm5SZWY+IHBhdHRlcm4gPSBhZG9wdENGKENHUGF0dGVybkNyZWF0ZVdpdGhJbWFnZTIoY2dJbWFn
ZSwgQ0dBZmZpbmVUcmFuc2Zvcm1JZGVudGl0eSwga0NHUGF0dGVyblRpbGluZ05vRGlzdG9ydGlv
bikpOwogICAgIFJldGFpblB0cjxDR0NvbG9yU3BhY2VSZWY+IGNvbG9yU3BhY2UgPSBhZG9wdENG
KENHQ29sb3JTcGFjZUNyZWF0ZVBhdHRlcm4oMCkpOwogCiAgICAgY29uc3QgQ0dGbG9hdCBhbHBo
YSA9IDEuMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9UaGVtZU1h
Yy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9UaGVtZU1hYy5tbQppbmRleCA5MGYx
MDQxZWZmN2YwYzY0N2Q2ZjgzOTFjMDI3ZjUzZDFhYjQ0NzE0Li44YTE5MjY1Y2Y1ZDgyZjIwMjVm
ZjUwMWVlZTJlZjk1MWY4NDM3ODUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tYWMvVGhlbWVNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1RoZW1l
TWFjLm1tCkBAIC0zNiw2ICszNiw3IEBACiAjaW1wb3J0ICJXZWJDb3JlU3lzdGVtSW50ZXJmYWNl
LmgiCiAjaW1wb3J0IDxDYXJib24vQ2FyYm9uLmg+CiAjaW1wb3J0IDxwYWwvc3BpL2NvY29hL05T
QnV0dG9uQ2VsbFNQSS5oPgorI2ltcG9ydCA8cGFsL3NwaS9tYWMvTlNHcmFwaGljc1NQSS5oPgog
I2ltcG9ydCA8d3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMuaD4KICNpbXBvcnQgPHd0Zi9OZXZlckRl
c3Ryb3llZC5oPgogI2ltcG9ydCA8d3RmL1N0ZExpYkV4dHJhcy5oPgpAQCAtMzQ5LDkgKzM1MCwz
MiBAQCBzdGF0aWMgTlNCdXR0b25DZWxsICpzaGFyZWRDaGVja2JveENlbGwoY29uc3QgQ29udHJv
bFN0YXRlcyYgc3RhdGVzLCBjb25zdCBJbnRTaQogICAgIHJldHVybiBjaGVja2JveENlbGw7CiB9
CiAKK3N0YXRpYyBib29sIGRyYXdDZWxsRm9jdXNSaW5nV2l0aEZyYW1lQXRUaW1lKE5TQ2VsbCAq
Y2VsbCwgTlNSZWN0IGNlbGxGcmFtZSwgTlNWaWV3ICpjb250cm9sVmlldywgTlNUaW1lSW50ZXJ2
YWwgdGltZU9mZnNldCkKK3sKKyAgICBDR0NvbnRleHRSZWYgY2dDb250ZXh0ID0gKENHQ29udGV4
dFJlZilbW05TR3JhcGhpY3NDb250ZXh0IGN1cnJlbnRDb250ZXh0XSBncmFwaGljc1BvcnRdOwor
ICAgIENHQ29udGV4dFNhdmVHU3RhdGUoY2dDb250ZXh0KTsKKworICAgIENHRm9jdXNSaW5nU3R5
bGUgZm9jdXNSaW5nU3R5bGU7CisgICAgYm9vbCBuZWVkc1JlcGFpbnQgPSBOU0luaXRpYWxpemVD
R0ZvY3VzUmluZ1N0eWxlRm9yVGltZShOU0ZvY3VzUmluZ09ubHksICZmb2N1c1JpbmdTdHlsZSwg
dGltZU9mZnNldCk7CisgICAgLy8gV2Ugd2FudCB0byByZXNwZWN0IHRoZSBDR0NvbnRleHQgY2xp
cHBpbmcgYW5kIGFsc28gbm90IG92ZXJwYWludCBhbnkKKyAgICAvLyBleGlzdGluZyBmb2N1cyBy
aW5nLiBUaGUgd2F5IHRvIGRvIHRoaXMgaXMgc2V0IGFjY3VtdWxhdGUgdG8KKyAgICAvLyAtMS4g
QWNjb3JkaW5nIHRvIENvcmVHcmFwaGljcywgdGhlIHJlYXNvbmluZyBmb3IgdGhpcyBiZWhhdmlv
ciBoYXMgYmVlbgorICAgIC8vIGxvc3QgaW4gdGltZS4KKyAgICBmb2N1c1JpbmdTdHlsZS5hY2N1
bXVsYXRlID0gLTE7CisgICAgYXV0byBzdHlsZSA9IGFkb3B0Q0YoQ0dTdHlsZUNyZWF0ZUZvY3Vz
UmluZ1dpdGhDb2xvcigmZm9jdXNSaW5nU3R5bGUsIEdyYXBoaWNzQ29udGV4dDo6Zm9jdXNSaW5n
Q29sb3IoKSkpOworICAgIENHQ29udGV4dFNldFN0eWxlKGNnQ29udGV4dCwgc3R5bGUuZ2V0KCkp
OworCisgICAgQ0dDb250ZXh0QmVnaW5UcmFuc3BhcmVuY3lMYXllcldpdGhSZWN0KGNnQ29udGV4
dCwgTlNSZWN0VG9DR1JlY3QoY2VsbEZyYW1lKSwgMCk7CisgICAgW2NlbGwgZHJhd0ZvY3VzUmlu
Z01hc2tXaXRoRnJhbWU6Y2VsbEZyYW1lIGluVmlldzpjb250cm9sVmlld107CisgICAgQ0dDb250
ZXh0RW5kVHJhbnNwYXJlbmN5TGF5ZXIoY2dDb250ZXh0KTsKKyAgICBDR0NvbnRleHRSZXN0b3Jl
R1N0YXRlKGNnQ29udGV4dCk7CisKKyAgICByZXR1cm4gbmVlZHNSZXBhaW50OworfQorCiBzdGF0
aWMgYm9vbCBkcmF3Q2VsbEZvY3VzUmluZyhOU0NlbGwgKmNlbGwsIE5TUmVjdCBjZWxsRnJhbWUs
IE5TVmlldyAqY29udHJvbFZpZXcpCiB7Ci0gICAgd2tEcmF3Q2VsbEZvY3VzUmluZ1dpdGhGcmFt
ZUF0VGltZShjZWxsLCBjZWxsRnJhbWUsIGNvbnRyb2xWaWV3LCBzdGQ6Om51bWVyaWNfbGltaXRz
PGRvdWJsZT46Om1heCgpKTsKKyAgICBkcmF3Q2VsbEZvY3VzUmluZ1dpdGhGcmFtZUF0VGltZShj
ZWxsLCBjZWxsRnJhbWUsIGNvbnRyb2xWaWV3LCBzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46
Om1heCgpKTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oCmluZGV4IDkzY2RmZDBjN2Fi
MWU5NjgwMTA2Y2E2NDg1NDQ4NTY2Yjc0NDRlNDYuLjZiZDE0Y2RiMmIwZWU2MDkwMTRlZDI3OTE3
NWQ0NzE1ZDdkMGU5YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9X
ZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFj
L1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaApAQCAtMTI2LDE0ICsxMjYsNyBAQCB0eXBlZGVmIGVu
dW0gewogICAgIHdrUGF0dGVyblRpbGluZ0NvbnN0YW50U3BhY2luZwogfSB3a1BhdHRlcm5UaWxp
bmc7CiAjaWYgIVBMQVRGT1JNKElPUykKLWV4dGVybiBib29sICgqd2tDR0NvbnRleHREcmF3c1dp
dGhDb3JyZWN0U2hhZG93T2Zmc2V0cykoQ0dDb250ZXh0UmVmKTsKLSNlbmRpZgotZXh0ZXJuIENH
UGF0dGVyblJlZiAoKndrQ0dQYXR0ZXJuQ3JlYXRlV2l0aEltYWdlQW5kVHJhbnNmb3JtKShDR0lt
YWdlUmVmLCBDR0FmZmluZVRyYW5zZm9ybSwgaW50KTsKLSNpZiAhUExBVEZPUk0oSU9TKQogZXh0
ZXJuIHZvaWQgKCp3a0RyYXdCZXplbGVkVGV4dEFyZWEpKE5TUmVjdCwgQk9PTCBlbmFibGVkKTsK
LWV4dGVybiB2b2lkICgqd2tEcmF3Rm9jdXNSaW5nKShDR0NvbnRleHRSZWYsIENHQ29sb3JSZWYs
IGludCk7Ci1leHRlcm4gYm9vbCAoKndrRHJhd0ZvY3VzUmluZ0F0VGltZSkoQ0dDb250ZXh0UmVm
LCBOU1RpbWVJbnRlcnZhbCB0aW1lKTsKLWV4dGVybiBib29sICgqd2tEcmF3Q2VsbEZvY3VzUmlu
Z1dpdGhGcmFtZUF0VGltZSkoTlNDZWxsICpjZWxsLCBOU1JlY3QgY2VsbEZyYW1lLCBOU1ZpZXcg
KmNvbnRyb2xWaWV3LCBOU1RpbWVJbnRlcnZhbCB0aW1lKTsKIGV4dGVybiB2b2lkICgqd2tEcmF3
TWVkaWFTbGlkZXJUcmFjaykoQ0dDb250ZXh0UmVmIGNvbnRleHQsIENHUmVjdCByZWN0LCBmbG9h
dCB0aW1lTG9hZGVkLCBmbG9hdCBjdXJyZW50VGltZSwKICAgICBmbG9hdCBkdXJhdGlvbiwgdW5z
aWduZWQgc3RhdGUpOwogZXh0ZXJuIHZvaWQgKCp3a0RyYXdNZWRpYVVJUGFydCkoaW50IHBhcnQs
IENHQ29udGV4dFJlZiBjb250ZXh0LCBDR1JlY3QgcmVjdCwgdW5zaWduZWQgc3RhdGUpOwpAQCAt
MTU3LDkgKzE1MCw2IEBAIHR5cGVkZWYgZW51bSB7CiB9IHdrTWVkaWFVSUNvbnRyb2xUeXBlOwog
ZXh0ZXJuIE5TQ29udHJvbCAqKCp3a0NyZWF0ZU1lZGlhVUlDb250cm9sKShpbnQpOwogCi1leHRl
cm4gdm9pZCAoKndrV2luZG93U2V0QWxwaGEpKE5TV2luZG93ICosIGZsb2F0KTsKLWV4dGVybiB2
b2lkICgqd2tXaW5kb3dTZXRTY2FsZWRGcmFtZSkoTlNXaW5kb3cgKiwgTlNSZWN0LCBOU1JlY3Qp
OwotCiBleHRlcm4gdW5zaWduZWQgKCp3a1FUSW5jbHVkZU9ubHlNb2Rlcm5NZWRpYUZpbGVUeXBl
cykodm9pZCk7CiBleHRlcm4gdm9pZCAoKndrUVRNb3ZpZURpc2FibGVDb21wb25lbnQpKHVpbnQz
Ml90WzVdKTsKIGV4dGVybiBmbG9hdCAoKndrUVRNb3ZpZU1heFRpbWVMb2FkZWQpKFFUTW92aWUq
KTsKQEAgLTE3Myw5ICsxNjMsNyBAQCBleHRlcm4gTlNBcnJheSAqKCp3a1FUR2V0U2l0ZXNJbk1l
ZGlhRG93bmxvYWRDYWNoZSkoKTsKIGV4dGVybiB2b2lkICgqd2tRVENsZWFyTWVkaWFEb3dubG9h
ZENhY2hlRm9yU2l0ZSkoTlNTdHJpbmcgKnNpdGUpOwogZXh0ZXJuIHZvaWQgKCp3a1FUQ2xlYXJN
ZWRpYURvd25sb2FkQ2FjaGUpKCk7CiBleHRlcm4gdm9pZCAoKndrU2V0Q29va2llU3RvcmFnZVBy
aXZhdGVCcm93c2luZ0VuYWJsZWQpKEJPT0wpOwotZXh0ZXJuIHZvaWQgKCp3a1NldERyYWdJbWFn
ZSkoTlNJbWFnZSosIE5TUG9pbnQgb2Zmc2V0KTsKICNlbmRpZgotZXh0ZXJuIGJvb2wgKCp3a0NH
Q29udGV4dElzUERGQ29udGV4dCkoQ0dDb250ZXh0UmVmKTsKIGV4dGVybiB2b2lkICgqd2tTZXRD
T05ORUNUUHJveHlGb3JTdHJlYW0pKENGUmVhZFN0cmVhbVJlZiwgQ0ZTdHJpbmdSZWYgcHJveHlI
b3N0LCBDRk51bWJlclJlZiBwcm94eVBvcnQpOwogZXh0ZXJuIHZvaWQgKCp3a1NldENPTk5FQ1RQ
cm94eUF1dGhvcml6YXRpb25Gb3JTdHJlYW0pKENGUmVhZFN0cmVhbVJlZiwgQ0ZTdHJpbmdSZWYg
cHJveHlBdXRob3JpemF0aW9uU3RyaW5nKTsKIGV4dGVybiBDRkhUVFBNZXNzYWdlUmVmICgqd2tD
b3B5Q09OTkVDVFByb3h5UmVzcG9uc2UpKENGUmVhZFN0cmVhbVJlZiwgQ0ZVUkxSZWYgcmVzcG9u
c2VVUkwsIENGU3RyaW5nUmVmIHByb3h5SG9zdCwgQ0ZOdW1iZXJSZWYgcHJveHlQb3J0KTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlU3lzdGVtSW50ZXJm
YWNlLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVTeXN0ZW1JbnRlcmZh
Y2UubW0KaW5kZXggNjQ5ZDdhNjdjZDY3NjU0YTJhM2UzOTRlOTM1ZjhjNTI2ZmEzOTI1YS4uYjRi
NWMwMDg2YzQyZTJkNDNkMzA2YjkyZjYxNDI2ZjQ3YzkzNmI4MiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2UubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2UubW0KQEAgLTMx
LDEyICszMSw3IEBACiAjaW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KIAogdm9pZCAo
KndrQ0FMYXllckVudW1lcmF0ZVJlY3RzQmVpbmdEcmF3bldpdGhCbG9jaykoQ0FMYXllciAqLCBD
R0NvbnRleHRSZWYgY29udGV4dCwgdm9pZCAoXmJsb2NrKShDR1JlY3QgcmVjdCkpOwotYm9vbCAo
KndrQ0dDb250ZXh0RHJhd3NXaXRoQ29ycmVjdFNoYWRvd09mZnNldHMpKENHQ29udGV4dFJlZik7
Ci1DR1BhdHRlcm5SZWYgKCp3a0NHUGF0dGVybkNyZWF0ZVdpdGhJbWFnZUFuZFRyYW5zZm9ybSko
Q0dJbWFnZVJlZiwgQ0dBZmZpbmVUcmFuc2Zvcm0sIGludCk7CiB2b2lkICgqd2tEcmF3QmV6ZWxl
ZFRleHRBcmVhKShOU1JlY3QsIEJPT0wgZW5hYmxlZCk7Ci12b2lkICgqd2tEcmF3Rm9jdXNSaW5n
KShDR0NvbnRleHRSZWYsIENHQ29sb3JSZWYsIGludCk7Ci1ib29sICgqd2tEcmF3Rm9jdXNSaW5n
QXRUaW1lKShDR0NvbnRleHRSZWYsIE5TVGltZUludGVydmFsKTsKLWJvb2wgKCp3a0RyYXdDZWxs
Rm9jdXNSaW5nV2l0aEZyYW1lQXRUaW1lKShOU0NlbGwqLCBOU1JlY3QsIE5TVmlldyosIE5TVGlt
ZUludGVydmFsKTsKIHZvaWQgKCp3a0RyYXdNZWRpYVNsaWRlclRyYWNrKShDR0NvbnRleHRSZWYg
Y29udGV4dCwgQ0dSZWN0IHJlY3QsIGZsb2F0IHRpbWVMb2FkZWQsIGZsb2F0IGN1cnJlbnRUaW1l
LAogICAgIGZsb2F0IGR1cmF0aW9uLCB1bnNpZ25lZCBzdGF0ZSk7CiBCT09MICgqd2tIaXRUZXN0
TWVkaWFVSVBhcnQpKGludCBwYXJ0LCBDR1JlY3QgYm91bmRzLCBDR1BvaW50IHBvaW50KTsKQEAg
LTQ0LDggKzM5LDYgQEAgdm9pZCAoKndrRHJhd01lZGlhVUlQYXJ0KShpbnQgcGFydCwgQ0dDb250
ZXh0UmVmIGNvbnRleHQsIENHUmVjdCByZWN0LCB1bnNpZ25lZAogdm9pZCAoKndrTWVhc3VyZU1l
ZGlhVUlQYXJ0KShpbnQgcGFydCwgQ0dSZWN0ICpib3VuZHMsIENHU2l6ZSAqbmF0dXJhbFNpemUp
OwogTlNWaWV3ICooKndrQ3JlYXRlTWVkaWFVSUJhY2tncm91bmRWaWV3KSh2b2lkKTsKIE5TQ29u
dHJvbCAqKCp3a0NyZWF0ZU1lZGlhVUlDb250cm9sKShpbnQpOwotdm9pZCAoKndrV2luZG93U2V0
QWxwaGEpKE5TV2luZG93ICosIGZsb2F0KTsKLXZvaWQgKCp3a1dpbmRvd1NldFNjYWxlZEZyYW1l
KShOU1dpbmRvdyAqLCBOU1JlY3QsIE5TUmVjdCk7CiBOU1RpbWVJbnRlcnZhbCAoKndrR2V0TlNV
UkxSZXNwb25zZUNhbGN1bGF0ZWRFeHBpcmF0aW9uKShOU1VSTFJlc3BvbnNlICpyZXNwb25zZSk7
CiBCT09MICgqd2tHZXROU1VSTFJlc3BvbnNlTXVzdFJldmFsaWRhdGUpKE5TVVJMUmVzcG9uc2Ug
KnJlc3BvbnNlKTsKIHZvaWQgKCp3a0dldFdoZWVsRXZlbnREZWx0YXMpKE5TRXZlbnQqLCBmbG9h
dCogZGVsdGFYLCBmbG9hdCogZGVsdGFZLCBCT09MKiBjb250aW51b3VzKTsKQEAgLTY0LDggKzU3
LDYgQEAgTlNBcnJheSAqKCp3a1FUR2V0U2l0ZXNJbk1lZGlhRG93bmxvYWRDYWNoZSkoKTsKIHZv
aWQgKCp3a1FUQ2xlYXJNZWRpYURvd25sb2FkQ2FjaGVGb3JTaXRlKShOU1N0cmluZyAqc2l0ZSk7
CiB2b2lkICgqd2tRVENsZWFyTWVkaWFEb3dubG9hZENhY2hlKSgpOwogCi12b2lkICgqd2tTZXRE
cmFnSW1hZ2UpKE5TSW1hZ2UqLCBOU1BvaW50IG9mZnNldCk7Ci1ib29sICgqd2tDR0NvbnRleHRJ
c1BERkNvbnRleHQpKENHQ29udGV4dFJlZik7CiB2b2lkICgqd2tTZXRDT05ORUNUUHJveHlGb3JT
dHJlYW0pKENGUmVhZFN0cmVhbVJlZiwgQ0ZTdHJpbmdSZWYgcHJveHlIb3N0LCBDRk51bWJlclJl
ZiBwcm94eVBvcnQpOwogdm9pZCAoKndrU2V0Q09OTkVDVFByb3h5QXV0aG9yaXphdGlvbkZvclN0
cmVhbSkoQ0ZSZWFkU3RyZWFtUmVmLCBDRlN0cmluZ1JlZiBwcm94eUF1dGhvcml6YXRpb25TdHJp
bmcpOwogQ0ZIVFRQTWVzc2FnZVJlZiAoKndrQ29weUNPTk5FQ1RQcm94eVJlc3BvbnNlKShDRlJl
YWRTdHJlYW1SZWYsIENGVVJMUmVmIHJlc3BvbnNlVVJMLCBDRlN0cmluZ1JlZiBwcm94eUhvc3Qs
IENGTnVtYmVyUmVmIHByb3h5UG9ydCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tYWMvV2ViV2luZG93QW5pbWF0aW9uLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL1dlYldpbmRvd0FuaW1hdGlvbi5tbQppbmRleCA4YWJjODQwYjczY2M2NDVjOGFjNDA2ZGVh
ZmFlOTQyMmNkYzM1M2UyLi5jYTU1OWRmMGJjYTliNjI0ZGUyZmMwNDJhMmYzYTE1NmM4NzBhODJm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViV2luZG93QW5pbWF0
aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJXaW5kb3dBbmltYXRp
b24ubW0KQEAgLTI5LDYgKzI5LDcgQEAKIAogI2ltcG9ydCAiRmxvYXRDb252ZXJzaW9uLmgiCiAj
aW1wb3J0ICJXZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmgiCisjaW1wb3J0IDxwYWwvc3BpL2NnL0Nv
cmVHcmFwaGljc1NQSS5oPgogI2ltcG9ydCA8d3RmL0Fzc2VydGlvbnMuaD4KICNpbXBvcnQgPHd0
Zi9NYXRoRXh0cmFzLmg+CiAKQEAgLTEwOSw2ICsxMTAsNTkgQEAgLSAoTlNSZWN0KWN1cnJlbnRG
cmFtZQogICAgIHJldHVybiBzY2FsZWRSZWN0KF9maW5hbEZyYW1lLCBfaW5pdGlhbEZyYW1lLCBb
c2VsZiBjdXJyZW50VmFsdWVdKTsKIH0KIAorc3RhdGljIHZvaWQgZmxpcFJlY3QoTlNSZWN0ICpy
ZWN0KQoreworICAgIHJlY3QtPm9yaWdpbi55ID0gTlNNYXhZKFsoTlNTY3JlZW4gKilbW05TU2Ny
ZWVuIHNjcmVlbnNdIG9iamVjdEF0SW5kZXg6MF0gZnJhbWVdKSAtIE5TTWF4WSgqcmVjdCk7Cit9
CisKK3N0YXRpYyBDR1NDb25uZWN0aW9uSUQgbWFpbldpbmRvd1NlcnZlckNvbm5lY3Rpb25JRCgp
Cit7CisgICAgc3RhdGljIENHU0Nvbm5lY3Rpb25JRCBjZ3NJZDsKKyAgICBpZiAoIWNnc0lkKQor
ICAgICAgICBjZ3NJZCA9IENHU01haW5Db25uZWN0aW9uSUQoKTsKKyAgICByZXR1cm4gY2dzSWQ7
Cit9CisKK3N0YXRpYyB2b2lkIHNldFNjYWxlZEZyYW1lRm9yV2luZG93KE5TV2luZG93ICp3aW5k
b3csIE5TUmVjdCBzY2FsZUZyYW1lLCBOU1JlY3Qgbm9uU2NhbGVkRnJhbWUpCit7CisgICAgaWYg
KE5TRXF1YWxSZWN0cyhzY2FsZUZyYW1lLCBub25TY2FsZWRGcmFtZSkpIHsKKyAgICAgICAgQ0dT
U2V0V2luZG93V2FycChtYWluV2luZG93U2VydmVyQ29ubmVjdGlvbklEKCksIFt3aW5kb3cgd2lu
ZG93TnVtYmVyXSwgMCwgMCwgTlVMTCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisg
ICAgZmxvYXQgbWVzaFsxNl07CisgICAgCisgICAgZmxpcFJlY3QoJnNjYWxlRnJhbWUpOworICAg
IGZsaXBSZWN0KCZub25TY2FsZWRGcmFtZSk7CisgICAgCisgICAgLy8gdG9wLWxlZnQgcG9pbnQg
KHRvIGFuZCBmcm9tKQorICAgIG1lc2hbMF0gPSAwOworICAgIG1lc2hbMV0gPSAwOworICAgIG1l
c2hbMl0gPSBOU01pblgoc2NhbGVGcmFtZSk7CisgICAgbWVzaFszXSA9IE5TTWluWShzY2FsZUZy
YW1lKTsKKyAgICAKKyAgICAvLyB0b3AtcmlnaHQgcG9pbnQgKHRvIGFuZCBmcm9tKQorICAgIG1l
c2hbNF0gPSBOU1dpZHRoKG5vblNjYWxlZEZyYW1lKTsKKyAgICBtZXNoWzVdID0gMDsKKyAgICBt
ZXNoWzZdID0gTlNNYXhYKHNjYWxlRnJhbWUpOworICAgIG1lc2hbN10gPSBOU01pblkoc2NhbGVG
cmFtZSk7CisgICAgCisgICAgLy8gYm90dG9tLWxlZnQgKHRvIGFuZCBmcm9tKQorICAgIG1lc2hb
OF0gPSAwOworICAgIG1lc2hbOV0gPSBOU0hlaWdodChub25TY2FsZWRGcmFtZSk7CisgICAgbWVz
aFsxMF0gPSBOU01pblgoc2NhbGVGcmFtZSk7CisgICAgbWVzaFsxMV0gPSBOU01heFkoc2NhbGVG
cmFtZSk7CisgICAgCisgICAgLy8gYm90dG9tLXJpZ2h0ICh0byBhbmQgZnJvbSkKKyAgICBtZXNo
WzEyXSA9IE5TV2lkdGgobm9uU2NhbGVkRnJhbWUpOworICAgIG1lc2hbMTNdID0gTlNIZWlnaHQo
bm9uU2NhbGVkRnJhbWUpOworICAgIG1lc2hbMTRdID0gTlNNYXhYKHNjYWxlRnJhbWUpOworICAg
IG1lc2hbMTVdID0gTlNNYXhZKHNjYWxlRnJhbWUpOworICAgIAorICAgIC8vIEFwcGx5IHRoZSB3
YXJwLgorICAgIENHU1NldFdpbmRvd1dhcnAobWFpbldpbmRvd1NlcnZlckNvbm5lY3Rpb25JRCgp
LCBbd2luZG93IHdpbmRvd051bWJlcl0sIDIsIDIsIG1lc2gpOworfQorCiAtICh2b2lkKXNldEN1
cnJlbnRQcm9ncmVzczooTlNBbmltYXRpb25Qcm9ncmVzcylwcm9ncmVzcwogewogICAgIGlmICgh
X3dpbmRvdykKQEAgLTExNyw3ICsxNzEsNyBAQCAtICh2b2lkKXNldEN1cnJlbnRQcm9ncmVzczoo
TlNBbmltYXRpb25Qcm9ncmVzcylwcm9ncmVzcwogICAgIFtzdXBlciBzZXRDdXJyZW50UHJvZ3Jl
c3M6cHJvZ3Jlc3NdOwogCiAgICAgTlNSZWN0IGN1cnJlbnRSZWN0ID0gW3NlbGYgY3VycmVudEZy
YW1lXTsKLSAgICB3a1dpbmRvd1NldFNjYWxlZEZyYW1lKF93aW5kb3csIGN1cnJlbnRSZWN0LCBf
cmVhbEZyYW1lKTsKKyAgICBzZXRTY2FsZWRGcmFtZUZvcldpbmRvdyhfd2luZG93LCBjdXJyZW50
UmVjdCwgX3JlYWxGcmFtZSk7CiAgICAgW19zdWJBbmltYXRpb24gc2V0Q3VycmVudFByb2dyZXNz
OnByb2dyZXNzXTsKIH0KIApAQCAtMjExLDcgKzI2NSw3IEBAIC0gKHZvaWQpc2V0Q3VycmVudFBy
b2dyZXNzOihOU0FuaW1hdGlvblByb2dyZXNzKXByb2dyZXNzCiAgICAgQVNTRVJUKF93aW5kb3cp
OwogICAgIFtzdXBlciBzZXRDdXJyZW50UHJvZ3Jlc3M6cHJvZ3Jlc3NdOwogCi0gICAgd2tXaW5k
b3dTZXRBbHBoYShfd2luZG93LCBbc2VsZiBjdXJyZW50QWxwaGFdKTsKKyAgICBDR1NTZXRXaW5k
b3dBbHBoYShtYWluV2luZG93U2VydmVyQ29ubmVjdGlvbklEKCksIF93aW5kb3cud2luZG93TnVt
YmVyLCBbc2VsZiBjdXJyZW50QWxwaGFdKTsKIH0KIAogLSAodm9pZClzZXRXaW5kb3c6KE5TV2lu
ZG93Kil3aW5kb3cKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9tYWMv
UGx1Z2luUHJvY2Vzc01hYy5tbSBiL1NvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9tYWMvUGx1
Z2luUHJvY2Vzc01hYy5tbQppbmRleCBkZDUzMzcwMjQ3ZjBhNmI3NGEwMWJmY2M4YWE5NmZhNmZm
ZjM0NDE4Li43ZmYxYmM5N2IyOTQ3ZmZhNDg5OWRkZjM5M2ZjMDk0OTQ5YTU3NWMzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvbWFjL1BsdWdpblByb2Nlc3NNYWMubW0K
KysrIGIvU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL21hYy9QbHVnaW5Qcm9jZXNzTWFjLm1t
CkBAIC01MzAsNyArNTMwLDEwIEBAIHZvaWQgUGx1Z2luUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFs
aXplUHJvY2Vzcyhjb25zdCBDaGlsZFByb2Nlc3NJbml0aWFsaXphdGlvblBhCiAKICAgICAvLyBG
SVhNRTogSXQgd291bGQgYmUgYmV0dGVyIHRvIHByb3h5IFNldEN1cnNvciBjYWxscyBvdmVyIHRv
IHRoZSBVSSBwcm9jZXNzIGluc3RlYWQgb2YKICAgICAvLyBhbGxvd2luZyBwbHVnLWlucyB0byBj
aGFuZ2UgdGhlIG1vdXNlIGN1cnNvciBhdCBhbnkgdGltZS4KLSAgICBXS0VuYWJsZVNldHRpbmdD
dXJzb3JXaGVuSW5CYWNrZ3JvdW5kKCk7CisgICAgLy8gRklYTUU6IFNldHNDdXJzb3JJbkJhY2tn
cm91bmQgY29ubmVjdGlvbiBwcm9wZXJ0eSBpcyBkZXByZWNhdGVkIGluIGZhdm9yIG9mIGtDR1NT
ZXRzQ3Vyc29ySW5CYWNrZ3JvdW5kVGFnQml0IHdpbmRvdyB0YWcgYml0LgorICAgIC8vIDxyZGFy
Oi8vcHJvYmxlbS83NzUyNDIyPiBhc2tzIGZvciBhbiBBUEkgdG8gc2V0IGN1cnNvciBmcm9tIGJh
Y2tncm91bmQgcHJvY2Vzc2VzLgorICAgIENHU0Nvbm5lY3Rpb25JRCBjaWQgPSBDR1NNYWluQ29u
bmVjdGlvbklEKCk7CisgICAgQ0dTU2V0Q29ubmVjdGlvblByb3BlcnR5KGNpZCwgY2lkLCBDRlNU
UigiU2V0c0N1cnNvckluQmFja2dyb3VuZCIpLCAoQ0ZUeXBlUmVmKWtDRkJvb2xlYW5UcnVlKTsK
IAogICAgIFJldGFpblB0cjxDRlVSTFJlZj4gcGx1Z2luVVJMID0gYWRvcHRDRihDRlVSTENyZWF0
ZVdpdGhGaWxlU3lzdGVtUGF0aCgwLCBtX3BsdWdpblBhdGguY3JlYXRlQ0ZTdHJpbmcoKS5nZXQo
KSwga0NGVVJMUE9TSVhQYXRoU3R5bGUsIGZhbHNlKSk7CiAgICAgaWYgKCFwbHVnaW5VUkwpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2luZG93U2VydmVyQ29ubmVj
dGlvbi5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dpbmRvd1NlcnZlckNvbm5lY3Rp
b24uaAppbmRleCA4MzhhMzRmYjVjMmQ0NGVlZTU0NjRlNTdlZGM3MGUxMGFkYmQzYjIwLi5lN2I1
MThjNmM1ZWIwYjA2MmQ4OWE5MWNhNzA1NzdiYTg0ZWIwNTExIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2luZG93U2VydmVyQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XaW5kb3dTZXJ2ZXJDb25uZWN0aW9uLmgKQEAgLTQxLDkg
KzQxLDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIHdpbmRvd1NlcnZlckNvbm5lY3Rpb25TdGF0ZUNo
YW5nZWQoKTsKIAogICAgIHZvaWQgYXBwbGljYXRpb25XaW5kb3dNb2RpZmljYXRpb25zU3RvcHBl
ZChib29sIHN0b3BwZWQpOwotCi0gICAgc3RhdGljIHZvaWQgYXBwbGljYXRpb25XaW5kb3dNb2Rp
ZmljYXRpb25zU3RhcnRlZCh1aW50MzJfdCwgdm9pZCosIHVpbnQzMl90LCB2b2lkKiwgdWludDMy
X3QpOwotICAgIHN0YXRpYyB2b2lkIGFwcGxpY2F0aW9uV2luZG93TW9kaWZpY2F0aW9uc1N0b3Bw
ZWQodWludDMyX3QsIHZvaWQqLCB1aW50MzJfdCwgdm9pZCosIHVpbnQzMl90KTsKICNlbmRpZgog
CiAgICAgYm9vbCBtX2FwcGxpY2F0aW9uV2luZG93TW9kaWZpY2F0aW9uc0hhdmVTdG9wcGVkOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dpbmRvd1NlcnZlckNvbm5l
Y3Rpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2luZG93U2VydmVyQ29ubmVj
dGlvbi5tbQppbmRleCA4MTk1MzVjMmFjMTI5YzhkNTIxMjE4Yzk3NTVjODRiNjFkNDRmMjg1Li5h
OWU1ZWQ1ZDYwMzZhNTY3NjA2MTUzYmU5NjBhMzRlMWFiMzYwOTQ1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2luZG93U2VydmVyQ29ubmVjdGlvbi5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2luZG93U2VydmVyQ29ubmVjdGlvbi5tbQpAQCAt
MjgsNiArMjgsNyBAQAogCiAjaW1wb3J0ICJXZWJLaXRTeXN0ZW1JbnRlcmZhY2UuaCIKICNpbXBv
cnQgIldlYlByb2Nlc3NQb29sLmgiCisjaW1wb3J0IDxwYWwvc3BpL2NnL0NvcmVHcmFwaGljc1NQ
SS5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIApAQCAtNDEsMTYgKzQyLDYgQEAgdm9pZCBXaW5k
b3dTZXJ2ZXJDb25uZWN0aW9uOjphcHBsaWNhdGlvbldpbmRvd01vZGlmaWNhdGlvbnNTdG9wcGVk
KGJvb2wgc3RvcHBlZCkKICAgICB3aW5kb3dTZXJ2ZXJDb25uZWN0aW9uU3RhdGVDaGFuZ2VkKCk7
CiB9CiAKLXZvaWQgV2luZG93U2VydmVyQ29ubmVjdGlvbjo6YXBwbGljYXRpb25XaW5kb3dNb2Rp
ZmljYXRpb25zU3RhcnRlZCh1aW50MzJfdCwgdm9pZCosIHVpbnQzMl90LCB2b2lkKiwgdWludDMy
X3QpCi17Ci0gICAgV2luZG93U2VydmVyQ29ubmVjdGlvbjo6c2luZ2xldG9uKCkuYXBwbGljYXRp
b25XaW5kb3dNb2RpZmljYXRpb25zU3RvcHBlZChmYWxzZSk7Ci19Ci0KLXZvaWQgV2luZG93U2Vy
dmVyQ29ubmVjdGlvbjo6YXBwbGljYXRpb25XaW5kb3dNb2RpZmljYXRpb25zU3RvcHBlZCh1aW50
MzJfdCwgdm9pZCosIHVpbnQzMl90LCB2b2lkKiwgdWludDMyX3QpCi17Ci0gICAgV2luZG93U2Vy
dmVyQ29ubmVjdGlvbjo6c2luZ2xldG9uKCkuYXBwbGljYXRpb25XaW5kb3dNb2RpZmljYXRpb25z
U3RvcHBlZCh0cnVlKTsKLX0KLQogdm9pZCBXaW5kb3dTZXJ2ZXJDb25uZWN0aW9uOjp3aW5kb3dT
ZXJ2ZXJDb25uZWN0aW9uU3RhdGVDaGFuZ2VkKCkKIHsKICAgICBmb3IgKGF1dG8qIHByb2Nlc3NQ
b29sIDogV2ViUHJvY2Vzc1Bvb2w6OmFsbFByb2Nlc3NQb29scygpKQpAQCAtNjUsMjMgKzU2LDQ4
IEBAIFdpbmRvd1NlcnZlckNvbm5lY3Rpb24mIFdpbmRvd1NlcnZlckNvbm5lY3Rpb246OnNpbmds
ZXRvbigpCiAgICAgcmV0dXJuIHdpbmRvd1NlcnZlckNvbm5lY3Rpb247CiB9CiAKKyNpZiBIQVZF
KFdJTkRPV19TRVJWRVJfT0NDTFVTSU9OX05PVElGSUNBVElPTlMpCitzdGF0aWMgYm9vbCByZWdp
c3Rlck9jY2x1c2lvbk5vdGlmaWNhdGlvbkhhbmRsZXIoQ0dTTm90aWZpY2F0aW9uVHlwZSB0eXBl
LCBDR1NOb3RpZnlDb25uZWN0aW9uUHJvY1B0ciBoYW5kbGVyKQoreworICAgIENHU0Nvbm5lY3Rp
b25JRCBtYWluQ29ubmVjdGlvbiA9IENHU01haW5Db25uZWN0aW9uSUQoKTsKKyAgICBzdGF0aWMg
Ym9vbCBub3RpZmljYXRpb25zRW5hYmxlZDsKKyAgICBpZiAoIW5vdGlmaWNhdGlvbnNFbmFibGVk
KSB7CisgICAgICAgIGlmIChDR1NQYWNrYWdlc0VuYWJsZUNvbm5lY3Rpb25PY2NsdXNpb25Ob3Rp
ZmljYXRpb25zKG1haW5Db25uZWN0aW9uLCB0cnVlLCBudWxscHRyKSAhPSBrQ0dFcnJvclN1Y2Nl
c3MpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGlmIChDR1NQYWNrYWdlc0Vu
YWJsZUNvbm5lY3Rpb25XaW5kb3dNb2RpZmljYXRpb25Ob3RpZmljYXRpb25zKG1haW5Db25uZWN0
aW9uLCB0cnVlLCBudWxscHRyKSAhPSBrQ0dFcnJvclN1Y2Nlc3MpCisgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgIG5vdGlmaWNhdGlvbnNFbmFibGVkID0gdHJ1ZTsKKyAgICB9CisK
KyAgICByZXR1cm4gQ0dTUmVnaXN0ZXJDb25uZWN0aW9uTm90aWZ5UHJvYyhtYWluQ29ubmVjdGlv
biwgaGFuZGxlciwgdHlwZSwgbnVsbHB0cikgPT0ga0NHRXJyb3JTdWNjZXNzOworfQorI2VuZGlm
CisKIFdpbmRvd1NlcnZlckNvbm5lY3Rpb246OldpbmRvd1NlcnZlckNvbm5lY3Rpb24oKQogICAg
IDogbV9hcHBsaWNhdGlvbldpbmRvd01vZGlmaWNhdGlvbnNIYXZlU3RvcHBlZChmYWxzZSkKIHsK
ICNpZiBIQVZFKFdJTkRPV19TRVJWRVJfT0NDTFVTSU9OX05PVElGSUNBVElPTlMpCiAgICAgc3Ry
dWN0IE9jY2x1c2lvbk5vdGlmaWNhdGlvbkhhbmRsZXIgewotICAgICAgICBXS09jY2x1c2lvbk5v
dGlmaWNhdGlvblR5cGUgbm90aWZpY2F0aW9uVHlwZTsKLSAgICAgICAgV0tPY2NsdXNpb25Ob3Rp
ZmljYXRpb25IYW5kbGVyIGhhbmRsZXI7CisgICAgICAgIENHU05vdGlmaWNhdGlvblR5cGUgbm90
aWZpY2F0aW9uVHlwZTsKKyAgICAgICAgQ0dTTm90aWZ5Q29ubmVjdGlvblByb2NQdHIgaGFuZGxl
cjsKICAgICAgICAgY29uc3QgY2hhciogbmFtZTsKICAgICB9OwogCisgICAgc3RhdGljIGF1dG8g
d2luZG93TW9kaWZpY2F0aW9uc1N0YXJ0ZWQgPSBbXShDR1NOb3RpZmljYXRpb25UeXBlLCB2b2lk
KiwgdWludDMyX3QsIHZvaWQqLCBDR1NDb25uZWN0aW9uSUQpIHsKKyAgICAgICAgV2luZG93U2Vy
dmVyQ29ubmVjdGlvbjo6c2luZ2xldG9uKCkuYXBwbGljYXRpb25XaW5kb3dNb2RpZmljYXRpb25z
U3RvcHBlZChmYWxzZSk7CisgICAgfTsKKworICAgIHN0YXRpYyBhdXRvIHdpbmRvd01vZGlmaWNh
dGlvbnNTdG9wcGVkID0gW10oQ0dTTm90aWZpY2F0aW9uVHlwZSwgdm9pZCosIHVpbnQzMl90LCB2
b2lkKiwgQ0dTQ29ubmVjdGlvbklEKSB7CisgICAgICAgIFdpbmRvd1NlcnZlckNvbm5lY3Rpb246
OnNpbmdsZXRvbigpLmFwcGxpY2F0aW9uV2luZG93TW9kaWZpY2F0aW9uc1N0b3BwZWQodHJ1ZSk7
CisgICAgfTsKKwogICAgIHN0YXRpYyBjb25zdCBPY2NsdXNpb25Ob3RpZmljYXRpb25IYW5kbGVy
IG9jY2x1c2lvbk5vdGlmaWNhdGlvbkhhbmRsZXJzW10gPSB7Ci0gICAgICAgIHsgV0tPY2NsdXNp
b25Ob3RpZmljYXRpb25UeXBlQXBwbGljYXRpb25XaW5kb3dNb2RpZmljYXRpb25zU3RhcnRlZCwg
YXBwbGljYXRpb25XaW5kb3dNb2RpZmljYXRpb25zU3RhcnRlZCwgIkFwcGxpY2F0aW9uIFdpbmRv
dyBNb2RpZmljYXRpb25zIFN0YXJ0ZWQiIH0sCi0gICAgICAgIHsgV0tPY2NsdXNpb25Ob3RpZmlj
YXRpb25UeXBlQXBwbGljYXRpb25XaW5kb3dNb2RpZmljYXRpb25zU3RvcHBlZCwgYXBwbGljYXRp
b25XaW5kb3dNb2RpZmljYXRpb25zU3RvcHBlZCwgIkFwcGxpY2F0aW9uIFdpbmRvdyBNb2RpZmlj
YXRpb25zIFN0b3BwZWQiIH0sCisgICAgICAgIHsga0NHU0Nvbm5lY3Rpb25XaW5kb3dNb2RpZmlj
YXRpb25zU3RhcnRlZCwgd2luZG93TW9kaWZpY2F0aW9uc1N0YXJ0ZWQsICJBcHBsaWNhdGlvbiBX
aW5kb3cgTW9kaWZpY2F0aW9ucyBTdGFydGVkIiB9LAorICAgICAgICB7IGtDR1NDb25uZWN0aW9u
V2luZG93TW9kaWZpY2F0aW9uc1N0b3BwZWQsIHdpbmRvd01vZGlmaWNhdGlvbnNTdG9wcGVkLCAi
QXBwbGljYXRpb24gV2luZG93IE1vZGlmaWNhdGlvbnMgU3RvcHBlZCIgfSwKICAgICB9OwogCiAg
ICAgZm9yIChjb25zdCBhdXRvJiBvY2NsdXNpb25Ob3RpZmljYXRpb25IYW5kbGVyIDogb2NjbHVz
aW9uTm90aWZpY2F0aW9uSGFuZGxlcnMpIHsKLSAgICAgICAgYm9vbCByZXN1bHQgPSBXS1JlZ2lz
dGVyT2NjbHVzaW9uTm90aWZpY2F0aW9uSGFuZGxlcihvY2NsdXNpb25Ob3RpZmljYXRpb25IYW5k
bGVyLm5vdGlmaWNhdGlvblR5cGUsIG9jY2x1c2lvbk5vdGlmaWNhdGlvbkhhbmRsZXIuaGFuZGxl
cik7CisgICAgICAgIGJvb2wgcmVzdWx0ID0gcmVnaXN0ZXJPY2NsdXNpb25Ob3RpZmljYXRpb25I
YW5kbGVyKG9jY2x1c2lvbk5vdGlmaWNhdGlvbkhhbmRsZXIubm90aWZpY2F0aW9uVHlwZSwgb2Nj
bHVzaW9uTm90aWZpY2F0aW9uSGFuZGxlci5oYW5kbGVyKTsKICAgICAgICAgVU5VU0VEX1BBUkFN
KHJlc3VsdCk7CiAgICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0UocmVzdWx0LCAiUmVnaXN0cmF0
aW9uIG9mIFwiJXNcIiBub3RpZmljYXRpb24gaGFuZGxlciBmYWlsZWQuXG4iLCBvY2NsdXNpb25O
b3RpZmljYXRpb25IYW5kbGVyLm5hbWUpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViU3lzdGVtSW50ZXJmYWNlLm1tIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJTeXN0ZW1JbnRl
cmZhY2UubW0KaW5kZXggNDRkYzdlY2IzNjIwZThmNDUxNDJlYjM3Yzc4NzVhZGNiM2I5NDEyYi4u
ODNkZDgzZTQzNGRiZDM0OTUzNDNhZTcxMDE5MjQ5MzJkOGZiYTUyMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJTeXN0ZW1JbnRlcmZh
Y2UubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9X
ZWJTeXN0ZW1JbnRlcmZhY2UubW0KQEAgLTM3LDIxICszNywxMSBAQCB2b2lkIEluaXRXZWJDb3Jl
U3lzdGVtSW50ZXJmYWNlKHZvaWQpCiAgICAgCiAgICAgZGlzcGF0Y2hfb25jZSgmaW5pdE9uY2Us
IF57CiAgICAgICAgIElOSVQoQ0FMYXllckVudW1lcmF0ZVJlY3RzQmVpbmdEcmF3bldpdGhCbG9j
ayk7Ci0gICAgICAgIElOSVQoQ0dQYXR0ZXJuQ3JlYXRlV2l0aEltYWdlQW5kVHJhbnNmb3JtKTsK
LSNpZiAhUExBVEZPUk0oSU9TKQotICAgICAgICBJTklUKENHQ29udGV4dERyYXdzV2l0aENvcnJl
Y3RTaGFkb3dPZmZzZXRzKTsKLSNlbmRpZgogICAgICAgICBJTklUKENvcHlDT05ORUNUUHJveHlS
ZXNwb25zZSk7CiAjaWYgIVBMQVRGT1JNKElPUykKICAgICAgICAgSU5JVChEcmF3QmV6ZWxlZFRl
eHRBcmVhKTsKLSAgICAgICAgSU5JVChEcmF3Rm9jdXNSaW5nKTsKLSAgICAgICAgSU5JVChEcmF3
Rm9jdXNSaW5nQXRUaW1lKTsKLSAgICAgICAgSU5JVChEcmF3Q2VsbEZvY3VzUmluZ1dpdGhGcmFt
ZUF0VGltZSk7CiAgICAgICAgIElOSVQoRHJhd01lZGlhU2xpZGVyVHJhY2spOwogICAgICAgICBJ
TklUKERyYXdNZWRpYVVJUGFydCk7Ci0jZW5kaWYKLSAgICAgICAgSU5JVChDR0NvbnRleHRJc1BE
RkNvbnRleHQpOwotI2lmICFQTEFURk9STShJT1MpCiAgICAgICAgIElOSVQoR2V0V2hlZWxFdmVu
dERlbHRhcyk7CiAgICAgICAgIElOSVQoR2V0TlNFdmVudEtleUNoYXIpOwogICAgICAgICBJTklU
KEhpdFRlc3RNZWRpYVVJUGFydCk7CkBAIC03MSwxNiArNjEsMTEgQEAgdm9pZCBJbml0V2ViQ29y
ZVN5c3RlbUludGVyZmFjZSh2b2lkKQogI2VuZGlmCiAgICAgICAgIElOSVQoU2V0Q09OTkVDVFBy
b3h5QXV0aG9yaXphdGlvbkZvclN0cmVhbSk7CiAgICAgICAgIElOSVQoU2V0Q09OTkVDVFByb3h5
Rm9yU3RyZWFtKTsKLSNpZiAhUExBVEZPUk0oSU9TKQotICAgICAgICBJTklUKFNldERyYWdJbWFn
ZSk7Ci0jZW5kaWYKIAogI2lmICFQTEFURk9STShJT1MpCiAgICAgICAgIElOSVQoRXhlY3V0YWJs
ZVdhc0xpbmtlZE9uT3JCZWZvcmVTbm93TGVvcGFyZCk7CiAgICAgICAgIElOSVQoQ29weURlZmF1
bHRTZWFyY2hQcm92aWRlckRpc3BsYXlOYW1lKTsKICAgICAgICAgSU5JVChDdXJzb3IpOwotICAg
ICAgICBJTklUKFdpbmRvd1NldFNjYWxlZEZyYW1lKTsKLSAgICAgICAgSU5JVChXaW5kb3dTZXRB
bHBoYSk7CiAgICAgICAgIElOSVQoU3BlZWNoU3ludGhlc2lzR2V0Vm9pY2VJZGVudGlmaWVycyk7
CiAgICAgICAgIElOSVQoU3BlZWNoU3ludGhlc2lzR2V0RGVmYXVsdFZvaWNlSWRlbnRpZmllckZv
ckxvY2FsZSk7CiAgICAgICAgIElOSVQoTlNFbGFzdGljRGVsdGFGb3JUaW1lRGVsdGEpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2FyYm9uL0hJV2ViVmlldy5tbSBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NhcmJvbi9ISVdlYlZpZXcubW0KaW5kZXggMzQ1ODVjMjUy
YzNiMThjYWNkNmUwN2FkNWU5NDQ4Nzc5ZDhiZTQ1Ny4uYTlmNmVhZWQ3MjAzODg0NzNlZTM2YWEw
MWRiMWQ5YjM0MzFkNmUwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2Fy
Ym9uL0hJV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DYXJib24vSElX
ZWJWaWV3Lm1tCkBAIC04NSw2ICs4NSwyMSBAQCAtIChpbnQpdGFnCiAKIEBlbmQKIAorQGludGVy
ZmFjZSBOU1dpbmRvd0dyYXBoaWNzQ29udGV4dCAoKQorLSAodm9pZClfd2ViX3NldEdyYXBoaWNz
UG9ydDooQ0dDb250ZXh0UmVmKWNvbnRleHQ7CitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBOU1dp
bmRvd0dyYXBoaWNzQ29udGV4dCAoKQorCistICh2b2lkKV93ZWJfc2V0R3JhcGhpY3NQb3J0OihD
R0NvbnRleHRSZWYpY29udGV4dAoreworICAgIENHQ29udGV4dFJldGFpbihjb250ZXh0KTsKKyAg
ICBDR0NvbnRleHRSZWxlYXNlKF9jZ3NDb250ZXh0KTsKKyAgICBfY2dzQ29udGV4dCA9IGNvbnRl
eHQ7Cit9CisKK0BlbmQKKwogc3RydWN0IEhJV2ViVmlldwogewogICAgIEhJVmlld1JlZgkJCQkJ
CQlmVmlld1JlZjsKQEAgLTI5MCw2ICszMDUsMjIgQEAgR2V0QmVoYXZpb3JzKCkKIAlyZXR1cm4g
a0NvbnRyb2xTdXBwb3J0c0RhdGFBY2Nlc3MgfCBrQ29udHJvbFN1cHBvcnRzR2V0UmVnaW9uIHwg
a0NvbnRyb2xHZXRzRm9jdXNPbkNsaWNrOwogfQogCitzdGF0aWMgQ0dDb250ZXh0UmVmIG92ZXJy
aWRlQ0dDb250ZXh0KE5TV2luZG93ICp3aW5kb3csIENHQ29udGV4dFJlZiBjb250ZXh0KQorewor
ICAgIE5TV2luZG93R3JhcGhpY3NDb250ZXh0ICpncmFwaGljc0NvbnRleHQgPSAoTlNXaW5kb3dH
cmFwaGljc0NvbnRleHQgKilbd2luZG93IGdyYXBoaWNzQ29udGV4dF07CisgICAgQ0dDb250ZXh0
UmVmIHNhdmVkQ29udGV4dCA9IChDR0NvbnRleHRSZWYpW2dyYXBoaWNzQ29udGV4dCBncmFwaGlj
c1BvcnRdOworICAgIENHQ29udGV4dFJldGFpbihzYXZlZENvbnRleHQpOworICAgIFtncmFwaGlj
c0NvbnRleHQgX3dlYl9zZXRHcmFwaGljc1BvcnQ6Y29udGV4dF07CisgICAgcmV0dXJuIHNhdmVk
Q29udGV4dDsKK30KKworc3RhdGljIHZvaWQgcmVzdG9yZUNHQ29udGV4dChOU1dpbmRvdyAqd2lu
ZG93LCBDR0NvbnRleHRSZWYgc2F2ZWRDb250ZXh0KQoreworICAgIE5TV2luZG93R3JhcGhpY3ND
b250ZXh0ICpncmFwaGljc0NvbnRleHQgPSAoTlNXaW5kb3dHcmFwaGljc0NvbnRleHQgKilbd2lu
ZG93IGdyYXBoaWNzQ29udGV4dF07CisgICAgW2dyYXBoaWNzQ29udGV4dCBfd2ViX3NldEdyYXBo
aWNzUG9ydDpzYXZlZENvbnRleHRdOworICAgIENHQ29udGV4dFJlbGVhc2Uoc2F2ZWRDb250ZXh0
KTsKK30KKwogLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAvLyBEcmF3CiAvLy0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KQEAgLTMyMSw3ICszNTIsNyBAQCBEcmF3KCBISVdlYlZpZXcqIGlu
VmlldywgUmduSGFuZGxlIGxpbWl0UmduLCBDR0NvbnRleHRSZWYgaW5Db250ZXh0ICkKIAogCUhJ
Vmlld0dldEJvdW5kcyggaW5WaWV3LT5mVmlld1JlZiwgJmJvdW5kcyApOwogCi0gICAgQ0dDb250
ZXh0UmVmIHNhdmVkQ29udGV4dCA9IFdLTlNXaW5kb3dPdmVycmlkZUNHQ29udGV4dChpblZpZXct
PmZLaXRXaW5kb3csIGluQ29udGV4dCk7CisgICAgQ0dDb250ZXh0UmVmIHNhdmVkQ29udGV4dCA9
IG92ZXJyaWRlQ0dDb250ZXh0KGluVmlldy0+ZktpdFdpbmRvdywgaW5Db250ZXh0KTsKICAgICBb
TlNHcmFwaGljc0NvbnRleHQgc2V0Q3VycmVudENvbnRleHQ6W2luVmlldy0+ZktpdFdpbmRvdyBn
cmFwaGljc0NvbnRleHRdXTsKIAogCUdldFJlZ2lvbkJvdW5kcyggbGltaXRSZ24sICZkcmF3UmVj
dCApOwpAQCAtMzUxLDcgKzM4Miw3IEBAIERyYXcoIEhJV2ViVmlldyogaW5WaWV3LCBSZ25IYW5k
bGUgbGltaXRSZ24sIENHQ29udGV4dFJlZiBpbkNvbnRleHQgKQogICAgIGVsc2UKICAgICAgICAg
W2luVmlldy0+ZldlYlZpZXcgZGlzcGxheVJlY3Q6KihOU1JlY3QqKSZoaVJlY3RdOwogCi0gICAg
V0tOU1dpbmRvd1Jlc3RvcmVDR0NvbnRleHQoaW5WaWV3LT5mS2l0V2luZG93LCBzYXZlZENvbnRl
eHQpOworICAgIHJlc3RvcmVDR0NvbnRleHQoaW5WaWV3LT5mS2l0V2luZG93LCBzYXZlZENvbnRl
eHQpOwogCiAgICAgaWYgKCAhaW5WaWV3LT5mSXNDb21wb3NpdGVkICkKICAgICB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9XZWJIb3N0ZWROZXRz
Y2FwZVBsdWdpblZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3Rl
ZC9XZWJIb3N0ZWROZXRzY2FwZVBsdWdpblZpZXcubW0KaW5kZXggOWUyMDQ0ZTI2ZTEzOTAyMWVi
OGNhNjMzNjI1NWYyYzgzM2MxYjhiMi4uNjk1YTVjZjUyNzM3M2QzMDlhODNiNjRkNmYxZDAxMDBl
ZDNhNDA4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0
ZWQvV2ViSG9zdGVkTmV0c2NhcGVQbHVnaW5WaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1BsdWdpbnMvSG9zdGVkL1dlYkhvc3RlZE5ldHNjYXBlUGx1Z2luVmlldy5tbQpAQCAt
NzYsNyArNzYsNyBAQCArICh2b2lkKWluaXRpYWxpemUKICAgICBXVEY6OmluaXRpYWxpemVNYWlu
VGhyZWFkVG9Qcm9jZXNzTWFpblRocmVhZCgpOwogICAgIFJ1bkxvb3A6OmluaXRpYWxpemVNYWlu
UnVuTG9vcCgpOwogI2VuZGlmCi0gICAgV0tTZW5kVXNlckNoYW5nZU5vdGlmaWNhdGlvbnMoKTsK
KyAgICBzZW5kVXNlckNoYW5nZU5vdGlmaWNhdGlvbnMoKTsKIH0KIAogLSAoaWQpaW5pdFdpdGhG
cmFtZTooTlNSZWN0KWZyYW1lCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9Q
bHVnaW5zL1dlYkJhc2VOZXRzY2FwZVBsdWdpblZpZXcuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1BsdWdpbnMvV2ViQmFzZU5ldHNjYXBlUGx1Z2luVmlldy5oCmluZGV4IGMyMjIzYWI2ZDI2
NzUxZjM4YzM4OTU4MWJkMzQ5ZGU5ODE0YzE1YjEuLmNkNDMwZDM2Njk3MWVjOWZlMmVhMGQ0NDA1
OTNiNTgwYzljYTJlMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdp
bnMvV2ViQmFzZU5ldHNjYXBlUGx1Z2luVmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1BsdWdpbnMvV2ViQmFzZU5ldHNjYXBlUGx1Z2luVmlldy5oCkBAIC0xMzQsNiArMTM0LDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogbmFtZXNwYWNlIFdlYktpdCB7CiBib29sIGdldEF1dGhl
bnRpY2F0aW9uSW5mbyhjb25zdCBjaGFyKiBwcm90b2NvbFN0ciwgY29uc3QgY2hhciogaG9zdFN0
ciwgaW50MzJfdCBwb3J0LCBjb25zdCBjaGFyKiBzY2hlbWVTdHIsIGNvbnN0IGNoYXIqIHJlYWxt
U3RyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgV1RGOjpDU3RyaW5nJiB1c2VybmFtZSwg
V1RGOjpDU3RyaW5nJiBwYXNzd29yZCk7Cit2b2lkIHNlbmRVc2VyQ2hhbmdlTm90aWZpY2F0aW9u
cygpOwogfSAKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9Q
bHVnaW5zL1dlYkJhc2VOZXRzY2FwZVBsdWdpblZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9QbHVnaW5zL1dlYkJhc2VOZXRzY2FwZVBsdWdpblZpZXcubW0KaW5kZXggNjRkZTkwMTBl
YmRiMGIwNjlkNmY4NjNhM2ZlZjJmZmQ3YjVkNDMzOC4uYmUxYzMwYjNmMzA5ZGE2ODU1ZjNjZDFk
MjdhYjQ3MDg5YWVkMmMzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1
Z2lucy9XZWJCYXNlTmV0c2NhcGVQbHVnaW5WaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1BsdWdpbnMvV2ViQmFzZU5ldHNjYXBlUGx1Z2luVmlldy5tbQpAQCAtNTUsNiArNTUs
NyBAQAogI2ltcG9ydCA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbi5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9XZWJDb3JlT2JqQ0V4dHJhcy5oPgogI2ltcG9ydCA8V2ViS2l0TGVnYWN5L0RPTVByaXZhdGUu
aD4KKyNpbXBvcnQgPHBhbC9zcGkvY2cvQ29yZUdyYXBoaWNzU1BJLmg+CiAjaW1wb3J0IDxydW50
aW1lL0luaXRpYWxpemVUaHJlYWRpbmcuaD4KICNpbXBvcnQgPHd0Zi9Bc3NlcnRpb25zLmg+CiAj
aW1wb3J0IDx3dGYvTWFpblRocmVhZC5oPgpAQCAtNzMsNyArNzQsNyBAQCArICh2b2lkKWluaXRp
YWxpemUKICAgICBKU0M6OmluaXRpYWxpemVUaHJlYWRpbmcoKTsKICAgICBXVEY6OmluaXRpYWxp
emVNYWluVGhyZWFkVG9Qcm9jZXNzTWFpblRocmVhZCgpOwogICAgIFJ1bkxvb3A6OmluaXRpYWxp
emVNYWluUnVuTG9vcCgpOwotICAgIFdLU2VuZFVzZXJDaGFuZ2VOb3RpZmljYXRpb25zKCk7Cisg
ICAgV2ViS2l0OjpzZW5kVXNlckNoYW5nZU5vdGlmaWNhdGlvbnMoKTsKIH0KIAogLSAoaWQpaW5p
dFdpdGhGcmFtZTooTlNSZWN0KWZyYW1lCkBAIC05MDAsNiArOTAxLDIzIEBAIGJvb2wgZ2V0QXV0
aGVudGljYXRpb25JbmZvKGNvbnN0IGNoYXIqIHByb3RvY29sU3RyLCBjb25zdCBjaGFyKiBob3N0
U3RyLCBpbnQzMl90CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK3ZvaWQgc2VuZFVzZXJDaGFuZ2VO
b3RpZmljYXRpb25zKCkKK3sKKyAgICBhdXRvIGNvbnNvbGVDb25uZWN0aW9uQ2hhbmdlTm90aWZ5
UHJvYyA9IFtdKENHU05vdGlmaWNhdGlvblR5cGUgdHlwZSwgQ0dTTm90aWZpY2F0aW9uRGF0YSwg
Q0dTQnl0ZUNvdW50LCBDR1NOb3RpZmljYXRpb25BcmcpIHsKKyAgICAgICAgTlNTdHJpbmcgKm5v
dGlmaWNhdGlvbk5hbWUgPSBuaWw7CisgICAgICAgIGlmICh0eXBlID09IGtDR1Nlc3Npb25Db25z
b2xlQ29ubmVjdCkKKyAgICAgICAgICAgIG5vdGlmaWNhdGlvbk5hbWUgPSBMb2dpbldpbmRvd0Rp
ZFN3aXRjaFRvVXNlck5vdGlmaWNhdGlvbjsKKyAgICAgICAgZWxzZSBpZiAodHlwZSA9PSBrQ0dT
ZXNzaW9uQ29uc29sZURpc2Nvbm5lY3QpCisgICAgICAgICAgICBub3RpZmljYXRpb25OYW1lID0g
TG9naW5XaW5kb3dEaWRTd2l0Y2hGcm9tVXNlck5vdGlmaWNhdGlvbjsKKyAgICAgICAgZWxzZQor
ICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIFtbTlNOb3RpZmljYXRp
b25DZW50ZXIgZGVmYXVsdENlbnRlcl0gcG9zdE5vdGlmaWNhdGlvbk5hbWU6bm90aWZpY2F0aW9u
TmFtZSBvYmplY3Q6bmlsXTsKKyAgICB9OworCisgICAgQ0dTUmVnaXN0ZXJOb3RpZnlQcm9jKGNv
bnNvbGVDb25uZWN0aW9uQ2hhbmdlTm90aWZ5UHJvYywga0NHU2Vzc2lvbkNvbnNvbGVDb25uZWN0
LCBOVUxMKTsKKyAgICBDR1NSZWdpc3Rlck5vdGlmeVByb2MoY29uc29sZUNvbm5lY3Rpb25DaGFu
Z2VOb3RpZnlQcm9jLCBrQ0dTZXNzaW9uQ29uc29sZURpc2Nvbm5lY3QsIE5VTEwpOworfQorCiB9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vICBFTkFCTEUoTkVUU0NBUEVfUExVR0lO
X0FQSSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViTmV0
c2NhcGVQbHVnaW5WaWV3Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJO
ZXRzY2FwZVBsdWdpblZpZXcubW0KaW5kZXggYzY4MGZmN2VlMzFjOTNiOGZiNDkyMjk3ZTRlN2Fk
OTE0MWE0ZGRlNC4uMmJiZDNkZWJlNjZlMThkOGYzMTgwYzk0Y2ExMzM3ZmNmN2Q4ODE3MCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdp
blZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJOZXRzY2Fw
ZVBsdWdpblZpZXcubW0KQEAgLTE5Myw3ICsxOTMsNyBAQCArICh2b2lkKWluaXRpYWxpemUKICAg
ICBKU0M6OmluaXRpYWxpemVUaHJlYWRpbmcoKTsKICAgICBXVEY6OmluaXRpYWxpemVNYWluVGhy
ZWFkVG9Qcm9jZXNzTWFpblRocmVhZCgpOwogICAgIFJ1bkxvb3A6OmluaXRpYWxpemVNYWluUnVu
TG9vcCgpOwotICAgIFdLU2VuZFVzZXJDaGFuZ2VOb3RpZmljYXRpb25zKCk7CisgICAgc2VuZFVz
ZXJDaGFuZ2VOb3RpZmljYXRpb25zKCk7CiB9CiAKIC8vIE1BUks6IEVWRU5UUwpAQCAtMzc5LDEw
ICszNzksMTAgQEAgLSAoUG9ydFN0YXRlKXNhdmVBbmRTZXROZXdQb3J0U3RhdGVGb3JVcGRhdGU6
KEJPT0wpZm9yVXBkYXRlCiAgICAgICAgICAgICBxZFBvcnRTdGF0ZS0+Y2xpcFJlZ2lvbiA9IGNs
aXBSZWdpb247CiAKICAgICAgICAgICAgIENHQ29udGV4dFJlZiBjdXJyZW50Q29udGV4dCA9IChD
R0NvbnRleHRSZWYpW1tOU0dyYXBoaWNzQ29udGV4dCBjdXJyZW50Q29udGV4dF0gZ3JhcGhpY3NQ
b3J0XTsKLSAgICAgICAgICAgIGlmIChjdXJyZW50Q29udGV4dCAmJiBXS0NHQ29udGV4dElzQml0
bWFwQ29udGV4dChjdXJyZW50Q29udGV4dCkpIHsKLSAgICAgICAgICAgICAgICAvLyBXZSB1c2Ug
V0tDR0NvbnRleHRJc0JpdG1hcENvbnRleHQgaGVyZSwgYmVjYXVzZSBpZiB3ZSBqdXN0IGNhbGxl
ZCBDR0JpdG1hcENvbnRleHRHZXREYXRhCi0gICAgICAgICAgICAgICAgLy8gb24gYW55IGNvbnRl
eHQsIHdlJ2QgbG9nIHRvIHRoZSBjb25zb2xlIGV2ZXJ5IHRpbWUuIEJ1dCBldmVuIGlmIFdLQ0dD
b250ZXh0SXNCaXRtYXBDb250ZXh0Ci0gICAgICAgICAgICAgICAgLy8gcmV0dXJucyB0cnVlLCBp
dCBzdGlsbCBtaWdodCBub3QgYmUgYSBjb250ZXh0IHdlIG5lZWQgdG8gY3JlYXRlIGEgR1dvcmxk
IGZvcjsgZm9yIGV4YW1wbGUKKyAgICAgICAgICAgIGlmIChjdXJyZW50Q29udGV4dCAmJiBDR0Nv
bnRleHRHZXRUeXBlKGN1cnJlbnRDb250ZXh0KSA9PSBrQ0dDb250ZXh0VHlwZUJpdG1hcCkgewor
ICAgICAgICAgICAgICAgIC8vIFdlIGNoZWNrIGZvciBrQ0dDb250ZXh0VHlwZUJpdG1hcCBoZXJl
LCBiZWNhdXNlIGlmIHdlIGp1c3QgY2FsbGVkIENHQml0bWFwQ29udGV4dEdldERhdGEKKyAgICAg
ICAgICAgICAgICAvLyBvbiBhbnkgY29udGV4dCwgd2UnZCBsb2cgdG8gdGhlIGNvbnNvbGUgZXZl
cnkgdGltZS4gQnV0IGV2ZW4gaWYgY3VycmVudENvbnRleHQgaXMgYQorICAgICAgICAgICAgICAg
IC8vIGtDR0NvbnRleHRUeXBlQml0bWFwLCBpdCBzdGlsbCBtaWdodCBub3QgYmUgYSBjb250ZXh0
IHdlIG5lZWQgdG8gY3JlYXRlIGEgR1dvcmxkIGZvcjsgZm9yIGV4YW1wbGUKICAgICAgICAgICAg
ICAgICAvLyB0cmFuc3BhcmVuY3kgbGF5ZXJzIHdpbGwgcmV0dXJuIHRydWUsIGJ1dCByZXR1cm4g
MCBmb3IgQ0dCaXRtYXBDb250ZXh0R2V0RGF0YS4KICAgICAgICAgICAgICAgICB2b2lkKiBvZmZz
Y3JlZW5EYXRhID0gQ0dCaXRtYXBDb250ZXh0R2V0RGF0YShjdXJyZW50Q29udGV4dCk7CiAgICAg
ICAgICAgICAgICAgaWYgKG9mZnNjcmVlbkRhdGEpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlN5c3RlbUludGVyZmFjZS5tbSBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlN5c3RlbUludGVyZmFjZS5tbQpp
bmRleCBkNDU1MTZmNWVlZTFjMDgyYzk4MjhkOWU3NDc0ZWM5Njg5YzQ3YjU4Li45YmUwMDAyZmQ1
M2Y0OTMzMzRlYjJjOTk5MzExZmE4Mzk0MmY3ZTNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJTeXN0ZW1JbnRlcmZhY2UubW0KKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViU3lzdGVtSW50ZXJmYWNlLm1t
CkBAIC00MywxNiArNDMsOSBAQCB2b2lkIEluaXRXZWJDb3JlU3lzdGVtSW50ZXJmYWNlKHZvaWQp
CiAgICAgICAgIHJldHVybjsKIAogICAgIElOSVQoQ0FMYXllckVudW1lcmF0ZVJlY3RzQmVpbmdE
cmF3bldpdGhCbG9jayk7Ci0gICAgSU5JVChDR1BhdHRlcm5DcmVhdGVXaXRoSW1hZ2VBbmRUcmFu
c2Zvcm0pOwotI2lmICFQTEFURk9STShJT1MpCi0gICAgSU5JVChDR0NvbnRleHREcmF3c1dpdGhD
b3JyZWN0U2hhZG93T2Zmc2V0cyk7Ci0jZW5kaWYKICAgICBJTklUKENvcHlDT05ORUNUUHJveHlS
ZXNwb25zZSk7CiAjaWYgIVBMQVRGT1JNKElPUykKICAgICBJTklUKERyYXdCZXplbGVkVGV4dEFy
ZWEpOwotICAgIElOSVQoRHJhd0ZvY3VzUmluZyk7Ci0gICAgSU5JVChEcmF3Rm9jdXNSaW5nQXRU
aW1lKTsKLSAgICBJTklUKERyYXdDZWxsRm9jdXNSaW5nV2l0aEZyYW1lQXRUaW1lKTsKICAgICBJ
TklUKERyYXdNZWRpYVVJUGFydCk7CiAgICAgSU5JVChEcmF3TWVkaWFTbGlkZXJUcmFjayk7CiAg
ICAgSU5JVChHZXRXaGVlbEV2ZW50RGVsdGFzKTsKQEAgLTYxLDE1ICs1NCw5IEBAIHZvaWQgSW5p
dFdlYkNvcmVTeXN0ZW1JbnRlcmZhY2Uodm9pZCkKICAgICBJTklUKE1lYXN1cmVNZWRpYVVJUGFy
dCk7CiAgICAgSU5JVChDcmVhdGVNZWRpYVVJQmFja2dyb3VuZFZpZXcpOwogICAgIElOSVQoQ3Jl
YXRlTWVkaWFVSUNvbnRyb2wpOwotICAgIElOSVQoV2luZG93U2V0QWxwaGEpOwotICAgIElOSVQo
V2luZG93U2V0U2NhbGVkRnJhbWUpOwogI2VuZGlmCiAgICAgSU5JVChTZXRDT05ORUNUUHJveHlB
dXRob3JpemF0aW9uRm9yU3RyZWFtKTsKICAgICBJTklUKFNldENPTk5FQ1RQcm94eUZvclN0cmVh
bSk7Ci0jaWYgIVBMQVRGT1JNKElPUykKLSAgICBJTklUKFNldERyYWdJbWFnZSk7Ci0jZW5kaWYK
LSAgICBJTklUKENHQ29udGV4dElzUERGQ29udGV4dCk7CiAjaWYgRU5BQkxFKFZJREVPKSAmJiAh
UExBVEZPUk0oSU9TKQogICAgIElOSVQoUVRJbmNsdWRlT25seU1vZGVybk1lZGlhRmlsZVR5cGVz
KTsKICAgICBJTklUKFFUTW92aWVEaXNhYmxlQ29tcG9uZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0gYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCmluZGV4IGYwZjhlNjI4NTgwYjI5ZmUwNDdlZGRm
NmViNDc1NzhjNmQwNWRkMmQuLmU3MDkzYzk2YWFjNDc0ZTNhZWU5ZTcyZDIzYjI0ZWIxYzU4OWEy
ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWUu
bW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQpAQCAt
NTk4LDcgKzU5OCw3IEBAIC0gKFBhaW50QmVoYXZpb3IpX3BhaW50QmVoYXZpb3JGb3JEZXN0aW5h
dGlvbkNvbnRleHQ6KENHQ29udGV4dFJlZiljb250ZXh0CiAgICAgICAgIHJldHVybiBQYWludEJl
aGF2aW9yRmxhdHRlbkNvbXBvc2l0aW5nTGF5ZXJzIHwgUGFpbnRCZWhhdmlvclNuYXBzaG90dGlu
ZzsKICNlbmRpZgogCi0gICAgaWYgKCFXS0NHQ29udGV4dElzQml0bWFwQ29udGV4dChjb250ZXh0
KSkKKyAgICBpZiAoQ0dDb250ZXh0R2V0VHlwZShjb250ZXh0KSAhPSBrQ0dDb250ZXh0VHlwZUJp
dG1hcCkKICAgICAgICAgcmV0dXJuIFBhaW50QmVoYXZpb3JOb3JtYWw7CiAKICAgICAvLyBJZiB3
ZSdyZSBkcmF3aW5nIGludG8gYSBiaXRtYXAsIHdlIG1pZ2h0IGJlIHNuYXBzaG90dGluZywgb3Ig
ZHJhd2luZyBpbnRvIGEgbGF5ZXItYmFja2VkIHZpZXcuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZ1bGxTY3JlZW5Db250cm9sbGVyLm1tIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGdWxsU2NyZWVuQ29udHJvbGxlci5tbQppbmRl
eCBmZDhmYzU2OTk3YWZjYjZhZDdmOTBjNWZjOTk4NGJhMzE3NjZlOTA3Li40MDUzZmZjODQ2NGEz
NWJiODZhZmI2NjZlM2NlZTdlZGNhY2U1ZWZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJWaWV3L1dlYkZ1bGxTY3JlZW5Db250cm9sbGVyLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnVsbFNjcmVlbkNvbnRyb2xsZXIubW0KQEAgLTI0
OSw2ICsyNDksMTYgQEAgLSAodm9pZCllbnRlckZ1bGxTY3JlZW46KE5TU2NyZWVuICopc2NyZWVu
CiAgICAgX2lzRW50ZXJpbmdGdWxsU2NyZWVuID0gdHJ1ZTsKIH0KIAorc3RhdGljIHZvaWQgc2V0
Q2xpcFJlY3RGb3JXaW5kb3coTlNXaW5kb3cgKndpbmRvdywgTlNSZWN0IGNsaXBSZWN0KQorewor
ICAgIENHU1dpbmRvd0lEIHdpbmRvd051bWJlciA9IChDR1NXaW5kb3dJRClbd2luZG93IHdpbmRv
d051bWJlcl07CisgICAgQ0dTUmVnaW9uT2JqIHNoYXBlOworICAgIENHUmVjdCBjZ0NsaXBSZWN0
ID0gTlNSZWN0VG9DR1JlY3QoY2xpcFJlY3QpOworICAgIENHU05ld1JlZ2lvbldpdGhSZWN0KCZj
Z0NsaXBSZWN0LCAmc2hhcGUpOworICAgIENHU1NldFdpbmRvd0NsaXBTaGFwZShDR1NNYWluQ29u
bmVjdGlvbklEKCksIHdpbmRvd051bWJlciwgc2hhcGUpOworICAgIENHU1JlbGVhc2VSZWdpb24o
c2hhcGUpOworfQorCiAtICh2b2lkKWZpbmlzaGVkRW50ZXJGdWxsU2NyZWVuQW5pbWF0aW9uOihi
b29sKWNvbXBsZXRlZAogewogICAgIGlmICghX2lzRW50ZXJpbmdGdWxsU2NyZWVuKQpAQCAtMjYz
LDcgKzI3Myw3IEBAIC0gKHZvaWQpZmluaXNoZWRFbnRlckZ1bGxTY3JlZW5BbmltYXRpb246KGJv
b2wpY29tcGxldGVkCiAgICAgICAgIAogICAgICAgICBOU1JlY3Qgd2luZG93Qm91bmRzID0gW1tz
ZWxmIHdpbmRvd10gZnJhbWVdOwogICAgICAgICB3aW5kb3dCb3VuZHMub3JpZ2luID0gTlNaZXJv
UG9pbnQ7Ci0gICAgICAgIFdLV2luZG93U2V0Q2xpcFJlY3QoW3NlbGYgd2luZG93XSwgd2luZG93
Qm91bmRzKTsKKyAgICAgICAgc2V0Q2xpcFJlY3RGb3JXaW5kb3coW3NlbGYgd2luZG93XSwgd2lu
ZG93Qm91bmRzKTsKICAgICAgICAgCiAgICAgICAgIE5TV2luZG93ICp3ZWJXaW5kb3cgPSBbX3dl
YlZpZXdQbGFjZWhvbGRlci5nZXQoKSB3aW5kb3ddOwogICAgICAgICAvLyBJbiBMaW9uLCBOU1dp
bmRvdyB3aWxsIGFuaW1hdGUgaW50byBhbmQgb3V0IG9mIG9yZGVyT3V0IG9wZXJhdGlvbnMuIFN1
cHByZXNzIHRoYXQKQEAgLTM1Myw3ICszNjMsNyBAQCAtICh2b2lkKWZpbmlzaGVkRXhpdEZ1bGxT
Y3JlZW5BbmltYXRpb246KGJvb2wpY29tcGxldGVkCiAgICAgCiAgICAgTlNSZWN0IHdpbmRvd0Jv
dW5kcyA9IFtbc2VsZiB3aW5kb3ddIGZyYW1lXTsKICAgICB3aW5kb3dCb3VuZHMub3JpZ2luID0g
TlNaZXJvUG9pbnQ7Ci0gICAgV0tXaW5kb3dTZXRDbGlwUmVjdChbc2VsZiB3aW5kb3ddLCB3aW5k
b3dCb3VuZHMpOworICAgIHNldENsaXBSZWN0Rm9yV2luZG93KFtzZWxmIHdpbmRvd10sIHdpbmRv
d0JvdW5kcyk7CiAgICAgCiAgICAgW1tzZWxmIHdpbmRvd10gb3JkZXJPdXQ6c2VsZl07CiAgICAg
W1tzZWxmIHdpbmRvd10gc2V0RnJhbWU6TlNaZXJvUmVjdCBkaXNwbGF5OllFU107CkBAIC00ODQs
MTMgKzQ5NCwxMyBAQCAtICh2b2lkKV9zdGFydEVudGVyRnVsbFNjcmVlbkFuaW1hdGlvbldpdGhE
dXJhdGlvbjooTlNUaW1lSW50ZXJ2YWwpZHVyYXRpb24KICAgICBbX3NjYWxlQW5pbWF0aW9uLmdl
dCgpIHNldEN1cnJlbnRQcm9ncmVzczowXTsKICAgICBbX3NjYWxlQW5pbWF0aW9uLmdldCgpIHN0
YXJ0QW5pbWF0aW9uXTsKICAgICAKLSAgICAvLyBXS1dpbmRvd1NldENsaXBSZWN0IHRha2VzIHdp
bmRvdyBjb29yZGluYXRlcywgc28gY29udmVydCBmcm9tIHNjcmVlbiBjb29yZGluYXRlcyBoZXJl
OgorICAgIC8vIHNldENsaXBSZWN0Rm9yV2luZG93IHRha2VzIHdpbmRvdyBjb29yZGluYXRlcywg
c28gY29udmVydCBmcm9tIHNjcmVlbiBjb29yZGluYXRlcyBoZXJlOgogICAgIE5TUmVjdCBmaW5h
bEJvdW5kcyA9IF9maW5hbEZyYW1lOwogI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHB1c2gKICNw
cmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBpZ25vcmVkICItV2RlcHJlY2F0ZWQtZGVjbGFyYXRpb25z
IgogICAgIGZpbmFsQm91bmRzLm9yaWdpbiA9IFtbc2VsZiB3aW5kb3ddIGNvbnZlcnRTY3JlZW5U
b0Jhc2U6ZmluYWxCb3VuZHMub3JpZ2luXTsKICNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwb3AK
LSAgICBXS1dpbmRvd1NldENsaXBSZWN0KFtzZWxmIHdpbmRvd10sIGZpbmFsQm91bmRzKTsKKyAg
ICBzZXRDbGlwUmVjdEZvcldpbmRvdyhbc2VsZiB3aW5kb3ddLCBmaW5hbEJvdW5kcyk7CiAgICAg
CiAgICAgW1tzZWxmIHdpbmRvd10gbWFrZUtleUFuZE9yZGVyRnJvbnQ6c2VsZl07CiAgICAgCkBA
IC01NTYsMTMgKzU2NiwxMyBAQCAtICh2b2lkKV9zdGFydEV4aXRGdWxsU2NyZWVuQW5pbWF0aW9u
V2l0aER1cmF0aW9uOihOU1RpbWVJbnRlcnZhbClkdXJhdGlvbgogICAgIAogICAgIFtfYmFja2dy
b3VuZFdpbmRvdy5nZXQoKSBvcmRlcldpbmRvdzpOU1dpbmRvd0JlbG93IHJlbGF0aXZlVG86W1tz
ZWxmIHdpbmRvd10gd2luZG93TnVtYmVyXV07CiAgICAgCi0gICAgLy8gV0tXaW5kb3dTZXRDbGlw
UmVjdCB0YWtlcyB3aW5kb3cgY29vcmRpbmF0ZXMsIHNvIGNvbnZlcnQgZnJvbSBzY3JlZW4gY29v
cmRpbmF0ZXMgaGVyZToKKyAgICAvLyBzZXRDbGlwUmVjdEZvcldpbmRvdyB0YWtlcyB3aW5kb3cg
Y29vcmRpbmF0ZXMsIHNvIGNvbnZlcnQgZnJvbSBzY3JlZW4gY29vcmRpbmF0ZXMgaGVyZToKICAg
ICBOU1JlY3QgZmluYWxCb3VuZHMgPSBfZmluYWxGcmFtZTsKICNwcmFnbWEgY2xhbmcgZGlhZ25v
c3RpYyBwdXNoCiAjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgaWdub3JlZCAiLVdkZXByZWNhdGVk
LWRlY2xhcmF0aW9ucyIKICAgICBmaW5hbEJvdW5kcy5vcmlnaW4gPSBbW3NlbGYgd2luZG93XSBj
b252ZXJ0U2NyZWVuVG9CYXNlOmZpbmFsQm91bmRzLm9yaWdpbl07CiAjcHJhZ21hIGNsYW5nIGRp
YWdub3N0aWMgcG9wCi0gICAgV0tXaW5kb3dTZXRDbGlwUmVjdChbc2VsZiB3aW5kb3ddLCBmaW5h
bEJvdW5kcyk7CisgICAgc2V0Q2xpcFJlY3RGb3JXaW5kb3coW3NlbGYgd2luZG93XSwgZmluYWxC
b3VuZHMpOwogICAgIAogICAgIFtbc2VsZiB3aW5kb3ddIHNldEF1dG9kaXNwbGF5OllFU107CiAg
ICAgW1tzZWxmIHdpbmRvd10gZGlzcGxheUlmTmVlZGVkXTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>319577</attachid>
            <date>2017-08-31 22:38:25 -0700</date>
            <delta_ts>2017-08-31 23:35:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-176200-20170831223824.patch</filename>
            <type>text/plain</type>
            <size>63540</size>
            <attacher name="Andy Estes">aestes</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIxMzgxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzVhYmE3NzU1NjhiNjgz
ZmZjOWVjZWE4MzhlNWFmOGRlMTVjOTY4Ni4uNmFhZDZiNmQxYzY3MzhkNGZkMTQwM2U4YjlhYjJj
MDZmZGEzM2M0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBACisyMDE3LTA4LTMxICBBbmR5
IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29jb2FdIFVwc3RyZWFtIENv
cmVHcmFwaGljcy1yZWxhdGVkIFdlYktpdFN5c3RlbUludGVyZmFjZSBmdW5jdGlvbnMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NjIwMAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NDb250ZXh0Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2VTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OnN1YnNhbXBsaW5n
TGV2ZWxGb3JTY2FsZUZhY3Rvcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3Jh
cGhpY3NDb250ZXh0Q0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0Ojpj
bGlwT3V0KToKKyAgICAgICAgKFdlYkNvcmU6OmFwcGx5U2hhZG93T2Zmc2V0V29ya2Fyb3VuZElm
TmVlZGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9QYXR0ZXJuQ0cuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UGF0dGVybjo6Y3JlYXRlUGxhdGZvcm1QYXR0ZXJuIGNvbnN0KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRDb2NvYS5t
bToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6Zm9jdXNSaW5nQ29sb3IpOgor
ICAgICAgICAoV2ViQ29yZTo6ZHJhd0ZvY3VzUmluZ0F0VGltZSk6CisgICAgICAgIChXZWJDb3Jl
OjpkcmF3Rm9jdXNSaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OmRyYXdGb2N1c1JpbmdUb0NvbnRl
eHQpOgorICAgICAgICAoV2ViQ29yZTo6ZHJhd0ZvY3VzUmluZ1RvQ29udGV4dEF0VGltZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vaW9zL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2VJT1MubW06CisgICAg
ICAgICogcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpm
bGlwSW1hZ2VTcGVjKToKKyAgICAgICAgKFdlYkNvcmU6OnNldERyYWdJbWFnZUltcGwpOgorICAg
ICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6c2V0RHJhZ0ltYWdlKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9tYWMvUGxhdGZvcm1FdmVudEZhY3RvcnlNYWMubW06CisgICAgICAgICogcGxhdGZvcm0v
bWFjL1Njcm9sbGJhclRoZW1lTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6bGluZW5CYWNrZ3Jv
dW5kQ29sb3IpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9UaGVtZU1hYy5tbToKKyAgICAgICAg
KFdlYkNvcmU6OmRyYXdDZWxsRm9jdXNSaW5nV2l0aEZyYW1lQXRUaW1lKToKKyAgICAgICAgKFdl
YkNvcmU6OmRyYXdDZWxsRm9jdXNSaW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvV2ViQ29y
ZVN5c3RlbUludGVyZmFjZS5oOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9XZWJDb3JlU3lzdGVt
SW50ZXJmYWNlLm1tOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9XZWJXaW5kb3dBbmltYXRpb24u
bW06CisgICAgICAgIChmbGlwUmVjdCk6CisgICAgICAgIChtYWluV2luZG93U2VydmVyQ29ubmVj
dGlvbklEKToKKyAgICAgICAgKHNldFNjYWxlZEZyYW1lRm9yV2luZG93KToKKyAgICAgICAgKC1b
V2ViV2luZG93U2NhbGVBbmltYXRpb24gc2V0Q3VycmVudFByb2dyZXNzOl0pOgorICAgICAgICAo
LVtXZWJXaW5kb3dGYWRlQW5pbWF0aW9uIHNldEN1cnJlbnRQcm9ncmVzczpdKToKKwogMjAxNy0w
OC0zMCAgQW5keSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+CiAKICAgICAgICAgW01hY10gVXBz
dHJlYW0gQWNjZXNzaWJpbGl0eS1yZWxhdGVkIFdlYktpdFN5c3RlbUludGVyZmFjZSBmdW5jdGlv
bnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
Q29yZS9QQUwvQ2hhbmdlTG9nCmluZGV4IDdiNGI2MDFmZTRlNWUxNTBmODE4OTc0NDU3YzY5ZWVi
OWI2MDEzNTEuLjYyN2UzZjM4ZmI0NDUyNGRiZTA5NDNjYzdkNGVjMjljMTg3ZTc2MzkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUv
UEFML0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDE3LTA4LTMxICBBbmR5IEVzdGVzICA8
YWVzdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29jb2FdIFVwc3RyZWFtIENvcmVHcmFwaGlj
cy1yZWxhdGVkIFdlYktpdFN5c3RlbUludGVyZmFjZSBmdW5jdGlvbnMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NjIwMAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogUEFMLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2o6CisgICAgICAgICogcGFsL3NwaS9jZy9Db3JlR3JhcGhpY3NTUEkuaDoKKyAgICAg
ICAgKiBwYWwvc3BpL21hYy9ISVNlcnZpY2VzU1BJLmg6CisgICAgICAgICogcGFsL3NwaS9tYWMv
TlNHcmFwaGljc1NQSS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9t
YWMvSElTZXJ2aWNlc1NQSS5oLgorCiAyMDE3LTA4LTMwICBBbmR5IEVzdGVzICA8YWVzdGVzQGFw
cGxlLmNvbT4KIAogICAgICAgICBbTWFjXSBVcHN0cmVhbSBBY2Nlc3NpYmlsaXR5LXJlbGF0ZWQg
V2ViS2l0U3lzdGVtSW50ZXJmYWNlIGZ1bmN0aW9ucwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBhODY2NmYzMzg1MzQx
ZDM1NmQ3YTBjNzEzMWVhMmFmZjY4MTRhNjhiLi4yMTVkMmY3ZDg0ZmUwZWNlYmNjOTRhN2QxMTZm
N2YxYTYyNTYxZDA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDE3LTA4LTMxICBBbmR5
IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29jb2FdIFVwc3RyZWFtIENv
cmVHcmFwaGljcy1yZWxhdGVkIFdlYktpdFN5c3RlbUludGVyZmFjZSBmdW5jdGlvbnMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NjIwMAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogUGx1Z2luUHJvY2Vz
cy9tYWMvUGx1Z2luUHJvY2Vzc01hYy5tbToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJvY2Vz
czo6cGxhdGZvcm1Jbml0aWFsaXplUHJvY2Vzcyk6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9X
aW5kb3dTZXJ2ZXJDb25uZWN0aW9uLmg6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9XaW5kb3dT
ZXJ2ZXJDb25uZWN0aW9uLm1tOgorICAgICAgICAoV2ViS2l0OjpyZWdpc3Rlck9jY2x1c2lvbk5v
dGlmaWNhdGlvbkhhbmRsZXIpOgorICAgICAgICAoV2ViS2l0OjpXaW5kb3dTZXJ2ZXJDb25uZWN0
aW9uOjpXaW5kb3dTZXJ2ZXJDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2luZG93U2Vy
dmVyQ29ubmVjdGlvbjo6YXBwbGljYXRpb25XaW5kb3dNb2RpZmljYXRpb25zU3RhcnRlZCk6IERl
bGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViU3lzdGVt
SW50ZXJmYWNlLm1tOgorICAgICAgICAoSW5pdFdlYkNvcmVTeXN0ZW1JbnRlcmZhY2UpOgorCiAy
MDE3LTA4LTMwICBBbmR5IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KIAogICAgICAgICBbTWFj
XSBVcHN0cmVhbSBBY2Nlc3NpYmlsaXR5LXJlbGF0ZWQgV2ViS2l0U3lzdGVtSW50ZXJmYWNlIGZ1
bmN0aW9ucwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4IGJkZjVkMzhhZTdlNWI3NjE0
MDliM2QxMDU0ZDg0MzgzODY4OWZiZGEuLjRkMzE2OTQxYjM2ZjllMzMyM2MzODI5NjgzNDcyNWMw
Njc4OTAwMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNCBAQAor
MjAxNy0wOC0zMSAgQW5keSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+CisKKyAgICAgICAgW0Nv
Y29hXSBVcHN0cmVhbSBDb3JlR3JhcGhpY3MtcmVsYXRlZCBXZWJLaXRTeXN0ZW1JbnRlcmZhY2Ug
ZnVuY3Rpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNzYyMDAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIENhcmJvbi9ISVdlYlZpZXcubW06CisgICAgICAgICgtW05TV2luZG93R3JhcGhpY3NDb250
ZXh0IF93ZWJfc2V0R3JhcGhpY3NQb3J0Ol0pOgorICAgICAgICAob3ZlcnJpZGVDR0NvbnRleHQp
OgorICAgICAgICAocmVzdG9yZUNHQ29udGV4dCk6CisgICAgICAgIChEcmF3KToKKyAgICAgICAg
KiBQbHVnaW5zL0hvc3RlZC9XZWJIb3N0ZWROZXRzY2FwZVBsdWdpblZpZXcubW06CisgICAgICAg
ICgrW1dlYkhvc3RlZE5ldHNjYXBlUGx1Z2luVmlldyBpbml0aWFsaXplXSk6CisgICAgICAgICog
UGx1Z2lucy9XZWJCYXNlTmV0c2NhcGVQbHVnaW5WaWV3Lmg6CisgICAgICAgICogUGx1Z2lucy9X
ZWJCYXNlTmV0c2NhcGVQbHVnaW5WaWV3Lm1tOgorICAgICAgICAoV2ViS2l0OjpzZW5kVXNlckNo
YW5nZU5vdGlmaWNhdGlvbnMpOgorICAgICAgICAqIFBsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5W
aWV3Lm1tOgorICAgICAgICAoK1tXZWJOZXRzY2FwZVBsdWdpblZpZXcgaW5pdGlhbGl6ZV0pOgor
ICAgICAgICAoLVtXZWJOZXRzY2FwZVBsdWdpblZpZXcgc2F2ZUFuZFNldE5ld1BvcnRTdGF0ZUZv
clVwZGF0ZTpdKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJTeXN0ZW1JbnRlcmZhY2Uu
bW06CisgICAgICAgIChJbml0V2ViQ29yZVN5c3RlbUludGVyZmFjZSk6CisgICAgICAgICogV2Vi
Vmlldy9XZWJGcmFtZS5tbToKKyAgICAgICAgKC1bV2ViRnJhbWUgX3BhaW50QmVoYXZpb3JGb3JE
ZXN0aW5hdGlvbkNvbnRleHQ6XSk6CisgICAgICAgICogV2ViVmlldy9XZWJGdWxsU2NyZWVuQ29u
dHJvbGxlci5tbToKKyAgICAgICAgKHNldENsaXBSZWN0Rm9yV2luZG93KToKKyAgICAgICAgKC1b
V2ViRnVsbFNjcmVlbkNvbnRyb2xsZXIgZmluaXNoZWRFbnRlckZ1bGxTY3JlZW5BbmltYXRpb246
XSk6CisgICAgICAgICgtW1dlYkZ1bGxTY3JlZW5Db250cm9sbGVyIGZpbmlzaGVkRXhpdEZ1bGxT
Y3JlZW5BbmltYXRpb246XSk6CisgICAgICAgICgtW1dlYkZ1bGxTY3JlZW5Db250cm9sbGVyIF9z
dGFydEVudGVyRnVsbFNjcmVlbkFuaW1hdGlvbldpdGhEdXJhdGlvbjpdKToKKyAgICAgICAgKC1b
V2ViRnVsbFNjcmVlbkNvbnRyb2xsZXIgX3N0YXJ0RXhpdEZ1bGxTY3JlZW5BbmltYXRpb25XaXRo
RHVyYXRpb246XSk6CisKIDIwMTctMDgtMzAgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29t
PgogCiAgICAgICAgIFtNYWNdIFVwc3RyZWFtIEFjY2Vzc2liaWxpdHktcmVsYXRlZCBXZWJLaXRT
eXN0ZW1JbnRlcmZhY2UgZnVuY3Rpb25zCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwv
UEFMLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9QQUwvUEFMLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZDk4NThmOWVlMmI0MWYwMDU5MzcxYWU5MGNi
MmJmZGRkYTNkMGI4OC4uNjFkOWUzNDZkMGNiNjAzYWQyOWY2MzVkZmUzNTE4ZWZlYmM0ODM3NiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML1BBTC54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9QQUwueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agpAQCAtMTAxLDYgKzEwMSw3IEBACiAJCUExMDI2NTg5MUY1Njc0N0EwMEI0Qzg0NCAvKiBISVRv
b2xib3hTUEkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEExMDI2NTg4MUY1Njc0N0EwMEI0Qzg0NCAvKiBISVRvb2xib3hTUEkuaCAqLzsgfTsKIAkJQTEw
MjY1OEIxRjU2NzQ4QzAwQjRDODQ0IC8qIFF1aWNrRHJhd1NQSS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTEwMjY1OEExRjU2NzQ4QzAwQjRDODQ0IC8q
IFF1aWNrRHJhd1NQSS5oICovOyB9OwogCQlBMTAyNjU4RTFGNTY3RTlEMDBCNEM4NDQgLyogSElT
ZXJ2aWNlc1NQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQTEwMjY1OEQxRjU2N0U5RDAwQjRDODQ0IC8qIEhJU2VydmljZXNTUEkuaCAqLzsgfTsKKwkJ
QTEwODI2RkUxRjU4QTQzMzAwNDc3MkFDIC8qIE5TR3JhcGhpY3NTUEkuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExMDgyNkZEMUY1OEE0MzMwMDQ3NzJB
QyAvKiBOU0dyYXBoaWNzU1BJLmggKi87IH07CiAJCUExRjU1RENGMUY1NTI4RUMwMEVEQjc1RiAv
KiBNZXRhZGF0YVNQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQTFGNTVEQ0UxRjU1MjhFQzAwRURCNzVGIC8qIE1ldGFkYXRhU1BJLmggKi87IH07CiAJ
CUEzMEQ0MTIxMUYwREQwRUEwMEI3MTk1NCAvKiBLaWxsUmluZy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTMwRDQxMUUxRjBERDBFQTAwQjcxOTU0IC8q
IEtpbGxSaW5nLmggKi87IH07CiAJCUEzMEQ0MTIyMUYwREQwRUEwMEI3MTk1NCAvKiBLaWxsUmlu
Z05vbmUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QTMwRDQxMUYxRjBERDBFQTAwQjcxOTU0IC8qIEtpbGxSaW5nTm9uZS5jcHAgKi87IH07CkBAIC0y
MTcsNiArMjE4LDcgQEAKIAkJQTEwMjY1ODgxRjU2NzQ3QTAwQjRDODQ0IC8qIEhJVG9vbGJveFNQ
SS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBISVRvb2xib3hTUEkuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTEwMjY1OEExRjU2NzQ4QzAwQjRDODQ0IC8qIFF1
aWNrRHJhd1NQSS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBRdWlja0RyYXdT
UEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTEwMjY1OEQxRjU2N0U5RDAwQjRD
ODQ0IC8qIEhJU2VydmljZXNTUEkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSElTZXJ2aWNlc1NQSS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBMTA4MjZGRDFGNThBNDMzMDA0NzcyQUMgLyog
TlNHcmFwaGljc1NQSS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOU0dyYXBoaWNzU1BJLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUExRjU1RENFMUY1NTI4RUMwMEVEQjc1RiAvKiBNZXRhZGF0
YVNQSS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBNZXRhZGF0YVNQSS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlBMzBENDExRTFGMEREMEVBMDBCNzE5NTQgLyogS2lsbFJpbmcuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gS2lsbFJpbmcuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQTMwRDQxMUYxRjBERDBFQTAwQjcxOTU0IC8qIEtpbGxSaW5nTm9uZS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBLaWxsUmluZ05vbmUuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzQ5LDYgKzM1MSw3IEBACiAJCQkJMEM3Nzg1
NzUxRjQ1MTMwRjAwRjRFQkI2IC8qIE5TQXBwbGljYXRpb25TUEkuaCAqLywKIAkJCQkwQzc3ODU3
NjFGNDUxMzBGMDBGNEVCQjYgLyogTlNFdmVudFNQSS5oICovLAogCQkJCTBDNzc4NTc3MUY0NTEz
MEYwMEY0RUJCNiAvKiBOU0ZvbnRTUEkuaCAqLywKKwkJCQlBMTA4MjZGRDFGNThBNDMzMDA0Nzcy
QUMgLyogTlNHcmFwaGljc1NQSS5oICovLAogCQkJCTBDNzc4NTc4MUY0NTEzMEYwMEY0RUJCNiAv
KiBOU0ltbWVkaWF0ZUFjdGlvbkdlc3R1cmVSZWNvZ25pemVyU1BJLmggKi8sCiAJCQkJMEM3Nzg1
NzkxRjQ1MTMwRjAwRjRFQkI2IC8qIE5TTWVudVNQSS5oICovLAogCQkJCTBDNzc4NTdBMUY0NTEz
MEYwMEY0RUJCNiAvKiBOU1Bhc3RlYm9hcmRTUEkuaCAqLywKQEAgLTU0Miw2ICs1NDUsNyBAQAog
CQkJCTBDMkRBMTRFMUYzQkVCNDkwMERCQzMxNyAvKiBOU0V4dGVuc2lvblNQSS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMEMyREExNEYxRjNCRUI0OTAwREJDMzE3IC8qIE5TRmlsZU1hbmFnZXJTUEku
aCBpbiBIZWFkZXJzICovLAogCQkJCTBDNzc4NTkwMUY0NTEzMEYwMEY0RUJCNiAvKiBOU0ZvbnRT
UEkuaCBpbiBIZWFkZXJzICovLAorCQkJCUExMDgyNkZFMUY1OEE0MzMwMDQ3NzJBQyAvKiBOU0dy
YXBoaWNzU1BJLmggaW4gSGVhZGVycyAqLywKIAkJCQkwQzc3ODU5MTFGNDUxMzBGMDBGNEVCQjYg
LyogTlNJbW1lZGlhdGVBY3Rpb25HZXN0dXJlUmVjb2duaXplclNQSS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMEM3Nzg1OTIxRjQ1MTMwRjAwRjRFQkI2IC8qIE5TTWVudVNQSS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMEM3Nzg1OTMxRjQ1MTMwRjAwRjRFQkI2IC8qIE5TUGFzdGVib2FyZFNQSS5oIGlu
IEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jZy9D
b3JlR3JhcGhpY3NTUEkuaCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NnL0NvcmVHcmFw
aGljc1NQSS5oCmluZGV4IDdjMjkxYzkxNGQ2OWY1NmQ4NmRiYjRhODgxZmIyMzE4OWM1YTVhNWMu
LmZjNWQzYjAyZWZhNGIyNWYwMzE4ZGQ3Yzk0MzE1NTA5MGFlODA3MzcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NnL0NvcmVHcmFwaGljc1NQSS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NnL0NvcmVHcmFwaGljc1NQSS5oCkBAIC0xMzcsMjEgKzEz
Nyw3NCBAQCBzdGF0aWMgaW5saW5lIENHRmxvYXQgQ0dGbG9hdE1pbihDR0Zsb2F0IGEsIENHRmxv
YXQgYikgeyByZXR1cm4gaXNuYW4oYSkgPyBiIDogKAogCiB0eXBlZGVmIHN0cnVjdCBDR0ZvbnRD
YWNoZSBDR0ZvbnRDYWNoZTsKIAotI2lmIFBMQVRGT1JNKE1BQykKLXR5cGVkZWYgdWludDMyX3Qg
Q0dTQ29ubmVjdGlvbklEOwotdHlwZWRlZiB1aW50MzJfdCBDR1NXaW5kb3dJRDsKLXR5cGVkZWYg
dWludDMyX3QgQ0dTV2luZG93Q291bnQ7Ci10eXBlZGVmIENHU1dpbmRvd0lEICpDR1NXaW5kb3dJ
RExpc3Q7CisjaWYgUExBVEZPUk0oQ09DT0EpCiAKIGVudW0gewogICAgIGtDR1NXaW5kb3dDYXB0
dXJlTm9taW5hbFJlc29sdXRpb24gPSAweDAyMDAsCiAgICAga0NHU0NhcHR1cmVJZ25vcmVHbG9i
YWxDbGlwU2hhcGUgPSAweDA4MDAsCiB9OwogdHlwZWRlZiB1aW50MzJfdCBDR1NXaW5kb3dDYXB0
dXJlT3B0aW9uczsKLSNlbmRpZgorCit0eXBlZGVmIENGX0VOVU0gKGludDMyX3QsIENHU3R5bGVE
cmF3T3JkZXJpbmcpIHsKKyAgICBrQ0dTdHlsZURyYXdPcmRlcmluZ1N0eWxlT25seSA9IDAsCisg
ICAga0NHU3R5bGVEcmF3T3JkZXJpbmdCZWxvdyA9IDEsCisgICAga0NHU3R5bGVEcmF3T3JkZXJp
bmdBYm92ZSA9IDIsCit9OworCit0eXBlZGVmIENGX0VOVU0gKGludDMyX3QsIENHRm9jdXNSaW5n
T3JkZXJpbmcpIHsKKyAgICBrQ0dGb2N1c1JpbmdPcmRlcmluZ05vbmUgPSBrQ0dTdHlsZURyYXdP
cmRlcmluZ1N0eWxlT25seSwKKyAgICBrQ0dGb2N1c1JpbmdPcmRlcmluZ0JlbG93ID0ga0NHU3R5
bGVEcmF3T3JkZXJpbmdCZWxvdywKKyAgICBrQ0dGb2N1c1JpbmdPcmRlcmluZ0Fib3ZlID0ga0NH
U3R5bGVEcmF3T3JkZXJpbmdBYm92ZSwKK307CisKK3R5cGVkZWYgQ0ZfRU5VTSAoaW50MzJfdCwg
Q0dGb2N1c1JpbmdUaW50KSB7CisgICAga0NHRm9jdXNSaW5nVGludEJsdWUgPSAwLAorICAgIGtD
R0ZvY3VzUmluZ1RpbnRHcmFwaGl0ZSA9IDEsCit9OworCitzdHJ1Y3QgQ0dGb2N1c1JpbmdTdHls
ZSB7CisgICAgdW5zaWduZWQgaW50IHZlcnNpb247CisgICAgQ0dGb2N1c1JpbmdUaW50IHRpbnQ7
CisgICAgQ0dGb2N1c1JpbmdPcmRlcmluZyBvcmRlcmluZzsKKyAgICBDR0Zsb2F0IGFscGhhOwor
ICAgIENHRmxvYXQgcmFkaXVzOworICAgIENHRmxvYXQgdGhyZXNob2xkOworICAgIENHUmVjdCBi
b3VuZHM7CisgICAgaW50IGFjY3VtdWxhdGU7Cit9OwordHlwZWRlZiBzdHJ1Y3QgQ0dGb2N1c1Jp
bmdTdHlsZSBDR0ZvY3VzUmluZ1N0eWxlOworCit0eXBlZGVmIENGX0VOVU0odWludDMyX3QsIENH
U05vdGlmaWNhdGlvblR5cGUpIHsKKyAgICBrQ0dTRmlyc3RDb25uZWN0aW9uTm90aWZpY2F0aW9u
ID0gOTAwLAorICAgIGtDR1NGaXJzdFNlc3Npb25Ob3RpZmljYXRpb24gPSAxNTAwLAorfTsKKwor
c3RhdGljIGNvbnN0IENHU05vdGlmaWNhdGlvblR5cGUga0NHU0Nvbm5lY3Rpb25XaW5kb3dNb2Rp
ZmljYXRpb25zU3RhcnRlZCA9IChDR1NOb3RpZmljYXRpb25UeXBlKShrQ0dTRmlyc3RDb25uZWN0
aW9uTm90aWZpY2F0aW9uICsgNik7CitzdGF0aWMgY29uc3QgQ0dTTm90aWZpY2F0aW9uVHlwZSBr
Q0dTQ29ubmVjdGlvbldpbmRvd01vZGlmaWNhdGlvbnNTdG9wcGVkID0gKENHU05vdGlmaWNhdGlv
blR5cGUpKGtDR1NGaXJzdENvbm5lY3Rpb25Ob3RpZmljYXRpb24gKyA3KTsKK3N0YXRpYyBjb25z
dCBDR1NOb3RpZmljYXRpb25UeXBlIGtDR1Nlc3Npb25Db25zb2xlQ29ubmVjdCA9IGtDR1NGaXJz
dFNlc3Npb25Ob3RpZmljYXRpb247CitzdGF0aWMgY29uc3QgQ0dTTm90aWZpY2F0aW9uVHlwZSBr
Q0dTZXNzaW9uQ29uc29sZURpc2Nvbm5lY3QgPSAoQ0dTTm90aWZpY2F0aW9uVHlwZSkoa0NHU2Vz
c2lvbkNvbnNvbGVDb25uZWN0ICsgMSk7CisKKyNlbmRpZiAvLyBQTEFURk9STShDT0NPQSkKIAog
I2VuZGlmIC8vIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCiAKKyNpZiBQTEFURk9STShDT0NPQSkK
K3R5cGVkZWYgdWludDMyX3QgQ0dTQnl0ZUNvdW50OwordHlwZWRlZiB1aW50MzJfdCBDR1NDb25u
ZWN0aW9uSUQ7Cit0eXBlZGVmIHVpbnQzMl90IENHU1dpbmRvd0NvdW50OwordHlwZWRlZiB1aW50
MzJfdCBDR1NXaW5kb3dJRDsKKwordHlwZWRlZiBDR1NXaW5kb3dJRCogQ0dTV2luZG93SURMaXN0
OwordHlwZWRlZiBzdHJ1Y3QgQ0ZfQlJJREdFRF9UWVBFKGlkKSBDR1NSZWdpb25PYmplY3QqIENH
U1JlZ2lvbk9iajsKK3R5cGVkZWYgc3RydWN0IENGX0JSSURHRURfVFlQRShpZCkgQ0dTdHlsZSog
Q0dTdHlsZVJlZjsKKwordHlwZWRlZiB2b2lkKiBDR1NOb3RpZmljYXRpb25Bcmc7Cit0eXBlZGVm
IHZvaWQqIENHU05vdGlmaWNhdGlvbkRhdGE7CisKK3R5cGVkZWYgdm9pZCAoKkNHU05vdGlmeUNv
bm5lY3Rpb25Qcm9jUHRyKShDR1NOb3RpZmljYXRpb25UeXBlLCB2b2lkKiBkYXRhLCB1aW50MzJf
dCBkYXRhX2xlbmd0aCwgdm9pZCogYXJnLCBDR1NDb25uZWN0aW9uSUQpOwordHlwZWRlZiB2b2lk
ICgqQ0dTTm90aWZ5UHJvY1B0cikoQ0dTTm90aWZpY2F0aW9uVHlwZSwgdm9pZCogZGF0YSwgdWlu
dDMyX3QgZGF0YV9sZW5ndGgsIHZvaWQqIGFyZyk7CisjZW5kaWYKKwogV1RGX0VYVEVSTl9DX0JF
R0lOCiAKIENHQ29sb3JSZWYgQ0dDb2xvclRyYW5zZm9ybUNvbnZlcnRDb2xvcihDR0NvbG9yVHJh
bnNmb3JtUmVmLCBDR0NvbG9yUmVmLCBDR0NvbG9yUmVuZGVyaW5nSW50ZW50KTsKQEAgLTIwMywx
MCArMjU2LDIwIEBAIENHQ29sb3JTcGFjZVJlZiBDR0lPU3VyZmFjZUNvbnRleHRHZXRDb2xvclNw
YWNlKENHQ29udGV4dFJlZik7CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKENPQ09BKQotQ0dTUmVn
aW9uRW51bWVyYXRvck9iaiBDR1NSZWdpb25FbnVtZXJhdG9yKENHUmVnaW9uUmVmKTsKLUNHUmVj
dCogQ0dTTmV4dFJlY3QoY29uc3QgQ0dTUmVnaW9uRW51bWVyYXRvck9iaik7Ci1DR0Vycm9yIENH
U1JlbGVhc2VSZWdpb25FbnVtZXJhdG9yKGNvbnN0IENHU1JlZ2lvbkVudW1lcmF0b3JPYmopOwog
Q0dDb2xvclNwYWNlUmVmIENHQ29udGV4dENvcHlEZXZpY2VDb2xvclNwYWNlKENHQ29udGV4dFJl
Zik7CitDR0Vycm9yIENHU05ld1JlZ2lvbldpdGhSZWN0KGNvbnN0IENHUmVjdCosIENHUmVnaW9u
UmVmKik7CitDR0Vycm9yIENHU1BhY2thZ2VzRW5hYmxlQ29ubmVjdGlvbk9jY2x1c2lvbk5vdGlm
aWNhdGlvbnMoQ0dTQ29ubmVjdGlvbklELCBib29sIGZsYWcsIGJvb2wqIG91dEN1cnJlbnRWaXNp
YmlsaXR5U3RhdGUpOworQ0dFcnJvciBDR1NQYWNrYWdlc0VuYWJsZUNvbm5lY3Rpb25XaW5kb3dN
b2RpZmljYXRpb25Ob3RpZmljYXRpb25zKENHU0Nvbm5lY3Rpb25JRCwgYm9vbCBmbGFnLCBib29s
KiBvdXRDb25uZWN0aW9uSXNDdXJyZW50bHlJZGxlKTsKK0NHRXJyb3IgQ0dTUmVnaXN0ZXJDb25u
ZWN0aW9uTm90aWZ5UHJvYyhDR1NDb25uZWN0aW9uSUQsIENHU05vdGlmeUNvbm5lY3Rpb25Qcm9j
UHRyLCBDR1NOb3RpZmljYXRpb25UeXBlLCB2b2lkKiBhcmcpOworQ0dFcnJvciBDR1NSZWdpc3Rl
ck5vdGlmeVByb2MoQ0dTTm90aWZ5UHJvY1B0ciwgQ0dTTm90aWZpY2F0aW9uVHlwZSwgdm9pZCog
YXJnKTsKK0NHRXJyb3IgQ0dTUmVsZWFzZVJlZ2lvbihjb25zdCBDR1JlZ2lvblJlZiBDRl9SRUxF
QVNFU19BUkdVTUVOVCk7CitDR0Vycm9yIENHU1JlbGVhc2VSZWdpb25FbnVtZXJhdG9yKGNvbnN0
IENHU1JlZ2lvbkVudW1lcmF0b3JPYmopOworQ0dQYXR0ZXJuUmVmIENHUGF0dGVybkNyZWF0ZVdp
dGhJbWFnZTIoQ0dJbWFnZVJlZiwgQ0dBZmZpbmVUcmFuc2Zvcm0sIENHUGF0dGVyblRpbGluZyk7
CitDR1JlY3QqIENHU05leHRSZWN0KGNvbnN0IENHU1JlZ2lvbkVudW1lcmF0b3JPYmopOworQ0dT
UmVnaW9uRW51bWVyYXRvck9iaiBDR1NSZWdpb25FbnVtZXJhdG9yKENHUmVnaW9uUmVmKTsKK0NH
U3R5bGVSZWYgQ0dTdHlsZUNyZWF0ZUZvY3VzUmluZ1dpdGhDb2xvcihjb25zdCBDR0ZvY3VzUmlu
Z1N0eWxlKiwgQ0dDb2xvclJlZik7Citib29sIENHQ29udGV4dERyYXdzV2l0aENvcnJlY3RTaGFk
b3dPZmZzZXRzKENHQ29udGV4dFJlZik7Cit2b2lkIENHQ29udGV4dFNldFN0eWxlKENHQ29udGV4
dFJlZiwgQ0dTdHlsZVJlZik7CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKFdJTikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL21hYy9ISVNlcnZpY2VzU1BJLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9tYWMvSElTZXJ2aWNlc1NQSS5oCmluZGV4IDlmMzVkY2Q0
ZDAzYTU3YTA4NmIwYTM2NWRmYjM5ZGRmZmNjODE5ODUuLmEzNTViOTRmZTYzMDkyZWY1YWNkMGI1
Yzk1ZTAzZGQ0NmU5NTM4MTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3Bp
L21hYy9ISVNlcnZpY2VzU1BJLmgKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvbWFj
L0hJU2VydmljZXNTUEkuaApAQCAtMjgsMjEgKzI4LDQ1IEBACiAjaWYgVVNFKEFQUExFX0lOVEVS
TkFMX1NESykKIAogI2luY2x1ZGUgPEhJU2VydmljZXMvQVhUZXh0TWFya2VyLmg+CisjaW5jbHVk
ZSA8SElTZXJ2aWNlcy9Db3JlRHJhZy5oPgorCisjZWxzZQorCitlbnVtIHsKKyAgICBrQ29yZURy
YWdJbWFnZVNwZWNWZXJzaW9uT25lID0gMSwKK307CisKK3N0cnVjdCBDb3JlRHJhZ0ltYWdlU3Bl
YyB7CisgICAgVUludDMyIHZlcnNpb247CisgICAgU0ludDMyIHBpeGVsc1dpZGU7CisgICAgU0lu
dDMyIHBpeGVsc0hpZ2g7CisgICAgU0ludDMyIGJpdHNQZXJTYW1wbGU7CisgICAgU0ludDMyIHNh
bXBsZXNQZXJQaXhlbDsKKyAgICBTSW50MzIgYml0c1BlclBpeGVsOworICAgIFNJbnQzMiBieXRl
c1BlclJvdzsKKyAgICBCb29sZWFuIGlzUGxhbmFyOworICAgIEJvb2xlYW4gaGFzQWxwaGE7Cisg
ICAgY29uc3QgVUludDgqIGRhdGFbNV07Cit9OwogCiAjZW5kaWYKIAotdHlwZWRlZiBjb25zdCBz
dHJ1Y3QgX19BWFRleHRNYXJrZXIgKkFYVGV4dE1hcmtlclJlZjsKLXR5cGVkZWYgY29uc3Qgc3Ry
dWN0IF9fQVhUZXh0TWFya2VyUmFuZ2UgKkFYVGV4dE1hcmtlclJhbmdlUmVmOwordHlwZWRlZiBj
b25zdCBzdHJ1Y3QgX19BWFRleHRNYXJrZXIqIEFYVGV4dE1hcmtlclJlZjsKK3R5cGVkZWYgY29u
c3Qgc3RydWN0IF9fQVhUZXh0TWFya2VyUmFuZ2UqIEFYVGV4dE1hcmtlclJhbmdlUmVmOwordHlw
ZWRlZiBzdHJ1Y3QgQ29yZURyYWdJbWFnZVNwZWMgQ29yZURyYWdJbWFnZVNwZWM7Cit0eXBlZGVm
IHN0cnVjdCBPcGFxdWVDb3JlRHJhZyogQ29yZURyYWdSZWY7CiAKIFdURl9FWFRFUk5fQ19CRUdJ
TgogCi1DRlR5cGVJRCBBWFRleHRNYXJrZXJHZXRUeXBlSUQoKTsKLUNGVHlwZUlEIEFYVGV4dE1h
cmtlclJhbmdlR2V0VHlwZUlEKCk7Ci1BWFRleHRNYXJrZXJSZWYgQVhUZXh0TWFya2VyQ3JlYXRl
KENGQWxsb2NhdG9yUmVmLCBjb25zdCBVSW50OCogYnl0ZXMsIENGSW5kZXggbGVuZ3RoKTsKLUNG
SW5kZXggQVhUZXh0TWFya2VyR2V0TGVuZ3RoKEFYVGV4dE1hcmtlclJlZik7Ci1jb25zdCBVSW50
OCogQVhUZXh0TWFya2VyR2V0Qnl0ZVB0cihBWFRleHRNYXJrZXJSZWYpOwogQVhUZXh0TWFya2Vy
UmFuZ2VSZWYgQVhUZXh0TWFya2VyUmFuZ2VDcmVhdGUoQ0ZBbGxvY2F0b3JSZWYsIEFYVGV4dE1h
cmtlclJlZiBzdGFydE1hcmtlciwgQVhUZXh0TWFya2VyUmVmIGVuZE1hcmtlcik7CitBWFRleHRN
YXJrZXJSZWYgQVhUZXh0TWFya2VyQ3JlYXRlKENGQWxsb2NhdG9yUmVmLCBjb25zdCBVSW50OCog
Ynl0ZXMsIENGSW5kZXggbGVuZ3RoKTsKIEFYVGV4dE1hcmtlclJlZiBBWFRleHRNYXJrZXJSYW5n
ZUNvcHlTdGFydE1hcmtlcihBWFRleHRNYXJrZXJSYW5nZVJlZik7CiBBWFRleHRNYXJrZXJSZWYg
QVhUZXh0TWFya2VyUmFuZ2VDb3B5RW5kTWFya2VyKEFYVGV4dE1hcmtlclJhbmdlUmVmKTsKK0NG
SW5kZXggQVhUZXh0TWFya2VyR2V0TGVuZ3RoKEFYVGV4dE1hcmtlclJlZik7CitDRlR5cGVJRCBB
WFRleHRNYXJrZXJHZXRUeXBlSUQoKTsKK0NGVHlwZUlEIEFYVGV4dE1hcmtlclJhbmdlR2V0VHlw
ZUlEKCk7CitDb3JlRHJhZ1JlZiBDb3JlRHJhZ0dldEN1cnJlbnREcmFnKCk7CitPU1N0YXR1cyBD
b3JlRHJhZ1NldEltYWdlKENvcmVEcmFnUmVmLCBDR1BvaW50IGltYWdlT2Zmc2V0LCBDb3JlRHJh
Z0ltYWdlU3BlYyosIENHU1JlZ2lvbk9iaiBpbWFnZVNoYXBlLCBmbG9hdCBvdmVyYWxsQWxwaGEp
OworY29uc3QgVUludDgqIEFYVGV4dE1hcmtlckdldEJ5dGVQdHIoQVhUZXh0TWFya2VyUmVmKTsK
IAogV1RGX0VYVEVSTl9DX0VORApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9z
cGkvbWFjL05TR3JhcGhpY3NTUEkuaCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL21hYy9O
U0dyYXBoaWNzU1BJLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTA2MWUyZTk5OWIxOGIyMTBiZTAwMWNhYWMyN2Jh
MmIyYmFiYjJlNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3Bp
L21hYy9OU0dyYXBoaWNzU1BJLmgKQEAgLTAsMCArMSw0MiBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFn
bWEgb25jZQorCisjaWYgUExBVEZPUk0oTUFDKQorCisjaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NE
SykKKworI2luY2x1ZGUgPEFwcEtpdC9OU0dyYXBoaWNzX1ByaXZhdGUuaD4KKworI2VuZGlmCisK
K1dURl9FWFRFUk5fQ19CRUdJTgorCitCT09MIE5TSW5pdGlhbGl6ZUNHRm9jdXNSaW5nU3R5bGVG
b3JUaW1lKE5TRm9jdXNSaW5nUGxhY2VtZW50LCBDR0ZvY3VzUmluZ1N0eWxlKiwgTlNUaW1lSW50
ZXJ2YWwpOworCitXVEZfRVhURVJOX0NfRU5ECisKKyNlbmRpZiAvLyBQTEFURk9STShNQUMpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRl
eHQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5o
CmluZGV4IDE4YWNkZGJlN2VmZmZhNDI5ZDE4NTc4MzlhYjZlNjY3NDY2YTNkODUuLmMxNGIyYTU1
ZTZhYTdmOTBkMjAwM2M0NjY4NDM0MzIyZTA4NTQ1OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCkBAIC00NDUsNiArNDQ1LDcg
QEAgcHVibGljOgogI2lmIFBMQVRGT1JNKE1BQykKICAgICB2b2lkIGRyYXdGb2N1c1JpbmcoY29u
c3QgUGF0aCYsIGRvdWJsZSB0aW1lT2Zmc2V0LCBib29sJiBuZWVkc1JlZHJhdyk7CiAgICAgdm9p
ZCBkcmF3Rm9jdXNSaW5nKGNvbnN0IFZlY3RvcjxGbG9hdFJlY3Q+JiwgZG91YmxlIHRpbWVPZmZz
ZXQsIGJvb2wmIG5lZWRzUmVkcmF3KTsKKyAgICBzdGF0aWMgQ0dDb2xvclJlZiBmb2N1c1JpbmdD
b2xvcigpOwogI2VuZGlmCiAKICAgICB2b2lkIHNldExpbmVDYXAoTGluZUNhcCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAKaW5kZXggNjY5
NmM5NjBhNTg3NWYwNDMxNzI5YjExOWFiNmIyNDEyN2Q3YTVjYS4uMDIyOGUzOTI5YTI2NmVhOTcz
MmJiYThlZTYwNTczZmE1MDlhMzUwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcApAQCAtMTg0LDcgKzE4NCw3IEBAIFN1YnNhbXBsaW5n
TGV2ZWwgSW1hZ2VTb3VyY2U6OnN1YnNhbXBsaW5nTGV2ZWxGb3JTY2FsZUZhY3RvcihHcmFwaGlj
c0NvbnRleHQmIGNvCiB7CiAjaWYgVVNFKENHKQogICAgIC8vIE5ldmVyIHVzZSBzdWJzYW1wbGVk
IGltYWdlcyBmb3IgZHJhd2luZyBpbnRvIFBERiBjb250ZXh0cy4KLSAgICBpZiAod2tDR0NvbnRl
eHRJc1BERkNvbnRleHQoY29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKSkpCisgICAgaWYgKENHQ29u
dGV4dEdldFR5cGUoY29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKSkgPT0ga0NHQ29udGV4dFR5cGVQ
REYpCiAgICAgICAgIHJldHVybiBTdWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0OwogCiAgICAgZmxv
YXQgc2NhbGUgPSBzdGQ6Om1pbihmbG9hdCgxKSwgc3RkOjptYXgoc2NhbGVGYWN0b3Iud2lkdGgo
KSwgc2NhbGVGYWN0b3IuaGVpZ2h0KCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcAppbmRleCBkNTg4Mzlh
ZTU4YmI1MTBkNTA3ZDQ2NWIwNjE5MmUwMjBiYWQ1YWJkLi4zNzg4YmMyNDE0MjRmNTQ2N2VmMWEy
MWEyNmVjZmZhNGU4M2NhMDBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCkBAIC05ODcsNyArOTg3LDcg
QEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmNsaXBPdXQoY29uc3QgRmxvYXRSZWN0JiByZWN0KQog
ICAgIC8vIGhhcyBjZXJ0YWluIHRyYW5zZm9ybXMgdGhhdCBhcmVuJ3QganVzdCBhIHRyYW5zbGF0
aW9uIG9yIGEgc2NhbGUuIEFuZCBkdWUgdG8gPHJkYXI6Ly9wcm9ibGVtLzE0NjM0NDUzPgogICAg
IC8vIHdlIGNhbm5vdCB1c2UgaXQgaW4gZm9yIGEgcHJpbnRpbmcgY29udGV4dCBlaXRoZXIuCiAg
ICAgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBjdG0gPSBnZXRDVE0oKTsKLSAgICBib29sIGNhblVz
ZUNHUmVjdEluZmluaXRlID0gIXdrQ0dDb250ZXh0SXNQREZDb250ZXh0KHBsYXRmb3JtQ29udGV4
dCgpKSAmJiAoIWlzQWNjZWxlcmF0ZWRDb250ZXh0KCkgfHwgKCFjdG0uYigpICYmICFjdG0uYygp
KSk7CisgICAgYm9vbCBjYW5Vc2VDR1JlY3RJbmZpbml0ZSA9IENHQ29udGV4dEdldFR5cGUocGxh
dGZvcm1Db250ZXh0KCkpICE9IGtDR0NvbnRleHRUeXBlUERGICYmICghaXNBY2NlbGVyYXRlZENv
bnRleHQoKSB8fCAoIWN0bS5iKCkgJiYgIWN0bS5jKCkpKTsKICAgICBDR1JlY3QgcmVjdHNbMl0g
PSB7IGNhblVzZUNHUmVjdEluZmluaXRlID8gQ0dSZWN0SW5maW5pdGUgOiBDR0NvbnRleHRHZXRD
bGlwQm91bmRpbmdCb3gocGxhdGZvcm1Db250ZXh0KCkpLCByZWN0IH07CiAgICAgQ0dDb250ZXh0
QmVnaW5QYXRoKHBsYXRmb3JtQ29udGV4dCgpKTsKICAgICBDR0NvbnRleHRBZGRSZWN0cyhwbGF0
Zm9ybUNvbnRleHQoKSwgcmVjdHMsIDIpOwpAQCAtMTA5Myw3ICsxMDkzLDcgQEAgc3RhdGljIHZv
aWQgYXBwbHlTaGFkb3dPZmZzZXRXb3JrYXJvdW5kSWZOZWVkZWQoY29uc3QgR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0LAogICAgIGlmIChjb250ZXh0LmlzQWNjZWxlcmF0ZWRDb250ZXh0KCkpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIGlmICh3a0NHQ29udGV4dERyYXdzV2l0aENvcnJlY3RTaGFk
b3dPZmZzZXRzKGNvbnRleHQucGxhdGZvcm1Db250ZXh0KCkpKQorICAgIGlmIChDR0NvbnRleHRE
cmF3c1dpdGhDb3JyZWN0U2hhZG93T2Zmc2V0cyhjb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpKSkK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gV29yayBhcm91bmQgPHJkYXI6Ly9wcm9ibGVtLzU1
MzkzODg+IGJ5IGVuc3VyaW5nIHRoYXQgdGhlIG9mZnNldHMgd2lsbCBnZXQgdHJ1bmNhdGVkCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QYXR0ZXJuQ0cu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGF0dGVybkNHLmNwcApp
bmRleCA5OGU2OWRlOGVkODlhMjRlODg2YTE0MmEwODM5NTllMmM3MjEzNWYwLi5kMGUyMWM4NzNh
YTJkYzMwYzUzY2M4YmFiNGY4YjA0MTQzNDAwMDk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QYXR0ZXJuQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BhdHRlcm5DRy5jcHAKQEAgLTMxLDggKzMxLDggQEAKIAog
I2luY2x1ZGUgIkFmZmluZVRyYW5zZm9ybS5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5o
IgotCiAjaW5jbHVkZSA8Q29yZUdyYXBoaWNzL0NvcmVHcmFwaGljcy5oPgorI2luY2x1ZGUgPHBh
bC9zcGkvY2cvQ29yZUdyYXBoaWNzU1BJLmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4K
IAogI2lmIFBMQVRGT1JNKENPQ09BKQpAQCAtNzQsNyArNzQsNyBAQCBDR1BhdHRlcm5SZWYgUGF0
dGVybjo6Y3JlYXRlUGxhdGZvcm1QYXR0ZXJuKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdXNlclNw
YWNlVHJhbgogICAgIC8vIElmIHdlJ3JlIHJlcGVhdGluZyBpbiBib3RoIGRpcmVjdGlvbnMsIHdl
IGNhbiB1c2UgaW1hZ2UtYmFja2VkIHBhdHRlcm5zCiAgICAgLy8gaW5zdGVhZCBvZiBjdXN0b20g
cGF0dGVybnMsIGFuZCBhdm9pZCB0aWxpbmctZWRnZSBwaXhlbCBjcmFja3MuCiAgICAgaWYgKG1f
cmVwZWF0WCAmJiBtX3JlcGVhdFkpCi0gICAgICAgIHJldHVybiB3a0NHUGF0dGVybkNyZWF0ZVdp
dGhJbWFnZUFuZFRyYW5zZm9ybSh0aWxlSW1hZ2UoKS5uYXRpdmVJbWFnZSgpLmdldCgpLCBwYXR0
ZXJuVHJhbnNmb3JtLCB3a1BhdHRlcm5UaWxpbmdDb25zdGFudFNwYWNpbmcpOworICAgICAgICBy
ZXR1cm4gQ0dQYXR0ZXJuQ3JlYXRlV2l0aEltYWdlMih0aWxlSW1hZ2UoKS5uYXRpdmVJbWFnZSgp
LmdldCgpLCBwYXR0ZXJuVHJhbnNmb3JtLCBrQ0dQYXR0ZXJuVGlsaW5nQ29uc3RhbnRTcGFjaW5n
KTsKIAogICAgIC8vIElmIEZMVF9NQVggc2hvdWxkIGFsc28gYmUgdXNlZCBmb3IgeFN0ZXAgb3Ig
eVN0ZXAsIG5vdGhpbmcgaXMgcmVuZGVyZWQuIFVzaW5nIGZyYWN0aW9ucyBvZiBGTFRfTUFYIGFs
c28KICAgICAvLyByZXN1bHQgaW4gbm90aGluZyBiZWluZyByZW5kZXJlZC4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dENv
Y29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3ND
b250ZXh0Q29jb2EubW0KaW5kZXggNjdmNGRlYjE3MmI2YzBmZTIzYzFiMWQxZmIwOWVhYjhhZGFl
MTMxYi4uNDVkNzczOWQ2NDZkNzhhMTdlN2Q3MjE4OWQyZDdjYzMxMWRjYzdjZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0
Q29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3Jh
cGhpY3NDb250ZXh0Q29jb2EubW0KQEAgLTI5LDEwICsyOSwxMyBAQAogI2ltcG9ydCAiR3JhcGhp
Y3NDb250ZXh0Q0cuaCIKICNpbXBvcnQgIkdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZUNH
LmgiCiAjaW1wb3J0ICJJbnRSZWN0LmgiCisjaW1wb3J0IDxwYWwvc3BpL2NnL0NvcmVHcmFwaGlj
c1NQSS5oPgorI2ltcG9ydCA8cGFsL3NwaS9tYWMvTlNHcmFwaGljc1NQSS5oPgorI2ltcG9ydCA8
d3RmL1N0ZExpYkV4dHJhcy5oPgorCiAjaWYgVVNFKEFQUEtJVCkKICNpbXBvcnQgPEFwcEtpdC9B
cHBLaXQuaD4KICNlbmRpZgotI2ltcG9ydCA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCiAjaWYgUExB
VEZPUk0oSU9TKQogI2ltcG9ydCAiQ29sb3IuaCIKQEAgLTQzLDcgKzQ2LDYgQEAKICNpZiAhUExB
VEZPUk0oSU9TKQogI2ltcG9ydCAiTG9jYWxDdXJyZW50R3JhcGhpY3NDb250ZXh0LmgiCiAjZW5k
aWYKLSNpbXBvcnQgIldlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaCIKIAogQGNsYXNzIE5TQ29sb3I7
CiAKQEAgLTU3LDExICs1OSw0NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAvLyBleGNlcHRpb25z
IGZvciB0aG9zZS4KIAogI2lmICFQTEFURk9STShJT1MpCitDR0NvbG9yUmVmIEdyYXBoaWNzQ29u
dGV4dDo6Zm9jdXNSaW5nQ29sb3IoKQoreworICAgIHN0YXRpYyBDR0NvbG9yUmVmIGNvbG9yOwor
ICAgIGlmICghY29sb3IpIHsKKyAgICAgICAgQ0dGbG9hdCBjb2xvckNvbXBvbmVudHNbXSA9IHsg
MC41LCAwLjc1LCAxLjAsIDEuMCB9OworICAgICAgICBhdXRvIGNvbG9yU3BhY2UgPSBhZG9wdENG
KENHQ29sb3JTcGFjZUNyZWF0ZVdpdGhOYW1lKGtDR0NvbG9yU3BhY2VTUkdCKSk7CisgICAgICAg
IGNvbG9yID0gQ0dDb2xvckNyZWF0ZShjb2xvclNwYWNlLmdldCgpLCBjb2xvckNvbXBvbmVudHMp
OworICAgIH0KKyAgICByZXR1cm4gY29sb3I7Cit9CisKK3N0YXRpYyBib29sIGRyYXdGb2N1c1Jp
bmdBdFRpbWUoQ0dDb250ZXh0UmVmIGNvbnRleHQsIE5TVGltZUludGVydmFsIHRpbWVPZmZzZXQp
Cit7CisgICAgQ0dGb2N1c1JpbmdTdHlsZSBmb2N1c1JpbmdTdHlsZTsKKyAgICBCT09MIG5lZWRz
UmVwYWludCA9IE5TSW5pdGlhbGl6ZUNHRm9jdXNSaW5nU3R5bGVGb3JUaW1lKE5TRm9jdXNSaW5n
T25seSwgJmZvY3VzUmluZ1N0eWxlLCB0aW1lT2Zmc2V0KTsKKworICAgIC8vIFdlIHdhbnQgdG8g
cmVzcGVjdCB0aGUgQ0dDb250ZXh0IGNsaXBwaW5nIGFuZCBhbHNvIG5vdCBvdmVycGFpbnQgYW55
CisgICAgLy8gZXhpc3RpbmcgZm9jdXMgcmluZy4gVGhlIHdheSB0byBkbyB0aGlzIGlzIHNldCBh
Y2N1bXVsYXRlIHRvCisgICAgLy8gLTEuIEFjY29yZGluZyB0byBDb3JlR3JhcGhpY3MsIHRoZSBy
ZWFzb25pbmcgZm9yIHRoaXMgYmVoYXZpb3IgaGFzIGJlZW4KKyAgICAvLyBsb3N0IGluIHRpbWUu
CisgICAgZm9jdXNSaW5nU3R5bGUuYWNjdW11bGF0ZSA9IC0xOworICAgIGF1dG8gc3R5bGUgPSBh
ZG9wdENGKENHU3R5bGVDcmVhdGVGb2N1c1JpbmdXaXRoQ29sb3IoJmZvY3VzUmluZ1N0eWxlLCBH
cmFwaGljc0NvbnRleHQ6OmZvY3VzUmluZ0NvbG9yKCkpKTsKKworICAgIENHQ29udGV4dFNhdmVH
U3RhdGUoY29udGV4dCk7CisgICAgQ0dDb250ZXh0U2V0U3R5bGUoY29udGV4dCwgc3R5bGUuZ2V0
KCkpOworICAgIENHQ29udGV4dEZpbGxQYXRoKGNvbnRleHQpOworICAgIENHQ29udGV4dFJlc3Rv
cmVHU3RhdGUoY29udGV4dCk7CisKKyAgICByZXR1cm4gbmVlZHNSZXBhaW50OworfQorCitzdGF0
aWMgdm9pZCBkcmF3Rm9jdXNSaW5nKENHQ29udGV4dFJlZiBjb250ZXh0KQoreworICAgIGRyYXdG
b2N1c1JpbmdBdFRpbWUoY29udGV4dCwgREJMX01BWCk7Cit9CisKIHN0YXRpYyB2b2lkIGRyYXdG
b2N1c1JpbmdUb0NvbnRleHQoQ0dDb250ZXh0UmVmIGNvbnRleHQsIENHUGF0aFJlZiBmb2N1c1Jp
bmdQYXRoKQogewogICAgIENHQ29udGV4dEJlZ2luUGF0aChjb250ZXh0KTsKICAgICBDR0NvbnRl
eHRBZGRQYXRoKGNvbnRleHQsIGZvY3VzUmluZ1BhdGgpOwotICAgIHdrRHJhd0ZvY3VzUmluZyhj
b250ZXh0LCBudWxscHRyLCAwKTsKKyAgICBkcmF3Rm9jdXNSaW5nKGNvbnRleHQpOwogfQogCiBz
dGF0aWMgYm9vbCBkcmF3Rm9jdXNSaW5nVG9Db250ZXh0QXRUaW1lKENHQ29udGV4dFJlZiBjb250
ZXh0LCBDR1BhdGhSZWYgZm9jdXNSaW5nUGF0aCwgZG91YmxlIHRpbWVPZmZzZXQpCkBAIC02OSw3
ICsxMDcsNyBAQCBzdGF0aWMgYm9vbCBkcmF3Rm9jdXNSaW5nVG9Db250ZXh0QXRUaW1lKENHQ29u
dGV4dFJlZiBjb250ZXh0LCBDR1BhdGhSZWYgZm9jdXNSaQogICAgIFVOVVNFRF9QQVJBTSh0aW1l
T2Zmc2V0KTsKICAgICBDR0NvbnRleHRCZWdpblBhdGgoY29udGV4dCk7CiAgICAgQ0dDb250ZXh0
QWRkUGF0aChjb250ZXh0LCBmb2N1c1JpbmdQYXRoKTsKLSAgICByZXR1cm4gd2tEcmF3Rm9jdXNS
aW5nQXRUaW1lKGNvbnRleHQsIHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6bWF4KCkpOwor
ICAgIHJldHVybiBkcmF3Rm9jdXNSaW5nQXRUaW1lKGNvbnRleHQsIHN0ZDo6bnVtZXJpY19saW1p
dHM8ZG91YmxlPjo6bWF4KCkpOwogfQogI2VuZGlmIC8vICFQTEFURk9STShJT1MpCiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNl
SU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkNvcmVTeXN0ZW1JbnRlcmZh
Y2VJT1MubW0KaW5kZXggMDlhMTgyODE0ZDE0MDEzYjdjODhlOGVlYmYwM2Q5YWUwY2ZhMjg2OS4u
NzU3ZDA0NWY1YzU4NTQ0NDk2ZjJkZDY5MDUwYmQxYWY4NjhjMmVkZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2VJT1MubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2VJT1Mu
bW0KQEAgLTI3LDEwICsyNyw4IEBACiAjaW1wb3J0ICJXZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmgi
CiAKIFdFQkNPUkVfRVhQT1JUIHZvaWQgKCp3a0NBTGF5ZXJFbnVtZXJhdGVSZWN0c0JlaW5nRHJh
d25XaXRoQmxvY2spKENBTGF5ZXIgKiwgQ0dDb250ZXh0UmVmIGNvbnRleHQsIHZvaWQgKF5ibG9j
aykoQ0dSZWN0IHJlY3QpKTsKLVdFQkNPUkVfRVhQT1JUIENHUGF0dGVyblJlZiAoKndrQ0dQYXR0
ZXJuQ3JlYXRlV2l0aEltYWdlQW5kVHJhbnNmb3JtKShDR0ltYWdlUmVmLCBDR0FmZmluZVRyYW5z
Zm9ybSwgaW50KTsKIFdFQkNPUkVfRVhQT1JUIHZvaWQgKCp3a0NsZWFyR2x5cGhWZWN0b3IpKHZv
aWQqIGdseXBocyk7CiBXRUJDT1JFX0VYUE9SVCBPU1N0YXR1cyAoKndrQ29udmVydENoYXJUb0ds
eXBocykodm9pZCogc3R5bGVHcm91cCwgY29uc3QgVW5pQ2hhciosIHVuc2lnbmVkIG51bUNoYXJh
Y3RlcnMsIHZvaWQqIGdseXBocyk7Ci1XRUJDT1JFX0VYUE9SVCBib29sICgqd2tDR0NvbnRleHRJ
c1BERkNvbnRleHQpKENHQ29udGV4dFJlZik7CiBXRUJDT1JFX0VYUE9SVCBpZCAoKndrQ3JlYXRl
TlNVUkxDb25uZWN0aW9uRGVsZWdhdGVQcm94eSkodm9pZCk7CiBXRUJDT1JFX0VYUE9SVCB2b2lk
ICgqd2tTZXRDT05ORUNUUHJveHlGb3JTdHJlYW0pKENGUmVhZFN0cmVhbVJlZiwgQ0ZTdHJpbmdS
ZWYgcHJveHlIb3N0LCBDRk51bWJlclJlZiBwcm94eVBvcnQpOwogV0VCQ09SRV9FWFBPUlQgdm9p
ZCAoKndrU2V0Q09OTkVDVFByb3h5QXV0aG9yaXphdGlvbkZvclN0cmVhbSkoQ0ZSZWFkU3RyZWFt
UmVmLCBDRlN0cmluZ1JlZiBwcm94eUF1dGhvcml6YXRpb25TdHJpbmcpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbQppbmRleCAyMGU2MzVjMDkwNWFlODk2
YzdiYjU0MjFjODU2YjIxYjJhNDQ2YjQ5Li44MTg5ZGJiODY5YjUxZWMxZjZjMDAxNGFjOGE2YzJh
NTMwMjgzNjk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVi
b2FyZE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1h
Yy5tbQpAQCAtNTIsNiArNTIsOCBAQAogI2ltcG9ydCAiV2ViQ29yZVN5c3RlbUludGVyZmFjZS5o
IgogI2ltcG9ydCAiV2ViTlNBdHRyaWJ1dGVkU3RyaW5nRXh0cmFzLmgiCiAjaW1wb3J0ICJtYXJr
dXAuaCIKKyNpbXBvcnQgPHBhbC9zcGkvY2cvQ29yZUdyYXBoaWNzU1BJLmg+CisjaW1wb3J0IDxw
YWwvc3BpL21hYy9ISVNlcnZpY2VzU1BJLmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAj
aW1wb3J0IDx3dGYvU3RkTGliRXh0cmFzLmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9TdHJpbmdCdWls
ZGVyLmg+CkBAIC02NjksNiArNjcxLDgwIEBAIFZlY3RvcjxTdHJpbmc+IFBhc3RlYm9hcmQ6OnJl
YWRGaWxlbmFtZXMoKQogfQogCiAjaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkKK3N0YXRpYyB2b2lk
IGZsaXBJbWFnZVNwZWMoQ29yZURyYWdJbWFnZVNwZWMqIGltYWdlU3BlYykKK3sKKyAgICB1bnNp
Z25lZCBjaGFyKiB0ZW1wUm93ID0gKHVuc2lnbmVkIGNoYXIqKWZhc3RNYWxsb2MoaW1hZ2VTcGVj
LT5ieXRlc1BlclJvdyk7CisgICAgaW50IHBsYW5lcyA9IGltYWdlU3BlYy0+aXNQbGFuYXIgPyBp
bWFnZVNwZWMtPnNhbXBsZXNQZXJQaXhlbCA6IDE7CisKKyAgICBmb3IgKGludCBwID0gMDsgcCA8
IHBsYW5lczsgcCsrKSB7CisgICAgICAgIHVuc2lnbmVkIGNoYXIqIHRvcFJvdyA9ICh1bnNpZ25l
ZCBjaGFyKilpbWFnZVNwZWMtPmRhdGFbcF07CisgICAgICAgIHVuc2lnbmVkIGNoYXIqIGJvdFJv
dyA9IHRvcFJvdyArIChpbWFnZVNwZWMtPnBpeGVsc0hpZ2ggLSAxKSAqIGltYWdlU3BlYy0+Ynl0
ZXNQZXJSb3c7CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgaW1hZ2VTcGVjLT5waXhlbHNI
aWdoIC8gMjsgaSsrLCB0b3BSb3cgKz0gaW1hZ2VTcGVjLT5ieXRlc1BlclJvdywgYm90Um93IC09
IGltYWdlU3BlYy0+Ynl0ZXNQZXJSb3cpIHsKKyAgICAgICAgICAgIGJjb3B5KHRvcFJvdywgIHRl
bXBSb3csIGltYWdlU3BlYy0+Ynl0ZXNQZXJSb3cpOworICAgICAgICAgICAgYmNvcHkoYm90Um93
LCAgdG9wUm93LCAgaW1hZ2VTcGVjLT5ieXRlc1BlclJvdyk7CisgICAgICAgICAgICBiY29weSh0
ZW1wUm93LCBib3RSb3csICBpbWFnZVNwZWMtPmJ5dGVzUGVyUm93KTsKKyAgICAgICAgfQorICAg
IH0KKworICAgIGZhc3RGcmVlKHRlbXBSb3cpOworfQorCitzdGF0aWMgdm9pZCBzZXREcmFnSW1h
Z2VJbXBsKE5TSW1hZ2UgKmltYWdlLCBOU1BvaW50IG9mZnNldCkKK3sKKyAgICBib29sIGZsaXBJ
bWFnZTsKKyAgICBOU1NpemUgaW1hZ2VTaXplID0gaW1hZ2Uuc2l6ZTsKKyAgICBDR1JlY3QgaW1h
Z2VSZWN0ID0gQ0dSZWN0TWFrZSgwLCAwLCBpbWFnZVNpemUud2lkdGgsIGltYWdlU2l6ZS5oZWln
aHQpOworICAgIE5TSW1hZ2VSZXAgKmltYWdlUmVwID0gW2ltYWdlIGJlc3RSZXByZXNlbnRhdGlv
bkZvclJlY3Q6TlNSZWN0RnJvbUNHUmVjdChpbWFnZVJlY3QpIGNvbnRleHQ6bmlsIGhpbnRzOm5p
bF07CisgICAgUmV0YWluUHRyPE5TQml0bWFwSW1hZ2VSZXA+IGJpdG1hcEltYWdlOworICAgIGlm
ICghaW1hZ2VSZXAgfHwgIVtpbWFnZVJlcCBpc0tpbmRPZkNsYXNzOltOU0JpdG1hcEltYWdlUmVw
IGNsYXNzXV0gfHwgIU5TRXF1YWxTaXplcyhpbWFnZVJlcC5zaXplLCBpbWFnZVNpemUpKSB7Cisg
ICAgICAgIFtpbWFnZSBsb2NrRm9jdXNdOworICAgICAgICBiaXRtYXBJbWFnZSA9IGFkb3B0TlMo
W1tOU0JpdG1hcEltYWdlUmVwIGFsbG9jXSBpbml0V2l0aEZvY3VzZWRWaWV3UmVjdDoqKE5TUmVj
dCAqKSZpbWFnZVJlY3RdKTsKKyAgICAgICAgW2ltYWdlIHVubG9ja0ZvY3VzXTsKKyAgICAgICAg
CisgICAgICAgIC8vIHdlIG1heSBoYXZlIHRvIGZsaXAgdGhlIGJpdHMgd2UganVzdCByZWFkIGlm
IHRoZSBpbWFnZSB3YXMgZmxpcHBlZCBzaW5jZSBpdCBtZWFucyB0aGUgY2FjaGUgd2FzIGFsc28K
KyAgICAgICAgLy8gYW5kIENvcmVEcmFnU2V0SW1hZ2UgY2FuJ3QgdGFrZSBhIHRyYW5zZm9ybSBm
b3IgcmVuZGVyaW5nLgorI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHB1c2gKKyNwcmFnbWEgY2xh
bmcgZGlhZ25vc3RpYyBpZ25vcmVkICItV2RlcHJlY2F0ZWQtZGVjbGFyYXRpb25zIgorICAgICAg
ICBmbGlwSW1hZ2UgPSBpbWFnZS5pc0ZsaXBwZWQ7CisjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMg
cG9wCisgICAgfSBlbHNlIHsKKyAgICAgICAgZmxpcEltYWdlID0gZmFsc2U7CisgICAgICAgIGJp
dG1hcEltYWdlID0gKE5TQml0bWFwSW1hZ2VSZXAgKilpbWFnZVJlcDsKKyAgICB9CisgICAgQVNT
RVJUKGJpdG1hcEltYWdlKTsKKworICAgIENvcmVEcmFnSW1hZ2VTcGVjIGltYWdlU3BlYzsKKyAg
ICBpbWFnZVNwZWMudmVyc2lvbiA9IGtDb3JlRHJhZ0ltYWdlU3BlY1ZlcnNpb25PbmU7CisgICAg
aW1hZ2VTcGVjLnBpeGVsc1dpZGUgPSBbYml0bWFwSW1hZ2UgcGl4ZWxzV2lkZV07CisgICAgaW1h
Z2VTcGVjLnBpeGVsc0hpZ2ggPSBbYml0bWFwSW1hZ2UgcGl4ZWxzSGlnaF07CisgICAgaW1hZ2VT
cGVjLmJpdHNQZXJTYW1wbGUgPSBbYml0bWFwSW1hZ2UgYml0c1BlclNhbXBsZV07CisgICAgaW1h
Z2VTcGVjLnNhbXBsZXNQZXJQaXhlbCA9IFtiaXRtYXBJbWFnZSBzYW1wbGVzUGVyUGl4ZWxdOwor
ICAgIGltYWdlU3BlYy5iaXRzUGVyUGl4ZWwgPSBbYml0bWFwSW1hZ2UgYml0c1BlclBpeGVsXTsK
KyAgICBpbWFnZVNwZWMuYnl0ZXNQZXJSb3cgPSBbYml0bWFwSW1hZ2UgYnl0ZXNQZXJSb3ddOwor
ICAgIGltYWdlU3BlYy5pc1BsYW5hciA9IFtiaXRtYXBJbWFnZSBpc1BsYW5hcl07CisgICAgaW1h
Z2VTcGVjLmhhc0FscGhhID0gW2JpdG1hcEltYWdlIGhhc0FscGhhXTsKKyAgICBbYml0bWFwSW1h
Z2UgZ2V0Qml0bWFwRGF0YVBsYW5lczoodW5zaWduZWQgY2hhcioqKWltYWdlU3BlYy5kYXRhXTsK
KworICAgIC8vIGlmIGltYWdlIHdhcyBmbGlwcGVkLCB3ZSBoYXZlIGFuIHVwc2lkZSBkb3duIGJp
dG1hcCBzaW5jZSB0aGUgY2FjaGUgaXMgcmVuZGVyZWQgZmxpcHBlZAorICAgIGlmIChmbGlwSW1h
Z2UpCisgICAgICAgIGZsaXBJbWFnZVNwZWMoJmltYWdlU3BlYyk7CisKKyAgICBDR1NSZWdpb25P
YmogaW1hZ2VTaGFwZTsKKyAgICBPU1N0YXR1cyBlcnJvciA9IENHU05ld1JlZ2lvbldpdGhSZWN0
KCZpbWFnZVJlY3QsICZpbWFnZVNoYXBlKTsKKyAgICBBU1NFUlQoZXJyb3IgPT0ga0NHRXJyb3JT
dWNjZXNzKTsKKyAgICBpZiAoZXJyb3IgIT0ga0NHRXJyb3JTdWNjZXNzKQorICAgICAgICByZXR1
cm47CisKKyAgICAvLyBtYWtlIHN1cmUgaW1hZ2UgaGFzIGludGVnZXIgb2Zmc2V0CisgICAgQ0dQ
b2ludCBpbWFnZU9mZnNldCA9IHstb2Zmc2V0LngsIC0oaW1hZ2VTaXplLmhlaWdodCAtIG9mZnNl
dC55KX07CisgICAgaW1hZ2VPZmZzZXQueCA9IGZsb29yKGltYWdlT2Zmc2V0LnggKyAwLjUpOwor
ICAgIGltYWdlT2Zmc2V0LnkgPSBmbG9vcihpbWFnZU9mZnNldC55ICsgMC41KTsKKworICAgIGVy
cm9yID0gQ29yZURyYWdTZXRJbWFnZShDb3JlRHJhZ0dldEN1cnJlbnREcmFnKCksIGltYWdlT2Zm
c2V0LCAmaW1hZ2VTcGVjLCBpbWFnZVNoYXBlLCAxLjApOworICAgIENHU1JlbGVhc2VSZWdpb24o
aW1hZ2VTaGFwZSk7CisgICAgQVNTRVJUKGVycm9yID09IGtDR0Vycm9yU3VjY2Vzcyk7Cit9CisK
IHZvaWQgUGFzdGVib2FyZDo6c2V0RHJhZ0ltYWdlKERyYWdJbWFnZSBpbWFnZSwgY29uc3QgSW50
UG9pbnQmIGxvY2F0aW9uKQogewogICAgIC8vIERvbid0IGFsbG93IHNldHRpbmcgdGhlIGRyYWcg
aW1hZ2UgaWYgc29tZW9uZSBrZXB0IGEgcGFzdGVib2FyZCBhbmQgaXMgdHJ5aW5nIHRvIHNldCB0
aGUgaW1hZ2UgdG9vIGxhdGUuCkBAIC02NzcsNyArNzUzLDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjpz
ZXREcmFnSW1hZ2UoRHJhZ0ltYWdlIGltYWdlLCBjb25zdCBJbnRQb2ludCYgbG9jYXRpb24pCiAK
ICAgICAvLyBEYXNoYm9hcmQgd2FudHMgdG8gYmUgYWJsZSB0byBzZXQgdGhlIGRyYWcgaW1hZ2Ug
ZHVyaW5nIGRyYWdnaW5nLCBidXQgQ29jb2EgZG9lcyBub3QgYWxsb3cgdGhpcy4KICAgICAvLyBJ
bnN0ZWFkIHdlIG11c3QgZHJvcCBkb3duIHRvIHRoZSBDb3JlR3JhcGhpY3MgQVBJLgotICAgIHdr
U2V0RHJhZ0ltYWdlKGltYWdlLmdldCgpLmdldCgpLCBsb2NhdGlvbik7CisgICAgc2V0RHJhZ0lt
YWdlSW1wbChpbWFnZS5nZXQoKS5nZXQoKSwgbG9jYXRpb24pOwogCiAgICAgLy8gSGFjazogV2Ug
bXVzdCBwb3N0IGFuIGV2ZW50IHRvIHdha2UgdXAgdGhlIE5TRHJhZ01hbmFnZXIsIHdoaWNoIGlz
IHNpdHRpbmcgaW4gYSBuZXh0RXZlbnQgY2FsbAogICAgIC8vIHVwIHRoZSBzdGFjayBmcm9tIHVz
IGJlY2F1c2UgdGhlIENvcmVGb3VuZGF0aW9uIGRyYWcgbWFuYWdlciBkb2VzIG5vdCB1c2UgdGhl
IHJ1biBsb29wIGJ5IGl0c2VsZi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21hYy9QbGF0Zm9ybUV2ZW50RmFjdG9yeU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21hYy9QbGF0Zm9ybUV2ZW50RmFjdG9yeU1hYy5tbQppbmRleCBiYzFlMzY3ZmM0Njk0ZWFmNDYw
YWIwZWE1YTQyMzBkMDAwMDFhYzg5Li41MDAxMDA5ZjIxMTk0NWRhOTc3OGEzZWFhZjk5ZWQ4MzEy
ZmQ3NzU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1F
dmVudEZhY3RvcnlNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRm
b3JtRXZlbnRGYWN0b3J5TWFjLm1tCkBAIC02NzMsNyArNjczLDcgQEAgc3RhdGljIGludCB0eXBl
Rm9yRXZlbnQoTlNFdmVudCAqZXZlbnQpCiB7CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4o
W05TTWVudSBtZW51VHlwZUZvckV2ZW50OmV2ZW50XSk7CiB9Ci0gICAgCisKIGNsYXNzIFBsYXRm
b3JtTW91c2VFdmVudEJ1aWxkZXIgOiBwdWJsaWMgUGxhdGZvcm1Nb3VzZUV2ZW50IHsKIHB1Ymxp
YzoKICAgICBQbGF0Zm9ybU1vdXNlRXZlbnRCdWlsZGVyKE5TRXZlbnQgKmV2ZW50LCBOU0V2ZW50
ICpjb3JyZXNwb25kaW5nUHJlc3N1cmVFdmVudCwgTlNWaWV3ICp3aW5kb3dWaWV3KQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbGJhclRoZW1lTWFjLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbGJhclRoZW1lTWFjLm1tCmluZGV4IGM0
YzI4Nzc2ODM1NzQ5NmFlYjI4OGZhNDFmMGRkOTVkMmQ3Y2MyODguLjZkMDViODZjNjNkMDVmN2I2
ZDE0NzMxN2VmZDI3ZmYzNDE1ODMxOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21hYy9TY3JvbGxiYXJUaGVtZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tYWMvU2Nyb2xsYmFyVGhlbWVNYWMubW0KQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJT
Y3JvbGxWaWV3LmgiCiAjaW5jbHVkZSAiV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oIgogI2luY2x1
ZGUgPENhcmJvbi9DYXJib24uaD4KKyNpbmNsdWRlIDxwYWwvc3BpL2NnL0NvcmVHcmFwaGljc1NQ
SS5oPgogI2luY2x1ZGUgPHBhbC9zcGkvbWFjL05TU2Nyb2xsZXJJbXBTUEkuaD4KICNpbmNsdWRl
IDx3dGYvQmxvY2tPYmpDRXhjZXB0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CkBA
IC01NzMsNyArNTc0LDcgQEAgc3RhdGljIFJldGFpblB0cjxDR0NvbG9yUmVmPiBsaW5lbkJhY2tn
cm91bmRDb2xvcigpCiAgICAgaWYgKCFjZ0ltYWdlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
IAotICAgIFJldGFpblB0cjxDR1BhdHRlcm5SZWY+IHBhdHRlcm4gPSBhZG9wdENGKHdrQ0dQYXR0
ZXJuQ3JlYXRlV2l0aEltYWdlQW5kVHJhbnNmb3JtKGNnSW1hZ2UsIENHQWZmaW5lVHJhbnNmb3Jt
SWRlbnRpdHksIHdrUGF0dGVyblRpbGluZ05vRGlzdG9ydGlvbikpOworICAgIFJldGFpblB0cjxD
R1BhdHRlcm5SZWY+IHBhdHRlcm4gPSBhZG9wdENGKENHUGF0dGVybkNyZWF0ZVdpdGhJbWFnZTIo
Y2dJbWFnZSwgQ0dBZmZpbmVUcmFuc2Zvcm1JZGVudGl0eSwga0NHUGF0dGVyblRpbGluZ05vRGlz
dG9ydGlvbikpOwogICAgIFJldGFpblB0cjxDR0NvbG9yU3BhY2VSZWY+IGNvbG9yU3BhY2UgPSBh
ZG9wdENGKENHQ29sb3JTcGFjZUNyZWF0ZVBhdHRlcm4oMCkpOwogCiAgICAgY29uc3QgQ0dGbG9h
dCBhbHBoYSA9IDEuMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9U
aGVtZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9UaGVtZU1hYy5tbQppbmRl
eCA5MGYxMDQxZWZmN2YwYzY0N2Q2ZjgzOTFjMDI3ZjUzZDFhYjQ0NzE0Li44YTE5MjY1Y2Y1ZDgy
ZjIwMjVmZjUwMWVlZTJlZjk1MWY4NDM3ODUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tYWMvVGhlbWVNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFj
L1RoZW1lTWFjLm1tCkBAIC0zNiw2ICszNiw3IEBACiAjaW1wb3J0ICJXZWJDb3JlU3lzdGVtSW50
ZXJmYWNlLmgiCiAjaW1wb3J0IDxDYXJib24vQ2FyYm9uLmg+CiAjaW1wb3J0IDxwYWwvc3BpL2Nv
Y29hL05TQnV0dG9uQ2VsbFNQSS5oPgorI2ltcG9ydCA8cGFsL3NwaS9tYWMvTlNHcmFwaGljc1NQ
SS5oPgogI2ltcG9ydCA8d3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMuaD4KICNpbXBvcnQgPHd0Zi9O
ZXZlckRlc3Ryb3llZC5oPgogI2ltcG9ydCA8d3RmL1N0ZExpYkV4dHJhcy5oPgpAQCAtMzQ5LDkg
KzM1MCwzMiBAQCBzdGF0aWMgTlNCdXR0b25DZWxsICpzaGFyZWRDaGVja2JveENlbGwoY29uc3Qg
Q29udHJvbFN0YXRlcyYgc3RhdGVzLCBjb25zdCBJbnRTaQogICAgIHJldHVybiBjaGVja2JveENl
bGw7CiB9CiAKK3N0YXRpYyBib29sIGRyYXdDZWxsRm9jdXNSaW5nV2l0aEZyYW1lQXRUaW1lKE5T
Q2VsbCAqY2VsbCwgTlNSZWN0IGNlbGxGcmFtZSwgTlNWaWV3ICpjb250cm9sVmlldywgTlNUaW1l
SW50ZXJ2YWwgdGltZU9mZnNldCkKK3sKKyAgICBDR0NvbnRleHRSZWYgY2dDb250ZXh0ID0gKENH
Q29udGV4dFJlZilbW05TR3JhcGhpY3NDb250ZXh0IGN1cnJlbnRDb250ZXh0XSBncmFwaGljc1Bv
cnRdOworICAgIENHQ29udGV4dFNhdmVHU3RhdGUoY2dDb250ZXh0KTsKKworICAgIENHRm9jdXNS
aW5nU3R5bGUgZm9jdXNSaW5nU3R5bGU7CisgICAgYm9vbCBuZWVkc1JlcGFpbnQgPSBOU0luaXRp
YWxpemVDR0ZvY3VzUmluZ1N0eWxlRm9yVGltZShOU0ZvY3VzUmluZ09ubHksICZmb2N1c1JpbmdT
dHlsZSwgdGltZU9mZnNldCk7CisgICAgLy8gV2Ugd2FudCB0byByZXNwZWN0IHRoZSBDR0NvbnRl
eHQgY2xpcHBpbmcgYW5kIGFsc28gbm90IG92ZXJwYWludCBhbnkKKyAgICAvLyBleGlzdGluZyBm
b2N1cyByaW5nLiBUaGUgd2F5IHRvIGRvIHRoaXMgaXMgc2V0IGFjY3VtdWxhdGUgdG8KKyAgICAv
LyAtMS4gQWNjb3JkaW5nIHRvIENvcmVHcmFwaGljcywgdGhlIHJlYXNvbmluZyBmb3IgdGhpcyBi
ZWhhdmlvciBoYXMgYmVlbgorICAgIC8vIGxvc3QgaW4gdGltZS4KKyAgICBmb2N1c1JpbmdTdHls
ZS5hY2N1bXVsYXRlID0gLTE7CisgICAgYXV0byBzdHlsZSA9IGFkb3B0Q0YoQ0dTdHlsZUNyZWF0
ZUZvY3VzUmluZ1dpdGhDb2xvcigmZm9jdXNSaW5nU3R5bGUsIEdyYXBoaWNzQ29udGV4dDo6Zm9j
dXNSaW5nQ29sb3IoKSkpOworICAgIENHQ29udGV4dFNldFN0eWxlKGNnQ29udGV4dCwgc3R5bGUu
Z2V0KCkpOworCisgICAgQ0dDb250ZXh0QmVnaW5UcmFuc3BhcmVuY3lMYXllcldpdGhSZWN0KGNn
Q29udGV4dCwgTlNSZWN0VG9DR1JlY3QoY2VsbEZyYW1lKSwgMCk7CisgICAgW2NlbGwgZHJhd0Zv
Y3VzUmluZ01hc2tXaXRoRnJhbWU6Y2VsbEZyYW1lIGluVmlldzpjb250cm9sVmlld107CisgICAg
Q0dDb250ZXh0RW5kVHJhbnNwYXJlbmN5TGF5ZXIoY2dDb250ZXh0KTsKKyAgICBDR0NvbnRleHRS
ZXN0b3JlR1N0YXRlKGNnQ29udGV4dCk7CisKKyAgICByZXR1cm4gbmVlZHNSZXBhaW50OworfQor
CiBzdGF0aWMgYm9vbCBkcmF3Q2VsbEZvY3VzUmluZyhOU0NlbGwgKmNlbGwsIE5TUmVjdCBjZWxs
RnJhbWUsIE5TVmlldyAqY29udHJvbFZpZXcpCiB7Ci0gICAgd2tEcmF3Q2VsbEZvY3VzUmluZ1dp
dGhGcmFtZUF0VGltZShjZWxsLCBjZWxsRnJhbWUsIGNvbnRyb2xWaWV3LCBzdGQ6Om51bWVyaWNf
bGltaXRzPGRvdWJsZT46Om1heCgpKTsKKyAgICBkcmF3Q2VsbEZvY3VzUmluZ1dpdGhGcmFtZUF0
VGltZShjZWxsLCBjZWxsRnJhbWUsIGNvbnRyb2xWaWV3LCBzdGQ6Om51bWVyaWNfbGltaXRzPGRv
dWJsZT46Om1heCgpKTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oCmluZGV4IDkzY2Rm
ZDBjN2FiMWU5NjgwMTA2Y2E2NDg1NDQ4NTY2Yjc0NDRlNDYuLjZiZDE0Y2RiMmIwZWU2MDkwMTRl
ZDI3OTE3NWQ0NzE1ZDdkMGU5YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21hYy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWFjL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaApAQCAtMTI2LDE0ICsxMjYsNyBAQCB0eXBl
ZGVmIGVudW0gewogICAgIHdrUGF0dGVyblRpbGluZ0NvbnN0YW50U3BhY2luZwogfSB3a1BhdHRl
cm5UaWxpbmc7CiAjaWYgIVBMQVRGT1JNKElPUykKLWV4dGVybiBib29sICgqd2tDR0NvbnRleHRE
cmF3c1dpdGhDb3JyZWN0U2hhZG93T2Zmc2V0cykoQ0dDb250ZXh0UmVmKTsKLSNlbmRpZgotZXh0
ZXJuIENHUGF0dGVyblJlZiAoKndrQ0dQYXR0ZXJuQ3JlYXRlV2l0aEltYWdlQW5kVHJhbnNmb3Jt
KShDR0ltYWdlUmVmLCBDR0FmZmluZVRyYW5zZm9ybSwgaW50KTsKLSNpZiAhUExBVEZPUk0oSU9T
KQogZXh0ZXJuIHZvaWQgKCp3a0RyYXdCZXplbGVkVGV4dEFyZWEpKE5TUmVjdCwgQk9PTCBlbmFi
bGVkKTsKLWV4dGVybiB2b2lkICgqd2tEcmF3Rm9jdXNSaW5nKShDR0NvbnRleHRSZWYsIENHQ29s
b3JSZWYsIGludCk7Ci1leHRlcm4gYm9vbCAoKndrRHJhd0ZvY3VzUmluZ0F0VGltZSkoQ0dDb250
ZXh0UmVmLCBOU1RpbWVJbnRlcnZhbCB0aW1lKTsKLWV4dGVybiBib29sICgqd2tEcmF3Q2VsbEZv
Y3VzUmluZ1dpdGhGcmFtZUF0VGltZSkoTlNDZWxsICpjZWxsLCBOU1JlY3QgY2VsbEZyYW1lLCBO
U1ZpZXcgKmNvbnRyb2xWaWV3LCBOU1RpbWVJbnRlcnZhbCB0aW1lKTsKIGV4dGVybiB2b2lkICgq
d2tEcmF3TWVkaWFTbGlkZXJUcmFjaykoQ0dDb250ZXh0UmVmIGNvbnRleHQsIENHUmVjdCByZWN0
LCBmbG9hdCB0aW1lTG9hZGVkLCBmbG9hdCBjdXJyZW50VGltZSwKICAgICBmbG9hdCBkdXJhdGlv
biwgdW5zaWduZWQgc3RhdGUpOwogZXh0ZXJuIHZvaWQgKCp3a0RyYXdNZWRpYVVJUGFydCkoaW50
IHBhcnQsIENHQ29udGV4dFJlZiBjb250ZXh0LCBDR1JlY3QgcmVjdCwgdW5zaWduZWQgc3RhdGUp
OwpAQCAtMTU3LDkgKzE1MCw2IEBAIHR5cGVkZWYgZW51bSB7CiB9IHdrTWVkaWFVSUNvbnRyb2xU
eXBlOwogZXh0ZXJuIE5TQ29udHJvbCAqKCp3a0NyZWF0ZU1lZGlhVUlDb250cm9sKShpbnQpOwog
Ci1leHRlcm4gdm9pZCAoKndrV2luZG93U2V0QWxwaGEpKE5TV2luZG93ICosIGZsb2F0KTsKLWV4
dGVybiB2b2lkICgqd2tXaW5kb3dTZXRTY2FsZWRGcmFtZSkoTlNXaW5kb3cgKiwgTlNSZWN0LCBO
U1JlY3QpOwotCiBleHRlcm4gdW5zaWduZWQgKCp3a1FUSW5jbHVkZU9ubHlNb2Rlcm5NZWRpYUZp
bGVUeXBlcykodm9pZCk7CiBleHRlcm4gdm9pZCAoKndrUVRNb3ZpZURpc2FibGVDb21wb25lbnQp
KHVpbnQzMl90WzVdKTsKIGV4dGVybiBmbG9hdCAoKndrUVRNb3ZpZU1heFRpbWVMb2FkZWQpKFFU
TW92aWUqKTsKQEAgLTE3Myw5ICsxNjMsNyBAQCBleHRlcm4gTlNBcnJheSAqKCp3a1FUR2V0U2l0
ZXNJbk1lZGlhRG93bmxvYWRDYWNoZSkoKTsKIGV4dGVybiB2b2lkICgqd2tRVENsZWFyTWVkaWFE
b3dubG9hZENhY2hlRm9yU2l0ZSkoTlNTdHJpbmcgKnNpdGUpOwogZXh0ZXJuIHZvaWQgKCp3a1FU
Q2xlYXJNZWRpYURvd25sb2FkQ2FjaGUpKCk7CiBleHRlcm4gdm9pZCAoKndrU2V0Q29va2llU3Rv
cmFnZVByaXZhdGVCcm93c2luZ0VuYWJsZWQpKEJPT0wpOwotZXh0ZXJuIHZvaWQgKCp3a1NldERy
YWdJbWFnZSkoTlNJbWFnZSosIE5TUG9pbnQgb2Zmc2V0KTsKICNlbmRpZgotZXh0ZXJuIGJvb2wg
KCp3a0NHQ29udGV4dElzUERGQ29udGV4dCkoQ0dDb250ZXh0UmVmKTsKIGV4dGVybiB2b2lkICgq
d2tTZXRDT05ORUNUUHJveHlGb3JTdHJlYW0pKENGUmVhZFN0cmVhbVJlZiwgQ0ZTdHJpbmdSZWYg
cHJveHlIb3N0LCBDRk51bWJlclJlZiBwcm94eVBvcnQpOwogZXh0ZXJuIHZvaWQgKCp3a1NldENP
Tk5FQ1RQcm94eUF1dGhvcml6YXRpb25Gb3JTdHJlYW0pKENGUmVhZFN0cmVhbVJlZiwgQ0ZTdHJp
bmdSZWYgcHJveHlBdXRob3JpemF0aW9uU3RyaW5nKTsKIGV4dGVybiBDRkhUVFBNZXNzYWdlUmVm
ICgqd2tDb3B5Q09OTkVDVFByb3h5UmVzcG9uc2UpKENGUmVhZFN0cmVhbVJlZiwgQ0ZVUkxSZWYg
cmVzcG9uc2VVUkwsIENGU3RyaW5nUmVmIHByb3h5SG9zdCwgQ0ZOdW1iZXJSZWYgcHJveHlQb3J0
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlU3lzdGVt
SW50ZXJmYWNlLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVTeXN0ZW1J
bnRlcmZhY2UubW0KaW5kZXggNjQ5ZDdhNjdjZDY3NjU0YTJhM2UzOTRlOTM1ZjhjNTI2ZmEzOTI1
YS4uYjRiNWMwMDg2YzQyZTJkNDNkMzA2YjkyZjYxNDI2ZjQ3YzkzNmI4MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2UubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2UubW0K
QEAgLTMxLDEyICszMSw3IEBACiAjaW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KIAog
dm9pZCAoKndrQ0FMYXllckVudW1lcmF0ZVJlY3RzQmVpbmdEcmF3bldpdGhCbG9jaykoQ0FMYXll
ciAqLCBDR0NvbnRleHRSZWYgY29udGV4dCwgdm9pZCAoXmJsb2NrKShDR1JlY3QgcmVjdCkpOwot
Ym9vbCAoKndrQ0dDb250ZXh0RHJhd3NXaXRoQ29ycmVjdFNoYWRvd09mZnNldHMpKENHQ29udGV4
dFJlZik7Ci1DR1BhdHRlcm5SZWYgKCp3a0NHUGF0dGVybkNyZWF0ZVdpdGhJbWFnZUFuZFRyYW5z
Zm9ybSkoQ0dJbWFnZVJlZiwgQ0dBZmZpbmVUcmFuc2Zvcm0sIGludCk7CiB2b2lkICgqd2tEcmF3
QmV6ZWxlZFRleHRBcmVhKShOU1JlY3QsIEJPT0wgZW5hYmxlZCk7Ci12b2lkICgqd2tEcmF3Rm9j
dXNSaW5nKShDR0NvbnRleHRSZWYsIENHQ29sb3JSZWYsIGludCk7Ci1ib29sICgqd2tEcmF3Rm9j
dXNSaW5nQXRUaW1lKShDR0NvbnRleHRSZWYsIE5TVGltZUludGVydmFsKTsKLWJvb2wgKCp3a0Ry
YXdDZWxsRm9jdXNSaW5nV2l0aEZyYW1lQXRUaW1lKShOU0NlbGwqLCBOU1JlY3QsIE5TVmlldyos
IE5TVGltZUludGVydmFsKTsKIHZvaWQgKCp3a0RyYXdNZWRpYVNsaWRlclRyYWNrKShDR0NvbnRl
eHRSZWYgY29udGV4dCwgQ0dSZWN0IHJlY3QsIGZsb2F0IHRpbWVMb2FkZWQsIGZsb2F0IGN1cnJl
bnRUaW1lLAogICAgIGZsb2F0IGR1cmF0aW9uLCB1bnNpZ25lZCBzdGF0ZSk7CiBCT09MICgqd2tI
aXRUZXN0TWVkaWFVSVBhcnQpKGludCBwYXJ0LCBDR1JlY3QgYm91bmRzLCBDR1BvaW50IHBvaW50
KTsKQEAgLTQ0LDggKzM5LDYgQEAgdm9pZCAoKndrRHJhd01lZGlhVUlQYXJ0KShpbnQgcGFydCwg
Q0dDb250ZXh0UmVmIGNvbnRleHQsIENHUmVjdCByZWN0LCB1bnNpZ25lZAogdm9pZCAoKndrTWVh
c3VyZU1lZGlhVUlQYXJ0KShpbnQgcGFydCwgQ0dSZWN0ICpib3VuZHMsIENHU2l6ZSAqbmF0dXJh
bFNpemUpOwogTlNWaWV3ICooKndrQ3JlYXRlTWVkaWFVSUJhY2tncm91bmRWaWV3KSh2b2lkKTsK
IE5TQ29udHJvbCAqKCp3a0NyZWF0ZU1lZGlhVUlDb250cm9sKShpbnQpOwotdm9pZCAoKndrV2lu
ZG93U2V0QWxwaGEpKE5TV2luZG93ICosIGZsb2F0KTsKLXZvaWQgKCp3a1dpbmRvd1NldFNjYWxl
ZEZyYW1lKShOU1dpbmRvdyAqLCBOU1JlY3QsIE5TUmVjdCk7CiBOU1RpbWVJbnRlcnZhbCAoKndr
R2V0TlNVUkxSZXNwb25zZUNhbGN1bGF0ZWRFeHBpcmF0aW9uKShOU1VSTFJlc3BvbnNlICpyZXNw
b25zZSk7CiBCT09MICgqd2tHZXROU1VSTFJlc3BvbnNlTXVzdFJldmFsaWRhdGUpKE5TVVJMUmVz
cG9uc2UgKnJlc3BvbnNlKTsKIHZvaWQgKCp3a0dldFdoZWVsRXZlbnREZWx0YXMpKE5TRXZlbnQq
LCBmbG9hdCogZGVsdGFYLCBmbG9hdCogZGVsdGFZLCBCT09MKiBjb250aW51b3VzKTsKQEAgLTY0
LDggKzU3LDYgQEAgTlNBcnJheSAqKCp3a1FUR2V0U2l0ZXNJbk1lZGlhRG93bmxvYWRDYWNoZSko
KTsKIHZvaWQgKCp3a1FUQ2xlYXJNZWRpYURvd25sb2FkQ2FjaGVGb3JTaXRlKShOU1N0cmluZyAq
c2l0ZSk7CiB2b2lkICgqd2tRVENsZWFyTWVkaWFEb3dubG9hZENhY2hlKSgpOwogCi12b2lkICgq
d2tTZXREcmFnSW1hZ2UpKE5TSW1hZ2UqLCBOU1BvaW50IG9mZnNldCk7Ci1ib29sICgqd2tDR0Nv
bnRleHRJc1BERkNvbnRleHQpKENHQ29udGV4dFJlZik7CiB2b2lkICgqd2tTZXRDT05ORUNUUHJv
eHlGb3JTdHJlYW0pKENGUmVhZFN0cmVhbVJlZiwgQ0ZTdHJpbmdSZWYgcHJveHlIb3N0LCBDRk51
bWJlclJlZiBwcm94eVBvcnQpOwogdm9pZCAoKndrU2V0Q09OTkVDVFByb3h5QXV0aG9yaXphdGlv
bkZvclN0cmVhbSkoQ0ZSZWFkU3RyZWFtUmVmLCBDRlN0cmluZ1JlZiBwcm94eUF1dGhvcml6YXRp
b25TdHJpbmcpOwogQ0ZIVFRQTWVzc2FnZVJlZiAoKndrQ29weUNPTk5FQ1RQcm94eVJlc3BvbnNl
KShDRlJlYWRTdHJlYW1SZWYsIENGVVJMUmVmIHJlc3BvbnNlVVJMLCBDRlN0cmluZ1JlZiBwcm94
eUhvc3QsIENGTnVtYmVyUmVmIHByb3h5UG9ydCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tYWMvV2ViV2luZG93QW5pbWF0aW9uLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWFjL1dlYldpbmRvd0FuaW1hdGlvbi5tbQppbmRleCA4YWJjODQwYjczY2M2NDVjOGFj
NDA2ZGVhZmFlOTQyMmNkYzM1M2UyLi5jYTU1OWRmMGJjYTliNjI0ZGUyZmMwNDJhMmYzYTE1NmM4
NzBhODJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViV2luZG93
QW5pbWF0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJXaW5kb3dB
bmltYXRpb24ubW0KQEAgLTI5LDYgKzI5LDcgQEAKIAogI2ltcG9ydCAiRmxvYXRDb252ZXJzaW9u
LmgiCiAjaW1wb3J0ICJXZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmgiCisjaW1wb3J0IDxwYWwvc3Bp
L2NnL0NvcmVHcmFwaGljc1NQSS5oPgogI2ltcG9ydCA8d3RmL0Fzc2VydGlvbnMuaD4KICNpbXBv
cnQgPHd0Zi9NYXRoRXh0cmFzLmg+CiAKQEAgLTEwOSw2ICsxMTAsNTkgQEAgLSAoTlNSZWN0KWN1
cnJlbnRGcmFtZQogICAgIHJldHVybiBzY2FsZWRSZWN0KF9maW5hbEZyYW1lLCBfaW5pdGlhbEZy
YW1lLCBbc2VsZiBjdXJyZW50VmFsdWVdKTsKIH0KIAorc3RhdGljIHZvaWQgZmxpcFJlY3QoTlNS
ZWN0ICpyZWN0KQoreworICAgIHJlY3QtPm9yaWdpbi55ID0gTlNNYXhZKFsoTlNTY3JlZW4gKilb
W05TU2NyZWVuIHNjcmVlbnNdIG9iamVjdEF0SW5kZXg6MF0gZnJhbWVdKSAtIE5TTWF4WSgqcmVj
dCk7Cit9CisKK3N0YXRpYyBDR1NDb25uZWN0aW9uSUQgbWFpbldpbmRvd1NlcnZlckNvbm5lY3Rp
b25JRCgpCit7CisgICAgc3RhdGljIENHU0Nvbm5lY3Rpb25JRCBjZ3NJZDsKKyAgICBpZiAoIWNn
c0lkKQorICAgICAgICBjZ3NJZCA9IENHU01haW5Db25uZWN0aW9uSUQoKTsKKyAgICByZXR1cm4g
Y2dzSWQ7Cit9CisKK3N0YXRpYyB2b2lkIHNldFNjYWxlZEZyYW1lRm9yV2luZG93KE5TV2luZG93
ICp3aW5kb3csIE5TUmVjdCBzY2FsZUZyYW1lLCBOU1JlY3Qgbm9uU2NhbGVkRnJhbWUpCit7Cisg
ICAgaWYgKE5TRXF1YWxSZWN0cyhzY2FsZUZyYW1lLCBub25TY2FsZWRGcmFtZSkpIHsKKyAgICAg
ICAgQ0dTU2V0V2luZG93V2FycChtYWluV2luZG93U2VydmVyQ29ubmVjdGlvbklEKCksIFt3aW5k
b3cgd2luZG93TnVtYmVyXSwgMCwgMCwgTlVMTCk7CisgICAgICAgIHJldHVybjsKKyAgICB9Cisg
ICAgCisgICAgZmxvYXQgbWVzaFsxNl07CisgICAgCisgICAgZmxpcFJlY3QoJnNjYWxlRnJhbWUp
OworICAgIGZsaXBSZWN0KCZub25TY2FsZWRGcmFtZSk7CisgICAgCisgICAgLy8gdG9wLWxlZnQg
cG9pbnQgKHRvIGFuZCBmcm9tKQorICAgIG1lc2hbMF0gPSAwOworICAgIG1lc2hbMV0gPSAwOwor
ICAgIG1lc2hbMl0gPSBOU01pblgoc2NhbGVGcmFtZSk7CisgICAgbWVzaFszXSA9IE5TTWluWShz
Y2FsZUZyYW1lKTsKKyAgICAKKyAgICAvLyB0b3AtcmlnaHQgcG9pbnQgKHRvIGFuZCBmcm9tKQor
ICAgIG1lc2hbNF0gPSBOU1dpZHRoKG5vblNjYWxlZEZyYW1lKTsKKyAgICBtZXNoWzVdID0gMDsK
KyAgICBtZXNoWzZdID0gTlNNYXhYKHNjYWxlRnJhbWUpOworICAgIG1lc2hbN10gPSBOU01pblko
c2NhbGVGcmFtZSk7CisgICAgCisgICAgLy8gYm90dG9tLWxlZnQgKHRvIGFuZCBmcm9tKQorICAg
IG1lc2hbOF0gPSAwOworICAgIG1lc2hbOV0gPSBOU0hlaWdodChub25TY2FsZWRGcmFtZSk7Cisg
ICAgbWVzaFsxMF0gPSBOU01pblgoc2NhbGVGcmFtZSk7CisgICAgbWVzaFsxMV0gPSBOU01heFko
c2NhbGVGcmFtZSk7CisgICAgCisgICAgLy8gYm90dG9tLXJpZ2h0ICh0byBhbmQgZnJvbSkKKyAg
ICBtZXNoWzEyXSA9IE5TV2lkdGgobm9uU2NhbGVkRnJhbWUpOworICAgIG1lc2hbMTNdID0gTlNI
ZWlnaHQobm9uU2NhbGVkRnJhbWUpOworICAgIG1lc2hbMTRdID0gTlNNYXhYKHNjYWxlRnJhbWUp
OworICAgIG1lc2hbMTVdID0gTlNNYXhZKHNjYWxlRnJhbWUpOworICAgIAorICAgIC8vIEFwcGx5
IHRoZSB3YXJwLgorICAgIENHU1NldFdpbmRvd1dhcnAobWFpbldpbmRvd1NlcnZlckNvbm5lY3Rp
b25JRCgpLCBbd2luZG93IHdpbmRvd051bWJlcl0sIDIsIDIsIG1lc2gpOworfQorCiAtICh2b2lk
KXNldEN1cnJlbnRQcm9ncmVzczooTlNBbmltYXRpb25Qcm9ncmVzcylwcm9ncmVzcwogewogICAg
IGlmICghX3dpbmRvdykKQEAgLTExNyw3ICsxNzEsNyBAQCAtICh2b2lkKXNldEN1cnJlbnRQcm9n
cmVzczooTlNBbmltYXRpb25Qcm9ncmVzcylwcm9ncmVzcwogICAgIFtzdXBlciBzZXRDdXJyZW50
UHJvZ3Jlc3M6cHJvZ3Jlc3NdOwogCiAgICAgTlNSZWN0IGN1cnJlbnRSZWN0ID0gW3NlbGYgY3Vy
cmVudEZyYW1lXTsKLSAgICB3a1dpbmRvd1NldFNjYWxlZEZyYW1lKF93aW5kb3csIGN1cnJlbnRS
ZWN0LCBfcmVhbEZyYW1lKTsKKyAgICBzZXRTY2FsZWRGcmFtZUZvcldpbmRvdyhfd2luZG93LCBj
dXJyZW50UmVjdCwgX3JlYWxGcmFtZSk7CiAgICAgW19zdWJBbmltYXRpb24gc2V0Q3VycmVudFBy
b2dyZXNzOnByb2dyZXNzXTsKIH0KIApAQCAtMjExLDcgKzI2NSw3IEBAIC0gKHZvaWQpc2V0Q3Vy
cmVudFByb2dyZXNzOihOU0FuaW1hdGlvblByb2dyZXNzKXByb2dyZXNzCiAgICAgQVNTRVJUKF93
aW5kb3cpOwogICAgIFtzdXBlciBzZXRDdXJyZW50UHJvZ3Jlc3M6cHJvZ3Jlc3NdOwogCi0gICAg
d2tXaW5kb3dTZXRBbHBoYShfd2luZG93LCBbc2VsZiBjdXJyZW50QWxwaGFdKTsKKyAgICBDR1NT
ZXRXaW5kb3dBbHBoYShtYWluV2luZG93U2VydmVyQ29ubmVjdGlvbklEKCksIF93aW5kb3cud2lu
ZG93TnVtYmVyLCBbc2VsZiBjdXJyZW50QWxwaGFdKTsKIH0KIAogLSAodm9pZClzZXRXaW5kb3c6
KE5TV2luZG93Kil3aW5kb3cKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vz
cy9tYWMvUGx1Z2luUHJvY2Vzc01hYy5tbSBiL1NvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9t
YWMvUGx1Z2luUHJvY2Vzc01hYy5tbQppbmRleCBkZDUzMzcwMjQ3ZjBhNmI3NGEwMWJmY2M4YWE5
NmZhNmZmZjM0NDE4Li43ZmYxYmM5N2IyOTQ3ZmZhNDg5OWRkZjM5M2ZjMDk0OTQ5YTU3NWMzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvbWFjL1BsdWdpblByb2Nlc3NN
YWMubW0KKysrIGIvU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL21hYy9QbHVnaW5Qcm9jZXNz
TWFjLm1tCkBAIC01MzAsNyArNTMwLDEwIEBAIHZvaWQgUGx1Z2luUHJvY2Vzczo6cGxhdGZvcm1J
bml0aWFsaXplUHJvY2Vzcyhjb25zdCBDaGlsZFByb2Nlc3NJbml0aWFsaXphdGlvblBhCiAKICAg
ICAvLyBGSVhNRTogSXQgd291bGQgYmUgYmV0dGVyIHRvIHByb3h5IFNldEN1cnNvciBjYWxscyBv
dmVyIHRvIHRoZSBVSSBwcm9jZXNzIGluc3RlYWQgb2YKICAgICAvLyBhbGxvd2luZyBwbHVnLWlu
cyB0byBjaGFuZ2UgdGhlIG1vdXNlIGN1cnNvciBhdCBhbnkgdGltZS4KLSAgICBXS0VuYWJsZVNl
dHRpbmdDdXJzb3JXaGVuSW5CYWNrZ3JvdW5kKCk7CisgICAgLy8gRklYTUU6IFNldHNDdXJzb3JJ
bkJhY2tncm91bmQgY29ubmVjdGlvbiBwcm9wZXJ0eSBpcyBkZXByZWNhdGVkIGluIGZhdm9yIG9m
IGtDR1NTZXRzQ3Vyc29ySW5CYWNrZ3JvdW5kVGFnQml0IHdpbmRvdyB0YWcgYml0LgorICAgIC8v
IDxyZGFyOi8vcHJvYmxlbS83NzUyNDIyPiBhc2tzIGZvciBhbiBBUEkgdG8gc2V0IGN1cnNvciBm
cm9tIGJhY2tncm91bmQgcHJvY2Vzc2VzLgorICAgIENHU0Nvbm5lY3Rpb25JRCBjaWQgPSBDR1NN
YWluQ29ubmVjdGlvbklEKCk7CisgICAgQ0dTU2V0Q29ubmVjdGlvblByb3BlcnR5KGNpZCwgY2lk
LCBDRlNUUigiU2V0c0N1cnNvckluQmFja2dyb3VuZCIpLCAoQ0ZUeXBlUmVmKWtDRkJvb2xlYW5U
cnVlKTsKIAogICAgIFJldGFpblB0cjxDRlVSTFJlZj4gcGx1Z2luVVJMID0gYWRvcHRDRihDRlVS
TENyZWF0ZVdpdGhGaWxlU3lzdGVtUGF0aCgwLCBtX3BsdWdpblBhdGguY3JlYXRlQ0ZTdHJpbmco
KS5nZXQoKSwga0NGVVJMUE9TSVhQYXRoU3R5bGUsIGZhbHNlKSk7CiAgICAgaWYgKCFwbHVnaW5V
UkwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2luZG93U2VydmVy
Q29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dpbmRvd1NlcnZlckNv
bm5lY3Rpb24uaAppbmRleCA4MzhhMzRmYjVjMmQ0NGVlZTU0NjRlNTdlZGM3MGUxMGFkYmQzYjIw
Li5lN2I1MThjNmM1ZWIwYjA2MmQ4OWE5MWNhNzA1NzdiYTg0ZWIwNTExIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2luZG93U2VydmVyQ29ubmVjdGlvbi5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XaW5kb3dTZXJ2ZXJDb25uZWN0aW9uLmgKQEAg
LTQxLDkgKzQxLDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIHdpbmRvd1NlcnZlckNvbm5lY3Rpb25T
dGF0ZUNoYW5nZWQoKTsKIAogICAgIHZvaWQgYXBwbGljYXRpb25XaW5kb3dNb2RpZmljYXRpb25z
U3RvcHBlZChib29sIHN0b3BwZWQpOwotCi0gICAgc3RhdGljIHZvaWQgYXBwbGljYXRpb25XaW5k
b3dNb2RpZmljYXRpb25zU3RhcnRlZCh1aW50MzJfdCwgdm9pZCosIHVpbnQzMl90LCB2b2lkKiwg
dWludDMyX3QpOwotICAgIHN0YXRpYyB2b2lkIGFwcGxpY2F0aW9uV2luZG93TW9kaWZpY2F0aW9u
c1N0b3BwZWQodWludDMyX3QsIHZvaWQqLCB1aW50MzJfdCwgdm9pZCosIHVpbnQzMl90KTsKICNl
bmRpZgogCiAgICAgYm9vbCBtX2FwcGxpY2F0aW9uV2luZG93TW9kaWZpY2F0aW9uc0hhdmVTdG9w
cGVkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dpbmRvd1NlcnZl
ckNvbm5lY3Rpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2luZG93U2VydmVy
Q29ubmVjdGlvbi5tbQppbmRleCA4MTk1MzVjMmFjMTI5YzhkNTIxMjE4Yzk3NTVjODRiNjFkNDRm
Mjg1Li5hOWU1ZWQ1ZDYwMzZhNTY3NjA2MTUzYmU5NjBhMzRlMWFiMzYwOTQ1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2luZG93U2VydmVyQ29ubmVjdGlvbi5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2luZG93U2VydmVyQ29ubmVjdGlvbi5t
bQpAQCAtMjgsNiArMjgsNyBAQAogCiAjaW1wb3J0ICJXZWJLaXRTeXN0ZW1JbnRlcmZhY2UuaCIK
ICNpbXBvcnQgIldlYlByb2Nlc3NQb29sLmgiCisjaW1wb3J0IDxwYWwvc3BpL2NnL0NvcmVHcmFw
aGljc1NQSS5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIApAQCAtNDEsMTYgKzQyLDYgQEAgdm9p
ZCBXaW5kb3dTZXJ2ZXJDb25uZWN0aW9uOjphcHBsaWNhdGlvbldpbmRvd01vZGlmaWNhdGlvbnNT
dG9wcGVkKGJvb2wgc3RvcHBlZCkKICAgICB3aW5kb3dTZXJ2ZXJDb25uZWN0aW9uU3RhdGVDaGFu
Z2VkKCk7CiB9CiAKLXZvaWQgV2luZG93U2VydmVyQ29ubmVjdGlvbjo6YXBwbGljYXRpb25XaW5k
b3dNb2RpZmljYXRpb25zU3RhcnRlZCh1aW50MzJfdCwgdm9pZCosIHVpbnQzMl90LCB2b2lkKiwg
dWludDMyX3QpCi17Ci0gICAgV2luZG93U2VydmVyQ29ubmVjdGlvbjo6c2luZ2xldG9uKCkuYXBw
bGljYXRpb25XaW5kb3dNb2RpZmljYXRpb25zU3RvcHBlZChmYWxzZSk7Ci19Ci0KLXZvaWQgV2lu
ZG93U2VydmVyQ29ubmVjdGlvbjo6YXBwbGljYXRpb25XaW5kb3dNb2RpZmljYXRpb25zU3RvcHBl
ZCh1aW50MzJfdCwgdm9pZCosIHVpbnQzMl90LCB2b2lkKiwgdWludDMyX3QpCi17Ci0gICAgV2lu
ZG93U2VydmVyQ29ubmVjdGlvbjo6c2luZ2xldG9uKCkuYXBwbGljYXRpb25XaW5kb3dNb2RpZmlj
YXRpb25zU3RvcHBlZCh0cnVlKTsKLX0KLQogdm9pZCBXaW5kb3dTZXJ2ZXJDb25uZWN0aW9uOjp3
aW5kb3dTZXJ2ZXJDb25uZWN0aW9uU3RhdGVDaGFuZ2VkKCkKIHsKICAgICBmb3IgKGF1dG8qIHBy
b2Nlc3NQb29sIDogV2ViUHJvY2Vzc1Bvb2w6OmFsbFByb2Nlc3NQb29scygpKQpAQCAtNjUsMjMg
KzU2LDQ4IEBAIFdpbmRvd1NlcnZlckNvbm5lY3Rpb24mIFdpbmRvd1NlcnZlckNvbm5lY3Rpb246
OnNpbmdsZXRvbigpCiAgICAgcmV0dXJuIHdpbmRvd1NlcnZlckNvbm5lY3Rpb247CiB9CiAKKyNp
ZiBIQVZFKFdJTkRPV19TRVJWRVJfT0NDTFVTSU9OX05PVElGSUNBVElPTlMpCitzdGF0aWMgYm9v
bCByZWdpc3Rlck9jY2x1c2lvbk5vdGlmaWNhdGlvbkhhbmRsZXIoQ0dTTm90aWZpY2F0aW9uVHlw
ZSB0eXBlLCBDR1NOb3RpZnlDb25uZWN0aW9uUHJvY1B0ciBoYW5kbGVyKQoreworICAgIENHU0Nv
bm5lY3Rpb25JRCBtYWluQ29ubmVjdGlvbiA9IENHU01haW5Db25uZWN0aW9uSUQoKTsKKyAgICBz
dGF0aWMgYm9vbCBub3RpZmljYXRpb25zRW5hYmxlZDsKKyAgICBpZiAoIW5vdGlmaWNhdGlvbnNF
bmFibGVkKSB7CisgICAgICAgIGlmIChDR1NQYWNrYWdlc0VuYWJsZUNvbm5lY3Rpb25PY2NsdXNp
b25Ob3RpZmljYXRpb25zKG1haW5Db25uZWN0aW9uLCB0cnVlLCBudWxscHRyKSAhPSBrQ0dFcnJv
clN1Y2Nlc3MpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGlmIChDR1NQYWNr
YWdlc0VuYWJsZUNvbm5lY3Rpb25XaW5kb3dNb2RpZmljYXRpb25Ob3RpZmljYXRpb25zKG1haW5D
b25uZWN0aW9uLCB0cnVlLCBudWxscHRyKSAhPSBrQ0dFcnJvclN1Y2Nlc3MpCisgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgICAgIG5vdGlmaWNhdGlvbnNFbmFibGVkID0gdHJ1ZTsKKyAg
ICB9CisKKyAgICByZXR1cm4gQ0dTUmVnaXN0ZXJDb25uZWN0aW9uTm90aWZ5UHJvYyhtYWluQ29u
bmVjdGlvbiwgaGFuZGxlciwgdHlwZSwgbnVsbHB0cikgPT0ga0NHRXJyb3JTdWNjZXNzOworfQor
I2VuZGlmCisKIFdpbmRvd1NlcnZlckNvbm5lY3Rpb246OldpbmRvd1NlcnZlckNvbm5lY3Rpb24o
KQogICAgIDogbV9hcHBsaWNhdGlvbldpbmRvd01vZGlmaWNhdGlvbnNIYXZlU3RvcHBlZChmYWxz
ZSkKIHsKICNpZiBIQVZFKFdJTkRPV19TRVJWRVJfT0NDTFVTSU9OX05PVElGSUNBVElPTlMpCiAg
ICAgc3RydWN0IE9jY2x1c2lvbk5vdGlmaWNhdGlvbkhhbmRsZXIgewotICAgICAgICBXS09jY2x1
c2lvbk5vdGlmaWNhdGlvblR5cGUgbm90aWZpY2F0aW9uVHlwZTsKLSAgICAgICAgV0tPY2NsdXNp
b25Ob3RpZmljYXRpb25IYW5kbGVyIGhhbmRsZXI7CisgICAgICAgIENHU05vdGlmaWNhdGlvblR5
cGUgbm90aWZpY2F0aW9uVHlwZTsKKyAgICAgICAgQ0dTTm90aWZ5Q29ubmVjdGlvblByb2NQdHIg
aGFuZGxlcjsKICAgICAgICAgY29uc3QgY2hhciogbmFtZTsKICAgICB9OwogCisgICAgc3RhdGlj
IGF1dG8gd2luZG93TW9kaWZpY2F0aW9uc1N0YXJ0ZWQgPSBbXShDR1NOb3RpZmljYXRpb25UeXBl
LCB2b2lkKiwgdWludDMyX3QsIHZvaWQqLCBDR1NDb25uZWN0aW9uSUQpIHsKKyAgICAgICAgV2lu
ZG93U2VydmVyQ29ubmVjdGlvbjo6c2luZ2xldG9uKCkuYXBwbGljYXRpb25XaW5kb3dNb2RpZmlj
YXRpb25zU3RvcHBlZChmYWxzZSk7CisgICAgfTsKKworICAgIHN0YXRpYyBhdXRvIHdpbmRvd01v
ZGlmaWNhdGlvbnNTdG9wcGVkID0gW10oQ0dTTm90aWZpY2F0aW9uVHlwZSwgdm9pZCosIHVpbnQz
Ml90LCB2b2lkKiwgQ0dTQ29ubmVjdGlvbklEKSB7CisgICAgICAgIFdpbmRvd1NlcnZlckNvbm5l
Y3Rpb246OnNpbmdsZXRvbigpLmFwcGxpY2F0aW9uV2luZG93TW9kaWZpY2F0aW9uc1N0b3BwZWQo
dHJ1ZSk7CisgICAgfTsKKwogICAgIHN0YXRpYyBjb25zdCBPY2NsdXNpb25Ob3RpZmljYXRpb25I
YW5kbGVyIG9jY2x1c2lvbk5vdGlmaWNhdGlvbkhhbmRsZXJzW10gPSB7Ci0gICAgICAgIHsgV0tP
Y2NsdXNpb25Ob3RpZmljYXRpb25UeXBlQXBwbGljYXRpb25XaW5kb3dNb2RpZmljYXRpb25zU3Rh
cnRlZCwgYXBwbGljYXRpb25XaW5kb3dNb2RpZmljYXRpb25zU3RhcnRlZCwgIkFwcGxpY2F0aW9u
IFdpbmRvdyBNb2RpZmljYXRpb25zIFN0YXJ0ZWQiIH0sCi0gICAgICAgIHsgV0tPY2NsdXNpb25O
b3RpZmljYXRpb25UeXBlQXBwbGljYXRpb25XaW5kb3dNb2RpZmljYXRpb25zU3RvcHBlZCwgYXBw
bGljYXRpb25XaW5kb3dNb2RpZmljYXRpb25zU3RvcHBlZCwgIkFwcGxpY2F0aW9uIFdpbmRvdyBN
b2RpZmljYXRpb25zIFN0b3BwZWQiIH0sCisgICAgICAgIHsga0NHU0Nvbm5lY3Rpb25XaW5kb3dN
b2RpZmljYXRpb25zU3RhcnRlZCwgd2luZG93TW9kaWZpY2F0aW9uc1N0YXJ0ZWQsICJBcHBsaWNh
dGlvbiBXaW5kb3cgTW9kaWZpY2F0aW9ucyBTdGFydGVkIiB9LAorICAgICAgICB7IGtDR1NDb25u
ZWN0aW9uV2luZG93TW9kaWZpY2F0aW9uc1N0b3BwZWQsIHdpbmRvd01vZGlmaWNhdGlvbnNTdG9w
cGVkLCAiQXBwbGljYXRpb24gV2luZG93IE1vZGlmaWNhdGlvbnMgU3RvcHBlZCIgfSwKICAgICB9
OwogCiAgICAgZm9yIChjb25zdCBhdXRvJiBvY2NsdXNpb25Ob3RpZmljYXRpb25IYW5kbGVyIDog
b2NjbHVzaW9uTm90aWZpY2F0aW9uSGFuZGxlcnMpIHsKLSAgICAgICAgYm9vbCByZXN1bHQgPSBX
S1JlZ2lzdGVyT2NjbHVzaW9uTm90aWZpY2F0aW9uSGFuZGxlcihvY2NsdXNpb25Ob3RpZmljYXRp
b25IYW5kbGVyLm5vdGlmaWNhdGlvblR5cGUsIG9jY2x1c2lvbk5vdGlmaWNhdGlvbkhhbmRsZXIu
aGFuZGxlcik7CisgICAgICAgIGJvb2wgcmVzdWx0ID0gcmVnaXN0ZXJPY2NsdXNpb25Ob3RpZmlj
YXRpb25IYW5kbGVyKG9jY2x1c2lvbk5vdGlmaWNhdGlvbkhhbmRsZXIubm90aWZpY2F0aW9uVHlw
ZSwgb2NjbHVzaW9uTm90aWZpY2F0aW9uSGFuZGxlci5oYW5kbGVyKTsKICAgICAgICAgVU5VU0VE
X1BBUkFNKHJlc3VsdCk7CiAgICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0UocmVzdWx0LCAiUmVn
aXN0cmF0aW9uIG9mIFwiJXNcIiBub3RpZmljYXRpb24gaGFuZGxlciBmYWlsZWQuXG4iLCBvY2Ns
dXNpb25Ob3RpZmljYXRpb25IYW5kbGVyLm5hbWUpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViU3lzdGVtSW50ZXJmYWNl
Lm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJTeXN0
ZW1JbnRlcmZhY2UubW0KaW5kZXggNDRkYzdlY2IzNjIwZThmNDUxNDJlYjM3Yzc4NzVhZGNiM2I5
NDEyYi4uODNkZDgzZTQzNGRiZDM0OTUzNDNhZTcxMDE5MjQ5MzJkOGZiYTUyMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJTeXN0ZW1J
bnRlcmZhY2UubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L21hYy9XZWJTeXN0ZW1JbnRlcmZhY2UubW0KQEAgLTM3LDIxICszNywxMSBAQCB2b2lkIEluaXRX
ZWJDb3JlU3lzdGVtSW50ZXJmYWNlKHZvaWQpCiAgICAgCiAgICAgZGlzcGF0Y2hfb25jZSgmaW5p
dE9uY2UsIF57CiAgICAgICAgIElOSVQoQ0FMYXllckVudW1lcmF0ZVJlY3RzQmVpbmdEcmF3bldp
dGhCbG9jayk7Ci0gICAgICAgIElOSVQoQ0dQYXR0ZXJuQ3JlYXRlV2l0aEltYWdlQW5kVHJhbnNm
b3JtKTsKLSNpZiAhUExBVEZPUk0oSU9TKQotICAgICAgICBJTklUKENHQ29udGV4dERyYXdzV2l0
aENvcnJlY3RTaGFkb3dPZmZzZXRzKTsKLSNlbmRpZgogICAgICAgICBJTklUKENvcHlDT05ORUNU
UHJveHlSZXNwb25zZSk7CiAjaWYgIVBMQVRGT1JNKElPUykKICAgICAgICAgSU5JVChEcmF3QmV6
ZWxlZFRleHRBcmVhKTsKLSAgICAgICAgSU5JVChEcmF3Rm9jdXNSaW5nKTsKLSAgICAgICAgSU5J
VChEcmF3Rm9jdXNSaW5nQXRUaW1lKTsKLSAgICAgICAgSU5JVChEcmF3Q2VsbEZvY3VzUmluZ1dp
dGhGcmFtZUF0VGltZSk7CiAgICAgICAgIElOSVQoRHJhd01lZGlhU2xpZGVyVHJhY2spOwogICAg
ICAgICBJTklUKERyYXdNZWRpYVVJUGFydCk7Ci0jZW5kaWYKLSAgICAgICAgSU5JVChDR0NvbnRl
eHRJc1BERkNvbnRleHQpOwotI2lmICFQTEFURk9STShJT1MpCiAgICAgICAgIElOSVQoR2V0V2hl
ZWxFdmVudERlbHRhcyk7CiAgICAgICAgIElOSVQoR2V0TlNFdmVudEtleUNoYXIpOwogICAgICAg
ICBJTklUKEhpdFRlc3RNZWRpYVVJUGFydCk7CkBAIC03MSwxNiArNjEsMTEgQEAgdm9pZCBJbml0
V2ViQ29yZVN5c3RlbUludGVyZmFjZSh2b2lkKQogI2VuZGlmCiAgICAgICAgIElOSVQoU2V0Q09O
TkVDVFByb3h5QXV0aG9yaXphdGlvbkZvclN0cmVhbSk7CiAgICAgICAgIElOSVQoU2V0Q09OTkVD
VFByb3h5Rm9yU3RyZWFtKTsKLSNpZiAhUExBVEZPUk0oSU9TKQotICAgICAgICBJTklUKFNldERy
YWdJbWFnZSk7Ci0jZW5kaWYKIAogI2lmICFQTEFURk9STShJT1MpCiAgICAgICAgIElOSVQoRXhl
Y3V0YWJsZVdhc0xpbmtlZE9uT3JCZWZvcmVTbm93TGVvcGFyZCk7CiAgICAgICAgIElOSVQoQ29w
eURlZmF1bHRTZWFyY2hQcm92aWRlckRpc3BsYXlOYW1lKTsKICAgICAgICAgSU5JVChDdXJzb3Ip
OwotICAgICAgICBJTklUKFdpbmRvd1NldFNjYWxlZEZyYW1lKTsKLSAgICAgICAgSU5JVChXaW5k
b3dTZXRBbHBoYSk7CiAgICAgICAgIElOSVQoU3BlZWNoU3ludGhlc2lzR2V0Vm9pY2VJZGVudGlm
aWVycyk7CiAgICAgICAgIElOSVQoU3BlZWNoU3ludGhlc2lzR2V0RGVmYXVsdFZvaWNlSWRlbnRp
ZmllckZvckxvY2FsZSk7CiAgICAgICAgIElOSVQoTlNFbGFzdGljRGVsdGFGb3JUaW1lRGVsdGEp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2FyYm9uL0hJV2ViVmlldy5t
bSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NhcmJvbi9ISVdlYlZpZXcubW0KaW5kZXggMzQ1
ODVjMjUyYzNiMThjYWNkNmUwN2FkNWU5NDQ4Nzc5ZDhiZTQ1Ny4uYTlmNmVhZWQ3MjAzODg0NzNl
ZTM2YWEwMWRiMWQ5YjM0MzFkNmUwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvQ2FyYm9uL0hJV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DYXJi
b24vSElXZWJWaWV3Lm1tCkBAIC04NSw2ICs4NSwyMSBAQCAtIChpbnQpdGFnCiAKIEBlbmQKIAor
QGludGVyZmFjZSBOU1dpbmRvd0dyYXBoaWNzQ29udGV4dCAoKQorLSAodm9pZClfd2ViX3NldEdy
YXBoaWNzUG9ydDooQ0dDb250ZXh0UmVmKWNvbnRleHQ7CitAZW5kCisKK0BpbXBsZW1lbnRhdGlv
biBOU1dpbmRvd0dyYXBoaWNzQ29udGV4dCAoKQorCistICh2b2lkKV93ZWJfc2V0R3JhcGhpY3NQ
b3J0OihDR0NvbnRleHRSZWYpY29udGV4dAoreworICAgIENHQ29udGV4dFJldGFpbihjb250ZXh0
KTsKKyAgICBDR0NvbnRleHRSZWxlYXNlKF9jZ3NDb250ZXh0KTsKKyAgICBfY2dzQ29udGV4dCA9
IGNvbnRleHQ7Cit9CisKK0BlbmQKKwogc3RydWN0IEhJV2ViVmlldwogewogICAgIEhJVmlld1Jl
ZgkJCQkJCQlmVmlld1JlZjsKQEAgLTI5MCw2ICszMDUsMjIgQEAgR2V0QmVoYXZpb3JzKCkKIAly
ZXR1cm4ga0NvbnRyb2xTdXBwb3J0c0RhdGFBY2Nlc3MgfCBrQ29udHJvbFN1cHBvcnRzR2V0UmVn
aW9uIHwga0NvbnRyb2xHZXRzRm9jdXNPbkNsaWNrOwogfQogCitzdGF0aWMgQ0dDb250ZXh0UmVm
IG92ZXJyaWRlQ0dDb250ZXh0KE5TV2luZG93ICp3aW5kb3csIENHQ29udGV4dFJlZiBjb250ZXh0
KQoreworICAgIE5TV2luZG93R3JhcGhpY3NDb250ZXh0ICpncmFwaGljc0NvbnRleHQgPSAoTlNX
aW5kb3dHcmFwaGljc0NvbnRleHQgKilbd2luZG93IGdyYXBoaWNzQ29udGV4dF07CisgICAgQ0dD
b250ZXh0UmVmIHNhdmVkQ29udGV4dCA9IChDR0NvbnRleHRSZWYpW2dyYXBoaWNzQ29udGV4dCBn
cmFwaGljc1BvcnRdOworICAgIENHQ29udGV4dFJldGFpbihzYXZlZENvbnRleHQpOworICAgIFtn
cmFwaGljc0NvbnRleHQgX3dlYl9zZXRHcmFwaGljc1BvcnQ6Y29udGV4dF07CisgICAgcmV0dXJu
IHNhdmVkQ29udGV4dDsKK30KKworc3RhdGljIHZvaWQgcmVzdG9yZUNHQ29udGV4dChOU1dpbmRv
dyAqd2luZG93LCBDR0NvbnRleHRSZWYgc2F2ZWRDb250ZXh0KQoreworICAgIE5TV2luZG93R3Jh
cGhpY3NDb250ZXh0ICpncmFwaGljc0NvbnRleHQgPSAoTlNXaW5kb3dHcmFwaGljc0NvbnRleHQg
Kilbd2luZG93IGdyYXBoaWNzQ29udGV4dF07CisgICAgW2dyYXBoaWNzQ29udGV4dCBfd2ViX3Nl
dEdyYXBoaWNzUG9ydDpzYXZlZENvbnRleHRdOworICAgIENHQ29udGV4dFJlbGVhc2Uoc2F2ZWRD
b250ZXh0KTsKK30KKwogLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAvLyBEcmF3CiAvLy0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTMyMSw3ICszNTIsNyBAQCBEcmF3KCBISVdlYlZp
ZXcqIGluVmlldywgUmduSGFuZGxlIGxpbWl0UmduLCBDR0NvbnRleHRSZWYgaW5Db250ZXh0ICkK
IAogCUhJVmlld0dldEJvdW5kcyggaW5WaWV3LT5mVmlld1JlZiwgJmJvdW5kcyApOwogCi0gICAg
Q0dDb250ZXh0UmVmIHNhdmVkQ29udGV4dCA9IFdLTlNXaW5kb3dPdmVycmlkZUNHQ29udGV4dChp
blZpZXctPmZLaXRXaW5kb3csIGluQ29udGV4dCk7CisgICAgQ0dDb250ZXh0UmVmIHNhdmVkQ29u
dGV4dCA9IG92ZXJyaWRlQ0dDb250ZXh0KGluVmlldy0+ZktpdFdpbmRvdywgaW5Db250ZXh0KTsK
ICAgICBbTlNHcmFwaGljc0NvbnRleHQgc2V0Q3VycmVudENvbnRleHQ6W2luVmlldy0+ZktpdFdp
bmRvdyBncmFwaGljc0NvbnRleHRdXTsKIAogCUdldFJlZ2lvbkJvdW5kcyggbGltaXRSZ24sICZk
cmF3UmVjdCApOwpAQCAtMzUxLDcgKzM4Miw3IEBAIERyYXcoIEhJV2ViVmlldyogaW5WaWV3LCBS
Z25IYW5kbGUgbGltaXRSZ24sIENHQ29udGV4dFJlZiBpbkNvbnRleHQgKQogICAgIGVsc2UKICAg
ICAgICAgW2luVmlldy0+ZldlYlZpZXcgZGlzcGxheVJlY3Q6KihOU1JlY3QqKSZoaVJlY3RdOwog
Ci0gICAgV0tOU1dpbmRvd1Jlc3RvcmVDR0NvbnRleHQoaW5WaWV3LT5mS2l0V2luZG93LCBzYXZl
ZENvbnRleHQpOworICAgIHJlc3RvcmVDR0NvbnRleHQoaW5WaWV3LT5mS2l0V2luZG93LCBzYXZl
ZENvbnRleHQpOwogCiAgICAgaWYgKCAhaW5WaWV3LT5mSXNDb21wb3NpdGVkICkKICAgICB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9XZWJIb3N0
ZWROZXRzY2FwZVBsdWdpblZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5z
L0hvc3RlZC9XZWJIb3N0ZWROZXRzY2FwZVBsdWdpblZpZXcubW0KaW5kZXggOWUyMDQ0ZTI2ZTEz
OTAyMWViOGNhNjMzNjI1NWYyYzgzM2MxYjhiMi4uNjk1YTVjZjUyNzM3M2QzMDlhODNiNjRkNmYx
ZDAxMDBlZDNhNDA4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lu
cy9Ib3N0ZWQvV2ViSG9zdGVkTmV0c2NhcGVQbHVnaW5WaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL1dlYkhvc3RlZE5ldHNjYXBlUGx1Z2luVmlldy5t
bQpAQCAtNzYsNyArNzYsNyBAQCArICh2b2lkKWluaXRpYWxpemUKICAgICBXVEY6OmluaXRpYWxp
emVNYWluVGhyZWFkVG9Qcm9jZXNzTWFpblRocmVhZCgpOwogICAgIFJ1bkxvb3A6OmluaXRpYWxp
emVNYWluUnVuTG9vcCgpOwogI2VuZGlmCi0gICAgV0tTZW5kVXNlckNoYW5nZU5vdGlmaWNhdGlv
bnMoKTsKKyAgICBzZW5kVXNlckNoYW5nZU5vdGlmaWNhdGlvbnMoKTsKIH0KIAogLSAoaWQpaW5p
dFdpdGhGcmFtZTooTlNSZWN0KWZyYW1lCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9QbHVnaW5zL1dlYkJhc2VOZXRzY2FwZVBsdWdpblZpZXcuaCBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1BsdWdpbnMvV2ViQmFzZU5ldHNjYXBlUGx1Z2luVmlldy5oCmluZGV4IGMyMjIz
YWI2ZDI2NzUxZjM4YzM4OTU4MWJkMzQ5ZGU5ODE0YzE1YjEuLmNkNDMwZDM2Njk3MWVjOWZlMmVh
MGQ0NDA1OTNiNTgwYzljYTJlMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1BsdWdpbnMvV2ViQmFzZU5ldHNjYXBlUGx1Z2luVmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1BsdWdpbnMvV2ViQmFzZU5ldHNjYXBlUGx1Z2luVmlldy5oCkBAIC0xMzQsNiAr
MTM0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogbmFtZXNwYWNlIFdlYktpdCB7CiBib29sIGdl
dEF1dGhlbnRpY2F0aW9uSW5mbyhjb25zdCBjaGFyKiBwcm90b2NvbFN0ciwgY29uc3QgY2hhciog
aG9zdFN0ciwgaW50MzJfdCBwb3J0LCBjb25zdCBjaGFyKiBzY2hlbWVTdHIsIGNvbnN0IGNoYXIq
IHJlYWxtU3RyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgV1RGOjpDU3RyaW5nJiB1c2Vy
bmFtZSwgV1RGOjpDU3RyaW5nJiBwYXNzd29yZCk7Cit2b2lkIHNlbmRVc2VyQ2hhbmdlTm90aWZp
Y2F0aW9ucygpOwogfSAKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9QbHVnaW5zL1dlYkJhc2VOZXRzY2FwZVBsdWdpblZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9QbHVnaW5zL1dlYkJhc2VOZXRzY2FwZVBsdWdpblZpZXcubW0KaW5kZXggNjRk
ZTkwMTBlYmRiMGIwNjlkNmY4NjNhM2ZlZjJmZmQ3YjVkNDMzOC4uYmUxYzMwYjNmMzA5ZGE2ODU1
ZjNjZDFkMjdhYjQ3MDg5YWVkMmMzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvUGx1Z2lucy9XZWJCYXNlTmV0c2NhcGVQbHVnaW5WaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViQmFzZU5ldHNjYXBlUGx1Z2luVmlldy5tbQpAQCAtNTUs
NiArNTUsNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbi5oPgogI2ltcG9ydCA8
V2ViQ29yZS9XZWJDb3JlT2JqQ0V4dHJhcy5oPgogI2ltcG9ydCA8V2ViS2l0TGVnYWN5L0RPTVBy
aXZhdGUuaD4KKyNpbXBvcnQgPHBhbC9zcGkvY2cvQ29yZUdyYXBoaWNzU1BJLmg+CiAjaW1wb3J0
IDxydW50aW1lL0luaXRpYWxpemVUaHJlYWRpbmcuaD4KICNpbXBvcnQgPHd0Zi9Bc3NlcnRpb25z
Lmg+CiAjaW1wb3J0IDx3dGYvTWFpblRocmVhZC5oPgpAQCAtNzMsNyArNzQsNyBAQCArICh2b2lk
KWluaXRpYWxpemUKICAgICBKU0M6OmluaXRpYWxpemVUaHJlYWRpbmcoKTsKICAgICBXVEY6Omlu
aXRpYWxpemVNYWluVGhyZWFkVG9Qcm9jZXNzTWFpblRocmVhZCgpOwogICAgIFJ1bkxvb3A6Omlu
aXRpYWxpemVNYWluUnVuTG9vcCgpOwotICAgIFdLU2VuZFVzZXJDaGFuZ2VOb3RpZmljYXRpb25z
KCk7CisgICAgV2ViS2l0OjpzZW5kVXNlckNoYW5nZU5vdGlmaWNhdGlvbnMoKTsKIH0KIAogLSAo
aWQpaW5pdFdpdGhGcmFtZTooTlNSZWN0KWZyYW1lCkBAIC05MDAsNiArOTAxLDIzIEBAIGJvb2wg
Z2V0QXV0aGVudGljYXRpb25JbmZvKGNvbnN0IGNoYXIqIHByb3RvY29sU3RyLCBjb25zdCBjaGFy
KiBob3N0U3RyLCBpbnQzMl90CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK3ZvaWQgc2VuZFVzZXJD
aGFuZ2VOb3RpZmljYXRpb25zKCkKK3sKKyAgICBhdXRvIGNvbnNvbGVDb25uZWN0aW9uQ2hhbmdl
Tm90aWZ5UHJvYyA9IFtdKENHU05vdGlmaWNhdGlvblR5cGUgdHlwZSwgQ0dTTm90aWZpY2F0aW9u
RGF0YSwgQ0dTQnl0ZUNvdW50LCBDR1NOb3RpZmljYXRpb25BcmcpIHsKKyAgICAgICAgTlNTdHJp
bmcgKm5vdGlmaWNhdGlvbk5hbWUgPSBuaWw7CisgICAgICAgIGlmICh0eXBlID09IGtDR1Nlc3Np
b25Db25zb2xlQ29ubmVjdCkKKyAgICAgICAgICAgIG5vdGlmaWNhdGlvbk5hbWUgPSBMb2dpbldp
bmRvd0RpZFN3aXRjaFRvVXNlck5vdGlmaWNhdGlvbjsKKyAgICAgICAgZWxzZSBpZiAodHlwZSA9
PSBrQ0dTZXNzaW9uQ29uc29sZURpc2Nvbm5lY3QpCisgICAgICAgICAgICBub3RpZmljYXRpb25O
YW1lID0gTG9naW5XaW5kb3dEaWRTd2l0Y2hGcm9tVXNlck5vdGlmaWNhdGlvbjsKKyAgICAgICAg
ZWxzZQorICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIFtbTlNOb3Rp
ZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0gcG9zdE5vdGlmaWNhdGlvbk5hbWU6bm90aWZp
Y2F0aW9uTmFtZSBvYmplY3Q6bmlsXTsKKyAgICB9OworCisgICAgQ0dTUmVnaXN0ZXJOb3RpZnlQ
cm9jKGNvbnNvbGVDb25uZWN0aW9uQ2hhbmdlTm90aWZ5UHJvYywga0NHU2Vzc2lvbkNvbnNvbGVD
b25uZWN0LCBOVUxMKTsKKyAgICBDR1NSZWdpc3Rlck5vdGlmeVByb2MoY29uc29sZUNvbm5lY3Rp
b25DaGFuZ2VOb3RpZnlQcm9jLCBrQ0dTZXNzaW9uQ29uc29sZURpc2Nvbm5lY3QsIE5VTEwpOwor
fQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vICBFTkFCTEUoTkVUU0NBUEVf
UExVR0lOX0FQSSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMv
V2ViTmV0c2NhcGVQbHVnaW5WaWV3Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lu
cy9XZWJOZXRzY2FwZVBsdWdpblZpZXcubW0KaW5kZXggYzY4MGZmN2VlMzFjOTNiOGZiNDkyMjk3
ZTRlN2FkOTE0MWE0ZGRlNC4uMmJiZDNkZWJlNjZlMThkOGYzMTgwYzk0Y2ExMzM3ZmNmN2Q4ODE3
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJOZXRzY2Fw
ZVBsdWdpblZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJO
ZXRzY2FwZVBsdWdpblZpZXcubW0KQEAgLTE5Myw3ICsxOTMsNyBAQCArICh2b2lkKWluaXRpYWxp
emUKICAgICBKU0M6OmluaXRpYWxpemVUaHJlYWRpbmcoKTsKICAgICBXVEY6OmluaXRpYWxpemVN
YWluVGhyZWFkVG9Qcm9jZXNzTWFpblRocmVhZCgpOwogICAgIFJ1bkxvb3A6OmluaXRpYWxpemVN
YWluUnVuTG9vcCgpOwotICAgIFdLU2VuZFVzZXJDaGFuZ2VOb3RpZmljYXRpb25zKCk7CisgICAg
c2VuZFVzZXJDaGFuZ2VOb3RpZmljYXRpb25zKCk7CiB9CiAKIC8vIE1BUks6IEVWRU5UUwpAQCAt
Mzc5LDEwICszNzksMTAgQEAgLSAoUG9ydFN0YXRlKXNhdmVBbmRTZXROZXdQb3J0U3RhdGVGb3JV
cGRhdGU6KEJPT0wpZm9yVXBkYXRlCiAgICAgICAgICAgICBxZFBvcnRTdGF0ZS0+Y2xpcFJlZ2lv
biA9IGNsaXBSZWdpb247CiAKICAgICAgICAgICAgIENHQ29udGV4dFJlZiBjdXJyZW50Q29udGV4
dCA9IChDR0NvbnRleHRSZWYpW1tOU0dyYXBoaWNzQ29udGV4dCBjdXJyZW50Q29udGV4dF0gZ3Jh
cGhpY3NQb3J0XTsKLSAgICAgICAgICAgIGlmIChjdXJyZW50Q29udGV4dCAmJiBXS0NHQ29udGV4
dElzQml0bWFwQ29udGV4dChjdXJyZW50Q29udGV4dCkpIHsKLSAgICAgICAgICAgICAgICAvLyBX
ZSB1c2UgV0tDR0NvbnRleHRJc0JpdG1hcENvbnRleHQgaGVyZSwgYmVjYXVzZSBpZiB3ZSBqdXN0
IGNhbGxlZCBDR0JpdG1hcENvbnRleHRHZXREYXRhCi0gICAgICAgICAgICAgICAgLy8gb24gYW55
IGNvbnRleHQsIHdlJ2QgbG9nIHRvIHRoZSBjb25zb2xlIGV2ZXJ5IHRpbWUuIEJ1dCBldmVuIGlm
IFdLQ0dDb250ZXh0SXNCaXRtYXBDb250ZXh0Ci0gICAgICAgICAgICAgICAgLy8gcmV0dXJucyB0
cnVlLCBpdCBzdGlsbCBtaWdodCBub3QgYmUgYSBjb250ZXh0IHdlIG5lZWQgdG8gY3JlYXRlIGEg
R1dvcmxkIGZvcjsgZm9yIGV4YW1wbGUKKyAgICAgICAgICAgIGlmIChjdXJyZW50Q29udGV4dCAm
JiBDR0NvbnRleHRHZXRUeXBlKGN1cnJlbnRDb250ZXh0KSA9PSBrQ0dDb250ZXh0VHlwZUJpdG1h
cCkgeworICAgICAgICAgICAgICAgIC8vIFdlIGNoZWNrIGZvciBrQ0dDb250ZXh0VHlwZUJpdG1h
cCBoZXJlLCBiZWNhdXNlIGlmIHdlIGp1c3QgY2FsbGVkIENHQml0bWFwQ29udGV4dEdldERhdGEK
KyAgICAgICAgICAgICAgICAvLyBvbiBhbnkgY29udGV4dCwgd2UnZCBsb2cgdG8gdGhlIGNvbnNv
bGUgZXZlcnkgdGltZS4gQnV0IGV2ZW4gaWYgY3VycmVudENvbnRleHQgaXMgYQorICAgICAgICAg
ICAgICAgIC8vIGtDR0NvbnRleHRUeXBlQml0bWFwLCBpdCBzdGlsbCBtaWdodCBub3QgYmUgYSBj
b250ZXh0IHdlIG5lZWQgdG8gY3JlYXRlIGEgR1dvcmxkIGZvcjsgZm9yIGV4YW1wbGUKICAgICAg
ICAgICAgICAgICAvLyB0cmFuc3BhcmVuY3kgbGF5ZXJzIHdpbGwgcmV0dXJuIHRydWUsIGJ1dCBy
ZXR1cm4gMCBmb3IgQ0dCaXRtYXBDb250ZXh0R2V0RGF0YS4KICAgICAgICAgICAgICAgICB2b2lk
KiBvZmZzY3JlZW5EYXRhID0gQ0dCaXRtYXBDb250ZXh0R2V0RGF0YShjdXJyZW50Q29udGV4dCk7
CiAgICAgICAgICAgICAgICAgaWYgKG9mZnNjcmVlbkRhdGEpIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlN5c3RlbUludGVyZmFjZS5tbSBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlN5c3RlbUludGVyZmFj
ZS5tbQppbmRleCBkNDU1MTZmNWVlZTFjMDgyYzk4MjhkOWU3NDc0ZWM5Njg5YzQ3YjU4Li45YmUw
MDAyZmQ1M2Y0OTMzMzRlYjJjOTk5MzExZmE4Mzk0MmY3ZTNmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJTeXN0ZW1JbnRlcmZhY2UubW0KKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViU3lzdGVtSW50ZXJm
YWNlLm1tCkBAIC00MywxNiArNDMsOSBAQCB2b2lkIEluaXRXZWJDb3JlU3lzdGVtSW50ZXJmYWNl
KHZvaWQpCiAgICAgICAgIHJldHVybjsKIAogICAgIElOSVQoQ0FMYXllckVudW1lcmF0ZVJlY3Rz
QmVpbmdEcmF3bldpdGhCbG9jayk7Ci0gICAgSU5JVChDR1BhdHRlcm5DcmVhdGVXaXRoSW1hZ2VB
bmRUcmFuc2Zvcm0pOwotI2lmICFQTEFURk9STShJT1MpCi0gICAgSU5JVChDR0NvbnRleHREcmF3
c1dpdGhDb3JyZWN0U2hhZG93T2Zmc2V0cyk7Ci0jZW5kaWYKICAgICBJTklUKENvcHlDT05ORUNU
UHJveHlSZXNwb25zZSk7CiAjaWYgIVBMQVRGT1JNKElPUykKICAgICBJTklUKERyYXdCZXplbGVk
VGV4dEFyZWEpOwotICAgIElOSVQoRHJhd0ZvY3VzUmluZyk7Ci0gICAgSU5JVChEcmF3Rm9jdXNS
aW5nQXRUaW1lKTsKLSAgICBJTklUKERyYXdDZWxsRm9jdXNSaW5nV2l0aEZyYW1lQXRUaW1lKTsK
ICAgICBJTklUKERyYXdNZWRpYVVJUGFydCk7CiAgICAgSU5JVChEcmF3TWVkaWFTbGlkZXJUcmFj
ayk7CiAgICAgSU5JVChHZXRXaGVlbEV2ZW50RGVsdGFzKTsKQEAgLTYxLDE1ICs1NCw5IEBAIHZv
aWQgSW5pdFdlYkNvcmVTeXN0ZW1JbnRlcmZhY2Uodm9pZCkKICAgICBJTklUKE1lYXN1cmVNZWRp
YVVJUGFydCk7CiAgICAgSU5JVChDcmVhdGVNZWRpYVVJQmFja2dyb3VuZFZpZXcpOwogICAgIElO
SVQoQ3JlYXRlTWVkaWFVSUNvbnRyb2wpOwotICAgIElOSVQoV2luZG93U2V0QWxwaGEpOwotICAg
IElOSVQoV2luZG93U2V0U2NhbGVkRnJhbWUpOwogI2VuZGlmCiAgICAgSU5JVChTZXRDT05ORUNU
UHJveHlBdXRob3JpemF0aW9uRm9yU3RyZWFtKTsKICAgICBJTklUKFNldENPTk5FQ1RQcm94eUZv
clN0cmVhbSk7Ci0jaWYgIVBMQVRGT1JNKElPUykKLSAgICBJTklUKFNldERyYWdJbWFnZSk7Ci0j
ZW5kaWYKLSAgICBJTklUKENHQ29udGV4dElzUERGQ29udGV4dCk7CiAjaWYgRU5BQkxFKFZJREVP
KSAmJiAhUExBVEZPUk0oSU9TKQogICAgIElOSVQoUVRJbmNsdWRlT25seU1vZGVybk1lZGlhRmls
ZVR5cGVzKTsKICAgICBJTklUKFFUTW92aWVEaXNhYmxlQ29tcG9uZW50KTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0gYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCmluZGV4IGYwZjhlNjI4NTgwYjI5ZmUw
NDdlZGRmNmViNDc1NzhjNmQwNWRkMmQuLmU3MDkzYzk2YWFjNDc0ZTNhZWU5ZTcyZDIzYjI0ZWIx
YzU4OWEyZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2Vi
RnJhbWUubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZS5t
bQpAQCAtNTk4LDcgKzU5OCw3IEBAIC0gKFBhaW50QmVoYXZpb3IpX3BhaW50QmVoYXZpb3JGb3JE
ZXN0aW5hdGlvbkNvbnRleHQ6KENHQ29udGV4dFJlZiljb250ZXh0CiAgICAgICAgIHJldHVybiBQ
YWludEJlaGF2aW9yRmxhdHRlbkNvbXBvc2l0aW5nTGF5ZXJzIHwgUGFpbnRCZWhhdmlvclNuYXBz
aG90dGluZzsKICNlbmRpZgogCi0gICAgaWYgKCFXS0NHQ29udGV4dElzQml0bWFwQ29udGV4dChj
b250ZXh0KSkKKyAgICBpZiAoQ0dDb250ZXh0R2V0VHlwZShjb250ZXh0KSAhPSBrQ0dDb250ZXh0
VHlwZUJpdG1hcCkKICAgICAgICAgcmV0dXJuIFBhaW50QmVoYXZpb3JOb3JtYWw7CiAKICAgICAv
LyBJZiB3ZSdyZSBkcmF3aW5nIGludG8gYSBiaXRtYXAsIHdlIG1pZ2h0IGJlIHNuYXBzaG90dGlu
Zywgb3IgZHJhd2luZyBpbnRvIGEgbGF5ZXItYmFja2VkIHZpZXcuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZ1bGxTY3JlZW5Db250cm9sbGVyLm1tIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGdWxsU2NyZWVuQ29udHJvbGxlci5t
bQppbmRleCBmZDhmYzU2OTk3YWZjYjZhZDdmOTBjNWZjOTk4NGJhMzE3NjZlOTA3Li40MDUzZmZj
ODQ2NGEzNWJiODZhZmI2NjZlM2NlZTdlZGNhY2U1ZWZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZ1bGxTY3JlZW5Db250cm9sbGVyLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnVsbFNjcmVlbkNvbnRyb2xsZXIubW0K
QEAgLTI0OSw2ICsyNDksMTYgQEAgLSAodm9pZCllbnRlckZ1bGxTY3JlZW46KE5TU2NyZWVuICop
c2NyZWVuCiAgICAgX2lzRW50ZXJpbmdGdWxsU2NyZWVuID0gdHJ1ZTsKIH0KIAorc3RhdGljIHZv
aWQgc2V0Q2xpcFJlY3RGb3JXaW5kb3coTlNXaW5kb3cgKndpbmRvdywgTlNSZWN0IGNsaXBSZWN0
KQoreworICAgIENHU1dpbmRvd0lEIHdpbmRvd051bWJlciA9IChDR1NXaW5kb3dJRClbd2luZG93
IHdpbmRvd051bWJlcl07CisgICAgQ0dTUmVnaW9uT2JqIHNoYXBlOworICAgIENHUmVjdCBjZ0Ns
aXBSZWN0ID0gTlNSZWN0VG9DR1JlY3QoY2xpcFJlY3QpOworICAgIENHU05ld1JlZ2lvbldpdGhS
ZWN0KCZjZ0NsaXBSZWN0LCAmc2hhcGUpOworICAgIENHU1NldFdpbmRvd0NsaXBTaGFwZShDR1NN
YWluQ29ubmVjdGlvbklEKCksIHdpbmRvd051bWJlciwgc2hhcGUpOworICAgIENHU1JlbGVhc2VS
ZWdpb24oc2hhcGUpOworfQorCiAtICh2b2lkKWZpbmlzaGVkRW50ZXJGdWxsU2NyZWVuQW5pbWF0
aW9uOihib29sKWNvbXBsZXRlZAogewogICAgIGlmICghX2lzRW50ZXJpbmdGdWxsU2NyZWVuKQpA
QCAtMjYzLDcgKzI3Myw3IEBAIC0gKHZvaWQpZmluaXNoZWRFbnRlckZ1bGxTY3JlZW5BbmltYXRp
b246KGJvb2wpY29tcGxldGVkCiAgICAgICAgIAogICAgICAgICBOU1JlY3Qgd2luZG93Qm91bmRz
ID0gW1tzZWxmIHdpbmRvd10gZnJhbWVdOwogICAgICAgICB3aW5kb3dCb3VuZHMub3JpZ2luID0g
TlNaZXJvUG9pbnQ7Ci0gICAgICAgIFdLV2luZG93U2V0Q2xpcFJlY3QoW3NlbGYgd2luZG93XSwg
d2luZG93Qm91bmRzKTsKKyAgICAgICAgc2V0Q2xpcFJlY3RGb3JXaW5kb3coW3NlbGYgd2luZG93
XSwgd2luZG93Qm91bmRzKTsKICAgICAgICAgCiAgICAgICAgIE5TV2luZG93ICp3ZWJXaW5kb3cg
PSBbX3dlYlZpZXdQbGFjZWhvbGRlci5nZXQoKSB3aW5kb3ddOwogICAgICAgICAvLyBJbiBMaW9u
LCBOU1dpbmRvdyB3aWxsIGFuaW1hdGUgaW50byBhbmQgb3V0IG9mIG9yZGVyT3V0IG9wZXJhdGlv
bnMuIFN1cHByZXNzIHRoYXQKQEAgLTM1Myw3ICszNjMsNyBAQCAtICh2b2lkKWZpbmlzaGVkRXhp
dEZ1bGxTY3JlZW5BbmltYXRpb246KGJvb2wpY29tcGxldGVkCiAgICAgCiAgICAgTlNSZWN0IHdp
bmRvd0JvdW5kcyA9IFtbc2VsZiB3aW5kb3ddIGZyYW1lXTsKICAgICB3aW5kb3dCb3VuZHMub3Jp
Z2luID0gTlNaZXJvUG9pbnQ7Ci0gICAgV0tXaW5kb3dTZXRDbGlwUmVjdChbc2VsZiB3aW5kb3dd
LCB3aW5kb3dCb3VuZHMpOworICAgIHNldENsaXBSZWN0Rm9yV2luZG93KFtzZWxmIHdpbmRvd10s
IHdpbmRvd0JvdW5kcyk7CiAgICAgCiAgICAgW1tzZWxmIHdpbmRvd10gb3JkZXJPdXQ6c2VsZl07
CiAgICAgW1tzZWxmIHdpbmRvd10gc2V0RnJhbWU6TlNaZXJvUmVjdCBkaXNwbGF5OllFU107CkBA
IC00ODQsMTMgKzQ5NCwxMyBAQCAtICh2b2lkKV9zdGFydEVudGVyRnVsbFNjcmVlbkFuaW1hdGlv
bldpdGhEdXJhdGlvbjooTlNUaW1lSW50ZXJ2YWwpZHVyYXRpb24KICAgICBbX3NjYWxlQW5pbWF0
aW9uLmdldCgpIHNldEN1cnJlbnRQcm9ncmVzczowXTsKICAgICBbX3NjYWxlQW5pbWF0aW9uLmdl
dCgpIHN0YXJ0QW5pbWF0aW9uXTsKICAgICAKLSAgICAvLyBXS1dpbmRvd1NldENsaXBSZWN0IHRh
a2VzIHdpbmRvdyBjb29yZGluYXRlcywgc28gY29udmVydCBmcm9tIHNjcmVlbiBjb29yZGluYXRl
cyBoZXJlOgorICAgIC8vIHNldENsaXBSZWN0Rm9yV2luZG93IHRha2VzIHdpbmRvdyBjb29yZGlu
YXRlcywgc28gY29udmVydCBmcm9tIHNjcmVlbiBjb29yZGluYXRlcyBoZXJlOgogICAgIE5TUmVj
dCBmaW5hbEJvdW5kcyA9IF9maW5hbEZyYW1lOwogI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHB1
c2gKICNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBpZ25vcmVkICItV2RlcHJlY2F0ZWQtZGVjbGFy
YXRpb25zIgogICAgIGZpbmFsQm91bmRzLm9yaWdpbiA9IFtbc2VsZiB3aW5kb3ddIGNvbnZlcnRT
Y3JlZW5Ub0Jhc2U6ZmluYWxCb3VuZHMub3JpZ2luXTsKICNwcmFnbWEgY2xhbmcgZGlhZ25vc3Rp
YyBwb3AKLSAgICBXS1dpbmRvd1NldENsaXBSZWN0KFtzZWxmIHdpbmRvd10sIGZpbmFsQm91bmRz
KTsKKyAgICBzZXRDbGlwUmVjdEZvcldpbmRvdyhbc2VsZiB3aW5kb3ddLCBmaW5hbEJvdW5kcyk7
CiAgICAgCiAgICAgW1tzZWxmIHdpbmRvd10gbWFrZUtleUFuZE9yZGVyRnJvbnQ6c2VsZl07CiAg
ICAgCkBAIC01NTYsMTMgKzU2NiwxMyBAQCAtICh2b2lkKV9zdGFydEV4aXRGdWxsU2NyZWVuQW5p
bWF0aW9uV2l0aER1cmF0aW9uOihOU1RpbWVJbnRlcnZhbClkdXJhdGlvbgogICAgIAogICAgIFtf
YmFja2dyb3VuZFdpbmRvdy5nZXQoKSBvcmRlcldpbmRvdzpOU1dpbmRvd0JlbG93IHJlbGF0aXZl
VG86W1tzZWxmIHdpbmRvd10gd2luZG93TnVtYmVyXV07CiAgICAgCi0gICAgLy8gV0tXaW5kb3dT
ZXRDbGlwUmVjdCB0YWtlcyB3aW5kb3cgY29vcmRpbmF0ZXMsIHNvIGNvbnZlcnQgZnJvbSBzY3Jl
ZW4gY29vcmRpbmF0ZXMgaGVyZToKKyAgICAvLyBzZXRDbGlwUmVjdEZvcldpbmRvdyB0YWtlcyB3
aW5kb3cgY29vcmRpbmF0ZXMsIHNvIGNvbnZlcnQgZnJvbSBzY3JlZW4gY29vcmRpbmF0ZXMgaGVy
ZToKICAgICBOU1JlY3QgZmluYWxCb3VuZHMgPSBfZmluYWxGcmFtZTsKICNwcmFnbWEgY2xhbmcg
ZGlhZ25vc3RpYyBwdXNoCiAjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgaWdub3JlZCAiLVdkZXBy
ZWNhdGVkLWRlY2xhcmF0aW9ucyIKICAgICBmaW5hbEJvdW5kcy5vcmlnaW4gPSBbW3NlbGYgd2lu
ZG93XSBjb252ZXJ0U2NyZWVuVG9CYXNlOmZpbmFsQm91bmRzLm9yaWdpbl07CiAjcHJhZ21hIGNs
YW5nIGRpYWdub3N0aWMgcG9wCi0gICAgV0tXaW5kb3dTZXRDbGlwUmVjdChbc2VsZiB3aW5kb3dd
LCBmaW5hbEJvdW5kcyk7CisgICAgc2V0Q2xpcFJlY3RGb3JXaW5kb3coW3NlbGYgd2luZG93XSwg
ZmluYWxCb3VuZHMpOwogICAgIAogICAgIFtbc2VsZiB3aW5kb3ddIHNldEF1dG9kaXNwbGF5OllF
U107CiAgICAgW1tzZWxmIHdpbmRvd10gZGlzcGxheUlmTmVlZGVkXTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>319580</attachid>
            <date>2017-08-31 23:35:15 -0700</date>
            <delta_ts>2017-08-31 23:52:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-176200-20170831233514.patch</filename>
            <type>text/plain</type>
            <size>63722</size>
            <attacher name="Andy Estes">aestes</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIxNDczCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmNmNjE0ZmZmMzUzODM2
Mjg0MTIwMzJkMzk0M2FkZDllOGNjOWJmNS4uZWMzNTRhZmQ2YTU0ZjBmMzM4MTY4ZTRkYTEzMjUx
MDA1NjZkMjZiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDQ2IEBACiAyMDE3LTA4LTMxICBBbmR5
IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KIAorICAgICAgICBbQ29jb2FdIFVwc3RyZWFtIENv
cmVHcmFwaGljcy1yZWxhdGVkIFdlYktpdFN5c3RlbUludGVyZmFjZSBmdW5jdGlvbnMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NjIwMAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NDb250ZXh0Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2VTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OnN1YnNhbXBsaW5n
TGV2ZWxGb3JTY2FsZUZhY3Rvcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3Jh
cGhpY3NDb250ZXh0Q0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0Ojpj
bGlwT3V0KToKKyAgICAgICAgKFdlYkNvcmU6OmFwcGx5U2hhZG93T2Zmc2V0V29ya2Fyb3VuZElm
TmVlZGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9QYXR0ZXJuQ0cuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UGF0dGVybjo6Y3JlYXRlUGxhdGZvcm1QYXR0ZXJuIGNvbnN0KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRDb2NvYS5t
bToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6Zm9jdXNSaW5nQ29sb3IpOgor
ICAgICAgICAoV2ViQ29yZTo6ZHJhd0ZvY3VzUmluZ0F0VGltZSk6CisgICAgICAgIChXZWJDb3Jl
OjpkcmF3Rm9jdXNSaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OmRyYXdGb2N1c1JpbmdUb0NvbnRl
eHQpOgorICAgICAgICAoV2ViQ29yZTo6ZHJhd0ZvY3VzUmluZ1RvQ29udGV4dEF0VGltZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vaW9zL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2VJT1MubW06CisgICAg
ICAgICogcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpm
bGlwSW1hZ2VTcGVjKToKKyAgICAgICAgKFdlYkNvcmU6OnNldERyYWdJbWFnZUltcGwpOgorICAg
ICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6c2V0RHJhZ0ltYWdlKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9tYWMvUGxhdGZvcm1FdmVudEZhY3RvcnlNYWMubW06CisgICAgICAgICogcGxhdGZvcm0v
bWFjL1Njcm9sbGJhclRoZW1lTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6bGluZW5CYWNrZ3Jv
dW5kQ29sb3IpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9UaGVtZU1hYy5tbToKKyAgICAgICAg
KFdlYkNvcmU6OmRyYXdDZWxsRm9jdXNSaW5nV2l0aEZyYW1lQXRUaW1lKToKKyAgICAgICAgKFdl
YkNvcmU6OmRyYXdDZWxsRm9jdXNSaW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvV2ViQ29y
ZVN5c3RlbUludGVyZmFjZS5oOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9XZWJDb3JlU3lzdGVt
SW50ZXJmYWNlLm1tOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9XZWJXaW5kb3dBbmltYXRpb24u
bW06CisgICAgICAgIChmbGlwUmVjdCk6CisgICAgICAgIChtYWluV2luZG93U2VydmVyQ29ubmVj
dGlvbklEKToKKyAgICAgICAgKHNldFNjYWxlZEZyYW1lRm9yV2luZG93KToKKyAgICAgICAgKC1b
V2ViV2luZG93U2NhbGVBbmltYXRpb24gc2V0Q3VycmVudFByb2dyZXNzOl0pOgorICAgICAgICAo
LVtXZWJXaW5kb3dGYWRlQW5pbWF0aW9uIHNldEN1cnJlbnRQcm9ncmVzczpdKToKKworMjAxNy0w
OC0zMSAgQW5keSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+CisKICAgICAgICAgW01hY10gVXBz
dHJlYW0gQXBwS2l0LXJlbGF0ZWQgV2ViS2l0U3lzdGVtSW50ZXJmYWNlIGZ1bmN0aW9ucwogICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc2MTc1CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9Q
QUwvQ2hhbmdlTG9nCmluZGV4IGVlZWU4NGRjNjE5ZDkyZDRkYTJhMTIwYjIwODZkYzZjNjEwYTY4
YjIuLjdjN2I2NjRiMTJjNDJmZWY2NjdjNTFlMjBjOWIyMWE2MDE3NzQ4NWIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML0No
YW5nZUxvZwpAQCAtMSw1ICsxLDE3IEBACiAyMDE3LTA4LTMxICBBbmR5IEVzdGVzICA8YWVzdGVz
QGFwcGxlLmNvbT4KIAorICAgICAgICBbQ29jb2FdIFVwc3RyZWFtIENvcmVHcmFwaGljcy1yZWxh
dGVkIFdlYktpdFN5c3RlbUludGVyZmFjZSBmdW5jdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NjIwMAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogUEFMLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6CisgICAgICAgICogcGFsL3NwaS9jZy9Db3JlR3JhcGhpY3NTUEkuaDoKKyAgICAgICAgKiBw
YWwvc3BpL21hYy9ISVNlcnZpY2VzU1BJLmg6CisgICAgICAgICogcGFsL3NwaS9tYWMvTlNHcmFw
aGljc1NQSS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9tYWMvSElT
ZXJ2aWNlc1NQSS5oLgorCisyMDE3LTA4LTMxICBBbmR5IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNv
bT4KKwogICAgICAgICBbTWFjXSBVcHN0cmVhbSBBcHBLaXQtcmVsYXRlZCBXZWJLaXRTeXN0ZW1J
bnRlcmZhY2UgZnVuY3Rpb25zCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNzYxNzUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBiNjJiN2VlNTYxZmYwNDQ2ZmVlYmRiNDMw
NjU2NjcxMmNjZGZlZDI4Li40YTA0NDY5N2QyOTY1ZjU3YzFlYmM2OGJiN2NlNmFiMmU4YjYwMmVi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwpAQCAtMSw1ICsxLDIyIEBACiAyMDE3LTA4LTMxICBBbmR5IEVzdGVzICA8YWVz
dGVzQGFwcGxlLmNvbT4KIAorICAgICAgICBbQ29jb2FdIFVwc3RyZWFtIENvcmVHcmFwaGljcy1y
ZWxhdGVkIFdlYktpdFN5c3RlbUludGVyZmFjZSBmdW5jdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NjIwMAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogUGx1Z2luUHJvY2Vzcy9tYWMvUGx1Z2lu
UHJvY2Vzc01hYy5tbToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJvY2Vzczo6cGxhdGZvcm1J
bml0aWFsaXplUHJvY2Vzcyk6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9XaW5kb3dTZXJ2ZXJD
b25uZWN0aW9uLmg6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9XaW5kb3dTZXJ2ZXJDb25uZWN0
aW9uLm1tOgorICAgICAgICAoV2ViS2l0OjpyZWdpc3Rlck9jY2x1c2lvbk5vdGlmaWNhdGlvbkhh
bmRsZXIpOgorICAgICAgICAoV2ViS2l0OjpXaW5kb3dTZXJ2ZXJDb25uZWN0aW9uOjpXaW5kb3dT
ZXJ2ZXJDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2luZG93U2VydmVyQ29ubmVjdGlv
bjo6YXBwbGljYXRpb25XaW5kb3dNb2RpZmljYXRpb25zU3RhcnRlZCk6IERlbGV0ZWQuCisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViU3lzdGVtSW50ZXJmYWNlLm1t
OgorICAgICAgICAoSW5pdFdlYkNvcmVTeXN0ZW1JbnRlcmZhY2UpOgorCisyMDE3LTA4LTMxICBB
bmR5IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KKwogICAgICAgICBbTWFjXSBVcHN0cmVhbSBB
cHBLaXQtcmVsYXRlZCBXZWJLaXRTeXN0ZW1JbnRlcmZhY2UgZnVuY3Rpb25zCiAgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzYxNzUKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvQ2hhbmdlTG9nCmluZGV4IGM0Zjk5NTY3MjU0ZDBiNjIyYzlhOGY5ODc5MTdiNjcwMzM5
NzgwOTMuLjU4ZWU4MDU2MGQ0MGQzNjI5MWFlZDkxNTQwN2UyZjI3NTk2ZTVhN2UgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsNSArMSwzNiBAQAogMjAxNy0wOC0zMSAgQW5keSBF
c3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+CiAKKyAgICAgICAgW0NvY29hXSBVcHN0cmVhbSBDb3Jl
R3JhcGhpY3MtcmVsYXRlZCBXZWJLaXRTeXN0ZW1JbnRlcmZhY2UgZnVuY3Rpb25zCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzYyMDAKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIENhcmJvbi9ISVdlYlZp
ZXcubW06CisgICAgICAgICgtW05TV2luZG93R3JhcGhpY3NDb250ZXh0IF93ZWJfc2V0R3JhcGhp
Y3NQb3J0Ol0pOgorICAgICAgICAob3ZlcnJpZGVDR0NvbnRleHQpOgorICAgICAgICAocmVzdG9y
ZUNHQ29udGV4dCk6CisgICAgICAgIChEcmF3KToKKyAgICAgICAgKiBQbHVnaW5zL0hvc3RlZC9X
ZWJIb3N0ZWROZXRzY2FwZVBsdWdpblZpZXcubW06CisgICAgICAgICgrW1dlYkhvc3RlZE5ldHNj
YXBlUGx1Z2luVmlldyBpbml0aWFsaXplXSk6CisgICAgICAgICogUGx1Z2lucy9XZWJCYXNlTmV0
c2NhcGVQbHVnaW5WaWV3Lmg6CisgICAgICAgICogUGx1Z2lucy9XZWJCYXNlTmV0c2NhcGVQbHVn
aW5WaWV3Lm1tOgorICAgICAgICAoV2ViS2l0OjpzZW5kVXNlckNoYW5nZU5vdGlmaWNhdGlvbnMp
OgorICAgICAgICAqIFBsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5WaWV3Lm1tOgorICAgICAgICAo
K1tXZWJOZXRzY2FwZVBsdWdpblZpZXcgaW5pdGlhbGl6ZV0pOgorICAgICAgICAoLVtXZWJOZXRz
Y2FwZVBsdWdpblZpZXcgc2F2ZUFuZFNldE5ld1BvcnRTdGF0ZUZvclVwZGF0ZTpdKToKKyAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJTeXN0ZW1JbnRlcmZhY2UubW06CisgICAgICAgIChJbml0
V2ViQ29yZVN5c3RlbUludGVyZmFjZSk6CisgICAgICAgICogV2ViVmlldy9XZWJGcmFtZS5tbToK
KyAgICAgICAgKC1bV2ViRnJhbWUgX3BhaW50QmVoYXZpb3JGb3JEZXN0aW5hdGlvbkNvbnRleHQ6
XSk6CisgICAgICAgICogV2ViVmlldy9XZWJGdWxsU2NyZWVuQ29udHJvbGxlci5tbToKKyAgICAg
ICAgKHNldENsaXBSZWN0Rm9yV2luZG93KToKKyAgICAgICAgKC1bV2ViRnVsbFNjcmVlbkNvbnRy
b2xsZXIgZmluaXNoZWRFbnRlckZ1bGxTY3JlZW5BbmltYXRpb246XSk6CisgICAgICAgICgtW1dl
YkZ1bGxTY3JlZW5Db250cm9sbGVyIGZpbmlzaGVkRXhpdEZ1bGxTY3JlZW5BbmltYXRpb246XSk6
CisgICAgICAgICgtW1dlYkZ1bGxTY3JlZW5Db250cm9sbGVyIF9zdGFydEVudGVyRnVsbFNjcmVl
bkFuaW1hdGlvbldpdGhEdXJhdGlvbjpdKToKKyAgICAgICAgKC1bV2ViRnVsbFNjcmVlbkNvbnRy
b2xsZXIgX3N0YXJ0RXhpdEZ1bGxTY3JlZW5BbmltYXRpb25XaXRoRHVyYXRpb246XSk6CisKKzIw
MTctMDgtMzEgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29tPgorCiAgICAgICAgIFtNYWNd
IFVwc3RyZWFtIEFwcEtpdC1yZWxhdGVkIFdlYktpdFN5c3RlbUludGVyZmFjZSBmdW5jdGlvbnMK
ICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NjE3NQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvUEFMLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9QQUwvUEFMLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
aW5kZXggMTNjZWNjY2U2YzQzNmYwNTAyZWQ5OTcyYmViNGIxYWViM2YzNDBiOC4uM2EwNDBhYTI0
MDg5Mzg5MmNhYmU1OGU1ZjdjMjA4M2YxNjEyYjZkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvUEFML1BBTC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1BBTC9QQUwueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTA0LDYgKzEwNCw3IEBACiAJ
CUExMDgyNkYxMUY1NzNCQ0EwMDQ3NzJBQyAvKiBOU1Jlc3BvbmRlclNQSS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTEwODI2RjAxRjU3M0JDQTAwNDc3
MkFDIC8qIE5TUmVzcG9uZGVyU1BJLmggKi87IH07CiAJCUExMDgyNkY5MUY1NzYyOTIwMDQ3NzJB
QyAvKiBXZWJQYW5lbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQTEwODI2RjcxRjU3NjI5MjAwNDc3MkFDIC8qIFdlYlBhbmVsLmggKi87IH07CiAJCUEx
MDgyNkZBMUY1NzYyOTIwMDQ3NzJBQyAvKiBXZWJQYW5lbC5tbSBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExMDgyNkY4MUY1NzYyOTIwMDQ3NzJBQyAvKiBX
ZWJQYW5lbC5tbSAqLzsgfTsKKwkJQTEwODI2RkUxRjU4QTQzMzAwNDc3MkFDIC8qIE5TR3JhcGhp
Y3NTUEkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEEx
MDgyNkZEMUY1OEE0MzMwMDQ3NzJBQyAvKiBOU0dyYXBoaWNzU1BJLmggKi87IH07CiAJCUExRjU1
RENGMUY1NTI4RUMwMEVEQjc1RiAvKiBNZXRhZGF0YVNQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFGNTVEQ0UxRjU1MjhFQzAwRURCNzVGIC8qIE1l
dGFkYXRhU1BJLmggKi87IH07CiAJCUEzMEQ0MTIxMUYwREQwRUEwMEI3MTk1NCAvKiBLaWxsUmlu
Zy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTMwRDQx
MUUxRjBERDBFQTAwQjcxOTU0IC8qIEtpbGxSaW5nLmggKi87IH07CiAJCUEzMEQ0MTIyMUYwREQw
RUEwMEI3MTk1NCAvKiBLaWxsUmluZy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBMzBENDExRjFGMEREMEVBMDBCNzE5NTQgLyogS2lsbFJpbmcuY3Bw
ICovOyB9OwpAQCAtMjIzLDYgKzIyNCw3IEBACiAJCUExMDgyNkYwMUY1NzNCQ0EwMDQ3NzJBQyAv
KiBOU1Jlc3BvbmRlclNQSS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOU1Jlc3BvbmRlclNQSS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMTA4MjZGNzFGNTc2MjkyMDA0NzcyQUMgLyogV2Vi
UGFuZWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViUGFuZWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQTEwODI2RjgxRjU3NjI5MjAwNDc3MkFDIC8qIFdlYlBhbmVsLm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBwYXRoID0gV2ViUGFuZWwubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUExMDgyNkZEMUY1OEE0MzMwMDQ3NzJBQyAvKiBOU0dyYXBoaWNzU1BJLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IE5TR3JhcGhpY3NTUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTFGNTVE
Q0UxRjU1MjhFQzAwRURCNzVGIC8qIE1ldGFkYXRhU1BJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1ldGFk
YXRhU1BJLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUEzMEQ0MTFFMUYwREQwRUEw
MEI3MTk1NCAvKiBLaWxsUmluZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBL
aWxsUmluZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMzBENDExRjFGMEREMEVB
MDBCNzE5NTQgLyogS2lsbFJpbmcuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gS2lsbFJpbmcuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzU1LDYg
KzM1Nyw3IEBACiAJCQkJMEM3Nzg1NzUxRjQ1MTMwRjAwRjRFQkI2IC8qIE5TQXBwbGljYXRpb25T
UEkuaCAqLywKIAkJCQkwQzc3ODU3NjFGNDUxMzBGMDBGNEVCQjYgLyogTlNFdmVudFNQSS5oICov
LAogCQkJCTBDNzc4NTc3MUY0NTEzMEYwMEY0RUJCNiAvKiBOU0ZvbnRTUEkuaCAqLywKKwkJCQlB
MTA4MjZGRDFGNThBNDMzMDA0NzcyQUMgLyogTlNHcmFwaGljc1NQSS5oICovLAogCQkJCTBDNzc4
NTc4MUY0NTEzMEYwMEY0RUJCNiAvKiBOU0ltbWVkaWF0ZUFjdGlvbkdlc3R1cmVSZWNvZ25pemVy
U1BJLmggKi8sCiAJCQkJMEM3Nzg1NzkxRjQ1MTMwRjAwRjRFQkI2IC8qIE5TTWVudVNQSS5oICov
LAogCQkJCTBDNzc4NTdBMUY0NTEzMEYwMEY0RUJCNiAvKiBOU1Bhc3RlYm9hcmRTUEkuaCAqLywK
QEAgLTU1MSw2ICs1NTQsNyBAQAogCQkJCTBDMkRBMTRFMUYzQkVCNDkwMERCQzMxNyAvKiBOU0V4
dGVuc2lvblNQSS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEMyREExNEYxRjNCRUI0OTAwREJDMzE3
IC8qIE5TRmlsZU1hbmFnZXJTUEkuaCBpbiBIZWFkZXJzICovLAogCQkJCTBDNzc4NTkwMUY0NTEz
MEYwMEY0RUJCNiAvKiBOU0ZvbnRTUEkuaCBpbiBIZWFkZXJzICovLAorCQkJCUExMDgyNkZFMUY1
OEE0MzMwMDQ3NzJBQyAvKiBOU0dyYXBoaWNzU1BJLmggaW4gSGVhZGVycyAqLywKIAkJCQkwQzc3
ODU5MTFGNDUxMzBGMDBGNEVCQjYgLyogTlNJbW1lZGlhdGVBY3Rpb25HZXN0dXJlUmVjb2duaXpl
clNQSS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEM3Nzg1OTIxRjQ1MTMwRjAwRjRFQkI2IC8qIE5T
TWVudVNQSS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEM3Nzg1OTMxRjQ1MTMwRjAwRjRFQkI2IC8q
IE5TUGFzdGVib2FyZFNQSS5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9QQUwvcGFsL3NwaS9jZy9Db3JlR3JhcGhpY3NTUEkuaCBiL1NvdXJjZS9XZWJDb3JlL1BB
TC9wYWwvc3BpL2NnL0NvcmVHcmFwaGljc1NQSS5oCmluZGV4IDdjMjkxYzkxNGQ2OWY1NmQ4NmRi
YjRhODgxZmIyMzE4OWM1YTVhNWMuLmVkNjM0ZjRjYTI2OGRjZWI3MjgwMzM3YTc0ODQyODQ5YTEy
ZWZmZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NnL0NvcmVHcmFw
aGljc1NQSS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NnL0NvcmVHcmFwaGlj
c1NQSS5oCkBAIC0xMzcsMjEgKzEzNyw3NCBAQCBzdGF0aWMgaW5saW5lIENHRmxvYXQgQ0dGbG9h
dE1pbihDR0Zsb2F0IGEsIENHRmxvYXQgYikgeyByZXR1cm4gaXNuYW4oYSkgPyBiIDogKAogCiB0
eXBlZGVmIHN0cnVjdCBDR0ZvbnRDYWNoZSBDR0ZvbnRDYWNoZTsKIAotI2lmIFBMQVRGT1JNKE1B
QykKLXR5cGVkZWYgdWludDMyX3QgQ0dTQ29ubmVjdGlvbklEOwotdHlwZWRlZiB1aW50MzJfdCBD
R1NXaW5kb3dJRDsKLXR5cGVkZWYgdWludDMyX3QgQ0dTV2luZG93Q291bnQ7Ci10eXBlZGVmIENH
U1dpbmRvd0lEICpDR1NXaW5kb3dJRExpc3Q7CisjaWYgUExBVEZPUk0oQ09DT0EpCiAKIGVudW0g
ewogICAgIGtDR1NXaW5kb3dDYXB0dXJlTm9taW5hbFJlc29sdXRpb24gPSAweDAyMDAsCiAgICAg
a0NHU0NhcHR1cmVJZ25vcmVHbG9iYWxDbGlwU2hhcGUgPSAweDA4MDAsCiB9OwogdHlwZWRlZiB1
aW50MzJfdCBDR1NXaW5kb3dDYXB0dXJlT3B0aW9uczsKLSNlbmRpZgorCit0eXBlZGVmIENGX0VO
VU0gKGludDMyX3QsIENHU3R5bGVEcmF3T3JkZXJpbmcpIHsKKyAgICBrQ0dTdHlsZURyYXdPcmRl
cmluZ1N0eWxlT25seSA9IDAsCisgICAga0NHU3R5bGVEcmF3T3JkZXJpbmdCZWxvdyA9IDEsCisg
ICAga0NHU3R5bGVEcmF3T3JkZXJpbmdBYm92ZSA9IDIsCit9OworCit0eXBlZGVmIENGX0VOVU0g
KGludDMyX3QsIENHRm9jdXNSaW5nT3JkZXJpbmcpIHsKKyAgICBrQ0dGb2N1c1JpbmdPcmRlcmlu
Z05vbmUgPSBrQ0dTdHlsZURyYXdPcmRlcmluZ1N0eWxlT25seSwKKyAgICBrQ0dGb2N1c1JpbmdP
cmRlcmluZ0JlbG93ID0ga0NHU3R5bGVEcmF3T3JkZXJpbmdCZWxvdywKKyAgICBrQ0dGb2N1c1Jp
bmdPcmRlcmluZ0Fib3ZlID0ga0NHU3R5bGVEcmF3T3JkZXJpbmdBYm92ZSwKK307CisKK3R5cGVk
ZWYgQ0ZfRU5VTSAoaW50MzJfdCwgQ0dGb2N1c1JpbmdUaW50KSB7CisgICAga0NHRm9jdXNSaW5n
VGludEJsdWUgPSAwLAorICAgIGtDR0ZvY3VzUmluZ1RpbnRHcmFwaGl0ZSA9IDEsCit9OworCitz
dHJ1Y3QgQ0dGb2N1c1JpbmdTdHlsZSB7CisgICAgdW5zaWduZWQgaW50IHZlcnNpb247CisgICAg
Q0dGb2N1c1JpbmdUaW50IHRpbnQ7CisgICAgQ0dGb2N1c1JpbmdPcmRlcmluZyBvcmRlcmluZzsK
KyAgICBDR0Zsb2F0IGFscGhhOworICAgIENHRmxvYXQgcmFkaXVzOworICAgIENHRmxvYXQgdGhy
ZXNob2xkOworICAgIENHUmVjdCBib3VuZHM7CisgICAgaW50IGFjY3VtdWxhdGU7Cit9OwordHlw
ZWRlZiBzdHJ1Y3QgQ0dGb2N1c1JpbmdTdHlsZSBDR0ZvY3VzUmluZ1N0eWxlOworCit0eXBlZGVm
IENGX0VOVU0odWludDMyX3QsIENHU05vdGlmaWNhdGlvblR5cGUpIHsKKyAgICBrQ0dTRmlyc3RD
b25uZWN0aW9uTm90aWZpY2F0aW9uID0gOTAwLAorICAgIGtDR1NGaXJzdFNlc3Npb25Ob3RpZmlj
YXRpb24gPSAxNTAwLAorfTsKKworc3RhdGljIGNvbnN0IENHU05vdGlmaWNhdGlvblR5cGUga0NH
U0Nvbm5lY3Rpb25XaW5kb3dNb2RpZmljYXRpb25zU3RhcnRlZCA9IChDR1NOb3RpZmljYXRpb25U
eXBlKShrQ0dTRmlyc3RDb25uZWN0aW9uTm90aWZpY2F0aW9uICsgNik7CitzdGF0aWMgY29uc3Qg
Q0dTTm90aWZpY2F0aW9uVHlwZSBrQ0dTQ29ubmVjdGlvbldpbmRvd01vZGlmaWNhdGlvbnNTdG9w
cGVkID0gKENHU05vdGlmaWNhdGlvblR5cGUpKGtDR1NGaXJzdENvbm5lY3Rpb25Ob3RpZmljYXRp
b24gKyA3KTsKK3N0YXRpYyBjb25zdCBDR1NOb3RpZmljYXRpb25UeXBlIGtDR1Nlc3Npb25Db25z
b2xlQ29ubmVjdCA9IGtDR1NGaXJzdFNlc3Npb25Ob3RpZmljYXRpb247CitzdGF0aWMgY29uc3Qg
Q0dTTm90aWZpY2F0aW9uVHlwZSBrQ0dTZXNzaW9uQ29uc29sZURpc2Nvbm5lY3QgPSAoQ0dTTm90
aWZpY2F0aW9uVHlwZSkoa0NHU2Vzc2lvbkNvbnNvbGVDb25uZWN0ICsgMSk7CisKKyNlbmRpZiAv
LyBQTEFURk9STShDT0NPQSkKIAogI2VuZGlmIC8vIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCiAK
KyNpZiBQTEFURk9STShDT0NPQSkKK3R5cGVkZWYgdWludDMyX3QgQ0dTQnl0ZUNvdW50OwordHlw
ZWRlZiB1aW50MzJfdCBDR1NDb25uZWN0aW9uSUQ7Cit0eXBlZGVmIHVpbnQzMl90IENHU1dpbmRv
d0NvdW50OwordHlwZWRlZiB1aW50MzJfdCBDR1NXaW5kb3dJRDsKKwordHlwZWRlZiBDR1NXaW5k
b3dJRCogQ0dTV2luZG93SURMaXN0OwordHlwZWRlZiBzdHJ1Y3QgQ0ZfQlJJREdFRF9UWVBFKGlk
KSBDR1NSZWdpb25PYmplY3QqIENHU1JlZ2lvbk9iajsKK3R5cGVkZWYgc3RydWN0IENGX0JSSURH
RURfVFlQRShpZCkgQ0dTdHlsZSogQ0dTdHlsZVJlZjsKKwordHlwZWRlZiB2b2lkKiBDR1NOb3Rp
ZmljYXRpb25Bcmc7Cit0eXBlZGVmIHZvaWQqIENHU05vdGlmaWNhdGlvbkRhdGE7CisKK3R5cGVk
ZWYgdm9pZCAoKkNHU05vdGlmeUNvbm5lY3Rpb25Qcm9jUHRyKShDR1NOb3RpZmljYXRpb25UeXBl
LCB2b2lkKiBkYXRhLCB1aW50MzJfdCBkYXRhX2xlbmd0aCwgdm9pZCogYXJnLCBDR1NDb25uZWN0
aW9uSUQpOwordHlwZWRlZiB2b2lkICgqQ0dTTm90aWZ5UHJvY1B0cikoQ0dTTm90aWZpY2F0aW9u
VHlwZSwgdm9pZCogZGF0YSwgdWludDMyX3QgZGF0YV9sZW5ndGgsIHZvaWQqIGFyZyk7CisjZW5k
aWYKKwogV1RGX0VYVEVSTl9DX0JFR0lOCiAKIENHQ29sb3JSZWYgQ0dDb2xvclRyYW5zZm9ybUNv
bnZlcnRDb2xvcihDR0NvbG9yVHJhbnNmb3JtUmVmLCBDR0NvbG9yUmVmLCBDR0NvbG9yUmVuZGVy
aW5nSW50ZW50KTsKQEAgLTIwMywxMCArMjU2LDIyIEBAIENHQ29sb3JTcGFjZVJlZiBDR0lPU3Vy
ZmFjZUNvbnRleHRHZXRDb2xvclNwYWNlKENHQ29udGV4dFJlZik7CiAjZW5kaWYKIAogI2lmIFBM
QVRGT1JNKENPQ09BKQotQ0dTUmVnaW9uRW51bWVyYXRvck9iaiBDR1NSZWdpb25FbnVtZXJhdG9y
KENHUmVnaW9uUmVmKTsKLUNHUmVjdCogQ0dTTmV4dFJlY3QoY29uc3QgQ0dTUmVnaW9uRW51bWVy
YXRvck9iaik7Ci1DR0Vycm9yIENHU1JlbGVhc2VSZWdpb25FbnVtZXJhdG9yKGNvbnN0IENHU1Jl
Z2lvbkVudW1lcmF0b3JPYmopOwogQ0dDb2xvclNwYWNlUmVmIENHQ29udGV4dENvcHlEZXZpY2VD
b2xvclNwYWNlKENHQ29udGV4dFJlZik7CitDR0Vycm9yIENHU05ld1JlZ2lvbldpdGhSZWN0KGNv
bnN0IENHUmVjdCosIENHUmVnaW9uUmVmKik7CitDR0Vycm9yIENHU1BhY2thZ2VzRW5hYmxlQ29u
bmVjdGlvbk9jY2x1c2lvbk5vdGlmaWNhdGlvbnMoQ0dTQ29ubmVjdGlvbklELCBib29sIGZsYWcs
IGJvb2wqIG91dEN1cnJlbnRWaXNpYmlsaXR5U3RhdGUpOworQ0dFcnJvciBDR1NQYWNrYWdlc0Vu
YWJsZUNvbm5lY3Rpb25XaW5kb3dNb2RpZmljYXRpb25Ob3RpZmljYXRpb25zKENHU0Nvbm5lY3Rp
b25JRCwgYm9vbCBmbGFnLCBib29sKiBvdXRDb25uZWN0aW9uSXNDdXJyZW50bHlJZGxlKTsKK0NH
RXJyb3IgQ0dTUmVnaXN0ZXJDb25uZWN0aW9uTm90aWZ5UHJvYyhDR1NDb25uZWN0aW9uSUQsIENH
U05vdGlmeUNvbm5lY3Rpb25Qcm9jUHRyLCBDR1NOb3RpZmljYXRpb25UeXBlLCB2b2lkKiBhcmcp
OworQ0dFcnJvciBDR1NSZWdpc3Rlck5vdGlmeVByb2MoQ0dTTm90aWZ5UHJvY1B0ciwgQ0dTTm90
aWZpY2F0aW9uVHlwZSwgdm9pZCogYXJnKTsKK0NHRXJyb3IgQ0dTUmVsZWFzZVJlZ2lvbihjb25z
dCBDR1JlZ2lvblJlZiBDRl9SRUxFQVNFU19BUkdVTUVOVCk7CitDR0Vycm9yIENHU1JlbGVhc2VS
ZWdpb25FbnVtZXJhdG9yKGNvbnN0IENHU1JlZ2lvbkVudW1lcmF0b3JPYmopOworQ0dFcnJvciBD
R1NTZXRXaW5kb3dBbHBoYShDR1NDb25uZWN0aW9uSUQsIENHU1dpbmRvd0lELCBmbG9hdCBhbHBo
YSk7CitDR0Vycm9yIENHU1NldFdpbmRvd1dhcnAoQ0dTQ29ubmVjdGlvbklELCBDR1NXaW5kb3dJ
RCwgaW50IHcsIGludCBoLCBjb25zdCBmbG9hdCogbWVzaCk7CitDR1BhdHRlcm5SZWYgQ0dQYXR0
ZXJuQ3JlYXRlV2l0aEltYWdlMihDR0ltYWdlUmVmLCBDR0FmZmluZVRyYW5zZm9ybSwgQ0dQYXR0
ZXJuVGlsaW5nKTsKK0NHUmVjdCogQ0dTTmV4dFJlY3QoY29uc3QgQ0dTUmVnaW9uRW51bWVyYXRv
ck9iaik7CitDR1NSZWdpb25FbnVtZXJhdG9yT2JqIENHU1JlZ2lvbkVudW1lcmF0b3IoQ0dSZWdp
b25SZWYpOworQ0dTdHlsZVJlZiBDR1N0eWxlQ3JlYXRlRm9jdXNSaW5nV2l0aENvbG9yKGNvbnN0
IENHRm9jdXNSaW5nU3R5bGUqLCBDR0NvbG9yUmVmKTsKK2Jvb2wgQ0dDb250ZXh0RHJhd3NXaXRo
Q29ycmVjdFNoYWRvd09mZnNldHMoQ0dDb250ZXh0UmVmKTsKK3ZvaWQgQ0dDb250ZXh0U2V0U3R5
bGUoQ0dDb250ZXh0UmVmLCBDR1N0eWxlUmVmKTsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oV0lO
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvbWFjL0hJU2VydmljZXNT
UEkuaCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL21hYy9ISVNlcnZpY2VzU1BJLmgKaW5k
ZXggOWYzNWRjZDRkMDNhNTdhMDg2YjBhMzY1ZGZiMzlkZGZmY2M4MTk4NS4uYTM1NWI5NGZlNjMw
OTJlZjVhY2QwYjVjOTVlMDNkZDQ2ZTk1MzgxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
UEFML3BhbC9zcGkvbWFjL0hJU2VydmljZXNTUEkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwv
cGFsL3NwaS9tYWMvSElTZXJ2aWNlc1NQSS5oCkBAIC0yOCwyMSArMjgsNDUgQEAKICNpZiBVU0Uo
QVBQTEVfSU5URVJOQUxfU0RLKQogCiAjaW5jbHVkZSA8SElTZXJ2aWNlcy9BWFRleHRNYXJrZXIu
aD4KKyNpbmNsdWRlIDxISVNlcnZpY2VzL0NvcmVEcmFnLmg+CisKKyNlbHNlCisKK2VudW0gewor
ICAgIGtDb3JlRHJhZ0ltYWdlU3BlY1ZlcnNpb25PbmUgPSAxLAorfTsKKworc3RydWN0IENvcmVE
cmFnSW1hZ2VTcGVjIHsKKyAgICBVSW50MzIgdmVyc2lvbjsKKyAgICBTSW50MzIgcGl4ZWxzV2lk
ZTsKKyAgICBTSW50MzIgcGl4ZWxzSGlnaDsKKyAgICBTSW50MzIgYml0c1BlclNhbXBsZTsKKyAg
ICBTSW50MzIgc2FtcGxlc1BlclBpeGVsOworICAgIFNJbnQzMiBiaXRzUGVyUGl4ZWw7CisgICAg
U0ludDMyIGJ5dGVzUGVyUm93OworICAgIEJvb2xlYW4gaXNQbGFuYXI7CisgICAgQm9vbGVhbiBo
YXNBbHBoYTsKKyAgICBjb25zdCBVSW50OCogZGF0YVs1XTsKK307CiAKICNlbmRpZgogCi10eXBl
ZGVmIGNvbnN0IHN0cnVjdCBfX0FYVGV4dE1hcmtlciAqQVhUZXh0TWFya2VyUmVmOwotdHlwZWRl
ZiBjb25zdCBzdHJ1Y3QgX19BWFRleHRNYXJrZXJSYW5nZSAqQVhUZXh0TWFya2VyUmFuZ2VSZWY7
Cit0eXBlZGVmIGNvbnN0IHN0cnVjdCBfX0FYVGV4dE1hcmtlciogQVhUZXh0TWFya2VyUmVmOwor
dHlwZWRlZiBjb25zdCBzdHJ1Y3QgX19BWFRleHRNYXJrZXJSYW5nZSogQVhUZXh0TWFya2VyUmFu
Z2VSZWY7Cit0eXBlZGVmIHN0cnVjdCBDb3JlRHJhZ0ltYWdlU3BlYyBDb3JlRHJhZ0ltYWdlU3Bl
YzsKK3R5cGVkZWYgc3RydWN0IE9wYXF1ZUNvcmVEcmFnKiBDb3JlRHJhZ1JlZjsKIAogV1RGX0VY
VEVSTl9DX0JFR0lOCiAKLUNGVHlwZUlEIEFYVGV4dE1hcmtlckdldFR5cGVJRCgpOwotQ0ZUeXBl
SUQgQVhUZXh0TWFya2VyUmFuZ2VHZXRUeXBlSUQoKTsKLUFYVGV4dE1hcmtlclJlZiBBWFRleHRN
YXJrZXJDcmVhdGUoQ0ZBbGxvY2F0b3JSZWYsIGNvbnN0IFVJbnQ4KiBieXRlcywgQ0ZJbmRleCBs
ZW5ndGgpOwotQ0ZJbmRleCBBWFRleHRNYXJrZXJHZXRMZW5ndGgoQVhUZXh0TWFya2VyUmVmKTsK
LWNvbnN0IFVJbnQ4KiBBWFRleHRNYXJrZXJHZXRCeXRlUHRyKEFYVGV4dE1hcmtlclJlZik7CiBB
WFRleHRNYXJrZXJSYW5nZVJlZiBBWFRleHRNYXJrZXJSYW5nZUNyZWF0ZShDRkFsbG9jYXRvclJl
ZiwgQVhUZXh0TWFya2VyUmVmIHN0YXJ0TWFya2VyLCBBWFRleHRNYXJrZXJSZWYgZW5kTWFya2Vy
KTsKK0FYVGV4dE1hcmtlclJlZiBBWFRleHRNYXJrZXJDcmVhdGUoQ0ZBbGxvY2F0b3JSZWYsIGNv
bnN0IFVJbnQ4KiBieXRlcywgQ0ZJbmRleCBsZW5ndGgpOwogQVhUZXh0TWFya2VyUmVmIEFYVGV4
dE1hcmtlclJhbmdlQ29weVN0YXJ0TWFya2VyKEFYVGV4dE1hcmtlclJhbmdlUmVmKTsKIEFYVGV4
dE1hcmtlclJlZiBBWFRleHRNYXJrZXJSYW5nZUNvcHlFbmRNYXJrZXIoQVhUZXh0TWFya2VyUmFu
Z2VSZWYpOworQ0ZJbmRleCBBWFRleHRNYXJrZXJHZXRMZW5ndGgoQVhUZXh0TWFya2VyUmVmKTsK
K0NGVHlwZUlEIEFYVGV4dE1hcmtlckdldFR5cGVJRCgpOworQ0ZUeXBlSUQgQVhUZXh0TWFya2Vy
UmFuZ2VHZXRUeXBlSUQoKTsKK0NvcmVEcmFnUmVmIENvcmVEcmFnR2V0Q3VycmVudERyYWcoKTsK
K09TU3RhdHVzIENvcmVEcmFnU2V0SW1hZ2UoQ29yZURyYWdSZWYsIENHUG9pbnQgaW1hZ2VPZmZz
ZXQsIENvcmVEcmFnSW1hZ2VTcGVjKiwgQ0dTUmVnaW9uT2JqIGltYWdlU2hhcGUsIGZsb2F0IG92
ZXJhbGxBbHBoYSk7Citjb25zdCBVSW50OCogQVhUZXh0TWFya2VyR2V0Qnl0ZVB0cihBWFRleHRN
YXJrZXJSZWYpOwogCiBXVEZfRVhURVJOX0NfRU5ECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9QQUwvcGFsL3NwaS9tYWMvTlNHcmFwaGljc1NQSS5oIGIvU291cmNlL1dlYkNvcmUvUEFML3Bh
bC9zcGkvbWFjL05TR3JhcGhpY3NTUEkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xMDYxZTJlOTk5YjE4YjIxMGJl
MDAxY2FhYzI3YmEyYjJiYWJiMmU2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
UEFML3BhbC9zcGkvbWFjL05TR3JhcGhpY3NTUEkuaApAQCAtMCwwICsxLDQyIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBQTEFURk9STShNQUMpCisKKyNpZiBVU0UoQVBQTEVf
SU5URVJOQUxfU0RLKQorCisjaW5jbHVkZSA8QXBwS2l0L05TR3JhcGhpY3NfUHJpdmF0ZS5oPgor
CisjZW5kaWYKKworV1RGX0VYVEVSTl9DX0JFR0lOCisKK0JPT0wgTlNJbml0aWFsaXplQ0dGb2N1
c1JpbmdTdHlsZUZvclRpbWUoTlNGb2N1c1JpbmdQbGFjZW1lbnQsIENHRm9jdXNSaW5nU3R5bGUq
LCBOU1RpbWVJbnRlcnZhbCk7CisKK1dURl9FWFRFUk5fQ19FTkQKKworI2VuZGlmIC8vIFBMQVRG
T1JNKE1BQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NDb250ZXh0LmgKaW5kZXggMThhY2RkYmU3ZWZmZmE0MjlkMTg1NzgzOWFiNmU2Njc0NjZhM2Q4
NS4uYzE0YjJhNTVlNmFhN2Y5MGQyMDAzYzQ2Njg0MzQzMjJlMDg1NDU5YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKQEAgLTQ0
NSw2ICs0NDUsNyBAQCBwdWJsaWM6CiAjaWYgUExBVEZPUk0oTUFDKQogICAgIHZvaWQgZHJhd0Zv
Y3VzUmluZyhjb25zdCBQYXRoJiwgZG91YmxlIHRpbWVPZmZzZXQsIGJvb2wmIG5lZWRzUmVkcmF3
KTsKICAgICB2b2lkIGRyYXdGb2N1c1JpbmcoY29uc3QgVmVjdG9yPEZsb2F0UmVjdD4mLCBkb3Vi
bGUgdGltZU9mZnNldCwgYm9vbCYgbmVlZHNSZWRyYXcpOworICAgIHN0YXRpYyBDR0NvbG9yUmVm
IGZvY3VzUmluZ0NvbG9yKCk7CiAjZW5kaWYKIAogICAgIHZvaWQgc2V0TGluZUNhcChMaW5lQ2Fw
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291
cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNw
cAppbmRleCA2Njk2Yzk2MGE1ODc1ZjA0MzE3MjliMTE5YWI2YjI0MTI3ZDdhNWNhLi4wMjI4ZTM5
MjlhMjY2ZWE5NzMyYmJhOGVlNjA1NzNmYTUwOWEzNTBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwCkBAIC0xODQsNyArMTg0LDcgQEAg
U3Vic2FtcGxpbmdMZXZlbCBJbWFnZVNvdXJjZTo6c3Vic2FtcGxpbmdMZXZlbEZvclNjYWxlRmFj
dG9yKEdyYXBoaWNzQ29udGV4dCYgY28KIHsKICNpZiBVU0UoQ0cpCiAgICAgLy8gTmV2ZXIgdXNl
IHN1YnNhbXBsZWQgaW1hZ2VzIGZvciBkcmF3aW5nIGludG8gUERGIGNvbnRleHRzLgotICAgIGlm
ICh3a0NHQ29udGV4dElzUERGQ29udGV4dChjb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpKSkKKyAg
ICBpZiAoQ0dDb250ZXh0R2V0VHlwZShjb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpKSA9PSBrQ0dD
b250ZXh0VHlwZVBERikKICAgICAgICAgcmV0dXJuIFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQ7
CiAKICAgICBmbG9hdCBzY2FsZSA9IHN0ZDo6bWluKGZsb2F0KDEpLCBzdGQ6Om1heChzY2FsZUZh
Y3Rvci53aWR0aCgpLCBzY2FsZUZhY3Rvci5oZWlnaHQoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCmlu
ZGV4IGQ1ODgzOWFlNThiYjUxMGQ1MDdkNDY1YjA2MTkyZTAyMGJhZDVhYmQuLjM3ODhiYzI0MTQy
NGY1NDY3ZWYxYTIxYTI2ZWNmZmE0ZTgzY2EwMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAKQEAgLTk4
Nyw3ICs5ODcsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6Y2xpcE91dChjb25zdCBGbG9hdFJl
Y3QmIHJlY3QpCiAgICAgLy8gaGFzIGNlcnRhaW4gdHJhbnNmb3JtcyB0aGF0IGFyZW4ndCBqdXN0
IGEgdHJhbnNsYXRpb24gb3IgYSBzY2FsZS4gQW5kIGR1ZSB0byA8cmRhcjovL3Byb2JsZW0vMTQ2
MzQ0NTM+CiAgICAgLy8gd2UgY2Fubm90IHVzZSBpdCBpbiBmb3IgYSBwcmludGluZyBjb250ZXh0
IGVpdGhlci4KICAgICBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIGN0bSA9IGdldENUTSgpOwotICAg
IGJvb2wgY2FuVXNlQ0dSZWN0SW5maW5pdGUgPSAhd2tDR0NvbnRleHRJc1BERkNvbnRleHQocGxh
dGZvcm1Db250ZXh0KCkpICYmICghaXNBY2NlbGVyYXRlZENvbnRleHQoKSB8fCAoIWN0bS5iKCkg
JiYgIWN0bS5jKCkpKTsKKyAgICBib29sIGNhblVzZUNHUmVjdEluZmluaXRlID0gQ0dDb250ZXh0
R2V0VHlwZShwbGF0Zm9ybUNvbnRleHQoKSkgIT0ga0NHQ29udGV4dFR5cGVQREYgJiYgKCFpc0Fj
Y2VsZXJhdGVkQ29udGV4dCgpIHx8ICghY3RtLmIoKSAmJiAhY3RtLmMoKSkpOwogICAgIENHUmVj
dCByZWN0c1syXSA9IHsgY2FuVXNlQ0dSZWN0SW5maW5pdGUgPyBDR1JlY3RJbmZpbml0ZSA6IENH
Q29udGV4dEdldENsaXBCb3VuZGluZ0JveChwbGF0Zm9ybUNvbnRleHQoKSksIHJlY3QgfTsKICAg
ICBDR0NvbnRleHRCZWdpblBhdGgocGxhdGZvcm1Db250ZXh0KCkpOwogICAgIENHQ29udGV4dEFk
ZFJlY3RzKHBsYXRmb3JtQ29udGV4dCgpLCByZWN0cywgMik7CkBAIC0xMDkzLDcgKzEwOTMsNyBA
QCBzdGF0aWMgdm9pZCBhcHBseVNoYWRvd09mZnNldFdvcmthcm91bmRJZk5lZWRlZChjb25zdCBH
cmFwaGljc0NvbnRleHQmIGNvbnRleHQsCiAgICAgaWYgKGNvbnRleHQuaXNBY2NlbGVyYXRlZENv
bnRleHQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKHdrQ0dDb250ZXh0RHJhd3NXaXRo
Q29ycmVjdFNoYWRvd09mZnNldHMoY29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKSkpCisgICAgaWYg
KENHQ29udGV4dERyYXdzV2l0aENvcnJlY3RTaGFkb3dPZmZzZXRzKGNvbnRleHQucGxhdGZvcm1D
b250ZXh0KCkpKQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBXb3JrIGFyb3VuZCA8cmRhcjov
L3Byb2JsZW0vNTUzOTM4OD4gYnkgZW5zdXJpbmcgdGhhdCB0aGUgb2Zmc2V0cyB3aWxsIGdldCB0
cnVuY2F0ZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L1BhdHRlcm5DRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QYXR0
ZXJuQ0cuY3BwCmluZGV4IDk4ZTY5ZGU4ZWQ4OWEyNGU4ODZhMTQyYTA4Mzk1OWUyYzcyMTM1ZjAu
LmQwZTIxYzg3M2FhMmRjMzBjNTNjYzhiYWI0ZjhiMDQxNDM0MDAwOTggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BhdHRlcm5DRy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGF0dGVybkNHLmNwcApAQCAtMzEsOCAr
MzEsOCBAQAogCiAjaW5jbHVkZSAiQWZmaW5lVHJhbnNmb3JtLmgiCiAjaW5jbHVkZSAiR3JhcGhp
Y3NDb250ZXh0LmgiCi0KICNpbmNsdWRlIDxDb3JlR3JhcGhpY3MvQ29yZUdyYXBoaWNzLmg+Cisj
aW5jbHVkZSA8cGFsL3NwaS9jZy9Db3JlR3JhcGhpY3NTUEkuaD4KICNpbmNsdWRlIDx3dGYvTWFp
blRocmVhZC5oPgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCkBAIC03NCw3ICs3NCw3IEBAIENHUGF0
dGVyblJlZiBQYXR0ZXJuOjpjcmVhdGVQbGF0Zm9ybVBhdHRlcm4oY29uc3QgQWZmaW5lVHJhbnNm
b3JtJiB1c2VyU3BhY2VUcmFuCiAgICAgLy8gSWYgd2UncmUgcmVwZWF0aW5nIGluIGJvdGggZGly
ZWN0aW9ucywgd2UgY2FuIHVzZSBpbWFnZS1iYWNrZWQgcGF0dGVybnMKICAgICAvLyBpbnN0ZWFk
IG9mIGN1c3RvbSBwYXR0ZXJucywgYW5kIGF2b2lkIHRpbGluZy1lZGdlIHBpeGVsIGNyYWNrcy4K
ICAgICBpZiAobV9yZXBlYXRYICYmIG1fcmVwZWF0WSkKLSAgICAgICAgcmV0dXJuIHdrQ0dQYXR0
ZXJuQ3JlYXRlV2l0aEltYWdlQW5kVHJhbnNmb3JtKHRpbGVJbWFnZSgpLm5hdGl2ZUltYWdlKCku
Z2V0KCksIHBhdHRlcm5UcmFuc2Zvcm0sIHdrUGF0dGVyblRpbGluZ0NvbnN0YW50U3BhY2luZyk7
CisgICAgICAgIHJldHVybiBDR1BhdHRlcm5DcmVhdGVXaXRoSW1hZ2UyKHRpbGVJbWFnZSgpLm5h
dGl2ZUltYWdlKCkuZ2V0KCksIHBhdHRlcm5UcmFuc2Zvcm0sIGtDR1BhdHRlcm5UaWxpbmdDb25z
dGFudFNwYWNpbmcpOwogCiAgICAgLy8gSWYgRkxUX01BWCBzaG91bGQgYWxzbyBiZSB1c2VkIGZv
ciB4U3RlcCBvciB5U3RlcCwgbm90aGluZyBpcyByZW5kZXJlZC4gVXNpbmcgZnJhY3Rpb25zIG9m
IEZMVF9NQVggYWxzbwogICAgIC8vIHJlc3VsdCBpbiBub3RoaW5nIGJlaW5nIHJlbmRlcmVkLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhp
Y3NDb250ZXh0Q29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9HcmFwaGljc0NvbnRleHRDb2NvYS5tbQppbmRleCA2N2Y0ZGViMTcyYjZjMGZlMjNjMWIxZDFm
YjA5ZWFiOGFkYWUxMzFiLi40NWQ3NzM5ZDY0NmQ3OGExN2U3ZDcyMTg5ZDJkN2NjMzExZGNjN2Nk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFw
aGljc0NvbnRleHRDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9HcmFwaGljc0NvbnRleHRDb2NvYS5tbQpAQCAtMjksMTAgKzI5LDEzIEBACiAjaW1w
b3J0ICJHcmFwaGljc0NvbnRleHRDRy5oIgogI2ltcG9ydCAiR3JhcGhpY3NDb250ZXh0UGxhdGZv
cm1Qcml2YXRlQ0cuaCIKICNpbXBvcnQgIkludFJlY3QuaCIKKyNpbXBvcnQgPHBhbC9zcGkvY2cv
Q29yZUdyYXBoaWNzU1BJLmg+CisjaW1wb3J0IDxwYWwvc3BpL21hYy9OU0dyYXBoaWNzU1BJLmg+
CisjaW1wb3J0IDx3dGYvU3RkTGliRXh0cmFzLmg+CisKICNpZiBVU0UoQVBQS0lUKQogI2ltcG9y
dCA8QXBwS2l0L0FwcEtpdC5oPgogI2VuZGlmCi0jaW1wb3J0IDx3dGYvU3RkTGliRXh0cmFzLmg+
CiAKICNpZiBQTEFURk9STShJT1MpCiAjaW1wb3J0ICJDb2xvci5oIgpAQCAtNDMsNyArNDYsNiBA
QAogI2lmICFQTEFURk9STShJT1MpCiAjaW1wb3J0ICJMb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRl
eHQuaCIKICNlbmRpZgotI2ltcG9ydCAiV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oIgogCiBAY2xh
c3MgTlNDb2xvcjsKIApAQCAtNTcsMTEgKzU5LDQ3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIC8v
IGV4Y2VwdGlvbnMgZm9yIHRob3NlLgogCiAjaWYgIVBMQVRGT1JNKElPUykKK0NHQ29sb3JSZWYg
R3JhcGhpY3NDb250ZXh0Ojpmb2N1c1JpbmdDb2xvcigpCit7CisgICAgc3RhdGljIENHQ29sb3JS
ZWYgY29sb3I7CisgICAgaWYgKCFjb2xvcikgeworICAgICAgICBDR0Zsb2F0IGNvbG9yQ29tcG9u
ZW50c1tdID0geyAwLjUsIDAuNzUsIDEuMCwgMS4wIH07CisgICAgICAgIGF1dG8gY29sb3JTcGFj
ZSA9IGFkb3B0Q0YoQ0dDb2xvclNwYWNlQ3JlYXRlV2l0aE5hbWUoa0NHQ29sb3JTcGFjZVNSR0Ip
KTsKKyAgICAgICAgY29sb3IgPSBDR0NvbG9yQ3JlYXRlKGNvbG9yU3BhY2UuZ2V0KCksIGNvbG9y
Q29tcG9uZW50cyk7CisgICAgfQorICAgIHJldHVybiBjb2xvcjsKK30KKworc3RhdGljIGJvb2wg
ZHJhd0ZvY3VzUmluZ0F0VGltZShDR0NvbnRleHRSZWYgY29udGV4dCwgTlNUaW1lSW50ZXJ2YWwg
dGltZU9mZnNldCkKK3sKKyAgICBDR0ZvY3VzUmluZ1N0eWxlIGZvY3VzUmluZ1N0eWxlOworICAg
IEJPT0wgbmVlZHNSZXBhaW50ID0gTlNJbml0aWFsaXplQ0dGb2N1c1JpbmdTdHlsZUZvclRpbWUo
TlNGb2N1c1JpbmdPbmx5LCAmZm9jdXNSaW5nU3R5bGUsIHRpbWVPZmZzZXQpOworCisgICAgLy8g
V2Ugd2FudCB0byByZXNwZWN0IHRoZSBDR0NvbnRleHQgY2xpcHBpbmcgYW5kIGFsc28gbm90IG92
ZXJwYWludCBhbnkKKyAgICAvLyBleGlzdGluZyBmb2N1cyByaW5nLiBUaGUgd2F5IHRvIGRvIHRo
aXMgaXMgc2V0IGFjY3VtdWxhdGUgdG8KKyAgICAvLyAtMS4gQWNjb3JkaW5nIHRvIENvcmVHcmFw
aGljcywgdGhlIHJlYXNvbmluZyBmb3IgdGhpcyBiZWhhdmlvciBoYXMgYmVlbgorICAgIC8vIGxv
c3QgaW4gdGltZS4KKyAgICBmb2N1c1JpbmdTdHlsZS5hY2N1bXVsYXRlID0gLTE7CisgICAgYXV0
byBzdHlsZSA9IGFkb3B0Q0YoQ0dTdHlsZUNyZWF0ZUZvY3VzUmluZ1dpdGhDb2xvcigmZm9jdXNS
aW5nU3R5bGUsIEdyYXBoaWNzQ29udGV4dDo6Zm9jdXNSaW5nQ29sb3IoKSkpOworCisgICAgQ0dD
b250ZXh0U2F2ZUdTdGF0ZShjb250ZXh0KTsKKyAgICBDR0NvbnRleHRTZXRTdHlsZShjb250ZXh0
LCBzdHlsZS5nZXQoKSk7CisgICAgQ0dDb250ZXh0RmlsbFBhdGgoY29udGV4dCk7CisgICAgQ0dD
b250ZXh0UmVzdG9yZUdTdGF0ZShjb250ZXh0KTsKKworICAgIHJldHVybiBuZWVkc1JlcGFpbnQ7
Cit9CisKK3N0YXRpYyB2b2lkIGRyYXdGb2N1c1JpbmcoQ0dDb250ZXh0UmVmIGNvbnRleHQpCit7
CisgICAgZHJhd0ZvY3VzUmluZ0F0VGltZShjb250ZXh0LCBEQkxfTUFYKTsKK30KKwogc3RhdGlj
IHZvaWQgZHJhd0ZvY3VzUmluZ1RvQ29udGV4dChDR0NvbnRleHRSZWYgY29udGV4dCwgQ0dQYXRo
UmVmIGZvY3VzUmluZ1BhdGgpCiB7CiAgICAgQ0dDb250ZXh0QmVnaW5QYXRoKGNvbnRleHQpOwog
ICAgIENHQ29udGV4dEFkZFBhdGgoY29udGV4dCwgZm9jdXNSaW5nUGF0aCk7Ci0gICAgd2tEcmF3
Rm9jdXNSaW5nKGNvbnRleHQsIG51bGxwdHIsIDApOworICAgIGRyYXdGb2N1c1JpbmcoY29udGV4
dCk7CiB9CiAKIHN0YXRpYyBib29sIGRyYXdGb2N1c1JpbmdUb0NvbnRleHRBdFRpbWUoQ0dDb250
ZXh0UmVmIGNvbnRleHQsIENHUGF0aFJlZiBmb2N1c1JpbmdQYXRoLCBkb3VibGUgdGltZU9mZnNl
dCkKQEAgLTY5LDcgKzEwNyw3IEBAIHN0YXRpYyBib29sIGRyYXdGb2N1c1JpbmdUb0NvbnRleHRB
dFRpbWUoQ0dDb250ZXh0UmVmIGNvbnRleHQsIENHUGF0aFJlZiBmb2N1c1JpCiAgICAgVU5VU0VE
X1BBUkFNKHRpbWVPZmZzZXQpOwogICAgIENHQ29udGV4dEJlZ2luUGF0aChjb250ZXh0KTsKICAg
ICBDR0NvbnRleHRBZGRQYXRoKGNvbnRleHQsIGZvY3VzUmluZ1BhdGgpOwotICAgIHJldHVybiB3
a0RyYXdGb2N1c1JpbmdBdFRpbWUoY29udGV4dCwgc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+
OjptYXgoKSk7CisgICAgcmV0dXJuIGRyYXdGb2N1c1JpbmdBdFRpbWUoY29udGV4dCwgc3RkOjpu
dW1lcmljX2xpbWl0czxkb3VibGU+OjptYXgoKSk7CiB9CiAjZW5kaWYgLy8gIVBMQVRGT1JNKElP
UykKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkNvcmVTeXN0
ZW1JbnRlcmZhY2VJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViQ29yZVN5
c3RlbUludGVyZmFjZUlPUy5tbQppbmRleCAwOWExODI4MTRkMTQwMTNiN2M4OGU4ZWViZjAzZDlh
ZTBjZmEyODY5Li43NTdkMDQ1ZjVjNTg1NDQ0OTZmMmRkNjkwNTBiZDFhZjg2OGMyZWRlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViQ29yZVN5c3RlbUludGVyZmFj
ZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViQ29yZVN5c3RlbUlu
dGVyZmFjZUlPUy5tbQpAQCAtMjcsMTAgKzI3LDggQEAKICNpbXBvcnQgIldlYkNvcmVTeXN0ZW1J
bnRlcmZhY2UuaCIKIAogV0VCQ09SRV9FWFBPUlQgdm9pZCAoKndrQ0FMYXllckVudW1lcmF0ZVJl
Y3RzQmVpbmdEcmF3bldpdGhCbG9jaykoQ0FMYXllciAqLCBDR0NvbnRleHRSZWYgY29udGV4dCwg
dm9pZCAoXmJsb2NrKShDR1JlY3QgcmVjdCkpOwotV0VCQ09SRV9FWFBPUlQgQ0dQYXR0ZXJuUmVm
ICgqd2tDR1BhdHRlcm5DcmVhdGVXaXRoSW1hZ2VBbmRUcmFuc2Zvcm0pKENHSW1hZ2VSZWYsIENH
QWZmaW5lVHJhbnNmb3JtLCBpbnQpOwogV0VCQ09SRV9FWFBPUlQgdm9pZCAoKndrQ2xlYXJHbHlw
aFZlY3Rvcikodm9pZCogZ2x5cGhzKTsKIFdFQkNPUkVfRVhQT1JUIE9TU3RhdHVzICgqd2tDb252
ZXJ0Q2hhclRvR2x5cGhzKSh2b2lkKiBzdHlsZUdyb3VwLCBjb25zdCBVbmlDaGFyKiwgdW5zaWdu
ZWQgbnVtQ2hhcmFjdGVycywgdm9pZCogZ2x5cGhzKTsKLVdFQkNPUkVfRVhQT1JUIGJvb2wgKCp3
a0NHQ29udGV4dElzUERGQ29udGV4dCkoQ0dDb250ZXh0UmVmKTsKIFdFQkNPUkVfRVhQT1JUIGlk
ICgqd2tDcmVhdGVOU1VSTENvbm5lY3Rpb25EZWxlZ2F0ZVByb3h5KSh2b2lkKTsKIFdFQkNPUkVf
RVhQT1JUIHZvaWQgKCp3a1NldENPTk5FQ1RQcm94eUZvclN0cmVhbSkoQ0ZSZWFkU3RyZWFtUmVm
LCBDRlN0cmluZ1JlZiBwcm94eUhvc3QsIENGTnVtYmVyUmVmIHByb3h5UG9ydCk7CiBXRUJDT1JF
X0VYUE9SVCB2b2lkICgqd2tTZXRDT05ORUNUUHJveHlBdXRob3JpemF0aW9uRm9yU3RyZWFtKShD
RlJlYWRTdHJlYW1SZWYsIENGU3RyaW5nUmVmIHByb3h5QXV0aG9yaXphdGlvblN0cmluZyk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tCmluZGV4IDIwZTYz
NWMwOTA1YWU4OTZjN2JiNTQyMWM4NTZiMjFiMmE0NDZiNDkuLjgxODlkYmI4NjliNTFlYzFmNmMw
MDE0YWM4YTZjMmE1MzAyODM2OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21hYy9QYXN0ZWJvYXJkTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9Q
YXN0ZWJvYXJkTWFjLm1tCkBAIC01Miw2ICs1Miw4IEBACiAjaW1wb3J0ICJXZWJDb3JlU3lzdGVt
SW50ZXJmYWNlLmgiCiAjaW1wb3J0ICJXZWJOU0F0dHJpYnV0ZWRTdHJpbmdFeHRyYXMuaCIKICNp
bXBvcnQgIm1hcmt1cC5oIgorI2ltcG9ydCA8cGFsL3NwaS9jZy9Db3JlR3JhcGhpY3NTUEkuaD4K
KyNpbXBvcnQgPHBhbC9zcGkvbWFjL0hJU2VydmljZXNTUEkuaD4KICNpbXBvcnQgPHd0Zi9SZXRh
aW5QdHIuaD4KICNpbXBvcnQgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KICNpbXBvcnQgPHd0Zi90ZXh0
L1N0cmluZ0J1aWxkZXIuaD4KQEAgLTY2OSw2ICs2NzEsODAgQEAgVmVjdG9yPFN0cmluZz4gUGFz
dGVib2FyZDo6cmVhZEZpbGVuYW1lcygpCiB9CiAKICNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQor
c3RhdGljIHZvaWQgZmxpcEltYWdlU3BlYyhDb3JlRHJhZ0ltYWdlU3BlYyogaW1hZ2VTcGVjKQor
eworICAgIHVuc2lnbmVkIGNoYXIqIHRlbXBSb3cgPSAodW5zaWduZWQgY2hhciopZmFzdE1hbGxv
YyhpbWFnZVNwZWMtPmJ5dGVzUGVyUm93KTsKKyAgICBpbnQgcGxhbmVzID0gaW1hZ2VTcGVjLT5p
c1BsYW5hciA/IGltYWdlU3BlYy0+c2FtcGxlc1BlclBpeGVsIDogMTsKKworICAgIGZvciAoaW50
IHAgPSAwOyBwIDwgcGxhbmVzOyBwKyspIHsKKyAgICAgICAgdW5zaWduZWQgY2hhciogdG9wUm93
ID0gKHVuc2lnbmVkIGNoYXIqKWltYWdlU3BlYy0+ZGF0YVtwXTsKKyAgICAgICAgdW5zaWduZWQg
Y2hhciogYm90Um93ID0gdG9wUm93ICsgKGltYWdlU3BlYy0+cGl4ZWxzSGlnaCAtIDEpICogaW1h
Z2VTcGVjLT5ieXRlc1BlclJvdzsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBpbWFnZVNw
ZWMtPnBpeGVsc0hpZ2ggLyAyOyBpKyssIHRvcFJvdyArPSBpbWFnZVNwZWMtPmJ5dGVzUGVyUm93
LCBib3RSb3cgLT0gaW1hZ2VTcGVjLT5ieXRlc1BlclJvdykgeworICAgICAgICAgICAgYmNvcHko
dG9wUm93LCAgdGVtcFJvdywgaW1hZ2VTcGVjLT5ieXRlc1BlclJvdyk7CisgICAgICAgICAgICBi
Y29weShib3RSb3csICB0b3BSb3csICBpbWFnZVNwZWMtPmJ5dGVzUGVyUm93KTsKKyAgICAgICAg
ICAgIGJjb3B5KHRlbXBSb3csIGJvdFJvdywgIGltYWdlU3BlYy0+Ynl0ZXNQZXJSb3cpOworICAg
ICAgICB9CisgICAgfQorCisgICAgZmFzdEZyZWUodGVtcFJvdyk7Cit9CisKK3N0YXRpYyB2b2lk
IHNldERyYWdJbWFnZUltcGwoTlNJbWFnZSAqaW1hZ2UsIE5TUG9pbnQgb2Zmc2V0KQoreworICAg
IGJvb2wgZmxpcEltYWdlOworICAgIE5TU2l6ZSBpbWFnZVNpemUgPSBpbWFnZS5zaXplOworICAg
IENHUmVjdCBpbWFnZVJlY3QgPSBDR1JlY3RNYWtlKDAsIDAsIGltYWdlU2l6ZS53aWR0aCwgaW1h
Z2VTaXplLmhlaWdodCk7CisgICAgTlNJbWFnZVJlcCAqaW1hZ2VSZXAgPSBbaW1hZ2UgYmVzdFJl
cHJlc2VudGF0aW9uRm9yUmVjdDpOU1JlY3RGcm9tQ0dSZWN0KGltYWdlUmVjdCkgY29udGV4dDpu
aWwgaGludHM6bmlsXTsKKyAgICBSZXRhaW5QdHI8TlNCaXRtYXBJbWFnZVJlcD4gYml0bWFwSW1h
Z2U7CisgICAgaWYgKCFpbWFnZVJlcCB8fCAhW2ltYWdlUmVwIGlzS2luZE9mQ2xhc3M6W05TQml0
bWFwSW1hZ2VSZXAgY2xhc3NdXSB8fCAhTlNFcXVhbFNpemVzKGltYWdlUmVwLnNpemUsIGltYWdl
U2l6ZSkpIHsKKyAgICAgICAgW2ltYWdlIGxvY2tGb2N1c107CisgICAgICAgIGJpdG1hcEltYWdl
ID0gYWRvcHROUyhbW05TQml0bWFwSW1hZ2VSZXAgYWxsb2NdIGluaXRXaXRoRm9jdXNlZFZpZXdS
ZWN0OiooTlNSZWN0ICopJmltYWdlUmVjdF0pOworICAgICAgICBbaW1hZ2UgdW5sb2NrRm9jdXNd
OworICAgICAgICAKKyAgICAgICAgLy8gd2UgbWF5IGhhdmUgdG8gZmxpcCB0aGUgYml0cyB3ZSBq
dXN0IHJlYWQgaWYgdGhlIGltYWdlIHdhcyBmbGlwcGVkIHNpbmNlIGl0IG1lYW5zIHRoZSBjYWNo
ZSB3YXMgYWxzbworICAgICAgICAvLyBhbmQgQ29yZURyYWdTZXRJbWFnZSBjYW4ndCB0YWtlIGEg
dHJhbnNmb3JtIGZvciByZW5kZXJpbmcuCisjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcHVzaAor
I3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XZGVwcmVjYXRlZC1kZWNsYXJhdGlv
bnMiCisgICAgICAgIGZsaXBJbWFnZSA9IGltYWdlLmlzRmxpcHBlZDsKKyNwcmFnbWEgY2xhbmcg
ZGlhZ25vc3RpYyBwb3AKKyAgICB9IGVsc2UgeworICAgICAgICBmbGlwSW1hZ2UgPSBmYWxzZTsK
KyAgICAgICAgYml0bWFwSW1hZ2UgPSAoTlNCaXRtYXBJbWFnZVJlcCAqKWltYWdlUmVwOworICAg
IH0KKyAgICBBU1NFUlQoYml0bWFwSW1hZ2UpOworCisgICAgQ29yZURyYWdJbWFnZVNwZWMgaW1h
Z2VTcGVjOworICAgIGltYWdlU3BlYy52ZXJzaW9uID0ga0NvcmVEcmFnSW1hZ2VTcGVjVmVyc2lv
bk9uZTsKKyAgICBpbWFnZVNwZWMucGl4ZWxzV2lkZSA9IFtiaXRtYXBJbWFnZSBwaXhlbHNXaWRl
XTsKKyAgICBpbWFnZVNwZWMucGl4ZWxzSGlnaCA9IFtiaXRtYXBJbWFnZSBwaXhlbHNIaWdoXTsK
KyAgICBpbWFnZVNwZWMuYml0c1BlclNhbXBsZSA9IFtiaXRtYXBJbWFnZSBiaXRzUGVyU2FtcGxl
XTsKKyAgICBpbWFnZVNwZWMuc2FtcGxlc1BlclBpeGVsID0gW2JpdG1hcEltYWdlIHNhbXBsZXNQ
ZXJQaXhlbF07CisgICAgaW1hZ2VTcGVjLmJpdHNQZXJQaXhlbCA9IFtiaXRtYXBJbWFnZSBiaXRz
UGVyUGl4ZWxdOworICAgIGltYWdlU3BlYy5ieXRlc1BlclJvdyA9IFtiaXRtYXBJbWFnZSBieXRl
c1BlclJvd107CisgICAgaW1hZ2VTcGVjLmlzUGxhbmFyID0gW2JpdG1hcEltYWdlIGlzUGxhbmFy
XTsKKyAgICBpbWFnZVNwZWMuaGFzQWxwaGEgPSBbYml0bWFwSW1hZ2UgaGFzQWxwaGFdOworICAg
IFtiaXRtYXBJbWFnZSBnZXRCaXRtYXBEYXRhUGxhbmVzOih1bnNpZ25lZCBjaGFyKiopaW1hZ2VT
cGVjLmRhdGFdOworCisgICAgLy8gaWYgaW1hZ2Ugd2FzIGZsaXBwZWQsIHdlIGhhdmUgYW4gdXBz
aWRlIGRvd24gYml0bWFwIHNpbmNlIHRoZSBjYWNoZSBpcyByZW5kZXJlZCBmbGlwcGVkCisgICAg
aWYgKGZsaXBJbWFnZSkKKyAgICAgICAgZmxpcEltYWdlU3BlYygmaW1hZ2VTcGVjKTsKKworICAg
IENHU1JlZ2lvbk9iaiBpbWFnZVNoYXBlOworICAgIE9TU3RhdHVzIGVycm9yID0gQ0dTTmV3UmVn
aW9uV2l0aFJlY3QoJmltYWdlUmVjdCwgJmltYWdlU2hhcGUpOworICAgIEFTU0VSVChlcnJvciA9
PSBrQ0dFcnJvclN1Y2Nlc3MpOworICAgIGlmIChlcnJvciAhPSBrQ0dFcnJvclN1Y2Nlc3MpCisg
ICAgICAgIHJldHVybjsKKworICAgIC8vIG1ha2Ugc3VyZSBpbWFnZSBoYXMgaW50ZWdlciBvZmZz
ZXQKKyAgICBDR1BvaW50IGltYWdlT2Zmc2V0ID0gey1vZmZzZXQueCwgLShpbWFnZVNpemUuaGVp
Z2h0IC0gb2Zmc2V0LnkpfTsKKyAgICBpbWFnZU9mZnNldC54ID0gZmxvb3IoaW1hZ2VPZmZzZXQu
eCArIDAuNSk7CisgICAgaW1hZ2VPZmZzZXQueSA9IGZsb29yKGltYWdlT2Zmc2V0LnkgKyAwLjUp
OworCisgICAgZXJyb3IgPSBDb3JlRHJhZ1NldEltYWdlKENvcmVEcmFnR2V0Q3VycmVudERyYWco
KSwgaW1hZ2VPZmZzZXQsICZpbWFnZVNwZWMsIGltYWdlU2hhcGUsIDEuMCk7CisgICAgQ0dTUmVs
ZWFzZVJlZ2lvbihpbWFnZVNoYXBlKTsKKyAgICBBU1NFUlQoZXJyb3IgPT0ga0NHRXJyb3JTdWNj
ZXNzKTsKK30KKwogdm9pZCBQYXN0ZWJvYXJkOjpzZXREcmFnSW1hZ2UoRHJhZ0ltYWdlIGltYWdl
LCBjb25zdCBJbnRQb2ludCYgbG9jYXRpb24pCiB7CiAgICAgLy8gRG9uJ3QgYWxsb3cgc2V0dGlu
ZyB0aGUgZHJhZyBpbWFnZSBpZiBzb21lb25lIGtlcHQgYSBwYXN0ZWJvYXJkIGFuZCBpcyB0cnlp
bmcgdG8gc2V0IHRoZSBpbWFnZSB0b28gbGF0ZS4KQEAgLTY3Nyw3ICs3NTMsNyBAQCB2b2lkIFBh
c3RlYm9hcmQ6OnNldERyYWdJbWFnZShEcmFnSW1hZ2UgaW1hZ2UsIGNvbnN0IEludFBvaW50JiBs
b2NhdGlvbikKIAogICAgIC8vIERhc2hib2FyZCB3YW50cyB0byBiZSBhYmxlIHRvIHNldCB0aGUg
ZHJhZyBpbWFnZSBkdXJpbmcgZHJhZ2dpbmcsIGJ1dCBDb2NvYSBkb2VzIG5vdCBhbGxvdyB0aGlz
LgogICAgIC8vIEluc3RlYWQgd2UgbXVzdCBkcm9wIGRvd24gdG8gdGhlIENvcmVHcmFwaGljcyBB
UEkuCi0gICAgd2tTZXREcmFnSW1hZ2UoaW1hZ2UuZ2V0KCkuZ2V0KCksIGxvY2F0aW9uKTsKKyAg
ICBzZXREcmFnSW1hZ2VJbXBsKGltYWdlLmdldCgpLmdldCgpLCBsb2NhdGlvbik7CiAKICAgICAv
LyBIYWNrOiBXZSBtdXN0IHBvc3QgYW4gZXZlbnQgdG8gd2FrZSB1cCB0aGUgTlNEcmFnTWFuYWdl
ciwgd2hpY2ggaXMgc2l0dGluZyBpbiBhIG5leHRFdmVudCBjYWxsCiAgICAgLy8gdXAgdGhlIHN0
YWNrIGZyb20gdXMgYmVjYXVzZSB0aGUgQ29yZUZvdW5kYXRpb24gZHJhZyBtYW5hZ2VyIGRvZXMg
bm90IHVzZSB0aGUgcnVuIGxvb3AgYnkgaXRzZWxmLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtRXZlbnRGYWN0b3J5TWFjLm1tIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtRXZlbnRGYWN0b3J5TWFjLm1tCmluZGV4IDc3YjljYjk2
MzViYmZiMGJjMmM1NDU0MGJmZjY0MDUxNzFiN2M1NTkuLjkyOWFhNTc1OGYzZTFkYmNjYzU5MDAx
ODkyOTdlYjE1ZTU3MDExODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21h
Yy9QbGF0Zm9ybUV2ZW50RmFjdG9yeU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tYWMvUGxhdGZvcm1FdmVudEZhY3RvcnlNYWMubW0KQEAgLTY3Niw3ICs2NzYsNyBAQCBzdGF0
aWMgaW50IHR5cGVGb3JFdmVudChOU0V2ZW50ICpldmVudCkKIHsKICAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8aW50PihbTlNNZW51IG1lbnVUeXBlRm9yRXZlbnQ6ZXZlbnRdKTsKIH0KLSAgICAKKwog
dm9pZCBnZXRXaGVlbEV2ZW50RGVsdGFzKE5TRXZlbnQgKmV2ZW50LCBmbG9hdCYgZGVsdGFYLCBm
bG9hdCYgZGVsdGFZLCBCT09MJiBjb250aW51b3VzKQogewogICAgIEFTU0VSVChldmVudCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsYmFyVGhlbWVNYWMu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsYmFyVGhlbWVNYWMubW0KaW5k
ZXggYzRjMjg3NzY4MzU3NDk2YWViMjg4ZmE0MWYwZGQ5NWQyZDdjYzI4OC4uNmQwNWI4NmM2M2Qw
NWY3YjZkMTQ3MzE3ZWZkMjdmZjM0MTU4MzE5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL1Njcm9sbGJhclRoZW1lTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21hYy9TY3JvbGxiYXJUaGVtZU1hYy5tbQpAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1
ZGUgIlNjcm9sbFZpZXcuaCIKICNpbmNsdWRlICJXZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmgiCiAj
aW5jbHVkZSA8Q2FyYm9uL0NhcmJvbi5oPgorI2luY2x1ZGUgPHBhbC9zcGkvY2cvQ29yZUdyYXBo
aWNzU1BJLmg+CiAjaW5jbHVkZSA8cGFsL3NwaS9tYWMvTlNTY3JvbGxlckltcFNQSS5oPgogI2lu
Y2x1ZGUgPHd0Zi9CbG9ja09iakNFeGNlcHRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAu
aD4KQEAgLTU3Myw3ICs1NzQsNyBAQCBzdGF0aWMgUmV0YWluUHRyPENHQ29sb3JSZWY+IGxpbmVu
QmFja2dyb3VuZENvbG9yKCkKICAgICBpZiAoIWNnSW1hZ2UpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogCi0gICAgUmV0YWluUHRyPENHUGF0dGVyblJlZj4gcGF0dGVybiA9IGFkb3B0Q0Yod2tD
R1BhdHRlcm5DcmVhdGVXaXRoSW1hZ2VBbmRUcmFuc2Zvcm0oY2dJbWFnZSwgQ0dBZmZpbmVUcmFu
c2Zvcm1JZGVudGl0eSwgd2tQYXR0ZXJuVGlsaW5nTm9EaXN0b3J0aW9uKSk7CisgICAgUmV0YWlu
UHRyPENHUGF0dGVyblJlZj4gcGF0dGVybiA9IGFkb3B0Q0YoQ0dQYXR0ZXJuQ3JlYXRlV2l0aElt
YWdlMihjZ0ltYWdlLCBDR0FmZmluZVRyYW5zZm9ybUlkZW50aXR5LCBrQ0dQYXR0ZXJuVGlsaW5n
Tm9EaXN0b3J0aW9uKSk7CiAgICAgUmV0YWluUHRyPENHQ29sb3JTcGFjZVJlZj4gY29sb3JTcGFj
ZSA9IGFkb3B0Q0YoQ0dDb2xvclNwYWNlQ3JlYXRlUGF0dGVybigwKSk7CiAKICAgICBjb25zdCBD
R0Zsb2F0IGFscGhhID0gMS4wOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL1RoZW1lTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1RoZW1lTWFjLm1t
CmluZGV4IDkwZjEwNDFlZmY3ZjBjNjQ3ZDZmODM5MWMwMjdmNTNkMWFiNDQ3MTQuLjhhMTkyNjVj
ZjVkODJmMjAyNWZmNTAxZWVlMmVmOTUxZjg0Mzc4NTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21hYy9UaGVtZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tYWMvVGhlbWVNYWMubW0KQEAgLTM2LDYgKzM2LDcgQEAKICNpbXBvcnQgIldlYkNvcmVTeXN0
ZW1JbnRlcmZhY2UuaCIKICNpbXBvcnQgPENhcmJvbi9DYXJib24uaD4KICNpbXBvcnQgPHBhbC9z
cGkvY29jb2EvTlNCdXR0b25DZWxsU1BJLmg+CisjaW1wb3J0IDxwYWwvc3BpL21hYy9OU0dyYXBo
aWNzU1BJLmg+CiAjaW1wb3J0IDx3dGYvQmxvY2tPYmpDRXhjZXB0aW9ucy5oPgogI2ltcG9ydCA8
d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW1wb3J0IDx3dGYvU3RkTGliRXh0cmFzLmg+CkBAIC0z
NDksOSArMzUwLDMyIEBAIHN0YXRpYyBOU0J1dHRvbkNlbGwgKnNoYXJlZENoZWNrYm94Q2VsbChj
b25zdCBDb250cm9sU3RhdGVzJiBzdGF0ZXMsIGNvbnN0IEludFNpCiAgICAgcmV0dXJuIGNoZWNr
Ym94Q2VsbDsKIH0KIAorc3RhdGljIGJvb2wgZHJhd0NlbGxGb2N1c1JpbmdXaXRoRnJhbWVBdFRp
bWUoTlNDZWxsICpjZWxsLCBOU1JlY3QgY2VsbEZyYW1lLCBOU1ZpZXcgKmNvbnRyb2xWaWV3LCBO
U1RpbWVJbnRlcnZhbCB0aW1lT2Zmc2V0KQoreworICAgIENHQ29udGV4dFJlZiBjZ0NvbnRleHQg
PSAoQ0dDb250ZXh0UmVmKVtbTlNHcmFwaGljc0NvbnRleHQgY3VycmVudENvbnRleHRdIGdyYXBo
aWNzUG9ydF07CisgICAgQ0dDb250ZXh0U2F2ZUdTdGF0ZShjZ0NvbnRleHQpOworCisgICAgQ0dG
b2N1c1JpbmdTdHlsZSBmb2N1c1JpbmdTdHlsZTsKKyAgICBib29sIG5lZWRzUmVwYWludCA9IE5T
SW5pdGlhbGl6ZUNHRm9jdXNSaW5nU3R5bGVGb3JUaW1lKE5TRm9jdXNSaW5nT25seSwgJmZvY3Vz
UmluZ1N0eWxlLCB0aW1lT2Zmc2V0KTsKKyAgICAvLyBXZSB3YW50IHRvIHJlc3BlY3QgdGhlIENH
Q29udGV4dCBjbGlwcGluZyBhbmQgYWxzbyBub3Qgb3ZlcnBhaW50IGFueQorICAgIC8vIGV4aXN0
aW5nIGZvY3VzIHJpbmcuIFRoZSB3YXkgdG8gZG8gdGhpcyBpcyBzZXQgYWNjdW11bGF0ZSB0bwor
ICAgIC8vIC0xLiBBY2NvcmRpbmcgdG8gQ29yZUdyYXBoaWNzLCB0aGUgcmVhc29uaW5nIGZvciB0
aGlzIGJlaGF2aW9yIGhhcyBiZWVuCisgICAgLy8gbG9zdCBpbiB0aW1lLgorICAgIGZvY3VzUmlu
Z1N0eWxlLmFjY3VtdWxhdGUgPSAtMTsKKyAgICBhdXRvIHN0eWxlID0gYWRvcHRDRihDR1N0eWxl
Q3JlYXRlRm9jdXNSaW5nV2l0aENvbG9yKCZmb2N1c1JpbmdTdHlsZSwgR3JhcGhpY3NDb250ZXh0
Ojpmb2N1c1JpbmdDb2xvcigpKSk7CisgICAgQ0dDb250ZXh0U2V0U3R5bGUoY2dDb250ZXh0LCBz
dHlsZS5nZXQoKSk7CisKKyAgICBDR0NvbnRleHRCZWdpblRyYW5zcGFyZW5jeUxheWVyV2l0aFJl
Y3QoY2dDb250ZXh0LCBOU1JlY3RUb0NHUmVjdChjZWxsRnJhbWUpLCAwKTsKKyAgICBbY2VsbCBk
cmF3Rm9jdXNSaW5nTWFza1dpdGhGcmFtZTpjZWxsRnJhbWUgaW5WaWV3OmNvbnRyb2xWaWV3XTsK
KyAgICBDR0NvbnRleHRFbmRUcmFuc3BhcmVuY3lMYXllcihjZ0NvbnRleHQpOworICAgIENHQ29u
dGV4dFJlc3RvcmVHU3RhdGUoY2dDb250ZXh0KTsKKworICAgIHJldHVybiBuZWVkc1JlcGFpbnQ7
Cit9CisKIHN0YXRpYyBib29sIGRyYXdDZWxsRm9jdXNSaW5nKE5TQ2VsbCAqY2VsbCwgTlNSZWN0
IGNlbGxGcmFtZSwgTlNWaWV3ICpjb250cm9sVmlldykKIHsKLSAgICB3a0RyYXdDZWxsRm9jdXNS
aW5nV2l0aEZyYW1lQXRUaW1lKGNlbGwsIGNlbGxGcmFtZSwgY29udHJvbFZpZXcsIHN0ZDo6bnVt
ZXJpY19saW1pdHM8ZG91YmxlPjo6bWF4KCkpOworICAgIGRyYXdDZWxsRm9jdXNSaW5nV2l0aEZy
YW1lQXRUaW1lKGNlbGwsIGNlbGxGcmFtZSwgY29udHJvbFZpZXcsIHN0ZDo6bnVtZXJpY19saW1p
dHM8ZG91YmxlPjo6bWF4KCkpOwogICAgIHJldHVybiBmYWxzZTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmgKaW5kZXgg
OGExMjQ4MjdjMDQwOWQ2NjNmNzgxZGYyN2I0ZTQzYmNmYWZiZDIyNy4uNjZjMDBiNDg2MzIyZjFm
ODQyYjc3YjNlZDZiYzU5MThjOGY2ZmQ2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWFjL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tYWMvV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oCkBAIC0xMjYsMTQgKzEyNiw3IEBA
IHR5cGVkZWYgZW51bSB7CiAgICAgd2tQYXR0ZXJuVGlsaW5nQ29uc3RhbnRTcGFjaW5nCiB9IHdr
UGF0dGVyblRpbGluZzsKICNpZiAhUExBVEZPUk0oSU9TKQotZXh0ZXJuIGJvb2wgKCp3a0NHQ29u
dGV4dERyYXdzV2l0aENvcnJlY3RTaGFkb3dPZmZzZXRzKShDR0NvbnRleHRSZWYpOwotI2VuZGlm
Ci1leHRlcm4gQ0dQYXR0ZXJuUmVmICgqd2tDR1BhdHRlcm5DcmVhdGVXaXRoSW1hZ2VBbmRUcmFu
c2Zvcm0pKENHSW1hZ2VSZWYsIENHQWZmaW5lVHJhbnNmb3JtLCBpbnQpOwotI2lmICFQTEFURk9S
TShJT1MpCiBleHRlcm4gdm9pZCAoKndrRHJhd0JlemVsZWRUZXh0QXJlYSkoTlNSZWN0LCBCT09M
IGVuYWJsZWQpOwotZXh0ZXJuIHZvaWQgKCp3a0RyYXdGb2N1c1JpbmcpKENHQ29udGV4dFJlZiwg
Q0dDb2xvclJlZiwgaW50KTsKLWV4dGVybiBib29sICgqd2tEcmF3Rm9jdXNSaW5nQXRUaW1lKShD
R0NvbnRleHRSZWYsIE5TVGltZUludGVydmFsIHRpbWUpOwotZXh0ZXJuIGJvb2wgKCp3a0RyYXdD
ZWxsRm9jdXNSaW5nV2l0aEZyYW1lQXRUaW1lKShOU0NlbGwgKmNlbGwsIE5TUmVjdCBjZWxsRnJh
bWUsIE5TVmlldyAqY29udHJvbFZpZXcsIE5TVGltZUludGVydmFsIHRpbWUpOwogZXh0ZXJuIHZv
aWQgKCp3a0RyYXdNZWRpYVNsaWRlclRyYWNrKShDR0NvbnRleHRSZWYgY29udGV4dCwgQ0dSZWN0
IHJlY3QsIGZsb2F0IHRpbWVMb2FkZWQsIGZsb2F0IGN1cnJlbnRUaW1lLAogICAgIGZsb2F0IGR1
cmF0aW9uLCB1bnNpZ25lZCBzdGF0ZSk7CiBleHRlcm4gdm9pZCAoKndrRHJhd01lZGlhVUlQYXJ0
KShpbnQgcGFydCwgQ0dDb250ZXh0UmVmIGNvbnRleHQsIENHUmVjdCByZWN0LCB1bnNpZ25lZCBz
dGF0ZSk7CkBAIC0xNTYsOSArMTQ5LDYgQEAgdHlwZWRlZiBlbnVtIHsKIH0gd2tNZWRpYVVJQ29u
dHJvbFR5cGU7CiBleHRlcm4gTlNDb250cm9sICooKndrQ3JlYXRlTWVkaWFVSUNvbnRyb2wpKGlu
dCk7CiAKLWV4dGVybiB2b2lkICgqd2tXaW5kb3dTZXRBbHBoYSkoTlNXaW5kb3cgKiwgZmxvYXQp
OwotZXh0ZXJuIHZvaWQgKCp3a1dpbmRvd1NldFNjYWxlZEZyYW1lKShOU1dpbmRvdyAqLCBOU1Jl
Y3QsIE5TUmVjdCk7Ci0KIGV4dGVybiB1bnNpZ25lZCAoKndrUVRJbmNsdWRlT25seU1vZGVybk1l
ZGlhRmlsZVR5cGVzKSh2b2lkKTsKIGV4dGVybiB2b2lkICgqd2tRVE1vdmllRGlzYWJsZUNvbXBv
bmVudCkodWludDMyX3RbNV0pOwogZXh0ZXJuIGZsb2F0ICgqd2tRVE1vdmllTWF4VGltZUxvYWRl
ZCkoUVRNb3ZpZSopOwpAQCAtMTcyLDkgKzE2Miw3IEBAIGV4dGVybiBOU0FycmF5ICooKndrUVRH
ZXRTaXRlc0luTWVkaWFEb3dubG9hZENhY2hlKSgpOwogZXh0ZXJuIHZvaWQgKCp3a1FUQ2xlYXJN
ZWRpYURvd25sb2FkQ2FjaGVGb3JTaXRlKShOU1N0cmluZyAqc2l0ZSk7CiBleHRlcm4gdm9pZCAo
KndrUVRDbGVhck1lZGlhRG93bmxvYWRDYWNoZSkoKTsKIGV4dGVybiB2b2lkICgqd2tTZXRDb29r
aWVTdG9yYWdlUHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCkoQk9PTCk7Ci1leHRlcm4gdm9pZCAoKndr
U2V0RHJhZ0ltYWdlKShOU0ltYWdlKiwgTlNQb2ludCBvZmZzZXQpOwogI2VuZGlmCi1leHRlcm4g
Ym9vbCAoKndrQ0dDb250ZXh0SXNQREZDb250ZXh0KShDR0NvbnRleHRSZWYpOwogZXh0ZXJuIHZv
aWQgKCp3a1NldENPTk5FQ1RQcm94eUZvclN0cmVhbSkoQ0ZSZWFkU3RyZWFtUmVmLCBDRlN0cmlu
Z1JlZiBwcm94eUhvc3QsIENGTnVtYmVyUmVmIHByb3h5UG9ydCk7CiBleHRlcm4gdm9pZCAoKndr
U2V0Q09OTkVDVFByb3h5QXV0aG9yaXphdGlvbkZvclN0cmVhbSkoQ0ZSZWFkU3RyZWFtUmVmLCBD
RlN0cmluZ1JlZiBwcm94eUF1dGhvcml6YXRpb25TdHJpbmcpOwogZXh0ZXJuIENGSFRUUE1lc3Nh
Z2VSZWYgKCp3a0NvcHlDT05ORUNUUHJveHlSZXNwb25zZSkoQ0ZSZWFkU3RyZWFtUmVmLCBDRlVS
TFJlZiByZXNwb25zZVVSTCwgQ0ZTdHJpbmdSZWYgcHJveHlIb3N0LCBDRk51bWJlclJlZiBwcm94
eVBvcnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVT
eXN0ZW1JbnRlcmZhY2UubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZVN5
c3RlbUludGVyZmFjZS5tbQppbmRleCAyNzJiNTU1N2UyMzlmM2MxZTFkNDVhOTRmYjdiMWU0NTM0
NjE3ZGYyLi4xM2I4NDk1YTkwZmVkM2IyMDIzZDUyM2YwYzU0YjE3ZmUyMGNlMWI3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZVN5c3RlbUludGVyZmFjZS5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZVN5c3RlbUludGVyZmFj
ZS5tbQpAQCAtMzEsMTIgKzMxLDcgQEAKICNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5o
PgogCiB2b2lkICgqd2tDQUxheWVyRW51bWVyYXRlUmVjdHNCZWluZ0RyYXduV2l0aEJsb2NrKShD
QUxheWVyICosIENHQ29udGV4dFJlZiBjb250ZXh0LCB2b2lkICheYmxvY2spKENHUmVjdCByZWN0
KSk7Ci1ib29sICgqd2tDR0NvbnRleHREcmF3c1dpdGhDb3JyZWN0U2hhZG93T2Zmc2V0cykoQ0dD
b250ZXh0UmVmKTsKLUNHUGF0dGVyblJlZiAoKndrQ0dQYXR0ZXJuQ3JlYXRlV2l0aEltYWdlQW5k
VHJhbnNmb3JtKShDR0ltYWdlUmVmLCBDR0FmZmluZVRyYW5zZm9ybSwgaW50KTsKIHZvaWQgKCp3
a0RyYXdCZXplbGVkVGV4dEFyZWEpKE5TUmVjdCwgQk9PTCBlbmFibGVkKTsKLXZvaWQgKCp3a0Ry
YXdGb2N1c1JpbmcpKENHQ29udGV4dFJlZiwgQ0dDb2xvclJlZiwgaW50KTsKLWJvb2wgKCp3a0Ry
YXdGb2N1c1JpbmdBdFRpbWUpKENHQ29udGV4dFJlZiwgTlNUaW1lSW50ZXJ2YWwpOwotYm9vbCAo
KndrRHJhd0NlbGxGb2N1c1JpbmdXaXRoRnJhbWVBdFRpbWUpKE5TQ2VsbCosIE5TUmVjdCwgTlNW
aWV3KiwgTlNUaW1lSW50ZXJ2YWwpOwogdm9pZCAoKndrRHJhd01lZGlhU2xpZGVyVHJhY2spKENH
Q29udGV4dFJlZiBjb250ZXh0LCBDR1JlY3QgcmVjdCwgZmxvYXQgdGltZUxvYWRlZCwgZmxvYXQg
Y3VycmVudFRpbWUsCiAgICAgZmxvYXQgZHVyYXRpb24sIHVuc2lnbmVkIHN0YXRlKTsKIEJPT0wg
KCp3a0hpdFRlc3RNZWRpYVVJUGFydCkoaW50IHBhcnQsIENHUmVjdCBib3VuZHMsIENHUG9pbnQg
cG9pbnQpOwpAQCAtNDQsOCArMzksNiBAQCB2b2lkICgqd2tEcmF3TWVkaWFVSVBhcnQpKGludCBw
YXJ0LCBDR0NvbnRleHRSZWYgY29udGV4dCwgQ0dSZWN0IHJlY3QsIHVuc2lnbmVkCiB2b2lkICgq
d2tNZWFzdXJlTWVkaWFVSVBhcnQpKGludCBwYXJ0LCBDR1JlY3QgKmJvdW5kcywgQ0dTaXplICpu
YXR1cmFsU2l6ZSk7CiBOU1ZpZXcgKigqd2tDcmVhdGVNZWRpYVVJQmFja2dyb3VuZFZpZXcpKHZv
aWQpOwogTlNDb250cm9sICooKndrQ3JlYXRlTWVkaWFVSUNvbnRyb2wpKGludCk7Ci12b2lkICgq
d2tXaW5kb3dTZXRBbHBoYSkoTlNXaW5kb3cgKiwgZmxvYXQpOwotdm9pZCAoKndrV2luZG93U2V0
U2NhbGVkRnJhbWUpKE5TV2luZG93ICosIE5TUmVjdCwgTlNSZWN0KTsKIE5TVGltZUludGVydmFs
ICgqd2tHZXROU1VSTFJlc3BvbnNlQ2FsY3VsYXRlZEV4cGlyYXRpb24pKE5TVVJMUmVzcG9uc2Ug
KnJlc3BvbnNlKTsKIEJPT0wgKCp3a0dldE5TVVJMUmVzcG9uc2VNdXN0UmV2YWxpZGF0ZSkoTlNV
UkxSZXNwb25zZSAqcmVzcG9uc2UpOwogVUludDggKCp3a0dldE5TRXZlbnRLZXlDaGFyKShOU0V2
ZW50ICopOwpAQCAtNjMsOCArNTYsNiBAQCBOU0FycmF5ICooKndrUVRHZXRTaXRlc0luTWVkaWFE
b3dubG9hZENhY2hlKSgpOwogdm9pZCAoKndrUVRDbGVhck1lZGlhRG93bmxvYWRDYWNoZUZvclNp
dGUpKE5TU3RyaW5nICpzaXRlKTsKIHZvaWQgKCp3a1FUQ2xlYXJNZWRpYURvd25sb2FkQ2FjaGUp
KCk7CiAKLXZvaWQgKCp3a1NldERyYWdJbWFnZSkoTlNJbWFnZSosIE5TUG9pbnQgb2Zmc2V0KTsK
LWJvb2wgKCp3a0NHQ29udGV4dElzUERGQ29udGV4dCkoQ0dDb250ZXh0UmVmKTsKIHZvaWQgKCp3
a1NldENPTk5FQ1RQcm94eUZvclN0cmVhbSkoQ0ZSZWFkU3RyZWFtUmVmLCBDRlN0cmluZ1JlZiBw
cm94eUhvc3QsIENGTnVtYmVyUmVmIHByb3h5UG9ydCk7CiB2b2lkICgqd2tTZXRDT05ORUNUUHJv
eHlBdXRob3JpemF0aW9uRm9yU3RyZWFtKShDRlJlYWRTdHJlYW1SZWYsIENGU3RyaW5nUmVmIHBy
b3h5QXV0aG9yaXphdGlvblN0cmluZyk7CiBDRkhUVFBNZXNzYWdlUmVmICgqd2tDb3B5Q09OTkVD
VFByb3h5UmVzcG9uc2UpKENGUmVhZFN0cmVhbVJlZiwgQ0ZVUkxSZWYgcmVzcG9uc2VVUkwsIENG
U3RyaW5nUmVmIHByb3h5SG9zdCwgQ0ZOdW1iZXJSZWYgcHJveHlQb3J0KTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJXaW5kb3dBbmltYXRpb24ubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViV2luZG93QW5pbWF0aW9uLm1tCmluZGV4IDhhYmM4
NDBiNzNjYzY0NWM4YWM0MDZkZWFmYWU5NDIyY2RjMzUzZTIuLmNhNTU5ZGYwYmNhOWI2MjRkZTJm
YzA0MmEyZjNhMTU2Yzg3MGE4MmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21hYy9XZWJXaW5kb3dBbmltYXRpb24ubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL1dlYldpbmRvd0FuaW1hdGlvbi5tbQpAQCAtMjksNiArMjksNyBAQAogCiAjaW1wb3J0ICJG
bG9hdENvbnZlcnNpb24uaCIKICNpbXBvcnQgIldlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaCIKKyNp
bXBvcnQgPHBhbC9zcGkvY2cvQ29yZUdyYXBoaWNzU1BJLmg+CiAjaW1wb3J0IDx3dGYvQXNzZXJ0
aW9ucy5oPgogI2ltcG9ydCA8d3RmL01hdGhFeHRyYXMuaD4KIApAQCAtMTA5LDYgKzExMCw1OSBA
QCAtIChOU1JlY3QpY3VycmVudEZyYW1lCiAgICAgcmV0dXJuIHNjYWxlZFJlY3QoX2ZpbmFsRnJh
bWUsIF9pbml0aWFsRnJhbWUsIFtzZWxmIGN1cnJlbnRWYWx1ZV0pOwogfQogCitzdGF0aWMgdm9p
ZCBmbGlwUmVjdChOU1JlY3QgKnJlY3QpCit7CisgICAgcmVjdC0+b3JpZ2luLnkgPSBOU01heFko
WyhOU1NjcmVlbiAqKVtbTlNTY3JlZW4gc2NyZWVuc10gb2JqZWN0QXRJbmRleDowXSBmcmFtZV0p
IC0gTlNNYXhZKCpyZWN0KTsKK30KKworc3RhdGljIENHU0Nvbm5lY3Rpb25JRCBtYWluV2luZG93
U2VydmVyQ29ubmVjdGlvbklEKCkKK3sKKyAgICBzdGF0aWMgQ0dTQ29ubmVjdGlvbklEIGNnc0lk
OworICAgIGlmICghY2dzSWQpCisgICAgICAgIGNnc0lkID0gQ0dTTWFpbkNvbm5lY3Rpb25JRCgp
OworICAgIHJldHVybiBjZ3NJZDsKK30KKworc3RhdGljIHZvaWQgc2V0U2NhbGVkRnJhbWVGb3JX
aW5kb3coTlNXaW5kb3cgKndpbmRvdywgTlNSZWN0IHNjYWxlRnJhbWUsIE5TUmVjdCBub25TY2Fs
ZWRGcmFtZSkKK3sKKyAgICBpZiAoTlNFcXVhbFJlY3RzKHNjYWxlRnJhbWUsIG5vblNjYWxlZEZy
YW1lKSkgeworICAgICAgICBDR1NTZXRXaW5kb3dXYXJwKG1haW5XaW5kb3dTZXJ2ZXJDb25uZWN0
aW9uSUQoKSwgW3dpbmRvdyB3aW5kb3dOdW1iZXJdLCAwLCAwLCBOVUxMKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKyAgICAKKyAgICBmbG9hdCBtZXNoWzE2XTsKKyAgICAKKyAgICBmbGlwUmVj
dCgmc2NhbGVGcmFtZSk7CisgICAgZmxpcFJlY3QoJm5vblNjYWxlZEZyYW1lKTsKKyAgICAKKyAg
ICAvLyB0b3AtbGVmdCBwb2ludCAodG8gYW5kIGZyb20pCisgICAgbWVzaFswXSA9IDA7CisgICAg
bWVzaFsxXSA9IDA7CisgICAgbWVzaFsyXSA9IE5TTWluWChzY2FsZUZyYW1lKTsKKyAgICBtZXNo
WzNdID0gTlNNaW5ZKHNjYWxlRnJhbWUpOworICAgIAorICAgIC8vIHRvcC1yaWdodCBwb2ludCAo
dG8gYW5kIGZyb20pCisgICAgbWVzaFs0XSA9IE5TV2lkdGgobm9uU2NhbGVkRnJhbWUpOworICAg
IG1lc2hbNV0gPSAwOworICAgIG1lc2hbNl0gPSBOU01heFgoc2NhbGVGcmFtZSk7CisgICAgbWVz
aFs3XSA9IE5TTWluWShzY2FsZUZyYW1lKTsKKyAgICAKKyAgICAvLyBib3R0b20tbGVmdCAodG8g
YW5kIGZyb20pCisgICAgbWVzaFs4XSA9IDA7CisgICAgbWVzaFs5XSA9IE5TSGVpZ2h0KG5vblNj
YWxlZEZyYW1lKTsKKyAgICBtZXNoWzEwXSA9IE5TTWluWChzY2FsZUZyYW1lKTsKKyAgICBtZXNo
WzExXSA9IE5TTWF4WShzY2FsZUZyYW1lKTsKKyAgICAKKyAgICAvLyBib3R0b20tcmlnaHQgKHRv
IGFuZCBmcm9tKQorICAgIG1lc2hbMTJdID0gTlNXaWR0aChub25TY2FsZWRGcmFtZSk7CisgICAg
bWVzaFsxM10gPSBOU0hlaWdodChub25TY2FsZWRGcmFtZSk7CisgICAgbWVzaFsxNF0gPSBOU01h
eFgoc2NhbGVGcmFtZSk7CisgICAgbWVzaFsxNV0gPSBOU01heFkoc2NhbGVGcmFtZSk7CisgICAg
CisgICAgLy8gQXBwbHkgdGhlIHdhcnAuCisgICAgQ0dTU2V0V2luZG93V2FycChtYWluV2luZG93
U2VydmVyQ29ubmVjdGlvbklEKCksIFt3aW5kb3cgd2luZG93TnVtYmVyXSwgMiwgMiwgbWVzaCk7
Cit9CisKIC0gKHZvaWQpc2V0Q3VycmVudFByb2dyZXNzOihOU0FuaW1hdGlvblByb2dyZXNzKXBy
b2dyZXNzCiB7CiAgICAgaWYgKCFfd2luZG93KQpAQCAtMTE3LDcgKzE3MSw3IEBAIC0gKHZvaWQp
c2V0Q3VycmVudFByb2dyZXNzOihOU0FuaW1hdGlvblByb2dyZXNzKXByb2dyZXNzCiAgICAgW3N1
cGVyIHNldEN1cnJlbnRQcm9ncmVzczpwcm9ncmVzc107CiAKICAgICBOU1JlY3QgY3VycmVudFJl
Y3QgPSBbc2VsZiBjdXJyZW50RnJhbWVdOwotICAgIHdrV2luZG93U2V0U2NhbGVkRnJhbWUoX3dp
bmRvdywgY3VycmVudFJlY3QsIF9yZWFsRnJhbWUpOworICAgIHNldFNjYWxlZEZyYW1lRm9yV2lu
ZG93KF93aW5kb3csIGN1cnJlbnRSZWN0LCBfcmVhbEZyYW1lKTsKICAgICBbX3N1YkFuaW1hdGlv
biBzZXRDdXJyZW50UHJvZ3Jlc3M6cHJvZ3Jlc3NdOwogfQogCkBAIC0yMTEsNyArMjY1LDcgQEAg
LSAodm9pZClzZXRDdXJyZW50UHJvZ3Jlc3M6KE5TQW5pbWF0aW9uUHJvZ3Jlc3MpcHJvZ3Jlc3MK
ICAgICBBU1NFUlQoX3dpbmRvdyk7CiAgICAgW3N1cGVyIHNldEN1cnJlbnRQcm9ncmVzczpwcm9n
cmVzc107CiAKLSAgICB3a1dpbmRvd1NldEFscGhhKF93aW5kb3csIFtzZWxmIGN1cnJlbnRBbHBo
YV0pOworICAgIENHU1NldFdpbmRvd0FscGhhKG1haW5XaW5kb3dTZXJ2ZXJDb25uZWN0aW9uSUQo
KSwgX3dpbmRvdy53aW5kb3dOdW1iZXIsIFtzZWxmIGN1cnJlbnRBbHBoYV0pOwogfQogCiAtICh2
b2lkKXNldFdpbmRvdzooTlNXaW5kb3cqKXdpbmRvdwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9QbHVnaW5Qcm9jZXNzL21hYy9QbHVnaW5Qcm9jZXNzTWFjLm1tIGIvU291cmNlL1dlYktpdC9Q
bHVnaW5Qcm9jZXNzL21hYy9QbHVnaW5Qcm9jZXNzTWFjLm1tCmluZGV4IGQ4NjAzNzg2N2EyZjFh
ZmEyNWVjNTI2MzA2ZTE0ZDk2NGNkNzdlNmQuLmE5NjZkMTc2MzNhNGI5ZTE0YzQwZGE5NjMwYmU0
NmRhYmJkZTlmZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9tYWMv
UGx1Z2luUHJvY2Vzc01hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvbWFj
L1BsdWdpblByb2Nlc3NNYWMubW0KQEAgLTUzMSw3ICs1MzEsMTAgQEAgdm9pZCBQbHVnaW5Qcm9j
ZXNzOjpwbGF0Zm9ybUluaXRpYWxpemVQcm9jZXNzKGNvbnN0IENoaWxkUHJvY2Vzc0luaXRpYWxp
emF0aW9uUGEKIAogICAgIC8vIEZJWE1FOiBJdCB3b3VsZCBiZSBiZXR0ZXIgdG8gcHJveHkgU2V0
Q3Vyc29yIGNhbGxzIG92ZXIgdG8gdGhlIFVJIHByb2Nlc3MgaW5zdGVhZCBvZgogICAgIC8vIGFs
bG93aW5nIHBsdWctaW5zIHRvIGNoYW5nZSB0aGUgbW91c2UgY3Vyc29yIGF0IGFueSB0aW1lLgot
ICAgIFdLRW5hYmxlU2V0dGluZ0N1cnNvcldoZW5JbkJhY2tncm91bmQoKTsKKyAgICAvLyBGSVhN
RTogU2V0c0N1cnNvckluQmFja2dyb3VuZCBjb25uZWN0aW9uIHByb3BlcnR5IGlzIGRlcHJlY2F0
ZWQgaW4gZmF2b3Igb2Yga0NHU1NldHNDdXJzb3JJbkJhY2tncm91bmRUYWdCaXQgd2luZG93IHRh
ZyBiaXQuCisgICAgLy8gPHJkYXI6Ly9wcm9ibGVtLzc3NTI0MjI+IGFza3MgZm9yIGFuIEFQSSB0
byBzZXQgY3Vyc29yIGZyb20gYmFja2dyb3VuZCBwcm9jZXNzZXMuCisgICAgQ0dTQ29ubmVjdGlv
bklEIGNpZCA9IENHU01haW5Db25uZWN0aW9uSUQoKTsKKyAgICBDR1NTZXRDb25uZWN0aW9uUHJv
cGVydHkoY2lkLCBjaWQsIENGU1RSKCJTZXRzQ3Vyc29ySW5CYWNrZ3JvdW5kIiksIChDRlR5cGVS
ZWYpa0NGQm9vbGVhblRydWUpOwogCiAgICAgUmV0YWluUHRyPENGVVJMUmVmPiBwbHVnaW5VUkwg
PSBhZG9wdENGKENGVVJMQ3JlYXRlV2l0aEZpbGVTeXN0ZW1QYXRoKDAsIG1fcGx1Z2luUGF0aC5j
cmVhdGVDRlN0cmluZygpLmdldCgpLCBrQ0ZVUkxQT1NJWFBhdGhTdHlsZSwgZmFsc2UpKTsKICAg
ICBpZiAoIXBsdWdpblVSTCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21h
Yy9XaW5kb3dTZXJ2ZXJDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMv
V2luZG93U2VydmVyQ29ubmVjdGlvbi5oCmluZGV4IDgzOGEzNGZiNWMyZDQ0ZWVlNTQ2NGU1N2Vk
YzcwZTEwYWRiZDNiMjAuLmU3YjUxOGM2YzVlYjBiMDYyZDg5YTkxY2E3MDU3N2JhODRlYjA1MTEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XaW5kb3dTZXJ2ZXJDb25u
ZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dpbmRvd1NlcnZlckNv
bm5lY3Rpb24uaApAQCAtNDEsOSArNDEsNiBAQCBwcml2YXRlOgogICAgIHZvaWQgd2luZG93U2Vy
dmVyQ29ubmVjdGlvblN0YXRlQ2hhbmdlZCgpOwogCiAgICAgdm9pZCBhcHBsaWNhdGlvbldpbmRv
d01vZGlmaWNhdGlvbnNTdG9wcGVkKGJvb2wgc3RvcHBlZCk7Ci0KLSAgICBzdGF0aWMgdm9pZCBh
cHBsaWNhdGlvbldpbmRvd01vZGlmaWNhdGlvbnNTdGFydGVkKHVpbnQzMl90LCB2b2lkKiwgdWlu
dDMyX3QsIHZvaWQqLCB1aW50MzJfdCk7Ci0gICAgc3RhdGljIHZvaWQgYXBwbGljYXRpb25XaW5k
b3dNb2RpZmljYXRpb25zU3RvcHBlZCh1aW50MzJfdCwgdm9pZCosIHVpbnQzMl90LCB2b2lkKiwg
dWludDMyX3QpOwogI2VuZGlmCiAKICAgICBib29sIG1fYXBwbGljYXRpb25XaW5kb3dNb2RpZmlj
YXRpb25zSGF2ZVN0b3BwZWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9t
YWMvV2luZG93U2VydmVyQ29ubmVjdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21h
Yy9XaW5kb3dTZXJ2ZXJDb25uZWN0aW9uLm1tCmluZGV4IDgxOTUzNWMyYWMxMjljOGQ1MjEyMThj
OTc1NWM4NGI2MWQ0NGYyODUuLmE5ZTVlZDVkNjAzNmE1Njc2MDYxNTNiZTk2MGEzNGUxYWIzNjA5
NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XaW5kb3dTZXJ2ZXJD
b25uZWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XaW5kb3dTZXJ2
ZXJDb25uZWN0aW9uLm1tCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbXBvcnQgIldlYktpdFN5c3Rl
bUludGVyZmFjZS5oIgogI2ltcG9ydCAiV2ViUHJvY2Vzc1Bvb2wuaCIKKyNpbXBvcnQgPHBhbC9z
cGkvY2cvQ29yZUdyYXBoaWNzU1BJLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCkBAIC00MSwx
NiArNDIsNiBAQCB2b2lkIFdpbmRvd1NlcnZlckNvbm5lY3Rpb246OmFwcGxpY2F0aW9uV2luZG93
TW9kaWZpY2F0aW9uc1N0b3BwZWQoYm9vbCBzdG9wcGVkKQogICAgIHdpbmRvd1NlcnZlckNvbm5l
Y3Rpb25TdGF0ZUNoYW5nZWQoKTsKIH0KIAotdm9pZCBXaW5kb3dTZXJ2ZXJDb25uZWN0aW9uOjph
cHBsaWNhdGlvbldpbmRvd01vZGlmaWNhdGlvbnNTdGFydGVkKHVpbnQzMl90LCB2b2lkKiwgdWlu
dDMyX3QsIHZvaWQqLCB1aW50MzJfdCkKLXsKLSAgICBXaW5kb3dTZXJ2ZXJDb25uZWN0aW9uOjpz
aW5nbGV0b24oKS5hcHBsaWNhdGlvbldpbmRvd01vZGlmaWNhdGlvbnNTdG9wcGVkKGZhbHNlKTsK
LX0KLQotdm9pZCBXaW5kb3dTZXJ2ZXJDb25uZWN0aW9uOjphcHBsaWNhdGlvbldpbmRvd01vZGlm
aWNhdGlvbnNTdG9wcGVkKHVpbnQzMl90LCB2b2lkKiwgdWludDMyX3QsIHZvaWQqLCB1aW50MzJf
dCkKLXsKLSAgICBXaW5kb3dTZXJ2ZXJDb25uZWN0aW9uOjpzaW5nbGV0b24oKS5hcHBsaWNhdGlv
bldpbmRvd01vZGlmaWNhdGlvbnNTdG9wcGVkKHRydWUpOwotfQotCiB2b2lkIFdpbmRvd1NlcnZl
ckNvbm5lY3Rpb246OndpbmRvd1NlcnZlckNvbm5lY3Rpb25TdGF0ZUNoYW5nZWQoKQogewogICAg
IGZvciAoYXV0byogcHJvY2Vzc1Bvb2wgOiBXZWJQcm9jZXNzUG9vbDo6YWxsUHJvY2Vzc1Bvb2xz
KCkpCkBAIC02NSwyMyArNTYsNDggQEAgV2luZG93U2VydmVyQ29ubmVjdGlvbiYgV2luZG93U2Vy
dmVyQ29ubmVjdGlvbjo6c2luZ2xldG9uKCkKICAgICByZXR1cm4gd2luZG93U2VydmVyQ29ubmVj
dGlvbjsKIH0KIAorI2lmIEhBVkUoV0lORE9XX1NFUlZFUl9PQ0NMVVNJT05fTk9USUZJQ0FUSU9O
UykKK3N0YXRpYyBib29sIHJlZ2lzdGVyT2NjbHVzaW9uTm90aWZpY2F0aW9uSGFuZGxlcihDR1NO
b3RpZmljYXRpb25UeXBlIHR5cGUsIENHU05vdGlmeUNvbm5lY3Rpb25Qcm9jUHRyIGhhbmRsZXIp
Cit7CisgICAgQ0dTQ29ubmVjdGlvbklEIG1haW5Db25uZWN0aW9uID0gQ0dTTWFpbkNvbm5lY3Rp
b25JRCgpOworICAgIHN0YXRpYyBib29sIG5vdGlmaWNhdGlvbnNFbmFibGVkOworICAgIGlmICgh
bm90aWZpY2F0aW9uc0VuYWJsZWQpIHsKKyAgICAgICAgaWYgKENHU1BhY2thZ2VzRW5hYmxlQ29u
bmVjdGlvbk9jY2x1c2lvbk5vdGlmaWNhdGlvbnMobWFpbkNvbm5lY3Rpb24sIHRydWUsIG51bGxw
dHIpICE9IGtDR0Vycm9yU3VjY2VzcykKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
ICAgaWYgKENHU1BhY2thZ2VzRW5hYmxlQ29ubmVjdGlvbldpbmRvd01vZGlmaWNhdGlvbk5vdGlm
aWNhdGlvbnMobWFpbkNvbm5lY3Rpb24sIHRydWUsIG51bGxwdHIpICE9IGtDR0Vycm9yU3VjY2Vz
cykKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgbm90aWZpY2F0aW9uc0VuYWJs
ZWQgPSB0cnVlOworICAgIH0KKworICAgIHJldHVybiBDR1NSZWdpc3RlckNvbm5lY3Rpb25Ob3Rp
ZnlQcm9jKG1haW5Db25uZWN0aW9uLCBoYW5kbGVyLCB0eXBlLCBudWxscHRyKSA9PSBrQ0dFcnJv
clN1Y2Nlc3M7Cit9CisjZW5kaWYKKwogV2luZG93U2VydmVyQ29ubmVjdGlvbjo6V2luZG93U2Vy
dmVyQ29ubmVjdGlvbigpCiAgICAgOiBtX2FwcGxpY2F0aW9uV2luZG93TW9kaWZpY2F0aW9uc0hh
dmVTdG9wcGVkKGZhbHNlKQogewogI2lmIEhBVkUoV0lORE9XX1NFUlZFUl9PQ0NMVVNJT05fTk9U
SUZJQ0FUSU9OUykKICAgICBzdHJ1Y3QgT2NjbHVzaW9uTm90aWZpY2F0aW9uSGFuZGxlciB7Ci0g
ICAgICAgIFdLT2NjbHVzaW9uTm90aWZpY2F0aW9uVHlwZSBub3RpZmljYXRpb25UeXBlOwotICAg
ICAgICBXS09jY2x1c2lvbk5vdGlmaWNhdGlvbkhhbmRsZXIgaGFuZGxlcjsKKyAgICAgICAgQ0dT
Tm90aWZpY2F0aW9uVHlwZSBub3RpZmljYXRpb25UeXBlOworICAgICAgICBDR1NOb3RpZnlDb25u
ZWN0aW9uUHJvY1B0ciBoYW5kbGVyOwogICAgICAgICBjb25zdCBjaGFyKiBuYW1lOwogICAgIH07
CiAKKyAgICBzdGF0aWMgYXV0byB3aW5kb3dNb2RpZmljYXRpb25zU3RhcnRlZCA9IFtdKENHU05v
dGlmaWNhdGlvblR5cGUsIHZvaWQqLCB1aW50MzJfdCwgdm9pZCosIENHU0Nvbm5lY3Rpb25JRCkg
eworICAgICAgICBXaW5kb3dTZXJ2ZXJDb25uZWN0aW9uOjpzaW5nbGV0b24oKS5hcHBsaWNhdGlv
bldpbmRvd01vZGlmaWNhdGlvbnNTdG9wcGVkKGZhbHNlKTsKKyAgICB9OworCisgICAgc3RhdGlj
IGF1dG8gd2luZG93TW9kaWZpY2F0aW9uc1N0b3BwZWQgPSBbXShDR1NOb3RpZmljYXRpb25UeXBl
LCB2b2lkKiwgdWludDMyX3QsIHZvaWQqLCBDR1NDb25uZWN0aW9uSUQpIHsKKyAgICAgICAgV2lu
ZG93U2VydmVyQ29ubmVjdGlvbjo6c2luZ2xldG9uKCkuYXBwbGljYXRpb25XaW5kb3dNb2RpZmlj
YXRpb25zU3RvcHBlZCh0cnVlKTsKKyAgICB9OworCiAgICAgc3RhdGljIGNvbnN0IE9jY2x1c2lv
bk5vdGlmaWNhdGlvbkhhbmRsZXIgb2NjbHVzaW9uTm90aWZpY2F0aW9uSGFuZGxlcnNbXSA9IHsK
LSAgICAgICAgeyBXS09jY2x1c2lvbk5vdGlmaWNhdGlvblR5cGVBcHBsaWNhdGlvbldpbmRvd01v
ZGlmaWNhdGlvbnNTdGFydGVkLCBhcHBsaWNhdGlvbldpbmRvd01vZGlmaWNhdGlvbnNTdGFydGVk
LCAiQXBwbGljYXRpb24gV2luZG93IE1vZGlmaWNhdGlvbnMgU3RhcnRlZCIgfSwKLSAgICAgICAg
eyBXS09jY2x1c2lvbk5vdGlmaWNhdGlvblR5cGVBcHBsaWNhdGlvbldpbmRvd01vZGlmaWNhdGlv
bnNTdG9wcGVkLCBhcHBsaWNhdGlvbldpbmRvd01vZGlmaWNhdGlvbnNTdG9wcGVkLCAiQXBwbGlj
YXRpb24gV2luZG93IE1vZGlmaWNhdGlvbnMgU3RvcHBlZCIgfSwKKyAgICAgICAgeyBrQ0dTQ29u
bmVjdGlvbldpbmRvd01vZGlmaWNhdGlvbnNTdGFydGVkLCB3aW5kb3dNb2RpZmljYXRpb25zU3Rh
cnRlZCwgIkFwcGxpY2F0aW9uIFdpbmRvdyBNb2RpZmljYXRpb25zIFN0YXJ0ZWQiIH0sCisgICAg
ICAgIHsga0NHU0Nvbm5lY3Rpb25XaW5kb3dNb2RpZmljYXRpb25zU3RvcHBlZCwgd2luZG93TW9k
aWZpY2F0aW9uc1N0b3BwZWQsICJBcHBsaWNhdGlvbiBXaW5kb3cgTW9kaWZpY2F0aW9ucyBTdG9w
cGVkIiB9LAogICAgIH07CiAKICAgICBmb3IgKGNvbnN0IGF1dG8mIG9jY2x1c2lvbk5vdGlmaWNh
dGlvbkhhbmRsZXIgOiBvY2NsdXNpb25Ob3RpZmljYXRpb25IYW5kbGVycykgewotICAgICAgICBi
b29sIHJlc3VsdCA9IFdLUmVnaXN0ZXJPY2NsdXNpb25Ob3RpZmljYXRpb25IYW5kbGVyKG9jY2x1
c2lvbk5vdGlmaWNhdGlvbkhhbmRsZXIubm90aWZpY2F0aW9uVHlwZSwgb2NjbHVzaW9uTm90aWZp
Y2F0aW9uSGFuZGxlci5oYW5kbGVyKTsKKyAgICAgICAgYm9vbCByZXN1bHQgPSByZWdpc3Rlck9j
Y2x1c2lvbk5vdGlmaWNhdGlvbkhhbmRsZXIob2NjbHVzaW9uTm90aWZpY2F0aW9uSGFuZGxlci5u
b3RpZmljYXRpb25UeXBlLCBvY2NsdXNpb25Ob3RpZmljYXRpb25IYW5kbGVyLmhhbmRsZXIpOwog
ICAgICAgICBVTlVTRURfUEFSQU0ocmVzdWx0KTsKICAgICAgICAgQVNTRVJUX1dJVEhfTUVTU0FH
RShyZXN1bHQsICJSZWdpc3RyYXRpb24gb2YgXCIlc1wiIG5vdGlmaWNhdGlvbiBoYW5kbGVyIGZh
aWxlZC5cbiIsIG9jY2x1c2lvbk5vdGlmaWNhdGlvbkhhbmRsZXIubmFtZSk7CiAgICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJT
eXN0ZW1JbnRlcmZhY2UubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvbWFjL1dlYlN5c3RlbUludGVyZmFjZS5tbQppbmRleCBkMThhNDQwZGQ3MjUzOWM2YTU2OTRi
NzQ2N2Y4YTY5MTg4NTFkOTllLi41YjA5NzljNjg1YWQwODAwMmY3YzJhMGY3YjU4ZDE3ZmI4NmNh
N2M1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
bWFjL1dlYlN5c3RlbUludGVyZmFjZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvbWFjL1dlYlN5c3RlbUludGVyZmFjZS5tbQpAQCAtMzcsMjEgKzM3LDEx
IEBAIHZvaWQgSW5pdFdlYkNvcmVTeXN0ZW1JbnRlcmZhY2Uodm9pZCkKICAgICAKICAgICBkaXNw
YXRjaF9vbmNlKCZpbml0T25jZSwgXnsKICAgICAgICAgSU5JVChDQUxheWVyRW51bWVyYXRlUmVj
dHNCZWluZ0RyYXduV2l0aEJsb2NrKTsKLSAgICAgICAgSU5JVChDR1BhdHRlcm5DcmVhdGVXaXRo
SW1hZ2VBbmRUcmFuc2Zvcm0pOwotI2lmICFQTEFURk9STShJT1MpCi0gICAgICAgIElOSVQoQ0dD
b250ZXh0RHJhd3NXaXRoQ29ycmVjdFNoYWRvd09mZnNldHMpOwotI2VuZGlmCiAgICAgICAgIElO
SVQoQ29weUNPTk5FQ1RQcm94eVJlc3BvbnNlKTsKICNpZiAhUExBVEZPUk0oSU9TKQogICAgICAg
ICBJTklUKERyYXdCZXplbGVkVGV4dEFyZWEpOwotICAgICAgICBJTklUKERyYXdGb2N1c1Jpbmcp
OwotICAgICAgICBJTklUKERyYXdGb2N1c1JpbmdBdFRpbWUpOwotICAgICAgICBJTklUKERyYXdD
ZWxsRm9jdXNSaW5nV2l0aEZyYW1lQXRUaW1lKTsKICAgICAgICAgSU5JVChEcmF3TWVkaWFTbGlk
ZXJUcmFjayk7CiAgICAgICAgIElOSVQoRHJhd01lZGlhVUlQYXJ0KTsKLSNlbmRpZgotICAgICAg
ICBJTklUKENHQ29udGV4dElzUERGQ29udGV4dCk7Ci0jaWYgIVBMQVRGT1JNKElPUykKICAgICAg
ICAgSU5JVChHZXROU0V2ZW50S2V5Q2hhcik7CiAgICAgICAgIElOSVQoSGl0VGVzdE1lZGlhVUlQ
YXJ0KTsKICAgICAgICAgSU5JVChNZWFzdXJlTWVkaWFVSVBhcnQpOwpAQCAtNzAsMTYgKzYwLDEx
IEBAIHZvaWQgSW5pdFdlYkNvcmVTeXN0ZW1JbnRlcmZhY2Uodm9pZCkKICNlbmRpZgogICAgICAg
ICBJTklUKFNldENPTk5FQ1RQcm94eUF1dGhvcml6YXRpb25Gb3JTdHJlYW0pOwogICAgICAgICBJ
TklUKFNldENPTk5FQ1RQcm94eUZvclN0cmVhbSk7Ci0jaWYgIVBMQVRGT1JNKElPUykKLSAgICAg
ICAgSU5JVChTZXREcmFnSW1hZ2UpOwotI2VuZGlmCiAKICNpZiAhUExBVEZPUk0oSU9TKQogICAg
ICAgICBJTklUKEV4ZWN1dGFibGVXYXNMaW5rZWRPbk9yQmVmb3JlU25vd0xlb3BhcmQpOwogICAg
ICAgICBJTklUKENvcHlEZWZhdWx0U2VhcmNoUHJvdmlkZXJEaXNwbGF5TmFtZSk7CiAgICAgICAg
IElOSVQoQ3Vyc29yKTsKLSAgICAgICAgSU5JVChXaW5kb3dTZXRTY2FsZWRGcmFtZSk7Ci0gICAg
ICAgIElOSVQoV2luZG93U2V0QWxwaGEpOwogICAgICAgICBJTklUKFNwZWVjaFN5bnRoZXNpc0dl
dFZvaWNlSWRlbnRpZmllcnMpOwogICAgICAgICBJTklUKFNwZWVjaFN5bnRoZXNpc0dldERlZmF1
bHRWb2ljZUlkZW50aWZpZXJGb3JMb2NhbGUpOwogICAgICAgICBJTklUKE5TRWxhc3RpY0RlbHRh
Rm9yVGltZURlbHRhKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NhcmJv
bi9ISVdlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DYXJib24vSElXZWJWaWV3
Lm1tCmluZGV4IDM0NTg1YzI1MmMzYjE4Y2FjZDZlMDdhZDVlOTQ0ODc3OWQ4YmU0NTcuLmE5ZjZl
YWVkNzIwMzg4NDczZWUzNmFhMDFkYjFkOWIzNDMxZDZlMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL0NhcmJvbi9ISVdlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvQ2FyYm9uL0hJV2ViVmlldy5tbQpAQCAtODUsNiArODUsMjEgQEAgLSAoaW50KXRh
ZwogCiBAZW5kCiAKK0BpbnRlcmZhY2UgTlNXaW5kb3dHcmFwaGljc0NvbnRleHQgKCkKKy0gKHZv
aWQpX3dlYl9zZXRHcmFwaGljc1BvcnQ6KENHQ29udGV4dFJlZiljb250ZXh0OworQGVuZAorCitA
aW1wbGVtZW50YXRpb24gTlNXaW5kb3dHcmFwaGljc0NvbnRleHQgKCkKKworLSAodm9pZClfd2Vi
X3NldEdyYXBoaWNzUG9ydDooQ0dDb250ZXh0UmVmKWNvbnRleHQKK3sKKyAgICBDR0NvbnRleHRS
ZXRhaW4oY29udGV4dCk7CisgICAgQ0dDb250ZXh0UmVsZWFzZShfY2dzQ29udGV4dCk7CisgICAg
X2Nnc0NvbnRleHQgPSBjb250ZXh0OworfQorCitAZW5kCisKIHN0cnVjdCBISVdlYlZpZXcKIHsK
ICAgICBISVZpZXdSZWYJCQkJCQkJZlZpZXdSZWY7CkBAIC0yOTAsNiArMzA1LDIyIEBAIEdldEJl
aGF2aW9ycygpCiAJcmV0dXJuIGtDb250cm9sU3VwcG9ydHNEYXRhQWNjZXNzIHwga0NvbnRyb2xT
dXBwb3J0c0dldFJlZ2lvbiB8IGtDb250cm9sR2V0c0ZvY3VzT25DbGljazsKIH0KIAorc3RhdGlj
IENHQ29udGV4dFJlZiBvdmVycmlkZUNHQ29udGV4dChOU1dpbmRvdyAqd2luZG93LCBDR0NvbnRl
eHRSZWYgY29udGV4dCkKK3sKKyAgICBOU1dpbmRvd0dyYXBoaWNzQ29udGV4dCAqZ3JhcGhpY3ND
b250ZXh0ID0gKE5TV2luZG93R3JhcGhpY3NDb250ZXh0ICopW3dpbmRvdyBncmFwaGljc0NvbnRl
eHRdOworICAgIENHQ29udGV4dFJlZiBzYXZlZENvbnRleHQgPSAoQ0dDb250ZXh0UmVmKVtncmFw
aGljc0NvbnRleHQgZ3JhcGhpY3NQb3J0XTsKKyAgICBDR0NvbnRleHRSZXRhaW4oc2F2ZWRDb250
ZXh0KTsKKyAgICBbZ3JhcGhpY3NDb250ZXh0IF93ZWJfc2V0R3JhcGhpY3NQb3J0OmNvbnRleHRd
OworICAgIHJldHVybiBzYXZlZENvbnRleHQ7Cit9CisKK3N0YXRpYyB2b2lkIHJlc3RvcmVDR0Nv
bnRleHQoTlNXaW5kb3cgKndpbmRvdywgQ0dDb250ZXh0UmVmIHNhdmVkQ29udGV4dCkKK3sKKyAg
ICBOU1dpbmRvd0dyYXBoaWNzQ29udGV4dCAqZ3JhcGhpY3NDb250ZXh0ID0gKE5TV2luZG93R3Jh
cGhpY3NDb250ZXh0ICopW3dpbmRvdyBncmFwaGljc0NvbnRleHRdOworICAgIFtncmFwaGljc0Nv
bnRleHQgX3dlYl9zZXRHcmFwaGljc1BvcnQ6c2F2ZWRDb250ZXh0XTsKKyAgICBDR0NvbnRleHRS
ZWxlYXNlKHNhdmVkQ29udGV4dCk7Cit9CisKIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQog
Ly8gRHJhdwogLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC0zMjEsNyArMzUyLDcgQEAg
RHJhdyggSElXZWJWaWV3KiBpblZpZXcsIFJnbkhhbmRsZSBsaW1pdFJnbiwgQ0dDb250ZXh0UmVm
IGluQ29udGV4dCApCiAKIAlISVZpZXdHZXRCb3VuZHMoIGluVmlldy0+ZlZpZXdSZWYsICZib3Vu
ZHMgKTsKIAotICAgIENHQ29udGV4dFJlZiBzYXZlZENvbnRleHQgPSBXS05TV2luZG93T3ZlcnJp
ZGVDR0NvbnRleHQoaW5WaWV3LT5mS2l0V2luZG93LCBpbkNvbnRleHQpOworICAgIENHQ29udGV4
dFJlZiBzYXZlZENvbnRleHQgPSBvdmVycmlkZUNHQ29udGV4dChpblZpZXctPmZLaXRXaW5kb3cs
IGluQ29udGV4dCk7CiAgICAgW05TR3JhcGhpY3NDb250ZXh0IHNldEN1cnJlbnRDb250ZXh0Oltp
blZpZXctPmZLaXRXaW5kb3cgZ3JhcGhpY3NDb250ZXh0XV07CiAKIAlHZXRSZWdpb25Cb3VuZHMo
IGxpbWl0UmduLCAmZHJhd1JlY3QgKTsKQEAgLTM1MSw3ICszODIsNyBAQCBEcmF3KCBISVdlYlZp
ZXcqIGluVmlldywgUmduSGFuZGxlIGxpbWl0UmduLCBDR0NvbnRleHRSZWYgaW5Db250ZXh0ICkK
ICAgICBlbHNlCiAgICAgICAgIFtpblZpZXctPmZXZWJWaWV3IGRpc3BsYXlSZWN0OiooTlNSZWN0
KikmaGlSZWN0XTsKIAotICAgIFdLTlNXaW5kb3dSZXN0b3JlQ0dDb250ZXh0KGluVmlldy0+Zktp
dFdpbmRvdywgc2F2ZWRDb250ZXh0KTsKKyAgICByZXN0b3JlQ0dDb250ZXh0KGluVmlldy0+Zktp
dFdpbmRvdywgc2F2ZWRDb250ZXh0KTsKIAogICAgIGlmICggIWluVmlldy0+ZklzQ29tcG9zaXRl
ZCApCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9I
b3N0ZWQvV2ViSG9zdGVkTmV0c2NhcGVQbHVnaW5WaWV3Lm1tIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvUGx1Z2lucy9Ib3N0ZWQvV2ViSG9zdGVkTmV0c2NhcGVQbHVnaW5WaWV3Lm1tCmluZGV4
IDllMjA0NGUyNmUxMzkwMjFlYjhjYTYzMzYyNTVmMmM4MzNjMWI4YjIuLjY5NWE1Y2Y1MjczNzNk
MzA5YTgzYjY0ZDZmMWQwMTAwZWQzYTQwOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1BsdWdpbnMvSG9zdGVkL1dlYkhvc3RlZE5ldHNjYXBlUGx1Z2luVmlldy5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9XZWJIb3N0ZWROZXRzY2Fw
ZVBsdWdpblZpZXcubW0KQEAgLTc2LDcgKzc2LDcgQEAgKyAodm9pZClpbml0aWFsaXplCiAgICAg
V1RGOjppbml0aWFsaXplTWFpblRocmVhZFRvUHJvY2Vzc01haW5UaHJlYWQoKTsKICAgICBSdW5M
b29wOjppbml0aWFsaXplTWFpblJ1bkxvb3AoKTsKICNlbmRpZgotICAgIFdLU2VuZFVzZXJDaGFu
Z2VOb3RpZmljYXRpb25zKCk7CisgICAgc2VuZFVzZXJDaGFuZ2VOb3RpZmljYXRpb25zKCk7CiB9
CiAKIC0gKGlkKWluaXRXaXRoRnJhbWU6KE5TUmVjdClmcmFtZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJCYXNlTmV0c2NhcGVQbHVnaW5WaWV3LmggYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYkJhc2VOZXRzY2FwZVBsdWdpblZpZXcu
aAppbmRleCBjMjIyM2FiNmQyNjc1MWYzOGMzODk1ODFiZDM0OWRlOTgxNGMxNWIxLi5jZDQzMGQz
NjY5NzFlYzlmZTJlYTBkNDQwNTkzYjU4MGM5Y2EyZTI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYkJhc2VOZXRzY2FwZVBsdWdpblZpZXcuaAorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYkJhc2VOZXRzY2FwZVBsdWdpblZpZXcu
aApAQCAtMTM0LDYgKzEzNCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIG5hbWVzcGFjZSBXZWJL
aXQgewogYm9vbCBnZXRBdXRoZW50aWNhdGlvbkluZm8oY29uc3QgY2hhciogcHJvdG9jb2xTdHIs
IGNvbnN0IGNoYXIqIGhvc3RTdHIsIGludDMyX3QgcG9ydCwgY29uc3QgY2hhciogc2NoZW1lU3Ry
LCBjb25zdCBjaGFyKiByZWFsbVN0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdURjo6
Q1N0cmluZyYgdXNlcm5hbWUsIFdURjo6Q1N0cmluZyYgcGFzc3dvcmQpOwordm9pZCBzZW5kVXNl
ckNoYW5nZU5vdGlmaWNhdGlvbnMoKTsKIH0gCiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJCYXNlTmV0c2NhcGVQbHVnaW5WaWV3Lm1tIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJCYXNlTmV0c2NhcGVQbHVnaW5WaWV3
Lm1tCmluZGV4IDY0ZGU5MDEwZWJkYjBiMDY5ZDZmODYzYTNmZWYyZmZkN2I1ZDQzMzguLmJlMWMz
MGIzZjMwOWRhNjg1NWYzY2QxZDI3YWI0NzA4OWFlZDJjMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViQmFzZU5ldHNjYXBlUGx1Z2luVmlldy5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYkJhc2VOZXRzY2FwZVBsdWdpblZp
ZXcubW0KQEAgLTU1LDYgKzU1LDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW4u
aD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViQ29yZU9iakNFeHRyYXMuaD4KICNpbXBvcnQgPFdlYktp
dExlZ2FjeS9ET01Qcml2YXRlLmg+CisjaW1wb3J0IDxwYWwvc3BpL2NnL0NvcmVHcmFwaGljc1NQ
SS5oPgogI2ltcG9ydCA8cnVudGltZS9Jbml0aWFsaXplVGhyZWFkaW5nLmg+CiAjaW1wb3J0IDx3
dGYvQXNzZXJ0aW9ucy5oPgogI2ltcG9ydCA8d3RmL01haW5UaHJlYWQuaD4KQEAgLTczLDcgKzc0
LDcgQEAgKyAodm9pZClpbml0aWFsaXplCiAgICAgSlNDOjppbml0aWFsaXplVGhyZWFkaW5nKCk7
CiAgICAgV1RGOjppbml0aWFsaXplTWFpblRocmVhZFRvUHJvY2Vzc01haW5UaHJlYWQoKTsKICAg
ICBSdW5Mb29wOjppbml0aWFsaXplTWFpblJ1bkxvb3AoKTsKLSAgICBXS1NlbmRVc2VyQ2hhbmdl
Tm90aWZpY2F0aW9ucygpOworICAgIFdlYktpdDo6c2VuZFVzZXJDaGFuZ2VOb3RpZmljYXRpb25z
KCk7CiB9CiAKIC0gKGlkKWluaXRXaXRoRnJhbWU6KE5TUmVjdClmcmFtZQpAQCAtOTAwLDYgKzkw
MSwyMyBAQCBib29sIGdldEF1dGhlbnRpY2F0aW9uSW5mbyhjb25zdCBjaGFyKiBwcm90b2NvbFN0
ciwgY29uc3QgY2hhciogaG9zdFN0ciwgaW50MzJfdAogICAgIHJldHVybiB0cnVlOwogfQogCit2
b2lkIHNlbmRVc2VyQ2hhbmdlTm90aWZpY2F0aW9ucygpCit7CisgICAgYXV0byBjb25zb2xlQ29u
bmVjdGlvbkNoYW5nZU5vdGlmeVByb2MgPSBbXShDR1NOb3RpZmljYXRpb25UeXBlIHR5cGUsIENH
U05vdGlmaWNhdGlvbkRhdGEsIENHU0J5dGVDb3VudCwgQ0dTTm90aWZpY2F0aW9uQXJnKSB7Cisg
ICAgICAgIE5TU3RyaW5nICpub3RpZmljYXRpb25OYW1lID0gbmlsOworICAgICAgICBpZiAodHlw
ZSA9PSBrQ0dTZXNzaW9uQ29uc29sZUNvbm5lY3QpCisgICAgICAgICAgICBub3RpZmljYXRpb25O
YW1lID0gTG9naW5XaW5kb3dEaWRTd2l0Y2hUb1VzZXJOb3RpZmljYXRpb247CisgICAgICAgIGVs
c2UgaWYgKHR5cGUgPT0ga0NHU2Vzc2lvbkNvbnNvbGVEaXNjb25uZWN0KQorICAgICAgICAgICAg
bm90aWZpY2F0aW9uTmFtZSA9IExvZ2luV2luZG93RGlkU3dpdGNoRnJvbVVzZXJOb3RpZmljYXRp
b247CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
ICAgICBbW05TTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdIHBvc3ROb3RpZmljYXRp
b25OYW1lOm5vdGlmaWNhdGlvbk5hbWUgb2JqZWN0Om5pbF07CisgICAgfTsKKworICAgIENHU1Jl
Z2lzdGVyTm90aWZ5UHJvYyhjb25zb2xlQ29ubmVjdGlvbkNoYW5nZU5vdGlmeVByb2MsIGtDR1Nl
c3Npb25Db25zb2xlQ29ubmVjdCwgTlVMTCk7CisgICAgQ0dTUmVnaXN0ZXJOb3RpZnlQcm9jKGNv
bnNvbGVDb25uZWN0aW9uQ2hhbmdlTm90aWZ5UHJvYywga0NHU2Vzc2lvbkNvbnNvbGVEaXNjb25u
ZWN0LCBOVUxMKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyAgRU5B
QkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luVmlldy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5WaWV3Lm1tCmluZGV4IGM2ODBmZjdlZTMx
YzkzYjhmYjQ5MjI5N2U0ZTdhZDkxNDFhNGRkZTQuLjJiYmQzZGViZTY2ZTE4ZDhmMzE4MGM5NGNh
MTMzN2ZjZjdkODgxNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdp
bnMvV2ViTmV0c2NhcGVQbHVnaW5WaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5WaWV3Lm1tCkBAIC0xOTMsNyArMTkzLDcgQEAgKyAo
dm9pZClpbml0aWFsaXplCiAgICAgSlNDOjppbml0aWFsaXplVGhyZWFkaW5nKCk7CiAgICAgV1RG
Ojppbml0aWFsaXplTWFpblRocmVhZFRvUHJvY2Vzc01haW5UaHJlYWQoKTsKICAgICBSdW5Mb29w
Ojppbml0aWFsaXplTWFpblJ1bkxvb3AoKTsKLSAgICBXS1NlbmRVc2VyQ2hhbmdlTm90aWZpY2F0
aW9ucygpOworICAgIHNlbmRVc2VyQ2hhbmdlTm90aWZpY2F0aW9ucygpOwogfQogCiAvLyBNQVJL
OiBFVkVOVFMKQEAgLTM3OSwxMCArMzc5LDEwIEBAIC0gKFBvcnRTdGF0ZSlzYXZlQW5kU2V0TmV3
UG9ydFN0YXRlRm9yVXBkYXRlOihCT09MKWZvclVwZGF0ZQogICAgICAgICAgICAgcWRQb3J0U3Rh
dGUtPmNsaXBSZWdpb24gPSBjbGlwUmVnaW9uOwogCiAgICAgICAgICAgICBDR0NvbnRleHRSZWYg
Y3VycmVudENvbnRleHQgPSAoQ0dDb250ZXh0UmVmKVtbTlNHcmFwaGljc0NvbnRleHQgY3VycmVu
dENvbnRleHRdIGdyYXBoaWNzUG9ydF07Ci0gICAgICAgICAgICBpZiAoY3VycmVudENvbnRleHQg
JiYgV0tDR0NvbnRleHRJc0JpdG1hcENvbnRleHQoY3VycmVudENvbnRleHQpKSB7Ci0gICAgICAg
ICAgICAgICAgLy8gV2UgdXNlIFdLQ0dDb250ZXh0SXNCaXRtYXBDb250ZXh0IGhlcmUsIGJlY2F1
c2UgaWYgd2UganVzdCBjYWxsZWQgQ0dCaXRtYXBDb250ZXh0R2V0RGF0YQotICAgICAgICAgICAg
ICAgIC8vIG9uIGFueSBjb250ZXh0LCB3ZSdkIGxvZyB0byB0aGUgY29uc29sZSBldmVyeSB0aW1l
LiBCdXQgZXZlbiBpZiBXS0NHQ29udGV4dElzQml0bWFwQ29udGV4dAotICAgICAgICAgICAgICAg
IC8vIHJldHVybnMgdHJ1ZSwgaXQgc3RpbGwgbWlnaHQgbm90IGJlIGEgY29udGV4dCB3ZSBuZWVk
IHRvIGNyZWF0ZSBhIEdXb3JsZCBmb3I7IGZvciBleGFtcGxlCisgICAgICAgICAgICBpZiAoY3Vy
cmVudENvbnRleHQgJiYgQ0dDb250ZXh0R2V0VHlwZShjdXJyZW50Q29udGV4dCkgPT0ga0NHQ29u
dGV4dFR5cGVCaXRtYXApIHsKKyAgICAgICAgICAgICAgICAvLyBXZSBjaGVjayBmb3Iga0NHQ29u
dGV4dFR5cGVCaXRtYXAgaGVyZSwgYmVjYXVzZSBpZiB3ZSBqdXN0IGNhbGxlZCBDR0JpdG1hcENv
bnRleHRHZXREYXRhCisgICAgICAgICAgICAgICAgLy8gb24gYW55IGNvbnRleHQsIHdlJ2QgbG9n
IHRvIHRoZSBjb25zb2xlIGV2ZXJ5IHRpbWUuIEJ1dCBldmVuIGlmIGN1cnJlbnRDb250ZXh0IGlz
IGEKKyAgICAgICAgICAgICAgICAvLyBrQ0dDb250ZXh0VHlwZUJpdG1hcCwgaXQgc3RpbGwgbWln
aHQgbm90IGJlIGEgY29udGV4dCB3ZSBuZWVkIHRvIGNyZWF0ZSBhIEdXb3JsZCBmb3I7IGZvciBl
eGFtcGxlCiAgICAgICAgICAgICAgICAgLy8gdHJhbnNwYXJlbmN5IGxheWVycyB3aWxsIHJldHVy
biB0cnVlLCBidXQgcmV0dXJuIDAgZm9yIENHQml0bWFwQ29udGV4dEdldERhdGEuCiAgICAgICAg
ICAgICAgICAgdm9pZCogb2Zmc2NyZWVuRGF0YSA9IENHQml0bWFwQ29udGV4dEdldERhdGEoY3Vy
cmVudENvbnRleHQpOwogICAgICAgICAgICAgICAgIGlmIChvZmZzY3JlZW5EYXRhKSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJTeXN0ZW1J
bnRlcmZhY2UubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJT
eXN0ZW1JbnRlcmZhY2UubW0KaW5kZXggNmRkMGI1N2RkNGJmMzQzZmU5NjZmMGZiYTYzYzExY2Y0
ZjA4ZDkzMi4uYjUxMWQ2NWVhNjFiMzYyNDdkMmI4M2ViMmM2ODkxMTQzZjM5N2NkOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViU3lzdGVtSW50
ZXJmYWNlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YlN5c3RlbUludGVyZmFjZS5tbQpAQCAtNDMsMTYgKzQzLDkgQEAgdm9pZCBJbml0V2ViQ29yZVN5
c3RlbUludGVyZmFjZSh2b2lkKQogICAgICAgICByZXR1cm47CiAKICAgICBJTklUKENBTGF5ZXJF
bnVtZXJhdGVSZWN0c0JlaW5nRHJhd25XaXRoQmxvY2spOwotICAgIElOSVQoQ0dQYXR0ZXJuQ3Jl
YXRlV2l0aEltYWdlQW5kVHJhbnNmb3JtKTsKLSNpZiAhUExBVEZPUk0oSU9TKQotICAgIElOSVQo
Q0dDb250ZXh0RHJhd3NXaXRoQ29ycmVjdFNoYWRvd09mZnNldHMpOwotI2VuZGlmCiAgICAgSU5J
VChDb3B5Q09OTkVDVFByb3h5UmVzcG9uc2UpOwogI2lmICFQTEFURk9STShJT1MpCiAgICAgSU5J
VChEcmF3QmV6ZWxlZFRleHRBcmVhKTsKLSAgICBJTklUKERyYXdGb2N1c1JpbmcpOwotICAgIElO
SVQoRHJhd0ZvY3VzUmluZ0F0VGltZSk7Ci0gICAgSU5JVChEcmF3Q2VsbEZvY3VzUmluZ1dpdGhG
cmFtZUF0VGltZSk7CiAgICAgSU5JVChEcmF3TWVkaWFVSVBhcnQpOwogICAgIElOSVQoRHJhd01l
ZGlhU2xpZGVyVHJhY2spOwogICAgIElOSVQoR2V0TlNFdmVudEtleUNoYXIpOwpAQCAtNjAsMTUg
KzUzLDkgQEAgdm9pZCBJbml0V2ViQ29yZVN5c3RlbUludGVyZmFjZSh2b2lkKQogICAgIElOSVQo
TWVhc3VyZU1lZGlhVUlQYXJ0KTsKICAgICBJTklUKENyZWF0ZU1lZGlhVUlCYWNrZ3JvdW5kVmll
dyk7CiAgICAgSU5JVChDcmVhdGVNZWRpYVVJQ29udHJvbCk7Ci0gICAgSU5JVChXaW5kb3dTZXRB
bHBoYSk7Ci0gICAgSU5JVChXaW5kb3dTZXRTY2FsZWRGcmFtZSk7CiAjZW5kaWYKICAgICBJTklU
KFNldENPTk5FQ1RQcm94eUF1dGhvcml6YXRpb25Gb3JTdHJlYW0pOwogICAgIElOSVQoU2V0Q09O
TkVDVFByb3h5Rm9yU3RyZWFtKTsKLSNpZiAhUExBVEZPUk0oSU9TKQotICAgIElOSVQoU2V0RHJh
Z0ltYWdlKTsKLSNlbmRpZgotICAgIElOSVQoQ0dDb250ZXh0SXNQREZDb250ZXh0KTsKICNpZiBF
TkFCTEUoVklERU8pICYmICFQTEFURk9STShJT1MpCiAgICAgSU5JVChRVEluY2x1ZGVPbmx5TW9k
ZXJuTWVkaWFGaWxlVHlwZXMpOwogICAgIElOSVQoUVRNb3ZpZURpc2FibGVDb21wb25lbnQpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbSBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KaW5kZXggZjBmOGU2
Mjg1ODBiMjlmZTA0N2VkZGY2ZWI0NzU3OGM2ZDA1ZGQyZC4uZTcwOTNjOTZhYWM0NzRlM2FlZTll
NzJkMjNiMjRlYjFjNTg5YTJlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViVmlldy9XZWJGcmFtZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3
L1dlYkZyYW1lLm1tCkBAIC01OTgsNyArNTk4LDcgQEAgLSAoUGFpbnRCZWhhdmlvcilfcGFpbnRC
ZWhhdmlvckZvckRlc3RpbmF0aW9uQ29udGV4dDooQ0dDb250ZXh0UmVmKWNvbnRleHQKICAgICAg
ICAgcmV0dXJuIFBhaW50QmVoYXZpb3JGbGF0dGVuQ29tcG9zaXRpbmdMYXllcnMgfCBQYWludEJl
aGF2aW9yU25hcHNob3R0aW5nOwogI2VuZGlmCiAKLSAgICBpZiAoIVdLQ0dDb250ZXh0SXNCaXRt
YXBDb250ZXh0KGNvbnRleHQpKQorICAgIGlmIChDR0NvbnRleHRHZXRUeXBlKGNvbnRleHQpICE9
IGtDR0NvbnRleHRUeXBlQml0bWFwKQogICAgICAgICByZXR1cm4gUGFpbnRCZWhhdmlvck5vcm1h
bDsKIAogICAgIC8vIElmIHdlJ3JlIGRyYXdpbmcgaW50byBhIGJpdG1hcCwgd2UgbWlnaHQgYmUg
c25hcHNob3R0aW5nLCBvciBkcmF3aW5nIGludG8gYSBsYXllci1iYWNrZWQgdmlldy4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnVsbFNjcmVlbkNvbnRy
b2xsZXIubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZ1bGxTY3JlZW5D
b250cm9sbGVyLm1tCmluZGV4IGZkOGZjNTY5OTdhZmNiNmFkN2Y5MGM1ZmM5OTg0YmEzMTc2NmU5
MDcuLjQwNTNmZmM4NDY0YTM1YmI4NmFmYjY2NmUzY2VlN2VkY2FjZTVlZmIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnVsbFNjcmVlbkNvbnRyb2xsZXIu
bW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGdWxsU2NyZWVuQ29u
dHJvbGxlci5tbQpAQCAtMjQ5LDYgKzI0OSwxNiBAQCAtICh2b2lkKWVudGVyRnVsbFNjcmVlbjoo
TlNTY3JlZW4gKilzY3JlZW4KICAgICBfaXNFbnRlcmluZ0Z1bGxTY3JlZW4gPSB0cnVlOwogfQog
CitzdGF0aWMgdm9pZCBzZXRDbGlwUmVjdEZvcldpbmRvdyhOU1dpbmRvdyAqd2luZG93LCBOU1Jl
Y3QgY2xpcFJlY3QpCit7CisgICAgQ0dTV2luZG93SUQgd2luZG93TnVtYmVyID0gKENHU1dpbmRv
d0lEKVt3aW5kb3cgd2luZG93TnVtYmVyXTsKKyAgICBDR1NSZWdpb25PYmogc2hhcGU7CisgICAg
Q0dSZWN0IGNnQ2xpcFJlY3QgPSBOU1JlY3RUb0NHUmVjdChjbGlwUmVjdCk7CisgICAgQ0dTTmV3
UmVnaW9uV2l0aFJlY3QoJmNnQ2xpcFJlY3QsICZzaGFwZSk7CisgICAgQ0dTU2V0V2luZG93Q2xp
cFNoYXBlKENHU01haW5Db25uZWN0aW9uSUQoKSwgd2luZG93TnVtYmVyLCBzaGFwZSk7CisgICAg
Q0dTUmVsZWFzZVJlZ2lvbihzaGFwZSk7Cit9CisKIC0gKHZvaWQpZmluaXNoZWRFbnRlckZ1bGxT
Y3JlZW5BbmltYXRpb246KGJvb2wpY29tcGxldGVkCiB7CiAgICAgaWYgKCFfaXNFbnRlcmluZ0Z1
bGxTY3JlZW4pCkBAIC0yNjMsNyArMjczLDcgQEAgLSAodm9pZClmaW5pc2hlZEVudGVyRnVsbFNj
cmVlbkFuaW1hdGlvbjooYm9vbCljb21wbGV0ZWQKICAgICAgICAgCiAgICAgICAgIE5TUmVjdCB3
aW5kb3dCb3VuZHMgPSBbW3NlbGYgd2luZG93XSBmcmFtZV07CiAgICAgICAgIHdpbmRvd0JvdW5k
cy5vcmlnaW4gPSBOU1plcm9Qb2ludDsKLSAgICAgICAgV0tXaW5kb3dTZXRDbGlwUmVjdChbc2Vs
ZiB3aW5kb3ddLCB3aW5kb3dCb3VuZHMpOworICAgICAgICBzZXRDbGlwUmVjdEZvcldpbmRvdyhb
c2VsZiB3aW5kb3ddLCB3aW5kb3dCb3VuZHMpOwogICAgICAgICAKICAgICAgICAgTlNXaW5kb3cg
KndlYldpbmRvdyA9IFtfd2ViVmlld1BsYWNlaG9sZGVyLmdldCgpIHdpbmRvd107CiAgICAgICAg
IC8vIEluIExpb24sIE5TV2luZG93IHdpbGwgYW5pbWF0ZSBpbnRvIGFuZCBvdXQgb2Ygb3JkZXJP
dXQgb3BlcmF0aW9ucy4gU3VwcHJlc3MgdGhhdApAQCAtMzUzLDcgKzM2Myw3IEBAIC0gKHZvaWQp
ZmluaXNoZWRFeGl0RnVsbFNjcmVlbkFuaW1hdGlvbjooYm9vbCljb21wbGV0ZWQKICAgICAKICAg
ICBOU1JlY3Qgd2luZG93Qm91bmRzID0gW1tzZWxmIHdpbmRvd10gZnJhbWVdOwogICAgIHdpbmRv
d0JvdW5kcy5vcmlnaW4gPSBOU1plcm9Qb2ludDsKLSAgICBXS1dpbmRvd1NldENsaXBSZWN0KFtz
ZWxmIHdpbmRvd10sIHdpbmRvd0JvdW5kcyk7CisgICAgc2V0Q2xpcFJlY3RGb3JXaW5kb3coW3Nl
bGYgd2luZG93XSwgd2luZG93Qm91bmRzKTsKICAgICAKICAgICBbW3NlbGYgd2luZG93XSBvcmRl
ck91dDpzZWxmXTsKICAgICBbW3NlbGYgd2luZG93XSBzZXRGcmFtZTpOU1plcm9SZWN0IGRpc3Bs
YXk6WUVTXTsKQEAgLTQ4NCwxMyArNDk0LDEzIEBAIC0gKHZvaWQpX3N0YXJ0RW50ZXJGdWxsU2Ny
ZWVuQW5pbWF0aW9uV2l0aER1cmF0aW9uOihOU1RpbWVJbnRlcnZhbClkdXJhdGlvbgogICAgIFtf
c2NhbGVBbmltYXRpb24uZ2V0KCkgc2V0Q3VycmVudFByb2dyZXNzOjBdOwogICAgIFtfc2NhbGVB
bmltYXRpb24uZ2V0KCkgc3RhcnRBbmltYXRpb25dOwogICAgIAotICAgIC8vIFdLV2luZG93U2V0
Q2xpcFJlY3QgdGFrZXMgd2luZG93IGNvb3JkaW5hdGVzLCBzbyBjb252ZXJ0IGZyb20gc2NyZWVu
IGNvb3JkaW5hdGVzIGhlcmU6CisgICAgLy8gc2V0Q2xpcFJlY3RGb3JXaW5kb3cgdGFrZXMgd2lu
ZG93IGNvb3JkaW5hdGVzLCBzbyBjb252ZXJ0IGZyb20gc2NyZWVuIGNvb3JkaW5hdGVzIGhlcmU6
CiAgICAgTlNSZWN0IGZpbmFsQm91bmRzID0gX2ZpbmFsRnJhbWU7CiAjcHJhZ21hIGNsYW5nIGRp
YWdub3N0aWMgcHVzaAogI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XZGVwcmVj
YXRlZC1kZWNsYXJhdGlvbnMiCiAgICAgZmluYWxCb3VuZHMub3JpZ2luID0gW1tzZWxmIHdpbmRv
d10gY29udmVydFNjcmVlblRvQmFzZTpmaW5hbEJvdW5kcy5vcmlnaW5dOwogI3ByYWdtYSBjbGFu
ZyBkaWFnbm9zdGljIHBvcAotICAgIFdLV2luZG93U2V0Q2xpcFJlY3QoW3NlbGYgd2luZG93XSwg
ZmluYWxCb3VuZHMpOworICAgIHNldENsaXBSZWN0Rm9yV2luZG93KFtzZWxmIHdpbmRvd10sIGZp
bmFsQm91bmRzKTsKICAgICAKICAgICBbW3NlbGYgd2luZG93XSBtYWtlS2V5QW5kT3JkZXJGcm9u
dDpzZWxmXTsKICAgICAKQEAgLTU1NiwxMyArNTY2LDEzIEBAIC0gKHZvaWQpX3N0YXJ0RXhpdEZ1
bGxTY3JlZW5BbmltYXRpb25XaXRoRHVyYXRpb246KE5TVGltZUludGVydmFsKWR1cmF0aW9uCiAg
ICAgCiAgICAgW19iYWNrZ3JvdW5kV2luZG93LmdldCgpIG9yZGVyV2luZG93Ok5TV2luZG93QmVs
b3cgcmVsYXRpdmVUbzpbW3NlbGYgd2luZG93XSB3aW5kb3dOdW1iZXJdXTsKICAgICAKLSAgICAv
LyBXS1dpbmRvd1NldENsaXBSZWN0IHRha2VzIHdpbmRvdyBjb29yZGluYXRlcywgc28gY29udmVy
dCBmcm9tIHNjcmVlbiBjb29yZGluYXRlcyBoZXJlOgorICAgIC8vIHNldENsaXBSZWN0Rm9yV2lu
ZG93IHRha2VzIHdpbmRvdyBjb29yZGluYXRlcywgc28gY29udmVydCBmcm9tIHNjcmVlbiBjb29y
ZGluYXRlcyBoZXJlOgogICAgIE5TUmVjdCBmaW5hbEJvdW5kcyA9IF9maW5hbEZyYW1lOwogI3By
YWdtYSBjbGFuZyBkaWFnbm9zdGljIHB1c2gKICNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBpZ25v
cmVkICItV2RlcHJlY2F0ZWQtZGVjbGFyYXRpb25zIgogICAgIGZpbmFsQm91bmRzLm9yaWdpbiA9
IFtbc2VsZiB3aW5kb3ddIGNvbnZlcnRTY3JlZW5Ub0Jhc2U6ZmluYWxCb3VuZHMub3JpZ2luXTsK
ICNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwb3AKLSAgICBXS1dpbmRvd1NldENsaXBSZWN0KFtz
ZWxmIHdpbmRvd10sIGZpbmFsQm91bmRzKTsKKyAgICBzZXRDbGlwUmVjdEZvcldpbmRvdyhbc2Vs
ZiB3aW5kb3ddLCBmaW5hbEJvdW5kcyk7CiAgICAgCiAgICAgW1tzZWxmIHdpbmRvd10gc2V0QXV0
b2Rpc3BsYXk6WUVTXTsKICAgICBbW3NlbGYgd2luZG93XSBkaXNwbGF5SWZOZWVkZWRdOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>319581</attachid>
            <date>2017-08-31 23:52:33 -0700</date>
            <delta_ts>2017-09-01 00:58:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-176200-20170831235232.patch</filename>
            <type>text/plain</type>
            <size>64103</size>
            <attacher name="Andy Estes">aestes</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIxNDczCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmNmNjE0ZmZmMzUzODM2
Mjg0MTIwMzJkMzk0M2FkZDllOGNjOWJmNS4uZWMzNTRhZmQ2YTU0ZjBmMzM4MTY4ZTRkYTEzMjUx
MDA1NjZkMjZiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDQ2IEBACiAyMDE3LTA4LTMxICBBbmR5
IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KIAorICAgICAgICBbQ29jb2FdIFVwc3RyZWFtIENv
cmVHcmFwaGljcy1yZWxhdGVkIFdlYktpdFN5c3RlbUludGVyZmFjZSBmdW5jdGlvbnMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NjIwMAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NDb250ZXh0Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2VTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OnN1YnNhbXBsaW5n
TGV2ZWxGb3JTY2FsZUZhY3Rvcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3Jh
cGhpY3NDb250ZXh0Q0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0Ojpj
bGlwT3V0KToKKyAgICAgICAgKFdlYkNvcmU6OmFwcGx5U2hhZG93T2Zmc2V0V29ya2Fyb3VuZElm
TmVlZGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9QYXR0ZXJuQ0cuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UGF0dGVybjo6Y3JlYXRlUGxhdGZvcm1QYXR0ZXJuIGNvbnN0KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRDb2NvYS5t
bToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6Zm9jdXNSaW5nQ29sb3IpOgor
ICAgICAgICAoV2ViQ29yZTo6ZHJhd0ZvY3VzUmluZ0F0VGltZSk6CisgICAgICAgIChXZWJDb3Jl
OjpkcmF3Rm9jdXNSaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OmRyYXdGb2N1c1JpbmdUb0NvbnRl
eHQpOgorICAgICAgICAoV2ViQ29yZTo6ZHJhd0ZvY3VzUmluZ1RvQ29udGV4dEF0VGltZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vaW9zL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2VJT1MubW06CisgICAg
ICAgICogcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpm
bGlwSW1hZ2VTcGVjKToKKyAgICAgICAgKFdlYkNvcmU6OnNldERyYWdJbWFnZUltcGwpOgorICAg
ICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6c2V0RHJhZ0ltYWdlKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9tYWMvUGxhdGZvcm1FdmVudEZhY3RvcnlNYWMubW06CisgICAgICAgICogcGxhdGZvcm0v
bWFjL1Njcm9sbGJhclRoZW1lTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6bGluZW5CYWNrZ3Jv
dW5kQ29sb3IpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9UaGVtZU1hYy5tbToKKyAgICAgICAg
KFdlYkNvcmU6OmRyYXdDZWxsRm9jdXNSaW5nV2l0aEZyYW1lQXRUaW1lKToKKyAgICAgICAgKFdl
YkNvcmU6OmRyYXdDZWxsRm9jdXNSaW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvV2ViQ29y
ZVN5c3RlbUludGVyZmFjZS5oOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9XZWJDb3JlU3lzdGVt
SW50ZXJmYWNlLm1tOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9XZWJXaW5kb3dBbmltYXRpb24u
bW06CisgICAgICAgIChmbGlwUmVjdCk6CisgICAgICAgIChtYWluV2luZG93U2VydmVyQ29ubmVj
dGlvbklEKToKKyAgICAgICAgKHNldFNjYWxlZEZyYW1lRm9yV2luZG93KToKKyAgICAgICAgKC1b
V2ViV2luZG93U2NhbGVBbmltYXRpb24gc2V0Q3VycmVudFByb2dyZXNzOl0pOgorICAgICAgICAo
LVtXZWJXaW5kb3dGYWRlQW5pbWF0aW9uIHNldEN1cnJlbnRQcm9ncmVzczpdKToKKworMjAxNy0w
OC0zMSAgQW5keSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+CisKICAgICAgICAgW01hY10gVXBz
dHJlYW0gQXBwS2l0LXJlbGF0ZWQgV2ViS2l0U3lzdGVtSW50ZXJmYWNlIGZ1bmN0aW9ucwogICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc2MTc1CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9Q
QUwvQ2hhbmdlTG9nCmluZGV4IGVlZWU4NGRjNjE5ZDkyZDRkYTJhMTIwYjIwODZkYzZjNjEwYTY4
YjIuLjdjN2I2NjRiMTJjNDJmZWY2NjdjNTFlMjBjOWIyMWE2MDE3NzQ4NWIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML0No
YW5nZUxvZwpAQCAtMSw1ICsxLDE3IEBACiAyMDE3LTA4LTMxICBBbmR5IEVzdGVzICA8YWVzdGVz
QGFwcGxlLmNvbT4KIAorICAgICAgICBbQ29jb2FdIFVwc3RyZWFtIENvcmVHcmFwaGljcy1yZWxh
dGVkIFdlYktpdFN5c3RlbUludGVyZmFjZSBmdW5jdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NjIwMAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogUEFMLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6CisgICAgICAgICogcGFsL3NwaS9jZy9Db3JlR3JhcGhpY3NTUEkuaDoKKyAgICAgICAgKiBw
YWwvc3BpL21hYy9ISVNlcnZpY2VzU1BJLmg6CisgICAgICAgICogcGFsL3NwaS9tYWMvTlNHcmFw
aGljc1NQSS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9tYWMvSElT
ZXJ2aWNlc1NQSS5oLgorCisyMDE3LTA4LTMxICBBbmR5IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNv
bT4KKwogICAgICAgICBbTWFjXSBVcHN0cmVhbSBBcHBLaXQtcmVsYXRlZCBXZWJLaXRTeXN0ZW1J
bnRlcmZhY2UgZnVuY3Rpb25zCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNzYxNzUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBiNjJiN2VlNTYxZmYwNDQ2ZmVlYmRiNDMw
NjU2NjcxMmNjZGZlZDI4Li40YTA0NDY5N2QyOTY1ZjU3YzFlYmM2OGJiN2NlNmFiMmU4YjYwMmVi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwpAQCAtMSw1ICsxLDIyIEBACiAyMDE3LTA4LTMxICBBbmR5IEVzdGVzICA8YWVz
dGVzQGFwcGxlLmNvbT4KIAorICAgICAgICBbQ29jb2FdIFVwc3RyZWFtIENvcmVHcmFwaGljcy1y
ZWxhdGVkIFdlYktpdFN5c3RlbUludGVyZmFjZSBmdW5jdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NjIwMAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogUGx1Z2luUHJvY2Vzcy9tYWMvUGx1Z2lu
UHJvY2Vzc01hYy5tbToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJvY2Vzczo6cGxhdGZvcm1J
bml0aWFsaXplUHJvY2Vzcyk6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9XaW5kb3dTZXJ2ZXJD
b25uZWN0aW9uLmg6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9XaW5kb3dTZXJ2ZXJDb25uZWN0
aW9uLm1tOgorICAgICAgICAoV2ViS2l0OjpyZWdpc3Rlck9jY2x1c2lvbk5vdGlmaWNhdGlvbkhh
bmRsZXIpOgorICAgICAgICAoV2ViS2l0OjpXaW5kb3dTZXJ2ZXJDb25uZWN0aW9uOjpXaW5kb3dT
ZXJ2ZXJDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2luZG93U2VydmVyQ29ubmVjdGlv
bjo6YXBwbGljYXRpb25XaW5kb3dNb2RpZmljYXRpb25zU3RhcnRlZCk6IERlbGV0ZWQuCisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViU3lzdGVtSW50ZXJmYWNlLm1t
OgorICAgICAgICAoSW5pdFdlYkNvcmVTeXN0ZW1JbnRlcmZhY2UpOgorCisyMDE3LTA4LTMxICBB
bmR5IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KKwogICAgICAgICBbTWFjXSBVcHN0cmVhbSBB
cHBLaXQtcmVsYXRlZCBXZWJLaXRTeXN0ZW1JbnRlcmZhY2UgZnVuY3Rpb25zCiAgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzYxNzUKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvQ2hhbmdlTG9nCmluZGV4IGM0Zjk5NTY3MjU0ZDBiNjIyYzlhOGY5ODc5MTdiNjcwMzM5
NzgwOTMuLjU4ZWU4MDU2MGQ0MGQzNjI5MWFlZDkxNTQwN2UyZjI3NTk2ZTVhN2UgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsNSArMSwzNiBAQAogMjAxNy0wOC0zMSAgQW5keSBF
c3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+CiAKKyAgICAgICAgW0NvY29hXSBVcHN0cmVhbSBDb3Jl
R3JhcGhpY3MtcmVsYXRlZCBXZWJLaXRTeXN0ZW1JbnRlcmZhY2UgZnVuY3Rpb25zCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzYyMDAKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIENhcmJvbi9ISVdlYlZp
ZXcubW06CisgICAgICAgICgtW05TV2luZG93R3JhcGhpY3NDb250ZXh0IF93ZWJfc2V0R3JhcGhp
Y3NQb3J0Ol0pOgorICAgICAgICAob3ZlcnJpZGVDR0NvbnRleHQpOgorICAgICAgICAocmVzdG9y
ZUNHQ29udGV4dCk6CisgICAgICAgIChEcmF3KToKKyAgICAgICAgKiBQbHVnaW5zL0hvc3RlZC9X
ZWJIb3N0ZWROZXRzY2FwZVBsdWdpblZpZXcubW06CisgICAgICAgICgrW1dlYkhvc3RlZE5ldHNj
YXBlUGx1Z2luVmlldyBpbml0aWFsaXplXSk6CisgICAgICAgICogUGx1Z2lucy9XZWJCYXNlTmV0
c2NhcGVQbHVnaW5WaWV3Lmg6CisgICAgICAgICogUGx1Z2lucy9XZWJCYXNlTmV0c2NhcGVQbHVn
aW5WaWV3Lm1tOgorICAgICAgICAoV2ViS2l0OjpzZW5kVXNlckNoYW5nZU5vdGlmaWNhdGlvbnMp
OgorICAgICAgICAqIFBsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5WaWV3Lm1tOgorICAgICAgICAo
K1tXZWJOZXRzY2FwZVBsdWdpblZpZXcgaW5pdGlhbGl6ZV0pOgorICAgICAgICAoLVtXZWJOZXRz
Y2FwZVBsdWdpblZpZXcgc2F2ZUFuZFNldE5ld1BvcnRTdGF0ZUZvclVwZGF0ZTpdKToKKyAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJTeXN0ZW1JbnRlcmZhY2UubW06CisgICAgICAgIChJbml0
V2ViQ29yZVN5c3RlbUludGVyZmFjZSk6CisgICAgICAgICogV2ViVmlldy9XZWJGcmFtZS5tbToK
KyAgICAgICAgKC1bV2ViRnJhbWUgX3BhaW50QmVoYXZpb3JGb3JEZXN0aW5hdGlvbkNvbnRleHQ6
XSk6CisgICAgICAgICogV2ViVmlldy9XZWJGdWxsU2NyZWVuQ29udHJvbGxlci5tbToKKyAgICAg
ICAgKHNldENsaXBSZWN0Rm9yV2luZG93KToKKyAgICAgICAgKC1bV2ViRnVsbFNjcmVlbkNvbnRy
b2xsZXIgZmluaXNoZWRFbnRlckZ1bGxTY3JlZW5BbmltYXRpb246XSk6CisgICAgICAgICgtW1dl
YkZ1bGxTY3JlZW5Db250cm9sbGVyIGZpbmlzaGVkRXhpdEZ1bGxTY3JlZW5BbmltYXRpb246XSk6
CisgICAgICAgICgtW1dlYkZ1bGxTY3JlZW5Db250cm9sbGVyIF9zdGFydEVudGVyRnVsbFNjcmVl
bkFuaW1hdGlvbldpdGhEdXJhdGlvbjpdKToKKyAgICAgICAgKC1bV2ViRnVsbFNjcmVlbkNvbnRy
b2xsZXIgX3N0YXJ0RXhpdEZ1bGxTY3JlZW5BbmltYXRpb25XaXRoRHVyYXRpb246XSk6CisKKzIw
MTctMDgtMzEgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29tPgorCiAgICAgICAgIFtNYWNd
IFVwc3RyZWFtIEFwcEtpdC1yZWxhdGVkIFdlYktpdFN5c3RlbUludGVyZmFjZSBmdW5jdGlvbnMK
ICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NjE3NQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvUEFMLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9QQUwvUEFMLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
aW5kZXggMTNjZWNjY2U2YzQzNmYwNTAyZWQ5OTcyYmViNGIxYWViM2YzNDBiOC4uM2EwNDBhYTI0
MDg5Mzg5MmNhYmU1OGU1ZjdjMjA4M2YxNjEyYjZkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvUEFML1BBTC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1BBTC9QQUwueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTA0LDYgKzEwNCw3IEBACiAJ
CUExMDgyNkYxMUY1NzNCQ0EwMDQ3NzJBQyAvKiBOU1Jlc3BvbmRlclNQSS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTEwODI2RjAxRjU3M0JDQTAwNDc3
MkFDIC8qIE5TUmVzcG9uZGVyU1BJLmggKi87IH07CiAJCUExMDgyNkY5MUY1NzYyOTIwMDQ3NzJB
QyAvKiBXZWJQYW5lbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQTEwODI2RjcxRjU3NjI5MjAwNDc3MkFDIC8qIFdlYlBhbmVsLmggKi87IH07CiAJCUEx
MDgyNkZBMUY1NzYyOTIwMDQ3NzJBQyAvKiBXZWJQYW5lbC5tbSBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExMDgyNkY4MUY1NzYyOTIwMDQ3NzJBQyAvKiBX
ZWJQYW5lbC5tbSAqLzsgfTsKKwkJQTEwODI2RkUxRjU4QTQzMzAwNDc3MkFDIC8qIE5TR3JhcGhp
Y3NTUEkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEEx
MDgyNkZEMUY1OEE0MzMwMDQ3NzJBQyAvKiBOU0dyYXBoaWNzU1BJLmggKi87IH07CiAJCUExRjU1
RENGMUY1NTI4RUMwMEVEQjc1RiAvKiBNZXRhZGF0YVNQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFGNTVEQ0UxRjU1MjhFQzAwRURCNzVGIC8qIE1l
dGFkYXRhU1BJLmggKi87IH07CiAJCUEzMEQ0MTIxMUYwREQwRUEwMEI3MTk1NCAvKiBLaWxsUmlu
Zy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTMwRDQx
MUUxRjBERDBFQTAwQjcxOTU0IC8qIEtpbGxSaW5nLmggKi87IH07CiAJCUEzMEQ0MTIyMUYwREQw
RUEwMEI3MTk1NCAvKiBLaWxsUmluZy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBMzBENDExRjFGMEREMEVBMDBCNzE5NTQgLyogS2lsbFJpbmcuY3Bw
ICovOyB9OwpAQCAtMjIzLDYgKzIyNCw3IEBACiAJCUExMDgyNkYwMUY1NzNCQ0EwMDQ3NzJBQyAv
KiBOU1Jlc3BvbmRlclNQSS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOU1Jlc3BvbmRlclNQSS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMTA4MjZGNzFGNTc2MjkyMDA0NzcyQUMgLyogV2Vi
UGFuZWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViUGFuZWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQTEwODI2RjgxRjU3NjI5MjAwNDc3MkFDIC8qIFdlYlBhbmVsLm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBwYXRoID0gV2ViUGFuZWwubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUExMDgyNkZEMUY1OEE0MzMwMDQ3NzJBQyAvKiBOU0dyYXBoaWNzU1BJLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IE5TR3JhcGhpY3NTUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTFGNTVE
Q0UxRjU1MjhFQzAwRURCNzVGIC8qIE1ldGFkYXRhU1BJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1ldGFk
YXRhU1BJLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUEzMEQ0MTFFMUYwREQwRUEw
MEI3MTk1NCAvKiBLaWxsUmluZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBL
aWxsUmluZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMzBENDExRjFGMEREMEVB
MDBCNzE5NTQgLyogS2lsbFJpbmcuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gS2lsbFJpbmcuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzU1LDYg
KzM1Nyw3IEBACiAJCQkJMEM3Nzg1NzUxRjQ1MTMwRjAwRjRFQkI2IC8qIE5TQXBwbGljYXRpb25T
UEkuaCAqLywKIAkJCQkwQzc3ODU3NjFGNDUxMzBGMDBGNEVCQjYgLyogTlNFdmVudFNQSS5oICov
LAogCQkJCTBDNzc4NTc3MUY0NTEzMEYwMEY0RUJCNiAvKiBOU0ZvbnRTUEkuaCAqLywKKwkJCQlB
MTA4MjZGRDFGNThBNDMzMDA0NzcyQUMgLyogTlNHcmFwaGljc1NQSS5oICovLAogCQkJCTBDNzc4
NTc4MUY0NTEzMEYwMEY0RUJCNiAvKiBOU0ltbWVkaWF0ZUFjdGlvbkdlc3R1cmVSZWNvZ25pemVy
U1BJLmggKi8sCiAJCQkJMEM3Nzg1NzkxRjQ1MTMwRjAwRjRFQkI2IC8qIE5TTWVudVNQSS5oICov
LAogCQkJCTBDNzc4NTdBMUY0NTEzMEYwMEY0RUJCNiAvKiBOU1Bhc3RlYm9hcmRTUEkuaCAqLywK
QEAgLTU1MSw2ICs1NTQsNyBAQAogCQkJCTBDMkRBMTRFMUYzQkVCNDkwMERCQzMxNyAvKiBOU0V4
dGVuc2lvblNQSS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEMyREExNEYxRjNCRUI0OTAwREJDMzE3
IC8qIE5TRmlsZU1hbmFnZXJTUEkuaCBpbiBIZWFkZXJzICovLAogCQkJCTBDNzc4NTkwMUY0NTEz
MEYwMEY0RUJCNiAvKiBOU0ZvbnRTUEkuaCBpbiBIZWFkZXJzICovLAorCQkJCUExMDgyNkZFMUY1
OEE0MzMwMDQ3NzJBQyAvKiBOU0dyYXBoaWNzU1BJLmggaW4gSGVhZGVycyAqLywKIAkJCQkwQzc3
ODU5MTFGNDUxMzBGMDBGNEVCQjYgLyogTlNJbW1lZGlhdGVBY3Rpb25HZXN0dXJlUmVjb2duaXpl
clNQSS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEM3Nzg1OTIxRjQ1MTMwRjAwRjRFQkI2IC8qIE5T
TWVudVNQSS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEM3Nzg1OTMxRjQ1MTMwRjAwRjRFQkI2IC8q
IE5TUGFzdGVib2FyZFNQSS5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9QQUwvcGFsL3NwaS9jZy9Db3JlR3JhcGhpY3NTUEkuaCBiL1NvdXJjZS9XZWJDb3JlL1BB
TC9wYWwvc3BpL2NnL0NvcmVHcmFwaGljc1NQSS5oCmluZGV4IDdjMjkxYzkxNGQ2OWY1NmQ4NmRi
YjRhODgxZmIyMzE4OWM1YTVhNWMuLjNlMzVlYjI1YzhlYjM1MmIyNWRhZTIwYjMyZmI5ODRkZDE2
Yzc1NWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NnL0NvcmVHcmFw
aGljc1NQSS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NnL0NvcmVHcmFwaGlj
c1NQSS5oCkBAIC0xMzcsMjEgKzEzNyw3NCBAQCBzdGF0aWMgaW5saW5lIENHRmxvYXQgQ0dGbG9h
dE1pbihDR0Zsb2F0IGEsIENHRmxvYXQgYikgeyByZXR1cm4gaXNuYW4oYSkgPyBiIDogKAogCiB0
eXBlZGVmIHN0cnVjdCBDR0ZvbnRDYWNoZSBDR0ZvbnRDYWNoZTsKIAotI2lmIFBMQVRGT1JNKE1B
QykKLXR5cGVkZWYgdWludDMyX3QgQ0dTQ29ubmVjdGlvbklEOwotdHlwZWRlZiB1aW50MzJfdCBD
R1NXaW5kb3dJRDsKLXR5cGVkZWYgdWludDMyX3QgQ0dTV2luZG93Q291bnQ7Ci10eXBlZGVmIENH
U1dpbmRvd0lEICpDR1NXaW5kb3dJRExpc3Q7CisjaWYgUExBVEZPUk0oQ09DT0EpCiAKIGVudW0g
ewogICAgIGtDR1NXaW5kb3dDYXB0dXJlTm9taW5hbFJlc29sdXRpb24gPSAweDAyMDAsCiAgICAg
a0NHU0NhcHR1cmVJZ25vcmVHbG9iYWxDbGlwU2hhcGUgPSAweDA4MDAsCiB9OwogdHlwZWRlZiB1
aW50MzJfdCBDR1NXaW5kb3dDYXB0dXJlT3B0aW9uczsKLSNlbmRpZgorCit0eXBlZGVmIENGX0VO
VU0gKGludDMyX3QsIENHU3R5bGVEcmF3T3JkZXJpbmcpIHsKKyAgICBrQ0dTdHlsZURyYXdPcmRl
cmluZ1N0eWxlT25seSA9IDAsCisgICAga0NHU3R5bGVEcmF3T3JkZXJpbmdCZWxvdyA9IDEsCisg
ICAga0NHU3R5bGVEcmF3T3JkZXJpbmdBYm92ZSA9IDIsCit9OworCit0eXBlZGVmIENGX0VOVU0g
KGludDMyX3QsIENHRm9jdXNSaW5nT3JkZXJpbmcpIHsKKyAgICBrQ0dGb2N1c1JpbmdPcmRlcmlu
Z05vbmUgPSBrQ0dTdHlsZURyYXdPcmRlcmluZ1N0eWxlT25seSwKKyAgICBrQ0dGb2N1c1JpbmdP
cmRlcmluZ0JlbG93ID0ga0NHU3R5bGVEcmF3T3JkZXJpbmdCZWxvdywKKyAgICBrQ0dGb2N1c1Jp
bmdPcmRlcmluZ0Fib3ZlID0ga0NHU3R5bGVEcmF3T3JkZXJpbmdBYm92ZSwKK307CisKK3R5cGVk
ZWYgQ0ZfRU5VTSAoaW50MzJfdCwgQ0dGb2N1c1JpbmdUaW50KSB7CisgICAga0NHRm9jdXNSaW5n
VGludEJsdWUgPSAwLAorICAgIGtDR0ZvY3VzUmluZ1RpbnRHcmFwaGl0ZSA9IDEsCit9OworCitz
dHJ1Y3QgQ0dGb2N1c1JpbmdTdHlsZSB7CisgICAgdW5zaWduZWQgaW50IHZlcnNpb247CisgICAg
Q0dGb2N1c1JpbmdUaW50IHRpbnQ7CisgICAgQ0dGb2N1c1JpbmdPcmRlcmluZyBvcmRlcmluZzsK
KyAgICBDR0Zsb2F0IGFscGhhOworICAgIENHRmxvYXQgcmFkaXVzOworICAgIENHRmxvYXQgdGhy
ZXNob2xkOworICAgIENHUmVjdCBib3VuZHM7CisgICAgaW50IGFjY3VtdWxhdGU7Cit9OwordHlw
ZWRlZiBzdHJ1Y3QgQ0dGb2N1c1JpbmdTdHlsZSBDR0ZvY3VzUmluZ1N0eWxlOworCit0eXBlZGVm
IENGX0VOVU0odWludDMyX3QsIENHU05vdGlmaWNhdGlvblR5cGUpIHsKKyAgICBrQ0dTRmlyc3RD
b25uZWN0aW9uTm90aWZpY2F0aW9uID0gOTAwLAorICAgIGtDR1NGaXJzdFNlc3Npb25Ob3RpZmlj
YXRpb24gPSAxNTAwLAorfTsKKworc3RhdGljIGNvbnN0IENHU05vdGlmaWNhdGlvblR5cGUga0NH
U0Nvbm5lY3Rpb25XaW5kb3dNb2RpZmljYXRpb25zU3RhcnRlZCA9IChDR1NOb3RpZmljYXRpb25U
eXBlKShrQ0dTRmlyc3RDb25uZWN0aW9uTm90aWZpY2F0aW9uICsgNik7CitzdGF0aWMgY29uc3Qg
Q0dTTm90aWZpY2F0aW9uVHlwZSBrQ0dTQ29ubmVjdGlvbldpbmRvd01vZGlmaWNhdGlvbnNTdG9w
cGVkID0gKENHU05vdGlmaWNhdGlvblR5cGUpKGtDR1NGaXJzdENvbm5lY3Rpb25Ob3RpZmljYXRp
b24gKyA3KTsKK3N0YXRpYyBjb25zdCBDR1NOb3RpZmljYXRpb25UeXBlIGtDR1Nlc3Npb25Db25z
b2xlQ29ubmVjdCA9IGtDR1NGaXJzdFNlc3Npb25Ob3RpZmljYXRpb247CitzdGF0aWMgY29uc3Qg
Q0dTTm90aWZpY2F0aW9uVHlwZSBrQ0dTZXNzaW9uQ29uc29sZURpc2Nvbm5lY3QgPSAoQ0dTTm90
aWZpY2F0aW9uVHlwZSkoa0NHU2Vzc2lvbkNvbnNvbGVDb25uZWN0ICsgMSk7CisKKyNlbmRpZiAv
LyBQTEFURk9STShDT0NPQSkKIAogI2VuZGlmIC8vIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCiAK
KyNpZiBQTEFURk9STShDT0NPQSkKK3R5cGVkZWYgdWludDMyX3QgQ0dTQnl0ZUNvdW50OwordHlw
ZWRlZiB1aW50MzJfdCBDR1NDb25uZWN0aW9uSUQ7Cit0eXBlZGVmIHVpbnQzMl90IENHU1dpbmRv
d0NvdW50OwordHlwZWRlZiB1aW50MzJfdCBDR1NXaW5kb3dJRDsKKwordHlwZWRlZiBDR1NXaW5k
b3dJRCogQ0dTV2luZG93SURMaXN0OwordHlwZWRlZiBzdHJ1Y3QgQ0ZfQlJJREdFRF9UWVBFKGlk
KSBDR1NSZWdpb25PYmplY3QqIENHU1JlZ2lvbk9iajsKK3R5cGVkZWYgc3RydWN0IENGX0JSSURH
RURfVFlQRShpZCkgQ0dTdHlsZSogQ0dTdHlsZVJlZjsKKwordHlwZWRlZiB2b2lkKiBDR1NOb3Rp
ZmljYXRpb25Bcmc7Cit0eXBlZGVmIHZvaWQqIENHU05vdGlmaWNhdGlvbkRhdGE7CisKK3R5cGVk
ZWYgdm9pZCAoKkNHU05vdGlmeUNvbm5lY3Rpb25Qcm9jUHRyKShDR1NOb3RpZmljYXRpb25UeXBl
LCB2b2lkKiBkYXRhLCB1aW50MzJfdCBkYXRhX2xlbmd0aCwgdm9pZCogYXJnLCBDR1NDb25uZWN0
aW9uSUQpOwordHlwZWRlZiB2b2lkICgqQ0dTTm90aWZ5UHJvY1B0cikoQ0dTTm90aWZpY2F0aW9u
VHlwZSwgdm9pZCogZGF0YSwgdWludDMyX3QgZGF0YV9sZW5ndGgsIHZvaWQqIGFyZyk7CisjZW5k
aWYKKwogV1RGX0VYVEVSTl9DX0JFR0lOCiAKIENHQ29sb3JSZWYgQ0dDb2xvclRyYW5zZm9ybUNv
bnZlcnRDb2xvcihDR0NvbG9yVHJhbnNmb3JtUmVmLCBDR0NvbG9yUmVmLCBDR0NvbG9yUmVuZGVy
aW5nSW50ZW50KTsKQEAgLTE4Niw2ICsyMzksOCBAQCBDR0RhdGFQcm92aWRlclJlZiBDR1BERkRv
Y3VtZW50R2V0RGF0YVByb3ZpZGVyKENHUERGRG9jdW1lbnRSZWYpOwogCiBDR0ZvbnRBbnRpYWxp
YXNpbmdTdHlsZSBDR0NvbnRleHRHZXRGb250QW50aWFsaWFzaW5nU3R5bGUoQ0dDb250ZXh0UmVm
KTsKIHZvaWQgQ0dDb250ZXh0U2V0Rm9udEFudGlhbGlhc2luZ1N0eWxlKENHQ29udGV4dFJlZiwg
Q0dGb250QW50aWFsaWFzaW5nU3R5bGUpOworYm9vbCBDR0NvbnRleHREcmF3c1dpdGhDb3JyZWN0
U2hhZG93T2Zmc2V0cyhDR0NvbnRleHRSZWYpOworQ0dQYXR0ZXJuUmVmIENHUGF0dGVybkNyZWF0
ZVdpdGhJbWFnZTIoQ0dJbWFnZVJlZiwgQ0dBZmZpbmVUcmFuc2Zvcm0sIENHUGF0dGVyblRpbGlu
Zyk7CiAKICNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJ
UkVEID49IDEwMTIwMCkgfHwgUExBVEZPUk0oSU9TKQogYm9vbCBDR0NvbG9yU3BhY2VVc2VzRXh0
ZW5kZWRSYW5nZShDR0NvbG9yU3BhY2VSZWYpOwpAQCAtMjAzLDEwICsyNTgsMjAgQEAgQ0dDb2xv
clNwYWNlUmVmIENHSU9TdXJmYWNlQ29udGV4dEdldENvbG9yU3BhY2UoQ0dDb250ZXh0UmVmKTsK
ICNlbmRpZgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCi1DR1NSZWdpb25FbnVtZXJhdG9yT2JqIENH
U1JlZ2lvbkVudW1lcmF0b3IoQ0dSZWdpb25SZWYpOwotQ0dSZWN0KiBDR1NOZXh0UmVjdChjb25z
dCBDR1NSZWdpb25FbnVtZXJhdG9yT2JqKTsKLUNHRXJyb3IgQ0dTUmVsZWFzZVJlZ2lvbkVudW1l
cmF0b3IoY29uc3QgQ0dTUmVnaW9uRW51bWVyYXRvck9iaik7CiBDR0NvbG9yU3BhY2VSZWYgQ0dD
b250ZXh0Q29weURldmljZUNvbG9yU3BhY2UoQ0dDb250ZXh0UmVmKTsKK0NHRXJyb3IgQ0dTTmV3
UmVnaW9uV2l0aFJlY3QoY29uc3QgQ0dSZWN0KiwgQ0dSZWdpb25SZWYqKTsKK0NHRXJyb3IgQ0dT
UGFja2FnZXNFbmFibGVDb25uZWN0aW9uT2NjbHVzaW9uTm90aWZpY2F0aW9ucyhDR1NDb25uZWN0
aW9uSUQsIGJvb2wgZmxhZywgYm9vbCogb3V0Q3VycmVudFZpc2liaWxpdHlTdGF0ZSk7CitDR0Vy
cm9yIENHU1BhY2thZ2VzRW5hYmxlQ29ubmVjdGlvbldpbmRvd01vZGlmaWNhdGlvbk5vdGlmaWNh
dGlvbnMoQ0dTQ29ubmVjdGlvbklELCBib29sIGZsYWcsIGJvb2wqIG91dENvbm5lY3Rpb25Jc0N1
cnJlbnRseUlkbGUpOworQ0dFcnJvciBDR1NSZWdpc3RlckNvbm5lY3Rpb25Ob3RpZnlQcm9jKENH
U0Nvbm5lY3Rpb25JRCwgQ0dTTm90aWZ5Q29ubmVjdGlvblByb2NQdHIsIENHU05vdGlmaWNhdGlv
blR5cGUsIHZvaWQqIGFyZyk7CitDR0Vycm9yIENHU1JlZ2lzdGVyTm90aWZ5UHJvYyhDR1NOb3Rp
ZnlQcm9jUHRyLCBDR1NOb3RpZmljYXRpb25UeXBlLCB2b2lkKiBhcmcpOworQ0dFcnJvciBDR1NS
ZWxlYXNlUmVnaW9uKGNvbnN0IENHUmVnaW9uUmVmIENGX1JFTEVBU0VTX0FSR1VNRU5UKTsKK0NH
RXJyb3IgQ0dTUmVsZWFzZVJlZ2lvbkVudW1lcmF0b3IoY29uc3QgQ0dTUmVnaW9uRW51bWVyYXRv
ck9iaik7CitDR0Vycm9yIENHU1NldFdpbmRvd0FscGhhKENHU0Nvbm5lY3Rpb25JRCwgQ0dTV2lu
ZG93SUQsIGZsb2F0IGFscGhhKTsKK0NHRXJyb3IgQ0dTU2V0V2luZG93V2FycChDR1NDb25uZWN0
aW9uSUQsIENHU1dpbmRvd0lELCBpbnQgdywgaW50IGgsIGNvbnN0IGZsb2F0KiBtZXNoKTsKK0NH
UmVjdCogQ0dTTmV4dFJlY3QoY29uc3QgQ0dTUmVnaW9uRW51bWVyYXRvck9iaik7CitDR1NSZWdp
b25FbnVtZXJhdG9yT2JqIENHU1JlZ2lvbkVudW1lcmF0b3IoQ0dSZWdpb25SZWYpOworQ0dTdHls
ZVJlZiBDR1N0eWxlQ3JlYXRlRm9jdXNSaW5nV2l0aENvbG9yKGNvbnN0IENHRm9jdXNSaW5nU3R5
bGUqLCBDR0NvbG9yUmVmKTsKK3ZvaWQgQ0dDb250ZXh0U2V0U3R5bGUoQ0dDb250ZXh0UmVmLCBD
R1N0eWxlUmVmKTsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oV0lOKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvbWFjL0hJU2VydmljZXNTUEkuaCBiL1NvdXJjZS9XZWJD
b3JlL1BBTC9wYWwvc3BpL21hYy9ISVNlcnZpY2VzU1BJLmgKaW5kZXggOWYzNWRjZDRkMDNhNTdh
MDg2YjBhMzY1ZGZiMzlkZGZmY2M4MTk4NS4uYTM1NWI5NGZlNjMwOTJlZjVhY2QwYjVjOTVlMDNk
ZDQ2ZTk1MzgxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvbWFjL0hJ
U2VydmljZXNTUEkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9tYWMvSElTZXJ2
aWNlc1NQSS5oCkBAIC0yOCwyMSArMjgsNDUgQEAKICNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RL
KQogCiAjaW5jbHVkZSA8SElTZXJ2aWNlcy9BWFRleHRNYXJrZXIuaD4KKyNpbmNsdWRlIDxISVNl
cnZpY2VzL0NvcmVEcmFnLmg+CisKKyNlbHNlCisKK2VudW0geworICAgIGtDb3JlRHJhZ0ltYWdl
U3BlY1ZlcnNpb25PbmUgPSAxLAorfTsKKworc3RydWN0IENvcmVEcmFnSW1hZ2VTcGVjIHsKKyAg
ICBVSW50MzIgdmVyc2lvbjsKKyAgICBTSW50MzIgcGl4ZWxzV2lkZTsKKyAgICBTSW50MzIgcGl4
ZWxzSGlnaDsKKyAgICBTSW50MzIgYml0c1BlclNhbXBsZTsKKyAgICBTSW50MzIgc2FtcGxlc1Bl
clBpeGVsOworICAgIFNJbnQzMiBiaXRzUGVyUGl4ZWw7CisgICAgU0ludDMyIGJ5dGVzUGVyUm93
OworICAgIEJvb2xlYW4gaXNQbGFuYXI7CisgICAgQm9vbGVhbiBoYXNBbHBoYTsKKyAgICBjb25z
dCBVSW50OCogZGF0YVs1XTsKK307CiAKICNlbmRpZgogCi10eXBlZGVmIGNvbnN0IHN0cnVjdCBf
X0FYVGV4dE1hcmtlciAqQVhUZXh0TWFya2VyUmVmOwotdHlwZWRlZiBjb25zdCBzdHJ1Y3QgX19B
WFRleHRNYXJrZXJSYW5nZSAqQVhUZXh0TWFya2VyUmFuZ2VSZWY7Cit0eXBlZGVmIGNvbnN0IHN0
cnVjdCBfX0FYVGV4dE1hcmtlciogQVhUZXh0TWFya2VyUmVmOwordHlwZWRlZiBjb25zdCBzdHJ1
Y3QgX19BWFRleHRNYXJrZXJSYW5nZSogQVhUZXh0TWFya2VyUmFuZ2VSZWY7Cit0eXBlZGVmIHN0
cnVjdCBDb3JlRHJhZ0ltYWdlU3BlYyBDb3JlRHJhZ0ltYWdlU3BlYzsKK3R5cGVkZWYgc3RydWN0
IE9wYXF1ZUNvcmVEcmFnKiBDb3JlRHJhZ1JlZjsKIAogV1RGX0VYVEVSTl9DX0JFR0lOCiAKLUNG
VHlwZUlEIEFYVGV4dE1hcmtlckdldFR5cGVJRCgpOwotQ0ZUeXBlSUQgQVhUZXh0TWFya2VyUmFu
Z2VHZXRUeXBlSUQoKTsKLUFYVGV4dE1hcmtlclJlZiBBWFRleHRNYXJrZXJDcmVhdGUoQ0ZBbGxv
Y2F0b3JSZWYsIGNvbnN0IFVJbnQ4KiBieXRlcywgQ0ZJbmRleCBsZW5ndGgpOwotQ0ZJbmRleCBB
WFRleHRNYXJrZXJHZXRMZW5ndGgoQVhUZXh0TWFya2VyUmVmKTsKLWNvbnN0IFVJbnQ4KiBBWFRl
eHRNYXJrZXJHZXRCeXRlUHRyKEFYVGV4dE1hcmtlclJlZik7CiBBWFRleHRNYXJrZXJSYW5nZVJl
ZiBBWFRleHRNYXJrZXJSYW5nZUNyZWF0ZShDRkFsbG9jYXRvclJlZiwgQVhUZXh0TWFya2VyUmVm
IHN0YXJ0TWFya2VyLCBBWFRleHRNYXJrZXJSZWYgZW5kTWFya2VyKTsKK0FYVGV4dE1hcmtlclJl
ZiBBWFRleHRNYXJrZXJDcmVhdGUoQ0ZBbGxvY2F0b3JSZWYsIGNvbnN0IFVJbnQ4KiBieXRlcywg
Q0ZJbmRleCBsZW5ndGgpOwogQVhUZXh0TWFya2VyUmVmIEFYVGV4dE1hcmtlclJhbmdlQ29weVN0
YXJ0TWFya2VyKEFYVGV4dE1hcmtlclJhbmdlUmVmKTsKIEFYVGV4dE1hcmtlclJlZiBBWFRleHRN
YXJrZXJSYW5nZUNvcHlFbmRNYXJrZXIoQVhUZXh0TWFya2VyUmFuZ2VSZWYpOworQ0ZJbmRleCBB
WFRleHRNYXJrZXJHZXRMZW5ndGgoQVhUZXh0TWFya2VyUmVmKTsKK0NGVHlwZUlEIEFYVGV4dE1h
cmtlckdldFR5cGVJRCgpOworQ0ZUeXBlSUQgQVhUZXh0TWFya2VyUmFuZ2VHZXRUeXBlSUQoKTsK
K0NvcmVEcmFnUmVmIENvcmVEcmFnR2V0Q3VycmVudERyYWcoKTsKK09TU3RhdHVzIENvcmVEcmFn
U2V0SW1hZ2UoQ29yZURyYWdSZWYsIENHUG9pbnQgaW1hZ2VPZmZzZXQsIENvcmVEcmFnSW1hZ2VT
cGVjKiwgQ0dTUmVnaW9uT2JqIGltYWdlU2hhcGUsIGZsb2F0IG92ZXJhbGxBbHBoYSk7Citjb25z
dCBVSW50OCogQVhUZXh0TWFya2VyR2V0Qnl0ZVB0cihBWFRleHRNYXJrZXJSZWYpOwogCiBXVEZf
RVhURVJOX0NfRU5ECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9tYWMv
TlNHcmFwaGljc1NQSS5oIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvbWFjL05TR3JhcGhp
Y3NTUEkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4xMDYxZTJlOTk5YjE4YjIxMGJlMDAxY2FhYzI3YmEyYjJiYWJi
MmU2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvbWFjL05T
R3JhcGhpY3NTUEkuaApAQCAtMCwwICsxLDQyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNl
CisKKyNpZiBQTEFURk9STShNQUMpCisKKyNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQorCisj
aW5jbHVkZSA8QXBwS2l0L05TR3JhcGhpY3NfUHJpdmF0ZS5oPgorCisjZW5kaWYKKworV1RGX0VY
VEVSTl9DX0JFR0lOCisKK0JPT0wgTlNJbml0aWFsaXplQ0dGb2N1c1JpbmdTdHlsZUZvclRpbWUo
TlNGb2N1c1JpbmdQbGFjZW1lbnQsIENHRm9jdXNSaW5nU3R5bGUqLCBOU1RpbWVJbnRlcnZhbCk7
CisKK1dURl9FWFRFUk5fQ19FTkQKKworI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKaW5kZXgg
MThhY2RkYmU3ZWZmZmE0MjlkMTg1NzgzOWFiNmU2Njc0NjZhM2Q4NS4uYzE0YjJhNTVlNmFhN2Y5
MGQyMDAzYzQ2Njg0MzQzMjJlMDg1NDU5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKQEAgLTQ0NSw2ICs0NDUsNyBAQCBwdWJs
aWM6CiAjaWYgUExBVEZPUk0oTUFDKQogICAgIHZvaWQgZHJhd0ZvY3VzUmluZyhjb25zdCBQYXRo
JiwgZG91YmxlIHRpbWVPZmZzZXQsIGJvb2wmIG5lZWRzUmVkcmF3KTsKICAgICB2b2lkIGRyYXdG
b2N1c1JpbmcoY29uc3QgVmVjdG9yPEZsb2F0UmVjdD4mLCBkb3VibGUgdGltZU9mZnNldCwgYm9v
bCYgbmVlZHNSZWRyYXcpOworICAgIHN0YXRpYyBDR0NvbG9yUmVmIGZvY3VzUmluZ0NvbG9yKCk7
CiAjZW5kaWYKIAogICAgIHZvaWQgc2V0TGluZUNhcChMaW5lQ2FwKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcAppbmRleCA2Njk2Yzk2MGE1
ODc1ZjA0MzE3MjliMTE5YWI2YjI0MTI3ZDdhNWNhLi4wMjI4ZTM5MjlhMjY2ZWE5NzMyYmJhOGVl
NjA1NzNmYTUwOWEzNTBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9JbWFnZVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2VTb3VyY2UuY3BwCkBAIC0xODQsNyArMTg0LDcgQEAgU3Vic2FtcGxpbmdMZXZlbCBJ
bWFnZVNvdXJjZTo6c3Vic2FtcGxpbmdMZXZlbEZvclNjYWxlRmFjdG9yKEdyYXBoaWNzQ29udGV4
dCYgY28KIHsKICNpZiBVU0UoQ0cpCiAgICAgLy8gTmV2ZXIgdXNlIHN1YnNhbXBsZWQgaW1hZ2Vz
IGZvciBkcmF3aW5nIGludG8gUERGIGNvbnRleHRzLgotICAgIGlmICh3a0NHQ29udGV4dElzUERG
Q29udGV4dChjb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpKSkKKyAgICBpZiAoQ0dDb250ZXh0R2V0
VHlwZShjb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpKSA9PSBrQ0dDb250ZXh0VHlwZVBERikKICAg
ICAgICAgcmV0dXJuIFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQ7CiAKICAgICBmbG9hdCBzY2Fs
ZSA9IHN0ZDo6bWluKGZsb2F0KDEpLCBzdGQ6Om1heChzY2FsZUZhY3Rvci53aWR0aCgpLCBzY2Fs
ZUZhY3Rvci5oZWlnaHQoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCmluZGV4IGQ1ODgzOWFlNThiYjUx
MGQ1MDdkNDY1YjA2MTkyZTAyMGJhZDVhYmQuLjM3ODhiYzI0MTQyNGY1NDY3ZWYxYTIxYTI2ZWNm
ZmE0ZTgzY2EwMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAKQEAgLTk4Nyw3ICs5ODcsNyBAQCB2b2lk
IEdyYXBoaWNzQ29udGV4dDo6Y2xpcE91dChjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiAgICAgLy8g
aGFzIGNlcnRhaW4gdHJhbnNmb3JtcyB0aGF0IGFyZW4ndCBqdXN0IGEgdHJhbnNsYXRpb24gb3Ig
YSBzY2FsZS4gQW5kIGR1ZSB0byA8cmRhcjovL3Byb2JsZW0vMTQ2MzQ0NTM+CiAgICAgLy8gd2Ug
Y2Fubm90IHVzZSBpdCBpbiBmb3IgYSBwcmludGluZyBjb250ZXh0IGVpdGhlci4KICAgICBjb25z
dCBBZmZpbmVUcmFuc2Zvcm0mIGN0bSA9IGdldENUTSgpOwotICAgIGJvb2wgY2FuVXNlQ0dSZWN0
SW5maW5pdGUgPSAhd2tDR0NvbnRleHRJc1BERkNvbnRleHQocGxhdGZvcm1Db250ZXh0KCkpICYm
ICghaXNBY2NlbGVyYXRlZENvbnRleHQoKSB8fCAoIWN0bS5iKCkgJiYgIWN0bS5jKCkpKTsKKyAg
ICBib29sIGNhblVzZUNHUmVjdEluZmluaXRlID0gQ0dDb250ZXh0R2V0VHlwZShwbGF0Zm9ybUNv
bnRleHQoKSkgIT0ga0NHQ29udGV4dFR5cGVQREYgJiYgKCFpc0FjY2VsZXJhdGVkQ29udGV4dCgp
IHx8ICghY3RtLmIoKSAmJiAhY3RtLmMoKSkpOwogICAgIENHUmVjdCByZWN0c1syXSA9IHsgY2Fu
VXNlQ0dSZWN0SW5maW5pdGUgPyBDR1JlY3RJbmZpbml0ZSA6IENHQ29udGV4dEdldENsaXBCb3Vu
ZGluZ0JveChwbGF0Zm9ybUNvbnRleHQoKSksIHJlY3QgfTsKICAgICBDR0NvbnRleHRCZWdpblBh
dGgocGxhdGZvcm1Db250ZXh0KCkpOwogICAgIENHQ29udGV4dEFkZFJlY3RzKHBsYXRmb3JtQ29u
dGV4dCgpLCByZWN0cywgMik7CkBAIC0xMDkzLDcgKzEwOTMsNyBAQCBzdGF0aWMgdm9pZCBhcHBs
eVNoYWRvd09mZnNldFdvcmthcm91bmRJZk5lZWRlZChjb25zdCBHcmFwaGljc0NvbnRleHQmIGNv
bnRleHQsCiAgICAgaWYgKGNvbnRleHQuaXNBY2NlbGVyYXRlZENvbnRleHQoKSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgaWYgKHdrQ0dDb250ZXh0RHJhd3NXaXRoQ29ycmVjdFNoYWRvd09mZnNl
dHMoY29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKSkpCisgICAgaWYgKENHQ29udGV4dERyYXdzV2l0
aENvcnJlY3RTaGFkb3dPZmZzZXRzKGNvbnRleHQucGxhdGZvcm1Db250ZXh0KCkpKQogICAgICAg
ICByZXR1cm47CiAKICAgICAvLyBXb3JrIGFyb3VuZCA8cmRhcjovL3Byb2JsZW0vNTUzOTM4OD4g
YnkgZW5zdXJpbmcgdGhhdCB0aGUgb2Zmc2V0cyB3aWxsIGdldCB0cnVuY2F0ZWQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BhdHRlcm5DRy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QYXR0ZXJuQ0cuY3BwCmluZGV4IDk4
ZTY5ZGU4ZWQ4OWEyNGU4ODZhMTQyYTA4Mzk1OWUyYzcyMTM1ZjAuLmQwZTIxYzg3M2FhMmRjMzBj
NTNjYzhiYWI0ZjhiMDQxNDM0MDAwOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL1BhdHRlcm5DRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvUGF0dGVybkNHLmNwcApAQCAtMzEsOCArMzEsOCBAQAogCiAjaW5jbHVk
ZSAiQWZmaW5lVHJhbnNmb3JtLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCi0KICNp
bmNsdWRlIDxDb3JlR3JhcGhpY3MvQ29yZUdyYXBoaWNzLmg+CisjaW5jbHVkZSA8cGFsL3NwaS9j
Zy9Db3JlR3JhcGhpY3NTUEkuaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogCiAjaWYg
UExBVEZPUk0oQ09DT0EpCkBAIC03NCw3ICs3NCw3IEBAIENHUGF0dGVyblJlZiBQYXR0ZXJuOjpj
cmVhdGVQbGF0Zm9ybVBhdHRlcm4oY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB1c2VyU3BhY2VUcmFu
CiAgICAgLy8gSWYgd2UncmUgcmVwZWF0aW5nIGluIGJvdGggZGlyZWN0aW9ucywgd2UgY2FuIHVz
ZSBpbWFnZS1iYWNrZWQgcGF0dGVybnMKICAgICAvLyBpbnN0ZWFkIG9mIGN1c3RvbSBwYXR0ZXJu
cywgYW5kIGF2b2lkIHRpbGluZy1lZGdlIHBpeGVsIGNyYWNrcy4KICAgICBpZiAobV9yZXBlYXRY
ICYmIG1fcmVwZWF0WSkKLSAgICAgICAgcmV0dXJuIHdrQ0dQYXR0ZXJuQ3JlYXRlV2l0aEltYWdl
QW5kVHJhbnNmb3JtKHRpbGVJbWFnZSgpLm5hdGl2ZUltYWdlKCkuZ2V0KCksIHBhdHRlcm5UcmFu
c2Zvcm0sIHdrUGF0dGVyblRpbGluZ0NvbnN0YW50U3BhY2luZyk7CisgICAgICAgIHJldHVybiBD
R1BhdHRlcm5DcmVhdGVXaXRoSW1hZ2UyKHRpbGVJbWFnZSgpLm5hdGl2ZUltYWdlKCkuZ2V0KCks
IHBhdHRlcm5UcmFuc2Zvcm0sIGtDR1BhdHRlcm5UaWxpbmdDb25zdGFudFNwYWNpbmcpOwogCiAg
ICAgLy8gSWYgRkxUX01BWCBzaG91bGQgYWxzbyBiZSB1c2VkIGZvciB4U3RlcCBvciB5U3RlcCwg
bm90aGluZyBpcyByZW5kZXJlZC4gVXNpbmcgZnJhY3Rpb25zIG9mIEZMVF9NQVggYWxzbwogICAg
IC8vIHJlc3VsdCBpbiBub3RoaW5nIGJlaW5nIHJlbmRlcmVkLgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0Q29jb2EubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRD
b2NvYS5tbQppbmRleCA2N2Y0ZGViMTcyYjZjMGZlMjNjMWIxZDFmYjA5ZWFiOGFkYWUxMzFiLi40
NWQ3NzM5ZDY0NmQ3OGExN2U3ZDcyMTg5ZDJkN2NjMzExZGNjN2NkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRDb2NvYS5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0Nv
bnRleHRDb2NvYS5tbQpAQCAtMjksMTAgKzI5LDEzIEBACiAjaW1wb3J0ICJHcmFwaGljc0NvbnRl
eHRDRy5oIgogI2ltcG9ydCAiR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlQ0cuaCIKICNp
bXBvcnQgIkludFJlY3QuaCIKKyNpbXBvcnQgPHBhbC9zcGkvY2cvQ29yZUdyYXBoaWNzU1BJLmg+
CisjaW1wb3J0IDxwYWwvc3BpL21hYy9OU0dyYXBoaWNzU1BJLmg+CisjaW1wb3J0IDx3dGYvU3Rk
TGliRXh0cmFzLmg+CisKICNpZiBVU0UoQVBQS0lUKQogI2ltcG9ydCA8QXBwS2l0L0FwcEtpdC5o
PgogI2VuZGlmCi0jaW1wb3J0IDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKICNpZiBQTEFURk9STShJ
T1MpCiAjaW1wb3J0ICJDb2xvci5oIgpAQCAtNDMsNyArNDYsNiBAQAogI2lmICFQTEFURk9STShJ
T1MpCiAjaW1wb3J0ICJMb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHQuaCIKICNlbmRpZgotI2lt
cG9ydCAiV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oIgogCiBAY2xhc3MgTlNDb2xvcjsKIApAQCAt
NTcsMTEgKzU5LDQ3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIC8vIGV4Y2VwdGlvbnMgZm9yIHRo
b3NlLgogCiAjaWYgIVBMQVRGT1JNKElPUykKK0NHQ29sb3JSZWYgR3JhcGhpY3NDb250ZXh0Ojpm
b2N1c1JpbmdDb2xvcigpCit7CisgICAgc3RhdGljIENHQ29sb3JSZWYgY29sb3I7CisgICAgaWYg
KCFjb2xvcikgeworICAgICAgICBDR0Zsb2F0IGNvbG9yQ29tcG9uZW50c1tdID0geyAwLjUsIDAu
NzUsIDEuMCwgMS4wIH07CisgICAgICAgIGF1dG8gY29sb3JTcGFjZSA9IGFkb3B0Q0YoQ0dDb2xv
clNwYWNlQ3JlYXRlV2l0aE5hbWUoa0NHQ29sb3JTcGFjZVNSR0IpKTsKKyAgICAgICAgY29sb3Ig
PSBDR0NvbG9yQ3JlYXRlKGNvbG9yU3BhY2UuZ2V0KCksIGNvbG9yQ29tcG9uZW50cyk7CisgICAg
fQorICAgIHJldHVybiBjb2xvcjsKK30KKworc3RhdGljIGJvb2wgZHJhd0ZvY3VzUmluZ0F0VGlt
ZShDR0NvbnRleHRSZWYgY29udGV4dCwgTlNUaW1lSW50ZXJ2YWwgdGltZU9mZnNldCkKK3sKKyAg
ICBDR0ZvY3VzUmluZ1N0eWxlIGZvY3VzUmluZ1N0eWxlOworICAgIEJPT0wgbmVlZHNSZXBhaW50
ID0gTlNJbml0aWFsaXplQ0dGb2N1c1JpbmdTdHlsZUZvclRpbWUoTlNGb2N1c1JpbmdPbmx5LCAm
Zm9jdXNSaW5nU3R5bGUsIHRpbWVPZmZzZXQpOworCisgICAgLy8gV2Ugd2FudCB0byByZXNwZWN0
IHRoZSBDR0NvbnRleHQgY2xpcHBpbmcgYW5kIGFsc28gbm90IG92ZXJwYWludCBhbnkKKyAgICAv
LyBleGlzdGluZyBmb2N1cyByaW5nLiBUaGUgd2F5IHRvIGRvIHRoaXMgaXMgc2V0IGFjY3VtdWxh
dGUgdG8KKyAgICAvLyAtMS4gQWNjb3JkaW5nIHRvIENvcmVHcmFwaGljcywgdGhlIHJlYXNvbmlu
ZyBmb3IgdGhpcyBiZWhhdmlvciBoYXMgYmVlbgorICAgIC8vIGxvc3QgaW4gdGltZS4KKyAgICBm
b2N1c1JpbmdTdHlsZS5hY2N1bXVsYXRlID0gLTE7CisgICAgYXV0byBzdHlsZSA9IGFkb3B0Q0Yo
Q0dTdHlsZUNyZWF0ZUZvY3VzUmluZ1dpdGhDb2xvcigmZm9jdXNSaW5nU3R5bGUsIEdyYXBoaWNz
Q29udGV4dDo6Zm9jdXNSaW5nQ29sb3IoKSkpOworCisgICAgQ0dDb250ZXh0U2F2ZUdTdGF0ZShj
b250ZXh0KTsKKyAgICBDR0NvbnRleHRTZXRTdHlsZShjb250ZXh0LCBzdHlsZS5nZXQoKSk7Cisg
ICAgQ0dDb250ZXh0RmlsbFBhdGgoY29udGV4dCk7CisgICAgQ0dDb250ZXh0UmVzdG9yZUdTdGF0
ZShjb250ZXh0KTsKKworICAgIHJldHVybiBuZWVkc1JlcGFpbnQ7Cit9CisKK3N0YXRpYyB2b2lk
IGRyYXdGb2N1c1JpbmcoQ0dDb250ZXh0UmVmIGNvbnRleHQpCit7CisgICAgZHJhd0ZvY3VzUmlu
Z0F0VGltZShjb250ZXh0LCBEQkxfTUFYKTsKK30KKwogc3RhdGljIHZvaWQgZHJhd0ZvY3VzUmlu
Z1RvQ29udGV4dChDR0NvbnRleHRSZWYgY29udGV4dCwgQ0dQYXRoUmVmIGZvY3VzUmluZ1BhdGgp
CiB7CiAgICAgQ0dDb250ZXh0QmVnaW5QYXRoKGNvbnRleHQpOwogICAgIENHQ29udGV4dEFkZFBh
dGgoY29udGV4dCwgZm9jdXNSaW5nUGF0aCk7Ci0gICAgd2tEcmF3Rm9jdXNSaW5nKGNvbnRleHQs
IG51bGxwdHIsIDApOworICAgIGRyYXdGb2N1c1JpbmcoY29udGV4dCk7CiB9CiAKIHN0YXRpYyBi
b29sIGRyYXdGb2N1c1JpbmdUb0NvbnRleHRBdFRpbWUoQ0dDb250ZXh0UmVmIGNvbnRleHQsIENH
UGF0aFJlZiBmb2N1c1JpbmdQYXRoLCBkb3VibGUgdGltZU9mZnNldCkKQEAgLTY5LDcgKzEwNyw3
IEBAIHN0YXRpYyBib29sIGRyYXdGb2N1c1JpbmdUb0NvbnRleHRBdFRpbWUoQ0dDb250ZXh0UmVm
IGNvbnRleHQsIENHUGF0aFJlZiBmb2N1c1JpCiAgICAgVU5VU0VEX1BBUkFNKHRpbWVPZmZzZXQp
OwogICAgIENHQ29udGV4dEJlZ2luUGF0aChjb250ZXh0KTsKICAgICBDR0NvbnRleHRBZGRQYXRo
KGNvbnRleHQsIGZvY3VzUmluZ1BhdGgpOwotICAgIHJldHVybiB3a0RyYXdGb2N1c1JpbmdBdFRp
bWUoY29udGV4dCwgc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjptYXgoKSk7CisgICAgcmV0
dXJuIGRyYXdGb2N1c1JpbmdBdFRpbWUoY29udGV4dCwgc3RkOjpudW1lcmljX2xpbWl0czxkb3Vi
bGU+OjptYXgoKSk7CiB9CiAjZW5kaWYgLy8gIVBMQVRGT1JNKElPUykKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2VJT1MubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViQ29yZVN5c3RlbUludGVyZmFjZUlPUy5t
bQppbmRleCAwOWExODI4MTRkMTQwMTNiN2M4OGU4ZWViZjAzZDlhZTBjZmEyODY5Li43NTdkMDQ1
ZjVjNTg1NDQ0OTZmMmRkNjkwNTBiZDFhZjg2OGMyZWRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pb3MvV2ViQ29yZVN5c3RlbUludGVyZmFjZUlPUy5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViQ29yZVN5c3RlbUludGVyZmFjZUlPUy5tbQpAQCAt
MjcsMTAgKzI3LDggQEAKICNpbXBvcnQgIldlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaCIKIAogV0VC
Q09SRV9FWFBPUlQgdm9pZCAoKndrQ0FMYXllckVudW1lcmF0ZVJlY3RzQmVpbmdEcmF3bldpdGhC
bG9jaykoQ0FMYXllciAqLCBDR0NvbnRleHRSZWYgY29udGV4dCwgdm9pZCAoXmJsb2NrKShDR1Jl
Y3QgcmVjdCkpOwotV0VCQ09SRV9FWFBPUlQgQ0dQYXR0ZXJuUmVmICgqd2tDR1BhdHRlcm5DcmVh
dGVXaXRoSW1hZ2VBbmRUcmFuc2Zvcm0pKENHSW1hZ2VSZWYsIENHQWZmaW5lVHJhbnNmb3JtLCBp
bnQpOwogV0VCQ09SRV9FWFBPUlQgdm9pZCAoKndrQ2xlYXJHbHlwaFZlY3Rvcikodm9pZCogZ2x5
cGhzKTsKIFdFQkNPUkVfRVhQT1JUIE9TU3RhdHVzICgqd2tDb252ZXJ0Q2hhclRvR2x5cGhzKSh2
b2lkKiBzdHlsZUdyb3VwLCBjb25zdCBVbmlDaGFyKiwgdW5zaWduZWQgbnVtQ2hhcmFjdGVycywg
dm9pZCogZ2x5cGhzKTsKLVdFQkNPUkVfRVhQT1JUIGJvb2wgKCp3a0NHQ29udGV4dElzUERGQ29u
dGV4dCkoQ0dDb250ZXh0UmVmKTsKIFdFQkNPUkVfRVhQT1JUIGlkICgqd2tDcmVhdGVOU1VSTENv
bm5lY3Rpb25EZWxlZ2F0ZVByb3h5KSh2b2lkKTsKIFdFQkNPUkVfRVhQT1JUIHZvaWQgKCp3a1Nl
dENPTk5FQ1RQcm94eUZvclN0cmVhbSkoQ0ZSZWFkU3RyZWFtUmVmLCBDRlN0cmluZ1JlZiBwcm94
eUhvc3QsIENGTnVtYmVyUmVmIHByb3h5UG9ydCk7CiBXRUJDT1JFX0VYUE9SVCB2b2lkICgqd2tT
ZXRDT05ORUNUUHJveHlBdXRob3JpemF0aW9uRm9yU3RyZWFtKShDRlJlYWRTdHJlYW1SZWYsIENG
U3RyaW5nUmVmIHByb3h5QXV0aG9yaXphdGlvblN0cmluZyk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tCmluZGV4IDIwZTYzNWMwOTA1YWU4OTZjN2JiNTQy
MWM4NTZiMjFiMmE0NDZiNDkuLjgxODlkYmI4NjliNTFlYzFmNmMwMDE0YWM4YTZjMmE1MzAyODM2
OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFj
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tCkBA
IC01Miw2ICs1Miw4IEBACiAjaW1wb3J0ICJXZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmgiCiAjaW1w
b3J0ICJXZWJOU0F0dHJpYnV0ZWRTdHJpbmdFeHRyYXMuaCIKICNpbXBvcnQgIm1hcmt1cC5oIgor
I2ltcG9ydCA8cGFsL3NwaS9jZy9Db3JlR3JhcGhpY3NTUEkuaD4KKyNpbXBvcnQgPHBhbC9zcGkv
bWFjL0hJU2VydmljZXNTUEkuaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbXBvcnQg
PHd0Zi9TdGRMaWJFeHRyYXMuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4K
QEAgLTY2OSw2ICs2NzEsODAgQEAgVmVjdG9yPFN0cmluZz4gUGFzdGVib2FyZDo6cmVhZEZpbGVu
YW1lcygpCiB9CiAKICNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQorc3RhdGljIHZvaWQgZmxpcElt
YWdlU3BlYyhDb3JlRHJhZ0ltYWdlU3BlYyogaW1hZ2VTcGVjKQoreworICAgIHVuc2lnbmVkIGNo
YXIqIHRlbXBSb3cgPSAodW5zaWduZWQgY2hhciopZmFzdE1hbGxvYyhpbWFnZVNwZWMtPmJ5dGVz
UGVyUm93KTsKKyAgICBpbnQgcGxhbmVzID0gaW1hZ2VTcGVjLT5pc1BsYW5hciA/IGltYWdlU3Bl
Yy0+c2FtcGxlc1BlclBpeGVsIDogMTsKKworICAgIGZvciAoaW50IHAgPSAwOyBwIDwgcGxhbmVz
OyBwKyspIHsKKyAgICAgICAgdW5zaWduZWQgY2hhciogdG9wUm93ID0gKHVuc2lnbmVkIGNoYXIq
KWltYWdlU3BlYy0+ZGF0YVtwXTsKKyAgICAgICAgdW5zaWduZWQgY2hhciogYm90Um93ID0gdG9w
Um93ICsgKGltYWdlU3BlYy0+cGl4ZWxzSGlnaCAtIDEpICogaW1hZ2VTcGVjLT5ieXRlc1BlclJv
dzsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBpbWFnZVNwZWMtPnBpeGVsc0hpZ2ggLyAy
OyBpKyssIHRvcFJvdyArPSBpbWFnZVNwZWMtPmJ5dGVzUGVyUm93LCBib3RSb3cgLT0gaW1hZ2VT
cGVjLT5ieXRlc1BlclJvdykgeworICAgICAgICAgICAgYmNvcHkodG9wUm93LCAgdGVtcFJvdywg
aW1hZ2VTcGVjLT5ieXRlc1BlclJvdyk7CisgICAgICAgICAgICBiY29weShib3RSb3csICB0b3BS
b3csICBpbWFnZVNwZWMtPmJ5dGVzUGVyUm93KTsKKyAgICAgICAgICAgIGJjb3B5KHRlbXBSb3cs
IGJvdFJvdywgIGltYWdlU3BlYy0+Ynl0ZXNQZXJSb3cpOworICAgICAgICB9CisgICAgfQorCisg
ICAgZmFzdEZyZWUodGVtcFJvdyk7Cit9CisKK3N0YXRpYyB2b2lkIHNldERyYWdJbWFnZUltcGwo
TlNJbWFnZSAqaW1hZ2UsIE5TUG9pbnQgb2Zmc2V0KQoreworICAgIGJvb2wgZmxpcEltYWdlOwor
ICAgIE5TU2l6ZSBpbWFnZVNpemUgPSBpbWFnZS5zaXplOworICAgIENHUmVjdCBpbWFnZVJlY3Qg
PSBDR1JlY3RNYWtlKDAsIDAsIGltYWdlU2l6ZS53aWR0aCwgaW1hZ2VTaXplLmhlaWdodCk7Cisg
ICAgTlNJbWFnZVJlcCAqaW1hZ2VSZXAgPSBbaW1hZ2UgYmVzdFJlcHJlc2VudGF0aW9uRm9yUmVj
dDpOU1JlY3RGcm9tQ0dSZWN0KGltYWdlUmVjdCkgY29udGV4dDpuaWwgaGludHM6bmlsXTsKKyAg
ICBSZXRhaW5QdHI8TlNCaXRtYXBJbWFnZVJlcD4gYml0bWFwSW1hZ2U7CisgICAgaWYgKCFpbWFn
ZVJlcCB8fCAhW2ltYWdlUmVwIGlzS2luZE9mQ2xhc3M6W05TQml0bWFwSW1hZ2VSZXAgY2xhc3Nd
XSB8fCAhTlNFcXVhbFNpemVzKGltYWdlUmVwLnNpemUsIGltYWdlU2l6ZSkpIHsKKyAgICAgICAg
W2ltYWdlIGxvY2tGb2N1c107CisgICAgICAgIGJpdG1hcEltYWdlID0gYWRvcHROUyhbW05TQml0
bWFwSW1hZ2VSZXAgYWxsb2NdIGluaXRXaXRoRm9jdXNlZFZpZXdSZWN0OiooTlNSZWN0ICopJmlt
YWdlUmVjdF0pOworICAgICAgICBbaW1hZ2UgdW5sb2NrRm9jdXNdOworICAgICAgICAKKyAgICAg
ICAgLy8gd2UgbWF5IGhhdmUgdG8gZmxpcCB0aGUgYml0cyB3ZSBqdXN0IHJlYWQgaWYgdGhlIGlt
YWdlIHdhcyBmbGlwcGVkIHNpbmNlIGl0IG1lYW5zIHRoZSBjYWNoZSB3YXMgYWxzbworICAgICAg
ICAvLyBhbmQgQ29yZURyYWdTZXRJbWFnZSBjYW4ndCB0YWtlIGEgdHJhbnNmb3JtIGZvciByZW5k
ZXJpbmcuCisjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcHVzaAorI3ByYWdtYSBjbGFuZyBkaWFn
bm9zdGljIGlnbm9yZWQgIi1XZGVwcmVjYXRlZC1kZWNsYXJhdGlvbnMiCisgICAgICAgIGZsaXBJ
bWFnZSA9IGltYWdlLmlzRmxpcHBlZDsKKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwb3AKKyAg
ICB9IGVsc2UgeworICAgICAgICBmbGlwSW1hZ2UgPSBmYWxzZTsKKyAgICAgICAgYml0bWFwSW1h
Z2UgPSAoTlNCaXRtYXBJbWFnZVJlcCAqKWltYWdlUmVwOworICAgIH0KKyAgICBBU1NFUlQoYml0
bWFwSW1hZ2UpOworCisgICAgQ29yZURyYWdJbWFnZVNwZWMgaW1hZ2VTcGVjOworICAgIGltYWdl
U3BlYy52ZXJzaW9uID0ga0NvcmVEcmFnSW1hZ2VTcGVjVmVyc2lvbk9uZTsKKyAgICBpbWFnZVNw
ZWMucGl4ZWxzV2lkZSA9IFtiaXRtYXBJbWFnZSBwaXhlbHNXaWRlXTsKKyAgICBpbWFnZVNwZWMu
cGl4ZWxzSGlnaCA9IFtiaXRtYXBJbWFnZSBwaXhlbHNIaWdoXTsKKyAgICBpbWFnZVNwZWMuYml0
c1BlclNhbXBsZSA9IFtiaXRtYXBJbWFnZSBiaXRzUGVyU2FtcGxlXTsKKyAgICBpbWFnZVNwZWMu
c2FtcGxlc1BlclBpeGVsID0gW2JpdG1hcEltYWdlIHNhbXBsZXNQZXJQaXhlbF07CisgICAgaW1h
Z2VTcGVjLmJpdHNQZXJQaXhlbCA9IFtiaXRtYXBJbWFnZSBiaXRzUGVyUGl4ZWxdOworICAgIGlt
YWdlU3BlYy5ieXRlc1BlclJvdyA9IFtiaXRtYXBJbWFnZSBieXRlc1BlclJvd107CisgICAgaW1h
Z2VTcGVjLmlzUGxhbmFyID0gW2JpdG1hcEltYWdlIGlzUGxhbmFyXTsKKyAgICBpbWFnZVNwZWMu
aGFzQWxwaGEgPSBbYml0bWFwSW1hZ2UgaGFzQWxwaGFdOworICAgIFtiaXRtYXBJbWFnZSBnZXRC
aXRtYXBEYXRhUGxhbmVzOih1bnNpZ25lZCBjaGFyKiopaW1hZ2VTcGVjLmRhdGFdOworCisgICAg
Ly8gaWYgaW1hZ2Ugd2FzIGZsaXBwZWQsIHdlIGhhdmUgYW4gdXBzaWRlIGRvd24gYml0bWFwIHNp
bmNlIHRoZSBjYWNoZSBpcyByZW5kZXJlZCBmbGlwcGVkCisgICAgaWYgKGZsaXBJbWFnZSkKKyAg
ICAgICAgZmxpcEltYWdlU3BlYygmaW1hZ2VTcGVjKTsKKworICAgIENHU1JlZ2lvbk9iaiBpbWFn
ZVNoYXBlOworICAgIE9TU3RhdHVzIGVycm9yID0gQ0dTTmV3UmVnaW9uV2l0aFJlY3QoJmltYWdl
UmVjdCwgJmltYWdlU2hhcGUpOworICAgIEFTU0VSVChlcnJvciA9PSBrQ0dFcnJvclN1Y2Nlc3Mp
OworICAgIGlmIChlcnJvciAhPSBrQ0dFcnJvclN1Y2Nlc3MpCisgICAgICAgIHJldHVybjsKKwor
ICAgIC8vIG1ha2Ugc3VyZSBpbWFnZSBoYXMgaW50ZWdlciBvZmZzZXQKKyAgICBDR1BvaW50IGlt
YWdlT2Zmc2V0ID0gey1vZmZzZXQueCwgLShpbWFnZVNpemUuaGVpZ2h0IC0gb2Zmc2V0LnkpfTsK
KyAgICBpbWFnZU9mZnNldC54ID0gZmxvb3IoaW1hZ2VPZmZzZXQueCArIDAuNSk7CisgICAgaW1h
Z2VPZmZzZXQueSA9IGZsb29yKGltYWdlT2Zmc2V0LnkgKyAwLjUpOworCisgICAgZXJyb3IgPSBD
b3JlRHJhZ1NldEltYWdlKENvcmVEcmFnR2V0Q3VycmVudERyYWcoKSwgaW1hZ2VPZmZzZXQsICZp
bWFnZVNwZWMsIGltYWdlU2hhcGUsIDEuMCk7CisgICAgQ0dTUmVsZWFzZVJlZ2lvbihpbWFnZVNo
YXBlKTsKKyAgICBBU1NFUlQoZXJyb3IgPT0ga0NHRXJyb3JTdWNjZXNzKTsKK30KKwogdm9pZCBQ
YXN0ZWJvYXJkOjpzZXREcmFnSW1hZ2UoRHJhZ0ltYWdlIGltYWdlLCBjb25zdCBJbnRQb2ludCYg
bG9jYXRpb24pCiB7CiAgICAgLy8gRG9uJ3QgYWxsb3cgc2V0dGluZyB0aGUgZHJhZyBpbWFnZSBp
ZiBzb21lb25lIGtlcHQgYSBwYXN0ZWJvYXJkIGFuZCBpcyB0cnlpbmcgdG8gc2V0IHRoZSBpbWFn
ZSB0b28gbGF0ZS4KQEAgLTY3Nyw3ICs3NTMsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6OnNldERyYWdJ
bWFnZShEcmFnSW1hZ2UgaW1hZ2UsIGNvbnN0IEludFBvaW50JiBsb2NhdGlvbikKIAogICAgIC8v
IERhc2hib2FyZCB3YW50cyB0byBiZSBhYmxlIHRvIHNldCB0aGUgZHJhZyBpbWFnZSBkdXJpbmcg
ZHJhZ2dpbmcsIGJ1dCBDb2NvYSBkb2VzIG5vdCBhbGxvdyB0aGlzLgogICAgIC8vIEluc3RlYWQg
d2UgbXVzdCBkcm9wIGRvd24gdG8gdGhlIENvcmVHcmFwaGljcyBBUEkuCi0gICAgd2tTZXREcmFn
SW1hZ2UoaW1hZ2UuZ2V0KCkuZ2V0KCksIGxvY2F0aW9uKTsKKyAgICBzZXREcmFnSW1hZ2VJbXBs
KGltYWdlLmdldCgpLmdldCgpLCBsb2NhdGlvbik7CiAKICAgICAvLyBIYWNrOiBXZSBtdXN0IHBv
c3QgYW4gZXZlbnQgdG8gd2FrZSB1cCB0aGUgTlNEcmFnTWFuYWdlciwgd2hpY2ggaXMgc2l0dGlu
ZyBpbiBhIG5leHRFdmVudCBjYWxsCiAgICAgLy8gdXAgdGhlIHN0YWNrIGZyb20gdXMgYmVjYXVz
ZSB0aGUgQ29yZUZvdW5kYXRpb24gZHJhZyBtYW5hZ2VyIGRvZXMgbm90IHVzZSB0aGUgcnVuIGxv
b3AgYnkgaXRzZWxmLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bs
YXRmb3JtRXZlbnRGYWN0b3J5TWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bs
YXRmb3JtRXZlbnRGYWN0b3J5TWFjLm1tCmluZGV4IDc3YjljYjk2MzViYmZiMGJjMmM1NDU0MGJm
ZjY0MDUxNzFiN2M1NTkuLjkyOWFhNTc1OGYzZTFkYmNjYzU5MDAxODkyOTdlYjE1ZTU3MDExODcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybUV2ZW50RmFj
dG9yeU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1FdmVu
dEZhY3RvcnlNYWMubW0KQEAgLTY3Niw3ICs2NzYsNyBAQCBzdGF0aWMgaW50IHR5cGVGb3JFdmVu
dChOU0V2ZW50ICpldmVudCkKIHsKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihbTlNNZW51
IG1lbnVUeXBlRm9yRXZlbnQ6ZXZlbnRdKTsKIH0KLSAgICAKKwogdm9pZCBnZXRXaGVlbEV2ZW50
RGVsdGFzKE5TRXZlbnQgKmV2ZW50LCBmbG9hdCYgZGVsdGFYLCBmbG9hdCYgZGVsdGFZLCBCT09M
JiBjb250aW51b3VzKQogewogICAgIEFTU0VSVChldmVudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsYmFyVGhlbWVNYWMubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsYmFyVGhlbWVNYWMubW0KaW5kZXggYzRjMjg3NzY4MzU3NDk2
YWViMjg4ZmE0MWYwZGQ5NWQyZDdjYzI4OC4uNmQwNWI4NmM2M2QwNWY3YjZkMTQ3MzE3ZWZkMjdm
ZjM0MTU4MzE5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9s
bGJhclRoZW1lTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxi
YXJUaGVtZU1hYy5tbQpAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUgIlNjcm9sbFZpZXcuaCIK
ICNpbmNsdWRlICJXZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmgiCiAjaW5jbHVkZSA8Q2FyYm9uL0Nh
cmJvbi5oPgorI2luY2x1ZGUgPHBhbC9zcGkvY2cvQ29yZUdyYXBoaWNzU1BJLmg+CiAjaW5jbHVk
ZSA8cGFsL3NwaS9tYWMvTlNTY3JvbGxlckltcFNQSS5oPgogI2luY2x1ZGUgPHd0Zi9CbG9ja09i
akNFeGNlcHRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KQEAgLTU3Myw3ICs1NzQs
NyBAQCBzdGF0aWMgUmV0YWluUHRyPENHQ29sb3JSZWY+IGxpbmVuQmFja2dyb3VuZENvbG9yKCkK
ICAgICBpZiAoIWNnSW1hZ2UpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgUmV0YWlu
UHRyPENHUGF0dGVyblJlZj4gcGF0dGVybiA9IGFkb3B0Q0Yod2tDR1BhdHRlcm5DcmVhdGVXaXRo
SW1hZ2VBbmRUcmFuc2Zvcm0oY2dJbWFnZSwgQ0dBZmZpbmVUcmFuc2Zvcm1JZGVudGl0eSwgd2tQ
YXR0ZXJuVGlsaW5nTm9EaXN0b3J0aW9uKSk7CisgICAgUmV0YWluUHRyPENHUGF0dGVyblJlZj4g
cGF0dGVybiA9IGFkb3B0Q0YoQ0dQYXR0ZXJuQ3JlYXRlV2l0aEltYWdlMihjZ0ltYWdlLCBDR0Fm
ZmluZVRyYW5zZm9ybUlkZW50aXR5LCBrQ0dQYXR0ZXJuVGlsaW5nTm9EaXN0b3J0aW9uKSk7CiAg
ICAgUmV0YWluUHRyPENHQ29sb3JTcGFjZVJlZj4gY29sb3JTcGFjZSA9IGFkb3B0Q0YoQ0dDb2xv
clNwYWNlQ3JlYXRlUGF0dGVybigwKSk7CiAKICAgICBjb25zdCBDR0Zsb2F0IGFscGhhID0gMS4w
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1RoZW1lTWFjLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1RoZW1lTWFjLm1tCmluZGV4IDkwZjEwNDFlZmY3
ZjBjNjQ3ZDZmODM5MWMwMjdmNTNkMWFiNDQ3MTQuLjhhMTkyNjVjZjVkODJmMjAyNWZmNTAxZWVl
MmVmOTUxZjg0Mzc4NTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9U
aGVtZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvVGhlbWVNYWMubW0K
QEAgLTM2LDYgKzM2LDcgQEAKICNpbXBvcnQgIldlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaCIKICNp
bXBvcnQgPENhcmJvbi9DYXJib24uaD4KICNpbXBvcnQgPHBhbC9zcGkvY29jb2EvTlNCdXR0b25D
ZWxsU1BJLmg+CisjaW1wb3J0IDxwYWwvc3BpL21hYy9OU0dyYXBoaWNzU1BJLmg+CiAjaW1wb3J0
IDx3dGYvQmxvY2tPYmpDRXhjZXB0aW9ucy5oPgogI2ltcG9ydCA8d3RmL05ldmVyRGVzdHJveWVk
Lmg+CiAjaW1wb3J0IDx3dGYvU3RkTGliRXh0cmFzLmg+CkBAIC0zNDksOSArMzUwLDMyIEBAIHN0
YXRpYyBOU0J1dHRvbkNlbGwgKnNoYXJlZENoZWNrYm94Q2VsbChjb25zdCBDb250cm9sU3RhdGVz
JiBzdGF0ZXMsIGNvbnN0IEludFNpCiAgICAgcmV0dXJuIGNoZWNrYm94Q2VsbDsKIH0KIAorc3Rh
dGljIGJvb2wgZHJhd0NlbGxGb2N1c1JpbmdXaXRoRnJhbWVBdFRpbWUoTlNDZWxsICpjZWxsLCBO
U1JlY3QgY2VsbEZyYW1lLCBOU1ZpZXcgKmNvbnRyb2xWaWV3LCBOU1RpbWVJbnRlcnZhbCB0aW1l
T2Zmc2V0KQoreworICAgIENHQ29udGV4dFJlZiBjZ0NvbnRleHQgPSAoQ0dDb250ZXh0UmVmKVtb
TlNHcmFwaGljc0NvbnRleHQgY3VycmVudENvbnRleHRdIGdyYXBoaWNzUG9ydF07CisgICAgQ0dD
b250ZXh0U2F2ZUdTdGF0ZShjZ0NvbnRleHQpOworCisgICAgQ0dGb2N1c1JpbmdTdHlsZSBmb2N1
c1JpbmdTdHlsZTsKKyAgICBib29sIG5lZWRzUmVwYWludCA9IE5TSW5pdGlhbGl6ZUNHRm9jdXNS
aW5nU3R5bGVGb3JUaW1lKE5TRm9jdXNSaW5nT25seSwgJmZvY3VzUmluZ1N0eWxlLCB0aW1lT2Zm
c2V0KTsKKyAgICAvLyBXZSB3YW50IHRvIHJlc3BlY3QgdGhlIENHQ29udGV4dCBjbGlwcGluZyBh
bmQgYWxzbyBub3Qgb3ZlcnBhaW50IGFueQorICAgIC8vIGV4aXN0aW5nIGZvY3VzIHJpbmcuIFRo
ZSB3YXkgdG8gZG8gdGhpcyBpcyBzZXQgYWNjdW11bGF0ZSB0bworICAgIC8vIC0xLiBBY2NvcmRp
bmcgdG8gQ29yZUdyYXBoaWNzLCB0aGUgcmVhc29uaW5nIGZvciB0aGlzIGJlaGF2aW9yIGhhcyBi
ZWVuCisgICAgLy8gbG9zdCBpbiB0aW1lLgorICAgIGZvY3VzUmluZ1N0eWxlLmFjY3VtdWxhdGUg
PSAtMTsKKyAgICBhdXRvIHN0eWxlID0gYWRvcHRDRihDR1N0eWxlQ3JlYXRlRm9jdXNSaW5nV2l0
aENvbG9yKCZmb2N1c1JpbmdTdHlsZSwgR3JhcGhpY3NDb250ZXh0Ojpmb2N1c1JpbmdDb2xvcigp
KSk7CisgICAgQ0dDb250ZXh0U2V0U3R5bGUoY2dDb250ZXh0LCBzdHlsZS5nZXQoKSk7CisKKyAg
ICBDR0NvbnRleHRCZWdpblRyYW5zcGFyZW5jeUxheWVyV2l0aFJlY3QoY2dDb250ZXh0LCBOU1Jl
Y3RUb0NHUmVjdChjZWxsRnJhbWUpLCAwKTsKKyAgICBbY2VsbCBkcmF3Rm9jdXNSaW5nTWFza1dp
dGhGcmFtZTpjZWxsRnJhbWUgaW5WaWV3OmNvbnRyb2xWaWV3XTsKKyAgICBDR0NvbnRleHRFbmRU
cmFuc3BhcmVuY3lMYXllcihjZ0NvbnRleHQpOworICAgIENHQ29udGV4dFJlc3RvcmVHU3RhdGUo
Y2dDb250ZXh0KTsKKworICAgIHJldHVybiBuZWVkc1JlcGFpbnQ7Cit9CisKIHN0YXRpYyBib29s
IGRyYXdDZWxsRm9jdXNSaW5nKE5TQ2VsbCAqY2VsbCwgTlNSZWN0IGNlbGxGcmFtZSwgTlNWaWV3
ICpjb250cm9sVmlldykKIHsKLSAgICB3a0RyYXdDZWxsRm9jdXNSaW5nV2l0aEZyYW1lQXRUaW1l
KGNlbGwsIGNlbGxGcmFtZSwgY29udHJvbFZpZXcsIHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91Ymxl
Pjo6bWF4KCkpOworICAgIGRyYXdDZWxsRm9jdXNSaW5nV2l0aEZyYW1lQXRUaW1lKGNlbGwsIGNl
bGxGcmFtZSwgY29udHJvbFZpZXcsIHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6bWF4KCkp
OwogICAgIHJldHVybiBmYWxzZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWFjL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21hYy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmgKaW5kZXggOGExMjQ4MjdjMDQwOWQ2NjNm
NzgxZGYyN2I0ZTQzYmNmYWZiZDIyNy4uNjZjMDBiNDg2MzIyZjFmODQyYjc3YjNlZDZiYzU5MThj
OGY2ZmQ2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVT
eXN0ZW1JbnRlcmZhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29y
ZVN5c3RlbUludGVyZmFjZS5oCkBAIC0xMjYsMTQgKzEyNiw3IEBAIHR5cGVkZWYgZW51bSB7CiAg
ICAgd2tQYXR0ZXJuVGlsaW5nQ29uc3RhbnRTcGFjaW5nCiB9IHdrUGF0dGVyblRpbGluZzsKICNp
ZiAhUExBVEZPUk0oSU9TKQotZXh0ZXJuIGJvb2wgKCp3a0NHQ29udGV4dERyYXdzV2l0aENvcnJl
Y3RTaGFkb3dPZmZzZXRzKShDR0NvbnRleHRSZWYpOwotI2VuZGlmCi1leHRlcm4gQ0dQYXR0ZXJu
UmVmICgqd2tDR1BhdHRlcm5DcmVhdGVXaXRoSW1hZ2VBbmRUcmFuc2Zvcm0pKENHSW1hZ2VSZWYs
IENHQWZmaW5lVHJhbnNmb3JtLCBpbnQpOwotI2lmICFQTEFURk9STShJT1MpCiBleHRlcm4gdm9p
ZCAoKndrRHJhd0JlemVsZWRUZXh0QXJlYSkoTlNSZWN0LCBCT09MIGVuYWJsZWQpOwotZXh0ZXJu
IHZvaWQgKCp3a0RyYXdGb2N1c1JpbmcpKENHQ29udGV4dFJlZiwgQ0dDb2xvclJlZiwgaW50KTsK
LWV4dGVybiBib29sICgqd2tEcmF3Rm9jdXNSaW5nQXRUaW1lKShDR0NvbnRleHRSZWYsIE5TVGlt
ZUludGVydmFsIHRpbWUpOwotZXh0ZXJuIGJvb2wgKCp3a0RyYXdDZWxsRm9jdXNSaW5nV2l0aEZy
YW1lQXRUaW1lKShOU0NlbGwgKmNlbGwsIE5TUmVjdCBjZWxsRnJhbWUsIE5TVmlldyAqY29udHJv
bFZpZXcsIE5TVGltZUludGVydmFsIHRpbWUpOwogZXh0ZXJuIHZvaWQgKCp3a0RyYXdNZWRpYVNs
aWRlclRyYWNrKShDR0NvbnRleHRSZWYgY29udGV4dCwgQ0dSZWN0IHJlY3QsIGZsb2F0IHRpbWVM
b2FkZWQsIGZsb2F0IGN1cnJlbnRUaW1lLAogICAgIGZsb2F0IGR1cmF0aW9uLCB1bnNpZ25lZCBz
dGF0ZSk7CiBleHRlcm4gdm9pZCAoKndrRHJhd01lZGlhVUlQYXJ0KShpbnQgcGFydCwgQ0dDb250
ZXh0UmVmIGNvbnRleHQsIENHUmVjdCByZWN0LCB1bnNpZ25lZCBzdGF0ZSk7CkBAIC0xNTYsOSAr
MTQ5LDYgQEAgdHlwZWRlZiBlbnVtIHsKIH0gd2tNZWRpYVVJQ29udHJvbFR5cGU7CiBleHRlcm4g
TlNDb250cm9sICooKndrQ3JlYXRlTWVkaWFVSUNvbnRyb2wpKGludCk7CiAKLWV4dGVybiB2b2lk
ICgqd2tXaW5kb3dTZXRBbHBoYSkoTlNXaW5kb3cgKiwgZmxvYXQpOwotZXh0ZXJuIHZvaWQgKCp3
a1dpbmRvd1NldFNjYWxlZEZyYW1lKShOU1dpbmRvdyAqLCBOU1JlY3QsIE5TUmVjdCk7Ci0KIGV4
dGVybiB1bnNpZ25lZCAoKndrUVRJbmNsdWRlT25seU1vZGVybk1lZGlhRmlsZVR5cGVzKSh2b2lk
KTsKIGV4dGVybiB2b2lkICgqd2tRVE1vdmllRGlzYWJsZUNvbXBvbmVudCkodWludDMyX3RbNV0p
OwogZXh0ZXJuIGZsb2F0ICgqd2tRVE1vdmllTWF4VGltZUxvYWRlZCkoUVRNb3ZpZSopOwpAQCAt
MTcyLDkgKzE2Miw3IEBAIGV4dGVybiBOU0FycmF5ICooKndrUVRHZXRTaXRlc0luTWVkaWFEb3du
bG9hZENhY2hlKSgpOwogZXh0ZXJuIHZvaWQgKCp3a1FUQ2xlYXJNZWRpYURvd25sb2FkQ2FjaGVG
b3JTaXRlKShOU1N0cmluZyAqc2l0ZSk7CiBleHRlcm4gdm9pZCAoKndrUVRDbGVhck1lZGlhRG93
bmxvYWRDYWNoZSkoKTsKIGV4dGVybiB2b2lkICgqd2tTZXRDb29raWVTdG9yYWdlUHJpdmF0ZUJy
b3dzaW5nRW5hYmxlZCkoQk9PTCk7Ci1leHRlcm4gdm9pZCAoKndrU2V0RHJhZ0ltYWdlKShOU0lt
YWdlKiwgTlNQb2ludCBvZmZzZXQpOwogI2VuZGlmCi1leHRlcm4gYm9vbCAoKndrQ0dDb250ZXh0
SXNQREZDb250ZXh0KShDR0NvbnRleHRSZWYpOwogZXh0ZXJuIHZvaWQgKCp3a1NldENPTk5FQ1RQ
cm94eUZvclN0cmVhbSkoQ0ZSZWFkU3RyZWFtUmVmLCBDRlN0cmluZ1JlZiBwcm94eUhvc3QsIENG
TnVtYmVyUmVmIHByb3h5UG9ydCk7CiBleHRlcm4gdm9pZCAoKndrU2V0Q09OTkVDVFByb3h5QXV0
aG9yaXphdGlvbkZvclN0cmVhbSkoQ0ZSZWFkU3RyZWFtUmVmLCBDRlN0cmluZ1JlZiBwcm94eUF1
dGhvcml6YXRpb25TdHJpbmcpOwogZXh0ZXJuIENGSFRUUE1lc3NhZ2VSZWYgKCp3a0NvcHlDT05O
RUNUUHJveHlSZXNwb25zZSkoQ0ZSZWFkU3RyZWFtUmVmLCBDRlVSTFJlZiByZXNwb25zZVVSTCwg
Q0ZTdHJpbmdSZWYgcHJveHlIb3N0LCBDRk51bWJlclJlZiBwcm94eVBvcnQpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2UubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZVN5c3RlbUludGVyZmFjZS5tbQpp
bmRleCAyNzJiNTU1N2UyMzlmM2MxZTFkNDVhOTRmYjdiMWU0NTM0NjE3ZGYyLi4xM2I4NDk1YTkw
ZmVkM2IyMDIzZDUyM2YwYzU0YjE3ZmUyMGNlMWI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZVN5c3RlbUludGVyZmFjZS5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZVN5c3RlbUludGVyZmFjZS5tbQpAQCAtMzEsMTIgKzMx
LDcgQEAKICNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgogCiB2b2lkICgqd2tDQUxh
eWVyRW51bWVyYXRlUmVjdHNCZWluZ0RyYXduV2l0aEJsb2NrKShDQUxheWVyICosIENHQ29udGV4
dFJlZiBjb250ZXh0LCB2b2lkICheYmxvY2spKENHUmVjdCByZWN0KSk7Ci1ib29sICgqd2tDR0Nv
bnRleHREcmF3c1dpdGhDb3JyZWN0U2hhZG93T2Zmc2V0cykoQ0dDb250ZXh0UmVmKTsKLUNHUGF0
dGVyblJlZiAoKndrQ0dQYXR0ZXJuQ3JlYXRlV2l0aEltYWdlQW5kVHJhbnNmb3JtKShDR0ltYWdl
UmVmLCBDR0FmZmluZVRyYW5zZm9ybSwgaW50KTsKIHZvaWQgKCp3a0RyYXdCZXplbGVkVGV4dEFy
ZWEpKE5TUmVjdCwgQk9PTCBlbmFibGVkKTsKLXZvaWQgKCp3a0RyYXdGb2N1c1JpbmcpKENHQ29u
dGV4dFJlZiwgQ0dDb2xvclJlZiwgaW50KTsKLWJvb2wgKCp3a0RyYXdGb2N1c1JpbmdBdFRpbWUp
KENHQ29udGV4dFJlZiwgTlNUaW1lSW50ZXJ2YWwpOwotYm9vbCAoKndrRHJhd0NlbGxGb2N1c1Jp
bmdXaXRoRnJhbWVBdFRpbWUpKE5TQ2VsbCosIE5TUmVjdCwgTlNWaWV3KiwgTlNUaW1lSW50ZXJ2
YWwpOwogdm9pZCAoKndrRHJhd01lZGlhU2xpZGVyVHJhY2spKENHQ29udGV4dFJlZiBjb250ZXh0
LCBDR1JlY3QgcmVjdCwgZmxvYXQgdGltZUxvYWRlZCwgZmxvYXQgY3VycmVudFRpbWUsCiAgICAg
ZmxvYXQgZHVyYXRpb24sIHVuc2lnbmVkIHN0YXRlKTsKIEJPT0wgKCp3a0hpdFRlc3RNZWRpYVVJ
UGFydCkoaW50IHBhcnQsIENHUmVjdCBib3VuZHMsIENHUG9pbnQgcG9pbnQpOwpAQCAtNDQsOCAr
MzksNiBAQCB2b2lkICgqd2tEcmF3TWVkaWFVSVBhcnQpKGludCBwYXJ0LCBDR0NvbnRleHRSZWYg
Y29udGV4dCwgQ0dSZWN0IHJlY3QsIHVuc2lnbmVkCiB2b2lkICgqd2tNZWFzdXJlTWVkaWFVSVBh
cnQpKGludCBwYXJ0LCBDR1JlY3QgKmJvdW5kcywgQ0dTaXplICpuYXR1cmFsU2l6ZSk7CiBOU1Zp
ZXcgKigqd2tDcmVhdGVNZWRpYVVJQmFja2dyb3VuZFZpZXcpKHZvaWQpOwogTlNDb250cm9sICoo
KndrQ3JlYXRlTWVkaWFVSUNvbnRyb2wpKGludCk7Ci12b2lkICgqd2tXaW5kb3dTZXRBbHBoYSko
TlNXaW5kb3cgKiwgZmxvYXQpOwotdm9pZCAoKndrV2luZG93U2V0U2NhbGVkRnJhbWUpKE5TV2lu
ZG93ICosIE5TUmVjdCwgTlNSZWN0KTsKIE5TVGltZUludGVydmFsICgqd2tHZXROU1VSTFJlc3Bv
bnNlQ2FsY3VsYXRlZEV4cGlyYXRpb24pKE5TVVJMUmVzcG9uc2UgKnJlc3BvbnNlKTsKIEJPT0wg
KCp3a0dldE5TVVJMUmVzcG9uc2VNdXN0UmV2YWxpZGF0ZSkoTlNVUkxSZXNwb25zZSAqcmVzcG9u
c2UpOwogVUludDggKCp3a0dldE5TRXZlbnRLZXlDaGFyKShOU0V2ZW50ICopOwpAQCAtNjMsOCAr
NTYsNiBAQCBOU0FycmF5ICooKndrUVRHZXRTaXRlc0luTWVkaWFEb3dubG9hZENhY2hlKSgpOwog
dm9pZCAoKndrUVRDbGVhck1lZGlhRG93bmxvYWRDYWNoZUZvclNpdGUpKE5TU3RyaW5nICpzaXRl
KTsKIHZvaWQgKCp3a1FUQ2xlYXJNZWRpYURvd25sb2FkQ2FjaGUpKCk7CiAKLXZvaWQgKCp3a1Nl
dERyYWdJbWFnZSkoTlNJbWFnZSosIE5TUG9pbnQgb2Zmc2V0KTsKLWJvb2wgKCp3a0NHQ29udGV4
dElzUERGQ29udGV4dCkoQ0dDb250ZXh0UmVmKTsKIHZvaWQgKCp3a1NldENPTk5FQ1RQcm94eUZv
clN0cmVhbSkoQ0ZSZWFkU3RyZWFtUmVmLCBDRlN0cmluZ1JlZiBwcm94eUhvc3QsIENGTnVtYmVy
UmVmIHByb3h5UG9ydCk7CiB2b2lkICgqd2tTZXRDT05ORUNUUHJveHlBdXRob3JpemF0aW9uRm9y
U3RyZWFtKShDRlJlYWRTdHJlYW1SZWYsIENGU3RyaW5nUmVmIHByb3h5QXV0aG9yaXphdGlvblN0
cmluZyk7CiBDRkhUVFBNZXNzYWdlUmVmICgqd2tDb3B5Q09OTkVDVFByb3h5UmVzcG9uc2UpKENG
UmVhZFN0cmVhbVJlZiwgQ0ZVUkxSZWYgcmVzcG9uc2VVUkwsIENGU3RyaW5nUmVmIHByb3h5SG9z
dCwgQ0ZOdW1iZXJSZWYgcHJveHlQb3J0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21hYy9XZWJXaW5kb3dBbmltYXRpb24ubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tYWMvV2ViV2luZG93QW5pbWF0aW9uLm1tCmluZGV4IDhhYmM4NDBiNzNjYzY0NWM4YWM0MDZk
ZWFmYWU5NDIyY2RjMzUzZTIuLmNhNTU5ZGYwYmNhOWI2MjRkZTJmYzA0MmEyZjNhMTU2Yzg3MGE4
MmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJXaW5kb3dBbmlt
YXRpb24ubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYldpbmRvd0FuaW1h
dGlvbi5tbQpAQCAtMjksNiArMjksNyBAQAogCiAjaW1wb3J0ICJGbG9hdENvbnZlcnNpb24uaCIK
ICNpbXBvcnQgIldlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaCIKKyNpbXBvcnQgPHBhbC9zcGkvY2cv
Q29yZUdyYXBoaWNzU1BJLmg+CiAjaW1wb3J0IDx3dGYvQXNzZXJ0aW9ucy5oPgogI2ltcG9ydCA8
d3RmL01hdGhFeHRyYXMuaD4KIApAQCAtMTA5LDYgKzExMCw1OSBAQCAtIChOU1JlY3QpY3VycmVu
dEZyYW1lCiAgICAgcmV0dXJuIHNjYWxlZFJlY3QoX2ZpbmFsRnJhbWUsIF9pbml0aWFsRnJhbWUs
IFtzZWxmIGN1cnJlbnRWYWx1ZV0pOwogfQogCitzdGF0aWMgdm9pZCBmbGlwUmVjdChOU1JlY3Qg
KnJlY3QpCit7CisgICAgcmVjdC0+b3JpZ2luLnkgPSBOU01heFkoWyhOU1NjcmVlbiAqKVtbTlNT
Y3JlZW4gc2NyZWVuc10gb2JqZWN0QXRJbmRleDowXSBmcmFtZV0pIC0gTlNNYXhZKCpyZWN0KTsK
K30KKworc3RhdGljIENHU0Nvbm5lY3Rpb25JRCBtYWluV2luZG93U2VydmVyQ29ubmVjdGlvbklE
KCkKK3sKKyAgICBzdGF0aWMgQ0dTQ29ubmVjdGlvbklEIGNnc0lkOworICAgIGlmICghY2dzSWQp
CisgICAgICAgIGNnc0lkID0gQ0dTTWFpbkNvbm5lY3Rpb25JRCgpOworICAgIHJldHVybiBjZ3NJ
ZDsKK30KKworc3RhdGljIHZvaWQgc2V0U2NhbGVkRnJhbWVGb3JXaW5kb3coTlNXaW5kb3cgKndp
bmRvdywgTlNSZWN0IHNjYWxlRnJhbWUsIE5TUmVjdCBub25TY2FsZWRGcmFtZSkKK3sKKyAgICBp
ZiAoTlNFcXVhbFJlY3RzKHNjYWxlRnJhbWUsIG5vblNjYWxlZEZyYW1lKSkgeworICAgICAgICBD
R1NTZXRXaW5kb3dXYXJwKG1haW5XaW5kb3dTZXJ2ZXJDb25uZWN0aW9uSUQoKSwgW3dpbmRvdyB3
aW5kb3dOdW1iZXJdLCAwLCAwLCBOVUxMKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAK
KyAgICBmbG9hdCBtZXNoWzE2XTsKKyAgICAKKyAgICBmbGlwUmVjdCgmc2NhbGVGcmFtZSk7Cisg
ICAgZmxpcFJlY3QoJm5vblNjYWxlZEZyYW1lKTsKKyAgICAKKyAgICAvLyB0b3AtbGVmdCBwb2lu
dCAodG8gYW5kIGZyb20pCisgICAgbWVzaFswXSA9IDA7CisgICAgbWVzaFsxXSA9IDA7CisgICAg
bWVzaFsyXSA9IE5TTWluWChzY2FsZUZyYW1lKTsKKyAgICBtZXNoWzNdID0gTlNNaW5ZKHNjYWxl
RnJhbWUpOworICAgIAorICAgIC8vIHRvcC1yaWdodCBwb2ludCAodG8gYW5kIGZyb20pCisgICAg
bWVzaFs0XSA9IE5TV2lkdGgobm9uU2NhbGVkRnJhbWUpOworICAgIG1lc2hbNV0gPSAwOworICAg
IG1lc2hbNl0gPSBOU01heFgoc2NhbGVGcmFtZSk7CisgICAgbWVzaFs3XSA9IE5TTWluWShzY2Fs
ZUZyYW1lKTsKKyAgICAKKyAgICAvLyBib3R0b20tbGVmdCAodG8gYW5kIGZyb20pCisgICAgbWVz
aFs4XSA9IDA7CisgICAgbWVzaFs5XSA9IE5TSGVpZ2h0KG5vblNjYWxlZEZyYW1lKTsKKyAgICBt
ZXNoWzEwXSA9IE5TTWluWChzY2FsZUZyYW1lKTsKKyAgICBtZXNoWzExXSA9IE5TTWF4WShzY2Fs
ZUZyYW1lKTsKKyAgICAKKyAgICAvLyBib3R0b20tcmlnaHQgKHRvIGFuZCBmcm9tKQorICAgIG1l
c2hbMTJdID0gTlNXaWR0aChub25TY2FsZWRGcmFtZSk7CisgICAgbWVzaFsxM10gPSBOU0hlaWdo
dChub25TY2FsZWRGcmFtZSk7CisgICAgbWVzaFsxNF0gPSBOU01heFgoc2NhbGVGcmFtZSk7Cisg
ICAgbWVzaFsxNV0gPSBOU01heFkoc2NhbGVGcmFtZSk7CisgICAgCisgICAgLy8gQXBwbHkgdGhl
IHdhcnAuCisgICAgQ0dTU2V0V2luZG93V2FycChtYWluV2luZG93U2VydmVyQ29ubmVjdGlvbklE
KCksIFt3aW5kb3cgd2luZG93TnVtYmVyXSwgMiwgMiwgbWVzaCk7Cit9CisKIC0gKHZvaWQpc2V0
Q3VycmVudFByb2dyZXNzOihOU0FuaW1hdGlvblByb2dyZXNzKXByb2dyZXNzCiB7CiAgICAgaWYg
KCFfd2luZG93KQpAQCAtMTE3LDcgKzE3MSw3IEBAIC0gKHZvaWQpc2V0Q3VycmVudFByb2dyZXNz
OihOU0FuaW1hdGlvblByb2dyZXNzKXByb2dyZXNzCiAgICAgW3N1cGVyIHNldEN1cnJlbnRQcm9n
cmVzczpwcm9ncmVzc107CiAKICAgICBOU1JlY3QgY3VycmVudFJlY3QgPSBbc2VsZiBjdXJyZW50
RnJhbWVdOwotICAgIHdrV2luZG93U2V0U2NhbGVkRnJhbWUoX3dpbmRvdywgY3VycmVudFJlY3Qs
IF9yZWFsRnJhbWUpOworICAgIHNldFNjYWxlZEZyYW1lRm9yV2luZG93KF93aW5kb3csIGN1cnJl
bnRSZWN0LCBfcmVhbEZyYW1lKTsKICAgICBbX3N1YkFuaW1hdGlvbiBzZXRDdXJyZW50UHJvZ3Jl
c3M6cHJvZ3Jlc3NdOwogfQogCkBAIC0yMTEsNyArMjY1LDcgQEAgLSAodm9pZClzZXRDdXJyZW50
UHJvZ3Jlc3M6KE5TQW5pbWF0aW9uUHJvZ3Jlc3MpcHJvZ3Jlc3MKICAgICBBU1NFUlQoX3dpbmRv
dyk7CiAgICAgW3N1cGVyIHNldEN1cnJlbnRQcm9ncmVzczpwcm9ncmVzc107CiAKLSAgICB3a1dp
bmRvd1NldEFscGhhKF93aW5kb3csIFtzZWxmIGN1cnJlbnRBbHBoYV0pOworICAgIENHU1NldFdp
bmRvd0FscGhhKG1haW5XaW5kb3dTZXJ2ZXJDb25uZWN0aW9uSUQoKSwgX3dpbmRvdy53aW5kb3dO
dW1iZXIsIFtzZWxmIGN1cnJlbnRBbHBoYV0pOwogfQogCiAtICh2b2lkKXNldFdpbmRvdzooTlNX
aW5kb3cqKXdpbmRvdwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL21h
Yy9QbHVnaW5Qcm9jZXNzTWFjLm1tIGIvU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL21hYy9Q
bHVnaW5Qcm9jZXNzTWFjLm1tCmluZGV4IGQ4NjAzNzg2N2EyZjFhZmEyNWVjNTI2MzA2ZTE0ZDk2
NGNkNzdlNmQuLmE5NjZkMTc2MzNhNGI5ZTE0YzQwZGE5NjMwYmU0NmRhYmJkZTlmZDkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9tYWMvUGx1Z2luUHJvY2Vzc01hYy5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvbWFjL1BsdWdpblByb2Nlc3NNYWMu
bW0KQEAgLTUzMSw3ICs1MzEsMTAgQEAgdm9pZCBQbHVnaW5Qcm9jZXNzOjpwbGF0Zm9ybUluaXRp
YWxpemVQcm9jZXNzKGNvbnN0IENoaWxkUHJvY2Vzc0luaXRpYWxpemF0aW9uUGEKIAogICAgIC8v
IEZJWE1FOiBJdCB3b3VsZCBiZSBiZXR0ZXIgdG8gcHJveHkgU2V0Q3Vyc29yIGNhbGxzIG92ZXIg
dG8gdGhlIFVJIHByb2Nlc3MgaW5zdGVhZCBvZgogICAgIC8vIGFsbG93aW5nIHBsdWctaW5zIHRv
IGNoYW5nZSB0aGUgbW91c2UgY3Vyc29yIGF0IGFueSB0aW1lLgotICAgIFdLRW5hYmxlU2V0dGlu
Z0N1cnNvcldoZW5JbkJhY2tncm91bmQoKTsKKyAgICAvLyBGSVhNRTogU2V0c0N1cnNvckluQmFj
a2dyb3VuZCBjb25uZWN0aW9uIHByb3BlcnR5IGlzIGRlcHJlY2F0ZWQgaW4gZmF2b3Igb2Yga0NH
U1NldHNDdXJzb3JJbkJhY2tncm91bmRUYWdCaXQgd2luZG93IHRhZyBiaXQuCisgICAgLy8gPHJk
YXI6Ly9wcm9ibGVtLzc3NTI0MjI+IGFza3MgZm9yIGFuIEFQSSB0byBzZXQgY3Vyc29yIGZyb20g
YmFja2dyb3VuZCBwcm9jZXNzZXMuCisgICAgQ0dTQ29ubmVjdGlvbklEIGNpZCA9IENHU01haW5D
b25uZWN0aW9uSUQoKTsKKyAgICBDR1NTZXRDb25uZWN0aW9uUHJvcGVydHkoY2lkLCBjaWQsIENG
U1RSKCJTZXRzQ3Vyc29ySW5CYWNrZ3JvdW5kIiksIChDRlR5cGVSZWYpa0NGQm9vbGVhblRydWUp
OwogCiAgICAgUmV0YWluUHRyPENGVVJMUmVmPiBwbHVnaW5VUkwgPSBhZG9wdENGKENGVVJMQ3Jl
YXRlV2l0aEZpbGVTeXN0ZW1QYXRoKDAsIG1fcGx1Z2luUGF0aC5jcmVhdGVDRlN0cmluZygpLmdl
dCgpLCBrQ0ZVUkxQT1NJWFBhdGhTdHlsZSwgZmFsc2UpKTsKICAgICBpZiAoIXBsdWdpblVSTCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XaW5kb3dTZXJ2ZXJDb25u
ZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2luZG93U2VydmVyQ29ubmVj
dGlvbi5oCmluZGV4IDgzOGEzNGZiNWMyZDQ0ZWVlNTQ2NGU1N2VkYzcwZTEwYWRiZDNiMjAuLmU3
YjUxOGM2YzVlYjBiMDYyZDg5YTkxY2E3MDU3N2JhODRlYjA1MTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XaW5kb3dTZXJ2ZXJDb25uZWN0aW9uLmgKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dpbmRvd1NlcnZlckNvbm5lY3Rpb24uaApAQCAtNDEs
OSArNDEsNiBAQCBwcml2YXRlOgogICAgIHZvaWQgd2luZG93U2VydmVyQ29ubmVjdGlvblN0YXRl
Q2hhbmdlZCgpOwogCiAgICAgdm9pZCBhcHBsaWNhdGlvbldpbmRvd01vZGlmaWNhdGlvbnNTdG9w
cGVkKGJvb2wgc3RvcHBlZCk7Ci0KLSAgICBzdGF0aWMgdm9pZCBhcHBsaWNhdGlvbldpbmRvd01v
ZGlmaWNhdGlvbnNTdGFydGVkKHVpbnQzMl90LCB2b2lkKiwgdWludDMyX3QsIHZvaWQqLCB1aW50
MzJfdCk7Ci0gICAgc3RhdGljIHZvaWQgYXBwbGljYXRpb25XaW5kb3dNb2RpZmljYXRpb25zU3Rv
cHBlZCh1aW50MzJfdCwgdm9pZCosIHVpbnQzMl90LCB2b2lkKiwgdWludDMyX3QpOwogI2VuZGlm
CiAKICAgICBib29sIG1fYXBwbGljYXRpb25XaW5kb3dNb2RpZmljYXRpb25zSGF2ZVN0b3BwZWQ7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2luZG93U2VydmVyQ29u
bmVjdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XaW5kb3dTZXJ2ZXJDb25u
ZWN0aW9uLm1tCmluZGV4IDgxOTUzNWMyYWMxMjljOGQ1MjEyMThjOTc1NWM4NGI2MWQ0NGYyODUu
LmE5ZTVlZDVkNjAzNmE1Njc2MDYxNTNiZTk2MGEzNGUxYWIzNjA5NDUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XaW5kb3dTZXJ2ZXJDb25uZWN0aW9uLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XaW5kb3dTZXJ2ZXJDb25uZWN0aW9uLm1tCkBA
IC0yOCw2ICsyOCw3IEBACiAKICNpbXBvcnQgIldlYktpdFN5c3RlbUludGVyZmFjZS5oIgogI2lt
cG9ydCAiV2ViUHJvY2Vzc1Bvb2wuaCIKKyNpbXBvcnQgPHBhbC9zcGkvY2cvQ29yZUdyYXBoaWNz
U1BJLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCkBAIC00MSwxNiArNDIsNiBAQCB2b2lkIFdp
bmRvd1NlcnZlckNvbm5lY3Rpb246OmFwcGxpY2F0aW9uV2luZG93TW9kaWZpY2F0aW9uc1N0b3Bw
ZWQoYm9vbCBzdG9wcGVkKQogICAgIHdpbmRvd1NlcnZlckNvbm5lY3Rpb25TdGF0ZUNoYW5nZWQo
KTsKIH0KIAotdm9pZCBXaW5kb3dTZXJ2ZXJDb25uZWN0aW9uOjphcHBsaWNhdGlvbldpbmRvd01v
ZGlmaWNhdGlvbnNTdGFydGVkKHVpbnQzMl90LCB2b2lkKiwgdWludDMyX3QsIHZvaWQqLCB1aW50
MzJfdCkKLXsKLSAgICBXaW5kb3dTZXJ2ZXJDb25uZWN0aW9uOjpzaW5nbGV0b24oKS5hcHBsaWNh
dGlvbldpbmRvd01vZGlmaWNhdGlvbnNTdG9wcGVkKGZhbHNlKTsKLX0KLQotdm9pZCBXaW5kb3dT
ZXJ2ZXJDb25uZWN0aW9uOjphcHBsaWNhdGlvbldpbmRvd01vZGlmaWNhdGlvbnNTdG9wcGVkKHVp
bnQzMl90LCB2b2lkKiwgdWludDMyX3QsIHZvaWQqLCB1aW50MzJfdCkKLXsKLSAgICBXaW5kb3dT
ZXJ2ZXJDb25uZWN0aW9uOjpzaW5nbGV0b24oKS5hcHBsaWNhdGlvbldpbmRvd01vZGlmaWNhdGlv
bnNTdG9wcGVkKHRydWUpOwotfQotCiB2b2lkIFdpbmRvd1NlcnZlckNvbm5lY3Rpb246OndpbmRv
d1NlcnZlckNvbm5lY3Rpb25TdGF0ZUNoYW5nZWQoKQogewogICAgIGZvciAoYXV0byogcHJvY2Vz
c1Bvb2wgOiBXZWJQcm9jZXNzUG9vbDo6YWxsUHJvY2Vzc1Bvb2xzKCkpCkBAIC02NSwyMyArNTYs
NDggQEAgV2luZG93U2VydmVyQ29ubmVjdGlvbiYgV2luZG93U2VydmVyQ29ubmVjdGlvbjo6c2lu
Z2xldG9uKCkKICAgICByZXR1cm4gd2luZG93U2VydmVyQ29ubmVjdGlvbjsKIH0KIAorI2lmIEhB
VkUoV0lORE9XX1NFUlZFUl9PQ0NMVVNJT05fTk9USUZJQ0FUSU9OUykKK3N0YXRpYyBib29sIHJl
Z2lzdGVyT2NjbHVzaW9uTm90aWZpY2F0aW9uSGFuZGxlcihDR1NOb3RpZmljYXRpb25UeXBlIHR5
cGUsIENHU05vdGlmeUNvbm5lY3Rpb25Qcm9jUHRyIGhhbmRsZXIpCit7CisgICAgQ0dTQ29ubmVj
dGlvbklEIG1haW5Db25uZWN0aW9uID0gQ0dTTWFpbkNvbm5lY3Rpb25JRCgpOworICAgIHN0YXRp
YyBib29sIG5vdGlmaWNhdGlvbnNFbmFibGVkOworICAgIGlmICghbm90aWZpY2F0aW9uc0VuYWJs
ZWQpIHsKKyAgICAgICAgaWYgKENHU1BhY2thZ2VzRW5hYmxlQ29ubmVjdGlvbk9jY2x1c2lvbk5v
dGlmaWNhdGlvbnMobWFpbkNvbm5lY3Rpb24sIHRydWUsIG51bGxwdHIpICE9IGtDR0Vycm9yU3Vj
Y2VzcykKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYgKENHU1BhY2thZ2Vz
RW5hYmxlQ29ubmVjdGlvbldpbmRvd01vZGlmaWNhdGlvbk5vdGlmaWNhdGlvbnMobWFpbkNvbm5l
Y3Rpb24sIHRydWUsIG51bGxwdHIpICE9IGtDR0Vycm9yU3VjY2VzcykKKyAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgbm90aWZpY2F0aW9uc0VuYWJsZWQgPSB0cnVlOworICAgIH0K
KworICAgIHJldHVybiBDR1NSZWdpc3RlckNvbm5lY3Rpb25Ob3RpZnlQcm9jKG1haW5Db25uZWN0
aW9uLCBoYW5kbGVyLCB0eXBlLCBudWxscHRyKSA9PSBrQ0dFcnJvclN1Y2Nlc3M7Cit9CisjZW5k
aWYKKwogV2luZG93U2VydmVyQ29ubmVjdGlvbjo6V2luZG93U2VydmVyQ29ubmVjdGlvbigpCiAg
ICAgOiBtX2FwcGxpY2F0aW9uV2luZG93TW9kaWZpY2F0aW9uc0hhdmVTdG9wcGVkKGZhbHNlKQog
ewogI2lmIEhBVkUoV0lORE9XX1NFUlZFUl9PQ0NMVVNJT05fTk9USUZJQ0FUSU9OUykKICAgICBz
dHJ1Y3QgT2NjbHVzaW9uTm90aWZpY2F0aW9uSGFuZGxlciB7Ci0gICAgICAgIFdLT2NjbHVzaW9u
Tm90aWZpY2F0aW9uVHlwZSBub3RpZmljYXRpb25UeXBlOwotICAgICAgICBXS09jY2x1c2lvbk5v
dGlmaWNhdGlvbkhhbmRsZXIgaGFuZGxlcjsKKyAgICAgICAgQ0dTTm90aWZpY2F0aW9uVHlwZSBu
b3RpZmljYXRpb25UeXBlOworICAgICAgICBDR1NOb3RpZnlDb25uZWN0aW9uUHJvY1B0ciBoYW5k
bGVyOwogICAgICAgICBjb25zdCBjaGFyKiBuYW1lOwogICAgIH07CiAKKyAgICBzdGF0aWMgYXV0
byB3aW5kb3dNb2RpZmljYXRpb25zU3RhcnRlZCA9IFtdKENHU05vdGlmaWNhdGlvblR5cGUsIHZv
aWQqLCB1aW50MzJfdCwgdm9pZCosIENHU0Nvbm5lY3Rpb25JRCkgeworICAgICAgICBXaW5kb3dT
ZXJ2ZXJDb25uZWN0aW9uOjpzaW5nbGV0b24oKS5hcHBsaWNhdGlvbldpbmRvd01vZGlmaWNhdGlv
bnNTdG9wcGVkKGZhbHNlKTsKKyAgICB9OworCisgICAgc3RhdGljIGF1dG8gd2luZG93TW9kaWZp
Y2F0aW9uc1N0b3BwZWQgPSBbXShDR1NOb3RpZmljYXRpb25UeXBlLCB2b2lkKiwgdWludDMyX3Qs
IHZvaWQqLCBDR1NDb25uZWN0aW9uSUQpIHsKKyAgICAgICAgV2luZG93U2VydmVyQ29ubmVjdGlv
bjo6c2luZ2xldG9uKCkuYXBwbGljYXRpb25XaW5kb3dNb2RpZmljYXRpb25zU3RvcHBlZCh0cnVl
KTsKKyAgICB9OworCiAgICAgc3RhdGljIGNvbnN0IE9jY2x1c2lvbk5vdGlmaWNhdGlvbkhhbmRs
ZXIgb2NjbHVzaW9uTm90aWZpY2F0aW9uSGFuZGxlcnNbXSA9IHsKLSAgICAgICAgeyBXS09jY2x1
c2lvbk5vdGlmaWNhdGlvblR5cGVBcHBsaWNhdGlvbldpbmRvd01vZGlmaWNhdGlvbnNTdGFydGVk
LCBhcHBsaWNhdGlvbldpbmRvd01vZGlmaWNhdGlvbnNTdGFydGVkLCAiQXBwbGljYXRpb24gV2lu
ZG93IE1vZGlmaWNhdGlvbnMgU3RhcnRlZCIgfSwKLSAgICAgICAgeyBXS09jY2x1c2lvbk5vdGlm
aWNhdGlvblR5cGVBcHBsaWNhdGlvbldpbmRvd01vZGlmaWNhdGlvbnNTdG9wcGVkLCBhcHBsaWNh
dGlvbldpbmRvd01vZGlmaWNhdGlvbnNTdG9wcGVkLCAiQXBwbGljYXRpb24gV2luZG93IE1vZGlm
aWNhdGlvbnMgU3RvcHBlZCIgfSwKKyAgICAgICAgeyBrQ0dTQ29ubmVjdGlvbldpbmRvd01vZGlm
aWNhdGlvbnNTdGFydGVkLCB3aW5kb3dNb2RpZmljYXRpb25zU3RhcnRlZCwgIkFwcGxpY2F0aW9u
IFdpbmRvdyBNb2RpZmljYXRpb25zIFN0YXJ0ZWQiIH0sCisgICAgICAgIHsga0NHU0Nvbm5lY3Rp
b25XaW5kb3dNb2RpZmljYXRpb25zU3RvcHBlZCwgd2luZG93TW9kaWZpY2F0aW9uc1N0b3BwZWQs
ICJBcHBsaWNhdGlvbiBXaW5kb3cgTW9kaWZpY2F0aW9ucyBTdG9wcGVkIiB9LAogICAgIH07CiAK
ICAgICBmb3IgKGNvbnN0IGF1dG8mIG9jY2x1c2lvbk5vdGlmaWNhdGlvbkhhbmRsZXIgOiBvY2Ns
dXNpb25Ob3RpZmljYXRpb25IYW5kbGVycykgewotICAgICAgICBib29sIHJlc3VsdCA9IFdLUmVn
aXN0ZXJPY2NsdXNpb25Ob3RpZmljYXRpb25IYW5kbGVyKG9jY2x1c2lvbk5vdGlmaWNhdGlvbkhh
bmRsZXIubm90aWZpY2F0aW9uVHlwZSwgb2NjbHVzaW9uTm90aWZpY2F0aW9uSGFuZGxlci5oYW5k
bGVyKTsKKyAgICAgICAgYm9vbCByZXN1bHQgPSByZWdpc3Rlck9jY2x1c2lvbk5vdGlmaWNhdGlv
bkhhbmRsZXIob2NjbHVzaW9uTm90aWZpY2F0aW9uSGFuZGxlci5ub3RpZmljYXRpb25UeXBlLCBv
Y2NsdXNpb25Ob3RpZmljYXRpb25IYW5kbGVyLmhhbmRsZXIpOwogICAgICAgICBVTlVTRURfUEFS
QU0ocmVzdWx0KTsKICAgICAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShyZXN1bHQsICJSZWdpc3Ry
YXRpb24gb2YgXCIlc1wiIG5vdGlmaWNhdGlvbiBoYW5kbGVyIGZhaWxlZC5cbiIsIG9jY2x1c2lv
bk5vdGlmaWNhdGlvbkhhbmRsZXIubmFtZSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJTeXN0ZW1JbnRlcmZhY2UubW0g
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYlN5c3RlbUlu
dGVyZmFjZS5tbQppbmRleCBkMThhNDQwZGQ3MjUzOWM2YTU2OTRiNzQ2N2Y4YTY5MTg4NTFkOTll
Li41YjA5NzljNjg1YWQwODAwMmY3YzJhMGY3YjU4ZDE3ZmI4NmNhN2M1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYlN5c3RlbUludGVy
ZmFjZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFj
L1dlYlN5c3RlbUludGVyZmFjZS5tbQpAQCAtMzcsMjEgKzM3LDExIEBAIHZvaWQgSW5pdFdlYkNv
cmVTeXN0ZW1JbnRlcmZhY2Uodm9pZCkKICAgICAKICAgICBkaXNwYXRjaF9vbmNlKCZpbml0T25j
ZSwgXnsKICAgICAgICAgSU5JVChDQUxheWVyRW51bWVyYXRlUmVjdHNCZWluZ0RyYXduV2l0aEJs
b2NrKTsKLSAgICAgICAgSU5JVChDR1BhdHRlcm5DcmVhdGVXaXRoSW1hZ2VBbmRUcmFuc2Zvcm0p
OwotI2lmICFQTEFURk9STShJT1MpCi0gICAgICAgIElOSVQoQ0dDb250ZXh0RHJhd3NXaXRoQ29y
cmVjdFNoYWRvd09mZnNldHMpOwotI2VuZGlmCiAgICAgICAgIElOSVQoQ29weUNPTk5FQ1RQcm94
eVJlc3BvbnNlKTsKICNpZiAhUExBVEZPUk0oSU9TKQogICAgICAgICBJTklUKERyYXdCZXplbGVk
VGV4dEFyZWEpOwotICAgICAgICBJTklUKERyYXdGb2N1c1JpbmcpOwotICAgICAgICBJTklUKERy
YXdGb2N1c1JpbmdBdFRpbWUpOwotICAgICAgICBJTklUKERyYXdDZWxsRm9jdXNSaW5nV2l0aEZy
YW1lQXRUaW1lKTsKICAgICAgICAgSU5JVChEcmF3TWVkaWFTbGlkZXJUcmFjayk7CiAgICAgICAg
IElOSVQoRHJhd01lZGlhVUlQYXJ0KTsKLSNlbmRpZgotICAgICAgICBJTklUKENHQ29udGV4dElz
UERGQ29udGV4dCk7Ci0jaWYgIVBMQVRGT1JNKElPUykKICAgICAgICAgSU5JVChHZXROU0V2ZW50
S2V5Q2hhcik7CiAgICAgICAgIElOSVQoSGl0VGVzdE1lZGlhVUlQYXJ0KTsKICAgICAgICAgSU5J
VChNZWFzdXJlTWVkaWFVSVBhcnQpOwpAQCAtNzAsMTYgKzYwLDExIEBAIHZvaWQgSW5pdFdlYkNv
cmVTeXN0ZW1JbnRlcmZhY2Uodm9pZCkKICNlbmRpZgogICAgICAgICBJTklUKFNldENPTk5FQ1RQ
cm94eUF1dGhvcml6YXRpb25Gb3JTdHJlYW0pOwogICAgICAgICBJTklUKFNldENPTk5FQ1RQcm94
eUZvclN0cmVhbSk7Ci0jaWYgIVBMQVRGT1JNKElPUykKLSAgICAgICAgSU5JVChTZXREcmFnSW1h
Z2UpOwotI2VuZGlmCiAKICNpZiAhUExBVEZPUk0oSU9TKQogICAgICAgICBJTklUKEV4ZWN1dGFi
bGVXYXNMaW5rZWRPbk9yQmVmb3JlU25vd0xlb3BhcmQpOwogICAgICAgICBJTklUKENvcHlEZWZh
dWx0U2VhcmNoUHJvdmlkZXJEaXNwbGF5TmFtZSk7CiAgICAgICAgIElOSVQoQ3Vyc29yKTsKLSAg
ICAgICAgSU5JVChXaW5kb3dTZXRTY2FsZWRGcmFtZSk7Ci0gICAgICAgIElOSVQoV2luZG93U2V0
QWxwaGEpOwogICAgICAgICBJTklUKFNwZWVjaFN5bnRoZXNpc0dldFZvaWNlSWRlbnRpZmllcnMp
OwogICAgICAgICBJTklUKFNwZWVjaFN5bnRoZXNpc0dldERlZmF1bHRWb2ljZUlkZW50aWZpZXJG
b3JMb2NhbGUpOwogICAgICAgICBJTklUKE5TRWxhc3RpY0RlbHRhRm9yVGltZURlbHRhKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NhcmJvbi9ISVdlYlZpZXcubW0gYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DYXJib24vSElXZWJWaWV3Lm1tCmluZGV4IDM0NTg1YzI1
MmMzYjE4Y2FjZDZlMDdhZDVlOTQ0ODc3OWQ4YmU0NTcuLmE5ZjZlYWVkNzIwMzg4NDczZWUzNmFh
MDFkYjFkOWIzNDMxZDZlMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0Nh
cmJvbi9ISVdlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2FyYm9uL0hJ
V2ViVmlldy5tbQpAQCAtODUsNiArODUsMjEgQEAgLSAoaW50KXRhZwogCiBAZW5kCiAKK0BpbnRl
cmZhY2UgTlNXaW5kb3dHcmFwaGljc0NvbnRleHQgKCkKKy0gKHZvaWQpX3dlYl9zZXRHcmFwaGlj
c1BvcnQ6KENHQ29udGV4dFJlZiljb250ZXh0OworQGVuZAorCitAaW1wbGVtZW50YXRpb24gTlNX
aW5kb3dHcmFwaGljc0NvbnRleHQgKCkKKworLSAodm9pZClfd2ViX3NldEdyYXBoaWNzUG9ydDoo
Q0dDb250ZXh0UmVmKWNvbnRleHQKK3sKKyAgICBDR0NvbnRleHRSZXRhaW4oY29udGV4dCk7Cisg
ICAgQ0dDb250ZXh0UmVsZWFzZShfY2dzQ29udGV4dCk7CisgICAgX2Nnc0NvbnRleHQgPSBjb250
ZXh0OworfQorCitAZW5kCisKIHN0cnVjdCBISVdlYlZpZXcKIHsKICAgICBISVZpZXdSZWYJCQkJ
CQkJZlZpZXdSZWY7CkBAIC0yOTAsNiArMzA1LDIyIEBAIEdldEJlaGF2aW9ycygpCiAJcmV0dXJu
IGtDb250cm9sU3VwcG9ydHNEYXRhQWNjZXNzIHwga0NvbnRyb2xTdXBwb3J0c0dldFJlZ2lvbiB8
IGtDb250cm9sR2V0c0ZvY3VzT25DbGljazsKIH0KIAorc3RhdGljIENHQ29udGV4dFJlZiBvdmVy
cmlkZUNHQ29udGV4dChOU1dpbmRvdyAqd2luZG93LCBDR0NvbnRleHRSZWYgY29udGV4dCkKK3sK
KyAgICBOU1dpbmRvd0dyYXBoaWNzQ29udGV4dCAqZ3JhcGhpY3NDb250ZXh0ID0gKE5TV2luZG93
R3JhcGhpY3NDb250ZXh0ICopW3dpbmRvdyBncmFwaGljc0NvbnRleHRdOworICAgIENHQ29udGV4
dFJlZiBzYXZlZENvbnRleHQgPSAoQ0dDb250ZXh0UmVmKVtncmFwaGljc0NvbnRleHQgZ3JhcGhp
Y3NQb3J0XTsKKyAgICBDR0NvbnRleHRSZXRhaW4oc2F2ZWRDb250ZXh0KTsKKyAgICBbZ3JhcGhp
Y3NDb250ZXh0IF93ZWJfc2V0R3JhcGhpY3NQb3J0OmNvbnRleHRdOworICAgIHJldHVybiBzYXZl
ZENvbnRleHQ7Cit9CisKK3N0YXRpYyB2b2lkIHJlc3RvcmVDR0NvbnRleHQoTlNXaW5kb3cgKndp
bmRvdywgQ0dDb250ZXh0UmVmIHNhdmVkQ29udGV4dCkKK3sKKyAgICBOU1dpbmRvd0dyYXBoaWNz
Q29udGV4dCAqZ3JhcGhpY3NDb250ZXh0ID0gKE5TV2luZG93R3JhcGhpY3NDb250ZXh0ICopW3dp
bmRvdyBncmFwaGljc0NvbnRleHRdOworICAgIFtncmFwaGljc0NvbnRleHQgX3dlYl9zZXRHcmFw
aGljc1BvcnQ6c2F2ZWRDb250ZXh0XTsKKyAgICBDR0NvbnRleHRSZWxlYXNlKHNhdmVkQ29udGV4
dCk7Cit9CisKIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogLy8gRHJhdwogLy8tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCkBAIC0zMjEsNyArMzUyLDcgQEAgRHJhdyggSElXZWJWaWV3KiBp
blZpZXcsIFJnbkhhbmRsZSBsaW1pdFJnbiwgQ0dDb250ZXh0UmVmIGluQ29udGV4dCApCiAKIAlI
SVZpZXdHZXRCb3VuZHMoIGluVmlldy0+ZlZpZXdSZWYsICZib3VuZHMgKTsKIAotICAgIENHQ29u
dGV4dFJlZiBzYXZlZENvbnRleHQgPSBXS05TV2luZG93T3ZlcnJpZGVDR0NvbnRleHQoaW5WaWV3
LT5mS2l0V2luZG93LCBpbkNvbnRleHQpOworICAgIENHQ29udGV4dFJlZiBzYXZlZENvbnRleHQg
PSBvdmVycmlkZUNHQ29udGV4dChpblZpZXctPmZLaXRXaW5kb3csIGluQ29udGV4dCk7CiAgICAg
W05TR3JhcGhpY3NDb250ZXh0IHNldEN1cnJlbnRDb250ZXh0OltpblZpZXctPmZLaXRXaW5kb3cg
Z3JhcGhpY3NDb250ZXh0XV07CiAKIAlHZXRSZWdpb25Cb3VuZHMoIGxpbWl0UmduLCAmZHJhd1Jl
Y3QgKTsKQEAgLTM1MSw3ICszODIsNyBAQCBEcmF3KCBISVdlYlZpZXcqIGluVmlldywgUmduSGFu
ZGxlIGxpbWl0UmduLCBDR0NvbnRleHRSZWYgaW5Db250ZXh0ICkKICAgICBlbHNlCiAgICAgICAg
IFtpblZpZXctPmZXZWJWaWV3IGRpc3BsYXlSZWN0OiooTlNSZWN0KikmaGlSZWN0XTsKIAotICAg
IFdLTlNXaW5kb3dSZXN0b3JlQ0dDb250ZXh0KGluVmlldy0+ZktpdFdpbmRvdywgc2F2ZWRDb250
ZXh0KTsKKyAgICByZXN0b3JlQ0dDb250ZXh0KGluVmlldy0+ZktpdFdpbmRvdywgc2F2ZWRDb250
ZXh0KTsKIAogICAgIGlmICggIWluVmlldy0+ZklzQ29tcG9zaXRlZCApCiAgICAgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvV2ViSG9zdGVkTmV0
c2NhcGVQbHVnaW5WaWV3Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0
ZWQvV2ViSG9zdGVkTmV0c2NhcGVQbHVnaW5WaWV3Lm1tCmluZGV4IDllMjA0NGUyNmUxMzkwMjFl
YjhjYTYzMzYyNTVmMmM4MzNjMWI4YjIuLjY5NWE1Y2Y1MjczNzNkMzA5YTgzYjY0ZDZmMWQwMTAw
ZWQzYTQwOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9z
dGVkL1dlYkhvc3RlZE5ldHNjYXBlUGx1Z2luVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9QbHVnaW5zL0hvc3RlZC9XZWJIb3N0ZWROZXRzY2FwZVBsdWdpblZpZXcubW0KQEAg
LTc2LDcgKzc2LDcgQEAgKyAodm9pZClpbml0aWFsaXplCiAgICAgV1RGOjppbml0aWFsaXplTWFp
blRocmVhZFRvUHJvY2Vzc01haW5UaHJlYWQoKTsKICAgICBSdW5Mb29wOjppbml0aWFsaXplTWFp
blJ1bkxvb3AoKTsKICNlbmRpZgotICAgIFdLU2VuZFVzZXJDaGFuZ2VOb3RpZmljYXRpb25zKCk7
CisgICAgc2VuZFVzZXJDaGFuZ2VOb3RpZmljYXRpb25zKCk7CiB9CiAKIC0gKGlkKWluaXRXaXRo
RnJhbWU6KE5TUmVjdClmcmFtZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
UGx1Z2lucy9XZWJCYXNlTmV0c2NhcGVQbHVnaW5WaWV3LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9QbHVnaW5zL1dlYkJhc2VOZXRzY2FwZVBsdWdpblZpZXcuaAppbmRleCBjMjIyM2FiNmQy
Njc1MWYzOGMzODk1ODFiZDM0OWRlOTgxNGMxNWIxLi5jZDQzMGQzNjY5NzFlYzlmZTJlYTBkNDQw
NTkzYjU4MGM5Y2EyZTI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVn
aW5zL1dlYkJhc2VOZXRzY2FwZVBsdWdpblZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9QbHVnaW5zL1dlYkJhc2VOZXRzY2FwZVBsdWdpblZpZXcuaApAQCAtMTM0LDYgKzEzNCw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIG5hbWVzcGFjZSBXZWJLaXQgewogYm9vbCBnZXRBdXRo
ZW50aWNhdGlvbkluZm8oY29uc3QgY2hhciogcHJvdG9jb2xTdHIsIGNvbnN0IGNoYXIqIGhvc3RT
dHIsIGludDMyX3QgcG9ydCwgY29uc3QgY2hhciogc2NoZW1lU3RyLCBjb25zdCBjaGFyKiByZWFs
bVN0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdURjo6Q1N0cmluZyYgdXNlcm5hbWUs
IFdURjo6Q1N0cmluZyYgcGFzc3dvcmQpOwordm9pZCBzZW5kVXNlckNoYW5nZU5vdGlmaWNhdGlv
bnMoKTsKIH0gCiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
UGx1Z2lucy9XZWJCYXNlTmV0c2NhcGVQbHVnaW5WaWV3Lm1tIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvUGx1Z2lucy9XZWJCYXNlTmV0c2NhcGVQbHVnaW5WaWV3Lm1tCmluZGV4IDY0ZGU5MDEw
ZWJkYjBiMDY5ZDZmODYzYTNmZWYyZmZkN2I1ZDQzMzguLmJlMWMzMGIzZjMwOWRhNjg1NWYzY2Qx
ZDI3YWI0NzA4OWFlZDJjMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1Bs
dWdpbnMvV2ViQmFzZU5ldHNjYXBlUGx1Z2luVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9QbHVnaW5zL1dlYkJhc2VOZXRzY2FwZVBsdWdpblZpZXcubW0KQEAgLTU1LDYgKzU1
LDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW4uaD4KICNpbXBvcnQgPFdlYkNv
cmUvV2ViQ29yZU9iakNFeHRyYXMuaD4KICNpbXBvcnQgPFdlYktpdExlZ2FjeS9ET01Qcml2YXRl
Lmg+CisjaW1wb3J0IDxwYWwvc3BpL2NnL0NvcmVHcmFwaGljc1NQSS5oPgogI2ltcG9ydCA8cnVu
dGltZS9Jbml0aWFsaXplVGhyZWFkaW5nLmg+CiAjaW1wb3J0IDx3dGYvQXNzZXJ0aW9ucy5oPgog
I2ltcG9ydCA8d3RmL01haW5UaHJlYWQuaD4KQEAgLTczLDcgKzc0LDcgQEAgKyAodm9pZClpbml0
aWFsaXplCiAgICAgSlNDOjppbml0aWFsaXplVGhyZWFkaW5nKCk7CiAgICAgV1RGOjppbml0aWFs
aXplTWFpblRocmVhZFRvUHJvY2Vzc01haW5UaHJlYWQoKTsKICAgICBSdW5Mb29wOjppbml0aWFs
aXplTWFpblJ1bkxvb3AoKTsKLSAgICBXS1NlbmRVc2VyQ2hhbmdlTm90aWZpY2F0aW9ucygpOwor
ICAgIFdlYktpdDo6c2VuZFVzZXJDaGFuZ2VOb3RpZmljYXRpb25zKCk7CiB9CiAKIC0gKGlkKWlu
aXRXaXRoRnJhbWU6KE5TUmVjdClmcmFtZQpAQCAtOTAwLDYgKzkwMSwyMyBAQCBib29sIGdldEF1
dGhlbnRpY2F0aW9uSW5mbyhjb25zdCBjaGFyKiBwcm90b2NvbFN0ciwgY29uc3QgY2hhciogaG9z
dFN0ciwgaW50MzJfdAogICAgIHJldHVybiB0cnVlOwogfQogCit2b2lkIHNlbmRVc2VyQ2hhbmdl
Tm90aWZpY2F0aW9ucygpCit7CisgICAgYXV0byBjb25zb2xlQ29ubmVjdGlvbkNoYW5nZU5vdGlm
eVByb2MgPSBbXShDR1NOb3RpZmljYXRpb25UeXBlIHR5cGUsIENHU05vdGlmaWNhdGlvbkRhdGEs
IENHU0J5dGVDb3VudCwgQ0dTTm90aWZpY2F0aW9uQXJnKSB7CisgICAgICAgIE5TU3RyaW5nICpu
b3RpZmljYXRpb25OYW1lID0gbmlsOworICAgICAgICBpZiAodHlwZSA9PSBrQ0dTZXNzaW9uQ29u
c29sZUNvbm5lY3QpCisgICAgICAgICAgICBub3RpZmljYXRpb25OYW1lID0gTG9naW5XaW5kb3dE
aWRTd2l0Y2hUb1VzZXJOb3RpZmljYXRpb247CisgICAgICAgIGVsc2UgaWYgKHR5cGUgPT0ga0NH
U2Vzc2lvbkNvbnNvbGVEaXNjb25uZWN0KQorICAgICAgICAgICAgbm90aWZpY2F0aW9uTmFtZSA9
IExvZ2luV2luZG93RGlkU3dpdGNoRnJvbVVzZXJOb3RpZmljYXRpb247CisgICAgICAgIGVsc2UK
KyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBbW05TTm90aWZpY2F0
aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdIHBvc3ROb3RpZmljYXRpb25OYW1lOm5vdGlmaWNhdGlv
bk5hbWUgb2JqZWN0Om5pbF07CisgICAgfTsKKworICAgIENHU1JlZ2lzdGVyTm90aWZ5UHJvYyhj
b25zb2xlQ29ubmVjdGlvbkNoYW5nZU5vdGlmeVByb2MsIGtDR1Nlc3Npb25Db25zb2xlQ29ubmVj
dCwgTlVMTCk7CisgICAgQ0dTUmVnaXN0ZXJOb3RpZnlQcm9jKGNvbnNvbGVDb25uZWN0aW9uQ2hh
bmdlTm90aWZ5UHJvYywga0NHU2Vzc2lvbkNvbnNvbGVEaXNjb25uZWN0LCBOVUxMKTsKK30KKwog
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyAgRU5BQkxFKE5FVFNDQVBFX1BMVUdJ
Tl9BUEkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYk5l
dHNjYXBlUGx1Z2luVmlldy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2Vi
TmV0c2NhcGVQbHVnaW5WaWV3Lm1tCmluZGV4IGM2ODBmZjdlZTMxYzkzYjhmYjQ5MjI5N2U0ZTdh
ZDkxNDFhNGRkZTQuLjJiYmQzZGViZTY2ZTE4ZDhmMzE4MGM5NGNhMTMzN2ZjZjdkODgxNzAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVn
aW5WaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViTmV0c2Nh
cGVQbHVnaW5WaWV3Lm1tCkBAIC0xOTMsNyArMTkzLDcgQEAgKyAodm9pZClpbml0aWFsaXplCiAg
ICAgSlNDOjppbml0aWFsaXplVGhyZWFkaW5nKCk7CiAgICAgV1RGOjppbml0aWFsaXplTWFpblRo
cmVhZFRvUHJvY2Vzc01haW5UaHJlYWQoKTsKICAgICBSdW5Mb29wOjppbml0aWFsaXplTWFpblJ1
bkxvb3AoKTsKLSAgICBXS1NlbmRVc2VyQ2hhbmdlTm90aWZpY2F0aW9ucygpOworICAgIHNlbmRV
c2VyQ2hhbmdlTm90aWZpY2F0aW9ucygpOwogfQogCiAvLyBNQVJLOiBFVkVOVFMKQEAgLTM3OSwx
MCArMzc5LDEwIEBAIC0gKFBvcnRTdGF0ZSlzYXZlQW5kU2V0TmV3UG9ydFN0YXRlRm9yVXBkYXRl
OihCT09MKWZvclVwZGF0ZQogICAgICAgICAgICAgcWRQb3J0U3RhdGUtPmNsaXBSZWdpb24gPSBj
bGlwUmVnaW9uOwogCiAgICAgICAgICAgICBDR0NvbnRleHRSZWYgY3VycmVudENvbnRleHQgPSAo
Q0dDb250ZXh0UmVmKVtbTlNHcmFwaGljc0NvbnRleHQgY3VycmVudENvbnRleHRdIGdyYXBoaWNz
UG9ydF07Ci0gICAgICAgICAgICBpZiAoY3VycmVudENvbnRleHQgJiYgV0tDR0NvbnRleHRJc0Jp
dG1hcENvbnRleHQoY3VycmVudENvbnRleHQpKSB7Ci0gICAgICAgICAgICAgICAgLy8gV2UgdXNl
IFdLQ0dDb250ZXh0SXNCaXRtYXBDb250ZXh0IGhlcmUsIGJlY2F1c2UgaWYgd2UganVzdCBjYWxs
ZWQgQ0dCaXRtYXBDb250ZXh0R2V0RGF0YQotICAgICAgICAgICAgICAgIC8vIG9uIGFueSBjb250
ZXh0LCB3ZSdkIGxvZyB0byB0aGUgY29uc29sZSBldmVyeSB0aW1lLiBCdXQgZXZlbiBpZiBXS0NH
Q29udGV4dElzQml0bWFwQ29udGV4dAotICAgICAgICAgICAgICAgIC8vIHJldHVybnMgdHJ1ZSwg
aXQgc3RpbGwgbWlnaHQgbm90IGJlIGEgY29udGV4dCB3ZSBuZWVkIHRvIGNyZWF0ZSBhIEdXb3Js
ZCBmb3I7IGZvciBleGFtcGxlCisgICAgICAgICAgICBpZiAoY3VycmVudENvbnRleHQgJiYgQ0dD
b250ZXh0R2V0VHlwZShjdXJyZW50Q29udGV4dCkgPT0ga0NHQ29udGV4dFR5cGVCaXRtYXApIHsK
KyAgICAgICAgICAgICAgICAvLyBXZSBjaGVjayBmb3Iga0NHQ29udGV4dFR5cGVCaXRtYXAgaGVy
ZSwgYmVjYXVzZSBpZiB3ZSBqdXN0IGNhbGxlZCBDR0JpdG1hcENvbnRleHRHZXREYXRhCisgICAg
ICAgICAgICAgICAgLy8gb24gYW55IGNvbnRleHQsIHdlJ2QgbG9nIHRvIHRoZSBjb25zb2xlIGV2
ZXJ5IHRpbWUuIEJ1dCBldmVuIGlmIGN1cnJlbnRDb250ZXh0IGlzIGEKKyAgICAgICAgICAgICAg
ICAvLyBrQ0dDb250ZXh0VHlwZUJpdG1hcCwgaXQgc3RpbGwgbWlnaHQgbm90IGJlIGEgY29udGV4
dCB3ZSBuZWVkIHRvIGNyZWF0ZSBhIEdXb3JsZCBmb3I7IGZvciBleGFtcGxlCiAgICAgICAgICAg
ICAgICAgLy8gdHJhbnNwYXJlbmN5IGxheWVycyB3aWxsIHJldHVybiB0cnVlLCBidXQgcmV0dXJu
IDAgZm9yIENHQml0bWFwQ29udGV4dEdldERhdGEuCiAgICAgICAgICAgICAgICAgdm9pZCogb2Zm
c2NyZWVuRGF0YSA9IENHQml0bWFwQ29udGV4dEdldERhdGEoY3VycmVudENvbnRleHQpOwogICAg
ICAgICAgICAgICAgIGlmIChvZmZzY3JlZW5EYXRhKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJTeXN0ZW1JbnRlcmZhY2UubW0gYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJTeXN0ZW1JbnRlcmZhY2UubW0K
aW5kZXggNmRkMGI1N2RkNGJmMzQzZmU5NjZmMGZiYTYzYzExY2Y0ZjA4ZDkzMi4uYjUxMWQ2NWVh
NjFiMzYyNDdkMmI4M2ViMmM2ODkxMTQzZjM5N2NkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViU3lzdGVtSW50ZXJmYWNlLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlN5c3RlbUludGVyZmFjZS5t
bQpAQCAtNDMsMTYgKzQzLDkgQEAgdm9pZCBJbml0V2ViQ29yZVN5c3RlbUludGVyZmFjZSh2b2lk
KQogICAgICAgICByZXR1cm47CiAKICAgICBJTklUKENBTGF5ZXJFbnVtZXJhdGVSZWN0c0JlaW5n
RHJhd25XaXRoQmxvY2spOwotICAgIElOSVQoQ0dQYXR0ZXJuQ3JlYXRlV2l0aEltYWdlQW5kVHJh
bnNmb3JtKTsKLSNpZiAhUExBVEZPUk0oSU9TKQotICAgIElOSVQoQ0dDb250ZXh0RHJhd3NXaXRo
Q29ycmVjdFNoYWRvd09mZnNldHMpOwotI2VuZGlmCiAgICAgSU5JVChDb3B5Q09OTkVDVFByb3h5
UmVzcG9uc2UpOwogI2lmICFQTEFURk9STShJT1MpCiAgICAgSU5JVChEcmF3QmV6ZWxlZFRleHRB
cmVhKTsKLSAgICBJTklUKERyYXdGb2N1c1JpbmcpOwotICAgIElOSVQoRHJhd0ZvY3VzUmluZ0F0
VGltZSk7Ci0gICAgSU5JVChEcmF3Q2VsbEZvY3VzUmluZ1dpdGhGcmFtZUF0VGltZSk7CiAgICAg
SU5JVChEcmF3TWVkaWFVSVBhcnQpOwogICAgIElOSVQoRHJhd01lZGlhU2xpZGVyVHJhY2spOwog
ICAgIElOSVQoR2V0TlNFdmVudEtleUNoYXIpOwpAQCAtNjAsMTUgKzUzLDkgQEAgdm9pZCBJbml0
V2ViQ29yZVN5c3RlbUludGVyZmFjZSh2b2lkKQogICAgIElOSVQoTWVhc3VyZU1lZGlhVUlQYXJ0
KTsKICAgICBJTklUKENyZWF0ZU1lZGlhVUlCYWNrZ3JvdW5kVmlldyk7CiAgICAgSU5JVChDcmVh
dGVNZWRpYVVJQ29udHJvbCk7Ci0gICAgSU5JVChXaW5kb3dTZXRBbHBoYSk7Ci0gICAgSU5JVChX
aW5kb3dTZXRTY2FsZWRGcmFtZSk7CiAjZW5kaWYKICAgICBJTklUKFNldENPTk5FQ1RQcm94eUF1
dGhvcml6YXRpb25Gb3JTdHJlYW0pOwogICAgIElOSVQoU2V0Q09OTkVDVFByb3h5Rm9yU3RyZWFt
KTsKLSNpZiAhUExBVEZPUk0oSU9TKQotICAgIElOSVQoU2V0RHJhZ0ltYWdlKTsKLSNlbmRpZgot
ICAgIElOSVQoQ0dDb250ZXh0SXNQREZDb250ZXh0KTsKICNpZiBFTkFCTEUoVklERU8pICYmICFQ
TEFURk9STShJT1MpCiAgICAgSU5JVChRVEluY2x1ZGVPbmx5TW9kZXJuTWVkaWFGaWxlVHlwZXMp
OwogICAgIElOSVQoUVRNb3ZpZURpc2FibGVDb21wb25lbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KaW5kZXggZjBmOGU2Mjg1ODBiMjlmZTA0N2VkZGY2
ZWI0NzU3OGM2ZDA1ZGQyZC4uZTcwOTNjOTZhYWM0NzRlM2FlZTllNzJkMjNiMjRlYjFjNTg5YTJl
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZS5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCkBAIC01
OTgsNyArNTk4LDcgQEAgLSAoUGFpbnRCZWhhdmlvcilfcGFpbnRCZWhhdmlvckZvckRlc3RpbmF0
aW9uQ29udGV4dDooQ0dDb250ZXh0UmVmKWNvbnRleHQKICAgICAgICAgcmV0dXJuIFBhaW50QmVo
YXZpb3JGbGF0dGVuQ29tcG9zaXRpbmdMYXllcnMgfCBQYWludEJlaGF2aW9yU25hcHNob3R0aW5n
OwogI2VuZGlmCiAKLSAgICBpZiAoIVdLQ0dDb250ZXh0SXNCaXRtYXBDb250ZXh0KGNvbnRleHQp
KQorICAgIGlmIChDR0NvbnRleHRHZXRUeXBlKGNvbnRleHQpICE9IGtDR0NvbnRleHRUeXBlQml0
bWFwKQogICAgICAgICByZXR1cm4gUGFpbnRCZWhhdmlvck5vcm1hbDsKIAogICAgIC8vIElmIHdl
J3JlIGRyYXdpbmcgaW50byBhIGJpdG1hcCwgd2UgbWlnaHQgYmUgc25hcHNob3R0aW5nLCBvciBk
cmF3aW5nIGludG8gYSBsYXllci1iYWNrZWQgdmlldy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnVsbFNjcmVlbkNvbnRyb2xsZXIubW0gYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZ1bGxTY3JlZW5Db250cm9sbGVyLm1tCmluZGV4
IGZkOGZjNTY5OTdhZmNiNmFkN2Y5MGM1ZmM5OTg0YmEzMTc2NmU5MDcuLjQwNTNmZmM4NDY0YTM1
YmI4NmFmYjY2NmUzY2VlN2VkY2FjZTVlZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYlZpZXcvV2ViRnVsbFNjcmVlbkNvbnRyb2xsZXIubW0KKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGdWxsU2NyZWVuQ29udHJvbGxlci5tbQpAQCAtMjQ5
LDYgKzI0OSwxNiBAQCAtICh2b2lkKWVudGVyRnVsbFNjcmVlbjooTlNTY3JlZW4gKilzY3JlZW4K
ICAgICBfaXNFbnRlcmluZ0Z1bGxTY3JlZW4gPSB0cnVlOwogfQogCitzdGF0aWMgdm9pZCBzZXRD
bGlwUmVjdEZvcldpbmRvdyhOU1dpbmRvdyAqd2luZG93LCBOU1JlY3QgY2xpcFJlY3QpCit7Cisg
ICAgQ0dTV2luZG93SUQgd2luZG93TnVtYmVyID0gKENHU1dpbmRvd0lEKVt3aW5kb3cgd2luZG93
TnVtYmVyXTsKKyAgICBDR1NSZWdpb25PYmogc2hhcGU7CisgICAgQ0dSZWN0IGNnQ2xpcFJlY3Qg
PSBOU1JlY3RUb0NHUmVjdChjbGlwUmVjdCk7CisgICAgQ0dTTmV3UmVnaW9uV2l0aFJlY3QoJmNn
Q2xpcFJlY3QsICZzaGFwZSk7CisgICAgQ0dTU2V0V2luZG93Q2xpcFNoYXBlKENHU01haW5Db25u
ZWN0aW9uSUQoKSwgd2luZG93TnVtYmVyLCBzaGFwZSk7CisgICAgQ0dTUmVsZWFzZVJlZ2lvbihz
aGFwZSk7Cit9CisKIC0gKHZvaWQpZmluaXNoZWRFbnRlckZ1bGxTY3JlZW5BbmltYXRpb246KGJv
b2wpY29tcGxldGVkCiB7CiAgICAgaWYgKCFfaXNFbnRlcmluZ0Z1bGxTY3JlZW4pCkBAIC0yNjMs
NyArMjczLDcgQEAgLSAodm9pZClmaW5pc2hlZEVudGVyRnVsbFNjcmVlbkFuaW1hdGlvbjooYm9v
bCljb21wbGV0ZWQKICAgICAgICAgCiAgICAgICAgIE5TUmVjdCB3aW5kb3dCb3VuZHMgPSBbW3Nl
bGYgd2luZG93XSBmcmFtZV07CiAgICAgICAgIHdpbmRvd0JvdW5kcy5vcmlnaW4gPSBOU1plcm9Q
b2ludDsKLSAgICAgICAgV0tXaW5kb3dTZXRDbGlwUmVjdChbc2VsZiB3aW5kb3ddLCB3aW5kb3dC
b3VuZHMpOworICAgICAgICBzZXRDbGlwUmVjdEZvcldpbmRvdyhbc2VsZiB3aW5kb3ddLCB3aW5k
b3dCb3VuZHMpOwogICAgICAgICAKICAgICAgICAgTlNXaW5kb3cgKndlYldpbmRvdyA9IFtfd2Vi
Vmlld1BsYWNlaG9sZGVyLmdldCgpIHdpbmRvd107CiAgICAgICAgIC8vIEluIExpb24sIE5TV2lu
ZG93IHdpbGwgYW5pbWF0ZSBpbnRvIGFuZCBvdXQgb2Ygb3JkZXJPdXQgb3BlcmF0aW9ucy4gU3Vw
cHJlc3MgdGhhdApAQCAtMzUzLDcgKzM2Myw3IEBAIC0gKHZvaWQpZmluaXNoZWRFeGl0RnVsbFNj
cmVlbkFuaW1hdGlvbjooYm9vbCljb21wbGV0ZWQKICAgICAKICAgICBOU1JlY3Qgd2luZG93Qm91
bmRzID0gW1tzZWxmIHdpbmRvd10gZnJhbWVdOwogICAgIHdpbmRvd0JvdW5kcy5vcmlnaW4gPSBO
U1plcm9Qb2ludDsKLSAgICBXS1dpbmRvd1NldENsaXBSZWN0KFtzZWxmIHdpbmRvd10sIHdpbmRv
d0JvdW5kcyk7CisgICAgc2V0Q2xpcFJlY3RGb3JXaW5kb3coW3NlbGYgd2luZG93XSwgd2luZG93
Qm91bmRzKTsKICAgICAKICAgICBbW3NlbGYgd2luZG93XSBvcmRlck91dDpzZWxmXTsKICAgICBb
W3NlbGYgd2luZG93XSBzZXRGcmFtZTpOU1plcm9SZWN0IGRpc3BsYXk6WUVTXTsKQEAgLTQ4NCwx
MyArNDk0LDEzIEBAIC0gKHZvaWQpX3N0YXJ0RW50ZXJGdWxsU2NyZWVuQW5pbWF0aW9uV2l0aER1
cmF0aW9uOihOU1RpbWVJbnRlcnZhbClkdXJhdGlvbgogICAgIFtfc2NhbGVBbmltYXRpb24uZ2V0
KCkgc2V0Q3VycmVudFByb2dyZXNzOjBdOwogICAgIFtfc2NhbGVBbmltYXRpb24uZ2V0KCkgc3Rh
cnRBbmltYXRpb25dOwogICAgIAotICAgIC8vIFdLV2luZG93U2V0Q2xpcFJlY3QgdGFrZXMgd2lu
ZG93IGNvb3JkaW5hdGVzLCBzbyBjb252ZXJ0IGZyb20gc2NyZWVuIGNvb3JkaW5hdGVzIGhlcmU6
CisgICAgLy8gc2V0Q2xpcFJlY3RGb3JXaW5kb3cgdGFrZXMgd2luZG93IGNvb3JkaW5hdGVzLCBz
byBjb252ZXJ0IGZyb20gc2NyZWVuIGNvb3JkaW5hdGVzIGhlcmU6CiAgICAgTlNSZWN0IGZpbmFs
Qm91bmRzID0gX2ZpbmFsRnJhbWU7CiAjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcHVzaAogI3By
YWdtYSBjbGFuZyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XZGVwcmVjYXRlZC1kZWNsYXJhdGlvbnMi
CiAgICAgZmluYWxCb3VuZHMub3JpZ2luID0gW1tzZWxmIHdpbmRvd10gY29udmVydFNjcmVlblRv
QmFzZTpmaW5hbEJvdW5kcy5vcmlnaW5dOwogI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHBvcAot
ICAgIFdLV2luZG93U2V0Q2xpcFJlY3QoW3NlbGYgd2luZG93XSwgZmluYWxCb3VuZHMpOworICAg
IHNldENsaXBSZWN0Rm9yV2luZG93KFtzZWxmIHdpbmRvd10sIGZpbmFsQm91bmRzKTsKICAgICAK
ICAgICBbW3NlbGYgd2luZG93XSBtYWtlS2V5QW5kT3JkZXJGcm9udDpzZWxmXTsKICAgICAKQEAg
LTU1NiwxMyArNTY2LDEzIEBAIC0gKHZvaWQpX3N0YXJ0RXhpdEZ1bGxTY3JlZW5BbmltYXRpb25X
aXRoRHVyYXRpb246KE5TVGltZUludGVydmFsKWR1cmF0aW9uCiAgICAgCiAgICAgW19iYWNrZ3Jv
dW5kV2luZG93LmdldCgpIG9yZGVyV2luZG93Ok5TV2luZG93QmVsb3cgcmVsYXRpdmVUbzpbW3Nl
bGYgd2luZG93XSB3aW5kb3dOdW1iZXJdXTsKICAgICAKLSAgICAvLyBXS1dpbmRvd1NldENsaXBS
ZWN0IHRha2VzIHdpbmRvdyBjb29yZGluYXRlcywgc28gY29udmVydCBmcm9tIHNjcmVlbiBjb29y
ZGluYXRlcyBoZXJlOgorICAgIC8vIHNldENsaXBSZWN0Rm9yV2luZG93IHRha2VzIHdpbmRvdyBj
b29yZGluYXRlcywgc28gY29udmVydCBmcm9tIHNjcmVlbiBjb29yZGluYXRlcyBoZXJlOgogICAg
IE5TUmVjdCBmaW5hbEJvdW5kcyA9IF9maW5hbEZyYW1lOwogI3ByYWdtYSBjbGFuZyBkaWFnbm9z
dGljIHB1c2gKICNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBpZ25vcmVkICItV2RlcHJlY2F0ZWQt
ZGVjbGFyYXRpb25zIgogICAgIGZpbmFsQm91bmRzLm9yaWdpbiA9IFtbc2VsZiB3aW5kb3ddIGNv
bnZlcnRTY3JlZW5Ub0Jhc2U6ZmluYWxCb3VuZHMub3JpZ2luXTsKICNwcmFnbWEgY2xhbmcgZGlh
Z25vc3RpYyBwb3AKLSAgICBXS1dpbmRvd1NldENsaXBSZWN0KFtzZWxmIHdpbmRvd10sIGZpbmFs
Qm91bmRzKTsKKyAgICBzZXRDbGlwUmVjdEZvcldpbmRvdyhbc2VsZiB3aW5kb3ddLCBmaW5hbEJv
dW5kcyk7CiAgICAgCiAgICAgW1tzZWxmIHdpbmRvd10gc2V0QXV0b2Rpc3BsYXk6WUVTXTsKICAg
ICBbW3NlbGYgd2luZG93XSBkaXNwbGF5SWZOZWVkZWRdOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>319584</attachid>
            <date>2017-09-01 00:58:04 -0700</date>
            <delta_ts>2017-09-01 08:36:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-176200-20170901005803.patch</filename>
            <type>text/plain</type>
            <size>64772</size>
            <attacher name="Andy Estes">aestes</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIxNDczCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmNmNjE0ZmZmMzUzODM2
Mjg0MTIwMzJkMzk0M2FkZDllOGNjOWJmNS4uZDY3YWI1ZTIxNjRkNmY5NzBmNDU1MmZlZDg5M2Vl
NmQyYTgzMzYwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDQ2IEBACiAyMDE3LTA4LTMxICBBbmR5
IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KIAorICAgICAgICBbQ0ddIFVwc3RyZWFtIENvcmVH
cmFwaGljcy1yZWxhdGVkIFdlYktpdFN5c3RlbUludGVyZmFjZSBmdW5jdGlvbnMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NjIwMAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NDb250ZXh0Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VT
b3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OnN1YnNhbXBsaW5nTGV2
ZWxGb3JTY2FsZUZhY3Rvcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhp
Y3NDb250ZXh0Q0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpjbGlw
T3V0KToKKyAgICAgICAgKFdlYkNvcmU6OmFwcGx5U2hhZG93T2Zmc2V0V29ya2Fyb3VuZElmTmVl
ZGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9QYXR0ZXJuQ0cuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UGF0dGVybjo6Y3JlYXRlUGxhdGZvcm1QYXR0ZXJuIGNvbnN0KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRDb2NvYS5tbToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6Zm9jdXNSaW5nQ29sb3IpOgorICAg
ICAgICAoV2ViQ29yZTo6ZHJhd0ZvY3VzUmluZ0F0VGltZSk6CisgICAgICAgIChXZWJDb3JlOjpk
cmF3Rm9jdXNSaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OmRyYXdGb2N1c1JpbmdUb0NvbnRleHQp
OgorICAgICAgICAoV2ViQ29yZTo6ZHJhd0ZvY3VzUmluZ1RvQ29udGV4dEF0VGltZSk6CisgICAg
ICAgICogcGxhdGZvcm0vaW9zL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2VJT1MubW06CisgICAgICAg
ICogcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpmbGlw
SW1hZ2VTcGVjKToKKyAgICAgICAgKFdlYkNvcmU6OnNldERyYWdJbWFnZUltcGwpOgorICAgICAg
ICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6c2V0RHJhZ0ltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9tYWMvUGxhdGZvcm1FdmVudEZhY3RvcnlNYWMubW06CisgICAgICAgICogcGxhdGZvcm0vbWFj
L1Njcm9sbGJhclRoZW1lTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6bGluZW5CYWNrZ3JvdW5k
Q29sb3IpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9UaGVtZU1hYy5tbToKKyAgICAgICAgKFdl
YkNvcmU6OmRyYXdDZWxsRm9jdXNSaW5nV2l0aEZyYW1lQXRUaW1lKToKKyAgICAgICAgKFdlYkNv
cmU6OmRyYXdDZWxsRm9jdXNSaW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvV2ViQ29yZVN5
c3RlbUludGVyZmFjZS5oOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9XZWJDb3JlU3lzdGVtSW50
ZXJmYWNlLm1tOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9XZWJXaW5kb3dBbmltYXRpb24ubW06
CisgICAgICAgIChmbGlwUmVjdCk6CisgICAgICAgIChtYWluV2luZG93U2VydmVyQ29ubmVjdGlv
bklEKToKKyAgICAgICAgKHNldFNjYWxlZEZyYW1lRm9yV2luZG93KToKKyAgICAgICAgKC1bV2Vi
V2luZG93U2NhbGVBbmltYXRpb24gc2V0Q3VycmVudFByb2dyZXNzOl0pOgorICAgICAgICAoLVtX
ZWJXaW5kb3dGYWRlQW5pbWF0aW9uIHNldEN1cnJlbnRQcm9ncmVzczpdKToKKworMjAxNy0wOC0z
MSAgQW5keSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+CisKICAgICAgICAgW01hY10gVXBzdHJl
YW0gQXBwS2l0LXJlbGF0ZWQgV2ViS2l0U3lzdGVtSW50ZXJmYWNlIGZ1bmN0aW9ucwogICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc2MTc1CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9QQUwv
Q2hhbmdlTG9nCmluZGV4IGVlZWU4NGRjNjE5ZDkyZDRkYTJhMTIwYjIwODZkYzZjNjEwYTY4YjIu
LjQzNjE3MDA3YTFlMGJlMDZhNWY2MTg0NmQxZTJlMjBiODRmZGIwYTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML0NoYW5n
ZUxvZwpAQCAtMSw1ICsxLDE3IEBACiAyMDE3LTA4LTMxICBBbmR5IEVzdGVzICA8YWVzdGVzQGFw
cGxlLmNvbT4KIAorICAgICAgICBbQ0ddIFVwc3RyZWFtIENvcmVHcmFwaGljcy1yZWxhdGVkIFdl
YktpdFN5c3RlbUludGVyZmFjZSBmdW5jdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NjIwMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogUEFMLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6Cisg
ICAgICAgICogcGFsL3NwaS9jZy9Db3JlR3JhcGhpY3NTUEkuaDoKKyAgICAgICAgKiBwYWwvc3Bp
L21hYy9ISVNlcnZpY2VzU1BJLmg6CisgICAgICAgICogcGFsL3NwaS9tYWMvTlNHcmFwaGljc1NQ
SS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9tYWMvSElTZXJ2aWNl
c1NQSS5oLgorCisyMDE3LTA4LTMxICBBbmR5IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KKwog
ICAgICAgICBbTWFjXSBVcHN0cmVhbSBBcHBLaXQtcmVsYXRlZCBXZWJLaXRTeXN0ZW1JbnRlcmZh
Y2UgZnVuY3Rpb25zCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNzYxNzUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBiNjJiN2VlNTYxZmYwNDQ2ZmVlYmRiNDMwNjU2Njcx
MmNjZGZlZDI4Li4yZGMxYjc0MjNjMzhiYTcxYTE1ZDNhODljNDYwYWZjNDEwZWRiZThhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwpAQCAtMSw1ICsxLDIyIEBACiAyMDE3LTA4LTMxICBBbmR5IEVzdGVzICA8YWVzdGVzQGFw
cGxlLmNvbT4KIAorICAgICAgICBbQ0ddIFVwc3RyZWFtIENvcmVHcmFwaGljcy1yZWxhdGVkIFdl
YktpdFN5c3RlbUludGVyZmFjZSBmdW5jdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NjIwMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogUGx1Z2luUHJvY2Vzcy9tYWMvUGx1Z2luUHJvY2Vzc01h
Yy5tbToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXpl
UHJvY2Vzcyk6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9XaW5kb3dTZXJ2ZXJDb25uZWN0aW9u
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9XaW5kb3dTZXJ2ZXJDb25uZWN0aW9uLm1tOgor
ICAgICAgICAoV2ViS2l0OjpyZWdpc3Rlck9jY2x1c2lvbk5vdGlmaWNhdGlvbkhhbmRsZXIpOgor
ICAgICAgICAoV2ViS2l0OjpXaW5kb3dTZXJ2ZXJDb25uZWN0aW9uOjpXaW5kb3dTZXJ2ZXJDb25u
ZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2luZG93U2VydmVyQ29ubmVjdGlvbjo6YXBwbGlj
YXRpb25XaW5kb3dNb2RpZmljYXRpb25zU3RhcnRlZCk6IERlbGV0ZWQuCisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViU3lzdGVtSW50ZXJmYWNlLm1tOgorICAgICAg
ICAoSW5pdFdlYkNvcmVTeXN0ZW1JbnRlcmZhY2UpOgorCisyMDE3LTA4LTMxICBBbmR5IEVzdGVz
ICA8YWVzdGVzQGFwcGxlLmNvbT4KKwogICAgICAgICBbTWFjXSBVcHN0cmVhbSBBcHBLaXQtcmVs
YXRlZCBXZWJLaXRTeXN0ZW1JbnRlcmZhY2UgZnVuY3Rpb25zCiAgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzYxNzUKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hh
bmdlTG9nCmluZGV4IGM0Zjk5NTY3MjU0ZDBiNjIyYzlhOGY5ODc5MTdiNjcwMzM5NzgwOTMuLmU3
ZDhkODBmNDAyMjJjYmNmNzQyOThjN2E5MjEzYTgzMDI0YTkwZGIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9DaGFuZ2VMb2cKQEAgLTEsNSArMSwzNiBAQAogMjAxNy0wOC0zMSAgQW5keSBFc3RlcyAgPGFl
c3Rlc0BhcHBsZS5jb20+CiAKKyAgICAgICAgW0NHXSBVcHN0cmVhbSBDb3JlR3JhcGhpY3MtcmVs
YXRlZCBXZWJLaXRTeXN0ZW1JbnRlcmZhY2UgZnVuY3Rpb25zCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzYyMDAKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIENhcmJvbi9ISVdlYlZpZXcubW06CisgICAg
ICAgICgtW05TV2luZG93R3JhcGhpY3NDb250ZXh0IF93ZWJfc2V0R3JhcGhpY3NQb3J0Ol0pOgor
ICAgICAgICAob3ZlcnJpZGVDR0NvbnRleHQpOgorICAgICAgICAocmVzdG9yZUNHQ29udGV4dCk6
CisgICAgICAgIChEcmF3KToKKyAgICAgICAgKiBQbHVnaW5zL0hvc3RlZC9XZWJIb3N0ZWROZXRz
Y2FwZVBsdWdpblZpZXcubW06CisgICAgICAgICgrW1dlYkhvc3RlZE5ldHNjYXBlUGx1Z2luVmll
dyBpbml0aWFsaXplXSk6CisgICAgICAgICogUGx1Z2lucy9XZWJCYXNlTmV0c2NhcGVQbHVnaW5W
aWV3Lmg6CisgICAgICAgICogUGx1Z2lucy9XZWJCYXNlTmV0c2NhcGVQbHVnaW5WaWV3Lm1tOgor
ICAgICAgICAoV2ViS2l0OjpzZW5kVXNlckNoYW5nZU5vdGlmaWNhdGlvbnMpOgorICAgICAgICAq
IFBsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5WaWV3Lm1tOgorICAgICAgICAoK1tXZWJOZXRzY2Fw
ZVBsdWdpblZpZXcgaW5pdGlhbGl6ZV0pOgorICAgICAgICAoLVtXZWJOZXRzY2FwZVBsdWdpblZp
ZXcgc2F2ZUFuZFNldE5ld1BvcnRTdGF0ZUZvclVwZGF0ZTpdKToKKyAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9XZWJTeXN0ZW1JbnRlcmZhY2UubW06CisgICAgICAgIChJbml0V2ViQ29yZVN5c3Rl
bUludGVyZmFjZSk6CisgICAgICAgICogV2ViVmlldy9XZWJGcmFtZS5tbToKKyAgICAgICAgKC1b
V2ViRnJhbWUgX3BhaW50QmVoYXZpb3JGb3JEZXN0aW5hdGlvbkNvbnRleHQ6XSk6CisgICAgICAg
ICogV2ViVmlldy9XZWJGdWxsU2NyZWVuQ29udHJvbGxlci5tbToKKyAgICAgICAgKHNldENsaXBS
ZWN0Rm9yV2luZG93KToKKyAgICAgICAgKC1bV2ViRnVsbFNjcmVlbkNvbnRyb2xsZXIgZmluaXNo
ZWRFbnRlckZ1bGxTY3JlZW5BbmltYXRpb246XSk6CisgICAgICAgICgtW1dlYkZ1bGxTY3JlZW5D
b250cm9sbGVyIGZpbmlzaGVkRXhpdEZ1bGxTY3JlZW5BbmltYXRpb246XSk6CisgICAgICAgICgt
W1dlYkZ1bGxTY3JlZW5Db250cm9sbGVyIF9zdGFydEVudGVyRnVsbFNjcmVlbkFuaW1hdGlvbldp
dGhEdXJhdGlvbjpdKToKKyAgICAgICAgKC1bV2ViRnVsbFNjcmVlbkNvbnRyb2xsZXIgX3N0YXJ0
RXhpdEZ1bGxTY3JlZW5BbmltYXRpb25XaXRoRHVyYXRpb246XSk6CisKKzIwMTctMDgtMzEgIEFu
ZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29tPgorCiAgICAgICAgIFtNYWNdIFVwc3RyZWFtIEFw
cEtpdC1yZWxhdGVkIFdlYktpdFN5c3RlbUludGVyZmFjZSBmdW5jdGlvbnMKICAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NjE3NQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9QQUwvUEFMLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3Vy
Y2UvV2ViQ29yZS9QQUwvUEFMLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMTNjZWNj
Y2U2YzQzNmYwNTAyZWQ5OTcyYmViNGIxYWViM2YzNDBiOC4uM2EwNDBhYTI0MDg5Mzg5MmNhYmU1
OGU1ZjdjMjA4M2YxNjEyYjZkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML1BBTC54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9QQUwueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTA0LDYgKzEwNCw3IEBACiAJCUExMDgyNkYxMUY1
NzNCQ0EwMDQ3NzJBQyAvKiBOU1Jlc3BvbmRlclNQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTEwODI2RjAxRjU3M0JDQTAwNDc3MkFDIC8qIE5TUmVz
cG9uZGVyU1BJLmggKi87IH07CiAJCUExMDgyNkY5MUY1NzYyOTIwMDQ3NzJBQyAvKiBXZWJQYW5l
bC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTEwODI2
RjcxRjU3NjI5MjAwNDc3MkFDIC8qIFdlYlBhbmVsLmggKi87IH07CiAJCUExMDgyNkZBMUY1NzYy
OTIwMDQ3NzJBQyAvKiBXZWJQYW5lbC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEExMDgyNkY4MUY1NzYyOTIwMDQ3NzJBQyAvKiBXZWJQYW5lbC5tbSAq
LzsgfTsKKwkJQTEwODI2RkUxRjU4QTQzMzAwNDc3MkFDIC8qIE5TR3JhcGhpY3NTUEkuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExMDgyNkZEMUY1OEE0
MzMwMDQ3NzJBQyAvKiBOU0dyYXBoaWNzU1BJLmggKi87IH07CiAJCUExRjU1RENGMUY1NTI4RUMw
MEVEQjc1RiAvKiBNZXRhZGF0YVNQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQTFGNTVEQ0UxRjU1MjhFQzAwRURCNzVGIC8qIE1ldGFkYXRhU1BJLmgg
Ki87IH07CiAJCUEzMEQ0MTIxMUYwREQwRUEwMEI3MTk1NCAvKiBLaWxsUmluZy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTMwRDQxMUUxRjBERDBFQTAw
QjcxOTU0IC8qIEtpbGxSaW5nLmggKi87IH07CiAJCUEzMEQ0MTIyMUYwREQwRUEwMEI3MTk1NCAv
KiBLaWxsUmluZy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBBMzBENDExRjFGMEREMEVBMDBCNzE5NTQgLyogS2lsbFJpbmcuY3BwICovOyB9OwpAQCAt
MjIzLDYgKzIyNCw3IEBACiAJCUExMDgyNkYwMUY1NzNCQ0EwMDQ3NzJBQyAvKiBOU1Jlc3BvbmRl
clNQSS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBOU1Jlc3BvbmRlclNQSS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlBMTA4MjZGNzFGNTc2MjkyMDA0NzcyQUMgLyogV2ViUGFuZWwuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gV2ViUGFuZWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTEw
ODI2RjgxRjU3NjI5MjAwNDc3MkFDIC8qIFdlYlBhbmVsLm1tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gV2ViUGFuZWwubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUExMDgyNkZEMUY1
OEE0MzMwMDQ3NzJBQyAvKiBOU0dyYXBoaWNzU1BJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5TR3JhcGhp
Y3NTUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTFGNTVEQ0UxRjU1MjhFQzAw
RURCNzVGIC8qIE1ldGFkYXRhU1BJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1ldGFkYXRhU1BJLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUEzMEQ0MTFFMUYwREQwRUEwMEI3MTk1NCAvKiBL
aWxsUmluZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBLaWxsUmluZy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMzBENDExRjFGMEREMEVBMDBCNzE5NTQgLyog
S2lsbFJpbmcuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gS2lsbFJp
bmcuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzU1LDYgKzM1Nyw3IEBACiAJ
CQkJMEM3Nzg1NzUxRjQ1MTMwRjAwRjRFQkI2IC8qIE5TQXBwbGljYXRpb25TUEkuaCAqLywKIAkJ
CQkwQzc3ODU3NjFGNDUxMzBGMDBGNEVCQjYgLyogTlNFdmVudFNQSS5oICovLAogCQkJCTBDNzc4
NTc3MUY0NTEzMEYwMEY0RUJCNiAvKiBOU0ZvbnRTUEkuaCAqLywKKwkJCQlBMTA4MjZGRDFGNThB
NDMzMDA0NzcyQUMgLyogTlNHcmFwaGljc1NQSS5oICovLAogCQkJCTBDNzc4NTc4MUY0NTEzMEYw
MEY0RUJCNiAvKiBOU0ltbWVkaWF0ZUFjdGlvbkdlc3R1cmVSZWNvZ25pemVyU1BJLmggKi8sCiAJ
CQkJMEM3Nzg1NzkxRjQ1MTMwRjAwRjRFQkI2IC8qIE5TTWVudVNQSS5oICovLAogCQkJCTBDNzc4
NTdBMUY0NTEzMEYwMEY0RUJCNiAvKiBOU1Bhc3RlYm9hcmRTUEkuaCAqLywKQEAgLTU1MSw2ICs1
NTQsNyBAQAogCQkJCTBDMkRBMTRFMUYzQkVCNDkwMERCQzMxNyAvKiBOU0V4dGVuc2lvblNQSS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEMyREExNEYxRjNCRUI0OTAwREJDMzE3IC8qIE5TRmlsZU1h
bmFnZXJTUEkuaCBpbiBIZWFkZXJzICovLAogCQkJCTBDNzc4NTkwMUY0NTEzMEYwMEY0RUJCNiAv
KiBOU0ZvbnRTUEkuaCBpbiBIZWFkZXJzICovLAorCQkJCUExMDgyNkZFMUY1OEE0MzMwMDQ3NzJB
QyAvKiBOU0dyYXBoaWNzU1BJLmggaW4gSGVhZGVycyAqLywKIAkJCQkwQzc3ODU5MTFGNDUxMzBG
MDBGNEVCQjYgLyogTlNJbW1lZGlhdGVBY3Rpb25HZXN0dXJlUmVjb2duaXplclNQSS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMEM3Nzg1OTIxRjQ1MTMwRjAwRjRFQkI2IC8qIE5TTWVudVNQSS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMEM3Nzg1OTMxRjQ1MTMwRjAwRjRFQkI2IC8qIE5TUGFzdGVib2Fy
ZFNQSS5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFs
L3NwaS9jZy9Db3JlR3JhcGhpY3NTUEkuaCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2Nn
L0NvcmVHcmFwaGljc1NQSS5oCmluZGV4IDdjMjkxYzkxNGQ2OWY1NmQ4NmRiYjRhODgxZmIyMzE4
OWM1YTVhNWMuLjMyMjY1YTBlZjZkNGE4NzBhYjQxNmMyNDA0ZDkyZjRmYmQ5ZDZhODEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NnL0NvcmVHcmFwaGljc1NQSS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NnL0NvcmVHcmFwaGljc1NQSS5oCkBAIC0x
MzcsMjEgKzEzNyw3NCBAQCBzdGF0aWMgaW5saW5lIENHRmxvYXQgQ0dGbG9hdE1pbihDR0Zsb2F0
IGEsIENHRmxvYXQgYikgeyByZXR1cm4gaXNuYW4oYSkgPyBiIDogKAogCiB0eXBlZGVmIHN0cnVj
dCBDR0ZvbnRDYWNoZSBDR0ZvbnRDYWNoZTsKIAotI2lmIFBMQVRGT1JNKE1BQykKLXR5cGVkZWYg
dWludDMyX3QgQ0dTQ29ubmVjdGlvbklEOwotdHlwZWRlZiB1aW50MzJfdCBDR1NXaW5kb3dJRDsK
LXR5cGVkZWYgdWludDMyX3QgQ0dTV2luZG93Q291bnQ7Ci10eXBlZGVmIENHU1dpbmRvd0lEICpD
R1NXaW5kb3dJRExpc3Q7CisjaWYgUExBVEZPUk0oQ09DT0EpCiAKIGVudW0gewogICAgIGtDR1NX
aW5kb3dDYXB0dXJlTm9taW5hbFJlc29sdXRpb24gPSAweDAyMDAsCiAgICAga0NHU0NhcHR1cmVJ
Z25vcmVHbG9iYWxDbGlwU2hhcGUgPSAweDA4MDAsCiB9OwogdHlwZWRlZiB1aW50MzJfdCBDR1NX
aW5kb3dDYXB0dXJlT3B0aW9uczsKLSNlbmRpZgorCit0eXBlZGVmIENGX0VOVU0gKGludDMyX3Qs
IENHU3R5bGVEcmF3T3JkZXJpbmcpIHsKKyAgICBrQ0dTdHlsZURyYXdPcmRlcmluZ1N0eWxlT25s
eSA9IDAsCisgICAga0NHU3R5bGVEcmF3T3JkZXJpbmdCZWxvdyA9IDEsCisgICAga0NHU3R5bGVE
cmF3T3JkZXJpbmdBYm92ZSA9IDIsCit9OworCit0eXBlZGVmIENGX0VOVU0gKGludDMyX3QsIENH
Rm9jdXNSaW5nT3JkZXJpbmcpIHsKKyAgICBrQ0dGb2N1c1JpbmdPcmRlcmluZ05vbmUgPSBrQ0dT
dHlsZURyYXdPcmRlcmluZ1N0eWxlT25seSwKKyAgICBrQ0dGb2N1c1JpbmdPcmRlcmluZ0JlbG93
ID0ga0NHU3R5bGVEcmF3T3JkZXJpbmdCZWxvdywKKyAgICBrQ0dGb2N1c1JpbmdPcmRlcmluZ0Fi
b3ZlID0ga0NHU3R5bGVEcmF3T3JkZXJpbmdBYm92ZSwKK307CisKK3R5cGVkZWYgQ0ZfRU5VTSAo
aW50MzJfdCwgQ0dGb2N1c1JpbmdUaW50KSB7CisgICAga0NHRm9jdXNSaW5nVGludEJsdWUgPSAw
LAorICAgIGtDR0ZvY3VzUmluZ1RpbnRHcmFwaGl0ZSA9IDEsCit9OworCitzdHJ1Y3QgQ0dGb2N1
c1JpbmdTdHlsZSB7CisgICAgdW5zaWduZWQgaW50IHZlcnNpb247CisgICAgQ0dGb2N1c1JpbmdU
aW50IHRpbnQ7CisgICAgQ0dGb2N1c1JpbmdPcmRlcmluZyBvcmRlcmluZzsKKyAgICBDR0Zsb2F0
IGFscGhhOworICAgIENHRmxvYXQgcmFkaXVzOworICAgIENHRmxvYXQgdGhyZXNob2xkOworICAg
IENHUmVjdCBib3VuZHM7CisgICAgaW50IGFjY3VtdWxhdGU7Cit9OwordHlwZWRlZiBzdHJ1Y3Qg
Q0dGb2N1c1JpbmdTdHlsZSBDR0ZvY3VzUmluZ1N0eWxlOworCit0eXBlZGVmIENGX0VOVU0odWlu
dDMyX3QsIENHU05vdGlmaWNhdGlvblR5cGUpIHsKKyAgICBrQ0dTRmlyc3RDb25uZWN0aW9uTm90
aWZpY2F0aW9uID0gOTAwLAorICAgIGtDR1NGaXJzdFNlc3Npb25Ob3RpZmljYXRpb24gPSAxNTAw
LAorfTsKKworc3RhdGljIGNvbnN0IENHU05vdGlmaWNhdGlvblR5cGUga0NHU0Nvbm5lY3Rpb25X
aW5kb3dNb2RpZmljYXRpb25zU3RhcnRlZCA9IChDR1NOb3RpZmljYXRpb25UeXBlKShrQ0dTRmly
c3RDb25uZWN0aW9uTm90aWZpY2F0aW9uICsgNik7CitzdGF0aWMgY29uc3QgQ0dTTm90aWZpY2F0
aW9uVHlwZSBrQ0dTQ29ubmVjdGlvbldpbmRvd01vZGlmaWNhdGlvbnNTdG9wcGVkID0gKENHU05v
dGlmaWNhdGlvblR5cGUpKGtDR1NGaXJzdENvbm5lY3Rpb25Ob3RpZmljYXRpb24gKyA3KTsKK3N0
YXRpYyBjb25zdCBDR1NOb3RpZmljYXRpb25UeXBlIGtDR1Nlc3Npb25Db25zb2xlQ29ubmVjdCA9
IGtDR1NGaXJzdFNlc3Npb25Ob3RpZmljYXRpb247CitzdGF0aWMgY29uc3QgQ0dTTm90aWZpY2F0
aW9uVHlwZSBrQ0dTZXNzaW9uQ29uc29sZURpc2Nvbm5lY3QgPSAoQ0dTTm90aWZpY2F0aW9uVHlw
ZSkoa0NHU2Vzc2lvbkNvbnNvbGVDb25uZWN0ICsgMSk7CisKKyNlbmRpZiAvLyBQTEFURk9STShD
T0NPQSkKIAogI2VuZGlmIC8vIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCiAKKyNpZiBQTEFURk9S
TShDT0NPQSkKK3R5cGVkZWYgdWludDMyX3QgQ0dTQnl0ZUNvdW50OwordHlwZWRlZiB1aW50MzJf
dCBDR1NDb25uZWN0aW9uSUQ7Cit0eXBlZGVmIHVpbnQzMl90IENHU1dpbmRvd0NvdW50OwordHlw
ZWRlZiB1aW50MzJfdCBDR1NXaW5kb3dJRDsKKwordHlwZWRlZiBDR1NXaW5kb3dJRCogQ0dTV2lu
ZG93SURMaXN0OwordHlwZWRlZiBzdHJ1Y3QgQ0ZfQlJJREdFRF9UWVBFKGlkKSBDR1NSZWdpb25P
YmplY3QqIENHU1JlZ2lvbk9iajsKK3R5cGVkZWYgc3RydWN0IENGX0JSSURHRURfVFlQRShpZCkg
Q0dTdHlsZSogQ0dTdHlsZVJlZjsKKwordHlwZWRlZiB2b2lkKiBDR1NOb3RpZmljYXRpb25Bcmc7
Cit0eXBlZGVmIHZvaWQqIENHU05vdGlmaWNhdGlvbkRhdGE7CisKK3R5cGVkZWYgdm9pZCAoKkNH
U05vdGlmeUNvbm5lY3Rpb25Qcm9jUHRyKShDR1NOb3RpZmljYXRpb25UeXBlLCB2b2lkKiBkYXRh
LCB1aW50MzJfdCBkYXRhX2xlbmd0aCwgdm9pZCogYXJnLCBDR1NDb25uZWN0aW9uSUQpOwordHlw
ZWRlZiB2b2lkICgqQ0dTTm90aWZ5UHJvY1B0cikoQ0dTTm90aWZpY2F0aW9uVHlwZSwgdm9pZCog
ZGF0YSwgdWludDMyX3QgZGF0YV9sZW5ndGgsIHZvaWQqIGFyZyk7CisjZW5kaWYKKwogV1RGX0VY
VEVSTl9DX0JFR0lOCiAKIENHQ29sb3JSZWYgQ0dDb2xvclRyYW5zZm9ybUNvbnZlcnRDb2xvcihD
R0NvbG9yVHJhbnNmb3JtUmVmLCBDR0NvbG9yUmVmLCBDR0NvbG9yUmVuZGVyaW5nSW50ZW50KTsK
QEAgLTE4Niw2ICsyMzksOCBAQCBDR0RhdGFQcm92aWRlclJlZiBDR1BERkRvY3VtZW50R2V0RGF0
YVByb3ZpZGVyKENHUERGRG9jdW1lbnRSZWYpOwogCiBDR0ZvbnRBbnRpYWxpYXNpbmdTdHlsZSBD
R0NvbnRleHRHZXRGb250QW50aWFsaWFzaW5nU3R5bGUoQ0dDb250ZXh0UmVmKTsKIHZvaWQgQ0dD
b250ZXh0U2V0Rm9udEFudGlhbGlhc2luZ1N0eWxlKENHQ29udGV4dFJlZiwgQ0dGb250QW50aWFs
aWFzaW5nU3R5bGUpOworYm9vbCBDR0NvbnRleHREcmF3c1dpdGhDb3JyZWN0U2hhZG93T2Zmc2V0
cyhDR0NvbnRleHRSZWYpOworQ0dQYXR0ZXJuUmVmIENHUGF0dGVybkNyZWF0ZVdpdGhJbWFnZTIo
Q0dJbWFnZVJlZiwgQ0dBZmZpbmVUcmFuc2Zvcm0sIENHUGF0dGVyblRpbGluZyk7CiAKICNpZiAo
UExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTIw
MCkgfHwgUExBVEZPUk0oSU9TKQogYm9vbCBDR0NvbG9yU3BhY2VVc2VzRXh0ZW5kZWRSYW5nZShD
R0NvbG9yU3BhY2VSZWYpOwpAQCAtMjAzLDEwICsyNTgsMjEgQEAgQ0dDb2xvclNwYWNlUmVmIENH
SU9TdXJmYWNlQ29udGV4dEdldENvbG9yU3BhY2UoQ0dDb250ZXh0UmVmKTsKICNlbmRpZgogCiAj
aWYgUExBVEZPUk0oQ09DT0EpCi1DR1NSZWdpb25FbnVtZXJhdG9yT2JqIENHU1JlZ2lvbkVudW1l
cmF0b3IoQ0dSZWdpb25SZWYpOwotQ0dSZWN0KiBDR1NOZXh0UmVjdChjb25zdCBDR1NSZWdpb25F
bnVtZXJhdG9yT2JqKTsKLUNHRXJyb3IgQ0dTUmVsZWFzZVJlZ2lvbkVudW1lcmF0b3IoY29uc3Qg
Q0dTUmVnaW9uRW51bWVyYXRvck9iaik7CiBDR0NvbG9yU3BhY2VSZWYgQ0dDb250ZXh0Q29weURl
dmljZUNvbG9yU3BhY2UoQ0dDb250ZXh0UmVmKTsKK0NHRXJyb3IgQ0dTTmV3UmVnaW9uV2l0aFJl
Y3QoY29uc3QgQ0dSZWN0KiwgQ0dSZWdpb25SZWYqKTsKK0NHRXJyb3IgQ0dTUGFja2FnZXNFbmFi
bGVDb25uZWN0aW9uT2NjbHVzaW9uTm90aWZpY2F0aW9ucyhDR1NDb25uZWN0aW9uSUQsIGJvb2wg
ZmxhZywgYm9vbCogb3V0Q3VycmVudFZpc2liaWxpdHlTdGF0ZSk7CitDR0Vycm9yIENHU1BhY2th
Z2VzRW5hYmxlQ29ubmVjdGlvbldpbmRvd01vZGlmaWNhdGlvbk5vdGlmaWNhdGlvbnMoQ0dTQ29u
bmVjdGlvbklELCBib29sIGZsYWcsIGJvb2wqIG91dENvbm5lY3Rpb25Jc0N1cnJlbnRseUlkbGUp
OworQ0dFcnJvciBDR1NSZWdpc3RlckNvbm5lY3Rpb25Ob3RpZnlQcm9jKENHU0Nvbm5lY3Rpb25J
RCwgQ0dTTm90aWZ5Q29ubmVjdGlvblByb2NQdHIsIENHU05vdGlmaWNhdGlvblR5cGUsIHZvaWQq
IGFyZyk7CitDR0Vycm9yIENHU1JlZ2lzdGVyTm90aWZ5UHJvYyhDR1NOb3RpZnlQcm9jUHRyLCBD
R1NOb3RpZmljYXRpb25UeXBlLCB2b2lkKiBhcmcpOworQ0dFcnJvciBDR1NSZWxlYXNlUmVnaW9u
KGNvbnN0IENHUmVnaW9uUmVmIENGX1JFTEVBU0VTX0FSR1VNRU5UKTsKK0NHRXJyb3IgQ0dTUmVs
ZWFzZVJlZ2lvbkVudW1lcmF0b3IoY29uc3QgQ0dTUmVnaW9uRW51bWVyYXRvck9iaik7CitDR0Vy
cm9yIENHU1NldFdpbmRvd0FscGhhKENHU0Nvbm5lY3Rpb25JRCwgQ0dTV2luZG93SUQsIGZsb2F0
IGFscGhhKTsKK0NHRXJyb3IgQ0dTU2V0V2luZG93Q2xpcFNoYXBlKENHU0Nvbm5lY3Rpb25JRCwg
Q0dTV2luZG93SUQsIENHUmVnaW9uUmVmIHNoYXBlKTsKK0NHRXJyb3IgQ0dTU2V0V2luZG93V2Fy
cChDR1NDb25uZWN0aW9uSUQsIENHU1dpbmRvd0lELCBpbnQgdywgaW50IGgsIGNvbnN0IGZsb2F0
KiBtZXNoKTsKK0NHUmVjdCogQ0dTTmV4dFJlY3QoY29uc3QgQ0dTUmVnaW9uRW51bWVyYXRvck9i
aik7CitDR1NSZWdpb25FbnVtZXJhdG9yT2JqIENHU1JlZ2lvbkVudW1lcmF0b3IoQ0dSZWdpb25S
ZWYpOworQ0dTdHlsZVJlZiBDR1N0eWxlQ3JlYXRlRm9jdXNSaW5nV2l0aENvbG9yKGNvbnN0IENH
Rm9jdXNSaW5nU3R5bGUqLCBDR0NvbG9yUmVmKTsKK3ZvaWQgQ0dDb250ZXh0U2V0U3R5bGUoQ0dD
b250ZXh0UmVmLCBDR1N0eWxlUmVmKTsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oV0lOKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvbWFjL0hJU2VydmljZXNTUEkuaCBi
L1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL21hYy9ISVNlcnZpY2VzU1BJLmgKaW5kZXggOWYz
NWRjZDRkMDNhNTdhMDg2YjBhMzY1ZGZiMzlkZGZmY2M4MTk4NS4uYTM1NWI5NGZlNjMwOTJlZjVh
Y2QwYjVjOTVlMDNkZDQ2ZTk1MzgxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML3Bh
bC9zcGkvbWFjL0hJU2VydmljZXNTUEkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3Nw
aS9tYWMvSElTZXJ2aWNlc1NQSS5oCkBAIC0yOCwyMSArMjgsNDUgQEAKICNpZiBVU0UoQVBQTEVf
SU5URVJOQUxfU0RLKQogCiAjaW5jbHVkZSA8SElTZXJ2aWNlcy9BWFRleHRNYXJrZXIuaD4KKyNp
bmNsdWRlIDxISVNlcnZpY2VzL0NvcmVEcmFnLmg+CisKKyNlbHNlCisKK2VudW0geworICAgIGtD
b3JlRHJhZ0ltYWdlU3BlY1ZlcnNpb25PbmUgPSAxLAorfTsKKworc3RydWN0IENvcmVEcmFnSW1h
Z2VTcGVjIHsKKyAgICBVSW50MzIgdmVyc2lvbjsKKyAgICBTSW50MzIgcGl4ZWxzV2lkZTsKKyAg
ICBTSW50MzIgcGl4ZWxzSGlnaDsKKyAgICBTSW50MzIgYml0c1BlclNhbXBsZTsKKyAgICBTSW50
MzIgc2FtcGxlc1BlclBpeGVsOworICAgIFNJbnQzMiBiaXRzUGVyUGl4ZWw7CisgICAgU0ludDMy
IGJ5dGVzUGVyUm93OworICAgIEJvb2xlYW4gaXNQbGFuYXI7CisgICAgQm9vbGVhbiBoYXNBbHBo
YTsKKyAgICBjb25zdCBVSW50OCogZGF0YVs1XTsKK307CiAKICNlbmRpZgogCi10eXBlZGVmIGNv
bnN0IHN0cnVjdCBfX0FYVGV4dE1hcmtlciAqQVhUZXh0TWFya2VyUmVmOwotdHlwZWRlZiBjb25z
dCBzdHJ1Y3QgX19BWFRleHRNYXJrZXJSYW5nZSAqQVhUZXh0TWFya2VyUmFuZ2VSZWY7Cit0eXBl
ZGVmIGNvbnN0IHN0cnVjdCBfX0FYVGV4dE1hcmtlciogQVhUZXh0TWFya2VyUmVmOwordHlwZWRl
ZiBjb25zdCBzdHJ1Y3QgX19BWFRleHRNYXJrZXJSYW5nZSogQVhUZXh0TWFya2VyUmFuZ2VSZWY7
Cit0eXBlZGVmIHN0cnVjdCBDb3JlRHJhZ0ltYWdlU3BlYyBDb3JlRHJhZ0ltYWdlU3BlYzsKK3R5
cGVkZWYgc3RydWN0IE9wYXF1ZUNvcmVEcmFnKiBDb3JlRHJhZ1JlZjsKIAogV1RGX0VYVEVSTl9D
X0JFR0lOCiAKLUNGVHlwZUlEIEFYVGV4dE1hcmtlckdldFR5cGVJRCgpOwotQ0ZUeXBlSUQgQVhU
ZXh0TWFya2VyUmFuZ2VHZXRUeXBlSUQoKTsKLUFYVGV4dE1hcmtlclJlZiBBWFRleHRNYXJrZXJD
cmVhdGUoQ0ZBbGxvY2F0b3JSZWYsIGNvbnN0IFVJbnQ4KiBieXRlcywgQ0ZJbmRleCBsZW5ndGgp
OwotQ0ZJbmRleCBBWFRleHRNYXJrZXJHZXRMZW5ndGgoQVhUZXh0TWFya2VyUmVmKTsKLWNvbnN0
IFVJbnQ4KiBBWFRleHRNYXJrZXJHZXRCeXRlUHRyKEFYVGV4dE1hcmtlclJlZik7CiBBWFRleHRN
YXJrZXJSYW5nZVJlZiBBWFRleHRNYXJrZXJSYW5nZUNyZWF0ZShDRkFsbG9jYXRvclJlZiwgQVhU
ZXh0TWFya2VyUmVmIHN0YXJ0TWFya2VyLCBBWFRleHRNYXJrZXJSZWYgZW5kTWFya2VyKTsKK0FY
VGV4dE1hcmtlclJlZiBBWFRleHRNYXJrZXJDcmVhdGUoQ0ZBbGxvY2F0b3JSZWYsIGNvbnN0IFVJ
bnQ4KiBieXRlcywgQ0ZJbmRleCBsZW5ndGgpOwogQVhUZXh0TWFya2VyUmVmIEFYVGV4dE1hcmtl
clJhbmdlQ29weVN0YXJ0TWFya2VyKEFYVGV4dE1hcmtlclJhbmdlUmVmKTsKIEFYVGV4dE1hcmtl
clJlZiBBWFRleHRNYXJrZXJSYW5nZUNvcHlFbmRNYXJrZXIoQVhUZXh0TWFya2VyUmFuZ2VSZWYp
OworQ0ZJbmRleCBBWFRleHRNYXJrZXJHZXRMZW5ndGgoQVhUZXh0TWFya2VyUmVmKTsKK0NGVHlw
ZUlEIEFYVGV4dE1hcmtlckdldFR5cGVJRCgpOworQ0ZUeXBlSUQgQVhUZXh0TWFya2VyUmFuZ2VH
ZXRUeXBlSUQoKTsKK0NvcmVEcmFnUmVmIENvcmVEcmFnR2V0Q3VycmVudERyYWcoKTsKK09TU3Rh
dHVzIENvcmVEcmFnU2V0SW1hZ2UoQ29yZURyYWdSZWYsIENHUG9pbnQgaW1hZ2VPZmZzZXQsIENv
cmVEcmFnSW1hZ2VTcGVjKiwgQ0dTUmVnaW9uT2JqIGltYWdlU2hhcGUsIGZsb2F0IG92ZXJhbGxB
bHBoYSk7Citjb25zdCBVSW50OCogQVhUZXh0TWFya2VyR2V0Qnl0ZVB0cihBWFRleHRNYXJrZXJS
ZWYpOwogCiBXVEZfRVhURVJOX0NfRU5ECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwv
cGFsL3NwaS9tYWMvTlNHcmFwaGljc1NQSS5oIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkv
bWFjL05TR3JhcGhpY3NTUEkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yYWE4MGNkMjFlYjZhMWYwYzQyOWJhY2Ix
MWRhNWRjNTNkOTEwMjZmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3Bh
bC9zcGkvbWFjL05TR3JhcGhpY3NTUEkuaApAQCAtMCwwICsxLDU3IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I3ByYWdtYSBvbmNlCisKKyNpZiBQTEFURk9STShNQUMpCisKKyNpbXBvcnQgPEFwcEtpdC9BcHBL
aXQuaD4KKworI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCisKKyNpbXBvcnQgPEFwcEtpdC9O
U0dyYXBoaWNzQ29udGV4dFByaXZhdGUuaD4KKyNpbXBvcnQgPEFwcEtpdC9OU0dyYXBoaWNzX1By
aXZhdGUuaD4KKworI2Vsc2UKKworQGludGVyZmFjZSBOU0NHU0NvbnRleHQgOiBOU0dyYXBoaWNz
Q29udGV4dCB7CisgICAgQ0dDb250ZXh0UmVmIF9jZ3NDb250ZXh0OworfQorQGVuZAorCitAaW50
ZXJmYWNlIE5TV2luZG93R3JhcGhpY3NDb250ZXh0IDogTlNDR1NDb250ZXh0IHsKKyAgICBDR1NX
aW5kb3dJRCBfY2dzV2luZG93SUQ7Cit9CitAZW5kCisKKyNlbmRpZgorCitXVEZfRVhURVJOX0Nf
QkVHSU4KKworQk9PTCBOU0luaXRpYWxpemVDR0ZvY3VzUmluZ1N0eWxlRm9yVGltZShOU0ZvY3Vz
UmluZ1BsYWNlbWVudCwgQ0dGb2N1c1JpbmdTdHlsZSosIE5TVGltZUludGVydmFsKTsKKworV1RG
X0VYVEVSTl9DX0VORAorCisjZW5kaWYgLy8gUExBVEZPUk0oTUFDKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAppbmRleCAxOGFjZGRi
ZTdlZmZmYTQyOWQxODU3ODM5YWI2ZTY2NzQ2NmEzZDg1Li5jMTRiMmE1NWU2YWE3ZjkwZDIwMDNj
NDY2ODQzNDMyMmUwODU0NTlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc0NvbnRleHQuaApAQCAtNDQ1LDYgKzQ0NSw3IEBAIHB1YmxpYzoKICNp
ZiBQTEFURk9STShNQUMpCiAgICAgdm9pZCBkcmF3Rm9jdXNSaW5nKGNvbnN0IFBhdGgmLCBkb3Vi
bGUgdGltZU9mZnNldCwgYm9vbCYgbmVlZHNSZWRyYXcpOwogICAgIHZvaWQgZHJhd0ZvY3VzUmlu
Zyhjb25zdCBWZWN0b3I8RmxvYXRSZWN0PiYsIGRvdWJsZSB0aW1lT2Zmc2V0LCBib29sJiBuZWVk
c1JlZHJhdyk7CisgICAgc3RhdGljIENHQ29sb3JSZWYgZm9jdXNSaW5nQ29sb3IoKTsKICNlbmRp
ZgogCiAgICAgdm9pZCBzZXRMaW5lQ2FwKExpbmVDYXApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwCmluZGV4IDY2OTZjOTYwYTU4NzVmMDQz
MTcyOWIxMTlhYjZiMjQxMjdkN2E1Y2EuLjAyMjhlMzkyOWEyNjZlYTk3MzJiYmE4ZWU2MDU3M2Zh
NTA5YTM1MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZVNvdXJjZS5jcHAKQEAgLTE4NCw3ICsxODQsNyBAQCBTdWJzYW1wbGluZ0xldmVsIEltYWdlU291
cmNlOjpzdWJzYW1wbGluZ0xldmVsRm9yU2NhbGVGYWN0b3IoR3JhcGhpY3NDb250ZXh0JiBjbwog
ewogI2lmIFVTRShDRykKICAgICAvLyBOZXZlciB1c2Ugc3Vic2FtcGxlZCBpbWFnZXMgZm9yIGRy
YXdpbmcgaW50byBQREYgY29udGV4dHMuCi0gICAgaWYgKHdrQ0dDb250ZXh0SXNQREZDb250ZXh0
KGNvbnRleHQucGxhdGZvcm1Db250ZXh0KCkpKQorICAgIGlmIChDR0NvbnRleHRHZXRUeXBlKGNv
bnRleHQucGxhdGZvcm1Db250ZXh0KCkpID09IGtDR0NvbnRleHRUeXBlUERGKQogICAgICAgICBy
ZXR1cm4gU3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVsdDsKIAogICAgIGZsb2F0IHNjYWxlID0gc3Rk
OjptaW4oZmxvYXQoMSksIHN0ZDo6bWF4KHNjYWxlRmFjdG9yLndpZHRoKCksIHNjYWxlRmFjdG9y
LmhlaWdodCgpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAKaW5kZXggZDU4ODM5YWU1OGJiNTEwZDUwN2Q0
NjViMDYxOTJlMDIwYmFkNWFiZC4uNThlNTI3ODg2MmI3M2VlMGU0ZWNlOTU3ZGM0YjU3ZDk1Y2Vl
MjVlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3Jh
cGhpY3NDb250ZXh0Q0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcApAQCAtOTg3LDcgKzk4Nyw3IEBAIHZvaWQgR3JhcGhp
Y3NDb250ZXh0OjpjbGlwT3V0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKICAgICAvLyBoYXMgY2Vy
dGFpbiB0cmFuc2Zvcm1zIHRoYXQgYXJlbid0IGp1c3QgYSB0cmFuc2xhdGlvbiBvciBhIHNjYWxl
LiBBbmQgZHVlIHRvIDxyZGFyOi8vcHJvYmxlbS8xNDYzNDQ1Mz4KICAgICAvLyB3ZSBjYW5ub3Qg
dXNlIGl0IGluIGZvciBhIHByaW50aW5nIGNvbnRleHQgZWl0aGVyLgogICAgIGNvbnN0IEFmZmlu
ZVRyYW5zZm9ybSYgY3RtID0gZ2V0Q1RNKCk7Ci0gICAgYm9vbCBjYW5Vc2VDR1JlY3RJbmZpbml0
ZSA9ICF3a0NHQ29udGV4dElzUERGQ29udGV4dChwbGF0Zm9ybUNvbnRleHQoKSkgJiYgKCFpc0Fj
Y2VsZXJhdGVkQ29udGV4dCgpIHx8ICghY3RtLmIoKSAmJiAhY3RtLmMoKSkpOworICAgIGJvb2wg
Y2FuVXNlQ0dSZWN0SW5maW5pdGUgPSBDR0NvbnRleHRHZXRUeXBlKHBsYXRmb3JtQ29udGV4dCgp
KSAhPSBrQ0dDb250ZXh0VHlwZVBERiAmJiAoIWlzQWNjZWxlcmF0ZWRDb250ZXh0KCkgfHwgKCFj
dG0uYigpICYmICFjdG0uYygpKSk7CiAgICAgQ0dSZWN0IHJlY3RzWzJdID0geyBjYW5Vc2VDR1Jl
Y3RJbmZpbml0ZSA/IENHUmVjdEluZmluaXRlIDogQ0dDb250ZXh0R2V0Q2xpcEJvdW5kaW5nQm94
KHBsYXRmb3JtQ29udGV4dCgpKSwgcmVjdCB9OwogICAgIENHQ29udGV4dEJlZ2luUGF0aChwbGF0
Zm9ybUNvbnRleHQoKSk7CiAgICAgQ0dDb250ZXh0QWRkUmVjdHMocGxhdGZvcm1Db250ZXh0KCks
IHJlY3RzLCAyKTsKQEAgLTEwODUsNyArMTA4NSw3IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0Ojpz
dXBwb3J0c1RyYW5zcGFyZW5jeUxheWVycygpCiAKIHN0YXRpYyB2b2lkIGFwcGx5U2hhZG93T2Zm
c2V0V29ya2Fyb3VuZElmTmVlZGVkKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgQ0dG
bG9hdCYgeE9mZnNldCwgQ0dGbG9hdCYgeU9mZnNldCkKIHsKLSNpZiBQTEFURk9STShJT1MpCisj
aWYgUExBVEZPUk0oSU9TKSB8fCBQTEFURk9STShXSU4pCiAgICAgVU5VU0VEX1BBUkFNKGNvbnRl
eHQpOwogICAgIFVOVVNFRF9QQVJBTSh4T2Zmc2V0KTsKICAgICBVTlVTRURfUEFSQU0oeU9mZnNl
dCk7CkBAIC0xMDkzLDcgKzEwOTMsNyBAQCBzdGF0aWMgdm9pZCBhcHBseVNoYWRvd09mZnNldFdv
cmthcm91bmRJZk5lZWRlZChjb25zdCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsCiAgICAgaWYg
KGNvbnRleHQuaXNBY2NlbGVyYXRlZENvbnRleHQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
aWYgKHdrQ0dDb250ZXh0RHJhd3NXaXRoQ29ycmVjdFNoYWRvd09mZnNldHMoY29udGV4dC5wbGF0
Zm9ybUNvbnRleHQoKSkpCisgICAgaWYgKENHQ29udGV4dERyYXdzV2l0aENvcnJlY3RTaGFkb3dP
ZmZzZXRzKGNvbnRleHQucGxhdGZvcm1Db250ZXh0KCkpKQogICAgICAgICByZXR1cm47CiAKICAg
ICAvLyBXb3JrIGFyb3VuZCA8cmRhcjovL3Byb2JsZW0vNTUzOTM4OD4gYnkgZW5zdXJpbmcgdGhh
dCB0aGUgb2Zmc2V0cyB3aWxsIGdldCB0cnVuY2F0ZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BhdHRlcm5DRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jZy9QYXR0ZXJuQ0cuY3BwCmluZGV4IDk4ZTY5ZGU4ZWQ4OWEyNGU4
ODZhMTQyYTA4Mzk1OWUyYzcyMTM1ZjAuLmQwZTIxYzg3M2FhMmRjMzBjNTNjYzhiYWI0ZjhiMDQx
NDM0MDAwOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L1BhdHRlcm5DRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
UGF0dGVybkNHLmNwcApAQCAtMzEsOCArMzEsOCBAQAogCiAjaW5jbHVkZSAiQWZmaW5lVHJhbnNm
b3JtLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCi0KICNpbmNsdWRlIDxDb3JlR3Jh
cGhpY3MvQ29yZUdyYXBoaWNzLmg+CisjaW5jbHVkZSA8cGFsL3NwaS9jZy9Db3JlR3JhcGhpY3NT
UEkuaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogCiAjaWYgUExBVEZPUk0oQ09DT0Ep
CkBAIC03NCw3ICs3NCw3IEBAIENHUGF0dGVyblJlZiBQYXR0ZXJuOjpjcmVhdGVQbGF0Zm9ybVBh
dHRlcm4oY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB1c2VyU3BhY2VUcmFuCiAgICAgLy8gSWYgd2Un
cmUgcmVwZWF0aW5nIGluIGJvdGggZGlyZWN0aW9ucywgd2UgY2FuIHVzZSBpbWFnZS1iYWNrZWQg
cGF0dGVybnMKICAgICAvLyBpbnN0ZWFkIG9mIGN1c3RvbSBwYXR0ZXJucywgYW5kIGF2b2lkIHRp
bGluZy1lZGdlIHBpeGVsIGNyYWNrcy4KICAgICBpZiAobV9yZXBlYXRYICYmIG1fcmVwZWF0WSkK
LSAgICAgICAgcmV0dXJuIHdrQ0dQYXR0ZXJuQ3JlYXRlV2l0aEltYWdlQW5kVHJhbnNmb3JtKHRp
bGVJbWFnZSgpLm5hdGl2ZUltYWdlKCkuZ2V0KCksIHBhdHRlcm5UcmFuc2Zvcm0sIHdrUGF0dGVy
blRpbGluZ0NvbnN0YW50U3BhY2luZyk7CisgICAgICAgIHJldHVybiBDR1BhdHRlcm5DcmVhdGVX
aXRoSW1hZ2UyKHRpbGVJbWFnZSgpLm5hdGl2ZUltYWdlKCkuZ2V0KCksIHBhdHRlcm5UcmFuc2Zv
cm0sIGtDR1BhdHRlcm5UaWxpbmdDb25zdGFudFNwYWNpbmcpOwogCiAgICAgLy8gSWYgRkxUX01B
WCBzaG91bGQgYWxzbyBiZSB1c2VkIGZvciB4U3RlcCBvciB5U3RlcCwgbm90aGluZyBpcyByZW5k
ZXJlZC4gVXNpbmcgZnJhY3Rpb25zIG9mIEZMVF9NQVggYWxzbwogICAgIC8vIHJlc3VsdCBpbiBu
b3RoaW5nIGJlaW5nIHJlbmRlcmVkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0Q29jb2EubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRDb2NvYS5tbQppbmRleCA2
N2Y0ZGViMTcyYjZjMGZlMjNjMWIxZDFmYjA5ZWFiOGFkYWUxMzFiLi40NWQ3NzM5ZDY0NmQ3OGEx
N2U3ZDcyMTg5ZDJkN2NjMzExZGNjN2NkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRDb2NvYS5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRDb2NvYS5tbQpA
QCAtMjksMTAgKzI5LDEzIEBACiAjaW1wb3J0ICJHcmFwaGljc0NvbnRleHRDRy5oIgogI2ltcG9y
dCAiR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlQ0cuaCIKICNpbXBvcnQgIkludFJlY3Qu
aCIKKyNpbXBvcnQgPHBhbC9zcGkvY2cvQ29yZUdyYXBoaWNzU1BJLmg+CisjaW1wb3J0IDxwYWwv
c3BpL21hYy9OU0dyYXBoaWNzU1BJLmg+CisjaW1wb3J0IDx3dGYvU3RkTGliRXh0cmFzLmg+CisK
ICNpZiBVU0UoQVBQS0lUKQogI2ltcG9ydCA8QXBwS2l0L0FwcEtpdC5oPgogI2VuZGlmCi0jaW1w
b3J0IDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKICNpZiBQTEFURk9STShJT1MpCiAjaW1wb3J0ICJD
b2xvci5oIgpAQCAtNDMsNyArNDYsNiBAQAogI2lmICFQTEFURk9STShJT1MpCiAjaW1wb3J0ICJM
b2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHQuaCIKICNlbmRpZgotI2ltcG9ydCAiV2ViQ29yZVN5
c3RlbUludGVyZmFjZS5oIgogCiBAY2xhc3MgTlNDb2xvcjsKIApAQCAtNTcsMTEgKzU5LDQ3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIC8vIGV4Y2VwdGlvbnMgZm9yIHRob3NlLgogCiAjaWYgIVBM
QVRGT1JNKElPUykKK0NHQ29sb3JSZWYgR3JhcGhpY3NDb250ZXh0Ojpmb2N1c1JpbmdDb2xvcigp
Cit7CisgICAgc3RhdGljIENHQ29sb3JSZWYgY29sb3I7CisgICAgaWYgKCFjb2xvcikgeworICAg
ICAgICBDR0Zsb2F0IGNvbG9yQ29tcG9uZW50c1tdID0geyAwLjUsIDAuNzUsIDEuMCwgMS4wIH07
CisgICAgICAgIGF1dG8gY29sb3JTcGFjZSA9IGFkb3B0Q0YoQ0dDb2xvclNwYWNlQ3JlYXRlV2l0
aE5hbWUoa0NHQ29sb3JTcGFjZVNSR0IpKTsKKyAgICAgICAgY29sb3IgPSBDR0NvbG9yQ3JlYXRl
KGNvbG9yU3BhY2UuZ2V0KCksIGNvbG9yQ29tcG9uZW50cyk7CisgICAgfQorICAgIHJldHVybiBj
b2xvcjsKK30KKworc3RhdGljIGJvb2wgZHJhd0ZvY3VzUmluZ0F0VGltZShDR0NvbnRleHRSZWYg
Y29udGV4dCwgTlNUaW1lSW50ZXJ2YWwgdGltZU9mZnNldCkKK3sKKyAgICBDR0ZvY3VzUmluZ1N0
eWxlIGZvY3VzUmluZ1N0eWxlOworICAgIEJPT0wgbmVlZHNSZXBhaW50ID0gTlNJbml0aWFsaXpl
Q0dGb2N1c1JpbmdTdHlsZUZvclRpbWUoTlNGb2N1c1JpbmdPbmx5LCAmZm9jdXNSaW5nU3R5bGUs
IHRpbWVPZmZzZXQpOworCisgICAgLy8gV2Ugd2FudCB0byByZXNwZWN0IHRoZSBDR0NvbnRleHQg
Y2xpcHBpbmcgYW5kIGFsc28gbm90IG92ZXJwYWludCBhbnkKKyAgICAvLyBleGlzdGluZyBmb2N1
cyByaW5nLiBUaGUgd2F5IHRvIGRvIHRoaXMgaXMgc2V0IGFjY3VtdWxhdGUgdG8KKyAgICAvLyAt
MS4gQWNjb3JkaW5nIHRvIENvcmVHcmFwaGljcywgdGhlIHJlYXNvbmluZyBmb3IgdGhpcyBiZWhh
dmlvciBoYXMgYmVlbgorICAgIC8vIGxvc3QgaW4gdGltZS4KKyAgICBmb2N1c1JpbmdTdHlsZS5h
Y2N1bXVsYXRlID0gLTE7CisgICAgYXV0byBzdHlsZSA9IGFkb3B0Q0YoQ0dTdHlsZUNyZWF0ZUZv
Y3VzUmluZ1dpdGhDb2xvcigmZm9jdXNSaW5nU3R5bGUsIEdyYXBoaWNzQ29udGV4dDo6Zm9jdXNS
aW5nQ29sb3IoKSkpOworCisgICAgQ0dDb250ZXh0U2F2ZUdTdGF0ZShjb250ZXh0KTsKKyAgICBD
R0NvbnRleHRTZXRTdHlsZShjb250ZXh0LCBzdHlsZS5nZXQoKSk7CisgICAgQ0dDb250ZXh0Rmls
bFBhdGgoY29udGV4dCk7CisgICAgQ0dDb250ZXh0UmVzdG9yZUdTdGF0ZShjb250ZXh0KTsKKwor
ICAgIHJldHVybiBuZWVkc1JlcGFpbnQ7Cit9CisKK3N0YXRpYyB2b2lkIGRyYXdGb2N1c1Jpbmco
Q0dDb250ZXh0UmVmIGNvbnRleHQpCit7CisgICAgZHJhd0ZvY3VzUmluZ0F0VGltZShjb250ZXh0
LCBEQkxfTUFYKTsKK30KKwogc3RhdGljIHZvaWQgZHJhd0ZvY3VzUmluZ1RvQ29udGV4dChDR0Nv
bnRleHRSZWYgY29udGV4dCwgQ0dQYXRoUmVmIGZvY3VzUmluZ1BhdGgpCiB7CiAgICAgQ0dDb250
ZXh0QmVnaW5QYXRoKGNvbnRleHQpOwogICAgIENHQ29udGV4dEFkZFBhdGgoY29udGV4dCwgZm9j
dXNSaW5nUGF0aCk7Ci0gICAgd2tEcmF3Rm9jdXNSaW5nKGNvbnRleHQsIG51bGxwdHIsIDApOwor
ICAgIGRyYXdGb2N1c1JpbmcoY29udGV4dCk7CiB9CiAKIHN0YXRpYyBib29sIGRyYXdGb2N1c1Jp
bmdUb0NvbnRleHRBdFRpbWUoQ0dDb250ZXh0UmVmIGNvbnRleHQsIENHUGF0aFJlZiBmb2N1c1Jp
bmdQYXRoLCBkb3VibGUgdGltZU9mZnNldCkKQEAgLTY5LDcgKzEwNyw3IEBAIHN0YXRpYyBib29s
IGRyYXdGb2N1c1JpbmdUb0NvbnRleHRBdFRpbWUoQ0dDb250ZXh0UmVmIGNvbnRleHQsIENHUGF0
aFJlZiBmb2N1c1JpCiAgICAgVU5VU0VEX1BBUkFNKHRpbWVPZmZzZXQpOwogICAgIENHQ29udGV4
dEJlZ2luUGF0aChjb250ZXh0KTsKICAgICBDR0NvbnRleHRBZGRQYXRoKGNvbnRleHQsIGZvY3Vz
UmluZ1BhdGgpOwotICAgIHJldHVybiB3a0RyYXdGb2N1c1JpbmdBdFRpbWUoY29udGV4dCwgc3Rk
OjpudW1lcmljX2xpbWl0czxkb3VibGU+OjptYXgoKSk7CisgICAgcmV0dXJuIGRyYXdGb2N1c1Jp
bmdBdFRpbWUoY29udGV4dCwgc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjptYXgoKSk7CiB9
CiAjZW5kaWYgLy8gIVBMQVRGT1JNKElPUykKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW9zL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2VJT1MubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pb3MvV2ViQ29yZVN5c3RlbUludGVyZmFjZUlPUy5tbQppbmRleCAwOWExODI4
MTRkMTQwMTNiN2M4OGU4ZWViZjAzZDlhZTBjZmEyODY5Li43NTdkMDQ1ZjVjNTg1NDQ0OTZmMmRk
NjkwNTBiZDFhZjg2OGMyZWRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
b3MvV2ViQ29yZVN5c3RlbUludGVyZmFjZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pb3MvV2ViQ29yZVN5c3RlbUludGVyZmFjZUlPUy5tbQpAQCAtMjcsMTAgKzI3LDggQEAK
ICNpbXBvcnQgIldlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaCIKIAogV0VCQ09SRV9FWFBPUlQgdm9p
ZCAoKndrQ0FMYXllckVudW1lcmF0ZVJlY3RzQmVpbmdEcmF3bldpdGhCbG9jaykoQ0FMYXllciAq
LCBDR0NvbnRleHRSZWYgY29udGV4dCwgdm9pZCAoXmJsb2NrKShDR1JlY3QgcmVjdCkpOwotV0VC
Q09SRV9FWFBPUlQgQ0dQYXR0ZXJuUmVmICgqd2tDR1BhdHRlcm5DcmVhdGVXaXRoSW1hZ2VBbmRU
cmFuc2Zvcm0pKENHSW1hZ2VSZWYsIENHQWZmaW5lVHJhbnNmb3JtLCBpbnQpOwogV0VCQ09SRV9F
WFBPUlQgdm9pZCAoKndrQ2xlYXJHbHlwaFZlY3Rvcikodm9pZCogZ2x5cGhzKTsKIFdFQkNPUkVf
RVhQT1JUIE9TU3RhdHVzICgqd2tDb252ZXJ0Q2hhclRvR2x5cGhzKSh2b2lkKiBzdHlsZUdyb3Vw
LCBjb25zdCBVbmlDaGFyKiwgdW5zaWduZWQgbnVtQ2hhcmFjdGVycywgdm9pZCogZ2x5cGhzKTsK
LVdFQkNPUkVfRVhQT1JUIGJvb2wgKCp3a0NHQ29udGV4dElzUERGQ29udGV4dCkoQ0dDb250ZXh0
UmVmKTsKIFdFQkNPUkVfRVhQT1JUIGlkICgqd2tDcmVhdGVOU1VSTENvbm5lY3Rpb25EZWxlZ2F0
ZVByb3h5KSh2b2lkKTsKIFdFQkNPUkVfRVhQT1JUIHZvaWQgKCp3a1NldENPTk5FQ1RQcm94eUZv
clN0cmVhbSkoQ0ZSZWFkU3RyZWFtUmVmLCBDRlN0cmluZ1JlZiBwcm94eUhvc3QsIENGTnVtYmVy
UmVmIHByb3h5UG9ydCk7CiBXRUJDT1JFX0VYUE9SVCB2b2lkICgqd2tTZXRDT05ORUNUUHJveHlB
dXRob3JpemF0aW9uRm9yU3RyZWFtKShDRlJlYWRTdHJlYW1SZWYsIENGU3RyaW5nUmVmIHByb3h5
QXV0aG9yaXphdGlvblN0cmluZyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tYWMvUGFzdGVib2FyZE1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0
ZWJvYXJkTWFjLm1tCmluZGV4IDIwZTYzNWMwOTA1YWU4OTZjN2JiNTQyMWM4NTZiMjFiMmE0NDZi
NDkuLjgxODlkYmI4NjliNTFlYzFmNmMwMDE0YWM4YTZjMmE1MzAyODM2OTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tCkBAIC01Miw2ICs1Miw4IEBA
CiAjaW1wb3J0ICJXZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmgiCiAjaW1wb3J0ICJXZWJOU0F0dHJp
YnV0ZWRTdHJpbmdFeHRyYXMuaCIKICNpbXBvcnQgIm1hcmt1cC5oIgorI2ltcG9ydCA8cGFsL3Nw
aS9jZy9Db3JlR3JhcGhpY3NTUEkuaD4KKyNpbXBvcnQgPHBhbC9zcGkvbWFjL0hJU2VydmljZXNT
UEkuaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbXBvcnQgPHd0Zi9TdGRMaWJFeHRy
YXMuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KQEAgLTY2OSw2ICs2NzEs
ODAgQEAgVmVjdG9yPFN0cmluZz4gUGFzdGVib2FyZDo6cmVhZEZpbGVuYW1lcygpCiB9CiAKICNp
ZiBFTkFCTEUoRFJBR19TVVBQT1JUKQorc3RhdGljIHZvaWQgZmxpcEltYWdlU3BlYyhDb3JlRHJh
Z0ltYWdlU3BlYyogaW1hZ2VTcGVjKQoreworICAgIHVuc2lnbmVkIGNoYXIqIHRlbXBSb3cgPSAo
dW5zaWduZWQgY2hhciopZmFzdE1hbGxvYyhpbWFnZVNwZWMtPmJ5dGVzUGVyUm93KTsKKyAgICBp
bnQgcGxhbmVzID0gaW1hZ2VTcGVjLT5pc1BsYW5hciA/IGltYWdlU3BlYy0+c2FtcGxlc1BlclBp
eGVsIDogMTsKKworICAgIGZvciAoaW50IHAgPSAwOyBwIDwgcGxhbmVzOyBwKyspIHsKKyAgICAg
ICAgdW5zaWduZWQgY2hhciogdG9wUm93ID0gKHVuc2lnbmVkIGNoYXIqKWltYWdlU3BlYy0+ZGF0
YVtwXTsKKyAgICAgICAgdW5zaWduZWQgY2hhciogYm90Um93ID0gdG9wUm93ICsgKGltYWdlU3Bl
Yy0+cGl4ZWxzSGlnaCAtIDEpICogaW1hZ2VTcGVjLT5ieXRlc1BlclJvdzsKKyAgICAgICAgZm9y
IChpbnQgaSA9IDA7IGkgPCBpbWFnZVNwZWMtPnBpeGVsc0hpZ2ggLyAyOyBpKyssIHRvcFJvdyAr
PSBpbWFnZVNwZWMtPmJ5dGVzUGVyUm93LCBib3RSb3cgLT0gaW1hZ2VTcGVjLT5ieXRlc1BlclJv
dykgeworICAgICAgICAgICAgYmNvcHkodG9wUm93LCAgdGVtcFJvdywgaW1hZ2VTcGVjLT5ieXRl
c1BlclJvdyk7CisgICAgICAgICAgICBiY29weShib3RSb3csICB0b3BSb3csICBpbWFnZVNwZWMt
PmJ5dGVzUGVyUm93KTsKKyAgICAgICAgICAgIGJjb3B5KHRlbXBSb3csIGJvdFJvdywgIGltYWdl
U3BlYy0+Ynl0ZXNQZXJSb3cpOworICAgICAgICB9CisgICAgfQorCisgICAgZmFzdEZyZWUodGVt
cFJvdyk7Cit9CisKK3N0YXRpYyB2b2lkIHNldERyYWdJbWFnZUltcGwoTlNJbWFnZSAqaW1hZ2Us
IE5TUG9pbnQgb2Zmc2V0KQoreworICAgIGJvb2wgZmxpcEltYWdlOworICAgIE5TU2l6ZSBpbWFn
ZVNpemUgPSBpbWFnZS5zaXplOworICAgIENHUmVjdCBpbWFnZVJlY3QgPSBDR1JlY3RNYWtlKDAs
IDAsIGltYWdlU2l6ZS53aWR0aCwgaW1hZ2VTaXplLmhlaWdodCk7CisgICAgTlNJbWFnZVJlcCAq
aW1hZ2VSZXAgPSBbaW1hZ2UgYmVzdFJlcHJlc2VudGF0aW9uRm9yUmVjdDpOU1JlY3RGcm9tQ0dS
ZWN0KGltYWdlUmVjdCkgY29udGV4dDpuaWwgaGludHM6bmlsXTsKKyAgICBSZXRhaW5QdHI8TlNC
aXRtYXBJbWFnZVJlcD4gYml0bWFwSW1hZ2U7CisgICAgaWYgKCFpbWFnZVJlcCB8fCAhW2ltYWdl
UmVwIGlzS2luZE9mQ2xhc3M6W05TQml0bWFwSW1hZ2VSZXAgY2xhc3NdXSB8fCAhTlNFcXVhbFNp
emVzKGltYWdlUmVwLnNpemUsIGltYWdlU2l6ZSkpIHsKKyAgICAgICAgW2ltYWdlIGxvY2tGb2N1
c107CisgICAgICAgIGJpdG1hcEltYWdlID0gYWRvcHROUyhbW05TQml0bWFwSW1hZ2VSZXAgYWxs
b2NdIGluaXRXaXRoRm9jdXNlZFZpZXdSZWN0OiooTlNSZWN0ICopJmltYWdlUmVjdF0pOworICAg
ICAgICBbaW1hZ2UgdW5sb2NrRm9jdXNdOworICAgICAgICAKKyAgICAgICAgLy8gd2UgbWF5IGhh
dmUgdG8gZmxpcCB0aGUgYml0cyB3ZSBqdXN0IHJlYWQgaWYgdGhlIGltYWdlIHdhcyBmbGlwcGVk
IHNpbmNlIGl0IG1lYW5zIHRoZSBjYWNoZSB3YXMgYWxzbworICAgICAgICAvLyBhbmQgQ29yZURy
YWdTZXRJbWFnZSBjYW4ndCB0YWtlIGEgdHJhbnNmb3JtIGZvciByZW5kZXJpbmcuCisjcHJhZ21h
IGNsYW5nIGRpYWdub3N0aWMgcHVzaAorI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIGlnbm9yZWQg
Ii1XZGVwcmVjYXRlZC1kZWNsYXJhdGlvbnMiCisgICAgICAgIGZsaXBJbWFnZSA9IGltYWdlLmlz
RmxpcHBlZDsKKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwb3AKKyAgICB9IGVsc2UgeworICAg
ICAgICBmbGlwSW1hZ2UgPSBmYWxzZTsKKyAgICAgICAgYml0bWFwSW1hZ2UgPSAoTlNCaXRtYXBJ
bWFnZVJlcCAqKWltYWdlUmVwOworICAgIH0KKyAgICBBU1NFUlQoYml0bWFwSW1hZ2UpOworCisg
ICAgQ29yZURyYWdJbWFnZVNwZWMgaW1hZ2VTcGVjOworICAgIGltYWdlU3BlYy52ZXJzaW9uID0g
a0NvcmVEcmFnSW1hZ2VTcGVjVmVyc2lvbk9uZTsKKyAgICBpbWFnZVNwZWMucGl4ZWxzV2lkZSA9
IFtiaXRtYXBJbWFnZSBwaXhlbHNXaWRlXTsKKyAgICBpbWFnZVNwZWMucGl4ZWxzSGlnaCA9IFti
aXRtYXBJbWFnZSBwaXhlbHNIaWdoXTsKKyAgICBpbWFnZVNwZWMuYml0c1BlclNhbXBsZSA9IFti
aXRtYXBJbWFnZSBiaXRzUGVyU2FtcGxlXTsKKyAgICBpbWFnZVNwZWMuc2FtcGxlc1BlclBpeGVs
ID0gW2JpdG1hcEltYWdlIHNhbXBsZXNQZXJQaXhlbF07CisgICAgaW1hZ2VTcGVjLmJpdHNQZXJQ
aXhlbCA9IFtiaXRtYXBJbWFnZSBiaXRzUGVyUGl4ZWxdOworICAgIGltYWdlU3BlYy5ieXRlc1Bl
clJvdyA9IFtiaXRtYXBJbWFnZSBieXRlc1BlclJvd107CisgICAgaW1hZ2VTcGVjLmlzUGxhbmFy
ID0gW2JpdG1hcEltYWdlIGlzUGxhbmFyXTsKKyAgICBpbWFnZVNwZWMuaGFzQWxwaGEgPSBbYml0
bWFwSW1hZ2UgaGFzQWxwaGFdOworICAgIFtiaXRtYXBJbWFnZSBnZXRCaXRtYXBEYXRhUGxhbmVz
Oih1bnNpZ25lZCBjaGFyKiopaW1hZ2VTcGVjLmRhdGFdOworCisgICAgLy8gaWYgaW1hZ2Ugd2Fz
IGZsaXBwZWQsIHdlIGhhdmUgYW4gdXBzaWRlIGRvd24gYml0bWFwIHNpbmNlIHRoZSBjYWNoZSBp
cyByZW5kZXJlZCBmbGlwcGVkCisgICAgaWYgKGZsaXBJbWFnZSkKKyAgICAgICAgZmxpcEltYWdl
U3BlYygmaW1hZ2VTcGVjKTsKKworICAgIENHU1JlZ2lvbk9iaiBpbWFnZVNoYXBlOworICAgIE9T
U3RhdHVzIGVycm9yID0gQ0dTTmV3UmVnaW9uV2l0aFJlY3QoJmltYWdlUmVjdCwgJmltYWdlU2hh
cGUpOworICAgIEFTU0VSVChlcnJvciA9PSBrQ0dFcnJvclN1Y2Nlc3MpOworICAgIGlmIChlcnJv
ciAhPSBrQ0dFcnJvclN1Y2Nlc3MpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIG1ha2Ugc3Vy
ZSBpbWFnZSBoYXMgaW50ZWdlciBvZmZzZXQKKyAgICBDR1BvaW50IGltYWdlT2Zmc2V0ID0gey1v
ZmZzZXQueCwgLShpbWFnZVNpemUuaGVpZ2h0IC0gb2Zmc2V0LnkpfTsKKyAgICBpbWFnZU9mZnNl
dC54ID0gZmxvb3IoaW1hZ2VPZmZzZXQueCArIDAuNSk7CisgICAgaW1hZ2VPZmZzZXQueSA9IGZs
b29yKGltYWdlT2Zmc2V0LnkgKyAwLjUpOworCisgICAgZXJyb3IgPSBDb3JlRHJhZ1NldEltYWdl
KENvcmVEcmFnR2V0Q3VycmVudERyYWcoKSwgaW1hZ2VPZmZzZXQsICZpbWFnZVNwZWMsIGltYWdl
U2hhcGUsIDEuMCk7CisgICAgQ0dTUmVsZWFzZVJlZ2lvbihpbWFnZVNoYXBlKTsKKyAgICBBU1NF
UlQoZXJyb3IgPT0ga0NHRXJyb3JTdWNjZXNzKTsKK30KKwogdm9pZCBQYXN0ZWJvYXJkOjpzZXRE
cmFnSW1hZ2UoRHJhZ0ltYWdlIGltYWdlLCBjb25zdCBJbnRQb2ludCYgbG9jYXRpb24pCiB7CiAg
ICAgLy8gRG9uJ3QgYWxsb3cgc2V0dGluZyB0aGUgZHJhZyBpbWFnZSBpZiBzb21lb25lIGtlcHQg
YSBwYXN0ZWJvYXJkIGFuZCBpcyB0cnlpbmcgdG8gc2V0IHRoZSBpbWFnZSB0b28gbGF0ZS4KQEAg
LTY3Nyw3ICs3NTMsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6OnNldERyYWdJbWFnZShEcmFnSW1hZ2Ug
aW1hZ2UsIGNvbnN0IEludFBvaW50JiBsb2NhdGlvbikKIAogICAgIC8vIERhc2hib2FyZCB3YW50
cyB0byBiZSBhYmxlIHRvIHNldCB0aGUgZHJhZyBpbWFnZSBkdXJpbmcgZHJhZ2dpbmcsIGJ1dCBD
b2NvYSBkb2VzIG5vdCBhbGxvdyB0aGlzLgogICAgIC8vIEluc3RlYWQgd2UgbXVzdCBkcm9wIGRv
d24gdG8gdGhlIENvcmVHcmFwaGljcyBBUEkuCi0gICAgd2tTZXREcmFnSW1hZ2UoaW1hZ2UuZ2V0
KCkuZ2V0KCksIGxvY2F0aW9uKTsKKyAgICBzZXREcmFnSW1hZ2VJbXBsKGltYWdlLmdldCgpLmdl
dCgpLCBsb2NhdGlvbik7CiAKICAgICAvLyBIYWNrOiBXZSBtdXN0IHBvc3QgYW4gZXZlbnQgdG8g
d2FrZSB1cCB0aGUgTlNEcmFnTWFuYWdlciwgd2hpY2ggaXMgc2l0dGluZyBpbiBhIG5leHRFdmVu
dCBjYWxsCiAgICAgLy8gdXAgdGhlIHN0YWNrIGZyb20gdXMgYmVjYXVzZSB0aGUgQ29yZUZvdW5k
YXRpb24gZHJhZyBtYW5hZ2VyIGRvZXMgbm90IHVzZSB0aGUgcnVuIGxvb3AgYnkgaXRzZWxmLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtRXZlbnRGYWN0
b3J5TWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtRXZlbnRGYWN0
b3J5TWFjLm1tCmluZGV4IDc3YjljYjk2MzViYmZiMGJjMmM1NDU0MGJmZjY0MDUxNzFiN2M1NTku
LjkyOWFhNTc1OGYzZTFkYmNjYzU5MDAxODkyOTdlYjE1ZTU3MDExODcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybUV2ZW50RmFjdG9yeU1hYy5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1FdmVudEZhY3RvcnlNYWMubW0K
QEAgLTY3Niw3ICs2NzYsNyBAQCBzdGF0aWMgaW50IHR5cGVGb3JFdmVudChOU0V2ZW50ICpldmVu
dCkKIHsKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihbTlNNZW51IG1lbnVUeXBlRm9yRXZl
bnQ6ZXZlbnRdKTsKIH0KLSAgICAKKwogdm9pZCBnZXRXaGVlbEV2ZW50RGVsdGFzKE5TRXZlbnQg
KmV2ZW50LCBmbG9hdCYgZGVsdGFYLCBmbG9hdCYgZGVsdGFZLCBCT09MJiBjb250aW51b3VzKQog
ewogICAgIEFTU0VSVChldmVudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tYWMvU2Nyb2xsYmFyVGhlbWVNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMv
U2Nyb2xsYmFyVGhlbWVNYWMubW0KaW5kZXggYzRjMjg3NzY4MzU3NDk2YWViMjg4ZmE0MWYwZGQ5
NWQyZDdjYzI4OC4uNmQwNWI4NmM2M2QwNWY3YjZkMTQ3MzE3ZWZkMjdmZjM0MTU4MzE5MyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbGJhclRoZW1lTWFjLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxiYXJUaGVtZU1hYy5tbQpA
QCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUgIlNjcm9sbFZpZXcuaCIKICNpbmNsdWRlICJXZWJD
b3JlU3lzdGVtSW50ZXJmYWNlLmgiCiAjaW5jbHVkZSA8Q2FyYm9uL0NhcmJvbi5oPgorI2luY2x1
ZGUgPHBhbC9zcGkvY2cvQ29yZUdyYXBoaWNzU1BJLmg+CiAjaW5jbHVkZSA8cGFsL3NwaS9tYWMv
TlNTY3JvbGxlckltcFNQSS5oPgogI2luY2x1ZGUgPHd0Zi9CbG9ja09iakNFeGNlcHRpb25zLmg+
CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KQEAgLTU3Myw3ICs1NzQsNyBAQCBzdGF0aWMgUmV0
YWluUHRyPENHQ29sb3JSZWY+IGxpbmVuQmFja2dyb3VuZENvbG9yKCkKICAgICBpZiAoIWNnSW1h
Z2UpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgUmV0YWluUHRyPENHUGF0dGVyblJl
Zj4gcGF0dGVybiA9IGFkb3B0Q0Yod2tDR1BhdHRlcm5DcmVhdGVXaXRoSW1hZ2VBbmRUcmFuc2Zv
cm0oY2dJbWFnZSwgQ0dBZmZpbmVUcmFuc2Zvcm1JZGVudGl0eSwgd2tQYXR0ZXJuVGlsaW5nTm9E
aXN0b3J0aW9uKSk7CisgICAgUmV0YWluUHRyPENHUGF0dGVyblJlZj4gcGF0dGVybiA9IGFkb3B0
Q0YoQ0dQYXR0ZXJuQ3JlYXRlV2l0aEltYWdlMihjZ0ltYWdlLCBDR0FmZmluZVRyYW5zZm9ybUlk
ZW50aXR5LCBrQ0dQYXR0ZXJuVGlsaW5nTm9EaXN0b3J0aW9uKSk7CiAgICAgUmV0YWluUHRyPENH
Q29sb3JTcGFjZVJlZj4gY29sb3JTcGFjZSA9IGFkb3B0Q0YoQ0dDb2xvclNwYWNlQ3JlYXRlUGF0
dGVybigwKSk7CiAKICAgICBjb25zdCBDR0Zsb2F0IGFscGhhID0gMS4wOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1RoZW1lTWFjLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL1RoZW1lTWFjLm1tCmluZGV4IDkwZjEwNDFlZmY3ZjBjNjQ3ZDZmODM5MWMw
MjdmNTNkMWFiNDQ3MTQuLjhhMTkyNjVjZjVkODJmMjAyNWZmNTAxZWVlMmVmOTUxZjg0Mzc4NTMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9UaGVtZU1hYy5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvVGhlbWVNYWMubW0KQEAgLTM2LDYgKzM2LDcg
QEAKICNpbXBvcnQgIldlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaCIKICNpbXBvcnQgPENhcmJvbi9D
YXJib24uaD4KICNpbXBvcnQgPHBhbC9zcGkvY29jb2EvTlNCdXR0b25DZWxsU1BJLmg+CisjaW1w
b3J0IDxwYWwvc3BpL21hYy9OU0dyYXBoaWNzU1BJLmg+CiAjaW1wb3J0IDx3dGYvQmxvY2tPYmpD
RXhjZXB0aW9ucy5oPgogI2ltcG9ydCA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW1wb3J0IDx3
dGYvU3RkTGliRXh0cmFzLmg+CkBAIC0zNDksOSArMzUwLDMyIEBAIHN0YXRpYyBOU0J1dHRvbkNl
bGwgKnNoYXJlZENoZWNrYm94Q2VsbChjb25zdCBDb250cm9sU3RhdGVzJiBzdGF0ZXMsIGNvbnN0
IEludFNpCiAgICAgcmV0dXJuIGNoZWNrYm94Q2VsbDsKIH0KIAorc3RhdGljIGJvb2wgZHJhd0Nl
bGxGb2N1c1JpbmdXaXRoRnJhbWVBdFRpbWUoTlNDZWxsICpjZWxsLCBOU1JlY3QgY2VsbEZyYW1l
LCBOU1ZpZXcgKmNvbnRyb2xWaWV3LCBOU1RpbWVJbnRlcnZhbCB0aW1lT2Zmc2V0KQoreworICAg
IENHQ29udGV4dFJlZiBjZ0NvbnRleHQgPSAoQ0dDb250ZXh0UmVmKVtbTlNHcmFwaGljc0NvbnRl
eHQgY3VycmVudENvbnRleHRdIGdyYXBoaWNzUG9ydF07CisgICAgQ0dDb250ZXh0U2F2ZUdTdGF0
ZShjZ0NvbnRleHQpOworCisgICAgQ0dGb2N1c1JpbmdTdHlsZSBmb2N1c1JpbmdTdHlsZTsKKyAg
ICBib29sIG5lZWRzUmVwYWludCA9IE5TSW5pdGlhbGl6ZUNHRm9jdXNSaW5nU3R5bGVGb3JUaW1l
KE5TRm9jdXNSaW5nT25seSwgJmZvY3VzUmluZ1N0eWxlLCB0aW1lT2Zmc2V0KTsKKyAgICAvLyBX
ZSB3YW50IHRvIHJlc3BlY3QgdGhlIENHQ29udGV4dCBjbGlwcGluZyBhbmQgYWxzbyBub3Qgb3Zl
cnBhaW50IGFueQorICAgIC8vIGV4aXN0aW5nIGZvY3VzIHJpbmcuIFRoZSB3YXkgdG8gZG8gdGhp
cyBpcyBzZXQgYWNjdW11bGF0ZSB0bworICAgIC8vIC0xLiBBY2NvcmRpbmcgdG8gQ29yZUdyYXBo
aWNzLCB0aGUgcmVhc29uaW5nIGZvciB0aGlzIGJlaGF2aW9yIGhhcyBiZWVuCisgICAgLy8gbG9z
dCBpbiB0aW1lLgorICAgIGZvY3VzUmluZ1N0eWxlLmFjY3VtdWxhdGUgPSAtMTsKKyAgICBhdXRv
IHN0eWxlID0gYWRvcHRDRihDR1N0eWxlQ3JlYXRlRm9jdXNSaW5nV2l0aENvbG9yKCZmb2N1c1Jp
bmdTdHlsZSwgR3JhcGhpY3NDb250ZXh0Ojpmb2N1c1JpbmdDb2xvcigpKSk7CisgICAgQ0dDb250
ZXh0U2V0U3R5bGUoY2dDb250ZXh0LCBzdHlsZS5nZXQoKSk7CisKKyAgICBDR0NvbnRleHRCZWdp
blRyYW5zcGFyZW5jeUxheWVyV2l0aFJlY3QoY2dDb250ZXh0LCBOU1JlY3RUb0NHUmVjdChjZWxs
RnJhbWUpLCAwKTsKKyAgICBbY2VsbCBkcmF3Rm9jdXNSaW5nTWFza1dpdGhGcmFtZTpjZWxsRnJh
bWUgaW5WaWV3OmNvbnRyb2xWaWV3XTsKKyAgICBDR0NvbnRleHRFbmRUcmFuc3BhcmVuY3lMYXll
cihjZ0NvbnRleHQpOworICAgIENHQ29udGV4dFJlc3RvcmVHU3RhdGUoY2dDb250ZXh0KTsKKwor
ICAgIHJldHVybiBuZWVkc1JlcGFpbnQ7Cit9CisKIHN0YXRpYyBib29sIGRyYXdDZWxsRm9jdXNS
aW5nKE5TQ2VsbCAqY2VsbCwgTlNSZWN0IGNlbGxGcmFtZSwgTlNWaWV3ICpjb250cm9sVmlldykK
IHsKLSAgICB3a0RyYXdDZWxsRm9jdXNSaW5nV2l0aEZyYW1lQXRUaW1lKGNlbGwsIGNlbGxGcmFt
ZSwgY29udHJvbFZpZXcsIHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6bWF4KCkpOworICAg
IGRyYXdDZWxsRm9jdXNSaW5nV2l0aEZyYW1lQXRUaW1lKGNlbGwsIGNlbGxGcmFtZSwgY29udHJv
bFZpZXcsIHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6bWF4KCkpOwogICAgIHJldHVybiBm
YWxzZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNv
cmVTeXN0ZW1JbnRlcmZhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3Jl
U3lzdGVtSW50ZXJmYWNlLmgKaW5kZXggOGExMjQ4MjdjMDQwOWQ2NjNmNzgxZGYyN2I0ZTQzYmNm
YWZiZDIyNy4uNjZjMDBiNDg2MzIyZjFmODQyYjc3YjNlZDZiYzU5MThjOGY2ZmQ2NCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2Uu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZVN5c3RlbUludGVyZmFj
ZS5oCkBAIC0xMjYsMTQgKzEyNiw3IEBAIHR5cGVkZWYgZW51bSB7CiAgICAgd2tQYXR0ZXJuVGls
aW5nQ29uc3RhbnRTcGFjaW5nCiB9IHdrUGF0dGVyblRpbGluZzsKICNpZiAhUExBVEZPUk0oSU9T
KQotZXh0ZXJuIGJvb2wgKCp3a0NHQ29udGV4dERyYXdzV2l0aENvcnJlY3RTaGFkb3dPZmZzZXRz
KShDR0NvbnRleHRSZWYpOwotI2VuZGlmCi1leHRlcm4gQ0dQYXR0ZXJuUmVmICgqd2tDR1BhdHRl
cm5DcmVhdGVXaXRoSW1hZ2VBbmRUcmFuc2Zvcm0pKENHSW1hZ2VSZWYsIENHQWZmaW5lVHJhbnNm
b3JtLCBpbnQpOwotI2lmICFQTEFURk9STShJT1MpCiBleHRlcm4gdm9pZCAoKndrRHJhd0JlemVs
ZWRUZXh0QXJlYSkoTlNSZWN0LCBCT09MIGVuYWJsZWQpOwotZXh0ZXJuIHZvaWQgKCp3a0RyYXdG
b2N1c1JpbmcpKENHQ29udGV4dFJlZiwgQ0dDb2xvclJlZiwgaW50KTsKLWV4dGVybiBib29sICgq
d2tEcmF3Rm9jdXNSaW5nQXRUaW1lKShDR0NvbnRleHRSZWYsIE5TVGltZUludGVydmFsIHRpbWUp
OwotZXh0ZXJuIGJvb2wgKCp3a0RyYXdDZWxsRm9jdXNSaW5nV2l0aEZyYW1lQXRUaW1lKShOU0Nl
bGwgKmNlbGwsIE5TUmVjdCBjZWxsRnJhbWUsIE5TVmlldyAqY29udHJvbFZpZXcsIE5TVGltZUlu
dGVydmFsIHRpbWUpOwogZXh0ZXJuIHZvaWQgKCp3a0RyYXdNZWRpYVNsaWRlclRyYWNrKShDR0Nv
bnRleHRSZWYgY29udGV4dCwgQ0dSZWN0IHJlY3QsIGZsb2F0IHRpbWVMb2FkZWQsIGZsb2F0IGN1
cnJlbnRUaW1lLAogICAgIGZsb2F0IGR1cmF0aW9uLCB1bnNpZ25lZCBzdGF0ZSk7CiBleHRlcm4g
dm9pZCAoKndrRHJhd01lZGlhVUlQYXJ0KShpbnQgcGFydCwgQ0dDb250ZXh0UmVmIGNvbnRleHQs
IENHUmVjdCByZWN0LCB1bnNpZ25lZCBzdGF0ZSk7CkBAIC0xNTYsOSArMTQ5LDYgQEAgdHlwZWRl
ZiBlbnVtIHsKIH0gd2tNZWRpYVVJQ29udHJvbFR5cGU7CiBleHRlcm4gTlNDb250cm9sICooKndr
Q3JlYXRlTWVkaWFVSUNvbnRyb2wpKGludCk7CiAKLWV4dGVybiB2b2lkICgqd2tXaW5kb3dTZXRB
bHBoYSkoTlNXaW5kb3cgKiwgZmxvYXQpOwotZXh0ZXJuIHZvaWQgKCp3a1dpbmRvd1NldFNjYWxl
ZEZyYW1lKShOU1dpbmRvdyAqLCBOU1JlY3QsIE5TUmVjdCk7Ci0KIGV4dGVybiB1bnNpZ25lZCAo
KndrUVRJbmNsdWRlT25seU1vZGVybk1lZGlhRmlsZVR5cGVzKSh2b2lkKTsKIGV4dGVybiB2b2lk
ICgqd2tRVE1vdmllRGlzYWJsZUNvbXBvbmVudCkodWludDMyX3RbNV0pOwogZXh0ZXJuIGZsb2F0
ICgqd2tRVE1vdmllTWF4VGltZUxvYWRlZCkoUVRNb3ZpZSopOwpAQCAtMTcyLDkgKzE2Miw3IEBA
IGV4dGVybiBOU0FycmF5ICooKndrUVRHZXRTaXRlc0luTWVkaWFEb3dubG9hZENhY2hlKSgpOwog
ZXh0ZXJuIHZvaWQgKCp3a1FUQ2xlYXJNZWRpYURvd25sb2FkQ2FjaGVGb3JTaXRlKShOU1N0cmlu
ZyAqc2l0ZSk7CiBleHRlcm4gdm9pZCAoKndrUVRDbGVhck1lZGlhRG93bmxvYWRDYWNoZSkoKTsK
IGV4dGVybiB2b2lkICgqd2tTZXRDb29raWVTdG9yYWdlUHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCko
Qk9PTCk7Ci1leHRlcm4gdm9pZCAoKndrU2V0RHJhZ0ltYWdlKShOU0ltYWdlKiwgTlNQb2ludCBv
ZmZzZXQpOwogI2VuZGlmCi1leHRlcm4gYm9vbCAoKndrQ0dDb250ZXh0SXNQREZDb250ZXh0KShD
R0NvbnRleHRSZWYpOwogZXh0ZXJuIHZvaWQgKCp3a1NldENPTk5FQ1RQcm94eUZvclN0cmVhbSko
Q0ZSZWFkU3RyZWFtUmVmLCBDRlN0cmluZ1JlZiBwcm94eUhvc3QsIENGTnVtYmVyUmVmIHByb3h5
UG9ydCk7CiBleHRlcm4gdm9pZCAoKndrU2V0Q09OTkVDVFByb3h5QXV0aG9yaXphdGlvbkZvclN0
cmVhbSkoQ0ZSZWFkU3RyZWFtUmVmLCBDRlN0cmluZ1JlZiBwcm94eUF1dGhvcml6YXRpb25TdHJp
bmcpOwogZXh0ZXJuIENGSFRUUE1lc3NhZ2VSZWYgKCp3a0NvcHlDT05ORUNUUHJveHlSZXNwb25z
ZSkoQ0ZSZWFkU3RyZWFtUmVmLCBDRlVSTFJlZiByZXNwb25zZVVSTCwgQ0ZTdHJpbmdSZWYgcHJv
eHlIb3N0LCBDRk51bWJlclJlZiBwcm94eVBvcnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2UubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZVN5c3RlbUludGVyZmFjZS5tbQppbmRleCAyNzJiNTU1N2Uy
MzlmM2MxZTFkNDVhOTRmYjdiMWU0NTM0NjE3ZGYyLi4xM2I4NDk1YTkwZmVkM2IyMDIzZDUyM2Yw
YzU0YjE3ZmUyMGNlMWI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMv
V2ViQ29yZVN5c3RlbUludGVyZmFjZS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
YWMvV2ViQ29yZVN5c3RlbUludGVyZmFjZS5tbQpAQCAtMzEsMTIgKzMxLDcgQEAKICNpbXBvcnQg
PEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgogCiB2b2lkICgqd2tDQUxheWVyRW51bWVyYXRlUmVj
dHNCZWluZ0RyYXduV2l0aEJsb2NrKShDQUxheWVyICosIENHQ29udGV4dFJlZiBjb250ZXh0LCB2
b2lkICheYmxvY2spKENHUmVjdCByZWN0KSk7Ci1ib29sICgqd2tDR0NvbnRleHREcmF3c1dpdGhD
b3JyZWN0U2hhZG93T2Zmc2V0cykoQ0dDb250ZXh0UmVmKTsKLUNHUGF0dGVyblJlZiAoKndrQ0dQ
YXR0ZXJuQ3JlYXRlV2l0aEltYWdlQW5kVHJhbnNmb3JtKShDR0ltYWdlUmVmLCBDR0FmZmluZVRy
YW5zZm9ybSwgaW50KTsKIHZvaWQgKCp3a0RyYXdCZXplbGVkVGV4dEFyZWEpKE5TUmVjdCwgQk9P
TCBlbmFibGVkKTsKLXZvaWQgKCp3a0RyYXdGb2N1c1JpbmcpKENHQ29udGV4dFJlZiwgQ0dDb2xv
clJlZiwgaW50KTsKLWJvb2wgKCp3a0RyYXdGb2N1c1JpbmdBdFRpbWUpKENHQ29udGV4dFJlZiwg
TlNUaW1lSW50ZXJ2YWwpOwotYm9vbCAoKndrRHJhd0NlbGxGb2N1c1JpbmdXaXRoRnJhbWVBdFRp
bWUpKE5TQ2VsbCosIE5TUmVjdCwgTlNWaWV3KiwgTlNUaW1lSW50ZXJ2YWwpOwogdm9pZCAoKndr
RHJhd01lZGlhU2xpZGVyVHJhY2spKENHQ29udGV4dFJlZiBjb250ZXh0LCBDR1JlY3QgcmVjdCwg
ZmxvYXQgdGltZUxvYWRlZCwgZmxvYXQgY3VycmVudFRpbWUsCiAgICAgZmxvYXQgZHVyYXRpb24s
IHVuc2lnbmVkIHN0YXRlKTsKIEJPT0wgKCp3a0hpdFRlc3RNZWRpYVVJUGFydCkoaW50IHBhcnQs
IENHUmVjdCBib3VuZHMsIENHUG9pbnQgcG9pbnQpOwpAQCAtNDQsOCArMzksNiBAQCB2b2lkICgq
d2tEcmF3TWVkaWFVSVBhcnQpKGludCBwYXJ0LCBDR0NvbnRleHRSZWYgY29udGV4dCwgQ0dSZWN0
IHJlY3QsIHVuc2lnbmVkCiB2b2lkICgqd2tNZWFzdXJlTWVkaWFVSVBhcnQpKGludCBwYXJ0LCBD
R1JlY3QgKmJvdW5kcywgQ0dTaXplICpuYXR1cmFsU2l6ZSk7CiBOU1ZpZXcgKigqd2tDcmVhdGVN
ZWRpYVVJQmFja2dyb3VuZFZpZXcpKHZvaWQpOwogTlNDb250cm9sICooKndrQ3JlYXRlTWVkaWFV
SUNvbnRyb2wpKGludCk7Ci12b2lkICgqd2tXaW5kb3dTZXRBbHBoYSkoTlNXaW5kb3cgKiwgZmxv
YXQpOwotdm9pZCAoKndrV2luZG93U2V0U2NhbGVkRnJhbWUpKE5TV2luZG93ICosIE5TUmVjdCwg
TlNSZWN0KTsKIE5TVGltZUludGVydmFsICgqd2tHZXROU1VSTFJlc3BvbnNlQ2FsY3VsYXRlZEV4
cGlyYXRpb24pKE5TVVJMUmVzcG9uc2UgKnJlc3BvbnNlKTsKIEJPT0wgKCp3a0dldE5TVVJMUmVz
cG9uc2VNdXN0UmV2YWxpZGF0ZSkoTlNVUkxSZXNwb25zZSAqcmVzcG9uc2UpOwogVUludDggKCp3
a0dldE5TRXZlbnRLZXlDaGFyKShOU0V2ZW50ICopOwpAQCAtNjMsOCArNTYsNiBAQCBOU0FycmF5
ICooKndrUVRHZXRTaXRlc0luTWVkaWFEb3dubG9hZENhY2hlKSgpOwogdm9pZCAoKndrUVRDbGVh
ck1lZGlhRG93bmxvYWRDYWNoZUZvclNpdGUpKE5TU3RyaW5nICpzaXRlKTsKIHZvaWQgKCp3a1FU
Q2xlYXJNZWRpYURvd25sb2FkQ2FjaGUpKCk7CiAKLXZvaWQgKCp3a1NldERyYWdJbWFnZSkoTlNJ
bWFnZSosIE5TUG9pbnQgb2Zmc2V0KTsKLWJvb2wgKCp3a0NHQ29udGV4dElzUERGQ29udGV4dCko
Q0dDb250ZXh0UmVmKTsKIHZvaWQgKCp3a1NldENPTk5FQ1RQcm94eUZvclN0cmVhbSkoQ0ZSZWFk
U3RyZWFtUmVmLCBDRlN0cmluZ1JlZiBwcm94eUhvc3QsIENGTnVtYmVyUmVmIHByb3h5UG9ydCk7
CiB2b2lkICgqd2tTZXRDT05ORUNUUHJveHlBdXRob3JpemF0aW9uRm9yU3RyZWFtKShDRlJlYWRT
dHJlYW1SZWYsIENGU3RyaW5nUmVmIHByb3h5QXV0aG9yaXphdGlvblN0cmluZyk7CiBDRkhUVFBN
ZXNzYWdlUmVmICgqd2tDb3B5Q09OTkVDVFByb3h5UmVzcG9uc2UpKENGUmVhZFN0cmVhbVJlZiwg
Q0ZVUkxSZWYgcmVzcG9uc2VVUkwsIENGU3RyaW5nUmVmIHByb3h5SG9zdCwgQ0ZOdW1iZXJSZWYg
cHJveHlQb3J0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJX
aW5kb3dBbmltYXRpb24ubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViV2luZG93
QW5pbWF0aW9uLm1tCmluZGV4IDhhYmM4NDBiNzNjYzY0NWM4YWM0MDZkZWFmYWU5NDIyY2RjMzUz
ZTIuLmNhNTU5ZGYwYmNhOWI2MjRkZTJmYzA0MmEyZjNhMTU2Yzg3MGE4MmYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJXaW5kb3dBbmltYXRpb24ubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYldpbmRvd0FuaW1hdGlvbi5tbQpAQCAtMjks
NiArMjksNyBAQAogCiAjaW1wb3J0ICJGbG9hdENvbnZlcnNpb24uaCIKICNpbXBvcnQgIldlYkNv
cmVTeXN0ZW1JbnRlcmZhY2UuaCIKKyNpbXBvcnQgPHBhbC9zcGkvY2cvQ29yZUdyYXBoaWNzU1BJ
Lmg+CiAjaW1wb3J0IDx3dGYvQXNzZXJ0aW9ucy5oPgogI2ltcG9ydCA8d3RmL01hdGhFeHRyYXMu
aD4KIApAQCAtMTA5LDYgKzExMCw1OSBAQCAtIChOU1JlY3QpY3VycmVudEZyYW1lCiAgICAgcmV0
dXJuIHNjYWxlZFJlY3QoX2ZpbmFsRnJhbWUsIF9pbml0aWFsRnJhbWUsIFtzZWxmIGN1cnJlbnRW
YWx1ZV0pOwogfQogCitzdGF0aWMgdm9pZCBmbGlwUmVjdChOU1JlY3QgKnJlY3QpCit7CisgICAg
cmVjdC0+b3JpZ2luLnkgPSBOU01heFkoWyhOU1NjcmVlbiAqKVtbTlNTY3JlZW4gc2NyZWVuc10g
b2JqZWN0QXRJbmRleDowXSBmcmFtZV0pIC0gTlNNYXhZKCpyZWN0KTsKK30KKworc3RhdGljIENH
U0Nvbm5lY3Rpb25JRCBtYWluV2luZG93U2VydmVyQ29ubmVjdGlvbklEKCkKK3sKKyAgICBzdGF0
aWMgQ0dTQ29ubmVjdGlvbklEIGNnc0lkOworICAgIGlmICghY2dzSWQpCisgICAgICAgIGNnc0lk
ID0gQ0dTTWFpbkNvbm5lY3Rpb25JRCgpOworICAgIHJldHVybiBjZ3NJZDsKK30KKworc3RhdGlj
IHZvaWQgc2V0U2NhbGVkRnJhbWVGb3JXaW5kb3coTlNXaW5kb3cgKndpbmRvdywgTlNSZWN0IHNj
YWxlRnJhbWUsIE5TUmVjdCBub25TY2FsZWRGcmFtZSkKK3sKKyAgICBpZiAoTlNFcXVhbFJlY3Rz
KHNjYWxlRnJhbWUsIG5vblNjYWxlZEZyYW1lKSkgeworICAgICAgICBDR1NTZXRXaW5kb3dXYXJw
KG1haW5XaW5kb3dTZXJ2ZXJDb25uZWN0aW9uSUQoKSwgW3dpbmRvdyB3aW5kb3dOdW1iZXJdLCAw
LCAwLCBOVUxMKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBmbG9hdCBtZXNo
WzE2XTsKKyAgICAKKyAgICBmbGlwUmVjdCgmc2NhbGVGcmFtZSk7CisgICAgZmxpcFJlY3QoJm5v
blNjYWxlZEZyYW1lKTsKKyAgICAKKyAgICAvLyB0b3AtbGVmdCBwb2ludCAodG8gYW5kIGZyb20p
CisgICAgbWVzaFswXSA9IDA7CisgICAgbWVzaFsxXSA9IDA7CisgICAgbWVzaFsyXSA9IE5TTWlu
WChzY2FsZUZyYW1lKTsKKyAgICBtZXNoWzNdID0gTlNNaW5ZKHNjYWxlRnJhbWUpOworICAgIAor
ICAgIC8vIHRvcC1yaWdodCBwb2ludCAodG8gYW5kIGZyb20pCisgICAgbWVzaFs0XSA9IE5TV2lk
dGgobm9uU2NhbGVkRnJhbWUpOworICAgIG1lc2hbNV0gPSAwOworICAgIG1lc2hbNl0gPSBOU01h
eFgoc2NhbGVGcmFtZSk7CisgICAgbWVzaFs3XSA9IE5TTWluWShzY2FsZUZyYW1lKTsKKyAgICAK
KyAgICAvLyBib3R0b20tbGVmdCAodG8gYW5kIGZyb20pCisgICAgbWVzaFs4XSA9IDA7CisgICAg
bWVzaFs5XSA9IE5TSGVpZ2h0KG5vblNjYWxlZEZyYW1lKTsKKyAgICBtZXNoWzEwXSA9IE5TTWlu
WChzY2FsZUZyYW1lKTsKKyAgICBtZXNoWzExXSA9IE5TTWF4WShzY2FsZUZyYW1lKTsKKyAgICAK
KyAgICAvLyBib3R0b20tcmlnaHQgKHRvIGFuZCBmcm9tKQorICAgIG1lc2hbMTJdID0gTlNXaWR0
aChub25TY2FsZWRGcmFtZSk7CisgICAgbWVzaFsxM10gPSBOU0hlaWdodChub25TY2FsZWRGcmFt
ZSk7CisgICAgbWVzaFsxNF0gPSBOU01heFgoc2NhbGVGcmFtZSk7CisgICAgbWVzaFsxNV0gPSBO
U01heFkoc2NhbGVGcmFtZSk7CisgICAgCisgICAgLy8gQXBwbHkgdGhlIHdhcnAuCisgICAgQ0dT
U2V0V2luZG93V2FycChtYWluV2luZG93U2VydmVyQ29ubmVjdGlvbklEKCksIFt3aW5kb3cgd2lu
ZG93TnVtYmVyXSwgMiwgMiwgbWVzaCk7Cit9CisKIC0gKHZvaWQpc2V0Q3VycmVudFByb2dyZXNz
OihOU0FuaW1hdGlvblByb2dyZXNzKXByb2dyZXNzCiB7CiAgICAgaWYgKCFfd2luZG93KQpAQCAt
MTE3LDcgKzE3MSw3IEBAIC0gKHZvaWQpc2V0Q3VycmVudFByb2dyZXNzOihOU0FuaW1hdGlvblBy
b2dyZXNzKXByb2dyZXNzCiAgICAgW3N1cGVyIHNldEN1cnJlbnRQcm9ncmVzczpwcm9ncmVzc107
CiAKICAgICBOU1JlY3QgY3VycmVudFJlY3QgPSBbc2VsZiBjdXJyZW50RnJhbWVdOwotICAgIHdr
V2luZG93U2V0U2NhbGVkRnJhbWUoX3dpbmRvdywgY3VycmVudFJlY3QsIF9yZWFsRnJhbWUpOwor
ICAgIHNldFNjYWxlZEZyYW1lRm9yV2luZG93KF93aW5kb3csIGN1cnJlbnRSZWN0LCBfcmVhbEZy
YW1lKTsKICAgICBbX3N1YkFuaW1hdGlvbiBzZXRDdXJyZW50UHJvZ3Jlc3M6cHJvZ3Jlc3NdOwog
fQogCkBAIC0yMTEsNyArMjY1LDcgQEAgLSAodm9pZClzZXRDdXJyZW50UHJvZ3Jlc3M6KE5TQW5p
bWF0aW9uUHJvZ3Jlc3MpcHJvZ3Jlc3MKICAgICBBU1NFUlQoX3dpbmRvdyk7CiAgICAgW3N1cGVy
IHNldEN1cnJlbnRQcm9ncmVzczpwcm9ncmVzc107CiAKLSAgICB3a1dpbmRvd1NldEFscGhhKF93
aW5kb3csIFtzZWxmIGN1cnJlbnRBbHBoYV0pOworICAgIENHU1NldFdpbmRvd0FscGhhKG1haW5X
aW5kb3dTZXJ2ZXJDb25uZWN0aW9uSUQoKSwgX3dpbmRvdy53aW5kb3dOdW1iZXIsIFtzZWxmIGN1
cnJlbnRBbHBoYV0pOwogfQogCiAtICh2b2lkKXNldFdpbmRvdzooTlNXaW5kb3cqKXdpbmRvdwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL21hYy9QbHVnaW5Qcm9jZXNz
TWFjLm1tIGIvU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL21hYy9QbHVnaW5Qcm9jZXNzTWFj
Lm1tCmluZGV4IGQ4NjAzNzg2N2EyZjFhZmEyNWVjNTI2MzA2ZTE0ZDk2NGNkNzdlNmQuLmE5NjZk
MTc2MzNhNGI5ZTE0YzQwZGE5NjMwYmU0NmRhYmJkZTlmZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvUGx1Z2luUHJvY2Vzcy9tYWMvUGx1Z2luUHJvY2Vzc01hYy5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1BsdWdpblByb2Nlc3MvbWFjL1BsdWdpblByb2Nlc3NNYWMubW0KQEAgLTUzMSw3ICs1
MzEsMTAgQEAgdm9pZCBQbHVnaW5Qcm9jZXNzOjpwbGF0Zm9ybUluaXRpYWxpemVQcm9jZXNzKGNv
bnN0IENoaWxkUHJvY2Vzc0luaXRpYWxpemF0aW9uUGEKIAogICAgIC8vIEZJWE1FOiBJdCB3b3Vs
ZCBiZSBiZXR0ZXIgdG8gcHJveHkgU2V0Q3Vyc29yIGNhbGxzIG92ZXIgdG8gdGhlIFVJIHByb2Nl
c3MgaW5zdGVhZCBvZgogICAgIC8vIGFsbG93aW5nIHBsdWctaW5zIHRvIGNoYW5nZSB0aGUgbW91
c2UgY3Vyc29yIGF0IGFueSB0aW1lLgotICAgIFdLRW5hYmxlU2V0dGluZ0N1cnNvcldoZW5JbkJh
Y2tncm91bmQoKTsKKyAgICAvLyBGSVhNRTogU2V0c0N1cnNvckluQmFja2dyb3VuZCBjb25uZWN0
aW9uIHByb3BlcnR5IGlzIGRlcHJlY2F0ZWQgaW4gZmF2b3Igb2Yga0NHU1NldHNDdXJzb3JJbkJh
Y2tncm91bmRUYWdCaXQgd2luZG93IHRhZyBiaXQuCisgICAgLy8gPHJkYXI6Ly9wcm9ibGVtLzc3
NTI0MjI+IGFza3MgZm9yIGFuIEFQSSB0byBzZXQgY3Vyc29yIGZyb20gYmFja2dyb3VuZCBwcm9j
ZXNzZXMuCisgICAgQ0dTQ29ubmVjdGlvbklEIGNpZCA9IENHU01haW5Db25uZWN0aW9uSUQoKTsK
KyAgICBDR1NTZXRDb25uZWN0aW9uUHJvcGVydHkoY2lkLCBjaWQsIENGU1RSKCJTZXRzQ3Vyc29y
SW5CYWNrZ3JvdW5kIiksIChDRlR5cGVSZWYpa0NGQm9vbGVhblRydWUpOwogCiAgICAgUmV0YWlu
UHRyPENGVVJMUmVmPiBwbHVnaW5VUkwgPSBhZG9wdENGKENGVVJMQ3JlYXRlV2l0aEZpbGVTeXN0
ZW1QYXRoKDAsIG1fcGx1Z2luUGF0aC5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBrQ0ZVUkxQT1NJ
WFBhdGhTdHlsZSwgZmFsc2UpKTsKICAgICBpZiAoIXBsdWdpblVSTCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XaW5kb3dTZXJ2ZXJDb25uZWN0aW9uLmggYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2luZG93U2VydmVyQ29ubmVjdGlvbi5oCmluZGV4IDgz
OGEzNGZiNWMyZDQ0ZWVlNTQ2NGU1N2VkYzcwZTEwYWRiZDNiMjAuLmU3YjUxOGM2YzVlYjBiMDYy
ZDg5YTkxY2E3MDU3N2JhODRlYjA1MTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL21hYy9XaW5kb3dTZXJ2ZXJDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvbWFjL1dpbmRvd1NlcnZlckNvbm5lY3Rpb24uaApAQCAtNDEsOSArNDEsNiBAQCBwcml2
YXRlOgogICAgIHZvaWQgd2luZG93U2VydmVyQ29ubmVjdGlvblN0YXRlQ2hhbmdlZCgpOwogCiAg
ICAgdm9pZCBhcHBsaWNhdGlvbldpbmRvd01vZGlmaWNhdGlvbnNTdG9wcGVkKGJvb2wgc3RvcHBl
ZCk7Ci0KLSAgICBzdGF0aWMgdm9pZCBhcHBsaWNhdGlvbldpbmRvd01vZGlmaWNhdGlvbnNTdGFy
dGVkKHVpbnQzMl90LCB2b2lkKiwgdWludDMyX3QsIHZvaWQqLCB1aW50MzJfdCk7Ci0gICAgc3Rh
dGljIHZvaWQgYXBwbGljYXRpb25XaW5kb3dNb2RpZmljYXRpb25zU3RvcHBlZCh1aW50MzJfdCwg
dm9pZCosIHVpbnQzMl90LCB2b2lkKiwgdWludDMyX3QpOwogI2VuZGlmCiAKICAgICBib29sIG1f
YXBwbGljYXRpb25XaW5kb3dNb2RpZmljYXRpb25zSGF2ZVN0b3BwZWQ7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2luZG93U2VydmVyQ29ubmVjdGlvbi5tbSBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XaW5kb3dTZXJ2ZXJDb25uZWN0aW9uLm1tCmluZGV4
IDgxOTUzNWMyYWMxMjljOGQ1MjEyMThjOTc1NWM4NGI2MWQ0NGYyODUuLmE5ZTVlZDVkNjAzNmE1
Njc2MDYxNTNiZTk2MGEzNGUxYWIzNjA5NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL21hYy9XaW5kb3dTZXJ2ZXJDb25uZWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL21hYy9XaW5kb3dTZXJ2ZXJDb25uZWN0aW9uLm1tCkBAIC0yOCw2ICsyOCw3IEBA
CiAKICNpbXBvcnQgIldlYktpdFN5c3RlbUludGVyZmFjZS5oIgogI2ltcG9ydCAiV2ViUHJvY2Vz
c1Bvb2wuaCIKKyNpbXBvcnQgPHBhbC9zcGkvY2cvQ29yZUdyYXBoaWNzU1BJLmg+CiAKIG5hbWVz
cGFjZSBXZWJLaXQgewogCkBAIC00MSwxNiArNDIsNiBAQCB2b2lkIFdpbmRvd1NlcnZlckNvbm5l
Y3Rpb246OmFwcGxpY2F0aW9uV2luZG93TW9kaWZpY2F0aW9uc1N0b3BwZWQoYm9vbCBzdG9wcGVk
KQogICAgIHdpbmRvd1NlcnZlckNvbm5lY3Rpb25TdGF0ZUNoYW5nZWQoKTsKIH0KIAotdm9pZCBX
aW5kb3dTZXJ2ZXJDb25uZWN0aW9uOjphcHBsaWNhdGlvbldpbmRvd01vZGlmaWNhdGlvbnNTdGFy
dGVkKHVpbnQzMl90LCB2b2lkKiwgdWludDMyX3QsIHZvaWQqLCB1aW50MzJfdCkKLXsKLSAgICBX
aW5kb3dTZXJ2ZXJDb25uZWN0aW9uOjpzaW5nbGV0b24oKS5hcHBsaWNhdGlvbldpbmRvd01vZGlm
aWNhdGlvbnNTdG9wcGVkKGZhbHNlKTsKLX0KLQotdm9pZCBXaW5kb3dTZXJ2ZXJDb25uZWN0aW9u
OjphcHBsaWNhdGlvbldpbmRvd01vZGlmaWNhdGlvbnNTdG9wcGVkKHVpbnQzMl90LCB2b2lkKiwg
dWludDMyX3QsIHZvaWQqLCB1aW50MzJfdCkKLXsKLSAgICBXaW5kb3dTZXJ2ZXJDb25uZWN0aW9u
OjpzaW5nbGV0b24oKS5hcHBsaWNhdGlvbldpbmRvd01vZGlmaWNhdGlvbnNTdG9wcGVkKHRydWUp
OwotfQotCiB2b2lkIFdpbmRvd1NlcnZlckNvbm5lY3Rpb246OndpbmRvd1NlcnZlckNvbm5lY3Rp
b25TdGF0ZUNoYW5nZWQoKQogewogICAgIGZvciAoYXV0byogcHJvY2Vzc1Bvb2wgOiBXZWJQcm9j
ZXNzUG9vbDo6YWxsUHJvY2Vzc1Bvb2xzKCkpCkBAIC02NSwyMyArNTYsNDggQEAgV2luZG93U2Vy
dmVyQ29ubmVjdGlvbiYgV2luZG93U2VydmVyQ29ubmVjdGlvbjo6c2luZ2xldG9uKCkKICAgICBy
ZXR1cm4gd2luZG93U2VydmVyQ29ubmVjdGlvbjsKIH0KIAorI2lmIEhBVkUoV0lORE9XX1NFUlZF
Ul9PQ0NMVVNJT05fTk9USUZJQ0FUSU9OUykKK3N0YXRpYyBib29sIHJlZ2lzdGVyT2NjbHVzaW9u
Tm90aWZpY2F0aW9uSGFuZGxlcihDR1NOb3RpZmljYXRpb25UeXBlIHR5cGUsIENHU05vdGlmeUNv
bm5lY3Rpb25Qcm9jUHRyIGhhbmRsZXIpCit7CisgICAgQ0dTQ29ubmVjdGlvbklEIG1haW5Db25u
ZWN0aW9uID0gQ0dTTWFpbkNvbm5lY3Rpb25JRCgpOworICAgIHN0YXRpYyBib29sIG5vdGlmaWNh
dGlvbnNFbmFibGVkOworICAgIGlmICghbm90aWZpY2F0aW9uc0VuYWJsZWQpIHsKKyAgICAgICAg
aWYgKENHU1BhY2thZ2VzRW5hYmxlQ29ubmVjdGlvbk9jY2x1c2lvbk5vdGlmaWNhdGlvbnMobWFp
bkNvbm5lY3Rpb24sIHRydWUsIG51bGxwdHIpICE9IGtDR0Vycm9yU3VjY2VzcykKKyAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYgKENHU1BhY2thZ2VzRW5hYmxlQ29ubmVjdGlv
bldpbmRvd01vZGlmaWNhdGlvbk5vdGlmaWNhdGlvbnMobWFpbkNvbm5lY3Rpb24sIHRydWUsIG51
bGxwdHIpICE9IGtDR0Vycm9yU3VjY2VzcykKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgbm90aWZpY2F0aW9uc0VuYWJsZWQgPSB0cnVlOworICAgIH0KKworICAgIHJldHVybiBD
R1NSZWdpc3RlckNvbm5lY3Rpb25Ob3RpZnlQcm9jKG1haW5Db25uZWN0aW9uLCBoYW5kbGVyLCB0
eXBlLCBudWxscHRyKSA9PSBrQ0dFcnJvclN1Y2Nlc3M7Cit9CisjZW5kaWYKKwogV2luZG93U2Vy
dmVyQ29ubmVjdGlvbjo6V2luZG93U2VydmVyQ29ubmVjdGlvbigpCiAgICAgOiBtX2FwcGxpY2F0
aW9uV2luZG93TW9kaWZpY2F0aW9uc0hhdmVTdG9wcGVkKGZhbHNlKQogewogI2lmIEhBVkUoV0lO
RE9XX1NFUlZFUl9PQ0NMVVNJT05fTk9USUZJQ0FUSU9OUykKICAgICBzdHJ1Y3QgT2NjbHVzaW9u
Tm90aWZpY2F0aW9uSGFuZGxlciB7Ci0gICAgICAgIFdLT2NjbHVzaW9uTm90aWZpY2F0aW9uVHlw
ZSBub3RpZmljYXRpb25UeXBlOwotICAgICAgICBXS09jY2x1c2lvbk5vdGlmaWNhdGlvbkhhbmRs
ZXIgaGFuZGxlcjsKKyAgICAgICAgQ0dTTm90aWZpY2F0aW9uVHlwZSBub3RpZmljYXRpb25UeXBl
OworICAgICAgICBDR1NOb3RpZnlDb25uZWN0aW9uUHJvY1B0ciBoYW5kbGVyOwogICAgICAgICBj
b25zdCBjaGFyKiBuYW1lOwogICAgIH07CiAKKyAgICBzdGF0aWMgYXV0byB3aW5kb3dNb2RpZmlj
YXRpb25zU3RhcnRlZCA9IFtdKENHU05vdGlmaWNhdGlvblR5cGUsIHZvaWQqLCB1aW50MzJfdCwg
dm9pZCosIENHU0Nvbm5lY3Rpb25JRCkgeworICAgICAgICBXaW5kb3dTZXJ2ZXJDb25uZWN0aW9u
OjpzaW5nbGV0b24oKS5hcHBsaWNhdGlvbldpbmRvd01vZGlmaWNhdGlvbnNTdG9wcGVkKGZhbHNl
KTsKKyAgICB9OworCisgICAgc3RhdGljIGF1dG8gd2luZG93TW9kaWZpY2F0aW9uc1N0b3BwZWQg
PSBbXShDR1NOb3RpZmljYXRpb25UeXBlLCB2b2lkKiwgdWludDMyX3QsIHZvaWQqLCBDR1NDb25u
ZWN0aW9uSUQpIHsKKyAgICAgICAgV2luZG93U2VydmVyQ29ubmVjdGlvbjo6c2luZ2xldG9uKCku
YXBwbGljYXRpb25XaW5kb3dNb2RpZmljYXRpb25zU3RvcHBlZCh0cnVlKTsKKyAgICB9OworCiAg
ICAgc3RhdGljIGNvbnN0IE9jY2x1c2lvbk5vdGlmaWNhdGlvbkhhbmRsZXIgb2NjbHVzaW9uTm90
aWZpY2F0aW9uSGFuZGxlcnNbXSA9IHsKLSAgICAgICAgeyBXS09jY2x1c2lvbk5vdGlmaWNhdGlv
blR5cGVBcHBsaWNhdGlvbldpbmRvd01vZGlmaWNhdGlvbnNTdGFydGVkLCBhcHBsaWNhdGlvbldp
bmRvd01vZGlmaWNhdGlvbnNTdGFydGVkLCAiQXBwbGljYXRpb24gV2luZG93IE1vZGlmaWNhdGlv
bnMgU3RhcnRlZCIgfSwKLSAgICAgICAgeyBXS09jY2x1c2lvbk5vdGlmaWNhdGlvblR5cGVBcHBs
aWNhdGlvbldpbmRvd01vZGlmaWNhdGlvbnNTdG9wcGVkLCBhcHBsaWNhdGlvbldpbmRvd01vZGlm
aWNhdGlvbnNTdG9wcGVkLCAiQXBwbGljYXRpb24gV2luZG93IE1vZGlmaWNhdGlvbnMgU3RvcHBl
ZCIgfSwKKyAgICAgICAgeyBrQ0dTQ29ubmVjdGlvbldpbmRvd01vZGlmaWNhdGlvbnNTdGFydGVk
LCB3aW5kb3dNb2RpZmljYXRpb25zU3RhcnRlZCwgIkFwcGxpY2F0aW9uIFdpbmRvdyBNb2RpZmlj
YXRpb25zIFN0YXJ0ZWQiIH0sCisgICAgICAgIHsga0NHU0Nvbm5lY3Rpb25XaW5kb3dNb2RpZmlj
YXRpb25zU3RvcHBlZCwgd2luZG93TW9kaWZpY2F0aW9uc1N0b3BwZWQsICJBcHBsaWNhdGlvbiBX
aW5kb3cgTW9kaWZpY2F0aW9ucyBTdG9wcGVkIiB9LAogICAgIH07CiAKICAgICBmb3IgKGNvbnN0
IGF1dG8mIG9jY2x1c2lvbk5vdGlmaWNhdGlvbkhhbmRsZXIgOiBvY2NsdXNpb25Ob3RpZmljYXRp
b25IYW5kbGVycykgewotICAgICAgICBib29sIHJlc3VsdCA9IFdLUmVnaXN0ZXJPY2NsdXNpb25O
b3RpZmljYXRpb25IYW5kbGVyKG9jY2x1c2lvbk5vdGlmaWNhdGlvbkhhbmRsZXIubm90aWZpY2F0
aW9uVHlwZSwgb2NjbHVzaW9uTm90aWZpY2F0aW9uSGFuZGxlci5oYW5kbGVyKTsKKyAgICAgICAg
Ym9vbCByZXN1bHQgPSByZWdpc3Rlck9jY2x1c2lvbk5vdGlmaWNhdGlvbkhhbmRsZXIob2NjbHVz
aW9uTm90aWZpY2F0aW9uSGFuZGxlci5ub3RpZmljYXRpb25UeXBlLCBvY2NsdXNpb25Ob3RpZmlj
YXRpb25IYW5kbGVyLmhhbmRsZXIpOwogICAgICAgICBVTlVTRURfUEFSQU0ocmVzdWx0KTsKICAg
ICAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShyZXN1bHQsICJSZWdpc3RyYXRpb24gb2YgXCIlc1wi
IG5vdGlmaWNhdGlvbiBoYW5kbGVyIGZhaWxlZC5cbiIsIG9jY2x1c2lvbk5vdGlmaWNhdGlvbkhh
bmRsZXIubmFtZSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L21hYy9XZWJTeXN0ZW1JbnRlcmZhY2UubW0gYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYlN5c3RlbUludGVyZmFjZS5tbQppbmRl
eCBkMThhNDQwZGQ3MjUzOWM2YTU2OTRiNzQ2N2Y4YTY5MTg4NTFkOTllLi41YjA5NzljNjg1YWQw
ODAwMmY3YzJhMGY3YjU4ZDE3ZmI4NmNhN2M1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYlN5c3RlbUludGVyZmFjZS5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYlN5c3RlbUludGVy
ZmFjZS5tbQpAQCAtMzcsMjEgKzM3LDExIEBAIHZvaWQgSW5pdFdlYkNvcmVTeXN0ZW1JbnRlcmZh
Y2Uodm9pZCkKICAgICAKICAgICBkaXNwYXRjaF9vbmNlKCZpbml0T25jZSwgXnsKICAgICAgICAg
SU5JVChDQUxheWVyRW51bWVyYXRlUmVjdHNCZWluZ0RyYXduV2l0aEJsb2NrKTsKLSAgICAgICAg
SU5JVChDR1BhdHRlcm5DcmVhdGVXaXRoSW1hZ2VBbmRUcmFuc2Zvcm0pOwotI2lmICFQTEFURk9S
TShJT1MpCi0gICAgICAgIElOSVQoQ0dDb250ZXh0RHJhd3NXaXRoQ29ycmVjdFNoYWRvd09mZnNl
dHMpOwotI2VuZGlmCiAgICAgICAgIElOSVQoQ29weUNPTk5FQ1RQcm94eVJlc3BvbnNlKTsKICNp
ZiAhUExBVEZPUk0oSU9TKQogICAgICAgICBJTklUKERyYXdCZXplbGVkVGV4dEFyZWEpOwotICAg
ICAgICBJTklUKERyYXdGb2N1c1JpbmcpOwotICAgICAgICBJTklUKERyYXdGb2N1c1JpbmdBdFRp
bWUpOwotICAgICAgICBJTklUKERyYXdDZWxsRm9jdXNSaW5nV2l0aEZyYW1lQXRUaW1lKTsKICAg
ICAgICAgSU5JVChEcmF3TWVkaWFTbGlkZXJUcmFjayk7CiAgICAgICAgIElOSVQoRHJhd01lZGlh
VUlQYXJ0KTsKLSNlbmRpZgotICAgICAgICBJTklUKENHQ29udGV4dElzUERGQ29udGV4dCk7Ci0j
aWYgIVBMQVRGT1JNKElPUykKICAgICAgICAgSU5JVChHZXROU0V2ZW50S2V5Q2hhcik7CiAgICAg
ICAgIElOSVQoSGl0VGVzdE1lZGlhVUlQYXJ0KTsKICAgICAgICAgSU5JVChNZWFzdXJlTWVkaWFV
SVBhcnQpOwpAQCAtNzAsMTYgKzYwLDExIEBAIHZvaWQgSW5pdFdlYkNvcmVTeXN0ZW1JbnRlcmZh
Y2Uodm9pZCkKICNlbmRpZgogICAgICAgICBJTklUKFNldENPTk5FQ1RQcm94eUF1dGhvcml6YXRp
b25Gb3JTdHJlYW0pOwogICAgICAgICBJTklUKFNldENPTk5FQ1RQcm94eUZvclN0cmVhbSk7Ci0j
aWYgIVBMQVRGT1JNKElPUykKLSAgICAgICAgSU5JVChTZXREcmFnSW1hZ2UpOwotI2VuZGlmCiAK
ICNpZiAhUExBVEZPUk0oSU9TKQogICAgICAgICBJTklUKEV4ZWN1dGFibGVXYXNMaW5rZWRPbk9y
QmVmb3JlU25vd0xlb3BhcmQpOwogICAgICAgICBJTklUKENvcHlEZWZhdWx0U2VhcmNoUHJvdmlk
ZXJEaXNwbGF5TmFtZSk7CiAgICAgICAgIElOSVQoQ3Vyc29yKTsKLSAgICAgICAgSU5JVChXaW5k
b3dTZXRTY2FsZWRGcmFtZSk7Ci0gICAgICAgIElOSVQoV2luZG93U2V0QWxwaGEpOwogICAgICAg
ICBJTklUKFNwZWVjaFN5bnRoZXNpc0dldFZvaWNlSWRlbnRpZmllcnMpOwogICAgICAgICBJTklU
KFNwZWVjaFN5bnRoZXNpc0dldERlZmF1bHRWb2ljZUlkZW50aWZpZXJGb3JMb2NhbGUpOwogICAg
ICAgICBJTklUKE5TRWxhc3RpY0RlbHRhRm9yVGltZURlbHRhKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0NhcmJvbi9ISVdlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9DYXJib24vSElXZWJWaWV3Lm1tCmluZGV4IDM0NTg1YzI1MmMzYjE4Y2FjZDZlMDdh
ZDVlOTQ0ODc3OWQ4YmU0NTcuLmE5ZjZlYWVkNzIwMzg4NDczZWUzNmFhMDFkYjFkOWIzNDMxZDZl
MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NhcmJvbi9ISVdlYlZpZXcu
bW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2FyYm9uL0hJV2ViVmlldy5tbQpAQCAt
ODUsNiArODUsMjEgQEAgLSAoaW50KXRhZwogCiBAZW5kCiAKK0BpbnRlcmZhY2UgTlNXaW5kb3dH
cmFwaGljc0NvbnRleHQgKCkKKy0gKHZvaWQpX3dlYl9zZXRHcmFwaGljc1BvcnQ6KENHQ29udGV4
dFJlZiljb250ZXh0OworQGVuZAorCitAaW1wbGVtZW50YXRpb24gTlNXaW5kb3dHcmFwaGljc0Nv
bnRleHQgKCkKKworLSAodm9pZClfd2ViX3NldEdyYXBoaWNzUG9ydDooQ0dDb250ZXh0UmVmKWNv
bnRleHQKK3sKKyAgICBDR0NvbnRleHRSZXRhaW4oY29udGV4dCk7CisgICAgQ0dDb250ZXh0UmVs
ZWFzZShfY2dzQ29udGV4dCk7CisgICAgX2Nnc0NvbnRleHQgPSBjb250ZXh0OworfQorCitAZW5k
CisKIHN0cnVjdCBISVdlYlZpZXcKIHsKICAgICBISVZpZXdSZWYJCQkJCQkJZlZpZXdSZWY7CkBA
IC0yOTAsNiArMzA1LDIyIEBAIEdldEJlaGF2aW9ycygpCiAJcmV0dXJuIGtDb250cm9sU3VwcG9y
dHNEYXRhQWNjZXNzIHwga0NvbnRyb2xTdXBwb3J0c0dldFJlZ2lvbiB8IGtDb250cm9sR2V0c0Zv
Y3VzT25DbGljazsKIH0KIAorc3RhdGljIENHQ29udGV4dFJlZiBvdmVycmlkZUNHQ29udGV4dChO
U1dpbmRvdyAqd2luZG93LCBDR0NvbnRleHRSZWYgY29udGV4dCkKK3sKKyAgICBOU1dpbmRvd0dy
YXBoaWNzQ29udGV4dCAqZ3JhcGhpY3NDb250ZXh0ID0gKE5TV2luZG93R3JhcGhpY3NDb250ZXh0
ICopW3dpbmRvdyBncmFwaGljc0NvbnRleHRdOworICAgIENHQ29udGV4dFJlZiBzYXZlZENvbnRl
eHQgPSAoQ0dDb250ZXh0UmVmKVtncmFwaGljc0NvbnRleHQgZ3JhcGhpY3NQb3J0XTsKKyAgICBD
R0NvbnRleHRSZXRhaW4oc2F2ZWRDb250ZXh0KTsKKyAgICBbZ3JhcGhpY3NDb250ZXh0IF93ZWJf
c2V0R3JhcGhpY3NQb3J0OmNvbnRleHRdOworICAgIHJldHVybiBzYXZlZENvbnRleHQ7Cit9CisK
K3N0YXRpYyB2b2lkIHJlc3RvcmVDR0NvbnRleHQoTlNXaW5kb3cgKndpbmRvdywgQ0dDb250ZXh0
UmVmIHNhdmVkQ29udGV4dCkKK3sKKyAgICBOU1dpbmRvd0dyYXBoaWNzQ29udGV4dCAqZ3JhcGhp
Y3NDb250ZXh0ID0gKE5TV2luZG93R3JhcGhpY3NDb250ZXh0ICopW3dpbmRvdyBncmFwaGljc0Nv
bnRleHRdOworICAgIFtncmFwaGljc0NvbnRleHQgX3dlYl9zZXRHcmFwaGljc1BvcnQ6c2F2ZWRD
b250ZXh0XTsKKyAgICBDR0NvbnRleHRSZWxlYXNlKHNhdmVkQ29udGV4dCk7Cit9CisKIC8vLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogLy8gRHJhdwogLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCkBAIC0zMjEsNyArMzUyLDcgQEAgRHJhdyggSElXZWJWaWV3KiBpblZpZXcsIFJnbkhhbmRs
ZSBsaW1pdFJnbiwgQ0dDb250ZXh0UmVmIGluQ29udGV4dCApCiAKIAlISVZpZXdHZXRCb3VuZHMo
IGluVmlldy0+ZlZpZXdSZWYsICZib3VuZHMgKTsKIAotICAgIENHQ29udGV4dFJlZiBzYXZlZENv
bnRleHQgPSBXS05TV2luZG93T3ZlcnJpZGVDR0NvbnRleHQoaW5WaWV3LT5mS2l0V2luZG93LCBp
bkNvbnRleHQpOworICAgIENHQ29udGV4dFJlZiBzYXZlZENvbnRleHQgPSBvdmVycmlkZUNHQ29u
dGV4dChpblZpZXctPmZLaXRXaW5kb3csIGluQ29udGV4dCk7CiAgICAgW05TR3JhcGhpY3NDb250
ZXh0IHNldEN1cnJlbnRDb250ZXh0OltpblZpZXctPmZLaXRXaW5kb3cgZ3JhcGhpY3NDb250ZXh0
XV07CiAKIAlHZXRSZWdpb25Cb3VuZHMoIGxpbWl0UmduLCAmZHJhd1JlY3QgKTsKQEAgLTM1MSw3
ICszODIsNyBAQCBEcmF3KCBISVdlYlZpZXcqIGluVmlldywgUmduSGFuZGxlIGxpbWl0UmduLCBD
R0NvbnRleHRSZWYgaW5Db250ZXh0ICkKICAgICBlbHNlCiAgICAgICAgIFtpblZpZXctPmZXZWJW
aWV3IGRpc3BsYXlSZWN0OiooTlNSZWN0KikmaGlSZWN0XTsKIAotICAgIFdLTlNXaW5kb3dSZXN0
b3JlQ0dDb250ZXh0KGluVmlldy0+ZktpdFdpbmRvdywgc2F2ZWRDb250ZXh0KTsKKyAgICByZXN0
b3JlQ0dDb250ZXh0KGluVmlldy0+ZktpdFdpbmRvdywgc2F2ZWRDb250ZXh0KTsKIAogICAgIGlm
ICggIWluVmlldy0+ZklzQ29tcG9zaXRlZCApCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvV2ViSG9zdGVkTmV0c2NhcGVQbHVnaW5WaWV3
Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvV2ViSG9zdGVkTmV0
c2NhcGVQbHVnaW5WaWV3Lm1tCmluZGV4IDllMjA0NGUyNmUxMzkwMjFlYjhjYTYzMzYyNTVmMmM4
MzNjMWI4YjIuLjY5NWE1Y2Y1MjczNzNkMzA5YTgzYjY0ZDZmMWQwMTAwZWQzYTQwOGEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL1dlYkhvc3RlZE5l
dHNjYXBlUGx1Z2luVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5z
L0hvc3RlZC9XZWJIb3N0ZWROZXRzY2FwZVBsdWdpblZpZXcubW0KQEAgLTc2LDcgKzc2LDcgQEAg
KyAodm9pZClpbml0aWFsaXplCiAgICAgV1RGOjppbml0aWFsaXplTWFpblRocmVhZFRvUHJvY2Vz
c01haW5UaHJlYWQoKTsKICAgICBSdW5Mb29wOjppbml0aWFsaXplTWFpblJ1bkxvb3AoKTsKICNl
bmRpZgotICAgIFdLU2VuZFVzZXJDaGFuZ2VOb3RpZmljYXRpb25zKCk7CisgICAgc2VuZFVzZXJD
aGFuZ2VOb3RpZmljYXRpb25zKCk7CiB9CiAKIC0gKGlkKWluaXRXaXRoRnJhbWU6KE5TUmVjdClm
cmFtZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJCYXNl
TmV0c2NhcGVQbHVnaW5WaWV3LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dl
YkJhc2VOZXRzY2FwZVBsdWdpblZpZXcuaAppbmRleCBjMjIyM2FiNmQyNjc1MWYzOGMzODk1ODFi
ZDM0OWRlOTgxNGMxNWIxLi5jZDQzMGQzNjY5NzFlYzlmZTJlYTBkNDQwNTkzYjU4MGM5Y2EyZTI3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYkJhc2VOZXRz
Y2FwZVBsdWdpblZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dl
YkJhc2VOZXRzY2FwZVBsdWdpblZpZXcuaApAQCAtMTM0LDYgKzEzNCw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIG5hbWVzcGFjZSBXZWJLaXQgewogYm9vbCBnZXRBdXRoZW50aWNhdGlvbkluZm8o
Y29uc3QgY2hhciogcHJvdG9jb2xTdHIsIGNvbnN0IGNoYXIqIGhvc3RTdHIsIGludDMyX3QgcG9y
dCwgY29uc3QgY2hhciogc2NoZW1lU3RyLCBjb25zdCBjaGFyKiByZWFsbVN0ciwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFdURjo6Q1N0cmluZyYgdXNlcm5hbWUsIFdURjo6Q1N0cmluZyYg
cGFzc3dvcmQpOwordm9pZCBzZW5kVXNlckNoYW5nZU5vdGlmaWNhdGlvbnMoKTsKIH0gCiAKICNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJCYXNl
TmV0c2NhcGVQbHVnaW5WaWV3Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9X
ZWJCYXNlTmV0c2NhcGVQbHVnaW5WaWV3Lm1tCmluZGV4IDY0ZGU5MDEwZWJkYjBiMDY5ZDZmODYz
YTNmZWYyZmZkN2I1ZDQzMzguLmJlMWMzMGIzZjMwOWRhNjg1NWYzY2QxZDI3YWI0NzA4OWFlZDJj
MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViQmFzZU5l
dHNjYXBlUGx1Z2luVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5z
L1dlYkJhc2VOZXRzY2FwZVBsdWdpblZpZXcubW0KQEAgLTU1LDYgKzU1LDcgQEAKICNpbXBvcnQg
PFdlYkNvcmUvU2VjdXJpdHlPcmlnaW4uaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViQ29yZU9iakNF
eHRyYXMuaD4KICNpbXBvcnQgPFdlYktpdExlZ2FjeS9ET01Qcml2YXRlLmg+CisjaW1wb3J0IDxw
YWwvc3BpL2NnL0NvcmVHcmFwaGljc1NQSS5oPgogI2ltcG9ydCA8cnVudGltZS9Jbml0aWFsaXpl
VGhyZWFkaW5nLmg+CiAjaW1wb3J0IDx3dGYvQXNzZXJ0aW9ucy5oPgogI2ltcG9ydCA8d3RmL01h
aW5UaHJlYWQuaD4KQEAgLTczLDcgKzc0LDcgQEAgKyAodm9pZClpbml0aWFsaXplCiAgICAgSlND
Ojppbml0aWFsaXplVGhyZWFkaW5nKCk7CiAgICAgV1RGOjppbml0aWFsaXplTWFpblRocmVhZFRv
UHJvY2Vzc01haW5UaHJlYWQoKTsKICAgICBSdW5Mb29wOjppbml0aWFsaXplTWFpblJ1bkxvb3Ao
KTsKLSAgICBXS1NlbmRVc2VyQ2hhbmdlTm90aWZpY2F0aW9ucygpOworICAgIFdlYktpdDo6c2Vu
ZFVzZXJDaGFuZ2VOb3RpZmljYXRpb25zKCk7CiB9CiAKIC0gKGlkKWluaXRXaXRoRnJhbWU6KE5T
UmVjdClmcmFtZQpAQCAtOTAwLDYgKzkwMSwyMyBAQCBib29sIGdldEF1dGhlbnRpY2F0aW9uSW5m
byhjb25zdCBjaGFyKiBwcm90b2NvbFN0ciwgY29uc3QgY2hhciogaG9zdFN0ciwgaW50MzJfdAog
ICAgIHJldHVybiB0cnVlOwogfQogCit2b2lkIHNlbmRVc2VyQ2hhbmdlTm90aWZpY2F0aW9ucygp
Cit7CisgICAgYXV0byBjb25zb2xlQ29ubmVjdGlvbkNoYW5nZU5vdGlmeVByb2MgPSBbXShDR1NO
b3RpZmljYXRpb25UeXBlIHR5cGUsIENHU05vdGlmaWNhdGlvbkRhdGEsIENHU0J5dGVDb3VudCwg
Q0dTTm90aWZpY2F0aW9uQXJnKSB7CisgICAgICAgIE5TU3RyaW5nICpub3RpZmljYXRpb25OYW1l
ID0gbmlsOworICAgICAgICBpZiAodHlwZSA9PSBrQ0dTZXNzaW9uQ29uc29sZUNvbm5lY3QpCisg
ICAgICAgICAgICBub3RpZmljYXRpb25OYW1lID0gTG9naW5XaW5kb3dEaWRTd2l0Y2hUb1VzZXJO
b3RpZmljYXRpb247CisgICAgICAgIGVsc2UgaWYgKHR5cGUgPT0ga0NHU2Vzc2lvbkNvbnNvbGVE
aXNjb25uZWN0KQorICAgICAgICAgICAgbm90aWZpY2F0aW9uTmFtZSA9IExvZ2luV2luZG93RGlk
U3dpdGNoRnJvbVVzZXJOb3RpZmljYXRpb247CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBbW05TTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1
bHRDZW50ZXJdIHBvc3ROb3RpZmljYXRpb25OYW1lOm5vdGlmaWNhdGlvbk5hbWUgb2JqZWN0Om5p
bF07CisgICAgfTsKKworICAgIENHU1JlZ2lzdGVyTm90aWZ5UHJvYyhjb25zb2xlQ29ubmVjdGlv
bkNoYW5nZU5vdGlmeVByb2MsIGtDR1Nlc3Npb25Db25zb2xlQ29ubmVjdCwgTlVMTCk7CisgICAg
Q0dTUmVnaXN0ZXJOb3RpZnlQcm9jKGNvbnNvbGVDb25uZWN0aW9uQ2hhbmdlTm90aWZ5UHJvYywg
a0NHU2Vzc2lvbkNvbnNvbGVEaXNjb25uZWN0LCBOVUxMKTsKK30KKwogfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CiAKICNlbmRpZiAvLyAgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luVmll
dy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5W
aWV3Lm1tCmluZGV4IGM2ODBmZjdlZTMxYzkzYjhmYjQ5MjI5N2U0ZTdhZDkxNDFhNGRkZTQuLjJi
YmQzZGViZTY2ZTE4ZDhmMzE4MGM5NGNhMTMzN2ZjZjdkODgxNzAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5WaWV3Lm1tCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5WaWV3Lm1t
CkBAIC0xOTMsNyArMTkzLDcgQEAgKyAodm9pZClpbml0aWFsaXplCiAgICAgSlNDOjppbml0aWFs
aXplVGhyZWFkaW5nKCk7CiAgICAgV1RGOjppbml0aWFsaXplTWFpblRocmVhZFRvUHJvY2Vzc01h
aW5UaHJlYWQoKTsKICAgICBSdW5Mb29wOjppbml0aWFsaXplTWFpblJ1bkxvb3AoKTsKLSAgICBX
S1NlbmRVc2VyQ2hhbmdlTm90aWZpY2F0aW9ucygpOworICAgIHNlbmRVc2VyQ2hhbmdlTm90aWZp
Y2F0aW9ucygpOwogfQogCiAvLyBNQVJLOiBFVkVOVFMKQEAgLTM3OSwxMCArMzc5LDEwIEBAIC0g
KFBvcnRTdGF0ZSlzYXZlQW5kU2V0TmV3UG9ydFN0YXRlRm9yVXBkYXRlOihCT09MKWZvclVwZGF0
ZQogICAgICAgICAgICAgcWRQb3J0U3RhdGUtPmNsaXBSZWdpb24gPSBjbGlwUmVnaW9uOwogCiAg
ICAgICAgICAgICBDR0NvbnRleHRSZWYgY3VycmVudENvbnRleHQgPSAoQ0dDb250ZXh0UmVmKVtb
TlNHcmFwaGljc0NvbnRleHQgY3VycmVudENvbnRleHRdIGdyYXBoaWNzUG9ydF07Ci0gICAgICAg
ICAgICBpZiAoY3VycmVudENvbnRleHQgJiYgV0tDR0NvbnRleHRJc0JpdG1hcENvbnRleHQoY3Vy
cmVudENvbnRleHQpKSB7Ci0gICAgICAgICAgICAgICAgLy8gV2UgdXNlIFdLQ0dDb250ZXh0SXNC
aXRtYXBDb250ZXh0IGhlcmUsIGJlY2F1c2UgaWYgd2UganVzdCBjYWxsZWQgQ0dCaXRtYXBDb250
ZXh0R2V0RGF0YQotICAgICAgICAgICAgICAgIC8vIG9uIGFueSBjb250ZXh0LCB3ZSdkIGxvZyB0
byB0aGUgY29uc29sZSBldmVyeSB0aW1lLiBCdXQgZXZlbiBpZiBXS0NHQ29udGV4dElzQml0bWFw
Q29udGV4dAotICAgICAgICAgICAgICAgIC8vIHJldHVybnMgdHJ1ZSwgaXQgc3RpbGwgbWlnaHQg
bm90IGJlIGEgY29udGV4dCB3ZSBuZWVkIHRvIGNyZWF0ZSBhIEdXb3JsZCBmb3I7IGZvciBleGFt
cGxlCisgICAgICAgICAgICBpZiAoY3VycmVudENvbnRleHQgJiYgQ0dDb250ZXh0R2V0VHlwZShj
dXJyZW50Q29udGV4dCkgPT0ga0NHQ29udGV4dFR5cGVCaXRtYXApIHsKKyAgICAgICAgICAgICAg
ICAvLyBXZSBjaGVjayBmb3Iga0NHQ29udGV4dFR5cGVCaXRtYXAgaGVyZSwgYmVjYXVzZSBpZiB3
ZSBqdXN0IGNhbGxlZCBDR0JpdG1hcENvbnRleHRHZXREYXRhCisgICAgICAgICAgICAgICAgLy8g
b24gYW55IGNvbnRleHQsIHdlJ2QgbG9nIHRvIHRoZSBjb25zb2xlIGV2ZXJ5IHRpbWUuIEJ1dCBl
dmVuIGlmIGN1cnJlbnRDb250ZXh0IGlzIGEKKyAgICAgICAgICAgICAgICAvLyBrQ0dDb250ZXh0
VHlwZUJpdG1hcCwgaXQgc3RpbGwgbWlnaHQgbm90IGJlIGEgY29udGV4dCB3ZSBuZWVkIHRvIGNy
ZWF0ZSBhIEdXb3JsZCBmb3I7IGZvciBleGFtcGxlCiAgICAgICAgICAgICAgICAgLy8gdHJhbnNw
YXJlbmN5IGxheWVycyB3aWxsIHJldHVybiB0cnVlLCBidXQgcmV0dXJuIDAgZm9yIENHQml0bWFw
Q29udGV4dEdldERhdGEuCiAgICAgICAgICAgICAgICAgdm9pZCogb2Zmc2NyZWVuRGF0YSA9IENH
Qml0bWFwQ29udGV4dEdldERhdGEoY3VycmVudENvbnRleHQpOwogICAgICAgICAgICAgICAgIGlm
IChvZmZzY3JlZW5EYXRhKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJTeXN0ZW1JbnRlcmZhY2UubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJTeXN0ZW1JbnRlcmZhY2UubW0KaW5kZXggNmRkMGI1N2Rk
NGJmMzQzZmU5NjZmMGZiYTYzYzExY2Y0ZjA4ZDkzMi4uYjUxMWQ2NWVhNjFiMzYyNDdkMmI4M2Vi
MmM2ODkxMTQzZjM5N2NkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViU3lzdGVtSW50ZXJmYWNlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlN5c3RlbUludGVyZmFjZS5tbQpAQCAtNDMsMTYgKzQz
LDkgQEAgdm9pZCBJbml0V2ViQ29yZVN5c3RlbUludGVyZmFjZSh2b2lkKQogICAgICAgICByZXR1
cm47CiAKICAgICBJTklUKENBTGF5ZXJFbnVtZXJhdGVSZWN0c0JlaW5nRHJhd25XaXRoQmxvY2sp
OwotICAgIElOSVQoQ0dQYXR0ZXJuQ3JlYXRlV2l0aEltYWdlQW5kVHJhbnNmb3JtKTsKLSNpZiAh
UExBVEZPUk0oSU9TKQotICAgIElOSVQoQ0dDb250ZXh0RHJhd3NXaXRoQ29ycmVjdFNoYWRvd09m
ZnNldHMpOwotI2VuZGlmCiAgICAgSU5JVChDb3B5Q09OTkVDVFByb3h5UmVzcG9uc2UpOwogI2lm
ICFQTEFURk9STShJT1MpCiAgICAgSU5JVChEcmF3QmV6ZWxlZFRleHRBcmVhKTsKLSAgICBJTklU
KERyYXdGb2N1c1JpbmcpOwotICAgIElOSVQoRHJhd0ZvY3VzUmluZ0F0VGltZSk7Ci0gICAgSU5J
VChEcmF3Q2VsbEZvY3VzUmluZ1dpdGhGcmFtZUF0VGltZSk7CiAgICAgSU5JVChEcmF3TWVkaWFV
SVBhcnQpOwogICAgIElOSVQoRHJhd01lZGlhU2xpZGVyVHJhY2spOwogICAgIElOSVQoR2V0TlNF
dmVudEtleUNoYXIpOwpAQCAtNjAsMTUgKzUzLDkgQEAgdm9pZCBJbml0V2ViQ29yZVN5c3RlbUlu
dGVyZmFjZSh2b2lkKQogICAgIElOSVQoTWVhc3VyZU1lZGlhVUlQYXJ0KTsKICAgICBJTklUKENy
ZWF0ZU1lZGlhVUlCYWNrZ3JvdW5kVmlldyk7CiAgICAgSU5JVChDcmVhdGVNZWRpYVVJQ29udHJv
bCk7Ci0gICAgSU5JVChXaW5kb3dTZXRBbHBoYSk7Ci0gICAgSU5JVChXaW5kb3dTZXRTY2FsZWRG
cmFtZSk7CiAjZW5kaWYKICAgICBJTklUKFNldENPTk5FQ1RQcm94eUF1dGhvcml6YXRpb25Gb3JT
dHJlYW0pOwogICAgIElOSVQoU2V0Q09OTkVDVFByb3h5Rm9yU3RyZWFtKTsKLSNpZiAhUExBVEZP
Uk0oSU9TKQotICAgIElOSVQoU2V0RHJhZ0ltYWdlKTsKLSNlbmRpZgotICAgIElOSVQoQ0dDb250
ZXh0SXNQREZDb250ZXh0KTsKICNpZiBFTkFCTEUoVklERU8pICYmICFQTEFURk9STShJT1MpCiAg
ICAgSU5JVChRVEluY2x1ZGVPbmx5TW9kZXJuTWVkaWFGaWxlVHlwZXMpOwogICAgIElOSVQoUVRN
b3ZpZURpc2FibGVDb21wb25lbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViVmlldy9XZWJGcmFtZS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcv
V2ViRnJhbWUubW0KaW5kZXggZjBmOGU2Mjg1ODBiMjlmZTA0N2VkZGY2ZWI0NzU3OGM2ZDA1ZGQy
ZC4uZTcwOTNjOTZhYWM0NzRlM2FlZTllNzJkMjNiMjRlYjFjNTg5YTJlYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCkBAIC01OTgsNyArNTk4LDcgQEAg
LSAoUGFpbnRCZWhhdmlvcilfcGFpbnRCZWhhdmlvckZvckRlc3RpbmF0aW9uQ29udGV4dDooQ0dD
b250ZXh0UmVmKWNvbnRleHQKICAgICAgICAgcmV0dXJuIFBhaW50QmVoYXZpb3JGbGF0dGVuQ29t
cG9zaXRpbmdMYXllcnMgfCBQYWludEJlaGF2aW9yU25hcHNob3R0aW5nOwogI2VuZGlmCiAKLSAg
ICBpZiAoIVdLQ0dDb250ZXh0SXNCaXRtYXBDb250ZXh0KGNvbnRleHQpKQorICAgIGlmIChDR0Nv
bnRleHRHZXRUeXBlKGNvbnRleHQpICE9IGtDR0NvbnRleHRUeXBlQml0bWFwKQogICAgICAgICBy
ZXR1cm4gUGFpbnRCZWhhdmlvck5vcm1hbDsKIAogICAgIC8vIElmIHdlJ3JlIGRyYXdpbmcgaW50
byBhIGJpdG1hcCwgd2UgbWlnaHQgYmUgc25hcHNob3R0aW5nLCBvciBkcmF3aW5nIGludG8gYSBs
YXllci1iYWNrZWQgdmlldy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YlZpZXcvV2ViRnVsbFNjcmVlbkNvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJWaWV3L1dlYkZ1bGxTY3JlZW5Db250cm9sbGVyLm1tCmluZGV4IGZkOGZjNTY5OTdhZmNi
NmFkN2Y5MGM1ZmM5OTg0YmEzMTc2NmU5MDcuLjQwNTNmZmM4NDY0YTM1YmI4NmFmYjY2NmUzY2Vl
N2VkY2FjZTVlZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcv
V2ViRnVsbFNjcmVlbkNvbnRyb2xsZXIubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViVmlldy9XZWJGdWxsU2NyZWVuQ29udHJvbGxlci5tbQpAQCAtMjQ5LDYgKzI0OSwxNiBAQCAt
ICh2b2lkKWVudGVyRnVsbFNjcmVlbjooTlNTY3JlZW4gKilzY3JlZW4KICAgICBfaXNFbnRlcmlu
Z0Z1bGxTY3JlZW4gPSB0cnVlOwogfQogCitzdGF0aWMgdm9pZCBzZXRDbGlwUmVjdEZvcldpbmRv
dyhOU1dpbmRvdyAqd2luZG93LCBOU1JlY3QgY2xpcFJlY3QpCit7CisgICAgQ0dTV2luZG93SUQg
d2luZG93TnVtYmVyID0gKENHU1dpbmRvd0lEKVt3aW5kb3cgd2luZG93TnVtYmVyXTsKKyAgICBD
R1NSZWdpb25PYmogc2hhcGU7CisgICAgQ0dSZWN0IGNnQ2xpcFJlY3QgPSBOU1JlY3RUb0NHUmVj
dChjbGlwUmVjdCk7CisgICAgQ0dTTmV3UmVnaW9uV2l0aFJlY3QoJmNnQ2xpcFJlY3QsICZzaGFw
ZSk7CisgICAgQ0dTU2V0V2luZG93Q2xpcFNoYXBlKENHU01haW5Db25uZWN0aW9uSUQoKSwgd2lu
ZG93TnVtYmVyLCBzaGFwZSk7CisgICAgQ0dTUmVsZWFzZVJlZ2lvbihzaGFwZSk7Cit9CisKIC0g
KHZvaWQpZmluaXNoZWRFbnRlckZ1bGxTY3JlZW5BbmltYXRpb246KGJvb2wpY29tcGxldGVkCiB7
CiAgICAgaWYgKCFfaXNFbnRlcmluZ0Z1bGxTY3JlZW4pCkBAIC0yNjMsNyArMjczLDcgQEAgLSAo
dm9pZClmaW5pc2hlZEVudGVyRnVsbFNjcmVlbkFuaW1hdGlvbjooYm9vbCljb21wbGV0ZWQKICAg
ICAgICAgCiAgICAgICAgIE5TUmVjdCB3aW5kb3dCb3VuZHMgPSBbW3NlbGYgd2luZG93XSBmcmFt
ZV07CiAgICAgICAgIHdpbmRvd0JvdW5kcy5vcmlnaW4gPSBOU1plcm9Qb2ludDsKLSAgICAgICAg
V0tXaW5kb3dTZXRDbGlwUmVjdChbc2VsZiB3aW5kb3ddLCB3aW5kb3dCb3VuZHMpOworICAgICAg
ICBzZXRDbGlwUmVjdEZvcldpbmRvdyhbc2VsZiB3aW5kb3ddLCB3aW5kb3dCb3VuZHMpOwogICAg
ICAgICAKICAgICAgICAgTlNXaW5kb3cgKndlYldpbmRvdyA9IFtfd2ViVmlld1BsYWNlaG9sZGVy
LmdldCgpIHdpbmRvd107CiAgICAgICAgIC8vIEluIExpb24sIE5TV2luZG93IHdpbGwgYW5pbWF0
ZSBpbnRvIGFuZCBvdXQgb2Ygb3JkZXJPdXQgb3BlcmF0aW9ucy4gU3VwcHJlc3MgdGhhdApAQCAt
MzUzLDcgKzM2Myw3IEBAIC0gKHZvaWQpZmluaXNoZWRFeGl0RnVsbFNjcmVlbkFuaW1hdGlvbjoo
Ym9vbCljb21wbGV0ZWQKICAgICAKICAgICBOU1JlY3Qgd2luZG93Qm91bmRzID0gW1tzZWxmIHdp
bmRvd10gZnJhbWVdOwogICAgIHdpbmRvd0JvdW5kcy5vcmlnaW4gPSBOU1plcm9Qb2ludDsKLSAg
ICBXS1dpbmRvd1NldENsaXBSZWN0KFtzZWxmIHdpbmRvd10sIHdpbmRvd0JvdW5kcyk7CisgICAg
c2V0Q2xpcFJlY3RGb3JXaW5kb3coW3NlbGYgd2luZG93XSwgd2luZG93Qm91bmRzKTsKICAgICAK
ICAgICBbW3NlbGYgd2luZG93XSBvcmRlck91dDpzZWxmXTsKICAgICBbW3NlbGYgd2luZG93XSBz
ZXRGcmFtZTpOU1plcm9SZWN0IGRpc3BsYXk6WUVTXTsKQEAgLTQ4NCwxMyArNDk0LDEzIEBAIC0g
KHZvaWQpX3N0YXJ0RW50ZXJGdWxsU2NyZWVuQW5pbWF0aW9uV2l0aER1cmF0aW9uOihOU1RpbWVJ
bnRlcnZhbClkdXJhdGlvbgogICAgIFtfc2NhbGVBbmltYXRpb24uZ2V0KCkgc2V0Q3VycmVudFBy
b2dyZXNzOjBdOwogICAgIFtfc2NhbGVBbmltYXRpb24uZ2V0KCkgc3RhcnRBbmltYXRpb25dOwog
ICAgIAotICAgIC8vIFdLV2luZG93U2V0Q2xpcFJlY3QgdGFrZXMgd2luZG93IGNvb3JkaW5hdGVz
LCBzbyBjb252ZXJ0IGZyb20gc2NyZWVuIGNvb3JkaW5hdGVzIGhlcmU6CisgICAgLy8gc2V0Q2xp
cFJlY3RGb3JXaW5kb3cgdGFrZXMgd2luZG93IGNvb3JkaW5hdGVzLCBzbyBjb252ZXJ0IGZyb20g
c2NyZWVuIGNvb3JkaW5hdGVzIGhlcmU6CiAgICAgTlNSZWN0IGZpbmFsQm91bmRzID0gX2ZpbmFs
RnJhbWU7CiAjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcHVzaAogI3ByYWdtYSBjbGFuZyBkaWFn
bm9zdGljIGlnbm9yZWQgIi1XZGVwcmVjYXRlZC1kZWNsYXJhdGlvbnMiCiAgICAgZmluYWxCb3Vu
ZHMub3JpZ2luID0gW1tzZWxmIHdpbmRvd10gY29udmVydFNjcmVlblRvQmFzZTpmaW5hbEJvdW5k
cy5vcmlnaW5dOwogI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHBvcAotICAgIFdLV2luZG93U2V0
Q2xpcFJlY3QoW3NlbGYgd2luZG93XSwgZmluYWxCb3VuZHMpOworICAgIHNldENsaXBSZWN0Rm9y
V2luZG93KFtzZWxmIHdpbmRvd10sIGZpbmFsQm91bmRzKTsKICAgICAKICAgICBbW3NlbGYgd2lu
ZG93XSBtYWtlS2V5QW5kT3JkZXJGcm9udDpzZWxmXTsKICAgICAKQEAgLTU1NiwxMyArNTY2LDEz
IEBAIC0gKHZvaWQpX3N0YXJ0RXhpdEZ1bGxTY3JlZW5BbmltYXRpb25XaXRoRHVyYXRpb246KE5T
VGltZUludGVydmFsKWR1cmF0aW9uCiAgICAgCiAgICAgW19iYWNrZ3JvdW5kV2luZG93LmdldCgp
IG9yZGVyV2luZG93Ok5TV2luZG93QmVsb3cgcmVsYXRpdmVUbzpbW3NlbGYgd2luZG93XSB3aW5k
b3dOdW1iZXJdXTsKICAgICAKLSAgICAvLyBXS1dpbmRvd1NldENsaXBSZWN0IHRha2VzIHdpbmRv
dyBjb29yZGluYXRlcywgc28gY29udmVydCBmcm9tIHNjcmVlbiBjb29yZGluYXRlcyBoZXJlOgor
ICAgIC8vIHNldENsaXBSZWN0Rm9yV2luZG93IHRha2VzIHdpbmRvdyBjb29yZGluYXRlcywgc28g
Y29udmVydCBmcm9tIHNjcmVlbiBjb29yZGluYXRlcyBoZXJlOgogICAgIE5TUmVjdCBmaW5hbEJv
dW5kcyA9IF9maW5hbEZyYW1lOwogI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHB1c2gKICNwcmFn
bWEgY2xhbmcgZGlhZ25vc3RpYyBpZ25vcmVkICItV2RlcHJlY2F0ZWQtZGVjbGFyYXRpb25zIgog
ICAgIGZpbmFsQm91bmRzLm9yaWdpbiA9IFtbc2VsZiB3aW5kb3ddIGNvbnZlcnRTY3JlZW5Ub0Jh
c2U6ZmluYWxCb3VuZHMub3JpZ2luXTsKICNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwb3AKLSAg
ICBXS1dpbmRvd1NldENsaXBSZWN0KFtzZWxmIHdpbmRvd10sIGZpbmFsQm91bmRzKTsKKyAgICBz
ZXRDbGlwUmVjdEZvcldpbmRvdyhbc2VsZiB3aW5kb3ddLCBmaW5hbEJvdW5kcyk7CiAgICAgCiAg
ICAgW1tzZWxmIHdpbmRvd10gc2V0QXV0b2Rpc3BsYXk6WUVTXTsKICAgICBbW3NlbGYgd2luZG93
XSBkaXNwbGF5SWZOZWVkZWRdOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>319595</attachid>
            <date>2017-09-01 08:36:26 -0700</date>
            <delta_ts>2017-09-01 08:52:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-176200-20170901083625.patch</filename>
            <type>text/plain</type>
            <size>65234</size>
            <attacher name="Andy Estes">aestes</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIxNDczCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmNmNjE0ZmZmMzUzODM2
Mjg0MTIwMzJkMzk0M2FkZDllOGNjOWJmNS4uZDY3YWI1ZTIxNjRkNmY5NzBmNDU1MmZlZDg5M2Vl
NmQyYTgzMzYwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDQ2IEBACiAyMDE3LTA4LTMxICBBbmR5
IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KIAorICAgICAgICBbQ0ddIFVwc3RyZWFtIENvcmVH
cmFwaGljcy1yZWxhdGVkIFdlYktpdFN5c3RlbUludGVyZmFjZSBmdW5jdGlvbnMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NjIwMAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NDb250ZXh0Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VT
b3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OnN1YnNhbXBsaW5nTGV2
ZWxGb3JTY2FsZUZhY3Rvcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhp
Y3NDb250ZXh0Q0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpjbGlw
T3V0KToKKyAgICAgICAgKFdlYkNvcmU6OmFwcGx5U2hhZG93T2Zmc2V0V29ya2Fyb3VuZElmTmVl
ZGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9QYXR0ZXJuQ0cuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UGF0dGVybjo6Y3JlYXRlUGxhdGZvcm1QYXR0ZXJuIGNvbnN0KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRDb2NvYS5tbToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6Zm9jdXNSaW5nQ29sb3IpOgorICAg
ICAgICAoV2ViQ29yZTo6ZHJhd0ZvY3VzUmluZ0F0VGltZSk6CisgICAgICAgIChXZWJDb3JlOjpk
cmF3Rm9jdXNSaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OmRyYXdGb2N1c1JpbmdUb0NvbnRleHQp
OgorICAgICAgICAoV2ViQ29yZTo6ZHJhd0ZvY3VzUmluZ1RvQ29udGV4dEF0VGltZSk6CisgICAg
ICAgICogcGxhdGZvcm0vaW9zL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2VJT1MubW06CisgICAgICAg
ICogcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpmbGlw
SW1hZ2VTcGVjKToKKyAgICAgICAgKFdlYkNvcmU6OnNldERyYWdJbWFnZUltcGwpOgorICAgICAg
ICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6c2V0RHJhZ0ltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9tYWMvUGxhdGZvcm1FdmVudEZhY3RvcnlNYWMubW06CisgICAgICAgICogcGxhdGZvcm0vbWFj
L1Njcm9sbGJhclRoZW1lTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6bGluZW5CYWNrZ3JvdW5k
Q29sb3IpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9UaGVtZU1hYy5tbToKKyAgICAgICAgKFdl
YkNvcmU6OmRyYXdDZWxsRm9jdXNSaW5nV2l0aEZyYW1lQXRUaW1lKToKKyAgICAgICAgKFdlYkNv
cmU6OmRyYXdDZWxsRm9jdXNSaW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvV2ViQ29yZVN5
c3RlbUludGVyZmFjZS5oOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9XZWJDb3JlU3lzdGVtSW50
ZXJmYWNlLm1tOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9XZWJXaW5kb3dBbmltYXRpb24ubW06
CisgICAgICAgIChmbGlwUmVjdCk6CisgICAgICAgIChtYWluV2luZG93U2VydmVyQ29ubmVjdGlv
bklEKToKKyAgICAgICAgKHNldFNjYWxlZEZyYW1lRm9yV2luZG93KToKKyAgICAgICAgKC1bV2Vi
V2luZG93U2NhbGVBbmltYXRpb24gc2V0Q3VycmVudFByb2dyZXNzOl0pOgorICAgICAgICAoLVtX
ZWJXaW5kb3dGYWRlQW5pbWF0aW9uIHNldEN1cnJlbnRQcm9ncmVzczpdKToKKworMjAxNy0wOC0z
MSAgQW5keSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+CisKICAgICAgICAgW01hY10gVXBzdHJl
YW0gQXBwS2l0LXJlbGF0ZWQgV2ViS2l0U3lzdGVtSW50ZXJmYWNlIGZ1bmN0aW9ucwogICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc2MTc1CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9QQUwv
Q2hhbmdlTG9nCmluZGV4IGVlZWU4NGRjNjE5ZDkyZDRkYTJhMTIwYjIwODZkYzZjNjEwYTY4YjIu
LjQzNjE3MDA3YTFlMGJlMDZhNWY2MTg0NmQxZTJlMjBiODRmZGIwYTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML0NoYW5n
ZUxvZwpAQCAtMSw1ICsxLDE3IEBACiAyMDE3LTA4LTMxICBBbmR5IEVzdGVzICA8YWVzdGVzQGFw
cGxlLmNvbT4KIAorICAgICAgICBbQ0ddIFVwc3RyZWFtIENvcmVHcmFwaGljcy1yZWxhdGVkIFdl
YktpdFN5c3RlbUludGVyZmFjZSBmdW5jdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NjIwMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogUEFMLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6Cisg
ICAgICAgICogcGFsL3NwaS9jZy9Db3JlR3JhcGhpY3NTUEkuaDoKKyAgICAgICAgKiBwYWwvc3Bp
L21hYy9ISVNlcnZpY2VzU1BJLmg6CisgICAgICAgICogcGFsL3NwaS9tYWMvTlNHcmFwaGljc1NQ
SS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9tYWMvSElTZXJ2aWNl
c1NQSS5oLgorCisyMDE3LTA4LTMxICBBbmR5IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KKwog
ICAgICAgICBbTWFjXSBVcHN0cmVhbSBBcHBLaXQtcmVsYXRlZCBXZWJLaXRTeXN0ZW1JbnRlcmZh
Y2UgZnVuY3Rpb25zCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNzYxNzUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBiNjJiN2VlNTYxZmYwNDQ2ZmVlYmRiNDMwNjU2Njcx
MmNjZGZlZDI4Li4yZGMxYjc0MjNjMzhiYTcxYTE1ZDNhODljNDYwYWZjNDEwZWRiZThhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwpAQCAtMSw1ICsxLDIyIEBACiAyMDE3LTA4LTMxICBBbmR5IEVzdGVzICA8YWVzdGVzQGFw
cGxlLmNvbT4KIAorICAgICAgICBbQ0ddIFVwc3RyZWFtIENvcmVHcmFwaGljcy1yZWxhdGVkIFdl
YktpdFN5c3RlbUludGVyZmFjZSBmdW5jdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NjIwMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogUGx1Z2luUHJvY2Vzcy9tYWMvUGx1Z2luUHJvY2Vzc01h
Yy5tbToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXpl
UHJvY2Vzcyk6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9XaW5kb3dTZXJ2ZXJDb25uZWN0aW9u
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9XaW5kb3dTZXJ2ZXJDb25uZWN0aW9uLm1tOgor
ICAgICAgICAoV2ViS2l0OjpyZWdpc3Rlck9jY2x1c2lvbk5vdGlmaWNhdGlvbkhhbmRsZXIpOgor
ICAgICAgICAoV2ViS2l0OjpXaW5kb3dTZXJ2ZXJDb25uZWN0aW9uOjpXaW5kb3dTZXJ2ZXJDb25u
ZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2luZG93U2VydmVyQ29ubmVjdGlvbjo6YXBwbGlj
YXRpb25XaW5kb3dNb2RpZmljYXRpb25zU3RhcnRlZCk6IERlbGV0ZWQuCisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViU3lzdGVtSW50ZXJmYWNlLm1tOgorICAgICAg
ICAoSW5pdFdlYkNvcmVTeXN0ZW1JbnRlcmZhY2UpOgorCisyMDE3LTA4LTMxICBBbmR5IEVzdGVz
ICA8YWVzdGVzQGFwcGxlLmNvbT4KKwogICAgICAgICBbTWFjXSBVcHN0cmVhbSBBcHBLaXQtcmVs
YXRlZCBXZWJLaXRTeXN0ZW1JbnRlcmZhY2UgZnVuY3Rpb25zCiAgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzYxNzUKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hh
bmdlTG9nCmluZGV4IGM0Zjk5NTY3MjU0ZDBiNjIyYzlhOGY5ODc5MTdiNjcwMzM5NzgwOTMuLmU3
ZDhkODBmNDAyMjJjYmNmNzQyOThjN2E5MjEzYTgzMDI0YTkwZGIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9DaGFuZ2VMb2cKQEAgLTEsNSArMSwzNiBAQAogMjAxNy0wOC0zMSAgQW5keSBFc3RlcyAgPGFl
c3Rlc0BhcHBsZS5jb20+CiAKKyAgICAgICAgW0NHXSBVcHN0cmVhbSBDb3JlR3JhcGhpY3MtcmVs
YXRlZCBXZWJLaXRTeXN0ZW1JbnRlcmZhY2UgZnVuY3Rpb25zCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzYyMDAKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIENhcmJvbi9ISVdlYlZpZXcubW06CisgICAg
ICAgICgtW05TV2luZG93R3JhcGhpY3NDb250ZXh0IF93ZWJfc2V0R3JhcGhpY3NQb3J0Ol0pOgor
ICAgICAgICAob3ZlcnJpZGVDR0NvbnRleHQpOgorICAgICAgICAocmVzdG9yZUNHQ29udGV4dCk6
CisgICAgICAgIChEcmF3KToKKyAgICAgICAgKiBQbHVnaW5zL0hvc3RlZC9XZWJIb3N0ZWROZXRz
Y2FwZVBsdWdpblZpZXcubW06CisgICAgICAgICgrW1dlYkhvc3RlZE5ldHNjYXBlUGx1Z2luVmll
dyBpbml0aWFsaXplXSk6CisgICAgICAgICogUGx1Z2lucy9XZWJCYXNlTmV0c2NhcGVQbHVnaW5W
aWV3Lmg6CisgICAgICAgICogUGx1Z2lucy9XZWJCYXNlTmV0c2NhcGVQbHVnaW5WaWV3Lm1tOgor
ICAgICAgICAoV2ViS2l0OjpzZW5kVXNlckNoYW5nZU5vdGlmaWNhdGlvbnMpOgorICAgICAgICAq
IFBsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5WaWV3Lm1tOgorICAgICAgICAoK1tXZWJOZXRzY2Fw
ZVBsdWdpblZpZXcgaW5pdGlhbGl6ZV0pOgorICAgICAgICAoLVtXZWJOZXRzY2FwZVBsdWdpblZp
ZXcgc2F2ZUFuZFNldE5ld1BvcnRTdGF0ZUZvclVwZGF0ZTpdKToKKyAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9XZWJTeXN0ZW1JbnRlcmZhY2UubW06CisgICAgICAgIChJbml0V2ViQ29yZVN5c3Rl
bUludGVyZmFjZSk6CisgICAgICAgICogV2ViVmlldy9XZWJGcmFtZS5tbToKKyAgICAgICAgKC1b
V2ViRnJhbWUgX3BhaW50QmVoYXZpb3JGb3JEZXN0aW5hdGlvbkNvbnRleHQ6XSk6CisgICAgICAg
ICogV2ViVmlldy9XZWJGdWxsU2NyZWVuQ29udHJvbGxlci5tbToKKyAgICAgICAgKHNldENsaXBS
ZWN0Rm9yV2luZG93KToKKyAgICAgICAgKC1bV2ViRnVsbFNjcmVlbkNvbnRyb2xsZXIgZmluaXNo
ZWRFbnRlckZ1bGxTY3JlZW5BbmltYXRpb246XSk6CisgICAgICAgICgtW1dlYkZ1bGxTY3JlZW5D
b250cm9sbGVyIGZpbmlzaGVkRXhpdEZ1bGxTY3JlZW5BbmltYXRpb246XSk6CisgICAgICAgICgt
W1dlYkZ1bGxTY3JlZW5Db250cm9sbGVyIF9zdGFydEVudGVyRnVsbFNjcmVlbkFuaW1hdGlvbldp
dGhEdXJhdGlvbjpdKToKKyAgICAgICAgKC1bV2ViRnVsbFNjcmVlbkNvbnRyb2xsZXIgX3N0YXJ0
RXhpdEZ1bGxTY3JlZW5BbmltYXRpb25XaXRoRHVyYXRpb246XSk6CisKKzIwMTctMDgtMzEgIEFu
ZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29tPgorCiAgICAgICAgIFtNYWNdIFVwc3RyZWFtIEFw
cEtpdC1yZWxhdGVkIFdlYktpdFN5c3RlbUludGVyZmFjZSBmdW5jdGlvbnMKICAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NjE3NQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9QQUwvUEFMLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3Vy
Y2UvV2ViQ29yZS9QQUwvUEFMLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMTNjZWNj
Y2U2YzQzNmYwNTAyZWQ5OTcyYmViNGIxYWViM2YzNDBiOC4uM2EwNDBhYTI0MDg5Mzg5MmNhYmU1
OGU1ZjdjMjA4M2YxNjEyYjZkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML1BBTC54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9QQUwueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTA0LDYgKzEwNCw3IEBACiAJCUExMDgyNkYxMUY1
NzNCQ0EwMDQ3NzJBQyAvKiBOU1Jlc3BvbmRlclNQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTEwODI2RjAxRjU3M0JDQTAwNDc3MkFDIC8qIE5TUmVz
cG9uZGVyU1BJLmggKi87IH07CiAJCUExMDgyNkY5MUY1NzYyOTIwMDQ3NzJBQyAvKiBXZWJQYW5l
bC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTEwODI2
RjcxRjU3NjI5MjAwNDc3MkFDIC8qIFdlYlBhbmVsLmggKi87IH07CiAJCUExMDgyNkZBMUY1NzYy
OTIwMDQ3NzJBQyAvKiBXZWJQYW5lbC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEExMDgyNkY4MUY1NzYyOTIwMDQ3NzJBQyAvKiBXZWJQYW5lbC5tbSAq
LzsgfTsKKwkJQTEwODI2RkUxRjU4QTQzMzAwNDc3MkFDIC8qIE5TR3JhcGhpY3NTUEkuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExMDgyNkZEMUY1OEE0
MzMwMDQ3NzJBQyAvKiBOU0dyYXBoaWNzU1BJLmggKi87IH07CiAJCUExRjU1RENGMUY1NTI4RUMw
MEVEQjc1RiAvKiBNZXRhZGF0YVNQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQTFGNTVEQ0UxRjU1MjhFQzAwRURCNzVGIC8qIE1ldGFkYXRhU1BJLmgg
Ki87IH07CiAJCUEzMEQ0MTIxMUYwREQwRUEwMEI3MTk1NCAvKiBLaWxsUmluZy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTMwRDQxMUUxRjBERDBFQTAw
QjcxOTU0IC8qIEtpbGxSaW5nLmggKi87IH07CiAJCUEzMEQ0MTIyMUYwREQwRUEwMEI3MTk1NCAv
KiBLaWxsUmluZy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBBMzBENDExRjFGMEREMEVBMDBCNzE5NTQgLyogS2lsbFJpbmcuY3BwICovOyB9OwpAQCAt
MjIzLDYgKzIyNCw3IEBACiAJCUExMDgyNkYwMUY1NzNCQ0EwMDQ3NzJBQyAvKiBOU1Jlc3BvbmRl
clNQSS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBOU1Jlc3BvbmRlclNQSS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlBMTA4MjZGNzFGNTc2MjkyMDA0NzcyQUMgLyogV2ViUGFuZWwuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gV2ViUGFuZWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTEw
ODI2RjgxRjU3NjI5MjAwNDc3MkFDIC8qIFdlYlBhbmVsLm1tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gV2ViUGFuZWwubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUExMDgyNkZEMUY1
OEE0MzMwMDQ3NzJBQyAvKiBOU0dyYXBoaWNzU1BJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5TR3JhcGhp
Y3NTUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTFGNTVEQ0UxRjU1MjhFQzAw
RURCNzVGIC8qIE1ldGFkYXRhU1BJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1ldGFkYXRhU1BJLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUEzMEQ0MTFFMUYwREQwRUEwMEI3MTk1NCAvKiBL
aWxsUmluZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBLaWxsUmluZy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMzBENDExRjFGMEREMEVBMDBCNzE5NTQgLyog
S2lsbFJpbmcuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gS2lsbFJp
bmcuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzU1LDYgKzM1Nyw3IEBACiAJ
CQkJMEM3Nzg1NzUxRjQ1MTMwRjAwRjRFQkI2IC8qIE5TQXBwbGljYXRpb25TUEkuaCAqLywKIAkJ
CQkwQzc3ODU3NjFGNDUxMzBGMDBGNEVCQjYgLyogTlNFdmVudFNQSS5oICovLAogCQkJCTBDNzc4
NTc3MUY0NTEzMEYwMEY0RUJCNiAvKiBOU0ZvbnRTUEkuaCAqLywKKwkJCQlBMTA4MjZGRDFGNThB
NDMzMDA0NzcyQUMgLyogTlNHcmFwaGljc1NQSS5oICovLAogCQkJCTBDNzc4NTc4MUY0NTEzMEYw
MEY0RUJCNiAvKiBOU0ltbWVkaWF0ZUFjdGlvbkdlc3R1cmVSZWNvZ25pemVyU1BJLmggKi8sCiAJ
CQkJMEM3Nzg1NzkxRjQ1MTMwRjAwRjRFQkI2IC8qIE5TTWVudVNQSS5oICovLAogCQkJCTBDNzc4
NTdBMUY0NTEzMEYwMEY0RUJCNiAvKiBOU1Bhc3RlYm9hcmRTUEkuaCAqLywKQEAgLTU1MSw2ICs1
NTQsNyBAQAogCQkJCTBDMkRBMTRFMUYzQkVCNDkwMERCQzMxNyAvKiBOU0V4dGVuc2lvblNQSS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEMyREExNEYxRjNCRUI0OTAwREJDMzE3IC8qIE5TRmlsZU1h
bmFnZXJTUEkuaCBpbiBIZWFkZXJzICovLAogCQkJCTBDNzc4NTkwMUY0NTEzMEYwMEY0RUJCNiAv
KiBOU0ZvbnRTUEkuaCBpbiBIZWFkZXJzICovLAorCQkJCUExMDgyNkZFMUY1OEE0MzMwMDQ3NzJB
QyAvKiBOU0dyYXBoaWNzU1BJLmggaW4gSGVhZGVycyAqLywKIAkJCQkwQzc3ODU5MTFGNDUxMzBG
MDBGNEVCQjYgLyogTlNJbW1lZGlhdGVBY3Rpb25HZXN0dXJlUmVjb2duaXplclNQSS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMEM3Nzg1OTIxRjQ1MTMwRjAwRjRFQkI2IC8qIE5TTWVudVNQSS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMEM3Nzg1OTMxRjQ1MTMwRjAwRjRFQkI2IC8qIE5TUGFzdGVib2Fy
ZFNQSS5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFs
L3NwaS9jZy9Db3JlR3JhcGhpY3NTUEkuaCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2Nn
L0NvcmVHcmFwaGljc1NQSS5oCmluZGV4IDdjMjkxYzkxNGQ2OWY1NmQ4NmRiYjRhODgxZmIyMzE4
OWM1YTVhNWMuLjMyMjY1YTBlZjZkNGE4NzBhYjQxNmMyNDA0ZDkyZjRmYmQ5ZDZhODEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NnL0NvcmVHcmFwaGljc1NQSS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NnL0NvcmVHcmFwaGljc1NQSS5oCkBAIC0x
MzcsMjEgKzEzNyw3NCBAQCBzdGF0aWMgaW5saW5lIENHRmxvYXQgQ0dGbG9hdE1pbihDR0Zsb2F0
IGEsIENHRmxvYXQgYikgeyByZXR1cm4gaXNuYW4oYSkgPyBiIDogKAogCiB0eXBlZGVmIHN0cnVj
dCBDR0ZvbnRDYWNoZSBDR0ZvbnRDYWNoZTsKIAotI2lmIFBMQVRGT1JNKE1BQykKLXR5cGVkZWYg
dWludDMyX3QgQ0dTQ29ubmVjdGlvbklEOwotdHlwZWRlZiB1aW50MzJfdCBDR1NXaW5kb3dJRDsK
LXR5cGVkZWYgdWludDMyX3QgQ0dTV2luZG93Q291bnQ7Ci10eXBlZGVmIENHU1dpbmRvd0lEICpD
R1NXaW5kb3dJRExpc3Q7CisjaWYgUExBVEZPUk0oQ09DT0EpCiAKIGVudW0gewogICAgIGtDR1NX
aW5kb3dDYXB0dXJlTm9taW5hbFJlc29sdXRpb24gPSAweDAyMDAsCiAgICAga0NHU0NhcHR1cmVJ
Z25vcmVHbG9iYWxDbGlwU2hhcGUgPSAweDA4MDAsCiB9OwogdHlwZWRlZiB1aW50MzJfdCBDR1NX
aW5kb3dDYXB0dXJlT3B0aW9uczsKLSNlbmRpZgorCit0eXBlZGVmIENGX0VOVU0gKGludDMyX3Qs
IENHU3R5bGVEcmF3T3JkZXJpbmcpIHsKKyAgICBrQ0dTdHlsZURyYXdPcmRlcmluZ1N0eWxlT25s
eSA9IDAsCisgICAga0NHU3R5bGVEcmF3T3JkZXJpbmdCZWxvdyA9IDEsCisgICAga0NHU3R5bGVE
cmF3T3JkZXJpbmdBYm92ZSA9IDIsCit9OworCit0eXBlZGVmIENGX0VOVU0gKGludDMyX3QsIENH
Rm9jdXNSaW5nT3JkZXJpbmcpIHsKKyAgICBrQ0dGb2N1c1JpbmdPcmRlcmluZ05vbmUgPSBrQ0dT
dHlsZURyYXdPcmRlcmluZ1N0eWxlT25seSwKKyAgICBrQ0dGb2N1c1JpbmdPcmRlcmluZ0JlbG93
ID0ga0NHU3R5bGVEcmF3T3JkZXJpbmdCZWxvdywKKyAgICBrQ0dGb2N1c1JpbmdPcmRlcmluZ0Fi
b3ZlID0ga0NHU3R5bGVEcmF3T3JkZXJpbmdBYm92ZSwKK307CisKK3R5cGVkZWYgQ0ZfRU5VTSAo
aW50MzJfdCwgQ0dGb2N1c1JpbmdUaW50KSB7CisgICAga0NHRm9jdXNSaW5nVGludEJsdWUgPSAw
LAorICAgIGtDR0ZvY3VzUmluZ1RpbnRHcmFwaGl0ZSA9IDEsCit9OworCitzdHJ1Y3QgQ0dGb2N1
c1JpbmdTdHlsZSB7CisgICAgdW5zaWduZWQgaW50IHZlcnNpb247CisgICAgQ0dGb2N1c1JpbmdU
aW50IHRpbnQ7CisgICAgQ0dGb2N1c1JpbmdPcmRlcmluZyBvcmRlcmluZzsKKyAgICBDR0Zsb2F0
IGFscGhhOworICAgIENHRmxvYXQgcmFkaXVzOworICAgIENHRmxvYXQgdGhyZXNob2xkOworICAg
IENHUmVjdCBib3VuZHM7CisgICAgaW50IGFjY3VtdWxhdGU7Cit9OwordHlwZWRlZiBzdHJ1Y3Qg
Q0dGb2N1c1JpbmdTdHlsZSBDR0ZvY3VzUmluZ1N0eWxlOworCit0eXBlZGVmIENGX0VOVU0odWlu
dDMyX3QsIENHU05vdGlmaWNhdGlvblR5cGUpIHsKKyAgICBrQ0dTRmlyc3RDb25uZWN0aW9uTm90
aWZpY2F0aW9uID0gOTAwLAorICAgIGtDR1NGaXJzdFNlc3Npb25Ob3RpZmljYXRpb24gPSAxNTAw
LAorfTsKKworc3RhdGljIGNvbnN0IENHU05vdGlmaWNhdGlvblR5cGUga0NHU0Nvbm5lY3Rpb25X
aW5kb3dNb2RpZmljYXRpb25zU3RhcnRlZCA9IChDR1NOb3RpZmljYXRpb25UeXBlKShrQ0dTRmly
c3RDb25uZWN0aW9uTm90aWZpY2F0aW9uICsgNik7CitzdGF0aWMgY29uc3QgQ0dTTm90aWZpY2F0
aW9uVHlwZSBrQ0dTQ29ubmVjdGlvbldpbmRvd01vZGlmaWNhdGlvbnNTdG9wcGVkID0gKENHU05v
dGlmaWNhdGlvblR5cGUpKGtDR1NGaXJzdENvbm5lY3Rpb25Ob3RpZmljYXRpb24gKyA3KTsKK3N0
YXRpYyBjb25zdCBDR1NOb3RpZmljYXRpb25UeXBlIGtDR1Nlc3Npb25Db25zb2xlQ29ubmVjdCA9
IGtDR1NGaXJzdFNlc3Npb25Ob3RpZmljYXRpb247CitzdGF0aWMgY29uc3QgQ0dTTm90aWZpY2F0
aW9uVHlwZSBrQ0dTZXNzaW9uQ29uc29sZURpc2Nvbm5lY3QgPSAoQ0dTTm90aWZpY2F0aW9uVHlw
ZSkoa0NHU2Vzc2lvbkNvbnNvbGVDb25uZWN0ICsgMSk7CisKKyNlbmRpZiAvLyBQTEFURk9STShD
T0NPQSkKIAogI2VuZGlmIC8vIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCiAKKyNpZiBQTEFURk9S
TShDT0NPQSkKK3R5cGVkZWYgdWludDMyX3QgQ0dTQnl0ZUNvdW50OwordHlwZWRlZiB1aW50MzJf
dCBDR1NDb25uZWN0aW9uSUQ7Cit0eXBlZGVmIHVpbnQzMl90IENHU1dpbmRvd0NvdW50OwordHlw
ZWRlZiB1aW50MzJfdCBDR1NXaW5kb3dJRDsKKwordHlwZWRlZiBDR1NXaW5kb3dJRCogQ0dTV2lu
ZG93SURMaXN0OwordHlwZWRlZiBzdHJ1Y3QgQ0ZfQlJJREdFRF9UWVBFKGlkKSBDR1NSZWdpb25P
YmplY3QqIENHU1JlZ2lvbk9iajsKK3R5cGVkZWYgc3RydWN0IENGX0JSSURHRURfVFlQRShpZCkg
Q0dTdHlsZSogQ0dTdHlsZVJlZjsKKwordHlwZWRlZiB2b2lkKiBDR1NOb3RpZmljYXRpb25Bcmc7
Cit0eXBlZGVmIHZvaWQqIENHU05vdGlmaWNhdGlvbkRhdGE7CisKK3R5cGVkZWYgdm9pZCAoKkNH
U05vdGlmeUNvbm5lY3Rpb25Qcm9jUHRyKShDR1NOb3RpZmljYXRpb25UeXBlLCB2b2lkKiBkYXRh
LCB1aW50MzJfdCBkYXRhX2xlbmd0aCwgdm9pZCogYXJnLCBDR1NDb25uZWN0aW9uSUQpOwordHlw
ZWRlZiB2b2lkICgqQ0dTTm90aWZ5UHJvY1B0cikoQ0dTTm90aWZpY2F0aW9uVHlwZSwgdm9pZCog
ZGF0YSwgdWludDMyX3QgZGF0YV9sZW5ndGgsIHZvaWQqIGFyZyk7CisjZW5kaWYKKwogV1RGX0VY
VEVSTl9DX0JFR0lOCiAKIENHQ29sb3JSZWYgQ0dDb2xvclRyYW5zZm9ybUNvbnZlcnRDb2xvcihD
R0NvbG9yVHJhbnNmb3JtUmVmLCBDR0NvbG9yUmVmLCBDR0NvbG9yUmVuZGVyaW5nSW50ZW50KTsK
QEAgLTE4Niw2ICsyMzksOCBAQCBDR0RhdGFQcm92aWRlclJlZiBDR1BERkRvY3VtZW50R2V0RGF0
YVByb3ZpZGVyKENHUERGRG9jdW1lbnRSZWYpOwogCiBDR0ZvbnRBbnRpYWxpYXNpbmdTdHlsZSBD
R0NvbnRleHRHZXRGb250QW50aWFsaWFzaW5nU3R5bGUoQ0dDb250ZXh0UmVmKTsKIHZvaWQgQ0dD
b250ZXh0U2V0Rm9udEFudGlhbGlhc2luZ1N0eWxlKENHQ29udGV4dFJlZiwgQ0dGb250QW50aWFs
aWFzaW5nU3R5bGUpOworYm9vbCBDR0NvbnRleHREcmF3c1dpdGhDb3JyZWN0U2hhZG93T2Zmc2V0
cyhDR0NvbnRleHRSZWYpOworQ0dQYXR0ZXJuUmVmIENHUGF0dGVybkNyZWF0ZVdpdGhJbWFnZTIo
Q0dJbWFnZVJlZiwgQ0dBZmZpbmVUcmFuc2Zvcm0sIENHUGF0dGVyblRpbGluZyk7CiAKICNpZiAo
UExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTIw
MCkgfHwgUExBVEZPUk0oSU9TKQogYm9vbCBDR0NvbG9yU3BhY2VVc2VzRXh0ZW5kZWRSYW5nZShD
R0NvbG9yU3BhY2VSZWYpOwpAQCAtMjAzLDEwICsyNTgsMjEgQEAgQ0dDb2xvclNwYWNlUmVmIENH
SU9TdXJmYWNlQ29udGV4dEdldENvbG9yU3BhY2UoQ0dDb250ZXh0UmVmKTsKICNlbmRpZgogCiAj
aWYgUExBVEZPUk0oQ09DT0EpCi1DR1NSZWdpb25FbnVtZXJhdG9yT2JqIENHU1JlZ2lvbkVudW1l
cmF0b3IoQ0dSZWdpb25SZWYpOwotQ0dSZWN0KiBDR1NOZXh0UmVjdChjb25zdCBDR1NSZWdpb25F
bnVtZXJhdG9yT2JqKTsKLUNHRXJyb3IgQ0dTUmVsZWFzZVJlZ2lvbkVudW1lcmF0b3IoY29uc3Qg
Q0dTUmVnaW9uRW51bWVyYXRvck9iaik7CiBDR0NvbG9yU3BhY2VSZWYgQ0dDb250ZXh0Q29weURl
dmljZUNvbG9yU3BhY2UoQ0dDb250ZXh0UmVmKTsKK0NHRXJyb3IgQ0dTTmV3UmVnaW9uV2l0aFJl
Y3QoY29uc3QgQ0dSZWN0KiwgQ0dSZWdpb25SZWYqKTsKK0NHRXJyb3IgQ0dTUGFja2FnZXNFbmFi
bGVDb25uZWN0aW9uT2NjbHVzaW9uTm90aWZpY2F0aW9ucyhDR1NDb25uZWN0aW9uSUQsIGJvb2wg
ZmxhZywgYm9vbCogb3V0Q3VycmVudFZpc2liaWxpdHlTdGF0ZSk7CitDR0Vycm9yIENHU1BhY2th
Z2VzRW5hYmxlQ29ubmVjdGlvbldpbmRvd01vZGlmaWNhdGlvbk5vdGlmaWNhdGlvbnMoQ0dTQ29u
bmVjdGlvbklELCBib29sIGZsYWcsIGJvb2wqIG91dENvbm5lY3Rpb25Jc0N1cnJlbnRseUlkbGUp
OworQ0dFcnJvciBDR1NSZWdpc3RlckNvbm5lY3Rpb25Ob3RpZnlQcm9jKENHU0Nvbm5lY3Rpb25J
RCwgQ0dTTm90aWZ5Q29ubmVjdGlvblByb2NQdHIsIENHU05vdGlmaWNhdGlvblR5cGUsIHZvaWQq
IGFyZyk7CitDR0Vycm9yIENHU1JlZ2lzdGVyTm90aWZ5UHJvYyhDR1NOb3RpZnlQcm9jUHRyLCBD
R1NOb3RpZmljYXRpb25UeXBlLCB2b2lkKiBhcmcpOworQ0dFcnJvciBDR1NSZWxlYXNlUmVnaW9u
KGNvbnN0IENHUmVnaW9uUmVmIENGX1JFTEVBU0VTX0FSR1VNRU5UKTsKK0NHRXJyb3IgQ0dTUmVs
ZWFzZVJlZ2lvbkVudW1lcmF0b3IoY29uc3QgQ0dTUmVnaW9uRW51bWVyYXRvck9iaik7CitDR0Vy
cm9yIENHU1NldFdpbmRvd0FscGhhKENHU0Nvbm5lY3Rpb25JRCwgQ0dTV2luZG93SUQsIGZsb2F0
IGFscGhhKTsKK0NHRXJyb3IgQ0dTU2V0V2luZG93Q2xpcFNoYXBlKENHU0Nvbm5lY3Rpb25JRCwg
Q0dTV2luZG93SUQsIENHUmVnaW9uUmVmIHNoYXBlKTsKK0NHRXJyb3IgQ0dTU2V0V2luZG93V2Fy
cChDR1NDb25uZWN0aW9uSUQsIENHU1dpbmRvd0lELCBpbnQgdywgaW50IGgsIGNvbnN0IGZsb2F0
KiBtZXNoKTsKK0NHUmVjdCogQ0dTTmV4dFJlY3QoY29uc3QgQ0dTUmVnaW9uRW51bWVyYXRvck9i
aik7CitDR1NSZWdpb25FbnVtZXJhdG9yT2JqIENHU1JlZ2lvbkVudW1lcmF0b3IoQ0dSZWdpb25S
ZWYpOworQ0dTdHlsZVJlZiBDR1N0eWxlQ3JlYXRlRm9jdXNSaW5nV2l0aENvbG9yKGNvbnN0IENH
Rm9jdXNSaW5nU3R5bGUqLCBDR0NvbG9yUmVmKTsKK3ZvaWQgQ0dDb250ZXh0U2V0U3R5bGUoQ0dD
b250ZXh0UmVmLCBDR1N0eWxlUmVmKTsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oV0lOKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvbWFjL0hJU2VydmljZXNTUEkuaCBi
L1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL21hYy9ISVNlcnZpY2VzU1BJLmgKaW5kZXggOWYz
NWRjZDRkMDNhNTdhMDg2YjBhMzY1ZGZiMzlkZGZmY2M4MTk4NS4uYTM1NWI5NGZlNjMwOTJlZjVh
Y2QwYjVjOTVlMDNkZDQ2ZTk1MzgxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML3Bh
bC9zcGkvbWFjL0hJU2VydmljZXNTUEkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3Nw
aS9tYWMvSElTZXJ2aWNlc1NQSS5oCkBAIC0yOCwyMSArMjgsNDUgQEAKICNpZiBVU0UoQVBQTEVf
SU5URVJOQUxfU0RLKQogCiAjaW5jbHVkZSA8SElTZXJ2aWNlcy9BWFRleHRNYXJrZXIuaD4KKyNp
bmNsdWRlIDxISVNlcnZpY2VzL0NvcmVEcmFnLmg+CisKKyNlbHNlCisKK2VudW0geworICAgIGtD
b3JlRHJhZ0ltYWdlU3BlY1ZlcnNpb25PbmUgPSAxLAorfTsKKworc3RydWN0IENvcmVEcmFnSW1h
Z2VTcGVjIHsKKyAgICBVSW50MzIgdmVyc2lvbjsKKyAgICBTSW50MzIgcGl4ZWxzV2lkZTsKKyAg
ICBTSW50MzIgcGl4ZWxzSGlnaDsKKyAgICBTSW50MzIgYml0c1BlclNhbXBsZTsKKyAgICBTSW50
MzIgc2FtcGxlc1BlclBpeGVsOworICAgIFNJbnQzMiBiaXRzUGVyUGl4ZWw7CisgICAgU0ludDMy
IGJ5dGVzUGVyUm93OworICAgIEJvb2xlYW4gaXNQbGFuYXI7CisgICAgQm9vbGVhbiBoYXNBbHBo
YTsKKyAgICBjb25zdCBVSW50OCogZGF0YVs1XTsKK307CiAKICNlbmRpZgogCi10eXBlZGVmIGNv
bnN0IHN0cnVjdCBfX0FYVGV4dE1hcmtlciAqQVhUZXh0TWFya2VyUmVmOwotdHlwZWRlZiBjb25z
dCBzdHJ1Y3QgX19BWFRleHRNYXJrZXJSYW5nZSAqQVhUZXh0TWFya2VyUmFuZ2VSZWY7Cit0eXBl
ZGVmIGNvbnN0IHN0cnVjdCBfX0FYVGV4dE1hcmtlciogQVhUZXh0TWFya2VyUmVmOwordHlwZWRl
ZiBjb25zdCBzdHJ1Y3QgX19BWFRleHRNYXJrZXJSYW5nZSogQVhUZXh0TWFya2VyUmFuZ2VSZWY7
Cit0eXBlZGVmIHN0cnVjdCBDb3JlRHJhZ0ltYWdlU3BlYyBDb3JlRHJhZ0ltYWdlU3BlYzsKK3R5
cGVkZWYgc3RydWN0IE9wYXF1ZUNvcmVEcmFnKiBDb3JlRHJhZ1JlZjsKIAogV1RGX0VYVEVSTl9D
X0JFR0lOCiAKLUNGVHlwZUlEIEFYVGV4dE1hcmtlckdldFR5cGVJRCgpOwotQ0ZUeXBlSUQgQVhU
ZXh0TWFya2VyUmFuZ2VHZXRUeXBlSUQoKTsKLUFYVGV4dE1hcmtlclJlZiBBWFRleHRNYXJrZXJD
cmVhdGUoQ0ZBbGxvY2F0b3JSZWYsIGNvbnN0IFVJbnQ4KiBieXRlcywgQ0ZJbmRleCBsZW5ndGgp
OwotQ0ZJbmRleCBBWFRleHRNYXJrZXJHZXRMZW5ndGgoQVhUZXh0TWFya2VyUmVmKTsKLWNvbnN0
IFVJbnQ4KiBBWFRleHRNYXJrZXJHZXRCeXRlUHRyKEFYVGV4dE1hcmtlclJlZik7CiBBWFRleHRN
YXJrZXJSYW5nZVJlZiBBWFRleHRNYXJrZXJSYW5nZUNyZWF0ZShDRkFsbG9jYXRvclJlZiwgQVhU
ZXh0TWFya2VyUmVmIHN0YXJ0TWFya2VyLCBBWFRleHRNYXJrZXJSZWYgZW5kTWFya2VyKTsKK0FY
VGV4dE1hcmtlclJlZiBBWFRleHRNYXJrZXJDcmVhdGUoQ0ZBbGxvY2F0b3JSZWYsIGNvbnN0IFVJ
bnQ4KiBieXRlcywgQ0ZJbmRleCBsZW5ndGgpOwogQVhUZXh0TWFya2VyUmVmIEFYVGV4dE1hcmtl
clJhbmdlQ29weVN0YXJ0TWFya2VyKEFYVGV4dE1hcmtlclJhbmdlUmVmKTsKIEFYVGV4dE1hcmtl
clJlZiBBWFRleHRNYXJrZXJSYW5nZUNvcHlFbmRNYXJrZXIoQVhUZXh0TWFya2VyUmFuZ2VSZWYp
OworQ0ZJbmRleCBBWFRleHRNYXJrZXJHZXRMZW5ndGgoQVhUZXh0TWFya2VyUmVmKTsKK0NGVHlw
ZUlEIEFYVGV4dE1hcmtlckdldFR5cGVJRCgpOworQ0ZUeXBlSUQgQVhUZXh0TWFya2VyUmFuZ2VH
ZXRUeXBlSUQoKTsKK0NvcmVEcmFnUmVmIENvcmVEcmFnR2V0Q3VycmVudERyYWcoKTsKK09TU3Rh
dHVzIENvcmVEcmFnU2V0SW1hZ2UoQ29yZURyYWdSZWYsIENHUG9pbnQgaW1hZ2VPZmZzZXQsIENv
cmVEcmFnSW1hZ2VTcGVjKiwgQ0dTUmVnaW9uT2JqIGltYWdlU2hhcGUsIGZsb2F0IG92ZXJhbGxB
bHBoYSk7Citjb25zdCBVSW50OCogQVhUZXh0TWFya2VyR2V0Qnl0ZVB0cihBWFRleHRNYXJrZXJS
ZWYpOwogCiBXVEZfRVhURVJOX0NfRU5ECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwv
cGFsL3NwaS9tYWMvTlNHcmFwaGljc1NQSS5oIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkv
bWFjL05TR3JhcGhpY3NTUEkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yYWE4MGNkMjFlYjZhMWYwYzQyOWJhY2Ix
MWRhNWRjNTNkOTEwMjZmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3Bh
bC9zcGkvbWFjL05TR3JhcGhpY3NTUEkuaApAQCAtMCwwICsxLDU3IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I3ByYWdtYSBvbmNlCisKKyNpZiBQTEFURk9STShNQUMpCisKKyNpbXBvcnQgPEFwcEtpdC9BcHBL
aXQuaD4KKworI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCisKKyNpbXBvcnQgPEFwcEtpdC9O
U0dyYXBoaWNzQ29udGV4dFByaXZhdGUuaD4KKyNpbXBvcnQgPEFwcEtpdC9OU0dyYXBoaWNzX1By
aXZhdGUuaD4KKworI2Vsc2UKKworQGludGVyZmFjZSBOU0NHU0NvbnRleHQgOiBOU0dyYXBoaWNz
Q29udGV4dCB7CisgICAgQ0dDb250ZXh0UmVmIF9jZ3NDb250ZXh0OworfQorQGVuZAorCitAaW50
ZXJmYWNlIE5TV2luZG93R3JhcGhpY3NDb250ZXh0IDogTlNDR1NDb250ZXh0IHsKKyAgICBDR1NX
aW5kb3dJRCBfY2dzV2luZG93SUQ7Cit9CitAZW5kCisKKyNlbmRpZgorCitXVEZfRVhURVJOX0Nf
QkVHSU4KKworQk9PTCBOU0luaXRpYWxpemVDR0ZvY3VzUmluZ1N0eWxlRm9yVGltZShOU0ZvY3Vz
UmluZ1BsYWNlbWVudCwgQ0dGb2N1c1JpbmdTdHlsZSosIE5TVGltZUludGVydmFsKTsKKworV1RG
X0VYVEVSTl9DX0VORAorCisjZW5kaWYgLy8gUExBVEZPUk0oTUFDKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAppbmRleCAxOGFjZGRi
ZTdlZmZmYTQyOWQxODU3ODM5YWI2ZTY2NzQ2NmEzZDg1Li5jMTRiMmE1NWU2YWE3ZjkwZDIwMDNj
NDY2ODQzNDMyMmUwODU0NTlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc0NvbnRleHQuaApAQCAtNDQ1LDYgKzQ0NSw3IEBAIHB1YmxpYzoKICNp
ZiBQTEFURk9STShNQUMpCiAgICAgdm9pZCBkcmF3Rm9jdXNSaW5nKGNvbnN0IFBhdGgmLCBkb3Vi
bGUgdGltZU9mZnNldCwgYm9vbCYgbmVlZHNSZWRyYXcpOwogICAgIHZvaWQgZHJhd0ZvY3VzUmlu
Zyhjb25zdCBWZWN0b3I8RmxvYXRSZWN0PiYsIGRvdWJsZSB0aW1lT2Zmc2V0LCBib29sJiBuZWVk
c1JlZHJhdyk7CisgICAgc3RhdGljIENHQ29sb3JSZWYgZm9jdXNSaW5nQ29sb3IoKTsKICNlbmRp
ZgogCiAgICAgdm9pZCBzZXRMaW5lQ2FwKExpbmVDYXApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwCmluZGV4IDY2OTZjOTYwYTU4NzVmMDQz
MTcyOWIxMTlhYjZiMjQxMjdkN2E1Y2EuLjAyMjhlMzkyOWEyNjZlYTk3MzJiYmE4ZWU2MDU3M2Zh
NTA5YTM1MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZVNvdXJjZS5jcHAKQEAgLTE4NCw3ICsxODQsNyBAQCBTdWJzYW1wbGluZ0xldmVsIEltYWdlU291
cmNlOjpzdWJzYW1wbGluZ0xldmVsRm9yU2NhbGVGYWN0b3IoR3JhcGhpY3NDb250ZXh0JiBjbwog
ewogI2lmIFVTRShDRykKICAgICAvLyBOZXZlciB1c2Ugc3Vic2FtcGxlZCBpbWFnZXMgZm9yIGRy
YXdpbmcgaW50byBQREYgY29udGV4dHMuCi0gICAgaWYgKHdrQ0dDb250ZXh0SXNQREZDb250ZXh0
KGNvbnRleHQucGxhdGZvcm1Db250ZXh0KCkpKQorICAgIGlmIChDR0NvbnRleHRHZXRUeXBlKGNv
bnRleHQucGxhdGZvcm1Db250ZXh0KCkpID09IGtDR0NvbnRleHRUeXBlUERGKQogICAgICAgICBy
ZXR1cm4gU3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVsdDsKIAogICAgIGZsb2F0IHNjYWxlID0gc3Rk
OjptaW4oZmxvYXQoMSksIHN0ZDo6bWF4KHNjYWxlRmFjdG9yLndpZHRoKCksIHNjYWxlRmFjdG9y
LmhlaWdodCgpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAKaW5kZXggZDU4ODM5YWU1OGJiNTEwZDUwN2Q0
NjViMDYxOTJlMDIwYmFkNWFiZC4uNThlNTI3ODg2MmI3M2VlMGU0ZWNlOTU3ZGM0YjU3ZDk1Y2Vl
MjVlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3Jh
cGhpY3NDb250ZXh0Q0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcApAQCAtOTg3LDcgKzk4Nyw3IEBAIHZvaWQgR3JhcGhp
Y3NDb250ZXh0OjpjbGlwT3V0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKICAgICAvLyBoYXMgY2Vy
dGFpbiB0cmFuc2Zvcm1zIHRoYXQgYXJlbid0IGp1c3QgYSB0cmFuc2xhdGlvbiBvciBhIHNjYWxl
LiBBbmQgZHVlIHRvIDxyZGFyOi8vcHJvYmxlbS8xNDYzNDQ1Mz4KICAgICAvLyB3ZSBjYW5ub3Qg
dXNlIGl0IGluIGZvciBhIHByaW50aW5nIGNvbnRleHQgZWl0aGVyLgogICAgIGNvbnN0IEFmZmlu
ZVRyYW5zZm9ybSYgY3RtID0gZ2V0Q1RNKCk7Ci0gICAgYm9vbCBjYW5Vc2VDR1JlY3RJbmZpbml0
ZSA9ICF3a0NHQ29udGV4dElzUERGQ29udGV4dChwbGF0Zm9ybUNvbnRleHQoKSkgJiYgKCFpc0Fj
Y2VsZXJhdGVkQ29udGV4dCgpIHx8ICghY3RtLmIoKSAmJiAhY3RtLmMoKSkpOworICAgIGJvb2wg
Y2FuVXNlQ0dSZWN0SW5maW5pdGUgPSBDR0NvbnRleHRHZXRUeXBlKHBsYXRmb3JtQ29udGV4dCgp
KSAhPSBrQ0dDb250ZXh0VHlwZVBERiAmJiAoIWlzQWNjZWxlcmF0ZWRDb250ZXh0KCkgfHwgKCFj
dG0uYigpICYmICFjdG0uYygpKSk7CiAgICAgQ0dSZWN0IHJlY3RzWzJdID0geyBjYW5Vc2VDR1Jl
Y3RJbmZpbml0ZSA/IENHUmVjdEluZmluaXRlIDogQ0dDb250ZXh0R2V0Q2xpcEJvdW5kaW5nQm94
KHBsYXRmb3JtQ29udGV4dCgpKSwgcmVjdCB9OwogICAgIENHQ29udGV4dEJlZ2luUGF0aChwbGF0
Zm9ybUNvbnRleHQoKSk7CiAgICAgQ0dDb250ZXh0QWRkUmVjdHMocGxhdGZvcm1Db250ZXh0KCks
IHJlY3RzLCAyKTsKQEAgLTEwODUsNyArMTA4NSw3IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0Ojpz
dXBwb3J0c1RyYW5zcGFyZW5jeUxheWVycygpCiAKIHN0YXRpYyB2b2lkIGFwcGx5U2hhZG93T2Zm
c2V0V29ya2Fyb3VuZElmTmVlZGVkKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgQ0dG
bG9hdCYgeE9mZnNldCwgQ0dGbG9hdCYgeU9mZnNldCkKIHsKLSNpZiBQTEFURk9STShJT1MpCisj
aWYgUExBVEZPUk0oSU9TKSB8fCBQTEFURk9STShXSU4pCiAgICAgVU5VU0VEX1BBUkFNKGNvbnRl
eHQpOwogICAgIFVOVVNFRF9QQVJBTSh4T2Zmc2V0KTsKICAgICBVTlVTRURfUEFSQU0oeU9mZnNl
dCk7CkBAIC0xMDkzLDcgKzEwOTMsNyBAQCBzdGF0aWMgdm9pZCBhcHBseVNoYWRvd09mZnNldFdv
cmthcm91bmRJZk5lZWRlZChjb25zdCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsCiAgICAgaWYg
KGNvbnRleHQuaXNBY2NlbGVyYXRlZENvbnRleHQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
aWYgKHdrQ0dDb250ZXh0RHJhd3NXaXRoQ29ycmVjdFNoYWRvd09mZnNldHMoY29udGV4dC5wbGF0
Zm9ybUNvbnRleHQoKSkpCisgICAgaWYgKENHQ29udGV4dERyYXdzV2l0aENvcnJlY3RTaGFkb3dP
ZmZzZXRzKGNvbnRleHQucGxhdGZvcm1Db250ZXh0KCkpKQogICAgICAgICByZXR1cm47CiAKICAg
ICAvLyBXb3JrIGFyb3VuZCA8cmRhcjovL3Byb2JsZW0vNTUzOTM4OD4gYnkgZW5zdXJpbmcgdGhh
dCB0aGUgb2Zmc2V0cyB3aWxsIGdldCB0cnVuY2F0ZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BhdHRlcm5DRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jZy9QYXR0ZXJuQ0cuY3BwCmluZGV4IDk4ZTY5ZGU4ZWQ4OWEyNGU4
ODZhMTQyYTA4Mzk1OWUyYzcyMTM1ZjAuLmQwZTIxYzg3M2FhMmRjMzBjNTNjYzhiYWI0ZjhiMDQx
NDM0MDAwOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L1BhdHRlcm5DRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
UGF0dGVybkNHLmNwcApAQCAtMzEsOCArMzEsOCBAQAogCiAjaW5jbHVkZSAiQWZmaW5lVHJhbnNm
b3JtLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCi0KICNpbmNsdWRlIDxDb3JlR3Jh
cGhpY3MvQ29yZUdyYXBoaWNzLmg+CisjaW5jbHVkZSA8cGFsL3NwaS9jZy9Db3JlR3JhcGhpY3NT
UEkuaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogCiAjaWYgUExBVEZPUk0oQ09DT0Ep
CkBAIC03NCw3ICs3NCw3IEBAIENHUGF0dGVyblJlZiBQYXR0ZXJuOjpjcmVhdGVQbGF0Zm9ybVBh
dHRlcm4oY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB1c2VyU3BhY2VUcmFuCiAgICAgLy8gSWYgd2Un
cmUgcmVwZWF0aW5nIGluIGJvdGggZGlyZWN0aW9ucywgd2UgY2FuIHVzZSBpbWFnZS1iYWNrZWQg
cGF0dGVybnMKICAgICAvLyBpbnN0ZWFkIG9mIGN1c3RvbSBwYXR0ZXJucywgYW5kIGF2b2lkIHRp
bGluZy1lZGdlIHBpeGVsIGNyYWNrcy4KICAgICBpZiAobV9yZXBlYXRYICYmIG1fcmVwZWF0WSkK
LSAgICAgICAgcmV0dXJuIHdrQ0dQYXR0ZXJuQ3JlYXRlV2l0aEltYWdlQW5kVHJhbnNmb3JtKHRp
bGVJbWFnZSgpLm5hdGl2ZUltYWdlKCkuZ2V0KCksIHBhdHRlcm5UcmFuc2Zvcm0sIHdrUGF0dGVy
blRpbGluZ0NvbnN0YW50U3BhY2luZyk7CisgICAgICAgIHJldHVybiBDR1BhdHRlcm5DcmVhdGVX
aXRoSW1hZ2UyKHRpbGVJbWFnZSgpLm5hdGl2ZUltYWdlKCkuZ2V0KCksIHBhdHRlcm5UcmFuc2Zv
cm0sIGtDR1BhdHRlcm5UaWxpbmdDb25zdGFudFNwYWNpbmcpOwogCiAgICAgLy8gSWYgRkxUX01B
WCBzaG91bGQgYWxzbyBiZSB1c2VkIGZvciB4U3RlcCBvciB5U3RlcCwgbm90aGluZyBpcyByZW5k
ZXJlZC4gVXNpbmcgZnJhY3Rpb25zIG9mIEZMVF9NQVggYWxzbwogICAgIC8vIHJlc3VsdCBpbiBu
b3RoaW5nIGJlaW5nIHJlbmRlcmVkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0Q29jb2EubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRDb2NvYS5tbQppbmRleCA2
N2Y0ZGViMTcyYjZjMGZlMjNjMWIxZDFmYjA5ZWFiOGFkYWUxMzFiLi40NWQ3NzM5ZDY0NmQ3OGEx
N2U3ZDcyMTg5ZDJkN2NjMzExZGNjN2NkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRDb2NvYS5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRDb2NvYS5tbQpA
QCAtMjksMTAgKzI5LDEzIEBACiAjaW1wb3J0ICJHcmFwaGljc0NvbnRleHRDRy5oIgogI2ltcG9y
dCAiR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlQ0cuaCIKICNpbXBvcnQgIkludFJlY3Qu
aCIKKyNpbXBvcnQgPHBhbC9zcGkvY2cvQ29yZUdyYXBoaWNzU1BJLmg+CisjaW1wb3J0IDxwYWwv
c3BpL21hYy9OU0dyYXBoaWNzU1BJLmg+CisjaW1wb3J0IDx3dGYvU3RkTGliRXh0cmFzLmg+CisK
ICNpZiBVU0UoQVBQS0lUKQogI2ltcG9ydCA8QXBwS2l0L0FwcEtpdC5oPgogI2VuZGlmCi0jaW1w
b3J0IDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKICNpZiBQTEFURk9STShJT1MpCiAjaW1wb3J0ICJD
b2xvci5oIgpAQCAtNDMsNyArNDYsNiBAQAogI2lmICFQTEFURk9STShJT1MpCiAjaW1wb3J0ICJM
b2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHQuaCIKICNlbmRpZgotI2ltcG9ydCAiV2ViQ29yZVN5
c3RlbUludGVyZmFjZS5oIgogCiBAY2xhc3MgTlNDb2xvcjsKIApAQCAtNTcsMTEgKzU5LDQ3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIC8vIGV4Y2VwdGlvbnMgZm9yIHRob3NlLgogCiAjaWYgIVBM
QVRGT1JNKElPUykKK0NHQ29sb3JSZWYgR3JhcGhpY3NDb250ZXh0Ojpmb2N1c1JpbmdDb2xvcigp
Cit7CisgICAgc3RhdGljIENHQ29sb3JSZWYgY29sb3I7CisgICAgaWYgKCFjb2xvcikgeworICAg
ICAgICBDR0Zsb2F0IGNvbG9yQ29tcG9uZW50c1tdID0geyAwLjUsIDAuNzUsIDEuMCwgMS4wIH07
CisgICAgICAgIGF1dG8gY29sb3JTcGFjZSA9IGFkb3B0Q0YoQ0dDb2xvclNwYWNlQ3JlYXRlV2l0
aE5hbWUoa0NHQ29sb3JTcGFjZVNSR0IpKTsKKyAgICAgICAgY29sb3IgPSBDR0NvbG9yQ3JlYXRl
KGNvbG9yU3BhY2UuZ2V0KCksIGNvbG9yQ29tcG9uZW50cyk7CisgICAgfQorICAgIHJldHVybiBj
b2xvcjsKK30KKworc3RhdGljIGJvb2wgZHJhd0ZvY3VzUmluZ0F0VGltZShDR0NvbnRleHRSZWYg
Y29udGV4dCwgTlNUaW1lSW50ZXJ2YWwgdGltZU9mZnNldCkKK3sKKyAgICBDR0ZvY3VzUmluZ1N0
eWxlIGZvY3VzUmluZ1N0eWxlOworICAgIEJPT0wgbmVlZHNSZXBhaW50ID0gTlNJbml0aWFsaXpl
Q0dGb2N1c1JpbmdTdHlsZUZvclRpbWUoTlNGb2N1c1JpbmdPbmx5LCAmZm9jdXNSaW5nU3R5bGUs
IHRpbWVPZmZzZXQpOworCisgICAgLy8gV2Ugd2FudCB0byByZXNwZWN0IHRoZSBDR0NvbnRleHQg
Y2xpcHBpbmcgYW5kIGFsc28gbm90IG92ZXJwYWludCBhbnkKKyAgICAvLyBleGlzdGluZyBmb2N1
cyByaW5nLiBUaGUgd2F5IHRvIGRvIHRoaXMgaXMgc2V0IGFjY3VtdWxhdGUgdG8KKyAgICAvLyAt
MS4gQWNjb3JkaW5nIHRvIENvcmVHcmFwaGljcywgdGhlIHJlYXNvbmluZyBmb3IgdGhpcyBiZWhh
dmlvciBoYXMgYmVlbgorICAgIC8vIGxvc3QgaW4gdGltZS4KKyAgICBmb2N1c1JpbmdTdHlsZS5h
Y2N1bXVsYXRlID0gLTE7CisgICAgYXV0byBzdHlsZSA9IGFkb3B0Q0YoQ0dTdHlsZUNyZWF0ZUZv
Y3VzUmluZ1dpdGhDb2xvcigmZm9jdXNSaW5nU3R5bGUsIEdyYXBoaWNzQ29udGV4dDo6Zm9jdXNS
aW5nQ29sb3IoKSkpOworCisgICAgQ0dDb250ZXh0U2F2ZUdTdGF0ZShjb250ZXh0KTsKKyAgICBD
R0NvbnRleHRTZXRTdHlsZShjb250ZXh0LCBzdHlsZS5nZXQoKSk7CisgICAgQ0dDb250ZXh0Rmls
bFBhdGgoY29udGV4dCk7CisgICAgQ0dDb250ZXh0UmVzdG9yZUdTdGF0ZShjb250ZXh0KTsKKwor
ICAgIHJldHVybiBuZWVkc1JlcGFpbnQ7Cit9CisKK3N0YXRpYyB2b2lkIGRyYXdGb2N1c1Jpbmco
Q0dDb250ZXh0UmVmIGNvbnRleHQpCit7CisgICAgZHJhd0ZvY3VzUmluZ0F0VGltZShjb250ZXh0
LCBEQkxfTUFYKTsKK30KKwogc3RhdGljIHZvaWQgZHJhd0ZvY3VzUmluZ1RvQ29udGV4dChDR0Nv
bnRleHRSZWYgY29udGV4dCwgQ0dQYXRoUmVmIGZvY3VzUmluZ1BhdGgpCiB7CiAgICAgQ0dDb250
ZXh0QmVnaW5QYXRoKGNvbnRleHQpOwogICAgIENHQ29udGV4dEFkZFBhdGgoY29udGV4dCwgZm9j
dXNSaW5nUGF0aCk7Ci0gICAgd2tEcmF3Rm9jdXNSaW5nKGNvbnRleHQsIG51bGxwdHIsIDApOwor
ICAgIGRyYXdGb2N1c1JpbmcoY29udGV4dCk7CiB9CiAKIHN0YXRpYyBib29sIGRyYXdGb2N1c1Jp
bmdUb0NvbnRleHRBdFRpbWUoQ0dDb250ZXh0UmVmIGNvbnRleHQsIENHUGF0aFJlZiBmb2N1c1Jp
bmdQYXRoLCBkb3VibGUgdGltZU9mZnNldCkKQEAgLTY5LDcgKzEwNyw3IEBAIHN0YXRpYyBib29s
IGRyYXdGb2N1c1JpbmdUb0NvbnRleHRBdFRpbWUoQ0dDb250ZXh0UmVmIGNvbnRleHQsIENHUGF0
aFJlZiBmb2N1c1JpCiAgICAgVU5VU0VEX1BBUkFNKHRpbWVPZmZzZXQpOwogICAgIENHQ29udGV4
dEJlZ2luUGF0aChjb250ZXh0KTsKICAgICBDR0NvbnRleHRBZGRQYXRoKGNvbnRleHQsIGZvY3Vz
UmluZ1BhdGgpOwotICAgIHJldHVybiB3a0RyYXdGb2N1c1JpbmdBdFRpbWUoY29udGV4dCwgc3Rk
OjpudW1lcmljX2xpbWl0czxkb3VibGU+OjptYXgoKSk7CisgICAgcmV0dXJuIGRyYXdGb2N1c1Jp
bmdBdFRpbWUoY29udGV4dCwgc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjptYXgoKSk7CiB9
CiAjZW5kaWYgLy8gIVBMQVRGT1JNKElPUykKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW9zL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2VJT1MubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pb3MvV2ViQ29yZVN5c3RlbUludGVyZmFjZUlPUy5tbQppbmRleCAwOWExODI4
MTRkMTQwMTNiN2M4OGU4ZWViZjAzZDlhZTBjZmEyODY5Li43NTdkMDQ1ZjVjNTg1NDQ0OTZmMmRk
NjkwNTBiZDFhZjg2OGMyZWRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
b3MvV2ViQ29yZVN5c3RlbUludGVyZmFjZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pb3MvV2ViQ29yZVN5c3RlbUludGVyZmFjZUlPUy5tbQpAQCAtMjcsMTAgKzI3LDggQEAK
ICNpbXBvcnQgIldlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaCIKIAogV0VCQ09SRV9FWFBPUlQgdm9p
ZCAoKndrQ0FMYXllckVudW1lcmF0ZVJlY3RzQmVpbmdEcmF3bldpdGhCbG9jaykoQ0FMYXllciAq
LCBDR0NvbnRleHRSZWYgY29udGV4dCwgdm9pZCAoXmJsb2NrKShDR1JlY3QgcmVjdCkpOwotV0VC
Q09SRV9FWFBPUlQgQ0dQYXR0ZXJuUmVmICgqd2tDR1BhdHRlcm5DcmVhdGVXaXRoSW1hZ2VBbmRU
cmFuc2Zvcm0pKENHSW1hZ2VSZWYsIENHQWZmaW5lVHJhbnNmb3JtLCBpbnQpOwogV0VCQ09SRV9F
WFBPUlQgdm9pZCAoKndrQ2xlYXJHbHlwaFZlY3Rvcikodm9pZCogZ2x5cGhzKTsKIFdFQkNPUkVf
RVhQT1JUIE9TU3RhdHVzICgqd2tDb252ZXJ0Q2hhclRvR2x5cGhzKSh2b2lkKiBzdHlsZUdyb3Vw
LCBjb25zdCBVbmlDaGFyKiwgdW5zaWduZWQgbnVtQ2hhcmFjdGVycywgdm9pZCogZ2x5cGhzKTsK
LVdFQkNPUkVfRVhQT1JUIGJvb2wgKCp3a0NHQ29udGV4dElzUERGQ29udGV4dCkoQ0dDb250ZXh0
UmVmKTsKIFdFQkNPUkVfRVhQT1JUIGlkICgqd2tDcmVhdGVOU1VSTENvbm5lY3Rpb25EZWxlZ2F0
ZVByb3h5KSh2b2lkKTsKIFdFQkNPUkVfRVhQT1JUIHZvaWQgKCp3a1NldENPTk5FQ1RQcm94eUZv
clN0cmVhbSkoQ0ZSZWFkU3RyZWFtUmVmLCBDRlN0cmluZ1JlZiBwcm94eUhvc3QsIENGTnVtYmVy
UmVmIHByb3h5UG9ydCk7CiBXRUJDT1JFX0VYUE9SVCB2b2lkICgqd2tTZXRDT05ORUNUUHJveHlB
dXRob3JpemF0aW9uRm9yU3RyZWFtKShDRlJlYWRTdHJlYW1SZWYsIENGU3RyaW5nUmVmIHByb3h5
QXV0aG9yaXphdGlvblN0cmluZyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tYWMvUGFzdGVib2FyZE1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0
ZWJvYXJkTWFjLm1tCmluZGV4IDIwZTYzNWMwOTA1YWU4OTZjN2JiNTQyMWM4NTZiMjFiMmE0NDZi
NDkuLjgxODlkYmI4NjliNTFlYzFmNmMwMDE0YWM4YTZjMmE1MzAyODM2OTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tCkBAIC01Miw2ICs1Miw4IEBA
CiAjaW1wb3J0ICJXZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmgiCiAjaW1wb3J0ICJXZWJOU0F0dHJp
YnV0ZWRTdHJpbmdFeHRyYXMuaCIKICNpbXBvcnQgIm1hcmt1cC5oIgorI2ltcG9ydCA8cGFsL3Nw
aS9jZy9Db3JlR3JhcGhpY3NTUEkuaD4KKyNpbXBvcnQgPHBhbC9zcGkvbWFjL0hJU2VydmljZXNT
UEkuaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbXBvcnQgPHd0Zi9TdGRMaWJFeHRy
YXMuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KQEAgLTY2OSw2ICs2NzEs
ODAgQEAgVmVjdG9yPFN0cmluZz4gUGFzdGVib2FyZDo6cmVhZEZpbGVuYW1lcygpCiB9CiAKICNp
ZiBFTkFCTEUoRFJBR19TVVBQT1JUKQorc3RhdGljIHZvaWQgZmxpcEltYWdlU3BlYyhDb3JlRHJh
Z0ltYWdlU3BlYyogaW1hZ2VTcGVjKQoreworICAgIHVuc2lnbmVkIGNoYXIqIHRlbXBSb3cgPSAo
dW5zaWduZWQgY2hhciopZmFzdE1hbGxvYyhpbWFnZVNwZWMtPmJ5dGVzUGVyUm93KTsKKyAgICBp
bnQgcGxhbmVzID0gaW1hZ2VTcGVjLT5pc1BsYW5hciA/IGltYWdlU3BlYy0+c2FtcGxlc1BlclBp
eGVsIDogMTsKKworICAgIGZvciAoaW50IHAgPSAwOyBwIDwgcGxhbmVzOyBwKyspIHsKKyAgICAg
ICAgdW5zaWduZWQgY2hhciogdG9wUm93ID0gKHVuc2lnbmVkIGNoYXIqKWltYWdlU3BlYy0+ZGF0
YVtwXTsKKyAgICAgICAgdW5zaWduZWQgY2hhciogYm90Um93ID0gdG9wUm93ICsgKGltYWdlU3Bl
Yy0+cGl4ZWxzSGlnaCAtIDEpICogaW1hZ2VTcGVjLT5ieXRlc1BlclJvdzsKKyAgICAgICAgZm9y
IChpbnQgaSA9IDA7IGkgPCBpbWFnZVNwZWMtPnBpeGVsc0hpZ2ggLyAyOyBpKyssIHRvcFJvdyAr
PSBpbWFnZVNwZWMtPmJ5dGVzUGVyUm93LCBib3RSb3cgLT0gaW1hZ2VTcGVjLT5ieXRlc1BlclJv
dykgeworICAgICAgICAgICAgYmNvcHkodG9wUm93LCAgdGVtcFJvdywgaW1hZ2VTcGVjLT5ieXRl
c1BlclJvdyk7CisgICAgICAgICAgICBiY29weShib3RSb3csICB0b3BSb3csICBpbWFnZVNwZWMt
PmJ5dGVzUGVyUm93KTsKKyAgICAgICAgICAgIGJjb3B5KHRlbXBSb3csIGJvdFJvdywgIGltYWdl
U3BlYy0+Ynl0ZXNQZXJSb3cpOworICAgICAgICB9CisgICAgfQorCisgICAgZmFzdEZyZWUodGVt
cFJvdyk7Cit9CisKK3N0YXRpYyB2b2lkIHNldERyYWdJbWFnZUltcGwoTlNJbWFnZSAqaW1hZ2Us
IE5TUG9pbnQgb2Zmc2V0KQoreworICAgIGJvb2wgZmxpcEltYWdlOworICAgIE5TU2l6ZSBpbWFn
ZVNpemUgPSBpbWFnZS5zaXplOworICAgIENHUmVjdCBpbWFnZVJlY3QgPSBDR1JlY3RNYWtlKDAs
IDAsIGltYWdlU2l6ZS53aWR0aCwgaW1hZ2VTaXplLmhlaWdodCk7CisgICAgTlNJbWFnZVJlcCAq
aW1hZ2VSZXAgPSBbaW1hZ2UgYmVzdFJlcHJlc2VudGF0aW9uRm9yUmVjdDpOU1JlY3RGcm9tQ0dS
ZWN0KGltYWdlUmVjdCkgY29udGV4dDpuaWwgaGludHM6bmlsXTsKKyAgICBSZXRhaW5QdHI8TlNC
aXRtYXBJbWFnZVJlcD4gYml0bWFwSW1hZ2U7CisgICAgaWYgKCFpbWFnZVJlcCB8fCAhW2ltYWdl
UmVwIGlzS2luZE9mQ2xhc3M6W05TQml0bWFwSW1hZ2VSZXAgY2xhc3NdXSB8fCAhTlNFcXVhbFNp
emVzKGltYWdlUmVwLnNpemUsIGltYWdlU2l6ZSkpIHsKKyAgICAgICAgW2ltYWdlIGxvY2tGb2N1
c107CisgICAgICAgIGJpdG1hcEltYWdlID0gYWRvcHROUyhbW05TQml0bWFwSW1hZ2VSZXAgYWxs
b2NdIGluaXRXaXRoRm9jdXNlZFZpZXdSZWN0OiooTlNSZWN0ICopJmltYWdlUmVjdF0pOworICAg
ICAgICBbaW1hZ2UgdW5sb2NrRm9jdXNdOworICAgICAgICAKKyAgICAgICAgLy8gd2UgbWF5IGhh
dmUgdG8gZmxpcCB0aGUgYml0cyB3ZSBqdXN0IHJlYWQgaWYgdGhlIGltYWdlIHdhcyBmbGlwcGVk
IHNpbmNlIGl0IG1lYW5zIHRoZSBjYWNoZSB3YXMgYWxzbworICAgICAgICAvLyBhbmQgQ29yZURy
YWdTZXRJbWFnZSBjYW4ndCB0YWtlIGEgdHJhbnNmb3JtIGZvciByZW5kZXJpbmcuCisjcHJhZ21h
IGNsYW5nIGRpYWdub3N0aWMgcHVzaAorI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIGlnbm9yZWQg
Ii1XZGVwcmVjYXRlZC1kZWNsYXJhdGlvbnMiCisgICAgICAgIGZsaXBJbWFnZSA9IGltYWdlLmlz
RmxpcHBlZDsKKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwb3AKKyAgICB9IGVsc2UgeworICAg
ICAgICBmbGlwSW1hZ2UgPSBmYWxzZTsKKyAgICAgICAgYml0bWFwSW1hZ2UgPSAoTlNCaXRtYXBJ
bWFnZVJlcCAqKWltYWdlUmVwOworICAgIH0KKyAgICBBU1NFUlQoYml0bWFwSW1hZ2UpOworCisg
ICAgQ29yZURyYWdJbWFnZVNwZWMgaW1hZ2VTcGVjOworICAgIGltYWdlU3BlYy52ZXJzaW9uID0g
a0NvcmVEcmFnSW1hZ2VTcGVjVmVyc2lvbk9uZTsKKyAgICBpbWFnZVNwZWMucGl4ZWxzV2lkZSA9
IFtiaXRtYXBJbWFnZSBwaXhlbHNXaWRlXTsKKyAgICBpbWFnZVNwZWMucGl4ZWxzSGlnaCA9IFti
aXRtYXBJbWFnZSBwaXhlbHNIaWdoXTsKKyAgICBpbWFnZVNwZWMuYml0c1BlclNhbXBsZSA9IFti
aXRtYXBJbWFnZSBiaXRzUGVyU2FtcGxlXTsKKyAgICBpbWFnZVNwZWMuc2FtcGxlc1BlclBpeGVs
ID0gW2JpdG1hcEltYWdlIHNhbXBsZXNQZXJQaXhlbF07CisgICAgaW1hZ2VTcGVjLmJpdHNQZXJQ
aXhlbCA9IFtiaXRtYXBJbWFnZSBiaXRzUGVyUGl4ZWxdOworICAgIGltYWdlU3BlYy5ieXRlc1Bl
clJvdyA9IFtiaXRtYXBJbWFnZSBieXRlc1BlclJvd107CisgICAgaW1hZ2VTcGVjLmlzUGxhbmFy
ID0gW2JpdG1hcEltYWdlIGlzUGxhbmFyXTsKKyAgICBpbWFnZVNwZWMuaGFzQWxwaGEgPSBbYml0
bWFwSW1hZ2UgaGFzQWxwaGFdOworICAgIFtiaXRtYXBJbWFnZSBnZXRCaXRtYXBEYXRhUGxhbmVz
Oih1bnNpZ25lZCBjaGFyKiopaW1hZ2VTcGVjLmRhdGFdOworCisgICAgLy8gaWYgaW1hZ2Ugd2Fz
IGZsaXBwZWQsIHdlIGhhdmUgYW4gdXBzaWRlIGRvd24gYml0bWFwIHNpbmNlIHRoZSBjYWNoZSBp
cyByZW5kZXJlZCBmbGlwcGVkCisgICAgaWYgKGZsaXBJbWFnZSkKKyAgICAgICAgZmxpcEltYWdl
U3BlYygmaW1hZ2VTcGVjKTsKKworICAgIENHU1JlZ2lvbk9iaiBpbWFnZVNoYXBlOworICAgIE9T
U3RhdHVzIGVycm9yID0gQ0dTTmV3UmVnaW9uV2l0aFJlY3QoJmltYWdlUmVjdCwgJmltYWdlU2hh
cGUpOworICAgIEFTU0VSVChlcnJvciA9PSBrQ0dFcnJvclN1Y2Nlc3MpOworICAgIGlmIChlcnJv
ciAhPSBrQ0dFcnJvclN1Y2Nlc3MpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIG1ha2Ugc3Vy
ZSBpbWFnZSBoYXMgaW50ZWdlciBvZmZzZXQKKyAgICBDR1BvaW50IGltYWdlT2Zmc2V0ID0gey1v
ZmZzZXQueCwgLShpbWFnZVNpemUuaGVpZ2h0IC0gb2Zmc2V0LnkpfTsKKyAgICBpbWFnZU9mZnNl
dC54ID0gZmxvb3IoaW1hZ2VPZmZzZXQueCArIDAuNSk7CisgICAgaW1hZ2VPZmZzZXQueSA9IGZs
b29yKGltYWdlT2Zmc2V0LnkgKyAwLjUpOworCisgICAgZXJyb3IgPSBDb3JlRHJhZ1NldEltYWdl
KENvcmVEcmFnR2V0Q3VycmVudERyYWcoKSwgaW1hZ2VPZmZzZXQsICZpbWFnZVNwZWMsIGltYWdl
U2hhcGUsIDEuMCk7CisgICAgQ0dTUmVsZWFzZVJlZ2lvbihpbWFnZVNoYXBlKTsKKyAgICBBU1NF
UlQoZXJyb3IgPT0ga0NHRXJyb3JTdWNjZXNzKTsKK30KKwogdm9pZCBQYXN0ZWJvYXJkOjpzZXRE
cmFnSW1hZ2UoRHJhZ0ltYWdlIGltYWdlLCBjb25zdCBJbnRQb2ludCYgbG9jYXRpb24pCiB7CiAg
ICAgLy8gRG9uJ3QgYWxsb3cgc2V0dGluZyB0aGUgZHJhZyBpbWFnZSBpZiBzb21lb25lIGtlcHQg
YSBwYXN0ZWJvYXJkIGFuZCBpcyB0cnlpbmcgdG8gc2V0IHRoZSBpbWFnZSB0b28gbGF0ZS4KQEAg
LTY3Nyw3ICs3NTMsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6OnNldERyYWdJbWFnZShEcmFnSW1hZ2Ug
aW1hZ2UsIGNvbnN0IEludFBvaW50JiBsb2NhdGlvbikKIAogICAgIC8vIERhc2hib2FyZCB3YW50
cyB0byBiZSBhYmxlIHRvIHNldCB0aGUgZHJhZyBpbWFnZSBkdXJpbmcgZHJhZ2dpbmcsIGJ1dCBD
b2NvYSBkb2VzIG5vdCBhbGxvdyB0aGlzLgogICAgIC8vIEluc3RlYWQgd2UgbXVzdCBkcm9wIGRv
d24gdG8gdGhlIENvcmVHcmFwaGljcyBBUEkuCi0gICAgd2tTZXREcmFnSW1hZ2UoaW1hZ2UuZ2V0
KCkuZ2V0KCksIGxvY2F0aW9uKTsKKyAgICBzZXREcmFnSW1hZ2VJbXBsKGltYWdlLmdldCgpLmdl
dCgpLCBsb2NhdGlvbik7CiAKICAgICAvLyBIYWNrOiBXZSBtdXN0IHBvc3QgYW4gZXZlbnQgdG8g
d2FrZSB1cCB0aGUgTlNEcmFnTWFuYWdlciwgd2hpY2ggaXMgc2l0dGluZyBpbiBhIG5leHRFdmVu
dCBjYWxsCiAgICAgLy8gdXAgdGhlIHN0YWNrIGZyb20gdXMgYmVjYXVzZSB0aGUgQ29yZUZvdW5k
YXRpb24gZHJhZyBtYW5hZ2VyIGRvZXMgbm90IHVzZSB0aGUgcnVuIGxvb3AgYnkgaXRzZWxmLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtRXZlbnRGYWN0
b3J5TWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtRXZlbnRGYWN0
b3J5TWFjLm1tCmluZGV4IDc3YjljYjk2MzViYmZiMGJjMmM1NDU0MGJmZjY0MDUxNzFiN2M1NTku
LjkyOWFhNTc1OGYzZTFkYmNjYzU5MDAxODkyOTdlYjE1ZTU3MDExODcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybUV2ZW50RmFjdG9yeU1hYy5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1FdmVudEZhY3RvcnlNYWMubW0K
QEAgLTY3Niw3ICs2NzYsNyBAQCBzdGF0aWMgaW50IHR5cGVGb3JFdmVudChOU0V2ZW50ICpldmVu
dCkKIHsKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihbTlNNZW51IG1lbnVUeXBlRm9yRXZl
bnQ6ZXZlbnRdKTsKIH0KLSAgICAKKwogdm9pZCBnZXRXaGVlbEV2ZW50RGVsdGFzKE5TRXZlbnQg
KmV2ZW50LCBmbG9hdCYgZGVsdGFYLCBmbG9hdCYgZGVsdGFZLCBCT09MJiBjb250aW51b3VzKQog
ewogICAgIEFTU0VSVChldmVudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tYWMvU2Nyb2xsYmFyVGhlbWVNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMv
U2Nyb2xsYmFyVGhlbWVNYWMubW0KaW5kZXggYzRjMjg3NzY4MzU3NDk2YWViMjg4ZmE0MWYwZGQ5
NWQyZDdjYzI4OC4uNmQwNWI4NmM2M2QwNWY3YjZkMTQ3MzE3ZWZkMjdmZjM0MTU4MzE5MyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbGJhclRoZW1lTWFjLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxiYXJUaGVtZU1hYy5tbQpA
QCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUgIlNjcm9sbFZpZXcuaCIKICNpbmNsdWRlICJXZWJD
b3JlU3lzdGVtSW50ZXJmYWNlLmgiCiAjaW5jbHVkZSA8Q2FyYm9uL0NhcmJvbi5oPgorI2luY2x1
ZGUgPHBhbC9zcGkvY2cvQ29yZUdyYXBoaWNzU1BJLmg+CiAjaW5jbHVkZSA8cGFsL3NwaS9tYWMv
TlNTY3JvbGxlckltcFNQSS5oPgogI2luY2x1ZGUgPHd0Zi9CbG9ja09iakNFeGNlcHRpb25zLmg+
CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KQEAgLTU3Myw3ICs1NzQsNyBAQCBzdGF0aWMgUmV0
YWluUHRyPENHQ29sb3JSZWY+IGxpbmVuQmFja2dyb3VuZENvbG9yKCkKICAgICBpZiAoIWNnSW1h
Z2UpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgUmV0YWluUHRyPENHUGF0dGVyblJl
Zj4gcGF0dGVybiA9IGFkb3B0Q0Yod2tDR1BhdHRlcm5DcmVhdGVXaXRoSW1hZ2VBbmRUcmFuc2Zv
cm0oY2dJbWFnZSwgQ0dBZmZpbmVUcmFuc2Zvcm1JZGVudGl0eSwgd2tQYXR0ZXJuVGlsaW5nTm9E
aXN0b3J0aW9uKSk7CisgICAgUmV0YWluUHRyPENHUGF0dGVyblJlZj4gcGF0dGVybiA9IGFkb3B0
Q0YoQ0dQYXR0ZXJuQ3JlYXRlV2l0aEltYWdlMihjZ0ltYWdlLCBDR0FmZmluZVRyYW5zZm9ybUlk
ZW50aXR5LCBrQ0dQYXR0ZXJuVGlsaW5nTm9EaXN0b3J0aW9uKSk7CiAgICAgUmV0YWluUHRyPENH
Q29sb3JTcGFjZVJlZj4gY29sb3JTcGFjZSA9IGFkb3B0Q0YoQ0dDb2xvclNwYWNlQ3JlYXRlUGF0
dGVybigwKSk7CiAKICAgICBjb25zdCBDR0Zsb2F0IGFscGhhID0gMS4wOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1RoZW1lTWFjLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL1RoZW1lTWFjLm1tCmluZGV4IDkwZjEwNDFlZmY3ZjBjNjQ3ZDZmODM5MWMw
MjdmNTNkMWFiNDQ3MTQuLjhhMTkyNjVjZjVkODJmMjAyNWZmNTAxZWVlMmVmOTUxZjg0Mzc4NTMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9UaGVtZU1hYy5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvVGhlbWVNYWMubW0KQEAgLTM2LDYgKzM2LDcg
QEAKICNpbXBvcnQgIldlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaCIKICNpbXBvcnQgPENhcmJvbi9D
YXJib24uaD4KICNpbXBvcnQgPHBhbC9zcGkvY29jb2EvTlNCdXR0b25DZWxsU1BJLmg+CisjaW1w
b3J0IDxwYWwvc3BpL21hYy9OU0dyYXBoaWNzU1BJLmg+CiAjaW1wb3J0IDx3dGYvQmxvY2tPYmpD
RXhjZXB0aW9ucy5oPgogI2ltcG9ydCA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW1wb3J0IDx3
dGYvU3RkTGliRXh0cmFzLmg+CkBAIC0zNDksOSArMzUwLDMyIEBAIHN0YXRpYyBOU0J1dHRvbkNl
bGwgKnNoYXJlZENoZWNrYm94Q2VsbChjb25zdCBDb250cm9sU3RhdGVzJiBzdGF0ZXMsIGNvbnN0
IEludFNpCiAgICAgcmV0dXJuIGNoZWNrYm94Q2VsbDsKIH0KIAorc3RhdGljIGJvb2wgZHJhd0Nl
bGxGb2N1c1JpbmdXaXRoRnJhbWVBdFRpbWUoTlNDZWxsICpjZWxsLCBOU1JlY3QgY2VsbEZyYW1l
LCBOU1ZpZXcgKmNvbnRyb2xWaWV3LCBOU1RpbWVJbnRlcnZhbCB0aW1lT2Zmc2V0KQoreworICAg
IENHQ29udGV4dFJlZiBjZ0NvbnRleHQgPSAoQ0dDb250ZXh0UmVmKVtbTlNHcmFwaGljc0NvbnRl
eHQgY3VycmVudENvbnRleHRdIGdyYXBoaWNzUG9ydF07CisgICAgQ0dDb250ZXh0U2F2ZUdTdGF0
ZShjZ0NvbnRleHQpOworCisgICAgQ0dGb2N1c1JpbmdTdHlsZSBmb2N1c1JpbmdTdHlsZTsKKyAg
ICBib29sIG5lZWRzUmVwYWludCA9IE5TSW5pdGlhbGl6ZUNHRm9jdXNSaW5nU3R5bGVGb3JUaW1l
KE5TRm9jdXNSaW5nT25seSwgJmZvY3VzUmluZ1N0eWxlLCB0aW1lT2Zmc2V0KTsKKyAgICAvLyBX
ZSB3YW50IHRvIHJlc3BlY3QgdGhlIENHQ29udGV4dCBjbGlwcGluZyBhbmQgYWxzbyBub3Qgb3Zl
cnBhaW50IGFueQorICAgIC8vIGV4aXN0aW5nIGZvY3VzIHJpbmcuIFRoZSB3YXkgdG8gZG8gdGhp
cyBpcyBzZXQgYWNjdW11bGF0ZSB0bworICAgIC8vIC0xLiBBY2NvcmRpbmcgdG8gQ29yZUdyYXBo
aWNzLCB0aGUgcmVhc29uaW5nIGZvciB0aGlzIGJlaGF2aW9yIGhhcyBiZWVuCisgICAgLy8gbG9z
dCBpbiB0aW1lLgorICAgIGZvY3VzUmluZ1N0eWxlLmFjY3VtdWxhdGUgPSAtMTsKKyAgICBhdXRv
IHN0eWxlID0gYWRvcHRDRihDR1N0eWxlQ3JlYXRlRm9jdXNSaW5nV2l0aENvbG9yKCZmb2N1c1Jp
bmdTdHlsZSwgR3JhcGhpY3NDb250ZXh0Ojpmb2N1c1JpbmdDb2xvcigpKSk7CisgICAgQ0dDb250
ZXh0U2V0U3R5bGUoY2dDb250ZXh0LCBzdHlsZS5nZXQoKSk7CisKKyAgICBDR0NvbnRleHRCZWdp
blRyYW5zcGFyZW5jeUxheWVyV2l0aFJlY3QoY2dDb250ZXh0LCBOU1JlY3RUb0NHUmVjdChjZWxs
RnJhbWUpLCAwKTsKKyAgICBbY2VsbCBkcmF3Rm9jdXNSaW5nTWFza1dpdGhGcmFtZTpjZWxsRnJh
bWUgaW5WaWV3OmNvbnRyb2xWaWV3XTsKKyAgICBDR0NvbnRleHRFbmRUcmFuc3BhcmVuY3lMYXll
cihjZ0NvbnRleHQpOworICAgIENHQ29udGV4dFJlc3RvcmVHU3RhdGUoY2dDb250ZXh0KTsKKwor
ICAgIHJldHVybiBuZWVkc1JlcGFpbnQ7Cit9CisKIHN0YXRpYyBib29sIGRyYXdDZWxsRm9jdXNS
aW5nKE5TQ2VsbCAqY2VsbCwgTlNSZWN0IGNlbGxGcmFtZSwgTlNWaWV3ICpjb250cm9sVmlldykK
IHsKLSAgICB3a0RyYXdDZWxsRm9jdXNSaW5nV2l0aEZyYW1lQXRUaW1lKGNlbGwsIGNlbGxGcmFt
ZSwgY29udHJvbFZpZXcsIHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6bWF4KCkpOworICAg
IGRyYXdDZWxsRm9jdXNSaW5nV2l0aEZyYW1lQXRUaW1lKGNlbGwsIGNlbGxGcmFtZSwgY29udHJv
bFZpZXcsIHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6bWF4KCkpOwogICAgIHJldHVybiBm
YWxzZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNv
cmVTeXN0ZW1JbnRlcmZhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3Jl
U3lzdGVtSW50ZXJmYWNlLmgKaW5kZXggOGExMjQ4MjdjMDQwOWQ2NjNmNzgxZGYyN2I0ZTQzYmNm
YWZiZDIyNy4uNjZjMDBiNDg2MzIyZjFmODQyYjc3YjNlZDZiYzU5MThjOGY2ZmQ2NCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2Uu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZVN5c3RlbUludGVyZmFj
ZS5oCkBAIC0xMjYsMTQgKzEyNiw3IEBAIHR5cGVkZWYgZW51bSB7CiAgICAgd2tQYXR0ZXJuVGls
aW5nQ29uc3RhbnRTcGFjaW5nCiB9IHdrUGF0dGVyblRpbGluZzsKICNpZiAhUExBVEZPUk0oSU9T
KQotZXh0ZXJuIGJvb2wgKCp3a0NHQ29udGV4dERyYXdzV2l0aENvcnJlY3RTaGFkb3dPZmZzZXRz
KShDR0NvbnRleHRSZWYpOwotI2VuZGlmCi1leHRlcm4gQ0dQYXR0ZXJuUmVmICgqd2tDR1BhdHRl
cm5DcmVhdGVXaXRoSW1hZ2VBbmRUcmFuc2Zvcm0pKENHSW1hZ2VSZWYsIENHQWZmaW5lVHJhbnNm
b3JtLCBpbnQpOwotI2lmICFQTEFURk9STShJT1MpCiBleHRlcm4gdm9pZCAoKndrRHJhd0JlemVs
ZWRUZXh0QXJlYSkoTlNSZWN0LCBCT09MIGVuYWJsZWQpOwotZXh0ZXJuIHZvaWQgKCp3a0RyYXdG
b2N1c1JpbmcpKENHQ29udGV4dFJlZiwgQ0dDb2xvclJlZiwgaW50KTsKLWV4dGVybiBib29sICgq
d2tEcmF3Rm9jdXNSaW5nQXRUaW1lKShDR0NvbnRleHRSZWYsIE5TVGltZUludGVydmFsIHRpbWUp
OwotZXh0ZXJuIGJvb2wgKCp3a0RyYXdDZWxsRm9jdXNSaW5nV2l0aEZyYW1lQXRUaW1lKShOU0Nl
bGwgKmNlbGwsIE5TUmVjdCBjZWxsRnJhbWUsIE5TVmlldyAqY29udHJvbFZpZXcsIE5TVGltZUlu
dGVydmFsIHRpbWUpOwogZXh0ZXJuIHZvaWQgKCp3a0RyYXdNZWRpYVNsaWRlclRyYWNrKShDR0Nv
bnRleHRSZWYgY29udGV4dCwgQ0dSZWN0IHJlY3QsIGZsb2F0IHRpbWVMb2FkZWQsIGZsb2F0IGN1
cnJlbnRUaW1lLAogICAgIGZsb2F0IGR1cmF0aW9uLCB1bnNpZ25lZCBzdGF0ZSk7CiBleHRlcm4g
dm9pZCAoKndrRHJhd01lZGlhVUlQYXJ0KShpbnQgcGFydCwgQ0dDb250ZXh0UmVmIGNvbnRleHQs
IENHUmVjdCByZWN0LCB1bnNpZ25lZCBzdGF0ZSk7CkBAIC0xNTYsOSArMTQ5LDYgQEAgdHlwZWRl
ZiBlbnVtIHsKIH0gd2tNZWRpYVVJQ29udHJvbFR5cGU7CiBleHRlcm4gTlNDb250cm9sICooKndr
Q3JlYXRlTWVkaWFVSUNvbnRyb2wpKGludCk7CiAKLWV4dGVybiB2b2lkICgqd2tXaW5kb3dTZXRB
bHBoYSkoTlNXaW5kb3cgKiwgZmxvYXQpOwotZXh0ZXJuIHZvaWQgKCp3a1dpbmRvd1NldFNjYWxl
ZEZyYW1lKShOU1dpbmRvdyAqLCBOU1JlY3QsIE5TUmVjdCk7Ci0KIGV4dGVybiB1bnNpZ25lZCAo
KndrUVRJbmNsdWRlT25seU1vZGVybk1lZGlhRmlsZVR5cGVzKSh2b2lkKTsKIGV4dGVybiB2b2lk
ICgqd2tRVE1vdmllRGlzYWJsZUNvbXBvbmVudCkodWludDMyX3RbNV0pOwogZXh0ZXJuIGZsb2F0
ICgqd2tRVE1vdmllTWF4VGltZUxvYWRlZCkoUVRNb3ZpZSopOwpAQCAtMTcyLDkgKzE2Miw3IEBA
IGV4dGVybiBOU0FycmF5ICooKndrUVRHZXRTaXRlc0luTWVkaWFEb3dubG9hZENhY2hlKSgpOwog
ZXh0ZXJuIHZvaWQgKCp3a1FUQ2xlYXJNZWRpYURvd25sb2FkQ2FjaGVGb3JTaXRlKShOU1N0cmlu
ZyAqc2l0ZSk7CiBleHRlcm4gdm9pZCAoKndrUVRDbGVhck1lZGlhRG93bmxvYWRDYWNoZSkoKTsK
IGV4dGVybiB2b2lkICgqd2tTZXRDb29raWVTdG9yYWdlUHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCko
Qk9PTCk7Ci1leHRlcm4gdm9pZCAoKndrU2V0RHJhZ0ltYWdlKShOU0ltYWdlKiwgTlNQb2ludCBv
ZmZzZXQpOwogI2VuZGlmCi1leHRlcm4gYm9vbCAoKndrQ0dDb250ZXh0SXNQREZDb250ZXh0KShD
R0NvbnRleHRSZWYpOwogZXh0ZXJuIHZvaWQgKCp3a1NldENPTk5FQ1RQcm94eUZvclN0cmVhbSko
Q0ZSZWFkU3RyZWFtUmVmLCBDRlN0cmluZ1JlZiBwcm94eUhvc3QsIENGTnVtYmVyUmVmIHByb3h5
UG9ydCk7CiBleHRlcm4gdm9pZCAoKndrU2V0Q09OTkVDVFByb3h5QXV0aG9yaXphdGlvbkZvclN0
cmVhbSkoQ0ZSZWFkU3RyZWFtUmVmLCBDRlN0cmluZ1JlZiBwcm94eUF1dGhvcml6YXRpb25TdHJp
bmcpOwogZXh0ZXJuIENGSFRUUE1lc3NhZ2VSZWYgKCp3a0NvcHlDT05ORUNUUHJveHlSZXNwb25z
ZSkoQ0ZSZWFkU3RyZWFtUmVmLCBDRlVSTFJlZiByZXNwb25zZVVSTCwgQ0ZTdHJpbmdSZWYgcHJv
eHlIb3N0LCBDRk51bWJlclJlZiBwcm94eVBvcnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2UubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZVN5c3RlbUludGVyZmFjZS5tbQppbmRleCAyNzJiNTU1N2Uy
MzlmM2MxZTFkNDVhOTRmYjdiMWU0NTM0NjE3ZGYyLi4xM2I4NDk1YTkwZmVkM2IyMDIzZDUyM2Yw
YzU0YjE3ZmUyMGNlMWI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMv
V2ViQ29yZVN5c3RlbUludGVyZmFjZS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
YWMvV2ViQ29yZVN5c3RlbUludGVyZmFjZS5tbQpAQCAtMzEsMTIgKzMxLDcgQEAKICNpbXBvcnQg
PEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgogCiB2b2lkICgqd2tDQUxheWVyRW51bWVyYXRlUmVj
dHNCZWluZ0RyYXduV2l0aEJsb2NrKShDQUxheWVyICosIENHQ29udGV4dFJlZiBjb250ZXh0LCB2
b2lkICheYmxvY2spKENHUmVjdCByZWN0KSk7Ci1ib29sICgqd2tDR0NvbnRleHREcmF3c1dpdGhD
b3JyZWN0U2hhZG93T2Zmc2V0cykoQ0dDb250ZXh0UmVmKTsKLUNHUGF0dGVyblJlZiAoKndrQ0dQ
YXR0ZXJuQ3JlYXRlV2l0aEltYWdlQW5kVHJhbnNmb3JtKShDR0ltYWdlUmVmLCBDR0FmZmluZVRy
YW5zZm9ybSwgaW50KTsKIHZvaWQgKCp3a0RyYXdCZXplbGVkVGV4dEFyZWEpKE5TUmVjdCwgQk9P
TCBlbmFibGVkKTsKLXZvaWQgKCp3a0RyYXdGb2N1c1JpbmcpKENHQ29udGV4dFJlZiwgQ0dDb2xv
clJlZiwgaW50KTsKLWJvb2wgKCp3a0RyYXdGb2N1c1JpbmdBdFRpbWUpKENHQ29udGV4dFJlZiwg
TlNUaW1lSW50ZXJ2YWwpOwotYm9vbCAoKndrRHJhd0NlbGxGb2N1c1JpbmdXaXRoRnJhbWVBdFRp
bWUpKE5TQ2VsbCosIE5TUmVjdCwgTlNWaWV3KiwgTlNUaW1lSW50ZXJ2YWwpOwogdm9pZCAoKndr
RHJhd01lZGlhU2xpZGVyVHJhY2spKENHQ29udGV4dFJlZiBjb250ZXh0LCBDR1JlY3QgcmVjdCwg
ZmxvYXQgdGltZUxvYWRlZCwgZmxvYXQgY3VycmVudFRpbWUsCiAgICAgZmxvYXQgZHVyYXRpb24s
IHVuc2lnbmVkIHN0YXRlKTsKIEJPT0wgKCp3a0hpdFRlc3RNZWRpYVVJUGFydCkoaW50IHBhcnQs
IENHUmVjdCBib3VuZHMsIENHUG9pbnQgcG9pbnQpOwpAQCAtNDQsOCArMzksNiBAQCB2b2lkICgq
d2tEcmF3TWVkaWFVSVBhcnQpKGludCBwYXJ0LCBDR0NvbnRleHRSZWYgY29udGV4dCwgQ0dSZWN0
IHJlY3QsIHVuc2lnbmVkCiB2b2lkICgqd2tNZWFzdXJlTWVkaWFVSVBhcnQpKGludCBwYXJ0LCBD
R1JlY3QgKmJvdW5kcywgQ0dTaXplICpuYXR1cmFsU2l6ZSk7CiBOU1ZpZXcgKigqd2tDcmVhdGVN
ZWRpYVVJQmFja2dyb3VuZFZpZXcpKHZvaWQpOwogTlNDb250cm9sICooKndrQ3JlYXRlTWVkaWFV
SUNvbnRyb2wpKGludCk7Ci12b2lkICgqd2tXaW5kb3dTZXRBbHBoYSkoTlNXaW5kb3cgKiwgZmxv
YXQpOwotdm9pZCAoKndrV2luZG93U2V0U2NhbGVkRnJhbWUpKE5TV2luZG93ICosIE5TUmVjdCwg
TlNSZWN0KTsKIE5TVGltZUludGVydmFsICgqd2tHZXROU1VSTFJlc3BvbnNlQ2FsY3VsYXRlZEV4
cGlyYXRpb24pKE5TVVJMUmVzcG9uc2UgKnJlc3BvbnNlKTsKIEJPT0wgKCp3a0dldE5TVVJMUmVz
cG9uc2VNdXN0UmV2YWxpZGF0ZSkoTlNVUkxSZXNwb25zZSAqcmVzcG9uc2UpOwogVUludDggKCp3
a0dldE5TRXZlbnRLZXlDaGFyKShOU0V2ZW50ICopOwpAQCAtNjMsOCArNTYsNiBAQCBOU0FycmF5
ICooKndrUVRHZXRTaXRlc0luTWVkaWFEb3dubG9hZENhY2hlKSgpOwogdm9pZCAoKndrUVRDbGVh
ck1lZGlhRG93bmxvYWRDYWNoZUZvclNpdGUpKE5TU3RyaW5nICpzaXRlKTsKIHZvaWQgKCp3a1FU
Q2xlYXJNZWRpYURvd25sb2FkQ2FjaGUpKCk7CiAKLXZvaWQgKCp3a1NldERyYWdJbWFnZSkoTlNJ
bWFnZSosIE5TUG9pbnQgb2Zmc2V0KTsKLWJvb2wgKCp3a0NHQ29udGV4dElzUERGQ29udGV4dCko
Q0dDb250ZXh0UmVmKTsKIHZvaWQgKCp3a1NldENPTk5FQ1RQcm94eUZvclN0cmVhbSkoQ0ZSZWFk
U3RyZWFtUmVmLCBDRlN0cmluZ1JlZiBwcm94eUhvc3QsIENGTnVtYmVyUmVmIHByb3h5UG9ydCk7
CiB2b2lkICgqd2tTZXRDT05ORUNUUHJveHlBdXRob3JpemF0aW9uRm9yU3RyZWFtKShDRlJlYWRT
dHJlYW1SZWYsIENGU3RyaW5nUmVmIHByb3h5QXV0aG9yaXphdGlvblN0cmluZyk7CiBDRkhUVFBN
ZXNzYWdlUmVmICgqd2tDb3B5Q09OTkVDVFByb3h5UmVzcG9uc2UpKENGUmVhZFN0cmVhbVJlZiwg
Q0ZVUkxSZWYgcmVzcG9uc2VVUkwsIENGU3RyaW5nUmVmIHByb3h5SG9zdCwgQ0ZOdW1iZXJSZWYg
cHJveHlQb3J0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJX
aW5kb3dBbmltYXRpb24ubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViV2luZG93
QW5pbWF0aW9uLm1tCmluZGV4IDhhYmM4NDBiNzNjYzY0NWM4YWM0MDZkZWFmYWU5NDIyY2RjMzUz
ZTIuLmNhNTU5ZGYwYmNhOWI2MjRkZTJmYzA0MmEyZjNhMTU2Yzg3MGE4MmYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJXaW5kb3dBbmltYXRpb24ubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYldpbmRvd0FuaW1hdGlvbi5tbQpAQCAtMjks
NiArMjksNyBAQAogCiAjaW1wb3J0ICJGbG9hdENvbnZlcnNpb24uaCIKICNpbXBvcnQgIldlYkNv
cmVTeXN0ZW1JbnRlcmZhY2UuaCIKKyNpbXBvcnQgPHBhbC9zcGkvY2cvQ29yZUdyYXBoaWNzU1BJ
Lmg+CiAjaW1wb3J0IDx3dGYvQXNzZXJ0aW9ucy5oPgogI2ltcG9ydCA8d3RmL01hdGhFeHRyYXMu
aD4KIApAQCAtMTA5LDYgKzExMCw1OSBAQCAtIChOU1JlY3QpY3VycmVudEZyYW1lCiAgICAgcmV0
dXJuIHNjYWxlZFJlY3QoX2ZpbmFsRnJhbWUsIF9pbml0aWFsRnJhbWUsIFtzZWxmIGN1cnJlbnRW
YWx1ZV0pOwogfQogCitzdGF0aWMgdm9pZCBmbGlwUmVjdChOU1JlY3QgKnJlY3QpCit7CisgICAg
cmVjdC0+b3JpZ2luLnkgPSBOU01heFkoWyhOU1NjcmVlbiAqKVtbTlNTY3JlZW4gc2NyZWVuc10g
b2JqZWN0QXRJbmRleDowXSBmcmFtZV0pIC0gTlNNYXhZKCpyZWN0KTsKK30KKworc3RhdGljIENH
U0Nvbm5lY3Rpb25JRCBtYWluV2luZG93U2VydmVyQ29ubmVjdGlvbklEKCkKK3sKKyAgICBzdGF0
aWMgQ0dTQ29ubmVjdGlvbklEIGNnc0lkOworICAgIGlmICghY2dzSWQpCisgICAgICAgIGNnc0lk
ID0gQ0dTTWFpbkNvbm5lY3Rpb25JRCgpOworICAgIHJldHVybiBjZ3NJZDsKK30KKworc3RhdGlj
IHZvaWQgc2V0U2NhbGVkRnJhbWVGb3JXaW5kb3coTlNXaW5kb3cgKndpbmRvdywgTlNSZWN0IHNj
YWxlRnJhbWUsIE5TUmVjdCBub25TY2FsZWRGcmFtZSkKK3sKKyAgICBpZiAoTlNFcXVhbFJlY3Rz
KHNjYWxlRnJhbWUsIG5vblNjYWxlZEZyYW1lKSkgeworICAgICAgICBDR1NTZXRXaW5kb3dXYXJw
KG1haW5XaW5kb3dTZXJ2ZXJDb25uZWN0aW9uSUQoKSwgW3dpbmRvdyB3aW5kb3dOdW1iZXJdLCAw
LCAwLCBOVUxMKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBmbG9hdCBtZXNo
WzE2XTsKKyAgICAKKyAgICBmbGlwUmVjdCgmc2NhbGVGcmFtZSk7CisgICAgZmxpcFJlY3QoJm5v
blNjYWxlZEZyYW1lKTsKKyAgICAKKyAgICAvLyB0b3AtbGVmdCBwb2ludCAodG8gYW5kIGZyb20p
CisgICAgbWVzaFswXSA9IDA7CisgICAgbWVzaFsxXSA9IDA7CisgICAgbWVzaFsyXSA9IE5TTWlu
WChzY2FsZUZyYW1lKTsKKyAgICBtZXNoWzNdID0gTlNNaW5ZKHNjYWxlRnJhbWUpOworICAgIAor
ICAgIC8vIHRvcC1yaWdodCBwb2ludCAodG8gYW5kIGZyb20pCisgICAgbWVzaFs0XSA9IE5TV2lk
dGgobm9uU2NhbGVkRnJhbWUpOworICAgIG1lc2hbNV0gPSAwOworICAgIG1lc2hbNl0gPSBOU01h
eFgoc2NhbGVGcmFtZSk7CisgICAgbWVzaFs3XSA9IE5TTWluWShzY2FsZUZyYW1lKTsKKyAgICAK
KyAgICAvLyBib3R0b20tbGVmdCAodG8gYW5kIGZyb20pCisgICAgbWVzaFs4XSA9IDA7CisgICAg
bWVzaFs5XSA9IE5TSGVpZ2h0KG5vblNjYWxlZEZyYW1lKTsKKyAgICBtZXNoWzEwXSA9IE5TTWlu
WChzY2FsZUZyYW1lKTsKKyAgICBtZXNoWzExXSA9IE5TTWF4WShzY2FsZUZyYW1lKTsKKyAgICAK
KyAgICAvLyBib3R0b20tcmlnaHQgKHRvIGFuZCBmcm9tKQorICAgIG1lc2hbMTJdID0gTlNXaWR0
aChub25TY2FsZWRGcmFtZSk7CisgICAgbWVzaFsxM10gPSBOU0hlaWdodChub25TY2FsZWRGcmFt
ZSk7CisgICAgbWVzaFsxNF0gPSBOU01heFgoc2NhbGVGcmFtZSk7CisgICAgbWVzaFsxNV0gPSBO
U01heFkoc2NhbGVGcmFtZSk7CisgICAgCisgICAgLy8gQXBwbHkgdGhlIHdhcnAuCisgICAgQ0dT
U2V0V2luZG93V2FycChtYWluV2luZG93U2VydmVyQ29ubmVjdGlvbklEKCksIFt3aW5kb3cgd2lu
ZG93TnVtYmVyXSwgMiwgMiwgbWVzaCk7Cit9CisKIC0gKHZvaWQpc2V0Q3VycmVudFByb2dyZXNz
OihOU0FuaW1hdGlvblByb2dyZXNzKXByb2dyZXNzCiB7CiAgICAgaWYgKCFfd2luZG93KQpAQCAt
MTE3LDcgKzE3MSw3IEBAIC0gKHZvaWQpc2V0Q3VycmVudFByb2dyZXNzOihOU0FuaW1hdGlvblBy
b2dyZXNzKXByb2dyZXNzCiAgICAgW3N1cGVyIHNldEN1cnJlbnRQcm9ncmVzczpwcm9ncmVzc107
CiAKICAgICBOU1JlY3QgY3VycmVudFJlY3QgPSBbc2VsZiBjdXJyZW50RnJhbWVdOwotICAgIHdr
V2luZG93U2V0U2NhbGVkRnJhbWUoX3dpbmRvdywgY3VycmVudFJlY3QsIF9yZWFsRnJhbWUpOwor
ICAgIHNldFNjYWxlZEZyYW1lRm9yV2luZG93KF93aW5kb3csIGN1cnJlbnRSZWN0LCBfcmVhbEZy
YW1lKTsKICAgICBbX3N1YkFuaW1hdGlvbiBzZXRDdXJyZW50UHJvZ3Jlc3M6cHJvZ3Jlc3NdOwog
fQogCkBAIC0yMTEsNyArMjY1LDcgQEAgLSAodm9pZClzZXRDdXJyZW50UHJvZ3Jlc3M6KE5TQW5p
bWF0aW9uUHJvZ3Jlc3MpcHJvZ3Jlc3MKICAgICBBU1NFUlQoX3dpbmRvdyk7CiAgICAgW3N1cGVy
IHNldEN1cnJlbnRQcm9ncmVzczpwcm9ncmVzc107CiAKLSAgICB3a1dpbmRvd1NldEFscGhhKF93
aW5kb3csIFtzZWxmIGN1cnJlbnRBbHBoYV0pOworICAgIENHU1NldFdpbmRvd0FscGhhKG1haW5X
aW5kb3dTZXJ2ZXJDb25uZWN0aW9uSUQoKSwgX3dpbmRvdy53aW5kb3dOdW1iZXIsIFtzZWxmIGN1
cnJlbnRBbHBoYV0pOwogfQogCiAtICh2b2lkKXNldFdpbmRvdzooTlNXaW5kb3cqKXdpbmRvdwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL21hYy9QbHVnaW5Qcm9jZXNz
TWFjLm1tIGIvU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL21hYy9QbHVnaW5Qcm9jZXNzTWFj
Lm1tCmluZGV4IGQ4NjAzNzg2N2EyZjFhZmEyNWVjNTI2MzA2ZTE0ZDk2NGNkNzdlNmQuLjI0ZDI2
ZWQxZTY3NDNhZWM1NTdhOGY3NjQ4OWI2NzM4MDQxN2ZkMDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvUGx1Z2luUHJvY2Vzcy9tYWMvUGx1Z2luUHJvY2Vzc01hYy5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1BsdWdpblByb2Nlc3MvbWFjL1BsdWdpblByb2Nlc3NNYWMubW0KQEAgLTQ2LDYgKzQ2
LDcgQEAKICNpbXBvcnQgPG1hY2gvbWFjaF92bS5oPgogI2ltcG9ydCA8bWFjaC92bV9zdGF0aXN0
aWNzLmg+CiAjaW1wb3J0IDxvYmpjL3J1bnRpbWUuaD4KKyNpbXBvcnQgPHBhbC9zcGkvY2cvQ29y
ZUdyYXBoaWNzU1BJLmg+CiAjaW1wb3J0IDxwYWwvc3BpL21hYy9ISVRvb2xib3hTUEkuaD4KICNp
bXBvcnQgPHBhbC9zcGkvbWFjL05TV2luZG93U1BJLmg+CiAjaW1wb3J0IDxzeXNleGl0cy5oPgpA
QCAtNTMxLDcgKzUzMiwxMCBAQCB2b2lkIFBsdWdpblByb2Nlc3M6OnBsYXRmb3JtSW5pdGlhbGl6
ZVByb2Nlc3MoY29uc3QgQ2hpbGRQcm9jZXNzSW5pdGlhbGl6YXRpb25QYQogCiAgICAgLy8gRklY
TUU6IEl0IHdvdWxkIGJlIGJldHRlciB0byBwcm94eSBTZXRDdXJzb3IgY2FsbHMgb3ZlciB0byB0
aGUgVUkgcHJvY2VzcyBpbnN0ZWFkIG9mCiAgICAgLy8gYWxsb3dpbmcgcGx1Zy1pbnMgdG8gY2hh
bmdlIHRoZSBtb3VzZSBjdXJzb3IgYXQgYW55IHRpbWUuCi0gICAgV0tFbmFibGVTZXR0aW5nQ3Vy
c29yV2hlbkluQmFja2dyb3VuZCgpOworICAgIC8vIEZJWE1FOiBTZXRzQ3Vyc29ySW5CYWNrZ3Jv
dW5kIGNvbm5lY3Rpb24gcHJvcGVydHkgaXMgZGVwcmVjYXRlZCBpbiBmYXZvciBvZiBrQ0dTU2V0
c0N1cnNvckluQmFja2dyb3VuZFRhZ0JpdCB3aW5kb3cgdGFnIGJpdC4KKyAgICAvLyA8cmRhcjov
L3Byb2JsZW0vNzc1MjQyMj4gYXNrcyBmb3IgYW4gQVBJIHRvIHNldCBjdXJzb3IgZnJvbSBiYWNr
Z3JvdW5kIHByb2Nlc3Nlcy4KKyAgICBDR1NDb25uZWN0aW9uSUQgY2lkID0gQ0dTTWFpbkNvbm5l
Y3Rpb25JRCgpOworICAgIENHU1NldENvbm5lY3Rpb25Qcm9wZXJ0eShjaWQsIGNpZCwgQ0ZTVFIo
IlNldHNDdXJzb3JJbkJhY2tncm91bmQiKSwgKENGVHlwZVJlZilrQ0ZCb29sZWFuVHJ1ZSk7CiAK
ICAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IHBsdWdpblVSTCA9IGFkb3B0Q0YoQ0ZVUkxDcmVhdGVX
aXRoRmlsZVN5c3RlbVBhdGgoMCwgbV9wbHVnaW5QYXRoLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCks
IGtDRlVSTFBPU0lYUGF0aFN0eWxlLCBmYWxzZSkpOwogICAgIGlmICghcGx1Z2luVVJMKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dpbmRvd1NlcnZlckNvbm5lY3Rp
b24uaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XaW5kb3dTZXJ2ZXJDb25uZWN0aW9u
LmgKaW5kZXggODM4YTM0ZmI1YzJkNDRlZWU1NDY0ZTU3ZWRjNzBlMTBhZGJkM2IyMC4uZTdiNTE4
YzZjNWViMGIwNjJkODlhOTFjYTcwNTc3YmE4NGViMDUxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvbWFjL1dpbmRvd1NlcnZlckNvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2luZG93U2VydmVyQ29ubmVjdGlvbi5oCkBAIC00MSw5ICs0
MSw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCB3aW5kb3dTZXJ2ZXJDb25uZWN0aW9uU3RhdGVDaGFu
Z2VkKCk7CiAKICAgICB2b2lkIGFwcGxpY2F0aW9uV2luZG93TW9kaWZpY2F0aW9uc1N0b3BwZWQo
Ym9vbCBzdG9wcGVkKTsKLQotICAgIHN0YXRpYyB2b2lkIGFwcGxpY2F0aW9uV2luZG93TW9kaWZp
Y2F0aW9uc1N0YXJ0ZWQodWludDMyX3QsIHZvaWQqLCB1aW50MzJfdCwgdm9pZCosIHVpbnQzMl90
KTsKLSAgICBzdGF0aWMgdm9pZCBhcHBsaWNhdGlvbldpbmRvd01vZGlmaWNhdGlvbnNTdG9wcGVk
KHVpbnQzMl90LCB2b2lkKiwgdWludDMyX3QsIHZvaWQqLCB1aW50MzJfdCk7CiAjZW5kaWYKIAog
ICAgIGJvb2wgbV9hcHBsaWNhdGlvbldpbmRvd01vZGlmaWNhdGlvbnNIYXZlU3RvcHBlZDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XaW5kb3dTZXJ2ZXJDb25uZWN0
aW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dpbmRvd1NlcnZlckNvbm5lY3Rp
b24ubW0KaW5kZXggODE5NTM1YzJhYzEyOWM4ZDUyMTIxOGM5NzU1Yzg0YjYxZDQ0ZjI4NS4uYTll
NWVkNWQ2MDM2YTU2NzYwNjE1M2JlOTYwYTM0ZTFhYjM2MDk0NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvbWFjL1dpbmRvd1NlcnZlckNvbm5lY3Rpb24ubW0KKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dpbmRvd1NlcnZlckNvbm5lY3Rpb24ubW0KQEAgLTI4
LDYgKzI4LDcgQEAKIAogI2ltcG9ydCAiV2ViS2l0U3lzdGVtSW50ZXJmYWNlLmgiCiAjaW1wb3J0
ICJXZWJQcm9jZXNzUG9vbC5oIgorI2ltcG9ydCA8cGFsL3NwaS9jZy9Db3JlR3JhcGhpY3NTUEku
aD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKQEAgLTQxLDE2ICs0Miw2IEBAIHZvaWQgV2luZG93
U2VydmVyQ29ubmVjdGlvbjo6YXBwbGljYXRpb25XaW5kb3dNb2RpZmljYXRpb25zU3RvcHBlZChi
b29sIHN0b3BwZWQpCiAgICAgd2luZG93U2VydmVyQ29ubmVjdGlvblN0YXRlQ2hhbmdlZCgpOwog
fQogCi12b2lkIFdpbmRvd1NlcnZlckNvbm5lY3Rpb246OmFwcGxpY2F0aW9uV2luZG93TW9kaWZp
Y2F0aW9uc1N0YXJ0ZWQodWludDMyX3QsIHZvaWQqLCB1aW50MzJfdCwgdm9pZCosIHVpbnQzMl90
KQotewotICAgIFdpbmRvd1NlcnZlckNvbm5lY3Rpb246OnNpbmdsZXRvbigpLmFwcGxpY2F0aW9u
V2luZG93TW9kaWZpY2F0aW9uc1N0b3BwZWQoZmFsc2UpOwotfQotCi12b2lkIFdpbmRvd1NlcnZl
ckNvbm5lY3Rpb246OmFwcGxpY2F0aW9uV2luZG93TW9kaWZpY2F0aW9uc1N0b3BwZWQodWludDMy
X3QsIHZvaWQqLCB1aW50MzJfdCwgdm9pZCosIHVpbnQzMl90KQotewotICAgIFdpbmRvd1NlcnZl
ckNvbm5lY3Rpb246OnNpbmdsZXRvbigpLmFwcGxpY2F0aW9uV2luZG93TW9kaWZpY2F0aW9uc1N0
b3BwZWQodHJ1ZSk7Ci19Ci0KIHZvaWQgV2luZG93U2VydmVyQ29ubmVjdGlvbjo6d2luZG93U2Vy
dmVyQ29ubmVjdGlvblN0YXRlQ2hhbmdlZCgpCiB7CiAgICAgZm9yIChhdXRvKiBwcm9jZXNzUG9v
bCA6IFdlYlByb2Nlc3NQb29sOjphbGxQcm9jZXNzUG9vbHMoKSkKQEAgLTY1LDIzICs1Niw0OCBA
QCBXaW5kb3dTZXJ2ZXJDb25uZWN0aW9uJiBXaW5kb3dTZXJ2ZXJDb25uZWN0aW9uOjpzaW5nbGV0
b24oKQogICAgIHJldHVybiB3aW5kb3dTZXJ2ZXJDb25uZWN0aW9uOwogfQogCisjaWYgSEFWRShX
SU5ET1dfU0VSVkVSX09DQ0xVU0lPTl9OT1RJRklDQVRJT05TKQorc3RhdGljIGJvb2wgcmVnaXN0
ZXJPY2NsdXNpb25Ob3RpZmljYXRpb25IYW5kbGVyKENHU05vdGlmaWNhdGlvblR5cGUgdHlwZSwg
Q0dTTm90aWZ5Q29ubmVjdGlvblByb2NQdHIgaGFuZGxlcikKK3sKKyAgICBDR1NDb25uZWN0aW9u
SUQgbWFpbkNvbm5lY3Rpb24gPSBDR1NNYWluQ29ubmVjdGlvbklEKCk7CisgICAgc3RhdGljIGJv
b2wgbm90aWZpY2F0aW9uc0VuYWJsZWQ7CisgICAgaWYgKCFub3RpZmljYXRpb25zRW5hYmxlZCkg
eworICAgICAgICBpZiAoQ0dTUGFja2FnZXNFbmFibGVDb25uZWN0aW9uT2NjbHVzaW9uTm90aWZp
Y2F0aW9ucyhtYWluQ29ubmVjdGlvbiwgdHJ1ZSwgbnVsbHB0cikgIT0ga0NHRXJyb3JTdWNjZXNz
KQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBpZiAoQ0dTUGFja2FnZXNFbmFi
bGVDb25uZWN0aW9uV2luZG93TW9kaWZpY2F0aW9uTm90aWZpY2F0aW9ucyhtYWluQ29ubmVjdGlv
biwgdHJ1ZSwgbnVsbHB0cikgIT0ga0NHRXJyb3JTdWNjZXNzKQorICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgICAgICBub3RpZmljYXRpb25zRW5hYmxlZCA9IHRydWU7CisgICAgfQorCisg
ICAgcmV0dXJuIENHU1JlZ2lzdGVyQ29ubmVjdGlvbk5vdGlmeVByb2MobWFpbkNvbm5lY3Rpb24s
IGhhbmRsZXIsIHR5cGUsIG51bGxwdHIpID09IGtDR0Vycm9yU3VjY2VzczsKK30KKyNlbmRpZgor
CiBXaW5kb3dTZXJ2ZXJDb25uZWN0aW9uOjpXaW5kb3dTZXJ2ZXJDb25uZWN0aW9uKCkKICAgICA6
IG1fYXBwbGljYXRpb25XaW5kb3dNb2RpZmljYXRpb25zSGF2ZVN0b3BwZWQoZmFsc2UpCiB7CiAj
aWYgSEFWRShXSU5ET1dfU0VSVkVSX09DQ0xVU0lPTl9OT1RJRklDQVRJT05TKQogICAgIHN0cnVj
dCBPY2NsdXNpb25Ob3RpZmljYXRpb25IYW5kbGVyIHsKLSAgICAgICAgV0tPY2NsdXNpb25Ob3Rp
ZmljYXRpb25UeXBlIG5vdGlmaWNhdGlvblR5cGU7Ci0gICAgICAgIFdLT2NjbHVzaW9uTm90aWZp
Y2F0aW9uSGFuZGxlciBoYW5kbGVyOworICAgICAgICBDR1NOb3RpZmljYXRpb25UeXBlIG5vdGlm
aWNhdGlvblR5cGU7CisgICAgICAgIENHU05vdGlmeUNvbm5lY3Rpb25Qcm9jUHRyIGhhbmRsZXI7
CiAgICAgICAgIGNvbnN0IGNoYXIqIG5hbWU7CiAgICAgfTsKIAorICAgIHN0YXRpYyBhdXRvIHdp
bmRvd01vZGlmaWNhdGlvbnNTdGFydGVkID0gW10oQ0dTTm90aWZpY2F0aW9uVHlwZSwgdm9pZCos
IHVpbnQzMl90LCB2b2lkKiwgQ0dTQ29ubmVjdGlvbklEKSB7CisgICAgICAgIFdpbmRvd1NlcnZl
ckNvbm5lY3Rpb246OnNpbmdsZXRvbigpLmFwcGxpY2F0aW9uV2luZG93TW9kaWZpY2F0aW9uc1N0
b3BwZWQoZmFsc2UpOworICAgIH07CisKKyAgICBzdGF0aWMgYXV0byB3aW5kb3dNb2RpZmljYXRp
b25zU3RvcHBlZCA9IFtdKENHU05vdGlmaWNhdGlvblR5cGUsIHZvaWQqLCB1aW50MzJfdCwgdm9p
ZCosIENHU0Nvbm5lY3Rpb25JRCkgeworICAgICAgICBXaW5kb3dTZXJ2ZXJDb25uZWN0aW9uOjpz
aW5nbGV0b24oKS5hcHBsaWNhdGlvbldpbmRvd01vZGlmaWNhdGlvbnNTdG9wcGVkKHRydWUpOwor
ICAgIH07CisKICAgICBzdGF0aWMgY29uc3QgT2NjbHVzaW9uTm90aWZpY2F0aW9uSGFuZGxlciBv
Y2NsdXNpb25Ob3RpZmljYXRpb25IYW5kbGVyc1tdID0gewotICAgICAgICB7IFdLT2NjbHVzaW9u
Tm90aWZpY2F0aW9uVHlwZUFwcGxpY2F0aW9uV2luZG93TW9kaWZpY2F0aW9uc1N0YXJ0ZWQsIGFw
cGxpY2F0aW9uV2luZG93TW9kaWZpY2F0aW9uc1N0YXJ0ZWQsICJBcHBsaWNhdGlvbiBXaW5kb3cg
TW9kaWZpY2F0aW9ucyBTdGFydGVkIiB9LAotICAgICAgICB7IFdLT2NjbHVzaW9uTm90aWZpY2F0
aW9uVHlwZUFwcGxpY2F0aW9uV2luZG93TW9kaWZpY2F0aW9uc1N0b3BwZWQsIGFwcGxpY2F0aW9u
V2luZG93TW9kaWZpY2F0aW9uc1N0b3BwZWQsICJBcHBsaWNhdGlvbiBXaW5kb3cgTW9kaWZpY2F0
aW9ucyBTdG9wcGVkIiB9LAorICAgICAgICB7IGtDR1NDb25uZWN0aW9uV2luZG93TW9kaWZpY2F0
aW9uc1N0YXJ0ZWQsIHdpbmRvd01vZGlmaWNhdGlvbnNTdGFydGVkLCAiQXBwbGljYXRpb24gV2lu
ZG93IE1vZGlmaWNhdGlvbnMgU3RhcnRlZCIgfSwKKyAgICAgICAgeyBrQ0dTQ29ubmVjdGlvbldp
bmRvd01vZGlmaWNhdGlvbnNTdG9wcGVkLCB3aW5kb3dNb2RpZmljYXRpb25zU3RvcHBlZCwgIkFw
cGxpY2F0aW9uIFdpbmRvdyBNb2RpZmljYXRpb25zIFN0b3BwZWQiIH0sCiAgICAgfTsKIAogICAg
IGZvciAoY29uc3QgYXV0byYgb2NjbHVzaW9uTm90aWZpY2F0aW9uSGFuZGxlciA6IG9jY2x1c2lv
bk5vdGlmaWNhdGlvbkhhbmRsZXJzKSB7Ci0gICAgICAgIGJvb2wgcmVzdWx0ID0gV0tSZWdpc3Rl
ck9jY2x1c2lvbk5vdGlmaWNhdGlvbkhhbmRsZXIob2NjbHVzaW9uTm90aWZpY2F0aW9uSGFuZGxl
ci5ub3RpZmljYXRpb25UeXBlLCBvY2NsdXNpb25Ob3RpZmljYXRpb25IYW5kbGVyLmhhbmRsZXIp
OworICAgICAgICBib29sIHJlc3VsdCA9IHJlZ2lzdGVyT2NjbHVzaW9uTm90aWZpY2F0aW9uSGFu
ZGxlcihvY2NsdXNpb25Ob3RpZmljYXRpb25IYW5kbGVyLm5vdGlmaWNhdGlvblR5cGUsIG9jY2x1
c2lvbk5vdGlmaWNhdGlvbkhhbmRsZXIuaGFuZGxlcik7CiAgICAgICAgIFVOVVNFRF9QQVJBTShy
ZXN1bHQpOwogICAgICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKHJlc3VsdCwgIlJlZ2lzdHJhdGlv
biBvZiBcIiVzXCIgbm90aWZpY2F0aW9uIGhhbmRsZXIgZmFpbGVkLlxuIiwgb2NjbHVzaW9uTm90
aWZpY2F0aW9uSGFuZGxlci5uYW1lKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYlN5c3RlbUludGVyZmFjZS5tbSBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViU3lzdGVtSW50ZXJm
YWNlLm1tCmluZGV4IGQxOGE0NDBkZDcyNTM5YzZhNTY5NGI3NDY3ZjhhNjkxODg1MWQ5OWUuLjVi
MDk3OWM2ODVhZDA4MDAyZjdjMmEwZjdiNThkMTdmYjg2Y2E3YzUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViU3lzdGVtSW50ZXJmYWNl
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2Vi
U3lzdGVtSW50ZXJmYWNlLm1tCkBAIC0zNywyMSArMzcsMTEgQEAgdm9pZCBJbml0V2ViQ29yZVN5
c3RlbUludGVyZmFjZSh2b2lkKQogICAgIAogICAgIGRpc3BhdGNoX29uY2UoJmluaXRPbmNlLCBe
ewogICAgICAgICBJTklUKENBTGF5ZXJFbnVtZXJhdGVSZWN0c0JlaW5nRHJhd25XaXRoQmxvY2sp
OwotICAgICAgICBJTklUKENHUGF0dGVybkNyZWF0ZVdpdGhJbWFnZUFuZFRyYW5zZm9ybSk7Ci0j
aWYgIVBMQVRGT1JNKElPUykKLSAgICAgICAgSU5JVChDR0NvbnRleHREcmF3c1dpdGhDb3JyZWN0
U2hhZG93T2Zmc2V0cyk7Ci0jZW5kaWYKICAgICAgICAgSU5JVChDb3B5Q09OTkVDVFByb3h5UmVz
cG9uc2UpOwogI2lmICFQTEFURk9STShJT1MpCiAgICAgICAgIElOSVQoRHJhd0JlemVsZWRUZXh0
QXJlYSk7Ci0gICAgICAgIElOSVQoRHJhd0ZvY3VzUmluZyk7Ci0gICAgICAgIElOSVQoRHJhd0Zv
Y3VzUmluZ0F0VGltZSk7Ci0gICAgICAgIElOSVQoRHJhd0NlbGxGb2N1c1JpbmdXaXRoRnJhbWVB
dFRpbWUpOwogICAgICAgICBJTklUKERyYXdNZWRpYVNsaWRlclRyYWNrKTsKICAgICAgICAgSU5J
VChEcmF3TWVkaWFVSVBhcnQpOwotI2VuZGlmCi0gICAgICAgIElOSVQoQ0dDb250ZXh0SXNQREZD
b250ZXh0KTsKLSNpZiAhUExBVEZPUk0oSU9TKQogICAgICAgICBJTklUKEdldE5TRXZlbnRLZXlD
aGFyKTsKICAgICAgICAgSU5JVChIaXRUZXN0TWVkaWFVSVBhcnQpOwogICAgICAgICBJTklUKE1l
YXN1cmVNZWRpYVVJUGFydCk7CkBAIC03MCwxNiArNjAsMTEgQEAgdm9pZCBJbml0V2ViQ29yZVN5
c3RlbUludGVyZmFjZSh2b2lkKQogI2VuZGlmCiAgICAgICAgIElOSVQoU2V0Q09OTkVDVFByb3h5
QXV0aG9yaXphdGlvbkZvclN0cmVhbSk7CiAgICAgICAgIElOSVQoU2V0Q09OTkVDVFByb3h5Rm9y
U3RyZWFtKTsKLSNpZiAhUExBVEZPUk0oSU9TKQotICAgICAgICBJTklUKFNldERyYWdJbWFnZSk7
Ci0jZW5kaWYKIAogI2lmICFQTEFURk9STShJT1MpCiAgICAgICAgIElOSVQoRXhlY3V0YWJsZVdh
c0xpbmtlZE9uT3JCZWZvcmVTbm93TGVvcGFyZCk7CiAgICAgICAgIElOSVQoQ29weURlZmF1bHRT
ZWFyY2hQcm92aWRlckRpc3BsYXlOYW1lKTsKICAgICAgICAgSU5JVChDdXJzb3IpOwotICAgICAg
ICBJTklUKFdpbmRvd1NldFNjYWxlZEZyYW1lKTsKLSAgICAgICAgSU5JVChXaW5kb3dTZXRBbHBo
YSk7CiAgICAgICAgIElOSVQoU3BlZWNoU3ludGhlc2lzR2V0Vm9pY2VJZGVudGlmaWVycyk7CiAg
ICAgICAgIElOSVQoU3BlZWNoU3ludGhlc2lzR2V0RGVmYXVsdFZvaWNlSWRlbnRpZmllckZvckxv
Y2FsZSk7CiAgICAgICAgIElOSVQoTlNFbGFzdGljRGVsdGFGb3JUaW1lRGVsdGEpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2FyYm9uL0hJV2ViVmlldy5tbSBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0NhcmJvbi9ISVdlYlZpZXcubW0KaW5kZXggMzQ1ODVjMjUyYzNi
MThjYWNkNmUwN2FkNWU5NDQ4Nzc5ZDhiZTQ1Ny4uNDZkN2Y1OWFhNjBlYjBlNjZiMjk3MmEyM2Nk
MjgzNzY4NTVmNjNkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2FyYm9u
L0hJV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DYXJib24vSElXZWJW
aWV3Lm1tCkBAIC0zNiw2ICszNiw3IEBACiAjaW1wb3J0ICJXZWJLaXQuaCIKICNpbXBvcnQgPFdl
YktpdFN5c3RlbUludGVyZmFjZS5oPgogI2ltcG9ydCA8cGFsL3NwaS9tYWMvTlNFdmVudFNQSS5o
PgorI2ltcG9ydCA8cGFsL3NwaS9tYWMvTlNHcmFwaGljc1NQSS5oPgogI2ltcG9ydCA8cGFsL3Nw
aS9tYWMvUXVpY2tEcmF3U1BJLmg+CiAjaW1wb3J0IDx3dGYvT2JqY1J1bnRpbWVFeHRyYXMuaD4K
IApAQCAtODUsNiArODYsMjEgQEAgLSAoaW50KXRhZwogCiBAZW5kCiAKK0BpbnRlcmZhY2UgTlNX
aW5kb3dHcmFwaGljc0NvbnRleHQgKCkKKy0gKHZvaWQpX3dlYl9zZXRHcmFwaGljc1BvcnQ6KENH
Q29udGV4dFJlZiljb250ZXh0OworQGVuZAorCitAaW1wbGVtZW50YXRpb24gTlNXaW5kb3dHcmFw
aGljc0NvbnRleHQgKCkKKworLSAodm9pZClfd2ViX3NldEdyYXBoaWNzUG9ydDooQ0dDb250ZXh0
UmVmKWNvbnRleHQKK3sKKyAgICBDR0NvbnRleHRSZXRhaW4oY29udGV4dCk7CisgICAgQ0dDb250
ZXh0UmVsZWFzZShfY2dzQ29udGV4dCk7CisgICAgX2Nnc0NvbnRleHQgPSBjb250ZXh0OworfQor
CitAZW5kCisKIHN0cnVjdCBISVdlYlZpZXcKIHsKICAgICBISVZpZXdSZWYJCQkJCQkJZlZpZXdS
ZWY7CkBAIC0yOTAsNiArMzA2LDIyIEBAIEdldEJlaGF2aW9ycygpCiAJcmV0dXJuIGtDb250cm9s
U3VwcG9ydHNEYXRhQWNjZXNzIHwga0NvbnRyb2xTdXBwb3J0c0dldFJlZ2lvbiB8IGtDb250cm9s
R2V0c0ZvY3VzT25DbGljazsKIH0KIAorc3RhdGljIENHQ29udGV4dFJlZiBvdmVycmlkZUNHQ29u
dGV4dChOU1dpbmRvdyAqd2luZG93LCBDR0NvbnRleHRSZWYgY29udGV4dCkKK3sKKyAgICBOU1dp
bmRvd0dyYXBoaWNzQ29udGV4dCAqZ3JhcGhpY3NDb250ZXh0ID0gKE5TV2luZG93R3JhcGhpY3ND
b250ZXh0ICopW3dpbmRvdyBncmFwaGljc0NvbnRleHRdOworICAgIENHQ29udGV4dFJlZiBzYXZl
ZENvbnRleHQgPSAoQ0dDb250ZXh0UmVmKVtncmFwaGljc0NvbnRleHQgZ3JhcGhpY3NQb3J0XTsK
KyAgICBDR0NvbnRleHRSZXRhaW4oc2F2ZWRDb250ZXh0KTsKKyAgICBbZ3JhcGhpY3NDb250ZXh0
IF93ZWJfc2V0R3JhcGhpY3NQb3J0OmNvbnRleHRdOworICAgIHJldHVybiBzYXZlZENvbnRleHQ7
Cit9CisKK3N0YXRpYyB2b2lkIHJlc3RvcmVDR0NvbnRleHQoTlNXaW5kb3cgKndpbmRvdywgQ0dD
b250ZXh0UmVmIHNhdmVkQ29udGV4dCkKK3sKKyAgICBOU1dpbmRvd0dyYXBoaWNzQ29udGV4dCAq
Z3JhcGhpY3NDb250ZXh0ID0gKE5TV2luZG93R3JhcGhpY3NDb250ZXh0ICopW3dpbmRvdyBncmFw
aGljc0NvbnRleHRdOworICAgIFtncmFwaGljc0NvbnRleHQgX3dlYl9zZXRHcmFwaGljc1BvcnQ6
c2F2ZWRDb250ZXh0XTsKKyAgICBDR0NvbnRleHRSZWxlYXNlKHNhdmVkQ29udGV4dCk7Cit9CisK
IC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogLy8gRHJhdwogLy8tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCkBAIC0zMjEsNyArMzUzLDcgQEAgRHJhdyggSElXZWJWaWV3KiBpblZpZXcsIFJn
bkhhbmRsZSBsaW1pdFJnbiwgQ0dDb250ZXh0UmVmIGluQ29udGV4dCApCiAKIAlISVZpZXdHZXRC
b3VuZHMoIGluVmlldy0+ZlZpZXdSZWYsICZib3VuZHMgKTsKIAotICAgIENHQ29udGV4dFJlZiBz
YXZlZENvbnRleHQgPSBXS05TV2luZG93T3ZlcnJpZGVDR0NvbnRleHQoaW5WaWV3LT5mS2l0V2lu
ZG93LCBpbkNvbnRleHQpOworICAgIENHQ29udGV4dFJlZiBzYXZlZENvbnRleHQgPSBvdmVycmlk
ZUNHQ29udGV4dChpblZpZXctPmZLaXRXaW5kb3csIGluQ29udGV4dCk7CiAgICAgW05TR3JhcGhp
Y3NDb250ZXh0IHNldEN1cnJlbnRDb250ZXh0OltpblZpZXctPmZLaXRXaW5kb3cgZ3JhcGhpY3ND
b250ZXh0XV07CiAKIAlHZXRSZWdpb25Cb3VuZHMoIGxpbWl0UmduLCAmZHJhd1JlY3QgKTsKQEAg
LTM1MSw3ICszODMsNyBAQCBEcmF3KCBISVdlYlZpZXcqIGluVmlldywgUmduSGFuZGxlIGxpbWl0
UmduLCBDR0NvbnRleHRSZWYgaW5Db250ZXh0ICkKICAgICBlbHNlCiAgICAgICAgIFtpblZpZXct
PmZXZWJWaWV3IGRpc3BsYXlSZWN0OiooTlNSZWN0KikmaGlSZWN0XTsKIAotICAgIFdLTlNXaW5k
b3dSZXN0b3JlQ0dDb250ZXh0KGluVmlldy0+ZktpdFdpbmRvdywgc2F2ZWRDb250ZXh0KTsKKyAg
ICByZXN0b3JlQ0dDb250ZXh0KGluVmlldy0+ZktpdFdpbmRvdywgc2F2ZWRDb250ZXh0KTsKIAog
ICAgIGlmICggIWluVmlldy0+ZklzQ29tcG9zaXRlZCApCiAgICAgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvV2ViSG9zdGVkTmV0c2NhcGVQbHVn
aW5WaWV3Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvV2ViSG9z
dGVkTmV0c2NhcGVQbHVnaW5WaWV3Lm1tCmluZGV4IDllMjA0NGUyNmUxMzkwMjFlYjhjYTYzMzYy
NTVmMmM4MzNjMWI4YjIuLjY5NWE1Y2Y1MjczNzNkMzA5YTgzYjY0ZDZmMWQwMTAwZWQzYTQwOGEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL1dlYkhv
c3RlZE5ldHNjYXBlUGx1Z2luVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9Q
bHVnaW5zL0hvc3RlZC9XZWJIb3N0ZWROZXRzY2FwZVBsdWdpblZpZXcubW0KQEAgLTc2LDcgKzc2
LDcgQEAgKyAodm9pZClpbml0aWFsaXplCiAgICAgV1RGOjppbml0aWFsaXplTWFpblRocmVhZFRv
UHJvY2Vzc01haW5UaHJlYWQoKTsKICAgICBSdW5Mb29wOjppbml0aWFsaXplTWFpblJ1bkxvb3Ao
KTsKICNlbmRpZgotICAgIFdLU2VuZFVzZXJDaGFuZ2VOb3RpZmljYXRpb25zKCk7CisgICAgc2Vu
ZFVzZXJDaGFuZ2VOb3RpZmljYXRpb25zKCk7CiB9CiAKIC0gKGlkKWluaXRXaXRoRnJhbWU6KE5T
UmVjdClmcmFtZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9X
ZWJCYXNlTmV0c2NhcGVQbHVnaW5WaWV3LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVn
aW5zL1dlYkJhc2VOZXRzY2FwZVBsdWdpblZpZXcuaAppbmRleCBjMjIyM2FiNmQyNjc1MWYzOGMz
ODk1ODFiZDM0OWRlOTgxNGMxNWIxLi5jZDQzMGQzNjY5NzFlYzlmZTJlYTBkNDQwNTkzYjU4MGM5
Y2EyZTI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYkJh
c2VOZXRzY2FwZVBsdWdpblZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVn
aW5zL1dlYkJhc2VOZXRzY2FwZVBsdWdpblZpZXcuaApAQCAtMTM0LDYgKzEzNCw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIG5hbWVzcGFjZSBXZWJLaXQgewogYm9vbCBnZXRBdXRoZW50aWNhdGlv
bkluZm8oY29uc3QgY2hhciogcHJvdG9jb2xTdHIsIGNvbnN0IGNoYXIqIGhvc3RTdHIsIGludDMy
X3QgcG9ydCwgY29uc3QgY2hhciogc2NoZW1lU3RyLCBjb25zdCBjaGFyKiByZWFsbVN0ciwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFdURjo6Q1N0cmluZyYgdXNlcm5hbWUsIFdURjo6Q1N0
cmluZyYgcGFzc3dvcmQpOwordm9pZCBzZW5kVXNlckNoYW5nZU5vdGlmaWNhdGlvbnMoKTsKIH0g
CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9X
ZWJCYXNlTmV0c2NhcGVQbHVnaW5WaWV3Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1
Z2lucy9XZWJCYXNlTmV0c2NhcGVQbHVnaW5WaWV3Lm1tCmluZGV4IDY0ZGU5MDEwZWJkYjBiMDY5
ZDZmODYzYTNmZWYyZmZkN2I1ZDQzMzguLmJlMWMzMGIzZjMwOWRhNjg1NWYzY2QxZDI3YWI0NzA4
OWFlZDJjMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2Vi
QmFzZU5ldHNjYXBlUGx1Z2luVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9Q
bHVnaW5zL1dlYkJhc2VOZXRzY2FwZVBsdWdpblZpZXcubW0KQEAgLTU1LDYgKzU1LDcgQEAKICNp
bXBvcnQgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW4uaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViQ29y
ZU9iakNFeHRyYXMuaD4KICNpbXBvcnQgPFdlYktpdExlZ2FjeS9ET01Qcml2YXRlLmg+CisjaW1w
b3J0IDxwYWwvc3BpL2NnL0NvcmVHcmFwaGljc1NQSS5oPgogI2ltcG9ydCA8cnVudGltZS9Jbml0
aWFsaXplVGhyZWFkaW5nLmg+CiAjaW1wb3J0IDx3dGYvQXNzZXJ0aW9ucy5oPgogI2ltcG9ydCA8
d3RmL01haW5UaHJlYWQuaD4KQEAgLTczLDcgKzc0LDcgQEAgKyAodm9pZClpbml0aWFsaXplCiAg
ICAgSlNDOjppbml0aWFsaXplVGhyZWFkaW5nKCk7CiAgICAgV1RGOjppbml0aWFsaXplTWFpblRo
cmVhZFRvUHJvY2Vzc01haW5UaHJlYWQoKTsKICAgICBSdW5Mb29wOjppbml0aWFsaXplTWFpblJ1
bkxvb3AoKTsKLSAgICBXS1NlbmRVc2VyQ2hhbmdlTm90aWZpY2F0aW9ucygpOworICAgIFdlYktp
dDo6c2VuZFVzZXJDaGFuZ2VOb3RpZmljYXRpb25zKCk7CiB9CiAKIC0gKGlkKWluaXRXaXRoRnJh
bWU6KE5TUmVjdClmcmFtZQpAQCAtOTAwLDYgKzkwMSwyMyBAQCBib29sIGdldEF1dGhlbnRpY2F0
aW9uSW5mbyhjb25zdCBjaGFyKiBwcm90b2NvbFN0ciwgY29uc3QgY2hhciogaG9zdFN0ciwgaW50
MzJfdAogICAgIHJldHVybiB0cnVlOwogfQogCit2b2lkIHNlbmRVc2VyQ2hhbmdlTm90aWZpY2F0
aW9ucygpCit7CisgICAgYXV0byBjb25zb2xlQ29ubmVjdGlvbkNoYW5nZU5vdGlmeVByb2MgPSBb
XShDR1NOb3RpZmljYXRpb25UeXBlIHR5cGUsIENHU05vdGlmaWNhdGlvbkRhdGEsIENHU0J5dGVD
b3VudCwgQ0dTTm90aWZpY2F0aW9uQXJnKSB7CisgICAgICAgIE5TU3RyaW5nICpub3RpZmljYXRp
b25OYW1lID0gbmlsOworICAgICAgICBpZiAodHlwZSA9PSBrQ0dTZXNzaW9uQ29uc29sZUNvbm5l
Y3QpCisgICAgICAgICAgICBub3RpZmljYXRpb25OYW1lID0gTG9naW5XaW5kb3dEaWRTd2l0Y2hU
b1VzZXJOb3RpZmljYXRpb247CisgICAgICAgIGVsc2UgaWYgKHR5cGUgPT0ga0NHU2Vzc2lvbkNv
bnNvbGVEaXNjb25uZWN0KQorICAgICAgICAgICAgbm90aWZpY2F0aW9uTmFtZSA9IExvZ2luV2lu
ZG93RGlkU3dpdGNoRnJvbVVzZXJOb3RpZmljYXRpb247CisgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBbW05TTm90aWZpY2F0aW9uQ2VudGVy
IGRlZmF1bHRDZW50ZXJdIHBvc3ROb3RpZmljYXRpb25OYW1lOm5vdGlmaWNhdGlvbk5hbWUgb2Jq
ZWN0Om5pbF07CisgICAgfTsKKworICAgIENHU1JlZ2lzdGVyTm90aWZ5UHJvYyhjb25zb2xlQ29u
bmVjdGlvbkNoYW5nZU5vdGlmeVByb2MsIGtDR1Nlc3Npb25Db25zb2xlQ29ubmVjdCwgTlVMTCk7
CisgICAgQ0dTUmVnaXN0ZXJOb3RpZnlQcm9jKGNvbnNvbGVDb25uZWN0aW9uQ2hhbmdlTm90aWZ5
UHJvYywga0NHU2Vzc2lvbkNvbnNvbGVEaXNjb25uZWN0LCBOVUxMKTsKK30KKwogfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyAgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1
Z2luVmlldy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQ
bHVnaW5WaWV3Lm1tCmluZGV4IGM2ODBmZjdlZTMxYzkzYjhmYjQ5MjI5N2U0ZTdhZDkxNDFhNGRk
ZTQuLjJiYmQzZGViZTY2ZTE4ZDhmMzE4MGM5NGNhMTMzN2ZjZjdkODgxNzAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5WaWV3Lm1t
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5W
aWV3Lm1tCkBAIC0xOTMsNyArMTkzLDcgQEAgKyAodm9pZClpbml0aWFsaXplCiAgICAgSlNDOjpp
bml0aWFsaXplVGhyZWFkaW5nKCk7CiAgICAgV1RGOjppbml0aWFsaXplTWFpblRocmVhZFRvUHJv
Y2Vzc01haW5UaHJlYWQoKTsKICAgICBSdW5Mb29wOjppbml0aWFsaXplTWFpblJ1bkxvb3AoKTsK
LSAgICBXS1NlbmRVc2VyQ2hhbmdlTm90aWZpY2F0aW9ucygpOworICAgIHNlbmRVc2VyQ2hhbmdl
Tm90aWZpY2F0aW9ucygpOwogfQogCiAvLyBNQVJLOiBFVkVOVFMKQEAgLTM3OSwxMCArMzc5LDEw
IEBAIC0gKFBvcnRTdGF0ZSlzYXZlQW5kU2V0TmV3UG9ydFN0YXRlRm9yVXBkYXRlOihCT09MKWZv
clVwZGF0ZQogICAgICAgICAgICAgcWRQb3J0U3RhdGUtPmNsaXBSZWdpb24gPSBjbGlwUmVnaW9u
OwogCiAgICAgICAgICAgICBDR0NvbnRleHRSZWYgY3VycmVudENvbnRleHQgPSAoQ0dDb250ZXh0
UmVmKVtbTlNHcmFwaGljc0NvbnRleHQgY3VycmVudENvbnRleHRdIGdyYXBoaWNzUG9ydF07Ci0g
ICAgICAgICAgICBpZiAoY3VycmVudENvbnRleHQgJiYgV0tDR0NvbnRleHRJc0JpdG1hcENvbnRl
eHQoY3VycmVudENvbnRleHQpKSB7Ci0gICAgICAgICAgICAgICAgLy8gV2UgdXNlIFdLQ0dDb250
ZXh0SXNCaXRtYXBDb250ZXh0IGhlcmUsIGJlY2F1c2UgaWYgd2UganVzdCBjYWxsZWQgQ0dCaXRt
YXBDb250ZXh0R2V0RGF0YQotICAgICAgICAgICAgICAgIC8vIG9uIGFueSBjb250ZXh0LCB3ZSdk
IGxvZyB0byB0aGUgY29uc29sZSBldmVyeSB0aW1lLiBCdXQgZXZlbiBpZiBXS0NHQ29udGV4dElz
Qml0bWFwQ29udGV4dAotICAgICAgICAgICAgICAgIC8vIHJldHVybnMgdHJ1ZSwgaXQgc3RpbGwg
bWlnaHQgbm90IGJlIGEgY29udGV4dCB3ZSBuZWVkIHRvIGNyZWF0ZSBhIEdXb3JsZCBmb3I7IGZv
ciBleGFtcGxlCisgICAgICAgICAgICBpZiAoY3VycmVudENvbnRleHQgJiYgQ0dDb250ZXh0R2V0
VHlwZShjdXJyZW50Q29udGV4dCkgPT0ga0NHQ29udGV4dFR5cGVCaXRtYXApIHsKKyAgICAgICAg
ICAgICAgICAvLyBXZSBjaGVjayBmb3Iga0NHQ29udGV4dFR5cGVCaXRtYXAgaGVyZSwgYmVjYXVz
ZSBpZiB3ZSBqdXN0IGNhbGxlZCBDR0JpdG1hcENvbnRleHRHZXREYXRhCisgICAgICAgICAgICAg
ICAgLy8gb24gYW55IGNvbnRleHQsIHdlJ2QgbG9nIHRvIHRoZSBjb25zb2xlIGV2ZXJ5IHRpbWUu
IEJ1dCBldmVuIGlmIGN1cnJlbnRDb250ZXh0IGlzIGEKKyAgICAgICAgICAgICAgICAvLyBrQ0dD
b250ZXh0VHlwZUJpdG1hcCwgaXQgc3RpbGwgbWlnaHQgbm90IGJlIGEgY29udGV4dCB3ZSBuZWVk
IHRvIGNyZWF0ZSBhIEdXb3JsZCBmb3I7IGZvciBleGFtcGxlCiAgICAgICAgICAgICAgICAgLy8g
dHJhbnNwYXJlbmN5IGxheWVycyB3aWxsIHJldHVybiB0cnVlLCBidXQgcmV0dXJuIDAgZm9yIENH
Qml0bWFwQ29udGV4dEdldERhdGEuCiAgICAgICAgICAgICAgICAgdm9pZCogb2Zmc2NyZWVuRGF0
YSA9IENHQml0bWFwQ29udGV4dEdldERhdGEoY3VycmVudENvbnRleHQpOwogICAgICAgICAgICAg
ICAgIGlmIChvZmZzY3JlZW5EYXRhKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJTeXN0ZW1JbnRlcmZhY2UubW0gYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJTeXN0ZW1JbnRlcmZhY2UubW0KaW5kZXggNmRk
MGI1N2RkNGJmMzQzZmU5NjZmMGZiYTYzYzExY2Y0ZjA4ZDkzMi4uYjUxMWQ2NWVhNjFiMzYyNDdk
MmI4M2ViMmM2ODkxMTQzZjM5N2NkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViU3lzdGVtSW50ZXJmYWNlLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlN5c3RlbUludGVyZmFjZS5tbQpAQCAtNDMs
MTYgKzQzLDkgQEAgdm9pZCBJbml0V2ViQ29yZVN5c3RlbUludGVyZmFjZSh2b2lkKQogICAgICAg
ICByZXR1cm47CiAKICAgICBJTklUKENBTGF5ZXJFbnVtZXJhdGVSZWN0c0JlaW5nRHJhd25XaXRo
QmxvY2spOwotICAgIElOSVQoQ0dQYXR0ZXJuQ3JlYXRlV2l0aEltYWdlQW5kVHJhbnNmb3JtKTsK
LSNpZiAhUExBVEZPUk0oSU9TKQotICAgIElOSVQoQ0dDb250ZXh0RHJhd3NXaXRoQ29ycmVjdFNo
YWRvd09mZnNldHMpOwotI2VuZGlmCiAgICAgSU5JVChDb3B5Q09OTkVDVFByb3h5UmVzcG9uc2Up
OwogI2lmICFQTEFURk9STShJT1MpCiAgICAgSU5JVChEcmF3QmV6ZWxlZFRleHRBcmVhKTsKLSAg
ICBJTklUKERyYXdGb2N1c1JpbmcpOwotICAgIElOSVQoRHJhd0ZvY3VzUmluZ0F0VGltZSk7Ci0g
ICAgSU5JVChEcmF3Q2VsbEZvY3VzUmluZ1dpdGhGcmFtZUF0VGltZSk7CiAgICAgSU5JVChEcmF3
TWVkaWFVSVBhcnQpOwogICAgIElOSVQoRHJhd01lZGlhU2xpZGVyVHJhY2spOwogICAgIElOSVQo
R2V0TlNFdmVudEtleUNoYXIpOwpAQCAtNjAsMTUgKzUzLDkgQEAgdm9pZCBJbml0V2ViQ29yZVN5
c3RlbUludGVyZmFjZSh2b2lkKQogICAgIElOSVQoTWVhc3VyZU1lZGlhVUlQYXJ0KTsKICAgICBJ
TklUKENyZWF0ZU1lZGlhVUlCYWNrZ3JvdW5kVmlldyk7CiAgICAgSU5JVChDcmVhdGVNZWRpYVVJ
Q29udHJvbCk7Ci0gICAgSU5JVChXaW5kb3dTZXRBbHBoYSk7Ci0gICAgSU5JVChXaW5kb3dTZXRT
Y2FsZWRGcmFtZSk7CiAjZW5kaWYKICAgICBJTklUKFNldENPTk5FQ1RQcm94eUF1dGhvcml6YXRp
b25Gb3JTdHJlYW0pOwogICAgIElOSVQoU2V0Q09OTkVDVFByb3h5Rm9yU3RyZWFtKTsKLSNpZiAh
UExBVEZPUk0oSU9TKQotICAgIElOSVQoU2V0RHJhZ0ltYWdlKTsKLSNlbmRpZgotICAgIElOSVQo
Q0dDb250ZXh0SXNQREZDb250ZXh0KTsKICNpZiBFTkFCTEUoVklERU8pICYmICFQTEFURk9STShJ
T1MpCiAgICAgSU5JVChRVEluY2x1ZGVPbmx5TW9kZXJuTWVkaWFGaWxlVHlwZXMpOwogICAgIElO
SVQoUVRNb3ZpZURpc2FibGVDb21wb25lbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YlZpZXcvV2ViRnJhbWUubW0KaW5kZXggZjBmOGU2Mjg1ODBiMjlmZTA0N2VkZGY2ZWI0NzU3OGM2
ZDA1ZGQyZC4uZTcwOTNjOTZhYWM0NzRlM2FlZTllNzJkMjNiMjRlYjFjNTg5YTJlYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCkBAIC01OTgsNyArNTk4
LDcgQEAgLSAoUGFpbnRCZWhhdmlvcilfcGFpbnRCZWhhdmlvckZvckRlc3RpbmF0aW9uQ29udGV4
dDooQ0dDb250ZXh0UmVmKWNvbnRleHQKICAgICAgICAgcmV0dXJuIFBhaW50QmVoYXZpb3JGbGF0
dGVuQ29tcG9zaXRpbmdMYXllcnMgfCBQYWludEJlaGF2aW9yU25hcHNob3R0aW5nOwogI2VuZGlm
CiAKLSAgICBpZiAoIVdLQ0dDb250ZXh0SXNCaXRtYXBDb250ZXh0KGNvbnRleHQpKQorICAgIGlm
IChDR0NvbnRleHRHZXRUeXBlKGNvbnRleHQpICE9IGtDR0NvbnRleHRUeXBlQml0bWFwKQogICAg
ICAgICByZXR1cm4gUGFpbnRCZWhhdmlvck5vcm1hbDsKIAogICAgIC8vIElmIHdlJ3JlIGRyYXdp
bmcgaW50byBhIGJpdG1hcCwgd2UgbWlnaHQgYmUgc25hcHNob3R0aW5nLCBvciBkcmF3aW5nIGlu
dG8gYSBsYXllci1iYWNrZWQgdmlldy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYlZpZXcvV2ViRnVsbFNjcmVlbkNvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJWaWV3L1dlYkZ1bGxTY3JlZW5Db250cm9sbGVyLm1tCmluZGV4IGZkOGZjNTY5
OTdhZmNiNmFkN2Y5MGM1ZmM5OTg0YmEzMTc2NmU5MDcuLjQwNTNmZmM4NDY0YTM1YmI4NmFmYjY2
NmUzY2VlN2VkY2FjZTVlZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YlZpZXcvV2ViRnVsbFNjcmVlbkNvbnRyb2xsZXIubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViVmlldy9XZWJGdWxsU2NyZWVuQ29udHJvbGxlci5tbQpAQCAtMjQ5LDYgKzI0OSwx
NiBAQCAtICh2b2lkKWVudGVyRnVsbFNjcmVlbjooTlNTY3JlZW4gKilzY3JlZW4KICAgICBfaXNF
bnRlcmluZ0Z1bGxTY3JlZW4gPSB0cnVlOwogfQogCitzdGF0aWMgdm9pZCBzZXRDbGlwUmVjdEZv
cldpbmRvdyhOU1dpbmRvdyAqd2luZG93LCBOU1JlY3QgY2xpcFJlY3QpCit7CisgICAgQ0dTV2lu
ZG93SUQgd2luZG93TnVtYmVyID0gKENHU1dpbmRvd0lEKVt3aW5kb3cgd2luZG93TnVtYmVyXTsK
KyAgICBDR1NSZWdpb25PYmogc2hhcGU7CisgICAgQ0dSZWN0IGNnQ2xpcFJlY3QgPSBOU1JlY3RU
b0NHUmVjdChjbGlwUmVjdCk7CisgICAgQ0dTTmV3UmVnaW9uV2l0aFJlY3QoJmNnQ2xpcFJlY3Qs
ICZzaGFwZSk7CisgICAgQ0dTU2V0V2luZG93Q2xpcFNoYXBlKENHU01haW5Db25uZWN0aW9uSUQo
KSwgd2luZG93TnVtYmVyLCBzaGFwZSk7CisgICAgQ0dTUmVsZWFzZVJlZ2lvbihzaGFwZSk7Cit9
CisKIC0gKHZvaWQpZmluaXNoZWRFbnRlckZ1bGxTY3JlZW5BbmltYXRpb246KGJvb2wpY29tcGxl
dGVkCiB7CiAgICAgaWYgKCFfaXNFbnRlcmluZ0Z1bGxTY3JlZW4pCkBAIC0yNjMsNyArMjczLDcg
QEAgLSAodm9pZClmaW5pc2hlZEVudGVyRnVsbFNjcmVlbkFuaW1hdGlvbjooYm9vbCljb21wbGV0
ZWQKICAgICAgICAgCiAgICAgICAgIE5TUmVjdCB3aW5kb3dCb3VuZHMgPSBbW3NlbGYgd2luZG93
XSBmcmFtZV07CiAgICAgICAgIHdpbmRvd0JvdW5kcy5vcmlnaW4gPSBOU1plcm9Qb2ludDsKLSAg
ICAgICAgV0tXaW5kb3dTZXRDbGlwUmVjdChbc2VsZiB3aW5kb3ddLCB3aW5kb3dCb3VuZHMpOwor
ICAgICAgICBzZXRDbGlwUmVjdEZvcldpbmRvdyhbc2VsZiB3aW5kb3ddLCB3aW5kb3dCb3VuZHMp
OwogICAgICAgICAKICAgICAgICAgTlNXaW5kb3cgKndlYldpbmRvdyA9IFtfd2ViVmlld1BsYWNl
aG9sZGVyLmdldCgpIHdpbmRvd107CiAgICAgICAgIC8vIEluIExpb24sIE5TV2luZG93IHdpbGwg
YW5pbWF0ZSBpbnRvIGFuZCBvdXQgb2Ygb3JkZXJPdXQgb3BlcmF0aW9ucy4gU3VwcHJlc3MgdGhh
dApAQCAtMzUzLDcgKzM2Myw3IEBAIC0gKHZvaWQpZmluaXNoZWRFeGl0RnVsbFNjcmVlbkFuaW1h
dGlvbjooYm9vbCljb21wbGV0ZWQKICAgICAKICAgICBOU1JlY3Qgd2luZG93Qm91bmRzID0gW1tz
ZWxmIHdpbmRvd10gZnJhbWVdOwogICAgIHdpbmRvd0JvdW5kcy5vcmlnaW4gPSBOU1plcm9Qb2lu
dDsKLSAgICBXS1dpbmRvd1NldENsaXBSZWN0KFtzZWxmIHdpbmRvd10sIHdpbmRvd0JvdW5kcyk7
CisgICAgc2V0Q2xpcFJlY3RGb3JXaW5kb3coW3NlbGYgd2luZG93XSwgd2luZG93Qm91bmRzKTsK
ICAgICAKICAgICBbW3NlbGYgd2luZG93XSBvcmRlck91dDpzZWxmXTsKICAgICBbW3NlbGYgd2lu
ZG93XSBzZXRGcmFtZTpOU1plcm9SZWN0IGRpc3BsYXk6WUVTXTsKQEAgLTQ4NCwxMyArNDk0LDEz
IEBAIC0gKHZvaWQpX3N0YXJ0RW50ZXJGdWxsU2NyZWVuQW5pbWF0aW9uV2l0aER1cmF0aW9uOihO
U1RpbWVJbnRlcnZhbClkdXJhdGlvbgogICAgIFtfc2NhbGVBbmltYXRpb24uZ2V0KCkgc2V0Q3Vy
cmVudFByb2dyZXNzOjBdOwogICAgIFtfc2NhbGVBbmltYXRpb24uZ2V0KCkgc3RhcnRBbmltYXRp
b25dOwogICAgIAotICAgIC8vIFdLV2luZG93U2V0Q2xpcFJlY3QgdGFrZXMgd2luZG93IGNvb3Jk
aW5hdGVzLCBzbyBjb252ZXJ0IGZyb20gc2NyZWVuIGNvb3JkaW5hdGVzIGhlcmU6CisgICAgLy8g
c2V0Q2xpcFJlY3RGb3JXaW5kb3cgdGFrZXMgd2luZG93IGNvb3JkaW5hdGVzLCBzbyBjb252ZXJ0
IGZyb20gc2NyZWVuIGNvb3JkaW5hdGVzIGhlcmU6CiAgICAgTlNSZWN0IGZpbmFsQm91bmRzID0g
X2ZpbmFsRnJhbWU7CiAjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcHVzaAogI3ByYWdtYSBjbGFu
ZyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XZGVwcmVjYXRlZC1kZWNsYXJhdGlvbnMiCiAgICAgZmlu
YWxCb3VuZHMub3JpZ2luID0gW1tzZWxmIHdpbmRvd10gY29udmVydFNjcmVlblRvQmFzZTpmaW5h
bEJvdW5kcy5vcmlnaW5dOwogI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHBvcAotICAgIFdLV2lu
ZG93U2V0Q2xpcFJlY3QoW3NlbGYgd2luZG93XSwgZmluYWxCb3VuZHMpOworICAgIHNldENsaXBS
ZWN0Rm9yV2luZG93KFtzZWxmIHdpbmRvd10sIGZpbmFsQm91bmRzKTsKICAgICAKICAgICBbW3Nl
bGYgd2luZG93XSBtYWtlS2V5QW5kT3JkZXJGcm9udDpzZWxmXTsKICAgICAKQEAgLTU1NiwxMyAr
NTY2LDEzIEBAIC0gKHZvaWQpX3N0YXJ0RXhpdEZ1bGxTY3JlZW5BbmltYXRpb25XaXRoRHVyYXRp
b246KE5TVGltZUludGVydmFsKWR1cmF0aW9uCiAgICAgCiAgICAgW19iYWNrZ3JvdW5kV2luZG93
LmdldCgpIG9yZGVyV2luZG93Ok5TV2luZG93QmVsb3cgcmVsYXRpdmVUbzpbW3NlbGYgd2luZG93
XSB3aW5kb3dOdW1iZXJdXTsKICAgICAKLSAgICAvLyBXS1dpbmRvd1NldENsaXBSZWN0IHRha2Vz
IHdpbmRvdyBjb29yZGluYXRlcywgc28gY29udmVydCBmcm9tIHNjcmVlbiBjb29yZGluYXRlcyBo
ZXJlOgorICAgIC8vIHNldENsaXBSZWN0Rm9yV2luZG93IHRha2VzIHdpbmRvdyBjb29yZGluYXRl
cywgc28gY29udmVydCBmcm9tIHNjcmVlbiBjb29yZGluYXRlcyBoZXJlOgogICAgIE5TUmVjdCBm
aW5hbEJvdW5kcyA9IF9maW5hbEZyYW1lOwogI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHB1c2gK
ICNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBpZ25vcmVkICItV2RlcHJlY2F0ZWQtZGVjbGFyYXRp
b25zIgogICAgIGZpbmFsQm91bmRzLm9yaWdpbiA9IFtbc2VsZiB3aW5kb3ddIGNvbnZlcnRTY3Jl
ZW5Ub0Jhc2U6ZmluYWxCb3VuZHMub3JpZ2luXTsKICNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBw
b3AKLSAgICBXS1dpbmRvd1NldENsaXBSZWN0KFtzZWxmIHdpbmRvd10sIGZpbmFsQm91bmRzKTsK
KyAgICBzZXRDbGlwUmVjdEZvcldpbmRvdyhbc2VsZiB3aW5kb3ddLCBmaW5hbEJvdW5kcyk7CiAg
ICAgCiAgICAgW1tzZWxmIHdpbmRvd10gc2V0QXV0b2Rpc3BsYXk6WUVTXTsKICAgICBbW3NlbGYg
d2luZG93XSBkaXNwbGF5SWZOZWVkZWRdOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>319598</attachid>
            <date>2017-09-01 08:52:32 -0700</date>
            <delta_ts>2017-09-01 09:34:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-176200-20170901085231.patch</filename>
            <type>text/plain</type>
            <size>65253</size>
            <attacher name="Andy Estes">aestes</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIxNDczCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmNmNjE0ZmZmMzUzODM2
Mjg0MTIwMzJkMzk0M2FkZDllOGNjOWJmNS4uZDY3YWI1ZTIxNjRkNmY5NzBmNDU1MmZlZDg5M2Vl
NmQyYTgzMzYwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDQ2IEBACiAyMDE3LTA4LTMxICBBbmR5
IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KIAorICAgICAgICBbQ0ddIFVwc3RyZWFtIENvcmVH
cmFwaGljcy1yZWxhdGVkIFdlYktpdFN5c3RlbUludGVyZmFjZSBmdW5jdGlvbnMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NjIwMAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NDb250ZXh0Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VT
b3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OnN1YnNhbXBsaW5nTGV2
ZWxGb3JTY2FsZUZhY3Rvcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhp
Y3NDb250ZXh0Q0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpjbGlw
T3V0KToKKyAgICAgICAgKFdlYkNvcmU6OmFwcGx5U2hhZG93T2Zmc2V0V29ya2Fyb3VuZElmTmVl
ZGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9QYXR0ZXJuQ0cuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UGF0dGVybjo6Y3JlYXRlUGxhdGZvcm1QYXR0ZXJuIGNvbnN0KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRDb2NvYS5tbToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6Zm9jdXNSaW5nQ29sb3IpOgorICAg
ICAgICAoV2ViQ29yZTo6ZHJhd0ZvY3VzUmluZ0F0VGltZSk6CisgICAgICAgIChXZWJDb3JlOjpk
cmF3Rm9jdXNSaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OmRyYXdGb2N1c1JpbmdUb0NvbnRleHQp
OgorICAgICAgICAoV2ViQ29yZTo6ZHJhd0ZvY3VzUmluZ1RvQ29udGV4dEF0VGltZSk6CisgICAg
ICAgICogcGxhdGZvcm0vaW9zL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2VJT1MubW06CisgICAgICAg
ICogcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpmbGlw
SW1hZ2VTcGVjKToKKyAgICAgICAgKFdlYkNvcmU6OnNldERyYWdJbWFnZUltcGwpOgorICAgICAg
ICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6c2V0RHJhZ0ltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9tYWMvUGxhdGZvcm1FdmVudEZhY3RvcnlNYWMubW06CisgICAgICAgICogcGxhdGZvcm0vbWFj
L1Njcm9sbGJhclRoZW1lTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6bGluZW5CYWNrZ3JvdW5k
Q29sb3IpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9UaGVtZU1hYy5tbToKKyAgICAgICAgKFdl
YkNvcmU6OmRyYXdDZWxsRm9jdXNSaW5nV2l0aEZyYW1lQXRUaW1lKToKKyAgICAgICAgKFdlYkNv
cmU6OmRyYXdDZWxsRm9jdXNSaW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvV2ViQ29yZVN5
c3RlbUludGVyZmFjZS5oOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9XZWJDb3JlU3lzdGVtSW50
ZXJmYWNlLm1tOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9XZWJXaW5kb3dBbmltYXRpb24ubW06
CisgICAgICAgIChmbGlwUmVjdCk6CisgICAgICAgIChtYWluV2luZG93U2VydmVyQ29ubmVjdGlv
bklEKToKKyAgICAgICAgKHNldFNjYWxlZEZyYW1lRm9yV2luZG93KToKKyAgICAgICAgKC1bV2Vi
V2luZG93U2NhbGVBbmltYXRpb24gc2V0Q3VycmVudFByb2dyZXNzOl0pOgorICAgICAgICAoLVtX
ZWJXaW5kb3dGYWRlQW5pbWF0aW9uIHNldEN1cnJlbnRQcm9ncmVzczpdKToKKworMjAxNy0wOC0z
MSAgQW5keSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+CisKICAgICAgICAgW01hY10gVXBzdHJl
YW0gQXBwS2l0LXJlbGF0ZWQgV2ViS2l0U3lzdGVtSW50ZXJmYWNlIGZ1bmN0aW9ucwogICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc2MTc1CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9QQUwv
Q2hhbmdlTG9nCmluZGV4IGVlZWU4NGRjNjE5ZDkyZDRkYTJhMTIwYjIwODZkYzZjNjEwYTY4YjIu
LjQzNjE3MDA3YTFlMGJlMDZhNWY2MTg0NmQxZTJlMjBiODRmZGIwYTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML0NoYW5n
ZUxvZwpAQCAtMSw1ICsxLDE3IEBACiAyMDE3LTA4LTMxICBBbmR5IEVzdGVzICA8YWVzdGVzQGFw
cGxlLmNvbT4KIAorICAgICAgICBbQ0ddIFVwc3RyZWFtIENvcmVHcmFwaGljcy1yZWxhdGVkIFdl
YktpdFN5c3RlbUludGVyZmFjZSBmdW5jdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NjIwMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogUEFMLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6Cisg
ICAgICAgICogcGFsL3NwaS9jZy9Db3JlR3JhcGhpY3NTUEkuaDoKKyAgICAgICAgKiBwYWwvc3Bp
L21hYy9ISVNlcnZpY2VzU1BJLmg6CisgICAgICAgICogcGFsL3NwaS9tYWMvTlNHcmFwaGljc1NQ
SS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9tYWMvSElTZXJ2aWNl
c1NQSS5oLgorCisyMDE3LTA4LTMxICBBbmR5IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KKwog
ICAgICAgICBbTWFjXSBVcHN0cmVhbSBBcHBLaXQtcmVsYXRlZCBXZWJLaXRTeXN0ZW1JbnRlcmZh
Y2UgZnVuY3Rpb25zCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNzYxNzUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBiNjJiN2VlNTYxZmYwNDQ2ZmVlYmRiNDMwNjU2Njcx
MmNjZGZlZDI4Li4yZGMxYjc0MjNjMzhiYTcxYTE1ZDNhODljNDYwYWZjNDEwZWRiZThhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwpAQCAtMSw1ICsxLDIyIEBACiAyMDE3LTA4LTMxICBBbmR5IEVzdGVzICA8YWVzdGVzQGFw
cGxlLmNvbT4KIAorICAgICAgICBbQ0ddIFVwc3RyZWFtIENvcmVHcmFwaGljcy1yZWxhdGVkIFdl
YktpdFN5c3RlbUludGVyZmFjZSBmdW5jdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NjIwMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogUGx1Z2luUHJvY2Vzcy9tYWMvUGx1Z2luUHJvY2Vzc01h
Yy5tbToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXpl
UHJvY2Vzcyk6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9XaW5kb3dTZXJ2ZXJDb25uZWN0aW9u
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9XaW5kb3dTZXJ2ZXJDb25uZWN0aW9uLm1tOgor
ICAgICAgICAoV2ViS2l0OjpyZWdpc3Rlck9jY2x1c2lvbk5vdGlmaWNhdGlvbkhhbmRsZXIpOgor
ICAgICAgICAoV2ViS2l0OjpXaW5kb3dTZXJ2ZXJDb25uZWN0aW9uOjpXaW5kb3dTZXJ2ZXJDb25u
ZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2luZG93U2VydmVyQ29ubmVjdGlvbjo6YXBwbGlj
YXRpb25XaW5kb3dNb2RpZmljYXRpb25zU3RhcnRlZCk6IERlbGV0ZWQuCisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViU3lzdGVtSW50ZXJmYWNlLm1tOgorICAgICAg
ICAoSW5pdFdlYkNvcmVTeXN0ZW1JbnRlcmZhY2UpOgorCisyMDE3LTA4LTMxICBBbmR5IEVzdGVz
ICA8YWVzdGVzQGFwcGxlLmNvbT4KKwogICAgICAgICBbTWFjXSBVcHN0cmVhbSBBcHBLaXQtcmVs
YXRlZCBXZWJLaXRTeXN0ZW1JbnRlcmZhY2UgZnVuY3Rpb25zCiAgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzYxNzUKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hh
bmdlTG9nCmluZGV4IGM0Zjk5NTY3MjU0ZDBiNjIyYzlhOGY5ODc5MTdiNjcwMzM5NzgwOTMuLmU3
ZDhkODBmNDAyMjJjYmNmNzQyOThjN2E5MjEzYTgzMDI0YTkwZGIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9DaGFuZ2VMb2cKQEAgLTEsNSArMSwzNiBAQAogMjAxNy0wOC0zMSAgQW5keSBFc3RlcyAgPGFl
c3Rlc0BhcHBsZS5jb20+CiAKKyAgICAgICAgW0NHXSBVcHN0cmVhbSBDb3JlR3JhcGhpY3MtcmVs
YXRlZCBXZWJLaXRTeXN0ZW1JbnRlcmZhY2UgZnVuY3Rpb25zCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzYyMDAKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIENhcmJvbi9ISVdlYlZpZXcubW06CisgICAg
ICAgICgtW05TV2luZG93R3JhcGhpY3NDb250ZXh0IF93ZWJfc2V0R3JhcGhpY3NQb3J0Ol0pOgor
ICAgICAgICAob3ZlcnJpZGVDR0NvbnRleHQpOgorICAgICAgICAocmVzdG9yZUNHQ29udGV4dCk6
CisgICAgICAgIChEcmF3KToKKyAgICAgICAgKiBQbHVnaW5zL0hvc3RlZC9XZWJIb3N0ZWROZXRz
Y2FwZVBsdWdpblZpZXcubW06CisgICAgICAgICgrW1dlYkhvc3RlZE5ldHNjYXBlUGx1Z2luVmll
dyBpbml0aWFsaXplXSk6CisgICAgICAgICogUGx1Z2lucy9XZWJCYXNlTmV0c2NhcGVQbHVnaW5W
aWV3Lmg6CisgICAgICAgICogUGx1Z2lucy9XZWJCYXNlTmV0c2NhcGVQbHVnaW5WaWV3Lm1tOgor
ICAgICAgICAoV2ViS2l0OjpzZW5kVXNlckNoYW5nZU5vdGlmaWNhdGlvbnMpOgorICAgICAgICAq
IFBsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5WaWV3Lm1tOgorICAgICAgICAoK1tXZWJOZXRzY2Fw
ZVBsdWdpblZpZXcgaW5pdGlhbGl6ZV0pOgorICAgICAgICAoLVtXZWJOZXRzY2FwZVBsdWdpblZp
ZXcgc2F2ZUFuZFNldE5ld1BvcnRTdGF0ZUZvclVwZGF0ZTpdKToKKyAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9XZWJTeXN0ZW1JbnRlcmZhY2UubW06CisgICAgICAgIChJbml0V2ViQ29yZVN5c3Rl
bUludGVyZmFjZSk6CisgICAgICAgICogV2ViVmlldy9XZWJGcmFtZS5tbToKKyAgICAgICAgKC1b
V2ViRnJhbWUgX3BhaW50QmVoYXZpb3JGb3JEZXN0aW5hdGlvbkNvbnRleHQ6XSk6CisgICAgICAg
ICogV2ViVmlldy9XZWJGdWxsU2NyZWVuQ29udHJvbGxlci5tbToKKyAgICAgICAgKHNldENsaXBS
ZWN0Rm9yV2luZG93KToKKyAgICAgICAgKC1bV2ViRnVsbFNjcmVlbkNvbnRyb2xsZXIgZmluaXNo
ZWRFbnRlckZ1bGxTY3JlZW5BbmltYXRpb246XSk6CisgICAgICAgICgtW1dlYkZ1bGxTY3JlZW5D
b250cm9sbGVyIGZpbmlzaGVkRXhpdEZ1bGxTY3JlZW5BbmltYXRpb246XSk6CisgICAgICAgICgt
W1dlYkZ1bGxTY3JlZW5Db250cm9sbGVyIF9zdGFydEVudGVyRnVsbFNjcmVlbkFuaW1hdGlvbldp
dGhEdXJhdGlvbjpdKToKKyAgICAgICAgKC1bV2ViRnVsbFNjcmVlbkNvbnRyb2xsZXIgX3N0YXJ0
RXhpdEZ1bGxTY3JlZW5BbmltYXRpb25XaXRoRHVyYXRpb246XSk6CisKKzIwMTctMDgtMzEgIEFu
ZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29tPgorCiAgICAgICAgIFtNYWNdIFVwc3RyZWFtIEFw
cEtpdC1yZWxhdGVkIFdlYktpdFN5c3RlbUludGVyZmFjZSBmdW5jdGlvbnMKICAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NjE3NQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9QQUwvUEFMLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3Vy
Y2UvV2ViQ29yZS9QQUwvUEFMLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMTNjZWNj
Y2U2YzQzNmYwNTAyZWQ5OTcyYmViNGIxYWViM2YzNDBiOC4uM2EwNDBhYTI0MDg5Mzg5MmNhYmU1
OGU1ZjdjMjA4M2YxNjEyYjZkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML1BBTC54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9QQUwueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTA0LDYgKzEwNCw3IEBACiAJCUExMDgyNkYxMUY1
NzNCQ0EwMDQ3NzJBQyAvKiBOU1Jlc3BvbmRlclNQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTEwODI2RjAxRjU3M0JDQTAwNDc3MkFDIC8qIE5TUmVz
cG9uZGVyU1BJLmggKi87IH07CiAJCUExMDgyNkY5MUY1NzYyOTIwMDQ3NzJBQyAvKiBXZWJQYW5l
bC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTEwODI2
RjcxRjU3NjI5MjAwNDc3MkFDIC8qIFdlYlBhbmVsLmggKi87IH07CiAJCUExMDgyNkZBMUY1NzYy
OTIwMDQ3NzJBQyAvKiBXZWJQYW5lbC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEExMDgyNkY4MUY1NzYyOTIwMDQ3NzJBQyAvKiBXZWJQYW5lbC5tbSAq
LzsgfTsKKwkJQTEwODI2RkUxRjU4QTQzMzAwNDc3MkFDIC8qIE5TR3JhcGhpY3NTUEkuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExMDgyNkZEMUY1OEE0
MzMwMDQ3NzJBQyAvKiBOU0dyYXBoaWNzU1BJLmggKi87IH07CiAJCUExRjU1RENGMUY1NTI4RUMw
MEVEQjc1RiAvKiBNZXRhZGF0YVNQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQTFGNTVEQ0UxRjU1MjhFQzAwRURCNzVGIC8qIE1ldGFkYXRhU1BJLmgg
Ki87IH07CiAJCUEzMEQ0MTIxMUYwREQwRUEwMEI3MTk1NCAvKiBLaWxsUmluZy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTMwRDQxMUUxRjBERDBFQTAw
QjcxOTU0IC8qIEtpbGxSaW5nLmggKi87IH07CiAJCUEzMEQ0MTIyMUYwREQwRUEwMEI3MTk1NCAv
KiBLaWxsUmluZy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBBMzBENDExRjFGMEREMEVBMDBCNzE5NTQgLyogS2lsbFJpbmcuY3BwICovOyB9OwpAQCAt
MjIzLDYgKzIyNCw3IEBACiAJCUExMDgyNkYwMUY1NzNCQ0EwMDQ3NzJBQyAvKiBOU1Jlc3BvbmRl
clNQSS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBOU1Jlc3BvbmRlclNQSS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlBMTA4MjZGNzFGNTc2MjkyMDA0NzcyQUMgLyogV2ViUGFuZWwuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gV2ViUGFuZWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTEw
ODI2RjgxRjU3NjI5MjAwNDc3MkFDIC8qIFdlYlBhbmVsLm1tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gV2ViUGFuZWwubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUExMDgyNkZEMUY1
OEE0MzMwMDQ3NzJBQyAvKiBOU0dyYXBoaWNzU1BJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5TR3JhcGhp
Y3NTUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTFGNTVEQ0UxRjU1MjhFQzAw
RURCNzVGIC8qIE1ldGFkYXRhU1BJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1ldGFkYXRhU1BJLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUEzMEQ0MTFFMUYwREQwRUEwMEI3MTk1NCAvKiBL
aWxsUmluZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBLaWxsUmluZy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMzBENDExRjFGMEREMEVBMDBCNzE5NTQgLyog
S2lsbFJpbmcuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gS2lsbFJp
bmcuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzU1LDYgKzM1Nyw3IEBACiAJ
CQkJMEM3Nzg1NzUxRjQ1MTMwRjAwRjRFQkI2IC8qIE5TQXBwbGljYXRpb25TUEkuaCAqLywKIAkJ
CQkwQzc3ODU3NjFGNDUxMzBGMDBGNEVCQjYgLyogTlNFdmVudFNQSS5oICovLAogCQkJCTBDNzc4
NTc3MUY0NTEzMEYwMEY0RUJCNiAvKiBOU0ZvbnRTUEkuaCAqLywKKwkJCQlBMTA4MjZGRDFGNThB
NDMzMDA0NzcyQUMgLyogTlNHcmFwaGljc1NQSS5oICovLAogCQkJCTBDNzc4NTc4MUY0NTEzMEYw
MEY0RUJCNiAvKiBOU0ltbWVkaWF0ZUFjdGlvbkdlc3R1cmVSZWNvZ25pemVyU1BJLmggKi8sCiAJ
CQkJMEM3Nzg1NzkxRjQ1MTMwRjAwRjRFQkI2IC8qIE5TTWVudVNQSS5oICovLAogCQkJCTBDNzc4
NTdBMUY0NTEzMEYwMEY0RUJCNiAvKiBOU1Bhc3RlYm9hcmRTUEkuaCAqLywKQEAgLTU1MSw2ICs1
NTQsNyBAQAogCQkJCTBDMkRBMTRFMUYzQkVCNDkwMERCQzMxNyAvKiBOU0V4dGVuc2lvblNQSS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEMyREExNEYxRjNCRUI0OTAwREJDMzE3IC8qIE5TRmlsZU1h
bmFnZXJTUEkuaCBpbiBIZWFkZXJzICovLAogCQkJCTBDNzc4NTkwMUY0NTEzMEYwMEY0RUJCNiAv
KiBOU0ZvbnRTUEkuaCBpbiBIZWFkZXJzICovLAorCQkJCUExMDgyNkZFMUY1OEE0MzMwMDQ3NzJB
QyAvKiBOU0dyYXBoaWNzU1BJLmggaW4gSGVhZGVycyAqLywKIAkJCQkwQzc3ODU5MTFGNDUxMzBG
MDBGNEVCQjYgLyogTlNJbW1lZGlhdGVBY3Rpb25HZXN0dXJlUmVjb2duaXplclNQSS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMEM3Nzg1OTIxRjQ1MTMwRjAwRjRFQkI2IC8qIE5TTWVudVNQSS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMEM3Nzg1OTMxRjQ1MTMwRjAwRjRFQkI2IC8qIE5TUGFzdGVib2Fy
ZFNQSS5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFs
L3NwaS9jZy9Db3JlR3JhcGhpY3NTUEkuaCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2Nn
L0NvcmVHcmFwaGljc1NQSS5oCmluZGV4IDdjMjkxYzkxNGQ2OWY1NmQ4NmRiYjRhODgxZmIyMzE4
OWM1YTVhNWMuLjMyMjY1YTBlZjZkNGE4NzBhYjQxNmMyNDA0ZDkyZjRmYmQ5ZDZhODEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NnL0NvcmVHcmFwaGljc1NQSS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NnL0NvcmVHcmFwaGljc1NQSS5oCkBAIC0x
MzcsMjEgKzEzNyw3NCBAQCBzdGF0aWMgaW5saW5lIENHRmxvYXQgQ0dGbG9hdE1pbihDR0Zsb2F0
IGEsIENHRmxvYXQgYikgeyByZXR1cm4gaXNuYW4oYSkgPyBiIDogKAogCiB0eXBlZGVmIHN0cnVj
dCBDR0ZvbnRDYWNoZSBDR0ZvbnRDYWNoZTsKIAotI2lmIFBMQVRGT1JNKE1BQykKLXR5cGVkZWYg
dWludDMyX3QgQ0dTQ29ubmVjdGlvbklEOwotdHlwZWRlZiB1aW50MzJfdCBDR1NXaW5kb3dJRDsK
LXR5cGVkZWYgdWludDMyX3QgQ0dTV2luZG93Q291bnQ7Ci10eXBlZGVmIENHU1dpbmRvd0lEICpD
R1NXaW5kb3dJRExpc3Q7CisjaWYgUExBVEZPUk0oQ09DT0EpCiAKIGVudW0gewogICAgIGtDR1NX
aW5kb3dDYXB0dXJlTm9taW5hbFJlc29sdXRpb24gPSAweDAyMDAsCiAgICAga0NHU0NhcHR1cmVJ
Z25vcmVHbG9iYWxDbGlwU2hhcGUgPSAweDA4MDAsCiB9OwogdHlwZWRlZiB1aW50MzJfdCBDR1NX
aW5kb3dDYXB0dXJlT3B0aW9uczsKLSNlbmRpZgorCit0eXBlZGVmIENGX0VOVU0gKGludDMyX3Qs
IENHU3R5bGVEcmF3T3JkZXJpbmcpIHsKKyAgICBrQ0dTdHlsZURyYXdPcmRlcmluZ1N0eWxlT25s
eSA9IDAsCisgICAga0NHU3R5bGVEcmF3T3JkZXJpbmdCZWxvdyA9IDEsCisgICAga0NHU3R5bGVE
cmF3T3JkZXJpbmdBYm92ZSA9IDIsCit9OworCit0eXBlZGVmIENGX0VOVU0gKGludDMyX3QsIENH
Rm9jdXNSaW5nT3JkZXJpbmcpIHsKKyAgICBrQ0dGb2N1c1JpbmdPcmRlcmluZ05vbmUgPSBrQ0dT
dHlsZURyYXdPcmRlcmluZ1N0eWxlT25seSwKKyAgICBrQ0dGb2N1c1JpbmdPcmRlcmluZ0JlbG93
ID0ga0NHU3R5bGVEcmF3T3JkZXJpbmdCZWxvdywKKyAgICBrQ0dGb2N1c1JpbmdPcmRlcmluZ0Fi
b3ZlID0ga0NHU3R5bGVEcmF3T3JkZXJpbmdBYm92ZSwKK307CisKK3R5cGVkZWYgQ0ZfRU5VTSAo
aW50MzJfdCwgQ0dGb2N1c1JpbmdUaW50KSB7CisgICAga0NHRm9jdXNSaW5nVGludEJsdWUgPSAw
LAorICAgIGtDR0ZvY3VzUmluZ1RpbnRHcmFwaGl0ZSA9IDEsCit9OworCitzdHJ1Y3QgQ0dGb2N1
c1JpbmdTdHlsZSB7CisgICAgdW5zaWduZWQgaW50IHZlcnNpb247CisgICAgQ0dGb2N1c1JpbmdU
aW50IHRpbnQ7CisgICAgQ0dGb2N1c1JpbmdPcmRlcmluZyBvcmRlcmluZzsKKyAgICBDR0Zsb2F0
IGFscGhhOworICAgIENHRmxvYXQgcmFkaXVzOworICAgIENHRmxvYXQgdGhyZXNob2xkOworICAg
IENHUmVjdCBib3VuZHM7CisgICAgaW50IGFjY3VtdWxhdGU7Cit9OwordHlwZWRlZiBzdHJ1Y3Qg
Q0dGb2N1c1JpbmdTdHlsZSBDR0ZvY3VzUmluZ1N0eWxlOworCit0eXBlZGVmIENGX0VOVU0odWlu
dDMyX3QsIENHU05vdGlmaWNhdGlvblR5cGUpIHsKKyAgICBrQ0dTRmlyc3RDb25uZWN0aW9uTm90
aWZpY2F0aW9uID0gOTAwLAorICAgIGtDR1NGaXJzdFNlc3Npb25Ob3RpZmljYXRpb24gPSAxNTAw
LAorfTsKKworc3RhdGljIGNvbnN0IENHU05vdGlmaWNhdGlvblR5cGUga0NHU0Nvbm5lY3Rpb25X
aW5kb3dNb2RpZmljYXRpb25zU3RhcnRlZCA9IChDR1NOb3RpZmljYXRpb25UeXBlKShrQ0dTRmly
c3RDb25uZWN0aW9uTm90aWZpY2F0aW9uICsgNik7CitzdGF0aWMgY29uc3QgQ0dTTm90aWZpY2F0
aW9uVHlwZSBrQ0dTQ29ubmVjdGlvbldpbmRvd01vZGlmaWNhdGlvbnNTdG9wcGVkID0gKENHU05v
dGlmaWNhdGlvblR5cGUpKGtDR1NGaXJzdENvbm5lY3Rpb25Ob3RpZmljYXRpb24gKyA3KTsKK3N0
YXRpYyBjb25zdCBDR1NOb3RpZmljYXRpb25UeXBlIGtDR1Nlc3Npb25Db25zb2xlQ29ubmVjdCA9
IGtDR1NGaXJzdFNlc3Npb25Ob3RpZmljYXRpb247CitzdGF0aWMgY29uc3QgQ0dTTm90aWZpY2F0
aW9uVHlwZSBrQ0dTZXNzaW9uQ29uc29sZURpc2Nvbm5lY3QgPSAoQ0dTTm90aWZpY2F0aW9uVHlw
ZSkoa0NHU2Vzc2lvbkNvbnNvbGVDb25uZWN0ICsgMSk7CisKKyNlbmRpZiAvLyBQTEFURk9STShD
T0NPQSkKIAogI2VuZGlmIC8vIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCiAKKyNpZiBQTEFURk9S
TShDT0NPQSkKK3R5cGVkZWYgdWludDMyX3QgQ0dTQnl0ZUNvdW50OwordHlwZWRlZiB1aW50MzJf
dCBDR1NDb25uZWN0aW9uSUQ7Cit0eXBlZGVmIHVpbnQzMl90IENHU1dpbmRvd0NvdW50OwordHlw
ZWRlZiB1aW50MzJfdCBDR1NXaW5kb3dJRDsKKwordHlwZWRlZiBDR1NXaW5kb3dJRCogQ0dTV2lu
ZG93SURMaXN0OwordHlwZWRlZiBzdHJ1Y3QgQ0ZfQlJJREdFRF9UWVBFKGlkKSBDR1NSZWdpb25P
YmplY3QqIENHU1JlZ2lvbk9iajsKK3R5cGVkZWYgc3RydWN0IENGX0JSSURHRURfVFlQRShpZCkg
Q0dTdHlsZSogQ0dTdHlsZVJlZjsKKwordHlwZWRlZiB2b2lkKiBDR1NOb3RpZmljYXRpb25Bcmc7
Cit0eXBlZGVmIHZvaWQqIENHU05vdGlmaWNhdGlvbkRhdGE7CisKK3R5cGVkZWYgdm9pZCAoKkNH
U05vdGlmeUNvbm5lY3Rpb25Qcm9jUHRyKShDR1NOb3RpZmljYXRpb25UeXBlLCB2b2lkKiBkYXRh
LCB1aW50MzJfdCBkYXRhX2xlbmd0aCwgdm9pZCogYXJnLCBDR1NDb25uZWN0aW9uSUQpOwordHlw
ZWRlZiB2b2lkICgqQ0dTTm90aWZ5UHJvY1B0cikoQ0dTTm90aWZpY2F0aW9uVHlwZSwgdm9pZCog
ZGF0YSwgdWludDMyX3QgZGF0YV9sZW5ndGgsIHZvaWQqIGFyZyk7CisjZW5kaWYKKwogV1RGX0VY
VEVSTl9DX0JFR0lOCiAKIENHQ29sb3JSZWYgQ0dDb2xvclRyYW5zZm9ybUNvbnZlcnRDb2xvcihD
R0NvbG9yVHJhbnNmb3JtUmVmLCBDR0NvbG9yUmVmLCBDR0NvbG9yUmVuZGVyaW5nSW50ZW50KTsK
QEAgLTE4Niw2ICsyMzksOCBAQCBDR0RhdGFQcm92aWRlclJlZiBDR1BERkRvY3VtZW50R2V0RGF0
YVByb3ZpZGVyKENHUERGRG9jdW1lbnRSZWYpOwogCiBDR0ZvbnRBbnRpYWxpYXNpbmdTdHlsZSBD
R0NvbnRleHRHZXRGb250QW50aWFsaWFzaW5nU3R5bGUoQ0dDb250ZXh0UmVmKTsKIHZvaWQgQ0dD
b250ZXh0U2V0Rm9udEFudGlhbGlhc2luZ1N0eWxlKENHQ29udGV4dFJlZiwgQ0dGb250QW50aWFs
aWFzaW5nU3R5bGUpOworYm9vbCBDR0NvbnRleHREcmF3c1dpdGhDb3JyZWN0U2hhZG93T2Zmc2V0
cyhDR0NvbnRleHRSZWYpOworQ0dQYXR0ZXJuUmVmIENHUGF0dGVybkNyZWF0ZVdpdGhJbWFnZTIo
Q0dJbWFnZVJlZiwgQ0dBZmZpbmVUcmFuc2Zvcm0sIENHUGF0dGVyblRpbGluZyk7CiAKICNpZiAo
UExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTIw
MCkgfHwgUExBVEZPUk0oSU9TKQogYm9vbCBDR0NvbG9yU3BhY2VVc2VzRXh0ZW5kZWRSYW5nZShD
R0NvbG9yU3BhY2VSZWYpOwpAQCAtMjAzLDEwICsyNTgsMjEgQEAgQ0dDb2xvclNwYWNlUmVmIENH
SU9TdXJmYWNlQ29udGV4dEdldENvbG9yU3BhY2UoQ0dDb250ZXh0UmVmKTsKICNlbmRpZgogCiAj
aWYgUExBVEZPUk0oQ09DT0EpCi1DR1NSZWdpb25FbnVtZXJhdG9yT2JqIENHU1JlZ2lvbkVudW1l
cmF0b3IoQ0dSZWdpb25SZWYpOwotQ0dSZWN0KiBDR1NOZXh0UmVjdChjb25zdCBDR1NSZWdpb25F
bnVtZXJhdG9yT2JqKTsKLUNHRXJyb3IgQ0dTUmVsZWFzZVJlZ2lvbkVudW1lcmF0b3IoY29uc3Qg
Q0dTUmVnaW9uRW51bWVyYXRvck9iaik7CiBDR0NvbG9yU3BhY2VSZWYgQ0dDb250ZXh0Q29weURl
dmljZUNvbG9yU3BhY2UoQ0dDb250ZXh0UmVmKTsKK0NHRXJyb3IgQ0dTTmV3UmVnaW9uV2l0aFJl
Y3QoY29uc3QgQ0dSZWN0KiwgQ0dSZWdpb25SZWYqKTsKK0NHRXJyb3IgQ0dTUGFja2FnZXNFbmFi
bGVDb25uZWN0aW9uT2NjbHVzaW9uTm90aWZpY2F0aW9ucyhDR1NDb25uZWN0aW9uSUQsIGJvb2wg
ZmxhZywgYm9vbCogb3V0Q3VycmVudFZpc2liaWxpdHlTdGF0ZSk7CitDR0Vycm9yIENHU1BhY2th
Z2VzRW5hYmxlQ29ubmVjdGlvbldpbmRvd01vZGlmaWNhdGlvbk5vdGlmaWNhdGlvbnMoQ0dTQ29u
bmVjdGlvbklELCBib29sIGZsYWcsIGJvb2wqIG91dENvbm5lY3Rpb25Jc0N1cnJlbnRseUlkbGUp
OworQ0dFcnJvciBDR1NSZWdpc3RlckNvbm5lY3Rpb25Ob3RpZnlQcm9jKENHU0Nvbm5lY3Rpb25J
RCwgQ0dTTm90aWZ5Q29ubmVjdGlvblByb2NQdHIsIENHU05vdGlmaWNhdGlvblR5cGUsIHZvaWQq
IGFyZyk7CitDR0Vycm9yIENHU1JlZ2lzdGVyTm90aWZ5UHJvYyhDR1NOb3RpZnlQcm9jUHRyLCBD
R1NOb3RpZmljYXRpb25UeXBlLCB2b2lkKiBhcmcpOworQ0dFcnJvciBDR1NSZWxlYXNlUmVnaW9u
KGNvbnN0IENHUmVnaW9uUmVmIENGX1JFTEVBU0VTX0FSR1VNRU5UKTsKK0NHRXJyb3IgQ0dTUmVs
ZWFzZVJlZ2lvbkVudW1lcmF0b3IoY29uc3QgQ0dTUmVnaW9uRW51bWVyYXRvck9iaik7CitDR0Vy
cm9yIENHU1NldFdpbmRvd0FscGhhKENHU0Nvbm5lY3Rpb25JRCwgQ0dTV2luZG93SUQsIGZsb2F0
IGFscGhhKTsKK0NHRXJyb3IgQ0dTU2V0V2luZG93Q2xpcFNoYXBlKENHU0Nvbm5lY3Rpb25JRCwg
Q0dTV2luZG93SUQsIENHUmVnaW9uUmVmIHNoYXBlKTsKK0NHRXJyb3IgQ0dTU2V0V2luZG93V2Fy
cChDR1NDb25uZWN0aW9uSUQsIENHU1dpbmRvd0lELCBpbnQgdywgaW50IGgsIGNvbnN0IGZsb2F0
KiBtZXNoKTsKK0NHUmVjdCogQ0dTTmV4dFJlY3QoY29uc3QgQ0dTUmVnaW9uRW51bWVyYXRvck9i
aik7CitDR1NSZWdpb25FbnVtZXJhdG9yT2JqIENHU1JlZ2lvbkVudW1lcmF0b3IoQ0dSZWdpb25S
ZWYpOworQ0dTdHlsZVJlZiBDR1N0eWxlQ3JlYXRlRm9jdXNSaW5nV2l0aENvbG9yKGNvbnN0IENH
Rm9jdXNSaW5nU3R5bGUqLCBDR0NvbG9yUmVmKTsKK3ZvaWQgQ0dDb250ZXh0U2V0U3R5bGUoQ0dD
b250ZXh0UmVmLCBDR1N0eWxlUmVmKTsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oV0lOKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvbWFjL0hJU2VydmljZXNTUEkuaCBi
L1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL21hYy9ISVNlcnZpY2VzU1BJLmgKaW5kZXggOWYz
NWRjZDRkMDNhNTdhMDg2YjBhMzY1ZGZiMzlkZGZmY2M4MTk4NS4uYTM1NWI5NGZlNjMwOTJlZjVh
Y2QwYjVjOTVlMDNkZDQ2ZTk1MzgxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML3Bh
bC9zcGkvbWFjL0hJU2VydmljZXNTUEkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3Nw
aS9tYWMvSElTZXJ2aWNlc1NQSS5oCkBAIC0yOCwyMSArMjgsNDUgQEAKICNpZiBVU0UoQVBQTEVf
SU5URVJOQUxfU0RLKQogCiAjaW5jbHVkZSA8SElTZXJ2aWNlcy9BWFRleHRNYXJrZXIuaD4KKyNp
bmNsdWRlIDxISVNlcnZpY2VzL0NvcmVEcmFnLmg+CisKKyNlbHNlCisKK2VudW0geworICAgIGtD
b3JlRHJhZ0ltYWdlU3BlY1ZlcnNpb25PbmUgPSAxLAorfTsKKworc3RydWN0IENvcmVEcmFnSW1h
Z2VTcGVjIHsKKyAgICBVSW50MzIgdmVyc2lvbjsKKyAgICBTSW50MzIgcGl4ZWxzV2lkZTsKKyAg
ICBTSW50MzIgcGl4ZWxzSGlnaDsKKyAgICBTSW50MzIgYml0c1BlclNhbXBsZTsKKyAgICBTSW50
MzIgc2FtcGxlc1BlclBpeGVsOworICAgIFNJbnQzMiBiaXRzUGVyUGl4ZWw7CisgICAgU0ludDMy
IGJ5dGVzUGVyUm93OworICAgIEJvb2xlYW4gaXNQbGFuYXI7CisgICAgQm9vbGVhbiBoYXNBbHBo
YTsKKyAgICBjb25zdCBVSW50OCogZGF0YVs1XTsKK307CiAKICNlbmRpZgogCi10eXBlZGVmIGNv
bnN0IHN0cnVjdCBfX0FYVGV4dE1hcmtlciAqQVhUZXh0TWFya2VyUmVmOwotdHlwZWRlZiBjb25z
dCBzdHJ1Y3QgX19BWFRleHRNYXJrZXJSYW5nZSAqQVhUZXh0TWFya2VyUmFuZ2VSZWY7Cit0eXBl
ZGVmIGNvbnN0IHN0cnVjdCBfX0FYVGV4dE1hcmtlciogQVhUZXh0TWFya2VyUmVmOwordHlwZWRl
ZiBjb25zdCBzdHJ1Y3QgX19BWFRleHRNYXJrZXJSYW5nZSogQVhUZXh0TWFya2VyUmFuZ2VSZWY7
Cit0eXBlZGVmIHN0cnVjdCBDb3JlRHJhZ0ltYWdlU3BlYyBDb3JlRHJhZ0ltYWdlU3BlYzsKK3R5
cGVkZWYgc3RydWN0IE9wYXF1ZUNvcmVEcmFnKiBDb3JlRHJhZ1JlZjsKIAogV1RGX0VYVEVSTl9D
X0JFR0lOCiAKLUNGVHlwZUlEIEFYVGV4dE1hcmtlckdldFR5cGVJRCgpOwotQ0ZUeXBlSUQgQVhU
ZXh0TWFya2VyUmFuZ2VHZXRUeXBlSUQoKTsKLUFYVGV4dE1hcmtlclJlZiBBWFRleHRNYXJrZXJD
cmVhdGUoQ0ZBbGxvY2F0b3JSZWYsIGNvbnN0IFVJbnQ4KiBieXRlcywgQ0ZJbmRleCBsZW5ndGgp
OwotQ0ZJbmRleCBBWFRleHRNYXJrZXJHZXRMZW5ndGgoQVhUZXh0TWFya2VyUmVmKTsKLWNvbnN0
IFVJbnQ4KiBBWFRleHRNYXJrZXJHZXRCeXRlUHRyKEFYVGV4dE1hcmtlclJlZik7CiBBWFRleHRN
YXJrZXJSYW5nZVJlZiBBWFRleHRNYXJrZXJSYW5nZUNyZWF0ZShDRkFsbG9jYXRvclJlZiwgQVhU
ZXh0TWFya2VyUmVmIHN0YXJ0TWFya2VyLCBBWFRleHRNYXJrZXJSZWYgZW5kTWFya2VyKTsKK0FY
VGV4dE1hcmtlclJlZiBBWFRleHRNYXJrZXJDcmVhdGUoQ0ZBbGxvY2F0b3JSZWYsIGNvbnN0IFVJ
bnQ4KiBieXRlcywgQ0ZJbmRleCBsZW5ndGgpOwogQVhUZXh0TWFya2VyUmVmIEFYVGV4dE1hcmtl
clJhbmdlQ29weVN0YXJ0TWFya2VyKEFYVGV4dE1hcmtlclJhbmdlUmVmKTsKIEFYVGV4dE1hcmtl
clJlZiBBWFRleHRNYXJrZXJSYW5nZUNvcHlFbmRNYXJrZXIoQVhUZXh0TWFya2VyUmFuZ2VSZWYp
OworQ0ZJbmRleCBBWFRleHRNYXJrZXJHZXRMZW5ndGgoQVhUZXh0TWFya2VyUmVmKTsKK0NGVHlw
ZUlEIEFYVGV4dE1hcmtlckdldFR5cGVJRCgpOworQ0ZUeXBlSUQgQVhUZXh0TWFya2VyUmFuZ2VH
ZXRUeXBlSUQoKTsKK0NvcmVEcmFnUmVmIENvcmVEcmFnR2V0Q3VycmVudERyYWcoKTsKK09TU3Rh
dHVzIENvcmVEcmFnU2V0SW1hZ2UoQ29yZURyYWdSZWYsIENHUG9pbnQgaW1hZ2VPZmZzZXQsIENv
cmVEcmFnSW1hZ2VTcGVjKiwgQ0dTUmVnaW9uT2JqIGltYWdlU2hhcGUsIGZsb2F0IG92ZXJhbGxB
bHBoYSk7Citjb25zdCBVSW50OCogQVhUZXh0TWFya2VyR2V0Qnl0ZVB0cihBWFRleHRNYXJrZXJS
ZWYpOwogCiBXVEZfRVhURVJOX0NfRU5ECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwv
cGFsL3NwaS9tYWMvTlNHcmFwaGljc1NQSS5oIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkv
bWFjL05TR3JhcGhpY3NTUEkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yYWE4MGNkMjFlYjZhMWYwYzQyOWJhY2Ix
MWRhNWRjNTNkOTEwMjZmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3Bh
bC9zcGkvbWFjL05TR3JhcGhpY3NTUEkuaApAQCAtMCwwICsxLDU3IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I3ByYWdtYSBvbmNlCisKKyNpZiBQTEFURk9STShNQUMpCisKKyNpbXBvcnQgPEFwcEtpdC9BcHBL
aXQuaD4KKworI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCisKKyNpbXBvcnQgPEFwcEtpdC9O
U0dyYXBoaWNzQ29udGV4dFByaXZhdGUuaD4KKyNpbXBvcnQgPEFwcEtpdC9OU0dyYXBoaWNzX1By
aXZhdGUuaD4KKworI2Vsc2UKKworQGludGVyZmFjZSBOU0NHU0NvbnRleHQgOiBOU0dyYXBoaWNz
Q29udGV4dCB7CisgICAgQ0dDb250ZXh0UmVmIF9jZ3NDb250ZXh0OworfQorQGVuZAorCitAaW50
ZXJmYWNlIE5TV2luZG93R3JhcGhpY3NDb250ZXh0IDogTlNDR1NDb250ZXh0IHsKKyAgICBDR1NX
aW5kb3dJRCBfY2dzV2luZG93SUQ7Cit9CitAZW5kCisKKyNlbmRpZgorCitXVEZfRVhURVJOX0Nf
QkVHSU4KKworQk9PTCBOU0luaXRpYWxpemVDR0ZvY3VzUmluZ1N0eWxlRm9yVGltZShOU0ZvY3Vz
UmluZ1BsYWNlbWVudCwgQ0dGb2N1c1JpbmdTdHlsZSosIE5TVGltZUludGVydmFsKTsKKworV1RG
X0VYVEVSTl9DX0VORAorCisjZW5kaWYgLy8gUExBVEZPUk0oTUFDKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAppbmRleCAxOGFjZGRi
ZTdlZmZmYTQyOWQxODU3ODM5YWI2ZTY2NzQ2NmEzZDg1Li5jMTRiMmE1NWU2YWE3ZjkwZDIwMDNj
NDY2ODQzNDMyMmUwODU0NTlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc0NvbnRleHQuaApAQCAtNDQ1LDYgKzQ0NSw3IEBAIHB1YmxpYzoKICNp
ZiBQTEFURk9STShNQUMpCiAgICAgdm9pZCBkcmF3Rm9jdXNSaW5nKGNvbnN0IFBhdGgmLCBkb3Vi
bGUgdGltZU9mZnNldCwgYm9vbCYgbmVlZHNSZWRyYXcpOwogICAgIHZvaWQgZHJhd0ZvY3VzUmlu
Zyhjb25zdCBWZWN0b3I8RmxvYXRSZWN0PiYsIGRvdWJsZSB0aW1lT2Zmc2V0LCBib29sJiBuZWVk
c1JlZHJhdyk7CisgICAgc3RhdGljIENHQ29sb3JSZWYgZm9jdXNSaW5nQ29sb3IoKTsKICNlbmRp
ZgogCiAgICAgdm9pZCBzZXRMaW5lQ2FwKExpbmVDYXApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwCmluZGV4IDY2OTZjOTYwYTU4NzVmMDQz
MTcyOWIxMTlhYjZiMjQxMjdkN2E1Y2EuLjAyMjhlMzkyOWEyNjZlYTk3MzJiYmE4ZWU2MDU3M2Zh
NTA5YTM1MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZVNvdXJjZS5jcHAKQEAgLTE4NCw3ICsxODQsNyBAQCBTdWJzYW1wbGluZ0xldmVsIEltYWdlU291
cmNlOjpzdWJzYW1wbGluZ0xldmVsRm9yU2NhbGVGYWN0b3IoR3JhcGhpY3NDb250ZXh0JiBjbwog
ewogI2lmIFVTRShDRykKICAgICAvLyBOZXZlciB1c2Ugc3Vic2FtcGxlZCBpbWFnZXMgZm9yIGRy
YXdpbmcgaW50byBQREYgY29udGV4dHMuCi0gICAgaWYgKHdrQ0dDb250ZXh0SXNQREZDb250ZXh0
KGNvbnRleHQucGxhdGZvcm1Db250ZXh0KCkpKQorICAgIGlmIChDR0NvbnRleHRHZXRUeXBlKGNv
bnRleHQucGxhdGZvcm1Db250ZXh0KCkpID09IGtDR0NvbnRleHRUeXBlUERGKQogICAgICAgICBy
ZXR1cm4gU3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVsdDsKIAogICAgIGZsb2F0IHNjYWxlID0gc3Rk
OjptaW4oZmxvYXQoMSksIHN0ZDo6bWF4KHNjYWxlRmFjdG9yLndpZHRoKCksIHNjYWxlRmFjdG9y
LmhlaWdodCgpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAKaW5kZXggZDU4ODM5YWU1OGJiNTEwZDUwN2Q0
NjViMDYxOTJlMDIwYmFkNWFiZC4uNThlNTI3ODg2MmI3M2VlMGU0ZWNlOTU3ZGM0YjU3ZDk1Y2Vl
MjVlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3Jh
cGhpY3NDb250ZXh0Q0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcApAQCAtOTg3LDcgKzk4Nyw3IEBAIHZvaWQgR3JhcGhp
Y3NDb250ZXh0OjpjbGlwT3V0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKICAgICAvLyBoYXMgY2Vy
dGFpbiB0cmFuc2Zvcm1zIHRoYXQgYXJlbid0IGp1c3QgYSB0cmFuc2xhdGlvbiBvciBhIHNjYWxl
LiBBbmQgZHVlIHRvIDxyZGFyOi8vcHJvYmxlbS8xNDYzNDQ1Mz4KICAgICAvLyB3ZSBjYW5ub3Qg
dXNlIGl0IGluIGZvciBhIHByaW50aW5nIGNvbnRleHQgZWl0aGVyLgogICAgIGNvbnN0IEFmZmlu
ZVRyYW5zZm9ybSYgY3RtID0gZ2V0Q1RNKCk7Ci0gICAgYm9vbCBjYW5Vc2VDR1JlY3RJbmZpbml0
ZSA9ICF3a0NHQ29udGV4dElzUERGQ29udGV4dChwbGF0Zm9ybUNvbnRleHQoKSkgJiYgKCFpc0Fj
Y2VsZXJhdGVkQ29udGV4dCgpIHx8ICghY3RtLmIoKSAmJiAhY3RtLmMoKSkpOworICAgIGJvb2wg
Y2FuVXNlQ0dSZWN0SW5maW5pdGUgPSBDR0NvbnRleHRHZXRUeXBlKHBsYXRmb3JtQ29udGV4dCgp
KSAhPSBrQ0dDb250ZXh0VHlwZVBERiAmJiAoIWlzQWNjZWxlcmF0ZWRDb250ZXh0KCkgfHwgKCFj
dG0uYigpICYmICFjdG0uYygpKSk7CiAgICAgQ0dSZWN0IHJlY3RzWzJdID0geyBjYW5Vc2VDR1Jl
Y3RJbmZpbml0ZSA/IENHUmVjdEluZmluaXRlIDogQ0dDb250ZXh0R2V0Q2xpcEJvdW5kaW5nQm94
KHBsYXRmb3JtQ29udGV4dCgpKSwgcmVjdCB9OwogICAgIENHQ29udGV4dEJlZ2luUGF0aChwbGF0
Zm9ybUNvbnRleHQoKSk7CiAgICAgQ0dDb250ZXh0QWRkUmVjdHMocGxhdGZvcm1Db250ZXh0KCks
IHJlY3RzLCAyKTsKQEAgLTEwODUsNyArMTA4NSw3IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0Ojpz
dXBwb3J0c1RyYW5zcGFyZW5jeUxheWVycygpCiAKIHN0YXRpYyB2b2lkIGFwcGx5U2hhZG93T2Zm
c2V0V29ya2Fyb3VuZElmTmVlZGVkKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgQ0dG
bG9hdCYgeE9mZnNldCwgQ0dGbG9hdCYgeU9mZnNldCkKIHsKLSNpZiBQTEFURk9STShJT1MpCisj
aWYgUExBVEZPUk0oSU9TKSB8fCBQTEFURk9STShXSU4pCiAgICAgVU5VU0VEX1BBUkFNKGNvbnRl
eHQpOwogICAgIFVOVVNFRF9QQVJBTSh4T2Zmc2V0KTsKICAgICBVTlVTRURfUEFSQU0oeU9mZnNl
dCk7CkBAIC0xMDkzLDcgKzEwOTMsNyBAQCBzdGF0aWMgdm9pZCBhcHBseVNoYWRvd09mZnNldFdv
cmthcm91bmRJZk5lZWRlZChjb25zdCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsCiAgICAgaWYg
KGNvbnRleHQuaXNBY2NlbGVyYXRlZENvbnRleHQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
aWYgKHdrQ0dDb250ZXh0RHJhd3NXaXRoQ29ycmVjdFNoYWRvd09mZnNldHMoY29udGV4dC5wbGF0
Zm9ybUNvbnRleHQoKSkpCisgICAgaWYgKENHQ29udGV4dERyYXdzV2l0aENvcnJlY3RTaGFkb3dP
ZmZzZXRzKGNvbnRleHQucGxhdGZvcm1Db250ZXh0KCkpKQogICAgICAgICByZXR1cm47CiAKICAg
ICAvLyBXb3JrIGFyb3VuZCA8cmRhcjovL3Byb2JsZW0vNTUzOTM4OD4gYnkgZW5zdXJpbmcgdGhh
dCB0aGUgb2Zmc2V0cyB3aWxsIGdldCB0cnVuY2F0ZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BhdHRlcm5DRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jZy9QYXR0ZXJuQ0cuY3BwCmluZGV4IDk4ZTY5ZGU4ZWQ4OWEyNGU4
ODZhMTQyYTA4Mzk1OWUyYzcyMTM1ZjAuLmQwZTIxYzg3M2FhMmRjMzBjNTNjYzhiYWI0ZjhiMDQx
NDM0MDAwOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L1BhdHRlcm5DRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
UGF0dGVybkNHLmNwcApAQCAtMzEsOCArMzEsOCBAQAogCiAjaW5jbHVkZSAiQWZmaW5lVHJhbnNm
b3JtLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCi0KICNpbmNsdWRlIDxDb3JlR3Jh
cGhpY3MvQ29yZUdyYXBoaWNzLmg+CisjaW5jbHVkZSA8cGFsL3NwaS9jZy9Db3JlR3JhcGhpY3NT
UEkuaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogCiAjaWYgUExBVEZPUk0oQ09DT0Ep
CkBAIC03NCw3ICs3NCw3IEBAIENHUGF0dGVyblJlZiBQYXR0ZXJuOjpjcmVhdGVQbGF0Zm9ybVBh
dHRlcm4oY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB1c2VyU3BhY2VUcmFuCiAgICAgLy8gSWYgd2Un
cmUgcmVwZWF0aW5nIGluIGJvdGggZGlyZWN0aW9ucywgd2UgY2FuIHVzZSBpbWFnZS1iYWNrZWQg
cGF0dGVybnMKICAgICAvLyBpbnN0ZWFkIG9mIGN1c3RvbSBwYXR0ZXJucywgYW5kIGF2b2lkIHRp
bGluZy1lZGdlIHBpeGVsIGNyYWNrcy4KICAgICBpZiAobV9yZXBlYXRYICYmIG1fcmVwZWF0WSkK
LSAgICAgICAgcmV0dXJuIHdrQ0dQYXR0ZXJuQ3JlYXRlV2l0aEltYWdlQW5kVHJhbnNmb3JtKHRp
bGVJbWFnZSgpLm5hdGl2ZUltYWdlKCkuZ2V0KCksIHBhdHRlcm5UcmFuc2Zvcm0sIHdrUGF0dGVy
blRpbGluZ0NvbnN0YW50U3BhY2luZyk7CisgICAgICAgIHJldHVybiBDR1BhdHRlcm5DcmVhdGVX
aXRoSW1hZ2UyKHRpbGVJbWFnZSgpLm5hdGl2ZUltYWdlKCkuZ2V0KCksIHBhdHRlcm5UcmFuc2Zv
cm0sIGtDR1BhdHRlcm5UaWxpbmdDb25zdGFudFNwYWNpbmcpOwogCiAgICAgLy8gSWYgRkxUX01B
WCBzaG91bGQgYWxzbyBiZSB1c2VkIGZvciB4U3RlcCBvciB5U3RlcCwgbm90aGluZyBpcyByZW5k
ZXJlZC4gVXNpbmcgZnJhY3Rpb25zIG9mIEZMVF9NQVggYWxzbwogICAgIC8vIHJlc3VsdCBpbiBu
b3RoaW5nIGJlaW5nIHJlbmRlcmVkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0Q29jb2EubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRDb2NvYS5tbQppbmRleCA2
N2Y0ZGViMTcyYjZjMGZlMjNjMWIxZDFmYjA5ZWFiOGFkYWUxMzFiLi42NTEyMGZlZmM5NmVkOGVi
YWJiZmM1NmMwNTFhYTg5OWI0OGJiZjNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRDb2NvYS5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRDb2NvYS5tbQpA
QCAtMjksMTAgKzI5LDEzIEBACiAjaW1wb3J0ICJHcmFwaGljc0NvbnRleHRDRy5oIgogI2ltcG9y
dCAiR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlQ0cuaCIKICNpbXBvcnQgIkludFJlY3Qu
aCIKKyNpbXBvcnQgPHBhbC9zcGkvY2cvQ29yZUdyYXBoaWNzU1BJLmg+CisjaW1wb3J0IDxwYWwv
c3BpL21hYy9OU0dyYXBoaWNzU1BJLmg+CisjaW1wb3J0IDx3dGYvU3RkTGliRXh0cmFzLmg+CisK
ICNpZiBVU0UoQVBQS0lUKQogI2ltcG9ydCA8QXBwS2l0L0FwcEtpdC5oPgogI2VuZGlmCi0jaW1w
b3J0IDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKICNpZiBQTEFURk9STShJT1MpCiAjaW1wb3J0ICJD
b2xvci5oIgpAQCAtNDMsNyArNDYsNiBAQAogI2lmICFQTEFURk9STShJT1MpCiAjaW1wb3J0ICJM
b2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHQuaCIKICNlbmRpZgotI2ltcG9ydCAiV2ViQ29yZVN5
c3RlbUludGVyZmFjZS5oIgogCiBAY2xhc3MgTlNDb2xvcjsKIApAQCAtNTcsMTEgKzU5LDQ4IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIC8vIGV4Y2VwdGlvbnMgZm9yIHRob3NlLgogCiAjaWYgIVBM
QVRGT1JNKElPUykKK0NHQ29sb3JSZWYgR3JhcGhpY3NDb250ZXh0Ojpmb2N1c1JpbmdDb2xvcigp
Cit7CisgICAgc3RhdGljIENHQ29sb3JSZWYgY29sb3I7CisgICAgaWYgKCFjb2xvcikgeworICAg
ICAgICBDR0Zsb2F0IGNvbG9yQ29tcG9uZW50c1tdID0geyAwLjUsIDAuNzUsIDEuMCwgMS4wIH07
CisgICAgICAgIGF1dG8gY29sb3JTcGFjZSA9IGFkb3B0Q0YoQ0dDb2xvclNwYWNlQ3JlYXRlV2l0
aE5hbWUoa0NHQ29sb3JTcGFjZVNSR0IpKTsKKyAgICAgICAgY29sb3IgPSBDR0NvbG9yQ3JlYXRl
KGNvbG9yU3BhY2UuZ2V0KCksIGNvbG9yQ29tcG9uZW50cyk7CisgICAgfQorCisgICAgcmV0dXJu
IGNvbG9yOworfQorCitzdGF0aWMgYm9vbCBkcmF3Rm9jdXNSaW5nQXRUaW1lKENHQ29udGV4dFJl
ZiBjb250ZXh0LCBOU1RpbWVJbnRlcnZhbCB0aW1lT2Zmc2V0KQoreworICAgIENHRm9jdXNSaW5n
U3R5bGUgZm9jdXNSaW5nU3R5bGU7CisgICAgQk9PTCBuZWVkc1JlcGFpbnQgPSBOU0luaXRpYWxp
emVDR0ZvY3VzUmluZ1N0eWxlRm9yVGltZShOU0ZvY3VzUmluZ09ubHksICZmb2N1c1JpbmdTdHls
ZSwgdGltZU9mZnNldCk7CisKKyAgICAvLyBXZSB3YW50IHRvIHJlc3BlY3QgdGhlIENHQ29udGV4
dCBjbGlwcGluZyBhbmQgYWxzbyBub3Qgb3ZlcnBhaW50IGFueQorICAgIC8vIGV4aXN0aW5nIGZv
Y3VzIHJpbmcuIFRoZSB3YXkgdG8gZG8gdGhpcyBpcyBzZXQgYWNjdW11bGF0ZSB0bworICAgIC8v
IC0xLiBBY2NvcmRpbmcgdG8gQ29yZUdyYXBoaWNzLCB0aGUgcmVhc29uaW5nIGZvciB0aGlzIGJl
aGF2aW9yIGhhcyBiZWVuCisgICAgLy8gbG9zdCBpbiB0aW1lLgorICAgIGZvY3VzUmluZ1N0eWxl
LmFjY3VtdWxhdGUgPSAtMTsKKyAgICBhdXRvIHN0eWxlID0gYWRvcHRDRihDR1N0eWxlQ3JlYXRl
Rm9jdXNSaW5nV2l0aENvbG9yKCZmb2N1c1JpbmdTdHlsZSwgR3JhcGhpY3NDb250ZXh0Ojpmb2N1
c1JpbmdDb2xvcigpKSk7CisKKyAgICBDR0NvbnRleHRTYXZlR1N0YXRlKGNvbnRleHQpOworICAg
IENHQ29udGV4dFNldFN0eWxlKGNvbnRleHQsIHN0eWxlLmdldCgpKTsKKyAgICBDR0NvbnRleHRG
aWxsUGF0aChjb250ZXh0KTsKKyAgICBDR0NvbnRleHRSZXN0b3JlR1N0YXRlKGNvbnRleHQpOwor
CisgICAgcmV0dXJuIG5lZWRzUmVwYWludDsKK30KKworc3RhdGljIHZvaWQgZHJhd0ZvY3VzUmlu
ZyhDR0NvbnRleHRSZWYgY29udGV4dCkKK3sKKyAgICBkcmF3Rm9jdXNSaW5nQXRUaW1lKGNvbnRl
eHQsIHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6bWF4KCkpOworfQorCiBzdGF0aWMgdm9p
ZCBkcmF3Rm9jdXNSaW5nVG9Db250ZXh0KENHQ29udGV4dFJlZiBjb250ZXh0LCBDR1BhdGhSZWYg
Zm9jdXNSaW5nUGF0aCkKIHsKICAgICBDR0NvbnRleHRCZWdpblBhdGgoY29udGV4dCk7CiAgICAg
Q0dDb250ZXh0QWRkUGF0aChjb250ZXh0LCBmb2N1c1JpbmdQYXRoKTsKLSAgICB3a0RyYXdGb2N1
c1JpbmcoY29udGV4dCwgbnVsbHB0ciwgMCk7CisgICAgZHJhd0ZvY3VzUmluZyhjb250ZXh0KTsK
IH0KIAogc3RhdGljIGJvb2wgZHJhd0ZvY3VzUmluZ1RvQ29udGV4dEF0VGltZShDR0NvbnRleHRS
ZWYgY29udGV4dCwgQ0dQYXRoUmVmIGZvY3VzUmluZ1BhdGgsIGRvdWJsZSB0aW1lT2Zmc2V0KQpA
QCAtNjksNyArMTA4LDcgQEAgc3RhdGljIGJvb2wgZHJhd0ZvY3VzUmluZ1RvQ29udGV4dEF0VGlt
ZShDR0NvbnRleHRSZWYgY29udGV4dCwgQ0dQYXRoUmVmIGZvY3VzUmkKICAgICBVTlVTRURfUEFS
QU0odGltZU9mZnNldCk7CiAgICAgQ0dDb250ZXh0QmVnaW5QYXRoKGNvbnRleHQpOwogICAgIENH
Q29udGV4dEFkZFBhdGgoY29udGV4dCwgZm9jdXNSaW5nUGF0aCk7Ci0gICAgcmV0dXJuIHdrRHJh
d0ZvY3VzUmluZ0F0VGltZShjb250ZXh0LCBzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46Om1h
eCgpKTsKKyAgICByZXR1cm4gZHJhd0ZvY3VzUmluZ0F0VGltZShjb250ZXh0LCBzdGQ6Om51bWVy
aWNfbGltaXRzPGRvdWJsZT46Om1heCgpKTsKIH0KICNlbmRpZiAvLyAhUExBVEZPUk0oSU9TKQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViQ29yZVN5c3RlbUlu
dGVyZmFjZUlPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJDb3JlU3lzdGVt
SW50ZXJmYWNlSU9TLm1tCmluZGV4IDA5YTE4MjgxNGQxNDAxM2I3Yzg4ZThlZWJmMDNkOWFlMGNm
YTI4NjkuLjc1N2QwNDVmNWM1ODU0NDQ5NmYyZGQ2OTA1MGJkMWFmODY4YzJlZGUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlSU9T
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJDb3JlU3lzdGVtSW50ZXJm
YWNlSU9TLm1tCkBAIC0yNywxMCArMjcsOCBAQAogI2ltcG9ydCAiV2ViQ29yZVN5c3RlbUludGVy
ZmFjZS5oIgogCiBXRUJDT1JFX0VYUE9SVCB2b2lkICgqd2tDQUxheWVyRW51bWVyYXRlUmVjdHNC
ZWluZ0RyYXduV2l0aEJsb2NrKShDQUxheWVyICosIENHQ29udGV4dFJlZiBjb250ZXh0LCB2b2lk
ICheYmxvY2spKENHUmVjdCByZWN0KSk7Ci1XRUJDT1JFX0VYUE9SVCBDR1BhdHRlcm5SZWYgKCp3
a0NHUGF0dGVybkNyZWF0ZVdpdGhJbWFnZUFuZFRyYW5zZm9ybSkoQ0dJbWFnZVJlZiwgQ0dBZmZp
bmVUcmFuc2Zvcm0sIGludCk7CiBXRUJDT1JFX0VYUE9SVCB2b2lkICgqd2tDbGVhckdseXBoVmVj
dG9yKSh2b2lkKiBnbHlwaHMpOwogV0VCQ09SRV9FWFBPUlQgT1NTdGF0dXMgKCp3a0NvbnZlcnRD
aGFyVG9HbHlwaHMpKHZvaWQqIHN0eWxlR3JvdXAsIGNvbnN0IFVuaUNoYXIqLCB1bnNpZ25lZCBu
dW1DaGFyYWN0ZXJzLCB2b2lkKiBnbHlwaHMpOwotV0VCQ09SRV9FWFBPUlQgYm9vbCAoKndrQ0dD
b250ZXh0SXNQREZDb250ZXh0KShDR0NvbnRleHRSZWYpOwogV0VCQ09SRV9FWFBPUlQgaWQgKCp3
a0NyZWF0ZU5TVVJMQ29ubmVjdGlvbkRlbGVnYXRlUHJveHkpKHZvaWQpOwogV0VCQ09SRV9FWFBP
UlQgdm9pZCAoKndrU2V0Q09OTkVDVFByb3h5Rm9yU3RyZWFtKShDRlJlYWRTdHJlYW1SZWYsIENG
U3RyaW5nUmVmIHByb3h5SG9zdCwgQ0ZOdW1iZXJSZWYgcHJveHlQb3J0KTsKIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgKCp3a1NldENPTk5FQ1RQcm94eUF1dGhvcml6YXRpb25Gb3JTdHJlYW0pKENGUmVh
ZFN0cmVhbVJlZiwgQ0ZTdHJpbmdSZWYgcHJveHlBdXRob3JpemF0aW9uU3RyaW5nKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0KaW5kZXggMjBlNjM1YzA5
MDVhZTg5NmM3YmI1NDIxYzg1NmIyMWIyYTQ0NmI0OS4uYTM4NzBjZTRkZTk4MDFjZTg2NGM0YTQ0
MWJhMDYwZmEwMDgyNmI1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFj
L1Bhc3RlYm9hcmRNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3Rl
Ym9hcmRNYWMubW0KQEAgLTUyLDYgKzUyLDggQEAKICNpbXBvcnQgIldlYkNvcmVTeXN0ZW1JbnRl
cmZhY2UuaCIKICNpbXBvcnQgIldlYk5TQXR0cmlidXRlZFN0cmluZ0V4dHJhcy5oIgogI2ltcG9y
dCAibWFya3VwLmgiCisjaW1wb3J0IDxwYWwvc3BpL2NnL0NvcmVHcmFwaGljc1NQSS5oPgorI2lt
cG9ydCA8cGFsL3NwaS9tYWMvSElTZXJ2aWNlc1NQSS5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0
ci5oPgogI2ltcG9ydCA8d3RmL1N0ZExpYkV4dHJhcy5oPgogI2ltcG9ydCA8d3RmL3RleHQvU3Ry
aW5nQnVpbGRlci5oPgpAQCAtNjY5LDYgKzY3MSw4MCBAQCBWZWN0b3I8U3RyaW5nPiBQYXN0ZWJv
YXJkOjpyZWFkRmlsZW5hbWVzKCkKIH0KIAogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCitzdGF0
aWMgdm9pZCBmbGlwSW1hZ2VTcGVjKENvcmVEcmFnSW1hZ2VTcGVjKiBpbWFnZVNwZWMpCit7Cisg
ICAgdW5zaWduZWQgY2hhciogdGVtcFJvdyA9ICh1bnNpZ25lZCBjaGFyKilmYXN0TWFsbG9jKGlt
YWdlU3BlYy0+Ynl0ZXNQZXJSb3cpOworICAgIGludCBwbGFuZXMgPSBpbWFnZVNwZWMtPmlzUGxh
bmFyID8gaW1hZ2VTcGVjLT5zYW1wbGVzUGVyUGl4ZWwgOiAxOworCisgICAgZm9yIChpbnQgcCA9
IDA7IHAgPCBwbGFuZXM7ICsrcCkgeworICAgICAgICB1bnNpZ25lZCBjaGFyKiB0b3BSb3cgPSAo
dW5zaWduZWQgY2hhciopaW1hZ2VTcGVjLT5kYXRhW3BdOworICAgICAgICB1bnNpZ25lZCBjaGFy
KiBib3RSb3cgPSB0b3BSb3cgKyAoaW1hZ2VTcGVjLT5waXhlbHNIaWdoIC0gMSkgKiBpbWFnZVNw
ZWMtPmJ5dGVzUGVyUm93OworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGltYWdlU3BlYy0+
cGl4ZWxzSGlnaCAvIDI7ICsraSwgdG9wUm93ICs9IGltYWdlU3BlYy0+Ynl0ZXNQZXJSb3csIGJv
dFJvdyAtPSBpbWFnZVNwZWMtPmJ5dGVzUGVyUm93KSB7CisgICAgICAgICAgICBiY29weSh0b3BS
b3csIHRlbXBSb3csIGltYWdlU3BlYy0+Ynl0ZXNQZXJSb3cpOworICAgICAgICAgICAgYmNvcHko
Ym90Um93LCB0b3BSb3csIGltYWdlU3BlYy0+Ynl0ZXNQZXJSb3cpOworICAgICAgICAgICAgYmNv
cHkodGVtcFJvdywgYm90Um93LCBpbWFnZVNwZWMtPmJ5dGVzUGVyUm93KTsKKyAgICAgICAgfQor
ICAgIH0KKworICAgIGZhc3RGcmVlKHRlbXBSb3cpOworfQorCitzdGF0aWMgdm9pZCBzZXREcmFn
SW1hZ2VJbXBsKE5TSW1hZ2UgKmltYWdlLCBOU1BvaW50IG9mZnNldCkKK3sKKyAgICBib29sIGZs
aXBJbWFnZTsKKyAgICBOU1NpemUgaW1hZ2VTaXplID0gaW1hZ2Uuc2l6ZTsKKyAgICBDR1JlY3Qg
aW1hZ2VSZWN0ID0gQ0dSZWN0TWFrZSgwLCAwLCBpbWFnZVNpemUud2lkdGgsIGltYWdlU2l6ZS5o
ZWlnaHQpOworICAgIE5TSW1hZ2VSZXAgKmltYWdlUmVwID0gW2ltYWdlIGJlc3RSZXByZXNlbnRh
dGlvbkZvclJlY3Q6TlNSZWN0RnJvbUNHUmVjdChpbWFnZVJlY3QpIGNvbnRleHQ6bmlsIGhpbnRz
Om5pbF07CisgICAgUmV0YWluUHRyPE5TQml0bWFwSW1hZ2VSZXA+IGJpdG1hcEltYWdlOworICAg
IGlmICghaW1hZ2VSZXAgfHwgIVtpbWFnZVJlcCBpc0tpbmRPZkNsYXNzOltOU0JpdG1hcEltYWdl
UmVwIGNsYXNzXV0gfHwgIU5TRXF1YWxTaXplcyhpbWFnZVJlcC5zaXplLCBpbWFnZVNpemUpKSB7
CisgICAgICAgIFtpbWFnZSBsb2NrRm9jdXNdOworICAgICAgICBiaXRtYXBJbWFnZSA9IGFkb3B0
TlMoW1tOU0JpdG1hcEltYWdlUmVwIGFsbG9jXSBpbml0V2l0aEZvY3VzZWRWaWV3UmVjdDoqKE5T
UmVjdCopJmltYWdlUmVjdF0pOworICAgICAgICBbaW1hZ2UgdW5sb2NrRm9jdXNdOworICAgICAg
ICAKKyAgICAgICAgLy8gd2UgbWF5IGhhdmUgdG8gZmxpcCB0aGUgYml0cyB3ZSBqdXN0IHJlYWQg
aWYgdGhlIGltYWdlIHdhcyBmbGlwcGVkIHNpbmNlIGl0IG1lYW5zIHRoZSBjYWNoZSB3YXMgYWxz
bworICAgICAgICAvLyBhbmQgQ29yZURyYWdTZXRJbWFnZSBjYW4ndCB0YWtlIGEgdHJhbnNmb3Jt
IGZvciByZW5kZXJpbmcuCisjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcHVzaAorI3ByYWdtYSBj
bGFuZyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XZGVwcmVjYXRlZC1kZWNsYXJhdGlvbnMiCisgICAg
ICAgIGZsaXBJbWFnZSA9IGltYWdlLmlzRmxpcHBlZDsKKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3Rp
YyBwb3AKKyAgICB9IGVsc2UgeworICAgICAgICBmbGlwSW1hZ2UgPSBmYWxzZTsKKyAgICAgICAg
Yml0bWFwSW1hZ2UgPSAoTlNCaXRtYXBJbWFnZVJlcCAqKWltYWdlUmVwOworICAgIH0KKyAgICBB
U1NFUlQoYml0bWFwSW1hZ2UpOworCisgICAgQ29yZURyYWdJbWFnZVNwZWMgaW1hZ2VTcGVjOwor
ICAgIGltYWdlU3BlYy52ZXJzaW9uID0ga0NvcmVEcmFnSW1hZ2VTcGVjVmVyc2lvbk9uZTsKKyAg
ICBpbWFnZVNwZWMucGl4ZWxzV2lkZSA9IFtiaXRtYXBJbWFnZSBwaXhlbHNXaWRlXTsKKyAgICBp
bWFnZVNwZWMucGl4ZWxzSGlnaCA9IFtiaXRtYXBJbWFnZSBwaXhlbHNIaWdoXTsKKyAgICBpbWFn
ZVNwZWMuYml0c1BlclNhbXBsZSA9IFtiaXRtYXBJbWFnZSBiaXRzUGVyU2FtcGxlXTsKKyAgICBp
bWFnZVNwZWMuc2FtcGxlc1BlclBpeGVsID0gW2JpdG1hcEltYWdlIHNhbXBsZXNQZXJQaXhlbF07
CisgICAgaW1hZ2VTcGVjLmJpdHNQZXJQaXhlbCA9IFtiaXRtYXBJbWFnZSBiaXRzUGVyUGl4ZWxd
OworICAgIGltYWdlU3BlYy5ieXRlc1BlclJvdyA9IFtiaXRtYXBJbWFnZSBieXRlc1BlclJvd107
CisgICAgaW1hZ2VTcGVjLmlzUGxhbmFyID0gW2JpdG1hcEltYWdlIGlzUGxhbmFyXTsKKyAgICBp
bWFnZVNwZWMuaGFzQWxwaGEgPSBbYml0bWFwSW1hZ2UgaGFzQWxwaGFdOworICAgIFtiaXRtYXBJ
bWFnZSBnZXRCaXRtYXBEYXRhUGxhbmVzOih1bnNpZ25lZCBjaGFyKiopaW1hZ2VTcGVjLmRhdGFd
OworCisgICAgLy8gaWYgaW1hZ2Ugd2FzIGZsaXBwZWQsIHdlIGhhdmUgYW4gdXBzaWRlIGRvd24g
Yml0bWFwIHNpbmNlIHRoZSBjYWNoZSBpcyByZW5kZXJlZCBmbGlwcGVkCisgICAgaWYgKGZsaXBJ
bWFnZSkKKyAgICAgICAgZmxpcEltYWdlU3BlYygmaW1hZ2VTcGVjKTsKKworICAgIENHU1JlZ2lv
bk9iaiBpbWFnZVNoYXBlOworICAgIE9TU3RhdHVzIGVycm9yID0gQ0dTTmV3UmVnaW9uV2l0aFJl
Y3QoJmltYWdlUmVjdCwgJmltYWdlU2hhcGUpOworICAgIEFTU0VSVChlcnJvciA9PSBrQ0dFcnJv
clN1Y2Nlc3MpOworICAgIGlmIChlcnJvciAhPSBrQ0dFcnJvclN1Y2Nlc3MpCisgICAgICAgIHJl
dHVybjsKKworICAgIC8vIG1ha2Ugc3VyZSBpbWFnZSBoYXMgaW50ZWdlciBvZmZzZXQKKyAgICBD
R1BvaW50IGltYWdlT2Zmc2V0ID0geyAtb2Zmc2V0LngsIC0oaW1hZ2VTaXplLmhlaWdodCAtIG9m
ZnNldC55KSB9OworICAgIGltYWdlT2Zmc2V0LnggPSBmbG9vcihpbWFnZU9mZnNldC54ICsgMC41
KTsKKyAgICBpbWFnZU9mZnNldC55ID0gZmxvb3IoaW1hZ2VPZmZzZXQueSArIDAuNSk7CisKKyAg
ICBlcnJvciA9IENvcmVEcmFnU2V0SW1hZ2UoQ29yZURyYWdHZXRDdXJyZW50RHJhZygpLCBpbWFn
ZU9mZnNldCwgJmltYWdlU3BlYywgaW1hZ2VTaGFwZSwgMS4wKTsKKyAgICBDR1NSZWxlYXNlUmVn
aW9uKGltYWdlU2hhcGUpOworICAgIEFTU0VSVChlcnJvciA9PSBrQ0dFcnJvclN1Y2Nlc3MpOwor
fQorCiB2b2lkIFBhc3RlYm9hcmQ6OnNldERyYWdJbWFnZShEcmFnSW1hZ2UgaW1hZ2UsIGNvbnN0
IEludFBvaW50JiBsb2NhdGlvbikKIHsKICAgICAvLyBEb24ndCBhbGxvdyBzZXR0aW5nIHRoZSBk
cmFnIGltYWdlIGlmIHNvbWVvbmUga2VwdCBhIHBhc3RlYm9hcmQgYW5kIGlzIHRyeWluZyB0byBz
ZXQgdGhlIGltYWdlIHRvbyBsYXRlLgpAQCAtNjc3LDcgKzc1Myw3IEBAIHZvaWQgUGFzdGVib2Fy
ZDo6c2V0RHJhZ0ltYWdlKERyYWdJbWFnZSBpbWFnZSwgY29uc3QgSW50UG9pbnQmIGxvY2F0aW9u
KQogCiAgICAgLy8gRGFzaGJvYXJkIHdhbnRzIHRvIGJlIGFibGUgdG8gc2V0IHRoZSBkcmFnIGlt
YWdlIGR1cmluZyBkcmFnZ2luZywgYnV0IENvY29hIGRvZXMgbm90IGFsbG93IHRoaXMuCiAgICAg
Ly8gSW5zdGVhZCB3ZSBtdXN0IGRyb3AgZG93biB0byB0aGUgQ29yZUdyYXBoaWNzIEFQSS4KLSAg
ICB3a1NldERyYWdJbWFnZShpbWFnZS5nZXQoKS5nZXQoKSwgbG9jYXRpb24pOworICAgIHNldERy
YWdJbWFnZUltcGwoaW1hZ2UuZ2V0KCkuZ2V0KCksIGxvY2F0aW9uKTsKIAogICAgIC8vIEhhY2s6
IFdlIG11c3QgcG9zdCBhbiBldmVudCB0byB3YWtlIHVwIHRoZSBOU0RyYWdNYW5hZ2VyLCB3aGlj
aCBpcyBzaXR0aW5nIGluIGEgbmV4dEV2ZW50IGNhbGwKICAgICAvLyB1cCB0aGUgc3RhY2sgZnJv
bSB1cyBiZWNhdXNlIHRoZSBDb3JlRm91bmRhdGlvbiBkcmFnIG1hbmFnZXIgZG9lcyBub3QgdXNl
IHRoZSBydW4gbG9vcCBieSBpdHNlbGYuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tYWMvUGxhdGZvcm1FdmVudEZhY3RvcnlNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tYWMvUGxhdGZvcm1FdmVudEZhY3RvcnlNYWMubW0KaW5kZXggNzdiOWNiOTYzNWJiZmIw
YmMyYzU0NTQwYmZmNjQwNTE3MWI3YzU1OS4uOTI5YWE1NzU4ZjNlMWRiY2NjNTkwMDE4OTI5N2Vi
MTVlNTcwMTE4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRm
b3JtRXZlbnRGYWN0b3J5TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9Q
bGF0Zm9ybUV2ZW50RmFjdG9yeU1hYy5tbQpAQCAtNjc2LDcgKzY3Niw3IEBAIHN0YXRpYyBpbnQg
dHlwZUZvckV2ZW50KE5TRXZlbnQgKmV2ZW50KQogewogICAgIHJldHVybiBzdGF0aWNfY2FzdDxp
bnQ+KFtOU01lbnUgbWVudVR5cGVGb3JFdmVudDpldmVudF0pOwogfQotICAgIAorCiB2b2lkIGdl
dFdoZWVsRXZlbnREZWx0YXMoTlNFdmVudCAqZXZlbnQsIGZsb2F0JiBkZWx0YVgsIGZsb2F0JiBk
ZWx0YVksIEJPT0wmIGNvbnRpbnVvdXMpCiB7CiAgICAgQVNTRVJUKGV2ZW50KTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxiYXJUaGVtZU1hYy5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxiYXJUaGVtZU1hYy5tbQppbmRleCBjNGMy
ODc3NjgzNTc0OTZhZWIyODhmYTQxZjBkZDk1ZDJkN2NjMjg4Li42ZDA1Yjg2YzYzZDA1ZjdiNmQx
NDczMTdlZmQyN2ZmMzQxNTgzMTkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tYWMvU2Nyb2xsYmFyVGhlbWVNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL1Njcm9sbGJhclRoZW1lTWFjLm1tCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAiU2Ny
b2xsVmlldy5oIgogI2luY2x1ZGUgIldlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaCIKICNpbmNsdWRl
IDxDYXJib24vQ2FyYm9uLmg+CisjaW5jbHVkZSA8cGFsL3NwaS9jZy9Db3JlR3JhcGhpY3NTUEku
aD4KICNpbmNsdWRlIDxwYWwvc3BpL21hYy9OU1Njcm9sbGVySW1wU1BJLmg+CiAjaW5jbHVkZSA8
d3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgpAQCAt
NTczLDcgKzU3NCw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8Q0dDb2xvclJlZj4gbGluZW5CYWNrZ3Jv
dW5kQ29sb3IoKQogICAgIGlmICghY2dJbWFnZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAK
LSAgICBSZXRhaW5QdHI8Q0dQYXR0ZXJuUmVmPiBwYXR0ZXJuID0gYWRvcHRDRih3a0NHUGF0dGVy
bkNyZWF0ZVdpdGhJbWFnZUFuZFRyYW5zZm9ybShjZ0ltYWdlLCBDR0FmZmluZVRyYW5zZm9ybUlk
ZW50aXR5LCB3a1BhdHRlcm5UaWxpbmdOb0Rpc3RvcnRpb24pKTsKKyAgICBSZXRhaW5QdHI8Q0dQ
YXR0ZXJuUmVmPiBwYXR0ZXJuID0gYWRvcHRDRihDR1BhdHRlcm5DcmVhdGVXaXRoSW1hZ2UyKGNn
SW1hZ2UsIENHQWZmaW5lVHJhbnNmb3JtSWRlbnRpdHksIGtDR1BhdHRlcm5UaWxpbmdOb0Rpc3Rv
cnRpb24pKTsKICAgICBSZXRhaW5QdHI8Q0dDb2xvclNwYWNlUmVmPiBjb2xvclNwYWNlID0gYWRv
cHRDRihDR0NvbG9yU3BhY2VDcmVhdGVQYXR0ZXJuKDApKTsKIAogICAgIGNvbnN0IENHRmxvYXQg
YWxwaGEgPSAxLjA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvVGhl
bWVNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvVGhlbWVNYWMubW0KaW5kZXgg
OTBmMTA0MWVmZjdmMGM2NDdkNmY4MzkxYzAyN2Y1M2QxYWI0NDcxNC4uNWNkZTU0ODhhOWYxMDA1
NmRmZDI0NTIwMWQyMjBkNjRiM2IzMTJhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWFjL1RoZW1lTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9U
aGVtZU1hYy5tbQpAQCAtMzYsNiArMzYsNyBAQAogI2ltcG9ydCAiV2ViQ29yZVN5c3RlbUludGVy
ZmFjZS5oIgogI2ltcG9ydCA8Q2FyYm9uL0NhcmJvbi5oPgogI2ltcG9ydCA8cGFsL3NwaS9jb2Nv
YS9OU0J1dHRvbkNlbGxTUEkuaD4KKyNpbXBvcnQgPHBhbC9zcGkvbWFjL05TR3JhcGhpY3NTUEku
aD4KICNpbXBvcnQgPHd0Zi9CbG9ja09iakNFeGNlcHRpb25zLmg+CiAjaW1wb3J0IDx3dGYvTmV2
ZXJEZXN0cm95ZWQuaD4KICNpbXBvcnQgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KQEAgLTM0OSw5ICsz
NTAsMzIgQEAgc3RhdGljIE5TQnV0dG9uQ2VsbCAqc2hhcmVkQ2hlY2tib3hDZWxsKGNvbnN0IENv
bnRyb2xTdGF0ZXMmIHN0YXRlcywgY29uc3QgSW50U2kKICAgICByZXR1cm4gY2hlY2tib3hDZWxs
OwogfQogCitzdGF0aWMgYm9vbCBkcmF3Q2VsbEZvY3VzUmluZ1dpdGhGcmFtZUF0VGltZShOU0Nl
bGwgKmNlbGwsIE5TUmVjdCBjZWxsRnJhbWUsIE5TVmlldyAqY29udHJvbFZpZXcsIE5TVGltZUlu
dGVydmFsIHRpbWVPZmZzZXQpCit7CisgICAgQ0dDb250ZXh0UmVmIGNnQ29udGV4dCA9IChDR0Nv
bnRleHRSZWYpW1tOU0dyYXBoaWNzQ29udGV4dCBjdXJyZW50Q29udGV4dF0gZ3JhcGhpY3NQb3J0
XTsKKyAgICBDR0NvbnRleHRTYXZlR1N0YXRlKGNnQ29udGV4dCk7CisKKyAgICBDR0ZvY3VzUmlu
Z1N0eWxlIGZvY3VzUmluZ1N0eWxlOworICAgIGJvb2wgbmVlZHNSZXBhaW50ID0gTlNJbml0aWFs
aXplQ0dGb2N1c1JpbmdTdHlsZUZvclRpbWUoTlNGb2N1c1JpbmdPbmx5LCAmZm9jdXNSaW5nU3R5
bGUsIHRpbWVPZmZzZXQpOworICAgIC8vIFdlIHdhbnQgdG8gcmVzcGVjdCB0aGUgQ0dDb250ZXh0
IGNsaXBwaW5nIGFuZCBhbHNvIG5vdCBvdmVycGFpbnQgYW55CisgICAgLy8gZXhpc3RpbmcgZm9j
dXMgcmluZy4gVGhlIHdheSB0byBkbyB0aGlzIGlzIHNldCBhY2N1bXVsYXRlIHRvCisgICAgLy8g
LTEuIEFjY29yZGluZyB0byBDb3JlR3JhcGhpY3MsIHRoZSByZWFzb25pbmcgZm9yIHRoaXMgYmVo
YXZpb3IgaGFzIGJlZW4KKyAgICAvLyBsb3N0IGluIHRpbWUuCisgICAgZm9jdXNSaW5nU3R5bGUu
YWNjdW11bGF0ZSA9IC0xOworICAgIGF1dG8gc3R5bGUgPSBhZG9wdENGKENHU3R5bGVDcmVhdGVG
b2N1c1JpbmdXaXRoQ29sb3IoJmZvY3VzUmluZ1N0eWxlLCBHcmFwaGljc0NvbnRleHQ6OmZvY3Vz
UmluZ0NvbG9yKCkpKTsKKyAgICBDR0NvbnRleHRTZXRTdHlsZShjZ0NvbnRleHQsIHN0eWxlLmdl
dCgpKTsKKworICAgIENHQ29udGV4dEJlZ2luVHJhbnNwYXJlbmN5TGF5ZXJXaXRoUmVjdChjZ0Nv
bnRleHQsIE5TUmVjdFRvQ0dSZWN0KGNlbGxGcmFtZSksIG51bGxwdHIpOworICAgIFtjZWxsIGRy
YXdGb2N1c1JpbmdNYXNrV2l0aEZyYW1lOmNlbGxGcmFtZSBpblZpZXc6Y29udHJvbFZpZXddOwor
ICAgIENHQ29udGV4dEVuZFRyYW5zcGFyZW5jeUxheWVyKGNnQ29udGV4dCk7CisgICAgQ0dDb250
ZXh0UmVzdG9yZUdTdGF0ZShjZ0NvbnRleHQpOworCisgICAgcmV0dXJuIG5lZWRzUmVwYWludDsK
K30KKwogc3RhdGljIGJvb2wgZHJhd0NlbGxGb2N1c1JpbmcoTlNDZWxsICpjZWxsLCBOU1JlY3Qg
Y2VsbEZyYW1lLCBOU1ZpZXcgKmNvbnRyb2xWaWV3KQogewotICAgIHdrRHJhd0NlbGxGb2N1c1Jp
bmdXaXRoRnJhbWVBdFRpbWUoY2VsbCwgY2VsbEZyYW1lLCBjb250cm9sVmlldywgc3RkOjpudW1l
cmljX2xpbWl0czxkb3VibGU+OjptYXgoKSk7CisgICAgZHJhd0NlbGxGb2N1c1JpbmdXaXRoRnJh
bWVBdFRpbWUoY2VsbCwgY2VsbEZyYW1lLCBjb250cm9sVmlldywgc3RkOjpudW1lcmljX2xpbWl0
czxkb3VibGU+OjptYXgoKSk7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaAppbmRleCA4
YTEyNDgyN2MwNDA5ZDY2M2Y3ODFkZjI3YjRlNDNiY2ZhZmJkMjI3Li42NmMwMGI0ODYzMjJmMWY4
NDJiNzdiM2VkNmJjNTkxOGM4ZjZmZDY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tYWMvV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21hYy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmgKQEAgLTEyNiwxNCArMTI2LDcgQEAg
dHlwZWRlZiBlbnVtIHsKICAgICB3a1BhdHRlcm5UaWxpbmdDb25zdGFudFNwYWNpbmcKIH0gd2tQ
YXR0ZXJuVGlsaW5nOwogI2lmICFQTEFURk9STShJT1MpCi1leHRlcm4gYm9vbCAoKndrQ0dDb250
ZXh0RHJhd3NXaXRoQ29ycmVjdFNoYWRvd09mZnNldHMpKENHQ29udGV4dFJlZik7Ci0jZW5kaWYK
LWV4dGVybiBDR1BhdHRlcm5SZWYgKCp3a0NHUGF0dGVybkNyZWF0ZVdpdGhJbWFnZUFuZFRyYW5z
Zm9ybSkoQ0dJbWFnZVJlZiwgQ0dBZmZpbmVUcmFuc2Zvcm0sIGludCk7Ci0jaWYgIVBMQVRGT1JN
KElPUykKIGV4dGVybiB2b2lkICgqd2tEcmF3QmV6ZWxlZFRleHRBcmVhKShOU1JlY3QsIEJPT0wg
ZW5hYmxlZCk7Ci1leHRlcm4gdm9pZCAoKndrRHJhd0ZvY3VzUmluZykoQ0dDb250ZXh0UmVmLCBD
R0NvbG9yUmVmLCBpbnQpOwotZXh0ZXJuIGJvb2wgKCp3a0RyYXdGb2N1c1JpbmdBdFRpbWUpKENH
Q29udGV4dFJlZiwgTlNUaW1lSW50ZXJ2YWwgdGltZSk7Ci1leHRlcm4gYm9vbCAoKndrRHJhd0Nl
bGxGb2N1c1JpbmdXaXRoRnJhbWVBdFRpbWUpKE5TQ2VsbCAqY2VsbCwgTlNSZWN0IGNlbGxGcmFt
ZSwgTlNWaWV3ICpjb250cm9sVmlldywgTlNUaW1lSW50ZXJ2YWwgdGltZSk7CiBleHRlcm4gdm9p
ZCAoKndrRHJhd01lZGlhU2xpZGVyVHJhY2spKENHQ29udGV4dFJlZiBjb250ZXh0LCBDR1JlY3Qg
cmVjdCwgZmxvYXQgdGltZUxvYWRlZCwgZmxvYXQgY3VycmVudFRpbWUsCiAgICAgZmxvYXQgZHVy
YXRpb24sIHVuc2lnbmVkIHN0YXRlKTsKIGV4dGVybiB2b2lkICgqd2tEcmF3TWVkaWFVSVBhcnQp
KGludCBwYXJ0LCBDR0NvbnRleHRSZWYgY29udGV4dCwgQ0dSZWN0IHJlY3QsIHVuc2lnbmVkIHN0
YXRlKTsKQEAgLTE1Niw5ICsxNDksNiBAQCB0eXBlZGVmIGVudW0gewogfSB3a01lZGlhVUlDb250
cm9sVHlwZTsKIGV4dGVybiBOU0NvbnRyb2wgKigqd2tDcmVhdGVNZWRpYVVJQ29udHJvbCkoaW50
KTsKIAotZXh0ZXJuIHZvaWQgKCp3a1dpbmRvd1NldEFscGhhKShOU1dpbmRvdyAqLCBmbG9hdCk7
Ci1leHRlcm4gdm9pZCAoKndrV2luZG93U2V0U2NhbGVkRnJhbWUpKE5TV2luZG93ICosIE5TUmVj
dCwgTlNSZWN0KTsKLQogZXh0ZXJuIHVuc2lnbmVkICgqd2tRVEluY2x1ZGVPbmx5TW9kZXJuTWVk
aWFGaWxlVHlwZXMpKHZvaWQpOwogZXh0ZXJuIHZvaWQgKCp3a1FUTW92aWVEaXNhYmxlQ29tcG9u
ZW50KSh1aW50MzJfdFs1XSk7CiBleHRlcm4gZmxvYXQgKCp3a1FUTW92aWVNYXhUaW1lTG9hZGVk
KShRVE1vdmllKik7CkBAIC0xNzIsOSArMTYyLDcgQEAgZXh0ZXJuIE5TQXJyYXkgKigqd2tRVEdl
dFNpdGVzSW5NZWRpYURvd25sb2FkQ2FjaGUpKCk7CiBleHRlcm4gdm9pZCAoKndrUVRDbGVhck1l
ZGlhRG93bmxvYWRDYWNoZUZvclNpdGUpKE5TU3RyaW5nICpzaXRlKTsKIGV4dGVybiB2b2lkICgq
d2tRVENsZWFyTWVkaWFEb3dubG9hZENhY2hlKSgpOwogZXh0ZXJuIHZvaWQgKCp3a1NldENvb2tp
ZVN0b3JhZ2VQcml2YXRlQnJvd3NpbmdFbmFibGVkKShCT09MKTsKLWV4dGVybiB2b2lkICgqd2tT
ZXREcmFnSW1hZ2UpKE5TSW1hZ2UqLCBOU1BvaW50IG9mZnNldCk7CiAjZW5kaWYKLWV4dGVybiBi
b29sICgqd2tDR0NvbnRleHRJc1BERkNvbnRleHQpKENHQ29udGV4dFJlZik7CiBleHRlcm4gdm9p
ZCAoKndrU2V0Q09OTkVDVFByb3h5Rm9yU3RyZWFtKShDRlJlYWRTdHJlYW1SZWYsIENGU3RyaW5n
UmVmIHByb3h5SG9zdCwgQ0ZOdW1iZXJSZWYgcHJveHlQb3J0KTsKIGV4dGVybiB2b2lkICgqd2tT
ZXRDT05ORUNUUHJveHlBdXRob3JpemF0aW9uRm9yU3RyZWFtKShDRlJlYWRTdHJlYW1SZWYsIENG
U3RyaW5nUmVmIHByb3h5QXV0aG9yaXphdGlvblN0cmluZyk7CiBleHRlcm4gQ0ZIVFRQTWVzc2Fn
ZVJlZiAoKndrQ29weUNPTk5FQ1RQcm94eVJlc3BvbnNlKShDRlJlYWRTdHJlYW1SZWYsIENGVVJM
UmVmIHJlc3BvbnNlVVJMLCBDRlN0cmluZ1JlZiBwcm94eUhvc3QsIENGTnVtYmVyUmVmIHByb3h5
UG9ydCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZVN5
c3RlbUludGVyZmFjZS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlU3lz
dGVtSW50ZXJmYWNlLm1tCmluZGV4IDI3MmI1NTU3ZTIzOWYzYzFlMWQ0NWE5NGZiN2IxZTQ1MzQ2
MTdkZjIuLjEzYjg0OTVhOTBmZWQzYjIwMjNkNTIzZjBjNTRiMTdmZTIwY2UxYjcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNl
Lm1tCkBAIC0zMSwxMiArMzEsNyBAQAogI2ltcG9ydCA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmg+
CiAKIHZvaWQgKCp3a0NBTGF5ZXJFbnVtZXJhdGVSZWN0c0JlaW5nRHJhd25XaXRoQmxvY2spKENB
TGF5ZXIgKiwgQ0dDb250ZXh0UmVmIGNvbnRleHQsIHZvaWQgKF5ibG9jaykoQ0dSZWN0IHJlY3Qp
KTsKLWJvb2wgKCp3a0NHQ29udGV4dERyYXdzV2l0aENvcnJlY3RTaGFkb3dPZmZzZXRzKShDR0Nv
bnRleHRSZWYpOwotQ0dQYXR0ZXJuUmVmICgqd2tDR1BhdHRlcm5DcmVhdGVXaXRoSW1hZ2VBbmRU
cmFuc2Zvcm0pKENHSW1hZ2VSZWYsIENHQWZmaW5lVHJhbnNmb3JtLCBpbnQpOwogdm9pZCAoKndr
RHJhd0JlemVsZWRUZXh0QXJlYSkoTlNSZWN0LCBCT09MIGVuYWJsZWQpOwotdm9pZCAoKndrRHJh
d0ZvY3VzUmluZykoQ0dDb250ZXh0UmVmLCBDR0NvbG9yUmVmLCBpbnQpOwotYm9vbCAoKndrRHJh
d0ZvY3VzUmluZ0F0VGltZSkoQ0dDb250ZXh0UmVmLCBOU1RpbWVJbnRlcnZhbCk7Ci1ib29sICgq
d2tEcmF3Q2VsbEZvY3VzUmluZ1dpdGhGcmFtZUF0VGltZSkoTlNDZWxsKiwgTlNSZWN0LCBOU1Zp
ZXcqLCBOU1RpbWVJbnRlcnZhbCk7CiB2b2lkICgqd2tEcmF3TWVkaWFTbGlkZXJUcmFjaykoQ0dD
b250ZXh0UmVmIGNvbnRleHQsIENHUmVjdCByZWN0LCBmbG9hdCB0aW1lTG9hZGVkLCBmbG9hdCBj
dXJyZW50VGltZSwKICAgICBmbG9hdCBkdXJhdGlvbiwgdW5zaWduZWQgc3RhdGUpOwogQk9PTCAo
KndrSGl0VGVzdE1lZGlhVUlQYXJ0KShpbnQgcGFydCwgQ0dSZWN0IGJvdW5kcywgQ0dQb2ludCBw
b2ludCk7CkBAIC00NCw4ICszOSw2IEBAIHZvaWQgKCp3a0RyYXdNZWRpYVVJUGFydCkoaW50IHBh
cnQsIENHQ29udGV4dFJlZiBjb250ZXh0LCBDR1JlY3QgcmVjdCwgdW5zaWduZWQKIHZvaWQgKCp3
a01lYXN1cmVNZWRpYVVJUGFydCkoaW50IHBhcnQsIENHUmVjdCAqYm91bmRzLCBDR1NpemUgKm5h
dHVyYWxTaXplKTsKIE5TVmlldyAqKCp3a0NyZWF0ZU1lZGlhVUlCYWNrZ3JvdW5kVmlldykodm9p
ZCk7CiBOU0NvbnRyb2wgKigqd2tDcmVhdGVNZWRpYVVJQ29udHJvbCkoaW50KTsKLXZvaWQgKCp3
a1dpbmRvd1NldEFscGhhKShOU1dpbmRvdyAqLCBmbG9hdCk7Ci12b2lkICgqd2tXaW5kb3dTZXRT
Y2FsZWRGcmFtZSkoTlNXaW5kb3cgKiwgTlNSZWN0LCBOU1JlY3QpOwogTlNUaW1lSW50ZXJ2YWwg
KCp3a0dldE5TVVJMUmVzcG9uc2VDYWxjdWxhdGVkRXhwaXJhdGlvbikoTlNVUkxSZXNwb25zZSAq
cmVzcG9uc2UpOwogQk9PTCAoKndrR2V0TlNVUkxSZXNwb25zZU11c3RSZXZhbGlkYXRlKShOU1VS
TFJlc3BvbnNlICpyZXNwb25zZSk7CiBVSW50OCAoKndrR2V0TlNFdmVudEtleUNoYXIpKE5TRXZl
bnQgKik7CkBAIC02Myw4ICs1Niw2IEBAIE5TQXJyYXkgKigqd2tRVEdldFNpdGVzSW5NZWRpYURv
d25sb2FkQ2FjaGUpKCk7CiB2b2lkICgqd2tRVENsZWFyTWVkaWFEb3dubG9hZENhY2hlRm9yU2l0
ZSkoTlNTdHJpbmcgKnNpdGUpOwogdm9pZCAoKndrUVRDbGVhck1lZGlhRG93bmxvYWRDYWNoZSko
KTsKIAotdm9pZCAoKndrU2V0RHJhZ0ltYWdlKShOU0ltYWdlKiwgTlNQb2ludCBvZmZzZXQpOwot
Ym9vbCAoKndrQ0dDb250ZXh0SXNQREZDb250ZXh0KShDR0NvbnRleHRSZWYpOwogdm9pZCAoKndr
U2V0Q09OTkVDVFByb3h5Rm9yU3RyZWFtKShDRlJlYWRTdHJlYW1SZWYsIENGU3RyaW5nUmVmIHBy
b3h5SG9zdCwgQ0ZOdW1iZXJSZWYgcHJveHlQb3J0KTsKIHZvaWQgKCp3a1NldENPTk5FQ1RQcm94
eUF1dGhvcml6YXRpb25Gb3JTdHJlYW0pKENGUmVhZFN0cmVhbVJlZiwgQ0ZTdHJpbmdSZWYgcHJv
eHlBdXRob3JpemF0aW9uU3RyaW5nKTsKIENGSFRUUE1lc3NhZ2VSZWYgKCp3a0NvcHlDT05ORUNU
UHJveHlSZXNwb25zZSkoQ0ZSZWFkU3RyZWFtUmVmLCBDRlVSTFJlZiByZXNwb25zZVVSTCwgQ0ZT
dHJpbmdSZWYgcHJveHlIb3N0LCBDRk51bWJlclJlZiBwcm94eVBvcnQpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYldpbmRvd0FuaW1hdGlvbi5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJXaW5kb3dBbmltYXRpb24ubW0KaW5kZXggOGFiYzg0
MGI3M2NjNjQ1YzhhYzQwNmRlYWZhZTk0MjJjZGMzNTNlMi4uNTcyZTE5NmM3ODg2ZGZhZDRjYzc0
YTE2MTUzODhlOTNkMjE0ZGFhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL1dlYldpbmRvd0FuaW1hdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
YWMvV2ViV2luZG93QW5pbWF0aW9uLm1tCkBAIC0yOSw2ICsyOSw3IEBACiAKICNpbXBvcnQgIkZs
b2F0Q29udmVyc2lvbi5oIgogI2ltcG9ydCAiV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oIgorI2lt
cG9ydCA8cGFsL3NwaS9jZy9Db3JlR3JhcGhpY3NTUEkuaD4KICNpbXBvcnQgPHd0Zi9Bc3NlcnRp
b25zLmg+CiAjaW1wb3J0IDx3dGYvTWF0aEV4dHJhcy5oPgogCkBAIC0xMDksNiArMTEwLDU5IEBA
IC0gKE5TUmVjdCljdXJyZW50RnJhbWUKICAgICByZXR1cm4gc2NhbGVkUmVjdChfZmluYWxGcmFt
ZSwgX2luaXRpYWxGcmFtZSwgW3NlbGYgY3VycmVudFZhbHVlXSk7CiB9CiAKK3N0YXRpYyB2b2lk
IGZsaXBSZWN0KE5TUmVjdCogcmVjdCkKK3sKKyAgICByZWN0LT5vcmlnaW4ueSA9IE5TTWF4WShb
KE5TU2NyZWVuICopW1tOU1NjcmVlbiBzY3JlZW5zXSBvYmplY3RBdEluZGV4OjBdIGZyYW1lXSkg
LSBOU01heFkoKnJlY3QpOworfQorCitzdGF0aWMgQ0dTQ29ubmVjdGlvbklEIG1haW5XaW5kb3dT
ZXJ2ZXJDb25uZWN0aW9uSUQoKQoreworICAgIHN0YXRpYyBDR1NDb25uZWN0aW9uSUQgY2dzSWQ7
CisgICAgaWYgKCFjZ3NJZCkKKyAgICAgICAgY2dzSWQgPSBDR1NNYWluQ29ubmVjdGlvbklEKCk7
CisgICAgcmV0dXJuIGNnc0lkOworfQorCitzdGF0aWMgdm9pZCBzZXRTY2FsZWRGcmFtZUZvcldp
bmRvdyhOU1dpbmRvdyAqd2luZG93LCBOU1JlY3Qgc2NhbGVGcmFtZSwgTlNSZWN0IG5vblNjYWxl
ZEZyYW1lKQoreworICAgIGlmIChOU0VxdWFsUmVjdHMoc2NhbGVGcmFtZSwgbm9uU2NhbGVkRnJh
bWUpKSB7CisgICAgICAgIENHU1NldFdpbmRvd1dhcnAobWFpbldpbmRvd1NlcnZlckNvbm5lY3Rp
b25JRCgpLCB3aW5kb3cud2luZG93TnVtYmVyLCAwLCAwLCBudWxscHRyKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKyAgICAKKyAgICBmbG9hdCBtZXNoWzE2XTsKKyAgICAKKyAgICBmbGlwUmVj
dCgmc2NhbGVGcmFtZSk7CisgICAgZmxpcFJlY3QoJm5vblNjYWxlZEZyYW1lKTsKKyAgICAKKyAg
ICAvLyB0b3AtbGVmdCBwb2ludCAodG8gYW5kIGZyb20pCisgICAgbWVzaFswXSA9IDA7CisgICAg
bWVzaFsxXSA9IDA7CisgICAgbWVzaFsyXSA9IE5TTWluWChzY2FsZUZyYW1lKTsKKyAgICBtZXNo
WzNdID0gTlNNaW5ZKHNjYWxlRnJhbWUpOworICAgIAorICAgIC8vIHRvcC1yaWdodCBwb2ludCAo
dG8gYW5kIGZyb20pCisgICAgbWVzaFs0XSA9IE5TV2lkdGgobm9uU2NhbGVkRnJhbWUpOworICAg
IG1lc2hbNV0gPSAwOworICAgIG1lc2hbNl0gPSBOU01heFgoc2NhbGVGcmFtZSk7CisgICAgbWVz
aFs3XSA9IE5TTWluWShzY2FsZUZyYW1lKTsKKyAgICAKKyAgICAvLyBib3R0b20tbGVmdCAodG8g
YW5kIGZyb20pCisgICAgbWVzaFs4XSA9IDA7CisgICAgbWVzaFs5XSA9IE5TSGVpZ2h0KG5vblNj
YWxlZEZyYW1lKTsKKyAgICBtZXNoWzEwXSA9IE5TTWluWChzY2FsZUZyYW1lKTsKKyAgICBtZXNo
WzExXSA9IE5TTWF4WShzY2FsZUZyYW1lKTsKKyAgICAKKyAgICAvLyBib3R0b20tcmlnaHQgKHRv
IGFuZCBmcm9tKQorICAgIG1lc2hbMTJdID0gTlNXaWR0aChub25TY2FsZWRGcmFtZSk7CisgICAg
bWVzaFsxM10gPSBOU0hlaWdodChub25TY2FsZWRGcmFtZSk7CisgICAgbWVzaFsxNF0gPSBOU01h
eFgoc2NhbGVGcmFtZSk7CisgICAgbWVzaFsxNV0gPSBOU01heFkoc2NhbGVGcmFtZSk7CisgICAg
CisgICAgLy8gQXBwbHkgdGhlIHdhcnAuCisgICAgQ0dTU2V0V2luZG93V2FycChtYWluV2luZG93
U2VydmVyQ29ubmVjdGlvbklEKCksIHdpbmRvdy53aW5kb3dOdW1iZXIsIDIsIDIsIG1lc2gpOwor
fQorCiAtICh2b2lkKXNldEN1cnJlbnRQcm9ncmVzczooTlNBbmltYXRpb25Qcm9ncmVzcylwcm9n
cmVzcwogewogICAgIGlmICghX3dpbmRvdykKQEAgLTExNyw3ICsxNzEsNyBAQCAtICh2b2lkKXNl
dEN1cnJlbnRQcm9ncmVzczooTlNBbmltYXRpb25Qcm9ncmVzcylwcm9ncmVzcwogICAgIFtzdXBl
ciBzZXRDdXJyZW50UHJvZ3Jlc3M6cHJvZ3Jlc3NdOwogCiAgICAgTlNSZWN0IGN1cnJlbnRSZWN0
ID0gW3NlbGYgY3VycmVudEZyYW1lXTsKLSAgICB3a1dpbmRvd1NldFNjYWxlZEZyYW1lKF93aW5k
b3csIGN1cnJlbnRSZWN0LCBfcmVhbEZyYW1lKTsKKyAgICBzZXRTY2FsZWRGcmFtZUZvcldpbmRv
dyhfd2luZG93LCBjdXJyZW50UmVjdCwgX3JlYWxGcmFtZSk7CiAgICAgW19zdWJBbmltYXRpb24g
c2V0Q3VycmVudFByb2dyZXNzOnByb2dyZXNzXTsKIH0KIApAQCAtMjExLDcgKzI2NSw3IEBAIC0g
KHZvaWQpc2V0Q3VycmVudFByb2dyZXNzOihOU0FuaW1hdGlvblByb2dyZXNzKXByb2dyZXNzCiAg
ICAgQVNTRVJUKF93aW5kb3cpOwogICAgIFtzdXBlciBzZXRDdXJyZW50UHJvZ3Jlc3M6cHJvZ3Jl
c3NdOwogCi0gICAgd2tXaW5kb3dTZXRBbHBoYShfd2luZG93LCBbc2VsZiBjdXJyZW50QWxwaGFd
KTsKKyAgICBDR1NTZXRXaW5kb3dBbHBoYShtYWluV2luZG93U2VydmVyQ29ubmVjdGlvbklEKCks
IF93aW5kb3cud2luZG93TnVtYmVyLCBzZWxmLmN1cnJlbnRBbHBoYSk7CiB9CiAKIC0gKHZvaWQp
c2V0V2luZG93OihOU1dpbmRvdyopd2luZG93CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1Bs
dWdpblByb2Nlc3MvbWFjL1BsdWdpblByb2Nlc3NNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1BsdWdp
blByb2Nlc3MvbWFjL1BsdWdpblByb2Nlc3NNYWMubW0KaW5kZXggZDg2MDM3ODY3YTJmMWFmYTI1
ZWM1MjYzMDZlMTRkOTY0Y2Q3N2U2ZC4uMjRkMjZlZDFlNjc0M2FlYzU1N2E4Zjc2NDg5YjY3Mzgw
NDE3ZmQwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL21hYy9QbHVn
aW5Qcm9jZXNzTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9tYWMvUGx1
Z2luUHJvY2Vzc01hYy5tbQpAQCAtNDYsNiArNDYsNyBAQAogI2ltcG9ydCA8bWFjaC9tYWNoX3Zt
Lmg+CiAjaW1wb3J0IDxtYWNoL3ZtX3N0YXRpc3RpY3MuaD4KICNpbXBvcnQgPG9iamMvcnVudGlt
ZS5oPgorI2ltcG9ydCA8cGFsL3NwaS9jZy9Db3JlR3JhcGhpY3NTUEkuaD4KICNpbXBvcnQgPHBh
bC9zcGkvbWFjL0hJVG9vbGJveFNQSS5oPgogI2ltcG9ydCA8cGFsL3NwaS9tYWMvTlNXaW5kb3dT
UEkuaD4KICNpbXBvcnQgPHN5c2V4aXRzLmg+CkBAIC01MzEsNyArNTMyLDEwIEBAIHZvaWQgUGx1
Z2luUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXplUHJvY2Vzcyhjb25zdCBDaGlsZFByb2Nlc3NJ
bml0aWFsaXphdGlvblBhCiAKICAgICAvLyBGSVhNRTogSXQgd291bGQgYmUgYmV0dGVyIHRvIHBy
b3h5IFNldEN1cnNvciBjYWxscyBvdmVyIHRvIHRoZSBVSSBwcm9jZXNzIGluc3RlYWQgb2YKICAg
ICAvLyBhbGxvd2luZyBwbHVnLWlucyB0byBjaGFuZ2UgdGhlIG1vdXNlIGN1cnNvciBhdCBhbnkg
dGltZS4KLSAgICBXS0VuYWJsZVNldHRpbmdDdXJzb3JXaGVuSW5CYWNrZ3JvdW5kKCk7CisgICAg
Ly8gRklYTUU6IFNldHNDdXJzb3JJbkJhY2tncm91bmQgY29ubmVjdGlvbiBwcm9wZXJ0eSBpcyBk
ZXByZWNhdGVkIGluIGZhdm9yIG9mIGtDR1NTZXRzQ3Vyc29ySW5CYWNrZ3JvdW5kVGFnQml0IHdp
bmRvdyB0YWcgYml0LgorICAgIC8vIDxyZGFyOi8vcHJvYmxlbS83NzUyNDIyPiBhc2tzIGZvciBh
biBBUEkgdG8gc2V0IGN1cnNvciBmcm9tIGJhY2tncm91bmQgcHJvY2Vzc2VzLgorICAgIENHU0Nv
bm5lY3Rpb25JRCBjaWQgPSBDR1NNYWluQ29ubmVjdGlvbklEKCk7CisgICAgQ0dTU2V0Q29ubmVj
dGlvblByb3BlcnR5KGNpZCwgY2lkLCBDRlNUUigiU2V0c0N1cnNvckluQmFja2dyb3VuZCIpLCAo
Q0ZUeXBlUmVmKWtDRkJvb2xlYW5UcnVlKTsKIAogICAgIFJldGFpblB0cjxDRlVSTFJlZj4gcGx1
Z2luVVJMID0gYWRvcHRDRihDRlVSTENyZWF0ZVdpdGhGaWxlU3lzdGVtUGF0aCgwLCBtX3BsdWdp
blBhdGguY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwga0NGVVJMUE9TSVhQYXRoU3R5bGUsIGZhbHNl
KSk7CiAgICAgaWYgKCFwbHVnaW5VUkwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9tYWMvV2luZG93U2VydmVyQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvbWFjL1dpbmRvd1NlcnZlckNvbm5lY3Rpb24uaAppbmRleCA4MzhhMzRmYjVjMmQ0NGVlZTU0
NjRlNTdlZGM3MGUxMGFkYmQzYjIwLi5lN2I1MThjNmM1ZWIwYjA2MmQ4OWE5MWNhNzA1NzdiYTg0
ZWIwNTExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2luZG93U2Vy
dmVyQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XaW5kb3dT
ZXJ2ZXJDb25uZWN0aW9uLmgKQEAgLTQxLDkgKzQxLDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIHdp
bmRvd1NlcnZlckNvbm5lY3Rpb25TdGF0ZUNoYW5nZWQoKTsKIAogICAgIHZvaWQgYXBwbGljYXRp
b25XaW5kb3dNb2RpZmljYXRpb25zU3RvcHBlZChib29sIHN0b3BwZWQpOwotCi0gICAgc3RhdGlj
IHZvaWQgYXBwbGljYXRpb25XaW5kb3dNb2RpZmljYXRpb25zU3RhcnRlZCh1aW50MzJfdCwgdm9p
ZCosIHVpbnQzMl90LCB2b2lkKiwgdWludDMyX3QpOwotICAgIHN0YXRpYyB2b2lkIGFwcGxpY2F0
aW9uV2luZG93TW9kaWZpY2F0aW9uc1N0b3BwZWQodWludDMyX3QsIHZvaWQqLCB1aW50MzJfdCwg
dm9pZCosIHVpbnQzMl90KTsKICNlbmRpZgogCiAgICAgYm9vbCBtX2FwcGxpY2F0aW9uV2luZG93
TW9kaWZpY2F0aW9uc0hhdmVTdG9wcGVkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvbWFjL1dpbmRvd1NlcnZlckNvbm5lY3Rpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9tYWMvV2luZG93U2VydmVyQ29ubmVjdGlvbi5tbQppbmRleCA4MTk1MzVjMmFjMTI5Yzhk
NTIxMjE4Yzk3NTVjODRiNjFkNDRmMjg1Li5hOWU1ZWQ1ZDYwMzZhNTY3NjA2MTUzYmU5NjBhMzRl
MWFiMzYwOTQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2luZG93
U2VydmVyQ29ubmVjdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2lu
ZG93U2VydmVyQ29ubmVjdGlvbi5tbQpAQCAtMjgsNiArMjgsNyBAQAogCiAjaW1wb3J0ICJXZWJL
aXRTeXN0ZW1JbnRlcmZhY2UuaCIKICNpbXBvcnQgIldlYlByb2Nlc3NQb29sLmgiCisjaW1wb3J0
IDxwYWwvc3BpL2NnL0NvcmVHcmFwaGljc1NQSS5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIApA
QCAtNDEsMTYgKzQyLDYgQEAgdm9pZCBXaW5kb3dTZXJ2ZXJDb25uZWN0aW9uOjphcHBsaWNhdGlv
bldpbmRvd01vZGlmaWNhdGlvbnNTdG9wcGVkKGJvb2wgc3RvcHBlZCkKICAgICB3aW5kb3dTZXJ2
ZXJDb25uZWN0aW9uU3RhdGVDaGFuZ2VkKCk7CiB9CiAKLXZvaWQgV2luZG93U2VydmVyQ29ubmVj
dGlvbjo6YXBwbGljYXRpb25XaW5kb3dNb2RpZmljYXRpb25zU3RhcnRlZCh1aW50MzJfdCwgdm9p
ZCosIHVpbnQzMl90LCB2b2lkKiwgdWludDMyX3QpCi17Ci0gICAgV2luZG93U2VydmVyQ29ubmVj
dGlvbjo6c2luZ2xldG9uKCkuYXBwbGljYXRpb25XaW5kb3dNb2RpZmljYXRpb25zU3RvcHBlZChm
YWxzZSk7Ci19Ci0KLXZvaWQgV2luZG93U2VydmVyQ29ubmVjdGlvbjo6YXBwbGljYXRpb25XaW5k
b3dNb2RpZmljYXRpb25zU3RvcHBlZCh1aW50MzJfdCwgdm9pZCosIHVpbnQzMl90LCB2b2lkKiwg
dWludDMyX3QpCi17Ci0gICAgV2luZG93U2VydmVyQ29ubmVjdGlvbjo6c2luZ2xldG9uKCkuYXBw
bGljYXRpb25XaW5kb3dNb2RpZmljYXRpb25zU3RvcHBlZCh0cnVlKTsKLX0KLQogdm9pZCBXaW5k
b3dTZXJ2ZXJDb25uZWN0aW9uOjp3aW5kb3dTZXJ2ZXJDb25uZWN0aW9uU3RhdGVDaGFuZ2VkKCkK
IHsKICAgICBmb3IgKGF1dG8qIHByb2Nlc3NQb29sIDogV2ViUHJvY2Vzc1Bvb2w6OmFsbFByb2Nl
c3NQb29scygpKQpAQCAtNjUsMjMgKzU2LDQ4IEBAIFdpbmRvd1NlcnZlckNvbm5lY3Rpb24mIFdp
bmRvd1NlcnZlckNvbm5lY3Rpb246OnNpbmdsZXRvbigpCiAgICAgcmV0dXJuIHdpbmRvd1NlcnZl
ckNvbm5lY3Rpb247CiB9CiAKKyNpZiBIQVZFKFdJTkRPV19TRVJWRVJfT0NDTFVTSU9OX05PVElG
SUNBVElPTlMpCitzdGF0aWMgYm9vbCByZWdpc3Rlck9jY2x1c2lvbk5vdGlmaWNhdGlvbkhhbmRs
ZXIoQ0dTTm90aWZpY2F0aW9uVHlwZSB0eXBlLCBDR1NOb3RpZnlDb25uZWN0aW9uUHJvY1B0ciBo
YW5kbGVyKQoreworICAgIENHU0Nvbm5lY3Rpb25JRCBtYWluQ29ubmVjdGlvbiA9IENHU01haW5D
b25uZWN0aW9uSUQoKTsKKyAgICBzdGF0aWMgYm9vbCBub3RpZmljYXRpb25zRW5hYmxlZDsKKyAg
ICBpZiAoIW5vdGlmaWNhdGlvbnNFbmFibGVkKSB7CisgICAgICAgIGlmIChDR1NQYWNrYWdlc0Vu
YWJsZUNvbm5lY3Rpb25PY2NsdXNpb25Ob3RpZmljYXRpb25zKG1haW5Db25uZWN0aW9uLCB0cnVl
LCBudWxscHRyKSAhPSBrQ0dFcnJvclN1Y2Nlc3MpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgICAgIGlmIChDR1NQYWNrYWdlc0VuYWJsZUNvbm5lY3Rpb25XaW5kb3dNb2RpZmljYXRp
b25Ob3RpZmljYXRpb25zKG1haW5Db25uZWN0aW9uLCB0cnVlLCBudWxscHRyKSAhPSBrQ0dFcnJv
clN1Y2Nlc3MpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIG5vdGlmaWNhdGlv
bnNFbmFibGVkID0gdHJ1ZTsKKyAgICB9CisKKyAgICByZXR1cm4gQ0dTUmVnaXN0ZXJDb25uZWN0
aW9uTm90aWZ5UHJvYyhtYWluQ29ubmVjdGlvbiwgaGFuZGxlciwgdHlwZSwgbnVsbHB0cikgPT0g
a0NHRXJyb3JTdWNjZXNzOworfQorI2VuZGlmCisKIFdpbmRvd1NlcnZlckNvbm5lY3Rpb246Oldp
bmRvd1NlcnZlckNvbm5lY3Rpb24oKQogICAgIDogbV9hcHBsaWNhdGlvbldpbmRvd01vZGlmaWNh
dGlvbnNIYXZlU3RvcHBlZChmYWxzZSkKIHsKICNpZiBIQVZFKFdJTkRPV19TRVJWRVJfT0NDTFVT
SU9OX05PVElGSUNBVElPTlMpCiAgICAgc3RydWN0IE9jY2x1c2lvbk5vdGlmaWNhdGlvbkhhbmRs
ZXIgewotICAgICAgICBXS09jY2x1c2lvbk5vdGlmaWNhdGlvblR5cGUgbm90aWZpY2F0aW9uVHlw
ZTsKLSAgICAgICAgV0tPY2NsdXNpb25Ob3RpZmljYXRpb25IYW5kbGVyIGhhbmRsZXI7CisgICAg
ICAgIENHU05vdGlmaWNhdGlvblR5cGUgbm90aWZpY2F0aW9uVHlwZTsKKyAgICAgICAgQ0dTTm90
aWZ5Q29ubmVjdGlvblByb2NQdHIgaGFuZGxlcjsKICAgICAgICAgY29uc3QgY2hhciogbmFtZTsK
ICAgICB9OwogCisgICAgc3RhdGljIGF1dG8gd2luZG93TW9kaWZpY2F0aW9uc1N0YXJ0ZWQgPSBb
XShDR1NOb3RpZmljYXRpb25UeXBlLCB2b2lkKiwgdWludDMyX3QsIHZvaWQqLCBDR1NDb25uZWN0
aW9uSUQpIHsKKyAgICAgICAgV2luZG93U2VydmVyQ29ubmVjdGlvbjo6c2luZ2xldG9uKCkuYXBw
bGljYXRpb25XaW5kb3dNb2RpZmljYXRpb25zU3RvcHBlZChmYWxzZSk7CisgICAgfTsKKworICAg
IHN0YXRpYyBhdXRvIHdpbmRvd01vZGlmaWNhdGlvbnNTdG9wcGVkID0gW10oQ0dTTm90aWZpY2F0
aW9uVHlwZSwgdm9pZCosIHVpbnQzMl90LCB2b2lkKiwgQ0dTQ29ubmVjdGlvbklEKSB7CisgICAg
ICAgIFdpbmRvd1NlcnZlckNvbm5lY3Rpb246OnNpbmdsZXRvbigpLmFwcGxpY2F0aW9uV2luZG93
TW9kaWZpY2F0aW9uc1N0b3BwZWQodHJ1ZSk7CisgICAgfTsKKwogICAgIHN0YXRpYyBjb25zdCBP
Y2NsdXNpb25Ob3RpZmljYXRpb25IYW5kbGVyIG9jY2x1c2lvbk5vdGlmaWNhdGlvbkhhbmRsZXJz
W10gPSB7Ci0gICAgICAgIHsgV0tPY2NsdXNpb25Ob3RpZmljYXRpb25UeXBlQXBwbGljYXRpb25X
aW5kb3dNb2RpZmljYXRpb25zU3RhcnRlZCwgYXBwbGljYXRpb25XaW5kb3dNb2RpZmljYXRpb25z
U3RhcnRlZCwgIkFwcGxpY2F0aW9uIFdpbmRvdyBNb2RpZmljYXRpb25zIFN0YXJ0ZWQiIH0sCi0g
ICAgICAgIHsgV0tPY2NsdXNpb25Ob3RpZmljYXRpb25UeXBlQXBwbGljYXRpb25XaW5kb3dNb2Rp
ZmljYXRpb25zU3RvcHBlZCwgYXBwbGljYXRpb25XaW5kb3dNb2RpZmljYXRpb25zU3RvcHBlZCwg
IkFwcGxpY2F0aW9uIFdpbmRvdyBNb2RpZmljYXRpb25zIFN0b3BwZWQiIH0sCisgICAgICAgIHsg
a0NHU0Nvbm5lY3Rpb25XaW5kb3dNb2RpZmljYXRpb25zU3RhcnRlZCwgd2luZG93TW9kaWZpY2F0
aW9uc1N0YXJ0ZWQsICJBcHBsaWNhdGlvbiBXaW5kb3cgTW9kaWZpY2F0aW9ucyBTdGFydGVkIiB9
LAorICAgICAgICB7IGtDR1NDb25uZWN0aW9uV2luZG93TW9kaWZpY2F0aW9uc1N0b3BwZWQsIHdp
bmRvd01vZGlmaWNhdGlvbnNTdG9wcGVkLCAiQXBwbGljYXRpb24gV2luZG93IE1vZGlmaWNhdGlv
bnMgU3RvcHBlZCIgfSwKICAgICB9OwogCiAgICAgZm9yIChjb25zdCBhdXRvJiBvY2NsdXNpb25O
b3RpZmljYXRpb25IYW5kbGVyIDogb2NjbHVzaW9uTm90aWZpY2F0aW9uSGFuZGxlcnMpIHsKLSAg
ICAgICAgYm9vbCByZXN1bHQgPSBXS1JlZ2lzdGVyT2NjbHVzaW9uTm90aWZpY2F0aW9uSGFuZGxl
cihvY2NsdXNpb25Ob3RpZmljYXRpb25IYW5kbGVyLm5vdGlmaWNhdGlvblR5cGUsIG9jY2x1c2lv
bk5vdGlmaWNhdGlvbkhhbmRsZXIuaGFuZGxlcik7CisgICAgICAgIGJvb2wgcmVzdWx0ID0gcmVn
aXN0ZXJPY2NsdXNpb25Ob3RpZmljYXRpb25IYW5kbGVyKG9jY2x1c2lvbk5vdGlmaWNhdGlvbkhh
bmRsZXIubm90aWZpY2F0aW9uVHlwZSwgb2NjbHVzaW9uTm90aWZpY2F0aW9uSGFuZGxlci5oYW5k
bGVyKTsKICAgICAgICAgVU5VU0VEX1BBUkFNKHJlc3VsdCk7CiAgICAgICAgIEFTU0VSVF9XSVRI
X01FU1NBR0UocmVzdWx0LCAiUmVnaXN0cmF0aW9uIG9mIFwiJXNcIiBub3RpZmljYXRpb24gaGFu
ZGxlciBmYWlsZWQuXG4iLCBvY2NsdXNpb25Ob3RpZmljYXRpb25IYW5kbGVyLm5hbWUpOwogICAg
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9t
YWMvV2ViU3lzdGVtSW50ZXJmYWNlLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L21hYy9XZWJTeXN0ZW1JbnRlcmZhY2UubW0KaW5kZXggZDE4YTQ0MGRkNzI1Mzlj
NmE1Njk0Yjc0NjdmOGE2OTE4ODUxZDk5ZS4uNWIwOTc5YzY4NWFkMDgwMDJmN2MyYTBmN2I1OGQx
N2ZiODZjYTdjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L21hYy9XZWJTeXN0ZW1JbnRlcmZhY2UubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJTeXN0ZW1JbnRlcmZhY2UubW0KQEAgLTM3LDIx
ICszNywxMSBAQCB2b2lkIEluaXRXZWJDb3JlU3lzdGVtSW50ZXJmYWNlKHZvaWQpCiAgICAgCiAg
ICAgZGlzcGF0Y2hfb25jZSgmaW5pdE9uY2UsIF57CiAgICAgICAgIElOSVQoQ0FMYXllckVudW1l
cmF0ZVJlY3RzQmVpbmdEcmF3bldpdGhCbG9jayk7Ci0gICAgICAgIElOSVQoQ0dQYXR0ZXJuQ3Jl
YXRlV2l0aEltYWdlQW5kVHJhbnNmb3JtKTsKLSNpZiAhUExBVEZPUk0oSU9TKQotICAgICAgICBJ
TklUKENHQ29udGV4dERyYXdzV2l0aENvcnJlY3RTaGFkb3dPZmZzZXRzKTsKLSNlbmRpZgogICAg
ICAgICBJTklUKENvcHlDT05ORUNUUHJveHlSZXNwb25zZSk7CiAjaWYgIVBMQVRGT1JNKElPUykK
ICAgICAgICAgSU5JVChEcmF3QmV6ZWxlZFRleHRBcmVhKTsKLSAgICAgICAgSU5JVChEcmF3Rm9j
dXNSaW5nKTsKLSAgICAgICAgSU5JVChEcmF3Rm9jdXNSaW5nQXRUaW1lKTsKLSAgICAgICAgSU5J
VChEcmF3Q2VsbEZvY3VzUmluZ1dpdGhGcmFtZUF0VGltZSk7CiAgICAgICAgIElOSVQoRHJhd01l
ZGlhU2xpZGVyVHJhY2spOwogICAgICAgICBJTklUKERyYXdNZWRpYVVJUGFydCk7Ci0jZW5kaWYK
LSAgICAgICAgSU5JVChDR0NvbnRleHRJc1BERkNvbnRleHQpOwotI2lmICFQTEFURk9STShJT1Mp
CiAgICAgICAgIElOSVQoR2V0TlNFdmVudEtleUNoYXIpOwogICAgICAgICBJTklUKEhpdFRlc3RN
ZWRpYVVJUGFydCk7CiAgICAgICAgIElOSVQoTWVhc3VyZU1lZGlhVUlQYXJ0KTsKQEAgLTcwLDE2
ICs2MCwxMSBAQCB2b2lkIEluaXRXZWJDb3JlU3lzdGVtSW50ZXJmYWNlKHZvaWQpCiAjZW5kaWYK
ICAgICAgICAgSU5JVChTZXRDT05ORUNUUHJveHlBdXRob3JpemF0aW9uRm9yU3RyZWFtKTsKICAg
ICAgICAgSU5JVChTZXRDT05ORUNUUHJveHlGb3JTdHJlYW0pOwotI2lmICFQTEFURk9STShJT1Mp
Ci0gICAgICAgIElOSVQoU2V0RHJhZ0ltYWdlKTsKLSNlbmRpZgogCiAjaWYgIVBMQVRGT1JNKElP
UykKICAgICAgICAgSU5JVChFeGVjdXRhYmxlV2FzTGlua2VkT25PckJlZm9yZVNub3dMZW9wYXJk
KTsKICAgICAgICAgSU5JVChDb3B5RGVmYXVsdFNlYXJjaFByb3ZpZGVyRGlzcGxheU5hbWUpOwog
ICAgICAgICBJTklUKEN1cnNvcik7Ci0gICAgICAgIElOSVQoV2luZG93U2V0U2NhbGVkRnJhbWUp
OwotICAgICAgICBJTklUKFdpbmRvd1NldEFscGhhKTsKICAgICAgICAgSU5JVChTcGVlY2hTeW50
aGVzaXNHZXRWb2ljZUlkZW50aWZpZXJzKTsKICAgICAgICAgSU5JVChTcGVlY2hTeW50aGVzaXNH
ZXREZWZhdWx0Vm9pY2VJZGVudGlmaWVyRm9yTG9jYWxlKTsKICAgICAgICAgSU5JVChOU0VsYXN0
aWNEZWx0YUZvclRpbWVEZWx0YSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9DYXJib24vSElXZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2FyYm9uL0hJ
V2ViVmlldy5tbQppbmRleCAzNDU4NWMyNTJjM2IxOGNhY2Q2ZTA3YWQ1ZTk0NDg3NzlkOGJlNDU3
Li4xM2JkMmQxMjliMzI3ZjJlYmU2NDBmOThhNTQ2NWY0MGU4MmYyZTgyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DYXJib24vSElXZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL0NhcmJvbi9ISVdlYlZpZXcubW0KQEAgLTM2LDYgKzM2LDcgQEAKICNp
bXBvcnQgIldlYktpdC5oIgogI2ltcG9ydCA8V2ViS2l0U3lzdGVtSW50ZXJmYWNlLmg+CiAjaW1w
b3J0IDxwYWwvc3BpL21hYy9OU0V2ZW50U1BJLmg+CisjaW1wb3J0IDxwYWwvc3BpL21hYy9OU0dy
YXBoaWNzU1BJLmg+CiAjaW1wb3J0IDxwYWwvc3BpL21hYy9RdWlja0RyYXdTUEkuaD4KICNpbXBv
cnQgPHd0Zi9PYmpjUnVudGltZUV4dHJhcy5oPgogCkBAIC04NSw2ICs4NiwyMSBAQCAtIChpbnQp
dGFnCiAKIEBlbmQKIAorQGludGVyZmFjZSBOU1dpbmRvd0dyYXBoaWNzQ29udGV4dCAoKQorLSAo
dm9pZClfd2ViX3NldEdyYXBoaWNzUG9ydDooQ0dDb250ZXh0UmVmKWNvbnRleHQ7CitAZW5kCisK
K0BpbXBsZW1lbnRhdGlvbiBOU1dpbmRvd0dyYXBoaWNzQ29udGV4dCAoKQorCistICh2b2lkKV93
ZWJfc2V0R3JhcGhpY3NQb3J0OihDR0NvbnRleHRSZWYpY29udGV4dAoreworICAgIENHQ29udGV4
dFJldGFpbihjb250ZXh0KTsKKyAgICBDR0NvbnRleHRSZWxlYXNlKF9jZ3NDb250ZXh0KTsKKyAg
ICBfY2dzQ29udGV4dCA9IGNvbnRleHQ7Cit9CisKK0BlbmQKKwogc3RydWN0IEhJV2ViVmlldwog
ewogICAgIEhJVmlld1JlZgkJCQkJCQlmVmlld1JlZjsKQEAgLTI5MCw2ICszMDYsMjIgQEAgR2V0
QmVoYXZpb3JzKCkKIAlyZXR1cm4ga0NvbnRyb2xTdXBwb3J0c0RhdGFBY2Nlc3MgfCBrQ29udHJv
bFN1cHBvcnRzR2V0UmVnaW9uIHwga0NvbnRyb2xHZXRzRm9jdXNPbkNsaWNrOwogfQogCitzdGF0
aWMgQ0dDb250ZXh0UmVmIG92ZXJyaWRlQ0dDb250ZXh0KE5TV2luZG93ICp3aW5kb3csIENHQ29u
dGV4dFJlZiBjb250ZXh0KQoreworICAgIE5TV2luZG93R3JhcGhpY3NDb250ZXh0ICpncmFwaGlj
c0NvbnRleHQgPSAoTlNXaW5kb3dHcmFwaGljc0NvbnRleHQgKil3aW5kb3cuZ3JhcGhpY3NDb250
ZXh0OworICAgIENHQ29udGV4dFJlZiBzYXZlZENvbnRleHQgPSAoQ0dDb250ZXh0UmVmKWdyYXBo
aWNzQ29udGV4dC5ncmFwaGljc1BvcnQ7CisgICAgQ0dDb250ZXh0UmV0YWluKHNhdmVkQ29udGV4
dCk7CisgICAgW2dyYXBoaWNzQ29udGV4dCBfd2ViX3NldEdyYXBoaWNzUG9ydDpjb250ZXh0XTsK
KyAgICByZXR1cm4gc2F2ZWRDb250ZXh0OworfQorCitzdGF0aWMgdm9pZCByZXN0b3JlQ0dDb250
ZXh0KE5TV2luZG93ICp3aW5kb3csIENHQ29udGV4dFJlZiBzYXZlZENvbnRleHQpCit7CisgICAg
TlNXaW5kb3dHcmFwaGljc0NvbnRleHQgKmdyYXBoaWNzQ29udGV4dCA9IChOU1dpbmRvd0dyYXBo
aWNzQ29udGV4dCAqKXdpbmRvdy5ncmFwaGljc0NvbnRleHQ7CisgICAgW2dyYXBoaWNzQ29udGV4
dCBfd2ViX3NldEdyYXBoaWNzUG9ydDpzYXZlZENvbnRleHRdOworICAgIENHQ29udGV4dFJlbGVh
c2Uoc2F2ZWRDb250ZXh0KTsKK30KKwogLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAvLyBE
cmF3CiAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTMyMSw3ICszNTMsNyBAQCBEcmF3
KCBISVdlYlZpZXcqIGluVmlldywgUmduSGFuZGxlIGxpbWl0UmduLCBDR0NvbnRleHRSZWYgaW5D
b250ZXh0ICkKIAogCUhJVmlld0dldEJvdW5kcyggaW5WaWV3LT5mVmlld1JlZiwgJmJvdW5kcyAp
OwogCi0gICAgQ0dDb250ZXh0UmVmIHNhdmVkQ29udGV4dCA9IFdLTlNXaW5kb3dPdmVycmlkZUNH
Q29udGV4dChpblZpZXctPmZLaXRXaW5kb3csIGluQ29udGV4dCk7CisgICAgQ0dDb250ZXh0UmVm
IHNhdmVkQ29udGV4dCA9IG92ZXJyaWRlQ0dDb250ZXh0KGluVmlldy0+ZktpdFdpbmRvdywgaW5D
b250ZXh0KTsKICAgICBbTlNHcmFwaGljc0NvbnRleHQgc2V0Q3VycmVudENvbnRleHQ6W2luVmll
dy0+ZktpdFdpbmRvdyBncmFwaGljc0NvbnRleHRdXTsKIAogCUdldFJlZ2lvbkJvdW5kcyggbGlt
aXRSZ24sICZkcmF3UmVjdCApOwpAQCAtMzUxLDcgKzM4Myw3IEBAIERyYXcoIEhJV2ViVmlldyog
aW5WaWV3LCBSZ25IYW5kbGUgbGltaXRSZ24sIENHQ29udGV4dFJlZiBpbkNvbnRleHQgKQogICAg
IGVsc2UKICAgICAgICAgW2luVmlldy0+ZldlYlZpZXcgZGlzcGxheVJlY3Q6KihOU1JlY3QqKSZo
aVJlY3RdOwogCi0gICAgV0tOU1dpbmRvd1Jlc3RvcmVDR0NvbnRleHQoaW5WaWV3LT5mS2l0V2lu
ZG93LCBzYXZlZENvbnRleHQpOworICAgIHJlc3RvcmVDR0NvbnRleHQoaW5WaWV3LT5mS2l0V2lu
ZG93LCBzYXZlZENvbnRleHQpOwogCiAgICAgaWYgKCAhaW5WaWV3LT5mSXNDb21wb3NpdGVkICkK
ICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3Rl
ZC9XZWJIb3N0ZWROZXRzY2FwZVBsdWdpblZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9QbHVnaW5zL0hvc3RlZC9XZWJIb3N0ZWROZXRzY2FwZVBsdWdpblZpZXcubW0KaW5kZXggOWUy
MDQ0ZTI2ZTEzOTAyMWViOGNhNjMzNjI1NWYyYzgzM2MxYjhiMi4uNjk1YTVjZjUyNzM3M2QzMDlh
ODNiNjRkNmYxZDAxMDBlZDNhNDA4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvUGx1Z2lucy9Ib3N0ZWQvV2ViSG9zdGVkTmV0c2NhcGVQbHVnaW5WaWV3Lm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL1dlYkhvc3RlZE5ldHNjYXBlUGx1
Z2luVmlldy5tbQpAQCAtNzYsNyArNzYsNyBAQCArICh2b2lkKWluaXRpYWxpemUKICAgICBXVEY6
OmluaXRpYWxpemVNYWluVGhyZWFkVG9Qcm9jZXNzTWFpblRocmVhZCgpOwogICAgIFJ1bkxvb3A6
OmluaXRpYWxpemVNYWluUnVuTG9vcCgpOwogI2VuZGlmCi0gICAgV0tTZW5kVXNlckNoYW5nZU5v
dGlmaWNhdGlvbnMoKTsKKyAgICBzZW5kVXNlckNoYW5nZU5vdGlmaWNhdGlvbnMoKTsKIH0KIAog
LSAoaWQpaW5pdFdpdGhGcmFtZTooTlNSZWN0KWZyYW1lCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYkJhc2VOZXRzY2FwZVBsdWdpblZpZXcuaCBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViQmFzZU5ldHNjYXBlUGx1Z2luVmlldy5oCmlu
ZGV4IGMyMjIzYWI2ZDI2NzUxZjM4YzM4OTU4MWJkMzQ5ZGU5ODE0YzE1YjEuLmNkNDMwZDM2Njk3
MWVjOWZlMmVhMGQ0NDA1OTNiNTgwYzljYTJlMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1BsdWdpbnMvV2ViQmFzZU5ldHNjYXBlUGx1Z2luVmlldy5oCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViQmFzZU5ldHNjYXBlUGx1Z2luVmlldy5oCkBA
IC0xMzQsNiArMTM0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogbmFtZXNwYWNlIFdlYktpdCB7
CiBib29sIGdldEF1dGhlbnRpY2F0aW9uSW5mbyhjb25zdCBjaGFyKiBwcm90b2NvbFN0ciwgY29u
c3QgY2hhciogaG9zdFN0ciwgaW50MzJfdCBwb3J0LCBjb25zdCBjaGFyKiBzY2hlbWVTdHIsIGNv
bnN0IGNoYXIqIHJlYWxtU3RyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgV1RGOjpDU3Ry
aW5nJiB1c2VybmFtZSwgV1RGOjpDU3RyaW5nJiBwYXNzd29yZCk7Cit2b2lkIHNlbmRVc2VyQ2hh
bmdlTm90aWZpY2F0aW9ucygpOwogfSAKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYkJhc2VOZXRzY2FwZVBsdWdpblZpZXcubW0gYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYkJhc2VOZXRzY2FwZVBsdWdpblZpZXcubW0K
aW5kZXggNjRkZTkwMTBlYmRiMGIwNjlkNmY4NjNhM2ZlZjJmZmQ3YjVkNDMzOC4uOTU3M2Q1NTNj
NTUzYzNiNDEwMTZkNzg0Y2IxYjAyMzM3Yzg0ODg0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJCYXNlTmV0c2NhcGVQbHVnaW5WaWV3Lm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViQmFzZU5ldHNjYXBlUGx1Z2luVmlldy5t
bQpAQCAtNTUsNiArNTUsNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbi5oPgog
I2ltcG9ydCA8V2ViQ29yZS9XZWJDb3JlT2JqQ0V4dHJhcy5oPgogI2ltcG9ydCA8V2ViS2l0TGVn
YWN5L0RPTVByaXZhdGUuaD4KKyNpbXBvcnQgPHBhbC9zcGkvY2cvQ29yZUdyYXBoaWNzU1BJLmg+
CiAjaW1wb3J0IDxydW50aW1lL0luaXRpYWxpemVUaHJlYWRpbmcuaD4KICNpbXBvcnQgPHd0Zi9B
c3NlcnRpb25zLmg+CiAjaW1wb3J0IDx3dGYvTWFpblRocmVhZC5oPgpAQCAtNzMsNyArNzQsNyBA
QCArICh2b2lkKWluaXRpYWxpemUKICAgICBKU0M6OmluaXRpYWxpemVUaHJlYWRpbmcoKTsKICAg
ICBXVEY6OmluaXRpYWxpemVNYWluVGhyZWFkVG9Qcm9jZXNzTWFpblRocmVhZCgpOwogICAgIFJ1
bkxvb3A6OmluaXRpYWxpemVNYWluUnVuTG9vcCgpOwotICAgIFdLU2VuZFVzZXJDaGFuZ2VOb3Rp
ZmljYXRpb25zKCk7CisgICAgV2ViS2l0OjpzZW5kVXNlckNoYW5nZU5vdGlmaWNhdGlvbnMoKTsK
IH0KIAogLSAoaWQpaW5pdFdpdGhGcmFtZTooTlNSZWN0KWZyYW1lCkBAIC05MDAsNiArOTAxLDIz
IEBAIGJvb2wgZ2V0QXV0aGVudGljYXRpb25JbmZvKGNvbnN0IGNoYXIqIHByb3RvY29sU3RyLCBj
b25zdCBjaGFyKiBob3N0U3RyLCBpbnQzMl90CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK3ZvaWQg
c2VuZFVzZXJDaGFuZ2VOb3RpZmljYXRpb25zKCkKK3sKKyAgICBhdXRvIGNvbnNvbGVDb25uZWN0
aW9uQ2hhbmdlTm90aWZ5UHJvYyA9IFtdKENHU05vdGlmaWNhdGlvblR5cGUgdHlwZSwgQ0dTTm90
aWZpY2F0aW9uRGF0YSwgQ0dTQnl0ZUNvdW50LCBDR1NOb3RpZmljYXRpb25BcmcpIHsKKyAgICAg
ICAgTlNTdHJpbmcgKm5vdGlmaWNhdGlvbk5hbWUgPSBuaWw7CisgICAgICAgIGlmICh0eXBlID09
IGtDR1Nlc3Npb25Db25zb2xlQ29ubmVjdCkKKyAgICAgICAgICAgIG5vdGlmaWNhdGlvbk5hbWUg
PSBMb2dpbldpbmRvd0RpZFN3aXRjaFRvVXNlck5vdGlmaWNhdGlvbjsKKyAgICAgICAgZWxzZSBp
ZiAodHlwZSA9PSBrQ0dTZXNzaW9uQ29uc29sZURpc2Nvbm5lY3QpCisgICAgICAgICAgICBub3Rp
ZmljYXRpb25OYW1lID0gTG9naW5XaW5kb3dEaWRTd2l0Y2hGcm9tVXNlck5vdGlmaWNhdGlvbjsK
KyAgICAgICAgZWxzZQorICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAg
IFtbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0gcG9zdE5vdGlmaWNhdGlvbk5h
bWU6bm90aWZpY2F0aW9uTmFtZSBvYmplY3Q6bmlsXTsKKyAgICB9OworCisgICAgQ0dTUmVnaXN0
ZXJOb3RpZnlQcm9jKGNvbnNvbGVDb25uZWN0aW9uQ2hhbmdlTm90aWZ5UHJvYywga0NHU2Vzc2lv
bkNvbnNvbGVDb25uZWN0LCBudWxscHRyKTsKKyAgICBDR1NSZWdpc3Rlck5vdGlmeVByb2MoY29u
c29sZUNvbm5lY3Rpb25DaGFuZ2VOb3RpZnlQcm9jLCBrQ0dTZXNzaW9uQ29uc29sZURpc2Nvbm5l
Y3QsIG51bGxwdHIpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vICBF
TkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5WaWV3Lm1tIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblZpZXcubW0KaW5kZXggYzY4MGZmN2Vl
MzFjOTNiOGZiNDkyMjk3ZTRlN2FkOTE0MWE0ZGRlNC4uMmJiZDNkZWJlNjZlMThkOGYzMTgwYzk0
Y2ExMzM3ZmNmN2Q4ODE3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1
Z2lucy9XZWJOZXRzY2FwZVBsdWdpblZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblZpZXcubW0KQEAgLTE5Myw3ICsxOTMsNyBAQCAr
ICh2b2lkKWluaXRpYWxpemUKICAgICBKU0M6OmluaXRpYWxpemVUaHJlYWRpbmcoKTsKICAgICBX
VEY6OmluaXRpYWxpemVNYWluVGhyZWFkVG9Qcm9jZXNzTWFpblRocmVhZCgpOwogICAgIFJ1bkxv
b3A6OmluaXRpYWxpemVNYWluUnVuTG9vcCgpOwotICAgIFdLU2VuZFVzZXJDaGFuZ2VOb3RpZmlj
YXRpb25zKCk7CisgICAgc2VuZFVzZXJDaGFuZ2VOb3RpZmljYXRpb25zKCk7CiB9CiAKIC8vIE1B
Uks6IEVWRU5UUwpAQCAtMzc5LDEwICszNzksMTAgQEAgLSAoUG9ydFN0YXRlKXNhdmVBbmRTZXRO
ZXdQb3J0U3RhdGVGb3JVcGRhdGU6KEJPT0wpZm9yVXBkYXRlCiAgICAgICAgICAgICBxZFBvcnRT
dGF0ZS0+Y2xpcFJlZ2lvbiA9IGNsaXBSZWdpb247CiAKICAgICAgICAgICAgIENHQ29udGV4dFJl
ZiBjdXJyZW50Q29udGV4dCA9IChDR0NvbnRleHRSZWYpW1tOU0dyYXBoaWNzQ29udGV4dCBjdXJy
ZW50Q29udGV4dF0gZ3JhcGhpY3NQb3J0XTsKLSAgICAgICAgICAgIGlmIChjdXJyZW50Q29udGV4
dCAmJiBXS0NHQ29udGV4dElzQml0bWFwQ29udGV4dChjdXJyZW50Q29udGV4dCkpIHsKLSAgICAg
ICAgICAgICAgICAvLyBXZSB1c2UgV0tDR0NvbnRleHRJc0JpdG1hcENvbnRleHQgaGVyZSwgYmVj
YXVzZSBpZiB3ZSBqdXN0IGNhbGxlZCBDR0JpdG1hcENvbnRleHRHZXREYXRhCi0gICAgICAgICAg
ICAgICAgLy8gb24gYW55IGNvbnRleHQsIHdlJ2QgbG9nIHRvIHRoZSBjb25zb2xlIGV2ZXJ5IHRp
bWUuIEJ1dCBldmVuIGlmIFdLQ0dDb250ZXh0SXNCaXRtYXBDb250ZXh0Ci0gICAgICAgICAgICAg
ICAgLy8gcmV0dXJucyB0cnVlLCBpdCBzdGlsbCBtaWdodCBub3QgYmUgYSBjb250ZXh0IHdlIG5l
ZWQgdG8gY3JlYXRlIGEgR1dvcmxkIGZvcjsgZm9yIGV4YW1wbGUKKyAgICAgICAgICAgIGlmIChj
dXJyZW50Q29udGV4dCAmJiBDR0NvbnRleHRHZXRUeXBlKGN1cnJlbnRDb250ZXh0KSA9PSBrQ0dD
b250ZXh0VHlwZUJpdG1hcCkgeworICAgICAgICAgICAgICAgIC8vIFdlIGNoZWNrIGZvciBrQ0dD
b250ZXh0VHlwZUJpdG1hcCBoZXJlLCBiZWNhdXNlIGlmIHdlIGp1c3QgY2FsbGVkIENHQml0bWFw
Q29udGV4dEdldERhdGEKKyAgICAgICAgICAgICAgICAvLyBvbiBhbnkgY29udGV4dCwgd2UnZCBs
b2cgdG8gdGhlIGNvbnNvbGUgZXZlcnkgdGltZS4gQnV0IGV2ZW4gaWYgY3VycmVudENvbnRleHQg
aXMgYQorICAgICAgICAgICAgICAgIC8vIGtDR0NvbnRleHRUeXBlQml0bWFwLCBpdCBzdGlsbCBt
aWdodCBub3QgYmUgYSBjb250ZXh0IHdlIG5lZWQgdG8gY3JlYXRlIGEgR1dvcmxkIGZvcjsgZm9y
IGV4YW1wbGUKICAgICAgICAgICAgICAgICAvLyB0cmFuc3BhcmVuY3kgbGF5ZXJzIHdpbGwgcmV0
dXJuIHRydWUsIGJ1dCByZXR1cm4gMCBmb3IgQ0dCaXRtYXBDb250ZXh0R2V0RGF0YS4KICAgICAg
ICAgICAgICAgICB2b2lkKiBvZmZzY3JlZW5EYXRhID0gQ0dCaXRtYXBDb250ZXh0R2V0RGF0YShj
dXJyZW50Q29udGV4dCk7CiAgICAgICAgICAgICAgICAgaWYgKG9mZnNjcmVlbkRhdGEpIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlN5c3Rl
bUludGVyZmFjZS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YlN5c3RlbUludGVyZmFjZS5tbQppbmRleCA2ZGQwYjU3ZGQ0YmYzNDNmZTk2NmYwZmJhNjNjMTFj
ZjRmMDhkOTMyLi5iNTExZDY1ZWE2MWIzNjI0N2QyYjgzZWIyYzY4OTExNDNmMzk3Y2Q4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJTeXN0ZW1J
bnRlcmZhY2UubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViU3lzdGVtSW50ZXJmYWNlLm1tCkBAIC00MywxNiArNDMsOSBAQCB2b2lkIEluaXRXZWJDb3Jl
U3lzdGVtSW50ZXJmYWNlKHZvaWQpCiAgICAgICAgIHJldHVybjsKIAogICAgIElOSVQoQ0FMYXll
ckVudW1lcmF0ZVJlY3RzQmVpbmdEcmF3bldpdGhCbG9jayk7Ci0gICAgSU5JVChDR1BhdHRlcm5D
cmVhdGVXaXRoSW1hZ2VBbmRUcmFuc2Zvcm0pOwotI2lmICFQTEFURk9STShJT1MpCi0gICAgSU5J
VChDR0NvbnRleHREcmF3c1dpdGhDb3JyZWN0U2hhZG93T2Zmc2V0cyk7Ci0jZW5kaWYKICAgICBJ
TklUKENvcHlDT05ORUNUUHJveHlSZXNwb25zZSk7CiAjaWYgIVBMQVRGT1JNKElPUykKICAgICBJ
TklUKERyYXdCZXplbGVkVGV4dEFyZWEpOwotICAgIElOSVQoRHJhd0ZvY3VzUmluZyk7Ci0gICAg
SU5JVChEcmF3Rm9jdXNSaW5nQXRUaW1lKTsKLSAgICBJTklUKERyYXdDZWxsRm9jdXNSaW5nV2l0
aEZyYW1lQXRUaW1lKTsKICAgICBJTklUKERyYXdNZWRpYVVJUGFydCk7CiAgICAgSU5JVChEcmF3
TWVkaWFTbGlkZXJUcmFjayk7CiAgICAgSU5JVChHZXROU0V2ZW50S2V5Q2hhcik7CkBAIC02MCwx
NSArNTMsOSBAQCB2b2lkIEluaXRXZWJDb3JlU3lzdGVtSW50ZXJmYWNlKHZvaWQpCiAgICAgSU5J
VChNZWFzdXJlTWVkaWFVSVBhcnQpOwogICAgIElOSVQoQ3JlYXRlTWVkaWFVSUJhY2tncm91bmRW
aWV3KTsKICAgICBJTklUKENyZWF0ZU1lZGlhVUlDb250cm9sKTsKLSAgICBJTklUKFdpbmRvd1Nl
dEFscGhhKTsKLSAgICBJTklUKFdpbmRvd1NldFNjYWxlZEZyYW1lKTsKICNlbmRpZgogICAgIElO
SVQoU2V0Q09OTkVDVFByb3h5QXV0aG9yaXphdGlvbkZvclN0cmVhbSk7CiAgICAgSU5JVChTZXRD
T05ORUNUUHJveHlGb3JTdHJlYW0pOwotI2lmICFQTEFURk9STShJT1MpCi0gICAgSU5JVChTZXRE
cmFnSW1hZ2UpOwotI2VuZGlmCi0gICAgSU5JVChDR0NvbnRleHRJc1BERkNvbnRleHQpOwogI2lm
IEVOQUJMRShWSURFTykgJiYgIVBMQVRGT1JNKElPUykKICAgICBJTklUKFFUSW5jbHVkZU9ubHlN
b2Rlcm5NZWRpYUZpbGVUeXBlcyk7CiAgICAgSU5JVChRVE1vdmllRGlzYWJsZUNvbXBvbmVudCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1t
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQppbmRleCBmMGY4
ZTYyODU4MGIyOWZlMDQ3ZWRkZjZlYjQ3NTc4YzZkMDVkZDJkLi5lNzA5M2M5NmFhYzQ3NGUzYWVl
OWU3MmQyM2IyNGViMWM1ODlhMmViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJWaWV3L1dlYkZyYW1lLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZp
ZXcvV2ViRnJhbWUubW0KQEAgLTU5OCw3ICs1OTgsNyBAQCAtIChQYWludEJlaGF2aW9yKV9wYWlu
dEJlaGF2aW9yRm9yRGVzdGluYXRpb25Db250ZXh0OihDR0NvbnRleHRSZWYpY29udGV4dAogICAg
ICAgICByZXR1cm4gUGFpbnRCZWhhdmlvckZsYXR0ZW5Db21wb3NpdGluZ0xheWVycyB8IFBhaW50
QmVoYXZpb3JTbmFwc2hvdHRpbmc7CiAjZW5kaWYKIAotICAgIGlmICghV0tDR0NvbnRleHRJc0Jp
dG1hcENvbnRleHQoY29udGV4dCkpCisgICAgaWYgKENHQ29udGV4dEdldFR5cGUoY29udGV4dCkg
IT0ga0NHQ29udGV4dFR5cGVCaXRtYXApCiAgICAgICAgIHJldHVybiBQYWludEJlaGF2aW9yTm9y
bWFsOwogCiAgICAgLy8gSWYgd2UncmUgZHJhd2luZyBpbnRvIGEgYml0bWFwLCB3ZSBtaWdodCBi
ZSBzbmFwc2hvdHRpbmcsIG9yIGRyYXdpbmcgaW50byBhIGxheWVyLWJhY2tlZCB2aWV3LgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGdWxsU2NyZWVuQ29u
dHJvbGxlci5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnVsbFNjcmVl
bkNvbnRyb2xsZXIubW0KaW5kZXggZmQ4ZmM1Njk5N2FmY2I2YWQ3ZjkwYzVmYzk5ODRiYTMxNzY2
ZTkwNy4uNzcyZTk2MjNjM2Y2NWJlMjM0ODY5MmJlMzI0YTQ3YTZiZWRhNDg3NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGdWxsU2NyZWVuQ29udHJvbGxl
ci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZ1bGxTY3JlZW5D
b250cm9sbGVyLm1tCkBAIC0yNDksNiArMjQ5LDE2IEBAIC0gKHZvaWQpZW50ZXJGdWxsU2NyZWVu
OihOU1NjcmVlbiAqKXNjcmVlbgogICAgIF9pc0VudGVyaW5nRnVsbFNjcmVlbiA9IHRydWU7CiB9
CiAKK3N0YXRpYyB2b2lkIHNldENsaXBSZWN0Rm9yV2luZG93KE5TV2luZG93ICp3aW5kb3csIE5T
UmVjdCBjbGlwUmVjdCkKK3sKKyAgICBDR1NXaW5kb3dJRCB3aW5kb3dOdW1iZXIgPSAoQ0dTV2lu
ZG93SUQpd2luZG93LndpbmRvd051bWJlcjsKKyAgICBDR1NSZWdpb25PYmogc2hhcGU7CisgICAg
Q0dSZWN0IGNnQ2xpcFJlY3QgPSBOU1JlY3RUb0NHUmVjdChjbGlwUmVjdCk7CisgICAgQ0dTTmV3
UmVnaW9uV2l0aFJlY3QoJmNnQ2xpcFJlY3QsICZzaGFwZSk7CisgICAgQ0dTU2V0V2luZG93Q2xp
cFNoYXBlKENHU01haW5Db25uZWN0aW9uSUQoKSwgd2luZG93TnVtYmVyLCBzaGFwZSk7CisgICAg
Q0dTUmVsZWFzZVJlZ2lvbihzaGFwZSk7Cit9CisKIC0gKHZvaWQpZmluaXNoZWRFbnRlckZ1bGxT
Y3JlZW5BbmltYXRpb246KGJvb2wpY29tcGxldGVkCiB7CiAgICAgaWYgKCFfaXNFbnRlcmluZ0Z1
bGxTY3JlZW4pCkBAIC0yNjMsNyArMjczLDcgQEAgLSAodm9pZClmaW5pc2hlZEVudGVyRnVsbFNj
cmVlbkFuaW1hdGlvbjooYm9vbCljb21wbGV0ZWQKICAgICAgICAgCiAgICAgICAgIE5TUmVjdCB3
aW5kb3dCb3VuZHMgPSBbW3NlbGYgd2luZG93XSBmcmFtZV07CiAgICAgICAgIHdpbmRvd0JvdW5k
cy5vcmlnaW4gPSBOU1plcm9Qb2ludDsKLSAgICAgICAgV0tXaW5kb3dTZXRDbGlwUmVjdChbc2Vs
ZiB3aW5kb3ddLCB3aW5kb3dCb3VuZHMpOworICAgICAgICBzZXRDbGlwUmVjdEZvcldpbmRvdyhz
ZWxmLndpbmRvdywgd2luZG93Qm91bmRzKTsKICAgICAgICAgCiAgICAgICAgIE5TV2luZG93ICp3
ZWJXaW5kb3cgPSBbX3dlYlZpZXdQbGFjZWhvbGRlci5nZXQoKSB3aW5kb3ddOwogICAgICAgICAv
LyBJbiBMaW9uLCBOU1dpbmRvdyB3aWxsIGFuaW1hdGUgaW50byBhbmQgb3V0IG9mIG9yZGVyT3V0
IG9wZXJhdGlvbnMuIFN1cHByZXNzIHRoYXQKQEAgLTM1Myw3ICszNjMsNyBAQCAtICh2b2lkKWZp
bmlzaGVkRXhpdEZ1bGxTY3JlZW5BbmltYXRpb246KGJvb2wpY29tcGxldGVkCiAgICAgCiAgICAg
TlNSZWN0IHdpbmRvd0JvdW5kcyA9IFtbc2VsZiB3aW5kb3ddIGZyYW1lXTsKICAgICB3aW5kb3dC
b3VuZHMub3JpZ2luID0gTlNaZXJvUG9pbnQ7Ci0gICAgV0tXaW5kb3dTZXRDbGlwUmVjdChbc2Vs
ZiB3aW5kb3ddLCB3aW5kb3dCb3VuZHMpOworICAgIHNldENsaXBSZWN0Rm9yV2luZG93KHNlbGYu
d2luZG93LCB3aW5kb3dCb3VuZHMpOwogICAgIAogICAgIFtbc2VsZiB3aW5kb3ddIG9yZGVyT3V0
OnNlbGZdOwogICAgIFtbc2VsZiB3aW5kb3ddIHNldEZyYW1lOk5TWmVyb1JlY3QgZGlzcGxheTpZ
RVNdOwpAQCAtNDg0LDEzICs0OTQsMTMgQEAgLSAodm9pZClfc3RhcnRFbnRlckZ1bGxTY3JlZW5B
bmltYXRpb25XaXRoRHVyYXRpb246KE5TVGltZUludGVydmFsKWR1cmF0aW9uCiAgICAgW19zY2Fs
ZUFuaW1hdGlvbi5nZXQoKSBzZXRDdXJyZW50UHJvZ3Jlc3M6MF07CiAgICAgW19zY2FsZUFuaW1h
dGlvbi5nZXQoKSBzdGFydEFuaW1hdGlvbl07CiAgICAgCi0gICAgLy8gV0tXaW5kb3dTZXRDbGlw
UmVjdCB0YWtlcyB3aW5kb3cgY29vcmRpbmF0ZXMsIHNvIGNvbnZlcnQgZnJvbSBzY3JlZW4gY29v
cmRpbmF0ZXMgaGVyZToKKyAgICAvLyBzZXRDbGlwUmVjdEZvcldpbmRvdyB0YWtlcyB3aW5kb3cg
Y29vcmRpbmF0ZXMsIHNvIGNvbnZlcnQgZnJvbSBzY3JlZW4gY29vcmRpbmF0ZXMgaGVyZToKICAg
ICBOU1JlY3QgZmluYWxCb3VuZHMgPSBfZmluYWxGcmFtZTsKICNwcmFnbWEgY2xhbmcgZGlhZ25v
c3RpYyBwdXNoCiAjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgaWdub3JlZCAiLVdkZXByZWNhdGVk
LWRlY2xhcmF0aW9ucyIKICAgICBmaW5hbEJvdW5kcy5vcmlnaW4gPSBbW3NlbGYgd2luZG93XSBj
b252ZXJ0U2NyZWVuVG9CYXNlOmZpbmFsQm91bmRzLm9yaWdpbl07CiAjcHJhZ21hIGNsYW5nIGRp
YWdub3N0aWMgcG9wCi0gICAgV0tXaW5kb3dTZXRDbGlwUmVjdChbc2VsZiB3aW5kb3ddLCBmaW5h
bEJvdW5kcyk7CisgICAgc2V0Q2xpcFJlY3RGb3JXaW5kb3coc2VsZi53aW5kb3csIGZpbmFsQm91
bmRzKTsKICAgICAKICAgICBbW3NlbGYgd2luZG93XSBtYWtlS2V5QW5kT3JkZXJGcm9udDpzZWxm
XTsKICAgICAKQEAgLTU1NiwxMyArNTY2LDEzIEBAIC0gKHZvaWQpX3N0YXJ0RXhpdEZ1bGxTY3Jl
ZW5BbmltYXRpb25XaXRoRHVyYXRpb246KE5TVGltZUludGVydmFsKWR1cmF0aW9uCiAgICAgCiAg
ICAgW19iYWNrZ3JvdW5kV2luZG93LmdldCgpIG9yZGVyV2luZG93Ok5TV2luZG93QmVsb3cgcmVs
YXRpdmVUbzpbW3NlbGYgd2luZG93XSB3aW5kb3dOdW1iZXJdXTsKICAgICAKLSAgICAvLyBXS1dp
bmRvd1NldENsaXBSZWN0IHRha2VzIHdpbmRvdyBjb29yZGluYXRlcywgc28gY29udmVydCBmcm9t
IHNjcmVlbiBjb29yZGluYXRlcyBoZXJlOgorICAgIC8vIHNldENsaXBSZWN0Rm9yV2luZG93IHRh
a2VzIHdpbmRvdyBjb29yZGluYXRlcywgc28gY29udmVydCBmcm9tIHNjcmVlbiBjb29yZGluYXRl
cyBoZXJlOgogICAgIE5TUmVjdCBmaW5hbEJvdW5kcyA9IF9maW5hbEZyYW1lOwogI3ByYWdtYSBj
bGFuZyBkaWFnbm9zdGljIHB1c2gKICNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBpZ25vcmVkICIt
V2RlcHJlY2F0ZWQtZGVjbGFyYXRpb25zIgogICAgIGZpbmFsQm91bmRzLm9yaWdpbiA9IFtbc2Vs
ZiB3aW5kb3ddIGNvbnZlcnRTY3JlZW5Ub0Jhc2U6ZmluYWxCb3VuZHMub3JpZ2luXTsKICNwcmFn
bWEgY2xhbmcgZGlhZ25vc3RpYyBwb3AKLSAgICBXS1dpbmRvd1NldENsaXBSZWN0KFtzZWxmIHdp
bmRvd10sIGZpbmFsQm91bmRzKTsKKyAgICBzZXRDbGlwUmVjdEZvcldpbmRvdyhzZWxmLndpbmRv
dywgZmluYWxCb3VuZHMpOwogICAgIAogICAgIFtbc2VsZiB3aW5kb3ddIHNldEF1dG9kaXNwbGF5
OllFU107CiAgICAgW1tzZWxmIHdpbmRvd10gZGlzcGxheUlmTmVlZGVkXTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>319602</attachid>
            <date>2017-09-01 09:34:58 -0700</date>
            <delta_ts>2017-09-01 09:44:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-176200-20170901093458.patch</filename>
            <type>text/plain</type>
            <size>65295</size>
            <attacher name="Andy Estes">aestes</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIxNDczCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmNmNjE0ZmZmMzUzODM2
Mjg0MTIwMzJkMzk0M2FkZDllOGNjOWJmNS4uZDY3YWI1ZTIxNjRkNmY5NzBmNDU1MmZlZDg5M2Vl
NmQyYTgzMzYwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDQ2IEBACiAyMDE3LTA4LTMxICBBbmR5
IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KIAorICAgICAgICBbQ0ddIFVwc3RyZWFtIENvcmVH
cmFwaGljcy1yZWxhdGVkIFdlYktpdFN5c3RlbUludGVyZmFjZSBmdW5jdGlvbnMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NjIwMAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NDb250ZXh0Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VT
b3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OnN1YnNhbXBsaW5nTGV2
ZWxGb3JTY2FsZUZhY3Rvcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhp
Y3NDb250ZXh0Q0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpjbGlw
T3V0KToKKyAgICAgICAgKFdlYkNvcmU6OmFwcGx5U2hhZG93T2Zmc2V0V29ya2Fyb3VuZElmTmVl
ZGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9QYXR0ZXJuQ0cuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UGF0dGVybjo6Y3JlYXRlUGxhdGZvcm1QYXR0ZXJuIGNvbnN0KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRDb2NvYS5tbToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6Zm9jdXNSaW5nQ29sb3IpOgorICAg
ICAgICAoV2ViQ29yZTo6ZHJhd0ZvY3VzUmluZ0F0VGltZSk6CisgICAgICAgIChXZWJDb3JlOjpk
cmF3Rm9jdXNSaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OmRyYXdGb2N1c1JpbmdUb0NvbnRleHQp
OgorICAgICAgICAoV2ViQ29yZTo6ZHJhd0ZvY3VzUmluZ1RvQ29udGV4dEF0VGltZSk6CisgICAg
ICAgICogcGxhdGZvcm0vaW9zL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2VJT1MubW06CisgICAgICAg
ICogcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpmbGlw
SW1hZ2VTcGVjKToKKyAgICAgICAgKFdlYkNvcmU6OnNldERyYWdJbWFnZUltcGwpOgorICAgICAg
ICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6c2V0RHJhZ0ltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9tYWMvUGxhdGZvcm1FdmVudEZhY3RvcnlNYWMubW06CisgICAgICAgICogcGxhdGZvcm0vbWFj
L1Njcm9sbGJhclRoZW1lTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6bGluZW5CYWNrZ3JvdW5k
Q29sb3IpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9UaGVtZU1hYy5tbToKKyAgICAgICAgKFdl
YkNvcmU6OmRyYXdDZWxsRm9jdXNSaW5nV2l0aEZyYW1lQXRUaW1lKToKKyAgICAgICAgKFdlYkNv
cmU6OmRyYXdDZWxsRm9jdXNSaW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvV2ViQ29yZVN5
c3RlbUludGVyZmFjZS5oOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9XZWJDb3JlU3lzdGVtSW50
ZXJmYWNlLm1tOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9XZWJXaW5kb3dBbmltYXRpb24ubW06
CisgICAgICAgIChmbGlwUmVjdCk6CisgICAgICAgIChtYWluV2luZG93U2VydmVyQ29ubmVjdGlv
bklEKToKKyAgICAgICAgKHNldFNjYWxlZEZyYW1lRm9yV2luZG93KToKKyAgICAgICAgKC1bV2Vi
V2luZG93U2NhbGVBbmltYXRpb24gc2V0Q3VycmVudFByb2dyZXNzOl0pOgorICAgICAgICAoLVtX
ZWJXaW5kb3dGYWRlQW5pbWF0aW9uIHNldEN1cnJlbnRQcm9ncmVzczpdKToKKworMjAxNy0wOC0z
MSAgQW5keSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+CisKICAgICAgICAgW01hY10gVXBzdHJl
YW0gQXBwS2l0LXJlbGF0ZWQgV2ViS2l0U3lzdGVtSW50ZXJmYWNlIGZ1bmN0aW9ucwogICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc2MTc1CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9QQUwv
Q2hhbmdlTG9nCmluZGV4IGVlZWU4NGRjNjE5ZDkyZDRkYTJhMTIwYjIwODZkYzZjNjEwYTY4YjIu
LjQzNjE3MDA3YTFlMGJlMDZhNWY2MTg0NmQxZTJlMjBiODRmZGIwYTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML0NoYW5n
ZUxvZwpAQCAtMSw1ICsxLDE3IEBACiAyMDE3LTA4LTMxICBBbmR5IEVzdGVzICA8YWVzdGVzQGFw
cGxlLmNvbT4KIAorICAgICAgICBbQ0ddIFVwc3RyZWFtIENvcmVHcmFwaGljcy1yZWxhdGVkIFdl
YktpdFN5c3RlbUludGVyZmFjZSBmdW5jdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NjIwMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogUEFMLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6Cisg
ICAgICAgICogcGFsL3NwaS9jZy9Db3JlR3JhcGhpY3NTUEkuaDoKKyAgICAgICAgKiBwYWwvc3Bp
L21hYy9ISVNlcnZpY2VzU1BJLmg6CisgICAgICAgICogcGFsL3NwaS9tYWMvTlNHcmFwaGljc1NQ
SS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9tYWMvSElTZXJ2aWNl
c1NQSS5oLgorCisyMDE3LTA4LTMxICBBbmR5IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KKwog
ICAgICAgICBbTWFjXSBVcHN0cmVhbSBBcHBLaXQtcmVsYXRlZCBXZWJLaXRTeXN0ZW1JbnRlcmZh
Y2UgZnVuY3Rpb25zCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNzYxNzUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBiNjJiN2VlNTYxZmYwNDQ2ZmVlYmRiNDMwNjU2Njcx
MmNjZGZlZDI4Li4yZGMxYjc0MjNjMzhiYTcxYTE1ZDNhODljNDYwYWZjNDEwZWRiZThhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwpAQCAtMSw1ICsxLDIyIEBACiAyMDE3LTA4LTMxICBBbmR5IEVzdGVzICA8YWVzdGVzQGFw
cGxlLmNvbT4KIAorICAgICAgICBbQ0ddIFVwc3RyZWFtIENvcmVHcmFwaGljcy1yZWxhdGVkIFdl
YktpdFN5c3RlbUludGVyZmFjZSBmdW5jdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NjIwMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogUGx1Z2luUHJvY2Vzcy9tYWMvUGx1Z2luUHJvY2Vzc01h
Yy5tbToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXpl
UHJvY2Vzcyk6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9XaW5kb3dTZXJ2ZXJDb25uZWN0aW9u
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9XaW5kb3dTZXJ2ZXJDb25uZWN0aW9uLm1tOgor
ICAgICAgICAoV2ViS2l0OjpyZWdpc3Rlck9jY2x1c2lvbk5vdGlmaWNhdGlvbkhhbmRsZXIpOgor
ICAgICAgICAoV2ViS2l0OjpXaW5kb3dTZXJ2ZXJDb25uZWN0aW9uOjpXaW5kb3dTZXJ2ZXJDb25u
ZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2luZG93U2VydmVyQ29ubmVjdGlvbjo6YXBwbGlj
YXRpb25XaW5kb3dNb2RpZmljYXRpb25zU3RhcnRlZCk6IERlbGV0ZWQuCisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViU3lzdGVtSW50ZXJmYWNlLm1tOgorICAgICAg
ICAoSW5pdFdlYkNvcmVTeXN0ZW1JbnRlcmZhY2UpOgorCisyMDE3LTA4LTMxICBBbmR5IEVzdGVz
ICA8YWVzdGVzQGFwcGxlLmNvbT4KKwogICAgICAgICBbTWFjXSBVcHN0cmVhbSBBcHBLaXQtcmVs
YXRlZCBXZWJLaXRTeXN0ZW1JbnRlcmZhY2UgZnVuY3Rpb25zCiAgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzYxNzUKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hh
bmdlTG9nCmluZGV4IGM0Zjk5NTY3MjU0ZDBiNjIyYzlhOGY5ODc5MTdiNjcwMzM5NzgwOTMuLmU3
ZDhkODBmNDAyMjJjYmNmNzQyOThjN2E5MjEzYTgzMDI0YTkwZGIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9DaGFuZ2VMb2cKQEAgLTEsNSArMSwzNiBAQAogMjAxNy0wOC0zMSAgQW5keSBFc3RlcyAgPGFl
c3Rlc0BhcHBsZS5jb20+CiAKKyAgICAgICAgW0NHXSBVcHN0cmVhbSBDb3JlR3JhcGhpY3MtcmVs
YXRlZCBXZWJLaXRTeXN0ZW1JbnRlcmZhY2UgZnVuY3Rpb25zCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzYyMDAKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIENhcmJvbi9ISVdlYlZpZXcubW06CisgICAg
ICAgICgtW05TV2luZG93R3JhcGhpY3NDb250ZXh0IF93ZWJfc2V0R3JhcGhpY3NQb3J0Ol0pOgor
ICAgICAgICAob3ZlcnJpZGVDR0NvbnRleHQpOgorICAgICAgICAocmVzdG9yZUNHQ29udGV4dCk6
CisgICAgICAgIChEcmF3KToKKyAgICAgICAgKiBQbHVnaW5zL0hvc3RlZC9XZWJIb3N0ZWROZXRz
Y2FwZVBsdWdpblZpZXcubW06CisgICAgICAgICgrW1dlYkhvc3RlZE5ldHNjYXBlUGx1Z2luVmll
dyBpbml0aWFsaXplXSk6CisgICAgICAgICogUGx1Z2lucy9XZWJCYXNlTmV0c2NhcGVQbHVnaW5W
aWV3Lmg6CisgICAgICAgICogUGx1Z2lucy9XZWJCYXNlTmV0c2NhcGVQbHVnaW5WaWV3Lm1tOgor
ICAgICAgICAoV2ViS2l0OjpzZW5kVXNlckNoYW5nZU5vdGlmaWNhdGlvbnMpOgorICAgICAgICAq
IFBsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5WaWV3Lm1tOgorICAgICAgICAoK1tXZWJOZXRzY2Fw
ZVBsdWdpblZpZXcgaW5pdGlhbGl6ZV0pOgorICAgICAgICAoLVtXZWJOZXRzY2FwZVBsdWdpblZp
ZXcgc2F2ZUFuZFNldE5ld1BvcnRTdGF0ZUZvclVwZGF0ZTpdKToKKyAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9XZWJTeXN0ZW1JbnRlcmZhY2UubW06CisgICAgICAgIChJbml0V2ViQ29yZVN5c3Rl
bUludGVyZmFjZSk6CisgICAgICAgICogV2ViVmlldy9XZWJGcmFtZS5tbToKKyAgICAgICAgKC1b
V2ViRnJhbWUgX3BhaW50QmVoYXZpb3JGb3JEZXN0aW5hdGlvbkNvbnRleHQ6XSk6CisgICAgICAg
ICogV2ViVmlldy9XZWJGdWxsU2NyZWVuQ29udHJvbGxlci5tbToKKyAgICAgICAgKHNldENsaXBS
ZWN0Rm9yV2luZG93KToKKyAgICAgICAgKC1bV2ViRnVsbFNjcmVlbkNvbnRyb2xsZXIgZmluaXNo
ZWRFbnRlckZ1bGxTY3JlZW5BbmltYXRpb246XSk6CisgICAgICAgICgtW1dlYkZ1bGxTY3JlZW5D
b250cm9sbGVyIGZpbmlzaGVkRXhpdEZ1bGxTY3JlZW5BbmltYXRpb246XSk6CisgICAgICAgICgt
W1dlYkZ1bGxTY3JlZW5Db250cm9sbGVyIF9zdGFydEVudGVyRnVsbFNjcmVlbkFuaW1hdGlvbldp
dGhEdXJhdGlvbjpdKToKKyAgICAgICAgKC1bV2ViRnVsbFNjcmVlbkNvbnRyb2xsZXIgX3N0YXJ0
RXhpdEZ1bGxTY3JlZW5BbmltYXRpb25XaXRoRHVyYXRpb246XSk6CisKKzIwMTctMDgtMzEgIEFu
ZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29tPgorCiAgICAgICAgIFtNYWNdIFVwc3RyZWFtIEFw
cEtpdC1yZWxhdGVkIFdlYktpdFN5c3RlbUludGVyZmFjZSBmdW5jdGlvbnMKICAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NjE3NQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9QQUwvUEFMLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3Vy
Y2UvV2ViQ29yZS9QQUwvUEFMLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMTNjZWNj
Y2U2YzQzNmYwNTAyZWQ5OTcyYmViNGIxYWViM2YzNDBiOC4uM2EwNDBhYTI0MDg5Mzg5MmNhYmU1
OGU1ZjdjMjA4M2YxNjEyYjZkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML1BBTC54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9QQUwueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTA0LDYgKzEwNCw3IEBACiAJCUExMDgyNkYxMUY1
NzNCQ0EwMDQ3NzJBQyAvKiBOU1Jlc3BvbmRlclNQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTEwODI2RjAxRjU3M0JDQTAwNDc3MkFDIC8qIE5TUmVz
cG9uZGVyU1BJLmggKi87IH07CiAJCUExMDgyNkY5MUY1NzYyOTIwMDQ3NzJBQyAvKiBXZWJQYW5l
bC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTEwODI2
RjcxRjU3NjI5MjAwNDc3MkFDIC8qIFdlYlBhbmVsLmggKi87IH07CiAJCUExMDgyNkZBMUY1NzYy
OTIwMDQ3NzJBQyAvKiBXZWJQYW5lbC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEExMDgyNkY4MUY1NzYyOTIwMDQ3NzJBQyAvKiBXZWJQYW5lbC5tbSAq
LzsgfTsKKwkJQTEwODI2RkUxRjU4QTQzMzAwNDc3MkFDIC8qIE5TR3JhcGhpY3NTUEkuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExMDgyNkZEMUY1OEE0
MzMwMDQ3NzJBQyAvKiBOU0dyYXBoaWNzU1BJLmggKi87IH07CiAJCUExRjU1RENGMUY1NTI4RUMw
MEVEQjc1RiAvKiBNZXRhZGF0YVNQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQTFGNTVEQ0UxRjU1MjhFQzAwRURCNzVGIC8qIE1ldGFkYXRhU1BJLmgg
Ki87IH07CiAJCUEzMEQ0MTIxMUYwREQwRUEwMEI3MTk1NCAvKiBLaWxsUmluZy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTMwRDQxMUUxRjBERDBFQTAw
QjcxOTU0IC8qIEtpbGxSaW5nLmggKi87IH07CiAJCUEzMEQ0MTIyMUYwREQwRUEwMEI3MTk1NCAv
KiBLaWxsUmluZy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBBMzBENDExRjFGMEREMEVBMDBCNzE5NTQgLyogS2lsbFJpbmcuY3BwICovOyB9OwpAQCAt
MjIzLDYgKzIyNCw3IEBACiAJCUExMDgyNkYwMUY1NzNCQ0EwMDQ3NzJBQyAvKiBOU1Jlc3BvbmRl
clNQSS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBOU1Jlc3BvbmRlclNQSS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlBMTA4MjZGNzFGNTc2MjkyMDA0NzcyQUMgLyogV2ViUGFuZWwuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gV2ViUGFuZWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTEw
ODI2RjgxRjU3NjI5MjAwNDc3MkFDIC8qIFdlYlBhbmVsLm1tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gV2ViUGFuZWwubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUExMDgyNkZEMUY1
OEE0MzMwMDQ3NzJBQyAvKiBOU0dyYXBoaWNzU1BJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5TR3JhcGhp
Y3NTUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTFGNTVEQ0UxRjU1MjhFQzAw
RURCNzVGIC8qIE1ldGFkYXRhU1BJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1ldGFkYXRhU1BJLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUEzMEQ0MTFFMUYwREQwRUEwMEI3MTk1NCAvKiBL
aWxsUmluZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBLaWxsUmluZy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMzBENDExRjFGMEREMEVBMDBCNzE5NTQgLyog
S2lsbFJpbmcuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gS2lsbFJp
bmcuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzU1LDYgKzM1Nyw3IEBACiAJ
CQkJMEM3Nzg1NzUxRjQ1MTMwRjAwRjRFQkI2IC8qIE5TQXBwbGljYXRpb25TUEkuaCAqLywKIAkJ
CQkwQzc3ODU3NjFGNDUxMzBGMDBGNEVCQjYgLyogTlNFdmVudFNQSS5oICovLAogCQkJCTBDNzc4
NTc3MUY0NTEzMEYwMEY0RUJCNiAvKiBOU0ZvbnRTUEkuaCAqLywKKwkJCQlBMTA4MjZGRDFGNThB
NDMzMDA0NzcyQUMgLyogTlNHcmFwaGljc1NQSS5oICovLAogCQkJCTBDNzc4NTc4MUY0NTEzMEYw
MEY0RUJCNiAvKiBOU0ltbWVkaWF0ZUFjdGlvbkdlc3R1cmVSZWNvZ25pemVyU1BJLmggKi8sCiAJ
CQkJMEM3Nzg1NzkxRjQ1MTMwRjAwRjRFQkI2IC8qIE5TTWVudVNQSS5oICovLAogCQkJCTBDNzc4
NTdBMUY0NTEzMEYwMEY0RUJCNiAvKiBOU1Bhc3RlYm9hcmRTUEkuaCAqLywKQEAgLTU1MSw2ICs1
NTQsNyBAQAogCQkJCTBDMkRBMTRFMUYzQkVCNDkwMERCQzMxNyAvKiBOU0V4dGVuc2lvblNQSS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEMyREExNEYxRjNCRUI0OTAwREJDMzE3IC8qIE5TRmlsZU1h
bmFnZXJTUEkuaCBpbiBIZWFkZXJzICovLAogCQkJCTBDNzc4NTkwMUY0NTEzMEYwMEY0RUJCNiAv
KiBOU0ZvbnRTUEkuaCBpbiBIZWFkZXJzICovLAorCQkJCUExMDgyNkZFMUY1OEE0MzMwMDQ3NzJB
QyAvKiBOU0dyYXBoaWNzU1BJLmggaW4gSGVhZGVycyAqLywKIAkJCQkwQzc3ODU5MTFGNDUxMzBG
MDBGNEVCQjYgLyogTlNJbW1lZGlhdGVBY3Rpb25HZXN0dXJlUmVjb2duaXplclNQSS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMEM3Nzg1OTIxRjQ1MTMwRjAwRjRFQkI2IC8qIE5TTWVudVNQSS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMEM3Nzg1OTMxRjQ1MTMwRjAwRjRFQkI2IC8qIE5TUGFzdGVib2Fy
ZFNQSS5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFs
L3NwaS9jZy9Db3JlR3JhcGhpY3NTUEkuaCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2Nn
L0NvcmVHcmFwaGljc1NQSS5oCmluZGV4IDdjMjkxYzkxNGQ2OWY1NmQ4NmRiYjRhODgxZmIyMzE4
OWM1YTVhNWMuLjMyMjY1YTBlZjZkNGE4NzBhYjQxNmMyNDA0ZDkyZjRmYmQ5ZDZhODEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NnL0NvcmVHcmFwaGljc1NQSS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NnL0NvcmVHcmFwaGljc1NQSS5oCkBAIC0x
MzcsMjEgKzEzNyw3NCBAQCBzdGF0aWMgaW5saW5lIENHRmxvYXQgQ0dGbG9hdE1pbihDR0Zsb2F0
IGEsIENHRmxvYXQgYikgeyByZXR1cm4gaXNuYW4oYSkgPyBiIDogKAogCiB0eXBlZGVmIHN0cnVj
dCBDR0ZvbnRDYWNoZSBDR0ZvbnRDYWNoZTsKIAotI2lmIFBMQVRGT1JNKE1BQykKLXR5cGVkZWYg
dWludDMyX3QgQ0dTQ29ubmVjdGlvbklEOwotdHlwZWRlZiB1aW50MzJfdCBDR1NXaW5kb3dJRDsK
LXR5cGVkZWYgdWludDMyX3QgQ0dTV2luZG93Q291bnQ7Ci10eXBlZGVmIENHU1dpbmRvd0lEICpD
R1NXaW5kb3dJRExpc3Q7CisjaWYgUExBVEZPUk0oQ09DT0EpCiAKIGVudW0gewogICAgIGtDR1NX
aW5kb3dDYXB0dXJlTm9taW5hbFJlc29sdXRpb24gPSAweDAyMDAsCiAgICAga0NHU0NhcHR1cmVJ
Z25vcmVHbG9iYWxDbGlwU2hhcGUgPSAweDA4MDAsCiB9OwogdHlwZWRlZiB1aW50MzJfdCBDR1NX
aW5kb3dDYXB0dXJlT3B0aW9uczsKLSNlbmRpZgorCit0eXBlZGVmIENGX0VOVU0gKGludDMyX3Qs
IENHU3R5bGVEcmF3T3JkZXJpbmcpIHsKKyAgICBrQ0dTdHlsZURyYXdPcmRlcmluZ1N0eWxlT25s
eSA9IDAsCisgICAga0NHU3R5bGVEcmF3T3JkZXJpbmdCZWxvdyA9IDEsCisgICAga0NHU3R5bGVE
cmF3T3JkZXJpbmdBYm92ZSA9IDIsCit9OworCit0eXBlZGVmIENGX0VOVU0gKGludDMyX3QsIENH
Rm9jdXNSaW5nT3JkZXJpbmcpIHsKKyAgICBrQ0dGb2N1c1JpbmdPcmRlcmluZ05vbmUgPSBrQ0dT
dHlsZURyYXdPcmRlcmluZ1N0eWxlT25seSwKKyAgICBrQ0dGb2N1c1JpbmdPcmRlcmluZ0JlbG93
ID0ga0NHU3R5bGVEcmF3T3JkZXJpbmdCZWxvdywKKyAgICBrQ0dGb2N1c1JpbmdPcmRlcmluZ0Fi
b3ZlID0ga0NHU3R5bGVEcmF3T3JkZXJpbmdBYm92ZSwKK307CisKK3R5cGVkZWYgQ0ZfRU5VTSAo
aW50MzJfdCwgQ0dGb2N1c1JpbmdUaW50KSB7CisgICAga0NHRm9jdXNSaW5nVGludEJsdWUgPSAw
LAorICAgIGtDR0ZvY3VzUmluZ1RpbnRHcmFwaGl0ZSA9IDEsCit9OworCitzdHJ1Y3QgQ0dGb2N1
c1JpbmdTdHlsZSB7CisgICAgdW5zaWduZWQgaW50IHZlcnNpb247CisgICAgQ0dGb2N1c1JpbmdU
aW50IHRpbnQ7CisgICAgQ0dGb2N1c1JpbmdPcmRlcmluZyBvcmRlcmluZzsKKyAgICBDR0Zsb2F0
IGFscGhhOworICAgIENHRmxvYXQgcmFkaXVzOworICAgIENHRmxvYXQgdGhyZXNob2xkOworICAg
IENHUmVjdCBib3VuZHM7CisgICAgaW50IGFjY3VtdWxhdGU7Cit9OwordHlwZWRlZiBzdHJ1Y3Qg
Q0dGb2N1c1JpbmdTdHlsZSBDR0ZvY3VzUmluZ1N0eWxlOworCit0eXBlZGVmIENGX0VOVU0odWlu
dDMyX3QsIENHU05vdGlmaWNhdGlvblR5cGUpIHsKKyAgICBrQ0dTRmlyc3RDb25uZWN0aW9uTm90
aWZpY2F0aW9uID0gOTAwLAorICAgIGtDR1NGaXJzdFNlc3Npb25Ob3RpZmljYXRpb24gPSAxNTAw
LAorfTsKKworc3RhdGljIGNvbnN0IENHU05vdGlmaWNhdGlvblR5cGUga0NHU0Nvbm5lY3Rpb25X
aW5kb3dNb2RpZmljYXRpb25zU3RhcnRlZCA9IChDR1NOb3RpZmljYXRpb25UeXBlKShrQ0dTRmly
c3RDb25uZWN0aW9uTm90aWZpY2F0aW9uICsgNik7CitzdGF0aWMgY29uc3QgQ0dTTm90aWZpY2F0
aW9uVHlwZSBrQ0dTQ29ubmVjdGlvbldpbmRvd01vZGlmaWNhdGlvbnNTdG9wcGVkID0gKENHU05v
dGlmaWNhdGlvblR5cGUpKGtDR1NGaXJzdENvbm5lY3Rpb25Ob3RpZmljYXRpb24gKyA3KTsKK3N0
YXRpYyBjb25zdCBDR1NOb3RpZmljYXRpb25UeXBlIGtDR1Nlc3Npb25Db25zb2xlQ29ubmVjdCA9
IGtDR1NGaXJzdFNlc3Npb25Ob3RpZmljYXRpb247CitzdGF0aWMgY29uc3QgQ0dTTm90aWZpY2F0
aW9uVHlwZSBrQ0dTZXNzaW9uQ29uc29sZURpc2Nvbm5lY3QgPSAoQ0dTTm90aWZpY2F0aW9uVHlw
ZSkoa0NHU2Vzc2lvbkNvbnNvbGVDb25uZWN0ICsgMSk7CisKKyNlbmRpZiAvLyBQTEFURk9STShD
T0NPQSkKIAogI2VuZGlmIC8vIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCiAKKyNpZiBQTEFURk9S
TShDT0NPQSkKK3R5cGVkZWYgdWludDMyX3QgQ0dTQnl0ZUNvdW50OwordHlwZWRlZiB1aW50MzJf
dCBDR1NDb25uZWN0aW9uSUQ7Cit0eXBlZGVmIHVpbnQzMl90IENHU1dpbmRvd0NvdW50OwordHlw
ZWRlZiB1aW50MzJfdCBDR1NXaW5kb3dJRDsKKwordHlwZWRlZiBDR1NXaW5kb3dJRCogQ0dTV2lu
ZG93SURMaXN0OwordHlwZWRlZiBzdHJ1Y3QgQ0ZfQlJJREdFRF9UWVBFKGlkKSBDR1NSZWdpb25P
YmplY3QqIENHU1JlZ2lvbk9iajsKK3R5cGVkZWYgc3RydWN0IENGX0JSSURHRURfVFlQRShpZCkg
Q0dTdHlsZSogQ0dTdHlsZVJlZjsKKwordHlwZWRlZiB2b2lkKiBDR1NOb3RpZmljYXRpb25Bcmc7
Cit0eXBlZGVmIHZvaWQqIENHU05vdGlmaWNhdGlvbkRhdGE7CisKK3R5cGVkZWYgdm9pZCAoKkNH
U05vdGlmeUNvbm5lY3Rpb25Qcm9jUHRyKShDR1NOb3RpZmljYXRpb25UeXBlLCB2b2lkKiBkYXRh
LCB1aW50MzJfdCBkYXRhX2xlbmd0aCwgdm9pZCogYXJnLCBDR1NDb25uZWN0aW9uSUQpOwordHlw
ZWRlZiB2b2lkICgqQ0dTTm90aWZ5UHJvY1B0cikoQ0dTTm90aWZpY2F0aW9uVHlwZSwgdm9pZCog
ZGF0YSwgdWludDMyX3QgZGF0YV9sZW5ndGgsIHZvaWQqIGFyZyk7CisjZW5kaWYKKwogV1RGX0VY
VEVSTl9DX0JFR0lOCiAKIENHQ29sb3JSZWYgQ0dDb2xvclRyYW5zZm9ybUNvbnZlcnRDb2xvcihD
R0NvbG9yVHJhbnNmb3JtUmVmLCBDR0NvbG9yUmVmLCBDR0NvbG9yUmVuZGVyaW5nSW50ZW50KTsK
QEAgLTE4Niw2ICsyMzksOCBAQCBDR0RhdGFQcm92aWRlclJlZiBDR1BERkRvY3VtZW50R2V0RGF0
YVByb3ZpZGVyKENHUERGRG9jdW1lbnRSZWYpOwogCiBDR0ZvbnRBbnRpYWxpYXNpbmdTdHlsZSBD
R0NvbnRleHRHZXRGb250QW50aWFsaWFzaW5nU3R5bGUoQ0dDb250ZXh0UmVmKTsKIHZvaWQgQ0dD
b250ZXh0U2V0Rm9udEFudGlhbGlhc2luZ1N0eWxlKENHQ29udGV4dFJlZiwgQ0dGb250QW50aWFs
aWFzaW5nU3R5bGUpOworYm9vbCBDR0NvbnRleHREcmF3c1dpdGhDb3JyZWN0U2hhZG93T2Zmc2V0
cyhDR0NvbnRleHRSZWYpOworQ0dQYXR0ZXJuUmVmIENHUGF0dGVybkNyZWF0ZVdpdGhJbWFnZTIo
Q0dJbWFnZVJlZiwgQ0dBZmZpbmVUcmFuc2Zvcm0sIENHUGF0dGVyblRpbGluZyk7CiAKICNpZiAo
UExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTIw
MCkgfHwgUExBVEZPUk0oSU9TKQogYm9vbCBDR0NvbG9yU3BhY2VVc2VzRXh0ZW5kZWRSYW5nZShD
R0NvbG9yU3BhY2VSZWYpOwpAQCAtMjAzLDEwICsyNTgsMjEgQEAgQ0dDb2xvclNwYWNlUmVmIENH
SU9TdXJmYWNlQ29udGV4dEdldENvbG9yU3BhY2UoQ0dDb250ZXh0UmVmKTsKICNlbmRpZgogCiAj
aWYgUExBVEZPUk0oQ09DT0EpCi1DR1NSZWdpb25FbnVtZXJhdG9yT2JqIENHU1JlZ2lvbkVudW1l
cmF0b3IoQ0dSZWdpb25SZWYpOwotQ0dSZWN0KiBDR1NOZXh0UmVjdChjb25zdCBDR1NSZWdpb25F
bnVtZXJhdG9yT2JqKTsKLUNHRXJyb3IgQ0dTUmVsZWFzZVJlZ2lvbkVudW1lcmF0b3IoY29uc3Qg
Q0dTUmVnaW9uRW51bWVyYXRvck9iaik7CiBDR0NvbG9yU3BhY2VSZWYgQ0dDb250ZXh0Q29weURl
dmljZUNvbG9yU3BhY2UoQ0dDb250ZXh0UmVmKTsKK0NHRXJyb3IgQ0dTTmV3UmVnaW9uV2l0aFJl
Y3QoY29uc3QgQ0dSZWN0KiwgQ0dSZWdpb25SZWYqKTsKK0NHRXJyb3IgQ0dTUGFja2FnZXNFbmFi
bGVDb25uZWN0aW9uT2NjbHVzaW9uTm90aWZpY2F0aW9ucyhDR1NDb25uZWN0aW9uSUQsIGJvb2wg
ZmxhZywgYm9vbCogb3V0Q3VycmVudFZpc2liaWxpdHlTdGF0ZSk7CitDR0Vycm9yIENHU1BhY2th
Z2VzRW5hYmxlQ29ubmVjdGlvbldpbmRvd01vZGlmaWNhdGlvbk5vdGlmaWNhdGlvbnMoQ0dTQ29u
bmVjdGlvbklELCBib29sIGZsYWcsIGJvb2wqIG91dENvbm5lY3Rpb25Jc0N1cnJlbnRseUlkbGUp
OworQ0dFcnJvciBDR1NSZWdpc3RlckNvbm5lY3Rpb25Ob3RpZnlQcm9jKENHU0Nvbm5lY3Rpb25J
RCwgQ0dTTm90aWZ5Q29ubmVjdGlvblByb2NQdHIsIENHU05vdGlmaWNhdGlvblR5cGUsIHZvaWQq
IGFyZyk7CitDR0Vycm9yIENHU1JlZ2lzdGVyTm90aWZ5UHJvYyhDR1NOb3RpZnlQcm9jUHRyLCBD
R1NOb3RpZmljYXRpb25UeXBlLCB2b2lkKiBhcmcpOworQ0dFcnJvciBDR1NSZWxlYXNlUmVnaW9u
KGNvbnN0IENHUmVnaW9uUmVmIENGX1JFTEVBU0VTX0FSR1VNRU5UKTsKK0NHRXJyb3IgQ0dTUmVs
ZWFzZVJlZ2lvbkVudW1lcmF0b3IoY29uc3QgQ0dTUmVnaW9uRW51bWVyYXRvck9iaik7CitDR0Vy
cm9yIENHU1NldFdpbmRvd0FscGhhKENHU0Nvbm5lY3Rpb25JRCwgQ0dTV2luZG93SUQsIGZsb2F0
IGFscGhhKTsKK0NHRXJyb3IgQ0dTU2V0V2luZG93Q2xpcFNoYXBlKENHU0Nvbm5lY3Rpb25JRCwg
Q0dTV2luZG93SUQsIENHUmVnaW9uUmVmIHNoYXBlKTsKK0NHRXJyb3IgQ0dTU2V0V2luZG93V2Fy
cChDR1NDb25uZWN0aW9uSUQsIENHU1dpbmRvd0lELCBpbnQgdywgaW50IGgsIGNvbnN0IGZsb2F0
KiBtZXNoKTsKK0NHUmVjdCogQ0dTTmV4dFJlY3QoY29uc3QgQ0dTUmVnaW9uRW51bWVyYXRvck9i
aik7CitDR1NSZWdpb25FbnVtZXJhdG9yT2JqIENHU1JlZ2lvbkVudW1lcmF0b3IoQ0dSZWdpb25S
ZWYpOworQ0dTdHlsZVJlZiBDR1N0eWxlQ3JlYXRlRm9jdXNSaW5nV2l0aENvbG9yKGNvbnN0IENH
Rm9jdXNSaW5nU3R5bGUqLCBDR0NvbG9yUmVmKTsKK3ZvaWQgQ0dDb250ZXh0U2V0U3R5bGUoQ0dD
b250ZXh0UmVmLCBDR1N0eWxlUmVmKTsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oV0lOKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvbWFjL0hJU2VydmljZXNTUEkuaCBi
L1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL21hYy9ISVNlcnZpY2VzU1BJLmgKaW5kZXggOWYz
NWRjZDRkMDNhNTdhMDg2YjBhMzY1ZGZiMzlkZGZmY2M4MTk4NS4uYTM1NWI5NGZlNjMwOTJlZjVh
Y2QwYjVjOTVlMDNkZDQ2ZTk1MzgxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML3Bh
bC9zcGkvbWFjL0hJU2VydmljZXNTUEkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3Nw
aS9tYWMvSElTZXJ2aWNlc1NQSS5oCkBAIC0yOCwyMSArMjgsNDUgQEAKICNpZiBVU0UoQVBQTEVf
SU5URVJOQUxfU0RLKQogCiAjaW5jbHVkZSA8SElTZXJ2aWNlcy9BWFRleHRNYXJrZXIuaD4KKyNp
bmNsdWRlIDxISVNlcnZpY2VzL0NvcmVEcmFnLmg+CisKKyNlbHNlCisKK2VudW0geworICAgIGtD
b3JlRHJhZ0ltYWdlU3BlY1ZlcnNpb25PbmUgPSAxLAorfTsKKworc3RydWN0IENvcmVEcmFnSW1h
Z2VTcGVjIHsKKyAgICBVSW50MzIgdmVyc2lvbjsKKyAgICBTSW50MzIgcGl4ZWxzV2lkZTsKKyAg
ICBTSW50MzIgcGl4ZWxzSGlnaDsKKyAgICBTSW50MzIgYml0c1BlclNhbXBsZTsKKyAgICBTSW50
MzIgc2FtcGxlc1BlclBpeGVsOworICAgIFNJbnQzMiBiaXRzUGVyUGl4ZWw7CisgICAgU0ludDMy
IGJ5dGVzUGVyUm93OworICAgIEJvb2xlYW4gaXNQbGFuYXI7CisgICAgQm9vbGVhbiBoYXNBbHBo
YTsKKyAgICBjb25zdCBVSW50OCogZGF0YVs1XTsKK307CiAKICNlbmRpZgogCi10eXBlZGVmIGNv
bnN0IHN0cnVjdCBfX0FYVGV4dE1hcmtlciAqQVhUZXh0TWFya2VyUmVmOwotdHlwZWRlZiBjb25z
dCBzdHJ1Y3QgX19BWFRleHRNYXJrZXJSYW5nZSAqQVhUZXh0TWFya2VyUmFuZ2VSZWY7Cit0eXBl
ZGVmIGNvbnN0IHN0cnVjdCBfX0FYVGV4dE1hcmtlciogQVhUZXh0TWFya2VyUmVmOwordHlwZWRl
ZiBjb25zdCBzdHJ1Y3QgX19BWFRleHRNYXJrZXJSYW5nZSogQVhUZXh0TWFya2VyUmFuZ2VSZWY7
Cit0eXBlZGVmIHN0cnVjdCBDb3JlRHJhZ0ltYWdlU3BlYyBDb3JlRHJhZ0ltYWdlU3BlYzsKK3R5
cGVkZWYgc3RydWN0IE9wYXF1ZUNvcmVEcmFnKiBDb3JlRHJhZ1JlZjsKIAogV1RGX0VYVEVSTl9D
X0JFR0lOCiAKLUNGVHlwZUlEIEFYVGV4dE1hcmtlckdldFR5cGVJRCgpOwotQ0ZUeXBlSUQgQVhU
ZXh0TWFya2VyUmFuZ2VHZXRUeXBlSUQoKTsKLUFYVGV4dE1hcmtlclJlZiBBWFRleHRNYXJrZXJD
cmVhdGUoQ0ZBbGxvY2F0b3JSZWYsIGNvbnN0IFVJbnQ4KiBieXRlcywgQ0ZJbmRleCBsZW5ndGgp
OwotQ0ZJbmRleCBBWFRleHRNYXJrZXJHZXRMZW5ndGgoQVhUZXh0TWFya2VyUmVmKTsKLWNvbnN0
IFVJbnQ4KiBBWFRleHRNYXJrZXJHZXRCeXRlUHRyKEFYVGV4dE1hcmtlclJlZik7CiBBWFRleHRN
YXJrZXJSYW5nZVJlZiBBWFRleHRNYXJrZXJSYW5nZUNyZWF0ZShDRkFsbG9jYXRvclJlZiwgQVhU
ZXh0TWFya2VyUmVmIHN0YXJ0TWFya2VyLCBBWFRleHRNYXJrZXJSZWYgZW5kTWFya2VyKTsKK0FY
VGV4dE1hcmtlclJlZiBBWFRleHRNYXJrZXJDcmVhdGUoQ0ZBbGxvY2F0b3JSZWYsIGNvbnN0IFVJ
bnQ4KiBieXRlcywgQ0ZJbmRleCBsZW5ndGgpOwogQVhUZXh0TWFya2VyUmVmIEFYVGV4dE1hcmtl
clJhbmdlQ29weVN0YXJ0TWFya2VyKEFYVGV4dE1hcmtlclJhbmdlUmVmKTsKIEFYVGV4dE1hcmtl
clJlZiBBWFRleHRNYXJrZXJSYW5nZUNvcHlFbmRNYXJrZXIoQVhUZXh0TWFya2VyUmFuZ2VSZWYp
OworQ0ZJbmRleCBBWFRleHRNYXJrZXJHZXRMZW5ndGgoQVhUZXh0TWFya2VyUmVmKTsKK0NGVHlw
ZUlEIEFYVGV4dE1hcmtlckdldFR5cGVJRCgpOworQ0ZUeXBlSUQgQVhUZXh0TWFya2VyUmFuZ2VH
ZXRUeXBlSUQoKTsKK0NvcmVEcmFnUmVmIENvcmVEcmFnR2V0Q3VycmVudERyYWcoKTsKK09TU3Rh
dHVzIENvcmVEcmFnU2V0SW1hZ2UoQ29yZURyYWdSZWYsIENHUG9pbnQgaW1hZ2VPZmZzZXQsIENv
cmVEcmFnSW1hZ2VTcGVjKiwgQ0dTUmVnaW9uT2JqIGltYWdlU2hhcGUsIGZsb2F0IG92ZXJhbGxB
bHBoYSk7Citjb25zdCBVSW50OCogQVhUZXh0TWFya2VyR2V0Qnl0ZVB0cihBWFRleHRNYXJrZXJS
ZWYpOwogCiBXVEZfRVhURVJOX0NfRU5ECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwv
cGFsL3NwaS9tYWMvTlNHcmFwaGljc1NQSS5oIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkv
bWFjL05TR3JhcGhpY3NTUEkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zNzEwNDZmODcwMmFkM2YyYTgxODU1Yjlh
OTRhZTJjNmEyYTBiOGU5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3Bh
bC9zcGkvbWFjL05TR3JhcGhpY3NTUEkuaApAQCAtMCwwICsxLDU5IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I3ByYWdtYSBvbmNlCisKKyNpZiBQTEFURk9STShNQUMpCisKKyNpbXBvcnQgPEFwcEtpdC9BcHBL
aXQuaD4KKworI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCisKKyNpbXBvcnQgPEFwcEtpdC9O
U0dyYXBoaWNzQ29udGV4dFByaXZhdGUuaD4KKyNpbXBvcnQgPEFwcEtpdC9OU0dyYXBoaWNzX1By
aXZhdGUuaD4KKworI2Vsc2UKKworI2ltcG9ydCA8cGFsL3NwaS9jZy9Db3JlR3JhcGhpY3NTUEku
aD4KKworQGludGVyZmFjZSBOU0NHU0NvbnRleHQgOiBOU0dyYXBoaWNzQ29udGV4dCB7CisgICAg
Q0dDb250ZXh0UmVmIF9jZ3NDb250ZXh0OworfQorQGVuZAorCitAaW50ZXJmYWNlIE5TV2luZG93
R3JhcGhpY3NDb250ZXh0IDogTlNDR1NDb250ZXh0IHsKKyAgICBDR1NXaW5kb3dJRCBfY2dzV2lu
ZG93SUQ7Cit9CitAZW5kCisKKyNlbmRpZgorCitXVEZfRVhURVJOX0NfQkVHSU4KKworQk9PTCBO
U0luaXRpYWxpemVDR0ZvY3VzUmluZ1N0eWxlRm9yVGltZShOU0ZvY3VzUmluZ1BsYWNlbWVudCwg
Q0dGb2N1c1JpbmdTdHlsZSosIE5TVGltZUludGVydmFsKTsKKworV1RGX0VYVEVSTl9DX0VORAor
CisjZW5kaWYgLy8gUExBVEZPUk0oTUFDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAppbmRleCAxOGFjZGRiZTdlZmZmYTQyOWQxODU3
ODM5YWI2ZTY2NzQ2NmEzZDg1Li5jMTRiMmE1NWU2YWE3ZjkwZDIwMDNjNDY2ODQzNDMyMmUwODU0
NTlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c0NvbnRleHQuaApAQCAtNDQ1LDYgKzQ0NSw3IEBAIHB1YmxpYzoKICNpZiBQTEFURk9STShNQUMp
CiAgICAgdm9pZCBkcmF3Rm9jdXNSaW5nKGNvbnN0IFBhdGgmLCBkb3VibGUgdGltZU9mZnNldCwg
Ym9vbCYgbmVlZHNSZWRyYXcpOwogICAgIHZvaWQgZHJhd0ZvY3VzUmluZyhjb25zdCBWZWN0b3I8
RmxvYXRSZWN0PiYsIGRvdWJsZSB0aW1lT2Zmc2V0LCBib29sJiBuZWVkc1JlZHJhdyk7CisgICAg
c3RhdGljIENHQ29sb3JSZWYgZm9jdXNSaW5nQ29sb3IoKTsKICNlbmRpZgogCiAgICAgdm9pZCBz
ZXRMaW5lQ2FwKExpbmVDYXApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2VTb3VyY2UuY3BwCmluZGV4IDY2OTZjOTYwYTU4NzVmMDQzMTcyOWIxMTlhYjZiMjQx
MjdkN2E1Y2EuLjAyMjhlMzkyOWEyNjZlYTk3MzJiYmE4ZWU2MDU3M2ZhNTA5YTM1MGUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAKQEAg
LTE4NCw3ICsxODQsNyBAQCBTdWJzYW1wbGluZ0xldmVsIEltYWdlU291cmNlOjpzdWJzYW1wbGlu
Z0xldmVsRm9yU2NhbGVGYWN0b3IoR3JhcGhpY3NDb250ZXh0JiBjbwogewogI2lmIFVTRShDRykK
ICAgICAvLyBOZXZlciB1c2Ugc3Vic2FtcGxlZCBpbWFnZXMgZm9yIGRyYXdpbmcgaW50byBQREYg
Y29udGV4dHMuCi0gICAgaWYgKHdrQ0dDb250ZXh0SXNQREZDb250ZXh0KGNvbnRleHQucGxhdGZv
cm1Db250ZXh0KCkpKQorICAgIGlmIChDR0NvbnRleHRHZXRUeXBlKGNvbnRleHQucGxhdGZvcm1D
b250ZXh0KCkpID09IGtDR0NvbnRleHRUeXBlUERGKQogICAgICAgICByZXR1cm4gU3Vic2FtcGxp
bmdMZXZlbDo6RGVmYXVsdDsKIAogICAgIGZsb2F0IHNjYWxlID0gc3RkOjptaW4oZmxvYXQoMSks
IHN0ZDo6bWF4KHNjYWxlRmFjdG9yLndpZHRoKCksIHNjYWxlRmFjdG9yLmhlaWdodCgpKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0Nv
bnRleHRDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGlj
c0NvbnRleHRDRy5jcHAKaW5kZXggZDU4ODM5YWU1OGJiNTEwZDUwN2Q0NjViMDYxOTJlMDIwYmFk
NWFiZC4uNThlNTI3ODg2MmI3M2VlMGU0ZWNlOTU3ZGM0YjU3ZDk1Y2VlMjVlZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29u
dGV4dENHLmNwcApAQCAtOTg3LDcgKzk4Nyw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpjbGlw
T3V0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKICAgICAvLyBoYXMgY2VydGFpbiB0cmFuc2Zvcm1z
IHRoYXQgYXJlbid0IGp1c3QgYSB0cmFuc2xhdGlvbiBvciBhIHNjYWxlLiBBbmQgZHVlIHRvIDxy
ZGFyOi8vcHJvYmxlbS8xNDYzNDQ1Mz4KICAgICAvLyB3ZSBjYW5ub3QgdXNlIGl0IGluIGZvciBh
IHByaW50aW5nIGNvbnRleHQgZWl0aGVyLgogICAgIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgY3Rt
ID0gZ2V0Q1RNKCk7Ci0gICAgYm9vbCBjYW5Vc2VDR1JlY3RJbmZpbml0ZSA9ICF3a0NHQ29udGV4
dElzUERGQ29udGV4dChwbGF0Zm9ybUNvbnRleHQoKSkgJiYgKCFpc0FjY2VsZXJhdGVkQ29udGV4
dCgpIHx8ICghY3RtLmIoKSAmJiAhY3RtLmMoKSkpOworICAgIGJvb2wgY2FuVXNlQ0dSZWN0SW5m
aW5pdGUgPSBDR0NvbnRleHRHZXRUeXBlKHBsYXRmb3JtQ29udGV4dCgpKSAhPSBrQ0dDb250ZXh0
VHlwZVBERiAmJiAoIWlzQWNjZWxlcmF0ZWRDb250ZXh0KCkgfHwgKCFjdG0uYigpICYmICFjdG0u
YygpKSk7CiAgICAgQ0dSZWN0IHJlY3RzWzJdID0geyBjYW5Vc2VDR1JlY3RJbmZpbml0ZSA/IENH
UmVjdEluZmluaXRlIDogQ0dDb250ZXh0R2V0Q2xpcEJvdW5kaW5nQm94KHBsYXRmb3JtQ29udGV4
dCgpKSwgcmVjdCB9OwogICAgIENHQ29udGV4dEJlZ2luUGF0aChwbGF0Zm9ybUNvbnRleHQoKSk7
CiAgICAgQ0dDb250ZXh0QWRkUmVjdHMocGxhdGZvcm1Db250ZXh0KCksIHJlY3RzLCAyKTsKQEAg
LTEwODUsNyArMTA4NSw3IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0OjpzdXBwb3J0c1RyYW5zcGFy
ZW5jeUxheWVycygpCiAKIHN0YXRpYyB2b2lkIGFwcGx5U2hhZG93T2Zmc2V0V29ya2Fyb3VuZElm
TmVlZGVkKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgQ0dGbG9hdCYgeE9mZnNldCwg
Q0dGbG9hdCYgeU9mZnNldCkKIHsKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9T
KSB8fCBQTEFURk9STShXSU4pCiAgICAgVU5VU0VEX1BBUkFNKGNvbnRleHQpOwogICAgIFVOVVNF
RF9QQVJBTSh4T2Zmc2V0KTsKICAgICBVTlVTRURfUEFSQU0oeU9mZnNldCk7CkBAIC0xMDkzLDcg
KzEwOTMsNyBAQCBzdGF0aWMgdm9pZCBhcHBseVNoYWRvd09mZnNldFdvcmthcm91bmRJZk5lZWRl
ZChjb25zdCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsCiAgICAgaWYgKGNvbnRleHQuaXNBY2Nl
bGVyYXRlZENvbnRleHQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKHdrQ0dDb250ZXh0
RHJhd3NXaXRoQ29ycmVjdFNoYWRvd09mZnNldHMoY29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKSkp
CisgICAgaWYgKENHQ29udGV4dERyYXdzV2l0aENvcnJlY3RTaGFkb3dPZmZzZXRzKGNvbnRleHQu
cGxhdGZvcm1Db250ZXh0KCkpKQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBXb3JrIGFyb3Vu
ZCA8cmRhcjovL3Byb2JsZW0vNTUzOTM4OD4gYnkgZW5zdXJpbmcgdGhhdCB0aGUgb2Zmc2V0cyB3
aWxsIGdldCB0cnVuY2F0ZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NnL1BhdHRlcm5DRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9QYXR0ZXJuQ0cuY3BwCmluZGV4IDk4ZTY5ZGU4ZWQ4OWEyNGU4ODZhMTQyYTA4Mzk1OWUy
YzcyMTM1ZjAuLmQwZTIxYzg3M2FhMmRjMzBjNTNjYzhiYWI0ZjhiMDQxNDM0MDAwOTggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BhdHRlcm5DRy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGF0dGVybkNHLmNwcApA
QCAtMzEsOCArMzEsOCBAQAogCiAjaW5jbHVkZSAiQWZmaW5lVHJhbnNmb3JtLmgiCiAjaW5jbHVk
ZSAiR3JhcGhpY3NDb250ZXh0LmgiCi0KICNpbmNsdWRlIDxDb3JlR3JhcGhpY3MvQ29yZUdyYXBo
aWNzLmg+CisjaW5jbHVkZSA8cGFsL3NwaS9jZy9Db3JlR3JhcGhpY3NTUEkuaD4KICNpbmNsdWRl
IDx3dGYvTWFpblRocmVhZC5oPgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCkBAIC03NCw3ICs3NCw3
IEBAIENHUGF0dGVyblJlZiBQYXR0ZXJuOjpjcmVhdGVQbGF0Zm9ybVBhdHRlcm4oY29uc3QgQWZm
aW5lVHJhbnNmb3JtJiB1c2VyU3BhY2VUcmFuCiAgICAgLy8gSWYgd2UncmUgcmVwZWF0aW5nIGlu
IGJvdGggZGlyZWN0aW9ucywgd2UgY2FuIHVzZSBpbWFnZS1iYWNrZWQgcGF0dGVybnMKICAgICAv
LyBpbnN0ZWFkIG9mIGN1c3RvbSBwYXR0ZXJucywgYW5kIGF2b2lkIHRpbGluZy1lZGdlIHBpeGVs
IGNyYWNrcy4KICAgICBpZiAobV9yZXBlYXRYICYmIG1fcmVwZWF0WSkKLSAgICAgICAgcmV0dXJu
IHdrQ0dQYXR0ZXJuQ3JlYXRlV2l0aEltYWdlQW5kVHJhbnNmb3JtKHRpbGVJbWFnZSgpLm5hdGl2
ZUltYWdlKCkuZ2V0KCksIHBhdHRlcm5UcmFuc2Zvcm0sIHdrUGF0dGVyblRpbGluZ0NvbnN0YW50
U3BhY2luZyk7CisgICAgICAgIHJldHVybiBDR1BhdHRlcm5DcmVhdGVXaXRoSW1hZ2UyKHRpbGVJ
bWFnZSgpLm5hdGl2ZUltYWdlKCkuZ2V0KCksIHBhdHRlcm5UcmFuc2Zvcm0sIGtDR1BhdHRlcm5U
aWxpbmdDb25zdGFudFNwYWNpbmcpOwogCiAgICAgLy8gSWYgRkxUX01BWCBzaG91bGQgYWxzbyBi
ZSB1c2VkIGZvciB4U3RlcCBvciB5U3RlcCwgbm90aGluZyBpcyByZW5kZXJlZC4gVXNpbmcgZnJh
Y3Rpb25zIG9mIEZMVF9NQVggYWxzbwogICAgIC8vIHJlc3VsdCBpbiBub3RoaW5nIGJlaW5nIHJl
bmRlcmVkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29j
b2EvR3JhcGhpY3NDb250ZXh0Q29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRDb2NvYS5tbQppbmRleCA2N2Y0ZGViMTcyYjZjMGZl
MjNjMWIxZDFmYjA5ZWFiOGFkYWUxMzFiLi42NTEyMGZlZmM5NmVkOGViYWJiZmM1NmMwNTFhYTg5
OWI0OGJiZjNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
b2NvYS9HcmFwaGljc0NvbnRleHRDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRDb2NvYS5tbQpAQCAtMjksMTAgKzI5LDEz
IEBACiAjaW1wb3J0ICJHcmFwaGljc0NvbnRleHRDRy5oIgogI2ltcG9ydCAiR3JhcGhpY3NDb250
ZXh0UGxhdGZvcm1Qcml2YXRlQ0cuaCIKICNpbXBvcnQgIkludFJlY3QuaCIKKyNpbXBvcnQgPHBh
bC9zcGkvY2cvQ29yZUdyYXBoaWNzU1BJLmg+CisjaW1wb3J0IDxwYWwvc3BpL21hYy9OU0dyYXBo
aWNzU1BJLmg+CisjaW1wb3J0IDx3dGYvU3RkTGliRXh0cmFzLmg+CisKICNpZiBVU0UoQVBQS0lU
KQogI2ltcG9ydCA8QXBwS2l0L0FwcEtpdC5oPgogI2VuZGlmCi0jaW1wb3J0IDx3dGYvU3RkTGli
RXh0cmFzLmg+CiAKICNpZiBQTEFURk9STShJT1MpCiAjaW1wb3J0ICJDb2xvci5oIgpAQCAtNDMs
NyArNDYsNiBAQAogI2lmICFQTEFURk9STShJT1MpCiAjaW1wb3J0ICJMb2NhbEN1cnJlbnRHcmFw
aGljc0NvbnRleHQuaCIKICNlbmRpZgotI2ltcG9ydCAiV2ViQ29yZVN5c3RlbUludGVyZmFjZS5o
IgogCiBAY2xhc3MgTlNDb2xvcjsKIApAQCAtNTcsMTEgKzU5LDQ4IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIC8vIGV4Y2VwdGlvbnMgZm9yIHRob3NlLgogCiAjaWYgIVBMQVRGT1JNKElPUykKK0NH
Q29sb3JSZWYgR3JhcGhpY3NDb250ZXh0Ojpmb2N1c1JpbmdDb2xvcigpCit7CisgICAgc3RhdGlj
IENHQ29sb3JSZWYgY29sb3I7CisgICAgaWYgKCFjb2xvcikgeworICAgICAgICBDR0Zsb2F0IGNv
bG9yQ29tcG9uZW50c1tdID0geyAwLjUsIDAuNzUsIDEuMCwgMS4wIH07CisgICAgICAgIGF1dG8g
Y29sb3JTcGFjZSA9IGFkb3B0Q0YoQ0dDb2xvclNwYWNlQ3JlYXRlV2l0aE5hbWUoa0NHQ29sb3JT
cGFjZVNSR0IpKTsKKyAgICAgICAgY29sb3IgPSBDR0NvbG9yQ3JlYXRlKGNvbG9yU3BhY2UuZ2V0
KCksIGNvbG9yQ29tcG9uZW50cyk7CisgICAgfQorCisgICAgcmV0dXJuIGNvbG9yOworfQorCitz
dGF0aWMgYm9vbCBkcmF3Rm9jdXNSaW5nQXRUaW1lKENHQ29udGV4dFJlZiBjb250ZXh0LCBOU1Rp
bWVJbnRlcnZhbCB0aW1lT2Zmc2V0KQoreworICAgIENHRm9jdXNSaW5nU3R5bGUgZm9jdXNSaW5n
U3R5bGU7CisgICAgQk9PTCBuZWVkc1JlcGFpbnQgPSBOU0luaXRpYWxpemVDR0ZvY3VzUmluZ1N0
eWxlRm9yVGltZShOU0ZvY3VzUmluZ09ubHksICZmb2N1c1JpbmdTdHlsZSwgdGltZU9mZnNldCk7
CisKKyAgICAvLyBXZSB3YW50IHRvIHJlc3BlY3QgdGhlIENHQ29udGV4dCBjbGlwcGluZyBhbmQg
YWxzbyBub3Qgb3ZlcnBhaW50IGFueQorICAgIC8vIGV4aXN0aW5nIGZvY3VzIHJpbmcuIFRoZSB3
YXkgdG8gZG8gdGhpcyBpcyBzZXQgYWNjdW11bGF0ZSB0bworICAgIC8vIC0xLiBBY2NvcmRpbmcg
dG8gQ29yZUdyYXBoaWNzLCB0aGUgcmVhc29uaW5nIGZvciB0aGlzIGJlaGF2aW9yIGhhcyBiZWVu
CisgICAgLy8gbG9zdCBpbiB0aW1lLgorICAgIGZvY3VzUmluZ1N0eWxlLmFjY3VtdWxhdGUgPSAt
MTsKKyAgICBhdXRvIHN0eWxlID0gYWRvcHRDRihDR1N0eWxlQ3JlYXRlRm9jdXNSaW5nV2l0aENv
bG9yKCZmb2N1c1JpbmdTdHlsZSwgR3JhcGhpY3NDb250ZXh0Ojpmb2N1c1JpbmdDb2xvcigpKSk7
CisKKyAgICBDR0NvbnRleHRTYXZlR1N0YXRlKGNvbnRleHQpOworICAgIENHQ29udGV4dFNldFN0
eWxlKGNvbnRleHQsIHN0eWxlLmdldCgpKTsKKyAgICBDR0NvbnRleHRGaWxsUGF0aChjb250ZXh0
KTsKKyAgICBDR0NvbnRleHRSZXN0b3JlR1N0YXRlKGNvbnRleHQpOworCisgICAgcmV0dXJuIG5l
ZWRzUmVwYWludDsKK30KKworc3RhdGljIHZvaWQgZHJhd0ZvY3VzUmluZyhDR0NvbnRleHRSZWYg
Y29udGV4dCkKK3sKKyAgICBkcmF3Rm9jdXNSaW5nQXRUaW1lKGNvbnRleHQsIHN0ZDo6bnVtZXJp
Y19saW1pdHM8ZG91YmxlPjo6bWF4KCkpOworfQorCiBzdGF0aWMgdm9pZCBkcmF3Rm9jdXNSaW5n
VG9Db250ZXh0KENHQ29udGV4dFJlZiBjb250ZXh0LCBDR1BhdGhSZWYgZm9jdXNSaW5nUGF0aCkK
IHsKICAgICBDR0NvbnRleHRCZWdpblBhdGgoY29udGV4dCk7CiAgICAgQ0dDb250ZXh0QWRkUGF0
aChjb250ZXh0LCBmb2N1c1JpbmdQYXRoKTsKLSAgICB3a0RyYXdGb2N1c1JpbmcoY29udGV4dCwg
bnVsbHB0ciwgMCk7CisgICAgZHJhd0ZvY3VzUmluZyhjb250ZXh0KTsKIH0KIAogc3RhdGljIGJv
b2wgZHJhd0ZvY3VzUmluZ1RvQ29udGV4dEF0VGltZShDR0NvbnRleHRSZWYgY29udGV4dCwgQ0dQ
YXRoUmVmIGZvY3VzUmluZ1BhdGgsIGRvdWJsZSB0aW1lT2Zmc2V0KQpAQCAtNjksNyArMTA4LDcg
QEAgc3RhdGljIGJvb2wgZHJhd0ZvY3VzUmluZ1RvQ29udGV4dEF0VGltZShDR0NvbnRleHRSZWYg
Y29udGV4dCwgQ0dQYXRoUmVmIGZvY3VzUmkKICAgICBVTlVTRURfUEFSQU0odGltZU9mZnNldCk7
CiAgICAgQ0dDb250ZXh0QmVnaW5QYXRoKGNvbnRleHQpOwogICAgIENHQ29udGV4dEFkZFBhdGgo
Y29udGV4dCwgZm9jdXNSaW5nUGF0aCk7Ci0gICAgcmV0dXJuIHdrRHJhd0ZvY3VzUmluZ0F0VGlt
ZShjb250ZXh0LCBzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46Om1heCgpKTsKKyAgICByZXR1
cm4gZHJhd0ZvY3VzUmluZ0F0VGltZShjb250ZXh0LCBzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJs
ZT46Om1heCgpKTsKIH0KICNlbmRpZiAvLyAhUExBVEZPUk0oSU9TKQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViQ29yZVN5c3RlbUludGVyZmFjZUlPUy5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlSU9TLm1t
CmluZGV4IDA5YTE4MjgxNGQxNDAxM2I3Yzg4ZThlZWJmMDNkOWFlMGNmYTI4NjkuLjc1N2QwNDVm
NWM1ODU0NDQ5NmYyZGQ2OTA1MGJkMWFmODY4YzJlZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2lvcy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlSU9TLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlSU9TLm1tCkBAIC0y
NywxMCArMjcsOCBAQAogI2ltcG9ydCAiV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oIgogCiBXRUJD
T1JFX0VYUE9SVCB2b2lkICgqd2tDQUxheWVyRW51bWVyYXRlUmVjdHNCZWluZ0RyYXduV2l0aEJs
b2NrKShDQUxheWVyICosIENHQ29udGV4dFJlZiBjb250ZXh0LCB2b2lkICheYmxvY2spKENHUmVj
dCByZWN0KSk7Ci1XRUJDT1JFX0VYUE9SVCBDR1BhdHRlcm5SZWYgKCp3a0NHUGF0dGVybkNyZWF0
ZVdpdGhJbWFnZUFuZFRyYW5zZm9ybSkoQ0dJbWFnZVJlZiwgQ0dBZmZpbmVUcmFuc2Zvcm0sIGlu
dCk7CiBXRUJDT1JFX0VYUE9SVCB2b2lkICgqd2tDbGVhckdseXBoVmVjdG9yKSh2b2lkKiBnbHlw
aHMpOwogV0VCQ09SRV9FWFBPUlQgT1NTdGF0dXMgKCp3a0NvbnZlcnRDaGFyVG9HbHlwaHMpKHZv
aWQqIHN0eWxlR3JvdXAsIGNvbnN0IFVuaUNoYXIqLCB1bnNpZ25lZCBudW1DaGFyYWN0ZXJzLCB2
b2lkKiBnbHlwaHMpOwotV0VCQ09SRV9FWFBPUlQgYm9vbCAoKndrQ0dDb250ZXh0SXNQREZDb250
ZXh0KShDR0NvbnRleHRSZWYpOwogV0VCQ09SRV9FWFBPUlQgaWQgKCp3a0NyZWF0ZU5TVVJMQ29u
bmVjdGlvbkRlbGVnYXRlUHJveHkpKHZvaWQpOwogV0VCQ09SRV9FWFBPUlQgdm9pZCAoKndrU2V0
Q09OTkVDVFByb3h5Rm9yU3RyZWFtKShDRlJlYWRTdHJlYW1SZWYsIENGU3RyaW5nUmVmIHByb3h5
SG9zdCwgQ0ZOdW1iZXJSZWYgcHJveHlQb3J0KTsKIFdFQkNPUkVfRVhQT1JUIHZvaWQgKCp3a1Nl
dENPTk5FQ1RQcm94eUF1dGhvcml6YXRpb25Gb3JTdHJlYW0pKENGUmVhZFN0cmVhbVJlZiwgQ0ZT
dHJpbmdSZWYgcHJveHlBdXRob3JpemF0aW9uU3RyaW5nKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0KaW5kZXggMjBlNjM1YzA5MDVhZTg5NmM3YmI1NDIx
Yzg1NmIyMWIyYTQ0NmI0OS4uYTM4NzBjZTRkZTk4MDFjZTg2NGM0YTQ0MWJhMDYwZmEwMDgyNmI1
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0KQEAg
LTUyLDYgKzUyLDggQEAKICNpbXBvcnQgIldlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaCIKICNpbXBv
cnQgIldlYk5TQXR0cmlidXRlZFN0cmluZ0V4dHJhcy5oIgogI2ltcG9ydCAibWFya3VwLmgiCisj
aW1wb3J0IDxwYWwvc3BpL2NnL0NvcmVHcmFwaGljc1NQSS5oPgorI2ltcG9ydCA8cGFsL3NwaS9t
YWMvSElTZXJ2aWNlc1NQSS5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogI2ltcG9ydCA8
d3RmL1N0ZExpYkV4dHJhcy5oPgogI2ltcG9ydCA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgpA
QCAtNjY5LDYgKzY3MSw4MCBAQCBWZWN0b3I8U3RyaW5nPiBQYXN0ZWJvYXJkOjpyZWFkRmlsZW5h
bWVzKCkKIH0KIAogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCitzdGF0aWMgdm9pZCBmbGlwSW1h
Z2VTcGVjKENvcmVEcmFnSW1hZ2VTcGVjKiBpbWFnZVNwZWMpCit7CisgICAgdW5zaWduZWQgY2hh
ciogdGVtcFJvdyA9ICh1bnNpZ25lZCBjaGFyKilmYXN0TWFsbG9jKGltYWdlU3BlYy0+Ynl0ZXNQ
ZXJSb3cpOworICAgIGludCBwbGFuZXMgPSBpbWFnZVNwZWMtPmlzUGxhbmFyID8gaW1hZ2VTcGVj
LT5zYW1wbGVzUGVyUGl4ZWwgOiAxOworCisgICAgZm9yIChpbnQgcCA9IDA7IHAgPCBwbGFuZXM7
ICsrcCkgeworICAgICAgICB1bnNpZ25lZCBjaGFyKiB0b3BSb3cgPSAodW5zaWduZWQgY2hhciop
aW1hZ2VTcGVjLT5kYXRhW3BdOworICAgICAgICB1bnNpZ25lZCBjaGFyKiBib3RSb3cgPSB0b3BS
b3cgKyAoaW1hZ2VTcGVjLT5waXhlbHNIaWdoIC0gMSkgKiBpbWFnZVNwZWMtPmJ5dGVzUGVyUm93
OworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGltYWdlU3BlYy0+cGl4ZWxzSGlnaCAvIDI7
ICsraSwgdG9wUm93ICs9IGltYWdlU3BlYy0+Ynl0ZXNQZXJSb3csIGJvdFJvdyAtPSBpbWFnZVNw
ZWMtPmJ5dGVzUGVyUm93KSB7CisgICAgICAgICAgICBiY29weSh0b3BSb3csIHRlbXBSb3csIGlt
YWdlU3BlYy0+Ynl0ZXNQZXJSb3cpOworICAgICAgICAgICAgYmNvcHkoYm90Um93LCB0b3BSb3cs
IGltYWdlU3BlYy0+Ynl0ZXNQZXJSb3cpOworICAgICAgICAgICAgYmNvcHkodGVtcFJvdywgYm90
Um93LCBpbWFnZVNwZWMtPmJ5dGVzUGVyUm93KTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGZh
c3RGcmVlKHRlbXBSb3cpOworfQorCitzdGF0aWMgdm9pZCBzZXREcmFnSW1hZ2VJbXBsKE5TSW1h
Z2UgKmltYWdlLCBOU1BvaW50IG9mZnNldCkKK3sKKyAgICBib29sIGZsaXBJbWFnZTsKKyAgICBO
U1NpemUgaW1hZ2VTaXplID0gaW1hZ2Uuc2l6ZTsKKyAgICBDR1JlY3QgaW1hZ2VSZWN0ID0gQ0dS
ZWN0TWFrZSgwLCAwLCBpbWFnZVNpemUud2lkdGgsIGltYWdlU2l6ZS5oZWlnaHQpOworICAgIE5T
SW1hZ2VSZXAgKmltYWdlUmVwID0gW2ltYWdlIGJlc3RSZXByZXNlbnRhdGlvbkZvclJlY3Q6TlNS
ZWN0RnJvbUNHUmVjdChpbWFnZVJlY3QpIGNvbnRleHQ6bmlsIGhpbnRzOm5pbF07CisgICAgUmV0
YWluUHRyPE5TQml0bWFwSW1hZ2VSZXA+IGJpdG1hcEltYWdlOworICAgIGlmICghaW1hZ2VSZXAg
fHwgIVtpbWFnZVJlcCBpc0tpbmRPZkNsYXNzOltOU0JpdG1hcEltYWdlUmVwIGNsYXNzXV0gfHwg
IU5TRXF1YWxTaXplcyhpbWFnZVJlcC5zaXplLCBpbWFnZVNpemUpKSB7CisgICAgICAgIFtpbWFn
ZSBsb2NrRm9jdXNdOworICAgICAgICBiaXRtYXBJbWFnZSA9IGFkb3B0TlMoW1tOU0JpdG1hcElt
YWdlUmVwIGFsbG9jXSBpbml0V2l0aEZvY3VzZWRWaWV3UmVjdDoqKE5TUmVjdCopJmltYWdlUmVj
dF0pOworICAgICAgICBbaW1hZ2UgdW5sb2NrRm9jdXNdOworICAgICAgICAKKyAgICAgICAgLy8g
d2UgbWF5IGhhdmUgdG8gZmxpcCB0aGUgYml0cyB3ZSBqdXN0IHJlYWQgaWYgdGhlIGltYWdlIHdh
cyBmbGlwcGVkIHNpbmNlIGl0IG1lYW5zIHRoZSBjYWNoZSB3YXMgYWxzbworICAgICAgICAvLyBh
bmQgQ29yZURyYWdTZXRJbWFnZSBjYW4ndCB0YWtlIGEgdHJhbnNmb3JtIGZvciByZW5kZXJpbmcu
CisjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcHVzaAorI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGlj
IGlnbm9yZWQgIi1XZGVwcmVjYXRlZC1kZWNsYXJhdGlvbnMiCisgICAgICAgIGZsaXBJbWFnZSA9
IGltYWdlLmlzRmxpcHBlZDsKKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwb3AKKyAgICB9IGVs
c2UgeworICAgICAgICBmbGlwSW1hZ2UgPSBmYWxzZTsKKyAgICAgICAgYml0bWFwSW1hZ2UgPSAo
TlNCaXRtYXBJbWFnZVJlcCAqKWltYWdlUmVwOworICAgIH0KKyAgICBBU1NFUlQoYml0bWFwSW1h
Z2UpOworCisgICAgQ29yZURyYWdJbWFnZVNwZWMgaW1hZ2VTcGVjOworICAgIGltYWdlU3BlYy52
ZXJzaW9uID0ga0NvcmVEcmFnSW1hZ2VTcGVjVmVyc2lvbk9uZTsKKyAgICBpbWFnZVNwZWMucGl4
ZWxzV2lkZSA9IFtiaXRtYXBJbWFnZSBwaXhlbHNXaWRlXTsKKyAgICBpbWFnZVNwZWMucGl4ZWxz
SGlnaCA9IFtiaXRtYXBJbWFnZSBwaXhlbHNIaWdoXTsKKyAgICBpbWFnZVNwZWMuYml0c1BlclNh
bXBsZSA9IFtiaXRtYXBJbWFnZSBiaXRzUGVyU2FtcGxlXTsKKyAgICBpbWFnZVNwZWMuc2FtcGxl
c1BlclBpeGVsID0gW2JpdG1hcEltYWdlIHNhbXBsZXNQZXJQaXhlbF07CisgICAgaW1hZ2VTcGVj
LmJpdHNQZXJQaXhlbCA9IFtiaXRtYXBJbWFnZSBiaXRzUGVyUGl4ZWxdOworICAgIGltYWdlU3Bl
Yy5ieXRlc1BlclJvdyA9IFtiaXRtYXBJbWFnZSBieXRlc1BlclJvd107CisgICAgaW1hZ2VTcGVj
LmlzUGxhbmFyID0gW2JpdG1hcEltYWdlIGlzUGxhbmFyXTsKKyAgICBpbWFnZVNwZWMuaGFzQWxw
aGEgPSBbYml0bWFwSW1hZ2UgaGFzQWxwaGFdOworICAgIFtiaXRtYXBJbWFnZSBnZXRCaXRtYXBE
YXRhUGxhbmVzOih1bnNpZ25lZCBjaGFyKiopaW1hZ2VTcGVjLmRhdGFdOworCisgICAgLy8gaWYg
aW1hZ2Ugd2FzIGZsaXBwZWQsIHdlIGhhdmUgYW4gdXBzaWRlIGRvd24gYml0bWFwIHNpbmNlIHRo
ZSBjYWNoZSBpcyByZW5kZXJlZCBmbGlwcGVkCisgICAgaWYgKGZsaXBJbWFnZSkKKyAgICAgICAg
ZmxpcEltYWdlU3BlYygmaW1hZ2VTcGVjKTsKKworICAgIENHU1JlZ2lvbk9iaiBpbWFnZVNoYXBl
OworICAgIE9TU3RhdHVzIGVycm9yID0gQ0dTTmV3UmVnaW9uV2l0aFJlY3QoJmltYWdlUmVjdCwg
JmltYWdlU2hhcGUpOworICAgIEFTU0VSVChlcnJvciA9PSBrQ0dFcnJvclN1Y2Nlc3MpOworICAg
IGlmIChlcnJvciAhPSBrQ0dFcnJvclN1Y2Nlc3MpCisgICAgICAgIHJldHVybjsKKworICAgIC8v
IG1ha2Ugc3VyZSBpbWFnZSBoYXMgaW50ZWdlciBvZmZzZXQKKyAgICBDR1BvaW50IGltYWdlT2Zm
c2V0ID0geyAtb2Zmc2V0LngsIC0oaW1hZ2VTaXplLmhlaWdodCAtIG9mZnNldC55KSB9OworICAg
IGltYWdlT2Zmc2V0LnggPSBmbG9vcihpbWFnZU9mZnNldC54ICsgMC41KTsKKyAgICBpbWFnZU9m
ZnNldC55ID0gZmxvb3IoaW1hZ2VPZmZzZXQueSArIDAuNSk7CisKKyAgICBlcnJvciA9IENvcmVE
cmFnU2V0SW1hZ2UoQ29yZURyYWdHZXRDdXJyZW50RHJhZygpLCBpbWFnZU9mZnNldCwgJmltYWdl
U3BlYywgaW1hZ2VTaGFwZSwgMS4wKTsKKyAgICBDR1NSZWxlYXNlUmVnaW9uKGltYWdlU2hhcGUp
OworICAgIEFTU0VSVChlcnJvciA9PSBrQ0dFcnJvclN1Y2Nlc3MpOworfQorCiB2b2lkIFBhc3Rl
Ym9hcmQ6OnNldERyYWdJbWFnZShEcmFnSW1hZ2UgaW1hZ2UsIGNvbnN0IEludFBvaW50JiBsb2Nh
dGlvbikKIHsKICAgICAvLyBEb24ndCBhbGxvdyBzZXR0aW5nIHRoZSBkcmFnIGltYWdlIGlmIHNv
bWVvbmUga2VwdCBhIHBhc3RlYm9hcmQgYW5kIGlzIHRyeWluZyB0byBzZXQgdGhlIGltYWdlIHRv
byBsYXRlLgpAQCAtNjc3LDcgKzc1Myw3IEBAIHZvaWQgUGFzdGVib2FyZDo6c2V0RHJhZ0ltYWdl
KERyYWdJbWFnZSBpbWFnZSwgY29uc3QgSW50UG9pbnQmIGxvY2F0aW9uKQogCiAgICAgLy8gRGFz
aGJvYXJkIHdhbnRzIHRvIGJlIGFibGUgdG8gc2V0IHRoZSBkcmFnIGltYWdlIGR1cmluZyBkcmFn
Z2luZywgYnV0IENvY29hIGRvZXMgbm90IGFsbG93IHRoaXMuCiAgICAgLy8gSW5zdGVhZCB3ZSBt
dXN0IGRyb3AgZG93biB0byB0aGUgQ29yZUdyYXBoaWNzIEFQSS4KLSAgICB3a1NldERyYWdJbWFn
ZShpbWFnZS5nZXQoKS5nZXQoKSwgbG9jYXRpb24pOworICAgIHNldERyYWdJbWFnZUltcGwoaW1h
Z2UuZ2V0KCkuZ2V0KCksIGxvY2F0aW9uKTsKIAogICAgIC8vIEhhY2s6IFdlIG11c3QgcG9zdCBh
biBldmVudCB0byB3YWtlIHVwIHRoZSBOU0RyYWdNYW5hZ2VyLCB3aGljaCBpcyBzaXR0aW5nIGlu
IGEgbmV4dEV2ZW50IGNhbGwKICAgICAvLyB1cCB0aGUgc3RhY2sgZnJvbSB1cyBiZWNhdXNlIHRo
ZSBDb3JlRm91bmRhdGlvbiBkcmFnIG1hbmFnZXIgZG9lcyBub3QgdXNlIHRoZSBydW4gbG9vcCBi
eSBpdHNlbGYuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZv
cm1FdmVudEZhY3RvcnlNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZv
cm1FdmVudEZhY3RvcnlNYWMubW0KaW5kZXggNzdiOWNiOTYzNWJiZmIwYmMyYzU0NTQwYmZmNjQw
NTE3MWI3YzU1OS4uOTI5YWE1NzU4ZjNlMWRiY2NjNTkwMDE4OTI5N2ViMTVlNTcwMTE4NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtRXZlbnRGYWN0b3J5
TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybUV2ZW50RmFj
dG9yeU1hYy5tbQpAQCAtNjc2LDcgKzY3Niw3IEBAIHN0YXRpYyBpbnQgdHlwZUZvckV2ZW50KE5T
RXZlbnQgKmV2ZW50KQogewogICAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KFtOU01lbnUgbWVu
dVR5cGVGb3JFdmVudDpldmVudF0pOwogfQotICAgIAorCiB2b2lkIGdldFdoZWVsRXZlbnREZWx0
YXMoTlNFdmVudCAqZXZlbnQsIGZsb2F0JiBkZWx0YVgsIGZsb2F0JiBkZWx0YVksIEJPT0wmIGNv
bnRpbnVvdXMpCiB7CiAgICAgQVNTRVJUKGV2ZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21hYy9TY3JvbGxiYXJUaGVtZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21hYy9TY3JvbGxiYXJUaGVtZU1hYy5tbQppbmRleCBjNGMyODc3NjgzNTc0OTZhZWIy
ODhmYTQxZjBkZDk1ZDJkN2NjMjg4Li42ZDA1Yjg2YzYzZDA1ZjdiNmQxNDczMTdlZmQyN2ZmMzQx
NTgzMTkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsYmFy
VGhlbWVNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbGJhclRo
ZW1lTWFjLm1tCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAiU2Nyb2xsVmlldy5oIgogI2lu
Y2x1ZGUgIldlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaCIKICNpbmNsdWRlIDxDYXJib24vQ2FyYm9u
Lmg+CisjaW5jbHVkZSA8cGFsL3NwaS9jZy9Db3JlR3JhcGhpY3NTUEkuaD4KICNpbmNsdWRlIDxw
YWwvc3BpL21hYy9OU1Njcm9sbGVySW1wU1BJLmg+CiAjaW5jbHVkZSA8d3RmL0Jsb2NrT2JqQ0V4
Y2VwdGlvbnMuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgpAQCAtNTczLDcgKzU3NCw3IEBA
IHN0YXRpYyBSZXRhaW5QdHI8Q0dDb2xvclJlZj4gbGluZW5CYWNrZ3JvdW5kQ29sb3IoKQogICAg
IGlmICghY2dJbWFnZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBSZXRhaW5QdHI8
Q0dQYXR0ZXJuUmVmPiBwYXR0ZXJuID0gYWRvcHRDRih3a0NHUGF0dGVybkNyZWF0ZVdpdGhJbWFn
ZUFuZFRyYW5zZm9ybShjZ0ltYWdlLCBDR0FmZmluZVRyYW5zZm9ybUlkZW50aXR5LCB3a1BhdHRl
cm5UaWxpbmdOb0Rpc3RvcnRpb24pKTsKKyAgICBSZXRhaW5QdHI8Q0dQYXR0ZXJuUmVmPiBwYXR0
ZXJuID0gYWRvcHRDRihDR1BhdHRlcm5DcmVhdGVXaXRoSW1hZ2UyKGNnSW1hZ2UsIENHQWZmaW5l
VHJhbnNmb3JtSWRlbnRpdHksIGtDR1BhdHRlcm5UaWxpbmdOb0Rpc3RvcnRpb24pKTsKICAgICBS
ZXRhaW5QdHI8Q0dDb2xvclNwYWNlUmVmPiBjb2xvclNwYWNlID0gYWRvcHRDRihDR0NvbG9yU3Bh
Y2VDcmVhdGVQYXR0ZXJuKDApKTsKIAogICAgIGNvbnN0IENHRmxvYXQgYWxwaGEgPSAxLjA7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvVGhlbWVNYWMubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvVGhlbWVNYWMubW0KaW5kZXggOTBmMTA0MWVmZjdmMGM2
NDdkNmY4MzkxYzAyN2Y1M2QxYWI0NDcxNC4uNWNkZTU0ODhhOWYxMDA1NmRmZDI0NTIwMWQyMjBk
NjRiM2IzMTJhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1RoZW1l
TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9UaGVtZU1hYy5tbQpAQCAt
MzYsNiArMzYsNyBAQAogI2ltcG9ydCAiV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oIgogI2ltcG9y
dCA8Q2FyYm9uL0NhcmJvbi5oPgogI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9OU0J1dHRvbkNlbGxT
UEkuaD4KKyNpbXBvcnQgPHBhbC9zcGkvbWFjL05TR3JhcGhpY3NTUEkuaD4KICNpbXBvcnQgPHd0
Zi9CbG9ja09iakNFeGNlcHRpb25zLmg+CiAjaW1wb3J0IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4K
ICNpbXBvcnQgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KQEAgLTM0OSw5ICszNTAsMzIgQEAgc3RhdGlj
IE5TQnV0dG9uQ2VsbCAqc2hhcmVkQ2hlY2tib3hDZWxsKGNvbnN0IENvbnRyb2xTdGF0ZXMmIHN0
YXRlcywgY29uc3QgSW50U2kKICAgICByZXR1cm4gY2hlY2tib3hDZWxsOwogfQogCitzdGF0aWMg
Ym9vbCBkcmF3Q2VsbEZvY3VzUmluZ1dpdGhGcmFtZUF0VGltZShOU0NlbGwgKmNlbGwsIE5TUmVj
dCBjZWxsRnJhbWUsIE5TVmlldyAqY29udHJvbFZpZXcsIE5TVGltZUludGVydmFsIHRpbWVPZmZz
ZXQpCit7CisgICAgQ0dDb250ZXh0UmVmIGNnQ29udGV4dCA9IChDR0NvbnRleHRSZWYpW1tOU0dy
YXBoaWNzQ29udGV4dCBjdXJyZW50Q29udGV4dF0gZ3JhcGhpY3NQb3J0XTsKKyAgICBDR0NvbnRl
eHRTYXZlR1N0YXRlKGNnQ29udGV4dCk7CisKKyAgICBDR0ZvY3VzUmluZ1N0eWxlIGZvY3VzUmlu
Z1N0eWxlOworICAgIGJvb2wgbmVlZHNSZXBhaW50ID0gTlNJbml0aWFsaXplQ0dGb2N1c1JpbmdT
dHlsZUZvclRpbWUoTlNGb2N1c1JpbmdPbmx5LCAmZm9jdXNSaW5nU3R5bGUsIHRpbWVPZmZzZXQp
OworICAgIC8vIFdlIHdhbnQgdG8gcmVzcGVjdCB0aGUgQ0dDb250ZXh0IGNsaXBwaW5nIGFuZCBh
bHNvIG5vdCBvdmVycGFpbnQgYW55CisgICAgLy8gZXhpc3RpbmcgZm9jdXMgcmluZy4gVGhlIHdh
eSB0byBkbyB0aGlzIGlzIHNldCBhY2N1bXVsYXRlIHRvCisgICAgLy8gLTEuIEFjY29yZGluZyB0
byBDb3JlR3JhcGhpY3MsIHRoZSByZWFzb25pbmcgZm9yIHRoaXMgYmVoYXZpb3IgaGFzIGJlZW4K
KyAgICAvLyBsb3N0IGluIHRpbWUuCisgICAgZm9jdXNSaW5nU3R5bGUuYWNjdW11bGF0ZSA9IC0x
OworICAgIGF1dG8gc3R5bGUgPSBhZG9wdENGKENHU3R5bGVDcmVhdGVGb2N1c1JpbmdXaXRoQ29s
b3IoJmZvY3VzUmluZ1N0eWxlLCBHcmFwaGljc0NvbnRleHQ6OmZvY3VzUmluZ0NvbG9yKCkpKTsK
KyAgICBDR0NvbnRleHRTZXRTdHlsZShjZ0NvbnRleHQsIHN0eWxlLmdldCgpKTsKKworICAgIENH
Q29udGV4dEJlZ2luVHJhbnNwYXJlbmN5TGF5ZXJXaXRoUmVjdChjZ0NvbnRleHQsIE5TUmVjdFRv
Q0dSZWN0KGNlbGxGcmFtZSksIG51bGxwdHIpOworICAgIFtjZWxsIGRyYXdGb2N1c1JpbmdNYXNr
V2l0aEZyYW1lOmNlbGxGcmFtZSBpblZpZXc6Y29udHJvbFZpZXddOworICAgIENHQ29udGV4dEVu
ZFRyYW5zcGFyZW5jeUxheWVyKGNnQ29udGV4dCk7CisgICAgQ0dDb250ZXh0UmVzdG9yZUdTdGF0
ZShjZ0NvbnRleHQpOworCisgICAgcmV0dXJuIG5lZWRzUmVwYWludDsKK30KKwogc3RhdGljIGJv
b2wgZHJhd0NlbGxGb2N1c1JpbmcoTlNDZWxsICpjZWxsLCBOU1JlY3QgY2VsbEZyYW1lLCBOU1Zp
ZXcgKmNvbnRyb2xWaWV3KQogewotICAgIHdrRHJhd0NlbGxGb2N1c1JpbmdXaXRoRnJhbWVBdFRp
bWUoY2VsbCwgY2VsbEZyYW1lLCBjb250cm9sVmlldywgc3RkOjpudW1lcmljX2xpbWl0czxkb3Vi
bGU+OjptYXgoKSk7CisgICAgZHJhd0NlbGxGb2N1c1JpbmdXaXRoRnJhbWVBdFRpbWUoY2VsbCwg
Y2VsbEZyYW1lLCBjb250cm9sVmlldywgc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjptYXgo
KSk7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tYWMvV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWFjL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaAppbmRleCA4YTEyNDgyN2MwNDA5ZDY2
M2Y3ODFkZjI3YjRlNDNiY2ZhZmJkMjI3Li42NmMwMGI0ODYzMjJmMWY4NDJiNzdiM2VkNmJjNTkx
OGM4ZjZmZDY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29y
ZVN5c3RlbUludGVyZmFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJD
b3JlU3lzdGVtSW50ZXJmYWNlLmgKQEAgLTEyNiwxNCArMTI2LDcgQEAgdHlwZWRlZiBlbnVtIHsK
ICAgICB3a1BhdHRlcm5UaWxpbmdDb25zdGFudFNwYWNpbmcKIH0gd2tQYXR0ZXJuVGlsaW5nOwog
I2lmICFQTEFURk9STShJT1MpCi1leHRlcm4gYm9vbCAoKndrQ0dDb250ZXh0RHJhd3NXaXRoQ29y
cmVjdFNoYWRvd09mZnNldHMpKENHQ29udGV4dFJlZik7Ci0jZW5kaWYKLWV4dGVybiBDR1BhdHRl
cm5SZWYgKCp3a0NHUGF0dGVybkNyZWF0ZVdpdGhJbWFnZUFuZFRyYW5zZm9ybSkoQ0dJbWFnZVJl
ZiwgQ0dBZmZpbmVUcmFuc2Zvcm0sIGludCk7Ci0jaWYgIVBMQVRGT1JNKElPUykKIGV4dGVybiB2
b2lkICgqd2tEcmF3QmV6ZWxlZFRleHRBcmVhKShOU1JlY3QsIEJPT0wgZW5hYmxlZCk7Ci1leHRl
cm4gdm9pZCAoKndrRHJhd0ZvY3VzUmluZykoQ0dDb250ZXh0UmVmLCBDR0NvbG9yUmVmLCBpbnQp
OwotZXh0ZXJuIGJvb2wgKCp3a0RyYXdGb2N1c1JpbmdBdFRpbWUpKENHQ29udGV4dFJlZiwgTlNU
aW1lSW50ZXJ2YWwgdGltZSk7Ci1leHRlcm4gYm9vbCAoKndrRHJhd0NlbGxGb2N1c1JpbmdXaXRo
RnJhbWVBdFRpbWUpKE5TQ2VsbCAqY2VsbCwgTlNSZWN0IGNlbGxGcmFtZSwgTlNWaWV3ICpjb250
cm9sVmlldywgTlNUaW1lSW50ZXJ2YWwgdGltZSk7CiBleHRlcm4gdm9pZCAoKndrRHJhd01lZGlh
U2xpZGVyVHJhY2spKENHQ29udGV4dFJlZiBjb250ZXh0LCBDR1JlY3QgcmVjdCwgZmxvYXQgdGlt
ZUxvYWRlZCwgZmxvYXQgY3VycmVudFRpbWUsCiAgICAgZmxvYXQgZHVyYXRpb24sIHVuc2lnbmVk
IHN0YXRlKTsKIGV4dGVybiB2b2lkICgqd2tEcmF3TWVkaWFVSVBhcnQpKGludCBwYXJ0LCBDR0Nv
bnRleHRSZWYgY29udGV4dCwgQ0dSZWN0IHJlY3QsIHVuc2lnbmVkIHN0YXRlKTsKQEAgLTE1Niw5
ICsxNDksNiBAQCB0eXBlZGVmIGVudW0gewogfSB3a01lZGlhVUlDb250cm9sVHlwZTsKIGV4dGVy
biBOU0NvbnRyb2wgKigqd2tDcmVhdGVNZWRpYVVJQ29udHJvbCkoaW50KTsKIAotZXh0ZXJuIHZv
aWQgKCp3a1dpbmRvd1NldEFscGhhKShOU1dpbmRvdyAqLCBmbG9hdCk7Ci1leHRlcm4gdm9pZCAo
KndrV2luZG93U2V0U2NhbGVkRnJhbWUpKE5TV2luZG93ICosIE5TUmVjdCwgTlNSZWN0KTsKLQog
ZXh0ZXJuIHVuc2lnbmVkICgqd2tRVEluY2x1ZGVPbmx5TW9kZXJuTWVkaWFGaWxlVHlwZXMpKHZv
aWQpOwogZXh0ZXJuIHZvaWQgKCp3a1FUTW92aWVEaXNhYmxlQ29tcG9uZW50KSh1aW50MzJfdFs1
XSk7CiBleHRlcm4gZmxvYXQgKCp3a1FUTW92aWVNYXhUaW1lTG9hZGVkKShRVE1vdmllKik7CkBA
IC0xNzIsOSArMTYyLDcgQEAgZXh0ZXJuIE5TQXJyYXkgKigqd2tRVEdldFNpdGVzSW5NZWRpYURv
d25sb2FkQ2FjaGUpKCk7CiBleHRlcm4gdm9pZCAoKndrUVRDbGVhck1lZGlhRG93bmxvYWRDYWNo
ZUZvclNpdGUpKE5TU3RyaW5nICpzaXRlKTsKIGV4dGVybiB2b2lkICgqd2tRVENsZWFyTWVkaWFE
b3dubG9hZENhY2hlKSgpOwogZXh0ZXJuIHZvaWQgKCp3a1NldENvb2tpZVN0b3JhZ2VQcml2YXRl
QnJvd3NpbmdFbmFibGVkKShCT09MKTsKLWV4dGVybiB2b2lkICgqd2tTZXREcmFnSW1hZ2UpKE5T
SW1hZ2UqLCBOU1BvaW50IG9mZnNldCk7CiAjZW5kaWYKLWV4dGVybiBib29sICgqd2tDR0NvbnRl
eHRJc1BERkNvbnRleHQpKENHQ29udGV4dFJlZik7CiBleHRlcm4gdm9pZCAoKndrU2V0Q09OTkVD
VFByb3h5Rm9yU3RyZWFtKShDRlJlYWRTdHJlYW1SZWYsIENGU3RyaW5nUmVmIHByb3h5SG9zdCwg
Q0ZOdW1iZXJSZWYgcHJveHlQb3J0KTsKIGV4dGVybiB2b2lkICgqd2tTZXRDT05ORUNUUHJveHlB
dXRob3JpemF0aW9uRm9yU3RyZWFtKShDRlJlYWRTdHJlYW1SZWYsIENGU3RyaW5nUmVmIHByb3h5
QXV0aG9yaXphdGlvblN0cmluZyk7CiBleHRlcm4gQ0ZIVFRQTWVzc2FnZVJlZiAoKndrQ29weUNP
Tk5FQ1RQcm94eVJlc3BvbnNlKShDRlJlYWRTdHJlYW1SZWYsIENGVVJMUmVmIHJlc3BvbnNlVVJM
LCBDRlN0cmluZ1JlZiBwcm94eUhvc3QsIENGTnVtYmVyUmVmIHByb3h5UG9ydCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZVN5c3RlbUludGVyZmFjZS5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlLm1t
CmluZGV4IDI3MmI1NTU3ZTIzOWYzYzFlMWQ0NWE5NGZiN2IxZTQ1MzQ2MTdkZjIuLjEzYjg0OTVh
OTBmZWQzYjIwMjNkNTIzZjBjNTRiMTdmZTIwY2UxYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlLm1tCkBAIC0zMSwxMiAr
MzEsNyBAQAogI2ltcG9ydCA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmg+CiAKIHZvaWQgKCp3a0NB
TGF5ZXJFbnVtZXJhdGVSZWN0c0JlaW5nRHJhd25XaXRoQmxvY2spKENBTGF5ZXIgKiwgQ0dDb250
ZXh0UmVmIGNvbnRleHQsIHZvaWQgKF5ibG9jaykoQ0dSZWN0IHJlY3QpKTsKLWJvb2wgKCp3a0NH
Q29udGV4dERyYXdzV2l0aENvcnJlY3RTaGFkb3dPZmZzZXRzKShDR0NvbnRleHRSZWYpOwotQ0dQ
YXR0ZXJuUmVmICgqd2tDR1BhdHRlcm5DcmVhdGVXaXRoSW1hZ2VBbmRUcmFuc2Zvcm0pKENHSW1h
Z2VSZWYsIENHQWZmaW5lVHJhbnNmb3JtLCBpbnQpOwogdm9pZCAoKndrRHJhd0JlemVsZWRUZXh0
QXJlYSkoTlNSZWN0LCBCT09MIGVuYWJsZWQpOwotdm9pZCAoKndrRHJhd0ZvY3VzUmluZykoQ0dD
b250ZXh0UmVmLCBDR0NvbG9yUmVmLCBpbnQpOwotYm9vbCAoKndrRHJhd0ZvY3VzUmluZ0F0VGlt
ZSkoQ0dDb250ZXh0UmVmLCBOU1RpbWVJbnRlcnZhbCk7Ci1ib29sICgqd2tEcmF3Q2VsbEZvY3Vz
UmluZ1dpdGhGcmFtZUF0VGltZSkoTlNDZWxsKiwgTlNSZWN0LCBOU1ZpZXcqLCBOU1RpbWVJbnRl
cnZhbCk7CiB2b2lkICgqd2tEcmF3TWVkaWFTbGlkZXJUcmFjaykoQ0dDb250ZXh0UmVmIGNvbnRl
eHQsIENHUmVjdCByZWN0LCBmbG9hdCB0aW1lTG9hZGVkLCBmbG9hdCBjdXJyZW50VGltZSwKICAg
ICBmbG9hdCBkdXJhdGlvbiwgdW5zaWduZWQgc3RhdGUpOwogQk9PTCAoKndrSGl0VGVzdE1lZGlh
VUlQYXJ0KShpbnQgcGFydCwgQ0dSZWN0IGJvdW5kcywgQ0dQb2ludCBwb2ludCk7CkBAIC00NCw4
ICszOSw2IEBAIHZvaWQgKCp3a0RyYXdNZWRpYVVJUGFydCkoaW50IHBhcnQsIENHQ29udGV4dFJl
ZiBjb250ZXh0LCBDR1JlY3QgcmVjdCwgdW5zaWduZWQKIHZvaWQgKCp3a01lYXN1cmVNZWRpYVVJ
UGFydCkoaW50IHBhcnQsIENHUmVjdCAqYm91bmRzLCBDR1NpemUgKm5hdHVyYWxTaXplKTsKIE5T
VmlldyAqKCp3a0NyZWF0ZU1lZGlhVUlCYWNrZ3JvdW5kVmlldykodm9pZCk7CiBOU0NvbnRyb2wg
Kigqd2tDcmVhdGVNZWRpYVVJQ29udHJvbCkoaW50KTsKLXZvaWQgKCp3a1dpbmRvd1NldEFscGhh
KShOU1dpbmRvdyAqLCBmbG9hdCk7Ci12b2lkICgqd2tXaW5kb3dTZXRTY2FsZWRGcmFtZSkoTlNX
aW5kb3cgKiwgTlNSZWN0LCBOU1JlY3QpOwogTlNUaW1lSW50ZXJ2YWwgKCp3a0dldE5TVVJMUmVz
cG9uc2VDYWxjdWxhdGVkRXhwaXJhdGlvbikoTlNVUkxSZXNwb25zZSAqcmVzcG9uc2UpOwogQk9P
TCAoKndrR2V0TlNVUkxSZXNwb25zZU11c3RSZXZhbGlkYXRlKShOU1VSTFJlc3BvbnNlICpyZXNw
b25zZSk7CiBVSW50OCAoKndrR2V0TlNFdmVudEtleUNoYXIpKE5TRXZlbnQgKik7CkBAIC02Myw4
ICs1Niw2IEBAIE5TQXJyYXkgKigqd2tRVEdldFNpdGVzSW5NZWRpYURvd25sb2FkQ2FjaGUpKCk7
CiB2b2lkICgqd2tRVENsZWFyTWVkaWFEb3dubG9hZENhY2hlRm9yU2l0ZSkoTlNTdHJpbmcgKnNp
dGUpOwogdm9pZCAoKndrUVRDbGVhck1lZGlhRG93bmxvYWRDYWNoZSkoKTsKIAotdm9pZCAoKndr
U2V0RHJhZ0ltYWdlKShOU0ltYWdlKiwgTlNQb2ludCBvZmZzZXQpOwotYm9vbCAoKndrQ0dDb250
ZXh0SXNQREZDb250ZXh0KShDR0NvbnRleHRSZWYpOwogdm9pZCAoKndrU2V0Q09OTkVDVFByb3h5
Rm9yU3RyZWFtKShDRlJlYWRTdHJlYW1SZWYsIENGU3RyaW5nUmVmIHByb3h5SG9zdCwgQ0ZOdW1i
ZXJSZWYgcHJveHlQb3J0KTsKIHZvaWQgKCp3a1NldENPTk5FQ1RQcm94eUF1dGhvcml6YXRpb25G
b3JTdHJlYW0pKENGUmVhZFN0cmVhbVJlZiwgQ0ZTdHJpbmdSZWYgcHJveHlBdXRob3JpemF0aW9u
U3RyaW5nKTsKIENGSFRUUE1lc3NhZ2VSZWYgKCp3a0NvcHlDT05ORUNUUHJveHlSZXNwb25zZSko
Q0ZSZWFkU3RyZWFtUmVmLCBDRlVSTFJlZiByZXNwb25zZVVSTCwgQ0ZTdHJpbmdSZWYgcHJveHlI
b3N0LCBDRk51bWJlclJlZiBwcm94eVBvcnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL1dlYldpbmRvd0FuaW1hdGlvbi5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21hYy9XZWJXaW5kb3dBbmltYXRpb24ubW0KaW5kZXggOGFiYzg0MGI3M2NjNjQ1YzhhYzQw
NmRlYWZhZTk0MjJjZGMzNTNlMi4uNTcyZTE5NmM3ODg2ZGZhZDRjYzc0YTE2MTUzODhlOTNkMjE0
ZGFhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYldpbmRvd0Fu
aW1hdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViV2luZG93QW5p
bWF0aW9uLm1tCkBAIC0yOSw2ICsyOSw3IEBACiAKICNpbXBvcnQgIkZsb2F0Q29udmVyc2lvbi5o
IgogI2ltcG9ydCAiV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oIgorI2ltcG9ydCA8cGFsL3NwaS9j
Zy9Db3JlR3JhcGhpY3NTUEkuaD4KICNpbXBvcnQgPHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW1wb3J0
IDx3dGYvTWF0aEV4dHJhcy5oPgogCkBAIC0xMDksNiArMTEwLDU5IEBAIC0gKE5TUmVjdCljdXJy
ZW50RnJhbWUKICAgICByZXR1cm4gc2NhbGVkUmVjdChfZmluYWxGcmFtZSwgX2luaXRpYWxGcmFt
ZSwgW3NlbGYgY3VycmVudFZhbHVlXSk7CiB9CiAKK3N0YXRpYyB2b2lkIGZsaXBSZWN0KE5TUmVj
dCogcmVjdCkKK3sKKyAgICByZWN0LT5vcmlnaW4ueSA9IE5TTWF4WShbKE5TU2NyZWVuICopW1tO
U1NjcmVlbiBzY3JlZW5zXSBvYmplY3RBdEluZGV4OjBdIGZyYW1lXSkgLSBOU01heFkoKnJlY3Qp
OworfQorCitzdGF0aWMgQ0dTQ29ubmVjdGlvbklEIG1haW5XaW5kb3dTZXJ2ZXJDb25uZWN0aW9u
SUQoKQoreworICAgIHN0YXRpYyBDR1NDb25uZWN0aW9uSUQgY2dzSWQ7CisgICAgaWYgKCFjZ3NJ
ZCkKKyAgICAgICAgY2dzSWQgPSBDR1NNYWluQ29ubmVjdGlvbklEKCk7CisgICAgcmV0dXJuIGNn
c0lkOworfQorCitzdGF0aWMgdm9pZCBzZXRTY2FsZWRGcmFtZUZvcldpbmRvdyhOU1dpbmRvdyAq
d2luZG93LCBOU1JlY3Qgc2NhbGVGcmFtZSwgTlNSZWN0IG5vblNjYWxlZEZyYW1lKQoreworICAg
IGlmIChOU0VxdWFsUmVjdHMoc2NhbGVGcmFtZSwgbm9uU2NhbGVkRnJhbWUpKSB7CisgICAgICAg
IENHU1NldFdpbmRvd1dhcnAobWFpbldpbmRvd1NlcnZlckNvbm5lY3Rpb25JRCgpLCB3aW5kb3cu
d2luZG93TnVtYmVyLCAwLCAwLCBudWxscHRyKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAg
ICAKKyAgICBmbG9hdCBtZXNoWzE2XTsKKyAgICAKKyAgICBmbGlwUmVjdCgmc2NhbGVGcmFtZSk7
CisgICAgZmxpcFJlY3QoJm5vblNjYWxlZEZyYW1lKTsKKyAgICAKKyAgICAvLyB0b3AtbGVmdCBw
b2ludCAodG8gYW5kIGZyb20pCisgICAgbWVzaFswXSA9IDA7CisgICAgbWVzaFsxXSA9IDA7Cisg
ICAgbWVzaFsyXSA9IE5TTWluWChzY2FsZUZyYW1lKTsKKyAgICBtZXNoWzNdID0gTlNNaW5ZKHNj
YWxlRnJhbWUpOworICAgIAorICAgIC8vIHRvcC1yaWdodCBwb2ludCAodG8gYW5kIGZyb20pCisg
ICAgbWVzaFs0XSA9IE5TV2lkdGgobm9uU2NhbGVkRnJhbWUpOworICAgIG1lc2hbNV0gPSAwOwor
ICAgIG1lc2hbNl0gPSBOU01heFgoc2NhbGVGcmFtZSk7CisgICAgbWVzaFs3XSA9IE5TTWluWShz
Y2FsZUZyYW1lKTsKKyAgICAKKyAgICAvLyBib3R0b20tbGVmdCAodG8gYW5kIGZyb20pCisgICAg
bWVzaFs4XSA9IDA7CisgICAgbWVzaFs5XSA9IE5TSGVpZ2h0KG5vblNjYWxlZEZyYW1lKTsKKyAg
ICBtZXNoWzEwXSA9IE5TTWluWChzY2FsZUZyYW1lKTsKKyAgICBtZXNoWzExXSA9IE5TTWF4WShz
Y2FsZUZyYW1lKTsKKyAgICAKKyAgICAvLyBib3R0b20tcmlnaHQgKHRvIGFuZCBmcm9tKQorICAg
IG1lc2hbMTJdID0gTlNXaWR0aChub25TY2FsZWRGcmFtZSk7CisgICAgbWVzaFsxM10gPSBOU0hl
aWdodChub25TY2FsZWRGcmFtZSk7CisgICAgbWVzaFsxNF0gPSBOU01heFgoc2NhbGVGcmFtZSk7
CisgICAgbWVzaFsxNV0gPSBOU01heFkoc2NhbGVGcmFtZSk7CisgICAgCisgICAgLy8gQXBwbHkg
dGhlIHdhcnAuCisgICAgQ0dTU2V0V2luZG93V2FycChtYWluV2luZG93U2VydmVyQ29ubmVjdGlv
bklEKCksIHdpbmRvdy53aW5kb3dOdW1iZXIsIDIsIDIsIG1lc2gpOworfQorCiAtICh2b2lkKXNl
dEN1cnJlbnRQcm9ncmVzczooTlNBbmltYXRpb25Qcm9ncmVzcylwcm9ncmVzcwogewogICAgIGlm
ICghX3dpbmRvdykKQEAgLTExNyw3ICsxNzEsNyBAQCAtICh2b2lkKXNldEN1cnJlbnRQcm9ncmVz
czooTlNBbmltYXRpb25Qcm9ncmVzcylwcm9ncmVzcwogICAgIFtzdXBlciBzZXRDdXJyZW50UHJv
Z3Jlc3M6cHJvZ3Jlc3NdOwogCiAgICAgTlNSZWN0IGN1cnJlbnRSZWN0ID0gW3NlbGYgY3VycmVu
dEZyYW1lXTsKLSAgICB3a1dpbmRvd1NldFNjYWxlZEZyYW1lKF93aW5kb3csIGN1cnJlbnRSZWN0
LCBfcmVhbEZyYW1lKTsKKyAgICBzZXRTY2FsZWRGcmFtZUZvcldpbmRvdyhfd2luZG93LCBjdXJy
ZW50UmVjdCwgX3JlYWxGcmFtZSk7CiAgICAgW19zdWJBbmltYXRpb24gc2V0Q3VycmVudFByb2dy
ZXNzOnByb2dyZXNzXTsKIH0KIApAQCAtMjExLDcgKzI2NSw3IEBAIC0gKHZvaWQpc2V0Q3VycmVu
dFByb2dyZXNzOihOU0FuaW1hdGlvblByb2dyZXNzKXByb2dyZXNzCiAgICAgQVNTRVJUKF93aW5k
b3cpOwogICAgIFtzdXBlciBzZXRDdXJyZW50UHJvZ3Jlc3M6cHJvZ3Jlc3NdOwogCi0gICAgd2tX
aW5kb3dTZXRBbHBoYShfd2luZG93LCBbc2VsZiBjdXJyZW50QWxwaGFdKTsKKyAgICBDR1NTZXRX
aW5kb3dBbHBoYShtYWluV2luZG93U2VydmVyQ29ubmVjdGlvbklEKCksIF93aW5kb3cud2luZG93
TnVtYmVyLCBzZWxmLmN1cnJlbnRBbHBoYSk7CiB9CiAKIC0gKHZvaWQpc2V0V2luZG93OihOU1dp
bmRvdyopd2luZG93CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvbWFj
L1BsdWdpblByb2Nlc3NNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvbWFjL1Bs
dWdpblByb2Nlc3NNYWMubW0KaW5kZXggZDg2MDM3ODY3YTJmMWFmYTI1ZWM1MjYzMDZlMTRkOTY0
Y2Q3N2U2ZC4uMjRkMjZlZDFlNjc0M2FlYzU1N2E4Zjc2NDg5YjY3MzgwNDE3ZmQwNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL21hYy9QbHVnaW5Qcm9jZXNzTWFjLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9tYWMvUGx1Z2luUHJvY2Vzc01hYy5t
bQpAQCAtNDYsNiArNDYsNyBAQAogI2ltcG9ydCA8bWFjaC9tYWNoX3ZtLmg+CiAjaW1wb3J0IDxt
YWNoL3ZtX3N0YXRpc3RpY3MuaD4KICNpbXBvcnQgPG9iamMvcnVudGltZS5oPgorI2ltcG9ydCA8
cGFsL3NwaS9jZy9Db3JlR3JhcGhpY3NTUEkuaD4KICNpbXBvcnQgPHBhbC9zcGkvbWFjL0hJVG9v
bGJveFNQSS5oPgogI2ltcG9ydCA8cGFsL3NwaS9tYWMvTlNXaW5kb3dTUEkuaD4KICNpbXBvcnQg
PHN5c2V4aXRzLmg+CkBAIC01MzEsNyArNTMyLDEwIEBAIHZvaWQgUGx1Z2luUHJvY2Vzczo6cGxh
dGZvcm1Jbml0aWFsaXplUHJvY2Vzcyhjb25zdCBDaGlsZFByb2Nlc3NJbml0aWFsaXphdGlvblBh
CiAKICAgICAvLyBGSVhNRTogSXQgd291bGQgYmUgYmV0dGVyIHRvIHByb3h5IFNldEN1cnNvciBj
YWxscyBvdmVyIHRvIHRoZSBVSSBwcm9jZXNzIGluc3RlYWQgb2YKICAgICAvLyBhbGxvd2luZyBw
bHVnLWlucyB0byBjaGFuZ2UgdGhlIG1vdXNlIGN1cnNvciBhdCBhbnkgdGltZS4KLSAgICBXS0Vu
YWJsZVNldHRpbmdDdXJzb3JXaGVuSW5CYWNrZ3JvdW5kKCk7CisgICAgLy8gRklYTUU6IFNldHND
dXJzb3JJbkJhY2tncm91bmQgY29ubmVjdGlvbiBwcm9wZXJ0eSBpcyBkZXByZWNhdGVkIGluIGZh
dm9yIG9mIGtDR1NTZXRzQ3Vyc29ySW5CYWNrZ3JvdW5kVGFnQml0IHdpbmRvdyB0YWcgYml0Lgor
ICAgIC8vIDxyZGFyOi8vcHJvYmxlbS83NzUyNDIyPiBhc2tzIGZvciBhbiBBUEkgdG8gc2V0IGN1
cnNvciBmcm9tIGJhY2tncm91bmQgcHJvY2Vzc2VzLgorICAgIENHU0Nvbm5lY3Rpb25JRCBjaWQg
PSBDR1NNYWluQ29ubmVjdGlvbklEKCk7CisgICAgQ0dTU2V0Q29ubmVjdGlvblByb3BlcnR5KGNp
ZCwgY2lkLCBDRlNUUigiU2V0c0N1cnNvckluQmFja2dyb3VuZCIpLCAoQ0ZUeXBlUmVmKWtDRkJv
b2xlYW5UcnVlKTsKIAogICAgIFJldGFpblB0cjxDRlVSTFJlZj4gcGx1Z2luVVJMID0gYWRvcHRD
RihDRlVSTENyZWF0ZVdpdGhGaWxlU3lzdGVtUGF0aCgwLCBtX3BsdWdpblBhdGguY3JlYXRlQ0ZT
dHJpbmcoKS5nZXQoKSwga0NGVVJMUE9TSVhQYXRoU3R5bGUsIGZhbHNlKSk7CiAgICAgaWYgKCFw
bHVnaW5VUkwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2luZG93
U2VydmVyQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dpbmRvd1Nl
cnZlckNvbm5lY3Rpb24uaAppbmRleCA4MzhhMzRmYjVjMmQ0NGVlZTU0NjRlNTdlZGM3MGUxMGFk
YmQzYjIwLi5lN2I1MThjNmM1ZWIwYjA2MmQ4OWE5MWNhNzA1NzdiYTg0ZWIwNTExIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2luZG93U2VydmVyQ29ubmVjdGlvbi5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XaW5kb3dTZXJ2ZXJDb25uZWN0aW9u
LmgKQEAgLTQxLDkgKzQxLDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIHdpbmRvd1NlcnZlckNvbm5l
Y3Rpb25TdGF0ZUNoYW5nZWQoKTsKIAogICAgIHZvaWQgYXBwbGljYXRpb25XaW5kb3dNb2RpZmlj
YXRpb25zU3RvcHBlZChib29sIHN0b3BwZWQpOwotCi0gICAgc3RhdGljIHZvaWQgYXBwbGljYXRp
b25XaW5kb3dNb2RpZmljYXRpb25zU3RhcnRlZCh1aW50MzJfdCwgdm9pZCosIHVpbnQzMl90LCB2
b2lkKiwgdWludDMyX3QpOwotICAgIHN0YXRpYyB2b2lkIGFwcGxpY2F0aW9uV2luZG93TW9kaWZp
Y2F0aW9uc1N0b3BwZWQodWludDMyX3QsIHZvaWQqLCB1aW50MzJfdCwgdm9pZCosIHVpbnQzMl90
KTsKICNlbmRpZgogCiAgICAgYm9vbCBtX2FwcGxpY2F0aW9uV2luZG93TW9kaWZpY2F0aW9uc0hh
dmVTdG9wcGVkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dpbmRv
d1NlcnZlckNvbm5lY3Rpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2luZG93
U2VydmVyQ29ubmVjdGlvbi5tbQppbmRleCA4MTk1MzVjMmFjMTI5YzhkNTIxMjE4Yzk3NTVjODRi
NjFkNDRmMjg1Li5hOWU1ZWQ1ZDYwMzZhNTY3NjA2MTUzYmU5NjBhMzRlMWFiMzYwOTQ1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2luZG93U2VydmVyQ29ubmVjdGlv
bi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2luZG93U2VydmVyQ29ubmVj
dGlvbi5tbQpAQCAtMjgsNiArMjgsNyBAQAogCiAjaW1wb3J0ICJXZWJLaXRTeXN0ZW1JbnRlcmZh
Y2UuaCIKICNpbXBvcnQgIldlYlByb2Nlc3NQb29sLmgiCisjaW1wb3J0IDxwYWwvc3BpL2NnL0Nv
cmVHcmFwaGljc1NQSS5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIApAQCAtNDEsMTYgKzQyLDYg
QEAgdm9pZCBXaW5kb3dTZXJ2ZXJDb25uZWN0aW9uOjphcHBsaWNhdGlvbldpbmRvd01vZGlmaWNh
dGlvbnNTdG9wcGVkKGJvb2wgc3RvcHBlZCkKICAgICB3aW5kb3dTZXJ2ZXJDb25uZWN0aW9uU3Rh
dGVDaGFuZ2VkKCk7CiB9CiAKLXZvaWQgV2luZG93U2VydmVyQ29ubmVjdGlvbjo6YXBwbGljYXRp
b25XaW5kb3dNb2RpZmljYXRpb25zU3RhcnRlZCh1aW50MzJfdCwgdm9pZCosIHVpbnQzMl90LCB2
b2lkKiwgdWludDMyX3QpCi17Ci0gICAgV2luZG93U2VydmVyQ29ubmVjdGlvbjo6c2luZ2xldG9u
KCkuYXBwbGljYXRpb25XaW5kb3dNb2RpZmljYXRpb25zU3RvcHBlZChmYWxzZSk7Ci19Ci0KLXZv
aWQgV2luZG93U2VydmVyQ29ubmVjdGlvbjo6YXBwbGljYXRpb25XaW5kb3dNb2RpZmljYXRpb25z
U3RvcHBlZCh1aW50MzJfdCwgdm9pZCosIHVpbnQzMl90LCB2b2lkKiwgdWludDMyX3QpCi17Ci0g
ICAgV2luZG93U2VydmVyQ29ubmVjdGlvbjo6c2luZ2xldG9uKCkuYXBwbGljYXRpb25XaW5kb3dN
b2RpZmljYXRpb25zU3RvcHBlZCh0cnVlKTsKLX0KLQogdm9pZCBXaW5kb3dTZXJ2ZXJDb25uZWN0
aW9uOjp3aW5kb3dTZXJ2ZXJDb25uZWN0aW9uU3RhdGVDaGFuZ2VkKCkKIHsKICAgICBmb3IgKGF1
dG8qIHByb2Nlc3NQb29sIDogV2ViUHJvY2Vzc1Bvb2w6OmFsbFByb2Nlc3NQb29scygpKQpAQCAt
NjUsMjMgKzU2LDQ4IEBAIFdpbmRvd1NlcnZlckNvbm5lY3Rpb24mIFdpbmRvd1NlcnZlckNvbm5l
Y3Rpb246OnNpbmdsZXRvbigpCiAgICAgcmV0dXJuIHdpbmRvd1NlcnZlckNvbm5lY3Rpb247CiB9
CiAKKyNpZiBIQVZFKFdJTkRPV19TRVJWRVJfT0NDTFVTSU9OX05PVElGSUNBVElPTlMpCitzdGF0
aWMgYm9vbCByZWdpc3Rlck9jY2x1c2lvbk5vdGlmaWNhdGlvbkhhbmRsZXIoQ0dTTm90aWZpY2F0
aW9uVHlwZSB0eXBlLCBDR1NOb3RpZnlDb25uZWN0aW9uUHJvY1B0ciBoYW5kbGVyKQoreworICAg
IENHU0Nvbm5lY3Rpb25JRCBtYWluQ29ubmVjdGlvbiA9IENHU01haW5Db25uZWN0aW9uSUQoKTsK
KyAgICBzdGF0aWMgYm9vbCBub3RpZmljYXRpb25zRW5hYmxlZDsKKyAgICBpZiAoIW5vdGlmaWNh
dGlvbnNFbmFibGVkKSB7CisgICAgICAgIGlmIChDR1NQYWNrYWdlc0VuYWJsZUNvbm5lY3Rpb25P
Y2NsdXNpb25Ob3RpZmljYXRpb25zKG1haW5Db25uZWN0aW9uLCB0cnVlLCBudWxscHRyKSAhPSBr
Q0dFcnJvclN1Y2Nlc3MpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGlmIChD
R1NQYWNrYWdlc0VuYWJsZUNvbm5lY3Rpb25XaW5kb3dNb2RpZmljYXRpb25Ob3RpZmljYXRpb25z
KG1haW5Db25uZWN0aW9uLCB0cnVlLCBudWxscHRyKSAhPSBrQ0dFcnJvclN1Y2Nlc3MpCisgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIG5vdGlmaWNhdGlvbnNFbmFibGVkID0gdHJ1
ZTsKKyAgICB9CisKKyAgICByZXR1cm4gQ0dTUmVnaXN0ZXJDb25uZWN0aW9uTm90aWZ5UHJvYyht
YWluQ29ubmVjdGlvbiwgaGFuZGxlciwgdHlwZSwgbnVsbHB0cikgPT0ga0NHRXJyb3JTdWNjZXNz
OworfQorI2VuZGlmCisKIFdpbmRvd1NlcnZlckNvbm5lY3Rpb246OldpbmRvd1NlcnZlckNvbm5l
Y3Rpb24oKQogICAgIDogbV9hcHBsaWNhdGlvbldpbmRvd01vZGlmaWNhdGlvbnNIYXZlU3RvcHBl
ZChmYWxzZSkKIHsKICNpZiBIQVZFKFdJTkRPV19TRVJWRVJfT0NDTFVTSU9OX05PVElGSUNBVElP
TlMpCiAgICAgc3RydWN0IE9jY2x1c2lvbk5vdGlmaWNhdGlvbkhhbmRsZXIgewotICAgICAgICBX
S09jY2x1c2lvbk5vdGlmaWNhdGlvblR5cGUgbm90aWZpY2F0aW9uVHlwZTsKLSAgICAgICAgV0tP
Y2NsdXNpb25Ob3RpZmljYXRpb25IYW5kbGVyIGhhbmRsZXI7CisgICAgICAgIENHU05vdGlmaWNh
dGlvblR5cGUgbm90aWZpY2F0aW9uVHlwZTsKKyAgICAgICAgQ0dTTm90aWZ5Q29ubmVjdGlvblBy
b2NQdHIgaGFuZGxlcjsKICAgICAgICAgY29uc3QgY2hhciogbmFtZTsKICAgICB9OwogCisgICAg
c3RhdGljIGF1dG8gd2luZG93TW9kaWZpY2F0aW9uc1N0YXJ0ZWQgPSBbXShDR1NOb3RpZmljYXRp
b25UeXBlLCB2b2lkKiwgdWludDMyX3QsIHZvaWQqLCBDR1NDb25uZWN0aW9uSUQpIHsKKyAgICAg
ICAgV2luZG93U2VydmVyQ29ubmVjdGlvbjo6c2luZ2xldG9uKCkuYXBwbGljYXRpb25XaW5kb3dN
b2RpZmljYXRpb25zU3RvcHBlZChmYWxzZSk7CisgICAgfTsKKworICAgIHN0YXRpYyBhdXRvIHdp
bmRvd01vZGlmaWNhdGlvbnNTdG9wcGVkID0gW10oQ0dTTm90aWZpY2F0aW9uVHlwZSwgdm9pZCos
IHVpbnQzMl90LCB2b2lkKiwgQ0dTQ29ubmVjdGlvbklEKSB7CisgICAgICAgIFdpbmRvd1NlcnZl
ckNvbm5lY3Rpb246OnNpbmdsZXRvbigpLmFwcGxpY2F0aW9uV2luZG93TW9kaWZpY2F0aW9uc1N0
b3BwZWQodHJ1ZSk7CisgICAgfTsKKwogICAgIHN0YXRpYyBjb25zdCBPY2NsdXNpb25Ob3RpZmlj
YXRpb25IYW5kbGVyIG9jY2x1c2lvbk5vdGlmaWNhdGlvbkhhbmRsZXJzW10gPSB7Ci0gICAgICAg
IHsgV0tPY2NsdXNpb25Ob3RpZmljYXRpb25UeXBlQXBwbGljYXRpb25XaW5kb3dNb2RpZmljYXRp
b25zU3RhcnRlZCwgYXBwbGljYXRpb25XaW5kb3dNb2RpZmljYXRpb25zU3RhcnRlZCwgIkFwcGxp
Y2F0aW9uIFdpbmRvdyBNb2RpZmljYXRpb25zIFN0YXJ0ZWQiIH0sCi0gICAgICAgIHsgV0tPY2Ns
dXNpb25Ob3RpZmljYXRpb25UeXBlQXBwbGljYXRpb25XaW5kb3dNb2RpZmljYXRpb25zU3RvcHBl
ZCwgYXBwbGljYXRpb25XaW5kb3dNb2RpZmljYXRpb25zU3RvcHBlZCwgIkFwcGxpY2F0aW9uIFdp
bmRvdyBNb2RpZmljYXRpb25zIFN0b3BwZWQiIH0sCisgICAgICAgIHsga0NHU0Nvbm5lY3Rpb25X
aW5kb3dNb2RpZmljYXRpb25zU3RhcnRlZCwgd2luZG93TW9kaWZpY2F0aW9uc1N0YXJ0ZWQsICJB
cHBsaWNhdGlvbiBXaW5kb3cgTW9kaWZpY2F0aW9ucyBTdGFydGVkIiB9LAorICAgICAgICB7IGtD
R1NDb25uZWN0aW9uV2luZG93TW9kaWZpY2F0aW9uc1N0b3BwZWQsIHdpbmRvd01vZGlmaWNhdGlv
bnNTdG9wcGVkLCAiQXBwbGljYXRpb24gV2luZG93IE1vZGlmaWNhdGlvbnMgU3RvcHBlZCIgfSwK
ICAgICB9OwogCiAgICAgZm9yIChjb25zdCBhdXRvJiBvY2NsdXNpb25Ob3RpZmljYXRpb25IYW5k
bGVyIDogb2NjbHVzaW9uTm90aWZpY2F0aW9uSGFuZGxlcnMpIHsKLSAgICAgICAgYm9vbCByZXN1
bHQgPSBXS1JlZ2lzdGVyT2NjbHVzaW9uTm90aWZpY2F0aW9uSGFuZGxlcihvY2NsdXNpb25Ob3Rp
ZmljYXRpb25IYW5kbGVyLm5vdGlmaWNhdGlvblR5cGUsIG9jY2x1c2lvbk5vdGlmaWNhdGlvbkhh
bmRsZXIuaGFuZGxlcik7CisgICAgICAgIGJvb2wgcmVzdWx0ID0gcmVnaXN0ZXJPY2NsdXNpb25O
b3RpZmljYXRpb25IYW5kbGVyKG9jY2x1c2lvbk5vdGlmaWNhdGlvbkhhbmRsZXIubm90aWZpY2F0
aW9uVHlwZSwgb2NjbHVzaW9uTm90aWZpY2F0aW9uSGFuZGxlci5oYW5kbGVyKTsKICAgICAgICAg
VU5VU0VEX1BBUkFNKHJlc3VsdCk7CiAgICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0UocmVzdWx0
LCAiUmVnaXN0cmF0aW9uIG9mIFwiJXNcIiBub3RpZmljYXRpb24gaGFuZGxlciBmYWlsZWQuXG4i
LCBvY2NsdXNpb25Ob3RpZmljYXRpb25IYW5kbGVyLm5hbWUpOwogICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViU3lzdGVtSW50
ZXJmYWNlLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9X
ZWJTeXN0ZW1JbnRlcmZhY2UubW0KaW5kZXggZDE4YTQ0MGRkNzI1MzljNmE1Njk0Yjc0NjdmOGE2
OTE4ODUxZDk5ZS4uNWIwOTc5YzY4NWFkMDgwMDJmN2MyYTBmN2I1OGQxN2ZiODZjYTdjNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJT
eXN0ZW1JbnRlcmZhY2UubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L21hYy9XZWJTeXN0ZW1JbnRlcmZhY2UubW0KQEAgLTM3LDIxICszNywxMSBAQCB2b2lk
IEluaXRXZWJDb3JlU3lzdGVtSW50ZXJmYWNlKHZvaWQpCiAgICAgCiAgICAgZGlzcGF0Y2hfb25j
ZSgmaW5pdE9uY2UsIF57CiAgICAgICAgIElOSVQoQ0FMYXllckVudW1lcmF0ZVJlY3RzQmVpbmdE
cmF3bldpdGhCbG9jayk7Ci0gICAgICAgIElOSVQoQ0dQYXR0ZXJuQ3JlYXRlV2l0aEltYWdlQW5k
VHJhbnNmb3JtKTsKLSNpZiAhUExBVEZPUk0oSU9TKQotICAgICAgICBJTklUKENHQ29udGV4dERy
YXdzV2l0aENvcnJlY3RTaGFkb3dPZmZzZXRzKTsKLSNlbmRpZgogICAgICAgICBJTklUKENvcHlD
T05ORUNUUHJveHlSZXNwb25zZSk7CiAjaWYgIVBMQVRGT1JNKElPUykKICAgICAgICAgSU5JVChE
cmF3QmV6ZWxlZFRleHRBcmVhKTsKLSAgICAgICAgSU5JVChEcmF3Rm9jdXNSaW5nKTsKLSAgICAg
ICAgSU5JVChEcmF3Rm9jdXNSaW5nQXRUaW1lKTsKLSAgICAgICAgSU5JVChEcmF3Q2VsbEZvY3Vz
UmluZ1dpdGhGcmFtZUF0VGltZSk7CiAgICAgICAgIElOSVQoRHJhd01lZGlhU2xpZGVyVHJhY2sp
OwogICAgICAgICBJTklUKERyYXdNZWRpYVVJUGFydCk7Ci0jZW5kaWYKLSAgICAgICAgSU5JVChD
R0NvbnRleHRJc1BERkNvbnRleHQpOwotI2lmICFQTEFURk9STShJT1MpCiAgICAgICAgIElOSVQo
R2V0TlNFdmVudEtleUNoYXIpOwogICAgICAgICBJTklUKEhpdFRlc3RNZWRpYVVJUGFydCk7CiAg
ICAgICAgIElOSVQoTWVhc3VyZU1lZGlhVUlQYXJ0KTsKQEAgLTcwLDE2ICs2MCwxMSBAQCB2b2lk
IEluaXRXZWJDb3JlU3lzdGVtSW50ZXJmYWNlKHZvaWQpCiAjZW5kaWYKICAgICAgICAgSU5JVChT
ZXRDT05ORUNUUHJveHlBdXRob3JpemF0aW9uRm9yU3RyZWFtKTsKICAgICAgICAgSU5JVChTZXRD
T05ORUNUUHJveHlGb3JTdHJlYW0pOwotI2lmICFQTEFURk9STShJT1MpCi0gICAgICAgIElOSVQo
U2V0RHJhZ0ltYWdlKTsKLSNlbmRpZgogCiAjaWYgIVBMQVRGT1JNKElPUykKICAgICAgICAgSU5J
VChFeGVjdXRhYmxlV2FzTGlua2VkT25PckJlZm9yZVNub3dMZW9wYXJkKTsKICAgICAgICAgSU5J
VChDb3B5RGVmYXVsdFNlYXJjaFByb3ZpZGVyRGlzcGxheU5hbWUpOwogICAgICAgICBJTklUKEN1
cnNvcik7Ci0gICAgICAgIElOSVQoV2luZG93U2V0U2NhbGVkRnJhbWUpOwotICAgICAgICBJTklU
KFdpbmRvd1NldEFscGhhKTsKICAgICAgICAgSU5JVChTcGVlY2hTeW50aGVzaXNHZXRWb2ljZUlk
ZW50aWZpZXJzKTsKICAgICAgICAgSU5JVChTcGVlY2hTeW50aGVzaXNHZXREZWZhdWx0Vm9pY2VJ
ZGVudGlmaWVyRm9yTG9jYWxlKTsKICAgICAgICAgSU5JVChOU0VsYXN0aWNEZWx0YUZvclRpbWVE
ZWx0YSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DYXJib24vSElXZWJW
aWV3Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2FyYm9uL0hJV2ViVmlldy5tbQppbmRl
eCAzNDU4NWMyNTJjM2IxOGNhY2Q2ZTA3YWQ1ZTk0NDg3NzlkOGJlNDU3Li4xM2JkMmQxMjliMzI3
ZjJlYmU2NDBmOThhNTQ2NWY0MGU4MmYyZTgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9DYXJib24vSElXZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L0NhcmJvbi9ISVdlYlZpZXcubW0KQEAgLTM2LDYgKzM2LDcgQEAKICNpbXBvcnQgIldlYktpdC5o
IgogI2ltcG9ydCA8V2ViS2l0U3lzdGVtSW50ZXJmYWNlLmg+CiAjaW1wb3J0IDxwYWwvc3BpL21h
Yy9OU0V2ZW50U1BJLmg+CisjaW1wb3J0IDxwYWwvc3BpL21hYy9OU0dyYXBoaWNzU1BJLmg+CiAj
aW1wb3J0IDxwYWwvc3BpL21hYy9RdWlja0RyYXdTUEkuaD4KICNpbXBvcnQgPHd0Zi9PYmpjUnVu
dGltZUV4dHJhcy5oPgogCkBAIC04NSw2ICs4NiwyMSBAQCAtIChpbnQpdGFnCiAKIEBlbmQKIAor
QGludGVyZmFjZSBOU1dpbmRvd0dyYXBoaWNzQ29udGV4dCAoKQorLSAodm9pZClfd2ViX3NldEdy
YXBoaWNzUG9ydDooQ0dDb250ZXh0UmVmKWNvbnRleHQ7CitAZW5kCisKK0BpbXBsZW1lbnRhdGlv
biBOU1dpbmRvd0dyYXBoaWNzQ29udGV4dCAoKQorCistICh2b2lkKV93ZWJfc2V0R3JhcGhpY3NQ
b3J0OihDR0NvbnRleHRSZWYpY29udGV4dAoreworICAgIENHQ29udGV4dFJldGFpbihjb250ZXh0
KTsKKyAgICBDR0NvbnRleHRSZWxlYXNlKF9jZ3NDb250ZXh0KTsKKyAgICBfY2dzQ29udGV4dCA9
IGNvbnRleHQ7Cit9CisKK0BlbmQKKwogc3RydWN0IEhJV2ViVmlldwogewogICAgIEhJVmlld1Jl
ZgkJCQkJCQlmVmlld1JlZjsKQEAgLTI5MCw2ICszMDYsMjIgQEAgR2V0QmVoYXZpb3JzKCkKIAly
ZXR1cm4ga0NvbnRyb2xTdXBwb3J0c0RhdGFBY2Nlc3MgfCBrQ29udHJvbFN1cHBvcnRzR2V0UmVn
aW9uIHwga0NvbnRyb2xHZXRzRm9jdXNPbkNsaWNrOwogfQogCitzdGF0aWMgQ0dDb250ZXh0UmVm
IG92ZXJyaWRlQ0dDb250ZXh0KE5TV2luZG93ICp3aW5kb3csIENHQ29udGV4dFJlZiBjb250ZXh0
KQoreworICAgIE5TV2luZG93R3JhcGhpY3NDb250ZXh0ICpncmFwaGljc0NvbnRleHQgPSAoTlNX
aW5kb3dHcmFwaGljc0NvbnRleHQgKil3aW5kb3cuZ3JhcGhpY3NDb250ZXh0OworICAgIENHQ29u
dGV4dFJlZiBzYXZlZENvbnRleHQgPSAoQ0dDb250ZXh0UmVmKWdyYXBoaWNzQ29udGV4dC5ncmFw
aGljc1BvcnQ7CisgICAgQ0dDb250ZXh0UmV0YWluKHNhdmVkQ29udGV4dCk7CisgICAgW2dyYXBo
aWNzQ29udGV4dCBfd2ViX3NldEdyYXBoaWNzUG9ydDpjb250ZXh0XTsKKyAgICByZXR1cm4gc2F2
ZWRDb250ZXh0OworfQorCitzdGF0aWMgdm9pZCByZXN0b3JlQ0dDb250ZXh0KE5TV2luZG93ICp3
aW5kb3csIENHQ29udGV4dFJlZiBzYXZlZENvbnRleHQpCit7CisgICAgTlNXaW5kb3dHcmFwaGlj
c0NvbnRleHQgKmdyYXBoaWNzQ29udGV4dCA9IChOU1dpbmRvd0dyYXBoaWNzQ29udGV4dCAqKXdp
bmRvdy5ncmFwaGljc0NvbnRleHQ7CisgICAgW2dyYXBoaWNzQ29udGV4dCBfd2ViX3NldEdyYXBo
aWNzUG9ydDpzYXZlZENvbnRleHRdOworICAgIENHQ29udGV4dFJlbGVhc2Uoc2F2ZWRDb250ZXh0
KTsKK30KKwogLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAvLyBEcmF3CiAvLy0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KQEAgLTMyMSw3ICszNTMsNyBAQCBEcmF3KCBISVdlYlZpZXcqIGlu
VmlldywgUmduSGFuZGxlIGxpbWl0UmduLCBDR0NvbnRleHRSZWYgaW5Db250ZXh0ICkKIAogCUhJ
Vmlld0dldEJvdW5kcyggaW5WaWV3LT5mVmlld1JlZiwgJmJvdW5kcyApOwogCi0gICAgQ0dDb250
ZXh0UmVmIHNhdmVkQ29udGV4dCA9IFdLTlNXaW5kb3dPdmVycmlkZUNHQ29udGV4dChpblZpZXct
PmZLaXRXaW5kb3csIGluQ29udGV4dCk7CisgICAgQ0dDb250ZXh0UmVmIHNhdmVkQ29udGV4dCA9
IG92ZXJyaWRlQ0dDb250ZXh0KGluVmlldy0+ZktpdFdpbmRvdywgaW5Db250ZXh0KTsKICAgICBb
TlNHcmFwaGljc0NvbnRleHQgc2V0Q3VycmVudENvbnRleHQ6W2luVmlldy0+ZktpdFdpbmRvdyBn
cmFwaGljc0NvbnRleHRdXTsKIAogCUdldFJlZ2lvbkJvdW5kcyggbGltaXRSZ24sICZkcmF3UmVj
dCApOwpAQCAtMzUxLDcgKzM4Myw3IEBAIERyYXcoIEhJV2ViVmlldyogaW5WaWV3LCBSZ25IYW5k
bGUgbGltaXRSZ24sIENHQ29udGV4dFJlZiBpbkNvbnRleHQgKQogICAgIGVsc2UKICAgICAgICAg
W2luVmlldy0+ZldlYlZpZXcgZGlzcGxheVJlY3Q6KihOU1JlY3QqKSZoaVJlY3RdOwogCi0gICAg
V0tOU1dpbmRvd1Jlc3RvcmVDR0NvbnRleHQoaW5WaWV3LT5mS2l0V2luZG93LCBzYXZlZENvbnRl
eHQpOworICAgIHJlc3RvcmVDR0NvbnRleHQoaW5WaWV3LT5mS2l0V2luZG93LCBzYXZlZENvbnRl
eHQpOwogCiAgICAgaWYgKCAhaW5WaWV3LT5mSXNDb21wb3NpdGVkICkKICAgICB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9XZWJIb3N0ZWROZXRz
Y2FwZVBsdWdpblZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3Rl
ZC9XZWJIb3N0ZWROZXRzY2FwZVBsdWdpblZpZXcubW0KaW5kZXggOWUyMDQ0ZTI2ZTEzOTAyMWVi
OGNhNjMzNjI1NWYyYzgzM2MxYjhiMi4uNjk1YTVjZjUyNzM3M2QzMDlhODNiNjRkNmYxZDAxMDBl
ZDNhNDA4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0
ZWQvV2ViSG9zdGVkTmV0c2NhcGVQbHVnaW5WaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1BsdWdpbnMvSG9zdGVkL1dlYkhvc3RlZE5ldHNjYXBlUGx1Z2luVmlldy5tbQpAQCAt
NzYsNyArNzYsNyBAQCArICh2b2lkKWluaXRpYWxpemUKICAgICBXVEY6OmluaXRpYWxpemVNYWlu
VGhyZWFkVG9Qcm9jZXNzTWFpblRocmVhZCgpOwogICAgIFJ1bkxvb3A6OmluaXRpYWxpemVNYWlu
UnVuTG9vcCgpOwogI2VuZGlmCi0gICAgV0tTZW5kVXNlckNoYW5nZU5vdGlmaWNhdGlvbnMoKTsK
KyAgICBzZW5kVXNlckNoYW5nZU5vdGlmaWNhdGlvbnMoKTsKIH0KIAogLSAoaWQpaW5pdFdpdGhG
cmFtZTooTlNSZWN0KWZyYW1lCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9Q
bHVnaW5zL1dlYkJhc2VOZXRzY2FwZVBsdWdpblZpZXcuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1BsdWdpbnMvV2ViQmFzZU5ldHNjYXBlUGx1Z2luVmlldy5oCmluZGV4IGMyMjIzYWI2ZDI2
NzUxZjM4YzM4OTU4MWJkMzQ5ZGU5ODE0YzE1YjEuLmNkNDMwZDM2Njk3MWVjOWZlMmVhMGQ0NDA1
OTNiNTgwYzljYTJlMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdp
bnMvV2ViQmFzZU5ldHNjYXBlUGx1Z2luVmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1BsdWdpbnMvV2ViQmFzZU5ldHNjYXBlUGx1Z2luVmlldy5oCkBAIC0xMzQsNiArMTM0LDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogbmFtZXNwYWNlIFdlYktpdCB7CiBib29sIGdldEF1dGhl
bnRpY2F0aW9uSW5mbyhjb25zdCBjaGFyKiBwcm90b2NvbFN0ciwgY29uc3QgY2hhciogaG9zdFN0
ciwgaW50MzJfdCBwb3J0LCBjb25zdCBjaGFyKiBzY2hlbWVTdHIsIGNvbnN0IGNoYXIqIHJlYWxt
U3RyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgV1RGOjpDU3RyaW5nJiB1c2VybmFtZSwg
V1RGOjpDU3RyaW5nJiBwYXNzd29yZCk7Cit2b2lkIHNlbmRVc2VyQ2hhbmdlTm90aWZpY2F0aW9u
cygpOwogfSAKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9Q
bHVnaW5zL1dlYkJhc2VOZXRzY2FwZVBsdWdpblZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9QbHVnaW5zL1dlYkJhc2VOZXRzY2FwZVBsdWdpblZpZXcubW0KaW5kZXggNjRkZTkwMTBl
YmRiMGIwNjlkNmY4NjNhM2ZlZjJmZmQ3YjVkNDMzOC4uOTU3M2Q1NTNjNTUzYzNiNDEwMTZkNzg0
Y2IxYjAyMzM3Yzg0ODg0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1
Z2lucy9XZWJCYXNlTmV0c2NhcGVQbHVnaW5WaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1BsdWdpbnMvV2ViQmFzZU5ldHNjYXBlUGx1Z2luVmlldy5tbQpAQCAtNTUsNiArNTUs
NyBAQAogI2ltcG9ydCA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbi5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9XZWJDb3JlT2JqQ0V4dHJhcy5oPgogI2ltcG9ydCA8V2ViS2l0TGVnYWN5L0RPTVByaXZhdGUu
aD4KKyNpbXBvcnQgPHBhbC9zcGkvY2cvQ29yZUdyYXBoaWNzU1BJLmg+CiAjaW1wb3J0IDxydW50
aW1lL0luaXRpYWxpemVUaHJlYWRpbmcuaD4KICNpbXBvcnQgPHd0Zi9Bc3NlcnRpb25zLmg+CiAj
aW1wb3J0IDx3dGYvTWFpblRocmVhZC5oPgpAQCAtNzMsNyArNzQsNyBAQCArICh2b2lkKWluaXRp
YWxpemUKICAgICBKU0M6OmluaXRpYWxpemVUaHJlYWRpbmcoKTsKICAgICBXVEY6OmluaXRpYWxp
emVNYWluVGhyZWFkVG9Qcm9jZXNzTWFpblRocmVhZCgpOwogICAgIFJ1bkxvb3A6OmluaXRpYWxp
emVNYWluUnVuTG9vcCgpOwotICAgIFdLU2VuZFVzZXJDaGFuZ2VOb3RpZmljYXRpb25zKCk7Cisg
ICAgV2ViS2l0OjpzZW5kVXNlckNoYW5nZU5vdGlmaWNhdGlvbnMoKTsKIH0KIAogLSAoaWQpaW5p
dFdpdGhGcmFtZTooTlNSZWN0KWZyYW1lCkBAIC05MDAsNiArOTAxLDIzIEBAIGJvb2wgZ2V0QXV0
aGVudGljYXRpb25JbmZvKGNvbnN0IGNoYXIqIHByb3RvY29sU3RyLCBjb25zdCBjaGFyKiBob3N0
U3RyLCBpbnQzMl90CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK3ZvaWQgc2VuZFVzZXJDaGFuZ2VO
b3RpZmljYXRpb25zKCkKK3sKKyAgICBhdXRvIGNvbnNvbGVDb25uZWN0aW9uQ2hhbmdlTm90aWZ5
UHJvYyA9IFtdKENHU05vdGlmaWNhdGlvblR5cGUgdHlwZSwgQ0dTTm90aWZpY2F0aW9uRGF0YSwg
Q0dTQnl0ZUNvdW50LCBDR1NOb3RpZmljYXRpb25BcmcpIHsKKyAgICAgICAgTlNTdHJpbmcgKm5v
dGlmaWNhdGlvbk5hbWUgPSBuaWw7CisgICAgICAgIGlmICh0eXBlID09IGtDR1Nlc3Npb25Db25z
b2xlQ29ubmVjdCkKKyAgICAgICAgICAgIG5vdGlmaWNhdGlvbk5hbWUgPSBMb2dpbldpbmRvd0Rp
ZFN3aXRjaFRvVXNlck5vdGlmaWNhdGlvbjsKKyAgICAgICAgZWxzZSBpZiAodHlwZSA9PSBrQ0dT
ZXNzaW9uQ29uc29sZURpc2Nvbm5lY3QpCisgICAgICAgICAgICBub3RpZmljYXRpb25OYW1lID0g
TG9naW5XaW5kb3dEaWRTd2l0Y2hGcm9tVXNlck5vdGlmaWNhdGlvbjsKKyAgICAgICAgZWxzZQor
ICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIFtbTlNOb3RpZmljYXRp
b25DZW50ZXIgZGVmYXVsdENlbnRlcl0gcG9zdE5vdGlmaWNhdGlvbk5hbWU6bm90aWZpY2F0aW9u
TmFtZSBvYmplY3Q6bmlsXTsKKyAgICB9OworCisgICAgQ0dTUmVnaXN0ZXJOb3RpZnlQcm9jKGNv
bnNvbGVDb25uZWN0aW9uQ2hhbmdlTm90aWZ5UHJvYywga0NHU2Vzc2lvbkNvbnNvbGVDb25uZWN0
LCBudWxscHRyKTsKKyAgICBDR1NSZWdpc3Rlck5vdGlmeVByb2MoY29uc29sZUNvbm5lY3Rpb25D
aGFuZ2VOb3RpZnlQcm9jLCBrQ0dTZXNzaW9uQ29uc29sZURpc2Nvbm5lY3QsIG51bGxwdHIpOwor
fQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vICBFTkFCTEUoTkVUU0NBUEVf
UExVR0lOX0FQSSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMv
V2ViTmV0c2NhcGVQbHVnaW5WaWV3Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lu
cy9XZWJOZXRzY2FwZVBsdWdpblZpZXcubW0KaW5kZXggYzY4MGZmN2VlMzFjOTNiOGZiNDkyMjk3
ZTRlN2FkOTE0MWE0ZGRlNC4uMmJiZDNkZWJlNjZlMThkOGYzMTgwYzk0Y2ExMzM3ZmNmN2Q4ODE3
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJOZXRzY2Fw
ZVBsdWdpblZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJO
ZXRzY2FwZVBsdWdpblZpZXcubW0KQEAgLTE5Myw3ICsxOTMsNyBAQCArICh2b2lkKWluaXRpYWxp
emUKICAgICBKU0M6OmluaXRpYWxpemVUaHJlYWRpbmcoKTsKICAgICBXVEY6OmluaXRpYWxpemVN
YWluVGhyZWFkVG9Qcm9jZXNzTWFpblRocmVhZCgpOwogICAgIFJ1bkxvb3A6OmluaXRpYWxpemVN
YWluUnVuTG9vcCgpOwotICAgIFdLU2VuZFVzZXJDaGFuZ2VOb3RpZmljYXRpb25zKCk7CisgICAg
c2VuZFVzZXJDaGFuZ2VOb3RpZmljYXRpb25zKCk7CiB9CiAKIC8vIE1BUks6IEVWRU5UUwpAQCAt
Mzc5LDEwICszNzksMTAgQEAgLSAoUG9ydFN0YXRlKXNhdmVBbmRTZXROZXdQb3J0U3RhdGVGb3JV
cGRhdGU6KEJPT0wpZm9yVXBkYXRlCiAgICAgICAgICAgICBxZFBvcnRTdGF0ZS0+Y2xpcFJlZ2lv
biA9IGNsaXBSZWdpb247CiAKICAgICAgICAgICAgIENHQ29udGV4dFJlZiBjdXJyZW50Q29udGV4
dCA9IChDR0NvbnRleHRSZWYpW1tOU0dyYXBoaWNzQ29udGV4dCBjdXJyZW50Q29udGV4dF0gZ3Jh
cGhpY3NQb3J0XTsKLSAgICAgICAgICAgIGlmIChjdXJyZW50Q29udGV4dCAmJiBXS0NHQ29udGV4
dElzQml0bWFwQ29udGV4dChjdXJyZW50Q29udGV4dCkpIHsKLSAgICAgICAgICAgICAgICAvLyBX
ZSB1c2UgV0tDR0NvbnRleHRJc0JpdG1hcENvbnRleHQgaGVyZSwgYmVjYXVzZSBpZiB3ZSBqdXN0
IGNhbGxlZCBDR0JpdG1hcENvbnRleHRHZXREYXRhCi0gICAgICAgICAgICAgICAgLy8gb24gYW55
IGNvbnRleHQsIHdlJ2QgbG9nIHRvIHRoZSBjb25zb2xlIGV2ZXJ5IHRpbWUuIEJ1dCBldmVuIGlm
IFdLQ0dDb250ZXh0SXNCaXRtYXBDb250ZXh0Ci0gICAgICAgICAgICAgICAgLy8gcmV0dXJucyB0
cnVlLCBpdCBzdGlsbCBtaWdodCBub3QgYmUgYSBjb250ZXh0IHdlIG5lZWQgdG8gY3JlYXRlIGEg
R1dvcmxkIGZvcjsgZm9yIGV4YW1wbGUKKyAgICAgICAgICAgIGlmIChjdXJyZW50Q29udGV4dCAm
JiBDR0NvbnRleHRHZXRUeXBlKGN1cnJlbnRDb250ZXh0KSA9PSBrQ0dDb250ZXh0VHlwZUJpdG1h
cCkgeworICAgICAgICAgICAgICAgIC8vIFdlIGNoZWNrIGZvciBrQ0dDb250ZXh0VHlwZUJpdG1h
cCBoZXJlLCBiZWNhdXNlIGlmIHdlIGp1c3QgY2FsbGVkIENHQml0bWFwQ29udGV4dEdldERhdGEK
KyAgICAgICAgICAgICAgICAvLyBvbiBhbnkgY29udGV4dCwgd2UnZCBsb2cgdG8gdGhlIGNvbnNv
bGUgZXZlcnkgdGltZS4gQnV0IGV2ZW4gaWYgY3VycmVudENvbnRleHQgaXMgYQorICAgICAgICAg
ICAgICAgIC8vIGtDR0NvbnRleHRUeXBlQml0bWFwLCBpdCBzdGlsbCBtaWdodCBub3QgYmUgYSBj
b250ZXh0IHdlIG5lZWQgdG8gY3JlYXRlIGEgR1dvcmxkIGZvcjsgZm9yIGV4YW1wbGUKICAgICAg
ICAgICAgICAgICAvLyB0cmFuc3BhcmVuY3kgbGF5ZXJzIHdpbGwgcmV0dXJuIHRydWUsIGJ1dCBy
ZXR1cm4gMCBmb3IgQ0dCaXRtYXBDb250ZXh0R2V0RGF0YS4KICAgICAgICAgICAgICAgICB2b2lk
KiBvZmZzY3JlZW5EYXRhID0gQ0dCaXRtYXBDb250ZXh0R2V0RGF0YShjdXJyZW50Q29udGV4dCk7
CiAgICAgICAgICAgICAgICAgaWYgKG9mZnNjcmVlbkRhdGEpIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlN5c3RlbUludGVyZmFjZS5tbSBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlN5c3RlbUludGVyZmFj
ZS5tbQppbmRleCA2ZGQwYjU3ZGQ0YmYzNDNmZTk2NmYwZmJhNjNjMTFjZjRmMDhkOTMyLi5iNTEx
ZDY1ZWE2MWIzNjI0N2QyYjgzZWIyYzY4OTExNDNmMzk3Y2Q4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJTeXN0ZW1JbnRlcmZhY2UubW0KKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViU3lzdGVtSW50ZXJm
YWNlLm1tCkBAIC00MywxNiArNDMsOSBAQCB2b2lkIEluaXRXZWJDb3JlU3lzdGVtSW50ZXJmYWNl
KHZvaWQpCiAgICAgICAgIHJldHVybjsKIAogICAgIElOSVQoQ0FMYXllckVudW1lcmF0ZVJlY3Rz
QmVpbmdEcmF3bldpdGhCbG9jayk7Ci0gICAgSU5JVChDR1BhdHRlcm5DcmVhdGVXaXRoSW1hZ2VB
bmRUcmFuc2Zvcm0pOwotI2lmICFQTEFURk9STShJT1MpCi0gICAgSU5JVChDR0NvbnRleHREcmF3
c1dpdGhDb3JyZWN0U2hhZG93T2Zmc2V0cyk7Ci0jZW5kaWYKICAgICBJTklUKENvcHlDT05ORUNU
UHJveHlSZXNwb25zZSk7CiAjaWYgIVBMQVRGT1JNKElPUykKICAgICBJTklUKERyYXdCZXplbGVk
VGV4dEFyZWEpOwotICAgIElOSVQoRHJhd0ZvY3VzUmluZyk7Ci0gICAgSU5JVChEcmF3Rm9jdXNS
aW5nQXRUaW1lKTsKLSAgICBJTklUKERyYXdDZWxsRm9jdXNSaW5nV2l0aEZyYW1lQXRUaW1lKTsK
ICAgICBJTklUKERyYXdNZWRpYVVJUGFydCk7CiAgICAgSU5JVChEcmF3TWVkaWFTbGlkZXJUcmFj
ayk7CiAgICAgSU5JVChHZXROU0V2ZW50S2V5Q2hhcik7CkBAIC02MCwxNSArNTMsOSBAQCB2b2lk
IEluaXRXZWJDb3JlU3lzdGVtSW50ZXJmYWNlKHZvaWQpCiAgICAgSU5JVChNZWFzdXJlTWVkaWFV
SVBhcnQpOwogICAgIElOSVQoQ3JlYXRlTWVkaWFVSUJhY2tncm91bmRWaWV3KTsKICAgICBJTklU
KENyZWF0ZU1lZGlhVUlDb250cm9sKTsKLSAgICBJTklUKFdpbmRvd1NldEFscGhhKTsKLSAgICBJ
TklUKFdpbmRvd1NldFNjYWxlZEZyYW1lKTsKICNlbmRpZgogICAgIElOSVQoU2V0Q09OTkVDVFBy
b3h5QXV0aG9yaXphdGlvbkZvclN0cmVhbSk7CiAgICAgSU5JVChTZXRDT05ORUNUUHJveHlGb3JT
dHJlYW0pOwotI2lmICFQTEFURk9STShJT1MpCi0gICAgSU5JVChTZXREcmFnSW1hZ2UpOwotI2Vu
ZGlmCi0gICAgSU5JVChDR0NvbnRleHRJc1BERkNvbnRleHQpOwogI2lmIEVOQUJMRShWSURFTykg
JiYgIVBMQVRGT1JNKElPUykKICAgICBJTklUKFFUSW5jbHVkZU9ubHlNb2Rlcm5NZWRpYUZpbGVU
eXBlcyk7CiAgICAgSU5JVChRVE1vdmllRGlzYWJsZUNvbXBvbmVudCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQppbmRleCBmMGY4ZTYyODU4MGIyOWZlMDQ3
ZWRkZjZlYjQ3NTc4YzZkMDVkZDJkLi5lNzA5M2M5NmFhYzQ3NGUzYWVlOWU3MmQyM2IyNGViMWM1
ODlhMmViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZy
YW1lLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0K
QEAgLTU5OCw3ICs1OTgsNyBAQCAtIChQYWludEJlaGF2aW9yKV9wYWludEJlaGF2aW9yRm9yRGVz
dGluYXRpb25Db250ZXh0OihDR0NvbnRleHRSZWYpY29udGV4dAogICAgICAgICByZXR1cm4gUGFp
bnRCZWhhdmlvckZsYXR0ZW5Db21wb3NpdGluZ0xheWVycyB8IFBhaW50QmVoYXZpb3JTbmFwc2hv
dHRpbmc7CiAjZW5kaWYKIAotICAgIGlmICghV0tDR0NvbnRleHRJc0JpdG1hcENvbnRleHQoY29u
dGV4dCkpCisgICAgaWYgKENHQ29udGV4dEdldFR5cGUoY29udGV4dCkgIT0ga0NHQ29udGV4dFR5
cGVCaXRtYXApCiAgICAgICAgIHJldHVybiBQYWludEJlaGF2aW9yTm9ybWFsOwogCiAgICAgLy8g
SWYgd2UncmUgZHJhd2luZyBpbnRvIGEgYml0bWFwLCB3ZSBtaWdodCBiZSBzbmFwc2hvdHRpbmcs
IG9yIGRyYXdpbmcgaW50byBhIGxheWVyLWJhY2tlZCB2aWV3LgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGdWxsU2NyZWVuQ29udHJvbGxlci5tbSBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnVsbFNjcmVlbkNvbnRyb2xsZXIubW0K
aW5kZXggZmQ4ZmM1Njk5N2FmY2I2YWQ3ZjkwYzVmYzk5ODRiYTMxNzY2ZTkwNy4uNzcyZTk2MjNj
M2Y2NWJlMjM0ODY5MmJlMzI0YTQ3YTZiZWRhNDg3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGdWxsU2NyZWVuQ29udHJvbGxlci5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZ1bGxTY3JlZW5Db250cm9sbGVyLm1tCkBA
IC0yNDksNiArMjQ5LDE2IEBAIC0gKHZvaWQpZW50ZXJGdWxsU2NyZWVuOihOU1NjcmVlbiAqKXNj
cmVlbgogICAgIF9pc0VudGVyaW5nRnVsbFNjcmVlbiA9IHRydWU7CiB9CiAKK3N0YXRpYyB2b2lk
IHNldENsaXBSZWN0Rm9yV2luZG93KE5TV2luZG93ICp3aW5kb3csIE5TUmVjdCBjbGlwUmVjdCkK
K3sKKyAgICBDR1NXaW5kb3dJRCB3aW5kb3dOdW1iZXIgPSAoQ0dTV2luZG93SUQpd2luZG93Lndp
bmRvd051bWJlcjsKKyAgICBDR1NSZWdpb25PYmogc2hhcGU7CisgICAgQ0dSZWN0IGNnQ2xpcFJl
Y3QgPSBOU1JlY3RUb0NHUmVjdChjbGlwUmVjdCk7CisgICAgQ0dTTmV3UmVnaW9uV2l0aFJlY3Qo
JmNnQ2xpcFJlY3QsICZzaGFwZSk7CisgICAgQ0dTU2V0V2luZG93Q2xpcFNoYXBlKENHU01haW5D
b25uZWN0aW9uSUQoKSwgd2luZG93TnVtYmVyLCBzaGFwZSk7CisgICAgQ0dTUmVsZWFzZVJlZ2lv
bihzaGFwZSk7Cit9CisKIC0gKHZvaWQpZmluaXNoZWRFbnRlckZ1bGxTY3JlZW5BbmltYXRpb246
KGJvb2wpY29tcGxldGVkCiB7CiAgICAgaWYgKCFfaXNFbnRlcmluZ0Z1bGxTY3JlZW4pCkBAIC0y
NjMsNyArMjczLDcgQEAgLSAodm9pZClmaW5pc2hlZEVudGVyRnVsbFNjcmVlbkFuaW1hdGlvbjoo
Ym9vbCljb21wbGV0ZWQKICAgICAgICAgCiAgICAgICAgIE5TUmVjdCB3aW5kb3dCb3VuZHMgPSBb
W3NlbGYgd2luZG93XSBmcmFtZV07CiAgICAgICAgIHdpbmRvd0JvdW5kcy5vcmlnaW4gPSBOU1pl
cm9Qb2ludDsKLSAgICAgICAgV0tXaW5kb3dTZXRDbGlwUmVjdChbc2VsZiB3aW5kb3ddLCB3aW5k
b3dCb3VuZHMpOworICAgICAgICBzZXRDbGlwUmVjdEZvcldpbmRvdyhzZWxmLndpbmRvdywgd2lu
ZG93Qm91bmRzKTsKICAgICAgICAgCiAgICAgICAgIE5TV2luZG93ICp3ZWJXaW5kb3cgPSBbX3dl
YlZpZXdQbGFjZWhvbGRlci5nZXQoKSB3aW5kb3ddOwogICAgICAgICAvLyBJbiBMaW9uLCBOU1dp
bmRvdyB3aWxsIGFuaW1hdGUgaW50byBhbmQgb3V0IG9mIG9yZGVyT3V0IG9wZXJhdGlvbnMuIFN1
cHByZXNzIHRoYXQKQEAgLTM1Myw3ICszNjMsNyBAQCAtICh2b2lkKWZpbmlzaGVkRXhpdEZ1bGxT
Y3JlZW5BbmltYXRpb246KGJvb2wpY29tcGxldGVkCiAgICAgCiAgICAgTlNSZWN0IHdpbmRvd0Jv
dW5kcyA9IFtbc2VsZiB3aW5kb3ddIGZyYW1lXTsKICAgICB3aW5kb3dCb3VuZHMub3JpZ2luID0g
TlNaZXJvUG9pbnQ7Ci0gICAgV0tXaW5kb3dTZXRDbGlwUmVjdChbc2VsZiB3aW5kb3ddLCB3aW5k
b3dCb3VuZHMpOworICAgIHNldENsaXBSZWN0Rm9yV2luZG93KHNlbGYud2luZG93LCB3aW5kb3dC
b3VuZHMpOwogICAgIAogICAgIFtbc2VsZiB3aW5kb3ddIG9yZGVyT3V0OnNlbGZdOwogICAgIFtb
c2VsZiB3aW5kb3ddIHNldEZyYW1lOk5TWmVyb1JlY3QgZGlzcGxheTpZRVNdOwpAQCAtNDg0LDEz
ICs0OTQsMTMgQEAgLSAodm9pZClfc3RhcnRFbnRlckZ1bGxTY3JlZW5BbmltYXRpb25XaXRoRHVy
YXRpb246KE5TVGltZUludGVydmFsKWR1cmF0aW9uCiAgICAgW19zY2FsZUFuaW1hdGlvbi5nZXQo
KSBzZXRDdXJyZW50UHJvZ3Jlc3M6MF07CiAgICAgW19zY2FsZUFuaW1hdGlvbi5nZXQoKSBzdGFy
dEFuaW1hdGlvbl07CiAgICAgCi0gICAgLy8gV0tXaW5kb3dTZXRDbGlwUmVjdCB0YWtlcyB3aW5k
b3cgY29vcmRpbmF0ZXMsIHNvIGNvbnZlcnQgZnJvbSBzY3JlZW4gY29vcmRpbmF0ZXMgaGVyZToK
KyAgICAvLyBzZXRDbGlwUmVjdEZvcldpbmRvdyB0YWtlcyB3aW5kb3cgY29vcmRpbmF0ZXMsIHNv
IGNvbnZlcnQgZnJvbSBzY3JlZW4gY29vcmRpbmF0ZXMgaGVyZToKICAgICBOU1JlY3QgZmluYWxC
b3VuZHMgPSBfZmluYWxGcmFtZTsKICNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwdXNoCiAjcHJh
Z21hIGNsYW5nIGRpYWdub3N0aWMgaWdub3JlZCAiLVdkZXByZWNhdGVkLWRlY2xhcmF0aW9ucyIK
ICAgICBmaW5hbEJvdW5kcy5vcmlnaW4gPSBbW3NlbGYgd2luZG93XSBjb252ZXJ0U2NyZWVuVG9C
YXNlOmZpbmFsQm91bmRzLm9yaWdpbl07CiAjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcG9wCi0g
ICAgV0tXaW5kb3dTZXRDbGlwUmVjdChbc2VsZiB3aW5kb3ddLCBmaW5hbEJvdW5kcyk7CisgICAg
c2V0Q2xpcFJlY3RGb3JXaW5kb3coc2VsZi53aW5kb3csIGZpbmFsQm91bmRzKTsKICAgICAKICAg
ICBbW3NlbGYgd2luZG93XSBtYWtlS2V5QW5kT3JkZXJGcm9udDpzZWxmXTsKICAgICAKQEAgLTU1
NiwxMyArNTY2LDEzIEBAIC0gKHZvaWQpX3N0YXJ0RXhpdEZ1bGxTY3JlZW5BbmltYXRpb25XaXRo
RHVyYXRpb246KE5TVGltZUludGVydmFsKWR1cmF0aW9uCiAgICAgCiAgICAgW19iYWNrZ3JvdW5k
V2luZG93LmdldCgpIG9yZGVyV2luZG93Ok5TV2luZG93QmVsb3cgcmVsYXRpdmVUbzpbW3NlbGYg
d2luZG93XSB3aW5kb3dOdW1iZXJdXTsKICAgICAKLSAgICAvLyBXS1dpbmRvd1NldENsaXBSZWN0
IHRha2VzIHdpbmRvdyBjb29yZGluYXRlcywgc28gY29udmVydCBmcm9tIHNjcmVlbiBjb29yZGlu
YXRlcyBoZXJlOgorICAgIC8vIHNldENsaXBSZWN0Rm9yV2luZG93IHRha2VzIHdpbmRvdyBjb29y
ZGluYXRlcywgc28gY29udmVydCBmcm9tIHNjcmVlbiBjb29yZGluYXRlcyBoZXJlOgogICAgIE5T
UmVjdCBmaW5hbEJvdW5kcyA9IF9maW5hbEZyYW1lOwogI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGlj
IHB1c2gKICNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBpZ25vcmVkICItV2RlcHJlY2F0ZWQtZGVj
bGFyYXRpb25zIgogICAgIGZpbmFsQm91bmRzLm9yaWdpbiA9IFtbc2VsZiB3aW5kb3ddIGNvbnZl
cnRTY3JlZW5Ub0Jhc2U6ZmluYWxCb3VuZHMub3JpZ2luXTsKICNwcmFnbWEgY2xhbmcgZGlhZ25v
c3RpYyBwb3AKLSAgICBXS1dpbmRvd1NldENsaXBSZWN0KFtzZWxmIHdpbmRvd10sIGZpbmFsQm91
bmRzKTsKKyAgICBzZXRDbGlwUmVjdEZvcldpbmRvdyhzZWxmLndpbmRvdywgZmluYWxCb3VuZHMp
OwogICAgIAogICAgIFtbc2VsZiB3aW5kb3ddIHNldEF1dG9kaXNwbGF5OllFU107CiAgICAgW1tz
ZWxmIHdpbmRvd10gZGlzcGxheUlmTmVlZGVkXTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>319603</attachid>
            <date>2017-09-01 09:44:29 -0700</date>
            <delta_ts>2017-09-01 09:56:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-176200-20170901094428.patch</filename>
            <type>text/plain</type>
            <size>65313</size>
            <attacher name="Andy Estes">aestes</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIxNDczCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmNmNjE0ZmZmMzUzODM2
Mjg0MTIwMzJkMzk0M2FkZDllOGNjOWJmNS4uZDY3YWI1ZTIxNjRkNmY5NzBmNDU1MmZlZDg5M2Vl
NmQyYTgzMzYwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDQ2IEBACiAyMDE3LTA4LTMxICBBbmR5
IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KIAorICAgICAgICBbQ0ddIFVwc3RyZWFtIENvcmVH
cmFwaGljcy1yZWxhdGVkIFdlYktpdFN5c3RlbUludGVyZmFjZSBmdW5jdGlvbnMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NjIwMAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NDb250ZXh0Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VT
b3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OnN1YnNhbXBsaW5nTGV2
ZWxGb3JTY2FsZUZhY3Rvcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhp
Y3NDb250ZXh0Q0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpjbGlw
T3V0KToKKyAgICAgICAgKFdlYkNvcmU6OmFwcGx5U2hhZG93T2Zmc2V0V29ya2Fyb3VuZElmTmVl
ZGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9QYXR0ZXJuQ0cuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UGF0dGVybjo6Y3JlYXRlUGxhdGZvcm1QYXR0ZXJuIGNvbnN0KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRDb2NvYS5tbToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6Zm9jdXNSaW5nQ29sb3IpOgorICAg
ICAgICAoV2ViQ29yZTo6ZHJhd0ZvY3VzUmluZ0F0VGltZSk6CisgICAgICAgIChXZWJDb3JlOjpk
cmF3Rm9jdXNSaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OmRyYXdGb2N1c1JpbmdUb0NvbnRleHQp
OgorICAgICAgICAoV2ViQ29yZTo6ZHJhd0ZvY3VzUmluZ1RvQ29udGV4dEF0VGltZSk6CisgICAg
ICAgICogcGxhdGZvcm0vaW9zL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2VJT1MubW06CisgICAgICAg
ICogcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpmbGlw
SW1hZ2VTcGVjKToKKyAgICAgICAgKFdlYkNvcmU6OnNldERyYWdJbWFnZUltcGwpOgorICAgICAg
ICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6c2V0RHJhZ0ltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9tYWMvUGxhdGZvcm1FdmVudEZhY3RvcnlNYWMubW06CisgICAgICAgICogcGxhdGZvcm0vbWFj
L1Njcm9sbGJhclRoZW1lTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6bGluZW5CYWNrZ3JvdW5k
Q29sb3IpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9UaGVtZU1hYy5tbToKKyAgICAgICAgKFdl
YkNvcmU6OmRyYXdDZWxsRm9jdXNSaW5nV2l0aEZyYW1lQXRUaW1lKToKKyAgICAgICAgKFdlYkNv
cmU6OmRyYXdDZWxsRm9jdXNSaW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvV2ViQ29yZVN5
c3RlbUludGVyZmFjZS5oOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9XZWJDb3JlU3lzdGVtSW50
ZXJmYWNlLm1tOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9XZWJXaW5kb3dBbmltYXRpb24ubW06
CisgICAgICAgIChmbGlwUmVjdCk6CisgICAgICAgIChtYWluV2luZG93U2VydmVyQ29ubmVjdGlv
bklEKToKKyAgICAgICAgKHNldFNjYWxlZEZyYW1lRm9yV2luZG93KToKKyAgICAgICAgKC1bV2Vi
V2luZG93U2NhbGVBbmltYXRpb24gc2V0Q3VycmVudFByb2dyZXNzOl0pOgorICAgICAgICAoLVtX
ZWJXaW5kb3dGYWRlQW5pbWF0aW9uIHNldEN1cnJlbnRQcm9ncmVzczpdKToKKworMjAxNy0wOC0z
MSAgQW5keSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+CisKICAgICAgICAgW01hY10gVXBzdHJl
YW0gQXBwS2l0LXJlbGF0ZWQgV2ViS2l0U3lzdGVtSW50ZXJmYWNlIGZ1bmN0aW9ucwogICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc2MTc1CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9QQUwv
Q2hhbmdlTG9nCmluZGV4IGVlZWU4NGRjNjE5ZDkyZDRkYTJhMTIwYjIwODZkYzZjNjEwYTY4YjIu
LjQzNjE3MDA3YTFlMGJlMDZhNWY2MTg0NmQxZTJlMjBiODRmZGIwYTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML0NoYW5n
ZUxvZwpAQCAtMSw1ICsxLDE3IEBACiAyMDE3LTA4LTMxICBBbmR5IEVzdGVzICA8YWVzdGVzQGFw
cGxlLmNvbT4KIAorICAgICAgICBbQ0ddIFVwc3RyZWFtIENvcmVHcmFwaGljcy1yZWxhdGVkIFdl
YktpdFN5c3RlbUludGVyZmFjZSBmdW5jdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NjIwMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogUEFMLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6Cisg
ICAgICAgICogcGFsL3NwaS9jZy9Db3JlR3JhcGhpY3NTUEkuaDoKKyAgICAgICAgKiBwYWwvc3Bp
L21hYy9ISVNlcnZpY2VzU1BJLmg6CisgICAgICAgICogcGFsL3NwaS9tYWMvTlNHcmFwaGljc1NQ
SS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9tYWMvSElTZXJ2aWNl
c1NQSS5oLgorCisyMDE3LTA4LTMxICBBbmR5IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KKwog
ICAgICAgICBbTWFjXSBVcHN0cmVhbSBBcHBLaXQtcmVsYXRlZCBXZWJLaXRTeXN0ZW1JbnRlcmZh
Y2UgZnVuY3Rpb25zCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNzYxNzUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBiNjJiN2VlNTYxZmYwNDQ2ZmVlYmRiNDMwNjU2Njcx
MmNjZGZlZDI4Li4yZGMxYjc0MjNjMzhiYTcxYTE1ZDNhODljNDYwYWZjNDEwZWRiZThhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwpAQCAtMSw1ICsxLDIyIEBACiAyMDE3LTA4LTMxICBBbmR5IEVzdGVzICA8YWVzdGVzQGFw
cGxlLmNvbT4KIAorICAgICAgICBbQ0ddIFVwc3RyZWFtIENvcmVHcmFwaGljcy1yZWxhdGVkIFdl
YktpdFN5c3RlbUludGVyZmFjZSBmdW5jdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NjIwMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogUGx1Z2luUHJvY2Vzcy9tYWMvUGx1Z2luUHJvY2Vzc01h
Yy5tbToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXpl
UHJvY2Vzcyk6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9XaW5kb3dTZXJ2ZXJDb25uZWN0aW9u
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9XaW5kb3dTZXJ2ZXJDb25uZWN0aW9uLm1tOgor
ICAgICAgICAoV2ViS2l0OjpyZWdpc3Rlck9jY2x1c2lvbk5vdGlmaWNhdGlvbkhhbmRsZXIpOgor
ICAgICAgICAoV2ViS2l0OjpXaW5kb3dTZXJ2ZXJDb25uZWN0aW9uOjpXaW5kb3dTZXJ2ZXJDb25u
ZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2luZG93U2VydmVyQ29ubmVjdGlvbjo6YXBwbGlj
YXRpb25XaW5kb3dNb2RpZmljYXRpb25zU3RhcnRlZCk6IERlbGV0ZWQuCisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViU3lzdGVtSW50ZXJmYWNlLm1tOgorICAgICAg
ICAoSW5pdFdlYkNvcmVTeXN0ZW1JbnRlcmZhY2UpOgorCisyMDE3LTA4LTMxICBBbmR5IEVzdGVz
ICA8YWVzdGVzQGFwcGxlLmNvbT4KKwogICAgICAgICBbTWFjXSBVcHN0cmVhbSBBcHBLaXQtcmVs
YXRlZCBXZWJLaXRTeXN0ZW1JbnRlcmZhY2UgZnVuY3Rpb25zCiAgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzYxNzUKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hh
bmdlTG9nCmluZGV4IGM0Zjk5NTY3MjU0ZDBiNjIyYzlhOGY5ODc5MTdiNjcwMzM5NzgwOTMuLmU3
ZDhkODBmNDAyMjJjYmNmNzQyOThjN2E5MjEzYTgzMDI0YTkwZGIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9DaGFuZ2VMb2cKQEAgLTEsNSArMSwzNiBAQAogMjAxNy0wOC0zMSAgQW5keSBFc3RlcyAgPGFl
c3Rlc0BhcHBsZS5jb20+CiAKKyAgICAgICAgW0NHXSBVcHN0cmVhbSBDb3JlR3JhcGhpY3MtcmVs
YXRlZCBXZWJLaXRTeXN0ZW1JbnRlcmZhY2UgZnVuY3Rpb25zCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzYyMDAKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIENhcmJvbi9ISVdlYlZpZXcubW06CisgICAg
ICAgICgtW05TV2luZG93R3JhcGhpY3NDb250ZXh0IF93ZWJfc2V0R3JhcGhpY3NQb3J0Ol0pOgor
ICAgICAgICAob3ZlcnJpZGVDR0NvbnRleHQpOgorICAgICAgICAocmVzdG9yZUNHQ29udGV4dCk6
CisgICAgICAgIChEcmF3KToKKyAgICAgICAgKiBQbHVnaW5zL0hvc3RlZC9XZWJIb3N0ZWROZXRz
Y2FwZVBsdWdpblZpZXcubW06CisgICAgICAgICgrW1dlYkhvc3RlZE5ldHNjYXBlUGx1Z2luVmll
dyBpbml0aWFsaXplXSk6CisgICAgICAgICogUGx1Z2lucy9XZWJCYXNlTmV0c2NhcGVQbHVnaW5W
aWV3Lmg6CisgICAgICAgICogUGx1Z2lucy9XZWJCYXNlTmV0c2NhcGVQbHVnaW5WaWV3Lm1tOgor
ICAgICAgICAoV2ViS2l0OjpzZW5kVXNlckNoYW5nZU5vdGlmaWNhdGlvbnMpOgorICAgICAgICAq
IFBsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5WaWV3Lm1tOgorICAgICAgICAoK1tXZWJOZXRzY2Fw
ZVBsdWdpblZpZXcgaW5pdGlhbGl6ZV0pOgorICAgICAgICAoLVtXZWJOZXRzY2FwZVBsdWdpblZp
ZXcgc2F2ZUFuZFNldE5ld1BvcnRTdGF0ZUZvclVwZGF0ZTpdKToKKyAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9XZWJTeXN0ZW1JbnRlcmZhY2UubW06CisgICAgICAgIChJbml0V2ViQ29yZVN5c3Rl
bUludGVyZmFjZSk6CisgICAgICAgICogV2ViVmlldy9XZWJGcmFtZS5tbToKKyAgICAgICAgKC1b
V2ViRnJhbWUgX3BhaW50QmVoYXZpb3JGb3JEZXN0aW5hdGlvbkNvbnRleHQ6XSk6CisgICAgICAg
ICogV2ViVmlldy9XZWJGdWxsU2NyZWVuQ29udHJvbGxlci5tbToKKyAgICAgICAgKHNldENsaXBS
ZWN0Rm9yV2luZG93KToKKyAgICAgICAgKC1bV2ViRnVsbFNjcmVlbkNvbnRyb2xsZXIgZmluaXNo
ZWRFbnRlckZ1bGxTY3JlZW5BbmltYXRpb246XSk6CisgICAgICAgICgtW1dlYkZ1bGxTY3JlZW5D
b250cm9sbGVyIGZpbmlzaGVkRXhpdEZ1bGxTY3JlZW5BbmltYXRpb246XSk6CisgICAgICAgICgt
W1dlYkZ1bGxTY3JlZW5Db250cm9sbGVyIF9zdGFydEVudGVyRnVsbFNjcmVlbkFuaW1hdGlvbldp
dGhEdXJhdGlvbjpdKToKKyAgICAgICAgKC1bV2ViRnVsbFNjcmVlbkNvbnRyb2xsZXIgX3N0YXJ0
RXhpdEZ1bGxTY3JlZW5BbmltYXRpb25XaXRoRHVyYXRpb246XSk6CisKKzIwMTctMDgtMzEgIEFu
ZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29tPgorCiAgICAgICAgIFtNYWNdIFVwc3RyZWFtIEFw
cEtpdC1yZWxhdGVkIFdlYktpdFN5c3RlbUludGVyZmFjZSBmdW5jdGlvbnMKICAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NjE3NQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9QQUwvUEFMLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3Vy
Y2UvV2ViQ29yZS9QQUwvUEFMLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMTNjZWNj
Y2U2YzQzNmYwNTAyZWQ5OTcyYmViNGIxYWViM2YzNDBiOC4uM2EwNDBhYTI0MDg5Mzg5MmNhYmU1
OGU1ZjdjMjA4M2YxNjEyYjZkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML1BBTC54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9QQUwueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTA0LDYgKzEwNCw3IEBACiAJCUExMDgyNkYxMUY1
NzNCQ0EwMDQ3NzJBQyAvKiBOU1Jlc3BvbmRlclNQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTEwODI2RjAxRjU3M0JDQTAwNDc3MkFDIC8qIE5TUmVz
cG9uZGVyU1BJLmggKi87IH07CiAJCUExMDgyNkY5MUY1NzYyOTIwMDQ3NzJBQyAvKiBXZWJQYW5l
bC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTEwODI2
RjcxRjU3NjI5MjAwNDc3MkFDIC8qIFdlYlBhbmVsLmggKi87IH07CiAJCUExMDgyNkZBMUY1NzYy
OTIwMDQ3NzJBQyAvKiBXZWJQYW5lbC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEExMDgyNkY4MUY1NzYyOTIwMDQ3NzJBQyAvKiBXZWJQYW5lbC5tbSAq
LzsgfTsKKwkJQTEwODI2RkUxRjU4QTQzMzAwNDc3MkFDIC8qIE5TR3JhcGhpY3NTUEkuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExMDgyNkZEMUY1OEE0
MzMwMDQ3NzJBQyAvKiBOU0dyYXBoaWNzU1BJLmggKi87IH07CiAJCUExRjU1RENGMUY1NTI4RUMw
MEVEQjc1RiAvKiBNZXRhZGF0YVNQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQTFGNTVEQ0UxRjU1MjhFQzAwRURCNzVGIC8qIE1ldGFkYXRhU1BJLmgg
Ki87IH07CiAJCUEzMEQ0MTIxMUYwREQwRUEwMEI3MTk1NCAvKiBLaWxsUmluZy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTMwRDQxMUUxRjBERDBFQTAw
QjcxOTU0IC8qIEtpbGxSaW5nLmggKi87IH07CiAJCUEzMEQ0MTIyMUYwREQwRUEwMEI3MTk1NCAv
KiBLaWxsUmluZy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBBMzBENDExRjFGMEREMEVBMDBCNzE5NTQgLyogS2lsbFJpbmcuY3BwICovOyB9OwpAQCAt
MjIzLDYgKzIyNCw3IEBACiAJCUExMDgyNkYwMUY1NzNCQ0EwMDQ3NzJBQyAvKiBOU1Jlc3BvbmRl
clNQSS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBOU1Jlc3BvbmRlclNQSS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlBMTA4MjZGNzFGNTc2MjkyMDA0NzcyQUMgLyogV2ViUGFuZWwuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gV2ViUGFuZWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTEw
ODI2RjgxRjU3NjI5MjAwNDc3MkFDIC8qIFdlYlBhbmVsLm1tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gV2ViUGFuZWwubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUExMDgyNkZEMUY1
OEE0MzMwMDQ3NzJBQyAvKiBOU0dyYXBoaWNzU1BJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5TR3JhcGhp
Y3NTUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTFGNTVEQ0UxRjU1MjhFQzAw
RURCNzVGIC8qIE1ldGFkYXRhU1BJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1ldGFkYXRhU1BJLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUEzMEQ0MTFFMUYwREQwRUEwMEI3MTk1NCAvKiBL
aWxsUmluZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBLaWxsUmluZy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMzBENDExRjFGMEREMEVBMDBCNzE5NTQgLyog
S2lsbFJpbmcuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gS2lsbFJp
bmcuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzU1LDYgKzM1Nyw3IEBACiAJ
CQkJMEM3Nzg1NzUxRjQ1MTMwRjAwRjRFQkI2IC8qIE5TQXBwbGljYXRpb25TUEkuaCAqLywKIAkJ
CQkwQzc3ODU3NjFGNDUxMzBGMDBGNEVCQjYgLyogTlNFdmVudFNQSS5oICovLAogCQkJCTBDNzc4
NTc3MUY0NTEzMEYwMEY0RUJCNiAvKiBOU0ZvbnRTUEkuaCAqLywKKwkJCQlBMTA4MjZGRDFGNThB
NDMzMDA0NzcyQUMgLyogTlNHcmFwaGljc1NQSS5oICovLAogCQkJCTBDNzc4NTc4MUY0NTEzMEYw
MEY0RUJCNiAvKiBOU0ltbWVkaWF0ZUFjdGlvbkdlc3R1cmVSZWNvZ25pemVyU1BJLmggKi8sCiAJ
CQkJMEM3Nzg1NzkxRjQ1MTMwRjAwRjRFQkI2IC8qIE5TTWVudVNQSS5oICovLAogCQkJCTBDNzc4
NTdBMUY0NTEzMEYwMEY0RUJCNiAvKiBOU1Bhc3RlYm9hcmRTUEkuaCAqLywKQEAgLTU1MSw2ICs1
NTQsNyBAQAogCQkJCTBDMkRBMTRFMUYzQkVCNDkwMERCQzMxNyAvKiBOU0V4dGVuc2lvblNQSS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEMyREExNEYxRjNCRUI0OTAwREJDMzE3IC8qIE5TRmlsZU1h
bmFnZXJTUEkuaCBpbiBIZWFkZXJzICovLAogCQkJCTBDNzc4NTkwMUY0NTEzMEYwMEY0RUJCNiAv
KiBOU0ZvbnRTUEkuaCBpbiBIZWFkZXJzICovLAorCQkJCUExMDgyNkZFMUY1OEE0MzMwMDQ3NzJB
QyAvKiBOU0dyYXBoaWNzU1BJLmggaW4gSGVhZGVycyAqLywKIAkJCQkwQzc3ODU5MTFGNDUxMzBG
MDBGNEVCQjYgLyogTlNJbW1lZGlhdGVBY3Rpb25HZXN0dXJlUmVjb2duaXplclNQSS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMEM3Nzg1OTIxRjQ1MTMwRjAwRjRFQkI2IC8qIE5TTWVudVNQSS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMEM3Nzg1OTMxRjQ1MTMwRjAwRjRFQkI2IC8qIE5TUGFzdGVib2Fy
ZFNQSS5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFs
L3NwaS9jZy9Db3JlR3JhcGhpY3NTUEkuaCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2Nn
L0NvcmVHcmFwaGljc1NQSS5oCmluZGV4IDdjMjkxYzkxNGQ2OWY1NmQ4NmRiYjRhODgxZmIyMzE4
OWM1YTVhNWMuLjMyMjY1YTBlZjZkNGE4NzBhYjQxNmMyNDA0ZDkyZjRmYmQ5ZDZhODEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NnL0NvcmVHcmFwaGljc1NQSS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NnL0NvcmVHcmFwaGljc1NQSS5oCkBAIC0x
MzcsMjEgKzEzNyw3NCBAQCBzdGF0aWMgaW5saW5lIENHRmxvYXQgQ0dGbG9hdE1pbihDR0Zsb2F0
IGEsIENHRmxvYXQgYikgeyByZXR1cm4gaXNuYW4oYSkgPyBiIDogKAogCiB0eXBlZGVmIHN0cnVj
dCBDR0ZvbnRDYWNoZSBDR0ZvbnRDYWNoZTsKIAotI2lmIFBMQVRGT1JNKE1BQykKLXR5cGVkZWYg
dWludDMyX3QgQ0dTQ29ubmVjdGlvbklEOwotdHlwZWRlZiB1aW50MzJfdCBDR1NXaW5kb3dJRDsK
LXR5cGVkZWYgdWludDMyX3QgQ0dTV2luZG93Q291bnQ7Ci10eXBlZGVmIENHU1dpbmRvd0lEICpD
R1NXaW5kb3dJRExpc3Q7CisjaWYgUExBVEZPUk0oQ09DT0EpCiAKIGVudW0gewogICAgIGtDR1NX
aW5kb3dDYXB0dXJlTm9taW5hbFJlc29sdXRpb24gPSAweDAyMDAsCiAgICAga0NHU0NhcHR1cmVJ
Z25vcmVHbG9iYWxDbGlwU2hhcGUgPSAweDA4MDAsCiB9OwogdHlwZWRlZiB1aW50MzJfdCBDR1NX
aW5kb3dDYXB0dXJlT3B0aW9uczsKLSNlbmRpZgorCit0eXBlZGVmIENGX0VOVU0gKGludDMyX3Qs
IENHU3R5bGVEcmF3T3JkZXJpbmcpIHsKKyAgICBrQ0dTdHlsZURyYXdPcmRlcmluZ1N0eWxlT25s
eSA9IDAsCisgICAga0NHU3R5bGVEcmF3T3JkZXJpbmdCZWxvdyA9IDEsCisgICAga0NHU3R5bGVE
cmF3T3JkZXJpbmdBYm92ZSA9IDIsCit9OworCit0eXBlZGVmIENGX0VOVU0gKGludDMyX3QsIENH
Rm9jdXNSaW5nT3JkZXJpbmcpIHsKKyAgICBrQ0dGb2N1c1JpbmdPcmRlcmluZ05vbmUgPSBrQ0dT
dHlsZURyYXdPcmRlcmluZ1N0eWxlT25seSwKKyAgICBrQ0dGb2N1c1JpbmdPcmRlcmluZ0JlbG93
ID0ga0NHU3R5bGVEcmF3T3JkZXJpbmdCZWxvdywKKyAgICBrQ0dGb2N1c1JpbmdPcmRlcmluZ0Fi
b3ZlID0ga0NHU3R5bGVEcmF3T3JkZXJpbmdBYm92ZSwKK307CisKK3R5cGVkZWYgQ0ZfRU5VTSAo
aW50MzJfdCwgQ0dGb2N1c1JpbmdUaW50KSB7CisgICAga0NHRm9jdXNSaW5nVGludEJsdWUgPSAw
LAorICAgIGtDR0ZvY3VzUmluZ1RpbnRHcmFwaGl0ZSA9IDEsCit9OworCitzdHJ1Y3QgQ0dGb2N1
c1JpbmdTdHlsZSB7CisgICAgdW5zaWduZWQgaW50IHZlcnNpb247CisgICAgQ0dGb2N1c1JpbmdU
aW50IHRpbnQ7CisgICAgQ0dGb2N1c1JpbmdPcmRlcmluZyBvcmRlcmluZzsKKyAgICBDR0Zsb2F0
IGFscGhhOworICAgIENHRmxvYXQgcmFkaXVzOworICAgIENHRmxvYXQgdGhyZXNob2xkOworICAg
IENHUmVjdCBib3VuZHM7CisgICAgaW50IGFjY3VtdWxhdGU7Cit9OwordHlwZWRlZiBzdHJ1Y3Qg
Q0dGb2N1c1JpbmdTdHlsZSBDR0ZvY3VzUmluZ1N0eWxlOworCit0eXBlZGVmIENGX0VOVU0odWlu
dDMyX3QsIENHU05vdGlmaWNhdGlvblR5cGUpIHsKKyAgICBrQ0dTRmlyc3RDb25uZWN0aW9uTm90
aWZpY2F0aW9uID0gOTAwLAorICAgIGtDR1NGaXJzdFNlc3Npb25Ob3RpZmljYXRpb24gPSAxNTAw
LAorfTsKKworc3RhdGljIGNvbnN0IENHU05vdGlmaWNhdGlvblR5cGUga0NHU0Nvbm5lY3Rpb25X
aW5kb3dNb2RpZmljYXRpb25zU3RhcnRlZCA9IChDR1NOb3RpZmljYXRpb25UeXBlKShrQ0dTRmly
c3RDb25uZWN0aW9uTm90aWZpY2F0aW9uICsgNik7CitzdGF0aWMgY29uc3QgQ0dTTm90aWZpY2F0
aW9uVHlwZSBrQ0dTQ29ubmVjdGlvbldpbmRvd01vZGlmaWNhdGlvbnNTdG9wcGVkID0gKENHU05v
dGlmaWNhdGlvblR5cGUpKGtDR1NGaXJzdENvbm5lY3Rpb25Ob3RpZmljYXRpb24gKyA3KTsKK3N0
YXRpYyBjb25zdCBDR1NOb3RpZmljYXRpb25UeXBlIGtDR1Nlc3Npb25Db25zb2xlQ29ubmVjdCA9
IGtDR1NGaXJzdFNlc3Npb25Ob3RpZmljYXRpb247CitzdGF0aWMgY29uc3QgQ0dTTm90aWZpY2F0
aW9uVHlwZSBrQ0dTZXNzaW9uQ29uc29sZURpc2Nvbm5lY3QgPSAoQ0dTTm90aWZpY2F0aW9uVHlw
ZSkoa0NHU2Vzc2lvbkNvbnNvbGVDb25uZWN0ICsgMSk7CisKKyNlbmRpZiAvLyBQTEFURk9STShD
T0NPQSkKIAogI2VuZGlmIC8vIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCiAKKyNpZiBQTEFURk9S
TShDT0NPQSkKK3R5cGVkZWYgdWludDMyX3QgQ0dTQnl0ZUNvdW50OwordHlwZWRlZiB1aW50MzJf
dCBDR1NDb25uZWN0aW9uSUQ7Cit0eXBlZGVmIHVpbnQzMl90IENHU1dpbmRvd0NvdW50OwordHlw
ZWRlZiB1aW50MzJfdCBDR1NXaW5kb3dJRDsKKwordHlwZWRlZiBDR1NXaW5kb3dJRCogQ0dTV2lu
ZG93SURMaXN0OwordHlwZWRlZiBzdHJ1Y3QgQ0ZfQlJJREdFRF9UWVBFKGlkKSBDR1NSZWdpb25P
YmplY3QqIENHU1JlZ2lvbk9iajsKK3R5cGVkZWYgc3RydWN0IENGX0JSSURHRURfVFlQRShpZCkg
Q0dTdHlsZSogQ0dTdHlsZVJlZjsKKwordHlwZWRlZiB2b2lkKiBDR1NOb3RpZmljYXRpb25Bcmc7
Cit0eXBlZGVmIHZvaWQqIENHU05vdGlmaWNhdGlvbkRhdGE7CisKK3R5cGVkZWYgdm9pZCAoKkNH
U05vdGlmeUNvbm5lY3Rpb25Qcm9jUHRyKShDR1NOb3RpZmljYXRpb25UeXBlLCB2b2lkKiBkYXRh
LCB1aW50MzJfdCBkYXRhX2xlbmd0aCwgdm9pZCogYXJnLCBDR1NDb25uZWN0aW9uSUQpOwordHlw
ZWRlZiB2b2lkICgqQ0dTTm90aWZ5UHJvY1B0cikoQ0dTTm90aWZpY2F0aW9uVHlwZSwgdm9pZCog
ZGF0YSwgdWludDMyX3QgZGF0YV9sZW5ndGgsIHZvaWQqIGFyZyk7CisjZW5kaWYKKwogV1RGX0VY
VEVSTl9DX0JFR0lOCiAKIENHQ29sb3JSZWYgQ0dDb2xvclRyYW5zZm9ybUNvbnZlcnRDb2xvcihD
R0NvbG9yVHJhbnNmb3JtUmVmLCBDR0NvbG9yUmVmLCBDR0NvbG9yUmVuZGVyaW5nSW50ZW50KTsK
QEAgLTE4Niw2ICsyMzksOCBAQCBDR0RhdGFQcm92aWRlclJlZiBDR1BERkRvY3VtZW50R2V0RGF0
YVByb3ZpZGVyKENHUERGRG9jdW1lbnRSZWYpOwogCiBDR0ZvbnRBbnRpYWxpYXNpbmdTdHlsZSBD
R0NvbnRleHRHZXRGb250QW50aWFsaWFzaW5nU3R5bGUoQ0dDb250ZXh0UmVmKTsKIHZvaWQgQ0dD
b250ZXh0U2V0Rm9udEFudGlhbGlhc2luZ1N0eWxlKENHQ29udGV4dFJlZiwgQ0dGb250QW50aWFs
aWFzaW5nU3R5bGUpOworYm9vbCBDR0NvbnRleHREcmF3c1dpdGhDb3JyZWN0U2hhZG93T2Zmc2V0
cyhDR0NvbnRleHRSZWYpOworQ0dQYXR0ZXJuUmVmIENHUGF0dGVybkNyZWF0ZVdpdGhJbWFnZTIo
Q0dJbWFnZVJlZiwgQ0dBZmZpbmVUcmFuc2Zvcm0sIENHUGF0dGVyblRpbGluZyk7CiAKICNpZiAo
UExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTIw
MCkgfHwgUExBVEZPUk0oSU9TKQogYm9vbCBDR0NvbG9yU3BhY2VVc2VzRXh0ZW5kZWRSYW5nZShD
R0NvbG9yU3BhY2VSZWYpOwpAQCAtMjAzLDEwICsyNTgsMjEgQEAgQ0dDb2xvclNwYWNlUmVmIENH
SU9TdXJmYWNlQ29udGV4dEdldENvbG9yU3BhY2UoQ0dDb250ZXh0UmVmKTsKICNlbmRpZgogCiAj
aWYgUExBVEZPUk0oQ09DT0EpCi1DR1NSZWdpb25FbnVtZXJhdG9yT2JqIENHU1JlZ2lvbkVudW1l
cmF0b3IoQ0dSZWdpb25SZWYpOwotQ0dSZWN0KiBDR1NOZXh0UmVjdChjb25zdCBDR1NSZWdpb25F
bnVtZXJhdG9yT2JqKTsKLUNHRXJyb3IgQ0dTUmVsZWFzZVJlZ2lvbkVudW1lcmF0b3IoY29uc3Qg
Q0dTUmVnaW9uRW51bWVyYXRvck9iaik7CiBDR0NvbG9yU3BhY2VSZWYgQ0dDb250ZXh0Q29weURl
dmljZUNvbG9yU3BhY2UoQ0dDb250ZXh0UmVmKTsKK0NHRXJyb3IgQ0dTTmV3UmVnaW9uV2l0aFJl
Y3QoY29uc3QgQ0dSZWN0KiwgQ0dSZWdpb25SZWYqKTsKK0NHRXJyb3IgQ0dTUGFja2FnZXNFbmFi
bGVDb25uZWN0aW9uT2NjbHVzaW9uTm90aWZpY2F0aW9ucyhDR1NDb25uZWN0aW9uSUQsIGJvb2wg
ZmxhZywgYm9vbCogb3V0Q3VycmVudFZpc2liaWxpdHlTdGF0ZSk7CitDR0Vycm9yIENHU1BhY2th
Z2VzRW5hYmxlQ29ubmVjdGlvbldpbmRvd01vZGlmaWNhdGlvbk5vdGlmaWNhdGlvbnMoQ0dTQ29u
bmVjdGlvbklELCBib29sIGZsYWcsIGJvb2wqIG91dENvbm5lY3Rpb25Jc0N1cnJlbnRseUlkbGUp
OworQ0dFcnJvciBDR1NSZWdpc3RlckNvbm5lY3Rpb25Ob3RpZnlQcm9jKENHU0Nvbm5lY3Rpb25J
RCwgQ0dTTm90aWZ5Q29ubmVjdGlvblByb2NQdHIsIENHU05vdGlmaWNhdGlvblR5cGUsIHZvaWQq
IGFyZyk7CitDR0Vycm9yIENHU1JlZ2lzdGVyTm90aWZ5UHJvYyhDR1NOb3RpZnlQcm9jUHRyLCBD
R1NOb3RpZmljYXRpb25UeXBlLCB2b2lkKiBhcmcpOworQ0dFcnJvciBDR1NSZWxlYXNlUmVnaW9u
KGNvbnN0IENHUmVnaW9uUmVmIENGX1JFTEVBU0VTX0FSR1VNRU5UKTsKK0NHRXJyb3IgQ0dTUmVs
ZWFzZVJlZ2lvbkVudW1lcmF0b3IoY29uc3QgQ0dTUmVnaW9uRW51bWVyYXRvck9iaik7CitDR0Vy
cm9yIENHU1NldFdpbmRvd0FscGhhKENHU0Nvbm5lY3Rpb25JRCwgQ0dTV2luZG93SUQsIGZsb2F0
IGFscGhhKTsKK0NHRXJyb3IgQ0dTU2V0V2luZG93Q2xpcFNoYXBlKENHU0Nvbm5lY3Rpb25JRCwg
Q0dTV2luZG93SUQsIENHUmVnaW9uUmVmIHNoYXBlKTsKK0NHRXJyb3IgQ0dTU2V0V2luZG93V2Fy
cChDR1NDb25uZWN0aW9uSUQsIENHU1dpbmRvd0lELCBpbnQgdywgaW50IGgsIGNvbnN0IGZsb2F0
KiBtZXNoKTsKK0NHUmVjdCogQ0dTTmV4dFJlY3QoY29uc3QgQ0dTUmVnaW9uRW51bWVyYXRvck9i
aik7CitDR1NSZWdpb25FbnVtZXJhdG9yT2JqIENHU1JlZ2lvbkVudW1lcmF0b3IoQ0dSZWdpb25S
ZWYpOworQ0dTdHlsZVJlZiBDR1N0eWxlQ3JlYXRlRm9jdXNSaW5nV2l0aENvbG9yKGNvbnN0IENH
Rm9jdXNSaW5nU3R5bGUqLCBDR0NvbG9yUmVmKTsKK3ZvaWQgQ0dDb250ZXh0U2V0U3R5bGUoQ0dD
b250ZXh0UmVmLCBDR1N0eWxlUmVmKTsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oV0lOKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvbWFjL0hJU2VydmljZXNTUEkuaCBi
L1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL21hYy9ISVNlcnZpY2VzU1BJLmgKaW5kZXggOWYz
NWRjZDRkMDNhNTdhMDg2YjBhMzY1ZGZiMzlkZGZmY2M4MTk4NS4uYTM1NWI5NGZlNjMwOTJlZjVh
Y2QwYjVjOTVlMDNkZDQ2ZTk1MzgxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML3Bh
bC9zcGkvbWFjL0hJU2VydmljZXNTUEkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3Nw
aS9tYWMvSElTZXJ2aWNlc1NQSS5oCkBAIC0yOCwyMSArMjgsNDUgQEAKICNpZiBVU0UoQVBQTEVf
SU5URVJOQUxfU0RLKQogCiAjaW5jbHVkZSA8SElTZXJ2aWNlcy9BWFRleHRNYXJrZXIuaD4KKyNp
bmNsdWRlIDxISVNlcnZpY2VzL0NvcmVEcmFnLmg+CisKKyNlbHNlCisKK2VudW0geworICAgIGtD
b3JlRHJhZ0ltYWdlU3BlY1ZlcnNpb25PbmUgPSAxLAorfTsKKworc3RydWN0IENvcmVEcmFnSW1h
Z2VTcGVjIHsKKyAgICBVSW50MzIgdmVyc2lvbjsKKyAgICBTSW50MzIgcGl4ZWxzV2lkZTsKKyAg
ICBTSW50MzIgcGl4ZWxzSGlnaDsKKyAgICBTSW50MzIgYml0c1BlclNhbXBsZTsKKyAgICBTSW50
MzIgc2FtcGxlc1BlclBpeGVsOworICAgIFNJbnQzMiBiaXRzUGVyUGl4ZWw7CisgICAgU0ludDMy
IGJ5dGVzUGVyUm93OworICAgIEJvb2xlYW4gaXNQbGFuYXI7CisgICAgQm9vbGVhbiBoYXNBbHBo
YTsKKyAgICBjb25zdCBVSW50OCogZGF0YVs1XTsKK307CiAKICNlbmRpZgogCi10eXBlZGVmIGNv
bnN0IHN0cnVjdCBfX0FYVGV4dE1hcmtlciAqQVhUZXh0TWFya2VyUmVmOwotdHlwZWRlZiBjb25z
dCBzdHJ1Y3QgX19BWFRleHRNYXJrZXJSYW5nZSAqQVhUZXh0TWFya2VyUmFuZ2VSZWY7Cit0eXBl
ZGVmIGNvbnN0IHN0cnVjdCBfX0FYVGV4dE1hcmtlciogQVhUZXh0TWFya2VyUmVmOwordHlwZWRl
ZiBjb25zdCBzdHJ1Y3QgX19BWFRleHRNYXJrZXJSYW5nZSogQVhUZXh0TWFya2VyUmFuZ2VSZWY7
Cit0eXBlZGVmIHN0cnVjdCBDb3JlRHJhZ0ltYWdlU3BlYyBDb3JlRHJhZ0ltYWdlU3BlYzsKK3R5
cGVkZWYgc3RydWN0IE9wYXF1ZUNvcmVEcmFnKiBDb3JlRHJhZ1JlZjsKIAogV1RGX0VYVEVSTl9D
X0JFR0lOCiAKLUNGVHlwZUlEIEFYVGV4dE1hcmtlckdldFR5cGVJRCgpOwotQ0ZUeXBlSUQgQVhU
ZXh0TWFya2VyUmFuZ2VHZXRUeXBlSUQoKTsKLUFYVGV4dE1hcmtlclJlZiBBWFRleHRNYXJrZXJD
cmVhdGUoQ0ZBbGxvY2F0b3JSZWYsIGNvbnN0IFVJbnQ4KiBieXRlcywgQ0ZJbmRleCBsZW5ndGgp
OwotQ0ZJbmRleCBBWFRleHRNYXJrZXJHZXRMZW5ndGgoQVhUZXh0TWFya2VyUmVmKTsKLWNvbnN0
IFVJbnQ4KiBBWFRleHRNYXJrZXJHZXRCeXRlUHRyKEFYVGV4dE1hcmtlclJlZik7CiBBWFRleHRN
YXJrZXJSYW5nZVJlZiBBWFRleHRNYXJrZXJSYW5nZUNyZWF0ZShDRkFsbG9jYXRvclJlZiwgQVhU
ZXh0TWFya2VyUmVmIHN0YXJ0TWFya2VyLCBBWFRleHRNYXJrZXJSZWYgZW5kTWFya2VyKTsKK0FY
VGV4dE1hcmtlclJlZiBBWFRleHRNYXJrZXJDcmVhdGUoQ0ZBbGxvY2F0b3JSZWYsIGNvbnN0IFVJ
bnQ4KiBieXRlcywgQ0ZJbmRleCBsZW5ndGgpOwogQVhUZXh0TWFya2VyUmVmIEFYVGV4dE1hcmtl
clJhbmdlQ29weVN0YXJ0TWFya2VyKEFYVGV4dE1hcmtlclJhbmdlUmVmKTsKIEFYVGV4dE1hcmtl
clJlZiBBWFRleHRNYXJrZXJSYW5nZUNvcHlFbmRNYXJrZXIoQVhUZXh0TWFya2VyUmFuZ2VSZWYp
OworQ0ZJbmRleCBBWFRleHRNYXJrZXJHZXRMZW5ndGgoQVhUZXh0TWFya2VyUmVmKTsKK0NGVHlw
ZUlEIEFYVGV4dE1hcmtlckdldFR5cGVJRCgpOworQ0ZUeXBlSUQgQVhUZXh0TWFya2VyUmFuZ2VH
ZXRUeXBlSUQoKTsKK0NvcmVEcmFnUmVmIENvcmVEcmFnR2V0Q3VycmVudERyYWcoKTsKK09TU3Rh
dHVzIENvcmVEcmFnU2V0SW1hZ2UoQ29yZURyYWdSZWYsIENHUG9pbnQgaW1hZ2VPZmZzZXQsIENv
cmVEcmFnSW1hZ2VTcGVjKiwgQ0dTUmVnaW9uT2JqIGltYWdlU2hhcGUsIGZsb2F0IG92ZXJhbGxB
bHBoYSk7Citjb25zdCBVSW50OCogQVhUZXh0TWFya2VyR2V0Qnl0ZVB0cihBWFRleHRNYXJrZXJS
ZWYpOwogCiBXVEZfRVhURVJOX0NfRU5ECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwv
cGFsL3NwaS9tYWMvTlNHcmFwaGljc1NQSS5oIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkv
bWFjL05TR3JhcGhpY3NTUEkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zNzEwNDZmODcwMmFkM2YyYTgxODU1Yjlh
OTRhZTJjNmEyYTBiOGU5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3Bh
bC9zcGkvbWFjL05TR3JhcGhpY3NTUEkuaApAQCAtMCwwICsxLDU5IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I3ByYWdtYSBvbmNlCisKKyNpZiBQTEFURk9STShNQUMpCisKKyNpbXBvcnQgPEFwcEtpdC9BcHBL
aXQuaD4KKworI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCisKKyNpbXBvcnQgPEFwcEtpdC9O
U0dyYXBoaWNzQ29udGV4dFByaXZhdGUuaD4KKyNpbXBvcnQgPEFwcEtpdC9OU0dyYXBoaWNzX1By
aXZhdGUuaD4KKworI2Vsc2UKKworI2ltcG9ydCA8cGFsL3NwaS9jZy9Db3JlR3JhcGhpY3NTUEku
aD4KKworQGludGVyZmFjZSBOU0NHU0NvbnRleHQgOiBOU0dyYXBoaWNzQ29udGV4dCB7CisgICAg
Q0dDb250ZXh0UmVmIF9jZ3NDb250ZXh0OworfQorQGVuZAorCitAaW50ZXJmYWNlIE5TV2luZG93
R3JhcGhpY3NDb250ZXh0IDogTlNDR1NDb250ZXh0IHsKKyAgICBDR1NXaW5kb3dJRCBfY2dzV2lu
ZG93SUQ7Cit9CitAZW5kCisKKyNlbmRpZgorCitXVEZfRVhURVJOX0NfQkVHSU4KKworQk9PTCBO
U0luaXRpYWxpemVDR0ZvY3VzUmluZ1N0eWxlRm9yVGltZShOU0ZvY3VzUmluZ1BsYWNlbWVudCwg
Q0dGb2N1c1JpbmdTdHlsZSosIE5TVGltZUludGVydmFsKTsKKworV1RGX0VYVEVSTl9DX0VORAor
CisjZW5kaWYgLy8gUExBVEZPUk0oTUFDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAppbmRleCAxOGFjZGRiZTdlZmZmYTQyOWQxODU3
ODM5YWI2ZTY2NzQ2NmEzZDg1Li5jMTRiMmE1NWU2YWE3ZjkwZDIwMDNjNDY2ODQzNDMyMmUwODU0
NTlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c0NvbnRleHQuaApAQCAtNDQ1LDYgKzQ0NSw3IEBAIHB1YmxpYzoKICNpZiBQTEFURk9STShNQUMp
CiAgICAgdm9pZCBkcmF3Rm9jdXNSaW5nKGNvbnN0IFBhdGgmLCBkb3VibGUgdGltZU9mZnNldCwg
Ym9vbCYgbmVlZHNSZWRyYXcpOwogICAgIHZvaWQgZHJhd0ZvY3VzUmluZyhjb25zdCBWZWN0b3I8
RmxvYXRSZWN0PiYsIGRvdWJsZSB0aW1lT2Zmc2V0LCBib29sJiBuZWVkc1JlZHJhdyk7CisgICAg
c3RhdGljIENHQ29sb3JSZWYgZm9jdXNSaW5nQ29sb3IoKTsKICNlbmRpZgogCiAgICAgdm9pZCBz
ZXRMaW5lQ2FwKExpbmVDYXApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2VTb3VyY2UuY3BwCmluZGV4IDY2OTZjOTYwYTU4NzVmMDQzMTcyOWIxMTlhYjZiMjQx
MjdkN2E1Y2EuLjAyMjhlMzkyOWEyNjZlYTk3MzJiYmE4ZWU2MDU3M2ZhNTA5YTM1MGUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAKQEAg
LTE4NCw3ICsxODQsNyBAQCBTdWJzYW1wbGluZ0xldmVsIEltYWdlU291cmNlOjpzdWJzYW1wbGlu
Z0xldmVsRm9yU2NhbGVGYWN0b3IoR3JhcGhpY3NDb250ZXh0JiBjbwogewogI2lmIFVTRShDRykK
ICAgICAvLyBOZXZlciB1c2Ugc3Vic2FtcGxlZCBpbWFnZXMgZm9yIGRyYXdpbmcgaW50byBQREYg
Y29udGV4dHMuCi0gICAgaWYgKHdrQ0dDb250ZXh0SXNQREZDb250ZXh0KGNvbnRleHQucGxhdGZv
cm1Db250ZXh0KCkpKQorICAgIGlmIChDR0NvbnRleHRHZXRUeXBlKGNvbnRleHQucGxhdGZvcm1D
b250ZXh0KCkpID09IGtDR0NvbnRleHRUeXBlUERGKQogICAgICAgICByZXR1cm4gU3Vic2FtcGxp
bmdMZXZlbDo6RGVmYXVsdDsKIAogICAgIGZsb2F0IHNjYWxlID0gc3RkOjptaW4oZmxvYXQoMSks
IHN0ZDo6bWF4KHNjYWxlRmFjdG9yLndpZHRoKCksIHNjYWxlRmFjdG9yLmhlaWdodCgpKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0Nv
bnRleHRDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGlj
c0NvbnRleHRDRy5jcHAKaW5kZXggZDU4ODM5YWU1OGJiNTEwZDUwN2Q0NjViMDYxOTJlMDIwYmFk
NWFiZC4uNThlNTI3ODg2MmI3M2VlMGU0ZWNlOTU3ZGM0YjU3ZDk1Y2VlMjVlZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29u
dGV4dENHLmNwcApAQCAtOTg3LDcgKzk4Nyw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpjbGlw
T3V0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKICAgICAvLyBoYXMgY2VydGFpbiB0cmFuc2Zvcm1z
IHRoYXQgYXJlbid0IGp1c3QgYSB0cmFuc2xhdGlvbiBvciBhIHNjYWxlLiBBbmQgZHVlIHRvIDxy
ZGFyOi8vcHJvYmxlbS8xNDYzNDQ1Mz4KICAgICAvLyB3ZSBjYW5ub3QgdXNlIGl0IGluIGZvciBh
IHByaW50aW5nIGNvbnRleHQgZWl0aGVyLgogICAgIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgY3Rt
ID0gZ2V0Q1RNKCk7Ci0gICAgYm9vbCBjYW5Vc2VDR1JlY3RJbmZpbml0ZSA9ICF3a0NHQ29udGV4
dElzUERGQ29udGV4dChwbGF0Zm9ybUNvbnRleHQoKSkgJiYgKCFpc0FjY2VsZXJhdGVkQ29udGV4
dCgpIHx8ICghY3RtLmIoKSAmJiAhY3RtLmMoKSkpOworICAgIGJvb2wgY2FuVXNlQ0dSZWN0SW5m
aW5pdGUgPSBDR0NvbnRleHRHZXRUeXBlKHBsYXRmb3JtQ29udGV4dCgpKSAhPSBrQ0dDb250ZXh0
VHlwZVBERiAmJiAoIWlzQWNjZWxlcmF0ZWRDb250ZXh0KCkgfHwgKCFjdG0uYigpICYmICFjdG0u
YygpKSk7CiAgICAgQ0dSZWN0IHJlY3RzWzJdID0geyBjYW5Vc2VDR1JlY3RJbmZpbml0ZSA/IENH
UmVjdEluZmluaXRlIDogQ0dDb250ZXh0R2V0Q2xpcEJvdW5kaW5nQm94KHBsYXRmb3JtQ29udGV4
dCgpKSwgcmVjdCB9OwogICAgIENHQ29udGV4dEJlZ2luUGF0aChwbGF0Zm9ybUNvbnRleHQoKSk7
CiAgICAgQ0dDb250ZXh0QWRkUmVjdHMocGxhdGZvcm1Db250ZXh0KCksIHJlY3RzLCAyKTsKQEAg
LTEwODUsNyArMTA4NSw3IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0OjpzdXBwb3J0c1RyYW5zcGFy
ZW5jeUxheWVycygpCiAKIHN0YXRpYyB2b2lkIGFwcGx5U2hhZG93T2Zmc2V0V29ya2Fyb3VuZElm
TmVlZGVkKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgQ0dGbG9hdCYgeE9mZnNldCwg
Q0dGbG9hdCYgeU9mZnNldCkKIHsKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9T
KSB8fCBQTEFURk9STShXSU4pCiAgICAgVU5VU0VEX1BBUkFNKGNvbnRleHQpOwogICAgIFVOVVNF
RF9QQVJBTSh4T2Zmc2V0KTsKICAgICBVTlVTRURfUEFSQU0oeU9mZnNldCk7CkBAIC0xMDkzLDcg
KzEwOTMsNyBAQCBzdGF0aWMgdm9pZCBhcHBseVNoYWRvd09mZnNldFdvcmthcm91bmRJZk5lZWRl
ZChjb25zdCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsCiAgICAgaWYgKGNvbnRleHQuaXNBY2Nl
bGVyYXRlZENvbnRleHQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKHdrQ0dDb250ZXh0
RHJhd3NXaXRoQ29ycmVjdFNoYWRvd09mZnNldHMoY29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKSkp
CisgICAgaWYgKENHQ29udGV4dERyYXdzV2l0aENvcnJlY3RTaGFkb3dPZmZzZXRzKGNvbnRleHQu
cGxhdGZvcm1Db250ZXh0KCkpKQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBXb3JrIGFyb3Vu
ZCA8cmRhcjovL3Byb2JsZW0vNTUzOTM4OD4gYnkgZW5zdXJpbmcgdGhhdCB0aGUgb2Zmc2V0cyB3
aWxsIGdldCB0cnVuY2F0ZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NnL1BhdHRlcm5DRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9QYXR0ZXJuQ0cuY3BwCmluZGV4IDk4ZTY5ZGU4ZWQ4OWEyNGU4ODZhMTQyYTA4Mzk1OWUy
YzcyMTM1ZjAuLmQwZTIxYzg3M2FhMmRjMzBjNTNjYzhiYWI0ZjhiMDQxNDM0MDAwOTggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BhdHRlcm5DRy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGF0dGVybkNHLmNwcApA
QCAtMzEsOCArMzEsOCBAQAogCiAjaW5jbHVkZSAiQWZmaW5lVHJhbnNmb3JtLmgiCiAjaW5jbHVk
ZSAiR3JhcGhpY3NDb250ZXh0LmgiCi0KICNpbmNsdWRlIDxDb3JlR3JhcGhpY3MvQ29yZUdyYXBo
aWNzLmg+CisjaW5jbHVkZSA8cGFsL3NwaS9jZy9Db3JlR3JhcGhpY3NTUEkuaD4KICNpbmNsdWRl
IDx3dGYvTWFpblRocmVhZC5oPgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCkBAIC03NCw3ICs3NCw3
IEBAIENHUGF0dGVyblJlZiBQYXR0ZXJuOjpjcmVhdGVQbGF0Zm9ybVBhdHRlcm4oY29uc3QgQWZm
aW5lVHJhbnNmb3JtJiB1c2VyU3BhY2VUcmFuCiAgICAgLy8gSWYgd2UncmUgcmVwZWF0aW5nIGlu
IGJvdGggZGlyZWN0aW9ucywgd2UgY2FuIHVzZSBpbWFnZS1iYWNrZWQgcGF0dGVybnMKICAgICAv
LyBpbnN0ZWFkIG9mIGN1c3RvbSBwYXR0ZXJucywgYW5kIGF2b2lkIHRpbGluZy1lZGdlIHBpeGVs
IGNyYWNrcy4KICAgICBpZiAobV9yZXBlYXRYICYmIG1fcmVwZWF0WSkKLSAgICAgICAgcmV0dXJu
IHdrQ0dQYXR0ZXJuQ3JlYXRlV2l0aEltYWdlQW5kVHJhbnNmb3JtKHRpbGVJbWFnZSgpLm5hdGl2
ZUltYWdlKCkuZ2V0KCksIHBhdHRlcm5UcmFuc2Zvcm0sIHdrUGF0dGVyblRpbGluZ0NvbnN0YW50
U3BhY2luZyk7CisgICAgICAgIHJldHVybiBDR1BhdHRlcm5DcmVhdGVXaXRoSW1hZ2UyKHRpbGVJ
bWFnZSgpLm5hdGl2ZUltYWdlKCkuZ2V0KCksIHBhdHRlcm5UcmFuc2Zvcm0sIGtDR1BhdHRlcm5U
aWxpbmdDb25zdGFudFNwYWNpbmcpOwogCiAgICAgLy8gSWYgRkxUX01BWCBzaG91bGQgYWxzbyBi
ZSB1c2VkIGZvciB4U3RlcCBvciB5U3RlcCwgbm90aGluZyBpcyByZW5kZXJlZC4gVXNpbmcgZnJh
Y3Rpb25zIG9mIEZMVF9NQVggYWxzbwogICAgIC8vIHJlc3VsdCBpbiBub3RoaW5nIGJlaW5nIHJl
bmRlcmVkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29j
b2EvR3JhcGhpY3NDb250ZXh0Q29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRDb2NvYS5tbQppbmRleCA2N2Y0ZGViMTcyYjZjMGZl
MjNjMWIxZDFmYjA5ZWFiOGFkYWUxMzFiLi42NTEyMGZlZmM5NmVkOGViYWJiZmM1NmMwNTFhYTg5
OWI0OGJiZjNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
b2NvYS9HcmFwaGljc0NvbnRleHRDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRDb2NvYS5tbQpAQCAtMjksMTAgKzI5LDEz
IEBACiAjaW1wb3J0ICJHcmFwaGljc0NvbnRleHRDRy5oIgogI2ltcG9ydCAiR3JhcGhpY3NDb250
ZXh0UGxhdGZvcm1Qcml2YXRlQ0cuaCIKICNpbXBvcnQgIkludFJlY3QuaCIKKyNpbXBvcnQgPHBh
bC9zcGkvY2cvQ29yZUdyYXBoaWNzU1BJLmg+CisjaW1wb3J0IDxwYWwvc3BpL21hYy9OU0dyYXBo
aWNzU1BJLmg+CisjaW1wb3J0IDx3dGYvU3RkTGliRXh0cmFzLmg+CisKICNpZiBVU0UoQVBQS0lU
KQogI2ltcG9ydCA8QXBwS2l0L0FwcEtpdC5oPgogI2VuZGlmCi0jaW1wb3J0IDx3dGYvU3RkTGli
RXh0cmFzLmg+CiAKICNpZiBQTEFURk9STShJT1MpCiAjaW1wb3J0ICJDb2xvci5oIgpAQCAtNDMs
NyArNDYsNiBAQAogI2lmICFQTEFURk9STShJT1MpCiAjaW1wb3J0ICJMb2NhbEN1cnJlbnRHcmFw
aGljc0NvbnRleHQuaCIKICNlbmRpZgotI2ltcG9ydCAiV2ViQ29yZVN5c3RlbUludGVyZmFjZS5o
IgogCiBAY2xhc3MgTlNDb2xvcjsKIApAQCAtNTcsMTEgKzU5LDQ4IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIC8vIGV4Y2VwdGlvbnMgZm9yIHRob3NlLgogCiAjaWYgIVBMQVRGT1JNKElPUykKK0NH
Q29sb3JSZWYgR3JhcGhpY3NDb250ZXh0Ojpmb2N1c1JpbmdDb2xvcigpCit7CisgICAgc3RhdGlj
IENHQ29sb3JSZWYgY29sb3I7CisgICAgaWYgKCFjb2xvcikgeworICAgICAgICBDR0Zsb2F0IGNv
bG9yQ29tcG9uZW50c1tdID0geyAwLjUsIDAuNzUsIDEuMCwgMS4wIH07CisgICAgICAgIGF1dG8g
Y29sb3JTcGFjZSA9IGFkb3B0Q0YoQ0dDb2xvclNwYWNlQ3JlYXRlV2l0aE5hbWUoa0NHQ29sb3JT
cGFjZVNSR0IpKTsKKyAgICAgICAgY29sb3IgPSBDR0NvbG9yQ3JlYXRlKGNvbG9yU3BhY2UuZ2V0
KCksIGNvbG9yQ29tcG9uZW50cyk7CisgICAgfQorCisgICAgcmV0dXJuIGNvbG9yOworfQorCitz
dGF0aWMgYm9vbCBkcmF3Rm9jdXNSaW5nQXRUaW1lKENHQ29udGV4dFJlZiBjb250ZXh0LCBOU1Rp
bWVJbnRlcnZhbCB0aW1lT2Zmc2V0KQoreworICAgIENHRm9jdXNSaW5nU3R5bGUgZm9jdXNSaW5n
U3R5bGU7CisgICAgQk9PTCBuZWVkc1JlcGFpbnQgPSBOU0luaXRpYWxpemVDR0ZvY3VzUmluZ1N0
eWxlRm9yVGltZShOU0ZvY3VzUmluZ09ubHksICZmb2N1c1JpbmdTdHlsZSwgdGltZU9mZnNldCk7
CisKKyAgICAvLyBXZSB3YW50IHRvIHJlc3BlY3QgdGhlIENHQ29udGV4dCBjbGlwcGluZyBhbmQg
YWxzbyBub3Qgb3ZlcnBhaW50IGFueQorICAgIC8vIGV4aXN0aW5nIGZvY3VzIHJpbmcuIFRoZSB3
YXkgdG8gZG8gdGhpcyBpcyBzZXQgYWNjdW11bGF0ZSB0bworICAgIC8vIC0xLiBBY2NvcmRpbmcg
dG8gQ29yZUdyYXBoaWNzLCB0aGUgcmVhc29uaW5nIGZvciB0aGlzIGJlaGF2aW9yIGhhcyBiZWVu
CisgICAgLy8gbG9zdCBpbiB0aW1lLgorICAgIGZvY3VzUmluZ1N0eWxlLmFjY3VtdWxhdGUgPSAt
MTsKKyAgICBhdXRvIHN0eWxlID0gYWRvcHRDRihDR1N0eWxlQ3JlYXRlRm9jdXNSaW5nV2l0aENv
bG9yKCZmb2N1c1JpbmdTdHlsZSwgR3JhcGhpY3NDb250ZXh0Ojpmb2N1c1JpbmdDb2xvcigpKSk7
CisKKyAgICBDR0NvbnRleHRTYXZlR1N0YXRlKGNvbnRleHQpOworICAgIENHQ29udGV4dFNldFN0
eWxlKGNvbnRleHQsIHN0eWxlLmdldCgpKTsKKyAgICBDR0NvbnRleHRGaWxsUGF0aChjb250ZXh0
KTsKKyAgICBDR0NvbnRleHRSZXN0b3JlR1N0YXRlKGNvbnRleHQpOworCisgICAgcmV0dXJuIG5l
ZWRzUmVwYWludDsKK30KKworc3RhdGljIHZvaWQgZHJhd0ZvY3VzUmluZyhDR0NvbnRleHRSZWYg
Y29udGV4dCkKK3sKKyAgICBkcmF3Rm9jdXNSaW5nQXRUaW1lKGNvbnRleHQsIHN0ZDo6bnVtZXJp
Y19saW1pdHM8ZG91YmxlPjo6bWF4KCkpOworfQorCiBzdGF0aWMgdm9pZCBkcmF3Rm9jdXNSaW5n
VG9Db250ZXh0KENHQ29udGV4dFJlZiBjb250ZXh0LCBDR1BhdGhSZWYgZm9jdXNSaW5nUGF0aCkK
IHsKICAgICBDR0NvbnRleHRCZWdpblBhdGgoY29udGV4dCk7CiAgICAgQ0dDb250ZXh0QWRkUGF0
aChjb250ZXh0LCBmb2N1c1JpbmdQYXRoKTsKLSAgICB3a0RyYXdGb2N1c1JpbmcoY29udGV4dCwg
bnVsbHB0ciwgMCk7CisgICAgZHJhd0ZvY3VzUmluZyhjb250ZXh0KTsKIH0KIAogc3RhdGljIGJv
b2wgZHJhd0ZvY3VzUmluZ1RvQ29udGV4dEF0VGltZShDR0NvbnRleHRSZWYgY29udGV4dCwgQ0dQ
YXRoUmVmIGZvY3VzUmluZ1BhdGgsIGRvdWJsZSB0aW1lT2Zmc2V0KQpAQCAtNjksNyArMTA4LDcg
QEAgc3RhdGljIGJvb2wgZHJhd0ZvY3VzUmluZ1RvQ29udGV4dEF0VGltZShDR0NvbnRleHRSZWYg
Y29udGV4dCwgQ0dQYXRoUmVmIGZvY3VzUmkKICAgICBVTlVTRURfUEFSQU0odGltZU9mZnNldCk7
CiAgICAgQ0dDb250ZXh0QmVnaW5QYXRoKGNvbnRleHQpOwogICAgIENHQ29udGV4dEFkZFBhdGgo
Y29udGV4dCwgZm9jdXNSaW5nUGF0aCk7Ci0gICAgcmV0dXJuIHdrRHJhd0ZvY3VzUmluZ0F0VGlt
ZShjb250ZXh0LCBzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46Om1heCgpKTsKKyAgICByZXR1
cm4gZHJhd0ZvY3VzUmluZ0F0VGltZShjb250ZXh0LCBzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJs
ZT46Om1heCgpKTsKIH0KICNlbmRpZiAvLyAhUExBVEZPUk0oSU9TKQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViQ29yZVN5c3RlbUludGVyZmFjZUlPUy5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlSU9TLm1t
CmluZGV4IDA5YTE4MjgxNGQxNDAxM2I3Yzg4ZThlZWJmMDNkOWFlMGNmYTI4NjkuLjc1N2QwNDVm
NWM1ODU0NDQ5NmYyZGQ2OTA1MGJkMWFmODY4YzJlZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2lvcy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlSU9TLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlSU9TLm1tCkBAIC0y
NywxMCArMjcsOCBAQAogI2ltcG9ydCAiV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oIgogCiBXRUJD
T1JFX0VYUE9SVCB2b2lkICgqd2tDQUxheWVyRW51bWVyYXRlUmVjdHNCZWluZ0RyYXduV2l0aEJs
b2NrKShDQUxheWVyICosIENHQ29udGV4dFJlZiBjb250ZXh0LCB2b2lkICheYmxvY2spKENHUmVj
dCByZWN0KSk7Ci1XRUJDT1JFX0VYUE9SVCBDR1BhdHRlcm5SZWYgKCp3a0NHUGF0dGVybkNyZWF0
ZVdpdGhJbWFnZUFuZFRyYW5zZm9ybSkoQ0dJbWFnZVJlZiwgQ0dBZmZpbmVUcmFuc2Zvcm0sIGlu
dCk7CiBXRUJDT1JFX0VYUE9SVCB2b2lkICgqd2tDbGVhckdseXBoVmVjdG9yKSh2b2lkKiBnbHlw
aHMpOwogV0VCQ09SRV9FWFBPUlQgT1NTdGF0dXMgKCp3a0NvbnZlcnRDaGFyVG9HbHlwaHMpKHZv
aWQqIHN0eWxlR3JvdXAsIGNvbnN0IFVuaUNoYXIqLCB1bnNpZ25lZCBudW1DaGFyYWN0ZXJzLCB2
b2lkKiBnbHlwaHMpOwotV0VCQ09SRV9FWFBPUlQgYm9vbCAoKndrQ0dDb250ZXh0SXNQREZDb250
ZXh0KShDR0NvbnRleHRSZWYpOwogV0VCQ09SRV9FWFBPUlQgaWQgKCp3a0NyZWF0ZU5TVVJMQ29u
bmVjdGlvbkRlbGVnYXRlUHJveHkpKHZvaWQpOwogV0VCQ09SRV9FWFBPUlQgdm9pZCAoKndrU2V0
Q09OTkVDVFByb3h5Rm9yU3RyZWFtKShDRlJlYWRTdHJlYW1SZWYsIENGU3RyaW5nUmVmIHByb3h5
SG9zdCwgQ0ZOdW1iZXJSZWYgcHJveHlQb3J0KTsKIFdFQkNPUkVfRVhQT1JUIHZvaWQgKCp3a1Nl
dENPTk5FQ1RQcm94eUF1dGhvcml6YXRpb25Gb3JTdHJlYW0pKENGUmVhZFN0cmVhbVJlZiwgQ0ZT
dHJpbmdSZWYgcHJveHlBdXRob3JpemF0aW9uU3RyaW5nKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0KaW5kZXggMjBlNjM1YzA5MDVhZTg5NmM3YmI1NDIx
Yzg1NmIyMWIyYTQ0NmI0OS4uYTM4NzBjZTRkZTk4MDFjZTg2NGM0YTQ0MWJhMDYwZmEwMDgyNmI1
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0KQEAg
LTUyLDYgKzUyLDggQEAKICNpbXBvcnQgIldlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaCIKICNpbXBv
cnQgIldlYk5TQXR0cmlidXRlZFN0cmluZ0V4dHJhcy5oIgogI2ltcG9ydCAibWFya3VwLmgiCisj
aW1wb3J0IDxwYWwvc3BpL2NnL0NvcmVHcmFwaGljc1NQSS5oPgorI2ltcG9ydCA8cGFsL3NwaS9t
YWMvSElTZXJ2aWNlc1NQSS5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogI2ltcG9ydCA8
d3RmL1N0ZExpYkV4dHJhcy5oPgogI2ltcG9ydCA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgpA
QCAtNjY5LDYgKzY3MSw4MCBAQCBWZWN0b3I8U3RyaW5nPiBQYXN0ZWJvYXJkOjpyZWFkRmlsZW5h
bWVzKCkKIH0KIAogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCitzdGF0aWMgdm9pZCBmbGlwSW1h
Z2VTcGVjKENvcmVEcmFnSW1hZ2VTcGVjKiBpbWFnZVNwZWMpCit7CisgICAgdW5zaWduZWQgY2hh
ciogdGVtcFJvdyA9ICh1bnNpZ25lZCBjaGFyKilmYXN0TWFsbG9jKGltYWdlU3BlYy0+Ynl0ZXNQ
ZXJSb3cpOworICAgIGludCBwbGFuZXMgPSBpbWFnZVNwZWMtPmlzUGxhbmFyID8gaW1hZ2VTcGVj
LT5zYW1wbGVzUGVyUGl4ZWwgOiAxOworCisgICAgZm9yIChpbnQgcCA9IDA7IHAgPCBwbGFuZXM7
ICsrcCkgeworICAgICAgICB1bnNpZ25lZCBjaGFyKiB0b3BSb3cgPSAodW5zaWduZWQgY2hhciop
aW1hZ2VTcGVjLT5kYXRhW3BdOworICAgICAgICB1bnNpZ25lZCBjaGFyKiBib3RSb3cgPSB0b3BS
b3cgKyAoaW1hZ2VTcGVjLT5waXhlbHNIaWdoIC0gMSkgKiBpbWFnZVNwZWMtPmJ5dGVzUGVyUm93
OworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGltYWdlU3BlYy0+cGl4ZWxzSGlnaCAvIDI7
ICsraSwgdG9wUm93ICs9IGltYWdlU3BlYy0+Ynl0ZXNQZXJSb3csIGJvdFJvdyAtPSBpbWFnZVNw
ZWMtPmJ5dGVzUGVyUm93KSB7CisgICAgICAgICAgICBiY29weSh0b3BSb3csIHRlbXBSb3csIGlt
YWdlU3BlYy0+Ynl0ZXNQZXJSb3cpOworICAgICAgICAgICAgYmNvcHkoYm90Um93LCB0b3BSb3cs
IGltYWdlU3BlYy0+Ynl0ZXNQZXJSb3cpOworICAgICAgICAgICAgYmNvcHkodGVtcFJvdywgYm90
Um93LCBpbWFnZVNwZWMtPmJ5dGVzUGVyUm93KTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGZh
c3RGcmVlKHRlbXBSb3cpOworfQorCitzdGF0aWMgdm9pZCBzZXREcmFnSW1hZ2VJbXBsKE5TSW1h
Z2UgKmltYWdlLCBOU1BvaW50IG9mZnNldCkKK3sKKyAgICBib29sIGZsaXBJbWFnZTsKKyAgICBO
U1NpemUgaW1hZ2VTaXplID0gaW1hZ2Uuc2l6ZTsKKyAgICBDR1JlY3QgaW1hZ2VSZWN0ID0gQ0dS
ZWN0TWFrZSgwLCAwLCBpbWFnZVNpemUud2lkdGgsIGltYWdlU2l6ZS5oZWlnaHQpOworICAgIE5T
SW1hZ2VSZXAgKmltYWdlUmVwID0gW2ltYWdlIGJlc3RSZXByZXNlbnRhdGlvbkZvclJlY3Q6TlNS
ZWN0RnJvbUNHUmVjdChpbWFnZVJlY3QpIGNvbnRleHQ6bmlsIGhpbnRzOm5pbF07CisgICAgUmV0
YWluUHRyPE5TQml0bWFwSW1hZ2VSZXA+IGJpdG1hcEltYWdlOworICAgIGlmICghaW1hZ2VSZXAg
fHwgIVtpbWFnZVJlcCBpc0tpbmRPZkNsYXNzOltOU0JpdG1hcEltYWdlUmVwIGNsYXNzXV0gfHwg
IU5TRXF1YWxTaXplcyhpbWFnZVJlcC5zaXplLCBpbWFnZVNpemUpKSB7CisgICAgICAgIFtpbWFn
ZSBsb2NrRm9jdXNdOworICAgICAgICBiaXRtYXBJbWFnZSA9IGFkb3B0TlMoW1tOU0JpdG1hcElt
YWdlUmVwIGFsbG9jXSBpbml0V2l0aEZvY3VzZWRWaWV3UmVjdDoqKE5TUmVjdCopJmltYWdlUmVj
dF0pOworICAgICAgICBbaW1hZ2UgdW5sb2NrRm9jdXNdOworICAgICAgICAKKyAgICAgICAgLy8g
d2UgbWF5IGhhdmUgdG8gZmxpcCB0aGUgYml0cyB3ZSBqdXN0IHJlYWQgaWYgdGhlIGltYWdlIHdh
cyBmbGlwcGVkIHNpbmNlIGl0IG1lYW5zIHRoZSBjYWNoZSB3YXMgYWxzbworICAgICAgICAvLyBh
bmQgQ29yZURyYWdTZXRJbWFnZSBjYW4ndCB0YWtlIGEgdHJhbnNmb3JtIGZvciByZW5kZXJpbmcu
CisjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcHVzaAorI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGlj
IGlnbm9yZWQgIi1XZGVwcmVjYXRlZC1kZWNsYXJhdGlvbnMiCisgICAgICAgIGZsaXBJbWFnZSA9
IGltYWdlLmlzRmxpcHBlZDsKKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwb3AKKyAgICB9IGVs
c2UgeworICAgICAgICBmbGlwSW1hZ2UgPSBmYWxzZTsKKyAgICAgICAgYml0bWFwSW1hZ2UgPSAo
TlNCaXRtYXBJbWFnZVJlcCAqKWltYWdlUmVwOworICAgIH0KKyAgICBBU1NFUlQoYml0bWFwSW1h
Z2UpOworCisgICAgQ29yZURyYWdJbWFnZVNwZWMgaW1hZ2VTcGVjOworICAgIGltYWdlU3BlYy52
ZXJzaW9uID0ga0NvcmVEcmFnSW1hZ2VTcGVjVmVyc2lvbk9uZTsKKyAgICBpbWFnZVNwZWMucGl4
ZWxzV2lkZSA9IFtiaXRtYXBJbWFnZSBwaXhlbHNXaWRlXTsKKyAgICBpbWFnZVNwZWMucGl4ZWxz
SGlnaCA9IFtiaXRtYXBJbWFnZSBwaXhlbHNIaWdoXTsKKyAgICBpbWFnZVNwZWMuYml0c1BlclNh
bXBsZSA9IFtiaXRtYXBJbWFnZSBiaXRzUGVyU2FtcGxlXTsKKyAgICBpbWFnZVNwZWMuc2FtcGxl
c1BlclBpeGVsID0gW2JpdG1hcEltYWdlIHNhbXBsZXNQZXJQaXhlbF07CisgICAgaW1hZ2VTcGVj
LmJpdHNQZXJQaXhlbCA9IFtiaXRtYXBJbWFnZSBiaXRzUGVyUGl4ZWxdOworICAgIGltYWdlU3Bl
Yy5ieXRlc1BlclJvdyA9IFtiaXRtYXBJbWFnZSBieXRlc1BlclJvd107CisgICAgaW1hZ2VTcGVj
LmlzUGxhbmFyID0gW2JpdG1hcEltYWdlIGlzUGxhbmFyXTsKKyAgICBpbWFnZVNwZWMuaGFzQWxw
aGEgPSBbYml0bWFwSW1hZ2UgaGFzQWxwaGFdOworICAgIFtiaXRtYXBJbWFnZSBnZXRCaXRtYXBE
YXRhUGxhbmVzOih1bnNpZ25lZCBjaGFyKiopaW1hZ2VTcGVjLmRhdGFdOworCisgICAgLy8gaWYg
aW1hZ2Ugd2FzIGZsaXBwZWQsIHdlIGhhdmUgYW4gdXBzaWRlIGRvd24gYml0bWFwIHNpbmNlIHRo
ZSBjYWNoZSBpcyByZW5kZXJlZCBmbGlwcGVkCisgICAgaWYgKGZsaXBJbWFnZSkKKyAgICAgICAg
ZmxpcEltYWdlU3BlYygmaW1hZ2VTcGVjKTsKKworICAgIENHU1JlZ2lvbk9iaiBpbWFnZVNoYXBl
OworICAgIE9TU3RhdHVzIGVycm9yID0gQ0dTTmV3UmVnaW9uV2l0aFJlY3QoJmltYWdlUmVjdCwg
JmltYWdlU2hhcGUpOworICAgIEFTU0VSVChlcnJvciA9PSBrQ0dFcnJvclN1Y2Nlc3MpOworICAg
IGlmIChlcnJvciAhPSBrQ0dFcnJvclN1Y2Nlc3MpCisgICAgICAgIHJldHVybjsKKworICAgIC8v
IG1ha2Ugc3VyZSBpbWFnZSBoYXMgaW50ZWdlciBvZmZzZXQKKyAgICBDR1BvaW50IGltYWdlT2Zm
c2V0ID0geyAtb2Zmc2V0LngsIC0oaW1hZ2VTaXplLmhlaWdodCAtIG9mZnNldC55KSB9OworICAg
IGltYWdlT2Zmc2V0LnggPSBmbG9vcihpbWFnZU9mZnNldC54ICsgMC41KTsKKyAgICBpbWFnZU9m
ZnNldC55ID0gZmxvb3IoaW1hZ2VPZmZzZXQueSArIDAuNSk7CisKKyAgICBlcnJvciA9IENvcmVE
cmFnU2V0SW1hZ2UoQ29yZURyYWdHZXRDdXJyZW50RHJhZygpLCBpbWFnZU9mZnNldCwgJmltYWdl
U3BlYywgaW1hZ2VTaGFwZSwgMS4wKTsKKyAgICBDR1NSZWxlYXNlUmVnaW9uKGltYWdlU2hhcGUp
OworICAgIEFTU0VSVChlcnJvciA9PSBrQ0dFcnJvclN1Y2Nlc3MpOworfQorCiB2b2lkIFBhc3Rl
Ym9hcmQ6OnNldERyYWdJbWFnZShEcmFnSW1hZ2UgaW1hZ2UsIGNvbnN0IEludFBvaW50JiBsb2Nh
dGlvbikKIHsKICAgICAvLyBEb24ndCBhbGxvdyBzZXR0aW5nIHRoZSBkcmFnIGltYWdlIGlmIHNv
bWVvbmUga2VwdCBhIHBhc3RlYm9hcmQgYW5kIGlzIHRyeWluZyB0byBzZXQgdGhlIGltYWdlIHRv
byBsYXRlLgpAQCAtNjc3LDcgKzc1Myw3IEBAIHZvaWQgUGFzdGVib2FyZDo6c2V0RHJhZ0ltYWdl
KERyYWdJbWFnZSBpbWFnZSwgY29uc3QgSW50UG9pbnQmIGxvY2F0aW9uKQogCiAgICAgLy8gRGFz
aGJvYXJkIHdhbnRzIHRvIGJlIGFibGUgdG8gc2V0IHRoZSBkcmFnIGltYWdlIGR1cmluZyBkcmFn
Z2luZywgYnV0IENvY29hIGRvZXMgbm90IGFsbG93IHRoaXMuCiAgICAgLy8gSW5zdGVhZCB3ZSBt
dXN0IGRyb3AgZG93biB0byB0aGUgQ29yZUdyYXBoaWNzIEFQSS4KLSAgICB3a1NldERyYWdJbWFn
ZShpbWFnZS5nZXQoKS5nZXQoKSwgbG9jYXRpb24pOworICAgIHNldERyYWdJbWFnZUltcGwoaW1h
Z2UuZ2V0KCkuZ2V0KCksIGxvY2F0aW9uKTsKIAogICAgIC8vIEhhY2s6IFdlIG11c3QgcG9zdCBh
biBldmVudCB0byB3YWtlIHVwIHRoZSBOU0RyYWdNYW5hZ2VyLCB3aGljaCBpcyBzaXR0aW5nIGlu
IGEgbmV4dEV2ZW50IGNhbGwKICAgICAvLyB1cCB0aGUgc3RhY2sgZnJvbSB1cyBiZWNhdXNlIHRo
ZSBDb3JlRm91bmRhdGlvbiBkcmFnIG1hbmFnZXIgZG9lcyBub3QgdXNlIHRoZSBydW4gbG9vcCBi
eSBpdHNlbGYuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZv
cm1FdmVudEZhY3RvcnlNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZv
cm1FdmVudEZhY3RvcnlNYWMubW0KaW5kZXggNzdiOWNiOTYzNWJiZmIwYmMyYzU0NTQwYmZmNjQw
NTE3MWI3YzU1OS4uOTI5YWE1NzU4ZjNlMWRiY2NjNTkwMDE4OTI5N2ViMTVlNTcwMTE4NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtRXZlbnRGYWN0b3J5
TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybUV2ZW50RmFj
dG9yeU1hYy5tbQpAQCAtNjc2LDcgKzY3Niw3IEBAIHN0YXRpYyBpbnQgdHlwZUZvckV2ZW50KE5T
RXZlbnQgKmV2ZW50KQogewogICAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KFtOU01lbnUgbWVu
dVR5cGVGb3JFdmVudDpldmVudF0pOwogfQotICAgIAorCiB2b2lkIGdldFdoZWVsRXZlbnREZWx0
YXMoTlNFdmVudCAqZXZlbnQsIGZsb2F0JiBkZWx0YVgsIGZsb2F0JiBkZWx0YVksIEJPT0wmIGNv
bnRpbnVvdXMpCiB7CiAgICAgQVNTRVJUKGV2ZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21hYy9TY3JvbGxiYXJUaGVtZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21hYy9TY3JvbGxiYXJUaGVtZU1hYy5tbQppbmRleCBjNGMyODc3NjgzNTc0OTZhZWIy
ODhmYTQxZjBkZDk1ZDJkN2NjMjg4Li42ZDA1Yjg2YzYzZDA1ZjdiNmQxNDczMTdlZmQyN2ZmMzQx
NTgzMTkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsYmFy
VGhlbWVNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbGJhclRo
ZW1lTWFjLm1tCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAiU2Nyb2xsVmlldy5oIgogI2lu
Y2x1ZGUgIldlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaCIKICNpbmNsdWRlIDxDYXJib24vQ2FyYm9u
Lmg+CisjaW5jbHVkZSA8cGFsL3NwaS9jZy9Db3JlR3JhcGhpY3NTUEkuaD4KICNpbmNsdWRlIDxw
YWwvc3BpL21hYy9OU1Njcm9sbGVySW1wU1BJLmg+CiAjaW5jbHVkZSA8d3RmL0Jsb2NrT2JqQ0V4
Y2VwdGlvbnMuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgpAQCAtNTczLDcgKzU3NCw3IEBA
IHN0YXRpYyBSZXRhaW5QdHI8Q0dDb2xvclJlZj4gbGluZW5CYWNrZ3JvdW5kQ29sb3IoKQogICAg
IGlmICghY2dJbWFnZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBSZXRhaW5QdHI8
Q0dQYXR0ZXJuUmVmPiBwYXR0ZXJuID0gYWRvcHRDRih3a0NHUGF0dGVybkNyZWF0ZVdpdGhJbWFn
ZUFuZFRyYW5zZm9ybShjZ0ltYWdlLCBDR0FmZmluZVRyYW5zZm9ybUlkZW50aXR5LCB3a1BhdHRl
cm5UaWxpbmdOb0Rpc3RvcnRpb24pKTsKKyAgICBSZXRhaW5QdHI8Q0dQYXR0ZXJuUmVmPiBwYXR0
ZXJuID0gYWRvcHRDRihDR1BhdHRlcm5DcmVhdGVXaXRoSW1hZ2UyKGNnSW1hZ2UsIENHQWZmaW5l
VHJhbnNmb3JtSWRlbnRpdHksIGtDR1BhdHRlcm5UaWxpbmdOb0Rpc3RvcnRpb24pKTsKICAgICBS
ZXRhaW5QdHI8Q0dDb2xvclNwYWNlUmVmPiBjb2xvclNwYWNlID0gYWRvcHRDRihDR0NvbG9yU3Bh
Y2VDcmVhdGVQYXR0ZXJuKDApKTsKIAogICAgIGNvbnN0IENHRmxvYXQgYWxwaGEgPSAxLjA7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvVGhlbWVNYWMubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvVGhlbWVNYWMubW0KaW5kZXggOTBmMTA0MWVmZjdmMGM2
NDdkNmY4MzkxYzAyN2Y1M2QxYWI0NDcxNC4uNWNkZTU0ODhhOWYxMDA1NmRmZDI0NTIwMWQyMjBk
NjRiM2IzMTJhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1RoZW1l
TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9UaGVtZU1hYy5tbQpAQCAt
MzYsNiArMzYsNyBAQAogI2ltcG9ydCAiV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oIgogI2ltcG9y
dCA8Q2FyYm9uL0NhcmJvbi5oPgogI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9OU0J1dHRvbkNlbGxT
UEkuaD4KKyNpbXBvcnQgPHBhbC9zcGkvbWFjL05TR3JhcGhpY3NTUEkuaD4KICNpbXBvcnQgPHd0
Zi9CbG9ja09iakNFeGNlcHRpb25zLmg+CiAjaW1wb3J0IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4K
ICNpbXBvcnQgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KQEAgLTM0OSw5ICszNTAsMzIgQEAgc3RhdGlj
IE5TQnV0dG9uQ2VsbCAqc2hhcmVkQ2hlY2tib3hDZWxsKGNvbnN0IENvbnRyb2xTdGF0ZXMmIHN0
YXRlcywgY29uc3QgSW50U2kKICAgICByZXR1cm4gY2hlY2tib3hDZWxsOwogfQogCitzdGF0aWMg
Ym9vbCBkcmF3Q2VsbEZvY3VzUmluZ1dpdGhGcmFtZUF0VGltZShOU0NlbGwgKmNlbGwsIE5TUmVj
dCBjZWxsRnJhbWUsIE5TVmlldyAqY29udHJvbFZpZXcsIE5TVGltZUludGVydmFsIHRpbWVPZmZz
ZXQpCit7CisgICAgQ0dDb250ZXh0UmVmIGNnQ29udGV4dCA9IChDR0NvbnRleHRSZWYpW1tOU0dy
YXBoaWNzQ29udGV4dCBjdXJyZW50Q29udGV4dF0gZ3JhcGhpY3NQb3J0XTsKKyAgICBDR0NvbnRl
eHRTYXZlR1N0YXRlKGNnQ29udGV4dCk7CisKKyAgICBDR0ZvY3VzUmluZ1N0eWxlIGZvY3VzUmlu
Z1N0eWxlOworICAgIGJvb2wgbmVlZHNSZXBhaW50ID0gTlNJbml0aWFsaXplQ0dGb2N1c1JpbmdT
dHlsZUZvclRpbWUoTlNGb2N1c1JpbmdPbmx5LCAmZm9jdXNSaW5nU3R5bGUsIHRpbWVPZmZzZXQp
OworICAgIC8vIFdlIHdhbnQgdG8gcmVzcGVjdCB0aGUgQ0dDb250ZXh0IGNsaXBwaW5nIGFuZCBh
bHNvIG5vdCBvdmVycGFpbnQgYW55CisgICAgLy8gZXhpc3RpbmcgZm9jdXMgcmluZy4gVGhlIHdh
eSB0byBkbyB0aGlzIGlzIHNldCBhY2N1bXVsYXRlIHRvCisgICAgLy8gLTEuIEFjY29yZGluZyB0
byBDb3JlR3JhcGhpY3MsIHRoZSByZWFzb25pbmcgZm9yIHRoaXMgYmVoYXZpb3IgaGFzIGJlZW4K
KyAgICAvLyBsb3N0IGluIHRpbWUuCisgICAgZm9jdXNSaW5nU3R5bGUuYWNjdW11bGF0ZSA9IC0x
OworICAgIGF1dG8gc3R5bGUgPSBhZG9wdENGKENHU3R5bGVDcmVhdGVGb2N1c1JpbmdXaXRoQ29s
b3IoJmZvY3VzUmluZ1N0eWxlLCBHcmFwaGljc0NvbnRleHQ6OmZvY3VzUmluZ0NvbG9yKCkpKTsK
KyAgICBDR0NvbnRleHRTZXRTdHlsZShjZ0NvbnRleHQsIHN0eWxlLmdldCgpKTsKKworICAgIENH
Q29udGV4dEJlZ2luVHJhbnNwYXJlbmN5TGF5ZXJXaXRoUmVjdChjZ0NvbnRleHQsIE5TUmVjdFRv
Q0dSZWN0KGNlbGxGcmFtZSksIG51bGxwdHIpOworICAgIFtjZWxsIGRyYXdGb2N1c1JpbmdNYXNr
V2l0aEZyYW1lOmNlbGxGcmFtZSBpblZpZXc6Y29udHJvbFZpZXddOworICAgIENHQ29udGV4dEVu
ZFRyYW5zcGFyZW5jeUxheWVyKGNnQ29udGV4dCk7CisgICAgQ0dDb250ZXh0UmVzdG9yZUdTdGF0
ZShjZ0NvbnRleHQpOworCisgICAgcmV0dXJuIG5lZWRzUmVwYWludDsKK30KKwogc3RhdGljIGJv
b2wgZHJhd0NlbGxGb2N1c1JpbmcoTlNDZWxsICpjZWxsLCBOU1JlY3QgY2VsbEZyYW1lLCBOU1Zp
ZXcgKmNvbnRyb2xWaWV3KQogewotICAgIHdrRHJhd0NlbGxGb2N1c1JpbmdXaXRoRnJhbWVBdFRp
bWUoY2VsbCwgY2VsbEZyYW1lLCBjb250cm9sVmlldywgc3RkOjpudW1lcmljX2xpbWl0czxkb3Vi
bGU+OjptYXgoKSk7CisgICAgZHJhd0NlbGxGb2N1c1JpbmdXaXRoRnJhbWVBdFRpbWUoY2VsbCwg
Y2VsbEZyYW1lLCBjb250cm9sVmlldywgc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjptYXgo
KSk7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tYWMvV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWFjL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaAppbmRleCA4YTEyNDgyN2MwNDA5ZDY2
M2Y3ODFkZjI3YjRlNDNiY2ZhZmJkMjI3Li42NmMwMGI0ODYzMjJmMWY4NDJiNzdiM2VkNmJjNTkx
OGM4ZjZmZDY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29y
ZVN5c3RlbUludGVyZmFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJD
b3JlU3lzdGVtSW50ZXJmYWNlLmgKQEAgLTEyNiwxNCArMTI2LDcgQEAgdHlwZWRlZiBlbnVtIHsK
ICAgICB3a1BhdHRlcm5UaWxpbmdDb25zdGFudFNwYWNpbmcKIH0gd2tQYXR0ZXJuVGlsaW5nOwog
I2lmICFQTEFURk9STShJT1MpCi1leHRlcm4gYm9vbCAoKndrQ0dDb250ZXh0RHJhd3NXaXRoQ29y
cmVjdFNoYWRvd09mZnNldHMpKENHQ29udGV4dFJlZik7Ci0jZW5kaWYKLWV4dGVybiBDR1BhdHRl
cm5SZWYgKCp3a0NHUGF0dGVybkNyZWF0ZVdpdGhJbWFnZUFuZFRyYW5zZm9ybSkoQ0dJbWFnZVJl
ZiwgQ0dBZmZpbmVUcmFuc2Zvcm0sIGludCk7Ci0jaWYgIVBMQVRGT1JNKElPUykKIGV4dGVybiB2
b2lkICgqd2tEcmF3QmV6ZWxlZFRleHRBcmVhKShOU1JlY3QsIEJPT0wgZW5hYmxlZCk7Ci1leHRl
cm4gdm9pZCAoKndrRHJhd0ZvY3VzUmluZykoQ0dDb250ZXh0UmVmLCBDR0NvbG9yUmVmLCBpbnQp
OwotZXh0ZXJuIGJvb2wgKCp3a0RyYXdGb2N1c1JpbmdBdFRpbWUpKENHQ29udGV4dFJlZiwgTlNU
aW1lSW50ZXJ2YWwgdGltZSk7Ci1leHRlcm4gYm9vbCAoKndrRHJhd0NlbGxGb2N1c1JpbmdXaXRo
RnJhbWVBdFRpbWUpKE5TQ2VsbCAqY2VsbCwgTlNSZWN0IGNlbGxGcmFtZSwgTlNWaWV3ICpjb250
cm9sVmlldywgTlNUaW1lSW50ZXJ2YWwgdGltZSk7CiBleHRlcm4gdm9pZCAoKndrRHJhd01lZGlh
U2xpZGVyVHJhY2spKENHQ29udGV4dFJlZiBjb250ZXh0LCBDR1JlY3QgcmVjdCwgZmxvYXQgdGlt
ZUxvYWRlZCwgZmxvYXQgY3VycmVudFRpbWUsCiAgICAgZmxvYXQgZHVyYXRpb24sIHVuc2lnbmVk
IHN0YXRlKTsKIGV4dGVybiB2b2lkICgqd2tEcmF3TWVkaWFVSVBhcnQpKGludCBwYXJ0LCBDR0Nv
bnRleHRSZWYgY29udGV4dCwgQ0dSZWN0IHJlY3QsIHVuc2lnbmVkIHN0YXRlKTsKQEAgLTE1Niw5
ICsxNDksNiBAQCB0eXBlZGVmIGVudW0gewogfSB3a01lZGlhVUlDb250cm9sVHlwZTsKIGV4dGVy
biBOU0NvbnRyb2wgKigqd2tDcmVhdGVNZWRpYVVJQ29udHJvbCkoaW50KTsKIAotZXh0ZXJuIHZv
aWQgKCp3a1dpbmRvd1NldEFscGhhKShOU1dpbmRvdyAqLCBmbG9hdCk7Ci1leHRlcm4gdm9pZCAo
KndrV2luZG93U2V0U2NhbGVkRnJhbWUpKE5TV2luZG93ICosIE5TUmVjdCwgTlNSZWN0KTsKLQog
ZXh0ZXJuIHVuc2lnbmVkICgqd2tRVEluY2x1ZGVPbmx5TW9kZXJuTWVkaWFGaWxlVHlwZXMpKHZv
aWQpOwogZXh0ZXJuIHZvaWQgKCp3a1FUTW92aWVEaXNhYmxlQ29tcG9uZW50KSh1aW50MzJfdFs1
XSk7CiBleHRlcm4gZmxvYXQgKCp3a1FUTW92aWVNYXhUaW1lTG9hZGVkKShRVE1vdmllKik7CkBA
IC0xNzIsOSArMTYyLDcgQEAgZXh0ZXJuIE5TQXJyYXkgKigqd2tRVEdldFNpdGVzSW5NZWRpYURv
d25sb2FkQ2FjaGUpKCk7CiBleHRlcm4gdm9pZCAoKndrUVRDbGVhck1lZGlhRG93bmxvYWRDYWNo
ZUZvclNpdGUpKE5TU3RyaW5nICpzaXRlKTsKIGV4dGVybiB2b2lkICgqd2tRVENsZWFyTWVkaWFE
b3dubG9hZENhY2hlKSgpOwogZXh0ZXJuIHZvaWQgKCp3a1NldENvb2tpZVN0b3JhZ2VQcml2YXRl
QnJvd3NpbmdFbmFibGVkKShCT09MKTsKLWV4dGVybiB2b2lkICgqd2tTZXREcmFnSW1hZ2UpKE5T
SW1hZ2UqLCBOU1BvaW50IG9mZnNldCk7CiAjZW5kaWYKLWV4dGVybiBib29sICgqd2tDR0NvbnRl
eHRJc1BERkNvbnRleHQpKENHQ29udGV4dFJlZik7CiBleHRlcm4gdm9pZCAoKndrU2V0Q09OTkVD
VFByb3h5Rm9yU3RyZWFtKShDRlJlYWRTdHJlYW1SZWYsIENGU3RyaW5nUmVmIHByb3h5SG9zdCwg
Q0ZOdW1iZXJSZWYgcHJveHlQb3J0KTsKIGV4dGVybiB2b2lkICgqd2tTZXRDT05ORUNUUHJveHlB
dXRob3JpemF0aW9uRm9yU3RyZWFtKShDRlJlYWRTdHJlYW1SZWYsIENGU3RyaW5nUmVmIHByb3h5
QXV0aG9yaXphdGlvblN0cmluZyk7CiBleHRlcm4gQ0ZIVFRQTWVzc2FnZVJlZiAoKndrQ29weUNP
Tk5FQ1RQcm94eVJlc3BvbnNlKShDRlJlYWRTdHJlYW1SZWYsIENGVVJMUmVmIHJlc3BvbnNlVVJM
LCBDRlN0cmluZ1JlZiBwcm94eUhvc3QsIENGTnVtYmVyUmVmIHByb3h5UG9ydCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZVN5c3RlbUludGVyZmFjZS5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlLm1t
CmluZGV4IDI3MmI1NTU3ZTIzOWYzYzFlMWQ0NWE5NGZiN2IxZTQ1MzQ2MTdkZjIuLjEzYjg0OTVh
OTBmZWQzYjIwMjNkNTIzZjBjNTRiMTdmZTIwY2UxYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlLm1tCkBAIC0zMSwxMiAr
MzEsNyBAQAogI2ltcG9ydCA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmg+CiAKIHZvaWQgKCp3a0NB
TGF5ZXJFbnVtZXJhdGVSZWN0c0JlaW5nRHJhd25XaXRoQmxvY2spKENBTGF5ZXIgKiwgQ0dDb250
ZXh0UmVmIGNvbnRleHQsIHZvaWQgKF5ibG9jaykoQ0dSZWN0IHJlY3QpKTsKLWJvb2wgKCp3a0NH
Q29udGV4dERyYXdzV2l0aENvcnJlY3RTaGFkb3dPZmZzZXRzKShDR0NvbnRleHRSZWYpOwotQ0dQ
YXR0ZXJuUmVmICgqd2tDR1BhdHRlcm5DcmVhdGVXaXRoSW1hZ2VBbmRUcmFuc2Zvcm0pKENHSW1h
Z2VSZWYsIENHQWZmaW5lVHJhbnNmb3JtLCBpbnQpOwogdm9pZCAoKndrRHJhd0JlemVsZWRUZXh0
QXJlYSkoTlNSZWN0LCBCT09MIGVuYWJsZWQpOwotdm9pZCAoKndrRHJhd0ZvY3VzUmluZykoQ0dD
b250ZXh0UmVmLCBDR0NvbG9yUmVmLCBpbnQpOwotYm9vbCAoKndrRHJhd0ZvY3VzUmluZ0F0VGlt
ZSkoQ0dDb250ZXh0UmVmLCBOU1RpbWVJbnRlcnZhbCk7Ci1ib29sICgqd2tEcmF3Q2VsbEZvY3Vz
UmluZ1dpdGhGcmFtZUF0VGltZSkoTlNDZWxsKiwgTlNSZWN0LCBOU1ZpZXcqLCBOU1RpbWVJbnRl
cnZhbCk7CiB2b2lkICgqd2tEcmF3TWVkaWFTbGlkZXJUcmFjaykoQ0dDb250ZXh0UmVmIGNvbnRl
eHQsIENHUmVjdCByZWN0LCBmbG9hdCB0aW1lTG9hZGVkLCBmbG9hdCBjdXJyZW50VGltZSwKICAg
ICBmbG9hdCBkdXJhdGlvbiwgdW5zaWduZWQgc3RhdGUpOwogQk9PTCAoKndrSGl0VGVzdE1lZGlh
VUlQYXJ0KShpbnQgcGFydCwgQ0dSZWN0IGJvdW5kcywgQ0dQb2ludCBwb2ludCk7CkBAIC00NCw4
ICszOSw2IEBAIHZvaWQgKCp3a0RyYXdNZWRpYVVJUGFydCkoaW50IHBhcnQsIENHQ29udGV4dFJl
ZiBjb250ZXh0LCBDR1JlY3QgcmVjdCwgdW5zaWduZWQKIHZvaWQgKCp3a01lYXN1cmVNZWRpYVVJ
UGFydCkoaW50IHBhcnQsIENHUmVjdCAqYm91bmRzLCBDR1NpemUgKm5hdHVyYWxTaXplKTsKIE5T
VmlldyAqKCp3a0NyZWF0ZU1lZGlhVUlCYWNrZ3JvdW5kVmlldykodm9pZCk7CiBOU0NvbnRyb2wg
Kigqd2tDcmVhdGVNZWRpYVVJQ29udHJvbCkoaW50KTsKLXZvaWQgKCp3a1dpbmRvd1NldEFscGhh
KShOU1dpbmRvdyAqLCBmbG9hdCk7Ci12b2lkICgqd2tXaW5kb3dTZXRTY2FsZWRGcmFtZSkoTlNX
aW5kb3cgKiwgTlNSZWN0LCBOU1JlY3QpOwogTlNUaW1lSW50ZXJ2YWwgKCp3a0dldE5TVVJMUmVz
cG9uc2VDYWxjdWxhdGVkRXhwaXJhdGlvbikoTlNVUkxSZXNwb25zZSAqcmVzcG9uc2UpOwogQk9P
TCAoKndrR2V0TlNVUkxSZXNwb25zZU11c3RSZXZhbGlkYXRlKShOU1VSTFJlc3BvbnNlICpyZXNw
b25zZSk7CiBVSW50OCAoKndrR2V0TlNFdmVudEtleUNoYXIpKE5TRXZlbnQgKik7CkBAIC02Myw4
ICs1Niw2IEBAIE5TQXJyYXkgKigqd2tRVEdldFNpdGVzSW5NZWRpYURvd25sb2FkQ2FjaGUpKCk7
CiB2b2lkICgqd2tRVENsZWFyTWVkaWFEb3dubG9hZENhY2hlRm9yU2l0ZSkoTlNTdHJpbmcgKnNp
dGUpOwogdm9pZCAoKndrUVRDbGVhck1lZGlhRG93bmxvYWRDYWNoZSkoKTsKIAotdm9pZCAoKndr
U2V0RHJhZ0ltYWdlKShOU0ltYWdlKiwgTlNQb2ludCBvZmZzZXQpOwotYm9vbCAoKndrQ0dDb250
ZXh0SXNQREZDb250ZXh0KShDR0NvbnRleHRSZWYpOwogdm9pZCAoKndrU2V0Q09OTkVDVFByb3h5
Rm9yU3RyZWFtKShDRlJlYWRTdHJlYW1SZWYsIENGU3RyaW5nUmVmIHByb3h5SG9zdCwgQ0ZOdW1i
ZXJSZWYgcHJveHlQb3J0KTsKIHZvaWQgKCp3a1NldENPTk5FQ1RQcm94eUF1dGhvcml6YXRpb25G
b3JTdHJlYW0pKENGUmVhZFN0cmVhbVJlZiwgQ0ZTdHJpbmdSZWYgcHJveHlBdXRob3JpemF0aW9u
U3RyaW5nKTsKIENGSFRUUE1lc3NhZ2VSZWYgKCp3a0NvcHlDT05ORUNUUHJveHlSZXNwb25zZSko
Q0ZSZWFkU3RyZWFtUmVmLCBDRlVSTFJlZiByZXNwb25zZVVSTCwgQ0ZTdHJpbmdSZWYgcHJveHlI
b3N0LCBDRk51bWJlclJlZiBwcm94eVBvcnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL1dlYldpbmRvd0FuaW1hdGlvbi5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21hYy9XZWJXaW5kb3dBbmltYXRpb24ubW0KaW5kZXggOGFiYzg0MGI3M2NjNjQ1YzhhYzQw
NmRlYWZhZTk0MjJjZGMzNTNlMi4uNTcyZTE5NmM3ODg2ZGZhZDRjYzc0YTE2MTUzODhlOTNkMjE0
ZGFhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYldpbmRvd0Fu
aW1hdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViV2luZG93QW5p
bWF0aW9uLm1tCkBAIC0yOSw2ICsyOSw3IEBACiAKICNpbXBvcnQgIkZsb2F0Q29udmVyc2lvbi5o
IgogI2ltcG9ydCAiV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oIgorI2ltcG9ydCA8cGFsL3NwaS9j
Zy9Db3JlR3JhcGhpY3NTUEkuaD4KICNpbXBvcnQgPHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW1wb3J0
IDx3dGYvTWF0aEV4dHJhcy5oPgogCkBAIC0xMDksNiArMTEwLDU5IEBAIC0gKE5TUmVjdCljdXJy
ZW50RnJhbWUKICAgICByZXR1cm4gc2NhbGVkUmVjdChfZmluYWxGcmFtZSwgX2luaXRpYWxGcmFt
ZSwgW3NlbGYgY3VycmVudFZhbHVlXSk7CiB9CiAKK3N0YXRpYyB2b2lkIGZsaXBSZWN0KE5TUmVj
dCogcmVjdCkKK3sKKyAgICByZWN0LT5vcmlnaW4ueSA9IE5TTWF4WShbKE5TU2NyZWVuICopW1tO
U1NjcmVlbiBzY3JlZW5zXSBvYmplY3RBdEluZGV4OjBdIGZyYW1lXSkgLSBOU01heFkoKnJlY3Qp
OworfQorCitzdGF0aWMgQ0dTQ29ubmVjdGlvbklEIG1haW5XaW5kb3dTZXJ2ZXJDb25uZWN0aW9u
SUQoKQoreworICAgIHN0YXRpYyBDR1NDb25uZWN0aW9uSUQgY2dzSWQ7CisgICAgaWYgKCFjZ3NJ
ZCkKKyAgICAgICAgY2dzSWQgPSBDR1NNYWluQ29ubmVjdGlvbklEKCk7CisgICAgcmV0dXJuIGNn
c0lkOworfQorCitzdGF0aWMgdm9pZCBzZXRTY2FsZWRGcmFtZUZvcldpbmRvdyhOU1dpbmRvdyAq
d2luZG93LCBOU1JlY3Qgc2NhbGVGcmFtZSwgTlNSZWN0IG5vblNjYWxlZEZyYW1lKQoreworICAg
IGlmIChOU0VxdWFsUmVjdHMoc2NhbGVGcmFtZSwgbm9uU2NhbGVkRnJhbWUpKSB7CisgICAgICAg
IENHU1NldFdpbmRvd1dhcnAobWFpbldpbmRvd1NlcnZlckNvbm5lY3Rpb25JRCgpLCB3aW5kb3cu
d2luZG93TnVtYmVyLCAwLCAwLCBudWxscHRyKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAg
ICAKKyAgICBmbG9hdCBtZXNoWzE2XTsKKyAgICAKKyAgICBmbGlwUmVjdCgmc2NhbGVGcmFtZSk7
CisgICAgZmxpcFJlY3QoJm5vblNjYWxlZEZyYW1lKTsKKyAgICAKKyAgICAvLyB0b3AtbGVmdCBw
b2ludCAodG8gYW5kIGZyb20pCisgICAgbWVzaFswXSA9IDA7CisgICAgbWVzaFsxXSA9IDA7Cisg
ICAgbWVzaFsyXSA9IE5TTWluWChzY2FsZUZyYW1lKTsKKyAgICBtZXNoWzNdID0gTlNNaW5ZKHNj
YWxlRnJhbWUpOworICAgIAorICAgIC8vIHRvcC1yaWdodCBwb2ludCAodG8gYW5kIGZyb20pCisg
ICAgbWVzaFs0XSA9IE5TV2lkdGgobm9uU2NhbGVkRnJhbWUpOworICAgIG1lc2hbNV0gPSAwOwor
ICAgIG1lc2hbNl0gPSBOU01heFgoc2NhbGVGcmFtZSk7CisgICAgbWVzaFs3XSA9IE5TTWluWShz
Y2FsZUZyYW1lKTsKKyAgICAKKyAgICAvLyBib3R0b20tbGVmdCAodG8gYW5kIGZyb20pCisgICAg
bWVzaFs4XSA9IDA7CisgICAgbWVzaFs5XSA9IE5TSGVpZ2h0KG5vblNjYWxlZEZyYW1lKTsKKyAg
ICBtZXNoWzEwXSA9IE5TTWluWChzY2FsZUZyYW1lKTsKKyAgICBtZXNoWzExXSA9IE5TTWF4WShz
Y2FsZUZyYW1lKTsKKyAgICAKKyAgICAvLyBib3R0b20tcmlnaHQgKHRvIGFuZCBmcm9tKQorICAg
IG1lc2hbMTJdID0gTlNXaWR0aChub25TY2FsZWRGcmFtZSk7CisgICAgbWVzaFsxM10gPSBOU0hl
aWdodChub25TY2FsZWRGcmFtZSk7CisgICAgbWVzaFsxNF0gPSBOU01heFgoc2NhbGVGcmFtZSk7
CisgICAgbWVzaFsxNV0gPSBOU01heFkoc2NhbGVGcmFtZSk7CisgICAgCisgICAgLy8gQXBwbHkg
dGhlIHdhcnAuCisgICAgQ0dTU2V0V2luZG93V2FycChtYWluV2luZG93U2VydmVyQ29ubmVjdGlv
bklEKCksIHdpbmRvdy53aW5kb3dOdW1iZXIsIDIsIDIsIG1lc2gpOworfQorCiAtICh2b2lkKXNl
dEN1cnJlbnRQcm9ncmVzczooTlNBbmltYXRpb25Qcm9ncmVzcylwcm9ncmVzcwogewogICAgIGlm
ICghX3dpbmRvdykKQEAgLTExNyw3ICsxNzEsNyBAQCAtICh2b2lkKXNldEN1cnJlbnRQcm9ncmVz
czooTlNBbmltYXRpb25Qcm9ncmVzcylwcm9ncmVzcwogICAgIFtzdXBlciBzZXRDdXJyZW50UHJv
Z3Jlc3M6cHJvZ3Jlc3NdOwogCiAgICAgTlNSZWN0IGN1cnJlbnRSZWN0ID0gW3NlbGYgY3VycmVu
dEZyYW1lXTsKLSAgICB3a1dpbmRvd1NldFNjYWxlZEZyYW1lKF93aW5kb3csIGN1cnJlbnRSZWN0
LCBfcmVhbEZyYW1lKTsKKyAgICBzZXRTY2FsZWRGcmFtZUZvcldpbmRvdyhfd2luZG93LCBjdXJy
ZW50UmVjdCwgX3JlYWxGcmFtZSk7CiAgICAgW19zdWJBbmltYXRpb24gc2V0Q3VycmVudFByb2dy
ZXNzOnByb2dyZXNzXTsKIH0KIApAQCAtMjExLDcgKzI2NSw3IEBAIC0gKHZvaWQpc2V0Q3VycmVu
dFByb2dyZXNzOihOU0FuaW1hdGlvblByb2dyZXNzKXByb2dyZXNzCiAgICAgQVNTRVJUKF93aW5k
b3cpOwogICAgIFtzdXBlciBzZXRDdXJyZW50UHJvZ3Jlc3M6cHJvZ3Jlc3NdOwogCi0gICAgd2tX
aW5kb3dTZXRBbHBoYShfd2luZG93LCBbc2VsZiBjdXJyZW50QWxwaGFdKTsKKyAgICBDR1NTZXRX
aW5kb3dBbHBoYShtYWluV2luZG93U2VydmVyQ29ubmVjdGlvbklEKCksIF93aW5kb3cud2luZG93
TnVtYmVyLCBzZWxmLmN1cnJlbnRBbHBoYSk7CiB9CiAKIC0gKHZvaWQpc2V0V2luZG93OihOU1dp
bmRvdyopd2luZG93CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvbWFj
L1BsdWdpblByb2Nlc3NNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvbWFjL1Bs
dWdpblByb2Nlc3NNYWMubW0KaW5kZXggZDg2MDM3ODY3YTJmMWFmYTI1ZWM1MjYzMDZlMTRkOTY0
Y2Q3N2U2ZC4uMjRkMjZlZDFlNjc0M2FlYzU1N2E4Zjc2NDg5YjY3MzgwNDE3ZmQwNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL21hYy9QbHVnaW5Qcm9jZXNzTWFjLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9tYWMvUGx1Z2luUHJvY2Vzc01hYy5t
bQpAQCAtNDYsNiArNDYsNyBAQAogI2ltcG9ydCA8bWFjaC9tYWNoX3ZtLmg+CiAjaW1wb3J0IDxt
YWNoL3ZtX3N0YXRpc3RpY3MuaD4KICNpbXBvcnQgPG9iamMvcnVudGltZS5oPgorI2ltcG9ydCA8
cGFsL3NwaS9jZy9Db3JlR3JhcGhpY3NTUEkuaD4KICNpbXBvcnQgPHBhbC9zcGkvbWFjL0hJVG9v
bGJveFNQSS5oPgogI2ltcG9ydCA8cGFsL3NwaS9tYWMvTlNXaW5kb3dTUEkuaD4KICNpbXBvcnQg
PHN5c2V4aXRzLmg+CkBAIC01MzEsNyArNTMyLDEwIEBAIHZvaWQgUGx1Z2luUHJvY2Vzczo6cGxh
dGZvcm1Jbml0aWFsaXplUHJvY2Vzcyhjb25zdCBDaGlsZFByb2Nlc3NJbml0aWFsaXphdGlvblBh
CiAKICAgICAvLyBGSVhNRTogSXQgd291bGQgYmUgYmV0dGVyIHRvIHByb3h5IFNldEN1cnNvciBj
YWxscyBvdmVyIHRvIHRoZSBVSSBwcm9jZXNzIGluc3RlYWQgb2YKICAgICAvLyBhbGxvd2luZyBw
bHVnLWlucyB0byBjaGFuZ2UgdGhlIG1vdXNlIGN1cnNvciBhdCBhbnkgdGltZS4KLSAgICBXS0Vu
YWJsZVNldHRpbmdDdXJzb3JXaGVuSW5CYWNrZ3JvdW5kKCk7CisgICAgLy8gRklYTUU6IFNldHND
dXJzb3JJbkJhY2tncm91bmQgY29ubmVjdGlvbiBwcm9wZXJ0eSBpcyBkZXByZWNhdGVkIGluIGZh
dm9yIG9mIGtDR1NTZXRzQ3Vyc29ySW5CYWNrZ3JvdW5kVGFnQml0IHdpbmRvdyB0YWcgYml0Lgor
ICAgIC8vIDxyZGFyOi8vcHJvYmxlbS83NzUyNDIyPiBhc2tzIGZvciBhbiBBUEkgdG8gc2V0IGN1
cnNvciBmcm9tIGJhY2tncm91bmQgcHJvY2Vzc2VzLgorICAgIENHU0Nvbm5lY3Rpb25JRCBjaWQg
PSBDR1NNYWluQ29ubmVjdGlvbklEKCk7CisgICAgQ0dTU2V0Q29ubmVjdGlvblByb3BlcnR5KGNp
ZCwgY2lkLCBDRlNUUigiU2V0c0N1cnNvckluQmFja2dyb3VuZCIpLCAoQ0ZUeXBlUmVmKWtDRkJv
b2xlYW5UcnVlKTsKIAogICAgIFJldGFpblB0cjxDRlVSTFJlZj4gcGx1Z2luVVJMID0gYWRvcHRD
RihDRlVSTENyZWF0ZVdpdGhGaWxlU3lzdGVtUGF0aCgwLCBtX3BsdWdpblBhdGguY3JlYXRlQ0ZT
dHJpbmcoKS5nZXQoKSwga0NGVVJMUE9TSVhQYXRoU3R5bGUsIGZhbHNlKSk7CiAgICAgaWYgKCFw
bHVnaW5VUkwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2luZG93
U2VydmVyQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dpbmRvd1Nl
cnZlckNvbm5lY3Rpb24uaAppbmRleCA4MzhhMzRmYjVjMmQ0NGVlZTU0NjRlNTdlZGM3MGUxMGFk
YmQzYjIwLi5lN2I1MThjNmM1ZWIwYjA2MmQ4OWE5MWNhNzA1NzdiYTg0ZWIwNTExIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2luZG93U2VydmVyQ29ubmVjdGlvbi5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XaW5kb3dTZXJ2ZXJDb25uZWN0aW9u
LmgKQEAgLTQxLDkgKzQxLDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIHdpbmRvd1NlcnZlckNvbm5l
Y3Rpb25TdGF0ZUNoYW5nZWQoKTsKIAogICAgIHZvaWQgYXBwbGljYXRpb25XaW5kb3dNb2RpZmlj
YXRpb25zU3RvcHBlZChib29sIHN0b3BwZWQpOwotCi0gICAgc3RhdGljIHZvaWQgYXBwbGljYXRp
b25XaW5kb3dNb2RpZmljYXRpb25zU3RhcnRlZCh1aW50MzJfdCwgdm9pZCosIHVpbnQzMl90LCB2
b2lkKiwgdWludDMyX3QpOwotICAgIHN0YXRpYyB2b2lkIGFwcGxpY2F0aW9uV2luZG93TW9kaWZp
Y2F0aW9uc1N0b3BwZWQodWludDMyX3QsIHZvaWQqLCB1aW50MzJfdCwgdm9pZCosIHVpbnQzMl90
KTsKICNlbmRpZgogCiAgICAgYm9vbCBtX2FwcGxpY2F0aW9uV2luZG93TW9kaWZpY2F0aW9uc0hh
dmVTdG9wcGVkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dpbmRv
d1NlcnZlckNvbm5lY3Rpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2luZG93
U2VydmVyQ29ubmVjdGlvbi5tbQppbmRleCA4MTk1MzVjMmFjMTI5YzhkNTIxMjE4Yzk3NTVjODRi
NjFkNDRmMjg1Li5hOWU1ZWQ1ZDYwMzZhNTY3NjA2MTUzYmU5NjBhMzRlMWFiMzYwOTQ1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2luZG93U2VydmVyQ29ubmVjdGlv
bi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2luZG93U2VydmVyQ29ubmVj
dGlvbi5tbQpAQCAtMjgsNiArMjgsNyBAQAogCiAjaW1wb3J0ICJXZWJLaXRTeXN0ZW1JbnRlcmZh
Y2UuaCIKICNpbXBvcnQgIldlYlByb2Nlc3NQb29sLmgiCisjaW1wb3J0IDxwYWwvc3BpL2NnL0Nv
cmVHcmFwaGljc1NQSS5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIApAQCAtNDEsMTYgKzQyLDYg
QEAgdm9pZCBXaW5kb3dTZXJ2ZXJDb25uZWN0aW9uOjphcHBsaWNhdGlvbldpbmRvd01vZGlmaWNh
dGlvbnNTdG9wcGVkKGJvb2wgc3RvcHBlZCkKICAgICB3aW5kb3dTZXJ2ZXJDb25uZWN0aW9uU3Rh
dGVDaGFuZ2VkKCk7CiB9CiAKLXZvaWQgV2luZG93U2VydmVyQ29ubmVjdGlvbjo6YXBwbGljYXRp
b25XaW5kb3dNb2RpZmljYXRpb25zU3RhcnRlZCh1aW50MzJfdCwgdm9pZCosIHVpbnQzMl90LCB2
b2lkKiwgdWludDMyX3QpCi17Ci0gICAgV2luZG93U2VydmVyQ29ubmVjdGlvbjo6c2luZ2xldG9u
KCkuYXBwbGljYXRpb25XaW5kb3dNb2RpZmljYXRpb25zU3RvcHBlZChmYWxzZSk7Ci19Ci0KLXZv
aWQgV2luZG93U2VydmVyQ29ubmVjdGlvbjo6YXBwbGljYXRpb25XaW5kb3dNb2RpZmljYXRpb25z
U3RvcHBlZCh1aW50MzJfdCwgdm9pZCosIHVpbnQzMl90LCB2b2lkKiwgdWludDMyX3QpCi17Ci0g
ICAgV2luZG93U2VydmVyQ29ubmVjdGlvbjo6c2luZ2xldG9uKCkuYXBwbGljYXRpb25XaW5kb3dN
b2RpZmljYXRpb25zU3RvcHBlZCh0cnVlKTsKLX0KLQogdm9pZCBXaW5kb3dTZXJ2ZXJDb25uZWN0
aW9uOjp3aW5kb3dTZXJ2ZXJDb25uZWN0aW9uU3RhdGVDaGFuZ2VkKCkKIHsKICAgICBmb3IgKGF1
dG8qIHByb2Nlc3NQb29sIDogV2ViUHJvY2Vzc1Bvb2w6OmFsbFByb2Nlc3NQb29scygpKQpAQCAt
NjUsMjMgKzU2LDQ4IEBAIFdpbmRvd1NlcnZlckNvbm5lY3Rpb24mIFdpbmRvd1NlcnZlckNvbm5l
Y3Rpb246OnNpbmdsZXRvbigpCiAgICAgcmV0dXJuIHdpbmRvd1NlcnZlckNvbm5lY3Rpb247CiB9
CiAKKyNpZiBIQVZFKFdJTkRPV19TRVJWRVJfT0NDTFVTSU9OX05PVElGSUNBVElPTlMpCitzdGF0
aWMgYm9vbCByZWdpc3Rlck9jY2x1c2lvbk5vdGlmaWNhdGlvbkhhbmRsZXIoQ0dTTm90aWZpY2F0
aW9uVHlwZSB0eXBlLCBDR1NOb3RpZnlDb25uZWN0aW9uUHJvY1B0ciBoYW5kbGVyKQoreworICAg
IENHU0Nvbm5lY3Rpb25JRCBtYWluQ29ubmVjdGlvbiA9IENHU01haW5Db25uZWN0aW9uSUQoKTsK
KyAgICBzdGF0aWMgYm9vbCBub3RpZmljYXRpb25zRW5hYmxlZDsKKyAgICBpZiAoIW5vdGlmaWNh
dGlvbnNFbmFibGVkKSB7CisgICAgICAgIGlmIChDR1NQYWNrYWdlc0VuYWJsZUNvbm5lY3Rpb25P
Y2NsdXNpb25Ob3RpZmljYXRpb25zKG1haW5Db25uZWN0aW9uLCB0cnVlLCBudWxscHRyKSAhPSBr
Q0dFcnJvclN1Y2Nlc3MpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGlmIChD
R1NQYWNrYWdlc0VuYWJsZUNvbm5lY3Rpb25XaW5kb3dNb2RpZmljYXRpb25Ob3RpZmljYXRpb25z
KG1haW5Db25uZWN0aW9uLCB0cnVlLCBudWxscHRyKSAhPSBrQ0dFcnJvclN1Y2Nlc3MpCisgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIG5vdGlmaWNhdGlvbnNFbmFibGVkID0gdHJ1
ZTsKKyAgICB9CisKKyAgICByZXR1cm4gQ0dTUmVnaXN0ZXJDb25uZWN0aW9uTm90aWZ5UHJvYyht
YWluQ29ubmVjdGlvbiwgaGFuZGxlciwgdHlwZSwgbnVsbHB0cikgPT0ga0NHRXJyb3JTdWNjZXNz
OworfQorI2VuZGlmCisKIFdpbmRvd1NlcnZlckNvbm5lY3Rpb246OldpbmRvd1NlcnZlckNvbm5l
Y3Rpb24oKQogICAgIDogbV9hcHBsaWNhdGlvbldpbmRvd01vZGlmaWNhdGlvbnNIYXZlU3RvcHBl
ZChmYWxzZSkKIHsKICNpZiBIQVZFKFdJTkRPV19TRVJWRVJfT0NDTFVTSU9OX05PVElGSUNBVElP
TlMpCiAgICAgc3RydWN0IE9jY2x1c2lvbk5vdGlmaWNhdGlvbkhhbmRsZXIgewotICAgICAgICBX
S09jY2x1c2lvbk5vdGlmaWNhdGlvblR5cGUgbm90aWZpY2F0aW9uVHlwZTsKLSAgICAgICAgV0tP
Y2NsdXNpb25Ob3RpZmljYXRpb25IYW5kbGVyIGhhbmRsZXI7CisgICAgICAgIENHU05vdGlmaWNh
dGlvblR5cGUgbm90aWZpY2F0aW9uVHlwZTsKKyAgICAgICAgQ0dTTm90aWZ5Q29ubmVjdGlvblBy
b2NQdHIgaGFuZGxlcjsKICAgICAgICAgY29uc3QgY2hhciogbmFtZTsKICAgICB9OwogCisgICAg
c3RhdGljIGF1dG8gd2luZG93TW9kaWZpY2F0aW9uc1N0YXJ0ZWQgPSBbXShDR1NOb3RpZmljYXRp
b25UeXBlLCB2b2lkKiwgdWludDMyX3QsIHZvaWQqLCBDR1NDb25uZWN0aW9uSUQpIHsKKyAgICAg
ICAgV2luZG93U2VydmVyQ29ubmVjdGlvbjo6c2luZ2xldG9uKCkuYXBwbGljYXRpb25XaW5kb3dN
b2RpZmljYXRpb25zU3RvcHBlZChmYWxzZSk7CisgICAgfTsKKworICAgIHN0YXRpYyBhdXRvIHdp
bmRvd01vZGlmaWNhdGlvbnNTdG9wcGVkID0gW10oQ0dTTm90aWZpY2F0aW9uVHlwZSwgdm9pZCos
IHVpbnQzMl90LCB2b2lkKiwgQ0dTQ29ubmVjdGlvbklEKSB7CisgICAgICAgIFdpbmRvd1NlcnZl
ckNvbm5lY3Rpb246OnNpbmdsZXRvbigpLmFwcGxpY2F0aW9uV2luZG93TW9kaWZpY2F0aW9uc1N0
b3BwZWQodHJ1ZSk7CisgICAgfTsKKwogICAgIHN0YXRpYyBjb25zdCBPY2NsdXNpb25Ob3RpZmlj
YXRpb25IYW5kbGVyIG9jY2x1c2lvbk5vdGlmaWNhdGlvbkhhbmRsZXJzW10gPSB7Ci0gICAgICAg
IHsgV0tPY2NsdXNpb25Ob3RpZmljYXRpb25UeXBlQXBwbGljYXRpb25XaW5kb3dNb2RpZmljYXRp
b25zU3RhcnRlZCwgYXBwbGljYXRpb25XaW5kb3dNb2RpZmljYXRpb25zU3RhcnRlZCwgIkFwcGxp
Y2F0aW9uIFdpbmRvdyBNb2RpZmljYXRpb25zIFN0YXJ0ZWQiIH0sCi0gICAgICAgIHsgV0tPY2Ns
dXNpb25Ob3RpZmljYXRpb25UeXBlQXBwbGljYXRpb25XaW5kb3dNb2RpZmljYXRpb25zU3RvcHBl
ZCwgYXBwbGljYXRpb25XaW5kb3dNb2RpZmljYXRpb25zU3RvcHBlZCwgIkFwcGxpY2F0aW9uIFdp
bmRvdyBNb2RpZmljYXRpb25zIFN0b3BwZWQiIH0sCisgICAgICAgIHsga0NHU0Nvbm5lY3Rpb25X
aW5kb3dNb2RpZmljYXRpb25zU3RhcnRlZCwgd2luZG93TW9kaWZpY2F0aW9uc1N0YXJ0ZWQsICJB
cHBsaWNhdGlvbiBXaW5kb3cgTW9kaWZpY2F0aW9ucyBTdGFydGVkIiB9LAorICAgICAgICB7IGtD
R1NDb25uZWN0aW9uV2luZG93TW9kaWZpY2F0aW9uc1N0b3BwZWQsIHdpbmRvd01vZGlmaWNhdGlv
bnNTdG9wcGVkLCAiQXBwbGljYXRpb24gV2luZG93IE1vZGlmaWNhdGlvbnMgU3RvcHBlZCIgfSwK
ICAgICB9OwogCiAgICAgZm9yIChjb25zdCBhdXRvJiBvY2NsdXNpb25Ob3RpZmljYXRpb25IYW5k
bGVyIDogb2NjbHVzaW9uTm90aWZpY2F0aW9uSGFuZGxlcnMpIHsKLSAgICAgICAgYm9vbCByZXN1
bHQgPSBXS1JlZ2lzdGVyT2NjbHVzaW9uTm90aWZpY2F0aW9uSGFuZGxlcihvY2NsdXNpb25Ob3Rp
ZmljYXRpb25IYW5kbGVyLm5vdGlmaWNhdGlvblR5cGUsIG9jY2x1c2lvbk5vdGlmaWNhdGlvbkhh
bmRsZXIuaGFuZGxlcik7CisgICAgICAgIGJvb2wgcmVzdWx0ID0gcmVnaXN0ZXJPY2NsdXNpb25O
b3RpZmljYXRpb25IYW5kbGVyKG9jY2x1c2lvbk5vdGlmaWNhdGlvbkhhbmRsZXIubm90aWZpY2F0
aW9uVHlwZSwgb2NjbHVzaW9uTm90aWZpY2F0aW9uSGFuZGxlci5oYW5kbGVyKTsKICAgICAgICAg
VU5VU0VEX1BBUkFNKHJlc3VsdCk7CiAgICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0UocmVzdWx0
LCAiUmVnaXN0cmF0aW9uIG9mIFwiJXNcIiBub3RpZmljYXRpb24gaGFuZGxlciBmYWlsZWQuXG4i
LCBvY2NsdXNpb25Ob3RpZmljYXRpb25IYW5kbGVyLm5hbWUpOwogICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViU3lzdGVtSW50
ZXJmYWNlLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9X
ZWJTeXN0ZW1JbnRlcmZhY2UubW0KaW5kZXggZDE4YTQ0MGRkNzI1MzljNmE1Njk0Yjc0NjdmOGE2
OTE4ODUxZDk5ZS4uNWIwOTc5YzY4NWFkMDgwMDJmN2MyYTBmN2I1OGQxN2ZiODZjYTdjNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJT
eXN0ZW1JbnRlcmZhY2UubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L21hYy9XZWJTeXN0ZW1JbnRlcmZhY2UubW0KQEAgLTM3LDIxICszNywxMSBAQCB2b2lk
IEluaXRXZWJDb3JlU3lzdGVtSW50ZXJmYWNlKHZvaWQpCiAgICAgCiAgICAgZGlzcGF0Y2hfb25j
ZSgmaW5pdE9uY2UsIF57CiAgICAgICAgIElOSVQoQ0FMYXllckVudW1lcmF0ZVJlY3RzQmVpbmdE
cmF3bldpdGhCbG9jayk7Ci0gICAgICAgIElOSVQoQ0dQYXR0ZXJuQ3JlYXRlV2l0aEltYWdlQW5k
VHJhbnNmb3JtKTsKLSNpZiAhUExBVEZPUk0oSU9TKQotICAgICAgICBJTklUKENHQ29udGV4dERy
YXdzV2l0aENvcnJlY3RTaGFkb3dPZmZzZXRzKTsKLSNlbmRpZgogICAgICAgICBJTklUKENvcHlD
T05ORUNUUHJveHlSZXNwb25zZSk7CiAjaWYgIVBMQVRGT1JNKElPUykKICAgICAgICAgSU5JVChE
cmF3QmV6ZWxlZFRleHRBcmVhKTsKLSAgICAgICAgSU5JVChEcmF3Rm9jdXNSaW5nKTsKLSAgICAg
ICAgSU5JVChEcmF3Rm9jdXNSaW5nQXRUaW1lKTsKLSAgICAgICAgSU5JVChEcmF3Q2VsbEZvY3Vz
UmluZ1dpdGhGcmFtZUF0VGltZSk7CiAgICAgICAgIElOSVQoRHJhd01lZGlhU2xpZGVyVHJhY2sp
OwogICAgICAgICBJTklUKERyYXdNZWRpYVVJUGFydCk7Ci0jZW5kaWYKLSAgICAgICAgSU5JVChD
R0NvbnRleHRJc1BERkNvbnRleHQpOwotI2lmICFQTEFURk9STShJT1MpCiAgICAgICAgIElOSVQo
R2V0TlNFdmVudEtleUNoYXIpOwogICAgICAgICBJTklUKEhpdFRlc3RNZWRpYVVJUGFydCk7CiAg
ICAgICAgIElOSVQoTWVhc3VyZU1lZGlhVUlQYXJ0KTsKQEAgLTcwLDE2ICs2MCwxMSBAQCB2b2lk
IEluaXRXZWJDb3JlU3lzdGVtSW50ZXJmYWNlKHZvaWQpCiAjZW5kaWYKICAgICAgICAgSU5JVChT
ZXRDT05ORUNUUHJveHlBdXRob3JpemF0aW9uRm9yU3RyZWFtKTsKICAgICAgICAgSU5JVChTZXRD
T05ORUNUUHJveHlGb3JTdHJlYW0pOwotI2lmICFQTEFURk9STShJT1MpCi0gICAgICAgIElOSVQo
U2V0RHJhZ0ltYWdlKTsKLSNlbmRpZgogCiAjaWYgIVBMQVRGT1JNKElPUykKICAgICAgICAgSU5J
VChFeGVjdXRhYmxlV2FzTGlua2VkT25PckJlZm9yZVNub3dMZW9wYXJkKTsKICAgICAgICAgSU5J
VChDb3B5RGVmYXVsdFNlYXJjaFByb3ZpZGVyRGlzcGxheU5hbWUpOwogICAgICAgICBJTklUKEN1
cnNvcik7Ci0gICAgICAgIElOSVQoV2luZG93U2V0U2NhbGVkRnJhbWUpOwotICAgICAgICBJTklU
KFdpbmRvd1NldEFscGhhKTsKICAgICAgICAgSU5JVChTcGVlY2hTeW50aGVzaXNHZXRWb2ljZUlk
ZW50aWZpZXJzKTsKICAgICAgICAgSU5JVChTcGVlY2hTeW50aGVzaXNHZXREZWZhdWx0Vm9pY2VJ
ZGVudGlmaWVyRm9yTG9jYWxlKTsKICAgICAgICAgSU5JVChOU0VsYXN0aWNEZWx0YUZvclRpbWVE
ZWx0YSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DYXJib24vSElXZWJW
aWV3Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2FyYm9uL0hJV2ViVmlldy5tbQppbmRl
eCAzNDU4NWMyNTJjM2IxOGNhY2Q2ZTA3YWQ1ZTk0NDg3NzlkOGJlNDU3Li5kYjRiYjY0NDQyNTMw
MWQwNGYxOGZhYWFhYWY3MGEyZTk1NGIyZDU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9DYXJib24vSElXZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L0NhcmJvbi9ISVdlYlZpZXcubW0KQEAgLTM2LDYgKzM2LDcgQEAKICNpbXBvcnQgIldlYktpdC5o
IgogI2ltcG9ydCA8V2ViS2l0U3lzdGVtSW50ZXJmYWNlLmg+CiAjaW1wb3J0IDxwYWwvc3BpL21h
Yy9OU0V2ZW50U1BJLmg+CisjaW1wb3J0IDxwYWwvc3BpL21hYy9OU0dyYXBoaWNzU1BJLmg+CiAj
aW1wb3J0IDxwYWwvc3BpL21hYy9RdWlja0RyYXdTUEkuaD4KICNpbXBvcnQgPHd0Zi9PYmpjUnVu
dGltZUV4dHJhcy5oPgogCkBAIC04NSw2ICs4NiwyMSBAQCAtIChpbnQpdGFnCiAKIEBlbmQKIAor
QGludGVyZmFjZSBOU1dpbmRvd0dyYXBoaWNzQ29udGV4dCAoSElXZWJWaWV3KQorLSAodm9pZClf
d2ViX3NldEdyYXBoaWNzUG9ydDooQ0dDb250ZXh0UmVmKWNvbnRleHQ7CitAZW5kCisKK0BpbXBs
ZW1lbnRhdGlvbiBOU1dpbmRvd0dyYXBoaWNzQ29udGV4dCAoSElXZWJWaWV3KQorCistICh2b2lk
KV93ZWJfc2V0R3JhcGhpY3NQb3J0OihDR0NvbnRleHRSZWYpY29udGV4dAoreworICAgIENHQ29u
dGV4dFJldGFpbihjb250ZXh0KTsKKyAgICBDR0NvbnRleHRSZWxlYXNlKF9jZ3NDb250ZXh0KTsK
KyAgICBfY2dzQ29udGV4dCA9IGNvbnRleHQ7Cit9CisKK0BlbmQKKwogc3RydWN0IEhJV2ViVmll
dwogewogICAgIEhJVmlld1JlZgkJCQkJCQlmVmlld1JlZjsKQEAgLTI5MCw2ICszMDYsMjIgQEAg
R2V0QmVoYXZpb3JzKCkKIAlyZXR1cm4ga0NvbnRyb2xTdXBwb3J0c0RhdGFBY2Nlc3MgfCBrQ29u
dHJvbFN1cHBvcnRzR2V0UmVnaW9uIHwga0NvbnRyb2xHZXRzRm9jdXNPbkNsaWNrOwogfQogCitz
dGF0aWMgQ0dDb250ZXh0UmVmIG92ZXJyaWRlQ0dDb250ZXh0KE5TV2luZG93ICp3aW5kb3csIENH
Q29udGV4dFJlZiBjb250ZXh0KQoreworICAgIE5TV2luZG93R3JhcGhpY3NDb250ZXh0ICpncmFw
aGljc0NvbnRleHQgPSAoTlNXaW5kb3dHcmFwaGljc0NvbnRleHQgKil3aW5kb3cuZ3JhcGhpY3ND
b250ZXh0OworICAgIENHQ29udGV4dFJlZiBzYXZlZENvbnRleHQgPSAoQ0dDb250ZXh0UmVmKWdy
YXBoaWNzQ29udGV4dC5ncmFwaGljc1BvcnQ7CisgICAgQ0dDb250ZXh0UmV0YWluKHNhdmVkQ29u
dGV4dCk7CisgICAgW2dyYXBoaWNzQ29udGV4dCBfd2ViX3NldEdyYXBoaWNzUG9ydDpjb250ZXh0
XTsKKyAgICByZXR1cm4gc2F2ZWRDb250ZXh0OworfQorCitzdGF0aWMgdm9pZCByZXN0b3JlQ0dD
b250ZXh0KE5TV2luZG93ICp3aW5kb3csIENHQ29udGV4dFJlZiBzYXZlZENvbnRleHQpCit7Cisg
ICAgTlNXaW5kb3dHcmFwaGljc0NvbnRleHQgKmdyYXBoaWNzQ29udGV4dCA9IChOU1dpbmRvd0dy
YXBoaWNzQ29udGV4dCAqKXdpbmRvdy5ncmFwaGljc0NvbnRleHQ7CisgICAgW2dyYXBoaWNzQ29u
dGV4dCBfd2ViX3NldEdyYXBoaWNzUG9ydDpzYXZlZENvbnRleHRdOworICAgIENHQ29udGV4dFJl
bGVhc2Uoc2F2ZWRDb250ZXh0KTsKK30KKwogLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAv
LyBEcmF3CiAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTMyMSw3ICszNTMsNyBAQCBE
cmF3KCBISVdlYlZpZXcqIGluVmlldywgUmduSGFuZGxlIGxpbWl0UmduLCBDR0NvbnRleHRSZWYg
aW5Db250ZXh0ICkKIAogCUhJVmlld0dldEJvdW5kcyggaW5WaWV3LT5mVmlld1JlZiwgJmJvdW5k
cyApOwogCi0gICAgQ0dDb250ZXh0UmVmIHNhdmVkQ29udGV4dCA9IFdLTlNXaW5kb3dPdmVycmlk
ZUNHQ29udGV4dChpblZpZXctPmZLaXRXaW5kb3csIGluQ29udGV4dCk7CisgICAgQ0dDb250ZXh0
UmVmIHNhdmVkQ29udGV4dCA9IG92ZXJyaWRlQ0dDb250ZXh0KGluVmlldy0+ZktpdFdpbmRvdywg
aW5Db250ZXh0KTsKICAgICBbTlNHcmFwaGljc0NvbnRleHQgc2V0Q3VycmVudENvbnRleHQ6W2lu
Vmlldy0+ZktpdFdpbmRvdyBncmFwaGljc0NvbnRleHRdXTsKIAogCUdldFJlZ2lvbkJvdW5kcygg
bGltaXRSZ24sICZkcmF3UmVjdCApOwpAQCAtMzUxLDcgKzM4Myw3IEBAIERyYXcoIEhJV2ViVmll
dyogaW5WaWV3LCBSZ25IYW5kbGUgbGltaXRSZ24sIENHQ29udGV4dFJlZiBpbkNvbnRleHQgKQog
ICAgIGVsc2UKICAgICAgICAgW2luVmlldy0+ZldlYlZpZXcgZGlzcGxheVJlY3Q6KihOU1JlY3Qq
KSZoaVJlY3RdOwogCi0gICAgV0tOU1dpbmRvd1Jlc3RvcmVDR0NvbnRleHQoaW5WaWV3LT5mS2l0
V2luZG93LCBzYXZlZENvbnRleHQpOworICAgIHJlc3RvcmVDR0NvbnRleHQoaW5WaWV3LT5mS2l0
V2luZG93LCBzYXZlZENvbnRleHQpOwogCiAgICAgaWYgKCAhaW5WaWV3LT5mSXNDb21wb3NpdGVk
ICkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hv
c3RlZC9XZWJIb3N0ZWROZXRzY2FwZVBsdWdpblZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9QbHVnaW5zL0hvc3RlZC9XZWJIb3N0ZWROZXRzY2FwZVBsdWdpblZpZXcubW0KaW5kZXgg
OWUyMDQ0ZTI2ZTEzOTAyMWViOGNhNjMzNjI1NWYyYzgzM2MxYjhiMi4uNjk1YTVjZjUyNzM3M2Qz
MDlhODNiNjRkNmYxZDAxMDBlZDNhNDA4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvUGx1Z2lucy9Ib3N0ZWQvV2ViSG9zdGVkTmV0c2NhcGVQbHVnaW5WaWV3Lm1tCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL1dlYkhvc3RlZE5ldHNjYXBl
UGx1Z2luVmlldy5tbQpAQCAtNzYsNyArNzYsNyBAQCArICh2b2lkKWluaXRpYWxpemUKICAgICBX
VEY6OmluaXRpYWxpemVNYWluVGhyZWFkVG9Qcm9jZXNzTWFpblRocmVhZCgpOwogICAgIFJ1bkxv
b3A6OmluaXRpYWxpemVNYWluUnVuTG9vcCgpOwogI2VuZGlmCi0gICAgV0tTZW5kVXNlckNoYW5n
ZU5vdGlmaWNhdGlvbnMoKTsKKyAgICBzZW5kVXNlckNoYW5nZU5vdGlmaWNhdGlvbnMoKTsKIH0K
IAogLSAoaWQpaW5pdFdpdGhGcmFtZTooTlNSZWN0KWZyYW1lCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYkJhc2VOZXRzY2FwZVBsdWdpblZpZXcuaCBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViQmFzZU5ldHNjYXBlUGx1Z2luVmlldy5o
CmluZGV4IGMyMjIzYWI2ZDI2NzUxZjM4YzM4OTU4MWJkMzQ5ZGU5ODE0YzE1YjEuLmNkNDMwZDM2
Njk3MWVjOWZlMmVhMGQ0NDA1OTNiNTgwYzljYTJlMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViQmFzZU5ldHNjYXBlUGx1Z2luVmlldy5oCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViQmFzZU5ldHNjYXBlUGx1Z2luVmlldy5o
CkBAIC0xMzQsNiArMTM0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogbmFtZXNwYWNlIFdlYktp
dCB7CiBib29sIGdldEF1dGhlbnRpY2F0aW9uSW5mbyhjb25zdCBjaGFyKiBwcm90b2NvbFN0ciwg
Y29uc3QgY2hhciogaG9zdFN0ciwgaW50MzJfdCBwb3J0LCBjb25zdCBjaGFyKiBzY2hlbWVTdHIs
IGNvbnN0IGNoYXIqIHJlYWxtU3RyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgV1RGOjpD
U3RyaW5nJiB1c2VybmFtZSwgV1RGOjpDU3RyaW5nJiBwYXNzd29yZCk7Cit2b2lkIHNlbmRVc2Vy
Q2hhbmdlTm90aWZpY2F0aW9ucygpOwogfSAKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYkJhc2VOZXRzY2FwZVBsdWdpblZpZXcubW0gYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYkJhc2VOZXRzY2FwZVBsdWdpblZpZXcu
bW0KaW5kZXggNjRkZTkwMTBlYmRiMGIwNjlkNmY4NjNhM2ZlZjJmZmQ3YjVkNDMzOC4uOTU3M2Q1
NTNjNTUzYzNiNDEwMTZkNzg0Y2IxYjAyMzM3Yzg0ODg0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJCYXNlTmV0c2NhcGVQbHVnaW5WaWV3Lm1tCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViQmFzZU5ldHNjYXBlUGx1Z2luVmll
dy5tbQpAQCAtNTUsNiArNTUsNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbi5o
PgogI2ltcG9ydCA8V2ViQ29yZS9XZWJDb3JlT2JqQ0V4dHJhcy5oPgogI2ltcG9ydCA8V2ViS2l0
TGVnYWN5L0RPTVByaXZhdGUuaD4KKyNpbXBvcnQgPHBhbC9zcGkvY2cvQ29yZUdyYXBoaWNzU1BJ
Lmg+CiAjaW1wb3J0IDxydW50aW1lL0luaXRpYWxpemVUaHJlYWRpbmcuaD4KICNpbXBvcnQgPHd0
Zi9Bc3NlcnRpb25zLmg+CiAjaW1wb3J0IDx3dGYvTWFpblRocmVhZC5oPgpAQCAtNzMsNyArNzQs
NyBAQCArICh2b2lkKWluaXRpYWxpemUKICAgICBKU0M6OmluaXRpYWxpemVUaHJlYWRpbmcoKTsK
ICAgICBXVEY6OmluaXRpYWxpemVNYWluVGhyZWFkVG9Qcm9jZXNzTWFpblRocmVhZCgpOwogICAg
IFJ1bkxvb3A6OmluaXRpYWxpemVNYWluUnVuTG9vcCgpOwotICAgIFdLU2VuZFVzZXJDaGFuZ2VO
b3RpZmljYXRpb25zKCk7CisgICAgV2ViS2l0OjpzZW5kVXNlckNoYW5nZU5vdGlmaWNhdGlvbnMo
KTsKIH0KIAogLSAoaWQpaW5pdFdpdGhGcmFtZTooTlNSZWN0KWZyYW1lCkBAIC05MDAsNiArOTAx
LDIzIEBAIGJvb2wgZ2V0QXV0aGVudGljYXRpb25JbmZvKGNvbnN0IGNoYXIqIHByb3RvY29sU3Ry
LCBjb25zdCBjaGFyKiBob3N0U3RyLCBpbnQzMl90CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK3Zv
aWQgc2VuZFVzZXJDaGFuZ2VOb3RpZmljYXRpb25zKCkKK3sKKyAgICBhdXRvIGNvbnNvbGVDb25u
ZWN0aW9uQ2hhbmdlTm90aWZ5UHJvYyA9IFtdKENHU05vdGlmaWNhdGlvblR5cGUgdHlwZSwgQ0dT
Tm90aWZpY2F0aW9uRGF0YSwgQ0dTQnl0ZUNvdW50LCBDR1NOb3RpZmljYXRpb25BcmcpIHsKKyAg
ICAgICAgTlNTdHJpbmcgKm5vdGlmaWNhdGlvbk5hbWUgPSBuaWw7CisgICAgICAgIGlmICh0eXBl
ID09IGtDR1Nlc3Npb25Db25zb2xlQ29ubmVjdCkKKyAgICAgICAgICAgIG5vdGlmaWNhdGlvbk5h
bWUgPSBMb2dpbldpbmRvd0RpZFN3aXRjaFRvVXNlck5vdGlmaWNhdGlvbjsKKyAgICAgICAgZWxz
ZSBpZiAodHlwZSA9PSBrQ0dTZXNzaW9uQ29uc29sZURpc2Nvbm5lY3QpCisgICAgICAgICAgICBu
b3RpZmljYXRpb25OYW1lID0gTG9naW5XaW5kb3dEaWRTd2l0Y2hGcm9tVXNlck5vdGlmaWNhdGlv
bjsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAg
ICAgIFtbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0gcG9zdE5vdGlmaWNhdGlv
bk5hbWU6bm90aWZpY2F0aW9uTmFtZSBvYmplY3Q6bmlsXTsKKyAgICB9OworCisgICAgQ0dTUmVn
aXN0ZXJOb3RpZnlQcm9jKGNvbnNvbGVDb25uZWN0aW9uQ2hhbmdlTm90aWZ5UHJvYywga0NHU2Vz
c2lvbkNvbnNvbGVDb25uZWN0LCBudWxscHRyKTsKKyAgICBDR1NSZWdpc3Rlck5vdGlmeVByb2Mo
Y29uc29sZUNvbm5lY3Rpb25DaGFuZ2VOb3RpZnlQcm9jLCBrQ0dTZXNzaW9uQ29uc29sZURpc2Nv
bm5lY3QsIG51bGxwdHIpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8v
ICBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5WaWV3Lm1tIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblZpZXcubW0KaW5kZXggYzY4MGZm
N2VlMzFjOTNiOGZiNDkyMjk3ZTRlN2FkOTE0MWE0ZGRlNC4uMmJiZDNkZWJlNjZlMThkOGYzMTgw
Yzk0Y2ExMzM3ZmNmN2Q4ODE3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
UGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblZpZXcubW0KQEAgLTE5Myw3ICsxOTMsNyBA
QCArICh2b2lkKWluaXRpYWxpemUKICAgICBKU0M6OmluaXRpYWxpemVUaHJlYWRpbmcoKTsKICAg
ICBXVEY6OmluaXRpYWxpemVNYWluVGhyZWFkVG9Qcm9jZXNzTWFpblRocmVhZCgpOwogICAgIFJ1
bkxvb3A6OmluaXRpYWxpemVNYWluUnVuTG9vcCgpOwotICAgIFdLU2VuZFVzZXJDaGFuZ2VOb3Rp
ZmljYXRpb25zKCk7CisgICAgc2VuZFVzZXJDaGFuZ2VOb3RpZmljYXRpb25zKCk7CiB9CiAKIC8v
IE1BUks6IEVWRU5UUwpAQCAtMzc5LDEwICszNzksMTAgQEAgLSAoUG9ydFN0YXRlKXNhdmVBbmRT
ZXROZXdQb3J0U3RhdGVGb3JVcGRhdGU6KEJPT0wpZm9yVXBkYXRlCiAgICAgICAgICAgICBxZFBv
cnRTdGF0ZS0+Y2xpcFJlZ2lvbiA9IGNsaXBSZWdpb247CiAKICAgICAgICAgICAgIENHQ29udGV4
dFJlZiBjdXJyZW50Q29udGV4dCA9IChDR0NvbnRleHRSZWYpW1tOU0dyYXBoaWNzQ29udGV4dCBj
dXJyZW50Q29udGV4dF0gZ3JhcGhpY3NQb3J0XTsKLSAgICAgICAgICAgIGlmIChjdXJyZW50Q29u
dGV4dCAmJiBXS0NHQ29udGV4dElzQml0bWFwQ29udGV4dChjdXJyZW50Q29udGV4dCkpIHsKLSAg
ICAgICAgICAgICAgICAvLyBXZSB1c2UgV0tDR0NvbnRleHRJc0JpdG1hcENvbnRleHQgaGVyZSwg
YmVjYXVzZSBpZiB3ZSBqdXN0IGNhbGxlZCBDR0JpdG1hcENvbnRleHRHZXREYXRhCi0gICAgICAg
ICAgICAgICAgLy8gb24gYW55IGNvbnRleHQsIHdlJ2QgbG9nIHRvIHRoZSBjb25zb2xlIGV2ZXJ5
IHRpbWUuIEJ1dCBldmVuIGlmIFdLQ0dDb250ZXh0SXNCaXRtYXBDb250ZXh0Ci0gICAgICAgICAg
ICAgICAgLy8gcmV0dXJucyB0cnVlLCBpdCBzdGlsbCBtaWdodCBub3QgYmUgYSBjb250ZXh0IHdl
IG5lZWQgdG8gY3JlYXRlIGEgR1dvcmxkIGZvcjsgZm9yIGV4YW1wbGUKKyAgICAgICAgICAgIGlm
IChjdXJyZW50Q29udGV4dCAmJiBDR0NvbnRleHRHZXRUeXBlKGN1cnJlbnRDb250ZXh0KSA9PSBr
Q0dDb250ZXh0VHlwZUJpdG1hcCkgeworICAgICAgICAgICAgICAgIC8vIFdlIGNoZWNrIGZvciBr
Q0dDb250ZXh0VHlwZUJpdG1hcCBoZXJlLCBiZWNhdXNlIGlmIHdlIGp1c3QgY2FsbGVkIENHQml0
bWFwQ29udGV4dEdldERhdGEKKyAgICAgICAgICAgICAgICAvLyBvbiBhbnkgY29udGV4dCwgd2Un
ZCBsb2cgdG8gdGhlIGNvbnNvbGUgZXZlcnkgdGltZS4gQnV0IGV2ZW4gaWYgY3VycmVudENvbnRl
eHQgaXMgYQorICAgICAgICAgICAgICAgIC8vIGtDR0NvbnRleHRUeXBlQml0bWFwLCBpdCBzdGls
bCBtaWdodCBub3QgYmUgYSBjb250ZXh0IHdlIG5lZWQgdG8gY3JlYXRlIGEgR1dvcmxkIGZvcjsg
Zm9yIGV4YW1wbGUKICAgICAgICAgICAgICAgICAvLyB0cmFuc3BhcmVuY3kgbGF5ZXJzIHdpbGwg
cmV0dXJuIHRydWUsIGJ1dCByZXR1cm4gMCBmb3IgQ0dCaXRtYXBDb250ZXh0R2V0RGF0YS4KICAg
ICAgICAgICAgICAgICB2b2lkKiBvZmZzY3JlZW5EYXRhID0gQ0dCaXRtYXBDb250ZXh0R2V0RGF0
YShjdXJyZW50Q29udGV4dCk7CiAgICAgICAgICAgICAgICAgaWYgKG9mZnNjcmVlbkRhdGEpIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlN5
c3RlbUludGVyZmFjZS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYlN5c3RlbUludGVyZmFjZS5tbQppbmRleCA2ZGQwYjU3ZGQ0YmYzNDNmZTk2NmYwZmJhNjNj
MTFjZjRmMDhkOTMyLi5iNTExZDY1ZWE2MWIzNjI0N2QyYjgzZWIyYzY4OTExNDNmMzk3Y2Q4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJTeXN0
ZW1JbnRlcmZhY2UubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViU3lzdGVtSW50ZXJmYWNlLm1tCkBAIC00MywxNiArNDMsOSBAQCB2b2lkIEluaXRXZWJD
b3JlU3lzdGVtSW50ZXJmYWNlKHZvaWQpCiAgICAgICAgIHJldHVybjsKIAogICAgIElOSVQoQ0FM
YXllckVudW1lcmF0ZVJlY3RzQmVpbmdEcmF3bldpdGhCbG9jayk7Ci0gICAgSU5JVChDR1BhdHRl
cm5DcmVhdGVXaXRoSW1hZ2VBbmRUcmFuc2Zvcm0pOwotI2lmICFQTEFURk9STShJT1MpCi0gICAg
SU5JVChDR0NvbnRleHREcmF3c1dpdGhDb3JyZWN0U2hhZG93T2Zmc2V0cyk7Ci0jZW5kaWYKICAg
ICBJTklUKENvcHlDT05ORUNUUHJveHlSZXNwb25zZSk7CiAjaWYgIVBMQVRGT1JNKElPUykKICAg
ICBJTklUKERyYXdCZXplbGVkVGV4dEFyZWEpOwotICAgIElOSVQoRHJhd0ZvY3VzUmluZyk7Ci0g
ICAgSU5JVChEcmF3Rm9jdXNSaW5nQXRUaW1lKTsKLSAgICBJTklUKERyYXdDZWxsRm9jdXNSaW5n
V2l0aEZyYW1lQXRUaW1lKTsKICAgICBJTklUKERyYXdNZWRpYVVJUGFydCk7CiAgICAgSU5JVChE
cmF3TWVkaWFTbGlkZXJUcmFjayk7CiAgICAgSU5JVChHZXROU0V2ZW50S2V5Q2hhcik7CkBAIC02
MCwxNSArNTMsOSBAQCB2b2lkIEluaXRXZWJDb3JlU3lzdGVtSW50ZXJmYWNlKHZvaWQpCiAgICAg
SU5JVChNZWFzdXJlTWVkaWFVSVBhcnQpOwogICAgIElOSVQoQ3JlYXRlTWVkaWFVSUJhY2tncm91
bmRWaWV3KTsKICAgICBJTklUKENyZWF0ZU1lZGlhVUlDb250cm9sKTsKLSAgICBJTklUKFdpbmRv
d1NldEFscGhhKTsKLSAgICBJTklUKFdpbmRvd1NldFNjYWxlZEZyYW1lKTsKICNlbmRpZgogICAg
IElOSVQoU2V0Q09OTkVDVFByb3h5QXV0aG9yaXphdGlvbkZvclN0cmVhbSk7CiAgICAgSU5JVChT
ZXRDT05ORUNUUHJveHlGb3JTdHJlYW0pOwotI2lmICFQTEFURk9STShJT1MpCi0gICAgSU5JVChT
ZXREcmFnSW1hZ2UpOwotI2VuZGlmCi0gICAgSU5JVChDR0NvbnRleHRJc1BERkNvbnRleHQpOwog
I2lmIEVOQUJMRShWSURFTykgJiYgIVBMQVRGT1JNKElPUykKICAgICBJTklUKFFUSW5jbHVkZU9u
bHlNb2Rlcm5NZWRpYUZpbGVUeXBlcyk7CiAgICAgSU5JVChRVE1vdmllRGlzYWJsZUNvbXBvbmVu
dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1l
Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQppbmRleCBm
MGY4ZTYyODU4MGIyOWZlMDQ3ZWRkZjZlYjQ3NTc4YzZkMDVkZDJkLi5lNzA5M2M5NmFhYzQ3NGUz
YWVlOWU3MmQyM2IyNGViMWM1ODlhMmViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YlZpZXcvV2ViRnJhbWUubW0KQEAgLTU5OCw3ICs1OTgsNyBAQCAtIChQYWludEJlaGF2aW9yKV9w
YWludEJlaGF2aW9yRm9yRGVzdGluYXRpb25Db250ZXh0OihDR0NvbnRleHRSZWYpY29udGV4dAog
ICAgICAgICByZXR1cm4gUGFpbnRCZWhhdmlvckZsYXR0ZW5Db21wb3NpdGluZ0xheWVycyB8IFBh
aW50QmVoYXZpb3JTbmFwc2hvdHRpbmc7CiAjZW5kaWYKIAotICAgIGlmICghV0tDR0NvbnRleHRJ
c0JpdG1hcENvbnRleHQoY29udGV4dCkpCisgICAgaWYgKENHQ29udGV4dEdldFR5cGUoY29udGV4
dCkgIT0ga0NHQ29udGV4dFR5cGVCaXRtYXApCiAgICAgICAgIHJldHVybiBQYWludEJlaGF2aW9y
Tm9ybWFsOwogCiAgICAgLy8gSWYgd2UncmUgZHJhd2luZyBpbnRvIGEgYml0bWFwLCB3ZSBtaWdo
dCBiZSBzbmFwc2hvdHRpbmcsIG9yIGRyYXdpbmcgaW50byBhIGxheWVyLWJhY2tlZCB2aWV3Lgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGdWxsU2NyZWVu
Q29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnVsbFNj
cmVlbkNvbnRyb2xsZXIubW0KaW5kZXggZmQ4ZmM1Njk5N2FmY2I2YWQ3ZjkwYzVmYzk5ODRiYTMx
NzY2ZTkwNy4uNzcyZTk2MjNjM2Y2NWJlMjM0ODY5MmJlMzI0YTQ3YTZiZWRhNDg3NCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGdWxsU2NyZWVuQ29udHJv
bGxlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZ1bGxTY3Jl
ZW5Db250cm9sbGVyLm1tCkBAIC0yNDksNiArMjQ5LDE2IEBAIC0gKHZvaWQpZW50ZXJGdWxsU2Ny
ZWVuOihOU1NjcmVlbiAqKXNjcmVlbgogICAgIF9pc0VudGVyaW5nRnVsbFNjcmVlbiA9IHRydWU7
CiB9CiAKK3N0YXRpYyB2b2lkIHNldENsaXBSZWN0Rm9yV2luZG93KE5TV2luZG93ICp3aW5kb3cs
IE5TUmVjdCBjbGlwUmVjdCkKK3sKKyAgICBDR1NXaW5kb3dJRCB3aW5kb3dOdW1iZXIgPSAoQ0dT
V2luZG93SUQpd2luZG93LndpbmRvd051bWJlcjsKKyAgICBDR1NSZWdpb25PYmogc2hhcGU7Cisg
ICAgQ0dSZWN0IGNnQ2xpcFJlY3QgPSBOU1JlY3RUb0NHUmVjdChjbGlwUmVjdCk7CisgICAgQ0dT
TmV3UmVnaW9uV2l0aFJlY3QoJmNnQ2xpcFJlY3QsICZzaGFwZSk7CisgICAgQ0dTU2V0V2luZG93
Q2xpcFNoYXBlKENHU01haW5Db25uZWN0aW9uSUQoKSwgd2luZG93TnVtYmVyLCBzaGFwZSk7Cisg
ICAgQ0dTUmVsZWFzZVJlZ2lvbihzaGFwZSk7Cit9CisKIC0gKHZvaWQpZmluaXNoZWRFbnRlckZ1
bGxTY3JlZW5BbmltYXRpb246KGJvb2wpY29tcGxldGVkCiB7CiAgICAgaWYgKCFfaXNFbnRlcmlu
Z0Z1bGxTY3JlZW4pCkBAIC0yNjMsNyArMjczLDcgQEAgLSAodm9pZClmaW5pc2hlZEVudGVyRnVs
bFNjcmVlbkFuaW1hdGlvbjooYm9vbCljb21wbGV0ZWQKICAgICAgICAgCiAgICAgICAgIE5TUmVj
dCB3aW5kb3dCb3VuZHMgPSBbW3NlbGYgd2luZG93XSBmcmFtZV07CiAgICAgICAgIHdpbmRvd0Jv
dW5kcy5vcmlnaW4gPSBOU1plcm9Qb2ludDsKLSAgICAgICAgV0tXaW5kb3dTZXRDbGlwUmVjdChb
c2VsZiB3aW5kb3ddLCB3aW5kb3dCb3VuZHMpOworICAgICAgICBzZXRDbGlwUmVjdEZvcldpbmRv
dyhzZWxmLndpbmRvdywgd2luZG93Qm91bmRzKTsKICAgICAgICAgCiAgICAgICAgIE5TV2luZG93
ICp3ZWJXaW5kb3cgPSBbX3dlYlZpZXdQbGFjZWhvbGRlci5nZXQoKSB3aW5kb3ddOwogICAgICAg
ICAvLyBJbiBMaW9uLCBOU1dpbmRvdyB3aWxsIGFuaW1hdGUgaW50byBhbmQgb3V0IG9mIG9yZGVy
T3V0IG9wZXJhdGlvbnMuIFN1cHByZXNzIHRoYXQKQEAgLTM1Myw3ICszNjMsNyBAQCAtICh2b2lk
KWZpbmlzaGVkRXhpdEZ1bGxTY3JlZW5BbmltYXRpb246KGJvb2wpY29tcGxldGVkCiAgICAgCiAg
ICAgTlNSZWN0IHdpbmRvd0JvdW5kcyA9IFtbc2VsZiB3aW5kb3ddIGZyYW1lXTsKICAgICB3aW5k
b3dCb3VuZHMub3JpZ2luID0gTlNaZXJvUG9pbnQ7Ci0gICAgV0tXaW5kb3dTZXRDbGlwUmVjdChb
c2VsZiB3aW5kb3ddLCB3aW5kb3dCb3VuZHMpOworICAgIHNldENsaXBSZWN0Rm9yV2luZG93KHNl
bGYud2luZG93LCB3aW5kb3dCb3VuZHMpOwogICAgIAogICAgIFtbc2VsZiB3aW5kb3ddIG9yZGVy
T3V0OnNlbGZdOwogICAgIFtbc2VsZiB3aW5kb3ddIHNldEZyYW1lOk5TWmVyb1JlY3QgZGlzcGxh
eTpZRVNdOwpAQCAtNDg0LDEzICs0OTQsMTMgQEAgLSAodm9pZClfc3RhcnRFbnRlckZ1bGxTY3Jl
ZW5BbmltYXRpb25XaXRoRHVyYXRpb246KE5TVGltZUludGVydmFsKWR1cmF0aW9uCiAgICAgW19z
Y2FsZUFuaW1hdGlvbi5nZXQoKSBzZXRDdXJyZW50UHJvZ3Jlc3M6MF07CiAgICAgW19zY2FsZUFu
aW1hdGlvbi5nZXQoKSBzdGFydEFuaW1hdGlvbl07CiAgICAgCi0gICAgLy8gV0tXaW5kb3dTZXRD
bGlwUmVjdCB0YWtlcyB3aW5kb3cgY29vcmRpbmF0ZXMsIHNvIGNvbnZlcnQgZnJvbSBzY3JlZW4g
Y29vcmRpbmF0ZXMgaGVyZToKKyAgICAvLyBzZXRDbGlwUmVjdEZvcldpbmRvdyB0YWtlcyB3aW5k
b3cgY29vcmRpbmF0ZXMsIHNvIGNvbnZlcnQgZnJvbSBzY3JlZW4gY29vcmRpbmF0ZXMgaGVyZToK
ICAgICBOU1JlY3QgZmluYWxCb3VuZHMgPSBfZmluYWxGcmFtZTsKICNwcmFnbWEgY2xhbmcgZGlh
Z25vc3RpYyBwdXNoCiAjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgaWdub3JlZCAiLVdkZXByZWNh
dGVkLWRlY2xhcmF0aW9ucyIKICAgICBmaW5hbEJvdW5kcy5vcmlnaW4gPSBbW3NlbGYgd2luZG93
XSBjb252ZXJ0U2NyZWVuVG9CYXNlOmZpbmFsQm91bmRzLm9yaWdpbl07CiAjcHJhZ21hIGNsYW5n
IGRpYWdub3N0aWMgcG9wCi0gICAgV0tXaW5kb3dTZXRDbGlwUmVjdChbc2VsZiB3aW5kb3ddLCBm
aW5hbEJvdW5kcyk7CisgICAgc2V0Q2xpcFJlY3RGb3JXaW5kb3coc2VsZi53aW5kb3csIGZpbmFs
Qm91bmRzKTsKICAgICAKICAgICBbW3NlbGYgd2luZG93XSBtYWtlS2V5QW5kT3JkZXJGcm9udDpz
ZWxmXTsKICAgICAKQEAgLTU1NiwxMyArNTY2LDEzIEBAIC0gKHZvaWQpX3N0YXJ0RXhpdEZ1bGxT
Y3JlZW5BbmltYXRpb25XaXRoRHVyYXRpb246KE5TVGltZUludGVydmFsKWR1cmF0aW9uCiAgICAg
CiAgICAgW19iYWNrZ3JvdW5kV2luZG93LmdldCgpIG9yZGVyV2luZG93Ok5TV2luZG93QmVsb3cg
cmVsYXRpdmVUbzpbW3NlbGYgd2luZG93XSB3aW5kb3dOdW1iZXJdXTsKICAgICAKLSAgICAvLyBX
S1dpbmRvd1NldENsaXBSZWN0IHRha2VzIHdpbmRvdyBjb29yZGluYXRlcywgc28gY29udmVydCBm
cm9tIHNjcmVlbiBjb29yZGluYXRlcyBoZXJlOgorICAgIC8vIHNldENsaXBSZWN0Rm9yV2luZG93
IHRha2VzIHdpbmRvdyBjb29yZGluYXRlcywgc28gY29udmVydCBmcm9tIHNjcmVlbiBjb29yZGlu
YXRlcyBoZXJlOgogICAgIE5TUmVjdCBmaW5hbEJvdW5kcyA9IF9maW5hbEZyYW1lOwogI3ByYWdt
YSBjbGFuZyBkaWFnbm9zdGljIHB1c2gKICNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBpZ25vcmVk
ICItV2RlcHJlY2F0ZWQtZGVjbGFyYXRpb25zIgogICAgIGZpbmFsQm91bmRzLm9yaWdpbiA9IFtb
c2VsZiB3aW5kb3ddIGNvbnZlcnRTY3JlZW5Ub0Jhc2U6ZmluYWxCb3VuZHMub3JpZ2luXTsKICNw
cmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwb3AKLSAgICBXS1dpbmRvd1NldENsaXBSZWN0KFtzZWxm
IHdpbmRvd10sIGZpbmFsQm91bmRzKTsKKyAgICBzZXRDbGlwUmVjdEZvcldpbmRvdyhzZWxmLndp
bmRvdywgZmluYWxCb3VuZHMpOwogICAgIAogICAgIFtbc2VsZiB3aW5kb3ddIHNldEF1dG9kaXNw
bGF5OllFU107CiAgICAgW1tzZWxmIHdpbmRvd10gZGlzcGxheUlmTmVlZGVkXTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>319606</attachid>
            <date>2017-09-01 09:56:23 -0700</date>
            <delta_ts>2017-09-01 10:55:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-176200-20170901095622.patch</filename>
            <type>text/plain</type>
            <size>65581</size>
            <attacher name="Andy Estes">aestes</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIxNDczCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmNmNjE0ZmZmMzUzODM2
Mjg0MTIwMzJkMzk0M2FkZDllOGNjOWJmNS4uZDY3YWI1ZTIxNjRkNmY5NzBmNDU1MmZlZDg5M2Vl
NmQyYTgzMzYwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDQ2IEBACiAyMDE3LTA4LTMxICBBbmR5
IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KIAorICAgICAgICBbQ0ddIFVwc3RyZWFtIENvcmVH
cmFwaGljcy1yZWxhdGVkIFdlYktpdFN5c3RlbUludGVyZmFjZSBmdW5jdGlvbnMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NjIwMAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NDb250ZXh0Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VT
b3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OnN1YnNhbXBsaW5nTGV2
ZWxGb3JTY2FsZUZhY3Rvcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhp
Y3NDb250ZXh0Q0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpjbGlw
T3V0KToKKyAgICAgICAgKFdlYkNvcmU6OmFwcGx5U2hhZG93T2Zmc2V0V29ya2Fyb3VuZElmTmVl
ZGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9QYXR0ZXJuQ0cuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UGF0dGVybjo6Y3JlYXRlUGxhdGZvcm1QYXR0ZXJuIGNvbnN0KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRDb2NvYS5tbToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6Zm9jdXNSaW5nQ29sb3IpOgorICAg
ICAgICAoV2ViQ29yZTo6ZHJhd0ZvY3VzUmluZ0F0VGltZSk6CisgICAgICAgIChXZWJDb3JlOjpk
cmF3Rm9jdXNSaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OmRyYXdGb2N1c1JpbmdUb0NvbnRleHQp
OgorICAgICAgICAoV2ViQ29yZTo6ZHJhd0ZvY3VzUmluZ1RvQ29udGV4dEF0VGltZSk6CisgICAg
ICAgICogcGxhdGZvcm0vaW9zL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2VJT1MubW06CisgICAgICAg
ICogcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpmbGlw
SW1hZ2VTcGVjKToKKyAgICAgICAgKFdlYkNvcmU6OnNldERyYWdJbWFnZUltcGwpOgorICAgICAg
ICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6c2V0RHJhZ0ltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9tYWMvUGxhdGZvcm1FdmVudEZhY3RvcnlNYWMubW06CisgICAgICAgICogcGxhdGZvcm0vbWFj
L1Njcm9sbGJhclRoZW1lTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6bGluZW5CYWNrZ3JvdW5k
Q29sb3IpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9UaGVtZU1hYy5tbToKKyAgICAgICAgKFdl
YkNvcmU6OmRyYXdDZWxsRm9jdXNSaW5nV2l0aEZyYW1lQXRUaW1lKToKKyAgICAgICAgKFdlYkNv
cmU6OmRyYXdDZWxsRm9jdXNSaW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvV2ViQ29yZVN5
c3RlbUludGVyZmFjZS5oOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9XZWJDb3JlU3lzdGVtSW50
ZXJmYWNlLm1tOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9XZWJXaW5kb3dBbmltYXRpb24ubW06
CisgICAgICAgIChmbGlwUmVjdCk6CisgICAgICAgIChtYWluV2luZG93U2VydmVyQ29ubmVjdGlv
bklEKToKKyAgICAgICAgKHNldFNjYWxlZEZyYW1lRm9yV2luZG93KToKKyAgICAgICAgKC1bV2Vi
V2luZG93U2NhbGVBbmltYXRpb24gc2V0Q3VycmVudFByb2dyZXNzOl0pOgorICAgICAgICAoLVtX
ZWJXaW5kb3dGYWRlQW5pbWF0aW9uIHNldEN1cnJlbnRQcm9ncmVzczpdKToKKworMjAxNy0wOC0z
MSAgQW5keSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+CisKICAgICAgICAgW01hY10gVXBzdHJl
YW0gQXBwS2l0LXJlbGF0ZWQgV2ViS2l0U3lzdGVtSW50ZXJmYWNlIGZ1bmN0aW9ucwogICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc2MTc1CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9QQUwv
Q2hhbmdlTG9nCmluZGV4IGVlZWU4NGRjNjE5ZDkyZDRkYTJhMTIwYjIwODZkYzZjNjEwYTY4YjIu
LjQzNjE3MDA3YTFlMGJlMDZhNWY2MTg0NmQxZTJlMjBiODRmZGIwYTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML0NoYW5n
ZUxvZwpAQCAtMSw1ICsxLDE3IEBACiAyMDE3LTA4LTMxICBBbmR5IEVzdGVzICA8YWVzdGVzQGFw
cGxlLmNvbT4KIAorICAgICAgICBbQ0ddIFVwc3RyZWFtIENvcmVHcmFwaGljcy1yZWxhdGVkIFdl
YktpdFN5c3RlbUludGVyZmFjZSBmdW5jdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NjIwMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogUEFMLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6Cisg
ICAgICAgICogcGFsL3NwaS9jZy9Db3JlR3JhcGhpY3NTUEkuaDoKKyAgICAgICAgKiBwYWwvc3Bp
L21hYy9ISVNlcnZpY2VzU1BJLmg6CisgICAgICAgICogcGFsL3NwaS9tYWMvTlNHcmFwaGljc1NQ
SS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9tYWMvSElTZXJ2aWNl
c1NQSS5oLgorCisyMDE3LTA4LTMxICBBbmR5IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KKwog
ICAgICAgICBbTWFjXSBVcHN0cmVhbSBBcHBLaXQtcmVsYXRlZCBXZWJLaXRTeXN0ZW1JbnRlcmZh
Y2UgZnVuY3Rpb25zCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNzYxNzUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBiNjJiN2VlNTYxZmYwNDQ2ZmVlYmRiNDMwNjU2Njcx
MmNjZGZlZDI4Li4yZGMxYjc0MjNjMzhiYTcxYTE1ZDNhODljNDYwYWZjNDEwZWRiZThhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwpAQCAtMSw1ICsxLDIyIEBACiAyMDE3LTA4LTMxICBBbmR5IEVzdGVzICA8YWVzdGVzQGFw
cGxlLmNvbT4KIAorICAgICAgICBbQ0ddIFVwc3RyZWFtIENvcmVHcmFwaGljcy1yZWxhdGVkIFdl
YktpdFN5c3RlbUludGVyZmFjZSBmdW5jdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NjIwMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogUGx1Z2luUHJvY2Vzcy9tYWMvUGx1Z2luUHJvY2Vzc01h
Yy5tbToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXpl
UHJvY2Vzcyk6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9XaW5kb3dTZXJ2ZXJDb25uZWN0aW9u
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9XaW5kb3dTZXJ2ZXJDb25uZWN0aW9uLm1tOgor
ICAgICAgICAoV2ViS2l0OjpyZWdpc3Rlck9jY2x1c2lvbk5vdGlmaWNhdGlvbkhhbmRsZXIpOgor
ICAgICAgICAoV2ViS2l0OjpXaW5kb3dTZXJ2ZXJDb25uZWN0aW9uOjpXaW5kb3dTZXJ2ZXJDb25u
ZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2luZG93U2VydmVyQ29ubmVjdGlvbjo6YXBwbGlj
YXRpb25XaW5kb3dNb2RpZmljYXRpb25zU3RhcnRlZCk6IERlbGV0ZWQuCisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViU3lzdGVtSW50ZXJmYWNlLm1tOgorICAgICAg
ICAoSW5pdFdlYkNvcmVTeXN0ZW1JbnRlcmZhY2UpOgorCisyMDE3LTA4LTMxICBBbmR5IEVzdGVz
ICA8YWVzdGVzQGFwcGxlLmNvbT4KKwogICAgICAgICBbTWFjXSBVcHN0cmVhbSBBcHBLaXQtcmVs
YXRlZCBXZWJLaXRTeXN0ZW1JbnRlcmZhY2UgZnVuY3Rpb25zCiAgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzYxNzUKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hh
bmdlTG9nCmluZGV4IGM0Zjk5NTY3MjU0ZDBiNjIyYzlhOGY5ODc5MTdiNjcwMzM5NzgwOTMuLmU3
ZDhkODBmNDAyMjJjYmNmNzQyOThjN2E5MjEzYTgzMDI0YTkwZGIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9DaGFuZ2VMb2cKQEAgLTEsNSArMSwzNiBAQAogMjAxNy0wOC0zMSAgQW5keSBFc3RlcyAgPGFl
c3Rlc0BhcHBsZS5jb20+CiAKKyAgICAgICAgW0NHXSBVcHN0cmVhbSBDb3JlR3JhcGhpY3MtcmVs
YXRlZCBXZWJLaXRTeXN0ZW1JbnRlcmZhY2UgZnVuY3Rpb25zCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzYyMDAKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIENhcmJvbi9ISVdlYlZpZXcubW06CisgICAg
ICAgICgtW05TV2luZG93R3JhcGhpY3NDb250ZXh0IF93ZWJfc2V0R3JhcGhpY3NQb3J0Ol0pOgor
ICAgICAgICAob3ZlcnJpZGVDR0NvbnRleHQpOgorICAgICAgICAocmVzdG9yZUNHQ29udGV4dCk6
CisgICAgICAgIChEcmF3KToKKyAgICAgICAgKiBQbHVnaW5zL0hvc3RlZC9XZWJIb3N0ZWROZXRz
Y2FwZVBsdWdpblZpZXcubW06CisgICAgICAgICgrW1dlYkhvc3RlZE5ldHNjYXBlUGx1Z2luVmll
dyBpbml0aWFsaXplXSk6CisgICAgICAgICogUGx1Z2lucy9XZWJCYXNlTmV0c2NhcGVQbHVnaW5W
aWV3Lmg6CisgICAgICAgICogUGx1Z2lucy9XZWJCYXNlTmV0c2NhcGVQbHVnaW5WaWV3Lm1tOgor
ICAgICAgICAoV2ViS2l0OjpzZW5kVXNlckNoYW5nZU5vdGlmaWNhdGlvbnMpOgorICAgICAgICAq
IFBsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5WaWV3Lm1tOgorICAgICAgICAoK1tXZWJOZXRzY2Fw
ZVBsdWdpblZpZXcgaW5pdGlhbGl6ZV0pOgorICAgICAgICAoLVtXZWJOZXRzY2FwZVBsdWdpblZp
ZXcgc2F2ZUFuZFNldE5ld1BvcnRTdGF0ZUZvclVwZGF0ZTpdKToKKyAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9XZWJTeXN0ZW1JbnRlcmZhY2UubW06CisgICAgICAgIChJbml0V2ViQ29yZVN5c3Rl
bUludGVyZmFjZSk6CisgICAgICAgICogV2ViVmlldy9XZWJGcmFtZS5tbToKKyAgICAgICAgKC1b
V2ViRnJhbWUgX3BhaW50QmVoYXZpb3JGb3JEZXN0aW5hdGlvbkNvbnRleHQ6XSk6CisgICAgICAg
ICogV2ViVmlldy9XZWJGdWxsU2NyZWVuQ29udHJvbGxlci5tbToKKyAgICAgICAgKHNldENsaXBS
ZWN0Rm9yV2luZG93KToKKyAgICAgICAgKC1bV2ViRnVsbFNjcmVlbkNvbnRyb2xsZXIgZmluaXNo
ZWRFbnRlckZ1bGxTY3JlZW5BbmltYXRpb246XSk6CisgICAgICAgICgtW1dlYkZ1bGxTY3JlZW5D
b250cm9sbGVyIGZpbmlzaGVkRXhpdEZ1bGxTY3JlZW5BbmltYXRpb246XSk6CisgICAgICAgICgt
W1dlYkZ1bGxTY3JlZW5Db250cm9sbGVyIF9zdGFydEVudGVyRnVsbFNjcmVlbkFuaW1hdGlvbldp
dGhEdXJhdGlvbjpdKToKKyAgICAgICAgKC1bV2ViRnVsbFNjcmVlbkNvbnRyb2xsZXIgX3N0YXJ0
RXhpdEZ1bGxTY3JlZW5BbmltYXRpb25XaXRoRHVyYXRpb246XSk6CisKKzIwMTctMDgtMzEgIEFu
ZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29tPgorCiAgICAgICAgIFtNYWNdIFVwc3RyZWFtIEFw
cEtpdC1yZWxhdGVkIFdlYktpdFN5c3RlbUludGVyZmFjZSBmdW5jdGlvbnMKICAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NjE3NQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9QQUwvUEFMLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3Vy
Y2UvV2ViQ29yZS9QQUwvUEFMLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMTNjZWNj
Y2U2YzQzNmYwNTAyZWQ5OTcyYmViNGIxYWViM2YzNDBiOC4uM2EwNDBhYTI0MDg5Mzg5MmNhYmU1
OGU1ZjdjMjA4M2YxNjEyYjZkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML1BBTC54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9QQUwueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTA0LDYgKzEwNCw3IEBACiAJCUExMDgyNkYxMUY1
NzNCQ0EwMDQ3NzJBQyAvKiBOU1Jlc3BvbmRlclNQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTEwODI2RjAxRjU3M0JDQTAwNDc3MkFDIC8qIE5TUmVz
cG9uZGVyU1BJLmggKi87IH07CiAJCUExMDgyNkY5MUY1NzYyOTIwMDQ3NzJBQyAvKiBXZWJQYW5l
bC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTEwODI2
RjcxRjU3NjI5MjAwNDc3MkFDIC8qIFdlYlBhbmVsLmggKi87IH07CiAJCUExMDgyNkZBMUY1NzYy
OTIwMDQ3NzJBQyAvKiBXZWJQYW5lbC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEExMDgyNkY4MUY1NzYyOTIwMDQ3NzJBQyAvKiBXZWJQYW5lbC5tbSAq
LzsgfTsKKwkJQTEwODI2RkUxRjU4QTQzMzAwNDc3MkFDIC8qIE5TR3JhcGhpY3NTUEkuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExMDgyNkZEMUY1OEE0
MzMwMDQ3NzJBQyAvKiBOU0dyYXBoaWNzU1BJLmggKi87IH07CiAJCUExRjU1RENGMUY1NTI4RUMw
MEVEQjc1RiAvKiBNZXRhZGF0YVNQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQTFGNTVEQ0UxRjU1MjhFQzAwRURCNzVGIC8qIE1ldGFkYXRhU1BJLmgg
Ki87IH07CiAJCUEzMEQ0MTIxMUYwREQwRUEwMEI3MTk1NCAvKiBLaWxsUmluZy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTMwRDQxMUUxRjBERDBFQTAw
QjcxOTU0IC8qIEtpbGxSaW5nLmggKi87IH07CiAJCUEzMEQ0MTIyMUYwREQwRUEwMEI3MTk1NCAv
KiBLaWxsUmluZy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBBMzBENDExRjFGMEREMEVBMDBCNzE5NTQgLyogS2lsbFJpbmcuY3BwICovOyB9OwpAQCAt
MjIzLDYgKzIyNCw3IEBACiAJCUExMDgyNkYwMUY1NzNCQ0EwMDQ3NzJBQyAvKiBOU1Jlc3BvbmRl
clNQSS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBOU1Jlc3BvbmRlclNQSS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlBMTA4MjZGNzFGNTc2MjkyMDA0NzcyQUMgLyogV2ViUGFuZWwuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gV2ViUGFuZWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTEw
ODI2RjgxRjU3NjI5MjAwNDc3MkFDIC8qIFdlYlBhbmVsLm1tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gV2ViUGFuZWwubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUExMDgyNkZEMUY1
OEE0MzMwMDQ3NzJBQyAvKiBOU0dyYXBoaWNzU1BJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5TR3JhcGhp
Y3NTUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTFGNTVEQ0UxRjU1MjhFQzAw
RURCNzVGIC8qIE1ldGFkYXRhU1BJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1ldGFkYXRhU1BJLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUEzMEQ0MTFFMUYwREQwRUEwMEI3MTk1NCAvKiBL
aWxsUmluZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBLaWxsUmluZy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMzBENDExRjFGMEREMEVBMDBCNzE5NTQgLyog
S2lsbFJpbmcuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gS2lsbFJp
bmcuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzU1LDYgKzM1Nyw3IEBACiAJ
CQkJMEM3Nzg1NzUxRjQ1MTMwRjAwRjRFQkI2IC8qIE5TQXBwbGljYXRpb25TUEkuaCAqLywKIAkJ
CQkwQzc3ODU3NjFGNDUxMzBGMDBGNEVCQjYgLyogTlNFdmVudFNQSS5oICovLAogCQkJCTBDNzc4
NTc3MUY0NTEzMEYwMEY0RUJCNiAvKiBOU0ZvbnRTUEkuaCAqLywKKwkJCQlBMTA4MjZGRDFGNThB
NDMzMDA0NzcyQUMgLyogTlNHcmFwaGljc1NQSS5oICovLAogCQkJCTBDNzc4NTc4MUY0NTEzMEYw
MEY0RUJCNiAvKiBOU0ltbWVkaWF0ZUFjdGlvbkdlc3R1cmVSZWNvZ25pemVyU1BJLmggKi8sCiAJ
CQkJMEM3Nzg1NzkxRjQ1MTMwRjAwRjRFQkI2IC8qIE5TTWVudVNQSS5oICovLAogCQkJCTBDNzc4
NTdBMUY0NTEzMEYwMEY0RUJCNiAvKiBOU1Bhc3RlYm9hcmRTUEkuaCAqLywKQEAgLTU1MSw2ICs1
NTQsNyBAQAogCQkJCTBDMkRBMTRFMUYzQkVCNDkwMERCQzMxNyAvKiBOU0V4dGVuc2lvblNQSS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEMyREExNEYxRjNCRUI0OTAwREJDMzE3IC8qIE5TRmlsZU1h
bmFnZXJTUEkuaCBpbiBIZWFkZXJzICovLAogCQkJCTBDNzc4NTkwMUY0NTEzMEYwMEY0RUJCNiAv
KiBOU0ZvbnRTUEkuaCBpbiBIZWFkZXJzICovLAorCQkJCUExMDgyNkZFMUY1OEE0MzMwMDQ3NzJB
QyAvKiBOU0dyYXBoaWNzU1BJLmggaW4gSGVhZGVycyAqLywKIAkJCQkwQzc3ODU5MTFGNDUxMzBG
MDBGNEVCQjYgLyogTlNJbW1lZGlhdGVBY3Rpb25HZXN0dXJlUmVjb2duaXplclNQSS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMEM3Nzg1OTIxRjQ1MTMwRjAwRjRFQkI2IC8qIE5TTWVudVNQSS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMEM3Nzg1OTMxRjQ1MTMwRjAwRjRFQkI2IC8qIE5TUGFzdGVib2Fy
ZFNQSS5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFs
L3NwaS9jZy9Db3JlR3JhcGhpY3NTUEkuaCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2Nn
L0NvcmVHcmFwaGljc1NQSS5oCmluZGV4IDdjMjkxYzkxNGQ2OWY1NmQ4NmRiYjRhODgxZmIyMzE4
OWM1YTVhNWMuLjMyMjY1YTBlZjZkNGE4NzBhYjQxNmMyNDA0ZDkyZjRmYmQ5ZDZhODEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NnL0NvcmVHcmFwaGljc1NQSS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NnL0NvcmVHcmFwaGljc1NQSS5oCkBAIC0x
MzcsMjEgKzEzNyw3NCBAQCBzdGF0aWMgaW5saW5lIENHRmxvYXQgQ0dGbG9hdE1pbihDR0Zsb2F0
IGEsIENHRmxvYXQgYikgeyByZXR1cm4gaXNuYW4oYSkgPyBiIDogKAogCiB0eXBlZGVmIHN0cnVj
dCBDR0ZvbnRDYWNoZSBDR0ZvbnRDYWNoZTsKIAotI2lmIFBMQVRGT1JNKE1BQykKLXR5cGVkZWYg
dWludDMyX3QgQ0dTQ29ubmVjdGlvbklEOwotdHlwZWRlZiB1aW50MzJfdCBDR1NXaW5kb3dJRDsK
LXR5cGVkZWYgdWludDMyX3QgQ0dTV2luZG93Q291bnQ7Ci10eXBlZGVmIENHU1dpbmRvd0lEICpD
R1NXaW5kb3dJRExpc3Q7CisjaWYgUExBVEZPUk0oQ09DT0EpCiAKIGVudW0gewogICAgIGtDR1NX
aW5kb3dDYXB0dXJlTm9taW5hbFJlc29sdXRpb24gPSAweDAyMDAsCiAgICAga0NHU0NhcHR1cmVJ
Z25vcmVHbG9iYWxDbGlwU2hhcGUgPSAweDA4MDAsCiB9OwogdHlwZWRlZiB1aW50MzJfdCBDR1NX
aW5kb3dDYXB0dXJlT3B0aW9uczsKLSNlbmRpZgorCit0eXBlZGVmIENGX0VOVU0gKGludDMyX3Qs
IENHU3R5bGVEcmF3T3JkZXJpbmcpIHsKKyAgICBrQ0dTdHlsZURyYXdPcmRlcmluZ1N0eWxlT25s
eSA9IDAsCisgICAga0NHU3R5bGVEcmF3T3JkZXJpbmdCZWxvdyA9IDEsCisgICAga0NHU3R5bGVE
cmF3T3JkZXJpbmdBYm92ZSA9IDIsCit9OworCit0eXBlZGVmIENGX0VOVU0gKGludDMyX3QsIENH
Rm9jdXNSaW5nT3JkZXJpbmcpIHsKKyAgICBrQ0dGb2N1c1JpbmdPcmRlcmluZ05vbmUgPSBrQ0dT
dHlsZURyYXdPcmRlcmluZ1N0eWxlT25seSwKKyAgICBrQ0dGb2N1c1JpbmdPcmRlcmluZ0JlbG93
ID0ga0NHU3R5bGVEcmF3T3JkZXJpbmdCZWxvdywKKyAgICBrQ0dGb2N1c1JpbmdPcmRlcmluZ0Fi
b3ZlID0ga0NHU3R5bGVEcmF3T3JkZXJpbmdBYm92ZSwKK307CisKK3R5cGVkZWYgQ0ZfRU5VTSAo
aW50MzJfdCwgQ0dGb2N1c1JpbmdUaW50KSB7CisgICAga0NHRm9jdXNSaW5nVGludEJsdWUgPSAw
LAorICAgIGtDR0ZvY3VzUmluZ1RpbnRHcmFwaGl0ZSA9IDEsCit9OworCitzdHJ1Y3QgQ0dGb2N1
c1JpbmdTdHlsZSB7CisgICAgdW5zaWduZWQgaW50IHZlcnNpb247CisgICAgQ0dGb2N1c1JpbmdU
aW50IHRpbnQ7CisgICAgQ0dGb2N1c1JpbmdPcmRlcmluZyBvcmRlcmluZzsKKyAgICBDR0Zsb2F0
IGFscGhhOworICAgIENHRmxvYXQgcmFkaXVzOworICAgIENHRmxvYXQgdGhyZXNob2xkOworICAg
IENHUmVjdCBib3VuZHM7CisgICAgaW50IGFjY3VtdWxhdGU7Cit9OwordHlwZWRlZiBzdHJ1Y3Qg
Q0dGb2N1c1JpbmdTdHlsZSBDR0ZvY3VzUmluZ1N0eWxlOworCit0eXBlZGVmIENGX0VOVU0odWlu
dDMyX3QsIENHU05vdGlmaWNhdGlvblR5cGUpIHsKKyAgICBrQ0dTRmlyc3RDb25uZWN0aW9uTm90
aWZpY2F0aW9uID0gOTAwLAorICAgIGtDR1NGaXJzdFNlc3Npb25Ob3RpZmljYXRpb24gPSAxNTAw
LAorfTsKKworc3RhdGljIGNvbnN0IENHU05vdGlmaWNhdGlvblR5cGUga0NHU0Nvbm5lY3Rpb25X
aW5kb3dNb2RpZmljYXRpb25zU3RhcnRlZCA9IChDR1NOb3RpZmljYXRpb25UeXBlKShrQ0dTRmly
c3RDb25uZWN0aW9uTm90aWZpY2F0aW9uICsgNik7CitzdGF0aWMgY29uc3QgQ0dTTm90aWZpY2F0
aW9uVHlwZSBrQ0dTQ29ubmVjdGlvbldpbmRvd01vZGlmaWNhdGlvbnNTdG9wcGVkID0gKENHU05v
dGlmaWNhdGlvblR5cGUpKGtDR1NGaXJzdENvbm5lY3Rpb25Ob3RpZmljYXRpb24gKyA3KTsKK3N0
YXRpYyBjb25zdCBDR1NOb3RpZmljYXRpb25UeXBlIGtDR1Nlc3Npb25Db25zb2xlQ29ubmVjdCA9
IGtDR1NGaXJzdFNlc3Npb25Ob3RpZmljYXRpb247CitzdGF0aWMgY29uc3QgQ0dTTm90aWZpY2F0
aW9uVHlwZSBrQ0dTZXNzaW9uQ29uc29sZURpc2Nvbm5lY3QgPSAoQ0dTTm90aWZpY2F0aW9uVHlw
ZSkoa0NHU2Vzc2lvbkNvbnNvbGVDb25uZWN0ICsgMSk7CisKKyNlbmRpZiAvLyBQTEFURk9STShD
T0NPQSkKIAogI2VuZGlmIC8vIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCiAKKyNpZiBQTEFURk9S
TShDT0NPQSkKK3R5cGVkZWYgdWludDMyX3QgQ0dTQnl0ZUNvdW50OwordHlwZWRlZiB1aW50MzJf
dCBDR1NDb25uZWN0aW9uSUQ7Cit0eXBlZGVmIHVpbnQzMl90IENHU1dpbmRvd0NvdW50OwordHlw
ZWRlZiB1aW50MzJfdCBDR1NXaW5kb3dJRDsKKwordHlwZWRlZiBDR1NXaW5kb3dJRCogQ0dTV2lu
ZG93SURMaXN0OwordHlwZWRlZiBzdHJ1Y3QgQ0ZfQlJJREdFRF9UWVBFKGlkKSBDR1NSZWdpb25P
YmplY3QqIENHU1JlZ2lvbk9iajsKK3R5cGVkZWYgc3RydWN0IENGX0JSSURHRURfVFlQRShpZCkg
Q0dTdHlsZSogQ0dTdHlsZVJlZjsKKwordHlwZWRlZiB2b2lkKiBDR1NOb3RpZmljYXRpb25Bcmc7
Cit0eXBlZGVmIHZvaWQqIENHU05vdGlmaWNhdGlvbkRhdGE7CisKK3R5cGVkZWYgdm9pZCAoKkNH
U05vdGlmeUNvbm5lY3Rpb25Qcm9jUHRyKShDR1NOb3RpZmljYXRpb25UeXBlLCB2b2lkKiBkYXRh
LCB1aW50MzJfdCBkYXRhX2xlbmd0aCwgdm9pZCogYXJnLCBDR1NDb25uZWN0aW9uSUQpOwordHlw
ZWRlZiB2b2lkICgqQ0dTTm90aWZ5UHJvY1B0cikoQ0dTTm90aWZpY2F0aW9uVHlwZSwgdm9pZCog
ZGF0YSwgdWludDMyX3QgZGF0YV9sZW5ndGgsIHZvaWQqIGFyZyk7CisjZW5kaWYKKwogV1RGX0VY
VEVSTl9DX0JFR0lOCiAKIENHQ29sb3JSZWYgQ0dDb2xvclRyYW5zZm9ybUNvbnZlcnRDb2xvcihD
R0NvbG9yVHJhbnNmb3JtUmVmLCBDR0NvbG9yUmVmLCBDR0NvbG9yUmVuZGVyaW5nSW50ZW50KTsK
QEAgLTE4Niw2ICsyMzksOCBAQCBDR0RhdGFQcm92aWRlclJlZiBDR1BERkRvY3VtZW50R2V0RGF0
YVByb3ZpZGVyKENHUERGRG9jdW1lbnRSZWYpOwogCiBDR0ZvbnRBbnRpYWxpYXNpbmdTdHlsZSBD
R0NvbnRleHRHZXRGb250QW50aWFsaWFzaW5nU3R5bGUoQ0dDb250ZXh0UmVmKTsKIHZvaWQgQ0dD
b250ZXh0U2V0Rm9udEFudGlhbGlhc2luZ1N0eWxlKENHQ29udGV4dFJlZiwgQ0dGb250QW50aWFs
aWFzaW5nU3R5bGUpOworYm9vbCBDR0NvbnRleHREcmF3c1dpdGhDb3JyZWN0U2hhZG93T2Zmc2V0
cyhDR0NvbnRleHRSZWYpOworQ0dQYXR0ZXJuUmVmIENHUGF0dGVybkNyZWF0ZVdpdGhJbWFnZTIo
Q0dJbWFnZVJlZiwgQ0dBZmZpbmVUcmFuc2Zvcm0sIENHUGF0dGVyblRpbGluZyk7CiAKICNpZiAo
UExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTIw
MCkgfHwgUExBVEZPUk0oSU9TKQogYm9vbCBDR0NvbG9yU3BhY2VVc2VzRXh0ZW5kZWRSYW5nZShD
R0NvbG9yU3BhY2VSZWYpOwpAQCAtMjAzLDEwICsyNTgsMjEgQEAgQ0dDb2xvclNwYWNlUmVmIENH
SU9TdXJmYWNlQ29udGV4dEdldENvbG9yU3BhY2UoQ0dDb250ZXh0UmVmKTsKICNlbmRpZgogCiAj
aWYgUExBVEZPUk0oQ09DT0EpCi1DR1NSZWdpb25FbnVtZXJhdG9yT2JqIENHU1JlZ2lvbkVudW1l
cmF0b3IoQ0dSZWdpb25SZWYpOwotQ0dSZWN0KiBDR1NOZXh0UmVjdChjb25zdCBDR1NSZWdpb25F
bnVtZXJhdG9yT2JqKTsKLUNHRXJyb3IgQ0dTUmVsZWFzZVJlZ2lvbkVudW1lcmF0b3IoY29uc3Qg
Q0dTUmVnaW9uRW51bWVyYXRvck9iaik7CiBDR0NvbG9yU3BhY2VSZWYgQ0dDb250ZXh0Q29weURl
dmljZUNvbG9yU3BhY2UoQ0dDb250ZXh0UmVmKTsKK0NHRXJyb3IgQ0dTTmV3UmVnaW9uV2l0aFJl
Y3QoY29uc3QgQ0dSZWN0KiwgQ0dSZWdpb25SZWYqKTsKK0NHRXJyb3IgQ0dTUGFja2FnZXNFbmFi
bGVDb25uZWN0aW9uT2NjbHVzaW9uTm90aWZpY2F0aW9ucyhDR1NDb25uZWN0aW9uSUQsIGJvb2wg
ZmxhZywgYm9vbCogb3V0Q3VycmVudFZpc2liaWxpdHlTdGF0ZSk7CitDR0Vycm9yIENHU1BhY2th
Z2VzRW5hYmxlQ29ubmVjdGlvbldpbmRvd01vZGlmaWNhdGlvbk5vdGlmaWNhdGlvbnMoQ0dTQ29u
bmVjdGlvbklELCBib29sIGZsYWcsIGJvb2wqIG91dENvbm5lY3Rpb25Jc0N1cnJlbnRseUlkbGUp
OworQ0dFcnJvciBDR1NSZWdpc3RlckNvbm5lY3Rpb25Ob3RpZnlQcm9jKENHU0Nvbm5lY3Rpb25J
RCwgQ0dTTm90aWZ5Q29ubmVjdGlvblByb2NQdHIsIENHU05vdGlmaWNhdGlvblR5cGUsIHZvaWQq
IGFyZyk7CitDR0Vycm9yIENHU1JlZ2lzdGVyTm90aWZ5UHJvYyhDR1NOb3RpZnlQcm9jUHRyLCBD
R1NOb3RpZmljYXRpb25UeXBlLCB2b2lkKiBhcmcpOworQ0dFcnJvciBDR1NSZWxlYXNlUmVnaW9u
KGNvbnN0IENHUmVnaW9uUmVmIENGX1JFTEVBU0VTX0FSR1VNRU5UKTsKK0NHRXJyb3IgQ0dTUmVs
ZWFzZVJlZ2lvbkVudW1lcmF0b3IoY29uc3QgQ0dTUmVnaW9uRW51bWVyYXRvck9iaik7CitDR0Vy
cm9yIENHU1NldFdpbmRvd0FscGhhKENHU0Nvbm5lY3Rpb25JRCwgQ0dTV2luZG93SUQsIGZsb2F0
IGFscGhhKTsKK0NHRXJyb3IgQ0dTU2V0V2luZG93Q2xpcFNoYXBlKENHU0Nvbm5lY3Rpb25JRCwg
Q0dTV2luZG93SUQsIENHUmVnaW9uUmVmIHNoYXBlKTsKK0NHRXJyb3IgQ0dTU2V0V2luZG93V2Fy
cChDR1NDb25uZWN0aW9uSUQsIENHU1dpbmRvd0lELCBpbnQgdywgaW50IGgsIGNvbnN0IGZsb2F0
KiBtZXNoKTsKK0NHUmVjdCogQ0dTTmV4dFJlY3QoY29uc3QgQ0dTUmVnaW9uRW51bWVyYXRvck9i
aik7CitDR1NSZWdpb25FbnVtZXJhdG9yT2JqIENHU1JlZ2lvbkVudW1lcmF0b3IoQ0dSZWdpb25S
ZWYpOworQ0dTdHlsZVJlZiBDR1N0eWxlQ3JlYXRlRm9jdXNSaW5nV2l0aENvbG9yKGNvbnN0IENH
Rm9jdXNSaW5nU3R5bGUqLCBDR0NvbG9yUmVmKTsKK3ZvaWQgQ0dDb250ZXh0U2V0U3R5bGUoQ0dD
b250ZXh0UmVmLCBDR1N0eWxlUmVmKTsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oV0lOKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvbWFjL0hJU2VydmljZXNTUEkuaCBi
L1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL21hYy9ISVNlcnZpY2VzU1BJLmgKaW5kZXggOWYz
NWRjZDRkMDNhNTdhMDg2YjBhMzY1ZGZiMzlkZGZmY2M4MTk4NS4uYTM1NWI5NGZlNjMwOTJlZjVh
Y2QwYjVjOTVlMDNkZDQ2ZTk1MzgxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML3Bh
bC9zcGkvbWFjL0hJU2VydmljZXNTUEkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3Nw
aS9tYWMvSElTZXJ2aWNlc1NQSS5oCkBAIC0yOCwyMSArMjgsNDUgQEAKICNpZiBVU0UoQVBQTEVf
SU5URVJOQUxfU0RLKQogCiAjaW5jbHVkZSA8SElTZXJ2aWNlcy9BWFRleHRNYXJrZXIuaD4KKyNp
bmNsdWRlIDxISVNlcnZpY2VzL0NvcmVEcmFnLmg+CisKKyNlbHNlCisKK2VudW0geworICAgIGtD
b3JlRHJhZ0ltYWdlU3BlY1ZlcnNpb25PbmUgPSAxLAorfTsKKworc3RydWN0IENvcmVEcmFnSW1h
Z2VTcGVjIHsKKyAgICBVSW50MzIgdmVyc2lvbjsKKyAgICBTSW50MzIgcGl4ZWxzV2lkZTsKKyAg
ICBTSW50MzIgcGl4ZWxzSGlnaDsKKyAgICBTSW50MzIgYml0c1BlclNhbXBsZTsKKyAgICBTSW50
MzIgc2FtcGxlc1BlclBpeGVsOworICAgIFNJbnQzMiBiaXRzUGVyUGl4ZWw7CisgICAgU0ludDMy
IGJ5dGVzUGVyUm93OworICAgIEJvb2xlYW4gaXNQbGFuYXI7CisgICAgQm9vbGVhbiBoYXNBbHBo
YTsKKyAgICBjb25zdCBVSW50OCogZGF0YVs1XTsKK307CiAKICNlbmRpZgogCi10eXBlZGVmIGNv
bnN0IHN0cnVjdCBfX0FYVGV4dE1hcmtlciAqQVhUZXh0TWFya2VyUmVmOwotdHlwZWRlZiBjb25z
dCBzdHJ1Y3QgX19BWFRleHRNYXJrZXJSYW5nZSAqQVhUZXh0TWFya2VyUmFuZ2VSZWY7Cit0eXBl
ZGVmIGNvbnN0IHN0cnVjdCBfX0FYVGV4dE1hcmtlciogQVhUZXh0TWFya2VyUmVmOwordHlwZWRl
ZiBjb25zdCBzdHJ1Y3QgX19BWFRleHRNYXJrZXJSYW5nZSogQVhUZXh0TWFya2VyUmFuZ2VSZWY7
Cit0eXBlZGVmIHN0cnVjdCBDb3JlRHJhZ0ltYWdlU3BlYyBDb3JlRHJhZ0ltYWdlU3BlYzsKK3R5
cGVkZWYgc3RydWN0IE9wYXF1ZUNvcmVEcmFnKiBDb3JlRHJhZ1JlZjsKIAogV1RGX0VYVEVSTl9D
X0JFR0lOCiAKLUNGVHlwZUlEIEFYVGV4dE1hcmtlckdldFR5cGVJRCgpOwotQ0ZUeXBlSUQgQVhU
ZXh0TWFya2VyUmFuZ2VHZXRUeXBlSUQoKTsKLUFYVGV4dE1hcmtlclJlZiBBWFRleHRNYXJrZXJD
cmVhdGUoQ0ZBbGxvY2F0b3JSZWYsIGNvbnN0IFVJbnQ4KiBieXRlcywgQ0ZJbmRleCBsZW5ndGgp
OwotQ0ZJbmRleCBBWFRleHRNYXJrZXJHZXRMZW5ndGgoQVhUZXh0TWFya2VyUmVmKTsKLWNvbnN0
IFVJbnQ4KiBBWFRleHRNYXJrZXJHZXRCeXRlUHRyKEFYVGV4dE1hcmtlclJlZik7CiBBWFRleHRN
YXJrZXJSYW5nZVJlZiBBWFRleHRNYXJrZXJSYW5nZUNyZWF0ZShDRkFsbG9jYXRvclJlZiwgQVhU
ZXh0TWFya2VyUmVmIHN0YXJ0TWFya2VyLCBBWFRleHRNYXJrZXJSZWYgZW5kTWFya2VyKTsKK0FY
VGV4dE1hcmtlclJlZiBBWFRleHRNYXJrZXJDcmVhdGUoQ0ZBbGxvY2F0b3JSZWYsIGNvbnN0IFVJ
bnQ4KiBieXRlcywgQ0ZJbmRleCBsZW5ndGgpOwogQVhUZXh0TWFya2VyUmVmIEFYVGV4dE1hcmtl
clJhbmdlQ29weVN0YXJ0TWFya2VyKEFYVGV4dE1hcmtlclJhbmdlUmVmKTsKIEFYVGV4dE1hcmtl
clJlZiBBWFRleHRNYXJrZXJSYW5nZUNvcHlFbmRNYXJrZXIoQVhUZXh0TWFya2VyUmFuZ2VSZWYp
OworQ0ZJbmRleCBBWFRleHRNYXJrZXJHZXRMZW5ndGgoQVhUZXh0TWFya2VyUmVmKTsKK0NGVHlw
ZUlEIEFYVGV4dE1hcmtlckdldFR5cGVJRCgpOworQ0ZUeXBlSUQgQVhUZXh0TWFya2VyUmFuZ2VH
ZXRUeXBlSUQoKTsKK0NvcmVEcmFnUmVmIENvcmVEcmFnR2V0Q3VycmVudERyYWcoKTsKK09TU3Rh
dHVzIENvcmVEcmFnU2V0SW1hZ2UoQ29yZURyYWdSZWYsIENHUG9pbnQgaW1hZ2VPZmZzZXQsIENv
cmVEcmFnSW1hZ2VTcGVjKiwgQ0dTUmVnaW9uT2JqIGltYWdlU2hhcGUsIGZsb2F0IG92ZXJhbGxB
bHBoYSk7Citjb25zdCBVSW50OCogQVhUZXh0TWFya2VyR2V0Qnl0ZVB0cihBWFRleHRNYXJrZXJS
ZWYpOwogCiBXVEZfRVhURVJOX0NfRU5ECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwv
cGFsL3NwaS9tYWMvTlNHcmFwaGljc1NQSS5oIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkv
bWFjL05TR3JhcGhpY3NTUEkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zNzEwNDZmODcwMmFkM2YyYTgxODU1Yjlh
OTRhZTJjNmEyYTBiOGU5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3Bh
bC9zcGkvbWFjL05TR3JhcGhpY3NTUEkuaApAQCAtMCwwICsxLDU5IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I3ByYWdtYSBvbmNlCisKKyNpZiBQTEFURk9STShNQUMpCisKKyNpbXBvcnQgPEFwcEtpdC9BcHBL
aXQuaD4KKworI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCisKKyNpbXBvcnQgPEFwcEtpdC9O
U0dyYXBoaWNzQ29udGV4dFByaXZhdGUuaD4KKyNpbXBvcnQgPEFwcEtpdC9OU0dyYXBoaWNzX1By
aXZhdGUuaD4KKworI2Vsc2UKKworI2ltcG9ydCA8cGFsL3NwaS9jZy9Db3JlR3JhcGhpY3NTUEku
aD4KKworQGludGVyZmFjZSBOU0NHU0NvbnRleHQgOiBOU0dyYXBoaWNzQ29udGV4dCB7CisgICAg
Q0dDb250ZXh0UmVmIF9jZ3NDb250ZXh0OworfQorQGVuZAorCitAaW50ZXJmYWNlIE5TV2luZG93
R3JhcGhpY3NDb250ZXh0IDogTlNDR1NDb250ZXh0IHsKKyAgICBDR1NXaW5kb3dJRCBfY2dzV2lu
ZG93SUQ7Cit9CitAZW5kCisKKyNlbmRpZgorCitXVEZfRVhURVJOX0NfQkVHSU4KKworQk9PTCBO
U0luaXRpYWxpemVDR0ZvY3VzUmluZ1N0eWxlRm9yVGltZShOU0ZvY3VzUmluZ1BsYWNlbWVudCwg
Q0dGb2N1c1JpbmdTdHlsZSosIE5TVGltZUludGVydmFsKTsKKworV1RGX0VYVEVSTl9DX0VORAor
CisjZW5kaWYgLy8gUExBVEZPUk0oTUFDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAppbmRleCAxOGFjZGRiZTdlZmZmYTQyOWQxODU3
ODM5YWI2ZTY2NzQ2NmEzZDg1Li5jMTRiMmE1NWU2YWE3ZjkwZDIwMDNjNDY2ODQzNDMyMmUwODU0
NTlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c0NvbnRleHQuaApAQCAtNDQ1LDYgKzQ0NSw3IEBAIHB1YmxpYzoKICNpZiBQTEFURk9STShNQUMp
CiAgICAgdm9pZCBkcmF3Rm9jdXNSaW5nKGNvbnN0IFBhdGgmLCBkb3VibGUgdGltZU9mZnNldCwg
Ym9vbCYgbmVlZHNSZWRyYXcpOwogICAgIHZvaWQgZHJhd0ZvY3VzUmluZyhjb25zdCBWZWN0b3I8
RmxvYXRSZWN0PiYsIGRvdWJsZSB0aW1lT2Zmc2V0LCBib29sJiBuZWVkc1JlZHJhdyk7CisgICAg
c3RhdGljIENHQ29sb3JSZWYgZm9jdXNSaW5nQ29sb3IoKTsKICNlbmRpZgogCiAgICAgdm9pZCBz
ZXRMaW5lQ2FwKExpbmVDYXApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2VTb3VyY2UuY3BwCmluZGV4IDY2OTZjOTYwYTU4NzVmMDQzMTcyOWIxMTlhYjZiMjQx
MjdkN2E1Y2EuLjAyMjhlMzkyOWEyNjZlYTk3MzJiYmE4ZWU2MDU3M2ZhNTA5YTM1MGUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAKQEAg
LTE4NCw3ICsxODQsNyBAQCBTdWJzYW1wbGluZ0xldmVsIEltYWdlU291cmNlOjpzdWJzYW1wbGlu
Z0xldmVsRm9yU2NhbGVGYWN0b3IoR3JhcGhpY3NDb250ZXh0JiBjbwogewogI2lmIFVTRShDRykK
ICAgICAvLyBOZXZlciB1c2Ugc3Vic2FtcGxlZCBpbWFnZXMgZm9yIGRyYXdpbmcgaW50byBQREYg
Y29udGV4dHMuCi0gICAgaWYgKHdrQ0dDb250ZXh0SXNQREZDb250ZXh0KGNvbnRleHQucGxhdGZv
cm1Db250ZXh0KCkpKQorICAgIGlmIChDR0NvbnRleHRHZXRUeXBlKGNvbnRleHQucGxhdGZvcm1D
b250ZXh0KCkpID09IGtDR0NvbnRleHRUeXBlUERGKQogICAgICAgICByZXR1cm4gU3Vic2FtcGxp
bmdMZXZlbDo6RGVmYXVsdDsKIAogICAgIGZsb2F0IHNjYWxlID0gc3RkOjptaW4oZmxvYXQoMSks
IHN0ZDo6bWF4KHNjYWxlRmFjdG9yLndpZHRoKCksIHNjYWxlRmFjdG9yLmhlaWdodCgpKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0Nv
bnRleHRDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGlj
c0NvbnRleHRDRy5jcHAKaW5kZXggZDU4ODM5YWU1OGJiNTEwZDUwN2Q0NjViMDYxOTJlMDIwYmFk
NWFiZC4uNThlNTI3ODg2MmI3M2VlMGU0ZWNlOTU3ZGM0YjU3ZDk1Y2VlMjVlZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29u
dGV4dENHLmNwcApAQCAtOTg3LDcgKzk4Nyw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpjbGlw
T3V0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKICAgICAvLyBoYXMgY2VydGFpbiB0cmFuc2Zvcm1z
IHRoYXQgYXJlbid0IGp1c3QgYSB0cmFuc2xhdGlvbiBvciBhIHNjYWxlLiBBbmQgZHVlIHRvIDxy
ZGFyOi8vcHJvYmxlbS8xNDYzNDQ1Mz4KICAgICAvLyB3ZSBjYW5ub3QgdXNlIGl0IGluIGZvciBh
IHByaW50aW5nIGNvbnRleHQgZWl0aGVyLgogICAgIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgY3Rt
ID0gZ2V0Q1RNKCk7Ci0gICAgYm9vbCBjYW5Vc2VDR1JlY3RJbmZpbml0ZSA9ICF3a0NHQ29udGV4
dElzUERGQ29udGV4dChwbGF0Zm9ybUNvbnRleHQoKSkgJiYgKCFpc0FjY2VsZXJhdGVkQ29udGV4
dCgpIHx8ICghY3RtLmIoKSAmJiAhY3RtLmMoKSkpOworICAgIGJvb2wgY2FuVXNlQ0dSZWN0SW5m
aW5pdGUgPSBDR0NvbnRleHRHZXRUeXBlKHBsYXRmb3JtQ29udGV4dCgpKSAhPSBrQ0dDb250ZXh0
VHlwZVBERiAmJiAoIWlzQWNjZWxlcmF0ZWRDb250ZXh0KCkgfHwgKCFjdG0uYigpICYmICFjdG0u
YygpKSk7CiAgICAgQ0dSZWN0IHJlY3RzWzJdID0geyBjYW5Vc2VDR1JlY3RJbmZpbml0ZSA/IENH
UmVjdEluZmluaXRlIDogQ0dDb250ZXh0R2V0Q2xpcEJvdW5kaW5nQm94KHBsYXRmb3JtQ29udGV4
dCgpKSwgcmVjdCB9OwogICAgIENHQ29udGV4dEJlZ2luUGF0aChwbGF0Zm9ybUNvbnRleHQoKSk7
CiAgICAgQ0dDb250ZXh0QWRkUmVjdHMocGxhdGZvcm1Db250ZXh0KCksIHJlY3RzLCAyKTsKQEAg
LTEwODUsNyArMTA4NSw3IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0OjpzdXBwb3J0c1RyYW5zcGFy
ZW5jeUxheWVycygpCiAKIHN0YXRpYyB2b2lkIGFwcGx5U2hhZG93T2Zmc2V0V29ya2Fyb3VuZElm
TmVlZGVkKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgQ0dGbG9hdCYgeE9mZnNldCwg
Q0dGbG9hdCYgeU9mZnNldCkKIHsKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9T
KSB8fCBQTEFURk9STShXSU4pCiAgICAgVU5VU0VEX1BBUkFNKGNvbnRleHQpOwogICAgIFVOVVNF
RF9QQVJBTSh4T2Zmc2V0KTsKICAgICBVTlVTRURfUEFSQU0oeU9mZnNldCk7CkBAIC0xMDkzLDcg
KzEwOTMsNyBAQCBzdGF0aWMgdm9pZCBhcHBseVNoYWRvd09mZnNldFdvcmthcm91bmRJZk5lZWRl
ZChjb25zdCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsCiAgICAgaWYgKGNvbnRleHQuaXNBY2Nl
bGVyYXRlZENvbnRleHQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKHdrQ0dDb250ZXh0
RHJhd3NXaXRoQ29ycmVjdFNoYWRvd09mZnNldHMoY29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKSkp
CisgICAgaWYgKENHQ29udGV4dERyYXdzV2l0aENvcnJlY3RTaGFkb3dPZmZzZXRzKGNvbnRleHQu
cGxhdGZvcm1Db250ZXh0KCkpKQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBXb3JrIGFyb3Vu
ZCA8cmRhcjovL3Byb2JsZW0vNTUzOTM4OD4gYnkgZW5zdXJpbmcgdGhhdCB0aGUgb2Zmc2V0cyB3
aWxsIGdldCB0cnVuY2F0ZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NnL1BhdHRlcm5DRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9QYXR0ZXJuQ0cuY3BwCmluZGV4IDk4ZTY5ZGU4ZWQ4OWEyNGU4ODZhMTQyYTA4Mzk1OWUy
YzcyMTM1ZjAuLmQwZTIxYzg3M2FhMmRjMzBjNTNjYzhiYWI0ZjhiMDQxNDM0MDAwOTggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BhdHRlcm5DRy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGF0dGVybkNHLmNwcApA
QCAtMzEsOCArMzEsOCBAQAogCiAjaW5jbHVkZSAiQWZmaW5lVHJhbnNmb3JtLmgiCiAjaW5jbHVk
ZSAiR3JhcGhpY3NDb250ZXh0LmgiCi0KICNpbmNsdWRlIDxDb3JlR3JhcGhpY3MvQ29yZUdyYXBo
aWNzLmg+CisjaW5jbHVkZSA8cGFsL3NwaS9jZy9Db3JlR3JhcGhpY3NTUEkuaD4KICNpbmNsdWRl
IDx3dGYvTWFpblRocmVhZC5oPgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCkBAIC03NCw3ICs3NCw3
IEBAIENHUGF0dGVyblJlZiBQYXR0ZXJuOjpjcmVhdGVQbGF0Zm9ybVBhdHRlcm4oY29uc3QgQWZm
aW5lVHJhbnNmb3JtJiB1c2VyU3BhY2VUcmFuCiAgICAgLy8gSWYgd2UncmUgcmVwZWF0aW5nIGlu
IGJvdGggZGlyZWN0aW9ucywgd2UgY2FuIHVzZSBpbWFnZS1iYWNrZWQgcGF0dGVybnMKICAgICAv
LyBpbnN0ZWFkIG9mIGN1c3RvbSBwYXR0ZXJucywgYW5kIGF2b2lkIHRpbGluZy1lZGdlIHBpeGVs
IGNyYWNrcy4KICAgICBpZiAobV9yZXBlYXRYICYmIG1fcmVwZWF0WSkKLSAgICAgICAgcmV0dXJu
IHdrQ0dQYXR0ZXJuQ3JlYXRlV2l0aEltYWdlQW5kVHJhbnNmb3JtKHRpbGVJbWFnZSgpLm5hdGl2
ZUltYWdlKCkuZ2V0KCksIHBhdHRlcm5UcmFuc2Zvcm0sIHdrUGF0dGVyblRpbGluZ0NvbnN0YW50
U3BhY2luZyk7CisgICAgICAgIHJldHVybiBDR1BhdHRlcm5DcmVhdGVXaXRoSW1hZ2UyKHRpbGVJ
bWFnZSgpLm5hdGl2ZUltYWdlKCkuZ2V0KCksIHBhdHRlcm5UcmFuc2Zvcm0sIGtDR1BhdHRlcm5U
aWxpbmdDb25zdGFudFNwYWNpbmcpOwogCiAgICAgLy8gSWYgRkxUX01BWCBzaG91bGQgYWxzbyBi
ZSB1c2VkIGZvciB4U3RlcCBvciB5U3RlcCwgbm90aGluZyBpcyByZW5kZXJlZC4gVXNpbmcgZnJh
Y3Rpb25zIG9mIEZMVF9NQVggYWxzbwogICAgIC8vIHJlc3VsdCBpbiBub3RoaW5nIGJlaW5nIHJl
bmRlcmVkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29j
b2EvR3JhcGhpY3NDb250ZXh0Q29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRDb2NvYS5tbQppbmRleCA2N2Y0ZGViMTcyYjZjMGZl
MjNjMWIxZDFmYjA5ZWFiOGFkYWUxMzFiLi42NTEyMGZlZmM5NmVkOGViYWJiZmM1NmMwNTFhYTg5
OWI0OGJiZjNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
b2NvYS9HcmFwaGljc0NvbnRleHRDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRDb2NvYS5tbQpAQCAtMjksMTAgKzI5LDEz
IEBACiAjaW1wb3J0ICJHcmFwaGljc0NvbnRleHRDRy5oIgogI2ltcG9ydCAiR3JhcGhpY3NDb250
ZXh0UGxhdGZvcm1Qcml2YXRlQ0cuaCIKICNpbXBvcnQgIkludFJlY3QuaCIKKyNpbXBvcnQgPHBh
bC9zcGkvY2cvQ29yZUdyYXBoaWNzU1BJLmg+CisjaW1wb3J0IDxwYWwvc3BpL21hYy9OU0dyYXBo
aWNzU1BJLmg+CisjaW1wb3J0IDx3dGYvU3RkTGliRXh0cmFzLmg+CisKICNpZiBVU0UoQVBQS0lU
KQogI2ltcG9ydCA8QXBwS2l0L0FwcEtpdC5oPgogI2VuZGlmCi0jaW1wb3J0IDx3dGYvU3RkTGli
RXh0cmFzLmg+CiAKICNpZiBQTEFURk9STShJT1MpCiAjaW1wb3J0ICJDb2xvci5oIgpAQCAtNDMs
NyArNDYsNiBAQAogI2lmICFQTEFURk9STShJT1MpCiAjaW1wb3J0ICJMb2NhbEN1cnJlbnRHcmFw
aGljc0NvbnRleHQuaCIKICNlbmRpZgotI2ltcG9ydCAiV2ViQ29yZVN5c3RlbUludGVyZmFjZS5o
IgogCiBAY2xhc3MgTlNDb2xvcjsKIApAQCAtNTcsMTEgKzU5LDQ4IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIC8vIGV4Y2VwdGlvbnMgZm9yIHRob3NlLgogCiAjaWYgIVBMQVRGT1JNKElPUykKK0NH
Q29sb3JSZWYgR3JhcGhpY3NDb250ZXh0Ojpmb2N1c1JpbmdDb2xvcigpCit7CisgICAgc3RhdGlj
IENHQ29sb3JSZWYgY29sb3I7CisgICAgaWYgKCFjb2xvcikgeworICAgICAgICBDR0Zsb2F0IGNv
bG9yQ29tcG9uZW50c1tdID0geyAwLjUsIDAuNzUsIDEuMCwgMS4wIH07CisgICAgICAgIGF1dG8g
Y29sb3JTcGFjZSA9IGFkb3B0Q0YoQ0dDb2xvclNwYWNlQ3JlYXRlV2l0aE5hbWUoa0NHQ29sb3JT
cGFjZVNSR0IpKTsKKyAgICAgICAgY29sb3IgPSBDR0NvbG9yQ3JlYXRlKGNvbG9yU3BhY2UuZ2V0
KCksIGNvbG9yQ29tcG9uZW50cyk7CisgICAgfQorCisgICAgcmV0dXJuIGNvbG9yOworfQorCitz
dGF0aWMgYm9vbCBkcmF3Rm9jdXNSaW5nQXRUaW1lKENHQ29udGV4dFJlZiBjb250ZXh0LCBOU1Rp
bWVJbnRlcnZhbCB0aW1lT2Zmc2V0KQoreworICAgIENHRm9jdXNSaW5nU3R5bGUgZm9jdXNSaW5n
U3R5bGU7CisgICAgQk9PTCBuZWVkc1JlcGFpbnQgPSBOU0luaXRpYWxpemVDR0ZvY3VzUmluZ1N0
eWxlRm9yVGltZShOU0ZvY3VzUmluZ09ubHksICZmb2N1c1JpbmdTdHlsZSwgdGltZU9mZnNldCk7
CisKKyAgICAvLyBXZSB3YW50IHRvIHJlc3BlY3QgdGhlIENHQ29udGV4dCBjbGlwcGluZyBhbmQg
YWxzbyBub3Qgb3ZlcnBhaW50IGFueQorICAgIC8vIGV4aXN0aW5nIGZvY3VzIHJpbmcuIFRoZSB3
YXkgdG8gZG8gdGhpcyBpcyBzZXQgYWNjdW11bGF0ZSB0bworICAgIC8vIC0xLiBBY2NvcmRpbmcg
dG8gQ29yZUdyYXBoaWNzLCB0aGUgcmVhc29uaW5nIGZvciB0aGlzIGJlaGF2aW9yIGhhcyBiZWVu
CisgICAgLy8gbG9zdCBpbiB0aW1lLgorICAgIGZvY3VzUmluZ1N0eWxlLmFjY3VtdWxhdGUgPSAt
MTsKKyAgICBhdXRvIHN0eWxlID0gYWRvcHRDRihDR1N0eWxlQ3JlYXRlRm9jdXNSaW5nV2l0aENv
bG9yKCZmb2N1c1JpbmdTdHlsZSwgR3JhcGhpY3NDb250ZXh0Ojpmb2N1c1JpbmdDb2xvcigpKSk7
CisKKyAgICBDR0NvbnRleHRTYXZlR1N0YXRlKGNvbnRleHQpOworICAgIENHQ29udGV4dFNldFN0
eWxlKGNvbnRleHQsIHN0eWxlLmdldCgpKTsKKyAgICBDR0NvbnRleHRGaWxsUGF0aChjb250ZXh0
KTsKKyAgICBDR0NvbnRleHRSZXN0b3JlR1N0YXRlKGNvbnRleHQpOworCisgICAgcmV0dXJuIG5l
ZWRzUmVwYWludDsKK30KKworc3RhdGljIHZvaWQgZHJhd0ZvY3VzUmluZyhDR0NvbnRleHRSZWYg
Y29udGV4dCkKK3sKKyAgICBkcmF3Rm9jdXNSaW5nQXRUaW1lKGNvbnRleHQsIHN0ZDo6bnVtZXJp
Y19saW1pdHM8ZG91YmxlPjo6bWF4KCkpOworfQorCiBzdGF0aWMgdm9pZCBkcmF3Rm9jdXNSaW5n
VG9Db250ZXh0KENHQ29udGV4dFJlZiBjb250ZXh0LCBDR1BhdGhSZWYgZm9jdXNSaW5nUGF0aCkK
IHsKICAgICBDR0NvbnRleHRCZWdpblBhdGgoY29udGV4dCk7CiAgICAgQ0dDb250ZXh0QWRkUGF0
aChjb250ZXh0LCBmb2N1c1JpbmdQYXRoKTsKLSAgICB3a0RyYXdGb2N1c1JpbmcoY29udGV4dCwg
bnVsbHB0ciwgMCk7CisgICAgZHJhd0ZvY3VzUmluZyhjb250ZXh0KTsKIH0KIAogc3RhdGljIGJv
b2wgZHJhd0ZvY3VzUmluZ1RvQ29udGV4dEF0VGltZShDR0NvbnRleHRSZWYgY29udGV4dCwgQ0dQ
YXRoUmVmIGZvY3VzUmluZ1BhdGgsIGRvdWJsZSB0aW1lT2Zmc2V0KQpAQCAtNjksNyArMTA4LDcg
QEAgc3RhdGljIGJvb2wgZHJhd0ZvY3VzUmluZ1RvQ29udGV4dEF0VGltZShDR0NvbnRleHRSZWYg
Y29udGV4dCwgQ0dQYXRoUmVmIGZvY3VzUmkKICAgICBVTlVTRURfUEFSQU0odGltZU9mZnNldCk7
CiAgICAgQ0dDb250ZXh0QmVnaW5QYXRoKGNvbnRleHQpOwogICAgIENHQ29udGV4dEFkZFBhdGgo
Y29udGV4dCwgZm9jdXNSaW5nUGF0aCk7Ci0gICAgcmV0dXJuIHdrRHJhd0ZvY3VzUmluZ0F0VGlt
ZShjb250ZXh0LCBzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46Om1heCgpKTsKKyAgICByZXR1
cm4gZHJhd0ZvY3VzUmluZ0F0VGltZShjb250ZXh0LCBzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJs
ZT46Om1heCgpKTsKIH0KICNlbmRpZiAvLyAhUExBVEZPUk0oSU9TKQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViQ29yZVN5c3RlbUludGVyZmFjZUlPUy5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlSU9TLm1t
CmluZGV4IDA5YTE4MjgxNGQxNDAxM2I3Yzg4ZThlZWJmMDNkOWFlMGNmYTI4NjkuLjc1N2QwNDVm
NWM1ODU0NDQ5NmYyZGQ2OTA1MGJkMWFmODY4YzJlZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2lvcy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlSU9TLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlSU9TLm1tCkBAIC0y
NywxMCArMjcsOCBAQAogI2ltcG9ydCAiV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oIgogCiBXRUJD
T1JFX0VYUE9SVCB2b2lkICgqd2tDQUxheWVyRW51bWVyYXRlUmVjdHNCZWluZ0RyYXduV2l0aEJs
b2NrKShDQUxheWVyICosIENHQ29udGV4dFJlZiBjb250ZXh0LCB2b2lkICheYmxvY2spKENHUmVj
dCByZWN0KSk7Ci1XRUJDT1JFX0VYUE9SVCBDR1BhdHRlcm5SZWYgKCp3a0NHUGF0dGVybkNyZWF0
ZVdpdGhJbWFnZUFuZFRyYW5zZm9ybSkoQ0dJbWFnZVJlZiwgQ0dBZmZpbmVUcmFuc2Zvcm0sIGlu
dCk7CiBXRUJDT1JFX0VYUE9SVCB2b2lkICgqd2tDbGVhckdseXBoVmVjdG9yKSh2b2lkKiBnbHlw
aHMpOwogV0VCQ09SRV9FWFBPUlQgT1NTdGF0dXMgKCp3a0NvbnZlcnRDaGFyVG9HbHlwaHMpKHZv
aWQqIHN0eWxlR3JvdXAsIGNvbnN0IFVuaUNoYXIqLCB1bnNpZ25lZCBudW1DaGFyYWN0ZXJzLCB2
b2lkKiBnbHlwaHMpOwotV0VCQ09SRV9FWFBPUlQgYm9vbCAoKndrQ0dDb250ZXh0SXNQREZDb250
ZXh0KShDR0NvbnRleHRSZWYpOwogV0VCQ09SRV9FWFBPUlQgaWQgKCp3a0NyZWF0ZU5TVVJMQ29u
bmVjdGlvbkRlbGVnYXRlUHJveHkpKHZvaWQpOwogV0VCQ09SRV9FWFBPUlQgdm9pZCAoKndrU2V0
Q09OTkVDVFByb3h5Rm9yU3RyZWFtKShDRlJlYWRTdHJlYW1SZWYsIENGU3RyaW5nUmVmIHByb3h5
SG9zdCwgQ0ZOdW1iZXJSZWYgcHJveHlQb3J0KTsKIFdFQkNPUkVfRVhQT1JUIHZvaWQgKCp3a1Nl
dENPTk5FQ1RQcm94eUF1dGhvcml6YXRpb25Gb3JTdHJlYW0pKENGUmVhZFN0cmVhbVJlZiwgQ0ZT
dHJpbmdSZWYgcHJveHlBdXRob3JpemF0aW9uU3RyaW5nKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0KaW5kZXggMjBlNjM1YzA5MDVhZTg5NmM3YmI1NDIx
Yzg1NmIyMWIyYTQ0NmI0OS4uYTM4NzBjZTRkZTk4MDFjZTg2NGM0YTQ0MWJhMDYwZmEwMDgyNmI1
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0KQEAg
LTUyLDYgKzUyLDggQEAKICNpbXBvcnQgIldlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaCIKICNpbXBv
cnQgIldlYk5TQXR0cmlidXRlZFN0cmluZ0V4dHJhcy5oIgogI2ltcG9ydCAibWFya3VwLmgiCisj
aW1wb3J0IDxwYWwvc3BpL2NnL0NvcmVHcmFwaGljc1NQSS5oPgorI2ltcG9ydCA8cGFsL3NwaS9t
YWMvSElTZXJ2aWNlc1NQSS5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogI2ltcG9ydCA8
d3RmL1N0ZExpYkV4dHJhcy5oPgogI2ltcG9ydCA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgpA
QCAtNjY5LDYgKzY3MSw4MCBAQCBWZWN0b3I8U3RyaW5nPiBQYXN0ZWJvYXJkOjpyZWFkRmlsZW5h
bWVzKCkKIH0KIAogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCitzdGF0aWMgdm9pZCBmbGlwSW1h
Z2VTcGVjKENvcmVEcmFnSW1hZ2VTcGVjKiBpbWFnZVNwZWMpCit7CisgICAgdW5zaWduZWQgY2hh
ciogdGVtcFJvdyA9ICh1bnNpZ25lZCBjaGFyKilmYXN0TWFsbG9jKGltYWdlU3BlYy0+Ynl0ZXNQ
ZXJSb3cpOworICAgIGludCBwbGFuZXMgPSBpbWFnZVNwZWMtPmlzUGxhbmFyID8gaW1hZ2VTcGVj
LT5zYW1wbGVzUGVyUGl4ZWwgOiAxOworCisgICAgZm9yIChpbnQgcCA9IDA7IHAgPCBwbGFuZXM7
ICsrcCkgeworICAgICAgICB1bnNpZ25lZCBjaGFyKiB0b3BSb3cgPSAodW5zaWduZWQgY2hhciop
aW1hZ2VTcGVjLT5kYXRhW3BdOworICAgICAgICB1bnNpZ25lZCBjaGFyKiBib3RSb3cgPSB0b3BS
b3cgKyAoaW1hZ2VTcGVjLT5waXhlbHNIaWdoIC0gMSkgKiBpbWFnZVNwZWMtPmJ5dGVzUGVyUm93
OworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGltYWdlU3BlYy0+cGl4ZWxzSGlnaCAvIDI7
ICsraSwgdG9wUm93ICs9IGltYWdlU3BlYy0+Ynl0ZXNQZXJSb3csIGJvdFJvdyAtPSBpbWFnZVNw
ZWMtPmJ5dGVzUGVyUm93KSB7CisgICAgICAgICAgICBiY29weSh0b3BSb3csIHRlbXBSb3csIGlt
YWdlU3BlYy0+Ynl0ZXNQZXJSb3cpOworICAgICAgICAgICAgYmNvcHkoYm90Um93LCB0b3BSb3cs
IGltYWdlU3BlYy0+Ynl0ZXNQZXJSb3cpOworICAgICAgICAgICAgYmNvcHkodGVtcFJvdywgYm90
Um93LCBpbWFnZVNwZWMtPmJ5dGVzUGVyUm93KTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGZh
c3RGcmVlKHRlbXBSb3cpOworfQorCitzdGF0aWMgdm9pZCBzZXREcmFnSW1hZ2VJbXBsKE5TSW1h
Z2UgKmltYWdlLCBOU1BvaW50IG9mZnNldCkKK3sKKyAgICBib29sIGZsaXBJbWFnZTsKKyAgICBO
U1NpemUgaW1hZ2VTaXplID0gaW1hZ2Uuc2l6ZTsKKyAgICBDR1JlY3QgaW1hZ2VSZWN0ID0gQ0dS
ZWN0TWFrZSgwLCAwLCBpbWFnZVNpemUud2lkdGgsIGltYWdlU2l6ZS5oZWlnaHQpOworICAgIE5T
SW1hZ2VSZXAgKmltYWdlUmVwID0gW2ltYWdlIGJlc3RSZXByZXNlbnRhdGlvbkZvclJlY3Q6TlNS
ZWN0RnJvbUNHUmVjdChpbWFnZVJlY3QpIGNvbnRleHQ6bmlsIGhpbnRzOm5pbF07CisgICAgUmV0
YWluUHRyPE5TQml0bWFwSW1hZ2VSZXA+IGJpdG1hcEltYWdlOworICAgIGlmICghaW1hZ2VSZXAg
fHwgIVtpbWFnZVJlcCBpc0tpbmRPZkNsYXNzOltOU0JpdG1hcEltYWdlUmVwIGNsYXNzXV0gfHwg
IU5TRXF1YWxTaXplcyhpbWFnZVJlcC5zaXplLCBpbWFnZVNpemUpKSB7CisgICAgICAgIFtpbWFn
ZSBsb2NrRm9jdXNdOworICAgICAgICBiaXRtYXBJbWFnZSA9IGFkb3B0TlMoW1tOU0JpdG1hcElt
YWdlUmVwIGFsbG9jXSBpbml0V2l0aEZvY3VzZWRWaWV3UmVjdDoqKE5TUmVjdCopJmltYWdlUmVj
dF0pOworICAgICAgICBbaW1hZ2UgdW5sb2NrRm9jdXNdOworICAgICAgICAKKyAgICAgICAgLy8g
d2UgbWF5IGhhdmUgdG8gZmxpcCB0aGUgYml0cyB3ZSBqdXN0IHJlYWQgaWYgdGhlIGltYWdlIHdh
cyBmbGlwcGVkIHNpbmNlIGl0IG1lYW5zIHRoZSBjYWNoZSB3YXMgYWxzbworICAgICAgICAvLyBh
bmQgQ29yZURyYWdTZXRJbWFnZSBjYW4ndCB0YWtlIGEgdHJhbnNmb3JtIGZvciByZW5kZXJpbmcu
CisjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcHVzaAorI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGlj
IGlnbm9yZWQgIi1XZGVwcmVjYXRlZC1kZWNsYXJhdGlvbnMiCisgICAgICAgIGZsaXBJbWFnZSA9
IGltYWdlLmlzRmxpcHBlZDsKKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwb3AKKyAgICB9IGVs
c2UgeworICAgICAgICBmbGlwSW1hZ2UgPSBmYWxzZTsKKyAgICAgICAgYml0bWFwSW1hZ2UgPSAo
TlNCaXRtYXBJbWFnZVJlcCAqKWltYWdlUmVwOworICAgIH0KKyAgICBBU1NFUlQoYml0bWFwSW1h
Z2UpOworCisgICAgQ29yZURyYWdJbWFnZVNwZWMgaW1hZ2VTcGVjOworICAgIGltYWdlU3BlYy52
ZXJzaW9uID0ga0NvcmVEcmFnSW1hZ2VTcGVjVmVyc2lvbk9uZTsKKyAgICBpbWFnZVNwZWMucGl4
ZWxzV2lkZSA9IFtiaXRtYXBJbWFnZSBwaXhlbHNXaWRlXTsKKyAgICBpbWFnZVNwZWMucGl4ZWxz
SGlnaCA9IFtiaXRtYXBJbWFnZSBwaXhlbHNIaWdoXTsKKyAgICBpbWFnZVNwZWMuYml0c1BlclNh
bXBsZSA9IFtiaXRtYXBJbWFnZSBiaXRzUGVyU2FtcGxlXTsKKyAgICBpbWFnZVNwZWMuc2FtcGxl
c1BlclBpeGVsID0gW2JpdG1hcEltYWdlIHNhbXBsZXNQZXJQaXhlbF07CisgICAgaW1hZ2VTcGVj
LmJpdHNQZXJQaXhlbCA9IFtiaXRtYXBJbWFnZSBiaXRzUGVyUGl4ZWxdOworICAgIGltYWdlU3Bl
Yy5ieXRlc1BlclJvdyA9IFtiaXRtYXBJbWFnZSBieXRlc1BlclJvd107CisgICAgaW1hZ2VTcGVj
LmlzUGxhbmFyID0gW2JpdG1hcEltYWdlIGlzUGxhbmFyXTsKKyAgICBpbWFnZVNwZWMuaGFzQWxw
aGEgPSBbYml0bWFwSW1hZ2UgaGFzQWxwaGFdOworICAgIFtiaXRtYXBJbWFnZSBnZXRCaXRtYXBE
YXRhUGxhbmVzOih1bnNpZ25lZCBjaGFyKiopaW1hZ2VTcGVjLmRhdGFdOworCisgICAgLy8gaWYg
aW1hZ2Ugd2FzIGZsaXBwZWQsIHdlIGhhdmUgYW4gdXBzaWRlIGRvd24gYml0bWFwIHNpbmNlIHRo
ZSBjYWNoZSBpcyByZW5kZXJlZCBmbGlwcGVkCisgICAgaWYgKGZsaXBJbWFnZSkKKyAgICAgICAg
ZmxpcEltYWdlU3BlYygmaW1hZ2VTcGVjKTsKKworICAgIENHU1JlZ2lvbk9iaiBpbWFnZVNoYXBl
OworICAgIE9TU3RhdHVzIGVycm9yID0gQ0dTTmV3UmVnaW9uV2l0aFJlY3QoJmltYWdlUmVjdCwg
JmltYWdlU2hhcGUpOworICAgIEFTU0VSVChlcnJvciA9PSBrQ0dFcnJvclN1Y2Nlc3MpOworICAg
IGlmIChlcnJvciAhPSBrQ0dFcnJvclN1Y2Nlc3MpCisgICAgICAgIHJldHVybjsKKworICAgIC8v
IG1ha2Ugc3VyZSBpbWFnZSBoYXMgaW50ZWdlciBvZmZzZXQKKyAgICBDR1BvaW50IGltYWdlT2Zm
c2V0ID0geyAtb2Zmc2V0LngsIC0oaW1hZ2VTaXplLmhlaWdodCAtIG9mZnNldC55KSB9OworICAg
IGltYWdlT2Zmc2V0LnggPSBmbG9vcihpbWFnZU9mZnNldC54ICsgMC41KTsKKyAgICBpbWFnZU9m
ZnNldC55ID0gZmxvb3IoaW1hZ2VPZmZzZXQueSArIDAuNSk7CisKKyAgICBlcnJvciA9IENvcmVE
cmFnU2V0SW1hZ2UoQ29yZURyYWdHZXRDdXJyZW50RHJhZygpLCBpbWFnZU9mZnNldCwgJmltYWdl
U3BlYywgaW1hZ2VTaGFwZSwgMS4wKTsKKyAgICBDR1NSZWxlYXNlUmVnaW9uKGltYWdlU2hhcGUp
OworICAgIEFTU0VSVChlcnJvciA9PSBrQ0dFcnJvclN1Y2Nlc3MpOworfQorCiB2b2lkIFBhc3Rl
Ym9hcmQ6OnNldERyYWdJbWFnZShEcmFnSW1hZ2UgaW1hZ2UsIGNvbnN0IEludFBvaW50JiBsb2Nh
dGlvbikKIHsKICAgICAvLyBEb24ndCBhbGxvdyBzZXR0aW5nIHRoZSBkcmFnIGltYWdlIGlmIHNv
bWVvbmUga2VwdCBhIHBhc3RlYm9hcmQgYW5kIGlzIHRyeWluZyB0byBzZXQgdGhlIGltYWdlIHRv
byBsYXRlLgpAQCAtNjc3LDcgKzc1Myw3IEBAIHZvaWQgUGFzdGVib2FyZDo6c2V0RHJhZ0ltYWdl
KERyYWdJbWFnZSBpbWFnZSwgY29uc3QgSW50UG9pbnQmIGxvY2F0aW9uKQogCiAgICAgLy8gRGFz
aGJvYXJkIHdhbnRzIHRvIGJlIGFibGUgdG8gc2V0IHRoZSBkcmFnIGltYWdlIGR1cmluZyBkcmFn
Z2luZywgYnV0IENvY29hIGRvZXMgbm90IGFsbG93IHRoaXMuCiAgICAgLy8gSW5zdGVhZCB3ZSBt
dXN0IGRyb3AgZG93biB0byB0aGUgQ29yZUdyYXBoaWNzIEFQSS4KLSAgICB3a1NldERyYWdJbWFn
ZShpbWFnZS5nZXQoKS5nZXQoKSwgbG9jYXRpb24pOworICAgIHNldERyYWdJbWFnZUltcGwoaW1h
Z2UuZ2V0KCkuZ2V0KCksIGxvY2F0aW9uKTsKIAogICAgIC8vIEhhY2s6IFdlIG11c3QgcG9zdCBh
biBldmVudCB0byB3YWtlIHVwIHRoZSBOU0RyYWdNYW5hZ2VyLCB3aGljaCBpcyBzaXR0aW5nIGlu
IGEgbmV4dEV2ZW50IGNhbGwKICAgICAvLyB1cCB0aGUgc3RhY2sgZnJvbSB1cyBiZWNhdXNlIHRo
ZSBDb3JlRm91bmRhdGlvbiBkcmFnIG1hbmFnZXIgZG9lcyBub3QgdXNlIHRoZSBydW4gbG9vcCBi
eSBpdHNlbGYuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZv
cm1FdmVudEZhY3RvcnlNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZv
cm1FdmVudEZhY3RvcnlNYWMubW0KaW5kZXggNzdiOWNiOTYzNWJiZmIwYmMyYzU0NTQwYmZmNjQw
NTE3MWI3YzU1OS4uOTI5YWE1NzU4ZjNlMWRiY2NjNTkwMDE4OTI5N2ViMTVlNTcwMTE4NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtRXZlbnRGYWN0b3J5
TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybUV2ZW50RmFj
dG9yeU1hYy5tbQpAQCAtNjc2LDcgKzY3Niw3IEBAIHN0YXRpYyBpbnQgdHlwZUZvckV2ZW50KE5T
RXZlbnQgKmV2ZW50KQogewogICAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KFtOU01lbnUgbWVu
dVR5cGVGb3JFdmVudDpldmVudF0pOwogfQotICAgIAorCiB2b2lkIGdldFdoZWVsRXZlbnREZWx0
YXMoTlNFdmVudCAqZXZlbnQsIGZsb2F0JiBkZWx0YVgsIGZsb2F0JiBkZWx0YVksIEJPT0wmIGNv
bnRpbnVvdXMpCiB7CiAgICAgQVNTRVJUKGV2ZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21hYy9TY3JvbGxiYXJUaGVtZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21hYy9TY3JvbGxiYXJUaGVtZU1hYy5tbQppbmRleCBjNGMyODc3NjgzNTc0OTZhZWIy
ODhmYTQxZjBkZDk1ZDJkN2NjMjg4Li42ZDA1Yjg2YzYzZDA1ZjdiNmQxNDczMTdlZmQyN2ZmMzQx
NTgzMTkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsYmFy
VGhlbWVNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbGJhclRo
ZW1lTWFjLm1tCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAiU2Nyb2xsVmlldy5oIgogI2lu
Y2x1ZGUgIldlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaCIKICNpbmNsdWRlIDxDYXJib24vQ2FyYm9u
Lmg+CisjaW5jbHVkZSA8cGFsL3NwaS9jZy9Db3JlR3JhcGhpY3NTUEkuaD4KICNpbmNsdWRlIDxw
YWwvc3BpL21hYy9OU1Njcm9sbGVySW1wU1BJLmg+CiAjaW5jbHVkZSA8d3RmL0Jsb2NrT2JqQ0V4
Y2VwdGlvbnMuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgpAQCAtNTczLDcgKzU3NCw3IEBA
IHN0YXRpYyBSZXRhaW5QdHI8Q0dDb2xvclJlZj4gbGluZW5CYWNrZ3JvdW5kQ29sb3IoKQogICAg
IGlmICghY2dJbWFnZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBSZXRhaW5QdHI8
Q0dQYXR0ZXJuUmVmPiBwYXR0ZXJuID0gYWRvcHRDRih3a0NHUGF0dGVybkNyZWF0ZVdpdGhJbWFn
ZUFuZFRyYW5zZm9ybShjZ0ltYWdlLCBDR0FmZmluZVRyYW5zZm9ybUlkZW50aXR5LCB3a1BhdHRl
cm5UaWxpbmdOb0Rpc3RvcnRpb24pKTsKKyAgICBSZXRhaW5QdHI8Q0dQYXR0ZXJuUmVmPiBwYXR0
ZXJuID0gYWRvcHRDRihDR1BhdHRlcm5DcmVhdGVXaXRoSW1hZ2UyKGNnSW1hZ2UsIENHQWZmaW5l
VHJhbnNmb3JtSWRlbnRpdHksIGtDR1BhdHRlcm5UaWxpbmdOb0Rpc3RvcnRpb24pKTsKICAgICBS
ZXRhaW5QdHI8Q0dDb2xvclNwYWNlUmVmPiBjb2xvclNwYWNlID0gYWRvcHRDRihDR0NvbG9yU3Bh
Y2VDcmVhdGVQYXR0ZXJuKDApKTsKIAogICAgIGNvbnN0IENHRmxvYXQgYWxwaGEgPSAxLjA7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvVGhlbWVNYWMubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvVGhlbWVNYWMubW0KaW5kZXggOTBmMTA0MWVmZjdmMGM2
NDdkNmY4MzkxYzAyN2Y1M2QxYWI0NDcxNC4uNWNkZTU0ODhhOWYxMDA1NmRmZDI0NTIwMWQyMjBk
NjRiM2IzMTJhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1RoZW1l
TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9UaGVtZU1hYy5tbQpAQCAt
MzYsNiArMzYsNyBAQAogI2ltcG9ydCAiV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oIgogI2ltcG9y
dCA8Q2FyYm9uL0NhcmJvbi5oPgogI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9OU0J1dHRvbkNlbGxT
UEkuaD4KKyNpbXBvcnQgPHBhbC9zcGkvbWFjL05TR3JhcGhpY3NTUEkuaD4KICNpbXBvcnQgPHd0
Zi9CbG9ja09iakNFeGNlcHRpb25zLmg+CiAjaW1wb3J0IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4K
ICNpbXBvcnQgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KQEAgLTM0OSw5ICszNTAsMzIgQEAgc3RhdGlj
IE5TQnV0dG9uQ2VsbCAqc2hhcmVkQ2hlY2tib3hDZWxsKGNvbnN0IENvbnRyb2xTdGF0ZXMmIHN0
YXRlcywgY29uc3QgSW50U2kKICAgICByZXR1cm4gY2hlY2tib3hDZWxsOwogfQogCitzdGF0aWMg
Ym9vbCBkcmF3Q2VsbEZvY3VzUmluZ1dpdGhGcmFtZUF0VGltZShOU0NlbGwgKmNlbGwsIE5TUmVj
dCBjZWxsRnJhbWUsIE5TVmlldyAqY29udHJvbFZpZXcsIE5TVGltZUludGVydmFsIHRpbWVPZmZz
ZXQpCit7CisgICAgQ0dDb250ZXh0UmVmIGNnQ29udGV4dCA9IChDR0NvbnRleHRSZWYpW1tOU0dy
YXBoaWNzQ29udGV4dCBjdXJyZW50Q29udGV4dF0gZ3JhcGhpY3NQb3J0XTsKKyAgICBDR0NvbnRl
eHRTYXZlR1N0YXRlKGNnQ29udGV4dCk7CisKKyAgICBDR0ZvY3VzUmluZ1N0eWxlIGZvY3VzUmlu
Z1N0eWxlOworICAgIGJvb2wgbmVlZHNSZXBhaW50ID0gTlNJbml0aWFsaXplQ0dGb2N1c1JpbmdT
dHlsZUZvclRpbWUoTlNGb2N1c1JpbmdPbmx5LCAmZm9jdXNSaW5nU3R5bGUsIHRpbWVPZmZzZXQp
OworICAgIC8vIFdlIHdhbnQgdG8gcmVzcGVjdCB0aGUgQ0dDb250ZXh0IGNsaXBwaW5nIGFuZCBh
bHNvIG5vdCBvdmVycGFpbnQgYW55CisgICAgLy8gZXhpc3RpbmcgZm9jdXMgcmluZy4gVGhlIHdh
eSB0byBkbyB0aGlzIGlzIHNldCBhY2N1bXVsYXRlIHRvCisgICAgLy8gLTEuIEFjY29yZGluZyB0
byBDb3JlR3JhcGhpY3MsIHRoZSByZWFzb25pbmcgZm9yIHRoaXMgYmVoYXZpb3IgaGFzIGJlZW4K
KyAgICAvLyBsb3N0IGluIHRpbWUuCisgICAgZm9jdXNSaW5nU3R5bGUuYWNjdW11bGF0ZSA9IC0x
OworICAgIGF1dG8gc3R5bGUgPSBhZG9wdENGKENHU3R5bGVDcmVhdGVGb2N1c1JpbmdXaXRoQ29s
b3IoJmZvY3VzUmluZ1N0eWxlLCBHcmFwaGljc0NvbnRleHQ6OmZvY3VzUmluZ0NvbG9yKCkpKTsK
KyAgICBDR0NvbnRleHRTZXRTdHlsZShjZ0NvbnRleHQsIHN0eWxlLmdldCgpKTsKKworICAgIENH
Q29udGV4dEJlZ2luVHJhbnNwYXJlbmN5TGF5ZXJXaXRoUmVjdChjZ0NvbnRleHQsIE5TUmVjdFRv
Q0dSZWN0KGNlbGxGcmFtZSksIG51bGxwdHIpOworICAgIFtjZWxsIGRyYXdGb2N1c1JpbmdNYXNr
V2l0aEZyYW1lOmNlbGxGcmFtZSBpblZpZXc6Y29udHJvbFZpZXddOworICAgIENHQ29udGV4dEVu
ZFRyYW5zcGFyZW5jeUxheWVyKGNnQ29udGV4dCk7CisgICAgQ0dDb250ZXh0UmVzdG9yZUdTdGF0
ZShjZ0NvbnRleHQpOworCisgICAgcmV0dXJuIG5lZWRzUmVwYWludDsKK30KKwogc3RhdGljIGJv
b2wgZHJhd0NlbGxGb2N1c1JpbmcoTlNDZWxsICpjZWxsLCBOU1JlY3QgY2VsbEZyYW1lLCBOU1Zp
ZXcgKmNvbnRyb2xWaWV3KQogewotICAgIHdrRHJhd0NlbGxGb2N1c1JpbmdXaXRoRnJhbWVBdFRp
bWUoY2VsbCwgY2VsbEZyYW1lLCBjb250cm9sVmlldywgc3RkOjpudW1lcmljX2xpbWl0czxkb3Vi
bGU+OjptYXgoKSk7CisgICAgZHJhd0NlbGxGb2N1c1JpbmdXaXRoRnJhbWVBdFRpbWUoY2VsbCwg
Y2VsbEZyYW1lLCBjb250cm9sVmlldywgc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjptYXgo
KSk7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tYWMvV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWFjL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaAppbmRleCA4YTEyNDgyN2MwNDA5ZDY2
M2Y3ODFkZjI3YjRlNDNiY2ZhZmJkMjI3Li42NmMwMGI0ODYzMjJmMWY4NDJiNzdiM2VkNmJjNTkx
OGM4ZjZmZDY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29y
ZVN5c3RlbUludGVyZmFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJD
b3JlU3lzdGVtSW50ZXJmYWNlLmgKQEAgLTEyNiwxNCArMTI2LDcgQEAgdHlwZWRlZiBlbnVtIHsK
ICAgICB3a1BhdHRlcm5UaWxpbmdDb25zdGFudFNwYWNpbmcKIH0gd2tQYXR0ZXJuVGlsaW5nOwog
I2lmICFQTEFURk9STShJT1MpCi1leHRlcm4gYm9vbCAoKndrQ0dDb250ZXh0RHJhd3NXaXRoQ29y
cmVjdFNoYWRvd09mZnNldHMpKENHQ29udGV4dFJlZik7Ci0jZW5kaWYKLWV4dGVybiBDR1BhdHRl
cm5SZWYgKCp3a0NHUGF0dGVybkNyZWF0ZVdpdGhJbWFnZUFuZFRyYW5zZm9ybSkoQ0dJbWFnZVJl
ZiwgQ0dBZmZpbmVUcmFuc2Zvcm0sIGludCk7Ci0jaWYgIVBMQVRGT1JNKElPUykKIGV4dGVybiB2
b2lkICgqd2tEcmF3QmV6ZWxlZFRleHRBcmVhKShOU1JlY3QsIEJPT0wgZW5hYmxlZCk7Ci1leHRl
cm4gdm9pZCAoKndrRHJhd0ZvY3VzUmluZykoQ0dDb250ZXh0UmVmLCBDR0NvbG9yUmVmLCBpbnQp
OwotZXh0ZXJuIGJvb2wgKCp3a0RyYXdGb2N1c1JpbmdBdFRpbWUpKENHQ29udGV4dFJlZiwgTlNU
aW1lSW50ZXJ2YWwgdGltZSk7Ci1leHRlcm4gYm9vbCAoKndrRHJhd0NlbGxGb2N1c1JpbmdXaXRo
RnJhbWVBdFRpbWUpKE5TQ2VsbCAqY2VsbCwgTlNSZWN0IGNlbGxGcmFtZSwgTlNWaWV3ICpjb250
cm9sVmlldywgTlNUaW1lSW50ZXJ2YWwgdGltZSk7CiBleHRlcm4gdm9pZCAoKndrRHJhd01lZGlh
U2xpZGVyVHJhY2spKENHQ29udGV4dFJlZiBjb250ZXh0LCBDR1JlY3QgcmVjdCwgZmxvYXQgdGlt
ZUxvYWRlZCwgZmxvYXQgY3VycmVudFRpbWUsCiAgICAgZmxvYXQgZHVyYXRpb24sIHVuc2lnbmVk
IHN0YXRlKTsKIGV4dGVybiB2b2lkICgqd2tEcmF3TWVkaWFVSVBhcnQpKGludCBwYXJ0LCBDR0Nv
bnRleHRSZWYgY29udGV4dCwgQ0dSZWN0IHJlY3QsIHVuc2lnbmVkIHN0YXRlKTsKQEAgLTE1Niw5
ICsxNDksNiBAQCB0eXBlZGVmIGVudW0gewogfSB3a01lZGlhVUlDb250cm9sVHlwZTsKIGV4dGVy
biBOU0NvbnRyb2wgKigqd2tDcmVhdGVNZWRpYVVJQ29udHJvbCkoaW50KTsKIAotZXh0ZXJuIHZv
aWQgKCp3a1dpbmRvd1NldEFscGhhKShOU1dpbmRvdyAqLCBmbG9hdCk7Ci1leHRlcm4gdm9pZCAo
KndrV2luZG93U2V0U2NhbGVkRnJhbWUpKE5TV2luZG93ICosIE5TUmVjdCwgTlNSZWN0KTsKLQog
ZXh0ZXJuIHVuc2lnbmVkICgqd2tRVEluY2x1ZGVPbmx5TW9kZXJuTWVkaWFGaWxlVHlwZXMpKHZv
aWQpOwogZXh0ZXJuIHZvaWQgKCp3a1FUTW92aWVEaXNhYmxlQ29tcG9uZW50KSh1aW50MzJfdFs1
XSk7CiBleHRlcm4gZmxvYXQgKCp3a1FUTW92aWVNYXhUaW1lTG9hZGVkKShRVE1vdmllKik7CkBA
IC0xNzIsOSArMTYyLDcgQEAgZXh0ZXJuIE5TQXJyYXkgKigqd2tRVEdldFNpdGVzSW5NZWRpYURv
d25sb2FkQ2FjaGUpKCk7CiBleHRlcm4gdm9pZCAoKndrUVRDbGVhck1lZGlhRG93bmxvYWRDYWNo
ZUZvclNpdGUpKE5TU3RyaW5nICpzaXRlKTsKIGV4dGVybiB2b2lkICgqd2tRVENsZWFyTWVkaWFE
b3dubG9hZENhY2hlKSgpOwogZXh0ZXJuIHZvaWQgKCp3a1NldENvb2tpZVN0b3JhZ2VQcml2YXRl
QnJvd3NpbmdFbmFibGVkKShCT09MKTsKLWV4dGVybiB2b2lkICgqd2tTZXREcmFnSW1hZ2UpKE5T
SW1hZ2UqLCBOU1BvaW50IG9mZnNldCk7CiAjZW5kaWYKLWV4dGVybiBib29sICgqd2tDR0NvbnRl
eHRJc1BERkNvbnRleHQpKENHQ29udGV4dFJlZik7CiBleHRlcm4gdm9pZCAoKndrU2V0Q09OTkVD
VFByb3h5Rm9yU3RyZWFtKShDRlJlYWRTdHJlYW1SZWYsIENGU3RyaW5nUmVmIHByb3h5SG9zdCwg
Q0ZOdW1iZXJSZWYgcHJveHlQb3J0KTsKIGV4dGVybiB2b2lkICgqd2tTZXRDT05ORUNUUHJveHlB
dXRob3JpemF0aW9uRm9yU3RyZWFtKShDRlJlYWRTdHJlYW1SZWYsIENGU3RyaW5nUmVmIHByb3h5
QXV0aG9yaXphdGlvblN0cmluZyk7CiBleHRlcm4gQ0ZIVFRQTWVzc2FnZVJlZiAoKndrQ29weUNP
Tk5FQ1RQcm94eVJlc3BvbnNlKShDRlJlYWRTdHJlYW1SZWYsIENGVVJMUmVmIHJlc3BvbnNlVVJM
LCBDRlN0cmluZ1JlZiBwcm94eUhvc3QsIENGTnVtYmVyUmVmIHByb3h5UG9ydCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZVN5c3RlbUludGVyZmFjZS5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlLm1t
CmluZGV4IDI3MmI1NTU3ZTIzOWYzYzFlMWQ0NWE5NGZiN2IxZTQ1MzQ2MTdkZjIuLjEzYjg0OTVh
OTBmZWQzYjIwMjNkNTIzZjBjNTRiMTdmZTIwY2UxYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlLm1tCkBAIC0zMSwxMiAr
MzEsNyBAQAogI2ltcG9ydCA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmg+CiAKIHZvaWQgKCp3a0NB
TGF5ZXJFbnVtZXJhdGVSZWN0c0JlaW5nRHJhd25XaXRoQmxvY2spKENBTGF5ZXIgKiwgQ0dDb250
ZXh0UmVmIGNvbnRleHQsIHZvaWQgKF5ibG9jaykoQ0dSZWN0IHJlY3QpKTsKLWJvb2wgKCp3a0NH
Q29udGV4dERyYXdzV2l0aENvcnJlY3RTaGFkb3dPZmZzZXRzKShDR0NvbnRleHRSZWYpOwotQ0dQ
YXR0ZXJuUmVmICgqd2tDR1BhdHRlcm5DcmVhdGVXaXRoSW1hZ2VBbmRUcmFuc2Zvcm0pKENHSW1h
Z2VSZWYsIENHQWZmaW5lVHJhbnNmb3JtLCBpbnQpOwogdm9pZCAoKndrRHJhd0JlemVsZWRUZXh0
QXJlYSkoTlNSZWN0LCBCT09MIGVuYWJsZWQpOwotdm9pZCAoKndrRHJhd0ZvY3VzUmluZykoQ0dD
b250ZXh0UmVmLCBDR0NvbG9yUmVmLCBpbnQpOwotYm9vbCAoKndrRHJhd0ZvY3VzUmluZ0F0VGlt
ZSkoQ0dDb250ZXh0UmVmLCBOU1RpbWVJbnRlcnZhbCk7Ci1ib29sICgqd2tEcmF3Q2VsbEZvY3Vz
UmluZ1dpdGhGcmFtZUF0VGltZSkoTlNDZWxsKiwgTlNSZWN0LCBOU1ZpZXcqLCBOU1RpbWVJbnRl
cnZhbCk7CiB2b2lkICgqd2tEcmF3TWVkaWFTbGlkZXJUcmFjaykoQ0dDb250ZXh0UmVmIGNvbnRl
eHQsIENHUmVjdCByZWN0LCBmbG9hdCB0aW1lTG9hZGVkLCBmbG9hdCBjdXJyZW50VGltZSwKICAg
ICBmbG9hdCBkdXJhdGlvbiwgdW5zaWduZWQgc3RhdGUpOwogQk9PTCAoKndrSGl0VGVzdE1lZGlh
VUlQYXJ0KShpbnQgcGFydCwgQ0dSZWN0IGJvdW5kcywgQ0dQb2ludCBwb2ludCk7CkBAIC00NCw4
ICszOSw2IEBAIHZvaWQgKCp3a0RyYXdNZWRpYVVJUGFydCkoaW50IHBhcnQsIENHQ29udGV4dFJl
ZiBjb250ZXh0LCBDR1JlY3QgcmVjdCwgdW5zaWduZWQKIHZvaWQgKCp3a01lYXN1cmVNZWRpYVVJ
UGFydCkoaW50IHBhcnQsIENHUmVjdCAqYm91bmRzLCBDR1NpemUgKm5hdHVyYWxTaXplKTsKIE5T
VmlldyAqKCp3a0NyZWF0ZU1lZGlhVUlCYWNrZ3JvdW5kVmlldykodm9pZCk7CiBOU0NvbnRyb2wg
Kigqd2tDcmVhdGVNZWRpYVVJQ29udHJvbCkoaW50KTsKLXZvaWQgKCp3a1dpbmRvd1NldEFscGhh
KShOU1dpbmRvdyAqLCBmbG9hdCk7Ci12b2lkICgqd2tXaW5kb3dTZXRTY2FsZWRGcmFtZSkoTlNX
aW5kb3cgKiwgTlNSZWN0LCBOU1JlY3QpOwogTlNUaW1lSW50ZXJ2YWwgKCp3a0dldE5TVVJMUmVz
cG9uc2VDYWxjdWxhdGVkRXhwaXJhdGlvbikoTlNVUkxSZXNwb25zZSAqcmVzcG9uc2UpOwogQk9P
TCAoKndrR2V0TlNVUkxSZXNwb25zZU11c3RSZXZhbGlkYXRlKShOU1VSTFJlc3BvbnNlICpyZXNw
b25zZSk7CiBVSW50OCAoKndrR2V0TlNFdmVudEtleUNoYXIpKE5TRXZlbnQgKik7CkBAIC02Myw4
ICs1Niw2IEBAIE5TQXJyYXkgKigqd2tRVEdldFNpdGVzSW5NZWRpYURvd25sb2FkQ2FjaGUpKCk7
CiB2b2lkICgqd2tRVENsZWFyTWVkaWFEb3dubG9hZENhY2hlRm9yU2l0ZSkoTlNTdHJpbmcgKnNp
dGUpOwogdm9pZCAoKndrUVRDbGVhck1lZGlhRG93bmxvYWRDYWNoZSkoKTsKIAotdm9pZCAoKndr
U2V0RHJhZ0ltYWdlKShOU0ltYWdlKiwgTlNQb2ludCBvZmZzZXQpOwotYm9vbCAoKndrQ0dDb250
ZXh0SXNQREZDb250ZXh0KShDR0NvbnRleHRSZWYpOwogdm9pZCAoKndrU2V0Q09OTkVDVFByb3h5
Rm9yU3RyZWFtKShDRlJlYWRTdHJlYW1SZWYsIENGU3RyaW5nUmVmIHByb3h5SG9zdCwgQ0ZOdW1i
ZXJSZWYgcHJveHlQb3J0KTsKIHZvaWQgKCp3a1NldENPTk5FQ1RQcm94eUF1dGhvcml6YXRpb25G
b3JTdHJlYW0pKENGUmVhZFN0cmVhbVJlZiwgQ0ZTdHJpbmdSZWYgcHJveHlBdXRob3JpemF0aW9u
U3RyaW5nKTsKIENGSFRUUE1lc3NhZ2VSZWYgKCp3a0NvcHlDT05ORUNUUHJveHlSZXNwb25zZSko
Q0ZSZWFkU3RyZWFtUmVmLCBDRlVSTFJlZiByZXNwb25zZVVSTCwgQ0ZTdHJpbmdSZWYgcHJveHlI
b3N0LCBDRk51bWJlclJlZiBwcm94eVBvcnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL1dlYldpbmRvd0FuaW1hdGlvbi5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21hYy9XZWJXaW5kb3dBbmltYXRpb24ubW0KaW5kZXggOGFiYzg0MGI3M2NjNjQ1YzhhYzQw
NmRlYWZhZTk0MjJjZGMzNTNlMi4uNTcyZTE5NmM3ODg2ZGZhZDRjYzc0YTE2MTUzODhlOTNkMjE0
ZGFhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYldpbmRvd0Fu
aW1hdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViV2luZG93QW5p
bWF0aW9uLm1tCkBAIC0yOSw2ICsyOSw3IEBACiAKICNpbXBvcnQgIkZsb2F0Q29udmVyc2lvbi5o
IgogI2ltcG9ydCAiV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oIgorI2ltcG9ydCA8cGFsL3NwaS9j
Zy9Db3JlR3JhcGhpY3NTUEkuaD4KICNpbXBvcnQgPHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW1wb3J0
IDx3dGYvTWF0aEV4dHJhcy5oPgogCkBAIC0xMDksNiArMTEwLDU5IEBAIC0gKE5TUmVjdCljdXJy
ZW50RnJhbWUKICAgICByZXR1cm4gc2NhbGVkUmVjdChfZmluYWxGcmFtZSwgX2luaXRpYWxGcmFt
ZSwgW3NlbGYgY3VycmVudFZhbHVlXSk7CiB9CiAKK3N0YXRpYyB2b2lkIGZsaXBSZWN0KE5TUmVj
dCogcmVjdCkKK3sKKyAgICByZWN0LT5vcmlnaW4ueSA9IE5TTWF4WShbKE5TU2NyZWVuICopW1tO
U1NjcmVlbiBzY3JlZW5zXSBvYmplY3RBdEluZGV4OjBdIGZyYW1lXSkgLSBOU01heFkoKnJlY3Qp
OworfQorCitzdGF0aWMgQ0dTQ29ubmVjdGlvbklEIG1haW5XaW5kb3dTZXJ2ZXJDb25uZWN0aW9u
SUQoKQoreworICAgIHN0YXRpYyBDR1NDb25uZWN0aW9uSUQgY2dzSWQ7CisgICAgaWYgKCFjZ3NJ
ZCkKKyAgICAgICAgY2dzSWQgPSBDR1NNYWluQ29ubmVjdGlvbklEKCk7CisgICAgcmV0dXJuIGNn
c0lkOworfQorCitzdGF0aWMgdm9pZCBzZXRTY2FsZWRGcmFtZUZvcldpbmRvdyhOU1dpbmRvdyAq
d2luZG93LCBOU1JlY3Qgc2NhbGVGcmFtZSwgTlNSZWN0IG5vblNjYWxlZEZyYW1lKQoreworICAg
IGlmIChOU0VxdWFsUmVjdHMoc2NhbGVGcmFtZSwgbm9uU2NhbGVkRnJhbWUpKSB7CisgICAgICAg
IENHU1NldFdpbmRvd1dhcnAobWFpbldpbmRvd1NlcnZlckNvbm5lY3Rpb25JRCgpLCB3aW5kb3cu
d2luZG93TnVtYmVyLCAwLCAwLCBudWxscHRyKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAg
ICAKKyAgICBmbG9hdCBtZXNoWzE2XTsKKyAgICAKKyAgICBmbGlwUmVjdCgmc2NhbGVGcmFtZSk7
CisgICAgZmxpcFJlY3QoJm5vblNjYWxlZEZyYW1lKTsKKyAgICAKKyAgICAvLyB0b3AtbGVmdCBw
b2ludCAodG8gYW5kIGZyb20pCisgICAgbWVzaFswXSA9IDA7CisgICAgbWVzaFsxXSA9IDA7Cisg
ICAgbWVzaFsyXSA9IE5TTWluWChzY2FsZUZyYW1lKTsKKyAgICBtZXNoWzNdID0gTlNNaW5ZKHNj
YWxlRnJhbWUpOworICAgIAorICAgIC8vIHRvcC1yaWdodCBwb2ludCAodG8gYW5kIGZyb20pCisg
ICAgbWVzaFs0XSA9IE5TV2lkdGgobm9uU2NhbGVkRnJhbWUpOworICAgIG1lc2hbNV0gPSAwOwor
ICAgIG1lc2hbNl0gPSBOU01heFgoc2NhbGVGcmFtZSk7CisgICAgbWVzaFs3XSA9IE5TTWluWShz
Y2FsZUZyYW1lKTsKKyAgICAKKyAgICAvLyBib3R0b20tbGVmdCAodG8gYW5kIGZyb20pCisgICAg
bWVzaFs4XSA9IDA7CisgICAgbWVzaFs5XSA9IE5TSGVpZ2h0KG5vblNjYWxlZEZyYW1lKTsKKyAg
ICBtZXNoWzEwXSA9IE5TTWluWChzY2FsZUZyYW1lKTsKKyAgICBtZXNoWzExXSA9IE5TTWF4WShz
Y2FsZUZyYW1lKTsKKyAgICAKKyAgICAvLyBib3R0b20tcmlnaHQgKHRvIGFuZCBmcm9tKQorICAg
IG1lc2hbMTJdID0gTlNXaWR0aChub25TY2FsZWRGcmFtZSk7CisgICAgbWVzaFsxM10gPSBOU0hl
aWdodChub25TY2FsZWRGcmFtZSk7CisgICAgbWVzaFsxNF0gPSBOU01heFgoc2NhbGVGcmFtZSk7
CisgICAgbWVzaFsxNV0gPSBOU01heFkoc2NhbGVGcmFtZSk7CisgICAgCisgICAgLy8gQXBwbHkg
dGhlIHdhcnAuCisgICAgQ0dTU2V0V2luZG93V2FycChtYWluV2luZG93U2VydmVyQ29ubmVjdGlv
bklEKCksIHdpbmRvdy53aW5kb3dOdW1iZXIsIDIsIDIsIG1lc2gpOworfQorCiAtICh2b2lkKXNl
dEN1cnJlbnRQcm9ncmVzczooTlNBbmltYXRpb25Qcm9ncmVzcylwcm9ncmVzcwogewogICAgIGlm
ICghX3dpbmRvdykKQEAgLTExNyw3ICsxNzEsNyBAQCAtICh2b2lkKXNldEN1cnJlbnRQcm9ncmVz
czooTlNBbmltYXRpb25Qcm9ncmVzcylwcm9ncmVzcwogICAgIFtzdXBlciBzZXRDdXJyZW50UHJv
Z3Jlc3M6cHJvZ3Jlc3NdOwogCiAgICAgTlNSZWN0IGN1cnJlbnRSZWN0ID0gW3NlbGYgY3VycmVu
dEZyYW1lXTsKLSAgICB3a1dpbmRvd1NldFNjYWxlZEZyYW1lKF93aW5kb3csIGN1cnJlbnRSZWN0
LCBfcmVhbEZyYW1lKTsKKyAgICBzZXRTY2FsZWRGcmFtZUZvcldpbmRvdyhfd2luZG93LCBjdXJy
ZW50UmVjdCwgX3JlYWxGcmFtZSk7CiAgICAgW19zdWJBbmltYXRpb24gc2V0Q3VycmVudFByb2dy
ZXNzOnByb2dyZXNzXTsKIH0KIApAQCAtMjExLDcgKzI2NSw3IEBAIC0gKHZvaWQpc2V0Q3VycmVu
dFByb2dyZXNzOihOU0FuaW1hdGlvblByb2dyZXNzKXByb2dyZXNzCiAgICAgQVNTRVJUKF93aW5k
b3cpOwogICAgIFtzdXBlciBzZXRDdXJyZW50UHJvZ3Jlc3M6cHJvZ3Jlc3NdOwogCi0gICAgd2tX
aW5kb3dTZXRBbHBoYShfd2luZG93LCBbc2VsZiBjdXJyZW50QWxwaGFdKTsKKyAgICBDR1NTZXRX
aW5kb3dBbHBoYShtYWluV2luZG93U2VydmVyQ29ubmVjdGlvbklEKCksIF93aW5kb3cud2luZG93
TnVtYmVyLCBzZWxmLmN1cnJlbnRBbHBoYSk7CiB9CiAKIC0gKHZvaWQpc2V0V2luZG93OihOU1dp
bmRvdyopd2luZG93CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvbWFj
L1BsdWdpblByb2Nlc3NNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvbWFjL1Bs
dWdpblByb2Nlc3NNYWMubW0KaW5kZXggZDg2MDM3ODY3YTJmMWFmYTI1ZWM1MjYzMDZlMTRkOTY0
Y2Q3N2U2ZC4uMjRkMjZlZDFlNjc0M2FlYzU1N2E4Zjc2NDg5YjY3MzgwNDE3ZmQwNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL21hYy9QbHVnaW5Qcm9jZXNzTWFjLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9tYWMvUGx1Z2luUHJvY2Vzc01hYy5t
bQpAQCAtNDYsNiArNDYsNyBAQAogI2ltcG9ydCA8bWFjaC9tYWNoX3ZtLmg+CiAjaW1wb3J0IDxt
YWNoL3ZtX3N0YXRpc3RpY3MuaD4KICNpbXBvcnQgPG9iamMvcnVudGltZS5oPgorI2ltcG9ydCA8
cGFsL3NwaS9jZy9Db3JlR3JhcGhpY3NTUEkuaD4KICNpbXBvcnQgPHBhbC9zcGkvbWFjL0hJVG9v
bGJveFNQSS5oPgogI2ltcG9ydCA8cGFsL3NwaS9tYWMvTlNXaW5kb3dTUEkuaD4KICNpbXBvcnQg
PHN5c2V4aXRzLmg+CkBAIC01MzEsNyArNTMyLDEwIEBAIHZvaWQgUGx1Z2luUHJvY2Vzczo6cGxh
dGZvcm1Jbml0aWFsaXplUHJvY2Vzcyhjb25zdCBDaGlsZFByb2Nlc3NJbml0aWFsaXphdGlvblBh
CiAKICAgICAvLyBGSVhNRTogSXQgd291bGQgYmUgYmV0dGVyIHRvIHByb3h5IFNldEN1cnNvciBj
YWxscyBvdmVyIHRvIHRoZSBVSSBwcm9jZXNzIGluc3RlYWQgb2YKICAgICAvLyBhbGxvd2luZyBw
bHVnLWlucyB0byBjaGFuZ2UgdGhlIG1vdXNlIGN1cnNvciBhdCBhbnkgdGltZS4KLSAgICBXS0Vu
YWJsZVNldHRpbmdDdXJzb3JXaGVuSW5CYWNrZ3JvdW5kKCk7CisgICAgLy8gRklYTUU6IFNldHND
dXJzb3JJbkJhY2tncm91bmQgY29ubmVjdGlvbiBwcm9wZXJ0eSBpcyBkZXByZWNhdGVkIGluIGZh
dm9yIG9mIGtDR1NTZXRzQ3Vyc29ySW5CYWNrZ3JvdW5kVGFnQml0IHdpbmRvdyB0YWcgYml0Lgor
ICAgIC8vIDxyZGFyOi8vcHJvYmxlbS83NzUyNDIyPiBhc2tzIGZvciBhbiBBUEkgdG8gc2V0IGN1
cnNvciBmcm9tIGJhY2tncm91bmQgcHJvY2Vzc2VzLgorICAgIENHU0Nvbm5lY3Rpb25JRCBjaWQg
PSBDR1NNYWluQ29ubmVjdGlvbklEKCk7CisgICAgQ0dTU2V0Q29ubmVjdGlvblByb3BlcnR5KGNp
ZCwgY2lkLCBDRlNUUigiU2V0c0N1cnNvckluQmFja2dyb3VuZCIpLCAoQ0ZUeXBlUmVmKWtDRkJv
b2xlYW5UcnVlKTsKIAogICAgIFJldGFpblB0cjxDRlVSTFJlZj4gcGx1Z2luVVJMID0gYWRvcHRD
RihDRlVSTENyZWF0ZVdpdGhGaWxlU3lzdGVtUGF0aCgwLCBtX3BsdWdpblBhdGguY3JlYXRlQ0ZT
dHJpbmcoKS5nZXQoKSwga0NGVVJMUE9TSVhQYXRoU3R5bGUsIGZhbHNlKSk7CiAgICAgaWYgKCFw
bHVnaW5VUkwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2luZG93
U2VydmVyQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dpbmRvd1Nl
cnZlckNvbm5lY3Rpb24uaAppbmRleCA4MzhhMzRmYjVjMmQ0NGVlZTU0NjRlNTdlZGM3MGUxMGFk
YmQzYjIwLi5lN2I1MThjNmM1ZWIwYjA2MmQ4OWE5MWNhNzA1NzdiYTg0ZWIwNTExIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2luZG93U2VydmVyQ29ubmVjdGlvbi5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XaW5kb3dTZXJ2ZXJDb25uZWN0aW9u
LmgKQEAgLTQxLDkgKzQxLDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIHdpbmRvd1NlcnZlckNvbm5l
Y3Rpb25TdGF0ZUNoYW5nZWQoKTsKIAogICAgIHZvaWQgYXBwbGljYXRpb25XaW5kb3dNb2RpZmlj
YXRpb25zU3RvcHBlZChib29sIHN0b3BwZWQpOwotCi0gICAgc3RhdGljIHZvaWQgYXBwbGljYXRp
b25XaW5kb3dNb2RpZmljYXRpb25zU3RhcnRlZCh1aW50MzJfdCwgdm9pZCosIHVpbnQzMl90LCB2
b2lkKiwgdWludDMyX3QpOwotICAgIHN0YXRpYyB2b2lkIGFwcGxpY2F0aW9uV2luZG93TW9kaWZp
Y2F0aW9uc1N0b3BwZWQodWludDMyX3QsIHZvaWQqLCB1aW50MzJfdCwgdm9pZCosIHVpbnQzMl90
KTsKICNlbmRpZgogCiAgICAgYm9vbCBtX2FwcGxpY2F0aW9uV2luZG93TW9kaWZpY2F0aW9uc0hh
dmVTdG9wcGVkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dpbmRv
d1NlcnZlckNvbm5lY3Rpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2luZG93
U2VydmVyQ29ubmVjdGlvbi5tbQppbmRleCA4MTk1MzVjMmFjMTI5YzhkNTIxMjE4Yzk3NTVjODRi
NjFkNDRmMjg1Li5hOWU1ZWQ1ZDYwMzZhNTY3NjA2MTUzYmU5NjBhMzRlMWFiMzYwOTQ1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2luZG93U2VydmVyQ29ubmVjdGlv
bi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2luZG93U2VydmVyQ29ubmVj
dGlvbi5tbQpAQCAtMjgsNiArMjgsNyBAQAogCiAjaW1wb3J0ICJXZWJLaXRTeXN0ZW1JbnRlcmZh
Y2UuaCIKICNpbXBvcnQgIldlYlByb2Nlc3NQb29sLmgiCisjaW1wb3J0IDxwYWwvc3BpL2NnL0Nv
cmVHcmFwaGljc1NQSS5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIApAQCAtNDEsMTYgKzQyLDYg
QEAgdm9pZCBXaW5kb3dTZXJ2ZXJDb25uZWN0aW9uOjphcHBsaWNhdGlvbldpbmRvd01vZGlmaWNh
dGlvbnNTdG9wcGVkKGJvb2wgc3RvcHBlZCkKICAgICB3aW5kb3dTZXJ2ZXJDb25uZWN0aW9uU3Rh
dGVDaGFuZ2VkKCk7CiB9CiAKLXZvaWQgV2luZG93U2VydmVyQ29ubmVjdGlvbjo6YXBwbGljYXRp
b25XaW5kb3dNb2RpZmljYXRpb25zU3RhcnRlZCh1aW50MzJfdCwgdm9pZCosIHVpbnQzMl90LCB2
b2lkKiwgdWludDMyX3QpCi17Ci0gICAgV2luZG93U2VydmVyQ29ubmVjdGlvbjo6c2luZ2xldG9u
KCkuYXBwbGljYXRpb25XaW5kb3dNb2RpZmljYXRpb25zU3RvcHBlZChmYWxzZSk7Ci19Ci0KLXZv
aWQgV2luZG93U2VydmVyQ29ubmVjdGlvbjo6YXBwbGljYXRpb25XaW5kb3dNb2RpZmljYXRpb25z
U3RvcHBlZCh1aW50MzJfdCwgdm9pZCosIHVpbnQzMl90LCB2b2lkKiwgdWludDMyX3QpCi17Ci0g
ICAgV2luZG93U2VydmVyQ29ubmVjdGlvbjo6c2luZ2xldG9uKCkuYXBwbGljYXRpb25XaW5kb3dN
b2RpZmljYXRpb25zU3RvcHBlZCh0cnVlKTsKLX0KLQogdm9pZCBXaW5kb3dTZXJ2ZXJDb25uZWN0
aW9uOjp3aW5kb3dTZXJ2ZXJDb25uZWN0aW9uU3RhdGVDaGFuZ2VkKCkKIHsKICAgICBmb3IgKGF1
dG8qIHByb2Nlc3NQb29sIDogV2ViUHJvY2Vzc1Bvb2w6OmFsbFByb2Nlc3NQb29scygpKQpAQCAt
NjUsMjMgKzU2LDQ4IEBAIFdpbmRvd1NlcnZlckNvbm5lY3Rpb24mIFdpbmRvd1NlcnZlckNvbm5l
Y3Rpb246OnNpbmdsZXRvbigpCiAgICAgcmV0dXJuIHdpbmRvd1NlcnZlckNvbm5lY3Rpb247CiB9
CiAKKyNpZiBIQVZFKFdJTkRPV19TRVJWRVJfT0NDTFVTSU9OX05PVElGSUNBVElPTlMpCitzdGF0
aWMgYm9vbCByZWdpc3Rlck9jY2x1c2lvbk5vdGlmaWNhdGlvbkhhbmRsZXIoQ0dTTm90aWZpY2F0
aW9uVHlwZSB0eXBlLCBDR1NOb3RpZnlDb25uZWN0aW9uUHJvY1B0ciBoYW5kbGVyKQoreworICAg
IENHU0Nvbm5lY3Rpb25JRCBtYWluQ29ubmVjdGlvbiA9IENHU01haW5Db25uZWN0aW9uSUQoKTsK
KyAgICBzdGF0aWMgYm9vbCBub3RpZmljYXRpb25zRW5hYmxlZDsKKyAgICBpZiAoIW5vdGlmaWNh
dGlvbnNFbmFibGVkKSB7CisgICAgICAgIGlmIChDR1NQYWNrYWdlc0VuYWJsZUNvbm5lY3Rpb25P
Y2NsdXNpb25Ob3RpZmljYXRpb25zKG1haW5Db25uZWN0aW9uLCB0cnVlLCBudWxscHRyKSAhPSBr
Q0dFcnJvclN1Y2Nlc3MpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGlmIChD
R1NQYWNrYWdlc0VuYWJsZUNvbm5lY3Rpb25XaW5kb3dNb2RpZmljYXRpb25Ob3RpZmljYXRpb25z
KG1haW5Db25uZWN0aW9uLCB0cnVlLCBudWxscHRyKSAhPSBrQ0dFcnJvclN1Y2Nlc3MpCisgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIG5vdGlmaWNhdGlvbnNFbmFibGVkID0gdHJ1
ZTsKKyAgICB9CisKKyAgICByZXR1cm4gQ0dTUmVnaXN0ZXJDb25uZWN0aW9uTm90aWZ5UHJvYyht
YWluQ29ubmVjdGlvbiwgaGFuZGxlciwgdHlwZSwgbnVsbHB0cikgPT0ga0NHRXJyb3JTdWNjZXNz
OworfQorI2VuZGlmCisKIFdpbmRvd1NlcnZlckNvbm5lY3Rpb246OldpbmRvd1NlcnZlckNvbm5l
Y3Rpb24oKQogICAgIDogbV9hcHBsaWNhdGlvbldpbmRvd01vZGlmaWNhdGlvbnNIYXZlU3RvcHBl
ZChmYWxzZSkKIHsKICNpZiBIQVZFKFdJTkRPV19TRVJWRVJfT0NDTFVTSU9OX05PVElGSUNBVElP
TlMpCiAgICAgc3RydWN0IE9jY2x1c2lvbk5vdGlmaWNhdGlvbkhhbmRsZXIgewotICAgICAgICBX
S09jY2x1c2lvbk5vdGlmaWNhdGlvblR5cGUgbm90aWZpY2F0aW9uVHlwZTsKLSAgICAgICAgV0tP
Y2NsdXNpb25Ob3RpZmljYXRpb25IYW5kbGVyIGhhbmRsZXI7CisgICAgICAgIENHU05vdGlmaWNh
dGlvblR5cGUgbm90aWZpY2F0aW9uVHlwZTsKKyAgICAgICAgQ0dTTm90aWZ5Q29ubmVjdGlvblBy
b2NQdHIgaGFuZGxlcjsKICAgICAgICAgY29uc3QgY2hhciogbmFtZTsKICAgICB9OwogCisgICAg
c3RhdGljIGF1dG8gd2luZG93TW9kaWZpY2F0aW9uc1N0YXJ0ZWQgPSBbXShDR1NOb3RpZmljYXRp
b25UeXBlLCB2b2lkKiwgdWludDMyX3QsIHZvaWQqLCBDR1NDb25uZWN0aW9uSUQpIHsKKyAgICAg
ICAgV2luZG93U2VydmVyQ29ubmVjdGlvbjo6c2luZ2xldG9uKCkuYXBwbGljYXRpb25XaW5kb3dN
b2RpZmljYXRpb25zU3RvcHBlZChmYWxzZSk7CisgICAgfTsKKworICAgIHN0YXRpYyBhdXRvIHdp
bmRvd01vZGlmaWNhdGlvbnNTdG9wcGVkID0gW10oQ0dTTm90aWZpY2F0aW9uVHlwZSwgdm9pZCos
IHVpbnQzMl90LCB2b2lkKiwgQ0dTQ29ubmVjdGlvbklEKSB7CisgICAgICAgIFdpbmRvd1NlcnZl
ckNvbm5lY3Rpb246OnNpbmdsZXRvbigpLmFwcGxpY2F0aW9uV2luZG93TW9kaWZpY2F0aW9uc1N0
b3BwZWQodHJ1ZSk7CisgICAgfTsKKwogICAgIHN0YXRpYyBjb25zdCBPY2NsdXNpb25Ob3RpZmlj
YXRpb25IYW5kbGVyIG9jY2x1c2lvbk5vdGlmaWNhdGlvbkhhbmRsZXJzW10gPSB7Ci0gICAgICAg
IHsgV0tPY2NsdXNpb25Ob3RpZmljYXRpb25UeXBlQXBwbGljYXRpb25XaW5kb3dNb2RpZmljYXRp
b25zU3RhcnRlZCwgYXBwbGljYXRpb25XaW5kb3dNb2RpZmljYXRpb25zU3RhcnRlZCwgIkFwcGxp
Y2F0aW9uIFdpbmRvdyBNb2RpZmljYXRpb25zIFN0YXJ0ZWQiIH0sCi0gICAgICAgIHsgV0tPY2Ns
dXNpb25Ob3RpZmljYXRpb25UeXBlQXBwbGljYXRpb25XaW5kb3dNb2RpZmljYXRpb25zU3RvcHBl
ZCwgYXBwbGljYXRpb25XaW5kb3dNb2RpZmljYXRpb25zU3RvcHBlZCwgIkFwcGxpY2F0aW9uIFdp
bmRvdyBNb2RpZmljYXRpb25zIFN0b3BwZWQiIH0sCisgICAgICAgIHsga0NHU0Nvbm5lY3Rpb25X
aW5kb3dNb2RpZmljYXRpb25zU3RhcnRlZCwgd2luZG93TW9kaWZpY2F0aW9uc1N0YXJ0ZWQsICJB
cHBsaWNhdGlvbiBXaW5kb3cgTW9kaWZpY2F0aW9ucyBTdGFydGVkIiB9LAorICAgICAgICB7IGtD
R1NDb25uZWN0aW9uV2luZG93TW9kaWZpY2F0aW9uc1N0b3BwZWQsIHdpbmRvd01vZGlmaWNhdGlv
bnNTdG9wcGVkLCAiQXBwbGljYXRpb24gV2luZG93IE1vZGlmaWNhdGlvbnMgU3RvcHBlZCIgfSwK
ICAgICB9OwogCiAgICAgZm9yIChjb25zdCBhdXRvJiBvY2NsdXNpb25Ob3RpZmljYXRpb25IYW5k
bGVyIDogb2NjbHVzaW9uTm90aWZpY2F0aW9uSGFuZGxlcnMpIHsKLSAgICAgICAgYm9vbCByZXN1
bHQgPSBXS1JlZ2lzdGVyT2NjbHVzaW9uTm90aWZpY2F0aW9uSGFuZGxlcihvY2NsdXNpb25Ob3Rp
ZmljYXRpb25IYW5kbGVyLm5vdGlmaWNhdGlvblR5cGUsIG9jY2x1c2lvbk5vdGlmaWNhdGlvbkhh
bmRsZXIuaGFuZGxlcik7CisgICAgICAgIGJvb2wgcmVzdWx0ID0gcmVnaXN0ZXJPY2NsdXNpb25O
b3RpZmljYXRpb25IYW5kbGVyKG9jY2x1c2lvbk5vdGlmaWNhdGlvbkhhbmRsZXIubm90aWZpY2F0
aW9uVHlwZSwgb2NjbHVzaW9uTm90aWZpY2F0aW9uSGFuZGxlci5oYW5kbGVyKTsKICAgICAgICAg
VU5VU0VEX1BBUkFNKHJlc3VsdCk7CiAgICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0UocmVzdWx0
LCAiUmVnaXN0cmF0aW9uIG9mIFwiJXNcIiBub3RpZmljYXRpb24gaGFuZGxlciBmYWlsZWQuXG4i
LCBvY2NsdXNpb25Ob3RpZmljYXRpb25IYW5kbGVyLm5hbWUpOwogICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViU3lzdGVtSW50
ZXJmYWNlLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9X
ZWJTeXN0ZW1JbnRlcmZhY2UubW0KaW5kZXggZDE4YTQ0MGRkNzI1MzljNmE1Njk0Yjc0NjdmOGE2
OTE4ODUxZDk5ZS4uNWIwOTc5YzY4NWFkMDgwMDJmN2MyYTBmN2I1OGQxN2ZiODZjYTdjNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJT
eXN0ZW1JbnRlcmZhY2UubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L21hYy9XZWJTeXN0ZW1JbnRlcmZhY2UubW0KQEAgLTM3LDIxICszNywxMSBAQCB2b2lk
IEluaXRXZWJDb3JlU3lzdGVtSW50ZXJmYWNlKHZvaWQpCiAgICAgCiAgICAgZGlzcGF0Y2hfb25j
ZSgmaW5pdE9uY2UsIF57CiAgICAgICAgIElOSVQoQ0FMYXllckVudW1lcmF0ZVJlY3RzQmVpbmdE
cmF3bldpdGhCbG9jayk7Ci0gICAgICAgIElOSVQoQ0dQYXR0ZXJuQ3JlYXRlV2l0aEltYWdlQW5k
VHJhbnNmb3JtKTsKLSNpZiAhUExBVEZPUk0oSU9TKQotICAgICAgICBJTklUKENHQ29udGV4dERy
YXdzV2l0aENvcnJlY3RTaGFkb3dPZmZzZXRzKTsKLSNlbmRpZgogICAgICAgICBJTklUKENvcHlD
T05ORUNUUHJveHlSZXNwb25zZSk7CiAjaWYgIVBMQVRGT1JNKElPUykKICAgICAgICAgSU5JVChE
cmF3QmV6ZWxlZFRleHRBcmVhKTsKLSAgICAgICAgSU5JVChEcmF3Rm9jdXNSaW5nKTsKLSAgICAg
ICAgSU5JVChEcmF3Rm9jdXNSaW5nQXRUaW1lKTsKLSAgICAgICAgSU5JVChEcmF3Q2VsbEZvY3Vz
UmluZ1dpdGhGcmFtZUF0VGltZSk7CiAgICAgICAgIElOSVQoRHJhd01lZGlhU2xpZGVyVHJhY2sp
OwogICAgICAgICBJTklUKERyYXdNZWRpYVVJUGFydCk7Ci0jZW5kaWYKLSAgICAgICAgSU5JVChD
R0NvbnRleHRJc1BERkNvbnRleHQpOwotI2lmICFQTEFURk9STShJT1MpCiAgICAgICAgIElOSVQo
R2V0TlNFdmVudEtleUNoYXIpOwogICAgICAgICBJTklUKEhpdFRlc3RNZWRpYVVJUGFydCk7CiAg
ICAgICAgIElOSVQoTWVhc3VyZU1lZGlhVUlQYXJ0KTsKQEAgLTcwLDE2ICs2MCwxMSBAQCB2b2lk
IEluaXRXZWJDb3JlU3lzdGVtSW50ZXJmYWNlKHZvaWQpCiAjZW5kaWYKICAgICAgICAgSU5JVChT
ZXRDT05ORUNUUHJveHlBdXRob3JpemF0aW9uRm9yU3RyZWFtKTsKICAgICAgICAgSU5JVChTZXRD
T05ORUNUUHJveHlGb3JTdHJlYW0pOwotI2lmICFQTEFURk9STShJT1MpCi0gICAgICAgIElOSVQo
U2V0RHJhZ0ltYWdlKTsKLSNlbmRpZgogCiAjaWYgIVBMQVRGT1JNKElPUykKICAgICAgICAgSU5J
VChFeGVjdXRhYmxlV2FzTGlua2VkT25PckJlZm9yZVNub3dMZW9wYXJkKTsKICAgICAgICAgSU5J
VChDb3B5RGVmYXVsdFNlYXJjaFByb3ZpZGVyRGlzcGxheU5hbWUpOwogICAgICAgICBJTklUKEN1
cnNvcik7Ci0gICAgICAgIElOSVQoV2luZG93U2V0U2NhbGVkRnJhbWUpOwotICAgICAgICBJTklU
KFdpbmRvd1NldEFscGhhKTsKICAgICAgICAgSU5JVChTcGVlY2hTeW50aGVzaXNHZXRWb2ljZUlk
ZW50aWZpZXJzKTsKICAgICAgICAgSU5JVChTcGVlY2hTeW50aGVzaXNHZXREZWZhdWx0Vm9pY2VJ
ZGVudGlmaWVyRm9yTG9jYWxlKTsKICAgICAgICAgSU5JVChOU0VsYXN0aWNEZWx0YUZvclRpbWVE
ZWx0YSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DYXJib24vSElXZWJW
aWV3Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2FyYm9uL0hJV2ViVmlldy5tbQppbmRl
eCAzNDU4NWMyNTJjM2IxOGNhY2Q2ZTA3YWQ1ZTk0NDg3NzlkOGJlNDU3Li5kYjRiYjY0NDQyNTMw
MWQwNGYxOGZhYWFhYWY3MGEyZTk1NGIyZDU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9DYXJib24vSElXZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L0NhcmJvbi9ISVdlYlZpZXcubW0KQEAgLTM2LDYgKzM2LDcgQEAKICNpbXBvcnQgIldlYktpdC5o
IgogI2ltcG9ydCA8V2ViS2l0U3lzdGVtSW50ZXJmYWNlLmg+CiAjaW1wb3J0IDxwYWwvc3BpL21h
Yy9OU0V2ZW50U1BJLmg+CisjaW1wb3J0IDxwYWwvc3BpL21hYy9OU0dyYXBoaWNzU1BJLmg+CiAj
aW1wb3J0IDxwYWwvc3BpL21hYy9RdWlja0RyYXdTUEkuaD4KICNpbXBvcnQgPHd0Zi9PYmpjUnVu
dGltZUV4dHJhcy5oPgogCkBAIC04NSw2ICs4NiwyMSBAQCAtIChpbnQpdGFnCiAKIEBlbmQKIAor
QGludGVyZmFjZSBOU1dpbmRvd0dyYXBoaWNzQ29udGV4dCAoSElXZWJWaWV3KQorLSAodm9pZClf
d2ViX3NldEdyYXBoaWNzUG9ydDooQ0dDb250ZXh0UmVmKWNvbnRleHQ7CitAZW5kCisKK0BpbXBs
ZW1lbnRhdGlvbiBOU1dpbmRvd0dyYXBoaWNzQ29udGV4dCAoSElXZWJWaWV3KQorCistICh2b2lk
KV93ZWJfc2V0R3JhcGhpY3NQb3J0OihDR0NvbnRleHRSZWYpY29udGV4dAoreworICAgIENHQ29u
dGV4dFJldGFpbihjb250ZXh0KTsKKyAgICBDR0NvbnRleHRSZWxlYXNlKF9jZ3NDb250ZXh0KTsK
KyAgICBfY2dzQ29udGV4dCA9IGNvbnRleHQ7Cit9CisKK0BlbmQKKwogc3RydWN0IEhJV2ViVmll
dwogewogICAgIEhJVmlld1JlZgkJCQkJCQlmVmlld1JlZjsKQEAgLTI5MCw2ICszMDYsMjIgQEAg
R2V0QmVoYXZpb3JzKCkKIAlyZXR1cm4ga0NvbnRyb2xTdXBwb3J0c0RhdGFBY2Nlc3MgfCBrQ29u
dHJvbFN1cHBvcnRzR2V0UmVnaW9uIHwga0NvbnRyb2xHZXRzRm9jdXNPbkNsaWNrOwogfQogCitz
dGF0aWMgQ0dDb250ZXh0UmVmIG92ZXJyaWRlQ0dDb250ZXh0KE5TV2luZG93ICp3aW5kb3csIENH
Q29udGV4dFJlZiBjb250ZXh0KQoreworICAgIE5TV2luZG93R3JhcGhpY3NDb250ZXh0ICpncmFw
aGljc0NvbnRleHQgPSAoTlNXaW5kb3dHcmFwaGljc0NvbnRleHQgKil3aW5kb3cuZ3JhcGhpY3ND
b250ZXh0OworICAgIENHQ29udGV4dFJlZiBzYXZlZENvbnRleHQgPSAoQ0dDb250ZXh0UmVmKWdy
YXBoaWNzQ29udGV4dC5ncmFwaGljc1BvcnQ7CisgICAgQ0dDb250ZXh0UmV0YWluKHNhdmVkQ29u
dGV4dCk7CisgICAgW2dyYXBoaWNzQ29udGV4dCBfd2ViX3NldEdyYXBoaWNzUG9ydDpjb250ZXh0
XTsKKyAgICByZXR1cm4gc2F2ZWRDb250ZXh0OworfQorCitzdGF0aWMgdm9pZCByZXN0b3JlQ0dD
b250ZXh0KE5TV2luZG93ICp3aW5kb3csIENHQ29udGV4dFJlZiBzYXZlZENvbnRleHQpCit7Cisg
ICAgTlNXaW5kb3dHcmFwaGljc0NvbnRleHQgKmdyYXBoaWNzQ29udGV4dCA9IChOU1dpbmRvd0dy
YXBoaWNzQ29udGV4dCAqKXdpbmRvdy5ncmFwaGljc0NvbnRleHQ7CisgICAgW2dyYXBoaWNzQ29u
dGV4dCBfd2ViX3NldEdyYXBoaWNzUG9ydDpzYXZlZENvbnRleHRdOworICAgIENHQ29udGV4dFJl
bGVhc2Uoc2F2ZWRDb250ZXh0KTsKK30KKwogLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAv
LyBEcmF3CiAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTMyMSw3ICszNTMsNyBAQCBE
cmF3KCBISVdlYlZpZXcqIGluVmlldywgUmduSGFuZGxlIGxpbWl0UmduLCBDR0NvbnRleHRSZWYg
aW5Db250ZXh0ICkKIAogCUhJVmlld0dldEJvdW5kcyggaW5WaWV3LT5mVmlld1JlZiwgJmJvdW5k
cyApOwogCi0gICAgQ0dDb250ZXh0UmVmIHNhdmVkQ29udGV4dCA9IFdLTlNXaW5kb3dPdmVycmlk
ZUNHQ29udGV4dChpblZpZXctPmZLaXRXaW5kb3csIGluQ29udGV4dCk7CisgICAgQ0dDb250ZXh0
UmVmIHNhdmVkQ29udGV4dCA9IG92ZXJyaWRlQ0dDb250ZXh0KGluVmlldy0+ZktpdFdpbmRvdywg
aW5Db250ZXh0KTsKICAgICBbTlNHcmFwaGljc0NvbnRleHQgc2V0Q3VycmVudENvbnRleHQ6W2lu
Vmlldy0+ZktpdFdpbmRvdyBncmFwaGljc0NvbnRleHRdXTsKIAogCUdldFJlZ2lvbkJvdW5kcygg
bGltaXRSZ24sICZkcmF3UmVjdCApOwpAQCAtMzUxLDcgKzM4Myw3IEBAIERyYXcoIEhJV2ViVmll
dyogaW5WaWV3LCBSZ25IYW5kbGUgbGltaXRSZ24sIENHQ29udGV4dFJlZiBpbkNvbnRleHQgKQog
ICAgIGVsc2UKICAgICAgICAgW2luVmlldy0+ZldlYlZpZXcgZGlzcGxheVJlY3Q6KihOU1JlY3Qq
KSZoaVJlY3RdOwogCi0gICAgV0tOU1dpbmRvd1Jlc3RvcmVDR0NvbnRleHQoaW5WaWV3LT5mS2l0
V2luZG93LCBzYXZlZENvbnRleHQpOworICAgIHJlc3RvcmVDR0NvbnRleHQoaW5WaWV3LT5mS2l0
V2luZG93LCBzYXZlZENvbnRleHQpOwogCiAgICAgaWYgKCAhaW5WaWV3LT5mSXNDb21wb3NpdGVk
ICkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hv
c3RlZC9XZWJIb3N0ZWROZXRzY2FwZVBsdWdpblZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9QbHVnaW5zL0hvc3RlZC9XZWJIb3N0ZWROZXRzY2FwZVBsdWdpblZpZXcubW0KaW5kZXgg
OWUyMDQ0ZTI2ZTEzOTAyMWViOGNhNjMzNjI1NWYyYzgzM2MxYjhiMi4uNjk1YTVjZjUyNzM3M2Qz
MDlhODNiNjRkNmYxZDAxMDBlZDNhNDA4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvUGx1Z2lucy9Ib3N0ZWQvV2ViSG9zdGVkTmV0c2NhcGVQbHVnaW5WaWV3Lm1tCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL1dlYkhvc3RlZE5ldHNjYXBl
UGx1Z2luVmlldy5tbQpAQCAtNzYsNyArNzYsNyBAQCArICh2b2lkKWluaXRpYWxpemUKICAgICBX
VEY6OmluaXRpYWxpemVNYWluVGhyZWFkVG9Qcm9jZXNzTWFpblRocmVhZCgpOwogICAgIFJ1bkxv
b3A6OmluaXRpYWxpemVNYWluUnVuTG9vcCgpOwogI2VuZGlmCi0gICAgV0tTZW5kVXNlckNoYW5n
ZU5vdGlmaWNhdGlvbnMoKTsKKyAgICBzZW5kVXNlckNoYW5nZU5vdGlmaWNhdGlvbnMoKTsKIH0K
IAogLSAoaWQpaW5pdFdpdGhGcmFtZTooTlNSZWN0KWZyYW1lCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYkJhc2VOZXRzY2FwZVBsdWdpblZpZXcuaCBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViQmFzZU5ldHNjYXBlUGx1Z2luVmlldy5o
CmluZGV4IGMyMjIzYWI2ZDI2NzUxZjM4YzM4OTU4MWJkMzQ5ZGU5ODE0YzE1YjEuLmNkNDMwZDM2
Njk3MWVjOWZlMmVhMGQ0NDA1OTNiNTgwYzljYTJlMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViQmFzZU5ldHNjYXBlUGx1Z2luVmlldy5oCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViQmFzZU5ldHNjYXBlUGx1Z2luVmlldy5o
CkBAIC0xMzQsNiArMTM0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogbmFtZXNwYWNlIFdlYktp
dCB7CiBib29sIGdldEF1dGhlbnRpY2F0aW9uSW5mbyhjb25zdCBjaGFyKiBwcm90b2NvbFN0ciwg
Y29uc3QgY2hhciogaG9zdFN0ciwgaW50MzJfdCBwb3J0LCBjb25zdCBjaGFyKiBzY2hlbWVTdHIs
IGNvbnN0IGNoYXIqIHJlYWxtU3RyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgV1RGOjpD
U3RyaW5nJiB1c2VybmFtZSwgV1RGOjpDU3RyaW5nJiBwYXNzd29yZCk7Cit2b2lkIHNlbmRVc2Vy
Q2hhbmdlTm90aWZpY2F0aW9ucygpOwogfSAKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYkJhc2VOZXRzY2FwZVBsdWdpblZpZXcubW0gYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYkJhc2VOZXRzY2FwZVBsdWdpblZpZXcu
bW0KaW5kZXggNjRkZTkwMTBlYmRiMGIwNjlkNmY4NjNhM2ZlZjJmZmQ3YjVkNDMzOC4uOTU3M2Q1
NTNjNTUzYzNiNDEwMTZkNzg0Y2IxYjAyMzM3Yzg0ODg0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJCYXNlTmV0c2NhcGVQbHVnaW5WaWV3Lm1tCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViQmFzZU5ldHNjYXBlUGx1Z2luVmll
dy5tbQpAQCAtNTUsNiArNTUsNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbi5o
PgogI2ltcG9ydCA8V2ViQ29yZS9XZWJDb3JlT2JqQ0V4dHJhcy5oPgogI2ltcG9ydCA8V2ViS2l0
TGVnYWN5L0RPTVByaXZhdGUuaD4KKyNpbXBvcnQgPHBhbC9zcGkvY2cvQ29yZUdyYXBoaWNzU1BJ
Lmg+CiAjaW1wb3J0IDxydW50aW1lL0luaXRpYWxpemVUaHJlYWRpbmcuaD4KICNpbXBvcnQgPHd0
Zi9Bc3NlcnRpb25zLmg+CiAjaW1wb3J0IDx3dGYvTWFpblRocmVhZC5oPgpAQCAtNzMsNyArNzQs
NyBAQCArICh2b2lkKWluaXRpYWxpemUKICAgICBKU0M6OmluaXRpYWxpemVUaHJlYWRpbmcoKTsK
ICAgICBXVEY6OmluaXRpYWxpemVNYWluVGhyZWFkVG9Qcm9jZXNzTWFpblRocmVhZCgpOwogICAg
IFJ1bkxvb3A6OmluaXRpYWxpemVNYWluUnVuTG9vcCgpOwotICAgIFdLU2VuZFVzZXJDaGFuZ2VO
b3RpZmljYXRpb25zKCk7CisgICAgV2ViS2l0OjpzZW5kVXNlckNoYW5nZU5vdGlmaWNhdGlvbnMo
KTsKIH0KIAogLSAoaWQpaW5pdFdpdGhGcmFtZTooTlNSZWN0KWZyYW1lCkBAIC05MDAsNiArOTAx
LDIzIEBAIGJvb2wgZ2V0QXV0aGVudGljYXRpb25JbmZvKGNvbnN0IGNoYXIqIHByb3RvY29sU3Ry
LCBjb25zdCBjaGFyKiBob3N0U3RyLCBpbnQzMl90CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK3Zv
aWQgc2VuZFVzZXJDaGFuZ2VOb3RpZmljYXRpb25zKCkKK3sKKyAgICBhdXRvIGNvbnNvbGVDb25u
ZWN0aW9uQ2hhbmdlTm90aWZ5UHJvYyA9IFtdKENHU05vdGlmaWNhdGlvblR5cGUgdHlwZSwgQ0dT
Tm90aWZpY2F0aW9uRGF0YSwgQ0dTQnl0ZUNvdW50LCBDR1NOb3RpZmljYXRpb25BcmcpIHsKKyAg
ICAgICAgTlNTdHJpbmcgKm5vdGlmaWNhdGlvbk5hbWUgPSBuaWw7CisgICAgICAgIGlmICh0eXBl
ID09IGtDR1Nlc3Npb25Db25zb2xlQ29ubmVjdCkKKyAgICAgICAgICAgIG5vdGlmaWNhdGlvbk5h
bWUgPSBMb2dpbldpbmRvd0RpZFN3aXRjaFRvVXNlck5vdGlmaWNhdGlvbjsKKyAgICAgICAgZWxz
ZSBpZiAodHlwZSA9PSBrQ0dTZXNzaW9uQ29uc29sZURpc2Nvbm5lY3QpCisgICAgICAgICAgICBu
b3RpZmljYXRpb25OYW1lID0gTG9naW5XaW5kb3dEaWRTd2l0Y2hGcm9tVXNlck5vdGlmaWNhdGlv
bjsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAg
ICAgIFtbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0gcG9zdE5vdGlmaWNhdGlv
bk5hbWU6bm90aWZpY2F0aW9uTmFtZSBvYmplY3Q6bmlsXTsKKyAgICB9OworCisgICAgQ0dTUmVn
aXN0ZXJOb3RpZnlQcm9jKGNvbnNvbGVDb25uZWN0aW9uQ2hhbmdlTm90aWZ5UHJvYywga0NHU2Vz
c2lvbkNvbnNvbGVDb25uZWN0LCBudWxscHRyKTsKKyAgICBDR1NSZWdpc3Rlck5vdGlmeVByb2Mo
Y29uc29sZUNvbm5lY3Rpb25DaGFuZ2VOb3RpZnlQcm9jLCBrQ0dTZXNzaW9uQ29uc29sZURpc2Nv
bm5lY3QsIG51bGxwdHIpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8v
ICBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5WaWV3Lm1tIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblZpZXcubW0KaW5kZXggYzY4MGZm
N2VlMzFjOTNiOGZiNDkyMjk3ZTRlN2FkOTE0MWE0ZGRlNC4uMGM0YTJmNDYxNTcwOWZjMTY3ZDNh
YjZiOTkwMzg2MDliYjI5N2Q5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
UGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblZpZXcubW0KQEAgLTc0LDYgKzc0LDcgQEAK
ICNpbXBvcnQgPFdlYktpdExlZ2FjeS9ET01Qcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXRMZWdh
Y3kvV2ViVUlEZWxlZ2F0ZS5oPgogI2ltcG9ydCA8b2JqYy9ydW50aW1lLmg+CisjaW1wb3J0IDxw
YWwvc3BpL2NnL0NvcmVHcmFwaGljc1NQSS5oPgogI2ltcG9ydCA8cGFsL3NwaS9tYWMvUXVpY2tE
cmF3U1BJLmg+CiAjaW1wb3J0IDxydW50aW1lL0luaXRpYWxpemVUaHJlYWRpbmcuaD4KICNpbXBv
cnQgPHJ1bnRpbWUvSlNMb2NrLmg+CkBAIC0xOTMsNyArMTk0LDcgQEAgKyAodm9pZClpbml0aWFs
aXplCiAgICAgSlNDOjppbml0aWFsaXplVGhyZWFkaW5nKCk7CiAgICAgV1RGOjppbml0aWFsaXpl
TWFpblRocmVhZFRvUHJvY2Vzc01haW5UaHJlYWQoKTsKICAgICBSdW5Mb29wOjppbml0aWFsaXpl
TWFpblJ1bkxvb3AoKTsKLSAgICBXS1NlbmRVc2VyQ2hhbmdlTm90aWZpY2F0aW9ucygpOworICAg
IHNlbmRVc2VyQ2hhbmdlTm90aWZpY2F0aW9ucygpOwogfQogCiAvLyBNQVJLOiBFVkVOVFMKQEAg
LTM3OSwxMCArMzgwLDEwIEBAIC0gKFBvcnRTdGF0ZSlzYXZlQW5kU2V0TmV3UG9ydFN0YXRlRm9y
VXBkYXRlOihCT09MKWZvclVwZGF0ZQogICAgICAgICAgICAgcWRQb3J0U3RhdGUtPmNsaXBSZWdp
b24gPSBjbGlwUmVnaW9uOwogCiAgICAgICAgICAgICBDR0NvbnRleHRSZWYgY3VycmVudENvbnRl
eHQgPSAoQ0dDb250ZXh0UmVmKVtbTlNHcmFwaGljc0NvbnRleHQgY3VycmVudENvbnRleHRdIGdy
YXBoaWNzUG9ydF07Ci0gICAgICAgICAgICBpZiAoY3VycmVudENvbnRleHQgJiYgV0tDR0NvbnRl
eHRJc0JpdG1hcENvbnRleHQoY3VycmVudENvbnRleHQpKSB7Ci0gICAgICAgICAgICAgICAgLy8g
V2UgdXNlIFdLQ0dDb250ZXh0SXNCaXRtYXBDb250ZXh0IGhlcmUsIGJlY2F1c2UgaWYgd2UganVz
dCBjYWxsZWQgQ0dCaXRtYXBDb250ZXh0R2V0RGF0YQotICAgICAgICAgICAgICAgIC8vIG9uIGFu
eSBjb250ZXh0LCB3ZSdkIGxvZyB0byB0aGUgY29uc29sZSBldmVyeSB0aW1lLiBCdXQgZXZlbiBp
ZiBXS0NHQ29udGV4dElzQml0bWFwQ29udGV4dAotICAgICAgICAgICAgICAgIC8vIHJldHVybnMg
dHJ1ZSwgaXQgc3RpbGwgbWlnaHQgbm90IGJlIGEgY29udGV4dCB3ZSBuZWVkIHRvIGNyZWF0ZSBh
IEdXb3JsZCBmb3I7IGZvciBleGFtcGxlCisgICAgICAgICAgICBpZiAoY3VycmVudENvbnRleHQg
JiYgQ0dDb250ZXh0R2V0VHlwZShjdXJyZW50Q29udGV4dCkgPT0ga0NHQ29udGV4dFR5cGVCaXRt
YXApIHsKKyAgICAgICAgICAgICAgICAvLyBXZSBjaGVjayBmb3Iga0NHQ29udGV4dFR5cGVCaXRt
YXAgaGVyZSwgYmVjYXVzZSBpZiB3ZSBqdXN0IGNhbGxlZCBDR0JpdG1hcENvbnRleHRHZXREYXRh
CisgICAgICAgICAgICAgICAgLy8gb24gYW55IGNvbnRleHQsIHdlJ2QgbG9nIHRvIHRoZSBjb25z
b2xlIGV2ZXJ5IHRpbWUuIEJ1dCBldmVuIGlmIGN1cnJlbnRDb250ZXh0IGlzIGEKKyAgICAgICAg
ICAgICAgICAvLyBrQ0dDb250ZXh0VHlwZUJpdG1hcCwgaXQgc3RpbGwgbWlnaHQgbm90IGJlIGEg
Y29udGV4dCB3ZSBuZWVkIHRvIGNyZWF0ZSBhIEdXb3JsZCBmb3I7IGZvciBleGFtcGxlCiAgICAg
ICAgICAgICAgICAgLy8gdHJhbnNwYXJlbmN5IGxheWVycyB3aWxsIHJldHVybiB0cnVlLCBidXQg
cmV0dXJuIDAgZm9yIENHQml0bWFwQ29udGV4dEdldERhdGEuCiAgICAgICAgICAgICAgICAgdm9p
ZCogb2Zmc2NyZWVuRGF0YSA9IENHQml0bWFwQ29udGV4dEdldERhdGEoY3VycmVudENvbnRleHQp
OwogICAgICAgICAgICAgICAgIGlmIChvZmZzY3JlZW5EYXRhKSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJTeXN0ZW1JbnRlcmZhY2UubW0g
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJTeXN0ZW1JbnRlcmZh
Y2UubW0KaW5kZXggNmRkMGI1N2RkNGJmMzQzZmU5NjZmMGZiYTYzYzExY2Y0ZjA4ZDkzMi4uYjUx
MWQ2NWVhNjFiMzYyNDdkMmI4M2ViMmM2ODkxMTQzZjM5N2NkOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViU3lzdGVtSW50ZXJmYWNlLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlN5c3RlbUludGVy
ZmFjZS5tbQpAQCAtNDMsMTYgKzQzLDkgQEAgdm9pZCBJbml0V2ViQ29yZVN5c3RlbUludGVyZmFj
ZSh2b2lkKQogICAgICAgICByZXR1cm47CiAKICAgICBJTklUKENBTGF5ZXJFbnVtZXJhdGVSZWN0
c0JlaW5nRHJhd25XaXRoQmxvY2spOwotICAgIElOSVQoQ0dQYXR0ZXJuQ3JlYXRlV2l0aEltYWdl
QW5kVHJhbnNmb3JtKTsKLSNpZiAhUExBVEZPUk0oSU9TKQotICAgIElOSVQoQ0dDb250ZXh0RHJh
d3NXaXRoQ29ycmVjdFNoYWRvd09mZnNldHMpOwotI2VuZGlmCiAgICAgSU5JVChDb3B5Q09OTkVD
VFByb3h5UmVzcG9uc2UpOwogI2lmICFQTEFURk9STShJT1MpCiAgICAgSU5JVChEcmF3QmV6ZWxl
ZFRleHRBcmVhKTsKLSAgICBJTklUKERyYXdGb2N1c1JpbmcpOwotICAgIElOSVQoRHJhd0ZvY3Vz
UmluZ0F0VGltZSk7Ci0gICAgSU5JVChEcmF3Q2VsbEZvY3VzUmluZ1dpdGhGcmFtZUF0VGltZSk7
CiAgICAgSU5JVChEcmF3TWVkaWFVSVBhcnQpOwogICAgIElOSVQoRHJhd01lZGlhU2xpZGVyVHJh
Y2spOwogICAgIElOSVQoR2V0TlNFdmVudEtleUNoYXIpOwpAQCAtNjAsMTUgKzUzLDkgQEAgdm9p
ZCBJbml0V2ViQ29yZVN5c3RlbUludGVyZmFjZSh2b2lkKQogICAgIElOSVQoTWVhc3VyZU1lZGlh
VUlQYXJ0KTsKICAgICBJTklUKENyZWF0ZU1lZGlhVUlCYWNrZ3JvdW5kVmlldyk7CiAgICAgSU5J
VChDcmVhdGVNZWRpYVVJQ29udHJvbCk7Ci0gICAgSU5JVChXaW5kb3dTZXRBbHBoYSk7Ci0gICAg
SU5JVChXaW5kb3dTZXRTY2FsZWRGcmFtZSk7CiAjZW5kaWYKICAgICBJTklUKFNldENPTk5FQ1RQ
cm94eUF1dGhvcml6YXRpb25Gb3JTdHJlYW0pOwogICAgIElOSVQoU2V0Q09OTkVDVFByb3h5Rm9y
U3RyZWFtKTsKLSNpZiAhUExBVEZPUk0oSU9TKQotICAgIElOSVQoU2V0RHJhZ0ltYWdlKTsKLSNl
bmRpZgotICAgIElOSVQoQ0dDb250ZXh0SXNQREZDb250ZXh0KTsKICNpZiBFTkFCTEUoVklERU8p
ICYmICFQTEFURk9STShJT1MpCiAgICAgSU5JVChRVEluY2x1ZGVPbmx5TW9kZXJuTWVkaWFGaWxl
VHlwZXMpOwogICAgIElOSVQoUVRNb3ZpZURpc2FibGVDb21wb25lbnQpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbSBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KaW5kZXggZjBmOGU2Mjg1ODBiMjlmZTA0
N2VkZGY2ZWI0NzU3OGM2ZDA1ZGQyZC4uZTcwOTNjOTZhYWM0NzRlM2FlZTllNzJkMjNiMjRlYjFj
NTg5YTJlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJG
cmFtZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1t
CkBAIC01OTgsNyArNTk4LDcgQEAgLSAoUGFpbnRCZWhhdmlvcilfcGFpbnRCZWhhdmlvckZvckRl
c3RpbmF0aW9uQ29udGV4dDooQ0dDb250ZXh0UmVmKWNvbnRleHQKICAgICAgICAgcmV0dXJuIFBh
aW50QmVoYXZpb3JGbGF0dGVuQ29tcG9zaXRpbmdMYXllcnMgfCBQYWludEJlaGF2aW9yU25hcHNo
b3R0aW5nOwogI2VuZGlmCiAKLSAgICBpZiAoIVdLQ0dDb250ZXh0SXNCaXRtYXBDb250ZXh0KGNv
bnRleHQpKQorICAgIGlmIChDR0NvbnRleHRHZXRUeXBlKGNvbnRleHQpICE9IGtDR0NvbnRleHRU
eXBlQml0bWFwKQogICAgICAgICByZXR1cm4gUGFpbnRCZWhhdmlvck5vcm1hbDsKIAogICAgIC8v
IElmIHdlJ3JlIGRyYXdpbmcgaW50byBhIGJpdG1hcCwgd2UgbWlnaHQgYmUgc25hcHNob3R0aW5n
LCBvciBkcmF3aW5nIGludG8gYSBsYXllci1iYWNrZWQgdmlldy4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnVsbFNjcmVlbkNvbnRyb2xsZXIubW0gYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZ1bGxTY3JlZW5Db250cm9sbGVyLm1t
CmluZGV4IGZkOGZjNTY5OTdhZmNiNmFkN2Y5MGM1ZmM5OTg0YmEzMTc2NmU5MDcuLjc3MmU5NjIz
YzNmNjViZTIzNDg2OTJiZTMyNGE0N2E2YmVkYTQ4NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnVsbFNjcmVlbkNvbnRyb2xsZXIubW0KKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGdWxsU2NyZWVuQ29udHJvbGxlci5tbQpA
QCAtMjQ5LDYgKzI0OSwxNiBAQCAtICh2b2lkKWVudGVyRnVsbFNjcmVlbjooTlNTY3JlZW4gKilz
Y3JlZW4KICAgICBfaXNFbnRlcmluZ0Z1bGxTY3JlZW4gPSB0cnVlOwogfQogCitzdGF0aWMgdm9p
ZCBzZXRDbGlwUmVjdEZvcldpbmRvdyhOU1dpbmRvdyAqd2luZG93LCBOU1JlY3QgY2xpcFJlY3Qp
Cit7CisgICAgQ0dTV2luZG93SUQgd2luZG93TnVtYmVyID0gKENHU1dpbmRvd0lEKXdpbmRvdy53
aW5kb3dOdW1iZXI7CisgICAgQ0dTUmVnaW9uT2JqIHNoYXBlOworICAgIENHUmVjdCBjZ0NsaXBS
ZWN0ID0gTlNSZWN0VG9DR1JlY3QoY2xpcFJlY3QpOworICAgIENHU05ld1JlZ2lvbldpdGhSZWN0
KCZjZ0NsaXBSZWN0LCAmc2hhcGUpOworICAgIENHU1NldFdpbmRvd0NsaXBTaGFwZShDR1NNYWlu
Q29ubmVjdGlvbklEKCksIHdpbmRvd051bWJlciwgc2hhcGUpOworICAgIENHU1JlbGVhc2VSZWdp
b24oc2hhcGUpOworfQorCiAtICh2b2lkKWZpbmlzaGVkRW50ZXJGdWxsU2NyZWVuQW5pbWF0aW9u
Oihib29sKWNvbXBsZXRlZAogewogICAgIGlmICghX2lzRW50ZXJpbmdGdWxsU2NyZWVuKQpAQCAt
MjYzLDcgKzI3Myw3IEBAIC0gKHZvaWQpZmluaXNoZWRFbnRlckZ1bGxTY3JlZW5BbmltYXRpb246
KGJvb2wpY29tcGxldGVkCiAgICAgICAgIAogICAgICAgICBOU1JlY3Qgd2luZG93Qm91bmRzID0g
W1tzZWxmIHdpbmRvd10gZnJhbWVdOwogICAgICAgICB3aW5kb3dCb3VuZHMub3JpZ2luID0gTlNa
ZXJvUG9pbnQ7Ci0gICAgICAgIFdLV2luZG93U2V0Q2xpcFJlY3QoW3NlbGYgd2luZG93XSwgd2lu
ZG93Qm91bmRzKTsKKyAgICAgICAgc2V0Q2xpcFJlY3RGb3JXaW5kb3coc2VsZi53aW5kb3csIHdp
bmRvd0JvdW5kcyk7CiAgICAgICAgIAogICAgICAgICBOU1dpbmRvdyAqd2ViV2luZG93ID0gW193
ZWJWaWV3UGxhY2Vob2xkZXIuZ2V0KCkgd2luZG93XTsKICAgICAgICAgLy8gSW4gTGlvbiwgTlNX
aW5kb3cgd2lsbCBhbmltYXRlIGludG8gYW5kIG91dCBvZiBvcmRlck91dCBvcGVyYXRpb25zLiBT
dXBwcmVzcyB0aGF0CkBAIC0zNTMsNyArMzYzLDcgQEAgLSAodm9pZClmaW5pc2hlZEV4aXRGdWxs
U2NyZWVuQW5pbWF0aW9uOihib29sKWNvbXBsZXRlZAogICAgIAogICAgIE5TUmVjdCB3aW5kb3dC
b3VuZHMgPSBbW3NlbGYgd2luZG93XSBmcmFtZV07CiAgICAgd2luZG93Qm91bmRzLm9yaWdpbiA9
IE5TWmVyb1BvaW50OwotICAgIFdLV2luZG93U2V0Q2xpcFJlY3QoW3NlbGYgd2luZG93XSwgd2lu
ZG93Qm91bmRzKTsKKyAgICBzZXRDbGlwUmVjdEZvcldpbmRvdyhzZWxmLndpbmRvdywgd2luZG93
Qm91bmRzKTsKICAgICAKICAgICBbW3NlbGYgd2luZG93XSBvcmRlck91dDpzZWxmXTsKICAgICBb
W3NlbGYgd2luZG93XSBzZXRGcmFtZTpOU1plcm9SZWN0IGRpc3BsYXk6WUVTXTsKQEAgLTQ4NCwx
MyArNDk0LDEzIEBAIC0gKHZvaWQpX3N0YXJ0RW50ZXJGdWxsU2NyZWVuQW5pbWF0aW9uV2l0aER1
cmF0aW9uOihOU1RpbWVJbnRlcnZhbClkdXJhdGlvbgogICAgIFtfc2NhbGVBbmltYXRpb24uZ2V0
KCkgc2V0Q3VycmVudFByb2dyZXNzOjBdOwogICAgIFtfc2NhbGVBbmltYXRpb24uZ2V0KCkgc3Rh
cnRBbmltYXRpb25dOwogICAgIAotICAgIC8vIFdLV2luZG93U2V0Q2xpcFJlY3QgdGFrZXMgd2lu
ZG93IGNvb3JkaW5hdGVzLCBzbyBjb252ZXJ0IGZyb20gc2NyZWVuIGNvb3JkaW5hdGVzIGhlcmU6
CisgICAgLy8gc2V0Q2xpcFJlY3RGb3JXaW5kb3cgdGFrZXMgd2luZG93IGNvb3JkaW5hdGVzLCBz
byBjb252ZXJ0IGZyb20gc2NyZWVuIGNvb3JkaW5hdGVzIGhlcmU6CiAgICAgTlNSZWN0IGZpbmFs
Qm91bmRzID0gX2ZpbmFsRnJhbWU7CiAjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcHVzaAogI3By
YWdtYSBjbGFuZyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XZGVwcmVjYXRlZC1kZWNsYXJhdGlvbnMi
CiAgICAgZmluYWxCb3VuZHMub3JpZ2luID0gW1tzZWxmIHdpbmRvd10gY29udmVydFNjcmVlblRv
QmFzZTpmaW5hbEJvdW5kcy5vcmlnaW5dOwogI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHBvcAot
ICAgIFdLV2luZG93U2V0Q2xpcFJlY3QoW3NlbGYgd2luZG93XSwgZmluYWxCb3VuZHMpOworICAg
IHNldENsaXBSZWN0Rm9yV2luZG93KHNlbGYud2luZG93LCBmaW5hbEJvdW5kcyk7CiAgICAgCiAg
ICAgW1tzZWxmIHdpbmRvd10gbWFrZUtleUFuZE9yZGVyRnJvbnQ6c2VsZl07CiAgICAgCkBAIC01
NTYsMTMgKzU2NiwxMyBAQCAtICh2b2lkKV9zdGFydEV4aXRGdWxsU2NyZWVuQW5pbWF0aW9uV2l0
aER1cmF0aW9uOihOU1RpbWVJbnRlcnZhbClkdXJhdGlvbgogICAgIAogICAgIFtfYmFja2dyb3Vu
ZFdpbmRvdy5nZXQoKSBvcmRlcldpbmRvdzpOU1dpbmRvd0JlbG93IHJlbGF0aXZlVG86W1tzZWxm
IHdpbmRvd10gd2luZG93TnVtYmVyXV07CiAgICAgCi0gICAgLy8gV0tXaW5kb3dTZXRDbGlwUmVj
dCB0YWtlcyB3aW5kb3cgY29vcmRpbmF0ZXMsIHNvIGNvbnZlcnQgZnJvbSBzY3JlZW4gY29vcmRp
bmF0ZXMgaGVyZToKKyAgICAvLyBzZXRDbGlwUmVjdEZvcldpbmRvdyB0YWtlcyB3aW5kb3cgY29v
cmRpbmF0ZXMsIHNvIGNvbnZlcnQgZnJvbSBzY3JlZW4gY29vcmRpbmF0ZXMgaGVyZToKICAgICBO
U1JlY3QgZmluYWxCb3VuZHMgPSBfZmluYWxGcmFtZTsKICNwcmFnbWEgY2xhbmcgZGlhZ25vc3Rp
YyBwdXNoCiAjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgaWdub3JlZCAiLVdkZXByZWNhdGVkLWRl
Y2xhcmF0aW9ucyIKICAgICBmaW5hbEJvdW5kcy5vcmlnaW4gPSBbW3NlbGYgd2luZG93XSBjb252
ZXJ0U2NyZWVuVG9CYXNlOmZpbmFsQm91bmRzLm9yaWdpbl07CiAjcHJhZ21hIGNsYW5nIGRpYWdu
b3N0aWMgcG9wCi0gICAgV0tXaW5kb3dTZXRDbGlwUmVjdChbc2VsZiB3aW5kb3ddLCBmaW5hbEJv
dW5kcyk7CisgICAgc2V0Q2xpcFJlY3RGb3JXaW5kb3coc2VsZi53aW5kb3csIGZpbmFsQm91bmRz
KTsKICAgICAKICAgICBbW3NlbGYgd2luZG93XSBzZXRBdXRvZGlzcGxheTpZRVNdOwogICAgIFtb
c2VsZiB3aW5kb3ddIGRpc3BsYXlJZk5lZWRlZF07Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>319618</attachid>
            <date>2017-09-01 10:56:00 -0700</date>
            <delta_ts>2017-09-01 11:37:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-176200-20170901105559.patch</filename>
            <type>text/plain</type>
            <size>72597</size>
            <attacher name="Andy Estes">aestes</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIxNDczCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmNmNjE0ZmZmMzUzODM2
Mjg0MTIwMzJkMzk0M2FkZDllOGNjOWJmNS4uODFmNzczNjQxODhmNGQ2YzA3NmE2NzMzY2M5YzVk
ODQwODkyNjAyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDQ2IEBACiAyMDE3LTA4LTMxICBBbmR5
IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KIAorICAgICAgICBbQ0ddIFVwc3RyZWFtIENvcmVH
cmFwaGljcy1yZWxhdGVkIFdlYktpdFN5c3RlbUludGVyZmFjZSBmdW5jdGlvbnMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NjIwMAorCisgICAgICAg
IFJldmlld2VkIGJ5IFRpbSBIb3J0b24uCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9H
cmFwaGljc0NvbnRleHQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJj
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6c3Vic2FtcGxpbmdMZXZlbEZv
clNjYWxlRmFjdG9yKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0Nv
bnRleHRDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmNsaXBPdXQp
OgorICAgICAgICAoV2ViQ29yZTo6YXBwbHlTaGFkb3dPZmZzZXRXb3JrYXJvdW5kSWZOZWVkZWQp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL1BhdHRlcm5DRy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpQYXR0ZXJuOjpjcmVhdGVQbGF0Zm9ybVBhdHRlcm4gY29uc3QpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dENvY29hLm1tOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0Ojpmb2N1c1JpbmdDb2xvcik6CisgICAgICAg
IChXZWJDb3JlOjpkcmF3Rm9jdXNSaW5nQXRUaW1lKToKKyAgICAgICAgKFdlYkNvcmU6OmRyYXdG
b2N1c1JpbmcpOgorICAgICAgICAoV2ViQ29yZTo6ZHJhd0ZvY3VzUmluZ1RvQ29udGV4dCk6Cisg
ICAgICAgIChXZWJDb3JlOjpkcmF3Rm9jdXNSaW5nVG9Db250ZXh0QXRUaW1lKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9pb3MvV2ViQ29yZVN5c3RlbUludGVyZmFjZUlPUy5tbToKKyAgICAgICAgKiBw
bGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OmZsaXBJbWFn
ZVNwZWMpOgorICAgICAgICAoV2ViQ29yZTo6c2V0RHJhZ0ltYWdlSW1wbCk6CisgICAgICAgIChX
ZWJDb3JlOjpQYXN0ZWJvYXJkOjpzZXREcmFnSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL21h
Yy9QbGF0Zm9ybUV2ZW50RmFjdG9yeU1hYy5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvU2Ny
b2xsYmFyVGhlbWVNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpsaW5lbkJhY2tncm91bmRDb2xv
cik6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1RoZW1lTWFjLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6ZHJhd0NlbGxGb2N1c1JpbmdXaXRoRnJhbWVBdFRpbWUpOgorICAgICAgICAoV2ViQ29yZTo6
ZHJhd0NlbGxGb2N1c1JpbmcpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9XZWJDb3JlU3lzdGVt
SW50ZXJmYWNlLmg6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1dlYkNvcmVTeXN0ZW1JbnRlcmZh
Y2UubW06CisgICAgICAgICogcGxhdGZvcm0vbWFjL1dlYldpbmRvd0FuaW1hdGlvbi5tbToKKyAg
ICAgICAgKGZsaXBSZWN0KToKKyAgICAgICAgKG1haW5XaW5kb3dTZXJ2ZXJDb25uZWN0aW9uSUQp
OgorICAgICAgICAoc2V0U2NhbGVkRnJhbWVGb3JXaW5kb3cpOgorICAgICAgICAoLVtXZWJXaW5k
b3dTY2FsZUFuaW1hdGlvbiBzZXRDdXJyZW50UHJvZ3Jlc3M6XSk6CisgICAgICAgICgtW1dlYldp
bmRvd0ZhZGVBbmltYXRpb24gc2V0Q3VycmVudFByb2dyZXNzOl0pOgorCisyMDE3LTA4LTMxICBB
bmR5IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KKwogICAgICAgICBbTWFjXSBVcHN0cmVhbSBB
cHBLaXQtcmVsYXRlZCBXZWJLaXRTeXN0ZW1JbnRlcmZhY2UgZnVuY3Rpb25zCiAgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzYxNzUKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFu
Z2VMb2cKaW5kZXggZWVlZTg0ZGM2MTlkOTJkNGRhMmExMjBiMjA4NmRjNmM2MTBhNjhiMi4uNzM1
ZTZiMzc4MDA0NDYwYzEyMGUzNzAwMWZkMDFmOTQxNDkyMjMyYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvUEFML0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9n
CkBAIC0xLDUgKzEsMTcgQEAKIDIwMTctMDgtMzEgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUu
Y29tPgogCisgICAgICAgIFtDR10gVXBzdHJlYW0gQ29yZUdyYXBoaWNzLXJlbGF0ZWQgV2ViS2l0
U3lzdGVtSW50ZXJmYWNlIGZ1bmN0aW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTc2MjAwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgVGltIEhvcnRv
bi4KKworICAgICAgICAqIFBBTC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAq
IHBhbC9zcGkvY2cvQ29yZUdyYXBoaWNzU1BJLmg6CisgICAgICAgICogcGFsL3NwaS9tYWMvSElT
ZXJ2aWNlc1NQSS5oOgorICAgICAgICAqIHBhbC9zcGkvbWFjL05TR3JhcGhpY3NTUEkuaDogQ29w
aWVkIGZyb20gU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvbWFjL0hJU2VydmljZXNTUEkuaC4K
KworMjAxNy0wOC0zMSAgQW5keSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+CisKICAgICAgICAg
W01hY10gVXBzdHJlYW0gQXBwS2l0LXJlbGF0ZWQgV2ViS2l0U3lzdGVtSW50ZXJmYWNlIGZ1bmN0
aW9ucwogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc2
MTc1CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKaW5kZXggYjYyYjdlZTU2MWZmMDQ0NmZlZWJkYjQzMDY1NjY3MTJjY2RmZWQy
OC4uZGMwNTk2NGRkYzc0MmRlMzhmYjdlYzA5ZjYzN2U1YmE2ODZiZjdjNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAg
LTEsNSArMSwyMiBAQAogMjAxNy0wOC0zMSAgQW5keSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+
CiAKKyAgICAgICAgW0NHXSBVcHN0cmVhbSBDb3JlR3JhcGhpY3MtcmVsYXRlZCBXZWJLaXRTeXN0
ZW1JbnRlcmZhY2UgZnVuY3Rpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNzYyMDAKKworICAgICAgICBSZXZpZXdlZCBieSBUaW0gSG9ydG9uLgor
CisgICAgICAgICogUGx1Z2luUHJvY2Vzcy9tYWMvUGx1Z2luUHJvY2Vzc01hYy5tbToKKyAgICAg
ICAgKFdlYktpdDo6UGx1Z2luUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXplUHJvY2Vzcyk6Cisg
ICAgICAgICogVUlQcm9jZXNzL21hYy9XaW5kb3dTZXJ2ZXJDb25uZWN0aW9uLmg6CisgICAgICAg
ICogVUlQcm9jZXNzL21hYy9XaW5kb3dTZXJ2ZXJDb25uZWN0aW9uLm1tOgorICAgICAgICAoV2Vi
S2l0OjpyZWdpc3Rlck9jY2x1c2lvbk5vdGlmaWNhdGlvbkhhbmRsZXIpOgorICAgICAgICAoV2Vi
S2l0OjpXaW5kb3dTZXJ2ZXJDb25uZWN0aW9uOjpXaW5kb3dTZXJ2ZXJDb25uZWN0aW9uKToKKyAg
ICAgICAgKFdlYktpdDo6V2luZG93U2VydmVyQ29ubmVjdGlvbjo6YXBwbGljYXRpb25XaW5kb3dN
b2RpZmljYXRpb25zU3RhcnRlZCk6IERlbGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9tYWMvV2ViU3lzdGVtSW50ZXJmYWNlLm1tOgorICAgICAgICAoSW5pdFdlYkNv
cmVTeXN0ZW1JbnRlcmZhY2UpOgorCisyMDE3LTA4LTMxICBBbmR5IEVzdGVzICA8YWVzdGVzQGFw
cGxlLmNvbT4KKwogICAgICAgICBbTWFjXSBVcHN0cmVhbSBBcHBLaXQtcmVsYXRlZCBXZWJLaXRT
eXN0ZW1JbnRlcmZhY2UgZnVuY3Rpb25zCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNzYxNzUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4
IGM0Zjk5NTY3MjU0ZDBiNjIyYzlhOGY5ODc5MTdiNjcwMzM5NzgwOTMuLmQxNmQ5OTg2ZTE1NDU1
MTM3NmM1N2RiMTUzYjcxYzg1YTM3ZTU1MWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cK
QEAgLTEsNSArMSwzNiBAQAogMjAxNy0wOC0zMSAgQW5keSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5j
b20+CiAKKyAgICAgICAgW0NHXSBVcHN0cmVhbSBDb3JlR3JhcGhpY3MtcmVsYXRlZCBXZWJLaXRT
eXN0ZW1JbnRlcmZhY2UgZnVuY3Rpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNzYyMDAKKworICAgICAgICBSZXZpZXdlZCBieSBUaW0gSG9ydG9u
LgorCisgICAgICAgICogQ2FyYm9uL0hJV2ViVmlldy5tbToKKyAgICAgICAgKC1bTlNXaW5kb3dH
cmFwaGljc0NvbnRleHQgX3dlYl9zZXRHcmFwaGljc1BvcnQ6XSk6CisgICAgICAgIChvdmVycmlk
ZUNHQ29udGV4dCk6CisgICAgICAgIChyZXN0b3JlQ0dDb250ZXh0KToKKyAgICAgICAgKERyYXcp
OgorICAgICAgICAqIFBsdWdpbnMvSG9zdGVkL1dlYkhvc3RlZE5ldHNjYXBlUGx1Z2luVmlldy5t
bToKKyAgICAgICAgKCtbV2ViSG9zdGVkTmV0c2NhcGVQbHVnaW5WaWV3IGluaXRpYWxpemVdKToK
KyAgICAgICAgKiBQbHVnaW5zL1dlYkJhc2VOZXRzY2FwZVBsdWdpblZpZXcuaDoKKyAgICAgICAg
KiBQbHVnaW5zL1dlYkJhc2VOZXRzY2FwZVBsdWdpblZpZXcubW06CisgICAgICAgIChXZWJLaXQ6
OnNlbmRVc2VyQ2hhbmdlTm90aWZpY2F0aW9ucyk6CisgICAgICAgICogUGx1Z2lucy9XZWJOZXRz
Y2FwZVBsdWdpblZpZXcubW06CisgICAgICAgICgrW1dlYk5ldHNjYXBlUGx1Z2luVmlldyBpbml0
aWFsaXplXSk6CisgICAgICAgICgtW1dlYk5ldHNjYXBlUGx1Z2luVmlldyBzYXZlQW5kU2V0TmV3
UG9ydFN0YXRlRm9yVXBkYXRlOl0pOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlN5c3Rl
bUludGVyZmFjZS5tbToKKyAgICAgICAgKEluaXRXZWJDb3JlU3lzdGVtSW50ZXJmYWNlKToKKyAg
ICAgICAgKiBXZWJWaWV3L1dlYkZyYW1lLm1tOgorICAgICAgICAoLVtXZWJGcmFtZSBfcGFpbnRC
ZWhhdmlvckZvckRlc3RpbmF0aW9uQ29udGV4dDpdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYkZ1
bGxTY3JlZW5Db250cm9sbGVyLm1tOgorICAgICAgICAoc2V0Q2xpcFJlY3RGb3JXaW5kb3cpOgor
ICAgICAgICAoLVtXZWJGdWxsU2NyZWVuQ29udHJvbGxlciBmaW5pc2hlZEVudGVyRnVsbFNjcmVl
bkFuaW1hdGlvbjpdKToKKyAgICAgICAgKC1bV2ViRnVsbFNjcmVlbkNvbnRyb2xsZXIgZmluaXNo
ZWRFeGl0RnVsbFNjcmVlbkFuaW1hdGlvbjpdKToKKyAgICAgICAgKC1bV2ViRnVsbFNjcmVlbkNv
bnRyb2xsZXIgX3N0YXJ0RW50ZXJGdWxsU2NyZWVuQW5pbWF0aW9uV2l0aER1cmF0aW9uOl0pOgor
ICAgICAgICAoLVtXZWJGdWxsU2NyZWVuQ29udHJvbGxlciBfc3RhcnRFeGl0RnVsbFNjcmVlbkFu
aW1hdGlvbldpdGhEdXJhdGlvbjpdKToKKworMjAxNy0wOC0zMSAgQW5keSBFc3RlcyAgPGFlc3Rl
c0BhcHBsZS5jb20+CisKICAgICAgICAgW01hY10gVXBzdHJlYW0gQXBwS2l0LXJlbGF0ZWQgV2Vi
S2l0U3lzdGVtSW50ZXJmYWNlIGZ1bmN0aW9ucwogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc2MTc1CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L1BBTC9QQUwueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1BBTC9Q
QUwueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAxM2NlY2NjZTZjNDM2ZjA1MDJlZDk5
NzJiZWI0YjFhZWIzZjM0MGI4Li4zYTA0MGFhMjQwODkzODkyY2FiZTU4ZTVmN2MyMDgzZjE2MTJi
NmRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvUEFMLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML1BBTC54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCkBAIC0xMDQsNiArMTA0LDcgQEAKIAkJQTEwODI2RjExRjU3M0JDQTAwNDc3MkFDIC8q
IE5TUmVzcG9uZGVyU1BJLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBMTA4MjZGMDFGNTczQkNBMDA0NzcyQUMgLyogTlNSZXNwb25kZXJTUEkuaCAqLzsg
fTsKIAkJQTEwODI2RjkxRjU3NjI5MjAwNDc3MkFDIC8qIFdlYlBhbmVsLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTA4MjZGNzFGNTc2MjkyMDA0Nzcy
QUMgLyogV2ViUGFuZWwuaCAqLzsgfTsKIAkJQTEwODI2RkExRjU3NjI5MjAwNDc3MkFDIC8qIFdl
YlBhbmVsLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QTEwODI2RjgxRjU3NjI5MjAwNDc3MkFDIC8qIFdlYlBhbmVsLm1tICovOyB9OworCQlBMTA4MjZG
RTFGNThBNDMzMDA0NzcyQUMgLyogTlNHcmFwaGljc1NQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTEwODI2RkQxRjU4QTQzMzAwNDc3MkFDIC8qIE5T
R3JhcGhpY3NTUEkuaCAqLzsgfTsKIAkJQTFGNTVEQ0YxRjU1MjhFQzAwRURCNzVGIC8qIE1ldGFk
YXRhU1BJLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBB
MUY1NURDRTFGNTUyOEVDMDBFREI3NUYgLyogTWV0YWRhdGFTUEkuaCAqLzsgfTsKIAkJQTMwRDQx
MjExRjBERDBFQTAwQjcxOTU0IC8qIEtpbGxSaW5nLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMzBENDExRTFGMEREMEVBMDBCNzE5NTQgLyogS2lsbFJp
bmcuaCAqLzsgfTsKIAkJQTMwRDQxMjIxRjBERDBFQTAwQjcxOTU0IC8qIEtpbGxSaW5nLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEEzMEQ0MTFGMUYw
REQwRUEwMEI3MTk1NCAvKiBLaWxsUmluZy5jcHAgKi87IH07CkBAIC0yMjMsNiArMjI0LDcgQEAK
IAkJQTEwODI2RjAxRjU3M0JDQTAwNDc3MkFDIC8qIE5TUmVzcG9uZGVyU1BJLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IE5TUmVzcG9uZGVyU1BJLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUEx
MDgyNkY3MUY1NzYyOTIwMDQ3NzJBQyAvKiBXZWJQYW5lbC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJQ
YW5lbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMTA4MjZGODFGNTc2MjkyMDA0
NzcyQUMgLyogV2ViUGFuZWwubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJQYW5lbC5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTEwODI2RkQxRjU4QTQzMzAwNDc3MkFDIC8q
IE5TR3JhcGhpY3NTUEkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTlNHcmFwaGljc1NQSS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlBMUY1NURDRTFGNTUyOEVDMDBFREI3NUYgLyogTWV0YWRh
dGFTUEkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWV0YWRhdGFTUEkuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQTMwRDQxMUUxRjBERDBFQTAwQjcxOTU0IC8qIEtpbGxSaW5nLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEtpbGxSaW5nLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUEzMEQ0MTFGMUYwREQwRUEwMEI3MTk1NCAvKiBLaWxsUmluZy5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBLaWxsUmluZy5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zNTUsNiArMzU3LDcgQEAKIAkJCQkwQzc3ODU3NTFGNDUx
MzBGMDBGNEVCQjYgLyogTlNBcHBsaWNhdGlvblNQSS5oICovLAogCQkJCTBDNzc4NTc2MUY0NTEz
MEYwMEY0RUJCNiAvKiBOU0V2ZW50U1BJLmggKi8sCiAJCQkJMEM3Nzg1NzcxRjQ1MTMwRjAwRjRF
QkI2IC8qIE5TRm9udFNQSS5oICovLAorCQkJCUExMDgyNkZEMUY1OEE0MzMwMDQ3NzJBQyAvKiBO
U0dyYXBoaWNzU1BJLmggKi8sCiAJCQkJMEM3Nzg1NzgxRjQ1MTMwRjAwRjRFQkI2IC8qIE5TSW1t
ZWRpYXRlQWN0aW9uR2VzdHVyZVJlY29nbml6ZXJTUEkuaCAqLywKIAkJCQkwQzc3ODU3OTFGNDUx
MzBGMDBGNEVCQjYgLyogTlNNZW51U1BJLmggKi8sCiAJCQkJMEM3Nzg1N0ExRjQ1MTMwRjAwRjRF
QkI2IC8qIE5TUGFzdGVib2FyZFNQSS5oICovLApAQCAtNTUxLDYgKzU1NCw3IEBACiAJCQkJMEMy
REExNEUxRjNCRUI0OTAwREJDMzE3IC8qIE5TRXh0ZW5zaW9uU1BJLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwQzJEQTE0RjFGM0JFQjQ5MDBEQkMzMTcgLyogTlNGaWxlTWFuYWdlclNQSS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMEM3Nzg1OTAxRjQ1MTMwRjAwRjRFQkI2IC8qIE5TRm9udFNQSS5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJQTEwODI2RkUxRjU4QTQzMzAwNDc3MkFDIC8qIE5TR3JhcGhpY3NT
UEkuaCBpbiBIZWFkZXJzICovLAogCQkJCTBDNzc4NTkxMUY0NTEzMEYwMEY0RUJCNiAvKiBOU0lt
bWVkaWF0ZUFjdGlvbkdlc3R1cmVSZWNvZ25pemVyU1BJLmggaW4gSGVhZGVycyAqLywKIAkJCQkw
Qzc3ODU5MjFGNDUxMzBGMDBGNEVCQjYgLyogTlNNZW51U1BJLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwQzc3ODU5MzFGNDUxMzBGMDBGNEVCQjYgLyogTlNQYXN0ZWJvYXJkU1BJLmggaW4gSGVhZGVy
cyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NnL0NvcmVHcmFw
aGljc1NQSS5oIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY2cvQ29yZUdyYXBoaWNzU1BJ
LmgKaW5kZXggN2MyOTFjOTE0ZDY5ZjU2ZDg2ZGJiNGE4ODFmYjIzMTg5YzVhNWE1Yy4uODg3MzVk
NjRiZWRhYTI4MjI3Mjk4NjQ0NmNmNDE5MWNhMDIwNDhjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvUEFML3BhbC9zcGkvY2cvQ29yZUdyYXBoaWNzU1BJLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvUEFML3BhbC9zcGkvY2cvQ29yZUdyYXBoaWNzU1BJLmgKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTEzNywyMSArMTM3LDc0IEBAIHN0
YXRpYyBpbmxpbmUgQ0dGbG9hdCBDR0Zsb2F0TWluKENHRmxvYXQgYSwgQ0dGbG9hdCBiKSB7IHJl
dHVybiBpc25hbihhKSA/IGIgOiAoCiAKIHR5cGVkZWYgc3RydWN0IENHRm9udENhY2hlIENHRm9u
dENhY2hlOwogCi0jaWYgUExBVEZPUk0oTUFDKQotdHlwZWRlZiB1aW50MzJfdCBDR1NDb25uZWN0
aW9uSUQ7Ci10eXBlZGVmIHVpbnQzMl90IENHU1dpbmRvd0lEOwotdHlwZWRlZiB1aW50MzJfdCBD
R1NXaW5kb3dDb3VudDsKLXR5cGVkZWYgQ0dTV2luZG93SUQgKkNHU1dpbmRvd0lETGlzdDsKKyNp
ZiBQTEFURk9STShDT0NPQSkKIAogZW51bSB7CiAgICAga0NHU1dpbmRvd0NhcHR1cmVOb21pbmFs
UmVzb2x1dGlvbiA9IDB4MDIwMCwKICAgICBrQ0dTQ2FwdHVyZUlnbm9yZUdsb2JhbENsaXBTaGFw
ZSA9IDB4MDgwMCwKIH07CiB0eXBlZGVmIHVpbnQzMl90IENHU1dpbmRvd0NhcHR1cmVPcHRpb25z
OwotI2VuZGlmCisKK3R5cGVkZWYgQ0ZfRU5VTSAoaW50MzJfdCwgQ0dTdHlsZURyYXdPcmRlcmlu
ZykgeworICAgIGtDR1N0eWxlRHJhd09yZGVyaW5nU3R5bGVPbmx5ID0gMCwKKyAgICBrQ0dTdHls
ZURyYXdPcmRlcmluZ0JlbG93ID0gMSwKKyAgICBrQ0dTdHlsZURyYXdPcmRlcmluZ0Fib3ZlID0g
MiwKK307CisKK3R5cGVkZWYgQ0ZfRU5VTSAoaW50MzJfdCwgQ0dGb2N1c1JpbmdPcmRlcmluZykg
eworICAgIGtDR0ZvY3VzUmluZ09yZGVyaW5nTm9uZSA9IGtDR1N0eWxlRHJhd09yZGVyaW5nU3R5
bGVPbmx5LAorICAgIGtDR0ZvY3VzUmluZ09yZGVyaW5nQmVsb3cgPSBrQ0dTdHlsZURyYXdPcmRl
cmluZ0JlbG93LAorICAgIGtDR0ZvY3VzUmluZ09yZGVyaW5nQWJvdmUgPSBrQ0dTdHlsZURyYXdP
cmRlcmluZ0Fib3ZlLAorfTsKKwordHlwZWRlZiBDRl9FTlVNIChpbnQzMl90LCBDR0ZvY3VzUmlu
Z1RpbnQpIHsKKyAgICBrQ0dGb2N1c1JpbmdUaW50Qmx1ZSA9IDAsCisgICAga0NHRm9jdXNSaW5n
VGludEdyYXBoaXRlID0gMSwKK307CisKK3N0cnVjdCBDR0ZvY3VzUmluZ1N0eWxlIHsKKyAgICB1
bnNpZ25lZCBpbnQgdmVyc2lvbjsKKyAgICBDR0ZvY3VzUmluZ1RpbnQgdGludDsKKyAgICBDR0Zv
Y3VzUmluZ09yZGVyaW5nIG9yZGVyaW5nOworICAgIENHRmxvYXQgYWxwaGE7CisgICAgQ0dGbG9h
dCByYWRpdXM7CisgICAgQ0dGbG9hdCB0aHJlc2hvbGQ7CisgICAgQ0dSZWN0IGJvdW5kczsKKyAg
ICBpbnQgYWNjdW11bGF0ZTsKK307Cit0eXBlZGVmIHN0cnVjdCBDR0ZvY3VzUmluZ1N0eWxlIENH
Rm9jdXNSaW5nU3R5bGU7CisKK3R5cGVkZWYgQ0ZfRU5VTSh1aW50MzJfdCwgQ0dTTm90aWZpY2F0
aW9uVHlwZSkgeworICAgIGtDR1NGaXJzdENvbm5lY3Rpb25Ob3RpZmljYXRpb24gPSA5MDAsCisg
ICAga0NHU0ZpcnN0U2Vzc2lvbk5vdGlmaWNhdGlvbiA9IDE1MDAsCit9OworCitzdGF0aWMgY29u
c3QgQ0dTTm90aWZpY2F0aW9uVHlwZSBrQ0dTQ29ubmVjdGlvbldpbmRvd01vZGlmaWNhdGlvbnNT
dGFydGVkID0gKENHU05vdGlmaWNhdGlvblR5cGUpKGtDR1NGaXJzdENvbm5lY3Rpb25Ob3RpZmlj
YXRpb24gKyA2KTsKK3N0YXRpYyBjb25zdCBDR1NOb3RpZmljYXRpb25UeXBlIGtDR1NDb25uZWN0
aW9uV2luZG93TW9kaWZpY2F0aW9uc1N0b3BwZWQgPSAoQ0dTTm90aWZpY2F0aW9uVHlwZSkoa0NH
U0ZpcnN0Q29ubmVjdGlvbk5vdGlmaWNhdGlvbiArIDcpOworc3RhdGljIGNvbnN0IENHU05vdGlm
aWNhdGlvblR5cGUga0NHU2Vzc2lvbkNvbnNvbGVDb25uZWN0ID0ga0NHU0ZpcnN0U2Vzc2lvbk5v
dGlmaWNhdGlvbjsKK3N0YXRpYyBjb25zdCBDR1NOb3RpZmljYXRpb25UeXBlIGtDR1Nlc3Npb25D
b25zb2xlRGlzY29ubmVjdCA9IChDR1NOb3RpZmljYXRpb25UeXBlKShrQ0dTZXNzaW9uQ29uc29s
ZUNvbm5lY3QgKyAxKTsKKworI2VuZGlmIC8vIFBMQVRGT1JNKENPQ09BKQogCiAjZW5kaWYgLy8g
VVNFKEFQUExFX0lOVEVSTkFMX1NESykKIAorI2lmIFBMQVRGT1JNKENPQ09BKQordHlwZWRlZiB1
aW50MzJfdCBDR1NCeXRlQ291bnQ7Cit0eXBlZGVmIHVpbnQzMl90IENHU0Nvbm5lY3Rpb25JRDsK
K3R5cGVkZWYgdWludDMyX3QgQ0dTV2luZG93Q291bnQ7Cit0eXBlZGVmIHVpbnQzMl90IENHU1dp
bmRvd0lEOworCit0eXBlZGVmIENHU1dpbmRvd0lEKiBDR1NXaW5kb3dJRExpc3Q7Cit0eXBlZGVm
IHN0cnVjdCBDRl9CUklER0VEX1RZUEUoaWQpIENHU1JlZ2lvbk9iamVjdCogQ0dTUmVnaW9uT2Jq
OwordHlwZWRlZiBzdHJ1Y3QgQ0ZfQlJJREdFRF9UWVBFKGlkKSBDR1N0eWxlKiBDR1N0eWxlUmVm
OworCit0eXBlZGVmIHZvaWQqIENHU05vdGlmaWNhdGlvbkFyZzsKK3R5cGVkZWYgdm9pZCogQ0dT
Tm90aWZpY2F0aW9uRGF0YTsKKwordHlwZWRlZiB2b2lkICgqQ0dTTm90aWZ5Q29ubmVjdGlvblBy
b2NQdHIpKENHU05vdGlmaWNhdGlvblR5cGUsIHZvaWQqIGRhdGEsIHVpbnQzMl90IGRhdGFfbGVu
Z3RoLCB2b2lkKiBhcmcsIENHU0Nvbm5lY3Rpb25JRCk7Cit0eXBlZGVmIHZvaWQgKCpDR1NOb3Rp
ZnlQcm9jUHRyKShDR1NOb3RpZmljYXRpb25UeXBlLCB2b2lkKiBkYXRhLCB1aW50MzJfdCBkYXRh
X2xlbmd0aCwgdm9pZCogYXJnKTsKKyNlbmRpZgorCiBXVEZfRVhURVJOX0NfQkVHSU4KIAogQ0dD
b2xvclJlZiBDR0NvbG9yVHJhbnNmb3JtQ29udmVydENvbG9yKENHQ29sb3JUcmFuc2Zvcm1SZWYs
IENHQ29sb3JSZWYsIENHQ29sb3JSZW5kZXJpbmdJbnRlbnQpOwpAQCAtMTg2LDYgKzIzOSw4IEBA
IENHRGF0YVByb3ZpZGVyUmVmIENHUERGRG9jdW1lbnRHZXREYXRhUHJvdmlkZXIoQ0dQREZEb2N1
bWVudFJlZik7CiAKIENHRm9udEFudGlhbGlhc2luZ1N0eWxlIENHQ29udGV4dEdldEZvbnRBbnRp
YWxpYXNpbmdTdHlsZShDR0NvbnRleHRSZWYpOwogdm9pZCBDR0NvbnRleHRTZXRGb250QW50aWFs
aWFzaW5nU3R5bGUoQ0dDb250ZXh0UmVmLCBDR0ZvbnRBbnRpYWxpYXNpbmdTdHlsZSk7Citib29s
IENHQ29udGV4dERyYXdzV2l0aENvcnJlY3RTaGFkb3dPZmZzZXRzKENHQ29udGV4dFJlZik7CitD
R1BhdHRlcm5SZWYgQ0dQYXR0ZXJuQ3JlYXRlV2l0aEltYWdlMihDR0ltYWdlUmVmLCBDR0FmZmlu
ZVRyYW5zZm9ybSwgQ0dQYXR0ZXJuVGlsaW5nKTsKIAogI2lmIChQTEFURk9STShNQUMpICYmIF9f
TUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMjAwKSB8fCBQTEFURk9STShJT1Mp
CiBib29sIENHQ29sb3JTcGFjZVVzZXNFeHRlbmRlZFJhbmdlKENHQ29sb3JTcGFjZVJlZik7CkBA
IC0yMDMsMTAgKzI1OCwyMSBAQCBDR0NvbG9yU3BhY2VSZWYgQ0dJT1N1cmZhY2VDb250ZXh0R2V0
Q29sb3JTcGFjZShDR0NvbnRleHRSZWYpOwogI2VuZGlmCiAKICNpZiBQTEFURk9STShDT0NPQSkK
LUNHU1JlZ2lvbkVudW1lcmF0b3JPYmogQ0dTUmVnaW9uRW51bWVyYXRvcihDR1JlZ2lvblJlZik7
Ci1DR1JlY3QqIENHU05leHRSZWN0KGNvbnN0IENHU1JlZ2lvbkVudW1lcmF0b3JPYmopOwotQ0dF
cnJvciBDR1NSZWxlYXNlUmVnaW9uRW51bWVyYXRvcihjb25zdCBDR1NSZWdpb25FbnVtZXJhdG9y
T2JqKTsKIENHQ29sb3JTcGFjZVJlZiBDR0NvbnRleHRDb3B5RGV2aWNlQ29sb3JTcGFjZShDR0Nv
bnRleHRSZWYpOworQ0dFcnJvciBDR1NOZXdSZWdpb25XaXRoUmVjdChjb25zdCBDR1JlY3QqLCBD
R1JlZ2lvblJlZiopOworQ0dFcnJvciBDR1NQYWNrYWdlc0VuYWJsZUNvbm5lY3Rpb25PY2NsdXNp
b25Ob3RpZmljYXRpb25zKENHU0Nvbm5lY3Rpb25JRCwgYm9vbCBmbGFnLCBib29sKiBvdXRDdXJy
ZW50VmlzaWJpbGl0eVN0YXRlKTsKK0NHRXJyb3IgQ0dTUGFja2FnZXNFbmFibGVDb25uZWN0aW9u
V2luZG93TW9kaWZpY2F0aW9uTm90aWZpY2F0aW9ucyhDR1NDb25uZWN0aW9uSUQsIGJvb2wgZmxh
ZywgYm9vbCogb3V0Q29ubmVjdGlvbklzQ3VycmVudGx5SWRsZSk7CitDR0Vycm9yIENHU1JlZ2lz
dGVyQ29ubmVjdGlvbk5vdGlmeVByb2MoQ0dTQ29ubmVjdGlvbklELCBDR1NOb3RpZnlDb25uZWN0
aW9uUHJvY1B0ciwgQ0dTTm90aWZpY2F0aW9uVHlwZSwgdm9pZCogYXJnKTsKK0NHRXJyb3IgQ0dT
UmVnaXN0ZXJOb3RpZnlQcm9jKENHU05vdGlmeVByb2NQdHIsIENHU05vdGlmaWNhdGlvblR5cGUs
IHZvaWQqIGFyZyk7CitDR0Vycm9yIENHU1JlbGVhc2VSZWdpb24oY29uc3QgQ0dSZWdpb25SZWYg
Q0ZfUkVMRUFTRVNfQVJHVU1FTlQpOworQ0dFcnJvciBDR1NSZWxlYXNlUmVnaW9uRW51bWVyYXRv
cihjb25zdCBDR1NSZWdpb25FbnVtZXJhdG9yT2JqKTsKK0NHRXJyb3IgQ0dTU2V0V2luZG93QWxw
aGEoQ0dTQ29ubmVjdGlvbklELCBDR1NXaW5kb3dJRCwgZmxvYXQgYWxwaGEpOworQ0dFcnJvciBD
R1NTZXRXaW5kb3dDbGlwU2hhcGUoQ0dTQ29ubmVjdGlvbklELCBDR1NXaW5kb3dJRCwgQ0dSZWdp
b25SZWYgc2hhcGUpOworQ0dFcnJvciBDR1NTZXRXaW5kb3dXYXJwKENHU0Nvbm5lY3Rpb25JRCwg
Q0dTV2luZG93SUQsIGludCB3LCBpbnQgaCwgY29uc3QgZmxvYXQqIG1lc2gpOworQ0dSZWN0KiBD
R1NOZXh0UmVjdChjb25zdCBDR1NSZWdpb25FbnVtZXJhdG9yT2JqKTsKK0NHU1JlZ2lvbkVudW1l
cmF0b3JPYmogQ0dTUmVnaW9uRW51bWVyYXRvcihDR1JlZ2lvblJlZik7CitDR1N0eWxlUmVmIENH
U3R5bGVDcmVhdGVGb2N1c1JpbmdXaXRoQ29sb3IoY29uc3QgQ0dGb2N1c1JpbmdTdHlsZSosIENH
Q29sb3JSZWYpOwordm9pZCBDR0NvbnRleHRTZXRTdHlsZShDR0NvbnRleHRSZWYsIENHU3R5bGVS
ZWYpOwogI2VuZGlmCiAKICNpZiBQTEFURk9STShXSU4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9QQUwvcGFsL3NwaS9tYWMvSElTZXJ2aWNlc1NQSS5oIGIvU291cmNlL1dlYkNvcmUvUEFM
L3BhbC9zcGkvbWFjL0hJU2VydmljZXNTUEkuaAppbmRleCA5ZjM1ZGNkNGQwM2E1N2EwODZiMGEz
NjVkZmIzOWRkZmZjYzgxOTg1Li5hMzU1Yjk0ZmU2MzA5MmVmNWFjZDBiNWM5NWUwM2RkNDZlOTUz
ODE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9tYWMvSElTZXJ2aWNl
c1NQSS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL21hYy9ISVNlcnZpY2VzU1BJ
LmgKQEAgLTI4LDIxICsyOCw0NSBAQAogI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCiAKICNp
bmNsdWRlIDxISVNlcnZpY2VzL0FYVGV4dE1hcmtlci5oPgorI2luY2x1ZGUgPEhJU2VydmljZXMv
Q29yZURyYWcuaD4KKworI2Vsc2UKKworZW51bSB7CisgICAga0NvcmVEcmFnSW1hZ2VTcGVjVmVy
c2lvbk9uZSA9IDEsCit9OworCitzdHJ1Y3QgQ29yZURyYWdJbWFnZVNwZWMgeworICAgIFVJbnQz
MiB2ZXJzaW9uOworICAgIFNJbnQzMiBwaXhlbHNXaWRlOworICAgIFNJbnQzMiBwaXhlbHNIaWdo
OworICAgIFNJbnQzMiBiaXRzUGVyU2FtcGxlOworICAgIFNJbnQzMiBzYW1wbGVzUGVyUGl4ZWw7
CisgICAgU0ludDMyIGJpdHNQZXJQaXhlbDsKKyAgICBTSW50MzIgYnl0ZXNQZXJSb3c7CisgICAg
Qm9vbGVhbiBpc1BsYW5hcjsKKyAgICBCb29sZWFuIGhhc0FscGhhOworICAgIGNvbnN0IFVJbnQ4
KiBkYXRhWzVdOworfTsKIAogI2VuZGlmCiAKLXR5cGVkZWYgY29uc3Qgc3RydWN0IF9fQVhUZXh0
TWFya2VyICpBWFRleHRNYXJrZXJSZWY7Ci10eXBlZGVmIGNvbnN0IHN0cnVjdCBfX0FYVGV4dE1h
cmtlclJhbmdlICpBWFRleHRNYXJrZXJSYW5nZVJlZjsKK3R5cGVkZWYgY29uc3Qgc3RydWN0IF9f
QVhUZXh0TWFya2VyKiBBWFRleHRNYXJrZXJSZWY7Cit0eXBlZGVmIGNvbnN0IHN0cnVjdCBfX0FY
VGV4dE1hcmtlclJhbmdlKiBBWFRleHRNYXJrZXJSYW5nZVJlZjsKK3R5cGVkZWYgc3RydWN0IENv
cmVEcmFnSW1hZ2VTcGVjIENvcmVEcmFnSW1hZ2VTcGVjOwordHlwZWRlZiBzdHJ1Y3QgT3BhcXVl
Q29yZURyYWcqIENvcmVEcmFnUmVmOwogCiBXVEZfRVhURVJOX0NfQkVHSU4KIAotQ0ZUeXBlSUQg
QVhUZXh0TWFya2VyR2V0VHlwZUlEKCk7Ci1DRlR5cGVJRCBBWFRleHRNYXJrZXJSYW5nZUdldFR5
cGVJRCgpOwotQVhUZXh0TWFya2VyUmVmIEFYVGV4dE1hcmtlckNyZWF0ZShDRkFsbG9jYXRvclJl
ZiwgY29uc3QgVUludDgqIGJ5dGVzLCBDRkluZGV4IGxlbmd0aCk7Ci1DRkluZGV4IEFYVGV4dE1h
cmtlckdldExlbmd0aChBWFRleHRNYXJrZXJSZWYpOwotY29uc3QgVUludDgqIEFYVGV4dE1hcmtl
ckdldEJ5dGVQdHIoQVhUZXh0TWFya2VyUmVmKTsKIEFYVGV4dE1hcmtlclJhbmdlUmVmIEFYVGV4
dE1hcmtlclJhbmdlQ3JlYXRlKENGQWxsb2NhdG9yUmVmLCBBWFRleHRNYXJrZXJSZWYgc3RhcnRN
YXJrZXIsIEFYVGV4dE1hcmtlclJlZiBlbmRNYXJrZXIpOworQVhUZXh0TWFya2VyUmVmIEFYVGV4
dE1hcmtlckNyZWF0ZShDRkFsbG9jYXRvclJlZiwgY29uc3QgVUludDgqIGJ5dGVzLCBDRkluZGV4
IGxlbmd0aCk7CiBBWFRleHRNYXJrZXJSZWYgQVhUZXh0TWFya2VyUmFuZ2VDb3B5U3RhcnRNYXJr
ZXIoQVhUZXh0TWFya2VyUmFuZ2VSZWYpOwogQVhUZXh0TWFya2VyUmVmIEFYVGV4dE1hcmtlclJh
bmdlQ29weUVuZE1hcmtlcihBWFRleHRNYXJrZXJSYW5nZVJlZik7CitDRkluZGV4IEFYVGV4dE1h
cmtlckdldExlbmd0aChBWFRleHRNYXJrZXJSZWYpOworQ0ZUeXBlSUQgQVhUZXh0TWFya2VyR2V0
VHlwZUlEKCk7CitDRlR5cGVJRCBBWFRleHRNYXJrZXJSYW5nZUdldFR5cGVJRCgpOworQ29yZURy
YWdSZWYgQ29yZURyYWdHZXRDdXJyZW50RHJhZygpOworT1NTdGF0dXMgQ29yZURyYWdTZXRJbWFn
ZShDb3JlRHJhZ1JlZiwgQ0dQb2ludCBpbWFnZU9mZnNldCwgQ29yZURyYWdJbWFnZVNwZWMqLCBD
R1NSZWdpb25PYmogaW1hZ2VTaGFwZSwgZmxvYXQgb3ZlcmFsbEFscGhhKTsKK2NvbnN0IFVJbnQ4
KiBBWFRleHRNYXJrZXJHZXRCeXRlUHRyKEFYVGV4dE1hcmtlclJlZik7CiAKIFdURl9FWFRFUk5f
Q19FTkQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL21hYy9OU0dyYXBo
aWNzU1BJLmggYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9tYWMvTlNHcmFwaGljc1NQSS5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjM3MTA0NmY4NzAyYWQzZjJhODE4NTViOWE5NGFlMmM2YTJhMGI4ZTkKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9tYWMvTlNHcmFwaGlj
c1NQSS5oCkBAIC0wLDAgKzEsNTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lm
IFBMQVRGT1JNKE1BQykKKworI2ltcG9ydCA8QXBwS2l0L0FwcEtpdC5oPgorCisjaWYgVVNFKEFQ
UExFX0lOVEVSTkFMX1NESykKKworI2ltcG9ydCA8QXBwS2l0L05TR3JhcGhpY3NDb250ZXh0UHJp
dmF0ZS5oPgorI2ltcG9ydCA8QXBwS2l0L05TR3JhcGhpY3NfUHJpdmF0ZS5oPgorCisjZWxzZQor
CisjaW1wb3J0IDxwYWwvc3BpL2NnL0NvcmVHcmFwaGljc1NQSS5oPgorCitAaW50ZXJmYWNlIE5T
Q0dTQ29udGV4dCA6IE5TR3JhcGhpY3NDb250ZXh0IHsKKyAgICBDR0NvbnRleHRSZWYgX2Nnc0Nv
bnRleHQ7Cit9CitAZW5kCisKK0BpbnRlcmZhY2UgTlNXaW5kb3dHcmFwaGljc0NvbnRleHQgOiBO
U0NHU0NvbnRleHQgeworICAgIENHU1dpbmRvd0lEIF9jZ3NXaW5kb3dJRDsKK30KK0BlbmQKKwor
I2VuZGlmCisKK1dURl9FWFRFUk5fQ19CRUdJTgorCitCT09MIE5TSW5pdGlhbGl6ZUNHRm9jdXNS
aW5nU3R5bGVGb3JUaW1lKE5TRm9jdXNSaW5nUGxhY2VtZW50LCBDR0ZvY3VzUmluZ1N0eWxlKiwg
TlNUaW1lSW50ZXJ2YWwpOworCitXVEZfRVhURVJOX0NfRU5ECisKKyNlbmRpZiAvLyBQTEFURk9S
TShNQUMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
Q29udGV4dC5oCmluZGV4IDE4YWNkZGJlN2VmZmZhNDI5ZDE4NTc4MzlhYjZlNjY3NDY2YTNkODUu
LmI4MjQ0YTk2NzFmZDNlNmMzZTczMWYzYTU3MWQzYmVkMzExODQzNWMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwMy0yMDE2IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwMy0yMDE3IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAwOC0yMDA5IFRvcmNoIE1vYmls
ZSwgSW5jLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtNDQ1LDYgKzQ0NSw3IEBAIHB1YmxpYzoKICNp
ZiBQTEFURk9STShNQUMpCiAgICAgdm9pZCBkcmF3Rm9jdXNSaW5nKGNvbnN0IFBhdGgmLCBkb3Vi
bGUgdGltZU9mZnNldCwgYm9vbCYgbmVlZHNSZWRyYXcpOwogICAgIHZvaWQgZHJhd0ZvY3VzUmlu
Zyhjb25zdCBWZWN0b3I8RmxvYXRSZWN0PiYsIGRvdWJsZSB0aW1lT2Zmc2V0LCBib29sJiBuZWVk
c1JlZHJhdyk7CisgICAgc3RhdGljIENHQ29sb3JSZWYgZm9jdXNSaW5nQ29sb3IoKTsKICNlbmRp
ZgogCiAgICAgdm9pZCBzZXRMaW5lQ2FwKExpbmVDYXApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwCmluZGV4IDY2OTZjOTYwYTU4NzVmMDQz
MTcyOWIxMTlhYjZiMjQxMjdkN2E1Y2EuLjdiMzQ5Mzg3YmViNjBjOGU4NjE0MTk0MTdiZmZmYzhm
YzMxZTI3MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZVNvdXJjZS5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA2LCAy
MDEwLCAyMDExLCAyMDEyLCAyMDE0LCAyMDE2IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDcgQWxwIFRva2VyIDxhbHAudG9rZXJAY29sbGFi
b3JhLmNvLnVrPgogICogQ29weXJpZ2h0IChDKSAyMDA4LCBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDA3LTIwMDkgVG9yY2ggTW9iaWxlLCBJbmMK
QEAgLTE4NCw3ICsxODQsNyBAQCBTdWJzYW1wbGluZ0xldmVsIEltYWdlU291cmNlOjpzdWJzYW1w
bGluZ0xldmVsRm9yU2NhbGVGYWN0b3IoR3JhcGhpY3NDb250ZXh0JiBjbwogewogI2lmIFVTRShD
RykKICAgICAvLyBOZXZlciB1c2Ugc3Vic2FtcGxlZCBpbWFnZXMgZm9yIGRyYXdpbmcgaW50byBQ
REYgY29udGV4dHMuCi0gICAgaWYgKHdrQ0dDb250ZXh0SXNQREZDb250ZXh0KGNvbnRleHQucGxh
dGZvcm1Db250ZXh0KCkpKQorICAgIGlmIChDR0NvbnRleHRHZXRUeXBlKGNvbnRleHQucGxhdGZv
cm1Db250ZXh0KCkpID09IGtDR0NvbnRleHRUeXBlUERGKQogICAgICAgICByZXR1cm4gU3Vic2Ft
cGxpbmdMZXZlbDo6RGVmYXVsdDsKIAogICAgIGZsb2F0IHNjYWxlID0gc3RkOjptaW4oZmxvYXQo
MSksIHN0ZDo6bWF4KHNjYWxlRmFjdG9yLndpZHRoKCksIHNjYWxlRmFjdG9yLmhlaWdodCgpKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGlj
c0NvbnRleHRDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFw
aGljc0NvbnRleHRDRy5jcHAKaW5kZXggZDU4ODM5YWU1OGJiNTEwZDUwN2Q0NjViMDYxOTJlMDIw
YmFkNWFiZC4uNzhkZjJiMzQyMDAyMGI0ZjkyMGUwMTUzODZmYzcxNzFjM2VmNzFlYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0
Q0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNz
Q29udGV4dENHLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDMs
IDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAsIDIwMTEsIDIwMTIsIDIw
MTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDAz
LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAy
MDA4IEVyaWMgU2VpZGVsIDxlcmljQHdlYmtpdC5vcmc+CiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC05
ODcsNyArOTg3LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmNsaXBPdXQoY29uc3QgRmxvYXRS
ZWN0JiByZWN0KQogICAgIC8vIGhhcyBjZXJ0YWluIHRyYW5zZm9ybXMgdGhhdCBhcmVuJ3QganVz
dCBhIHRyYW5zbGF0aW9uIG9yIGEgc2NhbGUuIEFuZCBkdWUgdG8gPHJkYXI6Ly9wcm9ibGVtLzE0
NjM0NDUzPgogICAgIC8vIHdlIGNhbm5vdCB1c2UgaXQgaW4gZm9yIGEgcHJpbnRpbmcgY29udGV4
dCBlaXRoZXIuCiAgICAgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBjdG0gPSBnZXRDVE0oKTsKLSAg
ICBib29sIGNhblVzZUNHUmVjdEluZmluaXRlID0gIXdrQ0dDb250ZXh0SXNQREZDb250ZXh0KHBs
YXRmb3JtQ29udGV4dCgpKSAmJiAoIWlzQWNjZWxlcmF0ZWRDb250ZXh0KCkgfHwgKCFjdG0uYigp
ICYmICFjdG0uYygpKSk7CisgICAgYm9vbCBjYW5Vc2VDR1JlY3RJbmZpbml0ZSA9IENHQ29udGV4
dEdldFR5cGUocGxhdGZvcm1Db250ZXh0KCkpICE9IGtDR0NvbnRleHRUeXBlUERGICYmICghaXNB
Y2NlbGVyYXRlZENvbnRleHQoKSB8fCAoIWN0bS5iKCkgJiYgIWN0bS5jKCkpKTsKICAgICBDR1Jl
Y3QgcmVjdHNbMl0gPSB7IGNhblVzZUNHUmVjdEluZmluaXRlID8gQ0dSZWN0SW5maW5pdGUgOiBD
R0NvbnRleHRHZXRDbGlwQm91bmRpbmdCb3gocGxhdGZvcm1Db250ZXh0KCkpLCByZWN0IH07CiAg
ICAgQ0dDb250ZXh0QmVnaW5QYXRoKHBsYXRmb3JtQ29udGV4dCgpKTsKICAgICBDR0NvbnRleHRB
ZGRSZWN0cyhwbGF0Zm9ybUNvbnRleHQoKSwgcmVjdHMsIDIpOwpAQCAtMTA4NSw3ICsxMDg1LDcg
QEAgYm9vbCBHcmFwaGljc0NvbnRleHQ6OnN1cHBvcnRzVHJhbnNwYXJlbmN5TGF5ZXJzKCkKIAog
c3RhdGljIHZvaWQgYXBwbHlTaGFkb3dPZmZzZXRXb3JrYXJvdW5kSWZOZWVkZWQoY29uc3QgR3Jh
cGhpY3NDb250ZXh0JiBjb250ZXh0LCBDR0Zsb2F0JiB4T2Zmc2V0LCBDR0Zsb2F0JiB5T2Zmc2V0
KQogewotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1MpIHx8IFBMQVRGT1JNKFdJ
TikKICAgICBVTlVTRURfUEFSQU0oY29udGV4dCk7CiAgICAgVU5VU0VEX1BBUkFNKHhPZmZzZXQp
OwogICAgIFVOVVNFRF9QQVJBTSh5T2Zmc2V0KTsKQEAgLTEwOTMsNyArMTA5Myw3IEBAIHN0YXRp
YyB2b2lkIGFwcGx5U2hhZG93T2Zmc2V0V29ya2Fyb3VuZElmTmVlZGVkKGNvbnN0IEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCwKICAgICBpZiAoY29udGV4dC5pc0FjY2VsZXJhdGVkQ29udGV4dCgp
KQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAod2tDR0NvbnRleHREcmF3c1dpdGhDb3JyZWN0
U2hhZG93T2Zmc2V0cyhjb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpKSkKKyAgICBpZiAoQ0dDb250
ZXh0RHJhd3NXaXRoQ29ycmVjdFNoYWRvd09mZnNldHMoY29udGV4dC5wbGF0Zm9ybUNvbnRleHQo
KSkpCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIFdvcmsgYXJvdW5kIDxyZGFyOi8vcHJvYmxl
bS81NTM5Mzg4PiBieSBlbnN1cmluZyB0aGF0IHRoZSBvZmZzZXRzIHdpbGwgZ2V0IHRydW5jYXRl
ZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGF0dGVy
bkNHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BhdHRlcm5DRy5j
cHAKaW5kZXggOThlNjlkZThlZDg5YTI0ZTg4NmExNDJhMDgzOTU5ZTJjNzIxMzVmMC4uOGU3OWRi
MDJhZmI1YWI5NWQ3MGFjNGNhZWIwZWNjMGExYWY0YmQ4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGF0dGVybkNHLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QYXR0ZXJuQ0cuY3BwCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAwNywgMjAwOCBBcHBsZSBJbmMuICBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2LTIwMTcgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDA4IEVyaWMgU2VpZGVsIDxlcmlj
QHdlYmtpdC5vcmc+CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC0zMSw4ICszMSw4IEBACiAKICNpbmNs
dWRlICJBZmZpbmVUcmFuc2Zvcm0uaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKLQog
I2luY2x1ZGUgPENvcmVHcmFwaGljcy9Db3JlR3JhcGhpY3MuaD4KKyNpbmNsdWRlIDxwYWwvc3Bp
L2NnL0NvcmVHcmFwaGljc1NQSS5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAKICNp
ZiBQTEFURk9STShDT0NPQSkKQEAgLTc0LDcgKzc0LDcgQEAgQ0dQYXR0ZXJuUmVmIFBhdHRlcm46
OmNyZWF0ZVBsYXRmb3JtUGF0dGVybihjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHVzZXJTcGFjZVRy
YW4KICAgICAvLyBJZiB3ZSdyZSByZXBlYXRpbmcgaW4gYm90aCBkaXJlY3Rpb25zLCB3ZSBjYW4g
dXNlIGltYWdlLWJhY2tlZCBwYXR0ZXJucwogICAgIC8vIGluc3RlYWQgb2YgY3VzdG9tIHBhdHRl
cm5zLCBhbmQgYXZvaWQgdGlsaW5nLWVkZ2UgcGl4ZWwgY3JhY2tzLgogICAgIGlmIChtX3JlcGVh
dFggJiYgbV9yZXBlYXRZKQotICAgICAgICByZXR1cm4gd2tDR1BhdHRlcm5DcmVhdGVXaXRoSW1h
Z2VBbmRUcmFuc2Zvcm0odGlsZUltYWdlKCkubmF0aXZlSW1hZ2UoKS5nZXQoKSwgcGF0dGVyblRy
YW5zZm9ybSwgd2tQYXR0ZXJuVGlsaW5nQ29uc3RhbnRTcGFjaW5nKTsKKyAgICAgICAgcmV0dXJu
IENHUGF0dGVybkNyZWF0ZVdpdGhJbWFnZTIodGlsZUltYWdlKCkubmF0aXZlSW1hZ2UoKS5nZXQo
KSwgcGF0dGVyblRyYW5zZm9ybSwga0NHUGF0dGVyblRpbGluZ0NvbnN0YW50U3BhY2luZyk7CiAK
ICAgICAvLyBJZiBGTFRfTUFYIHNob3VsZCBhbHNvIGJlIHVzZWQgZm9yIHhTdGVwIG9yIHlTdGVw
LCBub3RoaW5nIGlzIHJlbmRlcmVkLiBVc2luZyBmcmFjdGlvbnMgb2YgRkxUX01BWCBhbHNvCiAg
ICAgLy8gcmVzdWx0IGluIG5vdGhpbmcgYmVpbmcgcmVuZGVyZWQuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRDb2NvYS5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4
dENvY29hLm1tCmluZGV4IDY3ZjRkZWIxNzJiNmMwZmUyM2MxYjFkMWZiMDllYWI4YWRhZTEzMWIu
LmVhNDEwMjY5YTY1YTdjZDM5ODNiZjU3YzViZGNmNjkxY2ZjYzE2OWMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dENvY29h
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNz
Q29udGV4dENvY29hLm1tCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAw
MywgMjAwNCwgMjAwNSwgMjAwNiwgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDMtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI5LDEwICsyOSwxMyBAQAog
I2ltcG9ydCAiR3JhcGhpY3NDb250ZXh0Q0cuaCIKICNpbXBvcnQgIkdyYXBoaWNzQ29udGV4dFBs
YXRmb3JtUHJpdmF0ZUNHLmgiCiAjaW1wb3J0ICJJbnRSZWN0LmgiCisjaW1wb3J0IDxwYWwvc3Bp
L2NnL0NvcmVHcmFwaGljc1NQSS5oPgorI2ltcG9ydCA8cGFsL3NwaS9tYWMvTlNHcmFwaGljc1NQ
SS5oPgorI2ltcG9ydCA8d3RmL1N0ZExpYkV4dHJhcy5oPgorCiAjaWYgVVNFKEFQUEtJVCkKICNp
bXBvcnQgPEFwcEtpdC9BcHBLaXQuaD4KICNlbmRpZgotI2ltcG9ydCA8d3RmL1N0ZExpYkV4dHJh
cy5oPgogCiAjaWYgUExBVEZPUk0oSU9TKQogI2ltcG9ydCAiQ29sb3IuaCIKQEAgLTQzLDcgKzQ2
LDYgQEAKICNpZiAhUExBVEZPUk0oSU9TKQogI2ltcG9ydCAiTG9jYWxDdXJyZW50R3JhcGhpY3ND
b250ZXh0LmgiCiAjZW5kaWYKLSNpbXBvcnQgIldlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaCIKIAog
QGNsYXNzIE5TQ29sb3I7CiAKQEAgLTU3LDExICs1OSw0OCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAvLyBleGNlcHRpb25zIGZvciB0aG9zZS4KIAogI2lmICFQTEFURk9STShJT1MpCitDR0NvbG9y
UmVmIEdyYXBoaWNzQ29udGV4dDo6Zm9jdXNSaW5nQ29sb3IoKQoreworICAgIHN0YXRpYyBDR0Nv
bG9yUmVmIGNvbG9yOworICAgIGlmICghY29sb3IpIHsKKyAgICAgICAgQ0dGbG9hdCBjb2xvckNv
bXBvbmVudHNbXSA9IHsgMC41LCAwLjc1LCAxLjAsIDEuMCB9OworICAgICAgICBhdXRvIGNvbG9y
U3BhY2UgPSBhZG9wdENGKENHQ29sb3JTcGFjZUNyZWF0ZVdpdGhOYW1lKGtDR0NvbG9yU3BhY2VT
UkdCKSk7CisgICAgICAgIGNvbG9yID0gQ0dDb2xvckNyZWF0ZShjb2xvclNwYWNlLmdldCgpLCBj
b2xvckNvbXBvbmVudHMpOworICAgIH0KKworICAgIHJldHVybiBjb2xvcjsKK30KKworc3RhdGlj
IGJvb2wgZHJhd0ZvY3VzUmluZ0F0VGltZShDR0NvbnRleHRSZWYgY29udGV4dCwgTlNUaW1lSW50
ZXJ2YWwgdGltZU9mZnNldCkKK3sKKyAgICBDR0ZvY3VzUmluZ1N0eWxlIGZvY3VzUmluZ1N0eWxl
OworICAgIEJPT0wgbmVlZHNSZXBhaW50ID0gTlNJbml0aWFsaXplQ0dGb2N1c1JpbmdTdHlsZUZv
clRpbWUoTlNGb2N1c1JpbmdPbmx5LCAmZm9jdXNSaW5nU3R5bGUsIHRpbWVPZmZzZXQpOworCisg
ICAgLy8gV2Ugd2FudCB0byByZXNwZWN0IHRoZSBDR0NvbnRleHQgY2xpcHBpbmcgYW5kIGFsc28g
bm90IG92ZXJwYWludCBhbnkKKyAgICAvLyBleGlzdGluZyBmb2N1cyByaW5nLiBUaGUgd2F5IHRv
IGRvIHRoaXMgaXMgc2V0IGFjY3VtdWxhdGUgdG8KKyAgICAvLyAtMS4gQWNjb3JkaW5nIHRvIENv
cmVHcmFwaGljcywgdGhlIHJlYXNvbmluZyBmb3IgdGhpcyBiZWhhdmlvciBoYXMgYmVlbgorICAg
IC8vIGxvc3QgaW4gdGltZS4KKyAgICBmb2N1c1JpbmdTdHlsZS5hY2N1bXVsYXRlID0gLTE7Cisg
ICAgYXV0byBzdHlsZSA9IGFkb3B0Q0YoQ0dTdHlsZUNyZWF0ZUZvY3VzUmluZ1dpdGhDb2xvcigm
Zm9jdXNSaW5nU3R5bGUsIEdyYXBoaWNzQ29udGV4dDo6Zm9jdXNSaW5nQ29sb3IoKSkpOworCisg
ICAgQ0dDb250ZXh0U2F2ZUdTdGF0ZShjb250ZXh0KTsKKyAgICBDR0NvbnRleHRTZXRTdHlsZShj
b250ZXh0LCBzdHlsZS5nZXQoKSk7CisgICAgQ0dDb250ZXh0RmlsbFBhdGgoY29udGV4dCk7Cisg
ICAgQ0dDb250ZXh0UmVzdG9yZUdTdGF0ZShjb250ZXh0KTsKKworICAgIHJldHVybiBuZWVkc1Jl
cGFpbnQ7Cit9CisKK3N0YXRpYyB2b2lkIGRyYXdGb2N1c1JpbmcoQ0dDb250ZXh0UmVmIGNvbnRl
eHQpCit7CisgICAgZHJhd0ZvY3VzUmluZ0F0VGltZShjb250ZXh0LCBzdGQ6Om51bWVyaWNfbGlt
aXRzPGRvdWJsZT46Om1heCgpKTsKK30KKwogc3RhdGljIHZvaWQgZHJhd0ZvY3VzUmluZ1RvQ29u
dGV4dChDR0NvbnRleHRSZWYgY29udGV4dCwgQ0dQYXRoUmVmIGZvY3VzUmluZ1BhdGgpCiB7CiAg
ICAgQ0dDb250ZXh0QmVnaW5QYXRoKGNvbnRleHQpOwogICAgIENHQ29udGV4dEFkZFBhdGgoY29u
dGV4dCwgZm9jdXNSaW5nUGF0aCk7Ci0gICAgd2tEcmF3Rm9jdXNSaW5nKGNvbnRleHQsIG51bGxw
dHIsIDApOworICAgIGRyYXdGb2N1c1JpbmcoY29udGV4dCk7CiB9CiAKIHN0YXRpYyBib29sIGRy
YXdGb2N1c1JpbmdUb0NvbnRleHRBdFRpbWUoQ0dDb250ZXh0UmVmIGNvbnRleHQsIENHUGF0aFJl
ZiBmb2N1c1JpbmdQYXRoLCBkb3VibGUgdGltZU9mZnNldCkKQEAgLTY5LDcgKzEwOCw3IEBAIHN0
YXRpYyBib29sIGRyYXdGb2N1c1JpbmdUb0NvbnRleHRBdFRpbWUoQ0dDb250ZXh0UmVmIGNvbnRl
eHQsIENHUGF0aFJlZiBmb2N1c1JpCiAgICAgVU5VU0VEX1BBUkFNKHRpbWVPZmZzZXQpOwogICAg
IENHQ29udGV4dEJlZ2luUGF0aChjb250ZXh0KTsKICAgICBDR0NvbnRleHRBZGRQYXRoKGNvbnRl
eHQsIGZvY3VzUmluZ1BhdGgpOwotICAgIHJldHVybiB3a0RyYXdGb2N1c1JpbmdBdFRpbWUoY29u
dGV4dCwgc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjptYXgoKSk7CisgICAgcmV0dXJuIGRy
YXdGb2N1c1JpbmdBdFRpbWUoY29udGV4dCwgc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+Ojpt
YXgoKSk7CiB9CiAjZW5kaWYgLy8gIVBMQVRGT1JNKElPUykKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2VJT1MubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViQ29yZVN5c3RlbUludGVyZmFjZUlPUy5tbQppbmRl
eCAwOWExODI4MTRkMTQwMTNiN2M4OGU4ZWViZjAzZDlhZTBjZmEyODY5Li5kNjk4NjAxNWU3OGIx
Y2EyMjJkN2I3NTk2NTExMjc1MzY5ZGU4M2ExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pb3MvV2ViQ29yZVN5c3RlbUludGVyZmFjZUlPUy5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pb3MvV2ViQ29yZVN5c3RlbUludGVyZmFjZUlPUy5tbQpAQCAtMSw1ICsx
LDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgMjAwNiwgMjAwNywgMjAwOCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgMjAwNi0yMDE3IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjcsMTAg
KzI3LDggQEAKICNpbXBvcnQgIldlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaCIKIAogV0VCQ09SRV9F
WFBPUlQgdm9pZCAoKndrQ0FMYXllckVudW1lcmF0ZVJlY3RzQmVpbmdEcmF3bldpdGhCbG9jayko
Q0FMYXllciAqLCBDR0NvbnRleHRSZWYgY29udGV4dCwgdm9pZCAoXmJsb2NrKShDR1JlY3QgcmVj
dCkpOwotV0VCQ09SRV9FWFBPUlQgQ0dQYXR0ZXJuUmVmICgqd2tDR1BhdHRlcm5DcmVhdGVXaXRo
SW1hZ2VBbmRUcmFuc2Zvcm0pKENHSW1hZ2VSZWYsIENHQWZmaW5lVHJhbnNmb3JtLCBpbnQpOwog
V0VCQ09SRV9FWFBPUlQgdm9pZCAoKndrQ2xlYXJHbHlwaFZlY3Rvcikodm9pZCogZ2x5cGhzKTsK
IFdFQkNPUkVfRVhQT1JUIE9TU3RhdHVzICgqd2tDb252ZXJ0Q2hhclRvR2x5cGhzKSh2b2lkKiBz
dHlsZUdyb3VwLCBjb25zdCBVbmlDaGFyKiwgdW5zaWduZWQgbnVtQ2hhcmFjdGVycywgdm9pZCog
Z2x5cGhzKTsKLVdFQkNPUkVfRVhQT1JUIGJvb2wgKCp3a0NHQ29udGV4dElzUERGQ29udGV4dCko
Q0dDb250ZXh0UmVmKTsKIFdFQkNPUkVfRVhQT1JUIGlkICgqd2tDcmVhdGVOU1VSTENvbm5lY3Rp
b25EZWxlZ2F0ZVByb3h5KSh2b2lkKTsKIFdFQkNPUkVfRVhQT1JUIHZvaWQgKCp3a1NldENPTk5F
Q1RQcm94eUZvclN0cmVhbSkoQ0ZSZWFkU3RyZWFtUmVmLCBDRlN0cmluZ1JlZiBwcm94eUhvc3Qs
IENGTnVtYmVyUmVmIHByb3h5UG9ydCk7CiBXRUJDT1JFX0VYUE9SVCB2b2lkICgqd2tTZXRDT05O
RUNUUHJveHlBdXRob3JpemF0aW9uRm9yU3RyZWFtKShDRlJlYWRTdHJlYW1SZWYsIENGU3RyaW5n
UmVmIHByb3h5QXV0aG9yaXphdGlvblN0cmluZyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21hYy9QYXN0ZWJvYXJkTWFjLm1tCmluZGV4IDIwZTYzNWMwOTA1YWU4OTZjN2JiNTQyMWM4NTZi
MjFiMmE0NDZiNDkuLmNkNjJhMmRjYmJjMTE5ODg1NjUyNDcwOWJlZDhkZmZlZDJkNTNmMjggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAxMyBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYtMjAxNyBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTUy
LDYgKzUyLDggQEAKICNpbXBvcnQgIldlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaCIKICNpbXBvcnQg
IldlYk5TQXR0cmlidXRlZFN0cmluZ0V4dHJhcy5oIgogI2ltcG9ydCAibWFya3VwLmgiCisjaW1w
b3J0IDxwYWwvc3BpL2NnL0NvcmVHcmFwaGljc1NQSS5oPgorI2ltcG9ydCA8cGFsL3NwaS9tYWMv
SElTZXJ2aWNlc1NQSS5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogI2ltcG9ydCA8d3Rm
L1N0ZExpYkV4dHJhcy5oPgogI2ltcG9ydCA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgpAQCAt
NjY5LDYgKzY3MSw4MCBAQCBWZWN0b3I8U3RyaW5nPiBQYXN0ZWJvYXJkOjpyZWFkRmlsZW5hbWVz
KCkKIH0KIAogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCitzdGF0aWMgdm9pZCBmbGlwSW1hZ2VT
cGVjKENvcmVEcmFnSW1hZ2VTcGVjKiBpbWFnZVNwZWMpCit7CisgICAgdW5zaWduZWQgY2hhciog
dGVtcFJvdyA9ICh1bnNpZ25lZCBjaGFyKilmYXN0TWFsbG9jKGltYWdlU3BlYy0+Ynl0ZXNQZXJS
b3cpOworICAgIGludCBwbGFuZXMgPSBpbWFnZVNwZWMtPmlzUGxhbmFyID8gaW1hZ2VTcGVjLT5z
YW1wbGVzUGVyUGl4ZWwgOiAxOworCisgICAgZm9yIChpbnQgcCA9IDA7IHAgPCBwbGFuZXM7ICsr
cCkgeworICAgICAgICB1bnNpZ25lZCBjaGFyKiB0b3BSb3cgPSAodW5zaWduZWQgY2hhciopaW1h
Z2VTcGVjLT5kYXRhW3BdOworICAgICAgICB1bnNpZ25lZCBjaGFyKiBib3RSb3cgPSB0b3BSb3cg
KyAoaW1hZ2VTcGVjLT5waXhlbHNIaWdoIC0gMSkgKiBpbWFnZVNwZWMtPmJ5dGVzUGVyUm93Owor
ICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGltYWdlU3BlYy0+cGl4ZWxzSGlnaCAvIDI7ICsr
aSwgdG9wUm93ICs9IGltYWdlU3BlYy0+Ynl0ZXNQZXJSb3csIGJvdFJvdyAtPSBpbWFnZVNwZWMt
PmJ5dGVzUGVyUm93KSB7CisgICAgICAgICAgICBiY29weSh0b3BSb3csIHRlbXBSb3csIGltYWdl
U3BlYy0+Ynl0ZXNQZXJSb3cpOworICAgICAgICAgICAgYmNvcHkoYm90Um93LCB0b3BSb3csIGlt
YWdlU3BlYy0+Ynl0ZXNQZXJSb3cpOworICAgICAgICAgICAgYmNvcHkodGVtcFJvdywgYm90Um93
LCBpbWFnZVNwZWMtPmJ5dGVzUGVyUm93KTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGZhc3RG
cmVlKHRlbXBSb3cpOworfQorCitzdGF0aWMgdm9pZCBzZXREcmFnSW1hZ2VJbXBsKE5TSW1hZ2Ug
KmltYWdlLCBOU1BvaW50IG9mZnNldCkKK3sKKyAgICBib29sIGZsaXBJbWFnZTsKKyAgICBOU1Np
emUgaW1hZ2VTaXplID0gaW1hZ2Uuc2l6ZTsKKyAgICBDR1JlY3QgaW1hZ2VSZWN0ID0gQ0dSZWN0
TWFrZSgwLCAwLCBpbWFnZVNpemUud2lkdGgsIGltYWdlU2l6ZS5oZWlnaHQpOworICAgIE5TSW1h
Z2VSZXAgKmltYWdlUmVwID0gW2ltYWdlIGJlc3RSZXByZXNlbnRhdGlvbkZvclJlY3Q6TlNSZWN0
RnJvbUNHUmVjdChpbWFnZVJlY3QpIGNvbnRleHQ6bmlsIGhpbnRzOm5pbF07CisgICAgUmV0YWlu
UHRyPE5TQml0bWFwSW1hZ2VSZXA+IGJpdG1hcEltYWdlOworICAgIGlmICghaW1hZ2VSZXAgfHwg
IVtpbWFnZVJlcCBpc0tpbmRPZkNsYXNzOltOU0JpdG1hcEltYWdlUmVwIGNsYXNzXV0gfHwgIU5T
RXF1YWxTaXplcyhpbWFnZVJlcC5zaXplLCBpbWFnZVNpemUpKSB7CisgICAgICAgIFtpbWFnZSBs
b2NrRm9jdXNdOworICAgICAgICBiaXRtYXBJbWFnZSA9IGFkb3B0TlMoW1tOU0JpdG1hcEltYWdl
UmVwIGFsbG9jXSBpbml0V2l0aEZvY3VzZWRWaWV3UmVjdDoqKE5TUmVjdCopJmltYWdlUmVjdF0p
OworICAgICAgICBbaW1hZ2UgdW5sb2NrRm9jdXNdOworICAgICAgICAKKyAgICAgICAgLy8gd2Ug
bWF5IGhhdmUgdG8gZmxpcCB0aGUgYml0cyB3ZSBqdXN0IHJlYWQgaWYgdGhlIGltYWdlIHdhcyBm
bGlwcGVkIHNpbmNlIGl0IG1lYW5zIHRoZSBjYWNoZSB3YXMgYWxzbworICAgICAgICAvLyBhbmQg
Q29yZURyYWdTZXRJbWFnZSBjYW4ndCB0YWtlIGEgdHJhbnNmb3JtIGZvciByZW5kZXJpbmcuCisj
cHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcHVzaAorI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIGln
bm9yZWQgIi1XZGVwcmVjYXRlZC1kZWNsYXJhdGlvbnMiCisgICAgICAgIGZsaXBJbWFnZSA9IGlt
YWdlLmlzRmxpcHBlZDsKKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwb3AKKyAgICB9IGVsc2Ug
eworICAgICAgICBmbGlwSW1hZ2UgPSBmYWxzZTsKKyAgICAgICAgYml0bWFwSW1hZ2UgPSAoTlNC
aXRtYXBJbWFnZVJlcCAqKWltYWdlUmVwOworICAgIH0KKyAgICBBU1NFUlQoYml0bWFwSW1hZ2Up
OworCisgICAgQ29yZURyYWdJbWFnZVNwZWMgaW1hZ2VTcGVjOworICAgIGltYWdlU3BlYy52ZXJz
aW9uID0ga0NvcmVEcmFnSW1hZ2VTcGVjVmVyc2lvbk9uZTsKKyAgICBpbWFnZVNwZWMucGl4ZWxz
V2lkZSA9IFtiaXRtYXBJbWFnZSBwaXhlbHNXaWRlXTsKKyAgICBpbWFnZVNwZWMucGl4ZWxzSGln
aCA9IFtiaXRtYXBJbWFnZSBwaXhlbHNIaWdoXTsKKyAgICBpbWFnZVNwZWMuYml0c1BlclNhbXBs
ZSA9IFtiaXRtYXBJbWFnZSBiaXRzUGVyU2FtcGxlXTsKKyAgICBpbWFnZVNwZWMuc2FtcGxlc1Bl
clBpeGVsID0gW2JpdG1hcEltYWdlIHNhbXBsZXNQZXJQaXhlbF07CisgICAgaW1hZ2VTcGVjLmJp
dHNQZXJQaXhlbCA9IFtiaXRtYXBJbWFnZSBiaXRzUGVyUGl4ZWxdOworICAgIGltYWdlU3BlYy5i
eXRlc1BlclJvdyA9IFtiaXRtYXBJbWFnZSBieXRlc1BlclJvd107CisgICAgaW1hZ2VTcGVjLmlz
UGxhbmFyID0gW2JpdG1hcEltYWdlIGlzUGxhbmFyXTsKKyAgICBpbWFnZVNwZWMuaGFzQWxwaGEg
PSBbYml0bWFwSW1hZ2UgaGFzQWxwaGFdOworICAgIFtiaXRtYXBJbWFnZSBnZXRCaXRtYXBEYXRh
UGxhbmVzOih1bnNpZ25lZCBjaGFyKiopaW1hZ2VTcGVjLmRhdGFdOworCisgICAgLy8gaWYgaW1h
Z2Ugd2FzIGZsaXBwZWQsIHdlIGhhdmUgYW4gdXBzaWRlIGRvd24gYml0bWFwIHNpbmNlIHRoZSBj
YWNoZSBpcyByZW5kZXJlZCBmbGlwcGVkCisgICAgaWYgKGZsaXBJbWFnZSkKKyAgICAgICAgZmxp
cEltYWdlU3BlYygmaW1hZ2VTcGVjKTsKKworICAgIENHU1JlZ2lvbk9iaiBpbWFnZVNoYXBlOwor
ICAgIE9TU3RhdHVzIGVycm9yID0gQ0dTTmV3UmVnaW9uV2l0aFJlY3QoJmltYWdlUmVjdCwgJmlt
YWdlU2hhcGUpOworICAgIEFTU0VSVChlcnJvciA9PSBrQ0dFcnJvclN1Y2Nlc3MpOworICAgIGlm
IChlcnJvciAhPSBrQ0dFcnJvclN1Y2Nlc3MpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIG1h
a2Ugc3VyZSBpbWFnZSBoYXMgaW50ZWdlciBvZmZzZXQKKyAgICBDR1BvaW50IGltYWdlT2Zmc2V0
ID0geyAtb2Zmc2V0LngsIC0oaW1hZ2VTaXplLmhlaWdodCAtIG9mZnNldC55KSB9OworICAgIGlt
YWdlT2Zmc2V0LnggPSBmbG9vcihpbWFnZU9mZnNldC54ICsgMC41KTsKKyAgICBpbWFnZU9mZnNl
dC55ID0gZmxvb3IoaW1hZ2VPZmZzZXQueSArIDAuNSk7CisKKyAgICBlcnJvciA9IENvcmVEcmFn
U2V0SW1hZ2UoQ29yZURyYWdHZXRDdXJyZW50RHJhZygpLCBpbWFnZU9mZnNldCwgJmltYWdlU3Bl
YywgaW1hZ2VTaGFwZSwgMS4wKTsKKyAgICBDR1NSZWxlYXNlUmVnaW9uKGltYWdlU2hhcGUpOwor
ICAgIEFTU0VSVChlcnJvciA9PSBrQ0dFcnJvclN1Y2Nlc3MpOworfQorCiB2b2lkIFBhc3RlYm9h
cmQ6OnNldERyYWdJbWFnZShEcmFnSW1hZ2UgaW1hZ2UsIGNvbnN0IEludFBvaW50JiBsb2NhdGlv
bikKIHsKICAgICAvLyBEb24ndCBhbGxvdyBzZXR0aW5nIHRoZSBkcmFnIGltYWdlIGlmIHNvbWVv
bmUga2VwdCBhIHBhc3RlYm9hcmQgYW5kIGlzIHRyeWluZyB0byBzZXQgdGhlIGltYWdlIHRvbyBs
YXRlLgpAQCAtNjc3LDcgKzc1Myw3IEBAIHZvaWQgUGFzdGVib2FyZDo6c2V0RHJhZ0ltYWdlKERy
YWdJbWFnZSBpbWFnZSwgY29uc3QgSW50UG9pbnQmIGxvY2F0aW9uKQogCiAgICAgLy8gRGFzaGJv
YXJkIHdhbnRzIHRvIGJlIGFibGUgdG8gc2V0IHRoZSBkcmFnIGltYWdlIGR1cmluZyBkcmFnZ2lu
ZywgYnV0IENvY29hIGRvZXMgbm90IGFsbG93IHRoaXMuCiAgICAgLy8gSW5zdGVhZCB3ZSBtdXN0
IGRyb3AgZG93biB0byB0aGUgQ29yZUdyYXBoaWNzIEFQSS4KLSAgICB3a1NldERyYWdJbWFnZShp
bWFnZS5nZXQoKS5nZXQoKSwgbG9jYXRpb24pOworICAgIHNldERyYWdJbWFnZUltcGwoaW1hZ2Uu
Z2V0KCkuZ2V0KCksIGxvY2F0aW9uKTsKIAogICAgIC8vIEhhY2s6IFdlIG11c3QgcG9zdCBhbiBl
dmVudCB0byB3YWtlIHVwIHRoZSBOU0RyYWdNYW5hZ2VyLCB3aGljaCBpcyBzaXR0aW5nIGluIGEg
bmV4dEV2ZW50IGNhbGwKICAgICAvLyB1cCB0aGUgc3RhY2sgZnJvbSB1cyBiZWNhdXNlIHRoZSBD
b3JlRm91bmRhdGlvbiBkcmFnIG1hbmFnZXIgZG9lcyBub3QgdXNlIHRoZSBydW4gbG9vcCBieSBp
dHNlbGYuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1F
dmVudEZhY3RvcnlNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1F
dmVudEZhY3RvcnlNYWMubW0KaW5kZXggNzdiOWNiOTYzNWJiZmIwYmMyYzU0NTQwYmZmNjQwNTE3
MWI3YzU1OS4uMmIxODIyNGY4MzQ5ZmZiYjZlM2MxOGE4ZDE1NDE1NDVkOWMyYWI2MiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtRXZlbnRGYWN0b3J5TWFj
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybUV2ZW50RmFjdG9y
eU1hYy5tbQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTMg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLTIw
MTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC02NzYsNyArNjc2LDcgQEAgc3RhdGljIGludCB0eXBlRm9yRXZlbnQoTlNF
dmVudCAqZXZlbnQpCiB7CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4oW05TTWVudSBtZW51
VHlwZUZvckV2ZW50OmV2ZW50XSk7CiB9Ci0gICAgCisKIHZvaWQgZ2V0V2hlZWxFdmVudERlbHRh
cyhOU0V2ZW50ICpldmVudCwgZmxvYXQmIGRlbHRhWCwgZmxvYXQmIGRlbHRhWSwgQk9PTCYgY29u
dGludW91cykKIHsKICAgICBBU1NFUlQoZXZlbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWFjL1Njcm9sbGJhclRoZW1lTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWFjL1Njcm9sbGJhclRoZW1lTWFjLm1tCmluZGV4IGM0YzI4Nzc2ODM1NzQ5NmFlYjI4
OGZhNDFmMGRkOTVkMmQ3Y2MyODguLjA3MmUyYjQyZDUwY2NjN2U5OWEyZTYzN2E1ODhkMzE0NWRk
MDIwMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxiYXJU
aGVtZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsYmFyVGhl
bWVNYWMubW0KQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDEx
IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOC0y
MDE3IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUgIlNjcm9sbFZpZXcuaCIKICNp
bmNsdWRlICJXZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmgiCiAjaW5jbHVkZSA8Q2FyYm9uL0NhcmJv
bi5oPgorI2luY2x1ZGUgPHBhbC9zcGkvY2cvQ29yZUdyYXBoaWNzU1BJLmg+CiAjaW5jbHVkZSA8
cGFsL3NwaS9tYWMvTlNTY3JvbGxlckltcFNQSS5oPgogI2luY2x1ZGUgPHd0Zi9CbG9ja09iakNF
eGNlcHRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KQEAgLTU3Myw3ICs1NzQsNyBA
QCBzdGF0aWMgUmV0YWluUHRyPENHQ29sb3JSZWY+IGxpbmVuQmFja2dyb3VuZENvbG9yKCkKICAg
ICBpZiAoIWNnSW1hZ2UpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgUmV0YWluUHRy
PENHUGF0dGVyblJlZj4gcGF0dGVybiA9IGFkb3B0Q0Yod2tDR1BhdHRlcm5DcmVhdGVXaXRoSW1h
Z2VBbmRUcmFuc2Zvcm0oY2dJbWFnZSwgQ0dBZmZpbmVUcmFuc2Zvcm1JZGVudGl0eSwgd2tQYXR0
ZXJuVGlsaW5nTm9EaXN0b3J0aW9uKSk7CisgICAgUmV0YWluUHRyPENHUGF0dGVyblJlZj4gcGF0
dGVybiA9IGFkb3B0Q0YoQ0dQYXR0ZXJuQ3JlYXRlV2l0aEltYWdlMihjZ0ltYWdlLCBDR0FmZmlu
ZVRyYW5zZm9ybUlkZW50aXR5LCBrQ0dQYXR0ZXJuVGlsaW5nTm9EaXN0b3J0aW9uKSk7CiAgICAg
UmV0YWluUHRyPENHQ29sb3JTcGFjZVJlZj4gY29sb3JTcGFjZSA9IGFkb3B0Q0YoQ0dDb2xvclNw
YWNlQ3JlYXRlUGF0dGVybigwKSk7CiAKICAgICBjb25zdCBDR0Zsb2F0IGFscGhhID0gMS4wOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1RoZW1lTWFjLm1tIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1RoZW1lTWFjLm1tCmluZGV4IDkwZjEwNDFlZmY3ZjBj
NjQ3ZDZmODM5MWMwMjdmNTNkMWFiNDQ3MTQuLjVjZGU1NDg4YTlmMTAwNTZkZmQyNDUyMDFkMjIw
ZDY0YjNiMzEyYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9UaGVt
ZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvVGhlbWVNYWMubW0KQEAg
LTM2LDYgKzM2LDcgQEAKICNpbXBvcnQgIldlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaCIKICNpbXBv
cnQgPENhcmJvbi9DYXJib24uaD4KICNpbXBvcnQgPHBhbC9zcGkvY29jb2EvTlNCdXR0b25DZWxs
U1BJLmg+CisjaW1wb3J0IDxwYWwvc3BpL21hYy9OU0dyYXBoaWNzU1BJLmg+CiAjaW1wb3J0IDx3
dGYvQmxvY2tPYmpDRXhjZXB0aW9ucy5oPgogI2ltcG9ydCA8d3RmL05ldmVyRGVzdHJveWVkLmg+
CiAjaW1wb3J0IDx3dGYvU3RkTGliRXh0cmFzLmg+CkBAIC0zNDksOSArMzUwLDMyIEBAIHN0YXRp
YyBOU0J1dHRvbkNlbGwgKnNoYXJlZENoZWNrYm94Q2VsbChjb25zdCBDb250cm9sU3RhdGVzJiBz
dGF0ZXMsIGNvbnN0IEludFNpCiAgICAgcmV0dXJuIGNoZWNrYm94Q2VsbDsKIH0KIAorc3RhdGlj
IGJvb2wgZHJhd0NlbGxGb2N1c1JpbmdXaXRoRnJhbWVBdFRpbWUoTlNDZWxsICpjZWxsLCBOU1Jl
Y3QgY2VsbEZyYW1lLCBOU1ZpZXcgKmNvbnRyb2xWaWV3LCBOU1RpbWVJbnRlcnZhbCB0aW1lT2Zm
c2V0KQoreworICAgIENHQ29udGV4dFJlZiBjZ0NvbnRleHQgPSAoQ0dDb250ZXh0UmVmKVtbTlNH
cmFwaGljc0NvbnRleHQgY3VycmVudENvbnRleHRdIGdyYXBoaWNzUG9ydF07CisgICAgQ0dDb250
ZXh0U2F2ZUdTdGF0ZShjZ0NvbnRleHQpOworCisgICAgQ0dGb2N1c1JpbmdTdHlsZSBmb2N1c1Jp
bmdTdHlsZTsKKyAgICBib29sIG5lZWRzUmVwYWludCA9IE5TSW5pdGlhbGl6ZUNHRm9jdXNSaW5n
U3R5bGVGb3JUaW1lKE5TRm9jdXNSaW5nT25seSwgJmZvY3VzUmluZ1N0eWxlLCB0aW1lT2Zmc2V0
KTsKKyAgICAvLyBXZSB3YW50IHRvIHJlc3BlY3QgdGhlIENHQ29udGV4dCBjbGlwcGluZyBhbmQg
YWxzbyBub3Qgb3ZlcnBhaW50IGFueQorICAgIC8vIGV4aXN0aW5nIGZvY3VzIHJpbmcuIFRoZSB3
YXkgdG8gZG8gdGhpcyBpcyBzZXQgYWNjdW11bGF0ZSB0bworICAgIC8vIC0xLiBBY2NvcmRpbmcg
dG8gQ29yZUdyYXBoaWNzLCB0aGUgcmVhc29uaW5nIGZvciB0aGlzIGJlaGF2aW9yIGhhcyBiZWVu
CisgICAgLy8gbG9zdCBpbiB0aW1lLgorICAgIGZvY3VzUmluZ1N0eWxlLmFjY3VtdWxhdGUgPSAt
MTsKKyAgICBhdXRvIHN0eWxlID0gYWRvcHRDRihDR1N0eWxlQ3JlYXRlRm9jdXNSaW5nV2l0aENv
bG9yKCZmb2N1c1JpbmdTdHlsZSwgR3JhcGhpY3NDb250ZXh0Ojpmb2N1c1JpbmdDb2xvcigpKSk7
CisgICAgQ0dDb250ZXh0U2V0U3R5bGUoY2dDb250ZXh0LCBzdHlsZS5nZXQoKSk7CisKKyAgICBD
R0NvbnRleHRCZWdpblRyYW5zcGFyZW5jeUxheWVyV2l0aFJlY3QoY2dDb250ZXh0LCBOU1JlY3RU
b0NHUmVjdChjZWxsRnJhbWUpLCBudWxscHRyKTsKKyAgICBbY2VsbCBkcmF3Rm9jdXNSaW5nTWFz
a1dpdGhGcmFtZTpjZWxsRnJhbWUgaW5WaWV3OmNvbnRyb2xWaWV3XTsKKyAgICBDR0NvbnRleHRF
bmRUcmFuc3BhcmVuY3lMYXllcihjZ0NvbnRleHQpOworICAgIENHQ29udGV4dFJlc3RvcmVHU3Rh
dGUoY2dDb250ZXh0KTsKKworICAgIHJldHVybiBuZWVkc1JlcGFpbnQ7Cit9CisKIHN0YXRpYyBi
b29sIGRyYXdDZWxsRm9jdXNSaW5nKE5TQ2VsbCAqY2VsbCwgTlNSZWN0IGNlbGxGcmFtZSwgTlNW
aWV3ICpjb250cm9sVmlldykKIHsKLSAgICB3a0RyYXdDZWxsRm9jdXNSaW5nV2l0aEZyYW1lQXRU
aW1lKGNlbGwsIGNlbGxGcmFtZSwgY29udHJvbFZpZXcsIHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91
YmxlPjo6bWF4KCkpOworICAgIGRyYXdDZWxsRm9jdXNSaW5nV2l0aEZyYW1lQXRUaW1lKGNlbGws
IGNlbGxGcmFtZSwgY29udHJvbFZpZXcsIHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6bWF4
KCkpOwogICAgIHJldHVybiBmYWxzZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21hYy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmgKaW5kZXggOGExMjQ4MjdjMDQwOWQ2
NjNmNzgxZGYyN2I0ZTQzYmNmYWZiZDIyNy4uNDdjNzgzZTFmODU2NzI2NjYzMTZlN2E1NGZmZGRm
OTBmMTczYzYyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNv
cmVTeXN0ZW1JbnRlcmZhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2Vi
Q29yZVN5c3RlbUludGVyZmFjZS5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAy
MDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAyMDA2LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMyw4ICsyMyw3IEBACiAgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLiAKICAqLwogCi0jaWZuZGVmIFdlYkNvcmVTeXN0ZW1JbnRlcmZhY2VfaAotI2Rl
ZmluZSBXZWJDb3JlU3lzdGVtSW50ZXJmYWNlX2gKKyNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSA8
b2JqYy9vYmpjLmg+CiAKQEAgLTEyNiwxNCArMTI1LDcgQEAgdHlwZWRlZiBlbnVtIHsKICAgICB3
a1BhdHRlcm5UaWxpbmdDb25zdGFudFNwYWNpbmcKIH0gd2tQYXR0ZXJuVGlsaW5nOwogI2lmICFQ
TEFURk9STShJT1MpCi1leHRlcm4gYm9vbCAoKndrQ0dDb250ZXh0RHJhd3NXaXRoQ29ycmVjdFNo
YWRvd09mZnNldHMpKENHQ29udGV4dFJlZik7Ci0jZW5kaWYKLWV4dGVybiBDR1BhdHRlcm5SZWYg
KCp3a0NHUGF0dGVybkNyZWF0ZVdpdGhJbWFnZUFuZFRyYW5zZm9ybSkoQ0dJbWFnZVJlZiwgQ0dB
ZmZpbmVUcmFuc2Zvcm0sIGludCk7Ci0jaWYgIVBMQVRGT1JNKElPUykKIGV4dGVybiB2b2lkICgq
d2tEcmF3QmV6ZWxlZFRleHRBcmVhKShOU1JlY3QsIEJPT0wgZW5hYmxlZCk7Ci1leHRlcm4gdm9p
ZCAoKndrRHJhd0ZvY3VzUmluZykoQ0dDb250ZXh0UmVmLCBDR0NvbG9yUmVmLCBpbnQpOwotZXh0
ZXJuIGJvb2wgKCp3a0RyYXdGb2N1c1JpbmdBdFRpbWUpKENHQ29udGV4dFJlZiwgTlNUaW1lSW50
ZXJ2YWwgdGltZSk7Ci1leHRlcm4gYm9vbCAoKndrRHJhd0NlbGxGb2N1c1JpbmdXaXRoRnJhbWVB
dFRpbWUpKE5TQ2VsbCAqY2VsbCwgTlNSZWN0IGNlbGxGcmFtZSwgTlNWaWV3ICpjb250cm9sVmll
dywgTlNUaW1lSW50ZXJ2YWwgdGltZSk7CiBleHRlcm4gdm9pZCAoKndrRHJhd01lZGlhU2xpZGVy
VHJhY2spKENHQ29udGV4dFJlZiBjb250ZXh0LCBDR1JlY3QgcmVjdCwgZmxvYXQgdGltZUxvYWRl
ZCwgZmxvYXQgY3VycmVudFRpbWUsCiAgICAgZmxvYXQgZHVyYXRpb24sIHVuc2lnbmVkIHN0YXRl
KTsKIGV4dGVybiB2b2lkICgqd2tEcmF3TWVkaWFVSVBhcnQpKGludCBwYXJ0LCBDR0NvbnRleHRS
ZWYgY29udGV4dCwgQ0dSZWN0IHJlY3QsIHVuc2lnbmVkIHN0YXRlKTsKQEAgLTE1Niw5ICsxNDgs
NiBAQCB0eXBlZGVmIGVudW0gewogfSB3a01lZGlhVUlDb250cm9sVHlwZTsKIGV4dGVybiBOU0Nv
bnRyb2wgKigqd2tDcmVhdGVNZWRpYVVJQ29udHJvbCkoaW50KTsKIAotZXh0ZXJuIHZvaWQgKCp3
a1dpbmRvd1NldEFscGhhKShOU1dpbmRvdyAqLCBmbG9hdCk7Ci1leHRlcm4gdm9pZCAoKndrV2lu
ZG93U2V0U2NhbGVkRnJhbWUpKE5TV2luZG93ICosIE5TUmVjdCwgTlNSZWN0KTsKLQogZXh0ZXJu
IHVuc2lnbmVkICgqd2tRVEluY2x1ZGVPbmx5TW9kZXJuTWVkaWFGaWxlVHlwZXMpKHZvaWQpOwog
ZXh0ZXJuIHZvaWQgKCp3a1FUTW92aWVEaXNhYmxlQ29tcG9uZW50KSh1aW50MzJfdFs1XSk7CiBl
eHRlcm4gZmxvYXQgKCp3a1FUTW92aWVNYXhUaW1lTG9hZGVkKShRVE1vdmllKik7CkBAIC0xNzIs
OSArMTYxLDcgQEAgZXh0ZXJuIE5TQXJyYXkgKigqd2tRVEdldFNpdGVzSW5NZWRpYURvd25sb2Fk
Q2FjaGUpKCk7CiBleHRlcm4gdm9pZCAoKndrUVRDbGVhck1lZGlhRG93bmxvYWRDYWNoZUZvclNp
dGUpKE5TU3RyaW5nICpzaXRlKTsKIGV4dGVybiB2b2lkICgqd2tRVENsZWFyTWVkaWFEb3dubG9h
ZENhY2hlKSgpOwogZXh0ZXJuIHZvaWQgKCp3a1NldENvb2tpZVN0b3JhZ2VQcml2YXRlQnJvd3Np
bmdFbmFibGVkKShCT09MKTsKLWV4dGVybiB2b2lkICgqd2tTZXREcmFnSW1hZ2UpKE5TSW1hZ2Uq
LCBOU1BvaW50IG9mZnNldCk7CiAjZW5kaWYKLWV4dGVybiBib29sICgqd2tDR0NvbnRleHRJc1BE
RkNvbnRleHQpKENHQ29udGV4dFJlZik7CiBleHRlcm4gdm9pZCAoKndrU2V0Q09OTkVDVFByb3h5
Rm9yU3RyZWFtKShDRlJlYWRTdHJlYW1SZWYsIENGU3RyaW5nUmVmIHByb3h5SG9zdCwgQ0ZOdW1i
ZXJSZWYgcHJveHlQb3J0KTsKIGV4dGVybiB2b2lkICgqd2tTZXRDT05ORUNUUHJveHlBdXRob3Jp
emF0aW9uRm9yU3RyZWFtKShDRlJlYWRTdHJlYW1SZWYsIENGU3RyaW5nUmVmIHByb3h5QXV0aG9y
aXphdGlvblN0cmluZyk7CiBleHRlcm4gQ0ZIVFRQTWVzc2FnZVJlZiAoKndrQ29weUNPTk5FQ1RQ
cm94eVJlc3BvbnNlKShDRlJlYWRTdHJlYW1SZWYsIENGVVJMUmVmIHJlc3BvbnNlVVJMLCBDRlN0
cmluZ1JlZiBwcm94eUhvc3QsIENGTnVtYmVyUmVmIHByb3h5UG9ydCk7CkBAIC0yMjUsNSArMjEy
LDMgQEAgZXh0ZXJuIE5TU3RyaW5nICooKndrRXhlcm5hbERldmljZURpc3BsYXlOYW1lRm9yUGxh
eWVyKShBVlBsYXllciAqKTsKIGV4dGVybiBib29sICgqd2tRdWVyeURlY29kZXJBdmFpbGFiaWxp
dHkpKHZvaWQpOwogCiB9Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWFjL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2UubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tYWMvV2ViQ29yZVN5c3RlbUludGVyZmFjZS5tbQppbmRleCAyNzJiNTU1N2UyMzlmM2Mx
ZTFkNDVhOTRmYjdiMWU0NTM0NjE3ZGYyLi5kZDBhNzU4OWE2ZTUwMTBmNjM4YzQyMTM3NzQyNTZj
YmEzMDJkZTNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29y
ZVN5c3RlbUludGVyZmFjZS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2Vi
Q29yZVN5c3RlbUludGVyZmFjZS5tbQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
MjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgMjAwNi0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzEsMTIgKzMxLDcgQEAKICNp
bXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgogCiB2b2lkICgqd2tDQUxheWVyRW51bWVy
YXRlUmVjdHNCZWluZ0RyYXduV2l0aEJsb2NrKShDQUxheWVyICosIENHQ29udGV4dFJlZiBjb250
ZXh0LCB2b2lkICheYmxvY2spKENHUmVjdCByZWN0KSk7Ci1ib29sICgqd2tDR0NvbnRleHREcmF3
c1dpdGhDb3JyZWN0U2hhZG93T2Zmc2V0cykoQ0dDb250ZXh0UmVmKTsKLUNHUGF0dGVyblJlZiAo
KndrQ0dQYXR0ZXJuQ3JlYXRlV2l0aEltYWdlQW5kVHJhbnNmb3JtKShDR0ltYWdlUmVmLCBDR0Fm
ZmluZVRyYW5zZm9ybSwgaW50KTsKIHZvaWQgKCp3a0RyYXdCZXplbGVkVGV4dEFyZWEpKE5TUmVj
dCwgQk9PTCBlbmFibGVkKTsKLXZvaWQgKCp3a0RyYXdGb2N1c1JpbmcpKENHQ29udGV4dFJlZiwg
Q0dDb2xvclJlZiwgaW50KTsKLWJvb2wgKCp3a0RyYXdGb2N1c1JpbmdBdFRpbWUpKENHQ29udGV4
dFJlZiwgTlNUaW1lSW50ZXJ2YWwpOwotYm9vbCAoKndrRHJhd0NlbGxGb2N1c1JpbmdXaXRoRnJh
bWVBdFRpbWUpKE5TQ2VsbCosIE5TUmVjdCwgTlNWaWV3KiwgTlNUaW1lSW50ZXJ2YWwpOwogdm9p
ZCAoKndrRHJhd01lZGlhU2xpZGVyVHJhY2spKENHQ29udGV4dFJlZiBjb250ZXh0LCBDR1JlY3Qg
cmVjdCwgZmxvYXQgdGltZUxvYWRlZCwgZmxvYXQgY3VycmVudFRpbWUsCiAgICAgZmxvYXQgZHVy
YXRpb24sIHVuc2lnbmVkIHN0YXRlKTsKIEJPT0wgKCp3a0hpdFRlc3RNZWRpYVVJUGFydCkoaW50
IHBhcnQsIENHUmVjdCBib3VuZHMsIENHUG9pbnQgcG9pbnQpOwpAQCAtNDQsOCArMzksNiBAQCB2
b2lkICgqd2tEcmF3TWVkaWFVSVBhcnQpKGludCBwYXJ0LCBDR0NvbnRleHRSZWYgY29udGV4dCwg
Q0dSZWN0IHJlY3QsIHVuc2lnbmVkCiB2b2lkICgqd2tNZWFzdXJlTWVkaWFVSVBhcnQpKGludCBw
YXJ0LCBDR1JlY3QgKmJvdW5kcywgQ0dTaXplICpuYXR1cmFsU2l6ZSk7CiBOU1ZpZXcgKigqd2tD
cmVhdGVNZWRpYVVJQmFja2dyb3VuZFZpZXcpKHZvaWQpOwogTlNDb250cm9sICooKndrQ3JlYXRl
TWVkaWFVSUNvbnRyb2wpKGludCk7Ci12b2lkICgqd2tXaW5kb3dTZXRBbHBoYSkoTlNXaW5kb3cg
KiwgZmxvYXQpOwotdm9pZCAoKndrV2luZG93U2V0U2NhbGVkRnJhbWUpKE5TV2luZG93ICosIE5T
UmVjdCwgTlNSZWN0KTsKIE5TVGltZUludGVydmFsICgqd2tHZXROU1VSTFJlc3BvbnNlQ2FsY3Vs
YXRlZEV4cGlyYXRpb24pKE5TVVJMUmVzcG9uc2UgKnJlc3BvbnNlKTsKIEJPT0wgKCp3a0dldE5T
VVJMUmVzcG9uc2VNdXN0UmV2YWxpZGF0ZSkoTlNVUkxSZXNwb25zZSAqcmVzcG9uc2UpOwogVUlu
dDggKCp3a0dldE5TRXZlbnRLZXlDaGFyKShOU0V2ZW50ICopOwpAQCAtNjMsOCArNTYsNiBAQCBO
U0FycmF5ICooKndrUVRHZXRTaXRlc0luTWVkaWFEb3dubG9hZENhY2hlKSgpOwogdm9pZCAoKndr
UVRDbGVhck1lZGlhRG93bmxvYWRDYWNoZUZvclNpdGUpKE5TU3RyaW5nICpzaXRlKTsKIHZvaWQg
KCp3a1FUQ2xlYXJNZWRpYURvd25sb2FkQ2FjaGUpKCk7CiAKLXZvaWQgKCp3a1NldERyYWdJbWFn
ZSkoTlNJbWFnZSosIE5TUG9pbnQgb2Zmc2V0KTsKLWJvb2wgKCp3a0NHQ29udGV4dElzUERGQ29u
dGV4dCkoQ0dDb250ZXh0UmVmKTsKIHZvaWQgKCp3a1NldENPTk5FQ1RQcm94eUZvclN0cmVhbSko
Q0ZSZWFkU3RyZWFtUmVmLCBDRlN0cmluZ1JlZiBwcm94eUhvc3QsIENGTnVtYmVyUmVmIHByb3h5
UG9ydCk7CiB2b2lkICgqd2tTZXRDT05ORUNUUHJveHlBdXRob3JpemF0aW9uRm9yU3RyZWFtKShD
RlJlYWRTdHJlYW1SZWYsIENGU3RyaW5nUmVmIHByb3h5QXV0aG9yaXphdGlvblN0cmluZyk7CiBD
RkhUVFBNZXNzYWdlUmVmICgqd2tDb3B5Q09OTkVDVFByb3h5UmVzcG9uc2UpKENGUmVhZFN0cmVh
bVJlZiwgQ0ZVUkxSZWYgcmVzcG9uc2VVUkwsIENGU3RyaW5nUmVmIHByb3h5SG9zdCwgQ0ZOdW1i
ZXJSZWYgcHJveHlQb3J0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21h
Yy9XZWJXaW5kb3dBbmltYXRpb24ubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2Vi
V2luZG93QW5pbWF0aW9uLm1tCmluZGV4IDhhYmM4NDBiNzNjYzY0NWM4YWM0MDZkZWFmYWU5NDIy
Y2RjMzUzZTIuLjVmNTY2ZTAyMTg2MzU2ODM2OWIzY2RjYWFhMGI0YjU1NWE1ZWVlNjQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJXaW5kb3dBbmltYXRpb24ubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYldpbmRvd0FuaW1hdGlvbi5tbQpA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA5LTIwMTcgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0y
OSw2ICsyOSw3IEBACiAKICNpbXBvcnQgIkZsb2F0Q29udmVyc2lvbi5oIgogI2ltcG9ydCAiV2Vi
Q29yZVN5c3RlbUludGVyZmFjZS5oIgorI2ltcG9ydCA8cGFsL3NwaS9jZy9Db3JlR3JhcGhpY3NT
UEkuaD4KICNpbXBvcnQgPHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW1wb3J0IDx3dGYvTWF0aEV4dHJh
cy5oPgogCkBAIC0xMDksNiArMTEwLDU5IEBAIC0gKE5TUmVjdCljdXJyZW50RnJhbWUKICAgICBy
ZXR1cm4gc2NhbGVkUmVjdChfZmluYWxGcmFtZSwgX2luaXRpYWxGcmFtZSwgW3NlbGYgY3VycmVu
dFZhbHVlXSk7CiB9CiAKK3N0YXRpYyB2b2lkIGZsaXBSZWN0KE5TUmVjdCogcmVjdCkKK3sKKyAg
ICByZWN0LT5vcmlnaW4ueSA9IE5TTWF4WShbKE5TU2NyZWVuICopW1tOU1NjcmVlbiBzY3JlZW5z
XSBvYmplY3RBdEluZGV4OjBdIGZyYW1lXSkgLSBOU01heFkoKnJlY3QpOworfQorCitzdGF0aWMg
Q0dTQ29ubmVjdGlvbklEIG1haW5XaW5kb3dTZXJ2ZXJDb25uZWN0aW9uSUQoKQoreworICAgIHN0
YXRpYyBDR1NDb25uZWN0aW9uSUQgY2dzSWQ7CisgICAgaWYgKCFjZ3NJZCkKKyAgICAgICAgY2dz
SWQgPSBDR1NNYWluQ29ubmVjdGlvbklEKCk7CisgICAgcmV0dXJuIGNnc0lkOworfQorCitzdGF0
aWMgdm9pZCBzZXRTY2FsZWRGcmFtZUZvcldpbmRvdyhOU1dpbmRvdyAqd2luZG93LCBOU1JlY3Qg
c2NhbGVGcmFtZSwgTlNSZWN0IG5vblNjYWxlZEZyYW1lKQoreworICAgIGlmIChOU0VxdWFsUmVj
dHMoc2NhbGVGcmFtZSwgbm9uU2NhbGVkRnJhbWUpKSB7CisgICAgICAgIENHU1NldFdpbmRvd1dh
cnAobWFpbldpbmRvd1NlcnZlckNvbm5lY3Rpb25JRCgpLCB3aW5kb3cud2luZG93TnVtYmVyLCAw
LCAwLCBudWxscHRyKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBmbG9hdCBt
ZXNoWzE2XTsKKyAgICAKKyAgICBmbGlwUmVjdCgmc2NhbGVGcmFtZSk7CisgICAgZmxpcFJlY3Qo
Jm5vblNjYWxlZEZyYW1lKTsKKyAgICAKKyAgICAvLyB0b3AtbGVmdCBwb2ludCAodG8gYW5kIGZy
b20pCisgICAgbWVzaFswXSA9IDA7CisgICAgbWVzaFsxXSA9IDA7CisgICAgbWVzaFsyXSA9IE5T
TWluWChzY2FsZUZyYW1lKTsKKyAgICBtZXNoWzNdID0gTlNNaW5ZKHNjYWxlRnJhbWUpOworICAg
IAorICAgIC8vIHRvcC1yaWdodCBwb2ludCAodG8gYW5kIGZyb20pCisgICAgbWVzaFs0XSA9IE5T
V2lkdGgobm9uU2NhbGVkRnJhbWUpOworICAgIG1lc2hbNV0gPSAwOworICAgIG1lc2hbNl0gPSBO
U01heFgoc2NhbGVGcmFtZSk7CisgICAgbWVzaFs3XSA9IE5TTWluWShzY2FsZUZyYW1lKTsKKyAg
ICAKKyAgICAvLyBib3R0b20tbGVmdCAodG8gYW5kIGZyb20pCisgICAgbWVzaFs4XSA9IDA7Cisg
ICAgbWVzaFs5XSA9IE5TSGVpZ2h0KG5vblNjYWxlZEZyYW1lKTsKKyAgICBtZXNoWzEwXSA9IE5T
TWluWChzY2FsZUZyYW1lKTsKKyAgICBtZXNoWzExXSA9IE5TTWF4WShzY2FsZUZyYW1lKTsKKyAg
ICAKKyAgICAvLyBib3R0b20tcmlnaHQgKHRvIGFuZCBmcm9tKQorICAgIG1lc2hbMTJdID0gTlNX
aWR0aChub25TY2FsZWRGcmFtZSk7CisgICAgbWVzaFsxM10gPSBOU0hlaWdodChub25TY2FsZWRG
cmFtZSk7CisgICAgbWVzaFsxNF0gPSBOU01heFgoc2NhbGVGcmFtZSk7CisgICAgbWVzaFsxNV0g
PSBOU01heFkoc2NhbGVGcmFtZSk7CisgICAgCisgICAgLy8gQXBwbHkgdGhlIHdhcnAuCisgICAg
Q0dTU2V0V2luZG93V2FycChtYWluV2luZG93U2VydmVyQ29ubmVjdGlvbklEKCksIHdpbmRvdy53
aW5kb3dOdW1iZXIsIDIsIDIsIG1lc2gpOworfQorCiAtICh2b2lkKXNldEN1cnJlbnRQcm9ncmVz
czooTlNBbmltYXRpb25Qcm9ncmVzcylwcm9ncmVzcwogewogICAgIGlmICghX3dpbmRvdykKQEAg
LTExNyw3ICsxNzEsNyBAQCAtICh2b2lkKXNldEN1cnJlbnRQcm9ncmVzczooTlNBbmltYXRpb25Q
cm9ncmVzcylwcm9ncmVzcwogICAgIFtzdXBlciBzZXRDdXJyZW50UHJvZ3Jlc3M6cHJvZ3Jlc3Nd
OwogCiAgICAgTlNSZWN0IGN1cnJlbnRSZWN0ID0gW3NlbGYgY3VycmVudEZyYW1lXTsKLSAgICB3
a1dpbmRvd1NldFNjYWxlZEZyYW1lKF93aW5kb3csIGN1cnJlbnRSZWN0LCBfcmVhbEZyYW1lKTsK
KyAgICBzZXRTY2FsZWRGcmFtZUZvcldpbmRvdyhfd2luZG93LCBjdXJyZW50UmVjdCwgX3JlYWxG
cmFtZSk7CiAgICAgW19zdWJBbmltYXRpb24gc2V0Q3VycmVudFByb2dyZXNzOnByb2dyZXNzXTsK
IH0KIApAQCAtMjExLDcgKzI2NSw3IEBAIC0gKHZvaWQpc2V0Q3VycmVudFByb2dyZXNzOihOU0Fu
aW1hdGlvblByb2dyZXNzKXByb2dyZXNzCiAgICAgQVNTRVJUKF93aW5kb3cpOwogICAgIFtzdXBl
ciBzZXRDdXJyZW50UHJvZ3Jlc3M6cHJvZ3Jlc3NdOwogCi0gICAgd2tXaW5kb3dTZXRBbHBoYShf
d2luZG93LCBbc2VsZiBjdXJyZW50QWxwaGFdKTsKKyAgICBDR1NTZXRXaW5kb3dBbHBoYShtYWlu
V2luZG93U2VydmVyQ29ubmVjdGlvbklEKCksIF93aW5kb3cud2luZG93TnVtYmVyLCBzZWxmLmN1
cnJlbnRBbHBoYSk7CiB9CiAKIC0gKHZvaWQpc2V0V2luZG93OihOU1dpbmRvdyopd2luZG93CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvbWFjL1BsdWdpblByb2Nlc3NN
YWMubW0gYi9Tb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvbWFjL1BsdWdpblByb2Nlc3NNYWMu
bW0KaW5kZXggZDg2MDM3ODY3YTJmMWFmYTI1ZWM1MjYzMDZlMTRkOTY0Y2Q3N2U2ZC4uMjRkMjZl
ZDFlNjc0M2FlYzU1N2E4Zjc2NDg5YjY3MzgwNDE3ZmQwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9QbHVnaW5Qcm9jZXNzL21hYy9QbHVnaW5Qcm9jZXNzTWFjLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvUGx1Z2luUHJvY2Vzcy9tYWMvUGx1Z2luUHJvY2Vzc01hYy5tbQpAQCAtNDYsNiArNDYs
NyBAQAogI2ltcG9ydCA8bWFjaC9tYWNoX3ZtLmg+CiAjaW1wb3J0IDxtYWNoL3ZtX3N0YXRpc3Rp
Y3MuaD4KICNpbXBvcnQgPG9iamMvcnVudGltZS5oPgorI2ltcG9ydCA8cGFsL3NwaS9jZy9Db3Jl
R3JhcGhpY3NTUEkuaD4KICNpbXBvcnQgPHBhbC9zcGkvbWFjL0hJVG9vbGJveFNQSS5oPgogI2lt
cG9ydCA8cGFsL3NwaS9tYWMvTlNXaW5kb3dTUEkuaD4KICNpbXBvcnQgPHN5c2V4aXRzLmg+CkBA
IC01MzEsNyArNTMyLDEwIEBAIHZvaWQgUGx1Z2luUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXpl
UHJvY2Vzcyhjb25zdCBDaGlsZFByb2Nlc3NJbml0aWFsaXphdGlvblBhCiAKICAgICAvLyBGSVhN
RTogSXQgd291bGQgYmUgYmV0dGVyIHRvIHByb3h5IFNldEN1cnNvciBjYWxscyBvdmVyIHRvIHRo
ZSBVSSBwcm9jZXNzIGluc3RlYWQgb2YKICAgICAvLyBhbGxvd2luZyBwbHVnLWlucyB0byBjaGFu
Z2UgdGhlIG1vdXNlIGN1cnNvciBhdCBhbnkgdGltZS4KLSAgICBXS0VuYWJsZVNldHRpbmdDdXJz
b3JXaGVuSW5CYWNrZ3JvdW5kKCk7CisgICAgLy8gRklYTUU6IFNldHNDdXJzb3JJbkJhY2tncm91
bmQgY29ubmVjdGlvbiBwcm9wZXJ0eSBpcyBkZXByZWNhdGVkIGluIGZhdm9yIG9mIGtDR1NTZXRz
Q3Vyc29ySW5CYWNrZ3JvdW5kVGFnQml0IHdpbmRvdyB0YWcgYml0LgorICAgIC8vIDxyZGFyOi8v
cHJvYmxlbS83NzUyNDIyPiBhc2tzIGZvciBhbiBBUEkgdG8gc2V0IGN1cnNvciBmcm9tIGJhY2tn
cm91bmQgcHJvY2Vzc2VzLgorICAgIENHU0Nvbm5lY3Rpb25JRCBjaWQgPSBDR1NNYWluQ29ubmVj
dGlvbklEKCk7CisgICAgQ0dTU2V0Q29ubmVjdGlvblByb3BlcnR5KGNpZCwgY2lkLCBDRlNUUigi
U2V0c0N1cnNvckluQmFja2dyb3VuZCIpLCAoQ0ZUeXBlUmVmKWtDRkJvb2xlYW5UcnVlKTsKIAog
ICAgIFJldGFpblB0cjxDRlVSTFJlZj4gcGx1Z2luVVJMID0gYWRvcHRDRihDRlVSTENyZWF0ZVdp
dGhGaWxlU3lzdGVtUGF0aCgwLCBtX3BsdWdpblBhdGguY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwg
a0NGVVJMUE9TSVhQYXRoU3R5bGUsIGZhbHNlKSk7CiAgICAgaWYgKCFwbHVnaW5VUkwpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2luZG93U2VydmVyQ29ubmVjdGlv
bi5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dpbmRvd1NlcnZlckNvbm5lY3Rpb24u
aAppbmRleCA4MzhhMzRmYjVjMmQ0NGVlZTU0NjRlNTdlZGM3MGUxMGFkYmQzYjIwLi40OTIwMDky
MGEyYmE2YzVkNDlkYmQzYmM1MDI0YTI0MDBkYjJjYmVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9tYWMvV2luZG93U2VydmVyQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL21hYy9XaW5kb3dTZXJ2ZXJDb25uZWN0aW9uLmgKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNC0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjMsOCArMjMsNyBA
QAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgV2lu
ZG93U2VydmVyQ29ubmVjdGlvbl9oCi0jZGVmaW5lIFdpbmRvd1NlcnZlckNvbm5lY3Rpb25faAor
I3ByYWdtYSBvbmNlCiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCkBAIC00MSwxNCArNDAsOSBAQCBw
cml2YXRlOgogICAgIHZvaWQgd2luZG93U2VydmVyQ29ubmVjdGlvblN0YXRlQ2hhbmdlZCgpOwog
CiAgICAgdm9pZCBhcHBsaWNhdGlvbldpbmRvd01vZGlmaWNhdGlvbnNTdG9wcGVkKGJvb2wgc3Rv
cHBlZCk7Ci0KLSAgICBzdGF0aWMgdm9pZCBhcHBsaWNhdGlvbldpbmRvd01vZGlmaWNhdGlvbnNT
dGFydGVkKHVpbnQzMl90LCB2b2lkKiwgdWludDMyX3QsIHZvaWQqLCB1aW50MzJfdCk7Ci0gICAg
c3RhdGljIHZvaWQgYXBwbGljYXRpb25XaW5kb3dNb2RpZmljYXRpb25zU3RvcHBlZCh1aW50MzJf
dCwgdm9pZCosIHVpbnQzMl90LCB2b2lkKiwgdWludDMyX3QpOwogI2VuZGlmCiAKICAgICBib29s
IG1fYXBwbGljYXRpb25XaW5kb3dNb2RpZmljYXRpb25zSGF2ZVN0b3BwZWQ7CiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIFdpbmRvd1NlcnZlckNvbm5lY3Rpb25faApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dpbmRvd1NlcnZlckNvbm5l
Y3Rpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2luZG93U2VydmVyQ29ubmVj
dGlvbi5tbQppbmRleCA4MTk1MzVjMmFjMTI5YzhkNTIxMjE4Yzk3NTVjODRiNjFkNDRmMjg1Li40
Y2YyZmFjNWVjZmIxMDZhNWYwODM0ZDk4Y2NkMTQzZDc0MmFlMGQ2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2luZG93U2VydmVyQ29ubmVjdGlvbi5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2luZG93U2VydmVyQ29ubmVjdGlvbi5tbQpAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMTcgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yOCw2
ICsyOCw3IEBACiAKICNpbXBvcnQgIldlYktpdFN5c3RlbUludGVyZmFjZS5oIgogI2ltcG9ydCAi
V2ViUHJvY2Vzc1Bvb2wuaCIKKyNpbXBvcnQgPHBhbC9zcGkvY2cvQ29yZUdyYXBoaWNzU1BJLmg+
CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCkBAIC00MSwxNiArNDIsNiBAQCB2b2lkIFdpbmRvd1Nl
cnZlckNvbm5lY3Rpb246OmFwcGxpY2F0aW9uV2luZG93TW9kaWZpY2F0aW9uc1N0b3BwZWQoYm9v
bCBzdG9wcGVkKQogICAgIHdpbmRvd1NlcnZlckNvbm5lY3Rpb25TdGF0ZUNoYW5nZWQoKTsKIH0K
IAotdm9pZCBXaW5kb3dTZXJ2ZXJDb25uZWN0aW9uOjphcHBsaWNhdGlvbldpbmRvd01vZGlmaWNh
dGlvbnNTdGFydGVkKHVpbnQzMl90LCB2b2lkKiwgdWludDMyX3QsIHZvaWQqLCB1aW50MzJfdCkK
LXsKLSAgICBXaW5kb3dTZXJ2ZXJDb25uZWN0aW9uOjpzaW5nbGV0b24oKS5hcHBsaWNhdGlvbldp
bmRvd01vZGlmaWNhdGlvbnNTdG9wcGVkKGZhbHNlKTsKLX0KLQotdm9pZCBXaW5kb3dTZXJ2ZXJD
b25uZWN0aW9uOjphcHBsaWNhdGlvbldpbmRvd01vZGlmaWNhdGlvbnNTdG9wcGVkKHVpbnQzMl90
LCB2b2lkKiwgdWludDMyX3QsIHZvaWQqLCB1aW50MzJfdCkKLXsKLSAgICBXaW5kb3dTZXJ2ZXJD
b25uZWN0aW9uOjpzaW5nbGV0b24oKS5hcHBsaWNhdGlvbldpbmRvd01vZGlmaWNhdGlvbnNTdG9w
cGVkKHRydWUpOwotfQotCiB2b2lkIFdpbmRvd1NlcnZlckNvbm5lY3Rpb246OndpbmRvd1NlcnZl
ckNvbm5lY3Rpb25TdGF0ZUNoYW5nZWQoKQogewogICAgIGZvciAoYXV0byogcHJvY2Vzc1Bvb2wg
OiBXZWJQcm9jZXNzUG9vbDo6YWxsUHJvY2Vzc1Bvb2xzKCkpCkBAIC02NSwyMyArNTYsNDggQEAg
V2luZG93U2VydmVyQ29ubmVjdGlvbiYgV2luZG93U2VydmVyQ29ubmVjdGlvbjo6c2luZ2xldG9u
KCkKICAgICByZXR1cm4gd2luZG93U2VydmVyQ29ubmVjdGlvbjsKIH0KIAorI2lmIEhBVkUoV0lO
RE9XX1NFUlZFUl9PQ0NMVVNJT05fTk9USUZJQ0FUSU9OUykKK3N0YXRpYyBib29sIHJlZ2lzdGVy
T2NjbHVzaW9uTm90aWZpY2F0aW9uSGFuZGxlcihDR1NOb3RpZmljYXRpb25UeXBlIHR5cGUsIENH
U05vdGlmeUNvbm5lY3Rpb25Qcm9jUHRyIGhhbmRsZXIpCit7CisgICAgQ0dTQ29ubmVjdGlvbklE
IG1haW5Db25uZWN0aW9uID0gQ0dTTWFpbkNvbm5lY3Rpb25JRCgpOworICAgIHN0YXRpYyBib29s
IG5vdGlmaWNhdGlvbnNFbmFibGVkOworICAgIGlmICghbm90aWZpY2F0aW9uc0VuYWJsZWQpIHsK
KyAgICAgICAgaWYgKENHU1BhY2thZ2VzRW5hYmxlQ29ubmVjdGlvbk9jY2x1c2lvbk5vdGlmaWNh
dGlvbnMobWFpbkNvbm5lY3Rpb24sIHRydWUsIG51bGxwdHIpICE9IGtDR0Vycm9yU3VjY2VzcykK
KyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYgKENHU1BhY2thZ2VzRW5hYmxl
Q29ubmVjdGlvbldpbmRvd01vZGlmaWNhdGlvbk5vdGlmaWNhdGlvbnMobWFpbkNvbm5lY3Rpb24s
IHRydWUsIG51bGxwdHIpICE9IGtDR0Vycm9yU3VjY2VzcykKKyAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAgICAgbm90aWZpY2F0aW9uc0VuYWJsZWQgPSB0cnVlOworICAgIH0KKworICAg
IHJldHVybiBDR1NSZWdpc3RlckNvbm5lY3Rpb25Ob3RpZnlQcm9jKG1haW5Db25uZWN0aW9uLCBo
YW5kbGVyLCB0eXBlLCBudWxscHRyKSA9PSBrQ0dFcnJvclN1Y2Nlc3M7Cit9CisjZW5kaWYKKwog
V2luZG93U2VydmVyQ29ubmVjdGlvbjo6V2luZG93U2VydmVyQ29ubmVjdGlvbigpCiAgICAgOiBt
X2FwcGxpY2F0aW9uV2luZG93TW9kaWZpY2F0aW9uc0hhdmVTdG9wcGVkKGZhbHNlKQogewogI2lm
IEhBVkUoV0lORE9XX1NFUlZFUl9PQ0NMVVNJT05fTk9USUZJQ0FUSU9OUykKICAgICBzdHJ1Y3Qg
T2NjbHVzaW9uTm90aWZpY2F0aW9uSGFuZGxlciB7Ci0gICAgICAgIFdLT2NjbHVzaW9uTm90aWZp
Y2F0aW9uVHlwZSBub3RpZmljYXRpb25UeXBlOwotICAgICAgICBXS09jY2x1c2lvbk5vdGlmaWNh
dGlvbkhhbmRsZXIgaGFuZGxlcjsKKyAgICAgICAgQ0dTTm90aWZpY2F0aW9uVHlwZSBub3RpZmlj
YXRpb25UeXBlOworICAgICAgICBDR1NOb3RpZnlDb25uZWN0aW9uUHJvY1B0ciBoYW5kbGVyOwog
ICAgICAgICBjb25zdCBjaGFyKiBuYW1lOwogICAgIH07CiAKKyAgICBzdGF0aWMgYXV0byB3aW5k
b3dNb2RpZmljYXRpb25zU3RhcnRlZCA9IFtdKENHU05vdGlmaWNhdGlvblR5cGUsIHZvaWQqLCB1
aW50MzJfdCwgdm9pZCosIENHU0Nvbm5lY3Rpb25JRCkgeworICAgICAgICBXaW5kb3dTZXJ2ZXJD
b25uZWN0aW9uOjpzaW5nbGV0b24oKS5hcHBsaWNhdGlvbldpbmRvd01vZGlmaWNhdGlvbnNTdG9w
cGVkKGZhbHNlKTsKKyAgICB9OworCisgICAgc3RhdGljIGF1dG8gd2luZG93TW9kaWZpY2F0aW9u
c1N0b3BwZWQgPSBbXShDR1NOb3RpZmljYXRpb25UeXBlLCB2b2lkKiwgdWludDMyX3QsIHZvaWQq
LCBDR1NDb25uZWN0aW9uSUQpIHsKKyAgICAgICAgV2luZG93U2VydmVyQ29ubmVjdGlvbjo6c2lu
Z2xldG9uKCkuYXBwbGljYXRpb25XaW5kb3dNb2RpZmljYXRpb25zU3RvcHBlZCh0cnVlKTsKKyAg
ICB9OworCiAgICAgc3RhdGljIGNvbnN0IE9jY2x1c2lvbk5vdGlmaWNhdGlvbkhhbmRsZXIgb2Nj
bHVzaW9uTm90aWZpY2F0aW9uSGFuZGxlcnNbXSA9IHsKLSAgICAgICAgeyBXS09jY2x1c2lvbk5v
dGlmaWNhdGlvblR5cGVBcHBsaWNhdGlvbldpbmRvd01vZGlmaWNhdGlvbnNTdGFydGVkLCBhcHBs
aWNhdGlvbldpbmRvd01vZGlmaWNhdGlvbnNTdGFydGVkLCAiQXBwbGljYXRpb24gV2luZG93IE1v
ZGlmaWNhdGlvbnMgU3RhcnRlZCIgfSwKLSAgICAgICAgeyBXS09jY2x1c2lvbk5vdGlmaWNhdGlv
blR5cGVBcHBsaWNhdGlvbldpbmRvd01vZGlmaWNhdGlvbnNTdG9wcGVkLCBhcHBsaWNhdGlvbldp
bmRvd01vZGlmaWNhdGlvbnNTdG9wcGVkLCAiQXBwbGljYXRpb24gV2luZG93IE1vZGlmaWNhdGlv
bnMgU3RvcHBlZCIgfSwKKyAgICAgICAgeyBrQ0dTQ29ubmVjdGlvbldpbmRvd01vZGlmaWNhdGlv
bnNTdGFydGVkLCB3aW5kb3dNb2RpZmljYXRpb25zU3RhcnRlZCwgIkFwcGxpY2F0aW9uIFdpbmRv
dyBNb2RpZmljYXRpb25zIFN0YXJ0ZWQiIH0sCisgICAgICAgIHsga0NHU0Nvbm5lY3Rpb25XaW5k
b3dNb2RpZmljYXRpb25zU3RvcHBlZCwgd2luZG93TW9kaWZpY2F0aW9uc1N0b3BwZWQsICJBcHBs
aWNhdGlvbiBXaW5kb3cgTW9kaWZpY2F0aW9ucyBTdG9wcGVkIiB9LAogICAgIH07CiAKICAgICBm
b3IgKGNvbnN0IGF1dG8mIG9jY2x1c2lvbk5vdGlmaWNhdGlvbkhhbmRsZXIgOiBvY2NsdXNpb25O
b3RpZmljYXRpb25IYW5kbGVycykgewotICAgICAgICBib29sIHJlc3VsdCA9IFdLUmVnaXN0ZXJP
Y2NsdXNpb25Ob3RpZmljYXRpb25IYW5kbGVyKG9jY2x1c2lvbk5vdGlmaWNhdGlvbkhhbmRsZXIu
bm90aWZpY2F0aW9uVHlwZSwgb2NjbHVzaW9uTm90aWZpY2F0aW9uSGFuZGxlci5oYW5kbGVyKTsK
KyAgICAgICAgYm9vbCByZXN1bHQgPSByZWdpc3Rlck9jY2x1c2lvbk5vdGlmaWNhdGlvbkhhbmRs
ZXIob2NjbHVzaW9uTm90aWZpY2F0aW9uSGFuZGxlci5ub3RpZmljYXRpb25UeXBlLCBvY2NsdXNp
b25Ob3RpZmljYXRpb25IYW5kbGVyLmhhbmRsZXIpOwogICAgICAgICBVTlVTRURfUEFSQU0ocmVz
dWx0KTsKICAgICAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShyZXN1bHQsICJSZWdpc3RyYXRpb24g
b2YgXCIlc1wiIG5vdGlmaWNhdGlvbiBoYW5kbGVyIGZhaWxlZC5cbiIsIG9jY2x1c2lvbk5vdGlm
aWNhdGlvbkhhbmRsZXIubmFtZSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJTeXN0ZW1JbnRlcmZhY2UubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYlN5c3RlbUludGVyZmFj
ZS5tbQppbmRleCBkMThhNDQwZGQ3MjUzOWM2YTU2OTRiNzQ2N2Y4YTY5MTg4NTFkOTllLi44NGMx
M2NhNjE5NzNjMmZmNmY2NzdkNzM3NWI3YjA3YWY4MTFiOTg1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYlN5c3RlbUludGVyZmFjZS5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYlN5
c3RlbUludGVyZmFjZS5tbQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAsIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zNywyMSArMzcs
MTEgQEAgdm9pZCBJbml0V2ViQ29yZVN5c3RlbUludGVyZmFjZSh2b2lkKQogICAgIAogICAgIGRp
c3BhdGNoX29uY2UoJmluaXRPbmNlLCBeewogICAgICAgICBJTklUKENBTGF5ZXJFbnVtZXJhdGVS
ZWN0c0JlaW5nRHJhd25XaXRoQmxvY2spOwotICAgICAgICBJTklUKENHUGF0dGVybkNyZWF0ZVdp
dGhJbWFnZUFuZFRyYW5zZm9ybSk7Ci0jaWYgIVBMQVRGT1JNKElPUykKLSAgICAgICAgSU5JVChD
R0NvbnRleHREcmF3c1dpdGhDb3JyZWN0U2hhZG93T2Zmc2V0cyk7Ci0jZW5kaWYKICAgICAgICAg
SU5JVChDb3B5Q09OTkVDVFByb3h5UmVzcG9uc2UpOwogI2lmICFQTEFURk9STShJT1MpCiAgICAg
ICAgIElOSVQoRHJhd0JlemVsZWRUZXh0QXJlYSk7Ci0gICAgICAgIElOSVQoRHJhd0ZvY3VzUmlu
Zyk7Ci0gICAgICAgIElOSVQoRHJhd0ZvY3VzUmluZ0F0VGltZSk7Ci0gICAgICAgIElOSVQoRHJh
d0NlbGxGb2N1c1JpbmdXaXRoRnJhbWVBdFRpbWUpOwogICAgICAgICBJTklUKERyYXdNZWRpYVNs
aWRlclRyYWNrKTsKICAgICAgICAgSU5JVChEcmF3TWVkaWFVSVBhcnQpOwotI2VuZGlmCi0gICAg
ICAgIElOSVQoQ0dDb250ZXh0SXNQREZDb250ZXh0KTsKLSNpZiAhUExBVEZPUk0oSU9TKQogICAg
ICAgICBJTklUKEdldE5TRXZlbnRLZXlDaGFyKTsKICAgICAgICAgSU5JVChIaXRUZXN0TWVkaWFV
SVBhcnQpOwogICAgICAgICBJTklUKE1lYXN1cmVNZWRpYVVJUGFydCk7CkBAIC03MCwxNiArNjAs
MTEgQEAgdm9pZCBJbml0V2ViQ29yZVN5c3RlbUludGVyZmFjZSh2b2lkKQogI2VuZGlmCiAgICAg
ICAgIElOSVQoU2V0Q09OTkVDVFByb3h5QXV0aG9yaXphdGlvbkZvclN0cmVhbSk7CiAgICAgICAg
IElOSVQoU2V0Q09OTkVDVFByb3h5Rm9yU3RyZWFtKTsKLSNpZiAhUExBVEZPUk0oSU9TKQotICAg
ICAgICBJTklUKFNldERyYWdJbWFnZSk7Ci0jZW5kaWYKIAogI2lmICFQTEFURk9STShJT1MpCiAg
ICAgICAgIElOSVQoRXhlY3V0YWJsZVdhc0xpbmtlZE9uT3JCZWZvcmVTbm93TGVvcGFyZCk7CiAg
ICAgICAgIElOSVQoQ29weURlZmF1bHRTZWFyY2hQcm92aWRlckRpc3BsYXlOYW1lKTsKICAgICAg
ICAgSU5JVChDdXJzb3IpOwotICAgICAgICBJTklUKFdpbmRvd1NldFNjYWxlZEZyYW1lKTsKLSAg
ICAgICAgSU5JVChXaW5kb3dTZXRBbHBoYSk7CiAgICAgICAgIElOSVQoU3BlZWNoU3ludGhlc2lz
R2V0Vm9pY2VJZGVudGlmaWVycyk7CiAgICAgICAgIElOSVQoU3BlZWNoU3ludGhlc2lzR2V0RGVm
YXVsdFZvaWNlSWRlbnRpZmllckZvckxvY2FsZSk7CiAgICAgICAgIElOSVQoTlNFbGFzdGljRGVs
dGFGb3JUaW1lRGVsdGEpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2Fy
Ym9uL0hJV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NhcmJvbi9ISVdlYlZp
ZXcubW0KaW5kZXggMzQ1ODVjMjUyYzNiMThjYWNkNmUwN2FkNWU5NDQ4Nzc5ZDhiZTQ1Ny4uZGI0
YmI2NDQ0MjUzMDFkMDRmMThmYWFhYWFmNzBhMmU5NTRiMmQ1OCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvQ2FyYm9uL0hJV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9DYXJib24vSElXZWJWaWV3Lm1tCkBAIC0zNiw2ICszNiw3IEBACiAjaW1wb3J0
ICJXZWJLaXQuaCIKICNpbXBvcnQgPFdlYktpdFN5c3RlbUludGVyZmFjZS5oPgogI2ltcG9ydCA8
cGFsL3NwaS9tYWMvTlNFdmVudFNQSS5oPgorI2ltcG9ydCA8cGFsL3NwaS9tYWMvTlNHcmFwaGlj
c1NQSS5oPgogI2ltcG9ydCA8cGFsL3NwaS9tYWMvUXVpY2tEcmF3U1BJLmg+CiAjaW1wb3J0IDx3
dGYvT2JqY1J1bnRpbWVFeHRyYXMuaD4KIApAQCAtODUsNiArODYsMjEgQEAgLSAoaW50KXRhZwog
CiBAZW5kCiAKK0BpbnRlcmZhY2UgTlNXaW5kb3dHcmFwaGljc0NvbnRleHQgKEhJV2ViVmlldykK
Ky0gKHZvaWQpX3dlYl9zZXRHcmFwaGljc1BvcnQ6KENHQ29udGV4dFJlZiljb250ZXh0OworQGVu
ZAorCitAaW1wbGVtZW50YXRpb24gTlNXaW5kb3dHcmFwaGljc0NvbnRleHQgKEhJV2ViVmlldykK
KworLSAodm9pZClfd2ViX3NldEdyYXBoaWNzUG9ydDooQ0dDb250ZXh0UmVmKWNvbnRleHQKK3sK
KyAgICBDR0NvbnRleHRSZXRhaW4oY29udGV4dCk7CisgICAgQ0dDb250ZXh0UmVsZWFzZShfY2dz
Q29udGV4dCk7CisgICAgX2Nnc0NvbnRleHQgPSBjb250ZXh0OworfQorCitAZW5kCisKIHN0cnVj
dCBISVdlYlZpZXcKIHsKICAgICBISVZpZXdSZWYJCQkJCQkJZlZpZXdSZWY7CkBAIC0yOTAsNiAr
MzA2LDIyIEBAIEdldEJlaGF2aW9ycygpCiAJcmV0dXJuIGtDb250cm9sU3VwcG9ydHNEYXRhQWNj
ZXNzIHwga0NvbnRyb2xTdXBwb3J0c0dldFJlZ2lvbiB8IGtDb250cm9sR2V0c0ZvY3VzT25DbGlj
azsKIH0KIAorc3RhdGljIENHQ29udGV4dFJlZiBvdmVycmlkZUNHQ29udGV4dChOU1dpbmRvdyAq
d2luZG93LCBDR0NvbnRleHRSZWYgY29udGV4dCkKK3sKKyAgICBOU1dpbmRvd0dyYXBoaWNzQ29u
dGV4dCAqZ3JhcGhpY3NDb250ZXh0ID0gKE5TV2luZG93R3JhcGhpY3NDb250ZXh0ICopd2luZG93
LmdyYXBoaWNzQ29udGV4dDsKKyAgICBDR0NvbnRleHRSZWYgc2F2ZWRDb250ZXh0ID0gKENHQ29u
dGV4dFJlZilncmFwaGljc0NvbnRleHQuZ3JhcGhpY3NQb3J0OworICAgIENHQ29udGV4dFJldGFp
bihzYXZlZENvbnRleHQpOworICAgIFtncmFwaGljc0NvbnRleHQgX3dlYl9zZXRHcmFwaGljc1Bv
cnQ6Y29udGV4dF07CisgICAgcmV0dXJuIHNhdmVkQ29udGV4dDsKK30KKworc3RhdGljIHZvaWQg
cmVzdG9yZUNHQ29udGV4dChOU1dpbmRvdyAqd2luZG93LCBDR0NvbnRleHRSZWYgc2F2ZWRDb250
ZXh0KQoreworICAgIE5TV2luZG93R3JhcGhpY3NDb250ZXh0ICpncmFwaGljc0NvbnRleHQgPSAo
TlNXaW5kb3dHcmFwaGljc0NvbnRleHQgKil3aW5kb3cuZ3JhcGhpY3NDb250ZXh0OworICAgIFtn
cmFwaGljc0NvbnRleHQgX3dlYl9zZXRHcmFwaGljc1BvcnQ6c2F2ZWRDb250ZXh0XTsKKyAgICBD
R0NvbnRleHRSZWxlYXNlKHNhdmVkQ29udGV4dCk7Cit9CisKIC8vLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQogLy8gRHJhdwogLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC0zMjEsNyAr
MzUzLDcgQEAgRHJhdyggSElXZWJWaWV3KiBpblZpZXcsIFJnbkhhbmRsZSBsaW1pdFJnbiwgQ0dD
b250ZXh0UmVmIGluQ29udGV4dCApCiAKIAlISVZpZXdHZXRCb3VuZHMoIGluVmlldy0+ZlZpZXdS
ZWYsICZib3VuZHMgKTsKIAotICAgIENHQ29udGV4dFJlZiBzYXZlZENvbnRleHQgPSBXS05TV2lu
ZG93T3ZlcnJpZGVDR0NvbnRleHQoaW5WaWV3LT5mS2l0V2luZG93LCBpbkNvbnRleHQpOworICAg
IENHQ29udGV4dFJlZiBzYXZlZENvbnRleHQgPSBvdmVycmlkZUNHQ29udGV4dChpblZpZXctPmZL
aXRXaW5kb3csIGluQ29udGV4dCk7CiAgICAgW05TR3JhcGhpY3NDb250ZXh0IHNldEN1cnJlbnRD
b250ZXh0OltpblZpZXctPmZLaXRXaW5kb3cgZ3JhcGhpY3NDb250ZXh0XV07CiAKIAlHZXRSZWdp
b25Cb3VuZHMoIGxpbWl0UmduLCAmZHJhd1JlY3QgKTsKQEAgLTM1MSw3ICszODMsNyBAQCBEcmF3
KCBISVdlYlZpZXcqIGluVmlldywgUmduSGFuZGxlIGxpbWl0UmduLCBDR0NvbnRleHRSZWYgaW5D
b250ZXh0ICkKICAgICBlbHNlCiAgICAgICAgIFtpblZpZXctPmZXZWJWaWV3IGRpc3BsYXlSZWN0
OiooTlNSZWN0KikmaGlSZWN0XTsKIAotICAgIFdLTlNXaW5kb3dSZXN0b3JlQ0dDb250ZXh0KGlu
Vmlldy0+ZktpdFdpbmRvdywgc2F2ZWRDb250ZXh0KTsKKyAgICByZXN0b3JlQ0dDb250ZXh0KGlu
Vmlldy0+ZktpdFdpbmRvdywgc2F2ZWRDb250ZXh0KTsKIAogICAgIGlmICggIWluVmlldy0+Zklz
Q29tcG9zaXRlZCApCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
UGx1Z2lucy9Ib3N0ZWQvV2ViSG9zdGVkTmV0c2NhcGVQbHVnaW5WaWV3Lm1tIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvV2ViSG9zdGVkTmV0c2NhcGVQbHVnaW5WaWV3
Lm1tCmluZGV4IDllMjA0NGUyNmUxMzkwMjFlYjhjYTYzMzYyNTVmMmM4MzNjMWI4YjIuLjMzYTA4
YWZjNjBiYjZiZWE0MWYxYzU1MDBkYzcwZjY5NjZkN2ViMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL1dlYkhvc3RlZE5ldHNjYXBlUGx1Z2luVmll
dy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9XZWJIb3N0
ZWROZXRzY2FwZVBsdWdpblZpZXcubW0KQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDA4IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAwOC0yMDE3IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNzYsNyArNzYsNyBAQCArICh2b2lkKWluaXRpYWxpemUK
ICAgICBXVEY6OmluaXRpYWxpemVNYWluVGhyZWFkVG9Qcm9jZXNzTWFpblRocmVhZCgpOwogICAg
IFJ1bkxvb3A6OmluaXRpYWxpemVNYWluUnVuTG9vcCgpOwogI2VuZGlmCi0gICAgV0tTZW5kVXNl
ckNoYW5nZU5vdGlmaWNhdGlvbnMoKTsKKyAgICBzZW5kVXNlckNoYW5nZU5vdGlmaWNhdGlvbnMo
KTsKIH0KIAogLSAoaWQpaW5pdFdpdGhGcmFtZTooTlNSZWN0KWZyYW1lCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYkJhc2VOZXRzY2FwZVBsdWdpblZpZXcu
aCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViQmFzZU5ldHNjYXBlUGx1Z2lu
Vmlldy5oCmluZGV4IGMyMjIzYWI2ZDI2NzUxZjM4YzM4OTU4MWJkMzQ5ZGU5ODE0YzE1YjEuLmMy
MzdjY2Y5MWNiNGJhNjkxMDk1ZTQzNGI1N2QxMzM5NzBmNTgzZTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViQmFzZU5ldHNjYXBlUGx1Z2luVmlldy5oCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViQmFzZU5ldHNjYXBlUGx1Z2lu
Vmlldy5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNSwgMjAwNyBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDUtMjAx
NyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTEzNCw2ICsxMzQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIGJvb2wgZ2V0QXV0aGVudGljYXRpb25JbmZvKGNvbnN0IGNoYXIqIHByb3Rv
Y29sU3RyLCBjb25zdCBjaGFyKiBob3N0U3RyLCBpbnQzMl90IHBvcnQsIGNvbnN0IGNoYXIqIHNj
aGVtZVN0ciwgY29uc3QgY2hhciogcmVhbG1TdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBXVEY6OkNTdHJpbmcmIHVzZXJuYW1lLCBXVEY6OkNTdHJpbmcmIHBhc3N3b3JkKTsKK3ZvaWQg
c2VuZFVzZXJDaGFuZ2VOb3RpZmljYXRpb25zKCk7CiB9IAogCiAjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViQmFzZU5ldHNjYXBlUGx1Z2luVmll
dy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViQmFzZU5ldHNjYXBlUGx1
Z2luVmlldy5tbQppbmRleCA2NGRlOTAxMGViZGIwYjA2OWQ2Zjg2M2EzZmVmMmZmZDdiNWQ0MzM4
Li40YTc2MGNmNjlkYzdlYmUwOWIyNWM0NmVjNTJkNGMyNzVjMDNlYzJiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYkJhc2VOZXRzY2FwZVBsdWdpblZpZXcu
bW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJCYXNlTmV0c2NhcGVQ
bHVnaW5WaWV3Lm1tCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNSwg
MjAwNiwgMjAwNywgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDUtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTU1LDYgKzU1LDcgQEAKICNpbXBvcnQgPFdl
YkNvcmUvU2VjdXJpdHlPcmlnaW4uaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViQ29yZU9iakNFeHRy
YXMuaD4KICNpbXBvcnQgPFdlYktpdExlZ2FjeS9ET01Qcml2YXRlLmg+CisjaW1wb3J0IDxwYWwv
c3BpL2NnL0NvcmVHcmFwaGljc1NQSS5oPgogI2ltcG9ydCA8cnVudGltZS9Jbml0aWFsaXplVGhy
ZWFkaW5nLmg+CiAjaW1wb3J0IDx3dGYvQXNzZXJ0aW9ucy5oPgogI2ltcG9ydCA8d3RmL01haW5U
aHJlYWQuaD4KQEAgLTczLDcgKzc0LDcgQEAgKyAodm9pZClpbml0aWFsaXplCiAgICAgSlNDOjpp
bml0aWFsaXplVGhyZWFkaW5nKCk7CiAgICAgV1RGOjppbml0aWFsaXplTWFpblRocmVhZFRvUHJv
Y2Vzc01haW5UaHJlYWQoKTsKICAgICBSdW5Mb29wOjppbml0aWFsaXplTWFpblJ1bkxvb3AoKTsK
LSAgICBXS1NlbmRVc2VyQ2hhbmdlTm90aWZpY2F0aW9ucygpOworICAgIFdlYktpdDo6c2VuZFVz
ZXJDaGFuZ2VOb3RpZmljYXRpb25zKCk7CiB9CiAKIC0gKGlkKWluaXRXaXRoRnJhbWU6KE5TUmVj
dClmcmFtZQpAQCAtOTAwLDYgKzkwMSwyMyBAQCBib29sIGdldEF1dGhlbnRpY2F0aW9uSW5mbyhj
b25zdCBjaGFyKiBwcm90b2NvbFN0ciwgY29uc3QgY2hhciogaG9zdFN0ciwgaW50MzJfdAogICAg
IHJldHVybiB0cnVlOwogfQogCit2b2lkIHNlbmRVc2VyQ2hhbmdlTm90aWZpY2F0aW9ucygpCit7
CisgICAgYXV0byBjb25zb2xlQ29ubmVjdGlvbkNoYW5nZU5vdGlmeVByb2MgPSBbXShDR1NOb3Rp
ZmljYXRpb25UeXBlIHR5cGUsIENHU05vdGlmaWNhdGlvbkRhdGEsIENHU0J5dGVDb3VudCwgQ0dT
Tm90aWZpY2F0aW9uQXJnKSB7CisgICAgICAgIE5TU3RyaW5nICpub3RpZmljYXRpb25OYW1lID0g
bmlsOworICAgICAgICBpZiAodHlwZSA9PSBrQ0dTZXNzaW9uQ29uc29sZUNvbm5lY3QpCisgICAg
ICAgICAgICBub3RpZmljYXRpb25OYW1lID0gTG9naW5XaW5kb3dEaWRTd2l0Y2hUb1VzZXJOb3Rp
ZmljYXRpb247CisgICAgICAgIGVsc2UgaWYgKHR5cGUgPT0ga0NHU2Vzc2lvbkNvbnNvbGVEaXNj
b25uZWN0KQorICAgICAgICAgICAgbm90aWZpY2F0aW9uTmFtZSA9IExvZ2luV2luZG93RGlkU3dp
dGNoRnJvbVVzZXJOb3RpZmljYXRpb247CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBbW05TTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRD
ZW50ZXJdIHBvc3ROb3RpZmljYXRpb25OYW1lOm5vdGlmaWNhdGlvbk5hbWUgb2JqZWN0Om5pbF07
CisgICAgfTsKKworICAgIENHU1JlZ2lzdGVyTm90aWZ5UHJvYyhjb25zb2xlQ29ubmVjdGlvbkNo
YW5nZU5vdGlmeVByb2MsIGtDR1Nlc3Npb25Db25zb2xlQ29ubmVjdCwgbnVsbHB0cik7CisgICAg
Q0dTUmVnaXN0ZXJOb3RpZnlQcm9jKGNvbnNvbGVDb25uZWN0aW9uQ2hhbmdlTm90aWZ5UHJvYywg
a0NHU2Vzc2lvbkNvbnNvbGVEaXNjb25uZWN0LCBudWxscHRyKTsKK30KKwogfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CiAKICNlbmRpZiAvLyAgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2lu
Vmlldy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVn
aW5WaWV3Lm1tCmluZGV4IGM2ODBmZjdlZTMxYzkzYjhmYjQ5MjI5N2U0ZTdhZDkxNDFhNGRkZTQu
LjBjNGEyZjQ2MTU3MDlmYzE2N2QzYWI2Yjk5MDM4NjA5YmIyOTdkOTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5WaWV3Lm1tCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5WaWV3
Lm1tCkBAIC03NCw2ICs3NCw3IEBACiAjaW1wb3J0IDxXZWJLaXRMZWdhY3kvRE9NUHJpdmF0ZS5o
PgogI2ltcG9ydCA8V2ViS2l0TGVnYWN5L1dlYlVJRGVsZWdhdGUuaD4KICNpbXBvcnQgPG9iamMv
cnVudGltZS5oPgorI2ltcG9ydCA8cGFsL3NwaS9jZy9Db3JlR3JhcGhpY3NTUEkuaD4KICNpbXBv
cnQgPHBhbC9zcGkvbWFjL1F1aWNrRHJhd1NQSS5oPgogI2ltcG9ydCA8cnVudGltZS9Jbml0aWFs
aXplVGhyZWFkaW5nLmg+CiAjaW1wb3J0IDxydW50aW1lL0pTTG9jay5oPgpAQCAtMTkzLDcgKzE5
NCw3IEBAICsgKHZvaWQpaW5pdGlhbGl6ZQogICAgIEpTQzo6aW5pdGlhbGl6ZVRocmVhZGluZygp
OwogICAgIFdURjo6aW5pdGlhbGl6ZU1haW5UaHJlYWRUb1Byb2Nlc3NNYWluVGhyZWFkKCk7CiAg
ICAgUnVuTG9vcDo6aW5pdGlhbGl6ZU1haW5SdW5Mb29wKCk7Ci0gICAgV0tTZW5kVXNlckNoYW5n
ZU5vdGlmaWNhdGlvbnMoKTsKKyAgICBzZW5kVXNlckNoYW5nZU5vdGlmaWNhdGlvbnMoKTsKIH0K
IAogLy8gTUFSSzogRVZFTlRTCkBAIC0zNzksMTAgKzM4MCwxMCBAQCAtIChQb3J0U3RhdGUpc2F2
ZUFuZFNldE5ld1BvcnRTdGF0ZUZvclVwZGF0ZTooQk9PTClmb3JVcGRhdGUKICAgICAgICAgICAg
IHFkUG9ydFN0YXRlLT5jbGlwUmVnaW9uID0gY2xpcFJlZ2lvbjsKIAogICAgICAgICAgICAgQ0dD
b250ZXh0UmVmIGN1cnJlbnRDb250ZXh0ID0gKENHQ29udGV4dFJlZilbW05TR3JhcGhpY3NDb250
ZXh0IGN1cnJlbnRDb250ZXh0XSBncmFwaGljc1BvcnRdOwotICAgICAgICAgICAgaWYgKGN1cnJl
bnRDb250ZXh0ICYmIFdLQ0dDb250ZXh0SXNCaXRtYXBDb250ZXh0KGN1cnJlbnRDb250ZXh0KSkg
ewotICAgICAgICAgICAgICAgIC8vIFdlIHVzZSBXS0NHQ29udGV4dElzQml0bWFwQ29udGV4dCBo
ZXJlLCBiZWNhdXNlIGlmIHdlIGp1c3QgY2FsbGVkIENHQml0bWFwQ29udGV4dEdldERhdGEKLSAg
ICAgICAgICAgICAgICAvLyBvbiBhbnkgY29udGV4dCwgd2UnZCBsb2cgdG8gdGhlIGNvbnNvbGUg
ZXZlcnkgdGltZS4gQnV0IGV2ZW4gaWYgV0tDR0NvbnRleHRJc0JpdG1hcENvbnRleHQKLSAgICAg
ICAgICAgICAgICAvLyByZXR1cm5zIHRydWUsIGl0IHN0aWxsIG1pZ2h0IG5vdCBiZSBhIGNvbnRl
eHQgd2UgbmVlZCB0byBjcmVhdGUgYSBHV29ybGQgZm9yOyBmb3IgZXhhbXBsZQorICAgICAgICAg
ICAgaWYgKGN1cnJlbnRDb250ZXh0ICYmIENHQ29udGV4dEdldFR5cGUoY3VycmVudENvbnRleHQp
ID09IGtDR0NvbnRleHRUeXBlQml0bWFwKSB7CisgICAgICAgICAgICAgICAgLy8gV2UgY2hlY2sg
Zm9yIGtDR0NvbnRleHRUeXBlQml0bWFwIGhlcmUsIGJlY2F1c2UgaWYgd2UganVzdCBjYWxsZWQg
Q0dCaXRtYXBDb250ZXh0R2V0RGF0YQorICAgICAgICAgICAgICAgIC8vIG9uIGFueSBjb250ZXh0
LCB3ZSdkIGxvZyB0byB0aGUgY29uc29sZSBldmVyeSB0aW1lLiBCdXQgZXZlbiBpZiBjdXJyZW50
Q29udGV4dCBpcyBhCisgICAgICAgICAgICAgICAgLy8ga0NHQ29udGV4dFR5cGVCaXRtYXAsIGl0
IHN0aWxsIG1pZ2h0IG5vdCBiZSBhIGNvbnRleHQgd2UgbmVlZCB0byBjcmVhdGUgYSBHV29ybGQg
Zm9yOyBmb3IgZXhhbXBsZQogICAgICAgICAgICAgICAgIC8vIHRyYW5zcGFyZW5jeSBsYXllcnMg
d2lsbCByZXR1cm4gdHJ1ZSwgYnV0IHJldHVybiAwIGZvciBDR0JpdG1hcENvbnRleHRHZXREYXRh
LgogICAgICAgICAgICAgICAgIHZvaWQqIG9mZnNjcmVlbkRhdGEgPSBDR0JpdG1hcENvbnRleHRH
ZXREYXRhKGN1cnJlbnRDb250ZXh0KTsKICAgICAgICAgICAgICAgICBpZiAob2Zmc2NyZWVuRGF0
YSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViU3lzdGVtSW50ZXJmYWNlLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViU3lzdGVtSW50ZXJmYWNlLm1tCmluZGV4IDZkZDBiNTdkZDRiZjM0M2ZlOTY2ZjBm
YmE2M2MxMWNmNGYwOGQ5MzIuLmZhZDExMGQzMDBkZTFiODFkZDg3ZjA3YjUwMDgxMjc2MzJkYzhi
NjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YlN5c3RlbUludGVyZmFjZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJTeXN0ZW1JbnRlcmZhY2UubW0KQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAsIDIwMTEgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IDIwMDYtMjAxNyBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQzLDE2
ICs0Myw5IEBAIHZvaWQgSW5pdFdlYkNvcmVTeXN0ZW1JbnRlcmZhY2Uodm9pZCkKICAgICAgICAg
cmV0dXJuOwogCiAgICAgSU5JVChDQUxheWVyRW51bWVyYXRlUmVjdHNCZWluZ0RyYXduV2l0aEJs
b2NrKTsKLSAgICBJTklUKENHUGF0dGVybkNyZWF0ZVdpdGhJbWFnZUFuZFRyYW5zZm9ybSk7Ci0j
aWYgIVBMQVRGT1JNKElPUykKLSAgICBJTklUKENHQ29udGV4dERyYXdzV2l0aENvcnJlY3RTaGFk
b3dPZmZzZXRzKTsKLSNlbmRpZgogICAgIElOSVQoQ29weUNPTk5FQ1RQcm94eVJlc3BvbnNlKTsK
ICNpZiAhUExBVEZPUk0oSU9TKQogICAgIElOSVQoRHJhd0JlemVsZWRUZXh0QXJlYSk7Ci0gICAg
SU5JVChEcmF3Rm9jdXNSaW5nKTsKLSAgICBJTklUKERyYXdGb2N1c1JpbmdBdFRpbWUpOwotICAg
IElOSVQoRHJhd0NlbGxGb2N1c1JpbmdXaXRoRnJhbWVBdFRpbWUpOwogICAgIElOSVQoRHJhd01l
ZGlhVUlQYXJ0KTsKICAgICBJTklUKERyYXdNZWRpYVNsaWRlclRyYWNrKTsKICAgICBJTklUKEdl
dE5TRXZlbnRLZXlDaGFyKTsKQEAgLTYwLDE1ICs1Myw5IEBAIHZvaWQgSW5pdFdlYkNvcmVTeXN0
ZW1JbnRlcmZhY2Uodm9pZCkKICAgICBJTklUKE1lYXN1cmVNZWRpYVVJUGFydCk7CiAgICAgSU5J
VChDcmVhdGVNZWRpYVVJQmFja2dyb3VuZFZpZXcpOwogICAgIElOSVQoQ3JlYXRlTWVkaWFVSUNv
bnRyb2wpOwotICAgIElOSVQoV2luZG93U2V0QWxwaGEpOwotICAgIElOSVQoV2luZG93U2V0U2Nh
bGVkRnJhbWUpOwogI2VuZGlmCiAgICAgSU5JVChTZXRDT05ORUNUUHJveHlBdXRob3JpemF0aW9u
Rm9yU3RyZWFtKTsKICAgICBJTklUKFNldENPTk5FQ1RQcm94eUZvclN0cmVhbSk7Ci0jaWYgIVBM
QVRGT1JNKElPUykKLSAgICBJTklUKFNldERyYWdJbWFnZSk7Ci0jZW5kaWYKLSAgICBJTklUKENH
Q29udGV4dElzUERGQ29udGV4dCk7CiAjaWYgRU5BQkxFKFZJREVPKSAmJiAhUExBVEZPUk0oSU9T
KQogICAgIElOSVQoUVRJbmNsdWRlT25seU1vZGVybk1lZGlhRmlsZVR5cGVzKTsKICAgICBJTklU
KFFUTW92aWVEaXNhYmxlQ29tcG9uZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJW
aWV3L1dlYkZyYW1lLm1tCmluZGV4IGYwZjhlNjI4NTgwYjI5ZmUwNDdlZGRmNmViNDc1NzhjNmQw
NWRkMmQuLmU3ZmY0ZDBjN2VhMTU0NTcwNjRhMzM4MTI5NjVhOWQ1MmJlMDAyZTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQpAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMTUgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA1LTIwMTcgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC01OTgsNyArNTk4LDcgQEAgLSAoUGFpbnRCZWhhdmlvcilfcGFpbnRCZWhhdmlvckZv
ckRlc3RpbmF0aW9uQ29udGV4dDooQ0dDb250ZXh0UmVmKWNvbnRleHQKICAgICAgICAgcmV0dXJu
IFBhaW50QmVoYXZpb3JGbGF0dGVuQ29tcG9zaXRpbmdMYXllcnMgfCBQYWludEJlaGF2aW9yU25h
cHNob3R0aW5nOwogI2VuZGlmCiAKLSAgICBpZiAoIVdLQ0dDb250ZXh0SXNCaXRtYXBDb250ZXh0
KGNvbnRleHQpKQorICAgIGlmIChDR0NvbnRleHRHZXRUeXBlKGNvbnRleHQpICE9IGtDR0NvbnRl
eHRUeXBlQml0bWFwKQogICAgICAgICByZXR1cm4gUGFpbnRCZWhhdmlvck5vcm1hbDsKIAogICAg
IC8vIElmIHdlJ3JlIGRyYXdpbmcgaW50byBhIGJpdG1hcCwgd2UgbWlnaHQgYmUgc25hcHNob3R0
aW5nLCBvciBkcmF3aW5nIGludG8gYSBsYXllci1iYWNrZWQgdmlldy4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnVsbFNjcmVlbkNvbnRyb2xsZXIubW0g
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZ1bGxTY3JlZW5Db250cm9sbGVy
Lm1tCmluZGV4IGZkOGZjNTY5OTdhZmNiNmFkN2Y5MGM1ZmM5OTg0YmEzMTc2NmU5MDcuLjNmMTA5
OTZmYzI2Zjg2NzYxZDg3OTJjMDBhN2ZiZjEyZjhlOGQ3YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnVsbFNjcmVlbkNvbnRyb2xsZXIubW0KKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGdWxsU2NyZWVuQ29udHJvbGxlci5t
bQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTEgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMTcgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC0yNDksNiArMjQ5LDE2IEBAIC0gKHZvaWQpZW50ZXJGdWxsU2NyZWVuOihOU1NjcmVl
biAqKXNjcmVlbgogICAgIF9pc0VudGVyaW5nRnVsbFNjcmVlbiA9IHRydWU7CiB9CiAKK3N0YXRp
YyB2b2lkIHNldENsaXBSZWN0Rm9yV2luZG93KE5TV2luZG93ICp3aW5kb3csIE5TUmVjdCBjbGlw
UmVjdCkKK3sKKyAgICBDR1NXaW5kb3dJRCB3aW5kb3dOdW1iZXIgPSAoQ0dTV2luZG93SUQpd2lu
ZG93LndpbmRvd051bWJlcjsKKyAgICBDR1NSZWdpb25PYmogc2hhcGU7CisgICAgQ0dSZWN0IGNn
Q2xpcFJlY3QgPSBOU1JlY3RUb0NHUmVjdChjbGlwUmVjdCk7CisgICAgQ0dTTmV3UmVnaW9uV2l0
aFJlY3QoJmNnQ2xpcFJlY3QsICZzaGFwZSk7CisgICAgQ0dTU2V0V2luZG93Q2xpcFNoYXBlKENH
U01haW5Db25uZWN0aW9uSUQoKSwgd2luZG93TnVtYmVyLCBzaGFwZSk7CisgICAgQ0dTUmVsZWFz
ZVJlZ2lvbihzaGFwZSk7Cit9CisKIC0gKHZvaWQpZmluaXNoZWRFbnRlckZ1bGxTY3JlZW5Bbmlt
YXRpb246KGJvb2wpY29tcGxldGVkCiB7CiAgICAgaWYgKCFfaXNFbnRlcmluZ0Z1bGxTY3JlZW4p
CkBAIC0yNjMsNyArMjczLDcgQEAgLSAodm9pZClmaW5pc2hlZEVudGVyRnVsbFNjcmVlbkFuaW1h
dGlvbjooYm9vbCljb21wbGV0ZWQKICAgICAgICAgCiAgICAgICAgIE5TUmVjdCB3aW5kb3dCb3Vu
ZHMgPSBbW3NlbGYgd2luZG93XSBmcmFtZV07CiAgICAgICAgIHdpbmRvd0JvdW5kcy5vcmlnaW4g
PSBOU1plcm9Qb2ludDsKLSAgICAgICAgV0tXaW5kb3dTZXRDbGlwUmVjdChbc2VsZiB3aW5kb3dd
LCB3aW5kb3dCb3VuZHMpOworICAgICAgICBzZXRDbGlwUmVjdEZvcldpbmRvdyhzZWxmLndpbmRv
dywgd2luZG93Qm91bmRzKTsKICAgICAgICAgCiAgICAgICAgIE5TV2luZG93ICp3ZWJXaW5kb3cg
PSBbX3dlYlZpZXdQbGFjZWhvbGRlci5nZXQoKSB3aW5kb3ddOwogICAgICAgICAvLyBJbiBMaW9u
LCBOU1dpbmRvdyB3aWxsIGFuaW1hdGUgaW50byBhbmQgb3V0IG9mIG9yZGVyT3V0IG9wZXJhdGlv
bnMuIFN1cHByZXNzIHRoYXQKQEAgLTM1Myw3ICszNjMsNyBAQCAtICh2b2lkKWZpbmlzaGVkRXhp
dEZ1bGxTY3JlZW5BbmltYXRpb246KGJvb2wpY29tcGxldGVkCiAgICAgCiAgICAgTlNSZWN0IHdp
bmRvd0JvdW5kcyA9IFtbc2VsZiB3aW5kb3ddIGZyYW1lXTsKICAgICB3aW5kb3dCb3VuZHMub3Jp
Z2luID0gTlNaZXJvUG9pbnQ7Ci0gICAgV0tXaW5kb3dTZXRDbGlwUmVjdChbc2VsZiB3aW5kb3dd
LCB3aW5kb3dCb3VuZHMpOworICAgIHNldENsaXBSZWN0Rm9yV2luZG93KHNlbGYud2luZG93LCB3
aW5kb3dCb3VuZHMpOwogICAgIAogICAgIFtbc2VsZiB3aW5kb3ddIG9yZGVyT3V0OnNlbGZdOwog
ICAgIFtbc2VsZiB3aW5kb3ddIHNldEZyYW1lOk5TWmVyb1JlY3QgZGlzcGxheTpZRVNdOwpAQCAt
NDg0LDEzICs0OTQsMTMgQEAgLSAodm9pZClfc3RhcnRFbnRlckZ1bGxTY3JlZW5BbmltYXRpb25X
aXRoRHVyYXRpb246KE5TVGltZUludGVydmFsKWR1cmF0aW9uCiAgICAgW19zY2FsZUFuaW1hdGlv
bi5nZXQoKSBzZXRDdXJyZW50UHJvZ3Jlc3M6MF07CiAgICAgW19zY2FsZUFuaW1hdGlvbi5nZXQo
KSBzdGFydEFuaW1hdGlvbl07CiAgICAgCi0gICAgLy8gV0tXaW5kb3dTZXRDbGlwUmVjdCB0YWtl
cyB3aW5kb3cgY29vcmRpbmF0ZXMsIHNvIGNvbnZlcnQgZnJvbSBzY3JlZW4gY29vcmRpbmF0ZXMg
aGVyZToKKyAgICAvLyBzZXRDbGlwUmVjdEZvcldpbmRvdyB0YWtlcyB3aW5kb3cgY29vcmRpbmF0
ZXMsIHNvIGNvbnZlcnQgZnJvbSBzY3JlZW4gY29vcmRpbmF0ZXMgaGVyZToKICAgICBOU1JlY3Qg
ZmluYWxCb3VuZHMgPSBfZmluYWxGcmFtZTsKICNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwdXNo
CiAjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgaWdub3JlZCAiLVdkZXByZWNhdGVkLWRlY2xhcmF0
aW9ucyIKICAgICBmaW5hbEJvdW5kcy5vcmlnaW4gPSBbW3NlbGYgd2luZG93XSBjb252ZXJ0U2Ny
ZWVuVG9CYXNlOmZpbmFsQm91bmRzLm9yaWdpbl07CiAjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMg
cG9wCi0gICAgV0tXaW5kb3dTZXRDbGlwUmVjdChbc2VsZiB3aW5kb3ddLCBmaW5hbEJvdW5kcyk7
CisgICAgc2V0Q2xpcFJlY3RGb3JXaW5kb3coc2VsZi53aW5kb3csIGZpbmFsQm91bmRzKTsKICAg
ICAKICAgICBbW3NlbGYgd2luZG93XSBtYWtlS2V5QW5kT3JkZXJGcm9udDpzZWxmXTsKICAgICAK
QEAgLTU1NiwxMyArNTY2LDEzIEBAIC0gKHZvaWQpX3N0YXJ0RXhpdEZ1bGxTY3JlZW5BbmltYXRp
b25XaXRoRHVyYXRpb246KE5TVGltZUludGVydmFsKWR1cmF0aW9uCiAgICAgCiAgICAgW19iYWNr
Z3JvdW5kV2luZG93LmdldCgpIG9yZGVyV2luZG93Ok5TV2luZG93QmVsb3cgcmVsYXRpdmVUbzpb
W3NlbGYgd2luZG93XSB3aW5kb3dOdW1iZXJdXTsKICAgICAKLSAgICAvLyBXS1dpbmRvd1NldENs
aXBSZWN0IHRha2VzIHdpbmRvdyBjb29yZGluYXRlcywgc28gY29udmVydCBmcm9tIHNjcmVlbiBj
b29yZGluYXRlcyBoZXJlOgorICAgIC8vIHNldENsaXBSZWN0Rm9yV2luZG93IHRha2VzIHdpbmRv
dyBjb29yZGluYXRlcywgc28gY29udmVydCBmcm9tIHNjcmVlbiBjb29yZGluYXRlcyBoZXJlOgog
ICAgIE5TUmVjdCBmaW5hbEJvdW5kcyA9IF9maW5hbEZyYW1lOwogI3ByYWdtYSBjbGFuZyBkaWFn
bm9zdGljIHB1c2gKICNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBpZ25vcmVkICItV2RlcHJlY2F0
ZWQtZGVjbGFyYXRpb25zIgogICAgIGZpbmFsQm91bmRzLm9yaWdpbiA9IFtbc2VsZiB3aW5kb3dd
IGNvbnZlcnRTY3JlZW5Ub0Jhc2U6ZmluYWxCb3VuZHMub3JpZ2luXTsKICNwcmFnbWEgY2xhbmcg
ZGlhZ25vc3RpYyBwb3AKLSAgICBXS1dpbmRvd1NldENsaXBSZWN0KFtzZWxmIHdpbmRvd10sIGZp
bmFsQm91bmRzKTsKKyAgICBzZXRDbGlwUmVjdEZvcldpbmRvdyhzZWxmLndpbmRvdywgZmluYWxC
b3VuZHMpOwogICAgIAogICAgIFtbc2VsZiB3aW5kb3ddIHNldEF1dG9kaXNwbGF5OllFU107CiAg
ICAgW1tzZWxmIHdpbmRvd10gZGlzcGxheUlmTmVlZGVkXTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>