<?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>176472</bug_id>
          
          <creation_ts>2017-09-06 11:37:38 -0700</creation_ts>
          <short_desc>[Mac] Upstream QTKit-related WebKitSystemInterface functions</short_desc>
          <delta_ts>2017-09-27 12:34:35 -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>
          <dependson>176614</dependson>
          
          <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>eric.carlson</cc>
    
    <cc>jer.noble</cc>
    
    <cc>joepeck</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1346022</commentid>
    <comment_count>0</comment_count>
    <who name="Andy Estes">aestes</who>
    <bug_when>2017-09-06 11:37:38 -0700</bug_when>
    <thetext>[Mac] Upstream QTKit-related WebKitSystemInterface functions</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1346024</commentid>
    <comment_count>1</comment_count>
      <attachid>320044</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2017-09-06 11:39:02 -0700</bug_when>
    <thetext>Created attachment 320044
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1346025</commentid>
    <comment_count>2</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-09-06 11:40:53 -0700</bug_when>
    <thetext>Attachment 320044 did not pass style-queue:


ERROR: Source/WebCore/platform/graphics/mac/MediaPlayerPrivateQTKit.mm:353:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/platform/graphics/mac/MediaPlayerPrivateQTKit.mm:354:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/platform/graphics/mac/MediaPlayerPrivateQTKit.mm:355:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 3 in 7 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>1346059</commentid>
    <comment_count>3</comment_count>
      <attachid>320053</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2017-09-06 13:04:53 -0700</bug_when>
    <thetext>Created attachment 320053
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1346061</commentid>
    <comment_count>4</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-09-06 13:07:18 -0700</bug_when>
    <thetext>Attachment 320053 did not pass style-queue:


ERROR: Source/WebCore/platform/graphics/mac/MediaPlayerPrivateQTKit.mm:353:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/platform/graphics/mac/MediaPlayerPrivateQTKit.mm:354:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/platform/graphics/mac/MediaPlayerPrivateQTKit.mm:355:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 3 in 7 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>1346354</commentid>
    <comment_count>5</comment_count>
      <attachid>320120</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2017-09-07 09:42:23 -0700</bug_when>
    <thetext>Created attachment 320120
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1346358</commentid>
    <comment_count>6</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-09-07 09:44:19 -0700</bug_when>
    <thetext>Attachment 320120 did not pass style-queue:


ERROR: Source/WebCore/platform/graphics/mac/MediaPlayerPrivateQTKit.mm:353:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/platform/graphics/mac/MediaPlayerPrivateQTKit.mm:354:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/platform/graphics/mac/MediaPlayerPrivateQTKit.mm:355:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 3 in 7 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>1346363</commentid>
    <comment_count>7</comment_count>
      <attachid>320121</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2017-09-07 09:53:55 -0700</bug_when>
    <thetext>Created attachment 320121
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1346364</commentid>
    <comment_count>8</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-09-07 09:55:16 -0700</bug_when>
    <thetext>Attachment 320121 did not pass style-queue:


ERROR: Source/WebCore/platform/graphics/mac/MediaPlayerPrivateQTKit.mm:353:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/platform/graphics/mac/MediaPlayerPrivateQTKit.mm:354:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/platform/graphics/mac/MediaPlayerPrivateQTKit.mm:355:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 3 in 7 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>1346389</commentid>
    <comment_count>9</comment_count>
      <attachid>320129</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2017-09-07 10:31:00 -0700</bug_when>
    <thetext>Created attachment 320129
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1346391</commentid>
    <comment_count>10</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-09-07 10:33:42 -0700</bug_when>
    <thetext>Attachment 320129 did not pass style-queue:


ERROR: Source/WebCore/platform/graphics/mac/MediaPlayerPrivateQTKit.mm:353:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/platform/graphics/mac/MediaPlayerPrivateQTKit.mm:354:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/platform/graphics/mac/MediaPlayerPrivateQTKit.mm:355:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 3 in 7 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>1346416</commentid>
    <comment_count>11</comment_count>
      <attachid>320139</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2017-09-07 10:53:29 -0700</bug_when>
    <thetext>Created attachment 320139
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1346420</commentid>
    <comment_count>12</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-09-07 10:55:55 -0700</bug_when>
    <thetext>Attachment 320139 did not pass style-queue:


ERROR: Source/WebCore/platform/graphics/mac/MediaPlayerPrivateQTKit.mm:353:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/platform/graphics/mac/MediaPlayerPrivateQTKit.mm:354:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/platform/graphics/mac/MediaPlayerPrivateQTKit.mm:355:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 3 in 7 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>1346451</commentid>
    <comment_count>13</comment_count>
      <attachid>320148</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2017-09-07 11:47:17 -0700</bug_when>
    <thetext>Created attachment 320148
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1346455</commentid>
    <comment_count>14</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-09-07 11:49:59 -0700</bug_when>
    <thetext>Attachment 320148 did not pass style-queue:


ERROR: Source/WebCore/platform/graphics/mac/MediaPlayerPrivateQTKit.mm:353:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/platform/graphics/mac/MediaPlayerPrivateQTKit.mm:354:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/platform/graphics/mac/MediaPlayerPrivateQTKit.mm:355:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 3 in 7 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>1346596</commentid>
    <comment_count>15</comment_count>
      <attachid>320192</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2017-09-07 15:42:06 -0700</bug_when>
    <thetext>Created attachment 320192
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1346597</commentid>
    <comment_count>16</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-09-07 15:43:35 -0700</bug_when>
    <thetext>Attachment 320192 did not pass style-queue:


ERROR: Source/WebCore/platform/graphics/mac/MediaPlayerPrivateQTKit.mm:355:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/platform/graphics/mac/MediaPlayerPrivateQTKit.mm:356:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/platform/graphics/mac/MediaPlayerPrivateQTKit.mm:357:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 3 in 7 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>1346609</commentid>
    <comment_count>17</comment_count>
      <attachid>320195</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2017-09-07 15:55:16 -0700</bug_when>
    <thetext>Created attachment 320195
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1346612</commentid>
    <comment_count>18</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-09-07 15:58:03 -0700</bug_when>
    <thetext>Attachment 320195 did not pass style-queue:


ERROR: Source/WebCore/platform/graphics/mac/MediaPlayerPrivateQTKit.mm:352:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/platform/graphics/mac/MediaPlayerPrivateQTKit.mm:353:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/platform/graphics/mac/MediaPlayerPrivateQTKit.mm:354:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 3 in 7 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>1346622</commentid>
    <comment_count>19</comment_count>
      <attachid>320199</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2017-09-07 16:07:02 -0700</bug_when>
    <thetext>Created attachment 320199
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1346623</commentid>
    <comment_count>20</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-09-07 16:08:47 -0700</bug_when>
    <thetext>Attachment 320199 did not pass style-queue:


ERROR: Source/WebCore/platform/graphics/mac/MediaPlayerPrivateQTKit.mm:352:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/platform/graphics/mac/MediaPlayerPrivateQTKit.mm:353:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/platform/graphics/mac/MediaPlayerPrivateQTKit.mm:354:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 3 in 7 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>1346652</commentid>
    <comment_count>21</comment_count>
      <attachid>320199</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-09-07 17:24:11 -0700</bug_when>
    <thetext>Comment on attachment 320199
Patch

Clearing flags on attachment: 320199

Committed r221773: &lt;http://trac.webkit.org/changeset/221773&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1346653</commentid>
    <comment_count>22</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-09-07 17:24:13 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1346839</commentid>
    <comment_count>23</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-09-08 10:07:28 -0700</bug_when>
    <thetext>Re-opened since this is blocked by bug 176614</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1347436</commentid>
    <comment_count>24</comment_count>
      <attachid>320436</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2017-09-11 09:58:53 -0700</bug_when>
    <thetext>Created attachment 320436
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1347469</commentid>
    <comment_count>25</comment_count>
      <attachid>320436</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-09-11 10:42:40 -0700</bug_when>
    <thetext>Comment on attachment 320436
Patch

Clearing flags on attachment: 320436

Committed r221863: &lt;http://trac.webkit.org/changeset/221863&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1347470</commentid>
    <comment_count>26</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-09-11 10:42:42 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1353490</commentid>
    <comment_count>27</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-09-27 12:34:35 -0700</bug_when>
    <thetext>&lt;rdar://problem/34693514&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>320044</attachid>
            <date>2017-09-06 11:39:02 -0700</date>
            <delta_ts>2017-09-06 13:04:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-176472-20170906113901.patch</filename>
            <type>text/plain</type>
            <size>34002</size>
            <attacher name="Andy Estes">aestes</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIxNTQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGY0NTYyNzdiYzgxMzFi
ZGRjYzJlZTEwMWRiNGYwNjZiZWU2ZGNjYS4uNDczMmZkNjcwYjg5MjUwYWNkMjRlODIxYWU0Njc5
ZDMxNWU5YWM5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDE3LTA5LTA2ICBBbmR5
IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBbTWFjXSBVcHN0cmVhbSBRVEtp
dC1yZWxhdGVkIFdlYktpdFN5c3RlbUludGVyZmFjZSBmdW5jdGlvbnMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NjQ3MgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFj
L01lZGlhUGxheWVyUHJpdmF0ZVFUS2l0Lm1tOgorICAgICAgICAoV2ViQ29yZTo6ZGlzYWJsZUNv
bXBvbmVudHNPbmNlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0
OjpjcmVhdGVRVE1vdmllKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZVFU
S2l0OjpoYXNDbG9zZWRDYXB0aW9ucyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBs
YXllclByaXZhdGVRVEtpdDo6c2V0Q2xvc2VkQ2FwdGlvbnNWaXNpYmxlKToKKyAgICAgICAgKFdl
YkNvcmU6OnNlbGVjdFByZWZlcnJlZEFsdGVybmF0ZVRyYWNrRm9yTWVkaWFUeXBlKToKKyAgICAg
ICAgKFdlYkNvcmU6OnNlbGVjdFByZWZlcnJlZEFsdGVybmF0ZXMpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6OnVwZGF0ZVN0YXRlcyk6CisgICAgICAgIChXZWJD
b3JlOjptaW1lTW9kZXJuVHlwZXNDYWNoZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXll
clByaXZhdGVRVEtpdDo6b3JpZ2luc0luTWVkaWFDYWNoZSk6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVBsYXllclByaXZhdGVRVEtpdDo6Y2xlYXJNZWRpYUNhY2hlKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0OjpjbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5zKToK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0OjpoYXNTaW5nbGVTZWN1
cml0eU9yaWdpbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVR
VEtpdDo6bW92aWVMb2FkVHlwZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXll
clByaXZhdGVRVEtpdDo6Y2FuU2F2ZU1lZGlhRGF0YSBjb25zdCk6CisgICAgICAgICogcGxhdGZv
cm0vbWFjL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMv
V2ViQ29yZVN5c3RlbUludGVyZmFjZS5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvV2ViVmlk
ZW9GdWxsc2NyZWVuSFVEV2luZG93Q29udHJvbGxlci5tbToKKyAgICAgICAgKGNyZWF0ZU1lZGlh
VUlDb250cm9sKToKKyAgICAgICAgKGNyZWF0ZUNvbnRyb2xXaXRoTWVkaWFVSUNvbnRyb2xUeXBl
KToKKyAgICAgICAgKGNyZWF0ZU1lZGlhVUlCYWNrZ3JvdW5kVmlldyk6CisgICAgICAgICgtW1dl
YlZpZGVvRnVsbHNjcmVlbkhVRFdpbmRvd0NvbnRyb2xsZXIgd2luZG93RGlkTG9hZF0pOgorCiAy
MDE3LTA5LTAyICBBbmR5IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KIAogICAgICAgICBbQ0Fd
IFVwc3RyZWFtIFF1YXJ0ekNvcmUtcmVsYXRlZCBXZWJLaXRTeXN0ZW1JbnRlcmZhY2UgZnVuY3Rp
b25zCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YkNvcmUvUEFML0NoYW5nZUxvZwppbmRleCAxMTkwMjU2NzE4ZThjMjM2ZGI4NTJmYTRlYTZjY2Y2
ODczYWUyNDVkLi4xMmE0N2E2YTY1YWVhMTYwOGRjMTQ2YTNkZTBmZThmMDkyYTNmNzRmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1BBTC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxNy0wOS0wNiAgQW5keSBFc3RlcyAg
PGFlc3Rlc0BhcHBsZS5jb20+CisKKyAgICAgICAgW01hY10gVXBzdHJlYW0gUVRLaXQtcmVsYXRl
ZCBXZWJLaXRTeXN0ZW1JbnRlcmZhY2UgZnVuY3Rpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzY0NzIKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHBhbC9zcGkvbWFjL1FUS2l0U1BJLmg6CisKIDIw
MTctMDktMDIgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIFtDQV0g
VXBzdHJlYW0gUXVhcnR6Q29yZS1yZWxhdGVkIFdlYktpdFN5c3RlbUludGVyZmFjZSBmdW5jdGlv
bnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cKaW5kZXggOTBhZTc2YTFiNTZlN2FmOTAyOTViNzQwNzc4ZWRmODA3NGU4ZDhjNy4u
Y2M3NGQ4YzRhOGM3NWNlYWIxZDFiMTQzOWE3ODJiMDM3ZTFkNWI2MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMyBAQAorMjAxNy0wOS0wNiAgQW5keSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+CisK
KyAgICAgICAgW01hY10gVXBzdHJlYW0gUVRLaXQtcmVsYXRlZCBXZWJLaXRTeXN0ZW1JbnRlcmZh
Y2UgZnVuY3Rpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNzY0NzIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYlN5c3RlbUludGVyZmFjZS5t
bToKKyAgICAgICAgKEluaXRXZWJDb3JlU3lzdGVtSW50ZXJmYWNlKToKKwogMjAxNy0wOS0wMiAg
QW5keSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+CiAKICAgICAgICAgW0NBXSBVcHN0cmVhbSBR
dWFydHpDb3JlLXJlbGF0ZWQgV2ViS2l0U3lzdGVtSW50ZXJmYWNlIGZ1bmN0aW9ucwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4IDQyMDliOWQ2ZTE5YWY1NDRjODM4YTVjOGJlODhhNDZk
NWMyYmI0YjUuLjA3YzdjYzQ4OGI3MmI1OTBmODQzMjdjNmZhYTA5ZTZmNDJkMDVhMTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxNy0wOS0wNiAgQW5k
eSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+CisKKyAgICAgICAgW01hY10gVXBzdHJlYW0gUVRL
aXQtcmVsYXRlZCBXZWJLaXRTeXN0ZW1JbnRlcmZhY2UgZnVuY3Rpb25zCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzY0NzIKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlN5
c3RlbUludGVyZmFjZS5tbToKKyAgICAgICAgKEluaXRXZWJDb3JlU3lzdGVtSW50ZXJmYWNlKToK
KwogMjAxNy0wOS0wMiAgQW5keSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+CiAKICAgICAgICAg
W0NBXSBVcHN0cmVhbSBRdWFydHpDb3JlLXJlbGF0ZWQgV2ViS2l0U3lzdGVtSW50ZXJmYWNlIGZ1
bmN0aW9ucwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvbWFjL1FUS2l0
U1BJLmggYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9tYWMvUVRLaXRTUEkuaAppbmRleCA3
MTc4OWNkZjI1ZGE4YWY0MDRiNzBhNGNiNTE5YzFjYTNkODUyZTJmLi42YWNlYThjZTRmZjA4MDE5
YTczNTYyY2RlYzZhMzQ5MTMxMzQyMjNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwv
cGFsL3NwaS9tYWMvUVRLaXRTUEkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9t
YWMvUVRLaXRTUEkuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIw
MTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC0yNyw2ICsyNywxMyBAQAogCiAjaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NE
SykgfHwgX19NQUNfT1NfWF9WRVJTSU9OX01BWF9BTExPV0VEIDwgMTAxMjAwCiAjaW1wb3J0IDxR
VEtpdC9RVEtpdC5oPgorCisjaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKKyNpbXBvcnQgPFFU
S2l0L1FUSFVEQmFja2dyb3VuZFZpZXdfUHJpdmF0ZS5oPgorI2ltcG9ydCA8UVRLaXQvUVRLaXRf
UHJpdmF0ZS5oPgorI2ltcG9ydCA8UVRLaXQvUVRVdGlsaXRpZXNfUHJpdmF0ZS5oPgorI2VuZGlm
CisKICNlbHNlCiAKIGVudW0gewpAQCAtNDgsNiArNTUsMTQgQEAgdHlwZWRlZiBlbnVtIHsKICAg
ICBRVEluY2x1ZGVDb21tb25UeXBlcyA9IDAsCiB9IFFUTW92aWVGaWxlVHlwZU9wdGlvbnM7CiAK
K2VudW0geworICAgIFFUTW92aWVUeXBlVW5rbm93biA9IDAsCisgICAgUVRNb3ZpZVR5cGVMb2Nh
bCwKKyAgICBRVE1vdmllVHlwZUZhc3RTdGFydCwKKyAgICBRVE1vdmllVHlwZUxpdmVTdHJlYW0s
CisgICAgUVRNb3ZpZVR5cGVTdG9yZWRTdHJlYW0KK307CisKIEBpbnRlcmZhY2UgUVRNZWRpYSA6
IE5TT2JqZWN0CiAKIC0gKGlkKWF0dHJpYnV0ZUZvcktleTooTlNTdHJpbmcgKilhdHRyaWJ1dGVL
ZXk7CkBAIC01OCw2ICs3Myw4IEBAIHR5cGVkZWYgZW51bSB7CiAKICsgKE5TQXJyYXkgKiltb3Zp
ZUZpbGVUeXBlczooUVRNb3ZpZUZpbGVUeXBlT3B0aW9ucyl0eXBlczsKIAorKyAodm9pZClkaXNh
YmxlQ29tcG9uZW50OihDb21wb25lbnREZXNjcmlwdGlvbiljb21wb25lbnQ7CisKIC0gKGlkKWlu
aXRXaXRoQXR0cmlidXRlczooTlNEaWN0aW9uYXJ5ICopYXR0cmlidXRlcyBlcnJvcjooTlNFcnJv
ciAqKillcnJvclB0cjsKIAogLSAodm9pZClwbGF5OwpAQCAtODEsNiArOTgsMTEgQEAgdHlwZWRl
ZiBlbnVtIHsKIAogLSAoTlNBcnJheSAqKXRyYWNrczsKIAorLSAoTlNBcnJheSAqKWFsdGVybmF0
ZUdyb3VwVHlwZXM7CistIChOU0FycmF5ICopYWx0ZXJuYXRlc0Zvck1lZGlhVHlwZTooTlNTdHJp
bmcgKil0eXBlOworLSAodm9pZClkZXNlbGVjdEFsdGVybmF0ZUdyb3VwVHJhY2s6KFFUVHJhY2sg
KilhbHRlcm5hdGVUcmFjazsKKy0gKHZvaWQpc2VsZWN0QWx0ZXJuYXRlR3JvdXBUcmFjazooUVRU
cmFjayAqKWFsdGVybmF0ZVRyYWNrOworCiBAZW5kCiAKIEBpbnRlcmZhY2UgUVRNb3ZpZUxheWVy
IDogQ0FMYXllcgpAQCAtMTA2LDQgKzEyOCwyMCBAQCB0eXBlZGVmIGVudW0gewogCiBAZW5kCiAK
K0BpbnRlcmZhY2UgUVRIVURCYWNrZ3JvdW5kVmlldyA6IE5TVmlldworCistICh2b2lkKXNldENv
bnRlbnRCb3JkZXJQb3NpdGlvbjooQ0dGbG9hdCljb250ZW50Qm9yZGVyUG9zaXRpb247CisKK0Bl
bmQKKworQGludGVyZmFjZSBRVFV0aWxpdGllcyA6IE5TT2JqZWN0CisKKysgKGlkKXF0VXRpbGl0
aWVzOworCistIChOU0FycmF5ICopc2l0ZXNJbkRvd25sb2FkQ2FjaGU7CistICh2b2lkKWNsZWFy
RG93bmxvYWRDYWNoZTsKKy0gKHZvaWQpY2xlYXJEb3dubG9hZENhY2hlRm9yU2l0ZTooTlNTdHJp
bmcgKilzaXRlOworCitAZW5kCisKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvbWFjL01lZGlhUGxheWVyUHJpdmF0ZVFUS2l0Lm1tIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL01lZGlhUGxheWVyUHJpdmF0ZVFUS2l0Lm1t
CmluZGV4IDg1Y2Y1NjFkNzMzMTc5Njc2ZWNmOGU5ZmRhYTM2ZmMwZTdlNThiMDEuLmFjMTZjYjMx
M2ExOGRiYzExMTM5Yzc3NDFmYWM5MDE2NDgzMDQ2NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9NZWRpYVBsYXllclByaXZhdGVRVEtpdC5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQbGF5ZXJQcml2YXRl
UVRLaXQubW0KQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDA4
LCAyMDA5LCAyMDEwLCAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAwNy0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNTIsNiArNTIsNyBAQCBTT0ZUX0xJTkso
UVRLaXQsIFFUTWFrZVRpbWUsIFFUVGltZSwgKGxvbmcgbG9uZyB0aW1lVmFsdWUsIGxvbmcgdGlt
ZVNjYWxlKSwgKHRpbQogCiBTT0ZUX0xJTktfQ0xBU1MoUVRLaXQsIFFUTW92aWUpCiBTT0ZUX0xJ
TktfQ0xBU1MoUVRLaXQsIFFUTW92aWVMYXllcikKK1NPRlRfTElOS19DTEFTUyhRVEtpdCwgUVRV
dGlsaXRpZXMpCiAKIFNPRlRfTElOS19QT0lOVEVSKFFUS2l0LCBRVFRyYWNrTWVkaWFUeXBlQXR0
cmlidXRlLCBOU1N0cmluZyAqKQogU09GVF9MSU5LX1BPSU5URVIoUVRLaXQsIFFUTWVkaWFUeXBl
QXR0cmlidXRlLCBOU1N0cmluZyAqKQpAQCAtNzEsNiArNzIsNyBAQCBTT0ZUX0xJTktfUE9JTlRF
UihRVEtpdCwgUVRNb3ZpZUlzQWN0aXZlQXR0cmlidXRlLCBOU1N0cmluZyAqKQogU09GVF9MSU5L
X1BPSU5URVIoUVRLaXQsIFFUTW92aWVMb2FkU3RhdGVBdHRyaWJ1dGUsIE5TU3RyaW5nICopCiBT
T0ZUX0xJTktfUE9JTlRFUihRVEtpdCwgUVRNb3ZpZUxvYWRTdGF0ZUVycm9yQXR0cmlidXRlLCBO
U1N0cmluZyAqKQogU09GVF9MSU5LX1BPSU5URVIoUVRLaXQsIFFUTW92aWVMb2FkU3RhdGVEaWRD
aGFuZ2VOb3RpZmljYXRpb24sIE5TU3RyaW5nICopCitTT0ZUX0xJTktfUE9JTlRFUihRVEtpdCwg
UVRNb3ZpZUxvYWRlZFJhbmdlc0RpZENoYW5nZU5vdGlmaWNhdGlvbiwgTlNTdHJpbmcgKik7CiBT
T0ZUX0xJTktfUE9JTlRFUihRVEtpdCwgUVRNb3ZpZU5hdHVyYWxTaXplQXR0cmlidXRlLCBOU1N0
cmluZyAqKQogU09GVF9MSU5LX1BPSU5URVIoUVRLaXQsIFFUTW92aWVDdXJyZW50U2l6ZUF0dHJp
YnV0ZSwgTlNTdHJpbmcgKikKIFNPRlRfTElOS19QT0lOVEVSKFFUS2l0LCBRVE1vdmllUHJldmVu
dEV4dGVybmFsVVJMTGlua3NBdHRyaWJ1dGUsIE5TU3RyaW5nICopCkBAIC05Nyw2ICs5OSw3IEBA
IEBlbmQKIAogI2RlZmluZSBRVE1vdmllIGdldFFUTW92aWVDbGFzcygpCiAjZGVmaW5lIFFUTW92
aWVMYXllciBnZXRRVE1vdmllTGF5ZXJDbGFzcygpCisjZGVmaW5lIFFUVXRpbGl0aWVzIGdldFFU
VXRpbGl0aWVzQ2xhc3MoKQogCiAjZGVmaW5lIFFUVHJhY2tNZWRpYVR5cGVBdHRyaWJ1dGUgZ2V0
UVRUcmFja01lZGlhVHlwZUF0dHJpYnV0ZSgpCiAjZGVmaW5lIFFUTWVkaWFUeXBlQXR0cmlidXRl
IGdldFFUTWVkaWFUeXBlQXR0cmlidXRlKCkKQEAgLTExNiw2ICsxMTksNyBAQCBAZW5kCiAjZGVm
aW5lIFFUTW92aWVMb2FkU3RhdGVBdHRyaWJ1dGUgZ2V0UVRNb3ZpZUxvYWRTdGF0ZUF0dHJpYnV0
ZSgpCiAjZGVmaW5lIFFUTW92aWVMb2FkU3RhdGVFcnJvckF0dHJpYnV0ZSBnZXRRVE1vdmllTG9h
ZFN0YXRlRXJyb3JBdHRyaWJ1dGUoKQogI2RlZmluZSBRVE1vdmllTG9hZFN0YXRlRGlkQ2hhbmdl
Tm90aWZpY2F0aW9uIGdldFFUTW92aWVMb2FkU3RhdGVEaWRDaGFuZ2VOb3RpZmljYXRpb24oKQor
I2RlZmluZSBRVE1vdmllTG9hZGVkUmFuZ2VzRGlkQ2hhbmdlTm90aWZpY2F0aW9uIGdldFFUTW92
aWVMb2FkZWRSYW5nZXNEaWRDaGFuZ2VOb3RpZmljYXRpb24oKQogI2RlZmluZSBRVE1vdmllTmF0
dXJhbFNpemVBdHRyaWJ1dGUgZ2V0UVRNb3ZpZU5hdHVyYWxTaXplQXR0cmlidXRlKCkKICNkZWZp
bmUgUVRNb3ZpZUN1cnJlbnRTaXplQXR0cmlidXRlIGdldFFUTW92aWVDdXJyZW50U2l6ZUF0dHJp
YnV0ZSgpCiAjZGVmaW5lIFFUTW92aWVQcmV2ZW50RXh0ZXJuYWxVUkxMaW5rc0F0dHJpYnV0ZSBn
ZXRRVE1vdmllUHJldmVudEV4dGVybmFsVVJMTGlua3NBdHRyaWJ1dGUoKQpAQCAtMzA3LDcgKzMx
MSw3IEBAIHN0YXRpYyB2b2lkIGRpc2FibGVDb21wb25lbnRzT25jZSgpCiAgICAgfTsKIAogICAg
IGZvciAoYXV0byYgY29tcG9uZW50IDogY29tcG9uZW50c1RvRGlzYWJsZSkKLSAgICAgICAgd2tR
VE1vdmllRGlzYWJsZUNvbXBvbmVudChjb21wb25lbnQpOworICAgICAgICBbUVRNb3ZpZSBkaXNh
YmxlQ29tcG9uZW50OmNvbXBvbmVudF07CiB9CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUVRL
aXQ6OmNyZWF0ZVFUTW92aWUoTlNVUkwgKnVybCwgTlNEaWN0aW9uYXJ5ICptb3ZpZUF0dHJpYnV0
ZXMpCkBAIC0zNDUsMTQgKzM0OSwxMCBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0Ojpj
cmVhdGVRVE1vdmllKE5TVVJMICp1cmwsIE5TRGljdGlvbmFyeSAqbW92aWVBdHRyaQogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYmplY3Q6bV9xdE1vdmll
LmdldCgpXTsKIAogICAgIC8vIEluIHVwZGF0ZVN0YXRlKCksIHdlIHRyYWNrIHdoZW4gbWF4VGlt
ZUxvYWRlZCgpID09IGR1cmF0aW9uKCkuCi0gICAgLy8gSW4gbmV3ZXIgdmVyc2lvbiBvZiBRdWlj
a1RpbWUsIGEgbm90aWZpY2F0aW9uIGlzIGVtaXR0ZWQgd2hlbiBtYXhUaW1lTG9hZGVkIGNoYW5n
ZXMuCi0gICAgLy8gSW4gb2xkZXIgdmVyc2lvbiBvZiBRdWlja1RpbWUsIFFUTW92aWVMb2FkU3Rh
dGVEaWRDaGFuZ2VOb3RpZmljYXRpb24gYmUgZmlyZWQuCi0gICAgaWYgKE5TU3RyaW5nICptYXhU
aW1lTG9hZGVkQ2hhbmdlTm90aWZpY2F0aW9uID0gd2tRVE1vdmllTWF4VGltZUxvYWRlZENoYW5n
ZU5vdGlmaWNhdGlvbigpKSB7Ci0gICAgICAgIFtbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVs
dENlbnRlcl0gYWRkT2JzZXJ2ZXI6bV9vYmpjT2JzZXJ2ZXIuZ2V0KCkKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RvcjpAc2VsZWN0b3IobG9h
ZGVkUmFuZ2VzQ2hhbmdlZDopCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG5hbWU6bWF4VGltZUxvYWRlZENoYW5nZU5vdGlmaWNhdGlvbgotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2JqZWN0Om1f
cXRNb3ZpZS5nZXQoKV07ICAgICAgICAKLSAgICB9CisgICAgW1tOU05vdGlmaWNhdGlvbkNlbnRl
ciBkZWZhdWx0Q2VudGVyXSBhZGRPYnNlcnZlcjptX29iamNPYnNlcnZlci5nZXQoKQorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0b3I6QHNlbGVjdG9y
KGxvYWRlZFJhbmdlc0NoYW5nZWQ6KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG5hbWU6UVRNb3ZpZUxvYWRlZFJhbmdlc0RpZENoYW5nZU5vdGlmaWNh
dGlvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYmpl
Y3Q6bV9xdE1vdmllLmdldCgpXTsKIAogICAgIFtbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVs
dENlbnRlcl0gYWRkT2JzZXJ2ZXI6bV9vYmpjT2JzZXJ2ZXIuZ2V0KCkKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdG9yOkBzZWxlY3RvcihyYXRlQ2hh
bmdlZDopIApAQCAtNzcxLDE4ICs3NzEsMzAgQEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVRVEtp
dDo6aGFzQ2xvc2VkQ2FwdGlvbnMoKSBjb25zdAogewogICAgIGlmICghbWV0YURhdGFBdmFpbGFi
bGUoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiB3a1FUTW92aWVIYXNDbG9z
ZWRDYXB0aW9ucyhtX3F0TW92aWUuZ2V0KCkpOyAgCisgICAgcmV0dXJuIFtbbV9xdE1vdmllIGFs
dGVybmF0ZUdyb3VwVHlwZXNdIGNvbnRhaW5zT2JqZWN0OkAiY2xjcCJdOwogfQogCiB2b2lkIE1l
ZGlhUGxheWVyUHJpdmF0ZVFUS2l0OjpzZXRDbG9zZWRDYXB0aW9uc1Zpc2libGUoYm9vbCBjbG9z
ZWRDYXB0aW9uc1Zpc2libGUpCiB7Ci0gICAgaWYgKG1ldGFEYXRhQXZhaWxhYmxlKCkpIHsKLSAg
ICAgICAgd2tRVE1vdmllU2V0U2hvd0Nsb3NlZENhcHRpb25zKG1fcXRNb3ZpZS5nZXQoKSwgY2xv
c2VkQ2FwdGlvbnNWaXNpYmxlKTsKKyAgICBpZiAoIW1ldGFEYXRhQXZhaWxhYmxlKCkpCisgICAg
ICAgIHJldHVybjsKIAotICAgICAgICBpZiAoY2xvc2VkQ2FwdGlvbnNWaXNpYmxlICYmIG1fcXRW
aWRlb0xheWVyKSB7Ci0gICAgICAgICAgICAvLyBDYXB0aW9ucyB3aWxsIGJlIHJlbmRlcmVkIHVw
c2lkZSBkb3duIHVubGVzcyB3ZSBmbGFnIHRoZSBtb3ZpZSBhcyBmbGlwcGVkIChhZ2FpbikuIFNl
ZSA8cmRhcjovLzc0MDg0NDA+LgotICAgICAgICAgICAgW21fcXRWaWRlb0xheWVyLmdldCgpIHNl
dEdlb21ldHJ5RmxpcHBlZDpZRVNdOwotICAgICAgICB9CisgICAgaWYgKCFbW21fcXRNb3ZpZSBh
bHRlcm5hdGVHcm91cFR5cGVzXSBjb250YWluc09iamVjdDpAImNsY3AiXSkKKyAgICAgICAgcmV0
dXJuOworCisgICAgTlNBcnJheSAqdHJhY2tBbHRlcm5hdGVzQXJyYXkgPSBbbV9xdE1vdmllIGFs
dGVybmF0ZXNGb3JNZWRpYVR5cGU6QCJjbGNwIl07CisgICAgUVRUcmFjayAqdHJhY2sgPSB0cmFj
a0FsdGVybmF0ZXNBcnJheVswXVtAIlFUQWx0ZXJuYXRlc19RVFRyYWNrIl07CisgICAgaWYgKCF0
cmFjaykKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKCFzaG93Q2xvc2VkQ2FwdGlvbnMpCisg
ICAgICAgIFttX3F0TW92aWUgZGVzZWxlY3RBbHRlcm5hdGVHcm91cFRyYWNrOnRyYWNrXTsKKyAg
ICBlbHNlCisgICAgICAgIFttX3F0TW92aWUgc2VsZWN0QWx0ZXJuYXRlR3JvdXBUcmFjazp0cmFj
a107CisKKyAgICBpZiAoY2xvc2VkQ2FwdGlvbnNWaXNpYmxlICYmIG1fcXRWaWRlb0xheWVyKSB7
CisgICAgICAgIC8vIENhcHRpb25zIHdpbGwgYmUgcmVuZGVyZWQgdXBzaWRlIGRvd24gdW5sZXNz
IHdlIGZsYWcgdGhlIG1vdmllIGFzIGZsaXBwZWQgKGFnYWluKS4gU2VlIDxyZGFyOi8vNzQwODQ0
MD4uCisgICAgICAgIFttX3F0VmlkZW9MYXllci5nZXQoKSBzZXRHZW9tZXRyeUZsaXBwZWQ6WUVT
XTsKICAgICB9CiB9CiAKQEAgLTk0MCw2ICs5NTIsNTggQEAgdm9pZCBNZWRpYVBsYXllclByaXZh
dGVRVEtpdDo6cHJlcGFyZUZvclJlbmRlcmluZygpCiAgICAgaWYgKGN1cnJlbnRSZW5kZXJpbmdN
b2RlKCkgPT0gTWVkaWFSZW5kZXJpbmdNb3ZpZUxheWVyIHx8IHByZWZlcnJlZFJlbmRlcmluZ01v
ZGUoKSA9PSBNZWRpYVJlbmRlcmluZ01vdmllTGF5ZXIpCiAgICAgICAgIG1fcGxheWVyLT5jbGll
bnQoKS5tZWRpYVBsYXllclJlbmRlcmluZ01vZGVDaGFuZ2VkKG1fcGxheWVyKTsKIH0KKyAgICAK
K3N0YXRpYyB2b2lkIHNlbGVjdFByZWZlcnJlZEFsdGVybmF0ZVRyYWNrRm9yTWVkaWFUeXBlKFFU
TW92aWUgKm1vdmllLCBOU1N0cmluZyAqbWVkaWFUeXBlKQoreworICAgIE5TQXJyYXkgKmFsdGVy
bmF0ZXMgPSBbbW92aWUgYWx0ZXJuYXRlc0Zvck1lZGlhVHlwZTptZWRpYVR5cGVdOworICAgIGlm
ICghYWx0ZXJuYXRlcy5jb3VudCkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byBsYW5ndWFn
ZVRvUVRUcmFja01hcCA9IGFkb3B0TlMoW1tOU011dGFibGVEaWN0aW9uYXJ5IGFsbG9jXSBpbml0
V2l0aENhcGFjaXR5OmFsdGVybmF0ZXMuY291bnRdKTsKKworICAgIGZvciAoTlNVSW50ZWdlciBp
bmRleCA9IDA7IGluZGV4IDwgYWx0ZXJuYXRlcy5jb3VudDsgKytpbmRleCkgeworICAgICAgICBO
U0RpY3Rpb25hcnkgKmFsdGVybmF0ZURpY3QgPSBhbHRlcm5hdGVzW2luZGV4XTsKKyAgICAgICAg
TlNTdHJpbmcgKmxhbmd1YWdlU3RyaW5nID0gYWx0ZXJuYXRlRGljdFtAIlFUQWx0ZXJuYXRlc19M
YW5ndWFnZUNvZGVFbmNvZGluZ19JU09fNjM5XzJUIl07CisgICAgICAgIGlmICghW2xhbmd1YWdl
U3RyaW5nIGNTdHJpbmdVc2luZ0VuY29kaW5nOmtDRlN0cmluZ0VuY29kaW5nQVNDSUldKQorICAg
ICAgICAgICAgY29udGludWU7CisgICAgICAgIGlmICghbGFuZ3VhZ2VTdHJpbmcpCisgICAgICAg
ICAgICBsYW5ndWFnZVN0cmluZyA9IGFsdGVybmF0ZURpY3RbQCJRVEFsdGVybmF0ZXNfTGFuZ3Vh
Z2VDb2RlRW5jb2RpbmdfUkZDXzQ2NDYiXTsKKyAgICAgICAgaWYgKCFsYW5ndWFnZVN0cmluZykg
eworICAgICAgICAgICAgTGFuZ0NvZGUgbGFuZ0NvZGUgPSBhbHRlcm5hdGVEaWN0W0AiUVRBbHRl
cm5hdGVzX0xhbmd1YWdlQ29kZUVuY29kaW5nX01hY1R5cGVfTGFuZ0NvZGUiXS5pbnRWYWx1ZTsK
KyAgICAgICAgICAgIGF1dG8gaWRlbnRpZmllciA9IGFkb3B0Q0YoQ0ZMb2NhbGVDcmVhdGVDYW5v
bmljYWxMb2NhbGVJZGVudGlmaWVyRnJvbVNjcmlwdE1hbmFnZXJDb2RlcyhrQ0ZBbGxvY2F0b3JE
ZWZhdWx0LCBsYW5nQ29kZSwgMCkpOworICAgICAgICAgICAgbGFuZ3VhZ2VTdHJpbmcgPSAoTlNT
dHJpbmcgKilpZGVudGlmaWVyLmF1dG9yZWxlYXNlKCk7CisgICAgICAgIH0KKyAgICAgICAgaWYg
KCFsYW5ndWFnZVN0cmluZykKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIGlkIGFs
dGVybmF0ZVRyYWNrID0gYWx0ZXJuYXRlRGljdFtAIlFUQWx0ZXJuYXRlc19RVFRyYWNrIl07Cisg
ICAgICAgIGlmICghYWx0ZXJuYXRlVHJhY2spCisgICAgICAgICAgICBjb250aW51ZTsKKworICAg
ICAgICBpZiAoIVthbHRlcm5hdGVUcmFjayBhdHRyaWJ1dGVGb3JLZXk6QCJRVFRyYWNrRW5hYmxl
ZEF0dHJpYnV0ZSJdLmJvb2xWYWx1ZSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAK
KyAgICAgICAgW2xhbmd1YWdlVG9RVFRyYWNrTWFwIHNldE9iamVjdDphbHRlcm5hdGVUcmFjayBm
b3JLZXk6bGFuZ3VhZ2VTdHJpbmddOworICAgIH0KKyAgICAKKyAgICBOU0FycmF5ICpwcmVmZXJy
ZWRMYW5ndWFnZXMgPSBbTlNCdW5kbGUgcHJlZmVycmVkTG9jYWxpemF0aW9uc0Zyb21BcnJheTpb
bGFuZ3VhZ2VUb1FUVHJhY2tNYXAgYWxsS2V5c10gZm9yUHJlZmVyZW5jZXM6bmlsXTsKKyAgICBp
ZiAocHJlZmVycmVkTGFuZ3VhZ2VzLmNvdW50KSB7CisgICAgICAgIGlkIHByZWZlcnJlZFRyYWNr
ID0gW2xhbmd1YWdlVG9RVFRyYWNrTWFwIG9iamVjdEZvcktleTpwcmVmZXJyZWRMYW5ndWFnZXNb
MF1dOworICAgICAgICBpZiAocHJlZmVycmVkVHJhY2spIHsKKyAgICAgICAgICAgIC8vICtbTlNC
dW5kbGUgcHJlZmVycmVkTG9jYWxpemF0aW9uc0Zyb21BcnJheTpmb3JQcmVmZXJlbmNlc10gbWF5
IHJldHVybiBhIGxhbmd1YWdlIHdoaWNoIHdhcworICAgICAgICAgICAgLy8gbm90IHByZXNlbnQg
aW4gcHJlZmVycmVkTGFuZ3VhZ2VzLCBhbmQgd2lsbCB0aGVyZWZvcmUgbm90IGhhdmUgYW4gYXNz
b2NpYXRlZCB0cmFjay4KKyAgICAgICAgICAgIFttb3ZpZSBzZWxlY3RBbHRlcm5hdGVHcm91cFRy
YWNrOnByZWZlcnJlZFRyYWNrXTsKKyAgICAgICAgfQorICAgIH0KK30KKworc3RhdGljIHZvaWQg
c2VsZWN0UHJlZmVycmVkQWx0ZXJuYXRlcyhRVE1vdmllICptb3ZpZSkKK3sKKyAgICBzZWxlY3RQ
cmVmZXJyZWRBbHRlcm5hdGVUcmFja0Zvck1lZGlhVHlwZShtb3ZpZSwgQCJ2aWRlIik7CisgICAg
c2VsZWN0UHJlZmVycmVkQWx0ZXJuYXRlVHJhY2tGb3JNZWRpYVR5cGUobW92aWUsIEAic291biIp
OworICAgIHNlbGVjdFByZWZlcnJlZEFsdGVybmF0ZVRyYWNrRm9yTWVkaWFUeXBlKG1vdmllLCBA
ImNwbHAiKTsKKyAgICBzZWxlY3RQcmVmZXJyZWRBbHRlcm5hdGVUcmFja0Zvck1lZGlhVHlwZSht
b3ZpZSwgQCJzYnRsIik7Cit9CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6OnVwZGF0
ZVN0YXRlcygpCiB7CkBAIC05NjUsNyArMTAyOSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRl
UVRLaXQ6OnVwZGF0ZVN0YXRlcygpCiAgICAgICAgICAgICBsb2FkU3RhdGUgPSBRVE1vdmllTG9h
ZFN0YXRlRXJyb3I7CiAKICAgICAgICAgaWYgKGxvYWRTdGF0ZSAhPSBRVE1vdmllTG9hZFN0YXRl
RXJyb3IpIHsKLSAgICAgICAgICAgIHdrUVRNb3ZpZVNlbGVjdFByZWZlcnJlZEFsdGVybmF0ZXMo
bV9xdE1vdmllLmdldCgpKTsKKyAgICAgICAgICAgIHNlbGVjdFByZWZlcnJlZEFsdGVybmF0ZXMo
bV9xdE1vdmllLmdldCgpKTsKICAgICAgICAgICAgIGNhY2hlTW92aWVTY2FsZSgpOwogICAgICAg
ICAgICAgTWVkaWFQbGF5ZXI6Ok1vdmllTG9hZFR5cGUgbW92aWVUeXBlID0gbW92aWVMb2FkVHlw
ZSgpOwogICAgICAgICAgICAgbV9pc1N0cmVhbWluZyA9IG1vdmllVHlwZSA9PSBNZWRpYVBsYXll
cjo6U3RvcmVkU3RyZWFtIHx8IG1vdmllVHlwZSA9PSBNZWRpYVBsYXllcjo6TGl2ZVN0cmVhbTsK
QEAgLTEyNzMsNyArMTMzNyw4IEBAIHN0YXRpYyBjb25zdCBIYXNoU2V0PFN0cmluZywgQVNDSUlD
YXNlSW5zZW5zaXRpdmVIYXNoPiYgbWltZUNvbW1vblR5cGVzQ2FjaGUoKQogCiBzdGF0aWMgY29u
c3QgSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mIG1pbWVNb2Rlcm5U
eXBlc0NhY2hlKCkKIHsKLSAgICBzdGF0aWMgY29uc3QgYXV0byBjYWNoZSA9IG1ha2VOZXZlckRl
c3Ryb3llZChjcmVhdGVGaWxlVHlwZXNTZXQoW1FUTW92aWUgbW92aWVGaWxlVHlwZXM6KFFUTW92
aWVGaWxlVHlwZU9wdGlvbnMpd2tRVEluY2x1ZGVPbmx5TW9kZXJuTWVkaWFGaWxlVHlwZXMoKV0p
KTsKKyAgICBzdGF0aWMgUVRNb3ZpZUZpbGVUeXBlT3B0aW9ucyBpbmNsdWRlT25seU1vZGVybk1l
ZGlhRmlsZVR5cGVzID0gMSA8PCA4OworICAgIHN0YXRpYyBjb25zdCBhdXRvIGNhY2hlID0gbWFr
ZU5ldmVyRGVzdHJveWVkKGNyZWF0ZUZpbGVUeXBlc1NldChbUVRNb3ZpZSBtb3ZpZUZpbGVUeXBl
czppbmNsdWRlT25seU1vZGVybk1lZGlhRmlsZVR5cGVzXSkpOwogICAgIHJldHVybiBjYWNoZTsK
IH0KIApAQCAtMTMyNCw3ICsxMzg5LDcgQEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6
aXNBdmFpbGFibGUoKQogSGFzaFNldDxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+PiBNZWRpYVBsYXll
clByaXZhdGVRVEtpdDo6b3JpZ2luc0luTWVkaWFDYWNoZShjb25zdCBTdHJpbmcmKQogewogICAg
IEhhc2hTZXQ8UmVmUHRyPFNlY3VyaXR5T3JpZ2luPj4gb3JpZ2luczsKLSAgICBOU0FycmF5ICpt
ZWRpYVNpdGVzID0gd2tRVEdldFNpdGVzSW5NZWRpYURvd25sb2FkQ2FjaGUoKTsKKyAgICBOU0Fy
cmF5ICptZWRpYVNpdGVzID0gW1tRVFV0aWxpdGllcyBxdFV0aWxpdGllc10gc2l0ZXNJbkRvd25s
b2FkQ2FjaGVdOwogICAgIAogICAgIGZvciAoTlNTdHJpbmcgKnNpdGUgaW4gbWVkaWFTaXRlcykg
ewogICAgICAgICBVUkwgc2l0ZUFzVVJMID0gVVJMKFVSTCgpLCBzaXRlKTsKQEAgLTEzMzcsMTQg
KzE0MDIsMTQgQEAgSGFzaFNldDxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+PiBNZWRpYVBsYXllclBy
aXZhdGVRVEtpdDo6b3JpZ2luc0luTWVkaWFDYWNoZShjb24KIHZvaWQgTWVkaWFQbGF5ZXJQcml2
YXRlUVRLaXQ6OmNsZWFyTWVkaWFDYWNoZShjb25zdCBTdHJpbmcmLCBzdGQ6OmNocm9ubzo6c3lz
dGVtX2Nsb2NrOjp0aW1lX3BvaW50KQogewogICAgIExPRyhNZWRpYSwgIk1lZGlhUGxheWVyUHJp
dmF0ZVFUS2l0OjpjbGVhck1lZGlhQ2FjaGUoKSIpOwotICAgIHdrUVRDbGVhck1lZGlhRG93bmxv
YWRDYWNoZSgpOworICAgIFtbUVRVdGlsaXRpZXMgcXRVdGlsaXRpZXNdIGNsZWFyRG93bmxvYWRD
YWNoZV07CiB9CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6OmNsZWFyTWVkaWFDYWNo
ZUZvck9yaWdpbnMoY29uc3QgU3RyaW5nJiwgY29uc3QgSGFzaFNldDxSZWZQdHI8U2VjdXJpdHlP
cmlnaW4+PiYgb3JpZ2lucykKIHsKICAgICBMT0coTWVkaWEsICJNZWRpYVBsYXllclByaXZhdGVR
VEtpdDo6Y2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2lucygpIik7CiAgICAgZm9yIChhdXRvJiBvcmln
aW4gOiBvcmlnaW5zKQotICAgICAgICB3a1FUQ2xlYXJNZWRpYURvd25sb2FkQ2FjaGVGb3JTaXRl
KG9yaWdpbi0+dG9SYXdTdHJpbmcoKSk7CisgICAgICAgIFtbUVRVdGlsaXRpZXMgcXRVdGlsaXRp
ZXNdIGNsZWFyRG93bmxvYWRDYWNoZUZvclNpdGU6b3JpZ2luLT50b1Jhd1N0cmluZygpXTsKIH0K
IAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6ZGlzYWJsZVVuc3VwcG9ydGVkVHJhY2tz
KCkKQEAgLTE0NjgsMjMgKzE1MzMsMjkgQEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6
aGFzU2luZ2xlU2VjdXJpdHlPcmlnaW4oKSBjb25zdAogICAgIGlmICghbV9xdE1vdmllKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBSZWY8U2VjdXJpdHlPcmlnaW4+IHJlc29sdmVkT3Jp
Z2luID0gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShVUkwod2tRVE1vdmllUmVzb2x2ZWRVUkwobV9x
dE1vdmllLmdldCgpKSkpOworICAgIFJlZjxTZWN1cml0eU9yaWdpbj4gcmVzb2x2ZWRPcmlnaW4g
PSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKFVSTChbbV9xdE1vdmllIFVSTF0pKTsKICAgICBSZWY8
U2VjdXJpdHlPcmlnaW4+IHJlcXVlc3RlZE9yaWdpbiA9IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGVG
cm9tU3RyaW5nKG1fbW92aWVVUkwpOwogICAgIHJldHVybiByZXNvbHZlZE9yaWdpbi0+aXNTYW1l
U2NoZW1lSG9zdFBvcnQocmVxdWVzdGVkT3JpZ2luLmdldCgpKTsKIH0KIAogTWVkaWFQbGF5ZXI6
Ok1vdmllTG9hZFR5cGUgTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6Om1vdmllTG9hZFR5cGUoKSBj
b25zdAogewotICAgIGlmICghbV9xdE1vdmllKQotICAgICAgICByZXR1cm4gTWVkaWFQbGF5ZXI6
OlVua25vd247Ci0KLSAgICBNZWRpYVBsYXllcjo6TW92aWVMb2FkVHlwZSBtb3ZpZVR5cGUgPSAo
TWVkaWFQbGF5ZXI6Ok1vdmllTG9hZFR5cGUpd2tRVE1vdmllR2V0VHlwZShtX3F0TW92aWUuZ2V0
KCkpOwotCi0gICAgLy8gQ2FuJ3QgaW5jbHVkZSBXZWJLaXRTeXN0ZW1JbnRlcmZhY2UgZnJvbSBX
ZWJDb3JlIHNvIHdlIGNhbid0IGdldCB0aGUgZW51bSByZXR1cm5lZAotICAgIC8vIGJ5IHdrUVRN
b3ZpZUdldFR5cGUsIGJ1dCBhdCBsZWFzdCB2ZXJpZnkgdGhhdCB0aGUgdmFsdWUgaXMgaW4gdGhl
IHZhbGlkIHJhbmdlLgotICAgIEFTU0VSVChtb3ZpZVR5cGUgPj0gTWVkaWFQbGF5ZXI6OlVua25v
d24gJiYgbW92aWVUeXBlIDw9IE1lZGlhUGxheWVyOjpMaXZlU3RyZWFtKTsKLQotICAgIHJldHVy
biBtb3ZpZVR5cGU7CisgICAgaWYgKCFtb3ZpZSkKKyAgICAgICAgcmV0dXJuIE1lZGlhUGxheWVy
OjpNb3ZpZUxvYWRUeXBlOjpVbmtub3duOworCisgICAgVUludDMyIG1vdmllVHlwZSA9IG1vdmll
Lm1vdmllVHlwZTsKKyAgICBzd2l0Y2ggKG1vdmllVHlwZSkgeworICAgIGNhc2UgUVRNb3ZpZVR5
cGVMb2NhbDoKKyAgICBjYXNlIFFUTW92aWVUeXBlRmFzdFN0YXJ0OgorICAgICAgICByZXR1cm4g
TWVkaWFQbGF5ZXI6Ok1vdmllTG9hZFR5cGU6OkRvd25sb2FkOworICAgIGNhc2UgUVRNb3ZpZVR5
cGVMaXZlU3RyZWFtOgorICAgICAgICByZXR1cm4gTWVkaWFQbGF5ZXI6Ok1vdmllTG9hZFR5cGU6
OkxpdmVTdHJlYW07CisgICAgY2FzZSBRVE1vdmllVHlwZVN0b3JlZFN0cmVhbToKKyAgICAgICAg
cmV0dXJuIE1lZGlhUGxheWVyOjpNb3ZpZUxvYWRUeXBlOjpTdG9yZWRTdHJlYW07CisgICAgY2Fz
ZSBRVE1vdmllVHlwZVVua25vd246CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIE1lZGlh
UGxheWVyOjpNb3ZpZUxvYWRUeXBlOjpVbmtub3duOworICAgIH0KIH0KIAogdm9pZCBNZWRpYVBs
YXllclByaXZhdGVRVEtpdDo6c2V0UHJlbG9hZChNZWRpYVBsYXllcjo6UHJlbG9hZCBwcmVsb2Fk
KQpAQCAtMTUxNSw3ICsxNTg2LDcgQEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6Y2Fu
U2F2ZU1lZGlhRGF0YSgpIGNvbnN0CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmICht
X3F0TW92aWUpCi0gICAgICAgIHVybCA9IFVSTCh3a1FUTW92aWVSZXNvbHZlZFVSTChtX3F0TW92
aWUuZ2V0KCkpKTsKKyAgICAgICAgdXJsID0gVVJMKFttX3F0TW92aWUgVVJMXSk7CiAgICAgZWxz
ZQogICAgICAgICB1cmwgPSBVUkwoUGFyc2VkVVJMU3RyaW5nLCBtX21vdmllVVJMKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVTeXN0ZW1JbnRlcmZh
Y2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNl
LmgKaW5kZXggMjNmZjIzZmNmNDU4YjQwNzg5YjAyZTBhZWMxMmIyMDAwMTFmYzViYi4uZjY3NTk1
MDlhMTFmY2UzMzQxM2ZlNjkwMzNhNDY4NTZmNTk3NDU1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oCkBAIC0xMzEsMzIg
KzEzMSw3IEBAIGV4dGVybiBkb3VibGUgKCp3a0dldE5TVVJMUmVzcG9uc2VDYWxjdWxhdGVkRXhw
aXJhdGlvbikoTlNVUkxSZXNwb25zZSAqcmVzcG9uc2UpCiBleHRlcm4gQk9PTCAoKndrR2V0TlNV
UkxSZXNwb25zZU11c3RSZXZhbGlkYXRlKShOU1VSTFJlc3BvbnNlICpyZXNwb25zZSk7CiBleHRl
cm4gQk9PTCAoKndrSGl0VGVzdE1lZGlhVUlQYXJ0KShpbnQgcGFydCwgQ0dSZWN0IGJvdW5kcywg
Q0dQb2ludCBwb2ludCk7CiBleHRlcm4gdm9pZCAoKndrTWVhc3VyZU1lZGlhVUlQYXJ0KShpbnQg
cGFydCwgQ0dSZWN0ICpib3VuZHMsIENHU2l6ZSAqbmF0dXJhbFNpemUpOwotZXh0ZXJuIE5TVmll
dyAqKCp3a0NyZWF0ZU1lZGlhVUlCYWNrZ3JvdW5kVmlldykodm9pZCk7CiAKLXR5cGVkZWYgZW51
bSB7Ci0gICAgd2tNZWRpYVVJQ29udHJvbFRpbWVsaW5lLAotICAgIHdrTWVkaWFVSUNvbnRyb2xT
bGlkZXIsCi0gICAgd2tNZWRpYVVJQ29udHJvbFBsYXlQYXVzZUJ1dHRvbiwKLSAgICB3a01lZGlh
VUlDb250cm9sRXhpdEZ1bGxzY3JlZW5CdXR0b24sCi0gICAgd2tNZWRpYVVJQ29udHJvbFJld2lu
ZEJ1dHRvbiwKLSAgICB3a01lZGlhVUlDb250cm9sRmFzdEZvcndhcmRCdXR0b24sCi0gICAgd2tN
ZWRpYVVJQ29udHJvbFZvbHVtZVVwQnV0dG9uLAotICAgIHdrTWVkaWFVSUNvbnRyb2xWb2x1bWVE
b3duQnV0dG9uCi19IHdrTWVkaWFVSUNvbnRyb2xUeXBlOwotZXh0ZXJuIE5TQ29udHJvbCAqKCp3
a0NyZWF0ZU1lZGlhVUlDb250cm9sKShpbnQpOwotCi1leHRlcm4gdW5zaWduZWQgKCp3a1FUSW5j
bHVkZU9ubHlNb2Rlcm5NZWRpYUZpbGVUeXBlcykodm9pZCk7Ci1leHRlcm4gdm9pZCAoKndrUVRN
b3ZpZURpc2FibGVDb21wb25lbnQpKHVpbnQzMl90WzVdKTsKLWV4dGVybiBmbG9hdCAoKndrUVRN
b3ZpZU1heFRpbWVMb2FkZWQpKFFUTW92aWUqKTsKLWV4dGVybiBOU1N0cmluZyAqKCp3a1FUTW92
aWVNYXhUaW1lTG9hZGVkQ2hhbmdlTm90aWZpY2F0aW9uKSh2b2lkKTsKLWV4dGVybiBpbnQgKCp3
a1FUTW92aWVHZXRUeXBlKShRVE1vdmllKik7Ci1leHRlcm4gQk9PTCAoKndrUVRNb3ZpZUhhc0Ns
b3NlZENhcHRpb25zKShRVE1vdmllKik7Ci1leHRlcm4gTlNVUkwgKigqd2tRVE1vdmllUmVzb2x2
ZWRVUkwpKFFUTW92aWUqKTsKLWV4dGVybiB2b2lkICgqd2tRVE1vdmllU2V0U2hvd0Nsb3NlZENh
cHRpb25zKShRVE1vdmllKiwgQk9PTCk7Ci1leHRlcm4gdm9pZCAoKndrUVRNb3ZpZVNlbGVjdFBy
ZWZlcnJlZEFsdGVybmF0ZXMpKFFUTW92aWUqKTsKLWV4dGVybiBOU0FycmF5ICooKndrUVRHZXRT
aXRlc0luTWVkaWFEb3dubG9hZENhY2hlKSgpOwotZXh0ZXJuIHZvaWQgKCp3a1FUQ2xlYXJNZWRp
YURvd25sb2FkQ2FjaGVGb3JTaXRlKShOU1N0cmluZyAqc2l0ZSk7Ci1leHRlcm4gdm9pZCAoKndr
UVRDbGVhck1lZGlhRG93bmxvYWRDYWNoZSkoKTsKIGV4dGVybiB2b2lkICgqd2tTZXRDb29raWVT
dG9yYWdlUHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCkoQk9PTCk7CiAjZW5kaWYKIGV4dGVybiB2b2lk
ICgqd2tTZXRDT05ORUNUUHJveHlGb3JTdHJlYW0pKENGUmVhZFN0cmVhbVJlZiwgQ0ZTdHJpbmdS
ZWYgcHJveHlIb3N0LCBDRk51bWJlclJlZiBwcm94eVBvcnQpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2UubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZVN5c3RlbUludGVyZmFjZS5tbQppbmRleCBjNzIz
ZDc0NGIwNDZkMjEwZmFhYjIyYzJhNDFkZGYwMjQ2M2RhOTNmLi4yZWFiZDRmMTRmMzkzMzZlMzM0
MGNlOGVkZWUzN2U0ODJkZDY4MDJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tYWMvV2ViQ29yZVN5c3RlbUludGVyZmFjZS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tYWMvV2ViQ29yZVN5c3RlbUludGVyZmFjZS5tbQpAQCAtMzYsMjMgKzM2LDkgQEAgdm9p
ZCAoKndrRHJhd01lZGlhU2xpZGVyVHJhY2spKENHQ29udGV4dFJlZiBjb250ZXh0LCBDR1JlY3Qg
cmVjdCwgZmxvYXQgdGltZUxvYWQKIEJPT0wgKCp3a0hpdFRlc3RNZWRpYVVJUGFydCkoaW50IHBh
cnQsIENHUmVjdCBib3VuZHMsIENHUG9pbnQgcG9pbnQpOwogdm9pZCAoKndrRHJhd01lZGlhVUlQ
YXJ0KShpbnQgcGFydCwgQ0dDb250ZXh0UmVmIGNvbnRleHQsIENHUmVjdCByZWN0LCB1bnNpZ25l
ZCBzdGF0ZSk7CiB2b2lkICgqd2tNZWFzdXJlTWVkaWFVSVBhcnQpKGludCBwYXJ0LCBDR1JlY3Qg
KmJvdW5kcywgQ0dTaXplICpuYXR1cmFsU2l6ZSk7Ci1OU1ZpZXcgKigqd2tDcmVhdGVNZWRpYVVJ
QmFja2dyb3VuZFZpZXcpKHZvaWQpOwotTlNDb250cm9sICooKndrQ3JlYXRlTWVkaWFVSUNvbnRy
b2wpKGludCk7CiBOU1RpbWVJbnRlcnZhbCAoKndrR2V0TlNVUkxSZXNwb25zZUNhbGN1bGF0ZWRF
eHBpcmF0aW9uKShOU1VSTFJlc3BvbnNlICpyZXNwb25zZSk7CiBCT09MICgqd2tHZXROU1VSTFJl
c3BvbnNlTXVzdFJldmFsaWRhdGUpKE5TVVJMUmVzcG9uc2UgKnJlc3BvbnNlKTsKIHZvaWQgKCp3
a1BvcHVwTWVudSkoTlNNZW51KiwgTlNQb2ludCBsb2NhdGlvbiwgZmxvYXQgd2lkdGgsIE5TVmll
dyosIGludCBzZWxlY3RlZEl0ZW0sIE5TRm9udCosIE5TQ29udHJvbFNpemUgY29udHJvbFNpemUs
IGJvb2wgdXNlc0N1c3RvbUFwcGVhcmFuY2UpOwotdW5zaWduZWQgKCp3a1FUSW5jbHVkZU9ubHlN
b2Rlcm5NZWRpYUZpbGVUeXBlcykodm9pZCk7Ci12b2lkICgqd2tRVE1vdmllRGlzYWJsZUNvbXBv
bmVudCkodWludDMyX3RbNV0pOwotZmxvYXQgKCp3a1FUTW92aWVNYXhUaW1lTG9hZGVkKShRVE1v
dmllKik7Ci1OU1N0cmluZyAqKCp3a1FUTW92aWVNYXhUaW1lTG9hZGVkQ2hhbmdlTm90aWZpY2F0
aW9uKSh2b2lkKTsKLWludCAoKndrUVRNb3ZpZUdldFR5cGUpKFFUTW92aWUqKTsKLUJPT0wgKCp3
a1FUTW92aWVIYXNDbG9zZWRDYXB0aW9ucykoUVRNb3ZpZSopOwotTlNVUkwgKigqd2tRVE1vdmll
UmVzb2x2ZWRVUkwpKFFUTW92aWUqKTsKLXZvaWQgKCp3a1FUTW92aWVTZXRTaG93Q2xvc2VkQ2Fw
dGlvbnMpKFFUTW92aWUqLCBCT09MKTsKLXZvaWQgKCp3a1FUTW92aWVTZWxlY3RQcmVmZXJyZWRB
bHRlcm5hdGVzKShRVE1vdmllKik7Ci1OU0FycmF5ICooKndrUVRHZXRTaXRlc0luTWVkaWFEb3du
bG9hZENhY2hlKSgpOwotdm9pZCAoKndrUVRDbGVhck1lZGlhRG93bmxvYWRDYWNoZUZvclNpdGUp
KE5TU3RyaW5nICpzaXRlKTsKLXZvaWQgKCp3a1FUQ2xlYXJNZWRpYURvd25sb2FkQ2FjaGUpKCk7
CiAKIHZvaWQgKCp3a1NldENPTk5FQ1RQcm94eUZvclN0cmVhbSkoQ0ZSZWFkU3RyZWFtUmVmLCBD
RlN0cmluZ1JlZiBwcm94eUhvc3QsIENGTnVtYmVyUmVmIHByb3h5UG9ydCk7CiB2b2lkICgqd2tT
ZXRDT05ORUNUUHJveHlBdXRob3JpemF0aW9uRm9yU3RyZWFtKShDRlJlYWRTdHJlYW1SZWYsIENG
U3RyaW5nUmVmIHByb3h5QXV0aG9yaXphdGlvblN0cmluZyk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViVmlkZW9GdWxsc2NyZWVuSFVEV2luZG93Q29udHJvbGxl
ci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJWaWRlb0Z1bGxzY3JlZW5IVURX
aW5kb3dDb250cm9sbGVyLm1tCmluZGV4IGVmYjZlMmIyNzNjNTgzNTEzM2U3NWIxNjI2YTk1YjA0
OTBjNzc5OWMuLmZjMGY1MTBjN2EyY2IyNDk3OGQwNGEwYzQ4MDZlZDRjNzFjNTMyMDEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJWaWRlb0Z1bGxzY3JlZW5IVURX
aW5kb3dDb250cm9sbGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJW
aWRlb0Z1bGxzY3JlZW5IVURXaW5kb3dDb250cm9sbGVyLm1tCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAwOS0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOS0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzEsOSArMzEsMzggQEAK
ICNpbXBvcnQgPFdlYkNvcmUvSFRNTFZpZGVvRWxlbWVudC5oPgogI2ltcG9ydCA8V2ViQ29yZVN5
c3RlbUludGVyZmFjZS5oPgogI2ltcG9ydCA8cGFsL3NwaS9jZy9Db3JlR3JhcGhpY3NTUEkuaD4K
KyNpbXBvcnQgPHBhbC9zcGkvbWFjL1FUS2l0U1BJLmg+CisjaW1wb3J0IDx3dGYvU29mdExpbmtp
bmcuaD4KKworU09GVF9MSU5LX0ZSQU1FV09SSyhRVEtpdCkKKworU09GVF9MSU5LX0NMQVNTKFFU
S2l0LCBRVEhVREJhY2tncm91bmRWaWV3KQorU09GVF9MSU5LX0NMQVNTKFFUS2l0LCBRVEhVREJ1
dHRvbikKK1NPRlRfTElOS19DTEFTUyhRVEtpdCwgUVRIVURTbGlkZXIpCitTT0ZUX0xJTktfQ0xB
U1MoUVRLaXQsIFFUSFVEVGltZWxpbmUpCisKKyNkZWZpbmUgUVRIVURCYWNrZ3JvdW5kVmlldyBn
ZXRRVEhVREJhY2tncm91bmRWaWV3Q2xhc3MoKQorI2RlZmluZSBRVEhVREJ1dHRvbiBnZXRRVEhV
REJ1dHRvbkNsYXNzKCkKKyNkZWZpbmUgUVRIVURTbGlkZXIgZ2V0UVRIVURTbGlkZXJDbGFzcygp
CisjZGVmaW5lIFFUSFVEVGltZWxpbmUgZ2V0UVRIVURUaW1lbGluZUNsYXNzKCkKIAogdXNpbmcg
bmFtZXNwYWNlIFdlYkNvcmU7CiAKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworZW51bSBjbGFzcyBN
ZWRpYVVJQ29udHJvbCB7CisgICAgVGltZWxpbmUsCisgICAgU2xpZGVyLAorICAgIFBsYXlQYXVz
ZUJ1dHRvbiwKKyAgICBFeGl0RnVsbHNjcmVlbkJ1dHRvbiwKKyAgICBSZXdpbmRCdXR0b24sCisg
ICAgRmFzdEZvcndhcmRCdXR0b24sCisgICAgVm9sdW1lVXBCdXR0b24sCisgICAgVm9sdW1lRG93
bkJ1dHRvbiwKK307CisKK30KKwogQGludGVyZmFjZSBXZWJWaWRlb0Z1bGxzY3JlZW5IVURXaW5k
b3dDb250cm9sbGVyIChQcml2YXRlKSA8TlNXaW5kb3dEZWxlZ2F0ZT4KIAogLSAodm9pZCl1cGRh
dGVUaW1lOwpAQCAtMjY1LDEwICsyOTQsNjggQEAgLSAodm9pZCljbG9zZVdpbmRvdwogICAgIFtz
ZWxmIHNldFdpbmRvdzpuaWxdOwogfQogCi1zdGF0aWMgTlNDb250cm9sICpjcmVhdGVDb250cm9s
V2l0aE1lZGlhVUlDb250cm9sVHlwZShpbnQgY29udHJvbFR5cGUsIE5TUmVjdCBmcmFtZSkKK3N0
YXRpYyBOU0NvbnRyb2wgKmNyZWF0ZU1lZGlhVUlDb250cm9sKE1lZGlhVUlDb250cm9sIGNvbnRy
b2xUeXBlKQoreworICAgIHN3aXRjaCAoY29udHJvbFR5cGUpIHsKKyAgICBjYXNlIE1lZGlhVUlD
b250cm9sOjpUaW1lbGluZTogeworICAgICAgICBOU1NsaWRlciAqc2xpZGVyID0gW1tRVEhVRFRp
bWVsaW5lIGFsbG9jXSBpbml0XTsKKyAgICAgICAgW1tzbGlkZXIgY2VsbF0gc2V0Q29udGludW91
czpZRVNdOworICAgICAgICByZXR1cm4gc2xpZGVyOworICAgIH0KKyAgICBjYXNlIE1lZGlhVUlD
b250cm9sOjpTbGlkZXI6IHsKKyAgICAgICAgTlNCdXR0b24gKnNsaWRlciA9IFtbUVRIVURTbGlk
ZXIgYWxsb2NdIGluaXRdOworICAgICAgICBbW3NsaWRlciBjZWxsXSBzZXRDb250aW51b3VzOllF
U107CisgICAgICAgIHJldHVybiBzbGlkZXI7CisgICAgfQorICAgIGNhc2UgTWVkaWFVSUNvbnRy
b2w6OlBsYXlQYXVzZUJ1dHRvbjogeworICAgICAgICBOU0J1dHRvbiAqYnV0dG9uID0gW1tRVEhV
REJ1dHRvbiBhbGxvY10gaW5pdF07CisgICAgICAgIFtidXR0b24gc2V0SW1hZ2U6W05TSW1hZ2Ug
aW1hZ2VOYW1lZDpAIk5TUGxheVRlbXBsYXRlIl1dOworICAgICAgICBbYnV0dG9uIHNldEFsdGVy
bmF0ZUltYWdlOltOU0ltYWdlIGltYWdlTmFtZWQ6QCJOU1BhdXNlUVRQcml2YXRlVGVtcGxhdGUi
XV07CisKKyAgICAgICAgW1tidXR0b24gY2VsbF0gc2V0U2hvd3NTdGF0ZUJ5Ok5TQ29udGVudHND
ZWxsTWFza107CisgICAgICAgIFtidXR0b24gc2V0Qm9yZGVyZWQ6Tk9dOworICAgICAgICByZXR1
cm4gYnV0dG9uOworICAgIH0KKyAgICBjYXNlIE1lZGlhVUlDb250cm9sOjpFeGl0RnVsbHNjcmVl
bkJ1dHRvbjogeworICAgICAgICBOU0J1dHRvbiAqYnV0dG9uID0gW1tRVEhVREJ1dHRvbiBhbGxv
Y10gaW5pdF07CisgICAgICAgIFtidXR0b24gc2V0SW1hZ2U6W05TSW1hZ2UgaW1hZ2VOYW1lZDpA
Ik5TRXhpdEZ1bGxTY3JlZW5UZW1wbGF0ZSJdXTsKKyAgICAgICAgW2J1dHRvbiBzZXRCb3JkZXJl
ZDpOT107CisgICAgICAgIHJldHVybiBidXR0b247CisgICAgfQorICAgIGNhc2UgTWVkaWFVSUNv
bnRyb2w6OlJld2luZEJ1dHRvbjogeworICAgICAgICBOU0J1dHRvbiAqYnV0dG9uID0gW1tRVEhV
REJ1dHRvbiBhbGxvY10gaW5pdF07CisgICAgICAgIFtidXR0b24gc2V0SW1hZ2U6W05TSW1hZ2Ug
aW1hZ2VOYW1lZDpAIk5TUmV3aW5kVGVtcGxhdGUiXV07CisgICAgICAgIFtidXR0b24gc2V0Qm9y
ZGVyZWQ6Tk9dOworICAgICAgICByZXR1cm4gYnV0dG9uOworICAgIH0KKyAgICBjYXNlIE1lZGlh
VUlDb250cm9sOjpGYXN0Rm9yd2FyZEJ1dHRvbjogeworICAgICAgICBOU0J1dHRvbiAqYnV0dG9u
ID0gW1tRVEhVREJ1dHRvbiBhbGxvY10gaW5pdF07CisgICAgICAgIFtidXR0b24gc2V0SW1hZ2U6
W05TSW1hZ2UgaW1hZ2VOYW1lZDpAIk5TRmFzdEZvcndhcmRUZW1wbGF0ZSJdXTsKKyAgICAgICAg
W2J1dHRvbiBzZXRCb3JkZXJlZDpOT107CisgICAgICAgIHJldHVybiBidXR0b247CisgICAgfQor
ICAgIGNhc2UgTWVkaWFVSUNvbnRyb2w6OlZvbHVtZVVwQnV0dG9uOiB7CisgICAgICAgIE5TQnV0
dG9uICpidXR0b24gPSBbW1FUSFVEQnV0dG9uIGFsbG9jXSBpbml0XTsKKyAgICAgICAgW2J1dHRv
biBzZXRJbWFnZTpbTlNJbWFnZSBpbWFnZU5hbWVkOkAiTlNBdWRpb091dHB1dFZvbHVtZUhpZ2hU
ZW1wbGF0ZSJdXTsKKyAgICAgICAgW2J1dHRvbiBzZXRCb3JkZXJlZDpOT107CisgICAgICAgIHJl
dHVybiBidXR0b247CisgICAgfQorICAgIGNhc2UgTWVkaWFVSUNvbnRyb2w6OlZvbHVtZURvd25C
dXR0b246IHsKKyAgICAgICAgTlNCdXR0b24gKmJ1dHRvbiA9IFtbUVRIVURCdXR0b24gYWxsb2Nd
IGluaXRdOworICAgICAgICBbYnV0dG9uIHNldEltYWdlOltOU0ltYWdlIGltYWdlTmFtZWQ6QCJO
U0F1ZGlvT3V0cHV0Vm9sdW1lTG93VGVtcGxhdGUiXV07CisgICAgICAgIFtidXR0b24gc2V0Qm9y
ZGVyZWQ6Tk9dOworICAgICAgICByZXR1cm4gYnV0dG9uOworICAgIH0KKyAgICB9CisKKyAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gbmlsOworfQorCitzdGF0aWMgTlNDb250
cm9sICpjcmVhdGVDb250cm9sV2l0aE1lZGlhVUlDb250cm9sVHlwZShNZWRpYVVJQ29udHJvbCBj
b250cm9sVHlwZSwgTlNSZWN0IGZyYW1lKQogewotICAgIE5TQ29udHJvbCAqY29udHJvbCA9IHdr
Q3JlYXRlTWVkaWFVSUNvbnRyb2woY29udHJvbFR5cGUpOwotICAgIFtjb250cm9sIHNldEZyYW1l
OmZyYW1lXTsKKyAgICBOU0NvbnRyb2wgKmNvbnRyb2wgPSBjcmVhdGVNZWRpYVVJQ29udHJvbChj
b250cm9sVHlwZSk7CisgICAgY29udHJvbC5mcmFtZSA9IGZyYW1lOwogICAgIHJldHVybiBjb250
cm9sOwogfQogCkBAIC0yODUsNiArMzcyLDIxIEBAIHN0YXRpYyBOU1RleHRGaWVsZCAqY3JlYXRl
VGltZVRleHRGaWVsZChOU1JlY3QgZnJhbWUpCiAgICAgcmV0dXJuIHRleHRGaWVsZDsKIH0KIAor
c3RhdGljIE5TVmlldyAqY3JlYXRlTWVkaWFVSUJhY2tncm91bmRWaWV3KCkKK3sKKyAgICBpZCB2
aWV3ID0gW1tRVEhVREJhY2tncm91bmRWaWV3IGFsbG9jXSBpbml0XTsKKworICAgIGNvbnN0IENH
RmxvYXQgcXVpY2tUaW1lUGxheWVySFVESGVpZ2h0ID0gNTk7CisgICAgY29uc3QgQ0dGbG9hdCBx
dWlja1RpbWVQbGF5ZXJIVURDb250ZW50Qm9yZGVyUG9zaXRpb24gPSAzODsKKworI3ByYWdtYSBj
bGFuZyBkaWFnbm9zdGljIHB1c2gKKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBpZ25vcmVkICIt
V2RlcHJlY2F0ZWQtZGVjbGFyYXRpb25zIgorICAgIFt2aWV3IHNldENvbnRlbnRCb3JkZXJQb3Np
dGlvbjpxdWlja1RpbWVQbGF5ZXJIVURDb250ZW50Qm9yZGVyUG9zaXRpb24gLyBxdWlja1RpbWVQ
bGF5ZXJIVURIZWlnaHRdOworI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHBvcAorCisgICAgcmV0
dXJuIHZpZXc7Cit9CisKIC0gKHZvaWQpd2luZG93RGlkTG9hZAogewogICAgIHN0YXRpYyBjb25z
dCBDR0Zsb2F0IGhvcml6b250YWxNYXJnaW4gPSAxMDsKQEAgLTMxMCw3ICs0MTIsNyBAQCAtICh2
b2lkKXdpbmRvd0RpZExvYWQKICAgICBOU1dpbmRvdyAqd2luZG93ID0gW3NlbGYgd2luZG93XTsK
ICAgICBBU1NFUlQod2luZG93KTsKIAotICAgIE5TVmlldyAqYmFja2dyb3VuZCA9IHdrQ3JlYXRl
TWVkaWFVSUJhY2tncm91bmRWaWV3KCk7CisgICAgTlNWaWV3ICpiYWNrZ3JvdW5kID0gY3JlYXRl
TWVkaWFVSUJhY2tncm91bmRWaWV3KCk7CiAKICAgICBbd2luZG93IHNldENvbnRlbnRWaWV3OmJh
Y2tncm91bmRdOwogICAgIF9hcmVhID0gW1tOU1RyYWNraW5nQXJlYSBhbGxvY10gaW5pdFdpdGhS
ZWN0OltiYWNrZ3JvdW5kIGJvdW5kc10gb3B0aW9uczpOU1RyYWNraW5nTW91c2VFbnRlcmVkQW5k
RXhpdGVkIHwgTlNUcmFja2luZ0FjdGl2ZUFsd2F5cyBvd25lcjpzZWxmIHVzZXJJbmZvOm5pbF07
CkBAIC0zMjAsMTQgKzQyMiwxNCBAQCAtICh2b2lkKXdpbmRvd0RpZExvYWQKICAgICBOU1ZpZXcg
KmNvbnRlbnRWaWV3ID0gW3dpbmRvdyBjb250ZW50Vmlld107CiAKICAgICBDR0Zsb2F0IGNlbnRl
ciA9IENHRmxvb3IoKHdpbmRvd1dpZHRoIC0gcGxheUJ1dHRvbldpZHRoKSAvIDIpOwotICAgIF9w
bGF5QnV0dG9uID0gKE5TQnV0dG9uICopY3JlYXRlQ29udHJvbFdpdGhNZWRpYVVJQ29udHJvbFR5
cGUod2tNZWRpYVVJQ29udHJvbFBsYXlQYXVzZUJ1dHRvbiwgTlNNYWtlUmVjdChjZW50ZXIsIHdp
bmRvd0hlaWdodCAtIHBsYXlCdXR0b25Ub3BNYXJnaW4gLSBwbGF5QnV0dG9uSGVpZ2h0LCBwbGF5
QnV0dG9uV2lkdGgsIHBsYXlCdXR0b25IZWlnaHQpKTsKKyAgICBfcGxheUJ1dHRvbiA9IChOU0J1
dHRvbiAqKWNyZWF0ZUNvbnRyb2xXaXRoTWVkaWFVSUNvbnRyb2xUeXBlKE1lZGlhVUlDb250cm9s
OjpQbGF5UGF1c2VCdXR0b24sIE5TTWFrZVJlY3QoY2VudGVyLCB3aW5kb3dIZWlnaHQgLSBwbGF5
QnV0dG9uVG9wTWFyZ2luIC0gcGxheUJ1dHRvbkhlaWdodCwgcGxheUJ1dHRvbldpZHRoLCBwbGF5
QnV0dG9uSGVpZ2h0KSk7CiAgICAgQVNTRVJUKFtfcGxheUJ1dHRvbiBpc0tpbmRPZkNsYXNzOltO
U0J1dHRvbiBjbGFzc11dKTsKICAgICBbX3BsYXlCdXR0b24gc2V0VGFyZ2V0OnNlbGZdOwogICAg
IFtfcGxheUJ1dHRvbiBzZXRBY3Rpb246QHNlbGVjdG9yKHRvZ2dsZVBsYXlpbmc6KV07CiAgICAg
W2NvbnRlbnRWaWV3IGFkZFN1YnZpZXc6X3BsYXlCdXR0b25dOwogCiAgICAgQ0dGbG9hdCBjbG9z
ZVRvUmlnaHQgPSB3aW5kb3dXaWR0aCAtIGhvcml6b250YWxNYXJnaW4gLSBleGl0RnVsbHNjcmVl
bkJ1dHRvbldpZHRoOwotICAgIE5TQ29udHJvbCAqZXhpdEZ1bGxzY3JlZW5CdXR0b24gPSBjcmVh
dGVDb250cm9sV2l0aE1lZGlhVUlDb250cm9sVHlwZSh3a01lZGlhVUlDb250cm9sRXhpdEZ1bGxz
Y3JlZW5CdXR0b24sIE5TTWFrZVJlY3QoY2xvc2VUb1JpZ2h0LCB3aW5kb3dIZWlnaHQgLSBleGl0
RnVsbHNjcmVlbkJ1dHRvblRvcE1hcmdpbiAtIGV4aXRGdWxsc2NyZWVuQnV0dG9uSGVpZ2h0LCBl
eGl0RnVsbHNjcmVlbkJ1dHRvbldpZHRoLCBleGl0RnVsbHNjcmVlbkJ1dHRvbkhlaWdodCkpOwor
ICAgIE5TQ29udHJvbCAqZXhpdEZ1bGxzY3JlZW5CdXR0b24gPSBjcmVhdGVDb250cm9sV2l0aE1l
ZGlhVUlDb250cm9sVHlwZShNZWRpYVVJQ29udHJvbDo6RXhpdEZ1bGxzY3JlZW5CdXR0b24sIE5T
TWFrZVJlY3QoY2xvc2VUb1JpZ2h0LCB3aW5kb3dIZWlnaHQgLSBleGl0RnVsbHNjcmVlbkJ1dHRv
blRvcE1hcmdpbiAtIGV4aXRGdWxsc2NyZWVuQnV0dG9uSGVpZ2h0LCBleGl0RnVsbHNjcmVlbkJ1
dHRvbldpZHRoLCBleGl0RnVsbHNjcmVlbkJ1dHRvbkhlaWdodCkpOwogICAgIFtleGl0RnVsbHNj
cmVlbkJ1dHRvbiBzZXRBY3Rpb246QHNlbGVjdG9yKGV4aXRGdWxsc2NyZWVuOildOwogICAgIFtl
eGl0RnVsbHNjcmVlbkJ1dHRvbiBzZXRUYXJnZXQ6c2VsZl07CiAgICAgW2NvbnRlbnRWaWV3IGFk
ZFN1YnZpZXc6ZXhpdEZ1bGxzY3JlZW5CdXR0b25dOwpAQCAtMzM1LDI3ICs0MzcsMjcgQEAgLSAo
dm9pZCl3aW5kb3dEaWRMb2FkCiAgICAgCiAgICAgQ0dGbG9hdCB2b2x1bWVDb250cm9sc0JvdHRv
bSA9IHdpbmRvd0hlaWdodCAtIHZvbHVtZUNvbnRyb2xzVG9wTWFyZ2luIC0gdm9sdW1lQnV0dG9u
SGVpZ2h0OwogICAgIENHRmxvYXQgbGVmdCA9IGhvcml6b250YWxNYXJnaW47Ci0gICAgTlNDb250
cm9sICp2b2x1bWVEb3duQnV0dG9uID0gY3JlYXRlQ29udHJvbFdpdGhNZWRpYVVJQ29udHJvbFR5
cGUod2tNZWRpYVVJQ29udHJvbFZvbHVtZURvd25CdXR0b24sIE5TTWFrZVJlY3QobGVmdCwgdm9s
dW1lQ29udHJvbHNCb3R0b20sIHZvbHVtZUJ1dHRvbldpZHRoLCB2b2x1bWVCdXR0b25IZWlnaHQp
KTsKKyAgICBOU0NvbnRyb2wgKnZvbHVtZURvd25CdXR0b24gPSBjcmVhdGVDb250cm9sV2l0aE1l
ZGlhVUlDb250cm9sVHlwZShNZWRpYVVJQ29udHJvbDo6Vm9sdW1lRG93bkJ1dHRvbiwgTlNNYWtl
UmVjdChsZWZ0LCB2b2x1bWVDb250cm9sc0JvdHRvbSwgdm9sdW1lQnV0dG9uV2lkdGgsIHZvbHVt
ZUJ1dHRvbkhlaWdodCkpOwogICAgIFtjb250ZW50VmlldyBhZGRTdWJ2aWV3OnZvbHVtZURvd25C
dXR0b25dOwogICAgIFt2b2x1bWVEb3duQnV0dG9uIHNldFRhcmdldDpzZWxmXTsKICAgICBbdm9s
dW1lRG93bkJ1dHRvbiBzZXRBY3Rpb246QHNlbGVjdG9yKHNldFZvbHVtZVRvWmVybzopXTsKICAg
ICBbdm9sdW1lRG93bkJ1dHRvbiByZWxlYXNlXTsKIAogICAgIGxlZnQgKz0gdm9sdW1lQnV0dG9u
V2lkdGg7Ci0gICAgX3ZvbHVtZVNsaWRlciA9IGNyZWF0ZUNvbnRyb2xXaXRoTWVkaWFVSUNvbnRy
b2xUeXBlKHdrTWVkaWFVSUNvbnRyb2xTbGlkZXIsIE5TTWFrZVJlY3QobGVmdCwgdm9sdW1lQ29u
dHJvbHNCb3R0b20gKyBDR0Zsb29yKCh2b2x1bWVCdXR0b25IZWlnaHQgLSB2b2x1bWVTbGlkZXJI
ZWlnaHQpIC8gMiksIHZvbHVtZVNsaWRlcldpZHRoLCB2b2x1bWVTbGlkZXJIZWlnaHQpKTsKKyAg
ICBfdm9sdW1lU2xpZGVyID0gY3JlYXRlQ29udHJvbFdpdGhNZWRpYVVJQ29udHJvbFR5cGUoTWVk
aWFVSUNvbnRyb2w6OlNsaWRlciwgTlNNYWtlUmVjdChsZWZ0LCB2b2x1bWVDb250cm9sc0JvdHRv
bSArIENHRmxvb3IoKHZvbHVtZUJ1dHRvbkhlaWdodCAtIHZvbHVtZVNsaWRlckhlaWdodCkgLyAy
KSwgdm9sdW1lU2xpZGVyV2lkdGgsIHZvbHVtZVNsaWRlckhlaWdodCkpOwogICAgIFtfdm9sdW1l
U2xpZGVyIHNldFZhbHVlOltOU051bWJlciBudW1iZXJXaXRoRG91YmxlOltzZWxmIG1heFZvbHVt
ZV1dIGZvcktleTpAIm1heFZhbHVlIl07CiAgICAgW192b2x1bWVTbGlkZXIgc2V0VGFyZ2V0OnNl
bGZdOwogICAgIFtfdm9sdW1lU2xpZGVyIHNldEFjdGlvbjpAc2VsZWN0b3Iodm9sdW1lQ2hhbmdl
ZDopXTsKICAgICBbY29udGVudFZpZXcgYWRkU3Vidmlldzpfdm9sdW1lU2xpZGVyXTsKIAogICAg
IGxlZnQgKz0gdm9sdW1lU2xpZGVyV2lkdGggKyB2b2x1bWVVcEJ1dHRvbkxlZnRNYXJnaW47Ci0g
ICAgTlNDb250cm9sICp2b2x1bWVVcEJ1dHRvbiA9IGNyZWF0ZUNvbnRyb2xXaXRoTWVkaWFVSUNv
bnRyb2xUeXBlKHdrTWVkaWFVSUNvbnRyb2xWb2x1bWVVcEJ1dHRvbiwgTlNNYWtlUmVjdChsZWZ0
LCB2b2x1bWVDb250cm9sc0JvdHRvbSwgdm9sdW1lQnV0dG9uV2lkdGgsIHZvbHVtZUJ1dHRvbkhl
aWdodCkpOworICAgIE5TQ29udHJvbCAqdm9sdW1lVXBCdXR0b24gPSBjcmVhdGVDb250cm9sV2l0
aE1lZGlhVUlDb250cm9sVHlwZShNZWRpYVVJQ29udHJvbDo6Vm9sdW1lVXBCdXR0b24sIE5TTWFr
ZVJlY3QobGVmdCwgdm9sdW1lQ29udHJvbHNCb3R0b20sIHZvbHVtZUJ1dHRvbldpZHRoLCB2b2x1
bWVCdXR0b25IZWlnaHQpKTsKICAgICBbdm9sdW1lVXBCdXR0b24gc2V0VGFyZ2V0OnNlbGZdOwog
ICAgIFt2b2x1bWVVcEJ1dHRvbiBzZXRBY3Rpb246QHNlbGVjdG9yKHNldFZvbHVtZVRvTWF4aW11
bTopXTsKICAgICBbY29udGVudFZpZXcgYWRkU3Vidmlldzp2b2x1bWVVcEJ1dHRvbl07CiAgICAg
W3ZvbHVtZVVwQnV0dG9uIHJlbGVhc2VdOwogCi0gICAgX3RpbWVsaW5lID0gd2tDcmVhdGVNZWRp
YVVJQ29udHJvbCh3a01lZGlhVUlDb250cm9sVGltZWxpbmUpOworICAgIF90aW1lbGluZSA9IGNy
ZWF0ZU1lZGlhVUlDb250cm9sKE1lZGlhVUlDb250cm9sOjpUaW1lbGluZSk7CiAKICAgICBbX3Rp
bWVsaW5lIHNldFRhcmdldDpzZWxmXTsKICAgICBbX3RpbWVsaW5lIHNldEFjdGlvbjpAc2VsZWN0
b3IodGltZWxpbmVQb3NpdGlvbkNoYW5nZWQ6KV07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYlN5c3RlbUludGVyZmFjZS5tbSBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViU3lzdGVtSW50ZXJm
YWNlLm1tCmluZGV4IDBkZGQ1NzE0NTliODU2ZjM5MjA1ZTExMGNjMDBjY2NhZWUzZmQwZWUuLmJk
YTVkNzNkZmMxMjJmM2UwMjIzYWFhZTU1Mjg0ZDRiMzllNTczY2UgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViU3lzdGVtSW50ZXJmYWNl
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2Vi
U3lzdGVtSW50ZXJmYWNlLm1tCkBAIC00MywxOCArNDMsNiBAQCB2b2lkIEluaXRXZWJDb3JlU3lz
dGVtSW50ZXJmYWNlKHZvaWQpCiAgICAgICAgIElOSVQoRHJhd01lZGlhVUlQYXJ0KTsKICAgICAg
ICAgSU5JVChIaXRUZXN0TWVkaWFVSVBhcnQpOwogICAgICAgICBJTklUKE1lYXN1cmVNZWRpYVVJ
UGFydCk7Ci0gICAgICAgIElOSVQoUVRJbmNsdWRlT25seU1vZGVybk1lZGlhRmlsZVR5cGVzKTsK
LSAgICAgICAgSU5JVChRVE1vdmllRGlzYWJsZUNvbXBvbmVudCk7Ci0gICAgICAgIElOSVQoUVRN
b3ZpZUdldFR5cGUpOwotICAgICAgICBJTklUKFFUTW92aWVIYXNDbG9zZWRDYXB0aW9ucyk7Ci0g
ICAgICAgIElOSVQoUVRNb3ZpZU1heFRpbWVMb2FkZWQpOwotICAgICAgICBJTklUKFFUTW92aWVN
YXhUaW1lTG9hZGVkQ2hhbmdlTm90aWZpY2F0aW9uKTsKLSAgICAgICAgSU5JVChRVE1vdmllUmVz
b2x2ZWRVUkwpOwotICAgICAgICBJTklUKFFUTW92aWVTZWxlY3RQcmVmZXJyZWRBbHRlcm5hdGVz
KTsKLSAgICAgICAgSU5JVChRVE1vdmllU2V0U2hvd0Nsb3NlZENhcHRpb25zKTsKLSAgICAgICAg
SU5JVChRVEdldFNpdGVzSW5NZWRpYURvd25sb2FkQ2FjaGUpOwotICAgICAgICBJTklUKFFUQ2xl
YXJNZWRpYURvd25sb2FkQ2FjaGVGb3JTaXRlKTsKLSAgICAgICAgSU5JVChRVENsZWFyTWVkaWFE
b3dubG9hZENhY2hlKTsKICNlbmRpZgogICAgICAgICBJTklUKFNldENPTk5FQ1RQcm94eUF1dGhv
cml6YXRpb25Gb3JTdHJlYW0pOwogICAgICAgICBJTklUKFNldENPTk5FQ1RQcm94eUZvclN0cmVh
bSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJTeXN0ZW1JbnRlcmZhY2UubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJTeXN0ZW1JbnRlcmZhY2UubW0KaW5kZXggYTMyMDI0NTM3Y2FlNzc0MDRkMTIyYTNh
Mzg1NGQzYzJlN2JhMjQ5MC4uMTc0NjU4NmIyNDJmNTJlMDdhOTlmZTkxNWFhNmI0ZjYyYTNiYzVk
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
U3lzdGVtSW50ZXJmYWNlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYlN5c3RlbUludGVyZmFjZS5tbQpAQCAtNDksMjUgKzQ5LDkgQEAgdm9pZCBJbml0
V2ViQ29yZVN5c3RlbUludGVyZmFjZSh2b2lkKQogICAgIElOSVQoRHJhd01lZGlhU2xpZGVyVHJh
Y2spOwogICAgIElOSVQoSGl0VGVzdE1lZGlhVUlQYXJ0KTsKICAgICBJTklUKE1lYXN1cmVNZWRp
YVVJUGFydCk7Ci0gICAgSU5JVChDcmVhdGVNZWRpYVVJQmFja2dyb3VuZFZpZXcpOwotICAgIElO
SVQoQ3JlYXRlTWVkaWFVSUNvbnRyb2wpOwogI2VuZGlmCiAgICAgSU5JVChTZXRDT05ORUNUUHJv
eHlBdXRob3JpemF0aW9uRm9yU3RyZWFtKTsKICAgICBJTklUKFNldENPTk5FQ1RQcm94eUZvclN0
cmVhbSk7Ci0jaWYgRU5BQkxFKFZJREVPKSAmJiAhUExBVEZPUk0oSU9TKQotICAgIElOSVQoUVRJ
bmNsdWRlT25seU1vZGVybk1lZGlhRmlsZVR5cGVzKTsKLSAgICBJTklUKFFUTW92aWVEaXNhYmxl
Q29tcG9uZW50KTsKLSAgICBJTklUKFFUTW92aWVNYXhUaW1lTG9hZGVkKTsKLSAgICBJTklUKFFU
TW92aWVNYXhUaW1lTG9hZGVkQ2hhbmdlTm90aWZpY2F0aW9uKTsKLSAgICBJTklUKFFUTW92aWVH
ZXRUeXBlKTsKLSAgICBJTklUKFFUTW92aWVIYXNDbG9zZWRDYXB0aW9ucyk7Ci0gICAgSU5JVChR
VE1vdmllUmVzb2x2ZWRVUkwpOwotICAgIElOSVQoUVRNb3ZpZVNldFNob3dDbG9zZWRDYXB0aW9u
cyk7Ci0gICAgSU5JVChRVE1vdmllU2VsZWN0UHJlZmVycmVkQWx0ZXJuYXRlcyk7Ci0gICAgSU5J
VChRVEdldFNpdGVzSW5NZWRpYURvd25sb2FkQ2FjaGUpOwotICAgIElOSVQoUVRDbGVhck1lZGlh
RG93bmxvYWRDYWNoZUZvclNpdGUpOwotICAgIElOSVQoUVRDbGVhck1lZGlhRG93bmxvYWRDYWNo
ZSk7Ci0jZW5kaWYKIAogI2lmICFQTEFURk9STShJT1MpCiAgICAgSU5JVChFeGVjdXRhYmxlV2Fz
TGlua2VkT25PckJlZm9yZVNub3dMZW9wYXJkKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>320053</attachid>
            <date>2017-09-06 13:04:53 -0700</date>
            <delta_ts>2017-09-07 09:42:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-176472-20170906130452.patch</filename>
            <type>text/plain</type>
            <size>34182</size>
            <attacher name="Andy Estes">aestes</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIxNjg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDY5MjY5MTkxOTNmNWE2
MjdjNmRiYzQyNDFiYTVlY2M3ZDdhNmU3NC4uMzU1ZmFhYTcyZDQxZDk2MDkwMmM3MDQyMjI4MGNi
ZmZiOWYzNjY1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDE3LTA5LTA2ICBBbmR5
IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBbTWFjXSBVcHN0cmVhbSBRVEtp
dC1yZWxhdGVkIFdlYktpdFN5c3RlbUludGVyZmFjZSBmdW5jdGlvbnMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NjQ3MgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFj
L01lZGlhUGxheWVyUHJpdmF0ZVFUS2l0Lm1tOgorICAgICAgICAoV2ViQ29yZTo6ZGlzYWJsZUNv
bXBvbmVudHNPbmNlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0
OjpjcmVhdGVRVE1vdmllKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZVFU
S2l0OjpoYXNDbG9zZWRDYXB0aW9ucyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBs
YXllclByaXZhdGVRVEtpdDo6c2V0Q2xvc2VkQ2FwdGlvbnNWaXNpYmxlKToKKyAgICAgICAgKFdl
YkNvcmU6OnNlbGVjdFByZWZlcnJlZEFsdGVybmF0ZVRyYWNrRm9yTWVkaWFUeXBlKToKKyAgICAg
ICAgKFdlYkNvcmU6OnNlbGVjdFByZWZlcnJlZEFsdGVybmF0ZXMpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6OnVwZGF0ZVN0YXRlcyk6CisgICAgICAgIChXZWJD
b3JlOjptaW1lTW9kZXJuVHlwZXNDYWNoZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXll
clByaXZhdGVRVEtpdDo6b3JpZ2luc0luTWVkaWFDYWNoZSk6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVBsYXllclByaXZhdGVRVEtpdDo6Y2xlYXJNZWRpYUNhY2hlKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0OjpjbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5zKToK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0OjpoYXNTaW5nbGVTZWN1
cml0eU9yaWdpbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVR
VEtpdDo6bW92aWVMb2FkVHlwZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXll
clByaXZhdGVRVEtpdDo6Y2FuU2F2ZU1lZGlhRGF0YSBjb25zdCk6CisgICAgICAgICogcGxhdGZv
cm0vbWFjL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMv
V2ViQ29yZVN5c3RlbUludGVyZmFjZS5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvV2ViVmlk
ZW9GdWxsc2NyZWVuSFVEV2luZG93Q29udHJvbGxlci5tbToKKyAgICAgICAgKGNyZWF0ZU1lZGlh
VUlDb250cm9sKToKKyAgICAgICAgKGNyZWF0ZUNvbnRyb2xXaXRoTWVkaWFVSUNvbnRyb2xUeXBl
KToKKyAgICAgICAgKGNyZWF0ZU1lZGlhVUlCYWNrZ3JvdW5kVmlldyk6CisgICAgICAgICgtW1dl
YlZpZGVvRnVsbHNjcmVlbkhVRFdpbmRvd0NvbnRyb2xsZXIgd2luZG93RGlkTG9hZF0pOgorCiAy
MDE3LTA5LTA2ICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUkVHUkVT
U0lPTiAocjIyMTU5OCk6IExlZ2FjeSAicm91bmQiIGFuZCAiYmV2ZWwiIG9wdGlvbnMgY2FuIG5v
IGxvbmdlciBiZSB1c2VkIHdpdGggdGhlIGxlZ2FjeSBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQg
c2V0TGluZUpvaW4gb3BlcmF0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwppbmRleCBlZTQwZTQ2MTc1NTk2
YmM1MjJmMzE3YzZjNTk4ZGIwODRjMTczYzU2Li45ZTQwM2VlNTdhZTVmMjBkNjIwNTQ1ZmNkNTg5
YWMwZWJmOWI3MDA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxNy0w
OS0wNiAgQW5keSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+CisKKyAgICAgICAgW01hY10gVXBz
dHJlYW0gUVRLaXQtcmVsYXRlZCBXZWJLaXRTeXN0ZW1JbnRlcmZhY2UgZnVuY3Rpb25zCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzY0NzIKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHBhbC9zcGkvbWFj
L1FUS2l0U1BJLmg6CisKIDIwMTctMDktMDQgIENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3
ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIyMjE0OTQgYW5k
IHIyMjE1MDAuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDM2NGQ4ZTVkODBkMjU1ZDY5MzZmYjJlMWEwYmQ0NjM3YWI1
OWEwNmUuLmZkN2I2OGY1NjVhOWFlYTc2MWQ4ZTQzMTg3NzE4YTM4YjJhYzU5NDYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTMgQEAKKzIwMTctMDktMDYgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUu
Y29tPgorCisgICAgICAgIFtNYWNdIFVwc3RyZWFtIFFUS2l0LXJlbGF0ZWQgV2ViS2l0U3lzdGVt
SW50ZXJmYWNlIGZ1bmN0aW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTc2NDcyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJTeXN0ZW1JbnRl
cmZhY2UubW06CisgICAgICAgIChJbml0V2ViQ29yZVN5c3RlbUludGVyZmFjZSk6CisKIDIwMTct
MDktMDYgIEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CiAKICAgICAgICAgRGVu
eSB0aGlyZC1wYXJ0eSBjb29raWUgY3JlYXRpb24gZm9yIHByZXZhbGVudCByZXNvdXJjZXMgd2l0
aG91dCBpbnRlcmFjdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4IDdlNTFlYmFm
NmJmZjhlZmIxZmNjY2Q4MWQyODQwZmY3MmI0NGM1ZTguLjVkZTU2MjNkMmQwYjViNTI5YWI0NDU0
YzEyYzhjYjExOGQwMzYzYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxMyBAQAorMjAxNy0wOS0wNiAgQW5keSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+CisKKyAg
ICAgICAgW01hY10gVXBzdHJlYW0gUVRLaXQtcmVsYXRlZCBXZWJLaXRTeXN0ZW1JbnRlcmZhY2Ug
ZnVuY3Rpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNzY0NzIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIFdlYkNvcmVTdXBwb3J0L1dlYlN5c3RlbUludGVyZmFjZS5tbToKKyAgICAgICAgKEluaXRX
ZWJDb3JlU3lzdGVtSW50ZXJmYWNlKToKKwogMjAxNy0wOS0wNSAgVGltIEhvcnRvbiAgPHRpbW90
aHlfaG9ydG9uQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgc29tZSB1bnVzZWQgYml0cyBv
ZiBjb2RlIGFuZCByZXNvdXJjZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwv
c3BpL21hYy9RVEtpdFNQSS5oIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvbWFjL1FUS2l0
U1BJLmgKaW5kZXggNzE3ODljZGYyNWRhOGFmNDA0YjcwYTRjYjUxOWMxY2EzZDg1MmUyZi4uYzkw
MTg2M2ViYzM4Mjc0NWMzNWZiNzc5ODI3Y2ViOTIyZWY3MWJmZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvUEFML3BhbC9zcGkvbWFjL1FUS2l0U1BJLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
UEFML3BhbC9zcGkvbWFjL1FUS2l0U1BJLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxNi0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjUsOCArMjUsMTYgQEAKIAogI3ByYWdtYSBvbmNl
CiAKLSNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKSB8fCBfX01BQ19PU19YX1ZFUlNJT05fTUFY
X0FMTE9XRUQgPCAxMDEyMDAKKyNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUFYX0FMTE9XRUQgPCAx
MDEyMDAKKwogI2ltcG9ydCA8UVRLaXQvUVRLaXQuaD4KKworI2lmIFVTRShBUFBMRV9JTlRFUk5B
TF9TREspCisKKyNpbXBvcnQgPFFUS2l0L1FUSFVEQmFja2dyb3VuZFZpZXdfUHJpdmF0ZS5oPgor
I2ltcG9ydCA8UVRLaXQvUVRLaXRfUHJpdmF0ZS5oPgorI2ltcG9ydCA8UVRLaXQvUVRVdGlsaXRp
ZXNfUHJpdmF0ZS5oPgorCiAjZWxzZQogCiBlbnVtIHsKQEAgLTQ4LDYgKzU2LDE0IEBAIHR5cGVk
ZWYgZW51bSB7CiAgICAgUVRJbmNsdWRlQ29tbW9uVHlwZXMgPSAwLAogfSBRVE1vdmllRmlsZVR5
cGVPcHRpb25zOwogCitlbnVtIHsKKyAgICBRVE1vdmllVHlwZVVua25vd24gPSAwLAorICAgIFFU
TW92aWVUeXBlTG9jYWwsCisgICAgUVRNb3ZpZVR5cGVGYXN0U3RhcnQsCisgICAgUVRNb3ZpZVR5
cGVMaXZlU3RyZWFtLAorICAgIFFUTW92aWVUeXBlU3RvcmVkU3RyZWFtCit9OworCiBAaW50ZXJm
YWNlIFFUTWVkaWEgOiBOU09iamVjdAogCiAtIChpZClhdHRyaWJ1dGVGb3JLZXk6KE5TU3RyaW5n
ICopYXR0cmlidXRlS2V5OwpAQCAtNTgsNiArNzQsOCBAQCB0eXBlZGVmIGVudW0gewogCiArIChO
U0FycmF5ICopbW92aWVGaWxlVHlwZXM6KFFUTW92aWVGaWxlVHlwZU9wdGlvbnMpdHlwZXM7CiAK
KysgKHZvaWQpZGlzYWJsZUNvbXBvbmVudDooQ29tcG9uZW50RGVzY3JpcHRpb24pY29tcG9uZW50
OworCiAtIChpZClpbml0V2l0aEF0dHJpYnV0ZXM6KE5TRGljdGlvbmFyeSAqKWF0dHJpYnV0ZXMg
ZXJyb3I6KE5TRXJyb3IgKiopZXJyb3JQdHI7CiAKIC0gKHZvaWQpcGxheTsKQEAgLTgxLDYgKzk5
LDExIEBAIHR5cGVkZWYgZW51bSB7CiAKIC0gKE5TQXJyYXkgKil0cmFja3M7CiAKKy0gKE5TQXJy
YXkgKilhbHRlcm5hdGVHcm91cFR5cGVzOworLSAoTlNBcnJheSAqKWFsdGVybmF0ZXNGb3JNZWRp
YVR5cGU6KE5TU3RyaW5nICopdHlwZTsKKy0gKHZvaWQpZGVzZWxlY3RBbHRlcm5hdGVHcm91cFRy
YWNrOihRVFRyYWNrICopYWx0ZXJuYXRlVHJhY2s7CistICh2b2lkKXNlbGVjdEFsdGVybmF0ZUdy
b3VwVHJhY2s6KFFUVHJhY2sgKilhbHRlcm5hdGVUcmFjazsKKwogQGVuZAogCiBAaW50ZXJmYWNl
IFFUTW92aWVMYXllciA6IENBTGF5ZXIKQEAgLTEwNiw0ICsxMjksMjIgQEAgdHlwZWRlZiBlbnVt
IHsKIAogQGVuZAogCitAaW50ZXJmYWNlIFFUSFVEQmFja2dyb3VuZFZpZXcgOiBOU1ZpZXcKKwor
LSAodm9pZClzZXRDb250ZW50Qm9yZGVyUG9zaXRpb246KENHRmxvYXQpY29udGVudEJvcmRlclBv
c2l0aW9uOworCitAZW5kCisKK0BpbnRlcmZhY2UgUVRVdGlsaXRpZXMgOiBOU09iamVjdAorCisr
IChpZClxdFV0aWxpdGllczsKKworLSAoTlNBcnJheSAqKXNpdGVzSW5Eb3dubG9hZENhY2hlOwor
LSAodm9pZCljbGVhckRvd25sb2FkQ2FjaGU7CistICh2b2lkKWNsZWFyRG93bmxvYWRDYWNoZUZv
clNpdGU6KE5TU3RyaW5nICopc2l0ZTsKKworQGVuZAorCiAjZW5kaWYKKworI2VuZGlmIC8vIF9f
TUFDX09TX1hfVkVSU0lPTl9NQVhfQUxMT1dFRCA8IDEwMTIwMApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL01lZGlhUGxheWVyUHJpdmF0ZVFUS2l0Lm1t
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL01lZGlhUGxheWVyUHJpdmF0
ZVFUS2l0Lm1tCmluZGV4IDg1Y2Y1NjFkNzMzMTc5Njc2ZWNmOGU5ZmRhYTM2ZmMwZTdlNThiMDEu
LmFjMTZjYjMxM2ExOGRiYzExMTM5Yzc3NDFmYWM5MDE2NDgzMDQ2NTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9NZWRpYVBsYXllclByaXZhdGVRVEtp
dC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQbGF5
ZXJQcml2YXRlUVRLaXQubW0KQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDA3LCAyMDA4LCAyMDA5LCAyMDEwLCAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNy0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNTIsNiArNTIsNyBAQCBT
T0ZUX0xJTksoUVRLaXQsIFFUTWFrZVRpbWUsIFFUVGltZSwgKGxvbmcgbG9uZyB0aW1lVmFsdWUs
IGxvbmcgdGltZVNjYWxlKSwgKHRpbQogCiBTT0ZUX0xJTktfQ0xBU1MoUVRLaXQsIFFUTW92aWUp
CiBTT0ZUX0xJTktfQ0xBU1MoUVRLaXQsIFFUTW92aWVMYXllcikKK1NPRlRfTElOS19DTEFTUyhR
VEtpdCwgUVRVdGlsaXRpZXMpCiAKIFNPRlRfTElOS19QT0lOVEVSKFFUS2l0LCBRVFRyYWNrTWVk
aWFUeXBlQXR0cmlidXRlLCBOU1N0cmluZyAqKQogU09GVF9MSU5LX1BPSU5URVIoUVRLaXQsIFFU
TWVkaWFUeXBlQXR0cmlidXRlLCBOU1N0cmluZyAqKQpAQCAtNzEsNiArNzIsNyBAQCBTT0ZUX0xJ
TktfUE9JTlRFUihRVEtpdCwgUVRNb3ZpZUlzQWN0aXZlQXR0cmlidXRlLCBOU1N0cmluZyAqKQog
U09GVF9MSU5LX1BPSU5URVIoUVRLaXQsIFFUTW92aWVMb2FkU3RhdGVBdHRyaWJ1dGUsIE5TU3Ry
aW5nICopCiBTT0ZUX0xJTktfUE9JTlRFUihRVEtpdCwgUVRNb3ZpZUxvYWRTdGF0ZUVycm9yQXR0
cmlidXRlLCBOU1N0cmluZyAqKQogU09GVF9MSU5LX1BPSU5URVIoUVRLaXQsIFFUTW92aWVMb2Fk
U3RhdGVEaWRDaGFuZ2VOb3RpZmljYXRpb24sIE5TU3RyaW5nICopCitTT0ZUX0xJTktfUE9JTlRF
UihRVEtpdCwgUVRNb3ZpZUxvYWRlZFJhbmdlc0RpZENoYW5nZU5vdGlmaWNhdGlvbiwgTlNTdHJp
bmcgKik7CiBTT0ZUX0xJTktfUE9JTlRFUihRVEtpdCwgUVRNb3ZpZU5hdHVyYWxTaXplQXR0cmli
dXRlLCBOU1N0cmluZyAqKQogU09GVF9MSU5LX1BPSU5URVIoUVRLaXQsIFFUTW92aWVDdXJyZW50
U2l6ZUF0dHJpYnV0ZSwgTlNTdHJpbmcgKikKIFNPRlRfTElOS19QT0lOVEVSKFFUS2l0LCBRVE1v
dmllUHJldmVudEV4dGVybmFsVVJMTGlua3NBdHRyaWJ1dGUsIE5TU3RyaW5nICopCkBAIC05Nyw2
ICs5OSw3IEBAIEBlbmQKIAogI2RlZmluZSBRVE1vdmllIGdldFFUTW92aWVDbGFzcygpCiAjZGVm
aW5lIFFUTW92aWVMYXllciBnZXRRVE1vdmllTGF5ZXJDbGFzcygpCisjZGVmaW5lIFFUVXRpbGl0
aWVzIGdldFFUVXRpbGl0aWVzQ2xhc3MoKQogCiAjZGVmaW5lIFFUVHJhY2tNZWRpYVR5cGVBdHRy
aWJ1dGUgZ2V0UVRUcmFja01lZGlhVHlwZUF0dHJpYnV0ZSgpCiAjZGVmaW5lIFFUTWVkaWFUeXBl
QXR0cmlidXRlIGdldFFUTWVkaWFUeXBlQXR0cmlidXRlKCkKQEAgLTExNiw2ICsxMTksNyBAQCBA
ZW5kCiAjZGVmaW5lIFFUTW92aWVMb2FkU3RhdGVBdHRyaWJ1dGUgZ2V0UVRNb3ZpZUxvYWRTdGF0
ZUF0dHJpYnV0ZSgpCiAjZGVmaW5lIFFUTW92aWVMb2FkU3RhdGVFcnJvckF0dHJpYnV0ZSBnZXRR
VE1vdmllTG9hZFN0YXRlRXJyb3JBdHRyaWJ1dGUoKQogI2RlZmluZSBRVE1vdmllTG9hZFN0YXRl
RGlkQ2hhbmdlTm90aWZpY2F0aW9uIGdldFFUTW92aWVMb2FkU3RhdGVEaWRDaGFuZ2VOb3RpZmlj
YXRpb24oKQorI2RlZmluZSBRVE1vdmllTG9hZGVkUmFuZ2VzRGlkQ2hhbmdlTm90aWZpY2F0aW9u
IGdldFFUTW92aWVMb2FkZWRSYW5nZXNEaWRDaGFuZ2VOb3RpZmljYXRpb24oKQogI2RlZmluZSBR
VE1vdmllTmF0dXJhbFNpemVBdHRyaWJ1dGUgZ2V0UVRNb3ZpZU5hdHVyYWxTaXplQXR0cmlidXRl
KCkKICNkZWZpbmUgUVRNb3ZpZUN1cnJlbnRTaXplQXR0cmlidXRlIGdldFFUTW92aWVDdXJyZW50
U2l6ZUF0dHJpYnV0ZSgpCiAjZGVmaW5lIFFUTW92aWVQcmV2ZW50RXh0ZXJuYWxVUkxMaW5rc0F0
dHJpYnV0ZSBnZXRRVE1vdmllUHJldmVudEV4dGVybmFsVVJMTGlua3NBdHRyaWJ1dGUoKQpAQCAt
MzA3LDcgKzMxMSw3IEBAIHN0YXRpYyB2b2lkIGRpc2FibGVDb21wb25lbnRzT25jZSgpCiAgICAg
fTsKIAogICAgIGZvciAoYXV0byYgY29tcG9uZW50IDogY29tcG9uZW50c1RvRGlzYWJsZSkKLSAg
ICAgICAgd2tRVE1vdmllRGlzYWJsZUNvbXBvbmVudChjb21wb25lbnQpOworICAgICAgICBbUVRN
b3ZpZSBkaXNhYmxlQ29tcG9uZW50OmNvbXBvbmVudF07CiB9CiAKIHZvaWQgTWVkaWFQbGF5ZXJQ
cml2YXRlUVRLaXQ6OmNyZWF0ZVFUTW92aWUoTlNVUkwgKnVybCwgTlNEaWN0aW9uYXJ5ICptb3Zp
ZUF0dHJpYnV0ZXMpCkBAIC0zNDUsMTQgKzM0OSwxMCBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0
ZVFUS2l0OjpjcmVhdGVRVE1vdmllKE5TVVJMICp1cmwsIE5TRGljdGlvbmFyeSAqbW92aWVBdHRy
aQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYmplY3Q6
bV9xdE1vdmllLmdldCgpXTsKIAogICAgIC8vIEluIHVwZGF0ZVN0YXRlKCksIHdlIHRyYWNrIHdo
ZW4gbWF4VGltZUxvYWRlZCgpID09IGR1cmF0aW9uKCkuCi0gICAgLy8gSW4gbmV3ZXIgdmVyc2lv
biBvZiBRdWlja1RpbWUsIGEgbm90aWZpY2F0aW9uIGlzIGVtaXR0ZWQgd2hlbiBtYXhUaW1lTG9h
ZGVkIGNoYW5nZXMuCi0gICAgLy8gSW4gb2xkZXIgdmVyc2lvbiBvZiBRdWlja1RpbWUsIFFUTW92
aWVMb2FkU3RhdGVEaWRDaGFuZ2VOb3RpZmljYXRpb24gYmUgZmlyZWQuCi0gICAgaWYgKE5TU3Ry
aW5nICptYXhUaW1lTG9hZGVkQ2hhbmdlTm90aWZpY2F0aW9uID0gd2tRVE1vdmllTWF4VGltZUxv
YWRlZENoYW5nZU5vdGlmaWNhdGlvbigpKSB7Ci0gICAgICAgIFtbTlNOb3RpZmljYXRpb25DZW50
ZXIgZGVmYXVsdENlbnRlcl0gYWRkT2JzZXJ2ZXI6bV9vYmpjT2JzZXJ2ZXIuZ2V0KCkKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RvcjpAc2Vs
ZWN0b3IobG9hZGVkUmFuZ2VzQ2hhbmdlZDopCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6bWF4VGltZUxvYWRlZENoYW5nZU5vdGlmaWNh
dGlvbgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
b2JqZWN0Om1fcXRNb3ZpZS5nZXQoKV07ICAgICAgICAKLSAgICB9CisgICAgW1tOU05vdGlmaWNh
dGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXSBhZGRPYnNlcnZlcjptX29iamNPYnNlcnZlci5nZXQo
KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0b3I6
QHNlbGVjdG9yKGxvYWRlZFJhbmdlc0NoYW5nZWQ6KQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6UVRNb3ZpZUxvYWRlZFJhbmdlc0RpZENoYW5n
ZU5vdGlmaWNhdGlvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBvYmplY3Q6bV9xdE1vdmllLmdldCgpXTsKIAogICAgIFtbTlNOb3RpZmljYXRpb25DZW50
ZXIgZGVmYXVsdENlbnRlcl0gYWRkT2JzZXJ2ZXI6bV9vYmpjT2JzZXJ2ZXIuZ2V0KCkKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdG9yOkBzZWxlY3Rv
cihyYXRlQ2hhbmdlZDopIApAQCAtNzcxLDE4ICs3NzEsMzAgQEAgYm9vbCBNZWRpYVBsYXllclBy
aXZhdGVRVEtpdDo6aGFzQ2xvc2VkQ2FwdGlvbnMoKSBjb25zdAogewogICAgIGlmICghbWV0YURh
dGFBdmFpbGFibGUoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiB3a1FUTW92
aWVIYXNDbG9zZWRDYXB0aW9ucyhtX3F0TW92aWUuZ2V0KCkpOyAgCisgICAgcmV0dXJuIFtbbV9x
dE1vdmllIGFsdGVybmF0ZUdyb3VwVHlwZXNdIGNvbnRhaW5zT2JqZWN0OkAiY2xjcCJdOwogfQog
CiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0OjpzZXRDbG9zZWRDYXB0aW9uc1Zpc2libGUo
Ym9vbCBjbG9zZWRDYXB0aW9uc1Zpc2libGUpCiB7Ci0gICAgaWYgKG1ldGFEYXRhQXZhaWxhYmxl
KCkpIHsKLSAgICAgICAgd2tRVE1vdmllU2V0U2hvd0Nsb3NlZENhcHRpb25zKG1fcXRNb3ZpZS5n
ZXQoKSwgY2xvc2VkQ2FwdGlvbnNWaXNpYmxlKTsKKyAgICBpZiAoIW1ldGFEYXRhQXZhaWxhYmxl
KCkpCisgICAgICAgIHJldHVybjsKIAotICAgICAgICBpZiAoY2xvc2VkQ2FwdGlvbnNWaXNpYmxl
ICYmIG1fcXRWaWRlb0xheWVyKSB7Ci0gICAgICAgICAgICAvLyBDYXB0aW9ucyB3aWxsIGJlIHJl
bmRlcmVkIHVwc2lkZSBkb3duIHVubGVzcyB3ZSBmbGFnIHRoZSBtb3ZpZSBhcyBmbGlwcGVkIChh
Z2FpbikuIFNlZSA8cmRhcjovLzc0MDg0NDA+LgotICAgICAgICAgICAgW21fcXRWaWRlb0xheWVy
LmdldCgpIHNldEdlb21ldHJ5RmxpcHBlZDpZRVNdOwotICAgICAgICB9CisgICAgaWYgKCFbW21f
cXRNb3ZpZSBhbHRlcm5hdGVHcm91cFR5cGVzXSBjb250YWluc09iamVjdDpAImNsY3AiXSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgTlNBcnJheSAqdHJhY2tBbHRlcm5hdGVzQXJyYXkgPSBbbV9x
dE1vdmllIGFsdGVybmF0ZXNGb3JNZWRpYVR5cGU6QCJjbGNwIl07CisgICAgUVRUcmFjayAqdHJh
Y2sgPSB0cmFja0FsdGVybmF0ZXNBcnJheVswXVtAIlFUQWx0ZXJuYXRlc19RVFRyYWNrIl07Cisg
ICAgaWYgKCF0cmFjaykKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKCFzaG93Q2xvc2VkQ2Fw
dGlvbnMpCisgICAgICAgIFttX3F0TW92aWUgZGVzZWxlY3RBbHRlcm5hdGVHcm91cFRyYWNrOnRy
YWNrXTsKKyAgICBlbHNlCisgICAgICAgIFttX3F0TW92aWUgc2VsZWN0QWx0ZXJuYXRlR3JvdXBU
cmFjazp0cmFja107CisKKyAgICBpZiAoY2xvc2VkQ2FwdGlvbnNWaXNpYmxlICYmIG1fcXRWaWRl
b0xheWVyKSB7CisgICAgICAgIC8vIENhcHRpb25zIHdpbGwgYmUgcmVuZGVyZWQgdXBzaWRlIGRv
d24gdW5sZXNzIHdlIGZsYWcgdGhlIG1vdmllIGFzIGZsaXBwZWQgKGFnYWluKS4gU2VlIDxyZGFy
Oi8vNzQwODQ0MD4uCisgICAgICAgIFttX3F0VmlkZW9MYXllci5nZXQoKSBzZXRHZW9tZXRyeUZs
aXBwZWQ6WUVTXTsKICAgICB9CiB9CiAKQEAgLTk0MCw2ICs5NTIsNTggQEAgdm9pZCBNZWRpYVBs
YXllclByaXZhdGVRVEtpdDo6cHJlcGFyZUZvclJlbmRlcmluZygpCiAgICAgaWYgKGN1cnJlbnRS
ZW5kZXJpbmdNb2RlKCkgPT0gTWVkaWFSZW5kZXJpbmdNb3ZpZUxheWVyIHx8IHByZWZlcnJlZFJl
bmRlcmluZ01vZGUoKSA9PSBNZWRpYVJlbmRlcmluZ01vdmllTGF5ZXIpCiAgICAgICAgIG1fcGxh
eWVyLT5jbGllbnQoKS5tZWRpYVBsYXllclJlbmRlcmluZ01vZGVDaGFuZ2VkKG1fcGxheWVyKTsK
IH0KKyAgICAKK3N0YXRpYyB2b2lkIHNlbGVjdFByZWZlcnJlZEFsdGVybmF0ZVRyYWNrRm9yTWVk
aWFUeXBlKFFUTW92aWUgKm1vdmllLCBOU1N0cmluZyAqbWVkaWFUeXBlKQoreworICAgIE5TQXJy
YXkgKmFsdGVybmF0ZXMgPSBbbW92aWUgYWx0ZXJuYXRlc0Zvck1lZGlhVHlwZTptZWRpYVR5cGVd
OworICAgIGlmICghYWx0ZXJuYXRlcy5jb3VudCkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0
byBsYW5ndWFnZVRvUVRUcmFja01hcCA9IGFkb3B0TlMoW1tOU011dGFibGVEaWN0aW9uYXJ5IGFs
bG9jXSBpbml0V2l0aENhcGFjaXR5OmFsdGVybmF0ZXMuY291bnRdKTsKKworICAgIGZvciAoTlNV
SW50ZWdlciBpbmRleCA9IDA7IGluZGV4IDwgYWx0ZXJuYXRlcy5jb3VudDsgKytpbmRleCkgewor
ICAgICAgICBOU0RpY3Rpb25hcnkgKmFsdGVybmF0ZURpY3QgPSBhbHRlcm5hdGVzW2luZGV4XTsK
KyAgICAgICAgTlNTdHJpbmcgKmxhbmd1YWdlU3RyaW5nID0gYWx0ZXJuYXRlRGljdFtAIlFUQWx0
ZXJuYXRlc19MYW5ndWFnZUNvZGVFbmNvZGluZ19JU09fNjM5XzJUIl07CisgICAgICAgIGlmICgh
W2xhbmd1YWdlU3RyaW5nIGNTdHJpbmdVc2luZ0VuY29kaW5nOmtDRlN0cmluZ0VuY29kaW5nQVND
SUldKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIGlmICghbGFuZ3VhZ2VTdHJpbmcp
CisgICAgICAgICAgICBsYW5ndWFnZVN0cmluZyA9IGFsdGVybmF0ZURpY3RbQCJRVEFsdGVybmF0
ZXNfTGFuZ3VhZ2VDb2RlRW5jb2RpbmdfUkZDXzQ2NDYiXTsKKyAgICAgICAgaWYgKCFsYW5ndWFn
ZVN0cmluZykgeworICAgICAgICAgICAgTGFuZ0NvZGUgbGFuZ0NvZGUgPSBhbHRlcm5hdGVEaWN0
W0AiUVRBbHRlcm5hdGVzX0xhbmd1YWdlQ29kZUVuY29kaW5nX01hY1R5cGVfTGFuZ0NvZGUiXS5p
bnRWYWx1ZTsKKyAgICAgICAgICAgIGF1dG8gaWRlbnRpZmllciA9IGFkb3B0Q0YoQ0ZMb2NhbGVD
cmVhdGVDYW5vbmljYWxMb2NhbGVJZGVudGlmaWVyRnJvbVNjcmlwdE1hbmFnZXJDb2RlcyhrQ0ZB
bGxvY2F0b3JEZWZhdWx0LCBsYW5nQ29kZSwgMCkpOworICAgICAgICAgICAgbGFuZ3VhZ2VTdHJp
bmcgPSAoTlNTdHJpbmcgKilpZGVudGlmaWVyLmF1dG9yZWxlYXNlKCk7CisgICAgICAgIH0KKyAg
ICAgICAgaWYgKCFsYW5ndWFnZVN0cmluZykKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAg
ICAgIGlkIGFsdGVybmF0ZVRyYWNrID0gYWx0ZXJuYXRlRGljdFtAIlFUQWx0ZXJuYXRlc19RVFRy
YWNrIl07CisgICAgICAgIGlmICghYWx0ZXJuYXRlVHJhY2spCisgICAgICAgICAgICBjb250aW51
ZTsKKworICAgICAgICBpZiAoIVthbHRlcm5hdGVUcmFjayBhdHRyaWJ1dGVGb3JLZXk6QCJRVFRy
YWNrRW5hYmxlZEF0dHJpYnV0ZSJdLmJvb2xWYWx1ZSkKKyAgICAgICAgICAgIGNvbnRpbnVlOwor
ICAgICAgICAKKyAgICAgICAgW2xhbmd1YWdlVG9RVFRyYWNrTWFwIHNldE9iamVjdDphbHRlcm5h
dGVUcmFjayBmb3JLZXk6bGFuZ3VhZ2VTdHJpbmddOworICAgIH0KKyAgICAKKyAgICBOU0FycmF5
ICpwcmVmZXJyZWRMYW5ndWFnZXMgPSBbTlNCdW5kbGUgcHJlZmVycmVkTG9jYWxpemF0aW9uc0Zy
b21BcnJheTpbbGFuZ3VhZ2VUb1FUVHJhY2tNYXAgYWxsS2V5c10gZm9yUHJlZmVyZW5jZXM6bmls
XTsKKyAgICBpZiAocHJlZmVycmVkTGFuZ3VhZ2VzLmNvdW50KSB7CisgICAgICAgIGlkIHByZWZl
cnJlZFRyYWNrID0gW2xhbmd1YWdlVG9RVFRyYWNrTWFwIG9iamVjdEZvcktleTpwcmVmZXJyZWRM
YW5ndWFnZXNbMF1dOworICAgICAgICBpZiAocHJlZmVycmVkVHJhY2spIHsKKyAgICAgICAgICAg
IC8vICtbTlNCdW5kbGUgcHJlZmVycmVkTG9jYWxpemF0aW9uc0Zyb21BcnJheTpmb3JQcmVmZXJl
bmNlc10gbWF5IHJldHVybiBhIGxhbmd1YWdlIHdoaWNoIHdhcworICAgICAgICAgICAgLy8gbm90
IHByZXNlbnQgaW4gcHJlZmVycmVkTGFuZ3VhZ2VzLCBhbmQgd2lsbCB0aGVyZWZvcmUgbm90IGhh
dmUgYW4gYXNzb2NpYXRlZCB0cmFjay4KKyAgICAgICAgICAgIFttb3ZpZSBzZWxlY3RBbHRlcm5h
dGVHcm91cFRyYWNrOnByZWZlcnJlZFRyYWNrXTsKKyAgICAgICAgfQorICAgIH0KK30KKworc3Rh
dGljIHZvaWQgc2VsZWN0UHJlZmVycmVkQWx0ZXJuYXRlcyhRVE1vdmllICptb3ZpZSkKK3sKKyAg
ICBzZWxlY3RQcmVmZXJyZWRBbHRlcm5hdGVUcmFja0Zvck1lZGlhVHlwZShtb3ZpZSwgQCJ2aWRl
Iik7CisgICAgc2VsZWN0UHJlZmVycmVkQWx0ZXJuYXRlVHJhY2tGb3JNZWRpYVR5cGUobW92aWUs
IEAic291biIpOworICAgIHNlbGVjdFByZWZlcnJlZEFsdGVybmF0ZVRyYWNrRm9yTWVkaWFUeXBl
KG1vdmllLCBAImNwbHAiKTsKKyAgICBzZWxlY3RQcmVmZXJyZWRBbHRlcm5hdGVUcmFja0Zvck1l
ZGlhVHlwZShtb3ZpZSwgQCJzYnRsIik7Cit9CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUVRL
aXQ6OnVwZGF0ZVN0YXRlcygpCiB7CkBAIC05NjUsNyArMTAyOSw3IEBAIHZvaWQgTWVkaWFQbGF5
ZXJQcml2YXRlUVRLaXQ6OnVwZGF0ZVN0YXRlcygpCiAgICAgICAgICAgICBsb2FkU3RhdGUgPSBR
VE1vdmllTG9hZFN0YXRlRXJyb3I7CiAKICAgICAgICAgaWYgKGxvYWRTdGF0ZSAhPSBRVE1vdmll
TG9hZFN0YXRlRXJyb3IpIHsKLSAgICAgICAgICAgIHdrUVRNb3ZpZVNlbGVjdFByZWZlcnJlZEFs
dGVybmF0ZXMobV9xdE1vdmllLmdldCgpKTsKKyAgICAgICAgICAgIHNlbGVjdFByZWZlcnJlZEFs
dGVybmF0ZXMobV9xdE1vdmllLmdldCgpKTsKICAgICAgICAgICAgIGNhY2hlTW92aWVTY2FsZSgp
OwogICAgICAgICAgICAgTWVkaWFQbGF5ZXI6Ok1vdmllTG9hZFR5cGUgbW92aWVUeXBlID0gbW92
aWVMb2FkVHlwZSgpOwogICAgICAgICAgICAgbV9pc1N0cmVhbWluZyA9IG1vdmllVHlwZSA9PSBN
ZWRpYVBsYXllcjo6U3RvcmVkU3RyZWFtIHx8IG1vdmllVHlwZSA9PSBNZWRpYVBsYXllcjo6TGl2
ZVN0cmVhbTsKQEAgLTEyNzMsNyArMTMzNyw4IEBAIHN0YXRpYyBjb25zdCBIYXNoU2V0PFN0cmlu
ZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiYgbWltZUNvbW1vblR5cGVzQ2FjaGUoKQogCiBz
dGF0aWMgY29uc3QgSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mIG1p
bWVNb2Rlcm5UeXBlc0NhY2hlKCkKIHsKLSAgICBzdGF0aWMgY29uc3QgYXV0byBjYWNoZSA9IG1h
a2VOZXZlckRlc3Ryb3llZChjcmVhdGVGaWxlVHlwZXNTZXQoW1FUTW92aWUgbW92aWVGaWxlVHlw
ZXM6KFFUTW92aWVGaWxlVHlwZU9wdGlvbnMpd2tRVEluY2x1ZGVPbmx5TW9kZXJuTWVkaWFGaWxl
VHlwZXMoKV0pKTsKKyAgICBzdGF0aWMgUVRNb3ZpZUZpbGVUeXBlT3B0aW9ucyBpbmNsdWRlT25s
eU1vZGVybk1lZGlhRmlsZVR5cGVzID0gMSA8PCA4OworICAgIHN0YXRpYyBjb25zdCBhdXRvIGNh
Y2hlID0gbWFrZU5ldmVyRGVzdHJveWVkKGNyZWF0ZUZpbGVUeXBlc1NldChbUVRNb3ZpZSBtb3Zp
ZUZpbGVUeXBlczppbmNsdWRlT25seU1vZGVybk1lZGlhRmlsZVR5cGVzXSkpOwogICAgIHJldHVy
biBjYWNoZTsKIH0KIApAQCAtMTMyNCw3ICsxMzg5LDcgQEAgYm9vbCBNZWRpYVBsYXllclByaXZh
dGVRVEtpdDo6aXNBdmFpbGFibGUoKQogSGFzaFNldDxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+PiBN
ZWRpYVBsYXllclByaXZhdGVRVEtpdDo6b3JpZ2luc0luTWVkaWFDYWNoZShjb25zdCBTdHJpbmcm
KQogewogICAgIEhhc2hTZXQ8UmVmUHRyPFNlY3VyaXR5T3JpZ2luPj4gb3JpZ2luczsKLSAgICBO
U0FycmF5ICptZWRpYVNpdGVzID0gd2tRVEdldFNpdGVzSW5NZWRpYURvd25sb2FkQ2FjaGUoKTsK
KyAgICBOU0FycmF5ICptZWRpYVNpdGVzID0gW1tRVFV0aWxpdGllcyBxdFV0aWxpdGllc10gc2l0
ZXNJbkRvd25sb2FkQ2FjaGVdOwogICAgIAogICAgIGZvciAoTlNTdHJpbmcgKnNpdGUgaW4gbWVk
aWFTaXRlcykgewogICAgICAgICBVUkwgc2l0ZUFzVVJMID0gVVJMKFVSTCgpLCBzaXRlKTsKQEAg
LTEzMzcsMTQgKzE0MDIsMTQgQEAgSGFzaFNldDxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+PiBNZWRp
YVBsYXllclByaXZhdGVRVEtpdDo6b3JpZ2luc0luTWVkaWFDYWNoZShjb24KIHZvaWQgTWVkaWFQ
bGF5ZXJQcml2YXRlUVRLaXQ6OmNsZWFyTWVkaWFDYWNoZShjb25zdCBTdHJpbmcmLCBzdGQ6OmNo
cm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50KQogewogICAgIExPRyhNZWRpYSwgIk1lZGlh
UGxheWVyUHJpdmF0ZVFUS2l0OjpjbGVhck1lZGlhQ2FjaGUoKSIpOwotICAgIHdrUVRDbGVhck1l
ZGlhRG93bmxvYWRDYWNoZSgpOworICAgIFtbUVRVdGlsaXRpZXMgcXRVdGlsaXRpZXNdIGNsZWFy
RG93bmxvYWRDYWNoZV07CiB9CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6OmNsZWFy
TWVkaWFDYWNoZUZvck9yaWdpbnMoY29uc3QgU3RyaW5nJiwgY29uc3QgSGFzaFNldDxSZWZQdHI8
U2VjdXJpdHlPcmlnaW4+PiYgb3JpZ2lucykKIHsKICAgICBMT0coTWVkaWEsICJNZWRpYVBsYXll
clByaXZhdGVRVEtpdDo6Y2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2lucygpIik7CiAgICAgZm9yIChh
dXRvJiBvcmlnaW4gOiBvcmlnaW5zKQotICAgICAgICB3a1FUQ2xlYXJNZWRpYURvd25sb2FkQ2Fj
aGVGb3JTaXRlKG9yaWdpbi0+dG9SYXdTdHJpbmcoKSk7CisgICAgICAgIFtbUVRVdGlsaXRpZXMg
cXRVdGlsaXRpZXNdIGNsZWFyRG93bmxvYWRDYWNoZUZvclNpdGU6b3JpZ2luLT50b1Jhd1N0cmlu
ZygpXTsKIH0KIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6ZGlzYWJsZVVuc3VwcG9y
dGVkVHJhY2tzKCkKQEAgLTE0NjgsMjMgKzE1MzMsMjkgQEAgYm9vbCBNZWRpYVBsYXllclByaXZh
dGVRVEtpdDo6aGFzU2luZ2xlU2VjdXJpdHlPcmlnaW4oKSBjb25zdAogICAgIGlmICghbV9xdE1v
dmllKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBSZWY8U2VjdXJpdHlPcmlnaW4+IHJl
c29sdmVkT3JpZ2luID0gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShVUkwod2tRVE1vdmllUmVzb2x2
ZWRVUkwobV9xdE1vdmllLmdldCgpKSkpOworICAgIFJlZjxTZWN1cml0eU9yaWdpbj4gcmVzb2x2
ZWRPcmlnaW4gPSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKFVSTChbbV9xdE1vdmllIFVSTF0pKTsK
ICAgICBSZWY8U2VjdXJpdHlPcmlnaW4+IHJlcXVlc3RlZE9yaWdpbiA9IFNlY3VyaXR5T3JpZ2lu
OjpjcmVhdGVGcm9tU3RyaW5nKG1fbW92aWVVUkwpOwogICAgIHJldHVybiByZXNvbHZlZE9yaWdp
bi0+aXNTYW1lU2NoZW1lSG9zdFBvcnQocmVxdWVzdGVkT3JpZ2luLmdldCgpKTsKIH0KIAogTWVk
aWFQbGF5ZXI6Ok1vdmllTG9hZFR5cGUgTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6Om1vdmllTG9h
ZFR5cGUoKSBjb25zdAogewotICAgIGlmICghbV9xdE1vdmllKQotICAgICAgICByZXR1cm4gTWVk
aWFQbGF5ZXI6OlVua25vd247Ci0KLSAgICBNZWRpYVBsYXllcjo6TW92aWVMb2FkVHlwZSBtb3Zp
ZVR5cGUgPSAoTWVkaWFQbGF5ZXI6Ok1vdmllTG9hZFR5cGUpd2tRVE1vdmllR2V0VHlwZShtX3F0
TW92aWUuZ2V0KCkpOwotCi0gICAgLy8gQ2FuJ3QgaW5jbHVkZSBXZWJLaXRTeXN0ZW1JbnRlcmZh
Y2UgZnJvbSBXZWJDb3JlIHNvIHdlIGNhbid0IGdldCB0aGUgZW51bSByZXR1cm5lZAotICAgIC8v
IGJ5IHdrUVRNb3ZpZUdldFR5cGUsIGJ1dCBhdCBsZWFzdCB2ZXJpZnkgdGhhdCB0aGUgdmFsdWUg
aXMgaW4gdGhlIHZhbGlkIHJhbmdlLgotICAgIEFTU0VSVChtb3ZpZVR5cGUgPj0gTWVkaWFQbGF5
ZXI6OlVua25vd24gJiYgbW92aWVUeXBlIDw9IE1lZGlhUGxheWVyOjpMaXZlU3RyZWFtKTsKLQot
ICAgIHJldHVybiBtb3ZpZVR5cGU7CisgICAgaWYgKCFtb3ZpZSkKKyAgICAgICAgcmV0dXJuIE1l
ZGlhUGxheWVyOjpNb3ZpZUxvYWRUeXBlOjpVbmtub3duOworCisgICAgVUludDMyIG1vdmllVHlw
ZSA9IG1vdmllLm1vdmllVHlwZTsKKyAgICBzd2l0Y2ggKG1vdmllVHlwZSkgeworICAgIGNhc2Ug
UVRNb3ZpZVR5cGVMb2NhbDoKKyAgICBjYXNlIFFUTW92aWVUeXBlRmFzdFN0YXJ0OgorICAgICAg
ICByZXR1cm4gTWVkaWFQbGF5ZXI6Ok1vdmllTG9hZFR5cGU6OkRvd25sb2FkOworICAgIGNhc2Ug
UVRNb3ZpZVR5cGVMaXZlU3RyZWFtOgorICAgICAgICByZXR1cm4gTWVkaWFQbGF5ZXI6Ok1vdmll
TG9hZFR5cGU6OkxpdmVTdHJlYW07CisgICAgY2FzZSBRVE1vdmllVHlwZVN0b3JlZFN0cmVhbToK
KyAgICAgICAgcmV0dXJuIE1lZGlhUGxheWVyOjpNb3ZpZUxvYWRUeXBlOjpTdG9yZWRTdHJlYW07
CisgICAgY2FzZSBRVE1vdmllVHlwZVVua25vd246CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0
dXJuIE1lZGlhUGxheWVyOjpNb3ZpZUxvYWRUeXBlOjpVbmtub3duOworICAgIH0KIH0KIAogdm9p
ZCBNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6c2V0UHJlbG9hZChNZWRpYVBsYXllcjo6UHJlbG9h
ZCBwcmVsb2FkKQpAQCAtMTUxNSw3ICsxNTg2LDcgQEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVR
VEtpdDo6Y2FuU2F2ZU1lZGlhRGF0YSgpIGNvbnN0CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAog
ICAgIGlmIChtX3F0TW92aWUpCi0gICAgICAgIHVybCA9IFVSTCh3a1FUTW92aWVSZXNvbHZlZFVS
TChtX3F0TW92aWUuZ2V0KCkpKTsKKyAgICAgICAgdXJsID0gVVJMKFttX3F0TW92aWUgVVJMXSk7
CiAgICAgZWxzZQogICAgICAgICB1cmwgPSBVUkwoUGFyc2VkVVJMU3RyaW5nLCBtX21vdmllVVJM
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVTeXN0
ZW1JbnRlcmZhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlU3lzdGVt
SW50ZXJmYWNlLmgKaW5kZXggMjNmZjIzZmNmNDU4YjQwNzg5YjAyZTBhZWMxMmIyMDAwMTFmYzVi
Yi4uZjY3NTk1MDlhMTFmY2UzMzQxM2ZlNjkwMzNhNDY4NTZmNTk3NDU1OCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oCkBA
IC0xMzEsMzIgKzEzMSw3IEBAIGV4dGVybiBkb3VibGUgKCp3a0dldE5TVVJMUmVzcG9uc2VDYWxj
dWxhdGVkRXhwaXJhdGlvbikoTlNVUkxSZXNwb25zZSAqcmVzcG9uc2UpCiBleHRlcm4gQk9PTCAo
KndrR2V0TlNVUkxSZXNwb25zZU11c3RSZXZhbGlkYXRlKShOU1VSTFJlc3BvbnNlICpyZXNwb25z
ZSk7CiBleHRlcm4gQk9PTCAoKndrSGl0VGVzdE1lZGlhVUlQYXJ0KShpbnQgcGFydCwgQ0dSZWN0
IGJvdW5kcywgQ0dQb2ludCBwb2ludCk7CiBleHRlcm4gdm9pZCAoKndrTWVhc3VyZU1lZGlhVUlQ
YXJ0KShpbnQgcGFydCwgQ0dSZWN0ICpib3VuZHMsIENHU2l6ZSAqbmF0dXJhbFNpemUpOwotZXh0
ZXJuIE5TVmlldyAqKCp3a0NyZWF0ZU1lZGlhVUlCYWNrZ3JvdW5kVmlldykodm9pZCk7CiAKLXR5
cGVkZWYgZW51bSB7Ci0gICAgd2tNZWRpYVVJQ29udHJvbFRpbWVsaW5lLAotICAgIHdrTWVkaWFV
SUNvbnRyb2xTbGlkZXIsCi0gICAgd2tNZWRpYVVJQ29udHJvbFBsYXlQYXVzZUJ1dHRvbiwKLSAg
ICB3a01lZGlhVUlDb250cm9sRXhpdEZ1bGxzY3JlZW5CdXR0b24sCi0gICAgd2tNZWRpYVVJQ29u
dHJvbFJld2luZEJ1dHRvbiwKLSAgICB3a01lZGlhVUlDb250cm9sRmFzdEZvcndhcmRCdXR0b24s
Ci0gICAgd2tNZWRpYVVJQ29udHJvbFZvbHVtZVVwQnV0dG9uLAotICAgIHdrTWVkaWFVSUNvbnRy
b2xWb2x1bWVEb3duQnV0dG9uCi19IHdrTWVkaWFVSUNvbnRyb2xUeXBlOwotZXh0ZXJuIE5TQ29u
dHJvbCAqKCp3a0NyZWF0ZU1lZGlhVUlDb250cm9sKShpbnQpOwotCi1leHRlcm4gdW5zaWduZWQg
KCp3a1FUSW5jbHVkZU9ubHlNb2Rlcm5NZWRpYUZpbGVUeXBlcykodm9pZCk7Ci1leHRlcm4gdm9p
ZCAoKndrUVRNb3ZpZURpc2FibGVDb21wb25lbnQpKHVpbnQzMl90WzVdKTsKLWV4dGVybiBmbG9h
dCAoKndrUVRNb3ZpZU1heFRpbWVMb2FkZWQpKFFUTW92aWUqKTsKLWV4dGVybiBOU1N0cmluZyAq
KCp3a1FUTW92aWVNYXhUaW1lTG9hZGVkQ2hhbmdlTm90aWZpY2F0aW9uKSh2b2lkKTsKLWV4dGVy
biBpbnQgKCp3a1FUTW92aWVHZXRUeXBlKShRVE1vdmllKik7Ci1leHRlcm4gQk9PTCAoKndrUVRN
b3ZpZUhhc0Nsb3NlZENhcHRpb25zKShRVE1vdmllKik7Ci1leHRlcm4gTlNVUkwgKigqd2tRVE1v
dmllUmVzb2x2ZWRVUkwpKFFUTW92aWUqKTsKLWV4dGVybiB2b2lkICgqd2tRVE1vdmllU2V0U2hv
d0Nsb3NlZENhcHRpb25zKShRVE1vdmllKiwgQk9PTCk7Ci1leHRlcm4gdm9pZCAoKndrUVRNb3Zp
ZVNlbGVjdFByZWZlcnJlZEFsdGVybmF0ZXMpKFFUTW92aWUqKTsKLWV4dGVybiBOU0FycmF5ICoo
KndrUVRHZXRTaXRlc0luTWVkaWFEb3dubG9hZENhY2hlKSgpOwotZXh0ZXJuIHZvaWQgKCp3a1FU
Q2xlYXJNZWRpYURvd25sb2FkQ2FjaGVGb3JTaXRlKShOU1N0cmluZyAqc2l0ZSk7Ci1leHRlcm4g
dm9pZCAoKndrUVRDbGVhck1lZGlhRG93bmxvYWRDYWNoZSkoKTsKIGV4dGVybiB2b2lkICgqd2tT
ZXRDb29raWVTdG9yYWdlUHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCkoQk9PTCk7CiAjZW5kaWYKIGV4
dGVybiB2b2lkICgqd2tTZXRDT05ORUNUUHJveHlGb3JTdHJlYW0pKENGUmVhZFN0cmVhbVJlZiwg
Q0ZTdHJpbmdSZWYgcHJveHlIb3N0LCBDRk51bWJlclJlZiBwcm94eVBvcnQpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2UubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZVN5c3RlbUludGVyZmFjZS5tbQpp
bmRleCBjNzIzZDc0NGIwNDZkMjEwZmFhYjIyYzJhNDFkZGYwMjQ2M2RhOTNmLi4yZWFiZDRmMTRm
MzkzMzZlMzM0MGNlOGVkZWUzN2U0ODJkZDY4MDJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZVN5c3RlbUludGVyZmFjZS5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZVN5c3RlbUludGVyZmFjZS5tbQpAQCAtMzYsMjMgKzM2
LDkgQEAgdm9pZCAoKndrRHJhd01lZGlhU2xpZGVyVHJhY2spKENHQ29udGV4dFJlZiBjb250ZXh0
LCBDR1JlY3QgcmVjdCwgZmxvYXQgdGltZUxvYWQKIEJPT0wgKCp3a0hpdFRlc3RNZWRpYVVJUGFy
dCkoaW50IHBhcnQsIENHUmVjdCBib3VuZHMsIENHUG9pbnQgcG9pbnQpOwogdm9pZCAoKndrRHJh
d01lZGlhVUlQYXJ0KShpbnQgcGFydCwgQ0dDb250ZXh0UmVmIGNvbnRleHQsIENHUmVjdCByZWN0
LCB1bnNpZ25lZCBzdGF0ZSk7CiB2b2lkICgqd2tNZWFzdXJlTWVkaWFVSVBhcnQpKGludCBwYXJ0
LCBDR1JlY3QgKmJvdW5kcywgQ0dTaXplICpuYXR1cmFsU2l6ZSk7Ci1OU1ZpZXcgKigqd2tDcmVh
dGVNZWRpYVVJQmFja2dyb3VuZFZpZXcpKHZvaWQpOwotTlNDb250cm9sICooKndrQ3JlYXRlTWVk
aWFVSUNvbnRyb2wpKGludCk7CiBOU1RpbWVJbnRlcnZhbCAoKndrR2V0TlNVUkxSZXNwb25zZUNh
bGN1bGF0ZWRFeHBpcmF0aW9uKShOU1VSTFJlc3BvbnNlICpyZXNwb25zZSk7CiBCT09MICgqd2tH
ZXROU1VSTFJlc3BvbnNlTXVzdFJldmFsaWRhdGUpKE5TVVJMUmVzcG9uc2UgKnJlc3BvbnNlKTsK
IHZvaWQgKCp3a1BvcHVwTWVudSkoTlNNZW51KiwgTlNQb2ludCBsb2NhdGlvbiwgZmxvYXQgd2lk
dGgsIE5TVmlldyosIGludCBzZWxlY3RlZEl0ZW0sIE5TRm9udCosIE5TQ29udHJvbFNpemUgY29u
dHJvbFNpemUsIGJvb2wgdXNlc0N1c3RvbUFwcGVhcmFuY2UpOwotdW5zaWduZWQgKCp3a1FUSW5j
bHVkZU9ubHlNb2Rlcm5NZWRpYUZpbGVUeXBlcykodm9pZCk7Ci12b2lkICgqd2tRVE1vdmllRGlz
YWJsZUNvbXBvbmVudCkodWludDMyX3RbNV0pOwotZmxvYXQgKCp3a1FUTW92aWVNYXhUaW1lTG9h
ZGVkKShRVE1vdmllKik7Ci1OU1N0cmluZyAqKCp3a1FUTW92aWVNYXhUaW1lTG9hZGVkQ2hhbmdl
Tm90aWZpY2F0aW9uKSh2b2lkKTsKLWludCAoKndrUVRNb3ZpZUdldFR5cGUpKFFUTW92aWUqKTsK
LUJPT0wgKCp3a1FUTW92aWVIYXNDbG9zZWRDYXB0aW9ucykoUVRNb3ZpZSopOwotTlNVUkwgKigq
d2tRVE1vdmllUmVzb2x2ZWRVUkwpKFFUTW92aWUqKTsKLXZvaWQgKCp3a1FUTW92aWVTZXRTaG93
Q2xvc2VkQ2FwdGlvbnMpKFFUTW92aWUqLCBCT09MKTsKLXZvaWQgKCp3a1FUTW92aWVTZWxlY3RQ
cmVmZXJyZWRBbHRlcm5hdGVzKShRVE1vdmllKik7Ci1OU0FycmF5ICooKndrUVRHZXRTaXRlc0lu
TWVkaWFEb3dubG9hZENhY2hlKSgpOwotdm9pZCAoKndrUVRDbGVhck1lZGlhRG93bmxvYWRDYWNo
ZUZvclNpdGUpKE5TU3RyaW5nICpzaXRlKTsKLXZvaWQgKCp3a1FUQ2xlYXJNZWRpYURvd25sb2Fk
Q2FjaGUpKCk7CiAKIHZvaWQgKCp3a1NldENPTk5FQ1RQcm94eUZvclN0cmVhbSkoQ0ZSZWFkU3Ry
ZWFtUmVmLCBDRlN0cmluZ1JlZiBwcm94eUhvc3QsIENGTnVtYmVyUmVmIHByb3h5UG9ydCk7CiB2
b2lkICgqd2tTZXRDT05ORUNUUHJveHlBdXRob3JpemF0aW9uRm9yU3RyZWFtKShDRlJlYWRTdHJl
YW1SZWYsIENGU3RyaW5nUmVmIHByb3h5QXV0aG9yaXphdGlvblN0cmluZyk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViVmlkZW9GdWxsc2NyZWVuSFVEV2luZG93
Q29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJWaWRlb0Z1bGxz
Y3JlZW5IVURXaW5kb3dDb250cm9sbGVyLm1tCmluZGV4IGVmYjZlMmIyNzNjNTgzNTEzM2U3NWIx
NjI2YTk1YjA0OTBjNzc5OWMuLmZjMGY1MTBjN2EyY2IyNDk3OGQwNGEwYzQ4MDZlZDRjNzFjNTMy
MDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJWaWRlb0Z1bGxz
Y3JlZW5IVURXaW5kb3dDb250cm9sbGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21hYy9XZWJWaWRlb0Z1bGxzY3JlZW5IVURXaW5kb3dDb250cm9sbGVyLm1tCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOS0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOS0yMDE3IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzEsOSAr
MzEsMzggQEAKICNpbXBvcnQgPFdlYkNvcmUvSFRNTFZpZGVvRWxlbWVudC5oPgogI2ltcG9ydCA8
V2ViQ29yZVN5c3RlbUludGVyZmFjZS5oPgogI2ltcG9ydCA8cGFsL3NwaS9jZy9Db3JlR3JhcGhp
Y3NTUEkuaD4KKyNpbXBvcnQgPHBhbC9zcGkvbWFjL1FUS2l0U1BJLmg+CisjaW1wb3J0IDx3dGYv
U29mdExpbmtpbmcuaD4KKworU09GVF9MSU5LX0ZSQU1FV09SSyhRVEtpdCkKKworU09GVF9MSU5L
X0NMQVNTKFFUS2l0LCBRVEhVREJhY2tncm91bmRWaWV3KQorU09GVF9MSU5LX0NMQVNTKFFUS2l0
LCBRVEhVREJ1dHRvbikKK1NPRlRfTElOS19DTEFTUyhRVEtpdCwgUVRIVURTbGlkZXIpCitTT0ZU
X0xJTktfQ0xBU1MoUVRLaXQsIFFUSFVEVGltZWxpbmUpCisKKyNkZWZpbmUgUVRIVURCYWNrZ3Jv
dW5kVmlldyBnZXRRVEhVREJhY2tncm91bmRWaWV3Q2xhc3MoKQorI2RlZmluZSBRVEhVREJ1dHRv
biBnZXRRVEhVREJ1dHRvbkNsYXNzKCkKKyNkZWZpbmUgUVRIVURTbGlkZXIgZ2V0UVRIVURTbGlk
ZXJDbGFzcygpCisjZGVmaW5lIFFUSFVEVGltZWxpbmUgZ2V0UVRIVURUaW1lbGluZUNsYXNzKCkK
IAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworZW51
bSBjbGFzcyBNZWRpYVVJQ29udHJvbCB7CisgICAgVGltZWxpbmUsCisgICAgU2xpZGVyLAorICAg
IFBsYXlQYXVzZUJ1dHRvbiwKKyAgICBFeGl0RnVsbHNjcmVlbkJ1dHRvbiwKKyAgICBSZXdpbmRC
dXR0b24sCisgICAgRmFzdEZvcndhcmRCdXR0b24sCisgICAgVm9sdW1lVXBCdXR0b24sCisgICAg
Vm9sdW1lRG93bkJ1dHRvbiwKK307CisKK30KKwogQGludGVyZmFjZSBXZWJWaWRlb0Z1bGxzY3Jl
ZW5IVURXaW5kb3dDb250cm9sbGVyIChQcml2YXRlKSA8TlNXaW5kb3dEZWxlZ2F0ZT4KIAogLSAo
dm9pZCl1cGRhdGVUaW1lOwpAQCAtMjY1LDEwICsyOTQsNjggQEAgLSAodm9pZCljbG9zZVdpbmRv
dwogICAgIFtzZWxmIHNldFdpbmRvdzpuaWxdOwogfQogCi1zdGF0aWMgTlNDb250cm9sICpjcmVh
dGVDb250cm9sV2l0aE1lZGlhVUlDb250cm9sVHlwZShpbnQgY29udHJvbFR5cGUsIE5TUmVjdCBm
cmFtZSkKK3N0YXRpYyBOU0NvbnRyb2wgKmNyZWF0ZU1lZGlhVUlDb250cm9sKE1lZGlhVUlDb250
cm9sIGNvbnRyb2xUeXBlKQoreworICAgIHN3aXRjaCAoY29udHJvbFR5cGUpIHsKKyAgICBjYXNl
IE1lZGlhVUlDb250cm9sOjpUaW1lbGluZTogeworICAgICAgICBOU1NsaWRlciAqc2xpZGVyID0g
W1tRVEhVRFRpbWVsaW5lIGFsbG9jXSBpbml0XTsKKyAgICAgICAgW1tzbGlkZXIgY2VsbF0gc2V0
Q29udGludW91czpZRVNdOworICAgICAgICByZXR1cm4gc2xpZGVyOworICAgIH0KKyAgICBjYXNl
IE1lZGlhVUlDb250cm9sOjpTbGlkZXI6IHsKKyAgICAgICAgTlNCdXR0b24gKnNsaWRlciA9IFtb
UVRIVURTbGlkZXIgYWxsb2NdIGluaXRdOworICAgICAgICBbW3NsaWRlciBjZWxsXSBzZXRDb250
aW51b3VzOllFU107CisgICAgICAgIHJldHVybiBzbGlkZXI7CisgICAgfQorICAgIGNhc2UgTWVk
aWFVSUNvbnRyb2w6OlBsYXlQYXVzZUJ1dHRvbjogeworICAgICAgICBOU0J1dHRvbiAqYnV0dG9u
ID0gW1tRVEhVREJ1dHRvbiBhbGxvY10gaW5pdF07CisgICAgICAgIFtidXR0b24gc2V0SW1hZ2U6
W05TSW1hZ2UgaW1hZ2VOYW1lZDpAIk5TUGxheVRlbXBsYXRlIl1dOworICAgICAgICBbYnV0dG9u
IHNldEFsdGVybmF0ZUltYWdlOltOU0ltYWdlIGltYWdlTmFtZWQ6QCJOU1BhdXNlUVRQcml2YXRl
VGVtcGxhdGUiXV07CisKKyAgICAgICAgW1tidXR0b24gY2VsbF0gc2V0U2hvd3NTdGF0ZUJ5Ok5T
Q29udGVudHNDZWxsTWFza107CisgICAgICAgIFtidXR0b24gc2V0Qm9yZGVyZWQ6Tk9dOworICAg
ICAgICByZXR1cm4gYnV0dG9uOworICAgIH0KKyAgICBjYXNlIE1lZGlhVUlDb250cm9sOjpFeGl0
RnVsbHNjcmVlbkJ1dHRvbjogeworICAgICAgICBOU0J1dHRvbiAqYnV0dG9uID0gW1tRVEhVREJ1
dHRvbiBhbGxvY10gaW5pdF07CisgICAgICAgIFtidXR0b24gc2V0SW1hZ2U6W05TSW1hZ2UgaW1h
Z2VOYW1lZDpAIk5TRXhpdEZ1bGxTY3JlZW5UZW1wbGF0ZSJdXTsKKyAgICAgICAgW2J1dHRvbiBz
ZXRCb3JkZXJlZDpOT107CisgICAgICAgIHJldHVybiBidXR0b247CisgICAgfQorICAgIGNhc2Ug
TWVkaWFVSUNvbnRyb2w6OlJld2luZEJ1dHRvbjogeworICAgICAgICBOU0J1dHRvbiAqYnV0dG9u
ID0gW1tRVEhVREJ1dHRvbiBhbGxvY10gaW5pdF07CisgICAgICAgIFtidXR0b24gc2V0SW1hZ2U6
W05TSW1hZ2UgaW1hZ2VOYW1lZDpAIk5TUmV3aW5kVGVtcGxhdGUiXV07CisgICAgICAgIFtidXR0
b24gc2V0Qm9yZGVyZWQ6Tk9dOworICAgICAgICByZXR1cm4gYnV0dG9uOworICAgIH0KKyAgICBj
YXNlIE1lZGlhVUlDb250cm9sOjpGYXN0Rm9yd2FyZEJ1dHRvbjogeworICAgICAgICBOU0J1dHRv
biAqYnV0dG9uID0gW1tRVEhVREJ1dHRvbiBhbGxvY10gaW5pdF07CisgICAgICAgIFtidXR0b24g
c2V0SW1hZ2U6W05TSW1hZ2UgaW1hZ2VOYW1lZDpAIk5TRmFzdEZvcndhcmRUZW1wbGF0ZSJdXTsK
KyAgICAgICAgW2J1dHRvbiBzZXRCb3JkZXJlZDpOT107CisgICAgICAgIHJldHVybiBidXR0b247
CisgICAgfQorICAgIGNhc2UgTWVkaWFVSUNvbnRyb2w6OlZvbHVtZVVwQnV0dG9uOiB7CisgICAg
ICAgIE5TQnV0dG9uICpidXR0b24gPSBbW1FUSFVEQnV0dG9uIGFsbG9jXSBpbml0XTsKKyAgICAg
ICAgW2J1dHRvbiBzZXRJbWFnZTpbTlNJbWFnZSBpbWFnZU5hbWVkOkAiTlNBdWRpb091dHB1dFZv
bHVtZUhpZ2hUZW1wbGF0ZSJdXTsKKyAgICAgICAgW2J1dHRvbiBzZXRCb3JkZXJlZDpOT107Cisg
ICAgICAgIHJldHVybiBidXR0b247CisgICAgfQorICAgIGNhc2UgTWVkaWFVSUNvbnRyb2w6OlZv
bHVtZURvd25CdXR0b246IHsKKyAgICAgICAgTlNCdXR0b24gKmJ1dHRvbiA9IFtbUVRIVURCdXR0
b24gYWxsb2NdIGluaXRdOworICAgICAgICBbYnV0dG9uIHNldEltYWdlOltOU0ltYWdlIGltYWdl
TmFtZWQ6QCJOU0F1ZGlvT3V0cHV0Vm9sdW1lTG93VGVtcGxhdGUiXV07CisgICAgICAgIFtidXR0
b24gc2V0Qm9yZGVyZWQ6Tk9dOworICAgICAgICByZXR1cm4gYnV0dG9uOworICAgIH0KKyAgICB9
CisKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gbmlsOworfQorCitzdGF0
aWMgTlNDb250cm9sICpjcmVhdGVDb250cm9sV2l0aE1lZGlhVUlDb250cm9sVHlwZShNZWRpYVVJ
Q29udHJvbCBjb250cm9sVHlwZSwgTlNSZWN0IGZyYW1lKQogewotICAgIE5TQ29udHJvbCAqY29u
dHJvbCA9IHdrQ3JlYXRlTWVkaWFVSUNvbnRyb2woY29udHJvbFR5cGUpOwotICAgIFtjb250cm9s
IHNldEZyYW1lOmZyYW1lXTsKKyAgICBOU0NvbnRyb2wgKmNvbnRyb2wgPSBjcmVhdGVNZWRpYVVJ
Q29udHJvbChjb250cm9sVHlwZSk7CisgICAgY29udHJvbC5mcmFtZSA9IGZyYW1lOwogICAgIHJl
dHVybiBjb250cm9sOwogfQogCkBAIC0yODUsNiArMzcyLDIxIEBAIHN0YXRpYyBOU1RleHRGaWVs
ZCAqY3JlYXRlVGltZVRleHRGaWVsZChOU1JlY3QgZnJhbWUpCiAgICAgcmV0dXJuIHRleHRGaWVs
ZDsKIH0KIAorc3RhdGljIE5TVmlldyAqY3JlYXRlTWVkaWFVSUJhY2tncm91bmRWaWV3KCkKK3sK
KyAgICBpZCB2aWV3ID0gW1tRVEhVREJhY2tncm91bmRWaWV3IGFsbG9jXSBpbml0XTsKKworICAg
IGNvbnN0IENHRmxvYXQgcXVpY2tUaW1lUGxheWVySFVESGVpZ2h0ID0gNTk7CisgICAgY29uc3Qg
Q0dGbG9hdCBxdWlja1RpbWVQbGF5ZXJIVURDb250ZW50Qm9yZGVyUG9zaXRpb24gPSAzODsKKwor
I3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHB1c2gKKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBp
Z25vcmVkICItV2RlcHJlY2F0ZWQtZGVjbGFyYXRpb25zIgorICAgIFt2aWV3IHNldENvbnRlbnRC
b3JkZXJQb3NpdGlvbjpxdWlja1RpbWVQbGF5ZXJIVURDb250ZW50Qm9yZGVyUG9zaXRpb24gLyBx
dWlja1RpbWVQbGF5ZXJIVURIZWlnaHRdOworI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHBvcAor
CisgICAgcmV0dXJuIHZpZXc7Cit9CisKIC0gKHZvaWQpd2luZG93RGlkTG9hZAogewogICAgIHN0
YXRpYyBjb25zdCBDR0Zsb2F0IGhvcml6b250YWxNYXJnaW4gPSAxMDsKQEAgLTMxMCw3ICs0MTIs
NyBAQCAtICh2b2lkKXdpbmRvd0RpZExvYWQKICAgICBOU1dpbmRvdyAqd2luZG93ID0gW3NlbGYg
d2luZG93XTsKICAgICBBU1NFUlQod2luZG93KTsKIAotICAgIE5TVmlldyAqYmFja2dyb3VuZCA9
IHdrQ3JlYXRlTWVkaWFVSUJhY2tncm91bmRWaWV3KCk7CisgICAgTlNWaWV3ICpiYWNrZ3JvdW5k
ID0gY3JlYXRlTWVkaWFVSUJhY2tncm91bmRWaWV3KCk7CiAKICAgICBbd2luZG93IHNldENvbnRl
bnRWaWV3OmJhY2tncm91bmRdOwogICAgIF9hcmVhID0gW1tOU1RyYWNraW5nQXJlYSBhbGxvY10g
aW5pdFdpdGhSZWN0OltiYWNrZ3JvdW5kIGJvdW5kc10gb3B0aW9uczpOU1RyYWNraW5nTW91c2VF
bnRlcmVkQW5kRXhpdGVkIHwgTlNUcmFja2luZ0FjdGl2ZUFsd2F5cyBvd25lcjpzZWxmIHVzZXJJ
bmZvOm5pbF07CkBAIC0zMjAsMTQgKzQyMiwxNCBAQCAtICh2b2lkKXdpbmRvd0RpZExvYWQKICAg
ICBOU1ZpZXcgKmNvbnRlbnRWaWV3ID0gW3dpbmRvdyBjb250ZW50Vmlld107CiAKICAgICBDR0Zs
b2F0IGNlbnRlciA9IENHRmxvb3IoKHdpbmRvd1dpZHRoIC0gcGxheUJ1dHRvbldpZHRoKSAvIDIp
OwotICAgIF9wbGF5QnV0dG9uID0gKE5TQnV0dG9uICopY3JlYXRlQ29udHJvbFdpdGhNZWRpYVVJ
Q29udHJvbFR5cGUod2tNZWRpYVVJQ29udHJvbFBsYXlQYXVzZUJ1dHRvbiwgTlNNYWtlUmVjdChj
ZW50ZXIsIHdpbmRvd0hlaWdodCAtIHBsYXlCdXR0b25Ub3BNYXJnaW4gLSBwbGF5QnV0dG9uSGVp
Z2h0LCBwbGF5QnV0dG9uV2lkdGgsIHBsYXlCdXR0b25IZWlnaHQpKTsKKyAgICBfcGxheUJ1dHRv
biA9IChOU0J1dHRvbiAqKWNyZWF0ZUNvbnRyb2xXaXRoTWVkaWFVSUNvbnRyb2xUeXBlKE1lZGlh
VUlDb250cm9sOjpQbGF5UGF1c2VCdXR0b24sIE5TTWFrZVJlY3QoY2VudGVyLCB3aW5kb3dIZWln
aHQgLSBwbGF5QnV0dG9uVG9wTWFyZ2luIC0gcGxheUJ1dHRvbkhlaWdodCwgcGxheUJ1dHRvbldp
ZHRoLCBwbGF5QnV0dG9uSGVpZ2h0KSk7CiAgICAgQVNTRVJUKFtfcGxheUJ1dHRvbiBpc0tpbmRP
ZkNsYXNzOltOU0J1dHRvbiBjbGFzc11dKTsKICAgICBbX3BsYXlCdXR0b24gc2V0VGFyZ2V0OnNl
bGZdOwogICAgIFtfcGxheUJ1dHRvbiBzZXRBY3Rpb246QHNlbGVjdG9yKHRvZ2dsZVBsYXlpbmc6
KV07CiAgICAgW2NvbnRlbnRWaWV3IGFkZFN1YnZpZXc6X3BsYXlCdXR0b25dOwogCiAgICAgQ0dG
bG9hdCBjbG9zZVRvUmlnaHQgPSB3aW5kb3dXaWR0aCAtIGhvcml6b250YWxNYXJnaW4gLSBleGl0
RnVsbHNjcmVlbkJ1dHRvbldpZHRoOwotICAgIE5TQ29udHJvbCAqZXhpdEZ1bGxzY3JlZW5CdXR0
b24gPSBjcmVhdGVDb250cm9sV2l0aE1lZGlhVUlDb250cm9sVHlwZSh3a01lZGlhVUlDb250cm9s
RXhpdEZ1bGxzY3JlZW5CdXR0b24sIE5TTWFrZVJlY3QoY2xvc2VUb1JpZ2h0LCB3aW5kb3dIZWln
aHQgLSBleGl0RnVsbHNjcmVlbkJ1dHRvblRvcE1hcmdpbiAtIGV4aXRGdWxsc2NyZWVuQnV0dG9u
SGVpZ2h0LCBleGl0RnVsbHNjcmVlbkJ1dHRvbldpZHRoLCBleGl0RnVsbHNjcmVlbkJ1dHRvbkhl
aWdodCkpOworICAgIE5TQ29udHJvbCAqZXhpdEZ1bGxzY3JlZW5CdXR0b24gPSBjcmVhdGVDb250
cm9sV2l0aE1lZGlhVUlDb250cm9sVHlwZShNZWRpYVVJQ29udHJvbDo6RXhpdEZ1bGxzY3JlZW5C
dXR0b24sIE5TTWFrZVJlY3QoY2xvc2VUb1JpZ2h0LCB3aW5kb3dIZWlnaHQgLSBleGl0RnVsbHNj
cmVlbkJ1dHRvblRvcE1hcmdpbiAtIGV4aXRGdWxsc2NyZWVuQnV0dG9uSGVpZ2h0LCBleGl0RnVs
bHNjcmVlbkJ1dHRvbldpZHRoLCBleGl0RnVsbHNjcmVlbkJ1dHRvbkhlaWdodCkpOwogICAgIFtl
eGl0RnVsbHNjcmVlbkJ1dHRvbiBzZXRBY3Rpb246QHNlbGVjdG9yKGV4aXRGdWxsc2NyZWVuOild
OwogICAgIFtleGl0RnVsbHNjcmVlbkJ1dHRvbiBzZXRUYXJnZXQ6c2VsZl07CiAgICAgW2NvbnRl
bnRWaWV3IGFkZFN1YnZpZXc6ZXhpdEZ1bGxzY3JlZW5CdXR0b25dOwpAQCAtMzM1LDI3ICs0Mzcs
MjcgQEAgLSAodm9pZCl3aW5kb3dEaWRMb2FkCiAgICAgCiAgICAgQ0dGbG9hdCB2b2x1bWVDb250
cm9sc0JvdHRvbSA9IHdpbmRvd0hlaWdodCAtIHZvbHVtZUNvbnRyb2xzVG9wTWFyZ2luIC0gdm9s
dW1lQnV0dG9uSGVpZ2h0OwogICAgIENHRmxvYXQgbGVmdCA9IGhvcml6b250YWxNYXJnaW47Ci0g
ICAgTlNDb250cm9sICp2b2x1bWVEb3duQnV0dG9uID0gY3JlYXRlQ29udHJvbFdpdGhNZWRpYVVJ
Q29udHJvbFR5cGUod2tNZWRpYVVJQ29udHJvbFZvbHVtZURvd25CdXR0b24sIE5TTWFrZVJlY3Qo
bGVmdCwgdm9sdW1lQ29udHJvbHNCb3R0b20sIHZvbHVtZUJ1dHRvbldpZHRoLCB2b2x1bWVCdXR0
b25IZWlnaHQpKTsKKyAgICBOU0NvbnRyb2wgKnZvbHVtZURvd25CdXR0b24gPSBjcmVhdGVDb250
cm9sV2l0aE1lZGlhVUlDb250cm9sVHlwZShNZWRpYVVJQ29udHJvbDo6Vm9sdW1lRG93bkJ1dHRv
biwgTlNNYWtlUmVjdChsZWZ0LCB2b2x1bWVDb250cm9sc0JvdHRvbSwgdm9sdW1lQnV0dG9uV2lk
dGgsIHZvbHVtZUJ1dHRvbkhlaWdodCkpOwogICAgIFtjb250ZW50VmlldyBhZGRTdWJ2aWV3OnZv
bHVtZURvd25CdXR0b25dOwogICAgIFt2b2x1bWVEb3duQnV0dG9uIHNldFRhcmdldDpzZWxmXTsK
ICAgICBbdm9sdW1lRG93bkJ1dHRvbiBzZXRBY3Rpb246QHNlbGVjdG9yKHNldFZvbHVtZVRvWmVy
bzopXTsKICAgICBbdm9sdW1lRG93bkJ1dHRvbiByZWxlYXNlXTsKIAogICAgIGxlZnQgKz0gdm9s
dW1lQnV0dG9uV2lkdGg7Ci0gICAgX3ZvbHVtZVNsaWRlciA9IGNyZWF0ZUNvbnRyb2xXaXRoTWVk
aWFVSUNvbnRyb2xUeXBlKHdrTWVkaWFVSUNvbnRyb2xTbGlkZXIsIE5TTWFrZVJlY3QobGVmdCwg
dm9sdW1lQ29udHJvbHNCb3R0b20gKyBDR0Zsb29yKCh2b2x1bWVCdXR0b25IZWlnaHQgLSB2b2x1
bWVTbGlkZXJIZWlnaHQpIC8gMiksIHZvbHVtZVNsaWRlcldpZHRoLCB2b2x1bWVTbGlkZXJIZWln
aHQpKTsKKyAgICBfdm9sdW1lU2xpZGVyID0gY3JlYXRlQ29udHJvbFdpdGhNZWRpYVVJQ29udHJv
bFR5cGUoTWVkaWFVSUNvbnRyb2w6OlNsaWRlciwgTlNNYWtlUmVjdChsZWZ0LCB2b2x1bWVDb250
cm9sc0JvdHRvbSArIENHRmxvb3IoKHZvbHVtZUJ1dHRvbkhlaWdodCAtIHZvbHVtZVNsaWRlckhl
aWdodCkgLyAyKSwgdm9sdW1lU2xpZGVyV2lkdGgsIHZvbHVtZVNsaWRlckhlaWdodCkpOwogICAg
IFtfdm9sdW1lU2xpZGVyIHNldFZhbHVlOltOU051bWJlciBudW1iZXJXaXRoRG91YmxlOltzZWxm
IG1heFZvbHVtZV1dIGZvcktleTpAIm1heFZhbHVlIl07CiAgICAgW192b2x1bWVTbGlkZXIgc2V0
VGFyZ2V0OnNlbGZdOwogICAgIFtfdm9sdW1lU2xpZGVyIHNldEFjdGlvbjpAc2VsZWN0b3Iodm9s
dW1lQ2hhbmdlZDopXTsKICAgICBbY29udGVudFZpZXcgYWRkU3Vidmlldzpfdm9sdW1lU2xpZGVy
XTsKIAogICAgIGxlZnQgKz0gdm9sdW1lU2xpZGVyV2lkdGggKyB2b2x1bWVVcEJ1dHRvbkxlZnRN
YXJnaW47Ci0gICAgTlNDb250cm9sICp2b2x1bWVVcEJ1dHRvbiA9IGNyZWF0ZUNvbnRyb2xXaXRo
TWVkaWFVSUNvbnRyb2xUeXBlKHdrTWVkaWFVSUNvbnRyb2xWb2x1bWVVcEJ1dHRvbiwgTlNNYWtl
UmVjdChsZWZ0LCB2b2x1bWVDb250cm9sc0JvdHRvbSwgdm9sdW1lQnV0dG9uV2lkdGgsIHZvbHVt
ZUJ1dHRvbkhlaWdodCkpOworICAgIE5TQ29udHJvbCAqdm9sdW1lVXBCdXR0b24gPSBjcmVhdGVD
b250cm9sV2l0aE1lZGlhVUlDb250cm9sVHlwZShNZWRpYVVJQ29udHJvbDo6Vm9sdW1lVXBCdXR0
b24sIE5TTWFrZVJlY3QobGVmdCwgdm9sdW1lQ29udHJvbHNCb3R0b20sIHZvbHVtZUJ1dHRvbldp
ZHRoLCB2b2x1bWVCdXR0b25IZWlnaHQpKTsKICAgICBbdm9sdW1lVXBCdXR0b24gc2V0VGFyZ2V0
OnNlbGZdOwogICAgIFt2b2x1bWVVcEJ1dHRvbiBzZXRBY3Rpb246QHNlbGVjdG9yKHNldFZvbHVt
ZVRvTWF4aW11bTopXTsKICAgICBbY29udGVudFZpZXcgYWRkU3Vidmlldzp2b2x1bWVVcEJ1dHRv
bl07CiAgICAgW3ZvbHVtZVVwQnV0dG9uIHJlbGVhc2VdOwogCi0gICAgX3RpbWVsaW5lID0gd2tD
cmVhdGVNZWRpYVVJQ29udHJvbCh3a01lZGlhVUlDb250cm9sVGltZWxpbmUpOworICAgIF90aW1l
bGluZSA9IGNyZWF0ZU1lZGlhVUlDb250cm9sKE1lZGlhVUlDb250cm9sOjpUaW1lbGluZSk7CiAK
ICAgICBbX3RpbWVsaW5lIHNldFRhcmdldDpzZWxmXTsKICAgICBbX3RpbWVsaW5lIHNldEFjdGlv
bjpAc2VsZWN0b3IodGltZWxpbmVQb3NpdGlvbkNoYW5nZWQ6KV07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYlN5c3RlbUludGVyZmFj
ZS5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViU3lz
dGVtSW50ZXJmYWNlLm1tCmluZGV4IDBkZGQ1NzE0NTliODU2ZjM5MjA1ZTExMGNjMDBjY2NhZWUz
ZmQwZWUuLmJkYTVkNzNkZmMxMjJmM2UwMjIzYWFhZTU1Mjg0ZDRiMzllNTczY2UgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViU3lzdGVt
SW50ZXJmYWNlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9tYWMvV2ViU3lzdGVtSW50ZXJmYWNlLm1tCkBAIC00MywxOCArNDMsNiBAQCB2b2lkIEluaXRX
ZWJDb3JlU3lzdGVtSW50ZXJmYWNlKHZvaWQpCiAgICAgICAgIElOSVQoRHJhd01lZGlhVUlQYXJ0
KTsKICAgICAgICAgSU5JVChIaXRUZXN0TWVkaWFVSVBhcnQpOwogICAgICAgICBJTklUKE1lYXN1
cmVNZWRpYVVJUGFydCk7Ci0gICAgICAgIElOSVQoUVRJbmNsdWRlT25seU1vZGVybk1lZGlhRmls
ZVR5cGVzKTsKLSAgICAgICAgSU5JVChRVE1vdmllRGlzYWJsZUNvbXBvbmVudCk7Ci0gICAgICAg
IElOSVQoUVRNb3ZpZUdldFR5cGUpOwotICAgICAgICBJTklUKFFUTW92aWVIYXNDbG9zZWRDYXB0
aW9ucyk7Ci0gICAgICAgIElOSVQoUVRNb3ZpZU1heFRpbWVMb2FkZWQpOwotICAgICAgICBJTklU
KFFUTW92aWVNYXhUaW1lTG9hZGVkQ2hhbmdlTm90aWZpY2F0aW9uKTsKLSAgICAgICAgSU5JVChR
VE1vdmllUmVzb2x2ZWRVUkwpOwotICAgICAgICBJTklUKFFUTW92aWVTZWxlY3RQcmVmZXJyZWRB
bHRlcm5hdGVzKTsKLSAgICAgICAgSU5JVChRVE1vdmllU2V0U2hvd0Nsb3NlZENhcHRpb25zKTsK
LSAgICAgICAgSU5JVChRVEdldFNpdGVzSW5NZWRpYURvd25sb2FkQ2FjaGUpOwotICAgICAgICBJ
TklUKFFUQ2xlYXJNZWRpYURvd25sb2FkQ2FjaGVGb3JTaXRlKTsKLSAgICAgICAgSU5JVChRVENs
ZWFyTWVkaWFEb3dubG9hZENhY2hlKTsKICNlbmRpZgogICAgICAgICBJTklUKFNldENPTk5FQ1RQ
cm94eUF1dGhvcml6YXRpb25Gb3JTdHJlYW0pOwogICAgICAgICBJTklUKFNldENPTk5FQ1RQcm94
eUZvclN0cmVhbSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJTeXN0ZW1JbnRlcmZhY2UubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJTeXN0ZW1JbnRlcmZhY2UubW0KaW5kZXggYTMyMDI0NTM3Y2FlNzc0
MDRkMTIyYTNhMzg1NGQzYzJlN2JhMjQ5MC4uMTc0NjU4NmIyNDJmNTJlMDdhOTlmZTkxNWFhNmI0
ZjYyYTNiYzVkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViU3lzdGVtSW50ZXJmYWNlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYlN5c3RlbUludGVyZmFjZS5tbQpAQCAtNDksMjUgKzQ5LDkgQEAg
dm9pZCBJbml0V2ViQ29yZVN5c3RlbUludGVyZmFjZSh2b2lkKQogICAgIElOSVQoRHJhd01lZGlh
U2xpZGVyVHJhY2spOwogICAgIElOSVQoSGl0VGVzdE1lZGlhVUlQYXJ0KTsKICAgICBJTklUKE1l
YXN1cmVNZWRpYVVJUGFydCk7Ci0gICAgSU5JVChDcmVhdGVNZWRpYVVJQmFja2dyb3VuZFZpZXcp
OwotICAgIElOSVQoQ3JlYXRlTWVkaWFVSUNvbnRyb2wpOwogI2VuZGlmCiAgICAgSU5JVChTZXRD
T05ORUNUUHJveHlBdXRob3JpemF0aW9uRm9yU3RyZWFtKTsKICAgICBJTklUKFNldENPTk5FQ1RQ
cm94eUZvclN0cmVhbSk7Ci0jaWYgRU5BQkxFKFZJREVPKSAmJiAhUExBVEZPUk0oSU9TKQotICAg
IElOSVQoUVRJbmNsdWRlT25seU1vZGVybk1lZGlhRmlsZVR5cGVzKTsKLSAgICBJTklUKFFUTW92
aWVEaXNhYmxlQ29tcG9uZW50KTsKLSAgICBJTklUKFFUTW92aWVNYXhUaW1lTG9hZGVkKTsKLSAg
ICBJTklUKFFUTW92aWVNYXhUaW1lTG9hZGVkQ2hhbmdlTm90aWZpY2F0aW9uKTsKLSAgICBJTklU
KFFUTW92aWVHZXRUeXBlKTsKLSAgICBJTklUKFFUTW92aWVIYXNDbG9zZWRDYXB0aW9ucyk7Ci0g
ICAgSU5JVChRVE1vdmllUmVzb2x2ZWRVUkwpOwotICAgIElOSVQoUVRNb3ZpZVNldFNob3dDbG9z
ZWRDYXB0aW9ucyk7Ci0gICAgSU5JVChRVE1vdmllU2VsZWN0UHJlZmVycmVkQWx0ZXJuYXRlcyk7
Ci0gICAgSU5JVChRVEdldFNpdGVzSW5NZWRpYURvd25sb2FkQ2FjaGUpOwotICAgIElOSVQoUVRD
bGVhck1lZGlhRG93bmxvYWRDYWNoZUZvclNpdGUpOwotICAgIElOSVQoUVRDbGVhck1lZGlhRG93
bmxvYWRDYWNoZSk7Ci0jZW5kaWYKIAogI2lmICFQTEFURk9STShJT1MpCiAgICAgSU5JVChFeGVj
dXRhYmxlV2FzTGlua2VkT25PckJlZm9yZVNub3dMZW9wYXJkKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>320120</attachid>
            <date>2017-09-07 09:42:23 -0700</date>
            <delta_ts>2017-09-07 09:53:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-176472-20170907094221.patch</filename>
            <type>text/plain</type>
            <size>34141</size>
            <attacher name="Andy Estes">aestes</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIxNjg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDY5MjY5MTkxOTNmNWE2
MjdjNmRiYzQyNDFiYTVlY2M3ZDdhNmU3NC4uYWUyODQ1OTMzYzJlNDk2MTVhYTMyOWE1OWI3YTky
YTc0NjNkZmVlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDE3LTA5LTA2ICBBbmR5
IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBbTWFjXSBVcHN0cmVhbSBRVEtp
dC1yZWxhdGVkIFdlYktpdFN5c3RlbUludGVyZmFjZSBmdW5jdGlvbnMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NjQ3MgorCisgICAgICAgIFJldmll
d2VkIGJ5IEVyaWMgQ2FybHNvbi4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9N
ZWRpYVBsYXllclByaXZhdGVRVEtpdC5tbToKKyAgICAgICAgKFdlYkNvcmU6OmRpc2FibGVDb21w
b25lbnRzT25jZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6
Y3JlYXRlUVRNb3ZpZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVRVEtp
dDo6aGFzQ2xvc2VkQ2FwdGlvbnMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5
ZXJQcml2YXRlUVRLaXQ6OnNldENsb3NlZENhcHRpb25zVmlzaWJsZSk6CisgICAgICAgIChXZWJD
b3JlOjpzZWxlY3RQcmVmZXJyZWRBbHRlcm5hdGVUcmFja0Zvck1lZGlhVHlwZSk6CisgICAgICAg
IChXZWJDb3JlOjpzZWxlY3RQcmVmZXJyZWRBbHRlcm5hdGVzKToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0Ojp1cGRhdGVTdGF0ZXMpOgorICAgICAgICAoV2ViQ29y
ZTo6bWltZU1vZGVyblR5cGVzQ2FjaGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQ
cml2YXRlUVRLaXQ6Om9yaWdpbnNJbk1lZGlhQ2FjaGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFQbGF5ZXJQcml2YXRlUVRLaXQ6OmNsZWFyTWVkaWFDYWNoZSk6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6Y2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2lucyk6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6aGFzU2luZ2xlU2VjdXJp
dHlPcmlnaW4gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlUVRL
aXQ6Om1vdmllTG9hZFR5cGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQ
cml2YXRlUVRLaXQ6OmNhblNhdmVNZWRpYURhdGEgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3Jt
L21hYy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmg6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1dl
YkNvcmVTeXN0ZW1JbnRlcmZhY2UubW06CisgICAgICAgICogcGxhdGZvcm0vbWFjL1dlYlZpZGVv
RnVsbHNjcmVlbkhVRFdpbmRvd0NvbnRyb2xsZXIubW06CisgICAgICAgIChjcmVhdGVNZWRpYVVJ
Q29udHJvbCk6CisgICAgICAgIChjcmVhdGVDb250cm9sV2l0aE1lZGlhVUlDb250cm9sVHlwZSk6
CisgICAgICAgIChjcmVhdGVNZWRpYVVJQmFja2dyb3VuZFZpZXcpOgorICAgICAgICAoLVtXZWJW
aWRlb0Z1bGxzY3JlZW5IVURXaW5kb3dDb250cm9sbGVyIHdpbmRvd0RpZExvYWRdKToKKwogMjAx
Ny0wOS0wNiAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgogCiAgICAgICAgIFJFR1JFU1NJ
T04gKHIyMjE1OTgpOiBMZWdhY3kgInJvdW5kIiBhbmQgImJldmVsIiBvcHRpb25zIGNhbiBubyBs
b25nZXIgYmUgdXNlZCB3aXRoIHRoZSBsZWdhY3kgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEIHNl
dExpbmVKb2luIG9wZXJhdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKaW5kZXggZWU0MGU0NjE3NTU5NmJj
NTIyZjMxN2M2YzU5OGRiMDg0YzE3M2M1Ni4uZWVhNzkwNWM1ZWRjMDNhYTgxNzgwMWZjM2NkMGNh
OTAxMjg4MzhiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTctMDkt
MDYgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29tPgorCisgICAgICAgIFtNYWNdIFVwc3Ry
ZWFtIFFUS2l0LXJlbGF0ZWQgV2ViS2l0U3lzdGVtSW50ZXJmYWNlIGZ1bmN0aW9ucworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc2NDcyCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgRXJpYyBDYXJsc29uLgorCisgICAgICAgICogcGFsL3NwaS9tYWMvUVRL
aXRTUEkuaDoKKwogMjAxNy0wOS0wNCAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtp
dC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjIyMTQ5NCBhbmQgcjIy
MTUwMC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKaW5kZXggMzY0ZDhlNWQ4MGQyNTVkNjkzNmZiMmUxYTBiZDQ2MzdhYjU5YTA2
ZS4uZjY3NjU3MTZjZDQ5YzZhMDBjNmY5OWU3ZTQwZjg3NTgyNTg4MjdhOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxMyBAQAorMjAxNy0wOS0wNiAgQW5keSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+
CisKKyAgICAgICAgW01hY10gVXBzdHJlYW0gUVRLaXQtcmVsYXRlZCBXZWJLaXRTeXN0ZW1JbnRl
cmZhY2UgZnVuY3Rpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNzY0NzIKKworICAgICAgICBSZXZpZXdlZCBieSBFcmljIENhcmxzb24uCisKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJTeXN0ZW1JbnRlcmZhY2Uu
bW06CisgICAgICAgIChJbml0V2ViQ29yZVN5c3RlbUludGVyZmFjZSk6CisKIDIwMTctMDktMDYg
IEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CiAKICAgICAgICAgRGVueSB0aGly
ZC1wYXJ0eSBjb29raWUgY3JlYXRpb24gZm9yIHByZXZhbGVudCByZXNvdXJjZXMgd2l0aG91dCBp
bnRlcmFjdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4IDdlNTFlYmFmNmJmZjhl
ZmIxZmNjY2Q4MWQyODQwZmY3MmI0NGM1ZTguLjBhZDdhMmE3MzIxNzY1ZDY0ZWVhYThiYzM2OGYw
M2RiODIzNGQzNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBA
QAorMjAxNy0wOS0wNiAgQW5keSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+CisKKyAgICAgICAg
W01hY10gVXBzdHJlYW0gUVRLaXQtcmVsYXRlZCBXZWJLaXRTeXN0ZW1JbnRlcmZhY2UgZnVuY3Rp
b25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzY0
NzIKKworICAgICAgICBSZXZpZXdlZCBieSBFcmljIENhcmxzb24uCisKKyAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9XZWJTeXN0ZW1JbnRlcmZhY2UubW06CisgICAgICAgIChJbml0V2ViQ29yZVN5
c3RlbUludGVyZmFjZSk6CisKIDIwMTctMDktMDUgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRv
bkBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIHNvbWUgdW51c2VkIGJpdHMgb2YgY29kZSBh
bmQgcmVzb3VyY2VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9tYWMv
UVRLaXRTUEkuaCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL21hYy9RVEtpdFNQSS5oCmlu
ZGV4IDcxNzg5Y2RmMjVkYThhZjQwNGI3MGE0Y2I1MTljMWNhM2Q4NTJlMmYuLjViZmZlYWUxNTA1
ZTUxZTkyM2E0MjU0ZWY1N2I4NzEwNmQxZjFiOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1BBTC9wYWwvc3BpL21hYy9RVEtpdFNQSS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwv
c3BpL21hYy9RVEtpdFNQSS5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTYtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTI1LDggKzI1LDE4IEBACiAKICNwcmFnbWEgb25jZQogCi0jaWYg
VVNFKEFQUExFX0lOVEVSTkFMX1NESykgfHwgX19NQUNfT1NfWF9WRVJTSU9OX01BWF9BTExPV0VE
IDwgMTAxMjAwCisjaWYgX19NQUNfT1NfWF9WRVJTSU9OX01BWF9BTExPV0VEIDwgMTAxMjAwCisK
ICNpbXBvcnQgPFFUS2l0L1FUS2l0Lmg+CisKKyNlbHNlCisKKyNpZiBVU0UoQVBQTEVfSU5URVJO
QUxfU0RLKQorCisjaW1wb3J0IDxRVEtpdC9RVEhVREJhY2tncm91bmRWaWV3X1ByaXZhdGUuaD4K
KyNpbXBvcnQgPFFUS2l0L1FUS2l0X1ByaXZhdGUuaD4KKyNpbXBvcnQgPFFUS2l0L1FUVXRpbGl0
aWVzX1ByaXZhdGUuaD4KKwogI2Vsc2UKIAogZW51bSB7CkBAIC00OCw2ICs1OCwxNCBAQCB0eXBl
ZGVmIGVudW0gewogICAgIFFUSW5jbHVkZUNvbW1vblR5cGVzID0gMCwKIH0gUVRNb3ZpZUZpbGVU
eXBlT3B0aW9uczsKIAorZW51bSB7CisgICAgUVRNb3ZpZVR5cGVVbmtub3duID0gMCwKKyAgICBR
VE1vdmllVHlwZUxvY2FsLAorICAgIFFUTW92aWVUeXBlRmFzdFN0YXJ0LAorICAgIFFUTW92aWVU
eXBlTGl2ZVN0cmVhbSwKKyAgICBRVE1vdmllVHlwZVN0b3JlZFN0cmVhbQorfTsKKwogQGludGVy
ZmFjZSBRVE1lZGlhIDogTlNPYmplY3QKIAogLSAoaWQpYXR0cmlidXRlRm9yS2V5OihOU1N0cmlu
ZyAqKWF0dHJpYnV0ZUtleTsKQEAgLTU4LDYgKzc2LDggQEAgdHlwZWRlZiBlbnVtIHsKIAogKyAo
TlNBcnJheSAqKW1vdmllRmlsZVR5cGVzOihRVE1vdmllRmlsZVR5cGVPcHRpb25zKXR5cGVzOwog
CisrICh2b2lkKWRpc2FibGVDb21wb25lbnQ6KENvbXBvbmVudERlc2NyaXB0aW9uKWNvbXBvbmVu
dDsKKwogLSAoaWQpaW5pdFdpdGhBdHRyaWJ1dGVzOihOU0RpY3Rpb25hcnkgKilhdHRyaWJ1dGVz
IGVycm9yOihOU0Vycm9yICoqKWVycm9yUHRyOwogCiAtICh2b2lkKXBsYXk7CkBAIC04MSw2ICsx
MDEsMTEgQEAgdHlwZWRlZiBlbnVtIHsKIAogLSAoTlNBcnJheSAqKXRyYWNrczsKIAorLSAoTlNB
cnJheSAqKWFsdGVybmF0ZUdyb3VwVHlwZXM7CistIChOU0FycmF5ICopYWx0ZXJuYXRlc0Zvck1l
ZGlhVHlwZTooTlNTdHJpbmcgKil0eXBlOworLSAodm9pZClkZXNlbGVjdEFsdGVybmF0ZUdyb3Vw
VHJhY2s6KFFUVHJhY2sgKilhbHRlcm5hdGVUcmFjazsKKy0gKHZvaWQpc2VsZWN0QWx0ZXJuYXRl
R3JvdXBUcmFjazooUVRUcmFjayAqKWFsdGVybmF0ZVRyYWNrOworCiBAZW5kCiAKIEBpbnRlcmZh
Y2UgUVRNb3ZpZUxheWVyIDogQ0FMYXllcgpAQCAtMTA2LDQgKzEzMSwyMiBAQCB0eXBlZGVmIGVu
dW0gewogCiBAZW5kCiAKK0BpbnRlcmZhY2UgUVRIVURCYWNrZ3JvdW5kVmlldyA6IE5TVmlldwor
CistICh2b2lkKXNldENvbnRlbnRCb3JkZXJQb3NpdGlvbjooQ0dGbG9hdCljb250ZW50Qm9yZGVy
UG9zaXRpb247CisKK0BlbmQKKworQGludGVyZmFjZSBRVFV0aWxpdGllcyA6IE5TT2JqZWN0CisK
KysgKGlkKXF0VXRpbGl0aWVzOworCistIChOU0FycmF5ICopc2l0ZXNJbkRvd25sb2FkQ2FjaGU7
CistICh2b2lkKWNsZWFyRG93bmxvYWRDYWNoZTsKKy0gKHZvaWQpY2xlYXJEb3dubG9hZENhY2hl
Rm9yU2l0ZTooTlNTdHJpbmcgKilzaXRlOworCitAZW5kCisKKyNlbmRpZgorCiAjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9NZWRpYVBsYXll
clByaXZhdGVRVEtpdC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9N
ZWRpYVBsYXllclByaXZhdGVRVEtpdC5tbQppbmRleCA4NWNmNTYxZDczMzE3OTY3NmVjZjhlOWZk
YWEzNmZjMGU3ZTU4YjAxLi5hYzE2Y2IzMTNhMThkYmMxMTEzOWM3NzQxZmFjOTAxNjQ4MzA0NjU1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQ
bGF5ZXJQcml2YXRlUVRLaXQubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvbWFjL01lZGlhUGxheWVyUHJpdmF0ZVFUS2l0Lm1tCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCwgMjAxMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDctMjAxNyBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTUyLDYgKzUyLDcgQEAgU09GVF9MSU5LKFFUS2l0LCBRVE1ha2VUaW1lLCBRVFRpbWUsIChsb25n
IGxvbmcgdGltZVZhbHVlLCBsb25nIHRpbWVTY2FsZSksICh0aW0KIAogU09GVF9MSU5LX0NMQVNT
KFFUS2l0LCBRVE1vdmllKQogU09GVF9MSU5LX0NMQVNTKFFUS2l0LCBRVE1vdmllTGF5ZXIpCitT
T0ZUX0xJTktfQ0xBU1MoUVRLaXQsIFFUVXRpbGl0aWVzKQogCiBTT0ZUX0xJTktfUE9JTlRFUihR
VEtpdCwgUVRUcmFja01lZGlhVHlwZUF0dHJpYnV0ZSwgTlNTdHJpbmcgKikKIFNPRlRfTElOS19Q
T0lOVEVSKFFUS2l0LCBRVE1lZGlhVHlwZUF0dHJpYnV0ZSwgTlNTdHJpbmcgKikKQEAgLTcxLDYg
KzcyLDcgQEAgU09GVF9MSU5LX1BPSU5URVIoUVRLaXQsIFFUTW92aWVJc0FjdGl2ZUF0dHJpYnV0
ZSwgTlNTdHJpbmcgKikKIFNPRlRfTElOS19QT0lOVEVSKFFUS2l0LCBRVE1vdmllTG9hZFN0YXRl
QXR0cmlidXRlLCBOU1N0cmluZyAqKQogU09GVF9MSU5LX1BPSU5URVIoUVRLaXQsIFFUTW92aWVM
b2FkU3RhdGVFcnJvckF0dHJpYnV0ZSwgTlNTdHJpbmcgKikKIFNPRlRfTElOS19QT0lOVEVSKFFU
S2l0LCBRVE1vdmllTG9hZFN0YXRlRGlkQ2hhbmdlTm90aWZpY2F0aW9uLCBOU1N0cmluZyAqKQor
U09GVF9MSU5LX1BPSU5URVIoUVRLaXQsIFFUTW92aWVMb2FkZWRSYW5nZXNEaWRDaGFuZ2VOb3Rp
ZmljYXRpb24sIE5TU3RyaW5nICopOwogU09GVF9MSU5LX1BPSU5URVIoUVRLaXQsIFFUTW92aWVO
YXR1cmFsU2l6ZUF0dHJpYnV0ZSwgTlNTdHJpbmcgKikKIFNPRlRfTElOS19QT0lOVEVSKFFUS2l0
LCBRVE1vdmllQ3VycmVudFNpemVBdHRyaWJ1dGUsIE5TU3RyaW5nICopCiBTT0ZUX0xJTktfUE9J
TlRFUihRVEtpdCwgUVRNb3ZpZVByZXZlbnRFeHRlcm5hbFVSTExpbmtzQXR0cmlidXRlLCBOU1N0
cmluZyAqKQpAQCAtOTcsNiArOTksNyBAQCBAZW5kCiAKICNkZWZpbmUgUVRNb3ZpZSBnZXRRVE1v
dmllQ2xhc3MoKQogI2RlZmluZSBRVE1vdmllTGF5ZXIgZ2V0UVRNb3ZpZUxheWVyQ2xhc3MoKQor
I2RlZmluZSBRVFV0aWxpdGllcyBnZXRRVFV0aWxpdGllc0NsYXNzKCkKIAogI2RlZmluZSBRVFRy
YWNrTWVkaWFUeXBlQXR0cmlidXRlIGdldFFUVHJhY2tNZWRpYVR5cGVBdHRyaWJ1dGUoKQogI2Rl
ZmluZSBRVE1lZGlhVHlwZUF0dHJpYnV0ZSBnZXRRVE1lZGlhVHlwZUF0dHJpYnV0ZSgpCkBAIC0x
MTYsNiArMTE5LDcgQEAgQGVuZAogI2RlZmluZSBRVE1vdmllTG9hZFN0YXRlQXR0cmlidXRlIGdl
dFFUTW92aWVMb2FkU3RhdGVBdHRyaWJ1dGUoKQogI2RlZmluZSBRVE1vdmllTG9hZFN0YXRlRXJy
b3JBdHRyaWJ1dGUgZ2V0UVRNb3ZpZUxvYWRTdGF0ZUVycm9yQXR0cmlidXRlKCkKICNkZWZpbmUg
UVRNb3ZpZUxvYWRTdGF0ZURpZENoYW5nZU5vdGlmaWNhdGlvbiBnZXRRVE1vdmllTG9hZFN0YXRl
RGlkQ2hhbmdlTm90aWZpY2F0aW9uKCkKKyNkZWZpbmUgUVRNb3ZpZUxvYWRlZFJhbmdlc0RpZENo
YW5nZU5vdGlmaWNhdGlvbiBnZXRRVE1vdmllTG9hZGVkUmFuZ2VzRGlkQ2hhbmdlTm90aWZpY2F0
aW9uKCkKICNkZWZpbmUgUVRNb3ZpZU5hdHVyYWxTaXplQXR0cmlidXRlIGdldFFUTW92aWVOYXR1
cmFsU2l6ZUF0dHJpYnV0ZSgpCiAjZGVmaW5lIFFUTW92aWVDdXJyZW50U2l6ZUF0dHJpYnV0ZSBn
ZXRRVE1vdmllQ3VycmVudFNpemVBdHRyaWJ1dGUoKQogI2RlZmluZSBRVE1vdmllUHJldmVudEV4
dGVybmFsVVJMTGlua3NBdHRyaWJ1dGUgZ2V0UVRNb3ZpZVByZXZlbnRFeHRlcm5hbFVSTExpbmtz
QXR0cmlidXRlKCkKQEAgLTMwNyw3ICszMTEsNyBAQCBzdGF0aWMgdm9pZCBkaXNhYmxlQ29tcG9u
ZW50c09uY2UoKQogICAgIH07CiAKICAgICBmb3IgKGF1dG8mIGNvbXBvbmVudCA6IGNvbXBvbmVu
dHNUb0Rpc2FibGUpCi0gICAgICAgIHdrUVRNb3ZpZURpc2FibGVDb21wb25lbnQoY29tcG9uZW50
KTsKKyAgICAgICAgW1FUTW92aWUgZGlzYWJsZUNvbXBvbmVudDpjb21wb25lbnRdOwogfQogCiB2
b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0OjpjcmVhdGVRVE1vdmllKE5TVVJMICp1cmwsIE5T
RGljdGlvbmFyeSAqbW92aWVBdHRyaWJ1dGVzKQpAQCAtMzQ1LDE0ICszNDksMTAgQEAgdm9pZCBN
ZWRpYVBsYXllclByaXZhdGVRVEtpdDo6Y3JlYXRlUVRNb3ZpZShOU1VSTCAqdXJsLCBOU0RpY3Rp
b25hcnkgKm1vdmllQXR0cmkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgb2JqZWN0Om1fcXRNb3ZpZS5nZXQoKV07CiAKICAgICAvLyBJbiB1cGRhdGVTdGF0
ZSgpLCB3ZSB0cmFjayB3aGVuIG1heFRpbWVMb2FkZWQoKSA9PSBkdXJhdGlvbigpLgotICAgIC8v
IEluIG5ld2VyIHZlcnNpb24gb2YgUXVpY2tUaW1lLCBhIG5vdGlmaWNhdGlvbiBpcyBlbWl0dGVk
IHdoZW4gbWF4VGltZUxvYWRlZCBjaGFuZ2VzLgotICAgIC8vIEluIG9sZGVyIHZlcnNpb24gb2Yg
UXVpY2tUaW1lLCBRVE1vdmllTG9hZFN0YXRlRGlkQ2hhbmdlTm90aWZpY2F0aW9uIGJlIGZpcmVk
LgotICAgIGlmIChOU1N0cmluZyAqbWF4VGltZUxvYWRlZENoYW5nZU5vdGlmaWNhdGlvbiA9IHdr
UVRNb3ZpZU1heFRpbWVMb2FkZWRDaGFuZ2VOb3RpZmljYXRpb24oKSkgewotICAgICAgICBbW05T
Tm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdIGFkZE9ic2VydmVyOm1fb2JqY09ic2Vy
dmVyLmdldCgpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc2VsZWN0b3I6QHNlbGVjdG9yKGxvYWRlZFJhbmdlc0NoYW5nZWQ6KQotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOm1heFRpbWVMb2Fk
ZWRDaGFuZ2VOb3RpZmljYXRpb24KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG9iamVjdDptX3F0TW92aWUuZ2V0KCldOyAgICAgICAgCi0gICAgfQor
ICAgIFtbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0gYWRkT2JzZXJ2ZXI6bV9v
YmpjT2JzZXJ2ZXIuZ2V0KCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNlbGVjdG9yOkBzZWxlY3Rvcihsb2FkZWRSYW5nZXNDaGFuZ2VkOikKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOlFUTW92aWVMb2Fk
ZWRSYW5nZXNEaWRDaGFuZ2VOb3RpZmljYXRpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgb2JqZWN0Om1fcXRNb3ZpZS5nZXQoKV07CiAKICAgICBbW05T
Tm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdIGFkZE9ic2VydmVyOm1fb2JqY09ic2Vy
dmVyLmdldCgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
ZWxlY3RvcjpAc2VsZWN0b3IocmF0ZUNoYW5nZWQ6KSAKQEAgLTc3MSwxOCArNzcxLDMwIEBAIGJv
b2wgTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6Omhhc0Nsb3NlZENhcHRpb25zKCkgY29uc3QKIHsK
ICAgICBpZiAoIW1ldGFEYXRhQXZhaWxhYmxlKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICByZXR1cm4gd2tRVE1vdmllSGFzQ2xvc2VkQ2FwdGlvbnMobV9xdE1vdmllLmdldCgpKTsgIAor
ICAgIHJldHVybiBbW21fcXRNb3ZpZSBhbHRlcm5hdGVHcm91cFR5cGVzXSBjb250YWluc09iamVj
dDpAImNsY3AiXTsKIH0KIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6c2V0Q2xvc2Vk
Q2FwdGlvbnNWaXNpYmxlKGJvb2wgY2xvc2VkQ2FwdGlvbnNWaXNpYmxlKQogewotICAgIGlmICht
ZXRhRGF0YUF2YWlsYWJsZSgpKSB7Ci0gICAgICAgIHdrUVRNb3ZpZVNldFNob3dDbG9zZWRDYXB0
aW9ucyhtX3F0TW92aWUuZ2V0KCksIGNsb3NlZENhcHRpb25zVmlzaWJsZSk7CisgICAgaWYgKCFt
ZXRhRGF0YUF2YWlsYWJsZSgpKQorICAgICAgICByZXR1cm47CiAKLSAgICAgICAgaWYgKGNsb3Nl
ZENhcHRpb25zVmlzaWJsZSAmJiBtX3F0VmlkZW9MYXllcikgewotICAgICAgICAgICAgLy8gQ2Fw
dGlvbnMgd2lsbCBiZSByZW5kZXJlZCB1cHNpZGUgZG93biB1bmxlc3Mgd2UgZmxhZyB0aGUgbW92
aWUgYXMgZmxpcHBlZCAoYWdhaW4pLiBTZWUgPHJkYXI6Ly83NDA4NDQwPi4KLSAgICAgICAgICAg
IFttX3F0VmlkZW9MYXllci5nZXQoKSBzZXRHZW9tZXRyeUZsaXBwZWQ6WUVTXTsKLSAgICAgICAg
fQorICAgIGlmICghW1ttX3F0TW92aWUgYWx0ZXJuYXRlR3JvdXBUeXBlc10gY29udGFpbnNPYmpl
Y3Q6QCJjbGNwIl0pCisgICAgICAgIHJldHVybjsKKworICAgIE5TQXJyYXkgKnRyYWNrQWx0ZXJu
YXRlc0FycmF5ID0gW21fcXRNb3ZpZSBhbHRlcm5hdGVzRm9yTWVkaWFUeXBlOkAiY2xjcCJdOwor
ICAgIFFUVHJhY2sgKnRyYWNrID0gdHJhY2tBbHRlcm5hdGVzQXJyYXlbMF1bQCJRVEFsdGVybmF0
ZXNfUVRUcmFjayJdOworICAgIGlmICghdHJhY2spCisgICAgICAgIHJldHVybjsKKworICAgIGlm
ICghc2hvd0Nsb3NlZENhcHRpb25zKQorICAgICAgICBbbV9xdE1vdmllIGRlc2VsZWN0QWx0ZXJu
YXRlR3JvdXBUcmFjazp0cmFja107CisgICAgZWxzZQorICAgICAgICBbbV9xdE1vdmllIHNlbGVj
dEFsdGVybmF0ZUdyb3VwVHJhY2s6dHJhY2tdOworCisgICAgaWYgKGNsb3NlZENhcHRpb25zVmlz
aWJsZSAmJiBtX3F0VmlkZW9MYXllcikgeworICAgICAgICAvLyBDYXB0aW9ucyB3aWxsIGJlIHJl
bmRlcmVkIHVwc2lkZSBkb3duIHVubGVzcyB3ZSBmbGFnIHRoZSBtb3ZpZSBhcyBmbGlwcGVkIChh
Z2FpbikuIFNlZSA8cmRhcjovLzc0MDg0NDA+LgorICAgICAgICBbbV9xdFZpZGVvTGF5ZXIuZ2V0
KCkgc2V0R2VvbWV0cnlGbGlwcGVkOllFU107CiAgICAgfQogfQogCkBAIC05NDAsNiArOTUyLDU4
IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6OnByZXBhcmVGb3JSZW5kZXJpbmcoKQog
ICAgIGlmIChjdXJyZW50UmVuZGVyaW5nTW9kZSgpID09IE1lZGlhUmVuZGVyaW5nTW92aWVMYXll
ciB8fCBwcmVmZXJyZWRSZW5kZXJpbmdNb2RlKCkgPT0gTWVkaWFSZW5kZXJpbmdNb3ZpZUxheWVy
KQogICAgICAgICBtX3BsYXllci0+Y2xpZW50KCkubWVkaWFQbGF5ZXJSZW5kZXJpbmdNb2RlQ2hh
bmdlZChtX3BsYXllcik7CiB9CisgICAgCitzdGF0aWMgdm9pZCBzZWxlY3RQcmVmZXJyZWRBbHRl
cm5hdGVUcmFja0Zvck1lZGlhVHlwZShRVE1vdmllICptb3ZpZSwgTlNTdHJpbmcgKm1lZGlhVHlw
ZSkKK3sKKyAgICBOU0FycmF5ICphbHRlcm5hdGVzID0gW21vdmllIGFsdGVybmF0ZXNGb3JNZWRp
YVR5cGU6bWVkaWFUeXBlXTsKKyAgICBpZiAoIWFsdGVybmF0ZXMuY291bnQpCisgICAgICAgIHJl
dHVybjsKKworICAgIGF1dG8gbGFuZ3VhZ2VUb1FUVHJhY2tNYXAgPSBhZG9wdE5TKFtbTlNNdXRh
YmxlRGljdGlvbmFyeSBhbGxvY10gaW5pdFdpdGhDYXBhY2l0eTphbHRlcm5hdGVzLmNvdW50XSk7
CisKKyAgICBmb3IgKE5TVUludGVnZXIgaW5kZXggPSAwOyBpbmRleCA8IGFsdGVybmF0ZXMuY291
bnQ7ICsraW5kZXgpIHsKKyAgICAgICAgTlNEaWN0aW9uYXJ5ICphbHRlcm5hdGVEaWN0ID0gYWx0
ZXJuYXRlc1tpbmRleF07CisgICAgICAgIE5TU3RyaW5nICpsYW5ndWFnZVN0cmluZyA9IGFsdGVy
bmF0ZURpY3RbQCJRVEFsdGVybmF0ZXNfTGFuZ3VhZ2VDb2RlRW5jb2RpbmdfSVNPXzYzOV8yVCJd
OworICAgICAgICBpZiAoIVtsYW5ndWFnZVN0cmluZyBjU3RyaW5nVXNpbmdFbmNvZGluZzprQ0ZT
dHJpbmdFbmNvZGluZ0FTQ0lJXSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBpZiAo
IWxhbmd1YWdlU3RyaW5nKQorICAgICAgICAgICAgbGFuZ3VhZ2VTdHJpbmcgPSBhbHRlcm5hdGVE
aWN0W0AiUVRBbHRlcm5hdGVzX0xhbmd1YWdlQ29kZUVuY29kaW5nX1JGQ180NjQ2Il07CisgICAg
ICAgIGlmICghbGFuZ3VhZ2VTdHJpbmcpIHsKKyAgICAgICAgICAgIExhbmdDb2RlIGxhbmdDb2Rl
ID0gYWx0ZXJuYXRlRGljdFtAIlFUQWx0ZXJuYXRlc19MYW5ndWFnZUNvZGVFbmNvZGluZ19NYWNU
eXBlX0xhbmdDb2RlIl0uaW50VmFsdWU7CisgICAgICAgICAgICBhdXRvIGlkZW50aWZpZXIgPSBh
ZG9wdENGKENGTG9jYWxlQ3JlYXRlQ2Fub25pY2FsTG9jYWxlSWRlbnRpZmllckZyb21TY3JpcHRN
YW5hZ2VyQ29kZXMoa0NGQWxsb2NhdG9yRGVmYXVsdCwgbGFuZ0NvZGUsIDApKTsKKyAgICAgICAg
ICAgIGxhbmd1YWdlU3RyaW5nID0gKE5TU3RyaW5nICopaWRlbnRpZmllci5hdXRvcmVsZWFzZSgp
OworICAgICAgICB9CisgICAgICAgIGlmICghbGFuZ3VhZ2VTdHJpbmcpCisgICAgICAgICAgICBj
b250aW51ZTsKKworICAgICAgICBpZCBhbHRlcm5hdGVUcmFjayA9IGFsdGVybmF0ZURpY3RbQCJR
VEFsdGVybmF0ZXNfUVRUcmFjayJdOworICAgICAgICBpZiAoIWFsdGVybmF0ZVRyYWNrKQorICAg
ICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgaWYgKCFbYWx0ZXJuYXRlVHJhY2sgYXR0cmli
dXRlRm9yS2V5OkAiUVRUcmFja0VuYWJsZWRBdHRyaWJ1dGUiXS5ib29sVmFsdWUpCisgICAgICAg
ICAgICBjb250aW51ZTsKKyAgICAgICAgCisgICAgICAgIFtsYW5ndWFnZVRvUVRUcmFja01hcCBz
ZXRPYmplY3Q6YWx0ZXJuYXRlVHJhY2sgZm9yS2V5Omxhbmd1YWdlU3RyaW5nXTsKKyAgICB9Cisg
ICAgCisgICAgTlNBcnJheSAqcHJlZmVycmVkTGFuZ3VhZ2VzID0gW05TQnVuZGxlIHByZWZlcnJl
ZExvY2FsaXphdGlvbnNGcm9tQXJyYXk6W2xhbmd1YWdlVG9RVFRyYWNrTWFwIGFsbEtleXNdIGZv
clByZWZlcmVuY2VzOm5pbF07CisgICAgaWYgKHByZWZlcnJlZExhbmd1YWdlcy5jb3VudCkgewor
ICAgICAgICBpZCBwcmVmZXJyZWRUcmFjayA9IFtsYW5ndWFnZVRvUVRUcmFja01hcCBvYmplY3RG
b3JLZXk6cHJlZmVycmVkTGFuZ3VhZ2VzWzBdXTsKKyAgICAgICAgaWYgKHByZWZlcnJlZFRyYWNr
KSB7CisgICAgICAgICAgICAvLyArW05TQnVuZGxlIHByZWZlcnJlZExvY2FsaXphdGlvbnNGcm9t
QXJyYXk6Zm9yUHJlZmVyZW5jZXNdIG1heSByZXR1cm4gYSBsYW5ndWFnZSB3aGljaCB3YXMKKyAg
ICAgICAgICAgIC8vIG5vdCBwcmVzZW50IGluIHByZWZlcnJlZExhbmd1YWdlcywgYW5kIHdpbGwg
dGhlcmVmb3JlIG5vdCBoYXZlIGFuIGFzc29jaWF0ZWQgdHJhY2suCisgICAgICAgICAgICBbbW92
aWUgc2VsZWN0QWx0ZXJuYXRlR3JvdXBUcmFjazpwcmVmZXJyZWRUcmFja107CisgICAgICAgIH0K
KyAgICB9Cit9CisKK3N0YXRpYyB2b2lkIHNlbGVjdFByZWZlcnJlZEFsdGVybmF0ZXMoUVRNb3Zp
ZSAqbW92aWUpCit7CisgICAgc2VsZWN0UHJlZmVycmVkQWx0ZXJuYXRlVHJhY2tGb3JNZWRpYVR5
cGUobW92aWUsIEAidmlkZSIpOworICAgIHNlbGVjdFByZWZlcnJlZEFsdGVybmF0ZVRyYWNrRm9y
TWVkaWFUeXBlKG1vdmllLCBAInNvdW4iKTsKKyAgICBzZWxlY3RQcmVmZXJyZWRBbHRlcm5hdGVU
cmFja0Zvck1lZGlhVHlwZShtb3ZpZSwgQCJjcGxwIik7CisgICAgc2VsZWN0UHJlZmVycmVkQWx0
ZXJuYXRlVHJhY2tGb3JNZWRpYVR5cGUobW92aWUsIEAic2J0bCIpOworfQogCiB2b2lkIE1lZGlh
UGxheWVyUHJpdmF0ZVFUS2l0Ojp1cGRhdGVTdGF0ZXMoKQogewpAQCAtOTY1LDcgKzEwMjksNyBA
QCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0Ojp1cGRhdGVTdGF0ZXMoKQogICAgICAgICAg
ICAgbG9hZFN0YXRlID0gUVRNb3ZpZUxvYWRTdGF0ZUVycm9yOwogCiAgICAgICAgIGlmIChsb2Fk
U3RhdGUgIT0gUVRNb3ZpZUxvYWRTdGF0ZUVycm9yKSB7Ci0gICAgICAgICAgICB3a1FUTW92aWVT
ZWxlY3RQcmVmZXJyZWRBbHRlcm5hdGVzKG1fcXRNb3ZpZS5nZXQoKSk7CisgICAgICAgICAgICBz
ZWxlY3RQcmVmZXJyZWRBbHRlcm5hdGVzKG1fcXRNb3ZpZS5nZXQoKSk7CiAgICAgICAgICAgICBj
YWNoZU1vdmllU2NhbGUoKTsKICAgICAgICAgICAgIE1lZGlhUGxheWVyOjpNb3ZpZUxvYWRUeXBl
IG1vdmllVHlwZSA9IG1vdmllTG9hZFR5cGUoKTsKICAgICAgICAgICAgIG1faXNTdHJlYW1pbmcg
PSBtb3ZpZVR5cGUgPT0gTWVkaWFQbGF5ZXI6OlN0b3JlZFN0cmVhbSB8fCBtb3ZpZVR5cGUgPT0g
TWVkaWFQbGF5ZXI6OkxpdmVTdHJlYW07CkBAIC0xMjczLDcgKzEzMzcsOCBAQCBzdGF0aWMgY29u
c3QgSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mIG1pbWVDb21tb25U
eXBlc0NhY2hlKCkKIAogc3RhdGljIGNvbnN0IEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNl
bnNpdGl2ZUhhc2g+JiBtaW1lTW9kZXJuVHlwZXNDYWNoZSgpCiB7Ci0gICAgc3RhdGljIGNvbnN0
IGF1dG8gY2FjaGUgPSBtYWtlTmV2ZXJEZXN0cm95ZWQoY3JlYXRlRmlsZVR5cGVzU2V0KFtRVE1v
dmllIG1vdmllRmlsZVR5cGVzOihRVE1vdmllRmlsZVR5cGVPcHRpb25zKXdrUVRJbmNsdWRlT25s
eU1vZGVybk1lZGlhRmlsZVR5cGVzKCldKSk7CisgICAgc3RhdGljIFFUTW92aWVGaWxlVHlwZU9w
dGlvbnMgaW5jbHVkZU9ubHlNb2Rlcm5NZWRpYUZpbGVUeXBlcyA9IDEgPDwgODsKKyAgICBzdGF0
aWMgY29uc3QgYXV0byBjYWNoZSA9IG1ha2VOZXZlckRlc3Ryb3llZChjcmVhdGVGaWxlVHlwZXNT
ZXQoW1FUTW92aWUgbW92aWVGaWxlVHlwZXM6aW5jbHVkZU9ubHlNb2Rlcm5NZWRpYUZpbGVUeXBl
c10pKTsKICAgICByZXR1cm4gY2FjaGU7CiB9CiAKQEAgLTEzMjQsNyArMTM4OSw3IEBAIGJvb2wg
TWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6OmlzQXZhaWxhYmxlKCkKIEhhc2hTZXQ8UmVmUHRyPFNl
Y3VyaXR5T3JpZ2luPj4gTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6Om9yaWdpbnNJbk1lZGlhQ2Fj
aGUoY29uc3QgU3RyaW5nJikKIHsKICAgICBIYXNoU2V0PFJlZlB0cjxTZWN1cml0eU9yaWdpbj4+
IG9yaWdpbnM7Ci0gICAgTlNBcnJheSAqbWVkaWFTaXRlcyA9IHdrUVRHZXRTaXRlc0luTWVkaWFE
b3dubG9hZENhY2hlKCk7CisgICAgTlNBcnJheSAqbWVkaWFTaXRlcyA9IFtbUVRVdGlsaXRpZXMg
cXRVdGlsaXRpZXNdIHNpdGVzSW5Eb3dubG9hZENhY2hlXTsKICAgICAKICAgICBmb3IgKE5TU3Ry
aW5nICpzaXRlIGluIG1lZGlhU2l0ZXMpIHsKICAgICAgICAgVVJMIHNpdGVBc1VSTCA9IFVSTChV
UkwoKSwgc2l0ZSk7CkBAIC0xMzM3LDE0ICsxNDAyLDE0IEBAIEhhc2hTZXQ8UmVmUHRyPFNlY3Vy
aXR5T3JpZ2luPj4gTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6Om9yaWdpbnNJbk1lZGlhQ2FjaGUo
Y29uCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0OjpjbGVhck1lZGlhQ2FjaGUoY29uc3Qg
U3RyaW5nJiwgc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCkKIHsKICAgICBM
T0coTWVkaWEsICJNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6Y2xlYXJNZWRpYUNhY2hlKCkiKTsK
LSAgICB3a1FUQ2xlYXJNZWRpYURvd25sb2FkQ2FjaGUoKTsKKyAgICBbW1FUVXRpbGl0aWVzIHF0
VXRpbGl0aWVzXSBjbGVhckRvd25sb2FkQ2FjaGVdOwogfQogCiB2b2lkIE1lZGlhUGxheWVyUHJp
dmF0ZVFUS2l0OjpjbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5zKGNvbnN0IFN0cmluZyYsIGNvbnN0
IEhhc2hTZXQ8UmVmUHRyPFNlY3VyaXR5T3JpZ2luPj4mIG9yaWdpbnMpCiB7CiAgICAgTE9HKE1l
ZGlhLCAiTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6OmNsZWFyTWVkaWFDYWNoZUZvck9yaWdpbnMo
KSIpOwogICAgIGZvciAoYXV0byYgb3JpZ2luIDogb3JpZ2lucykKLSAgICAgICAgd2tRVENsZWFy
TWVkaWFEb3dubG9hZENhY2hlRm9yU2l0ZShvcmlnaW4tPnRvUmF3U3RyaW5nKCkpOworICAgICAg
ICBbW1FUVXRpbGl0aWVzIHF0VXRpbGl0aWVzXSBjbGVhckRvd25sb2FkQ2FjaGVGb3JTaXRlOm9y
aWdpbi0+dG9SYXdTdHJpbmcoKV07CiB9CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6
OmRpc2FibGVVbnN1cHBvcnRlZFRyYWNrcygpCkBAIC0xNDY4LDIzICsxNTMzLDI5IEBAIGJvb2wg
TWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6Omhhc1NpbmdsZVNlY3VyaXR5T3JpZ2luKCkgY29uc3QK
ICAgICBpZiAoIW1fcXRNb3ZpZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgUmVmPFNl
Y3VyaXR5T3JpZ2luPiByZXNvbHZlZE9yaWdpbiA9IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoVVJM
KHdrUVRNb3ZpZVJlc29sdmVkVVJMKG1fcXRNb3ZpZS5nZXQoKSkpKTsKKyAgICBSZWY8U2VjdXJp
dHlPcmlnaW4+IHJlc29sdmVkT3JpZ2luID0gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShVUkwoW21f
cXRNb3ZpZSBVUkxdKSk7CiAgICAgUmVmPFNlY3VyaXR5T3JpZ2luPiByZXF1ZXN0ZWRPcmlnaW4g
PSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbVN0cmluZyhtX21vdmllVVJMKTsKICAgICByZXR1
cm4gcmVzb2x2ZWRPcmlnaW4tPmlzU2FtZVNjaGVtZUhvc3RQb3J0KHJlcXVlc3RlZE9yaWdpbi5n
ZXQoKSk7CiB9CiAKIE1lZGlhUGxheWVyOjpNb3ZpZUxvYWRUeXBlIE1lZGlhUGxheWVyUHJpdmF0
ZVFUS2l0Ojptb3ZpZUxvYWRUeXBlKCkgY29uc3QKIHsKLSAgICBpZiAoIW1fcXRNb3ZpZSkKLSAg
ICAgICAgcmV0dXJuIE1lZGlhUGxheWVyOjpVbmtub3duOwotCi0gICAgTWVkaWFQbGF5ZXI6Ok1v
dmllTG9hZFR5cGUgbW92aWVUeXBlID0gKE1lZGlhUGxheWVyOjpNb3ZpZUxvYWRUeXBlKXdrUVRN
b3ZpZUdldFR5cGUobV9xdE1vdmllLmdldCgpKTsKLQotICAgIC8vIENhbid0IGluY2x1ZGUgV2Vi
S2l0U3lzdGVtSW50ZXJmYWNlIGZyb20gV2ViQ29yZSBzbyB3ZSBjYW4ndCBnZXQgdGhlIGVudW0g
cmV0dXJuZWQKLSAgICAvLyBieSB3a1FUTW92aWVHZXRUeXBlLCBidXQgYXQgbGVhc3QgdmVyaWZ5
IHRoYXQgdGhlIHZhbHVlIGlzIGluIHRoZSB2YWxpZCByYW5nZS4KLSAgICBBU1NFUlQobW92aWVU
eXBlID49IE1lZGlhUGxheWVyOjpVbmtub3duICYmIG1vdmllVHlwZSA8PSBNZWRpYVBsYXllcjo6
TGl2ZVN0cmVhbSk7Ci0KLSAgICByZXR1cm4gbW92aWVUeXBlOworICAgIGlmICghbW92aWUpCisg
ICAgICAgIHJldHVybiBNZWRpYVBsYXllcjo6TW92aWVMb2FkVHlwZTo6VW5rbm93bjsKKworICAg
IFVJbnQzMiBtb3ZpZVR5cGUgPSBtb3ZpZS5tb3ZpZVR5cGU7CisgICAgc3dpdGNoIChtb3ZpZVR5
cGUpIHsKKyAgICBjYXNlIFFUTW92aWVUeXBlTG9jYWw6CisgICAgY2FzZSBRVE1vdmllVHlwZUZh
c3RTdGFydDoKKyAgICAgICAgcmV0dXJuIE1lZGlhUGxheWVyOjpNb3ZpZUxvYWRUeXBlOjpEb3du
bG9hZDsKKyAgICBjYXNlIFFUTW92aWVUeXBlTGl2ZVN0cmVhbToKKyAgICAgICAgcmV0dXJuIE1l
ZGlhUGxheWVyOjpNb3ZpZUxvYWRUeXBlOjpMaXZlU3RyZWFtOworICAgIGNhc2UgUVRNb3ZpZVR5
cGVTdG9yZWRTdHJlYW06CisgICAgICAgIHJldHVybiBNZWRpYVBsYXllcjo6TW92aWVMb2FkVHlw
ZTo6U3RvcmVkU3RyZWFtOworICAgIGNhc2UgUVRNb3ZpZVR5cGVVbmtub3duOgorICAgIGRlZmF1
bHQ6CisgICAgICAgIHJldHVybiBNZWRpYVBsYXllcjo6TW92aWVMb2FkVHlwZTo6VW5rbm93bjsK
KyAgICB9CiB9CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6OnNldFByZWxvYWQoTWVk
aWFQbGF5ZXI6OlByZWxvYWQgcHJlbG9hZCkKQEAgLTE1MTUsNyArMTU4Niw3IEBAIGJvb2wgTWVk
aWFQbGF5ZXJQcml2YXRlUVRLaXQ6OmNhblNhdmVNZWRpYURhdGEoKSBjb25zdAogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKICAgICBpZiAobV9xdE1vdmllKQotICAgICAgICB1cmwgPSBVUkwod2tR
VE1vdmllUmVzb2x2ZWRVUkwobV9xdE1vdmllLmdldCgpKSk7CisgICAgICAgIHVybCA9IFVSTChb
bV9xdE1vdmllIFVSTF0pOwogICAgIGVsc2UKICAgICAgICAgdXJsID0gVVJMKFBhcnNlZFVSTFN0
cmluZywgbV9tb3ZpZVVSTCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21hYy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
YWMvV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oCmluZGV4IDIzZmYyM2ZjZjQ1OGI0MDc4OWIwMmUw
YWVjMTJiMjAwMDExZmM1YmIuLmY2NzU5NTA5YTExZmNlMzM0MTNmZTY5MDMzYTQ2ODU2ZjU5NzQ1
NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlU3lzdGVt
SW50ZXJmYWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVTeXN0
ZW1JbnRlcmZhY2UuaApAQCAtMTMxLDMyICsxMzEsNyBAQCBleHRlcm4gZG91YmxlICgqd2tHZXRO
U1VSTFJlc3BvbnNlQ2FsY3VsYXRlZEV4cGlyYXRpb24pKE5TVVJMUmVzcG9uc2UgKnJlc3BvbnNl
KQogZXh0ZXJuIEJPT0wgKCp3a0dldE5TVVJMUmVzcG9uc2VNdXN0UmV2YWxpZGF0ZSkoTlNVUkxS
ZXNwb25zZSAqcmVzcG9uc2UpOwogZXh0ZXJuIEJPT0wgKCp3a0hpdFRlc3RNZWRpYVVJUGFydCko
aW50IHBhcnQsIENHUmVjdCBib3VuZHMsIENHUG9pbnQgcG9pbnQpOwogZXh0ZXJuIHZvaWQgKCp3
a01lYXN1cmVNZWRpYVVJUGFydCkoaW50IHBhcnQsIENHUmVjdCAqYm91bmRzLCBDR1NpemUgKm5h
dHVyYWxTaXplKTsKLWV4dGVybiBOU1ZpZXcgKigqd2tDcmVhdGVNZWRpYVVJQmFja2dyb3VuZFZp
ZXcpKHZvaWQpOwogCi10eXBlZGVmIGVudW0gewotICAgIHdrTWVkaWFVSUNvbnRyb2xUaW1lbGlu
ZSwKLSAgICB3a01lZGlhVUlDb250cm9sU2xpZGVyLAotICAgIHdrTWVkaWFVSUNvbnRyb2xQbGF5
UGF1c2VCdXR0b24sCi0gICAgd2tNZWRpYVVJQ29udHJvbEV4aXRGdWxsc2NyZWVuQnV0dG9uLAot
ICAgIHdrTWVkaWFVSUNvbnRyb2xSZXdpbmRCdXR0b24sCi0gICAgd2tNZWRpYVVJQ29udHJvbEZh
c3RGb3J3YXJkQnV0dG9uLAotICAgIHdrTWVkaWFVSUNvbnRyb2xWb2x1bWVVcEJ1dHRvbiwKLSAg
ICB3a01lZGlhVUlDb250cm9sVm9sdW1lRG93bkJ1dHRvbgotfSB3a01lZGlhVUlDb250cm9sVHlw
ZTsKLWV4dGVybiBOU0NvbnRyb2wgKigqd2tDcmVhdGVNZWRpYVVJQ29udHJvbCkoaW50KTsKLQot
ZXh0ZXJuIHVuc2lnbmVkICgqd2tRVEluY2x1ZGVPbmx5TW9kZXJuTWVkaWFGaWxlVHlwZXMpKHZv
aWQpOwotZXh0ZXJuIHZvaWQgKCp3a1FUTW92aWVEaXNhYmxlQ29tcG9uZW50KSh1aW50MzJfdFs1
XSk7Ci1leHRlcm4gZmxvYXQgKCp3a1FUTW92aWVNYXhUaW1lTG9hZGVkKShRVE1vdmllKik7Ci1l
eHRlcm4gTlNTdHJpbmcgKigqd2tRVE1vdmllTWF4VGltZUxvYWRlZENoYW5nZU5vdGlmaWNhdGlv
bikodm9pZCk7Ci1leHRlcm4gaW50ICgqd2tRVE1vdmllR2V0VHlwZSkoUVRNb3ZpZSopOwotZXh0
ZXJuIEJPT0wgKCp3a1FUTW92aWVIYXNDbG9zZWRDYXB0aW9ucykoUVRNb3ZpZSopOwotZXh0ZXJu
IE5TVVJMICooKndrUVRNb3ZpZVJlc29sdmVkVVJMKShRVE1vdmllKik7Ci1leHRlcm4gdm9pZCAo
KndrUVRNb3ZpZVNldFNob3dDbG9zZWRDYXB0aW9ucykoUVRNb3ZpZSosIEJPT0wpOwotZXh0ZXJu
IHZvaWQgKCp3a1FUTW92aWVTZWxlY3RQcmVmZXJyZWRBbHRlcm5hdGVzKShRVE1vdmllKik7Ci1l
eHRlcm4gTlNBcnJheSAqKCp3a1FUR2V0U2l0ZXNJbk1lZGlhRG93bmxvYWRDYWNoZSkoKTsKLWV4
dGVybiB2b2lkICgqd2tRVENsZWFyTWVkaWFEb3dubG9hZENhY2hlRm9yU2l0ZSkoTlNTdHJpbmcg
KnNpdGUpOwotZXh0ZXJuIHZvaWQgKCp3a1FUQ2xlYXJNZWRpYURvd25sb2FkQ2FjaGUpKCk7CiBl
eHRlcm4gdm9pZCAoKndrU2V0Q29va2llU3RvcmFnZVByaXZhdGVCcm93c2luZ0VuYWJsZWQpKEJP
T0wpOwogI2VuZGlmCiBleHRlcm4gdm9pZCAoKndrU2V0Q09OTkVDVFByb3h5Rm9yU3RyZWFtKShD
RlJlYWRTdHJlYW1SZWYsIENGU3RyaW5nUmVmIHByb3h5SG9zdCwgQ0ZOdW1iZXJSZWYgcHJveHlQ
b3J0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlU3lz
dGVtSW50ZXJmYWNlLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVTeXN0
ZW1JbnRlcmZhY2UubW0KaW5kZXggYzcyM2Q3NDRiMDQ2ZDIxMGZhYWIyMmMyYTQxZGRmMDI0NjNk
YTkzZi4uMmVhYmQ0ZjE0ZjM5MzM2ZTMzNDBjZThlZGVlMzdlNDgyZGQ2ODAyZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2UubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2Uu
bW0KQEAgLTM2LDIzICszNiw5IEBAIHZvaWQgKCp3a0RyYXdNZWRpYVNsaWRlclRyYWNrKShDR0Nv
bnRleHRSZWYgY29udGV4dCwgQ0dSZWN0IHJlY3QsIGZsb2F0IHRpbWVMb2FkCiBCT09MICgqd2tI
aXRUZXN0TWVkaWFVSVBhcnQpKGludCBwYXJ0LCBDR1JlY3QgYm91bmRzLCBDR1BvaW50IHBvaW50
KTsKIHZvaWQgKCp3a0RyYXdNZWRpYVVJUGFydCkoaW50IHBhcnQsIENHQ29udGV4dFJlZiBjb250
ZXh0LCBDR1JlY3QgcmVjdCwgdW5zaWduZWQgc3RhdGUpOwogdm9pZCAoKndrTWVhc3VyZU1lZGlh
VUlQYXJ0KShpbnQgcGFydCwgQ0dSZWN0ICpib3VuZHMsIENHU2l6ZSAqbmF0dXJhbFNpemUpOwot
TlNWaWV3ICooKndrQ3JlYXRlTWVkaWFVSUJhY2tncm91bmRWaWV3KSh2b2lkKTsKLU5TQ29udHJv
bCAqKCp3a0NyZWF0ZU1lZGlhVUlDb250cm9sKShpbnQpOwogTlNUaW1lSW50ZXJ2YWwgKCp3a0dl
dE5TVVJMUmVzcG9uc2VDYWxjdWxhdGVkRXhwaXJhdGlvbikoTlNVUkxSZXNwb25zZSAqcmVzcG9u
c2UpOwogQk9PTCAoKndrR2V0TlNVUkxSZXNwb25zZU11c3RSZXZhbGlkYXRlKShOU1VSTFJlc3Bv
bnNlICpyZXNwb25zZSk7CiB2b2lkICgqd2tQb3B1cE1lbnUpKE5TTWVudSosIE5TUG9pbnQgbG9j
YXRpb24sIGZsb2F0IHdpZHRoLCBOU1ZpZXcqLCBpbnQgc2VsZWN0ZWRJdGVtLCBOU0ZvbnQqLCBO
U0NvbnRyb2xTaXplIGNvbnRyb2xTaXplLCBib29sIHVzZXNDdXN0b21BcHBlYXJhbmNlKTsKLXVu
c2lnbmVkICgqd2tRVEluY2x1ZGVPbmx5TW9kZXJuTWVkaWFGaWxlVHlwZXMpKHZvaWQpOwotdm9p
ZCAoKndrUVRNb3ZpZURpc2FibGVDb21wb25lbnQpKHVpbnQzMl90WzVdKTsKLWZsb2F0ICgqd2tR
VE1vdmllTWF4VGltZUxvYWRlZCkoUVRNb3ZpZSopOwotTlNTdHJpbmcgKigqd2tRVE1vdmllTWF4
VGltZUxvYWRlZENoYW5nZU5vdGlmaWNhdGlvbikodm9pZCk7Ci1pbnQgKCp3a1FUTW92aWVHZXRU
eXBlKShRVE1vdmllKik7Ci1CT09MICgqd2tRVE1vdmllSGFzQ2xvc2VkQ2FwdGlvbnMpKFFUTW92
aWUqKTsKLU5TVVJMICooKndrUVRNb3ZpZVJlc29sdmVkVVJMKShRVE1vdmllKik7Ci12b2lkICgq
d2tRVE1vdmllU2V0U2hvd0Nsb3NlZENhcHRpb25zKShRVE1vdmllKiwgQk9PTCk7Ci12b2lkICgq
d2tRVE1vdmllU2VsZWN0UHJlZmVycmVkQWx0ZXJuYXRlcykoUVRNb3ZpZSopOwotTlNBcnJheSAq
KCp3a1FUR2V0U2l0ZXNJbk1lZGlhRG93bmxvYWRDYWNoZSkoKTsKLXZvaWQgKCp3a1FUQ2xlYXJN
ZWRpYURvd25sb2FkQ2FjaGVGb3JTaXRlKShOU1N0cmluZyAqc2l0ZSk7Ci12b2lkICgqd2tRVENs
ZWFyTWVkaWFEb3dubG9hZENhY2hlKSgpOwogCiB2b2lkICgqd2tTZXRDT05ORUNUUHJveHlGb3JT
dHJlYW0pKENGUmVhZFN0cmVhbVJlZiwgQ0ZTdHJpbmdSZWYgcHJveHlIb3N0LCBDRk51bWJlclJl
ZiBwcm94eVBvcnQpOwogdm9pZCAoKndrU2V0Q09OTkVDVFByb3h5QXV0aG9yaXphdGlvbkZvclN0
cmVhbSkoQ0ZSZWFkU3RyZWFtUmVmLCBDRlN0cmluZ1JlZiBwcm94eUF1dGhvcml6YXRpb25TdHJp
bmcpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYlZpZGVvRnVs
bHNjcmVlbkhVRFdpbmRvd0NvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
YWMvV2ViVmlkZW9GdWxsc2NyZWVuSFVEV2luZG93Q29udHJvbGxlci5tbQppbmRleCBlZmI2ZTJi
MjczYzU4MzUxMzNlNzViMTYyNmE5NWIwNDkwYzc3OTljLi5mYzBmNTEwYzdhMmNiMjQ5NzhkMDRh
MGM0ODA2ZWQ0YzcxYzUzMjAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
YWMvV2ViVmlkZW9GdWxsc2NyZWVuSFVEV2luZG93Q29udHJvbGxlci5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViVmlkZW9GdWxsc2NyZWVuSFVEV2luZG93Q29udHJvbGxl
ci5tbQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAxNiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAxNyBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTMxLDkgKzMxLDM4IEBACiAjaW1wb3J0IDxXZWJDb3JlL0hUTUxWaWRlb0VsZW1l
bnQuaD4KICNpbXBvcnQgPFdlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaD4KICNpbXBvcnQgPHBhbC9z
cGkvY2cvQ29yZUdyYXBoaWNzU1BJLmg+CisjaW1wb3J0IDxwYWwvc3BpL21hYy9RVEtpdFNQSS5o
PgorI2ltcG9ydCA8d3RmL1NvZnRMaW5raW5nLmg+CisKK1NPRlRfTElOS19GUkFNRVdPUksoUVRL
aXQpCisKK1NPRlRfTElOS19DTEFTUyhRVEtpdCwgUVRIVURCYWNrZ3JvdW5kVmlldykKK1NPRlRf
TElOS19DTEFTUyhRVEtpdCwgUVRIVURCdXR0b24pCitTT0ZUX0xJTktfQ0xBU1MoUVRLaXQsIFFU
SFVEU2xpZGVyKQorU09GVF9MSU5LX0NMQVNTKFFUS2l0LCBRVEhVRFRpbWVsaW5lKQorCisjZGVm
aW5lIFFUSFVEQmFja2dyb3VuZFZpZXcgZ2V0UVRIVURCYWNrZ3JvdW5kVmlld0NsYXNzKCkKKyNk
ZWZpbmUgUVRIVURCdXR0b24gZ2V0UVRIVURCdXR0b25DbGFzcygpCisjZGVmaW5lIFFUSFVEU2xp
ZGVyIGdldFFUSFVEU2xpZGVyQ2xhc3MoKQorI2RlZmluZSBRVEhVRFRpbWVsaW5lIGdldFFUSFVE
VGltZWxpbmVDbGFzcygpCiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK2VudW0gY2xhc3MgTWVkaWFVSUNvbnRyb2wgeworICAgIFRpbWVsaW5lLAor
ICAgIFNsaWRlciwKKyAgICBQbGF5UGF1c2VCdXR0b24sCisgICAgRXhpdEZ1bGxzY3JlZW5CdXR0
b24sCisgICAgUmV3aW5kQnV0dG9uLAorICAgIEZhc3RGb3J3YXJkQnV0dG9uLAorICAgIFZvbHVt
ZVVwQnV0dG9uLAorICAgIFZvbHVtZURvd25CdXR0b24sCit9OworCit9CisKIEBpbnRlcmZhY2Ug
V2ViVmlkZW9GdWxsc2NyZWVuSFVEV2luZG93Q29udHJvbGxlciAoUHJpdmF0ZSkgPE5TV2luZG93
RGVsZWdhdGU+CiAKIC0gKHZvaWQpdXBkYXRlVGltZTsKQEAgLTI2NSwxMCArMjk0LDY4IEBAIC0g
KHZvaWQpY2xvc2VXaW5kb3cKICAgICBbc2VsZiBzZXRXaW5kb3c6bmlsXTsKIH0KIAotc3RhdGlj
IE5TQ29udHJvbCAqY3JlYXRlQ29udHJvbFdpdGhNZWRpYVVJQ29udHJvbFR5cGUoaW50IGNvbnRy
b2xUeXBlLCBOU1JlY3QgZnJhbWUpCitzdGF0aWMgTlNDb250cm9sICpjcmVhdGVNZWRpYVVJQ29u
dHJvbChNZWRpYVVJQ29udHJvbCBjb250cm9sVHlwZSkKK3sKKyAgICBzd2l0Y2ggKGNvbnRyb2xU
eXBlKSB7CisgICAgY2FzZSBNZWRpYVVJQ29udHJvbDo6VGltZWxpbmU6IHsKKyAgICAgICAgTlNT
bGlkZXIgKnNsaWRlciA9IFtbUVRIVURUaW1lbGluZSBhbGxvY10gaW5pdF07CisgICAgICAgIFtb
c2xpZGVyIGNlbGxdIHNldENvbnRpbnVvdXM6WUVTXTsKKyAgICAgICAgcmV0dXJuIHNsaWRlcjsK
KyAgICB9CisgICAgY2FzZSBNZWRpYVVJQ29udHJvbDo6U2xpZGVyOiB7CisgICAgICAgIE5TQnV0
dG9uICpzbGlkZXIgPSBbW1FUSFVEU2xpZGVyIGFsbG9jXSBpbml0XTsKKyAgICAgICAgW1tzbGlk
ZXIgY2VsbF0gc2V0Q29udGludW91czpZRVNdOworICAgICAgICByZXR1cm4gc2xpZGVyOworICAg
IH0KKyAgICBjYXNlIE1lZGlhVUlDb250cm9sOjpQbGF5UGF1c2VCdXR0b246IHsKKyAgICAgICAg
TlNCdXR0b24gKmJ1dHRvbiA9IFtbUVRIVURCdXR0b24gYWxsb2NdIGluaXRdOworICAgICAgICBb
YnV0dG9uIHNldEltYWdlOltOU0ltYWdlIGltYWdlTmFtZWQ6QCJOU1BsYXlUZW1wbGF0ZSJdXTsK
KyAgICAgICAgW2J1dHRvbiBzZXRBbHRlcm5hdGVJbWFnZTpbTlNJbWFnZSBpbWFnZU5hbWVkOkAi
TlNQYXVzZVFUUHJpdmF0ZVRlbXBsYXRlIl1dOworCisgICAgICAgIFtbYnV0dG9uIGNlbGxdIHNl
dFNob3dzU3RhdGVCeTpOU0NvbnRlbnRzQ2VsbE1hc2tdOworICAgICAgICBbYnV0dG9uIHNldEJv
cmRlcmVkOk5PXTsKKyAgICAgICAgcmV0dXJuIGJ1dHRvbjsKKyAgICB9CisgICAgY2FzZSBNZWRp
YVVJQ29udHJvbDo6RXhpdEZ1bGxzY3JlZW5CdXR0b246IHsKKyAgICAgICAgTlNCdXR0b24gKmJ1
dHRvbiA9IFtbUVRIVURCdXR0b24gYWxsb2NdIGluaXRdOworICAgICAgICBbYnV0dG9uIHNldElt
YWdlOltOU0ltYWdlIGltYWdlTmFtZWQ6QCJOU0V4aXRGdWxsU2NyZWVuVGVtcGxhdGUiXV07Cisg
ICAgICAgIFtidXR0b24gc2V0Qm9yZGVyZWQ6Tk9dOworICAgICAgICByZXR1cm4gYnV0dG9uOwor
ICAgIH0KKyAgICBjYXNlIE1lZGlhVUlDb250cm9sOjpSZXdpbmRCdXR0b246IHsKKyAgICAgICAg
TlNCdXR0b24gKmJ1dHRvbiA9IFtbUVRIVURCdXR0b24gYWxsb2NdIGluaXRdOworICAgICAgICBb
YnV0dG9uIHNldEltYWdlOltOU0ltYWdlIGltYWdlTmFtZWQ6QCJOU1Jld2luZFRlbXBsYXRlIl1d
OworICAgICAgICBbYnV0dG9uIHNldEJvcmRlcmVkOk5PXTsKKyAgICAgICAgcmV0dXJuIGJ1dHRv
bjsKKyAgICB9CisgICAgY2FzZSBNZWRpYVVJQ29udHJvbDo6RmFzdEZvcndhcmRCdXR0b246IHsK
KyAgICAgICAgTlNCdXR0b24gKmJ1dHRvbiA9IFtbUVRIVURCdXR0b24gYWxsb2NdIGluaXRdOwor
ICAgICAgICBbYnV0dG9uIHNldEltYWdlOltOU0ltYWdlIGltYWdlTmFtZWQ6QCJOU0Zhc3RGb3J3
YXJkVGVtcGxhdGUiXV07CisgICAgICAgIFtidXR0b24gc2V0Qm9yZGVyZWQ6Tk9dOworICAgICAg
ICByZXR1cm4gYnV0dG9uOworICAgIH0KKyAgICBjYXNlIE1lZGlhVUlDb250cm9sOjpWb2x1bWVV
cEJ1dHRvbjogeworICAgICAgICBOU0J1dHRvbiAqYnV0dG9uID0gW1tRVEhVREJ1dHRvbiBhbGxv
Y10gaW5pdF07CisgICAgICAgIFtidXR0b24gc2V0SW1hZ2U6W05TSW1hZ2UgaW1hZ2VOYW1lZDpA
Ik5TQXVkaW9PdXRwdXRWb2x1bWVIaWdoVGVtcGxhdGUiXV07CisgICAgICAgIFtidXR0b24gc2V0
Qm9yZGVyZWQ6Tk9dOworICAgICAgICByZXR1cm4gYnV0dG9uOworICAgIH0KKyAgICBjYXNlIE1l
ZGlhVUlDb250cm9sOjpWb2x1bWVEb3duQnV0dG9uOiB7CisgICAgICAgIE5TQnV0dG9uICpidXR0
b24gPSBbW1FUSFVEQnV0dG9uIGFsbG9jXSBpbml0XTsKKyAgICAgICAgW2J1dHRvbiBzZXRJbWFn
ZTpbTlNJbWFnZSBpbWFnZU5hbWVkOkAiTlNBdWRpb091dHB1dFZvbHVtZUxvd1RlbXBsYXRlIl1d
OworICAgICAgICBbYnV0dG9uIHNldEJvcmRlcmVkOk5PXTsKKyAgICAgICAgcmV0dXJuIGJ1dHRv
bjsKKyAgICB9CisgICAgfQorCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJu
IG5pbDsKK30KKworc3RhdGljIE5TQ29udHJvbCAqY3JlYXRlQ29udHJvbFdpdGhNZWRpYVVJQ29u
dHJvbFR5cGUoTWVkaWFVSUNvbnRyb2wgY29udHJvbFR5cGUsIE5TUmVjdCBmcmFtZSkKIHsKLSAg
ICBOU0NvbnRyb2wgKmNvbnRyb2wgPSB3a0NyZWF0ZU1lZGlhVUlDb250cm9sKGNvbnRyb2xUeXBl
KTsKLSAgICBbY29udHJvbCBzZXRGcmFtZTpmcmFtZV07CisgICAgTlNDb250cm9sICpjb250cm9s
ID0gY3JlYXRlTWVkaWFVSUNvbnRyb2woY29udHJvbFR5cGUpOworICAgIGNvbnRyb2wuZnJhbWUg
PSBmcmFtZTsKICAgICByZXR1cm4gY29udHJvbDsKIH0KIApAQCAtMjg1LDYgKzM3MiwyMSBAQCBz
dGF0aWMgTlNUZXh0RmllbGQgKmNyZWF0ZVRpbWVUZXh0RmllbGQoTlNSZWN0IGZyYW1lKQogICAg
IHJldHVybiB0ZXh0RmllbGQ7CiB9CiAKK3N0YXRpYyBOU1ZpZXcgKmNyZWF0ZU1lZGlhVUlCYWNr
Z3JvdW5kVmlldygpCit7CisgICAgaWQgdmlldyA9IFtbUVRIVURCYWNrZ3JvdW5kVmlldyBhbGxv
Y10gaW5pdF07CisKKyAgICBjb25zdCBDR0Zsb2F0IHF1aWNrVGltZVBsYXllckhVREhlaWdodCA9
IDU5OworICAgIGNvbnN0IENHRmxvYXQgcXVpY2tUaW1lUGxheWVySFVEQ29udGVudEJvcmRlclBv
c2l0aW9uID0gMzg7CisKKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwdXNoCisjcHJhZ21hIGNs
YW5nIGRpYWdub3N0aWMgaWdub3JlZCAiLVdkZXByZWNhdGVkLWRlY2xhcmF0aW9ucyIKKyAgICBb
dmlldyBzZXRDb250ZW50Qm9yZGVyUG9zaXRpb246cXVpY2tUaW1lUGxheWVySFVEQ29udGVudEJv
cmRlclBvc2l0aW9uIC8gcXVpY2tUaW1lUGxheWVySFVESGVpZ2h0XTsKKyNwcmFnbWEgY2xhbmcg
ZGlhZ25vc3RpYyBwb3AKKworICAgIHJldHVybiB2aWV3OworfQorCiAtICh2b2lkKXdpbmRvd0Rp
ZExvYWQKIHsKICAgICBzdGF0aWMgY29uc3QgQ0dGbG9hdCBob3Jpem9udGFsTWFyZ2luID0gMTA7
CkBAIC0zMTAsNyArNDEyLDcgQEAgLSAodm9pZCl3aW5kb3dEaWRMb2FkCiAgICAgTlNXaW5kb3cg
KndpbmRvdyA9IFtzZWxmIHdpbmRvd107CiAgICAgQVNTRVJUKHdpbmRvdyk7CiAKLSAgICBOU1Zp
ZXcgKmJhY2tncm91bmQgPSB3a0NyZWF0ZU1lZGlhVUlCYWNrZ3JvdW5kVmlldygpOworICAgIE5T
VmlldyAqYmFja2dyb3VuZCA9IGNyZWF0ZU1lZGlhVUlCYWNrZ3JvdW5kVmlldygpOwogCiAgICAg
W3dpbmRvdyBzZXRDb250ZW50VmlldzpiYWNrZ3JvdW5kXTsKICAgICBfYXJlYSA9IFtbTlNUcmFj
a2luZ0FyZWEgYWxsb2NdIGluaXRXaXRoUmVjdDpbYmFja2dyb3VuZCBib3VuZHNdIG9wdGlvbnM6
TlNUcmFja2luZ01vdXNlRW50ZXJlZEFuZEV4aXRlZCB8IE5TVHJhY2tpbmdBY3RpdmVBbHdheXMg
b3duZXI6c2VsZiB1c2VySW5mbzpuaWxdOwpAQCAtMzIwLDE0ICs0MjIsMTQgQEAgLSAodm9pZCl3
aW5kb3dEaWRMb2FkCiAgICAgTlNWaWV3ICpjb250ZW50VmlldyA9IFt3aW5kb3cgY29udGVudFZp
ZXddOwogCiAgICAgQ0dGbG9hdCBjZW50ZXIgPSBDR0Zsb29yKCh3aW5kb3dXaWR0aCAtIHBsYXlC
dXR0b25XaWR0aCkgLyAyKTsKLSAgICBfcGxheUJ1dHRvbiA9IChOU0J1dHRvbiAqKWNyZWF0ZUNv
bnRyb2xXaXRoTWVkaWFVSUNvbnRyb2xUeXBlKHdrTWVkaWFVSUNvbnRyb2xQbGF5UGF1c2VCdXR0
b24sIE5TTWFrZVJlY3QoY2VudGVyLCB3aW5kb3dIZWlnaHQgLSBwbGF5QnV0dG9uVG9wTWFyZ2lu
IC0gcGxheUJ1dHRvbkhlaWdodCwgcGxheUJ1dHRvbldpZHRoLCBwbGF5QnV0dG9uSGVpZ2h0KSk7
CisgICAgX3BsYXlCdXR0b24gPSAoTlNCdXR0b24gKiljcmVhdGVDb250cm9sV2l0aE1lZGlhVUlD
b250cm9sVHlwZShNZWRpYVVJQ29udHJvbDo6UGxheVBhdXNlQnV0dG9uLCBOU01ha2VSZWN0KGNl
bnRlciwgd2luZG93SGVpZ2h0IC0gcGxheUJ1dHRvblRvcE1hcmdpbiAtIHBsYXlCdXR0b25IZWln
aHQsIHBsYXlCdXR0b25XaWR0aCwgcGxheUJ1dHRvbkhlaWdodCkpOwogICAgIEFTU0VSVChbX3Bs
YXlCdXR0b24gaXNLaW5kT2ZDbGFzczpbTlNCdXR0b24gY2xhc3NdXSk7CiAgICAgW19wbGF5QnV0
dG9uIHNldFRhcmdldDpzZWxmXTsKICAgICBbX3BsYXlCdXR0b24gc2V0QWN0aW9uOkBzZWxlY3Rv
cih0b2dnbGVQbGF5aW5nOildOwogICAgIFtjb250ZW50VmlldyBhZGRTdWJ2aWV3Ol9wbGF5QnV0
dG9uXTsKIAogICAgIENHRmxvYXQgY2xvc2VUb1JpZ2h0ID0gd2luZG93V2lkdGggLSBob3Jpem9u
dGFsTWFyZ2luIC0gZXhpdEZ1bGxzY3JlZW5CdXR0b25XaWR0aDsKLSAgICBOU0NvbnRyb2wgKmV4
aXRGdWxsc2NyZWVuQnV0dG9uID0gY3JlYXRlQ29udHJvbFdpdGhNZWRpYVVJQ29udHJvbFR5cGUo
d2tNZWRpYVVJQ29udHJvbEV4aXRGdWxsc2NyZWVuQnV0dG9uLCBOU01ha2VSZWN0KGNsb3NlVG9S
aWdodCwgd2luZG93SGVpZ2h0IC0gZXhpdEZ1bGxzY3JlZW5CdXR0b25Ub3BNYXJnaW4gLSBleGl0
RnVsbHNjcmVlbkJ1dHRvbkhlaWdodCwgZXhpdEZ1bGxzY3JlZW5CdXR0b25XaWR0aCwgZXhpdEZ1
bGxzY3JlZW5CdXR0b25IZWlnaHQpKTsKKyAgICBOU0NvbnRyb2wgKmV4aXRGdWxsc2NyZWVuQnV0
dG9uID0gY3JlYXRlQ29udHJvbFdpdGhNZWRpYVVJQ29udHJvbFR5cGUoTWVkaWFVSUNvbnRyb2w6
OkV4aXRGdWxsc2NyZWVuQnV0dG9uLCBOU01ha2VSZWN0KGNsb3NlVG9SaWdodCwgd2luZG93SGVp
Z2h0IC0gZXhpdEZ1bGxzY3JlZW5CdXR0b25Ub3BNYXJnaW4gLSBleGl0RnVsbHNjcmVlbkJ1dHRv
bkhlaWdodCwgZXhpdEZ1bGxzY3JlZW5CdXR0b25XaWR0aCwgZXhpdEZ1bGxzY3JlZW5CdXR0b25I
ZWlnaHQpKTsKICAgICBbZXhpdEZ1bGxzY3JlZW5CdXR0b24gc2V0QWN0aW9uOkBzZWxlY3Rvcihl
eGl0RnVsbHNjcmVlbjopXTsKICAgICBbZXhpdEZ1bGxzY3JlZW5CdXR0b24gc2V0VGFyZ2V0OnNl
bGZdOwogICAgIFtjb250ZW50VmlldyBhZGRTdWJ2aWV3OmV4aXRGdWxsc2NyZWVuQnV0dG9uXTsK
QEAgLTMzNSwyNyArNDM3LDI3IEBAIC0gKHZvaWQpd2luZG93RGlkTG9hZAogICAgIAogICAgIENH
RmxvYXQgdm9sdW1lQ29udHJvbHNCb3R0b20gPSB3aW5kb3dIZWlnaHQgLSB2b2x1bWVDb250cm9s
c1RvcE1hcmdpbiAtIHZvbHVtZUJ1dHRvbkhlaWdodDsKICAgICBDR0Zsb2F0IGxlZnQgPSBob3Jp
em9udGFsTWFyZ2luOwotICAgIE5TQ29udHJvbCAqdm9sdW1lRG93bkJ1dHRvbiA9IGNyZWF0ZUNv
bnRyb2xXaXRoTWVkaWFVSUNvbnRyb2xUeXBlKHdrTWVkaWFVSUNvbnRyb2xWb2x1bWVEb3duQnV0
dG9uLCBOU01ha2VSZWN0KGxlZnQsIHZvbHVtZUNvbnRyb2xzQm90dG9tLCB2b2x1bWVCdXR0b25X
aWR0aCwgdm9sdW1lQnV0dG9uSGVpZ2h0KSk7CisgICAgTlNDb250cm9sICp2b2x1bWVEb3duQnV0
dG9uID0gY3JlYXRlQ29udHJvbFdpdGhNZWRpYVVJQ29udHJvbFR5cGUoTWVkaWFVSUNvbnRyb2w6
OlZvbHVtZURvd25CdXR0b24sIE5TTWFrZVJlY3QobGVmdCwgdm9sdW1lQ29udHJvbHNCb3R0b20s
IHZvbHVtZUJ1dHRvbldpZHRoLCB2b2x1bWVCdXR0b25IZWlnaHQpKTsKICAgICBbY29udGVudFZp
ZXcgYWRkU3Vidmlldzp2b2x1bWVEb3duQnV0dG9uXTsKICAgICBbdm9sdW1lRG93bkJ1dHRvbiBz
ZXRUYXJnZXQ6c2VsZl07CiAgICAgW3ZvbHVtZURvd25CdXR0b24gc2V0QWN0aW9uOkBzZWxlY3Rv
cihzZXRWb2x1bWVUb1plcm86KV07CiAgICAgW3ZvbHVtZURvd25CdXR0b24gcmVsZWFzZV07CiAK
ICAgICBsZWZ0ICs9IHZvbHVtZUJ1dHRvbldpZHRoOwotICAgIF92b2x1bWVTbGlkZXIgPSBjcmVh
dGVDb250cm9sV2l0aE1lZGlhVUlDb250cm9sVHlwZSh3a01lZGlhVUlDb250cm9sU2xpZGVyLCBO
U01ha2VSZWN0KGxlZnQsIHZvbHVtZUNvbnRyb2xzQm90dG9tICsgQ0dGbG9vcigodm9sdW1lQnV0
dG9uSGVpZ2h0IC0gdm9sdW1lU2xpZGVySGVpZ2h0KSAvIDIpLCB2b2x1bWVTbGlkZXJXaWR0aCwg
dm9sdW1lU2xpZGVySGVpZ2h0KSk7CisgICAgX3ZvbHVtZVNsaWRlciA9IGNyZWF0ZUNvbnRyb2xX
aXRoTWVkaWFVSUNvbnRyb2xUeXBlKE1lZGlhVUlDb250cm9sOjpTbGlkZXIsIE5TTWFrZVJlY3Qo
bGVmdCwgdm9sdW1lQ29udHJvbHNCb3R0b20gKyBDR0Zsb29yKCh2b2x1bWVCdXR0b25IZWlnaHQg
LSB2b2x1bWVTbGlkZXJIZWlnaHQpIC8gMiksIHZvbHVtZVNsaWRlcldpZHRoLCB2b2x1bWVTbGlk
ZXJIZWlnaHQpKTsKICAgICBbX3ZvbHVtZVNsaWRlciBzZXRWYWx1ZTpbTlNOdW1iZXIgbnVtYmVy
V2l0aERvdWJsZTpbc2VsZiBtYXhWb2x1bWVdXSBmb3JLZXk6QCJtYXhWYWx1ZSJdOwogICAgIFtf
dm9sdW1lU2xpZGVyIHNldFRhcmdldDpzZWxmXTsKICAgICBbX3ZvbHVtZVNsaWRlciBzZXRBY3Rp
b246QHNlbGVjdG9yKHZvbHVtZUNoYW5nZWQ6KV07CiAgICAgW2NvbnRlbnRWaWV3IGFkZFN1YnZp
ZXc6X3ZvbHVtZVNsaWRlcl07CiAKICAgICBsZWZ0ICs9IHZvbHVtZVNsaWRlcldpZHRoICsgdm9s
dW1lVXBCdXR0b25MZWZ0TWFyZ2luOwotICAgIE5TQ29udHJvbCAqdm9sdW1lVXBCdXR0b24gPSBj
cmVhdGVDb250cm9sV2l0aE1lZGlhVUlDb250cm9sVHlwZSh3a01lZGlhVUlDb250cm9sVm9sdW1l
VXBCdXR0b24sIE5TTWFrZVJlY3QobGVmdCwgdm9sdW1lQ29udHJvbHNCb3R0b20sIHZvbHVtZUJ1
dHRvbldpZHRoLCB2b2x1bWVCdXR0b25IZWlnaHQpKTsKKyAgICBOU0NvbnRyb2wgKnZvbHVtZVVw
QnV0dG9uID0gY3JlYXRlQ29udHJvbFdpdGhNZWRpYVVJQ29udHJvbFR5cGUoTWVkaWFVSUNvbnRy
b2w6OlZvbHVtZVVwQnV0dG9uLCBOU01ha2VSZWN0KGxlZnQsIHZvbHVtZUNvbnRyb2xzQm90dG9t
LCB2b2x1bWVCdXR0b25XaWR0aCwgdm9sdW1lQnV0dG9uSGVpZ2h0KSk7CiAgICAgW3ZvbHVtZVVw
QnV0dG9uIHNldFRhcmdldDpzZWxmXTsKICAgICBbdm9sdW1lVXBCdXR0b24gc2V0QWN0aW9uOkBz
ZWxlY3RvcihzZXRWb2x1bWVUb01heGltdW06KV07CiAgICAgW2NvbnRlbnRWaWV3IGFkZFN1YnZp
ZXc6dm9sdW1lVXBCdXR0b25dOwogICAgIFt2b2x1bWVVcEJ1dHRvbiByZWxlYXNlXTsKIAotICAg
IF90aW1lbGluZSA9IHdrQ3JlYXRlTWVkaWFVSUNvbnRyb2wod2tNZWRpYVVJQ29udHJvbFRpbWVs
aW5lKTsKKyAgICBfdGltZWxpbmUgPSBjcmVhdGVNZWRpYVVJQ29udHJvbChNZWRpYVVJQ29udHJv
bDo6VGltZWxpbmUpOwogCiAgICAgW190aW1lbGluZSBzZXRUYXJnZXQ6c2VsZl07CiAgICAgW190
aW1lbGluZSBzZXRBY3Rpb246QHNlbGVjdG9yKHRpbWVsaW5lUG9zaXRpb25DaGFuZ2VkOildOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9X
ZWJTeXN0ZW1JbnRlcmZhY2UubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvbWFjL1dlYlN5c3RlbUludGVyZmFjZS5tbQppbmRleCAwZGRkNTcxNDU5Yjg1NmYzOTIw
NWUxMTBjYzAwY2NjYWVlM2ZkMGVlLi5iZGE1ZDczZGZjMTIyZjNlMDIyM2FhYWU1NTI4NGQ0YjM5
ZTU3M2NlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvbWFjL1dlYlN5c3RlbUludGVyZmFjZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYlN5c3RlbUludGVyZmFjZS5tbQpAQCAtNDMsMTggKzQz
LDYgQEAgdm9pZCBJbml0V2ViQ29yZVN5c3RlbUludGVyZmFjZSh2b2lkKQogICAgICAgICBJTklU
KERyYXdNZWRpYVVJUGFydCk7CiAgICAgICAgIElOSVQoSGl0VGVzdE1lZGlhVUlQYXJ0KTsKICAg
ICAgICAgSU5JVChNZWFzdXJlTWVkaWFVSVBhcnQpOwotICAgICAgICBJTklUKFFUSW5jbHVkZU9u
bHlNb2Rlcm5NZWRpYUZpbGVUeXBlcyk7Ci0gICAgICAgIElOSVQoUVRNb3ZpZURpc2FibGVDb21w
b25lbnQpOwotICAgICAgICBJTklUKFFUTW92aWVHZXRUeXBlKTsKLSAgICAgICAgSU5JVChRVE1v
dmllSGFzQ2xvc2VkQ2FwdGlvbnMpOwotICAgICAgICBJTklUKFFUTW92aWVNYXhUaW1lTG9hZGVk
KTsKLSAgICAgICAgSU5JVChRVE1vdmllTWF4VGltZUxvYWRlZENoYW5nZU5vdGlmaWNhdGlvbik7
Ci0gICAgICAgIElOSVQoUVRNb3ZpZVJlc29sdmVkVVJMKTsKLSAgICAgICAgSU5JVChRVE1vdmll
U2VsZWN0UHJlZmVycmVkQWx0ZXJuYXRlcyk7Ci0gICAgICAgIElOSVQoUVRNb3ZpZVNldFNob3dD
bG9zZWRDYXB0aW9ucyk7Ci0gICAgICAgIElOSVQoUVRHZXRTaXRlc0luTWVkaWFEb3dubG9hZENh
Y2hlKTsKLSAgICAgICAgSU5JVChRVENsZWFyTWVkaWFEb3dubG9hZENhY2hlRm9yU2l0ZSk7Ci0g
ICAgICAgIElOSVQoUVRDbGVhck1lZGlhRG93bmxvYWRDYWNoZSk7CiAjZW5kaWYKICAgICAgICAg
SU5JVChTZXRDT05ORUNUUHJveHlBdXRob3JpemF0aW9uRm9yU3RyZWFtKTsKICAgICAgICAgSU5J
VChTZXRDT05ORUNUUHJveHlGb3JTdHJlYW0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViU3lzdGVtSW50ZXJmYWNlLm1tIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViU3lzdGVtSW50ZXJmYWNlLm1tCmluZGV4
IGEzMjAyNDUzN2NhZTc3NDA0ZDEyMmEzYTM4NTRkM2MyZTdiYTI0OTAuLjE3NDY1ODZiMjQyZjUy
ZTA3YTk5ZmU5MTVhYTZiNGY2MmEzYmM1ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlN5c3RlbUludGVyZmFjZS5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJTeXN0ZW1JbnRlcmZhY2UubW0KQEAg
LTQ5LDI1ICs0OSw5IEBAIHZvaWQgSW5pdFdlYkNvcmVTeXN0ZW1JbnRlcmZhY2Uodm9pZCkKICAg
ICBJTklUKERyYXdNZWRpYVNsaWRlclRyYWNrKTsKICAgICBJTklUKEhpdFRlc3RNZWRpYVVJUGFy
dCk7CiAgICAgSU5JVChNZWFzdXJlTWVkaWFVSVBhcnQpOwotICAgIElOSVQoQ3JlYXRlTWVkaWFV
SUJhY2tncm91bmRWaWV3KTsKLSAgICBJTklUKENyZWF0ZU1lZGlhVUlDb250cm9sKTsKICNlbmRp
ZgogICAgIElOSVQoU2V0Q09OTkVDVFByb3h5QXV0aG9yaXphdGlvbkZvclN0cmVhbSk7CiAgICAg
SU5JVChTZXRDT05ORUNUUHJveHlGb3JTdHJlYW0pOwotI2lmIEVOQUJMRShWSURFTykgJiYgIVBM
QVRGT1JNKElPUykKLSAgICBJTklUKFFUSW5jbHVkZU9ubHlNb2Rlcm5NZWRpYUZpbGVUeXBlcyk7
Ci0gICAgSU5JVChRVE1vdmllRGlzYWJsZUNvbXBvbmVudCk7Ci0gICAgSU5JVChRVE1vdmllTWF4
VGltZUxvYWRlZCk7Ci0gICAgSU5JVChRVE1vdmllTWF4VGltZUxvYWRlZENoYW5nZU5vdGlmaWNh
dGlvbik7Ci0gICAgSU5JVChRVE1vdmllR2V0VHlwZSk7Ci0gICAgSU5JVChRVE1vdmllSGFzQ2xv
c2VkQ2FwdGlvbnMpOwotICAgIElOSVQoUVRNb3ZpZVJlc29sdmVkVVJMKTsKLSAgICBJTklUKFFU
TW92aWVTZXRTaG93Q2xvc2VkQ2FwdGlvbnMpOwotICAgIElOSVQoUVRNb3ZpZVNlbGVjdFByZWZl
cnJlZEFsdGVybmF0ZXMpOwotICAgIElOSVQoUVRHZXRTaXRlc0luTWVkaWFEb3dubG9hZENhY2hl
KTsKLSAgICBJTklUKFFUQ2xlYXJNZWRpYURvd25sb2FkQ2FjaGVGb3JTaXRlKTsKLSAgICBJTklU
KFFUQ2xlYXJNZWRpYURvd25sb2FkQ2FjaGUpOwotI2VuZGlmCiAKICNpZiAhUExBVEZPUk0oSU9T
KQogICAgIElOSVQoRXhlY3V0YWJsZVdhc0xpbmtlZE9uT3JCZWZvcmVTbm93TGVvcGFyZCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>320121</attachid>
            <date>2017-09-07 09:53:55 -0700</date>
            <delta_ts>2017-09-07 10:30:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-176472-20170907095354.patch</filename>
            <type>text/plain</type>
            <size>34072</size>
            <attacher name="Andy Estes">aestes</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIxNjg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDY5MjY5MTkxOTNmNWE2
MjdjNmRiYzQyNDFiYTVlY2M3ZDdhNmU3NC4uYWUyODQ1OTMzYzJlNDk2MTVhYTMyOWE1OWI3YTky
YTc0NjNkZmVlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDE3LTA5LTA2ICBBbmR5
IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBbTWFjXSBVcHN0cmVhbSBRVEtp
dC1yZWxhdGVkIFdlYktpdFN5c3RlbUludGVyZmFjZSBmdW5jdGlvbnMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NjQ3MgorCisgICAgICAgIFJldmll
d2VkIGJ5IEVyaWMgQ2FybHNvbi4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9N
ZWRpYVBsYXllclByaXZhdGVRVEtpdC5tbToKKyAgICAgICAgKFdlYkNvcmU6OmRpc2FibGVDb21w
b25lbnRzT25jZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6
Y3JlYXRlUVRNb3ZpZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVRVEtp
dDo6aGFzQ2xvc2VkQ2FwdGlvbnMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5
ZXJQcml2YXRlUVRLaXQ6OnNldENsb3NlZENhcHRpb25zVmlzaWJsZSk6CisgICAgICAgIChXZWJD
b3JlOjpzZWxlY3RQcmVmZXJyZWRBbHRlcm5hdGVUcmFja0Zvck1lZGlhVHlwZSk6CisgICAgICAg
IChXZWJDb3JlOjpzZWxlY3RQcmVmZXJyZWRBbHRlcm5hdGVzKToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0Ojp1cGRhdGVTdGF0ZXMpOgorICAgICAgICAoV2ViQ29y
ZTo6bWltZU1vZGVyblR5cGVzQ2FjaGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQ
cml2YXRlUVRLaXQ6Om9yaWdpbnNJbk1lZGlhQ2FjaGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFQbGF5ZXJQcml2YXRlUVRLaXQ6OmNsZWFyTWVkaWFDYWNoZSk6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6Y2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2lucyk6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6aGFzU2luZ2xlU2VjdXJp
dHlPcmlnaW4gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlUVRL
aXQ6Om1vdmllTG9hZFR5cGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQ
cml2YXRlUVRLaXQ6OmNhblNhdmVNZWRpYURhdGEgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3Jt
L21hYy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmg6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1dl
YkNvcmVTeXN0ZW1JbnRlcmZhY2UubW06CisgICAgICAgICogcGxhdGZvcm0vbWFjL1dlYlZpZGVv
RnVsbHNjcmVlbkhVRFdpbmRvd0NvbnRyb2xsZXIubW06CisgICAgICAgIChjcmVhdGVNZWRpYVVJ
Q29udHJvbCk6CisgICAgICAgIChjcmVhdGVDb250cm9sV2l0aE1lZGlhVUlDb250cm9sVHlwZSk6
CisgICAgICAgIChjcmVhdGVNZWRpYVVJQmFja2dyb3VuZFZpZXcpOgorICAgICAgICAoLVtXZWJW
aWRlb0Z1bGxzY3JlZW5IVURXaW5kb3dDb250cm9sbGVyIHdpbmRvd0RpZExvYWRdKToKKwogMjAx
Ny0wOS0wNiAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgogCiAgICAgICAgIFJFR1JFU1NJ
T04gKHIyMjE1OTgpOiBMZWdhY3kgInJvdW5kIiBhbmQgImJldmVsIiBvcHRpb25zIGNhbiBubyBs
b25nZXIgYmUgdXNlZCB3aXRoIHRoZSBsZWdhY3kgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEIHNl
dExpbmVKb2luIG9wZXJhdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKaW5kZXggZWU0MGU0NjE3NTU5NmJj
NTIyZjMxN2M2YzU5OGRiMDg0YzE3M2M1Ni4uZWVhNzkwNWM1ZWRjMDNhYTgxNzgwMWZjM2NkMGNh
OTAxMjg4MzhiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTctMDkt
MDYgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29tPgorCisgICAgICAgIFtNYWNdIFVwc3Ry
ZWFtIFFUS2l0LXJlbGF0ZWQgV2ViS2l0U3lzdGVtSW50ZXJmYWNlIGZ1bmN0aW9ucworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc2NDcyCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgRXJpYyBDYXJsc29uLgorCisgICAgICAgICogcGFsL3NwaS9tYWMvUVRL
aXRTUEkuaDoKKwogMjAxNy0wOS0wNCAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtp
dC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjIyMTQ5NCBhbmQgcjIy
MTUwMC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKaW5kZXggMzY0ZDhlNWQ4MGQyNTVkNjkzNmZiMmUxYTBiZDQ2MzdhYjU5YTA2
ZS4uZjY3NjU3MTZjZDQ5YzZhMDBjNmY5OWU3ZTQwZjg3NTgyNTg4MjdhOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxMyBAQAorMjAxNy0wOS0wNiAgQW5keSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+
CisKKyAgICAgICAgW01hY10gVXBzdHJlYW0gUVRLaXQtcmVsYXRlZCBXZWJLaXRTeXN0ZW1JbnRl
cmZhY2UgZnVuY3Rpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNzY0NzIKKworICAgICAgICBSZXZpZXdlZCBieSBFcmljIENhcmxzb24uCisKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJTeXN0ZW1JbnRlcmZhY2Uu
bW06CisgICAgICAgIChJbml0V2ViQ29yZVN5c3RlbUludGVyZmFjZSk6CisKIDIwMTctMDktMDYg
IEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CiAKICAgICAgICAgRGVueSB0aGly
ZC1wYXJ0eSBjb29raWUgY3JlYXRpb24gZm9yIHByZXZhbGVudCByZXNvdXJjZXMgd2l0aG91dCBp
bnRlcmFjdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4IDdlNTFlYmFmNmJmZjhl
ZmIxZmNjY2Q4MWQyODQwZmY3MmI0NGM1ZTguLjBhZDdhMmE3MzIxNzY1ZDY0ZWVhYThiYzM2OGYw
M2RiODIzNGQzNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBA
QAorMjAxNy0wOS0wNiAgQW5keSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+CisKKyAgICAgICAg
W01hY10gVXBzdHJlYW0gUVRLaXQtcmVsYXRlZCBXZWJLaXRTeXN0ZW1JbnRlcmZhY2UgZnVuY3Rp
b25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzY0
NzIKKworICAgICAgICBSZXZpZXdlZCBieSBFcmljIENhcmxzb24uCisKKyAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9XZWJTeXN0ZW1JbnRlcmZhY2UubW06CisgICAgICAgIChJbml0V2ViQ29yZVN5
c3RlbUludGVyZmFjZSk6CisKIDIwMTctMDktMDUgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRv
bkBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIHNvbWUgdW51c2VkIGJpdHMgb2YgY29kZSBh
bmQgcmVzb3VyY2VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9tYWMv
UVRLaXRTUEkuaCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL21hYy9RVEtpdFNQSS5oCmlu
ZGV4IDcxNzg5Y2RmMjVkYThhZjQwNGI3MGE0Y2I1MTljMWNhM2Q4NTJlMmYuLjhlNzk5YzM4ODFh
YzlmOTNkZThlZmU3ZGNlMGFkMTVjMGQyMTAzYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1BBTC9wYWwvc3BpL21hYy9RVEtpdFNQSS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwv
c3BpL21hYy9RVEtpdFNQSS5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTYtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTI1LDggKzI1LDEyIEBACiAKICNwcmFnbWEgb25jZQogCi0jaWYg
VVNFKEFQUExFX0lOVEVSTkFMX1NESykgfHwgX19NQUNfT1NfWF9WRVJTSU9OX01BWF9BTExPV0VE
IDwgMTAxMjAwCi0jaW1wb3J0IDxRVEtpdC9RVEtpdC5oPgorI2lmIFVTRShBUFBMRV9JTlRFUk5B
TF9TREspCisKKyNpbXBvcnQgPFFUS2l0L1FUSFVEQmFja2dyb3VuZFZpZXdfUHJpdmF0ZS5oPgor
I2ltcG9ydCA8UVRLaXQvUVRLaXRfUHJpdmF0ZS5oPgorI2ltcG9ydCA8UVRLaXQvUVRVdGlsaXRp
ZXNfUHJpdmF0ZS5oPgorCiAjZWxzZQogCiBlbnVtIHsKQEAgLTQ4LDYgKzUyLDE0IEBAIHR5cGVk
ZWYgZW51bSB7CiAgICAgUVRJbmNsdWRlQ29tbW9uVHlwZXMgPSAwLAogfSBRVE1vdmllRmlsZVR5
cGVPcHRpb25zOwogCitlbnVtIHsKKyAgICBRVE1vdmllVHlwZVVua25vd24gPSAwLAorICAgIFFU
TW92aWVUeXBlTG9jYWwsCisgICAgUVRNb3ZpZVR5cGVGYXN0U3RhcnQsCisgICAgUVRNb3ZpZVR5
cGVMaXZlU3RyZWFtLAorICAgIFFUTW92aWVUeXBlU3RvcmVkU3RyZWFtCit9OworCiBAaW50ZXJm
YWNlIFFUTWVkaWEgOiBOU09iamVjdAogCiAtIChpZClhdHRyaWJ1dGVGb3JLZXk6KE5TU3RyaW5n
ICopYXR0cmlidXRlS2V5OwpAQCAtNTgsNiArNzAsOCBAQCB0eXBlZGVmIGVudW0gewogCiArIChO
U0FycmF5ICopbW92aWVGaWxlVHlwZXM6KFFUTW92aWVGaWxlVHlwZU9wdGlvbnMpdHlwZXM7CiAK
KysgKHZvaWQpZGlzYWJsZUNvbXBvbmVudDooQ29tcG9uZW50RGVzY3JpcHRpb24pY29tcG9uZW50
OworCiAtIChpZClpbml0V2l0aEF0dHJpYnV0ZXM6KE5TRGljdGlvbmFyeSAqKWF0dHJpYnV0ZXMg
ZXJyb3I6KE5TRXJyb3IgKiopZXJyb3JQdHI7CiAKIC0gKHZvaWQpcGxheTsKQEAgLTgxLDYgKzk1
LDExIEBAIHR5cGVkZWYgZW51bSB7CiAKIC0gKE5TQXJyYXkgKil0cmFja3M7CiAKKy0gKE5TQXJy
YXkgKilhbHRlcm5hdGVHcm91cFR5cGVzOworLSAoTlNBcnJheSAqKWFsdGVybmF0ZXNGb3JNZWRp
YVR5cGU6KE5TU3RyaW5nICopdHlwZTsKKy0gKHZvaWQpZGVzZWxlY3RBbHRlcm5hdGVHcm91cFRy
YWNrOihRVFRyYWNrICopYWx0ZXJuYXRlVHJhY2s7CistICh2b2lkKXNlbGVjdEFsdGVybmF0ZUdy
b3VwVHJhY2s6KFFUVHJhY2sgKilhbHRlcm5hdGVUcmFjazsKKwogQGVuZAogCiBAaW50ZXJmYWNl
IFFUTW92aWVMYXllciA6IENBTGF5ZXIKQEAgLTEwNiw0ICsxMjUsMjAgQEAgdHlwZWRlZiBlbnVt
IHsKIAogQGVuZAogCitAaW50ZXJmYWNlIFFUSFVEQmFja2dyb3VuZFZpZXcgOiBOU1ZpZXcKKwor
LSAodm9pZClzZXRDb250ZW50Qm9yZGVyUG9zaXRpb246KENHRmxvYXQpY29udGVudEJvcmRlclBv
c2l0aW9uOworCitAZW5kCisKK0BpbnRlcmZhY2UgUVRVdGlsaXRpZXMgOiBOU09iamVjdAorCisr
IChpZClxdFV0aWxpdGllczsKKworLSAoTlNBcnJheSAqKXNpdGVzSW5Eb3dubG9hZENhY2hlOwor
LSAodm9pZCljbGVhckRvd25sb2FkQ2FjaGU7CistICh2b2lkKWNsZWFyRG93bmxvYWRDYWNoZUZv
clNpdGU6KE5TU3RyaW5nICopc2l0ZTsKKworQGVuZAorCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9NZWRpYVBsYXllclByaXZhdGVRVEtp
dC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9NZWRpYVBsYXllclBy
aXZhdGVRVEtpdC5tbQppbmRleCA4NWNmNTYxZDczMzE3OTY3NmVjZjhlOWZkYWEzNmZjMGU3ZTU4
YjAxLi5hYzE2Y2IzMTNhMThkYmMxMTEzOWM3NzQxZmFjOTAxNjQ4MzA0NjU1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQbGF5ZXJQcml2YXRl
UVRLaXQubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL01lZGlh
UGxheWVyUHJpdmF0ZVFUS2l0Lm1tCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCwgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDctMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTUyLDYgKzUyLDcg
QEAgU09GVF9MSU5LKFFUS2l0LCBRVE1ha2VUaW1lLCBRVFRpbWUsIChsb25nIGxvbmcgdGltZVZh
bHVlLCBsb25nIHRpbWVTY2FsZSksICh0aW0KIAogU09GVF9MSU5LX0NMQVNTKFFUS2l0LCBRVE1v
dmllKQogU09GVF9MSU5LX0NMQVNTKFFUS2l0LCBRVE1vdmllTGF5ZXIpCitTT0ZUX0xJTktfQ0xB
U1MoUVRLaXQsIFFUVXRpbGl0aWVzKQogCiBTT0ZUX0xJTktfUE9JTlRFUihRVEtpdCwgUVRUcmFj
a01lZGlhVHlwZUF0dHJpYnV0ZSwgTlNTdHJpbmcgKikKIFNPRlRfTElOS19QT0lOVEVSKFFUS2l0
LCBRVE1lZGlhVHlwZUF0dHJpYnV0ZSwgTlNTdHJpbmcgKikKQEAgLTcxLDYgKzcyLDcgQEAgU09G
VF9MSU5LX1BPSU5URVIoUVRLaXQsIFFUTW92aWVJc0FjdGl2ZUF0dHJpYnV0ZSwgTlNTdHJpbmcg
KikKIFNPRlRfTElOS19QT0lOVEVSKFFUS2l0LCBRVE1vdmllTG9hZFN0YXRlQXR0cmlidXRlLCBO
U1N0cmluZyAqKQogU09GVF9MSU5LX1BPSU5URVIoUVRLaXQsIFFUTW92aWVMb2FkU3RhdGVFcnJv
ckF0dHJpYnV0ZSwgTlNTdHJpbmcgKikKIFNPRlRfTElOS19QT0lOVEVSKFFUS2l0LCBRVE1vdmll
TG9hZFN0YXRlRGlkQ2hhbmdlTm90aWZpY2F0aW9uLCBOU1N0cmluZyAqKQorU09GVF9MSU5LX1BP
SU5URVIoUVRLaXQsIFFUTW92aWVMb2FkZWRSYW5nZXNEaWRDaGFuZ2VOb3RpZmljYXRpb24sIE5T
U3RyaW5nICopOwogU09GVF9MSU5LX1BPSU5URVIoUVRLaXQsIFFUTW92aWVOYXR1cmFsU2l6ZUF0
dHJpYnV0ZSwgTlNTdHJpbmcgKikKIFNPRlRfTElOS19QT0lOVEVSKFFUS2l0LCBRVE1vdmllQ3Vy
cmVudFNpemVBdHRyaWJ1dGUsIE5TU3RyaW5nICopCiBTT0ZUX0xJTktfUE9JTlRFUihRVEtpdCwg
UVRNb3ZpZVByZXZlbnRFeHRlcm5hbFVSTExpbmtzQXR0cmlidXRlLCBOU1N0cmluZyAqKQpAQCAt
OTcsNiArOTksNyBAQCBAZW5kCiAKICNkZWZpbmUgUVRNb3ZpZSBnZXRRVE1vdmllQ2xhc3MoKQog
I2RlZmluZSBRVE1vdmllTGF5ZXIgZ2V0UVRNb3ZpZUxheWVyQ2xhc3MoKQorI2RlZmluZSBRVFV0
aWxpdGllcyBnZXRRVFV0aWxpdGllc0NsYXNzKCkKIAogI2RlZmluZSBRVFRyYWNrTWVkaWFUeXBl
QXR0cmlidXRlIGdldFFUVHJhY2tNZWRpYVR5cGVBdHRyaWJ1dGUoKQogI2RlZmluZSBRVE1lZGlh
VHlwZUF0dHJpYnV0ZSBnZXRRVE1lZGlhVHlwZUF0dHJpYnV0ZSgpCkBAIC0xMTYsNiArMTE5LDcg
QEAgQGVuZAogI2RlZmluZSBRVE1vdmllTG9hZFN0YXRlQXR0cmlidXRlIGdldFFUTW92aWVMb2Fk
U3RhdGVBdHRyaWJ1dGUoKQogI2RlZmluZSBRVE1vdmllTG9hZFN0YXRlRXJyb3JBdHRyaWJ1dGUg
Z2V0UVRNb3ZpZUxvYWRTdGF0ZUVycm9yQXR0cmlidXRlKCkKICNkZWZpbmUgUVRNb3ZpZUxvYWRT
dGF0ZURpZENoYW5nZU5vdGlmaWNhdGlvbiBnZXRRVE1vdmllTG9hZFN0YXRlRGlkQ2hhbmdlTm90
aWZpY2F0aW9uKCkKKyNkZWZpbmUgUVRNb3ZpZUxvYWRlZFJhbmdlc0RpZENoYW5nZU5vdGlmaWNh
dGlvbiBnZXRRVE1vdmllTG9hZGVkUmFuZ2VzRGlkQ2hhbmdlTm90aWZpY2F0aW9uKCkKICNkZWZp
bmUgUVRNb3ZpZU5hdHVyYWxTaXplQXR0cmlidXRlIGdldFFUTW92aWVOYXR1cmFsU2l6ZUF0dHJp
YnV0ZSgpCiAjZGVmaW5lIFFUTW92aWVDdXJyZW50U2l6ZUF0dHJpYnV0ZSBnZXRRVE1vdmllQ3Vy
cmVudFNpemVBdHRyaWJ1dGUoKQogI2RlZmluZSBRVE1vdmllUHJldmVudEV4dGVybmFsVVJMTGlu
a3NBdHRyaWJ1dGUgZ2V0UVRNb3ZpZVByZXZlbnRFeHRlcm5hbFVSTExpbmtzQXR0cmlidXRlKCkK
QEAgLTMwNyw3ICszMTEsNyBAQCBzdGF0aWMgdm9pZCBkaXNhYmxlQ29tcG9uZW50c09uY2UoKQog
ICAgIH07CiAKICAgICBmb3IgKGF1dG8mIGNvbXBvbmVudCA6IGNvbXBvbmVudHNUb0Rpc2FibGUp
Ci0gICAgICAgIHdrUVRNb3ZpZURpc2FibGVDb21wb25lbnQoY29tcG9uZW50KTsKKyAgICAgICAg
W1FUTW92aWUgZGlzYWJsZUNvbXBvbmVudDpjb21wb25lbnRdOwogfQogCiB2b2lkIE1lZGlhUGxh
eWVyUHJpdmF0ZVFUS2l0OjpjcmVhdGVRVE1vdmllKE5TVVJMICp1cmwsIE5TRGljdGlvbmFyeSAq
bW92aWVBdHRyaWJ1dGVzKQpAQCAtMzQ1LDE0ICszNDksMTAgQEAgdm9pZCBNZWRpYVBsYXllclBy
aXZhdGVRVEtpdDo6Y3JlYXRlUVRNb3ZpZShOU1VSTCAqdXJsLCBOU0RpY3Rpb25hcnkgKm1vdmll
QXR0cmkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Jq
ZWN0Om1fcXRNb3ZpZS5nZXQoKV07CiAKICAgICAvLyBJbiB1cGRhdGVTdGF0ZSgpLCB3ZSB0cmFj
ayB3aGVuIG1heFRpbWVMb2FkZWQoKSA9PSBkdXJhdGlvbigpLgotICAgIC8vIEluIG5ld2VyIHZl
cnNpb24gb2YgUXVpY2tUaW1lLCBhIG5vdGlmaWNhdGlvbiBpcyBlbWl0dGVkIHdoZW4gbWF4VGlt
ZUxvYWRlZCBjaGFuZ2VzLgotICAgIC8vIEluIG9sZGVyIHZlcnNpb24gb2YgUXVpY2tUaW1lLCBR
VE1vdmllTG9hZFN0YXRlRGlkQ2hhbmdlTm90aWZpY2F0aW9uIGJlIGZpcmVkLgotICAgIGlmIChO
U1N0cmluZyAqbWF4VGltZUxvYWRlZENoYW5nZU5vdGlmaWNhdGlvbiA9IHdrUVRNb3ZpZU1heFRp
bWVMb2FkZWRDaGFuZ2VOb3RpZmljYXRpb24oKSkgewotICAgICAgICBbW05TTm90aWZpY2F0aW9u
Q2VudGVyIGRlZmF1bHRDZW50ZXJdIGFkZE9ic2VydmVyOm1fb2JqY09ic2VydmVyLmdldCgpCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0b3I6
QHNlbGVjdG9yKGxvYWRlZFJhbmdlc0NoYW5nZWQ6KQotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOm1heFRpbWVMb2FkZWRDaGFuZ2VOb3Rp
ZmljYXRpb24KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG9iamVjdDptX3F0TW92aWUuZ2V0KCldOyAgICAgICAgCi0gICAgfQorICAgIFtbTlNOb3Rp
ZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0gYWRkT2JzZXJ2ZXI6bV9vYmpjT2JzZXJ2ZXIu
Z2V0KCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVj
dG9yOkBzZWxlY3Rvcihsb2FkZWRSYW5nZXNDaGFuZ2VkOikKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOlFUTW92aWVMb2FkZWRSYW5nZXNEaWRD
aGFuZ2VOb3RpZmljYXRpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgb2JqZWN0Om1fcXRNb3ZpZS5nZXQoKV07CiAKICAgICBbW05TTm90aWZpY2F0aW9u
Q2VudGVyIGRlZmF1bHRDZW50ZXJdIGFkZE9ic2VydmVyOm1fb2JqY09ic2VydmVyLmdldCgpCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RvcjpAc2Vs
ZWN0b3IocmF0ZUNoYW5nZWQ6KSAKQEAgLTc3MSwxOCArNzcxLDMwIEBAIGJvb2wgTWVkaWFQbGF5
ZXJQcml2YXRlUVRLaXQ6Omhhc0Nsb3NlZENhcHRpb25zKCkgY29uc3QKIHsKICAgICBpZiAoIW1l
dGFEYXRhQXZhaWxhYmxlKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gd2tR
VE1vdmllSGFzQ2xvc2VkQ2FwdGlvbnMobV9xdE1vdmllLmdldCgpKTsgIAorICAgIHJldHVybiBb
W21fcXRNb3ZpZSBhbHRlcm5hdGVHcm91cFR5cGVzXSBjb250YWluc09iamVjdDpAImNsY3AiXTsK
IH0KIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6c2V0Q2xvc2VkQ2FwdGlvbnNWaXNp
YmxlKGJvb2wgY2xvc2VkQ2FwdGlvbnNWaXNpYmxlKQogewotICAgIGlmIChtZXRhRGF0YUF2YWls
YWJsZSgpKSB7Ci0gICAgICAgIHdrUVRNb3ZpZVNldFNob3dDbG9zZWRDYXB0aW9ucyhtX3F0TW92
aWUuZ2V0KCksIGNsb3NlZENhcHRpb25zVmlzaWJsZSk7CisgICAgaWYgKCFtZXRhRGF0YUF2YWls
YWJsZSgpKQorICAgICAgICByZXR1cm47CiAKLSAgICAgICAgaWYgKGNsb3NlZENhcHRpb25zVmlz
aWJsZSAmJiBtX3F0VmlkZW9MYXllcikgewotICAgICAgICAgICAgLy8gQ2FwdGlvbnMgd2lsbCBi
ZSByZW5kZXJlZCB1cHNpZGUgZG93biB1bmxlc3Mgd2UgZmxhZyB0aGUgbW92aWUgYXMgZmxpcHBl
ZCAoYWdhaW4pLiBTZWUgPHJkYXI6Ly83NDA4NDQwPi4KLSAgICAgICAgICAgIFttX3F0VmlkZW9M
YXllci5nZXQoKSBzZXRHZW9tZXRyeUZsaXBwZWQ6WUVTXTsKLSAgICAgICAgfQorICAgIGlmICgh
W1ttX3F0TW92aWUgYWx0ZXJuYXRlR3JvdXBUeXBlc10gY29udGFpbnNPYmplY3Q6QCJjbGNwIl0p
CisgICAgICAgIHJldHVybjsKKworICAgIE5TQXJyYXkgKnRyYWNrQWx0ZXJuYXRlc0FycmF5ID0g
W21fcXRNb3ZpZSBhbHRlcm5hdGVzRm9yTWVkaWFUeXBlOkAiY2xjcCJdOworICAgIFFUVHJhY2sg
KnRyYWNrID0gdHJhY2tBbHRlcm5hdGVzQXJyYXlbMF1bQCJRVEFsdGVybmF0ZXNfUVRUcmFjayJd
OworICAgIGlmICghdHJhY2spCisgICAgICAgIHJldHVybjsKKworICAgIGlmICghc2hvd0Nsb3Nl
ZENhcHRpb25zKQorICAgICAgICBbbV9xdE1vdmllIGRlc2VsZWN0QWx0ZXJuYXRlR3JvdXBUcmFj
azp0cmFja107CisgICAgZWxzZQorICAgICAgICBbbV9xdE1vdmllIHNlbGVjdEFsdGVybmF0ZUdy
b3VwVHJhY2s6dHJhY2tdOworCisgICAgaWYgKGNsb3NlZENhcHRpb25zVmlzaWJsZSAmJiBtX3F0
VmlkZW9MYXllcikgeworICAgICAgICAvLyBDYXB0aW9ucyB3aWxsIGJlIHJlbmRlcmVkIHVwc2lk
ZSBkb3duIHVubGVzcyB3ZSBmbGFnIHRoZSBtb3ZpZSBhcyBmbGlwcGVkIChhZ2FpbikuIFNlZSA8
cmRhcjovLzc0MDg0NDA+LgorICAgICAgICBbbV9xdFZpZGVvTGF5ZXIuZ2V0KCkgc2V0R2VvbWV0
cnlGbGlwcGVkOllFU107CiAgICAgfQogfQogCkBAIC05NDAsNiArOTUyLDU4IEBAIHZvaWQgTWVk
aWFQbGF5ZXJQcml2YXRlUVRLaXQ6OnByZXBhcmVGb3JSZW5kZXJpbmcoKQogICAgIGlmIChjdXJy
ZW50UmVuZGVyaW5nTW9kZSgpID09IE1lZGlhUmVuZGVyaW5nTW92aWVMYXllciB8fCBwcmVmZXJy
ZWRSZW5kZXJpbmdNb2RlKCkgPT0gTWVkaWFSZW5kZXJpbmdNb3ZpZUxheWVyKQogICAgICAgICBt
X3BsYXllci0+Y2xpZW50KCkubWVkaWFQbGF5ZXJSZW5kZXJpbmdNb2RlQ2hhbmdlZChtX3BsYXll
cik7CiB9CisgICAgCitzdGF0aWMgdm9pZCBzZWxlY3RQcmVmZXJyZWRBbHRlcm5hdGVUcmFja0Zv
ck1lZGlhVHlwZShRVE1vdmllICptb3ZpZSwgTlNTdHJpbmcgKm1lZGlhVHlwZSkKK3sKKyAgICBO
U0FycmF5ICphbHRlcm5hdGVzID0gW21vdmllIGFsdGVybmF0ZXNGb3JNZWRpYVR5cGU6bWVkaWFU
eXBlXTsKKyAgICBpZiAoIWFsdGVybmF0ZXMuY291bnQpCisgICAgICAgIHJldHVybjsKKworICAg
IGF1dG8gbGFuZ3VhZ2VUb1FUVHJhY2tNYXAgPSBhZG9wdE5TKFtbTlNNdXRhYmxlRGljdGlvbmFy
eSBhbGxvY10gaW5pdFdpdGhDYXBhY2l0eTphbHRlcm5hdGVzLmNvdW50XSk7CisKKyAgICBmb3Ig
KE5TVUludGVnZXIgaW5kZXggPSAwOyBpbmRleCA8IGFsdGVybmF0ZXMuY291bnQ7ICsraW5kZXgp
IHsKKyAgICAgICAgTlNEaWN0aW9uYXJ5ICphbHRlcm5hdGVEaWN0ID0gYWx0ZXJuYXRlc1tpbmRl
eF07CisgICAgICAgIE5TU3RyaW5nICpsYW5ndWFnZVN0cmluZyA9IGFsdGVybmF0ZURpY3RbQCJR
VEFsdGVybmF0ZXNfTGFuZ3VhZ2VDb2RlRW5jb2RpbmdfSVNPXzYzOV8yVCJdOworICAgICAgICBp
ZiAoIVtsYW5ndWFnZVN0cmluZyBjU3RyaW5nVXNpbmdFbmNvZGluZzprQ0ZTdHJpbmdFbmNvZGlu
Z0FTQ0lJXSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBpZiAoIWxhbmd1YWdlU3Ry
aW5nKQorICAgICAgICAgICAgbGFuZ3VhZ2VTdHJpbmcgPSBhbHRlcm5hdGVEaWN0W0AiUVRBbHRl
cm5hdGVzX0xhbmd1YWdlQ29kZUVuY29kaW5nX1JGQ180NjQ2Il07CisgICAgICAgIGlmICghbGFu
Z3VhZ2VTdHJpbmcpIHsKKyAgICAgICAgICAgIExhbmdDb2RlIGxhbmdDb2RlID0gYWx0ZXJuYXRl
RGljdFtAIlFUQWx0ZXJuYXRlc19MYW5ndWFnZUNvZGVFbmNvZGluZ19NYWNUeXBlX0xhbmdDb2Rl
Il0uaW50VmFsdWU7CisgICAgICAgICAgICBhdXRvIGlkZW50aWZpZXIgPSBhZG9wdENGKENGTG9j
YWxlQ3JlYXRlQ2Fub25pY2FsTG9jYWxlSWRlbnRpZmllckZyb21TY3JpcHRNYW5hZ2VyQ29kZXMo
a0NGQWxsb2NhdG9yRGVmYXVsdCwgbGFuZ0NvZGUsIDApKTsKKyAgICAgICAgICAgIGxhbmd1YWdl
U3RyaW5nID0gKE5TU3RyaW5nICopaWRlbnRpZmllci5hdXRvcmVsZWFzZSgpOworICAgICAgICB9
CisgICAgICAgIGlmICghbGFuZ3VhZ2VTdHJpbmcpCisgICAgICAgICAgICBjb250aW51ZTsKKwor
ICAgICAgICBpZCBhbHRlcm5hdGVUcmFjayA9IGFsdGVybmF0ZURpY3RbQCJRVEFsdGVybmF0ZXNf
UVRUcmFjayJdOworICAgICAgICBpZiAoIWFsdGVybmF0ZVRyYWNrKQorICAgICAgICAgICAgY29u
dGludWU7CisKKyAgICAgICAgaWYgKCFbYWx0ZXJuYXRlVHJhY2sgYXR0cmlidXRlRm9yS2V5OkAi
UVRUcmFja0VuYWJsZWRBdHRyaWJ1dGUiXS5ib29sVmFsdWUpCisgICAgICAgICAgICBjb250aW51
ZTsKKyAgICAgICAgCisgICAgICAgIFtsYW5ndWFnZVRvUVRUcmFja01hcCBzZXRPYmplY3Q6YWx0
ZXJuYXRlVHJhY2sgZm9yS2V5Omxhbmd1YWdlU3RyaW5nXTsKKyAgICB9CisgICAgCisgICAgTlNB
cnJheSAqcHJlZmVycmVkTGFuZ3VhZ2VzID0gW05TQnVuZGxlIHByZWZlcnJlZExvY2FsaXphdGlv
bnNGcm9tQXJyYXk6W2xhbmd1YWdlVG9RVFRyYWNrTWFwIGFsbEtleXNdIGZvclByZWZlcmVuY2Vz
Om5pbF07CisgICAgaWYgKHByZWZlcnJlZExhbmd1YWdlcy5jb3VudCkgeworICAgICAgICBpZCBw
cmVmZXJyZWRUcmFjayA9IFtsYW5ndWFnZVRvUVRUcmFja01hcCBvYmplY3RGb3JLZXk6cHJlZmVy
cmVkTGFuZ3VhZ2VzWzBdXTsKKyAgICAgICAgaWYgKHByZWZlcnJlZFRyYWNrKSB7CisgICAgICAg
ICAgICAvLyArW05TQnVuZGxlIHByZWZlcnJlZExvY2FsaXphdGlvbnNGcm9tQXJyYXk6Zm9yUHJl
ZmVyZW5jZXNdIG1heSByZXR1cm4gYSBsYW5ndWFnZSB3aGljaCB3YXMKKyAgICAgICAgICAgIC8v
IG5vdCBwcmVzZW50IGluIHByZWZlcnJlZExhbmd1YWdlcywgYW5kIHdpbGwgdGhlcmVmb3JlIG5v
dCBoYXZlIGFuIGFzc29jaWF0ZWQgdHJhY2suCisgICAgICAgICAgICBbbW92aWUgc2VsZWN0QWx0
ZXJuYXRlR3JvdXBUcmFjazpwcmVmZXJyZWRUcmFja107CisgICAgICAgIH0KKyAgICB9Cit9CisK
K3N0YXRpYyB2b2lkIHNlbGVjdFByZWZlcnJlZEFsdGVybmF0ZXMoUVRNb3ZpZSAqbW92aWUpCit7
CisgICAgc2VsZWN0UHJlZmVycmVkQWx0ZXJuYXRlVHJhY2tGb3JNZWRpYVR5cGUobW92aWUsIEAi
dmlkZSIpOworICAgIHNlbGVjdFByZWZlcnJlZEFsdGVybmF0ZVRyYWNrRm9yTWVkaWFUeXBlKG1v
dmllLCBAInNvdW4iKTsKKyAgICBzZWxlY3RQcmVmZXJyZWRBbHRlcm5hdGVUcmFja0Zvck1lZGlh
VHlwZShtb3ZpZSwgQCJjcGxwIik7CisgICAgc2VsZWN0UHJlZmVycmVkQWx0ZXJuYXRlVHJhY2tG
b3JNZWRpYVR5cGUobW92aWUsIEAic2J0bCIpOworfQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0
ZVFUS2l0Ojp1cGRhdGVTdGF0ZXMoKQogewpAQCAtOTY1LDcgKzEwMjksNyBAQCB2b2lkIE1lZGlh
UGxheWVyUHJpdmF0ZVFUS2l0Ojp1cGRhdGVTdGF0ZXMoKQogICAgICAgICAgICAgbG9hZFN0YXRl
ID0gUVRNb3ZpZUxvYWRTdGF0ZUVycm9yOwogCiAgICAgICAgIGlmIChsb2FkU3RhdGUgIT0gUVRN
b3ZpZUxvYWRTdGF0ZUVycm9yKSB7Ci0gICAgICAgICAgICB3a1FUTW92aWVTZWxlY3RQcmVmZXJy
ZWRBbHRlcm5hdGVzKG1fcXRNb3ZpZS5nZXQoKSk7CisgICAgICAgICAgICBzZWxlY3RQcmVmZXJy
ZWRBbHRlcm5hdGVzKG1fcXRNb3ZpZS5nZXQoKSk7CiAgICAgICAgICAgICBjYWNoZU1vdmllU2Nh
bGUoKTsKICAgICAgICAgICAgIE1lZGlhUGxheWVyOjpNb3ZpZUxvYWRUeXBlIG1vdmllVHlwZSA9
IG1vdmllTG9hZFR5cGUoKTsKICAgICAgICAgICAgIG1faXNTdHJlYW1pbmcgPSBtb3ZpZVR5cGUg
PT0gTWVkaWFQbGF5ZXI6OlN0b3JlZFN0cmVhbSB8fCBtb3ZpZVR5cGUgPT0gTWVkaWFQbGF5ZXI6
OkxpdmVTdHJlYW07CkBAIC0xMjczLDcgKzEzMzcsOCBAQCBzdGF0aWMgY29uc3QgSGFzaFNldDxT
dHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mIG1pbWVDb21tb25UeXBlc0NhY2hlKCkK
IAogc3RhdGljIGNvbnN0IEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+
JiBtaW1lTW9kZXJuVHlwZXNDYWNoZSgpCiB7Ci0gICAgc3RhdGljIGNvbnN0IGF1dG8gY2FjaGUg
PSBtYWtlTmV2ZXJEZXN0cm95ZWQoY3JlYXRlRmlsZVR5cGVzU2V0KFtRVE1vdmllIG1vdmllRmls
ZVR5cGVzOihRVE1vdmllRmlsZVR5cGVPcHRpb25zKXdrUVRJbmNsdWRlT25seU1vZGVybk1lZGlh
RmlsZVR5cGVzKCldKSk7CisgICAgc3RhdGljIFFUTW92aWVGaWxlVHlwZU9wdGlvbnMgaW5jbHVk
ZU9ubHlNb2Rlcm5NZWRpYUZpbGVUeXBlcyA9IDEgPDwgODsKKyAgICBzdGF0aWMgY29uc3QgYXV0
byBjYWNoZSA9IG1ha2VOZXZlckRlc3Ryb3llZChjcmVhdGVGaWxlVHlwZXNTZXQoW1FUTW92aWUg
bW92aWVGaWxlVHlwZXM6aW5jbHVkZU9ubHlNb2Rlcm5NZWRpYUZpbGVUeXBlc10pKTsKICAgICBy
ZXR1cm4gY2FjaGU7CiB9CiAKQEAgLTEzMjQsNyArMTM4OSw3IEBAIGJvb2wgTWVkaWFQbGF5ZXJQ
cml2YXRlUVRLaXQ6OmlzQXZhaWxhYmxlKCkKIEhhc2hTZXQ8UmVmUHRyPFNlY3VyaXR5T3JpZ2lu
Pj4gTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6Om9yaWdpbnNJbk1lZGlhQ2FjaGUoY29uc3QgU3Ry
aW5nJikKIHsKICAgICBIYXNoU2V0PFJlZlB0cjxTZWN1cml0eU9yaWdpbj4+IG9yaWdpbnM7Ci0g
ICAgTlNBcnJheSAqbWVkaWFTaXRlcyA9IHdrUVRHZXRTaXRlc0luTWVkaWFEb3dubG9hZENhY2hl
KCk7CisgICAgTlNBcnJheSAqbWVkaWFTaXRlcyA9IFtbUVRVdGlsaXRpZXMgcXRVdGlsaXRpZXNd
IHNpdGVzSW5Eb3dubG9hZENhY2hlXTsKICAgICAKICAgICBmb3IgKE5TU3RyaW5nICpzaXRlIGlu
IG1lZGlhU2l0ZXMpIHsKICAgICAgICAgVVJMIHNpdGVBc1VSTCA9IFVSTChVUkwoKSwgc2l0ZSk7
CkBAIC0xMzM3LDE0ICsxNDAyLDE0IEBAIEhhc2hTZXQ8UmVmUHRyPFNlY3VyaXR5T3JpZ2luPj4g
TWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6Om9yaWdpbnNJbk1lZGlhQ2FjaGUoY29uCiB2b2lkIE1l
ZGlhUGxheWVyUHJpdmF0ZVFUS2l0OjpjbGVhck1lZGlhQ2FjaGUoY29uc3QgU3RyaW5nJiwgc3Rk
OjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCkKIHsKICAgICBMT0coTWVkaWEsICJN
ZWRpYVBsYXllclByaXZhdGVRVEtpdDo6Y2xlYXJNZWRpYUNhY2hlKCkiKTsKLSAgICB3a1FUQ2xl
YXJNZWRpYURvd25sb2FkQ2FjaGUoKTsKKyAgICBbW1FUVXRpbGl0aWVzIHF0VXRpbGl0aWVzXSBj
bGVhckRvd25sb2FkQ2FjaGVdOwogfQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0Ojpj
bGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5zKGNvbnN0IFN0cmluZyYsIGNvbnN0IEhhc2hTZXQ8UmVm
UHRyPFNlY3VyaXR5T3JpZ2luPj4mIG9yaWdpbnMpCiB7CiAgICAgTE9HKE1lZGlhLCAiTWVkaWFQ
bGF5ZXJQcml2YXRlUVRLaXQ6OmNsZWFyTWVkaWFDYWNoZUZvck9yaWdpbnMoKSIpOwogICAgIGZv
ciAoYXV0byYgb3JpZ2luIDogb3JpZ2lucykKLSAgICAgICAgd2tRVENsZWFyTWVkaWFEb3dubG9h
ZENhY2hlRm9yU2l0ZShvcmlnaW4tPnRvUmF3U3RyaW5nKCkpOworICAgICAgICBbW1FUVXRpbGl0
aWVzIHF0VXRpbGl0aWVzXSBjbGVhckRvd25sb2FkQ2FjaGVGb3JTaXRlOm9yaWdpbi0+dG9SYXdT
dHJpbmcoKV07CiB9CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6OmRpc2FibGVVbnN1
cHBvcnRlZFRyYWNrcygpCkBAIC0xNDY4LDIzICsxNTMzLDI5IEBAIGJvb2wgTWVkaWFQbGF5ZXJQ
cml2YXRlUVRLaXQ6Omhhc1NpbmdsZVNlY3VyaXR5T3JpZ2luKCkgY29uc3QKICAgICBpZiAoIW1f
cXRNb3ZpZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgUmVmPFNlY3VyaXR5T3JpZ2lu
PiByZXNvbHZlZE9yaWdpbiA9IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoVVJMKHdrUVRNb3ZpZVJl
c29sdmVkVVJMKG1fcXRNb3ZpZS5nZXQoKSkpKTsKKyAgICBSZWY8U2VjdXJpdHlPcmlnaW4+IHJl
c29sdmVkT3JpZ2luID0gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShVUkwoW21fcXRNb3ZpZSBVUkxd
KSk7CiAgICAgUmVmPFNlY3VyaXR5T3JpZ2luPiByZXF1ZXN0ZWRPcmlnaW4gPSBTZWN1cml0eU9y
aWdpbjo6Y3JlYXRlRnJvbVN0cmluZyhtX21vdmllVVJMKTsKICAgICByZXR1cm4gcmVzb2x2ZWRP
cmlnaW4tPmlzU2FtZVNjaGVtZUhvc3RQb3J0KHJlcXVlc3RlZE9yaWdpbi5nZXQoKSk7CiB9CiAK
IE1lZGlhUGxheWVyOjpNb3ZpZUxvYWRUeXBlIE1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0Ojptb3Zp
ZUxvYWRUeXBlKCkgY29uc3QKIHsKLSAgICBpZiAoIW1fcXRNb3ZpZSkKLSAgICAgICAgcmV0dXJu
IE1lZGlhUGxheWVyOjpVbmtub3duOwotCi0gICAgTWVkaWFQbGF5ZXI6Ok1vdmllTG9hZFR5cGUg
bW92aWVUeXBlID0gKE1lZGlhUGxheWVyOjpNb3ZpZUxvYWRUeXBlKXdrUVRNb3ZpZUdldFR5cGUo
bV9xdE1vdmllLmdldCgpKTsKLQotICAgIC8vIENhbid0IGluY2x1ZGUgV2ViS2l0U3lzdGVtSW50
ZXJmYWNlIGZyb20gV2ViQ29yZSBzbyB3ZSBjYW4ndCBnZXQgdGhlIGVudW0gcmV0dXJuZWQKLSAg
ICAvLyBieSB3a1FUTW92aWVHZXRUeXBlLCBidXQgYXQgbGVhc3QgdmVyaWZ5IHRoYXQgdGhlIHZh
bHVlIGlzIGluIHRoZSB2YWxpZCByYW5nZS4KLSAgICBBU1NFUlQobW92aWVUeXBlID49IE1lZGlh
UGxheWVyOjpVbmtub3duICYmIG1vdmllVHlwZSA8PSBNZWRpYVBsYXllcjo6TGl2ZVN0cmVhbSk7
Ci0KLSAgICByZXR1cm4gbW92aWVUeXBlOworICAgIGlmICghbW92aWUpCisgICAgICAgIHJldHVy
biBNZWRpYVBsYXllcjo6TW92aWVMb2FkVHlwZTo6VW5rbm93bjsKKworICAgIFVJbnQzMiBtb3Zp
ZVR5cGUgPSBtb3ZpZS5tb3ZpZVR5cGU7CisgICAgc3dpdGNoIChtb3ZpZVR5cGUpIHsKKyAgICBj
YXNlIFFUTW92aWVUeXBlTG9jYWw6CisgICAgY2FzZSBRVE1vdmllVHlwZUZhc3RTdGFydDoKKyAg
ICAgICAgcmV0dXJuIE1lZGlhUGxheWVyOjpNb3ZpZUxvYWRUeXBlOjpEb3dubG9hZDsKKyAgICBj
YXNlIFFUTW92aWVUeXBlTGl2ZVN0cmVhbToKKyAgICAgICAgcmV0dXJuIE1lZGlhUGxheWVyOjpN
b3ZpZUxvYWRUeXBlOjpMaXZlU3RyZWFtOworICAgIGNhc2UgUVRNb3ZpZVR5cGVTdG9yZWRTdHJl
YW06CisgICAgICAgIHJldHVybiBNZWRpYVBsYXllcjo6TW92aWVMb2FkVHlwZTo6U3RvcmVkU3Ry
ZWFtOworICAgIGNhc2UgUVRNb3ZpZVR5cGVVbmtub3duOgorICAgIGRlZmF1bHQ6CisgICAgICAg
IHJldHVybiBNZWRpYVBsYXllcjo6TW92aWVMb2FkVHlwZTo6VW5rbm93bjsKKyAgICB9CiB9CiAK
IHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6OnNldFByZWxvYWQoTWVkaWFQbGF5ZXI6OlBy
ZWxvYWQgcHJlbG9hZCkKQEAgLTE1MTUsNyArMTU4Niw3IEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2
YXRlUVRLaXQ6OmNhblNhdmVNZWRpYURhdGEoKSBjb25zdAogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKICAgICBpZiAobV9xdE1vdmllKQotICAgICAgICB1cmwgPSBVUkwod2tRVE1vdmllUmVzb2x2
ZWRVUkwobV9xdE1vdmllLmdldCgpKSk7CisgICAgICAgIHVybCA9IFVSTChbbV9xdE1vdmllIFVS
TF0pOwogICAgIGVsc2UKICAgICAgICAgdXJsID0gVVJMKFBhcnNlZFVSTFN0cmluZywgbV9tb3Zp
ZVVSTCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3Jl
U3lzdGVtSW50ZXJmYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZVN5
c3RlbUludGVyZmFjZS5oCmluZGV4IDIzZmYyM2ZjZjQ1OGI0MDc4OWIwMmUwYWVjMTJiMjAwMDEx
ZmM1YmIuLmY2NzU5NTA5YTExZmNlMzM0MTNmZTY5MDMzYTQ2ODU2ZjU5NzQ1NTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2Uu
aApAQCAtMTMxLDMyICsxMzEsNyBAQCBleHRlcm4gZG91YmxlICgqd2tHZXROU1VSTFJlc3BvbnNl
Q2FsY3VsYXRlZEV4cGlyYXRpb24pKE5TVVJMUmVzcG9uc2UgKnJlc3BvbnNlKQogZXh0ZXJuIEJP
T0wgKCp3a0dldE5TVVJMUmVzcG9uc2VNdXN0UmV2YWxpZGF0ZSkoTlNVUkxSZXNwb25zZSAqcmVz
cG9uc2UpOwogZXh0ZXJuIEJPT0wgKCp3a0hpdFRlc3RNZWRpYVVJUGFydCkoaW50IHBhcnQsIENH
UmVjdCBib3VuZHMsIENHUG9pbnQgcG9pbnQpOwogZXh0ZXJuIHZvaWQgKCp3a01lYXN1cmVNZWRp
YVVJUGFydCkoaW50IHBhcnQsIENHUmVjdCAqYm91bmRzLCBDR1NpemUgKm5hdHVyYWxTaXplKTsK
LWV4dGVybiBOU1ZpZXcgKigqd2tDcmVhdGVNZWRpYVVJQmFja2dyb3VuZFZpZXcpKHZvaWQpOwog
Ci10eXBlZGVmIGVudW0gewotICAgIHdrTWVkaWFVSUNvbnRyb2xUaW1lbGluZSwKLSAgICB3a01l
ZGlhVUlDb250cm9sU2xpZGVyLAotICAgIHdrTWVkaWFVSUNvbnRyb2xQbGF5UGF1c2VCdXR0b24s
Ci0gICAgd2tNZWRpYVVJQ29udHJvbEV4aXRGdWxsc2NyZWVuQnV0dG9uLAotICAgIHdrTWVkaWFV
SUNvbnRyb2xSZXdpbmRCdXR0b24sCi0gICAgd2tNZWRpYVVJQ29udHJvbEZhc3RGb3J3YXJkQnV0
dG9uLAotICAgIHdrTWVkaWFVSUNvbnRyb2xWb2x1bWVVcEJ1dHRvbiwKLSAgICB3a01lZGlhVUlD
b250cm9sVm9sdW1lRG93bkJ1dHRvbgotfSB3a01lZGlhVUlDb250cm9sVHlwZTsKLWV4dGVybiBO
U0NvbnRyb2wgKigqd2tDcmVhdGVNZWRpYVVJQ29udHJvbCkoaW50KTsKLQotZXh0ZXJuIHVuc2ln
bmVkICgqd2tRVEluY2x1ZGVPbmx5TW9kZXJuTWVkaWFGaWxlVHlwZXMpKHZvaWQpOwotZXh0ZXJu
IHZvaWQgKCp3a1FUTW92aWVEaXNhYmxlQ29tcG9uZW50KSh1aW50MzJfdFs1XSk7Ci1leHRlcm4g
ZmxvYXQgKCp3a1FUTW92aWVNYXhUaW1lTG9hZGVkKShRVE1vdmllKik7Ci1leHRlcm4gTlNTdHJp
bmcgKigqd2tRVE1vdmllTWF4VGltZUxvYWRlZENoYW5nZU5vdGlmaWNhdGlvbikodm9pZCk7Ci1l
eHRlcm4gaW50ICgqd2tRVE1vdmllR2V0VHlwZSkoUVRNb3ZpZSopOwotZXh0ZXJuIEJPT0wgKCp3
a1FUTW92aWVIYXNDbG9zZWRDYXB0aW9ucykoUVRNb3ZpZSopOwotZXh0ZXJuIE5TVVJMICooKndr
UVRNb3ZpZVJlc29sdmVkVVJMKShRVE1vdmllKik7Ci1leHRlcm4gdm9pZCAoKndrUVRNb3ZpZVNl
dFNob3dDbG9zZWRDYXB0aW9ucykoUVRNb3ZpZSosIEJPT0wpOwotZXh0ZXJuIHZvaWQgKCp3a1FU
TW92aWVTZWxlY3RQcmVmZXJyZWRBbHRlcm5hdGVzKShRVE1vdmllKik7Ci1leHRlcm4gTlNBcnJh
eSAqKCp3a1FUR2V0U2l0ZXNJbk1lZGlhRG93bmxvYWRDYWNoZSkoKTsKLWV4dGVybiB2b2lkICgq
d2tRVENsZWFyTWVkaWFEb3dubG9hZENhY2hlRm9yU2l0ZSkoTlNTdHJpbmcgKnNpdGUpOwotZXh0
ZXJuIHZvaWQgKCp3a1FUQ2xlYXJNZWRpYURvd25sb2FkQ2FjaGUpKCk7CiBleHRlcm4gdm9pZCAo
KndrU2V0Q29va2llU3RvcmFnZVByaXZhdGVCcm93c2luZ0VuYWJsZWQpKEJPT0wpOwogI2VuZGlm
CiBleHRlcm4gdm9pZCAoKndrU2V0Q09OTkVDVFByb3h5Rm9yU3RyZWFtKShDRlJlYWRTdHJlYW1S
ZWYsIENGU3RyaW5nUmVmIHByb3h5SG9zdCwgQ0ZOdW1iZXJSZWYgcHJveHlQb3J0KTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNl
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2Uu
bW0KaW5kZXggYzcyM2Q3NDRiMDQ2ZDIxMGZhYWIyMmMyYTQxZGRmMDI0NjNkYTkzZi4uMmVhYmQ0
ZjE0ZjM5MzM2ZTMzNDBjZThlZGVlMzdlNDgyZGQ2ODAyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2UubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2UubW0KQEAgLTM2LDIz
ICszNiw5IEBAIHZvaWQgKCp3a0RyYXdNZWRpYVNsaWRlclRyYWNrKShDR0NvbnRleHRSZWYgY29u
dGV4dCwgQ0dSZWN0IHJlY3QsIGZsb2F0IHRpbWVMb2FkCiBCT09MICgqd2tIaXRUZXN0TWVkaWFV
SVBhcnQpKGludCBwYXJ0LCBDR1JlY3QgYm91bmRzLCBDR1BvaW50IHBvaW50KTsKIHZvaWQgKCp3
a0RyYXdNZWRpYVVJUGFydCkoaW50IHBhcnQsIENHQ29udGV4dFJlZiBjb250ZXh0LCBDR1JlY3Qg
cmVjdCwgdW5zaWduZWQgc3RhdGUpOwogdm9pZCAoKndrTWVhc3VyZU1lZGlhVUlQYXJ0KShpbnQg
cGFydCwgQ0dSZWN0ICpib3VuZHMsIENHU2l6ZSAqbmF0dXJhbFNpemUpOwotTlNWaWV3ICooKndr
Q3JlYXRlTWVkaWFVSUJhY2tncm91bmRWaWV3KSh2b2lkKTsKLU5TQ29udHJvbCAqKCp3a0NyZWF0
ZU1lZGlhVUlDb250cm9sKShpbnQpOwogTlNUaW1lSW50ZXJ2YWwgKCp3a0dldE5TVVJMUmVzcG9u
c2VDYWxjdWxhdGVkRXhwaXJhdGlvbikoTlNVUkxSZXNwb25zZSAqcmVzcG9uc2UpOwogQk9PTCAo
KndrR2V0TlNVUkxSZXNwb25zZU11c3RSZXZhbGlkYXRlKShOU1VSTFJlc3BvbnNlICpyZXNwb25z
ZSk7CiB2b2lkICgqd2tQb3B1cE1lbnUpKE5TTWVudSosIE5TUG9pbnQgbG9jYXRpb24sIGZsb2F0
IHdpZHRoLCBOU1ZpZXcqLCBpbnQgc2VsZWN0ZWRJdGVtLCBOU0ZvbnQqLCBOU0NvbnRyb2xTaXpl
IGNvbnRyb2xTaXplLCBib29sIHVzZXNDdXN0b21BcHBlYXJhbmNlKTsKLXVuc2lnbmVkICgqd2tR
VEluY2x1ZGVPbmx5TW9kZXJuTWVkaWFGaWxlVHlwZXMpKHZvaWQpOwotdm9pZCAoKndrUVRNb3Zp
ZURpc2FibGVDb21wb25lbnQpKHVpbnQzMl90WzVdKTsKLWZsb2F0ICgqd2tRVE1vdmllTWF4VGlt
ZUxvYWRlZCkoUVRNb3ZpZSopOwotTlNTdHJpbmcgKigqd2tRVE1vdmllTWF4VGltZUxvYWRlZENo
YW5nZU5vdGlmaWNhdGlvbikodm9pZCk7Ci1pbnQgKCp3a1FUTW92aWVHZXRUeXBlKShRVE1vdmll
Kik7Ci1CT09MICgqd2tRVE1vdmllSGFzQ2xvc2VkQ2FwdGlvbnMpKFFUTW92aWUqKTsKLU5TVVJM
ICooKndrUVRNb3ZpZVJlc29sdmVkVVJMKShRVE1vdmllKik7Ci12b2lkICgqd2tRVE1vdmllU2V0
U2hvd0Nsb3NlZENhcHRpb25zKShRVE1vdmllKiwgQk9PTCk7Ci12b2lkICgqd2tRVE1vdmllU2Vs
ZWN0UHJlZmVycmVkQWx0ZXJuYXRlcykoUVRNb3ZpZSopOwotTlNBcnJheSAqKCp3a1FUR2V0U2l0
ZXNJbk1lZGlhRG93bmxvYWRDYWNoZSkoKTsKLXZvaWQgKCp3a1FUQ2xlYXJNZWRpYURvd25sb2Fk
Q2FjaGVGb3JTaXRlKShOU1N0cmluZyAqc2l0ZSk7Ci12b2lkICgqd2tRVENsZWFyTWVkaWFEb3du
bG9hZENhY2hlKSgpOwogCiB2b2lkICgqd2tTZXRDT05ORUNUUHJveHlGb3JTdHJlYW0pKENGUmVh
ZFN0cmVhbVJlZiwgQ0ZTdHJpbmdSZWYgcHJveHlIb3N0LCBDRk51bWJlclJlZiBwcm94eVBvcnQp
Owogdm9pZCAoKndrU2V0Q09OTkVDVFByb3h5QXV0aG9yaXphdGlvbkZvclN0cmVhbSkoQ0ZSZWFk
U3RyZWFtUmVmLCBDRlN0cmluZ1JlZiBwcm94eUF1dGhvcml6YXRpb25TdHJpbmcpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYlZpZGVvRnVsbHNjcmVlbkhVRFdp
bmRvd0NvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViVmlkZW9G
dWxsc2NyZWVuSFVEV2luZG93Q29udHJvbGxlci5tbQppbmRleCBlZmI2ZTJiMjczYzU4MzUxMzNl
NzViMTYyNmE5NWIwNDkwYzc3OTljLi5mYzBmNTEwYzdhMmNiMjQ5NzhkMDRhMGM0ODA2ZWQ0Yzcx
YzUzMjAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViVmlkZW9G
dWxsc2NyZWVuSFVEV2luZG93Q29udHJvbGxlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tYWMvV2ViVmlkZW9GdWxsc2NyZWVuSFVEV2luZG93Q29udHJvbGxlci5tbQpAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAxNiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAxNyBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMx
LDkgKzMxLDM4IEBACiAjaW1wb3J0IDxXZWJDb3JlL0hUTUxWaWRlb0VsZW1lbnQuaD4KICNpbXBv
cnQgPFdlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaD4KICNpbXBvcnQgPHBhbC9zcGkvY2cvQ29yZUdy
YXBoaWNzU1BJLmg+CisjaW1wb3J0IDxwYWwvc3BpL21hYy9RVEtpdFNQSS5oPgorI2ltcG9ydCA8
d3RmL1NvZnRMaW5raW5nLmg+CisKK1NPRlRfTElOS19GUkFNRVdPUksoUVRLaXQpCisKK1NPRlRf
TElOS19DTEFTUyhRVEtpdCwgUVRIVURCYWNrZ3JvdW5kVmlldykKK1NPRlRfTElOS19DTEFTUyhR
VEtpdCwgUVRIVURCdXR0b24pCitTT0ZUX0xJTktfQ0xBU1MoUVRLaXQsIFFUSFVEU2xpZGVyKQor
U09GVF9MSU5LX0NMQVNTKFFUS2l0LCBRVEhVRFRpbWVsaW5lKQorCisjZGVmaW5lIFFUSFVEQmFj
a2dyb3VuZFZpZXcgZ2V0UVRIVURCYWNrZ3JvdW5kVmlld0NsYXNzKCkKKyNkZWZpbmUgUVRIVURC
dXR0b24gZ2V0UVRIVURCdXR0b25DbGFzcygpCisjZGVmaW5lIFFUSFVEU2xpZGVyIGdldFFUSFVE
U2xpZGVyQ2xhc3MoKQorI2RlZmluZSBRVEhVRFRpbWVsaW5lIGdldFFUSFVEVGltZWxpbmVDbGFz
cygpCiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K2VudW0gY2xhc3MgTWVkaWFVSUNvbnRyb2wgeworICAgIFRpbWVsaW5lLAorICAgIFNsaWRlciwK
KyAgICBQbGF5UGF1c2VCdXR0b24sCisgICAgRXhpdEZ1bGxzY3JlZW5CdXR0b24sCisgICAgUmV3
aW5kQnV0dG9uLAorICAgIEZhc3RGb3J3YXJkQnV0dG9uLAorICAgIFZvbHVtZVVwQnV0dG9uLAor
ICAgIFZvbHVtZURvd25CdXR0b24sCit9OworCit9CisKIEBpbnRlcmZhY2UgV2ViVmlkZW9GdWxs
c2NyZWVuSFVEV2luZG93Q29udHJvbGxlciAoUHJpdmF0ZSkgPE5TV2luZG93RGVsZWdhdGU+CiAK
IC0gKHZvaWQpdXBkYXRlVGltZTsKQEAgLTI2NSwxMCArMjk0LDY4IEBAIC0gKHZvaWQpY2xvc2VX
aW5kb3cKICAgICBbc2VsZiBzZXRXaW5kb3c6bmlsXTsKIH0KIAotc3RhdGljIE5TQ29udHJvbCAq
Y3JlYXRlQ29udHJvbFdpdGhNZWRpYVVJQ29udHJvbFR5cGUoaW50IGNvbnRyb2xUeXBlLCBOU1Jl
Y3QgZnJhbWUpCitzdGF0aWMgTlNDb250cm9sICpjcmVhdGVNZWRpYVVJQ29udHJvbChNZWRpYVVJ
Q29udHJvbCBjb250cm9sVHlwZSkKK3sKKyAgICBzd2l0Y2ggKGNvbnRyb2xUeXBlKSB7CisgICAg
Y2FzZSBNZWRpYVVJQ29udHJvbDo6VGltZWxpbmU6IHsKKyAgICAgICAgTlNTbGlkZXIgKnNsaWRl
ciA9IFtbUVRIVURUaW1lbGluZSBhbGxvY10gaW5pdF07CisgICAgICAgIFtbc2xpZGVyIGNlbGxd
IHNldENvbnRpbnVvdXM6WUVTXTsKKyAgICAgICAgcmV0dXJuIHNsaWRlcjsKKyAgICB9CisgICAg
Y2FzZSBNZWRpYVVJQ29udHJvbDo6U2xpZGVyOiB7CisgICAgICAgIE5TQnV0dG9uICpzbGlkZXIg
PSBbW1FUSFVEU2xpZGVyIGFsbG9jXSBpbml0XTsKKyAgICAgICAgW1tzbGlkZXIgY2VsbF0gc2V0
Q29udGludW91czpZRVNdOworICAgICAgICByZXR1cm4gc2xpZGVyOworICAgIH0KKyAgICBjYXNl
IE1lZGlhVUlDb250cm9sOjpQbGF5UGF1c2VCdXR0b246IHsKKyAgICAgICAgTlNCdXR0b24gKmJ1
dHRvbiA9IFtbUVRIVURCdXR0b24gYWxsb2NdIGluaXRdOworICAgICAgICBbYnV0dG9uIHNldElt
YWdlOltOU0ltYWdlIGltYWdlTmFtZWQ6QCJOU1BsYXlUZW1wbGF0ZSJdXTsKKyAgICAgICAgW2J1
dHRvbiBzZXRBbHRlcm5hdGVJbWFnZTpbTlNJbWFnZSBpbWFnZU5hbWVkOkAiTlNQYXVzZVFUUHJp
dmF0ZVRlbXBsYXRlIl1dOworCisgICAgICAgIFtbYnV0dG9uIGNlbGxdIHNldFNob3dzU3RhdGVC
eTpOU0NvbnRlbnRzQ2VsbE1hc2tdOworICAgICAgICBbYnV0dG9uIHNldEJvcmRlcmVkOk5PXTsK
KyAgICAgICAgcmV0dXJuIGJ1dHRvbjsKKyAgICB9CisgICAgY2FzZSBNZWRpYVVJQ29udHJvbDo6
RXhpdEZ1bGxzY3JlZW5CdXR0b246IHsKKyAgICAgICAgTlNCdXR0b24gKmJ1dHRvbiA9IFtbUVRI
VURCdXR0b24gYWxsb2NdIGluaXRdOworICAgICAgICBbYnV0dG9uIHNldEltYWdlOltOU0ltYWdl
IGltYWdlTmFtZWQ6QCJOU0V4aXRGdWxsU2NyZWVuVGVtcGxhdGUiXV07CisgICAgICAgIFtidXR0
b24gc2V0Qm9yZGVyZWQ6Tk9dOworICAgICAgICByZXR1cm4gYnV0dG9uOworICAgIH0KKyAgICBj
YXNlIE1lZGlhVUlDb250cm9sOjpSZXdpbmRCdXR0b246IHsKKyAgICAgICAgTlNCdXR0b24gKmJ1
dHRvbiA9IFtbUVRIVURCdXR0b24gYWxsb2NdIGluaXRdOworICAgICAgICBbYnV0dG9uIHNldElt
YWdlOltOU0ltYWdlIGltYWdlTmFtZWQ6QCJOU1Jld2luZFRlbXBsYXRlIl1dOworICAgICAgICBb
YnV0dG9uIHNldEJvcmRlcmVkOk5PXTsKKyAgICAgICAgcmV0dXJuIGJ1dHRvbjsKKyAgICB9Cisg
ICAgY2FzZSBNZWRpYVVJQ29udHJvbDo6RmFzdEZvcndhcmRCdXR0b246IHsKKyAgICAgICAgTlNC
dXR0b24gKmJ1dHRvbiA9IFtbUVRIVURCdXR0b24gYWxsb2NdIGluaXRdOworICAgICAgICBbYnV0
dG9uIHNldEltYWdlOltOU0ltYWdlIGltYWdlTmFtZWQ6QCJOU0Zhc3RGb3J3YXJkVGVtcGxhdGUi
XV07CisgICAgICAgIFtidXR0b24gc2V0Qm9yZGVyZWQ6Tk9dOworICAgICAgICByZXR1cm4gYnV0
dG9uOworICAgIH0KKyAgICBjYXNlIE1lZGlhVUlDb250cm9sOjpWb2x1bWVVcEJ1dHRvbjogewor
ICAgICAgICBOU0J1dHRvbiAqYnV0dG9uID0gW1tRVEhVREJ1dHRvbiBhbGxvY10gaW5pdF07Cisg
ICAgICAgIFtidXR0b24gc2V0SW1hZ2U6W05TSW1hZ2UgaW1hZ2VOYW1lZDpAIk5TQXVkaW9PdXRw
dXRWb2x1bWVIaWdoVGVtcGxhdGUiXV07CisgICAgICAgIFtidXR0b24gc2V0Qm9yZGVyZWQ6Tk9d
OworICAgICAgICByZXR1cm4gYnV0dG9uOworICAgIH0KKyAgICBjYXNlIE1lZGlhVUlDb250cm9s
OjpWb2x1bWVEb3duQnV0dG9uOiB7CisgICAgICAgIE5TQnV0dG9uICpidXR0b24gPSBbW1FUSFVE
QnV0dG9uIGFsbG9jXSBpbml0XTsKKyAgICAgICAgW2J1dHRvbiBzZXRJbWFnZTpbTlNJbWFnZSBp
bWFnZU5hbWVkOkAiTlNBdWRpb091dHB1dFZvbHVtZUxvd1RlbXBsYXRlIl1dOworICAgICAgICBb
YnV0dG9uIHNldEJvcmRlcmVkOk5PXTsKKyAgICAgICAgcmV0dXJuIGJ1dHRvbjsKKyAgICB9Cisg
ICAgfQorCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIG5pbDsKK30KKwor
c3RhdGljIE5TQ29udHJvbCAqY3JlYXRlQ29udHJvbFdpdGhNZWRpYVVJQ29udHJvbFR5cGUoTWVk
aWFVSUNvbnRyb2wgY29udHJvbFR5cGUsIE5TUmVjdCBmcmFtZSkKIHsKLSAgICBOU0NvbnRyb2wg
KmNvbnRyb2wgPSB3a0NyZWF0ZU1lZGlhVUlDb250cm9sKGNvbnRyb2xUeXBlKTsKLSAgICBbY29u
dHJvbCBzZXRGcmFtZTpmcmFtZV07CisgICAgTlNDb250cm9sICpjb250cm9sID0gY3JlYXRlTWVk
aWFVSUNvbnRyb2woY29udHJvbFR5cGUpOworICAgIGNvbnRyb2wuZnJhbWUgPSBmcmFtZTsKICAg
ICByZXR1cm4gY29udHJvbDsKIH0KIApAQCAtMjg1LDYgKzM3MiwyMSBAQCBzdGF0aWMgTlNUZXh0
RmllbGQgKmNyZWF0ZVRpbWVUZXh0RmllbGQoTlNSZWN0IGZyYW1lKQogICAgIHJldHVybiB0ZXh0
RmllbGQ7CiB9CiAKK3N0YXRpYyBOU1ZpZXcgKmNyZWF0ZU1lZGlhVUlCYWNrZ3JvdW5kVmlldygp
Cit7CisgICAgaWQgdmlldyA9IFtbUVRIVURCYWNrZ3JvdW5kVmlldyBhbGxvY10gaW5pdF07CisK
KyAgICBjb25zdCBDR0Zsb2F0IHF1aWNrVGltZVBsYXllckhVREhlaWdodCA9IDU5OworICAgIGNv
bnN0IENHRmxvYXQgcXVpY2tUaW1lUGxheWVySFVEQ29udGVudEJvcmRlclBvc2l0aW9uID0gMzg7
CisKKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwdXNoCisjcHJhZ21hIGNsYW5nIGRpYWdub3N0
aWMgaWdub3JlZCAiLVdkZXByZWNhdGVkLWRlY2xhcmF0aW9ucyIKKyAgICBbdmlldyBzZXRDb250
ZW50Qm9yZGVyUG9zaXRpb246cXVpY2tUaW1lUGxheWVySFVEQ29udGVudEJvcmRlclBvc2l0aW9u
IC8gcXVpY2tUaW1lUGxheWVySFVESGVpZ2h0XTsKKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBw
b3AKKworICAgIHJldHVybiB2aWV3OworfQorCiAtICh2b2lkKXdpbmRvd0RpZExvYWQKIHsKICAg
ICBzdGF0aWMgY29uc3QgQ0dGbG9hdCBob3Jpem9udGFsTWFyZ2luID0gMTA7CkBAIC0zMTAsNyAr
NDEyLDcgQEAgLSAodm9pZCl3aW5kb3dEaWRMb2FkCiAgICAgTlNXaW5kb3cgKndpbmRvdyA9IFtz
ZWxmIHdpbmRvd107CiAgICAgQVNTRVJUKHdpbmRvdyk7CiAKLSAgICBOU1ZpZXcgKmJhY2tncm91
bmQgPSB3a0NyZWF0ZU1lZGlhVUlCYWNrZ3JvdW5kVmlldygpOworICAgIE5TVmlldyAqYmFja2dy
b3VuZCA9IGNyZWF0ZU1lZGlhVUlCYWNrZ3JvdW5kVmlldygpOwogCiAgICAgW3dpbmRvdyBzZXRD
b250ZW50VmlldzpiYWNrZ3JvdW5kXTsKICAgICBfYXJlYSA9IFtbTlNUcmFja2luZ0FyZWEgYWxs
b2NdIGluaXRXaXRoUmVjdDpbYmFja2dyb3VuZCBib3VuZHNdIG9wdGlvbnM6TlNUcmFja2luZ01v
dXNlRW50ZXJlZEFuZEV4aXRlZCB8IE5TVHJhY2tpbmdBY3RpdmVBbHdheXMgb3duZXI6c2VsZiB1
c2VySW5mbzpuaWxdOwpAQCAtMzIwLDE0ICs0MjIsMTQgQEAgLSAodm9pZCl3aW5kb3dEaWRMb2Fk
CiAgICAgTlNWaWV3ICpjb250ZW50VmlldyA9IFt3aW5kb3cgY29udGVudFZpZXddOwogCiAgICAg
Q0dGbG9hdCBjZW50ZXIgPSBDR0Zsb29yKCh3aW5kb3dXaWR0aCAtIHBsYXlCdXR0b25XaWR0aCkg
LyAyKTsKLSAgICBfcGxheUJ1dHRvbiA9IChOU0J1dHRvbiAqKWNyZWF0ZUNvbnRyb2xXaXRoTWVk
aWFVSUNvbnRyb2xUeXBlKHdrTWVkaWFVSUNvbnRyb2xQbGF5UGF1c2VCdXR0b24sIE5TTWFrZVJl
Y3QoY2VudGVyLCB3aW5kb3dIZWlnaHQgLSBwbGF5QnV0dG9uVG9wTWFyZ2luIC0gcGxheUJ1dHRv
bkhlaWdodCwgcGxheUJ1dHRvbldpZHRoLCBwbGF5QnV0dG9uSGVpZ2h0KSk7CisgICAgX3BsYXlC
dXR0b24gPSAoTlNCdXR0b24gKiljcmVhdGVDb250cm9sV2l0aE1lZGlhVUlDb250cm9sVHlwZShN
ZWRpYVVJQ29udHJvbDo6UGxheVBhdXNlQnV0dG9uLCBOU01ha2VSZWN0KGNlbnRlciwgd2luZG93
SGVpZ2h0IC0gcGxheUJ1dHRvblRvcE1hcmdpbiAtIHBsYXlCdXR0b25IZWlnaHQsIHBsYXlCdXR0
b25XaWR0aCwgcGxheUJ1dHRvbkhlaWdodCkpOwogICAgIEFTU0VSVChbX3BsYXlCdXR0b24gaXNL
aW5kT2ZDbGFzczpbTlNCdXR0b24gY2xhc3NdXSk7CiAgICAgW19wbGF5QnV0dG9uIHNldFRhcmdl
dDpzZWxmXTsKICAgICBbX3BsYXlCdXR0b24gc2V0QWN0aW9uOkBzZWxlY3Rvcih0b2dnbGVQbGF5
aW5nOildOwogICAgIFtjb250ZW50VmlldyBhZGRTdWJ2aWV3Ol9wbGF5QnV0dG9uXTsKIAogICAg
IENHRmxvYXQgY2xvc2VUb1JpZ2h0ID0gd2luZG93V2lkdGggLSBob3Jpem9udGFsTWFyZ2luIC0g
ZXhpdEZ1bGxzY3JlZW5CdXR0b25XaWR0aDsKLSAgICBOU0NvbnRyb2wgKmV4aXRGdWxsc2NyZWVu
QnV0dG9uID0gY3JlYXRlQ29udHJvbFdpdGhNZWRpYVVJQ29udHJvbFR5cGUod2tNZWRpYVVJQ29u
dHJvbEV4aXRGdWxsc2NyZWVuQnV0dG9uLCBOU01ha2VSZWN0KGNsb3NlVG9SaWdodCwgd2luZG93
SGVpZ2h0IC0gZXhpdEZ1bGxzY3JlZW5CdXR0b25Ub3BNYXJnaW4gLSBleGl0RnVsbHNjcmVlbkJ1
dHRvbkhlaWdodCwgZXhpdEZ1bGxzY3JlZW5CdXR0b25XaWR0aCwgZXhpdEZ1bGxzY3JlZW5CdXR0
b25IZWlnaHQpKTsKKyAgICBOU0NvbnRyb2wgKmV4aXRGdWxsc2NyZWVuQnV0dG9uID0gY3JlYXRl
Q29udHJvbFdpdGhNZWRpYVVJQ29udHJvbFR5cGUoTWVkaWFVSUNvbnRyb2w6OkV4aXRGdWxsc2Ny
ZWVuQnV0dG9uLCBOU01ha2VSZWN0KGNsb3NlVG9SaWdodCwgd2luZG93SGVpZ2h0IC0gZXhpdEZ1
bGxzY3JlZW5CdXR0b25Ub3BNYXJnaW4gLSBleGl0RnVsbHNjcmVlbkJ1dHRvbkhlaWdodCwgZXhp
dEZ1bGxzY3JlZW5CdXR0b25XaWR0aCwgZXhpdEZ1bGxzY3JlZW5CdXR0b25IZWlnaHQpKTsKICAg
ICBbZXhpdEZ1bGxzY3JlZW5CdXR0b24gc2V0QWN0aW9uOkBzZWxlY3RvcihleGl0RnVsbHNjcmVl
bjopXTsKICAgICBbZXhpdEZ1bGxzY3JlZW5CdXR0b24gc2V0VGFyZ2V0OnNlbGZdOwogICAgIFtj
b250ZW50VmlldyBhZGRTdWJ2aWV3OmV4aXRGdWxsc2NyZWVuQnV0dG9uXTsKQEAgLTMzNSwyNyAr
NDM3LDI3IEBAIC0gKHZvaWQpd2luZG93RGlkTG9hZAogICAgIAogICAgIENHRmxvYXQgdm9sdW1l
Q29udHJvbHNCb3R0b20gPSB3aW5kb3dIZWlnaHQgLSB2b2x1bWVDb250cm9sc1RvcE1hcmdpbiAt
IHZvbHVtZUJ1dHRvbkhlaWdodDsKICAgICBDR0Zsb2F0IGxlZnQgPSBob3Jpem9udGFsTWFyZ2lu
OwotICAgIE5TQ29udHJvbCAqdm9sdW1lRG93bkJ1dHRvbiA9IGNyZWF0ZUNvbnRyb2xXaXRoTWVk
aWFVSUNvbnRyb2xUeXBlKHdrTWVkaWFVSUNvbnRyb2xWb2x1bWVEb3duQnV0dG9uLCBOU01ha2VS
ZWN0KGxlZnQsIHZvbHVtZUNvbnRyb2xzQm90dG9tLCB2b2x1bWVCdXR0b25XaWR0aCwgdm9sdW1l
QnV0dG9uSGVpZ2h0KSk7CisgICAgTlNDb250cm9sICp2b2x1bWVEb3duQnV0dG9uID0gY3JlYXRl
Q29udHJvbFdpdGhNZWRpYVVJQ29udHJvbFR5cGUoTWVkaWFVSUNvbnRyb2w6OlZvbHVtZURvd25C
dXR0b24sIE5TTWFrZVJlY3QobGVmdCwgdm9sdW1lQ29udHJvbHNCb3R0b20sIHZvbHVtZUJ1dHRv
bldpZHRoLCB2b2x1bWVCdXR0b25IZWlnaHQpKTsKICAgICBbY29udGVudFZpZXcgYWRkU3Vidmll
dzp2b2x1bWVEb3duQnV0dG9uXTsKICAgICBbdm9sdW1lRG93bkJ1dHRvbiBzZXRUYXJnZXQ6c2Vs
Zl07CiAgICAgW3ZvbHVtZURvd25CdXR0b24gc2V0QWN0aW9uOkBzZWxlY3RvcihzZXRWb2x1bWVU
b1plcm86KV07CiAgICAgW3ZvbHVtZURvd25CdXR0b24gcmVsZWFzZV07CiAKICAgICBsZWZ0ICs9
IHZvbHVtZUJ1dHRvbldpZHRoOwotICAgIF92b2x1bWVTbGlkZXIgPSBjcmVhdGVDb250cm9sV2l0
aE1lZGlhVUlDb250cm9sVHlwZSh3a01lZGlhVUlDb250cm9sU2xpZGVyLCBOU01ha2VSZWN0KGxl
ZnQsIHZvbHVtZUNvbnRyb2xzQm90dG9tICsgQ0dGbG9vcigodm9sdW1lQnV0dG9uSGVpZ2h0IC0g
dm9sdW1lU2xpZGVySGVpZ2h0KSAvIDIpLCB2b2x1bWVTbGlkZXJXaWR0aCwgdm9sdW1lU2xpZGVy
SGVpZ2h0KSk7CisgICAgX3ZvbHVtZVNsaWRlciA9IGNyZWF0ZUNvbnRyb2xXaXRoTWVkaWFVSUNv
bnRyb2xUeXBlKE1lZGlhVUlDb250cm9sOjpTbGlkZXIsIE5TTWFrZVJlY3QobGVmdCwgdm9sdW1l
Q29udHJvbHNCb3R0b20gKyBDR0Zsb29yKCh2b2x1bWVCdXR0b25IZWlnaHQgLSB2b2x1bWVTbGlk
ZXJIZWlnaHQpIC8gMiksIHZvbHVtZVNsaWRlcldpZHRoLCB2b2x1bWVTbGlkZXJIZWlnaHQpKTsK
ICAgICBbX3ZvbHVtZVNsaWRlciBzZXRWYWx1ZTpbTlNOdW1iZXIgbnVtYmVyV2l0aERvdWJsZTpb
c2VsZiBtYXhWb2x1bWVdXSBmb3JLZXk6QCJtYXhWYWx1ZSJdOwogICAgIFtfdm9sdW1lU2xpZGVy
IHNldFRhcmdldDpzZWxmXTsKICAgICBbX3ZvbHVtZVNsaWRlciBzZXRBY3Rpb246QHNlbGVjdG9y
KHZvbHVtZUNoYW5nZWQ6KV07CiAgICAgW2NvbnRlbnRWaWV3IGFkZFN1YnZpZXc6X3ZvbHVtZVNs
aWRlcl07CiAKICAgICBsZWZ0ICs9IHZvbHVtZVNsaWRlcldpZHRoICsgdm9sdW1lVXBCdXR0b25M
ZWZ0TWFyZ2luOwotICAgIE5TQ29udHJvbCAqdm9sdW1lVXBCdXR0b24gPSBjcmVhdGVDb250cm9s
V2l0aE1lZGlhVUlDb250cm9sVHlwZSh3a01lZGlhVUlDb250cm9sVm9sdW1lVXBCdXR0b24sIE5T
TWFrZVJlY3QobGVmdCwgdm9sdW1lQ29udHJvbHNCb3R0b20sIHZvbHVtZUJ1dHRvbldpZHRoLCB2
b2x1bWVCdXR0b25IZWlnaHQpKTsKKyAgICBOU0NvbnRyb2wgKnZvbHVtZVVwQnV0dG9uID0gY3Jl
YXRlQ29udHJvbFdpdGhNZWRpYVVJQ29udHJvbFR5cGUoTWVkaWFVSUNvbnRyb2w6OlZvbHVtZVVw
QnV0dG9uLCBOU01ha2VSZWN0KGxlZnQsIHZvbHVtZUNvbnRyb2xzQm90dG9tLCB2b2x1bWVCdXR0
b25XaWR0aCwgdm9sdW1lQnV0dG9uSGVpZ2h0KSk7CiAgICAgW3ZvbHVtZVVwQnV0dG9uIHNldFRh
cmdldDpzZWxmXTsKICAgICBbdm9sdW1lVXBCdXR0b24gc2V0QWN0aW9uOkBzZWxlY3RvcihzZXRW
b2x1bWVUb01heGltdW06KV07CiAgICAgW2NvbnRlbnRWaWV3IGFkZFN1YnZpZXc6dm9sdW1lVXBC
dXR0b25dOwogICAgIFt2b2x1bWVVcEJ1dHRvbiByZWxlYXNlXTsKIAotICAgIF90aW1lbGluZSA9
IHdrQ3JlYXRlTWVkaWFVSUNvbnRyb2wod2tNZWRpYVVJQ29udHJvbFRpbWVsaW5lKTsKKyAgICBf
dGltZWxpbmUgPSBjcmVhdGVNZWRpYVVJQ29udHJvbChNZWRpYVVJQ29udHJvbDo6VGltZWxpbmUp
OwogCiAgICAgW190aW1lbGluZSBzZXRUYXJnZXQ6c2VsZl07CiAgICAgW190aW1lbGluZSBzZXRB
Y3Rpb246QHNlbGVjdG9yKHRpbWVsaW5lUG9zaXRpb25DaGFuZ2VkOildOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJTeXN0ZW1JbnRl
cmZhY2UubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dl
YlN5c3RlbUludGVyZmFjZS5tbQppbmRleCAwZGRkNTcxNDU5Yjg1NmYzOTIwNWUxMTBjYzAwY2Nj
YWVlM2ZkMGVlLi5iZGE1ZDczZGZjMTIyZjNlMDIyM2FhYWU1NTI4NGQ0YjM5ZTU3M2NlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYlN5
c3RlbUludGVyZmFjZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvbWFjL1dlYlN5c3RlbUludGVyZmFjZS5tbQpAQCAtNDMsMTggKzQzLDYgQEAgdm9pZCBJ
bml0V2ViQ29yZVN5c3RlbUludGVyZmFjZSh2b2lkKQogICAgICAgICBJTklUKERyYXdNZWRpYVVJ
UGFydCk7CiAgICAgICAgIElOSVQoSGl0VGVzdE1lZGlhVUlQYXJ0KTsKICAgICAgICAgSU5JVChN
ZWFzdXJlTWVkaWFVSVBhcnQpOwotICAgICAgICBJTklUKFFUSW5jbHVkZU9ubHlNb2Rlcm5NZWRp
YUZpbGVUeXBlcyk7Ci0gICAgICAgIElOSVQoUVRNb3ZpZURpc2FibGVDb21wb25lbnQpOwotICAg
ICAgICBJTklUKFFUTW92aWVHZXRUeXBlKTsKLSAgICAgICAgSU5JVChRVE1vdmllSGFzQ2xvc2Vk
Q2FwdGlvbnMpOwotICAgICAgICBJTklUKFFUTW92aWVNYXhUaW1lTG9hZGVkKTsKLSAgICAgICAg
SU5JVChRVE1vdmllTWF4VGltZUxvYWRlZENoYW5nZU5vdGlmaWNhdGlvbik7Ci0gICAgICAgIElO
SVQoUVRNb3ZpZVJlc29sdmVkVVJMKTsKLSAgICAgICAgSU5JVChRVE1vdmllU2VsZWN0UHJlZmVy
cmVkQWx0ZXJuYXRlcyk7Ci0gICAgICAgIElOSVQoUVRNb3ZpZVNldFNob3dDbG9zZWRDYXB0aW9u
cyk7Ci0gICAgICAgIElOSVQoUVRHZXRTaXRlc0luTWVkaWFEb3dubG9hZENhY2hlKTsKLSAgICAg
ICAgSU5JVChRVENsZWFyTWVkaWFEb3dubG9hZENhY2hlRm9yU2l0ZSk7Ci0gICAgICAgIElOSVQo
UVRDbGVhck1lZGlhRG93bmxvYWRDYWNoZSk7CiAjZW5kaWYKICAgICAgICAgSU5JVChTZXRDT05O
RUNUUHJveHlBdXRob3JpemF0aW9uRm9yU3RyZWFtKTsKICAgICAgICAgSU5JVChTZXRDT05ORUNU
UHJveHlGb3JTdHJlYW0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViU3lzdGVtSW50ZXJmYWNlLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViU3lzdGVtSW50ZXJmYWNlLm1tCmluZGV4IGEzMjAyNDUzN2Nh
ZTc3NDA0ZDEyMmEzYTM4NTRkM2MyZTdiYTI0OTAuLjE3NDY1ODZiMjQyZjUyZTA3YTk5ZmU5MTVh
YTZiNGY2MmEzYmM1ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYlN5c3RlbUludGVyZmFjZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJTeXN0ZW1JbnRlcmZhY2UubW0KQEAgLTQ5LDI1ICs0OSw5
IEBAIHZvaWQgSW5pdFdlYkNvcmVTeXN0ZW1JbnRlcmZhY2Uodm9pZCkKICAgICBJTklUKERyYXdN
ZWRpYVNsaWRlclRyYWNrKTsKICAgICBJTklUKEhpdFRlc3RNZWRpYVVJUGFydCk7CiAgICAgSU5J
VChNZWFzdXJlTWVkaWFVSVBhcnQpOwotICAgIElOSVQoQ3JlYXRlTWVkaWFVSUJhY2tncm91bmRW
aWV3KTsKLSAgICBJTklUKENyZWF0ZU1lZGlhVUlDb250cm9sKTsKICNlbmRpZgogICAgIElOSVQo
U2V0Q09OTkVDVFByb3h5QXV0aG9yaXphdGlvbkZvclN0cmVhbSk7CiAgICAgSU5JVChTZXRDT05O
RUNUUHJveHlGb3JTdHJlYW0pOwotI2lmIEVOQUJMRShWSURFTykgJiYgIVBMQVRGT1JNKElPUykK
LSAgICBJTklUKFFUSW5jbHVkZU9ubHlNb2Rlcm5NZWRpYUZpbGVUeXBlcyk7Ci0gICAgSU5JVChR
VE1vdmllRGlzYWJsZUNvbXBvbmVudCk7Ci0gICAgSU5JVChRVE1vdmllTWF4VGltZUxvYWRlZCk7
Ci0gICAgSU5JVChRVE1vdmllTWF4VGltZUxvYWRlZENoYW5nZU5vdGlmaWNhdGlvbik7Ci0gICAg
SU5JVChRVE1vdmllR2V0VHlwZSk7Ci0gICAgSU5JVChRVE1vdmllSGFzQ2xvc2VkQ2FwdGlvbnMp
OwotICAgIElOSVQoUVRNb3ZpZVJlc29sdmVkVVJMKTsKLSAgICBJTklUKFFUTW92aWVTZXRTaG93
Q2xvc2VkQ2FwdGlvbnMpOwotICAgIElOSVQoUVRNb3ZpZVNlbGVjdFByZWZlcnJlZEFsdGVybmF0
ZXMpOwotICAgIElOSVQoUVRHZXRTaXRlc0luTWVkaWFEb3dubG9hZENhY2hlKTsKLSAgICBJTklU
KFFUQ2xlYXJNZWRpYURvd25sb2FkQ2FjaGVGb3JTaXRlKTsKLSAgICBJTklUKFFUQ2xlYXJNZWRp
YURvd25sb2FkQ2FjaGUpOwotI2VuZGlmCiAKICNpZiAhUExBVEZPUk0oSU9TKQogICAgIElOSVQo
RXhlY3V0YWJsZVdhc0xpbmtlZE9uT3JCZWZvcmVTbm93TGVvcGFyZCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>320129</attachid>
            <date>2017-09-07 10:31:00 -0700</date>
            <delta_ts>2017-09-07 10:53:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-176472-20170907103059.patch</filename>
            <type>text/plain</type>
            <size>34116</size>
            <attacher name="Andy Estes">aestes</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIxNjg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDY5MjY5MTkxOTNmNWE2
MjdjNmRiYzQyNDFiYTVlY2M3ZDdhNmU3NC4uYWUyODQ1OTMzYzJlNDk2MTVhYTMyOWE1OWI3YTky
YTc0NjNkZmVlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDE3LTA5LTA2ICBBbmR5
IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBbTWFjXSBVcHN0cmVhbSBRVEtp
dC1yZWxhdGVkIFdlYktpdFN5c3RlbUludGVyZmFjZSBmdW5jdGlvbnMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NjQ3MgorCisgICAgICAgIFJldmll
d2VkIGJ5IEVyaWMgQ2FybHNvbi4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9N
ZWRpYVBsYXllclByaXZhdGVRVEtpdC5tbToKKyAgICAgICAgKFdlYkNvcmU6OmRpc2FibGVDb21w
b25lbnRzT25jZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6
Y3JlYXRlUVRNb3ZpZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVRVEtp
dDo6aGFzQ2xvc2VkQ2FwdGlvbnMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5
ZXJQcml2YXRlUVRLaXQ6OnNldENsb3NlZENhcHRpb25zVmlzaWJsZSk6CisgICAgICAgIChXZWJD
b3JlOjpzZWxlY3RQcmVmZXJyZWRBbHRlcm5hdGVUcmFja0Zvck1lZGlhVHlwZSk6CisgICAgICAg
IChXZWJDb3JlOjpzZWxlY3RQcmVmZXJyZWRBbHRlcm5hdGVzKToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0Ojp1cGRhdGVTdGF0ZXMpOgorICAgICAgICAoV2ViQ29y
ZTo6bWltZU1vZGVyblR5cGVzQ2FjaGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQ
cml2YXRlUVRLaXQ6Om9yaWdpbnNJbk1lZGlhQ2FjaGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFQbGF5ZXJQcml2YXRlUVRLaXQ6OmNsZWFyTWVkaWFDYWNoZSk6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6Y2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2lucyk6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6aGFzU2luZ2xlU2VjdXJp
dHlPcmlnaW4gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlUVRL
aXQ6Om1vdmllTG9hZFR5cGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQ
cml2YXRlUVRLaXQ6OmNhblNhdmVNZWRpYURhdGEgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3Jt
L21hYy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmg6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1dl
YkNvcmVTeXN0ZW1JbnRlcmZhY2UubW06CisgICAgICAgICogcGxhdGZvcm0vbWFjL1dlYlZpZGVv
RnVsbHNjcmVlbkhVRFdpbmRvd0NvbnRyb2xsZXIubW06CisgICAgICAgIChjcmVhdGVNZWRpYVVJ
Q29udHJvbCk6CisgICAgICAgIChjcmVhdGVDb250cm9sV2l0aE1lZGlhVUlDb250cm9sVHlwZSk6
CisgICAgICAgIChjcmVhdGVNZWRpYVVJQmFja2dyb3VuZFZpZXcpOgorICAgICAgICAoLVtXZWJW
aWRlb0Z1bGxzY3JlZW5IVURXaW5kb3dDb250cm9sbGVyIHdpbmRvd0RpZExvYWRdKToKKwogMjAx
Ny0wOS0wNiAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgogCiAgICAgICAgIFJFR1JFU1NJ
T04gKHIyMjE1OTgpOiBMZWdhY3kgInJvdW5kIiBhbmQgImJldmVsIiBvcHRpb25zIGNhbiBubyBs
b25nZXIgYmUgdXNlZCB3aXRoIHRoZSBsZWdhY3kgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEIHNl
dExpbmVKb2luIG9wZXJhdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKaW5kZXggZWU0MGU0NjE3NTU5NmJj
NTIyZjMxN2M2YzU5OGRiMDg0YzE3M2M1Ni4uZWVhNzkwNWM1ZWRjMDNhYTgxNzgwMWZjM2NkMGNh
OTAxMjg4MzhiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTctMDkt
MDYgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29tPgorCisgICAgICAgIFtNYWNdIFVwc3Ry
ZWFtIFFUS2l0LXJlbGF0ZWQgV2ViS2l0U3lzdGVtSW50ZXJmYWNlIGZ1bmN0aW9ucworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc2NDcyCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgRXJpYyBDYXJsc29uLgorCisgICAgICAgICogcGFsL3NwaS9tYWMvUVRL
aXRTUEkuaDoKKwogMjAxNy0wOS0wNCAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtp
dC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjIyMTQ5NCBhbmQgcjIy
MTUwMC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKaW5kZXggMzY0ZDhlNWQ4MGQyNTVkNjkzNmZiMmUxYTBiZDQ2MzdhYjU5YTA2
ZS4uZjY3NjU3MTZjZDQ5YzZhMDBjNmY5OWU3ZTQwZjg3NTgyNTg4MjdhOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxMyBAQAorMjAxNy0wOS0wNiAgQW5keSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+
CisKKyAgICAgICAgW01hY10gVXBzdHJlYW0gUVRLaXQtcmVsYXRlZCBXZWJLaXRTeXN0ZW1JbnRl
cmZhY2UgZnVuY3Rpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNzY0NzIKKworICAgICAgICBSZXZpZXdlZCBieSBFcmljIENhcmxzb24uCisKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJTeXN0ZW1JbnRlcmZhY2Uu
bW06CisgICAgICAgIChJbml0V2ViQ29yZVN5c3RlbUludGVyZmFjZSk6CisKIDIwMTctMDktMDYg
IEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CiAKICAgICAgICAgRGVueSB0aGly
ZC1wYXJ0eSBjb29raWUgY3JlYXRpb24gZm9yIHByZXZhbGVudCByZXNvdXJjZXMgd2l0aG91dCBp
bnRlcmFjdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4IDdlNTFlYmFmNmJmZjhl
ZmIxZmNjY2Q4MWQyODQwZmY3MmI0NGM1ZTguLjBhZDdhMmE3MzIxNzY1ZDY0ZWVhYThiYzM2OGYw
M2RiODIzNGQzNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBA
QAorMjAxNy0wOS0wNiAgQW5keSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+CisKKyAgICAgICAg
W01hY10gVXBzdHJlYW0gUVRLaXQtcmVsYXRlZCBXZWJLaXRTeXN0ZW1JbnRlcmZhY2UgZnVuY3Rp
b25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzY0
NzIKKworICAgICAgICBSZXZpZXdlZCBieSBFcmljIENhcmxzb24uCisKKyAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9XZWJTeXN0ZW1JbnRlcmZhY2UubW06CisgICAgICAgIChJbml0V2ViQ29yZVN5
c3RlbUludGVyZmFjZSk6CisKIDIwMTctMDktMDUgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRv
bkBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIHNvbWUgdW51c2VkIGJpdHMgb2YgY29kZSBh
bmQgcmVzb3VyY2VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9tYWMv
UVRLaXRTUEkuaCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL21hYy9RVEtpdFNQSS5oCmlu
ZGV4IDcxNzg5Y2RmMjVkYThhZjQwNGI3MGE0Y2I1MTljMWNhM2Q4NTJlMmYuLjEzYjFlYTFkMmM3
Y2EzZGExMTI4MjRjZjA0MzEwMDM5OTdhNWYzMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1BBTC9wYWwvc3BpL21hYy9RVEtpdFNQSS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwv
c3BpL21hYy9RVEtpdFNQSS5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTYtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTI1LDggKzI1LDEyIEBACiAKICNwcmFnbWEgb25jZQogCi0jaWYg
VVNFKEFQUExFX0lOVEVSTkFMX1NESykgfHwgX19NQUNfT1NfWF9WRVJTSU9OX01BWF9BTExPV0VE
IDwgMTAxMjAwCi0jaW1wb3J0IDxRVEtpdC9RVEtpdC5oPgorI2lmIFVTRShBUFBMRV9JTlRFUk5B
TF9TREspCisKKyNpbXBvcnQgPFFUS2l0L1FUSFVEQmFja2dyb3VuZFZpZXdfUHJpdmF0ZS5oPgor
I2ltcG9ydCA8UVRLaXQvUVRLaXRfUHJpdmF0ZS5oPgorI2ltcG9ydCA8UVRLaXQvUVRVdGlsaXRp
ZXNfUHJpdmF0ZS5oPgorCiAjZWxzZQogCiBlbnVtIHsKQEAgLTQ4LDYgKzUyLDE2IEBAIHR5cGVk
ZWYgZW51bSB7CiAgICAgUVRJbmNsdWRlQ29tbW9uVHlwZXMgPSAwLAogfSBRVE1vdmllRmlsZVR5
cGVPcHRpb25zOwogCitlbnVtIHsKKyAgICBRVE1vdmllVHlwZVVua25vd24gPSAwLAorICAgIFFU
TW92aWVUeXBlTG9jYWwsCisgICAgUVRNb3ZpZVR5cGVGYXN0U3RhcnQsCisgICAgUVRNb3ZpZVR5
cGVMaXZlU3RyZWFtLAorICAgIFFUTW92aWVUeXBlU3RvcmVkU3RyZWFtCit9OworCitAY2xhc3Mg
UVRUcmFjazsKKwogQGludGVyZmFjZSBRVE1lZGlhIDogTlNPYmplY3QKIAogLSAoaWQpYXR0cmli
dXRlRm9yS2V5OihOU1N0cmluZyAqKWF0dHJpYnV0ZUtleTsKQEAgLTU4LDYgKzcyLDggQEAgdHlw
ZWRlZiBlbnVtIHsKIAogKyAoTlNBcnJheSAqKW1vdmllRmlsZVR5cGVzOihRVE1vdmllRmlsZVR5
cGVPcHRpb25zKXR5cGVzOwogCisrICh2b2lkKWRpc2FibGVDb21wb25lbnQ6KENvbXBvbmVudERl
c2NyaXB0aW9uKWNvbXBvbmVudDsKKwogLSAoaWQpaW5pdFdpdGhBdHRyaWJ1dGVzOihOU0RpY3Rp
b25hcnkgKilhdHRyaWJ1dGVzIGVycm9yOihOU0Vycm9yICoqKWVycm9yUHRyOwogCiAtICh2b2lk
KXBsYXk7CkBAIC04MSw2ICs5NywxMSBAQCB0eXBlZGVmIGVudW0gewogCiAtIChOU0FycmF5ICop
dHJhY2tzOwogCistIChOU0FycmF5ICopYWx0ZXJuYXRlR3JvdXBUeXBlczsKKy0gKE5TQXJyYXkg
KilhbHRlcm5hdGVzRm9yTWVkaWFUeXBlOihOU1N0cmluZyAqKXR5cGU7CistICh2b2lkKWRlc2Vs
ZWN0QWx0ZXJuYXRlR3JvdXBUcmFjazooUVRUcmFjayAqKWFsdGVybmF0ZVRyYWNrOworLSAodm9p
ZClzZWxlY3RBbHRlcm5hdGVHcm91cFRyYWNrOihRVFRyYWNrICopYWx0ZXJuYXRlVHJhY2s7CisK
IEBlbmQKIAogQGludGVyZmFjZSBRVE1vdmllTGF5ZXIgOiBDQUxheWVyCkBAIC0xMDYsNCArMTI3
LDIwIEBAIHR5cGVkZWYgZW51bSB7CiAKIEBlbmQKIAorQGludGVyZmFjZSBRVEhVREJhY2tncm91
bmRWaWV3IDogTlNWaWV3CisKKy0gKHZvaWQpc2V0Q29udGVudEJvcmRlclBvc2l0aW9uOihDR0Zs
b2F0KWNvbnRlbnRCb3JkZXJQb3NpdGlvbjsKKworQGVuZAorCitAaW50ZXJmYWNlIFFUVXRpbGl0
aWVzIDogTlNPYmplY3QKKworKyAoaWQpcXRVdGlsaXRpZXM7CisKKy0gKE5TQXJyYXkgKilzaXRl
c0luRG93bmxvYWRDYWNoZTsKKy0gKHZvaWQpY2xlYXJEb3dubG9hZENhY2hlOworLSAodm9pZClj
bGVhckRvd25sb2FkQ2FjaGVGb3JTaXRlOihOU1N0cmluZyAqKXNpdGU7CisKK0BlbmQKKwogI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvTWVk
aWFQbGF5ZXJQcml2YXRlUVRLaXQubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9tYWMvTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQubW0KaW5kZXggODVjZjU2MWQ3MzMxNzk2NzZl
Y2Y4ZTlmZGFhMzZmYzBlN2U1OGIwMS4uNGMxZDZkYWY4MTgzMzA1YTAxMTMyMzA0ZTgxNWJmYjk2
NTAyYjVmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFj
L01lZGlhUGxheWVyUHJpdmF0ZVFUS2l0Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL21hYy9NZWRpYVBsYXllclByaXZhdGVRVEtpdC5tbQpAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAsIDIwMTEgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA3LTIwMTcgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC01Miw2ICs1Miw3IEBAIFNPRlRfTElOSyhRVEtpdCwgUVRNYWtlVGltZSwgUVRUaW1l
LCAobG9uZyBsb25nIHRpbWVWYWx1ZSwgbG9uZyB0aW1lU2NhbGUpLCAodGltCiAKIFNPRlRfTElO
S19DTEFTUyhRVEtpdCwgUVRNb3ZpZSkKIFNPRlRfTElOS19DTEFTUyhRVEtpdCwgUVRNb3ZpZUxh
eWVyKQorU09GVF9MSU5LX0NMQVNTKFFUS2l0LCBRVFV0aWxpdGllcykKIAogU09GVF9MSU5LX1BP
SU5URVIoUVRLaXQsIFFUVHJhY2tNZWRpYVR5cGVBdHRyaWJ1dGUsIE5TU3RyaW5nICopCiBTT0ZU
X0xJTktfUE9JTlRFUihRVEtpdCwgUVRNZWRpYVR5cGVBdHRyaWJ1dGUsIE5TU3RyaW5nICopCkBA
IC03MSw2ICs3Miw3IEBAIFNPRlRfTElOS19QT0lOVEVSKFFUS2l0LCBRVE1vdmllSXNBY3RpdmVB
dHRyaWJ1dGUsIE5TU3RyaW5nICopCiBTT0ZUX0xJTktfUE9JTlRFUihRVEtpdCwgUVRNb3ZpZUxv
YWRTdGF0ZUF0dHJpYnV0ZSwgTlNTdHJpbmcgKikKIFNPRlRfTElOS19QT0lOVEVSKFFUS2l0LCBR
VE1vdmllTG9hZFN0YXRlRXJyb3JBdHRyaWJ1dGUsIE5TU3RyaW5nICopCiBTT0ZUX0xJTktfUE9J
TlRFUihRVEtpdCwgUVRNb3ZpZUxvYWRTdGF0ZURpZENoYW5nZU5vdGlmaWNhdGlvbiwgTlNTdHJp
bmcgKikKK1NPRlRfTElOS19QT0lOVEVSKFFUS2l0LCBRVE1vdmllTG9hZGVkUmFuZ2VzRGlkQ2hh
bmdlTm90aWZpY2F0aW9uLCBOU1N0cmluZyAqKTsKIFNPRlRfTElOS19QT0lOVEVSKFFUS2l0LCBR
VE1vdmllTmF0dXJhbFNpemVBdHRyaWJ1dGUsIE5TU3RyaW5nICopCiBTT0ZUX0xJTktfUE9JTlRF
UihRVEtpdCwgUVRNb3ZpZUN1cnJlbnRTaXplQXR0cmlidXRlLCBOU1N0cmluZyAqKQogU09GVF9M
SU5LX1BPSU5URVIoUVRLaXQsIFFUTW92aWVQcmV2ZW50RXh0ZXJuYWxVUkxMaW5rc0F0dHJpYnV0
ZSwgTlNTdHJpbmcgKikKQEAgLTk3LDYgKzk5LDcgQEAgQGVuZAogCiAjZGVmaW5lIFFUTW92aWUg
Z2V0UVRNb3ZpZUNsYXNzKCkKICNkZWZpbmUgUVRNb3ZpZUxheWVyIGdldFFUTW92aWVMYXllckNs
YXNzKCkKKyNkZWZpbmUgUVRVdGlsaXRpZXMgZ2V0UVRVdGlsaXRpZXNDbGFzcygpCiAKICNkZWZp
bmUgUVRUcmFja01lZGlhVHlwZUF0dHJpYnV0ZSBnZXRRVFRyYWNrTWVkaWFUeXBlQXR0cmlidXRl
KCkKICNkZWZpbmUgUVRNZWRpYVR5cGVBdHRyaWJ1dGUgZ2V0UVRNZWRpYVR5cGVBdHRyaWJ1dGUo
KQpAQCAtMTE2LDYgKzExOSw3IEBAIEBlbmQKICNkZWZpbmUgUVRNb3ZpZUxvYWRTdGF0ZUF0dHJp
YnV0ZSBnZXRRVE1vdmllTG9hZFN0YXRlQXR0cmlidXRlKCkKICNkZWZpbmUgUVRNb3ZpZUxvYWRT
dGF0ZUVycm9yQXR0cmlidXRlIGdldFFUTW92aWVMb2FkU3RhdGVFcnJvckF0dHJpYnV0ZSgpCiAj
ZGVmaW5lIFFUTW92aWVMb2FkU3RhdGVEaWRDaGFuZ2VOb3RpZmljYXRpb24gZ2V0UVRNb3ZpZUxv
YWRTdGF0ZURpZENoYW5nZU5vdGlmaWNhdGlvbigpCisjZGVmaW5lIFFUTW92aWVMb2FkZWRSYW5n
ZXNEaWRDaGFuZ2VOb3RpZmljYXRpb24gZ2V0UVRNb3ZpZUxvYWRlZFJhbmdlc0RpZENoYW5nZU5v
dGlmaWNhdGlvbigpCiAjZGVmaW5lIFFUTW92aWVOYXR1cmFsU2l6ZUF0dHJpYnV0ZSBnZXRRVE1v
dmllTmF0dXJhbFNpemVBdHRyaWJ1dGUoKQogI2RlZmluZSBRVE1vdmllQ3VycmVudFNpemVBdHRy
aWJ1dGUgZ2V0UVRNb3ZpZUN1cnJlbnRTaXplQXR0cmlidXRlKCkKICNkZWZpbmUgUVRNb3ZpZVBy
ZXZlbnRFeHRlcm5hbFVSTExpbmtzQXR0cmlidXRlIGdldFFUTW92aWVQcmV2ZW50RXh0ZXJuYWxV
UkxMaW5rc0F0dHJpYnV0ZSgpCkBAIC0zMDcsNyArMzExLDcgQEAgc3RhdGljIHZvaWQgZGlzYWJs
ZUNvbXBvbmVudHNPbmNlKCkKICAgICB9OwogCiAgICAgZm9yIChhdXRvJiBjb21wb25lbnQgOiBj
b21wb25lbnRzVG9EaXNhYmxlKQotICAgICAgICB3a1FUTW92aWVEaXNhYmxlQ29tcG9uZW50KGNv
bXBvbmVudCk7CisgICAgICAgIFtRVE1vdmllIGRpc2FibGVDb21wb25lbnQ6KENvbXBvbmVudERl
c2NyaXB0aW9uKWNvbXBvbmVudF07CiB9CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6
OmNyZWF0ZVFUTW92aWUoTlNVUkwgKnVybCwgTlNEaWN0aW9uYXJ5ICptb3ZpZUF0dHJpYnV0ZXMp
CkBAIC0zNDUsMTQgKzM0OSwxMCBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0OjpjcmVh
dGVRVE1vdmllKE5TVVJMICp1cmwsIE5TRGljdGlvbmFyeSAqbW92aWVBdHRyaQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYmplY3Q6bV9xdE1vdmllLmdl
dCgpXTsKIAogICAgIC8vIEluIHVwZGF0ZVN0YXRlKCksIHdlIHRyYWNrIHdoZW4gbWF4VGltZUxv
YWRlZCgpID09IGR1cmF0aW9uKCkuCi0gICAgLy8gSW4gbmV3ZXIgdmVyc2lvbiBvZiBRdWlja1Rp
bWUsIGEgbm90aWZpY2F0aW9uIGlzIGVtaXR0ZWQgd2hlbiBtYXhUaW1lTG9hZGVkIGNoYW5nZXMu
Ci0gICAgLy8gSW4gb2xkZXIgdmVyc2lvbiBvZiBRdWlja1RpbWUsIFFUTW92aWVMb2FkU3RhdGVE
aWRDaGFuZ2VOb3RpZmljYXRpb24gYmUgZmlyZWQuCi0gICAgaWYgKE5TU3RyaW5nICptYXhUaW1l
TG9hZGVkQ2hhbmdlTm90aWZpY2F0aW9uID0gd2tRVE1vdmllTWF4VGltZUxvYWRlZENoYW5nZU5v
dGlmaWNhdGlvbigpKSB7Ci0gICAgICAgIFtbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENl
bnRlcl0gYWRkT2JzZXJ2ZXI6bV9vYmpjT2JzZXJ2ZXIuZ2V0KCkKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RvcjpAc2VsZWN0b3IobG9hZGVk
UmFuZ2VzQ2hhbmdlZDopCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG5hbWU6bWF4VGltZUxvYWRlZENoYW5nZU5vdGlmaWNhdGlvbgotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2JqZWN0Om1fcXRN
b3ZpZS5nZXQoKV07ICAgICAgICAKLSAgICB9CisgICAgW1tOU05vdGlmaWNhdGlvbkNlbnRlciBk
ZWZhdWx0Q2VudGVyXSBhZGRPYnNlcnZlcjptX29iamNPYnNlcnZlci5nZXQoKQorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0b3I6QHNlbGVjdG9yKGxv
YWRlZFJhbmdlc0NoYW5nZWQ6KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG5hbWU6UVRNb3ZpZUxvYWRlZFJhbmdlc0RpZENoYW5nZU5vdGlmaWNhdGlv
bgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYmplY3Q6
bV9xdE1vdmllLmdldCgpXTsKIAogICAgIFtbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENl
bnRlcl0gYWRkT2JzZXJ2ZXI6bV9vYmpjT2JzZXJ2ZXIuZ2V0KCkKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdG9yOkBzZWxlY3RvcihyYXRlQ2hhbmdl
ZDopIApAQCAtNzcxLDE4ICs3NzEsMzAgQEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6
aGFzQ2xvc2VkQ2FwdGlvbnMoKSBjb25zdAogewogICAgIGlmICghbWV0YURhdGFBdmFpbGFibGUo
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiB3a1FUTW92aWVIYXNDbG9zZWRD
YXB0aW9ucyhtX3F0TW92aWUuZ2V0KCkpOyAgCisgICAgcmV0dXJuIFtbbV9xdE1vdmllIGFsdGVy
bmF0ZUdyb3VwVHlwZXNdIGNvbnRhaW5zT2JqZWN0OkAiY2xjcCJdOwogfQogCiB2b2lkIE1lZGlh
UGxheWVyUHJpdmF0ZVFUS2l0OjpzZXRDbG9zZWRDYXB0aW9uc1Zpc2libGUoYm9vbCBjbG9zZWRD
YXB0aW9uc1Zpc2libGUpCiB7Ci0gICAgaWYgKG1ldGFEYXRhQXZhaWxhYmxlKCkpIHsKLSAgICAg
ICAgd2tRVE1vdmllU2V0U2hvd0Nsb3NlZENhcHRpb25zKG1fcXRNb3ZpZS5nZXQoKSwgY2xvc2Vk
Q2FwdGlvbnNWaXNpYmxlKTsKKyAgICBpZiAoIW1ldGFEYXRhQXZhaWxhYmxlKCkpCisgICAgICAg
IHJldHVybjsKIAotICAgICAgICBpZiAoY2xvc2VkQ2FwdGlvbnNWaXNpYmxlICYmIG1fcXRWaWRl
b0xheWVyKSB7Ci0gICAgICAgICAgICAvLyBDYXB0aW9ucyB3aWxsIGJlIHJlbmRlcmVkIHVwc2lk
ZSBkb3duIHVubGVzcyB3ZSBmbGFnIHRoZSBtb3ZpZSBhcyBmbGlwcGVkIChhZ2FpbikuIFNlZSA8
cmRhcjovLzc0MDg0NDA+LgotICAgICAgICAgICAgW21fcXRWaWRlb0xheWVyLmdldCgpIHNldEdl
b21ldHJ5RmxpcHBlZDpZRVNdOwotICAgICAgICB9CisgICAgaWYgKCFbW21fcXRNb3ZpZSBhbHRl
cm5hdGVHcm91cFR5cGVzXSBjb250YWluc09iamVjdDpAImNsY3AiXSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgTlNBcnJheSAqdHJhY2tBbHRlcm5hdGVzQXJyYXkgPSBbbV9xdE1vdmllIGFsdGVy
bmF0ZXNGb3JNZWRpYVR5cGU6QCJjbGNwIl07CisgICAgUVRUcmFjayAqdHJhY2sgPSB0cmFja0Fs
dGVybmF0ZXNBcnJheVswXVtAIlFUQWx0ZXJuYXRlc19RVFRyYWNrIl07CisgICAgaWYgKCF0cmFj
aykKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKCFjbG9zZWRDYXB0aW9uc1Zpc2libGUpCisg
ICAgICAgIFttX3F0TW92aWUgZGVzZWxlY3RBbHRlcm5hdGVHcm91cFRyYWNrOnRyYWNrXTsKKyAg
ICBlbHNlCisgICAgICAgIFttX3F0TW92aWUgc2VsZWN0QWx0ZXJuYXRlR3JvdXBUcmFjazp0cmFj
a107CisKKyAgICBpZiAoY2xvc2VkQ2FwdGlvbnNWaXNpYmxlICYmIG1fcXRWaWRlb0xheWVyKSB7
CisgICAgICAgIC8vIENhcHRpb25zIHdpbGwgYmUgcmVuZGVyZWQgdXBzaWRlIGRvd24gdW5sZXNz
IHdlIGZsYWcgdGhlIG1vdmllIGFzIGZsaXBwZWQgKGFnYWluKS4gU2VlIDxyZGFyOi8vNzQwODQ0
MD4uCisgICAgICAgIFttX3F0VmlkZW9MYXllci5nZXQoKSBzZXRHZW9tZXRyeUZsaXBwZWQ6WUVT
XTsKICAgICB9CiB9CiAKQEAgLTk0MCw2ICs5NTIsNTggQEAgdm9pZCBNZWRpYVBsYXllclByaXZh
dGVRVEtpdDo6cHJlcGFyZUZvclJlbmRlcmluZygpCiAgICAgaWYgKGN1cnJlbnRSZW5kZXJpbmdN
b2RlKCkgPT0gTWVkaWFSZW5kZXJpbmdNb3ZpZUxheWVyIHx8IHByZWZlcnJlZFJlbmRlcmluZ01v
ZGUoKSA9PSBNZWRpYVJlbmRlcmluZ01vdmllTGF5ZXIpCiAgICAgICAgIG1fcGxheWVyLT5jbGll
bnQoKS5tZWRpYVBsYXllclJlbmRlcmluZ01vZGVDaGFuZ2VkKG1fcGxheWVyKTsKIH0KKyAgICAK
K3N0YXRpYyB2b2lkIHNlbGVjdFByZWZlcnJlZEFsdGVybmF0ZVRyYWNrRm9yTWVkaWFUeXBlKFFU
TW92aWUgKm1vdmllLCBOU1N0cmluZyAqbWVkaWFUeXBlKQoreworICAgIE5TQXJyYXkgKmFsdGVy
bmF0ZXMgPSBbbW92aWUgYWx0ZXJuYXRlc0Zvck1lZGlhVHlwZTptZWRpYVR5cGVdOworICAgIGlm
ICghYWx0ZXJuYXRlcy5jb3VudCkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byBsYW5ndWFn
ZVRvUVRUcmFja01hcCA9IGFkb3B0TlMoW1tOU011dGFibGVEaWN0aW9uYXJ5IGFsbG9jXSBpbml0
V2l0aENhcGFjaXR5OmFsdGVybmF0ZXMuY291bnRdKTsKKworICAgIGZvciAoTlNVSW50ZWdlciBp
bmRleCA9IDA7IGluZGV4IDwgYWx0ZXJuYXRlcy5jb3VudDsgKytpbmRleCkgeworICAgICAgICBO
U0RpY3Rpb25hcnkgKmFsdGVybmF0ZURpY3QgPSBhbHRlcm5hdGVzW2luZGV4XTsKKyAgICAgICAg
TlNTdHJpbmcgKmxhbmd1YWdlU3RyaW5nID0gYWx0ZXJuYXRlRGljdFtAIlFUQWx0ZXJuYXRlc19M
YW5ndWFnZUNvZGVFbmNvZGluZ19JU09fNjM5XzJUIl07CisgICAgICAgIGlmICghW2xhbmd1YWdl
U3RyaW5nIGNTdHJpbmdVc2luZ0VuY29kaW5nOmtDRlN0cmluZ0VuY29kaW5nQVNDSUldKQorICAg
ICAgICAgICAgY29udGludWU7CisgICAgICAgIGlmICghbGFuZ3VhZ2VTdHJpbmcpCisgICAgICAg
ICAgICBsYW5ndWFnZVN0cmluZyA9IGFsdGVybmF0ZURpY3RbQCJRVEFsdGVybmF0ZXNfTGFuZ3Vh
Z2VDb2RlRW5jb2RpbmdfUkZDXzQ2NDYiXTsKKyAgICAgICAgaWYgKCFsYW5ndWFnZVN0cmluZykg
eworICAgICAgICAgICAgTGFuZ0NvZGUgbGFuZ0NvZGUgPSBhbHRlcm5hdGVEaWN0W0AiUVRBbHRl
cm5hdGVzX0xhbmd1YWdlQ29kZUVuY29kaW5nX01hY1R5cGVfTGFuZ0NvZGUiXS5pbnRWYWx1ZTsK
KyAgICAgICAgICAgIGF1dG8gaWRlbnRpZmllciA9IGFkb3B0Q0YoQ0ZMb2NhbGVDcmVhdGVDYW5v
bmljYWxMb2NhbGVJZGVudGlmaWVyRnJvbVNjcmlwdE1hbmFnZXJDb2RlcyhrQ0ZBbGxvY2F0b3JE
ZWZhdWx0LCBsYW5nQ29kZSwgMCkpOworICAgICAgICAgICAgbGFuZ3VhZ2VTdHJpbmcgPSAoTlNT
dHJpbmcgKilpZGVudGlmaWVyLmF1dG9yZWxlYXNlKCk7CisgICAgICAgIH0KKyAgICAgICAgaWYg
KCFsYW5ndWFnZVN0cmluZykKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIGlkIGFs
dGVybmF0ZVRyYWNrID0gYWx0ZXJuYXRlRGljdFtAIlFUQWx0ZXJuYXRlc19RVFRyYWNrIl07Cisg
ICAgICAgIGlmICghYWx0ZXJuYXRlVHJhY2spCisgICAgICAgICAgICBjb250aW51ZTsKKworICAg
ICAgICBpZiAoIVthbHRlcm5hdGVUcmFjayBhdHRyaWJ1dGVGb3JLZXk6QCJRVFRyYWNrRW5hYmxl
ZEF0dHJpYnV0ZSJdLmJvb2xWYWx1ZSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAK
KyAgICAgICAgW2xhbmd1YWdlVG9RVFRyYWNrTWFwIHNldE9iamVjdDphbHRlcm5hdGVUcmFjayBm
b3JLZXk6bGFuZ3VhZ2VTdHJpbmddOworICAgIH0KKyAgICAKKyAgICBOU0FycmF5ICpwcmVmZXJy
ZWRMYW5ndWFnZXMgPSBbTlNCdW5kbGUgcHJlZmVycmVkTG9jYWxpemF0aW9uc0Zyb21BcnJheTpb
bGFuZ3VhZ2VUb1FUVHJhY2tNYXAgYWxsS2V5c10gZm9yUHJlZmVyZW5jZXM6bmlsXTsKKyAgICBp
ZiAocHJlZmVycmVkTGFuZ3VhZ2VzLmNvdW50KSB7CisgICAgICAgIGlkIHByZWZlcnJlZFRyYWNr
ID0gW2xhbmd1YWdlVG9RVFRyYWNrTWFwIG9iamVjdEZvcktleTpwcmVmZXJyZWRMYW5ndWFnZXNb
MF1dOworICAgICAgICBpZiAocHJlZmVycmVkVHJhY2spIHsKKyAgICAgICAgICAgIC8vICtbTlNC
dW5kbGUgcHJlZmVycmVkTG9jYWxpemF0aW9uc0Zyb21BcnJheTpmb3JQcmVmZXJlbmNlc10gbWF5
IHJldHVybiBhIGxhbmd1YWdlIHdoaWNoIHdhcworICAgICAgICAgICAgLy8gbm90IHByZXNlbnQg
aW4gcHJlZmVycmVkTGFuZ3VhZ2VzLCBhbmQgd2lsbCB0aGVyZWZvcmUgbm90IGhhdmUgYW4gYXNz
b2NpYXRlZCB0cmFjay4KKyAgICAgICAgICAgIFttb3ZpZSBzZWxlY3RBbHRlcm5hdGVHcm91cFRy
YWNrOnByZWZlcnJlZFRyYWNrXTsKKyAgICAgICAgfQorICAgIH0KK30KKworc3RhdGljIHZvaWQg
c2VsZWN0UHJlZmVycmVkQWx0ZXJuYXRlcyhRVE1vdmllICptb3ZpZSkKK3sKKyAgICBzZWxlY3RQ
cmVmZXJyZWRBbHRlcm5hdGVUcmFja0Zvck1lZGlhVHlwZShtb3ZpZSwgQCJ2aWRlIik7CisgICAg
c2VsZWN0UHJlZmVycmVkQWx0ZXJuYXRlVHJhY2tGb3JNZWRpYVR5cGUobW92aWUsIEAic291biIp
OworICAgIHNlbGVjdFByZWZlcnJlZEFsdGVybmF0ZVRyYWNrRm9yTWVkaWFUeXBlKG1vdmllLCBA
ImNwbHAiKTsKKyAgICBzZWxlY3RQcmVmZXJyZWRBbHRlcm5hdGVUcmFja0Zvck1lZGlhVHlwZSht
b3ZpZSwgQCJzYnRsIik7Cit9CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6OnVwZGF0
ZVN0YXRlcygpCiB7CkBAIC05NjUsNyArMTAyOSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRl
UVRLaXQ6OnVwZGF0ZVN0YXRlcygpCiAgICAgICAgICAgICBsb2FkU3RhdGUgPSBRVE1vdmllTG9h
ZFN0YXRlRXJyb3I7CiAKICAgICAgICAgaWYgKGxvYWRTdGF0ZSAhPSBRVE1vdmllTG9hZFN0YXRl
RXJyb3IpIHsKLSAgICAgICAgICAgIHdrUVRNb3ZpZVNlbGVjdFByZWZlcnJlZEFsdGVybmF0ZXMo
bV9xdE1vdmllLmdldCgpKTsKKyAgICAgICAgICAgIHNlbGVjdFByZWZlcnJlZEFsdGVybmF0ZXMo
bV9xdE1vdmllLmdldCgpKTsKICAgICAgICAgICAgIGNhY2hlTW92aWVTY2FsZSgpOwogICAgICAg
ICAgICAgTWVkaWFQbGF5ZXI6Ok1vdmllTG9hZFR5cGUgbW92aWVUeXBlID0gbW92aWVMb2FkVHlw
ZSgpOwogICAgICAgICAgICAgbV9pc1N0cmVhbWluZyA9IG1vdmllVHlwZSA9PSBNZWRpYVBsYXll
cjo6U3RvcmVkU3RyZWFtIHx8IG1vdmllVHlwZSA9PSBNZWRpYVBsYXllcjo6TGl2ZVN0cmVhbTsK
QEAgLTEyNzMsNyArMTMzNyw4IEBAIHN0YXRpYyBjb25zdCBIYXNoU2V0PFN0cmluZywgQVNDSUlD
YXNlSW5zZW5zaXRpdmVIYXNoPiYgbWltZUNvbW1vblR5cGVzQ2FjaGUoKQogCiBzdGF0aWMgY29u
c3QgSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mIG1pbWVNb2Rlcm5U
eXBlc0NhY2hlKCkKIHsKLSAgICBzdGF0aWMgY29uc3QgYXV0byBjYWNoZSA9IG1ha2VOZXZlckRl
c3Ryb3llZChjcmVhdGVGaWxlVHlwZXNTZXQoW1FUTW92aWUgbW92aWVGaWxlVHlwZXM6KFFUTW92
aWVGaWxlVHlwZU9wdGlvbnMpd2tRVEluY2x1ZGVPbmx5TW9kZXJuTWVkaWFGaWxlVHlwZXMoKV0p
KTsKKyAgICBzdGF0aWMgUVRNb3ZpZUZpbGVUeXBlT3B0aW9ucyBpbmNsdWRlT25seU1vZGVybk1l
ZGlhRmlsZVR5cGVzID0gMSA8PCA4OworICAgIHN0YXRpYyBjb25zdCBhdXRvIGNhY2hlID0gbWFr
ZU5ldmVyRGVzdHJveWVkKGNyZWF0ZUZpbGVUeXBlc1NldChbUVRNb3ZpZSBtb3ZpZUZpbGVUeXBl
czppbmNsdWRlT25seU1vZGVybk1lZGlhRmlsZVR5cGVzXSkpOwogICAgIHJldHVybiBjYWNoZTsK
IH0KIApAQCAtMTMyNCw3ICsxMzg5LDcgQEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6
aXNBdmFpbGFibGUoKQogSGFzaFNldDxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+PiBNZWRpYVBsYXll
clByaXZhdGVRVEtpdDo6b3JpZ2luc0luTWVkaWFDYWNoZShjb25zdCBTdHJpbmcmKQogewogICAg
IEhhc2hTZXQ8UmVmUHRyPFNlY3VyaXR5T3JpZ2luPj4gb3JpZ2luczsKLSAgICBOU0FycmF5ICpt
ZWRpYVNpdGVzID0gd2tRVEdldFNpdGVzSW5NZWRpYURvd25sb2FkQ2FjaGUoKTsKKyAgICBOU0Fy
cmF5ICptZWRpYVNpdGVzID0gW1tRVFV0aWxpdGllcyBxdFV0aWxpdGllc10gc2l0ZXNJbkRvd25s
b2FkQ2FjaGVdOwogICAgIAogICAgIGZvciAoTlNTdHJpbmcgKnNpdGUgaW4gbWVkaWFTaXRlcykg
ewogICAgICAgICBVUkwgc2l0ZUFzVVJMID0gVVJMKFVSTCgpLCBzaXRlKTsKQEAgLTEzMzcsMTQg
KzE0MDIsMTQgQEAgSGFzaFNldDxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+PiBNZWRpYVBsYXllclBy
aXZhdGVRVEtpdDo6b3JpZ2luc0luTWVkaWFDYWNoZShjb24KIHZvaWQgTWVkaWFQbGF5ZXJQcml2
YXRlUVRLaXQ6OmNsZWFyTWVkaWFDYWNoZShjb25zdCBTdHJpbmcmLCBzdGQ6OmNocm9ubzo6c3lz
dGVtX2Nsb2NrOjp0aW1lX3BvaW50KQogewogICAgIExPRyhNZWRpYSwgIk1lZGlhUGxheWVyUHJp
dmF0ZVFUS2l0OjpjbGVhck1lZGlhQ2FjaGUoKSIpOwotICAgIHdrUVRDbGVhck1lZGlhRG93bmxv
YWRDYWNoZSgpOworICAgIFtbUVRVdGlsaXRpZXMgcXRVdGlsaXRpZXNdIGNsZWFyRG93bmxvYWRD
YWNoZV07CiB9CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6OmNsZWFyTWVkaWFDYWNo
ZUZvck9yaWdpbnMoY29uc3QgU3RyaW5nJiwgY29uc3QgSGFzaFNldDxSZWZQdHI8U2VjdXJpdHlP
cmlnaW4+PiYgb3JpZ2lucykKIHsKICAgICBMT0coTWVkaWEsICJNZWRpYVBsYXllclByaXZhdGVR
VEtpdDo6Y2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2lucygpIik7CiAgICAgZm9yIChhdXRvJiBvcmln
aW4gOiBvcmlnaW5zKQotICAgICAgICB3a1FUQ2xlYXJNZWRpYURvd25sb2FkQ2FjaGVGb3JTaXRl
KG9yaWdpbi0+dG9SYXdTdHJpbmcoKSk7CisgICAgICAgIFtbUVRVdGlsaXRpZXMgcXRVdGlsaXRp
ZXNdIGNsZWFyRG93bmxvYWRDYWNoZUZvclNpdGU6b3JpZ2luLT50b1Jhd1N0cmluZygpXTsKIH0K
IAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6ZGlzYWJsZVVuc3VwcG9ydGVkVHJhY2tz
KCkKQEAgLTE0NjgsMjMgKzE1MzMsMjkgQEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6
aGFzU2luZ2xlU2VjdXJpdHlPcmlnaW4oKSBjb25zdAogICAgIGlmICghbV9xdE1vdmllKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBSZWY8U2VjdXJpdHlPcmlnaW4+IHJlc29sdmVkT3Jp
Z2luID0gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShVUkwod2tRVE1vdmllUmVzb2x2ZWRVUkwobV9x
dE1vdmllLmdldCgpKSkpOworICAgIFJlZjxTZWN1cml0eU9yaWdpbj4gcmVzb2x2ZWRPcmlnaW4g
PSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKFVSTChbbV9xdE1vdmllIFVSTF0pKTsKICAgICBSZWY8
U2VjdXJpdHlPcmlnaW4+IHJlcXVlc3RlZE9yaWdpbiA9IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGVG
cm9tU3RyaW5nKG1fbW92aWVVUkwpOwogICAgIHJldHVybiByZXNvbHZlZE9yaWdpbi0+aXNTYW1l
U2NoZW1lSG9zdFBvcnQocmVxdWVzdGVkT3JpZ2luLmdldCgpKTsKIH0KIAogTWVkaWFQbGF5ZXI6
Ok1vdmllTG9hZFR5cGUgTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6Om1vdmllTG9hZFR5cGUoKSBj
b25zdAogewotICAgIGlmICghbV9xdE1vdmllKQotICAgICAgICByZXR1cm4gTWVkaWFQbGF5ZXI6
OlVua25vd247Ci0KLSAgICBNZWRpYVBsYXllcjo6TW92aWVMb2FkVHlwZSBtb3ZpZVR5cGUgPSAo
TWVkaWFQbGF5ZXI6Ok1vdmllTG9hZFR5cGUpd2tRVE1vdmllR2V0VHlwZShtX3F0TW92aWUuZ2V0
KCkpOwotCi0gICAgLy8gQ2FuJ3QgaW5jbHVkZSBXZWJLaXRTeXN0ZW1JbnRlcmZhY2UgZnJvbSBX
ZWJDb3JlIHNvIHdlIGNhbid0IGdldCB0aGUgZW51bSByZXR1cm5lZAotICAgIC8vIGJ5IHdrUVRN
b3ZpZUdldFR5cGUsIGJ1dCBhdCBsZWFzdCB2ZXJpZnkgdGhhdCB0aGUgdmFsdWUgaXMgaW4gdGhl
IHZhbGlkIHJhbmdlLgotICAgIEFTU0VSVChtb3ZpZVR5cGUgPj0gTWVkaWFQbGF5ZXI6OlVua25v
d24gJiYgbW92aWVUeXBlIDw9IE1lZGlhUGxheWVyOjpMaXZlU3RyZWFtKTsKLQotICAgIHJldHVy
biBtb3ZpZVR5cGU7CisgICAgaWYgKCFtb3ZpZSkKKyAgICAgICAgcmV0dXJuIE1lZGlhUGxheWVy
OjpNb3ZpZUxvYWRUeXBlOjpVbmtub3duOworCisgICAgVUludDMyIG1vdmllVHlwZSA9IG1vdmll
Lm1vdmllVHlwZTsKKyAgICBzd2l0Y2ggKG1vdmllVHlwZSkgeworICAgIGNhc2UgUVRNb3ZpZVR5
cGVMb2NhbDoKKyAgICBjYXNlIFFUTW92aWVUeXBlRmFzdFN0YXJ0OgorICAgICAgICByZXR1cm4g
TWVkaWFQbGF5ZXI6Ok1vdmllTG9hZFR5cGU6OkRvd25sb2FkOworICAgIGNhc2UgUVRNb3ZpZVR5
cGVMaXZlU3RyZWFtOgorICAgICAgICByZXR1cm4gTWVkaWFQbGF5ZXI6Ok1vdmllTG9hZFR5cGU6
OkxpdmVTdHJlYW07CisgICAgY2FzZSBRVE1vdmllVHlwZVN0b3JlZFN0cmVhbToKKyAgICAgICAg
cmV0dXJuIE1lZGlhUGxheWVyOjpNb3ZpZUxvYWRUeXBlOjpTdG9yZWRTdHJlYW07CisgICAgY2Fz
ZSBRVE1vdmllVHlwZVVua25vd246CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIE1lZGlh
UGxheWVyOjpNb3ZpZUxvYWRUeXBlOjpVbmtub3duOworICAgIH0KIH0KIAogdm9pZCBNZWRpYVBs
YXllclByaXZhdGVRVEtpdDo6c2V0UHJlbG9hZChNZWRpYVBsYXllcjo6UHJlbG9hZCBwcmVsb2Fk
KQpAQCAtMTUxNSw3ICsxNTg2LDcgQEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6Y2Fu
U2F2ZU1lZGlhRGF0YSgpIGNvbnN0CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmICht
X3F0TW92aWUpCi0gICAgICAgIHVybCA9IFVSTCh3a1FUTW92aWVSZXNvbHZlZFVSTChtX3F0TW92
aWUuZ2V0KCkpKTsKKyAgICAgICAgdXJsID0gVVJMKFttX3F0TW92aWUgVVJMXSk7CiAgICAgZWxz
ZQogICAgICAgICB1cmwgPSBVUkwoUGFyc2VkVVJMU3RyaW5nLCBtX21vdmllVVJMKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVTeXN0ZW1JbnRlcmZh
Y2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNl
LmgKaW5kZXggMjNmZjIzZmNmNDU4YjQwNzg5YjAyZTBhZWMxMmIyMDAwMTFmYzViYi4uZjY3NTk1
MDlhMTFmY2UzMzQxM2ZlNjkwMzNhNDY4NTZmNTk3NDU1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oCkBAIC0xMzEsMzIg
KzEzMSw3IEBAIGV4dGVybiBkb3VibGUgKCp3a0dldE5TVVJMUmVzcG9uc2VDYWxjdWxhdGVkRXhw
aXJhdGlvbikoTlNVUkxSZXNwb25zZSAqcmVzcG9uc2UpCiBleHRlcm4gQk9PTCAoKndrR2V0TlNV
UkxSZXNwb25zZU11c3RSZXZhbGlkYXRlKShOU1VSTFJlc3BvbnNlICpyZXNwb25zZSk7CiBleHRl
cm4gQk9PTCAoKndrSGl0VGVzdE1lZGlhVUlQYXJ0KShpbnQgcGFydCwgQ0dSZWN0IGJvdW5kcywg
Q0dQb2ludCBwb2ludCk7CiBleHRlcm4gdm9pZCAoKndrTWVhc3VyZU1lZGlhVUlQYXJ0KShpbnQg
cGFydCwgQ0dSZWN0ICpib3VuZHMsIENHU2l6ZSAqbmF0dXJhbFNpemUpOwotZXh0ZXJuIE5TVmll
dyAqKCp3a0NyZWF0ZU1lZGlhVUlCYWNrZ3JvdW5kVmlldykodm9pZCk7CiAKLXR5cGVkZWYgZW51
bSB7Ci0gICAgd2tNZWRpYVVJQ29udHJvbFRpbWVsaW5lLAotICAgIHdrTWVkaWFVSUNvbnRyb2xT
bGlkZXIsCi0gICAgd2tNZWRpYVVJQ29udHJvbFBsYXlQYXVzZUJ1dHRvbiwKLSAgICB3a01lZGlh
VUlDb250cm9sRXhpdEZ1bGxzY3JlZW5CdXR0b24sCi0gICAgd2tNZWRpYVVJQ29udHJvbFJld2lu
ZEJ1dHRvbiwKLSAgICB3a01lZGlhVUlDb250cm9sRmFzdEZvcndhcmRCdXR0b24sCi0gICAgd2tN
ZWRpYVVJQ29udHJvbFZvbHVtZVVwQnV0dG9uLAotICAgIHdrTWVkaWFVSUNvbnRyb2xWb2x1bWVE
b3duQnV0dG9uCi19IHdrTWVkaWFVSUNvbnRyb2xUeXBlOwotZXh0ZXJuIE5TQ29udHJvbCAqKCp3
a0NyZWF0ZU1lZGlhVUlDb250cm9sKShpbnQpOwotCi1leHRlcm4gdW5zaWduZWQgKCp3a1FUSW5j
bHVkZU9ubHlNb2Rlcm5NZWRpYUZpbGVUeXBlcykodm9pZCk7Ci1leHRlcm4gdm9pZCAoKndrUVRN
b3ZpZURpc2FibGVDb21wb25lbnQpKHVpbnQzMl90WzVdKTsKLWV4dGVybiBmbG9hdCAoKndrUVRN
b3ZpZU1heFRpbWVMb2FkZWQpKFFUTW92aWUqKTsKLWV4dGVybiBOU1N0cmluZyAqKCp3a1FUTW92
aWVNYXhUaW1lTG9hZGVkQ2hhbmdlTm90aWZpY2F0aW9uKSh2b2lkKTsKLWV4dGVybiBpbnQgKCp3
a1FUTW92aWVHZXRUeXBlKShRVE1vdmllKik7Ci1leHRlcm4gQk9PTCAoKndrUVRNb3ZpZUhhc0Ns
b3NlZENhcHRpb25zKShRVE1vdmllKik7Ci1leHRlcm4gTlNVUkwgKigqd2tRVE1vdmllUmVzb2x2
ZWRVUkwpKFFUTW92aWUqKTsKLWV4dGVybiB2b2lkICgqd2tRVE1vdmllU2V0U2hvd0Nsb3NlZENh
cHRpb25zKShRVE1vdmllKiwgQk9PTCk7Ci1leHRlcm4gdm9pZCAoKndrUVRNb3ZpZVNlbGVjdFBy
ZWZlcnJlZEFsdGVybmF0ZXMpKFFUTW92aWUqKTsKLWV4dGVybiBOU0FycmF5ICooKndrUVRHZXRT
aXRlc0luTWVkaWFEb3dubG9hZENhY2hlKSgpOwotZXh0ZXJuIHZvaWQgKCp3a1FUQ2xlYXJNZWRp
YURvd25sb2FkQ2FjaGVGb3JTaXRlKShOU1N0cmluZyAqc2l0ZSk7Ci1leHRlcm4gdm9pZCAoKndr
UVRDbGVhck1lZGlhRG93bmxvYWRDYWNoZSkoKTsKIGV4dGVybiB2b2lkICgqd2tTZXRDb29raWVT
dG9yYWdlUHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCkoQk9PTCk7CiAjZW5kaWYKIGV4dGVybiB2b2lk
ICgqd2tTZXRDT05ORUNUUHJveHlGb3JTdHJlYW0pKENGUmVhZFN0cmVhbVJlZiwgQ0ZTdHJpbmdS
ZWYgcHJveHlIb3N0LCBDRk51bWJlclJlZiBwcm94eVBvcnQpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2UubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZVN5c3RlbUludGVyZmFjZS5tbQppbmRleCBjNzIz
ZDc0NGIwNDZkMjEwZmFhYjIyYzJhNDFkZGYwMjQ2M2RhOTNmLi4yZWFiZDRmMTRmMzkzMzZlMzM0
MGNlOGVkZWUzN2U0ODJkZDY4MDJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tYWMvV2ViQ29yZVN5c3RlbUludGVyZmFjZS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tYWMvV2ViQ29yZVN5c3RlbUludGVyZmFjZS5tbQpAQCAtMzYsMjMgKzM2LDkgQEAgdm9p
ZCAoKndrRHJhd01lZGlhU2xpZGVyVHJhY2spKENHQ29udGV4dFJlZiBjb250ZXh0LCBDR1JlY3Qg
cmVjdCwgZmxvYXQgdGltZUxvYWQKIEJPT0wgKCp3a0hpdFRlc3RNZWRpYVVJUGFydCkoaW50IHBh
cnQsIENHUmVjdCBib3VuZHMsIENHUG9pbnQgcG9pbnQpOwogdm9pZCAoKndrRHJhd01lZGlhVUlQ
YXJ0KShpbnQgcGFydCwgQ0dDb250ZXh0UmVmIGNvbnRleHQsIENHUmVjdCByZWN0LCB1bnNpZ25l
ZCBzdGF0ZSk7CiB2b2lkICgqd2tNZWFzdXJlTWVkaWFVSVBhcnQpKGludCBwYXJ0LCBDR1JlY3Qg
KmJvdW5kcywgQ0dTaXplICpuYXR1cmFsU2l6ZSk7Ci1OU1ZpZXcgKigqd2tDcmVhdGVNZWRpYVVJ
QmFja2dyb3VuZFZpZXcpKHZvaWQpOwotTlNDb250cm9sICooKndrQ3JlYXRlTWVkaWFVSUNvbnRy
b2wpKGludCk7CiBOU1RpbWVJbnRlcnZhbCAoKndrR2V0TlNVUkxSZXNwb25zZUNhbGN1bGF0ZWRF
eHBpcmF0aW9uKShOU1VSTFJlc3BvbnNlICpyZXNwb25zZSk7CiBCT09MICgqd2tHZXROU1VSTFJl
c3BvbnNlTXVzdFJldmFsaWRhdGUpKE5TVVJMUmVzcG9uc2UgKnJlc3BvbnNlKTsKIHZvaWQgKCp3
a1BvcHVwTWVudSkoTlNNZW51KiwgTlNQb2ludCBsb2NhdGlvbiwgZmxvYXQgd2lkdGgsIE5TVmll
dyosIGludCBzZWxlY3RlZEl0ZW0sIE5TRm9udCosIE5TQ29udHJvbFNpemUgY29udHJvbFNpemUs
IGJvb2wgdXNlc0N1c3RvbUFwcGVhcmFuY2UpOwotdW5zaWduZWQgKCp3a1FUSW5jbHVkZU9ubHlN
b2Rlcm5NZWRpYUZpbGVUeXBlcykodm9pZCk7Ci12b2lkICgqd2tRVE1vdmllRGlzYWJsZUNvbXBv
bmVudCkodWludDMyX3RbNV0pOwotZmxvYXQgKCp3a1FUTW92aWVNYXhUaW1lTG9hZGVkKShRVE1v
dmllKik7Ci1OU1N0cmluZyAqKCp3a1FUTW92aWVNYXhUaW1lTG9hZGVkQ2hhbmdlTm90aWZpY2F0
aW9uKSh2b2lkKTsKLWludCAoKndrUVRNb3ZpZUdldFR5cGUpKFFUTW92aWUqKTsKLUJPT0wgKCp3
a1FUTW92aWVIYXNDbG9zZWRDYXB0aW9ucykoUVRNb3ZpZSopOwotTlNVUkwgKigqd2tRVE1vdmll
UmVzb2x2ZWRVUkwpKFFUTW92aWUqKTsKLXZvaWQgKCp3a1FUTW92aWVTZXRTaG93Q2xvc2VkQ2Fw
dGlvbnMpKFFUTW92aWUqLCBCT09MKTsKLXZvaWQgKCp3a1FUTW92aWVTZWxlY3RQcmVmZXJyZWRB
bHRlcm5hdGVzKShRVE1vdmllKik7Ci1OU0FycmF5ICooKndrUVRHZXRTaXRlc0luTWVkaWFEb3du
bG9hZENhY2hlKSgpOwotdm9pZCAoKndrUVRDbGVhck1lZGlhRG93bmxvYWRDYWNoZUZvclNpdGUp
KE5TU3RyaW5nICpzaXRlKTsKLXZvaWQgKCp3a1FUQ2xlYXJNZWRpYURvd25sb2FkQ2FjaGUpKCk7
CiAKIHZvaWQgKCp3a1NldENPTk5FQ1RQcm94eUZvclN0cmVhbSkoQ0ZSZWFkU3RyZWFtUmVmLCBD
RlN0cmluZ1JlZiBwcm94eUhvc3QsIENGTnVtYmVyUmVmIHByb3h5UG9ydCk7CiB2b2lkICgqd2tT
ZXRDT05ORUNUUHJveHlBdXRob3JpemF0aW9uRm9yU3RyZWFtKShDRlJlYWRTdHJlYW1SZWYsIENG
U3RyaW5nUmVmIHByb3h5QXV0aG9yaXphdGlvblN0cmluZyk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViVmlkZW9GdWxsc2NyZWVuSFVEV2luZG93Q29udHJvbGxl
ci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJWaWRlb0Z1bGxzY3JlZW5IVURX
aW5kb3dDb250cm9sbGVyLm1tCmluZGV4IGVmYjZlMmIyNzNjNTgzNTEzM2U3NWIxNjI2YTk1YjA0
OTBjNzc5OWMuLmZjMGY1MTBjN2EyY2IyNDk3OGQwNGEwYzQ4MDZlZDRjNzFjNTMyMDEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJWaWRlb0Z1bGxzY3JlZW5IVURX
aW5kb3dDb250cm9sbGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJW
aWRlb0Z1bGxzY3JlZW5IVURXaW5kb3dDb250cm9sbGVyLm1tCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAwOS0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOS0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzEsOSArMzEsMzggQEAK
ICNpbXBvcnQgPFdlYkNvcmUvSFRNTFZpZGVvRWxlbWVudC5oPgogI2ltcG9ydCA8V2ViQ29yZVN5
c3RlbUludGVyZmFjZS5oPgogI2ltcG9ydCA8cGFsL3NwaS9jZy9Db3JlR3JhcGhpY3NTUEkuaD4K
KyNpbXBvcnQgPHBhbC9zcGkvbWFjL1FUS2l0U1BJLmg+CisjaW1wb3J0IDx3dGYvU29mdExpbmtp
bmcuaD4KKworU09GVF9MSU5LX0ZSQU1FV09SSyhRVEtpdCkKKworU09GVF9MSU5LX0NMQVNTKFFU
S2l0LCBRVEhVREJhY2tncm91bmRWaWV3KQorU09GVF9MSU5LX0NMQVNTKFFUS2l0LCBRVEhVREJ1
dHRvbikKK1NPRlRfTElOS19DTEFTUyhRVEtpdCwgUVRIVURTbGlkZXIpCitTT0ZUX0xJTktfQ0xB
U1MoUVRLaXQsIFFUSFVEVGltZWxpbmUpCisKKyNkZWZpbmUgUVRIVURCYWNrZ3JvdW5kVmlldyBn
ZXRRVEhVREJhY2tncm91bmRWaWV3Q2xhc3MoKQorI2RlZmluZSBRVEhVREJ1dHRvbiBnZXRRVEhV
REJ1dHRvbkNsYXNzKCkKKyNkZWZpbmUgUVRIVURTbGlkZXIgZ2V0UVRIVURTbGlkZXJDbGFzcygp
CisjZGVmaW5lIFFUSFVEVGltZWxpbmUgZ2V0UVRIVURUaW1lbGluZUNsYXNzKCkKIAogdXNpbmcg
bmFtZXNwYWNlIFdlYkNvcmU7CiAKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworZW51bSBjbGFzcyBN
ZWRpYVVJQ29udHJvbCB7CisgICAgVGltZWxpbmUsCisgICAgU2xpZGVyLAorICAgIFBsYXlQYXVz
ZUJ1dHRvbiwKKyAgICBFeGl0RnVsbHNjcmVlbkJ1dHRvbiwKKyAgICBSZXdpbmRCdXR0b24sCisg
ICAgRmFzdEZvcndhcmRCdXR0b24sCisgICAgVm9sdW1lVXBCdXR0b24sCisgICAgVm9sdW1lRG93
bkJ1dHRvbiwKK307CisKK30KKwogQGludGVyZmFjZSBXZWJWaWRlb0Z1bGxzY3JlZW5IVURXaW5k
b3dDb250cm9sbGVyIChQcml2YXRlKSA8TlNXaW5kb3dEZWxlZ2F0ZT4KIAogLSAodm9pZCl1cGRh
dGVUaW1lOwpAQCAtMjY1LDEwICsyOTQsNjggQEAgLSAodm9pZCljbG9zZVdpbmRvdwogICAgIFtz
ZWxmIHNldFdpbmRvdzpuaWxdOwogfQogCi1zdGF0aWMgTlNDb250cm9sICpjcmVhdGVDb250cm9s
V2l0aE1lZGlhVUlDb250cm9sVHlwZShpbnQgY29udHJvbFR5cGUsIE5TUmVjdCBmcmFtZSkKK3N0
YXRpYyBOU0NvbnRyb2wgKmNyZWF0ZU1lZGlhVUlDb250cm9sKE1lZGlhVUlDb250cm9sIGNvbnRy
b2xUeXBlKQoreworICAgIHN3aXRjaCAoY29udHJvbFR5cGUpIHsKKyAgICBjYXNlIE1lZGlhVUlD
b250cm9sOjpUaW1lbGluZTogeworICAgICAgICBOU1NsaWRlciAqc2xpZGVyID0gW1tRVEhVRFRp
bWVsaW5lIGFsbG9jXSBpbml0XTsKKyAgICAgICAgW1tzbGlkZXIgY2VsbF0gc2V0Q29udGludW91
czpZRVNdOworICAgICAgICByZXR1cm4gc2xpZGVyOworICAgIH0KKyAgICBjYXNlIE1lZGlhVUlD
b250cm9sOjpTbGlkZXI6IHsKKyAgICAgICAgTlNCdXR0b24gKnNsaWRlciA9IFtbUVRIVURTbGlk
ZXIgYWxsb2NdIGluaXRdOworICAgICAgICBbW3NsaWRlciBjZWxsXSBzZXRDb250aW51b3VzOllF
U107CisgICAgICAgIHJldHVybiBzbGlkZXI7CisgICAgfQorICAgIGNhc2UgTWVkaWFVSUNvbnRy
b2w6OlBsYXlQYXVzZUJ1dHRvbjogeworICAgICAgICBOU0J1dHRvbiAqYnV0dG9uID0gW1tRVEhV
REJ1dHRvbiBhbGxvY10gaW5pdF07CisgICAgICAgIFtidXR0b24gc2V0SW1hZ2U6W05TSW1hZ2Ug
aW1hZ2VOYW1lZDpAIk5TUGxheVRlbXBsYXRlIl1dOworICAgICAgICBbYnV0dG9uIHNldEFsdGVy
bmF0ZUltYWdlOltOU0ltYWdlIGltYWdlTmFtZWQ6QCJOU1BhdXNlUVRQcml2YXRlVGVtcGxhdGUi
XV07CisKKyAgICAgICAgW1tidXR0b24gY2VsbF0gc2V0U2hvd3NTdGF0ZUJ5Ok5TQ29udGVudHND
ZWxsTWFza107CisgICAgICAgIFtidXR0b24gc2V0Qm9yZGVyZWQ6Tk9dOworICAgICAgICByZXR1
cm4gYnV0dG9uOworICAgIH0KKyAgICBjYXNlIE1lZGlhVUlDb250cm9sOjpFeGl0RnVsbHNjcmVl
bkJ1dHRvbjogeworICAgICAgICBOU0J1dHRvbiAqYnV0dG9uID0gW1tRVEhVREJ1dHRvbiBhbGxv
Y10gaW5pdF07CisgICAgICAgIFtidXR0b24gc2V0SW1hZ2U6W05TSW1hZ2UgaW1hZ2VOYW1lZDpA
Ik5TRXhpdEZ1bGxTY3JlZW5UZW1wbGF0ZSJdXTsKKyAgICAgICAgW2J1dHRvbiBzZXRCb3JkZXJl
ZDpOT107CisgICAgICAgIHJldHVybiBidXR0b247CisgICAgfQorICAgIGNhc2UgTWVkaWFVSUNv
bnRyb2w6OlJld2luZEJ1dHRvbjogeworICAgICAgICBOU0J1dHRvbiAqYnV0dG9uID0gW1tRVEhV
REJ1dHRvbiBhbGxvY10gaW5pdF07CisgICAgICAgIFtidXR0b24gc2V0SW1hZ2U6W05TSW1hZ2Ug
aW1hZ2VOYW1lZDpAIk5TUmV3aW5kVGVtcGxhdGUiXV07CisgICAgICAgIFtidXR0b24gc2V0Qm9y
ZGVyZWQ6Tk9dOworICAgICAgICByZXR1cm4gYnV0dG9uOworICAgIH0KKyAgICBjYXNlIE1lZGlh
VUlDb250cm9sOjpGYXN0Rm9yd2FyZEJ1dHRvbjogeworICAgICAgICBOU0J1dHRvbiAqYnV0dG9u
ID0gW1tRVEhVREJ1dHRvbiBhbGxvY10gaW5pdF07CisgICAgICAgIFtidXR0b24gc2V0SW1hZ2U6
W05TSW1hZ2UgaW1hZ2VOYW1lZDpAIk5TRmFzdEZvcndhcmRUZW1wbGF0ZSJdXTsKKyAgICAgICAg
W2J1dHRvbiBzZXRCb3JkZXJlZDpOT107CisgICAgICAgIHJldHVybiBidXR0b247CisgICAgfQor
ICAgIGNhc2UgTWVkaWFVSUNvbnRyb2w6OlZvbHVtZVVwQnV0dG9uOiB7CisgICAgICAgIE5TQnV0
dG9uICpidXR0b24gPSBbW1FUSFVEQnV0dG9uIGFsbG9jXSBpbml0XTsKKyAgICAgICAgW2J1dHRv
biBzZXRJbWFnZTpbTlNJbWFnZSBpbWFnZU5hbWVkOkAiTlNBdWRpb091dHB1dFZvbHVtZUhpZ2hU
ZW1wbGF0ZSJdXTsKKyAgICAgICAgW2J1dHRvbiBzZXRCb3JkZXJlZDpOT107CisgICAgICAgIHJl
dHVybiBidXR0b247CisgICAgfQorICAgIGNhc2UgTWVkaWFVSUNvbnRyb2w6OlZvbHVtZURvd25C
dXR0b246IHsKKyAgICAgICAgTlNCdXR0b24gKmJ1dHRvbiA9IFtbUVRIVURCdXR0b24gYWxsb2Nd
IGluaXRdOworICAgICAgICBbYnV0dG9uIHNldEltYWdlOltOU0ltYWdlIGltYWdlTmFtZWQ6QCJO
U0F1ZGlvT3V0cHV0Vm9sdW1lTG93VGVtcGxhdGUiXV07CisgICAgICAgIFtidXR0b24gc2V0Qm9y
ZGVyZWQ6Tk9dOworICAgICAgICByZXR1cm4gYnV0dG9uOworICAgIH0KKyAgICB9CisKKyAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gbmlsOworfQorCitzdGF0aWMgTlNDb250
cm9sICpjcmVhdGVDb250cm9sV2l0aE1lZGlhVUlDb250cm9sVHlwZShNZWRpYVVJQ29udHJvbCBj
b250cm9sVHlwZSwgTlNSZWN0IGZyYW1lKQogewotICAgIE5TQ29udHJvbCAqY29udHJvbCA9IHdr
Q3JlYXRlTWVkaWFVSUNvbnRyb2woY29udHJvbFR5cGUpOwotICAgIFtjb250cm9sIHNldEZyYW1l
OmZyYW1lXTsKKyAgICBOU0NvbnRyb2wgKmNvbnRyb2wgPSBjcmVhdGVNZWRpYVVJQ29udHJvbChj
b250cm9sVHlwZSk7CisgICAgY29udHJvbC5mcmFtZSA9IGZyYW1lOwogICAgIHJldHVybiBjb250
cm9sOwogfQogCkBAIC0yODUsNiArMzcyLDIxIEBAIHN0YXRpYyBOU1RleHRGaWVsZCAqY3JlYXRl
VGltZVRleHRGaWVsZChOU1JlY3QgZnJhbWUpCiAgICAgcmV0dXJuIHRleHRGaWVsZDsKIH0KIAor
c3RhdGljIE5TVmlldyAqY3JlYXRlTWVkaWFVSUJhY2tncm91bmRWaWV3KCkKK3sKKyAgICBpZCB2
aWV3ID0gW1tRVEhVREJhY2tncm91bmRWaWV3IGFsbG9jXSBpbml0XTsKKworICAgIGNvbnN0IENH
RmxvYXQgcXVpY2tUaW1lUGxheWVySFVESGVpZ2h0ID0gNTk7CisgICAgY29uc3QgQ0dGbG9hdCBx
dWlja1RpbWVQbGF5ZXJIVURDb250ZW50Qm9yZGVyUG9zaXRpb24gPSAzODsKKworI3ByYWdtYSBj
bGFuZyBkaWFnbm9zdGljIHB1c2gKKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBpZ25vcmVkICIt
V2RlcHJlY2F0ZWQtZGVjbGFyYXRpb25zIgorICAgIFt2aWV3IHNldENvbnRlbnRCb3JkZXJQb3Np
dGlvbjpxdWlja1RpbWVQbGF5ZXJIVURDb250ZW50Qm9yZGVyUG9zaXRpb24gLyBxdWlja1RpbWVQ
bGF5ZXJIVURIZWlnaHRdOworI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHBvcAorCisgICAgcmV0
dXJuIHZpZXc7Cit9CisKIC0gKHZvaWQpd2luZG93RGlkTG9hZAogewogICAgIHN0YXRpYyBjb25z
dCBDR0Zsb2F0IGhvcml6b250YWxNYXJnaW4gPSAxMDsKQEAgLTMxMCw3ICs0MTIsNyBAQCAtICh2
b2lkKXdpbmRvd0RpZExvYWQKICAgICBOU1dpbmRvdyAqd2luZG93ID0gW3NlbGYgd2luZG93XTsK
ICAgICBBU1NFUlQod2luZG93KTsKIAotICAgIE5TVmlldyAqYmFja2dyb3VuZCA9IHdrQ3JlYXRl
TWVkaWFVSUJhY2tncm91bmRWaWV3KCk7CisgICAgTlNWaWV3ICpiYWNrZ3JvdW5kID0gY3JlYXRl
TWVkaWFVSUJhY2tncm91bmRWaWV3KCk7CiAKICAgICBbd2luZG93IHNldENvbnRlbnRWaWV3OmJh
Y2tncm91bmRdOwogICAgIF9hcmVhID0gW1tOU1RyYWNraW5nQXJlYSBhbGxvY10gaW5pdFdpdGhS
ZWN0OltiYWNrZ3JvdW5kIGJvdW5kc10gb3B0aW9uczpOU1RyYWNraW5nTW91c2VFbnRlcmVkQW5k
RXhpdGVkIHwgTlNUcmFja2luZ0FjdGl2ZUFsd2F5cyBvd25lcjpzZWxmIHVzZXJJbmZvOm5pbF07
CkBAIC0zMjAsMTQgKzQyMiwxNCBAQCAtICh2b2lkKXdpbmRvd0RpZExvYWQKICAgICBOU1ZpZXcg
KmNvbnRlbnRWaWV3ID0gW3dpbmRvdyBjb250ZW50Vmlld107CiAKICAgICBDR0Zsb2F0IGNlbnRl
ciA9IENHRmxvb3IoKHdpbmRvd1dpZHRoIC0gcGxheUJ1dHRvbldpZHRoKSAvIDIpOwotICAgIF9w
bGF5QnV0dG9uID0gKE5TQnV0dG9uICopY3JlYXRlQ29udHJvbFdpdGhNZWRpYVVJQ29udHJvbFR5
cGUod2tNZWRpYVVJQ29udHJvbFBsYXlQYXVzZUJ1dHRvbiwgTlNNYWtlUmVjdChjZW50ZXIsIHdp
bmRvd0hlaWdodCAtIHBsYXlCdXR0b25Ub3BNYXJnaW4gLSBwbGF5QnV0dG9uSGVpZ2h0LCBwbGF5
QnV0dG9uV2lkdGgsIHBsYXlCdXR0b25IZWlnaHQpKTsKKyAgICBfcGxheUJ1dHRvbiA9IChOU0J1
dHRvbiAqKWNyZWF0ZUNvbnRyb2xXaXRoTWVkaWFVSUNvbnRyb2xUeXBlKE1lZGlhVUlDb250cm9s
OjpQbGF5UGF1c2VCdXR0b24sIE5TTWFrZVJlY3QoY2VudGVyLCB3aW5kb3dIZWlnaHQgLSBwbGF5
QnV0dG9uVG9wTWFyZ2luIC0gcGxheUJ1dHRvbkhlaWdodCwgcGxheUJ1dHRvbldpZHRoLCBwbGF5
QnV0dG9uSGVpZ2h0KSk7CiAgICAgQVNTRVJUKFtfcGxheUJ1dHRvbiBpc0tpbmRPZkNsYXNzOltO
U0J1dHRvbiBjbGFzc11dKTsKICAgICBbX3BsYXlCdXR0b24gc2V0VGFyZ2V0OnNlbGZdOwogICAg
IFtfcGxheUJ1dHRvbiBzZXRBY3Rpb246QHNlbGVjdG9yKHRvZ2dsZVBsYXlpbmc6KV07CiAgICAg
W2NvbnRlbnRWaWV3IGFkZFN1YnZpZXc6X3BsYXlCdXR0b25dOwogCiAgICAgQ0dGbG9hdCBjbG9z
ZVRvUmlnaHQgPSB3aW5kb3dXaWR0aCAtIGhvcml6b250YWxNYXJnaW4gLSBleGl0RnVsbHNjcmVl
bkJ1dHRvbldpZHRoOwotICAgIE5TQ29udHJvbCAqZXhpdEZ1bGxzY3JlZW5CdXR0b24gPSBjcmVh
dGVDb250cm9sV2l0aE1lZGlhVUlDb250cm9sVHlwZSh3a01lZGlhVUlDb250cm9sRXhpdEZ1bGxz
Y3JlZW5CdXR0b24sIE5TTWFrZVJlY3QoY2xvc2VUb1JpZ2h0LCB3aW5kb3dIZWlnaHQgLSBleGl0
RnVsbHNjcmVlbkJ1dHRvblRvcE1hcmdpbiAtIGV4aXRGdWxsc2NyZWVuQnV0dG9uSGVpZ2h0LCBl
eGl0RnVsbHNjcmVlbkJ1dHRvbldpZHRoLCBleGl0RnVsbHNjcmVlbkJ1dHRvbkhlaWdodCkpOwor
ICAgIE5TQ29udHJvbCAqZXhpdEZ1bGxzY3JlZW5CdXR0b24gPSBjcmVhdGVDb250cm9sV2l0aE1l
ZGlhVUlDb250cm9sVHlwZShNZWRpYVVJQ29udHJvbDo6RXhpdEZ1bGxzY3JlZW5CdXR0b24sIE5T
TWFrZVJlY3QoY2xvc2VUb1JpZ2h0LCB3aW5kb3dIZWlnaHQgLSBleGl0RnVsbHNjcmVlbkJ1dHRv
blRvcE1hcmdpbiAtIGV4aXRGdWxsc2NyZWVuQnV0dG9uSGVpZ2h0LCBleGl0RnVsbHNjcmVlbkJ1
dHRvbldpZHRoLCBleGl0RnVsbHNjcmVlbkJ1dHRvbkhlaWdodCkpOwogICAgIFtleGl0RnVsbHNj
cmVlbkJ1dHRvbiBzZXRBY3Rpb246QHNlbGVjdG9yKGV4aXRGdWxsc2NyZWVuOildOwogICAgIFtl
eGl0RnVsbHNjcmVlbkJ1dHRvbiBzZXRUYXJnZXQ6c2VsZl07CiAgICAgW2NvbnRlbnRWaWV3IGFk
ZFN1YnZpZXc6ZXhpdEZ1bGxzY3JlZW5CdXR0b25dOwpAQCAtMzM1LDI3ICs0MzcsMjcgQEAgLSAo
dm9pZCl3aW5kb3dEaWRMb2FkCiAgICAgCiAgICAgQ0dGbG9hdCB2b2x1bWVDb250cm9sc0JvdHRv
bSA9IHdpbmRvd0hlaWdodCAtIHZvbHVtZUNvbnRyb2xzVG9wTWFyZ2luIC0gdm9sdW1lQnV0dG9u
SGVpZ2h0OwogICAgIENHRmxvYXQgbGVmdCA9IGhvcml6b250YWxNYXJnaW47Ci0gICAgTlNDb250
cm9sICp2b2x1bWVEb3duQnV0dG9uID0gY3JlYXRlQ29udHJvbFdpdGhNZWRpYVVJQ29udHJvbFR5
cGUod2tNZWRpYVVJQ29udHJvbFZvbHVtZURvd25CdXR0b24sIE5TTWFrZVJlY3QobGVmdCwgdm9s
dW1lQ29udHJvbHNCb3R0b20sIHZvbHVtZUJ1dHRvbldpZHRoLCB2b2x1bWVCdXR0b25IZWlnaHQp
KTsKKyAgICBOU0NvbnRyb2wgKnZvbHVtZURvd25CdXR0b24gPSBjcmVhdGVDb250cm9sV2l0aE1l
ZGlhVUlDb250cm9sVHlwZShNZWRpYVVJQ29udHJvbDo6Vm9sdW1lRG93bkJ1dHRvbiwgTlNNYWtl
UmVjdChsZWZ0LCB2b2x1bWVDb250cm9sc0JvdHRvbSwgdm9sdW1lQnV0dG9uV2lkdGgsIHZvbHVt
ZUJ1dHRvbkhlaWdodCkpOwogICAgIFtjb250ZW50VmlldyBhZGRTdWJ2aWV3OnZvbHVtZURvd25C
dXR0b25dOwogICAgIFt2b2x1bWVEb3duQnV0dG9uIHNldFRhcmdldDpzZWxmXTsKICAgICBbdm9s
dW1lRG93bkJ1dHRvbiBzZXRBY3Rpb246QHNlbGVjdG9yKHNldFZvbHVtZVRvWmVybzopXTsKICAg
ICBbdm9sdW1lRG93bkJ1dHRvbiByZWxlYXNlXTsKIAogICAgIGxlZnQgKz0gdm9sdW1lQnV0dG9u
V2lkdGg7Ci0gICAgX3ZvbHVtZVNsaWRlciA9IGNyZWF0ZUNvbnRyb2xXaXRoTWVkaWFVSUNvbnRy
b2xUeXBlKHdrTWVkaWFVSUNvbnRyb2xTbGlkZXIsIE5TTWFrZVJlY3QobGVmdCwgdm9sdW1lQ29u
dHJvbHNCb3R0b20gKyBDR0Zsb29yKCh2b2x1bWVCdXR0b25IZWlnaHQgLSB2b2x1bWVTbGlkZXJI
ZWlnaHQpIC8gMiksIHZvbHVtZVNsaWRlcldpZHRoLCB2b2x1bWVTbGlkZXJIZWlnaHQpKTsKKyAg
ICBfdm9sdW1lU2xpZGVyID0gY3JlYXRlQ29udHJvbFdpdGhNZWRpYVVJQ29udHJvbFR5cGUoTWVk
aWFVSUNvbnRyb2w6OlNsaWRlciwgTlNNYWtlUmVjdChsZWZ0LCB2b2x1bWVDb250cm9sc0JvdHRv
bSArIENHRmxvb3IoKHZvbHVtZUJ1dHRvbkhlaWdodCAtIHZvbHVtZVNsaWRlckhlaWdodCkgLyAy
KSwgdm9sdW1lU2xpZGVyV2lkdGgsIHZvbHVtZVNsaWRlckhlaWdodCkpOwogICAgIFtfdm9sdW1l
U2xpZGVyIHNldFZhbHVlOltOU051bWJlciBudW1iZXJXaXRoRG91YmxlOltzZWxmIG1heFZvbHVt
ZV1dIGZvcktleTpAIm1heFZhbHVlIl07CiAgICAgW192b2x1bWVTbGlkZXIgc2V0VGFyZ2V0OnNl
bGZdOwogICAgIFtfdm9sdW1lU2xpZGVyIHNldEFjdGlvbjpAc2VsZWN0b3Iodm9sdW1lQ2hhbmdl
ZDopXTsKICAgICBbY29udGVudFZpZXcgYWRkU3Vidmlldzpfdm9sdW1lU2xpZGVyXTsKIAogICAg
IGxlZnQgKz0gdm9sdW1lU2xpZGVyV2lkdGggKyB2b2x1bWVVcEJ1dHRvbkxlZnRNYXJnaW47Ci0g
ICAgTlNDb250cm9sICp2b2x1bWVVcEJ1dHRvbiA9IGNyZWF0ZUNvbnRyb2xXaXRoTWVkaWFVSUNv
bnRyb2xUeXBlKHdrTWVkaWFVSUNvbnRyb2xWb2x1bWVVcEJ1dHRvbiwgTlNNYWtlUmVjdChsZWZ0
LCB2b2x1bWVDb250cm9sc0JvdHRvbSwgdm9sdW1lQnV0dG9uV2lkdGgsIHZvbHVtZUJ1dHRvbkhl
aWdodCkpOworICAgIE5TQ29udHJvbCAqdm9sdW1lVXBCdXR0b24gPSBjcmVhdGVDb250cm9sV2l0
aE1lZGlhVUlDb250cm9sVHlwZShNZWRpYVVJQ29udHJvbDo6Vm9sdW1lVXBCdXR0b24sIE5TTWFr
ZVJlY3QobGVmdCwgdm9sdW1lQ29udHJvbHNCb3R0b20sIHZvbHVtZUJ1dHRvbldpZHRoLCB2b2x1
bWVCdXR0b25IZWlnaHQpKTsKICAgICBbdm9sdW1lVXBCdXR0b24gc2V0VGFyZ2V0OnNlbGZdOwog
ICAgIFt2b2x1bWVVcEJ1dHRvbiBzZXRBY3Rpb246QHNlbGVjdG9yKHNldFZvbHVtZVRvTWF4aW11
bTopXTsKICAgICBbY29udGVudFZpZXcgYWRkU3Vidmlldzp2b2x1bWVVcEJ1dHRvbl07CiAgICAg
W3ZvbHVtZVVwQnV0dG9uIHJlbGVhc2VdOwogCi0gICAgX3RpbWVsaW5lID0gd2tDcmVhdGVNZWRp
YVVJQ29udHJvbCh3a01lZGlhVUlDb250cm9sVGltZWxpbmUpOworICAgIF90aW1lbGluZSA9IGNy
ZWF0ZU1lZGlhVUlDb250cm9sKE1lZGlhVUlDb250cm9sOjpUaW1lbGluZSk7CiAKICAgICBbX3Rp
bWVsaW5lIHNldFRhcmdldDpzZWxmXTsKICAgICBbX3RpbWVsaW5lIHNldEFjdGlvbjpAc2VsZWN0
b3IodGltZWxpbmVQb3NpdGlvbkNoYW5nZWQ6KV07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYlN5c3RlbUludGVyZmFjZS5tbSBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViU3lzdGVtSW50ZXJm
YWNlLm1tCmluZGV4IDBkZGQ1NzE0NTliODU2ZjM5MjA1ZTExMGNjMDBjY2NhZWUzZmQwZWUuLmJk
YTVkNzNkZmMxMjJmM2UwMjIzYWFhZTU1Mjg0ZDRiMzllNTczY2UgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViU3lzdGVtSW50ZXJmYWNl
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2Vi
U3lzdGVtSW50ZXJmYWNlLm1tCkBAIC00MywxOCArNDMsNiBAQCB2b2lkIEluaXRXZWJDb3JlU3lz
dGVtSW50ZXJmYWNlKHZvaWQpCiAgICAgICAgIElOSVQoRHJhd01lZGlhVUlQYXJ0KTsKICAgICAg
ICAgSU5JVChIaXRUZXN0TWVkaWFVSVBhcnQpOwogICAgICAgICBJTklUKE1lYXN1cmVNZWRpYVVJ
UGFydCk7Ci0gICAgICAgIElOSVQoUVRJbmNsdWRlT25seU1vZGVybk1lZGlhRmlsZVR5cGVzKTsK
LSAgICAgICAgSU5JVChRVE1vdmllRGlzYWJsZUNvbXBvbmVudCk7Ci0gICAgICAgIElOSVQoUVRN
b3ZpZUdldFR5cGUpOwotICAgICAgICBJTklUKFFUTW92aWVIYXNDbG9zZWRDYXB0aW9ucyk7Ci0g
ICAgICAgIElOSVQoUVRNb3ZpZU1heFRpbWVMb2FkZWQpOwotICAgICAgICBJTklUKFFUTW92aWVN
YXhUaW1lTG9hZGVkQ2hhbmdlTm90aWZpY2F0aW9uKTsKLSAgICAgICAgSU5JVChRVE1vdmllUmVz
b2x2ZWRVUkwpOwotICAgICAgICBJTklUKFFUTW92aWVTZWxlY3RQcmVmZXJyZWRBbHRlcm5hdGVz
KTsKLSAgICAgICAgSU5JVChRVE1vdmllU2V0U2hvd0Nsb3NlZENhcHRpb25zKTsKLSAgICAgICAg
SU5JVChRVEdldFNpdGVzSW5NZWRpYURvd25sb2FkQ2FjaGUpOwotICAgICAgICBJTklUKFFUQ2xl
YXJNZWRpYURvd25sb2FkQ2FjaGVGb3JTaXRlKTsKLSAgICAgICAgSU5JVChRVENsZWFyTWVkaWFE
b3dubG9hZENhY2hlKTsKICNlbmRpZgogICAgICAgICBJTklUKFNldENPTk5FQ1RQcm94eUF1dGhv
cml6YXRpb25Gb3JTdHJlYW0pOwogICAgICAgICBJTklUKFNldENPTk5FQ1RQcm94eUZvclN0cmVh
bSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJTeXN0ZW1JbnRlcmZhY2UubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJTeXN0ZW1JbnRlcmZhY2UubW0KaW5kZXggYTMyMDI0NTM3Y2FlNzc0MDRkMTIyYTNh
Mzg1NGQzYzJlN2JhMjQ5MC4uMTc0NjU4NmIyNDJmNTJlMDdhOTlmZTkxNWFhNmI0ZjYyYTNiYzVk
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
U3lzdGVtSW50ZXJmYWNlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYlN5c3RlbUludGVyZmFjZS5tbQpAQCAtNDksMjUgKzQ5LDkgQEAgdm9pZCBJbml0
V2ViQ29yZVN5c3RlbUludGVyZmFjZSh2b2lkKQogICAgIElOSVQoRHJhd01lZGlhU2xpZGVyVHJh
Y2spOwogICAgIElOSVQoSGl0VGVzdE1lZGlhVUlQYXJ0KTsKICAgICBJTklUKE1lYXN1cmVNZWRp
YVVJUGFydCk7Ci0gICAgSU5JVChDcmVhdGVNZWRpYVVJQmFja2dyb3VuZFZpZXcpOwotICAgIElO
SVQoQ3JlYXRlTWVkaWFVSUNvbnRyb2wpOwogI2VuZGlmCiAgICAgSU5JVChTZXRDT05ORUNUUHJv
eHlBdXRob3JpemF0aW9uRm9yU3RyZWFtKTsKICAgICBJTklUKFNldENPTk5FQ1RQcm94eUZvclN0
cmVhbSk7Ci0jaWYgRU5BQkxFKFZJREVPKSAmJiAhUExBVEZPUk0oSU9TKQotICAgIElOSVQoUVRJ
bmNsdWRlT25seU1vZGVybk1lZGlhRmlsZVR5cGVzKTsKLSAgICBJTklUKFFUTW92aWVEaXNhYmxl
Q29tcG9uZW50KTsKLSAgICBJTklUKFFUTW92aWVNYXhUaW1lTG9hZGVkKTsKLSAgICBJTklUKFFU
TW92aWVNYXhUaW1lTG9hZGVkQ2hhbmdlTm90aWZpY2F0aW9uKTsKLSAgICBJTklUKFFUTW92aWVH
ZXRUeXBlKTsKLSAgICBJTklUKFFUTW92aWVIYXNDbG9zZWRDYXB0aW9ucyk7Ci0gICAgSU5JVChR
VE1vdmllUmVzb2x2ZWRVUkwpOwotICAgIElOSVQoUVRNb3ZpZVNldFNob3dDbG9zZWRDYXB0aW9u
cyk7Ci0gICAgSU5JVChRVE1vdmllU2VsZWN0UHJlZmVycmVkQWx0ZXJuYXRlcyk7Ci0gICAgSU5J
VChRVEdldFNpdGVzSW5NZWRpYURvd25sb2FkQ2FjaGUpOwotICAgIElOSVQoUVRDbGVhck1lZGlh
RG93bmxvYWRDYWNoZUZvclNpdGUpOwotICAgIElOSVQoUVRDbGVhck1lZGlhRG93bmxvYWRDYWNo
ZSk7Ci0jZW5kaWYKIAogI2lmICFQTEFURk9STShJT1MpCiAgICAgSU5JVChFeGVjdXRhYmxlV2Fz
TGlua2VkT25PckJlZm9yZVNub3dMZW9wYXJkKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>320139</attachid>
            <date>2017-09-07 10:53:29 -0700</date>
            <delta_ts>2017-09-07 11:47:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-176472-20170907105329.patch</filename>
            <type>text/plain</type>
            <size>34651</size>
            <attacher name="Andy Estes">aestes</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIxNjg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDY5MjY5MTkxOTNmNWE2
MjdjNmRiYzQyNDFiYTVlY2M3ZDdhNmU3NC4uYWUyODQ1OTMzYzJlNDk2MTVhYTMyOWE1OWI3YTky
YTc0NjNkZmVlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDE3LTA5LTA2ICBBbmR5
IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBbTWFjXSBVcHN0cmVhbSBRVEtp
dC1yZWxhdGVkIFdlYktpdFN5c3RlbUludGVyZmFjZSBmdW5jdGlvbnMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NjQ3MgorCisgICAgICAgIFJldmll
d2VkIGJ5IEVyaWMgQ2FybHNvbi4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9N
ZWRpYVBsYXllclByaXZhdGVRVEtpdC5tbToKKyAgICAgICAgKFdlYkNvcmU6OmRpc2FibGVDb21w
b25lbnRzT25jZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6
Y3JlYXRlUVRNb3ZpZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVRVEtp
dDo6aGFzQ2xvc2VkQ2FwdGlvbnMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5
ZXJQcml2YXRlUVRLaXQ6OnNldENsb3NlZENhcHRpb25zVmlzaWJsZSk6CisgICAgICAgIChXZWJD
b3JlOjpzZWxlY3RQcmVmZXJyZWRBbHRlcm5hdGVUcmFja0Zvck1lZGlhVHlwZSk6CisgICAgICAg
IChXZWJDb3JlOjpzZWxlY3RQcmVmZXJyZWRBbHRlcm5hdGVzKToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0Ojp1cGRhdGVTdGF0ZXMpOgorICAgICAgICAoV2ViQ29y
ZTo6bWltZU1vZGVyblR5cGVzQ2FjaGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQ
cml2YXRlUVRLaXQ6Om9yaWdpbnNJbk1lZGlhQ2FjaGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFQbGF5ZXJQcml2YXRlUVRLaXQ6OmNsZWFyTWVkaWFDYWNoZSk6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6Y2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2lucyk6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6aGFzU2luZ2xlU2VjdXJp
dHlPcmlnaW4gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlUVRL
aXQ6Om1vdmllTG9hZFR5cGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQ
cml2YXRlUVRLaXQ6OmNhblNhdmVNZWRpYURhdGEgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3Jt
L21hYy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmg6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1dl
YkNvcmVTeXN0ZW1JbnRlcmZhY2UubW06CisgICAgICAgICogcGxhdGZvcm0vbWFjL1dlYlZpZGVv
RnVsbHNjcmVlbkhVRFdpbmRvd0NvbnRyb2xsZXIubW06CisgICAgICAgIChjcmVhdGVNZWRpYVVJ
Q29udHJvbCk6CisgICAgICAgIChjcmVhdGVDb250cm9sV2l0aE1lZGlhVUlDb250cm9sVHlwZSk6
CisgICAgICAgIChjcmVhdGVNZWRpYVVJQmFja2dyb3VuZFZpZXcpOgorICAgICAgICAoLVtXZWJW
aWRlb0Z1bGxzY3JlZW5IVURXaW5kb3dDb250cm9sbGVyIHdpbmRvd0RpZExvYWRdKToKKwogMjAx
Ny0wOS0wNiAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgogCiAgICAgICAgIFJFR1JFU1NJ
T04gKHIyMjE1OTgpOiBMZWdhY3kgInJvdW5kIiBhbmQgImJldmVsIiBvcHRpb25zIGNhbiBubyBs
b25nZXIgYmUgdXNlZCB3aXRoIHRoZSBsZWdhY3kgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEIHNl
dExpbmVKb2luIG9wZXJhdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKaW5kZXggZWU0MGU0NjE3NTU5NmJj
NTIyZjMxN2M2YzU5OGRiMDg0YzE3M2M1Ni4uZWVhNzkwNWM1ZWRjMDNhYTgxNzgwMWZjM2NkMGNh
OTAxMjg4MzhiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTctMDkt
MDYgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29tPgorCisgICAgICAgIFtNYWNdIFVwc3Ry
ZWFtIFFUS2l0LXJlbGF0ZWQgV2ViS2l0U3lzdGVtSW50ZXJmYWNlIGZ1bmN0aW9ucworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc2NDcyCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgRXJpYyBDYXJsc29uLgorCisgICAgICAgICogcGFsL3NwaS9tYWMvUVRL
aXRTUEkuaDoKKwogMjAxNy0wOS0wNCAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtp
dC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjIyMTQ5NCBhbmQgcjIy
MTUwMC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKaW5kZXggMzY0ZDhlNWQ4MGQyNTVkNjkzNmZiMmUxYTBiZDQ2MzdhYjU5YTA2
ZS4uZjY3NjU3MTZjZDQ5YzZhMDBjNmY5OWU3ZTQwZjg3NTgyNTg4MjdhOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxMyBAQAorMjAxNy0wOS0wNiAgQW5keSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+
CisKKyAgICAgICAgW01hY10gVXBzdHJlYW0gUVRLaXQtcmVsYXRlZCBXZWJLaXRTeXN0ZW1JbnRl
cmZhY2UgZnVuY3Rpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNzY0NzIKKworICAgICAgICBSZXZpZXdlZCBieSBFcmljIENhcmxzb24uCisKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJTeXN0ZW1JbnRlcmZhY2Uu
bW06CisgICAgICAgIChJbml0V2ViQ29yZVN5c3RlbUludGVyZmFjZSk6CisKIDIwMTctMDktMDYg
IEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CiAKICAgICAgICAgRGVueSB0aGly
ZC1wYXJ0eSBjb29raWUgY3JlYXRpb24gZm9yIHByZXZhbGVudCByZXNvdXJjZXMgd2l0aG91dCBp
bnRlcmFjdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4IDdlNTFlYmFmNmJmZjhl
ZmIxZmNjY2Q4MWQyODQwZmY3MmI0NGM1ZTguLjBhZDdhMmE3MzIxNzY1ZDY0ZWVhYThiYzM2OGYw
M2RiODIzNGQzNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBA
QAorMjAxNy0wOS0wNiAgQW5keSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+CisKKyAgICAgICAg
W01hY10gVXBzdHJlYW0gUVRLaXQtcmVsYXRlZCBXZWJLaXRTeXN0ZW1JbnRlcmZhY2UgZnVuY3Rp
b25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzY0
NzIKKworICAgICAgICBSZXZpZXdlZCBieSBFcmljIENhcmxzb24uCisKKyAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9XZWJTeXN0ZW1JbnRlcmZhY2UubW06CisgICAgICAgIChJbml0V2ViQ29yZVN5
c3RlbUludGVyZmFjZSk6CisKIDIwMTctMDktMDUgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRv
bkBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIHNvbWUgdW51c2VkIGJpdHMgb2YgY29kZSBh
bmQgcmVzb3VyY2VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9tYWMv
UVRLaXRTUEkuaCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL21hYy9RVEtpdFNQSS5oCmlu
ZGV4IDcxNzg5Y2RmMjVkYThhZjQwNGI3MGE0Y2I1MTljMWNhM2Q4NTJlMmYuLjEzYjFlYTFkMmM3
Y2EzZGExMTI4MjRjZjA0MzEwMDM5OTdhNWYzMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1BBTC9wYWwvc3BpL21hYy9RVEtpdFNQSS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwv
c3BpL21hYy9RVEtpdFNQSS5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTYtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTI1LDggKzI1LDEyIEBACiAKICNwcmFnbWEgb25jZQogCi0jaWYg
VVNFKEFQUExFX0lOVEVSTkFMX1NESykgfHwgX19NQUNfT1NfWF9WRVJTSU9OX01BWF9BTExPV0VE
IDwgMTAxMjAwCi0jaW1wb3J0IDxRVEtpdC9RVEtpdC5oPgorI2lmIFVTRShBUFBMRV9JTlRFUk5B
TF9TREspCisKKyNpbXBvcnQgPFFUS2l0L1FUSFVEQmFja2dyb3VuZFZpZXdfUHJpdmF0ZS5oPgor
I2ltcG9ydCA8UVRLaXQvUVRLaXRfUHJpdmF0ZS5oPgorI2ltcG9ydCA8UVRLaXQvUVRVdGlsaXRp
ZXNfUHJpdmF0ZS5oPgorCiAjZWxzZQogCiBlbnVtIHsKQEAgLTQ4LDYgKzUyLDE2IEBAIHR5cGVk
ZWYgZW51bSB7CiAgICAgUVRJbmNsdWRlQ29tbW9uVHlwZXMgPSAwLAogfSBRVE1vdmllRmlsZVR5
cGVPcHRpb25zOwogCitlbnVtIHsKKyAgICBRVE1vdmllVHlwZVVua25vd24gPSAwLAorICAgIFFU
TW92aWVUeXBlTG9jYWwsCisgICAgUVRNb3ZpZVR5cGVGYXN0U3RhcnQsCisgICAgUVRNb3ZpZVR5
cGVMaXZlU3RyZWFtLAorICAgIFFUTW92aWVUeXBlU3RvcmVkU3RyZWFtCit9OworCitAY2xhc3Mg
UVRUcmFjazsKKwogQGludGVyZmFjZSBRVE1lZGlhIDogTlNPYmplY3QKIAogLSAoaWQpYXR0cmli
dXRlRm9yS2V5OihOU1N0cmluZyAqKWF0dHJpYnV0ZUtleTsKQEAgLTU4LDYgKzcyLDggQEAgdHlw
ZWRlZiBlbnVtIHsKIAogKyAoTlNBcnJheSAqKW1vdmllRmlsZVR5cGVzOihRVE1vdmllRmlsZVR5
cGVPcHRpb25zKXR5cGVzOwogCisrICh2b2lkKWRpc2FibGVDb21wb25lbnQ6KENvbXBvbmVudERl
c2NyaXB0aW9uKWNvbXBvbmVudDsKKwogLSAoaWQpaW5pdFdpdGhBdHRyaWJ1dGVzOihOU0RpY3Rp
b25hcnkgKilhdHRyaWJ1dGVzIGVycm9yOihOU0Vycm9yICoqKWVycm9yUHRyOwogCiAtICh2b2lk
KXBsYXk7CkBAIC04MSw2ICs5NywxMSBAQCB0eXBlZGVmIGVudW0gewogCiAtIChOU0FycmF5ICop
dHJhY2tzOwogCistIChOU0FycmF5ICopYWx0ZXJuYXRlR3JvdXBUeXBlczsKKy0gKE5TQXJyYXkg
KilhbHRlcm5hdGVzRm9yTWVkaWFUeXBlOihOU1N0cmluZyAqKXR5cGU7CistICh2b2lkKWRlc2Vs
ZWN0QWx0ZXJuYXRlR3JvdXBUcmFjazooUVRUcmFjayAqKWFsdGVybmF0ZVRyYWNrOworLSAodm9p
ZClzZWxlY3RBbHRlcm5hdGVHcm91cFRyYWNrOihRVFRyYWNrICopYWx0ZXJuYXRlVHJhY2s7CisK
IEBlbmQKIAogQGludGVyZmFjZSBRVE1vdmllTGF5ZXIgOiBDQUxheWVyCkBAIC0xMDYsNCArMTI3
LDIwIEBAIHR5cGVkZWYgZW51bSB7CiAKIEBlbmQKIAorQGludGVyZmFjZSBRVEhVREJhY2tncm91
bmRWaWV3IDogTlNWaWV3CisKKy0gKHZvaWQpc2V0Q29udGVudEJvcmRlclBvc2l0aW9uOihDR0Zs
b2F0KWNvbnRlbnRCb3JkZXJQb3NpdGlvbjsKKworQGVuZAorCitAaW50ZXJmYWNlIFFUVXRpbGl0
aWVzIDogTlNPYmplY3QKKworKyAoaWQpcXRVdGlsaXRpZXM7CisKKy0gKE5TQXJyYXkgKilzaXRl
c0luRG93bmxvYWRDYWNoZTsKKy0gKHZvaWQpY2xlYXJEb3dubG9hZENhY2hlOworLSAodm9pZClj
bGVhckRvd25sb2FkQ2FjaGVGb3JTaXRlOihOU1N0cmluZyAqKXNpdGU7CisKK0BlbmQKKwogI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvTWVk
aWFQbGF5ZXJQcml2YXRlUVRLaXQubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9tYWMvTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQubW0KaW5kZXggODVjZjU2MWQ3MzMxNzk2NzZl
Y2Y4ZTlmZGFhMzZmYzBlN2U1OGIwMS4uYjEwYWU1NTFlOTQ0ZGZlN2Q5Njk5YmVmYjc0N2JhNzhk
ZGNmMjlmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFj
L01lZGlhUGxheWVyUHJpdmF0ZVFUS2l0Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL21hYy9NZWRpYVBsYXllclByaXZhdGVRVEtpdC5tbQpAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAsIDIwMTEgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA3LTIwMTcgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC01Miw2ICs1Miw3IEBAIFNPRlRfTElOSyhRVEtpdCwgUVRNYWtlVGltZSwgUVRUaW1l
LCAobG9uZyBsb25nIHRpbWVWYWx1ZSwgbG9uZyB0aW1lU2NhbGUpLCAodGltCiAKIFNPRlRfTElO
S19DTEFTUyhRVEtpdCwgUVRNb3ZpZSkKIFNPRlRfTElOS19DTEFTUyhRVEtpdCwgUVRNb3ZpZUxh
eWVyKQorU09GVF9MSU5LX0NMQVNTKFFUS2l0LCBRVFV0aWxpdGllcykKIAogU09GVF9MSU5LX1BP
SU5URVIoUVRLaXQsIFFUVHJhY2tNZWRpYVR5cGVBdHRyaWJ1dGUsIE5TU3RyaW5nICopCiBTT0ZU
X0xJTktfUE9JTlRFUihRVEtpdCwgUVRNZWRpYVR5cGVBdHRyaWJ1dGUsIE5TU3RyaW5nICopCkBA
IC03MSw2ICs3Miw3IEBAIFNPRlRfTElOS19QT0lOVEVSKFFUS2l0LCBRVE1vdmllSXNBY3RpdmVB
dHRyaWJ1dGUsIE5TU3RyaW5nICopCiBTT0ZUX0xJTktfUE9JTlRFUihRVEtpdCwgUVRNb3ZpZUxv
YWRTdGF0ZUF0dHJpYnV0ZSwgTlNTdHJpbmcgKikKIFNPRlRfTElOS19QT0lOVEVSKFFUS2l0LCBR
VE1vdmllTG9hZFN0YXRlRXJyb3JBdHRyaWJ1dGUsIE5TU3RyaW5nICopCiBTT0ZUX0xJTktfUE9J
TlRFUihRVEtpdCwgUVRNb3ZpZUxvYWRTdGF0ZURpZENoYW5nZU5vdGlmaWNhdGlvbiwgTlNTdHJp
bmcgKikKK1NPRlRfTElOS19QT0lOVEVSKFFUS2l0LCBRVE1vdmllTG9hZGVkUmFuZ2VzRGlkQ2hh
bmdlTm90aWZpY2F0aW9uLCBOU1N0cmluZyAqKTsKIFNPRlRfTElOS19QT0lOVEVSKFFUS2l0LCBR
VE1vdmllTmF0dXJhbFNpemVBdHRyaWJ1dGUsIE5TU3RyaW5nICopCiBTT0ZUX0xJTktfUE9JTlRF
UihRVEtpdCwgUVRNb3ZpZUN1cnJlbnRTaXplQXR0cmlidXRlLCBOU1N0cmluZyAqKQogU09GVF9M
SU5LX1BPSU5URVIoUVRLaXQsIFFUTW92aWVQcmV2ZW50RXh0ZXJuYWxVUkxMaW5rc0F0dHJpYnV0
ZSwgTlNTdHJpbmcgKikKQEAgLTk3LDYgKzk5LDcgQEAgQGVuZAogCiAjZGVmaW5lIFFUTW92aWUg
Z2V0UVRNb3ZpZUNsYXNzKCkKICNkZWZpbmUgUVRNb3ZpZUxheWVyIGdldFFUTW92aWVMYXllckNs
YXNzKCkKKyNkZWZpbmUgUVRVdGlsaXRpZXMgZ2V0UVRVdGlsaXRpZXNDbGFzcygpCiAKICNkZWZp
bmUgUVRUcmFja01lZGlhVHlwZUF0dHJpYnV0ZSBnZXRRVFRyYWNrTWVkaWFUeXBlQXR0cmlidXRl
KCkKICNkZWZpbmUgUVRNZWRpYVR5cGVBdHRyaWJ1dGUgZ2V0UVRNZWRpYVR5cGVBdHRyaWJ1dGUo
KQpAQCAtMTE2LDYgKzExOSw3IEBAIEBlbmQKICNkZWZpbmUgUVRNb3ZpZUxvYWRTdGF0ZUF0dHJp
YnV0ZSBnZXRRVE1vdmllTG9hZFN0YXRlQXR0cmlidXRlKCkKICNkZWZpbmUgUVRNb3ZpZUxvYWRT
dGF0ZUVycm9yQXR0cmlidXRlIGdldFFUTW92aWVMb2FkU3RhdGVFcnJvckF0dHJpYnV0ZSgpCiAj
ZGVmaW5lIFFUTW92aWVMb2FkU3RhdGVEaWRDaGFuZ2VOb3RpZmljYXRpb24gZ2V0UVRNb3ZpZUxv
YWRTdGF0ZURpZENoYW5nZU5vdGlmaWNhdGlvbigpCisjZGVmaW5lIFFUTW92aWVMb2FkZWRSYW5n
ZXNEaWRDaGFuZ2VOb3RpZmljYXRpb24gZ2V0UVRNb3ZpZUxvYWRlZFJhbmdlc0RpZENoYW5nZU5v
dGlmaWNhdGlvbigpCiAjZGVmaW5lIFFUTW92aWVOYXR1cmFsU2l6ZUF0dHJpYnV0ZSBnZXRRVE1v
dmllTmF0dXJhbFNpemVBdHRyaWJ1dGUoKQogI2RlZmluZSBRVE1vdmllQ3VycmVudFNpemVBdHRy
aWJ1dGUgZ2V0UVRNb3ZpZUN1cnJlbnRTaXplQXR0cmlidXRlKCkKICNkZWZpbmUgUVRNb3ZpZVBy
ZXZlbnRFeHRlcm5hbFVSTExpbmtzQXR0cmlidXRlIGdldFFUTW92aWVQcmV2ZW50RXh0ZXJuYWxV
UkxMaW5rc0F0dHJpYnV0ZSgpCkBAIC0yOTIsNyArMjk2LDcgQEAgc3RhdGljIHZvaWQgZGlzYWJs
ZUNvbXBvbmVudHNPbmNlKCkKICAgICAvLyBRVEtpdFNlcnZlciBoYXMgbm90IHlldCBzdGFydGVk
LiAgQXMgYSByZXN1bHQsIHdlIG11c3QgcGFzcyBpbiBleGFjdGx5IHRoZSBmbGFncyB3ZSB3YW50
IHRvCiAgICAgLy8gZGlzYWJsZSBwZXIgY29tcG9uZW50LiAgQXMgYSBmYWlsc2FmZSwgaWYgaW4g
dGhlIGZ1dHVyZSB0aGVzZSBmbGFncyBjaGFuZ2UsIHdlIHdpbGwgZGlzYWJsZSB0aGUKICAgICAv
LyBQREYgY29tcG9uZW50cyBmb3IgYSB0aGlyZCB0aW1lIHdpdGggYSB3aWxkY2FyZCBmbGFncyBm
aWVsZDoKLSAgICB1aW50MzJfdCBjb21wb25lbnRzVG9EaXNhYmxlWzExXVs1XSA9IHsKKyAgICBD
b21wb25lbnREZXNjcmlwdGlvbiBjb21wb25lbnRzVG9EaXNhYmxlWzExXSA9IHsKICAgICAgICAg
eydlYXQgJywgJ1RFWFQnLCAndGV4dCcsIDAsIDB9LAogICAgICAgICB7J2VhdCAnLCAnVFhUICcs
ICd0ZXh0JywgMCwgMH0sICAgIAogICAgICAgICB7J2VhdCAnLCAndXR4dCcsICd0ZXh0JywgMCwg
MH0sICAKQEAgLTMwNyw3ICszMTEsNyBAQCBzdGF0aWMgdm9pZCBkaXNhYmxlQ29tcG9uZW50c09u
Y2UoKQogICAgIH07CiAKICAgICBmb3IgKGF1dG8mIGNvbXBvbmVudCA6IGNvbXBvbmVudHNUb0Rp
c2FibGUpCi0gICAgICAgIHdrUVRNb3ZpZURpc2FibGVDb21wb25lbnQoY29tcG9uZW50KTsKKyAg
ICAgICAgW1FUTW92aWUgZGlzYWJsZUNvbXBvbmVudDpjb21wb25lbnRdOwogfQogCiB2b2lkIE1l
ZGlhUGxheWVyUHJpdmF0ZVFUS2l0OjpjcmVhdGVRVE1vdmllKE5TVVJMICp1cmwsIE5TRGljdGlv
bmFyeSAqbW92aWVBdHRyaWJ1dGVzKQpAQCAtMzQ1LDE0ICszNDksMTAgQEAgdm9pZCBNZWRpYVBs
YXllclByaXZhdGVRVEtpdDo6Y3JlYXRlUVRNb3ZpZShOU1VSTCAqdXJsLCBOU0RpY3Rpb25hcnkg
Km1vdmllQXR0cmkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgb2JqZWN0Om1fcXRNb3ZpZS5nZXQoKV07CiAKICAgICAvLyBJbiB1cGRhdGVTdGF0ZSgpLCB3
ZSB0cmFjayB3aGVuIG1heFRpbWVMb2FkZWQoKSA9PSBkdXJhdGlvbigpLgotICAgIC8vIEluIG5l
d2VyIHZlcnNpb24gb2YgUXVpY2tUaW1lLCBhIG5vdGlmaWNhdGlvbiBpcyBlbWl0dGVkIHdoZW4g
bWF4VGltZUxvYWRlZCBjaGFuZ2VzLgotICAgIC8vIEluIG9sZGVyIHZlcnNpb24gb2YgUXVpY2tU
aW1lLCBRVE1vdmllTG9hZFN0YXRlRGlkQ2hhbmdlTm90aWZpY2F0aW9uIGJlIGZpcmVkLgotICAg
IGlmIChOU1N0cmluZyAqbWF4VGltZUxvYWRlZENoYW5nZU5vdGlmaWNhdGlvbiA9IHdrUVRNb3Zp
ZU1heFRpbWVMb2FkZWRDaGFuZ2VOb3RpZmljYXRpb24oKSkgewotICAgICAgICBbW05TTm90aWZp
Y2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdIGFkZE9ic2VydmVyOm1fb2JqY09ic2VydmVyLmdl
dCgpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vs
ZWN0b3I6QHNlbGVjdG9yKGxvYWRlZFJhbmdlc0NoYW5nZWQ6KQotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOm1heFRpbWVMb2FkZWRDaGFu
Z2VOb3RpZmljYXRpb24KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG9iamVjdDptX3F0TW92aWUuZ2V0KCldOyAgICAgICAgCi0gICAgfQorICAgIFtb
TlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0gYWRkT2JzZXJ2ZXI6bV9vYmpjT2Jz
ZXJ2ZXIuZ2V0KCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNlbGVjdG9yOkBzZWxlY3Rvcihsb2FkZWRSYW5nZXNDaGFuZ2VkOikKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOlFUTW92aWVMb2FkZWRSYW5n
ZXNEaWRDaGFuZ2VOb3RpZmljYXRpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgb2JqZWN0Om1fcXRNb3ZpZS5nZXQoKV07CiAKICAgICBbW05TTm90aWZp
Y2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdIGFkZE9ic2VydmVyOm1fb2JqY09ic2VydmVyLmdl
dCgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3Rv
cjpAc2VsZWN0b3IocmF0ZUNoYW5nZWQ6KSAKQEAgLTc3MSwxOCArNzcxLDMwIEBAIGJvb2wgTWVk
aWFQbGF5ZXJQcml2YXRlUVRLaXQ6Omhhc0Nsb3NlZENhcHRpb25zKCkgY29uc3QKIHsKICAgICBp
ZiAoIW1ldGFEYXRhQXZhaWxhYmxlKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1
cm4gd2tRVE1vdmllSGFzQ2xvc2VkQ2FwdGlvbnMobV9xdE1vdmllLmdldCgpKTsgIAorICAgIHJl
dHVybiBbW21fcXRNb3ZpZSBhbHRlcm5hdGVHcm91cFR5cGVzXSBjb250YWluc09iamVjdDpAImNs
Y3AiXTsKIH0KIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6c2V0Q2xvc2VkQ2FwdGlv
bnNWaXNpYmxlKGJvb2wgY2xvc2VkQ2FwdGlvbnNWaXNpYmxlKQogewotICAgIGlmIChtZXRhRGF0
YUF2YWlsYWJsZSgpKSB7Ci0gICAgICAgIHdrUVRNb3ZpZVNldFNob3dDbG9zZWRDYXB0aW9ucyht
X3F0TW92aWUuZ2V0KCksIGNsb3NlZENhcHRpb25zVmlzaWJsZSk7CisgICAgaWYgKCFtZXRhRGF0
YUF2YWlsYWJsZSgpKQorICAgICAgICByZXR1cm47CiAKLSAgICAgICAgaWYgKGNsb3NlZENhcHRp
b25zVmlzaWJsZSAmJiBtX3F0VmlkZW9MYXllcikgewotICAgICAgICAgICAgLy8gQ2FwdGlvbnMg
d2lsbCBiZSByZW5kZXJlZCB1cHNpZGUgZG93biB1bmxlc3Mgd2UgZmxhZyB0aGUgbW92aWUgYXMg
ZmxpcHBlZCAoYWdhaW4pLiBTZWUgPHJkYXI6Ly83NDA4NDQwPi4KLSAgICAgICAgICAgIFttX3F0
VmlkZW9MYXllci5nZXQoKSBzZXRHZW9tZXRyeUZsaXBwZWQ6WUVTXTsKLSAgICAgICAgfQorICAg
IGlmICghW1ttX3F0TW92aWUgYWx0ZXJuYXRlR3JvdXBUeXBlc10gY29udGFpbnNPYmplY3Q6QCJj
bGNwIl0pCisgICAgICAgIHJldHVybjsKKworICAgIE5TQXJyYXkgKnRyYWNrQWx0ZXJuYXRlc0Fy
cmF5ID0gW21fcXRNb3ZpZSBhbHRlcm5hdGVzRm9yTWVkaWFUeXBlOkAiY2xjcCJdOworICAgIFFU
VHJhY2sgKnRyYWNrID0gdHJhY2tBbHRlcm5hdGVzQXJyYXlbMF1bQCJRVEFsdGVybmF0ZXNfUVRU
cmFjayJdOworICAgIGlmICghdHJhY2spCisgICAgICAgIHJldHVybjsKKworICAgIGlmICghY2xv
c2VkQ2FwdGlvbnNWaXNpYmxlKQorICAgICAgICBbbV9xdE1vdmllIGRlc2VsZWN0QWx0ZXJuYXRl
R3JvdXBUcmFjazp0cmFja107CisgICAgZWxzZQorICAgICAgICBbbV9xdE1vdmllIHNlbGVjdEFs
dGVybmF0ZUdyb3VwVHJhY2s6dHJhY2tdOworCisgICAgaWYgKGNsb3NlZENhcHRpb25zVmlzaWJs
ZSAmJiBtX3F0VmlkZW9MYXllcikgeworICAgICAgICAvLyBDYXB0aW9ucyB3aWxsIGJlIHJlbmRl
cmVkIHVwc2lkZSBkb3duIHVubGVzcyB3ZSBmbGFnIHRoZSBtb3ZpZSBhcyBmbGlwcGVkIChhZ2Fp
bikuIFNlZSA8cmRhcjovLzc0MDg0NDA+LgorICAgICAgICBbbV9xdFZpZGVvTGF5ZXIuZ2V0KCkg
c2V0R2VvbWV0cnlGbGlwcGVkOllFU107CiAgICAgfQogfQogCkBAIC05NDAsNiArOTUyLDU4IEBA
IHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6OnByZXBhcmVGb3JSZW5kZXJpbmcoKQogICAg
IGlmIChjdXJyZW50UmVuZGVyaW5nTW9kZSgpID09IE1lZGlhUmVuZGVyaW5nTW92aWVMYXllciB8
fCBwcmVmZXJyZWRSZW5kZXJpbmdNb2RlKCkgPT0gTWVkaWFSZW5kZXJpbmdNb3ZpZUxheWVyKQog
ICAgICAgICBtX3BsYXllci0+Y2xpZW50KCkubWVkaWFQbGF5ZXJSZW5kZXJpbmdNb2RlQ2hhbmdl
ZChtX3BsYXllcik7CiB9CisgICAgCitzdGF0aWMgdm9pZCBzZWxlY3RQcmVmZXJyZWRBbHRlcm5h
dGVUcmFja0Zvck1lZGlhVHlwZShRVE1vdmllICptb3ZpZSwgTlNTdHJpbmcgKm1lZGlhVHlwZSkK
K3sKKyAgICBOU0FycmF5ICphbHRlcm5hdGVzID0gW21vdmllIGFsdGVybmF0ZXNGb3JNZWRpYVR5
cGU6bWVkaWFUeXBlXTsKKyAgICBpZiAoIWFsdGVybmF0ZXMuY291bnQpCisgICAgICAgIHJldHVy
bjsKKworICAgIGF1dG8gbGFuZ3VhZ2VUb1FUVHJhY2tNYXAgPSBhZG9wdE5TKFtbTlNNdXRhYmxl
RGljdGlvbmFyeSBhbGxvY10gaW5pdFdpdGhDYXBhY2l0eTphbHRlcm5hdGVzLmNvdW50XSk7CisK
KyAgICBmb3IgKE5TVUludGVnZXIgaW5kZXggPSAwOyBpbmRleCA8IGFsdGVybmF0ZXMuY291bnQ7
ICsraW5kZXgpIHsKKyAgICAgICAgTlNEaWN0aW9uYXJ5ICphbHRlcm5hdGVEaWN0ID0gYWx0ZXJu
YXRlc1tpbmRleF07CisgICAgICAgIE5TU3RyaW5nICpsYW5ndWFnZVN0cmluZyA9IGFsdGVybmF0
ZURpY3RbQCJRVEFsdGVybmF0ZXNfTGFuZ3VhZ2VDb2RlRW5jb2RpbmdfSVNPXzYzOV8yVCJdOwor
ICAgICAgICBpZiAoIVtsYW5ndWFnZVN0cmluZyBjU3RyaW5nVXNpbmdFbmNvZGluZzprQ0ZTdHJp
bmdFbmNvZGluZ0FTQ0lJXSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBpZiAoIWxh
bmd1YWdlU3RyaW5nKQorICAgICAgICAgICAgbGFuZ3VhZ2VTdHJpbmcgPSBhbHRlcm5hdGVEaWN0
W0AiUVRBbHRlcm5hdGVzX0xhbmd1YWdlQ29kZUVuY29kaW5nX1JGQ180NjQ2Il07CisgICAgICAg
IGlmICghbGFuZ3VhZ2VTdHJpbmcpIHsKKyAgICAgICAgICAgIExhbmdDb2RlIGxhbmdDb2RlID0g
YWx0ZXJuYXRlRGljdFtAIlFUQWx0ZXJuYXRlc19MYW5ndWFnZUNvZGVFbmNvZGluZ19NYWNUeXBl
X0xhbmdDb2RlIl0uaW50VmFsdWU7CisgICAgICAgICAgICBhdXRvIGlkZW50aWZpZXIgPSBhZG9w
dENGKENGTG9jYWxlQ3JlYXRlQ2Fub25pY2FsTG9jYWxlSWRlbnRpZmllckZyb21TY3JpcHRNYW5h
Z2VyQ29kZXMoa0NGQWxsb2NhdG9yRGVmYXVsdCwgbGFuZ0NvZGUsIDApKTsKKyAgICAgICAgICAg
IGxhbmd1YWdlU3RyaW5nID0gKE5TU3RyaW5nICopaWRlbnRpZmllci5hdXRvcmVsZWFzZSgpOwor
ICAgICAgICB9CisgICAgICAgIGlmICghbGFuZ3VhZ2VTdHJpbmcpCisgICAgICAgICAgICBjb250
aW51ZTsKKworICAgICAgICBpZCBhbHRlcm5hdGVUcmFjayA9IGFsdGVybmF0ZURpY3RbQCJRVEFs
dGVybmF0ZXNfUVRUcmFjayJdOworICAgICAgICBpZiAoIWFsdGVybmF0ZVRyYWNrKQorICAgICAg
ICAgICAgY29udGludWU7CisKKyAgICAgICAgaWYgKCFbYWx0ZXJuYXRlVHJhY2sgYXR0cmlidXRl
Rm9yS2V5OkAiUVRUcmFja0VuYWJsZWRBdHRyaWJ1dGUiXS5ib29sVmFsdWUpCisgICAgICAgICAg
ICBjb250aW51ZTsKKyAgICAgICAgCisgICAgICAgIFtsYW5ndWFnZVRvUVRUcmFja01hcCBzZXRP
YmplY3Q6YWx0ZXJuYXRlVHJhY2sgZm9yS2V5Omxhbmd1YWdlU3RyaW5nXTsKKyAgICB9CisgICAg
CisgICAgTlNBcnJheSAqcHJlZmVycmVkTGFuZ3VhZ2VzID0gW05TQnVuZGxlIHByZWZlcnJlZExv
Y2FsaXphdGlvbnNGcm9tQXJyYXk6W2xhbmd1YWdlVG9RVFRyYWNrTWFwIGFsbEtleXNdIGZvclBy
ZWZlcmVuY2VzOm5pbF07CisgICAgaWYgKHByZWZlcnJlZExhbmd1YWdlcy5jb3VudCkgeworICAg
ICAgICBpZCBwcmVmZXJyZWRUcmFjayA9IFtsYW5ndWFnZVRvUVRUcmFja01hcCBvYmplY3RGb3JL
ZXk6cHJlZmVycmVkTGFuZ3VhZ2VzWzBdXTsKKyAgICAgICAgaWYgKHByZWZlcnJlZFRyYWNrKSB7
CisgICAgICAgICAgICAvLyArW05TQnVuZGxlIHByZWZlcnJlZExvY2FsaXphdGlvbnNGcm9tQXJy
YXk6Zm9yUHJlZmVyZW5jZXNdIG1heSByZXR1cm4gYSBsYW5ndWFnZSB3aGljaCB3YXMKKyAgICAg
ICAgICAgIC8vIG5vdCBwcmVzZW50IGluIHByZWZlcnJlZExhbmd1YWdlcywgYW5kIHdpbGwgdGhl
cmVmb3JlIG5vdCBoYXZlIGFuIGFzc29jaWF0ZWQgdHJhY2suCisgICAgICAgICAgICBbbW92aWUg
c2VsZWN0QWx0ZXJuYXRlR3JvdXBUcmFjazpwcmVmZXJyZWRUcmFja107CisgICAgICAgIH0KKyAg
ICB9Cit9CisKK3N0YXRpYyB2b2lkIHNlbGVjdFByZWZlcnJlZEFsdGVybmF0ZXMoUVRNb3ZpZSAq
bW92aWUpCit7CisgICAgc2VsZWN0UHJlZmVycmVkQWx0ZXJuYXRlVHJhY2tGb3JNZWRpYVR5cGUo
bW92aWUsIEAidmlkZSIpOworICAgIHNlbGVjdFByZWZlcnJlZEFsdGVybmF0ZVRyYWNrRm9yTWVk
aWFUeXBlKG1vdmllLCBAInNvdW4iKTsKKyAgICBzZWxlY3RQcmVmZXJyZWRBbHRlcm5hdGVUcmFj
a0Zvck1lZGlhVHlwZShtb3ZpZSwgQCJjcGxwIik7CisgICAgc2VsZWN0UHJlZmVycmVkQWx0ZXJu
YXRlVHJhY2tGb3JNZWRpYVR5cGUobW92aWUsIEAic2J0bCIpOworfQogCiB2b2lkIE1lZGlhUGxh
eWVyUHJpdmF0ZVFUS2l0Ojp1cGRhdGVTdGF0ZXMoKQogewpAQCAtOTY1LDcgKzEwMjksNyBAQCB2
b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0Ojp1cGRhdGVTdGF0ZXMoKQogICAgICAgICAgICAg
bG9hZFN0YXRlID0gUVRNb3ZpZUxvYWRTdGF0ZUVycm9yOwogCiAgICAgICAgIGlmIChsb2FkU3Rh
dGUgIT0gUVRNb3ZpZUxvYWRTdGF0ZUVycm9yKSB7Ci0gICAgICAgICAgICB3a1FUTW92aWVTZWxl
Y3RQcmVmZXJyZWRBbHRlcm5hdGVzKG1fcXRNb3ZpZS5nZXQoKSk7CisgICAgICAgICAgICBzZWxl
Y3RQcmVmZXJyZWRBbHRlcm5hdGVzKG1fcXRNb3ZpZS5nZXQoKSk7CiAgICAgICAgICAgICBjYWNo
ZU1vdmllU2NhbGUoKTsKICAgICAgICAgICAgIE1lZGlhUGxheWVyOjpNb3ZpZUxvYWRUeXBlIG1v
dmllVHlwZSA9IG1vdmllTG9hZFR5cGUoKTsKICAgICAgICAgICAgIG1faXNTdHJlYW1pbmcgPSBt
b3ZpZVR5cGUgPT0gTWVkaWFQbGF5ZXI6OlN0b3JlZFN0cmVhbSB8fCBtb3ZpZVR5cGUgPT0gTWVk
aWFQbGF5ZXI6OkxpdmVTdHJlYW07CkBAIC0xMjczLDcgKzEzMzcsOCBAQCBzdGF0aWMgY29uc3Qg
SGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mIG1pbWVDb21tb25UeXBl
c0NhY2hlKCkKIAogc3RhdGljIGNvbnN0IEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNp
dGl2ZUhhc2g+JiBtaW1lTW9kZXJuVHlwZXNDYWNoZSgpCiB7Ci0gICAgc3RhdGljIGNvbnN0IGF1
dG8gY2FjaGUgPSBtYWtlTmV2ZXJEZXN0cm95ZWQoY3JlYXRlRmlsZVR5cGVzU2V0KFtRVE1vdmll
IG1vdmllRmlsZVR5cGVzOihRVE1vdmllRmlsZVR5cGVPcHRpb25zKXdrUVRJbmNsdWRlT25seU1v
ZGVybk1lZGlhRmlsZVR5cGVzKCldKSk7CisgICAgc3RhdGljIFFUTW92aWVGaWxlVHlwZU9wdGlv
bnMgaW5jbHVkZU9ubHlNb2Rlcm5NZWRpYUZpbGVUeXBlcyA9IDEgPDwgODsKKyAgICBzdGF0aWMg
Y29uc3QgYXV0byBjYWNoZSA9IG1ha2VOZXZlckRlc3Ryb3llZChjcmVhdGVGaWxlVHlwZXNTZXQo
W1FUTW92aWUgbW92aWVGaWxlVHlwZXM6aW5jbHVkZU9ubHlNb2Rlcm5NZWRpYUZpbGVUeXBlc10p
KTsKICAgICByZXR1cm4gY2FjaGU7CiB9CiAKQEAgLTEzMjQsNyArMTM4OSw3IEBAIGJvb2wgTWVk
aWFQbGF5ZXJQcml2YXRlUVRLaXQ6OmlzQXZhaWxhYmxlKCkKIEhhc2hTZXQ8UmVmUHRyPFNlY3Vy
aXR5T3JpZ2luPj4gTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6Om9yaWdpbnNJbk1lZGlhQ2FjaGUo
Y29uc3QgU3RyaW5nJikKIHsKICAgICBIYXNoU2V0PFJlZlB0cjxTZWN1cml0eU9yaWdpbj4+IG9y
aWdpbnM7Ci0gICAgTlNBcnJheSAqbWVkaWFTaXRlcyA9IHdrUVRHZXRTaXRlc0luTWVkaWFEb3du
bG9hZENhY2hlKCk7CisgICAgTlNBcnJheSAqbWVkaWFTaXRlcyA9IFtbUVRVdGlsaXRpZXMgcXRV
dGlsaXRpZXNdIHNpdGVzSW5Eb3dubG9hZENhY2hlXTsKICAgICAKICAgICBmb3IgKE5TU3RyaW5n
ICpzaXRlIGluIG1lZGlhU2l0ZXMpIHsKICAgICAgICAgVVJMIHNpdGVBc1VSTCA9IFVSTChVUkwo
KSwgc2l0ZSk7CkBAIC0xMzM3LDE0ICsxNDAyLDE0IEBAIEhhc2hTZXQ8UmVmUHRyPFNlY3VyaXR5
T3JpZ2luPj4gTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6Om9yaWdpbnNJbk1lZGlhQ2FjaGUoY29u
CiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0OjpjbGVhck1lZGlhQ2FjaGUoY29uc3QgU3Ry
aW5nJiwgc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCkKIHsKICAgICBMT0co
TWVkaWEsICJNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6Y2xlYXJNZWRpYUNhY2hlKCkiKTsKLSAg
ICB3a1FUQ2xlYXJNZWRpYURvd25sb2FkQ2FjaGUoKTsKKyAgICBbW1FUVXRpbGl0aWVzIHF0VXRp
bGl0aWVzXSBjbGVhckRvd25sb2FkQ2FjaGVdOwogfQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0
ZVFUS2l0OjpjbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5zKGNvbnN0IFN0cmluZyYsIGNvbnN0IEhh
c2hTZXQ8UmVmUHRyPFNlY3VyaXR5T3JpZ2luPj4mIG9yaWdpbnMpCiB7CiAgICAgTE9HKE1lZGlh
LCAiTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6OmNsZWFyTWVkaWFDYWNoZUZvck9yaWdpbnMoKSIp
OwogICAgIGZvciAoYXV0byYgb3JpZ2luIDogb3JpZ2lucykKLSAgICAgICAgd2tRVENsZWFyTWVk
aWFEb3dubG9hZENhY2hlRm9yU2l0ZShvcmlnaW4tPnRvUmF3U3RyaW5nKCkpOworICAgICAgICBb
W1FUVXRpbGl0aWVzIHF0VXRpbGl0aWVzXSBjbGVhckRvd25sb2FkQ2FjaGVGb3JTaXRlOm9yaWdp
bi0+dG9SYXdTdHJpbmcoKV07CiB9CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6OmRp
c2FibGVVbnN1cHBvcnRlZFRyYWNrcygpCkBAIC0xNDY4LDIzICsxNTMzLDI5IEBAIGJvb2wgTWVk
aWFQbGF5ZXJQcml2YXRlUVRLaXQ6Omhhc1NpbmdsZVNlY3VyaXR5T3JpZ2luKCkgY29uc3QKICAg
ICBpZiAoIW1fcXRNb3ZpZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgUmVmPFNlY3Vy
aXR5T3JpZ2luPiByZXNvbHZlZE9yaWdpbiA9IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoVVJMKHdr
UVRNb3ZpZVJlc29sdmVkVVJMKG1fcXRNb3ZpZS5nZXQoKSkpKTsKKyAgICBSZWY8U2VjdXJpdHlP
cmlnaW4+IHJlc29sdmVkT3JpZ2luID0gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShVUkwoW21fcXRN
b3ZpZSBVUkxdKSk7CiAgICAgUmVmPFNlY3VyaXR5T3JpZ2luPiByZXF1ZXN0ZWRPcmlnaW4gPSBT
ZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbVN0cmluZyhtX21vdmllVVJMKTsKICAgICByZXR1cm4g
cmVzb2x2ZWRPcmlnaW4tPmlzU2FtZVNjaGVtZUhvc3RQb3J0KHJlcXVlc3RlZE9yaWdpbi5nZXQo
KSk7CiB9CiAKIE1lZGlhUGxheWVyOjpNb3ZpZUxvYWRUeXBlIE1lZGlhUGxheWVyUHJpdmF0ZVFU
S2l0Ojptb3ZpZUxvYWRUeXBlKCkgY29uc3QKIHsKLSAgICBpZiAoIW1fcXRNb3ZpZSkKLSAgICAg
ICAgcmV0dXJuIE1lZGlhUGxheWVyOjpVbmtub3duOwotCi0gICAgTWVkaWFQbGF5ZXI6Ok1vdmll
TG9hZFR5cGUgbW92aWVUeXBlID0gKE1lZGlhUGxheWVyOjpNb3ZpZUxvYWRUeXBlKXdrUVRNb3Zp
ZUdldFR5cGUobV9xdE1vdmllLmdldCgpKTsKLQotICAgIC8vIENhbid0IGluY2x1ZGUgV2ViS2l0
U3lzdGVtSW50ZXJmYWNlIGZyb20gV2ViQ29yZSBzbyB3ZSBjYW4ndCBnZXQgdGhlIGVudW0gcmV0
dXJuZWQKLSAgICAvLyBieSB3a1FUTW92aWVHZXRUeXBlLCBidXQgYXQgbGVhc3QgdmVyaWZ5IHRo
YXQgdGhlIHZhbHVlIGlzIGluIHRoZSB2YWxpZCByYW5nZS4KLSAgICBBU1NFUlQobW92aWVUeXBl
ID49IE1lZGlhUGxheWVyOjpVbmtub3duICYmIG1vdmllVHlwZSA8PSBNZWRpYVBsYXllcjo6TGl2
ZVN0cmVhbSk7Ci0KLSAgICByZXR1cm4gbW92aWVUeXBlOworICAgIGlmICghbW92aWUpCisgICAg
ICAgIHJldHVybiBNZWRpYVBsYXllcjo6TW92aWVMb2FkVHlwZTo6VW5rbm93bjsKKworICAgIFVJ
bnQzMiBtb3ZpZVR5cGUgPSBtb3ZpZS5tb3ZpZVR5cGU7CisgICAgc3dpdGNoIChtb3ZpZVR5cGUp
IHsKKyAgICBjYXNlIFFUTW92aWVUeXBlTG9jYWw6CisgICAgY2FzZSBRVE1vdmllVHlwZUZhc3RT
dGFydDoKKyAgICAgICAgcmV0dXJuIE1lZGlhUGxheWVyOjpNb3ZpZUxvYWRUeXBlOjpEb3dubG9h
ZDsKKyAgICBjYXNlIFFUTW92aWVUeXBlTGl2ZVN0cmVhbToKKyAgICAgICAgcmV0dXJuIE1lZGlh
UGxheWVyOjpNb3ZpZUxvYWRUeXBlOjpMaXZlU3RyZWFtOworICAgIGNhc2UgUVRNb3ZpZVR5cGVT
dG9yZWRTdHJlYW06CisgICAgICAgIHJldHVybiBNZWRpYVBsYXllcjo6TW92aWVMb2FkVHlwZTo6
U3RvcmVkU3RyZWFtOworICAgIGNhc2UgUVRNb3ZpZVR5cGVVbmtub3duOgorICAgIGRlZmF1bHQ6
CisgICAgICAgIHJldHVybiBNZWRpYVBsYXllcjo6TW92aWVMb2FkVHlwZTo6VW5rbm93bjsKKyAg
ICB9CiB9CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6OnNldFByZWxvYWQoTWVkaWFQ
bGF5ZXI6OlByZWxvYWQgcHJlbG9hZCkKQEAgLTE1MTUsNyArMTU4Niw3IEBAIGJvb2wgTWVkaWFQ
bGF5ZXJQcml2YXRlUVRLaXQ6OmNhblNhdmVNZWRpYURhdGEoKSBjb25zdAogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKICAgICBpZiAobV9xdE1vdmllKQotICAgICAgICB1cmwgPSBVUkwod2tRVE1v
dmllUmVzb2x2ZWRVUkwobV9xdE1vdmllLmdldCgpKSk7CisgICAgICAgIHVybCA9IFVSTChbbV9x
dE1vdmllIFVSTF0pOwogICAgIGVsc2UKICAgICAgICAgdXJsID0gVVJMKFBhcnNlZFVSTFN0cmlu
ZywgbV9tb3ZpZVVSTCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21h
Yy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMv
V2ViQ29yZVN5c3RlbUludGVyZmFjZS5oCmluZGV4IDIzZmYyM2ZjZjQ1OGI0MDc4OWIwMmUwYWVj
MTJiMjAwMDExZmM1YmIuLmY2NzU5NTA5YTExZmNlMzM0MTNmZTY5MDMzYTQ2ODU2ZjU5NzQ1NTgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlU3lzdGVtSW50
ZXJmYWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVTeXN0ZW1J
bnRlcmZhY2UuaApAQCAtMTMxLDMyICsxMzEsNyBAQCBleHRlcm4gZG91YmxlICgqd2tHZXROU1VS
TFJlc3BvbnNlQ2FsY3VsYXRlZEV4cGlyYXRpb24pKE5TVVJMUmVzcG9uc2UgKnJlc3BvbnNlKQog
ZXh0ZXJuIEJPT0wgKCp3a0dldE5TVVJMUmVzcG9uc2VNdXN0UmV2YWxpZGF0ZSkoTlNVUkxSZXNw
b25zZSAqcmVzcG9uc2UpOwogZXh0ZXJuIEJPT0wgKCp3a0hpdFRlc3RNZWRpYVVJUGFydCkoaW50
IHBhcnQsIENHUmVjdCBib3VuZHMsIENHUG9pbnQgcG9pbnQpOwogZXh0ZXJuIHZvaWQgKCp3a01l
YXN1cmVNZWRpYVVJUGFydCkoaW50IHBhcnQsIENHUmVjdCAqYm91bmRzLCBDR1NpemUgKm5hdHVy
YWxTaXplKTsKLWV4dGVybiBOU1ZpZXcgKigqd2tDcmVhdGVNZWRpYVVJQmFja2dyb3VuZFZpZXcp
KHZvaWQpOwogCi10eXBlZGVmIGVudW0gewotICAgIHdrTWVkaWFVSUNvbnRyb2xUaW1lbGluZSwK
LSAgICB3a01lZGlhVUlDb250cm9sU2xpZGVyLAotICAgIHdrTWVkaWFVSUNvbnRyb2xQbGF5UGF1
c2VCdXR0b24sCi0gICAgd2tNZWRpYVVJQ29udHJvbEV4aXRGdWxsc2NyZWVuQnV0dG9uLAotICAg
IHdrTWVkaWFVSUNvbnRyb2xSZXdpbmRCdXR0b24sCi0gICAgd2tNZWRpYVVJQ29udHJvbEZhc3RG
b3J3YXJkQnV0dG9uLAotICAgIHdrTWVkaWFVSUNvbnRyb2xWb2x1bWVVcEJ1dHRvbiwKLSAgICB3
a01lZGlhVUlDb250cm9sVm9sdW1lRG93bkJ1dHRvbgotfSB3a01lZGlhVUlDb250cm9sVHlwZTsK
LWV4dGVybiBOU0NvbnRyb2wgKigqd2tDcmVhdGVNZWRpYVVJQ29udHJvbCkoaW50KTsKLQotZXh0
ZXJuIHVuc2lnbmVkICgqd2tRVEluY2x1ZGVPbmx5TW9kZXJuTWVkaWFGaWxlVHlwZXMpKHZvaWQp
OwotZXh0ZXJuIHZvaWQgKCp3a1FUTW92aWVEaXNhYmxlQ29tcG9uZW50KSh1aW50MzJfdFs1XSk7
Ci1leHRlcm4gZmxvYXQgKCp3a1FUTW92aWVNYXhUaW1lTG9hZGVkKShRVE1vdmllKik7Ci1leHRl
cm4gTlNTdHJpbmcgKigqd2tRVE1vdmllTWF4VGltZUxvYWRlZENoYW5nZU5vdGlmaWNhdGlvbiko
dm9pZCk7Ci1leHRlcm4gaW50ICgqd2tRVE1vdmllR2V0VHlwZSkoUVRNb3ZpZSopOwotZXh0ZXJu
IEJPT0wgKCp3a1FUTW92aWVIYXNDbG9zZWRDYXB0aW9ucykoUVRNb3ZpZSopOwotZXh0ZXJuIE5T
VVJMICooKndrUVRNb3ZpZVJlc29sdmVkVVJMKShRVE1vdmllKik7Ci1leHRlcm4gdm9pZCAoKndr
UVRNb3ZpZVNldFNob3dDbG9zZWRDYXB0aW9ucykoUVRNb3ZpZSosIEJPT0wpOwotZXh0ZXJuIHZv
aWQgKCp3a1FUTW92aWVTZWxlY3RQcmVmZXJyZWRBbHRlcm5hdGVzKShRVE1vdmllKik7Ci1leHRl
cm4gTlNBcnJheSAqKCp3a1FUR2V0U2l0ZXNJbk1lZGlhRG93bmxvYWRDYWNoZSkoKTsKLWV4dGVy
biB2b2lkICgqd2tRVENsZWFyTWVkaWFEb3dubG9hZENhY2hlRm9yU2l0ZSkoTlNTdHJpbmcgKnNp
dGUpOwotZXh0ZXJuIHZvaWQgKCp3a1FUQ2xlYXJNZWRpYURvd25sb2FkQ2FjaGUpKCk7CiBleHRl
cm4gdm9pZCAoKndrU2V0Q29va2llU3RvcmFnZVByaXZhdGVCcm93c2luZ0VuYWJsZWQpKEJPT0wp
OwogI2VuZGlmCiBleHRlcm4gdm9pZCAoKndrU2V0Q09OTkVDVFByb3h5Rm9yU3RyZWFtKShDRlJl
YWRTdHJlYW1SZWYsIENGU3RyaW5nUmVmIHByb3h5SG9zdCwgQ0ZOdW1iZXJSZWYgcHJveHlQb3J0
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlU3lzdGVt
SW50ZXJmYWNlLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVTeXN0ZW1J
bnRlcmZhY2UubW0KaW5kZXggYzcyM2Q3NDRiMDQ2ZDIxMGZhYWIyMmMyYTQxZGRmMDI0NjNkYTkz
Zi4uMmVhYmQ0ZjE0ZjM5MzM2ZTMzNDBjZThlZGVlMzdlNDgyZGQ2ODAyZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2UubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2UubW0K
QEAgLTM2LDIzICszNiw5IEBAIHZvaWQgKCp3a0RyYXdNZWRpYVNsaWRlclRyYWNrKShDR0NvbnRl
eHRSZWYgY29udGV4dCwgQ0dSZWN0IHJlY3QsIGZsb2F0IHRpbWVMb2FkCiBCT09MICgqd2tIaXRU
ZXN0TWVkaWFVSVBhcnQpKGludCBwYXJ0LCBDR1JlY3QgYm91bmRzLCBDR1BvaW50IHBvaW50KTsK
IHZvaWQgKCp3a0RyYXdNZWRpYVVJUGFydCkoaW50IHBhcnQsIENHQ29udGV4dFJlZiBjb250ZXh0
LCBDR1JlY3QgcmVjdCwgdW5zaWduZWQgc3RhdGUpOwogdm9pZCAoKndrTWVhc3VyZU1lZGlhVUlQ
YXJ0KShpbnQgcGFydCwgQ0dSZWN0ICpib3VuZHMsIENHU2l6ZSAqbmF0dXJhbFNpemUpOwotTlNW
aWV3ICooKndrQ3JlYXRlTWVkaWFVSUJhY2tncm91bmRWaWV3KSh2b2lkKTsKLU5TQ29udHJvbCAq
KCp3a0NyZWF0ZU1lZGlhVUlDb250cm9sKShpbnQpOwogTlNUaW1lSW50ZXJ2YWwgKCp3a0dldE5T
VVJMUmVzcG9uc2VDYWxjdWxhdGVkRXhwaXJhdGlvbikoTlNVUkxSZXNwb25zZSAqcmVzcG9uc2Up
OwogQk9PTCAoKndrR2V0TlNVUkxSZXNwb25zZU11c3RSZXZhbGlkYXRlKShOU1VSTFJlc3BvbnNl
ICpyZXNwb25zZSk7CiB2b2lkICgqd2tQb3B1cE1lbnUpKE5TTWVudSosIE5TUG9pbnQgbG9jYXRp
b24sIGZsb2F0IHdpZHRoLCBOU1ZpZXcqLCBpbnQgc2VsZWN0ZWRJdGVtLCBOU0ZvbnQqLCBOU0Nv
bnRyb2xTaXplIGNvbnRyb2xTaXplLCBib29sIHVzZXNDdXN0b21BcHBlYXJhbmNlKTsKLXVuc2ln
bmVkICgqd2tRVEluY2x1ZGVPbmx5TW9kZXJuTWVkaWFGaWxlVHlwZXMpKHZvaWQpOwotdm9pZCAo
KndrUVRNb3ZpZURpc2FibGVDb21wb25lbnQpKHVpbnQzMl90WzVdKTsKLWZsb2F0ICgqd2tRVE1v
dmllTWF4VGltZUxvYWRlZCkoUVRNb3ZpZSopOwotTlNTdHJpbmcgKigqd2tRVE1vdmllTWF4VGlt
ZUxvYWRlZENoYW5nZU5vdGlmaWNhdGlvbikodm9pZCk7Ci1pbnQgKCp3a1FUTW92aWVHZXRUeXBl
KShRVE1vdmllKik7Ci1CT09MICgqd2tRVE1vdmllSGFzQ2xvc2VkQ2FwdGlvbnMpKFFUTW92aWUq
KTsKLU5TVVJMICooKndrUVRNb3ZpZVJlc29sdmVkVVJMKShRVE1vdmllKik7Ci12b2lkICgqd2tR
VE1vdmllU2V0U2hvd0Nsb3NlZENhcHRpb25zKShRVE1vdmllKiwgQk9PTCk7Ci12b2lkICgqd2tR
VE1vdmllU2VsZWN0UHJlZmVycmVkQWx0ZXJuYXRlcykoUVRNb3ZpZSopOwotTlNBcnJheSAqKCp3
a1FUR2V0U2l0ZXNJbk1lZGlhRG93bmxvYWRDYWNoZSkoKTsKLXZvaWQgKCp3a1FUQ2xlYXJNZWRp
YURvd25sb2FkQ2FjaGVGb3JTaXRlKShOU1N0cmluZyAqc2l0ZSk7Ci12b2lkICgqd2tRVENsZWFy
TWVkaWFEb3dubG9hZENhY2hlKSgpOwogCiB2b2lkICgqd2tTZXRDT05ORUNUUHJveHlGb3JTdHJl
YW0pKENGUmVhZFN0cmVhbVJlZiwgQ0ZTdHJpbmdSZWYgcHJveHlIb3N0LCBDRk51bWJlclJlZiBw
cm94eVBvcnQpOwogdm9pZCAoKndrU2V0Q09OTkVDVFByb3h5QXV0aG9yaXphdGlvbkZvclN0cmVh
bSkoQ0ZSZWFkU3RyZWFtUmVmLCBDRlN0cmluZ1JlZiBwcm94eUF1dGhvcml6YXRpb25TdHJpbmcp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYlZpZGVvRnVsbHNj
cmVlbkhVRFdpbmRvd0NvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMv
V2ViVmlkZW9GdWxsc2NyZWVuSFVEV2luZG93Q29udHJvbGxlci5tbQppbmRleCBlZmI2ZTJiMjcz
YzU4MzUxMzNlNzViMTYyNmE5NWIwNDkwYzc3OTljLi5mYzBmNTEwYzdhMmNiMjQ5NzhkMDRhMGM0
ODA2ZWQ0YzcxYzUzMjAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMv
V2ViVmlkZW9GdWxsc2NyZWVuSFVEV2luZG93Q29udHJvbGxlci5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvV2ViVmlkZW9GdWxsc2NyZWVuSFVEV2luZG93Q29udHJvbGxlci5t
bQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAxNiBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAxNyBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTMxLDkgKzMxLDM4IEBACiAjaW1wb3J0IDxXZWJDb3JlL0hUTUxWaWRlb0VsZW1lbnQu
aD4KICNpbXBvcnQgPFdlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaD4KICNpbXBvcnQgPHBhbC9zcGkv
Y2cvQ29yZUdyYXBoaWNzU1BJLmg+CisjaW1wb3J0IDxwYWwvc3BpL21hYy9RVEtpdFNQSS5oPgor
I2ltcG9ydCA8d3RmL1NvZnRMaW5raW5nLmg+CisKK1NPRlRfTElOS19GUkFNRVdPUksoUVRLaXQp
CisKK1NPRlRfTElOS19DTEFTUyhRVEtpdCwgUVRIVURCYWNrZ3JvdW5kVmlldykKK1NPRlRfTElO
S19DTEFTUyhRVEtpdCwgUVRIVURCdXR0b24pCitTT0ZUX0xJTktfQ0xBU1MoUVRLaXQsIFFUSFVE
U2xpZGVyKQorU09GVF9MSU5LX0NMQVNTKFFUS2l0LCBRVEhVRFRpbWVsaW5lKQorCisjZGVmaW5l
IFFUSFVEQmFja2dyb3VuZFZpZXcgZ2V0UVRIVURCYWNrZ3JvdW5kVmlld0NsYXNzKCkKKyNkZWZp
bmUgUVRIVURCdXR0b24gZ2V0UVRIVURCdXR0b25DbGFzcygpCisjZGVmaW5lIFFUSFVEU2xpZGVy
IGdldFFUSFVEU2xpZGVyQ2xhc3MoKQorI2RlZmluZSBRVEhVRFRpbWVsaW5lIGdldFFUSFVEVGlt
ZWxpbmVDbGFzcygpCiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK2VudW0gY2xhc3MgTWVkaWFVSUNvbnRyb2wgeworICAgIFRpbWVsaW5lLAorICAg
IFNsaWRlciwKKyAgICBQbGF5UGF1c2VCdXR0b24sCisgICAgRXhpdEZ1bGxzY3JlZW5CdXR0b24s
CisgICAgUmV3aW5kQnV0dG9uLAorICAgIEZhc3RGb3J3YXJkQnV0dG9uLAorICAgIFZvbHVtZVVw
QnV0dG9uLAorICAgIFZvbHVtZURvd25CdXR0b24sCit9OworCit9CisKIEBpbnRlcmZhY2UgV2Vi
VmlkZW9GdWxsc2NyZWVuSFVEV2luZG93Q29udHJvbGxlciAoUHJpdmF0ZSkgPE5TV2luZG93RGVs
ZWdhdGU+CiAKIC0gKHZvaWQpdXBkYXRlVGltZTsKQEAgLTI2NSwxMCArMjk0LDY4IEBAIC0gKHZv
aWQpY2xvc2VXaW5kb3cKICAgICBbc2VsZiBzZXRXaW5kb3c6bmlsXTsKIH0KIAotc3RhdGljIE5T
Q29udHJvbCAqY3JlYXRlQ29udHJvbFdpdGhNZWRpYVVJQ29udHJvbFR5cGUoaW50IGNvbnRyb2xU
eXBlLCBOU1JlY3QgZnJhbWUpCitzdGF0aWMgTlNDb250cm9sICpjcmVhdGVNZWRpYVVJQ29udHJv
bChNZWRpYVVJQ29udHJvbCBjb250cm9sVHlwZSkKK3sKKyAgICBzd2l0Y2ggKGNvbnRyb2xUeXBl
KSB7CisgICAgY2FzZSBNZWRpYVVJQ29udHJvbDo6VGltZWxpbmU6IHsKKyAgICAgICAgTlNTbGlk
ZXIgKnNsaWRlciA9IFtbUVRIVURUaW1lbGluZSBhbGxvY10gaW5pdF07CisgICAgICAgIFtbc2xp
ZGVyIGNlbGxdIHNldENvbnRpbnVvdXM6WUVTXTsKKyAgICAgICAgcmV0dXJuIHNsaWRlcjsKKyAg
ICB9CisgICAgY2FzZSBNZWRpYVVJQ29udHJvbDo6U2xpZGVyOiB7CisgICAgICAgIE5TQnV0dG9u
ICpzbGlkZXIgPSBbW1FUSFVEU2xpZGVyIGFsbG9jXSBpbml0XTsKKyAgICAgICAgW1tzbGlkZXIg
Y2VsbF0gc2V0Q29udGludW91czpZRVNdOworICAgICAgICByZXR1cm4gc2xpZGVyOworICAgIH0K
KyAgICBjYXNlIE1lZGlhVUlDb250cm9sOjpQbGF5UGF1c2VCdXR0b246IHsKKyAgICAgICAgTlNC
dXR0b24gKmJ1dHRvbiA9IFtbUVRIVURCdXR0b24gYWxsb2NdIGluaXRdOworICAgICAgICBbYnV0
dG9uIHNldEltYWdlOltOU0ltYWdlIGltYWdlTmFtZWQ6QCJOU1BsYXlUZW1wbGF0ZSJdXTsKKyAg
ICAgICAgW2J1dHRvbiBzZXRBbHRlcm5hdGVJbWFnZTpbTlNJbWFnZSBpbWFnZU5hbWVkOkAiTlNQ
YXVzZVFUUHJpdmF0ZVRlbXBsYXRlIl1dOworCisgICAgICAgIFtbYnV0dG9uIGNlbGxdIHNldFNo
b3dzU3RhdGVCeTpOU0NvbnRlbnRzQ2VsbE1hc2tdOworICAgICAgICBbYnV0dG9uIHNldEJvcmRl
cmVkOk5PXTsKKyAgICAgICAgcmV0dXJuIGJ1dHRvbjsKKyAgICB9CisgICAgY2FzZSBNZWRpYVVJ
Q29udHJvbDo6RXhpdEZ1bGxzY3JlZW5CdXR0b246IHsKKyAgICAgICAgTlNCdXR0b24gKmJ1dHRv
biA9IFtbUVRIVURCdXR0b24gYWxsb2NdIGluaXRdOworICAgICAgICBbYnV0dG9uIHNldEltYWdl
OltOU0ltYWdlIGltYWdlTmFtZWQ6QCJOU0V4aXRGdWxsU2NyZWVuVGVtcGxhdGUiXV07CisgICAg
ICAgIFtidXR0b24gc2V0Qm9yZGVyZWQ6Tk9dOworICAgICAgICByZXR1cm4gYnV0dG9uOworICAg
IH0KKyAgICBjYXNlIE1lZGlhVUlDb250cm9sOjpSZXdpbmRCdXR0b246IHsKKyAgICAgICAgTlNC
dXR0b24gKmJ1dHRvbiA9IFtbUVRIVURCdXR0b24gYWxsb2NdIGluaXRdOworICAgICAgICBbYnV0
dG9uIHNldEltYWdlOltOU0ltYWdlIGltYWdlTmFtZWQ6QCJOU1Jld2luZFRlbXBsYXRlIl1dOwor
ICAgICAgICBbYnV0dG9uIHNldEJvcmRlcmVkOk5PXTsKKyAgICAgICAgcmV0dXJuIGJ1dHRvbjsK
KyAgICB9CisgICAgY2FzZSBNZWRpYVVJQ29udHJvbDo6RmFzdEZvcndhcmRCdXR0b246IHsKKyAg
ICAgICAgTlNCdXR0b24gKmJ1dHRvbiA9IFtbUVRIVURCdXR0b24gYWxsb2NdIGluaXRdOworICAg
ICAgICBbYnV0dG9uIHNldEltYWdlOltOU0ltYWdlIGltYWdlTmFtZWQ6QCJOU0Zhc3RGb3J3YXJk
VGVtcGxhdGUiXV07CisgICAgICAgIFtidXR0b24gc2V0Qm9yZGVyZWQ6Tk9dOworICAgICAgICBy
ZXR1cm4gYnV0dG9uOworICAgIH0KKyAgICBjYXNlIE1lZGlhVUlDb250cm9sOjpWb2x1bWVVcEJ1
dHRvbjogeworICAgICAgICBOU0J1dHRvbiAqYnV0dG9uID0gW1tRVEhVREJ1dHRvbiBhbGxvY10g
aW5pdF07CisgICAgICAgIFtidXR0b24gc2V0SW1hZ2U6W05TSW1hZ2UgaW1hZ2VOYW1lZDpAIk5T
QXVkaW9PdXRwdXRWb2x1bWVIaWdoVGVtcGxhdGUiXV07CisgICAgICAgIFtidXR0b24gc2V0Qm9y
ZGVyZWQ6Tk9dOworICAgICAgICByZXR1cm4gYnV0dG9uOworICAgIH0KKyAgICBjYXNlIE1lZGlh
VUlDb250cm9sOjpWb2x1bWVEb3duQnV0dG9uOiB7CisgICAgICAgIE5TQnV0dG9uICpidXR0b24g
PSBbW1FUSFVEQnV0dG9uIGFsbG9jXSBpbml0XTsKKyAgICAgICAgW2J1dHRvbiBzZXRJbWFnZTpb
TlNJbWFnZSBpbWFnZU5hbWVkOkAiTlNBdWRpb091dHB1dFZvbHVtZUxvd1RlbXBsYXRlIl1dOwor
ICAgICAgICBbYnV0dG9uIHNldEJvcmRlcmVkOk5PXTsKKyAgICAgICAgcmV0dXJuIGJ1dHRvbjsK
KyAgICB9CisgICAgfQorCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIG5p
bDsKK30KKworc3RhdGljIE5TQ29udHJvbCAqY3JlYXRlQ29udHJvbFdpdGhNZWRpYVVJQ29udHJv
bFR5cGUoTWVkaWFVSUNvbnRyb2wgY29udHJvbFR5cGUsIE5TUmVjdCBmcmFtZSkKIHsKLSAgICBO
U0NvbnRyb2wgKmNvbnRyb2wgPSB3a0NyZWF0ZU1lZGlhVUlDb250cm9sKGNvbnRyb2xUeXBlKTsK
LSAgICBbY29udHJvbCBzZXRGcmFtZTpmcmFtZV07CisgICAgTlNDb250cm9sICpjb250cm9sID0g
Y3JlYXRlTWVkaWFVSUNvbnRyb2woY29udHJvbFR5cGUpOworICAgIGNvbnRyb2wuZnJhbWUgPSBm
cmFtZTsKICAgICByZXR1cm4gY29udHJvbDsKIH0KIApAQCAtMjg1LDYgKzM3MiwyMSBAQCBzdGF0
aWMgTlNUZXh0RmllbGQgKmNyZWF0ZVRpbWVUZXh0RmllbGQoTlNSZWN0IGZyYW1lKQogICAgIHJl
dHVybiB0ZXh0RmllbGQ7CiB9CiAKK3N0YXRpYyBOU1ZpZXcgKmNyZWF0ZU1lZGlhVUlCYWNrZ3Jv
dW5kVmlldygpCit7CisgICAgaWQgdmlldyA9IFtbUVRIVURCYWNrZ3JvdW5kVmlldyBhbGxvY10g
aW5pdF07CisKKyAgICBjb25zdCBDR0Zsb2F0IHF1aWNrVGltZVBsYXllckhVREhlaWdodCA9IDU5
OworICAgIGNvbnN0IENHRmxvYXQgcXVpY2tUaW1lUGxheWVySFVEQ29udGVudEJvcmRlclBvc2l0
aW9uID0gMzg7CisKKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwdXNoCisjcHJhZ21hIGNsYW5n
IGRpYWdub3N0aWMgaWdub3JlZCAiLVdkZXByZWNhdGVkLWRlY2xhcmF0aW9ucyIKKyAgICBbdmll
dyBzZXRDb250ZW50Qm9yZGVyUG9zaXRpb246cXVpY2tUaW1lUGxheWVySFVEQ29udGVudEJvcmRl
clBvc2l0aW9uIC8gcXVpY2tUaW1lUGxheWVySFVESGVpZ2h0XTsKKyNwcmFnbWEgY2xhbmcgZGlh
Z25vc3RpYyBwb3AKKworICAgIHJldHVybiB2aWV3OworfQorCiAtICh2b2lkKXdpbmRvd0RpZExv
YWQKIHsKICAgICBzdGF0aWMgY29uc3QgQ0dGbG9hdCBob3Jpem9udGFsTWFyZ2luID0gMTA7CkBA
IC0zMTAsNyArNDEyLDcgQEAgLSAodm9pZCl3aW5kb3dEaWRMb2FkCiAgICAgTlNXaW5kb3cgKndp
bmRvdyA9IFtzZWxmIHdpbmRvd107CiAgICAgQVNTRVJUKHdpbmRvdyk7CiAKLSAgICBOU1ZpZXcg
KmJhY2tncm91bmQgPSB3a0NyZWF0ZU1lZGlhVUlCYWNrZ3JvdW5kVmlldygpOworICAgIE5TVmll
dyAqYmFja2dyb3VuZCA9IGNyZWF0ZU1lZGlhVUlCYWNrZ3JvdW5kVmlldygpOwogCiAgICAgW3dp
bmRvdyBzZXRDb250ZW50VmlldzpiYWNrZ3JvdW5kXTsKICAgICBfYXJlYSA9IFtbTlNUcmFja2lu
Z0FyZWEgYWxsb2NdIGluaXRXaXRoUmVjdDpbYmFja2dyb3VuZCBib3VuZHNdIG9wdGlvbnM6TlNU
cmFja2luZ01vdXNlRW50ZXJlZEFuZEV4aXRlZCB8IE5TVHJhY2tpbmdBY3RpdmVBbHdheXMgb3du
ZXI6c2VsZiB1c2VySW5mbzpuaWxdOwpAQCAtMzIwLDE0ICs0MjIsMTQgQEAgLSAodm9pZCl3aW5k
b3dEaWRMb2FkCiAgICAgTlNWaWV3ICpjb250ZW50VmlldyA9IFt3aW5kb3cgY29udGVudFZpZXdd
OwogCiAgICAgQ0dGbG9hdCBjZW50ZXIgPSBDR0Zsb29yKCh3aW5kb3dXaWR0aCAtIHBsYXlCdXR0
b25XaWR0aCkgLyAyKTsKLSAgICBfcGxheUJ1dHRvbiA9IChOU0J1dHRvbiAqKWNyZWF0ZUNvbnRy
b2xXaXRoTWVkaWFVSUNvbnRyb2xUeXBlKHdrTWVkaWFVSUNvbnRyb2xQbGF5UGF1c2VCdXR0b24s
IE5TTWFrZVJlY3QoY2VudGVyLCB3aW5kb3dIZWlnaHQgLSBwbGF5QnV0dG9uVG9wTWFyZ2luIC0g
cGxheUJ1dHRvbkhlaWdodCwgcGxheUJ1dHRvbldpZHRoLCBwbGF5QnV0dG9uSGVpZ2h0KSk7Cisg
ICAgX3BsYXlCdXR0b24gPSAoTlNCdXR0b24gKiljcmVhdGVDb250cm9sV2l0aE1lZGlhVUlDb250
cm9sVHlwZShNZWRpYVVJQ29udHJvbDo6UGxheVBhdXNlQnV0dG9uLCBOU01ha2VSZWN0KGNlbnRl
ciwgd2luZG93SGVpZ2h0IC0gcGxheUJ1dHRvblRvcE1hcmdpbiAtIHBsYXlCdXR0b25IZWlnaHQs
IHBsYXlCdXR0b25XaWR0aCwgcGxheUJ1dHRvbkhlaWdodCkpOwogICAgIEFTU0VSVChbX3BsYXlC
dXR0b24gaXNLaW5kT2ZDbGFzczpbTlNCdXR0b24gY2xhc3NdXSk7CiAgICAgW19wbGF5QnV0dG9u
IHNldFRhcmdldDpzZWxmXTsKICAgICBbX3BsYXlCdXR0b24gc2V0QWN0aW9uOkBzZWxlY3Rvcih0
b2dnbGVQbGF5aW5nOildOwogICAgIFtjb250ZW50VmlldyBhZGRTdWJ2aWV3Ol9wbGF5QnV0dG9u
XTsKIAogICAgIENHRmxvYXQgY2xvc2VUb1JpZ2h0ID0gd2luZG93V2lkdGggLSBob3Jpem9udGFs
TWFyZ2luIC0gZXhpdEZ1bGxzY3JlZW5CdXR0b25XaWR0aDsKLSAgICBOU0NvbnRyb2wgKmV4aXRG
dWxsc2NyZWVuQnV0dG9uID0gY3JlYXRlQ29udHJvbFdpdGhNZWRpYVVJQ29udHJvbFR5cGUod2tN
ZWRpYVVJQ29udHJvbEV4aXRGdWxsc2NyZWVuQnV0dG9uLCBOU01ha2VSZWN0KGNsb3NlVG9SaWdo
dCwgd2luZG93SGVpZ2h0IC0gZXhpdEZ1bGxzY3JlZW5CdXR0b25Ub3BNYXJnaW4gLSBleGl0RnVs
bHNjcmVlbkJ1dHRvbkhlaWdodCwgZXhpdEZ1bGxzY3JlZW5CdXR0b25XaWR0aCwgZXhpdEZ1bGxz
Y3JlZW5CdXR0b25IZWlnaHQpKTsKKyAgICBOU0NvbnRyb2wgKmV4aXRGdWxsc2NyZWVuQnV0dG9u
ID0gY3JlYXRlQ29udHJvbFdpdGhNZWRpYVVJQ29udHJvbFR5cGUoTWVkaWFVSUNvbnRyb2w6OkV4
aXRGdWxsc2NyZWVuQnV0dG9uLCBOU01ha2VSZWN0KGNsb3NlVG9SaWdodCwgd2luZG93SGVpZ2h0
IC0gZXhpdEZ1bGxzY3JlZW5CdXR0b25Ub3BNYXJnaW4gLSBleGl0RnVsbHNjcmVlbkJ1dHRvbkhl
aWdodCwgZXhpdEZ1bGxzY3JlZW5CdXR0b25XaWR0aCwgZXhpdEZ1bGxzY3JlZW5CdXR0b25IZWln
aHQpKTsKICAgICBbZXhpdEZ1bGxzY3JlZW5CdXR0b24gc2V0QWN0aW9uOkBzZWxlY3RvcihleGl0
RnVsbHNjcmVlbjopXTsKICAgICBbZXhpdEZ1bGxzY3JlZW5CdXR0b24gc2V0VGFyZ2V0OnNlbGZd
OwogICAgIFtjb250ZW50VmlldyBhZGRTdWJ2aWV3OmV4aXRGdWxsc2NyZWVuQnV0dG9uXTsKQEAg
LTMzNSwyNyArNDM3LDI3IEBAIC0gKHZvaWQpd2luZG93RGlkTG9hZAogICAgIAogICAgIENHRmxv
YXQgdm9sdW1lQ29udHJvbHNCb3R0b20gPSB3aW5kb3dIZWlnaHQgLSB2b2x1bWVDb250cm9sc1Rv
cE1hcmdpbiAtIHZvbHVtZUJ1dHRvbkhlaWdodDsKICAgICBDR0Zsb2F0IGxlZnQgPSBob3Jpem9u
dGFsTWFyZ2luOwotICAgIE5TQ29udHJvbCAqdm9sdW1lRG93bkJ1dHRvbiA9IGNyZWF0ZUNvbnRy
b2xXaXRoTWVkaWFVSUNvbnRyb2xUeXBlKHdrTWVkaWFVSUNvbnRyb2xWb2x1bWVEb3duQnV0dG9u
LCBOU01ha2VSZWN0KGxlZnQsIHZvbHVtZUNvbnRyb2xzQm90dG9tLCB2b2x1bWVCdXR0b25XaWR0
aCwgdm9sdW1lQnV0dG9uSGVpZ2h0KSk7CisgICAgTlNDb250cm9sICp2b2x1bWVEb3duQnV0dG9u
ID0gY3JlYXRlQ29udHJvbFdpdGhNZWRpYVVJQ29udHJvbFR5cGUoTWVkaWFVSUNvbnRyb2w6OlZv
bHVtZURvd25CdXR0b24sIE5TTWFrZVJlY3QobGVmdCwgdm9sdW1lQ29udHJvbHNCb3R0b20sIHZv
bHVtZUJ1dHRvbldpZHRoLCB2b2x1bWVCdXR0b25IZWlnaHQpKTsKICAgICBbY29udGVudFZpZXcg
YWRkU3Vidmlldzp2b2x1bWVEb3duQnV0dG9uXTsKICAgICBbdm9sdW1lRG93bkJ1dHRvbiBzZXRU
YXJnZXQ6c2VsZl07CiAgICAgW3ZvbHVtZURvd25CdXR0b24gc2V0QWN0aW9uOkBzZWxlY3Rvcihz
ZXRWb2x1bWVUb1plcm86KV07CiAgICAgW3ZvbHVtZURvd25CdXR0b24gcmVsZWFzZV07CiAKICAg
ICBsZWZ0ICs9IHZvbHVtZUJ1dHRvbldpZHRoOwotICAgIF92b2x1bWVTbGlkZXIgPSBjcmVhdGVD
b250cm9sV2l0aE1lZGlhVUlDb250cm9sVHlwZSh3a01lZGlhVUlDb250cm9sU2xpZGVyLCBOU01h
a2VSZWN0KGxlZnQsIHZvbHVtZUNvbnRyb2xzQm90dG9tICsgQ0dGbG9vcigodm9sdW1lQnV0dG9u
SGVpZ2h0IC0gdm9sdW1lU2xpZGVySGVpZ2h0KSAvIDIpLCB2b2x1bWVTbGlkZXJXaWR0aCwgdm9s
dW1lU2xpZGVySGVpZ2h0KSk7CisgICAgX3ZvbHVtZVNsaWRlciA9IGNyZWF0ZUNvbnRyb2xXaXRo
TWVkaWFVSUNvbnRyb2xUeXBlKE1lZGlhVUlDb250cm9sOjpTbGlkZXIsIE5TTWFrZVJlY3QobGVm
dCwgdm9sdW1lQ29udHJvbHNCb3R0b20gKyBDR0Zsb29yKCh2b2x1bWVCdXR0b25IZWlnaHQgLSB2
b2x1bWVTbGlkZXJIZWlnaHQpIC8gMiksIHZvbHVtZVNsaWRlcldpZHRoLCB2b2x1bWVTbGlkZXJI
ZWlnaHQpKTsKICAgICBbX3ZvbHVtZVNsaWRlciBzZXRWYWx1ZTpbTlNOdW1iZXIgbnVtYmVyV2l0
aERvdWJsZTpbc2VsZiBtYXhWb2x1bWVdXSBmb3JLZXk6QCJtYXhWYWx1ZSJdOwogICAgIFtfdm9s
dW1lU2xpZGVyIHNldFRhcmdldDpzZWxmXTsKICAgICBbX3ZvbHVtZVNsaWRlciBzZXRBY3Rpb246
QHNlbGVjdG9yKHZvbHVtZUNoYW5nZWQ6KV07CiAgICAgW2NvbnRlbnRWaWV3IGFkZFN1YnZpZXc6
X3ZvbHVtZVNsaWRlcl07CiAKICAgICBsZWZ0ICs9IHZvbHVtZVNsaWRlcldpZHRoICsgdm9sdW1l
VXBCdXR0b25MZWZ0TWFyZ2luOwotICAgIE5TQ29udHJvbCAqdm9sdW1lVXBCdXR0b24gPSBjcmVh
dGVDb250cm9sV2l0aE1lZGlhVUlDb250cm9sVHlwZSh3a01lZGlhVUlDb250cm9sVm9sdW1lVXBC
dXR0b24sIE5TTWFrZVJlY3QobGVmdCwgdm9sdW1lQ29udHJvbHNCb3R0b20sIHZvbHVtZUJ1dHRv
bldpZHRoLCB2b2x1bWVCdXR0b25IZWlnaHQpKTsKKyAgICBOU0NvbnRyb2wgKnZvbHVtZVVwQnV0
dG9uID0gY3JlYXRlQ29udHJvbFdpdGhNZWRpYVVJQ29udHJvbFR5cGUoTWVkaWFVSUNvbnRyb2w6
OlZvbHVtZVVwQnV0dG9uLCBOU01ha2VSZWN0KGxlZnQsIHZvbHVtZUNvbnRyb2xzQm90dG9tLCB2
b2x1bWVCdXR0b25XaWR0aCwgdm9sdW1lQnV0dG9uSGVpZ2h0KSk7CiAgICAgW3ZvbHVtZVVwQnV0
dG9uIHNldFRhcmdldDpzZWxmXTsKICAgICBbdm9sdW1lVXBCdXR0b24gc2V0QWN0aW9uOkBzZWxl
Y3RvcihzZXRWb2x1bWVUb01heGltdW06KV07CiAgICAgW2NvbnRlbnRWaWV3IGFkZFN1YnZpZXc6
dm9sdW1lVXBCdXR0b25dOwogICAgIFt2b2x1bWVVcEJ1dHRvbiByZWxlYXNlXTsKIAotICAgIF90
aW1lbGluZSA9IHdrQ3JlYXRlTWVkaWFVSUNvbnRyb2wod2tNZWRpYVVJQ29udHJvbFRpbWVsaW5l
KTsKKyAgICBfdGltZWxpbmUgPSBjcmVhdGVNZWRpYVVJQ29udHJvbChNZWRpYVVJQ29udHJvbDo6
VGltZWxpbmUpOwogCiAgICAgW190aW1lbGluZSBzZXRUYXJnZXQ6c2VsZl07CiAgICAgW190aW1l
bGluZSBzZXRBY3Rpb246QHNlbGVjdG9yKHRpbWVsaW5lUG9zaXRpb25DaGFuZ2VkOildOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJT
eXN0ZW1JbnRlcmZhY2UubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvbWFjL1dlYlN5c3RlbUludGVyZmFjZS5tbQppbmRleCAwZGRkNTcxNDU5Yjg1NmYzOTIwNWUx
MTBjYzAwY2NjYWVlM2ZkMGVlLi5iZGE1ZDczZGZjMTIyZjNlMDIyM2FhYWU1NTI4NGQ0YjM5ZTU3
M2NlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
bWFjL1dlYlN5c3RlbUludGVyZmFjZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvbWFjL1dlYlN5c3RlbUludGVyZmFjZS5tbQpAQCAtNDMsMTggKzQzLDYg
QEAgdm9pZCBJbml0V2ViQ29yZVN5c3RlbUludGVyZmFjZSh2b2lkKQogICAgICAgICBJTklUKERy
YXdNZWRpYVVJUGFydCk7CiAgICAgICAgIElOSVQoSGl0VGVzdE1lZGlhVUlQYXJ0KTsKICAgICAg
ICAgSU5JVChNZWFzdXJlTWVkaWFVSVBhcnQpOwotICAgICAgICBJTklUKFFUSW5jbHVkZU9ubHlN
b2Rlcm5NZWRpYUZpbGVUeXBlcyk7Ci0gICAgICAgIElOSVQoUVRNb3ZpZURpc2FibGVDb21wb25l
bnQpOwotICAgICAgICBJTklUKFFUTW92aWVHZXRUeXBlKTsKLSAgICAgICAgSU5JVChRVE1vdmll
SGFzQ2xvc2VkQ2FwdGlvbnMpOwotICAgICAgICBJTklUKFFUTW92aWVNYXhUaW1lTG9hZGVkKTsK
LSAgICAgICAgSU5JVChRVE1vdmllTWF4VGltZUxvYWRlZENoYW5nZU5vdGlmaWNhdGlvbik7Ci0g
ICAgICAgIElOSVQoUVRNb3ZpZVJlc29sdmVkVVJMKTsKLSAgICAgICAgSU5JVChRVE1vdmllU2Vs
ZWN0UHJlZmVycmVkQWx0ZXJuYXRlcyk7Ci0gICAgICAgIElOSVQoUVRNb3ZpZVNldFNob3dDbG9z
ZWRDYXB0aW9ucyk7Ci0gICAgICAgIElOSVQoUVRHZXRTaXRlc0luTWVkaWFEb3dubG9hZENhY2hl
KTsKLSAgICAgICAgSU5JVChRVENsZWFyTWVkaWFEb3dubG9hZENhY2hlRm9yU2l0ZSk7Ci0gICAg
ICAgIElOSVQoUVRDbGVhck1lZGlhRG93bmxvYWRDYWNoZSk7CiAjZW5kaWYKICAgICAgICAgSU5J
VChTZXRDT05ORUNUUHJveHlBdXRob3JpemF0aW9uRm9yU3RyZWFtKTsKICAgICAgICAgSU5JVChT
ZXRDT05ORUNUUHJveHlGb3JTdHJlYW0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViU3lzdGVtSW50ZXJmYWNlLm1tIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViU3lzdGVtSW50ZXJmYWNlLm1tCmluZGV4IGEz
MjAyNDUzN2NhZTc3NDA0ZDEyMmEzYTM4NTRkM2MyZTdiYTI0OTAuLjE3NDY1ODZiMjQyZjUyZTA3
YTk5ZmU5MTVhYTZiNGY2MmEzYmM1ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYlN5c3RlbUludGVyZmFjZS5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJTeXN0ZW1JbnRlcmZhY2UubW0KQEAgLTQ5
LDI1ICs0OSw5IEBAIHZvaWQgSW5pdFdlYkNvcmVTeXN0ZW1JbnRlcmZhY2Uodm9pZCkKICAgICBJ
TklUKERyYXdNZWRpYVNsaWRlclRyYWNrKTsKICAgICBJTklUKEhpdFRlc3RNZWRpYVVJUGFydCk7
CiAgICAgSU5JVChNZWFzdXJlTWVkaWFVSVBhcnQpOwotICAgIElOSVQoQ3JlYXRlTWVkaWFVSUJh
Y2tncm91bmRWaWV3KTsKLSAgICBJTklUKENyZWF0ZU1lZGlhVUlDb250cm9sKTsKICNlbmRpZgog
ICAgIElOSVQoU2V0Q09OTkVDVFByb3h5QXV0aG9yaXphdGlvbkZvclN0cmVhbSk7CiAgICAgSU5J
VChTZXRDT05ORUNUUHJveHlGb3JTdHJlYW0pOwotI2lmIEVOQUJMRShWSURFTykgJiYgIVBMQVRG
T1JNKElPUykKLSAgICBJTklUKFFUSW5jbHVkZU9ubHlNb2Rlcm5NZWRpYUZpbGVUeXBlcyk7Ci0g
ICAgSU5JVChRVE1vdmllRGlzYWJsZUNvbXBvbmVudCk7Ci0gICAgSU5JVChRVE1vdmllTWF4VGlt
ZUxvYWRlZCk7Ci0gICAgSU5JVChRVE1vdmllTWF4VGltZUxvYWRlZENoYW5nZU5vdGlmaWNhdGlv
bik7Ci0gICAgSU5JVChRVE1vdmllR2V0VHlwZSk7Ci0gICAgSU5JVChRVE1vdmllSGFzQ2xvc2Vk
Q2FwdGlvbnMpOwotICAgIElOSVQoUVRNb3ZpZVJlc29sdmVkVVJMKTsKLSAgICBJTklUKFFUTW92
aWVTZXRTaG93Q2xvc2VkQ2FwdGlvbnMpOwotICAgIElOSVQoUVRNb3ZpZVNlbGVjdFByZWZlcnJl
ZEFsdGVybmF0ZXMpOwotICAgIElOSVQoUVRHZXRTaXRlc0luTWVkaWFEb3dubG9hZENhY2hlKTsK
LSAgICBJTklUKFFUQ2xlYXJNZWRpYURvd25sb2FkQ2FjaGVGb3JTaXRlKTsKLSAgICBJTklUKFFU
Q2xlYXJNZWRpYURvd25sb2FkQ2FjaGUpOwotI2VuZGlmCiAKICNpZiAhUExBVEZPUk0oSU9TKQog
ICAgIElOSVQoRXhlY3V0YWJsZVdhc0xpbmtlZE9uT3JCZWZvcmVTbm93TGVvcGFyZCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>320148</attachid>
            <date>2017-09-07 11:47:17 -0700</date>
            <delta_ts>2017-09-07 15:42:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-176472-20170907114716.patch</filename>
            <type>text/plain</type>
            <size>34583</size>
            <attacher name="Andy Estes">aestes</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIxNjg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDY5MjY5MTkxOTNmNWE2
MjdjNmRiYzQyNDFiYTVlY2M3ZDdhNmU3NC4uYWUyODQ1OTMzYzJlNDk2MTVhYTMyOWE1OWI3YTky
YTc0NjNkZmVlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDE3LTA5LTA2ICBBbmR5
IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBbTWFjXSBVcHN0cmVhbSBRVEtp
dC1yZWxhdGVkIFdlYktpdFN5c3RlbUludGVyZmFjZSBmdW5jdGlvbnMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NjQ3MgorCisgICAgICAgIFJldmll
d2VkIGJ5IEVyaWMgQ2FybHNvbi4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9N
ZWRpYVBsYXllclByaXZhdGVRVEtpdC5tbToKKyAgICAgICAgKFdlYkNvcmU6OmRpc2FibGVDb21w
b25lbnRzT25jZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6
Y3JlYXRlUVRNb3ZpZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVRVEtp
dDo6aGFzQ2xvc2VkQ2FwdGlvbnMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5
ZXJQcml2YXRlUVRLaXQ6OnNldENsb3NlZENhcHRpb25zVmlzaWJsZSk6CisgICAgICAgIChXZWJD
b3JlOjpzZWxlY3RQcmVmZXJyZWRBbHRlcm5hdGVUcmFja0Zvck1lZGlhVHlwZSk6CisgICAgICAg
IChXZWJDb3JlOjpzZWxlY3RQcmVmZXJyZWRBbHRlcm5hdGVzKToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0Ojp1cGRhdGVTdGF0ZXMpOgorICAgICAgICAoV2ViQ29y
ZTo6bWltZU1vZGVyblR5cGVzQ2FjaGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQ
cml2YXRlUVRLaXQ6Om9yaWdpbnNJbk1lZGlhQ2FjaGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFQbGF5ZXJQcml2YXRlUVRLaXQ6OmNsZWFyTWVkaWFDYWNoZSk6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6Y2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2lucyk6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6aGFzU2luZ2xlU2VjdXJp
dHlPcmlnaW4gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlUVRL
aXQ6Om1vdmllTG9hZFR5cGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQ
cml2YXRlUVRLaXQ6OmNhblNhdmVNZWRpYURhdGEgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3Jt
L21hYy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmg6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1dl
YkNvcmVTeXN0ZW1JbnRlcmZhY2UubW06CisgICAgICAgICogcGxhdGZvcm0vbWFjL1dlYlZpZGVv
RnVsbHNjcmVlbkhVRFdpbmRvd0NvbnRyb2xsZXIubW06CisgICAgICAgIChjcmVhdGVNZWRpYVVJ
Q29udHJvbCk6CisgICAgICAgIChjcmVhdGVDb250cm9sV2l0aE1lZGlhVUlDb250cm9sVHlwZSk6
CisgICAgICAgIChjcmVhdGVNZWRpYVVJQmFja2dyb3VuZFZpZXcpOgorICAgICAgICAoLVtXZWJW
aWRlb0Z1bGxzY3JlZW5IVURXaW5kb3dDb250cm9sbGVyIHdpbmRvd0RpZExvYWRdKToKKwogMjAx
Ny0wOS0wNiAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgogCiAgICAgICAgIFJFR1JFU1NJ
T04gKHIyMjE1OTgpOiBMZWdhY3kgInJvdW5kIiBhbmQgImJldmVsIiBvcHRpb25zIGNhbiBubyBs
b25nZXIgYmUgdXNlZCB3aXRoIHRoZSBsZWdhY3kgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEIHNl
dExpbmVKb2luIG9wZXJhdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKaW5kZXggZWU0MGU0NjE3NTU5NmJj
NTIyZjMxN2M2YzU5OGRiMDg0YzE3M2M1Ni4uZWVhNzkwNWM1ZWRjMDNhYTgxNzgwMWZjM2NkMGNh
OTAxMjg4MzhiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTctMDkt
MDYgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29tPgorCisgICAgICAgIFtNYWNdIFVwc3Ry
ZWFtIFFUS2l0LXJlbGF0ZWQgV2ViS2l0U3lzdGVtSW50ZXJmYWNlIGZ1bmN0aW9ucworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc2NDcyCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgRXJpYyBDYXJsc29uLgorCisgICAgICAgICogcGFsL3NwaS9tYWMvUVRL
aXRTUEkuaDoKKwogMjAxNy0wOS0wNCAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtp
dC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjIyMTQ5NCBhbmQgcjIy
MTUwMC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKaW5kZXggMzY0ZDhlNWQ4MGQyNTVkNjkzNmZiMmUxYTBiZDQ2MzdhYjU5YTA2
ZS4uZjY3NjU3MTZjZDQ5YzZhMDBjNmY5OWU3ZTQwZjg3NTgyNTg4MjdhOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxMyBAQAorMjAxNy0wOS0wNiAgQW5keSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+
CisKKyAgICAgICAgW01hY10gVXBzdHJlYW0gUVRLaXQtcmVsYXRlZCBXZWJLaXRTeXN0ZW1JbnRl
cmZhY2UgZnVuY3Rpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNzY0NzIKKworICAgICAgICBSZXZpZXdlZCBieSBFcmljIENhcmxzb24uCisKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJTeXN0ZW1JbnRlcmZhY2Uu
bW06CisgICAgICAgIChJbml0V2ViQ29yZVN5c3RlbUludGVyZmFjZSk6CisKIDIwMTctMDktMDYg
IEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CiAKICAgICAgICAgRGVueSB0aGly
ZC1wYXJ0eSBjb29raWUgY3JlYXRpb24gZm9yIHByZXZhbGVudCByZXNvdXJjZXMgd2l0aG91dCBp
bnRlcmFjdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4IDdlNTFlYmFmNmJmZjhl
ZmIxZmNjY2Q4MWQyODQwZmY3MmI0NGM1ZTguLjBhZDdhMmE3MzIxNzY1ZDY0ZWVhYThiYzM2OGYw
M2RiODIzNGQzNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBA
QAorMjAxNy0wOS0wNiAgQW5keSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+CisKKyAgICAgICAg
W01hY10gVXBzdHJlYW0gUVRLaXQtcmVsYXRlZCBXZWJLaXRTeXN0ZW1JbnRlcmZhY2UgZnVuY3Rp
b25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzY0
NzIKKworICAgICAgICBSZXZpZXdlZCBieSBFcmljIENhcmxzb24uCisKKyAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9XZWJTeXN0ZW1JbnRlcmZhY2UubW06CisgICAgICAgIChJbml0V2ViQ29yZVN5
c3RlbUludGVyZmFjZSk6CisKIDIwMTctMDktMDUgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRv
bkBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIHNvbWUgdW51c2VkIGJpdHMgb2YgY29kZSBh
bmQgcmVzb3VyY2VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9tYWMv
UVRLaXRTUEkuaCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL21hYy9RVEtpdFNQSS5oCmlu
ZGV4IDcxNzg5Y2RmMjVkYThhZjQwNGI3MGE0Y2I1MTljMWNhM2Q4NTJlMmYuLjEzYjFlYTFkMmM3
Y2EzZGExMTI4MjRjZjA0MzEwMDM5OTdhNWYzMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1BBTC9wYWwvc3BpL21hYy9RVEtpdFNQSS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwv
c3BpL21hYy9RVEtpdFNQSS5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTYtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTI1LDggKzI1LDEyIEBACiAKICNwcmFnbWEgb25jZQogCi0jaWYg
VVNFKEFQUExFX0lOVEVSTkFMX1NESykgfHwgX19NQUNfT1NfWF9WRVJTSU9OX01BWF9BTExPV0VE
IDwgMTAxMjAwCi0jaW1wb3J0IDxRVEtpdC9RVEtpdC5oPgorI2lmIFVTRShBUFBMRV9JTlRFUk5B
TF9TREspCisKKyNpbXBvcnQgPFFUS2l0L1FUSFVEQmFja2dyb3VuZFZpZXdfUHJpdmF0ZS5oPgor
I2ltcG9ydCA8UVRLaXQvUVRLaXRfUHJpdmF0ZS5oPgorI2ltcG9ydCA8UVRLaXQvUVRVdGlsaXRp
ZXNfUHJpdmF0ZS5oPgorCiAjZWxzZQogCiBlbnVtIHsKQEAgLTQ4LDYgKzUyLDE2IEBAIHR5cGVk
ZWYgZW51bSB7CiAgICAgUVRJbmNsdWRlQ29tbW9uVHlwZXMgPSAwLAogfSBRVE1vdmllRmlsZVR5
cGVPcHRpb25zOwogCitlbnVtIHsKKyAgICBRVE1vdmllVHlwZVVua25vd24gPSAwLAorICAgIFFU
TW92aWVUeXBlTG9jYWwsCisgICAgUVRNb3ZpZVR5cGVGYXN0U3RhcnQsCisgICAgUVRNb3ZpZVR5
cGVMaXZlU3RyZWFtLAorICAgIFFUTW92aWVUeXBlU3RvcmVkU3RyZWFtCit9OworCitAY2xhc3Mg
UVRUcmFjazsKKwogQGludGVyZmFjZSBRVE1lZGlhIDogTlNPYmplY3QKIAogLSAoaWQpYXR0cmli
dXRlRm9yS2V5OihOU1N0cmluZyAqKWF0dHJpYnV0ZUtleTsKQEAgLTU4LDYgKzcyLDggQEAgdHlw
ZWRlZiBlbnVtIHsKIAogKyAoTlNBcnJheSAqKW1vdmllRmlsZVR5cGVzOihRVE1vdmllRmlsZVR5
cGVPcHRpb25zKXR5cGVzOwogCisrICh2b2lkKWRpc2FibGVDb21wb25lbnQ6KENvbXBvbmVudERl
c2NyaXB0aW9uKWNvbXBvbmVudDsKKwogLSAoaWQpaW5pdFdpdGhBdHRyaWJ1dGVzOihOU0RpY3Rp
b25hcnkgKilhdHRyaWJ1dGVzIGVycm9yOihOU0Vycm9yICoqKWVycm9yUHRyOwogCiAtICh2b2lk
KXBsYXk7CkBAIC04MSw2ICs5NywxMSBAQCB0eXBlZGVmIGVudW0gewogCiAtIChOU0FycmF5ICop
dHJhY2tzOwogCistIChOU0FycmF5ICopYWx0ZXJuYXRlR3JvdXBUeXBlczsKKy0gKE5TQXJyYXkg
KilhbHRlcm5hdGVzRm9yTWVkaWFUeXBlOihOU1N0cmluZyAqKXR5cGU7CistICh2b2lkKWRlc2Vs
ZWN0QWx0ZXJuYXRlR3JvdXBUcmFjazooUVRUcmFjayAqKWFsdGVybmF0ZVRyYWNrOworLSAodm9p
ZClzZWxlY3RBbHRlcm5hdGVHcm91cFRyYWNrOihRVFRyYWNrICopYWx0ZXJuYXRlVHJhY2s7CisK
IEBlbmQKIAogQGludGVyZmFjZSBRVE1vdmllTGF5ZXIgOiBDQUxheWVyCkBAIC0xMDYsNCArMTI3
LDIwIEBAIHR5cGVkZWYgZW51bSB7CiAKIEBlbmQKIAorQGludGVyZmFjZSBRVEhVREJhY2tncm91
bmRWaWV3IDogTlNWaWV3CisKKy0gKHZvaWQpc2V0Q29udGVudEJvcmRlclBvc2l0aW9uOihDR0Zs
b2F0KWNvbnRlbnRCb3JkZXJQb3NpdGlvbjsKKworQGVuZAorCitAaW50ZXJmYWNlIFFUVXRpbGl0
aWVzIDogTlNPYmplY3QKKworKyAoaWQpcXRVdGlsaXRpZXM7CisKKy0gKE5TQXJyYXkgKilzaXRl
c0luRG93bmxvYWRDYWNoZTsKKy0gKHZvaWQpY2xlYXJEb3dubG9hZENhY2hlOworLSAodm9pZClj
bGVhckRvd25sb2FkQ2FjaGVGb3JTaXRlOihOU1N0cmluZyAqKXNpdGU7CisKK0BlbmQKKwogI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvTWVk
aWFQbGF5ZXJQcml2YXRlUVRLaXQubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9tYWMvTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQubW0KaW5kZXggODVjZjU2MWQ3MzMxNzk2NzZl
Y2Y4ZTlmZGFhMzZmYzBlN2U1OGIwMS4uOWY2Y2YwMGIwY2EyNDhlZmVlMWI2MTdmZTAzNjliNzQz
N2VmOWZhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFj
L01lZGlhUGxheWVyUHJpdmF0ZVFUS2l0Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL21hYy9NZWRpYVBsYXllclByaXZhdGVRVEtpdC5tbQpAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAsIDIwMTEgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA3LTIwMTcgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC01Miw2ICs1Miw3IEBAIFNPRlRfTElOSyhRVEtpdCwgUVRNYWtlVGltZSwgUVRUaW1l
LCAobG9uZyBsb25nIHRpbWVWYWx1ZSwgbG9uZyB0aW1lU2NhbGUpLCAodGltCiAKIFNPRlRfTElO
S19DTEFTUyhRVEtpdCwgUVRNb3ZpZSkKIFNPRlRfTElOS19DTEFTUyhRVEtpdCwgUVRNb3ZpZUxh
eWVyKQorU09GVF9MSU5LX0NMQVNTKFFUS2l0LCBRVFV0aWxpdGllcykKIAogU09GVF9MSU5LX1BP
SU5URVIoUVRLaXQsIFFUVHJhY2tNZWRpYVR5cGVBdHRyaWJ1dGUsIE5TU3RyaW5nICopCiBTT0ZU
X0xJTktfUE9JTlRFUihRVEtpdCwgUVRNZWRpYVR5cGVBdHRyaWJ1dGUsIE5TU3RyaW5nICopCkBA
IC03MSw2ICs3Miw3IEBAIFNPRlRfTElOS19QT0lOVEVSKFFUS2l0LCBRVE1vdmllSXNBY3RpdmVB
dHRyaWJ1dGUsIE5TU3RyaW5nICopCiBTT0ZUX0xJTktfUE9JTlRFUihRVEtpdCwgUVRNb3ZpZUxv
YWRTdGF0ZUF0dHJpYnV0ZSwgTlNTdHJpbmcgKikKIFNPRlRfTElOS19QT0lOVEVSKFFUS2l0LCBR
VE1vdmllTG9hZFN0YXRlRXJyb3JBdHRyaWJ1dGUsIE5TU3RyaW5nICopCiBTT0ZUX0xJTktfUE9J
TlRFUihRVEtpdCwgUVRNb3ZpZUxvYWRTdGF0ZURpZENoYW5nZU5vdGlmaWNhdGlvbiwgTlNTdHJp
bmcgKikKK1NPRlRfTElOS19QT0lOVEVSKFFUS2l0LCBRVE1vdmllTG9hZGVkUmFuZ2VzRGlkQ2hh
bmdlTm90aWZpY2F0aW9uLCBOU1N0cmluZyAqKTsKIFNPRlRfTElOS19QT0lOVEVSKFFUS2l0LCBR
VE1vdmllTmF0dXJhbFNpemVBdHRyaWJ1dGUsIE5TU3RyaW5nICopCiBTT0ZUX0xJTktfUE9JTlRF
UihRVEtpdCwgUVRNb3ZpZUN1cnJlbnRTaXplQXR0cmlidXRlLCBOU1N0cmluZyAqKQogU09GVF9M
SU5LX1BPSU5URVIoUVRLaXQsIFFUTW92aWVQcmV2ZW50RXh0ZXJuYWxVUkxMaW5rc0F0dHJpYnV0
ZSwgTlNTdHJpbmcgKikKQEAgLTk3LDYgKzk5LDcgQEAgQGVuZAogCiAjZGVmaW5lIFFUTW92aWUg
Z2V0UVRNb3ZpZUNsYXNzKCkKICNkZWZpbmUgUVRNb3ZpZUxheWVyIGdldFFUTW92aWVMYXllckNs
YXNzKCkKKyNkZWZpbmUgUVRVdGlsaXRpZXMgZ2V0UVRVdGlsaXRpZXNDbGFzcygpCiAKICNkZWZp
bmUgUVRUcmFja01lZGlhVHlwZUF0dHJpYnV0ZSBnZXRRVFRyYWNrTWVkaWFUeXBlQXR0cmlidXRl
KCkKICNkZWZpbmUgUVRNZWRpYVR5cGVBdHRyaWJ1dGUgZ2V0UVRNZWRpYVR5cGVBdHRyaWJ1dGUo
KQpAQCAtMTE2LDYgKzExOSw3IEBAIEBlbmQKICNkZWZpbmUgUVRNb3ZpZUxvYWRTdGF0ZUF0dHJp
YnV0ZSBnZXRRVE1vdmllTG9hZFN0YXRlQXR0cmlidXRlKCkKICNkZWZpbmUgUVRNb3ZpZUxvYWRT
dGF0ZUVycm9yQXR0cmlidXRlIGdldFFUTW92aWVMb2FkU3RhdGVFcnJvckF0dHJpYnV0ZSgpCiAj
ZGVmaW5lIFFUTW92aWVMb2FkU3RhdGVEaWRDaGFuZ2VOb3RpZmljYXRpb24gZ2V0UVRNb3ZpZUxv
YWRTdGF0ZURpZENoYW5nZU5vdGlmaWNhdGlvbigpCisjZGVmaW5lIFFUTW92aWVMb2FkZWRSYW5n
ZXNEaWRDaGFuZ2VOb3RpZmljYXRpb24gZ2V0UVRNb3ZpZUxvYWRlZFJhbmdlc0RpZENoYW5nZU5v
dGlmaWNhdGlvbigpCiAjZGVmaW5lIFFUTW92aWVOYXR1cmFsU2l6ZUF0dHJpYnV0ZSBnZXRRVE1v
dmllTmF0dXJhbFNpemVBdHRyaWJ1dGUoKQogI2RlZmluZSBRVE1vdmllQ3VycmVudFNpemVBdHRy
aWJ1dGUgZ2V0UVRNb3ZpZUN1cnJlbnRTaXplQXR0cmlidXRlKCkKICNkZWZpbmUgUVRNb3ZpZVBy
ZXZlbnRFeHRlcm5hbFVSTExpbmtzQXR0cmlidXRlIGdldFFUTW92aWVQcmV2ZW50RXh0ZXJuYWxV
UkxMaW5rc0F0dHJpYnV0ZSgpCkBAIC0yOTIsNyArMjk2LDcgQEAgc3RhdGljIHZvaWQgZGlzYWJs
ZUNvbXBvbmVudHNPbmNlKCkKICAgICAvLyBRVEtpdFNlcnZlciBoYXMgbm90IHlldCBzdGFydGVk
LiAgQXMgYSByZXN1bHQsIHdlIG11c3QgcGFzcyBpbiBleGFjdGx5IHRoZSBmbGFncyB3ZSB3YW50
IHRvCiAgICAgLy8gZGlzYWJsZSBwZXIgY29tcG9uZW50LiAgQXMgYSBmYWlsc2FmZSwgaWYgaW4g
dGhlIGZ1dHVyZSB0aGVzZSBmbGFncyBjaGFuZ2UsIHdlIHdpbGwgZGlzYWJsZSB0aGUKICAgICAv
LyBQREYgY29tcG9uZW50cyBmb3IgYSB0aGlyZCB0aW1lIHdpdGggYSB3aWxkY2FyZCBmbGFncyBm
aWVsZDoKLSAgICB1aW50MzJfdCBjb21wb25lbnRzVG9EaXNhYmxlWzExXVs1XSA9IHsKKyAgICBD
b21wb25lbnREZXNjcmlwdGlvbiBjb21wb25lbnRzVG9EaXNhYmxlWzExXSA9IHsKICAgICAgICAg
eydlYXQgJywgJ1RFWFQnLCAndGV4dCcsIDAsIDB9LAogICAgICAgICB7J2VhdCAnLCAnVFhUICcs
ICd0ZXh0JywgMCwgMH0sICAgIAogICAgICAgICB7J2VhdCAnLCAndXR4dCcsICd0ZXh0JywgMCwg
MH0sICAKQEAgLTMwNyw3ICszMTEsNyBAQCBzdGF0aWMgdm9pZCBkaXNhYmxlQ29tcG9uZW50c09u
Y2UoKQogICAgIH07CiAKICAgICBmb3IgKGF1dG8mIGNvbXBvbmVudCA6IGNvbXBvbmVudHNUb0Rp
c2FibGUpCi0gICAgICAgIHdrUVRNb3ZpZURpc2FibGVDb21wb25lbnQoY29tcG9uZW50KTsKKyAg
ICAgICAgW1FUTW92aWUgZGlzYWJsZUNvbXBvbmVudDpjb21wb25lbnRdOwogfQogCiB2b2lkIE1l
ZGlhUGxheWVyUHJpdmF0ZVFUS2l0OjpjcmVhdGVRVE1vdmllKE5TVVJMICp1cmwsIE5TRGljdGlv
bmFyeSAqbW92aWVBdHRyaWJ1dGVzKQpAQCAtMzQ1LDE0ICszNDksMTAgQEAgdm9pZCBNZWRpYVBs
YXllclByaXZhdGVRVEtpdDo6Y3JlYXRlUVRNb3ZpZShOU1VSTCAqdXJsLCBOU0RpY3Rpb25hcnkg
Km1vdmllQXR0cmkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgb2JqZWN0Om1fcXRNb3ZpZS5nZXQoKV07CiAKICAgICAvLyBJbiB1cGRhdGVTdGF0ZSgpLCB3
ZSB0cmFjayB3aGVuIG1heFRpbWVMb2FkZWQoKSA9PSBkdXJhdGlvbigpLgotICAgIC8vIEluIG5l
d2VyIHZlcnNpb24gb2YgUXVpY2tUaW1lLCBhIG5vdGlmaWNhdGlvbiBpcyBlbWl0dGVkIHdoZW4g
bWF4VGltZUxvYWRlZCBjaGFuZ2VzLgotICAgIC8vIEluIG9sZGVyIHZlcnNpb24gb2YgUXVpY2tU
aW1lLCBRVE1vdmllTG9hZFN0YXRlRGlkQ2hhbmdlTm90aWZpY2F0aW9uIGJlIGZpcmVkLgotICAg
IGlmIChOU1N0cmluZyAqbWF4VGltZUxvYWRlZENoYW5nZU5vdGlmaWNhdGlvbiA9IHdrUVRNb3Zp
ZU1heFRpbWVMb2FkZWRDaGFuZ2VOb3RpZmljYXRpb24oKSkgewotICAgICAgICBbW05TTm90aWZp
Y2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdIGFkZE9ic2VydmVyOm1fb2JqY09ic2VydmVyLmdl
dCgpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vs
ZWN0b3I6QHNlbGVjdG9yKGxvYWRlZFJhbmdlc0NoYW5nZWQ6KQotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOm1heFRpbWVMb2FkZWRDaGFu
Z2VOb3RpZmljYXRpb24KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG9iamVjdDptX3F0TW92aWUuZ2V0KCldOyAgICAgICAgCi0gICAgfQorICAgIFtb
TlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0gYWRkT2JzZXJ2ZXI6bV9vYmpjT2Jz
ZXJ2ZXIuZ2V0KCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNlbGVjdG9yOkBzZWxlY3Rvcihsb2FkZWRSYW5nZXNDaGFuZ2VkOikKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOlFUTW92aWVMb2FkZWRSYW5n
ZXNEaWRDaGFuZ2VOb3RpZmljYXRpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgb2JqZWN0Om1fcXRNb3ZpZS5nZXQoKV07CiAKICAgICBbW05TTm90aWZp
Y2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdIGFkZE9ic2VydmVyOm1fb2JqY09ic2VydmVyLmdl
dCgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3Rv
cjpAc2VsZWN0b3IocmF0ZUNoYW5nZWQ6KSAKQEAgLTc3MSwxOCArNzcxLDMwIEBAIGJvb2wgTWVk
aWFQbGF5ZXJQcml2YXRlUVRLaXQ6Omhhc0Nsb3NlZENhcHRpb25zKCkgY29uc3QKIHsKICAgICBp
ZiAoIW1ldGFEYXRhQXZhaWxhYmxlKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1
cm4gd2tRVE1vdmllSGFzQ2xvc2VkQ2FwdGlvbnMobV9xdE1vdmllLmdldCgpKTsgIAorICAgIHJl
dHVybiBbW21fcXRNb3ZpZSBhbHRlcm5hdGVHcm91cFR5cGVzXSBjb250YWluc09iamVjdDpAImNs
Y3AiXTsKIH0KIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6c2V0Q2xvc2VkQ2FwdGlv
bnNWaXNpYmxlKGJvb2wgY2xvc2VkQ2FwdGlvbnNWaXNpYmxlKQogewotICAgIGlmIChtZXRhRGF0
YUF2YWlsYWJsZSgpKSB7Ci0gICAgICAgIHdrUVRNb3ZpZVNldFNob3dDbG9zZWRDYXB0aW9ucyht
X3F0TW92aWUuZ2V0KCksIGNsb3NlZENhcHRpb25zVmlzaWJsZSk7CisgICAgaWYgKCFtZXRhRGF0
YUF2YWlsYWJsZSgpKQorICAgICAgICByZXR1cm47CiAKLSAgICAgICAgaWYgKGNsb3NlZENhcHRp
b25zVmlzaWJsZSAmJiBtX3F0VmlkZW9MYXllcikgewotICAgICAgICAgICAgLy8gQ2FwdGlvbnMg
d2lsbCBiZSByZW5kZXJlZCB1cHNpZGUgZG93biB1bmxlc3Mgd2UgZmxhZyB0aGUgbW92aWUgYXMg
ZmxpcHBlZCAoYWdhaW4pLiBTZWUgPHJkYXI6Ly83NDA4NDQwPi4KLSAgICAgICAgICAgIFttX3F0
VmlkZW9MYXllci5nZXQoKSBzZXRHZW9tZXRyeUZsaXBwZWQ6WUVTXTsKLSAgICAgICAgfQorICAg
IGlmICghW1ttX3F0TW92aWUgYWx0ZXJuYXRlR3JvdXBUeXBlc10gY29udGFpbnNPYmplY3Q6QCJj
bGNwIl0pCisgICAgICAgIHJldHVybjsKKworICAgIE5TQXJyYXkgKnRyYWNrQWx0ZXJuYXRlc0Fy
cmF5ID0gW21fcXRNb3ZpZSBhbHRlcm5hdGVzRm9yTWVkaWFUeXBlOkAiY2xjcCJdOworICAgIFFU
VHJhY2sgKnRyYWNrID0gdHJhY2tBbHRlcm5hdGVzQXJyYXlbMF1bQCJRVEFsdGVybmF0ZXNfUVRU
cmFjayJdOworICAgIGlmICghdHJhY2spCisgICAgICAgIHJldHVybjsKKworICAgIGlmICghY2xv
c2VkQ2FwdGlvbnNWaXNpYmxlKQorICAgICAgICBbbV9xdE1vdmllIGRlc2VsZWN0QWx0ZXJuYXRl
R3JvdXBUcmFjazp0cmFja107CisgICAgZWxzZQorICAgICAgICBbbV9xdE1vdmllIHNlbGVjdEFs
dGVybmF0ZUdyb3VwVHJhY2s6dHJhY2tdOworCisgICAgaWYgKGNsb3NlZENhcHRpb25zVmlzaWJs
ZSAmJiBtX3F0VmlkZW9MYXllcikgeworICAgICAgICAvLyBDYXB0aW9ucyB3aWxsIGJlIHJlbmRl
cmVkIHVwc2lkZSBkb3duIHVubGVzcyB3ZSBmbGFnIHRoZSBtb3ZpZSBhcyBmbGlwcGVkIChhZ2Fp
bikuIFNlZSA8cmRhcjovLzc0MDg0NDA+LgorICAgICAgICBbbV9xdFZpZGVvTGF5ZXIuZ2V0KCkg
c2V0R2VvbWV0cnlGbGlwcGVkOllFU107CiAgICAgfQogfQogCkBAIC05NDEsNiArOTUzLDU4IEBA
IHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6OnByZXBhcmVGb3JSZW5kZXJpbmcoKQogICAg
ICAgICBtX3BsYXllci0+Y2xpZW50KCkubWVkaWFQbGF5ZXJSZW5kZXJpbmdNb2RlQ2hhbmdlZCht
X3BsYXllcik7CiB9CiAKK3N0YXRpYyB2b2lkIHNlbGVjdFByZWZlcnJlZEFsdGVybmF0ZVRyYWNr
Rm9yTWVkaWFUeXBlKFFUTW92aWUgKm1vdmllLCBOU1N0cmluZyAqbWVkaWFUeXBlKQoreworICAg
IE5TQXJyYXkgKmFsdGVybmF0ZXMgPSBbbW92aWUgYWx0ZXJuYXRlc0Zvck1lZGlhVHlwZTptZWRp
YVR5cGVdOworICAgIGlmICghYWx0ZXJuYXRlcy5jb3VudCkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgYXV0byBsYW5ndWFnZVRvUVRUcmFja01hcCA9IGFkb3B0TlMoW1tOU011dGFibGVEaWN0aW9u
YXJ5IGFsbG9jXSBpbml0V2l0aENhcGFjaXR5OmFsdGVybmF0ZXMuY291bnRdKTsKKworICAgIGZv
ciAoTlNVSW50ZWdlciBpbmRleCA9IDA7IGluZGV4IDwgYWx0ZXJuYXRlcy5jb3VudDsgKytpbmRl
eCkgeworICAgICAgICBOU0RpY3Rpb25hcnkgKmFsdGVybmF0ZURpY3QgPSBhbHRlcm5hdGVzW2lu
ZGV4XTsKKyAgICAgICAgTlNTdHJpbmcgKmxhbmd1YWdlU3RyaW5nID0gYWx0ZXJuYXRlRGljdFtA
IlFUQWx0ZXJuYXRlc19MYW5ndWFnZUNvZGVFbmNvZGluZ19JU09fNjM5XzJUIl07CisgICAgICAg
IGlmICghW2xhbmd1YWdlU3RyaW5nIGNTdHJpbmdVc2luZ0VuY29kaW5nOmtDRlN0cmluZ0VuY29k
aW5nQVNDSUldKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIGlmICghbGFuZ3VhZ2VT
dHJpbmcpCisgICAgICAgICAgICBsYW5ndWFnZVN0cmluZyA9IGFsdGVybmF0ZURpY3RbQCJRVEFs
dGVybmF0ZXNfTGFuZ3VhZ2VDb2RlRW5jb2RpbmdfUkZDXzQ2NDYiXTsKKyAgICAgICAgaWYgKCFs
YW5ndWFnZVN0cmluZykgeworICAgICAgICAgICAgTGFuZ0NvZGUgbGFuZ0NvZGUgPSBhbHRlcm5h
dGVEaWN0W0AiUVRBbHRlcm5hdGVzX0xhbmd1YWdlQ29kZUVuY29kaW5nX01hY1R5cGVfTGFuZ0Nv
ZGUiXS5pbnRWYWx1ZTsKKyAgICAgICAgICAgIGF1dG8gaWRlbnRpZmllciA9IGFkb3B0Q0YoQ0ZM
b2NhbGVDcmVhdGVDYW5vbmljYWxMb2NhbGVJZGVudGlmaWVyRnJvbVNjcmlwdE1hbmFnZXJDb2Rl
cyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBsYW5nQ29kZSwgMCkpOworICAgICAgICAgICAgbGFuZ3Vh
Z2VTdHJpbmcgPSAoTlNTdHJpbmcgKilpZGVudGlmaWVyLmF1dG9yZWxlYXNlKCk7CisgICAgICAg
IH0KKyAgICAgICAgaWYgKCFsYW5ndWFnZVN0cmluZykKKyAgICAgICAgICAgIGNvbnRpbnVlOwor
CisgICAgICAgIGlkIGFsdGVybmF0ZVRyYWNrID0gYWx0ZXJuYXRlRGljdFtAIlFUQWx0ZXJuYXRl
c19RVFRyYWNrIl07CisgICAgICAgIGlmICghYWx0ZXJuYXRlVHJhY2spCisgICAgICAgICAgICBj
b250aW51ZTsKKworICAgICAgICBpZiAoIVthbHRlcm5hdGVUcmFjayBhdHRyaWJ1dGVGb3JLZXk6
QCJRVFRyYWNrRW5hYmxlZEF0dHJpYnV0ZSJdLmJvb2xWYWx1ZSkKKyAgICAgICAgICAgIGNvbnRp
bnVlOworCisgICAgICAgIFtsYW5ndWFnZVRvUVRUcmFja01hcCBzZXRPYmplY3Q6YWx0ZXJuYXRl
VHJhY2sgZm9yS2V5Omxhbmd1YWdlU3RyaW5nXTsKKyAgICB9CisKKyAgICBOU0FycmF5ICpwcmVm
ZXJyZWRMYW5ndWFnZXMgPSBbTlNCdW5kbGUgcHJlZmVycmVkTG9jYWxpemF0aW9uc0Zyb21BcnJh
eTpbbGFuZ3VhZ2VUb1FUVHJhY2tNYXAgYWxsS2V5c10gZm9yUHJlZmVyZW5jZXM6bmlsXTsKKyAg
ICBpZiAocHJlZmVycmVkTGFuZ3VhZ2VzLmNvdW50KSB7CisgICAgICAgIGlkIHByZWZlcnJlZFRy
YWNrID0gW2xhbmd1YWdlVG9RVFRyYWNrTWFwIG9iamVjdEZvcktleTpwcmVmZXJyZWRMYW5ndWFn
ZXNbMF1dOworICAgICAgICBpZiAocHJlZmVycmVkVHJhY2spIHsKKyAgICAgICAgICAgIC8vICtb
TlNCdW5kbGUgcHJlZmVycmVkTG9jYWxpemF0aW9uc0Zyb21BcnJheTpmb3JQcmVmZXJlbmNlc10g
bWF5IHJldHVybiBhIGxhbmd1YWdlIHdoaWNoIHdhcworICAgICAgICAgICAgLy8gbm90IHByZXNl
bnQgaW4gcHJlZmVycmVkTGFuZ3VhZ2VzLCBhbmQgd2lsbCB0aGVyZWZvcmUgbm90IGhhdmUgYW4g
YXNzb2NpYXRlZCB0cmFjay4KKyAgICAgICAgICAgIFttb3ZpZSBzZWxlY3RBbHRlcm5hdGVHcm91
cFRyYWNrOnByZWZlcnJlZFRyYWNrXTsKKyAgICAgICAgfQorICAgIH0KK30KKworc3RhdGljIHZv
aWQgc2VsZWN0UHJlZmVycmVkQWx0ZXJuYXRlcyhRVE1vdmllICptb3ZpZSkKK3sKKyAgICBzZWxl
Y3RQcmVmZXJyZWRBbHRlcm5hdGVUcmFja0Zvck1lZGlhVHlwZShtb3ZpZSwgQCJ2aWRlIik7Cisg
ICAgc2VsZWN0UHJlZmVycmVkQWx0ZXJuYXRlVHJhY2tGb3JNZWRpYVR5cGUobW92aWUsIEAic291
biIpOworICAgIHNlbGVjdFByZWZlcnJlZEFsdGVybmF0ZVRyYWNrRm9yTWVkaWFUeXBlKG1vdmll
LCBAImNwbHAiKTsKKyAgICBzZWxlY3RQcmVmZXJyZWRBbHRlcm5hdGVUcmFja0Zvck1lZGlhVHlw
ZShtb3ZpZSwgQCJzYnRsIik7Cit9CisKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6OnVw
ZGF0ZVN0YXRlcygpCiB7CiAgICAgTWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0ZSBvbGROZXR3b3Jr
U3RhdGUgPSBtX25ldHdvcmtTdGF0ZTsKQEAgLTk2NSw3ICsxMDI5LDcgQEAgdm9pZCBNZWRpYVBs
YXllclByaXZhdGVRVEtpdDo6dXBkYXRlU3RhdGVzKCkKICAgICAgICAgICAgIGxvYWRTdGF0ZSA9
IFFUTW92aWVMb2FkU3RhdGVFcnJvcjsKIAogICAgICAgICBpZiAobG9hZFN0YXRlICE9IFFUTW92
aWVMb2FkU3RhdGVFcnJvcikgewotICAgICAgICAgICAgd2tRVE1vdmllU2VsZWN0UHJlZmVycmVk
QWx0ZXJuYXRlcyhtX3F0TW92aWUuZ2V0KCkpOworICAgICAgICAgICAgc2VsZWN0UHJlZmVycmVk
QWx0ZXJuYXRlcyhtX3F0TW92aWUuZ2V0KCkpOwogICAgICAgICAgICAgY2FjaGVNb3ZpZVNjYWxl
KCk7CiAgICAgICAgICAgICBNZWRpYVBsYXllcjo6TW92aWVMb2FkVHlwZSBtb3ZpZVR5cGUgPSBt
b3ZpZUxvYWRUeXBlKCk7CiAgICAgICAgICAgICBtX2lzU3RyZWFtaW5nID0gbW92aWVUeXBlID09
IE1lZGlhUGxheWVyOjpTdG9yZWRTdHJlYW0gfHwgbW92aWVUeXBlID09IE1lZGlhUGxheWVyOjpM
aXZlU3RyZWFtOwpAQCAtMTI3Myw3ICsxMzM3LDggQEAgc3RhdGljIGNvbnN0IEhhc2hTZXQ8U3Ry
aW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+JiBtaW1lQ29tbW9uVHlwZXNDYWNoZSgpCiAK
IHN0YXRpYyBjb25zdCBIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiYg
bWltZU1vZGVyblR5cGVzQ2FjaGUoKQogewotICAgIHN0YXRpYyBjb25zdCBhdXRvIGNhY2hlID0g
bWFrZU5ldmVyRGVzdHJveWVkKGNyZWF0ZUZpbGVUeXBlc1NldChbUVRNb3ZpZSBtb3ZpZUZpbGVU
eXBlczooUVRNb3ZpZUZpbGVUeXBlT3B0aW9ucyl3a1FUSW5jbHVkZU9ubHlNb2Rlcm5NZWRpYUZp
bGVUeXBlcygpXSkpOworICAgIHN0YXRpYyBRVE1vdmllRmlsZVR5cGVPcHRpb25zIGluY2x1ZGVP
bmx5TW9kZXJuTWVkaWFGaWxlVHlwZXMgPSAxIDw8IDg7CisgICAgc3RhdGljIGNvbnN0IGF1dG8g
Y2FjaGUgPSBtYWtlTmV2ZXJEZXN0cm95ZWQoY3JlYXRlRmlsZVR5cGVzU2V0KFtRVE1vdmllIG1v
dmllRmlsZVR5cGVzOmluY2x1ZGVPbmx5TW9kZXJuTWVkaWFGaWxlVHlwZXNdKSk7CiAgICAgcmV0
dXJuIGNhY2hlOwogfQogCkBAIC0xMzI0LDcgKzEzODksNyBAQCBib29sIE1lZGlhUGxheWVyUHJp
dmF0ZVFUS2l0Ojppc0F2YWlsYWJsZSgpCiBIYXNoU2V0PFJlZlB0cjxTZWN1cml0eU9yaWdpbj4+
IE1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0OjpvcmlnaW5zSW5NZWRpYUNhY2hlKGNvbnN0IFN0cmlu
ZyYpCiB7CiAgICAgSGFzaFNldDxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+PiBvcmlnaW5zOwotICAg
IE5TQXJyYXkgKm1lZGlhU2l0ZXMgPSB3a1FUR2V0U2l0ZXNJbk1lZGlhRG93bmxvYWRDYWNoZSgp
OworICAgIE5TQXJyYXkgKm1lZGlhU2l0ZXMgPSBbW1FUVXRpbGl0aWVzIHF0VXRpbGl0aWVzXSBz
aXRlc0luRG93bmxvYWRDYWNoZV07CiAgICAgCiAgICAgZm9yIChOU1N0cmluZyAqc2l0ZSBpbiBt
ZWRpYVNpdGVzKSB7CiAgICAgICAgIFVSTCBzaXRlQXNVUkwgPSBVUkwoVVJMKCksIHNpdGUpOwpA
QCAtMTMzNywxNCArMTQwMiwxNCBAQCBIYXNoU2V0PFJlZlB0cjxTZWN1cml0eU9yaWdpbj4+IE1l
ZGlhUGxheWVyUHJpdmF0ZVFUS2l0OjpvcmlnaW5zSW5NZWRpYUNhY2hlKGNvbgogdm9pZCBNZWRp
YVBsYXllclByaXZhdGVRVEtpdDo6Y2xlYXJNZWRpYUNhY2hlKGNvbnN0IFN0cmluZyYsIHN0ZDo6
Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQpCiB7CiAgICAgTE9HKE1lZGlhLCAiTWVk
aWFQbGF5ZXJQcml2YXRlUVRLaXQ6OmNsZWFyTWVkaWFDYWNoZSgpIik7Ci0gICAgd2tRVENsZWFy
TWVkaWFEb3dubG9hZENhY2hlKCk7CisgICAgW1tRVFV0aWxpdGllcyBxdFV0aWxpdGllc10gY2xl
YXJEb3dubG9hZENhY2hlXTsKIH0KIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6Y2xl
YXJNZWRpYUNhY2hlRm9yT3JpZ2lucyhjb25zdCBTdHJpbmcmLCBjb25zdCBIYXNoU2V0PFJlZlB0
cjxTZWN1cml0eU9yaWdpbj4+JiBvcmlnaW5zKQogewogICAgIExPRyhNZWRpYSwgIk1lZGlhUGxh
eWVyUHJpdmF0ZVFUS2l0OjpjbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5zKCkiKTsKICAgICBmb3Ig
KGF1dG8mIG9yaWdpbiA6IG9yaWdpbnMpCi0gICAgICAgIHdrUVRDbGVhck1lZGlhRG93bmxvYWRD
YWNoZUZvclNpdGUob3JpZ2luLT50b1Jhd1N0cmluZygpKTsKKyAgICAgICAgW1tRVFV0aWxpdGll
cyBxdFV0aWxpdGllc10gY2xlYXJEb3dubG9hZENhY2hlRm9yU2l0ZTpvcmlnaW4tPnRvUmF3U3Ry
aW5nKCldOwogfQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0OjpkaXNhYmxlVW5zdXBw
b3J0ZWRUcmFja3MoKQpAQCAtMTQ2OCwyMyArMTUzMywyOSBAQCBib29sIE1lZGlhUGxheWVyUHJp
dmF0ZVFUS2l0OjpoYXNTaW5nbGVTZWN1cml0eU9yaWdpbigpIGNvbnN0CiAgICAgaWYgKCFtX3F0
TW92aWUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIFJlZjxTZWN1cml0eU9yaWdpbj4g
cmVzb2x2ZWRPcmlnaW4gPSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKFVSTCh3a1FUTW92aWVSZXNv
bHZlZFVSTChtX3F0TW92aWUuZ2V0KCkpKSk7CisgICAgUmVmPFNlY3VyaXR5T3JpZ2luPiByZXNv
bHZlZE9yaWdpbiA9IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoVVJMKFttX3F0TW92aWUgVVJMXSkp
OwogICAgIFJlZjxTZWN1cml0eU9yaWdpbj4gcmVxdWVzdGVkT3JpZ2luID0gU2VjdXJpdHlPcmln
aW46OmNyZWF0ZUZyb21TdHJpbmcobV9tb3ZpZVVSTCk7CiAgICAgcmV0dXJuIHJlc29sdmVkT3Jp
Z2luLT5pc1NhbWVTY2hlbWVIb3N0UG9ydChyZXF1ZXN0ZWRPcmlnaW4uZ2V0KCkpOwogfQogCiBN
ZWRpYVBsYXllcjo6TW92aWVMb2FkVHlwZSBNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6bW92aWVM
b2FkVHlwZSgpIGNvbnN0CiB7Ci0gICAgaWYgKCFtX3F0TW92aWUpCi0gICAgICAgIHJldHVybiBN
ZWRpYVBsYXllcjo6VW5rbm93bjsKLQotICAgIE1lZGlhUGxheWVyOjpNb3ZpZUxvYWRUeXBlIG1v
dmllVHlwZSA9IChNZWRpYVBsYXllcjo6TW92aWVMb2FkVHlwZSl3a1FUTW92aWVHZXRUeXBlKG1f
cXRNb3ZpZS5nZXQoKSk7Ci0KLSAgICAvLyBDYW4ndCBpbmNsdWRlIFdlYktpdFN5c3RlbUludGVy
ZmFjZSBmcm9tIFdlYkNvcmUgc28gd2UgY2FuJ3QgZ2V0IHRoZSBlbnVtIHJldHVybmVkCi0gICAg
Ly8gYnkgd2tRVE1vdmllR2V0VHlwZSwgYnV0IGF0IGxlYXN0IHZlcmlmeSB0aGF0IHRoZSB2YWx1
ZSBpcyBpbiB0aGUgdmFsaWQgcmFuZ2UuCi0gICAgQVNTRVJUKG1vdmllVHlwZSA+PSBNZWRpYVBs
YXllcjo6VW5rbm93biAmJiBtb3ZpZVR5cGUgPD0gTWVkaWFQbGF5ZXI6OkxpdmVTdHJlYW0pOwot
Ci0gICAgcmV0dXJuIG1vdmllVHlwZTsKKyAgICBpZiAoIW1vdmllKQorICAgICAgICByZXR1cm4g
TWVkaWFQbGF5ZXI6Ok1vdmllTG9hZFR5cGU6OlVua25vd247CisKKyAgICBVSW50MzIgbW92aWVU
eXBlID0gbW92aWUubW92aWVUeXBlOworICAgIHN3aXRjaCAobW92aWVUeXBlKSB7CisgICAgY2Fz
ZSBRVE1vdmllVHlwZUxvY2FsOgorICAgIGNhc2UgUVRNb3ZpZVR5cGVGYXN0U3RhcnQ6CisgICAg
ICAgIHJldHVybiBNZWRpYVBsYXllcjo6TW92aWVMb2FkVHlwZTo6RG93bmxvYWQ7CisgICAgY2Fz
ZSBRVE1vdmllVHlwZUxpdmVTdHJlYW06CisgICAgICAgIHJldHVybiBNZWRpYVBsYXllcjo6TW92
aWVMb2FkVHlwZTo6TGl2ZVN0cmVhbTsKKyAgICBjYXNlIFFUTW92aWVUeXBlU3RvcmVkU3RyZWFt
OgorICAgICAgICByZXR1cm4gTWVkaWFQbGF5ZXI6Ok1vdmllTG9hZFR5cGU6OlN0b3JlZFN0cmVh
bTsKKyAgICBjYXNlIFFUTW92aWVUeXBlVW5rbm93bjoKKyAgICBkZWZhdWx0OgorICAgICAgICBy
ZXR1cm4gTWVkaWFQbGF5ZXI6Ok1vdmllTG9hZFR5cGU6OlVua25vd247CisgICAgfQogfQogCiB2
b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0OjpzZXRQcmVsb2FkKE1lZGlhUGxheWVyOjpQcmVs
b2FkIHByZWxvYWQpCkBAIC0xNTE1LDcgKzE1ODYsNyBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0
ZVFUS2l0OjpjYW5TYXZlTWVkaWFEYXRhKCkgY29uc3QKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
CiAgICAgaWYgKG1fcXRNb3ZpZSkKLSAgICAgICAgdXJsID0gVVJMKHdrUVRNb3ZpZVJlc29sdmVk
VVJMKG1fcXRNb3ZpZS5nZXQoKSkpOworICAgICAgICB1cmwgPSBVUkwoW21fcXRNb3ZpZSBVUkxd
KTsKICAgICBlbHNlCiAgICAgICAgIHVybCA9IFVSTChQYXJzZWRVUkxTdHJpbmcsIG1fbW92aWVV
UkwpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZVN5
c3RlbUludGVyZmFjZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVTeXN0
ZW1JbnRlcmZhY2UuaAppbmRleCAyM2ZmMjNmY2Y0NThiNDA3ODliMDJlMGFlYzEyYjIwMDAxMWZj
NWJiLi5mNjc1OTUwOWExMWZjZTMzNDEzZmU2OTAzM2E0Njg1NmY1OTc0NTU4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmgK
QEAgLTEzMSwzMiArMTMxLDcgQEAgZXh0ZXJuIGRvdWJsZSAoKndrR2V0TlNVUkxSZXNwb25zZUNh
bGN1bGF0ZWRFeHBpcmF0aW9uKShOU1VSTFJlc3BvbnNlICpyZXNwb25zZSkKIGV4dGVybiBCT09M
ICgqd2tHZXROU1VSTFJlc3BvbnNlTXVzdFJldmFsaWRhdGUpKE5TVVJMUmVzcG9uc2UgKnJlc3Bv
bnNlKTsKIGV4dGVybiBCT09MICgqd2tIaXRUZXN0TWVkaWFVSVBhcnQpKGludCBwYXJ0LCBDR1Jl
Y3QgYm91bmRzLCBDR1BvaW50IHBvaW50KTsKIGV4dGVybiB2b2lkICgqd2tNZWFzdXJlTWVkaWFV
SVBhcnQpKGludCBwYXJ0LCBDR1JlY3QgKmJvdW5kcywgQ0dTaXplICpuYXR1cmFsU2l6ZSk7Ci1l
eHRlcm4gTlNWaWV3ICooKndrQ3JlYXRlTWVkaWFVSUJhY2tncm91bmRWaWV3KSh2b2lkKTsKIAot
dHlwZWRlZiBlbnVtIHsKLSAgICB3a01lZGlhVUlDb250cm9sVGltZWxpbmUsCi0gICAgd2tNZWRp
YVVJQ29udHJvbFNsaWRlciwKLSAgICB3a01lZGlhVUlDb250cm9sUGxheVBhdXNlQnV0dG9uLAot
ICAgIHdrTWVkaWFVSUNvbnRyb2xFeGl0RnVsbHNjcmVlbkJ1dHRvbiwKLSAgICB3a01lZGlhVUlD
b250cm9sUmV3aW5kQnV0dG9uLAotICAgIHdrTWVkaWFVSUNvbnRyb2xGYXN0Rm9yd2FyZEJ1dHRv
biwKLSAgICB3a01lZGlhVUlDb250cm9sVm9sdW1lVXBCdXR0b24sCi0gICAgd2tNZWRpYVVJQ29u
dHJvbFZvbHVtZURvd25CdXR0b24KLX0gd2tNZWRpYVVJQ29udHJvbFR5cGU7Ci1leHRlcm4gTlND
b250cm9sICooKndrQ3JlYXRlTWVkaWFVSUNvbnRyb2wpKGludCk7Ci0KLWV4dGVybiB1bnNpZ25l
ZCAoKndrUVRJbmNsdWRlT25seU1vZGVybk1lZGlhRmlsZVR5cGVzKSh2b2lkKTsKLWV4dGVybiB2
b2lkICgqd2tRVE1vdmllRGlzYWJsZUNvbXBvbmVudCkodWludDMyX3RbNV0pOwotZXh0ZXJuIGZs
b2F0ICgqd2tRVE1vdmllTWF4VGltZUxvYWRlZCkoUVRNb3ZpZSopOwotZXh0ZXJuIE5TU3RyaW5n
ICooKndrUVRNb3ZpZU1heFRpbWVMb2FkZWRDaGFuZ2VOb3RpZmljYXRpb24pKHZvaWQpOwotZXh0
ZXJuIGludCAoKndrUVRNb3ZpZUdldFR5cGUpKFFUTW92aWUqKTsKLWV4dGVybiBCT09MICgqd2tR
VE1vdmllSGFzQ2xvc2VkQ2FwdGlvbnMpKFFUTW92aWUqKTsKLWV4dGVybiBOU1VSTCAqKCp3a1FU
TW92aWVSZXNvbHZlZFVSTCkoUVRNb3ZpZSopOwotZXh0ZXJuIHZvaWQgKCp3a1FUTW92aWVTZXRT
aG93Q2xvc2VkQ2FwdGlvbnMpKFFUTW92aWUqLCBCT09MKTsKLWV4dGVybiB2b2lkICgqd2tRVE1v
dmllU2VsZWN0UHJlZmVycmVkQWx0ZXJuYXRlcykoUVRNb3ZpZSopOwotZXh0ZXJuIE5TQXJyYXkg
Kigqd2tRVEdldFNpdGVzSW5NZWRpYURvd25sb2FkQ2FjaGUpKCk7Ci1leHRlcm4gdm9pZCAoKndr
UVRDbGVhck1lZGlhRG93bmxvYWRDYWNoZUZvclNpdGUpKE5TU3RyaW5nICpzaXRlKTsKLWV4dGVy
biB2b2lkICgqd2tRVENsZWFyTWVkaWFEb3dubG9hZENhY2hlKSgpOwogZXh0ZXJuIHZvaWQgKCp3
a1NldENvb2tpZVN0b3JhZ2VQcml2YXRlQnJvd3NpbmdFbmFibGVkKShCT09MKTsKICNlbmRpZgog
ZXh0ZXJuIHZvaWQgKCp3a1NldENPTk5FQ1RQcm94eUZvclN0cmVhbSkoQ0ZSZWFkU3RyZWFtUmVm
LCBDRlN0cmluZ1JlZiBwcm94eUhvc3QsIENGTnVtYmVyUmVmIHByb3h5UG9ydCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZVN5c3RlbUludGVyZmFjZS5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlLm1t
CmluZGV4IGM3MjNkNzQ0YjA0NmQyMTBmYWFiMjJjMmE0MWRkZjAyNDYzZGE5M2YuLjJlYWJkNGYx
NGYzOTMzNmUzMzQwY2U4ZWRlZTM3ZTQ4MmRkNjgwMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlLm1tCkBAIC0zNiwyMyAr
MzYsOSBAQCB2b2lkICgqd2tEcmF3TWVkaWFTbGlkZXJUcmFjaykoQ0dDb250ZXh0UmVmIGNvbnRl
eHQsIENHUmVjdCByZWN0LCBmbG9hdCB0aW1lTG9hZAogQk9PTCAoKndrSGl0VGVzdE1lZGlhVUlQ
YXJ0KShpbnQgcGFydCwgQ0dSZWN0IGJvdW5kcywgQ0dQb2ludCBwb2ludCk7CiB2b2lkICgqd2tE
cmF3TWVkaWFVSVBhcnQpKGludCBwYXJ0LCBDR0NvbnRleHRSZWYgY29udGV4dCwgQ0dSZWN0IHJl
Y3QsIHVuc2lnbmVkIHN0YXRlKTsKIHZvaWQgKCp3a01lYXN1cmVNZWRpYVVJUGFydCkoaW50IHBh
cnQsIENHUmVjdCAqYm91bmRzLCBDR1NpemUgKm5hdHVyYWxTaXplKTsKLU5TVmlldyAqKCp3a0Ny
ZWF0ZU1lZGlhVUlCYWNrZ3JvdW5kVmlldykodm9pZCk7Ci1OU0NvbnRyb2wgKigqd2tDcmVhdGVN
ZWRpYVVJQ29udHJvbCkoaW50KTsKIE5TVGltZUludGVydmFsICgqd2tHZXROU1VSTFJlc3BvbnNl
Q2FsY3VsYXRlZEV4cGlyYXRpb24pKE5TVVJMUmVzcG9uc2UgKnJlc3BvbnNlKTsKIEJPT0wgKCp3
a0dldE5TVVJMUmVzcG9uc2VNdXN0UmV2YWxpZGF0ZSkoTlNVUkxSZXNwb25zZSAqcmVzcG9uc2Up
Owogdm9pZCAoKndrUG9wdXBNZW51KShOU01lbnUqLCBOU1BvaW50IGxvY2F0aW9uLCBmbG9hdCB3
aWR0aCwgTlNWaWV3KiwgaW50IHNlbGVjdGVkSXRlbSwgTlNGb250KiwgTlNDb250cm9sU2l6ZSBj
b250cm9sU2l6ZSwgYm9vbCB1c2VzQ3VzdG9tQXBwZWFyYW5jZSk7Ci11bnNpZ25lZCAoKndrUVRJ
bmNsdWRlT25seU1vZGVybk1lZGlhRmlsZVR5cGVzKSh2b2lkKTsKLXZvaWQgKCp3a1FUTW92aWVE
aXNhYmxlQ29tcG9uZW50KSh1aW50MzJfdFs1XSk7Ci1mbG9hdCAoKndrUVRNb3ZpZU1heFRpbWVM
b2FkZWQpKFFUTW92aWUqKTsKLU5TU3RyaW5nICooKndrUVRNb3ZpZU1heFRpbWVMb2FkZWRDaGFu
Z2VOb3RpZmljYXRpb24pKHZvaWQpOwotaW50ICgqd2tRVE1vdmllR2V0VHlwZSkoUVRNb3ZpZSop
OwotQk9PTCAoKndrUVRNb3ZpZUhhc0Nsb3NlZENhcHRpb25zKShRVE1vdmllKik7Ci1OU1VSTCAq
KCp3a1FUTW92aWVSZXNvbHZlZFVSTCkoUVRNb3ZpZSopOwotdm9pZCAoKndrUVRNb3ZpZVNldFNo
b3dDbG9zZWRDYXB0aW9ucykoUVRNb3ZpZSosIEJPT0wpOwotdm9pZCAoKndrUVRNb3ZpZVNlbGVj
dFByZWZlcnJlZEFsdGVybmF0ZXMpKFFUTW92aWUqKTsKLU5TQXJyYXkgKigqd2tRVEdldFNpdGVz
SW5NZWRpYURvd25sb2FkQ2FjaGUpKCk7Ci12b2lkICgqd2tRVENsZWFyTWVkaWFEb3dubG9hZENh
Y2hlRm9yU2l0ZSkoTlNTdHJpbmcgKnNpdGUpOwotdm9pZCAoKndrUVRDbGVhck1lZGlhRG93bmxv
YWRDYWNoZSkoKTsKIAogdm9pZCAoKndrU2V0Q09OTkVDVFByb3h5Rm9yU3RyZWFtKShDRlJlYWRT
dHJlYW1SZWYsIENGU3RyaW5nUmVmIHByb3h5SG9zdCwgQ0ZOdW1iZXJSZWYgcHJveHlQb3J0KTsK
IHZvaWQgKCp3a1NldENPTk5FQ1RQcm94eUF1dGhvcml6YXRpb25Gb3JTdHJlYW0pKENGUmVhZFN0
cmVhbVJlZiwgQ0ZTdHJpbmdSZWYgcHJveHlBdXRob3JpemF0aW9uU3RyaW5nKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJWaWRlb0Z1bGxzY3JlZW5IVURXaW5k
b3dDb250cm9sbGVyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYlZpZGVvRnVs
bHNjcmVlbkhVRFdpbmRvd0NvbnRyb2xsZXIubW0KaW5kZXggZWZiNmUyYjI3M2M1ODM1MTMzZTc1
YjE2MjZhOTViMDQ5MGM3Nzk5Yy4uZmMwZjUxMGM3YTJjYjI0OTc4ZDA0YTBjNDgwNmVkNGM3MWM1
MzIwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYlZpZGVvRnVs
bHNjcmVlbkhVRFdpbmRvd0NvbnRyb2xsZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWFjL1dlYlZpZGVvRnVsbHNjcmVlbkhVRFdpbmRvd0NvbnRyb2xsZXIubW0KQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA5LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA5LTIwMTcgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMSw5
ICszMSwzOCBAQAogI2ltcG9ydCA8V2ViQ29yZS9IVE1MVmlkZW9FbGVtZW50Lmg+CiAjaW1wb3J0
IDxXZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmg+CiAjaW1wb3J0IDxwYWwvc3BpL2NnL0NvcmVHcmFw
aGljc1NQSS5oPgorI2ltcG9ydCA8cGFsL3NwaS9tYWMvUVRLaXRTUEkuaD4KKyNpbXBvcnQgPHd0
Zi9Tb2Z0TGlua2luZy5oPgorCitTT0ZUX0xJTktfRlJBTUVXT1JLKFFUS2l0KQorCitTT0ZUX0xJ
TktfQ0xBU1MoUVRLaXQsIFFUSFVEQmFja2dyb3VuZFZpZXcpCitTT0ZUX0xJTktfQ0xBU1MoUVRL
aXQsIFFUSFVEQnV0dG9uKQorU09GVF9MSU5LX0NMQVNTKFFUS2l0LCBRVEhVRFNsaWRlcikKK1NP
RlRfTElOS19DTEFTUyhRVEtpdCwgUVRIVURUaW1lbGluZSkKKworI2RlZmluZSBRVEhVREJhY2tn
cm91bmRWaWV3IGdldFFUSFVEQmFja2dyb3VuZFZpZXdDbGFzcygpCisjZGVmaW5lIFFUSFVEQnV0
dG9uIGdldFFUSFVEQnV0dG9uQ2xhc3MoKQorI2RlZmluZSBRVEhVRFNsaWRlciBnZXRRVEhVRFNs
aWRlckNsYXNzKCkKKyNkZWZpbmUgUVRIVURUaW1lbGluZSBnZXRRVEhVRFRpbWVsaW5lQ2xhc3Mo
KQogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAorbmFtZXNwYWNlIFdlYkNvcmUgeworCitl
bnVtIGNsYXNzIE1lZGlhVUlDb250cm9sIHsKKyAgICBUaW1lbGluZSwKKyAgICBTbGlkZXIsCisg
ICAgUGxheVBhdXNlQnV0dG9uLAorICAgIEV4aXRGdWxsc2NyZWVuQnV0dG9uLAorICAgIFJld2lu
ZEJ1dHRvbiwKKyAgICBGYXN0Rm9yd2FyZEJ1dHRvbiwKKyAgICBWb2x1bWVVcEJ1dHRvbiwKKyAg
ICBWb2x1bWVEb3duQnV0dG9uLAorfTsKKworfQorCiBAaW50ZXJmYWNlIFdlYlZpZGVvRnVsbHNj
cmVlbkhVRFdpbmRvd0NvbnRyb2xsZXIgKFByaXZhdGUpIDxOU1dpbmRvd0RlbGVnYXRlPgogCiAt
ICh2b2lkKXVwZGF0ZVRpbWU7CkBAIC0yNjUsMTAgKzI5NCw2OCBAQCAtICh2b2lkKWNsb3NlV2lu
ZG93CiAgICAgW3NlbGYgc2V0V2luZG93Om5pbF07CiB9CiAKLXN0YXRpYyBOU0NvbnRyb2wgKmNy
ZWF0ZUNvbnRyb2xXaXRoTWVkaWFVSUNvbnRyb2xUeXBlKGludCBjb250cm9sVHlwZSwgTlNSZWN0
IGZyYW1lKQorc3RhdGljIE5TQ29udHJvbCAqY3JlYXRlTWVkaWFVSUNvbnRyb2woTWVkaWFVSUNv
bnRyb2wgY29udHJvbFR5cGUpCit7CisgICAgc3dpdGNoIChjb250cm9sVHlwZSkgeworICAgIGNh
c2UgTWVkaWFVSUNvbnRyb2w6OlRpbWVsaW5lOiB7CisgICAgICAgIE5TU2xpZGVyICpzbGlkZXIg
PSBbW1FUSFVEVGltZWxpbmUgYWxsb2NdIGluaXRdOworICAgICAgICBbW3NsaWRlciBjZWxsXSBz
ZXRDb250aW51b3VzOllFU107CisgICAgICAgIHJldHVybiBzbGlkZXI7CisgICAgfQorICAgIGNh
c2UgTWVkaWFVSUNvbnRyb2w6OlNsaWRlcjogeworICAgICAgICBOU0J1dHRvbiAqc2xpZGVyID0g
W1tRVEhVRFNsaWRlciBhbGxvY10gaW5pdF07CisgICAgICAgIFtbc2xpZGVyIGNlbGxdIHNldENv
bnRpbnVvdXM6WUVTXTsKKyAgICAgICAgcmV0dXJuIHNsaWRlcjsKKyAgICB9CisgICAgY2FzZSBN
ZWRpYVVJQ29udHJvbDo6UGxheVBhdXNlQnV0dG9uOiB7CisgICAgICAgIE5TQnV0dG9uICpidXR0
b24gPSBbW1FUSFVEQnV0dG9uIGFsbG9jXSBpbml0XTsKKyAgICAgICAgW2J1dHRvbiBzZXRJbWFn
ZTpbTlNJbWFnZSBpbWFnZU5hbWVkOkAiTlNQbGF5VGVtcGxhdGUiXV07CisgICAgICAgIFtidXR0
b24gc2V0QWx0ZXJuYXRlSW1hZ2U6W05TSW1hZ2UgaW1hZ2VOYW1lZDpAIk5TUGF1c2VRVFByaXZh
dGVUZW1wbGF0ZSJdXTsKKworICAgICAgICBbW2J1dHRvbiBjZWxsXSBzZXRTaG93c1N0YXRlQnk6
TlNDb250ZW50c0NlbGxNYXNrXTsKKyAgICAgICAgW2J1dHRvbiBzZXRCb3JkZXJlZDpOT107Cisg
ICAgICAgIHJldHVybiBidXR0b247CisgICAgfQorICAgIGNhc2UgTWVkaWFVSUNvbnRyb2w6OkV4
aXRGdWxsc2NyZWVuQnV0dG9uOiB7CisgICAgICAgIE5TQnV0dG9uICpidXR0b24gPSBbW1FUSFVE
QnV0dG9uIGFsbG9jXSBpbml0XTsKKyAgICAgICAgW2J1dHRvbiBzZXRJbWFnZTpbTlNJbWFnZSBp
bWFnZU5hbWVkOkAiTlNFeGl0RnVsbFNjcmVlblRlbXBsYXRlIl1dOworICAgICAgICBbYnV0dG9u
IHNldEJvcmRlcmVkOk5PXTsKKyAgICAgICAgcmV0dXJuIGJ1dHRvbjsKKyAgICB9CisgICAgY2Fz
ZSBNZWRpYVVJQ29udHJvbDo6UmV3aW5kQnV0dG9uOiB7CisgICAgICAgIE5TQnV0dG9uICpidXR0
b24gPSBbW1FUSFVEQnV0dG9uIGFsbG9jXSBpbml0XTsKKyAgICAgICAgW2J1dHRvbiBzZXRJbWFn
ZTpbTlNJbWFnZSBpbWFnZU5hbWVkOkAiTlNSZXdpbmRUZW1wbGF0ZSJdXTsKKyAgICAgICAgW2J1
dHRvbiBzZXRCb3JkZXJlZDpOT107CisgICAgICAgIHJldHVybiBidXR0b247CisgICAgfQorICAg
IGNhc2UgTWVkaWFVSUNvbnRyb2w6OkZhc3RGb3J3YXJkQnV0dG9uOiB7CisgICAgICAgIE5TQnV0
dG9uICpidXR0b24gPSBbW1FUSFVEQnV0dG9uIGFsbG9jXSBpbml0XTsKKyAgICAgICAgW2J1dHRv
biBzZXRJbWFnZTpbTlNJbWFnZSBpbWFnZU5hbWVkOkAiTlNGYXN0Rm9yd2FyZFRlbXBsYXRlIl1d
OworICAgICAgICBbYnV0dG9uIHNldEJvcmRlcmVkOk5PXTsKKyAgICAgICAgcmV0dXJuIGJ1dHRv
bjsKKyAgICB9CisgICAgY2FzZSBNZWRpYVVJQ29udHJvbDo6Vm9sdW1lVXBCdXR0b246IHsKKyAg
ICAgICAgTlNCdXR0b24gKmJ1dHRvbiA9IFtbUVRIVURCdXR0b24gYWxsb2NdIGluaXRdOworICAg
ICAgICBbYnV0dG9uIHNldEltYWdlOltOU0ltYWdlIGltYWdlTmFtZWQ6QCJOU0F1ZGlvT3V0cHV0
Vm9sdW1lSGlnaFRlbXBsYXRlIl1dOworICAgICAgICBbYnV0dG9uIHNldEJvcmRlcmVkOk5PXTsK
KyAgICAgICAgcmV0dXJuIGJ1dHRvbjsKKyAgICB9CisgICAgY2FzZSBNZWRpYVVJQ29udHJvbDo6
Vm9sdW1lRG93bkJ1dHRvbjogeworICAgICAgICBOU0J1dHRvbiAqYnV0dG9uID0gW1tRVEhVREJ1
dHRvbiBhbGxvY10gaW5pdF07CisgICAgICAgIFtidXR0b24gc2V0SW1hZ2U6W05TSW1hZ2UgaW1h
Z2VOYW1lZDpAIk5TQXVkaW9PdXRwdXRWb2x1bWVMb3dUZW1wbGF0ZSJdXTsKKyAgICAgICAgW2J1
dHRvbiBzZXRCb3JkZXJlZDpOT107CisgICAgICAgIHJldHVybiBidXR0b247CisgICAgfQorICAg
IH0KKworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBuaWw7Cit9CisKK3N0
YXRpYyBOU0NvbnRyb2wgKmNyZWF0ZUNvbnRyb2xXaXRoTWVkaWFVSUNvbnRyb2xUeXBlKE1lZGlh
VUlDb250cm9sIGNvbnRyb2xUeXBlLCBOU1JlY3QgZnJhbWUpCiB7Ci0gICAgTlNDb250cm9sICpj
b250cm9sID0gd2tDcmVhdGVNZWRpYVVJQ29udHJvbChjb250cm9sVHlwZSk7Ci0gICAgW2NvbnRy
b2wgc2V0RnJhbWU6ZnJhbWVdOworICAgIE5TQ29udHJvbCAqY29udHJvbCA9IGNyZWF0ZU1lZGlh
VUlDb250cm9sKGNvbnRyb2xUeXBlKTsKKyAgICBjb250cm9sLmZyYW1lID0gZnJhbWU7CiAgICAg
cmV0dXJuIGNvbnRyb2w7CiB9CiAKQEAgLTI4NSw2ICszNzIsMjEgQEAgc3RhdGljIE5TVGV4dEZp
ZWxkICpjcmVhdGVUaW1lVGV4dEZpZWxkKE5TUmVjdCBmcmFtZSkKICAgICByZXR1cm4gdGV4dEZp
ZWxkOwogfQogCitzdGF0aWMgTlNWaWV3ICpjcmVhdGVNZWRpYVVJQmFja2dyb3VuZFZpZXcoKQor
eworICAgIGlkIHZpZXcgPSBbW1FUSFVEQmFja2dyb3VuZFZpZXcgYWxsb2NdIGluaXRdOworCisg
ICAgY29uc3QgQ0dGbG9hdCBxdWlja1RpbWVQbGF5ZXJIVURIZWlnaHQgPSA1OTsKKyAgICBjb25z
dCBDR0Zsb2F0IHF1aWNrVGltZVBsYXllckhVRENvbnRlbnRCb3JkZXJQb3NpdGlvbiA9IDM4Owor
CisjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcHVzaAorI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGlj
IGlnbm9yZWQgIi1XZGVwcmVjYXRlZC1kZWNsYXJhdGlvbnMiCisgICAgW3ZpZXcgc2V0Q29udGVu
dEJvcmRlclBvc2l0aW9uOnF1aWNrVGltZVBsYXllckhVRENvbnRlbnRCb3JkZXJQb3NpdGlvbiAv
IHF1aWNrVGltZVBsYXllckhVREhlaWdodF07CisjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcG9w
CisKKyAgICByZXR1cm4gdmlldzsKK30KKwogLSAodm9pZCl3aW5kb3dEaWRMb2FkCiB7CiAgICAg
c3RhdGljIGNvbnN0IENHRmxvYXQgaG9yaXpvbnRhbE1hcmdpbiA9IDEwOwpAQCAtMzEwLDcgKzQx
Miw3IEBAIC0gKHZvaWQpd2luZG93RGlkTG9hZAogICAgIE5TV2luZG93ICp3aW5kb3cgPSBbc2Vs
ZiB3aW5kb3ddOwogICAgIEFTU0VSVCh3aW5kb3cpOwogCi0gICAgTlNWaWV3ICpiYWNrZ3JvdW5k
ID0gd2tDcmVhdGVNZWRpYVVJQmFja2dyb3VuZFZpZXcoKTsKKyAgICBOU1ZpZXcgKmJhY2tncm91
bmQgPSBjcmVhdGVNZWRpYVVJQmFja2dyb3VuZFZpZXcoKTsKIAogICAgIFt3aW5kb3cgc2V0Q29u
dGVudFZpZXc6YmFja2dyb3VuZF07CiAgICAgX2FyZWEgPSBbW05TVHJhY2tpbmdBcmVhIGFsbG9j
XSBpbml0V2l0aFJlY3Q6W2JhY2tncm91bmQgYm91bmRzXSBvcHRpb25zOk5TVHJhY2tpbmdNb3Vz
ZUVudGVyZWRBbmRFeGl0ZWQgfCBOU1RyYWNraW5nQWN0aXZlQWx3YXlzIG93bmVyOnNlbGYgdXNl
ckluZm86bmlsXTsKQEAgLTMyMCwxNCArNDIyLDE0IEBAIC0gKHZvaWQpd2luZG93RGlkTG9hZAog
ICAgIE5TVmlldyAqY29udGVudFZpZXcgPSBbd2luZG93IGNvbnRlbnRWaWV3XTsKIAogICAgIENH
RmxvYXQgY2VudGVyID0gQ0dGbG9vcigod2luZG93V2lkdGggLSBwbGF5QnV0dG9uV2lkdGgpIC8g
Mik7Ci0gICAgX3BsYXlCdXR0b24gPSAoTlNCdXR0b24gKiljcmVhdGVDb250cm9sV2l0aE1lZGlh
VUlDb250cm9sVHlwZSh3a01lZGlhVUlDb250cm9sUGxheVBhdXNlQnV0dG9uLCBOU01ha2VSZWN0
KGNlbnRlciwgd2luZG93SGVpZ2h0IC0gcGxheUJ1dHRvblRvcE1hcmdpbiAtIHBsYXlCdXR0b25I
ZWlnaHQsIHBsYXlCdXR0b25XaWR0aCwgcGxheUJ1dHRvbkhlaWdodCkpOworICAgIF9wbGF5QnV0
dG9uID0gKE5TQnV0dG9uICopY3JlYXRlQ29udHJvbFdpdGhNZWRpYVVJQ29udHJvbFR5cGUoTWVk
aWFVSUNvbnRyb2w6OlBsYXlQYXVzZUJ1dHRvbiwgTlNNYWtlUmVjdChjZW50ZXIsIHdpbmRvd0hl
aWdodCAtIHBsYXlCdXR0b25Ub3BNYXJnaW4gLSBwbGF5QnV0dG9uSGVpZ2h0LCBwbGF5QnV0dG9u
V2lkdGgsIHBsYXlCdXR0b25IZWlnaHQpKTsKICAgICBBU1NFUlQoW19wbGF5QnV0dG9uIGlzS2lu
ZE9mQ2xhc3M6W05TQnV0dG9uIGNsYXNzXV0pOwogICAgIFtfcGxheUJ1dHRvbiBzZXRUYXJnZXQ6
c2VsZl07CiAgICAgW19wbGF5QnV0dG9uIHNldEFjdGlvbjpAc2VsZWN0b3IodG9nZ2xlUGxheWlu
ZzopXTsKICAgICBbY29udGVudFZpZXcgYWRkU3VidmlldzpfcGxheUJ1dHRvbl07CiAKICAgICBD
R0Zsb2F0IGNsb3NlVG9SaWdodCA9IHdpbmRvd1dpZHRoIC0gaG9yaXpvbnRhbE1hcmdpbiAtIGV4
aXRGdWxsc2NyZWVuQnV0dG9uV2lkdGg7Ci0gICAgTlNDb250cm9sICpleGl0RnVsbHNjcmVlbkJ1
dHRvbiA9IGNyZWF0ZUNvbnRyb2xXaXRoTWVkaWFVSUNvbnRyb2xUeXBlKHdrTWVkaWFVSUNvbnRy
b2xFeGl0RnVsbHNjcmVlbkJ1dHRvbiwgTlNNYWtlUmVjdChjbG9zZVRvUmlnaHQsIHdpbmRvd0hl
aWdodCAtIGV4aXRGdWxsc2NyZWVuQnV0dG9uVG9wTWFyZ2luIC0gZXhpdEZ1bGxzY3JlZW5CdXR0
b25IZWlnaHQsIGV4aXRGdWxsc2NyZWVuQnV0dG9uV2lkdGgsIGV4aXRGdWxsc2NyZWVuQnV0dG9u
SGVpZ2h0KSk7CisgICAgTlNDb250cm9sICpleGl0RnVsbHNjcmVlbkJ1dHRvbiA9IGNyZWF0ZUNv
bnRyb2xXaXRoTWVkaWFVSUNvbnRyb2xUeXBlKE1lZGlhVUlDb250cm9sOjpFeGl0RnVsbHNjcmVl
bkJ1dHRvbiwgTlNNYWtlUmVjdChjbG9zZVRvUmlnaHQsIHdpbmRvd0hlaWdodCAtIGV4aXRGdWxs
c2NyZWVuQnV0dG9uVG9wTWFyZ2luIC0gZXhpdEZ1bGxzY3JlZW5CdXR0b25IZWlnaHQsIGV4aXRG
dWxsc2NyZWVuQnV0dG9uV2lkdGgsIGV4aXRGdWxsc2NyZWVuQnV0dG9uSGVpZ2h0KSk7CiAgICAg
W2V4aXRGdWxsc2NyZWVuQnV0dG9uIHNldEFjdGlvbjpAc2VsZWN0b3IoZXhpdEZ1bGxzY3JlZW46
KV07CiAgICAgW2V4aXRGdWxsc2NyZWVuQnV0dG9uIHNldFRhcmdldDpzZWxmXTsKICAgICBbY29u
dGVudFZpZXcgYWRkU3VidmlldzpleGl0RnVsbHNjcmVlbkJ1dHRvbl07CkBAIC0zMzUsMjcgKzQz
NywyNyBAQCAtICh2b2lkKXdpbmRvd0RpZExvYWQKICAgICAKICAgICBDR0Zsb2F0IHZvbHVtZUNv
bnRyb2xzQm90dG9tID0gd2luZG93SGVpZ2h0IC0gdm9sdW1lQ29udHJvbHNUb3BNYXJnaW4gLSB2
b2x1bWVCdXR0b25IZWlnaHQ7CiAgICAgQ0dGbG9hdCBsZWZ0ID0gaG9yaXpvbnRhbE1hcmdpbjsK
LSAgICBOU0NvbnRyb2wgKnZvbHVtZURvd25CdXR0b24gPSBjcmVhdGVDb250cm9sV2l0aE1lZGlh
VUlDb250cm9sVHlwZSh3a01lZGlhVUlDb250cm9sVm9sdW1lRG93bkJ1dHRvbiwgTlNNYWtlUmVj
dChsZWZ0LCB2b2x1bWVDb250cm9sc0JvdHRvbSwgdm9sdW1lQnV0dG9uV2lkdGgsIHZvbHVtZUJ1
dHRvbkhlaWdodCkpOworICAgIE5TQ29udHJvbCAqdm9sdW1lRG93bkJ1dHRvbiA9IGNyZWF0ZUNv
bnRyb2xXaXRoTWVkaWFVSUNvbnRyb2xUeXBlKE1lZGlhVUlDb250cm9sOjpWb2x1bWVEb3duQnV0
dG9uLCBOU01ha2VSZWN0KGxlZnQsIHZvbHVtZUNvbnRyb2xzQm90dG9tLCB2b2x1bWVCdXR0b25X
aWR0aCwgdm9sdW1lQnV0dG9uSGVpZ2h0KSk7CiAgICAgW2NvbnRlbnRWaWV3IGFkZFN1YnZpZXc6
dm9sdW1lRG93bkJ1dHRvbl07CiAgICAgW3ZvbHVtZURvd25CdXR0b24gc2V0VGFyZ2V0OnNlbGZd
OwogICAgIFt2b2x1bWVEb3duQnV0dG9uIHNldEFjdGlvbjpAc2VsZWN0b3Ioc2V0Vm9sdW1lVG9a
ZXJvOildOwogICAgIFt2b2x1bWVEb3duQnV0dG9uIHJlbGVhc2VdOwogCiAgICAgbGVmdCArPSB2
b2x1bWVCdXR0b25XaWR0aDsKLSAgICBfdm9sdW1lU2xpZGVyID0gY3JlYXRlQ29udHJvbFdpdGhN
ZWRpYVVJQ29udHJvbFR5cGUod2tNZWRpYVVJQ29udHJvbFNsaWRlciwgTlNNYWtlUmVjdChsZWZ0
LCB2b2x1bWVDb250cm9sc0JvdHRvbSArIENHRmxvb3IoKHZvbHVtZUJ1dHRvbkhlaWdodCAtIHZv
bHVtZVNsaWRlckhlaWdodCkgLyAyKSwgdm9sdW1lU2xpZGVyV2lkdGgsIHZvbHVtZVNsaWRlckhl
aWdodCkpOworICAgIF92b2x1bWVTbGlkZXIgPSBjcmVhdGVDb250cm9sV2l0aE1lZGlhVUlDb250
cm9sVHlwZShNZWRpYVVJQ29udHJvbDo6U2xpZGVyLCBOU01ha2VSZWN0KGxlZnQsIHZvbHVtZUNv
bnRyb2xzQm90dG9tICsgQ0dGbG9vcigodm9sdW1lQnV0dG9uSGVpZ2h0IC0gdm9sdW1lU2xpZGVy
SGVpZ2h0KSAvIDIpLCB2b2x1bWVTbGlkZXJXaWR0aCwgdm9sdW1lU2xpZGVySGVpZ2h0KSk7CiAg
ICAgW192b2x1bWVTbGlkZXIgc2V0VmFsdWU6W05TTnVtYmVyIG51bWJlcldpdGhEb3VibGU6W3Nl
bGYgbWF4Vm9sdW1lXV0gZm9yS2V5OkAibWF4VmFsdWUiXTsKICAgICBbX3ZvbHVtZVNsaWRlciBz
ZXRUYXJnZXQ6c2VsZl07CiAgICAgW192b2x1bWVTbGlkZXIgc2V0QWN0aW9uOkBzZWxlY3Rvcih2
b2x1bWVDaGFuZ2VkOildOwogICAgIFtjb250ZW50VmlldyBhZGRTdWJ2aWV3Ol92b2x1bWVTbGlk
ZXJdOwogCiAgICAgbGVmdCArPSB2b2x1bWVTbGlkZXJXaWR0aCArIHZvbHVtZVVwQnV0dG9uTGVm
dE1hcmdpbjsKLSAgICBOU0NvbnRyb2wgKnZvbHVtZVVwQnV0dG9uID0gY3JlYXRlQ29udHJvbFdp
dGhNZWRpYVVJQ29udHJvbFR5cGUod2tNZWRpYVVJQ29udHJvbFZvbHVtZVVwQnV0dG9uLCBOU01h
a2VSZWN0KGxlZnQsIHZvbHVtZUNvbnRyb2xzQm90dG9tLCB2b2x1bWVCdXR0b25XaWR0aCwgdm9s
dW1lQnV0dG9uSGVpZ2h0KSk7CisgICAgTlNDb250cm9sICp2b2x1bWVVcEJ1dHRvbiA9IGNyZWF0
ZUNvbnRyb2xXaXRoTWVkaWFVSUNvbnRyb2xUeXBlKE1lZGlhVUlDb250cm9sOjpWb2x1bWVVcEJ1
dHRvbiwgTlNNYWtlUmVjdChsZWZ0LCB2b2x1bWVDb250cm9sc0JvdHRvbSwgdm9sdW1lQnV0dG9u
V2lkdGgsIHZvbHVtZUJ1dHRvbkhlaWdodCkpOwogICAgIFt2b2x1bWVVcEJ1dHRvbiBzZXRUYXJn
ZXQ6c2VsZl07CiAgICAgW3ZvbHVtZVVwQnV0dG9uIHNldEFjdGlvbjpAc2VsZWN0b3Ioc2V0Vm9s
dW1lVG9NYXhpbXVtOildOwogICAgIFtjb250ZW50VmlldyBhZGRTdWJ2aWV3OnZvbHVtZVVwQnV0
dG9uXTsKICAgICBbdm9sdW1lVXBCdXR0b24gcmVsZWFzZV07CiAKLSAgICBfdGltZWxpbmUgPSB3
a0NyZWF0ZU1lZGlhVUlDb250cm9sKHdrTWVkaWFVSUNvbnRyb2xUaW1lbGluZSk7CisgICAgX3Rp
bWVsaW5lID0gY3JlYXRlTWVkaWFVSUNvbnRyb2woTWVkaWFVSUNvbnRyb2w6OlRpbWVsaW5lKTsK
IAogICAgIFtfdGltZWxpbmUgc2V0VGFyZ2V0OnNlbGZdOwogICAgIFtfdGltZWxpbmUgc2V0QWN0
aW9uOkBzZWxlY3Rvcih0aW1lbGluZVBvc2l0aW9uQ2hhbmdlZDopXTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViU3lzdGVtSW50ZXJm
YWNlLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJT
eXN0ZW1JbnRlcmZhY2UubW0KaW5kZXggMGRkZDU3MTQ1OWI4NTZmMzkyMDVlMTEwY2MwMGNjY2Fl
ZTNmZDBlZS4uYmRhNWQ3M2RmYzEyMmYzZTAyMjNhYWFlNTUyODRkNGIzOWU1NzNjZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJTeXN0
ZW1JbnRlcmZhY2UubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L21hYy9XZWJTeXN0ZW1JbnRlcmZhY2UubW0KQEAgLTQzLDE4ICs0Myw2IEBAIHZvaWQgSW5p
dFdlYkNvcmVTeXN0ZW1JbnRlcmZhY2Uodm9pZCkKICAgICAgICAgSU5JVChEcmF3TWVkaWFVSVBh
cnQpOwogICAgICAgICBJTklUKEhpdFRlc3RNZWRpYVVJUGFydCk7CiAgICAgICAgIElOSVQoTWVh
c3VyZU1lZGlhVUlQYXJ0KTsKLSAgICAgICAgSU5JVChRVEluY2x1ZGVPbmx5TW9kZXJuTWVkaWFG
aWxlVHlwZXMpOwotICAgICAgICBJTklUKFFUTW92aWVEaXNhYmxlQ29tcG9uZW50KTsKLSAgICAg
ICAgSU5JVChRVE1vdmllR2V0VHlwZSk7Ci0gICAgICAgIElOSVQoUVRNb3ZpZUhhc0Nsb3NlZENh
cHRpb25zKTsKLSAgICAgICAgSU5JVChRVE1vdmllTWF4VGltZUxvYWRlZCk7Ci0gICAgICAgIElO
SVQoUVRNb3ZpZU1heFRpbWVMb2FkZWRDaGFuZ2VOb3RpZmljYXRpb24pOwotICAgICAgICBJTklU
KFFUTW92aWVSZXNvbHZlZFVSTCk7Ci0gICAgICAgIElOSVQoUVRNb3ZpZVNlbGVjdFByZWZlcnJl
ZEFsdGVybmF0ZXMpOwotICAgICAgICBJTklUKFFUTW92aWVTZXRTaG93Q2xvc2VkQ2FwdGlvbnMp
OwotICAgICAgICBJTklUKFFUR2V0U2l0ZXNJbk1lZGlhRG93bmxvYWRDYWNoZSk7Ci0gICAgICAg
IElOSVQoUVRDbGVhck1lZGlhRG93bmxvYWRDYWNoZUZvclNpdGUpOwotICAgICAgICBJTklUKFFU
Q2xlYXJNZWRpYURvd25sb2FkQ2FjaGUpOwogI2VuZGlmCiAgICAgICAgIElOSVQoU2V0Q09OTkVD
VFByb3h5QXV0aG9yaXphdGlvbkZvclN0cmVhbSk7CiAgICAgICAgIElOSVQoU2V0Q09OTkVDVFBy
b3h5Rm9yU3RyZWFtKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYlN5c3RlbUludGVyZmFjZS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYlN5c3RlbUludGVyZmFjZS5tbQppbmRleCBhMzIwMjQ1MzdjYWU3
NzQwNGQxMjJhM2EzODU0ZDNjMmU3YmEyNDkwLi4xNzQ2NTg2YjI0MmY1MmUwN2E5OWZlOTE1YWE2
YjRmNjJhM2JjNWQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJTeXN0ZW1JbnRlcmZhY2UubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViU3lzdGVtSW50ZXJmYWNlLm1tCkBAIC00OSwyNSArNDksOSBA
QCB2b2lkIEluaXRXZWJDb3JlU3lzdGVtSW50ZXJmYWNlKHZvaWQpCiAgICAgSU5JVChEcmF3TWVk
aWFTbGlkZXJUcmFjayk7CiAgICAgSU5JVChIaXRUZXN0TWVkaWFVSVBhcnQpOwogICAgIElOSVQo
TWVhc3VyZU1lZGlhVUlQYXJ0KTsKLSAgICBJTklUKENyZWF0ZU1lZGlhVUlCYWNrZ3JvdW5kVmll
dyk7Ci0gICAgSU5JVChDcmVhdGVNZWRpYVVJQ29udHJvbCk7CiAjZW5kaWYKICAgICBJTklUKFNl
dENPTk5FQ1RQcm94eUF1dGhvcml6YXRpb25Gb3JTdHJlYW0pOwogICAgIElOSVQoU2V0Q09OTkVD
VFByb3h5Rm9yU3RyZWFtKTsKLSNpZiBFTkFCTEUoVklERU8pICYmICFQTEFURk9STShJT1MpCi0g
ICAgSU5JVChRVEluY2x1ZGVPbmx5TW9kZXJuTWVkaWFGaWxlVHlwZXMpOwotICAgIElOSVQoUVRN
b3ZpZURpc2FibGVDb21wb25lbnQpOwotICAgIElOSVQoUVRNb3ZpZU1heFRpbWVMb2FkZWQpOwot
ICAgIElOSVQoUVRNb3ZpZU1heFRpbWVMb2FkZWRDaGFuZ2VOb3RpZmljYXRpb24pOwotICAgIElO
SVQoUVRNb3ZpZUdldFR5cGUpOwotICAgIElOSVQoUVRNb3ZpZUhhc0Nsb3NlZENhcHRpb25zKTsK
LSAgICBJTklUKFFUTW92aWVSZXNvbHZlZFVSTCk7Ci0gICAgSU5JVChRVE1vdmllU2V0U2hvd0Ns
b3NlZENhcHRpb25zKTsKLSAgICBJTklUKFFUTW92aWVTZWxlY3RQcmVmZXJyZWRBbHRlcm5hdGVz
KTsKLSAgICBJTklUKFFUR2V0U2l0ZXNJbk1lZGlhRG93bmxvYWRDYWNoZSk7Ci0gICAgSU5JVChR
VENsZWFyTWVkaWFEb3dubG9hZENhY2hlRm9yU2l0ZSk7Ci0gICAgSU5JVChRVENsZWFyTWVkaWFE
b3dubG9hZENhY2hlKTsKLSNlbmRpZgogCiAjaWYgIVBMQVRGT1JNKElPUykKICAgICBJTklUKEV4
ZWN1dGFibGVXYXNMaW5rZWRPbk9yQmVmb3JlU25vd0xlb3BhcmQpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>320192</attachid>
            <date>2017-09-07 15:42:06 -0700</date>
            <delta_ts>2017-09-07 15:55:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-176472-20170907154206.patch</filename>
            <type>text/plain</type>
            <size>35176</size>
            <attacher name="Andy Estes">aestes</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIxNjg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDY5MjY5MTkxOTNmNWE2
MjdjNmRiYzQyNDFiYTVlY2M3ZDdhNmU3NC4uYWUyODQ1OTMzYzJlNDk2MTVhYTMyOWE1OWI3YTky
YTc0NjNkZmVlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDE3LTA5LTA2ICBBbmR5
IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBbTWFjXSBVcHN0cmVhbSBRVEtp
dC1yZWxhdGVkIFdlYktpdFN5c3RlbUludGVyZmFjZSBmdW5jdGlvbnMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NjQ3MgorCisgICAgICAgIFJldmll
d2VkIGJ5IEVyaWMgQ2FybHNvbi4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9N
ZWRpYVBsYXllclByaXZhdGVRVEtpdC5tbToKKyAgICAgICAgKFdlYkNvcmU6OmRpc2FibGVDb21w
b25lbnRzT25jZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6
Y3JlYXRlUVRNb3ZpZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVRVEtp
dDo6aGFzQ2xvc2VkQ2FwdGlvbnMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5
ZXJQcml2YXRlUVRLaXQ6OnNldENsb3NlZENhcHRpb25zVmlzaWJsZSk6CisgICAgICAgIChXZWJD
b3JlOjpzZWxlY3RQcmVmZXJyZWRBbHRlcm5hdGVUcmFja0Zvck1lZGlhVHlwZSk6CisgICAgICAg
IChXZWJDb3JlOjpzZWxlY3RQcmVmZXJyZWRBbHRlcm5hdGVzKToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0Ojp1cGRhdGVTdGF0ZXMpOgorICAgICAgICAoV2ViQ29y
ZTo6bWltZU1vZGVyblR5cGVzQ2FjaGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQ
cml2YXRlUVRLaXQ6Om9yaWdpbnNJbk1lZGlhQ2FjaGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFQbGF5ZXJQcml2YXRlUVRLaXQ6OmNsZWFyTWVkaWFDYWNoZSk6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6Y2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2lucyk6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6aGFzU2luZ2xlU2VjdXJp
dHlPcmlnaW4gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlUVRL
aXQ6Om1vdmllTG9hZFR5cGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQ
cml2YXRlUVRLaXQ6OmNhblNhdmVNZWRpYURhdGEgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3Jt
L21hYy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmg6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1dl
YkNvcmVTeXN0ZW1JbnRlcmZhY2UubW06CisgICAgICAgICogcGxhdGZvcm0vbWFjL1dlYlZpZGVv
RnVsbHNjcmVlbkhVRFdpbmRvd0NvbnRyb2xsZXIubW06CisgICAgICAgIChjcmVhdGVNZWRpYVVJ
Q29udHJvbCk6CisgICAgICAgIChjcmVhdGVDb250cm9sV2l0aE1lZGlhVUlDb250cm9sVHlwZSk6
CisgICAgICAgIChjcmVhdGVNZWRpYVVJQmFja2dyb3VuZFZpZXcpOgorICAgICAgICAoLVtXZWJW
aWRlb0Z1bGxzY3JlZW5IVURXaW5kb3dDb250cm9sbGVyIHdpbmRvd0RpZExvYWRdKToKKwogMjAx
Ny0wOS0wNiAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgogCiAgICAgICAgIFJFR1JFU1NJ
T04gKHIyMjE1OTgpOiBMZWdhY3kgInJvdW5kIiBhbmQgImJldmVsIiBvcHRpb25zIGNhbiBubyBs
b25nZXIgYmUgdXNlZCB3aXRoIHRoZSBsZWdhY3kgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEIHNl
dExpbmVKb2luIG9wZXJhdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKaW5kZXggZWU0MGU0NjE3NTU5NmJj
NTIyZjMxN2M2YzU5OGRiMDg0YzE3M2M1Ni4uZWVhNzkwNWM1ZWRjMDNhYTgxNzgwMWZjM2NkMGNh
OTAxMjg4MzhiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTctMDkt
MDYgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29tPgorCisgICAgICAgIFtNYWNdIFVwc3Ry
ZWFtIFFUS2l0LXJlbGF0ZWQgV2ViS2l0U3lzdGVtSW50ZXJmYWNlIGZ1bmN0aW9ucworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc2NDcyCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgRXJpYyBDYXJsc29uLgorCisgICAgICAgICogcGFsL3NwaS9tYWMvUVRL
aXRTUEkuaDoKKwogMjAxNy0wOS0wNCAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtp
dC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjIyMTQ5NCBhbmQgcjIy
MTUwMC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKaW5kZXggMzY0ZDhlNWQ4MGQyNTVkNjkzNmZiMmUxYTBiZDQ2MzdhYjU5YTA2
ZS4uZjY3NjU3MTZjZDQ5YzZhMDBjNmY5OWU3ZTQwZjg3NTgyNTg4MjdhOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxMyBAQAorMjAxNy0wOS0wNiAgQW5keSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+
CisKKyAgICAgICAgW01hY10gVXBzdHJlYW0gUVRLaXQtcmVsYXRlZCBXZWJLaXRTeXN0ZW1JbnRl
cmZhY2UgZnVuY3Rpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNzY0NzIKKworICAgICAgICBSZXZpZXdlZCBieSBFcmljIENhcmxzb24uCisKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJTeXN0ZW1JbnRlcmZhY2Uu
bW06CisgICAgICAgIChJbml0V2ViQ29yZVN5c3RlbUludGVyZmFjZSk6CisKIDIwMTctMDktMDYg
IEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CiAKICAgICAgICAgRGVueSB0aGly
ZC1wYXJ0eSBjb29raWUgY3JlYXRpb24gZm9yIHByZXZhbGVudCByZXNvdXJjZXMgd2l0aG91dCBp
bnRlcmFjdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4IDdlNTFlYmFmNmJmZjhl
ZmIxZmNjY2Q4MWQyODQwZmY3MmI0NGM1ZTguLjBhZDdhMmE3MzIxNzY1ZDY0ZWVhYThiYzM2OGYw
M2RiODIzNGQzNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBA
QAorMjAxNy0wOS0wNiAgQW5keSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+CisKKyAgICAgICAg
W01hY10gVXBzdHJlYW0gUVRLaXQtcmVsYXRlZCBXZWJLaXRTeXN0ZW1JbnRlcmZhY2UgZnVuY3Rp
b25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzY0
NzIKKworICAgICAgICBSZXZpZXdlZCBieSBFcmljIENhcmxzb24uCisKKyAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9XZWJTeXN0ZW1JbnRlcmZhY2UubW06CisgICAgICAgIChJbml0V2ViQ29yZVN5
c3RlbUludGVyZmFjZSk6CisKIDIwMTctMDktMDUgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRv
bkBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIHNvbWUgdW51c2VkIGJpdHMgb2YgY29kZSBh
bmQgcmVzb3VyY2VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9tYWMv
UVRLaXRTUEkuaCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL21hYy9RVEtpdFNQSS5oCmlu
ZGV4IDcxNzg5Y2RmMjVkYThhZjQwNGI3MGE0Y2I1MTljMWNhM2Q4NTJlMmYuLjEzYjFlYTFkMmM3
Y2EzZGExMTI4MjRjZjA0MzEwMDM5OTdhNWYzMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1BBTC9wYWwvc3BpL21hYy9RVEtpdFNQSS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwv
c3BpL21hYy9RVEtpdFNQSS5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTYtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTI1LDggKzI1LDEyIEBACiAKICNwcmFnbWEgb25jZQogCi0jaWYg
VVNFKEFQUExFX0lOVEVSTkFMX1NESykgfHwgX19NQUNfT1NfWF9WRVJTSU9OX01BWF9BTExPV0VE
IDwgMTAxMjAwCi0jaW1wb3J0IDxRVEtpdC9RVEtpdC5oPgorI2lmIFVTRShBUFBMRV9JTlRFUk5B
TF9TREspCisKKyNpbXBvcnQgPFFUS2l0L1FUSFVEQmFja2dyb3VuZFZpZXdfUHJpdmF0ZS5oPgor
I2ltcG9ydCA8UVRLaXQvUVRLaXRfUHJpdmF0ZS5oPgorI2ltcG9ydCA8UVRLaXQvUVRVdGlsaXRp
ZXNfUHJpdmF0ZS5oPgorCiAjZWxzZQogCiBlbnVtIHsKQEAgLTQ4LDYgKzUyLDE2IEBAIHR5cGVk
ZWYgZW51bSB7CiAgICAgUVRJbmNsdWRlQ29tbW9uVHlwZXMgPSAwLAogfSBRVE1vdmllRmlsZVR5
cGVPcHRpb25zOwogCitlbnVtIHsKKyAgICBRVE1vdmllVHlwZVVua25vd24gPSAwLAorICAgIFFU
TW92aWVUeXBlTG9jYWwsCisgICAgUVRNb3ZpZVR5cGVGYXN0U3RhcnQsCisgICAgUVRNb3ZpZVR5
cGVMaXZlU3RyZWFtLAorICAgIFFUTW92aWVUeXBlU3RvcmVkU3RyZWFtCit9OworCitAY2xhc3Mg
UVRUcmFjazsKKwogQGludGVyZmFjZSBRVE1lZGlhIDogTlNPYmplY3QKIAogLSAoaWQpYXR0cmli
dXRlRm9yS2V5OihOU1N0cmluZyAqKWF0dHJpYnV0ZUtleTsKQEAgLTU4LDYgKzcyLDggQEAgdHlw
ZWRlZiBlbnVtIHsKIAogKyAoTlNBcnJheSAqKW1vdmllRmlsZVR5cGVzOihRVE1vdmllRmlsZVR5
cGVPcHRpb25zKXR5cGVzOwogCisrICh2b2lkKWRpc2FibGVDb21wb25lbnQ6KENvbXBvbmVudERl
c2NyaXB0aW9uKWNvbXBvbmVudDsKKwogLSAoaWQpaW5pdFdpdGhBdHRyaWJ1dGVzOihOU0RpY3Rp
b25hcnkgKilhdHRyaWJ1dGVzIGVycm9yOihOU0Vycm9yICoqKWVycm9yUHRyOwogCiAtICh2b2lk
KXBsYXk7CkBAIC04MSw2ICs5NywxMSBAQCB0eXBlZGVmIGVudW0gewogCiAtIChOU0FycmF5ICop
dHJhY2tzOwogCistIChOU0FycmF5ICopYWx0ZXJuYXRlR3JvdXBUeXBlczsKKy0gKE5TQXJyYXkg
KilhbHRlcm5hdGVzRm9yTWVkaWFUeXBlOihOU1N0cmluZyAqKXR5cGU7CistICh2b2lkKWRlc2Vs
ZWN0QWx0ZXJuYXRlR3JvdXBUcmFjazooUVRUcmFjayAqKWFsdGVybmF0ZVRyYWNrOworLSAodm9p
ZClzZWxlY3RBbHRlcm5hdGVHcm91cFRyYWNrOihRVFRyYWNrICopYWx0ZXJuYXRlVHJhY2s7CisK
IEBlbmQKIAogQGludGVyZmFjZSBRVE1vdmllTGF5ZXIgOiBDQUxheWVyCkBAIC0xMDYsNCArMTI3
LDIwIEBAIHR5cGVkZWYgZW51bSB7CiAKIEBlbmQKIAorQGludGVyZmFjZSBRVEhVREJhY2tncm91
bmRWaWV3IDogTlNWaWV3CisKKy0gKHZvaWQpc2V0Q29udGVudEJvcmRlclBvc2l0aW9uOihDR0Zs
b2F0KWNvbnRlbnRCb3JkZXJQb3NpdGlvbjsKKworQGVuZAorCitAaW50ZXJmYWNlIFFUVXRpbGl0
aWVzIDogTlNPYmplY3QKKworKyAoaWQpcXRVdGlsaXRpZXM7CisKKy0gKE5TQXJyYXkgKilzaXRl
c0luRG93bmxvYWRDYWNoZTsKKy0gKHZvaWQpY2xlYXJEb3dubG9hZENhY2hlOworLSAodm9pZClj
bGVhckRvd25sb2FkQ2FjaGVGb3JTaXRlOihOU1N0cmluZyAqKXNpdGU7CisKK0BlbmQKKwogI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvTWVk
aWFQbGF5ZXJQcml2YXRlUVRLaXQubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9tYWMvTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQubW0KaW5kZXggODVjZjU2MWQ3MzMxNzk2NzZl
Y2Y4ZTlmZGFhMzZmYzBlN2U1OGIwMS4uNWMwMDBhOGE1N2NmN2RjZWQ3ZmU3NzJmNWZjNDUzZDU5
ODM1ZDg5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFj
L01lZGlhUGxheWVyUHJpdmF0ZVFUS2l0Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL21hYy9NZWRpYVBsYXllclByaXZhdGVRVEtpdC5tbQpAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAsIDIwMTEgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA3LTIwMTcgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC0yNSw2ICsyNSw5IEBACiAKICNpbXBvcnQgImNvbmZpZy5oIgogCisjdW5kZWYgVVNF
X1FUS0lUCisjZGVmaW5lIFVTRV9RVEtJVCAxCisKICNpZiBFTkFCTEUoVklERU8pICYmIFVTRShR
VEtJVCkKIAogI2ltcG9ydCAiTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQuaCIKQEAgLTUyLDYgKzU1
LDcgQEAgU09GVF9MSU5LKFFUS2l0LCBRVE1ha2VUaW1lLCBRVFRpbWUsIChsb25nIGxvbmcgdGlt
ZVZhbHVlLCBsb25nIHRpbWVTY2FsZSksICh0aW0KIAogU09GVF9MSU5LX0NMQVNTKFFUS2l0LCBR
VE1vdmllKQogU09GVF9MSU5LX0NMQVNTKFFUS2l0LCBRVE1vdmllTGF5ZXIpCitTT0ZUX0xJTktf
Q0xBU1MoUVRLaXQsIFFUVXRpbGl0aWVzKQogCiBTT0ZUX0xJTktfUE9JTlRFUihRVEtpdCwgUVRU
cmFja01lZGlhVHlwZUF0dHJpYnV0ZSwgTlNTdHJpbmcgKikKIFNPRlRfTElOS19QT0lOVEVSKFFU
S2l0LCBRVE1lZGlhVHlwZUF0dHJpYnV0ZSwgTlNTdHJpbmcgKikKQEAgLTcxLDYgKzc1LDcgQEAg
U09GVF9MSU5LX1BPSU5URVIoUVRLaXQsIFFUTW92aWVJc0FjdGl2ZUF0dHJpYnV0ZSwgTlNTdHJp
bmcgKikKIFNPRlRfTElOS19QT0lOVEVSKFFUS2l0LCBRVE1vdmllTG9hZFN0YXRlQXR0cmlidXRl
LCBOU1N0cmluZyAqKQogU09GVF9MSU5LX1BPSU5URVIoUVRLaXQsIFFUTW92aWVMb2FkU3RhdGVF
cnJvckF0dHJpYnV0ZSwgTlNTdHJpbmcgKikKIFNPRlRfTElOS19QT0lOVEVSKFFUS2l0LCBRVE1v
dmllTG9hZFN0YXRlRGlkQ2hhbmdlTm90aWZpY2F0aW9uLCBOU1N0cmluZyAqKQorU09GVF9MSU5L
X1BPSU5URVIoUVRLaXQsIFFUTW92aWVMb2FkZWRSYW5nZXNEaWRDaGFuZ2VOb3RpZmljYXRpb24s
IE5TU3RyaW5nICopOwogU09GVF9MSU5LX1BPSU5URVIoUVRLaXQsIFFUTW92aWVOYXR1cmFsU2l6
ZUF0dHJpYnV0ZSwgTlNTdHJpbmcgKikKIFNPRlRfTElOS19QT0lOVEVSKFFUS2l0LCBRVE1vdmll
Q3VycmVudFNpemVBdHRyaWJ1dGUsIE5TU3RyaW5nICopCiBTT0ZUX0xJTktfUE9JTlRFUihRVEtp
dCwgUVRNb3ZpZVByZXZlbnRFeHRlcm5hbFVSTExpbmtzQXR0cmlidXRlLCBOU1N0cmluZyAqKQpA
QCAtOTUsOCArMTAwLDggQEAgLSAoTlNBcnJheSAqKWF2YWlsYWJsZVJhbmdlczsKIC0gKE5TQXJy
YXkgKilsb2FkZWRSYW5nZXM7CiBAZW5kCiAKLSNkZWZpbmUgUVRNb3ZpZSBnZXRRVE1vdmllQ2xh
c3MoKQogI2RlZmluZSBRVE1vdmllTGF5ZXIgZ2V0UVRNb3ZpZUxheWVyQ2xhc3MoKQorI2RlZmlu
ZSBRVFV0aWxpdGllcyBnZXRRVFV0aWxpdGllc0NsYXNzKCkKIAogI2RlZmluZSBRVFRyYWNrTWVk
aWFUeXBlQXR0cmlidXRlIGdldFFUVHJhY2tNZWRpYVR5cGVBdHRyaWJ1dGUoKQogI2RlZmluZSBR
VE1lZGlhVHlwZUF0dHJpYnV0ZSBnZXRRVE1lZGlhVHlwZUF0dHJpYnV0ZSgpCkBAIC0xMTYsNiAr
MTIxLDcgQEAgQGVuZAogI2RlZmluZSBRVE1vdmllTG9hZFN0YXRlQXR0cmlidXRlIGdldFFUTW92
aWVMb2FkU3RhdGVBdHRyaWJ1dGUoKQogI2RlZmluZSBRVE1vdmllTG9hZFN0YXRlRXJyb3JBdHRy
aWJ1dGUgZ2V0UVRNb3ZpZUxvYWRTdGF0ZUVycm9yQXR0cmlidXRlKCkKICNkZWZpbmUgUVRNb3Zp
ZUxvYWRTdGF0ZURpZENoYW5nZU5vdGlmaWNhdGlvbiBnZXRRVE1vdmllTG9hZFN0YXRlRGlkQ2hh
bmdlTm90aWZpY2F0aW9uKCkKKyNkZWZpbmUgUVRNb3ZpZUxvYWRlZFJhbmdlc0RpZENoYW5nZU5v
dGlmaWNhdGlvbiBnZXRRVE1vdmllTG9hZGVkUmFuZ2VzRGlkQ2hhbmdlTm90aWZpY2F0aW9uKCkK
ICNkZWZpbmUgUVRNb3ZpZU5hdHVyYWxTaXplQXR0cmlidXRlIGdldFFUTW92aWVOYXR1cmFsU2l6
ZUF0dHJpYnV0ZSgpCiAjZGVmaW5lIFFUTW92aWVDdXJyZW50U2l6ZUF0dHJpYnV0ZSBnZXRRVE1v
dmllQ3VycmVudFNpemVBdHRyaWJ1dGUoKQogI2RlZmluZSBRVE1vdmllUHJldmVudEV4dGVybmFs
VVJMTGlua3NBdHRyaWJ1dGUgZ2V0UVRNb3ZpZVByZXZlbnRFeHRlcm5hbFVSTExpbmtzQXR0cmli
dXRlKCkKQEAgLTI5Miw3ICsyOTgsNyBAQCBzdGF0aWMgdm9pZCBkaXNhYmxlQ29tcG9uZW50c09u
Y2UoKQogICAgIC8vIFFUS2l0U2VydmVyIGhhcyBub3QgeWV0IHN0YXJ0ZWQuICBBcyBhIHJlc3Vs
dCwgd2UgbXVzdCBwYXNzIGluIGV4YWN0bHkgdGhlIGZsYWdzIHdlIHdhbnQgdG8KICAgICAvLyBk
aXNhYmxlIHBlciBjb21wb25lbnQuICBBcyBhIGZhaWxzYWZlLCBpZiBpbiB0aGUgZnV0dXJlIHRo
ZXNlIGZsYWdzIGNoYW5nZSwgd2Ugd2lsbCBkaXNhYmxlIHRoZQogICAgIC8vIFBERiBjb21wb25l
bnRzIGZvciBhIHRoaXJkIHRpbWUgd2l0aCBhIHdpbGRjYXJkIGZsYWdzIGZpZWxkOgotICAgIHVp
bnQzMl90IGNvbXBvbmVudHNUb0Rpc2FibGVbMTFdWzVdID0geworICAgIENvbXBvbmVudERlc2Ny
aXB0aW9uIGNvbXBvbmVudHNUb0Rpc2FibGVbMTFdID0gewogICAgICAgICB7J2VhdCAnLCAnVEVY
VCcsICd0ZXh0JywgMCwgMH0sCiAgICAgICAgIHsnZWF0ICcsICdUWFQgJywgJ3RleHQnLCAwLCAw
fSwgICAgCiAgICAgICAgIHsnZWF0ICcsICd1dHh0JywgJ3RleHQnLCAwLCAwfSwgIApAQCAtMzA3
LDcgKzMxMyw3IEBAIHN0YXRpYyB2b2lkIGRpc2FibGVDb21wb25lbnRzT25jZSgpCiAgICAgfTsK
IAogICAgIGZvciAoYXV0byYgY29tcG9uZW50IDogY29tcG9uZW50c1RvRGlzYWJsZSkKLSAgICAg
ICAgd2tRVE1vdmllRGlzYWJsZUNvbXBvbmVudChjb21wb25lbnQpOworICAgICAgICBbZ2V0UVRN
b3ZpZUNsYXNzKCkgZGlzYWJsZUNvbXBvbmVudDpjb21wb25lbnRdOwogfQogCiB2b2lkIE1lZGlh
UGxheWVyUHJpdmF0ZVFUS2l0OjpjcmVhdGVRVE1vdmllKE5TVVJMICp1cmwsIE5TRGljdGlvbmFy
eSAqbW92aWVBdHRyaWJ1dGVzKQpAQCAtMzQ1LDE0ICszNTEsMTAgQEAgdm9pZCBNZWRpYVBsYXll
clByaXZhdGVRVEtpdDo6Y3JlYXRlUVRNb3ZpZShOU1VSTCAqdXJsLCBOU0RpY3Rpb25hcnkgKm1v
dmllQXR0cmkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
b2JqZWN0Om1fcXRNb3ZpZS5nZXQoKV07CiAKICAgICAvLyBJbiB1cGRhdGVTdGF0ZSgpLCB3ZSB0
cmFjayB3aGVuIG1heFRpbWVMb2FkZWQoKSA9PSBkdXJhdGlvbigpLgotICAgIC8vIEluIG5ld2Vy
IHZlcnNpb24gb2YgUXVpY2tUaW1lLCBhIG5vdGlmaWNhdGlvbiBpcyBlbWl0dGVkIHdoZW4gbWF4
VGltZUxvYWRlZCBjaGFuZ2VzLgotICAgIC8vIEluIG9sZGVyIHZlcnNpb24gb2YgUXVpY2tUaW1l
LCBRVE1vdmllTG9hZFN0YXRlRGlkQ2hhbmdlTm90aWZpY2F0aW9uIGJlIGZpcmVkLgotICAgIGlm
IChOU1N0cmluZyAqbWF4VGltZUxvYWRlZENoYW5nZU5vdGlmaWNhdGlvbiA9IHdrUVRNb3ZpZU1h
eFRpbWVMb2FkZWRDaGFuZ2VOb3RpZmljYXRpb24oKSkgewotICAgICAgICBbW05TTm90aWZpY2F0
aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdIGFkZE9ic2VydmVyOm1fb2JqY09ic2VydmVyLmdldCgp
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0
b3I6QHNlbGVjdG9yKGxvYWRlZFJhbmdlc0NoYW5nZWQ6KQotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOm1heFRpbWVMb2FkZWRDaGFuZ2VO
b3RpZmljYXRpb24KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG9iamVjdDptX3F0TW92aWUuZ2V0KCldOyAgICAgICAgCi0gICAgfQorICAgIFtbTlNO
b3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0gYWRkT2JzZXJ2ZXI6bV9vYmpjT2JzZXJ2
ZXIuZ2V0KCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNl
bGVjdG9yOkBzZWxlY3Rvcihsb2FkZWRSYW5nZXNDaGFuZ2VkOikKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOlFUTW92aWVMb2FkZWRSYW5nZXNE
aWRDaGFuZ2VOb3RpZmljYXRpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgb2JqZWN0Om1fcXRNb3ZpZS5nZXQoKV07CiAKICAgICBbW05TTm90aWZpY2F0
aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdIGFkZE9ic2VydmVyOm1fb2JqY09ic2VydmVyLmdldCgp
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RvcjpA
c2VsZWN0b3IocmF0ZUNoYW5nZWQ6KSAKQEAgLTc3MSwxOCArNzczLDMwIEBAIGJvb2wgTWVkaWFQ
bGF5ZXJQcml2YXRlUVRLaXQ6Omhhc0Nsb3NlZENhcHRpb25zKCkgY29uc3QKIHsKICAgICBpZiAo
IW1ldGFEYXRhQXZhaWxhYmxlKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4g
d2tRVE1vdmllSGFzQ2xvc2VkQ2FwdGlvbnMobV9xdE1vdmllLmdldCgpKTsgIAorICAgIHJldHVy
biBbW21fcXRNb3ZpZSBhbHRlcm5hdGVHcm91cFR5cGVzXSBjb250YWluc09iamVjdDpAImNsY3Ai
XTsKIH0KIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6c2V0Q2xvc2VkQ2FwdGlvbnNW
aXNpYmxlKGJvb2wgY2xvc2VkQ2FwdGlvbnNWaXNpYmxlKQogewotICAgIGlmIChtZXRhRGF0YUF2
YWlsYWJsZSgpKSB7Ci0gICAgICAgIHdrUVRNb3ZpZVNldFNob3dDbG9zZWRDYXB0aW9ucyhtX3F0
TW92aWUuZ2V0KCksIGNsb3NlZENhcHRpb25zVmlzaWJsZSk7CisgICAgaWYgKCFtZXRhRGF0YUF2
YWlsYWJsZSgpKQorICAgICAgICByZXR1cm47CiAKLSAgICAgICAgaWYgKGNsb3NlZENhcHRpb25z
VmlzaWJsZSAmJiBtX3F0VmlkZW9MYXllcikgewotICAgICAgICAgICAgLy8gQ2FwdGlvbnMgd2ls
bCBiZSByZW5kZXJlZCB1cHNpZGUgZG93biB1bmxlc3Mgd2UgZmxhZyB0aGUgbW92aWUgYXMgZmxp
cHBlZCAoYWdhaW4pLiBTZWUgPHJkYXI6Ly83NDA4NDQwPi4KLSAgICAgICAgICAgIFttX3F0Vmlk
ZW9MYXllci5nZXQoKSBzZXRHZW9tZXRyeUZsaXBwZWQ6WUVTXTsKLSAgICAgICAgfQorICAgIGlm
ICghW1ttX3F0TW92aWUgYWx0ZXJuYXRlR3JvdXBUeXBlc10gY29udGFpbnNPYmplY3Q6QCJjbGNw
Il0pCisgICAgICAgIHJldHVybjsKKworICAgIE5TQXJyYXkgKnRyYWNrQWx0ZXJuYXRlc0FycmF5
ID0gW21fcXRNb3ZpZSBhbHRlcm5hdGVzRm9yTWVkaWFUeXBlOkAiY2xjcCJdOworICAgIFFUVHJh
Y2sgKnRyYWNrID0gdHJhY2tBbHRlcm5hdGVzQXJyYXlbMF1bQCJRVEFsdGVybmF0ZXNfUVRUcmFj
ayJdOworICAgIGlmICghdHJhY2spCisgICAgICAgIHJldHVybjsKKworICAgIGlmICghY2xvc2Vk
Q2FwdGlvbnNWaXNpYmxlKQorICAgICAgICBbbV9xdE1vdmllIGRlc2VsZWN0QWx0ZXJuYXRlR3Jv
dXBUcmFjazp0cmFja107CisgICAgZWxzZQorICAgICAgICBbbV9xdE1vdmllIHNlbGVjdEFsdGVy
bmF0ZUdyb3VwVHJhY2s6dHJhY2tdOworCisgICAgaWYgKGNsb3NlZENhcHRpb25zVmlzaWJsZSAm
JiBtX3F0VmlkZW9MYXllcikgeworICAgICAgICAvLyBDYXB0aW9ucyB3aWxsIGJlIHJlbmRlcmVk
IHVwc2lkZSBkb3duIHVubGVzcyB3ZSBmbGFnIHRoZSBtb3ZpZSBhcyBmbGlwcGVkIChhZ2Fpbiku
IFNlZSA8cmRhcjovLzc0MDg0NDA+LgorICAgICAgICBbbV9xdFZpZGVvTGF5ZXIuZ2V0KCkgc2V0
R2VvbWV0cnlGbGlwcGVkOllFU107CiAgICAgfQogfQogCkBAIC05NDEsNiArOTU1LDU4IEBAIHZv
aWQgTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6OnByZXBhcmVGb3JSZW5kZXJpbmcoKQogICAgICAg
ICBtX3BsYXllci0+Y2xpZW50KCkubWVkaWFQbGF5ZXJSZW5kZXJpbmdNb2RlQ2hhbmdlZChtX3Bs
YXllcik7CiB9CiAKK3N0YXRpYyB2b2lkIHNlbGVjdFByZWZlcnJlZEFsdGVybmF0ZVRyYWNrRm9y
TWVkaWFUeXBlKFFUTW92aWUgKm1vdmllLCBOU1N0cmluZyAqbWVkaWFUeXBlKQoreworICAgIE5T
QXJyYXkgKmFsdGVybmF0ZXMgPSBbbW92aWUgYWx0ZXJuYXRlc0Zvck1lZGlhVHlwZTptZWRpYVR5
cGVdOworICAgIGlmICghYWx0ZXJuYXRlcy5jb3VudCkKKyAgICAgICAgcmV0dXJuOworCisgICAg
YXV0byBsYW5ndWFnZVRvUVRUcmFja01hcCA9IGFkb3B0TlMoW1tOU011dGFibGVEaWN0aW9uYXJ5
IGFsbG9jXSBpbml0V2l0aENhcGFjaXR5OmFsdGVybmF0ZXMuY291bnRdKTsKKworICAgIGZvciAo
TlNVSW50ZWdlciBpbmRleCA9IDA7IGluZGV4IDwgYWx0ZXJuYXRlcy5jb3VudDsgKytpbmRleCkg
eworICAgICAgICBOU0RpY3Rpb25hcnkgKmFsdGVybmF0ZURpY3QgPSBhbHRlcm5hdGVzW2luZGV4
XTsKKyAgICAgICAgTlNTdHJpbmcgKmxhbmd1YWdlU3RyaW5nID0gYWx0ZXJuYXRlRGljdFtAIlFU
QWx0ZXJuYXRlc19MYW5ndWFnZUNvZGVFbmNvZGluZ19JU09fNjM5XzJUIl07CisgICAgICAgIGlm
ICghW2xhbmd1YWdlU3RyaW5nIGNTdHJpbmdVc2luZ0VuY29kaW5nOmtDRlN0cmluZ0VuY29kaW5n
QVNDSUldKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIGlmICghbGFuZ3VhZ2VTdHJp
bmcpCisgICAgICAgICAgICBsYW5ndWFnZVN0cmluZyA9IGFsdGVybmF0ZURpY3RbQCJRVEFsdGVy
bmF0ZXNfTGFuZ3VhZ2VDb2RlRW5jb2RpbmdfUkZDXzQ2NDYiXTsKKyAgICAgICAgaWYgKCFsYW5n
dWFnZVN0cmluZykgeworICAgICAgICAgICAgTGFuZ0NvZGUgbGFuZ0NvZGUgPSBhbHRlcm5hdGVE
aWN0W0AiUVRBbHRlcm5hdGVzX0xhbmd1YWdlQ29kZUVuY29kaW5nX01hY1R5cGVfTGFuZ0NvZGUi
XS5pbnRWYWx1ZTsKKyAgICAgICAgICAgIGF1dG8gaWRlbnRpZmllciA9IGFkb3B0Q0YoQ0ZMb2Nh
bGVDcmVhdGVDYW5vbmljYWxMb2NhbGVJZGVudGlmaWVyRnJvbVNjcmlwdE1hbmFnZXJDb2Rlcyhr
Q0ZBbGxvY2F0b3JEZWZhdWx0LCBsYW5nQ29kZSwgMCkpOworICAgICAgICAgICAgbGFuZ3VhZ2VT
dHJpbmcgPSAoTlNTdHJpbmcgKilpZGVudGlmaWVyLmF1dG9yZWxlYXNlKCk7CisgICAgICAgIH0K
KyAgICAgICAgaWYgKCFsYW5ndWFnZVN0cmluZykKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisg
ICAgICAgIGlkIGFsdGVybmF0ZVRyYWNrID0gYWx0ZXJuYXRlRGljdFtAIlFUQWx0ZXJuYXRlc19R
VFRyYWNrIl07CisgICAgICAgIGlmICghYWx0ZXJuYXRlVHJhY2spCisgICAgICAgICAgICBjb250
aW51ZTsKKworICAgICAgICBpZiAoIVthbHRlcm5hdGVUcmFjayBhdHRyaWJ1dGVGb3JLZXk6QCJR
VFRyYWNrRW5hYmxlZEF0dHJpYnV0ZSJdLmJvb2xWYWx1ZSkKKyAgICAgICAgICAgIGNvbnRpbnVl
OworCisgICAgICAgIFtsYW5ndWFnZVRvUVRUcmFja01hcCBzZXRPYmplY3Q6YWx0ZXJuYXRlVHJh
Y2sgZm9yS2V5Omxhbmd1YWdlU3RyaW5nXTsKKyAgICB9CisKKyAgICBOU0FycmF5ICpwcmVmZXJy
ZWRMYW5ndWFnZXMgPSBbTlNCdW5kbGUgcHJlZmVycmVkTG9jYWxpemF0aW9uc0Zyb21BcnJheTpb
bGFuZ3VhZ2VUb1FUVHJhY2tNYXAgYWxsS2V5c10gZm9yUHJlZmVyZW5jZXM6bmlsXTsKKyAgICBp
ZiAocHJlZmVycmVkTGFuZ3VhZ2VzLmNvdW50KSB7CisgICAgICAgIGlkIHByZWZlcnJlZFRyYWNr
ID0gW2xhbmd1YWdlVG9RVFRyYWNrTWFwIG9iamVjdEZvcktleTpwcmVmZXJyZWRMYW5ndWFnZXNb
MF1dOworICAgICAgICBpZiAocHJlZmVycmVkVHJhY2spIHsKKyAgICAgICAgICAgIC8vICtbTlNC
dW5kbGUgcHJlZmVycmVkTG9jYWxpemF0aW9uc0Zyb21BcnJheTpmb3JQcmVmZXJlbmNlc10gbWF5
IHJldHVybiBhIGxhbmd1YWdlIHdoaWNoIHdhcworICAgICAgICAgICAgLy8gbm90IHByZXNlbnQg
aW4gcHJlZmVycmVkTGFuZ3VhZ2VzLCBhbmQgd2lsbCB0aGVyZWZvcmUgbm90IGhhdmUgYW4gYXNz
b2NpYXRlZCB0cmFjay4KKyAgICAgICAgICAgIFttb3ZpZSBzZWxlY3RBbHRlcm5hdGVHcm91cFRy
YWNrOnByZWZlcnJlZFRyYWNrXTsKKyAgICAgICAgfQorICAgIH0KK30KKworc3RhdGljIHZvaWQg
c2VsZWN0UHJlZmVycmVkQWx0ZXJuYXRlcyhRVE1vdmllICptb3ZpZSkKK3sKKyAgICBzZWxlY3RQ
cmVmZXJyZWRBbHRlcm5hdGVUcmFja0Zvck1lZGlhVHlwZShtb3ZpZSwgQCJ2aWRlIik7CisgICAg
c2VsZWN0UHJlZmVycmVkQWx0ZXJuYXRlVHJhY2tGb3JNZWRpYVR5cGUobW92aWUsIEAic291biIp
OworICAgIHNlbGVjdFByZWZlcnJlZEFsdGVybmF0ZVRyYWNrRm9yTWVkaWFUeXBlKG1vdmllLCBA
ImNwbHAiKTsKKyAgICBzZWxlY3RQcmVmZXJyZWRBbHRlcm5hdGVUcmFja0Zvck1lZGlhVHlwZSht
b3ZpZSwgQCJzYnRsIik7Cit9CisKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6OnVwZGF0
ZVN0YXRlcygpCiB7CiAgICAgTWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0ZSBvbGROZXR3b3JrU3Rh
dGUgPSBtX25ldHdvcmtTdGF0ZTsKQEAgLTk2NSw3ICsxMDMxLDcgQEAgdm9pZCBNZWRpYVBsYXll
clByaXZhdGVRVEtpdDo6dXBkYXRlU3RhdGVzKCkKICAgICAgICAgICAgIGxvYWRTdGF0ZSA9IFFU
TW92aWVMb2FkU3RhdGVFcnJvcjsKIAogICAgICAgICBpZiAobG9hZFN0YXRlICE9IFFUTW92aWVM
b2FkU3RhdGVFcnJvcikgewotICAgICAgICAgICAgd2tRVE1vdmllU2VsZWN0UHJlZmVycmVkQWx0
ZXJuYXRlcyhtX3F0TW92aWUuZ2V0KCkpOworICAgICAgICAgICAgc2VsZWN0UHJlZmVycmVkQWx0
ZXJuYXRlcyhtX3F0TW92aWUuZ2V0KCkpOwogICAgICAgICAgICAgY2FjaGVNb3ZpZVNjYWxlKCk7
CiAgICAgICAgICAgICBNZWRpYVBsYXllcjo6TW92aWVMb2FkVHlwZSBtb3ZpZVR5cGUgPSBtb3Zp
ZUxvYWRUeXBlKCk7CiAgICAgICAgICAgICBtX2lzU3RyZWFtaW5nID0gbW92aWVUeXBlID09IE1l
ZGlhUGxheWVyOjpTdG9yZWRTdHJlYW0gfHwgbW92aWVUeXBlID09IE1lZGlhUGxheWVyOjpMaXZl
U3RyZWFtOwpAQCAtMTI2NywxMyArMTMzMywxNCBAQCBzdGF0aWMgSGFzaFNldDxTdHJpbmcsIEFT
Q0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4gY3JlYXRlRmlsZVR5cGVzU2V0KE5TQXJyYXkgKmZpbAog
CiBzdGF0aWMgY29uc3QgSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4m
IG1pbWVDb21tb25UeXBlc0NhY2hlKCkKIHsKLSAgICBzdGF0aWMgY29uc3QgYXV0byBjYWNoZSA9
IG1ha2VOZXZlckRlc3Ryb3llZChjcmVhdGVGaWxlVHlwZXNTZXQoW1FUTW92aWUgbW92aWVGaWxl
VHlwZXM6UVRJbmNsdWRlQ29tbW9uVHlwZXNdKSk7CisgICAgc3RhdGljIGNvbnN0IGF1dG8gY2Fj
aGUgPSBtYWtlTmV2ZXJEZXN0cm95ZWQoY3JlYXRlRmlsZVR5cGVzU2V0KFtnZXRRVE1vdmllQ2xh
c3MoKSBtb3ZpZUZpbGVUeXBlczpRVEluY2x1ZGVDb21tb25UeXBlc10pKTsKICAgICByZXR1cm4g
Y2FjaGU7CiB9IAogCiBzdGF0aWMgY29uc3QgSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vu
c2l0aXZlSGFzaD4mIG1pbWVNb2Rlcm5UeXBlc0NhY2hlKCkKIHsKLSAgICBzdGF0aWMgY29uc3Qg
YXV0byBjYWNoZSA9IG1ha2VOZXZlckRlc3Ryb3llZChjcmVhdGVGaWxlVHlwZXNTZXQoW1FUTW92
aWUgbW92aWVGaWxlVHlwZXM6KFFUTW92aWVGaWxlVHlwZU9wdGlvbnMpd2tRVEluY2x1ZGVPbmx5
TW9kZXJuTWVkaWFGaWxlVHlwZXMoKV0pKTsKKyAgICBzdGF0aWMgUVRNb3ZpZUZpbGVUeXBlT3B0
aW9ucyBpbmNsdWRlT25seU1vZGVybk1lZGlhRmlsZVR5cGVzID0gMSA8PCA4OworICAgIHN0YXRp
YyBjb25zdCBhdXRvIGNhY2hlID0gbWFrZU5ldmVyRGVzdHJveWVkKGNyZWF0ZUZpbGVUeXBlc1Nl
dChbZ2V0UVRNb3ZpZUNsYXNzKCkgbW92aWVGaWxlVHlwZXM6aW5jbHVkZU9ubHlNb2Rlcm5NZWRp
YUZpbGVUeXBlc10pKTsKICAgICByZXR1cm4gY2FjaGU7CiB9CiAKQEAgLTEzMjQsNyArMTM5MSw3
IEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6OmlzQXZhaWxhYmxlKCkKIEhhc2hTZXQ8
UmVmUHRyPFNlY3VyaXR5T3JpZ2luPj4gTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6Om9yaWdpbnNJ
bk1lZGlhQ2FjaGUoY29uc3QgU3RyaW5nJikKIHsKICAgICBIYXNoU2V0PFJlZlB0cjxTZWN1cml0
eU9yaWdpbj4+IG9yaWdpbnM7Ci0gICAgTlNBcnJheSAqbWVkaWFTaXRlcyA9IHdrUVRHZXRTaXRl
c0luTWVkaWFEb3dubG9hZENhY2hlKCk7CisgICAgTlNBcnJheSAqbWVkaWFTaXRlcyA9IFtbUVRV
dGlsaXRpZXMgcXRVdGlsaXRpZXNdIHNpdGVzSW5Eb3dubG9hZENhY2hlXTsKICAgICAKICAgICBm
b3IgKE5TU3RyaW5nICpzaXRlIGluIG1lZGlhU2l0ZXMpIHsKICAgICAgICAgVVJMIHNpdGVBc1VS
TCA9IFVSTChVUkwoKSwgc2l0ZSk7CkBAIC0xMzM3LDE0ICsxNDA0LDE0IEBAIEhhc2hTZXQ8UmVm
UHRyPFNlY3VyaXR5T3JpZ2luPj4gTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6Om9yaWdpbnNJbk1l
ZGlhQ2FjaGUoY29uCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0OjpjbGVhck1lZGlhQ2Fj
aGUoY29uc3QgU3RyaW5nJiwgc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCkK
IHsKICAgICBMT0coTWVkaWEsICJNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6Y2xlYXJNZWRpYUNh
Y2hlKCkiKTsKLSAgICB3a1FUQ2xlYXJNZWRpYURvd25sb2FkQ2FjaGUoKTsKKyAgICBbW1FUVXRp
bGl0aWVzIHF0VXRpbGl0aWVzXSBjbGVhckRvd25sb2FkQ2FjaGVdOwogfQogCiB2b2lkIE1lZGlh
UGxheWVyUHJpdmF0ZVFUS2l0OjpjbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5zKGNvbnN0IFN0cmlu
ZyYsIGNvbnN0IEhhc2hTZXQ8UmVmUHRyPFNlY3VyaXR5T3JpZ2luPj4mIG9yaWdpbnMpCiB7CiAg
ICAgTE9HKE1lZGlhLCAiTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6OmNsZWFyTWVkaWFDYWNoZUZv
ck9yaWdpbnMoKSIpOwogICAgIGZvciAoYXV0byYgb3JpZ2luIDogb3JpZ2lucykKLSAgICAgICAg
d2tRVENsZWFyTWVkaWFEb3dubG9hZENhY2hlRm9yU2l0ZShvcmlnaW4tPnRvUmF3U3RyaW5nKCkp
OworICAgICAgICBbW1FUVXRpbGl0aWVzIHF0VXRpbGl0aWVzXSBjbGVhckRvd25sb2FkQ2FjaGVG
b3JTaXRlOm9yaWdpbi0+dG9SYXdTdHJpbmcoKV07CiB9CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2
YXRlUVRLaXQ6OmRpc2FibGVVbnN1cHBvcnRlZFRyYWNrcygpCkBAIC0xNDY4LDIzICsxNTM1LDI5
IEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6Omhhc1NpbmdsZVNlY3VyaXR5T3JpZ2lu
KCkgY29uc3QKICAgICBpZiAoIW1fcXRNb3ZpZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0g
ICAgUmVmPFNlY3VyaXR5T3JpZ2luPiByZXNvbHZlZE9yaWdpbiA9IFNlY3VyaXR5T3JpZ2luOjpj
cmVhdGUoVVJMKHdrUVRNb3ZpZVJlc29sdmVkVVJMKG1fcXRNb3ZpZS5nZXQoKSkpKTsKKyAgICBS
ZWY8U2VjdXJpdHlPcmlnaW4+IHJlc29sdmVkT3JpZ2luID0gU2VjdXJpdHlPcmlnaW46OmNyZWF0
ZShVUkwoW21fcXRNb3ZpZSBVUkxdKSk7CiAgICAgUmVmPFNlY3VyaXR5T3JpZ2luPiByZXF1ZXN0
ZWRPcmlnaW4gPSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbVN0cmluZyhtX21vdmllVVJMKTsK
ICAgICByZXR1cm4gcmVzb2x2ZWRPcmlnaW4tPmlzU2FtZVNjaGVtZUhvc3RQb3J0KHJlcXVlc3Rl
ZE9yaWdpbi5nZXQoKSk7CiB9CiAKIE1lZGlhUGxheWVyOjpNb3ZpZUxvYWRUeXBlIE1lZGlhUGxh
eWVyUHJpdmF0ZVFUS2l0Ojptb3ZpZUxvYWRUeXBlKCkgY29uc3QKIHsKLSAgICBpZiAoIW1fcXRN
b3ZpZSkKLSAgICAgICAgcmV0dXJuIE1lZGlhUGxheWVyOjpVbmtub3duOwotCi0gICAgTWVkaWFQ
bGF5ZXI6Ok1vdmllTG9hZFR5cGUgbW92aWVUeXBlID0gKE1lZGlhUGxheWVyOjpNb3ZpZUxvYWRU
eXBlKXdrUVRNb3ZpZUdldFR5cGUobV9xdE1vdmllLmdldCgpKTsKLQotICAgIC8vIENhbid0IGlu
Y2x1ZGUgV2ViS2l0U3lzdGVtSW50ZXJmYWNlIGZyb20gV2ViQ29yZSBzbyB3ZSBjYW4ndCBnZXQg
dGhlIGVudW0gcmV0dXJuZWQKLSAgICAvLyBieSB3a1FUTW92aWVHZXRUeXBlLCBidXQgYXQgbGVh
c3QgdmVyaWZ5IHRoYXQgdGhlIHZhbHVlIGlzIGluIHRoZSB2YWxpZCByYW5nZS4KLSAgICBBU1NF
UlQobW92aWVUeXBlID49IE1lZGlhUGxheWVyOjpVbmtub3duICYmIG1vdmllVHlwZSA8PSBNZWRp
YVBsYXllcjo6TGl2ZVN0cmVhbSk7Ci0KLSAgICByZXR1cm4gbW92aWVUeXBlOworICAgIGlmICgh
bW92aWUpCisgICAgICAgIHJldHVybiBNZWRpYVBsYXllcjo6TW92aWVMb2FkVHlwZTo6VW5rbm93
bjsKKworICAgIFVJbnQzMiBtb3ZpZVR5cGUgPSBtb3ZpZS5tb3ZpZVR5cGU7CisgICAgc3dpdGNo
IChtb3ZpZVR5cGUpIHsKKyAgICBjYXNlIFFUTW92aWVUeXBlTG9jYWw6CisgICAgY2FzZSBRVE1v
dmllVHlwZUZhc3RTdGFydDoKKyAgICAgICAgcmV0dXJuIE1lZGlhUGxheWVyOjpNb3ZpZUxvYWRU
eXBlOjpEb3dubG9hZDsKKyAgICBjYXNlIFFUTW92aWVUeXBlTGl2ZVN0cmVhbToKKyAgICAgICAg
cmV0dXJuIE1lZGlhUGxheWVyOjpNb3ZpZUxvYWRUeXBlOjpMaXZlU3RyZWFtOworICAgIGNhc2Ug
UVRNb3ZpZVR5cGVTdG9yZWRTdHJlYW06CisgICAgICAgIHJldHVybiBNZWRpYVBsYXllcjo6TW92
aWVMb2FkVHlwZTo6U3RvcmVkU3RyZWFtOworICAgIGNhc2UgUVRNb3ZpZVR5cGVVbmtub3duOgor
ICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiBNZWRpYVBsYXllcjo6TW92aWVMb2FkVHlwZTo6
VW5rbm93bjsKKyAgICB9CiB9CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6OnNldFBy
ZWxvYWQoTWVkaWFQbGF5ZXI6OlByZWxvYWQgcHJlbG9hZCkKQEAgLTE1MTUsNyArMTU4OCw3IEBA
IGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6OmNhblNhdmVNZWRpYURhdGEoKSBjb25zdAog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAobV9xdE1vdmllKQotICAgICAgICB1cmwg
PSBVUkwod2tRVE1vdmllUmVzb2x2ZWRVUkwobV9xdE1vdmllLmdldCgpKSk7CisgICAgICAgIHVy
bCA9IFVSTChbbV9xdE1vdmllIFVSTF0pOwogICAgIGVsc2UKICAgICAgICAgdXJsID0gVVJMKFBh
cnNlZFVSTFN0cmluZywgbV9tb3ZpZVVSTCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21hYy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tYWMvV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oCmluZGV4IDIzZmYyM2ZjZjQ1OGI0
MDc4OWIwMmUwYWVjMTJiMjAwMDExZmM1YmIuLmY2NzU5NTA5YTExZmNlMzM0MTNmZTY5MDMzYTQ2
ODU2ZjU5NzQ1NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJD
b3JlU3lzdGVtSW50ZXJmYWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dl
YkNvcmVTeXN0ZW1JbnRlcmZhY2UuaApAQCAtMTMxLDMyICsxMzEsNyBAQCBleHRlcm4gZG91Ymxl
ICgqd2tHZXROU1VSTFJlc3BvbnNlQ2FsY3VsYXRlZEV4cGlyYXRpb24pKE5TVVJMUmVzcG9uc2Ug
KnJlc3BvbnNlKQogZXh0ZXJuIEJPT0wgKCp3a0dldE5TVVJMUmVzcG9uc2VNdXN0UmV2YWxpZGF0
ZSkoTlNVUkxSZXNwb25zZSAqcmVzcG9uc2UpOwogZXh0ZXJuIEJPT0wgKCp3a0hpdFRlc3RNZWRp
YVVJUGFydCkoaW50IHBhcnQsIENHUmVjdCBib3VuZHMsIENHUG9pbnQgcG9pbnQpOwogZXh0ZXJu
IHZvaWQgKCp3a01lYXN1cmVNZWRpYVVJUGFydCkoaW50IHBhcnQsIENHUmVjdCAqYm91bmRzLCBD
R1NpemUgKm5hdHVyYWxTaXplKTsKLWV4dGVybiBOU1ZpZXcgKigqd2tDcmVhdGVNZWRpYVVJQmFj
a2dyb3VuZFZpZXcpKHZvaWQpOwogCi10eXBlZGVmIGVudW0gewotICAgIHdrTWVkaWFVSUNvbnRy
b2xUaW1lbGluZSwKLSAgICB3a01lZGlhVUlDb250cm9sU2xpZGVyLAotICAgIHdrTWVkaWFVSUNv
bnRyb2xQbGF5UGF1c2VCdXR0b24sCi0gICAgd2tNZWRpYVVJQ29udHJvbEV4aXRGdWxsc2NyZWVu
QnV0dG9uLAotICAgIHdrTWVkaWFVSUNvbnRyb2xSZXdpbmRCdXR0b24sCi0gICAgd2tNZWRpYVVJ
Q29udHJvbEZhc3RGb3J3YXJkQnV0dG9uLAotICAgIHdrTWVkaWFVSUNvbnRyb2xWb2x1bWVVcEJ1
dHRvbiwKLSAgICB3a01lZGlhVUlDb250cm9sVm9sdW1lRG93bkJ1dHRvbgotfSB3a01lZGlhVUlD
b250cm9sVHlwZTsKLWV4dGVybiBOU0NvbnRyb2wgKigqd2tDcmVhdGVNZWRpYVVJQ29udHJvbCko
aW50KTsKLQotZXh0ZXJuIHVuc2lnbmVkICgqd2tRVEluY2x1ZGVPbmx5TW9kZXJuTWVkaWFGaWxl
VHlwZXMpKHZvaWQpOwotZXh0ZXJuIHZvaWQgKCp3a1FUTW92aWVEaXNhYmxlQ29tcG9uZW50KSh1
aW50MzJfdFs1XSk7Ci1leHRlcm4gZmxvYXQgKCp3a1FUTW92aWVNYXhUaW1lTG9hZGVkKShRVE1v
dmllKik7Ci1leHRlcm4gTlNTdHJpbmcgKigqd2tRVE1vdmllTWF4VGltZUxvYWRlZENoYW5nZU5v
dGlmaWNhdGlvbikodm9pZCk7Ci1leHRlcm4gaW50ICgqd2tRVE1vdmllR2V0VHlwZSkoUVRNb3Zp
ZSopOwotZXh0ZXJuIEJPT0wgKCp3a1FUTW92aWVIYXNDbG9zZWRDYXB0aW9ucykoUVRNb3ZpZSop
OwotZXh0ZXJuIE5TVVJMICooKndrUVRNb3ZpZVJlc29sdmVkVVJMKShRVE1vdmllKik7Ci1leHRl
cm4gdm9pZCAoKndrUVRNb3ZpZVNldFNob3dDbG9zZWRDYXB0aW9ucykoUVRNb3ZpZSosIEJPT0wp
OwotZXh0ZXJuIHZvaWQgKCp3a1FUTW92aWVTZWxlY3RQcmVmZXJyZWRBbHRlcm5hdGVzKShRVE1v
dmllKik7Ci1leHRlcm4gTlNBcnJheSAqKCp3a1FUR2V0U2l0ZXNJbk1lZGlhRG93bmxvYWRDYWNo
ZSkoKTsKLWV4dGVybiB2b2lkICgqd2tRVENsZWFyTWVkaWFEb3dubG9hZENhY2hlRm9yU2l0ZSko
TlNTdHJpbmcgKnNpdGUpOwotZXh0ZXJuIHZvaWQgKCp3a1FUQ2xlYXJNZWRpYURvd25sb2FkQ2Fj
aGUpKCk7CiBleHRlcm4gdm9pZCAoKndrU2V0Q29va2llU3RvcmFnZVByaXZhdGVCcm93c2luZ0Vu
YWJsZWQpKEJPT0wpOwogI2VuZGlmCiBleHRlcm4gdm9pZCAoKndrU2V0Q09OTkVDVFByb3h5Rm9y
U3RyZWFtKShDRlJlYWRTdHJlYW1SZWYsIENGU3RyaW5nUmVmIHByb3h5SG9zdCwgQ0ZOdW1iZXJS
ZWYgcHJveHlQb3J0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9X
ZWJDb3JlU3lzdGVtSW50ZXJmYWNlLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dl
YkNvcmVTeXN0ZW1JbnRlcmZhY2UubW0KaW5kZXggYzcyM2Q3NDRiMDQ2ZDIxMGZhYWIyMmMyYTQx
ZGRmMDI0NjNkYTkzZi4uMmVhYmQ0ZjE0ZjM5MzM2ZTMzNDBjZThlZGVlMzdlNDgyZGQ2ODAyZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVTeXN0ZW1JbnRl
cmZhY2UubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVTeXN0ZW1J
bnRlcmZhY2UubW0KQEAgLTM2LDIzICszNiw5IEBAIHZvaWQgKCp3a0RyYXdNZWRpYVNsaWRlclRy
YWNrKShDR0NvbnRleHRSZWYgY29udGV4dCwgQ0dSZWN0IHJlY3QsIGZsb2F0IHRpbWVMb2FkCiBC
T09MICgqd2tIaXRUZXN0TWVkaWFVSVBhcnQpKGludCBwYXJ0LCBDR1JlY3QgYm91bmRzLCBDR1Bv
aW50IHBvaW50KTsKIHZvaWQgKCp3a0RyYXdNZWRpYVVJUGFydCkoaW50IHBhcnQsIENHQ29udGV4
dFJlZiBjb250ZXh0LCBDR1JlY3QgcmVjdCwgdW5zaWduZWQgc3RhdGUpOwogdm9pZCAoKndrTWVh
c3VyZU1lZGlhVUlQYXJ0KShpbnQgcGFydCwgQ0dSZWN0ICpib3VuZHMsIENHU2l6ZSAqbmF0dXJh
bFNpemUpOwotTlNWaWV3ICooKndrQ3JlYXRlTWVkaWFVSUJhY2tncm91bmRWaWV3KSh2b2lkKTsK
LU5TQ29udHJvbCAqKCp3a0NyZWF0ZU1lZGlhVUlDb250cm9sKShpbnQpOwogTlNUaW1lSW50ZXJ2
YWwgKCp3a0dldE5TVVJMUmVzcG9uc2VDYWxjdWxhdGVkRXhwaXJhdGlvbikoTlNVUkxSZXNwb25z
ZSAqcmVzcG9uc2UpOwogQk9PTCAoKndrR2V0TlNVUkxSZXNwb25zZU11c3RSZXZhbGlkYXRlKShO
U1VSTFJlc3BvbnNlICpyZXNwb25zZSk7CiB2b2lkICgqd2tQb3B1cE1lbnUpKE5TTWVudSosIE5T
UG9pbnQgbG9jYXRpb24sIGZsb2F0IHdpZHRoLCBOU1ZpZXcqLCBpbnQgc2VsZWN0ZWRJdGVtLCBO
U0ZvbnQqLCBOU0NvbnRyb2xTaXplIGNvbnRyb2xTaXplLCBib29sIHVzZXNDdXN0b21BcHBlYXJh
bmNlKTsKLXVuc2lnbmVkICgqd2tRVEluY2x1ZGVPbmx5TW9kZXJuTWVkaWFGaWxlVHlwZXMpKHZv
aWQpOwotdm9pZCAoKndrUVRNb3ZpZURpc2FibGVDb21wb25lbnQpKHVpbnQzMl90WzVdKTsKLWZs
b2F0ICgqd2tRVE1vdmllTWF4VGltZUxvYWRlZCkoUVRNb3ZpZSopOwotTlNTdHJpbmcgKigqd2tR
VE1vdmllTWF4VGltZUxvYWRlZENoYW5nZU5vdGlmaWNhdGlvbikodm9pZCk7Ci1pbnQgKCp3a1FU
TW92aWVHZXRUeXBlKShRVE1vdmllKik7Ci1CT09MICgqd2tRVE1vdmllSGFzQ2xvc2VkQ2FwdGlv
bnMpKFFUTW92aWUqKTsKLU5TVVJMICooKndrUVRNb3ZpZVJlc29sdmVkVVJMKShRVE1vdmllKik7
Ci12b2lkICgqd2tRVE1vdmllU2V0U2hvd0Nsb3NlZENhcHRpb25zKShRVE1vdmllKiwgQk9PTCk7
Ci12b2lkICgqd2tRVE1vdmllU2VsZWN0UHJlZmVycmVkQWx0ZXJuYXRlcykoUVRNb3ZpZSopOwot
TlNBcnJheSAqKCp3a1FUR2V0U2l0ZXNJbk1lZGlhRG93bmxvYWRDYWNoZSkoKTsKLXZvaWQgKCp3
a1FUQ2xlYXJNZWRpYURvd25sb2FkQ2FjaGVGb3JTaXRlKShOU1N0cmluZyAqc2l0ZSk7Ci12b2lk
ICgqd2tRVENsZWFyTWVkaWFEb3dubG9hZENhY2hlKSgpOwogCiB2b2lkICgqd2tTZXRDT05ORUNU
UHJveHlGb3JTdHJlYW0pKENGUmVhZFN0cmVhbVJlZiwgQ0ZTdHJpbmdSZWYgcHJveHlIb3N0LCBD
Rk51bWJlclJlZiBwcm94eVBvcnQpOwogdm9pZCAoKndrU2V0Q09OTkVDVFByb3h5QXV0aG9yaXph
dGlvbkZvclN0cmVhbSkoQ0ZSZWFkU3RyZWFtUmVmLCBDRlN0cmluZ1JlZiBwcm94eUF1dGhvcml6
YXRpb25TdHJpbmcpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dl
YlZpZGVvRnVsbHNjcmVlbkhVRFdpbmRvd0NvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tYWMvV2ViVmlkZW9GdWxsc2NyZWVuSFVEV2luZG93Q29udHJvbGxlci5tbQppbmRl
eCBlZmI2ZTJiMjczYzU4MzUxMzNlNzViMTYyNmE5NWIwNDkwYzc3OTljLi5mYzBmNTEwYzdhMmNi
MjQ5NzhkMDRhMGM0ODA2ZWQ0YzcxYzUzMjAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tYWMvV2ViVmlkZW9GdWxsc2NyZWVuSFVEV2luZG93Q29udHJvbGxlci5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViVmlkZW9GdWxsc2NyZWVuSFVEV2luZG93
Q29udHJvbGxlci5tbQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDkt
MjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MDktMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTMxLDkgKzMxLDM4IEBACiAjaW1wb3J0IDxXZWJDb3JlL0hUTUxW
aWRlb0VsZW1lbnQuaD4KICNpbXBvcnQgPFdlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaD4KICNpbXBv
cnQgPHBhbC9zcGkvY2cvQ29yZUdyYXBoaWNzU1BJLmg+CisjaW1wb3J0IDxwYWwvc3BpL21hYy9R
VEtpdFNQSS5oPgorI2ltcG9ydCA8d3RmL1NvZnRMaW5raW5nLmg+CisKK1NPRlRfTElOS19GUkFN
RVdPUksoUVRLaXQpCisKK1NPRlRfTElOS19DTEFTUyhRVEtpdCwgUVRIVURCYWNrZ3JvdW5kVmll
dykKK1NPRlRfTElOS19DTEFTUyhRVEtpdCwgUVRIVURCdXR0b24pCitTT0ZUX0xJTktfQ0xBU1Mo
UVRLaXQsIFFUSFVEU2xpZGVyKQorU09GVF9MSU5LX0NMQVNTKFFUS2l0LCBRVEhVRFRpbWVsaW5l
KQorCisjZGVmaW5lIFFUSFVEQmFja2dyb3VuZFZpZXcgZ2V0UVRIVURCYWNrZ3JvdW5kVmlld0Ns
YXNzKCkKKyNkZWZpbmUgUVRIVURCdXR0b24gZ2V0UVRIVURCdXR0b25DbGFzcygpCisjZGVmaW5l
IFFUSFVEU2xpZGVyIGdldFFUSFVEU2xpZGVyQ2xhc3MoKQorI2RlZmluZSBRVEhVRFRpbWVsaW5l
IGdldFFUSFVEVGltZWxpbmVDbGFzcygpCiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK2VudW0gY2xhc3MgTWVkaWFVSUNvbnRyb2wgeworICAgIFRp
bWVsaW5lLAorICAgIFNsaWRlciwKKyAgICBQbGF5UGF1c2VCdXR0b24sCisgICAgRXhpdEZ1bGxz
Y3JlZW5CdXR0b24sCisgICAgUmV3aW5kQnV0dG9uLAorICAgIEZhc3RGb3J3YXJkQnV0dG9uLAor
ICAgIFZvbHVtZVVwQnV0dG9uLAorICAgIFZvbHVtZURvd25CdXR0b24sCit9OworCit9CisKIEBp
bnRlcmZhY2UgV2ViVmlkZW9GdWxsc2NyZWVuSFVEV2luZG93Q29udHJvbGxlciAoUHJpdmF0ZSkg
PE5TV2luZG93RGVsZWdhdGU+CiAKIC0gKHZvaWQpdXBkYXRlVGltZTsKQEAgLTI2NSwxMCArMjk0
LDY4IEBAIC0gKHZvaWQpY2xvc2VXaW5kb3cKICAgICBbc2VsZiBzZXRXaW5kb3c6bmlsXTsKIH0K
IAotc3RhdGljIE5TQ29udHJvbCAqY3JlYXRlQ29udHJvbFdpdGhNZWRpYVVJQ29udHJvbFR5cGUo
aW50IGNvbnRyb2xUeXBlLCBOU1JlY3QgZnJhbWUpCitzdGF0aWMgTlNDb250cm9sICpjcmVhdGVN
ZWRpYVVJQ29udHJvbChNZWRpYVVJQ29udHJvbCBjb250cm9sVHlwZSkKK3sKKyAgICBzd2l0Y2gg
KGNvbnRyb2xUeXBlKSB7CisgICAgY2FzZSBNZWRpYVVJQ29udHJvbDo6VGltZWxpbmU6IHsKKyAg
ICAgICAgTlNTbGlkZXIgKnNsaWRlciA9IFtbUVRIVURUaW1lbGluZSBhbGxvY10gaW5pdF07Cisg
ICAgICAgIFtbc2xpZGVyIGNlbGxdIHNldENvbnRpbnVvdXM6WUVTXTsKKyAgICAgICAgcmV0dXJu
IHNsaWRlcjsKKyAgICB9CisgICAgY2FzZSBNZWRpYVVJQ29udHJvbDo6U2xpZGVyOiB7CisgICAg
ICAgIE5TQnV0dG9uICpzbGlkZXIgPSBbW1FUSFVEU2xpZGVyIGFsbG9jXSBpbml0XTsKKyAgICAg
ICAgW1tzbGlkZXIgY2VsbF0gc2V0Q29udGludW91czpZRVNdOworICAgICAgICByZXR1cm4gc2xp
ZGVyOworICAgIH0KKyAgICBjYXNlIE1lZGlhVUlDb250cm9sOjpQbGF5UGF1c2VCdXR0b246IHsK
KyAgICAgICAgTlNCdXR0b24gKmJ1dHRvbiA9IFtbUVRIVURCdXR0b24gYWxsb2NdIGluaXRdOwor
ICAgICAgICBbYnV0dG9uIHNldEltYWdlOltOU0ltYWdlIGltYWdlTmFtZWQ6QCJOU1BsYXlUZW1w
bGF0ZSJdXTsKKyAgICAgICAgW2J1dHRvbiBzZXRBbHRlcm5hdGVJbWFnZTpbTlNJbWFnZSBpbWFn
ZU5hbWVkOkAiTlNQYXVzZVFUUHJpdmF0ZVRlbXBsYXRlIl1dOworCisgICAgICAgIFtbYnV0dG9u
IGNlbGxdIHNldFNob3dzU3RhdGVCeTpOU0NvbnRlbnRzQ2VsbE1hc2tdOworICAgICAgICBbYnV0
dG9uIHNldEJvcmRlcmVkOk5PXTsKKyAgICAgICAgcmV0dXJuIGJ1dHRvbjsKKyAgICB9CisgICAg
Y2FzZSBNZWRpYVVJQ29udHJvbDo6RXhpdEZ1bGxzY3JlZW5CdXR0b246IHsKKyAgICAgICAgTlNC
dXR0b24gKmJ1dHRvbiA9IFtbUVRIVURCdXR0b24gYWxsb2NdIGluaXRdOworICAgICAgICBbYnV0
dG9uIHNldEltYWdlOltOU0ltYWdlIGltYWdlTmFtZWQ6QCJOU0V4aXRGdWxsU2NyZWVuVGVtcGxh
dGUiXV07CisgICAgICAgIFtidXR0b24gc2V0Qm9yZGVyZWQ6Tk9dOworICAgICAgICByZXR1cm4g
YnV0dG9uOworICAgIH0KKyAgICBjYXNlIE1lZGlhVUlDb250cm9sOjpSZXdpbmRCdXR0b246IHsK
KyAgICAgICAgTlNCdXR0b24gKmJ1dHRvbiA9IFtbUVRIVURCdXR0b24gYWxsb2NdIGluaXRdOwor
ICAgICAgICBbYnV0dG9uIHNldEltYWdlOltOU0ltYWdlIGltYWdlTmFtZWQ6QCJOU1Jld2luZFRl
bXBsYXRlIl1dOworICAgICAgICBbYnV0dG9uIHNldEJvcmRlcmVkOk5PXTsKKyAgICAgICAgcmV0
dXJuIGJ1dHRvbjsKKyAgICB9CisgICAgY2FzZSBNZWRpYVVJQ29udHJvbDo6RmFzdEZvcndhcmRC
dXR0b246IHsKKyAgICAgICAgTlNCdXR0b24gKmJ1dHRvbiA9IFtbUVRIVURCdXR0b24gYWxsb2Nd
IGluaXRdOworICAgICAgICBbYnV0dG9uIHNldEltYWdlOltOU0ltYWdlIGltYWdlTmFtZWQ6QCJO
U0Zhc3RGb3J3YXJkVGVtcGxhdGUiXV07CisgICAgICAgIFtidXR0b24gc2V0Qm9yZGVyZWQ6Tk9d
OworICAgICAgICByZXR1cm4gYnV0dG9uOworICAgIH0KKyAgICBjYXNlIE1lZGlhVUlDb250cm9s
OjpWb2x1bWVVcEJ1dHRvbjogeworICAgICAgICBOU0J1dHRvbiAqYnV0dG9uID0gW1tRVEhVREJ1
dHRvbiBhbGxvY10gaW5pdF07CisgICAgICAgIFtidXR0b24gc2V0SW1hZ2U6W05TSW1hZ2UgaW1h
Z2VOYW1lZDpAIk5TQXVkaW9PdXRwdXRWb2x1bWVIaWdoVGVtcGxhdGUiXV07CisgICAgICAgIFti
dXR0b24gc2V0Qm9yZGVyZWQ6Tk9dOworICAgICAgICByZXR1cm4gYnV0dG9uOworICAgIH0KKyAg
ICBjYXNlIE1lZGlhVUlDb250cm9sOjpWb2x1bWVEb3duQnV0dG9uOiB7CisgICAgICAgIE5TQnV0
dG9uICpidXR0b24gPSBbW1FUSFVEQnV0dG9uIGFsbG9jXSBpbml0XTsKKyAgICAgICAgW2J1dHRv
biBzZXRJbWFnZTpbTlNJbWFnZSBpbWFnZU5hbWVkOkAiTlNBdWRpb091dHB1dFZvbHVtZUxvd1Rl
bXBsYXRlIl1dOworICAgICAgICBbYnV0dG9uIHNldEJvcmRlcmVkOk5PXTsKKyAgICAgICAgcmV0
dXJuIGJ1dHRvbjsKKyAgICB9CisgICAgfQorCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgcmV0dXJuIG5pbDsKK30KKworc3RhdGljIE5TQ29udHJvbCAqY3JlYXRlQ29udHJvbFdpdGhN
ZWRpYVVJQ29udHJvbFR5cGUoTWVkaWFVSUNvbnRyb2wgY29udHJvbFR5cGUsIE5TUmVjdCBmcmFt
ZSkKIHsKLSAgICBOU0NvbnRyb2wgKmNvbnRyb2wgPSB3a0NyZWF0ZU1lZGlhVUlDb250cm9sKGNv
bnRyb2xUeXBlKTsKLSAgICBbY29udHJvbCBzZXRGcmFtZTpmcmFtZV07CisgICAgTlNDb250cm9s
ICpjb250cm9sID0gY3JlYXRlTWVkaWFVSUNvbnRyb2woY29udHJvbFR5cGUpOworICAgIGNvbnRy
b2wuZnJhbWUgPSBmcmFtZTsKICAgICByZXR1cm4gY29udHJvbDsKIH0KIApAQCAtMjg1LDYgKzM3
MiwyMSBAQCBzdGF0aWMgTlNUZXh0RmllbGQgKmNyZWF0ZVRpbWVUZXh0RmllbGQoTlNSZWN0IGZy
YW1lKQogICAgIHJldHVybiB0ZXh0RmllbGQ7CiB9CiAKK3N0YXRpYyBOU1ZpZXcgKmNyZWF0ZU1l
ZGlhVUlCYWNrZ3JvdW5kVmlldygpCit7CisgICAgaWQgdmlldyA9IFtbUVRIVURCYWNrZ3JvdW5k
VmlldyBhbGxvY10gaW5pdF07CisKKyAgICBjb25zdCBDR0Zsb2F0IHF1aWNrVGltZVBsYXllckhV
REhlaWdodCA9IDU5OworICAgIGNvbnN0IENHRmxvYXQgcXVpY2tUaW1lUGxheWVySFVEQ29udGVu
dEJvcmRlclBvc2l0aW9uID0gMzg7CisKKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwdXNoCisj
cHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgaWdub3JlZCAiLVdkZXByZWNhdGVkLWRlY2xhcmF0aW9u
cyIKKyAgICBbdmlldyBzZXRDb250ZW50Qm9yZGVyUG9zaXRpb246cXVpY2tUaW1lUGxheWVySFVE
Q29udGVudEJvcmRlclBvc2l0aW9uIC8gcXVpY2tUaW1lUGxheWVySFVESGVpZ2h0XTsKKyNwcmFn
bWEgY2xhbmcgZGlhZ25vc3RpYyBwb3AKKworICAgIHJldHVybiB2aWV3OworfQorCiAtICh2b2lk
KXdpbmRvd0RpZExvYWQKIHsKICAgICBzdGF0aWMgY29uc3QgQ0dGbG9hdCBob3Jpem9udGFsTWFy
Z2luID0gMTA7CkBAIC0zMTAsNyArNDEyLDcgQEAgLSAodm9pZCl3aW5kb3dEaWRMb2FkCiAgICAg
TlNXaW5kb3cgKndpbmRvdyA9IFtzZWxmIHdpbmRvd107CiAgICAgQVNTRVJUKHdpbmRvdyk7CiAK
LSAgICBOU1ZpZXcgKmJhY2tncm91bmQgPSB3a0NyZWF0ZU1lZGlhVUlCYWNrZ3JvdW5kVmlldygp
OworICAgIE5TVmlldyAqYmFja2dyb3VuZCA9IGNyZWF0ZU1lZGlhVUlCYWNrZ3JvdW5kVmlldygp
OwogCiAgICAgW3dpbmRvdyBzZXRDb250ZW50VmlldzpiYWNrZ3JvdW5kXTsKICAgICBfYXJlYSA9
IFtbTlNUcmFja2luZ0FyZWEgYWxsb2NdIGluaXRXaXRoUmVjdDpbYmFja2dyb3VuZCBib3VuZHNd
IG9wdGlvbnM6TlNUcmFja2luZ01vdXNlRW50ZXJlZEFuZEV4aXRlZCB8IE5TVHJhY2tpbmdBY3Rp
dmVBbHdheXMgb3duZXI6c2VsZiB1c2VySW5mbzpuaWxdOwpAQCAtMzIwLDE0ICs0MjIsMTQgQEAg
LSAodm9pZCl3aW5kb3dEaWRMb2FkCiAgICAgTlNWaWV3ICpjb250ZW50VmlldyA9IFt3aW5kb3cg
Y29udGVudFZpZXddOwogCiAgICAgQ0dGbG9hdCBjZW50ZXIgPSBDR0Zsb29yKCh3aW5kb3dXaWR0
aCAtIHBsYXlCdXR0b25XaWR0aCkgLyAyKTsKLSAgICBfcGxheUJ1dHRvbiA9IChOU0J1dHRvbiAq
KWNyZWF0ZUNvbnRyb2xXaXRoTWVkaWFVSUNvbnRyb2xUeXBlKHdrTWVkaWFVSUNvbnRyb2xQbGF5
UGF1c2VCdXR0b24sIE5TTWFrZVJlY3QoY2VudGVyLCB3aW5kb3dIZWlnaHQgLSBwbGF5QnV0dG9u
VG9wTWFyZ2luIC0gcGxheUJ1dHRvbkhlaWdodCwgcGxheUJ1dHRvbldpZHRoLCBwbGF5QnV0dG9u
SGVpZ2h0KSk7CisgICAgX3BsYXlCdXR0b24gPSAoTlNCdXR0b24gKiljcmVhdGVDb250cm9sV2l0
aE1lZGlhVUlDb250cm9sVHlwZShNZWRpYVVJQ29udHJvbDo6UGxheVBhdXNlQnV0dG9uLCBOU01h
a2VSZWN0KGNlbnRlciwgd2luZG93SGVpZ2h0IC0gcGxheUJ1dHRvblRvcE1hcmdpbiAtIHBsYXlC
dXR0b25IZWlnaHQsIHBsYXlCdXR0b25XaWR0aCwgcGxheUJ1dHRvbkhlaWdodCkpOwogICAgIEFT
U0VSVChbX3BsYXlCdXR0b24gaXNLaW5kT2ZDbGFzczpbTlNCdXR0b24gY2xhc3NdXSk7CiAgICAg
W19wbGF5QnV0dG9uIHNldFRhcmdldDpzZWxmXTsKICAgICBbX3BsYXlCdXR0b24gc2V0QWN0aW9u
OkBzZWxlY3Rvcih0b2dnbGVQbGF5aW5nOildOwogICAgIFtjb250ZW50VmlldyBhZGRTdWJ2aWV3
Ol9wbGF5QnV0dG9uXTsKIAogICAgIENHRmxvYXQgY2xvc2VUb1JpZ2h0ID0gd2luZG93V2lkdGgg
LSBob3Jpem9udGFsTWFyZ2luIC0gZXhpdEZ1bGxzY3JlZW5CdXR0b25XaWR0aDsKLSAgICBOU0Nv
bnRyb2wgKmV4aXRGdWxsc2NyZWVuQnV0dG9uID0gY3JlYXRlQ29udHJvbFdpdGhNZWRpYVVJQ29u
dHJvbFR5cGUod2tNZWRpYVVJQ29udHJvbEV4aXRGdWxsc2NyZWVuQnV0dG9uLCBOU01ha2VSZWN0
KGNsb3NlVG9SaWdodCwgd2luZG93SGVpZ2h0IC0gZXhpdEZ1bGxzY3JlZW5CdXR0b25Ub3BNYXJn
aW4gLSBleGl0RnVsbHNjcmVlbkJ1dHRvbkhlaWdodCwgZXhpdEZ1bGxzY3JlZW5CdXR0b25XaWR0
aCwgZXhpdEZ1bGxzY3JlZW5CdXR0b25IZWlnaHQpKTsKKyAgICBOU0NvbnRyb2wgKmV4aXRGdWxs
c2NyZWVuQnV0dG9uID0gY3JlYXRlQ29udHJvbFdpdGhNZWRpYVVJQ29udHJvbFR5cGUoTWVkaWFV
SUNvbnRyb2w6OkV4aXRGdWxsc2NyZWVuQnV0dG9uLCBOU01ha2VSZWN0KGNsb3NlVG9SaWdodCwg
d2luZG93SGVpZ2h0IC0gZXhpdEZ1bGxzY3JlZW5CdXR0b25Ub3BNYXJnaW4gLSBleGl0RnVsbHNj
cmVlbkJ1dHRvbkhlaWdodCwgZXhpdEZ1bGxzY3JlZW5CdXR0b25XaWR0aCwgZXhpdEZ1bGxzY3Jl
ZW5CdXR0b25IZWlnaHQpKTsKICAgICBbZXhpdEZ1bGxzY3JlZW5CdXR0b24gc2V0QWN0aW9uOkBz
ZWxlY3RvcihleGl0RnVsbHNjcmVlbjopXTsKICAgICBbZXhpdEZ1bGxzY3JlZW5CdXR0b24gc2V0
VGFyZ2V0OnNlbGZdOwogICAgIFtjb250ZW50VmlldyBhZGRTdWJ2aWV3OmV4aXRGdWxsc2NyZWVu
QnV0dG9uXTsKQEAgLTMzNSwyNyArNDM3LDI3IEBAIC0gKHZvaWQpd2luZG93RGlkTG9hZAogICAg
IAogICAgIENHRmxvYXQgdm9sdW1lQ29udHJvbHNCb3R0b20gPSB3aW5kb3dIZWlnaHQgLSB2b2x1
bWVDb250cm9sc1RvcE1hcmdpbiAtIHZvbHVtZUJ1dHRvbkhlaWdodDsKICAgICBDR0Zsb2F0IGxl
ZnQgPSBob3Jpem9udGFsTWFyZ2luOwotICAgIE5TQ29udHJvbCAqdm9sdW1lRG93bkJ1dHRvbiA9
IGNyZWF0ZUNvbnRyb2xXaXRoTWVkaWFVSUNvbnRyb2xUeXBlKHdrTWVkaWFVSUNvbnRyb2xWb2x1
bWVEb3duQnV0dG9uLCBOU01ha2VSZWN0KGxlZnQsIHZvbHVtZUNvbnRyb2xzQm90dG9tLCB2b2x1
bWVCdXR0b25XaWR0aCwgdm9sdW1lQnV0dG9uSGVpZ2h0KSk7CisgICAgTlNDb250cm9sICp2b2x1
bWVEb3duQnV0dG9uID0gY3JlYXRlQ29udHJvbFdpdGhNZWRpYVVJQ29udHJvbFR5cGUoTWVkaWFV
SUNvbnRyb2w6OlZvbHVtZURvd25CdXR0b24sIE5TTWFrZVJlY3QobGVmdCwgdm9sdW1lQ29udHJv
bHNCb3R0b20sIHZvbHVtZUJ1dHRvbldpZHRoLCB2b2x1bWVCdXR0b25IZWlnaHQpKTsKICAgICBb
Y29udGVudFZpZXcgYWRkU3Vidmlldzp2b2x1bWVEb3duQnV0dG9uXTsKICAgICBbdm9sdW1lRG93
bkJ1dHRvbiBzZXRUYXJnZXQ6c2VsZl07CiAgICAgW3ZvbHVtZURvd25CdXR0b24gc2V0QWN0aW9u
OkBzZWxlY3RvcihzZXRWb2x1bWVUb1plcm86KV07CiAgICAgW3ZvbHVtZURvd25CdXR0b24gcmVs
ZWFzZV07CiAKICAgICBsZWZ0ICs9IHZvbHVtZUJ1dHRvbldpZHRoOwotICAgIF92b2x1bWVTbGlk
ZXIgPSBjcmVhdGVDb250cm9sV2l0aE1lZGlhVUlDb250cm9sVHlwZSh3a01lZGlhVUlDb250cm9s
U2xpZGVyLCBOU01ha2VSZWN0KGxlZnQsIHZvbHVtZUNvbnRyb2xzQm90dG9tICsgQ0dGbG9vcigo
dm9sdW1lQnV0dG9uSGVpZ2h0IC0gdm9sdW1lU2xpZGVySGVpZ2h0KSAvIDIpLCB2b2x1bWVTbGlk
ZXJXaWR0aCwgdm9sdW1lU2xpZGVySGVpZ2h0KSk7CisgICAgX3ZvbHVtZVNsaWRlciA9IGNyZWF0
ZUNvbnRyb2xXaXRoTWVkaWFVSUNvbnRyb2xUeXBlKE1lZGlhVUlDb250cm9sOjpTbGlkZXIsIE5T
TWFrZVJlY3QobGVmdCwgdm9sdW1lQ29udHJvbHNCb3R0b20gKyBDR0Zsb29yKCh2b2x1bWVCdXR0
b25IZWlnaHQgLSB2b2x1bWVTbGlkZXJIZWlnaHQpIC8gMiksIHZvbHVtZVNsaWRlcldpZHRoLCB2
b2x1bWVTbGlkZXJIZWlnaHQpKTsKICAgICBbX3ZvbHVtZVNsaWRlciBzZXRWYWx1ZTpbTlNOdW1i
ZXIgbnVtYmVyV2l0aERvdWJsZTpbc2VsZiBtYXhWb2x1bWVdXSBmb3JLZXk6QCJtYXhWYWx1ZSJd
OwogICAgIFtfdm9sdW1lU2xpZGVyIHNldFRhcmdldDpzZWxmXTsKICAgICBbX3ZvbHVtZVNsaWRl
ciBzZXRBY3Rpb246QHNlbGVjdG9yKHZvbHVtZUNoYW5nZWQ6KV07CiAgICAgW2NvbnRlbnRWaWV3
IGFkZFN1YnZpZXc6X3ZvbHVtZVNsaWRlcl07CiAKICAgICBsZWZ0ICs9IHZvbHVtZVNsaWRlcldp
ZHRoICsgdm9sdW1lVXBCdXR0b25MZWZ0TWFyZ2luOwotICAgIE5TQ29udHJvbCAqdm9sdW1lVXBC
dXR0b24gPSBjcmVhdGVDb250cm9sV2l0aE1lZGlhVUlDb250cm9sVHlwZSh3a01lZGlhVUlDb250
cm9sVm9sdW1lVXBCdXR0b24sIE5TTWFrZVJlY3QobGVmdCwgdm9sdW1lQ29udHJvbHNCb3R0b20s
IHZvbHVtZUJ1dHRvbldpZHRoLCB2b2x1bWVCdXR0b25IZWlnaHQpKTsKKyAgICBOU0NvbnRyb2wg
KnZvbHVtZVVwQnV0dG9uID0gY3JlYXRlQ29udHJvbFdpdGhNZWRpYVVJQ29udHJvbFR5cGUoTWVk
aWFVSUNvbnRyb2w6OlZvbHVtZVVwQnV0dG9uLCBOU01ha2VSZWN0KGxlZnQsIHZvbHVtZUNvbnRy
b2xzQm90dG9tLCB2b2x1bWVCdXR0b25XaWR0aCwgdm9sdW1lQnV0dG9uSGVpZ2h0KSk7CiAgICAg
W3ZvbHVtZVVwQnV0dG9uIHNldFRhcmdldDpzZWxmXTsKICAgICBbdm9sdW1lVXBCdXR0b24gc2V0
QWN0aW9uOkBzZWxlY3RvcihzZXRWb2x1bWVUb01heGltdW06KV07CiAgICAgW2NvbnRlbnRWaWV3
IGFkZFN1YnZpZXc6dm9sdW1lVXBCdXR0b25dOwogICAgIFt2b2x1bWVVcEJ1dHRvbiByZWxlYXNl
XTsKIAotICAgIF90aW1lbGluZSA9IHdrQ3JlYXRlTWVkaWFVSUNvbnRyb2wod2tNZWRpYVVJQ29u
dHJvbFRpbWVsaW5lKTsKKyAgICBfdGltZWxpbmUgPSBjcmVhdGVNZWRpYVVJQ29udHJvbChNZWRp
YVVJQ29udHJvbDo6VGltZWxpbmUpOwogCiAgICAgW190aW1lbGluZSBzZXRUYXJnZXQ6c2VsZl07
CiAgICAgW190aW1lbGluZSBzZXRBY3Rpb246QHNlbGVjdG9yKHRpbWVsaW5lUG9zaXRpb25DaGFu
Z2VkOildOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L21hYy9XZWJTeXN0ZW1JbnRlcmZhY2UubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvbWFjL1dlYlN5c3RlbUludGVyZmFjZS5tbQppbmRleCAwZGRkNTcxNDU5
Yjg1NmYzOTIwNWUxMTBjYzAwY2NjYWVlM2ZkMGVlLi5iZGE1ZDczZGZjMTIyZjNlMDIyM2FhYWU1
NTI4NGQ0YjM5ZTU3M2NlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvbWFjL1dlYlN5c3RlbUludGVyZmFjZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYlN5c3RlbUludGVyZmFjZS5tbQpAQCAt
NDMsMTggKzQzLDYgQEAgdm9pZCBJbml0V2ViQ29yZVN5c3RlbUludGVyZmFjZSh2b2lkKQogICAg
ICAgICBJTklUKERyYXdNZWRpYVVJUGFydCk7CiAgICAgICAgIElOSVQoSGl0VGVzdE1lZGlhVUlQ
YXJ0KTsKICAgICAgICAgSU5JVChNZWFzdXJlTWVkaWFVSVBhcnQpOwotICAgICAgICBJTklUKFFU
SW5jbHVkZU9ubHlNb2Rlcm5NZWRpYUZpbGVUeXBlcyk7Ci0gICAgICAgIElOSVQoUVRNb3ZpZURp
c2FibGVDb21wb25lbnQpOwotICAgICAgICBJTklUKFFUTW92aWVHZXRUeXBlKTsKLSAgICAgICAg
SU5JVChRVE1vdmllSGFzQ2xvc2VkQ2FwdGlvbnMpOwotICAgICAgICBJTklUKFFUTW92aWVNYXhU
aW1lTG9hZGVkKTsKLSAgICAgICAgSU5JVChRVE1vdmllTWF4VGltZUxvYWRlZENoYW5nZU5vdGlm
aWNhdGlvbik7Ci0gICAgICAgIElOSVQoUVRNb3ZpZVJlc29sdmVkVVJMKTsKLSAgICAgICAgSU5J
VChRVE1vdmllU2VsZWN0UHJlZmVycmVkQWx0ZXJuYXRlcyk7Ci0gICAgICAgIElOSVQoUVRNb3Zp
ZVNldFNob3dDbG9zZWRDYXB0aW9ucyk7Ci0gICAgICAgIElOSVQoUVRHZXRTaXRlc0luTWVkaWFE
b3dubG9hZENhY2hlKTsKLSAgICAgICAgSU5JVChRVENsZWFyTWVkaWFEb3dubG9hZENhY2hlRm9y
U2l0ZSk7Ci0gICAgICAgIElOSVQoUVRDbGVhck1lZGlhRG93bmxvYWRDYWNoZSk7CiAjZW5kaWYK
ICAgICAgICAgSU5JVChTZXRDT05ORUNUUHJveHlBdXRob3JpemF0aW9uRm9yU3RyZWFtKTsKICAg
ICAgICAgSU5JVChTZXRDT05ORUNUUHJveHlGb3JTdHJlYW0pOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViU3lzdGVtSW50ZXJmYWNlLm1tIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViU3lzdGVtSW50ZXJmYWNl
Lm1tCmluZGV4IGEzMjAyNDUzN2NhZTc3NDA0ZDEyMmEzYTM4NTRkM2MyZTdiYTI0OTAuLjE3NDY1
ODZiMjQyZjUyZTA3YTk5ZmU5MTVhYTZiNGY2MmEzYmM1ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlN5c3RlbUludGVyZmFjZS5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJTeXN0ZW1JbnRlcmZh
Y2UubW0KQEAgLTQ5LDI1ICs0OSw5IEBAIHZvaWQgSW5pdFdlYkNvcmVTeXN0ZW1JbnRlcmZhY2Uo
dm9pZCkKICAgICBJTklUKERyYXdNZWRpYVNsaWRlclRyYWNrKTsKICAgICBJTklUKEhpdFRlc3RN
ZWRpYVVJUGFydCk7CiAgICAgSU5JVChNZWFzdXJlTWVkaWFVSVBhcnQpOwotICAgIElOSVQoQ3Jl
YXRlTWVkaWFVSUJhY2tncm91bmRWaWV3KTsKLSAgICBJTklUKENyZWF0ZU1lZGlhVUlDb250cm9s
KTsKICNlbmRpZgogICAgIElOSVQoU2V0Q09OTkVDVFByb3h5QXV0aG9yaXphdGlvbkZvclN0cmVh
bSk7CiAgICAgSU5JVChTZXRDT05ORUNUUHJveHlGb3JTdHJlYW0pOwotI2lmIEVOQUJMRShWSURF
TykgJiYgIVBMQVRGT1JNKElPUykKLSAgICBJTklUKFFUSW5jbHVkZU9ubHlNb2Rlcm5NZWRpYUZp
bGVUeXBlcyk7Ci0gICAgSU5JVChRVE1vdmllRGlzYWJsZUNvbXBvbmVudCk7Ci0gICAgSU5JVChR
VE1vdmllTWF4VGltZUxvYWRlZCk7Ci0gICAgSU5JVChRVE1vdmllTWF4VGltZUxvYWRlZENoYW5n
ZU5vdGlmaWNhdGlvbik7Ci0gICAgSU5JVChRVE1vdmllR2V0VHlwZSk7Ci0gICAgSU5JVChRVE1v
dmllSGFzQ2xvc2VkQ2FwdGlvbnMpOwotICAgIElOSVQoUVRNb3ZpZVJlc29sdmVkVVJMKTsKLSAg
ICBJTklUKFFUTW92aWVTZXRTaG93Q2xvc2VkQ2FwdGlvbnMpOwotICAgIElOSVQoUVRNb3ZpZVNl
bGVjdFByZWZlcnJlZEFsdGVybmF0ZXMpOwotICAgIElOSVQoUVRHZXRTaXRlc0luTWVkaWFEb3du
bG9hZENhY2hlKTsKLSAgICBJTklUKFFUQ2xlYXJNZWRpYURvd25sb2FkQ2FjaGVGb3JTaXRlKTsK
LSAgICBJTklUKFFUQ2xlYXJNZWRpYURvd25sb2FkQ2FjaGUpOwotI2VuZGlmCiAKICNpZiAhUExB
VEZPUk0oSU9TKQogICAgIElOSVQoRXhlY3V0YWJsZVdhc0xpbmtlZE9uT3JCZWZvcmVTbm93TGVv
cGFyZCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>320195</attachid>
            <date>2017-09-07 15:55:16 -0700</date>
            <delta_ts>2017-09-07 16:07:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-176472-20170907155516.patch</filename>
            <type>text/plain</type>
            <size>35150</size>
            <attacher name="Andy Estes">aestes</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIxNjg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDY5MjY5MTkxOTNmNWE2
MjdjNmRiYzQyNDFiYTVlY2M3ZDdhNmU3NC4uYWUyODQ1OTMzYzJlNDk2MTVhYTMyOWE1OWI3YTky
YTc0NjNkZmVlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDE3LTA5LTA2ICBBbmR5
IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBbTWFjXSBVcHN0cmVhbSBRVEtp
dC1yZWxhdGVkIFdlYktpdFN5c3RlbUludGVyZmFjZSBmdW5jdGlvbnMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NjQ3MgorCisgICAgICAgIFJldmll
d2VkIGJ5IEVyaWMgQ2FybHNvbi4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9N
ZWRpYVBsYXllclByaXZhdGVRVEtpdC5tbToKKyAgICAgICAgKFdlYkNvcmU6OmRpc2FibGVDb21w
b25lbnRzT25jZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6
Y3JlYXRlUVRNb3ZpZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVRVEtp
dDo6aGFzQ2xvc2VkQ2FwdGlvbnMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5
ZXJQcml2YXRlUVRLaXQ6OnNldENsb3NlZENhcHRpb25zVmlzaWJsZSk6CisgICAgICAgIChXZWJD
b3JlOjpzZWxlY3RQcmVmZXJyZWRBbHRlcm5hdGVUcmFja0Zvck1lZGlhVHlwZSk6CisgICAgICAg
IChXZWJDb3JlOjpzZWxlY3RQcmVmZXJyZWRBbHRlcm5hdGVzKToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0Ojp1cGRhdGVTdGF0ZXMpOgorICAgICAgICAoV2ViQ29y
ZTo6bWltZU1vZGVyblR5cGVzQ2FjaGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQ
cml2YXRlUVRLaXQ6Om9yaWdpbnNJbk1lZGlhQ2FjaGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFQbGF5ZXJQcml2YXRlUVRLaXQ6OmNsZWFyTWVkaWFDYWNoZSk6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6Y2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2lucyk6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6aGFzU2luZ2xlU2VjdXJp
dHlPcmlnaW4gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlUVRL
aXQ6Om1vdmllTG9hZFR5cGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQ
cml2YXRlUVRLaXQ6OmNhblNhdmVNZWRpYURhdGEgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3Jt
L21hYy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmg6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1dl
YkNvcmVTeXN0ZW1JbnRlcmZhY2UubW06CisgICAgICAgICogcGxhdGZvcm0vbWFjL1dlYlZpZGVv
RnVsbHNjcmVlbkhVRFdpbmRvd0NvbnRyb2xsZXIubW06CisgICAgICAgIChjcmVhdGVNZWRpYVVJ
Q29udHJvbCk6CisgICAgICAgIChjcmVhdGVDb250cm9sV2l0aE1lZGlhVUlDb250cm9sVHlwZSk6
CisgICAgICAgIChjcmVhdGVNZWRpYVVJQmFja2dyb3VuZFZpZXcpOgorICAgICAgICAoLVtXZWJW
aWRlb0Z1bGxzY3JlZW5IVURXaW5kb3dDb250cm9sbGVyIHdpbmRvd0RpZExvYWRdKToKKwogMjAx
Ny0wOS0wNiAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgogCiAgICAgICAgIFJFR1JFU1NJ
T04gKHIyMjE1OTgpOiBMZWdhY3kgInJvdW5kIiBhbmQgImJldmVsIiBvcHRpb25zIGNhbiBubyBs
b25nZXIgYmUgdXNlZCB3aXRoIHRoZSBsZWdhY3kgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEIHNl
dExpbmVKb2luIG9wZXJhdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKaW5kZXggZWU0MGU0NjE3NTU5NmJj
NTIyZjMxN2M2YzU5OGRiMDg0YzE3M2M1Ni4uZWVhNzkwNWM1ZWRjMDNhYTgxNzgwMWZjM2NkMGNh
OTAxMjg4MzhiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTctMDkt
MDYgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29tPgorCisgICAgICAgIFtNYWNdIFVwc3Ry
ZWFtIFFUS2l0LXJlbGF0ZWQgV2ViS2l0U3lzdGVtSW50ZXJmYWNlIGZ1bmN0aW9ucworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc2NDcyCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgRXJpYyBDYXJsc29uLgorCisgICAgICAgICogcGFsL3NwaS9tYWMvUVRL
aXRTUEkuaDoKKwogMjAxNy0wOS0wNCAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtp
dC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjIyMTQ5NCBhbmQgcjIy
MTUwMC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKaW5kZXggMzY0ZDhlNWQ4MGQyNTVkNjkzNmZiMmUxYTBiZDQ2MzdhYjU5YTA2
ZS4uZjY3NjU3MTZjZDQ5YzZhMDBjNmY5OWU3ZTQwZjg3NTgyNTg4MjdhOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxMyBAQAorMjAxNy0wOS0wNiAgQW5keSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+
CisKKyAgICAgICAgW01hY10gVXBzdHJlYW0gUVRLaXQtcmVsYXRlZCBXZWJLaXRTeXN0ZW1JbnRl
cmZhY2UgZnVuY3Rpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNzY0NzIKKworICAgICAgICBSZXZpZXdlZCBieSBFcmljIENhcmxzb24uCisKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJTeXN0ZW1JbnRlcmZhY2Uu
bW06CisgICAgICAgIChJbml0V2ViQ29yZVN5c3RlbUludGVyZmFjZSk6CisKIDIwMTctMDktMDYg
IEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CiAKICAgICAgICAgRGVueSB0aGly
ZC1wYXJ0eSBjb29raWUgY3JlYXRpb24gZm9yIHByZXZhbGVudCByZXNvdXJjZXMgd2l0aG91dCBp
bnRlcmFjdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4IDdlNTFlYmFmNmJmZjhl
ZmIxZmNjY2Q4MWQyODQwZmY3MmI0NGM1ZTguLjBhZDdhMmE3MzIxNzY1ZDY0ZWVhYThiYzM2OGYw
M2RiODIzNGQzNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBA
QAorMjAxNy0wOS0wNiAgQW5keSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+CisKKyAgICAgICAg
W01hY10gVXBzdHJlYW0gUVRLaXQtcmVsYXRlZCBXZWJLaXRTeXN0ZW1JbnRlcmZhY2UgZnVuY3Rp
b25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzY0
NzIKKworICAgICAgICBSZXZpZXdlZCBieSBFcmljIENhcmxzb24uCisKKyAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9XZWJTeXN0ZW1JbnRlcmZhY2UubW06CisgICAgICAgIChJbml0V2ViQ29yZVN5
c3RlbUludGVyZmFjZSk6CisKIDIwMTctMDktMDUgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRv
bkBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIHNvbWUgdW51c2VkIGJpdHMgb2YgY29kZSBh
bmQgcmVzb3VyY2VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9tYWMv
UVRLaXRTUEkuaCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL21hYy9RVEtpdFNQSS5oCmlu
ZGV4IDcxNzg5Y2RmMjVkYThhZjQwNGI3MGE0Y2I1MTljMWNhM2Q4NTJlMmYuLjMxYjZiNWNlZjMz
ODRjYmM1ZjFkMGI2YzYzMjc1YWIyOTVjZTNlYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1BBTC9wYWwvc3BpL21hYy9RVEtpdFNQSS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwv
c3BpL21hYy9RVEtpdFNQSS5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTYtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTI1LDggKzI1LDEyIEBACiAKICNwcmFnbWEgb25jZQogCi0jaWYg
VVNFKEFQUExFX0lOVEVSTkFMX1NESykgfHwgX19NQUNfT1NfWF9WRVJTSU9OX01BWF9BTExPV0VE
IDwgMTAxMjAwCi0jaW1wb3J0IDxRVEtpdC9RVEtpdC5oPgorI2lmIFVTRShBUFBMRV9JTlRFUk5B
TF9TREspCisKKyNpbXBvcnQgPFFUS2l0L1FUSFVEQmFja2dyb3VuZFZpZXdfUHJpdmF0ZS5oPgor
I2ltcG9ydCA8UVRLaXQvUVRLaXRfUHJpdmF0ZS5oPgorI2ltcG9ydCA8UVRLaXQvUVRVdGlsaXRp
ZXNfUHJpdmF0ZS5oPgorCiAjZWxzZQogCiBlbnVtIHsKQEAgLTQ2LDggKzUwLDE5IEBAIHR5cGVk
ZWYgc3RydWN0IHsKIAogdHlwZWRlZiBlbnVtIHsKICAgICBRVEluY2x1ZGVDb21tb25UeXBlcyA9
IDAsCisgICAgUVRJbmNsdWRlT25seUZpZ01lZGlhRmlsZVR5cGVzID0gKFFUTW92aWVGaWxlVHlw
ZU9wdGlvbnMpKDEgPDwgOCksCiB9IFFUTW92aWVGaWxlVHlwZU9wdGlvbnM7CiAKK2VudW0gewor
ICAgIFFUTW92aWVUeXBlVW5rbm93biA9IDAsCisgICAgUVRNb3ZpZVR5cGVMb2NhbCwKKyAgICBR
VE1vdmllVHlwZUZhc3RTdGFydCwKKyAgICBRVE1vdmllVHlwZUxpdmVTdHJlYW0sCisgICAgUVRN
b3ZpZVR5cGVTdG9yZWRTdHJlYW0KK307CisKK0BjbGFzcyBRVFRyYWNrOworCiBAaW50ZXJmYWNl
IFFUTWVkaWEgOiBOU09iamVjdAogCiAtIChpZClhdHRyaWJ1dGVGb3JLZXk6KE5TU3RyaW5nICop
YXR0cmlidXRlS2V5OwpAQCAtNTgsNiArNzMsOCBAQCB0eXBlZGVmIGVudW0gewogCiArIChOU0Fy
cmF5ICopbW92aWVGaWxlVHlwZXM6KFFUTW92aWVGaWxlVHlwZU9wdGlvbnMpdHlwZXM7CiAKKysg
KHZvaWQpZGlzYWJsZUNvbXBvbmVudDooQ29tcG9uZW50RGVzY3JpcHRpb24pY29tcG9uZW50Owor
CiAtIChpZClpbml0V2l0aEF0dHJpYnV0ZXM6KE5TRGljdGlvbmFyeSAqKWF0dHJpYnV0ZXMgZXJy
b3I6KE5TRXJyb3IgKiopZXJyb3JQdHI7CiAKIC0gKHZvaWQpcGxheTsKQEAgLTgxLDYgKzk4LDE0
IEBAIHR5cGVkZWYgZW51bSB7CiAKIC0gKE5TQXJyYXkgKil0cmFja3M7CiAKKy0gKE5TQXJyYXkg
KilhbHRlcm5hdGVHcm91cFR5cGVzOworLSAoTlNBcnJheSAqKWFsdGVybmF0ZXNGb3JNZWRpYVR5
cGU6KE5TU3RyaW5nICopdHlwZTsKKy0gKHZvaWQpZGVzZWxlY3RBbHRlcm5hdGVHcm91cFRyYWNr
OihRVFRyYWNrICopYWx0ZXJuYXRlVHJhY2s7CistICh2b2lkKXNlbGVjdEFsdGVybmF0ZUdyb3Vw
VHJhY2s6KFFUVHJhY2sgKilhbHRlcm5hdGVUcmFjazsKKworLSAoTlNVUkwgKilVUkw7CistIChV
SW50MzIpbW92aWVUeXBlOworCiBAZW5kCiAKIEBpbnRlcmZhY2UgUVRNb3ZpZUxheWVyIDogQ0FM
YXllcgpAQCAtMTA2LDQgKzEzMSwyMCBAQCB0eXBlZGVmIGVudW0gewogCiBAZW5kCiAKK0BpbnRl
cmZhY2UgUVRIVURCYWNrZ3JvdW5kVmlldyA6IE5TVmlldworCistICh2b2lkKXNldENvbnRlbnRC
b3JkZXJQb3NpdGlvbjooQ0dGbG9hdCljb250ZW50Qm9yZGVyUG9zaXRpb247CisKK0BlbmQKKwor
QGludGVyZmFjZSBRVFV0aWxpdGllcyA6IE5TT2JqZWN0CisKKysgKGlkKXF0VXRpbGl0aWVzOwor
CistIChOU0FycmF5ICopc2l0ZXNJbkRvd25sb2FkQ2FjaGU7CistICh2b2lkKWNsZWFyRG93bmxv
YWRDYWNoZTsKKy0gKHZvaWQpY2xlYXJEb3dubG9hZENhY2hlRm9yU2l0ZTooTlNTdHJpbmcgKilz
aXRlOworCitAZW5kCisKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvbWFjL01lZGlhUGxheWVyUHJpdmF0ZVFUS2l0Lm1tIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL01lZGlhUGxheWVyUHJpdmF0ZVFUS2l0Lm1tCmluZGV4
IDg1Y2Y1NjFkNzMzMTc5Njc2ZWNmOGU5ZmRhYTM2ZmMwZTdlNThiMDEuLjYxZjA5YjM4NGQ5NTE0
MmM2MjczYTQxZWQ1Yjc4NWNiMWM1YzlhYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL21hYy9NZWRpYVBsYXllclByaXZhdGVRVEtpdC5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQu
bW0KQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDA4LCAyMDA5
LCAyMDEwLCAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAwNy0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNTIsNiArNTIsNyBAQCBTT0ZUX0xJTksoUVRLaXQs
IFFUTWFrZVRpbWUsIFFUVGltZSwgKGxvbmcgbG9uZyB0aW1lVmFsdWUsIGxvbmcgdGltZVNjYWxl
KSwgKHRpbQogCiBTT0ZUX0xJTktfQ0xBU1MoUVRLaXQsIFFUTW92aWUpCiBTT0ZUX0xJTktfQ0xB
U1MoUVRLaXQsIFFUTW92aWVMYXllcikKK1NPRlRfTElOS19DTEFTUyhRVEtpdCwgUVRVdGlsaXRp
ZXMpCiAKIFNPRlRfTElOS19QT0lOVEVSKFFUS2l0LCBRVFRyYWNrTWVkaWFUeXBlQXR0cmlidXRl
LCBOU1N0cmluZyAqKQogU09GVF9MSU5LX1BPSU5URVIoUVRLaXQsIFFUTWVkaWFUeXBlQXR0cmli
dXRlLCBOU1N0cmluZyAqKQpAQCAtNzEsNiArNzIsNyBAQCBTT0ZUX0xJTktfUE9JTlRFUihRVEtp
dCwgUVRNb3ZpZUlzQWN0aXZlQXR0cmlidXRlLCBOU1N0cmluZyAqKQogU09GVF9MSU5LX1BPSU5U
RVIoUVRLaXQsIFFUTW92aWVMb2FkU3RhdGVBdHRyaWJ1dGUsIE5TU3RyaW5nICopCiBTT0ZUX0xJ
TktfUE9JTlRFUihRVEtpdCwgUVRNb3ZpZUxvYWRTdGF0ZUVycm9yQXR0cmlidXRlLCBOU1N0cmlu
ZyAqKQogU09GVF9MSU5LX1BPSU5URVIoUVRLaXQsIFFUTW92aWVMb2FkU3RhdGVEaWRDaGFuZ2VO
b3RpZmljYXRpb24sIE5TU3RyaW5nICopCitTT0ZUX0xJTktfUE9JTlRFUihRVEtpdCwgUVRNb3Zp
ZUxvYWRlZFJhbmdlc0RpZENoYW5nZU5vdGlmaWNhdGlvbiwgTlNTdHJpbmcgKik7CiBTT0ZUX0xJ
TktfUE9JTlRFUihRVEtpdCwgUVRNb3ZpZU5hdHVyYWxTaXplQXR0cmlidXRlLCBOU1N0cmluZyAq
KQogU09GVF9MSU5LX1BPSU5URVIoUVRLaXQsIFFUTW92aWVDdXJyZW50U2l6ZUF0dHJpYnV0ZSwg
TlNTdHJpbmcgKikKIFNPRlRfTElOS19QT0lOVEVSKFFUS2l0LCBRVE1vdmllUHJldmVudEV4dGVy
bmFsVVJMTGlua3NBdHRyaWJ1dGUsIE5TU3RyaW5nICopCkBAIC05NSw4ICs5Nyw4IEBAIC0gKE5T
QXJyYXkgKilhdmFpbGFibGVSYW5nZXM7CiAtIChOU0FycmF5ICopbG9hZGVkUmFuZ2VzOwogQGVu
ZAogCi0jZGVmaW5lIFFUTW92aWUgZ2V0UVRNb3ZpZUNsYXNzKCkKICNkZWZpbmUgUVRNb3ZpZUxh
eWVyIGdldFFUTW92aWVMYXllckNsYXNzKCkKKyNkZWZpbmUgUVRVdGlsaXRpZXMgZ2V0UVRVdGls
aXRpZXNDbGFzcygpCiAKICNkZWZpbmUgUVRUcmFja01lZGlhVHlwZUF0dHJpYnV0ZSBnZXRRVFRy
YWNrTWVkaWFUeXBlQXR0cmlidXRlKCkKICNkZWZpbmUgUVRNZWRpYVR5cGVBdHRyaWJ1dGUgZ2V0
UVRNZWRpYVR5cGVBdHRyaWJ1dGUoKQpAQCAtMTE2LDYgKzExOCw3IEBAIEBlbmQKICNkZWZpbmUg
UVRNb3ZpZUxvYWRTdGF0ZUF0dHJpYnV0ZSBnZXRRVE1vdmllTG9hZFN0YXRlQXR0cmlidXRlKCkK
ICNkZWZpbmUgUVRNb3ZpZUxvYWRTdGF0ZUVycm9yQXR0cmlidXRlIGdldFFUTW92aWVMb2FkU3Rh
dGVFcnJvckF0dHJpYnV0ZSgpCiAjZGVmaW5lIFFUTW92aWVMb2FkU3RhdGVEaWRDaGFuZ2VOb3Rp
ZmljYXRpb24gZ2V0UVRNb3ZpZUxvYWRTdGF0ZURpZENoYW5nZU5vdGlmaWNhdGlvbigpCisjZGVm
aW5lIFFUTW92aWVMb2FkZWRSYW5nZXNEaWRDaGFuZ2VOb3RpZmljYXRpb24gZ2V0UVRNb3ZpZUxv
YWRlZFJhbmdlc0RpZENoYW5nZU5vdGlmaWNhdGlvbigpCiAjZGVmaW5lIFFUTW92aWVOYXR1cmFs
U2l6ZUF0dHJpYnV0ZSBnZXRRVE1vdmllTmF0dXJhbFNpemVBdHRyaWJ1dGUoKQogI2RlZmluZSBR
VE1vdmllQ3VycmVudFNpemVBdHRyaWJ1dGUgZ2V0UVRNb3ZpZUN1cnJlbnRTaXplQXR0cmlidXRl
KCkKICNkZWZpbmUgUVRNb3ZpZVByZXZlbnRFeHRlcm5hbFVSTExpbmtzQXR0cmlidXRlIGdldFFU
TW92aWVQcmV2ZW50RXh0ZXJuYWxVUkxMaW5rc0F0dHJpYnV0ZSgpCkBAIC0yOTIsNyArMjk1LDcg
QEAgc3RhdGljIHZvaWQgZGlzYWJsZUNvbXBvbmVudHNPbmNlKCkKICAgICAvLyBRVEtpdFNlcnZl
ciBoYXMgbm90IHlldCBzdGFydGVkLiAgQXMgYSByZXN1bHQsIHdlIG11c3QgcGFzcyBpbiBleGFj
dGx5IHRoZSBmbGFncyB3ZSB3YW50IHRvCiAgICAgLy8gZGlzYWJsZSBwZXIgY29tcG9uZW50LiAg
QXMgYSBmYWlsc2FmZSwgaWYgaW4gdGhlIGZ1dHVyZSB0aGVzZSBmbGFncyBjaGFuZ2UsIHdlIHdp
bGwgZGlzYWJsZSB0aGUKICAgICAvLyBQREYgY29tcG9uZW50cyBmb3IgYSB0aGlyZCB0aW1lIHdp
dGggYSB3aWxkY2FyZCBmbGFncyBmaWVsZDoKLSAgICB1aW50MzJfdCBjb21wb25lbnRzVG9EaXNh
YmxlWzExXVs1XSA9IHsKKyAgICBDb21wb25lbnREZXNjcmlwdGlvbiBjb21wb25lbnRzVG9EaXNh
YmxlWzExXSA9IHsKICAgICAgICAgeydlYXQgJywgJ1RFWFQnLCAndGV4dCcsIDAsIDB9LAogICAg
ICAgICB7J2VhdCAnLCAnVFhUICcsICd0ZXh0JywgMCwgMH0sICAgIAogICAgICAgICB7J2VhdCAn
LCAndXR4dCcsICd0ZXh0JywgMCwgMH0sICAKQEAgLTMwNyw3ICszMTAsNyBAQCBzdGF0aWMgdm9p
ZCBkaXNhYmxlQ29tcG9uZW50c09uY2UoKQogICAgIH07CiAKICAgICBmb3IgKGF1dG8mIGNvbXBv
bmVudCA6IGNvbXBvbmVudHNUb0Rpc2FibGUpCi0gICAgICAgIHdrUVRNb3ZpZURpc2FibGVDb21w
b25lbnQoY29tcG9uZW50KTsKKyAgICAgICAgW2dldFFUTW92aWVDbGFzcygpIGRpc2FibGVDb21w
b25lbnQ6Y29tcG9uZW50XTsKIH0KIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6Y3Jl
YXRlUVRNb3ZpZShOU1VSTCAqdXJsLCBOU0RpY3Rpb25hcnkgKm1vdmllQXR0cmlidXRlcykKQEAg
LTM0NSwxNCArMzQ4LDEwIEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6OmNyZWF0ZVFU
TW92aWUoTlNVUkwgKnVybCwgTlNEaWN0aW9uYXJ5ICptb3ZpZUF0dHJpCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9iamVjdDptX3F0TW92aWUuZ2V0KCld
OwogCiAgICAgLy8gSW4gdXBkYXRlU3RhdGUoKSwgd2UgdHJhY2sgd2hlbiBtYXhUaW1lTG9hZGVk
KCkgPT0gZHVyYXRpb24oKS4KLSAgICAvLyBJbiBuZXdlciB2ZXJzaW9uIG9mIFF1aWNrVGltZSwg
YSBub3RpZmljYXRpb24gaXMgZW1pdHRlZCB3aGVuIG1heFRpbWVMb2FkZWQgY2hhbmdlcy4KLSAg
ICAvLyBJbiBvbGRlciB2ZXJzaW9uIG9mIFF1aWNrVGltZSwgUVRNb3ZpZUxvYWRTdGF0ZURpZENo
YW5nZU5vdGlmaWNhdGlvbiBiZSBmaXJlZC4KLSAgICBpZiAoTlNTdHJpbmcgKm1heFRpbWVMb2Fk
ZWRDaGFuZ2VOb3RpZmljYXRpb24gPSB3a1FUTW92aWVNYXhUaW1lTG9hZGVkQ2hhbmdlTm90aWZp
Y2F0aW9uKCkpIHsKLSAgICAgICAgW1tOU05vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVy
XSBhZGRPYnNlcnZlcjptX29iamNPYnNlcnZlci5nZXQoKQotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdG9yOkBzZWxlY3Rvcihsb2FkZWRSYW5n
ZXNDaGFuZ2VkOikKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbmFtZTptYXhUaW1lTG9hZGVkQ2hhbmdlTm90aWZpY2F0aW9uCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYmplY3Q6bV9xdE1vdmll
LmdldCgpXTsgICAgICAgIAotICAgIH0KKyAgICBbW05TTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1
bHRDZW50ZXJdIGFkZE9ic2VydmVyOm1fb2JqY09ic2VydmVyLmdldCgpCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RvcjpAc2VsZWN0b3IobG9hZGVk
UmFuZ2VzQ2hhbmdlZDopCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbmFtZTpRVE1vdmllTG9hZGVkUmFuZ2VzRGlkQ2hhbmdlTm90aWZpY2F0aW9uCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9iamVjdDptX3F0
TW92aWUuZ2V0KCldOwogCiAgICAgW1tOU05vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVy
XSBhZGRPYnNlcnZlcjptX29iamNPYnNlcnZlci5nZXQoKQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0b3I6QHNlbGVjdG9yKHJhdGVDaGFuZ2VkOikg
CkBAIC03NzEsMTggKzc3MCwzMCBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0OjpoYXND
bG9zZWRDYXB0aW9ucygpIGNvbnN0CiB7CiAgICAgaWYgKCFtZXRhRGF0YUF2YWlsYWJsZSgpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIHdrUVRNb3ZpZUhhc0Nsb3NlZENhcHRp
b25zKG1fcXRNb3ZpZS5nZXQoKSk7ICAKKyAgICByZXR1cm4gW1ttX3F0TW92aWUgYWx0ZXJuYXRl
R3JvdXBUeXBlc10gY29udGFpbnNPYmplY3Q6QCJjbGNwIl07CiB9CiAKIHZvaWQgTWVkaWFQbGF5
ZXJQcml2YXRlUVRLaXQ6OnNldENsb3NlZENhcHRpb25zVmlzaWJsZShib29sIGNsb3NlZENhcHRp
b25zVmlzaWJsZSkKIHsKLSAgICBpZiAobWV0YURhdGFBdmFpbGFibGUoKSkgewotICAgICAgICB3
a1FUTW92aWVTZXRTaG93Q2xvc2VkQ2FwdGlvbnMobV9xdE1vdmllLmdldCgpLCBjbG9zZWRDYXB0
aW9uc1Zpc2libGUpOworICAgIGlmICghbWV0YURhdGFBdmFpbGFibGUoKSkKKyAgICAgICAgcmV0
dXJuOwogCi0gICAgICAgIGlmIChjbG9zZWRDYXB0aW9uc1Zpc2libGUgJiYgbV9xdFZpZGVvTGF5
ZXIpIHsKLSAgICAgICAgICAgIC8vIENhcHRpb25zIHdpbGwgYmUgcmVuZGVyZWQgdXBzaWRlIGRv
d24gdW5sZXNzIHdlIGZsYWcgdGhlIG1vdmllIGFzIGZsaXBwZWQgKGFnYWluKS4gU2VlIDxyZGFy
Oi8vNzQwODQ0MD4uCi0gICAgICAgICAgICBbbV9xdFZpZGVvTGF5ZXIuZ2V0KCkgc2V0R2VvbWV0
cnlGbGlwcGVkOllFU107Ci0gICAgICAgIH0KKyAgICBpZiAoIVtbbV9xdE1vdmllIGFsdGVybmF0
ZUdyb3VwVHlwZXNdIGNvbnRhaW5zT2JqZWN0OkAiY2xjcCJdKQorICAgICAgICByZXR1cm47CisK
KyAgICBOU0FycmF5ICp0cmFja0FsdGVybmF0ZXNBcnJheSA9IFttX3F0TW92aWUgYWx0ZXJuYXRl
c0Zvck1lZGlhVHlwZTpAImNsY3AiXTsKKyAgICBRVFRyYWNrICp0cmFjayA9IHRyYWNrQWx0ZXJu
YXRlc0FycmF5WzBdW0AiUVRBbHRlcm5hdGVzX1FUVHJhY2siXTsKKyAgICBpZiAoIXRyYWNrKQor
ICAgICAgICByZXR1cm47CisKKyAgICBpZiAoIWNsb3NlZENhcHRpb25zVmlzaWJsZSkKKyAgICAg
ICAgW21fcXRNb3ZpZSBkZXNlbGVjdEFsdGVybmF0ZUdyb3VwVHJhY2s6dHJhY2tdOworICAgIGVs
c2UKKyAgICAgICAgW21fcXRNb3ZpZSBzZWxlY3RBbHRlcm5hdGVHcm91cFRyYWNrOnRyYWNrXTsK
KworICAgIGlmIChjbG9zZWRDYXB0aW9uc1Zpc2libGUgJiYgbV9xdFZpZGVvTGF5ZXIpIHsKKyAg
ICAgICAgLy8gQ2FwdGlvbnMgd2lsbCBiZSByZW5kZXJlZCB1cHNpZGUgZG93biB1bmxlc3Mgd2Ug
ZmxhZyB0aGUgbW92aWUgYXMgZmxpcHBlZCAoYWdhaW4pLiBTZWUgPHJkYXI6Ly83NDA4NDQwPi4K
KyAgICAgICAgW21fcXRWaWRlb0xheWVyLmdldCgpIHNldEdlb21ldHJ5RmxpcHBlZDpZRVNdOwog
ICAgIH0KIH0KIApAQCAtOTQxLDYgKzk1Miw1OCBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVFU
S2l0OjpwcmVwYXJlRm9yUmVuZGVyaW5nKCkKICAgICAgICAgbV9wbGF5ZXItPmNsaWVudCgpLm1l
ZGlhUGxheWVyUmVuZGVyaW5nTW9kZUNoYW5nZWQobV9wbGF5ZXIpOwogfQogCitzdGF0aWMgdm9p
ZCBzZWxlY3RQcmVmZXJyZWRBbHRlcm5hdGVUcmFja0Zvck1lZGlhVHlwZShRVE1vdmllICptb3Zp
ZSwgTlNTdHJpbmcgKm1lZGlhVHlwZSkKK3sKKyAgICBOU0FycmF5ICphbHRlcm5hdGVzID0gW21v
dmllIGFsdGVybmF0ZXNGb3JNZWRpYVR5cGU6bWVkaWFUeXBlXTsKKyAgICBpZiAoIWFsdGVybmF0
ZXMuY291bnQpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gbGFuZ3VhZ2VUb1FUVHJhY2tN
YXAgPSBhZG9wdE5TKFtbTlNNdXRhYmxlRGljdGlvbmFyeSBhbGxvY10gaW5pdFdpdGhDYXBhY2l0
eTphbHRlcm5hdGVzLmNvdW50XSk7CisKKyAgICBmb3IgKE5TVUludGVnZXIgaW5kZXggPSAwOyBp
bmRleCA8IGFsdGVybmF0ZXMuY291bnQ7ICsraW5kZXgpIHsKKyAgICAgICAgTlNEaWN0aW9uYXJ5
ICphbHRlcm5hdGVEaWN0ID0gYWx0ZXJuYXRlc1tpbmRleF07CisgICAgICAgIE5TU3RyaW5nICps
YW5ndWFnZVN0cmluZyA9IGFsdGVybmF0ZURpY3RbQCJRVEFsdGVybmF0ZXNfTGFuZ3VhZ2VDb2Rl
RW5jb2RpbmdfSVNPXzYzOV8yVCJdOworICAgICAgICBpZiAoIVtsYW5ndWFnZVN0cmluZyBjU3Ry
aW5nVXNpbmdFbmNvZGluZzprQ0ZTdHJpbmdFbmNvZGluZ0FTQ0lJXSkKKyAgICAgICAgICAgIGNv
bnRpbnVlOworICAgICAgICBpZiAoIWxhbmd1YWdlU3RyaW5nKQorICAgICAgICAgICAgbGFuZ3Vh
Z2VTdHJpbmcgPSBhbHRlcm5hdGVEaWN0W0AiUVRBbHRlcm5hdGVzX0xhbmd1YWdlQ29kZUVuY29k
aW5nX1JGQ180NjQ2Il07CisgICAgICAgIGlmICghbGFuZ3VhZ2VTdHJpbmcpIHsKKyAgICAgICAg
ICAgIExhbmdDb2RlIGxhbmdDb2RlID0gW2FsdGVybmF0ZURpY3RbQCJRVEFsdGVybmF0ZXNfTGFu
Z3VhZ2VDb2RlRW5jb2RpbmdfTWFjVHlwZV9MYW5nQ29kZSJdIGludFZhbHVlXTsKKyAgICAgICAg
ICAgIGF1dG8gaWRlbnRpZmllciA9IGFkb3B0Q0YoQ0ZMb2NhbGVDcmVhdGVDYW5vbmljYWxMb2Nh
bGVJZGVudGlmaWVyRnJvbVNjcmlwdE1hbmFnZXJDb2RlcyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBs
YW5nQ29kZSwgMCkpOworICAgICAgICAgICAgbGFuZ3VhZ2VTdHJpbmcgPSAoTlNTdHJpbmcgKilp
ZGVudGlmaWVyLmF1dG9yZWxlYXNlKCk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKCFsYW5ndWFn
ZVN0cmluZykKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIGlkIGFsdGVybmF0ZVRy
YWNrID0gYWx0ZXJuYXRlRGljdFtAIlFUQWx0ZXJuYXRlc19RVFRyYWNrIl07CisgICAgICAgIGlm
ICghYWx0ZXJuYXRlVHJhY2spCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBpZiAo
IVtbYWx0ZXJuYXRlVHJhY2sgYXR0cmlidXRlRm9yS2V5OkAiUVRUcmFja0VuYWJsZWRBdHRyaWJ1
dGUiXSBib29sVmFsdWVdKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgW2xhbmd1
YWdlVG9RVFRyYWNrTWFwIHNldE9iamVjdDphbHRlcm5hdGVUcmFjayBmb3JLZXk6bGFuZ3VhZ2VT
dHJpbmddOworICAgIH0KKworICAgIE5TQXJyYXkgKnByZWZlcnJlZExhbmd1YWdlcyA9IFtOU0J1
bmRsZSBwcmVmZXJyZWRMb2NhbGl6YXRpb25zRnJvbUFycmF5OltsYW5ndWFnZVRvUVRUcmFja01h
cCBhbGxLZXlzXSBmb3JQcmVmZXJlbmNlczpuaWxdOworICAgIGlmIChwcmVmZXJyZWRMYW5ndWFn
ZXMuY291bnQpIHsKKyAgICAgICAgaWQgcHJlZmVycmVkVHJhY2sgPSBbbGFuZ3VhZ2VUb1FUVHJh
Y2tNYXAgb2JqZWN0Rm9yS2V5OnByZWZlcnJlZExhbmd1YWdlc1swXV07CisgICAgICAgIGlmIChw
cmVmZXJyZWRUcmFjaykgeworICAgICAgICAgICAgLy8gK1tOU0J1bmRsZSBwcmVmZXJyZWRMb2Nh
bGl6YXRpb25zRnJvbUFycmF5OmZvclByZWZlcmVuY2VzXSBtYXkgcmV0dXJuIGEgbGFuZ3VhZ2Ug
d2hpY2ggd2FzCisgICAgICAgICAgICAvLyBub3QgcHJlc2VudCBpbiBwcmVmZXJyZWRMYW5ndWFn
ZXMsIGFuZCB3aWxsIHRoZXJlZm9yZSBub3QgaGF2ZSBhbiBhc3NvY2lhdGVkIHRyYWNrLgorICAg
ICAgICAgICAgW21vdmllIHNlbGVjdEFsdGVybmF0ZUdyb3VwVHJhY2s6cHJlZmVycmVkVHJhY2td
OworICAgICAgICB9CisgICAgfQorfQorCitzdGF0aWMgdm9pZCBzZWxlY3RQcmVmZXJyZWRBbHRl
cm5hdGVzKFFUTW92aWUgKm1vdmllKQoreworICAgIHNlbGVjdFByZWZlcnJlZEFsdGVybmF0ZVRy
YWNrRm9yTWVkaWFUeXBlKG1vdmllLCBAInZpZGUiKTsKKyAgICBzZWxlY3RQcmVmZXJyZWRBbHRl
cm5hdGVUcmFja0Zvck1lZGlhVHlwZShtb3ZpZSwgQCJzb3VuIik7CisgICAgc2VsZWN0UHJlZmVy
cmVkQWx0ZXJuYXRlVHJhY2tGb3JNZWRpYVR5cGUobW92aWUsIEAiY3BscCIpOworICAgIHNlbGVj
dFByZWZlcnJlZEFsdGVybmF0ZVRyYWNrRm9yTWVkaWFUeXBlKG1vdmllLCBAInNidGwiKTsKK30K
Kwogdm9pZCBNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6dXBkYXRlU3RhdGVzKCkKIHsKICAgICBN
ZWRpYVBsYXllcjo6TmV0d29ya1N0YXRlIG9sZE5ldHdvcmtTdGF0ZSA9IG1fbmV0d29ya1N0YXRl
OwpAQCAtOTY1LDcgKzEwMjgsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0Ojp1cGRh
dGVTdGF0ZXMoKQogICAgICAgICAgICAgbG9hZFN0YXRlID0gUVRNb3ZpZUxvYWRTdGF0ZUVycm9y
OwogCiAgICAgICAgIGlmIChsb2FkU3RhdGUgIT0gUVRNb3ZpZUxvYWRTdGF0ZUVycm9yKSB7Ci0g
ICAgICAgICAgICB3a1FUTW92aWVTZWxlY3RQcmVmZXJyZWRBbHRlcm5hdGVzKG1fcXRNb3ZpZS5n
ZXQoKSk7CisgICAgICAgICAgICBzZWxlY3RQcmVmZXJyZWRBbHRlcm5hdGVzKG1fcXRNb3ZpZS5n
ZXQoKSk7CiAgICAgICAgICAgICBjYWNoZU1vdmllU2NhbGUoKTsKICAgICAgICAgICAgIE1lZGlh
UGxheWVyOjpNb3ZpZUxvYWRUeXBlIG1vdmllVHlwZSA9IG1vdmllTG9hZFR5cGUoKTsKICAgICAg
ICAgICAgIG1faXNTdHJlYW1pbmcgPSBtb3ZpZVR5cGUgPT0gTWVkaWFQbGF5ZXI6OlN0b3JlZFN0
cmVhbSB8fCBtb3ZpZVR5cGUgPT0gTWVkaWFQbGF5ZXI6OkxpdmVTdHJlYW07CkBAIC0xMjY3LDEz
ICsxMzMwLDEzIEBAIHN0YXRpYyBIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVI
YXNoPiBjcmVhdGVGaWxlVHlwZXNTZXQoTlNBcnJheSAqZmlsCiAKIHN0YXRpYyBjb25zdCBIYXNo
U2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiYgbWltZUNvbW1vblR5cGVzQ2Fj
aGUoKQogewotICAgIHN0YXRpYyBjb25zdCBhdXRvIGNhY2hlID0gbWFrZU5ldmVyRGVzdHJveWVk
KGNyZWF0ZUZpbGVUeXBlc1NldChbUVRNb3ZpZSBtb3ZpZUZpbGVUeXBlczpRVEluY2x1ZGVDb21t
b25UeXBlc10pKTsKKyAgICBzdGF0aWMgY29uc3QgYXV0byBjYWNoZSA9IG1ha2VOZXZlckRlc3Ry
b3llZChjcmVhdGVGaWxlVHlwZXNTZXQoW2dldFFUTW92aWVDbGFzcygpIG1vdmllRmlsZVR5cGVz
OlFUSW5jbHVkZUNvbW1vblR5cGVzXSkpOwogICAgIHJldHVybiBjYWNoZTsKIH0gCiAKIHN0YXRp
YyBjb25zdCBIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiYgbWltZU1v
ZGVyblR5cGVzQ2FjaGUoKQogewotICAgIHN0YXRpYyBjb25zdCBhdXRvIGNhY2hlID0gbWFrZU5l
dmVyRGVzdHJveWVkKGNyZWF0ZUZpbGVUeXBlc1NldChbUVRNb3ZpZSBtb3ZpZUZpbGVUeXBlczoo
UVRNb3ZpZUZpbGVUeXBlT3B0aW9ucyl3a1FUSW5jbHVkZU9ubHlNb2Rlcm5NZWRpYUZpbGVUeXBl
cygpXSkpOworICAgIHN0YXRpYyBjb25zdCBhdXRvIGNhY2hlID0gbWFrZU5ldmVyRGVzdHJveWVk
KGNyZWF0ZUZpbGVUeXBlc1NldChbZ2V0UVRNb3ZpZUNsYXNzKCkgbW92aWVGaWxlVHlwZXM6UVRJ
bmNsdWRlT25seUZpZ01lZGlhRmlsZVR5cGVzXSkpOwogICAgIHJldHVybiBjYWNoZTsKIH0KIApA
QCAtMTMyNCw3ICsxMzg3LDcgQEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6aXNBdmFp
bGFibGUoKQogSGFzaFNldDxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+PiBNZWRpYVBsYXllclByaXZh
dGVRVEtpdDo6b3JpZ2luc0luTWVkaWFDYWNoZShjb25zdCBTdHJpbmcmKQogewogICAgIEhhc2hT
ZXQ8UmVmUHRyPFNlY3VyaXR5T3JpZ2luPj4gb3JpZ2luczsKLSAgICBOU0FycmF5ICptZWRpYVNp
dGVzID0gd2tRVEdldFNpdGVzSW5NZWRpYURvd25sb2FkQ2FjaGUoKTsKKyAgICBOU0FycmF5ICpt
ZWRpYVNpdGVzID0gW1tRVFV0aWxpdGllcyBxdFV0aWxpdGllc10gc2l0ZXNJbkRvd25sb2FkQ2Fj
aGVdOwogICAgIAogICAgIGZvciAoTlNTdHJpbmcgKnNpdGUgaW4gbWVkaWFTaXRlcykgewogICAg
ICAgICBVUkwgc2l0ZUFzVVJMID0gVVJMKFVSTCgpLCBzaXRlKTsKQEAgLTEzMzcsMTQgKzE0MDAs
MTQgQEAgSGFzaFNldDxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+PiBNZWRpYVBsYXllclByaXZhdGVR
VEtpdDo6b3JpZ2luc0luTWVkaWFDYWNoZShjb24KIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUVRL
aXQ6OmNsZWFyTWVkaWFDYWNoZShjb25zdCBTdHJpbmcmLCBzdGQ6OmNocm9ubzo6c3lzdGVtX2Ns
b2NrOjp0aW1lX3BvaW50KQogewogICAgIExPRyhNZWRpYSwgIk1lZGlhUGxheWVyUHJpdmF0ZVFU
S2l0OjpjbGVhck1lZGlhQ2FjaGUoKSIpOwotICAgIHdrUVRDbGVhck1lZGlhRG93bmxvYWRDYWNo
ZSgpOworICAgIFtbUVRVdGlsaXRpZXMgcXRVdGlsaXRpZXNdIGNsZWFyRG93bmxvYWRDYWNoZV07
CiB9CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6OmNsZWFyTWVkaWFDYWNoZUZvck9y
aWdpbnMoY29uc3QgU3RyaW5nJiwgY29uc3QgSGFzaFNldDxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+
PiYgb3JpZ2lucykKIHsKICAgICBMT0coTWVkaWEsICJNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6
Y2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2lucygpIik7CiAgICAgZm9yIChhdXRvJiBvcmlnaW4gOiBv
cmlnaW5zKQotICAgICAgICB3a1FUQ2xlYXJNZWRpYURvd25sb2FkQ2FjaGVGb3JTaXRlKG9yaWdp
bi0+dG9SYXdTdHJpbmcoKSk7CisgICAgICAgIFtbUVRVdGlsaXRpZXMgcXRVdGlsaXRpZXNdIGNs
ZWFyRG93bmxvYWRDYWNoZUZvclNpdGU6b3JpZ2luLT50b1Jhd1N0cmluZygpXTsKIH0KIAogdm9p
ZCBNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6ZGlzYWJsZVVuc3VwcG9ydGVkVHJhY2tzKCkKQEAg
LTE0NjgsNyArMTUzMSw3IEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6Omhhc1Npbmds
ZVNlY3VyaXR5T3JpZ2luKCkgY29uc3QKICAgICBpZiAoIW1fcXRNb3ZpZSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCi0gICAgUmVmPFNlY3VyaXR5T3JpZ2luPiByZXNvbHZlZE9yaWdpbiA9IFNl
Y3VyaXR5T3JpZ2luOjpjcmVhdGUoVVJMKHdrUVRNb3ZpZVJlc29sdmVkVVJMKG1fcXRNb3ZpZS5n
ZXQoKSkpKTsKKyAgICBSZWY8U2VjdXJpdHlPcmlnaW4+IHJlc29sdmVkT3JpZ2luID0gU2VjdXJp
dHlPcmlnaW46OmNyZWF0ZShVUkwoW21fcXRNb3ZpZSBVUkxdKSk7CiAgICAgUmVmPFNlY3VyaXR5
T3JpZ2luPiByZXF1ZXN0ZWRPcmlnaW4gPSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbVN0cmlu
ZyhtX21vdmllVVJMKTsKICAgICByZXR1cm4gcmVzb2x2ZWRPcmlnaW4tPmlzU2FtZVNjaGVtZUhv
c3RQb3J0KHJlcXVlc3RlZE9yaWdpbi5nZXQoKSk7CiB9CkBAIC0xNDc2LDE1ICsxNTM5LDIxIEBA
IGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6Omhhc1NpbmdsZVNlY3VyaXR5T3JpZ2luKCkg
Y29uc3QKIE1lZGlhUGxheWVyOjpNb3ZpZUxvYWRUeXBlIE1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0
Ojptb3ZpZUxvYWRUeXBlKCkgY29uc3QKIHsKICAgICBpZiAoIW1fcXRNb3ZpZSkKLSAgICAgICAg
cmV0dXJuIE1lZGlhUGxheWVyOjpVbmtub3duOwotCi0gICAgTWVkaWFQbGF5ZXI6Ok1vdmllTG9h
ZFR5cGUgbW92aWVUeXBlID0gKE1lZGlhUGxheWVyOjpNb3ZpZUxvYWRUeXBlKXdrUVRNb3ZpZUdl
dFR5cGUobV9xdE1vdmllLmdldCgpKTsKLQotICAgIC8vIENhbid0IGluY2x1ZGUgV2ViS2l0U3lz
dGVtSW50ZXJmYWNlIGZyb20gV2ViQ29yZSBzbyB3ZSBjYW4ndCBnZXQgdGhlIGVudW0gcmV0dXJu
ZWQKLSAgICAvLyBieSB3a1FUTW92aWVHZXRUeXBlLCBidXQgYXQgbGVhc3QgdmVyaWZ5IHRoYXQg
dGhlIHZhbHVlIGlzIGluIHRoZSB2YWxpZCByYW5nZS4KLSAgICBBU1NFUlQobW92aWVUeXBlID49
IE1lZGlhUGxheWVyOjpVbmtub3duICYmIG1vdmllVHlwZSA8PSBNZWRpYVBsYXllcjo6TGl2ZVN0
cmVhbSk7Ci0KLSAgICByZXR1cm4gbW92aWVUeXBlOworICAgICAgICByZXR1cm4gTWVkaWFQbGF5
ZXI6Ok1vdmllTG9hZFR5cGU6OlVua25vd247CisKKyAgICBVSW50MzIgbW92aWVUeXBlID0gW21f
cXRNb3ZpZSBtb3ZpZVR5cGVdOworICAgIHN3aXRjaCAobW92aWVUeXBlKSB7CisgICAgY2FzZSBR
VE1vdmllVHlwZUxvY2FsOgorICAgIGNhc2UgUVRNb3ZpZVR5cGVGYXN0U3RhcnQ6CisgICAgICAg
IHJldHVybiBNZWRpYVBsYXllcjo6TW92aWVMb2FkVHlwZTo6RG93bmxvYWQ7CisgICAgY2FzZSBR
VE1vdmllVHlwZUxpdmVTdHJlYW06CisgICAgICAgIHJldHVybiBNZWRpYVBsYXllcjo6TW92aWVM
b2FkVHlwZTo6TGl2ZVN0cmVhbTsKKyAgICBjYXNlIFFUTW92aWVUeXBlU3RvcmVkU3RyZWFtOgor
ICAgICAgICByZXR1cm4gTWVkaWFQbGF5ZXI6Ok1vdmllTG9hZFR5cGU6OlN0b3JlZFN0cmVhbTsK
KyAgICBjYXNlIFFUTW92aWVUeXBlVW5rbm93bjoKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1
cm4gTWVkaWFQbGF5ZXI6Ok1vdmllTG9hZFR5cGU6OlVua25vd247CisgICAgfQogfQogCiB2b2lk
IE1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0OjpzZXRQcmVsb2FkKE1lZGlhUGxheWVyOjpQcmVsb2Fk
IHByZWxvYWQpCkBAIC0xNTE1LDcgKzE1ODQsNyBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZVFU
S2l0OjpjYW5TYXZlTWVkaWFEYXRhKCkgY29uc3QKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAg
ICAgaWYgKG1fcXRNb3ZpZSkKLSAgICAgICAgdXJsID0gVVJMKHdrUVRNb3ZpZVJlc29sdmVkVVJM
KG1fcXRNb3ZpZS5nZXQoKSkpOworICAgICAgICB1cmwgPSBVUkwoW21fcXRNb3ZpZSBVUkxdKTsK
ICAgICBlbHNlCiAgICAgICAgIHVybCA9IFVSTChQYXJzZWRVUkxTdHJpbmcsIG1fbW92aWVVUkwp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZVN5c3Rl
bUludGVyZmFjZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVTeXN0ZW1J
bnRlcmZhY2UuaAppbmRleCAyM2ZmMjNmY2Y0NThiNDA3ODliMDJlMGFlYzEyYjIwMDAxMWZjNWJi
Li5mNjc1OTUwOWExMWZjZTMzNDEzZmU2OTAzM2E0Njg1NmY1OTc0NTU4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmgKQEAg
LTEzMSwzMiArMTMxLDcgQEAgZXh0ZXJuIGRvdWJsZSAoKndrR2V0TlNVUkxSZXNwb25zZUNhbGN1
bGF0ZWRFeHBpcmF0aW9uKShOU1VSTFJlc3BvbnNlICpyZXNwb25zZSkKIGV4dGVybiBCT09MICgq
d2tHZXROU1VSTFJlc3BvbnNlTXVzdFJldmFsaWRhdGUpKE5TVVJMUmVzcG9uc2UgKnJlc3BvbnNl
KTsKIGV4dGVybiBCT09MICgqd2tIaXRUZXN0TWVkaWFVSVBhcnQpKGludCBwYXJ0LCBDR1JlY3Qg
Ym91bmRzLCBDR1BvaW50IHBvaW50KTsKIGV4dGVybiB2b2lkICgqd2tNZWFzdXJlTWVkaWFVSVBh
cnQpKGludCBwYXJ0LCBDR1JlY3QgKmJvdW5kcywgQ0dTaXplICpuYXR1cmFsU2l6ZSk7Ci1leHRl
cm4gTlNWaWV3ICooKndrQ3JlYXRlTWVkaWFVSUJhY2tncm91bmRWaWV3KSh2b2lkKTsKIAotdHlw
ZWRlZiBlbnVtIHsKLSAgICB3a01lZGlhVUlDb250cm9sVGltZWxpbmUsCi0gICAgd2tNZWRpYVVJ
Q29udHJvbFNsaWRlciwKLSAgICB3a01lZGlhVUlDb250cm9sUGxheVBhdXNlQnV0dG9uLAotICAg
IHdrTWVkaWFVSUNvbnRyb2xFeGl0RnVsbHNjcmVlbkJ1dHRvbiwKLSAgICB3a01lZGlhVUlDb250
cm9sUmV3aW5kQnV0dG9uLAotICAgIHdrTWVkaWFVSUNvbnRyb2xGYXN0Rm9yd2FyZEJ1dHRvbiwK
LSAgICB3a01lZGlhVUlDb250cm9sVm9sdW1lVXBCdXR0b24sCi0gICAgd2tNZWRpYVVJQ29udHJv
bFZvbHVtZURvd25CdXR0b24KLX0gd2tNZWRpYVVJQ29udHJvbFR5cGU7Ci1leHRlcm4gTlNDb250
cm9sICooKndrQ3JlYXRlTWVkaWFVSUNvbnRyb2wpKGludCk7Ci0KLWV4dGVybiB1bnNpZ25lZCAo
KndrUVRJbmNsdWRlT25seU1vZGVybk1lZGlhRmlsZVR5cGVzKSh2b2lkKTsKLWV4dGVybiB2b2lk
ICgqd2tRVE1vdmllRGlzYWJsZUNvbXBvbmVudCkodWludDMyX3RbNV0pOwotZXh0ZXJuIGZsb2F0
ICgqd2tRVE1vdmllTWF4VGltZUxvYWRlZCkoUVRNb3ZpZSopOwotZXh0ZXJuIE5TU3RyaW5nICoo
KndrUVRNb3ZpZU1heFRpbWVMb2FkZWRDaGFuZ2VOb3RpZmljYXRpb24pKHZvaWQpOwotZXh0ZXJu
IGludCAoKndrUVRNb3ZpZUdldFR5cGUpKFFUTW92aWUqKTsKLWV4dGVybiBCT09MICgqd2tRVE1v
dmllSGFzQ2xvc2VkQ2FwdGlvbnMpKFFUTW92aWUqKTsKLWV4dGVybiBOU1VSTCAqKCp3a1FUTW92
aWVSZXNvbHZlZFVSTCkoUVRNb3ZpZSopOwotZXh0ZXJuIHZvaWQgKCp3a1FUTW92aWVTZXRTaG93
Q2xvc2VkQ2FwdGlvbnMpKFFUTW92aWUqLCBCT09MKTsKLWV4dGVybiB2b2lkICgqd2tRVE1vdmll
U2VsZWN0UHJlZmVycmVkQWx0ZXJuYXRlcykoUVRNb3ZpZSopOwotZXh0ZXJuIE5TQXJyYXkgKigq
d2tRVEdldFNpdGVzSW5NZWRpYURvd25sb2FkQ2FjaGUpKCk7Ci1leHRlcm4gdm9pZCAoKndrUVRD
bGVhck1lZGlhRG93bmxvYWRDYWNoZUZvclNpdGUpKE5TU3RyaW5nICpzaXRlKTsKLWV4dGVybiB2
b2lkICgqd2tRVENsZWFyTWVkaWFEb3dubG9hZENhY2hlKSgpOwogZXh0ZXJuIHZvaWQgKCp3a1Nl
dENvb2tpZVN0b3JhZ2VQcml2YXRlQnJvd3NpbmdFbmFibGVkKShCT09MKTsKICNlbmRpZgogZXh0
ZXJuIHZvaWQgKCp3a1NldENPTk5FQ1RQcm94eUZvclN0cmVhbSkoQ0ZSZWFkU3RyZWFtUmVmLCBD
RlN0cmluZ1JlZiBwcm94eUhvc3QsIENGTnVtYmVyUmVmIHByb3h5UG9ydCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZVN5c3RlbUludGVyZmFjZS5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlLm1tCmlu
ZGV4IGM3MjNkNzQ0YjA0NmQyMTBmYWFiMjJjMmE0MWRkZjAyNDYzZGE5M2YuLjJlYWJkNGYxNGYz
OTMzNmUzMzQwY2U4ZWRlZTM3ZTQ4MmRkNjgwMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21hYy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlLm1tCkBAIC0zNiwyMyArMzYs
OSBAQCB2b2lkICgqd2tEcmF3TWVkaWFTbGlkZXJUcmFjaykoQ0dDb250ZXh0UmVmIGNvbnRleHQs
IENHUmVjdCByZWN0LCBmbG9hdCB0aW1lTG9hZAogQk9PTCAoKndrSGl0VGVzdE1lZGlhVUlQYXJ0
KShpbnQgcGFydCwgQ0dSZWN0IGJvdW5kcywgQ0dQb2ludCBwb2ludCk7CiB2b2lkICgqd2tEcmF3
TWVkaWFVSVBhcnQpKGludCBwYXJ0LCBDR0NvbnRleHRSZWYgY29udGV4dCwgQ0dSZWN0IHJlY3Qs
IHVuc2lnbmVkIHN0YXRlKTsKIHZvaWQgKCp3a01lYXN1cmVNZWRpYVVJUGFydCkoaW50IHBhcnQs
IENHUmVjdCAqYm91bmRzLCBDR1NpemUgKm5hdHVyYWxTaXplKTsKLU5TVmlldyAqKCp3a0NyZWF0
ZU1lZGlhVUlCYWNrZ3JvdW5kVmlldykodm9pZCk7Ci1OU0NvbnRyb2wgKigqd2tDcmVhdGVNZWRp
YVVJQ29udHJvbCkoaW50KTsKIE5TVGltZUludGVydmFsICgqd2tHZXROU1VSTFJlc3BvbnNlQ2Fs
Y3VsYXRlZEV4cGlyYXRpb24pKE5TVVJMUmVzcG9uc2UgKnJlc3BvbnNlKTsKIEJPT0wgKCp3a0dl
dE5TVVJMUmVzcG9uc2VNdXN0UmV2YWxpZGF0ZSkoTlNVUkxSZXNwb25zZSAqcmVzcG9uc2UpOwog
dm9pZCAoKndrUG9wdXBNZW51KShOU01lbnUqLCBOU1BvaW50IGxvY2F0aW9uLCBmbG9hdCB3aWR0
aCwgTlNWaWV3KiwgaW50IHNlbGVjdGVkSXRlbSwgTlNGb250KiwgTlNDb250cm9sU2l6ZSBjb250
cm9sU2l6ZSwgYm9vbCB1c2VzQ3VzdG9tQXBwZWFyYW5jZSk7Ci11bnNpZ25lZCAoKndrUVRJbmNs
dWRlT25seU1vZGVybk1lZGlhRmlsZVR5cGVzKSh2b2lkKTsKLXZvaWQgKCp3a1FUTW92aWVEaXNh
YmxlQ29tcG9uZW50KSh1aW50MzJfdFs1XSk7Ci1mbG9hdCAoKndrUVRNb3ZpZU1heFRpbWVMb2Fk
ZWQpKFFUTW92aWUqKTsKLU5TU3RyaW5nICooKndrUVRNb3ZpZU1heFRpbWVMb2FkZWRDaGFuZ2VO
b3RpZmljYXRpb24pKHZvaWQpOwotaW50ICgqd2tRVE1vdmllR2V0VHlwZSkoUVRNb3ZpZSopOwot
Qk9PTCAoKndrUVRNb3ZpZUhhc0Nsb3NlZENhcHRpb25zKShRVE1vdmllKik7Ci1OU1VSTCAqKCp3
a1FUTW92aWVSZXNvbHZlZFVSTCkoUVRNb3ZpZSopOwotdm9pZCAoKndrUVRNb3ZpZVNldFNob3dD
bG9zZWRDYXB0aW9ucykoUVRNb3ZpZSosIEJPT0wpOwotdm9pZCAoKndrUVRNb3ZpZVNlbGVjdFBy
ZWZlcnJlZEFsdGVybmF0ZXMpKFFUTW92aWUqKTsKLU5TQXJyYXkgKigqd2tRVEdldFNpdGVzSW5N
ZWRpYURvd25sb2FkQ2FjaGUpKCk7Ci12b2lkICgqd2tRVENsZWFyTWVkaWFEb3dubG9hZENhY2hl
Rm9yU2l0ZSkoTlNTdHJpbmcgKnNpdGUpOwotdm9pZCAoKndrUVRDbGVhck1lZGlhRG93bmxvYWRD
YWNoZSkoKTsKIAogdm9pZCAoKndrU2V0Q09OTkVDVFByb3h5Rm9yU3RyZWFtKShDRlJlYWRTdHJl
YW1SZWYsIENGU3RyaW5nUmVmIHByb3h5SG9zdCwgQ0ZOdW1iZXJSZWYgcHJveHlQb3J0KTsKIHZv
aWQgKCp3a1NldENPTk5FQ1RQcm94eUF1dGhvcml6YXRpb25Gb3JTdHJlYW0pKENGUmVhZFN0cmVh
bVJlZiwgQ0ZTdHJpbmdSZWYgcHJveHlBdXRob3JpemF0aW9uU3RyaW5nKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJWaWRlb0Z1bGxzY3JlZW5IVURXaW5kb3dD
b250cm9sbGVyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYlZpZGVvRnVsbHNj
cmVlbkhVRFdpbmRvd0NvbnRyb2xsZXIubW0KaW5kZXggZWZiNmUyYjI3M2M1ODM1MTMzZTc1YjE2
MjZhOTViMDQ5MGM3Nzk5Yy4uZmMwZjUxMGM3YTJjYjI0OTc4ZDA0YTBjNDgwNmVkNGM3MWM1MzIw
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYlZpZGVvRnVsbHNj
cmVlbkhVRFdpbmRvd0NvbnRyb2xsZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL1dlYlZpZGVvRnVsbHNjcmVlbkhVRFdpbmRvd0NvbnRyb2xsZXIubW0KQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA5LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA5LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMSw5ICsz
MSwzOCBAQAogI2ltcG9ydCA8V2ViQ29yZS9IVE1MVmlkZW9FbGVtZW50Lmg+CiAjaW1wb3J0IDxX
ZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmg+CiAjaW1wb3J0IDxwYWwvc3BpL2NnL0NvcmVHcmFwaGlj
c1NQSS5oPgorI2ltcG9ydCA8cGFsL3NwaS9tYWMvUVRLaXRTUEkuaD4KKyNpbXBvcnQgPHd0Zi9T
b2Z0TGlua2luZy5oPgorCitTT0ZUX0xJTktfRlJBTUVXT1JLKFFUS2l0KQorCitTT0ZUX0xJTktf
Q0xBU1MoUVRLaXQsIFFUSFVEQmFja2dyb3VuZFZpZXcpCitTT0ZUX0xJTktfQ0xBU1MoUVRLaXQs
IFFUSFVEQnV0dG9uKQorU09GVF9MSU5LX0NMQVNTKFFUS2l0LCBRVEhVRFNsaWRlcikKK1NPRlRf
TElOS19DTEFTUyhRVEtpdCwgUVRIVURUaW1lbGluZSkKKworI2RlZmluZSBRVEhVREJhY2tncm91
bmRWaWV3IGdldFFUSFVEQmFja2dyb3VuZFZpZXdDbGFzcygpCisjZGVmaW5lIFFUSFVEQnV0dG9u
IGdldFFUSFVEQnV0dG9uQ2xhc3MoKQorI2RlZmluZSBRVEhVRFNsaWRlciBnZXRRVEhVRFNsaWRl
ckNsYXNzKCkKKyNkZWZpbmUgUVRIVURUaW1lbGluZSBnZXRRVEhVRFRpbWVsaW5lQ2xhc3MoKQog
CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAorbmFtZXNwYWNlIFdlYkNvcmUgeworCitlbnVt
IGNsYXNzIE1lZGlhVUlDb250cm9sIHsKKyAgICBUaW1lbGluZSwKKyAgICBTbGlkZXIsCisgICAg
UGxheVBhdXNlQnV0dG9uLAorICAgIEV4aXRGdWxsc2NyZWVuQnV0dG9uLAorICAgIFJld2luZEJ1
dHRvbiwKKyAgICBGYXN0Rm9yd2FyZEJ1dHRvbiwKKyAgICBWb2x1bWVVcEJ1dHRvbiwKKyAgICBW
b2x1bWVEb3duQnV0dG9uLAorfTsKKworfQorCiBAaW50ZXJmYWNlIFdlYlZpZGVvRnVsbHNjcmVl
bkhVRFdpbmRvd0NvbnRyb2xsZXIgKFByaXZhdGUpIDxOU1dpbmRvd0RlbGVnYXRlPgogCiAtICh2
b2lkKXVwZGF0ZVRpbWU7CkBAIC0yNjUsMTAgKzI5NCw2OCBAQCAtICh2b2lkKWNsb3NlV2luZG93
CiAgICAgW3NlbGYgc2V0V2luZG93Om5pbF07CiB9CiAKLXN0YXRpYyBOU0NvbnRyb2wgKmNyZWF0
ZUNvbnRyb2xXaXRoTWVkaWFVSUNvbnRyb2xUeXBlKGludCBjb250cm9sVHlwZSwgTlNSZWN0IGZy
YW1lKQorc3RhdGljIE5TQ29udHJvbCAqY3JlYXRlTWVkaWFVSUNvbnRyb2woTWVkaWFVSUNvbnRy
b2wgY29udHJvbFR5cGUpCit7CisgICAgc3dpdGNoIChjb250cm9sVHlwZSkgeworICAgIGNhc2Ug
TWVkaWFVSUNvbnRyb2w6OlRpbWVsaW5lOiB7CisgICAgICAgIE5TU2xpZGVyICpzbGlkZXIgPSBb
W1FUSFVEVGltZWxpbmUgYWxsb2NdIGluaXRdOworICAgICAgICBbW3NsaWRlciBjZWxsXSBzZXRD
b250aW51b3VzOllFU107CisgICAgICAgIHJldHVybiBzbGlkZXI7CisgICAgfQorICAgIGNhc2Ug
TWVkaWFVSUNvbnRyb2w6OlNsaWRlcjogeworICAgICAgICBOU0J1dHRvbiAqc2xpZGVyID0gW1tR
VEhVRFNsaWRlciBhbGxvY10gaW5pdF07CisgICAgICAgIFtbc2xpZGVyIGNlbGxdIHNldENvbnRp
bnVvdXM6WUVTXTsKKyAgICAgICAgcmV0dXJuIHNsaWRlcjsKKyAgICB9CisgICAgY2FzZSBNZWRp
YVVJQ29udHJvbDo6UGxheVBhdXNlQnV0dG9uOiB7CisgICAgICAgIE5TQnV0dG9uICpidXR0b24g
PSBbW1FUSFVEQnV0dG9uIGFsbG9jXSBpbml0XTsKKyAgICAgICAgW2J1dHRvbiBzZXRJbWFnZTpb
TlNJbWFnZSBpbWFnZU5hbWVkOkAiTlNQbGF5VGVtcGxhdGUiXV07CisgICAgICAgIFtidXR0b24g
c2V0QWx0ZXJuYXRlSW1hZ2U6W05TSW1hZ2UgaW1hZ2VOYW1lZDpAIk5TUGF1c2VRVFByaXZhdGVU
ZW1wbGF0ZSJdXTsKKworICAgICAgICBbW2J1dHRvbiBjZWxsXSBzZXRTaG93c1N0YXRlQnk6TlND
b250ZW50c0NlbGxNYXNrXTsKKyAgICAgICAgW2J1dHRvbiBzZXRCb3JkZXJlZDpOT107CisgICAg
ICAgIHJldHVybiBidXR0b247CisgICAgfQorICAgIGNhc2UgTWVkaWFVSUNvbnRyb2w6OkV4aXRG
dWxsc2NyZWVuQnV0dG9uOiB7CisgICAgICAgIE5TQnV0dG9uICpidXR0b24gPSBbW1FUSFVEQnV0
dG9uIGFsbG9jXSBpbml0XTsKKyAgICAgICAgW2J1dHRvbiBzZXRJbWFnZTpbTlNJbWFnZSBpbWFn
ZU5hbWVkOkAiTlNFeGl0RnVsbFNjcmVlblRlbXBsYXRlIl1dOworICAgICAgICBbYnV0dG9uIHNl
dEJvcmRlcmVkOk5PXTsKKyAgICAgICAgcmV0dXJuIGJ1dHRvbjsKKyAgICB9CisgICAgY2FzZSBN
ZWRpYVVJQ29udHJvbDo6UmV3aW5kQnV0dG9uOiB7CisgICAgICAgIE5TQnV0dG9uICpidXR0b24g
PSBbW1FUSFVEQnV0dG9uIGFsbG9jXSBpbml0XTsKKyAgICAgICAgW2J1dHRvbiBzZXRJbWFnZTpb
TlNJbWFnZSBpbWFnZU5hbWVkOkAiTlNSZXdpbmRUZW1wbGF0ZSJdXTsKKyAgICAgICAgW2J1dHRv
biBzZXRCb3JkZXJlZDpOT107CisgICAgICAgIHJldHVybiBidXR0b247CisgICAgfQorICAgIGNh
c2UgTWVkaWFVSUNvbnRyb2w6OkZhc3RGb3J3YXJkQnV0dG9uOiB7CisgICAgICAgIE5TQnV0dG9u
ICpidXR0b24gPSBbW1FUSFVEQnV0dG9uIGFsbG9jXSBpbml0XTsKKyAgICAgICAgW2J1dHRvbiBz
ZXRJbWFnZTpbTlNJbWFnZSBpbWFnZU5hbWVkOkAiTlNGYXN0Rm9yd2FyZFRlbXBsYXRlIl1dOwor
ICAgICAgICBbYnV0dG9uIHNldEJvcmRlcmVkOk5PXTsKKyAgICAgICAgcmV0dXJuIGJ1dHRvbjsK
KyAgICB9CisgICAgY2FzZSBNZWRpYVVJQ29udHJvbDo6Vm9sdW1lVXBCdXR0b246IHsKKyAgICAg
ICAgTlNCdXR0b24gKmJ1dHRvbiA9IFtbUVRIVURCdXR0b24gYWxsb2NdIGluaXRdOworICAgICAg
ICBbYnV0dG9uIHNldEltYWdlOltOU0ltYWdlIGltYWdlTmFtZWQ6QCJOU0F1ZGlvT3V0cHV0Vm9s
dW1lSGlnaFRlbXBsYXRlIl1dOworICAgICAgICBbYnV0dG9uIHNldEJvcmRlcmVkOk5PXTsKKyAg
ICAgICAgcmV0dXJuIGJ1dHRvbjsKKyAgICB9CisgICAgY2FzZSBNZWRpYVVJQ29udHJvbDo6Vm9s
dW1lRG93bkJ1dHRvbjogeworICAgICAgICBOU0J1dHRvbiAqYnV0dG9uID0gW1tRVEhVREJ1dHRv
biBhbGxvY10gaW5pdF07CisgICAgICAgIFtidXR0b24gc2V0SW1hZ2U6W05TSW1hZ2UgaW1hZ2VO
YW1lZDpAIk5TQXVkaW9PdXRwdXRWb2x1bWVMb3dUZW1wbGF0ZSJdXTsKKyAgICAgICAgW2J1dHRv
biBzZXRCb3JkZXJlZDpOT107CisgICAgICAgIHJldHVybiBidXR0b247CisgICAgfQorICAgIH0K
KworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBuaWw7Cit9CisKK3N0YXRp
YyBOU0NvbnRyb2wgKmNyZWF0ZUNvbnRyb2xXaXRoTWVkaWFVSUNvbnRyb2xUeXBlKE1lZGlhVUlD
b250cm9sIGNvbnRyb2xUeXBlLCBOU1JlY3QgZnJhbWUpCiB7Ci0gICAgTlNDb250cm9sICpjb250
cm9sID0gd2tDcmVhdGVNZWRpYVVJQ29udHJvbChjb250cm9sVHlwZSk7Ci0gICAgW2NvbnRyb2wg
c2V0RnJhbWU6ZnJhbWVdOworICAgIE5TQ29udHJvbCAqY29udHJvbCA9IGNyZWF0ZU1lZGlhVUlD
b250cm9sKGNvbnRyb2xUeXBlKTsKKyAgICBjb250cm9sLmZyYW1lID0gZnJhbWU7CiAgICAgcmV0
dXJuIGNvbnRyb2w7CiB9CiAKQEAgLTI4NSw2ICszNzIsMjEgQEAgc3RhdGljIE5TVGV4dEZpZWxk
ICpjcmVhdGVUaW1lVGV4dEZpZWxkKE5TUmVjdCBmcmFtZSkKICAgICByZXR1cm4gdGV4dEZpZWxk
OwogfQogCitzdGF0aWMgTlNWaWV3ICpjcmVhdGVNZWRpYVVJQmFja2dyb3VuZFZpZXcoKQorewor
ICAgIGlkIHZpZXcgPSBbW1FUSFVEQmFja2dyb3VuZFZpZXcgYWxsb2NdIGluaXRdOworCisgICAg
Y29uc3QgQ0dGbG9hdCBxdWlja1RpbWVQbGF5ZXJIVURIZWlnaHQgPSA1OTsKKyAgICBjb25zdCBD
R0Zsb2F0IHF1aWNrVGltZVBsYXllckhVRENvbnRlbnRCb3JkZXJQb3NpdGlvbiA9IDM4OworCisj
cHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcHVzaAorI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIGln
bm9yZWQgIi1XZGVwcmVjYXRlZC1kZWNsYXJhdGlvbnMiCisgICAgW3ZpZXcgc2V0Q29udGVudEJv
cmRlclBvc2l0aW9uOnF1aWNrVGltZVBsYXllckhVRENvbnRlbnRCb3JkZXJQb3NpdGlvbiAvIHF1
aWNrVGltZVBsYXllckhVREhlaWdodF07CisjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcG9wCisK
KyAgICByZXR1cm4gdmlldzsKK30KKwogLSAodm9pZCl3aW5kb3dEaWRMb2FkCiB7CiAgICAgc3Rh
dGljIGNvbnN0IENHRmxvYXQgaG9yaXpvbnRhbE1hcmdpbiA9IDEwOwpAQCAtMzEwLDcgKzQxMiw3
IEBAIC0gKHZvaWQpd2luZG93RGlkTG9hZAogICAgIE5TV2luZG93ICp3aW5kb3cgPSBbc2VsZiB3
aW5kb3ddOwogICAgIEFTU0VSVCh3aW5kb3cpOwogCi0gICAgTlNWaWV3ICpiYWNrZ3JvdW5kID0g
d2tDcmVhdGVNZWRpYVVJQmFja2dyb3VuZFZpZXcoKTsKKyAgICBOU1ZpZXcgKmJhY2tncm91bmQg
PSBjcmVhdGVNZWRpYVVJQmFja2dyb3VuZFZpZXcoKTsKIAogICAgIFt3aW5kb3cgc2V0Q29udGVu
dFZpZXc6YmFja2dyb3VuZF07CiAgICAgX2FyZWEgPSBbW05TVHJhY2tpbmdBcmVhIGFsbG9jXSBp
bml0V2l0aFJlY3Q6W2JhY2tncm91bmQgYm91bmRzXSBvcHRpb25zOk5TVHJhY2tpbmdNb3VzZUVu
dGVyZWRBbmRFeGl0ZWQgfCBOU1RyYWNraW5nQWN0aXZlQWx3YXlzIG93bmVyOnNlbGYgdXNlcklu
Zm86bmlsXTsKQEAgLTMyMCwxNCArNDIyLDE0IEBAIC0gKHZvaWQpd2luZG93RGlkTG9hZAogICAg
IE5TVmlldyAqY29udGVudFZpZXcgPSBbd2luZG93IGNvbnRlbnRWaWV3XTsKIAogICAgIENHRmxv
YXQgY2VudGVyID0gQ0dGbG9vcigod2luZG93V2lkdGggLSBwbGF5QnV0dG9uV2lkdGgpIC8gMik7
Ci0gICAgX3BsYXlCdXR0b24gPSAoTlNCdXR0b24gKiljcmVhdGVDb250cm9sV2l0aE1lZGlhVUlD
b250cm9sVHlwZSh3a01lZGlhVUlDb250cm9sUGxheVBhdXNlQnV0dG9uLCBOU01ha2VSZWN0KGNl
bnRlciwgd2luZG93SGVpZ2h0IC0gcGxheUJ1dHRvblRvcE1hcmdpbiAtIHBsYXlCdXR0b25IZWln
aHQsIHBsYXlCdXR0b25XaWR0aCwgcGxheUJ1dHRvbkhlaWdodCkpOworICAgIF9wbGF5QnV0dG9u
ID0gKE5TQnV0dG9uICopY3JlYXRlQ29udHJvbFdpdGhNZWRpYVVJQ29udHJvbFR5cGUoTWVkaWFV
SUNvbnRyb2w6OlBsYXlQYXVzZUJ1dHRvbiwgTlNNYWtlUmVjdChjZW50ZXIsIHdpbmRvd0hlaWdo
dCAtIHBsYXlCdXR0b25Ub3BNYXJnaW4gLSBwbGF5QnV0dG9uSGVpZ2h0LCBwbGF5QnV0dG9uV2lk
dGgsIHBsYXlCdXR0b25IZWlnaHQpKTsKICAgICBBU1NFUlQoW19wbGF5QnV0dG9uIGlzS2luZE9m
Q2xhc3M6W05TQnV0dG9uIGNsYXNzXV0pOwogICAgIFtfcGxheUJ1dHRvbiBzZXRUYXJnZXQ6c2Vs
Zl07CiAgICAgW19wbGF5QnV0dG9uIHNldEFjdGlvbjpAc2VsZWN0b3IodG9nZ2xlUGxheWluZzop
XTsKICAgICBbY29udGVudFZpZXcgYWRkU3VidmlldzpfcGxheUJ1dHRvbl07CiAKICAgICBDR0Zs
b2F0IGNsb3NlVG9SaWdodCA9IHdpbmRvd1dpZHRoIC0gaG9yaXpvbnRhbE1hcmdpbiAtIGV4aXRG
dWxsc2NyZWVuQnV0dG9uV2lkdGg7Ci0gICAgTlNDb250cm9sICpleGl0RnVsbHNjcmVlbkJ1dHRv
biA9IGNyZWF0ZUNvbnRyb2xXaXRoTWVkaWFVSUNvbnRyb2xUeXBlKHdrTWVkaWFVSUNvbnRyb2xF
eGl0RnVsbHNjcmVlbkJ1dHRvbiwgTlNNYWtlUmVjdChjbG9zZVRvUmlnaHQsIHdpbmRvd0hlaWdo
dCAtIGV4aXRGdWxsc2NyZWVuQnV0dG9uVG9wTWFyZ2luIC0gZXhpdEZ1bGxzY3JlZW5CdXR0b25I
ZWlnaHQsIGV4aXRGdWxsc2NyZWVuQnV0dG9uV2lkdGgsIGV4aXRGdWxsc2NyZWVuQnV0dG9uSGVp
Z2h0KSk7CisgICAgTlNDb250cm9sICpleGl0RnVsbHNjcmVlbkJ1dHRvbiA9IGNyZWF0ZUNvbnRy
b2xXaXRoTWVkaWFVSUNvbnRyb2xUeXBlKE1lZGlhVUlDb250cm9sOjpFeGl0RnVsbHNjcmVlbkJ1
dHRvbiwgTlNNYWtlUmVjdChjbG9zZVRvUmlnaHQsIHdpbmRvd0hlaWdodCAtIGV4aXRGdWxsc2Ny
ZWVuQnV0dG9uVG9wTWFyZ2luIC0gZXhpdEZ1bGxzY3JlZW5CdXR0b25IZWlnaHQsIGV4aXRGdWxs
c2NyZWVuQnV0dG9uV2lkdGgsIGV4aXRGdWxsc2NyZWVuQnV0dG9uSGVpZ2h0KSk7CiAgICAgW2V4
aXRGdWxsc2NyZWVuQnV0dG9uIHNldEFjdGlvbjpAc2VsZWN0b3IoZXhpdEZ1bGxzY3JlZW46KV07
CiAgICAgW2V4aXRGdWxsc2NyZWVuQnV0dG9uIHNldFRhcmdldDpzZWxmXTsKICAgICBbY29udGVu
dFZpZXcgYWRkU3VidmlldzpleGl0RnVsbHNjcmVlbkJ1dHRvbl07CkBAIC0zMzUsMjcgKzQzNywy
NyBAQCAtICh2b2lkKXdpbmRvd0RpZExvYWQKICAgICAKICAgICBDR0Zsb2F0IHZvbHVtZUNvbnRy
b2xzQm90dG9tID0gd2luZG93SGVpZ2h0IC0gdm9sdW1lQ29udHJvbHNUb3BNYXJnaW4gLSB2b2x1
bWVCdXR0b25IZWlnaHQ7CiAgICAgQ0dGbG9hdCBsZWZ0ID0gaG9yaXpvbnRhbE1hcmdpbjsKLSAg
ICBOU0NvbnRyb2wgKnZvbHVtZURvd25CdXR0b24gPSBjcmVhdGVDb250cm9sV2l0aE1lZGlhVUlD
b250cm9sVHlwZSh3a01lZGlhVUlDb250cm9sVm9sdW1lRG93bkJ1dHRvbiwgTlNNYWtlUmVjdChs
ZWZ0LCB2b2x1bWVDb250cm9sc0JvdHRvbSwgdm9sdW1lQnV0dG9uV2lkdGgsIHZvbHVtZUJ1dHRv
bkhlaWdodCkpOworICAgIE5TQ29udHJvbCAqdm9sdW1lRG93bkJ1dHRvbiA9IGNyZWF0ZUNvbnRy
b2xXaXRoTWVkaWFVSUNvbnRyb2xUeXBlKE1lZGlhVUlDb250cm9sOjpWb2x1bWVEb3duQnV0dG9u
LCBOU01ha2VSZWN0KGxlZnQsIHZvbHVtZUNvbnRyb2xzQm90dG9tLCB2b2x1bWVCdXR0b25XaWR0
aCwgdm9sdW1lQnV0dG9uSGVpZ2h0KSk7CiAgICAgW2NvbnRlbnRWaWV3IGFkZFN1YnZpZXc6dm9s
dW1lRG93bkJ1dHRvbl07CiAgICAgW3ZvbHVtZURvd25CdXR0b24gc2V0VGFyZ2V0OnNlbGZdOwog
ICAgIFt2b2x1bWVEb3duQnV0dG9uIHNldEFjdGlvbjpAc2VsZWN0b3Ioc2V0Vm9sdW1lVG9aZXJv
OildOwogICAgIFt2b2x1bWVEb3duQnV0dG9uIHJlbGVhc2VdOwogCiAgICAgbGVmdCArPSB2b2x1
bWVCdXR0b25XaWR0aDsKLSAgICBfdm9sdW1lU2xpZGVyID0gY3JlYXRlQ29udHJvbFdpdGhNZWRp
YVVJQ29udHJvbFR5cGUod2tNZWRpYVVJQ29udHJvbFNsaWRlciwgTlNNYWtlUmVjdChsZWZ0LCB2
b2x1bWVDb250cm9sc0JvdHRvbSArIENHRmxvb3IoKHZvbHVtZUJ1dHRvbkhlaWdodCAtIHZvbHVt
ZVNsaWRlckhlaWdodCkgLyAyKSwgdm9sdW1lU2xpZGVyV2lkdGgsIHZvbHVtZVNsaWRlckhlaWdo
dCkpOworICAgIF92b2x1bWVTbGlkZXIgPSBjcmVhdGVDb250cm9sV2l0aE1lZGlhVUlDb250cm9s
VHlwZShNZWRpYVVJQ29udHJvbDo6U2xpZGVyLCBOU01ha2VSZWN0KGxlZnQsIHZvbHVtZUNvbnRy
b2xzQm90dG9tICsgQ0dGbG9vcigodm9sdW1lQnV0dG9uSGVpZ2h0IC0gdm9sdW1lU2xpZGVySGVp
Z2h0KSAvIDIpLCB2b2x1bWVTbGlkZXJXaWR0aCwgdm9sdW1lU2xpZGVySGVpZ2h0KSk7CiAgICAg
W192b2x1bWVTbGlkZXIgc2V0VmFsdWU6W05TTnVtYmVyIG51bWJlcldpdGhEb3VibGU6W3NlbGYg
bWF4Vm9sdW1lXV0gZm9yS2V5OkAibWF4VmFsdWUiXTsKICAgICBbX3ZvbHVtZVNsaWRlciBzZXRU
YXJnZXQ6c2VsZl07CiAgICAgW192b2x1bWVTbGlkZXIgc2V0QWN0aW9uOkBzZWxlY3Rvcih2b2x1
bWVDaGFuZ2VkOildOwogICAgIFtjb250ZW50VmlldyBhZGRTdWJ2aWV3Ol92b2x1bWVTbGlkZXJd
OwogCiAgICAgbGVmdCArPSB2b2x1bWVTbGlkZXJXaWR0aCArIHZvbHVtZVVwQnV0dG9uTGVmdE1h
cmdpbjsKLSAgICBOU0NvbnRyb2wgKnZvbHVtZVVwQnV0dG9uID0gY3JlYXRlQ29udHJvbFdpdGhN
ZWRpYVVJQ29udHJvbFR5cGUod2tNZWRpYVVJQ29udHJvbFZvbHVtZVVwQnV0dG9uLCBOU01ha2VS
ZWN0KGxlZnQsIHZvbHVtZUNvbnRyb2xzQm90dG9tLCB2b2x1bWVCdXR0b25XaWR0aCwgdm9sdW1l
QnV0dG9uSGVpZ2h0KSk7CisgICAgTlNDb250cm9sICp2b2x1bWVVcEJ1dHRvbiA9IGNyZWF0ZUNv
bnRyb2xXaXRoTWVkaWFVSUNvbnRyb2xUeXBlKE1lZGlhVUlDb250cm9sOjpWb2x1bWVVcEJ1dHRv
biwgTlNNYWtlUmVjdChsZWZ0LCB2b2x1bWVDb250cm9sc0JvdHRvbSwgdm9sdW1lQnV0dG9uV2lk
dGgsIHZvbHVtZUJ1dHRvbkhlaWdodCkpOwogICAgIFt2b2x1bWVVcEJ1dHRvbiBzZXRUYXJnZXQ6
c2VsZl07CiAgICAgW3ZvbHVtZVVwQnV0dG9uIHNldEFjdGlvbjpAc2VsZWN0b3Ioc2V0Vm9sdW1l
VG9NYXhpbXVtOildOwogICAgIFtjb250ZW50VmlldyBhZGRTdWJ2aWV3OnZvbHVtZVVwQnV0dG9u
XTsKICAgICBbdm9sdW1lVXBCdXR0b24gcmVsZWFzZV07CiAKLSAgICBfdGltZWxpbmUgPSB3a0Ny
ZWF0ZU1lZGlhVUlDb250cm9sKHdrTWVkaWFVSUNvbnRyb2xUaW1lbGluZSk7CisgICAgX3RpbWVs
aW5lID0gY3JlYXRlTWVkaWFVSUNvbnRyb2woTWVkaWFVSUNvbnRyb2w6OlRpbWVsaW5lKTsKIAog
ICAgIFtfdGltZWxpbmUgc2V0VGFyZ2V0OnNlbGZdOwogICAgIFtfdGltZWxpbmUgc2V0QWN0aW9u
OkBzZWxlY3Rvcih0aW1lbGluZVBvc2l0aW9uQ2hhbmdlZDopXTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViU3lzdGVtSW50ZXJmYWNl
Lm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJTeXN0
ZW1JbnRlcmZhY2UubW0KaW5kZXggMGRkZDU3MTQ1OWI4NTZmMzkyMDVlMTEwY2MwMGNjY2FlZTNm
ZDBlZS4uYmRhNWQ3M2RmYzEyMmYzZTAyMjNhYWFlNTUyODRkNGIzOWU1NzNjZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJTeXN0ZW1J
bnRlcmZhY2UubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L21hYy9XZWJTeXN0ZW1JbnRlcmZhY2UubW0KQEAgLTQzLDE4ICs0Myw2IEBAIHZvaWQgSW5pdFdl
YkNvcmVTeXN0ZW1JbnRlcmZhY2Uodm9pZCkKICAgICAgICAgSU5JVChEcmF3TWVkaWFVSVBhcnQp
OwogICAgICAgICBJTklUKEhpdFRlc3RNZWRpYVVJUGFydCk7CiAgICAgICAgIElOSVQoTWVhc3Vy
ZU1lZGlhVUlQYXJ0KTsKLSAgICAgICAgSU5JVChRVEluY2x1ZGVPbmx5TW9kZXJuTWVkaWFGaWxl
VHlwZXMpOwotICAgICAgICBJTklUKFFUTW92aWVEaXNhYmxlQ29tcG9uZW50KTsKLSAgICAgICAg
SU5JVChRVE1vdmllR2V0VHlwZSk7Ci0gICAgICAgIElOSVQoUVRNb3ZpZUhhc0Nsb3NlZENhcHRp
b25zKTsKLSAgICAgICAgSU5JVChRVE1vdmllTWF4VGltZUxvYWRlZCk7Ci0gICAgICAgIElOSVQo
UVRNb3ZpZU1heFRpbWVMb2FkZWRDaGFuZ2VOb3RpZmljYXRpb24pOwotICAgICAgICBJTklUKFFU
TW92aWVSZXNvbHZlZFVSTCk7Ci0gICAgICAgIElOSVQoUVRNb3ZpZVNlbGVjdFByZWZlcnJlZEFs
dGVybmF0ZXMpOwotICAgICAgICBJTklUKFFUTW92aWVTZXRTaG93Q2xvc2VkQ2FwdGlvbnMpOwot
ICAgICAgICBJTklUKFFUR2V0U2l0ZXNJbk1lZGlhRG93bmxvYWRDYWNoZSk7Ci0gICAgICAgIElO
SVQoUVRDbGVhck1lZGlhRG93bmxvYWRDYWNoZUZvclNpdGUpOwotICAgICAgICBJTklUKFFUQ2xl
YXJNZWRpYURvd25sb2FkQ2FjaGUpOwogI2VuZGlmCiAgICAgICAgIElOSVQoU2V0Q09OTkVDVFBy
b3h5QXV0aG9yaXphdGlvbkZvclN0cmVhbSk7CiAgICAgICAgIElOSVQoU2V0Q09OTkVDVFByb3h5
Rm9yU3RyZWFtKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYlN5c3RlbUludGVyZmFjZS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYlN5c3RlbUludGVyZmFjZS5tbQppbmRleCBhMzIwMjQ1MzdjYWU3NzQw
NGQxMjJhM2EzODU0ZDNjMmU3YmEyNDkwLi4xNzQ2NTg2YjI0MmY1MmUwN2E5OWZlOTE1YWE2YjRm
NjJhM2JjNWQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJTeXN0ZW1JbnRlcmZhY2UubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViU3lzdGVtSW50ZXJmYWNlLm1tCkBAIC00OSwyNSArNDksOSBAQCB2
b2lkIEluaXRXZWJDb3JlU3lzdGVtSW50ZXJmYWNlKHZvaWQpCiAgICAgSU5JVChEcmF3TWVkaWFT
bGlkZXJUcmFjayk7CiAgICAgSU5JVChIaXRUZXN0TWVkaWFVSVBhcnQpOwogICAgIElOSVQoTWVh
c3VyZU1lZGlhVUlQYXJ0KTsKLSAgICBJTklUKENyZWF0ZU1lZGlhVUlCYWNrZ3JvdW5kVmlldyk7
Ci0gICAgSU5JVChDcmVhdGVNZWRpYVVJQ29udHJvbCk7CiAjZW5kaWYKICAgICBJTklUKFNldENP
Tk5FQ1RQcm94eUF1dGhvcml6YXRpb25Gb3JTdHJlYW0pOwogICAgIElOSVQoU2V0Q09OTkVDVFBy
b3h5Rm9yU3RyZWFtKTsKLSNpZiBFTkFCTEUoVklERU8pICYmICFQTEFURk9STShJT1MpCi0gICAg
SU5JVChRVEluY2x1ZGVPbmx5TW9kZXJuTWVkaWFGaWxlVHlwZXMpOwotICAgIElOSVQoUVRNb3Zp
ZURpc2FibGVDb21wb25lbnQpOwotICAgIElOSVQoUVRNb3ZpZU1heFRpbWVMb2FkZWQpOwotICAg
IElOSVQoUVRNb3ZpZU1heFRpbWVMb2FkZWRDaGFuZ2VOb3RpZmljYXRpb24pOwotICAgIElOSVQo
UVRNb3ZpZUdldFR5cGUpOwotICAgIElOSVQoUVRNb3ZpZUhhc0Nsb3NlZENhcHRpb25zKTsKLSAg
ICBJTklUKFFUTW92aWVSZXNvbHZlZFVSTCk7Ci0gICAgSU5JVChRVE1vdmllU2V0U2hvd0Nsb3Nl
ZENhcHRpb25zKTsKLSAgICBJTklUKFFUTW92aWVTZWxlY3RQcmVmZXJyZWRBbHRlcm5hdGVzKTsK
LSAgICBJTklUKFFUR2V0U2l0ZXNJbk1lZGlhRG93bmxvYWRDYWNoZSk7Ci0gICAgSU5JVChRVENs
ZWFyTWVkaWFEb3dubG9hZENhY2hlRm9yU2l0ZSk7Ci0gICAgSU5JVChRVENsZWFyTWVkaWFEb3du
bG9hZENhY2hlKTsKLSNlbmRpZgogCiAjaWYgIVBMQVRGT1JNKElPUykKICAgICBJTklUKEV4ZWN1
dGFibGVXYXNMaW5rZWRPbk9yQmVmb3JlU25vd0xlb3BhcmQpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>320199</attachid>
            <date>2017-09-07 16:07:02 -0700</date>
            <delta_ts>2017-09-11 09:58:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-176472-20170907160702.patch</filename>
            <type>text/plain</type>
            <size>35124</size>
            <attacher name="Andy Estes">aestes</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIxNjg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDY5MjY5MTkxOTNmNWE2
MjdjNmRiYzQyNDFiYTVlY2M3ZDdhNmU3NC4uYWUyODQ1OTMzYzJlNDk2MTVhYTMyOWE1OWI3YTky
YTc0NjNkZmVlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDE3LTA5LTA2ICBBbmR5
IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBbTWFjXSBVcHN0cmVhbSBRVEtp
dC1yZWxhdGVkIFdlYktpdFN5c3RlbUludGVyZmFjZSBmdW5jdGlvbnMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NjQ3MgorCisgICAgICAgIFJldmll
d2VkIGJ5IEVyaWMgQ2FybHNvbi4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9N
ZWRpYVBsYXllclByaXZhdGVRVEtpdC5tbToKKyAgICAgICAgKFdlYkNvcmU6OmRpc2FibGVDb21w
b25lbnRzT25jZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6
Y3JlYXRlUVRNb3ZpZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVRVEtp
dDo6aGFzQ2xvc2VkQ2FwdGlvbnMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5
ZXJQcml2YXRlUVRLaXQ6OnNldENsb3NlZENhcHRpb25zVmlzaWJsZSk6CisgICAgICAgIChXZWJD
b3JlOjpzZWxlY3RQcmVmZXJyZWRBbHRlcm5hdGVUcmFja0Zvck1lZGlhVHlwZSk6CisgICAgICAg
IChXZWJDb3JlOjpzZWxlY3RQcmVmZXJyZWRBbHRlcm5hdGVzKToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0Ojp1cGRhdGVTdGF0ZXMpOgorICAgICAgICAoV2ViQ29y
ZTo6bWltZU1vZGVyblR5cGVzQ2FjaGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQ
cml2YXRlUVRLaXQ6Om9yaWdpbnNJbk1lZGlhQ2FjaGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFQbGF5ZXJQcml2YXRlUVRLaXQ6OmNsZWFyTWVkaWFDYWNoZSk6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6Y2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2lucyk6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6aGFzU2luZ2xlU2VjdXJp
dHlPcmlnaW4gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlUVRL
aXQ6Om1vdmllTG9hZFR5cGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQ
cml2YXRlUVRLaXQ6OmNhblNhdmVNZWRpYURhdGEgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3Jt
L21hYy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmg6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1dl
YkNvcmVTeXN0ZW1JbnRlcmZhY2UubW06CisgICAgICAgICogcGxhdGZvcm0vbWFjL1dlYlZpZGVv
RnVsbHNjcmVlbkhVRFdpbmRvd0NvbnRyb2xsZXIubW06CisgICAgICAgIChjcmVhdGVNZWRpYVVJ
Q29udHJvbCk6CisgICAgICAgIChjcmVhdGVDb250cm9sV2l0aE1lZGlhVUlDb250cm9sVHlwZSk6
CisgICAgICAgIChjcmVhdGVNZWRpYVVJQmFja2dyb3VuZFZpZXcpOgorICAgICAgICAoLVtXZWJW
aWRlb0Z1bGxzY3JlZW5IVURXaW5kb3dDb250cm9sbGVyIHdpbmRvd0RpZExvYWRdKToKKwogMjAx
Ny0wOS0wNiAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgogCiAgICAgICAgIFJFR1JFU1NJ
T04gKHIyMjE1OTgpOiBMZWdhY3kgInJvdW5kIiBhbmQgImJldmVsIiBvcHRpb25zIGNhbiBubyBs
b25nZXIgYmUgdXNlZCB3aXRoIHRoZSBsZWdhY3kgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEIHNl
dExpbmVKb2luIG9wZXJhdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKaW5kZXggZWU0MGU0NjE3NTU5NmJj
NTIyZjMxN2M2YzU5OGRiMDg0YzE3M2M1Ni4uZWVhNzkwNWM1ZWRjMDNhYTgxNzgwMWZjM2NkMGNh
OTAxMjg4MzhiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTctMDkt
MDYgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29tPgorCisgICAgICAgIFtNYWNdIFVwc3Ry
ZWFtIFFUS2l0LXJlbGF0ZWQgV2ViS2l0U3lzdGVtSW50ZXJmYWNlIGZ1bmN0aW9ucworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc2NDcyCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgRXJpYyBDYXJsc29uLgorCisgICAgICAgICogcGFsL3NwaS9tYWMvUVRL
aXRTUEkuaDoKKwogMjAxNy0wOS0wNCAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtp
dC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjIyMTQ5NCBhbmQgcjIy
MTUwMC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKaW5kZXggMzY0ZDhlNWQ4MGQyNTVkNjkzNmZiMmUxYTBiZDQ2MzdhYjU5YTA2
ZS4uZjY3NjU3MTZjZDQ5YzZhMDBjNmY5OWU3ZTQwZjg3NTgyNTg4MjdhOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxMyBAQAorMjAxNy0wOS0wNiAgQW5keSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+
CisKKyAgICAgICAgW01hY10gVXBzdHJlYW0gUVRLaXQtcmVsYXRlZCBXZWJLaXRTeXN0ZW1JbnRl
cmZhY2UgZnVuY3Rpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNzY0NzIKKworICAgICAgICBSZXZpZXdlZCBieSBFcmljIENhcmxzb24uCisKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJTeXN0ZW1JbnRlcmZhY2Uu
bW06CisgICAgICAgIChJbml0V2ViQ29yZVN5c3RlbUludGVyZmFjZSk6CisKIDIwMTctMDktMDYg
IEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CiAKICAgICAgICAgRGVueSB0aGly
ZC1wYXJ0eSBjb29raWUgY3JlYXRpb24gZm9yIHByZXZhbGVudCByZXNvdXJjZXMgd2l0aG91dCBp
bnRlcmFjdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4IDdlNTFlYmFmNmJmZjhl
ZmIxZmNjY2Q4MWQyODQwZmY3MmI0NGM1ZTguLjBhZDdhMmE3MzIxNzY1ZDY0ZWVhYThiYzM2OGYw
M2RiODIzNGQzNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBA
QAorMjAxNy0wOS0wNiAgQW5keSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+CisKKyAgICAgICAg
W01hY10gVXBzdHJlYW0gUVRLaXQtcmVsYXRlZCBXZWJLaXRTeXN0ZW1JbnRlcmZhY2UgZnVuY3Rp
b25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzY0
NzIKKworICAgICAgICBSZXZpZXdlZCBieSBFcmljIENhcmxzb24uCisKKyAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9XZWJTeXN0ZW1JbnRlcmZhY2UubW06CisgICAgICAgIChJbml0V2ViQ29yZVN5
c3RlbUludGVyZmFjZSk6CisKIDIwMTctMDktMDUgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRv
bkBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIHNvbWUgdW51c2VkIGJpdHMgb2YgY29kZSBh
bmQgcmVzb3VyY2VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9tYWMv
UVRLaXRTUEkuaCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL21hYy9RVEtpdFNQSS5oCmlu
ZGV4IDcxNzg5Y2RmMjVkYThhZjQwNGI3MGE0Y2I1MTljMWNhM2Q4NTJlMmYuLjA0YmIyNDk2Mjcw
ODU3MjlmMTViYTE0YjQyOGE0ZTcwZjJmNmJiYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1BBTC9wYWwvc3BpL21hYy9RVEtpdFNQSS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwv
c3BpL21hYy9RVEtpdFNQSS5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTYtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTI1LDggKzI1LDEyIEBACiAKICNwcmFnbWEgb25jZQogCi0jaWYg
VVNFKEFQUExFX0lOVEVSTkFMX1NESykgfHwgX19NQUNfT1NfWF9WRVJTSU9OX01BWF9BTExPV0VE
IDwgMTAxMjAwCi0jaW1wb3J0IDxRVEtpdC9RVEtpdC5oPgorI2lmIFVTRShBUFBMRV9JTlRFUk5B
TF9TREspCisKKyNpbXBvcnQgPFFUS2l0L1FUSFVEQmFja2dyb3VuZFZpZXdfUHJpdmF0ZS5oPgor
I2ltcG9ydCA8UVRLaXQvUVRLaXRfUHJpdmF0ZS5oPgorI2ltcG9ydCA8UVRLaXQvUVRVdGlsaXRp
ZXNfUHJpdmF0ZS5oPgorCiAjZWxzZQogCiBlbnVtIHsKQEAgLTQ2LDggKzUwLDE5IEBAIHR5cGVk
ZWYgc3RydWN0IHsKIAogdHlwZWRlZiBlbnVtIHsKICAgICBRVEluY2x1ZGVDb21tb25UeXBlcyA9
IDAsCisgICAgUVRJbmNsdWRlT25seUZpZ01lZGlhRmlsZVR5cGVzID0gMSA8PCA4LAogfSBRVE1v
dmllRmlsZVR5cGVPcHRpb25zOwogCitlbnVtIHsKKyAgICBRVE1vdmllVHlwZVVua25vd24gPSAw
LAorICAgIFFUTW92aWVUeXBlTG9jYWwsCisgICAgUVRNb3ZpZVR5cGVGYXN0U3RhcnQsCisgICAg
UVRNb3ZpZVR5cGVMaXZlU3RyZWFtLAorICAgIFFUTW92aWVUeXBlU3RvcmVkU3RyZWFtCit9Owor
CitAY2xhc3MgUVRUcmFjazsKKwogQGludGVyZmFjZSBRVE1lZGlhIDogTlNPYmplY3QKIAogLSAo
aWQpYXR0cmlidXRlRm9yS2V5OihOU1N0cmluZyAqKWF0dHJpYnV0ZUtleTsKQEAgLTU4LDYgKzcz
LDggQEAgdHlwZWRlZiBlbnVtIHsKIAogKyAoTlNBcnJheSAqKW1vdmllRmlsZVR5cGVzOihRVE1v
dmllRmlsZVR5cGVPcHRpb25zKXR5cGVzOwogCisrICh2b2lkKWRpc2FibGVDb21wb25lbnQ6KENv
bXBvbmVudERlc2NyaXB0aW9uKWNvbXBvbmVudDsKKwogLSAoaWQpaW5pdFdpdGhBdHRyaWJ1dGVz
OihOU0RpY3Rpb25hcnkgKilhdHRyaWJ1dGVzIGVycm9yOihOU0Vycm9yICoqKWVycm9yUHRyOwog
CiAtICh2b2lkKXBsYXk7CkBAIC04MSw2ICs5OCwxNCBAQCB0eXBlZGVmIGVudW0gewogCiAtIChO
U0FycmF5ICopdHJhY2tzOwogCistIChOU0FycmF5ICopYWx0ZXJuYXRlR3JvdXBUeXBlczsKKy0g
KE5TQXJyYXkgKilhbHRlcm5hdGVzRm9yTWVkaWFUeXBlOihOU1N0cmluZyAqKXR5cGU7CistICh2
b2lkKWRlc2VsZWN0QWx0ZXJuYXRlR3JvdXBUcmFjazooUVRUcmFjayAqKWFsdGVybmF0ZVRyYWNr
OworLSAodm9pZClzZWxlY3RBbHRlcm5hdGVHcm91cFRyYWNrOihRVFRyYWNrICopYWx0ZXJuYXRl
VHJhY2s7CisKKy0gKE5TVVJMICopVVJMOworLSAoVUludDMyKW1vdmllVHlwZTsKKwogQGVuZAog
CiBAaW50ZXJmYWNlIFFUTW92aWVMYXllciA6IENBTGF5ZXIKQEAgLTEwNiw0ICsxMzEsMjAgQEAg
dHlwZWRlZiBlbnVtIHsKIAogQGVuZAogCitAaW50ZXJmYWNlIFFUSFVEQmFja2dyb3VuZFZpZXcg
OiBOU1ZpZXcKKworLSAodm9pZClzZXRDb250ZW50Qm9yZGVyUG9zaXRpb246KENHRmxvYXQpY29u
dGVudEJvcmRlclBvc2l0aW9uOworCitAZW5kCisKK0BpbnRlcmZhY2UgUVRVdGlsaXRpZXMgOiBO
U09iamVjdAorCisrIChpZClxdFV0aWxpdGllczsKKworLSAoTlNBcnJheSAqKXNpdGVzSW5Eb3du
bG9hZENhY2hlOworLSAodm9pZCljbGVhckRvd25sb2FkQ2FjaGU7CistICh2b2lkKWNsZWFyRG93
bmxvYWRDYWNoZUZvclNpdGU6KE5TU3RyaW5nICopc2l0ZTsKKworQGVuZAorCiAjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9NZWRpYVBsYXll
clByaXZhdGVRVEtpdC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9N
ZWRpYVBsYXllclByaXZhdGVRVEtpdC5tbQppbmRleCA4NWNmNTYxZDczMzE3OTY3NmVjZjhlOWZk
YWEzNmZjMGU3ZTU4YjAxLi42MWYwOWIzODRkOTUxNDJjNjI3M2E0MWVkNWI3ODVjYjFjNWM5YWEw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQ
bGF5ZXJQcml2YXRlUVRLaXQubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvbWFjL01lZGlhUGxheWVyUHJpdmF0ZVFUS2l0Lm1tCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCwgMjAxMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDctMjAxNyBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTUyLDYgKzUyLDcgQEAgU09GVF9MSU5LKFFUS2l0LCBRVE1ha2VUaW1lLCBRVFRpbWUsIChsb25n
IGxvbmcgdGltZVZhbHVlLCBsb25nIHRpbWVTY2FsZSksICh0aW0KIAogU09GVF9MSU5LX0NMQVNT
KFFUS2l0LCBRVE1vdmllKQogU09GVF9MSU5LX0NMQVNTKFFUS2l0LCBRVE1vdmllTGF5ZXIpCitT
T0ZUX0xJTktfQ0xBU1MoUVRLaXQsIFFUVXRpbGl0aWVzKQogCiBTT0ZUX0xJTktfUE9JTlRFUihR
VEtpdCwgUVRUcmFja01lZGlhVHlwZUF0dHJpYnV0ZSwgTlNTdHJpbmcgKikKIFNPRlRfTElOS19Q
T0lOVEVSKFFUS2l0LCBRVE1lZGlhVHlwZUF0dHJpYnV0ZSwgTlNTdHJpbmcgKikKQEAgLTcxLDYg
KzcyLDcgQEAgU09GVF9MSU5LX1BPSU5URVIoUVRLaXQsIFFUTW92aWVJc0FjdGl2ZUF0dHJpYnV0
ZSwgTlNTdHJpbmcgKikKIFNPRlRfTElOS19QT0lOVEVSKFFUS2l0LCBRVE1vdmllTG9hZFN0YXRl
QXR0cmlidXRlLCBOU1N0cmluZyAqKQogU09GVF9MSU5LX1BPSU5URVIoUVRLaXQsIFFUTW92aWVM
b2FkU3RhdGVFcnJvckF0dHJpYnV0ZSwgTlNTdHJpbmcgKikKIFNPRlRfTElOS19QT0lOVEVSKFFU
S2l0LCBRVE1vdmllTG9hZFN0YXRlRGlkQ2hhbmdlTm90aWZpY2F0aW9uLCBOU1N0cmluZyAqKQor
U09GVF9MSU5LX1BPSU5URVIoUVRLaXQsIFFUTW92aWVMb2FkZWRSYW5nZXNEaWRDaGFuZ2VOb3Rp
ZmljYXRpb24sIE5TU3RyaW5nICopOwogU09GVF9MSU5LX1BPSU5URVIoUVRLaXQsIFFUTW92aWVO
YXR1cmFsU2l6ZUF0dHJpYnV0ZSwgTlNTdHJpbmcgKikKIFNPRlRfTElOS19QT0lOVEVSKFFUS2l0
LCBRVE1vdmllQ3VycmVudFNpemVBdHRyaWJ1dGUsIE5TU3RyaW5nICopCiBTT0ZUX0xJTktfUE9J
TlRFUihRVEtpdCwgUVRNb3ZpZVByZXZlbnRFeHRlcm5hbFVSTExpbmtzQXR0cmlidXRlLCBOU1N0
cmluZyAqKQpAQCAtOTUsOCArOTcsOCBAQCAtIChOU0FycmF5ICopYXZhaWxhYmxlUmFuZ2VzOwog
LSAoTlNBcnJheSAqKWxvYWRlZFJhbmdlczsKIEBlbmQKIAotI2RlZmluZSBRVE1vdmllIGdldFFU
TW92aWVDbGFzcygpCiAjZGVmaW5lIFFUTW92aWVMYXllciBnZXRRVE1vdmllTGF5ZXJDbGFzcygp
CisjZGVmaW5lIFFUVXRpbGl0aWVzIGdldFFUVXRpbGl0aWVzQ2xhc3MoKQogCiAjZGVmaW5lIFFU
VHJhY2tNZWRpYVR5cGVBdHRyaWJ1dGUgZ2V0UVRUcmFja01lZGlhVHlwZUF0dHJpYnV0ZSgpCiAj
ZGVmaW5lIFFUTWVkaWFUeXBlQXR0cmlidXRlIGdldFFUTWVkaWFUeXBlQXR0cmlidXRlKCkKQEAg
LTExNiw2ICsxMTgsNyBAQCBAZW5kCiAjZGVmaW5lIFFUTW92aWVMb2FkU3RhdGVBdHRyaWJ1dGUg
Z2V0UVRNb3ZpZUxvYWRTdGF0ZUF0dHJpYnV0ZSgpCiAjZGVmaW5lIFFUTW92aWVMb2FkU3RhdGVF
cnJvckF0dHJpYnV0ZSBnZXRRVE1vdmllTG9hZFN0YXRlRXJyb3JBdHRyaWJ1dGUoKQogI2RlZmlu
ZSBRVE1vdmllTG9hZFN0YXRlRGlkQ2hhbmdlTm90aWZpY2F0aW9uIGdldFFUTW92aWVMb2FkU3Rh
dGVEaWRDaGFuZ2VOb3RpZmljYXRpb24oKQorI2RlZmluZSBRVE1vdmllTG9hZGVkUmFuZ2VzRGlk
Q2hhbmdlTm90aWZpY2F0aW9uIGdldFFUTW92aWVMb2FkZWRSYW5nZXNEaWRDaGFuZ2VOb3RpZmlj
YXRpb24oKQogI2RlZmluZSBRVE1vdmllTmF0dXJhbFNpemVBdHRyaWJ1dGUgZ2V0UVRNb3ZpZU5h
dHVyYWxTaXplQXR0cmlidXRlKCkKICNkZWZpbmUgUVRNb3ZpZUN1cnJlbnRTaXplQXR0cmlidXRl
IGdldFFUTW92aWVDdXJyZW50U2l6ZUF0dHJpYnV0ZSgpCiAjZGVmaW5lIFFUTW92aWVQcmV2ZW50
RXh0ZXJuYWxVUkxMaW5rc0F0dHJpYnV0ZSBnZXRRVE1vdmllUHJldmVudEV4dGVybmFsVVJMTGlu
a3NBdHRyaWJ1dGUoKQpAQCAtMjkyLDcgKzI5NSw3IEBAIHN0YXRpYyB2b2lkIGRpc2FibGVDb21w
b25lbnRzT25jZSgpCiAgICAgLy8gUVRLaXRTZXJ2ZXIgaGFzIG5vdCB5ZXQgc3RhcnRlZC4gIEFz
IGEgcmVzdWx0LCB3ZSBtdXN0IHBhc3MgaW4gZXhhY3RseSB0aGUgZmxhZ3Mgd2Ugd2FudCB0bwog
ICAgIC8vIGRpc2FibGUgcGVyIGNvbXBvbmVudC4gIEFzIGEgZmFpbHNhZmUsIGlmIGluIHRoZSBm
dXR1cmUgdGhlc2UgZmxhZ3MgY2hhbmdlLCB3ZSB3aWxsIGRpc2FibGUgdGhlCiAgICAgLy8gUERG
IGNvbXBvbmVudHMgZm9yIGEgdGhpcmQgdGltZSB3aXRoIGEgd2lsZGNhcmQgZmxhZ3MgZmllbGQ6
Ci0gICAgdWludDMyX3QgY29tcG9uZW50c1RvRGlzYWJsZVsxMV1bNV0gPSB7CisgICAgQ29tcG9u
ZW50RGVzY3JpcHRpb24gY29tcG9uZW50c1RvRGlzYWJsZVsxMV0gPSB7CiAgICAgICAgIHsnZWF0
ICcsICdURVhUJywgJ3RleHQnLCAwLCAwfSwKICAgICAgICAgeydlYXQgJywgJ1RYVCAnLCAndGV4
dCcsIDAsIDB9LCAgICAKICAgICAgICAgeydlYXQgJywgJ3V0eHQnLCAndGV4dCcsIDAsIDB9LCAg
CkBAIC0zMDcsNyArMzEwLDcgQEAgc3RhdGljIHZvaWQgZGlzYWJsZUNvbXBvbmVudHNPbmNlKCkK
ICAgICB9OwogCiAgICAgZm9yIChhdXRvJiBjb21wb25lbnQgOiBjb21wb25lbnRzVG9EaXNhYmxl
KQotICAgICAgICB3a1FUTW92aWVEaXNhYmxlQ29tcG9uZW50KGNvbXBvbmVudCk7CisgICAgICAg
IFtnZXRRVE1vdmllQ2xhc3MoKSBkaXNhYmxlQ29tcG9uZW50OmNvbXBvbmVudF07CiB9CiAKIHZv
aWQgTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6OmNyZWF0ZVFUTW92aWUoTlNVUkwgKnVybCwgTlNE
aWN0aW9uYXJ5ICptb3ZpZUF0dHJpYnV0ZXMpCkBAIC0zNDUsMTQgKzM0OCwxMCBAQCB2b2lkIE1l
ZGlhUGxheWVyUHJpdmF0ZVFUS2l0OjpjcmVhdGVRVE1vdmllKE5TVVJMICp1cmwsIE5TRGljdGlv
bmFyeSAqbW92aWVBdHRyaQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBvYmplY3Q6bV9xdE1vdmllLmdldCgpXTsKIAogICAgIC8vIEluIHVwZGF0ZVN0YXRl
KCksIHdlIHRyYWNrIHdoZW4gbWF4VGltZUxvYWRlZCgpID09IGR1cmF0aW9uKCkuCi0gICAgLy8g
SW4gbmV3ZXIgdmVyc2lvbiBvZiBRdWlja1RpbWUsIGEgbm90aWZpY2F0aW9uIGlzIGVtaXR0ZWQg
d2hlbiBtYXhUaW1lTG9hZGVkIGNoYW5nZXMuCi0gICAgLy8gSW4gb2xkZXIgdmVyc2lvbiBvZiBR
dWlja1RpbWUsIFFUTW92aWVMb2FkU3RhdGVEaWRDaGFuZ2VOb3RpZmljYXRpb24gYmUgZmlyZWQu
Ci0gICAgaWYgKE5TU3RyaW5nICptYXhUaW1lTG9hZGVkQ2hhbmdlTm90aWZpY2F0aW9uID0gd2tR
VE1vdmllTWF4VGltZUxvYWRlZENoYW5nZU5vdGlmaWNhdGlvbigpKSB7Ci0gICAgICAgIFtbTlNO
b3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0gYWRkT2JzZXJ2ZXI6bV9vYmpjT2JzZXJ2
ZXIuZ2V0KCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzZWxlY3RvcjpAc2VsZWN0b3IobG9hZGVkUmFuZ2VzQ2hhbmdlZDopCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6bWF4VGltZUxvYWRl
ZENoYW5nZU5vdGlmaWNhdGlvbgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgb2JqZWN0Om1fcXRNb3ZpZS5nZXQoKV07ICAgICAgICAKLSAgICB9Cisg
ICAgW1tOU05vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXSBhZGRPYnNlcnZlcjptX29i
amNPYnNlcnZlci5nZXQoKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2VsZWN0b3I6QHNlbGVjdG9yKGxvYWRlZFJhbmdlc0NoYW5nZWQ6KQorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6UVRNb3ZpZUxvYWRl
ZFJhbmdlc0RpZENoYW5nZU5vdGlmaWNhdGlvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBvYmplY3Q6bV9xdE1vdmllLmdldCgpXTsKIAogICAgIFtbTlNO
b3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0gYWRkT2JzZXJ2ZXI6bV9vYmpjT2JzZXJ2
ZXIuZ2V0KCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNl
bGVjdG9yOkBzZWxlY3RvcihyYXRlQ2hhbmdlZDopIApAQCAtNzcxLDE4ICs3NzAsMzAgQEAgYm9v
bCBNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6aGFzQ2xvc2VkQ2FwdGlvbnMoKSBjb25zdAogewog
ICAgIGlmICghbWV0YURhdGFBdmFpbGFibGUoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
IHJldHVybiB3a1FUTW92aWVIYXNDbG9zZWRDYXB0aW9ucyhtX3F0TW92aWUuZ2V0KCkpOyAgCisg
ICAgcmV0dXJuIFtbbV9xdE1vdmllIGFsdGVybmF0ZUdyb3VwVHlwZXNdIGNvbnRhaW5zT2JqZWN0
OkAiY2xjcCJdOwogfQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0OjpzZXRDbG9zZWRD
YXB0aW9uc1Zpc2libGUoYm9vbCBjbG9zZWRDYXB0aW9uc1Zpc2libGUpCiB7Ci0gICAgaWYgKG1l
dGFEYXRhQXZhaWxhYmxlKCkpIHsKLSAgICAgICAgd2tRVE1vdmllU2V0U2hvd0Nsb3NlZENhcHRp
b25zKG1fcXRNb3ZpZS5nZXQoKSwgY2xvc2VkQ2FwdGlvbnNWaXNpYmxlKTsKKyAgICBpZiAoIW1l
dGFEYXRhQXZhaWxhYmxlKCkpCisgICAgICAgIHJldHVybjsKIAotICAgICAgICBpZiAoY2xvc2Vk
Q2FwdGlvbnNWaXNpYmxlICYmIG1fcXRWaWRlb0xheWVyKSB7Ci0gICAgICAgICAgICAvLyBDYXB0
aW9ucyB3aWxsIGJlIHJlbmRlcmVkIHVwc2lkZSBkb3duIHVubGVzcyB3ZSBmbGFnIHRoZSBtb3Zp
ZSBhcyBmbGlwcGVkIChhZ2FpbikuIFNlZSA8cmRhcjovLzc0MDg0NDA+LgotICAgICAgICAgICAg
W21fcXRWaWRlb0xheWVyLmdldCgpIHNldEdlb21ldHJ5RmxpcHBlZDpZRVNdOwotICAgICAgICB9
CisgICAgaWYgKCFbW21fcXRNb3ZpZSBhbHRlcm5hdGVHcm91cFR5cGVzXSBjb250YWluc09iamVj
dDpAImNsY3AiXSkKKyAgICAgICAgcmV0dXJuOworCisgICAgTlNBcnJheSAqdHJhY2tBbHRlcm5h
dGVzQXJyYXkgPSBbbV9xdE1vdmllIGFsdGVybmF0ZXNGb3JNZWRpYVR5cGU6QCJjbGNwIl07Cisg
ICAgUVRUcmFjayAqdHJhY2sgPSB0cmFja0FsdGVybmF0ZXNBcnJheVswXVtAIlFUQWx0ZXJuYXRl
c19RVFRyYWNrIl07CisgICAgaWYgKCF0cmFjaykKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYg
KCFjbG9zZWRDYXB0aW9uc1Zpc2libGUpCisgICAgICAgIFttX3F0TW92aWUgZGVzZWxlY3RBbHRl
cm5hdGVHcm91cFRyYWNrOnRyYWNrXTsKKyAgICBlbHNlCisgICAgICAgIFttX3F0TW92aWUgc2Vs
ZWN0QWx0ZXJuYXRlR3JvdXBUcmFjazp0cmFja107CisKKyAgICBpZiAoY2xvc2VkQ2FwdGlvbnNW
aXNpYmxlICYmIG1fcXRWaWRlb0xheWVyKSB7CisgICAgICAgIC8vIENhcHRpb25zIHdpbGwgYmUg
cmVuZGVyZWQgdXBzaWRlIGRvd24gdW5sZXNzIHdlIGZsYWcgdGhlIG1vdmllIGFzIGZsaXBwZWQg
KGFnYWluKS4gU2VlIDxyZGFyOi8vNzQwODQ0MD4uCisgICAgICAgIFttX3F0VmlkZW9MYXllci5n
ZXQoKSBzZXRHZW9tZXRyeUZsaXBwZWQ6WUVTXTsKICAgICB9CiB9CiAKQEAgLTk0MSw2ICs5NTIs
NTggQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6cHJlcGFyZUZvclJlbmRlcmluZygp
CiAgICAgICAgIG1fcGxheWVyLT5jbGllbnQoKS5tZWRpYVBsYXllclJlbmRlcmluZ01vZGVDaGFu
Z2VkKG1fcGxheWVyKTsKIH0KIAorc3RhdGljIHZvaWQgc2VsZWN0UHJlZmVycmVkQWx0ZXJuYXRl
VHJhY2tGb3JNZWRpYVR5cGUoUVRNb3ZpZSAqbW92aWUsIE5TU3RyaW5nICptZWRpYVR5cGUpCit7
CisgICAgTlNBcnJheSAqYWx0ZXJuYXRlcyA9IFttb3ZpZSBhbHRlcm5hdGVzRm9yTWVkaWFUeXBl
Om1lZGlhVHlwZV07CisgICAgaWYgKCFhbHRlcm5hdGVzLmNvdW50KQorICAgICAgICByZXR1cm47
CisKKyAgICBhdXRvIGxhbmd1YWdlVG9RVFRyYWNrTWFwID0gYWRvcHROUyhbW05TTXV0YWJsZURp
Y3Rpb25hcnkgYWxsb2NdIGluaXRXaXRoQ2FwYWNpdHk6YWx0ZXJuYXRlcy5jb3VudF0pOworCisg
ICAgZm9yIChOU1VJbnRlZ2VyIGluZGV4ID0gMDsgaW5kZXggPCBhbHRlcm5hdGVzLmNvdW50OyAr
K2luZGV4KSB7CisgICAgICAgIE5TRGljdGlvbmFyeSAqYWx0ZXJuYXRlRGljdCA9IGFsdGVybmF0
ZXNbaW5kZXhdOworICAgICAgICBOU1N0cmluZyAqbGFuZ3VhZ2VTdHJpbmcgPSBhbHRlcm5hdGVE
aWN0W0AiUVRBbHRlcm5hdGVzX0xhbmd1YWdlQ29kZUVuY29kaW5nX0lTT182MzlfMlQiXTsKKyAg
ICAgICAgaWYgKCFbbGFuZ3VhZ2VTdHJpbmcgY1N0cmluZ1VzaW5nRW5jb2Rpbmc6a0NGU3RyaW5n
RW5jb2RpbmdBU0NJSV0pCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgaWYgKCFsYW5n
dWFnZVN0cmluZykKKyAgICAgICAgICAgIGxhbmd1YWdlU3RyaW5nID0gYWx0ZXJuYXRlRGljdFtA
IlFUQWx0ZXJuYXRlc19MYW5ndWFnZUNvZGVFbmNvZGluZ19SRkNfNDY0NiJdOworICAgICAgICBp
ZiAoIWxhbmd1YWdlU3RyaW5nKSB7CisgICAgICAgICAgICBMYW5nQ29kZSBsYW5nQ29kZSA9IFth
bHRlcm5hdGVEaWN0W0AiUVRBbHRlcm5hdGVzX0xhbmd1YWdlQ29kZUVuY29kaW5nX01hY1R5cGVf
TGFuZ0NvZGUiXSBpbnRWYWx1ZV07CisgICAgICAgICAgICBhdXRvIGlkZW50aWZpZXIgPSBhZG9w
dENGKENGTG9jYWxlQ3JlYXRlQ2Fub25pY2FsTG9jYWxlSWRlbnRpZmllckZyb21TY3JpcHRNYW5h
Z2VyQ29kZXMoa0NGQWxsb2NhdG9yRGVmYXVsdCwgbGFuZ0NvZGUsIDApKTsKKyAgICAgICAgICAg
IGxhbmd1YWdlU3RyaW5nID0gKE5TU3RyaW5nICopaWRlbnRpZmllci5hdXRvcmVsZWFzZSgpOwor
ICAgICAgICB9CisgICAgICAgIGlmICghbGFuZ3VhZ2VTdHJpbmcpCisgICAgICAgICAgICBjb250
aW51ZTsKKworICAgICAgICBpZCBhbHRlcm5hdGVUcmFjayA9IGFsdGVybmF0ZURpY3RbQCJRVEFs
dGVybmF0ZXNfUVRUcmFjayJdOworICAgICAgICBpZiAoIWFsdGVybmF0ZVRyYWNrKQorICAgICAg
ICAgICAgY29udGludWU7CisKKyAgICAgICAgaWYgKCFbW2FsdGVybmF0ZVRyYWNrIGF0dHJpYnV0
ZUZvcktleTpAIlFUVHJhY2tFbmFibGVkQXR0cmlidXRlIl0gYm9vbFZhbHVlXSkKKyAgICAgICAg
ICAgIGNvbnRpbnVlOworCisgICAgICAgIFtsYW5ndWFnZVRvUVRUcmFja01hcCBzZXRPYmplY3Q6
YWx0ZXJuYXRlVHJhY2sgZm9yS2V5Omxhbmd1YWdlU3RyaW5nXTsKKyAgICB9CisKKyAgICBOU0Fy
cmF5ICpwcmVmZXJyZWRMYW5ndWFnZXMgPSBbTlNCdW5kbGUgcHJlZmVycmVkTG9jYWxpemF0aW9u
c0Zyb21BcnJheTpbbGFuZ3VhZ2VUb1FUVHJhY2tNYXAgYWxsS2V5c10gZm9yUHJlZmVyZW5jZXM6
bmlsXTsKKyAgICBpZiAocHJlZmVycmVkTGFuZ3VhZ2VzLmNvdW50KSB7CisgICAgICAgIGlkIHBy
ZWZlcnJlZFRyYWNrID0gW2xhbmd1YWdlVG9RVFRyYWNrTWFwIG9iamVjdEZvcktleTpwcmVmZXJy
ZWRMYW5ndWFnZXNbMF1dOworICAgICAgICBpZiAocHJlZmVycmVkVHJhY2spIHsKKyAgICAgICAg
ICAgIC8vICtbTlNCdW5kbGUgcHJlZmVycmVkTG9jYWxpemF0aW9uc0Zyb21BcnJheTpmb3JQcmVm
ZXJlbmNlc10gbWF5IHJldHVybiBhIGxhbmd1YWdlIHdoaWNoIHdhcworICAgICAgICAgICAgLy8g
bm90IHByZXNlbnQgaW4gcHJlZmVycmVkTGFuZ3VhZ2VzLCBhbmQgd2lsbCB0aGVyZWZvcmUgbm90
IGhhdmUgYW4gYXNzb2NpYXRlZCB0cmFjay4KKyAgICAgICAgICAgIFttb3ZpZSBzZWxlY3RBbHRl
cm5hdGVHcm91cFRyYWNrOnByZWZlcnJlZFRyYWNrXTsKKyAgICAgICAgfQorICAgIH0KK30KKwor
c3RhdGljIHZvaWQgc2VsZWN0UHJlZmVycmVkQWx0ZXJuYXRlcyhRVE1vdmllICptb3ZpZSkKK3sK
KyAgICBzZWxlY3RQcmVmZXJyZWRBbHRlcm5hdGVUcmFja0Zvck1lZGlhVHlwZShtb3ZpZSwgQCJ2
aWRlIik7CisgICAgc2VsZWN0UHJlZmVycmVkQWx0ZXJuYXRlVHJhY2tGb3JNZWRpYVR5cGUobW92
aWUsIEAic291biIpOworICAgIHNlbGVjdFByZWZlcnJlZEFsdGVybmF0ZVRyYWNrRm9yTWVkaWFU
eXBlKG1vdmllLCBAImNwbHAiKTsKKyAgICBzZWxlY3RQcmVmZXJyZWRBbHRlcm5hdGVUcmFja0Zv
ck1lZGlhVHlwZShtb3ZpZSwgQCJzYnRsIik7Cit9CisKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRl
UVRLaXQ6OnVwZGF0ZVN0YXRlcygpCiB7CiAgICAgTWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0ZSBv
bGROZXR3b3JrU3RhdGUgPSBtX25ldHdvcmtTdGF0ZTsKQEAgLTk2NSw3ICsxMDI4LDcgQEAgdm9p
ZCBNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6dXBkYXRlU3RhdGVzKCkKICAgICAgICAgICAgIGxv
YWRTdGF0ZSA9IFFUTW92aWVMb2FkU3RhdGVFcnJvcjsKIAogICAgICAgICBpZiAobG9hZFN0YXRl
ICE9IFFUTW92aWVMb2FkU3RhdGVFcnJvcikgewotICAgICAgICAgICAgd2tRVE1vdmllU2VsZWN0
UHJlZmVycmVkQWx0ZXJuYXRlcyhtX3F0TW92aWUuZ2V0KCkpOworICAgICAgICAgICAgc2VsZWN0
UHJlZmVycmVkQWx0ZXJuYXRlcyhtX3F0TW92aWUuZ2V0KCkpOwogICAgICAgICAgICAgY2FjaGVN
b3ZpZVNjYWxlKCk7CiAgICAgICAgICAgICBNZWRpYVBsYXllcjo6TW92aWVMb2FkVHlwZSBtb3Zp
ZVR5cGUgPSBtb3ZpZUxvYWRUeXBlKCk7CiAgICAgICAgICAgICBtX2lzU3RyZWFtaW5nID0gbW92
aWVUeXBlID09IE1lZGlhUGxheWVyOjpTdG9yZWRTdHJlYW0gfHwgbW92aWVUeXBlID09IE1lZGlh
UGxheWVyOjpMaXZlU3RyZWFtOwpAQCAtMTI2NywxMyArMTMzMCwxMyBAQCBzdGF0aWMgSGFzaFNl
dDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4gY3JlYXRlRmlsZVR5cGVzU2V0KE5T
QXJyYXkgKmZpbAogCiBzdGF0aWMgY29uc3QgSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vu
c2l0aXZlSGFzaD4mIG1pbWVDb21tb25UeXBlc0NhY2hlKCkKIHsKLSAgICBzdGF0aWMgY29uc3Qg
YXV0byBjYWNoZSA9IG1ha2VOZXZlckRlc3Ryb3llZChjcmVhdGVGaWxlVHlwZXNTZXQoW1FUTW92
aWUgbW92aWVGaWxlVHlwZXM6UVRJbmNsdWRlQ29tbW9uVHlwZXNdKSk7CisgICAgc3RhdGljIGNv
bnN0IGF1dG8gY2FjaGUgPSBtYWtlTmV2ZXJEZXN0cm95ZWQoY3JlYXRlRmlsZVR5cGVzU2V0KFtn
ZXRRVE1vdmllQ2xhc3MoKSBtb3ZpZUZpbGVUeXBlczpRVEluY2x1ZGVDb21tb25UeXBlc10pKTsK
ICAgICByZXR1cm4gY2FjaGU7CiB9IAogCiBzdGF0aWMgY29uc3QgSGFzaFNldDxTdHJpbmcsIEFT
Q0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mIG1pbWVNb2Rlcm5UeXBlc0NhY2hlKCkKIHsKLSAgICBz
dGF0aWMgY29uc3QgYXV0byBjYWNoZSA9IG1ha2VOZXZlckRlc3Ryb3llZChjcmVhdGVGaWxlVHlw
ZXNTZXQoW1FUTW92aWUgbW92aWVGaWxlVHlwZXM6KFFUTW92aWVGaWxlVHlwZU9wdGlvbnMpd2tR
VEluY2x1ZGVPbmx5TW9kZXJuTWVkaWFGaWxlVHlwZXMoKV0pKTsKKyAgICBzdGF0aWMgY29uc3Qg
YXV0byBjYWNoZSA9IG1ha2VOZXZlckRlc3Ryb3llZChjcmVhdGVGaWxlVHlwZXNTZXQoW2dldFFU
TW92aWVDbGFzcygpIG1vdmllRmlsZVR5cGVzOlFUSW5jbHVkZU9ubHlGaWdNZWRpYUZpbGVUeXBl
c10pKTsKICAgICByZXR1cm4gY2FjaGU7CiB9CiAKQEAgLTEzMjQsNyArMTM4Nyw3IEBAIGJvb2wg
TWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6OmlzQXZhaWxhYmxlKCkKIEhhc2hTZXQ8UmVmUHRyPFNl
Y3VyaXR5T3JpZ2luPj4gTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6Om9yaWdpbnNJbk1lZGlhQ2Fj
aGUoY29uc3QgU3RyaW5nJikKIHsKICAgICBIYXNoU2V0PFJlZlB0cjxTZWN1cml0eU9yaWdpbj4+
IG9yaWdpbnM7Ci0gICAgTlNBcnJheSAqbWVkaWFTaXRlcyA9IHdrUVRHZXRTaXRlc0luTWVkaWFE
b3dubG9hZENhY2hlKCk7CisgICAgTlNBcnJheSAqbWVkaWFTaXRlcyA9IFtbUVRVdGlsaXRpZXMg
cXRVdGlsaXRpZXNdIHNpdGVzSW5Eb3dubG9hZENhY2hlXTsKICAgICAKICAgICBmb3IgKE5TU3Ry
aW5nICpzaXRlIGluIG1lZGlhU2l0ZXMpIHsKICAgICAgICAgVVJMIHNpdGVBc1VSTCA9IFVSTChV
UkwoKSwgc2l0ZSk7CkBAIC0xMzM3LDE0ICsxNDAwLDE0IEBAIEhhc2hTZXQ8UmVmUHRyPFNlY3Vy
aXR5T3JpZ2luPj4gTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6Om9yaWdpbnNJbk1lZGlhQ2FjaGUo
Y29uCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0OjpjbGVhck1lZGlhQ2FjaGUoY29uc3Qg
U3RyaW5nJiwgc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCkKIHsKICAgICBM
T0coTWVkaWEsICJNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6Y2xlYXJNZWRpYUNhY2hlKCkiKTsK
LSAgICB3a1FUQ2xlYXJNZWRpYURvd25sb2FkQ2FjaGUoKTsKKyAgICBbW1FUVXRpbGl0aWVzIHF0
VXRpbGl0aWVzXSBjbGVhckRvd25sb2FkQ2FjaGVdOwogfQogCiB2b2lkIE1lZGlhUGxheWVyUHJp
dmF0ZVFUS2l0OjpjbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5zKGNvbnN0IFN0cmluZyYsIGNvbnN0
IEhhc2hTZXQ8UmVmUHRyPFNlY3VyaXR5T3JpZ2luPj4mIG9yaWdpbnMpCiB7CiAgICAgTE9HKE1l
ZGlhLCAiTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6OmNsZWFyTWVkaWFDYWNoZUZvck9yaWdpbnMo
KSIpOwogICAgIGZvciAoYXV0byYgb3JpZ2luIDogb3JpZ2lucykKLSAgICAgICAgd2tRVENsZWFy
TWVkaWFEb3dubG9hZENhY2hlRm9yU2l0ZShvcmlnaW4tPnRvUmF3U3RyaW5nKCkpOworICAgICAg
ICBbW1FUVXRpbGl0aWVzIHF0VXRpbGl0aWVzXSBjbGVhckRvd25sb2FkQ2FjaGVGb3JTaXRlOm9y
aWdpbi0+dG9SYXdTdHJpbmcoKV07CiB9CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6
OmRpc2FibGVVbnN1cHBvcnRlZFRyYWNrcygpCkBAIC0xNDY4LDcgKzE1MzEsNyBAQCBib29sIE1l
ZGlhUGxheWVyUHJpdmF0ZVFUS2l0OjpoYXNTaW5nbGVTZWN1cml0eU9yaWdpbigpIGNvbnN0CiAg
ICAgaWYgKCFtX3F0TW92aWUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIFJlZjxTZWN1
cml0eU9yaWdpbj4gcmVzb2x2ZWRPcmlnaW4gPSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKFVSTCh3
a1FUTW92aWVSZXNvbHZlZFVSTChtX3F0TW92aWUuZ2V0KCkpKSk7CisgICAgUmVmPFNlY3VyaXR5
T3JpZ2luPiByZXNvbHZlZE9yaWdpbiA9IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoVVJMKFttX3F0
TW92aWUgVVJMXSkpOwogICAgIFJlZjxTZWN1cml0eU9yaWdpbj4gcmVxdWVzdGVkT3JpZ2luID0g
U2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZyb21TdHJpbmcobV9tb3ZpZVVSTCk7CiAgICAgcmV0dXJu
IHJlc29sdmVkT3JpZ2luLT5pc1NhbWVTY2hlbWVIb3N0UG9ydChyZXF1ZXN0ZWRPcmlnaW4uZ2V0
KCkpOwogfQpAQCAtMTQ3NiwxNSArMTUzOSwyMSBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZVFU
S2l0OjpoYXNTaW5nbGVTZWN1cml0eU9yaWdpbigpIGNvbnN0CiBNZWRpYVBsYXllcjo6TW92aWVM
b2FkVHlwZSBNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6bW92aWVMb2FkVHlwZSgpIGNvbnN0CiB7
CiAgICAgaWYgKCFtX3F0TW92aWUpCi0gICAgICAgIHJldHVybiBNZWRpYVBsYXllcjo6VW5rbm93
bjsKLQotICAgIE1lZGlhUGxheWVyOjpNb3ZpZUxvYWRUeXBlIG1vdmllVHlwZSA9IChNZWRpYVBs
YXllcjo6TW92aWVMb2FkVHlwZSl3a1FUTW92aWVHZXRUeXBlKG1fcXRNb3ZpZS5nZXQoKSk7Ci0K
LSAgICAvLyBDYW4ndCBpbmNsdWRlIFdlYktpdFN5c3RlbUludGVyZmFjZSBmcm9tIFdlYkNvcmUg
c28gd2UgY2FuJ3QgZ2V0IHRoZSBlbnVtIHJldHVybmVkCi0gICAgLy8gYnkgd2tRVE1vdmllR2V0
VHlwZSwgYnV0IGF0IGxlYXN0IHZlcmlmeSB0aGF0IHRoZSB2YWx1ZSBpcyBpbiB0aGUgdmFsaWQg
cmFuZ2UuCi0gICAgQVNTRVJUKG1vdmllVHlwZSA+PSBNZWRpYVBsYXllcjo6VW5rbm93biAmJiBt
b3ZpZVR5cGUgPD0gTWVkaWFQbGF5ZXI6OkxpdmVTdHJlYW0pOwotCi0gICAgcmV0dXJuIG1vdmll
VHlwZTsKKyAgICAgICAgcmV0dXJuIE1lZGlhUGxheWVyOjpNb3ZpZUxvYWRUeXBlOjpVbmtub3du
OworCisgICAgVUludDMyIG1vdmllVHlwZSA9IFttX3F0TW92aWUgbW92aWVUeXBlXTsKKyAgICBz
d2l0Y2ggKG1vdmllVHlwZSkgeworICAgIGNhc2UgUVRNb3ZpZVR5cGVMb2NhbDoKKyAgICBjYXNl
IFFUTW92aWVUeXBlRmFzdFN0YXJ0OgorICAgICAgICByZXR1cm4gTWVkaWFQbGF5ZXI6Ok1vdmll
TG9hZFR5cGU6OkRvd25sb2FkOworICAgIGNhc2UgUVRNb3ZpZVR5cGVMaXZlU3RyZWFtOgorICAg
ICAgICByZXR1cm4gTWVkaWFQbGF5ZXI6Ok1vdmllTG9hZFR5cGU6OkxpdmVTdHJlYW07CisgICAg
Y2FzZSBRVE1vdmllVHlwZVN0b3JlZFN0cmVhbToKKyAgICAgICAgcmV0dXJuIE1lZGlhUGxheWVy
OjpNb3ZpZUxvYWRUeXBlOjpTdG9yZWRTdHJlYW07CisgICAgY2FzZSBRVE1vdmllVHlwZVVua25v
d246CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIE1lZGlhUGxheWVyOjpNb3ZpZUxvYWRU
eXBlOjpVbmtub3duOworICAgIH0KIH0KIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6
c2V0UHJlbG9hZChNZWRpYVBsYXllcjo6UHJlbG9hZCBwcmVsb2FkKQpAQCAtMTUxNSw3ICsxNTg0
LDcgQEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6Y2FuU2F2ZU1lZGlhRGF0YSgpIGNv
bnN0CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmIChtX3F0TW92aWUpCi0gICAgICAg
IHVybCA9IFVSTCh3a1FUTW92aWVSZXNvbHZlZFVSTChtX3F0TW92aWUuZ2V0KCkpKTsKKyAgICAg
ICAgdXJsID0gVVJMKFttX3F0TW92aWUgVVJMXSk7CiAgICAgZWxzZQogICAgICAgICB1cmwgPSBV
UkwoUGFyc2VkVVJMU3RyaW5nLCBtX21vdmllVVJMKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmgKaW5kZXggMjNmZjIzZmNm
NDU4YjQwNzg5YjAyZTBhZWMxMmIyMDAwMTFmYzViYi4uZjY3NTk1MDlhMTFmY2UzMzQxM2ZlNjkw
MzNhNDY4NTZmNTk3NDU1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFj
L1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
YWMvV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oCkBAIC0xMzEsMzIgKzEzMSw3IEBAIGV4dGVybiBk
b3VibGUgKCp3a0dldE5TVVJMUmVzcG9uc2VDYWxjdWxhdGVkRXhwaXJhdGlvbikoTlNVUkxSZXNw
b25zZSAqcmVzcG9uc2UpCiBleHRlcm4gQk9PTCAoKndrR2V0TlNVUkxSZXNwb25zZU11c3RSZXZh
bGlkYXRlKShOU1VSTFJlc3BvbnNlICpyZXNwb25zZSk7CiBleHRlcm4gQk9PTCAoKndrSGl0VGVz
dE1lZGlhVUlQYXJ0KShpbnQgcGFydCwgQ0dSZWN0IGJvdW5kcywgQ0dQb2ludCBwb2ludCk7CiBl
eHRlcm4gdm9pZCAoKndrTWVhc3VyZU1lZGlhVUlQYXJ0KShpbnQgcGFydCwgQ0dSZWN0ICpib3Vu
ZHMsIENHU2l6ZSAqbmF0dXJhbFNpemUpOwotZXh0ZXJuIE5TVmlldyAqKCp3a0NyZWF0ZU1lZGlh
VUlCYWNrZ3JvdW5kVmlldykodm9pZCk7CiAKLXR5cGVkZWYgZW51bSB7Ci0gICAgd2tNZWRpYVVJ
Q29udHJvbFRpbWVsaW5lLAotICAgIHdrTWVkaWFVSUNvbnRyb2xTbGlkZXIsCi0gICAgd2tNZWRp
YVVJQ29udHJvbFBsYXlQYXVzZUJ1dHRvbiwKLSAgICB3a01lZGlhVUlDb250cm9sRXhpdEZ1bGxz
Y3JlZW5CdXR0b24sCi0gICAgd2tNZWRpYVVJQ29udHJvbFJld2luZEJ1dHRvbiwKLSAgICB3a01l
ZGlhVUlDb250cm9sRmFzdEZvcndhcmRCdXR0b24sCi0gICAgd2tNZWRpYVVJQ29udHJvbFZvbHVt
ZVVwQnV0dG9uLAotICAgIHdrTWVkaWFVSUNvbnRyb2xWb2x1bWVEb3duQnV0dG9uCi19IHdrTWVk
aWFVSUNvbnRyb2xUeXBlOwotZXh0ZXJuIE5TQ29udHJvbCAqKCp3a0NyZWF0ZU1lZGlhVUlDb250
cm9sKShpbnQpOwotCi1leHRlcm4gdW5zaWduZWQgKCp3a1FUSW5jbHVkZU9ubHlNb2Rlcm5NZWRp
YUZpbGVUeXBlcykodm9pZCk7Ci1leHRlcm4gdm9pZCAoKndrUVRNb3ZpZURpc2FibGVDb21wb25l
bnQpKHVpbnQzMl90WzVdKTsKLWV4dGVybiBmbG9hdCAoKndrUVRNb3ZpZU1heFRpbWVMb2FkZWQp
KFFUTW92aWUqKTsKLWV4dGVybiBOU1N0cmluZyAqKCp3a1FUTW92aWVNYXhUaW1lTG9hZGVkQ2hh
bmdlTm90aWZpY2F0aW9uKSh2b2lkKTsKLWV4dGVybiBpbnQgKCp3a1FUTW92aWVHZXRUeXBlKShR
VE1vdmllKik7Ci1leHRlcm4gQk9PTCAoKndrUVRNb3ZpZUhhc0Nsb3NlZENhcHRpb25zKShRVE1v
dmllKik7Ci1leHRlcm4gTlNVUkwgKigqd2tRVE1vdmllUmVzb2x2ZWRVUkwpKFFUTW92aWUqKTsK
LWV4dGVybiB2b2lkICgqd2tRVE1vdmllU2V0U2hvd0Nsb3NlZENhcHRpb25zKShRVE1vdmllKiwg
Qk9PTCk7Ci1leHRlcm4gdm9pZCAoKndrUVRNb3ZpZVNlbGVjdFByZWZlcnJlZEFsdGVybmF0ZXMp
KFFUTW92aWUqKTsKLWV4dGVybiBOU0FycmF5ICooKndrUVRHZXRTaXRlc0luTWVkaWFEb3dubG9h
ZENhY2hlKSgpOwotZXh0ZXJuIHZvaWQgKCp3a1FUQ2xlYXJNZWRpYURvd25sb2FkQ2FjaGVGb3JT
aXRlKShOU1N0cmluZyAqc2l0ZSk7Ci1leHRlcm4gdm9pZCAoKndrUVRDbGVhck1lZGlhRG93bmxv
YWRDYWNoZSkoKTsKIGV4dGVybiB2b2lkICgqd2tTZXRDb29raWVTdG9yYWdlUHJpdmF0ZUJyb3dz
aW5nRW5hYmxlZCkoQk9PTCk7CiAjZW5kaWYKIGV4dGVybiB2b2lkICgqd2tTZXRDT05ORUNUUHJv
eHlGb3JTdHJlYW0pKENGUmVhZFN0cmVhbVJlZiwgQ0ZTdHJpbmdSZWYgcHJveHlIb3N0LCBDRk51
bWJlclJlZiBwcm94eVBvcnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2UubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
YWMvV2ViQ29yZVN5c3RlbUludGVyZmFjZS5tbQppbmRleCBjNzIzZDc0NGIwNDZkMjEwZmFhYjIy
YzJhNDFkZGYwMjQ2M2RhOTNmLi4yZWFiZDRmMTRmMzkzMzZlMzM0MGNlOGVkZWUzN2U0ODJkZDY4
MDJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZVN5c3Rl
bUludGVyZmFjZS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZVN5
c3RlbUludGVyZmFjZS5tbQpAQCAtMzYsMjMgKzM2LDkgQEAgdm9pZCAoKndrRHJhd01lZGlhU2xp
ZGVyVHJhY2spKENHQ29udGV4dFJlZiBjb250ZXh0LCBDR1JlY3QgcmVjdCwgZmxvYXQgdGltZUxv
YWQKIEJPT0wgKCp3a0hpdFRlc3RNZWRpYVVJUGFydCkoaW50IHBhcnQsIENHUmVjdCBib3VuZHMs
IENHUG9pbnQgcG9pbnQpOwogdm9pZCAoKndrRHJhd01lZGlhVUlQYXJ0KShpbnQgcGFydCwgQ0dD
b250ZXh0UmVmIGNvbnRleHQsIENHUmVjdCByZWN0LCB1bnNpZ25lZCBzdGF0ZSk7CiB2b2lkICgq
d2tNZWFzdXJlTWVkaWFVSVBhcnQpKGludCBwYXJ0LCBDR1JlY3QgKmJvdW5kcywgQ0dTaXplICpu
YXR1cmFsU2l6ZSk7Ci1OU1ZpZXcgKigqd2tDcmVhdGVNZWRpYVVJQmFja2dyb3VuZFZpZXcpKHZv
aWQpOwotTlNDb250cm9sICooKndrQ3JlYXRlTWVkaWFVSUNvbnRyb2wpKGludCk7CiBOU1RpbWVJ
bnRlcnZhbCAoKndrR2V0TlNVUkxSZXNwb25zZUNhbGN1bGF0ZWRFeHBpcmF0aW9uKShOU1VSTFJl
c3BvbnNlICpyZXNwb25zZSk7CiBCT09MICgqd2tHZXROU1VSTFJlc3BvbnNlTXVzdFJldmFsaWRh
dGUpKE5TVVJMUmVzcG9uc2UgKnJlc3BvbnNlKTsKIHZvaWQgKCp3a1BvcHVwTWVudSkoTlNNZW51
KiwgTlNQb2ludCBsb2NhdGlvbiwgZmxvYXQgd2lkdGgsIE5TVmlldyosIGludCBzZWxlY3RlZEl0
ZW0sIE5TRm9udCosIE5TQ29udHJvbFNpemUgY29udHJvbFNpemUsIGJvb2wgdXNlc0N1c3RvbUFw
cGVhcmFuY2UpOwotdW5zaWduZWQgKCp3a1FUSW5jbHVkZU9ubHlNb2Rlcm5NZWRpYUZpbGVUeXBl
cykodm9pZCk7Ci12b2lkICgqd2tRVE1vdmllRGlzYWJsZUNvbXBvbmVudCkodWludDMyX3RbNV0p
OwotZmxvYXQgKCp3a1FUTW92aWVNYXhUaW1lTG9hZGVkKShRVE1vdmllKik7Ci1OU1N0cmluZyAq
KCp3a1FUTW92aWVNYXhUaW1lTG9hZGVkQ2hhbmdlTm90aWZpY2F0aW9uKSh2b2lkKTsKLWludCAo
KndrUVRNb3ZpZUdldFR5cGUpKFFUTW92aWUqKTsKLUJPT0wgKCp3a1FUTW92aWVIYXNDbG9zZWRD
YXB0aW9ucykoUVRNb3ZpZSopOwotTlNVUkwgKigqd2tRVE1vdmllUmVzb2x2ZWRVUkwpKFFUTW92
aWUqKTsKLXZvaWQgKCp3a1FUTW92aWVTZXRTaG93Q2xvc2VkQ2FwdGlvbnMpKFFUTW92aWUqLCBC
T09MKTsKLXZvaWQgKCp3a1FUTW92aWVTZWxlY3RQcmVmZXJyZWRBbHRlcm5hdGVzKShRVE1vdmll
Kik7Ci1OU0FycmF5ICooKndrUVRHZXRTaXRlc0luTWVkaWFEb3dubG9hZENhY2hlKSgpOwotdm9p
ZCAoKndrUVRDbGVhck1lZGlhRG93bmxvYWRDYWNoZUZvclNpdGUpKE5TU3RyaW5nICpzaXRlKTsK
LXZvaWQgKCp3a1FUQ2xlYXJNZWRpYURvd25sb2FkQ2FjaGUpKCk7CiAKIHZvaWQgKCp3a1NldENP
Tk5FQ1RQcm94eUZvclN0cmVhbSkoQ0ZSZWFkU3RyZWFtUmVmLCBDRlN0cmluZ1JlZiBwcm94eUhv
c3QsIENGTnVtYmVyUmVmIHByb3h5UG9ydCk7CiB2b2lkICgqd2tTZXRDT05ORUNUUHJveHlBdXRo
b3JpemF0aW9uRm9yU3RyZWFtKShDRlJlYWRTdHJlYW1SZWYsIENGU3RyaW5nUmVmIHByb3h5QXV0
aG9yaXphdGlvblN0cmluZyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
YWMvV2ViVmlkZW9GdWxsc2NyZWVuSFVEV2luZG93Q29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21hYy9XZWJWaWRlb0Z1bGxzY3JlZW5IVURXaW5kb3dDb250cm9sbGVyLm1t
CmluZGV4IGVmYjZlMmIyNzNjNTgzNTEzM2U3NWIxNjI2YTk1YjA0OTBjNzc5OWMuLmZjMGY1MTBj
N2EyY2IyNDk3OGQwNGEwYzQ4MDZlZDRjNzFjNTMyMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21hYy9XZWJWaWRlb0Z1bGxzY3JlZW5IVURXaW5kb3dDb250cm9sbGVyLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJWaWRlb0Z1bGxzY3JlZW5IVURX
aW5kb3dDb250cm9sbGVyLm1tCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAwOS0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAwOS0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzEsOSArMzEsMzggQEAKICNpbXBvcnQgPFdlYkNvcmUv
SFRNTFZpZGVvRWxlbWVudC5oPgogI2ltcG9ydCA8V2ViQ29yZVN5c3RlbUludGVyZmFjZS5oPgog
I2ltcG9ydCA8cGFsL3NwaS9jZy9Db3JlR3JhcGhpY3NTUEkuaD4KKyNpbXBvcnQgPHBhbC9zcGkv
bWFjL1FUS2l0U1BJLmg+CisjaW1wb3J0IDx3dGYvU29mdExpbmtpbmcuaD4KKworU09GVF9MSU5L
X0ZSQU1FV09SSyhRVEtpdCkKKworU09GVF9MSU5LX0NMQVNTKFFUS2l0LCBRVEhVREJhY2tncm91
bmRWaWV3KQorU09GVF9MSU5LX0NMQVNTKFFUS2l0LCBRVEhVREJ1dHRvbikKK1NPRlRfTElOS19D
TEFTUyhRVEtpdCwgUVRIVURTbGlkZXIpCitTT0ZUX0xJTktfQ0xBU1MoUVRLaXQsIFFUSFVEVGlt
ZWxpbmUpCisKKyNkZWZpbmUgUVRIVURCYWNrZ3JvdW5kVmlldyBnZXRRVEhVREJhY2tncm91bmRW
aWV3Q2xhc3MoKQorI2RlZmluZSBRVEhVREJ1dHRvbiBnZXRRVEhVREJ1dHRvbkNsYXNzKCkKKyNk
ZWZpbmUgUVRIVURTbGlkZXIgZ2V0UVRIVURTbGlkZXJDbGFzcygpCisjZGVmaW5lIFFUSFVEVGlt
ZWxpbmUgZ2V0UVRIVURUaW1lbGluZUNsYXNzKCkKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CiAKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworZW51bSBjbGFzcyBNZWRpYVVJQ29udHJvbCB7Cisg
ICAgVGltZWxpbmUsCisgICAgU2xpZGVyLAorICAgIFBsYXlQYXVzZUJ1dHRvbiwKKyAgICBFeGl0
RnVsbHNjcmVlbkJ1dHRvbiwKKyAgICBSZXdpbmRCdXR0b24sCisgICAgRmFzdEZvcndhcmRCdXR0
b24sCisgICAgVm9sdW1lVXBCdXR0b24sCisgICAgVm9sdW1lRG93bkJ1dHRvbiwKK307CisKK30K
KwogQGludGVyZmFjZSBXZWJWaWRlb0Z1bGxzY3JlZW5IVURXaW5kb3dDb250cm9sbGVyIChQcml2
YXRlKSA8TlNXaW5kb3dEZWxlZ2F0ZT4KIAogLSAodm9pZCl1cGRhdGVUaW1lOwpAQCAtMjY1LDEw
ICsyOTQsNjggQEAgLSAodm9pZCljbG9zZVdpbmRvdwogICAgIFtzZWxmIHNldFdpbmRvdzpuaWxd
OwogfQogCi1zdGF0aWMgTlNDb250cm9sICpjcmVhdGVDb250cm9sV2l0aE1lZGlhVUlDb250cm9s
VHlwZShpbnQgY29udHJvbFR5cGUsIE5TUmVjdCBmcmFtZSkKK3N0YXRpYyBOU0NvbnRyb2wgKmNy
ZWF0ZU1lZGlhVUlDb250cm9sKE1lZGlhVUlDb250cm9sIGNvbnRyb2xUeXBlKQoreworICAgIHN3
aXRjaCAoY29udHJvbFR5cGUpIHsKKyAgICBjYXNlIE1lZGlhVUlDb250cm9sOjpUaW1lbGluZTog
eworICAgICAgICBOU1NsaWRlciAqc2xpZGVyID0gW1tRVEhVRFRpbWVsaW5lIGFsbG9jXSBpbml0
XTsKKyAgICAgICAgW1tzbGlkZXIgY2VsbF0gc2V0Q29udGludW91czpZRVNdOworICAgICAgICBy
ZXR1cm4gc2xpZGVyOworICAgIH0KKyAgICBjYXNlIE1lZGlhVUlDb250cm9sOjpTbGlkZXI6IHsK
KyAgICAgICAgTlNCdXR0b24gKnNsaWRlciA9IFtbUVRIVURTbGlkZXIgYWxsb2NdIGluaXRdOwor
ICAgICAgICBbW3NsaWRlciBjZWxsXSBzZXRDb250aW51b3VzOllFU107CisgICAgICAgIHJldHVy
biBzbGlkZXI7CisgICAgfQorICAgIGNhc2UgTWVkaWFVSUNvbnRyb2w6OlBsYXlQYXVzZUJ1dHRv
bjogeworICAgICAgICBOU0J1dHRvbiAqYnV0dG9uID0gW1tRVEhVREJ1dHRvbiBhbGxvY10gaW5p
dF07CisgICAgICAgIFtidXR0b24gc2V0SW1hZ2U6W05TSW1hZ2UgaW1hZ2VOYW1lZDpAIk5TUGxh
eVRlbXBsYXRlIl1dOworICAgICAgICBbYnV0dG9uIHNldEFsdGVybmF0ZUltYWdlOltOU0ltYWdl
IGltYWdlTmFtZWQ6QCJOU1BhdXNlUVRQcml2YXRlVGVtcGxhdGUiXV07CisKKyAgICAgICAgW1ti
dXR0b24gY2VsbF0gc2V0U2hvd3NTdGF0ZUJ5Ok5TQ29udGVudHNDZWxsTWFza107CisgICAgICAg
IFtidXR0b24gc2V0Qm9yZGVyZWQ6Tk9dOworICAgICAgICByZXR1cm4gYnV0dG9uOworICAgIH0K
KyAgICBjYXNlIE1lZGlhVUlDb250cm9sOjpFeGl0RnVsbHNjcmVlbkJ1dHRvbjogeworICAgICAg
ICBOU0J1dHRvbiAqYnV0dG9uID0gW1tRVEhVREJ1dHRvbiBhbGxvY10gaW5pdF07CisgICAgICAg
IFtidXR0b24gc2V0SW1hZ2U6W05TSW1hZ2UgaW1hZ2VOYW1lZDpAIk5TRXhpdEZ1bGxTY3JlZW5U
ZW1wbGF0ZSJdXTsKKyAgICAgICAgW2J1dHRvbiBzZXRCb3JkZXJlZDpOT107CisgICAgICAgIHJl
dHVybiBidXR0b247CisgICAgfQorICAgIGNhc2UgTWVkaWFVSUNvbnRyb2w6OlJld2luZEJ1dHRv
bjogeworICAgICAgICBOU0J1dHRvbiAqYnV0dG9uID0gW1tRVEhVREJ1dHRvbiBhbGxvY10gaW5p
dF07CisgICAgICAgIFtidXR0b24gc2V0SW1hZ2U6W05TSW1hZ2UgaW1hZ2VOYW1lZDpAIk5TUmV3
aW5kVGVtcGxhdGUiXV07CisgICAgICAgIFtidXR0b24gc2V0Qm9yZGVyZWQ6Tk9dOworICAgICAg
ICByZXR1cm4gYnV0dG9uOworICAgIH0KKyAgICBjYXNlIE1lZGlhVUlDb250cm9sOjpGYXN0Rm9y
d2FyZEJ1dHRvbjogeworICAgICAgICBOU0J1dHRvbiAqYnV0dG9uID0gW1tRVEhVREJ1dHRvbiBh
bGxvY10gaW5pdF07CisgICAgICAgIFtidXR0b24gc2V0SW1hZ2U6W05TSW1hZ2UgaW1hZ2VOYW1l
ZDpAIk5TRmFzdEZvcndhcmRUZW1wbGF0ZSJdXTsKKyAgICAgICAgW2J1dHRvbiBzZXRCb3JkZXJl
ZDpOT107CisgICAgICAgIHJldHVybiBidXR0b247CisgICAgfQorICAgIGNhc2UgTWVkaWFVSUNv
bnRyb2w6OlZvbHVtZVVwQnV0dG9uOiB7CisgICAgICAgIE5TQnV0dG9uICpidXR0b24gPSBbW1FU
SFVEQnV0dG9uIGFsbG9jXSBpbml0XTsKKyAgICAgICAgW2J1dHRvbiBzZXRJbWFnZTpbTlNJbWFn
ZSBpbWFnZU5hbWVkOkAiTlNBdWRpb091dHB1dFZvbHVtZUhpZ2hUZW1wbGF0ZSJdXTsKKyAgICAg
ICAgW2J1dHRvbiBzZXRCb3JkZXJlZDpOT107CisgICAgICAgIHJldHVybiBidXR0b247CisgICAg
fQorICAgIGNhc2UgTWVkaWFVSUNvbnRyb2w6OlZvbHVtZURvd25CdXR0b246IHsKKyAgICAgICAg
TlNCdXR0b24gKmJ1dHRvbiA9IFtbUVRIVURCdXR0b24gYWxsb2NdIGluaXRdOworICAgICAgICBb
YnV0dG9uIHNldEltYWdlOltOU0ltYWdlIGltYWdlTmFtZWQ6QCJOU0F1ZGlvT3V0cHV0Vm9sdW1l
TG93VGVtcGxhdGUiXV07CisgICAgICAgIFtidXR0b24gc2V0Qm9yZGVyZWQ6Tk9dOworICAgICAg
ICByZXR1cm4gYnV0dG9uOworICAgIH0KKyAgICB9CisKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKKyAgICByZXR1cm4gbmlsOworfQorCitzdGF0aWMgTlNDb250cm9sICpjcmVhdGVDb250cm9s
V2l0aE1lZGlhVUlDb250cm9sVHlwZShNZWRpYVVJQ29udHJvbCBjb250cm9sVHlwZSwgTlNSZWN0
IGZyYW1lKQogewotICAgIE5TQ29udHJvbCAqY29udHJvbCA9IHdrQ3JlYXRlTWVkaWFVSUNvbnRy
b2woY29udHJvbFR5cGUpOwotICAgIFtjb250cm9sIHNldEZyYW1lOmZyYW1lXTsKKyAgICBOU0Nv
bnRyb2wgKmNvbnRyb2wgPSBjcmVhdGVNZWRpYVVJQ29udHJvbChjb250cm9sVHlwZSk7CisgICAg
Y29udHJvbC5mcmFtZSA9IGZyYW1lOwogICAgIHJldHVybiBjb250cm9sOwogfQogCkBAIC0yODUs
NiArMzcyLDIxIEBAIHN0YXRpYyBOU1RleHRGaWVsZCAqY3JlYXRlVGltZVRleHRGaWVsZChOU1Jl
Y3QgZnJhbWUpCiAgICAgcmV0dXJuIHRleHRGaWVsZDsKIH0KIAorc3RhdGljIE5TVmlldyAqY3Jl
YXRlTWVkaWFVSUJhY2tncm91bmRWaWV3KCkKK3sKKyAgICBpZCB2aWV3ID0gW1tRVEhVREJhY2tn
cm91bmRWaWV3IGFsbG9jXSBpbml0XTsKKworICAgIGNvbnN0IENHRmxvYXQgcXVpY2tUaW1lUGxh
eWVySFVESGVpZ2h0ID0gNTk7CisgICAgY29uc3QgQ0dGbG9hdCBxdWlja1RpbWVQbGF5ZXJIVURD
b250ZW50Qm9yZGVyUG9zaXRpb24gPSAzODsKKworI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHB1
c2gKKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBpZ25vcmVkICItV2RlcHJlY2F0ZWQtZGVjbGFy
YXRpb25zIgorICAgIFt2aWV3IHNldENvbnRlbnRCb3JkZXJQb3NpdGlvbjpxdWlja1RpbWVQbGF5
ZXJIVURDb250ZW50Qm9yZGVyUG9zaXRpb24gLyBxdWlja1RpbWVQbGF5ZXJIVURIZWlnaHRdOwor
I3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHBvcAorCisgICAgcmV0dXJuIHZpZXc7Cit9CisKIC0g
KHZvaWQpd2luZG93RGlkTG9hZAogewogICAgIHN0YXRpYyBjb25zdCBDR0Zsb2F0IGhvcml6b250
YWxNYXJnaW4gPSAxMDsKQEAgLTMxMCw3ICs0MTIsNyBAQCAtICh2b2lkKXdpbmRvd0RpZExvYWQK
ICAgICBOU1dpbmRvdyAqd2luZG93ID0gW3NlbGYgd2luZG93XTsKICAgICBBU1NFUlQod2luZG93
KTsKIAotICAgIE5TVmlldyAqYmFja2dyb3VuZCA9IHdrQ3JlYXRlTWVkaWFVSUJhY2tncm91bmRW
aWV3KCk7CisgICAgTlNWaWV3ICpiYWNrZ3JvdW5kID0gY3JlYXRlTWVkaWFVSUJhY2tncm91bmRW
aWV3KCk7CiAKICAgICBbd2luZG93IHNldENvbnRlbnRWaWV3OmJhY2tncm91bmRdOwogICAgIF9h
cmVhID0gW1tOU1RyYWNraW5nQXJlYSBhbGxvY10gaW5pdFdpdGhSZWN0OltiYWNrZ3JvdW5kIGJv
dW5kc10gb3B0aW9uczpOU1RyYWNraW5nTW91c2VFbnRlcmVkQW5kRXhpdGVkIHwgTlNUcmFja2lu
Z0FjdGl2ZUFsd2F5cyBvd25lcjpzZWxmIHVzZXJJbmZvOm5pbF07CkBAIC0zMjAsMTQgKzQyMiwx
NCBAQCAtICh2b2lkKXdpbmRvd0RpZExvYWQKICAgICBOU1ZpZXcgKmNvbnRlbnRWaWV3ID0gW3dp
bmRvdyBjb250ZW50Vmlld107CiAKICAgICBDR0Zsb2F0IGNlbnRlciA9IENHRmxvb3IoKHdpbmRv
d1dpZHRoIC0gcGxheUJ1dHRvbldpZHRoKSAvIDIpOwotICAgIF9wbGF5QnV0dG9uID0gKE5TQnV0
dG9uICopY3JlYXRlQ29udHJvbFdpdGhNZWRpYVVJQ29udHJvbFR5cGUod2tNZWRpYVVJQ29udHJv
bFBsYXlQYXVzZUJ1dHRvbiwgTlNNYWtlUmVjdChjZW50ZXIsIHdpbmRvd0hlaWdodCAtIHBsYXlC
dXR0b25Ub3BNYXJnaW4gLSBwbGF5QnV0dG9uSGVpZ2h0LCBwbGF5QnV0dG9uV2lkdGgsIHBsYXlC
dXR0b25IZWlnaHQpKTsKKyAgICBfcGxheUJ1dHRvbiA9IChOU0J1dHRvbiAqKWNyZWF0ZUNvbnRy
b2xXaXRoTWVkaWFVSUNvbnRyb2xUeXBlKE1lZGlhVUlDb250cm9sOjpQbGF5UGF1c2VCdXR0b24s
IE5TTWFrZVJlY3QoY2VudGVyLCB3aW5kb3dIZWlnaHQgLSBwbGF5QnV0dG9uVG9wTWFyZ2luIC0g
cGxheUJ1dHRvbkhlaWdodCwgcGxheUJ1dHRvbldpZHRoLCBwbGF5QnV0dG9uSGVpZ2h0KSk7CiAg
ICAgQVNTRVJUKFtfcGxheUJ1dHRvbiBpc0tpbmRPZkNsYXNzOltOU0J1dHRvbiBjbGFzc11dKTsK
ICAgICBbX3BsYXlCdXR0b24gc2V0VGFyZ2V0OnNlbGZdOwogICAgIFtfcGxheUJ1dHRvbiBzZXRB
Y3Rpb246QHNlbGVjdG9yKHRvZ2dsZVBsYXlpbmc6KV07CiAgICAgW2NvbnRlbnRWaWV3IGFkZFN1
YnZpZXc6X3BsYXlCdXR0b25dOwogCiAgICAgQ0dGbG9hdCBjbG9zZVRvUmlnaHQgPSB3aW5kb3dX
aWR0aCAtIGhvcml6b250YWxNYXJnaW4gLSBleGl0RnVsbHNjcmVlbkJ1dHRvbldpZHRoOwotICAg
IE5TQ29udHJvbCAqZXhpdEZ1bGxzY3JlZW5CdXR0b24gPSBjcmVhdGVDb250cm9sV2l0aE1lZGlh
VUlDb250cm9sVHlwZSh3a01lZGlhVUlDb250cm9sRXhpdEZ1bGxzY3JlZW5CdXR0b24sIE5TTWFr
ZVJlY3QoY2xvc2VUb1JpZ2h0LCB3aW5kb3dIZWlnaHQgLSBleGl0RnVsbHNjcmVlbkJ1dHRvblRv
cE1hcmdpbiAtIGV4aXRGdWxsc2NyZWVuQnV0dG9uSGVpZ2h0LCBleGl0RnVsbHNjcmVlbkJ1dHRv
bldpZHRoLCBleGl0RnVsbHNjcmVlbkJ1dHRvbkhlaWdodCkpOworICAgIE5TQ29udHJvbCAqZXhp
dEZ1bGxzY3JlZW5CdXR0b24gPSBjcmVhdGVDb250cm9sV2l0aE1lZGlhVUlDb250cm9sVHlwZShN
ZWRpYVVJQ29udHJvbDo6RXhpdEZ1bGxzY3JlZW5CdXR0b24sIE5TTWFrZVJlY3QoY2xvc2VUb1Jp
Z2h0LCB3aW5kb3dIZWlnaHQgLSBleGl0RnVsbHNjcmVlbkJ1dHRvblRvcE1hcmdpbiAtIGV4aXRG
dWxsc2NyZWVuQnV0dG9uSGVpZ2h0LCBleGl0RnVsbHNjcmVlbkJ1dHRvbldpZHRoLCBleGl0RnVs
bHNjcmVlbkJ1dHRvbkhlaWdodCkpOwogICAgIFtleGl0RnVsbHNjcmVlbkJ1dHRvbiBzZXRBY3Rp
b246QHNlbGVjdG9yKGV4aXRGdWxsc2NyZWVuOildOwogICAgIFtleGl0RnVsbHNjcmVlbkJ1dHRv
biBzZXRUYXJnZXQ6c2VsZl07CiAgICAgW2NvbnRlbnRWaWV3IGFkZFN1YnZpZXc6ZXhpdEZ1bGxz
Y3JlZW5CdXR0b25dOwpAQCAtMzM1LDI3ICs0MzcsMjcgQEAgLSAodm9pZCl3aW5kb3dEaWRMb2Fk
CiAgICAgCiAgICAgQ0dGbG9hdCB2b2x1bWVDb250cm9sc0JvdHRvbSA9IHdpbmRvd0hlaWdodCAt
IHZvbHVtZUNvbnRyb2xzVG9wTWFyZ2luIC0gdm9sdW1lQnV0dG9uSGVpZ2h0OwogICAgIENHRmxv
YXQgbGVmdCA9IGhvcml6b250YWxNYXJnaW47Ci0gICAgTlNDb250cm9sICp2b2x1bWVEb3duQnV0
dG9uID0gY3JlYXRlQ29udHJvbFdpdGhNZWRpYVVJQ29udHJvbFR5cGUod2tNZWRpYVVJQ29udHJv
bFZvbHVtZURvd25CdXR0b24sIE5TTWFrZVJlY3QobGVmdCwgdm9sdW1lQ29udHJvbHNCb3R0b20s
IHZvbHVtZUJ1dHRvbldpZHRoLCB2b2x1bWVCdXR0b25IZWlnaHQpKTsKKyAgICBOU0NvbnRyb2wg
KnZvbHVtZURvd25CdXR0b24gPSBjcmVhdGVDb250cm9sV2l0aE1lZGlhVUlDb250cm9sVHlwZShN
ZWRpYVVJQ29udHJvbDo6Vm9sdW1lRG93bkJ1dHRvbiwgTlNNYWtlUmVjdChsZWZ0LCB2b2x1bWVD
b250cm9sc0JvdHRvbSwgdm9sdW1lQnV0dG9uV2lkdGgsIHZvbHVtZUJ1dHRvbkhlaWdodCkpOwog
ICAgIFtjb250ZW50VmlldyBhZGRTdWJ2aWV3OnZvbHVtZURvd25CdXR0b25dOwogICAgIFt2b2x1
bWVEb3duQnV0dG9uIHNldFRhcmdldDpzZWxmXTsKICAgICBbdm9sdW1lRG93bkJ1dHRvbiBzZXRB
Y3Rpb246QHNlbGVjdG9yKHNldFZvbHVtZVRvWmVybzopXTsKICAgICBbdm9sdW1lRG93bkJ1dHRv
biByZWxlYXNlXTsKIAogICAgIGxlZnQgKz0gdm9sdW1lQnV0dG9uV2lkdGg7Ci0gICAgX3ZvbHVt
ZVNsaWRlciA9IGNyZWF0ZUNvbnRyb2xXaXRoTWVkaWFVSUNvbnRyb2xUeXBlKHdrTWVkaWFVSUNv
bnRyb2xTbGlkZXIsIE5TTWFrZVJlY3QobGVmdCwgdm9sdW1lQ29udHJvbHNCb3R0b20gKyBDR0Zs
b29yKCh2b2x1bWVCdXR0b25IZWlnaHQgLSB2b2x1bWVTbGlkZXJIZWlnaHQpIC8gMiksIHZvbHVt
ZVNsaWRlcldpZHRoLCB2b2x1bWVTbGlkZXJIZWlnaHQpKTsKKyAgICBfdm9sdW1lU2xpZGVyID0g
Y3JlYXRlQ29udHJvbFdpdGhNZWRpYVVJQ29udHJvbFR5cGUoTWVkaWFVSUNvbnRyb2w6OlNsaWRl
ciwgTlNNYWtlUmVjdChsZWZ0LCB2b2x1bWVDb250cm9sc0JvdHRvbSArIENHRmxvb3IoKHZvbHVt
ZUJ1dHRvbkhlaWdodCAtIHZvbHVtZVNsaWRlckhlaWdodCkgLyAyKSwgdm9sdW1lU2xpZGVyV2lk
dGgsIHZvbHVtZVNsaWRlckhlaWdodCkpOwogICAgIFtfdm9sdW1lU2xpZGVyIHNldFZhbHVlOltO
U051bWJlciBudW1iZXJXaXRoRG91YmxlOltzZWxmIG1heFZvbHVtZV1dIGZvcktleTpAIm1heFZh
bHVlIl07CiAgICAgW192b2x1bWVTbGlkZXIgc2V0VGFyZ2V0OnNlbGZdOwogICAgIFtfdm9sdW1l
U2xpZGVyIHNldEFjdGlvbjpAc2VsZWN0b3Iodm9sdW1lQ2hhbmdlZDopXTsKICAgICBbY29udGVu
dFZpZXcgYWRkU3Vidmlldzpfdm9sdW1lU2xpZGVyXTsKIAogICAgIGxlZnQgKz0gdm9sdW1lU2xp
ZGVyV2lkdGggKyB2b2x1bWVVcEJ1dHRvbkxlZnRNYXJnaW47Ci0gICAgTlNDb250cm9sICp2b2x1
bWVVcEJ1dHRvbiA9IGNyZWF0ZUNvbnRyb2xXaXRoTWVkaWFVSUNvbnRyb2xUeXBlKHdrTWVkaWFV
SUNvbnRyb2xWb2x1bWVVcEJ1dHRvbiwgTlNNYWtlUmVjdChsZWZ0LCB2b2x1bWVDb250cm9sc0Jv
dHRvbSwgdm9sdW1lQnV0dG9uV2lkdGgsIHZvbHVtZUJ1dHRvbkhlaWdodCkpOworICAgIE5TQ29u
dHJvbCAqdm9sdW1lVXBCdXR0b24gPSBjcmVhdGVDb250cm9sV2l0aE1lZGlhVUlDb250cm9sVHlw
ZShNZWRpYVVJQ29udHJvbDo6Vm9sdW1lVXBCdXR0b24sIE5TTWFrZVJlY3QobGVmdCwgdm9sdW1l
Q29udHJvbHNCb3R0b20sIHZvbHVtZUJ1dHRvbldpZHRoLCB2b2x1bWVCdXR0b25IZWlnaHQpKTsK
ICAgICBbdm9sdW1lVXBCdXR0b24gc2V0VGFyZ2V0OnNlbGZdOwogICAgIFt2b2x1bWVVcEJ1dHRv
biBzZXRBY3Rpb246QHNlbGVjdG9yKHNldFZvbHVtZVRvTWF4aW11bTopXTsKICAgICBbY29udGVu
dFZpZXcgYWRkU3Vidmlldzp2b2x1bWVVcEJ1dHRvbl07CiAgICAgW3ZvbHVtZVVwQnV0dG9uIHJl
bGVhc2VdOwogCi0gICAgX3RpbWVsaW5lID0gd2tDcmVhdGVNZWRpYVVJQ29udHJvbCh3a01lZGlh
VUlDb250cm9sVGltZWxpbmUpOworICAgIF90aW1lbGluZSA9IGNyZWF0ZU1lZGlhVUlDb250cm9s
KE1lZGlhVUlDb250cm9sOjpUaW1lbGluZSk7CiAKICAgICBbX3RpbWVsaW5lIHNldFRhcmdldDpz
ZWxmXTsKICAgICBbX3RpbWVsaW5lIHNldEFjdGlvbjpAc2VsZWN0b3IodGltZWxpbmVQb3NpdGlv
bkNoYW5nZWQ6KV07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvbWFjL1dlYlN5c3RlbUludGVyZmFjZS5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViU3lzdGVtSW50ZXJmYWNlLm1tCmluZGV4IDBkZGQ1
NzE0NTliODU2ZjM5MjA1ZTExMGNjMDBjY2NhZWUzZmQwZWUuLmJkYTVkNzNkZmMxMjJmM2UwMjIz
YWFhZTU1Mjg0ZDRiMzllNTczY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViU3lzdGVtSW50ZXJmYWNlLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViU3lzdGVtSW50ZXJmYWNlLm1t
CkBAIC00MywxOCArNDMsNiBAQCB2b2lkIEluaXRXZWJDb3JlU3lzdGVtSW50ZXJmYWNlKHZvaWQp
CiAgICAgICAgIElOSVQoRHJhd01lZGlhVUlQYXJ0KTsKICAgICAgICAgSU5JVChIaXRUZXN0TWVk
aWFVSVBhcnQpOwogICAgICAgICBJTklUKE1lYXN1cmVNZWRpYVVJUGFydCk7Ci0gICAgICAgIElO
SVQoUVRJbmNsdWRlT25seU1vZGVybk1lZGlhRmlsZVR5cGVzKTsKLSAgICAgICAgSU5JVChRVE1v
dmllRGlzYWJsZUNvbXBvbmVudCk7Ci0gICAgICAgIElOSVQoUVRNb3ZpZUdldFR5cGUpOwotICAg
ICAgICBJTklUKFFUTW92aWVIYXNDbG9zZWRDYXB0aW9ucyk7Ci0gICAgICAgIElOSVQoUVRNb3Zp
ZU1heFRpbWVMb2FkZWQpOwotICAgICAgICBJTklUKFFUTW92aWVNYXhUaW1lTG9hZGVkQ2hhbmdl
Tm90aWZpY2F0aW9uKTsKLSAgICAgICAgSU5JVChRVE1vdmllUmVzb2x2ZWRVUkwpOwotICAgICAg
ICBJTklUKFFUTW92aWVTZWxlY3RQcmVmZXJyZWRBbHRlcm5hdGVzKTsKLSAgICAgICAgSU5JVChR
VE1vdmllU2V0U2hvd0Nsb3NlZENhcHRpb25zKTsKLSAgICAgICAgSU5JVChRVEdldFNpdGVzSW5N
ZWRpYURvd25sb2FkQ2FjaGUpOwotICAgICAgICBJTklUKFFUQ2xlYXJNZWRpYURvd25sb2FkQ2Fj
aGVGb3JTaXRlKTsKLSAgICAgICAgSU5JVChRVENsZWFyTWVkaWFEb3dubG9hZENhY2hlKTsKICNl
bmRpZgogICAgICAgICBJTklUKFNldENPTk5FQ1RQcm94eUF1dGhvcml6YXRpb25Gb3JTdHJlYW0p
OwogICAgICAgICBJTklUKFNldENPTk5FQ1RQcm94eUZvclN0cmVhbSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJTeXN0ZW1JbnRlcmZhY2Uu
bW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJTeXN0ZW1JbnRl
cmZhY2UubW0KaW5kZXggYTMyMDI0NTM3Y2FlNzc0MDRkMTIyYTNhMzg1NGQzYzJlN2JhMjQ5MC4u
MTc0NjU4NmIyNDJmNTJlMDdhOTlmZTkxNWFhNmI0ZjYyYTNiYzVkNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViU3lzdGVtSW50ZXJmYWNlLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlN5c3RlbUlu
dGVyZmFjZS5tbQpAQCAtNDksMjUgKzQ5LDkgQEAgdm9pZCBJbml0V2ViQ29yZVN5c3RlbUludGVy
ZmFjZSh2b2lkKQogICAgIElOSVQoRHJhd01lZGlhU2xpZGVyVHJhY2spOwogICAgIElOSVQoSGl0
VGVzdE1lZGlhVUlQYXJ0KTsKICAgICBJTklUKE1lYXN1cmVNZWRpYVVJUGFydCk7Ci0gICAgSU5J
VChDcmVhdGVNZWRpYVVJQmFja2dyb3VuZFZpZXcpOwotICAgIElOSVQoQ3JlYXRlTWVkaWFVSUNv
bnRyb2wpOwogI2VuZGlmCiAgICAgSU5JVChTZXRDT05ORUNUUHJveHlBdXRob3JpemF0aW9uRm9y
U3RyZWFtKTsKICAgICBJTklUKFNldENPTk5FQ1RQcm94eUZvclN0cmVhbSk7Ci0jaWYgRU5BQkxF
KFZJREVPKSAmJiAhUExBVEZPUk0oSU9TKQotICAgIElOSVQoUVRJbmNsdWRlT25seU1vZGVybk1l
ZGlhRmlsZVR5cGVzKTsKLSAgICBJTklUKFFUTW92aWVEaXNhYmxlQ29tcG9uZW50KTsKLSAgICBJ
TklUKFFUTW92aWVNYXhUaW1lTG9hZGVkKTsKLSAgICBJTklUKFFUTW92aWVNYXhUaW1lTG9hZGVk
Q2hhbmdlTm90aWZpY2F0aW9uKTsKLSAgICBJTklUKFFUTW92aWVHZXRUeXBlKTsKLSAgICBJTklU
KFFUTW92aWVIYXNDbG9zZWRDYXB0aW9ucyk7Ci0gICAgSU5JVChRVE1vdmllUmVzb2x2ZWRVUkwp
OwotICAgIElOSVQoUVRNb3ZpZVNldFNob3dDbG9zZWRDYXB0aW9ucyk7Ci0gICAgSU5JVChRVE1v
dmllU2VsZWN0UHJlZmVycmVkQWx0ZXJuYXRlcyk7Ci0gICAgSU5JVChRVEdldFNpdGVzSW5NZWRp
YURvd25sb2FkQ2FjaGUpOwotICAgIElOSVQoUVRDbGVhck1lZGlhRG93bmxvYWRDYWNoZUZvclNp
dGUpOwotICAgIElOSVQoUVRDbGVhck1lZGlhRG93bmxvYWRDYWNoZSk7Ci0jZW5kaWYKIAogI2lm
ICFQTEFURk9STShJT1MpCiAgICAgSU5JVChFeGVjdXRhYmxlV2FzTGlua2VkT25PckJlZm9yZVNu
b3dMZW9wYXJkKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>320436</attachid>
            <date>2017-09-11 09:58:53 -0700</date>
            <delta_ts>2017-09-11 10:42:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-176472-20170911095853.patch</filename>
            <type>text/plain</type>
            <size>35212</size>
            <attacher name="Andy Estes">aestes</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIxODU3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjcyMGFlYWZhODRkNTFl
Mjk2ZTQyMjMyMGFhZWZmZjkzODZhMWQ4ZS4uZTAwZmVhODNiMjc4YWE3ZTg3YmQ0MTEyMWU0Njc3
MTBjYmUxN2E5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQwIEBACisyMDE3LTA5LTExICBBbmR5
IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBbTWFjXSBVcHN0cmVhbSBRVEtp
dC1yZWxhdGVkIFdlYktpdFN5c3RlbUludGVyZmFjZSBmdW5jdGlvbnMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NjQ3MgorCisgICAgICAgIFJldmll
d2VkIGJ5IEVyaWMgQ2FybHNvbi4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9N
ZWRpYVBsYXllclByaXZhdGVRVEtpdC5tbToKKyAgICAgICAgKFdlYkNvcmU6OmRpc2FibGVDb21w
b25lbnRzT25jZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6
Y3JlYXRlUVRNb3ZpZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVRVEtp
dDo6aGFzQ2xvc2VkQ2FwdGlvbnMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5
ZXJQcml2YXRlUVRLaXQ6OnNldENsb3NlZENhcHRpb25zVmlzaWJsZSk6CisgICAgICAgIChXZWJD
b3JlOjpzZWxlY3RQcmVmZXJyZWRBbHRlcm5hdGVUcmFja0Zvck1lZGlhVHlwZSk6CisgICAgICAg
IChXZWJDb3JlOjpzZWxlY3RQcmVmZXJyZWRBbHRlcm5hdGVzKToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0Ojp1cGRhdGVTdGF0ZXMpOgorICAgICAgICAoV2ViQ29y
ZTo6bWltZU1vZGVyblR5cGVzQ2FjaGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQ
cml2YXRlUVRLaXQ6Om9yaWdpbnNJbk1lZGlhQ2FjaGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFQbGF5ZXJQcml2YXRlUVRLaXQ6OmNsZWFyTWVkaWFDYWNoZSk6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6Y2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2lucyk6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6aGFzU2luZ2xlU2VjdXJp
dHlPcmlnaW4gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlUVRL
aXQ6Om1vdmllTG9hZFR5cGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQ
cml2YXRlUVRLaXQ6OmNhblNhdmVNZWRpYURhdGEgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3Jt
L21hYy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmg6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1dl
YkNvcmVTeXN0ZW1JbnRlcmZhY2UubW06CisgICAgICAgICogcGxhdGZvcm0vbWFjL1dlYlZpZGVv
RnVsbHNjcmVlbkhVRFdpbmRvd0NvbnRyb2xsZXIubW06CisgICAgICAgIChjcmVhdGVNZWRpYVVJ
Q29udHJvbCk6CisgICAgICAgIChjcmVhdGVDb250cm9sV2l0aE1lZGlhVUlDb250cm9sVHlwZSk6
CisgICAgICAgIChjcmVhdGVNZWRpYVVJQmFja2dyb3VuZFZpZXcpOgorICAgICAgICAoLVtXZWJW
aWRlb0Z1bGxzY3JlZW5IVURXaW5kb3dDb250cm9sbGVyIHdpbmRvd0RpZExvYWRdKToKKworMjAx
Ny0wOS0wOCAgQW5keSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+CisKKyAgICAgICAgVHJ5IHRv
IGZpeCB0aGUgSW50ZXJuYWwgRWwgQ2FwaXRhbiBidWlsZCBhZnRlciByMjIxNzczLgorCisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL01lZGlhUGxheWVyUHJpdmF0ZVFUS2l0Lm1tOgor
ICAgICAgICAoV2ViQ29yZTo6bWltZU1vZGVyblR5cGVzQ2FjaGUpOgorCiAyMDE3LTA5LTAzICBZ
dXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgogCiAgICAgICAgIFtERkddIE9w
dGltaXplIFdlYWtNYXA6OmdldCBieSBhZGRpbmcgaW50cmluc2ljIGFuZCBmaXh1cApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9D
aGFuZ2VMb2cKaW5kZXggNWYyY2ZlY2ExMzcyYjJjMGExY2QxZmE4ZWM4OGRjZjU1MDk2OTliMi4u
ZmJhMTQyYTA5MjU3N2NiNTVlMGEzZmY2MzE1NGM1NTZjMmU4Y2U1MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTctMDktMTEgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBw
bGUuY29tPgorCisgICAgICAgIFtNYWNdIFVwc3RyZWFtIFFUS2l0LXJlbGF0ZWQgV2ViS2l0U3lz
dGVtSW50ZXJmYWNlIGZ1bmN0aW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTc2NDcyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBDYXJsc29u
LgorCisgICAgICAgICogcGFsL3NwaS9tYWMvUVRLaXRTUEkuaDoKKwogMjAxNy0wOS0wOCAgQ29t
bWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdl
ZCwgcm9sbGluZyBvdXQgcjIyMTc3My4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggZTViMWFhNmE2OGMxMzkxNTNjMDE5
MGE3MmNjOGU3OWJkOTVjMWZmZi4uMmVmMzQzOTQwM2UzZTRjOGE0MWM3NTY4NWQ1NmVlNTdiYmVj
ZjdlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxNy0wOS0xMSAgQW5keSBFc3RlcyAg
PGFlc3Rlc0BhcHBsZS5jb20+CisKKyAgICAgICAgW01hY10gVXBzdHJlYW0gUVRLaXQtcmVsYXRl
ZCBXZWJLaXRTeXN0ZW1JbnRlcmZhY2UgZnVuY3Rpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzY0NzIKKworICAgICAgICBSZXZpZXdlZCBieSBF
cmljIENhcmxzb24uCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9X
ZWJTeXN0ZW1JbnRlcmZhY2UubW06CisgICAgICAgIChJbml0V2ViQ29yZVN5c3RlbUludGVyZmFj
ZSk6CisKIDIwMTctMDktMTEgIEpGIEJhc3RpZW4gIDxqZmJhc3RpZW5AYXBwbGUuY29tPgogCiAg
ICAgICAgIGNtYWtlIGJ1aWxkIGZpeApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4IDQ2
NDkyNGIyNDZhNmJkNjVhMmQ1MjExZDYyMTk2ZGMyNDExYmM2YjUuLjg1NmExYWVlOTgxYTlkNmYw
NDMxZDFmNGM1YWYwY2E5YWQyYTJjNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxMyBAQAorMjAxNy0wOS0xMSAgQW5keSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+
CisKKyAgICAgICAgW01hY10gVXBzdHJlYW0gUVRLaXQtcmVsYXRlZCBXZWJLaXRTeXN0ZW1JbnRl
cmZhY2UgZnVuY3Rpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNzY0NzIKKworICAgICAgICBSZXZpZXdlZCBieSBFcmljIENhcmxzb24uCisKKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJTeXN0ZW1JbnRlcmZhY2UubW06CisgICAgICAgIChJ
bml0V2ViQ29yZVN5c3RlbUludGVyZmFjZSk6CisKIDIwMTctMDktMDkgIE1hcmsgTGFtICA8bWFy
ay5sYW1AYXBwbGUuY29tPgogCiAgICAgICAgIEF2b2lkIGR1cGxpY2F0ZSBjb21wdXRhdGlvbnMg
b2YgRXhlY1N0YXRlOjp2bSgpLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9z
cGkvbWFjL1FUS2l0U1BJLmggYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9tYWMvUVRLaXRT
UEkuaAppbmRleCA3MTc4OWNkZjI1ZGE4YWY0MDRiNzBhNGNiNTE5YzFjYTNkODUyZTJmLi4wNGJi
MjQ5NjI3MDg1NzI5ZjE1YmExNGI0MjhhNGU3MGYyZjZiYmM0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9QQUwvcGFsL3NwaS9tYWMvUVRLaXRTUEkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Q
QUwvcGFsL3NwaS9tYWMvUVRLaXRTUEkuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDE2LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNSw4ICsyNSwxMiBAQAogCiAjcHJhZ21hIG9uY2UK
IAotI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspIHx8IF9fTUFDX09TX1hfVkVSU0lPTl9NQVhf
QUxMT1dFRCA8IDEwMTIwMAotI2ltcG9ydCA8UVRLaXQvUVRLaXQuaD4KKyNpZiBVU0UoQVBQTEVf
SU5URVJOQUxfU0RLKQorCisjaW1wb3J0IDxRVEtpdC9RVEhVREJhY2tncm91bmRWaWV3X1ByaXZh
dGUuaD4KKyNpbXBvcnQgPFFUS2l0L1FUS2l0X1ByaXZhdGUuaD4KKyNpbXBvcnQgPFFUS2l0L1FU
VXRpbGl0aWVzX1ByaXZhdGUuaD4KKwogI2Vsc2UKIAogZW51bSB7CkBAIC00Niw4ICs1MCwxOSBA
QCB0eXBlZGVmIHN0cnVjdCB7CiAKIHR5cGVkZWYgZW51bSB7CiAgICAgUVRJbmNsdWRlQ29tbW9u
VHlwZXMgPSAwLAorICAgIFFUSW5jbHVkZU9ubHlGaWdNZWRpYUZpbGVUeXBlcyA9IDEgPDwgOCwK
IH0gUVRNb3ZpZUZpbGVUeXBlT3B0aW9uczsKIAorZW51bSB7CisgICAgUVRNb3ZpZVR5cGVVbmtu
b3duID0gMCwKKyAgICBRVE1vdmllVHlwZUxvY2FsLAorICAgIFFUTW92aWVUeXBlRmFzdFN0YXJ0
LAorICAgIFFUTW92aWVUeXBlTGl2ZVN0cmVhbSwKKyAgICBRVE1vdmllVHlwZVN0b3JlZFN0cmVh
bQorfTsKKworQGNsYXNzIFFUVHJhY2s7CisKIEBpbnRlcmZhY2UgUVRNZWRpYSA6IE5TT2JqZWN0
CiAKIC0gKGlkKWF0dHJpYnV0ZUZvcktleTooTlNTdHJpbmcgKilhdHRyaWJ1dGVLZXk7CkBAIC01
OCw2ICs3Myw4IEBAIHR5cGVkZWYgZW51bSB7CiAKICsgKE5TQXJyYXkgKiltb3ZpZUZpbGVUeXBl
czooUVRNb3ZpZUZpbGVUeXBlT3B0aW9ucyl0eXBlczsKIAorKyAodm9pZClkaXNhYmxlQ29tcG9u
ZW50OihDb21wb25lbnREZXNjcmlwdGlvbiljb21wb25lbnQ7CisKIC0gKGlkKWluaXRXaXRoQXR0
cmlidXRlczooTlNEaWN0aW9uYXJ5ICopYXR0cmlidXRlcyBlcnJvcjooTlNFcnJvciAqKillcnJv
clB0cjsKIAogLSAodm9pZClwbGF5OwpAQCAtODEsNiArOTgsMTQgQEAgdHlwZWRlZiBlbnVtIHsK
IAogLSAoTlNBcnJheSAqKXRyYWNrczsKIAorLSAoTlNBcnJheSAqKWFsdGVybmF0ZUdyb3VwVHlw
ZXM7CistIChOU0FycmF5ICopYWx0ZXJuYXRlc0Zvck1lZGlhVHlwZTooTlNTdHJpbmcgKil0eXBl
OworLSAodm9pZClkZXNlbGVjdEFsdGVybmF0ZUdyb3VwVHJhY2s6KFFUVHJhY2sgKilhbHRlcm5h
dGVUcmFjazsKKy0gKHZvaWQpc2VsZWN0QWx0ZXJuYXRlR3JvdXBUcmFjazooUVRUcmFjayAqKWFs
dGVybmF0ZVRyYWNrOworCistIChOU1VSTCAqKVVSTDsKKy0gKFVJbnQzMiltb3ZpZVR5cGU7CisK
IEBlbmQKIAogQGludGVyZmFjZSBRVE1vdmllTGF5ZXIgOiBDQUxheWVyCkBAIC0xMDYsNCArMTMx
LDIwIEBAIHR5cGVkZWYgZW51bSB7CiAKIEBlbmQKIAorQGludGVyZmFjZSBRVEhVREJhY2tncm91
bmRWaWV3IDogTlNWaWV3CisKKy0gKHZvaWQpc2V0Q29udGVudEJvcmRlclBvc2l0aW9uOihDR0Zs
b2F0KWNvbnRlbnRCb3JkZXJQb3NpdGlvbjsKKworQGVuZAorCitAaW50ZXJmYWNlIFFUVXRpbGl0
aWVzIDogTlNPYmplY3QKKworKyAoaWQpcXRVdGlsaXRpZXM7CisKKy0gKE5TQXJyYXkgKilzaXRl
c0luRG93bmxvYWRDYWNoZTsKKy0gKHZvaWQpY2xlYXJEb3dubG9hZENhY2hlOworLSAodm9pZClj
bGVhckRvd25sb2FkQ2FjaGVGb3JTaXRlOihOU1N0cmluZyAqKXNpdGU7CisKK0BlbmQKKwogI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvTWVk
aWFQbGF5ZXJQcml2YXRlUVRLaXQubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9tYWMvTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQubW0KaW5kZXggODVjZjU2MWQ3MzMxNzk2NzZl
Y2Y4ZTlmZGFhMzZmYzBlN2U1OGIwMS4uZDZmOGQxYWQyM2M0NjJmYmMwYTczYTlhNTYyOWJmZjEy
MjJkNWFlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFj
L01lZGlhUGxheWVyUHJpdmF0ZVFUS2l0Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL21hYy9NZWRpYVBsYXllclByaXZhdGVRVEtpdC5tbQpAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAsIDIwMTEgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA3LTIwMTcgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC01Miw2ICs1Miw3IEBAIFNPRlRfTElOSyhRVEtpdCwgUVRNYWtlVGltZSwgUVRUaW1l
LCAobG9uZyBsb25nIHRpbWVWYWx1ZSwgbG9uZyB0aW1lU2NhbGUpLCAodGltCiAKIFNPRlRfTElO
S19DTEFTUyhRVEtpdCwgUVRNb3ZpZSkKIFNPRlRfTElOS19DTEFTUyhRVEtpdCwgUVRNb3ZpZUxh
eWVyKQorU09GVF9MSU5LX0NMQVNTKFFUS2l0LCBRVFV0aWxpdGllcykKIAogU09GVF9MSU5LX1BP
SU5URVIoUVRLaXQsIFFUVHJhY2tNZWRpYVR5cGVBdHRyaWJ1dGUsIE5TU3RyaW5nICopCiBTT0ZU
X0xJTktfUE9JTlRFUihRVEtpdCwgUVRNZWRpYVR5cGVBdHRyaWJ1dGUsIE5TU3RyaW5nICopCkBA
IC03MSw2ICs3Miw3IEBAIFNPRlRfTElOS19QT0lOVEVSKFFUS2l0LCBRVE1vdmllSXNBY3RpdmVB
dHRyaWJ1dGUsIE5TU3RyaW5nICopCiBTT0ZUX0xJTktfUE9JTlRFUihRVEtpdCwgUVRNb3ZpZUxv
YWRTdGF0ZUF0dHJpYnV0ZSwgTlNTdHJpbmcgKikKIFNPRlRfTElOS19QT0lOVEVSKFFUS2l0LCBR
VE1vdmllTG9hZFN0YXRlRXJyb3JBdHRyaWJ1dGUsIE5TU3RyaW5nICopCiBTT0ZUX0xJTktfUE9J
TlRFUihRVEtpdCwgUVRNb3ZpZUxvYWRTdGF0ZURpZENoYW5nZU5vdGlmaWNhdGlvbiwgTlNTdHJp
bmcgKikKK1NPRlRfTElOS19QT0lOVEVSKFFUS2l0LCBRVE1vdmllTG9hZGVkUmFuZ2VzRGlkQ2hh
bmdlTm90aWZpY2F0aW9uLCBOU1N0cmluZyAqKTsKIFNPRlRfTElOS19QT0lOVEVSKFFUS2l0LCBR
VE1vdmllTmF0dXJhbFNpemVBdHRyaWJ1dGUsIE5TU3RyaW5nICopCiBTT0ZUX0xJTktfUE9JTlRF
UihRVEtpdCwgUVRNb3ZpZUN1cnJlbnRTaXplQXR0cmlidXRlLCBOU1N0cmluZyAqKQogU09GVF9M
SU5LX1BPSU5URVIoUVRLaXQsIFFUTW92aWVQcmV2ZW50RXh0ZXJuYWxVUkxMaW5rc0F0dHJpYnV0
ZSwgTlNTdHJpbmcgKikKQEAgLTk1LDggKzk3LDggQEAgLSAoTlNBcnJheSAqKWF2YWlsYWJsZVJh
bmdlczsKIC0gKE5TQXJyYXkgKilsb2FkZWRSYW5nZXM7CiBAZW5kCiAKLSNkZWZpbmUgUVRNb3Zp
ZSBnZXRRVE1vdmllQ2xhc3MoKQogI2RlZmluZSBRVE1vdmllTGF5ZXIgZ2V0UVRNb3ZpZUxheWVy
Q2xhc3MoKQorI2RlZmluZSBRVFV0aWxpdGllcyBnZXRRVFV0aWxpdGllc0NsYXNzKCkKIAogI2Rl
ZmluZSBRVFRyYWNrTWVkaWFUeXBlQXR0cmlidXRlIGdldFFUVHJhY2tNZWRpYVR5cGVBdHRyaWJ1
dGUoKQogI2RlZmluZSBRVE1lZGlhVHlwZUF0dHJpYnV0ZSBnZXRRVE1lZGlhVHlwZUF0dHJpYnV0
ZSgpCkBAIC0xMTYsNiArMTE4LDcgQEAgQGVuZAogI2RlZmluZSBRVE1vdmllTG9hZFN0YXRlQXR0
cmlidXRlIGdldFFUTW92aWVMb2FkU3RhdGVBdHRyaWJ1dGUoKQogI2RlZmluZSBRVE1vdmllTG9h
ZFN0YXRlRXJyb3JBdHRyaWJ1dGUgZ2V0UVRNb3ZpZUxvYWRTdGF0ZUVycm9yQXR0cmlidXRlKCkK
ICNkZWZpbmUgUVRNb3ZpZUxvYWRTdGF0ZURpZENoYW5nZU5vdGlmaWNhdGlvbiBnZXRRVE1vdmll
TG9hZFN0YXRlRGlkQ2hhbmdlTm90aWZpY2F0aW9uKCkKKyNkZWZpbmUgUVRNb3ZpZUxvYWRlZFJh
bmdlc0RpZENoYW5nZU5vdGlmaWNhdGlvbiBnZXRRVE1vdmllTG9hZGVkUmFuZ2VzRGlkQ2hhbmdl
Tm90aWZpY2F0aW9uKCkKICNkZWZpbmUgUVRNb3ZpZU5hdHVyYWxTaXplQXR0cmlidXRlIGdldFFU
TW92aWVOYXR1cmFsU2l6ZUF0dHJpYnV0ZSgpCiAjZGVmaW5lIFFUTW92aWVDdXJyZW50U2l6ZUF0
dHJpYnV0ZSBnZXRRVE1vdmllQ3VycmVudFNpemVBdHRyaWJ1dGUoKQogI2RlZmluZSBRVE1vdmll
UHJldmVudEV4dGVybmFsVVJMTGlua3NBdHRyaWJ1dGUgZ2V0UVRNb3ZpZVByZXZlbnRFeHRlcm5h
bFVSTExpbmtzQXR0cmlidXRlKCkKQEAgLTI5Miw3ICsyOTUsNyBAQCBzdGF0aWMgdm9pZCBkaXNh
YmxlQ29tcG9uZW50c09uY2UoKQogICAgIC8vIFFUS2l0U2VydmVyIGhhcyBub3QgeWV0IHN0YXJ0
ZWQuICBBcyBhIHJlc3VsdCwgd2UgbXVzdCBwYXNzIGluIGV4YWN0bHkgdGhlIGZsYWdzIHdlIHdh
bnQgdG8KICAgICAvLyBkaXNhYmxlIHBlciBjb21wb25lbnQuICBBcyBhIGZhaWxzYWZlLCBpZiBp
biB0aGUgZnV0dXJlIHRoZXNlIGZsYWdzIGNoYW5nZSwgd2Ugd2lsbCBkaXNhYmxlIHRoZQogICAg
IC8vIFBERiBjb21wb25lbnRzIGZvciBhIHRoaXJkIHRpbWUgd2l0aCBhIHdpbGRjYXJkIGZsYWdz
IGZpZWxkOgotICAgIHVpbnQzMl90IGNvbXBvbmVudHNUb0Rpc2FibGVbMTFdWzVdID0geworICAg
IENvbXBvbmVudERlc2NyaXB0aW9uIGNvbXBvbmVudHNUb0Rpc2FibGVbMTFdID0gewogICAgICAg
ICB7J2VhdCAnLCAnVEVYVCcsICd0ZXh0JywgMCwgMH0sCiAgICAgICAgIHsnZWF0ICcsICdUWFQg
JywgJ3RleHQnLCAwLCAwfSwgICAgCiAgICAgICAgIHsnZWF0ICcsICd1dHh0JywgJ3RleHQnLCAw
LCAwfSwgIApAQCAtMzA3LDcgKzMxMCw3IEBAIHN0YXRpYyB2b2lkIGRpc2FibGVDb21wb25lbnRz
T25jZSgpCiAgICAgfTsKIAogICAgIGZvciAoYXV0byYgY29tcG9uZW50IDogY29tcG9uZW50c1Rv
RGlzYWJsZSkKLSAgICAgICAgd2tRVE1vdmllRGlzYWJsZUNvbXBvbmVudChjb21wb25lbnQpOwor
ICAgICAgICBbZ2V0UVRNb3ZpZUNsYXNzKCkgZGlzYWJsZUNvbXBvbmVudDpjb21wb25lbnRdOwog
fQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0OjpjcmVhdGVRVE1vdmllKE5TVVJMICp1
cmwsIE5TRGljdGlvbmFyeSAqbW92aWVBdHRyaWJ1dGVzKQpAQCAtMzQ1LDE0ICszNDgsMTAgQEAg
dm9pZCBNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6Y3JlYXRlUVRNb3ZpZShOU1VSTCAqdXJsLCBO
U0RpY3Rpb25hcnkgKm1vdmllQXR0cmkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgb2JqZWN0Om1fcXRNb3ZpZS5nZXQoKV07CiAKICAgICAvLyBJbiB1cGRh
dGVTdGF0ZSgpLCB3ZSB0cmFjayB3aGVuIG1heFRpbWVMb2FkZWQoKSA9PSBkdXJhdGlvbigpLgot
ICAgIC8vIEluIG5ld2VyIHZlcnNpb24gb2YgUXVpY2tUaW1lLCBhIG5vdGlmaWNhdGlvbiBpcyBl
bWl0dGVkIHdoZW4gbWF4VGltZUxvYWRlZCBjaGFuZ2VzLgotICAgIC8vIEluIG9sZGVyIHZlcnNp
b24gb2YgUXVpY2tUaW1lLCBRVE1vdmllTG9hZFN0YXRlRGlkQ2hhbmdlTm90aWZpY2F0aW9uIGJl
IGZpcmVkLgotICAgIGlmIChOU1N0cmluZyAqbWF4VGltZUxvYWRlZENoYW5nZU5vdGlmaWNhdGlv
biA9IHdrUVRNb3ZpZU1heFRpbWVMb2FkZWRDaGFuZ2VOb3RpZmljYXRpb24oKSkgewotICAgICAg
ICBbW05TTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdIGFkZE9ic2VydmVyOm1fb2Jq
Y09ic2VydmVyLmdldCgpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc2VsZWN0b3I6QHNlbGVjdG9yKGxvYWRlZFJhbmdlc0NoYW5nZWQ6KQotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOm1heFRp
bWVMb2FkZWRDaGFuZ2VOb3RpZmljYXRpb24KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG9iamVjdDptX3F0TW92aWUuZ2V0KCldOyAgICAgICAgCi0g
ICAgfQorICAgIFtbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0gYWRkT2JzZXJ2
ZXI6bV9vYmpjT2JzZXJ2ZXIuZ2V0KCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNlbGVjdG9yOkBzZWxlY3Rvcihsb2FkZWRSYW5nZXNDaGFuZ2VkOikKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOlFUTW92
aWVMb2FkZWRSYW5nZXNEaWRDaGFuZ2VOb3RpZmljYXRpb24KKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgb2JqZWN0Om1fcXRNb3ZpZS5nZXQoKV07CiAKICAg
ICBbW05TTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdIGFkZE9ic2VydmVyOm1fb2Jq
Y09ic2VydmVyLmdldCgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzZWxlY3RvcjpAc2VsZWN0b3IocmF0ZUNoYW5nZWQ6KSAKQEAgLTc3MSwxOCArNzcwLDMw
IEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6Omhhc0Nsb3NlZENhcHRpb25zKCkgY29u
c3QKIHsKICAgICBpZiAoIW1ldGFEYXRhQXZhaWxhYmxlKCkpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICByZXR1cm4gd2tRVE1vdmllSGFzQ2xvc2VkQ2FwdGlvbnMobV9xdE1vdmllLmdldCgp
KTsgIAorICAgIHJldHVybiBbW21fcXRNb3ZpZSBhbHRlcm5hdGVHcm91cFR5cGVzXSBjb250YWlu
c09iamVjdDpAImNsY3AiXTsKIH0KIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6c2V0
Q2xvc2VkQ2FwdGlvbnNWaXNpYmxlKGJvb2wgY2xvc2VkQ2FwdGlvbnNWaXNpYmxlKQogewotICAg
IGlmIChtZXRhRGF0YUF2YWlsYWJsZSgpKSB7Ci0gICAgICAgIHdrUVRNb3ZpZVNldFNob3dDbG9z
ZWRDYXB0aW9ucyhtX3F0TW92aWUuZ2V0KCksIGNsb3NlZENhcHRpb25zVmlzaWJsZSk7CisgICAg
aWYgKCFtZXRhRGF0YUF2YWlsYWJsZSgpKQorICAgICAgICByZXR1cm47CiAKLSAgICAgICAgaWYg
KGNsb3NlZENhcHRpb25zVmlzaWJsZSAmJiBtX3F0VmlkZW9MYXllcikgewotICAgICAgICAgICAg
Ly8gQ2FwdGlvbnMgd2lsbCBiZSByZW5kZXJlZCB1cHNpZGUgZG93biB1bmxlc3Mgd2UgZmxhZyB0
aGUgbW92aWUgYXMgZmxpcHBlZCAoYWdhaW4pLiBTZWUgPHJkYXI6Ly83NDA4NDQwPi4KLSAgICAg
ICAgICAgIFttX3F0VmlkZW9MYXllci5nZXQoKSBzZXRHZW9tZXRyeUZsaXBwZWQ6WUVTXTsKLSAg
ICAgICAgfQorICAgIGlmICghW1ttX3F0TW92aWUgYWx0ZXJuYXRlR3JvdXBUeXBlc10gY29udGFp
bnNPYmplY3Q6QCJjbGNwIl0pCisgICAgICAgIHJldHVybjsKKworICAgIE5TQXJyYXkgKnRyYWNr
QWx0ZXJuYXRlc0FycmF5ID0gW21fcXRNb3ZpZSBhbHRlcm5hdGVzRm9yTWVkaWFUeXBlOkAiY2xj
cCJdOworICAgIFFUVHJhY2sgKnRyYWNrID0gdHJhY2tBbHRlcm5hdGVzQXJyYXlbMF1bQCJRVEFs
dGVybmF0ZXNfUVRUcmFjayJdOworICAgIGlmICghdHJhY2spCisgICAgICAgIHJldHVybjsKKwor
ICAgIGlmICghY2xvc2VkQ2FwdGlvbnNWaXNpYmxlKQorICAgICAgICBbbV9xdE1vdmllIGRlc2Vs
ZWN0QWx0ZXJuYXRlR3JvdXBUcmFjazp0cmFja107CisgICAgZWxzZQorICAgICAgICBbbV9xdE1v
dmllIHNlbGVjdEFsdGVybmF0ZUdyb3VwVHJhY2s6dHJhY2tdOworCisgICAgaWYgKGNsb3NlZENh
cHRpb25zVmlzaWJsZSAmJiBtX3F0VmlkZW9MYXllcikgeworICAgICAgICAvLyBDYXB0aW9ucyB3
aWxsIGJlIHJlbmRlcmVkIHVwc2lkZSBkb3duIHVubGVzcyB3ZSBmbGFnIHRoZSBtb3ZpZSBhcyBm
bGlwcGVkIChhZ2FpbikuIFNlZSA8cmRhcjovLzc0MDg0NDA+LgorICAgICAgICBbbV9xdFZpZGVv
TGF5ZXIuZ2V0KCkgc2V0R2VvbWV0cnlGbGlwcGVkOllFU107CiAgICAgfQogfQogCkBAIC05NDEs
NiArOTUyLDU4IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6OnByZXBhcmVGb3JSZW5k
ZXJpbmcoKQogICAgICAgICBtX3BsYXllci0+Y2xpZW50KCkubWVkaWFQbGF5ZXJSZW5kZXJpbmdN
b2RlQ2hhbmdlZChtX3BsYXllcik7CiB9CiAKK3N0YXRpYyB2b2lkIHNlbGVjdFByZWZlcnJlZEFs
dGVybmF0ZVRyYWNrRm9yTWVkaWFUeXBlKFFUTW92aWUgKm1vdmllLCBOU1N0cmluZyAqbWVkaWFU
eXBlKQoreworICAgIE5TQXJyYXkgKmFsdGVybmF0ZXMgPSBbbW92aWUgYWx0ZXJuYXRlc0Zvck1l
ZGlhVHlwZTptZWRpYVR5cGVdOworICAgIGlmICghYWx0ZXJuYXRlcy5jb3VudCkKKyAgICAgICAg
cmV0dXJuOworCisgICAgYXV0byBsYW5ndWFnZVRvUVRUcmFja01hcCA9IGFkb3B0TlMoW1tOU011
dGFibGVEaWN0aW9uYXJ5IGFsbG9jXSBpbml0V2l0aENhcGFjaXR5OmFsdGVybmF0ZXMuY291bnRd
KTsKKworICAgIGZvciAoTlNVSW50ZWdlciBpbmRleCA9IDA7IGluZGV4IDwgYWx0ZXJuYXRlcy5j
b3VudDsgKytpbmRleCkgeworICAgICAgICBOU0RpY3Rpb25hcnkgKmFsdGVybmF0ZURpY3QgPSBh
bHRlcm5hdGVzW2luZGV4XTsKKyAgICAgICAgTlNTdHJpbmcgKmxhbmd1YWdlU3RyaW5nID0gYWx0
ZXJuYXRlRGljdFtAIlFUQWx0ZXJuYXRlc19MYW5ndWFnZUNvZGVFbmNvZGluZ19JU09fNjM5XzJU
Il07CisgICAgICAgIGlmICghW2xhbmd1YWdlU3RyaW5nIGNTdHJpbmdVc2luZ0VuY29kaW5nOmtD
RlN0cmluZ0VuY29kaW5nQVNDSUldKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIGlm
ICghbGFuZ3VhZ2VTdHJpbmcpCisgICAgICAgICAgICBsYW5ndWFnZVN0cmluZyA9IGFsdGVybmF0
ZURpY3RbQCJRVEFsdGVybmF0ZXNfTGFuZ3VhZ2VDb2RlRW5jb2RpbmdfUkZDXzQ2NDYiXTsKKyAg
ICAgICAgaWYgKCFsYW5ndWFnZVN0cmluZykgeworICAgICAgICAgICAgTGFuZ0NvZGUgbGFuZ0Nv
ZGUgPSBbYWx0ZXJuYXRlRGljdFtAIlFUQWx0ZXJuYXRlc19MYW5ndWFnZUNvZGVFbmNvZGluZ19N
YWNUeXBlX0xhbmdDb2RlIl0gaW50VmFsdWVdOworICAgICAgICAgICAgYXV0byBpZGVudGlmaWVy
ID0gYWRvcHRDRihDRkxvY2FsZUNyZWF0ZUNhbm9uaWNhbExvY2FsZUlkZW50aWZpZXJGcm9tU2Ny
aXB0TWFuYWdlckNvZGVzKGtDRkFsbG9jYXRvckRlZmF1bHQsIGxhbmdDb2RlLCAwKSk7CisgICAg
ICAgICAgICBsYW5ndWFnZVN0cmluZyA9IChOU1N0cmluZyAqKWlkZW50aWZpZXIuYXV0b3JlbGVh
c2UoKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoIWxhbmd1YWdlU3RyaW5nKQorICAgICAgICAg
ICAgY29udGludWU7CisKKyAgICAgICAgaWQgYWx0ZXJuYXRlVHJhY2sgPSBhbHRlcm5hdGVEaWN0
W0AiUVRBbHRlcm5hdGVzX1FUVHJhY2siXTsKKyAgICAgICAgaWYgKCFhbHRlcm5hdGVUcmFjaykK
KyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIGlmICghW1thbHRlcm5hdGVUcmFjayBh
dHRyaWJ1dGVGb3JLZXk6QCJRVFRyYWNrRW5hYmxlZEF0dHJpYnV0ZSJdIGJvb2xWYWx1ZV0pCisg
ICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBbbGFuZ3VhZ2VUb1FUVHJhY2tNYXAgc2V0
T2JqZWN0OmFsdGVybmF0ZVRyYWNrIGZvcktleTpsYW5ndWFnZVN0cmluZ107CisgICAgfQorCisg
ICAgTlNBcnJheSAqcHJlZmVycmVkTGFuZ3VhZ2VzID0gW05TQnVuZGxlIHByZWZlcnJlZExvY2Fs
aXphdGlvbnNGcm9tQXJyYXk6W2xhbmd1YWdlVG9RVFRyYWNrTWFwIGFsbEtleXNdIGZvclByZWZl
cmVuY2VzOm5pbF07CisgICAgaWYgKHByZWZlcnJlZExhbmd1YWdlcy5jb3VudCkgeworICAgICAg
ICBpZCBwcmVmZXJyZWRUcmFjayA9IFtsYW5ndWFnZVRvUVRUcmFja01hcCBvYmplY3RGb3JLZXk6
cHJlZmVycmVkTGFuZ3VhZ2VzWzBdXTsKKyAgICAgICAgaWYgKHByZWZlcnJlZFRyYWNrKSB7Cisg
ICAgICAgICAgICAvLyArW05TQnVuZGxlIHByZWZlcnJlZExvY2FsaXphdGlvbnNGcm9tQXJyYXk6
Zm9yUHJlZmVyZW5jZXNdIG1heSByZXR1cm4gYSBsYW5ndWFnZSB3aGljaCB3YXMKKyAgICAgICAg
ICAgIC8vIG5vdCBwcmVzZW50IGluIHByZWZlcnJlZExhbmd1YWdlcywgYW5kIHdpbGwgdGhlcmVm
b3JlIG5vdCBoYXZlIGFuIGFzc29jaWF0ZWQgdHJhY2suCisgICAgICAgICAgICBbbW92aWUgc2Vs
ZWN0QWx0ZXJuYXRlR3JvdXBUcmFjazpwcmVmZXJyZWRUcmFja107CisgICAgICAgIH0KKyAgICB9
Cit9CisKK3N0YXRpYyB2b2lkIHNlbGVjdFByZWZlcnJlZEFsdGVybmF0ZXMoUVRNb3ZpZSAqbW92
aWUpCit7CisgICAgc2VsZWN0UHJlZmVycmVkQWx0ZXJuYXRlVHJhY2tGb3JNZWRpYVR5cGUobW92
aWUsIEAidmlkZSIpOworICAgIHNlbGVjdFByZWZlcnJlZEFsdGVybmF0ZVRyYWNrRm9yTWVkaWFU
eXBlKG1vdmllLCBAInNvdW4iKTsKKyAgICBzZWxlY3RQcmVmZXJyZWRBbHRlcm5hdGVUcmFja0Zv
ck1lZGlhVHlwZShtb3ZpZSwgQCJjcGxwIik7CisgICAgc2VsZWN0UHJlZmVycmVkQWx0ZXJuYXRl
VHJhY2tGb3JNZWRpYVR5cGUobW92aWUsIEAic2J0bCIpOworfQorCiB2b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZVFUS2l0Ojp1cGRhdGVTdGF0ZXMoKQogewogICAgIE1lZGlhUGxheWVyOjpOZXR3b3Jr
U3RhdGUgb2xkTmV0d29ya1N0YXRlID0gbV9uZXR3b3JrU3RhdGU7CkBAIC05NjUsNyArMTAyOCw3
IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6OnVwZGF0ZVN0YXRlcygpCiAgICAgICAg
ICAgICBsb2FkU3RhdGUgPSBRVE1vdmllTG9hZFN0YXRlRXJyb3I7CiAKICAgICAgICAgaWYgKGxv
YWRTdGF0ZSAhPSBRVE1vdmllTG9hZFN0YXRlRXJyb3IpIHsKLSAgICAgICAgICAgIHdrUVRNb3Zp
ZVNlbGVjdFByZWZlcnJlZEFsdGVybmF0ZXMobV9xdE1vdmllLmdldCgpKTsKKyAgICAgICAgICAg
IHNlbGVjdFByZWZlcnJlZEFsdGVybmF0ZXMobV9xdE1vdmllLmdldCgpKTsKICAgICAgICAgICAg
IGNhY2hlTW92aWVTY2FsZSgpOwogICAgICAgICAgICAgTWVkaWFQbGF5ZXI6Ok1vdmllTG9hZFR5
cGUgbW92aWVUeXBlID0gbW92aWVMb2FkVHlwZSgpOwogICAgICAgICAgICAgbV9pc1N0cmVhbWlu
ZyA9IG1vdmllVHlwZSA9PSBNZWRpYVBsYXllcjo6U3RvcmVkU3RyZWFtIHx8IG1vdmllVHlwZSA9
PSBNZWRpYVBsYXllcjo6TGl2ZVN0cmVhbTsKQEAgLTEyNjcsMTMgKzEzMzAsMTMgQEAgc3RhdGlj
IEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+IGNyZWF0ZUZpbGVUeXBl
c1NldChOU0FycmF5ICpmaWwKIAogc3RhdGljIGNvbnN0IEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNh
c2VJbnNlbnNpdGl2ZUhhc2g+JiBtaW1lQ29tbW9uVHlwZXNDYWNoZSgpCiB7Ci0gICAgc3RhdGlj
IGNvbnN0IGF1dG8gY2FjaGUgPSBtYWtlTmV2ZXJEZXN0cm95ZWQoY3JlYXRlRmlsZVR5cGVzU2V0
KFtRVE1vdmllIG1vdmllRmlsZVR5cGVzOlFUSW5jbHVkZUNvbW1vblR5cGVzXSkpOworICAgIHN0
YXRpYyBjb25zdCBhdXRvIGNhY2hlID0gbWFrZU5ldmVyRGVzdHJveWVkKGNyZWF0ZUZpbGVUeXBl
c1NldChbZ2V0UVRNb3ZpZUNsYXNzKCkgbW92aWVGaWxlVHlwZXM6UVRJbmNsdWRlQ29tbW9uVHlw
ZXNdKSk7CiAgICAgcmV0dXJuIGNhY2hlOwogfSAKIAogc3RhdGljIGNvbnN0IEhhc2hTZXQ8U3Ry
aW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+JiBtaW1lTW9kZXJuVHlwZXNDYWNoZSgpCiB7
Ci0gICAgc3RhdGljIGNvbnN0IGF1dG8gY2FjaGUgPSBtYWtlTmV2ZXJEZXN0cm95ZWQoY3JlYXRl
RmlsZVR5cGVzU2V0KFtRVE1vdmllIG1vdmllRmlsZVR5cGVzOihRVE1vdmllRmlsZVR5cGVPcHRp
b25zKXdrUVRJbmNsdWRlT25seU1vZGVybk1lZGlhRmlsZVR5cGVzKCldKSk7CisgICAgc3RhdGlj
IGNvbnN0IGF1dG8gY2FjaGUgPSBtYWtlTmV2ZXJEZXN0cm95ZWQoY3JlYXRlRmlsZVR5cGVzU2V0
KFtnZXRRVE1vdmllQ2xhc3MoKSBtb3ZpZUZpbGVUeXBlczooUVRNb3ZpZUZpbGVUeXBlT3B0aW9u
cylRVEluY2x1ZGVPbmx5RmlnTWVkaWFGaWxlVHlwZXNdKSk7CiAgICAgcmV0dXJuIGNhY2hlOwog
fQogCkBAIC0xMzI0LDcgKzEzODcsNyBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0Ojpp
c0F2YWlsYWJsZSgpCiBIYXNoU2V0PFJlZlB0cjxTZWN1cml0eU9yaWdpbj4+IE1lZGlhUGxheWVy
UHJpdmF0ZVFUS2l0OjpvcmlnaW5zSW5NZWRpYUNhY2hlKGNvbnN0IFN0cmluZyYpCiB7CiAgICAg
SGFzaFNldDxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+PiBvcmlnaW5zOwotICAgIE5TQXJyYXkgKm1l
ZGlhU2l0ZXMgPSB3a1FUR2V0U2l0ZXNJbk1lZGlhRG93bmxvYWRDYWNoZSgpOworICAgIE5TQXJy
YXkgKm1lZGlhU2l0ZXMgPSBbW1FUVXRpbGl0aWVzIHF0VXRpbGl0aWVzXSBzaXRlc0luRG93bmxv
YWRDYWNoZV07CiAgICAgCiAgICAgZm9yIChOU1N0cmluZyAqc2l0ZSBpbiBtZWRpYVNpdGVzKSB7
CiAgICAgICAgIFVSTCBzaXRlQXNVUkwgPSBVUkwoVVJMKCksIHNpdGUpOwpAQCAtMTMzNywxNCAr
MTQwMCwxNCBAQCBIYXNoU2V0PFJlZlB0cjxTZWN1cml0eU9yaWdpbj4+IE1lZGlhUGxheWVyUHJp
dmF0ZVFUS2l0OjpvcmlnaW5zSW5NZWRpYUNhY2hlKGNvbgogdm9pZCBNZWRpYVBsYXllclByaXZh
dGVRVEtpdDo6Y2xlYXJNZWRpYUNhY2hlKGNvbnN0IFN0cmluZyYsIHN0ZDo6Y2hyb25vOjpzeXN0
ZW1fY2xvY2s6OnRpbWVfcG9pbnQpCiB7CiAgICAgTE9HKE1lZGlhLCAiTWVkaWFQbGF5ZXJQcml2
YXRlUVRLaXQ6OmNsZWFyTWVkaWFDYWNoZSgpIik7Ci0gICAgd2tRVENsZWFyTWVkaWFEb3dubG9h
ZENhY2hlKCk7CisgICAgW1tRVFV0aWxpdGllcyBxdFV0aWxpdGllc10gY2xlYXJEb3dubG9hZENh
Y2hlXTsKIH0KIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6Y2xlYXJNZWRpYUNhY2hl
Rm9yT3JpZ2lucyhjb25zdCBTdHJpbmcmLCBjb25zdCBIYXNoU2V0PFJlZlB0cjxTZWN1cml0eU9y
aWdpbj4+JiBvcmlnaW5zKQogewogICAgIExPRyhNZWRpYSwgIk1lZGlhUGxheWVyUHJpdmF0ZVFU
S2l0OjpjbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5zKCkiKTsKICAgICBmb3IgKGF1dG8mIG9yaWdp
biA6IG9yaWdpbnMpCi0gICAgICAgIHdrUVRDbGVhck1lZGlhRG93bmxvYWRDYWNoZUZvclNpdGUo
b3JpZ2luLT50b1Jhd1N0cmluZygpKTsKKyAgICAgICAgW1tRVFV0aWxpdGllcyBxdFV0aWxpdGll
c10gY2xlYXJEb3dubG9hZENhY2hlRm9yU2l0ZTpvcmlnaW4tPnRvUmF3U3RyaW5nKCldOwogfQog
CiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0OjpkaXNhYmxlVW5zdXBwb3J0ZWRUcmFja3Mo
KQpAQCAtMTQ2OCw3ICsxNTMxLDcgQEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6aGFz
U2luZ2xlU2VjdXJpdHlPcmlnaW4oKSBjb25zdAogICAgIGlmICghbV9xdE1vdmllKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKLSAgICBSZWY8U2VjdXJpdHlPcmlnaW4+IHJlc29sdmVkT3JpZ2lu
ID0gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShVUkwod2tRVE1vdmllUmVzb2x2ZWRVUkwobV9xdE1v
dmllLmdldCgpKSkpOworICAgIFJlZjxTZWN1cml0eU9yaWdpbj4gcmVzb2x2ZWRPcmlnaW4gPSBT
ZWN1cml0eU9yaWdpbjo6Y3JlYXRlKFVSTChbbV9xdE1vdmllIFVSTF0pKTsKICAgICBSZWY8U2Vj
dXJpdHlPcmlnaW4+IHJlcXVlc3RlZE9yaWdpbiA9IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9t
U3RyaW5nKG1fbW92aWVVUkwpOwogICAgIHJldHVybiByZXNvbHZlZE9yaWdpbi0+aXNTYW1lU2No
ZW1lSG9zdFBvcnQocmVxdWVzdGVkT3JpZ2luLmdldCgpKTsKIH0KQEAgLTE0NzYsMTUgKzE1Mzks
MjEgQEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6aGFzU2luZ2xlU2VjdXJpdHlPcmln
aW4oKSBjb25zdAogTWVkaWFQbGF5ZXI6Ok1vdmllTG9hZFR5cGUgTWVkaWFQbGF5ZXJQcml2YXRl
UVRLaXQ6Om1vdmllTG9hZFR5cGUoKSBjb25zdAogewogICAgIGlmICghbV9xdE1vdmllKQotICAg
ICAgICByZXR1cm4gTWVkaWFQbGF5ZXI6OlVua25vd247Ci0KLSAgICBNZWRpYVBsYXllcjo6TW92
aWVMb2FkVHlwZSBtb3ZpZVR5cGUgPSAoTWVkaWFQbGF5ZXI6Ok1vdmllTG9hZFR5cGUpd2tRVE1v
dmllR2V0VHlwZShtX3F0TW92aWUuZ2V0KCkpOwotCi0gICAgLy8gQ2FuJ3QgaW5jbHVkZSBXZWJL
aXRTeXN0ZW1JbnRlcmZhY2UgZnJvbSBXZWJDb3JlIHNvIHdlIGNhbid0IGdldCB0aGUgZW51bSBy
ZXR1cm5lZAotICAgIC8vIGJ5IHdrUVRNb3ZpZUdldFR5cGUsIGJ1dCBhdCBsZWFzdCB2ZXJpZnkg
dGhhdCB0aGUgdmFsdWUgaXMgaW4gdGhlIHZhbGlkIHJhbmdlLgotICAgIEFTU0VSVChtb3ZpZVR5
cGUgPj0gTWVkaWFQbGF5ZXI6OlVua25vd24gJiYgbW92aWVUeXBlIDw9IE1lZGlhUGxheWVyOjpM
aXZlU3RyZWFtKTsKLQotICAgIHJldHVybiBtb3ZpZVR5cGU7CisgICAgICAgIHJldHVybiBNZWRp
YVBsYXllcjo6TW92aWVMb2FkVHlwZTo6VW5rbm93bjsKKworICAgIFVJbnQzMiBtb3ZpZVR5cGUg
PSBbbV9xdE1vdmllIG1vdmllVHlwZV07CisgICAgc3dpdGNoIChtb3ZpZVR5cGUpIHsKKyAgICBj
YXNlIFFUTW92aWVUeXBlTG9jYWw6CisgICAgY2FzZSBRVE1vdmllVHlwZUZhc3RTdGFydDoKKyAg
ICAgICAgcmV0dXJuIE1lZGlhUGxheWVyOjpNb3ZpZUxvYWRUeXBlOjpEb3dubG9hZDsKKyAgICBj
YXNlIFFUTW92aWVUeXBlTGl2ZVN0cmVhbToKKyAgICAgICAgcmV0dXJuIE1lZGlhUGxheWVyOjpN
b3ZpZUxvYWRUeXBlOjpMaXZlU3RyZWFtOworICAgIGNhc2UgUVRNb3ZpZVR5cGVTdG9yZWRTdHJl
YW06CisgICAgICAgIHJldHVybiBNZWRpYVBsYXllcjo6TW92aWVMb2FkVHlwZTo6U3RvcmVkU3Ry
ZWFtOworICAgIGNhc2UgUVRNb3ZpZVR5cGVVbmtub3duOgorICAgIGRlZmF1bHQ6CisgICAgICAg
IHJldHVybiBNZWRpYVBsYXllcjo6TW92aWVMb2FkVHlwZTo6VW5rbm93bjsKKyAgICB9CiB9CiAK
IHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6OnNldFByZWxvYWQoTWVkaWFQbGF5ZXI6OlBy
ZWxvYWQgcHJlbG9hZCkKQEAgLTE1MTUsNyArMTU4NCw3IEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2
YXRlUVRLaXQ6OmNhblNhdmVNZWRpYURhdGEoKSBjb25zdAogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKICAgICBpZiAobV9xdE1vdmllKQotICAgICAgICB1cmwgPSBVUkwod2tRVE1vdmllUmVzb2x2
ZWRVUkwobV9xdE1vdmllLmdldCgpKSk7CisgICAgICAgIHVybCA9IFVSTChbbV9xdE1vdmllIFVS
TF0pOwogICAgIGVsc2UKICAgICAgICAgdXJsID0gVVJMKFBhcnNlZFVSTFN0cmluZywgbV9tb3Zp
ZVVSTCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3Jl
U3lzdGVtSW50ZXJmYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZVN5
c3RlbUludGVyZmFjZS5oCmluZGV4IDIzZmYyM2ZjZjQ1OGI0MDc4OWIwMmUwYWVjMTJiMjAwMDEx
ZmM1YmIuLmY2NzU5NTA5YTExZmNlMzM0MTNmZTY5MDMzYTQ2ODU2ZjU5NzQ1NTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2Uu
aApAQCAtMTMxLDMyICsxMzEsNyBAQCBleHRlcm4gZG91YmxlICgqd2tHZXROU1VSTFJlc3BvbnNl
Q2FsY3VsYXRlZEV4cGlyYXRpb24pKE5TVVJMUmVzcG9uc2UgKnJlc3BvbnNlKQogZXh0ZXJuIEJP
T0wgKCp3a0dldE5TVVJMUmVzcG9uc2VNdXN0UmV2YWxpZGF0ZSkoTlNVUkxSZXNwb25zZSAqcmVz
cG9uc2UpOwogZXh0ZXJuIEJPT0wgKCp3a0hpdFRlc3RNZWRpYVVJUGFydCkoaW50IHBhcnQsIENH
UmVjdCBib3VuZHMsIENHUG9pbnQgcG9pbnQpOwogZXh0ZXJuIHZvaWQgKCp3a01lYXN1cmVNZWRp
YVVJUGFydCkoaW50IHBhcnQsIENHUmVjdCAqYm91bmRzLCBDR1NpemUgKm5hdHVyYWxTaXplKTsK
LWV4dGVybiBOU1ZpZXcgKigqd2tDcmVhdGVNZWRpYVVJQmFja2dyb3VuZFZpZXcpKHZvaWQpOwog
Ci10eXBlZGVmIGVudW0gewotICAgIHdrTWVkaWFVSUNvbnRyb2xUaW1lbGluZSwKLSAgICB3a01l
ZGlhVUlDb250cm9sU2xpZGVyLAotICAgIHdrTWVkaWFVSUNvbnRyb2xQbGF5UGF1c2VCdXR0b24s
Ci0gICAgd2tNZWRpYVVJQ29udHJvbEV4aXRGdWxsc2NyZWVuQnV0dG9uLAotICAgIHdrTWVkaWFV
SUNvbnRyb2xSZXdpbmRCdXR0b24sCi0gICAgd2tNZWRpYVVJQ29udHJvbEZhc3RGb3J3YXJkQnV0
dG9uLAotICAgIHdrTWVkaWFVSUNvbnRyb2xWb2x1bWVVcEJ1dHRvbiwKLSAgICB3a01lZGlhVUlD
b250cm9sVm9sdW1lRG93bkJ1dHRvbgotfSB3a01lZGlhVUlDb250cm9sVHlwZTsKLWV4dGVybiBO
U0NvbnRyb2wgKigqd2tDcmVhdGVNZWRpYVVJQ29udHJvbCkoaW50KTsKLQotZXh0ZXJuIHVuc2ln
bmVkICgqd2tRVEluY2x1ZGVPbmx5TW9kZXJuTWVkaWFGaWxlVHlwZXMpKHZvaWQpOwotZXh0ZXJu
IHZvaWQgKCp3a1FUTW92aWVEaXNhYmxlQ29tcG9uZW50KSh1aW50MzJfdFs1XSk7Ci1leHRlcm4g
ZmxvYXQgKCp3a1FUTW92aWVNYXhUaW1lTG9hZGVkKShRVE1vdmllKik7Ci1leHRlcm4gTlNTdHJp
bmcgKigqd2tRVE1vdmllTWF4VGltZUxvYWRlZENoYW5nZU5vdGlmaWNhdGlvbikodm9pZCk7Ci1l
eHRlcm4gaW50ICgqd2tRVE1vdmllR2V0VHlwZSkoUVRNb3ZpZSopOwotZXh0ZXJuIEJPT0wgKCp3
a1FUTW92aWVIYXNDbG9zZWRDYXB0aW9ucykoUVRNb3ZpZSopOwotZXh0ZXJuIE5TVVJMICooKndr
UVRNb3ZpZVJlc29sdmVkVVJMKShRVE1vdmllKik7Ci1leHRlcm4gdm9pZCAoKndrUVRNb3ZpZVNl
dFNob3dDbG9zZWRDYXB0aW9ucykoUVRNb3ZpZSosIEJPT0wpOwotZXh0ZXJuIHZvaWQgKCp3a1FU
TW92aWVTZWxlY3RQcmVmZXJyZWRBbHRlcm5hdGVzKShRVE1vdmllKik7Ci1leHRlcm4gTlNBcnJh
eSAqKCp3a1FUR2V0U2l0ZXNJbk1lZGlhRG93bmxvYWRDYWNoZSkoKTsKLWV4dGVybiB2b2lkICgq
d2tRVENsZWFyTWVkaWFEb3dubG9hZENhY2hlRm9yU2l0ZSkoTlNTdHJpbmcgKnNpdGUpOwotZXh0
ZXJuIHZvaWQgKCp3a1FUQ2xlYXJNZWRpYURvd25sb2FkQ2FjaGUpKCk7CiBleHRlcm4gdm9pZCAo
KndrU2V0Q29va2llU3RvcmFnZVByaXZhdGVCcm93c2luZ0VuYWJsZWQpKEJPT0wpOwogI2VuZGlm
CiBleHRlcm4gdm9pZCAoKndrU2V0Q09OTkVDVFByb3h5Rm9yU3RyZWFtKShDRlJlYWRTdHJlYW1S
ZWYsIENGU3RyaW5nUmVmIHByb3h5SG9zdCwgQ0ZOdW1iZXJSZWYgcHJveHlQb3J0KTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNl
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2Uu
bW0KaW5kZXggYzcyM2Q3NDRiMDQ2ZDIxMGZhYWIyMmMyYTQxZGRmMDI0NjNkYTkzZi4uMmVhYmQ0
ZjE0ZjM5MzM2ZTMzNDBjZThlZGVlMzdlNDgyZGQ2ODAyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2UubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2UubW0KQEAgLTM2LDIz
ICszNiw5IEBAIHZvaWQgKCp3a0RyYXdNZWRpYVNsaWRlclRyYWNrKShDR0NvbnRleHRSZWYgY29u
dGV4dCwgQ0dSZWN0IHJlY3QsIGZsb2F0IHRpbWVMb2FkCiBCT09MICgqd2tIaXRUZXN0TWVkaWFV
SVBhcnQpKGludCBwYXJ0LCBDR1JlY3QgYm91bmRzLCBDR1BvaW50IHBvaW50KTsKIHZvaWQgKCp3
a0RyYXdNZWRpYVVJUGFydCkoaW50IHBhcnQsIENHQ29udGV4dFJlZiBjb250ZXh0LCBDR1JlY3Qg
cmVjdCwgdW5zaWduZWQgc3RhdGUpOwogdm9pZCAoKndrTWVhc3VyZU1lZGlhVUlQYXJ0KShpbnQg
cGFydCwgQ0dSZWN0ICpib3VuZHMsIENHU2l6ZSAqbmF0dXJhbFNpemUpOwotTlNWaWV3ICooKndr
Q3JlYXRlTWVkaWFVSUJhY2tncm91bmRWaWV3KSh2b2lkKTsKLU5TQ29udHJvbCAqKCp3a0NyZWF0
ZU1lZGlhVUlDb250cm9sKShpbnQpOwogTlNUaW1lSW50ZXJ2YWwgKCp3a0dldE5TVVJMUmVzcG9u
c2VDYWxjdWxhdGVkRXhwaXJhdGlvbikoTlNVUkxSZXNwb25zZSAqcmVzcG9uc2UpOwogQk9PTCAo
KndrR2V0TlNVUkxSZXNwb25zZU11c3RSZXZhbGlkYXRlKShOU1VSTFJlc3BvbnNlICpyZXNwb25z
ZSk7CiB2b2lkICgqd2tQb3B1cE1lbnUpKE5TTWVudSosIE5TUG9pbnQgbG9jYXRpb24sIGZsb2F0
IHdpZHRoLCBOU1ZpZXcqLCBpbnQgc2VsZWN0ZWRJdGVtLCBOU0ZvbnQqLCBOU0NvbnRyb2xTaXpl
IGNvbnRyb2xTaXplLCBib29sIHVzZXNDdXN0b21BcHBlYXJhbmNlKTsKLXVuc2lnbmVkICgqd2tR
VEluY2x1ZGVPbmx5TW9kZXJuTWVkaWFGaWxlVHlwZXMpKHZvaWQpOwotdm9pZCAoKndrUVRNb3Zp
ZURpc2FibGVDb21wb25lbnQpKHVpbnQzMl90WzVdKTsKLWZsb2F0ICgqd2tRVE1vdmllTWF4VGlt
ZUxvYWRlZCkoUVRNb3ZpZSopOwotTlNTdHJpbmcgKigqd2tRVE1vdmllTWF4VGltZUxvYWRlZENo
YW5nZU5vdGlmaWNhdGlvbikodm9pZCk7Ci1pbnQgKCp3a1FUTW92aWVHZXRUeXBlKShRVE1vdmll
Kik7Ci1CT09MICgqd2tRVE1vdmllSGFzQ2xvc2VkQ2FwdGlvbnMpKFFUTW92aWUqKTsKLU5TVVJM
ICooKndrUVRNb3ZpZVJlc29sdmVkVVJMKShRVE1vdmllKik7Ci12b2lkICgqd2tRVE1vdmllU2V0
U2hvd0Nsb3NlZENhcHRpb25zKShRVE1vdmllKiwgQk9PTCk7Ci12b2lkICgqd2tRVE1vdmllU2Vs
ZWN0UHJlZmVycmVkQWx0ZXJuYXRlcykoUVRNb3ZpZSopOwotTlNBcnJheSAqKCp3a1FUR2V0U2l0
ZXNJbk1lZGlhRG93bmxvYWRDYWNoZSkoKTsKLXZvaWQgKCp3a1FUQ2xlYXJNZWRpYURvd25sb2Fk
Q2FjaGVGb3JTaXRlKShOU1N0cmluZyAqc2l0ZSk7Ci12b2lkICgqd2tRVENsZWFyTWVkaWFEb3du
bG9hZENhY2hlKSgpOwogCiB2b2lkICgqd2tTZXRDT05ORUNUUHJveHlGb3JTdHJlYW0pKENGUmVh
ZFN0cmVhbVJlZiwgQ0ZTdHJpbmdSZWYgcHJveHlIb3N0LCBDRk51bWJlclJlZiBwcm94eVBvcnQp
Owogdm9pZCAoKndrU2V0Q09OTkVDVFByb3h5QXV0aG9yaXphdGlvbkZvclN0cmVhbSkoQ0ZSZWFk
U3RyZWFtUmVmLCBDRlN0cmluZ1JlZiBwcm94eUF1dGhvcml6YXRpb25TdHJpbmcpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYlZpZGVvRnVsbHNjcmVlbkhVRFdp
bmRvd0NvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViVmlkZW9G
dWxsc2NyZWVuSFVEV2luZG93Q29udHJvbGxlci5tbQppbmRleCBlZmI2ZTJiMjczYzU4MzUxMzNl
NzViMTYyNmE5NWIwNDkwYzc3OTljLi5mYzBmNTEwYzdhMmNiMjQ5NzhkMDRhMGM0ODA2ZWQ0Yzcx
YzUzMjAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViVmlkZW9G
dWxsc2NyZWVuSFVEV2luZG93Q29udHJvbGxlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tYWMvV2ViVmlkZW9GdWxsc2NyZWVuSFVEV2luZG93Q29udHJvbGxlci5tbQpAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAxNiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAxNyBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMx
LDkgKzMxLDM4IEBACiAjaW1wb3J0IDxXZWJDb3JlL0hUTUxWaWRlb0VsZW1lbnQuaD4KICNpbXBv
cnQgPFdlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaD4KICNpbXBvcnQgPHBhbC9zcGkvY2cvQ29yZUdy
YXBoaWNzU1BJLmg+CisjaW1wb3J0IDxwYWwvc3BpL21hYy9RVEtpdFNQSS5oPgorI2ltcG9ydCA8
d3RmL1NvZnRMaW5raW5nLmg+CisKK1NPRlRfTElOS19GUkFNRVdPUksoUVRLaXQpCisKK1NPRlRf
TElOS19DTEFTUyhRVEtpdCwgUVRIVURCYWNrZ3JvdW5kVmlldykKK1NPRlRfTElOS19DTEFTUyhR
VEtpdCwgUVRIVURCdXR0b24pCitTT0ZUX0xJTktfQ0xBU1MoUVRLaXQsIFFUSFVEU2xpZGVyKQor
U09GVF9MSU5LX0NMQVNTKFFUS2l0LCBRVEhVRFRpbWVsaW5lKQorCisjZGVmaW5lIFFUSFVEQmFj
a2dyb3VuZFZpZXcgZ2V0UVRIVURCYWNrZ3JvdW5kVmlld0NsYXNzKCkKKyNkZWZpbmUgUVRIVURC
dXR0b24gZ2V0UVRIVURCdXR0b25DbGFzcygpCisjZGVmaW5lIFFUSFVEU2xpZGVyIGdldFFUSFVE
U2xpZGVyQ2xhc3MoKQorI2RlZmluZSBRVEhVRFRpbWVsaW5lIGdldFFUSFVEVGltZWxpbmVDbGFz
cygpCiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K2VudW0gY2xhc3MgTWVkaWFVSUNvbnRyb2wgeworICAgIFRpbWVsaW5lLAorICAgIFNsaWRlciwK
KyAgICBQbGF5UGF1c2VCdXR0b24sCisgICAgRXhpdEZ1bGxzY3JlZW5CdXR0b24sCisgICAgUmV3
aW5kQnV0dG9uLAorICAgIEZhc3RGb3J3YXJkQnV0dG9uLAorICAgIFZvbHVtZVVwQnV0dG9uLAor
ICAgIFZvbHVtZURvd25CdXR0b24sCit9OworCit9CisKIEBpbnRlcmZhY2UgV2ViVmlkZW9GdWxs
c2NyZWVuSFVEV2luZG93Q29udHJvbGxlciAoUHJpdmF0ZSkgPE5TV2luZG93RGVsZWdhdGU+CiAK
IC0gKHZvaWQpdXBkYXRlVGltZTsKQEAgLTI2NSwxMCArMjk0LDY4IEBAIC0gKHZvaWQpY2xvc2VX
aW5kb3cKICAgICBbc2VsZiBzZXRXaW5kb3c6bmlsXTsKIH0KIAotc3RhdGljIE5TQ29udHJvbCAq
Y3JlYXRlQ29udHJvbFdpdGhNZWRpYVVJQ29udHJvbFR5cGUoaW50IGNvbnRyb2xUeXBlLCBOU1Jl
Y3QgZnJhbWUpCitzdGF0aWMgTlNDb250cm9sICpjcmVhdGVNZWRpYVVJQ29udHJvbChNZWRpYVVJ
Q29udHJvbCBjb250cm9sVHlwZSkKK3sKKyAgICBzd2l0Y2ggKGNvbnRyb2xUeXBlKSB7CisgICAg
Y2FzZSBNZWRpYVVJQ29udHJvbDo6VGltZWxpbmU6IHsKKyAgICAgICAgTlNTbGlkZXIgKnNsaWRl
ciA9IFtbUVRIVURUaW1lbGluZSBhbGxvY10gaW5pdF07CisgICAgICAgIFtbc2xpZGVyIGNlbGxd
IHNldENvbnRpbnVvdXM6WUVTXTsKKyAgICAgICAgcmV0dXJuIHNsaWRlcjsKKyAgICB9CisgICAg
Y2FzZSBNZWRpYVVJQ29udHJvbDo6U2xpZGVyOiB7CisgICAgICAgIE5TQnV0dG9uICpzbGlkZXIg
PSBbW1FUSFVEU2xpZGVyIGFsbG9jXSBpbml0XTsKKyAgICAgICAgW1tzbGlkZXIgY2VsbF0gc2V0
Q29udGludW91czpZRVNdOworICAgICAgICByZXR1cm4gc2xpZGVyOworICAgIH0KKyAgICBjYXNl
IE1lZGlhVUlDb250cm9sOjpQbGF5UGF1c2VCdXR0b246IHsKKyAgICAgICAgTlNCdXR0b24gKmJ1
dHRvbiA9IFtbUVRIVURCdXR0b24gYWxsb2NdIGluaXRdOworICAgICAgICBbYnV0dG9uIHNldElt
YWdlOltOU0ltYWdlIGltYWdlTmFtZWQ6QCJOU1BsYXlUZW1wbGF0ZSJdXTsKKyAgICAgICAgW2J1
dHRvbiBzZXRBbHRlcm5hdGVJbWFnZTpbTlNJbWFnZSBpbWFnZU5hbWVkOkAiTlNQYXVzZVFUUHJp
dmF0ZVRlbXBsYXRlIl1dOworCisgICAgICAgIFtbYnV0dG9uIGNlbGxdIHNldFNob3dzU3RhdGVC
eTpOU0NvbnRlbnRzQ2VsbE1hc2tdOworICAgICAgICBbYnV0dG9uIHNldEJvcmRlcmVkOk5PXTsK
KyAgICAgICAgcmV0dXJuIGJ1dHRvbjsKKyAgICB9CisgICAgY2FzZSBNZWRpYVVJQ29udHJvbDo6
RXhpdEZ1bGxzY3JlZW5CdXR0b246IHsKKyAgICAgICAgTlNCdXR0b24gKmJ1dHRvbiA9IFtbUVRI
VURCdXR0b24gYWxsb2NdIGluaXRdOworICAgICAgICBbYnV0dG9uIHNldEltYWdlOltOU0ltYWdl
IGltYWdlTmFtZWQ6QCJOU0V4aXRGdWxsU2NyZWVuVGVtcGxhdGUiXV07CisgICAgICAgIFtidXR0
b24gc2V0Qm9yZGVyZWQ6Tk9dOworICAgICAgICByZXR1cm4gYnV0dG9uOworICAgIH0KKyAgICBj
YXNlIE1lZGlhVUlDb250cm9sOjpSZXdpbmRCdXR0b246IHsKKyAgICAgICAgTlNCdXR0b24gKmJ1
dHRvbiA9IFtbUVRIVURCdXR0b24gYWxsb2NdIGluaXRdOworICAgICAgICBbYnV0dG9uIHNldElt
YWdlOltOU0ltYWdlIGltYWdlTmFtZWQ6QCJOU1Jld2luZFRlbXBsYXRlIl1dOworICAgICAgICBb
YnV0dG9uIHNldEJvcmRlcmVkOk5PXTsKKyAgICAgICAgcmV0dXJuIGJ1dHRvbjsKKyAgICB9Cisg
ICAgY2FzZSBNZWRpYVVJQ29udHJvbDo6RmFzdEZvcndhcmRCdXR0b246IHsKKyAgICAgICAgTlNC
dXR0b24gKmJ1dHRvbiA9IFtbUVRIVURCdXR0b24gYWxsb2NdIGluaXRdOworICAgICAgICBbYnV0
dG9uIHNldEltYWdlOltOU0ltYWdlIGltYWdlTmFtZWQ6QCJOU0Zhc3RGb3J3YXJkVGVtcGxhdGUi
XV07CisgICAgICAgIFtidXR0b24gc2V0Qm9yZGVyZWQ6Tk9dOworICAgICAgICByZXR1cm4gYnV0
dG9uOworICAgIH0KKyAgICBjYXNlIE1lZGlhVUlDb250cm9sOjpWb2x1bWVVcEJ1dHRvbjogewor
ICAgICAgICBOU0J1dHRvbiAqYnV0dG9uID0gW1tRVEhVREJ1dHRvbiBhbGxvY10gaW5pdF07Cisg
ICAgICAgIFtidXR0b24gc2V0SW1hZ2U6W05TSW1hZ2UgaW1hZ2VOYW1lZDpAIk5TQXVkaW9PdXRw
dXRWb2x1bWVIaWdoVGVtcGxhdGUiXV07CisgICAgICAgIFtidXR0b24gc2V0Qm9yZGVyZWQ6Tk9d
OworICAgICAgICByZXR1cm4gYnV0dG9uOworICAgIH0KKyAgICBjYXNlIE1lZGlhVUlDb250cm9s
OjpWb2x1bWVEb3duQnV0dG9uOiB7CisgICAgICAgIE5TQnV0dG9uICpidXR0b24gPSBbW1FUSFVE
QnV0dG9uIGFsbG9jXSBpbml0XTsKKyAgICAgICAgW2J1dHRvbiBzZXRJbWFnZTpbTlNJbWFnZSBp
bWFnZU5hbWVkOkAiTlNBdWRpb091dHB1dFZvbHVtZUxvd1RlbXBsYXRlIl1dOworICAgICAgICBb
YnV0dG9uIHNldEJvcmRlcmVkOk5PXTsKKyAgICAgICAgcmV0dXJuIGJ1dHRvbjsKKyAgICB9Cisg
ICAgfQorCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIG5pbDsKK30KKwor
c3RhdGljIE5TQ29udHJvbCAqY3JlYXRlQ29udHJvbFdpdGhNZWRpYVVJQ29udHJvbFR5cGUoTWVk
aWFVSUNvbnRyb2wgY29udHJvbFR5cGUsIE5TUmVjdCBmcmFtZSkKIHsKLSAgICBOU0NvbnRyb2wg
KmNvbnRyb2wgPSB3a0NyZWF0ZU1lZGlhVUlDb250cm9sKGNvbnRyb2xUeXBlKTsKLSAgICBbY29u
dHJvbCBzZXRGcmFtZTpmcmFtZV07CisgICAgTlNDb250cm9sICpjb250cm9sID0gY3JlYXRlTWVk
aWFVSUNvbnRyb2woY29udHJvbFR5cGUpOworICAgIGNvbnRyb2wuZnJhbWUgPSBmcmFtZTsKICAg
ICByZXR1cm4gY29udHJvbDsKIH0KIApAQCAtMjg1LDYgKzM3MiwyMSBAQCBzdGF0aWMgTlNUZXh0
RmllbGQgKmNyZWF0ZVRpbWVUZXh0RmllbGQoTlNSZWN0IGZyYW1lKQogICAgIHJldHVybiB0ZXh0
RmllbGQ7CiB9CiAKK3N0YXRpYyBOU1ZpZXcgKmNyZWF0ZU1lZGlhVUlCYWNrZ3JvdW5kVmlldygp
Cit7CisgICAgaWQgdmlldyA9IFtbUVRIVURCYWNrZ3JvdW5kVmlldyBhbGxvY10gaW5pdF07CisK
KyAgICBjb25zdCBDR0Zsb2F0IHF1aWNrVGltZVBsYXllckhVREhlaWdodCA9IDU5OworICAgIGNv
bnN0IENHRmxvYXQgcXVpY2tUaW1lUGxheWVySFVEQ29udGVudEJvcmRlclBvc2l0aW9uID0gMzg7
CisKKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwdXNoCisjcHJhZ21hIGNsYW5nIGRpYWdub3N0
aWMgaWdub3JlZCAiLVdkZXByZWNhdGVkLWRlY2xhcmF0aW9ucyIKKyAgICBbdmlldyBzZXRDb250
ZW50Qm9yZGVyUG9zaXRpb246cXVpY2tUaW1lUGxheWVySFVEQ29udGVudEJvcmRlclBvc2l0aW9u
IC8gcXVpY2tUaW1lUGxheWVySFVESGVpZ2h0XTsKKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBw
b3AKKworICAgIHJldHVybiB2aWV3OworfQorCiAtICh2b2lkKXdpbmRvd0RpZExvYWQKIHsKICAg
ICBzdGF0aWMgY29uc3QgQ0dGbG9hdCBob3Jpem9udGFsTWFyZ2luID0gMTA7CkBAIC0zMTAsNyAr
NDEyLDcgQEAgLSAodm9pZCl3aW5kb3dEaWRMb2FkCiAgICAgTlNXaW5kb3cgKndpbmRvdyA9IFtz
ZWxmIHdpbmRvd107CiAgICAgQVNTRVJUKHdpbmRvdyk7CiAKLSAgICBOU1ZpZXcgKmJhY2tncm91
bmQgPSB3a0NyZWF0ZU1lZGlhVUlCYWNrZ3JvdW5kVmlldygpOworICAgIE5TVmlldyAqYmFja2dy
b3VuZCA9IGNyZWF0ZU1lZGlhVUlCYWNrZ3JvdW5kVmlldygpOwogCiAgICAgW3dpbmRvdyBzZXRD
b250ZW50VmlldzpiYWNrZ3JvdW5kXTsKICAgICBfYXJlYSA9IFtbTlNUcmFja2luZ0FyZWEgYWxs
b2NdIGluaXRXaXRoUmVjdDpbYmFja2dyb3VuZCBib3VuZHNdIG9wdGlvbnM6TlNUcmFja2luZ01v
dXNlRW50ZXJlZEFuZEV4aXRlZCB8IE5TVHJhY2tpbmdBY3RpdmVBbHdheXMgb3duZXI6c2VsZiB1
c2VySW5mbzpuaWxdOwpAQCAtMzIwLDE0ICs0MjIsMTQgQEAgLSAodm9pZCl3aW5kb3dEaWRMb2Fk
CiAgICAgTlNWaWV3ICpjb250ZW50VmlldyA9IFt3aW5kb3cgY29udGVudFZpZXddOwogCiAgICAg
Q0dGbG9hdCBjZW50ZXIgPSBDR0Zsb29yKCh3aW5kb3dXaWR0aCAtIHBsYXlCdXR0b25XaWR0aCkg
LyAyKTsKLSAgICBfcGxheUJ1dHRvbiA9IChOU0J1dHRvbiAqKWNyZWF0ZUNvbnRyb2xXaXRoTWVk
aWFVSUNvbnRyb2xUeXBlKHdrTWVkaWFVSUNvbnRyb2xQbGF5UGF1c2VCdXR0b24sIE5TTWFrZVJl
Y3QoY2VudGVyLCB3aW5kb3dIZWlnaHQgLSBwbGF5QnV0dG9uVG9wTWFyZ2luIC0gcGxheUJ1dHRv
bkhlaWdodCwgcGxheUJ1dHRvbldpZHRoLCBwbGF5QnV0dG9uSGVpZ2h0KSk7CisgICAgX3BsYXlC
dXR0b24gPSAoTlNCdXR0b24gKiljcmVhdGVDb250cm9sV2l0aE1lZGlhVUlDb250cm9sVHlwZShN
ZWRpYVVJQ29udHJvbDo6UGxheVBhdXNlQnV0dG9uLCBOU01ha2VSZWN0KGNlbnRlciwgd2luZG93
SGVpZ2h0IC0gcGxheUJ1dHRvblRvcE1hcmdpbiAtIHBsYXlCdXR0b25IZWlnaHQsIHBsYXlCdXR0
b25XaWR0aCwgcGxheUJ1dHRvbkhlaWdodCkpOwogICAgIEFTU0VSVChbX3BsYXlCdXR0b24gaXNL
aW5kT2ZDbGFzczpbTlNCdXR0b24gY2xhc3NdXSk7CiAgICAgW19wbGF5QnV0dG9uIHNldFRhcmdl
dDpzZWxmXTsKICAgICBbX3BsYXlCdXR0b24gc2V0QWN0aW9uOkBzZWxlY3Rvcih0b2dnbGVQbGF5
aW5nOildOwogICAgIFtjb250ZW50VmlldyBhZGRTdWJ2aWV3Ol9wbGF5QnV0dG9uXTsKIAogICAg
IENHRmxvYXQgY2xvc2VUb1JpZ2h0ID0gd2luZG93V2lkdGggLSBob3Jpem9udGFsTWFyZ2luIC0g
ZXhpdEZ1bGxzY3JlZW5CdXR0b25XaWR0aDsKLSAgICBOU0NvbnRyb2wgKmV4aXRGdWxsc2NyZWVu
QnV0dG9uID0gY3JlYXRlQ29udHJvbFdpdGhNZWRpYVVJQ29udHJvbFR5cGUod2tNZWRpYVVJQ29u
dHJvbEV4aXRGdWxsc2NyZWVuQnV0dG9uLCBOU01ha2VSZWN0KGNsb3NlVG9SaWdodCwgd2luZG93
SGVpZ2h0IC0gZXhpdEZ1bGxzY3JlZW5CdXR0b25Ub3BNYXJnaW4gLSBleGl0RnVsbHNjcmVlbkJ1
dHRvbkhlaWdodCwgZXhpdEZ1bGxzY3JlZW5CdXR0b25XaWR0aCwgZXhpdEZ1bGxzY3JlZW5CdXR0
b25IZWlnaHQpKTsKKyAgICBOU0NvbnRyb2wgKmV4aXRGdWxsc2NyZWVuQnV0dG9uID0gY3JlYXRl
Q29udHJvbFdpdGhNZWRpYVVJQ29udHJvbFR5cGUoTWVkaWFVSUNvbnRyb2w6OkV4aXRGdWxsc2Ny
ZWVuQnV0dG9uLCBOU01ha2VSZWN0KGNsb3NlVG9SaWdodCwgd2luZG93SGVpZ2h0IC0gZXhpdEZ1
bGxzY3JlZW5CdXR0b25Ub3BNYXJnaW4gLSBleGl0RnVsbHNjcmVlbkJ1dHRvbkhlaWdodCwgZXhp
dEZ1bGxzY3JlZW5CdXR0b25XaWR0aCwgZXhpdEZ1bGxzY3JlZW5CdXR0b25IZWlnaHQpKTsKICAg
ICBbZXhpdEZ1bGxzY3JlZW5CdXR0b24gc2V0QWN0aW9uOkBzZWxlY3RvcihleGl0RnVsbHNjcmVl
bjopXTsKICAgICBbZXhpdEZ1bGxzY3JlZW5CdXR0b24gc2V0VGFyZ2V0OnNlbGZdOwogICAgIFtj
b250ZW50VmlldyBhZGRTdWJ2aWV3OmV4aXRGdWxsc2NyZWVuQnV0dG9uXTsKQEAgLTMzNSwyNyAr
NDM3LDI3IEBAIC0gKHZvaWQpd2luZG93RGlkTG9hZAogICAgIAogICAgIENHRmxvYXQgdm9sdW1l
Q29udHJvbHNCb3R0b20gPSB3aW5kb3dIZWlnaHQgLSB2b2x1bWVDb250cm9sc1RvcE1hcmdpbiAt
IHZvbHVtZUJ1dHRvbkhlaWdodDsKICAgICBDR0Zsb2F0IGxlZnQgPSBob3Jpem9udGFsTWFyZ2lu
OwotICAgIE5TQ29udHJvbCAqdm9sdW1lRG93bkJ1dHRvbiA9IGNyZWF0ZUNvbnRyb2xXaXRoTWVk
aWFVSUNvbnRyb2xUeXBlKHdrTWVkaWFVSUNvbnRyb2xWb2x1bWVEb3duQnV0dG9uLCBOU01ha2VS
ZWN0KGxlZnQsIHZvbHVtZUNvbnRyb2xzQm90dG9tLCB2b2x1bWVCdXR0b25XaWR0aCwgdm9sdW1l
QnV0dG9uSGVpZ2h0KSk7CisgICAgTlNDb250cm9sICp2b2x1bWVEb3duQnV0dG9uID0gY3JlYXRl
Q29udHJvbFdpdGhNZWRpYVVJQ29udHJvbFR5cGUoTWVkaWFVSUNvbnRyb2w6OlZvbHVtZURvd25C
dXR0b24sIE5TTWFrZVJlY3QobGVmdCwgdm9sdW1lQ29udHJvbHNCb3R0b20sIHZvbHVtZUJ1dHRv
bldpZHRoLCB2b2x1bWVCdXR0b25IZWlnaHQpKTsKICAgICBbY29udGVudFZpZXcgYWRkU3Vidmll
dzp2b2x1bWVEb3duQnV0dG9uXTsKICAgICBbdm9sdW1lRG93bkJ1dHRvbiBzZXRUYXJnZXQ6c2Vs
Zl07CiAgICAgW3ZvbHVtZURvd25CdXR0b24gc2V0QWN0aW9uOkBzZWxlY3RvcihzZXRWb2x1bWVU
b1plcm86KV07CiAgICAgW3ZvbHVtZURvd25CdXR0b24gcmVsZWFzZV07CiAKICAgICBsZWZ0ICs9
IHZvbHVtZUJ1dHRvbldpZHRoOwotICAgIF92b2x1bWVTbGlkZXIgPSBjcmVhdGVDb250cm9sV2l0
aE1lZGlhVUlDb250cm9sVHlwZSh3a01lZGlhVUlDb250cm9sU2xpZGVyLCBOU01ha2VSZWN0KGxl
ZnQsIHZvbHVtZUNvbnRyb2xzQm90dG9tICsgQ0dGbG9vcigodm9sdW1lQnV0dG9uSGVpZ2h0IC0g
dm9sdW1lU2xpZGVySGVpZ2h0KSAvIDIpLCB2b2x1bWVTbGlkZXJXaWR0aCwgdm9sdW1lU2xpZGVy
SGVpZ2h0KSk7CisgICAgX3ZvbHVtZVNsaWRlciA9IGNyZWF0ZUNvbnRyb2xXaXRoTWVkaWFVSUNv
bnRyb2xUeXBlKE1lZGlhVUlDb250cm9sOjpTbGlkZXIsIE5TTWFrZVJlY3QobGVmdCwgdm9sdW1l
Q29udHJvbHNCb3R0b20gKyBDR0Zsb29yKCh2b2x1bWVCdXR0b25IZWlnaHQgLSB2b2x1bWVTbGlk
ZXJIZWlnaHQpIC8gMiksIHZvbHVtZVNsaWRlcldpZHRoLCB2b2x1bWVTbGlkZXJIZWlnaHQpKTsK
ICAgICBbX3ZvbHVtZVNsaWRlciBzZXRWYWx1ZTpbTlNOdW1iZXIgbnVtYmVyV2l0aERvdWJsZTpb
c2VsZiBtYXhWb2x1bWVdXSBmb3JLZXk6QCJtYXhWYWx1ZSJdOwogICAgIFtfdm9sdW1lU2xpZGVy
IHNldFRhcmdldDpzZWxmXTsKICAgICBbX3ZvbHVtZVNsaWRlciBzZXRBY3Rpb246QHNlbGVjdG9y
KHZvbHVtZUNoYW5nZWQ6KV07CiAgICAgW2NvbnRlbnRWaWV3IGFkZFN1YnZpZXc6X3ZvbHVtZVNs
aWRlcl07CiAKICAgICBsZWZ0ICs9IHZvbHVtZVNsaWRlcldpZHRoICsgdm9sdW1lVXBCdXR0b25M
ZWZ0TWFyZ2luOwotICAgIE5TQ29udHJvbCAqdm9sdW1lVXBCdXR0b24gPSBjcmVhdGVDb250cm9s
V2l0aE1lZGlhVUlDb250cm9sVHlwZSh3a01lZGlhVUlDb250cm9sVm9sdW1lVXBCdXR0b24sIE5T
TWFrZVJlY3QobGVmdCwgdm9sdW1lQ29udHJvbHNCb3R0b20sIHZvbHVtZUJ1dHRvbldpZHRoLCB2
b2x1bWVCdXR0b25IZWlnaHQpKTsKKyAgICBOU0NvbnRyb2wgKnZvbHVtZVVwQnV0dG9uID0gY3Jl
YXRlQ29udHJvbFdpdGhNZWRpYVVJQ29udHJvbFR5cGUoTWVkaWFVSUNvbnRyb2w6OlZvbHVtZVVw
QnV0dG9uLCBOU01ha2VSZWN0KGxlZnQsIHZvbHVtZUNvbnRyb2xzQm90dG9tLCB2b2x1bWVCdXR0
b25XaWR0aCwgdm9sdW1lQnV0dG9uSGVpZ2h0KSk7CiAgICAgW3ZvbHVtZVVwQnV0dG9uIHNldFRh
cmdldDpzZWxmXTsKICAgICBbdm9sdW1lVXBCdXR0b24gc2V0QWN0aW9uOkBzZWxlY3RvcihzZXRW
b2x1bWVUb01heGltdW06KV07CiAgICAgW2NvbnRlbnRWaWV3IGFkZFN1YnZpZXc6dm9sdW1lVXBC
dXR0b25dOwogICAgIFt2b2x1bWVVcEJ1dHRvbiByZWxlYXNlXTsKIAotICAgIF90aW1lbGluZSA9
IHdrQ3JlYXRlTWVkaWFVSUNvbnRyb2wod2tNZWRpYVVJQ29udHJvbFRpbWVsaW5lKTsKKyAgICBf
dGltZWxpbmUgPSBjcmVhdGVNZWRpYVVJQ29udHJvbChNZWRpYVVJQ29udHJvbDo6VGltZWxpbmUp
OwogCiAgICAgW190aW1lbGluZSBzZXRUYXJnZXQ6c2VsZl07CiAgICAgW190aW1lbGluZSBzZXRB
Y3Rpb246QHNlbGVjdG9yKHRpbWVsaW5lUG9zaXRpb25DaGFuZ2VkOildOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJTeXN0ZW1JbnRl
cmZhY2UubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dl
YlN5c3RlbUludGVyZmFjZS5tbQppbmRleCAwZGRkNTcxNDU5Yjg1NmYzOTIwNWUxMTBjYzAwY2Nj
YWVlM2ZkMGVlLi5iZGE1ZDczZGZjMTIyZjNlMDIyM2FhYWU1NTI4NGQ0YjM5ZTU3M2NlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYlN5
c3RlbUludGVyZmFjZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvbWFjL1dlYlN5c3RlbUludGVyZmFjZS5tbQpAQCAtNDMsMTggKzQzLDYgQEAgdm9pZCBJ
bml0V2ViQ29yZVN5c3RlbUludGVyZmFjZSh2b2lkKQogICAgICAgICBJTklUKERyYXdNZWRpYVVJ
UGFydCk7CiAgICAgICAgIElOSVQoSGl0VGVzdE1lZGlhVUlQYXJ0KTsKICAgICAgICAgSU5JVChN
ZWFzdXJlTWVkaWFVSVBhcnQpOwotICAgICAgICBJTklUKFFUSW5jbHVkZU9ubHlNb2Rlcm5NZWRp
YUZpbGVUeXBlcyk7Ci0gICAgICAgIElOSVQoUVRNb3ZpZURpc2FibGVDb21wb25lbnQpOwotICAg
ICAgICBJTklUKFFUTW92aWVHZXRUeXBlKTsKLSAgICAgICAgSU5JVChRVE1vdmllSGFzQ2xvc2Vk
Q2FwdGlvbnMpOwotICAgICAgICBJTklUKFFUTW92aWVNYXhUaW1lTG9hZGVkKTsKLSAgICAgICAg
SU5JVChRVE1vdmllTWF4VGltZUxvYWRlZENoYW5nZU5vdGlmaWNhdGlvbik7Ci0gICAgICAgIElO
SVQoUVRNb3ZpZVJlc29sdmVkVVJMKTsKLSAgICAgICAgSU5JVChRVE1vdmllU2VsZWN0UHJlZmVy
cmVkQWx0ZXJuYXRlcyk7Ci0gICAgICAgIElOSVQoUVRNb3ZpZVNldFNob3dDbG9zZWRDYXB0aW9u
cyk7Ci0gICAgICAgIElOSVQoUVRHZXRTaXRlc0luTWVkaWFEb3dubG9hZENhY2hlKTsKLSAgICAg
ICAgSU5JVChRVENsZWFyTWVkaWFEb3dubG9hZENhY2hlRm9yU2l0ZSk7Ci0gICAgICAgIElOSVQo
UVRDbGVhck1lZGlhRG93bmxvYWRDYWNoZSk7CiAjZW5kaWYKICAgICAgICAgSU5JVChTZXRDT05O
RUNUUHJveHlBdXRob3JpemF0aW9uRm9yU3RyZWFtKTsKICAgICAgICAgSU5JVChTZXRDT05ORUNU
UHJveHlGb3JTdHJlYW0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViU3lzdGVtSW50ZXJmYWNlLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViU3lzdGVtSW50ZXJmYWNlLm1tCmluZGV4IGEzMjAyNDUzN2Nh
ZTc3NDA0ZDEyMmEzYTM4NTRkM2MyZTdiYTI0OTAuLjE3NDY1ODZiMjQyZjUyZTA3YTk5ZmU5MTVh
YTZiNGY2MmEzYmM1ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYlN5c3RlbUludGVyZmFjZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJTeXN0ZW1JbnRlcmZhY2UubW0KQEAgLTQ5LDI1ICs0OSw5
IEBAIHZvaWQgSW5pdFdlYkNvcmVTeXN0ZW1JbnRlcmZhY2Uodm9pZCkKICAgICBJTklUKERyYXdN
ZWRpYVNsaWRlclRyYWNrKTsKICAgICBJTklUKEhpdFRlc3RNZWRpYVVJUGFydCk7CiAgICAgSU5J
VChNZWFzdXJlTWVkaWFVSVBhcnQpOwotICAgIElOSVQoQ3JlYXRlTWVkaWFVSUJhY2tncm91bmRW
aWV3KTsKLSAgICBJTklUKENyZWF0ZU1lZGlhVUlDb250cm9sKTsKICNlbmRpZgogICAgIElOSVQo
U2V0Q09OTkVDVFByb3h5QXV0aG9yaXphdGlvbkZvclN0cmVhbSk7CiAgICAgSU5JVChTZXRDT05O
RUNUUHJveHlGb3JTdHJlYW0pOwotI2lmIEVOQUJMRShWSURFTykgJiYgIVBMQVRGT1JNKElPUykK
LSAgICBJTklUKFFUSW5jbHVkZU9ubHlNb2Rlcm5NZWRpYUZpbGVUeXBlcyk7Ci0gICAgSU5JVChR
VE1vdmllRGlzYWJsZUNvbXBvbmVudCk7Ci0gICAgSU5JVChRVE1vdmllTWF4VGltZUxvYWRlZCk7
Ci0gICAgSU5JVChRVE1vdmllTWF4VGltZUxvYWRlZENoYW5nZU5vdGlmaWNhdGlvbik7Ci0gICAg
SU5JVChRVE1vdmllR2V0VHlwZSk7Ci0gICAgSU5JVChRVE1vdmllSGFzQ2xvc2VkQ2FwdGlvbnMp
OwotICAgIElOSVQoUVRNb3ZpZVJlc29sdmVkVVJMKTsKLSAgICBJTklUKFFUTW92aWVTZXRTaG93
Q2xvc2VkQ2FwdGlvbnMpOwotICAgIElOSVQoUVRNb3ZpZVNlbGVjdFByZWZlcnJlZEFsdGVybmF0
ZXMpOwotICAgIElOSVQoUVRHZXRTaXRlc0luTWVkaWFEb3dubG9hZENhY2hlKTsKLSAgICBJTklU
KFFUQ2xlYXJNZWRpYURvd25sb2FkQ2FjaGVGb3JTaXRlKTsKLSAgICBJTklUKFFUQ2xlYXJNZWRp
YURvd25sb2FkQ2FjaGUpOwotI2VuZGlmCiAKICNpZiAhUExBVEZPUk0oSU9TKQogICAgIElOSVQo
RXhlY3V0YWJsZVdhc0xpbmtlZE9uT3JCZWZvcmVTbm93TGVvcGFyZCk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>