<?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>159804</bug_id>
          
          <creation_ts>2016-07-15 02:55:47 -0700</creation_ts>
          <short_desc>[Fetch API] Response constructor should be able to take a ReadableStream as body</short_desc>
          <delta_ts>2016-07-26 23:39:30 -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>WebCore Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>159808</dependson>
    
    <dependson>160200</dependson>
          <blocked>151937</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="youenn fablet">youennf</reporter>
          <assigned_to name="youenn fablet">youennf</assigned_to>
          <cc>achristensen</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1211372</commentid>
    <comment_count>0</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-07-15 02:55:47 -0700</bug_when>
    <thetext>As per https://fetch.spec.whatwg.org/#responsebodyinit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1211412</commentid>
    <comment_count>1</comment_count>
      <attachid>283761</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-07-15 07:43:55 -0700</bug_when>
    <thetext>Created attachment 283761
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1214184</commentid>
    <comment_count>2</comment_count>
      <attachid>284484</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-07-25 08:23:53 -0700</bug_when>
    <thetext>Created attachment 284484
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1214185</commentid>
    <comment_count>3</comment_count>
      <attachid>284485</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-07-25 08:26:54 -0700</bug_when>
    <thetext>Created attachment 284485
Rebasing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1214186</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-07-25 08:28:23 -0700</bug_when>
    <thetext>Attachment 284485 did not pass style-queue:


ERROR: Source/WebCore/Modules/fetch/FetchBodyConsumer.h:43:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/Modules/fetch/FetchBodyConsumer.h:45:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
Total errors found: 2 in 22 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>1214187</commentid>
    <comment_count>5</comment_count>
      <attachid>284486</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-07-25 08:30:00 -0700</bug_when>
    <thetext>Created attachment 284486
Rebasing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1214188</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-07-25 08:31:05 -0700</bug_when>
    <thetext>Attachment 284486 did not pass style-queue:


ERROR: Source/WebCore/Modules/fetch/FetchBodyConsumer.h:43:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/Modules/fetch/FetchBodyConsumer.h:45:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
Total errors found: 2 in 22 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>1214208</commentid>
    <comment_count>7</comment_count>
      <attachid>284492</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-07-25 09:30:36 -0700</bug_when>
    <thetext>Created attachment 284492
Fixing build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1214209</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-07-25 09:31:57 -0700</bug_when>
    <thetext>Attachment 284492 did not pass style-queue:


ERROR: Source/WebCore/Modules/fetch/FetchBodyConsumer.h:43:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/Modules/fetch/FetchBodyConsumer.h:45:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
Total errors found: 2 in 22 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>1214220</commentid>
    <comment_count>9</comment_count>
      <attachid>284493</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-07-25 09:53:24 -0700</bug_when>
    <thetext>Created attachment 284493
Fixing build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1214228</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-07-25 10:01:24 -0700</bug_when>
    <thetext>Attachment 284493 did not pass style-queue:


ERROR: Source/WebCore/Modules/fetch/FetchBodyConsumer.h:43:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/Modules/fetch/FetchBodyConsumer.h:45:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
Total errors found: 2 in 22 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>1214242</commentid>
    <comment_count>11</comment_count>
      <attachid>284498</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-07-25 10:21:31 -0700</bug_when>
    <thetext>Created attachment 284498
Fixing Debug build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1214243</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-07-25 10:25:02 -0700</bug_when>
    <thetext>Attachment 284498 did not pass style-queue:


ERROR: Source/WebCore/Modules/fetch/FetchBodyConsumer.h:43:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/Modules/fetch/FetchBodyConsumer.h:45:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
Total errors found: 2 in 22 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>1214291</commentid>
    <comment_count>13</comment_count>
      <attachid>284498</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-07-25 12:02:26 -0700</bug_when>
    <thetext>Comment on attachment 284498
Fixing Debug build

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

&gt; Source/WebCore/Modules/fetch/FetchResponse.js:115
&gt; +    return @consumeStream(this, 2);

These numbers should at least have a name.

&gt; Source/WebCore/bindings/js/WebCoreBuiltinNames.h:56
&gt; +    macro(cloneForJS) \

These are out of alphabetical order.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1214294</commentid>
    <comment_count>14</comment_count>
      <attachid>284498</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-07-25 12:15:03 -0700</bug_when>
    <thetext>Comment on attachment 284498
Fixing Debug build

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

&gt; Source/WebCore/ChangeLog:15
&gt; +        Clients of FetchLoader needs to oass a FetchBodyConsumer to the FetchLoader to do the data adaptation at loader creation time.

pass

&gt; Source/WebCore/Modules/fetch/FetchLoader.h:66
&gt; +    FetchBodyConsumer* m_consumer;

Do the FetchLoader and FetchBodyConsumer have the same lifetime?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1214297</commentid>
    <comment_count>15</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-07-25 12:38:40 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; Comment on attachment 284498 [details]
&gt; Fixing Debug build
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=284498&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/Modules/fetch/FetchResponse.js:115
&gt; &gt; +    return @consumeStream(this, 2);
&gt; 
&gt; These numbers should at least have a name.

What do you mean?
Something like the status added for ReadableStream: @readableStreamClosed.
We can do that to ensure the values and enum class remain in sync. Is it worth it?
&gt; 
&gt; &gt; Source/WebCore/bindings/js/WebCoreBuiltinNames.h:56
&gt; &gt; +    macro(cloneForJS) \
&gt; 
&gt; These are out of alphabetical order.
OK


(In reply to comment #14)
&gt; Comment on attachment 284498 [details]
&gt; Fixing Debug build
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=284498&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:15
&gt; &gt; +        Clients of FetchLoader needs to oass a FetchBodyConsumer to the FetchLoader to do the data adaptation at loader creation time.
&gt; 
&gt; pass

OK

&gt;Source/WebCore/Modules/fetch/FetchLoader.h:66
&gt; &gt; +    FetchBodyConsumer* m_consumer;
&gt; 
&gt; Do the FetchLoader and FetchBodyConsumer have the same lifetime?

FetchBodyConsumer has the safe lifetime as FetchLoaderClient.
FWIW, it might be good to retire FetchLoader and move the code in its clients (FetchBodyOwner for blob loading and FetchResponse for fetch loads).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1214302</commentid>
    <comment_count>16</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-07-25 12:43:35 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; (In reply to comment #13)
&gt; &gt; Comment on attachment 284498 [details]
&gt; &gt; Fixing Debug build
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=284498&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/Modules/fetch/FetchResponse.js:115
&gt; &gt; &gt; +    return @consumeStream(this, 2);
&gt; &gt; 
&gt; &gt; These numbers should at least have a name.
&gt; 
&gt; What do you mean?
We should at least have something like let meaningfulName = 2;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1214325</commentid>
    <comment_count>17</comment_count>
      <attachid>284522</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-07-25 13:32:56 -0700</bug_when>
    <thetext>Created attachment 284522
Fixing according review</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1214326</commentid>
    <comment_count>18</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-07-25 13:34:31 -0700</bug_when>
    <thetext>Attachment 284522 did not pass style-queue:


ERROR: Source/WebCore/Modules/fetch/FetchBodyConsumer.h:43:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/Modules/fetch/FetchBodyConsumer.h:45:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
Total errors found: 2 in 22 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>1214327</commentid>
    <comment_count>19</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-07-25 13:35:21 -0700</bug_when>
    <thetext>(In reply to comment #17)
&gt; Created attachment 284522 [details]
&gt; Fixing according review

Thanks for the review.
I integrated the different points you mentioned.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1214367</commentid>
    <comment_count>20</comment_count>
      <attachid>284522</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-07-25 15:59:57 -0700</bug_when>
    <thetext>Comment on attachment 284522
Fixing according review

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

Test failure might be unrelated.  Please double check before landing.

&gt; Source/WebCore/Modules/fetch/FetchResponse.js:137
&gt; +    return @consumeStream(this, 3);

jsonConsumerType</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1214534</commentid>
    <comment_count>21</comment_count>
      <attachid>284592</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-07-26 08:34:36 -0700</bug_when>
    <thetext>Created attachment 284592
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1214539</commentid>
    <comment_count>22</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-07-26 08:58:42 -0700</bug_when>
    <thetext>&gt; &gt; Source/WebCore/Modules/fetch/FetchResponse.js:137
&gt; &gt; +    return @consumeStream(this, 3);
&gt; 
&gt; jsonConsumerType

Done</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1214541</commentid>
    <comment_count>23</comment_count>
      <attachid>284592</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-07-26 09:04:13 -0700</bug_when>
    <thetext>Comment on attachment 284592
Patch for landing

Clearing flags on attachment: 284592

Committed r203719: &lt;http://trac.webkit.org/changeset/203719&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1214542</commentid>
    <comment_count>24</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-07-26 09:04:17 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1214572</commentid>
    <comment_count>25</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-07-26 10:12:14 -0700</bug_when>
    <thetext>Re-opened since this is blocked by bug 160200</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1214577</commentid>
    <comment_count>26</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-07-26 10:15:58 -0700</bug_when>
    <thetext>(In reply to comment #25)
&gt; Re-opened since this is blocked by bug 160200

WebCoreJSBuiltins.cpp is added in CMakeLists.txt while it does not need to.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1214583</commentid>
    <comment_count>27</comment_count>
      <attachid>284603</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-07-26 10:39:09 -0700</bug_when>
    <thetext>Created attachment 284603
Removing WebCoreJSBuiltins.cpp from CMake WebCore_DERIVED_SOURCES</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1214584</commentid>
    <comment_count>28</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-07-26 10:41:14 -0700</bug_when>
    <thetext>Attachment 284603 did not pass style-queue:


ERROR: Source/WebCore/Modules/fetch/FetchBodyConsumer.h:43:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/Modules/fetch/FetchBodyConsumer.h:45:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
Total errors found: 2 in 22 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>1214829</commentid>
    <comment_count>29</comment_count>
      <attachid>284603</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-07-26 23:39:27 -0700</bug_when>
    <thetext>Comment on attachment 284603
Removing WebCoreJSBuiltins.cpp from CMake WebCore_DERIVED_SOURCES

Clearing flags on attachment: 284603

Committed r203767: &lt;http://trac.webkit.org/changeset/203767&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1214830</commentid>
    <comment_count>30</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-07-26 23:39:30 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>283761</attachid>
            <date>2016-07-15 07:43:55 -0700</date>
            <delta_ts>2016-07-25 08:23:46 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>bug-159804-20160715164306.patch</filename>
            <type>text/plain</type>
            <size>6126</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAzMjcwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjQyY2M2MzlmYzJkYTIx
MmQ1NjJiZmFmMTg5YTc2MDMwN2QwYWM5NC4uNDY0MDNkNGE5ZmMwYmUxOTA2MDczNjQ5YmNlYjQx
ZmVmODZlYjAyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDI0IEBACiAyMDE2LTA3LTE1ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAorICAgICAgICBbRmV0Y2ggQVBJXSBSZXNw
b25zZSBjb25zdHJ1Y3RvciBzaG91bGQgYmUgYWJsZSB0byB0YWtlIGEgUmVhZGFibGVTdHJlYW0g
YXMgYm9keQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTU5ODA0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
VGVzdHMgdG8gYmUgYWRkZWQuCisKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9u
c2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hSZXNwb25zZTo6Y2xvbmVGb3JKUyk6IGNs
b25lIGV2ZXJ5dGhpbmcgZXhjZXB0IHRoZSBSZWFkYWJsZVN0cmVhbS4KKyAgICAgICAgKFdlYkNv
cmU6OkZldGNoUmVzcG9uc2U6OmNsb25lKTogRGVsZXRlZC4KKyAgICAgICAgKiBNb2R1bGVzL2Zl
dGNoL0ZldGNoUmVzcG9uc2UuaDogQWRkaW5nIGNsb25lRm9ySlMuCisgICAgICAgICogTW9kdWxl
cy9mZXRjaC9GZXRjaFJlc3BvbnNlLmlkbDogRGl0dG8uCisgICAgICAgICogTW9kdWxlcy9mZXRj
aC9GZXRjaFJlc3BvbnNlLmpzOgorICAgICAgICAoaW5pdGlhbGl6ZUZldGNoUmVzcG9uc2UpOiBT
dG9yaW5nIGJvZHkgaW4gQGJvZHkgaWYgaXQgaXMgYSBSZWFkYWJsZVN0cmVhbQorICAgICAgICAo
Y2xvbmUpOiBBZGRpbmcgY2xvbmluZyBvZiBSZWFkYWJsZVN0cmVhbSBpZiBhbnkgdG8gcmVndWxh
ciBjbG9uaW5nIGRvbmUgYnkgY2xvbmVGb3JKUy4KKyAgICAgICAgKiBiaW5kaW5ncy9qcy9XZWJD
b3JlQnVpbHRpbk5hbWVzLmg6IEFkZGluZyBjbG9uZUZvckpTIGlkZW50aWZpZXIuCisKKzIwMTYt
MDctMTUgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgorCiAgICAgICAgIFVzZSBh
IHByaXZhdGUgcHJvcGVydHkgdG8gaW1wbGVtZW50IEZldGNoUmVzcG9uc2UuYm9keSBnZXR0ZXIK
ICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1OTgwOAog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2Uu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcAppbmRl
eCA1ZmU2NDYwZTU3ODIzODdjZTE1MzI4NDAyM2JkMzQ0YmRiNDYzM2UzLi5hZTNjNmE5ZmUxMGZi
NDQ3MzRjNjczZGVhOTMzOTM2NGI5MWVkODkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAKQEAgLTExOCwxMyArMTE4LDExIEBAIEZldGNoUmVz
cG9uc2U6OkZldGNoUmVzcG9uc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgRmV0
Y2hCb2R5JiYgYm9keSwKIHsKIH0KIAotUmVmUHRyPEZldGNoUmVzcG9uc2U+IEZldGNoUmVzcG9u
c2U6OmNsb25lKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIEV4Y2VwdGlvbkNvZGUm
IGVjKQorUmVmPEZldGNoUmVzcG9uc2U+IEZldGNoUmVzcG9uc2U6OmNsb25lRm9ySlMoKQogewot
ICAgIGlmIChpc0Rpc3R1cmJlZCgpKSB7Ci0gICAgICAgIGVjID0gVHlwZUVycm9yOwotICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKLSAgICB9Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRmV0Y2hS
ZXNwb25zZShjb250ZXh0LCBGZXRjaEJvZHkobV9ib2R5KSwgRmV0Y2hIZWFkZXJzOjpjcmVhdGUo
aGVhZGVycygpKSwgUmVzb3VyY2VSZXNwb25zZShtX3Jlc3BvbnNlKSkpOworICAgIEFTU0VSVChz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOworICAgIEFTU0VSVCghaXNEaXN0dXJiZWQoKSk7Cisg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRmV0Y2hSZXNwb25zZSgqc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpLCBGZXRjaEJvZHkobV9ib2R5KSwgRmV0Y2hIZWFkZXJzOjpjcmVhdGUoaGVhZGVycygp
KSwgUmVzb3VyY2VSZXNwb25zZShtX3Jlc3BvbnNlKSkpOwogfQogCiB2b2lkIEZldGNoUmVzcG9u
c2U6OnN0YXJ0RmV0Y2hpbmcoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgY29uc3Qg
RmV0Y2hSZXF1ZXN0JiByZXF1ZXN0LCBGZXRjaFByb21pc2UmJiBwcm9taXNlKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaAppbmRleCAzNmQ4NTA4YTBjNzU3
MGJlYjI4Njc1NGZmM2U3MDVkMGUyMDg4M2UzLi4yNGUxNDRlOTQwOTk5MjQ4YmY4ZjUyODI4NzBj
NTFhNmYyMDA2N2VhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0Zl
dGNoUmVzcG9uc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVz
cG9uc2UuaApAQCAtNjgsNyArNjgsNyBAQCBwdWJsaWM6CiAgICAgY29uc3QgU3RyaW5nJiBzdGF0
dXNUZXh0KCkgY29uc3QgeyByZXR1cm4gbV9yZXNwb25zZS5odHRwU3RhdHVzVGV4dCgpOyB9CiAK
ICAgICBGZXRjaEhlYWRlcnMmIGhlYWRlcnMoKSB7IHJldHVybiBtX2hlYWRlcnM7IH0KLSAgICBS
ZWZQdHI8RmV0Y2hSZXNwb25zZT4gY2xvbmUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIEV4Y2Vw
dGlvbkNvZGUmKTsKKyAgICBSZWY8RmV0Y2hSZXNwb25zZT4gY2xvbmVGb3JKUygpOwogCiAjaWYg
RU5BQkxFKFNUUkVBTVNfQVBJKQogICAgIFJlYWRhYmxlU3RyZWFtU291cmNlKiBjcmVhdGVSZWFk
YWJsZVN0cmVhbVNvdXJjZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9m
ZXRjaC9GZXRjaFJlc3BvbnNlLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0
Y2hSZXNwb25zZS5pZGwKaW5kZXggZjg2OGIyOWIyM2M0ZTE0OGExY2Y0ZTU1ZjhkMDkwYmJjNWI1
MTg4MC4uNDM0ZTgwZDMxYWRkOWFhNDE1MjEyZDRkZmU0MzQ3Nzg2ZWRjMDgxMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmlkbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaWRsCkBAIC01Myw4ICs1
Myw5IEBAIGludGVyZmFjZSBGZXRjaFJlc3BvbnNlIHsKICAgICByZWFkb25seSBhdHRyaWJ1dGUg
RmV0Y2hIZWFkZXJzIGhlYWRlcnM7CiAgICAgW0pTQnVpbHRpbl0gcmVhZG9ubHkgYXR0cmlidXRl
IFJlYWRhYmxlU3RyZWFtPyBib2R5OwogCi0gICAgW05ld09iamVjdCwgQ2FsbFdpdGg9U2NyaXB0
RXhlY3V0aW9uQ29udGV4dCwgUmFpc2VzRXhjZXB0aW9uXSBGZXRjaFJlc3BvbnNlIGNsb25lKCk7
CisgICAgW0pTQnVpbHRpbl0gRmV0Y2hSZXNwb25zZSBjbG9uZSgpOwogCisgICAgW1ByaXZhdGVJ
ZGVudGlmaWVyLCBOZXdPYmplY3RdIEZldGNoUmVzcG9uc2UgY2xvbmVGb3JKUygpOwogICAgIFtQ
cml2YXRlSWRlbnRpZmllciwgUmFpc2VzRXhjZXB0aW9uXSB2b2lkIGluaXRpYWxpemVXaXRoKERp
Y3Rpb25hcnkgcGFyYW1ldGVycyk7CiAgICAgW1ByaXZhdGVJZGVudGlmaWVyLCBOZXdPYmplY3Rd
IFJlYWRhYmxlU3RyZWFtU291cmNlIGNyZWF0ZVJlYWRhYmxlU3RyZWFtU291cmNlKCk7CiAgICAg
W1ByaXZhdGVJZGVudGlmaWVyXSBib29sZWFuIGlzRGlzdHVyYmVkKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuanMgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuanMKaW5kZXggM2UzZWEwN2YxNTg5ZmZk
MmJjNjg1OWUyZjViMWQ3MDg1MGIyZWFkNC4uYjUxY2NlZGFhMWZiMjQxOGI5YzZhODMxOGY3ZmY5
NjU2MjcwMTE2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRj
aFJlc3BvbnNlLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNw
b25zZS5qcwpAQCAtNDQsMTAgKzQ0LDIwIEBAIGZ1bmN0aW9uIGluaXRpYWxpemVGZXRjaFJlc3Bv
bnNlKGJvZHksIGluaXQpCiAgICAgaWYgKHBhcmFtZXRlcnMuc3RhdHVzVGV4dCA9PT0gQHVuZGVm
aW5lZCkKICAgICAgICAgcGFyYW1ldGVycy5zdGF0dXNUZXh0ID0gIk9LIjsKIAotICAgIGlmIChi
b2R5ICE9PSBAdW5kZWZpbmVkICYmIGJvZHkgIT09IG51bGwpCi0gICAgICAgICBwYXJhbWV0ZXJz
LmJvZHkgPSBib2R5OworCisgICAgdmFyIGlzQm9keVJlYWRhYmxlU3RyZWFtID0gZmFsc2U7Cisg
ICAgaWYgKGJvZHkgIT09IEB1bmRlZmluZWQgJiYgYm9keSAhPT0gbnVsbCkgeworICAgICAgICAv
LyBXZSB1c2UgdGhhdCBjaGVjayBiZWNhdXNlIEBSZWFkYWJsZVN0cmVhbSBpcyBjb21waWxlZC1n
dWFyZGVkLgorICAgICAgICBpc0JvZHlSZWFkYWJsZVN0cmVhbSA9IChAaXNPYmplY3QoYm9keSkg
JiYgISFib2R5LkB1bmRlcmx5aW5nU291cmNlKTsKKyAgICAgICAgaWYgKCFpc0JvZHlSZWFkYWJs
ZVN0cmVhbSkKKyAgICAgICAgICAgIHBhcmFtZXRlcnMuYm9keSA9IGJvZHk7CisgICAgfQogCiAg
ICAgdGhpcy5AaW5pdGlhbGl6ZVdpdGgocGFyYW1ldGVycyk7CisKKyAgICBpZiAoaXNCb2R5UmVh
ZGFibGVTdHJlYW0pCisgICAgICAgIHRoaXMuQGJvZHkgPSBib2R5OworCiAgICAgcmV0dXJuIHRo
aXM7CiB9CiAKQEAgLTY1LDMgKzc1LDIwIEBAIGZ1bmN0aW9uIGJvZHkoKQogICAgIH0KICAgICBy
ZXR1cm4gdGhpcy5AYm9keTsKIH0KKworZnVuY3Rpb24gY2xvbmUoKQoreworICAgIGlmICghdGhp
cyBpbnN0YW5jZW9mIEBSZXNwb25zZSkKKyAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3IoIkZ1
bmN0aW9uIHNob3VsZCBiZSBjYWxsZWQgb24gYSBSZXNwb25zZSIpOworCisgICAgaWYgKEBSZXNw
b25zZS5wcm90b3R5cGUuQGlzRGlzdHVyYmVkLkBjYWxsKHRoaXMpKQorICAgICAgICB0aHJvdyBu
ZXcgQFR5cGVFcnJvcigiQ2Fubm90IGNsb25lIGEgZGlzdHVyYmVkIFJlc3BvbnNlIik7CisKKyAg
ICB2YXIgY2xvbmVkID0gQFJlc3BvbnNlLnByb3RvdHlwZS5AY2xvbmVGb3JKUy5AY2FsbCh0aGlz
KTsKKyAgICBpZiAodGhpcy5AYm9keSkgeworICAgICAgICB2YXIgdGVlZFJlYWRhYmxlU3RyZWFt
cyA9IEB0ZWVSZWFkYWJsZVN0cmVhbSh0aGlzLkBib2R5LCBmYWxzZSk7CisgICAgICAgIHRoaXMu
QGJvZHkgPSB0ZWVkUmVhZGFibGVTdHJlYW1zWzBdOworICAgICAgICBjbG9uZWQuQGJvZHkgPSB0
ZWVkUmVhZGFibGVTdHJlYW1zWzFdOworICAgIH0KKyAgICByZXR1cm4gY2xvbmVkOworfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2ViQ29yZUJ1aWx0aW5OYW1lcy5o
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2ViQ29yZUJ1aWx0aW5OYW1lcy5oCmluZGV4
IDAzN2EyOTQ2YmFhODc1ZmI5ZjhhNWJjYjNiODUzN2MxYjg1ZDA1ZTguLjRmNzllMDQwMmI1MTcy
ZjA1ODRkNDFjYTZlZDQ3NTc4YWFhZjFmNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1dlYkNvcmVCdWlsdGluTmFtZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9XZWJDb3JlQnVpbHRpbk5hbWVzLmgKQEAgLTUyLDYgKzUyLDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgIG1hY3JvKGxvY2FsU3RyZWFtcykgXAogICAgIG1hY3JvKG9wZXJhdGlv
bnMpIFwKICAgICBtYWNybyhvd25lclJlYWRhYmxlU3RyZWFtKSBcCisgICAgbWFjcm8oY2xvbmVG
b3JKUykgXAogICAgIG1hY3JvKHByaXZhdGVHZXRTdGF0cykgXAogICAgIG1hY3JvKHB1bGxpbmcp
IFwKICAgICBtYWNybyhwdWxsQWdhaW4pIFwK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>284484</attachid>
            <date>2016-07-25 08:23:53 -0700</date>
            <delta_ts>2016-07-25 08:26:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-159804-20160725172244.patch</filename>
            <type>text/plain</type>
            <size>65384</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAzNjczCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTlhYzRhNDRmOWFmOTZh
ZDliNmJkMDdkZTc0M2EwZDRiMTY0Njc4Yy4uMjA0MzA2ZjAyMDVlZWVmNjYyNWMzMGYzYjAwZWM4
MThhMjk5ZDlmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0NiBAQAorMjAxNi0wNy0yNSAgWW91
ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAgICAgW0ZldGNoIEFQSV0gUmVz
cG9uc2UgY29uc3RydWN0b3Igc2hvdWxkIGJlIGFibGUgdG8gdGFrZSBhIFJlYWRhYmxlU3RyZWFt
IGFzIGJvZHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE1OTgwNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IENvdmVyZWQgYnkgZXhpc3RpbmcgYW5kIHVwZGF0ZWQgdGVzdHMuCisKKyAgICAgICAgSW50cm9k
dWNlZCBGZXRjaEJvZHlDb25zdW1lciB0byBlbmNhcHN1bGF0ZSB0aGUgY29kZSByZXNwb25zaWJs
ZSB0byBhZGFwdCBGZXRjaEJvZHkgaW50ZXJuYWwgZGF0YSB0byB0aGUgcmVxdWVzdHMgbWFkZSBi
eSB1c2VyIHNjcmlwdHMuCisgICAgICAgIFRoaXMgcmVmYWN0b3JpbmcgZWFzZXMgdGhlIGhhbmRs
aW5nIG9mIGludGVybmFsIGRhdGEgY29taW5nIGZyb20gUmVhZGFibGVTdHJlYW0uCisKKyAgICAg
ICAgRmV0Y2hMb2FkZXIgaXMgbm93IGRlbGVnYXRpbmcgY29udmVyc2lvbiBmcm9tIHRoZSBkYXRh
IHRvIGl0cyBtX2NvbnN1bWVyIGZpZWxkLgorICAgICAgICBJZiBtX2NvbnN1bWVyIGlzIG51bGws
IEZldGNoTG9hZGVyIGNhbGxzIEZldGNoTG9hZGVyQ2xpZW50OjpkaWRSZWNlaXZlRGF0YSAoc3Ry
ZWFtaW5nIHJlY2VwdGlvbiBtb2RlKS4KKyAgICAgICAgQ2xpZW50cyBvZiBGZXRjaExvYWRlciBu
ZWVkcyB0byBvYXNzIGEgRmV0Y2hCb2R5Q29uc3VtZXIgdG8gdGhlIEZldGNoTG9hZGVyIHRvIGRv
IHRoZSBkYXRhIGFkYXB0YXRpb24gYXQgbG9hZGVyIGNyZWF0aW9uIHRpbWUuCisKKyAgICAgICAg
QWRkZWQgc3VwcG9ydCBmb3IgYm9keSBkYXRhIHBhc3NlZCBhcyBhIFJlYWRhYmxlU3RyZWFtIHRv
IFJlc3BvbnNlLgorICAgICAgICBUaGlzIHJlcXVpcmVzIHRvIHNldCBAYm9keSBpbnRlcm5hbCBz
bG90IG9mIHRoZSBSZXNwb25zZSBvYmplY3QgaW4gdGhlIGNvbnN0cnVjdG9yIGluaXRpYWxpemF0
aW9uIEpTIGJ1aWx0LWluLgorCisgICAgICAgIFRvIGFjdHVhbGx5IHVzZSB0aGF0IGRhdGEsIEJv
ZHkgYWNjZXNzb3JzIGFyZSBhbHNvIGltcGxlbWVudGVkIGFzIEpTIGJ1aWx0LWluIGZvciBSZXNw
b25zZS4KKyAgICAgICAgU2luY2UgdGhlcmUgaXMgbm8gbmVlZCB0byBkbyBzbyBmb3IgUmVxdWVz
dCwgRmV0Y2hSZXNwb25zZSBpcyBubyBsb25nZXIgbWFya2VkIGFzIGltcGxlbWVudGluZyBGZXRj
aEJvZHkgYnV0IGFsbAorICAgICAgICBGZXRjaEJvZHkgSURMIGRlc2NyaXB0aW9uIGlzIGlubGlu
ZWQgaW4gRmV0Y2hSZXNwb25zZS5pZGwuCisKKyAgICAgICAgRm9yIGVhY2ggYm9keSBhY2Nlc3Nv
ciAoYXJyYXlCdWZmZXIsIGJsb2IsIGpzb24sIHRleHQpLCB0aGUgY29ycmVzcG9uZGluZyBKUyBi
dWlsdC1pbiBjaGVja3Mgd2hldGhlciBAYm9keSBpbnRlcm5hbCBzbG90IGlzIHNldC4KKyAgICAg
ICAgSWYgdGhhdCBpcyBub3QgdGhlIGNhc2UsIHJlZ3VsYXIgaGFuZGxpbmcgaXMgZG9uZSB0aHJv
dWdoIGEgbmV3IHByaXZhdGUgbWV0aG9kIGNhbGxlZCBAY29uc3VtZS4KKyAgICAgICAgSWYgQGJv
ZHkgaW50ZXJuYWwgc2xvdCBpcyBzZXQsIGNodW5rcyBhcmUgcHVtcGVkIGZyb20gdGhlIFJlYWRh
YmxlU3RyZWFtIHVzaW5nIFJlYWRhYmxlU3RyZWFtIGludGVybmFsIGJ1aWx0LWlucyBmdW5jdGlv
bnMuCisgICAgICAgIERhdGEgaGFuZGxpbmcgaXMgZG9uZSBpbiBDKysgdGhyb3VnaCB0aGUgcHJp
dmF0ZSBtZXRob2RzIEBzdGFydENvbnN1bWluZ1N0cmVhbSwgQGNvbnN1bWVDaHVuayBhbmQgQGZp
bmlzaENvbnN1bWluZ1N0cmVhbS4KKworICAgICAgICBUbyBzdXBwb3J0IGNsb25pbmcgb2YgUmVz
cG9uc2Ugd2l0aCBib2RpZXMsIGNsb25lIG1ldGhvZCBpcyBhbHNvIGltcGxlbWVudGVkIGFzIGEg
SlMgYnVpbHQtaW4uCisgICAgICAgIE1haW4gY2xvbmUgaXMgZG9uZSB0aHJvdWdoIEBjbG9uZUZv
SlMgcHJpdmF0ZSBtZXRob2QgaW1wbGVtZW50ZWQgaW4gQysrLgorICAgICAgICBKUyBidWlsdC1p
biBjbG9uZSBjb2RlIGRvZXMgdGhlIHRlZWluZyBvZiB0aGUgUmVhZGFibGVTdHJlYW0gdXNpbmcg
UmVhZGFibGVTdHJlYW0gSlMgYnVpbHQtaW4gaW50ZXJuYWwgZnVuY3Rpb25zLgorCisgICAgICAg
IEludHJvZHVjaW5nIGEgbmV3IFJlYWRhYmxlU3RyZWFtIHR5cGUgZm9yIEZldGNoQm9keSB0byBj
b3BlIHdpdGggYm9keSBiZWluZyBzdG9yZWQgaW4gYSBSZWFkYWJsZVN0cmVhbS4KKworICAgICAg
ICBJbnRyb2R1Y2luZyBhIG5ldyBMb2FkZWQgdHlwZSBmb3IgRmV0Y2hCb2R5IHRvIGNvcGUgd2l0
aCBib2R5IGJlaW5nIHN0b3JlZCBpbiB0aGUgRmV0Y2hCb2R5Q29uc3VtZXIgb3duZWQgYnkgRmV0
Y2hCb2R5LgorICAgICAgICBUaGlzIGFsbG93cyByZW1vdmluZyB0aGUgY29udmVyc2lvbiBvZiBk
YXRhIHRvIEpTQzo6QXJyYXlCdWZmZXIgd2hpY2ggd2FzIGRvbmUgYnkgZGVmYXV0IGF0IHRoZSBl
bmQgb2YgRmV0Y2ggbG9hZGluZyBpZiB1c2VyIHNjcmlwdCBkaWQgbm90IHJlcXVlc3QgZGF0YSBi
ZWZvcmUuCisgICAgICAgIEF0IHRoZSBlbmQgb2YgYSBsb2FkLCB0aGUgZGF0YSByZW1haW5zIGlu
IEZldGNoQm9keUNvbnN1bWVyIGFuZCB0aGUgYm9keSBpcyBtYXJrZWQgYXMgTG9hZGVkLgorICAg
ICAgICBJZiB0aGUgdXNlciB3YW50cyB0byBnZXQgdGhlIGRhdGEgYWZ0ZXIgZGF0YSBmaW5pc2hl
ZCBiZWluZyBsb2FkZWQsIEZldGNoQm9keUNvbnN1bWVyIHdpbGwgZG8gdGhlIHJlcXVpcmVkIGNv
bnZlcnNpb25zLgorCisgICAgICAgIEludHJvZHVjaW5nIERlZmVycmVkV3JhcHBlcjo6cmVzb2x2
ZVdpdGhOZXdWYWx1ZSB0byBoYW5kbGUgdGhlIGNhc2Ugb2YgcmVzb2x2aW5nIHByb21pc2VzIHdp
dGggbmV3IG9iamVjdHMuCisgICAgICAgIFRoaXMgYWxsb3dzIGRpcmVjdGx5IHVzaW5nIHRvSlNO
ZXdseUNyZWF0ZWQgaW5zdGVhZCBvZiB0b0pTLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6
IEFkZGluZyBGZXRjaEJvZHlDb25zdW1lci4KKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNo
Qm9keS5jcHA6IE1vdmluZyBkYXRhIGFkYXB0YXRpb24gY29kZSB0byBGZXRjaEJvZHlDb25zdW1l
ci4KKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keTo6ZXh0cmFjdCk6CisgICAgICAgIChXZWJD
b3JlOjpGZXRjaEJvZHk6OmFycmF5QnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9k
eTo6YmxvYik6IFNldHRpbmcgY29udGVudFR5cGUgaW4gRmV0Y2hCb2R5Q29uc3VtZXIgdG8gaGFu
ZGxlIHByb3BlciBjcmVhdGlvbiBvZiBibG9iLgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5
Ojpqc29uKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keTo6dGV4dCk6CisgICAgICAgIChX
ZWJDb3JlOjpGZXRjaEJvZHk6OmNvbnN1bWUpOiBSZWZhY3RvcmluZyBhbmQgYWRkZWQgY2FzZSBv
ZiBMb2FkZWQgYm9kaWVzLgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Ojpjb25zdW1lQXNT
dHJlYW0pOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keTo6Y29uc3VtZUFycmF5
QnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keTo6Y29uc3VtZVRleHQpOgorICAg
ICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Ojpjb25zdW1lQmxvYik6CisgICAgICAgIChXZWJDb3Jl
OjpGZXRjaEJvZHk6OmxvYWRpbmdGYWlsZWQpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5
Ojpsb2FkaW5nU3VjY2VlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keTo6bG9hZGlu
Z1R5cGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6YmxvYkZyb21BcnJheUJ1ZmZlcik6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHk6OmZ1bGZpbGxUZXh0UHJvbWlz
ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHk6OmxvYWRlZEFzQXJyYXlC
dWZmZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Ojpsb2FkZWRBc1Rl
eHQpOiBEZWxldGVkLgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Lmg6CisgICAg
ICAgIChXZWJDb3JlOjpGZXRjaEJvZHk6OmNvbnN1bWVyKToKKyAgICAgICAgKiBNb2R1bGVzL2Zl
dGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcDogQWRkZWQsIHJlc3BvbnNpYmxlIG9mIGRhdGEgYWRh
cHRhdGlvbi4KKyAgICAgICAgKFdlYkNvcmU6OmJsb2JGcm9tRGF0YSk6CisgICAgICAgIChXZWJD
b3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6cmVzb2x2ZVdpdGhEYXRhKToKKyAgICAgICAgKFdlYkNv
cmU6OkZldGNoQm9keUNvbnN1bWVyOjpyZXNvbHZlKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNo
Qm9keUNvbnN1bWVyOjphcHBlbmQpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3Vt
ZXI6OnRha2VEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjp0YWtl
QXNBcnJheUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6dGFr
ZUFzQmxvYik6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6dGFrZUFzVGV4
dCk6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5oOiBBZGRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjpGZXRjaEJvZHlDb25zdW1lcik6
CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6c2V0Q29udGVudFR5cGUpOgor
ICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OnNldFR5cGUpOgorICAgICAgICAo
V2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OnR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6RmV0
Y2hCb2R5Q29uc3VtZXI6OmNsZWFuKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1
bWVyOjpoYXNEYXRhKToKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keU93bmVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keU93bmVyOjpsb2FkQmxvYik6CisgICAgICAg
IChXZWJDb3JlOjpGZXRjaEJvZHlPd25lcjo6YmxvYkxvYWRpbmdTdWNjZWVkZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6RmV0Y2hCb2R5T3duZXI6OmxvYWRlZEJsb2JBc1RleHQpOiBEZWxldGVkLgor
ICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5T3duZXIuaDoKKyAgICAgICAgKFdlYkNv
cmU6OkZldGNoQm9keU93bmVyOjpsb2FkZWRCbG9iQXNBcnJheUJ1ZmZlcik6IERlbGV0ZWQuCisg
ICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaEludGVybmFscy5qczoKKyAgICAgICAgKGNvbnN1
bWVTdHJlYW0pOiBQdW1wIFJlYWRhYmxlU3RyZWFtIGRhdGEgYW5kIHNlbmQgaXQgdG8gRmV0Y2hS
ZXNwb25zZSB0byBiZSBjb252ZXJ0ZWQgYWNjb3JkaW5nIHVzZXIgbmVlZC4KKyAgICAgICAgKiBN
b2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoTG9h
ZGVyOjpGZXRjaExvYWRlcik6IEZldGNoTG9hZGVyIGlzIHNpbXBsaWZpZWQgYXMgaXQgaGFzIHR3
byBub2RlczogY29uc3VtZXIgbW9kZSBpbiB3aGljaCBjYXNlCisgICAgICAgIGRhdGEgaXMgc2Vu
dCB0byB0aGUgY29uc3VtZXIgYW5kIG5vLWNvbnN1bWVyIG1vZGUgaW4gd2hpY2ggY2FzZSBkYXRh
IGlzIHBhc3NlZCB0byBsb2FkZXIgY2xpZW50LiBUaGUgc2Vjb25kIG1vZGUKKyAgICAgICAgaXMg
dXNlZCB0byBjb252ZXl5IGRhdGEgdG8gUmVhZGFibGVTdHJlYW0gc291cmNlLgorICAgICAgICAo
V2ViQ29yZTo6RmV0Y2hMb2FkZXI6OnN0b3ApOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hMb2Fk
ZXI6OnN0YXJ0U3RyZWFtaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoTG9hZGVyOjpkaWRS
ZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaExvYWRlcjo6ZGlkRmluaXNoTG9h
ZGluZyk6IERlbGV0ZWQuCisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlci5oOgor
ICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgKFdl
YkNvcmU6OkZldGNoTG9hZGVyQ2xpZW50OjpkaWRGaW5pc2hMb2FkaW5nQXNUZXh0KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkZldGNoTG9hZGVyQ2xpZW50OjpkaWRGaW5pc2hMb2FkaW5n
QXNBcnJheUJ1ZmZlcik6IERlbGV0ZWQuCisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaFJl
c3BvbnNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoUmVzcG9uc2U6OmNsb25lRm9ySlMp
OgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hSZXNwb25zZTo6Qm9keUxvYWRlcjo6ZGlkU3VjY2Vl
ZCk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaFJlc3BvbnNlOjpCb2R5TG9hZGVyOjpzdGFydCk6
CisgICAgICAgIChXZWJDb3JlOjpGZXRjaFJlc3BvbnNlOjpjb25zdW1lKTogSW50cm9kdWNlZCB0
byBjb25zdW1lIGRhdGEgc3RvcmVkIGluIGJvZHkgYW5kIG5vdCBpbiBSZWFkYWJsZVN0cmVhbS4K
KyAgICAgICAgKFdlYkNvcmU6OkZldGNoUmVzcG9uc2U6OnN0YXJ0Q29uc3VtaW5nU3RyZWFtKTog
SW50cm9kdWNlZCB0byBzdGFydCBwcm9jZXNzIG9mIGNvbnN1bWluZyBkYXRhIHN0b3JlZCBpbiB0
aGUgUmVhZGFibGVTdHJlYW0uCisgICAgICAgIChXZWJDb3JlOjpGZXRjaFJlc3BvbnNlOjpjb25z
dW1lQ2h1bmspOiBSZWNlcHRpb24gb2YgUmVhZGFibGVTdHJlYW0gZGF0YS4KKyAgICAgICAgKFdl
YkNvcmU6OkZldGNoUmVzcG9uc2U6OmZpbmlzaENvbnN1bWluZ1N0cmVhbSk6IERvaW5nIHRoZSBm
aW5hbCBjb252ZXJzaW9uLgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hSZXNwb25zZTo6Y2xvbmUp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hSZXNwb25zZTo6Qm9keUxvYWRlcjo6
ZGlkRmluaXNoTG9hZGluZ0FzQXJyYXlCdWZmZXIpOiBEZWxldGVkLgorICAgICAgICAqIE1vZHVs
ZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5oOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hS
ZXNwb25zZS5pZGw6IElubGluaW5nIG9mIEZldGNoQm9keSBtZXRob2RzL2F0dHJpYnV0ZXMgYW5k
IGFkZGluZyBwcml2YXRlIG1ldGhvZHMuCisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaFJl
c3BvbnNlLmpzOgorICAgICAgICAoaW5pdGlhbGl6ZUZldGNoUmVzcG9uc2UpOgorICAgICAgICAo
Y2xvbmUpOgorICAgICAgICAoYXJyYXlCdWZmZXIpOgorICAgICAgICAoYmxvYik6CisgICAgICAg
IChmb3JtRGF0YSk6CisgICAgICAgIChqc29uKToKKyAgICAgICAgKHRleHQpOgorICAgICAgICAq
IFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9KU0RPTVByb21pc2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRlZmVycmVkV3JhcHBlcjo6cmVz
b2x2ZVdpdGhOZXdWYWx1ZSk6CisgICAgICAgICogYmluZGluZ3MvanMvV2ViQ29yZUJ1aWx0aW5O
YW1lcy5oOgorCisyMDE2LTA3LTIyICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4K
KworICAgICAgICBbRmV0Y2ggQVBJXSBSZXNwb25zZSBjb25zdHJ1Y3RvciBzaG91bGQgYmUgYWJs
ZSB0byB0YWtlIGEgUmVhZGFibGVTdHJlYW0gYXMgYm9keQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU5ODA0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdHMgdG8gYmUgYWRkZWQuCisKKyAgICAgICAg
KiBNb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmV0
Y2hSZXNwb25zZTo6Y2xvbmVGb3JKUyk6IGNsb25lIGV2ZXJ5dGhpbmcgZXhjZXB0IHRoZSBSZWFk
YWJsZVN0cmVhbS4KKyAgICAgICAgKFdlYkNvcmU6OkZldGNoUmVzcG9uc2U6OmNsb25lKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaDogQWRkaW5nIGNs
b25lRm9ySlMuCisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmlkbDogRGl0
dG8uCisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmpzOgorICAgICAgICAo
aW5pdGlhbGl6ZUZldGNoUmVzcG9uc2UpOiBTdG9yaW5nIGJvZHkgaW4gQGJvZHkgaWYgaXQgaXMg
YSBSZWFkYWJsZVN0cmVhbQorICAgICAgICAoY2xvbmUpOiBBZGRpbmcgY2xvbmluZyBvZiBSZWFk
YWJsZVN0cmVhbSBpZiBhbnkgdG8gcmVndWxhciBjbG9uaW5nIGRvbmUgYnkgY2xvbmVGb3JKUy4K
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9XZWJDb3JlQnVpbHRpbk5hbWVzLmg6IEFkZGluZyBjbG9u
ZUZvckpTIGlkZW50aWZpZXIuCisKIDIwMTYtMDctMjQgIE5hbiBXYW5nICA8bl93YW5nQGFwcGxl
LmNvbT4KIAogICAgICAgICBBWDogVmlkZW8gQ29udHJvbHM6IFZvbHVtZSBjYW5ub3QgYmUgYWRq
dXN0ZWQgdXNpbmcgVk8uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4
dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IGMzYmQxNGIwN2EwZWMzYjJh
Nzk3OTJlN2ExNjY0MDhlNzFlN2M0YjguLjY0NDIxMjY2ZTdjYTEyOTI1MzVmNDQ2YzVkYjZmMTUz
ZDA4YmNlY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBi
L1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC04MTgsNiArODE4LDcgQEAgc2V0KFdl
YkNvcmVfU09VUkNFUwogCiAgICAgTW9kdWxlcy9mZXRjaC9ET01XaW5kb3dGZXRjaC5jcHAKICAg
ICBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHAKKyAgICBNb2R1bGVzL2ZldGNoL0ZldGNoQm9k
eUNvbnN1bWVyLmNwcAogICAgIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5T3duZXIuY3BwCiAgICAg
TW9kdWxlcy9mZXRjaC9GZXRjaEhlYWRlcnMuY3BwCiAgICAgTW9kdWxlcy9mZXRjaC9GZXRjaExv
YWRlci5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hC
b2R5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcAppbmRl
eCA4YzQ3OWQ1ZjhlMDYyNTAyZDk1NzBjOGI5YjU4NWJjZjBkYjQ0ZDNmLi42ZGQ4YzE4Y2Y1ZDI2
ZDJjNjQ5ZDhhNjgyNTMxNjBhODg5NjhiNzRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9m
ZXRjaC9GZXRjaEJvZHkuY3BwCkBAIC0zOSwxMiArMzksMTEgQEAKICNpbmNsdWRlICJIVFRQUGFy
c2Vycy5oIgogI2luY2x1ZGUgIkpTQmxvYi5oIgogI2luY2x1ZGUgIkpTRE9NRm9ybURhdGEuaCIK
KyNpbmNsdWRlICJKU1JlYWRhYmxlU3RyZWFtLmgiCiAjaW5jbHVkZSAiUmVhZGFibGVTdHJlYW1T
b3VyY2UuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgUmVmPEJsb2I+IGJsb2JG
cm9tQXJyYXlCdWZmZXIoQXJyYXlCdWZmZXIqLCBjb25zdCBTdHJpbmcmKTsKLQogRmV0Y2hCb2R5
OjpGZXRjaEJvZHkoUmVmPEJsb2I+JiYgYmxvYikKICAgICA6IG1fdHlwZShUeXBlOjpCbG9iKQog
ICAgICwgbV9taW1lVHlwZShibG9iLT50eXBlKCkpCkBAIC03NSw2ICs3NCw4IEBAIEZldGNoQm9k
eSBGZXRjaEJvZHk6OmV4dHJhY3QoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6OkpTVmFsdWUg
dmFsdWUpCiAgICAgICAgIHJldHVybiBGZXRjaEJvZHkoKkpTRE9NRm9ybURhdGE6OnRvV3JhcHBl
ZCh2YWx1ZSkpOwogICAgIGlmICh2YWx1ZS5pc1N0cmluZygpKQogICAgICAgICByZXR1cm4gRmV0
Y2hCb2R5KHZhbHVlLnRvV1RGU3RyaW5nKCZzdGF0ZSkpOworICAgIGlmICh2YWx1ZS5pbmhlcml0
cyhKU1JlYWRhYmxlU3RyZWFtOjppbmZvKCkpKQorICAgICAgICByZXR1cm4geyBUeXBlOjpSZWFk
YWJsZVN0cmVhbSB9OwogICAgIHJldHVybiB7IH07CiB9CiAKQEAgLTg5LDEzICs5MCwxNiBAQCBG
ZXRjaEJvZHkgRmV0Y2hCb2R5OjpleHRyYWN0RnJvbUJvZHkoRmV0Y2hCb2R5KiBib2R5KQogdm9p
ZCBGZXRjaEJvZHk6OmFycmF5QnVmZmVyKEZldGNoQm9keU93bmVyJiBvd25lciwgRGVmZXJyZWRX
cmFwcGVyJiYgcHJvbWlzZSkKIHsKICAgICBBU1NFUlQobV90eXBlICE9IFR5cGU6Ok5vbmUpOwot
ICAgIGNvbnN1bWUob3duZXIsIENvbnN1bWVyOjpUeXBlOjpBcnJheUJ1ZmZlciwgV1RGTW92ZShw
cm9taXNlKSk7CisgICAgbV9jb25zdW1lci5zZXRUeXBlKEZldGNoQm9keUNvbnN1bWVyOjpUeXBl
OjpBcnJheUJ1ZmZlcik7CisgICAgY29uc3VtZShvd25lciwgV1RGTW92ZShwcm9taXNlKSk7CiB9
CiAKIHZvaWQgRmV0Y2hCb2R5OjpibG9iKEZldGNoQm9keU93bmVyJiBvd25lciwgRGVmZXJyZWRX
cmFwcGVyJiYgcHJvbWlzZSkKIHsKICAgICBBU1NFUlQobV90eXBlICE9IFR5cGU6Ok5vbmUpOwot
ICAgIGNvbnN1bWUob3duZXIsIENvbnN1bWVyOjpUeXBlOjpCbG9iLCBXVEZNb3ZlKHByb21pc2Up
KTsKKyAgICBtX2NvbnN1bWVyLnNldFR5cGUoRmV0Y2hCb2R5Q29uc3VtZXI6OlR5cGU6OkJsb2Ip
OworICAgIG1fY29uc3VtZXIuc2V0Q29udGVudFR5cGUoQmxvYjo6bm9ybWFsaXplZENvbnRlbnRU
eXBlKGV4dHJhY3RNSU1FVHlwZUZyb21NZWRpYVR5cGUobV9taW1lVHlwZSkpKTsKKyAgICBjb25z
dW1lKG93bmVyLCBXVEZNb3ZlKHByb21pc2UpKTsKIH0KIAogdm9pZCBGZXRjaEJvZHk6Ompzb24o
RmV0Y2hCb2R5T3duZXImIG93bmVyLCBEZWZlcnJlZFdyYXBwZXImJiBwcm9taXNlKQpAQCAtMTA2
LDcgKzExMCw4IEBAIHZvaWQgRmV0Y2hCb2R5Ojpqc29uKEZldGNoQm9keU93bmVyJiBvd25lciwg
RGVmZXJyZWRXcmFwcGVyJiYgcHJvbWlzZSkKICAgICAgICAgZnVsZmlsbFByb21pc2VXaXRoSlNP
Tihwcm9taXNlLCBtX3RleHQpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGNvbnN1bWUo
b3duZXIsIENvbnN1bWVyOjpUeXBlOjpKU09OLCBXVEZNb3ZlKHByb21pc2UpKTsKKyAgICBtX2Nv
bnN1bWVyLnNldFR5cGUoRmV0Y2hCb2R5Q29uc3VtZXI6OlR5cGU6OkpTT04pOworICAgIGNvbnN1
bWUob3duZXIsIFdURk1vdmUocHJvbWlzZSkpOwogfQogCiB2b2lkIEZldGNoQm9keTo6dGV4dChG
ZXRjaEJvZHlPd25lciYgb3duZXIsIERlZmVycmVkV3JhcHBlciYmIHByb21pc2UpCkBAIC0xMTcs
MzEgKzEyMiwzNiBAQCB2b2lkIEZldGNoQm9keTo6dGV4dChGZXRjaEJvZHlPd25lciYgb3duZXIs
IERlZmVycmVkV3JhcHBlciYmIHByb21pc2UpCiAgICAgICAgIHByb21pc2UucmVzb2x2ZShtX3Rl
eHQpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGNvbnN1bWUob3duZXIsIENvbnN1bWVy
OjpUeXBlOjpUZXh0LCBXVEZNb3ZlKHByb21pc2UpKTsKKyAgICBtX2NvbnN1bWVyLnNldFR5cGUo
RmV0Y2hCb2R5Q29uc3VtZXI6OlR5cGU6OlRleHQpOworICAgIGNvbnN1bWUob3duZXIsIFdURk1v
dmUocHJvbWlzZSkpOwogfQogCi12b2lkIEZldGNoQm9keTo6Y29uc3VtZShGZXRjaEJvZHlPd25l
ciYgb3duZXIsIENvbnN1bWVyOjpUeXBlIHR5cGUsIERlZmVycmVkV3JhcHBlciYmIHByb21pc2Up
Cit2b2lkIEZldGNoQm9keTo6Y29uc3VtZShGZXRjaEJvZHlPd25lciYgb3duZXIsIERlZmVycmVk
V3JhcHBlciYmIHByb21pc2UpCiB7Ci0gICAgaWYgKG1fdHlwZSA9PSBUeXBlOjpBcnJheUJ1ZmZl
cikgewotICAgICAgICBjb25zdW1lQXJyYXlCdWZmZXIodHlwZSwgcHJvbWlzZSk7CisgICAgc3dp
dGNoIChtX3R5cGUpIHsKKyAgICBjYXNlIFR5cGU6OkFycmF5QnVmZmVyOgorICAgICAgICBjb25z
dW1lQXJyYXlCdWZmZXIocHJvbWlzZSk7CiAgICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgaWYg
KG1fdHlwZSA9PSBUeXBlOjpUZXh0KSB7Ci0gICAgICAgIGNvbnN1bWVUZXh0KHR5cGUsIHByb21p
c2UpOworICAgIGNhc2UgVHlwZTo6VGV4dDoKKyAgICAgICAgY29uc3VtZVRleHQocHJvbWlzZSk7
CiAgICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgaWYgKG1fdHlwZSA9PSBUeXBlOjpCbG9iKSB7
Ci0gICAgICAgIGNvbnN1bWVCbG9iKG93bmVyLCB0eXBlLCBXVEZNb3ZlKHByb21pc2UpKTsKKyAg
ICBjYXNlIFR5cGU6OkJsb2I6CisgICAgICAgIGNvbnN1bWVCbG9iKG93bmVyLCBXVEZNb3ZlKHBy
b21pc2UpKTsKICAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBpZiAobV90eXBlID09IFR5cGU6
OkxvYWRpbmcpIHsKLSAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBiZSBhYmxlIHRvIGNoYW5n
ZSB0aGUgbG9hZGluZyB0eXBlIHRvIHRleHQgaWYgY29uc3VtZXIgdHlwZSBpcyBKU09OIG9yIFRl
eHQuCi0gICAgICAgIG1fY29uc3VtZXIgPSBDb25zdW1lcih7dHlwZSwgV1RGTW92ZShwcm9taXNl
KX0pOworICAgIGNhc2UgVHlwZTo6TG9hZGluZzoKKyAgICAgICAgbV9jb25zdW1lUHJvbWlzZSA9
IFdURk1vdmUocHJvbWlzZSk7CiAgICAgICAgIHJldHVybjsKKyAgICBjYXNlIFR5cGU6OkxvYWRl
ZDoKKyAgICAgICAgbV9jb25zdW1lci5yZXNvbHZlKHByb21pc2UpOworICAgICAgICByZXR1cm47
CisgICAgY2FzZSBUeXBlOjpOb25lOgorICAgIGNhc2UgVHlwZTo6UmVhZGFibGVTdHJlYW06Cisg
ICAgICAgIC8vIElmIG1fdHlwZSBpcyBSZWFkYWJsZVN0cmVhbSwgd2Ugc2hvdWxkIG5vdCBiZSB0
aGVyZSBhcyBKUyBCdWlsdGlucyBzaG91bGQgaGF2ZSBoYW5kbGVkIHRoaXMgY2FzZS4KKyAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgZGVmYXVsdDoKKyAgICAgICAgLy8gRklYTUU6
IFN1cHBvcnQgb3RoZXIgdHlwZXMuCisgICAgICAgIHByb21pc2UucmVqZWN0KDApOwogICAgIH0K
LQotICAgIC8vIEZJWE1FOiBTdXBwb3J0IG90aGVyIHR5cGVzLgotICAgIHByb21pc2UucmVqZWN0
KDApOwogfQogCiAjaWYgRU5BQkxFKFNUUkVBTVNfQVBJKQpAQCAtMTQ5LDgxICsxNTksNTggQEAg
dm9pZCBGZXRjaEJvZHk6OmNvbnN1bWVBc1N0cmVhbShGZXRjaEJvZHlPd25lciYgb3duZXIsIEZl
dGNoUmVzcG9uc2VTb3VyY2UmIHNvdXIKIHsKICAgICBBU1NFUlQobV90eXBlICE9IFR5cGU6Okxv
YWRpbmcpOwogCisgICAgYm9vbCBjbG9zZVN0cmVhbSA9IGZhbHNlOwogICAgIHN3aXRjaCAobV90
eXBlKSB7CiAgICAgY2FzZSBUeXBlOjpBcnJheUJ1ZmZlcjoKICAgICAgICAgQVNTRVJUKG1fZGF0
YSk7Ci0gICAgICAgIGlmIChzb3VyY2UuZW5xdWV1ZShSZWZQdHI8SlNDOjpBcnJheUJ1ZmZlcj4o
bV9kYXRhKSkpCi0gICAgICAgICAgICBzb3VyY2UuY2xvc2UoKTsKLSAgICAgICAgcmV0dXJuOwor
ICAgICAgICBjbG9zZVN0cmVhbSA9IHNvdXJjZS5lbnF1ZXVlKFJlZlB0cjxKU0M6OkFycmF5QnVm
ZmVyPihtX2RhdGEpKTsKKyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBUeXBlOjpUZXh0OiB7CiAg
ICAgICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhID0gZXh0cmFjdEZyb21UZXh0KCk7Ci0gICAgICAg
IGlmIChzb3VyY2UuZW5xdWV1ZShBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlKGRhdGEuZGF0YSgpLCBk
YXRhLnNpemUoKSkpKQotICAgICAgICAgICAgc291cmNlLmNsb3NlKCk7Ci0gICAgICAgIHJldHVy
bjsKKyAgICAgICAgY2xvc2VTdHJlYW0gPSBzb3VyY2UuZW5xdWV1ZShBcnJheUJ1ZmZlcjo6dHJ5
Q3JlYXRlKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSkpOworICAgICAgICBicmVhazsKICAgICB9
CiAgICAgY2FzZSBUeXBlOjpCbG9iOgogICAgICAgICBBU1NFUlQobV9ibG9iKTsKLSAgICAgICAg
b3duZXIubG9hZEJsb2IoKm1fYmxvYiwgRmV0Y2hMb2FkZXI6OlR5cGU6OlN0cmVhbSk7Ci0gICAg
ICAgIHJldHVybjsKKyAgICAgICAgb3duZXIubG9hZEJsb2IoKm1fYmxvYiwgbnVsbHB0cik7Cisg
ICAgICAgIGJyZWFrOwogICAgIGNhc2UgVHlwZTo6Tm9uZToKLSAgICAgICAgc291cmNlLmNsb3Nl
KCk7Ci0gICAgICAgIHJldHVybjsKLSAgICBkZWZhdWx0OgotICAgICAgICBzb3VyY2UuZXJyb3Io
QVNDSUlMaXRlcmFsKCJub3QgaW1wbGVtZW50ZWQiKSk7CisgICAgICAgIGNsb3NlU3RyZWFtID0g
dHJ1ZTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBUeXBlOjpMb2FkZWQ6IHsKKyAgICAgICAg
Y2xvc2VTdHJlYW0gPSBzb3VyY2UuZW5xdWV1ZShtX2NvbnN1bWVyLnRha2VBc0FycmF5QnVmZmVy
KCkpOworICAgICAgICBicmVhazsKICAgICB9Ci19Ci0jZW5kaWYKKyAgICBjYXNlIFR5cGU6OlJl
YWRhYmxlU3RyZWFtOgorICAgICAgICAvLyBUaGlzIHNob3VsZCBiZSBoYW5kbGVkIGJ5IEpTIEJ1
aWx0aW5zLgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIAotdm9pZCBGZXRjaEJvZHk6
OmNvbnN1bWVBcnJheUJ1ZmZlcihDb25zdW1lcjo6VHlwZSB0eXBlLCBEZWZlcnJlZFdyYXBwZXIm
IHByb21pc2UpCi17Ci0gICAgaWYgKHR5cGUgPT0gQ29uc3VtZXI6OlR5cGU6OkFycmF5QnVmZmVy
KSB7Ci0gICAgICAgIGZ1bGZpbGxQcm9taXNlV2l0aEFycmF5QnVmZmVyKHByb21pc2UsIG1fZGF0
YS5nZXQoKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgaWYgKHR5cGUgPT0gQ29uc3Vt
ZXI6OlR5cGU6OkJsb2IpIHsKLSAgICAgICAgcHJvbWlzZS5yZXNvbHZlKGJsb2JGcm9tQXJyYXlC
dWZmZXIobV9kYXRhLmdldCgpLCBCbG9iOjpub3JtYWxpemVkQ29udGVudFR5cGUoZXh0cmFjdE1J
TUVUeXBlRnJvbU1lZGlhVHlwZShtX21pbWVUeXBlKSkpKTsKLSAgICAgICAgcmV0dXJuOworICAg
IGRlZmF1bHQ6CisgICAgICAgIHNvdXJjZS5lcnJvcihBU0NJSUxpdGVyYWwoIm5vdCBpbXBsZW1l
bnRlZCIpKTsKICAgICB9CiAKLSAgICBBU1NFUlQodHlwZSA9PSBDb25zdW1lcjo6VHlwZTo6VGV4
dCB8fCB0eXBlID09IENvbnN1bWVyOjpUeXBlOjpKU09OKTsKLSAgICAvLyBGSVhNRTogRG8gd2Ug
bmVlZCBUZXh0UmVzb3VyY2VEZWNvZGVyIHRvIGNyZWF0ZSBhIFN0cmluZyB0byBkZWNvZGUgVVRG
LTggZGF0YS4KLSAgICBmdWxmaWxsVGV4dFByb21pc2UodHlwZSwgVGV4dFJlc291cmNlRGVjb2Rl
cjo6Y3JlYXRlKEFTQ0lJTGl0ZXJhbCgidGV4dC9wbGFpbiIpLCAiVVRGLTgiKS0+ZGVjb2RlQW5k
Rmx1c2goc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KG1fZGF0YS0+ZGF0YSgpKSwgbV9kYXRhLT5i
eXRlTGVuZ3RoKCkpLCBwcm9taXNlKTsKKyAgICBpZiAoY2xvc2VTdHJlYW0pCisgICAgICAgIHNv
dXJjZS5jbG9zZSgpOwogfQorI2VuZGlmCiAKLXZvaWQgRmV0Y2hCb2R5Ojpjb25zdW1lVGV4dChD
b25zdW1lcjo6VHlwZSB0eXBlLCBEZWZlcnJlZFdyYXBwZXImIHByb21pc2UpCit2b2lkIEZldGNo
Qm9keTo6Y29uc3VtZUFycmF5QnVmZmVyKERlZmVycmVkV3JhcHBlciYgcHJvbWlzZSkKIHsKLSAg
ICBBU1NFUlQodHlwZSA9PSBDb25zdW1lcjo6VHlwZTo6QXJyYXlCdWZmZXIgfHwgdHlwZSA9PSBD
b25zdW1lcjo6VHlwZTo6QmxvYik7Ci0KLSAgICBpZiAodHlwZSA9PSBDb25zdW1lcjo6VHlwZTo6
QXJyYXlCdWZmZXIpIHsKLSAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGEgPSBleHRyYWN0RnJv
bVRleHQoKTsKLSAgICAgICAgZnVsZmlsbFByb21pc2VXaXRoQXJyYXlCdWZmZXIocHJvbWlzZSwg
ZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBT
dHJpbmcgY29udGVudFR5cGUgPSBCbG9iOjpub3JtYWxpemVkQ29udGVudFR5cGUoZXh0cmFjdE1J
TUVUeXBlRnJvbU1lZGlhVHlwZShtX21pbWVUeXBlKSk7Ci0gICAgcHJvbWlzZS5yZXNvbHZlKEJs
b2I6OmNyZWF0ZShleHRyYWN0RnJvbVRleHQoKSwgY29udGVudFR5cGUpKTsKKyAgICBtX2NvbnN1
bWVyLnJlc29sdmVXaXRoRGF0YShwcm9taXNlLCBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4o
bV9kYXRhLT5kYXRhKCkpLCBtX2RhdGEtPmJ5dGVMZW5ndGgoKSk7CiB9CiAKLUZldGNoTG9hZGVy
OjpUeXBlIEZldGNoQm9keTo6bG9hZGluZ1R5cGUoQ29uc3VtZXI6OlR5cGUgdHlwZSkKK3ZvaWQg
RmV0Y2hCb2R5Ojpjb25zdW1lVGV4dChEZWZlcnJlZFdyYXBwZXImIHByb21pc2UpCiB7Ci0gICAg
c3dpdGNoICh0eXBlKSB7Ci0gICAgY2FzZSBDb25zdW1lcjo6VHlwZTo6SlNPTjoKLSAgICBjYXNl
IENvbnN1bWVyOjpUeXBlOjpUZXh0OgotICAgICAgICByZXR1cm4gRmV0Y2hMb2FkZXI6OlR5cGU6
OlRleHQ7Ci0gICAgY2FzZSBDb25zdW1lcjo6VHlwZTo6QmxvYjoKLSAgICBjYXNlIENvbnN1bWVy
OjpUeXBlOjpBcnJheUJ1ZmZlcjoKLSAgICAgICAgcmV0dXJuIEZldGNoTG9hZGVyOjpUeXBlOjpB
cnJheUJ1ZmZlcjsKLSAgICBkZWZhdWx0OgotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
LSAgICAgICAgcmV0dXJuIEZldGNoTG9hZGVyOjpUeXBlOjpBcnJheUJ1ZmZlcjsKLSAgICB9Owor
ICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhID0gZXh0cmFjdEZyb21UZXh0KCk7CisgICAgbV9jb25z
dW1lci5yZXNvbHZlV2l0aERhdGEocHJvbWlzZSwgZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKTsK
IH0KIAotdm9pZCBGZXRjaEJvZHk6OmNvbnN1bWVCbG9iKEZldGNoQm9keU93bmVyJiBvd25lciwg
Q29uc3VtZXI6OlR5cGUgdHlwZSwgRGVmZXJyZWRXcmFwcGVyJiYgcHJvbWlzZSkKK3ZvaWQgRmV0
Y2hCb2R5Ojpjb25zdW1lQmxvYihGZXRjaEJvZHlPd25lciYgb3duZXIsIERlZmVycmVkV3JhcHBl
ciYmIHByb21pc2UpCiB7CiAgICAgQVNTRVJUKG1fYmxvYik7CiAKLSAgICBtX2NvbnN1bWVyID0g
Q29uc3VtZXIoe3R5cGUsIFdURk1vdmUocHJvbWlzZSl9KTsKLSAgICBvd25lci5sb2FkQmxvYigq
bV9ibG9iLCBsb2FkaW5nVHlwZSh0eXBlKSk7CisgICAgbV9jb25zdW1lUHJvbWlzZSA9IFdURk1v
dmUocHJvbWlzZSk7CisgICAgb3duZXIubG9hZEJsb2IoKm1fYmxvYiwgJm1fY29uc3VtZXIpOwog
fQogCiBWZWN0b3I8dWludDhfdD4gRmV0Y2hCb2R5OjpleHRyYWN0RnJvbVRleHQoKSBjb25zdApA
QCAtMjM2LDYzICsyMjMsMjEgQEAgVmVjdG9yPHVpbnQ4X3Q+IEZldGNoQm9keTo6ZXh0cmFjdEZy
b21UZXh0KCkgY29uc3QKICAgICByZXR1cm4gdmFsdWU7CiB9CiAKLXN0YXRpYyBpbmxpbmUgUmVm
PEJsb2I+IGJsb2JGcm9tQXJyYXlCdWZmZXIoQXJyYXlCdWZmZXIqIGJ1ZmZlciwgY29uc3QgU3Ry
aW5nJiBjb250ZW50VHlwZSkKLXsKLSAgICBpZiAoIWJ1ZmZlcikKLSAgICAgICAgcmV0dXJuIEJs
b2I6OmNyZWF0ZShWZWN0b3I8dWludDhfdD4oKSwgY29udGVudFR5cGUpOwotCi0gICAgLy8gRklY
TUU6IFdlIHNob3VsZCB0cnkgdG8gbW92ZSBidWZmZXIgdG8gQmxvYiB3aXRob3V0IGRvaW5nIHRo
aXMgY29weS4KLSAgICBWZWN0b3I8dWludDhfdD4gdmFsdWUoYnVmZmVyLT5ieXRlTGVuZ3RoKCkp
OwotICAgIG1lbWNweSh2YWx1ZS5kYXRhKCksIGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPmJ5dGVM
ZW5ndGgoKSk7Ci0gICAgcmV0dXJuIEJsb2I6OmNyZWF0ZShXVEZNb3ZlKHZhbHVlKSwgY29udGVu
dFR5cGUpOwotfQotCi12b2lkIEZldGNoQm9keTo6ZnVsZmlsbFRleHRQcm9taXNlKEZldGNoQm9k
eTo6Q29uc3VtZXI6OlR5cGUgdHlwZSwgY29uc3QgU3RyaW5nJiB0ZXh0LCBEZWZlcnJlZFdyYXBw
ZXImIHByb21pc2UpCi17Ci0gICAgQVNTRVJUKHR5cGUgPT0gQ29uc3VtZXI6OlR5cGU6OlRleHQg
fHwgdHlwZSA9PSBDb25zdW1lcjo6VHlwZTo6SlNPTik7Ci0gICAgaWYgKHR5cGUgPT0gRmV0Y2hC
b2R5OjpDb25zdW1lcjo6VHlwZTo6VGV4dCkKLSAgICAgICAgcHJvbWlzZS5yZXNvbHZlKHRleHQp
OwotICAgIGVsc2UKLSAgICAgICAgZnVsZmlsbFByb21pc2VXaXRoSlNPTihwcm9taXNlLCB0ZXh0
KTsKLX0KLQogdm9pZCBGZXRjaEJvZHk6OmxvYWRpbmdGYWlsZWQoKQogewotICAgIEFTU0VSVCht
X2NvbnN1bWVyKTsKLSAgICBtX2NvbnN1bWVyLT5wcm9taXNlLnJlamVjdCgwKTsKLSAgICBtX2Nv
bnN1bWVyID0gTnVsbG9wdDsKLX0KLQotdm9pZCBGZXRjaEJvZHk6OmxvYWRlZEFzQXJyYXlCdWZm
ZXIoUmVmUHRyPEFycmF5QnVmZmVyPiYmIGJ1ZmZlcikKLXsKLSAgICBpZiAobV90eXBlID09IFR5
cGU6OkxvYWRpbmcpIHsKLSAgICAgICAgbV90eXBlID0gVHlwZTo6QXJyYXlCdWZmZXI7Ci0gICAg
ICAgIG1fZGF0YSA9IGJ1ZmZlcjsKLSAgICAgICAgaWYgKG1fY29uc3VtZXIpIHsKLSAgICAgICAg
ICAgIGNvbnN1bWVBcnJheUJ1ZmZlcihtX2NvbnN1bWVyLT50eXBlLCBtX2NvbnN1bWVyLT5wcm9t
aXNlKTsKLSAgICAgICAgICAgIG1fY29uc3VtZXIgPSBOdWxsb3B0OwotICAgICAgICB9Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBBU1NFUlQobV9jb25zdW1lcik7Ci0gICAgQVNTRVJU
KG1fY29uc3VtZXItPnR5cGUgPT0gQ29uc3VtZXI6OlR5cGU6OkJsb2IgfHwgbV9jb25zdW1lci0+
dHlwZSA9PSBDb25zdW1lcjo6VHlwZTo6QXJyYXlCdWZmZXIpOwotICAgIGlmIChtX2NvbnN1bWVy
LT50eXBlID09IENvbnN1bWVyOjpUeXBlOjpBcnJheUJ1ZmZlcikKLSAgICAgICAgZnVsZmlsbFBy
b21pc2VXaXRoQXJyYXlCdWZmZXIobV9jb25zdW1lci0+cHJvbWlzZSwgYnVmZmVyLmdldCgpKTsK
LSAgICBlbHNlIHsKLSAgICAgICAgQVNTRVJUKG1fYmxvYik7Ci0gICAgICAgIG1fY29uc3VtZXIt
PnByb21pc2UucmVzb2x2ZShibG9iRnJvbUFycmF5QnVmZmVyKGJ1ZmZlci5nZXQoKSwgbV9ibG9i
LT50eXBlKCkpKTsKKyAgICBpZiAobV9jb25zdW1lUHJvbWlzZSkgeworICAgICAgICBtX2NvbnN1
bWVQcm9taXNlLT5yZWplY3QoMCk7CisgICAgICAgIG1fY29uc3VtZVByb21pc2UgPSBOdWxsb3B0
OwogICAgIH0KLSAgICBtX2NvbnN1bWVyID0gTnVsbG9wdDsKIH0KIAotdm9pZCBGZXRjaEJvZHk6
OmxvYWRlZEFzVGV4dChTdHJpbmcmJiB0ZXh0KQordm9pZCBGZXRjaEJvZHk6OmxvYWRpbmdTdWNj
ZWVkZWQoKQogewotICAgIEFTU0VSVChtX2NvbnN1bWVyKTsKLSAgICBBU1NFUlQobV9jb25zdW1l
ci0+dHlwZSA9PSBDb25zdW1lcjo6VHlwZTo6VGV4dCB8fCBtX2NvbnN1bWVyLT50eXBlID09IENv
bnN1bWVyOjpUeXBlOjpKU09OKTsKLQotICAgIGZ1bGZpbGxUZXh0UHJvbWlzZShtX2NvbnN1bWVy
LT50eXBlLCB0ZXh0LCBtX2NvbnN1bWVyLT5wcm9taXNlKTsKLSAgICBtX2NvbnN1bWVyID0gTnVs
bG9wdDsKKyAgICBtX3R5cGUgPSBtX2NvbnN1bWVyLmhhc0RhdGEoKSA/IFR5cGU6OkxvYWRlZCA6
IFR5cGU6Ok5vbmU7CisgICAgaWYgKG1fY29uc3VtZVByb21pc2UpIHsKKyAgICAgICAgbV9jb25z
dW1lci5yZXNvbHZlKCptX2NvbnN1bWVQcm9taXNlKTsKKyAgICAgICAgbV9jb25zdW1lUHJvbWlz
ZSA9IE51bGxvcHQ7CisgICAgfQogfQogCiBSZWZQdHI8Rm9ybURhdGE+IEZldGNoQm9keTo6Ym9k
eUZvckludGVybmFsUmVxdWVzdCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2ZldGNoL0ZldGNoQm9keS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9G
ZXRjaEJvZHkuaAppbmRleCA1NmYzZGZkYzg1NzFjMzE1MTEyZjI2NjVjNmZmZGE5NzVhOWRmMzky
Li42MmQ5ZTVhNzg3ZDU4MzMwYjY2NGY4YWM1NmVmMjQ1MzJjZWY2ZGM1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmgKQEAgLTMzLDYgKzMzLDcgQEAKIAogI2luY2x1
ZGUgIkJsb2IuaCIKICNpbmNsdWRlICJET01Gb3JtRGF0YS5oIgorI2luY2x1ZGUgIkZldGNoQm9k
eUNvbnN1bWVyLmgiCiAjaW5jbHVkZSAiRmV0Y2hMb2FkZXIuaCIKICNpbmNsdWRlICJKU0RPTVBy
b21pc2UuaCIKIApAQCAtNzAsMzUgKzcxLDI3IEBAIHB1YmxpYzoKICAgICBGZXRjaEJvZHkoKSA9
IGRlZmF1bHQ7CiAKICAgICB2b2lkIGxvYWRpbmdGYWlsZWQoKTsKLSAgICB2b2lkIGxvYWRlZEFz
QXJyYXlCdWZmZXIoUmVmUHRyPEFycmF5QnVmZmVyPiYmKTsKLSAgICB2b2lkIGxvYWRlZEFzVGV4
dChTdHJpbmcmJik7CisgICAgdm9pZCBsb2FkaW5nU3VjY2VlZGVkKCk7CiAKICAgICBSZWZQdHI8
Rm9ybURhdGE+IGJvZHlGb3JJbnRlcm5hbFJlcXVlc3QoKSBjb25zdDsKIAotICAgIGVudW0gY2xh
c3MgVHlwZSB7IE5vbmUsIEFycmF5QnVmZmVyLCBMb2FkaW5nLCBUZXh0LCBCbG9iLCBGb3JtRGF0
YSB9OworICAgIGVudW0gY2xhc3MgVHlwZSB7IE5vbmUsIEFycmF5QnVmZmVyLCBCbG9iLCBGb3Jt
RGF0YSwgVGV4dCwgTG9hZGluZywgTG9hZGVkLCBSZWFkYWJsZVN0cmVhbSB9OwogICAgIFR5cGUg
dHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQogCisgICAgRmV0Y2hCb2R5Q29uc3VtZXIm
IGNvbnN1bWVyKCkgeyByZXR1cm4gbV9jb25zdW1lcjsgfQorCiBwcml2YXRlOgogICAgIEZldGNo
Qm9keShSZWY8QmxvYj4mJik7CiAgICAgRmV0Y2hCb2R5KFJlZjxET01Gb3JtRGF0YT4mJik7CiAg
ICAgRmV0Y2hCb2R5KFN0cmluZyYmKTsKICAgICBGZXRjaEJvZHkoVHlwZSB0eXBlKSA6IG1fdHlw
ZSh0eXBlKSB7IH0KIAotICAgIHN0cnVjdCBDb25zdW1lciB7Ci0gICAgICAgIGVudW0gY2xhc3Mg
VHlwZSB7IFRleHQsIEJsb2IsIEpTT04sIEFycmF5QnVmZmVyIH07Ci0KLSAgICAgICAgVHlwZSB0
eXBlOwotICAgICAgICBEZWZlcnJlZFdyYXBwZXIgcHJvbWlzZTsKLSAgICB9OwotICAgIHZvaWQg
Y29uc3VtZShGZXRjaEJvZHlPd25lciYsIENvbnN1bWVyOjpUeXBlLCBEZWZlcnJlZFdyYXBwZXIm
Jik7CisgICAgdm9pZCBjb25zdW1lKEZldGNoQm9keU93bmVyJiwgRGVmZXJyZWRXcmFwcGVyJiYp
OwogCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGV4dHJhY3RGcm9tVGV4dCgpIGNvbnN0OwotICAgIHZv
aWQgY29uc3VtZUFycmF5QnVmZmVyKENvbnN1bWVyOjpUeXBlLCBEZWZlcnJlZFdyYXBwZXImKTsK
LSAgICB2b2lkIGNvbnN1bWVUZXh0KENvbnN1bWVyOjpUeXBlLCBEZWZlcnJlZFdyYXBwZXImKTsK
LSAgICB2b2lkIGNvbnN1bWVCbG9iKEZldGNoQm9keU93bmVyJiwgQ29uc3VtZXI6OlR5cGUsIERl
ZmVycmVkV3JhcHBlciYmKTsKLSAgICBzdGF0aWMgRmV0Y2hMb2FkZXI6OlR5cGUgbG9hZGluZ1R5
cGUoQ29uc3VtZXI6OlR5cGUpOwotICAgIHN0YXRpYyB2b2lkIGZ1bGZpbGxUZXh0UHJvbWlzZShG
ZXRjaEJvZHk6OkNvbnN1bWVyOjpUeXBlLCBjb25zdCBTdHJpbmcmLCBEZWZlcnJlZFdyYXBwZXIm
KTsKLSAgICBzdGF0aWMgdm9pZCBmdWxmaWxsQXJyYXlCdWZmZXJQcm9taXNlKEZldGNoQm9keTo6
Q29uc3VtZXI6OlR5cGUsIGNvbnN0IFN0cmluZyYsIERlZmVycmVkV3JhcHBlciYpOworICAgIHZv
aWQgY29uc3VtZUFycmF5QnVmZmVyKERlZmVycmVkV3JhcHBlciYpOworICAgIHZvaWQgY29uc3Vt
ZVRleHQoRGVmZXJyZWRXcmFwcGVyJik7CisgICAgdm9pZCBjb25zdW1lQmxvYihGZXRjaEJvZHlP
d25lciYsIERlZmVycmVkV3JhcHBlciYmKTsKIAogICAgIFR5cGUgbV90eXBlIHsgVHlwZTo6Tm9u
ZSB9OwogICAgIFN0cmluZyBtX21pbWVUeXBlOwpAQCAtMTA5LDcgKzEwMiw4IEBAIHByaXZhdGU6
CiAgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBtX2RhdGE7CiAgICAgU3RyaW5nIG1fdGV4dDsKIAot
ICAgIE9wdGlvbmFsPENvbnN1bWVyPiBtX2NvbnN1bWVyOworICAgIEZldGNoQm9keUNvbnN1bWVy
IG1fY29uc3VtZXIgeyBGZXRjaEJvZHlDb25zdW1lcjo6VHlwZTo6Tm9uZSB9OworICAgIE9wdGlv
bmFsPERlZmVycmVkV3JhcHBlcj4gbV9jb25zdW1lUHJvbWlzZTsKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0
Y2hCb2R5Q29uc3VtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJv
ZHlDb25zdW1lci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDkzMjUxYmY5NGNkMzQyN2Y2NzlmZDYyZWFkZTRl
OGJhMDAyMzQ2NwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0
Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwCkBAIC0wLDAgKzEsMTQwIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE2IEFwcGxlIEluYy4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCwgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSByZXF1aXJlZCB0byBiZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YK
KyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUgorICogQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyAqIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSCisgKiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorICogT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIkZldGNoQm9keUNvbnN1bWVyLmgiCisKKyNpZiBFTkFCTEUoRkVUQ0hfQVBJKQorCisjaW5j
bHVkZSAiSlNCbG9iLmgiCisjaW5jbHVkZSAiSlNET01Qcm9taXNlLmgiCisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworc3RhdGljIGlubGluZSBSZWY8QmxvYj4gYmxvYkZyb21EYXRhKGNvbnN0IHVu
c2lnbmVkIGNoYXIqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwgY29uc3QgU3RyaW5nJiBjb250ZW50
VHlwZSkKK3sKKyAgICBWZWN0b3I8dWludDhfdD4gdmFsdWUobGVuZ3RoKTsKKyAgICBtZW1jcHko
dmFsdWUuZGF0YSgpLCBkYXRhLCBsZW5ndGgpOworICAgIHJldHVybiBCbG9iOjpjcmVhdGUoV1RG
TW92ZSh2YWx1ZSksIGNvbnRlbnRUeXBlKTsKK30KKwordm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6
cmVzb2x2ZVdpdGhEYXRhKERlZmVycmVkV3JhcHBlciYgcHJvbWlzZSwgY29uc3QgdW5zaWduZWQg
Y2hhciogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKQoreworICAgIHN3aXRjaCAobV90eXBlKSB7Cisg
ICAgY2FzZSBUeXBlOjpBcnJheUJ1ZmZlcjoKKyAgICAgICAgZnVsZmlsbFByb21pc2VXaXRoQXJy
YXlCdWZmZXIocHJvbWlzZSwgZGF0YSwgbGVuZ3RoKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNh
c2UgVHlwZTo6QmxvYjoKKyAgICAgICAgcHJvbWlzZS5yZXNvbHZlV2l0aE5ld2x5Q3JlYXRlZChi
bG9iRnJvbURhdGEoZGF0YSwgbGVuZ3RoLCBtX2NvbnRlbnRUeXBlKSk7CisgICAgICAgIHJldHVy
bjsKKyAgICBjYXNlIFR5cGU6OkpTT046CisgICAgICAgIGZ1bGZpbGxQcm9taXNlV2l0aEpTT04o
cHJvbWlzZSwgU3RyaW5nKGRhdGEsIGxlbmd0aCkpOworICAgICAgICByZXR1cm47CisgICAgY2Fz
ZSBUeXBlOjpUZXh0OgorICAgICAgICBwcm9taXNlLnJlc29sdmUoU3RyaW5nKGRhdGEsIGxlbmd0
aCkpOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBUeXBlOjpOb25lOgorICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KK30KKwordm9pZCBGZXRj
aEJvZHlDb25zdW1lcjo6cmVzb2x2ZShEZWZlcnJlZFdyYXBwZXImIHByb21pc2UpCit7CisgICAg
QVNTRVJUKG1fdHlwZSAhPSBUeXBlOjpOb25lKTsKKyAgICBzd2l0Y2ggKG1fdHlwZSkgeworICAg
IGNhc2UgVHlwZTo6QXJyYXlCdWZmZXI6CisgICAgICAgIGZ1bGZpbGxQcm9taXNlV2l0aEFycmF5
QnVmZmVyKHByb21pc2UsIHRha2VBc0FycmF5QnVmZmVyKCkuZ2V0KCkpOworICAgICAgICByZXR1
cm47CisgICAgY2FzZSBUeXBlOjpCbG9iOgorICAgICAgICBwcm9taXNlLnJlc29sdmVXaXRoTmV3
bHlDcmVhdGVkKHRha2VBc0Jsb2IoKSk7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIFR5cGU6
OkpTT046CisgICAgICAgIGZ1bGZpbGxQcm9taXNlV2l0aEpTT04ocHJvbWlzZSwgdGFrZUFzVGV4
dCgpKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgVHlwZTo6VGV4dDoKKyAgICAgICAgcHJv
bWlzZS5yZXNvbHZlKHRha2VBc1RleHQoKSk7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIFR5
cGU6Ok5vbmU6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm47
CisgICAgfQorfQorCit2b2lkIEZldGNoQm9keUNvbnN1bWVyOjphcHBlbmQoY29uc3QgY2hhciog
ZGF0YSwgdW5zaWduZWQgbGVuZ3RoKQoreworICAgIGlmICghbV9idWZmZXIpIHsKKyAgICAgICAg
bV9idWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLCBsZW5ndGgpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorICAgIG1fYnVmZmVyLT5hcHBlbmQoZGF0YSwgbGVuZ3RoKTsKK30KKwor
dm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6YXBwZW5kKGNvbnN0IHVuc2lnbmVkIGNoYXIqIGRhdGEs
IHVuc2lnbmVkIGxlbmd0aCkKK3sKKyAgICBhcHBlbmQocmVpbnRlcnByZXRfY2FzdDxjb25zdCBj
aGFyKj4oZGF0YSksIGxlbmd0aCk7Cit9CisKK1JlZlB0cjxTaGFyZWRCdWZmZXI+IEZldGNoQm9k
eUNvbnN1bWVyOjp0YWtlRGF0YSgpCit7CisgICAgcmV0dXJuIFdURk1vdmUobV9idWZmZXIpOwor
fQorCitSZWZQdHI8SlNDOjpBcnJheUJ1ZmZlcj4gRmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VBc0Fy
cmF5QnVmZmVyKCkKK3sKKyAgICBpZiAoIW1fYnVmZmVyKQorICAgICAgICByZXR1cm4gQXJyYXlC
dWZmZXI6OnRyeUNyZWF0ZShudWxscHRyLCAwKTsKKworICAgIGF1dG8gYXJyYXlCdWZmZXIgPSBt
X2J1ZmZlci0+Y3JlYXRlQXJyYXlCdWZmZXIoKTsKKyAgICBtX2J1ZmZlciA9IG51bGxwdHI7Cisg
ICAgcmV0dXJuIGFycmF5QnVmZmVyOworfQorCitSZWY8QmxvYj4gRmV0Y2hCb2R5Q29uc3VtZXI6
OnRha2VBc0Jsb2IoKQoreworICAgIEFTU0VSVChtX2J1ZmZlcik7CisgICAgaWYgKCFtX2J1ZmZl
cikKKyAgICAgICAgcmV0dXJuIEJsb2I6OmNyZWF0ZSgpOworCisgICAgLy8gRklYTUU6IFdlIHNo
b3VsZCB0cnkgdG8gbW92ZSBtX2J1ZmZlciB0byBCbG9iIHdpdGhvdXQgZG9pbmcgZXh0cmEgY29w
eS4KKyAgICByZXR1cm4gYmxvYkZyb21EYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdW5zaWdu
ZWQgY2hhcio+KG1fYnVmZmVyLT5kYXRhKCkpLCBtX2J1ZmZlci0+c2l6ZSgpLCBtX2NvbnRlbnRU
eXBlKTsKK30KKworU3RyaW5nIEZldGNoQm9keUNvbnN1bWVyOjp0YWtlQXNUZXh0KCkKK3sKKyAg
ICBpZiAoIW1fYnVmZmVyKQorICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisKKyAgICBhdXRvIHRl
eHQgPSBTdHJpbmcobV9idWZmZXItPmRhdGEoKSwgbV9idWZmZXItPnNpemUoKSk7CisgICAgbV9i
dWZmZXIgPSBudWxscHRyOworICAgIHJldHVybiB0ZXh0OworfQorCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoRkVUQ0hfQVBJKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZhYTFmZTdk
MjhhYzdhNmNhZTMyYWVjNzQ0NDVkOTgwODEzNDRiM2IKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmgKQEAgLTAsMCArMSw3
MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQsIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgcmVxdWlyZWQgdG8gYmUgbWV0OgorICoKKyAqIDEu
ICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgSW5j
LiBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKKyAqIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyAqIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SCisgKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgorICogQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwK
KyAqIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEg
b25jZQorCisjaWYgRU5BQkxFKEZFVENIX0FQSSkKKworI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5o
IgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEJsb2I7CitjbGFzcyBEZWZlcnJlZFdy
YXBwZXI7CisKK2NsYXNzIEZldGNoQm9keUNvbnN1bWVyIHsKK3B1YmxpYzoKKyAgICAvLyBUeXBl
IGlzIHVzZWQgaW4gRmV0Y2hSZXNwb25zZS5qcyBhbmQgc2hvdWxkIGJlIGtlcHQgc3luY2hyb25p
emVkIHdpdGggaXQuCisgICAgZW51bSBjbGFzcyBUeXBlIHsgTm9uZSwgQXJyYXlCdWZmZXIsIEJs
b2IsIEpTT04sIFRleHQgfTsKKworICAgIEZldGNoQm9keUNvbnN1bWVyKFR5cGUgdHlwZSkgOiBt
X3R5cGUodHlwZSkgeyB9CisKKyAgICB2b2lkIGFwcGVuZChjb25zdCBjaGFyKiBkYXRhLCB1bnNp
Z25lZCk7CisgICAgdm9pZCBhcHBlbmQoY29uc3QgdW5zaWduZWQgY2hhciogZGF0YSwgdW5zaWdu
ZWQpOworCisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdGFrZURhdGEoKTsKKyAgICBSZWZQdHI8
SlNDOjpBcnJheUJ1ZmZlcj4gdGFrZUFzQXJyYXlCdWZmZXIoKTsKKyAgICBSZWY8QmxvYj4gdGFr
ZUFzQmxvYigpOworICAgIFN0cmluZyB0YWtlQXNUZXh0KCk7CisKKyAgICB2b2lkIHNldENvbnRl
bnRUeXBlKGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpIHsgbV9jb250ZW50VHlwZSA9IGNvbnRl
bnRUeXBlOyB9CisgICAgdm9pZCBzZXRUeXBlKFR5cGUgdHlwZSkgeyBtX3R5cGUgPSB0eXBlOyB9
CisKKyAgICB2b2lkIGNsZWFuKCkgeyBtX2J1ZmZlciA9IG51bGxwdHI7IH0KKworICAgIHZvaWQg
cmVzb2x2ZShEZWZlcnJlZFdyYXBwZXImKTsKKyAgICB2b2lkIHJlc29sdmVXaXRoRGF0YShEZWZl
cnJlZFdyYXBwZXImLCBjb25zdCB1bnNpZ25lZCBjaGFyKiwgdW5zaWduZWQpOworCisgICAgYm9v
bCBoYXNEYXRhKCkgY29uc3QgeyByZXR1cm4gISFtX2J1ZmZlcjsgfQorCitwcml2YXRlOgorICAg
IFR5cGUgbV90eXBlOworICAgIFN0cmluZyBtX2NvbnRlbnRUeXBlOworICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IG1fYnVmZmVyOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5k
aWYgLy8gRU5BQkxFKEZFVENIX0FQSSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZmV0Y2gvRmV0Y2hCb2R5T3duZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRj
aC9GZXRjaEJvZHlPd25lci5jcHAKaW5kZXggMGY0NTc5NGEwNjllMmVlNjA4YjE4Mzc4ZTNkZjFm
NGJjZTczNTNhNS4uOTY0YmU3NzExMDRkYTY3MTk3ZDNkNTA0YzY5ODgxNDE4Y2M4NTY4OSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlPd25lci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlPd25lci5jcHAKQEAg
LTEzOCw3ICsxMzgsNyBAQCB2b2lkIEZldGNoQm9keU93bmVyOjp0ZXh0KERlZmVycmVkV3JhcHBl
ciYmIHByb21pc2UpCiAgICAgbV9ib2R5LnRleHQoKnRoaXMsIFdURk1vdmUocHJvbWlzZSkpOwog
fQogCi12b2lkIEZldGNoQm9keU93bmVyOjpsb2FkQmxvYihCbG9iJiBibG9iLCBGZXRjaExvYWRl
cjo6VHlwZSB0eXBlKQordm9pZCBGZXRjaEJvZHlPd25lcjo6bG9hZEJsb2IoQmxvYiYgYmxvYiwg
RmV0Y2hCb2R5Q29uc3VtZXIqIGNvbnN1bWVyKQogewogICAgIC8vIENhbiBvbmx5IGJlIGNhbGxl
ZCBvbmNlIGZvciBhIGJvZHkgaW5zdGFuY2UuCiAgICAgQVNTRVJUKGlzRGlzdHVyYmVkKCkpOwpA
QCAtMTUwLDcgKzE1MCw3IEBAIHZvaWQgRmV0Y2hCb2R5T3duZXI6OmxvYWRCbG9iKEJsb2ImIGJs
b2IsIEZldGNoTG9hZGVyOjpUeXBlIHR5cGUpCiAgICAgfQogCiAgICAgbV9ibG9iTG9hZGVyID0g
eyAqdGhpcyB9OwotICAgIG1fYmxvYkxvYWRlci0+bG9hZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxG
ZXRjaExvYWRlcj4odHlwZSwgKm1fYmxvYkxvYWRlcik7CisgICAgbV9ibG9iTG9hZGVyLT5sb2Fk
ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEZldGNoTG9hZGVyPigqbV9ibG9iTG9hZGVyLCBjb25zdW1l
cik7CiAKICAgICBtX2Jsb2JMb2FkZXItPmxvYWRlci0+c3RhcnQoKnNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKSwgYmxvYik7CiAgICAgaWYgKCFtX2Jsb2JMb2FkZXItPmxvYWRlci0+aXNTdGFydGVk
KCkpIHsKQEAgLTE2OSwxMSArMTY5LDYgQEAgdm9pZCBGZXRjaEJvZHlPd25lcjo6ZmluaXNoQmxv
YkxvYWRpbmcoKQogICAgIHVuc2V0UGVuZGluZ0FjdGl2aXR5KHRoaXMpOwogfQogCi12b2lkIEZl
dGNoQm9keU93bmVyOjpsb2FkZWRCbG9iQXNUZXh0KFN0cmluZyYmIHRleHQpCi17Ci0gICAgbV9i
b2R5LmxvYWRlZEFzVGV4dChXVEZNb3ZlKHRleHQpKTsKLX0KLQogdm9pZCBGZXRjaEJvZHlPd25l
cjo6YmxvYkxvYWRpbmdTdWNjZWVkZWQoKQogewogICAgIEFTU0VSVChtX2JvZHkudHlwZSgpID09
IEZldGNoQm9keTo6VHlwZTo6QmxvYik7CkBAIC0xODQsNyArMTc5LDcgQEAgdm9pZCBGZXRjaEJv
ZHlPd25lcjo6YmxvYkxvYWRpbmdTdWNjZWVkZWQoKQogICAgICAgICBtX3JlYWRhYmxlU3RyZWFt
U291cmNlID0gbnVsbHB0cjsKICAgICB9CiAjZW5kaWYKLQorICAgIG1fYm9keS5sb2FkaW5nU3Vj
Y2VlZGVkKCk7CiAgICAgZmluaXNoQmxvYkxvYWRpbmcoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlPd25lci5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlPd25lci5oCmluZGV4IDA2YTIxMjY2NWMzOWZjMzkw
N2QzOGUxM2Y0Y2MxMzNjYzg3MmM3YjQuLjg3YjcyZjBhNDk5ZjkzMzZhNDBmYTQ4NjMzYTE4OTA5
MjIzYjFkOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hC
b2R5T3duZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keU93
bmVyLmgKQEAgLTUyLDcgKzUyLDcgQEAgcHVibGljOgogICAgIHZvaWQganNvbihEZWZlcnJlZFdy
YXBwZXImJik7CiAgICAgdm9pZCB0ZXh0KERlZmVycmVkV3JhcHBlciYmKTsKIAotICAgIHZvaWQg
bG9hZEJsb2IoQmxvYiYsIEZldGNoTG9hZGVyOjpUeXBlKTsKKyAgICB2b2lkIGxvYWRCbG9iKEJs
b2ImLCBGZXRjaEJvZHlDb25zdW1lciopOwogCiAgICAgYm9vbCBpc0FjdGl2ZSgpIGNvbnN0IHsg
cmV0dXJuICEhbV9ibG9iTG9hZGVyOyB9CiAKQEAgLTY3LDggKzY3LDYgQEAgcHJvdGVjdGVkOgog
CiBwcml2YXRlOgogICAgIC8vIEJsb2IgbG9hZGluZyByb3V0aW5lcwotICAgIHZvaWQgbG9hZGVk
QmxvYkFzVGV4dChTdHJpbmcmJik7Ci0gICAgdm9pZCBsb2FkZWRCbG9iQXNBcnJheUJ1ZmZlcihS
ZWZQdHI8QXJyYXlCdWZmZXI+JiYgYnVmZmVyKSB7IG1fYm9keS5sb2FkZWRBc0FycmF5QnVmZmVy
KFdURk1vdmUoYnVmZmVyKSk7IH0KICAgICB2b2lkIGJsb2JDaHVuayhjb25zdCBjaGFyKiwgc2l6
ZV90KTsKICAgICB2b2lkIGJsb2JMb2FkaW5nU3VjY2VlZGVkKCk7CiAgICAgdm9pZCBibG9iTG9h
ZGluZ0ZhaWxlZCgpOwpAQCAtNzgsOCArNzYsNiBAQCBwcml2YXRlOgogICAgICAgICBCbG9iTG9h
ZGVyKEZldGNoQm9keU93bmVyJik7CiAKICAgICAgICAgLy8gRmV0Y2hMb2FkZXJDbGllbnQgQVBJ
Ci0gICAgICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZ0FzVGV4dChTdHJpbmcmJiB0ZXh0KSBmaW5h
bCB7IG93bmVyLmxvYWRlZEJsb2JBc1RleHQoV1RGTW92ZSh0ZXh0KSk7IH0KLSAgICAgICAgdm9p
ZCBkaWRGaW5pc2hMb2FkaW5nQXNBcnJheUJ1ZmZlcihSZWZQdHI8QXJyYXlCdWZmZXI+JiYgYnVm
ZmVyKSBmaW5hbCB7IG93bmVyLmxvYWRlZEJsb2JBc0FycmF5QnVmZmVyKFdURk1vdmUoYnVmZmVy
KSk7IH0KICAgICAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYpIGZpbmFsOwogICAgICAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIqIGRh
dGEsIHNpemVfdCBzaXplKSBmaW5hbCB7IG93bmVyLmJsb2JDaHVuayhkYXRhLCBzaXplKTsgfQog
ICAgICAgICB2b2lkIGRpZEZhaWwoKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZmV0Y2gvRmV0Y2hJbnRlcm5hbHMuanMgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2ZldGNoL0ZldGNoSW50ZXJuYWxzLmpzCmluZGV4IDQ1MmVjNzYzNTM1YTgwOWVhOGQ4Mjk4ZTA2
OTM1ZWU1YjMwNzZlNGIuLmQ3NTAwNGUyZjgwODViMTVjNzEwMDcwMDE1YmVkZDFiNWFiYjIyYzYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hJbnRlcm5hbHMu
anMKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEludGVybmFscy5qcwpA
QCAtNTEsMyArNTEsMjcgQEAgZnVuY3Rpb24gZmlsbEZldGNoSGVhZGVycyhoZWFkZXJzLCBoZWFk
ZXJzSW5pdCkKICAgICAgICAgQEhlYWRlcnMucHJvdG90eXBlLkBhcHBlbmRGcm9tSlMuQGNhbGwo
aGVhZGVycywgbmFtZSwgaGVhZGVyc0luaXRbbmFtZV0pOwogICAgIH0KIH0KKworZnVuY3Rpb24g
Y29uc3VtZVN0cmVhbShyZXNwb25zZSwgdHlwZSkKK3sKKyAgICBAYXNzZXJ0KHJlc3BvbnNlIGlu
c3RhbmNlb2YgQFJlc3BvbnNlKTsKKyAgICBAYXNzZXJ0KHJlc3BvbnNlLkBib2R5IGluc3RhbmNl
b2YgQFJlYWRhYmxlU3RyZWFtKTsKKworICAgIGlmIChAaXNSZWFkYWJsZVN0cmVhbURpc3R1cmJl
ZChyZXNwb25zZS5AYm9keSkpCisgICAgICAgIHJldHVybiBAUHJvbWlzZS5AcmVqZWN0KG5ldyBA
VHlwZUVycm9yKCJDYW5ub3QgY29uc3VtZSBhIGRpc3R1cmJlZCBSZXNwb25zZSBib2R5IFJlYWRh
YmxlU3RyZWFtIikpOworCisgICAgdHJ5IHsKKyAgICAgICAgbGV0IHJlYWRlciA9IG5ldyBAUmVh
ZGFibGVTdHJlYW1SZWFkZXIocmVzcG9uc2UuQGJvZHkpOworCisgICAgICAgIEBSZXNwb25zZS5w
cm90b3R5cGUuQHN0YXJ0Q29uc3VtaW5nU3RyZWFtLkBjYWxsKHJlc3BvbnNlLCB0eXBlKTsKKyAg
ICAgICAgbGV0IHB1bGwgPSAocmVzdWx0KSA9PiB7CisgICAgICAgICAgICBpZiAocmVzdWx0LmRv
bmUpCisgICAgICAgICAgICAgICAgcmV0dXJuIEBSZXNwb25zZS5wcm90b3R5cGUuQGZpbmlzaENv
bnN1bWluZ1N0cmVhbS5AY2FsbChyZXNwb25zZSk7CisgICAgICAgICAgICBAUmVzcG9uc2UucHJv
dG90eXBlLkBjb25zdW1lQ2h1bmsuQGNhbGwocmVzcG9uc2UsIHJlc3VsdC52YWx1ZSk7CisgICAg
ICAgICAgICByZXR1cm4gQFByb21pc2UucHJvdG90eXBlLkB0aGVuLkBjYWxsKEByZWFkRnJvbVJl
YWRhYmxlU3RyZWFtUmVhZGVyKHJlYWRlciksIHB1bGwpOworICAgICAgICB9CisgICAgICAgIHJl
dHVybiBAUHJvbWlzZS5wcm90b3R5cGUuQHRoZW4uQGNhbGwoQHJlYWRGcm9tUmVhZGFibGVTdHJl
YW1SZWFkZXIocmVhZGVyKSwgcHVsbCk7CisgICAgfSBjYXRjaChlKSB7CisgICAgICAgIHJldHVy
biBAUHJvbWlzZS5AcmVqZWN0KGUpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9mZXRjaC9GZXRjaExvYWRlci5jcHAKaW5kZXggMWIyM2YwNDllNjdiNDY3MWMxZTE2YTY4OWUx
ZGIyYjQ0YWQxM2Y4MC4uZTYzYmMxYjJkMzNjMzJkMjFlNDlmOTlhNTcyMjY0NzMwMTUyNjJlYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlci5jcHAKQEAgLTg5
LDI0ICs4OSwyNiBAQCB2b2lkIEZldGNoTG9hZGVyOjpzdGFydChTY3JpcHRFeGVjdXRpb25Db250
ZXh0JiBjb250ZXh0LCBjb25zdCBGZXRjaFJlcXVlc3QmIHJlcQogICAgIG1faXNTdGFydGVkID0g
bV9sb2FkZXI7CiB9CiAKLUZldGNoTG9hZGVyOjpGZXRjaExvYWRlcihUeXBlIHR5cGUsIEZldGNo
TG9hZGVyQ2xpZW50JiBjbGllbnQpCi0gICAgOiBtX3R5cGUodHlwZSkKLSAgICAsIG1fY2xpZW50
KGNsaWVudCkKK0ZldGNoTG9hZGVyOjpGZXRjaExvYWRlcihGZXRjaExvYWRlckNsaWVudCYgY2xp
ZW50LCBGZXRjaEJvZHlDb25zdW1lciogY29uc3VtZXIpCisgICAgOiBtX2NsaWVudChjbGllbnQp
CisgICAgLCBtX2NvbnN1bWVyKGNvbnN1bWVyKQogewogfQogCiB2b2lkIEZldGNoTG9hZGVyOjpz
dG9wKCkKIHsKLSAgICBtX2RhdGEgPSBudWxscHRyOworICAgIGlmIChtX2NvbnN1bWVyKQorICAg
ICAgICBtX2NvbnN1bWVyLT5jbGVhbigpOwogICAgIGlmIChtX2xvYWRlcikKICAgICAgICAgbV9s
b2FkZXItPmNhbmNlbCgpOwogfQogCiBSZWZQdHI8U2hhcmVkQnVmZmVyPiBGZXRjaExvYWRlcjo6
c3RhcnRTdHJlYW1pbmcoKQogewotICAgIEFTU0VSVChtX3R5cGUgPT0gVHlwZTo6QXJyYXlCdWZm
ZXIpOwotICAgIG1fdHlwZSA9IFR5cGU6OlN0cmVhbTsKLSAgICByZXR1cm4gV1RGTW92ZShtX2Rh
dGEpOworICAgIEFTU0VSVChtX2NvbnN1bWVyKTsKKyAgICBhdXRvIGZpcnN0Q2h1bmsgPSBtX2Nv
bnN1bWVyLT50YWtlRGF0YSgpOworICAgIG1fY29uc3VtZXIgPSBudWxscHRyOworICAgIHJldHVy
biBmaXJzdENodW5rOwogfQogCiB2b2lkIEZldGNoTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2Uo
dW5zaWduZWQgbG9uZywgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCkBAIC0xMTQs
MjkgKzExNiwxNyBAQCB2b2lkIEZldGNoTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UodW5zaWdu
ZWQgbG9uZywgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcAogICAgIG1fY2xpZW50LmRpZFJl
Y2VpdmVSZXNwb25zZShyZXNwb25zZSk7CiB9CiAKLS8vIEZJWE1FOiBXZSBzaG91bGQgbWFrZSB0
ZXh0IGFuZCBibG9iIGNyZWF0aW9uIG1vcmUgZWZmaWNpZW50LgotLy8gV2UgbWlnaHQgYWxzbyB3
YW50IHRvIG1lcmdlIHRoaXMgY2xhc3Mgd2l0aCBGaWxlUmVhZGVyTG9hZGVyLgogdm9pZCBGZXRj
aExvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgY2hhciogdmFsdWUsIGludCBzaXplKQogewot
ICAgIGlmIChtX3R5cGUgPT0gVHlwZTo6U3RyZWFtKSB7CisgICAgaWYgKCFtX2NvbnN1bWVyKSB7
CiAgICAgICAgIG1fY2xpZW50LmRpZFJlY2VpdmVEYXRhKHZhbHVlLCBzaXplKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KLSAgICBpZiAoIW1fZGF0YSkgewotICAgICAgICBtX2RhdGEgPSBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZSh2YWx1ZSwgc2l6ZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0g
ICAgbV9kYXRhLT5hcHBlbmQodmFsdWUsIHNpemUpOworICAgIG1fY29uc3VtZXItPmFwcGVuZCh2
YWx1ZSwgc2l6ZSk7CiB9CiAKIHZvaWQgRmV0Y2hMb2FkZXI6OmRpZEZpbmlzaExvYWRpbmcodW5z
aWduZWQgbG9uZywgZG91YmxlKQogewotICAgIGlmIChtX3R5cGUgPT0gVHlwZTo6QXJyYXlCdWZm
ZXIpCi0gICAgICAgIG1fY2xpZW50LmRpZEZpbmlzaExvYWRpbmdBc0FycmF5QnVmZmVyKG1fZGF0
YSA/IG1fZGF0YS0+Y3JlYXRlQXJyYXlCdWZmZXIoKSA6IEFycmF5QnVmZmVyOjp0cnlDcmVhdGUo
bnVsbHB0ciwgMCkpOwotICAgIGVsc2UgaWYgKG1fdHlwZSA9PSBUeXBlOjpUZXh0KQotICAgICAg
ICBtX2NsaWVudC5kaWRGaW5pc2hMb2FkaW5nQXNUZXh0KG1fZGF0YSA/IFRleHRSZXNvdXJjZURl
Y29kZXI6OmNyZWF0ZShBU0NJSUxpdGVyYWwoInRleHQvcGxhaW4iKSwgIlVURi04IiktPmRlY29k
ZUFuZEZsdXNoKG1fZGF0YS0+ZGF0YSgpLCBtX2RhdGEtPnNpemUoKSk6IFN0cmluZygpKTsKLSAg
ICBtX2RhdGEgPSBudWxscHRyOwotCiAgICAgbV9jbGllbnQuZGlkU3VjY2VlZCgpOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyLmgKaW5kZXggZDQ3M2ZmMTc0
NTFmY2E1YzFhNzEzZmI1NDNiZDBiNmEwYjFkZTAyYi4uZGJiODJmYmViZDU1OWU3N2QxY2UxYjYx
NmJjNmQwYjRmMWFlZjNjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRj
aC9GZXRjaExvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hM
b2FkZXIuaApAQCAtMjYsMTIgKzI2LDExIEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5k
ZWYgRmV0Y2hMb2FkZXJfaAotI2RlZmluZSBGZXRjaExvYWRlcl9oCisjcHJhZ21hIG9uY2UKIAog
I2lmIEVOQUJMRShGRVRDSF9BUEkpCiAKLSNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKKyNpbmNs
dWRlICJGZXRjaEJvZHlDb25zdW1lci5oIgogI2luY2x1ZGUgIlRocmVhZGFibGVMb2FkZXIuaCIK
ICNpbmNsdWRlICJUaHJlYWRhYmxlTG9hZGVyQ2xpZW50LmgiCiAKQEAgLTQ0LDkgKzQzLDcgQEAg
Y2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKIAogY2xhc3MgRmV0Y2hMb2FkZXIgZmluYWwg
OiBwdWJsaWMgVGhyZWFkYWJsZUxvYWRlckNsaWVudCB7CiBwdWJsaWM6Ci0gICAgZW51bSBjbGFz
cyBUeXBlIHsgQXJyYXlCdWZmZXIsIFN0cmVhbSwgVGV4dCB9OwotCi0gICAgRmV0Y2hMb2FkZXIo
VHlwZSwgRmV0Y2hMb2FkZXJDbGllbnQmKTsKKyAgICBGZXRjaExvYWRlcihGZXRjaExvYWRlckNs
aWVudCYsIEZldGNoQm9keUNvbnN1bWVyKik7CiAKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBz
dGFydFN0cmVhbWluZygpOwogCkBAIC02MywxOCArNjAsMTMgQEAgcHJpdmF0ZToKICAgICB2b2lk
IGRpZEZpbmlzaExvYWRpbmcodW5zaWduZWQgbG9uZywgZG91YmxlKSBmaW5hbDsKICAgICB2b2lk
IGRpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYpIGZpbmFsOwogCi0gICAgVHlwZSB0eXBlKCkg
Y29uc3QgeyByZXR1cm4gbV90eXBlOyB9Ci0KIHByaXZhdGU6Ci0gICAgVHlwZSBtX3R5cGUgeyBU
eXBlOjpBcnJheUJ1ZmZlciB9OwogICAgIEZldGNoTG9hZGVyQ2xpZW50JiBtX2NsaWVudDsKICAg
ICBSZWZQdHI8VGhyZWFkYWJsZUxvYWRlcj4gbV9sb2FkZXI7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gbV9kYXRhOworICAgIEZldGNoQm9keUNvbnN1bWVyKiBtX2NvbnN1bWVyOwogICAgIGJv
b2wgbV9pc1N0YXJ0ZWQgeyBmYWxzZSB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQog
CiAjZW5kaWYgLy8gRU5BQkxFKEZFVENIX0FQSSkKLQotI2VuZGlmIC8vIEZldGNoTG9hZGVyX2gK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXJDbGll
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXJDbGllbnQuaApp
bmRleCBkMDlmYWQ1M2UyN2U2ZDhhYzIyYWRiN2NhOWY0NTEwMjc4ZGE0MTUwLi5lODhlOTk0MThj
ZDk5MTRhMWVlNDgxODc3ZDYxYWRjYjZlMDRlYWY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlckNsaWVudC5oCkBAIC00Nyw4ICs0Nyw2IEBAIHB1Ymxp
YzoKIAogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYpIHsgfQogCi0gICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWRpbmdBc1RleHQo
U3RyaW5nJiYpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hMb2FkaW5nQXNBcnJheUJ1
ZmZlcihSZWZQdHI8SlNDOjpBcnJheUJ1ZmZlcj4mJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRp
ZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIqLCBzaXplX3QpIHsgfQogCiAgICAgdmlydHVhbCB2b2lk
IGRpZFN1Y2NlZWQoKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Zl
dGNoL0ZldGNoUmVzcG9uc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRj
aFJlc3BvbnNlLmNwcAppbmRleCA2MTc4ODI2ZjhlNTYyY2VlODIwOGZmMmRjNWQ1Zjk3NzM5YjI3
ZTM3Li4zOThlODY4NzE4ZDg2NjQ4MDU3MTI0NTBhNWJhYjVjN2M0YjA0MTRiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAKQEAgLTM0LDYgKzM0
LDcgQEAKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCiAjaW5jbHVkZSAiRmV0Y2hSZXF1ZXN0
LmgiCiAjaW5jbHVkZSAiSFRUUFBhcnNlcnMuaCIKKyNpbmNsdWRlICJKU0Jsb2IuaCIKICNpbmNs
dWRlICJKU0ZldGNoUmVzcG9uc2UuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0
LmgiCiAKQEAgLTkzLDEzICs5NCwxMSBAQCBGZXRjaFJlc3BvbnNlOjpGZXRjaFJlc3BvbnNlKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIEZldGNoQm9keSYmIGJvZHksCiB7CiB9CiAK
LVJlZlB0cjxGZXRjaFJlc3BvbnNlPiBGZXRjaFJlc3BvbnNlOjpjbG9uZShTY3JpcHRFeGVjdXRp
b25Db250ZXh0JiBjb250ZXh0LCBFeGNlcHRpb25Db2RlJiBlYykKK1JlZjxGZXRjaFJlc3BvbnNl
PiBGZXRjaFJlc3BvbnNlOjpjbG9uZUZvckpTKCkKIHsKLSAgICBpZiAoaXNEaXN0dXJiZWQoKSkg
ewotICAgICAgICBlYyA9IFR5cGVFcnJvcjsKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAg
fQotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZldGNoUmVzcG9uc2UoY29udGV4dCwgRmV0Y2hC
b2R5KG1fYm9keSksIEZldGNoSGVhZGVyczo6Y3JlYXRlKGhlYWRlcnMoKSksIFJlc291cmNlUmVz
cG9uc2UobV9yZXNwb25zZSkpKTsKKyAgICBBU1NFUlQoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
KTsKKyAgICBBU1NFUlQoIWlzRGlzdHVyYmVkKCkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IEZldGNoUmVzcG9uc2UoKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgRmV0Y2hCb2R5KG1fYm9k
eSksIEZldGNoSGVhZGVyczo6Y3JlYXRlKGhlYWRlcnMoKSksIFJlc291cmNlUmVzcG9uc2UobV9y
ZXNwb25zZSkpKTsKIH0KIAogdm9pZCBGZXRjaFJlc3BvbnNlOjpzdGFydEZldGNoaW5nKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZldGNoUmVxdWVzdCYgcmVxdWVzdCwg
RmV0Y2hQcm9taXNlJiYgcHJvbWlzZSkKQEAgLTE1NCw2ICsxNTMsOCBAQCB2b2lkIEZldGNoUmVz
cG9uc2U6OkJvZHlMb2FkZXI6OmRpZFN1Y2NlZWQoKQogICAgICAgICBtX3Jlc3BvbnNlLm1fcmVh
ZGFibGVTdHJlYW1Tb3VyY2UgPSBudWxscHRyOwogICAgIH0KICNlbmRpZgorICAgIG1fcmVzcG9u
c2UubV9ib2R5LmxvYWRpbmdTdWNjZWVkZWQoKTsKKwogICAgIGlmIChtX2xvYWRlci0+aXNTdGFy
dGVkKCkpCiAgICAgICAgIG1fcmVzcG9uc2UubV9ib2R5TG9hZGVyID0gTnVsbG9wdDsKICAgICBt
X3Jlc3BvbnNlLnVuc2V0UGVuZGluZ0FjdGl2aXR5KCZtX3Jlc3BvbnNlKTsKQEAgLTIxMSwxNCAr
MjEyLDkgQEAgdm9pZCBGZXRjaFJlc3BvbnNlOjpCb2R5TG9hZGVyOjpkaWRSZWNlaXZlRGF0YShj
b25zdCBjaGFyKiBkYXRhLCBzaXplX3Qgc2l6ZSkKICNlbmRpZgogfQogCi12b2lkIEZldGNoUmVz
cG9uc2U6OkJvZHlMb2FkZXI6OmRpZEZpbmlzaExvYWRpbmdBc0FycmF5QnVmZmVyKFJlZlB0cjxB
cnJheUJ1ZmZlcj4mJiBidWZmZXIpCi17Ci0gICAgbV9yZXNwb25zZS5ib2R5KCkubG9hZGVkQXNB
cnJheUJ1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpOwotfQotCiBib29sIEZldGNoUmVzcG9uc2U6OkJv
ZHlMb2FkZXI6OnN0YXJ0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZl
dGNoUmVxdWVzdCYgcmVxdWVzdCkKIHsKLSAgICBtX2xvYWRlciA9IHN0ZDo6bWFrZV91bmlxdWU8
RmV0Y2hMb2FkZXI+KEZldGNoTG9hZGVyOjpUeXBlOjpBcnJheUJ1ZmZlciwgKnRoaXMpOworICAg
IG1fbG9hZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxGZXRjaExvYWRlcj4oKnRoaXMsICZtX3Jlc3Bv
bnNlLm1fYm9keS5jb25zdW1lcigpKTsKICAgICBtX2xvYWRlci0+c3RhcnQoY29udGV4dCwgcmVx
dWVzdCk7CiAgICAgcmV0dXJuIG1fbG9hZGVyLT5pc1N0YXJ0ZWQoKTsKIH0KQEAgLTIyOSw3ICsy
MjUsNDYgQEAgdm9pZCBGZXRjaFJlc3BvbnNlOjpCb2R5TG9hZGVyOjpzdG9wKCkKICAgICAgICAg
bV9sb2FkZXItPnN0b3AoKTsKIH0KIAordm9pZCBGZXRjaFJlc3BvbnNlOjpjb25zdW1lKHVuc2ln
bmVkIHR5cGUsIERlZmVycmVkV3JhcHBlciYmIHdyYXBwZXIpCit7CisgICAgQVNTRVJUKHR5cGUg
PD0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEZldGNoQm9keUNvbnN1bWVyOjpUeXBlOjpUZXh0KSk7
CisKKyAgICBzd2l0Y2ggKHN0YXRpY19jYXN0PEZldGNoQm9keUNvbnN1bWVyOjpUeXBlPih0eXBl
KSkgeworICAgIGNhc2UgRmV0Y2hCb2R5Q29uc3VtZXI6OlR5cGU6OkFycmF5QnVmZmVyOgorICAg
ICAgICBhcnJheUJ1ZmZlcihXVEZNb3ZlKHdyYXBwZXIpKTsKKyAgICAgICAgcmV0dXJuOworICAg
IGNhc2UgRmV0Y2hCb2R5Q29uc3VtZXI6OlR5cGU6OkJsb2I6CisgICAgICAgIGJsb2IoV1RGTW92
ZSh3cmFwcGVyKSk7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIEZldGNoQm9keUNvbnN1bWVy
OjpUeXBlOjpKU09OOgorICAgICAgICBqc29uKFdURk1vdmUod3JhcHBlcikpOworICAgICAgICBy
ZXR1cm47CisgICAgY2FzZSBGZXRjaEJvZHlDb25zdW1lcjo6VHlwZTo6VGV4dDoKKyAgICAgICAg
dGV4dChXVEZNb3ZlKHdyYXBwZXIpKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgRmV0Y2hC
b2R5Q29uc3VtZXI6OlR5cGU6Ok5vbmU6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorfQorCiAjaWYgRU5BQkxFKFNUUkVBTVNfQVBJKQordm9p
ZCBGZXRjaFJlc3BvbnNlOjpzdGFydENvbnN1bWluZ1N0cmVhbSh1bnNpZ25lZCB0eXBlKQorewor
ICAgIG1faXNEaXN0dXJiZWQgPSB0cnVlOworICAgIG1fY29uc3VtZXIuc2V0VHlwZShzdGF0aWNf
Y2FzdDxGZXRjaEJvZHlDb25zdW1lcjo6VHlwZT4odHlwZSkpOworfQorCit2b2lkIEZldGNoUmVz
cG9uc2U6OmNvbnN1bWVDaHVuayhSZWY8SlNDOjpVaW50OEFycmF5PiYmIGNodW5rKQoreworICAg
IG1fY29uc3VtZXIuYXBwZW5kKGNodW5rLT5kYXRhKCksIGNodW5rLT5ieXRlTGVuZ3RoKCkpOwor
fQorCit2b2lkIEZldGNoUmVzcG9uc2U6OmZpbmlzaENvbnN1bWluZ1N0cmVhbShEZWZlcnJlZFdy
YXBwZXImJiBwcm9taXNlKQoreworICAgIG1fY29uc3VtZXIucmVzb2x2ZShwcm9taXNlKTsKK30K
Kwogdm9pZCBGZXRjaFJlc3BvbnNlOjpjb25zdW1lQm9keUFzU3RyZWFtKCkKIHsKICAgICBBU1NF
UlQobV9yZWFkYWJsZVN0cmVhbVNvdXJjZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0
Y2gvRmV0Y2hSZXNwb25zZS5oCmluZGV4IGZjNjI3MWQzOGNmYjU1OTI0ZmMzNDU1OGM0OWE3ZjA0
NWUzMzkyMGMuLmM2ZDk3M2U0MTQzODBkNTBhODcyNGE4OGVkZTM5NTg1ZmJhNzQ0NDcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5oCkBAIC0zMyw2ICsz
Myw3IEBACiAjaW5jbHVkZSAiRmV0Y2hCb2R5T3duZXIuaCIKICNpbmNsdWRlICJGZXRjaEhlYWRl
cnMuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlc3BvbnNlLmgiCisjaW5jbHVkZSA8cnVudGltZS9U
eXBlZEFycmF5cy5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIGNsYXNzIEFycmF5QnVmZmVyOwpAQCAt
NjAsNiArNjEsMTIgQEAgcHVibGljOgogICAgIHN0YXRpYyB2b2lkIGZldGNoKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQmLCBGZXRjaFJlcXVlc3QmLCBjb25zdCBEaWN0aW9uYXJ5JiwgRmV0Y2hQcm9t
aXNlJiYpOwogICAgIHN0YXRpYyB2b2lkIGZldGNoKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBj
b25zdCBTdHJpbmcmLCBjb25zdCBEaWN0aW9uYXJ5JiwgRmV0Y2hQcm9taXNlJiYpOwogCisgICAg
dm9pZCBjb25zdW1lKHVuc2lnbmVkLCBEZWZlcnJlZFdyYXBwZXImJik7CisjaWYgRU5BQkxFKFNU
UkVBTVNfQVBJKQorICAgIHZvaWQgc3RhcnRDb25zdW1pbmdTdHJlYW0odW5zaWduZWQpOworICAg
IHZvaWQgY29uc3VtZUNodW5rKFJlZjxKU0M6OlVpbnQ4QXJyYXk+JiYpOworICAgIHZvaWQgZmlu
aXNoQ29uc3VtaW5nU3RyZWFtKERlZmVycmVkV3JhcHBlciYmKTsKKyNlbmRpZgogCiAgICAgdm9p
ZCBzZXRTdGF0dXMoaW50LCBjb25zdCBTdHJpbmcmLCBFeGNlcHRpb25Db2RlJik7CiAgICAgdm9p
ZCBpbml0aWFsaXplV2l0aChKU0M6OkV4ZWNTdGF0ZSYsIEpTQzo6SlNWYWx1ZSk7CkBAIC03Miw3
ICs3OSw3IEBAIHB1YmxpYzoKICAgICBjb25zdCBTdHJpbmcmIHN0YXR1c1RleHQoKSBjb25zdCB7
IHJldHVybiBtX3Jlc3BvbnNlLmh0dHBTdGF0dXNUZXh0KCk7IH0KIAogICAgIEZldGNoSGVhZGVy
cyYgaGVhZGVycygpIHsgcmV0dXJuIG1faGVhZGVyczsgfQotICAgIFJlZlB0cjxGZXRjaFJlc3Bv
bnNlPiBjbG9uZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgRXhjZXB0aW9uQ29kZSYpOworICAg
IFJlZjxGZXRjaFJlc3BvbnNlPiBjbG9uZUZvckpTKCk7CiAKICNpZiBFTkFCTEUoU1RSRUFNU19B
UEkpCiAgICAgUmVhZGFibGVTdHJlYW1Tb3VyY2UqIGNyZWF0ZVJlYWRhYmxlU3RyZWFtU291cmNl
KCk7CkBAIC0xMDcsNyArMTE0LDYgQEAgcHJpdmF0ZToKICAgICAgICAgdm9pZCBkaWRGYWlsKCkg
ZmluYWw7CiAgICAgICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmKSBmaW5hbDsKICAgICAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBjaGFyKiwg
c2l6ZV90KSBmaW5hbDsKLSAgICAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nQXNBcnJheUJ1ZmZl
cihSZWZQdHI8QXJyYXlCdWZmZXI+JiYpIGZpbmFsOwogCiAgICAgICAgIEZldGNoUmVzcG9uc2Um
IG1fcmVzcG9uc2U7CiAgICAgICAgIE9wdGlvbmFsPEZldGNoUHJvbWlzZT4gbV9wcm9taXNlOwpA
QCAtMTE4LDYgKzEyNCw4IEBAIHByaXZhdGU6CiAgICAgUmVmPEZldGNoSGVhZGVycz4gbV9oZWFk
ZXJzOwogICAgIE9wdGlvbmFsPEJvZHlMb2FkZXI+IG1fYm9keUxvYWRlcjsKICAgICBtdXRhYmxl
IFN0cmluZyBtX3Jlc3BvbnNlVVJMOworCisgICAgRmV0Y2hCb2R5Q29uc3VtZXIgbV9jb25zdW1l
ciB7IEZldGNoQm9keUNvbnN1bWVyOjpUeXBlOjpBcnJheUJ1ZmZlciAgfTsKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0
Y2gvRmV0Y2hSZXNwb25zZS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNo
UmVzcG9uc2UuaWRsCmluZGV4IDNmYjE0ODgxNDM1NGNlN2QxZjg0MDE4MGJjOTkwZGZiMjNkMGE5
MmIuLmJlM2MyY2UwMjkzN2Y2MjM4Zjg2NWQ5MjE5MjI2YjZmYjFkMTcwMWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5pZGwKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmlkbApAQCAtNTMsMTEgKzUz
LDI1IEBAIGludGVyZmFjZSBGZXRjaFJlc3BvbnNlIHsKICAgICByZWFkb25seSBhdHRyaWJ1dGUg
RmV0Y2hIZWFkZXJzIGhlYWRlcnM7CiAgICAgW0pTQnVpbHRpbl0gcmVhZG9ubHkgYXR0cmlidXRl
IFJlYWRhYmxlU3RyZWFtPyBib2R5OwogCi0gICAgW05ld09iamVjdCwgQ2FsbFdpdGg9U2NyaXB0
RXhlY3V0aW9uQ29udGV4dCwgUmFpc2VzRXhjZXB0aW9uXSBGZXRjaFJlc3BvbnNlIGNsb25lKCk7
CisgICAgLy8gQ29weSBvZiBGZXRjaEJvZHkgSURMIGFzIHdlIHdhbnQgdG8gaW1wbGVtZW50IHNv
bWUgb2YgdGhlc2UgYXMgYnVpbHQtaW5zLgorICAgIFtJbXBsZW1lbnRlZEFzPWlzRGlzdHVyYmVk
XSByZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVhbiBib2R5VXNlZDsKKyAgICBbSlNCdWlsdGluXSBQ
cm9taXNlIGFycmF5QnVmZmVyKCk7CisgICAgW0pTQnVpbHRpbl0gUHJvbWlzZSBibG9iKCk7Cisg
ICAgW0pTQnVpbHRpbl0gUHJvbWlzZSBmb3JtRGF0YSgpOworICAgIFtKU0J1aWx0aW5dIFByb21p
c2UganNvbigpOworICAgIFtKU0J1aWx0aW5dIFByb21pc2UgdGV4dCgpOwogCisgICAgW0pTQnVp
bHRpbl0gRmV0Y2hSZXNwb25zZSBjbG9uZSgpOworCisgICAgW1ByaXZhdGVJZGVudGlmaWVyLCBO
ZXdPYmplY3RdIEZldGNoUmVzcG9uc2UgY2xvbmVGb3JKUygpOworCisgICAgW0NvbmRpdGlvbmFs
PVNUUkVBTVNfQVBJLCBQcml2YXRlSWRlbnRpZmllcl0gdm9pZCBzdGFydENvbnN1bWluZ1N0cmVh
bSh1bnNpZ25lZCBzaG9ydCB0eXBlKTsKKyAgICBbQ29uZGl0aW9uYWw9U1RSRUFNU19BUEksIFBy
aXZhdGVJZGVudGlmaWVyXSB2b2lkIGNvbnN1bWVDaHVuayhVaW50OEFycmF5IGNodW5rKTsKKyAg
ICBbQ29uZGl0aW9uYWw9U1RSRUFNU19BUEksIFByaXZhdGVJZGVudGlmaWVyXSBQcm9taXNlIGZp
bmlzaENvbnN1bWluZ1N0cmVhbSgpOworCisgICAgW1ByaXZhdGVJZGVudGlmaWVyXSBQcm9taXNl
IGNvbnN1bWUodW5zaWduZWQgc2hvcnQgdHlwZSk7CiAgICAgW1ByaXZhdGVJZGVudGlmaWVyLCBS
YWlzZXNFeGNlcHRpb25dIHZvaWQgc2V0U3RhdHVzKHVuc2lnbmVkIHNob3J0IHN0YXR1cywgRE9N
U3RyaW5nIHN0YXR1c1RleHQpOwogICAgIFtDYWxsV2l0aD1TY3JpcHRTdGF0ZSwgUHJpdmF0ZUlk
ZW50aWZpZXJdIHZvaWQgaW5pdGlhbGl6ZVdpdGgoYW55IGJvZHkpOwogICAgIFtQcml2YXRlSWRl
bnRpZmllciwgTmV3T2JqZWN0XSBSZWFkYWJsZVN0cmVhbVNvdXJjZSBjcmVhdGVSZWFkYWJsZVN0
cmVhbVNvdXJjZSgpOwogICAgIFtQcml2YXRlSWRlbnRpZmllcl0gYm9vbGVhbiBpc0Rpc3R1cmJl
ZCgpOwogfTsKLUZldGNoUmVzcG9uc2UgaW1wbGVtZW50cyBGZXRjaEJvZHk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuanMgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuanMKaW5kZXggYzRhY2MwMTAxMWY0
YzFlZTYzNzBkYzMzNDEzMzlkYjY4NTgxOTAzZS4uMmRhOWFjMmNjZjBlZWNmYzlhOTE5NGJkMTcx
ZTA3OTVlZDkwMzJjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9G
ZXRjaFJlc3BvbnNlLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hS
ZXNwb25zZS5qcwpAQCAtNDgsNiArNDgsMTIgQEAgZnVuY3Rpb24gaW5pdGlhbGl6ZUZldGNoUmVz
cG9uc2UoYm9keSwgaW5pdCkKICAgICBpZiAoYm9keSAhPT0gQHVuZGVmaW5lZCAmJiBib2R5ICE9
PSBudWxsKSB7CiAgICAgICAgIGlmIChzdGF0dXMgPT0gMTAxIHx8IHN0YXR1cyA9PSAyMDQgfHwg
c3RhdHVzID09IDIwNSB8fCBzdGF0dXMgPT0gMzA0KQogICAgICAgICAgICAgdGhyb3cgbmV3IEBU
eXBlRXJyb3IoIlJlc3BvbnNlIGNhbm5vdCBoYXZlIGEgYm9keSB3aXRoIHRoZSBnaXZlbiBzdGF0
dXMiKTsKKworICAgICAgICAvLyBGSVhNRTogVXNlIEBpc1JlYWRhYmxlU3RyZWFtIG9uY2UgaXQg
aXMgbm8gbG9uZ2VyIGd1YXJkZWQgYnkgU1RSRUFNU19BUEkgZ3VhcmQuCisgICAgICAgIGxldCBp
c0JvZHlSZWFkYWJsZVN0cmVhbSA9IChAaXNPYmplY3QoYm9keSkgJiYgISFib2R5LkB1bmRlcmx5
aW5nU291cmNlKTsKKyAgICAgICAgaWYgKGlzQm9keVJlYWRhYmxlU3RyZWFtKQorICAgICAgICAg
IHRoaXMuQGJvZHkgPSBib2R5OworCiAgICAgICAgIHRoaXMuQGluaXRpYWxpemVXaXRoKGJvZHkp
OwogICAgIH0KIApAQCAtNjgsMyArNzQsNzMgQEAgZnVuY3Rpb24gYm9keSgpCiAgICAgfQogICAg
IHJldHVybiB0aGlzLkBib2R5OwogfQorCitmdW5jdGlvbiBjbG9uZSgpCit7CisgICAgaWYgKCF0
aGlzIGluc3RhbmNlb2YgQFJlc3BvbnNlKQorICAgICAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcigi
RnVuY3Rpb24gc2hvdWxkIGJlIGNhbGxlZCBvbiBhIFJlc3BvbnNlIik7CisKKyAgICBpZiAoQFJl
c3BvbnNlLnByb3RvdHlwZS5AaXNEaXN0dXJiZWQuQGNhbGwodGhpcykpCisgICAgICAgIHRocm93
IG5ldyBAVHlwZUVycm9yKCJDYW5ub3QgY2xvbmUgYSBkaXN0dXJiZWQgUmVzcG9uc2UiKTsKKwor
ICAgIHZhciBjbG9uZWQgPSBAUmVzcG9uc2UucHJvdG90eXBlLkBjbG9uZUZvckpTLkBjYWxsKHRo
aXMpOworICAgIGlmICh0aGlzLkBib2R5KSB7CisgICAgICAgIHZhciB0ZWVkUmVhZGFibGVTdHJl
YW1zID0gQHRlZVJlYWRhYmxlU3RyZWFtKHRoaXMuQGJvZHksIGZhbHNlKTsKKyAgICAgICAgdGhp
cy5AYm9keSA9IHRlZWRSZWFkYWJsZVN0cmVhbXNbMF07CisgICAgICAgIGNsb25lZC5AYm9keSA9
IHRlZWRSZWFkYWJsZVN0cmVhbXNbMV07CisgICAgfQorICAgIHJldHVybiBjbG9uZWQ7Cit9CisK
Ky8vIGNvbnN1bWUgYW5kIGNvbnN1bWVTdHJlYW0gc2luZ2xlIHBhcmFtZXRlciBzaG91bGQgYmUg
a2VwdCBpbiBzeW5jIHdpdGggRmV0Y2hCb2R5OjpDb25zdW1lclR5cGUuCitmdW5jdGlvbiBhcnJh
eUJ1ZmZlcigpCit7CisgICAgaWYgKCF0aGlzIGluc3RhbmNlb2YgQFJlc3BvbnNlKQorICAgICAg
ICB0aHJvdyBuZXcgQFR5cGVFcnJvcigiRnVuY3Rpb24gc2hvdWxkIGJlIGNhbGxlZCBvbiBhIFJl
c3BvbnNlIik7CisKKyAgICBpZiAoIXRoaXMuQGJvZHkpCisgICAgICAgIHJldHVybiBAUmVzcG9u
c2UucHJvdG90eXBlLkBjb25zdW1lLkBjYWxsKHRoaXMsIDEpOworCisgICAgcmV0dXJuIEBjb25z
dW1lU3RyZWFtKHRoaXMsIDEpOworfQorCitmdW5jdGlvbiBibG9iKCkKK3sKKyAgICBpZiAoIXRo
aXMgaW5zdGFuY2VvZiBAUmVzcG9uc2UpCisgICAgICAgIHRocm93IG5ldyBAVHlwZUVycm9yKCJG
dW5jdGlvbiBzaG91bGQgYmUgY2FsbGVkIG9uIGEgUmVzcG9uc2UiKTsKKworICAgIGlmICghdGhp
cy5AYm9keSkKKyAgICAgICAgcmV0dXJuIEBSZXNwb25zZS5wcm90b3R5cGUuQGNvbnN1bWUuQGNh
bGwodGhpcywgMik7CisKKyAgICByZXR1cm4gQGNvbnN1bWVTdHJlYW0odGhpcywgMik7Cit9CisK
K2Z1bmN0aW9uIGZvcm1EYXRhKCkKK3sKKyAgICBpZiAoIXRoaXMgaW5zdGFuY2VvZiBAUmVzcG9u
c2UpCisgICAgICAgIHRocm93IG5ldyBAVHlwZUVycm9yKCJGdW5jdGlvbiBzaG91bGQgYmUgY2Fs
bGVkIG9uIGEgUmVzcG9uc2UiKTsKKworICAgIHJldHVybiBAUHJvbWlzZS5AcmVqZWN0KCJOb3Qg
aW1wbGVtZW50ZWQiKTsKK30KKworZnVuY3Rpb24ganNvbigpCit7CisgICAgaWYgKCF0aGlzIGlu
c3RhbmNlb2YgQFJlc3BvbnNlKQorICAgICAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcigiRnVuY3Rp
b24gc2hvdWxkIGJlIGNhbGxlZCBvbiBhIFJlc3BvbnNlIik7CisKKyAgICBpZiAoIXRoaXMuQGJv
ZHkpCisgICAgICAgIHJldHVybiBAUmVzcG9uc2UucHJvdG90eXBlLkBjb25zdW1lLkBjYWxsKHRo
aXMsIDMpOworCisgICAgcmV0dXJuIEBjb25zdW1lU3RyZWFtKHRoaXMsIDMpOworfQorCitmdW5j
dGlvbiB0ZXh0KCkKK3sKKyAgICBpZiAoIXRoaXMgaW5zdGFuY2VvZiBAUmVzcG9uc2UpCisgICAg
ICAgIHRocm93IG5ldyBAVHlwZUVycm9yKCJGdW5jdGlvbiBzaG91bGQgYmUgY2FsbGVkIG9uIGEg
UmVzcG9uc2UiKTsKKworICAgIGlmICghdGhpcy5AYm9keSkKKyAgICAgICAgcmV0dXJuIEBSZXNw
b25zZS5wcm90b3R5cGUuQGNvbnN1bWUuQGNhbGwodGhpcywgNCk7CisKKyAgICByZXR1cm4gQGNv
bnN1bWVTdHJlYW0odGhpcywgNCk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNGY1ZThiZjMwMzcxZGU2MTQ3MTk2OGIwOWIy
N2FlZTM0N2VlNzY0Ny4uMzRjNGJiYTM0YTg1M2U2OGE0ZDQyOWFmZDkwNmNjYjIzNzQ1OGUwZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agpAQCAtMTYzMSw2ICsxNjMxLDcgQEAKIAkJNDFCRjcwMEYwRkU4NkY2MTAwNUU4REVDIC8qIFBs
YXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQxQkY3MDBEMEZFODZGNjEwMDVFOERFQyAvKiBQbGF0Zm9ybU1l
c3NhZ2VQb3J0Q2hhbm5lbC5jcHAgKi87IH07CiAJCTQxQkY3MDEwMEZFODZGNjEwMDVFOERFQyAv
KiBQbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDFCRjcwMEUwRkU4NkY2MTAwNUU4REVDIC8qIFBsYXRmb3Jt
TWVzc2FnZVBvcnRDaGFubmVsLmggKi87IH07CiAJCTQxQzc2MEIxMEVERTAzRDMwMEMxNjU1RiAv
KiBTY3JpcHRTdGF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDFDNzYwQjAwRURFMDNEMzAwQzE2NTVGIC8qIFNjcmlwdFN0YXRlLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNDFDRjhCRTcxRDQ2MjI2
NzAwNzA3REM5IC8qIEZldGNoQm9keUNvbnN1bWVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxQ0Y4QkU0MUQ0NjIyMjAwMDcwN0RDOSAvKiBGZXRj
aEJvZHlDb25zdW1lci5jcHAgKi87IH07CiAJCTQxRDAxNUNBMEY0QjVDNzEwMDRBNjYyRiAvKiBD
b250ZW50VHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDFEMDE1QzgwRjRCNUM3MTAwNEE2NjJGIC8qIENvbnRlbnRUeXBlLmggKi87IH07CiAJCTQx
RDAxNUNCMEY0QjVDNzEwMDRBNjYyRiAvKiBDb250ZW50VHlwZS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUQwMTVDOTBGNEI1QzcxMDA0QTY2MkYg
LyogQ29udGVudFR5cGUuY3BwICovOyB9OwogCQk0MUUxQjFEMDBGRjU5ODY5MDA1NzZCM0IgLyog
QWJzdHJhY3RXb3JrZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDFFMUIxQ0EwRkY1OTg2OTAwNTc2QjNCIC8qIEFic3RyYWN0V29ya2VyLmNwcCAq
LzsgfTsKQEAgLTY5MDYsOCArNjkwNyw4IEBACiAJCUY5OEZGRjQ1MTFBMjY3NjIwMEY1NDhFOCAv
KiBDU1NPTVV0aWxzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBGOThGRkY0MzExQTI2NzYyMDBGNTQ4RTggLyogQ1NTT01VdGlscy5oICovOyB9OwogCQlG
OUYwRUQ3QTBEQjUwQ0EyMDBEMTZEQjkgLyogWE1MSHR0cFJlcXVlc3RQcm9ncmVzc0V2ZW50Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGOUYwRUQ3NzBE
QjUwQ0EyMDBEMTZEQjkgLyogWE1MSHR0cFJlcXVlc3RQcm9ncmVzc0V2ZW50LmggKi87IH07CiAJ
CUZBNjU0QTZCMTEwOEFCRUQwMDI2MTVFMCAvKiBNYXRoTUxUZXh0RWxlbWVudC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGQTY1NEE2OTExMDhBQkVE
MDAyNjE1RTAgLyogTWF0aE1MVGV4dEVsZW1lbnQuY3BwICovOyB9OwotCQlGQTY1NEE2QzExMDhB
QkVEMDAyNjE1RTAgLyogTWF0aE1MVGV4dEVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZBNjU0QTZBMTEwOEFCRUQwMDI2MTVFMCAvKiBNYXRo
TUxUZXh0RWxlbWVudC5oICovOyB9OwogCQlGQTY1NEE2QjExMDhBQkVEMDAyNjI2RjEgLyogTWF0
aE1MVW5kZXJPdmVyRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBGQTY1NEE2OTExMDhBQkVEMDAyNjI2RjEgLyogTWF0aE1MVW5kZXJPdmVy
RWxlbWVudC5jcHAgKi87IH07CisJCUZBNjU0QTZDMTEwOEFCRUQwMDI2MTVFMCAvKiBNYXRoTUxU
ZXh0RWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRkE2NTRBNkExMTA4QUJFRDAwMjYxNUUwIC8qIE1hdGhNTFRleHRFbGVtZW50LmggKi87IH07
CiAJCUZBNjU0QTZDMTEwOEFCRUQwMDI2MjZGMSAvKiBNYXRoTUxVbmRlck92ZXJFbGVtZW50Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGQTY1NEE2QTEx
MDhBQkVEMDAyNjI2RjEgLyogTWF0aE1MVW5kZXJPdmVyRWxlbWVudC5oICovOyB9OwogCQlGQUJF
NzJGNDEwNTlDMUVCMDBEOTk5REQgLyogTWF0aE1MRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGQUJFNzJFRDEwNTlDMUVCMDBEOTk5REQg
LyogTWF0aE1MRWxlbWVudC5jcHAgKi87IH07CiAJCUZBQkU3MkY1MTA1OUMxRUIwMEQ5OTlERCAv
KiBNYXRoTUxFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBGQUJFNzJFRTEwNTlDMUVCMDBEOTk5REQgLyogTWF0aE1MRWxlbWVudC5oICovOyB9
OwpAQCAtOTIxNSw2ICs5MjE2LDkgQEAKIAkJNDFCRjcwMEQwRkU4NkY2MTAwNUU4REVDIC8qIFBs
YXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgbmFtZSA9IFBsYXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsLmNwcDsgcGF0aCA9IGRlZmF1bHQv
UGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWwuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk0MUJGNzAwRTBGRTg2RjYxMDA1RThERUMgLyogUGxhdGZvcm1NZXNzYWdlUG9ydENoYW5u
ZWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gUGxhdGZvcm1NZXNzYWdlUG9y
dENoYW5uZWwuaDsgcGF0aCA9IGRlZmF1bHQvUGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWwuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFDNzYwQjAwRURFMDNEMzAwQzE2NTVGIC8q
IFNjcmlwdFN0YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcmlwdFN0
YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxQ0Y4QkU0MUQ0NjIyMjAwMDcw
N0RDOSAvKiBGZXRjaEJvZHlDb25zdW1lci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBGZXRjaEJvZHlDb25zdW1lci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTQxQ0Y4QkU1MUQ0NjIyMjAwMDcwN0RDOSAvKiBGZXRjaEJvZHlDb25zdW1lci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGZXRjaEJvZHlDb25zdW1lci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MUNGOEJFNjFENDYyMjJDMDA3MDdEQzkgLyogRmV0
Y2hJbnRlcm5hbHMuanMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmphdmFzY3JpcHQ7IHBhdGggPSBG
ZXRjaEludGVybmFscy5qczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFEMDE1Qzgw
RjRCNUM3MTAwNEE2NjJGIC8qIENvbnRlbnRUeXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IENvbnRlbnRUeXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQx
RDAxNUM5MEY0QjVDNzEwMDRBNjYyRiAvKiBDb250ZW50VHlwZS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDb250ZW50VHlwZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTQxRTFCMUNBMEZGNTk4NjkwMDU3NkIzQiAvKiBBYnN0cmFjdFdvcmtlci5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBYnN0cmFjdFdvcmtlci5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMzQwOCw4ICsxMzQxMiw4IEBACiAJ
CUI1N0NCNTJDMTgyQTNFRUQwMDc5QTY0NyAvKiBJbmxpbmVFbGVtZW50Qm94LmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IElubGluZUVsZW1lbnRCb3guY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCNTk1RkY0NjE4MjRDRUUzMDBGRjUxQ0QgLyogUmVu
ZGVySXRlcmF0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVuZGVySXRl
cmF0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjU5Q0E1OUFGMTcwRDhGQUE1
QjhDOUFEIC8qIE1hdGhNTFNjcmlwdHNFbGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IE1hdGhNTFNjcmlwdHNFbGVtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJQjU5Q0E4NDlENDFFNkY2NUQ4MTE5N0FCIC8qIE1hdGhNTFNjcmlwdHNF
bGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1hdGhNTFNjcmlwdHNF
bGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUI1OUNBNTlBRjE3MEQ4RkFB
NUI4Q0FCRSAvKiBNYXRoTUxQYWRkZWRFbGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IE1hdGhNTFBhZGRlZEVsZW1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlCNTlDQTg0OUQ0MUU2RjY1RDgxMTk3QUIgLyogTWF0aE1MU2NyaXB0c0Vs
ZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWF0aE1MU2NyaXB0c0Vs
ZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjU5Q0E4NDlENDFFNkY2NUQ4
MTE5OEJDIC8qIE1hdGhNTFBhZGRlZEVsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gTWF0aE1MUGFkZGVkRWxlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlCNTlERDY5NzExOTAyOUU1MDA3RTk2ODQgLyogSlNEYXRhYmFzZUNhbGxiYWNrLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRGF0YWJhc2VDYWxsYmFjay5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCNTlERDY5ODExOTAyOUU1MDA3RTk2ODQgLyogSlNE
YXRhYmFzZUNhbGxiYWNrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEpTRGF0YWJhc2VDYWxsYmFjay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0x
NTA4Niw4ICsxNTA5MCw4IEBACiAJCUZBNjU0QTYzMTEwOEFCQjcwMDI2MTVFMCAvKiBtYXRobWwu
Y3NzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gdGV4dC5jc3M7IHBhdGggPSBtYXRobWwuY3NzOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlGQTY1NEE2NzExMDhBQkUyMDAyNjE1RTAgLyogbWF0aGF0dHJzLmlu
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IG1hdGhhdHRycy5pbjsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRkE2NTRBNjkxMTA4QUJFRDAwMjYxNUUwIC8qIE1hdGhNTFRleHRFbGVtZW50
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1hdGhNTFRleHRFbGVt
ZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRkE2NTRBNkExMTA4QUJFRDAw
MjYxNUUwIC8qIE1hdGhNTFRleHRFbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IE1hdGhNTFRleHRFbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUZBNjU0QTY5MTEwOEFCRUQwMDI2MjZGMSAvKiBNYXRoTUxVbmRlck92ZXJFbGVtZW50LmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1hdGhNTFVuZGVyT3ZlckVsZW1l
bnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGQTY1NEE2QTExMDhBQkVEMDAy
NjE1RTAgLyogTWF0aE1MVGV4dEVsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gTWF0aE1MVGV4dEVsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
RkE2NTRBNkExMTA4QUJFRDAwMjYyNkYxIC8qIE1hdGhNTFVuZGVyT3ZlckVsZW1lbnQuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWF0aE1MVW5kZXJPdmVyRWxlbWVudC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGQTZFNDY2RkNEMDQxOEE5OTY2QTVCNjAgLyog
RE5TUmVzb2x2ZVF1ZXVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEROU1Jl
c29sdmVRdWV1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGQUJFNzJFRDEwNTlD
MUVCMDBEOTk5REQgLyogTWF0aE1MRWxlbWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBNYXRoTUxFbGVtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTE3MDkyLDEyICsxNzA5NiwxNSBAQAogCQkJCTQxRjU0RjdEMUM1MEM0RjYwMDMzODQ4
OCAvKiBGZXRjaEJvZHkuY3BwICovLAogCQkJCTQxRjU0RjdFMUM1MEM0RjYwMDMzODQ4OCAvKiBG
ZXRjaEJvZHkuaCAqLywKIAkJCQk0MUY1NEY3RjFDNTBDNEY2MDAzMzg0ODggLyogRmV0Y2hCb2R5
LmlkbCAqLywKKwkJCQk0MUNGOEJFNDFENDYyMjIwMDA3MDdEQzkgLyogRmV0Y2hCb2R5Q29uc3Vt
ZXIuY3BwICovLAorCQkJCTQxQ0Y4QkU1MUQ0NjIyMjAwMDcwN0RDOSAvKiBGZXRjaEJvZHlDb25z
dW1lci5oICovLAogCQkJCTQxNDdFMkIzMUM4OTkxMjYwMEE3RTcxNSAvKiBGZXRjaEJvZHlPd25l
ci5jcHAgKi8sCiAJCQkJNDE0N0UyQjIxQzg4MzM3RjAwQTdFNzE1IC8qIEZldGNoQm9keU93bmVy
LmggKi8sCiAJCQkJNDFGNTRGODIxQzUwQzRGNjAwMzM4NDg4IC8qIEZldGNoSGVhZGVycy5jcHAg
Ki8sCiAJCQkJNDFGNTRGODMxQzUwQzRGNjAwMzM4NDg4IC8qIEZldGNoSGVhZGVycy5oICovLAog
CQkJCTQxRjU0Rjg0MUM1MEM0RjYwMDMzODQ4OCAvKiBGZXRjaEhlYWRlcnMuaWRsICovLAogCQkJ
CTQxRjU0Rjg1MUM1MEM0RjYwMDMzODQ4OCAvKiBGZXRjaEhlYWRlcnMuanMgKi8sCisJCQkJNDFD
RjhCRTYxRDQ2MjIyQzAwNzA3REM5IC8qIEZldGNoSW50ZXJuYWxzLmpzICovLAogCQkJCTQxNDdF
MkI0MUM4OTkxMjYwMEE3RTcxNSAvKiBGZXRjaExvYWRlci5jcHAgKi8sCiAJCQkJNDE0N0UyQjUx
Qzg5OTEyNjAwQTdFNzE1IC8qIEZldGNoTG9hZGVyLmggKi8sCiAJCQkJNDE0N0UyQjYxQzg5OTEy
NjAwQTdFNzE1IC8qIEZldGNoTG9hZGVyQ2xpZW50LmggKi8sCkBAIC0zMDc1OSw2ICszMDc2Niw3
IEBACiAJCQkJQkMwNkVERTMwQkZENkQwRDAwODU2RTlEIC8qIEpTSFRNTFRhYmxlQ2VsbEVsZW1l
bnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkMwNkVEOUQwQkZENjYwNjAwODU2RTlEIC8qIEpT
SFRNTFRhYmxlQ29sRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzA2RUUwNDBCRkQ3
MUFBMDA4NTZFOUQgLyogSlNIVE1MVGFibGVFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAorCQkJ
CTQxQ0Y4QkU3MUQ0NjIyNjcwMDcwN0RDOSAvKiBGZXRjaEJvZHlDb25zdW1lci5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlCQzA2RUQ5RjBCRkQ2NjA2MDA4NTZFOUQgLyogSlNIVE1MVGFibGVSb3dF
bGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDMDZFRDA2MEJGRDVCQUUwMDg1NkU5RCAv
KiBKU0hUTUxUYWJsZVNlY3Rpb25FbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUQ2NDg5
RDI1MTY2RkZDRjEwMDdDMDMxQiAvKiBKU0hUTUxUZW1wbGF0ZUVsZW1lbnQuY3BwIGluIFNvdXJj
ZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVByb21p
c2UuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NUHJvbWlzZS5oCmluZGV4IDEy
NzVhMzJlNjc4ZGRkOGJlY2EyNTRiZDFkNmQ0ZDE5ZjAyNGMyODcuLjRlMjJlMzM0ZmYzNzZhZDM4
NDliZjBkMTA5OTliOTdiZDlkOWJjODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRE9NUHJvbWlzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RE9NUHJvbWlzZS5oCkBAIC0xMTgsNiArMTE4LDggQEAgcHVibGljOgogICAgIHRlbXBsYXRlPGNs
YXNzIFJlamVjdFJlc3VsdFR5cGU+IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPFByb21pc2VSZXN1
bHRJbnNwZWN0b3I8UmVqZWN0UmVzdWx0VHlwZT46OnBhc3NCeUNvbnN0UmVmLCB2b2lkPjo6dHlw
ZQogICAgIHJlamVjdChjb25zdCBSZWplY3RSZXN1bHRUeXBlJiByZXN1bHQpIHsgcmVqZWN0V2l0
aFZhbHVlKHJlc3VsdCk7IH0KIAorICAgIHRlbXBsYXRlPGNsYXNzIFJlc29sdmVSZXN1bHRUeXBl
PiB2b2lkIHJlc29sdmVXaXRoTmV3bHlDcmVhdGVkKFJlZjxSZXNvbHZlUmVzdWx0VHlwZT4mJik7
CisKICAgICB2b2lkIHJlamVjdChFeGNlcHRpb25Db2RlLCBjb25zdCBTdHJpbmcmID0geyB9KTsK
IAogICAgIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QoKSBjb25zdDsKQEAgLTE4MSw2
ICsxODMsMTYgQEAgaW5saW5lIHZvaWQgRGVmZXJyZWRXcmFwcGVyOjpyZXNvbHZlV2l0aFZhbHVl
KFJlc29sdmVSZXN1bHRUeXBlJiYgcmVzdWx0KQogICAgIHJlc29sdmUoKmV4ZWMsIHRvSlMoZXhl
YywgbV9nbG9iYWxPYmplY3QuZ2V0KCksIHN0ZDo6Zm9yd2FyZDxSZXNvbHZlUmVzdWx0VHlwZT4o
cmVzdWx0KSkpOwogfQogCit0ZW1wbGF0ZTxjbGFzcyBSZXNvbHZlUmVzdWx0VHlwZT4KK2lubGlu
ZSB2b2lkIERlZmVycmVkV3JhcHBlcjo6cmVzb2x2ZVdpdGhOZXdseUNyZWF0ZWQoUmVmPFJlc29s
dmVSZXN1bHRUeXBlPiYmIHJlc3VsdCkKK3sKKyAgICBBU1NFUlQobV9kZWZlcnJlZCk7CisgICAg
QVNTRVJUKG1fZ2xvYmFsT2JqZWN0KTsKKyAgICBKU0M6OkV4ZWNTdGF0ZSogZXhlYyA9IG1fZ2xv
YmFsT2JqZWN0LT5nbG9iYWxFeGVjKCk7CisgICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9ja2VyKGV4
ZWMpOworICAgIHJlc29sdmUoKmV4ZWMsIHRvSlNOZXdseUNyZWF0ZWQoZXhlYywgbV9nbG9iYWxP
YmplY3QuZ2V0KCksIFdURk1vdmUocmVzdWx0KSkpOworfQorCiB0ZW1wbGF0ZTxjbGFzcyBSZWpl
Y3RSZXN1bHRUeXBlPgogaW5saW5lIHZvaWQgRGVmZXJyZWRXcmFwcGVyOjpyZWplY3RXaXRoVmFs
dWUoUmVqZWN0UmVzdWx0VHlwZSYmIHJlc3VsdCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVCdWlsdGluTmFtZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1dlYkNvcmVCdWlsdGluTmFtZXMuaAppbmRleCAzODFlYmEzNjQ4NjllYmY1MjIx
MjE4ZDA0MTNlNDdmN2I2YzVkZjEzLi4xZDc4MDgwYmUzNGNkZDkyN2VjYWZjNGUyMGZhYmY5MTMy
MzE3YzE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XZWJDb3JlQnVp
bHRpbk5hbWVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2ViQ29yZUJ1aWx0
aW5OYW1lcy5oCkBAIC01Miw2ICs1MiwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgbWFj
cm8obG9jYWxTdHJlYW1zKSBcCiAgICAgbWFjcm8ob3BlcmF0aW9ucykgXAogICAgIG1hY3JvKG93
bmVyUmVhZGFibGVTdHJlYW0pIFwKKyAgICBtYWNybyhjbG9uZUZvckpTKSBcCisgICAgbWFjcm8o
Y29uc3VtZSkgXAorICAgIG1hY3JvKGNvbnN1bWVDaHVuaykgXAorICAgIG1hY3JvKGZpbmlzaENv
bnN1bWluZ1N0cmVhbSkgXAogICAgIG1hY3JvKHByaXZhdGVHZXRTdGF0cykgXAogICAgIG1hY3Jv
KHB1bGxpbmcpIFwKICAgICBtYWNybyhwdWxsQWdhaW4pIFwKQEAgLTcwLDYgKzc0LDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgIG1hY3JvKHJlc3BvbnNlKSBcCiAgICAgbWFjcm8oc2V0U3Rh
dHVzKSBcCiAgICAgbWFjcm8oc3RhdGUpIFwKKyAgICBtYWNybyhzdGFydENvbnN1bWluZ1N0cmVh
bSkgXAogICAgIG1hY3JvKHN0YXJ0ZWQpIFwKICAgICBtYWNybyhzdGFydGVkUHJvbWlzZSkgXAog
ICAgIG1hY3JvKHN0b3JlZEVycm9yKSBcCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2MvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwppbmRl
eCBjNTdlMTJmZDEyZjdkOWVlYzgyMzZjZmY2ZDY3YzBlNmQ4MGQxNjEyLi4wZGYxOWIyMWI0MGRk
MjAxNWFkMzA4OTVkODhlZjYxZTk4MjAwNjZiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2MvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxNCBAQAorMjAxNi0wNy0yNSAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBh
cHBsZS5jb20+CisKKyAgICAgICAgW0ZldGNoIEFQSV0gUmVzcG9uc2UgY29uc3RydWN0b3Igc2hv
dWxkIGJlIGFibGUgdG8gdGFrZSBhIFJlYWRhYmxlU3RyZWFtIGFzIGJvZHkKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1OTgwNAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3Rz
L2ZldGNoL2FwaS9yZXNwb25zZS9yZXNwb25zZS1jb25zdW1lLWVtcHR5LWV4cGVjdGVkLnR4dDoK
KyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvZmV0Y2gvYXBpL3Jlc3BvbnNlL3Jlc3BvbnNl
LWNvbnN1bWUtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9mZXRj
aC9hcGkvcmVzcG9uc2UvcmVzcG9uc2UtY29uc3VtZS5odG1sOiBVcGRhdGluZyB0ZXN0IHRvIGV4
ZXJjaWNlIFJlc3BvbnNlIGNvb25zdHJ1Y3RvciB3aXRoIGEgUmVhZGFibGVTdHJlYW0uCisKIDIw
MTYtMDctMjMgIENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3JnPgogCiAgICAg
ICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIyMDM2NDEuCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9yZXNwb25zZS9y
ZXNwb25zZS1jb25zdW1lLWVtcHR5LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZmV0Y2gvYXBpL3Jlc3BvbnNlL3Jlc3BvbnNlLWNvbnN1
bWUtZW1wdHktZXhwZWN0ZWQudHh0CmluZGV4IDY3MDRkZTFhNDQyZTVmMWZkNzI1YjBjZWUyMmM3
ZjA3MzdhNWU1ODYuLmU5Njc5NTE4YmQ5YzAzMDk0ZDhmZmZjZjlmY2Y4MmRkMTc3YmM3Y2YgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZmV0
Y2gvYXBpL3Jlc3BvbnNlL3Jlc3BvbnNlLWNvbnN1bWUtZW1wdHktZXhwZWN0ZWQudHh0CisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZmV0Y2gvYXBpL3Jl
c3BvbnNlL3Jlc3BvbnNlLWNvbnN1bWUtZW1wdHktZXhwZWN0ZWQudHh0CkBAIC0zLDcgKzMsNyBA
QCBQQVNTIENvbnN1bWUgcmVzcG9uc2UncyBib2R5IGFzIHRleHQKIFBBU1MgQ29uc3VtZSByZXNw
b25zZSdzIGJvZHkgYXMgYmxvYiAKIFBBU1MgQ29uc3VtZSByZXNwb25zZSdzIGJvZHkgYXMgYXJy
YXlCdWZmZXIgCiBQQVNTIENvbnN1bWUgcmVzcG9uc2UncyBib2R5IGFzIGpzb24gCi1GQUlMIENv
bnN1bWUgcmVzcG9uc2UncyBib2R5IGFzIGZvcm1EYXRhIHByb21pc2VfdGVzdDogVW5oYW5kbGVk
IHJlamVjdGlvbiB3aXRoIHZhbHVlOiB1bmRlZmluZWQKK0ZBSUwgQ29uc3VtZSByZXNwb25zZSdz
IGJvZHkgYXMgZm9ybURhdGEgcHJvbWlzZV90ZXN0OiBVbmhhbmRsZWQgcmVqZWN0aW9uIHdpdGgg
dmFsdWU6ICJOb3QgaW1wbGVtZW50ZWQiCiBQQVNTIENvbnN1bWUgZW1wdHkgYmxvYiByZXNwb25z
ZSBib2R5IGFzIGFycmF5QnVmZmVyIAogUEFTUyBDb25zdW1lIGVtcHR5IHRleHQgcmVzcG9uc2Ug
Ym9keSBhcyBhcnJheUJ1ZmZlciAKIFBBU1MgQ29uc3VtZSBlbXB0eSBibG9iIHJlc3BvbnNlIGJv
ZHkgYXMgdGV4dCAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvZmV0Y2gvYXBpL3Jlc3BvbnNlL3Jlc3BvbnNlLWNvbnN1bWUtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9h
cGkvcmVzcG9uc2UvcmVzcG9uc2UtY29uc3VtZS1leHBlY3RlZC50eHQKaW5kZXggZDA4OGE2OWE4
Y2U0MmEyZmEwYTFjOTIwOTlkODZhNmJmYTU3ZTZkOC4uNDE2YTM5MmNlNmFkNmNhYjY4ZTI3MWRk
MDRhMTlhMmVlNTAyMDNlZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkvcmVzcG9uc2UvcmVzcG9uc2UtY29uc3VtZS1leHBl
Y3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9mZXRjaC9hcGkvcmVzcG9uc2UvcmVzcG9uc2UtY29uc3VtZS1leHBlY3RlZC50eHQKQEAgLTMs
OSArMywxMyBAQCBQQVNTIENvbnN1bWUgcmVzcG9uc2UncyBib2R5IGFzIHRleHQKIFBBU1MgQ29u
c3VtZSByZXNwb25zZSdzIGJvZHkgYXMgYmxvYiAKIFBBU1MgQ29uc3VtZSByZXNwb25zZSdzIGJv
ZHkgYXMgYXJyYXlCdWZmZXIgCiBQQVNTIENvbnN1bWUgcmVzcG9uc2UncyBib2R5IGFzIGpzb24g
Ci1GQUlMIENvbnN1bWUgcmVzcG9uc2UncyBib2R5IGFzIGZvcm1EYXRhIHByb21pc2VfdGVzdDog
VW5oYW5kbGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiB1bmRlZmluZWQKK0ZBSUwgQ29uc3VtZSBy
ZXNwb25zZSdzIGJvZHkgYXMgZm9ybURhdGEgcHJvbWlzZV90ZXN0OiBVbmhhbmRsZWQgcmVqZWN0
aW9uIHdpdGggdmFsdWU6ICJOb3QgaW1wbGVtZW50ZWQiCiBQQVNTIENvbnN1bWUgYmxvYiByZXNw
b25zZSdzIGJvZHkgYXMgYmxvYiAKIFBBU1MgQ29uc3VtZSBibG9iIHJlc3BvbnNlJ3MgYm9keSBh
cyB0ZXh0IAogUEFTUyBDb25zdW1lIGJsb2IgcmVzcG9uc2UncyBib2R5IGFzIGpzb24gCiBQQVNT
IENvbnN1bWUgYmxvYiByZXNwb25zZSdzIGJvZHkgYXMgYXJyYXlCdWZmZXIgCitQQVNTIENvbnN1
bWUgc3RyZWFtIHJlc3BvbnNlJ3MgYm9keSBhcyBibG9iIAorUEFTUyBDb25zdW1lIHN0cmVhbSBy
ZXNwb25zZSdzIGJvZHkgYXMgdGV4dCAKK1BBU1MgQ29uc3VtZSBzdHJlYW0gcmVzcG9uc2UncyBi
b2R5IGFzIGpzb24gCitQQVNTIENvbnN1bWUgc3RyZWFtIHJlc3BvbnNlJ3MgYm9keSBhcyBhcnJh
eUJ1ZmZlciAKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9mZXRjaC9hcGkvcmVzcG9uc2UvcmVzcG9uc2UtY29uc3VtZS5odG1sIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkvcmVzcG9u
c2UvcmVzcG9uc2UtY29uc3VtZS5odG1sCmluZGV4IDAyODE0ZmY1YmU5MjZiZTczODI2NGJhOTEw
NzBiZDIzNjlkNTQ2OTEuLjk5NDEwY2Q0NDhhYjhiZDY0NzkwMTg3MDA0ZWZkMzRiMWM5OWFiNDkg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
ZmV0Y2gvYXBpL3Jlc3BvbnNlL3Jlc3BvbnNlLWNvbnN1bWUuaHRtbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9yZXNwb25zZS9yZXNw
b25zZS1jb25zdW1lLmh0bWwKQEAgLTkyLDYgKzkyLDI1IEBACiAgICAgY2hlY2tCbG9iUmVzcG9u
c2VCb2R5KGJsb2IsIHRleHREYXRhLCAianNvbiIsIGNoZWNrQm9keUpTT04pOwogICAgIGNoZWNr
QmxvYlJlc3BvbnNlQm9keShibG9iLCB0ZXh0RGF0YSwgImFycmF5QnVmZmVyIiwgY2hlY2tCb2R5
QXJyYXlCdWZmZXIpOwogCisgICAgZnVuY3Rpb24gY2hlY2tSZWFkYWJsZVN0cmVhbVJlc3BvbnNl
Qm9keShzdHJlYW1EYXRhLCBib2R5VHlwZSwgY2hlY2tGdW5jdGlvbikgeworICAgICAgcHJvbWlz
ZV90ZXN0KGZ1bmN0aW9uKHRlc3QpIHsKKyAgICAgICAgdmFyIHN0cmVhbSA9IG5ldyBSZWFkYWJs
ZVN0cmVhbSh7CisgICAgICAgICAgc3RhcnQ6IGZ1bmN0aW9uKGNvbnRyb2xsZXIpIHsKKyAgICAg
ICAgICAgIGNvbnRyb2xsZXIuZW5xdWV1ZSgoc3RyaW5nVG9BcnJheShzdHJlYW1EYXRhKSkpOwor
ICAgICAgICAgICAgY29udHJvbGxlci5jbG9zZSgpOworICAgICAgICAgIH0KKyAgICAgICAgfSk7
CisgICAgICAgIHZhciByZXNwb25zZSA9IG5ldyBSZXNwb25zZShzdHJlYW0pOworICAgICAgICBh
c3NlcnRfZmFsc2UocmVzcG9uc2UuYm9keVVzZWQsICJib2R5VXNlZCBpcyBmYWxzZSBhdCBpbml0
Iik7CisgICAgICAgIHJldHVybiBjaGVja0Z1bmN0aW9uKHJlc3BvbnNlLCBzdHJlYW1EYXRhKTsK
KyAgICAgIH0sICJDb25zdW1lIHN0cmVhbSByZXNwb25zZSdzIGJvZHkgYXMgIiArIGJvZHlUeXBl
KTsKKyAgICB9CisKKyAgICBjaGVja1JlYWRhYmxlU3RyZWFtUmVzcG9uc2VCb2R5KHRleHREYXRh
LCAiYmxvYiIsIGNoZWNrQm9keUJsb2IpOworICAgIGNoZWNrUmVhZGFibGVTdHJlYW1SZXNwb25z
ZUJvZHkodGV4dERhdGEsICJ0ZXh0IiwgY2hlY2tCb2R5VGV4dCk7CisgICAgY2hlY2tSZWFkYWJs
ZVN0cmVhbVJlc3BvbnNlQm9keSh0ZXh0RGF0YSwgImpzb24iLCBjaGVja0JvZHlKU09OKTsKKyAg
ICBjaGVja1JlYWRhYmxlU3RyZWFtUmVzcG9uc2VCb2R5KHRleHREYXRhLCAiYXJyYXlCdWZmZXIi
LCBjaGVja0JvZHlBcnJheUJ1ZmZlcik7CisKICAgICA8L3NjcmlwdD4KICAgPC9ib2R5PgogPC9o
dG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>284485</attachid>
            <date>2016-07-25 08:26:54 -0700</date>
            <delta_ts>2016-07-25 08:29:52 -0700</delta_ts>
            <desc>Rebasing</desc>
            <filename>bug-159804-20160725172546.patch</filename>
            <type>text/plain</type>
            <size>65356</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAzNjgzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmE2ZGJmOTIzODAxOTFi
ZTk5ZThkZTlkYjNiOGRjNTY3YmY1MzIyMy4uOTE5MTQ5YmM3YjRhNmRjMWI0YjM2N2JiY2ExOGVl
NWVlNGZhNjE4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0NiBAQAorMjAxNi0wNy0yNSAgWW91
ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAgICAgW0ZldGNoIEFQSV0gUmVz
cG9uc2UgY29uc3RydWN0b3Igc2hvdWxkIGJlIGFibGUgdG8gdGFrZSBhIFJlYWRhYmxlU3RyZWFt
IGFzIGJvZHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE1OTgwNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IENvdmVyZWQgYnkgZXhpc3RpbmcgYW5kIHVwZGF0ZWQgdGVzdHMuCisKKyAgICAgICAgSW50cm9k
dWNlZCBGZXRjaEJvZHlDb25zdW1lciB0byBlbmNhcHN1bGF0ZSB0aGUgY29kZSByZXNwb25zaWJs
ZSB0byBhZGFwdCBGZXRjaEJvZHkgaW50ZXJuYWwgZGF0YSB0byB0aGUgcmVxdWVzdHMgbWFkZSBi
eSB1c2VyIHNjcmlwdHMuCisgICAgICAgIFRoaXMgcmVmYWN0b3JpbmcgZWFzZXMgdGhlIGhhbmRs
aW5nIG9mIGludGVybmFsIGRhdGEgY29taW5nIGZyb20gUmVhZGFibGVTdHJlYW0uCisKKyAgICAg
ICAgRmV0Y2hMb2FkZXIgaXMgbm93IGRlbGVnYXRpbmcgY29udmVyc2lvbiBmcm9tIHRoZSBkYXRh
IHRvIGl0cyBtX2NvbnN1bWVyIGZpZWxkLgorICAgICAgICBJZiBtX2NvbnN1bWVyIGlzIG51bGws
IEZldGNoTG9hZGVyIGNhbGxzIEZldGNoTG9hZGVyQ2xpZW50OjpkaWRSZWNlaXZlRGF0YSAoc3Ry
ZWFtaW5nIHJlY2VwdGlvbiBtb2RlKS4KKyAgICAgICAgQ2xpZW50cyBvZiBGZXRjaExvYWRlciBu
ZWVkcyB0byBvYXNzIGEgRmV0Y2hCb2R5Q29uc3VtZXIgdG8gdGhlIEZldGNoTG9hZGVyIHRvIGRv
IHRoZSBkYXRhIGFkYXB0YXRpb24gYXQgbG9hZGVyIGNyZWF0aW9uIHRpbWUuCisKKyAgICAgICAg
QWRkZWQgc3VwcG9ydCBmb3IgYm9keSBkYXRhIHBhc3NlZCBhcyBhIFJlYWRhYmxlU3RyZWFtIHRv
IFJlc3BvbnNlLgorICAgICAgICBUaGlzIHJlcXVpcmVzIHRvIHNldCBAYm9keSBpbnRlcm5hbCBz
bG90IG9mIHRoZSBSZXNwb25zZSBvYmplY3QgaW4gdGhlIGNvbnN0cnVjdG9yIGluaXRpYWxpemF0
aW9uIEpTIGJ1aWx0LWluLgorCisgICAgICAgIFRvIGFjdHVhbGx5IHVzZSB0aGF0IGRhdGEsIEJv
ZHkgYWNjZXNzb3JzIGFyZSBhbHNvIGltcGxlbWVudGVkIGFzIEpTIGJ1aWx0LWluIGZvciBSZXNw
b25zZS4KKyAgICAgICAgU2luY2UgdGhlcmUgaXMgbm8gbmVlZCB0byBkbyBzbyBmb3IgUmVxdWVz
dCwgRmV0Y2hSZXNwb25zZSBpcyBubyBsb25nZXIgbWFya2VkIGFzIGltcGxlbWVudGluZyBGZXRj
aEJvZHkgYnV0IGFsbAorICAgICAgICBGZXRjaEJvZHkgSURMIGRlc2NyaXB0aW9uIGlzIGlubGlu
ZWQgaW4gRmV0Y2hSZXNwb25zZS5pZGwuCisKKyAgICAgICAgRm9yIGVhY2ggYm9keSBhY2Nlc3Nv
ciAoYXJyYXlCdWZmZXIsIGJsb2IsIGpzb24sIHRleHQpLCB0aGUgY29ycmVzcG9uZGluZyBKUyBi
dWlsdC1pbiBjaGVja3Mgd2hldGhlciBAYm9keSBpbnRlcm5hbCBzbG90IGlzIHNldC4KKyAgICAg
ICAgSWYgdGhhdCBpcyBub3QgdGhlIGNhc2UsIHJlZ3VsYXIgaGFuZGxpbmcgaXMgZG9uZSB0aHJv
dWdoIGEgbmV3IHByaXZhdGUgbWV0aG9kIGNhbGxlZCBAY29uc3VtZS4KKyAgICAgICAgSWYgQGJv
ZHkgaW50ZXJuYWwgc2xvdCBpcyBzZXQsIGNodW5rcyBhcmUgcHVtcGVkIGZyb20gdGhlIFJlYWRh
YmxlU3RyZWFtIHVzaW5nIFJlYWRhYmxlU3RyZWFtIGludGVybmFsIGJ1aWx0LWlucyBmdW5jdGlv
bnMuCisgICAgICAgIERhdGEgaGFuZGxpbmcgaXMgZG9uZSBpbiBDKysgdGhyb3VnaCB0aGUgcHJp
dmF0ZSBtZXRob2RzIEBzdGFydENvbnN1bWluZ1N0cmVhbSwgQGNvbnN1bWVDaHVuayBhbmQgQGZp
bmlzaENvbnN1bWluZ1N0cmVhbS4KKworICAgICAgICBUbyBzdXBwb3J0IGNsb25pbmcgb2YgUmVz
cG9uc2Ugd2l0aCBib2RpZXMsIGNsb25lIG1ldGhvZCBpcyBhbHNvIGltcGxlbWVudGVkIGFzIGEg
SlMgYnVpbHQtaW4uCisgICAgICAgIE1haW4gY2xvbmUgaXMgZG9uZSB0aHJvdWdoIEBjbG9uZUZv
SlMgcHJpdmF0ZSBtZXRob2QgaW1wbGVtZW50ZWQgaW4gQysrLgorICAgICAgICBKUyBidWlsdC1p
biBjbG9uZSBjb2RlIGRvZXMgdGhlIHRlZWluZyBvZiB0aGUgUmVhZGFibGVTdHJlYW0gdXNpbmcg
UmVhZGFibGVTdHJlYW0gSlMgYnVpbHQtaW4gaW50ZXJuYWwgZnVuY3Rpb25zLgorCisgICAgICAg
IEludHJvZHVjaW5nIGEgbmV3IFJlYWRhYmxlU3RyZWFtIHR5cGUgZm9yIEZldGNoQm9keSB0byBj
b3BlIHdpdGggYm9keSBiZWluZyBzdG9yZWQgaW4gYSBSZWFkYWJsZVN0cmVhbS4KKworICAgICAg
ICBJbnRyb2R1Y2luZyBhIG5ldyBMb2FkZWQgdHlwZSBmb3IgRmV0Y2hCb2R5IHRvIGNvcGUgd2l0
aCBib2R5IGJlaW5nIHN0b3JlZCBpbiB0aGUgRmV0Y2hCb2R5Q29uc3VtZXIgb3duZWQgYnkgRmV0
Y2hCb2R5LgorICAgICAgICBUaGlzIGFsbG93cyByZW1vdmluZyB0aGUgY29udmVyc2lvbiBvZiBk
YXRhIHRvIEpTQzo6QXJyYXlCdWZmZXIgd2hpY2ggd2FzIGRvbmUgYnkgZGVmYXV0IGF0IHRoZSBl
bmQgb2YgRmV0Y2ggbG9hZGluZyBpZiB1c2VyIHNjcmlwdCBkaWQgbm90IHJlcXVlc3QgZGF0YSBi
ZWZvcmUuCisgICAgICAgIEF0IHRoZSBlbmQgb2YgYSBsb2FkLCB0aGUgZGF0YSByZW1haW5zIGlu
IEZldGNoQm9keUNvbnN1bWVyIGFuZCB0aGUgYm9keSBpcyBtYXJrZWQgYXMgTG9hZGVkLgorICAg
ICAgICBJZiB0aGUgdXNlciB3YW50cyB0byBnZXQgdGhlIGRhdGEgYWZ0ZXIgZGF0YSBmaW5pc2hl
ZCBiZWluZyBsb2FkZWQsIEZldGNoQm9keUNvbnN1bWVyIHdpbGwgZG8gdGhlIHJlcXVpcmVkIGNv
bnZlcnNpb25zLgorCisgICAgICAgIEludHJvZHVjaW5nIERlZmVycmVkV3JhcHBlcjo6cmVzb2x2
ZVdpdGhOZXdWYWx1ZSB0byBoYW5kbGUgdGhlIGNhc2Ugb2YgcmVzb2x2aW5nIHByb21pc2VzIHdp
dGggbmV3IG9iamVjdHMuCisgICAgICAgIFRoaXMgYWxsb3dzIGRpcmVjdGx5IHVzaW5nIHRvSlNO
ZXdseUNyZWF0ZWQgaW5zdGVhZCBvZiB0b0pTLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6
IEFkZGluZyBGZXRjaEJvZHlDb25zdW1lci4KKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNo
Qm9keS5jcHA6IE1vdmluZyBkYXRhIGFkYXB0YXRpb24gY29kZSB0byBGZXRjaEJvZHlDb25zdW1l
ci4KKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keTo6ZXh0cmFjdCk6CisgICAgICAgIChXZWJD
b3JlOjpGZXRjaEJvZHk6OmFycmF5QnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9k
eTo6YmxvYik6IFNldHRpbmcgY29udGVudFR5cGUgaW4gRmV0Y2hCb2R5Q29uc3VtZXIgdG8gaGFu
ZGxlIHByb3BlciBjcmVhdGlvbiBvZiBibG9iLgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5
Ojpqc29uKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keTo6dGV4dCk6CisgICAgICAgIChX
ZWJDb3JlOjpGZXRjaEJvZHk6OmNvbnN1bWUpOiBSZWZhY3RvcmluZyBhbmQgYWRkZWQgY2FzZSBv
ZiBMb2FkZWQgYm9kaWVzLgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Ojpjb25zdW1lQXNT
dHJlYW0pOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keTo6Y29uc3VtZUFycmF5
QnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keTo6Y29uc3VtZVRleHQpOgorICAg
ICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Ojpjb25zdW1lQmxvYik6CisgICAgICAgIChXZWJDb3Jl
OjpGZXRjaEJvZHk6OmxvYWRpbmdGYWlsZWQpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5
Ojpsb2FkaW5nU3VjY2VlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keTo6bG9hZGlu
Z1R5cGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6YmxvYkZyb21BcnJheUJ1ZmZlcik6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHk6OmZ1bGZpbGxUZXh0UHJvbWlz
ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHk6OmxvYWRlZEFzQXJyYXlC
dWZmZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Ojpsb2FkZWRBc1Rl
eHQpOiBEZWxldGVkLgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Lmg6CisgICAg
ICAgIChXZWJDb3JlOjpGZXRjaEJvZHk6OmNvbnN1bWVyKToKKyAgICAgICAgKiBNb2R1bGVzL2Zl
dGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcDogQWRkZWQsIHJlc3BvbnNpYmxlIG9mIGRhdGEgYWRh
cHRhdGlvbi4KKyAgICAgICAgKFdlYkNvcmU6OmJsb2JGcm9tRGF0YSk6CisgICAgICAgIChXZWJD
b3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6cmVzb2x2ZVdpdGhEYXRhKToKKyAgICAgICAgKFdlYkNv
cmU6OkZldGNoQm9keUNvbnN1bWVyOjpyZXNvbHZlKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNo
Qm9keUNvbnN1bWVyOjphcHBlbmQpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3Vt
ZXI6OnRha2VEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjp0YWtl
QXNBcnJheUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6dGFr
ZUFzQmxvYik6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6dGFrZUFzVGV4
dCk6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5oOiBBZGRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjpGZXRjaEJvZHlDb25zdW1lcik6
CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6c2V0Q29udGVudFR5cGUpOgor
ICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OnNldFR5cGUpOgorICAgICAgICAo
V2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OnR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6RmV0
Y2hCb2R5Q29uc3VtZXI6OmNsZWFuKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1
bWVyOjpoYXNEYXRhKToKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keU93bmVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keU93bmVyOjpsb2FkQmxvYik6CisgICAgICAg
IChXZWJDb3JlOjpGZXRjaEJvZHlPd25lcjo6YmxvYkxvYWRpbmdTdWNjZWVkZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6RmV0Y2hCb2R5T3duZXI6OmxvYWRlZEJsb2JBc1RleHQpOiBEZWxldGVkLgor
ICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5T3duZXIuaDoKKyAgICAgICAgKFdlYkNv
cmU6OkZldGNoQm9keU93bmVyOjpsb2FkZWRCbG9iQXNBcnJheUJ1ZmZlcik6IERlbGV0ZWQuCisg
ICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaEludGVybmFscy5qczoKKyAgICAgICAgKGNvbnN1
bWVTdHJlYW0pOiBQdW1wIFJlYWRhYmxlU3RyZWFtIGRhdGEgYW5kIHNlbmQgaXQgdG8gRmV0Y2hS
ZXNwb25zZSB0byBiZSBjb252ZXJ0ZWQgYWNjb3JkaW5nIHVzZXIgbmVlZC4KKyAgICAgICAgKiBN
b2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoTG9h
ZGVyOjpGZXRjaExvYWRlcik6IEZldGNoTG9hZGVyIGlzIHNpbXBsaWZpZWQgYXMgaXQgaGFzIHR3
byBub2RlczogY29uc3VtZXIgbW9kZSBpbiB3aGljaCBjYXNlCisgICAgICAgIGRhdGEgaXMgc2Vu
dCB0byB0aGUgY29uc3VtZXIgYW5kIG5vLWNvbnN1bWVyIG1vZGUgaW4gd2hpY2ggY2FzZSBkYXRh
IGlzIHBhc3NlZCB0byBsb2FkZXIgY2xpZW50LiBUaGUgc2Vjb25kIG1vZGUKKyAgICAgICAgaXMg
dXNlZCB0byBjb252ZXl5IGRhdGEgdG8gUmVhZGFibGVTdHJlYW0gc291cmNlLgorICAgICAgICAo
V2ViQ29yZTo6RmV0Y2hMb2FkZXI6OnN0b3ApOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hMb2Fk
ZXI6OnN0YXJ0U3RyZWFtaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoTG9hZGVyOjpkaWRS
ZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaExvYWRlcjo6ZGlkRmluaXNoTG9h
ZGluZyk6IERlbGV0ZWQuCisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlci5oOgor
ICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgKFdl
YkNvcmU6OkZldGNoTG9hZGVyQ2xpZW50OjpkaWRGaW5pc2hMb2FkaW5nQXNUZXh0KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkZldGNoTG9hZGVyQ2xpZW50OjpkaWRGaW5pc2hMb2FkaW5n
QXNBcnJheUJ1ZmZlcik6IERlbGV0ZWQuCisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaFJl
c3BvbnNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoUmVzcG9uc2U6OmNsb25lRm9ySlMp
OgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hSZXNwb25zZTo6Qm9keUxvYWRlcjo6ZGlkU3VjY2Vl
ZCk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaFJlc3BvbnNlOjpCb2R5TG9hZGVyOjpzdGFydCk6
CisgICAgICAgIChXZWJDb3JlOjpGZXRjaFJlc3BvbnNlOjpjb25zdW1lKTogSW50cm9kdWNlZCB0
byBjb25zdW1lIGRhdGEgc3RvcmVkIGluIGJvZHkgYW5kIG5vdCBpbiBSZWFkYWJsZVN0cmVhbS4K
KyAgICAgICAgKFdlYkNvcmU6OkZldGNoUmVzcG9uc2U6OnN0YXJ0Q29uc3VtaW5nU3RyZWFtKTog
SW50cm9kdWNlZCB0byBzdGFydCBwcm9jZXNzIG9mIGNvbnN1bWluZyBkYXRhIHN0b3JlZCBpbiB0
aGUgUmVhZGFibGVTdHJlYW0uCisgICAgICAgIChXZWJDb3JlOjpGZXRjaFJlc3BvbnNlOjpjb25z
dW1lQ2h1bmspOiBSZWNlcHRpb24gb2YgUmVhZGFibGVTdHJlYW0gZGF0YS4KKyAgICAgICAgKFdl
YkNvcmU6OkZldGNoUmVzcG9uc2U6OmZpbmlzaENvbnN1bWluZ1N0cmVhbSk6IERvaW5nIHRoZSBm
aW5hbCBjb252ZXJzaW9uLgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hSZXNwb25zZTo6Y2xvbmUp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hSZXNwb25zZTo6Qm9keUxvYWRlcjo6
ZGlkRmluaXNoTG9hZGluZ0FzQXJyYXlCdWZmZXIpOiBEZWxldGVkLgorICAgICAgICAqIE1vZHVs
ZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5oOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hS
ZXNwb25zZS5pZGw6IElubGluaW5nIG9mIEZldGNoQm9keSBtZXRob2RzL2F0dHJpYnV0ZXMgYW5k
IGFkZGluZyBwcml2YXRlIG1ldGhvZHMuCisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaFJl
c3BvbnNlLmpzOgorICAgICAgICAoaW5pdGlhbGl6ZUZldGNoUmVzcG9uc2UpOgorICAgICAgICAo
Y2xvbmUpOgorICAgICAgICAoYXJyYXlCdWZmZXIpOgorICAgICAgICAoYmxvYik6CisgICAgICAg
IChmb3JtRGF0YSk6CisgICAgICAgIChqc29uKToKKyAgICAgICAgKHRleHQpOgorICAgICAgICAq
IFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9KU0RPTVByb21pc2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRlZmVycmVkV3JhcHBlcjo6cmVz
b2x2ZVdpdGhOZXdWYWx1ZSk6CisgICAgICAgICogYmluZGluZ3MvanMvV2ViQ29yZUJ1aWx0aW5O
YW1lcy5oOgorCisyMDE2LTA3LTIyICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4K
KworICAgICAgICBbRmV0Y2ggQVBJXSBSZXNwb25zZSBjb25zdHJ1Y3RvciBzaG91bGQgYmUgYWJs
ZSB0byB0YWtlIGEgUmVhZGFibGVTdHJlYW0gYXMgYm9keQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU5ODA0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdHMgdG8gYmUgYWRkZWQuCisKKyAgICAgICAg
KiBNb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmV0
Y2hSZXNwb25zZTo6Y2xvbmVGb3JKUyk6IGNsb25lIGV2ZXJ5dGhpbmcgZXhjZXB0IHRoZSBSZWFk
YWJsZVN0cmVhbS4KKyAgICAgICAgKFdlYkNvcmU6OkZldGNoUmVzcG9uc2U6OmNsb25lKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaDogQWRkaW5nIGNs
b25lRm9ySlMuCisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmlkbDogRGl0
dG8uCisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmpzOgorICAgICAgICAo
aW5pdGlhbGl6ZUZldGNoUmVzcG9uc2UpOiBTdG9yaW5nIGJvZHkgaW4gQGJvZHkgaWYgaXQgaXMg
YSBSZWFkYWJsZVN0cmVhbQorICAgICAgICAoY2xvbmUpOiBBZGRpbmcgY2xvbmluZyBvZiBSZWFk
YWJsZVN0cmVhbSBpZiBhbnkgdG8gcmVndWxhciBjbG9uaW5nIGRvbmUgYnkgY2xvbmVGb3JKUy4K
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9XZWJDb3JlQnVpbHRpbk5hbWVzLmg6IEFkZGluZyBjbG9u
ZUZvckpTIGlkZW50aWZpZXIuCisKIDIwMTYtMDctMjUgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8
Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT04ocjIwMDkzMSk6IEludmFs
aWQgY2FzdCBpbiBoaWdoZXN0QW5jZXN0b3JUb1dyYXBNYXJrdXAoKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4
dAppbmRleCBhNTU4M2NhYWU4OWI1ZGI2ZTEwYTRkYjY3NWZhM2IxYjU0ZTliMjVhLi5lM2FiZWIw
MmU5YmJkZmRlMjc2MDUzOWM5Mjc1MzFjYzg3MzZlNTk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApA
QCAtODE4LDYgKzgxOCw3IEBAIHNldChXZWJDb3JlX1NPVVJDRVMKIAogICAgIE1vZHVsZXMvZmV0
Y2gvRE9NV2luZG93RmV0Y2guY3BwCiAgICAgTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuY3BwCisg
ICAgTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHAKICAgICBNb2R1bGVzL2ZldGNo
L0ZldGNoQm9keU93bmVyLmNwcAogICAgIE1vZHVsZXMvZmV0Y2gvRmV0Y2hIZWFkZXJzLmNwcAog
ICAgIE1vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2ZldGNoL0ZldGNoQm9keS5jcHAKaW5kZXggOGM0NzlkNWY4ZTA2MjUwMmQ5NTcwYzhiOWI1ODVi
Y2YwZGI0NGQzZi4uNmRkOGMxOGNmNWQyNmQyYzY0OWQ4YTY4MjUzMTYwYTg4OTY4Yjc0ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcApAQCAtMzksMTIgKzM5
LDExIEBACiAjaW5jbHVkZSAiSFRUUFBhcnNlcnMuaCIKICNpbmNsdWRlICJKU0Jsb2IuaCIKICNp
bmNsdWRlICJKU0RPTUZvcm1EYXRhLmgiCisjaW5jbHVkZSAiSlNSZWFkYWJsZVN0cmVhbS5oIgog
I2luY2x1ZGUgIlJlYWRhYmxlU3RyZWFtU291cmNlLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotc3RhdGljIFJlZjxCbG9iPiBibG9iRnJvbUFycmF5QnVmZmVyKEFycmF5QnVmZmVyKiwgY29u
c3QgU3RyaW5nJik7Ci0KIEZldGNoQm9keTo6RmV0Y2hCb2R5KFJlZjxCbG9iPiYmIGJsb2IpCiAg
ICAgOiBtX3R5cGUoVHlwZTo6QmxvYikKICAgICAsIG1fbWltZVR5cGUoYmxvYi0+dHlwZSgpKQpA
QCAtNzUsNiArNzQsOCBAQCBGZXRjaEJvZHkgRmV0Y2hCb2R5OjpleHRyYWN0KEpTQzo6RXhlY1N0
YXRlJiBzdGF0ZSwgSlNDOjpKU1ZhbHVlIHZhbHVlKQogICAgICAgICByZXR1cm4gRmV0Y2hCb2R5
KCpKU0RPTUZvcm1EYXRhOjp0b1dyYXBwZWQodmFsdWUpKTsKICAgICBpZiAodmFsdWUuaXNTdHJp
bmcoKSkKICAgICAgICAgcmV0dXJuIEZldGNoQm9keSh2YWx1ZS50b1dURlN0cmluZygmc3RhdGUp
KTsKKyAgICBpZiAodmFsdWUuaW5oZXJpdHMoSlNSZWFkYWJsZVN0cmVhbTo6aW5mbygpKSkKKyAg
ICAgICAgcmV0dXJuIHsgVHlwZTo6UmVhZGFibGVTdHJlYW0gfTsKICAgICByZXR1cm4geyB9Owog
fQogCkBAIC04OSwxMyArOTAsMTYgQEAgRmV0Y2hCb2R5IEZldGNoQm9keTo6ZXh0cmFjdEZyb21C
b2R5KEZldGNoQm9keSogYm9keSkKIHZvaWQgRmV0Y2hCb2R5OjphcnJheUJ1ZmZlcihGZXRjaEJv
ZHlPd25lciYgb3duZXIsIERlZmVycmVkV3JhcHBlciYmIHByb21pc2UpCiB7CiAgICAgQVNTRVJU
KG1fdHlwZSAhPSBUeXBlOjpOb25lKTsKLSAgICBjb25zdW1lKG93bmVyLCBDb25zdW1lcjo6VHlw
ZTo6QXJyYXlCdWZmZXIsIFdURk1vdmUocHJvbWlzZSkpOworICAgIG1fY29uc3VtZXIuc2V0VHlw
ZShGZXRjaEJvZHlDb25zdW1lcjo6VHlwZTo6QXJyYXlCdWZmZXIpOworICAgIGNvbnN1bWUob3du
ZXIsIFdURk1vdmUocHJvbWlzZSkpOwogfQogCiB2b2lkIEZldGNoQm9keTo6YmxvYihGZXRjaEJv
ZHlPd25lciYgb3duZXIsIERlZmVycmVkV3JhcHBlciYmIHByb21pc2UpCiB7CiAgICAgQVNTRVJU
KG1fdHlwZSAhPSBUeXBlOjpOb25lKTsKLSAgICBjb25zdW1lKG93bmVyLCBDb25zdW1lcjo6VHlw
ZTo6QmxvYiwgV1RGTW92ZShwcm9taXNlKSk7CisgICAgbV9jb25zdW1lci5zZXRUeXBlKEZldGNo
Qm9keUNvbnN1bWVyOjpUeXBlOjpCbG9iKTsKKyAgICBtX2NvbnN1bWVyLnNldENvbnRlbnRUeXBl
KEJsb2I6Om5vcm1hbGl6ZWRDb250ZW50VHlwZShleHRyYWN0TUlNRVR5cGVGcm9tTWVkaWFUeXBl
KG1fbWltZVR5cGUpKSk7CisgICAgY29uc3VtZShvd25lciwgV1RGTW92ZShwcm9taXNlKSk7CiB9
CiAKIHZvaWQgRmV0Y2hCb2R5Ojpqc29uKEZldGNoQm9keU93bmVyJiBvd25lciwgRGVmZXJyZWRX
cmFwcGVyJiYgcHJvbWlzZSkKQEAgLTEwNiw3ICsxMTAsOCBAQCB2b2lkIEZldGNoQm9keTo6anNv
bihGZXRjaEJvZHlPd25lciYgb3duZXIsIERlZmVycmVkV3JhcHBlciYmIHByb21pc2UpCiAgICAg
ICAgIGZ1bGZpbGxQcm9taXNlV2l0aEpTT04ocHJvbWlzZSwgbV90ZXh0KTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KLSAgICBjb25zdW1lKG93bmVyLCBDb25zdW1lcjo6VHlwZTo6SlNPTiwgV1RG
TW92ZShwcm9taXNlKSk7CisgICAgbV9jb25zdW1lci5zZXRUeXBlKEZldGNoQm9keUNvbnN1bWVy
OjpUeXBlOjpKU09OKTsKKyAgICBjb25zdW1lKG93bmVyLCBXVEZNb3ZlKHByb21pc2UpKTsKIH0K
IAogdm9pZCBGZXRjaEJvZHk6OnRleHQoRmV0Y2hCb2R5T3duZXImIG93bmVyLCBEZWZlcnJlZFdy
YXBwZXImJiBwcm9taXNlKQpAQCAtMTE3LDMxICsxMjIsMzYgQEAgdm9pZCBGZXRjaEJvZHk6OnRl
eHQoRmV0Y2hCb2R5T3duZXImIG93bmVyLCBEZWZlcnJlZFdyYXBwZXImJiBwcm9taXNlKQogICAg
ICAgICBwcm9taXNlLnJlc29sdmUobV90ZXh0KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAg
ICBjb25zdW1lKG93bmVyLCBDb25zdW1lcjo6VHlwZTo6VGV4dCwgV1RGTW92ZShwcm9taXNlKSk7
CisgICAgbV9jb25zdW1lci5zZXRUeXBlKEZldGNoQm9keUNvbnN1bWVyOjpUeXBlOjpUZXh0KTsK
KyAgICBjb25zdW1lKG93bmVyLCBXVEZNb3ZlKHByb21pc2UpKTsKIH0KIAotdm9pZCBGZXRjaEJv
ZHk6OmNvbnN1bWUoRmV0Y2hCb2R5T3duZXImIG93bmVyLCBDb25zdW1lcjo6VHlwZSB0eXBlLCBE
ZWZlcnJlZFdyYXBwZXImJiBwcm9taXNlKQordm9pZCBGZXRjaEJvZHk6OmNvbnN1bWUoRmV0Y2hC
b2R5T3duZXImIG93bmVyLCBEZWZlcnJlZFdyYXBwZXImJiBwcm9taXNlKQogewotICAgIGlmICht
X3R5cGUgPT0gVHlwZTo6QXJyYXlCdWZmZXIpIHsKLSAgICAgICAgY29uc3VtZUFycmF5QnVmZmVy
KHR5cGUsIHByb21pc2UpOworICAgIHN3aXRjaCAobV90eXBlKSB7CisgICAgY2FzZSBUeXBlOjpB
cnJheUJ1ZmZlcjoKKyAgICAgICAgY29uc3VtZUFycmF5QnVmZmVyKHByb21pc2UpOwogICAgICAg
ICByZXR1cm47Ci0gICAgfQotICAgIGlmIChtX3R5cGUgPT0gVHlwZTo6VGV4dCkgewotICAgICAg
ICBjb25zdW1lVGV4dCh0eXBlLCBwcm9taXNlKTsKKyAgICBjYXNlIFR5cGU6OlRleHQ6CisgICAg
ICAgIGNvbnN1bWVUZXh0KHByb21pc2UpOwogICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlm
IChtX3R5cGUgPT0gVHlwZTo6QmxvYikgewotICAgICAgICBjb25zdW1lQmxvYihvd25lciwgdHlw
ZSwgV1RGTW92ZShwcm9taXNlKSk7CisgICAgY2FzZSBUeXBlOjpCbG9iOgorICAgICAgICBjb25z
dW1lQmxvYihvd25lciwgV1RGTW92ZShwcm9taXNlKSk7CiAgICAgICAgIHJldHVybjsKLSAgICB9
Ci0gICAgaWYgKG1fdHlwZSA9PSBUeXBlOjpMb2FkaW5nKSB7Ci0gICAgICAgIC8vIEZJWE1FOiBX
ZSBzaG91bGQgYmUgYWJsZSB0byBjaGFuZ2UgdGhlIGxvYWRpbmcgdHlwZSB0byB0ZXh0IGlmIGNv
bnN1bWVyIHR5cGUgaXMgSlNPTiBvciBUZXh0LgotICAgICAgICBtX2NvbnN1bWVyID0gQ29uc3Vt
ZXIoe3R5cGUsIFdURk1vdmUocHJvbWlzZSl9KTsKKyAgICBjYXNlIFR5cGU6OkxvYWRpbmc6Cisg
ICAgICAgIG1fY29uc3VtZVByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpOwogICAgICAgICByZXR1
cm47CisgICAgY2FzZSBUeXBlOjpMb2FkZWQ6CisgICAgICAgIG1fY29uc3VtZXIucmVzb2x2ZShw
cm9taXNlKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgVHlwZTo6Tm9uZToKKyAgICBjYXNl
IFR5cGU6OlJlYWRhYmxlU3RyZWFtOgorICAgICAgICAvLyBJZiBtX3R5cGUgaXMgUmVhZGFibGVT
dHJlYW0sIHdlIHNob3VsZCBub3QgYmUgdGhlcmUgYXMgSlMgQnVpbHRpbnMgc2hvdWxkIGhhdmUg
aGFuZGxlZCB0aGlzIGNhc2UuCisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIGRl
ZmF1bHQ6CisgICAgICAgIC8vIEZJWE1FOiBTdXBwb3J0IG90aGVyIHR5cGVzLgorICAgICAgICBw
cm9taXNlLnJlamVjdCgwKTsKICAgICB9Ci0KLSAgICAvLyBGSVhNRTogU3VwcG9ydCBvdGhlciB0
eXBlcy4KLSAgICBwcm9taXNlLnJlamVjdCgwKTsKIH0KIAogI2lmIEVOQUJMRShTVFJFQU1TX0FQ
SSkKQEAgLTE0OSw4MSArMTU5LDU4IEBAIHZvaWQgRmV0Y2hCb2R5Ojpjb25zdW1lQXNTdHJlYW0o
RmV0Y2hCb2R5T3duZXImIG93bmVyLCBGZXRjaFJlc3BvbnNlU291cmNlJiBzb3VyCiB7CiAgICAg
QVNTRVJUKG1fdHlwZSAhPSBUeXBlOjpMb2FkaW5nKTsKIAorICAgIGJvb2wgY2xvc2VTdHJlYW0g
PSBmYWxzZTsKICAgICBzd2l0Y2ggKG1fdHlwZSkgewogICAgIGNhc2UgVHlwZTo6QXJyYXlCdWZm
ZXI6CiAgICAgICAgIEFTU0VSVChtX2RhdGEpOwotICAgICAgICBpZiAoc291cmNlLmVucXVldWUo
UmVmUHRyPEpTQzo6QXJyYXlCdWZmZXI+KG1fZGF0YSkpKQotICAgICAgICAgICAgc291cmNlLmNs
b3NlKCk7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgY2xvc2VTdHJlYW0gPSBzb3VyY2UuZW5x
dWV1ZShSZWZQdHI8SlNDOjpBcnJheUJ1ZmZlcj4obV9kYXRhKSk7CisgICAgICAgIGJyZWFrOwog
ICAgIGNhc2UgVHlwZTo6VGV4dDogewogICAgICAgICBWZWN0b3I8dWludDhfdD4gZGF0YSA9IGV4
dHJhY3RGcm9tVGV4dCgpOwotICAgICAgICBpZiAoc291cmNlLmVucXVldWUoQXJyYXlCdWZmZXI6
OnRyeUNyZWF0ZShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpKSkKLSAgICAgICAgICAgIHNvdXJj
ZS5jbG9zZSgpOwotICAgICAgICByZXR1cm47CisgICAgICAgIGNsb3NlU3RyZWFtID0gc291cmNl
LmVucXVldWUoQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkp
KTsKKyAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2UgVHlwZTo6QmxvYjoKICAgICAgICAg
QVNTRVJUKG1fYmxvYik7Ci0gICAgICAgIG93bmVyLmxvYWRCbG9iKCptX2Jsb2IsIEZldGNoTG9h
ZGVyOjpUeXBlOjpTdHJlYW0pOwotICAgICAgICByZXR1cm47CisgICAgICAgIG93bmVyLmxvYWRC
bG9iKCptX2Jsb2IsIG51bGxwdHIpOworICAgICAgICBicmVhazsKICAgICBjYXNlIFR5cGU6Ok5v
bmU6Ci0gICAgICAgIHNvdXJjZS5jbG9zZSgpOwotICAgICAgICByZXR1cm47Ci0gICAgZGVmYXVs
dDoKLSAgICAgICAgc291cmNlLmVycm9yKEFTQ0lJTGl0ZXJhbCgibm90IGltcGxlbWVudGVkIikp
OworICAgICAgICBjbG9zZVN0cmVhbSA9IHRydWU7CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
VHlwZTo6TG9hZGVkOiB7CisgICAgICAgIGNsb3NlU3RyZWFtID0gc291cmNlLmVucXVldWUobV9j
b25zdW1lci50YWtlQXNBcnJheUJ1ZmZlcigpKTsKKyAgICAgICAgYnJlYWs7CiAgICAgfQotfQot
I2VuZGlmCisgICAgY2FzZSBUeXBlOjpSZWFkYWJsZVN0cmVhbToKKyAgICAgICAgLy8gVGhpcyBz
aG91bGQgYmUgaGFuZGxlZCBieSBKUyBCdWlsdGlucy4KKyAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CiAKLXZvaWQgRmV0Y2hCb2R5Ojpjb25zdW1lQXJyYXlCdWZmZXIoQ29uc3VtZXI6OlR5
cGUgdHlwZSwgRGVmZXJyZWRXcmFwcGVyJiBwcm9taXNlKQotewotICAgIGlmICh0eXBlID09IENv
bnN1bWVyOjpUeXBlOjpBcnJheUJ1ZmZlcikgewotICAgICAgICBmdWxmaWxsUHJvbWlzZVdpdGhB
cnJheUJ1ZmZlcihwcm9taXNlLCBtX2RhdGEuZ2V0KCkpOwotICAgICAgICByZXR1cm47Ci0gICAg
fQotICAgIGlmICh0eXBlID09IENvbnN1bWVyOjpUeXBlOjpCbG9iKSB7Ci0gICAgICAgIHByb21p
c2UucmVzb2x2ZShibG9iRnJvbUFycmF5QnVmZmVyKG1fZGF0YS5nZXQoKSwgQmxvYjo6bm9ybWFs
aXplZENvbnRlbnRUeXBlKGV4dHJhY3RNSU1FVHlwZUZyb21NZWRpYVR5cGUobV9taW1lVHlwZSkp
KSk7Ci0gICAgICAgIHJldHVybjsKKyAgICBkZWZhdWx0OgorICAgICAgICBzb3VyY2UuZXJyb3Io
QVNDSUlMaXRlcmFsKCJub3QgaW1wbGVtZW50ZWQiKSk7CiAgICAgfQogCi0gICAgQVNTRVJUKHR5
cGUgPT0gQ29uc3VtZXI6OlR5cGU6OlRleHQgfHwgdHlwZSA9PSBDb25zdW1lcjo6VHlwZTo6SlNP
Tik7Ci0gICAgLy8gRklYTUU6IERvIHdlIG5lZWQgVGV4dFJlc291cmNlRGVjb2RlciB0byBjcmVh
dGUgYSBTdHJpbmcgdG8gZGVjb2RlIFVURi04IGRhdGEuCi0gICAgZnVsZmlsbFRleHRQcm9taXNl
KHR5cGUsIFRleHRSZXNvdXJjZURlY29kZXI6OmNyZWF0ZShBU0NJSUxpdGVyYWwoInRleHQvcGxh
aW4iKSwgIlVURi04IiktPmRlY29kZUFuZEZsdXNoKHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPiht
X2RhdGEtPmRhdGEoKSksIG1fZGF0YS0+Ynl0ZUxlbmd0aCgpKSwgcHJvbWlzZSk7CisgICAgaWYg
KGNsb3NlU3RyZWFtKQorICAgICAgICBzb3VyY2UuY2xvc2UoKTsKIH0KKyNlbmRpZgogCi12b2lk
IEZldGNoQm9keTo6Y29uc3VtZVRleHQoQ29uc3VtZXI6OlR5cGUgdHlwZSwgRGVmZXJyZWRXcmFw
cGVyJiBwcm9taXNlKQordm9pZCBGZXRjaEJvZHk6OmNvbnN1bWVBcnJheUJ1ZmZlcihEZWZlcnJl
ZFdyYXBwZXImIHByb21pc2UpCiB7Ci0gICAgQVNTRVJUKHR5cGUgPT0gQ29uc3VtZXI6OlR5cGU6
OkFycmF5QnVmZmVyIHx8IHR5cGUgPT0gQ29uc3VtZXI6OlR5cGU6OkJsb2IpOwotCi0gICAgaWYg
KHR5cGUgPT0gQ29uc3VtZXI6OlR5cGU6OkFycmF5QnVmZmVyKSB7Ci0gICAgICAgIFZlY3Rvcjx1
aW50OF90PiBkYXRhID0gZXh0cmFjdEZyb21UZXh0KCk7Ci0gICAgICAgIGZ1bGZpbGxQcm9taXNl
V2l0aEFycmF5QnVmZmVyKHByb21pc2UsIGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0gICAgU3RyaW5nIGNvbnRlbnRUeXBlID0gQmxvYjo6bm9ybWFs
aXplZENvbnRlbnRUeXBlKGV4dHJhY3RNSU1FVHlwZUZyb21NZWRpYVR5cGUobV9taW1lVHlwZSkp
OwotICAgIHByb21pc2UucmVzb2x2ZShCbG9iOjpjcmVhdGUoZXh0cmFjdEZyb21UZXh0KCksIGNv
bnRlbnRUeXBlKSk7CisgICAgbV9jb25zdW1lci5yZXNvbHZlV2l0aERhdGEocHJvbWlzZSwgc3Rh
dGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KG1fZGF0YS0+ZGF0YSgpKSwgbV9kYXRhLT5ieXRlTGVu
Z3RoKCkpOwogfQogCi1GZXRjaExvYWRlcjo6VHlwZSBGZXRjaEJvZHk6OmxvYWRpbmdUeXBlKENv
bnN1bWVyOjpUeXBlIHR5cGUpCit2b2lkIEZldGNoQm9keTo6Y29uc3VtZVRleHQoRGVmZXJyZWRX
cmFwcGVyJiBwcm9taXNlKQogewotICAgIHN3aXRjaCAodHlwZSkgewotICAgIGNhc2UgQ29uc3Vt
ZXI6OlR5cGU6OkpTT046Ci0gICAgY2FzZSBDb25zdW1lcjo6VHlwZTo6VGV4dDoKLSAgICAgICAg
cmV0dXJuIEZldGNoTG9hZGVyOjpUeXBlOjpUZXh0OwotICAgIGNhc2UgQ29uc3VtZXI6OlR5cGU6
OkJsb2I6Ci0gICAgY2FzZSBDb25zdW1lcjo6VHlwZTo6QXJyYXlCdWZmZXI6Ci0gICAgICAgIHJl
dHVybiBGZXRjaExvYWRlcjo6VHlwZTo6QXJyYXlCdWZmZXI7Ci0gICAgZGVmYXVsdDoKLSAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybiBGZXRjaExvYWRlcjo6VHlw
ZTo6QXJyYXlCdWZmZXI7Ci0gICAgfTsKKyAgICBWZWN0b3I8dWludDhfdD4gZGF0YSA9IGV4dHJh
Y3RGcm9tVGV4dCgpOworICAgIG1fY29uc3VtZXIucmVzb2x2ZVdpdGhEYXRhKHByb21pc2UsIGRh
dGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7CiB9CiAKLXZvaWQgRmV0Y2hCb2R5Ojpjb25zdW1lQmxv
YihGZXRjaEJvZHlPd25lciYgb3duZXIsIENvbnN1bWVyOjpUeXBlIHR5cGUsIERlZmVycmVkV3Jh
cHBlciYmIHByb21pc2UpCit2b2lkIEZldGNoQm9keTo6Y29uc3VtZUJsb2IoRmV0Y2hCb2R5T3du
ZXImIG93bmVyLCBEZWZlcnJlZFdyYXBwZXImJiBwcm9taXNlKQogewogICAgIEFTU0VSVChtX2Js
b2IpOwogCi0gICAgbV9jb25zdW1lciA9IENvbnN1bWVyKHt0eXBlLCBXVEZNb3ZlKHByb21pc2Up
fSk7Ci0gICAgb3duZXIubG9hZEJsb2IoKm1fYmxvYiwgbG9hZGluZ1R5cGUodHlwZSkpOworICAg
IG1fY29uc3VtZVByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpOworICAgIG93bmVyLmxvYWRCbG9i
KCptX2Jsb2IsICZtX2NvbnN1bWVyKTsKIH0KIAogVmVjdG9yPHVpbnQ4X3Q+IEZldGNoQm9keTo6
ZXh0cmFjdEZyb21UZXh0KCkgY29uc3QKQEAgLTIzNiw2MyArMjIzLDIxIEBAIFZlY3Rvcjx1aW50
OF90PiBGZXRjaEJvZHk6OmV4dHJhY3RGcm9tVGV4dCgpIGNvbnN0CiAgICAgcmV0dXJuIHZhbHVl
OwogfQogCi1zdGF0aWMgaW5saW5lIFJlZjxCbG9iPiBibG9iRnJvbUFycmF5QnVmZmVyKEFycmF5
QnVmZmVyKiBidWZmZXIsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpCi17Ci0gICAgaWYgKCFi
dWZmZXIpCi0gICAgICAgIHJldHVybiBCbG9iOjpjcmVhdGUoVmVjdG9yPHVpbnQ4X3Q+KCksIGNv
bnRlbnRUeXBlKTsKLQotICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgdHJ5IHRvIG1vdmUgYnVmZmVy
IHRvIEJsb2Igd2l0aG91dCBkb2luZyB0aGlzIGNvcHkuCi0gICAgVmVjdG9yPHVpbnQ4X3Q+IHZh
bHVlKGJ1ZmZlci0+Ynl0ZUxlbmd0aCgpKTsKLSAgICBtZW1jcHkodmFsdWUuZGF0YSgpLCBidWZm
ZXItPmRhdGEoKSwgYnVmZmVyLT5ieXRlTGVuZ3RoKCkpOwotICAgIHJldHVybiBCbG9iOjpjcmVh
dGUoV1RGTW92ZSh2YWx1ZSksIGNvbnRlbnRUeXBlKTsKLX0KLQotdm9pZCBGZXRjaEJvZHk6OmZ1
bGZpbGxUZXh0UHJvbWlzZShGZXRjaEJvZHk6OkNvbnN1bWVyOjpUeXBlIHR5cGUsIGNvbnN0IFN0
cmluZyYgdGV4dCwgRGVmZXJyZWRXcmFwcGVyJiBwcm9taXNlKQotewotICAgIEFTU0VSVCh0eXBl
ID09IENvbnN1bWVyOjpUeXBlOjpUZXh0IHx8IHR5cGUgPT0gQ29uc3VtZXI6OlR5cGU6OkpTT04p
OwotICAgIGlmICh0eXBlID09IEZldGNoQm9keTo6Q29uc3VtZXI6OlR5cGU6OlRleHQpCi0gICAg
ICAgIHByb21pc2UucmVzb2x2ZSh0ZXh0KTsKLSAgICBlbHNlCi0gICAgICAgIGZ1bGZpbGxQcm9t
aXNlV2l0aEpTT04ocHJvbWlzZSwgdGV4dCk7Ci19Ci0KIHZvaWQgRmV0Y2hCb2R5Ojpsb2FkaW5n
RmFpbGVkKCkKIHsKLSAgICBBU1NFUlQobV9jb25zdW1lcik7Ci0gICAgbV9jb25zdW1lci0+cHJv
bWlzZS5yZWplY3QoMCk7Ci0gICAgbV9jb25zdW1lciA9IE51bGxvcHQ7Ci19Ci0KLXZvaWQgRmV0
Y2hCb2R5Ojpsb2FkZWRBc0FycmF5QnVmZmVyKFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiBidWZmZXIp
Ci17Ci0gICAgaWYgKG1fdHlwZSA9PSBUeXBlOjpMb2FkaW5nKSB7Ci0gICAgICAgIG1fdHlwZSA9
IFR5cGU6OkFycmF5QnVmZmVyOwotICAgICAgICBtX2RhdGEgPSBidWZmZXI7Ci0gICAgICAgIGlm
IChtX2NvbnN1bWVyKSB7Ci0gICAgICAgICAgICBjb25zdW1lQXJyYXlCdWZmZXIobV9jb25zdW1l
ci0+dHlwZSwgbV9jb25zdW1lci0+cHJvbWlzZSk7Ci0gICAgICAgICAgICBtX2NvbnN1bWVyID0g
TnVsbG9wdDsKLSAgICAgICAgfQotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgQVNTRVJU
KG1fY29uc3VtZXIpOwotICAgIEFTU0VSVChtX2NvbnN1bWVyLT50eXBlID09IENvbnN1bWVyOjpU
eXBlOjpCbG9iIHx8IG1fY29uc3VtZXItPnR5cGUgPT0gQ29uc3VtZXI6OlR5cGU6OkFycmF5QnVm
ZmVyKTsKLSAgICBpZiAobV9jb25zdW1lci0+dHlwZSA9PSBDb25zdW1lcjo6VHlwZTo6QXJyYXlC
dWZmZXIpCi0gICAgICAgIGZ1bGZpbGxQcm9taXNlV2l0aEFycmF5QnVmZmVyKG1fY29uc3VtZXIt
PnByb21pc2UsIGJ1ZmZlci5nZXQoKSk7Ci0gICAgZWxzZSB7Ci0gICAgICAgIEFTU0VSVChtX2Js
b2IpOwotICAgICAgICBtX2NvbnN1bWVyLT5wcm9taXNlLnJlc29sdmUoYmxvYkZyb21BcnJheUJ1
ZmZlcihidWZmZXIuZ2V0KCksIG1fYmxvYi0+dHlwZSgpKSk7CisgICAgaWYgKG1fY29uc3VtZVBy
b21pc2UpIHsKKyAgICAgICAgbV9jb25zdW1lUHJvbWlzZS0+cmVqZWN0KDApOworICAgICAgICBt
X2NvbnN1bWVQcm9taXNlID0gTnVsbG9wdDsKICAgICB9Ci0gICAgbV9jb25zdW1lciA9IE51bGxv
cHQ7CiB9CiAKLXZvaWQgRmV0Y2hCb2R5Ojpsb2FkZWRBc1RleHQoU3RyaW5nJiYgdGV4dCkKK3Zv
aWQgRmV0Y2hCb2R5Ojpsb2FkaW5nU3VjY2VlZGVkKCkKIHsKLSAgICBBU1NFUlQobV9jb25zdW1l
cik7Ci0gICAgQVNTRVJUKG1fY29uc3VtZXItPnR5cGUgPT0gQ29uc3VtZXI6OlR5cGU6OlRleHQg
fHwgbV9jb25zdW1lci0+dHlwZSA9PSBDb25zdW1lcjo6VHlwZTo6SlNPTik7Ci0KLSAgICBmdWxm
aWxsVGV4dFByb21pc2UobV9jb25zdW1lci0+dHlwZSwgdGV4dCwgbV9jb25zdW1lci0+cHJvbWlz
ZSk7Ci0gICAgbV9jb25zdW1lciA9IE51bGxvcHQ7CisgICAgbV90eXBlID0gbV9jb25zdW1lci5o
YXNEYXRhKCkgPyBUeXBlOjpMb2FkZWQgOiBUeXBlOjpOb25lOworICAgIGlmIChtX2NvbnN1bWVQ
cm9taXNlKSB7CisgICAgICAgIG1fY29uc3VtZXIucmVzb2x2ZSgqbV9jb25zdW1lUHJvbWlzZSk7
CisgICAgICAgIG1fY29uc3VtZVByb21pc2UgPSBOdWxsb3B0OworICAgIH0KIH0KIAogUmVmUHRy
PEZvcm1EYXRhPiBGZXRjaEJvZHk6OmJvZHlGb3JJbnRlcm5hbFJlcXVlc3QoKSBjb25zdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmgKaW5kZXggNTZmM2RmZGM4NTcxYzMx
NTExMmYyNjY1YzZmZmRhOTc1YTlkZjM5Mi4uNjJkOWU1YTc4N2Q1ODMzMGI2NjRmOGFjNTZlZjI0
NTMyY2VmNmRjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRj
aEJvZHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5oCkBA
IC0zMyw2ICszMyw3IEBACiAKICNpbmNsdWRlICJCbG9iLmgiCiAjaW5jbHVkZSAiRE9NRm9ybURh
dGEuaCIKKyNpbmNsdWRlICJGZXRjaEJvZHlDb25zdW1lci5oIgogI2luY2x1ZGUgIkZldGNoTG9h
ZGVyLmgiCiAjaW5jbHVkZSAiSlNET01Qcm9taXNlLmgiCiAKQEAgLTcwLDM1ICs3MSwyNyBAQCBw
dWJsaWM6CiAgICAgRmV0Y2hCb2R5KCkgPSBkZWZhdWx0OwogCiAgICAgdm9pZCBsb2FkaW5nRmFp
bGVkKCk7Ci0gICAgdm9pZCBsb2FkZWRBc0FycmF5QnVmZmVyKFJlZlB0cjxBcnJheUJ1ZmZlcj4m
Jik7Ci0gICAgdm9pZCBsb2FkZWRBc1RleHQoU3RyaW5nJiYpOworICAgIHZvaWQgbG9hZGluZ1N1
Y2NlZWRlZCgpOwogCiAgICAgUmVmUHRyPEZvcm1EYXRhPiBib2R5Rm9ySW50ZXJuYWxSZXF1ZXN0
KCkgY29uc3Q7CiAKLSAgICBlbnVtIGNsYXNzIFR5cGUgeyBOb25lLCBBcnJheUJ1ZmZlciwgTG9h
ZGluZywgVGV4dCwgQmxvYiwgRm9ybURhdGEgfTsKKyAgICBlbnVtIGNsYXNzIFR5cGUgeyBOb25l
LCBBcnJheUJ1ZmZlciwgQmxvYiwgRm9ybURhdGEsIFRleHQsIExvYWRpbmcsIExvYWRlZCwgUmVh
ZGFibGVTdHJlYW0gfTsKICAgICBUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0K
IAorICAgIEZldGNoQm9keUNvbnN1bWVyJiBjb25zdW1lcigpIHsgcmV0dXJuIG1fY29uc3VtZXI7
IH0KKwogcHJpdmF0ZToKICAgICBGZXRjaEJvZHkoUmVmPEJsb2I+JiYpOwogICAgIEZldGNoQm9k
eShSZWY8RE9NRm9ybURhdGE+JiYpOwogICAgIEZldGNoQm9keShTdHJpbmcmJik7CiAgICAgRmV0
Y2hCb2R5KFR5cGUgdHlwZSkgOiBtX3R5cGUodHlwZSkgeyB9CiAKLSAgICBzdHJ1Y3QgQ29uc3Vt
ZXIgewotICAgICAgICBlbnVtIGNsYXNzIFR5cGUgeyBUZXh0LCBCbG9iLCBKU09OLCBBcnJheUJ1
ZmZlciB9OwotCi0gICAgICAgIFR5cGUgdHlwZTsKLSAgICAgICAgRGVmZXJyZWRXcmFwcGVyIHBy
b21pc2U7Ci0gICAgfTsKLSAgICB2b2lkIGNvbnN1bWUoRmV0Y2hCb2R5T3duZXImLCBDb25zdW1l
cjo6VHlwZSwgRGVmZXJyZWRXcmFwcGVyJiYpOworICAgIHZvaWQgY29uc3VtZShGZXRjaEJvZHlP
d25lciYsIERlZmVycmVkV3JhcHBlciYmKTsKIAogICAgIFZlY3Rvcjx1aW50OF90PiBleHRyYWN0
RnJvbVRleHQoKSBjb25zdDsKLSAgICB2b2lkIGNvbnN1bWVBcnJheUJ1ZmZlcihDb25zdW1lcjo6
VHlwZSwgRGVmZXJyZWRXcmFwcGVyJik7Ci0gICAgdm9pZCBjb25zdW1lVGV4dChDb25zdW1lcjo6
VHlwZSwgRGVmZXJyZWRXcmFwcGVyJik7Ci0gICAgdm9pZCBjb25zdW1lQmxvYihGZXRjaEJvZHlP
d25lciYsIENvbnN1bWVyOjpUeXBlLCBEZWZlcnJlZFdyYXBwZXImJik7Ci0gICAgc3RhdGljIEZl
dGNoTG9hZGVyOjpUeXBlIGxvYWRpbmdUeXBlKENvbnN1bWVyOjpUeXBlKTsKLSAgICBzdGF0aWMg
dm9pZCBmdWxmaWxsVGV4dFByb21pc2UoRmV0Y2hCb2R5OjpDb25zdW1lcjo6VHlwZSwgY29uc3Qg
U3RyaW5nJiwgRGVmZXJyZWRXcmFwcGVyJik7Ci0gICAgc3RhdGljIHZvaWQgZnVsZmlsbEFycmF5
QnVmZmVyUHJvbWlzZShGZXRjaEJvZHk6OkNvbnN1bWVyOjpUeXBlLCBjb25zdCBTdHJpbmcmLCBE
ZWZlcnJlZFdyYXBwZXImKTsKKyAgICB2b2lkIGNvbnN1bWVBcnJheUJ1ZmZlcihEZWZlcnJlZFdy
YXBwZXImKTsKKyAgICB2b2lkIGNvbnN1bWVUZXh0KERlZmVycmVkV3JhcHBlciYpOworICAgIHZv
aWQgY29uc3VtZUJsb2IoRmV0Y2hCb2R5T3duZXImLCBEZWZlcnJlZFdyYXBwZXImJik7CiAKICAg
ICBUeXBlIG1fdHlwZSB7IFR5cGU6Ok5vbmUgfTsKICAgICBTdHJpbmcgbV9taW1lVHlwZTsKQEAg
LTEwOSw3ICsxMDIsOCBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gbV9kYXRh
OwogICAgIFN0cmluZyBtX3RleHQ7CiAKLSAgICBPcHRpb25hbDxDb25zdW1lcj4gbV9jb25zdW1l
cjsKKyAgICBGZXRjaEJvZHlDb25zdW1lciBtX2NvbnN1bWVyIHsgRmV0Y2hCb2R5Q29uc3VtZXI6
OlR5cGU6Ok5vbmUgfTsKKyAgICBPcHRpb25hbDxEZWZlcnJlZFdyYXBwZXI+IG1fY29uc3VtZVBy
b21pc2U7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ5MzI1
MWJmOTRjZDM0MjdmNjc5ZmQ2MmVhZGU0ZThiYTAwMjM0NjcKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcApAQCAtMCww
ICsxLDE0MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQsIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgcmVxdWlyZWQgdG8gYmUgbWV0OgorICoK
KyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBw
bGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20g
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKKyAqIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyAqIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SCisgKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgorICogQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwKKyAqIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJGZXRjaEJvZHlDb25zdW1lci5oIgorCisjaWYg
RU5BQkxFKEZFVENIX0FQSSkKKworI2luY2x1ZGUgIkpTQmxvYi5oIgorI2luY2x1ZGUgIkpTRE9N
UHJvbWlzZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0YXRpYyBpbmxpbmUgUmVmPEJs
b2I+IGJsb2JGcm9tRGF0YShjb25zdCB1bnNpZ25lZCBjaGFyKiBkYXRhLCB1bnNpZ25lZCBsZW5n
dGgsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpCit7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IHZh
bHVlKGxlbmd0aCk7CisgICAgbWVtY3B5KHZhbHVlLmRhdGEoKSwgZGF0YSwgbGVuZ3RoKTsKKyAg
ICByZXR1cm4gQmxvYjo6Y3JlYXRlKFdURk1vdmUodmFsdWUpLCBjb250ZW50VHlwZSk7Cit9CisK
K3ZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6OnJlc29sdmVXaXRoRGF0YShEZWZlcnJlZFdyYXBwZXIm
IHByb21pc2UsIGNvbnN0IHVuc2lnbmVkIGNoYXIqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkKK3sK
KyAgICBzd2l0Y2ggKG1fdHlwZSkgeworICAgIGNhc2UgVHlwZTo6QXJyYXlCdWZmZXI6CisgICAg
ICAgIGZ1bGZpbGxQcm9taXNlV2l0aEFycmF5QnVmZmVyKHByb21pc2UsIGRhdGEsIGxlbmd0aCk7
CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIFR5cGU6OkJsb2I6CisgICAgICAgIHByb21pc2Uu
cmVzb2x2ZVdpdGhOZXdseUNyZWF0ZWQoYmxvYkZyb21EYXRhKGRhdGEsIGxlbmd0aCwgbV9jb250
ZW50VHlwZSkpOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBUeXBlOjpKU09OOgorICAgICAg
ICBmdWxmaWxsUHJvbWlzZVdpdGhKU09OKHByb21pc2UsIFN0cmluZyhkYXRhLCBsZW5ndGgpKTsK
KyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgVHlwZTo6VGV4dDoKKyAgICAgICAgcHJvbWlzZS5y
ZXNvbHZlKFN0cmluZyhkYXRhLCBsZW5ndGgpKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2Ug
VHlwZTo6Tm9uZToKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9Cit9CisKK3ZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6OnJlc29sdmUoRGVmZXJyZWRX
cmFwcGVyJiBwcm9taXNlKQoreworICAgIEFTU0VSVChtX3R5cGUgIT0gVHlwZTo6Tm9uZSk7Cisg
ICAgc3dpdGNoIChtX3R5cGUpIHsKKyAgICBjYXNlIFR5cGU6OkFycmF5QnVmZmVyOgorICAgICAg
ICBmdWxmaWxsUHJvbWlzZVdpdGhBcnJheUJ1ZmZlcihwcm9taXNlLCB0YWtlQXNBcnJheUJ1ZmZl
cigpLmdldCgpKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgVHlwZTo6QmxvYjoKKyAgICAg
ICAgcHJvbWlzZS5yZXNvbHZlV2l0aE5ld2x5Q3JlYXRlZCh0YWtlQXNCbG9iKCkpOworICAgICAg
ICByZXR1cm47CisgICAgY2FzZSBUeXBlOjpKU09OOgorICAgICAgICBmdWxmaWxsUHJvbWlzZVdp
dGhKU09OKHByb21pc2UsIHRha2VBc1RleHQoKSk7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNl
IFR5cGU6OlRleHQ6CisgICAgICAgIHByb21pc2UucmVzb2x2ZSh0YWtlQXNUZXh0KCkpOworICAg
ICAgICByZXR1cm47CisgICAgY2FzZSBUeXBlOjpOb25lOgorICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KK30KKwordm9pZCBGZXRjaEJvZHlDb25z
dW1lcjo6YXBwZW5kKGNvbnN0IGNoYXIqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkKK3sKKyAgICBp
ZiAoIW1fYnVmZmVyKSB7CisgICAgICAgIG1fYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
ZGF0YSwgbGVuZ3RoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBtX2J1ZmZlci0+YXBw
ZW5kKGRhdGEsIGxlbmd0aCk7Cit9CisKK3ZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6OmFwcGVuZChj
b25zdCB1bnNpZ25lZCBjaGFyKiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpCit7CisgICAgYXBwZW5k
KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEpLCBsZW5ndGgpOworfQorCitSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBGZXRjaEJvZHlDb25zdW1lcjo6dGFrZURhdGEoKQoreworICAgIHJl
dHVybiBXVEZNb3ZlKG1fYnVmZmVyKTsKK30KKworUmVmUHRyPEpTQzo6QXJyYXlCdWZmZXI+IEZl
dGNoQm9keUNvbnN1bWVyOjp0YWtlQXNBcnJheUJ1ZmZlcigpCit7CisgICAgaWYgKCFtX2J1ZmZl
cikKKyAgICAgICAgcmV0dXJuIEFycmF5QnVmZmVyOjp0cnlDcmVhdGUobnVsbHB0ciwgMCk7CisK
KyAgICBhdXRvIGFycmF5QnVmZmVyID0gbV9idWZmZXItPmNyZWF0ZUFycmF5QnVmZmVyKCk7Cisg
ICAgbV9idWZmZXIgPSBudWxscHRyOworICAgIHJldHVybiBhcnJheUJ1ZmZlcjsKK30KKworUmVm
PEJsb2I+IEZldGNoQm9keUNvbnN1bWVyOjp0YWtlQXNCbG9iKCkKK3sKKyAgICBBU1NFUlQobV9i
dWZmZXIpOworICAgIGlmICghbV9idWZmZXIpCisgICAgICAgIHJldHVybiBCbG9iOjpjcmVhdGUo
KTsKKworICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgdHJ5IHRvIG1vdmUgbV9idWZmZXIgdG8gQmxv
YiB3aXRob3V0IGRvaW5nIGV4dHJhIGNvcHkuCisgICAgcmV0dXJuIGJsb2JGcm9tRGF0YShyZWlu
dGVycHJldF9jYXN0PGNvbnN0IHVuc2lnbmVkIGNoYXIqPihtX2J1ZmZlci0+ZGF0YSgpKSwgbV9i
dWZmZXItPnNpemUoKSwgbV9jb250ZW50VHlwZSk7Cit9CisKK1N0cmluZyBGZXRjaEJvZHlDb25z
dW1lcjo6dGFrZUFzVGV4dCgpCit7CisgICAgaWYgKCFtX2J1ZmZlcikKKyAgICAgICAgcmV0dXJu
IFN0cmluZygpOworCisgICAgYXV0byB0ZXh0ID0gU3RyaW5nKG1fYnVmZmVyLT5kYXRhKCksIG1f
YnVmZmVyLT5zaXplKCkpOworICAgIG1fYnVmZmVyID0gbnVsbHB0cjsKKyAgICByZXR1cm4gdGV4
dDsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKEZFVENI
X0FQSSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5
Q29uc3VtZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3Vt
ZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5mYWExZmU3ZDI4YWM3YTZjYWUzMmFlYzc0NDQ1ZDk4MDgxMzQ0YjNi
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJv
ZHlDb25zdW1lci5oCkBAIC0wLDAgKzEsNzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYg
QXBwbGUgSW5jLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkLCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIHJlcXVp
cmVkIHRvIGJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0
aGVyIHRoZSBuYW1lIG9mIEFwcGxlIEluYy4gbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisgKiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorICogU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIK
KyAqIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisgKiBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShGRVRDSF9BUEkpCisK
KyNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFz
cyBCbG9iOworY2xhc3MgRGVmZXJyZWRXcmFwcGVyOworCitjbGFzcyBGZXRjaEJvZHlDb25zdW1l
ciB7CitwdWJsaWM6CisgICAgLy8gVHlwZSBpcyB1c2VkIGluIEZldGNoUmVzcG9uc2UuanMgYW5k
IHNob3VsZCBiZSBrZXB0IHN5bmNocm9uaXplZCB3aXRoIGl0LgorICAgIGVudW0gY2xhc3MgVHlw
ZSB7IE5vbmUsIEFycmF5QnVmZmVyLCBCbG9iLCBKU09OLCBUZXh0IH07CisKKyAgICBGZXRjaEJv
ZHlDb25zdW1lcihUeXBlIHR5cGUpIDogbV90eXBlKHR5cGUpIHsgfQorCisgICAgdm9pZCBhcHBl
bmQoY29uc3QgY2hhciogZGF0YSwgdW5zaWduZWQpOworICAgIHZvaWQgYXBwZW5kKGNvbnN0IHVu
c2lnbmVkIGNoYXIqIGRhdGEsIHVuc2lnbmVkKTsKKworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IHRha2VEYXRhKCk7CisgICAgUmVmUHRyPEpTQzo6QXJyYXlCdWZmZXI+IHRha2VBc0FycmF5QnVm
ZmVyKCk7CisgICAgUmVmPEJsb2I+IHRha2VBc0Jsb2IoKTsKKyAgICBTdHJpbmcgdGFrZUFzVGV4
dCgpOworCisgICAgdm9pZCBzZXRDb250ZW50VHlwZShjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBl
KSB7IG1fY29udGVudFR5cGUgPSBjb250ZW50VHlwZTsgfQorICAgIHZvaWQgc2V0VHlwZShUeXBl
IHR5cGUpIHsgbV90eXBlID0gdHlwZTsgfQorCisgICAgdm9pZCBjbGVhbigpIHsgbV9idWZmZXIg
PSBudWxscHRyOyB9CisKKyAgICB2b2lkIHJlc29sdmUoRGVmZXJyZWRXcmFwcGVyJik7CisgICAg
dm9pZCByZXNvbHZlV2l0aERhdGEoRGVmZXJyZWRXcmFwcGVyJiwgY29uc3QgdW5zaWduZWQgY2hh
ciosIHVuc2lnbmVkKTsKKworICAgIGJvb2wgaGFzRGF0YSgpIGNvbnN0IHsgcmV0dXJuICEhbV9i
dWZmZXI7IH0KKworcHJpdmF0ZToKKyAgICBUeXBlIG1fdHlwZTsKKyAgICBTdHJpbmcgbV9jb250
ZW50VHlwZTsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKK307CisKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShGRVRDSF9BUEkpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keU93bmVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5T3duZXIuY3BwCmluZGV4IDBmNDU3
OTRhMDY5ZTJlZTYwOGIxODM3OGUzZGYxZjRiY2U3MzUzYTUuLjk2NGJlNzcxMTA0ZGE2NzE5N2Qz
ZDUwNGM2OTg4MTQxOGNjODU2ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZmV0Y2gvRmV0Y2hCb2R5T3duZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0
Y2gvRmV0Y2hCb2R5T3duZXIuY3BwCkBAIC0xMzgsNyArMTM4LDcgQEAgdm9pZCBGZXRjaEJvZHlP
d25lcjo6dGV4dChEZWZlcnJlZFdyYXBwZXImJiBwcm9taXNlKQogICAgIG1fYm9keS50ZXh0KCp0
aGlzLCBXVEZNb3ZlKHByb21pc2UpKTsKIH0KIAotdm9pZCBGZXRjaEJvZHlPd25lcjo6bG9hZEJs
b2IoQmxvYiYgYmxvYiwgRmV0Y2hMb2FkZXI6OlR5cGUgdHlwZSkKK3ZvaWQgRmV0Y2hCb2R5T3du
ZXI6OmxvYWRCbG9iKEJsb2ImIGJsb2IsIEZldGNoQm9keUNvbnN1bWVyKiBjb25zdW1lcikKIHsK
ICAgICAvLyBDYW4gb25seSBiZSBjYWxsZWQgb25jZSBmb3IgYSBib2R5IGluc3RhbmNlLgogICAg
IEFTU0VSVChpc0Rpc3R1cmJlZCgpKTsKQEAgLTE1MCw3ICsxNTAsNyBAQCB2b2lkIEZldGNoQm9k
eU93bmVyOjpsb2FkQmxvYihCbG9iJiBibG9iLCBGZXRjaExvYWRlcjo6VHlwZSB0eXBlKQogICAg
IH0KIAogICAgIG1fYmxvYkxvYWRlciA9IHsgKnRoaXMgfTsKLSAgICBtX2Jsb2JMb2FkZXItPmxv
YWRlciA9IHN0ZDo6bWFrZV91bmlxdWU8RmV0Y2hMb2FkZXI+KHR5cGUsICptX2Jsb2JMb2FkZXIp
OworICAgIG1fYmxvYkxvYWRlci0+bG9hZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxGZXRjaExvYWRl
cj4oKm1fYmxvYkxvYWRlciwgY29uc3VtZXIpOwogCiAgICAgbV9ibG9iTG9hZGVyLT5sb2FkZXIt
PnN0YXJ0KCpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIGJsb2IpOwogICAgIGlmICghbV9ibG9i
TG9hZGVyLT5sb2FkZXItPmlzU3RhcnRlZCgpKSB7CkBAIC0xNjksMTEgKzE2OSw2IEBAIHZvaWQg
RmV0Y2hCb2R5T3duZXI6OmZpbmlzaEJsb2JMb2FkaW5nKCkKICAgICB1bnNldFBlbmRpbmdBY3Rp
dml0eSh0aGlzKTsKIH0KIAotdm9pZCBGZXRjaEJvZHlPd25lcjo6bG9hZGVkQmxvYkFzVGV4dChT
dHJpbmcmJiB0ZXh0KQotewotICAgIG1fYm9keS5sb2FkZWRBc1RleHQoV1RGTW92ZSh0ZXh0KSk7
Ci19Ci0KIHZvaWQgRmV0Y2hCb2R5T3duZXI6OmJsb2JMb2FkaW5nU3VjY2VlZGVkKCkKIHsKICAg
ICBBU1NFUlQobV9ib2R5LnR5cGUoKSA9PSBGZXRjaEJvZHk6OlR5cGU6OkJsb2IpOwpAQCAtMTg0
LDcgKzE3OSw3IEBAIHZvaWQgRmV0Y2hCb2R5T3duZXI6OmJsb2JMb2FkaW5nU3VjY2VlZGVkKCkK
ICAgICAgICAgbV9yZWFkYWJsZVN0cmVhbVNvdXJjZSA9IG51bGxwdHI7CiAgICAgfQogI2VuZGlm
Ci0KKyAgICBtX2JvZHkubG9hZGluZ1N1Y2NlZWRlZCgpOwogICAgIGZpbmlzaEJsb2JMb2FkaW5n
KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hC
b2R5T3duZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5T3duZXIu
aAppbmRleCAwNmEyMTI2NjVjMzlmYzM5MDdkMzhlMTNmNGNjMTMzY2M4NzJjN2I0Li44N2I3MmYw
YTQ5OWY5MzM2YTQwZmE0ODYzM2ExODkwOTIyM2IxZDk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keU93bmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlPd25lci5oCkBAIC01Miw3ICs1Miw3IEBAIHB1YmxpYzoK
ICAgICB2b2lkIGpzb24oRGVmZXJyZWRXcmFwcGVyJiYpOwogICAgIHZvaWQgdGV4dChEZWZlcnJl
ZFdyYXBwZXImJik7CiAKLSAgICB2b2lkIGxvYWRCbG9iKEJsb2ImLCBGZXRjaExvYWRlcjo6VHlw
ZSk7CisgICAgdm9pZCBsb2FkQmxvYihCbG9iJiwgRmV0Y2hCb2R5Q29uc3VtZXIqKTsKIAogICAg
IGJvb2wgaXNBY3RpdmUoKSBjb25zdCB7IHJldHVybiAhIW1fYmxvYkxvYWRlcjsgfQogCkBAIC02
Nyw4ICs2Nyw2IEBAIHByb3RlY3RlZDoKIAogcHJpdmF0ZToKICAgICAvLyBCbG9iIGxvYWRpbmcg
cm91dGluZXMKLSAgICB2b2lkIGxvYWRlZEJsb2JBc1RleHQoU3RyaW5nJiYpOwotICAgIHZvaWQg
bG9hZGVkQmxvYkFzQXJyYXlCdWZmZXIoUmVmUHRyPEFycmF5QnVmZmVyPiYmIGJ1ZmZlcikgeyBt
X2JvZHkubG9hZGVkQXNBcnJheUJ1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpOyB9CiAgICAgdm9pZCBi
bG9iQ2h1bmsoY29uc3QgY2hhciosIHNpemVfdCk7CiAgICAgdm9pZCBibG9iTG9hZGluZ1N1Y2Nl
ZWRlZCgpOwogICAgIHZvaWQgYmxvYkxvYWRpbmdGYWlsZWQoKTsKQEAgLTc4LDggKzc2LDYgQEAg
cHJpdmF0ZToKICAgICAgICAgQmxvYkxvYWRlcihGZXRjaEJvZHlPd25lciYpOwogCiAgICAgICAg
IC8vIEZldGNoTG9hZGVyQ2xpZW50IEFQSQotICAgICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmdB
c1RleHQoU3RyaW5nJiYgdGV4dCkgZmluYWwgeyBvd25lci5sb2FkZWRCbG9iQXNUZXh0KFdURk1v
dmUodGV4dCkpOyB9Ci0gICAgICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZ0FzQXJyYXlCdWZmZXIo
UmVmUHRyPEFycmF5QnVmZmVyPiYmIGJ1ZmZlcikgZmluYWwgeyBvd25lci5sb2FkZWRCbG9iQXNB
cnJheUJ1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpOyB9CiAgICAgICAgIHZvaWQgZGlkUmVjZWl2ZVJl
c3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBmaW5hbDsKICAgICAgICAgdm9pZCBkaWRS
ZWNlaXZlRGF0YShjb25zdCBjaGFyKiBkYXRhLCBzaXplX3Qgc2l6ZSkgZmluYWwgeyBvd25lci5i
bG9iQ2h1bmsoZGF0YSwgc2l6ZSk7IH0KICAgICAgICAgdm9pZCBkaWRGYWlsKCkgZmluYWw7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoSW50ZXJuYWxzLmpz
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEludGVybmFscy5qcwppbmRleCA0
NTJlYzc2MzUzNWE4MDllYThkODI5OGUwNjkzNWVlNWIzMDc2ZTRiLi5kNzUwMDRlMmY4MDg1YjE1
YzcxMDA3MDAxNWJlZGQxYjVhYmIyMmM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2ZldGNoL0ZldGNoSW50ZXJuYWxzLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZmV0Y2gvRmV0Y2hJbnRlcm5hbHMuanMKQEAgLTUxLDMgKzUxLDI3IEBAIGZ1bmN0aW9uIGZpbGxG
ZXRjaEhlYWRlcnMoaGVhZGVycywgaGVhZGVyc0luaXQpCiAgICAgICAgIEBIZWFkZXJzLnByb3Rv
dHlwZS5AYXBwZW5kRnJvbUpTLkBjYWxsKGhlYWRlcnMsIG5hbWUsIGhlYWRlcnNJbml0W25hbWVd
KTsKICAgICB9CiB9CisKK2Z1bmN0aW9uIGNvbnN1bWVTdHJlYW0ocmVzcG9uc2UsIHR5cGUpCit7
CisgICAgQGFzc2VydChyZXNwb25zZSBpbnN0YW5jZW9mIEBSZXNwb25zZSk7CisgICAgQGFzc2Vy
dChyZXNwb25zZS5AYm9keSBpbnN0YW5jZW9mIEBSZWFkYWJsZVN0cmVhbSk7CisKKyAgICBpZiAo
QGlzUmVhZGFibGVTdHJlYW1EaXN0dXJiZWQocmVzcG9uc2UuQGJvZHkpKQorICAgICAgICByZXR1
cm4gQFByb21pc2UuQHJlamVjdChuZXcgQFR5cGVFcnJvcigiQ2Fubm90IGNvbnN1bWUgYSBkaXN0
dXJiZWQgUmVzcG9uc2UgYm9keSBSZWFkYWJsZVN0cmVhbSIpKTsKKworICAgIHRyeSB7CisgICAg
ICAgIGxldCByZWFkZXIgPSBuZXcgQFJlYWRhYmxlU3RyZWFtUmVhZGVyKHJlc3BvbnNlLkBib2R5
KTsKKworICAgICAgICBAUmVzcG9uc2UucHJvdG90eXBlLkBzdGFydENvbnN1bWluZ1N0cmVhbS5A
Y2FsbChyZXNwb25zZSwgdHlwZSk7CisgICAgICAgIGxldCBwdWxsID0gKHJlc3VsdCkgPT4gewor
ICAgICAgICAgICAgaWYgKHJlc3VsdC5kb25lKQorICAgICAgICAgICAgICAgIHJldHVybiBAUmVz
cG9uc2UucHJvdG90eXBlLkBmaW5pc2hDb25zdW1pbmdTdHJlYW0uQGNhbGwocmVzcG9uc2UpOwor
ICAgICAgICAgICAgQFJlc3BvbnNlLnByb3RvdHlwZS5AY29uc3VtZUNodW5rLkBjYWxsKHJlc3Bv
bnNlLCByZXN1bHQudmFsdWUpOworICAgICAgICAgICAgcmV0dXJuIEBQcm9taXNlLnByb3RvdHlw
ZS5AdGhlbi5AY2FsbChAcmVhZEZyb21SZWFkYWJsZVN0cmVhbVJlYWRlcihyZWFkZXIpLCBwdWxs
KTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gQFByb21pc2UucHJvdG90eXBlLkB0aGVuLkBj
YWxsKEByZWFkRnJvbVJlYWRhYmxlU3RyZWFtUmVhZGVyKHJlYWRlciksIHB1bGwpOworICAgIH0g
Y2F0Y2goZSkgeworICAgICAgICByZXR1cm4gQFByb21pc2UuQHJlamVjdChlKTsKKyAgICB9Cit9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuY3BwCmluZGV4IDFi
MjNmMDQ5ZTY3YjQ2NzFjMWUxNmE2ODllMWRiMmI0NGFkMTNmODAuLmU2M2JjMWIyZDMzYzMyZDIx
ZTQ5Zjk5YTU3MjI2NDczMDE1MjYyZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0
Y2gvRmV0Y2hMb2FkZXIuY3BwCkBAIC04OSwyNCArODksMjYgQEAgdm9pZCBGZXRjaExvYWRlcjo6
c3RhcnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmV0Y2hSZXF1ZXN0
JiByZXEKICAgICBtX2lzU3RhcnRlZCA9IG1fbG9hZGVyOwogfQogCi1GZXRjaExvYWRlcjo6RmV0
Y2hMb2FkZXIoVHlwZSB0eXBlLCBGZXRjaExvYWRlckNsaWVudCYgY2xpZW50KQotICAgIDogbV90
eXBlKHR5cGUpCi0gICAgLCBtX2NsaWVudChjbGllbnQpCitGZXRjaExvYWRlcjo6RmV0Y2hMb2Fk
ZXIoRmV0Y2hMb2FkZXJDbGllbnQmIGNsaWVudCwgRmV0Y2hCb2R5Q29uc3VtZXIqIGNvbnN1bWVy
KQorICAgIDogbV9jbGllbnQoY2xpZW50KQorICAgICwgbV9jb25zdW1lcihjb25zdW1lcikKIHsK
IH0KIAogdm9pZCBGZXRjaExvYWRlcjo6c3RvcCgpCiB7Ci0gICAgbV9kYXRhID0gbnVsbHB0cjsK
KyAgICBpZiAobV9jb25zdW1lcikKKyAgICAgICAgbV9jb25zdW1lci0+Y2xlYW4oKTsKICAgICBp
ZiAobV9sb2FkZXIpCiAgICAgICAgIG1fbG9hZGVyLT5jYW5jZWwoKTsKIH0KIAogUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gRmV0Y2hMb2FkZXI6OnN0YXJ0U3RyZWFtaW5nKCkKIHsKLSAgICBBU1NFUlQo
bV90eXBlID09IFR5cGU6OkFycmF5QnVmZmVyKTsKLSAgICBtX3R5cGUgPSBUeXBlOjpTdHJlYW07
Ci0gICAgcmV0dXJuIFdURk1vdmUobV9kYXRhKTsKKyAgICBBU1NFUlQobV9jb25zdW1lcik7Cisg
ICAgYXV0byBmaXJzdENodW5rID0gbV9jb25zdW1lci0+dGFrZURhdGEoKTsKKyAgICBtX2NvbnN1
bWVyID0gbnVsbHB0cjsKKyAgICByZXR1cm4gZmlyc3RDaHVuazsKIH0KIAogdm9pZCBGZXRjaExv
YWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKHVuc2lnbmVkIGxvbmcsIGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmIHJlc3BvbnNlKQpAQCAtMTE0LDI5ICsxMTYsMTcgQEAgdm9pZCBGZXRjaExvYWRlcjo6
ZGlkUmVjZWl2ZVJlc3BvbnNlKHVuc2lnbmVkIGxvbmcsIGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
IHJlc3AKICAgICBtX2NsaWVudC5kaWRSZWNlaXZlUmVzcG9uc2UocmVzcG9uc2UpOwogfQogCi0v
LyBGSVhNRTogV2Ugc2hvdWxkIG1ha2UgdGV4dCBhbmQgYmxvYiBjcmVhdGlvbiBtb3JlIGVmZmlj
aWVudC4KLS8vIFdlIG1pZ2h0IGFsc28gd2FudCB0byBtZXJnZSB0aGlzIGNsYXNzIHdpdGggRmls
ZVJlYWRlckxvYWRlci4KIHZvaWQgRmV0Y2hMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IGNo
YXIqIHZhbHVlLCBpbnQgc2l6ZSkKIHsKLSAgICBpZiAobV90eXBlID09IFR5cGU6OlN0cmVhbSkg
eworICAgIGlmICghbV9jb25zdW1lcikgewogICAgICAgICBtX2NsaWVudC5kaWRSZWNlaXZlRGF0
YSh2YWx1ZSwgc2l6ZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgaWYgKCFtX2RhdGEp
IHsKLSAgICAgICAgbV9kYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUodmFsdWUsIHNpemUpOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIG1fZGF0YS0+YXBwZW5kKHZhbHVlLCBzaXplKTsK
KyAgICBtX2NvbnN1bWVyLT5hcHBlbmQodmFsdWUsIHNpemUpOwogfQogCiB2b2lkIEZldGNoTG9h
ZGVyOjpkaWRGaW5pc2hMb2FkaW5nKHVuc2lnbmVkIGxvbmcsIGRvdWJsZSkKIHsKLSAgICBpZiAo
bV90eXBlID09IFR5cGU6OkFycmF5QnVmZmVyKQotICAgICAgICBtX2NsaWVudC5kaWRGaW5pc2hM
b2FkaW5nQXNBcnJheUJ1ZmZlcihtX2RhdGEgPyBtX2RhdGEtPmNyZWF0ZUFycmF5QnVmZmVyKCkg
OiBBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlKG51bGxwdHIsIDApKTsKLSAgICBlbHNlIGlmIChtX3R5
cGUgPT0gVHlwZTo6VGV4dCkKLSAgICAgICAgbV9jbGllbnQuZGlkRmluaXNoTG9hZGluZ0FzVGV4
dChtX2RhdGEgPyBUZXh0UmVzb3VyY2VEZWNvZGVyOjpjcmVhdGUoQVNDSUlMaXRlcmFsKCJ0ZXh0
L3BsYWluIiksICJVVEYtOCIpLT5kZWNvZGVBbmRGbHVzaChtX2RhdGEtPmRhdGEoKSwgbV9kYXRh
LT5zaXplKCkpOiBTdHJpbmcoKSk7Ci0gICAgbV9kYXRhID0gbnVsbHB0cjsKLQogICAgIG1fY2xp
ZW50LmRpZFN1Y2NlZWQoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9mZXRjaC9GZXRjaExvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRj
aExvYWRlci5oCmluZGV4IGQ0NzNmZjE3NDUxZmNhNWMxYTcxM2ZiNTQzYmQwYjZhMGIxZGUwMmIu
LmRiYjgyZmJlYmQ1NTllNzdkMWNlMWI2MTZiYzZkMGI0ZjFhZWYzYzMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyLmgKQEAgLTI2LDEyICsyNiwxMSBAQAogICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIEZldGNoTG9hZGVyX2gKLSNkZWZpbmUgRmV0Y2hM
b2FkZXJfaAorI3ByYWdtYSBvbmNlCiAKICNpZiBFTkFCTEUoRkVUQ0hfQVBJKQogCi0jaW5jbHVk
ZSAiU2hhcmVkQnVmZmVyLmgiCisjaW5jbHVkZSAiRmV0Y2hCb2R5Q29uc3VtZXIuaCIKICNpbmNs
dWRlICJUaHJlYWRhYmxlTG9hZGVyLmgiCiAjaW5jbHVkZSAiVGhyZWFkYWJsZUxvYWRlckNsaWVu
dC5oIgogCkBAIC00NCw5ICs0Myw3IEBAIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiAK
IGNsYXNzIEZldGNoTG9hZGVyIGZpbmFsIDogcHVibGljIFRocmVhZGFibGVMb2FkZXJDbGllbnQg
ewogcHVibGljOgotICAgIGVudW0gY2xhc3MgVHlwZSB7IEFycmF5QnVmZmVyLCBTdHJlYW0sIFRl
eHQgfTsKLQotICAgIEZldGNoTG9hZGVyKFR5cGUsIEZldGNoTG9hZGVyQ2xpZW50Jik7CisgICAg
RmV0Y2hMb2FkZXIoRmV0Y2hMb2FkZXJDbGllbnQmLCBGZXRjaEJvZHlDb25zdW1lciopOwogCiAg
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc3RhcnRTdHJlYW1pbmcoKTsKIApAQCAtNjMsMTggKzYw
LDEzIEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKHVuc2lnbmVkIGxvbmcs
IGRvdWJsZSkgZmluYWw7CiAgICAgdm9pZCBkaWRGYWlsKGNvbnN0IFJlc291cmNlRXJyb3ImKSBm
aW5hbDsKIAotICAgIFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQotCiBwcml2
YXRlOgotICAgIFR5cGUgbV90eXBlIHsgVHlwZTo6QXJyYXlCdWZmZXIgfTsKICAgICBGZXRjaExv
YWRlckNsaWVudCYgbV9jbGllbnQ7CiAgICAgUmVmUHRyPFRocmVhZGFibGVMb2FkZXI+IG1fbG9h
ZGVyOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fZGF0YTsKKyAgICBGZXRjaEJvZHlDb25z
dW1lciogbV9jb25zdW1lcjsKICAgICBib29sIG1faXNTdGFydGVkIHsgZmFsc2UgfTsKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShGRVRDSF9BUEkpCi0K
LSNlbmRpZiAvLyBGZXRjaExvYWRlcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2ZldGNoL0ZldGNoTG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Zl
dGNoL0ZldGNoTG9hZGVyQ2xpZW50LmgKaW5kZXggZDA5ZmFkNTNlMjdlNmQ4YWMyMmFkYjdjYTlm
NDUxMDI3OGRhNDE1MC4uZTg4ZTk5NDE4Y2Q5OTE0YTFlZTQ4MTg3N2Q2MWFkY2I2ZTA0ZWFmNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlckNsaWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXJDbGllbnQu
aApAQCAtNDcsOCArNDcsNiBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2
ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSB7IH0KIAotICAgIHZpcnR1YWwgdm9p
ZCBkaWRGaW5pc2hMb2FkaW5nQXNUZXh0KFN0cmluZyYmKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQg
ZGlkRmluaXNoTG9hZGluZ0FzQXJyYXlCdWZmZXIoUmVmUHRyPEpTQzo6QXJyYXlCdWZmZXI+JiYp
IHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBjaGFyKiwgc2l6ZV90
KSB7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBkaWRTdWNjZWVkKCkgPSAwOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAKaW5kZXggYzJlOGFiYWFiMTFh
MjAxNTQwZDhiZDEyODUwZTUxZTcwYjJlYTMwMS4uNjczOGZhMzE4M2M5NjExNTkxMTJjZTE4Y2Qw
NTBjYjg4MGRhODQwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9G
ZXRjaFJlc3BvbnNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNo
UmVzcG9uc2UuY3BwCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5o
IgogI2luY2x1ZGUgIkZldGNoUmVxdWVzdC5oIgogI2luY2x1ZGUgIkhUVFBQYXJzZXJzLmgiCisj
aW5jbHVkZSAiSlNCbG9iLmgiCiAjaW5jbHVkZSAiSlNGZXRjaFJlc3BvbnNlLmgiCiAjaW5jbHVk
ZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgogCkBAIC05MywxMyArOTQsMTEgQEAgRmV0Y2hS
ZXNwb25zZTo6RmV0Y2hSZXNwb25zZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBG
ZXRjaEJvZHkmJiBib2R5LAogewogfQogCi1SZWZQdHI8RmV0Y2hSZXNwb25zZT4gRmV0Y2hSZXNw
b25zZTo6Y2xvbmUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgRXhjZXB0aW9uQ29k
ZSYgZWMpCitSZWY8RmV0Y2hSZXNwb25zZT4gRmV0Y2hSZXNwb25zZTo6Y2xvbmVGb3JKUygpCiB7
Ci0gICAgaWYgKGlzRGlzdHVyYmVkKCkpIHsKLSAgICAgICAgZWMgPSBUeXBlRXJyb3I7Ci0gICAg
ICAgIHJldHVybiBudWxscHRyOwotICAgIH0KLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBGZXRj
aFJlc3BvbnNlKGNvbnRleHQsIEZldGNoQm9keShtX2JvZHkpLCBGZXRjaEhlYWRlcnM6OmNyZWF0
ZShoZWFkZXJzKCkpLCBSZXNvdXJjZVJlc3BvbnNlKG1fcmVzcG9uc2UpKSk7CisgICAgQVNTRVJU
KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CisgICAgQVNTRVJUKCFpc0Rpc3R1cmJlZCgpKTsK
KyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBGZXRjaFJlc3BvbnNlKCpzY3JpcHRFeGVjdXRpb25D
b250ZXh0KCksIEZldGNoQm9keShtX2JvZHkpLCBGZXRjaEhlYWRlcnM6OmNyZWF0ZShoZWFkZXJz
KCkpLCBSZXNvdXJjZVJlc3BvbnNlKG1fcmVzcG9uc2UpKSk7CiB9CiAKIHZvaWQgRmV0Y2hSZXNw
b25zZTo6ZmV0Y2goU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgRmV0Y2hSZXF1ZXN0
JiByZXF1ZXN0LCBGZXRjaFByb21pc2UmJiBwcm9taXNlKQpAQCAtMTMwLDYgKzEyOSw4IEBAIHZv
aWQgRmV0Y2hSZXNwb25zZTo6Qm9keUxvYWRlcjo6ZGlkU3VjY2VlZCgpCiAgICAgICAgIG1fcmVz
cG9uc2UubV9yZWFkYWJsZVN0cmVhbVNvdXJjZSA9IG51bGxwdHI7CiAgICAgfQogI2VuZGlmCisg
ICAgbV9yZXNwb25zZS5tX2JvZHkubG9hZGluZ1N1Y2NlZWRlZCgpOworCiAgICAgaWYgKG1fbG9h
ZGVyLT5pc1N0YXJ0ZWQoKSkKICAgICAgICAgbV9yZXNwb25zZS5tX2JvZHlMb2FkZXIgPSBOdWxs
b3B0OwogICAgIG1fcmVzcG9uc2UudW5zZXRQZW5kaW5nQWN0aXZpdHkoJm1fcmVzcG9uc2UpOwpA
QCAtMTg3LDE0ICsxODgsOSBAQCB2b2lkIEZldGNoUmVzcG9uc2U6OkJvZHlMb2FkZXI6OmRpZFJl
Y2VpdmVEYXRhKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBzaXplKQogI2VuZGlmCiB9CiAKLXZv
aWQgRmV0Y2hSZXNwb25zZTo6Qm9keUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZ0FzQXJyYXlCdWZm
ZXIoUmVmUHRyPEFycmF5QnVmZmVyPiYmIGJ1ZmZlcikKLXsKLSAgICBtX3Jlc3BvbnNlLmJvZHko
KS5sb2FkZWRBc0FycmF5QnVmZmVyKFdURk1vdmUoYnVmZmVyKSk7Ci19Ci0KIGJvb2wgRmV0Y2hS
ZXNwb25zZTo6Qm9keUxvYWRlcjo6c3RhcnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4
dCwgY29uc3QgRmV0Y2hSZXF1ZXN0JiByZXF1ZXN0KQogewotICAgIG1fbG9hZGVyID0gc3RkOjpt
YWtlX3VuaXF1ZTxGZXRjaExvYWRlcj4oRmV0Y2hMb2FkZXI6OlR5cGU6OkFycmF5QnVmZmVyLCAq
dGhpcyk7CisgICAgbV9sb2FkZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEZldGNoTG9hZGVyPigqdGhp
cywgJm1fcmVzcG9uc2UubV9ib2R5LmNvbnN1bWVyKCkpOwogICAgIG1fbG9hZGVyLT5zdGFydChj
b250ZXh0LCByZXF1ZXN0KTsKICAgICByZXR1cm4gbV9sb2FkZXItPmlzU3RhcnRlZCgpOwogfQpA
QCAtMjA1LDcgKzIwMSw0NiBAQCB2b2lkIEZldGNoUmVzcG9uc2U6OkJvZHlMb2FkZXI6OnN0b3Ao
KQogICAgICAgICBtX2xvYWRlci0+c3RvcCgpOwogfQogCit2b2lkIEZldGNoUmVzcG9uc2U6OmNv
bnN1bWUodW5zaWduZWQgdHlwZSwgRGVmZXJyZWRXcmFwcGVyJiYgd3JhcHBlcikKK3sKKyAgICBB
U1NFUlQodHlwZSA8PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oRmV0Y2hCb2R5Q29uc3VtZXI6OlR5
cGU6OlRleHQpKTsKKworICAgIHN3aXRjaCAoc3RhdGljX2Nhc3Q8RmV0Y2hCb2R5Q29uc3VtZXI6
OlR5cGU+KHR5cGUpKSB7CisgICAgY2FzZSBGZXRjaEJvZHlDb25zdW1lcjo6VHlwZTo6QXJyYXlC
dWZmZXI6CisgICAgICAgIGFycmF5QnVmZmVyKFdURk1vdmUod3JhcHBlcikpOworICAgICAgICBy
ZXR1cm47CisgICAgY2FzZSBGZXRjaEJvZHlDb25zdW1lcjo6VHlwZTo6QmxvYjoKKyAgICAgICAg
YmxvYihXVEZNb3ZlKHdyYXBwZXIpKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgRmV0Y2hC
b2R5Q29uc3VtZXI6OlR5cGU6OkpTT046CisgICAgICAgIGpzb24oV1RGTW92ZSh3cmFwcGVyKSk7
CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIEZldGNoQm9keUNvbnN1bWVyOjpUeXBlOjpUZXh0
OgorICAgICAgICB0ZXh0KFdURk1vdmUod3JhcHBlcikpOworICAgICAgICByZXR1cm47CisgICAg
Y2FzZSBGZXRjaEJvZHlDb25zdW1lcjo6VHlwZTo6Tm9uZToKKyAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9Cit9CisKICNpZiBFTkFCTEUoU1RSRUFN
U19BUEkpCit2b2lkIEZldGNoUmVzcG9uc2U6OnN0YXJ0Q29uc3VtaW5nU3RyZWFtKHVuc2lnbmVk
IHR5cGUpCit7CisgICAgbV9pc0Rpc3R1cmJlZCA9IHRydWU7CisgICAgbV9jb25zdW1lci5zZXRU
eXBlKHN0YXRpY19jYXN0PEZldGNoQm9keUNvbnN1bWVyOjpUeXBlPih0eXBlKSk7Cit9CisKK3Zv
aWQgRmV0Y2hSZXNwb25zZTo6Y29uc3VtZUNodW5rKFJlZjxKU0M6OlVpbnQ4QXJyYXk+JiYgY2h1
bmspCit7CisgICAgbV9jb25zdW1lci5hcHBlbmQoY2h1bmstPmRhdGEoKSwgY2h1bmstPmJ5dGVM
ZW5ndGgoKSk7Cit9CisKK3ZvaWQgRmV0Y2hSZXNwb25zZTo6ZmluaXNoQ29uc3VtaW5nU3RyZWFt
KERlZmVycmVkV3JhcHBlciYmIHByb21pc2UpCit7CisgICAgbV9jb25zdW1lci5yZXNvbHZlKHBy
b21pc2UpOworfQorCiB2b2lkIEZldGNoUmVzcG9uc2U6OmNvbnN1bWVCb2R5QXNTdHJlYW0oKQog
ewogICAgIEFTU0VSVChtX3JlYWRhYmxlU3RyZWFtU291cmNlKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmgKaW5kZXggNTczYzI3MDhkOGRjOTRkZGE4MTA1
YjRjOTYwYzUxNTk2ODU0MjA0Zi4uODQ4NjI1MTQwNTA3ZDgwYzgzNmQ3MTk1NWExYjNiNmZkYjI4
YjI2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3Bv
bnNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmgK
QEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJGZXRjaEJvZHlPd25lci5oIgogI2luY2x1ZGUg
IkZldGNoSGVhZGVycy5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVzcG9uc2UuaCIKKyNpbmNsdWRl
IDxydW50aW1lL1R5cGVkQXJyYXlzLmg+CiAKIG5hbWVzcGFjZSBKU0MgewogY2xhc3MgQXJyYXlC
dWZmZXI7CkBAIC01OSw2ICs2MCwxMyBAQCBwdWJsaWM6CiAgICAgdXNpbmcgRmV0Y2hQcm9taXNl
ID0gRE9NUHJvbWlzZTxGZXRjaFJlc3BvbnNlPjsKICAgICBzdGF0aWMgdm9pZCBmZXRjaChTY3Jp
cHRFeGVjdXRpb25Db250ZXh0JiwgRmV0Y2hSZXF1ZXN0JiwgRmV0Y2hQcm9taXNlJiYpOwogCisg
ICAgdm9pZCBjb25zdW1lKHVuc2lnbmVkLCBEZWZlcnJlZFdyYXBwZXImJik7CisjaWYgRU5BQkxF
KFNUUkVBTVNfQVBJKQorICAgIHZvaWQgc3RhcnRDb25zdW1pbmdTdHJlYW0odW5zaWduZWQpOwor
ICAgIHZvaWQgY29uc3VtZUNodW5rKFJlZjxKU0M6OlVpbnQ4QXJyYXk+JiYpOworICAgIHZvaWQg
ZmluaXNoQ29uc3VtaW5nU3RyZWFtKERlZmVycmVkV3JhcHBlciYmKTsKKyNlbmRpZgorCiAgICAg
dm9pZCBzZXRTdGF0dXMoaW50LCBjb25zdCBTdHJpbmcmLCBFeGNlcHRpb25Db2RlJik7CiAgICAg
dm9pZCBpbml0aWFsaXplV2l0aChKU0M6OkV4ZWNTdGF0ZSYsIEpTQzo6SlNWYWx1ZSk7CiAKQEAg
LTcwLDcgKzc4LDcgQEAgcHVibGljOgogICAgIGNvbnN0IFN0cmluZyYgc3RhdHVzVGV4dCgpIGNv
bnN0IHsgcmV0dXJuIG1fcmVzcG9uc2UuaHR0cFN0YXR1c1RleHQoKTsgfQogCiAgICAgRmV0Y2hI
ZWFkZXJzJiBoZWFkZXJzKCkgeyByZXR1cm4gbV9oZWFkZXJzOyB9Ci0gICAgUmVmUHRyPEZldGNo
UmVzcG9uc2U+IGNsb25lKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBFeGNlcHRpb25Db2RlJik7
CisgICAgUmVmPEZldGNoUmVzcG9uc2U+IGNsb25lRm9ySlMoKTsKIAogI2lmIEVOQUJMRShTVFJF
QU1TX0FQSSkKICAgICBSZWFkYWJsZVN0cmVhbVNvdXJjZSogY3JlYXRlUmVhZGFibGVTdHJlYW1T
b3VyY2UoKTsKQEAgLTEwNSw3ICsxMTMsNiBAQCBwcml2YXRlOgogICAgICAgICB2b2lkIGRpZEZh
aWwoKSBmaW5hbDsKICAgICAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYpIGZpbmFsOwogICAgICAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IGNo
YXIqLCBzaXplX3QpIGZpbmFsOwotICAgICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmdBc0FycmF5
QnVmZmVyKFJlZlB0cjxBcnJheUJ1ZmZlcj4mJikgZmluYWw7CiAKICAgICAgICAgRmV0Y2hSZXNw
b25zZSYgbV9yZXNwb25zZTsKICAgICAgICAgT3B0aW9uYWw8RmV0Y2hQcm9taXNlPiBtX3Byb21p
c2U7CkBAIC0xMTYsNiArMTIzLDggQEAgcHJpdmF0ZToKICAgICBSZWY8RmV0Y2hIZWFkZXJzPiBt
X2hlYWRlcnM7CiAgICAgT3B0aW9uYWw8Qm9keUxvYWRlcj4gbV9ib2R5TG9hZGVyOwogICAgIG11
dGFibGUgU3RyaW5nIG1fcmVzcG9uc2VVUkw7CisKKyAgICBGZXRjaEJvZHlDb25zdW1lciBtX2Nv
bnN1bWVyIHsgRmV0Y2hCb2R5Q29uc3VtZXI6OlR5cGU6OkFycmF5QnVmZmVyICB9OwogfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9mZXRjaC9GZXRjaFJlc3BvbnNlLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gv
RmV0Y2hSZXNwb25zZS5pZGwKaW5kZXggM2ZiMTQ4ODE0MzU0Y2U3ZDFmODQwMTgwYmM5OTBkZmIy
M2QwYTkyYi4uYmUzYzJjZTAyOTM3ZjYyMzhmODY1ZDkyMTkyMjZiNmZiMWQxNzAxYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmlkbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaWRsCkBAIC01Mywx
MSArNTMsMjUgQEAgaW50ZXJmYWNlIEZldGNoUmVzcG9uc2UgewogICAgIHJlYWRvbmx5IGF0dHJp
YnV0ZSBGZXRjaEhlYWRlcnMgaGVhZGVyczsKICAgICBbSlNCdWlsdGluXSByZWFkb25seSBhdHRy
aWJ1dGUgUmVhZGFibGVTdHJlYW0/IGJvZHk7CiAKLSAgICBbTmV3T2JqZWN0LCBDYWxsV2l0aD1T
Y3JpcHRFeGVjdXRpb25Db250ZXh0LCBSYWlzZXNFeGNlcHRpb25dIEZldGNoUmVzcG9uc2UgY2xv
bmUoKTsKKyAgICAvLyBDb3B5IG9mIEZldGNoQm9keSBJREwgYXMgd2Ugd2FudCB0byBpbXBsZW1l
bnQgc29tZSBvZiB0aGVzZSBhcyBidWlsdC1pbnMuCisgICAgW0ltcGxlbWVudGVkQXM9aXNEaXN0
dXJiZWRdIHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuIGJvZHlVc2VkOworICAgIFtKU0J1aWx0
aW5dIFByb21pc2UgYXJyYXlCdWZmZXIoKTsKKyAgICBbSlNCdWlsdGluXSBQcm9taXNlIGJsb2Io
KTsKKyAgICBbSlNCdWlsdGluXSBQcm9taXNlIGZvcm1EYXRhKCk7CisgICAgW0pTQnVpbHRpbl0g
UHJvbWlzZSBqc29uKCk7CisgICAgW0pTQnVpbHRpbl0gUHJvbWlzZSB0ZXh0KCk7CiAKKyAgICBb
SlNCdWlsdGluXSBGZXRjaFJlc3BvbnNlIGNsb25lKCk7CisKKyAgICBbUHJpdmF0ZUlkZW50aWZp
ZXIsIE5ld09iamVjdF0gRmV0Y2hSZXNwb25zZSBjbG9uZUZvckpTKCk7CisKKyAgICBbQ29uZGl0
aW9uYWw9U1RSRUFNU19BUEksIFByaXZhdGVJZGVudGlmaWVyXSB2b2lkIHN0YXJ0Q29uc3VtaW5n
U3RyZWFtKHVuc2lnbmVkIHNob3J0IHR5cGUpOworICAgIFtDb25kaXRpb25hbD1TVFJFQU1TX0FQ
SSwgUHJpdmF0ZUlkZW50aWZpZXJdIHZvaWQgY29uc3VtZUNodW5rKFVpbnQ4QXJyYXkgY2h1bmsp
OworICAgIFtDb25kaXRpb25hbD1TVFJFQU1TX0FQSSwgUHJpdmF0ZUlkZW50aWZpZXJdIFByb21p
c2UgZmluaXNoQ29uc3VtaW5nU3RyZWFtKCk7CisKKyAgICBbUHJpdmF0ZUlkZW50aWZpZXJdIFBy
b21pc2UgY29uc3VtZSh1bnNpZ25lZCBzaG9ydCB0eXBlKTsKICAgICBbUHJpdmF0ZUlkZW50aWZp
ZXIsIFJhaXNlc0V4Y2VwdGlvbl0gdm9pZCBzZXRTdGF0dXModW5zaWduZWQgc2hvcnQgc3RhdHVz
LCBET01TdHJpbmcgc3RhdHVzVGV4dCk7CiAgICAgW0NhbGxXaXRoPVNjcmlwdFN0YXRlLCBQcml2
YXRlSWRlbnRpZmllcl0gdm9pZCBpbml0aWFsaXplV2l0aChhbnkgYm9keSk7CiAgICAgW1ByaXZh
dGVJZGVudGlmaWVyLCBOZXdPYmplY3RdIFJlYWRhYmxlU3RyZWFtU291cmNlIGNyZWF0ZVJlYWRh
YmxlU3RyZWFtU291cmNlKCk7CiAgICAgW1ByaXZhdGVJZGVudGlmaWVyXSBib29sZWFuIGlzRGlz
dHVyYmVkKCk7CiB9OwotRmV0Y2hSZXNwb25zZSBpbXBsZW1lbnRzIEZldGNoQm9keTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5qcyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5qcwppbmRleCBjNGFjYzAx
MDExZjRjMWVlNjM3MGRjMzM0MTMzOWRiNjg1ODE5MDNlLi4yZGE5YWMyY2NmMGVlY2ZjOWE5MTk0
YmQxNzFlMDc5NWVkOTAzMmNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Zl
dGNoL0ZldGNoUmVzcG9uc2UuanMKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9G
ZXRjaFJlc3BvbnNlLmpzCkBAIC00OCw2ICs0OCwxMiBAQCBmdW5jdGlvbiBpbml0aWFsaXplRmV0
Y2hSZXNwb25zZShib2R5LCBpbml0KQogICAgIGlmIChib2R5ICE9PSBAdW5kZWZpbmVkICYmIGJv
ZHkgIT09IG51bGwpIHsKICAgICAgICAgaWYgKHN0YXR1cyA9PSAxMDEgfHwgc3RhdHVzID09IDIw
NCB8fCBzdGF0dXMgPT0gMjA1IHx8IHN0YXR1cyA9PSAzMDQpCiAgICAgICAgICAgICB0aHJvdyBu
ZXcgQFR5cGVFcnJvcigiUmVzcG9uc2UgY2Fubm90IGhhdmUgYSBib2R5IHdpdGggdGhlIGdpdmVu
IHN0YXR1cyIpOworCisgICAgICAgIC8vIEZJWE1FOiBVc2UgQGlzUmVhZGFibGVTdHJlYW0gb25j
ZSBpdCBpcyBubyBsb25nZXIgZ3VhcmRlZCBieSBTVFJFQU1TX0FQSSBndWFyZC4KKyAgICAgICAg
bGV0IGlzQm9keVJlYWRhYmxlU3RyZWFtID0gKEBpc09iamVjdChib2R5KSAmJiAhIWJvZHkuQHVu
ZGVybHlpbmdTb3VyY2UpOworICAgICAgICBpZiAoaXNCb2R5UmVhZGFibGVTdHJlYW0pCisgICAg
ICAgICAgdGhpcy5AYm9keSA9IGJvZHk7CisKICAgICAgICAgdGhpcy5AaW5pdGlhbGl6ZVdpdGgo
Ym9keSk7CiAgICAgfQogCkBAIC02OCwzICs3NCw3MyBAQCBmdW5jdGlvbiBib2R5KCkKICAgICB9
CiAgICAgcmV0dXJuIHRoaXMuQGJvZHk7CiB9CisKK2Z1bmN0aW9uIGNsb25lKCkKK3sKKyAgICBp
ZiAoIXRoaXMgaW5zdGFuY2VvZiBAUmVzcG9uc2UpCisgICAgICAgIHRocm93IG5ldyBAVHlwZUVy
cm9yKCJGdW5jdGlvbiBzaG91bGQgYmUgY2FsbGVkIG9uIGEgUmVzcG9uc2UiKTsKKworICAgIGlm
IChAUmVzcG9uc2UucHJvdG90eXBlLkBpc0Rpc3R1cmJlZC5AY2FsbCh0aGlzKSkKKyAgICAgICAg
dGhyb3cgbmV3IEBUeXBlRXJyb3IoIkNhbm5vdCBjbG9uZSBhIGRpc3R1cmJlZCBSZXNwb25zZSIp
OworCisgICAgdmFyIGNsb25lZCA9IEBSZXNwb25zZS5wcm90b3R5cGUuQGNsb25lRm9ySlMuQGNh
bGwodGhpcyk7CisgICAgaWYgKHRoaXMuQGJvZHkpIHsKKyAgICAgICAgdmFyIHRlZWRSZWFkYWJs
ZVN0cmVhbXMgPSBAdGVlUmVhZGFibGVTdHJlYW0odGhpcy5AYm9keSwgZmFsc2UpOworICAgICAg
ICB0aGlzLkBib2R5ID0gdGVlZFJlYWRhYmxlU3RyZWFtc1swXTsKKyAgICAgICAgY2xvbmVkLkBi
b2R5ID0gdGVlZFJlYWRhYmxlU3RyZWFtc1sxXTsKKyAgICB9CisgICAgcmV0dXJuIGNsb25lZDsK
K30KKworLy8gY29uc3VtZSBhbmQgY29uc3VtZVN0cmVhbSBzaW5nbGUgcGFyYW1ldGVyIHNob3Vs
ZCBiZSBrZXB0IGluIHN5bmMgd2l0aCBGZXRjaEJvZHk6OkNvbnN1bWVyVHlwZS4KK2Z1bmN0aW9u
IGFycmF5QnVmZmVyKCkKK3sKKyAgICBpZiAoIXRoaXMgaW5zdGFuY2VvZiBAUmVzcG9uc2UpCisg
ICAgICAgIHRocm93IG5ldyBAVHlwZUVycm9yKCJGdW5jdGlvbiBzaG91bGQgYmUgY2FsbGVkIG9u
IGEgUmVzcG9uc2UiKTsKKworICAgIGlmICghdGhpcy5AYm9keSkKKyAgICAgICAgcmV0dXJuIEBS
ZXNwb25zZS5wcm90b3R5cGUuQGNvbnN1bWUuQGNhbGwodGhpcywgMSk7CisKKyAgICByZXR1cm4g
QGNvbnN1bWVTdHJlYW0odGhpcywgMSk7Cit9CisKK2Z1bmN0aW9uIGJsb2IoKQoreworICAgIGlm
ICghdGhpcyBpbnN0YW5jZW9mIEBSZXNwb25zZSkKKyAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJy
b3IoIkZ1bmN0aW9uIHNob3VsZCBiZSBjYWxsZWQgb24gYSBSZXNwb25zZSIpOworCisgICAgaWYg
KCF0aGlzLkBib2R5KQorICAgICAgICByZXR1cm4gQFJlc3BvbnNlLnByb3RvdHlwZS5AY29uc3Vt
ZS5AY2FsbCh0aGlzLCAyKTsKKworICAgIHJldHVybiBAY29uc3VtZVN0cmVhbSh0aGlzLCAyKTsK
K30KKworZnVuY3Rpb24gZm9ybURhdGEoKQoreworICAgIGlmICghdGhpcyBpbnN0YW5jZW9mIEBS
ZXNwb25zZSkKKyAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3IoIkZ1bmN0aW9uIHNob3VsZCBi
ZSBjYWxsZWQgb24gYSBSZXNwb25zZSIpOworCisgICAgcmV0dXJuIEBQcm9taXNlLkByZWplY3Qo
Ik5vdCBpbXBsZW1lbnRlZCIpOworfQorCitmdW5jdGlvbiBqc29uKCkKK3sKKyAgICBpZiAoIXRo
aXMgaW5zdGFuY2VvZiBAUmVzcG9uc2UpCisgICAgICAgIHRocm93IG5ldyBAVHlwZUVycm9yKCJG
dW5jdGlvbiBzaG91bGQgYmUgY2FsbGVkIG9uIGEgUmVzcG9uc2UiKTsKKworICAgIGlmICghdGhp
cy5AYm9keSkKKyAgICAgICAgcmV0dXJuIEBSZXNwb25zZS5wcm90b3R5cGUuQGNvbnN1bWUuQGNh
bGwodGhpcywgMyk7CisKKyAgICByZXR1cm4gQGNvbnN1bWVTdHJlYW0odGhpcywgMyk7Cit9CisK
K2Z1bmN0aW9uIHRleHQoKQoreworICAgIGlmICghdGhpcyBpbnN0YW5jZW9mIEBSZXNwb25zZSkK
KyAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3IoIkZ1bmN0aW9uIHNob3VsZCBiZSBjYWxsZWQg
b24gYSBSZXNwb25zZSIpOworCisgICAgaWYgKCF0aGlzLkBib2R5KQorICAgICAgICByZXR1cm4g
QFJlc3BvbnNlLnByb3RvdHlwZS5AY29uc3VtZS5AY2FsbCh0aGlzLCA0KTsKKworICAgIHJldHVy
biBAY29uc3VtZVN0cmVhbSh0aGlzLCA0KTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA0ZjVlOGJmMzAzNzFkZTYxNDcxOTY4
YjA5YjI3YWVlMzQ3ZWU3NjQ3Li4zNGM0YmJhMzRhODUzZTY4YTRkNDI5YWZkOTA2Y2NiMjM3NDU4
ZTBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCkBAIC0xNjMxLDYgKzE2MzEsNyBAQAogCQk0MUJGNzAwRjBGRTg2RjYxMDA1RThERUMg
LyogUGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWwuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFCRjcwMEQwRkU4NkY2MTAwNUU4REVDIC8qIFBsYXRm
b3JtTWVzc2FnZVBvcnRDaGFubmVsLmNwcCAqLzsgfTsKIAkJNDFCRjcwMTAwRkU4NkY2MTAwNUU4
REVDIC8qIFBsYXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUJGNzAwRTBGRTg2RjYxMDA1RThERUMgLyogUGxh
dGZvcm1NZXNzYWdlUG9ydENoYW5uZWwuaCAqLzsgfTsKIAkJNDFDNzYwQjEwRURFMDNEMzAwQzE2
NTVGIC8qIFNjcmlwdFN0YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0MUM3NjBCMDBFREUwM0QzMDBDMTY1NUYgLyogU2NyaXB0U3RhdGUuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk0MUNGOEJFNzFE
NDYyMjY3MDA3MDdEQzkgLyogRmV0Y2hCb2R5Q29uc3VtZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFDRjhCRTQxRDQ2MjIyMDAwNzA3REM5IC8q
IEZldGNoQm9keUNvbnN1bWVyLmNwcCAqLzsgfTsKIAkJNDFEMDE1Q0EwRjRCNUM3MTAwNEE2NjJG
IC8qIENvbnRlbnRUeXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0MUQwMTVDODBGNEI1QzcxMDA0QTY2MkYgLyogQ29udGVudFR5cGUuaCAqLzsgfTsK
IAkJNDFEMDE1Q0IwRjRCNUM3MTAwNEE2NjJGIC8qIENvbnRlbnRUeXBlLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRDAxNUM5MEY0QjVDNzEwMDRB
NjYyRiAvKiBDb250ZW50VHlwZS5jcHAgKi87IH07CiAJCTQxRTFCMUQwMEZGNTk4NjkwMDU3NkIz
QiAvKiBBYnN0cmFjdFdvcmtlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0MUUxQjFDQTBGRjU5ODY5MDA1NzZCM0IgLyogQWJzdHJhY3RXb3JrZXIu
Y3BwICovOyB9OwpAQCAtNjkwNiw4ICs2OTA3LDggQEAKIAkJRjk4RkZGNDUxMUEyNjc2MjAwRjU0
OEU4IC8qIENTU09NVXRpbHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEY5OEZGRjQzMTFBMjY3NjIwMEY1NDhFOCAvKiBDU1NPTVV0aWxzLmggKi87IH07
CiAJCUY5RjBFRDdBMERCNTBDQTIwMEQxNkRCOSAvKiBYTUxIdHRwUmVxdWVzdFByb2dyZXNzRXZl
bnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY5RjBF
RDc3MERCNTBDQTIwMEQxNkRCOSAvKiBYTUxIdHRwUmVxdWVzdFByb2dyZXNzRXZlbnQuaCAqLzsg
fTsKIAkJRkE2NTRBNkIxMTA4QUJFRDAwMjYxNUUwIC8qIE1hdGhNTFRleHRFbGVtZW50LmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZBNjU0QTY5MTEw
OEFCRUQwMDI2MTVFMCAvKiBNYXRoTUxUZXh0RWxlbWVudC5jcHAgKi87IH07Ci0JCUZBNjU0QTZD
MTEwOEFCRUQwMDI2MTVFMCAvKiBNYXRoTUxUZXh0RWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkE2NTRBNkExMTA4QUJFRDAwMjYxNUUwIC8q
IE1hdGhNTFRleHRFbGVtZW50LmggKi87IH07CiAJCUZBNjU0QTZCMTEwOEFCRUQwMDI2MjZGMSAv
KiBNYXRoTUxVbmRlck92ZXJFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEZBNjU0QTY5MTEwOEFCRUQwMDI2MjZGMSAvKiBNYXRoTUxVbmRl
ck92ZXJFbGVtZW50LmNwcCAqLzsgfTsKKwkJRkE2NTRBNkMxMTA4QUJFRDAwMjYxNUUwIC8qIE1h
dGhNTFRleHRFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBGQTY1NEE2QTExMDhBQkVEMDAyNjE1RTAgLyogTWF0aE1MVGV4dEVsZW1lbnQuaCAq
LzsgfTsKIAkJRkE2NTRBNkMxMTA4QUJFRDAwMjYyNkYxIC8qIE1hdGhNTFVuZGVyT3ZlckVsZW1l
bnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZBNjU0
QTZBMTEwOEFCRUQwMDI2MjZGMSAvKiBNYXRoTUxVbmRlck92ZXJFbGVtZW50LmggKi87IH07CiAJ
CUZBQkU3MkY0MTA1OUMxRUIwMEQ5OTlERCAvKiBNYXRoTUxFbGVtZW50LmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZBQkU3MkVEMTA1OUMxRUIwMEQ5
OTlERCAvKiBNYXRoTUxFbGVtZW50LmNwcCAqLzsgfTsKIAkJRkFCRTcyRjUxMDU5QzFFQjAwRDk5
OUREIC8qIE1hdGhNTEVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEZBQkU3MkVFMTA1OUMxRUIwMEQ5OTlERCAvKiBNYXRoTUxFbGVtZW50Lmgg
Ki87IH07CkBAIC05MjE1LDYgKzkyMTYsOSBAQAogCQk0MUJGNzAwRDBGRTg2RjYxMDA1RThERUMg
LyogUGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWwuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBuYW1lID0gUGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWwuY3BwOyBwYXRoID0gZGVm
YXVsdC9QbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTQxQkY3MDBFMEZFODZGNjEwMDVFOERFQyAvKiBQbGF0Zm9ybU1lc3NhZ2VQb3J0
Q2hhbm5lbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBQbGF0Zm9ybU1lc3Nh
Z2VQb3J0Q2hhbm5lbC5oOyBwYXRoID0gZGVmYXVsdC9QbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5l
bC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MUM3NjBCMDBFREUwM0QzMDBDMTY1
NUYgLyogU2NyaXB0U3RhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2Ny
aXB0U3RhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDFDRjhCRTQxRDQ2MjIy
MDAwNzA3REM5IC8qIEZldGNoQm9keUNvbnN1bWVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEZldGNoQm9keUNvbnN1bWVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNDFDRjhCRTUxRDQ2MjIyMDAwNzA3REM5IC8qIEZldGNoQm9keUNvbnN1bWVy
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZldGNoQm9keUNvbnN1bWVyLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxQ0Y4QkU2MUQ0NjIyMkMwMDcwN0RDOSAv
KiBGZXRjaEludGVybmFscy5qcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuamF2YXNjcmlwdDsgcGF0
aCA9IEZldGNoSW50ZXJuYWxzLmpzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MUQw
MTVDODBGNEI1QzcxMDA0QTY2MkYgLyogQ29udGVudFR5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gQ29udGVudFR5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNDFEMDE1QzkwRjRCNUM3MTAwNEE2NjJGIC8qIENvbnRlbnRUeXBlLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvbnRlbnRUeXBlLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNDFFMUIxQ0EwRkY1OTg2OTAwNTc2QjNCIC8qIEFic3RyYWN0V29y
a2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFic3RyYWN0V29y
a2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEzNDA4LDggKzEzNDEyLDgg
QEAKIAkJQjU3Q0I1MkMxODJBM0VFRDAwNzlBNjQ3IC8qIElubGluZUVsZW1lbnRCb3guY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5saW5lRWxlbWVudEJveC5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUI1OTVGRjQ2MTgyNENFRTMwMEZGNTFDRCAv
KiBSZW5kZXJJdGVyYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW5k
ZXJJdGVyYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCNTlDQTU5QUYxNzBE
OEZBQTVCOEM5QUQgLyogTWF0aE1MU2NyaXB0c0VsZW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gTWF0aE1MU2NyaXB0c0VsZW1lbnQuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQlCNTlDQTg0OUQ0MUU2RjY1RDgxMTk3QUIgLyogTWF0aE1MU2Ny
aXB0c0VsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWF0aE1MU2Ny
aXB0c0VsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjU5Q0E1OUFGMTcw
RDhGQUE1QjhDQUJFIC8qIE1hdGhNTFBhZGRlZEVsZW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gTWF0aE1MUGFkZGVkRWxlbWVudC5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUI1OUNBODQ5RDQxRTZGNjVEODExOTdBQiAvKiBNYXRoTUxTY3Jp
cHRzRWxlbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNYXRoTUxTY3Jp
cHRzRWxlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCNTlDQTg0OUQ0MUU2
RjY1RDgxMTk4QkMgLyogTWF0aE1MUGFkZGVkRWxlbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBNYXRoTUxQYWRkZWRFbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUI1OURENjk3MTE5MDI5RTUwMDdFOTY4NCAvKiBKU0RhdGFiYXNlQ2FsbGJhY2su
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNEYXRhYmFzZUNhbGxiYWNrLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUI1OURENjk4MTE5MDI5RTUwMDdFOTY4NCAv
KiBKU0RhdGFiYXNlQ2FsbGJhY2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gSlNEYXRhYmFzZUNhbGxiYWNrLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTE1MDg2LDggKzE1MDkwLDggQEAKIAkJRkE2NTRBNjMxMTA4QUJCNzAwMjYxNUUwIC8qIG1h
dGhtbC5jc3MgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LmNzczsgcGF0aCA9IG1hdGhtbC5jc3M7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZBNjU0QTY3MTEwOEFCRTIwMDI2MTVFMCAvKiBtYXRoYXR0
cnMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gbWF0aGF0dHJzLmluOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlGQTY1NEE2OTExMDhBQkVEMDAyNjE1RTAgLyogTWF0aE1MVGV4dEVs
ZW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWF0aE1MVGV4
dEVsZW1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlGQTY1NEE2QTExMDhB
QkVEMDAyNjE1RTAgLyogTWF0aE1MVGV4dEVsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gTWF0aE1MVGV4dEVsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJRkE2NTRBNjkxMTA4QUJFRDAwMjYyNkYxIC8qIE1hdGhNTFVuZGVyT3ZlckVsZW1lbnQu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWF0aE1MVW5kZXJPdmVy
RWxlbWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZBNjU0QTZBMTEwOEFC
RUQwMDI2MTVFMCAvKiBNYXRoTUxUZXh0RWxlbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBNYXRoTUxUZXh0RWxlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlGQTY1NEE2QTExMDhBQkVEMDAyNjI2RjEgLyogTWF0aE1MVW5kZXJPdmVyRWxlbWVudC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNYXRoTUxVbmRlck92ZXJFbGVtZW50
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZBNkU0NjZGQ0QwNDE4QTk5NjZBNUI2
MCAvKiBETlNSZXNvbHZlUXVldWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
RE5TUmVzb2x2ZVF1ZXVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZBQkU3MkVE
MTA1OUMxRUIwMEQ5OTlERCAvKiBNYXRoTUxFbGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IE1hdGhNTEVsZW1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtMTcwOTIsMTIgKzE3MDk2LDE1IEBACiAJCQkJNDFGNTRGN0QxQzUwQzRGNjAw
MzM4NDg4IC8qIEZldGNoQm9keS5jcHAgKi8sCiAJCQkJNDFGNTRGN0UxQzUwQzRGNjAwMzM4NDg4
IC8qIEZldGNoQm9keS5oICovLAogCQkJCTQxRjU0RjdGMUM1MEM0RjYwMDMzODQ4OCAvKiBGZXRj
aEJvZHkuaWRsICovLAorCQkJCTQxQ0Y4QkU0MUQ0NjIyMjAwMDcwN0RDOSAvKiBGZXRjaEJvZHlD
b25zdW1lci5jcHAgKi8sCisJCQkJNDFDRjhCRTUxRDQ2MjIyMDAwNzA3REM5IC8qIEZldGNoQm9k
eUNvbnN1bWVyLmggKi8sCiAJCQkJNDE0N0UyQjMxQzg5OTEyNjAwQTdFNzE1IC8qIEZldGNoQm9k
eU93bmVyLmNwcCAqLywKIAkJCQk0MTQ3RTJCMjFDODgzMzdGMDBBN0U3MTUgLyogRmV0Y2hCb2R5
T3duZXIuaCAqLywKIAkJCQk0MUY1NEY4MjFDNTBDNEY2MDAzMzg0ODggLyogRmV0Y2hIZWFkZXJz
LmNwcCAqLywKIAkJCQk0MUY1NEY4MzFDNTBDNEY2MDAzMzg0ODggLyogRmV0Y2hIZWFkZXJzLmgg
Ki8sCiAJCQkJNDFGNTRGODQxQzUwQzRGNjAwMzM4NDg4IC8qIEZldGNoSGVhZGVycy5pZGwgKi8s
CiAJCQkJNDFGNTRGODUxQzUwQzRGNjAwMzM4NDg4IC8qIEZldGNoSGVhZGVycy5qcyAqLywKKwkJ
CQk0MUNGOEJFNjFENDYyMjJDMDA3MDdEQzkgLyogRmV0Y2hJbnRlcm5hbHMuanMgKi8sCiAJCQkJ
NDE0N0UyQjQxQzg5OTEyNjAwQTdFNzE1IC8qIEZldGNoTG9hZGVyLmNwcCAqLywKIAkJCQk0MTQ3
RTJCNTFDODk5MTI2MDBBN0U3MTUgLyogRmV0Y2hMb2FkZXIuaCAqLywKIAkJCQk0MTQ3RTJCNjFD
ODk5MTI2MDBBN0U3MTUgLyogRmV0Y2hMb2FkZXJDbGllbnQuaCAqLywKQEAgLTMwNzU5LDYgKzMw
NzY2LDcgQEAKIAkJCQlCQzA2RURFMzBCRkQ2RDBEMDA4NTZFOUQgLyogSlNIVE1MVGFibGVDZWxs
RWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzA2RUQ5RDBCRkQ2NjA2MDA4NTZFOUQg
LyogSlNIVE1MVGFibGVDb2xFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDMDZFRTA0
MEJGRDcxQUEwMDg1NkU5RCAvKiBKU0hUTUxUYWJsZUVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8s
CisJCQkJNDFDRjhCRTcxRDQ2MjI2NzAwNzA3REM5IC8qIEZldGNoQm9keUNvbnN1bWVyLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUJDMDZFRDlGMEJGRDY2MDYwMDg1NkU5RCAvKiBKU0hUTUxUYWJs
ZVJvd0VsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkMwNkVEMDYwQkZENUJBRTAwODU2
RTlEIC8qIEpTSFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
RDY0ODlEMjUxNjZGRkNGMTAwN0MwMzFCIC8qIEpTSFRNTFRlbXBsYXRlRWxlbWVudC5jcHAgaW4g
U291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9N
UHJvbWlzZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Qcm9taXNlLmgKaW5k
ZXggMTI3NWEzMmU2NzhkZGQ4YmVjYTI1NGJkMWQ2ZDRkMTlmMDI0YzI4Ny4uNGUyMmUzMzRmZjM3
NmFkMzg0OWJmMGQxMDk5OWI5N2JkOWQ5YmM4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNET01Qcm9taXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNET01Qcm9taXNlLmgKQEAgLTExOCw2ICsxMTgsOCBAQCBwdWJsaWM6CiAgICAgdGVtcGxh
dGU8Y2xhc3MgUmVqZWN0UmVzdWx0VHlwZT4gdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8UHJvbWlz
ZVJlc3VsdEluc3BlY3RvcjxSZWplY3RSZXN1bHRUeXBlPjo6cGFzc0J5Q29uc3RSZWYsIHZvaWQ+
Ojp0eXBlCiAgICAgcmVqZWN0KGNvbnN0IFJlamVjdFJlc3VsdFR5cGUmIHJlc3VsdCkgeyByZWpl
Y3RXaXRoVmFsdWUocmVzdWx0KTsgfQogCisgICAgdGVtcGxhdGU8Y2xhc3MgUmVzb2x2ZVJlc3Vs
dFR5cGU+IHZvaWQgcmVzb2x2ZVdpdGhOZXdseUNyZWF0ZWQoUmVmPFJlc29sdmVSZXN1bHRUeXBl
PiYmKTsKKwogICAgIHZvaWQgcmVqZWN0KEV4Y2VwdGlvbkNvZGUsIGNvbnN0IFN0cmluZyYgPSB7
IH0pOwogCiAgICAgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCgpIGNvbnN0OwpAQCAt
MTgxLDYgKzE4MywxNiBAQCBpbmxpbmUgdm9pZCBEZWZlcnJlZFdyYXBwZXI6OnJlc29sdmVXaXRo
VmFsdWUoUmVzb2x2ZVJlc3VsdFR5cGUmJiByZXN1bHQpCiAgICAgcmVzb2x2ZSgqZXhlYywgdG9K
UyhleGVjLCBtX2dsb2JhbE9iamVjdC5nZXQoKSwgc3RkOjpmb3J3YXJkPFJlc29sdmVSZXN1bHRU
eXBlPihyZXN1bHQpKSk7CiB9CiAKK3RlbXBsYXRlPGNsYXNzIFJlc29sdmVSZXN1bHRUeXBlPgor
aW5saW5lIHZvaWQgRGVmZXJyZWRXcmFwcGVyOjpyZXNvbHZlV2l0aE5ld2x5Q3JlYXRlZChSZWY8
UmVzb2x2ZVJlc3VsdFR5cGU+JiYgcmVzdWx0KQoreworICAgIEFTU0VSVChtX2RlZmVycmVkKTsK
KyAgICBBU1NFUlQobV9nbG9iYWxPYmplY3QpOworICAgIEpTQzo6RXhlY1N0YXRlKiBleGVjID0g
bV9nbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKTsKKyAgICBKU0M6OkpTTG9ja0hvbGRlciBsb2Nr
ZXIoZXhlYyk7CisgICAgcmVzb2x2ZSgqZXhlYywgdG9KU05ld2x5Q3JlYXRlZChleGVjLCBtX2ds
b2JhbE9iamVjdC5nZXQoKSwgV1RGTW92ZShyZXN1bHQpKSk7Cit9CisKIHRlbXBsYXRlPGNsYXNz
IFJlamVjdFJlc3VsdFR5cGU+CiBpbmxpbmUgdm9pZCBEZWZlcnJlZFdyYXBwZXI6OnJlamVjdFdp
dGhWYWx1ZShSZWplY3RSZXN1bHRUeXBlJiYgcmVzdWx0KQogewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvV2ViQ29yZUJ1aWx0aW5OYW1lcy5oIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvV2ViQ29yZUJ1aWx0aW5OYW1lcy5oCmluZGV4IGE1YWRkOTRiMjA5YTI2
OTNiZWMzNTFjOThmZmM1Y2UyOGE3NjFiZTIuLjMwMDA3MmQ2NmY5NDhhMjM2MzVjMzQwYjFhNWU1
YzVjMzA0ZDE5ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNv
cmVCdWlsdGluTmFtZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XZWJDb3Jl
QnVpbHRpbk5hbWVzLmgKQEAgLTUzLDYgKzUzLDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICBtYWNybyhsb2NhbFN0cmVhbXMpIFwKICAgICBtYWNybyhvcGVyYXRpb25zKSBcCiAgICAgbWFj
cm8ob3duZXJSZWFkYWJsZVN0cmVhbSkgXAorICAgIG1hY3JvKGNsb25lRm9ySlMpIFwKKyAgICBt
YWNybyhjb25zdW1lKSBcCisgICAgbWFjcm8oY29uc3VtZUNodW5rKSBcCisgICAgbWFjcm8oZmlu
aXNoQ29uc3VtaW5nU3RyZWFtKSBcCiAgICAgbWFjcm8ocHJpdmF0ZUdldFN0YXRzKSBcCiAgICAg
bWFjcm8ocHVsbGluZykgXAogICAgIG1hY3JvKHB1bGxBZ2FpbikgXApAQCAtNzIsNiArNzYsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgbWFjcm8oc2V0Qm9keSkgXAogICAgIG1hY3JvKHNl
dFN0YXR1cykgXAogICAgIG1hY3JvKHN0YXRlKSBcCisgICAgbWFjcm8oc3RhcnRDb25zdW1pbmdT
dHJlYW0pIFwKICAgICBtYWNybyhzdGFydGVkKSBcCiAgICAgbWFjcm8oc3RhcnRlZFByb21pc2Up
IFwKICAgICBtYWNybyhzdG9yZWRFcnJvcikgXApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cK
aW5kZXggNDc3YjBjNjJjNWVkZTY2ZWI5NDFlNTY2OTQ4ZmY5YTQ0ZjY4OGJmZi4uNTY2Njc2M2Qx
OTVmMWFjOTZkNTYxMGFhNjQxMjFkYTM0MjZmYjE3MCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTYtMDctMjUgIFlvdWVubiBGYWJsZXQgIDx5b3Vl
bm5AYXBwbGUuY29tPgorCisgICAgICAgIFtGZXRjaCBBUEldIFJlc3BvbnNlIGNvbnN0cnVjdG9y
IHNob3VsZCBiZSBhYmxlIHRvIHRha2UgYSBSZWFkYWJsZVN0cmVhbSBhcyBib2R5CisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTk4MDQKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHdlYi1wbGF0Zm9ybS10
ZXN0cy9mZXRjaC9hcGkvcmVzcG9uc2UvcmVzcG9uc2UtY29uc3VtZS1lbXB0eS1leHBlY3RlZC50
eHQ6CisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9yZXNwb25zZS9yZXNw
b25zZS1jb25zdW1lLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMv
ZmV0Y2gvYXBpL3Jlc3BvbnNlL3Jlc3BvbnNlLWNvbnN1bWUuaHRtbDogVXBkYXRpbmcgdGVzdCB0
byBleGVyY2ljZSBSZXNwb25zZSBjb29uc3RydWN0b3Igd2l0aCBhIFJlYWRhYmxlU3RyZWFtLgor
CiAyMDE2LTA3LTI0ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAg
ICBbRmV0Y2ggQVBJXSBSZXF1ZXN0IHNob3VsZCBiZSBjcmVhdGVkIHdpdGggYW55IEhlYWRlcnNJ
bml0IGRhdGEKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvZmV0Y2gvYXBpL3Jlc3BvbnNlL3Jlc3BvbnNlLWNvbnN1bWUtZW1wdHktZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9mZXRj
aC9hcGkvcmVzcG9uc2UvcmVzcG9uc2UtY29uc3VtZS1lbXB0eS1leHBlY3RlZC50eHQKaW5kZXgg
NjcwNGRlMWE0NDJlNWYxZmQ3MjViMGNlZTIyYzdmMDczN2E1ZTU4Ni4uZTk2Nzk1MThiZDljMDMw
OTRkOGZmZmNmOWZjZjgyZGQxNzdiYzdjZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkvcmVzcG9uc2UvcmVzcG9uc2UtY29u
c3VtZS1lbXB0eS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkvcmVzcG9uc2UvcmVzcG9uc2UtY29uc3VtZS1lbXB0
eS1leHBlY3RlZC50eHQKQEAgLTMsNyArMyw3IEBAIFBBU1MgQ29uc3VtZSByZXNwb25zZSdzIGJv
ZHkgYXMgdGV4dAogUEFTUyBDb25zdW1lIHJlc3BvbnNlJ3MgYm9keSBhcyBibG9iIAogUEFTUyBD
b25zdW1lIHJlc3BvbnNlJ3MgYm9keSBhcyBhcnJheUJ1ZmZlciAKIFBBU1MgQ29uc3VtZSByZXNw
b25zZSdzIGJvZHkgYXMganNvbiAKLUZBSUwgQ29uc3VtZSByZXNwb25zZSdzIGJvZHkgYXMgZm9y
bURhdGEgcHJvbWlzZV90ZXN0OiBVbmhhbmRsZWQgcmVqZWN0aW9uIHdpdGggdmFsdWU6IHVuZGVm
aW5lZAorRkFJTCBDb25zdW1lIHJlc3BvbnNlJ3MgYm9keSBhcyBmb3JtRGF0YSBwcm9taXNlX3Rl
c3Q6IFVuaGFuZGxlZCByZWplY3Rpb24gd2l0aCB2YWx1ZTogIk5vdCBpbXBsZW1lbnRlZCIKIFBB
U1MgQ29uc3VtZSBlbXB0eSBibG9iIHJlc3BvbnNlIGJvZHkgYXMgYXJyYXlCdWZmZXIgCiBQQVNT
IENvbnN1bWUgZW1wdHkgdGV4dCByZXNwb25zZSBib2R5IGFzIGFycmF5QnVmZmVyIAogUEFTUyBD
b25zdW1lIGVtcHR5IGJsb2IgcmVzcG9uc2UgYm9keSBhcyB0ZXh0IApkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkvcmVzcG9u
c2UvcmVzcG9uc2UtY29uc3VtZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9yZXNwb25zZS9yZXNwb25zZS1jb25zdW1l
LWV4cGVjdGVkLnR4dAppbmRleCBkMDg4YTY5YThjZTQyYTJmYTBhMWM5MjA5OWQ4NmE2YmZhNTdl
NmQ4Li40MTZhMzkyY2U2YWQ2Y2FiNjhlMjcxZGQwNGExOWEyZWU1MDIwM2VlIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9y
ZXNwb25zZS9yZXNwb25zZS1jb25zdW1lLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9yZXNwb25zZS9yZXNwb25z
ZS1jb25zdW1lLWV4cGVjdGVkLnR4dApAQCAtMyw5ICszLDEzIEBAIFBBU1MgQ29uc3VtZSByZXNw
b25zZSdzIGJvZHkgYXMgdGV4dAogUEFTUyBDb25zdW1lIHJlc3BvbnNlJ3MgYm9keSBhcyBibG9i
IAogUEFTUyBDb25zdW1lIHJlc3BvbnNlJ3MgYm9keSBhcyBhcnJheUJ1ZmZlciAKIFBBU1MgQ29u
c3VtZSByZXNwb25zZSdzIGJvZHkgYXMganNvbiAKLUZBSUwgQ29uc3VtZSByZXNwb25zZSdzIGJv
ZHkgYXMgZm9ybURhdGEgcHJvbWlzZV90ZXN0OiBVbmhhbmRsZWQgcmVqZWN0aW9uIHdpdGggdmFs
dWU6IHVuZGVmaW5lZAorRkFJTCBDb25zdW1lIHJlc3BvbnNlJ3MgYm9keSBhcyBmb3JtRGF0YSBw
cm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rpb24gd2l0aCB2YWx1ZTogIk5vdCBpbXBsZW1l
bnRlZCIKIFBBU1MgQ29uc3VtZSBibG9iIHJlc3BvbnNlJ3MgYm9keSBhcyBibG9iIAogUEFTUyBD
b25zdW1lIGJsb2IgcmVzcG9uc2UncyBib2R5IGFzIHRleHQgCiBQQVNTIENvbnN1bWUgYmxvYiBy
ZXNwb25zZSdzIGJvZHkgYXMganNvbiAKIFBBU1MgQ29uc3VtZSBibG9iIHJlc3BvbnNlJ3MgYm9k
eSBhcyBhcnJheUJ1ZmZlciAKK1BBU1MgQ29uc3VtZSBzdHJlYW0gcmVzcG9uc2UncyBib2R5IGFz
IGJsb2IgCitQQVNTIENvbnN1bWUgc3RyZWFtIHJlc3BvbnNlJ3MgYm9keSBhcyB0ZXh0IAorUEFT
UyBDb25zdW1lIHN0cmVhbSByZXNwb25zZSdzIGJvZHkgYXMganNvbiAKK1BBU1MgQ29uc3VtZSBz
dHJlYW0gcmVzcG9uc2UncyBib2R5IGFzIGFycmF5QnVmZmVyIAogCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9yZXNwb25z
ZS9yZXNwb25zZS1jb25zdW1lLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9yZXNwb25zZS9yZXNwb25zZS1jb25zdW1lLmh0bWwKaW5k
ZXggMDI4MTRmZjViZTkyNmJlNzM4MjY0YmE5MTA3MGJkMjM2OWQ1NDY5MS4uOTk0MTBjZDQ0OGFi
OGJkNjQ3OTAxODcwMDRlZmQzNGIxYzk5YWI0OSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkvcmVzcG9uc2UvcmVzcG9uc2Ut
Y29uc3VtZS5odG1sCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvZmV0Y2gvYXBpL3Jlc3BvbnNlL3Jlc3BvbnNlLWNvbnN1bWUuaHRtbApAQCAtOTIsNiAr
OTIsMjUgQEAKICAgICBjaGVja0Jsb2JSZXNwb25zZUJvZHkoYmxvYiwgdGV4dERhdGEsICJqc29u
IiwgY2hlY2tCb2R5SlNPTik7CiAgICAgY2hlY2tCbG9iUmVzcG9uc2VCb2R5KGJsb2IsIHRleHRE
YXRhLCAiYXJyYXlCdWZmZXIiLCBjaGVja0JvZHlBcnJheUJ1ZmZlcik7CiAKKyAgICBmdW5jdGlv
biBjaGVja1JlYWRhYmxlU3RyZWFtUmVzcG9uc2VCb2R5KHN0cmVhbURhdGEsIGJvZHlUeXBlLCBj
aGVja0Z1bmN0aW9uKSB7CisgICAgICBwcm9taXNlX3Rlc3QoZnVuY3Rpb24odGVzdCkgeworICAg
ICAgICB2YXIgc3RyZWFtID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICAgICAgICBzdGFydDog
ZnVuY3Rpb24oY29udHJvbGxlcikgeworICAgICAgICAgICAgY29udHJvbGxlci5lbnF1ZXVlKChz
dHJpbmdUb0FycmF5KHN0cmVhbURhdGEpKSk7CisgICAgICAgICAgICBjb250cm9sbGVyLmNsb3Nl
KCk7CisgICAgICAgICAgfQorICAgICAgICB9KTsKKyAgICAgICAgdmFyIHJlc3BvbnNlID0gbmV3
IFJlc3BvbnNlKHN0cmVhbSk7CisgICAgICAgIGFzc2VydF9mYWxzZShyZXNwb25zZS5ib2R5VXNl
ZCwgImJvZHlVc2VkIGlzIGZhbHNlIGF0IGluaXQiKTsKKyAgICAgICAgcmV0dXJuIGNoZWNrRnVu
Y3Rpb24ocmVzcG9uc2UsIHN0cmVhbURhdGEpOworICAgICAgfSwgIkNvbnN1bWUgc3RyZWFtIHJl
c3BvbnNlJ3MgYm9keSBhcyAiICsgYm9keVR5cGUpOworICAgIH0KKworICAgIGNoZWNrUmVhZGFi
bGVTdHJlYW1SZXNwb25zZUJvZHkodGV4dERhdGEsICJibG9iIiwgY2hlY2tCb2R5QmxvYik7Cisg
ICAgY2hlY2tSZWFkYWJsZVN0cmVhbVJlc3BvbnNlQm9keSh0ZXh0RGF0YSwgInRleHQiLCBjaGVj
a0JvZHlUZXh0KTsKKyAgICBjaGVja1JlYWRhYmxlU3RyZWFtUmVzcG9uc2VCb2R5KHRleHREYXRh
LCAianNvbiIsIGNoZWNrQm9keUpTT04pOworICAgIGNoZWNrUmVhZGFibGVTdHJlYW1SZXNwb25z
ZUJvZHkodGV4dERhdGEsICJhcnJheUJ1ZmZlciIsIGNoZWNrQm9keUFycmF5QnVmZmVyKTsKKwog
ICAgIDwvc2NyaXB0PgogICA8L2JvZHk+CiA8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>284486</attachid>
            <date>2016-07-25 08:30:00 -0700</date>
            <delta_ts>2016-07-25 09:30:29 -0700</delta_ts>
            <desc>Rebasing</desc>
            <filename>bug-159804-20160725172851.patch</filename>
            <type>text/plain</type>
            <size>64490</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAzNjgzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmE2ZGJmOTIzODAxOTFi
ZTk5ZThkZTlkYjNiOGRjNTY3YmY1MzIyMy4uZTdhMGVhNzA3OGYxZTFmMzkyOTBhNTIwZDhhNmI0
MDE3ZDQwOGIzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyNyBAQAorMjAxNi0wNy0yNSAgWW91
ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAgICAgW0ZldGNoIEFQSV0gUmVz
cG9uc2UgY29uc3RydWN0b3Igc2hvdWxkIGJlIGFibGUgdG8gdGFrZSBhIFJlYWRhYmxlU3RyZWFt
IGFzIGJvZHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE1OTgwNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IENvdmVyZWQgYnkgZXhpc3RpbmcgYW5kIHVwZGF0ZWQgdGVzdHMuCisKKyAgICAgICAgSW50cm9k
dWNlZCBGZXRjaEJvZHlDb25zdW1lciB0byBlbmNhcHN1bGF0ZSB0aGUgY29kZSByZXNwb25zaWJs
ZSB0byBhZGFwdCBGZXRjaEJvZHkgaW50ZXJuYWwgZGF0YSB0byB0aGUgcmVxdWVzdHMgbWFkZSBi
eSB1c2VyIHNjcmlwdHMuCisgICAgICAgIFRoaXMgcmVmYWN0b3JpbmcgZWFzZXMgdGhlIGhhbmRs
aW5nIG9mIGludGVybmFsIGRhdGEgY29taW5nIGZyb20gUmVhZGFibGVTdHJlYW0uCisKKyAgICAg
ICAgRmV0Y2hMb2FkZXIgaXMgbm93IGRlbGVnYXRpbmcgY29udmVyc2lvbiBmcm9tIHRoZSBkYXRh
IHRvIGl0cyBtX2NvbnN1bWVyIGZpZWxkLgorICAgICAgICBJZiBtX2NvbnN1bWVyIGlzIG51bGws
IEZldGNoTG9hZGVyIGNhbGxzIEZldGNoTG9hZGVyQ2xpZW50OjpkaWRSZWNlaXZlRGF0YSAoc3Ry
ZWFtaW5nIHJlY2VwdGlvbiBtb2RlKS4KKyAgICAgICAgQ2xpZW50cyBvZiBGZXRjaExvYWRlciBu
ZWVkcyB0byBvYXNzIGEgRmV0Y2hCb2R5Q29uc3VtZXIgdG8gdGhlIEZldGNoTG9hZGVyIHRvIGRv
IHRoZSBkYXRhIGFkYXB0YXRpb24gYXQgbG9hZGVyIGNyZWF0aW9uIHRpbWUuCisKKyAgICAgICAg
QWRkZWQgc3VwcG9ydCBmb3IgYm9keSBkYXRhIHBhc3NlZCBhcyBhIFJlYWRhYmxlU3RyZWFtIHRv
IFJlc3BvbnNlLgorICAgICAgICBUaGlzIHJlcXVpcmVzIHRvIHNldCBAYm9keSBpbnRlcm5hbCBz
bG90IG9mIHRoZSBSZXNwb25zZSBvYmplY3QgaW4gdGhlIGNvbnN0cnVjdG9yIGluaXRpYWxpemF0
aW9uIEpTIGJ1aWx0LWluLgorCisgICAgICAgIFRvIGFjdHVhbGx5IHVzZSB0aGF0IGRhdGEsIEJv
ZHkgYWNjZXNzb3JzIGFyZSBhbHNvIGltcGxlbWVudGVkIGFzIEpTIGJ1aWx0LWluIGZvciBSZXNw
b25zZS4KKyAgICAgICAgU2luY2UgdGhlcmUgaXMgbm8gbmVlZCB0byBkbyBzbyBmb3IgUmVxdWVz
dCwgRmV0Y2hSZXNwb25zZSBpcyBubyBsb25nZXIgbWFya2VkIGFzIGltcGxlbWVudGluZyBGZXRj
aEJvZHkgYnV0IGFsbAorICAgICAgICBGZXRjaEJvZHkgSURMIGRlc2NyaXB0aW9uIGlzIGlubGlu
ZWQgaW4gRmV0Y2hSZXNwb25zZS5pZGwuCisKKyAgICAgICAgRm9yIGVhY2ggYm9keSBhY2Nlc3Nv
ciAoYXJyYXlCdWZmZXIsIGJsb2IsIGpzb24sIHRleHQpLCB0aGUgY29ycmVzcG9uZGluZyBKUyBi
dWlsdC1pbiBjaGVja3Mgd2hldGhlciBAYm9keSBpbnRlcm5hbCBzbG90IGlzIHNldC4KKyAgICAg
ICAgSWYgdGhhdCBpcyBub3QgdGhlIGNhc2UsIHJlZ3VsYXIgaGFuZGxpbmcgaXMgZG9uZSB0aHJv
dWdoIGEgbmV3IHByaXZhdGUgbWV0aG9kIGNhbGxlZCBAY29uc3VtZS4KKyAgICAgICAgSWYgQGJv
ZHkgaW50ZXJuYWwgc2xvdCBpcyBzZXQsIGNodW5rcyBhcmUgcHVtcGVkIGZyb20gdGhlIFJlYWRh
YmxlU3RyZWFtIHVzaW5nIFJlYWRhYmxlU3RyZWFtIGludGVybmFsIGJ1aWx0LWlucyBmdW5jdGlv
bnMuCisgICAgICAgIERhdGEgaGFuZGxpbmcgaXMgZG9uZSBpbiBDKysgdGhyb3VnaCB0aGUgcHJp
dmF0ZSBtZXRob2RzIEBzdGFydENvbnN1bWluZ1N0cmVhbSwgQGNvbnN1bWVDaHVuayBhbmQgQGZp
bmlzaENvbnN1bWluZ1N0cmVhbS4KKworICAgICAgICBUbyBzdXBwb3J0IGNsb25pbmcgb2YgUmVz
cG9uc2Ugd2l0aCBib2RpZXMsIGNsb25lIG1ldGhvZCBpcyBhbHNvIGltcGxlbWVudGVkIGFzIGEg
SlMgYnVpbHQtaW4uCisgICAgICAgIE1haW4gY2xvbmUgaXMgZG9uZSB0aHJvdWdoIEBjbG9uZUZv
SlMgcHJpdmF0ZSBtZXRob2QgaW1wbGVtZW50ZWQgaW4gQysrLgorICAgICAgICBKUyBidWlsdC1p
biBjbG9uZSBjb2RlIGRvZXMgdGhlIHRlZWluZyBvZiB0aGUgUmVhZGFibGVTdHJlYW0gdXNpbmcg
UmVhZGFibGVTdHJlYW0gSlMgYnVpbHQtaW4gaW50ZXJuYWwgZnVuY3Rpb25zLgorCisgICAgICAg
IEludHJvZHVjaW5nIGEgbmV3IFJlYWRhYmxlU3RyZWFtIHR5cGUgZm9yIEZldGNoQm9keSB0byBj
b3BlIHdpdGggYm9keSBiZWluZyBzdG9yZWQgaW4gYSBSZWFkYWJsZVN0cmVhbS4KKworICAgICAg
ICBJbnRyb2R1Y2luZyBhIG5ldyBMb2FkZWQgdHlwZSBmb3IgRmV0Y2hCb2R5IHRvIGNvcGUgd2l0
aCBib2R5IGJlaW5nIHN0b3JlZCBpbiB0aGUgRmV0Y2hCb2R5Q29uc3VtZXIgb3duZWQgYnkgRmV0
Y2hCb2R5LgorICAgICAgICBUaGlzIGFsbG93cyByZW1vdmluZyB0aGUgY29udmVyc2lvbiBvZiBk
YXRhIHRvIEpTQzo6QXJyYXlCdWZmZXIgd2hpY2ggd2FzIGRvbmUgYnkgZGVmYXV0IGF0IHRoZSBl
bmQgb2YgRmV0Y2ggbG9hZGluZyBpZiB1c2VyIHNjcmlwdCBkaWQgbm90IHJlcXVlc3QgZGF0YSBi
ZWZvcmUuCisgICAgICAgIEF0IHRoZSBlbmQgb2YgYSBsb2FkLCB0aGUgZGF0YSByZW1haW5zIGlu
IEZldGNoQm9keUNvbnN1bWVyIGFuZCB0aGUgYm9keSBpcyBtYXJrZWQgYXMgTG9hZGVkLgorICAg
ICAgICBJZiB0aGUgdXNlciB3YW50cyB0byBnZXQgdGhlIGRhdGEgYWZ0ZXIgZGF0YSBmaW5pc2hl
ZCBiZWluZyBsb2FkZWQsIEZldGNoQm9keUNvbnN1bWVyIHdpbGwgZG8gdGhlIHJlcXVpcmVkIGNv
bnZlcnNpb25zLgorCisgICAgICAgIEludHJvZHVjaW5nIERlZmVycmVkV3JhcHBlcjo6cmVzb2x2
ZVdpdGhOZXdWYWx1ZSB0byBoYW5kbGUgdGhlIGNhc2Ugb2YgcmVzb2x2aW5nIHByb21pc2VzIHdp
dGggbmV3IG9iamVjdHMuCisgICAgICAgIFRoaXMgYWxsb3dzIGRpcmVjdGx5IHVzaW5nIHRvSlNO
ZXdseUNyZWF0ZWQgaW5zdGVhZCBvZiB0b0pTLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6
IEFkZGluZyBGZXRjaEJvZHlDb25zdW1lci4KKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNo
Qm9keS5jcHA6IE1vdmluZyBkYXRhIGFkYXB0YXRpb24gY29kZSB0byBGZXRjaEJvZHlDb25zdW1l
ci4KKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keTo6ZXh0cmFjdCk6CisgICAgICAgIChXZWJD
b3JlOjpGZXRjaEJvZHk6OmFycmF5QnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9k
eTo6YmxvYik6IFNldHRpbmcgY29udGVudFR5cGUgaW4gRmV0Y2hCb2R5Q29uc3VtZXIgdG8gaGFu
ZGxlIHByb3BlciBjcmVhdGlvbiBvZiBibG9iLgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5
Ojpqc29uKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keTo6dGV4dCk6CisgICAgICAgIChX
ZWJDb3JlOjpGZXRjaEJvZHk6OmNvbnN1bWUpOiBSZWZhY3RvcmluZyBhbmQgYWRkZWQgY2FzZSBv
ZiBMb2FkZWQgYm9kaWVzLgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Ojpjb25zdW1lQXNT
dHJlYW0pOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keTo6Y29uc3VtZUFycmF5
QnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keTo6Y29uc3VtZVRleHQpOgorICAg
ICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Ojpjb25zdW1lQmxvYik6CisgICAgICAgIChXZWJDb3Jl
OjpGZXRjaEJvZHk6OmxvYWRpbmdGYWlsZWQpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5
Ojpsb2FkaW5nU3VjY2VlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keTo6bG9hZGlu
Z1R5cGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6YmxvYkZyb21BcnJheUJ1ZmZlcik6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHk6OmZ1bGZpbGxUZXh0UHJvbWlz
ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHk6OmxvYWRlZEFzQXJyYXlC
dWZmZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Ojpsb2FkZWRBc1Rl
eHQpOiBEZWxldGVkLgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Lmg6CisgICAg
ICAgIChXZWJDb3JlOjpGZXRjaEJvZHk6OmNvbnN1bWVyKToKKyAgICAgICAgKiBNb2R1bGVzL2Zl
dGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcDogQWRkZWQsIHJlc3BvbnNpYmxlIG9mIGRhdGEgYWRh
cHRhdGlvbi4KKyAgICAgICAgKFdlYkNvcmU6OmJsb2JGcm9tRGF0YSk6CisgICAgICAgIChXZWJD
b3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6cmVzb2x2ZVdpdGhEYXRhKToKKyAgICAgICAgKFdlYkNv
cmU6OkZldGNoQm9keUNvbnN1bWVyOjpyZXNvbHZlKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNo
Qm9keUNvbnN1bWVyOjphcHBlbmQpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3Vt
ZXI6OnRha2VEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjp0YWtl
QXNBcnJheUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6dGFr
ZUFzQmxvYik6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6dGFrZUFzVGV4
dCk6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5oOiBBZGRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjpGZXRjaEJvZHlDb25zdW1lcik6
CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6c2V0Q29udGVudFR5cGUpOgor
ICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OnNldFR5cGUpOgorICAgICAgICAo
V2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OnR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6RmV0
Y2hCb2R5Q29uc3VtZXI6OmNsZWFuKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1
bWVyOjpoYXNEYXRhKToKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keU93bmVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keU93bmVyOjpsb2FkQmxvYik6CisgICAgICAg
IChXZWJDb3JlOjpGZXRjaEJvZHlPd25lcjo6YmxvYkxvYWRpbmdTdWNjZWVkZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6RmV0Y2hCb2R5T3duZXI6OmxvYWRlZEJsb2JBc1RleHQpOiBEZWxldGVkLgor
ICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5T3duZXIuaDoKKyAgICAgICAgKFdlYkNv
cmU6OkZldGNoQm9keU93bmVyOjpsb2FkZWRCbG9iQXNBcnJheUJ1ZmZlcik6IERlbGV0ZWQuCisg
ICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaEludGVybmFscy5qczoKKyAgICAgICAgKGNvbnN1
bWVTdHJlYW0pOiBQdW1wIFJlYWRhYmxlU3RyZWFtIGRhdGEgYW5kIHNlbmQgaXQgdG8gRmV0Y2hS
ZXNwb25zZSB0byBiZSBjb252ZXJ0ZWQgYWNjb3JkaW5nIHVzZXIgbmVlZC4KKyAgICAgICAgKiBN
b2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoTG9h
ZGVyOjpGZXRjaExvYWRlcik6IEZldGNoTG9hZGVyIGlzIHNpbXBsaWZpZWQgYXMgaXQgaGFzIHR3
byBub2RlczogY29uc3VtZXIgbW9kZSBpbiB3aGljaCBjYXNlCisgICAgICAgIGRhdGEgaXMgc2Vu
dCB0byB0aGUgY29uc3VtZXIgYW5kIG5vLWNvbnN1bWVyIG1vZGUgaW4gd2hpY2ggY2FzZSBkYXRh
IGlzIHBhc3NlZCB0byBsb2FkZXIgY2xpZW50LiBUaGUgc2Vjb25kIG1vZGUKKyAgICAgICAgaXMg
dXNlZCB0byBjb252ZXl5IGRhdGEgdG8gUmVhZGFibGVTdHJlYW0gc291cmNlLgorICAgICAgICAo
V2ViQ29yZTo6RmV0Y2hMb2FkZXI6OnN0b3ApOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hMb2Fk
ZXI6OnN0YXJ0U3RyZWFtaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoTG9hZGVyOjpkaWRS
ZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaExvYWRlcjo6ZGlkRmluaXNoTG9h
ZGluZyk6IERlbGV0ZWQuCisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlci5oOgor
ICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgKFdl
YkNvcmU6OkZldGNoTG9hZGVyQ2xpZW50OjpkaWRGaW5pc2hMb2FkaW5nQXNUZXh0KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkZldGNoTG9hZGVyQ2xpZW50OjpkaWRGaW5pc2hMb2FkaW5n
QXNBcnJheUJ1ZmZlcik6IERlbGV0ZWQuCisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaFJl
c3BvbnNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoUmVzcG9uc2U6OmNsb25lRm9ySlMp
OgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hSZXNwb25zZTo6Qm9keUxvYWRlcjo6ZGlkU3VjY2Vl
ZCk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaFJlc3BvbnNlOjpCb2R5TG9hZGVyOjpzdGFydCk6
CisgICAgICAgIChXZWJDb3JlOjpGZXRjaFJlc3BvbnNlOjpjb25zdW1lKTogSW50cm9kdWNlZCB0
byBjb25zdW1lIGRhdGEgc3RvcmVkIGluIGJvZHkgYW5kIG5vdCBpbiBSZWFkYWJsZVN0cmVhbS4K
KyAgICAgICAgKFdlYkNvcmU6OkZldGNoUmVzcG9uc2U6OnN0YXJ0Q29uc3VtaW5nU3RyZWFtKTog
SW50cm9kdWNlZCB0byBzdGFydCBwcm9jZXNzIG9mIGNvbnN1bWluZyBkYXRhIHN0b3JlZCBpbiB0
aGUgUmVhZGFibGVTdHJlYW0uCisgICAgICAgIChXZWJDb3JlOjpGZXRjaFJlc3BvbnNlOjpjb25z
dW1lQ2h1bmspOiBSZWNlcHRpb24gb2YgUmVhZGFibGVTdHJlYW0gZGF0YS4KKyAgICAgICAgKFdl
YkNvcmU6OkZldGNoUmVzcG9uc2U6OmZpbmlzaENvbnN1bWluZ1N0cmVhbSk6IERvaW5nIHRoZSBm
aW5hbCBjb252ZXJzaW9uLgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hSZXNwb25zZTo6Y2xvbmUp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hSZXNwb25zZTo6Qm9keUxvYWRlcjo6
ZGlkRmluaXNoTG9hZGluZ0FzQXJyYXlCdWZmZXIpOiBEZWxldGVkLgorICAgICAgICAqIE1vZHVs
ZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5oOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hS
ZXNwb25zZS5pZGw6IElubGluaW5nIG9mIEZldGNoQm9keSBtZXRob2RzL2F0dHJpYnV0ZXMgYW5k
IGFkZGluZyBwcml2YXRlIG1ldGhvZHMuCisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaFJl
c3BvbnNlLmpzOgorICAgICAgICAoaW5pdGlhbGl6ZUZldGNoUmVzcG9uc2UpOgorICAgICAgICAo
Y2xvbmUpOgorICAgICAgICAoYXJyYXlCdWZmZXIpOgorICAgICAgICAoYmxvYik6CisgICAgICAg
IChmb3JtRGF0YSk6CisgICAgICAgIChqc29uKToKKyAgICAgICAgKHRleHQpOgorICAgICAgICAq
IFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9KU0RPTVByb21pc2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRlZmVycmVkV3JhcHBlcjo6cmVz
b2x2ZVdpdGhOZXdWYWx1ZSk6CisgICAgICAgICogYmluZGluZ3MvanMvV2ViQ29yZUJ1aWx0aW5O
YW1lcy5oOgorCiAyMDE2LTA3LTI1ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdh
bGlhLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OKHIyMDA5MzEpOiBJbnZhbGlkIGNhc3QgaW4g
aGlnaGVzdEFuY2VzdG9yVG9XcmFwTWFya3VwKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggYTU1
ODNjYWFlODliNWRiNmUxMGE0ZGI2NzVmYTNiMWI1NGU5YjI1YS4uZTNhYmViMDJlOWJiZGZkZTI3
NjA1MzljOTI3NTMxY2M4NzM2ZTU5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VM
aXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTgxOCw2ICs4
MTgsNyBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAKICAgICBNb2R1bGVzL2ZldGNoL0RPTVdpbmRv
d0ZldGNoLmNwcAogICAgIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcAorICAgIE1vZHVsZXMv
ZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwCiAgICAgTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlP
d25lci5jcHAKICAgICBNb2R1bGVzL2ZldGNoL0ZldGNoSGVhZGVycy5jcHAKICAgICBNb2R1bGVz
L2ZldGNoL0ZldGNoTG9hZGVyLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9mZXRjaC9GZXRjaEJvZHkuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRj
aEJvZHkuY3BwCmluZGV4IDhjNDc5ZDVmOGUwNjI1MDJkOTU3MGM4YjliNTg1YmNmMGRiNDRkM2Yu
LjZkZDhjMThjZjVkMjZkMmM2NDlkOGE2ODI1MzE2MGE4ODk2OGI3NGQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHAKQEAgLTM5LDEyICszOSwxMSBAQAogI2lu
Y2x1ZGUgIkhUVFBQYXJzZXJzLmgiCiAjaW5jbHVkZSAiSlNCbG9iLmgiCiAjaW5jbHVkZSAiSlNE
T01Gb3JtRGF0YS5oIgorI2luY2x1ZGUgIkpTUmVhZGFibGVTdHJlYW0uaCIKICNpbmNsdWRlICJS
ZWFkYWJsZVN0cmVhbVNvdXJjZS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBS
ZWY8QmxvYj4gYmxvYkZyb21BcnJheUJ1ZmZlcihBcnJheUJ1ZmZlciosIGNvbnN0IFN0cmluZyYp
OwotCiBGZXRjaEJvZHk6OkZldGNoQm9keShSZWY8QmxvYj4mJiBibG9iKQogICAgIDogbV90eXBl
KFR5cGU6OkJsb2IpCiAgICAgLCBtX21pbWVUeXBlKGJsb2ItPnR5cGUoKSkKQEAgLTc1LDYgKzc0
LDggQEAgRmV0Y2hCb2R5IEZldGNoQm9keTo6ZXh0cmFjdChKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUs
IEpTQzo6SlNWYWx1ZSB2YWx1ZSkKICAgICAgICAgcmV0dXJuIEZldGNoQm9keSgqSlNET01Gb3Jt
RGF0YTo6dG9XcmFwcGVkKHZhbHVlKSk7CiAgICAgaWYgKHZhbHVlLmlzU3RyaW5nKCkpCiAgICAg
ICAgIHJldHVybiBGZXRjaEJvZHkodmFsdWUudG9XVEZTdHJpbmcoJnN0YXRlKSk7CisgICAgaWYg
KHZhbHVlLmluaGVyaXRzKEpTUmVhZGFibGVTdHJlYW06OmluZm8oKSkpCisgICAgICAgIHJldHVy
biB7IFR5cGU6OlJlYWRhYmxlU3RyZWFtIH07CiAgICAgcmV0dXJuIHsgfTsKIH0KIApAQCAtODks
MTMgKzkwLDE2IEBAIEZldGNoQm9keSBGZXRjaEJvZHk6OmV4dHJhY3RGcm9tQm9keShGZXRjaEJv
ZHkqIGJvZHkpCiB2b2lkIEZldGNoQm9keTo6YXJyYXlCdWZmZXIoRmV0Y2hCb2R5T3duZXImIG93
bmVyLCBEZWZlcnJlZFdyYXBwZXImJiBwcm9taXNlKQogewogICAgIEFTU0VSVChtX3R5cGUgIT0g
VHlwZTo6Tm9uZSk7Ci0gICAgY29uc3VtZShvd25lciwgQ29uc3VtZXI6OlR5cGU6OkFycmF5QnVm
ZmVyLCBXVEZNb3ZlKHByb21pc2UpKTsKKyAgICBtX2NvbnN1bWVyLnNldFR5cGUoRmV0Y2hCb2R5
Q29uc3VtZXI6OlR5cGU6OkFycmF5QnVmZmVyKTsKKyAgICBjb25zdW1lKG93bmVyLCBXVEZNb3Zl
KHByb21pc2UpKTsKIH0KIAogdm9pZCBGZXRjaEJvZHk6OmJsb2IoRmV0Y2hCb2R5T3duZXImIG93
bmVyLCBEZWZlcnJlZFdyYXBwZXImJiBwcm9taXNlKQogewogICAgIEFTU0VSVChtX3R5cGUgIT0g
VHlwZTo6Tm9uZSk7Ci0gICAgY29uc3VtZShvd25lciwgQ29uc3VtZXI6OlR5cGU6OkJsb2IsIFdU
Rk1vdmUocHJvbWlzZSkpOworICAgIG1fY29uc3VtZXIuc2V0VHlwZShGZXRjaEJvZHlDb25zdW1l
cjo6VHlwZTo6QmxvYik7CisgICAgbV9jb25zdW1lci5zZXRDb250ZW50VHlwZShCbG9iOjpub3Jt
YWxpemVkQ29udGVudFR5cGUoZXh0cmFjdE1JTUVUeXBlRnJvbU1lZGlhVHlwZShtX21pbWVUeXBl
KSkpOworICAgIGNvbnN1bWUob3duZXIsIFdURk1vdmUocHJvbWlzZSkpOwogfQogCiB2b2lkIEZl
dGNoQm9keTo6anNvbihGZXRjaEJvZHlPd25lciYgb3duZXIsIERlZmVycmVkV3JhcHBlciYmIHBy
b21pc2UpCkBAIC0xMDYsNyArMTEwLDggQEAgdm9pZCBGZXRjaEJvZHk6Ompzb24oRmV0Y2hCb2R5
T3duZXImIG93bmVyLCBEZWZlcnJlZFdyYXBwZXImJiBwcm9taXNlKQogICAgICAgICBmdWxmaWxs
UHJvbWlzZVdpdGhKU09OKHByb21pc2UsIG1fdGV4dCk7CiAgICAgICAgIHJldHVybjsKICAgICB9
Ci0gICAgY29uc3VtZShvd25lciwgQ29uc3VtZXI6OlR5cGU6OkpTT04sIFdURk1vdmUocHJvbWlz
ZSkpOworICAgIG1fY29uc3VtZXIuc2V0VHlwZShGZXRjaEJvZHlDb25zdW1lcjo6VHlwZTo6SlNP
Tik7CisgICAgY29uc3VtZShvd25lciwgV1RGTW92ZShwcm9taXNlKSk7CiB9CiAKIHZvaWQgRmV0
Y2hCb2R5Ojp0ZXh0KEZldGNoQm9keU93bmVyJiBvd25lciwgRGVmZXJyZWRXcmFwcGVyJiYgcHJv
bWlzZSkKQEAgLTExNywzMSArMTIyLDM2IEBAIHZvaWQgRmV0Y2hCb2R5Ojp0ZXh0KEZldGNoQm9k
eU93bmVyJiBvd25lciwgRGVmZXJyZWRXcmFwcGVyJiYgcHJvbWlzZSkKICAgICAgICAgcHJvbWlz
ZS5yZXNvbHZlKG1fdGV4dCk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgY29uc3VtZShv
d25lciwgQ29uc3VtZXI6OlR5cGU6OlRleHQsIFdURk1vdmUocHJvbWlzZSkpOworICAgIG1fY29u
c3VtZXIuc2V0VHlwZShGZXRjaEJvZHlDb25zdW1lcjo6VHlwZTo6VGV4dCk7CisgICAgY29uc3Vt
ZShvd25lciwgV1RGTW92ZShwcm9taXNlKSk7CiB9CiAKLXZvaWQgRmV0Y2hCb2R5Ojpjb25zdW1l
KEZldGNoQm9keU93bmVyJiBvd25lciwgQ29uc3VtZXI6OlR5cGUgdHlwZSwgRGVmZXJyZWRXcmFw
cGVyJiYgcHJvbWlzZSkKK3ZvaWQgRmV0Y2hCb2R5Ojpjb25zdW1lKEZldGNoQm9keU93bmVyJiBv
d25lciwgRGVmZXJyZWRXcmFwcGVyJiYgcHJvbWlzZSkKIHsKLSAgICBpZiAobV90eXBlID09IFR5
cGU6OkFycmF5QnVmZmVyKSB7Ci0gICAgICAgIGNvbnN1bWVBcnJheUJ1ZmZlcih0eXBlLCBwcm9t
aXNlKTsKKyAgICBzd2l0Y2ggKG1fdHlwZSkgeworICAgIGNhc2UgVHlwZTo6QXJyYXlCdWZmZXI6
CisgICAgICAgIGNvbnN1bWVBcnJheUJ1ZmZlcihwcm9taXNlKTsKICAgICAgICAgcmV0dXJuOwot
ICAgIH0KLSAgICBpZiAobV90eXBlID09IFR5cGU6OlRleHQpIHsKLSAgICAgICAgY29uc3VtZVRl
eHQodHlwZSwgcHJvbWlzZSk7CisgICAgY2FzZSBUeXBlOjpUZXh0OgorICAgICAgICBjb25zdW1l
VGV4dChwcm9taXNlKTsKICAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBpZiAobV90eXBlID09
IFR5cGU6OkJsb2IpIHsKLSAgICAgICAgY29uc3VtZUJsb2Iob3duZXIsIHR5cGUsIFdURk1vdmUo
cHJvbWlzZSkpOworICAgIGNhc2UgVHlwZTo6QmxvYjoKKyAgICAgICAgY29uc3VtZUJsb2Iob3du
ZXIsIFdURk1vdmUocHJvbWlzZSkpOwogICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmICht
X3R5cGUgPT0gVHlwZTo6TG9hZGluZykgewotICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGJl
IGFibGUgdG8gY2hhbmdlIHRoZSBsb2FkaW5nIHR5cGUgdG8gdGV4dCBpZiBjb25zdW1lciB0eXBl
IGlzIEpTT04gb3IgVGV4dC4KLSAgICAgICAgbV9jb25zdW1lciA9IENvbnN1bWVyKHt0eXBlLCBX
VEZNb3ZlKHByb21pc2UpfSk7CisgICAgY2FzZSBUeXBlOjpMb2FkaW5nOgorICAgICAgICBtX2Nv
bnN1bWVQcm9taXNlID0gV1RGTW92ZShwcm9taXNlKTsKICAgICAgICAgcmV0dXJuOworICAgIGNh
c2UgVHlwZTo6TG9hZGVkOgorICAgICAgICBtX2NvbnN1bWVyLnJlc29sdmUocHJvbWlzZSk7Cisg
ICAgICAgIHJldHVybjsKKyAgICBjYXNlIFR5cGU6Ok5vbmU6CisgICAgY2FzZSBUeXBlOjpSZWFk
YWJsZVN0cmVhbToKKyAgICAgICAgLy8gSWYgbV90eXBlIGlzIFJlYWRhYmxlU3RyZWFtLCB3ZSBz
aG91bGQgbm90IGJlIHRoZXJlIGFzIEpTIEJ1aWx0aW5zIHNob3VsZCBoYXZlIGhhbmRsZWQgdGhp
cyBjYXNlLgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBkZWZhdWx0OgorICAg
ICAgICAvLyBGSVhNRTogU3VwcG9ydCBvdGhlciB0eXBlcy4KKyAgICAgICAgcHJvbWlzZS5yZWpl
Y3QoMCk7CiAgICAgfQotCi0gICAgLy8gRklYTUU6IFN1cHBvcnQgb3RoZXIgdHlwZXMuCi0gICAg
cHJvbWlzZS5yZWplY3QoMCk7CiB9CiAKICNpZiBFTkFCTEUoU1RSRUFNU19BUEkpCkBAIC0xNDks
ODEgKzE1OSw1OCBAQCB2b2lkIEZldGNoQm9keTo6Y29uc3VtZUFzU3RyZWFtKEZldGNoQm9keU93
bmVyJiBvd25lciwgRmV0Y2hSZXNwb25zZVNvdXJjZSYgc291cgogewogICAgIEFTU0VSVChtX3R5
cGUgIT0gVHlwZTo6TG9hZGluZyk7CiAKKyAgICBib29sIGNsb3NlU3RyZWFtID0gZmFsc2U7CiAg
ICAgc3dpdGNoIChtX3R5cGUpIHsKICAgICBjYXNlIFR5cGU6OkFycmF5QnVmZmVyOgogICAgICAg
ICBBU1NFUlQobV9kYXRhKTsKLSAgICAgICAgaWYgKHNvdXJjZS5lbnF1ZXVlKFJlZlB0cjxKU0M6
OkFycmF5QnVmZmVyPihtX2RhdGEpKSkKLSAgICAgICAgICAgIHNvdXJjZS5jbG9zZSgpOwotICAg
ICAgICByZXR1cm47CisgICAgICAgIGNsb3NlU3RyZWFtID0gc291cmNlLmVucXVldWUoUmVmUHRy
PEpTQzo6QXJyYXlCdWZmZXI+KG1fZGF0YSkpOworICAgICAgICBicmVhazsKICAgICBjYXNlIFR5
cGU6OlRleHQ6IHsKICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGEgPSBleHRyYWN0RnJvbVRl
eHQoKTsKLSAgICAgICAgaWYgKHNvdXJjZS5lbnF1ZXVlKEFycmF5QnVmZmVyOjp0cnlDcmVhdGUo
ZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKSkpCi0gICAgICAgICAgICBzb3VyY2UuY2xvc2UoKTsK
LSAgICAgICAgcmV0dXJuOworICAgICAgICBjbG9zZVN0cmVhbSA9IHNvdXJjZS5lbnF1ZXVlKEFy
cmF5QnVmZmVyOjp0cnlDcmVhdGUoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKSk7CisgICAgICAg
IGJyZWFrOwogICAgIH0KICAgICBjYXNlIFR5cGU6OkJsb2I6CiAgICAgICAgIEFTU0VSVChtX2Js
b2IpOwotICAgICAgICBvd25lci5sb2FkQmxvYigqbV9ibG9iLCBGZXRjaExvYWRlcjo6VHlwZTo6
U3RyZWFtKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICBvd25lci5sb2FkQmxvYigqbV9ibG9i
LCBudWxscHRyKTsKKyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBUeXBlOjpOb25lOgotICAgICAg
ICBzb3VyY2UuY2xvc2UoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIGRlZmF1bHQ6Ci0gICAgICAg
IHNvdXJjZS5lcnJvcihBU0NJSUxpdGVyYWwoIm5vdCBpbXBsZW1lbnRlZCIpKTsKKyAgICAgICAg
Y2xvc2VTdHJlYW0gPSB0cnVlOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFR5cGU6OkxvYWRl
ZDogeworICAgICAgICBjbG9zZVN0cmVhbSA9IHNvdXJjZS5lbnF1ZXVlKG1fY29uc3VtZXIudGFr
ZUFzQXJyYXlCdWZmZXIoKSk7CisgICAgICAgIGJyZWFrOwogICAgIH0KLX0KLSNlbmRpZgorICAg
IGNhc2UgVHlwZTo6UmVhZGFibGVTdHJlYW06CisgICAgICAgIC8vIFRoaXMgc2hvdWxkIGJlIGhh
bmRsZWQgYnkgSlMgQnVpbHRpbnMuCisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogCi12
b2lkIEZldGNoQm9keTo6Y29uc3VtZUFycmF5QnVmZmVyKENvbnN1bWVyOjpUeXBlIHR5cGUsIERl
ZmVycmVkV3JhcHBlciYgcHJvbWlzZSkKLXsKLSAgICBpZiAodHlwZSA9PSBDb25zdW1lcjo6VHlw
ZTo6QXJyYXlCdWZmZXIpIHsKLSAgICAgICAgZnVsZmlsbFByb21pc2VXaXRoQXJyYXlCdWZmZXIo
cHJvbWlzZSwgbV9kYXRhLmdldCgpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBpZiAo
dHlwZSA9PSBDb25zdW1lcjo6VHlwZTo6QmxvYikgewotICAgICAgICBwcm9taXNlLnJlc29sdmUo
YmxvYkZyb21BcnJheUJ1ZmZlcihtX2RhdGEuZ2V0KCksIEJsb2I6Om5vcm1hbGl6ZWRDb250ZW50
VHlwZShleHRyYWN0TUlNRVR5cGVGcm9tTWVkaWFUeXBlKG1fbWltZVR5cGUpKSkpOwotICAgICAg
ICByZXR1cm47CisgICAgZGVmYXVsdDoKKyAgICAgICAgc291cmNlLmVycm9yKEFTQ0lJTGl0ZXJh
bCgibm90IGltcGxlbWVudGVkIikpOwogICAgIH0KIAotICAgIEFTU0VSVCh0eXBlID09IENvbnN1
bWVyOjpUeXBlOjpUZXh0IHx8IHR5cGUgPT0gQ29uc3VtZXI6OlR5cGU6OkpTT04pOwotICAgIC8v
IEZJWE1FOiBEbyB3ZSBuZWVkIFRleHRSZXNvdXJjZURlY29kZXIgdG8gY3JlYXRlIGEgU3RyaW5n
IHRvIGRlY29kZSBVVEYtOCBkYXRhLgotICAgIGZ1bGZpbGxUZXh0UHJvbWlzZSh0eXBlLCBUZXh0
UmVzb3VyY2VEZWNvZGVyOjpjcmVhdGUoQVNDSUlMaXRlcmFsKCJ0ZXh0L3BsYWluIiksICJVVEYt
OCIpLT5kZWNvZGVBbmRGbHVzaChzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4obV9kYXRhLT5kYXRh
KCkpLCBtX2RhdGEtPmJ5dGVMZW5ndGgoKSksIHByb21pc2UpOworICAgIGlmIChjbG9zZVN0cmVh
bSkKKyAgICAgICAgc291cmNlLmNsb3NlKCk7CiB9CisjZW5kaWYKIAotdm9pZCBGZXRjaEJvZHk6
OmNvbnN1bWVUZXh0KENvbnN1bWVyOjpUeXBlIHR5cGUsIERlZmVycmVkV3JhcHBlciYgcHJvbWlz
ZSkKK3ZvaWQgRmV0Y2hCb2R5Ojpjb25zdW1lQXJyYXlCdWZmZXIoRGVmZXJyZWRXcmFwcGVyJiBw
cm9taXNlKQogewotICAgIEFTU0VSVCh0eXBlID09IENvbnN1bWVyOjpUeXBlOjpBcnJheUJ1ZmZl
ciB8fCB0eXBlID09IENvbnN1bWVyOjpUeXBlOjpCbG9iKTsKLQotICAgIGlmICh0eXBlID09IENv
bnN1bWVyOjpUeXBlOjpBcnJheUJ1ZmZlcikgewotICAgICAgICBWZWN0b3I8dWludDhfdD4gZGF0
YSA9IGV4dHJhY3RGcm9tVGV4dCgpOwotICAgICAgICBmdWxmaWxsUHJvbWlzZVdpdGhBcnJheUJ1
ZmZlcihwcm9taXNlLCBkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpOwotICAgICAgICByZXR1cm47
Ci0gICAgfQotICAgIFN0cmluZyBjb250ZW50VHlwZSA9IEJsb2I6Om5vcm1hbGl6ZWRDb250ZW50
VHlwZShleHRyYWN0TUlNRVR5cGVGcm9tTWVkaWFUeXBlKG1fbWltZVR5cGUpKTsKLSAgICBwcm9t
aXNlLnJlc29sdmUoQmxvYjo6Y3JlYXRlKGV4dHJhY3RGcm9tVGV4dCgpLCBjb250ZW50VHlwZSkp
OworICAgIG1fY29uc3VtZXIucmVzb2x2ZVdpdGhEYXRhKHByb21pc2UsIHN0YXRpY19jYXN0PGNv
bnN0IHVpbnQ4X3QqPihtX2RhdGEtPmRhdGEoKSksIG1fZGF0YS0+Ynl0ZUxlbmd0aCgpKTsKIH0K
IAotRmV0Y2hMb2FkZXI6OlR5cGUgRmV0Y2hCb2R5Ojpsb2FkaW5nVHlwZShDb25zdW1lcjo6VHlw
ZSB0eXBlKQordm9pZCBGZXRjaEJvZHk6OmNvbnN1bWVUZXh0KERlZmVycmVkV3JhcHBlciYgcHJv
bWlzZSkKIHsKLSAgICBzd2l0Y2ggKHR5cGUpIHsKLSAgICBjYXNlIENvbnN1bWVyOjpUeXBlOjpK
U09OOgotICAgIGNhc2UgQ29uc3VtZXI6OlR5cGU6OlRleHQ6Ci0gICAgICAgIHJldHVybiBGZXRj
aExvYWRlcjo6VHlwZTo6VGV4dDsKLSAgICBjYXNlIENvbnN1bWVyOjpUeXBlOjpCbG9iOgotICAg
IGNhc2UgQ29uc3VtZXI6OlR5cGU6OkFycmF5QnVmZmVyOgotICAgICAgICByZXR1cm4gRmV0Y2hM
b2FkZXI6OlR5cGU6OkFycmF5QnVmZmVyOwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gRmV0Y2hMb2FkZXI6OlR5cGU6OkFycmF5QnVm
ZmVyOwotICAgIH07CisgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGEgPSBleHRyYWN0RnJvbVRleHQo
KTsKKyAgICBtX2NvbnN1bWVyLnJlc29sdmVXaXRoRGF0YShwcm9taXNlLCBkYXRhLmRhdGEoKSwg
ZGF0YS5zaXplKCkpOwogfQogCi12b2lkIEZldGNoQm9keTo6Y29uc3VtZUJsb2IoRmV0Y2hCb2R5
T3duZXImIG93bmVyLCBDb25zdW1lcjo6VHlwZSB0eXBlLCBEZWZlcnJlZFdyYXBwZXImJiBwcm9t
aXNlKQordm9pZCBGZXRjaEJvZHk6OmNvbnN1bWVCbG9iKEZldGNoQm9keU93bmVyJiBvd25lciwg
RGVmZXJyZWRXcmFwcGVyJiYgcHJvbWlzZSkKIHsKICAgICBBU1NFUlQobV9ibG9iKTsKIAotICAg
IG1fY29uc3VtZXIgPSBDb25zdW1lcih7dHlwZSwgV1RGTW92ZShwcm9taXNlKX0pOwotICAgIG93
bmVyLmxvYWRCbG9iKCptX2Jsb2IsIGxvYWRpbmdUeXBlKHR5cGUpKTsKKyAgICBtX2NvbnN1bWVQ
cm9taXNlID0gV1RGTW92ZShwcm9taXNlKTsKKyAgICBvd25lci5sb2FkQmxvYigqbV9ibG9iLCAm
bV9jb25zdW1lcik7CiB9CiAKIFZlY3Rvcjx1aW50OF90PiBGZXRjaEJvZHk6OmV4dHJhY3RGcm9t
VGV4dCgpIGNvbnN0CkBAIC0yMzYsNjMgKzIyMywyMSBAQCBWZWN0b3I8dWludDhfdD4gRmV0Y2hC
b2R5OjpleHRyYWN0RnJvbVRleHQoKSBjb25zdAogICAgIHJldHVybiB2YWx1ZTsKIH0KIAotc3Rh
dGljIGlubGluZSBSZWY8QmxvYj4gYmxvYkZyb21BcnJheUJ1ZmZlcihBcnJheUJ1ZmZlciogYnVm
ZmVyLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKQotewotICAgIGlmICghYnVmZmVyKQotICAg
ICAgICByZXR1cm4gQmxvYjo6Y3JlYXRlKFZlY3Rvcjx1aW50OF90PigpLCBjb250ZW50VHlwZSk7
Ci0KLSAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIHRyeSB0byBtb3ZlIGJ1ZmZlciB0byBCbG9iIHdp
dGhvdXQgZG9pbmcgdGhpcyBjb3B5LgotICAgIFZlY3Rvcjx1aW50OF90PiB2YWx1ZShidWZmZXIt
PmJ5dGVMZW5ndGgoKSk7Ci0gICAgbWVtY3B5KHZhbHVlLmRhdGEoKSwgYnVmZmVyLT5kYXRhKCks
IGJ1ZmZlci0+Ynl0ZUxlbmd0aCgpKTsKLSAgICByZXR1cm4gQmxvYjo6Y3JlYXRlKFdURk1vdmUo
dmFsdWUpLCBjb250ZW50VHlwZSk7Ci19Ci0KLXZvaWQgRmV0Y2hCb2R5OjpmdWxmaWxsVGV4dFBy
b21pc2UoRmV0Y2hCb2R5OjpDb25zdW1lcjo6VHlwZSB0eXBlLCBjb25zdCBTdHJpbmcmIHRleHQs
IERlZmVycmVkV3JhcHBlciYgcHJvbWlzZSkKLXsKLSAgICBBU1NFUlQodHlwZSA9PSBDb25zdW1l
cjo6VHlwZTo6VGV4dCB8fCB0eXBlID09IENvbnN1bWVyOjpUeXBlOjpKU09OKTsKLSAgICBpZiAo
dHlwZSA9PSBGZXRjaEJvZHk6OkNvbnN1bWVyOjpUeXBlOjpUZXh0KQotICAgICAgICBwcm9taXNl
LnJlc29sdmUodGV4dCk7Ci0gICAgZWxzZQotICAgICAgICBmdWxmaWxsUHJvbWlzZVdpdGhKU09O
KHByb21pc2UsIHRleHQpOwotfQotCiB2b2lkIEZldGNoQm9keTo6bG9hZGluZ0ZhaWxlZCgpCiB7
Ci0gICAgQVNTRVJUKG1fY29uc3VtZXIpOwotICAgIG1fY29uc3VtZXItPnByb21pc2UucmVqZWN0
KDApOwotICAgIG1fY29uc3VtZXIgPSBOdWxsb3B0OwotfQotCi12b2lkIEZldGNoQm9keTo6bG9h
ZGVkQXNBcnJheUJ1ZmZlcihSZWZQdHI8QXJyYXlCdWZmZXI+JiYgYnVmZmVyKQotewotICAgIGlm
IChtX3R5cGUgPT0gVHlwZTo6TG9hZGluZykgewotICAgICAgICBtX3R5cGUgPSBUeXBlOjpBcnJh
eUJ1ZmZlcjsKLSAgICAgICAgbV9kYXRhID0gYnVmZmVyOwotICAgICAgICBpZiAobV9jb25zdW1l
cikgewotICAgICAgICAgICAgY29uc3VtZUFycmF5QnVmZmVyKG1fY29uc3VtZXItPnR5cGUsIG1f
Y29uc3VtZXItPnByb21pc2UpOwotICAgICAgICAgICAgbV9jb25zdW1lciA9IE51bGxvcHQ7Ci0g
ICAgICAgIH0KLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIEFTU0VSVChtX2NvbnN1bWVy
KTsKLSAgICBBU1NFUlQobV9jb25zdW1lci0+dHlwZSA9PSBDb25zdW1lcjo6VHlwZTo6QmxvYiB8
fCBtX2NvbnN1bWVyLT50eXBlID09IENvbnN1bWVyOjpUeXBlOjpBcnJheUJ1ZmZlcik7Ci0gICAg
aWYgKG1fY29uc3VtZXItPnR5cGUgPT0gQ29uc3VtZXI6OlR5cGU6OkFycmF5QnVmZmVyKQotICAg
ICAgICBmdWxmaWxsUHJvbWlzZVdpdGhBcnJheUJ1ZmZlcihtX2NvbnN1bWVyLT5wcm9taXNlLCBi
dWZmZXIuZ2V0KCkpOwotICAgIGVsc2UgewotICAgICAgICBBU1NFUlQobV9ibG9iKTsKLSAgICAg
ICAgbV9jb25zdW1lci0+cHJvbWlzZS5yZXNvbHZlKGJsb2JGcm9tQXJyYXlCdWZmZXIoYnVmZmVy
LmdldCgpLCBtX2Jsb2ItPnR5cGUoKSkpOworICAgIGlmIChtX2NvbnN1bWVQcm9taXNlKSB7Cisg
ICAgICAgIG1fY29uc3VtZVByb21pc2UtPnJlamVjdCgwKTsKKyAgICAgICAgbV9jb25zdW1lUHJv
bWlzZSA9IE51bGxvcHQ7CiAgICAgfQotICAgIG1fY29uc3VtZXIgPSBOdWxsb3B0OwogfQogCi12
b2lkIEZldGNoQm9keTo6bG9hZGVkQXNUZXh0KFN0cmluZyYmIHRleHQpCit2b2lkIEZldGNoQm9k
eTo6bG9hZGluZ1N1Y2NlZWRlZCgpCiB7Ci0gICAgQVNTRVJUKG1fY29uc3VtZXIpOwotICAgIEFT
U0VSVChtX2NvbnN1bWVyLT50eXBlID09IENvbnN1bWVyOjpUeXBlOjpUZXh0IHx8IG1fY29uc3Vt
ZXItPnR5cGUgPT0gQ29uc3VtZXI6OlR5cGU6OkpTT04pOwotCi0gICAgZnVsZmlsbFRleHRQcm9t
aXNlKG1fY29uc3VtZXItPnR5cGUsIHRleHQsIG1fY29uc3VtZXItPnByb21pc2UpOwotICAgIG1f
Y29uc3VtZXIgPSBOdWxsb3B0OworICAgIG1fdHlwZSA9IG1fY29uc3VtZXIuaGFzRGF0YSgpID8g
VHlwZTo6TG9hZGVkIDogVHlwZTo6Tm9uZTsKKyAgICBpZiAobV9jb25zdW1lUHJvbWlzZSkgewor
ICAgICAgICBtX2NvbnN1bWVyLnJlc29sdmUoKm1fY29uc3VtZVByb21pc2UpOworICAgICAgICBt
X2NvbnN1bWVQcm9taXNlID0gTnVsbG9wdDsKKyAgICB9CiB9CiAKIFJlZlB0cjxGb3JtRGF0YT4g
RmV0Y2hCb2R5Ojpib2R5Rm9ySW50ZXJuYWxSZXF1ZXN0KCkgY29uc3QKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2ZldGNoL0ZldGNoQm9keS5oCmluZGV4IDU2ZjNkZmRjODU3MWMzMTUxMTJmMjY2NWM2
ZmZkYTk3NWE5ZGYzOTIuLjYyZDllNWE3ODdkNTgzMzBiNjY0ZjhhYzU2ZWYyNDUzMmNlZjZkYzUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuaApAQCAtMzMsNiArMzMs
NyBAQAogCiAjaW5jbHVkZSAiQmxvYi5oIgogI2luY2x1ZGUgIkRPTUZvcm1EYXRhLmgiCisjaW5j
bHVkZSAiRmV0Y2hCb2R5Q29uc3VtZXIuaCIKICNpbmNsdWRlICJGZXRjaExvYWRlci5oIgogI2lu
Y2x1ZGUgIkpTRE9NUHJvbWlzZS5oIgogCkBAIC03MCwzNSArNzEsMjcgQEAgcHVibGljOgogICAg
IEZldGNoQm9keSgpID0gZGVmYXVsdDsKIAogICAgIHZvaWQgbG9hZGluZ0ZhaWxlZCgpOwotICAg
IHZvaWQgbG9hZGVkQXNBcnJheUJ1ZmZlcihSZWZQdHI8QXJyYXlCdWZmZXI+JiYpOwotICAgIHZv
aWQgbG9hZGVkQXNUZXh0KFN0cmluZyYmKTsKKyAgICB2b2lkIGxvYWRpbmdTdWNjZWVkZWQoKTsK
IAogICAgIFJlZlB0cjxGb3JtRGF0YT4gYm9keUZvckludGVybmFsUmVxdWVzdCgpIGNvbnN0Owog
Ci0gICAgZW51bSBjbGFzcyBUeXBlIHsgTm9uZSwgQXJyYXlCdWZmZXIsIExvYWRpbmcsIFRleHQs
IEJsb2IsIEZvcm1EYXRhIH07CisgICAgZW51bSBjbGFzcyBUeXBlIHsgTm9uZSwgQXJyYXlCdWZm
ZXIsIEJsb2IsIEZvcm1EYXRhLCBUZXh0LCBMb2FkaW5nLCBMb2FkZWQsIFJlYWRhYmxlU3RyZWFt
IH07CiAgICAgVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9CiAKKyAgICBGZXRj
aEJvZHlDb25zdW1lciYgY29uc3VtZXIoKSB7IHJldHVybiBtX2NvbnN1bWVyOyB9CisKIHByaXZh
dGU6CiAgICAgRmV0Y2hCb2R5KFJlZjxCbG9iPiYmKTsKICAgICBGZXRjaEJvZHkoUmVmPERPTUZv
cm1EYXRhPiYmKTsKICAgICBGZXRjaEJvZHkoU3RyaW5nJiYpOwogICAgIEZldGNoQm9keShUeXBl
IHR5cGUpIDogbV90eXBlKHR5cGUpIHsgfQogCi0gICAgc3RydWN0IENvbnN1bWVyIHsKLSAgICAg
ICAgZW51bSBjbGFzcyBUeXBlIHsgVGV4dCwgQmxvYiwgSlNPTiwgQXJyYXlCdWZmZXIgfTsKLQot
ICAgICAgICBUeXBlIHR5cGU7Ci0gICAgICAgIERlZmVycmVkV3JhcHBlciBwcm9taXNlOwotICAg
IH07Ci0gICAgdm9pZCBjb25zdW1lKEZldGNoQm9keU93bmVyJiwgQ29uc3VtZXI6OlR5cGUsIERl
ZmVycmVkV3JhcHBlciYmKTsKKyAgICB2b2lkIGNvbnN1bWUoRmV0Y2hCb2R5T3duZXImLCBEZWZl
cnJlZFdyYXBwZXImJik7CiAKICAgICBWZWN0b3I8dWludDhfdD4gZXh0cmFjdEZyb21UZXh0KCkg
Y29uc3Q7Ci0gICAgdm9pZCBjb25zdW1lQXJyYXlCdWZmZXIoQ29uc3VtZXI6OlR5cGUsIERlZmVy
cmVkV3JhcHBlciYpOwotICAgIHZvaWQgY29uc3VtZVRleHQoQ29uc3VtZXI6OlR5cGUsIERlZmVy
cmVkV3JhcHBlciYpOwotICAgIHZvaWQgY29uc3VtZUJsb2IoRmV0Y2hCb2R5T3duZXImLCBDb25z
dW1lcjo6VHlwZSwgRGVmZXJyZWRXcmFwcGVyJiYpOwotICAgIHN0YXRpYyBGZXRjaExvYWRlcjo6
VHlwZSBsb2FkaW5nVHlwZShDb25zdW1lcjo6VHlwZSk7Ci0gICAgc3RhdGljIHZvaWQgZnVsZmls
bFRleHRQcm9taXNlKEZldGNoQm9keTo6Q29uc3VtZXI6OlR5cGUsIGNvbnN0IFN0cmluZyYsIERl
ZmVycmVkV3JhcHBlciYpOwotICAgIHN0YXRpYyB2b2lkIGZ1bGZpbGxBcnJheUJ1ZmZlclByb21p
c2UoRmV0Y2hCb2R5OjpDb25zdW1lcjo6VHlwZSwgY29uc3QgU3RyaW5nJiwgRGVmZXJyZWRXcmFw
cGVyJik7CisgICAgdm9pZCBjb25zdW1lQXJyYXlCdWZmZXIoRGVmZXJyZWRXcmFwcGVyJik7Cisg
ICAgdm9pZCBjb25zdW1lVGV4dChEZWZlcnJlZFdyYXBwZXImKTsKKyAgICB2b2lkIGNvbnN1bWVC
bG9iKEZldGNoQm9keU93bmVyJiwgRGVmZXJyZWRXcmFwcGVyJiYpOwogCiAgICAgVHlwZSBtX3R5
cGUgeyBUeXBlOjpOb25lIH07CiAgICAgU3RyaW5nIG1fbWltZVR5cGU7CkBAIC0xMDksNyArMTAy
LDggQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IG1fZGF0YTsKICAgICBTdHJp
bmcgbV90ZXh0OwogCi0gICAgT3B0aW9uYWw8Q29uc3VtZXI+IG1fY29uc3VtZXI7CisgICAgRmV0
Y2hCb2R5Q29uc3VtZXIgbV9jb25zdW1lciB7IEZldGNoQm9keUNvbnN1bWVyOjpUeXBlOjpOb25l
IH07CisgICAgT3B0aW9uYWw8RGVmZXJyZWRXcmFwcGVyPiBtX2NvbnN1bWVQcm9taXNlOwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kOTMyNTFiZjk0Y2QzNDI3
ZjY3OWZkNjJlYWRlNGU4YmEwMDIzNDY3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHAKQEAgLTAsMCArMSwxNDAgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkLCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIHJlcXVpcmVkIHRvIGJlIG1ldDoKKyAqCisgKiAxLiAgUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIEluYy4gbm9y
IHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
ICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQor
ICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SCisgKiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUgorICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyAqIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisgKiBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiRmV0Y2hCb2R5Q29uc3VtZXIuaCIKKworI2lmIEVOQUJMRShGRVRD
SF9BUEkpCisKKyNpbmNsdWRlICJKU0Jsb2IuaCIKKyNpbmNsdWRlICJKU0RPTVByb21pc2UuaCIK
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdGF0aWMgaW5saW5lIFJlZjxCbG9iPiBibG9iRnJv
bURhdGEoY29uc3QgdW5zaWduZWQgY2hhciogZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCBjb25zdCBT
dHJpbmcmIGNvbnRlbnRUeXBlKQoreworICAgIFZlY3Rvcjx1aW50OF90PiB2YWx1ZShsZW5ndGgp
OworICAgIG1lbWNweSh2YWx1ZS5kYXRhKCksIGRhdGEsIGxlbmd0aCk7CisgICAgcmV0dXJuIEJs
b2I6OmNyZWF0ZShXVEZNb3ZlKHZhbHVlKSwgY29udGVudFR5cGUpOworfQorCit2b2lkIEZldGNo
Qm9keUNvbnN1bWVyOjpyZXNvbHZlV2l0aERhdGEoRGVmZXJyZWRXcmFwcGVyJiBwcm9taXNlLCBj
b25zdCB1bnNpZ25lZCBjaGFyKiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpCit7CisgICAgc3dpdGNo
IChtX3R5cGUpIHsKKyAgICBjYXNlIFR5cGU6OkFycmF5QnVmZmVyOgorICAgICAgICBmdWxmaWxs
UHJvbWlzZVdpdGhBcnJheUJ1ZmZlcihwcm9taXNlLCBkYXRhLCBsZW5ndGgpOworICAgICAgICBy
ZXR1cm47CisgICAgY2FzZSBUeXBlOjpCbG9iOgorICAgICAgICBwcm9taXNlLnJlc29sdmVXaXRo
TmV3bHlDcmVhdGVkKGJsb2JGcm9tRGF0YShkYXRhLCBsZW5ndGgsIG1fY29udGVudFR5cGUpKTsK
KyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgVHlwZTo6SlNPTjoKKyAgICAgICAgZnVsZmlsbFBy
b21pc2VXaXRoSlNPTihwcm9taXNlLCBTdHJpbmcoZGF0YSwgbGVuZ3RoKSk7CisgICAgICAgIHJl
dHVybjsKKyAgICBjYXNlIFR5cGU6OlRleHQ6CisgICAgICAgIHByb21pc2UucmVzb2x2ZShTdHJp
bmcoZGF0YSwgbGVuZ3RoKSk7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIFR5cGU6Ok5vbmU6
CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm47CisgICAgfQor
fQorCit2b2lkIEZldGNoQm9keUNvbnN1bWVyOjpyZXNvbHZlKERlZmVycmVkV3JhcHBlciYgcHJv
bWlzZSkKK3sKKyAgICBBU1NFUlQobV90eXBlICE9IFR5cGU6Ok5vbmUpOworICAgIHN3aXRjaCAo
bV90eXBlKSB7CisgICAgY2FzZSBUeXBlOjpBcnJheUJ1ZmZlcjoKKyAgICAgICAgZnVsZmlsbFBy
b21pc2VXaXRoQXJyYXlCdWZmZXIocHJvbWlzZSwgdGFrZUFzQXJyYXlCdWZmZXIoKS5nZXQoKSk7
CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIFR5cGU6OkJsb2I6CisgICAgICAgIHByb21pc2Uu
cmVzb2x2ZVdpdGhOZXdseUNyZWF0ZWQodGFrZUFzQmxvYigpKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIGNhc2UgVHlwZTo6SlNPTjoKKyAgICAgICAgZnVsZmlsbFByb21pc2VXaXRoSlNPTihwcm9t
aXNlLCB0YWtlQXNUZXh0KCkpOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBUeXBlOjpUZXh0
OgorICAgICAgICBwcm9taXNlLnJlc29sdmUodGFrZUFzVGV4dCgpKTsKKyAgICAgICAgcmV0dXJu
OworICAgIGNhc2UgVHlwZTo6Tm9uZToKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9Cit9CisKK3ZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6OmFwcGVu
ZChjb25zdCBjaGFyKiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpCit7CisgICAgaWYgKCFtX2J1ZmZl
cikgeworICAgICAgICBtX2J1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEsIGxlbmd0
aCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgbV9idWZmZXItPmFwcGVuZChkYXRhLCBs
ZW5ndGgpOworfQorCit2b2lkIEZldGNoQm9keUNvbnN1bWVyOjphcHBlbmQoY29uc3QgdW5zaWdu
ZWQgY2hhciogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKQoreworICAgIGFwcGVuZChyZWludGVycHJl
dF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhKSwgbGVuZ3RoKTsKK30KKworUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gRmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VEYXRhKCkKK3sKKyAgICByZXR1cm4gV1RGTW92
ZShtX2J1ZmZlcik7Cit9CisKK1JlZlB0cjxKU0M6OkFycmF5QnVmZmVyPiBGZXRjaEJvZHlDb25z
dW1lcjo6dGFrZUFzQXJyYXlCdWZmZXIoKQoreworICAgIGlmICghbV9idWZmZXIpCisgICAgICAg
IHJldHVybiBBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlKG51bGxwdHIsIDApOworCisgICAgYXV0byBh
cnJheUJ1ZmZlciA9IG1fYnVmZmVyLT5jcmVhdGVBcnJheUJ1ZmZlcigpOworICAgIG1fYnVmZmVy
ID0gbnVsbHB0cjsKKyAgICByZXR1cm4gYXJyYXlCdWZmZXI7Cit9CisKK1JlZjxCbG9iPiBGZXRj
aEJvZHlDb25zdW1lcjo6dGFrZUFzQmxvYigpCit7CisgICAgQVNTRVJUKG1fYnVmZmVyKTsKKyAg
ICBpZiAoIW1fYnVmZmVyKQorICAgICAgICByZXR1cm4gQmxvYjo6Y3JlYXRlKCk7CisKKyAgICAv
LyBGSVhNRTogV2Ugc2hvdWxkIHRyeSB0byBtb3ZlIG1fYnVmZmVyIHRvIEJsb2Igd2l0aG91dCBk
b2luZyBleHRyYSBjb3B5LgorICAgIHJldHVybiBibG9iRnJvbURhdGEocmVpbnRlcnByZXRfY2Fz
dDxjb25zdCB1bnNpZ25lZCBjaGFyKj4obV9idWZmZXItPmRhdGEoKSksIG1fYnVmZmVyLT5zaXpl
KCksIG1fY29udGVudFR5cGUpOworfQorCitTdHJpbmcgRmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VB
c1RleHQoKQoreworICAgIGlmICghbV9idWZmZXIpCisgICAgICAgIHJldHVybiBTdHJpbmcoKTsK
KworICAgIGF1dG8gdGV4dCA9IFN0cmluZyhtX2J1ZmZlci0+ZGF0YSgpLCBtX2J1ZmZlci0+c2l6
ZSgpKTsKKyAgICBtX2J1ZmZlciA9IG51bGxwdHI7CisgICAgcmV0dXJuIHRleHQ7Cit9CisKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShGRVRDSF9BUEkpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZmFhMWZlN2QyOGFjN2E2Y2FlMzJhZWM3NDQ0NWQ5ODA4MTM0NGIzYgotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIu
aApAQCAtMCwwICsxLDczIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCwgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSByZXF1aXJlZCB0byBiZSBt
ZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFt
ZSBvZiBBcHBsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAg
ICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQK
KyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgorICogQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TAorICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisgKiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLAorICogT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoRkVUQ0hfQVBJKQorCisjaW5jbHVkZSAi
U2hhcmVkQnVmZmVyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQmxvYjsKK2Ns
YXNzIERlZmVycmVkV3JhcHBlcjsKKworY2xhc3MgRmV0Y2hCb2R5Q29uc3VtZXIgeworcHVibGlj
OgorICAgIC8vIFR5cGUgaXMgdXNlZCBpbiBGZXRjaFJlc3BvbnNlLmpzIGFuZCBzaG91bGQgYmUg
a2VwdCBzeW5jaHJvbml6ZWQgd2l0aCBpdC4KKyAgICBlbnVtIGNsYXNzIFR5cGUgeyBOb25lLCBB
cnJheUJ1ZmZlciwgQmxvYiwgSlNPTiwgVGV4dCB9OworCisgICAgRmV0Y2hCb2R5Q29uc3VtZXIo
VHlwZSB0eXBlKSA6IG1fdHlwZSh0eXBlKSB7IH0KKworICAgIHZvaWQgYXBwZW5kKGNvbnN0IGNo
YXIqIGRhdGEsIHVuc2lnbmVkKTsKKyAgICB2b2lkIGFwcGVuZChjb25zdCB1bnNpZ25lZCBjaGFy
KiBkYXRhLCB1bnNpZ25lZCk7CisKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiB0YWtlRGF0YSgp
OworICAgIFJlZlB0cjxKU0M6OkFycmF5QnVmZmVyPiB0YWtlQXNBcnJheUJ1ZmZlcigpOworICAg
IFJlZjxCbG9iPiB0YWtlQXNCbG9iKCk7CisgICAgU3RyaW5nIHRha2VBc1RleHQoKTsKKworICAg
IHZvaWQgc2V0Q29udGVudFR5cGUoY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkgeyBtX2NvbnRl
bnRUeXBlID0gY29udGVudFR5cGU7IH0KKyAgICB2b2lkIHNldFR5cGUoVHlwZSB0eXBlKSB7IG1f
dHlwZSA9IHR5cGU7IH0KKworICAgIHZvaWQgY2xlYW4oKSB7IG1fYnVmZmVyID0gbnVsbHB0cjsg
fQorCisgICAgdm9pZCByZXNvbHZlKERlZmVycmVkV3JhcHBlciYpOworICAgIHZvaWQgcmVzb2x2
ZVdpdGhEYXRhKERlZmVycmVkV3JhcHBlciYsIGNvbnN0IHVuc2lnbmVkIGNoYXIqLCB1bnNpZ25l
ZCk7CisKKyAgICBib29sIGhhc0RhdGEoKSBjb25zdCB7IHJldHVybiAhIW1fYnVmZmVyOyB9CisK
K3ByaXZhdGU6CisgICAgVHlwZSBtX3R5cGU7CisgICAgU3RyaW5nIG1fY29udGVudFR5cGU7Cisg
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7Cit9OworCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoRkVUQ0hfQVBJKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlPd25lci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keU93bmVyLmNwcAppbmRleCAwZjQ1Nzk0YTA2OWUyZWU2
MDhiMTgzNzhlM2RmMWY0YmNlNzM1M2E1Li45NjRiZTc3MTEwNGRhNjcxOTdkM2Q1MDRjNjk4ODE0
MThjYzg1Njg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNo
Qm9keU93bmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9k
eU93bmVyLmNwcApAQCAtMTM4LDcgKzEzOCw3IEBAIHZvaWQgRmV0Y2hCb2R5T3duZXI6OnRleHQo
RGVmZXJyZWRXcmFwcGVyJiYgcHJvbWlzZSkKICAgICBtX2JvZHkudGV4dCgqdGhpcywgV1RGTW92
ZShwcm9taXNlKSk7CiB9CiAKLXZvaWQgRmV0Y2hCb2R5T3duZXI6OmxvYWRCbG9iKEJsb2ImIGJs
b2IsIEZldGNoTG9hZGVyOjpUeXBlIHR5cGUpCit2b2lkIEZldGNoQm9keU93bmVyOjpsb2FkQmxv
YihCbG9iJiBibG9iLCBGZXRjaEJvZHlDb25zdW1lciogY29uc3VtZXIpCiB7CiAgICAgLy8gQ2Fu
IG9ubHkgYmUgY2FsbGVkIG9uY2UgZm9yIGEgYm9keSBpbnN0YW5jZS4KICAgICBBU1NFUlQoaXNE
aXN0dXJiZWQoKSk7CkBAIC0xNTAsNyArMTUwLDcgQEAgdm9pZCBGZXRjaEJvZHlPd25lcjo6bG9h
ZEJsb2IoQmxvYiYgYmxvYiwgRmV0Y2hMb2FkZXI6OlR5cGUgdHlwZSkKICAgICB9CiAKICAgICBt
X2Jsb2JMb2FkZXIgPSB7ICp0aGlzIH07Ci0gICAgbV9ibG9iTG9hZGVyLT5sb2FkZXIgPSBzdGQ6
Om1ha2VfdW5pcXVlPEZldGNoTG9hZGVyPih0eXBlLCAqbV9ibG9iTG9hZGVyKTsKKyAgICBtX2Js
b2JMb2FkZXItPmxvYWRlciA9IHN0ZDo6bWFrZV91bmlxdWU8RmV0Y2hMb2FkZXI+KCptX2Jsb2JM
b2FkZXIsIGNvbnN1bWVyKTsKIAogICAgIG1fYmxvYkxvYWRlci0+bG9hZGVyLT5zdGFydCgqc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpLCBibG9iKTsKICAgICBpZiAoIW1fYmxvYkxvYWRlci0+bG9h
ZGVyLT5pc1N0YXJ0ZWQoKSkgewpAQCAtMTY5LDExICsxNjksNiBAQCB2b2lkIEZldGNoQm9keU93
bmVyOjpmaW5pc2hCbG9iTG9hZGluZygpCiAgICAgdW5zZXRQZW5kaW5nQWN0aXZpdHkodGhpcyk7
CiB9CiAKLXZvaWQgRmV0Y2hCb2R5T3duZXI6OmxvYWRlZEJsb2JBc1RleHQoU3RyaW5nJiYgdGV4
dCkKLXsKLSAgICBtX2JvZHkubG9hZGVkQXNUZXh0KFdURk1vdmUodGV4dCkpOwotfQotCiB2b2lk
IEZldGNoQm9keU93bmVyOjpibG9iTG9hZGluZ1N1Y2NlZWRlZCgpCiB7CiAgICAgQVNTRVJUKG1f
Ym9keS50eXBlKCkgPT0gRmV0Y2hCb2R5OjpUeXBlOjpCbG9iKTsKQEAgLTE4NCw3ICsxNzksNyBA
QCB2b2lkIEZldGNoQm9keU93bmVyOjpibG9iTG9hZGluZ1N1Y2NlZWRlZCgpCiAgICAgICAgIG1f
cmVhZGFibGVTdHJlYW1Tb3VyY2UgPSBudWxscHRyOwogICAgIH0KICNlbmRpZgotCisgICAgbV9i
b2R5LmxvYWRpbmdTdWNjZWVkZWQoKTsKICAgICBmaW5pc2hCbG9iTG9hZGluZygpOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keU93bmVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keU93bmVyLmgKaW5kZXggMDZh
MjEyNjY1YzM5ZmMzOTA3ZDM4ZTEzZjRjYzEzM2NjODcyYzdiNC4uODdiNzJmMGE0OTlmOTMzNmE0
MGZhNDg2MzNhMTg5MDkyMjNiMWQ5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9mZXRjaC9GZXRjaEJvZHlPd25lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0
Y2gvRmV0Y2hCb2R5T3duZXIuaApAQCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBq
c29uKERlZmVycmVkV3JhcHBlciYmKTsKICAgICB2b2lkIHRleHQoRGVmZXJyZWRXcmFwcGVyJiYp
OwogCi0gICAgdm9pZCBsb2FkQmxvYihCbG9iJiwgRmV0Y2hMb2FkZXI6OlR5cGUpOworICAgIHZv
aWQgbG9hZEJsb2IoQmxvYiYsIEZldGNoQm9keUNvbnN1bWVyKik7CiAKICAgICBib29sIGlzQWN0
aXZlKCkgY29uc3QgeyByZXR1cm4gISFtX2Jsb2JMb2FkZXI7IH0KIApAQCAtNjcsOCArNjcsNiBA
QCBwcm90ZWN0ZWQ6CiAKIHByaXZhdGU6CiAgICAgLy8gQmxvYiBsb2FkaW5nIHJvdXRpbmVzCi0g
ICAgdm9pZCBsb2FkZWRCbG9iQXNUZXh0KFN0cmluZyYmKTsKLSAgICB2b2lkIGxvYWRlZEJsb2JB
c0FycmF5QnVmZmVyKFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiBidWZmZXIpIHsgbV9ib2R5LmxvYWRl
ZEFzQXJyYXlCdWZmZXIoV1RGTW92ZShidWZmZXIpKTsgfQogICAgIHZvaWQgYmxvYkNodW5rKGNv
bnN0IGNoYXIqLCBzaXplX3QpOwogICAgIHZvaWQgYmxvYkxvYWRpbmdTdWNjZWVkZWQoKTsKICAg
ICB2b2lkIGJsb2JMb2FkaW5nRmFpbGVkKCk7CkBAIC03OCw4ICs3Niw2IEBAIHByaXZhdGU6CiAg
ICAgICAgIEJsb2JMb2FkZXIoRmV0Y2hCb2R5T3duZXImKTsKIAogICAgICAgICAvLyBGZXRjaExv
YWRlckNsaWVudCBBUEkKLSAgICAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nQXNUZXh0KFN0cmlu
ZyYmIHRleHQpIGZpbmFsIHsgb3duZXIubG9hZGVkQmxvYkFzVGV4dChXVEZNb3ZlKHRleHQpKTsg
fQotICAgICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmdBc0FycmF5QnVmZmVyKFJlZlB0cjxBcnJh
eUJ1ZmZlcj4mJiBidWZmZXIpIGZpbmFsIHsgb3duZXIubG9hZGVkQmxvYkFzQXJyYXlCdWZmZXIo
V1RGTW92ZShidWZmZXIpKTsgfQogICAgICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJikgZmluYWw7CiAgICAgICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEo
Y29uc3QgY2hhciogZGF0YSwgc2l6ZV90IHNpemUpIGZpbmFsIHsgb3duZXIuYmxvYkNodW5rKGRh
dGEsIHNpemUpOyB9CiAgICAgICAgIHZvaWQgZGlkRmFpbCgpIGZpbmFsOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEludGVybmFscy5qcyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hJbnRlcm5hbHMuanMKaW5kZXggNDUyZWM3NjM1MzVh
ODA5ZWE4ZDgyOThlMDY5MzVlZTViMzA3NmU0Yi4uZDc1MDA0ZTJmODA4NWIxNWM3MTAwNzAwMTVi
ZWRkMWI1YWJiMjJjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9G
ZXRjaEludGVybmFscy5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNo
SW50ZXJuYWxzLmpzCkBAIC01MSwzICs1MSwyNyBAQCBmdW5jdGlvbiBmaWxsRmV0Y2hIZWFkZXJz
KGhlYWRlcnMsIGhlYWRlcnNJbml0KQogICAgICAgICBASGVhZGVycy5wcm90b3R5cGUuQGFwcGVu
ZEZyb21KUy5AY2FsbChoZWFkZXJzLCBuYW1lLCBoZWFkZXJzSW5pdFtuYW1lXSk7CiAgICAgfQog
fQorCitmdW5jdGlvbiBjb25zdW1lU3RyZWFtKHJlc3BvbnNlLCB0eXBlKQoreworICAgIEBhc3Nl
cnQocmVzcG9uc2UgaW5zdGFuY2VvZiBAUmVzcG9uc2UpOworICAgIEBhc3NlcnQocmVzcG9uc2Uu
QGJvZHkgaW5zdGFuY2VvZiBAUmVhZGFibGVTdHJlYW0pOworCisgICAgaWYgKEBpc1JlYWRhYmxl
U3RyZWFtRGlzdHVyYmVkKHJlc3BvbnNlLkBib2R5KSkKKyAgICAgICAgcmV0dXJuIEBQcm9taXNl
LkByZWplY3QobmV3IEBUeXBlRXJyb3IoIkNhbm5vdCBjb25zdW1lIGEgZGlzdHVyYmVkIFJlc3Bv
bnNlIGJvZHkgUmVhZGFibGVTdHJlYW0iKSk7CisKKyAgICB0cnkgeworICAgICAgICBsZXQgcmVh
ZGVyID0gbmV3IEBSZWFkYWJsZVN0cmVhbVJlYWRlcihyZXNwb25zZS5AYm9keSk7CisKKyAgICAg
ICAgQFJlc3BvbnNlLnByb3RvdHlwZS5Ac3RhcnRDb25zdW1pbmdTdHJlYW0uQGNhbGwocmVzcG9u
c2UsIHR5cGUpOworICAgICAgICBsZXQgcHVsbCA9IChyZXN1bHQpID0+IHsKKyAgICAgICAgICAg
IGlmIChyZXN1bHQuZG9uZSkKKyAgICAgICAgICAgICAgICByZXR1cm4gQFJlc3BvbnNlLnByb3Rv
dHlwZS5AZmluaXNoQ29uc3VtaW5nU3RyZWFtLkBjYWxsKHJlc3BvbnNlKTsKKyAgICAgICAgICAg
IEBSZXNwb25zZS5wcm90b3R5cGUuQGNvbnN1bWVDaHVuay5AY2FsbChyZXNwb25zZSwgcmVzdWx0
LnZhbHVlKTsKKyAgICAgICAgICAgIHJldHVybiBAUHJvbWlzZS5wcm90b3R5cGUuQHRoZW4uQGNh
bGwoQHJlYWRGcm9tUmVhZGFibGVTdHJlYW1SZWFkZXIocmVhZGVyKSwgcHVsbCk7CisgICAgICAg
IH0KKyAgICAgICAgcmV0dXJuIEBQcm9taXNlLnByb3RvdHlwZS5AdGhlbi5AY2FsbChAcmVhZEZy
b21SZWFkYWJsZVN0cmVhbVJlYWRlcihyZWFkZXIpLCBwdWxsKTsKKyAgICB9IGNhdGNoKGUpIHsK
KyAgICAgICAgcmV0dXJuIEBQcm9taXNlLkByZWplY3QoZSk7CisgICAgfQorfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyLmNwcAppbmRleCAxYjIzZjA0OWU2N2I0
NjcxYzFlMTZhNjg5ZTFkYjJiNDRhZDEzZjgwLi5lNjNiYzFiMmQzM2MzMmQyMWU0OWY5OWE1NzIy
NjQ3MzAxNTI2MmVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0Zl
dGNoTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoTG9h
ZGVyLmNwcApAQCAtODksMjQgKzg5LDI2IEBAIHZvaWQgRmV0Y2hMb2FkZXI6OnN0YXJ0KFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZldGNoUmVxdWVzdCYgcmVxCiAgICAg
bV9pc1N0YXJ0ZWQgPSBtX2xvYWRlcjsKIH0KIAotRmV0Y2hMb2FkZXI6OkZldGNoTG9hZGVyKFR5
cGUgdHlwZSwgRmV0Y2hMb2FkZXJDbGllbnQmIGNsaWVudCkKLSAgICA6IG1fdHlwZSh0eXBlKQot
ICAgICwgbV9jbGllbnQoY2xpZW50KQorRmV0Y2hMb2FkZXI6OkZldGNoTG9hZGVyKEZldGNoTG9h
ZGVyQ2xpZW50JiBjbGllbnQsIEZldGNoQm9keUNvbnN1bWVyKiBjb25zdW1lcikKKyAgICA6IG1f
Y2xpZW50KGNsaWVudCkKKyAgICAsIG1fY29uc3VtZXIoY29uc3VtZXIpCiB7CiB9CiAKIHZvaWQg
RmV0Y2hMb2FkZXI6OnN0b3AoKQogewotICAgIG1fZGF0YSA9IG51bGxwdHI7CisgICAgaWYgKG1f
Y29uc3VtZXIpCisgICAgICAgIG1fY29uc3VtZXItPmNsZWFuKCk7CiAgICAgaWYgKG1fbG9hZGVy
KQogICAgICAgICBtX2xvYWRlci0+Y2FuY2VsKCk7CiB9CiAKIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IEZldGNoTG9hZGVyOjpzdGFydFN0cmVhbWluZygpCiB7Ci0gICAgQVNTRVJUKG1fdHlwZSA9PSBU
eXBlOjpBcnJheUJ1ZmZlcik7Ci0gICAgbV90eXBlID0gVHlwZTo6U3RyZWFtOwotICAgIHJldHVy
biBXVEZNb3ZlKG1fZGF0YSk7CisgICAgQVNTRVJUKG1fY29uc3VtZXIpOworICAgIGF1dG8gZmly
c3RDaHVuayA9IG1fY29uc3VtZXItPnRha2VEYXRhKCk7CisgICAgbV9jb25zdW1lciA9IG51bGxw
dHI7CisgICAgcmV0dXJuIGZpcnN0Q2h1bms7CiB9CiAKIHZvaWQgRmV0Y2hMb2FkZXI6OmRpZFJl
Y2VpdmVSZXNwb25zZSh1bnNpZ25lZCBsb25nLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNw
b25zZSkKQEAgLTExNCwyOSArMTE2LDE3IEBAIHZvaWQgRmV0Y2hMb2FkZXI6OmRpZFJlY2VpdmVS
ZXNwb25zZSh1bnNpZ25lZCBsb25nLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwCiAgICAg
bV9jbGllbnQuZGlkUmVjZWl2ZVJlc3BvbnNlKHJlc3BvbnNlKTsKIH0KIAotLy8gRklYTUU6IFdl
IHNob3VsZCBtYWtlIHRleHQgYW5kIGJsb2IgY3JlYXRpb24gbW9yZSBlZmZpY2llbnQuCi0vLyBX
ZSBtaWdodCBhbHNvIHdhbnQgdG8gbWVyZ2UgdGhpcyBjbGFzcyB3aXRoIEZpbGVSZWFkZXJMb2Fk
ZXIuCiB2b2lkIEZldGNoTG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCBjaGFyKiB2YWx1ZSwg
aW50IHNpemUpCiB7Ci0gICAgaWYgKG1fdHlwZSA9PSBUeXBlOjpTdHJlYW0pIHsKKyAgICBpZiAo
IW1fY29uc3VtZXIpIHsKICAgICAgICAgbV9jbGllbnQuZGlkUmVjZWl2ZURhdGEodmFsdWUsIHNp
emUpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGlmICghbV9kYXRhKSB7Ci0gICAgICAg
IG1fZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHZhbHVlLCBzaXplKTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLSAgICBtX2RhdGEtPmFwcGVuZCh2YWx1ZSwgc2l6ZSk7CisgICAgbV9jb25z
dW1lci0+YXBwZW5kKHZhbHVlLCBzaXplKTsKIH0KIAogdm9pZCBGZXRjaExvYWRlcjo6ZGlkRmlu
aXNoTG9hZGluZyh1bnNpZ25lZCBsb25nLCBkb3VibGUpCiB7Ci0gICAgaWYgKG1fdHlwZSA9PSBU
eXBlOjpBcnJheUJ1ZmZlcikKLSAgICAgICAgbV9jbGllbnQuZGlkRmluaXNoTG9hZGluZ0FzQXJy
YXlCdWZmZXIobV9kYXRhID8gbV9kYXRhLT5jcmVhdGVBcnJheUJ1ZmZlcigpIDogQXJyYXlCdWZm
ZXI6OnRyeUNyZWF0ZShudWxscHRyLCAwKSk7Ci0gICAgZWxzZSBpZiAobV90eXBlID09IFR5cGU6
OlRleHQpCi0gICAgICAgIG1fY2xpZW50LmRpZEZpbmlzaExvYWRpbmdBc1RleHQobV9kYXRhID8g
VGV4dFJlc291cmNlRGVjb2Rlcjo6Y3JlYXRlKEFTQ0lJTGl0ZXJhbCgidGV4dC9wbGFpbiIpLCAi
VVRGLTgiKS0+ZGVjb2RlQW5kRmx1c2gobV9kYXRhLT5kYXRhKCksIG1fZGF0YS0+c2l6ZSgpKTog
U3RyaW5nKCkpOwotICAgIG1fZGF0YSA9IG51bGxwdHI7Ci0KICAgICBtX2NsaWVudC5kaWRTdWNj
ZWVkKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0
Y2hMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuaApp
bmRleCBkNDczZmYxNzQ1MWZjYTVjMWE3MTNmYjU0M2JkMGI2YTBiMWRlMDJiLi5kYmI4MmZiZWJk
NTU5ZTc3ZDFjZTFiNjE2YmM2ZDBiNGYxYWVmM2MzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9mZXRjaC9GZXRjaExvYWRlci5oCkBAIC0yNiwxMiArMjYsMTEgQEAKICAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CiAgKi8KIAotI2lmbmRlZiBGZXRjaExvYWRlcl9oCi0jZGVmaW5lIEZldGNoTG9hZGVyX2gKKyNw
cmFnbWEgb25jZQogCiAjaWYgRU5BQkxFKEZFVENIX0FQSSkKIAotI2luY2x1ZGUgIlNoYXJlZEJ1
ZmZlci5oIgorI2luY2x1ZGUgIkZldGNoQm9keUNvbnN1bWVyLmgiCiAjaW5jbHVkZSAiVGhyZWFk
YWJsZUxvYWRlci5oIgogI2luY2x1ZGUgIlRocmVhZGFibGVMb2FkZXJDbGllbnQuaCIKIApAQCAt
NDQsOSArNDMsNyBAQCBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwogCiBjbGFzcyBGZXRj
aExvYWRlciBmaW5hbCA6IHB1YmxpYyBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50IHsKIHB1YmxpYzoK
LSAgICBlbnVtIGNsYXNzIFR5cGUgeyBBcnJheUJ1ZmZlciwgU3RyZWFtLCBUZXh0IH07Ci0KLSAg
ICBGZXRjaExvYWRlcihUeXBlLCBGZXRjaExvYWRlckNsaWVudCYpOworICAgIEZldGNoTG9hZGVy
KEZldGNoTG9hZGVyQ2xpZW50JiwgRmV0Y2hCb2R5Q29uc3VtZXIqKTsKIAogICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IHN0YXJ0U3RyZWFtaW5nKCk7CiAKQEAgLTYzLDE4ICs2MCwxMyBAQCBwcml2
YXRlOgogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyh1bnNpZ25lZCBsb25nLCBkb3VibGUpIGZp
bmFsOwogICAgIHZvaWQgZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJikgZmluYWw7CiAKLSAg
ICBUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KLQogcHJpdmF0ZToKLSAgICBU
eXBlIG1fdHlwZSB7IFR5cGU6OkFycmF5QnVmZmVyIH07CiAgICAgRmV0Y2hMb2FkZXJDbGllbnQm
IG1fY2xpZW50OwogICAgIFJlZlB0cjxUaHJlYWRhYmxlTG9hZGVyPiBtX2xvYWRlcjsKLSAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2RhdGE7CisgICAgRmV0Y2hCb2R5Q29uc3VtZXIqIG1fY29u
c3VtZXI7CiAgICAgYm9vbCBtX2lzU3RhcnRlZCB7IGZhbHNlIH07CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoRkVUQ0hfQVBJKQotCi0jZW5kaWYgLy8g
RmV0Y2hMb2FkZXJfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9G
ZXRjaExvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaExv
YWRlckNsaWVudC5oCmluZGV4IGQwOWZhZDUzZTI3ZTZkOGFjMjJhZGI3Y2E5ZjQ1MTAyNzhkYTQx
NTAuLmU4OGU5OTQxOGNkOTkxNGExZWU0ODE4NzdkNjFhZGNiNmUwNGVhZjQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXJDbGllbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyQ2xpZW50LmgKQEAgLTQ3LDgg
KzQ3LDYgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJikgeyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNo
TG9hZGluZ0FzVGV4dChTdHJpbmcmJikgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExv
YWRpbmdBc0FycmF5QnVmZmVyKFJlZlB0cjxKU0M6OkFycmF5QnVmZmVyPiYmKSB7IH0KICAgICB2
aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgY2hhciosIHNpemVfdCkgeyB9CiAKICAg
ICB2aXJ0dWFsIHZvaWQgZGlkU3VjY2VlZCgpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwCmluZGV4IGMyZThhYmFhYjExYTIwMTU0MGQ4YmQx
Mjg1MGU1MWU3MGIyZWEzMDEuLjY3MzhmYTMxODNjOTYxMTU5MTEyY2UxOGNkMDUwY2I4ODBkYTg0
MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25z
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNw
cApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKICNpbmNsdWRl
ICJGZXRjaFJlcXVlc3QuaCIKICNpbmNsdWRlICJIVFRQUGFyc2Vycy5oIgorI2luY2x1ZGUgIkpT
QmxvYi5oIgogI2luY2x1ZGUgIkpTRmV0Y2hSZXNwb25zZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQuaCIKIApAQCAtOTMsMTMgKzk0LDExIEBAIEZldGNoUmVzcG9uc2U6OkZl
dGNoUmVzcG9uc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgRmV0Y2hCb2R5JiYg
Ym9keSwKIHsKIH0KIAotUmVmUHRyPEZldGNoUmVzcG9uc2U+IEZldGNoUmVzcG9uc2U6OmNsb25l
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIEV4Y2VwdGlvbkNvZGUmIGVjKQorUmVm
PEZldGNoUmVzcG9uc2U+IEZldGNoUmVzcG9uc2U6OmNsb25lRm9ySlMoKQogewotICAgIGlmIChp
c0Rpc3R1cmJlZCgpKSB7Ci0gICAgICAgIGVjID0gVHlwZUVycm9yOwotICAgICAgICByZXR1cm4g
bnVsbHB0cjsKLSAgICB9Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRmV0Y2hSZXNwb25zZShj
b250ZXh0LCBGZXRjaEJvZHkobV9ib2R5KSwgRmV0Y2hIZWFkZXJzOjpjcmVhdGUoaGVhZGVycygp
KSwgUmVzb3VyY2VSZXNwb25zZShtX3Jlc3BvbnNlKSkpOworICAgIEFTU0VSVChzY3JpcHRFeGVj
dXRpb25Db250ZXh0KCkpOworICAgIEFTU0VSVCghaXNEaXN0dXJiZWQoKSk7CisgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgRmV0Y2hSZXNwb25zZSgqc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBG
ZXRjaEJvZHkobV9ib2R5KSwgRmV0Y2hIZWFkZXJzOjpjcmVhdGUoaGVhZGVycygpKSwgUmVzb3Vy
Y2VSZXNwb25zZShtX3Jlc3BvbnNlKSkpOwogfQogCiB2b2lkIEZldGNoUmVzcG9uc2U6OmZldGNo
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIEZldGNoUmVxdWVzdCYgcmVxdWVzdCwg
RmV0Y2hQcm9taXNlJiYgcHJvbWlzZSkKQEAgLTEzMCw2ICsxMjksOCBAQCB2b2lkIEZldGNoUmVz
cG9uc2U6OkJvZHlMb2FkZXI6OmRpZFN1Y2NlZWQoKQogICAgICAgICBtX3Jlc3BvbnNlLm1fcmVh
ZGFibGVTdHJlYW1Tb3VyY2UgPSBudWxscHRyOwogICAgIH0KICNlbmRpZgorICAgIG1fcmVzcG9u
c2UubV9ib2R5LmxvYWRpbmdTdWNjZWVkZWQoKTsKKwogICAgIGlmIChtX2xvYWRlci0+aXNTdGFy
dGVkKCkpCiAgICAgICAgIG1fcmVzcG9uc2UubV9ib2R5TG9hZGVyID0gTnVsbG9wdDsKICAgICBt
X3Jlc3BvbnNlLnVuc2V0UGVuZGluZ0FjdGl2aXR5KCZtX3Jlc3BvbnNlKTsKQEAgLTE4NywxNCAr
MTg4LDkgQEAgdm9pZCBGZXRjaFJlc3BvbnNlOjpCb2R5TG9hZGVyOjpkaWRSZWNlaXZlRGF0YShj
b25zdCBjaGFyKiBkYXRhLCBzaXplX3Qgc2l6ZSkKICNlbmRpZgogfQogCi12b2lkIEZldGNoUmVz
cG9uc2U6OkJvZHlMb2FkZXI6OmRpZEZpbmlzaExvYWRpbmdBc0FycmF5QnVmZmVyKFJlZlB0cjxB
cnJheUJ1ZmZlcj4mJiBidWZmZXIpCi17Ci0gICAgbV9yZXNwb25zZS5ib2R5KCkubG9hZGVkQXNB
cnJheUJ1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpOwotfQotCiBib29sIEZldGNoUmVzcG9uc2U6OkJv
ZHlMb2FkZXI6OnN0YXJ0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZl
dGNoUmVxdWVzdCYgcmVxdWVzdCkKIHsKLSAgICBtX2xvYWRlciA9IHN0ZDo6bWFrZV91bmlxdWU8
RmV0Y2hMb2FkZXI+KEZldGNoTG9hZGVyOjpUeXBlOjpBcnJheUJ1ZmZlciwgKnRoaXMpOworICAg
IG1fbG9hZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxGZXRjaExvYWRlcj4oKnRoaXMsICZtX3Jlc3Bv
bnNlLm1fYm9keS5jb25zdW1lcigpKTsKICAgICBtX2xvYWRlci0+c3RhcnQoY29udGV4dCwgcmVx
dWVzdCk7CiAgICAgcmV0dXJuIG1fbG9hZGVyLT5pc1N0YXJ0ZWQoKTsKIH0KQEAgLTIwNSw3ICsy
MDEsNDYgQEAgdm9pZCBGZXRjaFJlc3BvbnNlOjpCb2R5TG9hZGVyOjpzdG9wKCkKICAgICAgICAg
bV9sb2FkZXItPnN0b3AoKTsKIH0KIAordm9pZCBGZXRjaFJlc3BvbnNlOjpjb25zdW1lKHVuc2ln
bmVkIHR5cGUsIERlZmVycmVkV3JhcHBlciYmIHdyYXBwZXIpCit7CisgICAgQVNTRVJUKHR5cGUg
PD0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEZldGNoQm9keUNvbnN1bWVyOjpUeXBlOjpUZXh0KSk7
CisKKyAgICBzd2l0Y2ggKHN0YXRpY19jYXN0PEZldGNoQm9keUNvbnN1bWVyOjpUeXBlPih0eXBl
KSkgeworICAgIGNhc2UgRmV0Y2hCb2R5Q29uc3VtZXI6OlR5cGU6OkFycmF5QnVmZmVyOgorICAg
ICAgICBhcnJheUJ1ZmZlcihXVEZNb3ZlKHdyYXBwZXIpKTsKKyAgICAgICAgcmV0dXJuOworICAg
IGNhc2UgRmV0Y2hCb2R5Q29uc3VtZXI6OlR5cGU6OkJsb2I6CisgICAgICAgIGJsb2IoV1RGTW92
ZSh3cmFwcGVyKSk7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIEZldGNoQm9keUNvbnN1bWVy
OjpUeXBlOjpKU09OOgorICAgICAgICBqc29uKFdURk1vdmUod3JhcHBlcikpOworICAgICAgICBy
ZXR1cm47CisgICAgY2FzZSBGZXRjaEJvZHlDb25zdW1lcjo6VHlwZTo6VGV4dDoKKyAgICAgICAg
dGV4dChXVEZNb3ZlKHdyYXBwZXIpKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgRmV0Y2hC
b2R5Q29uc3VtZXI6OlR5cGU6Ok5vbmU6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorfQorCiAjaWYgRU5BQkxFKFNUUkVBTVNfQVBJKQordm9p
ZCBGZXRjaFJlc3BvbnNlOjpzdGFydENvbnN1bWluZ1N0cmVhbSh1bnNpZ25lZCB0eXBlKQorewor
ICAgIG1faXNEaXN0dXJiZWQgPSB0cnVlOworICAgIG1fY29uc3VtZXIuc2V0VHlwZShzdGF0aWNf
Y2FzdDxGZXRjaEJvZHlDb25zdW1lcjo6VHlwZT4odHlwZSkpOworfQorCit2b2lkIEZldGNoUmVz
cG9uc2U6OmNvbnN1bWVDaHVuayhSZWY8SlNDOjpVaW50OEFycmF5PiYmIGNodW5rKQoreworICAg
IG1fY29uc3VtZXIuYXBwZW5kKGNodW5rLT5kYXRhKCksIGNodW5rLT5ieXRlTGVuZ3RoKCkpOwor
fQorCit2b2lkIEZldGNoUmVzcG9uc2U6OmZpbmlzaENvbnN1bWluZ1N0cmVhbShEZWZlcnJlZFdy
YXBwZXImJiBwcm9taXNlKQoreworICAgIG1fY29uc3VtZXIucmVzb2x2ZShwcm9taXNlKTsKK30K
Kwogdm9pZCBGZXRjaFJlc3BvbnNlOjpjb25zdW1lQm9keUFzU3RyZWFtKCkKIHsKICAgICBBU1NF
UlQobV9yZWFkYWJsZVN0cmVhbVNvdXJjZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0
Y2gvRmV0Y2hSZXNwb25zZS5oCmluZGV4IDU3M2MyNzA4ZDhkYzk0ZGRhODEwNWI0Yzk2MGM1MTU5
Njg1NDIwNGYuLjg0ODYyNTE0MDUwN2Q4MGM4MzZkNzE5NTVhMWIzYjZmZGIyOGIyNmQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5oCkBAIC0zMyw2ICsz
Myw3IEBACiAjaW5jbHVkZSAiRmV0Y2hCb2R5T3duZXIuaCIKICNpbmNsdWRlICJGZXRjaEhlYWRl
cnMuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlc3BvbnNlLmgiCisjaW5jbHVkZSA8cnVudGltZS9U
eXBlZEFycmF5cy5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIGNsYXNzIEFycmF5QnVmZmVyOwpAQCAt
NTksNiArNjAsMTMgQEAgcHVibGljOgogICAgIHVzaW5nIEZldGNoUHJvbWlzZSA9IERPTVByb21p
c2U8RmV0Y2hSZXNwb25zZT47CiAgICAgc3RhdGljIHZvaWQgZmV0Y2goU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYsIEZldGNoUmVxdWVzdCYsIEZldGNoUHJvbWlzZSYmKTsKIAorICAgIHZvaWQgY29u
c3VtZSh1bnNpZ25lZCwgRGVmZXJyZWRXcmFwcGVyJiYpOworI2lmIEVOQUJMRShTVFJFQU1TX0FQ
SSkKKyAgICB2b2lkIHN0YXJ0Q29uc3VtaW5nU3RyZWFtKHVuc2lnbmVkKTsKKyAgICB2b2lkIGNv
bnN1bWVDaHVuayhSZWY8SlNDOjpVaW50OEFycmF5PiYmKTsKKyAgICB2b2lkIGZpbmlzaENvbnN1
bWluZ1N0cmVhbShEZWZlcnJlZFdyYXBwZXImJik7CisjZW5kaWYKKwogICAgIHZvaWQgc2V0U3Rh
dHVzKGludCwgY29uc3QgU3RyaW5nJiwgRXhjZXB0aW9uQ29kZSYpOwogICAgIHZvaWQgaW5pdGlh
bGl6ZVdpdGgoSlNDOjpFeGVjU3RhdGUmLCBKU0M6OkpTVmFsdWUpOwogCkBAIC03MCw3ICs3OCw3
IEBAIHB1YmxpYzoKICAgICBjb25zdCBTdHJpbmcmIHN0YXR1c1RleHQoKSBjb25zdCB7IHJldHVy
biBtX3Jlc3BvbnNlLmh0dHBTdGF0dXNUZXh0KCk7IH0KIAogICAgIEZldGNoSGVhZGVycyYgaGVh
ZGVycygpIHsgcmV0dXJuIG1faGVhZGVyczsgfQotICAgIFJlZlB0cjxGZXRjaFJlc3BvbnNlPiBj
bG9uZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgRXhjZXB0aW9uQ29kZSYpOworICAgIFJlZjxG
ZXRjaFJlc3BvbnNlPiBjbG9uZUZvckpTKCk7CiAKICNpZiBFTkFCTEUoU1RSRUFNU19BUEkpCiAg
ICAgUmVhZGFibGVTdHJlYW1Tb3VyY2UqIGNyZWF0ZVJlYWRhYmxlU3RyZWFtU291cmNlKCk7CkBA
IC0xMDUsNyArMTEzLDYgQEAgcHJpdmF0ZToKICAgICAgICAgdm9pZCBkaWRGYWlsKCkgZmluYWw7
CiAgICAgICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
KSBmaW5hbDsKICAgICAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBjaGFyKiwgc2l6ZV90
KSBmaW5hbDsKLSAgICAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nQXNBcnJheUJ1ZmZlcihSZWZQ
dHI8QXJyYXlCdWZmZXI+JiYpIGZpbmFsOwogCiAgICAgICAgIEZldGNoUmVzcG9uc2UmIG1fcmVz
cG9uc2U7CiAgICAgICAgIE9wdGlvbmFsPEZldGNoUHJvbWlzZT4gbV9wcm9taXNlOwpAQCAtMTE2
LDYgKzEyMyw4IEBAIHByaXZhdGU6CiAgICAgUmVmPEZldGNoSGVhZGVycz4gbV9oZWFkZXJzOwog
ICAgIE9wdGlvbmFsPEJvZHlMb2FkZXI+IG1fYm9keUxvYWRlcjsKICAgICBtdXRhYmxlIFN0cmlu
ZyBtX3Jlc3BvbnNlVVJMOworCisgICAgRmV0Y2hCb2R5Q29uc3VtZXIgbV9jb25zdW1lciB7IEZl
dGNoQm9keUNvbnN1bWVyOjpUeXBlOjpBcnJheUJ1ZmZlciAgfTsKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0
Y2hSZXNwb25zZS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9u
c2UuaWRsCmluZGV4IDNmYjE0ODgxNDM1NGNlN2QxZjg0MDE4MGJjOTkwZGZiMjNkMGE5MmIuLmJl
M2MyY2UwMjkzN2Y2MjM4Zjg2NWQ5MjE5MjI2YjZmYjFkMTcwMWMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5pZGwKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmlkbApAQCAtNTMsMTEgKzUzLDI1IEBA
IGludGVyZmFjZSBGZXRjaFJlc3BvbnNlIHsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgRmV0Y2hI
ZWFkZXJzIGhlYWRlcnM7CiAgICAgW0pTQnVpbHRpbl0gcmVhZG9ubHkgYXR0cmlidXRlIFJlYWRh
YmxlU3RyZWFtPyBib2R5OwogCi0gICAgW05ld09iamVjdCwgQ2FsbFdpdGg9U2NyaXB0RXhlY3V0
aW9uQ29udGV4dCwgUmFpc2VzRXhjZXB0aW9uXSBGZXRjaFJlc3BvbnNlIGNsb25lKCk7CisgICAg
Ly8gQ29weSBvZiBGZXRjaEJvZHkgSURMIGFzIHdlIHdhbnQgdG8gaW1wbGVtZW50IHNvbWUgb2Yg
dGhlc2UgYXMgYnVpbHQtaW5zLgorICAgIFtJbXBsZW1lbnRlZEFzPWlzRGlzdHVyYmVkXSByZWFk
b25seSBhdHRyaWJ1dGUgYm9vbGVhbiBib2R5VXNlZDsKKyAgICBbSlNCdWlsdGluXSBQcm9taXNl
IGFycmF5QnVmZmVyKCk7CisgICAgW0pTQnVpbHRpbl0gUHJvbWlzZSBibG9iKCk7CisgICAgW0pT
QnVpbHRpbl0gUHJvbWlzZSBmb3JtRGF0YSgpOworICAgIFtKU0J1aWx0aW5dIFByb21pc2UganNv
bigpOworICAgIFtKU0J1aWx0aW5dIFByb21pc2UgdGV4dCgpOwogCisgICAgW0pTQnVpbHRpbl0g
RmV0Y2hSZXNwb25zZSBjbG9uZSgpOworCisgICAgW1ByaXZhdGVJZGVudGlmaWVyLCBOZXdPYmpl
Y3RdIEZldGNoUmVzcG9uc2UgY2xvbmVGb3JKUygpOworCisgICAgW0NvbmRpdGlvbmFsPVNUUkVB
TVNfQVBJLCBQcml2YXRlSWRlbnRpZmllcl0gdm9pZCBzdGFydENvbnN1bWluZ1N0cmVhbSh1bnNp
Z25lZCBzaG9ydCB0eXBlKTsKKyAgICBbQ29uZGl0aW9uYWw9U1RSRUFNU19BUEksIFByaXZhdGVJ
ZGVudGlmaWVyXSB2b2lkIGNvbnN1bWVDaHVuayhVaW50OEFycmF5IGNodW5rKTsKKyAgICBbQ29u
ZGl0aW9uYWw9U1RSRUFNU19BUEksIFByaXZhdGVJZGVudGlmaWVyXSBQcm9taXNlIGZpbmlzaENv
bnN1bWluZ1N0cmVhbSgpOworCisgICAgW1ByaXZhdGVJZGVudGlmaWVyXSBQcm9taXNlIGNvbnN1
bWUodW5zaWduZWQgc2hvcnQgdHlwZSk7CiAgICAgW1ByaXZhdGVJZGVudGlmaWVyLCBSYWlzZXNF
eGNlcHRpb25dIHZvaWQgc2V0U3RhdHVzKHVuc2lnbmVkIHNob3J0IHN0YXR1cywgRE9NU3RyaW5n
IHN0YXR1c1RleHQpOwogICAgIFtDYWxsV2l0aD1TY3JpcHRTdGF0ZSwgUHJpdmF0ZUlkZW50aWZp
ZXJdIHZvaWQgaW5pdGlhbGl6ZVdpdGgoYW55IGJvZHkpOwogICAgIFtQcml2YXRlSWRlbnRpZmll
ciwgTmV3T2JqZWN0XSBSZWFkYWJsZVN0cmVhbVNvdXJjZSBjcmVhdGVSZWFkYWJsZVN0cmVhbVNv
dXJjZSgpOwogICAgIFtQcml2YXRlSWRlbnRpZmllcl0gYm9vbGVhbiBpc0Rpc3R1cmJlZCgpOwog
fTsKLUZldGNoUmVzcG9uc2UgaW1wbGVtZW50cyBGZXRjaEJvZHk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuanMgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuanMKaW5kZXggYzRhY2MwMTAxMWY0YzFlZTYz
NzBkYzMzNDEzMzlkYjY4NTgxOTAzZS4uMmRhOWFjMmNjZjBlZWNmYzlhOTE5NGJkMTcxZTA3OTVl
ZDkwMzJjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJl
c3BvbnNlLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25z
ZS5qcwpAQCAtNDgsNiArNDgsMTIgQEAgZnVuY3Rpb24gaW5pdGlhbGl6ZUZldGNoUmVzcG9uc2Uo
Ym9keSwgaW5pdCkKICAgICBpZiAoYm9keSAhPT0gQHVuZGVmaW5lZCAmJiBib2R5ICE9PSBudWxs
KSB7CiAgICAgICAgIGlmIChzdGF0dXMgPT0gMTAxIHx8IHN0YXR1cyA9PSAyMDQgfHwgc3RhdHVz
ID09IDIwNSB8fCBzdGF0dXMgPT0gMzA0KQogICAgICAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJy
b3IoIlJlc3BvbnNlIGNhbm5vdCBoYXZlIGEgYm9keSB3aXRoIHRoZSBnaXZlbiBzdGF0dXMiKTsK
KworICAgICAgICAvLyBGSVhNRTogVXNlIEBpc1JlYWRhYmxlU3RyZWFtIG9uY2UgaXQgaXMgbm8g
bG9uZ2VyIGd1YXJkZWQgYnkgU1RSRUFNU19BUEkgZ3VhcmQuCisgICAgICAgIGxldCBpc0JvZHlS
ZWFkYWJsZVN0cmVhbSA9IChAaXNPYmplY3QoYm9keSkgJiYgISFib2R5LkB1bmRlcmx5aW5nU291
cmNlKTsKKyAgICAgICAgaWYgKGlzQm9keVJlYWRhYmxlU3RyZWFtKQorICAgICAgICAgIHRoaXMu
QGJvZHkgPSBib2R5OworCiAgICAgICAgIHRoaXMuQGluaXRpYWxpemVXaXRoKGJvZHkpOwogICAg
IH0KIApAQCAtNjgsMyArNzQsNzMgQEAgZnVuY3Rpb24gYm9keSgpCiAgICAgfQogICAgIHJldHVy
biB0aGlzLkBib2R5OwogfQorCitmdW5jdGlvbiBjbG9uZSgpCit7CisgICAgaWYgKCF0aGlzIGlu
c3RhbmNlb2YgQFJlc3BvbnNlKQorICAgICAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcigiRnVuY3Rp
b24gc2hvdWxkIGJlIGNhbGxlZCBvbiBhIFJlc3BvbnNlIik7CisKKyAgICBpZiAoQFJlc3BvbnNl
LnByb3RvdHlwZS5AaXNEaXN0dXJiZWQuQGNhbGwodGhpcykpCisgICAgICAgIHRocm93IG5ldyBA
VHlwZUVycm9yKCJDYW5ub3QgY2xvbmUgYSBkaXN0dXJiZWQgUmVzcG9uc2UiKTsKKworICAgIHZh
ciBjbG9uZWQgPSBAUmVzcG9uc2UucHJvdG90eXBlLkBjbG9uZUZvckpTLkBjYWxsKHRoaXMpOwor
ICAgIGlmICh0aGlzLkBib2R5KSB7CisgICAgICAgIHZhciB0ZWVkUmVhZGFibGVTdHJlYW1zID0g
QHRlZVJlYWRhYmxlU3RyZWFtKHRoaXMuQGJvZHksIGZhbHNlKTsKKyAgICAgICAgdGhpcy5AYm9k
eSA9IHRlZWRSZWFkYWJsZVN0cmVhbXNbMF07CisgICAgICAgIGNsb25lZC5AYm9keSA9IHRlZWRS
ZWFkYWJsZVN0cmVhbXNbMV07CisgICAgfQorICAgIHJldHVybiBjbG9uZWQ7Cit9CisKKy8vIGNv
bnN1bWUgYW5kIGNvbnN1bWVTdHJlYW0gc2luZ2xlIHBhcmFtZXRlciBzaG91bGQgYmUga2VwdCBp
biBzeW5jIHdpdGggRmV0Y2hCb2R5OjpDb25zdW1lclR5cGUuCitmdW5jdGlvbiBhcnJheUJ1ZmZl
cigpCit7CisgICAgaWYgKCF0aGlzIGluc3RhbmNlb2YgQFJlc3BvbnNlKQorICAgICAgICB0aHJv
dyBuZXcgQFR5cGVFcnJvcigiRnVuY3Rpb24gc2hvdWxkIGJlIGNhbGxlZCBvbiBhIFJlc3BvbnNl
Iik7CisKKyAgICBpZiAoIXRoaXMuQGJvZHkpCisgICAgICAgIHJldHVybiBAUmVzcG9uc2UucHJv
dG90eXBlLkBjb25zdW1lLkBjYWxsKHRoaXMsIDEpOworCisgICAgcmV0dXJuIEBjb25zdW1lU3Ry
ZWFtKHRoaXMsIDEpOworfQorCitmdW5jdGlvbiBibG9iKCkKK3sKKyAgICBpZiAoIXRoaXMgaW5z
dGFuY2VvZiBAUmVzcG9uc2UpCisgICAgICAgIHRocm93IG5ldyBAVHlwZUVycm9yKCJGdW5jdGlv
biBzaG91bGQgYmUgY2FsbGVkIG9uIGEgUmVzcG9uc2UiKTsKKworICAgIGlmICghdGhpcy5AYm9k
eSkKKyAgICAgICAgcmV0dXJuIEBSZXNwb25zZS5wcm90b3R5cGUuQGNvbnN1bWUuQGNhbGwodGhp
cywgMik7CisKKyAgICByZXR1cm4gQGNvbnN1bWVTdHJlYW0odGhpcywgMik7Cit9CisKK2Z1bmN0
aW9uIGZvcm1EYXRhKCkKK3sKKyAgICBpZiAoIXRoaXMgaW5zdGFuY2VvZiBAUmVzcG9uc2UpCisg
ICAgICAgIHRocm93IG5ldyBAVHlwZUVycm9yKCJGdW5jdGlvbiBzaG91bGQgYmUgY2FsbGVkIG9u
IGEgUmVzcG9uc2UiKTsKKworICAgIHJldHVybiBAUHJvbWlzZS5AcmVqZWN0KCJOb3QgaW1wbGVt
ZW50ZWQiKTsKK30KKworZnVuY3Rpb24ganNvbigpCit7CisgICAgaWYgKCF0aGlzIGluc3RhbmNl
b2YgQFJlc3BvbnNlKQorICAgICAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcigiRnVuY3Rpb24gc2hv
dWxkIGJlIGNhbGxlZCBvbiBhIFJlc3BvbnNlIik7CisKKyAgICBpZiAoIXRoaXMuQGJvZHkpCisg
ICAgICAgIHJldHVybiBAUmVzcG9uc2UucHJvdG90eXBlLkBjb25zdW1lLkBjYWxsKHRoaXMsIDMp
OworCisgICAgcmV0dXJuIEBjb25zdW1lU3RyZWFtKHRoaXMsIDMpOworfQorCitmdW5jdGlvbiB0
ZXh0KCkKK3sKKyAgICBpZiAoIXRoaXMgaW5zdGFuY2VvZiBAUmVzcG9uc2UpCisgICAgICAgIHRo
cm93IG5ldyBAVHlwZUVycm9yKCJGdW5jdGlvbiBzaG91bGQgYmUgY2FsbGVkIG9uIGEgUmVzcG9u
c2UiKTsKKworICAgIGlmICghdGhpcy5AYm9keSkKKyAgICAgICAgcmV0dXJuIEBSZXNwb25zZS5w
cm90b3R5cGUuQGNvbnN1bWUuQGNhbGwodGhpcywgNCk7CisKKyAgICByZXR1cm4gQGNvbnN1bWVT
dHJlYW0odGhpcywgNCk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKaW5kZXggNGY1ZThiZjMwMzcxZGU2MTQ3MTk2OGIwOWIyN2FlZTM0
N2VlNzY0Ny4uMzRjNGJiYTM0YTg1M2U2OGE0ZDQyOWFmZDkwNmNjYjIzNzQ1OGUwZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisr
KyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAt
MTYzMSw2ICsxNjMxLDcgQEAKIAkJNDFCRjcwMEYwRkU4NkY2MTAwNUU4REVDIC8qIFBsYXRmb3Jt
TWVzc2FnZVBvcnRDaGFubmVsLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDQxQkY3MDBEMEZFODZGNjEwMDVFOERFQyAvKiBQbGF0Zm9ybU1lc3NhZ2VQ
b3J0Q2hhbm5lbC5jcHAgKi87IH07CiAJCTQxQkY3MDEwMEZFODZGNjEwMDVFOERFQyAvKiBQbGF0
Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNDFCRjcwMEUwRkU4NkY2MTAwNUU4REVDIC8qIFBsYXRmb3JtTWVzc2Fn
ZVBvcnRDaGFubmVsLmggKi87IH07CiAJCTQxQzc2MEIxMEVERTAzRDMwMEMxNjU1RiAvKiBTY3Jp
cHRTdGF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NDFDNzYwQjAwRURFMDNEMzAwQzE2NTVGIC8qIFNjcmlwdFN0YXRlLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNDFDRjhCRTcxRDQ2MjI2NzAwNzA3
REM5IC8qIEZldGNoQm9keUNvbnN1bWVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQxQ0Y4QkU0MUQ0NjIyMjAwMDcwN0RDOSAvKiBGZXRjaEJvZHlD
b25zdW1lci5jcHAgKi87IH07CiAJCTQxRDAxNUNBMEY0QjVDNzEwMDRBNjYyRiAvKiBDb250ZW50
VHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFE
MDE1QzgwRjRCNUM3MTAwNEE2NjJGIC8qIENvbnRlbnRUeXBlLmggKi87IH07CiAJCTQxRDAxNUNC
MEY0QjVDNzEwMDRBNjYyRiAvKiBDb250ZW50VHlwZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUQwMTVDOTBGNEI1QzcxMDA0QTY2MkYgLyogQ29u
dGVudFR5cGUuY3BwICovOyB9OwogCQk0MUUxQjFEMDBGRjU5ODY5MDA1NzZCM0IgLyogQWJzdHJh
Y3RXb3JrZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDFFMUIxQ0EwRkY1OTg2OTAwNTc2QjNCIC8qIEFic3RyYWN0V29ya2VyLmNwcCAqLzsgfTsK
QEAgLTY5MDYsOCArNjkwNyw4IEBACiAJCUY5OEZGRjQ1MTFBMjY3NjIwMEY1NDhFOCAvKiBDU1NP
TVV0aWxzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBG
OThGRkY0MzExQTI2NzYyMDBGNTQ4RTggLyogQ1NTT01VdGlscy5oICovOyB9OwogCQlGOUYwRUQ3
QTBEQjUwQ0EyMDBEMTZEQjkgLyogWE1MSHR0cFJlcXVlc3RQcm9ncmVzc0V2ZW50LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGOUYwRUQ3NzBEQjUwQ0Ey
MDBEMTZEQjkgLyogWE1MSHR0cFJlcXVlc3RQcm9ncmVzc0V2ZW50LmggKi87IH07CiAJCUZBNjU0
QTZCMTEwOEFCRUQwMDI2MTVFMCAvKiBNYXRoTUxUZXh0RWxlbWVudC5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGQTY1NEE2OTExMDhBQkVEMDAyNjE1
RTAgLyogTWF0aE1MVGV4dEVsZW1lbnQuY3BwICovOyB9OwotCQlGQTY1NEE2QzExMDhBQkVEMDAy
NjE1RTAgLyogTWF0aE1MVGV4dEVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEZBNjU0QTZBMTEwOEFCRUQwMDI2MTVFMCAvKiBNYXRoTUxUZXh0
RWxlbWVudC5oICovOyB9OwogCQlGQTY1NEE2QjExMDhBQkVEMDAyNjI2RjEgLyogTWF0aE1MVW5k
ZXJPdmVyRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBGQTY1NEE2OTExMDhBQkVEMDAyNjI2RjEgLyogTWF0aE1MVW5kZXJPdmVyRWxlbWVu
dC5jcHAgKi87IH07CisJCUZBNjU0QTZDMTEwOEFCRUQwMDI2MTVFMCAvKiBNYXRoTUxUZXh0RWxl
bWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkE2
NTRBNkExMTA4QUJFRDAwMjYxNUUwIC8qIE1hdGhNTFRleHRFbGVtZW50LmggKi87IH07CiAJCUZB
NjU0QTZDMTEwOEFCRUQwMDI2MjZGMSAvKiBNYXRoTUxVbmRlck92ZXJFbGVtZW50LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGQTY1NEE2QTExMDhBQkVE
MDAyNjI2RjEgLyogTWF0aE1MVW5kZXJPdmVyRWxlbWVudC5oICovOyB9OwogCQlGQUJFNzJGNDEw
NTlDMUVCMDBEOTk5REQgLyogTWF0aE1MRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGQUJFNzJFRDEwNTlDMUVCMDBEOTk5REQgLyogTWF0
aE1MRWxlbWVudC5jcHAgKi87IH07CiAJCUZBQkU3MkY1MTA1OUMxRUIwMEQ5OTlERCAvKiBNYXRo
TUxFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBGQUJFNzJFRTEwNTlDMUVCMDBEOTk5REQgLyogTWF0aE1MRWxlbWVudC5oICovOyB9OwpAQCAt
OTIxNSw2ICs5MjE2LDkgQEAKIAkJNDFCRjcwMEQwRkU4NkY2MTAwNUU4REVDIC8qIFBsYXRmb3Jt
TWVzc2FnZVBvcnRDaGFubmVsLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFt
ZSA9IFBsYXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsLmNwcDsgcGF0aCA9IGRlZmF1bHQvUGxhdGZv
cm1NZXNzYWdlUG9ydENoYW5uZWwuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0
MUJGNzAwRTBGRTg2RjYxMDA1RThERUMgLyogUGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWwuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gUGxhdGZvcm1NZXNzYWdlUG9ydENoYW5u
ZWwuaDsgcGF0aCA9IGRlZmF1bHQvUGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWwuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFDNzYwQjAwRURFMDNEMzAwQzE2NTVGIC8qIFNjcmlw
dFN0YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcmlwdFN0YXRlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxQ0Y4QkU0MUQ0NjIyMjAwMDcwN0RDOSAv
KiBGZXRjaEJvZHlDb25zdW1lci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBGZXRjaEJvZHlDb25zdW1lci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTQxQ0Y4QkU1MUQ0NjIyMjAwMDcwN0RDOSAvKiBGZXRjaEJvZHlDb25zdW1lci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGZXRjaEJvZHlDb25zdW1lci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk0MUNGOEJFNjFENDYyMjJDMDA3MDdEQzkgLyogRmV0Y2hJbnRl
cm5hbHMuanMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmphdmFzY3JpcHQ7IHBhdGggPSBGZXRjaElu
dGVybmFscy5qczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFEMDE1QzgwRjRCNUM3
MTAwNEE2NjJGIC8qIENvbnRlbnRUeXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IENvbnRlbnRUeXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxRDAxNUM5
MEY0QjVDNzEwMDRBNjYyRiAvKiBDb250ZW50VHlwZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBDb250ZW50VHlwZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTQxRTFCMUNBMEZGNTk4NjkwMDU3NkIzQiAvKiBBYnN0cmFjdFdvcmtlci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBYnN0cmFjdFdvcmtlci5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMzQwOCw4ICsxMzQxMiw4IEBACiAJCUI1N0NC
NTJDMTgyQTNFRUQwMDc5QTY0NyAvKiBJbmxpbmVFbGVtZW50Qm94LmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IElubGluZUVsZW1lbnRCb3guY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlCNTk1RkY0NjE4MjRDRUUzMDBGRjUxQ0QgLyogUmVuZGVySXRl
cmF0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVuZGVySXRlcmF0b3Iu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjU5Q0E1OUFGMTcwRDhGQUE1QjhDOUFE
IC8qIE1hdGhNTFNjcmlwdHNFbGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IE1hdGhNTFNjcmlwdHNFbGVtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJQjU5Q0E4NDlENDFFNkY2NUQ4MTE5N0FCIC8qIE1hdGhNTFNjcmlwdHNFbGVtZW50
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1hdGhNTFNjcmlwdHNFbGVtZW50
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUI1OUNBNTlBRjE3MEQ4RkFBNUI4Q0FC
RSAvKiBNYXRoTUxQYWRkZWRFbGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IE1hdGhNTFBhZGRlZEVsZW1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlCNTlDQTg0OUQ0MUU2RjY1RDgxMTk3QUIgLyogTWF0aE1MU2NyaXB0c0VsZW1lbnQu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWF0aE1MU2NyaXB0c0VsZW1lbnQu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjU5Q0E4NDlENDFFNkY2NUQ4MTE5OEJD
IC8qIE1hdGhNTFBhZGRlZEVsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gTWF0aE1MUGFkZGVkRWxlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlC
NTlERDY5NzExOTAyOUU1MDA3RTk2ODQgLyogSlNEYXRhYmFzZUNhbGxiYWNrLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRGF0YWJhc2VDYWxsYmFjay5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlCNTlERDY5ODExOTAyOUU1MDA3RTk2ODQgLyogSlNEYXRhYmFz
ZUNhbGxiYWNrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTRGF0
YWJhc2VDYWxsYmFjay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNTA4Niw4
ICsxNTA5MCw4IEBACiAJCUZBNjU0QTYzMTEwOEFCQjcwMDI2MTVFMCAvKiBtYXRobWwuY3NzICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gdGV4dC5jc3M7IHBhdGggPSBtYXRobWwuY3NzOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlGQTY1NEE2NzExMDhBQkUyMDAyNjE1RTAgLyogbWF0aGF0dHJzLmluICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gdGV4dDsgcGF0aCA9IG1hdGhhdHRycy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJRkE2NTRBNjkxMTA4QUJFRDAwMjYxNUUwIC8qIE1hdGhNTFRleHRFbGVtZW50LmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1hdGhNTFRleHRFbGVtZW50LmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRkE2NTRBNkExMTA4QUJFRDAwMjYxNUUw
IC8qIE1hdGhNTFRleHRFbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IE1hdGhNTFRleHRFbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZBNjU0
QTY5MTEwOEFCRUQwMDI2MjZGMSAvKiBNYXRoTUxVbmRlck92ZXJFbGVtZW50LmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1hdGhNTFVuZGVyT3ZlckVsZW1lbnQuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGQTY1NEE2QTExMDhBQkVEMDAyNjE1RTAg
LyogTWF0aE1MVGV4dEVsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
TWF0aE1MVGV4dEVsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkE2NTRB
NkExMTA4QUJFRDAwMjYyNkYxIC8qIE1hdGhNTFVuZGVyT3ZlckVsZW1lbnQuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWF0aE1MVW5kZXJPdmVyRWxlbWVudC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlGQTZFNDY2RkNEMDQxOEE5OTY2QTVCNjAgLyogRE5TUmVz
b2x2ZVF1ZXVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEROU1Jlc29sdmVR
dWV1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGQUJFNzJFRDEwNTlDMUVCMDBE
OTk5REQgLyogTWF0aE1MRWxlbWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBNYXRoTUxFbGVtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTE3MDkyLDEyICsxNzA5NiwxNSBAQAogCQkJCTQxRjU0RjdEMUM1MEM0RjYwMDMzODQ4OCAvKiBG
ZXRjaEJvZHkuY3BwICovLAogCQkJCTQxRjU0RjdFMUM1MEM0RjYwMDMzODQ4OCAvKiBGZXRjaEJv
ZHkuaCAqLywKIAkJCQk0MUY1NEY3RjFDNTBDNEY2MDAzMzg0ODggLyogRmV0Y2hCb2R5LmlkbCAq
LywKKwkJCQk0MUNGOEJFNDFENDYyMjIwMDA3MDdEQzkgLyogRmV0Y2hCb2R5Q29uc3VtZXIuY3Bw
ICovLAorCQkJCTQxQ0Y4QkU1MUQ0NjIyMjAwMDcwN0RDOSAvKiBGZXRjaEJvZHlDb25zdW1lci5o
ICovLAogCQkJCTQxNDdFMkIzMUM4OTkxMjYwMEE3RTcxNSAvKiBGZXRjaEJvZHlPd25lci5jcHAg
Ki8sCiAJCQkJNDE0N0UyQjIxQzg4MzM3RjAwQTdFNzE1IC8qIEZldGNoQm9keU93bmVyLmggKi8s
CiAJCQkJNDFGNTRGODIxQzUwQzRGNjAwMzM4NDg4IC8qIEZldGNoSGVhZGVycy5jcHAgKi8sCiAJ
CQkJNDFGNTRGODMxQzUwQzRGNjAwMzM4NDg4IC8qIEZldGNoSGVhZGVycy5oICovLAogCQkJCTQx
RjU0Rjg0MUM1MEM0RjYwMDMzODQ4OCAvKiBGZXRjaEhlYWRlcnMuaWRsICovLAogCQkJCTQxRjU0
Rjg1MUM1MEM0RjYwMDMzODQ4OCAvKiBGZXRjaEhlYWRlcnMuanMgKi8sCisJCQkJNDFDRjhCRTYx
RDQ2MjIyQzAwNzA3REM5IC8qIEZldGNoSW50ZXJuYWxzLmpzICovLAogCQkJCTQxNDdFMkI0MUM4
OTkxMjYwMEE3RTcxNSAvKiBGZXRjaExvYWRlci5jcHAgKi8sCiAJCQkJNDE0N0UyQjUxQzg5OTEy
NjAwQTdFNzE1IC8qIEZldGNoTG9hZGVyLmggKi8sCiAJCQkJNDE0N0UyQjYxQzg5OTEyNjAwQTdF
NzE1IC8qIEZldGNoTG9hZGVyQ2xpZW50LmggKi8sCkBAIC0zMDc1OSw2ICszMDc2Niw3IEBACiAJ
CQkJQkMwNkVERTMwQkZENkQwRDAwODU2RTlEIC8qIEpTSFRNTFRhYmxlQ2VsbEVsZW1lbnQuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJQkMwNkVEOUQwQkZENjYwNjAwODU2RTlEIC8qIEpTSFRNTFRh
YmxlQ29sRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzA2RUUwNDBCRkQ3MUFBMDA4
NTZFOUQgLyogSlNIVE1MVGFibGVFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTQxQ0Y4
QkU3MUQ0NjIyNjcwMDcwN0RDOSAvKiBGZXRjaEJvZHlDb25zdW1lci5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlCQzA2RUQ5RjBCRkQ2NjA2MDA4NTZFOUQgLyogSlNIVE1MVGFibGVSb3dFbGVtZW50
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDMDZFRDA2MEJGRDVCQUUwMDg1NkU5RCAvKiBKU0hU
TUxUYWJsZVNlY3Rpb25FbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUQ2NDg5RDI1MTY2
RkZDRjEwMDdDMDMxQiAvKiBKU0hUTUxUZW1wbGF0ZUVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8s
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVByb21pc2UuaCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NUHJvbWlzZS5oCmluZGV4IDEyNzVhMzJl
Njc4ZGRkOGJlY2EyNTRiZDFkNmQ0ZDE5ZjAyNGMyODcuLjRlMjJlMzM0ZmYzNzZhZDM4NDliZjBk
MTA5OTliOTdiZDlkOWJjODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRE9NUHJvbWlzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NUHJv
bWlzZS5oCkBAIC0xMTgsNiArMTE4LDggQEAgcHVibGljOgogICAgIHRlbXBsYXRlPGNsYXNzIFJl
amVjdFJlc3VsdFR5cGU+IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPFByb21pc2VSZXN1bHRJbnNw
ZWN0b3I8UmVqZWN0UmVzdWx0VHlwZT46OnBhc3NCeUNvbnN0UmVmLCB2b2lkPjo6dHlwZQogICAg
IHJlamVjdChjb25zdCBSZWplY3RSZXN1bHRUeXBlJiByZXN1bHQpIHsgcmVqZWN0V2l0aFZhbHVl
KHJlc3VsdCk7IH0KIAorICAgIHRlbXBsYXRlPGNsYXNzIFJlc29sdmVSZXN1bHRUeXBlPiB2b2lk
IHJlc29sdmVXaXRoTmV3bHlDcmVhdGVkKFJlZjxSZXNvbHZlUmVzdWx0VHlwZT4mJik7CisKICAg
ICB2b2lkIHJlamVjdChFeGNlcHRpb25Db2RlLCBjb25zdCBTdHJpbmcmID0geyB9KTsKIAogICAg
IEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QoKSBjb25zdDsKQEAgLTE4MSw2ICsxODMs
MTYgQEAgaW5saW5lIHZvaWQgRGVmZXJyZWRXcmFwcGVyOjpyZXNvbHZlV2l0aFZhbHVlKFJlc29s
dmVSZXN1bHRUeXBlJiYgcmVzdWx0KQogICAgIHJlc29sdmUoKmV4ZWMsIHRvSlMoZXhlYywgbV9n
bG9iYWxPYmplY3QuZ2V0KCksIHN0ZDo6Zm9yd2FyZDxSZXNvbHZlUmVzdWx0VHlwZT4ocmVzdWx0
KSkpOwogfQogCit0ZW1wbGF0ZTxjbGFzcyBSZXNvbHZlUmVzdWx0VHlwZT4KK2lubGluZSB2b2lk
IERlZmVycmVkV3JhcHBlcjo6cmVzb2x2ZVdpdGhOZXdseUNyZWF0ZWQoUmVmPFJlc29sdmVSZXN1
bHRUeXBlPiYmIHJlc3VsdCkKK3sKKyAgICBBU1NFUlQobV9kZWZlcnJlZCk7CisgICAgQVNTRVJU
KG1fZ2xvYmFsT2JqZWN0KTsKKyAgICBKU0M6OkV4ZWNTdGF0ZSogZXhlYyA9IG1fZ2xvYmFsT2Jq
ZWN0LT5nbG9iYWxFeGVjKCk7CisgICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9ja2VyKGV4ZWMpOwor
ICAgIHJlc29sdmUoKmV4ZWMsIHRvSlNOZXdseUNyZWF0ZWQoZXhlYywgbV9nbG9iYWxPYmplY3Qu
Z2V0KCksIFdURk1vdmUocmVzdWx0KSkpOworfQorCiB0ZW1wbGF0ZTxjbGFzcyBSZWplY3RSZXN1
bHRUeXBlPgogaW5saW5lIHZvaWQgRGVmZXJyZWRXcmFwcGVyOjpyZWplY3RXaXRoVmFsdWUoUmVq
ZWN0UmVzdWx0VHlwZSYmIHJlc3VsdCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1dlYkNvcmVCdWlsdGluTmFtZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL1dlYkNvcmVCdWlsdGluTmFtZXMuaAppbmRleCBhNWFkZDk0YjIwOWEyNjkzYmVjMzUxYzk4
ZmZjNWNlMjhhNzYxYmUyLi4zMDAwNzJkNjZmOTQ4YTIzNjM1YzM0MGIxYTVlNWM1YzMwNGQxOWU0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XZWJDb3JlQnVpbHRpbk5h
bWVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2ViQ29yZUJ1aWx0aW5OYW1l
cy5oCkBAIC01Myw2ICs1MywxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgbWFjcm8obG9j
YWxTdHJlYW1zKSBcCiAgICAgbWFjcm8ob3BlcmF0aW9ucykgXAogICAgIG1hY3JvKG93bmVyUmVh
ZGFibGVTdHJlYW0pIFwKKyAgICBtYWNybyhjbG9uZUZvckpTKSBcCisgICAgbWFjcm8oY29uc3Vt
ZSkgXAorICAgIG1hY3JvKGNvbnN1bWVDaHVuaykgXAorICAgIG1hY3JvKGZpbmlzaENvbnN1bWlu
Z1N0cmVhbSkgXAogICAgIG1hY3JvKHByaXZhdGVHZXRTdGF0cykgXAogICAgIG1hY3JvKHB1bGxp
bmcpIFwKICAgICBtYWNybyhwdWxsQWdhaW4pIFwKQEAgLTcyLDYgKzc2LDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgIG1hY3JvKHNldEJvZHkpIFwKICAgICBtYWNybyhzZXRTdGF0dXMpIFwK
ICAgICBtYWNybyhzdGF0ZSkgXAorICAgIG1hY3JvKHN0YXJ0Q29uc3VtaW5nU3RyZWFtKSBcCiAg
ICAgbWFjcm8oc3RhcnRlZCkgXAogICAgIG1hY3JvKHN0YXJ0ZWRQcm9taXNlKSBcCiAgICAgbWFj
cm8oc3RvcmVkRXJyb3IpIFwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9D
aGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCmluZGV4IDQ3N2Iw
YzYyYzVlZGU2NmViOTQxZTU2Njk0OGZmOWE0NGY2ODhiZmYuLjU2NjY3NjNkMTk1ZjFhYzk2ZDU2
MTBhYTY0MTIxZGEzNDI2ZmIxNzAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE0IEBACisyMDE2LTA3LTI1ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNv
bT4KKworICAgICAgICBbRmV0Y2ggQVBJXSBSZXNwb25zZSBjb25zdHJ1Y3RvciBzaG91bGQgYmUg
YWJsZSB0byB0YWtlIGEgUmVhZGFibGVTdHJlYW0gYXMgYm9keQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU5ODA0CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvZmV0Y2gv
YXBpL3Jlc3BvbnNlL3Jlc3BvbnNlLWNvbnN1bWUtZW1wdHktZXhwZWN0ZWQudHh0OgorICAgICAg
ICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkvcmVzcG9uc2UvcmVzcG9uc2UtY29uc3Vt
ZS1leHBlY3RlZC50eHQ6CisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9y
ZXNwb25zZS9yZXNwb25zZS1jb25zdW1lLmh0bWw6IFVwZGF0aW5nIHRlc3QgdG8gZXhlcmNpY2Ug
UmVzcG9uc2UgY29vbnN0cnVjdG9yIHdpdGggYSBSZWFkYWJsZVN0cmVhbS4KKwogMjAxNi0wNy0y
NCAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgW0ZldGNoIEFQ
SV0gUmVxdWVzdCBzaG91bGQgYmUgY3JlYXRlZCB3aXRoIGFueSBIZWFkZXJzSW5pdCBkYXRhCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Zl
dGNoL2FwaS9yZXNwb25zZS9yZXNwb25zZS1jb25zdW1lLWVtcHR5LWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZmV0Y2gvYXBpL3Jlc3Bv
bnNlL3Jlc3BvbnNlLWNvbnN1bWUtZW1wdHktZXhwZWN0ZWQudHh0CmluZGV4IDY3MDRkZTFhNDQy
ZTVmMWZkNzI1YjBjZWUyMmM3ZjA3MzdhNWU1ODYuLmU5Njc5NTE4YmQ5YzAzMDk0ZDhmZmZjZjlm
Y2Y4MmRkMTc3YmM3Y2YgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvZmV0Y2gvYXBpL3Jlc3BvbnNlL3Jlc3BvbnNlLWNvbnN1bWUtZW1wdHkt
ZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvZmV0Y2gvYXBpL3Jlc3BvbnNlL3Jlc3BvbnNlLWNvbnN1bWUtZW1wdHktZXhwZWN0ZWQu
dHh0CkBAIC0zLDcgKzMsNyBAQCBQQVNTIENvbnN1bWUgcmVzcG9uc2UncyBib2R5IGFzIHRleHQK
IFBBU1MgQ29uc3VtZSByZXNwb25zZSdzIGJvZHkgYXMgYmxvYiAKIFBBU1MgQ29uc3VtZSByZXNw
b25zZSdzIGJvZHkgYXMgYXJyYXlCdWZmZXIgCiBQQVNTIENvbnN1bWUgcmVzcG9uc2UncyBib2R5
IGFzIGpzb24gCi1GQUlMIENvbnN1bWUgcmVzcG9uc2UncyBib2R5IGFzIGZvcm1EYXRhIHByb21p
c2VfdGVzdDogVW5oYW5kbGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiB1bmRlZmluZWQKK0ZBSUwg
Q29uc3VtZSByZXNwb25zZSdzIGJvZHkgYXMgZm9ybURhdGEgcHJvbWlzZV90ZXN0OiBVbmhhbmRs
ZWQgcmVqZWN0aW9uIHdpdGggdmFsdWU6ICJOb3QgaW1wbGVtZW50ZWQiCiBQQVNTIENvbnN1bWUg
ZW1wdHkgYmxvYiByZXNwb25zZSBib2R5IGFzIGFycmF5QnVmZmVyIAogUEFTUyBDb25zdW1lIGVt
cHR5IHRleHQgcmVzcG9uc2UgYm9keSBhcyBhcnJheUJ1ZmZlciAKIFBBU1MgQ29uc3VtZSBlbXB0
eSBibG9iIHJlc3BvbnNlIGJvZHkgYXMgdGV4dCAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZmV0Y2gvYXBpL3Jlc3BvbnNlL3Jlc3BvbnNl
LWNvbnN1bWUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9mZXRjaC9hcGkvcmVzcG9uc2UvcmVzcG9uc2UtY29uc3VtZS1leHBlY3RlZC50
eHQKaW5kZXggZDA4OGE2OWE4Y2U0MmEyZmEwYTFjOTIwOTlkODZhNmJmYTU3ZTZkOC4uNDE2YTM5
MmNlNmFkNmNhYjY4ZTI3MWRkMDRhMTlhMmVlNTAyMDNlZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkvcmVzcG9uc2UvcmVz
cG9uc2UtY29uc3VtZS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkvcmVzcG9uc2UvcmVzcG9uc2UtY29uc3VtZS1l
eHBlY3RlZC50eHQKQEAgLTMsOSArMywxMyBAQCBQQVNTIENvbnN1bWUgcmVzcG9uc2UncyBib2R5
IGFzIHRleHQKIFBBU1MgQ29uc3VtZSByZXNwb25zZSdzIGJvZHkgYXMgYmxvYiAKIFBBU1MgQ29u
c3VtZSByZXNwb25zZSdzIGJvZHkgYXMgYXJyYXlCdWZmZXIgCiBQQVNTIENvbnN1bWUgcmVzcG9u
c2UncyBib2R5IGFzIGpzb24gCi1GQUlMIENvbnN1bWUgcmVzcG9uc2UncyBib2R5IGFzIGZvcm1E
YXRhIHByb21pc2VfdGVzdDogVW5oYW5kbGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiB1bmRlZmlu
ZWQKK0ZBSUwgQ29uc3VtZSByZXNwb25zZSdzIGJvZHkgYXMgZm9ybURhdGEgcHJvbWlzZV90ZXN0
OiBVbmhhbmRsZWQgcmVqZWN0aW9uIHdpdGggdmFsdWU6ICJOb3QgaW1wbGVtZW50ZWQiCiBQQVNT
IENvbnN1bWUgYmxvYiByZXNwb25zZSdzIGJvZHkgYXMgYmxvYiAKIFBBU1MgQ29uc3VtZSBibG9i
IHJlc3BvbnNlJ3MgYm9keSBhcyB0ZXh0IAogUEFTUyBDb25zdW1lIGJsb2IgcmVzcG9uc2UncyBi
b2R5IGFzIGpzb24gCiBQQVNTIENvbnN1bWUgYmxvYiByZXNwb25zZSdzIGJvZHkgYXMgYXJyYXlC
dWZmZXIgCitQQVNTIENvbnN1bWUgc3RyZWFtIHJlc3BvbnNlJ3MgYm9keSBhcyBibG9iIAorUEFT
UyBDb25zdW1lIHN0cmVhbSByZXNwb25zZSdzIGJvZHkgYXMgdGV4dCAKK1BBU1MgQ29uc3VtZSBz
dHJlYW0gcmVzcG9uc2UncyBib2R5IGFzIGpzb24gCitQQVNTIENvbnN1bWUgc3RyZWFtIHJlc3Bv
bnNlJ3MgYm9keSBhcyBhcnJheUJ1ZmZlciAKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkvcmVzcG9uc2UvcmVzcG9uc2Ut
Y29uc3VtZS5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9mZXRjaC9hcGkvcmVzcG9uc2UvcmVzcG9uc2UtY29uc3VtZS5odG1sCmluZGV4IDAyODE0ZmY1
YmU5MjZiZTczODI2NGJhOTEwNzBiZDIzNjlkNTQ2OTEuLjk5NDEwY2Q0NDhhYjhiZDY0NzkwMTg3
MDA0ZWZkMzRiMWM5OWFiNDkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvZmV0Y2gvYXBpL3Jlc3BvbnNlL3Jlc3BvbnNlLWNvbnN1bWUuaHRt
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNo
L2FwaS9yZXNwb25zZS9yZXNwb25zZS1jb25zdW1lLmh0bWwKQEAgLTkyLDYgKzkyLDI1IEBACiAg
ICAgY2hlY2tCbG9iUmVzcG9uc2VCb2R5KGJsb2IsIHRleHREYXRhLCAianNvbiIsIGNoZWNrQm9k
eUpTT04pOwogICAgIGNoZWNrQmxvYlJlc3BvbnNlQm9keShibG9iLCB0ZXh0RGF0YSwgImFycmF5
QnVmZmVyIiwgY2hlY2tCb2R5QXJyYXlCdWZmZXIpOwogCisgICAgZnVuY3Rpb24gY2hlY2tSZWFk
YWJsZVN0cmVhbVJlc3BvbnNlQm9keShzdHJlYW1EYXRhLCBib2R5VHlwZSwgY2hlY2tGdW5jdGlv
bikgeworICAgICAgcHJvbWlzZV90ZXN0KGZ1bmN0aW9uKHRlc3QpIHsKKyAgICAgICAgdmFyIHN0
cmVhbSA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgICAgICAgc3RhcnQ6IGZ1bmN0aW9uKGNv
bnRyb2xsZXIpIHsKKyAgICAgICAgICAgIGNvbnRyb2xsZXIuZW5xdWV1ZSgoc3RyaW5nVG9BcnJh
eShzdHJlYW1EYXRhKSkpOworICAgICAgICAgICAgY29udHJvbGxlci5jbG9zZSgpOworICAgICAg
ICAgIH0KKyAgICAgICAgfSk7CisgICAgICAgIHZhciByZXNwb25zZSA9IG5ldyBSZXNwb25zZShz
dHJlYW0pOworICAgICAgICBhc3NlcnRfZmFsc2UocmVzcG9uc2UuYm9keVVzZWQsICJib2R5VXNl
ZCBpcyBmYWxzZSBhdCBpbml0Iik7CisgICAgICAgIHJldHVybiBjaGVja0Z1bmN0aW9uKHJlc3Bv
bnNlLCBzdHJlYW1EYXRhKTsKKyAgICAgIH0sICJDb25zdW1lIHN0cmVhbSByZXNwb25zZSdzIGJv
ZHkgYXMgIiArIGJvZHlUeXBlKTsKKyAgICB9CisKKyAgICBjaGVja1JlYWRhYmxlU3RyZWFtUmVz
cG9uc2VCb2R5KHRleHREYXRhLCAiYmxvYiIsIGNoZWNrQm9keUJsb2IpOworICAgIGNoZWNrUmVh
ZGFibGVTdHJlYW1SZXNwb25zZUJvZHkodGV4dERhdGEsICJ0ZXh0IiwgY2hlY2tCb2R5VGV4dCk7
CisgICAgY2hlY2tSZWFkYWJsZVN0cmVhbVJlc3BvbnNlQm9keSh0ZXh0RGF0YSwgImpzb24iLCBj
aGVja0JvZHlKU09OKTsKKyAgICBjaGVja1JlYWRhYmxlU3RyZWFtUmVzcG9uc2VCb2R5KHRleHRE
YXRhLCAiYXJyYXlCdWZmZXIiLCBjaGVja0JvZHlBcnJheUJ1ZmZlcik7CisKICAgICA8L3Njcmlw
dD4KICAgPC9ib2R5PgogPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>284492</attachid>
            <date>2016-07-25 09:30:36 -0700</date>
            <delta_ts>2016-07-25 09:53:16 -0700</delta_ts>
            <desc>Fixing build</desc>
            <filename>bug-159804-20160725182927.patch</filename>
            <type>text/plain</type>
            <size>64512</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAzNjgzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmE2ZGJmOTIzODAxOTFi
ZTk5ZThkZTlkYjNiOGRjNTY3YmY1MzIyMy4uZTdhMGVhNzA3OGYxZTFmMzkyOTBhNTIwZDhhNmI0
MDE3ZDQwOGIzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyNyBAQAorMjAxNi0wNy0yNSAgWW91
ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAgICAgW0ZldGNoIEFQSV0gUmVz
cG9uc2UgY29uc3RydWN0b3Igc2hvdWxkIGJlIGFibGUgdG8gdGFrZSBhIFJlYWRhYmxlU3RyZWFt
IGFzIGJvZHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE1OTgwNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IENvdmVyZWQgYnkgZXhpc3RpbmcgYW5kIHVwZGF0ZWQgdGVzdHMuCisKKyAgICAgICAgSW50cm9k
dWNlZCBGZXRjaEJvZHlDb25zdW1lciB0byBlbmNhcHN1bGF0ZSB0aGUgY29kZSByZXNwb25zaWJs
ZSB0byBhZGFwdCBGZXRjaEJvZHkgaW50ZXJuYWwgZGF0YSB0byB0aGUgcmVxdWVzdHMgbWFkZSBi
eSB1c2VyIHNjcmlwdHMuCisgICAgICAgIFRoaXMgcmVmYWN0b3JpbmcgZWFzZXMgdGhlIGhhbmRs
aW5nIG9mIGludGVybmFsIGRhdGEgY29taW5nIGZyb20gUmVhZGFibGVTdHJlYW0uCisKKyAgICAg
ICAgRmV0Y2hMb2FkZXIgaXMgbm93IGRlbGVnYXRpbmcgY29udmVyc2lvbiBmcm9tIHRoZSBkYXRh
IHRvIGl0cyBtX2NvbnN1bWVyIGZpZWxkLgorICAgICAgICBJZiBtX2NvbnN1bWVyIGlzIG51bGws
IEZldGNoTG9hZGVyIGNhbGxzIEZldGNoTG9hZGVyQ2xpZW50OjpkaWRSZWNlaXZlRGF0YSAoc3Ry
ZWFtaW5nIHJlY2VwdGlvbiBtb2RlKS4KKyAgICAgICAgQ2xpZW50cyBvZiBGZXRjaExvYWRlciBu
ZWVkcyB0byBvYXNzIGEgRmV0Y2hCb2R5Q29uc3VtZXIgdG8gdGhlIEZldGNoTG9hZGVyIHRvIGRv
IHRoZSBkYXRhIGFkYXB0YXRpb24gYXQgbG9hZGVyIGNyZWF0aW9uIHRpbWUuCisKKyAgICAgICAg
QWRkZWQgc3VwcG9ydCBmb3IgYm9keSBkYXRhIHBhc3NlZCBhcyBhIFJlYWRhYmxlU3RyZWFtIHRv
IFJlc3BvbnNlLgorICAgICAgICBUaGlzIHJlcXVpcmVzIHRvIHNldCBAYm9keSBpbnRlcm5hbCBz
bG90IG9mIHRoZSBSZXNwb25zZSBvYmplY3QgaW4gdGhlIGNvbnN0cnVjdG9yIGluaXRpYWxpemF0
aW9uIEpTIGJ1aWx0LWluLgorCisgICAgICAgIFRvIGFjdHVhbGx5IHVzZSB0aGF0IGRhdGEsIEJv
ZHkgYWNjZXNzb3JzIGFyZSBhbHNvIGltcGxlbWVudGVkIGFzIEpTIGJ1aWx0LWluIGZvciBSZXNw
b25zZS4KKyAgICAgICAgU2luY2UgdGhlcmUgaXMgbm8gbmVlZCB0byBkbyBzbyBmb3IgUmVxdWVz
dCwgRmV0Y2hSZXNwb25zZSBpcyBubyBsb25nZXIgbWFya2VkIGFzIGltcGxlbWVudGluZyBGZXRj
aEJvZHkgYnV0IGFsbAorICAgICAgICBGZXRjaEJvZHkgSURMIGRlc2NyaXB0aW9uIGlzIGlubGlu
ZWQgaW4gRmV0Y2hSZXNwb25zZS5pZGwuCisKKyAgICAgICAgRm9yIGVhY2ggYm9keSBhY2Nlc3Nv
ciAoYXJyYXlCdWZmZXIsIGJsb2IsIGpzb24sIHRleHQpLCB0aGUgY29ycmVzcG9uZGluZyBKUyBi
dWlsdC1pbiBjaGVja3Mgd2hldGhlciBAYm9keSBpbnRlcm5hbCBzbG90IGlzIHNldC4KKyAgICAg
ICAgSWYgdGhhdCBpcyBub3QgdGhlIGNhc2UsIHJlZ3VsYXIgaGFuZGxpbmcgaXMgZG9uZSB0aHJv
dWdoIGEgbmV3IHByaXZhdGUgbWV0aG9kIGNhbGxlZCBAY29uc3VtZS4KKyAgICAgICAgSWYgQGJv
ZHkgaW50ZXJuYWwgc2xvdCBpcyBzZXQsIGNodW5rcyBhcmUgcHVtcGVkIGZyb20gdGhlIFJlYWRh
YmxlU3RyZWFtIHVzaW5nIFJlYWRhYmxlU3RyZWFtIGludGVybmFsIGJ1aWx0LWlucyBmdW5jdGlv
bnMuCisgICAgICAgIERhdGEgaGFuZGxpbmcgaXMgZG9uZSBpbiBDKysgdGhyb3VnaCB0aGUgcHJp
dmF0ZSBtZXRob2RzIEBzdGFydENvbnN1bWluZ1N0cmVhbSwgQGNvbnN1bWVDaHVuayBhbmQgQGZp
bmlzaENvbnN1bWluZ1N0cmVhbS4KKworICAgICAgICBUbyBzdXBwb3J0IGNsb25pbmcgb2YgUmVz
cG9uc2Ugd2l0aCBib2RpZXMsIGNsb25lIG1ldGhvZCBpcyBhbHNvIGltcGxlbWVudGVkIGFzIGEg
SlMgYnVpbHQtaW4uCisgICAgICAgIE1haW4gY2xvbmUgaXMgZG9uZSB0aHJvdWdoIEBjbG9uZUZv
SlMgcHJpdmF0ZSBtZXRob2QgaW1wbGVtZW50ZWQgaW4gQysrLgorICAgICAgICBKUyBidWlsdC1p
biBjbG9uZSBjb2RlIGRvZXMgdGhlIHRlZWluZyBvZiB0aGUgUmVhZGFibGVTdHJlYW0gdXNpbmcg
UmVhZGFibGVTdHJlYW0gSlMgYnVpbHQtaW4gaW50ZXJuYWwgZnVuY3Rpb25zLgorCisgICAgICAg
IEludHJvZHVjaW5nIGEgbmV3IFJlYWRhYmxlU3RyZWFtIHR5cGUgZm9yIEZldGNoQm9keSB0byBj
b3BlIHdpdGggYm9keSBiZWluZyBzdG9yZWQgaW4gYSBSZWFkYWJsZVN0cmVhbS4KKworICAgICAg
ICBJbnRyb2R1Y2luZyBhIG5ldyBMb2FkZWQgdHlwZSBmb3IgRmV0Y2hCb2R5IHRvIGNvcGUgd2l0
aCBib2R5IGJlaW5nIHN0b3JlZCBpbiB0aGUgRmV0Y2hCb2R5Q29uc3VtZXIgb3duZWQgYnkgRmV0
Y2hCb2R5LgorICAgICAgICBUaGlzIGFsbG93cyByZW1vdmluZyB0aGUgY29udmVyc2lvbiBvZiBk
YXRhIHRvIEpTQzo6QXJyYXlCdWZmZXIgd2hpY2ggd2FzIGRvbmUgYnkgZGVmYXV0IGF0IHRoZSBl
bmQgb2YgRmV0Y2ggbG9hZGluZyBpZiB1c2VyIHNjcmlwdCBkaWQgbm90IHJlcXVlc3QgZGF0YSBi
ZWZvcmUuCisgICAgICAgIEF0IHRoZSBlbmQgb2YgYSBsb2FkLCB0aGUgZGF0YSByZW1haW5zIGlu
IEZldGNoQm9keUNvbnN1bWVyIGFuZCB0aGUgYm9keSBpcyBtYXJrZWQgYXMgTG9hZGVkLgorICAg
ICAgICBJZiB0aGUgdXNlciB3YW50cyB0byBnZXQgdGhlIGRhdGEgYWZ0ZXIgZGF0YSBmaW5pc2hl
ZCBiZWluZyBsb2FkZWQsIEZldGNoQm9keUNvbnN1bWVyIHdpbGwgZG8gdGhlIHJlcXVpcmVkIGNv
bnZlcnNpb25zLgorCisgICAgICAgIEludHJvZHVjaW5nIERlZmVycmVkV3JhcHBlcjo6cmVzb2x2
ZVdpdGhOZXdWYWx1ZSB0byBoYW5kbGUgdGhlIGNhc2Ugb2YgcmVzb2x2aW5nIHByb21pc2VzIHdp
dGggbmV3IG9iamVjdHMuCisgICAgICAgIFRoaXMgYWxsb3dzIGRpcmVjdGx5IHVzaW5nIHRvSlNO
ZXdseUNyZWF0ZWQgaW5zdGVhZCBvZiB0b0pTLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6
IEFkZGluZyBGZXRjaEJvZHlDb25zdW1lci4KKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNo
Qm9keS5jcHA6IE1vdmluZyBkYXRhIGFkYXB0YXRpb24gY29kZSB0byBGZXRjaEJvZHlDb25zdW1l
ci4KKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keTo6ZXh0cmFjdCk6CisgICAgICAgIChXZWJD
b3JlOjpGZXRjaEJvZHk6OmFycmF5QnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9k
eTo6YmxvYik6IFNldHRpbmcgY29udGVudFR5cGUgaW4gRmV0Y2hCb2R5Q29uc3VtZXIgdG8gaGFu
ZGxlIHByb3BlciBjcmVhdGlvbiBvZiBibG9iLgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5
Ojpqc29uKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keTo6dGV4dCk6CisgICAgICAgIChX
ZWJDb3JlOjpGZXRjaEJvZHk6OmNvbnN1bWUpOiBSZWZhY3RvcmluZyBhbmQgYWRkZWQgY2FzZSBv
ZiBMb2FkZWQgYm9kaWVzLgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Ojpjb25zdW1lQXNT
dHJlYW0pOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keTo6Y29uc3VtZUFycmF5
QnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keTo6Y29uc3VtZVRleHQpOgorICAg
ICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Ojpjb25zdW1lQmxvYik6CisgICAgICAgIChXZWJDb3Jl
OjpGZXRjaEJvZHk6OmxvYWRpbmdGYWlsZWQpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5
Ojpsb2FkaW5nU3VjY2VlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keTo6bG9hZGlu
Z1R5cGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6YmxvYkZyb21BcnJheUJ1ZmZlcik6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHk6OmZ1bGZpbGxUZXh0UHJvbWlz
ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHk6OmxvYWRlZEFzQXJyYXlC
dWZmZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Ojpsb2FkZWRBc1Rl
eHQpOiBEZWxldGVkLgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Lmg6CisgICAg
ICAgIChXZWJDb3JlOjpGZXRjaEJvZHk6OmNvbnN1bWVyKToKKyAgICAgICAgKiBNb2R1bGVzL2Zl
dGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcDogQWRkZWQsIHJlc3BvbnNpYmxlIG9mIGRhdGEgYWRh
cHRhdGlvbi4KKyAgICAgICAgKFdlYkNvcmU6OmJsb2JGcm9tRGF0YSk6CisgICAgICAgIChXZWJD
b3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6cmVzb2x2ZVdpdGhEYXRhKToKKyAgICAgICAgKFdlYkNv
cmU6OkZldGNoQm9keUNvbnN1bWVyOjpyZXNvbHZlKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNo
Qm9keUNvbnN1bWVyOjphcHBlbmQpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3Vt
ZXI6OnRha2VEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjp0YWtl
QXNBcnJheUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6dGFr
ZUFzQmxvYik6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6dGFrZUFzVGV4
dCk6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5oOiBBZGRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjpGZXRjaEJvZHlDb25zdW1lcik6
CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6c2V0Q29udGVudFR5cGUpOgor
ICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OnNldFR5cGUpOgorICAgICAgICAo
V2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OnR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6RmV0
Y2hCb2R5Q29uc3VtZXI6OmNsZWFuKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1
bWVyOjpoYXNEYXRhKToKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keU93bmVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keU93bmVyOjpsb2FkQmxvYik6CisgICAgICAg
IChXZWJDb3JlOjpGZXRjaEJvZHlPd25lcjo6YmxvYkxvYWRpbmdTdWNjZWVkZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6RmV0Y2hCb2R5T3duZXI6OmxvYWRlZEJsb2JBc1RleHQpOiBEZWxldGVkLgor
ICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5T3duZXIuaDoKKyAgICAgICAgKFdlYkNv
cmU6OkZldGNoQm9keU93bmVyOjpsb2FkZWRCbG9iQXNBcnJheUJ1ZmZlcik6IERlbGV0ZWQuCisg
ICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaEludGVybmFscy5qczoKKyAgICAgICAgKGNvbnN1
bWVTdHJlYW0pOiBQdW1wIFJlYWRhYmxlU3RyZWFtIGRhdGEgYW5kIHNlbmQgaXQgdG8gRmV0Y2hS
ZXNwb25zZSB0byBiZSBjb252ZXJ0ZWQgYWNjb3JkaW5nIHVzZXIgbmVlZC4KKyAgICAgICAgKiBN
b2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoTG9h
ZGVyOjpGZXRjaExvYWRlcik6IEZldGNoTG9hZGVyIGlzIHNpbXBsaWZpZWQgYXMgaXQgaGFzIHR3
byBub2RlczogY29uc3VtZXIgbW9kZSBpbiB3aGljaCBjYXNlCisgICAgICAgIGRhdGEgaXMgc2Vu
dCB0byB0aGUgY29uc3VtZXIgYW5kIG5vLWNvbnN1bWVyIG1vZGUgaW4gd2hpY2ggY2FzZSBkYXRh
IGlzIHBhc3NlZCB0byBsb2FkZXIgY2xpZW50LiBUaGUgc2Vjb25kIG1vZGUKKyAgICAgICAgaXMg
dXNlZCB0byBjb252ZXl5IGRhdGEgdG8gUmVhZGFibGVTdHJlYW0gc291cmNlLgorICAgICAgICAo
V2ViQ29yZTo6RmV0Y2hMb2FkZXI6OnN0b3ApOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hMb2Fk
ZXI6OnN0YXJ0U3RyZWFtaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoTG9hZGVyOjpkaWRS
ZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaExvYWRlcjo6ZGlkRmluaXNoTG9h
ZGluZyk6IERlbGV0ZWQuCisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlci5oOgor
ICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgKFdl
YkNvcmU6OkZldGNoTG9hZGVyQ2xpZW50OjpkaWRGaW5pc2hMb2FkaW5nQXNUZXh0KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkZldGNoTG9hZGVyQ2xpZW50OjpkaWRGaW5pc2hMb2FkaW5n
QXNBcnJheUJ1ZmZlcik6IERlbGV0ZWQuCisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaFJl
c3BvbnNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoUmVzcG9uc2U6OmNsb25lRm9ySlMp
OgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hSZXNwb25zZTo6Qm9keUxvYWRlcjo6ZGlkU3VjY2Vl
ZCk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaFJlc3BvbnNlOjpCb2R5TG9hZGVyOjpzdGFydCk6
CisgICAgICAgIChXZWJDb3JlOjpGZXRjaFJlc3BvbnNlOjpjb25zdW1lKTogSW50cm9kdWNlZCB0
byBjb25zdW1lIGRhdGEgc3RvcmVkIGluIGJvZHkgYW5kIG5vdCBpbiBSZWFkYWJsZVN0cmVhbS4K
KyAgICAgICAgKFdlYkNvcmU6OkZldGNoUmVzcG9uc2U6OnN0YXJ0Q29uc3VtaW5nU3RyZWFtKTog
SW50cm9kdWNlZCB0byBzdGFydCBwcm9jZXNzIG9mIGNvbnN1bWluZyBkYXRhIHN0b3JlZCBpbiB0
aGUgUmVhZGFibGVTdHJlYW0uCisgICAgICAgIChXZWJDb3JlOjpGZXRjaFJlc3BvbnNlOjpjb25z
dW1lQ2h1bmspOiBSZWNlcHRpb24gb2YgUmVhZGFibGVTdHJlYW0gZGF0YS4KKyAgICAgICAgKFdl
YkNvcmU6OkZldGNoUmVzcG9uc2U6OmZpbmlzaENvbnN1bWluZ1N0cmVhbSk6IERvaW5nIHRoZSBm
aW5hbCBjb252ZXJzaW9uLgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hSZXNwb25zZTo6Y2xvbmUp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hSZXNwb25zZTo6Qm9keUxvYWRlcjo6
ZGlkRmluaXNoTG9hZGluZ0FzQXJyYXlCdWZmZXIpOiBEZWxldGVkLgorICAgICAgICAqIE1vZHVs
ZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5oOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hS
ZXNwb25zZS5pZGw6IElubGluaW5nIG9mIEZldGNoQm9keSBtZXRob2RzL2F0dHJpYnV0ZXMgYW5k
IGFkZGluZyBwcml2YXRlIG1ldGhvZHMuCisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaFJl
c3BvbnNlLmpzOgorICAgICAgICAoaW5pdGlhbGl6ZUZldGNoUmVzcG9uc2UpOgorICAgICAgICAo
Y2xvbmUpOgorICAgICAgICAoYXJyYXlCdWZmZXIpOgorICAgICAgICAoYmxvYik6CisgICAgICAg
IChmb3JtRGF0YSk6CisgICAgICAgIChqc29uKToKKyAgICAgICAgKHRleHQpOgorICAgICAgICAq
IFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9KU0RPTVByb21pc2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRlZmVycmVkV3JhcHBlcjo6cmVz
b2x2ZVdpdGhOZXdWYWx1ZSk6CisgICAgICAgICogYmluZGluZ3MvanMvV2ViQ29yZUJ1aWx0aW5O
YW1lcy5oOgorCiAyMDE2LTA3LTI1ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdh
bGlhLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OKHIyMDA5MzEpOiBJbnZhbGlkIGNhc3QgaW4g
aGlnaGVzdEFuY2VzdG9yVG9XcmFwTWFya3VwKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggYTU1
ODNjYWFlODliNWRiNmUxMGE0ZGI2NzVmYTNiMWI1NGU5YjI1YS4uZTNhYmViMDJlOWJiZGZkZTI3
NjA1MzljOTI3NTMxY2M4NzM2ZTU5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VM
aXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTgxOCw2ICs4
MTgsNyBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAKICAgICBNb2R1bGVzL2ZldGNoL0RPTVdpbmRv
d0ZldGNoLmNwcAogICAgIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcAorICAgIE1vZHVsZXMv
ZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwCiAgICAgTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlP
d25lci5jcHAKICAgICBNb2R1bGVzL2ZldGNoL0ZldGNoSGVhZGVycy5jcHAKICAgICBNb2R1bGVz
L2ZldGNoL0ZldGNoTG9hZGVyLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9mZXRjaC9GZXRjaEJvZHkuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRj
aEJvZHkuY3BwCmluZGV4IDhjNDc5ZDVmOGUwNjI1MDJkOTU3MGM4YjliNTg1YmNmMGRiNDRkM2Yu
LmY2NWRkNDczNGYzMjY2MTFiYWJlMWRhODNhYWZkOTY0NjdjZmMyYWQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHAKQEAgLTM5LDEyICszOSwxMSBAQAogI2lu
Y2x1ZGUgIkhUVFBQYXJzZXJzLmgiCiAjaW5jbHVkZSAiSlNCbG9iLmgiCiAjaW5jbHVkZSAiSlNE
T01Gb3JtRGF0YS5oIgorI2luY2x1ZGUgIkpTUmVhZGFibGVTdHJlYW0uaCIKICNpbmNsdWRlICJS
ZWFkYWJsZVN0cmVhbVNvdXJjZS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBS
ZWY8QmxvYj4gYmxvYkZyb21BcnJheUJ1ZmZlcihBcnJheUJ1ZmZlciosIGNvbnN0IFN0cmluZyYp
OwotCiBGZXRjaEJvZHk6OkZldGNoQm9keShSZWY8QmxvYj4mJiBibG9iKQogICAgIDogbV90eXBl
KFR5cGU6OkJsb2IpCiAgICAgLCBtX21pbWVUeXBlKGJsb2ItPnR5cGUoKSkKQEAgLTc1LDYgKzc0
LDggQEAgRmV0Y2hCb2R5IEZldGNoQm9keTo6ZXh0cmFjdChKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUs
IEpTQzo6SlNWYWx1ZSB2YWx1ZSkKICAgICAgICAgcmV0dXJuIEZldGNoQm9keSgqSlNET01Gb3Jt
RGF0YTo6dG9XcmFwcGVkKHZhbHVlKSk7CiAgICAgaWYgKHZhbHVlLmlzU3RyaW5nKCkpCiAgICAg
ICAgIHJldHVybiBGZXRjaEJvZHkodmFsdWUudG9XVEZTdHJpbmcoJnN0YXRlKSk7CisgICAgaWYg
KHZhbHVlLmluaGVyaXRzKEpTUmVhZGFibGVTdHJlYW06OmluZm8oKSkpCisgICAgICAgIHJldHVy
biB7IFR5cGU6OlJlYWRhYmxlU3RyZWFtIH07CiAgICAgcmV0dXJuIHsgfTsKIH0KIApAQCAtODks
MTMgKzkwLDE2IEBAIEZldGNoQm9keSBGZXRjaEJvZHk6OmV4dHJhY3RGcm9tQm9keShGZXRjaEJv
ZHkqIGJvZHkpCiB2b2lkIEZldGNoQm9keTo6YXJyYXlCdWZmZXIoRmV0Y2hCb2R5T3duZXImIG93
bmVyLCBEZWZlcnJlZFdyYXBwZXImJiBwcm9taXNlKQogewogICAgIEFTU0VSVChtX3R5cGUgIT0g
VHlwZTo6Tm9uZSk7Ci0gICAgY29uc3VtZShvd25lciwgQ29uc3VtZXI6OlR5cGU6OkFycmF5QnVm
ZmVyLCBXVEZNb3ZlKHByb21pc2UpKTsKKyAgICBtX2NvbnN1bWVyLnNldFR5cGUoRmV0Y2hCb2R5
Q29uc3VtZXI6OlR5cGU6OkFycmF5QnVmZmVyKTsKKyAgICBjb25zdW1lKG93bmVyLCBXVEZNb3Zl
KHByb21pc2UpKTsKIH0KIAogdm9pZCBGZXRjaEJvZHk6OmJsb2IoRmV0Y2hCb2R5T3duZXImIG93
bmVyLCBEZWZlcnJlZFdyYXBwZXImJiBwcm9taXNlKQogewogICAgIEFTU0VSVChtX3R5cGUgIT0g
VHlwZTo6Tm9uZSk7Ci0gICAgY29uc3VtZShvd25lciwgQ29uc3VtZXI6OlR5cGU6OkJsb2IsIFdU
Rk1vdmUocHJvbWlzZSkpOworICAgIG1fY29uc3VtZXIuc2V0VHlwZShGZXRjaEJvZHlDb25zdW1l
cjo6VHlwZTo6QmxvYik7CisgICAgbV9jb25zdW1lci5zZXRDb250ZW50VHlwZShCbG9iOjpub3Jt
YWxpemVkQ29udGVudFR5cGUoZXh0cmFjdE1JTUVUeXBlRnJvbU1lZGlhVHlwZShtX21pbWVUeXBl
KSkpOworICAgIGNvbnN1bWUob3duZXIsIFdURk1vdmUocHJvbWlzZSkpOwogfQogCiB2b2lkIEZl
dGNoQm9keTo6anNvbihGZXRjaEJvZHlPd25lciYgb3duZXIsIERlZmVycmVkV3JhcHBlciYmIHBy
b21pc2UpCkBAIC0xMDYsNyArMTEwLDggQEAgdm9pZCBGZXRjaEJvZHk6Ompzb24oRmV0Y2hCb2R5
T3duZXImIG93bmVyLCBEZWZlcnJlZFdyYXBwZXImJiBwcm9taXNlKQogICAgICAgICBmdWxmaWxs
UHJvbWlzZVdpdGhKU09OKHByb21pc2UsIG1fdGV4dCk7CiAgICAgICAgIHJldHVybjsKICAgICB9
Ci0gICAgY29uc3VtZShvd25lciwgQ29uc3VtZXI6OlR5cGU6OkpTT04sIFdURk1vdmUocHJvbWlz
ZSkpOworICAgIG1fY29uc3VtZXIuc2V0VHlwZShGZXRjaEJvZHlDb25zdW1lcjo6VHlwZTo6SlNP
Tik7CisgICAgY29uc3VtZShvd25lciwgV1RGTW92ZShwcm9taXNlKSk7CiB9CiAKIHZvaWQgRmV0
Y2hCb2R5Ojp0ZXh0KEZldGNoQm9keU93bmVyJiBvd25lciwgRGVmZXJyZWRXcmFwcGVyJiYgcHJv
bWlzZSkKQEAgLTExNywzMSArMTIyLDM3IEBAIHZvaWQgRmV0Y2hCb2R5Ojp0ZXh0KEZldGNoQm9k
eU93bmVyJiBvd25lciwgRGVmZXJyZWRXcmFwcGVyJiYgcHJvbWlzZSkKICAgICAgICAgcHJvbWlz
ZS5yZXNvbHZlKG1fdGV4dCk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgY29uc3VtZShv
d25lciwgQ29uc3VtZXI6OlR5cGU6OlRleHQsIFdURk1vdmUocHJvbWlzZSkpOworICAgIG1fY29u
c3VtZXIuc2V0VHlwZShGZXRjaEJvZHlDb25zdW1lcjo6VHlwZTo6VGV4dCk7CisgICAgY29uc3Vt
ZShvd25lciwgV1RGTW92ZShwcm9taXNlKSk7CiB9CiAKLXZvaWQgRmV0Y2hCb2R5Ojpjb25zdW1l
KEZldGNoQm9keU93bmVyJiBvd25lciwgQ29uc3VtZXI6OlR5cGUgdHlwZSwgRGVmZXJyZWRXcmFw
cGVyJiYgcHJvbWlzZSkKK3ZvaWQgRmV0Y2hCb2R5Ojpjb25zdW1lKEZldGNoQm9keU93bmVyJiBv
d25lciwgRGVmZXJyZWRXcmFwcGVyJiYgcHJvbWlzZSkKIHsKLSAgICBpZiAobV90eXBlID09IFR5
cGU6OkFycmF5QnVmZmVyKSB7Ci0gICAgICAgIGNvbnN1bWVBcnJheUJ1ZmZlcih0eXBlLCBwcm9t
aXNlKTsKKyAgICBzd2l0Y2ggKG1fdHlwZSkgeworICAgIGNhc2UgVHlwZTo6QXJyYXlCdWZmZXI6
CisgICAgICAgIGNvbnN1bWVBcnJheUJ1ZmZlcihwcm9taXNlKTsKICAgICAgICAgcmV0dXJuOwot
ICAgIH0KLSAgICBpZiAobV90eXBlID09IFR5cGU6OlRleHQpIHsKLSAgICAgICAgY29uc3VtZVRl
eHQodHlwZSwgcHJvbWlzZSk7CisgICAgY2FzZSBUeXBlOjpUZXh0OgorICAgICAgICBjb25zdW1l
VGV4dChwcm9taXNlKTsKICAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBpZiAobV90eXBlID09
IFR5cGU6OkJsb2IpIHsKLSAgICAgICAgY29uc3VtZUJsb2Iob3duZXIsIHR5cGUsIFdURk1vdmUo
cHJvbWlzZSkpOworICAgIGNhc2UgVHlwZTo6QmxvYjoKKyAgICAgICAgY29uc3VtZUJsb2Iob3du
ZXIsIFdURk1vdmUocHJvbWlzZSkpOwogICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmICht
X3R5cGUgPT0gVHlwZTo6TG9hZGluZykgewotICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGJl
IGFibGUgdG8gY2hhbmdlIHRoZSBsb2FkaW5nIHR5cGUgdG8gdGV4dCBpZiBjb25zdW1lciB0eXBl
IGlzIEpTT04gb3IgVGV4dC4KLSAgICAgICAgbV9jb25zdW1lciA9IENvbnN1bWVyKHt0eXBlLCBX
VEZNb3ZlKHByb21pc2UpfSk7CisgICAgY2FzZSBUeXBlOjpMb2FkaW5nOgorICAgICAgICBtX2Nv
bnN1bWVQcm9taXNlID0gV1RGTW92ZShwcm9taXNlKTsKICAgICAgICAgcmV0dXJuOworICAgIGNh
c2UgVHlwZTo6TG9hZGVkOgorICAgICAgICBtX2NvbnN1bWVyLnJlc29sdmUocHJvbWlzZSk7Cisg
ICAgICAgIHJldHVybjsKKyAgICBjYXNlIFR5cGU6Ok5vbmU6CisgICAgICAgIEZBTExUSFJPVUdI
OworICAgIGNhc2UgVHlwZTo6UmVhZGFibGVTdHJlYW06CisgICAgICAgIC8vIElmIG1fdHlwZSBp
cyBSZWFkYWJsZVN0cmVhbSwgd2Ugc2hvdWxkIG5vdCBiZSB0aGVyZSBhcyBKUyBCdWlsdGlucyBz
aG91bGQgaGF2ZSBoYW5kbGVkIHRoaXMgY2FzZS4KKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CisgICAgZGVmYXVsdDoKKyAgICAgICAgLy8gRklYTUU6IFN1cHBvcnQgb3RoZXIgdHlwZXMu
CisgICAgICAgIHByb21pc2UucmVqZWN0KDApOwogICAgIH0KLQotICAgIC8vIEZJWE1FOiBTdXBw
b3J0IG90aGVyIHR5cGVzLgotICAgIHByb21pc2UucmVqZWN0KDApOwogfQogCiAjaWYgRU5BQkxF
KFNUUkVBTVNfQVBJKQpAQCAtMTQ5LDgxICsxNjAsNTggQEAgdm9pZCBGZXRjaEJvZHk6OmNvbnN1
bWVBc1N0cmVhbShGZXRjaEJvZHlPd25lciYgb3duZXIsIEZldGNoUmVzcG9uc2VTb3VyY2UmIHNv
dXIKIHsKICAgICBBU1NFUlQobV90eXBlICE9IFR5cGU6OkxvYWRpbmcpOwogCisgICAgYm9vbCBj
bG9zZVN0cmVhbSA9IGZhbHNlOwogICAgIHN3aXRjaCAobV90eXBlKSB7CiAgICAgY2FzZSBUeXBl
OjpBcnJheUJ1ZmZlcjoKICAgICAgICAgQVNTRVJUKG1fZGF0YSk7Ci0gICAgICAgIGlmIChzb3Vy
Y2UuZW5xdWV1ZShSZWZQdHI8SlNDOjpBcnJheUJ1ZmZlcj4obV9kYXRhKSkpCi0gICAgICAgICAg
ICBzb3VyY2UuY2xvc2UoKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICBjbG9zZVN0cmVhbSA9
IHNvdXJjZS5lbnF1ZXVlKFJlZlB0cjxKU0M6OkFycmF5QnVmZmVyPihtX2RhdGEpKTsKKyAgICAg
ICAgYnJlYWs7CiAgICAgY2FzZSBUeXBlOjpUZXh0OiB7CiAgICAgICAgIFZlY3Rvcjx1aW50OF90
PiBkYXRhID0gZXh0cmFjdEZyb21UZXh0KCk7Ci0gICAgICAgIGlmIChzb3VyY2UuZW5xdWV1ZShB
cnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSkpKQotICAgICAg
ICAgICAgc291cmNlLmNsb3NlKCk7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgY2xvc2VTdHJl
YW0gPSBzb3VyY2UuZW5xdWV1ZShBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlKGRhdGEuZGF0YSgpLCBk
YXRhLnNpemUoKSkpOworICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBUeXBlOjpCbG9i
OgogICAgICAgICBBU1NFUlQobV9ibG9iKTsKLSAgICAgICAgb3duZXIubG9hZEJsb2IoKm1fYmxv
YiwgRmV0Y2hMb2FkZXI6OlR5cGU6OlN0cmVhbSk7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAg
b3duZXIubG9hZEJsb2IoKm1fYmxvYiwgbnVsbHB0cik7CisgICAgICAgIGJyZWFrOwogICAgIGNh
c2UgVHlwZTo6Tm9uZToKLSAgICAgICAgc291cmNlLmNsb3NlKCk7Ci0gICAgICAgIHJldHVybjsK
LSAgICBkZWZhdWx0OgotICAgICAgICBzb3VyY2UuZXJyb3IoQVNDSUlMaXRlcmFsKCJub3QgaW1w
bGVtZW50ZWQiKSk7CisgICAgICAgIGNsb3NlU3RyZWFtID0gdHJ1ZTsKKyAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBUeXBlOjpMb2FkZWQ6IHsKKyAgICAgICAgY2xvc2VTdHJlYW0gPSBzb3VyY2Uu
ZW5xdWV1ZShtX2NvbnN1bWVyLnRha2VBc0FycmF5QnVmZmVyKCkpOworICAgICAgICBicmVhazsK
ICAgICB9Ci19Ci0jZW5kaWYKKyAgICBjYXNlIFR5cGU6OlJlYWRhYmxlU3RyZWFtOgorICAgICAg
ICAvLyBUaGlzIHNob3VsZCBiZSBoYW5kbGVkIGJ5IEpTIEJ1aWx0aW5zLgorICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKIAotdm9pZCBGZXRjaEJvZHk6OmNvbnN1bWVBcnJheUJ1ZmZlcihD
b25zdW1lcjo6VHlwZSB0eXBlLCBEZWZlcnJlZFdyYXBwZXImIHByb21pc2UpCi17Ci0gICAgaWYg
KHR5cGUgPT0gQ29uc3VtZXI6OlR5cGU6OkFycmF5QnVmZmVyKSB7Ci0gICAgICAgIGZ1bGZpbGxQ
cm9taXNlV2l0aEFycmF5QnVmZmVyKHByb21pc2UsIG1fZGF0YS5nZXQoKSk7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0gICAgaWYgKHR5cGUgPT0gQ29uc3VtZXI6OlR5cGU6OkJsb2IpIHsKLSAg
ICAgICAgcHJvbWlzZS5yZXNvbHZlKGJsb2JGcm9tQXJyYXlCdWZmZXIobV9kYXRhLmdldCgpLCBC
bG9iOjpub3JtYWxpemVkQ29udGVudFR5cGUoZXh0cmFjdE1JTUVUeXBlRnJvbU1lZGlhVHlwZSht
X21pbWVUeXBlKSkpKTsKLSAgICAgICAgcmV0dXJuOworICAgIGRlZmF1bHQ6CisgICAgICAgIHNv
dXJjZS5lcnJvcihBU0NJSUxpdGVyYWwoIm5vdCBpbXBsZW1lbnRlZCIpKTsKICAgICB9CiAKLSAg
ICBBU1NFUlQodHlwZSA9PSBDb25zdW1lcjo6VHlwZTo6VGV4dCB8fCB0eXBlID09IENvbnN1bWVy
OjpUeXBlOjpKU09OKTsKLSAgICAvLyBGSVhNRTogRG8gd2UgbmVlZCBUZXh0UmVzb3VyY2VEZWNv
ZGVyIHRvIGNyZWF0ZSBhIFN0cmluZyB0byBkZWNvZGUgVVRGLTggZGF0YS4KLSAgICBmdWxmaWxs
VGV4dFByb21pc2UodHlwZSwgVGV4dFJlc291cmNlRGVjb2Rlcjo6Y3JlYXRlKEFTQ0lJTGl0ZXJh
bCgidGV4dC9wbGFpbiIpLCAiVVRGLTgiKS0+ZGVjb2RlQW5kRmx1c2goc3RhdGljX2Nhc3Q8Y29u
c3QgY2hhcio+KG1fZGF0YS0+ZGF0YSgpKSwgbV9kYXRhLT5ieXRlTGVuZ3RoKCkpLCBwcm9taXNl
KTsKKyAgICBpZiAoY2xvc2VTdHJlYW0pCisgICAgICAgIHNvdXJjZS5jbG9zZSgpOwogfQorI2Vu
ZGlmCiAKLXZvaWQgRmV0Y2hCb2R5Ojpjb25zdW1lVGV4dChDb25zdW1lcjo6VHlwZSB0eXBlLCBE
ZWZlcnJlZFdyYXBwZXImIHByb21pc2UpCit2b2lkIEZldGNoQm9keTo6Y29uc3VtZUFycmF5QnVm
ZmVyKERlZmVycmVkV3JhcHBlciYgcHJvbWlzZSkKIHsKLSAgICBBU1NFUlQodHlwZSA9PSBDb25z
dW1lcjo6VHlwZTo6QXJyYXlCdWZmZXIgfHwgdHlwZSA9PSBDb25zdW1lcjo6VHlwZTo6QmxvYik7
Ci0KLSAgICBpZiAodHlwZSA9PSBDb25zdW1lcjo6VHlwZTo6QXJyYXlCdWZmZXIpIHsKLSAgICAg
ICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGEgPSBleHRyYWN0RnJvbVRleHQoKTsKLSAgICAgICAgZnVs
ZmlsbFByb21pc2VXaXRoQXJyYXlCdWZmZXIocHJvbWlzZSwgZGF0YS5kYXRhKCksIGRhdGEuc2l6
ZSgpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBTdHJpbmcgY29udGVudFR5cGUgPSBC
bG9iOjpub3JtYWxpemVkQ29udGVudFR5cGUoZXh0cmFjdE1JTUVUeXBlRnJvbU1lZGlhVHlwZSht
X21pbWVUeXBlKSk7Ci0gICAgcHJvbWlzZS5yZXNvbHZlKEJsb2I6OmNyZWF0ZShleHRyYWN0RnJv
bVRleHQoKSwgY29udGVudFR5cGUpKTsKKyAgICBtX2NvbnN1bWVyLnJlc29sdmVXaXRoRGF0YShw
cm9taXNlLCBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4obV9kYXRhLT5kYXRhKCkpLCBtX2Rh
dGEtPmJ5dGVMZW5ndGgoKSk7CiB9CiAKLUZldGNoTG9hZGVyOjpUeXBlIEZldGNoQm9keTo6bG9h
ZGluZ1R5cGUoQ29uc3VtZXI6OlR5cGUgdHlwZSkKK3ZvaWQgRmV0Y2hCb2R5Ojpjb25zdW1lVGV4
dChEZWZlcnJlZFdyYXBwZXImIHByb21pc2UpCiB7Ci0gICAgc3dpdGNoICh0eXBlKSB7Ci0gICAg
Y2FzZSBDb25zdW1lcjo6VHlwZTo6SlNPTjoKLSAgICBjYXNlIENvbnN1bWVyOjpUeXBlOjpUZXh0
OgotICAgICAgICByZXR1cm4gRmV0Y2hMb2FkZXI6OlR5cGU6OlRleHQ7Ci0gICAgY2FzZSBDb25z
dW1lcjo6VHlwZTo6QmxvYjoKLSAgICBjYXNlIENvbnN1bWVyOjpUeXBlOjpBcnJheUJ1ZmZlcjoK
LSAgICAgICAgcmV0dXJuIEZldGNoTG9hZGVyOjpUeXBlOjpBcnJheUJ1ZmZlcjsKLSAgICBkZWZh
dWx0OgotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuIEZldGNo
TG9hZGVyOjpUeXBlOjpBcnJheUJ1ZmZlcjsKLSAgICB9OworICAgIFZlY3Rvcjx1aW50OF90PiBk
YXRhID0gZXh0cmFjdEZyb21UZXh0KCk7CisgICAgbV9jb25zdW1lci5yZXNvbHZlV2l0aERhdGEo
cHJvbWlzZSwgZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKTsKIH0KIAotdm9pZCBGZXRjaEJvZHk6
OmNvbnN1bWVCbG9iKEZldGNoQm9keU93bmVyJiBvd25lciwgQ29uc3VtZXI6OlR5cGUgdHlwZSwg
RGVmZXJyZWRXcmFwcGVyJiYgcHJvbWlzZSkKK3ZvaWQgRmV0Y2hCb2R5Ojpjb25zdW1lQmxvYihG
ZXRjaEJvZHlPd25lciYgb3duZXIsIERlZmVycmVkV3JhcHBlciYmIHByb21pc2UpCiB7CiAgICAg
QVNTRVJUKG1fYmxvYik7CiAKLSAgICBtX2NvbnN1bWVyID0gQ29uc3VtZXIoe3R5cGUsIFdURk1v
dmUocHJvbWlzZSl9KTsKLSAgICBvd25lci5sb2FkQmxvYigqbV9ibG9iLCBsb2FkaW5nVHlwZSh0
eXBlKSk7CisgICAgbV9jb25zdW1lUHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSk7CisgICAgb3du
ZXIubG9hZEJsb2IoKm1fYmxvYiwgJm1fY29uc3VtZXIpOwogfQogCiBWZWN0b3I8dWludDhfdD4g
RmV0Y2hCb2R5OjpleHRyYWN0RnJvbVRleHQoKSBjb25zdApAQCAtMjM2LDYzICsyMjQsMjEgQEAg
VmVjdG9yPHVpbnQ4X3Q+IEZldGNoQm9keTo6ZXh0cmFjdEZyb21UZXh0KCkgY29uc3QKICAgICBy
ZXR1cm4gdmFsdWU7CiB9CiAKLXN0YXRpYyBpbmxpbmUgUmVmPEJsb2I+IGJsb2JGcm9tQXJyYXlC
dWZmZXIoQXJyYXlCdWZmZXIqIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkKLXsK
LSAgICBpZiAoIWJ1ZmZlcikKLSAgICAgICAgcmV0dXJuIEJsb2I6OmNyZWF0ZShWZWN0b3I8dWlu
dDhfdD4oKSwgY29udGVudFR5cGUpOwotCi0gICAgLy8gRklYTUU6IFdlIHNob3VsZCB0cnkgdG8g
bW92ZSBidWZmZXIgdG8gQmxvYiB3aXRob3V0IGRvaW5nIHRoaXMgY29weS4KLSAgICBWZWN0b3I8
dWludDhfdD4gdmFsdWUoYnVmZmVyLT5ieXRlTGVuZ3RoKCkpOwotICAgIG1lbWNweSh2YWx1ZS5k
YXRhKCksIGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPmJ5dGVMZW5ndGgoKSk7Ci0gICAgcmV0dXJu
IEJsb2I6OmNyZWF0ZShXVEZNb3ZlKHZhbHVlKSwgY29udGVudFR5cGUpOwotfQotCi12b2lkIEZl
dGNoQm9keTo6ZnVsZmlsbFRleHRQcm9taXNlKEZldGNoQm9keTo6Q29uc3VtZXI6OlR5cGUgdHlw
ZSwgY29uc3QgU3RyaW5nJiB0ZXh0LCBEZWZlcnJlZFdyYXBwZXImIHByb21pc2UpCi17Ci0gICAg
QVNTRVJUKHR5cGUgPT0gQ29uc3VtZXI6OlR5cGU6OlRleHQgfHwgdHlwZSA9PSBDb25zdW1lcjo6
VHlwZTo6SlNPTik7Ci0gICAgaWYgKHR5cGUgPT0gRmV0Y2hCb2R5OjpDb25zdW1lcjo6VHlwZTo6
VGV4dCkKLSAgICAgICAgcHJvbWlzZS5yZXNvbHZlKHRleHQpOwotICAgIGVsc2UKLSAgICAgICAg
ZnVsZmlsbFByb21pc2VXaXRoSlNPTihwcm9taXNlLCB0ZXh0KTsKLX0KLQogdm9pZCBGZXRjaEJv
ZHk6OmxvYWRpbmdGYWlsZWQoKQogewotICAgIEFTU0VSVChtX2NvbnN1bWVyKTsKLSAgICBtX2Nv
bnN1bWVyLT5wcm9taXNlLnJlamVjdCgwKTsKLSAgICBtX2NvbnN1bWVyID0gTnVsbG9wdDsKLX0K
LQotdm9pZCBGZXRjaEJvZHk6OmxvYWRlZEFzQXJyYXlCdWZmZXIoUmVmUHRyPEFycmF5QnVmZmVy
PiYmIGJ1ZmZlcikKLXsKLSAgICBpZiAobV90eXBlID09IFR5cGU6OkxvYWRpbmcpIHsKLSAgICAg
ICAgbV90eXBlID0gVHlwZTo6QXJyYXlCdWZmZXI7Ci0gICAgICAgIG1fZGF0YSA9IGJ1ZmZlcjsK
LSAgICAgICAgaWYgKG1fY29uc3VtZXIpIHsKLSAgICAgICAgICAgIGNvbnN1bWVBcnJheUJ1ZmZl
cihtX2NvbnN1bWVyLT50eXBlLCBtX2NvbnN1bWVyLT5wcm9taXNlKTsKLSAgICAgICAgICAgIG1f
Y29uc3VtZXIgPSBOdWxsb3B0OwotICAgICAgICB9Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0K
LSAgICBBU1NFUlQobV9jb25zdW1lcik7Ci0gICAgQVNTRVJUKG1fY29uc3VtZXItPnR5cGUgPT0g
Q29uc3VtZXI6OlR5cGU6OkJsb2IgfHwgbV9jb25zdW1lci0+dHlwZSA9PSBDb25zdW1lcjo6VHlw
ZTo6QXJyYXlCdWZmZXIpOwotICAgIGlmIChtX2NvbnN1bWVyLT50eXBlID09IENvbnN1bWVyOjpU
eXBlOjpBcnJheUJ1ZmZlcikKLSAgICAgICAgZnVsZmlsbFByb21pc2VXaXRoQXJyYXlCdWZmZXIo
bV9jb25zdW1lci0+cHJvbWlzZSwgYnVmZmVyLmdldCgpKTsKLSAgICBlbHNlIHsKLSAgICAgICAg
QVNTRVJUKG1fYmxvYik7Ci0gICAgICAgIG1fY29uc3VtZXItPnByb21pc2UucmVzb2x2ZShibG9i
RnJvbUFycmF5QnVmZmVyKGJ1ZmZlci5nZXQoKSwgbV9ibG9iLT50eXBlKCkpKTsKKyAgICBpZiAo
bV9jb25zdW1lUHJvbWlzZSkgeworICAgICAgICBtX2NvbnN1bWVQcm9taXNlLT5yZWplY3QoMCk7
CisgICAgICAgIG1fY29uc3VtZVByb21pc2UgPSBOdWxsb3B0OwogICAgIH0KLSAgICBtX2NvbnN1
bWVyID0gTnVsbG9wdDsKIH0KIAotdm9pZCBGZXRjaEJvZHk6OmxvYWRlZEFzVGV4dChTdHJpbmcm
JiB0ZXh0KQordm9pZCBGZXRjaEJvZHk6OmxvYWRpbmdTdWNjZWVkZWQoKQogewotICAgIEFTU0VS
VChtX2NvbnN1bWVyKTsKLSAgICBBU1NFUlQobV9jb25zdW1lci0+dHlwZSA9PSBDb25zdW1lcjo6
VHlwZTo6VGV4dCB8fCBtX2NvbnN1bWVyLT50eXBlID09IENvbnN1bWVyOjpUeXBlOjpKU09OKTsK
LQotICAgIGZ1bGZpbGxUZXh0UHJvbWlzZShtX2NvbnN1bWVyLT50eXBlLCB0ZXh0LCBtX2NvbnN1
bWVyLT5wcm9taXNlKTsKLSAgICBtX2NvbnN1bWVyID0gTnVsbG9wdDsKKyAgICBtX3R5cGUgPSBt
X2NvbnN1bWVyLmhhc0RhdGEoKSA/IFR5cGU6OkxvYWRlZCA6IFR5cGU6Ok5vbmU7CisgICAgaWYg
KG1fY29uc3VtZVByb21pc2UpIHsKKyAgICAgICAgbV9jb25zdW1lci5yZXNvbHZlKCptX2NvbnN1
bWVQcm9taXNlKTsKKyAgICAgICAgbV9jb25zdW1lUHJvbWlzZSA9IE51bGxvcHQ7CisgICAgfQog
fQogCiBSZWZQdHI8Rm9ybURhdGE+IEZldGNoQm9keTo6Ym9keUZvckludGVybmFsUmVxdWVzdCgp
IGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9k
eS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuaAppbmRleCA1NmYz
ZGZkYzg1NzFjMzE1MTEyZjI2NjVjNmZmZGE5NzVhOWRmMzkyLi42MmQ5ZTVhNzg3ZDU4MzMwYjY2
NGY4YWM1NmVmMjQ1MzJjZWY2ZGM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2ZldGNoL0ZldGNoQm9keS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0
Y2hCb2R5LmgKQEAgLTMzLDYgKzMzLDcgQEAKIAogI2luY2x1ZGUgIkJsb2IuaCIKICNpbmNsdWRl
ICJET01Gb3JtRGF0YS5oIgorI2luY2x1ZGUgIkZldGNoQm9keUNvbnN1bWVyLmgiCiAjaW5jbHVk
ZSAiRmV0Y2hMb2FkZXIuaCIKICNpbmNsdWRlICJKU0RPTVByb21pc2UuaCIKIApAQCAtNzAsMzUg
KzcxLDI3IEBAIHB1YmxpYzoKICAgICBGZXRjaEJvZHkoKSA9IGRlZmF1bHQ7CiAKICAgICB2b2lk
IGxvYWRpbmdGYWlsZWQoKTsKLSAgICB2b2lkIGxvYWRlZEFzQXJyYXlCdWZmZXIoUmVmUHRyPEFy
cmF5QnVmZmVyPiYmKTsKLSAgICB2b2lkIGxvYWRlZEFzVGV4dChTdHJpbmcmJik7CisgICAgdm9p
ZCBsb2FkaW5nU3VjY2VlZGVkKCk7CiAKICAgICBSZWZQdHI8Rm9ybURhdGE+IGJvZHlGb3JJbnRl
cm5hbFJlcXVlc3QoKSBjb25zdDsKIAotICAgIGVudW0gY2xhc3MgVHlwZSB7IE5vbmUsIEFycmF5
QnVmZmVyLCBMb2FkaW5nLCBUZXh0LCBCbG9iLCBGb3JtRGF0YSB9OworICAgIGVudW0gY2xhc3Mg
VHlwZSB7IE5vbmUsIEFycmF5QnVmZmVyLCBCbG9iLCBGb3JtRGF0YSwgVGV4dCwgTG9hZGluZywg
TG9hZGVkLCBSZWFkYWJsZVN0cmVhbSB9OwogICAgIFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJu
IG1fdHlwZTsgfQogCisgICAgRmV0Y2hCb2R5Q29uc3VtZXImIGNvbnN1bWVyKCkgeyByZXR1cm4g
bV9jb25zdW1lcjsgfQorCiBwcml2YXRlOgogICAgIEZldGNoQm9keShSZWY8QmxvYj4mJik7CiAg
ICAgRmV0Y2hCb2R5KFJlZjxET01Gb3JtRGF0YT4mJik7CiAgICAgRmV0Y2hCb2R5KFN0cmluZyYm
KTsKICAgICBGZXRjaEJvZHkoVHlwZSB0eXBlKSA6IG1fdHlwZSh0eXBlKSB7IH0KIAotICAgIHN0
cnVjdCBDb25zdW1lciB7Ci0gICAgICAgIGVudW0gY2xhc3MgVHlwZSB7IFRleHQsIEJsb2IsIEpT
T04sIEFycmF5QnVmZmVyIH07Ci0KLSAgICAgICAgVHlwZSB0eXBlOwotICAgICAgICBEZWZlcnJl
ZFdyYXBwZXIgcHJvbWlzZTsKLSAgICB9OwotICAgIHZvaWQgY29uc3VtZShGZXRjaEJvZHlPd25l
ciYsIENvbnN1bWVyOjpUeXBlLCBEZWZlcnJlZFdyYXBwZXImJik7CisgICAgdm9pZCBjb25zdW1l
KEZldGNoQm9keU93bmVyJiwgRGVmZXJyZWRXcmFwcGVyJiYpOwogCiAgICAgVmVjdG9yPHVpbnQ4
X3Q+IGV4dHJhY3RGcm9tVGV4dCgpIGNvbnN0OwotICAgIHZvaWQgY29uc3VtZUFycmF5QnVmZmVy
KENvbnN1bWVyOjpUeXBlLCBEZWZlcnJlZFdyYXBwZXImKTsKLSAgICB2b2lkIGNvbnN1bWVUZXh0
KENvbnN1bWVyOjpUeXBlLCBEZWZlcnJlZFdyYXBwZXImKTsKLSAgICB2b2lkIGNvbnN1bWVCbG9i
KEZldGNoQm9keU93bmVyJiwgQ29uc3VtZXI6OlR5cGUsIERlZmVycmVkV3JhcHBlciYmKTsKLSAg
ICBzdGF0aWMgRmV0Y2hMb2FkZXI6OlR5cGUgbG9hZGluZ1R5cGUoQ29uc3VtZXI6OlR5cGUpOwot
ICAgIHN0YXRpYyB2b2lkIGZ1bGZpbGxUZXh0UHJvbWlzZShGZXRjaEJvZHk6OkNvbnN1bWVyOjpU
eXBlLCBjb25zdCBTdHJpbmcmLCBEZWZlcnJlZFdyYXBwZXImKTsKLSAgICBzdGF0aWMgdm9pZCBm
dWxmaWxsQXJyYXlCdWZmZXJQcm9taXNlKEZldGNoQm9keTo6Q29uc3VtZXI6OlR5cGUsIGNvbnN0
IFN0cmluZyYsIERlZmVycmVkV3JhcHBlciYpOworICAgIHZvaWQgY29uc3VtZUFycmF5QnVmZmVy
KERlZmVycmVkV3JhcHBlciYpOworICAgIHZvaWQgY29uc3VtZVRleHQoRGVmZXJyZWRXcmFwcGVy
Jik7CisgICAgdm9pZCBjb25zdW1lQmxvYihGZXRjaEJvZHlPd25lciYsIERlZmVycmVkV3JhcHBl
ciYmKTsKIAogICAgIFR5cGUgbV90eXBlIHsgVHlwZTo6Tm9uZSB9OwogICAgIFN0cmluZyBtX21p
bWVUeXBlOwpAQCAtMTA5LDcgKzEwMiw4IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPEFycmF5QnVm
ZmVyPiBtX2RhdGE7CiAgICAgU3RyaW5nIG1fdGV4dDsKIAotICAgIE9wdGlvbmFsPENvbnN1bWVy
PiBtX2NvbnN1bWVyOworICAgIEZldGNoQm9keUNvbnN1bWVyIG1fY29uc3VtZXIgeyBGZXRjaEJv
ZHlDb25zdW1lcjo6VHlwZTo6Tm9uZSB9OworICAgIE9wdGlvbmFsPERlZmVycmVkV3JhcHBlcj4g
bV9jb25zdW1lUHJvbWlzZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZDkzMjUxYmY5NGNkMzQyN2Y2NzlmZDYyZWFkZTRlOGJhMDAyMzQ2NwotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIu
Y3BwCkBAIC0wLDAgKzEsMTQwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIElu
Yy4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCwgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSByZXF1aXJlZCB0byBi
ZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUg
bmFtZSBvZiBBcHBsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisg
KiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJ
RUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgorICogQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTAorICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisgKiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLAorICogT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkZldGNoQm9keUNvbnN1bWVy
LmgiCisKKyNpZiBFTkFCTEUoRkVUQ0hfQVBJKQorCisjaW5jbHVkZSAiSlNCbG9iLmgiCisjaW5j
bHVkZSAiSlNET01Qcm9taXNlLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RhdGljIGlu
bGluZSBSZWY8QmxvYj4gYmxvYkZyb21EYXRhKGNvbnN0IHVuc2lnbmVkIGNoYXIqIGRhdGEsIHVu
c2lnbmVkIGxlbmd0aCwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkKK3sKKyAgICBWZWN0b3I8
dWludDhfdD4gdmFsdWUobGVuZ3RoKTsKKyAgICBtZW1jcHkodmFsdWUuZGF0YSgpLCBkYXRhLCBs
ZW5ndGgpOworICAgIHJldHVybiBCbG9iOjpjcmVhdGUoV1RGTW92ZSh2YWx1ZSksIGNvbnRlbnRU
eXBlKTsKK30KKwordm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6cmVzb2x2ZVdpdGhEYXRhKERlZmVy
cmVkV3JhcHBlciYgcHJvbWlzZSwgY29uc3QgdW5zaWduZWQgY2hhciogZGF0YSwgdW5zaWduZWQg
bGVuZ3RoKQoreworICAgIHN3aXRjaCAobV90eXBlKSB7CisgICAgY2FzZSBUeXBlOjpBcnJheUJ1
ZmZlcjoKKyAgICAgICAgZnVsZmlsbFByb21pc2VXaXRoQXJyYXlCdWZmZXIocHJvbWlzZSwgZGF0
YSwgbGVuZ3RoKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgVHlwZTo6QmxvYjoKKyAgICAg
ICAgcHJvbWlzZS5yZXNvbHZlV2l0aE5ld2x5Q3JlYXRlZChibG9iRnJvbURhdGEoZGF0YSwgbGVu
Z3RoLCBtX2NvbnRlbnRUeXBlKSk7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIFR5cGU6OkpT
T046CisgICAgICAgIGZ1bGZpbGxQcm9taXNlV2l0aEpTT04ocHJvbWlzZSwgU3RyaW5nKGRhdGEs
IGxlbmd0aCkpOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBUeXBlOjpUZXh0OgorICAgICAg
ICBwcm9taXNlLnJlc29sdmUoU3RyaW5nKGRhdGEsIGxlbmd0aCkpOworICAgICAgICByZXR1cm47
CisgICAgY2FzZSBUeXBlOjpOb25lOgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KK30KKwordm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6cmVzb2x2
ZShEZWZlcnJlZFdyYXBwZXImIHByb21pc2UpCit7CisgICAgQVNTRVJUKG1fdHlwZSAhPSBUeXBl
OjpOb25lKTsKKyAgICBzd2l0Y2ggKG1fdHlwZSkgeworICAgIGNhc2UgVHlwZTo6QXJyYXlCdWZm
ZXI6CisgICAgICAgIGZ1bGZpbGxQcm9taXNlV2l0aEFycmF5QnVmZmVyKHByb21pc2UsIHRha2VB
c0FycmF5QnVmZmVyKCkuZ2V0KCkpOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBUeXBlOjpC
bG9iOgorICAgICAgICBwcm9taXNlLnJlc29sdmVXaXRoTmV3bHlDcmVhdGVkKHRha2VBc0Jsb2Io
KSk7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIFR5cGU6OkpTT046CisgICAgICAgIGZ1bGZp
bGxQcm9taXNlV2l0aEpTT04ocHJvbWlzZSwgdGFrZUFzVGV4dCgpKTsKKyAgICAgICAgcmV0dXJu
OworICAgIGNhc2UgVHlwZTo6VGV4dDoKKyAgICAgICAgcHJvbWlzZS5yZXNvbHZlKHRha2VBc1Rl
eHQoKSk7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIFR5cGU6Ok5vbmU6CisgICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm47CisgICAgfQorfQorCit2b2lkIEZl
dGNoQm9keUNvbnN1bWVyOjphcHBlbmQoY29uc3QgY2hhciogZGF0YSwgdW5zaWduZWQgbGVuZ3Ro
KQoreworICAgIGlmICghbV9idWZmZXIpIHsKKyAgICAgICAgbV9idWZmZXIgPSBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShkYXRhLCBsZW5ndGgpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIG1f
YnVmZmVyLT5hcHBlbmQoZGF0YSwgbGVuZ3RoKTsKK30KKwordm9pZCBGZXRjaEJvZHlDb25zdW1l
cjo6YXBwZW5kKGNvbnN0IHVuc2lnbmVkIGNoYXIqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkKK3sK
KyAgICBhcHBlbmQocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YSksIGxlbmd0aCk7
Cit9CisKK1JlZlB0cjxTaGFyZWRCdWZmZXI+IEZldGNoQm9keUNvbnN1bWVyOjp0YWtlRGF0YSgp
Cit7CisgICAgcmV0dXJuIFdURk1vdmUobV9idWZmZXIpOworfQorCitSZWZQdHI8SlNDOjpBcnJh
eUJ1ZmZlcj4gRmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VBc0FycmF5QnVmZmVyKCkKK3sKKyAgICBp
ZiAoIW1fYnVmZmVyKQorICAgICAgICByZXR1cm4gQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZShudWxs
cHRyLCAwKTsKKworICAgIGF1dG8gYXJyYXlCdWZmZXIgPSBtX2J1ZmZlci0+Y3JlYXRlQXJyYXlC
dWZmZXIoKTsKKyAgICBtX2J1ZmZlciA9IG51bGxwdHI7CisgICAgcmV0dXJuIGFycmF5QnVmZmVy
OworfQorCitSZWY8QmxvYj4gRmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VBc0Jsb2IoKQoreworICAg
IEFTU0VSVChtX2J1ZmZlcik7CisgICAgaWYgKCFtX2J1ZmZlcikKKyAgICAgICAgcmV0dXJuIEJs
b2I6OmNyZWF0ZSgpOworCisgICAgLy8gRklYTUU6IFdlIHNob3VsZCB0cnkgdG8gbW92ZSBtX2J1
ZmZlciB0byBCbG9iIHdpdGhvdXQgZG9pbmcgZXh0cmEgY29weS4KKyAgICByZXR1cm4gYmxvYkZy
b21EYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hhcio+KG1fYnVmZmVyLT5k
YXRhKCkpLCBtX2J1ZmZlci0+c2l6ZSgpLCBtX2NvbnRlbnRUeXBlKTsKK30KKworU3RyaW5nIEZl
dGNoQm9keUNvbnN1bWVyOjp0YWtlQXNUZXh0KCkKK3sKKyAgICBpZiAoIW1fYnVmZmVyKQorICAg
ICAgICByZXR1cm4gU3RyaW5nKCk7CisKKyAgICBhdXRvIHRleHQgPSBTdHJpbmcobV9idWZmZXIt
PmRhdGEoKSwgbV9idWZmZXItPnNpemUoKSk7CisgICAgbV9idWZmZXIgPSBudWxscHRyOworICAg
IHJldHVybiB0ZXh0OworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBF
TkFCTEUoRkVUQ0hfQVBJKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRj
aC9GZXRjaEJvZHlDb25zdW1lci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRj
aEJvZHlDb25zdW1lci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZhYTFmZTdkMjhhYzdhNmNhZTMyYWVjNzQ0NDVk
OTgwODEzNDRiM2IKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Zl
dGNoL0ZldGNoQm9keUNvbnN1bWVyLmgKQEAgLTAsMCArMSw3MyBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxNiBBcHBsZSBJbmMuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQsIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgcmVxdWlyZWQgdG8gYmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mCisg
KiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IKKyAqIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisgKiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUgorICogQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyAqIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEZF
VENIX0FQSSkKKworI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK2NsYXNzIEJsb2I7CitjbGFzcyBEZWZlcnJlZFdyYXBwZXI7CisKK2NsYXNzIEZldGNo
Qm9keUNvbnN1bWVyIHsKK3B1YmxpYzoKKyAgICAvLyBUeXBlIGlzIHVzZWQgaW4gRmV0Y2hSZXNw
b25zZS5qcyBhbmQgc2hvdWxkIGJlIGtlcHQgc3luY2hyb25pemVkIHdpdGggaXQuCisgICAgZW51
bSBjbGFzcyBUeXBlIHsgTm9uZSwgQXJyYXlCdWZmZXIsIEJsb2IsIEpTT04sIFRleHQgfTsKKwor
ICAgIEZldGNoQm9keUNvbnN1bWVyKFR5cGUgdHlwZSkgOiBtX3R5cGUodHlwZSkgeyB9CisKKyAg
ICB2b2lkIGFwcGVuZChjb25zdCBjaGFyKiBkYXRhLCB1bnNpZ25lZCk7CisgICAgdm9pZCBhcHBl
bmQoY29uc3QgdW5zaWduZWQgY2hhciogZGF0YSwgdW5zaWduZWQpOworCisgICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gdGFrZURhdGEoKTsKKyAgICBSZWZQdHI8SlNDOjpBcnJheUJ1ZmZlcj4gdGFr
ZUFzQXJyYXlCdWZmZXIoKTsKKyAgICBSZWY8QmxvYj4gdGFrZUFzQmxvYigpOworICAgIFN0cmlu
ZyB0YWtlQXNUZXh0KCk7CisKKyAgICB2b2lkIHNldENvbnRlbnRUeXBlKGNvbnN0IFN0cmluZyYg
Y29udGVudFR5cGUpIHsgbV9jb250ZW50VHlwZSA9IGNvbnRlbnRUeXBlOyB9CisgICAgdm9pZCBz
ZXRUeXBlKFR5cGUgdHlwZSkgeyBtX3R5cGUgPSB0eXBlOyB9CisKKyAgICB2b2lkIGNsZWFuKCkg
eyBtX2J1ZmZlciA9IG51bGxwdHI7IH0KKworICAgIHZvaWQgcmVzb2x2ZShEZWZlcnJlZFdyYXBw
ZXImKTsKKyAgICB2b2lkIHJlc29sdmVXaXRoRGF0YShEZWZlcnJlZFdyYXBwZXImLCBjb25zdCB1
bnNpZ25lZCBjaGFyKiwgdW5zaWduZWQpOworCisgICAgYm9vbCBoYXNEYXRhKCkgY29uc3QgeyBy
ZXR1cm4gISFtX2J1ZmZlcjsgfQorCitwcml2YXRlOgorICAgIFR5cGUgbV90eXBlOworICAgIFN0
cmluZyBtX2NvbnRlbnRUeXBlOworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOwor
fTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKEZFVENIX0FQ
SSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5T3du
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlPd25lci5jcHAK
aW5kZXggMGY0NTc5NGEwNjllMmVlNjA4YjE4Mzc4ZTNkZjFmNGJjZTczNTNhNS4uOTY0YmU3NzEx
MDRkYTY3MTk3ZDNkNTA0YzY5ODgxNDE4Y2M4NTY4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlPd25lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlPd25lci5jcHAKQEAgLTEzOCw3ICsxMzgsNyBAQCB2b2lk
IEZldGNoQm9keU93bmVyOjp0ZXh0KERlZmVycmVkV3JhcHBlciYmIHByb21pc2UpCiAgICAgbV9i
b2R5LnRleHQoKnRoaXMsIFdURk1vdmUocHJvbWlzZSkpOwogfQogCi12b2lkIEZldGNoQm9keU93
bmVyOjpsb2FkQmxvYihCbG9iJiBibG9iLCBGZXRjaExvYWRlcjo6VHlwZSB0eXBlKQordm9pZCBG
ZXRjaEJvZHlPd25lcjo6bG9hZEJsb2IoQmxvYiYgYmxvYiwgRmV0Y2hCb2R5Q29uc3VtZXIqIGNv
bnN1bWVyKQogewogICAgIC8vIENhbiBvbmx5IGJlIGNhbGxlZCBvbmNlIGZvciBhIGJvZHkgaW5z
dGFuY2UuCiAgICAgQVNTRVJUKGlzRGlzdHVyYmVkKCkpOwpAQCAtMTUwLDcgKzE1MCw3IEBAIHZv
aWQgRmV0Y2hCb2R5T3duZXI6OmxvYWRCbG9iKEJsb2ImIGJsb2IsIEZldGNoTG9hZGVyOjpUeXBl
IHR5cGUpCiAgICAgfQogCiAgICAgbV9ibG9iTG9hZGVyID0geyAqdGhpcyB9OwotICAgIG1fYmxv
YkxvYWRlci0+bG9hZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxGZXRjaExvYWRlcj4odHlwZSwgKm1f
YmxvYkxvYWRlcik7CisgICAgbV9ibG9iTG9hZGVyLT5sb2FkZXIgPSBzdGQ6Om1ha2VfdW5pcXVl
PEZldGNoTG9hZGVyPigqbV9ibG9iTG9hZGVyLCBjb25zdW1lcik7CiAKICAgICBtX2Jsb2JMb2Fk
ZXItPmxvYWRlci0+c3RhcnQoKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgYmxvYik7CiAgICAg
aWYgKCFtX2Jsb2JMb2FkZXItPmxvYWRlci0+aXNTdGFydGVkKCkpIHsKQEAgLTE2OSwxMSArMTY5
LDYgQEAgdm9pZCBGZXRjaEJvZHlPd25lcjo6ZmluaXNoQmxvYkxvYWRpbmcoKQogICAgIHVuc2V0
UGVuZGluZ0FjdGl2aXR5KHRoaXMpOwogfQogCi12b2lkIEZldGNoQm9keU93bmVyOjpsb2FkZWRC
bG9iQXNUZXh0KFN0cmluZyYmIHRleHQpCi17Ci0gICAgbV9ib2R5LmxvYWRlZEFzVGV4dChXVEZN
b3ZlKHRleHQpKTsKLX0KLQogdm9pZCBGZXRjaEJvZHlPd25lcjo6YmxvYkxvYWRpbmdTdWNjZWVk
ZWQoKQogewogICAgIEFTU0VSVChtX2JvZHkudHlwZSgpID09IEZldGNoQm9keTo6VHlwZTo6Qmxv
Yik7CkBAIC0xODQsNyArMTc5LDcgQEAgdm9pZCBGZXRjaEJvZHlPd25lcjo6YmxvYkxvYWRpbmdT
dWNjZWVkZWQoKQogICAgICAgICBtX3JlYWRhYmxlU3RyZWFtU291cmNlID0gbnVsbHB0cjsKICAg
ICB9CiAjZW5kaWYKLQorICAgIG1fYm9keS5sb2FkaW5nU3VjY2VlZGVkKCk7CiAgICAgZmluaXNo
QmxvYkxvYWRpbmcoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9m
ZXRjaC9GZXRjaEJvZHlPd25lci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRj
aEJvZHlPd25lci5oCmluZGV4IDA2YTIxMjY2NWMzOWZjMzkwN2QzOGUxM2Y0Y2MxMzNjYzg3MmM3
YjQuLjg3YjcyZjBhNDk5ZjkzMzZhNDBmYTQ4NjMzYTE4OTA5MjIzYjFkOTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5T3duZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keU93bmVyLmgKQEAgLTUyLDcgKzUyLDcg
QEAgcHVibGljOgogICAgIHZvaWQganNvbihEZWZlcnJlZFdyYXBwZXImJik7CiAgICAgdm9pZCB0
ZXh0KERlZmVycmVkV3JhcHBlciYmKTsKIAotICAgIHZvaWQgbG9hZEJsb2IoQmxvYiYsIEZldGNo
TG9hZGVyOjpUeXBlKTsKKyAgICB2b2lkIGxvYWRCbG9iKEJsb2ImLCBGZXRjaEJvZHlDb25zdW1l
ciopOwogCiAgICAgYm9vbCBpc0FjdGl2ZSgpIGNvbnN0IHsgcmV0dXJuICEhbV9ibG9iTG9hZGVy
OyB9CiAKQEAgLTY3LDggKzY3LDYgQEAgcHJvdGVjdGVkOgogCiBwcml2YXRlOgogICAgIC8vIEJs
b2IgbG9hZGluZyByb3V0aW5lcwotICAgIHZvaWQgbG9hZGVkQmxvYkFzVGV4dChTdHJpbmcmJik7
Ci0gICAgdm9pZCBsb2FkZWRCbG9iQXNBcnJheUJ1ZmZlcihSZWZQdHI8QXJyYXlCdWZmZXI+JiYg
YnVmZmVyKSB7IG1fYm9keS5sb2FkZWRBc0FycmF5QnVmZmVyKFdURk1vdmUoYnVmZmVyKSk7IH0K
ICAgICB2b2lkIGJsb2JDaHVuayhjb25zdCBjaGFyKiwgc2l6ZV90KTsKICAgICB2b2lkIGJsb2JM
b2FkaW5nU3VjY2VlZGVkKCk7CiAgICAgdm9pZCBibG9iTG9hZGluZ0ZhaWxlZCgpOwpAQCAtNzgs
OCArNzYsNiBAQCBwcml2YXRlOgogICAgICAgICBCbG9iTG9hZGVyKEZldGNoQm9keU93bmVyJik7
CiAKICAgICAgICAgLy8gRmV0Y2hMb2FkZXJDbGllbnQgQVBJCi0gICAgICAgIHZvaWQgZGlkRmlu
aXNoTG9hZGluZ0FzVGV4dChTdHJpbmcmJiB0ZXh0KSBmaW5hbCB7IG93bmVyLmxvYWRlZEJsb2JB
c1RleHQoV1RGTW92ZSh0ZXh0KSk7IH0KLSAgICAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nQXNB
cnJheUJ1ZmZlcihSZWZQdHI8QXJyYXlCdWZmZXI+JiYgYnVmZmVyKSBmaW5hbCB7IG93bmVyLmxv
YWRlZEJsb2JBc0FycmF5QnVmZmVyKFdURk1vdmUoYnVmZmVyKSk7IH0KICAgICAgICAgdm9pZCBk
aWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIGZpbmFsOwogICAgICAg
ICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBzaXplKSBmaW5h
bCB7IG93bmVyLmJsb2JDaHVuayhkYXRhLCBzaXplKTsgfQogICAgICAgICB2b2lkIGRpZEZhaWwo
KSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hJ
bnRlcm5hbHMuanMgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoSW50ZXJuYWxz
LmpzCmluZGV4IDQ1MmVjNzYzNTM1YTgwOWVhOGQ4Mjk4ZTA2OTM1ZWU1YjMwNzZlNGIuLmQ3NTAw
NGUyZjgwODViMTVjNzEwMDcwMDE1YmVkZDFiNWFiYjIyYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hJbnRlcm5hbHMuanMKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9mZXRjaC9GZXRjaEludGVybmFscy5qcwpAQCAtNTEsMyArNTEsMjcgQEAgZnVu
Y3Rpb24gZmlsbEZldGNoSGVhZGVycyhoZWFkZXJzLCBoZWFkZXJzSW5pdCkKICAgICAgICAgQEhl
YWRlcnMucHJvdG90eXBlLkBhcHBlbmRGcm9tSlMuQGNhbGwoaGVhZGVycywgbmFtZSwgaGVhZGVy
c0luaXRbbmFtZV0pOwogICAgIH0KIH0KKworZnVuY3Rpb24gY29uc3VtZVN0cmVhbShyZXNwb25z
ZSwgdHlwZSkKK3sKKyAgICBAYXNzZXJ0KHJlc3BvbnNlIGluc3RhbmNlb2YgQFJlc3BvbnNlKTsK
KyAgICBAYXNzZXJ0KHJlc3BvbnNlLkBib2R5IGluc3RhbmNlb2YgQFJlYWRhYmxlU3RyZWFtKTsK
KworICAgIGlmIChAaXNSZWFkYWJsZVN0cmVhbURpc3R1cmJlZChyZXNwb25zZS5AYm9keSkpCisg
ICAgICAgIHJldHVybiBAUHJvbWlzZS5AcmVqZWN0KG5ldyBAVHlwZUVycm9yKCJDYW5ub3QgY29u
c3VtZSBhIGRpc3R1cmJlZCBSZXNwb25zZSBib2R5IFJlYWRhYmxlU3RyZWFtIikpOworCisgICAg
dHJ5IHsKKyAgICAgICAgbGV0IHJlYWRlciA9IG5ldyBAUmVhZGFibGVTdHJlYW1SZWFkZXIocmVz
cG9uc2UuQGJvZHkpOworCisgICAgICAgIEBSZXNwb25zZS5wcm90b3R5cGUuQHN0YXJ0Q29uc3Vt
aW5nU3RyZWFtLkBjYWxsKHJlc3BvbnNlLCB0eXBlKTsKKyAgICAgICAgbGV0IHB1bGwgPSAocmVz
dWx0KSA9PiB7CisgICAgICAgICAgICBpZiAocmVzdWx0LmRvbmUpCisgICAgICAgICAgICAgICAg
cmV0dXJuIEBSZXNwb25zZS5wcm90b3R5cGUuQGZpbmlzaENvbnN1bWluZ1N0cmVhbS5AY2FsbChy
ZXNwb25zZSk7CisgICAgICAgICAgICBAUmVzcG9uc2UucHJvdG90eXBlLkBjb25zdW1lQ2h1bmsu
QGNhbGwocmVzcG9uc2UsIHJlc3VsdC52YWx1ZSk7CisgICAgICAgICAgICByZXR1cm4gQFByb21p
c2UucHJvdG90eXBlLkB0aGVuLkBjYWxsKEByZWFkRnJvbVJlYWRhYmxlU3RyZWFtUmVhZGVyKHJl
YWRlciksIHB1bGwpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBAUHJvbWlzZS5wcm90b3R5
cGUuQHRoZW4uQGNhbGwoQHJlYWRGcm9tUmVhZGFibGVTdHJlYW1SZWFkZXIocmVhZGVyKSwgcHVs
bCk7CisgICAgfSBjYXRjaChlKSB7CisgICAgICAgIHJldHVybiBAUHJvbWlzZS5AcmVqZWN0KGUp
OworICAgIH0KK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0
Y2hMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlci5j
cHAKaW5kZXggMWIyM2YwNDllNjdiNDY3MWMxZTE2YTY4OWUxZGIyYjQ0YWQxM2Y4MC4uZTYzYmMx
YjJkMzNjMzJkMjFlNDlmOTlhNTcyMjY0NzMwMTUyNjJlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlci5jcHAKQEAgLTg5LDI0ICs4OSwyNiBAQCB2b2lkIEZl
dGNoTG9hZGVyOjpzdGFydChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBjb25zdCBG
ZXRjaFJlcXVlc3QmIHJlcQogICAgIG1faXNTdGFydGVkID0gbV9sb2FkZXI7CiB9CiAKLUZldGNo
TG9hZGVyOjpGZXRjaExvYWRlcihUeXBlIHR5cGUsIEZldGNoTG9hZGVyQ2xpZW50JiBjbGllbnQp
Ci0gICAgOiBtX3R5cGUodHlwZSkKLSAgICAsIG1fY2xpZW50KGNsaWVudCkKK0ZldGNoTG9hZGVy
OjpGZXRjaExvYWRlcihGZXRjaExvYWRlckNsaWVudCYgY2xpZW50LCBGZXRjaEJvZHlDb25zdW1l
ciogY29uc3VtZXIpCisgICAgOiBtX2NsaWVudChjbGllbnQpCisgICAgLCBtX2NvbnN1bWVyKGNv
bnN1bWVyKQogewogfQogCiB2b2lkIEZldGNoTG9hZGVyOjpzdG9wKCkKIHsKLSAgICBtX2RhdGEg
PSBudWxscHRyOworICAgIGlmIChtX2NvbnN1bWVyKQorICAgICAgICBtX2NvbnN1bWVyLT5jbGVh
bigpOwogICAgIGlmIChtX2xvYWRlcikKICAgICAgICAgbV9sb2FkZXItPmNhbmNlbCgpOwogfQog
CiBSZWZQdHI8U2hhcmVkQnVmZmVyPiBGZXRjaExvYWRlcjo6c3RhcnRTdHJlYW1pbmcoKQogewot
ICAgIEFTU0VSVChtX3R5cGUgPT0gVHlwZTo6QXJyYXlCdWZmZXIpOwotICAgIG1fdHlwZSA9IFR5
cGU6OlN0cmVhbTsKLSAgICByZXR1cm4gV1RGTW92ZShtX2RhdGEpOworICAgIEFTU0VSVChtX2Nv
bnN1bWVyKTsKKyAgICBhdXRvIGZpcnN0Q2h1bmsgPSBtX2NvbnN1bWVyLT50YWtlRGF0YSgpOwor
ICAgIG1fY29uc3VtZXIgPSBudWxscHRyOworICAgIHJldHVybiBmaXJzdENodW5rOwogfQogCiB2
b2lkIEZldGNoTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UodW5zaWduZWQgbG9uZywgY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCkBAIC0xMTQsMjkgKzExNiwxNyBAQCB2b2lkIEZl
dGNoTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UodW5zaWduZWQgbG9uZywgY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYgcmVzcAogICAgIG1fY2xpZW50LmRpZFJlY2VpdmVSZXNwb25zZShyZXNwb25z
ZSk7CiB9CiAKLS8vIEZJWE1FOiBXZSBzaG91bGQgbWFrZSB0ZXh0IGFuZCBibG9iIGNyZWF0aW9u
IG1vcmUgZWZmaWNpZW50LgotLy8gV2UgbWlnaHQgYWxzbyB3YW50IHRvIG1lcmdlIHRoaXMgY2xh
c3Mgd2l0aCBGaWxlUmVhZGVyTG9hZGVyLgogdm9pZCBGZXRjaExvYWRlcjo6ZGlkUmVjZWl2ZURh
dGEoY29uc3QgY2hhciogdmFsdWUsIGludCBzaXplKQogewotICAgIGlmIChtX3R5cGUgPT0gVHlw
ZTo6U3RyZWFtKSB7CisgICAgaWYgKCFtX2NvbnN1bWVyKSB7CiAgICAgICAgIG1fY2xpZW50LmRp
ZFJlY2VpdmVEYXRhKHZhbHVlLCBzaXplKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBp
ZiAoIW1fZGF0YSkgewotICAgICAgICBtX2RhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSh2YWx1
ZSwgc2l6ZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgbV9kYXRhLT5hcHBlbmQodmFs
dWUsIHNpemUpOworICAgIG1fY29uc3VtZXItPmFwcGVuZCh2YWx1ZSwgc2l6ZSk7CiB9CiAKIHZv
aWQgRmV0Y2hMb2FkZXI6OmRpZEZpbmlzaExvYWRpbmcodW5zaWduZWQgbG9uZywgZG91YmxlKQog
ewotICAgIGlmIChtX3R5cGUgPT0gVHlwZTo6QXJyYXlCdWZmZXIpCi0gICAgICAgIG1fY2xpZW50
LmRpZEZpbmlzaExvYWRpbmdBc0FycmF5QnVmZmVyKG1fZGF0YSA/IG1fZGF0YS0+Y3JlYXRlQXJy
YXlCdWZmZXIoKSA6IEFycmF5QnVmZmVyOjp0cnlDcmVhdGUobnVsbHB0ciwgMCkpOwotICAgIGVs
c2UgaWYgKG1fdHlwZSA9PSBUeXBlOjpUZXh0KQotICAgICAgICBtX2NsaWVudC5kaWRGaW5pc2hM
b2FkaW5nQXNUZXh0KG1fZGF0YSA/IFRleHRSZXNvdXJjZURlY29kZXI6OmNyZWF0ZShBU0NJSUxp
dGVyYWwoInRleHQvcGxhaW4iKSwgIlVURi04IiktPmRlY29kZUFuZEZsdXNoKG1fZGF0YS0+ZGF0
YSgpLCBtX2RhdGEtPnNpemUoKSk6IFN0cmluZygpKTsKLSAgICBtX2RhdGEgPSBudWxscHRyOwot
CiAgICAgbV9jbGllbnQuZGlkU3VjY2VlZCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2ZldGNoL0ZldGNoTG9hZGVyLmgKaW5kZXggZDQ3M2ZmMTc0NTFmY2E1YzFhNzEzZmI1NDNiZDBi
NmEwYjFkZTAyYi4uZGJiODJmYmViZDU1OWU3N2QxY2UxYjYxNmJjNmQwYjRmMWFlZjNjMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuaApAQCAtMjYsMTIgKzI2
LDExIEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgRmV0Y2hMb2FkZXJfaAotI2Rl
ZmluZSBGZXRjaExvYWRlcl9oCisjcHJhZ21hIG9uY2UKIAogI2lmIEVOQUJMRShGRVRDSF9BUEkp
CiAKLSNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKKyNpbmNsdWRlICJGZXRjaEJvZHlDb25zdW1l
ci5oIgogI2luY2x1ZGUgIlRocmVhZGFibGVMb2FkZXIuaCIKICNpbmNsdWRlICJUaHJlYWRhYmxl
TG9hZGVyQ2xpZW50LmgiCiAKQEAgLTQ0LDkgKzQzLDcgQEAgY2xhc3MgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dDsKIAogY2xhc3MgRmV0Y2hMb2FkZXIgZmluYWwgOiBwdWJsaWMgVGhyZWFkYWJsZUxv
YWRlckNsaWVudCB7CiBwdWJsaWM6Ci0gICAgZW51bSBjbGFzcyBUeXBlIHsgQXJyYXlCdWZmZXIs
IFN0cmVhbSwgVGV4dCB9OwotCi0gICAgRmV0Y2hMb2FkZXIoVHlwZSwgRmV0Y2hMb2FkZXJDbGll
bnQmKTsKKyAgICBGZXRjaExvYWRlcihGZXRjaExvYWRlckNsaWVudCYsIEZldGNoQm9keUNvbnN1
bWVyKik7CiAKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzdGFydFN0cmVhbWluZygpOwogCkBA
IC02MywxOCArNjAsMTMgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcodW5z
aWduZWQgbG9uZywgZG91YmxlKSBmaW5hbDsKICAgICB2b2lkIGRpZEZhaWwoY29uc3QgUmVzb3Vy
Y2VFcnJvciYpIGZpbmFsOwogCi0gICAgVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBl
OyB9Ci0KIHByaXZhdGU6Ci0gICAgVHlwZSBtX3R5cGUgeyBUeXBlOjpBcnJheUJ1ZmZlciB9Owog
ICAgIEZldGNoTG9hZGVyQ2xpZW50JiBtX2NsaWVudDsKICAgICBSZWZQdHI8VGhyZWFkYWJsZUxv
YWRlcj4gbV9sb2FkZXI7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9kYXRhOworICAgIEZl
dGNoQm9keUNvbnN1bWVyKiBtX2NvbnN1bWVyOwogICAgIGJvb2wgbV9pc1N0YXJ0ZWQgeyBmYWxz
ZSB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKEZF
VENIX0FQSSkKLQotI2VuZGlmIC8vIEZldGNoTG9hZGVyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXJDbGllbnQuaAppbmRleCBkMDlmYWQ1M2UyN2U2ZDhh
YzIyYWRiN2NhOWY0NTEwMjc4ZGE0MTUwLi5lODhlOTk0MThjZDk5MTRhMWVlNDgxODc3ZDYxYWRj
YjZlMDRlYWY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNo
TG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaExv
YWRlckNsaWVudC5oCkBAIC00Nyw4ICs0Nyw2IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9p
ZCBkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIHsgfQogCi0gICAg
dmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWRpbmdBc1RleHQoU3RyaW5nJiYpIHsgfQotICAgIHZp
cnR1YWwgdm9pZCBkaWRGaW5pc2hMb2FkaW5nQXNBcnJheUJ1ZmZlcihSZWZQdHI8SlNDOjpBcnJh
eUJ1ZmZlcj4mJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IGNo
YXIqLCBzaXplX3QpIHsgfQogCiAgICAgdmlydHVhbCB2b2lkIGRpZFN1Y2NlZWQoKSA9IDA7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcAppbmRleCBj
MmU4YWJhYWIxMWEyMDE1NDBkOGJkMTI4NTBlNTFlNzBiMmVhMzAxLi42NzM4ZmEzMTgzYzk2MTE1
OTExMmNlMThjZDA1MGNiODgwZGE4NDAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJFeGNl
cHRpb25Db2RlLmgiCiAjaW5jbHVkZSAiRmV0Y2hSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiSFRUUFBh
cnNlcnMuaCIKKyNpbmNsdWRlICJKU0Jsb2IuaCIKICNpbmNsdWRlICJKU0ZldGNoUmVzcG9uc2Uu
aCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCiAKQEAgLTkzLDEzICs5NCwx
MSBAQCBGZXRjaFJlc3BvbnNlOjpGZXRjaFJlc3BvbnNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQm
IGNvbnRleHQsIEZldGNoQm9keSYmIGJvZHksCiB7CiB9CiAKLVJlZlB0cjxGZXRjaFJlc3BvbnNl
PiBGZXRjaFJlc3BvbnNlOjpjbG9uZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBF
eGNlcHRpb25Db2RlJiBlYykKK1JlZjxGZXRjaFJlc3BvbnNlPiBGZXRjaFJlc3BvbnNlOjpjbG9u
ZUZvckpTKCkKIHsKLSAgICBpZiAoaXNEaXN0dXJiZWQoKSkgewotICAgICAgICBlYyA9IFR5cGVF
cnJvcjsKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgfQotICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IEZldGNoUmVzcG9uc2UoY29udGV4dCwgRmV0Y2hCb2R5KG1fYm9keSksIEZldGNoSGVh
ZGVyczo6Y3JlYXRlKGhlYWRlcnMoKSksIFJlc291cmNlUmVzcG9uc2UobV9yZXNwb25zZSkpKTsK
KyAgICBBU1NFUlQoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKKyAgICBBU1NFUlQoIWlzRGlz
dHVyYmVkKCkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZldGNoUmVzcG9uc2UoKnNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKSwgRmV0Y2hCb2R5KG1fYm9keSksIEZldGNoSGVhZGVyczo6Y3Jl
YXRlKGhlYWRlcnMoKSksIFJlc291cmNlUmVzcG9uc2UobV9yZXNwb25zZSkpKTsKIH0KIAogdm9p
ZCBGZXRjaFJlc3BvbnNlOjpmZXRjaChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBG
ZXRjaFJlcXVlc3QmIHJlcXVlc3QsIEZldGNoUHJvbWlzZSYmIHByb21pc2UpCkBAIC0xMzAsNiAr
MTI5LDggQEAgdm9pZCBGZXRjaFJlc3BvbnNlOjpCb2R5TG9hZGVyOjpkaWRTdWNjZWVkKCkKICAg
ICAgICAgbV9yZXNwb25zZS5tX3JlYWRhYmxlU3RyZWFtU291cmNlID0gbnVsbHB0cjsKICAgICB9
CiAjZW5kaWYKKyAgICBtX3Jlc3BvbnNlLm1fYm9keS5sb2FkaW5nU3VjY2VlZGVkKCk7CisKICAg
ICBpZiAobV9sb2FkZXItPmlzU3RhcnRlZCgpKQogICAgICAgICBtX3Jlc3BvbnNlLm1fYm9keUxv
YWRlciA9IE51bGxvcHQ7CiAgICAgbV9yZXNwb25zZS51bnNldFBlbmRpbmdBY3Rpdml0eSgmbV9y
ZXNwb25zZSk7CkBAIC0xODcsMTQgKzE4OCw5IEBAIHZvaWQgRmV0Y2hSZXNwb25zZTo6Qm9keUxv
YWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IHNpemUpCiAjZW5k
aWYKIH0KIAotdm9pZCBGZXRjaFJlc3BvbnNlOjpCb2R5TG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5n
QXNBcnJheUJ1ZmZlcihSZWZQdHI8QXJyYXlCdWZmZXI+JiYgYnVmZmVyKQotewotICAgIG1fcmVz
cG9uc2UuYm9keSgpLmxvYWRlZEFzQXJyYXlCdWZmZXIoV1RGTW92ZShidWZmZXIpKTsKLX0KLQog
Ym9vbCBGZXRjaFJlc3BvbnNlOjpCb2R5TG9hZGVyOjpzdGFydChTY3JpcHRFeGVjdXRpb25Db250
ZXh0JiBjb250ZXh0LCBjb25zdCBGZXRjaFJlcXVlc3QmIHJlcXVlc3QpCiB7Ci0gICAgbV9sb2Fk
ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEZldGNoTG9hZGVyPihGZXRjaExvYWRlcjo6VHlwZTo6QXJy
YXlCdWZmZXIsICp0aGlzKTsKKyAgICBtX2xvYWRlciA9IHN0ZDo6bWFrZV91bmlxdWU8RmV0Y2hM
b2FkZXI+KCp0aGlzLCAmbV9yZXNwb25zZS5tX2JvZHkuY29uc3VtZXIoKSk7CiAgICAgbV9sb2Fk
ZXItPnN0YXJ0KGNvbnRleHQsIHJlcXVlc3QpOwogICAgIHJldHVybiBtX2xvYWRlci0+aXNTdGFy
dGVkKCk7CiB9CkBAIC0yMDUsNyArMjAxLDQ2IEBAIHZvaWQgRmV0Y2hSZXNwb25zZTo6Qm9keUxv
YWRlcjo6c3RvcCgpCiAgICAgICAgIG1fbG9hZGVyLT5zdG9wKCk7CiB9CiAKK3ZvaWQgRmV0Y2hS
ZXNwb25zZTo6Y29uc3VtZSh1bnNpZ25lZCB0eXBlLCBEZWZlcnJlZFdyYXBwZXImJiB3cmFwcGVy
KQoreworICAgIEFTU0VSVCh0eXBlIDw9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihGZXRjaEJvZHlD
b25zdW1lcjo6VHlwZTo6VGV4dCkpOworCisgICAgc3dpdGNoIChzdGF0aWNfY2FzdDxGZXRjaEJv
ZHlDb25zdW1lcjo6VHlwZT4odHlwZSkpIHsKKyAgICBjYXNlIEZldGNoQm9keUNvbnN1bWVyOjpU
eXBlOjpBcnJheUJ1ZmZlcjoKKyAgICAgICAgYXJyYXlCdWZmZXIoV1RGTW92ZSh3cmFwcGVyKSk7
CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIEZldGNoQm9keUNvbnN1bWVyOjpUeXBlOjpCbG9i
OgorICAgICAgICBibG9iKFdURk1vdmUod3JhcHBlcikpOworICAgICAgICByZXR1cm47CisgICAg
Y2FzZSBGZXRjaEJvZHlDb25zdW1lcjo6VHlwZTo6SlNPTjoKKyAgICAgICAganNvbihXVEZNb3Zl
KHdyYXBwZXIpKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgRmV0Y2hCb2R5Q29uc3VtZXI6
OlR5cGU6OlRleHQ6CisgICAgICAgIHRleHQoV1RGTW92ZSh3cmFwcGVyKSk7CisgICAgICAgIHJl
dHVybjsKKyAgICBjYXNlIEZldGNoQm9keUNvbnN1bWVyOjpUeXBlOjpOb25lOgorICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KK30KKwogI2lmIEVO
QUJMRShTVFJFQU1TX0FQSSkKK3ZvaWQgRmV0Y2hSZXNwb25zZTo6c3RhcnRDb25zdW1pbmdTdHJl
YW0odW5zaWduZWQgdHlwZSkKK3sKKyAgICBtX2lzRGlzdHVyYmVkID0gdHJ1ZTsKKyAgICBtX2Nv
bnN1bWVyLnNldFR5cGUoc3RhdGljX2Nhc3Q8RmV0Y2hCb2R5Q29uc3VtZXI6OlR5cGU+KHR5cGUp
KTsKK30KKwordm9pZCBGZXRjaFJlc3BvbnNlOjpjb25zdW1lQ2h1bmsoUmVmPEpTQzo6VWludDhB
cnJheT4mJiBjaHVuaykKK3sKKyAgICBtX2NvbnN1bWVyLmFwcGVuZChjaHVuay0+ZGF0YSgpLCBj
aHVuay0+Ynl0ZUxlbmd0aCgpKTsKK30KKwordm9pZCBGZXRjaFJlc3BvbnNlOjpmaW5pc2hDb25z
dW1pbmdTdHJlYW0oRGVmZXJyZWRXcmFwcGVyJiYgcHJvbWlzZSkKK3sKKyAgICBtX2NvbnN1bWVy
LnJlc29sdmUocHJvbWlzZSk7Cit9CisKIHZvaWQgRmV0Y2hSZXNwb25zZTo6Y29uc3VtZUJvZHlB
c1N0cmVhbSgpCiB7CiAgICAgQVNTRVJUKG1fcmVhZGFibGVTdHJlYW1Tb3VyY2UpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaAppbmRleCA1NzNjMjcwOGQ4
ZGM5NGRkYTgxMDViNGM5NjBjNTE1OTY4NTQyMDRmLi44NDg2MjUxNDA1MDdkODBjODM2ZDcxOTU1
YTFiM2I2ZmRiMjhiMjZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNo
L0ZldGNoUmVzcG9uc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNo
UmVzcG9uc2UuaApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIkZldGNoQm9keU93bmVyLmgi
CiAjaW5jbHVkZSAiRmV0Y2hIZWFkZXJzLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXNwb25zZS5o
IgorI2luY2x1ZGUgPHJ1bnRpbWUvVHlwZWRBcnJheXMuaD4KIAogbmFtZXNwYWNlIEpTQyB7CiBj
bGFzcyBBcnJheUJ1ZmZlcjsKQEAgLTU5LDYgKzYwLDEzIEBAIHB1YmxpYzoKICAgICB1c2luZyBG
ZXRjaFByb21pc2UgPSBET01Qcm9taXNlPEZldGNoUmVzcG9uc2U+OwogICAgIHN0YXRpYyB2b2lk
IGZldGNoKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBGZXRjaFJlcXVlc3QmLCBGZXRjaFByb21p
c2UmJik7CiAKKyAgICB2b2lkIGNvbnN1bWUodW5zaWduZWQsIERlZmVycmVkV3JhcHBlciYmKTsK
KyNpZiBFTkFCTEUoU1RSRUFNU19BUEkpCisgICAgdm9pZCBzdGFydENvbnN1bWluZ1N0cmVhbSh1
bnNpZ25lZCk7CisgICAgdm9pZCBjb25zdW1lQ2h1bmsoUmVmPEpTQzo6VWludDhBcnJheT4mJik7
CisgICAgdm9pZCBmaW5pc2hDb25zdW1pbmdTdHJlYW0oRGVmZXJyZWRXcmFwcGVyJiYpOworI2Vu
ZGlmCisKICAgICB2b2lkIHNldFN0YXR1cyhpbnQsIGNvbnN0IFN0cmluZyYsIEV4Y2VwdGlvbkNv
ZGUmKTsKICAgICB2b2lkIGluaXRpYWxpemVXaXRoKEpTQzo6RXhlY1N0YXRlJiwgSlNDOjpKU1Zh
bHVlKTsKIApAQCAtNzAsNyArNzgsNyBAQCBwdWJsaWM6CiAgICAgY29uc3QgU3RyaW5nJiBzdGF0
dXNUZXh0KCkgY29uc3QgeyByZXR1cm4gbV9yZXNwb25zZS5odHRwU3RhdHVzVGV4dCgpOyB9CiAK
ICAgICBGZXRjaEhlYWRlcnMmIGhlYWRlcnMoKSB7IHJldHVybiBtX2hlYWRlcnM7IH0KLSAgICBS
ZWZQdHI8RmV0Y2hSZXNwb25zZT4gY2xvbmUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIEV4Y2Vw
dGlvbkNvZGUmKTsKKyAgICBSZWY8RmV0Y2hSZXNwb25zZT4gY2xvbmVGb3JKUygpOwogCiAjaWYg
RU5BQkxFKFNUUkVBTVNfQVBJKQogICAgIFJlYWRhYmxlU3RyZWFtU291cmNlKiBjcmVhdGVSZWFk
YWJsZVN0cmVhbVNvdXJjZSgpOwpAQCAtMTA1LDcgKzExMyw2IEBAIHByaXZhdGU6CiAgICAgICAg
IHZvaWQgZGlkRmFpbCgpIGZpbmFsOwogICAgICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJikgZmluYWw7CiAgICAgICAgIHZvaWQgZGlkUmVjZWl2ZURh
dGEoY29uc3QgY2hhciosIHNpemVfdCkgZmluYWw7Ci0gICAgICAgIHZvaWQgZGlkRmluaXNoTG9h
ZGluZ0FzQXJyYXlCdWZmZXIoUmVmUHRyPEFycmF5QnVmZmVyPiYmKSBmaW5hbDsKIAogICAgICAg
ICBGZXRjaFJlc3BvbnNlJiBtX3Jlc3BvbnNlOwogICAgICAgICBPcHRpb25hbDxGZXRjaFByb21p
c2U+IG1fcHJvbWlzZTsKQEAgLTExNiw2ICsxMjMsOCBAQCBwcml2YXRlOgogICAgIFJlZjxGZXRj
aEhlYWRlcnM+IG1faGVhZGVyczsKICAgICBPcHRpb25hbDxCb2R5TG9hZGVyPiBtX2JvZHlMb2Fk
ZXI7CiAgICAgbXV0YWJsZSBTdHJpbmcgbV9yZXNwb25zZVVSTDsKKworICAgIEZldGNoQm9keUNv
bnN1bWVyIG1fY29uc3VtZXIgeyBGZXRjaEJvZHlDb25zdW1lcjo6VHlwZTo6QXJyYXlCdWZmZXIg
IH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmlkbAppbmRleCAzZmIxNDg4MTQzNTRjZTdkMWY4NDAx
ODBiYzk5MGRmYjIzZDBhOTJiLi5iZTNjMmNlMDI5MzdmNjIzOGY4NjVkOTIxOTIyNmI2ZmIxZDE3
MDFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9u
c2UuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5p
ZGwKQEAgLTUzLDExICs1MywyNSBAQCBpbnRlcmZhY2UgRmV0Y2hSZXNwb25zZSB7CiAgICAgcmVh
ZG9ubHkgYXR0cmlidXRlIEZldGNoSGVhZGVycyBoZWFkZXJzOwogICAgIFtKU0J1aWx0aW5dIHJl
YWRvbmx5IGF0dHJpYnV0ZSBSZWFkYWJsZVN0cmVhbT8gYm9keTsKIAotICAgIFtOZXdPYmplY3Qs
IENhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIFJhaXNlc0V4Y2VwdGlvbl0gRmV0Y2hS
ZXNwb25zZSBjbG9uZSgpOworICAgIC8vIENvcHkgb2YgRmV0Y2hCb2R5IElETCBhcyB3ZSB3YW50
IHRvIGltcGxlbWVudCBzb21lIG9mIHRoZXNlIGFzIGJ1aWx0LWlucy4KKyAgICBbSW1wbGVtZW50
ZWRBcz1pc0Rpc3R1cmJlZF0gcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gYm9keVVzZWQ7Cisg
ICAgW0pTQnVpbHRpbl0gUHJvbWlzZSBhcnJheUJ1ZmZlcigpOworICAgIFtKU0J1aWx0aW5dIFBy
b21pc2UgYmxvYigpOworICAgIFtKU0J1aWx0aW5dIFByb21pc2UgZm9ybURhdGEoKTsKKyAgICBb
SlNCdWlsdGluXSBQcm9taXNlIGpzb24oKTsKKyAgICBbSlNCdWlsdGluXSBQcm9taXNlIHRleHQo
KTsKIAorICAgIFtKU0J1aWx0aW5dIEZldGNoUmVzcG9uc2UgY2xvbmUoKTsKKworICAgIFtQcml2
YXRlSWRlbnRpZmllciwgTmV3T2JqZWN0XSBGZXRjaFJlc3BvbnNlIGNsb25lRm9ySlMoKTsKKwor
ICAgIFtDb25kaXRpb25hbD1TVFJFQU1TX0FQSSwgUHJpdmF0ZUlkZW50aWZpZXJdIHZvaWQgc3Rh
cnRDb25zdW1pbmdTdHJlYW0odW5zaWduZWQgc2hvcnQgdHlwZSk7CisgICAgW0NvbmRpdGlvbmFs
PVNUUkVBTVNfQVBJLCBQcml2YXRlSWRlbnRpZmllcl0gdm9pZCBjb25zdW1lQ2h1bmsoVWludDhB
cnJheSBjaHVuayk7CisgICAgW0NvbmRpdGlvbmFsPVNUUkVBTVNfQVBJLCBQcml2YXRlSWRlbnRp
Zmllcl0gUHJvbWlzZSBmaW5pc2hDb25zdW1pbmdTdHJlYW0oKTsKKworICAgIFtQcml2YXRlSWRl
bnRpZmllcl0gUHJvbWlzZSBjb25zdW1lKHVuc2lnbmVkIHNob3J0IHR5cGUpOwogICAgIFtQcml2
YXRlSWRlbnRpZmllciwgUmFpc2VzRXhjZXB0aW9uXSB2b2lkIHNldFN0YXR1cyh1bnNpZ25lZCBz
aG9ydCBzdGF0dXMsIERPTVN0cmluZyBzdGF0dXNUZXh0KTsKICAgICBbQ2FsbFdpdGg9U2NyaXB0
U3RhdGUsIFByaXZhdGVJZGVudGlmaWVyXSB2b2lkIGluaXRpYWxpemVXaXRoKGFueSBib2R5KTsK
ICAgICBbUHJpdmF0ZUlkZW50aWZpZXIsIE5ld09iamVjdF0gUmVhZGFibGVTdHJlYW1Tb3VyY2Ug
Y3JlYXRlUmVhZGFibGVTdHJlYW1Tb3VyY2UoKTsKICAgICBbUHJpdmF0ZUlkZW50aWZpZXJdIGJv
b2xlYW4gaXNEaXN0dXJiZWQoKTsKIH07Ci1GZXRjaFJlc3BvbnNlIGltcGxlbWVudHMgRmV0Y2hC
b2R5OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3Bv
bnNlLmpzIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmpzCmlu
ZGV4IGM0YWNjMDEwMTFmNGMxZWU2MzcwZGMzMzQxMzM5ZGI2ODU4MTkwM2UuLjJkYTlhYzJjY2Yw
ZWVjZmM5YTkxOTRiZDE3MWUwNzk1ZWQ5MDMyY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuanMKQEAgLTQ4LDYgKzQ4LDEyIEBAIGZ1bmN0aW9uIGlu
aXRpYWxpemVGZXRjaFJlc3BvbnNlKGJvZHksIGluaXQpCiAgICAgaWYgKGJvZHkgIT09IEB1bmRl
ZmluZWQgJiYgYm9keSAhPT0gbnVsbCkgewogICAgICAgICBpZiAoc3RhdHVzID09IDEwMSB8fCBz
dGF0dXMgPT0gMjA0IHx8IHN0YXR1cyA9PSAyMDUgfHwgc3RhdHVzID09IDMwNCkKICAgICAgICAg
ICAgIHRocm93IG5ldyBAVHlwZUVycm9yKCJSZXNwb25zZSBjYW5ub3QgaGF2ZSBhIGJvZHkgd2l0
aCB0aGUgZ2l2ZW4gc3RhdHVzIik7CisKKyAgICAgICAgLy8gRklYTUU6IFVzZSBAaXNSZWFkYWJs
ZVN0cmVhbSBvbmNlIGl0IGlzIG5vIGxvbmdlciBndWFyZGVkIGJ5IFNUUkVBTVNfQVBJIGd1YXJk
LgorICAgICAgICBsZXQgaXNCb2R5UmVhZGFibGVTdHJlYW0gPSAoQGlzT2JqZWN0KGJvZHkpICYm
ICEhYm9keS5AdW5kZXJseWluZ1NvdXJjZSk7CisgICAgICAgIGlmIChpc0JvZHlSZWFkYWJsZVN0
cmVhbSkKKyAgICAgICAgICB0aGlzLkBib2R5ID0gYm9keTsKKwogICAgICAgICB0aGlzLkBpbml0
aWFsaXplV2l0aChib2R5KTsKICAgICB9CiAKQEAgLTY4LDMgKzc0LDczIEBAIGZ1bmN0aW9uIGJv
ZHkoKQogICAgIH0KICAgICByZXR1cm4gdGhpcy5AYm9keTsKIH0KKworZnVuY3Rpb24gY2xvbmUo
KQoreworICAgIGlmICghdGhpcyBpbnN0YW5jZW9mIEBSZXNwb25zZSkKKyAgICAgICAgdGhyb3cg
bmV3IEBUeXBlRXJyb3IoIkZ1bmN0aW9uIHNob3VsZCBiZSBjYWxsZWQgb24gYSBSZXNwb25zZSIp
OworCisgICAgaWYgKEBSZXNwb25zZS5wcm90b3R5cGUuQGlzRGlzdHVyYmVkLkBjYWxsKHRoaXMp
KQorICAgICAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcigiQ2Fubm90IGNsb25lIGEgZGlzdHVyYmVk
IFJlc3BvbnNlIik7CisKKyAgICB2YXIgY2xvbmVkID0gQFJlc3BvbnNlLnByb3RvdHlwZS5AY2xv
bmVGb3JKUy5AY2FsbCh0aGlzKTsKKyAgICBpZiAodGhpcy5AYm9keSkgeworICAgICAgICB2YXIg
dGVlZFJlYWRhYmxlU3RyZWFtcyA9IEB0ZWVSZWFkYWJsZVN0cmVhbSh0aGlzLkBib2R5LCBmYWxz
ZSk7CisgICAgICAgIHRoaXMuQGJvZHkgPSB0ZWVkUmVhZGFibGVTdHJlYW1zWzBdOworICAgICAg
ICBjbG9uZWQuQGJvZHkgPSB0ZWVkUmVhZGFibGVTdHJlYW1zWzFdOworICAgIH0KKyAgICByZXR1
cm4gY2xvbmVkOworfQorCisvLyBjb25zdW1lIGFuZCBjb25zdW1lU3RyZWFtIHNpbmdsZSBwYXJh
bWV0ZXIgc2hvdWxkIGJlIGtlcHQgaW4gc3luYyB3aXRoIEZldGNoQm9keTo6Q29uc3VtZXJUeXBl
LgorZnVuY3Rpb24gYXJyYXlCdWZmZXIoKQoreworICAgIGlmICghdGhpcyBpbnN0YW5jZW9mIEBS
ZXNwb25zZSkKKyAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3IoIkZ1bmN0aW9uIHNob3VsZCBi
ZSBjYWxsZWQgb24gYSBSZXNwb25zZSIpOworCisgICAgaWYgKCF0aGlzLkBib2R5KQorICAgICAg
ICByZXR1cm4gQFJlc3BvbnNlLnByb3RvdHlwZS5AY29uc3VtZS5AY2FsbCh0aGlzLCAxKTsKKwor
ICAgIHJldHVybiBAY29uc3VtZVN0cmVhbSh0aGlzLCAxKTsKK30KKworZnVuY3Rpb24gYmxvYigp
Cit7CisgICAgaWYgKCF0aGlzIGluc3RhbmNlb2YgQFJlc3BvbnNlKQorICAgICAgICB0aHJvdyBu
ZXcgQFR5cGVFcnJvcigiRnVuY3Rpb24gc2hvdWxkIGJlIGNhbGxlZCBvbiBhIFJlc3BvbnNlIik7
CisKKyAgICBpZiAoIXRoaXMuQGJvZHkpCisgICAgICAgIHJldHVybiBAUmVzcG9uc2UucHJvdG90
eXBlLkBjb25zdW1lLkBjYWxsKHRoaXMsIDIpOworCisgICAgcmV0dXJuIEBjb25zdW1lU3RyZWFt
KHRoaXMsIDIpOworfQorCitmdW5jdGlvbiBmb3JtRGF0YSgpCit7CisgICAgaWYgKCF0aGlzIGlu
c3RhbmNlb2YgQFJlc3BvbnNlKQorICAgICAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcigiRnVuY3Rp
b24gc2hvdWxkIGJlIGNhbGxlZCBvbiBhIFJlc3BvbnNlIik7CisKKyAgICByZXR1cm4gQFByb21p
c2UuQHJlamVjdCgiTm90IGltcGxlbWVudGVkIik7Cit9CisKK2Z1bmN0aW9uIGpzb24oKQorewor
ICAgIGlmICghdGhpcyBpbnN0YW5jZW9mIEBSZXNwb25zZSkKKyAgICAgICAgdGhyb3cgbmV3IEBU
eXBlRXJyb3IoIkZ1bmN0aW9uIHNob3VsZCBiZSBjYWxsZWQgb24gYSBSZXNwb25zZSIpOworCisg
ICAgaWYgKCF0aGlzLkBib2R5KQorICAgICAgICByZXR1cm4gQFJlc3BvbnNlLnByb3RvdHlwZS5A
Y29uc3VtZS5AY2FsbCh0aGlzLCAzKTsKKworICAgIHJldHVybiBAY29uc3VtZVN0cmVhbSh0aGlz
LCAzKTsKK30KKworZnVuY3Rpb24gdGV4dCgpCit7CisgICAgaWYgKCF0aGlzIGluc3RhbmNlb2Yg
QFJlc3BvbnNlKQorICAgICAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcigiRnVuY3Rpb24gc2hvdWxk
IGJlIGNhbGxlZCBvbiBhIFJlc3BvbnNlIik7CisKKyAgICBpZiAoIXRoaXMuQGJvZHkpCisgICAg
ICAgIHJldHVybiBAUmVzcG9uc2UucHJvdG90eXBlLkBjb25zdW1lLkBjYWxsKHRoaXMsIDQpOwor
CisgICAgcmV0dXJuIEBjb25zdW1lU3RyZWFtKHRoaXMsIDQpOworfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDRmNWU4YmYzMDM3
MWRlNjE0NzE5NjhiMDliMjdhZWUzNDdlZTc2NDcuLjM0YzRiYmEzNGE4NTNlNjhhNGQ0MjlhZmQ5
MDZjY2IyMzc0NThlMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKQEAgLTE2MzEsNiArMTYzMSw3IEBACiAJCTQxQkY3MDBGMEZFODZG
NjEwMDVFOERFQyAvKiBQbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbC5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUJGNzAwRDBGRTg2RjYxMDA1RThE
RUMgLyogUGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWwuY3BwICovOyB9OwogCQk0MUJGNzAxMDBG
RTg2RjYxMDA1RThERUMgLyogUGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWwuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxQkY3MDBFMEZFODZGNjEwMDVF
OERFQyAvKiBQbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbC5oICovOyB9OwogCQk0MUM3NjBCMTBF
REUwM0QzMDBDMTY1NUYgLyogU2NyaXB0U3RhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxQzc2MEIwMEVERTAzRDMwMEMxNjU1RiAvKiBTY3JpcHRT
dGF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJ
CTQxQ0Y4QkU3MUQ0NjIyNjcwMDcwN0RDOSAvKiBGZXRjaEJvZHlDb25zdW1lci5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUNGOEJFNDFENDYyMjIw
MDA3MDdEQzkgLyogRmV0Y2hCb2R5Q29uc3VtZXIuY3BwICovOyB9OwogCQk0MUQwMTVDQTBGNEI1
QzcxMDA0QTY2MkYgLyogQ29udGVudFR5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQxRDAxNUM4MEY0QjVDNzEwMDRBNjYyRiAvKiBDb250ZW50VHlw
ZS5oICovOyB9OwogCQk0MUQwMTVDQjBGNEI1QzcxMDA0QTY2MkYgLyogQ29udGVudFR5cGUuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFEMDE1Qzkw
RjRCNUM3MTAwNEE2NjJGIC8qIENvbnRlbnRUeXBlLmNwcCAqLzsgfTsKIAkJNDFFMUIxRDAwRkY1
OTg2OTAwNTc2QjNCIC8qIEFic3RyYWN0V29ya2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRTFCMUNBMEZGNTk4NjkwMDU3NkIzQiAvKiBBYnN0
cmFjdFdvcmtlci5jcHAgKi87IH07CkBAIC02OTA2LDggKzY5MDcsOCBAQAogCQlGOThGRkY0NTEx
QTI2NzYyMDBGNTQ4RTggLyogQ1NTT01VdGlscy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRjk4RkZGNDMxMUEyNjc2MjAwRjU0OEU4IC8qIENTU09NVXRp
bHMuaCAqLzsgfTsKIAkJRjlGMEVEN0EwREI1MENBMjAwRDE2REI5IC8qIFhNTEh0dHBSZXF1ZXN0
UHJvZ3Jlc3NFdmVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRjlGMEVENzcwREI1MENBMjAwRDE2REI5IC8qIFhNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NF
dmVudC5oICovOyB9OwogCQlGQTY1NEE2QjExMDhBQkVEMDAyNjE1RTAgLyogTWF0aE1MVGV4dEVs
ZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RkE2NTRBNjkxMTA4QUJFRDAwMjYxNUUwIC8qIE1hdGhNTFRleHRFbGVtZW50LmNwcCAqLzsgfTsK
LQkJRkE2NTRBNkMxMTA4QUJFRDAwMjYxNUUwIC8qIE1hdGhNTFRleHRFbGVtZW50LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGQTY1NEE2QTExMDhBQkVE
MDAyNjE1RTAgLyogTWF0aE1MVGV4dEVsZW1lbnQuaCAqLzsgfTsKIAkJRkE2NTRBNkIxMTA4QUJF
RDAwMjYyNkYxIC8qIE1hdGhNTFVuZGVyT3ZlckVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkE2NTRBNjkxMTA4QUJFRDAwMjYyNkYxIC8q
IE1hdGhNTFVuZGVyT3ZlckVsZW1lbnQuY3BwICovOyB9OworCQlGQTY1NEE2QzExMDhBQkVEMDAy
NjE1RTAgLyogTWF0aE1MVGV4dEVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEZBNjU0QTZBMTEwOEFCRUQwMDI2MTVFMCAvKiBNYXRoTUxUZXh0
RWxlbWVudC5oICovOyB9OwogCQlGQTY1NEE2QzExMDhBQkVEMDAyNjI2RjEgLyogTWF0aE1MVW5k
ZXJPdmVyRWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRkE2NTRBNkExMTA4QUJFRDAwMjYyNkYxIC8qIE1hdGhNTFVuZGVyT3ZlckVsZW1lbnQu
aCAqLzsgfTsKIAkJRkFCRTcyRjQxMDU5QzFFQjAwRDk5OUREIC8qIE1hdGhNTEVsZW1lbnQuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkFCRTcyRUQx
MDU5QzFFQjAwRDk5OUREIC8qIE1hdGhNTEVsZW1lbnQuY3BwICovOyB9OwogCQlGQUJFNzJGNTEw
NTlDMUVCMDBEOTk5REQgLyogTWF0aE1MRWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkFCRTcyRUUxMDU5QzFFQjAwRDk5OUREIC8qIE1hdGhN
TEVsZW1lbnQuaCAqLzsgfTsKQEAgLTkyMTUsNiArOTIxNiw5IEBACiAJCTQxQkY3MDBEMEZFODZG
NjEwMDVFOERFQyAvKiBQbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBQbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbC5jcHA7
IHBhdGggPSBkZWZhdWx0L1BsYXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFCRjcwMEUwRkU4NkY2MTAwNUU4REVDIC8qIFBsYXRmb3Jt
TWVzc2FnZVBvcnRDaGFubmVsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFBs
YXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsLmg7IHBhdGggPSBkZWZhdWx0L1BsYXRmb3JtTWVzc2Fn
ZVBvcnRDaGFubmVsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxQzc2MEIwMEVE
RTAzRDMwMEMxNjU1RiAvKiBTY3JpcHRTdGF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBTY3JpcHRTdGF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MUNG
OEJFNDFENDYyMjIwMDA3MDdEQzkgLyogRmV0Y2hCb2R5Q29uc3VtZXIuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRmV0Y2hCb2R5Q29uc3VtZXIuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk0MUNGOEJFNTFENDYyMjIwMDA3MDdEQzkgLyogRmV0Y2hC
b2R5Q29uc3VtZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRmV0Y2hCb2R5
Q29uc3VtZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDFDRjhCRTYxRDQ2MjIy
QzAwNzA3REM5IC8qIEZldGNoSW50ZXJuYWxzLmpzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5qYXZh
c2NyaXB0OyBwYXRoID0gRmV0Y2hJbnRlcm5hbHMuanM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTQxRDAxNUM4MEY0QjVDNzEwMDRBNjYyRiAvKiBDb250ZW50VHlwZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb250ZW50VHlwZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk0MUQwMTVDOTBGNEI1QzcxMDA0QTY2MkYgLyogQ29udGVudFR5cGUuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ29udGVudFR5cGUuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MUUxQjFDQTBGRjU5ODY5MDA1NzZCM0IgLyog
QWJzdHJhY3RXb3JrZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
QWJzdHJhY3RXb3JrZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTM0MDgs
OCArMTM0MTIsOCBAQAogCQlCNTdDQjUyQzE4MkEzRUVEMDA3OUE2NDcgLyogSW5saW5lRWxlbWVu
dEJveC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbmxpbmVFbGVt
ZW50Qm94LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjU5NUZGNDYxODI0Q0VF
MzAwRkY1MUNEIC8qIFJlbmRlckl0ZXJhdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFJlbmRlckl0ZXJhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUI1
OUNBNTlBRjE3MEQ4RkFBNUI4QzlBRCAvKiBNYXRoTUxTY3JpcHRzRWxlbWVudC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNYXRoTUxTY3JpcHRzRWxlbWVudC5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUI1OUNBODQ5RDQxRTZGNjVEODExOTdBQiAv
KiBNYXRoTUxTY3JpcHRzRWxlbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBNYXRoTUxTY3JpcHRzRWxlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlC
NTlDQTU5QUYxNzBEOEZBQTVCOENBQkUgLyogTWF0aE1MUGFkZGVkRWxlbWVudC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNYXRoTUxQYWRkZWRFbGVtZW50LmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQjU5Q0E4NDlENDFFNkY2NUQ4MTE5N0FCIC8q
IE1hdGhNTFNjcmlwdHNFbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IE1hdGhNTFNjcmlwdHNFbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUI1
OUNBODQ5RDQxRTZGNjVEODExOThCQyAvKiBNYXRoTUxQYWRkZWRFbGVtZW50LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1hdGhNTFBhZGRlZEVsZW1lbnQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjU5REQ2OTcxMTkwMjlFNTAwN0U5Njg0IC8qIEpTRGF0YWJh
c2VDYWxsYmFjay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0RhdGFiYXNl
Q2FsbGJhY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjU5REQ2OTgxMTkwMjlF
NTAwN0U5Njg0IC8qIEpTRGF0YWJhc2VDYWxsYmFjay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBKU0RhdGFiYXNlQ2FsbGJhY2suY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtMTUwODYsOCArMTUwOTAsOCBAQAogCQlGQTY1NEE2MzExMDhBQkI3MDAy
NjE1RTAgLyogbWF0aG1sLmNzcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuY3NzOyBwYXRoID0gbWF0aG1sLmNz
czsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkE2NTRBNjcxMTA4QUJFMjAwMjYxNUUw
IC8qIG1hdGhhdHRycy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBtYXRoYXR0cnMuaW47IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZBNjU0QTY5MTEwOEFCRUQwMDI2MTVFMCAvKiBN
YXRoTUxUZXh0RWxlbWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBNYXRoTUxUZXh0RWxlbWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUZB
NjU0QTZBMTEwOEFCRUQwMDI2MTVFMCAvKiBNYXRoTUxUZXh0RWxlbWVudC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBNYXRoTUxUZXh0RWxlbWVudC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlGQTY1NEE2OTExMDhBQkVEMDAyNjI2RjEgLyogTWF0aE1MVW5kZXJP
dmVyRWxlbWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNYXRo
TUxVbmRlck92ZXJFbGVtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkE2
NTRBNkExMTA4QUJFRDAwMjYxNUUwIC8qIE1hdGhNTFRleHRFbGVtZW50LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1hdGhNTFRleHRFbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUZBNjU0QTZBMTEwOEFCRUQwMDI2MjZGMSAvKiBNYXRoTUxVbmRlck92
ZXJFbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1hdGhNTFVuZGVy
T3ZlckVsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkE2RTQ2NkZDRDA0
MThBOTk2NkE1QjYwIC8qIEROU1Jlc29sdmVRdWV1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBETlNSZXNvbHZlUXVldWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJRkFCRTcyRUQxMDU5QzFFQjAwRDk5OUREIC8qIE1hdGhNTEVsZW1lbnQuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWF0aE1MRWxlbWVudC5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNzA5MiwxMiArMTcwOTYsMTUgQEAKIAkJCQk0MUY1NEY3
RDFDNTBDNEY2MDAzMzg0ODggLyogRmV0Y2hCb2R5LmNwcCAqLywKIAkJCQk0MUY1NEY3RTFDNTBD
NEY2MDAzMzg0ODggLyogRmV0Y2hCb2R5LmggKi8sCiAJCQkJNDFGNTRGN0YxQzUwQzRGNjAwMzM4
NDg4IC8qIEZldGNoQm9keS5pZGwgKi8sCisJCQkJNDFDRjhCRTQxRDQ2MjIyMDAwNzA3REM5IC8q
IEZldGNoQm9keUNvbnN1bWVyLmNwcCAqLywKKwkJCQk0MUNGOEJFNTFENDYyMjIwMDA3MDdEQzkg
LyogRmV0Y2hCb2R5Q29uc3VtZXIuaCAqLywKIAkJCQk0MTQ3RTJCMzFDODk5MTI2MDBBN0U3MTUg
LyogRmV0Y2hCb2R5T3duZXIuY3BwICovLAogCQkJCTQxNDdFMkIyMUM4ODMzN0YwMEE3RTcxNSAv
KiBGZXRjaEJvZHlPd25lci5oICovLAogCQkJCTQxRjU0RjgyMUM1MEM0RjYwMDMzODQ4OCAvKiBG
ZXRjaEhlYWRlcnMuY3BwICovLAogCQkJCTQxRjU0RjgzMUM1MEM0RjYwMDMzODQ4OCAvKiBGZXRj
aEhlYWRlcnMuaCAqLywKIAkJCQk0MUY1NEY4NDFDNTBDNEY2MDAzMzg0ODggLyogRmV0Y2hIZWFk
ZXJzLmlkbCAqLywKIAkJCQk0MUY1NEY4NTFDNTBDNEY2MDAzMzg0ODggLyogRmV0Y2hIZWFkZXJz
LmpzICovLAorCQkJCTQxQ0Y4QkU2MUQ0NjIyMkMwMDcwN0RDOSAvKiBGZXRjaEludGVybmFscy5q
cyAqLywKIAkJCQk0MTQ3RTJCNDFDODk5MTI2MDBBN0U3MTUgLyogRmV0Y2hMb2FkZXIuY3BwICov
LAogCQkJCTQxNDdFMkI1MUM4OTkxMjYwMEE3RTcxNSAvKiBGZXRjaExvYWRlci5oICovLAogCQkJ
CTQxNDdFMkI2MUM4OTkxMjYwMEE3RTcxNSAvKiBGZXRjaExvYWRlckNsaWVudC5oICovLApAQCAt
MzA3NTksNiArMzA3NjYsNyBAQAogCQkJCUJDMDZFREUzMEJGRDZEMEQwMDg1NkU5RCAvKiBKU0hU
TUxUYWJsZUNlbGxFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDMDZFRDlEMEJGRDY2
MDYwMDg1NkU5RCAvKiBKU0hUTUxUYWJsZUNvbEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQkMwNkVFMDQwQkZENzFBQTAwODU2RTlEIC8qIEpTSFRNTFRhYmxlRWxlbWVudC5jcHAgaW4g
U291cmNlcyAqLywKKwkJCQk0MUNGOEJFNzFENDYyMjY3MDA3MDdEQzkgLyogRmV0Y2hCb2R5Q29u
c3VtZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkMwNkVEOUYwQkZENjYwNjAwODU2RTlEIC8q
IEpTSFRNTFRhYmxlUm93RWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzA2RUQwNjBC
RkQ1QkFFMDA4NTZFOUQgLyogSlNIVE1MVGFibGVTZWN0aW9uRWxlbWVudC5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlENjQ4OUQyNTE2NkZGQ0YxMDA3QzAzMUIgLyogSlNIVE1MVGVtcGxhdGVFbGVt
ZW50LmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01Qcm9taXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVBy
b21pc2UuaAppbmRleCAxMjc1YTMyZTY3OGRkZDhiZWNhMjU0YmQxZDZkNGQxOWYwMjRjMjg3Li40
ZTIyZTMzNGZmMzc2YWQzODQ5YmYwZDEwOTk5Yjk3YmQ5ZDliYzgwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVByb21pc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RPTVByb21pc2UuaApAQCAtMTE4LDYgKzExOCw4IEBAIHB1YmxpYzoK
ICAgICB0ZW1wbGF0ZTxjbGFzcyBSZWplY3RSZXN1bHRUeXBlPiB0eXBlbmFtZSBzdGQ6OmVuYWJs
ZV9pZjxQcm9taXNlUmVzdWx0SW5zcGVjdG9yPFJlamVjdFJlc3VsdFR5cGU+OjpwYXNzQnlDb25z
dFJlZiwgdm9pZD46OnR5cGUKICAgICByZWplY3QoY29uc3QgUmVqZWN0UmVzdWx0VHlwZSYgcmVz
dWx0KSB7IHJlamVjdFdpdGhWYWx1ZShyZXN1bHQpOyB9CiAKKyAgICB0ZW1wbGF0ZTxjbGFzcyBS
ZXNvbHZlUmVzdWx0VHlwZT4gdm9pZCByZXNvbHZlV2l0aE5ld2x5Q3JlYXRlZChSZWY8UmVzb2x2
ZVJlc3VsdFR5cGU+JiYpOworCiAgICAgdm9pZCByZWplY3QoRXhjZXB0aW9uQ29kZSwgY29uc3Qg
U3RyaW5nJiA9IHsgfSk7CiAKICAgICBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KCkg
Y29uc3Q7CkBAIC0xODEsNiArMTgzLDE2IEBAIGlubGluZSB2b2lkIERlZmVycmVkV3JhcHBlcjo6
cmVzb2x2ZVdpdGhWYWx1ZShSZXNvbHZlUmVzdWx0VHlwZSYmIHJlc3VsdCkKICAgICByZXNvbHZl
KCpleGVjLCB0b0pTKGV4ZWMsIG1fZ2xvYmFsT2JqZWN0LmdldCgpLCBzdGQ6OmZvcndhcmQ8UmVz
b2x2ZVJlc3VsdFR5cGU+KHJlc3VsdCkpKTsKIH0KIAordGVtcGxhdGU8Y2xhc3MgUmVzb2x2ZVJl
c3VsdFR5cGU+CitpbmxpbmUgdm9pZCBEZWZlcnJlZFdyYXBwZXI6OnJlc29sdmVXaXRoTmV3bHlD
cmVhdGVkKFJlZjxSZXNvbHZlUmVzdWx0VHlwZT4mJiByZXN1bHQpCit7CisgICAgQVNTRVJUKG1f
ZGVmZXJyZWQpOworICAgIEFTU0VSVChtX2dsb2JhbE9iamVjdCk7CisgICAgSlNDOjpFeGVjU3Rh
dGUqIGV4ZWMgPSBtX2dsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpOworICAgIEpTQzo6SlNMb2Nr
SG9sZGVyIGxvY2tlcihleGVjKTsKKyAgICByZXNvbHZlKCpleGVjLCB0b0pTTmV3bHlDcmVhdGVk
KGV4ZWMsIG1fZ2xvYmFsT2JqZWN0LmdldCgpLCBXVEZNb3ZlKHJlc3VsdCkpKTsKK30KKwogdGVt
cGxhdGU8Y2xhc3MgUmVqZWN0UmVzdWx0VHlwZT4KIGlubGluZSB2b2lkIERlZmVycmVkV3JhcHBl
cjo6cmVqZWN0V2l0aFZhbHVlKFJlamVjdFJlc3VsdFR5cGUmJiByZXN1bHQpCiB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XZWJDb3JlQnVpbHRpbk5hbWVzLmggYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XZWJDb3JlQnVpbHRpbk5hbWVzLmgKaW5kZXggYTVh
ZGQ5NGIyMDlhMjY5M2JlYzM1MWM5OGZmYzVjZTI4YTc2MWJlMi4uMzAwMDcyZDY2Zjk0OGEyMzYz
NWMzNDBiMWE1ZTVjNWMzMDRkMTllNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvV2ViQ29yZUJ1aWx0aW5OYW1lcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL1dlYkNvcmVCdWlsdGluTmFtZXMuaApAQCAtNTMsNiArNTMsMTAgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogICAgIG1hY3JvKGxvY2FsU3RyZWFtcykgXAogICAgIG1hY3JvKG9wZXJhdGlvbnMp
IFwKICAgICBtYWNybyhvd25lclJlYWRhYmxlU3RyZWFtKSBcCisgICAgbWFjcm8oY2xvbmVGb3JK
UykgXAorICAgIG1hY3JvKGNvbnN1bWUpIFwKKyAgICBtYWNybyhjb25zdW1lQ2h1bmspIFwKKyAg
ICBtYWNybyhmaW5pc2hDb25zdW1pbmdTdHJlYW0pIFwKICAgICBtYWNybyhwcml2YXRlR2V0U3Rh
dHMpIFwKICAgICBtYWNybyhwdWxsaW5nKSBcCiAgICAgbWFjcm8ocHVsbEFnYWluKSBcCkBAIC03
Miw2ICs3Niw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBtYWNybyhzZXRCb2R5KSBcCiAg
ICAgbWFjcm8oc2V0U3RhdHVzKSBcCiAgICAgbWFjcm8oc3RhdGUpIFwKKyAgICBtYWNybyhzdGFy
dENvbnN1bWluZ1N0cmVhbSkgXAogICAgIG1hY3JvKHN0YXJ0ZWQpIFwKICAgICBtYWNybyhzdGFy
dGVkUHJvbWlzZSkgXAogICAgIG1hY3JvKHN0b3JlZEVycm9yKSBcCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L0NoYW5nZUxvZwppbmRleCA0NzdiMGM2MmM1ZWRlNjZlYjk0MWU1NjY5NDhmZjlhNDRmNjg4YmZm
Li41NjY2NzYzZDE5NWYxYWM5NmQ1NjEwYWE2NDEyMWRhMzQyNmZiMTcwIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxNi0wNy0yNSAgWW91ZW5uIEZh
YmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAgICAgW0ZldGNoIEFQSV0gUmVzcG9uc2Ug
Y29uc3RydWN0b3Igc2hvdWxkIGJlIGFibGUgdG8gdGFrZSBhIFJlYWRhYmxlU3RyZWFtIGFzIGJv
ZHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1OTgw
NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd2Vi
LXBsYXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9yZXNwb25zZS9yZXNwb25zZS1jb25zdW1lLWVtcHR5
LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvZmV0Y2gvYXBpL3Jl
c3BvbnNlL3Jlc3BvbnNlLWNvbnN1bWUtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHdlYi1wbGF0
Zm9ybS10ZXN0cy9mZXRjaC9hcGkvcmVzcG9uc2UvcmVzcG9uc2UtY29uc3VtZS5odG1sOiBVcGRh
dGluZyB0ZXN0IHRvIGV4ZXJjaWNlIFJlc3BvbnNlIGNvb25zdHJ1Y3RvciB3aXRoIGEgUmVhZGFi
bGVTdHJlYW0uCisKIDIwMTYtMDctMjQgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29t
PgogCiAgICAgICAgIFtGZXRjaCBBUEldIFJlcXVlc3Qgc2hvdWxkIGJlIGNyZWF0ZWQgd2l0aCBh
bnkgSGVhZGVyc0luaXQgZGF0YQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkvcmVzcG9uc2UvcmVzcG9uc2UtY29uc3VtZS1l
bXB0eS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2ZldGNoL2FwaS9yZXNwb25zZS9yZXNwb25zZS1jb25zdW1lLWVtcHR5LWV4cGVjdGVk
LnR4dAppbmRleCA2NzA0ZGUxYTQ0MmU1ZjFmZDcyNWIwY2VlMjJjN2YwNzM3YTVlNTg2Li5lOTY3
OTUxOGJkOWMwMzA5NGQ4ZmZmY2Y5ZmNmODJkZDE3N2JjN2NmIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9yZXNwb25zZS9y
ZXNwb25zZS1jb25zdW1lLWVtcHR5LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9yZXNwb25zZS9yZXNwb25zZS1j
b25zdW1lLWVtcHR5LWV4cGVjdGVkLnR4dApAQCAtMyw3ICszLDcgQEAgUEFTUyBDb25zdW1lIHJl
c3BvbnNlJ3MgYm9keSBhcyB0ZXh0CiBQQVNTIENvbnN1bWUgcmVzcG9uc2UncyBib2R5IGFzIGJs
b2IgCiBQQVNTIENvbnN1bWUgcmVzcG9uc2UncyBib2R5IGFzIGFycmF5QnVmZmVyIAogUEFTUyBD
b25zdW1lIHJlc3BvbnNlJ3MgYm9keSBhcyBqc29uIAotRkFJTCBDb25zdW1lIHJlc3BvbnNlJ3Mg
Ym9keSBhcyBmb3JtRGF0YSBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rpb24gd2l0aCB2
YWx1ZTogdW5kZWZpbmVkCitGQUlMIENvbnN1bWUgcmVzcG9uc2UncyBib2R5IGFzIGZvcm1EYXRh
IHByb21pc2VfdGVzdDogVW5oYW5kbGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiAiTm90IGltcGxl
bWVudGVkIgogUEFTUyBDb25zdW1lIGVtcHR5IGJsb2IgcmVzcG9uc2UgYm9keSBhcyBhcnJheUJ1
ZmZlciAKIFBBU1MgQ29uc3VtZSBlbXB0eSB0ZXh0IHJlc3BvbnNlIGJvZHkgYXMgYXJyYXlCdWZm
ZXIgCiBQQVNTIENvbnN1bWUgZW1wdHkgYmxvYiByZXNwb25zZSBib2R5IGFzIHRleHQgCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNo
L2FwaS9yZXNwb25zZS9yZXNwb25zZS1jb25zdW1lLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZmV0Y2gvYXBpL3Jlc3BvbnNlL3Jlc3Bv
bnNlLWNvbnN1bWUtZXhwZWN0ZWQudHh0CmluZGV4IGQwODhhNjlhOGNlNDJhMmZhMGExYzkyMDk5
ZDg2YTZiZmE1N2U2ZDguLjQxNmEzOTJjZTZhZDZjYWI2OGUyNzFkZDA0YTE5YTJlZTUwMjAzZWUg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
ZmV0Y2gvYXBpL3Jlc3BvbnNlL3Jlc3BvbnNlLWNvbnN1bWUtZXhwZWN0ZWQudHh0CisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZmV0Y2gvYXBpL3Jlc3Bv
bnNlL3Jlc3BvbnNlLWNvbnN1bWUtZXhwZWN0ZWQudHh0CkBAIC0zLDkgKzMsMTMgQEAgUEFTUyBD
b25zdW1lIHJlc3BvbnNlJ3MgYm9keSBhcyB0ZXh0CiBQQVNTIENvbnN1bWUgcmVzcG9uc2UncyBi
b2R5IGFzIGJsb2IgCiBQQVNTIENvbnN1bWUgcmVzcG9uc2UncyBib2R5IGFzIGFycmF5QnVmZmVy
IAogUEFTUyBDb25zdW1lIHJlc3BvbnNlJ3MgYm9keSBhcyBqc29uIAotRkFJTCBDb25zdW1lIHJl
c3BvbnNlJ3MgYm9keSBhcyBmb3JtRGF0YSBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rp
b24gd2l0aCB2YWx1ZTogdW5kZWZpbmVkCitGQUlMIENvbnN1bWUgcmVzcG9uc2UncyBib2R5IGFz
IGZvcm1EYXRhIHByb21pc2VfdGVzdDogVW5oYW5kbGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiAi
Tm90IGltcGxlbWVudGVkIgogUEFTUyBDb25zdW1lIGJsb2IgcmVzcG9uc2UncyBib2R5IGFzIGJs
b2IgCiBQQVNTIENvbnN1bWUgYmxvYiByZXNwb25zZSdzIGJvZHkgYXMgdGV4dCAKIFBBU1MgQ29u
c3VtZSBibG9iIHJlc3BvbnNlJ3MgYm9keSBhcyBqc29uIAogUEFTUyBDb25zdW1lIGJsb2IgcmVz
cG9uc2UncyBib2R5IGFzIGFycmF5QnVmZmVyIAorUEFTUyBDb25zdW1lIHN0cmVhbSByZXNwb25z
ZSdzIGJvZHkgYXMgYmxvYiAKK1BBU1MgQ29uc3VtZSBzdHJlYW0gcmVzcG9uc2UncyBib2R5IGFz
IHRleHQgCitQQVNTIENvbnN1bWUgc3RyZWFtIHJlc3BvbnNlJ3MgYm9keSBhcyBqc29uIAorUEFT
UyBDb25zdW1lIHN0cmVhbSByZXNwb25zZSdzIGJvZHkgYXMgYXJyYXlCdWZmZXIgCiAKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZmV0Y2gv
YXBpL3Jlc3BvbnNlL3Jlc3BvbnNlLWNvbnN1bWUuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZmV0Y2gvYXBpL3Jlc3BvbnNlL3Jlc3BvbnNlLWNvbnN1
bWUuaHRtbAppbmRleCAwMjgxNGZmNWJlOTI2YmU3MzgyNjRiYTkxMDcwYmQyMzY5ZDU0NjkxLi45
OTQxMGNkNDQ4YWI4YmQ2NDc5MDE4NzAwNGVmZDM0YjFjOTlhYjQ5IDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9yZXNwb25z
ZS9yZXNwb25zZS1jb25zdW1lLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkvcmVzcG9uc2UvcmVzcG9uc2UtY29uc3VtZS5odG1s
CkBAIC05Miw2ICs5MiwyNSBAQAogICAgIGNoZWNrQmxvYlJlc3BvbnNlQm9keShibG9iLCB0ZXh0
RGF0YSwgImpzb24iLCBjaGVja0JvZHlKU09OKTsKICAgICBjaGVja0Jsb2JSZXNwb25zZUJvZHko
YmxvYiwgdGV4dERhdGEsICJhcnJheUJ1ZmZlciIsIGNoZWNrQm9keUFycmF5QnVmZmVyKTsKIAor
ICAgIGZ1bmN0aW9uIGNoZWNrUmVhZGFibGVTdHJlYW1SZXNwb25zZUJvZHkoc3RyZWFtRGF0YSwg
Ym9keVR5cGUsIGNoZWNrRnVuY3Rpb24pIHsKKyAgICAgIHByb21pc2VfdGVzdChmdW5jdGlvbih0
ZXN0KSB7CisgICAgICAgIHZhciBzdHJlYW0gPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgICAg
ICAgIHN0YXJ0OiBmdW5jdGlvbihjb250cm9sbGVyKSB7CisgICAgICAgICAgICBjb250cm9sbGVy
LmVucXVldWUoKHN0cmluZ1RvQXJyYXkoc3RyZWFtRGF0YSkpKTsKKyAgICAgICAgICAgIGNvbnRy
b2xsZXIuY2xvc2UoKTsKKyAgICAgICAgICB9CisgICAgICAgIH0pOworICAgICAgICB2YXIgcmVz
cG9uc2UgPSBuZXcgUmVzcG9uc2Uoc3RyZWFtKTsKKyAgICAgICAgYXNzZXJ0X2ZhbHNlKHJlc3Bv
bnNlLmJvZHlVc2VkLCAiYm9keVVzZWQgaXMgZmFsc2UgYXQgaW5pdCIpOworICAgICAgICByZXR1
cm4gY2hlY2tGdW5jdGlvbihyZXNwb25zZSwgc3RyZWFtRGF0YSk7CisgICAgICB9LCAiQ29uc3Vt
ZSBzdHJlYW0gcmVzcG9uc2UncyBib2R5IGFzICIgKyBib2R5VHlwZSk7CisgICAgfQorCisgICAg
Y2hlY2tSZWFkYWJsZVN0cmVhbVJlc3BvbnNlQm9keSh0ZXh0RGF0YSwgImJsb2IiLCBjaGVja0Jv
ZHlCbG9iKTsKKyAgICBjaGVja1JlYWRhYmxlU3RyZWFtUmVzcG9uc2VCb2R5KHRleHREYXRhLCAi
dGV4dCIsIGNoZWNrQm9keVRleHQpOworICAgIGNoZWNrUmVhZGFibGVTdHJlYW1SZXNwb25zZUJv
ZHkodGV4dERhdGEsICJqc29uIiwgY2hlY2tCb2R5SlNPTik7CisgICAgY2hlY2tSZWFkYWJsZVN0
cmVhbVJlc3BvbnNlQm9keSh0ZXh0RGF0YSwgImFycmF5QnVmZmVyIiwgY2hlY2tCb2R5QXJyYXlC
dWZmZXIpOworCiAgICAgPC9zY3JpcHQ+CiAgIDwvYm9keT4KIDwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>284493</attachid>
            <date>2016-07-25 09:53:24 -0700</date>
            <delta_ts>2016-07-25 10:21:21 -0700</delta_ts>
            <desc>Fixing build</desc>
            <filename>bug-159804-20160725185215.patch</filename>
            <type>text/plain</type>
            <size>64493</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAzNjgzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmE2ZGJmOTIzODAxOTFi
ZTk5ZThkZTlkYjNiOGRjNTY3YmY1MzIyMy4uZTdhMGVhNzA3OGYxZTFmMzkyOTBhNTIwZDhhNmI0
MDE3ZDQwOGIzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyNyBAQAorMjAxNi0wNy0yNSAgWW91
ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAgICAgW0ZldGNoIEFQSV0gUmVz
cG9uc2UgY29uc3RydWN0b3Igc2hvdWxkIGJlIGFibGUgdG8gdGFrZSBhIFJlYWRhYmxlU3RyZWFt
IGFzIGJvZHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE1OTgwNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IENvdmVyZWQgYnkgZXhpc3RpbmcgYW5kIHVwZGF0ZWQgdGVzdHMuCisKKyAgICAgICAgSW50cm9k
dWNlZCBGZXRjaEJvZHlDb25zdW1lciB0byBlbmNhcHN1bGF0ZSB0aGUgY29kZSByZXNwb25zaWJs
ZSB0byBhZGFwdCBGZXRjaEJvZHkgaW50ZXJuYWwgZGF0YSB0byB0aGUgcmVxdWVzdHMgbWFkZSBi
eSB1c2VyIHNjcmlwdHMuCisgICAgICAgIFRoaXMgcmVmYWN0b3JpbmcgZWFzZXMgdGhlIGhhbmRs
aW5nIG9mIGludGVybmFsIGRhdGEgY29taW5nIGZyb20gUmVhZGFibGVTdHJlYW0uCisKKyAgICAg
ICAgRmV0Y2hMb2FkZXIgaXMgbm93IGRlbGVnYXRpbmcgY29udmVyc2lvbiBmcm9tIHRoZSBkYXRh
IHRvIGl0cyBtX2NvbnN1bWVyIGZpZWxkLgorICAgICAgICBJZiBtX2NvbnN1bWVyIGlzIG51bGws
IEZldGNoTG9hZGVyIGNhbGxzIEZldGNoTG9hZGVyQ2xpZW50OjpkaWRSZWNlaXZlRGF0YSAoc3Ry
ZWFtaW5nIHJlY2VwdGlvbiBtb2RlKS4KKyAgICAgICAgQ2xpZW50cyBvZiBGZXRjaExvYWRlciBu
ZWVkcyB0byBvYXNzIGEgRmV0Y2hCb2R5Q29uc3VtZXIgdG8gdGhlIEZldGNoTG9hZGVyIHRvIGRv
IHRoZSBkYXRhIGFkYXB0YXRpb24gYXQgbG9hZGVyIGNyZWF0aW9uIHRpbWUuCisKKyAgICAgICAg
QWRkZWQgc3VwcG9ydCBmb3IgYm9keSBkYXRhIHBhc3NlZCBhcyBhIFJlYWRhYmxlU3RyZWFtIHRv
IFJlc3BvbnNlLgorICAgICAgICBUaGlzIHJlcXVpcmVzIHRvIHNldCBAYm9keSBpbnRlcm5hbCBz
bG90IG9mIHRoZSBSZXNwb25zZSBvYmplY3QgaW4gdGhlIGNvbnN0cnVjdG9yIGluaXRpYWxpemF0
aW9uIEpTIGJ1aWx0LWluLgorCisgICAgICAgIFRvIGFjdHVhbGx5IHVzZSB0aGF0IGRhdGEsIEJv
ZHkgYWNjZXNzb3JzIGFyZSBhbHNvIGltcGxlbWVudGVkIGFzIEpTIGJ1aWx0LWluIGZvciBSZXNw
b25zZS4KKyAgICAgICAgU2luY2UgdGhlcmUgaXMgbm8gbmVlZCB0byBkbyBzbyBmb3IgUmVxdWVz
dCwgRmV0Y2hSZXNwb25zZSBpcyBubyBsb25nZXIgbWFya2VkIGFzIGltcGxlbWVudGluZyBGZXRj
aEJvZHkgYnV0IGFsbAorICAgICAgICBGZXRjaEJvZHkgSURMIGRlc2NyaXB0aW9uIGlzIGlubGlu
ZWQgaW4gRmV0Y2hSZXNwb25zZS5pZGwuCisKKyAgICAgICAgRm9yIGVhY2ggYm9keSBhY2Nlc3Nv
ciAoYXJyYXlCdWZmZXIsIGJsb2IsIGpzb24sIHRleHQpLCB0aGUgY29ycmVzcG9uZGluZyBKUyBi
dWlsdC1pbiBjaGVja3Mgd2hldGhlciBAYm9keSBpbnRlcm5hbCBzbG90IGlzIHNldC4KKyAgICAg
ICAgSWYgdGhhdCBpcyBub3QgdGhlIGNhc2UsIHJlZ3VsYXIgaGFuZGxpbmcgaXMgZG9uZSB0aHJv
dWdoIGEgbmV3IHByaXZhdGUgbWV0aG9kIGNhbGxlZCBAY29uc3VtZS4KKyAgICAgICAgSWYgQGJv
ZHkgaW50ZXJuYWwgc2xvdCBpcyBzZXQsIGNodW5rcyBhcmUgcHVtcGVkIGZyb20gdGhlIFJlYWRh
YmxlU3RyZWFtIHVzaW5nIFJlYWRhYmxlU3RyZWFtIGludGVybmFsIGJ1aWx0LWlucyBmdW5jdGlv
bnMuCisgICAgICAgIERhdGEgaGFuZGxpbmcgaXMgZG9uZSBpbiBDKysgdGhyb3VnaCB0aGUgcHJp
dmF0ZSBtZXRob2RzIEBzdGFydENvbnN1bWluZ1N0cmVhbSwgQGNvbnN1bWVDaHVuayBhbmQgQGZp
bmlzaENvbnN1bWluZ1N0cmVhbS4KKworICAgICAgICBUbyBzdXBwb3J0IGNsb25pbmcgb2YgUmVz
cG9uc2Ugd2l0aCBib2RpZXMsIGNsb25lIG1ldGhvZCBpcyBhbHNvIGltcGxlbWVudGVkIGFzIGEg
SlMgYnVpbHQtaW4uCisgICAgICAgIE1haW4gY2xvbmUgaXMgZG9uZSB0aHJvdWdoIEBjbG9uZUZv
SlMgcHJpdmF0ZSBtZXRob2QgaW1wbGVtZW50ZWQgaW4gQysrLgorICAgICAgICBKUyBidWlsdC1p
biBjbG9uZSBjb2RlIGRvZXMgdGhlIHRlZWluZyBvZiB0aGUgUmVhZGFibGVTdHJlYW0gdXNpbmcg
UmVhZGFibGVTdHJlYW0gSlMgYnVpbHQtaW4gaW50ZXJuYWwgZnVuY3Rpb25zLgorCisgICAgICAg
IEludHJvZHVjaW5nIGEgbmV3IFJlYWRhYmxlU3RyZWFtIHR5cGUgZm9yIEZldGNoQm9keSB0byBj
b3BlIHdpdGggYm9keSBiZWluZyBzdG9yZWQgaW4gYSBSZWFkYWJsZVN0cmVhbS4KKworICAgICAg
ICBJbnRyb2R1Y2luZyBhIG5ldyBMb2FkZWQgdHlwZSBmb3IgRmV0Y2hCb2R5IHRvIGNvcGUgd2l0
aCBib2R5IGJlaW5nIHN0b3JlZCBpbiB0aGUgRmV0Y2hCb2R5Q29uc3VtZXIgb3duZWQgYnkgRmV0
Y2hCb2R5LgorICAgICAgICBUaGlzIGFsbG93cyByZW1vdmluZyB0aGUgY29udmVyc2lvbiBvZiBk
YXRhIHRvIEpTQzo6QXJyYXlCdWZmZXIgd2hpY2ggd2FzIGRvbmUgYnkgZGVmYXV0IGF0IHRoZSBl
bmQgb2YgRmV0Y2ggbG9hZGluZyBpZiB1c2VyIHNjcmlwdCBkaWQgbm90IHJlcXVlc3QgZGF0YSBi
ZWZvcmUuCisgICAgICAgIEF0IHRoZSBlbmQgb2YgYSBsb2FkLCB0aGUgZGF0YSByZW1haW5zIGlu
IEZldGNoQm9keUNvbnN1bWVyIGFuZCB0aGUgYm9keSBpcyBtYXJrZWQgYXMgTG9hZGVkLgorICAg
ICAgICBJZiB0aGUgdXNlciB3YW50cyB0byBnZXQgdGhlIGRhdGEgYWZ0ZXIgZGF0YSBmaW5pc2hl
ZCBiZWluZyBsb2FkZWQsIEZldGNoQm9keUNvbnN1bWVyIHdpbGwgZG8gdGhlIHJlcXVpcmVkIGNv
bnZlcnNpb25zLgorCisgICAgICAgIEludHJvZHVjaW5nIERlZmVycmVkV3JhcHBlcjo6cmVzb2x2
ZVdpdGhOZXdWYWx1ZSB0byBoYW5kbGUgdGhlIGNhc2Ugb2YgcmVzb2x2aW5nIHByb21pc2VzIHdp
dGggbmV3IG9iamVjdHMuCisgICAgICAgIFRoaXMgYWxsb3dzIGRpcmVjdGx5IHVzaW5nIHRvSlNO
ZXdseUNyZWF0ZWQgaW5zdGVhZCBvZiB0b0pTLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6
IEFkZGluZyBGZXRjaEJvZHlDb25zdW1lci4KKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNo
Qm9keS5jcHA6IE1vdmluZyBkYXRhIGFkYXB0YXRpb24gY29kZSB0byBGZXRjaEJvZHlDb25zdW1l
ci4KKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keTo6ZXh0cmFjdCk6CisgICAgICAgIChXZWJD
b3JlOjpGZXRjaEJvZHk6OmFycmF5QnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9k
eTo6YmxvYik6IFNldHRpbmcgY29udGVudFR5cGUgaW4gRmV0Y2hCb2R5Q29uc3VtZXIgdG8gaGFu
ZGxlIHByb3BlciBjcmVhdGlvbiBvZiBibG9iLgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5
Ojpqc29uKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keTo6dGV4dCk6CisgICAgICAgIChX
ZWJDb3JlOjpGZXRjaEJvZHk6OmNvbnN1bWUpOiBSZWZhY3RvcmluZyBhbmQgYWRkZWQgY2FzZSBv
ZiBMb2FkZWQgYm9kaWVzLgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Ojpjb25zdW1lQXNT
dHJlYW0pOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keTo6Y29uc3VtZUFycmF5
QnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keTo6Y29uc3VtZVRleHQpOgorICAg
ICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Ojpjb25zdW1lQmxvYik6CisgICAgICAgIChXZWJDb3Jl
OjpGZXRjaEJvZHk6OmxvYWRpbmdGYWlsZWQpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5
Ojpsb2FkaW5nU3VjY2VlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keTo6bG9hZGlu
Z1R5cGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6YmxvYkZyb21BcnJheUJ1ZmZlcik6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHk6OmZ1bGZpbGxUZXh0UHJvbWlz
ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHk6OmxvYWRlZEFzQXJyYXlC
dWZmZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Ojpsb2FkZWRBc1Rl
eHQpOiBEZWxldGVkLgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Lmg6CisgICAg
ICAgIChXZWJDb3JlOjpGZXRjaEJvZHk6OmNvbnN1bWVyKToKKyAgICAgICAgKiBNb2R1bGVzL2Zl
dGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcDogQWRkZWQsIHJlc3BvbnNpYmxlIG9mIGRhdGEgYWRh
cHRhdGlvbi4KKyAgICAgICAgKFdlYkNvcmU6OmJsb2JGcm9tRGF0YSk6CisgICAgICAgIChXZWJD
b3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6cmVzb2x2ZVdpdGhEYXRhKToKKyAgICAgICAgKFdlYkNv
cmU6OkZldGNoQm9keUNvbnN1bWVyOjpyZXNvbHZlKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNo
Qm9keUNvbnN1bWVyOjphcHBlbmQpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3Vt
ZXI6OnRha2VEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjp0YWtl
QXNBcnJheUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6dGFr
ZUFzQmxvYik6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6dGFrZUFzVGV4
dCk6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5oOiBBZGRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjpGZXRjaEJvZHlDb25zdW1lcik6
CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6c2V0Q29udGVudFR5cGUpOgor
ICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OnNldFR5cGUpOgorICAgICAgICAo
V2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OnR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6RmV0
Y2hCb2R5Q29uc3VtZXI6OmNsZWFuKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1
bWVyOjpoYXNEYXRhKToKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keU93bmVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keU93bmVyOjpsb2FkQmxvYik6CisgICAgICAg
IChXZWJDb3JlOjpGZXRjaEJvZHlPd25lcjo6YmxvYkxvYWRpbmdTdWNjZWVkZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6RmV0Y2hCb2R5T3duZXI6OmxvYWRlZEJsb2JBc1RleHQpOiBEZWxldGVkLgor
ICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5T3duZXIuaDoKKyAgICAgICAgKFdlYkNv
cmU6OkZldGNoQm9keU93bmVyOjpsb2FkZWRCbG9iQXNBcnJheUJ1ZmZlcik6IERlbGV0ZWQuCisg
ICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaEludGVybmFscy5qczoKKyAgICAgICAgKGNvbnN1
bWVTdHJlYW0pOiBQdW1wIFJlYWRhYmxlU3RyZWFtIGRhdGEgYW5kIHNlbmQgaXQgdG8gRmV0Y2hS
ZXNwb25zZSB0byBiZSBjb252ZXJ0ZWQgYWNjb3JkaW5nIHVzZXIgbmVlZC4KKyAgICAgICAgKiBN
b2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoTG9h
ZGVyOjpGZXRjaExvYWRlcik6IEZldGNoTG9hZGVyIGlzIHNpbXBsaWZpZWQgYXMgaXQgaGFzIHR3
byBub2RlczogY29uc3VtZXIgbW9kZSBpbiB3aGljaCBjYXNlCisgICAgICAgIGRhdGEgaXMgc2Vu
dCB0byB0aGUgY29uc3VtZXIgYW5kIG5vLWNvbnN1bWVyIG1vZGUgaW4gd2hpY2ggY2FzZSBkYXRh
IGlzIHBhc3NlZCB0byBsb2FkZXIgY2xpZW50LiBUaGUgc2Vjb25kIG1vZGUKKyAgICAgICAgaXMg
dXNlZCB0byBjb252ZXl5IGRhdGEgdG8gUmVhZGFibGVTdHJlYW0gc291cmNlLgorICAgICAgICAo
V2ViQ29yZTo6RmV0Y2hMb2FkZXI6OnN0b3ApOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hMb2Fk
ZXI6OnN0YXJ0U3RyZWFtaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoTG9hZGVyOjpkaWRS
ZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaExvYWRlcjo6ZGlkRmluaXNoTG9h
ZGluZyk6IERlbGV0ZWQuCisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlci5oOgor
ICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgKFdl
YkNvcmU6OkZldGNoTG9hZGVyQ2xpZW50OjpkaWRGaW5pc2hMb2FkaW5nQXNUZXh0KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkZldGNoTG9hZGVyQ2xpZW50OjpkaWRGaW5pc2hMb2FkaW5n
QXNBcnJheUJ1ZmZlcik6IERlbGV0ZWQuCisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaFJl
c3BvbnNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoUmVzcG9uc2U6OmNsb25lRm9ySlMp
OgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hSZXNwb25zZTo6Qm9keUxvYWRlcjo6ZGlkU3VjY2Vl
ZCk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaFJlc3BvbnNlOjpCb2R5TG9hZGVyOjpzdGFydCk6
CisgICAgICAgIChXZWJDb3JlOjpGZXRjaFJlc3BvbnNlOjpjb25zdW1lKTogSW50cm9kdWNlZCB0
byBjb25zdW1lIGRhdGEgc3RvcmVkIGluIGJvZHkgYW5kIG5vdCBpbiBSZWFkYWJsZVN0cmVhbS4K
KyAgICAgICAgKFdlYkNvcmU6OkZldGNoUmVzcG9uc2U6OnN0YXJ0Q29uc3VtaW5nU3RyZWFtKTog
SW50cm9kdWNlZCB0byBzdGFydCBwcm9jZXNzIG9mIGNvbnN1bWluZyBkYXRhIHN0b3JlZCBpbiB0
aGUgUmVhZGFibGVTdHJlYW0uCisgICAgICAgIChXZWJDb3JlOjpGZXRjaFJlc3BvbnNlOjpjb25z
dW1lQ2h1bmspOiBSZWNlcHRpb24gb2YgUmVhZGFibGVTdHJlYW0gZGF0YS4KKyAgICAgICAgKFdl
YkNvcmU6OkZldGNoUmVzcG9uc2U6OmZpbmlzaENvbnN1bWluZ1N0cmVhbSk6IERvaW5nIHRoZSBm
aW5hbCBjb252ZXJzaW9uLgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hSZXNwb25zZTo6Y2xvbmUp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hSZXNwb25zZTo6Qm9keUxvYWRlcjo6
ZGlkRmluaXNoTG9hZGluZ0FzQXJyYXlCdWZmZXIpOiBEZWxldGVkLgorICAgICAgICAqIE1vZHVs
ZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5oOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hS
ZXNwb25zZS5pZGw6IElubGluaW5nIG9mIEZldGNoQm9keSBtZXRob2RzL2F0dHJpYnV0ZXMgYW5k
IGFkZGluZyBwcml2YXRlIG1ldGhvZHMuCisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaFJl
c3BvbnNlLmpzOgorICAgICAgICAoaW5pdGlhbGl6ZUZldGNoUmVzcG9uc2UpOgorICAgICAgICAo
Y2xvbmUpOgorICAgICAgICAoYXJyYXlCdWZmZXIpOgorICAgICAgICAoYmxvYik6CisgICAgICAg
IChmb3JtRGF0YSk6CisgICAgICAgIChqc29uKToKKyAgICAgICAgKHRleHQpOgorICAgICAgICAq
IFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9KU0RPTVByb21pc2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRlZmVycmVkV3JhcHBlcjo6cmVz
b2x2ZVdpdGhOZXdWYWx1ZSk6CisgICAgICAgICogYmluZGluZ3MvanMvV2ViQ29yZUJ1aWx0aW5O
YW1lcy5oOgorCiAyMDE2LTA3LTI1ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdh
bGlhLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OKHIyMDA5MzEpOiBJbnZhbGlkIGNhc3QgaW4g
aGlnaGVzdEFuY2VzdG9yVG9XcmFwTWFya3VwKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggYTU1
ODNjYWFlODliNWRiNmUxMGE0ZGI2NzVmYTNiMWI1NGU5YjI1YS4uZTNhYmViMDJlOWJiZGZkZTI3
NjA1MzljOTI3NTMxY2M4NzM2ZTU5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VM
aXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTgxOCw2ICs4
MTgsNyBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAKICAgICBNb2R1bGVzL2ZldGNoL0RPTVdpbmRv
d0ZldGNoLmNwcAogICAgIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcAorICAgIE1vZHVsZXMv
ZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwCiAgICAgTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlP
d25lci5jcHAKICAgICBNb2R1bGVzL2ZldGNoL0ZldGNoSGVhZGVycy5jcHAKICAgICBNb2R1bGVz
L2ZldGNoL0ZldGNoTG9hZGVyLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9mZXRjaC9GZXRjaEJvZHkuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRj
aEJvZHkuY3BwCmluZGV4IDhjNDc5ZDVmOGUwNjI1MDJkOTU3MGM4YjliNTg1YmNmMGRiNDRkM2Yu
Ljg1ZjY0YWZkYTU2ZDVlYjA2NDVhZjY2ZjM0OGIwYzEyYjg0MzNkNzkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHAKQEAgLTM5LDEyICszOSwxMSBAQAogI2lu
Y2x1ZGUgIkhUVFBQYXJzZXJzLmgiCiAjaW5jbHVkZSAiSlNCbG9iLmgiCiAjaW5jbHVkZSAiSlNE
T01Gb3JtRGF0YS5oIgorI2luY2x1ZGUgIkpTUmVhZGFibGVTdHJlYW0uaCIKICNpbmNsdWRlICJS
ZWFkYWJsZVN0cmVhbVNvdXJjZS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBS
ZWY8QmxvYj4gYmxvYkZyb21BcnJheUJ1ZmZlcihBcnJheUJ1ZmZlciosIGNvbnN0IFN0cmluZyYp
OwotCiBGZXRjaEJvZHk6OkZldGNoQm9keShSZWY8QmxvYj4mJiBibG9iKQogICAgIDogbV90eXBl
KFR5cGU6OkJsb2IpCiAgICAgLCBtX21pbWVUeXBlKGJsb2ItPnR5cGUoKSkKQEAgLTc1LDYgKzc0
LDggQEAgRmV0Y2hCb2R5IEZldGNoQm9keTo6ZXh0cmFjdChKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUs
IEpTQzo6SlNWYWx1ZSB2YWx1ZSkKICAgICAgICAgcmV0dXJuIEZldGNoQm9keSgqSlNET01Gb3Jt
RGF0YTo6dG9XcmFwcGVkKHZhbHVlKSk7CiAgICAgaWYgKHZhbHVlLmlzU3RyaW5nKCkpCiAgICAg
ICAgIHJldHVybiBGZXRjaEJvZHkodmFsdWUudG9XVEZTdHJpbmcoJnN0YXRlKSk7CisgICAgaWYg
KHZhbHVlLmluaGVyaXRzKEpTUmVhZGFibGVTdHJlYW06OmluZm8oKSkpCisgICAgICAgIHJldHVy
biB7IFR5cGU6OlJlYWRhYmxlU3RyZWFtIH07CiAgICAgcmV0dXJuIHsgfTsKIH0KIApAQCAtODks
MTMgKzkwLDE2IEBAIEZldGNoQm9keSBGZXRjaEJvZHk6OmV4dHJhY3RGcm9tQm9keShGZXRjaEJv
ZHkqIGJvZHkpCiB2b2lkIEZldGNoQm9keTo6YXJyYXlCdWZmZXIoRmV0Y2hCb2R5T3duZXImIG93
bmVyLCBEZWZlcnJlZFdyYXBwZXImJiBwcm9taXNlKQogewogICAgIEFTU0VSVChtX3R5cGUgIT0g
VHlwZTo6Tm9uZSk7Ci0gICAgY29uc3VtZShvd25lciwgQ29uc3VtZXI6OlR5cGU6OkFycmF5QnVm
ZmVyLCBXVEZNb3ZlKHByb21pc2UpKTsKKyAgICBtX2NvbnN1bWVyLnNldFR5cGUoRmV0Y2hCb2R5
Q29uc3VtZXI6OlR5cGU6OkFycmF5QnVmZmVyKTsKKyAgICBjb25zdW1lKG93bmVyLCBXVEZNb3Zl
KHByb21pc2UpKTsKIH0KIAogdm9pZCBGZXRjaEJvZHk6OmJsb2IoRmV0Y2hCb2R5T3duZXImIG93
bmVyLCBEZWZlcnJlZFdyYXBwZXImJiBwcm9taXNlKQogewogICAgIEFTU0VSVChtX3R5cGUgIT0g
VHlwZTo6Tm9uZSk7Ci0gICAgY29uc3VtZShvd25lciwgQ29uc3VtZXI6OlR5cGU6OkJsb2IsIFdU
Rk1vdmUocHJvbWlzZSkpOworICAgIG1fY29uc3VtZXIuc2V0VHlwZShGZXRjaEJvZHlDb25zdW1l
cjo6VHlwZTo6QmxvYik7CisgICAgbV9jb25zdW1lci5zZXRDb250ZW50VHlwZShCbG9iOjpub3Jt
YWxpemVkQ29udGVudFR5cGUoZXh0cmFjdE1JTUVUeXBlRnJvbU1lZGlhVHlwZShtX21pbWVUeXBl
KSkpOworICAgIGNvbnN1bWUob3duZXIsIFdURk1vdmUocHJvbWlzZSkpOwogfQogCiB2b2lkIEZl
dGNoQm9keTo6anNvbihGZXRjaEJvZHlPd25lciYgb3duZXIsIERlZmVycmVkV3JhcHBlciYmIHBy
b21pc2UpCkBAIC0xMDYsNyArMTEwLDggQEAgdm9pZCBGZXRjaEJvZHk6Ompzb24oRmV0Y2hCb2R5
T3duZXImIG93bmVyLCBEZWZlcnJlZFdyYXBwZXImJiBwcm9taXNlKQogICAgICAgICBmdWxmaWxs
UHJvbWlzZVdpdGhKU09OKHByb21pc2UsIG1fdGV4dCk7CiAgICAgICAgIHJldHVybjsKICAgICB9
Ci0gICAgY29uc3VtZShvd25lciwgQ29uc3VtZXI6OlR5cGU6OkpTT04sIFdURk1vdmUocHJvbWlz
ZSkpOworICAgIG1fY29uc3VtZXIuc2V0VHlwZShGZXRjaEJvZHlDb25zdW1lcjo6VHlwZTo6SlNP
Tik7CisgICAgY29uc3VtZShvd25lciwgV1RGTW92ZShwcm9taXNlKSk7CiB9CiAKIHZvaWQgRmV0
Y2hCb2R5Ojp0ZXh0KEZldGNoQm9keU93bmVyJiBvd25lciwgRGVmZXJyZWRXcmFwcGVyJiYgcHJv
bWlzZSkKQEAgLTExNywzMSArMTIyLDM4IEBAIHZvaWQgRmV0Y2hCb2R5Ojp0ZXh0KEZldGNoQm9k
eU93bmVyJiBvd25lciwgRGVmZXJyZWRXcmFwcGVyJiYgcHJvbWlzZSkKICAgICAgICAgcHJvbWlz
ZS5yZXNvbHZlKG1fdGV4dCk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgY29uc3VtZShv
d25lciwgQ29uc3VtZXI6OlR5cGU6OlRleHQsIFdURk1vdmUocHJvbWlzZSkpOworICAgIG1fY29u
c3VtZXIuc2V0VHlwZShGZXRjaEJvZHlDb25zdW1lcjo6VHlwZTo6VGV4dCk7CisgICAgY29uc3Vt
ZShvd25lciwgV1RGTW92ZShwcm9taXNlKSk7CiB9CiAKLXZvaWQgRmV0Y2hCb2R5Ojpjb25zdW1l
KEZldGNoQm9keU93bmVyJiBvd25lciwgQ29uc3VtZXI6OlR5cGUgdHlwZSwgRGVmZXJyZWRXcmFw
cGVyJiYgcHJvbWlzZSkKK3ZvaWQgRmV0Y2hCb2R5Ojpjb25zdW1lKEZldGNoQm9keU93bmVyJiBv
d25lciwgRGVmZXJyZWRXcmFwcGVyJiYgcHJvbWlzZSkKIHsKLSAgICBpZiAobV90eXBlID09IFR5
cGU6OkFycmF5QnVmZmVyKSB7Ci0gICAgICAgIGNvbnN1bWVBcnJheUJ1ZmZlcih0eXBlLCBwcm9t
aXNlKTsKKyAgICBzd2l0Y2ggKG1fdHlwZSkgeworICAgIGNhc2UgVHlwZTo6QXJyYXlCdWZmZXI6
CisgICAgICAgIGNvbnN1bWVBcnJheUJ1ZmZlcihwcm9taXNlKTsKICAgICAgICAgcmV0dXJuOwot
ICAgIH0KLSAgICBpZiAobV90eXBlID09IFR5cGU6OlRleHQpIHsKLSAgICAgICAgY29uc3VtZVRl
eHQodHlwZSwgcHJvbWlzZSk7CisgICAgY2FzZSBUeXBlOjpUZXh0OgorICAgICAgICBjb25zdW1l
VGV4dChwcm9taXNlKTsKICAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBpZiAobV90eXBlID09
IFR5cGU6OkJsb2IpIHsKLSAgICAgICAgY29uc3VtZUJsb2Iob3duZXIsIHR5cGUsIFdURk1vdmUo
cHJvbWlzZSkpOworICAgIGNhc2UgVHlwZTo6QmxvYjoKKyAgICAgICAgY29uc3VtZUJsb2Iob3du
ZXIsIFdURk1vdmUocHJvbWlzZSkpOwogICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmICht
X3R5cGUgPT0gVHlwZTo6TG9hZGluZykgewotICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGJl
IGFibGUgdG8gY2hhbmdlIHRoZSBsb2FkaW5nIHR5cGUgdG8gdGV4dCBpZiBjb25zdW1lciB0eXBl
IGlzIEpTT04gb3IgVGV4dC4KLSAgICAgICAgbV9jb25zdW1lciA9IENvbnN1bWVyKHt0eXBlLCBX
VEZNb3ZlKHByb21pc2UpfSk7CisgICAgY2FzZSBUeXBlOjpMb2FkaW5nOgorICAgICAgICBtX2Nv
bnN1bWVQcm9taXNlID0gV1RGTW92ZShwcm9taXNlKTsKICAgICAgICAgcmV0dXJuOworICAgIGNh
c2UgVHlwZTo6TG9hZGVkOgorICAgICAgICBtX2NvbnN1bWVyLnJlc29sdmUocHJvbWlzZSk7Cisg
ICAgICAgIHJldHVybjsKKyAgICBjYXNlIFR5cGU6Ok5vbmU6CisgICAgICAgIEZBTExUSFJPVUdI
OworICAgIGNhc2UgVHlwZTo6UmVhZGFibGVTdHJlYW06CisgICAgICAgIC8vIElmIG1fdHlwZSBp
cyBSZWFkYWJsZVN0cmVhbSwgd2Ugc2hvdWxkIG5vdCBiZSB0aGVyZSBhcyBKUyBCdWlsdGlucyBz
aG91bGQgaGF2ZSBoYW5kbGVkIHRoaXMgY2FzZS4KKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CisgICAgICAgIEZBTExUSFJPVUdIOworICAgIGRlZmF1bHQ6CisgICAgICAgIC8vIEZJWE1F
OiBTdXBwb3J0IG90aGVyIHR5cGVzLgorICAgICAgICBwcm9taXNlLnJlamVjdCgwKTsKICAgICB9
Ci0KLSAgICAvLyBGSVhNRTogU3VwcG9ydCBvdGhlciB0eXBlcy4KLSAgICBwcm9taXNlLnJlamVj
dCgwKTsKIH0KIAogI2lmIEVOQUJMRShTVFJFQU1TX0FQSSkKQEAgLTE0OSw4MSArMTYxLDU4IEBA
IHZvaWQgRmV0Y2hCb2R5Ojpjb25zdW1lQXNTdHJlYW0oRmV0Y2hCb2R5T3duZXImIG93bmVyLCBG
ZXRjaFJlc3BvbnNlU291cmNlJiBzb3VyCiB7CiAgICAgQVNTRVJUKG1fdHlwZSAhPSBUeXBlOjpM
b2FkaW5nKTsKIAorICAgIGJvb2wgY2xvc2VTdHJlYW0gPSBmYWxzZTsKICAgICBzd2l0Y2ggKG1f
dHlwZSkgewogICAgIGNhc2UgVHlwZTo6QXJyYXlCdWZmZXI6CiAgICAgICAgIEFTU0VSVChtX2Rh
dGEpOwotICAgICAgICBpZiAoc291cmNlLmVucXVldWUoUmVmUHRyPEpTQzo6QXJyYXlCdWZmZXI+
KG1fZGF0YSkpKQotICAgICAgICAgICAgc291cmNlLmNsb3NlKCk7Ci0gICAgICAgIHJldHVybjsK
KyAgICAgICAgY2xvc2VTdHJlYW0gPSBzb3VyY2UuZW5xdWV1ZShSZWZQdHI8SlNDOjpBcnJheUJ1
ZmZlcj4obV9kYXRhKSk7CisgICAgICAgIGJyZWFrOwogICAgIGNhc2UgVHlwZTo6VGV4dDogewog
ICAgICAgICBWZWN0b3I8dWludDhfdD4gZGF0YSA9IGV4dHJhY3RGcm9tVGV4dCgpOwotICAgICAg
ICBpZiAoc291cmNlLmVucXVldWUoQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZShkYXRhLmRhdGEoKSwg
ZGF0YS5zaXplKCkpKSkKLSAgICAgICAgICAgIHNvdXJjZS5jbG9zZSgpOwotICAgICAgICByZXR1
cm47CisgICAgICAgIGNsb3NlU3RyZWFtID0gc291cmNlLmVucXVldWUoQXJyYXlCdWZmZXI6OnRy
eUNyZWF0ZShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpKTsKKyAgICAgICAgYnJlYWs7CiAgICAg
fQogICAgIGNhc2UgVHlwZTo6QmxvYjoKICAgICAgICAgQVNTRVJUKG1fYmxvYik7Ci0gICAgICAg
IG93bmVyLmxvYWRCbG9iKCptX2Jsb2IsIEZldGNoTG9hZGVyOjpUeXBlOjpTdHJlYW0pOwotICAg
ICAgICByZXR1cm47CisgICAgICAgIG93bmVyLmxvYWRCbG9iKCptX2Jsb2IsIG51bGxwdHIpOwor
ICAgICAgICBicmVhazsKICAgICBjYXNlIFR5cGU6Ok5vbmU6Ci0gICAgICAgIHNvdXJjZS5jbG9z
ZSgpOwotICAgICAgICByZXR1cm47CisgICAgICAgIGNsb3NlU3RyZWFtID0gdHJ1ZTsKKyAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBUeXBlOjpMb2FkZWQ6IHsKKyAgICAgICAgY2xvc2VTdHJlYW0g
PSBzb3VyY2UuZW5xdWV1ZShtX2NvbnN1bWVyLnRha2VBc0FycmF5QnVmZmVyKCkpOworICAgICAg
ICBicmVhazsKKyAgICB9CisgICAgY2FzZSBUeXBlOjpSZWFkYWJsZVN0cmVhbToKKyAgICAgICAg
Ly8gVGhpcyBzaG91bGQgYmUgaGFuZGxlZCBieSBKUyBCdWlsdGlucy4KKyAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgICAgIEZBTExUSFJPVUdIOwogICAgIGRlZmF1bHQ6CiAgICAg
ICAgIHNvdXJjZS5lcnJvcihBU0NJSUxpdGVyYWwoIm5vdCBpbXBsZW1lbnRlZCIpKTsKICAgICB9
Ci19Ci0jZW5kaWYKIAotdm9pZCBGZXRjaEJvZHk6OmNvbnN1bWVBcnJheUJ1ZmZlcihDb25zdW1l
cjo6VHlwZSB0eXBlLCBEZWZlcnJlZFdyYXBwZXImIHByb21pc2UpCi17Ci0gICAgaWYgKHR5cGUg
PT0gQ29uc3VtZXI6OlR5cGU6OkFycmF5QnVmZmVyKSB7Ci0gICAgICAgIGZ1bGZpbGxQcm9taXNl
V2l0aEFycmF5QnVmZmVyKHByb21pc2UsIG1fZGF0YS5nZXQoKSk7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0gICAgaWYgKHR5cGUgPT0gQ29uc3VtZXI6OlR5cGU6OkJsb2IpIHsKLSAgICAgICAg
cHJvbWlzZS5yZXNvbHZlKGJsb2JGcm9tQXJyYXlCdWZmZXIobV9kYXRhLmdldCgpLCBCbG9iOjpu
b3JtYWxpemVkQ29udGVudFR5cGUoZXh0cmFjdE1JTUVUeXBlRnJvbU1lZGlhVHlwZShtX21pbWVU
eXBlKSkpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIEFTU0VSVCh0eXBlID09IENv
bnN1bWVyOjpUeXBlOjpUZXh0IHx8IHR5cGUgPT0gQ29uc3VtZXI6OlR5cGU6OkpTT04pOwotICAg
IC8vIEZJWE1FOiBEbyB3ZSBuZWVkIFRleHRSZXNvdXJjZURlY29kZXIgdG8gY3JlYXRlIGEgU3Ry
aW5nIHRvIGRlY29kZSBVVEYtOCBkYXRhLgotICAgIGZ1bGZpbGxUZXh0UHJvbWlzZSh0eXBlLCBU
ZXh0UmVzb3VyY2VEZWNvZGVyOjpjcmVhdGUoQVNDSUlMaXRlcmFsKCJ0ZXh0L3BsYWluIiksICJV
VEYtOCIpLT5kZWNvZGVBbmRGbHVzaChzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4obV9kYXRhLT5k
YXRhKCkpLCBtX2RhdGEtPmJ5dGVMZW5ndGgoKSksIHByb21pc2UpOworICAgIGlmIChjbG9zZVN0
cmVhbSkKKyAgICAgICAgc291cmNlLmNsb3NlKCk7CiB9CisjZW5kaWYKIAotdm9pZCBGZXRjaEJv
ZHk6OmNvbnN1bWVUZXh0KENvbnN1bWVyOjpUeXBlIHR5cGUsIERlZmVycmVkV3JhcHBlciYgcHJv
bWlzZSkKK3ZvaWQgRmV0Y2hCb2R5Ojpjb25zdW1lQXJyYXlCdWZmZXIoRGVmZXJyZWRXcmFwcGVy
JiBwcm9taXNlKQogewotICAgIEFTU0VSVCh0eXBlID09IENvbnN1bWVyOjpUeXBlOjpBcnJheUJ1
ZmZlciB8fCB0eXBlID09IENvbnN1bWVyOjpUeXBlOjpCbG9iKTsKLQotICAgIGlmICh0eXBlID09
IENvbnN1bWVyOjpUeXBlOjpBcnJheUJ1ZmZlcikgewotICAgICAgICBWZWN0b3I8dWludDhfdD4g
ZGF0YSA9IGV4dHJhY3RGcm9tVGV4dCgpOwotICAgICAgICBmdWxmaWxsUHJvbWlzZVdpdGhBcnJh
eUJ1ZmZlcihwcm9taXNlLCBkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotICAgIFN0cmluZyBjb250ZW50VHlwZSA9IEJsb2I6Om5vcm1hbGl6ZWRDb250
ZW50VHlwZShleHRyYWN0TUlNRVR5cGVGcm9tTWVkaWFUeXBlKG1fbWltZVR5cGUpKTsKLSAgICBw
cm9taXNlLnJlc29sdmUoQmxvYjo6Y3JlYXRlKGV4dHJhY3RGcm9tVGV4dCgpLCBjb250ZW50VHlw
ZSkpOworICAgIG1fY29uc3VtZXIucmVzb2x2ZVdpdGhEYXRhKHByb21pc2UsIHN0YXRpY19jYXN0
PGNvbnN0IHVpbnQ4X3QqPihtX2RhdGEtPmRhdGEoKSksIG1fZGF0YS0+Ynl0ZUxlbmd0aCgpKTsK
IH0KIAotRmV0Y2hMb2FkZXI6OlR5cGUgRmV0Y2hCb2R5Ojpsb2FkaW5nVHlwZShDb25zdW1lcjo6
VHlwZSB0eXBlKQordm9pZCBGZXRjaEJvZHk6OmNvbnN1bWVUZXh0KERlZmVycmVkV3JhcHBlciYg
cHJvbWlzZSkKIHsKLSAgICBzd2l0Y2ggKHR5cGUpIHsKLSAgICBjYXNlIENvbnN1bWVyOjpUeXBl
OjpKU09OOgotICAgIGNhc2UgQ29uc3VtZXI6OlR5cGU6OlRleHQ6Ci0gICAgICAgIHJldHVybiBG
ZXRjaExvYWRlcjo6VHlwZTo6VGV4dDsKLSAgICBjYXNlIENvbnN1bWVyOjpUeXBlOjpCbG9iOgot
ICAgIGNhc2UgQ29uc3VtZXI6OlR5cGU6OkFycmF5QnVmZmVyOgotICAgICAgICByZXR1cm4gRmV0
Y2hMb2FkZXI6OlR5cGU6OkFycmF5QnVmZmVyOwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gRmV0Y2hMb2FkZXI6OlR5cGU6OkFycmF5
QnVmZmVyOwotICAgIH07CisgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGEgPSBleHRyYWN0RnJvbVRl
eHQoKTsKKyAgICBtX2NvbnN1bWVyLnJlc29sdmVXaXRoRGF0YShwcm9taXNlLCBkYXRhLmRhdGEo
KSwgZGF0YS5zaXplKCkpOwogfQogCi12b2lkIEZldGNoQm9keTo6Y29uc3VtZUJsb2IoRmV0Y2hC
b2R5T3duZXImIG93bmVyLCBDb25zdW1lcjo6VHlwZSB0eXBlLCBEZWZlcnJlZFdyYXBwZXImJiBw
cm9taXNlKQordm9pZCBGZXRjaEJvZHk6OmNvbnN1bWVCbG9iKEZldGNoQm9keU93bmVyJiBvd25l
ciwgRGVmZXJyZWRXcmFwcGVyJiYgcHJvbWlzZSkKIHsKICAgICBBU1NFUlQobV9ibG9iKTsKIAot
ICAgIG1fY29uc3VtZXIgPSBDb25zdW1lcih7dHlwZSwgV1RGTW92ZShwcm9taXNlKX0pOwotICAg
IG93bmVyLmxvYWRCbG9iKCptX2Jsb2IsIGxvYWRpbmdUeXBlKHR5cGUpKTsKKyAgICBtX2NvbnN1
bWVQcm9taXNlID0gV1RGTW92ZShwcm9taXNlKTsKKyAgICBvd25lci5sb2FkQmxvYigqbV9ibG9i
LCAmbV9jb25zdW1lcik7CiB9CiAKIFZlY3Rvcjx1aW50OF90PiBGZXRjaEJvZHk6OmV4dHJhY3RG
cm9tVGV4dCgpIGNvbnN0CkBAIC0yMzYsNjMgKzIyNSwyMSBAQCBWZWN0b3I8dWludDhfdD4gRmV0
Y2hCb2R5OjpleHRyYWN0RnJvbVRleHQoKSBjb25zdAogICAgIHJldHVybiB2YWx1ZTsKIH0KIAot
c3RhdGljIGlubGluZSBSZWY8QmxvYj4gYmxvYkZyb21BcnJheUJ1ZmZlcihBcnJheUJ1ZmZlciog
YnVmZmVyLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKQotewotICAgIGlmICghYnVmZmVyKQot
ICAgICAgICByZXR1cm4gQmxvYjo6Y3JlYXRlKFZlY3Rvcjx1aW50OF90PigpLCBjb250ZW50VHlw
ZSk7Ci0KLSAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIHRyeSB0byBtb3ZlIGJ1ZmZlciB0byBCbG9i
IHdpdGhvdXQgZG9pbmcgdGhpcyBjb3B5LgotICAgIFZlY3Rvcjx1aW50OF90PiB2YWx1ZShidWZm
ZXItPmJ5dGVMZW5ndGgoKSk7Ci0gICAgbWVtY3B5KHZhbHVlLmRhdGEoKSwgYnVmZmVyLT5kYXRh
KCksIGJ1ZmZlci0+Ynl0ZUxlbmd0aCgpKTsKLSAgICByZXR1cm4gQmxvYjo6Y3JlYXRlKFdURk1v
dmUodmFsdWUpLCBjb250ZW50VHlwZSk7Ci19Ci0KLXZvaWQgRmV0Y2hCb2R5OjpmdWxmaWxsVGV4
dFByb21pc2UoRmV0Y2hCb2R5OjpDb25zdW1lcjo6VHlwZSB0eXBlLCBjb25zdCBTdHJpbmcmIHRl
eHQsIERlZmVycmVkV3JhcHBlciYgcHJvbWlzZSkKLXsKLSAgICBBU1NFUlQodHlwZSA9PSBDb25z
dW1lcjo6VHlwZTo6VGV4dCB8fCB0eXBlID09IENvbnN1bWVyOjpUeXBlOjpKU09OKTsKLSAgICBp
ZiAodHlwZSA9PSBGZXRjaEJvZHk6OkNvbnN1bWVyOjpUeXBlOjpUZXh0KQotICAgICAgICBwcm9t
aXNlLnJlc29sdmUodGV4dCk7Ci0gICAgZWxzZQotICAgICAgICBmdWxmaWxsUHJvbWlzZVdpdGhK
U09OKHByb21pc2UsIHRleHQpOwotfQotCiB2b2lkIEZldGNoQm9keTo6bG9hZGluZ0ZhaWxlZCgp
CiB7Ci0gICAgQVNTRVJUKG1fY29uc3VtZXIpOwotICAgIG1fY29uc3VtZXItPnByb21pc2UucmVq
ZWN0KDApOwotICAgIG1fY29uc3VtZXIgPSBOdWxsb3B0OwotfQotCi12b2lkIEZldGNoQm9keTo6
bG9hZGVkQXNBcnJheUJ1ZmZlcihSZWZQdHI8QXJyYXlCdWZmZXI+JiYgYnVmZmVyKQotewotICAg
IGlmIChtX3R5cGUgPT0gVHlwZTo6TG9hZGluZykgewotICAgICAgICBtX3R5cGUgPSBUeXBlOjpB
cnJheUJ1ZmZlcjsKLSAgICAgICAgbV9kYXRhID0gYnVmZmVyOwotICAgICAgICBpZiAobV9jb25z
dW1lcikgewotICAgICAgICAgICAgY29uc3VtZUFycmF5QnVmZmVyKG1fY29uc3VtZXItPnR5cGUs
IG1fY29uc3VtZXItPnByb21pc2UpOwotICAgICAgICAgICAgbV9jb25zdW1lciA9IE51bGxvcHQ7
Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIEFTU0VSVChtX2NvbnN1
bWVyKTsKLSAgICBBU1NFUlQobV9jb25zdW1lci0+dHlwZSA9PSBDb25zdW1lcjo6VHlwZTo6Qmxv
YiB8fCBtX2NvbnN1bWVyLT50eXBlID09IENvbnN1bWVyOjpUeXBlOjpBcnJheUJ1ZmZlcik7Ci0g
ICAgaWYgKG1fY29uc3VtZXItPnR5cGUgPT0gQ29uc3VtZXI6OlR5cGU6OkFycmF5QnVmZmVyKQot
ICAgICAgICBmdWxmaWxsUHJvbWlzZVdpdGhBcnJheUJ1ZmZlcihtX2NvbnN1bWVyLT5wcm9taXNl
LCBidWZmZXIuZ2V0KCkpOwotICAgIGVsc2UgewotICAgICAgICBBU1NFUlQobV9ibG9iKTsKLSAg
ICAgICAgbV9jb25zdW1lci0+cHJvbWlzZS5yZXNvbHZlKGJsb2JGcm9tQXJyYXlCdWZmZXIoYnVm
ZmVyLmdldCgpLCBtX2Jsb2ItPnR5cGUoKSkpOworICAgIGlmIChtX2NvbnN1bWVQcm9taXNlKSB7
CisgICAgICAgIG1fY29uc3VtZVByb21pc2UtPnJlamVjdCgwKTsKKyAgICAgICAgbV9jb25zdW1l
UHJvbWlzZSA9IE51bGxvcHQ7CiAgICAgfQotICAgIG1fY29uc3VtZXIgPSBOdWxsb3B0OwogfQog
Ci12b2lkIEZldGNoQm9keTo6bG9hZGVkQXNUZXh0KFN0cmluZyYmIHRleHQpCit2b2lkIEZldGNo
Qm9keTo6bG9hZGluZ1N1Y2NlZWRlZCgpCiB7Ci0gICAgQVNTRVJUKG1fY29uc3VtZXIpOwotICAg
IEFTU0VSVChtX2NvbnN1bWVyLT50eXBlID09IENvbnN1bWVyOjpUeXBlOjpUZXh0IHx8IG1fY29u
c3VtZXItPnR5cGUgPT0gQ29uc3VtZXI6OlR5cGU6OkpTT04pOwotCi0gICAgZnVsZmlsbFRleHRQ
cm9taXNlKG1fY29uc3VtZXItPnR5cGUsIHRleHQsIG1fY29uc3VtZXItPnByb21pc2UpOwotICAg
IG1fY29uc3VtZXIgPSBOdWxsb3B0OworICAgIG1fdHlwZSA9IG1fY29uc3VtZXIuaGFzRGF0YSgp
ID8gVHlwZTo6TG9hZGVkIDogVHlwZTo6Tm9uZTsKKyAgICBpZiAobV9jb25zdW1lUHJvbWlzZSkg
eworICAgICAgICBtX2NvbnN1bWVyLnJlc29sdmUoKm1fY29uc3VtZVByb21pc2UpOworICAgICAg
ICBtX2NvbnN1bWVQcm9taXNlID0gTnVsbG9wdDsKKyAgICB9CiB9CiAKIFJlZlB0cjxGb3JtRGF0
YT4gRmV0Y2hCb2R5Ojpib2R5Rm9ySW50ZXJuYWxSZXF1ZXN0KCkgY29uc3QKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5oCmluZGV4IDU2ZjNkZmRjODU3MWMzMTUxMTJmMjY2
NWM2ZmZkYTk3NWE5ZGYzOTIuLjYyZDllNWE3ODdkNTgzMzBiNjY0ZjhhYzU2ZWYyNDUzMmNlZjZk
YzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuaApAQCAtMzMsNiAr
MzMsNyBAQAogCiAjaW5jbHVkZSAiQmxvYi5oIgogI2luY2x1ZGUgIkRPTUZvcm1EYXRhLmgiCisj
aW5jbHVkZSAiRmV0Y2hCb2R5Q29uc3VtZXIuaCIKICNpbmNsdWRlICJGZXRjaExvYWRlci5oIgog
I2luY2x1ZGUgIkpTRE9NUHJvbWlzZS5oIgogCkBAIC03MCwzNSArNzEsMjcgQEAgcHVibGljOgog
ICAgIEZldGNoQm9keSgpID0gZGVmYXVsdDsKIAogICAgIHZvaWQgbG9hZGluZ0ZhaWxlZCgpOwot
ICAgIHZvaWQgbG9hZGVkQXNBcnJheUJ1ZmZlcihSZWZQdHI8QXJyYXlCdWZmZXI+JiYpOwotICAg
IHZvaWQgbG9hZGVkQXNUZXh0KFN0cmluZyYmKTsKKyAgICB2b2lkIGxvYWRpbmdTdWNjZWVkZWQo
KTsKIAogICAgIFJlZlB0cjxGb3JtRGF0YT4gYm9keUZvckludGVybmFsUmVxdWVzdCgpIGNvbnN0
OwogCi0gICAgZW51bSBjbGFzcyBUeXBlIHsgTm9uZSwgQXJyYXlCdWZmZXIsIExvYWRpbmcsIFRl
eHQsIEJsb2IsIEZvcm1EYXRhIH07CisgICAgZW51bSBjbGFzcyBUeXBlIHsgTm9uZSwgQXJyYXlC
dWZmZXIsIEJsb2IsIEZvcm1EYXRhLCBUZXh0LCBMb2FkaW5nLCBMb2FkZWQsIFJlYWRhYmxlU3Ry
ZWFtIH07CiAgICAgVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9CiAKKyAgICBG
ZXRjaEJvZHlDb25zdW1lciYgY29uc3VtZXIoKSB7IHJldHVybiBtX2NvbnN1bWVyOyB9CisKIHBy
aXZhdGU6CiAgICAgRmV0Y2hCb2R5KFJlZjxCbG9iPiYmKTsKICAgICBGZXRjaEJvZHkoUmVmPERP
TUZvcm1EYXRhPiYmKTsKICAgICBGZXRjaEJvZHkoU3RyaW5nJiYpOwogICAgIEZldGNoQm9keShU
eXBlIHR5cGUpIDogbV90eXBlKHR5cGUpIHsgfQogCi0gICAgc3RydWN0IENvbnN1bWVyIHsKLSAg
ICAgICAgZW51bSBjbGFzcyBUeXBlIHsgVGV4dCwgQmxvYiwgSlNPTiwgQXJyYXlCdWZmZXIgfTsK
LQotICAgICAgICBUeXBlIHR5cGU7Ci0gICAgICAgIERlZmVycmVkV3JhcHBlciBwcm9taXNlOwot
ICAgIH07Ci0gICAgdm9pZCBjb25zdW1lKEZldGNoQm9keU93bmVyJiwgQ29uc3VtZXI6OlR5cGUs
IERlZmVycmVkV3JhcHBlciYmKTsKKyAgICB2b2lkIGNvbnN1bWUoRmV0Y2hCb2R5T3duZXImLCBE
ZWZlcnJlZFdyYXBwZXImJik7CiAKICAgICBWZWN0b3I8dWludDhfdD4gZXh0cmFjdEZyb21UZXh0
KCkgY29uc3Q7Ci0gICAgdm9pZCBjb25zdW1lQXJyYXlCdWZmZXIoQ29uc3VtZXI6OlR5cGUsIERl
ZmVycmVkV3JhcHBlciYpOwotICAgIHZvaWQgY29uc3VtZVRleHQoQ29uc3VtZXI6OlR5cGUsIERl
ZmVycmVkV3JhcHBlciYpOwotICAgIHZvaWQgY29uc3VtZUJsb2IoRmV0Y2hCb2R5T3duZXImLCBD
b25zdW1lcjo6VHlwZSwgRGVmZXJyZWRXcmFwcGVyJiYpOwotICAgIHN0YXRpYyBGZXRjaExvYWRl
cjo6VHlwZSBsb2FkaW5nVHlwZShDb25zdW1lcjo6VHlwZSk7Ci0gICAgc3RhdGljIHZvaWQgZnVs
ZmlsbFRleHRQcm9taXNlKEZldGNoQm9keTo6Q29uc3VtZXI6OlR5cGUsIGNvbnN0IFN0cmluZyYs
IERlZmVycmVkV3JhcHBlciYpOwotICAgIHN0YXRpYyB2b2lkIGZ1bGZpbGxBcnJheUJ1ZmZlclBy
b21pc2UoRmV0Y2hCb2R5OjpDb25zdW1lcjo6VHlwZSwgY29uc3QgU3RyaW5nJiwgRGVmZXJyZWRX
cmFwcGVyJik7CisgICAgdm9pZCBjb25zdW1lQXJyYXlCdWZmZXIoRGVmZXJyZWRXcmFwcGVyJik7
CisgICAgdm9pZCBjb25zdW1lVGV4dChEZWZlcnJlZFdyYXBwZXImKTsKKyAgICB2b2lkIGNvbnN1
bWVCbG9iKEZldGNoQm9keU93bmVyJiwgRGVmZXJyZWRXcmFwcGVyJiYpOwogCiAgICAgVHlwZSBt
X3R5cGUgeyBUeXBlOjpOb25lIH07CiAgICAgU3RyaW5nIG1fbWltZVR5cGU7CkBAIC0xMDksNyAr
MTAyLDggQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IG1fZGF0YTsKICAgICBT
dHJpbmcgbV90ZXh0OwogCi0gICAgT3B0aW9uYWw8Q29uc3VtZXI+IG1fY29uc3VtZXI7CisgICAg
RmV0Y2hCb2R5Q29uc3VtZXIgbV9jb25zdW1lciB7IEZldGNoQm9keUNvbnN1bWVyOjpUeXBlOjpO
b25lIH07CisgICAgT3B0aW9uYWw8RGVmZXJyZWRXcmFwcGVyPiBtX2NvbnN1bWVQcm9taXNlOwog
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kOTMyNTFiZjk0Y2Qz
NDI3ZjY3OWZkNjJlYWRlNGU4YmEwMDIzNDY3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHAKQEAgLTAsMCArMSwxNDAg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkLCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIHJlcXVpcmVkIHRvIGJlIG1ldDoKKyAqCisgKiAxLiAg
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIEluYy4g
bm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisgKiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUgorICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyAqIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisg
KiBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiRmV0Y2hCb2R5Q29uc3VtZXIuaCIKKworI2lmIEVOQUJMRShG
RVRDSF9BUEkpCisKKyNpbmNsdWRlICJKU0Jsb2IuaCIKKyNpbmNsdWRlICJKU0RPTVByb21pc2Uu
aCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdGF0aWMgaW5saW5lIFJlZjxCbG9iPiBibG9i
RnJvbURhdGEoY29uc3QgdW5zaWduZWQgY2hhciogZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCBjb25z
dCBTdHJpbmcmIGNvbnRlbnRUeXBlKQoreworICAgIFZlY3Rvcjx1aW50OF90PiB2YWx1ZShsZW5n
dGgpOworICAgIG1lbWNweSh2YWx1ZS5kYXRhKCksIGRhdGEsIGxlbmd0aCk7CisgICAgcmV0dXJu
IEJsb2I6OmNyZWF0ZShXVEZNb3ZlKHZhbHVlKSwgY29udGVudFR5cGUpOworfQorCit2b2lkIEZl
dGNoQm9keUNvbnN1bWVyOjpyZXNvbHZlV2l0aERhdGEoRGVmZXJyZWRXcmFwcGVyJiBwcm9taXNl
LCBjb25zdCB1bnNpZ25lZCBjaGFyKiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpCit7CisgICAgc3dp
dGNoIChtX3R5cGUpIHsKKyAgICBjYXNlIFR5cGU6OkFycmF5QnVmZmVyOgorICAgICAgICBmdWxm
aWxsUHJvbWlzZVdpdGhBcnJheUJ1ZmZlcihwcm9taXNlLCBkYXRhLCBsZW5ndGgpOworICAgICAg
ICByZXR1cm47CisgICAgY2FzZSBUeXBlOjpCbG9iOgorICAgICAgICBwcm9taXNlLnJlc29sdmVX
aXRoTmV3bHlDcmVhdGVkKGJsb2JGcm9tRGF0YShkYXRhLCBsZW5ndGgsIG1fY29udGVudFR5cGUp
KTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgVHlwZTo6SlNPTjoKKyAgICAgICAgZnVsZmls
bFByb21pc2VXaXRoSlNPTihwcm9taXNlLCBTdHJpbmcoZGF0YSwgbGVuZ3RoKSk7CisgICAgICAg
IHJldHVybjsKKyAgICBjYXNlIFR5cGU6OlRleHQ6CisgICAgICAgIHByb21pc2UucmVzb2x2ZShT
dHJpbmcoZGF0YSwgbGVuZ3RoKSk7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIFR5cGU6Ok5v
bmU6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm47CisgICAg
fQorfQorCit2b2lkIEZldGNoQm9keUNvbnN1bWVyOjpyZXNvbHZlKERlZmVycmVkV3JhcHBlciYg
cHJvbWlzZSkKK3sKKyAgICBBU1NFUlQobV90eXBlICE9IFR5cGU6Ok5vbmUpOworICAgIHN3aXRj
aCAobV90eXBlKSB7CisgICAgY2FzZSBUeXBlOjpBcnJheUJ1ZmZlcjoKKyAgICAgICAgZnVsZmls
bFByb21pc2VXaXRoQXJyYXlCdWZmZXIocHJvbWlzZSwgdGFrZUFzQXJyYXlCdWZmZXIoKS5nZXQo
KSk7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIFR5cGU6OkJsb2I6CisgICAgICAgIHByb21p
c2UucmVzb2x2ZVdpdGhOZXdseUNyZWF0ZWQodGFrZUFzQmxvYigpKTsKKyAgICAgICAgcmV0dXJu
OworICAgIGNhc2UgVHlwZTo6SlNPTjoKKyAgICAgICAgZnVsZmlsbFByb21pc2VXaXRoSlNPTihw
cm9taXNlLCB0YWtlQXNUZXh0KCkpOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBUeXBlOjpU
ZXh0OgorICAgICAgICBwcm9taXNlLnJlc29sdmUodGFrZUFzVGV4dCgpKTsKKyAgICAgICAgcmV0
dXJuOworICAgIGNhc2UgVHlwZTo6Tm9uZToKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CisgICAgICAgIHJldHVybjsKKyAgICB9Cit9CisKK3ZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6OmFw
cGVuZChjb25zdCBjaGFyKiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpCit7CisgICAgaWYgKCFtX2J1
ZmZlcikgeworICAgICAgICBtX2J1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEsIGxl
bmd0aCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgbV9idWZmZXItPmFwcGVuZChkYXRh
LCBsZW5ndGgpOworfQorCit2b2lkIEZldGNoQm9keUNvbnN1bWVyOjphcHBlbmQoY29uc3QgdW5z
aWduZWQgY2hhciogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKQoreworICAgIGFwcGVuZChyZWludGVy
cHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhKSwgbGVuZ3RoKTsKK30KKworUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gRmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VEYXRhKCkKK3sKKyAgICByZXR1cm4gV1RG
TW92ZShtX2J1ZmZlcik7Cit9CisKK1JlZlB0cjxKU0M6OkFycmF5QnVmZmVyPiBGZXRjaEJvZHlD
b25zdW1lcjo6dGFrZUFzQXJyYXlCdWZmZXIoKQoreworICAgIGlmICghbV9idWZmZXIpCisgICAg
ICAgIHJldHVybiBBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlKG51bGxwdHIsIDApOworCisgICAgYXV0
byBhcnJheUJ1ZmZlciA9IG1fYnVmZmVyLT5jcmVhdGVBcnJheUJ1ZmZlcigpOworICAgIG1fYnVm
ZmVyID0gbnVsbHB0cjsKKyAgICByZXR1cm4gYXJyYXlCdWZmZXI7Cit9CisKK1JlZjxCbG9iPiBG
ZXRjaEJvZHlDb25zdW1lcjo6dGFrZUFzQmxvYigpCit7CisgICAgQVNTRVJUKG1fYnVmZmVyKTsK
KyAgICBpZiAoIW1fYnVmZmVyKQorICAgICAgICByZXR1cm4gQmxvYjo6Y3JlYXRlKCk7CisKKyAg
ICAvLyBGSVhNRTogV2Ugc2hvdWxkIHRyeSB0byBtb3ZlIG1fYnVmZmVyIHRvIEJsb2Igd2l0aG91
dCBkb2luZyBleHRyYSBjb3B5LgorICAgIHJldHVybiBibG9iRnJvbURhdGEocmVpbnRlcnByZXRf
Y2FzdDxjb25zdCB1bnNpZ25lZCBjaGFyKj4obV9idWZmZXItPmRhdGEoKSksIG1fYnVmZmVyLT5z
aXplKCksIG1fY29udGVudFR5cGUpOworfQorCitTdHJpbmcgRmV0Y2hCb2R5Q29uc3VtZXI6OnRh
a2VBc1RleHQoKQoreworICAgIGlmICghbV9idWZmZXIpCisgICAgICAgIHJldHVybiBTdHJpbmco
KTsKKworICAgIGF1dG8gdGV4dCA9IFN0cmluZyhtX2J1ZmZlci0+ZGF0YSgpLCBtX2J1ZmZlci0+
c2l6ZSgpKTsKKyAgICBtX2J1ZmZlciA9IG51bGxwdHI7CisgICAgcmV0dXJuIHRleHQ7Cit9CisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShGRVRDSF9BUEkpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uZmFhMWZlN2QyOGFjN2E2Y2FlMzJhZWM3NDQ0NWQ5ODA4MTM0NGIzYgotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3Vt
ZXIuaApAQCAtMCwwICsxLDczIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIElu
Yy4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCwgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSByZXF1aXJlZCB0byBi
ZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUg
bmFtZSBvZiBBcHBsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisg
KiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJ
RUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgorICogQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTAorICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisgKiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLAorICogT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoRkVUQ0hfQVBJKQorCisjaW5jbHVk
ZSAiU2hhcmVkQnVmZmVyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQmxvYjsK
K2NsYXNzIERlZmVycmVkV3JhcHBlcjsKKworY2xhc3MgRmV0Y2hCb2R5Q29uc3VtZXIgeworcHVi
bGljOgorICAgIC8vIFR5cGUgaXMgdXNlZCBpbiBGZXRjaFJlc3BvbnNlLmpzIGFuZCBzaG91bGQg
YmUga2VwdCBzeW5jaHJvbml6ZWQgd2l0aCBpdC4KKyAgICBlbnVtIGNsYXNzIFR5cGUgeyBOb25l
LCBBcnJheUJ1ZmZlciwgQmxvYiwgSlNPTiwgVGV4dCB9OworCisgICAgRmV0Y2hCb2R5Q29uc3Vt
ZXIoVHlwZSB0eXBlKSA6IG1fdHlwZSh0eXBlKSB7IH0KKworICAgIHZvaWQgYXBwZW5kKGNvbnN0
IGNoYXIqIGRhdGEsIHVuc2lnbmVkKTsKKyAgICB2b2lkIGFwcGVuZChjb25zdCB1bnNpZ25lZCBj
aGFyKiBkYXRhLCB1bnNpZ25lZCk7CisKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiB0YWtlRGF0
YSgpOworICAgIFJlZlB0cjxKU0M6OkFycmF5QnVmZmVyPiB0YWtlQXNBcnJheUJ1ZmZlcigpOwor
ICAgIFJlZjxCbG9iPiB0YWtlQXNCbG9iKCk7CisgICAgU3RyaW5nIHRha2VBc1RleHQoKTsKKwor
ICAgIHZvaWQgc2V0Q29udGVudFR5cGUoY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkgeyBtX2Nv
bnRlbnRUeXBlID0gY29udGVudFR5cGU7IH0KKyAgICB2b2lkIHNldFR5cGUoVHlwZSB0eXBlKSB7
IG1fdHlwZSA9IHR5cGU7IH0KKworICAgIHZvaWQgY2xlYW4oKSB7IG1fYnVmZmVyID0gbnVsbHB0
cjsgfQorCisgICAgdm9pZCByZXNvbHZlKERlZmVycmVkV3JhcHBlciYpOworICAgIHZvaWQgcmVz
b2x2ZVdpdGhEYXRhKERlZmVycmVkV3JhcHBlciYsIGNvbnN0IHVuc2lnbmVkIGNoYXIqLCB1bnNp
Z25lZCk7CisKKyAgICBib29sIGhhc0RhdGEoKSBjb25zdCB7IHJldHVybiAhIW1fYnVmZmVyOyB9
CisKK3ByaXZhdGU6CisgICAgVHlwZSBtX3R5cGU7CisgICAgU3RyaW5nIG1fY29udGVudFR5cGU7
CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7Cit9OworCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoRkVUQ0hfQVBJKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlPd25lci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keU93bmVyLmNwcAppbmRleCAwZjQ1Nzk0YTA2OWUy
ZWU2MDhiMTgzNzhlM2RmMWY0YmNlNzM1M2E1Li45NjRiZTc3MTEwNGRhNjcxOTdkM2Q1MDRjNjk4
ODE0MThjYzg1Njg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0Zl
dGNoQm9keU93bmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNo
Qm9keU93bmVyLmNwcApAQCAtMTM4LDcgKzEzOCw3IEBAIHZvaWQgRmV0Y2hCb2R5T3duZXI6OnRl
eHQoRGVmZXJyZWRXcmFwcGVyJiYgcHJvbWlzZSkKICAgICBtX2JvZHkudGV4dCgqdGhpcywgV1RG
TW92ZShwcm9taXNlKSk7CiB9CiAKLXZvaWQgRmV0Y2hCb2R5T3duZXI6OmxvYWRCbG9iKEJsb2Im
IGJsb2IsIEZldGNoTG9hZGVyOjpUeXBlIHR5cGUpCit2b2lkIEZldGNoQm9keU93bmVyOjpsb2Fk
QmxvYihCbG9iJiBibG9iLCBGZXRjaEJvZHlDb25zdW1lciogY29uc3VtZXIpCiB7CiAgICAgLy8g
Q2FuIG9ubHkgYmUgY2FsbGVkIG9uY2UgZm9yIGEgYm9keSBpbnN0YW5jZS4KICAgICBBU1NFUlQo
aXNEaXN0dXJiZWQoKSk7CkBAIC0xNTAsNyArMTUwLDcgQEAgdm9pZCBGZXRjaEJvZHlPd25lcjo6
bG9hZEJsb2IoQmxvYiYgYmxvYiwgRmV0Y2hMb2FkZXI6OlR5cGUgdHlwZSkKICAgICB9CiAKICAg
ICBtX2Jsb2JMb2FkZXIgPSB7ICp0aGlzIH07Ci0gICAgbV9ibG9iTG9hZGVyLT5sb2FkZXIgPSBz
dGQ6Om1ha2VfdW5pcXVlPEZldGNoTG9hZGVyPih0eXBlLCAqbV9ibG9iTG9hZGVyKTsKKyAgICBt
X2Jsb2JMb2FkZXItPmxvYWRlciA9IHN0ZDo6bWFrZV91bmlxdWU8RmV0Y2hMb2FkZXI+KCptX2Js
b2JMb2FkZXIsIGNvbnN1bWVyKTsKIAogICAgIG1fYmxvYkxvYWRlci0+bG9hZGVyLT5zdGFydCgq
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBibG9iKTsKICAgICBpZiAoIW1fYmxvYkxvYWRlci0+
bG9hZGVyLT5pc1N0YXJ0ZWQoKSkgewpAQCAtMTY5LDExICsxNjksNiBAQCB2b2lkIEZldGNoQm9k
eU93bmVyOjpmaW5pc2hCbG9iTG9hZGluZygpCiAgICAgdW5zZXRQZW5kaW5nQWN0aXZpdHkodGhp
cyk7CiB9CiAKLXZvaWQgRmV0Y2hCb2R5T3duZXI6OmxvYWRlZEJsb2JBc1RleHQoU3RyaW5nJiYg
dGV4dCkKLXsKLSAgICBtX2JvZHkubG9hZGVkQXNUZXh0KFdURk1vdmUodGV4dCkpOwotfQotCiB2
b2lkIEZldGNoQm9keU93bmVyOjpibG9iTG9hZGluZ1N1Y2NlZWRlZCgpCiB7CiAgICAgQVNTRVJU
KG1fYm9keS50eXBlKCkgPT0gRmV0Y2hCb2R5OjpUeXBlOjpCbG9iKTsKQEAgLTE4NCw3ICsxNzks
NyBAQCB2b2lkIEZldGNoQm9keU93bmVyOjpibG9iTG9hZGluZ1N1Y2NlZWRlZCgpCiAgICAgICAg
IG1fcmVhZGFibGVTdHJlYW1Tb3VyY2UgPSBudWxscHRyOwogICAgIH0KICNlbmRpZgotCisgICAg
bV9ib2R5LmxvYWRpbmdTdWNjZWVkZWQoKTsKICAgICBmaW5pc2hCbG9iTG9hZGluZygpOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keU93bmVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keU93bmVyLmgKaW5kZXgg
MDZhMjEyNjY1YzM5ZmMzOTA3ZDM4ZTEzZjRjYzEzM2NjODcyYzdiNC4uODdiNzJmMGE0OTlmOTMz
NmE0MGZhNDg2MzNhMTg5MDkyMjNiMWQ5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9mZXRjaC9GZXRjaEJvZHlPd25lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZmV0Y2gvRmV0Y2hCb2R5T3duZXIuaApAQCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBqc29uKERlZmVycmVkV3JhcHBlciYmKTsKICAgICB2b2lkIHRleHQoRGVmZXJyZWRXcmFwcGVy
JiYpOwogCi0gICAgdm9pZCBsb2FkQmxvYihCbG9iJiwgRmV0Y2hMb2FkZXI6OlR5cGUpOworICAg
IHZvaWQgbG9hZEJsb2IoQmxvYiYsIEZldGNoQm9keUNvbnN1bWVyKik7CiAKICAgICBib29sIGlz
QWN0aXZlKCkgY29uc3QgeyByZXR1cm4gISFtX2Jsb2JMb2FkZXI7IH0KIApAQCAtNjcsOCArNjcs
NiBAQCBwcm90ZWN0ZWQ6CiAKIHByaXZhdGU6CiAgICAgLy8gQmxvYiBsb2FkaW5nIHJvdXRpbmVz
Ci0gICAgdm9pZCBsb2FkZWRCbG9iQXNUZXh0KFN0cmluZyYmKTsKLSAgICB2b2lkIGxvYWRlZEJs
b2JBc0FycmF5QnVmZmVyKFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiBidWZmZXIpIHsgbV9ib2R5Lmxv
YWRlZEFzQXJyYXlCdWZmZXIoV1RGTW92ZShidWZmZXIpKTsgfQogICAgIHZvaWQgYmxvYkNodW5r
KGNvbnN0IGNoYXIqLCBzaXplX3QpOwogICAgIHZvaWQgYmxvYkxvYWRpbmdTdWNjZWVkZWQoKTsK
ICAgICB2b2lkIGJsb2JMb2FkaW5nRmFpbGVkKCk7CkBAIC03OCw4ICs3Niw2IEBAIHByaXZhdGU6
CiAgICAgICAgIEJsb2JMb2FkZXIoRmV0Y2hCb2R5T3duZXImKTsKIAogICAgICAgICAvLyBGZXRj
aExvYWRlckNsaWVudCBBUEkKLSAgICAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nQXNUZXh0KFN0
cmluZyYmIHRleHQpIGZpbmFsIHsgb3duZXIubG9hZGVkQmxvYkFzVGV4dChXVEZNb3ZlKHRleHQp
KTsgfQotICAgICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmdBc0FycmF5QnVmZmVyKFJlZlB0cjxB
cnJheUJ1ZmZlcj4mJiBidWZmZXIpIGZpbmFsIHsgb3duZXIubG9hZGVkQmxvYkFzQXJyYXlCdWZm
ZXIoV1RGTW92ZShidWZmZXIpKTsgfQogICAgICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJikgZmluYWw7CiAgICAgICAgIHZvaWQgZGlkUmVjZWl2ZURh
dGEoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IHNpemUpIGZpbmFsIHsgb3duZXIuYmxvYkNodW5r
KGRhdGEsIHNpemUpOyB9CiAgICAgICAgIHZvaWQgZGlkRmFpbCgpIGZpbmFsOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEludGVybmFscy5qcyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hJbnRlcm5hbHMuanMKaW5kZXggNDUyZWM3NjM1
MzVhODA5ZWE4ZDgyOThlMDY5MzVlZTViMzA3NmU0Yi4uZDc1MDA0ZTJmODA4NWIxNWM3MTAwNzAw
MTViZWRkMWI1YWJiMjJjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRj
aC9GZXRjaEludGVybmFscy5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0Zl
dGNoSW50ZXJuYWxzLmpzCkBAIC01MSwzICs1MSwyNyBAQCBmdW5jdGlvbiBmaWxsRmV0Y2hIZWFk
ZXJzKGhlYWRlcnMsIGhlYWRlcnNJbml0KQogICAgICAgICBASGVhZGVycy5wcm90b3R5cGUuQGFw
cGVuZEZyb21KUy5AY2FsbChoZWFkZXJzLCBuYW1lLCBoZWFkZXJzSW5pdFtuYW1lXSk7CiAgICAg
fQogfQorCitmdW5jdGlvbiBjb25zdW1lU3RyZWFtKHJlc3BvbnNlLCB0eXBlKQoreworICAgIEBh
c3NlcnQocmVzcG9uc2UgaW5zdGFuY2VvZiBAUmVzcG9uc2UpOworICAgIEBhc3NlcnQocmVzcG9u
c2UuQGJvZHkgaW5zdGFuY2VvZiBAUmVhZGFibGVTdHJlYW0pOworCisgICAgaWYgKEBpc1JlYWRh
YmxlU3RyZWFtRGlzdHVyYmVkKHJlc3BvbnNlLkBib2R5KSkKKyAgICAgICAgcmV0dXJuIEBQcm9t
aXNlLkByZWplY3QobmV3IEBUeXBlRXJyb3IoIkNhbm5vdCBjb25zdW1lIGEgZGlzdHVyYmVkIFJl
c3BvbnNlIGJvZHkgUmVhZGFibGVTdHJlYW0iKSk7CisKKyAgICB0cnkgeworICAgICAgICBsZXQg
cmVhZGVyID0gbmV3IEBSZWFkYWJsZVN0cmVhbVJlYWRlcihyZXNwb25zZS5AYm9keSk7CisKKyAg
ICAgICAgQFJlc3BvbnNlLnByb3RvdHlwZS5Ac3RhcnRDb25zdW1pbmdTdHJlYW0uQGNhbGwocmVz
cG9uc2UsIHR5cGUpOworICAgICAgICBsZXQgcHVsbCA9IChyZXN1bHQpID0+IHsKKyAgICAgICAg
ICAgIGlmIChyZXN1bHQuZG9uZSkKKyAgICAgICAgICAgICAgICByZXR1cm4gQFJlc3BvbnNlLnBy
b3RvdHlwZS5AZmluaXNoQ29uc3VtaW5nU3RyZWFtLkBjYWxsKHJlc3BvbnNlKTsKKyAgICAgICAg
ICAgIEBSZXNwb25zZS5wcm90b3R5cGUuQGNvbnN1bWVDaHVuay5AY2FsbChyZXNwb25zZSwgcmVz
dWx0LnZhbHVlKTsKKyAgICAgICAgICAgIHJldHVybiBAUHJvbWlzZS5wcm90b3R5cGUuQHRoZW4u
QGNhbGwoQHJlYWRGcm9tUmVhZGFibGVTdHJlYW1SZWFkZXIocmVhZGVyKSwgcHVsbCk7CisgICAg
ICAgIH0KKyAgICAgICAgcmV0dXJuIEBQcm9taXNlLnByb3RvdHlwZS5AdGhlbi5AY2FsbChAcmVh
ZEZyb21SZWFkYWJsZVN0cmVhbVJlYWRlcihyZWFkZXIpLCBwdWxsKTsKKyAgICB9IGNhdGNoKGUp
IHsKKyAgICAgICAgcmV0dXJuIEBQcm9taXNlLkByZWplY3QoZSk7CisgICAgfQorfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyLmNwcAppbmRleCAxYjIzZjA0OWU2
N2I0NjcxYzFlMTZhNjg5ZTFkYjJiNDRhZDEzZjgwLi5lNjNiYzFiMmQzM2MzMmQyMWU0OWY5OWE1
NzIyNjQ3MzAxNTI2MmVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNo
L0ZldGNoTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNo
TG9hZGVyLmNwcApAQCAtODksMjQgKzg5LDI2IEBAIHZvaWQgRmV0Y2hMb2FkZXI6OnN0YXJ0KFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZldGNoUmVxdWVzdCYgcmVxCiAg
ICAgbV9pc1N0YXJ0ZWQgPSBtX2xvYWRlcjsKIH0KIAotRmV0Y2hMb2FkZXI6OkZldGNoTG9hZGVy
KFR5cGUgdHlwZSwgRmV0Y2hMb2FkZXJDbGllbnQmIGNsaWVudCkKLSAgICA6IG1fdHlwZSh0eXBl
KQotICAgICwgbV9jbGllbnQoY2xpZW50KQorRmV0Y2hMb2FkZXI6OkZldGNoTG9hZGVyKEZldGNo
TG9hZGVyQ2xpZW50JiBjbGllbnQsIEZldGNoQm9keUNvbnN1bWVyKiBjb25zdW1lcikKKyAgICA6
IG1fY2xpZW50KGNsaWVudCkKKyAgICAsIG1fY29uc3VtZXIoY29uc3VtZXIpCiB7CiB9CiAKIHZv
aWQgRmV0Y2hMb2FkZXI6OnN0b3AoKQogewotICAgIG1fZGF0YSA9IG51bGxwdHI7CisgICAgaWYg
KG1fY29uc3VtZXIpCisgICAgICAgIG1fY29uc3VtZXItPmNsZWFuKCk7CiAgICAgaWYgKG1fbG9h
ZGVyKQogICAgICAgICBtX2xvYWRlci0+Y2FuY2VsKCk7CiB9CiAKIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IEZldGNoTG9hZGVyOjpzdGFydFN0cmVhbWluZygpCiB7Ci0gICAgQVNTRVJUKG1fdHlwZSA9
PSBUeXBlOjpBcnJheUJ1ZmZlcik7Ci0gICAgbV90eXBlID0gVHlwZTo6U3RyZWFtOwotICAgIHJl
dHVybiBXVEZNb3ZlKG1fZGF0YSk7CisgICAgQVNTRVJUKG1fY29uc3VtZXIpOworICAgIGF1dG8g
Zmlyc3RDaHVuayA9IG1fY29uc3VtZXItPnRha2VEYXRhKCk7CisgICAgbV9jb25zdW1lciA9IG51
bGxwdHI7CisgICAgcmV0dXJuIGZpcnN0Q2h1bms7CiB9CiAKIHZvaWQgRmV0Y2hMb2FkZXI6OmRp
ZFJlY2VpdmVSZXNwb25zZSh1bnNpZ25lZCBsb25nLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiBy
ZXNwb25zZSkKQEAgLTExNCwyOSArMTE2LDE3IEBAIHZvaWQgRmV0Y2hMb2FkZXI6OmRpZFJlY2Vp
dmVSZXNwb25zZSh1bnNpZ25lZCBsb25nLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwCiAg
ICAgbV9jbGllbnQuZGlkUmVjZWl2ZVJlc3BvbnNlKHJlc3BvbnNlKTsKIH0KIAotLy8gRklYTUU6
IFdlIHNob3VsZCBtYWtlIHRleHQgYW5kIGJsb2IgY3JlYXRpb24gbW9yZSBlZmZpY2llbnQuCi0v
LyBXZSBtaWdodCBhbHNvIHdhbnQgdG8gbWVyZ2UgdGhpcyBjbGFzcyB3aXRoIEZpbGVSZWFkZXJM
b2FkZXIuCiB2b2lkIEZldGNoTG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCBjaGFyKiB2YWx1
ZSwgaW50IHNpemUpCiB7Ci0gICAgaWYgKG1fdHlwZSA9PSBUeXBlOjpTdHJlYW0pIHsKKyAgICBp
ZiAoIW1fY29uc3VtZXIpIHsKICAgICAgICAgbV9jbGllbnQuZGlkUmVjZWl2ZURhdGEodmFsdWUs
IHNpemUpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGlmICghbV9kYXRhKSB7Ci0gICAg
ICAgIG1fZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHZhbHVlLCBzaXplKTsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLSAgICBtX2RhdGEtPmFwcGVuZCh2YWx1ZSwgc2l6ZSk7CisgICAgbV9j
b25zdW1lci0+YXBwZW5kKHZhbHVlLCBzaXplKTsKIH0KIAogdm9pZCBGZXRjaExvYWRlcjo6ZGlk
RmluaXNoTG9hZGluZyh1bnNpZ25lZCBsb25nLCBkb3VibGUpCiB7Ci0gICAgaWYgKG1fdHlwZSA9
PSBUeXBlOjpBcnJheUJ1ZmZlcikKLSAgICAgICAgbV9jbGllbnQuZGlkRmluaXNoTG9hZGluZ0Fz
QXJyYXlCdWZmZXIobV9kYXRhID8gbV9kYXRhLT5jcmVhdGVBcnJheUJ1ZmZlcigpIDogQXJyYXlC
dWZmZXI6OnRyeUNyZWF0ZShudWxscHRyLCAwKSk7Ci0gICAgZWxzZSBpZiAobV90eXBlID09IFR5
cGU6OlRleHQpCi0gICAgICAgIG1fY2xpZW50LmRpZEZpbmlzaExvYWRpbmdBc1RleHQobV9kYXRh
ID8gVGV4dFJlc291cmNlRGVjb2Rlcjo6Y3JlYXRlKEFTQ0lJTGl0ZXJhbCgidGV4dC9wbGFpbiIp
LCAiVVRGLTgiKS0+ZGVjb2RlQW5kRmx1c2gobV9kYXRhLT5kYXRhKCksIG1fZGF0YS0+c2l6ZSgp
KTogU3RyaW5nKCkpOwotICAgIG1fZGF0YSA9IG51bGxwdHI7Ci0KICAgICBtX2NsaWVudC5kaWRT
dWNjZWVkKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gv
RmV0Y2hMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXIu
aAppbmRleCBkNDczZmYxNzQ1MWZjYTVjMWE3MTNmYjU0M2JkMGI2YTBiMWRlMDJiLi5kYmI4MmZi
ZWJkNTU5ZTc3ZDFjZTFiNjE2YmM2ZDBiNGYxYWVmM2MzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9mZXRjaC9GZXRjaExvYWRlci5oCkBAIC0yNiwxMiArMjYsMTEgQEAKICAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCiAgKi8KIAotI2lmbmRlZiBGZXRjaExvYWRlcl9oCi0jZGVmaW5lIEZldGNoTG9hZGVyX2gK
KyNwcmFnbWEgb25jZQogCiAjaWYgRU5BQkxFKEZFVENIX0FQSSkKIAotI2luY2x1ZGUgIlNoYXJl
ZEJ1ZmZlci5oIgorI2luY2x1ZGUgIkZldGNoQm9keUNvbnN1bWVyLmgiCiAjaW5jbHVkZSAiVGhy
ZWFkYWJsZUxvYWRlci5oIgogI2luY2x1ZGUgIlRocmVhZGFibGVMb2FkZXJDbGllbnQuaCIKIApA
QCAtNDQsOSArNDMsNyBAQCBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwogCiBjbGFzcyBG
ZXRjaExvYWRlciBmaW5hbCA6IHB1YmxpYyBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50IHsKIHB1Ymxp
YzoKLSAgICBlbnVtIGNsYXNzIFR5cGUgeyBBcnJheUJ1ZmZlciwgU3RyZWFtLCBUZXh0IH07Ci0K
LSAgICBGZXRjaExvYWRlcihUeXBlLCBGZXRjaExvYWRlckNsaWVudCYpOworICAgIEZldGNoTG9h
ZGVyKEZldGNoTG9hZGVyQ2xpZW50JiwgRmV0Y2hCb2R5Q29uc3VtZXIqKTsKIAogICAgIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IHN0YXJ0U3RyZWFtaW5nKCk7CiAKQEAgLTYzLDE4ICs2MCwxMyBAQCBw
cml2YXRlOgogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyh1bnNpZ25lZCBsb25nLCBkb3VibGUp
IGZpbmFsOwogICAgIHZvaWQgZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJikgZmluYWw7CiAK
LSAgICBUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KLQogcHJpdmF0ZToKLSAg
ICBUeXBlIG1fdHlwZSB7IFR5cGU6OkFycmF5QnVmZmVyIH07CiAgICAgRmV0Y2hMb2FkZXJDbGll
bnQmIG1fY2xpZW50OwogICAgIFJlZlB0cjxUaHJlYWRhYmxlTG9hZGVyPiBtX2xvYWRlcjsKLSAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2RhdGE7CisgICAgRmV0Y2hCb2R5Q29uc3VtZXIqIG1f
Y29uc3VtZXI7CiAgICAgYm9vbCBtX2lzU3RhcnRlZCB7IGZhbHNlIH07CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoRkVUQ0hfQVBJKQotCi0jZW5kaWYg
Ly8gRmV0Y2hMb2FkZXJfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRj
aC9GZXRjaExvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRj
aExvYWRlckNsaWVudC5oCmluZGV4IGQwOWZhZDUzZTI3ZTZkOGFjMjJhZGI3Y2E5ZjQ1MTAyNzhk
YTQxNTAuLmU4OGU5OTQxOGNkOTkxNGExZWU0ODE4NzdkNjFhZGNiNmUwNGVhZjQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXJDbGllbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyQ2xpZW50LmgKQEAgLTQ3
LDggKzQ3LDYgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVSZXNwb25z
ZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgeyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlkRmlu
aXNoTG9hZGluZ0FzVGV4dChTdHJpbmcmJikgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGRpZEZpbmlz
aExvYWRpbmdBc0FycmF5QnVmZmVyKFJlZlB0cjxKU0M6OkFycmF5QnVmZmVyPiYmKSB7IH0KICAg
ICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgY2hhciosIHNpemVfdCkgeyB9CiAK
ICAgICB2aXJ0dWFsIHZvaWQgZGlkU3VjY2VlZCgpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwCmluZGV4IGMyZThhYmFhYjExYTIwMTU0MGQ4
YmQxMjg1MGU1MWU3MGIyZWEzMDEuLjY3MzhmYTMxODNjOTYxMTU5MTEyY2UxOGNkMDUwY2I4ODBk
YTg0MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNw
b25zZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNl
LmNwcApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKICNpbmNs
dWRlICJGZXRjaFJlcXVlc3QuaCIKICNpbmNsdWRlICJIVFRQUGFyc2Vycy5oIgorI2luY2x1ZGUg
IkpTQmxvYi5oIgogI2luY2x1ZGUgIkpTRmV0Y2hSZXNwb25zZS5oIgogI2luY2x1ZGUgIlNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQuaCIKIApAQCAtOTMsMTMgKzk0LDExIEBAIEZldGNoUmVzcG9uc2U6
OkZldGNoUmVzcG9uc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgRmV0Y2hCb2R5
JiYgYm9keSwKIHsKIH0KIAotUmVmUHRyPEZldGNoUmVzcG9uc2U+IEZldGNoUmVzcG9uc2U6OmNs
b25lKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIEV4Y2VwdGlvbkNvZGUmIGVjKQor
UmVmPEZldGNoUmVzcG9uc2U+IEZldGNoUmVzcG9uc2U6OmNsb25lRm9ySlMoKQogewotICAgIGlm
IChpc0Rpc3R1cmJlZCgpKSB7Ci0gICAgICAgIGVjID0gVHlwZUVycm9yOwotICAgICAgICByZXR1
cm4gbnVsbHB0cjsKLSAgICB9Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRmV0Y2hSZXNwb25z
ZShjb250ZXh0LCBGZXRjaEJvZHkobV9ib2R5KSwgRmV0Y2hIZWFkZXJzOjpjcmVhdGUoaGVhZGVy
cygpKSwgUmVzb3VyY2VSZXNwb25zZShtX3Jlc3BvbnNlKSkpOworICAgIEFTU0VSVChzY3JpcHRF
eGVjdXRpb25Db250ZXh0KCkpOworICAgIEFTU0VSVCghaXNEaXN0dXJiZWQoKSk7CisgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgRmV0Y2hSZXNwb25zZSgqc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
LCBGZXRjaEJvZHkobV9ib2R5KSwgRmV0Y2hIZWFkZXJzOjpjcmVhdGUoaGVhZGVycygpKSwgUmVz
b3VyY2VSZXNwb25zZShtX3Jlc3BvbnNlKSkpOwogfQogCiB2b2lkIEZldGNoUmVzcG9uc2U6OmZl
dGNoKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIEZldGNoUmVxdWVzdCYgcmVxdWVz
dCwgRmV0Y2hQcm9taXNlJiYgcHJvbWlzZSkKQEAgLTEzMCw2ICsxMjksOCBAQCB2b2lkIEZldGNo
UmVzcG9uc2U6OkJvZHlMb2FkZXI6OmRpZFN1Y2NlZWQoKQogICAgICAgICBtX3Jlc3BvbnNlLm1f
cmVhZGFibGVTdHJlYW1Tb3VyY2UgPSBudWxscHRyOwogICAgIH0KICNlbmRpZgorICAgIG1fcmVz
cG9uc2UubV9ib2R5LmxvYWRpbmdTdWNjZWVkZWQoKTsKKwogICAgIGlmIChtX2xvYWRlci0+aXNT
dGFydGVkKCkpCiAgICAgICAgIG1fcmVzcG9uc2UubV9ib2R5TG9hZGVyID0gTnVsbG9wdDsKICAg
ICBtX3Jlc3BvbnNlLnVuc2V0UGVuZGluZ0FjdGl2aXR5KCZtX3Jlc3BvbnNlKTsKQEAgLTE4Nywx
NCArMTg4LDkgQEAgdm9pZCBGZXRjaFJlc3BvbnNlOjpCb2R5TG9hZGVyOjpkaWRSZWNlaXZlRGF0
YShjb25zdCBjaGFyKiBkYXRhLCBzaXplX3Qgc2l6ZSkKICNlbmRpZgogfQogCi12b2lkIEZldGNo
UmVzcG9uc2U6OkJvZHlMb2FkZXI6OmRpZEZpbmlzaExvYWRpbmdBc0FycmF5QnVmZmVyKFJlZlB0
cjxBcnJheUJ1ZmZlcj4mJiBidWZmZXIpCi17Ci0gICAgbV9yZXNwb25zZS5ib2R5KCkubG9hZGVk
QXNBcnJheUJ1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpOwotfQotCiBib29sIEZldGNoUmVzcG9uc2U6
OkJvZHlMb2FkZXI6OnN0YXJ0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIGNvbnN0
IEZldGNoUmVxdWVzdCYgcmVxdWVzdCkKIHsKLSAgICBtX2xvYWRlciA9IHN0ZDo6bWFrZV91bmlx
dWU8RmV0Y2hMb2FkZXI+KEZldGNoTG9hZGVyOjpUeXBlOjpBcnJheUJ1ZmZlciwgKnRoaXMpOwor
ICAgIG1fbG9hZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxGZXRjaExvYWRlcj4oKnRoaXMsICZtX3Jl
c3BvbnNlLm1fYm9keS5jb25zdW1lcigpKTsKICAgICBtX2xvYWRlci0+c3RhcnQoY29udGV4dCwg
cmVxdWVzdCk7CiAgICAgcmV0dXJuIG1fbG9hZGVyLT5pc1N0YXJ0ZWQoKTsKIH0KQEAgLTIwNSw3
ICsyMDEsNDYgQEAgdm9pZCBGZXRjaFJlc3BvbnNlOjpCb2R5TG9hZGVyOjpzdG9wKCkKICAgICAg
ICAgbV9sb2FkZXItPnN0b3AoKTsKIH0KIAordm9pZCBGZXRjaFJlc3BvbnNlOjpjb25zdW1lKHVu
c2lnbmVkIHR5cGUsIERlZmVycmVkV3JhcHBlciYmIHdyYXBwZXIpCit7CisgICAgQVNTRVJUKHR5
cGUgPD0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEZldGNoQm9keUNvbnN1bWVyOjpUeXBlOjpUZXh0
KSk7CisKKyAgICBzd2l0Y2ggKHN0YXRpY19jYXN0PEZldGNoQm9keUNvbnN1bWVyOjpUeXBlPih0
eXBlKSkgeworICAgIGNhc2UgRmV0Y2hCb2R5Q29uc3VtZXI6OlR5cGU6OkFycmF5QnVmZmVyOgor
ICAgICAgICBhcnJheUJ1ZmZlcihXVEZNb3ZlKHdyYXBwZXIpKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIGNhc2UgRmV0Y2hCb2R5Q29uc3VtZXI6OlR5cGU6OkJsb2I6CisgICAgICAgIGJsb2IoV1RG
TW92ZSh3cmFwcGVyKSk7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIEZldGNoQm9keUNvbnN1
bWVyOjpUeXBlOjpKU09OOgorICAgICAgICBqc29uKFdURk1vdmUod3JhcHBlcikpOworICAgICAg
ICByZXR1cm47CisgICAgY2FzZSBGZXRjaEJvZHlDb25zdW1lcjo6VHlwZTo6VGV4dDoKKyAgICAg
ICAgdGV4dChXVEZNb3ZlKHdyYXBwZXIpKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgRmV0
Y2hCb2R5Q29uc3VtZXI6OlR5cGU6Ok5vbmU6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OworICAgICAgICByZXR1cm47CisgICAgfQorfQorCiAjaWYgRU5BQkxFKFNUUkVBTVNfQVBJKQor
dm9pZCBGZXRjaFJlc3BvbnNlOjpzdGFydENvbnN1bWluZ1N0cmVhbSh1bnNpZ25lZCB0eXBlKQor
eworICAgIG1faXNEaXN0dXJiZWQgPSB0cnVlOworICAgIG1fY29uc3VtZXIuc2V0VHlwZShzdGF0
aWNfY2FzdDxGZXRjaEJvZHlDb25zdW1lcjo6VHlwZT4odHlwZSkpOworfQorCit2b2lkIEZldGNo
UmVzcG9uc2U6OmNvbnN1bWVDaHVuayhSZWY8SlNDOjpVaW50OEFycmF5PiYmIGNodW5rKQorewor
ICAgIG1fY29uc3VtZXIuYXBwZW5kKGNodW5rLT5kYXRhKCksIGNodW5rLT5ieXRlTGVuZ3RoKCkp
OworfQorCit2b2lkIEZldGNoUmVzcG9uc2U6OmZpbmlzaENvbnN1bWluZ1N0cmVhbShEZWZlcnJl
ZFdyYXBwZXImJiBwcm9taXNlKQoreworICAgIG1fY29uc3VtZXIucmVzb2x2ZShwcm9taXNlKTsK
K30KKwogdm9pZCBGZXRjaFJlc3BvbnNlOjpjb25zdW1lQm9keUFzU3RyZWFtKCkKIHsKICAgICBB
U1NFUlQobV9yZWFkYWJsZVN0cmVhbVNvdXJjZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZmV0Y2gvRmV0Y2hSZXNwb25zZS5oCmluZGV4IDU3M2MyNzA4ZDhkYzk0ZGRhODEwNWI0Yzk2MGM1
MTU5Njg1NDIwNGYuLjg0ODYyNTE0MDUwN2Q4MGM4MzZkNzE5NTVhMWIzYjZmZGIyOGIyNmQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5oCkBAIC0zMyw2
ICszMyw3IEBACiAjaW5jbHVkZSAiRmV0Y2hCb2R5T3duZXIuaCIKICNpbmNsdWRlICJGZXRjaEhl
YWRlcnMuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlc3BvbnNlLmgiCisjaW5jbHVkZSA8cnVudGlt
ZS9UeXBlZEFycmF5cy5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIGNsYXNzIEFycmF5QnVmZmVyOwpA
QCAtNTksNiArNjAsMTMgQEAgcHVibGljOgogICAgIHVzaW5nIEZldGNoUHJvbWlzZSA9IERPTVBy
b21pc2U8RmV0Y2hSZXNwb25zZT47CiAgICAgc3RhdGljIHZvaWQgZmV0Y2goU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYsIEZldGNoUmVxdWVzdCYsIEZldGNoUHJvbWlzZSYmKTsKIAorICAgIHZvaWQg
Y29uc3VtZSh1bnNpZ25lZCwgRGVmZXJyZWRXcmFwcGVyJiYpOworI2lmIEVOQUJMRShTVFJFQU1T
X0FQSSkKKyAgICB2b2lkIHN0YXJ0Q29uc3VtaW5nU3RyZWFtKHVuc2lnbmVkKTsKKyAgICB2b2lk
IGNvbnN1bWVDaHVuayhSZWY8SlNDOjpVaW50OEFycmF5PiYmKTsKKyAgICB2b2lkIGZpbmlzaENv
bnN1bWluZ1N0cmVhbShEZWZlcnJlZFdyYXBwZXImJik7CisjZW5kaWYKKwogICAgIHZvaWQgc2V0
U3RhdHVzKGludCwgY29uc3QgU3RyaW5nJiwgRXhjZXB0aW9uQ29kZSYpOwogICAgIHZvaWQgaW5p
dGlhbGl6ZVdpdGgoSlNDOjpFeGVjU3RhdGUmLCBKU0M6OkpTVmFsdWUpOwogCkBAIC03MCw3ICs3
OCw3IEBAIHB1YmxpYzoKICAgICBjb25zdCBTdHJpbmcmIHN0YXR1c1RleHQoKSBjb25zdCB7IHJl
dHVybiBtX3Jlc3BvbnNlLmh0dHBTdGF0dXNUZXh0KCk7IH0KIAogICAgIEZldGNoSGVhZGVycyYg
aGVhZGVycygpIHsgcmV0dXJuIG1faGVhZGVyczsgfQotICAgIFJlZlB0cjxGZXRjaFJlc3BvbnNl
PiBjbG9uZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgRXhjZXB0aW9uQ29kZSYpOworICAgIFJl
ZjxGZXRjaFJlc3BvbnNlPiBjbG9uZUZvckpTKCk7CiAKICNpZiBFTkFCTEUoU1RSRUFNU19BUEkp
CiAgICAgUmVhZGFibGVTdHJlYW1Tb3VyY2UqIGNyZWF0ZVJlYWRhYmxlU3RyZWFtU291cmNlKCk7
CkBAIC0xMDUsNyArMTEzLDYgQEAgcHJpdmF0ZToKICAgICAgICAgdm9pZCBkaWRGYWlsKCkgZmlu
YWw7CiAgICAgICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmKSBmaW5hbDsKICAgICAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBjaGFyKiwgc2l6
ZV90KSBmaW5hbDsKLSAgICAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nQXNBcnJheUJ1ZmZlcihS
ZWZQdHI8QXJyYXlCdWZmZXI+JiYpIGZpbmFsOwogCiAgICAgICAgIEZldGNoUmVzcG9uc2UmIG1f
cmVzcG9uc2U7CiAgICAgICAgIE9wdGlvbmFsPEZldGNoUHJvbWlzZT4gbV9wcm9taXNlOwpAQCAt
MTE2LDYgKzEyMyw4IEBAIHByaXZhdGU6CiAgICAgUmVmPEZldGNoSGVhZGVycz4gbV9oZWFkZXJz
OwogICAgIE9wdGlvbmFsPEJvZHlMb2FkZXI+IG1fYm9keUxvYWRlcjsKICAgICBtdXRhYmxlIFN0
cmluZyBtX3Jlc3BvbnNlVVJMOworCisgICAgRmV0Y2hCb2R5Q29uc3VtZXIgbV9jb25zdW1lciB7
IEZldGNoQm9keUNvbnN1bWVyOjpUeXBlOjpBcnJheUJ1ZmZlciAgfTsKIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gv
RmV0Y2hSZXNwb25zZS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVz
cG9uc2UuaWRsCmluZGV4IDNmYjE0ODgxNDM1NGNlN2QxZjg0MDE4MGJjOTkwZGZiMjNkMGE5MmIu
LmJlM2MyY2UwMjkzN2Y2MjM4Zjg2NWQ5MjE5MjI2YjZmYjFkMTcwMWMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5pZGwKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmlkbApAQCAtNTMsMTEgKzUzLDI1
IEBAIGludGVyZmFjZSBGZXRjaFJlc3BvbnNlIHsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgRmV0
Y2hIZWFkZXJzIGhlYWRlcnM7CiAgICAgW0pTQnVpbHRpbl0gcmVhZG9ubHkgYXR0cmlidXRlIFJl
YWRhYmxlU3RyZWFtPyBib2R5OwogCi0gICAgW05ld09iamVjdCwgQ2FsbFdpdGg9U2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCwgUmFpc2VzRXhjZXB0aW9uXSBGZXRjaFJlc3BvbnNlIGNsb25lKCk7Cisg
ICAgLy8gQ29weSBvZiBGZXRjaEJvZHkgSURMIGFzIHdlIHdhbnQgdG8gaW1wbGVtZW50IHNvbWUg
b2YgdGhlc2UgYXMgYnVpbHQtaW5zLgorICAgIFtJbXBsZW1lbnRlZEFzPWlzRGlzdHVyYmVkXSBy
ZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVhbiBib2R5VXNlZDsKKyAgICBbSlNCdWlsdGluXSBQcm9t
aXNlIGFycmF5QnVmZmVyKCk7CisgICAgW0pTQnVpbHRpbl0gUHJvbWlzZSBibG9iKCk7CisgICAg
W0pTQnVpbHRpbl0gUHJvbWlzZSBmb3JtRGF0YSgpOworICAgIFtKU0J1aWx0aW5dIFByb21pc2Ug
anNvbigpOworICAgIFtKU0J1aWx0aW5dIFByb21pc2UgdGV4dCgpOwogCisgICAgW0pTQnVpbHRp
bl0gRmV0Y2hSZXNwb25zZSBjbG9uZSgpOworCisgICAgW1ByaXZhdGVJZGVudGlmaWVyLCBOZXdP
YmplY3RdIEZldGNoUmVzcG9uc2UgY2xvbmVGb3JKUygpOworCisgICAgW0NvbmRpdGlvbmFsPVNU
UkVBTVNfQVBJLCBQcml2YXRlSWRlbnRpZmllcl0gdm9pZCBzdGFydENvbnN1bWluZ1N0cmVhbSh1
bnNpZ25lZCBzaG9ydCB0eXBlKTsKKyAgICBbQ29uZGl0aW9uYWw9U1RSRUFNU19BUEksIFByaXZh
dGVJZGVudGlmaWVyXSB2b2lkIGNvbnN1bWVDaHVuayhVaW50OEFycmF5IGNodW5rKTsKKyAgICBb
Q29uZGl0aW9uYWw9U1RSRUFNU19BUEksIFByaXZhdGVJZGVudGlmaWVyXSBQcm9taXNlIGZpbmlz
aENvbnN1bWluZ1N0cmVhbSgpOworCisgICAgW1ByaXZhdGVJZGVudGlmaWVyXSBQcm9taXNlIGNv
bnN1bWUodW5zaWduZWQgc2hvcnQgdHlwZSk7CiAgICAgW1ByaXZhdGVJZGVudGlmaWVyLCBSYWlz
ZXNFeGNlcHRpb25dIHZvaWQgc2V0U3RhdHVzKHVuc2lnbmVkIHNob3J0IHN0YXR1cywgRE9NU3Ry
aW5nIHN0YXR1c1RleHQpOwogICAgIFtDYWxsV2l0aD1TY3JpcHRTdGF0ZSwgUHJpdmF0ZUlkZW50
aWZpZXJdIHZvaWQgaW5pdGlhbGl6ZVdpdGgoYW55IGJvZHkpOwogICAgIFtQcml2YXRlSWRlbnRp
ZmllciwgTmV3T2JqZWN0XSBSZWFkYWJsZVN0cmVhbVNvdXJjZSBjcmVhdGVSZWFkYWJsZVN0cmVh
bVNvdXJjZSgpOwogICAgIFtQcml2YXRlSWRlbnRpZmllcl0gYm9vbGVhbiBpc0Rpc3R1cmJlZCgp
OwogfTsKLUZldGNoUmVzcG9uc2UgaW1wbGVtZW50cyBGZXRjaEJvZHk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuanMgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuanMKaW5kZXggYzRhY2MwMTAxMWY0YzFl
ZTYzNzBkYzMzNDEzMzlkYjY4NTgxOTAzZS4uMmRhOWFjMmNjZjBlZWNmYzlhOTE5NGJkMTcxZTA3
OTVlZDkwMzJjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRj
aFJlc3BvbnNlLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNw
b25zZS5qcwpAQCAtNDgsNiArNDgsMTIgQEAgZnVuY3Rpb24gaW5pdGlhbGl6ZUZldGNoUmVzcG9u
c2UoYm9keSwgaW5pdCkKICAgICBpZiAoYm9keSAhPT0gQHVuZGVmaW5lZCAmJiBib2R5ICE9PSBu
dWxsKSB7CiAgICAgICAgIGlmIChzdGF0dXMgPT0gMTAxIHx8IHN0YXR1cyA9PSAyMDQgfHwgc3Rh
dHVzID09IDIwNSB8fCBzdGF0dXMgPT0gMzA0KQogICAgICAgICAgICAgdGhyb3cgbmV3IEBUeXBl
RXJyb3IoIlJlc3BvbnNlIGNhbm5vdCBoYXZlIGEgYm9keSB3aXRoIHRoZSBnaXZlbiBzdGF0dXMi
KTsKKworICAgICAgICAvLyBGSVhNRTogVXNlIEBpc1JlYWRhYmxlU3RyZWFtIG9uY2UgaXQgaXMg
bm8gbG9uZ2VyIGd1YXJkZWQgYnkgU1RSRUFNU19BUEkgZ3VhcmQuCisgICAgICAgIGxldCBpc0Jv
ZHlSZWFkYWJsZVN0cmVhbSA9IChAaXNPYmplY3QoYm9keSkgJiYgISFib2R5LkB1bmRlcmx5aW5n
U291cmNlKTsKKyAgICAgICAgaWYgKGlzQm9keVJlYWRhYmxlU3RyZWFtKQorICAgICAgICAgIHRo
aXMuQGJvZHkgPSBib2R5OworCiAgICAgICAgIHRoaXMuQGluaXRpYWxpemVXaXRoKGJvZHkpOwog
ICAgIH0KIApAQCAtNjgsMyArNzQsNzMgQEAgZnVuY3Rpb24gYm9keSgpCiAgICAgfQogICAgIHJl
dHVybiB0aGlzLkBib2R5OwogfQorCitmdW5jdGlvbiBjbG9uZSgpCit7CisgICAgaWYgKCF0aGlz
IGluc3RhbmNlb2YgQFJlc3BvbnNlKQorICAgICAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcigiRnVu
Y3Rpb24gc2hvdWxkIGJlIGNhbGxlZCBvbiBhIFJlc3BvbnNlIik7CisKKyAgICBpZiAoQFJlc3Bv
bnNlLnByb3RvdHlwZS5AaXNEaXN0dXJiZWQuQGNhbGwodGhpcykpCisgICAgICAgIHRocm93IG5l
dyBAVHlwZUVycm9yKCJDYW5ub3QgY2xvbmUgYSBkaXN0dXJiZWQgUmVzcG9uc2UiKTsKKworICAg
IHZhciBjbG9uZWQgPSBAUmVzcG9uc2UucHJvdG90eXBlLkBjbG9uZUZvckpTLkBjYWxsKHRoaXMp
OworICAgIGlmICh0aGlzLkBib2R5KSB7CisgICAgICAgIHZhciB0ZWVkUmVhZGFibGVTdHJlYW1z
ID0gQHRlZVJlYWRhYmxlU3RyZWFtKHRoaXMuQGJvZHksIGZhbHNlKTsKKyAgICAgICAgdGhpcy5A
Ym9keSA9IHRlZWRSZWFkYWJsZVN0cmVhbXNbMF07CisgICAgICAgIGNsb25lZC5AYm9keSA9IHRl
ZWRSZWFkYWJsZVN0cmVhbXNbMV07CisgICAgfQorICAgIHJldHVybiBjbG9uZWQ7Cit9CisKKy8v
IGNvbnN1bWUgYW5kIGNvbnN1bWVTdHJlYW0gc2luZ2xlIHBhcmFtZXRlciBzaG91bGQgYmUga2Vw
dCBpbiBzeW5jIHdpdGggRmV0Y2hCb2R5OjpDb25zdW1lclR5cGUuCitmdW5jdGlvbiBhcnJheUJ1
ZmZlcigpCit7CisgICAgaWYgKCF0aGlzIGluc3RhbmNlb2YgQFJlc3BvbnNlKQorICAgICAgICB0
aHJvdyBuZXcgQFR5cGVFcnJvcigiRnVuY3Rpb24gc2hvdWxkIGJlIGNhbGxlZCBvbiBhIFJlc3Bv
bnNlIik7CisKKyAgICBpZiAoIXRoaXMuQGJvZHkpCisgICAgICAgIHJldHVybiBAUmVzcG9uc2Uu
cHJvdG90eXBlLkBjb25zdW1lLkBjYWxsKHRoaXMsIDEpOworCisgICAgcmV0dXJuIEBjb25zdW1l
U3RyZWFtKHRoaXMsIDEpOworfQorCitmdW5jdGlvbiBibG9iKCkKK3sKKyAgICBpZiAoIXRoaXMg
aW5zdGFuY2VvZiBAUmVzcG9uc2UpCisgICAgICAgIHRocm93IG5ldyBAVHlwZUVycm9yKCJGdW5j
dGlvbiBzaG91bGQgYmUgY2FsbGVkIG9uIGEgUmVzcG9uc2UiKTsKKworICAgIGlmICghdGhpcy5A
Ym9keSkKKyAgICAgICAgcmV0dXJuIEBSZXNwb25zZS5wcm90b3R5cGUuQGNvbnN1bWUuQGNhbGwo
dGhpcywgMik7CisKKyAgICByZXR1cm4gQGNvbnN1bWVTdHJlYW0odGhpcywgMik7Cit9CisKK2Z1
bmN0aW9uIGZvcm1EYXRhKCkKK3sKKyAgICBpZiAoIXRoaXMgaW5zdGFuY2VvZiBAUmVzcG9uc2Up
CisgICAgICAgIHRocm93IG5ldyBAVHlwZUVycm9yKCJGdW5jdGlvbiBzaG91bGQgYmUgY2FsbGVk
IG9uIGEgUmVzcG9uc2UiKTsKKworICAgIHJldHVybiBAUHJvbWlzZS5AcmVqZWN0KCJOb3QgaW1w
bGVtZW50ZWQiKTsKK30KKworZnVuY3Rpb24ganNvbigpCit7CisgICAgaWYgKCF0aGlzIGluc3Rh
bmNlb2YgQFJlc3BvbnNlKQorICAgICAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcigiRnVuY3Rpb24g
c2hvdWxkIGJlIGNhbGxlZCBvbiBhIFJlc3BvbnNlIik7CisKKyAgICBpZiAoIXRoaXMuQGJvZHkp
CisgICAgICAgIHJldHVybiBAUmVzcG9uc2UucHJvdG90eXBlLkBjb25zdW1lLkBjYWxsKHRoaXMs
IDMpOworCisgICAgcmV0dXJuIEBjb25zdW1lU3RyZWFtKHRoaXMsIDMpOworfQorCitmdW5jdGlv
biB0ZXh0KCkKK3sKKyAgICBpZiAoIXRoaXMgaW5zdGFuY2VvZiBAUmVzcG9uc2UpCisgICAgICAg
IHRocm93IG5ldyBAVHlwZUVycm9yKCJGdW5jdGlvbiBzaG91bGQgYmUgY2FsbGVkIG9uIGEgUmVz
cG9uc2UiKTsKKworICAgIGlmICghdGhpcy5AYm9keSkKKyAgICAgICAgcmV0dXJuIEBSZXNwb25z
ZS5wcm90b3R5cGUuQGNvbnN1bWUuQGNhbGwodGhpcywgNCk7CisKKyAgICByZXR1cm4gQGNvbnN1
bWVTdHJlYW0odGhpcywgNCk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNGY1ZThiZjMwMzcxZGU2MTQ3MTk2OGIwOWIyN2Fl
ZTM0N2VlNzY0Ny4uMzRjNGJiYTM0YTg1M2U2OGE0ZDQyOWFmZDkwNmNjYjIzNzQ1OGUwZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpA
QCAtMTYzMSw2ICsxNjMxLDcgQEAKIAkJNDFCRjcwMEYwRkU4NkY2MTAwNUU4REVDIC8qIFBsYXRm
b3JtTWVzc2FnZVBvcnRDaGFubmVsLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQxQkY3MDBEMEZFODZGNjEwMDVFOERFQyAvKiBQbGF0Zm9ybU1lc3Nh
Z2VQb3J0Q2hhbm5lbC5jcHAgKi87IH07CiAJCTQxQkY3MDEwMEZFODZGNjEwMDVFOERFQyAvKiBQ
bGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDFCRjcwMEUwRkU4NkY2MTAwNUU4REVDIC8qIFBsYXRmb3JtTWVz
c2FnZVBvcnRDaGFubmVsLmggKi87IH07CiAJCTQxQzc2MEIxMEVERTAzRDMwMEMxNjU1RiAvKiBT
Y3JpcHRTdGF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDFDNzYwQjAwRURFMDNEMzAwQzE2NTVGIC8qIFNjcmlwdFN0YXRlLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNDFDRjhCRTcxRDQ2MjI2NzAw
NzA3REM5IC8qIEZldGNoQm9keUNvbnN1bWVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxQ0Y4QkU0MUQ0NjIyMjAwMDcwN0RDOSAvKiBGZXRjaEJv
ZHlDb25zdW1lci5jcHAgKi87IH07CiAJCTQxRDAxNUNBMEY0QjVDNzEwMDRBNjYyRiAvKiBDb250
ZW50VHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NDFEMDE1QzgwRjRCNUM3MTAwNEE2NjJGIC8qIENvbnRlbnRUeXBlLmggKi87IH07CiAJCTQxRDAx
NUNCMEY0QjVDNzEwMDRBNjYyRiAvKiBDb250ZW50VHlwZS5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUQwMTVDOTBGNEI1QzcxMDA0QTY2MkYgLyog
Q29udGVudFR5cGUuY3BwICovOyB9OwogCQk0MUUxQjFEMDBGRjU5ODY5MDA1NzZCM0IgLyogQWJz
dHJhY3RXb3JrZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDFFMUIxQ0EwRkY1OTg2OTAwNTc2QjNCIC8qIEFic3RyYWN0V29ya2VyLmNwcCAqLzsg
fTsKQEAgLTY5MDYsOCArNjkwNyw4IEBACiAJCUY5OEZGRjQ1MTFBMjY3NjIwMEY1NDhFOCAvKiBD
U1NPTVV0aWxzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBGOThGRkY0MzExQTI2NzYyMDBGNTQ4RTggLyogQ1NTT01VdGlscy5oICovOyB9OwogCQlGOUYw
RUQ3QTBEQjUwQ0EyMDBEMTZEQjkgLyogWE1MSHR0cFJlcXVlc3RQcm9ncmVzc0V2ZW50LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGOUYwRUQ3NzBEQjUw
Q0EyMDBEMTZEQjkgLyogWE1MSHR0cFJlcXVlc3RQcm9ncmVzc0V2ZW50LmggKi87IH07CiAJCUZB
NjU0QTZCMTEwOEFCRUQwMDI2MTVFMCAvKiBNYXRoTUxUZXh0RWxlbWVudC5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGQTY1NEE2OTExMDhBQkVEMDAy
NjE1RTAgLyogTWF0aE1MVGV4dEVsZW1lbnQuY3BwICovOyB9OwotCQlGQTY1NEE2QzExMDhBQkVE
MDAyNjE1RTAgLyogTWF0aE1MVGV4dEVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZBNjU0QTZBMTEwOEFCRUQwMDI2MTVFMCAvKiBNYXRoTUxU
ZXh0RWxlbWVudC5oICovOyB9OwogCQlGQTY1NEE2QjExMDhBQkVEMDAyNjI2RjEgLyogTWF0aE1M
VW5kZXJPdmVyRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBGQTY1NEE2OTExMDhBQkVEMDAyNjI2RjEgLyogTWF0aE1MVW5kZXJPdmVyRWxl
bWVudC5jcHAgKi87IH07CisJCUZBNjU0QTZDMTEwOEFCRUQwMDI2MTVFMCAvKiBNYXRoTUxUZXh0
RWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RkE2NTRBNkExMTA4QUJFRDAwMjYxNUUwIC8qIE1hdGhNTFRleHRFbGVtZW50LmggKi87IH07CiAJ
CUZBNjU0QTZDMTEwOEFCRUQwMDI2MjZGMSAvKiBNYXRoTUxVbmRlck92ZXJFbGVtZW50LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGQTY1NEE2QTExMDhB
QkVEMDAyNjI2RjEgLyogTWF0aE1MVW5kZXJPdmVyRWxlbWVudC5oICovOyB9OwogCQlGQUJFNzJG
NDEwNTlDMUVCMDBEOTk5REQgLyogTWF0aE1MRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGQUJFNzJFRDEwNTlDMUVCMDBEOTk5REQgLyog
TWF0aE1MRWxlbWVudC5jcHAgKi87IH07CiAJCUZBQkU3MkY1MTA1OUMxRUIwMEQ5OTlERCAvKiBN
YXRoTUxFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBGQUJFNzJFRTEwNTlDMUVCMDBEOTk5REQgLyogTWF0aE1MRWxlbWVudC5oICovOyB9OwpA
QCAtOTIxNSw2ICs5MjE2LDkgQEAKIAkJNDFCRjcwMEQwRkU4NkY2MTAwNUU4REVDIC8qIFBsYXRm
b3JtTWVzc2FnZVBvcnRDaGFubmVsLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
bmFtZSA9IFBsYXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsLmNwcDsgcGF0aCA9IGRlZmF1bHQvUGxh
dGZvcm1NZXNzYWdlUG9ydENoYW5uZWwuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0MUJGNzAwRTBGRTg2RjYxMDA1RThERUMgLyogUGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWwu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gUGxhdGZvcm1NZXNzYWdlUG9ydENo
YW5uZWwuaDsgcGF0aCA9IGRlZmF1bHQvUGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWwuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFDNzYwQjAwRURFMDNEMzAwQzE2NTVGIC8qIFNj
cmlwdFN0YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcmlwdFN0YXRl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxQ0Y4QkU0MUQ0NjIyMjAwMDcwN0RD
OSAvKiBGZXRjaEJvZHlDb25zdW1lci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBGZXRjaEJvZHlDb25zdW1lci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTQxQ0Y4QkU1MUQ0NjIyMjAwMDcwN0RDOSAvKiBGZXRjaEJvZHlDb25zdW1lci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGZXRjaEJvZHlDb25zdW1lci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk0MUNGOEJFNjFENDYyMjJDMDA3MDdEQzkgLyogRmV0Y2hJ
bnRlcm5hbHMuanMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmphdmFzY3JpcHQ7IHBhdGggPSBGZXRj
aEludGVybmFscy5qczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFEMDE1QzgwRjRC
NUM3MTAwNEE2NjJGIC8qIENvbnRlbnRUeXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IENvbnRlbnRUeXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxRDAx
NUM5MEY0QjVDNzEwMDRBNjYyRiAvKiBDb250ZW50VHlwZS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBDb250ZW50VHlwZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTQxRTFCMUNBMEZGNTk4NjkwMDU3NkIzQiAvKiBBYnN0cmFjdFdvcmtlci5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBYnN0cmFjdFdvcmtlci5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMzQwOCw4ICsxMzQxMiw4IEBACiAJCUI1
N0NCNTJDMTgyQTNFRUQwMDc5QTY0NyAvKiBJbmxpbmVFbGVtZW50Qm94LmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IElubGluZUVsZW1lbnRCb3guY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlCNTk1RkY0NjE4MjRDRUUzMDBGRjUxQ0QgLyogUmVuZGVy
SXRlcmF0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVuZGVySXRlcmF0
b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjU5Q0E1OUFGMTcwRDhGQUE1QjhD
OUFEIC8qIE1hdGhNTFNjcmlwdHNFbGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IE1hdGhNTFNjcmlwdHNFbGVtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJQjU5Q0E4NDlENDFFNkY2NUQ4MTE5N0FCIC8qIE1hdGhNTFNjcmlwdHNFbGVt
ZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1hdGhNTFNjcmlwdHNFbGVt
ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUI1OUNBNTlBRjE3MEQ4RkFBNUI4
Q0FCRSAvKiBNYXRoTUxQYWRkZWRFbGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IE1hdGhNTFBhZGRlZEVsZW1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlCNTlDQTg0OUQ0MUU2RjY1RDgxMTk3QUIgLyogTWF0aE1MU2NyaXB0c0VsZW1l
bnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWF0aE1MU2NyaXB0c0VsZW1l
bnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjU5Q0E4NDlENDFFNkY2NUQ4MTE5
OEJDIC8qIE1hdGhNTFBhZGRlZEVsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gTWF0aE1MUGFkZGVkRWxlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlCNTlERDY5NzExOTAyOUU1MDA3RTk2ODQgLyogSlNEYXRhYmFzZUNhbGxiYWNrLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRGF0YWJhc2VDYWxsYmFjay5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlCNTlERDY5ODExOTAyOUU1MDA3RTk2ODQgLyogSlNEYXRh
YmFzZUNhbGxiYWNrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpT
RGF0YWJhc2VDYWxsYmFjay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNTA4
Niw4ICsxNTA5MCw4IEBACiAJCUZBNjU0QTYzMTEwOEFCQjcwMDI2MTVFMCAvKiBtYXRobWwuY3Nz
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dC5jc3M7IHBhdGggPSBtYXRobWwuY3NzOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlGQTY1NEE2NzExMDhBQkUyMDAyNjE1RTAgLyogbWF0aGF0dHJzLmluICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gdGV4dDsgcGF0aCA9IG1hdGhhdHRycy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJRkE2NTRBNjkxMTA4QUJFRDAwMjYxNUUwIC8qIE1hdGhNTFRleHRFbGVtZW50LmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1hdGhNTFRleHRFbGVtZW50
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRkE2NTRBNkExMTA4QUJFRDAwMjYx
NUUwIC8qIE1hdGhNTFRleHRFbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IE1hdGhNTFRleHRFbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZB
NjU0QTY5MTEwOEFCRUQwMDI2MjZGMSAvKiBNYXRoTUxVbmRlck92ZXJFbGVtZW50LmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1hdGhNTFVuZGVyT3ZlckVsZW1lbnQu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGQTY1NEE2QTExMDhBQkVEMDAyNjE1
RTAgLyogTWF0aE1MVGV4dEVsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gTWF0aE1MVGV4dEVsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkE2
NTRBNkExMTA4QUJFRDAwMjYyNkYxIC8qIE1hdGhNTFVuZGVyT3ZlckVsZW1lbnQuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWF0aE1MVW5kZXJPdmVyRWxlbWVudC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGQTZFNDY2RkNEMDQxOEE5OTY2QTVCNjAgLyogRE5T
UmVzb2x2ZVF1ZXVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEROU1Jlc29s
dmVRdWV1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGQUJFNzJFRDEwNTlDMUVC
MDBEOTk5REQgLyogTWF0aE1MRWxlbWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBNYXRoTUxFbGVtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTE3MDkyLDEyICsxNzA5NiwxNSBAQAogCQkJCTQxRjU0RjdEMUM1MEM0RjYwMDMzODQ4OCAv
KiBGZXRjaEJvZHkuY3BwICovLAogCQkJCTQxRjU0RjdFMUM1MEM0RjYwMDMzODQ4OCAvKiBGZXRj
aEJvZHkuaCAqLywKIAkJCQk0MUY1NEY3RjFDNTBDNEY2MDAzMzg0ODggLyogRmV0Y2hCb2R5Lmlk
bCAqLywKKwkJCQk0MUNGOEJFNDFENDYyMjIwMDA3MDdEQzkgLyogRmV0Y2hCb2R5Q29uc3VtZXIu
Y3BwICovLAorCQkJCTQxQ0Y4QkU1MUQ0NjIyMjAwMDcwN0RDOSAvKiBGZXRjaEJvZHlDb25zdW1l
ci5oICovLAogCQkJCTQxNDdFMkIzMUM4OTkxMjYwMEE3RTcxNSAvKiBGZXRjaEJvZHlPd25lci5j
cHAgKi8sCiAJCQkJNDE0N0UyQjIxQzg4MzM3RjAwQTdFNzE1IC8qIEZldGNoQm9keU93bmVyLmgg
Ki8sCiAJCQkJNDFGNTRGODIxQzUwQzRGNjAwMzM4NDg4IC8qIEZldGNoSGVhZGVycy5jcHAgKi8s
CiAJCQkJNDFGNTRGODMxQzUwQzRGNjAwMzM4NDg4IC8qIEZldGNoSGVhZGVycy5oICovLAogCQkJ
CTQxRjU0Rjg0MUM1MEM0RjYwMDMzODQ4OCAvKiBGZXRjaEhlYWRlcnMuaWRsICovLAogCQkJCTQx
RjU0Rjg1MUM1MEM0RjYwMDMzODQ4OCAvKiBGZXRjaEhlYWRlcnMuanMgKi8sCisJCQkJNDFDRjhC
RTYxRDQ2MjIyQzAwNzA3REM5IC8qIEZldGNoSW50ZXJuYWxzLmpzICovLAogCQkJCTQxNDdFMkI0
MUM4OTkxMjYwMEE3RTcxNSAvKiBGZXRjaExvYWRlci5jcHAgKi8sCiAJCQkJNDE0N0UyQjUxQzg5
OTEyNjAwQTdFNzE1IC8qIEZldGNoTG9hZGVyLmggKi8sCiAJCQkJNDE0N0UyQjYxQzg5OTEyNjAw
QTdFNzE1IC8qIEZldGNoTG9hZGVyQ2xpZW50LmggKi8sCkBAIC0zMDc1OSw2ICszMDc2Niw3IEBA
CiAJCQkJQkMwNkVERTMwQkZENkQwRDAwODU2RTlEIC8qIEpTSFRNTFRhYmxlQ2VsbEVsZW1lbnQu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkMwNkVEOUQwQkZENjYwNjAwODU2RTlEIC8qIEpTSFRN
TFRhYmxlQ29sRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzA2RUUwNDBCRkQ3MUFB
MDA4NTZFOUQgLyogSlNIVE1MVGFibGVFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTQx
Q0Y4QkU3MUQ0NjIyNjcwMDcwN0RDOSAvKiBGZXRjaEJvZHlDb25zdW1lci5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlCQzA2RUQ5RjBCRkQ2NjA2MDA4NTZFOUQgLyogSlNIVE1MVGFibGVSb3dFbGVt
ZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDMDZFRDA2MEJGRDVCQUUwMDg1NkU5RCAvKiBK
U0hUTUxUYWJsZVNlY3Rpb25FbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUQ2NDg5RDI1
MTY2RkZDRjEwMDdDMDMxQiAvKiBKU0hUTUxUZW1wbGF0ZUVsZW1lbnQuY3BwIGluIFNvdXJjZXMg
Ki8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVByb21pc2Uu
aCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NUHJvbWlzZS5oCmluZGV4IDEyNzVh
MzJlNjc4ZGRkOGJlY2EyNTRiZDFkNmQ0ZDE5ZjAyNGMyODcuLjRlMjJlMzM0ZmYzNzZhZDM4NDli
ZjBkMTA5OTliOTdiZDlkOWJjODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRE9NUHJvbWlzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9N
UHJvbWlzZS5oCkBAIC0xMTgsNiArMTE4LDggQEAgcHVibGljOgogICAgIHRlbXBsYXRlPGNsYXNz
IFJlamVjdFJlc3VsdFR5cGU+IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPFByb21pc2VSZXN1bHRJ
bnNwZWN0b3I8UmVqZWN0UmVzdWx0VHlwZT46OnBhc3NCeUNvbnN0UmVmLCB2b2lkPjo6dHlwZQog
ICAgIHJlamVjdChjb25zdCBSZWplY3RSZXN1bHRUeXBlJiByZXN1bHQpIHsgcmVqZWN0V2l0aFZh
bHVlKHJlc3VsdCk7IH0KIAorICAgIHRlbXBsYXRlPGNsYXNzIFJlc29sdmVSZXN1bHRUeXBlPiB2
b2lkIHJlc29sdmVXaXRoTmV3bHlDcmVhdGVkKFJlZjxSZXNvbHZlUmVzdWx0VHlwZT4mJik7CisK
ICAgICB2b2lkIHJlamVjdChFeGNlcHRpb25Db2RlLCBjb25zdCBTdHJpbmcmID0geyB9KTsKIAog
ICAgIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QoKSBjb25zdDsKQEAgLTE4MSw2ICsx
ODMsMTYgQEAgaW5saW5lIHZvaWQgRGVmZXJyZWRXcmFwcGVyOjpyZXNvbHZlV2l0aFZhbHVlKFJl
c29sdmVSZXN1bHRUeXBlJiYgcmVzdWx0KQogICAgIHJlc29sdmUoKmV4ZWMsIHRvSlMoZXhlYywg
bV9nbG9iYWxPYmplY3QuZ2V0KCksIHN0ZDo6Zm9yd2FyZDxSZXNvbHZlUmVzdWx0VHlwZT4ocmVz
dWx0KSkpOwogfQogCit0ZW1wbGF0ZTxjbGFzcyBSZXNvbHZlUmVzdWx0VHlwZT4KK2lubGluZSB2
b2lkIERlZmVycmVkV3JhcHBlcjo6cmVzb2x2ZVdpdGhOZXdseUNyZWF0ZWQoUmVmPFJlc29sdmVS
ZXN1bHRUeXBlPiYmIHJlc3VsdCkKK3sKKyAgICBBU1NFUlQobV9kZWZlcnJlZCk7CisgICAgQVNT
RVJUKG1fZ2xvYmFsT2JqZWN0KTsKKyAgICBKU0M6OkV4ZWNTdGF0ZSogZXhlYyA9IG1fZ2xvYmFs
T2JqZWN0LT5nbG9iYWxFeGVjKCk7CisgICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9ja2VyKGV4ZWMp
OworICAgIHJlc29sdmUoKmV4ZWMsIHRvSlNOZXdseUNyZWF0ZWQoZXhlYywgbV9nbG9iYWxPYmpl
Y3QuZ2V0KCksIFdURk1vdmUocmVzdWx0KSkpOworfQorCiB0ZW1wbGF0ZTxjbGFzcyBSZWplY3RS
ZXN1bHRUeXBlPgogaW5saW5lIHZvaWQgRGVmZXJyZWRXcmFwcGVyOjpyZWplY3RXaXRoVmFsdWUo
UmVqZWN0UmVzdWx0VHlwZSYmIHJlc3VsdCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1dlYkNvcmVCdWlsdGluTmFtZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1dlYkNvcmVCdWlsdGluTmFtZXMuaAppbmRleCBhNWFkZDk0YjIwOWEyNjkzYmVjMzUx
Yzk4ZmZjNWNlMjhhNzYxYmUyLi4zMDAwNzJkNjZmOTQ4YTIzNjM1YzM0MGIxYTVlNWM1YzMwNGQx
OWU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XZWJDb3JlQnVpbHRp
bk5hbWVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2ViQ29yZUJ1aWx0aW5O
YW1lcy5oCkBAIC01Myw2ICs1MywxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgbWFjcm8o
bG9jYWxTdHJlYW1zKSBcCiAgICAgbWFjcm8ob3BlcmF0aW9ucykgXAogICAgIG1hY3JvKG93bmVy
UmVhZGFibGVTdHJlYW0pIFwKKyAgICBtYWNybyhjbG9uZUZvckpTKSBcCisgICAgbWFjcm8oY29u
c3VtZSkgXAorICAgIG1hY3JvKGNvbnN1bWVDaHVuaykgXAorICAgIG1hY3JvKGZpbmlzaENvbnN1
bWluZ1N0cmVhbSkgXAogICAgIG1hY3JvKHByaXZhdGVHZXRTdGF0cykgXAogICAgIG1hY3JvKHB1
bGxpbmcpIFwKICAgICBtYWNybyhwdWxsQWdhaW4pIFwKQEAgLTcyLDYgKzc2LDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgIG1hY3JvKHNldEJvZHkpIFwKICAgICBtYWNybyhzZXRTdGF0dXMp
IFwKICAgICBtYWNybyhzdGF0ZSkgXAorICAgIG1hY3JvKHN0YXJ0Q29uc3VtaW5nU3RyZWFtKSBc
CiAgICAgbWFjcm8oc3RhcnRlZCkgXAogICAgIG1hY3JvKHN0YXJ0ZWRQcm9taXNlKSBcCiAgICAg
bWFjcm8oc3RvcmVkRXJyb3IpIFwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCmluZGV4IDQ3
N2IwYzYyYzVlZGU2NmViOTQxZTU2Njk0OGZmOWE0NGY2ODhiZmYuLjU2NjY3NjNkMTk1ZjFhYzk2
ZDU2MTBhYTY0MTIxZGEzNDI2ZmIxNzAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDE0IEBACisyMDE2LTA3LTI1ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxl
LmNvbT4KKworICAgICAgICBbRmV0Y2ggQVBJXSBSZXNwb25zZSBjb25zdHJ1Y3RvciBzaG91bGQg
YmUgYWJsZSB0byB0YWtlIGEgUmVhZGFibGVTdHJlYW0gYXMgYm9keQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU5ODA0CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvZmV0
Y2gvYXBpL3Jlc3BvbnNlL3Jlc3BvbnNlLWNvbnN1bWUtZW1wdHktZXhwZWN0ZWQudHh0OgorICAg
ICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkvcmVzcG9uc2UvcmVzcG9uc2UtY29u
c3VtZS1leHBlY3RlZC50eHQ6CisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNoL2Fw
aS9yZXNwb25zZS9yZXNwb25zZS1jb25zdW1lLmh0bWw6IFVwZGF0aW5nIHRlc3QgdG8gZXhlcmNp
Y2UgUmVzcG9uc2UgY29vbnN0cnVjdG9yIHdpdGggYSBSZWFkYWJsZVN0cmVhbS4KKwogMjAxNi0w
Ny0yNCAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgW0ZldGNo
IEFQSV0gUmVxdWVzdCBzaG91bGQgYmUgY3JlYXRlZCB3aXRoIGFueSBIZWFkZXJzSW5pdCBkYXRh
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2ZldGNoL2FwaS9yZXNwb25zZS9yZXNwb25zZS1jb25zdW1lLWVtcHR5LWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZmV0Y2gvYXBpL3Jl
c3BvbnNlL3Jlc3BvbnNlLWNvbnN1bWUtZW1wdHktZXhwZWN0ZWQudHh0CmluZGV4IDY3MDRkZTFh
NDQyZTVmMWZkNzI1YjBjZWUyMmM3ZjA3MzdhNWU1ODYuLmU5Njc5NTE4YmQ5YzAzMDk0ZDhmZmZj
ZjlmY2Y4MmRkMTc3YmM3Y2YgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvZmV0Y2gvYXBpL3Jlc3BvbnNlL3Jlc3BvbnNlLWNvbnN1bWUtZW1w
dHktZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvZmV0Y2gvYXBpL3Jlc3BvbnNlL3Jlc3BvbnNlLWNvbnN1bWUtZW1wdHktZXhwZWN0
ZWQudHh0CkBAIC0zLDcgKzMsNyBAQCBQQVNTIENvbnN1bWUgcmVzcG9uc2UncyBib2R5IGFzIHRl
eHQKIFBBU1MgQ29uc3VtZSByZXNwb25zZSdzIGJvZHkgYXMgYmxvYiAKIFBBU1MgQ29uc3VtZSBy
ZXNwb25zZSdzIGJvZHkgYXMgYXJyYXlCdWZmZXIgCiBQQVNTIENvbnN1bWUgcmVzcG9uc2UncyBi
b2R5IGFzIGpzb24gCi1GQUlMIENvbnN1bWUgcmVzcG9uc2UncyBib2R5IGFzIGZvcm1EYXRhIHBy
b21pc2VfdGVzdDogVW5oYW5kbGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiB1bmRlZmluZWQKK0ZB
SUwgQ29uc3VtZSByZXNwb25zZSdzIGJvZHkgYXMgZm9ybURhdGEgcHJvbWlzZV90ZXN0OiBVbmhh
bmRsZWQgcmVqZWN0aW9uIHdpdGggdmFsdWU6ICJOb3QgaW1wbGVtZW50ZWQiCiBQQVNTIENvbnN1
bWUgZW1wdHkgYmxvYiByZXNwb25zZSBib2R5IGFzIGFycmF5QnVmZmVyIAogUEFTUyBDb25zdW1l
IGVtcHR5IHRleHQgcmVzcG9uc2UgYm9keSBhcyBhcnJheUJ1ZmZlciAKIFBBU1MgQ29uc3VtZSBl
bXB0eSBibG9iIHJlc3BvbnNlIGJvZHkgYXMgdGV4dCAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZmV0Y2gvYXBpL3Jlc3BvbnNlL3Jlc3Bv
bnNlLWNvbnN1bWUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkvcmVzcG9uc2UvcmVzcG9uc2UtY29uc3VtZS1leHBlY3Rl
ZC50eHQKaW5kZXggZDA4OGE2OWE4Y2U0MmEyZmEwYTFjOTIwOTlkODZhNmJmYTU3ZTZkOC4uNDE2
YTM5MmNlNmFkNmNhYjY4ZTI3MWRkMDRhMTlhMmVlNTAyMDNlZSAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkvcmVzcG9uc2Uv
cmVzcG9uc2UtY29uc3VtZS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkvcmVzcG9uc2UvcmVzcG9uc2UtY29uc3Vt
ZS1leHBlY3RlZC50eHQKQEAgLTMsOSArMywxMyBAQCBQQVNTIENvbnN1bWUgcmVzcG9uc2UncyBi
b2R5IGFzIHRleHQKIFBBU1MgQ29uc3VtZSByZXNwb25zZSdzIGJvZHkgYXMgYmxvYiAKIFBBU1Mg
Q29uc3VtZSByZXNwb25zZSdzIGJvZHkgYXMgYXJyYXlCdWZmZXIgCiBQQVNTIENvbnN1bWUgcmVz
cG9uc2UncyBib2R5IGFzIGpzb24gCi1GQUlMIENvbnN1bWUgcmVzcG9uc2UncyBib2R5IGFzIGZv
cm1EYXRhIHByb21pc2VfdGVzdDogVW5oYW5kbGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiB1bmRl
ZmluZWQKK0ZBSUwgQ29uc3VtZSByZXNwb25zZSdzIGJvZHkgYXMgZm9ybURhdGEgcHJvbWlzZV90
ZXN0OiBVbmhhbmRsZWQgcmVqZWN0aW9uIHdpdGggdmFsdWU6ICJOb3QgaW1wbGVtZW50ZWQiCiBQ
QVNTIENvbnN1bWUgYmxvYiByZXNwb25zZSdzIGJvZHkgYXMgYmxvYiAKIFBBU1MgQ29uc3VtZSBi
bG9iIHJlc3BvbnNlJ3MgYm9keSBhcyB0ZXh0IAogUEFTUyBDb25zdW1lIGJsb2IgcmVzcG9uc2Un
cyBib2R5IGFzIGpzb24gCiBQQVNTIENvbnN1bWUgYmxvYiByZXNwb25zZSdzIGJvZHkgYXMgYXJy
YXlCdWZmZXIgCitQQVNTIENvbnN1bWUgc3RyZWFtIHJlc3BvbnNlJ3MgYm9keSBhcyBibG9iIAor
UEFTUyBDb25zdW1lIHN0cmVhbSByZXNwb25zZSdzIGJvZHkgYXMgdGV4dCAKK1BBU1MgQ29uc3Vt
ZSBzdHJlYW0gcmVzcG9uc2UncyBib2R5IGFzIGpzb24gCitQQVNTIENvbnN1bWUgc3RyZWFtIHJl
c3BvbnNlJ3MgYm9keSBhcyBhcnJheUJ1ZmZlciAKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkvcmVzcG9uc2UvcmVzcG9u
c2UtY29uc3VtZS5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9mZXRjaC9hcGkvcmVzcG9uc2UvcmVzcG9uc2UtY29uc3VtZS5odG1sCmluZGV4IDAyODE0
ZmY1YmU5MjZiZTczODI2NGJhOTEwNzBiZDIzNjlkNTQ2OTEuLjk5NDEwY2Q0NDhhYjhiZDY0Nzkw
MTg3MDA0ZWZkMzRiMWM5OWFiNDkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvZmV0Y2gvYXBpL3Jlc3BvbnNlL3Jlc3BvbnNlLWNvbnN1bWUu
aHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Zl
dGNoL2FwaS9yZXNwb25zZS9yZXNwb25zZS1jb25zdW1lLmh0bWwKQEAgLTkyLDYgKzkyLDI1IEBA
CiAgICAgY2hlY2tCbG9iUmVzcG9uc2VCb2R5KGJsb2IsIHRleHREYXRhLCAianNvbiIsIGNoZWNr
Qm9keUpTT04pOwogICAgIGNoZWNrQmxvYlJlc3BvbnNlQm9keShibG9iLCB0ZXh0RGF0YSwgImFy
cmF5QnVmZmVyIiwgY2hlY2tCb2R5QXJyYXlCdWZmZXIpOwogCisgICAgZnVuY3Rpb24gY2hlY2tS
ZWFkYWJsZVN0cmVhbVJlc3BvbnNlQm9keShzdHJlYW1EYXRhLCBib2R5VHlwZSwgY2hlY2tGdW5j
dGlvbikgeworICAgICAgcHJvbWlzZV90ZXN0KGZ1bmN0aW9uKHRlc3QpIHsKKyAgICAgICAgdmFy
IHN0cmVhbSA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgICAgICAgc3RhcnQ6IGZ1bmN0aW9u
KGNvbnRyb2xsZXIpIHsKKyAgICAgICAgICAgIGNvbnRyb2xsZXIuZW5xdWV1ZSgoc3RyaW5nVG9B
cnJheShzdHJlYW1EYXRhKSkpOworICAgICAgICAgICAgY29udHJvbGxlci5jbG9zZSgpOworICAg
ICAgICAgIH0KKyAgICAgICAgfSk7CisgICAgICAgIHZhciByZXNwb25zZSA9IG5ldyBSZXNwb25z
ZShzdHJlYW0pOworICAgICAgICBhc3NlcnRfZmFsc2UocmVzcG9uc2UuYm9keVVzZWQsICJib2R5
VXNlZCBpcyBmYWxzZSBhdCBpbml0Iik7CisgICAgICAgIHJldHVybiBjaGVja0Z1bmN0aW9uKHJl
c3BvbnNlLCBzdHJlYW1EYXRhKTsKKyAgICAgIH0sICJDb25zdW1lIHN0cmVhbSByZXNwb25zZSdz
IGJvZHkgYXMgIiArIGJvZHlUeXBlKTsKKyAgICB9CisKKyAgICBjaGVja1JlYWRhYmxlU3RyZWFt
UmVzcG9uc2VCb2R5KHRleHREYXRhLCAiYmxvYiIsIGNoZWNrQm9keUJsb2IpOworICAgIGNoZWNr
UmVhZGFibGVTdHJlYW1SZXNwb25zZUJvZHkodGV4dERhdGEsICJ0ZXh0IiwgY2hlY2tCb2R5VGV4
dCk7CisgICAgY2hlY2tSZWFkYWJsZVN0cmVhbVJlc3BvbnNlQm9keSh0ZXh0RGF0YSwgImpzb24i
LCBjaGVja0JvZHlKU09OKTsKKyAgICBjaGVja1JlYWRhYmxlU3RyZWFtUmVzcG9uc2VCb2R5KHRl
eHREYXRhLCAiYXJyYXlCdWZmZXIiLCBjaGVja0JvZHlBcnJheUJ1ZmZlcik7CisKICAgICA8L3Nj
cmlwdD4KICAgPC9ib2R5PgogPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>284498</attachid>
            <date>2016-07-25 10:21:31 -0700</date>
            <delta_ts>2016-07-25 13:32:47 -0700</delta_ts>
            <desc>Fixing Debug build</desc>
            <filename>bug-159804-20160725192023.patch</filename>
            <type>text/plain</type>
            <size>64419</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAzNjgzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmE2ZGJmOTIzODAxOTFi
ZTk5ZThkZTlkYjNiOGRjNTY3YmY1MzIyMy4uZTdhMGVhNzA3OGYxZTFmMzkyOTBhNTIwZDhhNmI0
MDE3ZDQwOGIzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyNyBAQAorMjAxNi0wNy0yNSAgWW91
ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAgICAgW0ZldGNoIEFQSV0gUmVz
cG9uc2UgY29uc3RydWN0b3Igc2hvdWxkIGJlIGFibGUgdG8gdGFrZSBhIFJlYWRhYmxlU3RyZWFt
IGFzIGJvZHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE1OTgwNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IENvdmVyZWQgYnkgZXhpc3RpbmcgYW5kIHVwZGF0ZWQgdGVzdHMuCisKKyAgICAgICAgSW50cm9k
dWNlZCBGZXRjaEJvZHlDb25zdW1lciB0byBlbmNhcHN1bGF0ZSB0aGUgY29kZSByZXNwb25zaWJs
ZSB0byBhZGFwdCBGZXRjaEJvZHkgaW50ZXJuYWwgZGF0YSB0byB0aGUgcmVxdWVzdHMgbWFkZSBi
eSB1c2VyIHNjcmlwdHMuCisgICAgICAgIFRoaXMgcmVmYWN0b3JpbmcgZWFzZXMgdGhlIGhhbmRs
aW5nIG9mIGludGVybmFsIGRhdGEgY29taW5nIGZyb20gUmVhZGFibGVTdHJlYW0uCisKKyAgICAg
ICAgRmV0Y2hMb2FkZXIgaXMgbm93IGRlbGVnYXRpbmcgY29udmVyc2lvbiBmcm9tIHRoZSBkYXRh
IHRvIGl0cyBtX2NvbnN1bWVyIGZpZWxkLgorICAgICAgICBJZiBtX2NvbnN1bWVyIGlzIG51bGws
IEZldGNoTG9hZGVyIGNhbGxzIEZldGNoTG9hZGVyQ2xpZW50OjpkaWRSZWNlaXZlRGF0YSAoc3Ry
ZWFtaW5nIHJlY2VwdGlvbiBtb2RlKS4KKyAgICAgICAgQ2xpZW50cyBvZiBGZXRjaExvYWRlciBu
ZWVkcyB0byBvYXNzIGEgRmV0Y2hCb2R5Q29uc3VtZXIgdG8gdGhlIEZldGNoTG9hZGVyIHRvIGRv
IHRoZSBkYXRhIGFkYXB0YXRpb24gYXQgbG9hZGVyIGNyZWF0aW9uIHRpbWUuCisKKyAgICAgICAg
QWRkZWQgc3VwcG9ydCBmb3IgYm9keSBkYXRhIHBhc3NlZCBhcyBhIFJlYWRhYmxlU3RyZWFtIHRv
IFJlc3BvbnNlLgorICAgICAgICBUaGlzIHJlcXVpcmVzIHRvIHNldCBAYm9keSBpbnRlcm5hbCBz
bG90IG9mIHRoZSBSZXNwb25zZSBvYmplY3QgaW4gdGhlIGNvbnN0cnVjdG9yIGluaXRpYWxpemF0
aW9uIEpTIGJ1aWx0LWluLgorCisgICAgICAgIFRvIGFjdHVhbGx5IHVzZSB0aGF0IGRhdGEsIEJv
ZHkgYWNjZXNzb3JzIGFyZSBhbHNvIGltcGxlbWVudGVkIGFzIEpTIGJ1aWx0LWluIGZvciBSZXNw
b25zZS4KKyAgICAgICAgU2luY2UgdGhlcmUgaXMgbm8gbmVlZCB0byBkbyBzbyBmb3IgUmVxdWVz
dCwgRmV0Y2hSZXNwb25zZSBpcyBubyBsb25nZXIgbWFya2VkIGFzIGltcGxlbWVudGluZyBGZXRj
aEJvZHkgYnV0IGFsbAorICAgICAgICBGZXRjaEJvZHkgSURMIGRlc2NyaXB0aW9uIGlzIGlubGlu
ZWQgaW4gRmV0Y2hSZXNwb25zZS5pZGwuCisKKyAgICAgICAgRm9yIGVhY2ggYm9keSBhY2Nlc3Nv
ciAoYXJyYXlCdWZmZXIsIGJsb2IsIGpzb24sIHRleHQpLCB0aGUgY29ycmVzcG9uZGluZyBKUyBi
dWlsdC1pbiBjaGVja3Mgd2hldGhlciBAYm9keSBpbnRlcm5hbCBzbG90IGlzIHNldC4KKyAgICAg
ICAgSWYgdGhhdCBpcyBub3QgdGhlIGNhc2UsIHJlZ3VsYXIgaGFuZGxpbmcgaXMgZG9uZSB0aHJv
dWdoIGEgbmV3IHByaXZhdGUgbWV0aG9kIGNhbGxlZCBAY29uc3VtZS4KKyAgICAgICAgSWYgQGJv
ZHkgaW50ZXJuYWwgc2xvdCBpcyBzZXQsIGNodW5rcyBhcmUgcHVtcGVkIGZyb20gdGhlIFJlYWRh
YmxlU3RyZWFtIHVzaW5nIFJlYWRhYmxlU3RyZWFtIGludGVybmFsIGJ1aWx0LWlucyBmdW5jdGlv
bnMuCisgICAgICAgIERhdGEgaGFuZGxpbmcgaXMgZG9uZSBpbiBDKysgdGhyb3VnaCB0aGUgcHJp
dmF0ZSBtZXRob2RzIEBzdGFydENvbnN1bWluZ1N0cmVhbSwgQGNvbnN1bWVDaHVuayBhbmQgQGZp
bmlzaENvbnN1bWluZ1N0cmVhbS4KKworICAgICAgICBUbyBzdXBwb3J0IGNsb25pbmcgb2YgUmVz
cG9uc2Ugd2l0aCBib2RpZXMsIGNsb25lIG1ldGhvZCBpcyBhbHNvIGltcGxlbWVudGVkIGFzIGEg
SlMgYnVpbHQtaW4uCisgICAgICAgIE1haW4gY2xvbmUgaXMgZG9uZSB0aHJvdWdoIEBjbG9uZUZv
SlMgcHJpdmF0ZSBtZXRob2QgaW1wbGVtZW50ZWQgaW4gQysrLgorICAgICAgICBKUyBidWlsdC1p
biBjbG9uZSBjb2RlIGRvZXMgdGhlIHRlZWluZyBvZiB0aGUgUmVhZGFibGVTdHJlYW0gdXNpbmcg
UmVhZGFibGVTdHJlYW0gSlMgYnVpbHQtaW4gaW50ZXJuYWwgZnVuY3Rpb25zLgorCisgICAgICAg
IEludHJvZHVjaW5nIGEgbmV3IFJlYWRhYmxlU3RyZWFtIHR5cGUgZm9yIEZldGNoQm9keSB0byBj
b3BlIHdpdGggYm9keSBiZWluZyBzdG9yZWQgaW4gYSBSZWFkYWJsZVN0cmVhbS4KKworICAgICAg
ICBJbnRyb2R1Y2luZyBhIG5ldyBMb2FkZWQgdHlwZSBmb3IgRmV0Y2hCb2R5IHRvIGNvcGUgd2l0
aCBib2R5IGJlaW5nIHN0b3JlZCBpbiB0aGUgRmV0Y2hCb2R5Q29uc3VtZXIgb3duZWQgYnkgRmV0
Y2hCb2R5LgorICAgICAgICBUaGlzIGFsbG93cyByZW1vdmluZyB0aGUgY29udmVyc2lvbiBvZiBk
YXRhIHRvIEpTQzo6QXJyYXlCdWZmZXIgd2hpY2ggd2FzIGRvbmUgYnkgZGVmYXV0IGF0IHRoZSBl
bmQgb2YgRmV0Y2ggbG9hZGluZyBpZiB1c2VyIHNjcmlwdCBkaWQgbm90IHJlcXVlc3QgZGF0YSBi
ZWZvcmUuCisgICAgICAgIEF0IHRoZSBlbmQgb2YgYSBsb2FkLCB0aGUgZGF0YSByZW1haW5zIGlu
IEZldGNoQm9keUNvbnN1bWVyIGFuZCB0aGUgYm9keSBpcyBtYXJrZWQgYXMgTG9hZGVkLgorICAg
ICAgICBJZiB0aGUgdXNlciB3YW50cyB0byBnZXQgdGhlIGRhdGEgYWZ0ZXIgZGF0YSBmaW5pc2hl
ZCBiZWluZyBsb2FkZWQsIEZldGNoQm9keUNvbnN1bWVyIHdpbGwgZG8gdGhlIHJlcXVpcmVkIGNv
bnZlcnNpb25zLgorCisgICAgICAgIEludHJvZHVjaW5nIERlZmVycmVkV3JhcHBlcjo6cmVzb2x2
ZVdpdGhOZXdWYWx1ZSB0byBoYW5kbGUgdGhlIGNhc2Ugb2YgcmVzb2x2aW5nIHByb21pc2VzIHdp
dGggbmV3IG9iamVjdHMuCisgICAgICAgIFRoaXMgYWxsb3dzIGRpcmVjdGx5IHVzaW5nIHRvSlNO
ZXdseUNyZWF0ZWQgaW5zdGVhZCBvZiB0b0pTLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6
IEFkZGluZyBGZXRjaEJvZHlDb25zdW1lci4KKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNo
Qm9keS5jcHA6IE1vdmluZyBkYXRhIGFkYXB0YXRpb24gY29kZSB0byBGZXRjaEJvZHlDb25zdW1l
ci4KKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keTo6ZXh0cmFjdCk6CisgICAgICAgIChXZWJD
b3JlOjpGZXRjaEJvZHk6OmFycmF5QnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9k
eTo6YmxvYik6IFNldHRpbmcgY29udGVudFR5cGUgaW4gRmV0Y2hCb2R5Q29uc3VtZXIgdG8gaGFu
ZGxlIHByb3BlciBjcmVhdGlvbiBvZiBibG9iLgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5
Ojpqc29uKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keTo6dGV4dCk6CisgICAgICAgIChX
ZWJDb3JlOjpGZXRjaEJvZHk6OmNvbnN1bWUpOiBSZWZhY3RvcmluZyBhbmQgYWRkZWQgY2FzZSBv
ZiBMb2FkZWQgYm9kaWVzLgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Ojpjb25zdW1lQXNT
dHJlYW0pOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keTo6Y29uc3VtZUFycmF5
QnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keTo6Y29uc3VtZVRleHQpOgorICAg
ICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Ojpjb25zdW1lQmxvYik6CisgICAgICAgIChXZWJDb3Jl
OjpGZXRjaEJvZHk6OmxvYWRpbmdGYWlsZWQpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5
Ojpsb2FkaW5nU3VjY2VlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keTo6bG9hZGlu
Z1R5cGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6YmxvYkZyb21BcnJheUJ1ZmZlcik6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHk6OmZ1bGZpbGxUZXh0UHJvbWlz
ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHk6OmxvYWRlZEFzQXJyYXlC
dWZmZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Ojpsb2FkZWRBc1Rl
eHQpOiBEZWxldGVkLgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Lmg6CisgICAg
ICAgIChXZWJDb3JlOjpGZXRjaEJvZHk6OmNvbnN1bWVyKToKKyAgICAgICAgKiBNb2R1bGVzL2Zl
dGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcDogQWRkZWQsIHJlc3BvbnNpYmxlIG9mIGRhdGEgYWRh
cHRhdGlvbi4KKyAgICAgICAgKFdlYkNvcmU6OmJsb2JGcm9tRGF0YSk6CisgICAgICAgIChXZWJD
b3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6cmVzb2x2ZVdpdGhEYXRhKToKKyAgICAgICAgKFdlYkNv
cmU6OkZldGNoQm9keUNvbnN1bWVyOjpyZXNvbHZlKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNo
Qm9keUNvbnN1bWVyOjphcHBlbmQpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3Vt
ZXI6OnRha2VEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjp0YWtl
QXNBcnJheUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6dGFr
ZUFzQmxvYik6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6dGFrZUFzVGV4
dCk6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5oOiBBZGRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjpGZXRjaEJvZHlDb25zdW1lcik6
CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6c2V0Q29udGVudFR5cGUpOgor
ICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OnNldFR5cGUpOgorICAgICAgICAo
V2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OnR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6RmV0
Y2hCb2R5Q29uc3VtZXI6OmNsZWFuKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1
bWVyOjpoYXNEYXRhKToKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keU93bmVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keU93bmVyOjpsb2FkQmxvYik6CisgICAgICAg
IChXZWJDb3JlOjpGZXRjaEJvZHlPd25lcjo6YmxvYkxvYWRpbmdTdWNjZWVkZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6RmV0Y2hCb2R5T3duZXI6OmxvYWRlZEJsb2JBc1RleHQpOiBEZWxldGVkLgor
ICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5T3duZXIuaDoKKyAgICAgICAgKFdlYkNv
cmU6OkZldGNoQm9keU93bmVyOjpsb2FkZWRCbG9iQXNBcnJheUJ1ZmZlcik6IERlbGV0ZWQuCisg
ICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaEludGVybmFscy5qczoKKyAgICAgICAgKGNvbnN1
bWVTdHJlYW0pOiBQdW1wIFJlYWRhYmxlU3RyZWFtIGRhdGEgYW5kIHNlbmQgaXQgdG8gRmV0Y2hS
ZXNwb25zZSB0byBiZSBjb252ZXJ0ZWQgYWNjb3JkaW5nIHVzZXIgbmVlZC4KKyAgICAgICAgKiBN
b2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoTG9h
ZGVyOjpGZXRjaExvYWRlcik6IEZldGNoTG9hZGVyIGlzIHNpbXBsaWZpZWQgYXMgaXQgaGFzIHR3
byBub2RlczogY29uc3VtZXIgbW9kZSBpbiB3aGljaCBjYXNlCisgICAgICAgIGRhdGEgaXMgc2Vu
dCB0byB0aGUgY29uc3VtZXIgYW5kIG5vLWNvbnN1bWVyIG1vZGUgaW4gd2hpY2ggY2FzZSBkYXRh
IGlzIHBhc3NlZCB0byBsb2FkZXIgY2xpZW50LiBUaGUgc2Vjb25kIG1vZGUKKyAgICAgICAgaXMg
dXNlZCB0byBjb252ZXl5IGRhdGEgdG8gUmVhZGFibGVTdHJlYW0gc291cmNlLgorICAgICAgICAo
V2ViQ29yZTo6RmV0Y2hMb2FkZXI6OnN0b3ApOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hMb2Fk
ZXI6OnN0YXJ0U3RyZWFtaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoTG9hZGVyOjpkaWRS
ZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaExvYWRlcjo6ZGlkRmluaXNoTG9h
ZGluZyk6IERlbGV0ZWQuCisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlci5oOgor
ICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgKFdl
YkNvcmU6OkZldGNoTG9hZGVyQ2xpZW50OjpkaWRGaW5pc2hMb2FkaW5nQXNUZXh0KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkZldGNoTG9hZGVyQ2xpZW50OjpkaWRGaW5pc2hMb2FkaW5n
QXNBcnJheUJ1ZmZlcik6IERlbGV0ZWQuCisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaFJl
c3BvbnNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoUmVzcG9uc2U6OmNsb25lRm9ySlMp
OgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hSZXNwb25zZTo6Qm9keUxvYWRlcjo6ZGlkU3VjY2Vl
ZCk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaFJlc3BvbnNlOjpCb2R5TG9hZGVyOjpzdGFydCk6
CisgICAgICAgIChXZWJDb3JlOjpGZXRjaFJlc3BvbnNlOjpjb25zdW1lKTogSW50cm9kdWNlZCB0
byBjb25zdW1lIGRhdGEgc3RvcmVkIGluIGJvZHkgYW5kIG5vdCBpbiBSZWFkYWJsZVN0cmVhbS4K
KyAgICAgICAgKFdlYkNvcmU6OkZldGNoUmVzcG9uc2U6OnN0YXJ0Q29uc3VtaW5nU3RyZWFtKTog
SW50cm9kdWNlZCB0byBzdGFydCBwcm9jZXNzIG9mIGNvbnN1bWluZyBkYXRhIHN0b3JlZCBpbiB0
aGUgUmVhZGFibGVTdHJlYW0uCisgICAgICAgIChXZWJDb3JlOjpGZXRjaFJlc3BvbnNlOjpjb25z
dW1lQ2h1bmspOiBSZWNlcHRpb24gb2YgUmVhZGFibGVTdHJlYW0gZGF0YS4KKyAgICAgICAgKFdl
YkNvcmU6OkZldGNoUmVzcG9uc2U6OmZpbmlzaENvbnN1bWluZ1N0cmVhbSk6IERvaW5nIHRoZSBm
aW5hbCBjb252ZXJzaW9uLgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hSZXNwb25zZTo6Y2xvbmUp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hSZXNwb25zZTo6Qm9keUxvYWRlcjo6
ZGlkRmluaXNoTG9hZGluZ0FzQXJyYXlCdWZmZXIpOiBEZWxldGVkLgorICAgICAgICAqIE1vZHVs
ZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5oOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hS
ZXNwb25zZS5pZGw6IElubGluaW5nIG9mIEZldGNoQm9keSBtZXRob2RzL2F0dHJpYnV0ZXMgYW5k
IGFkZGluZyBwcml2YXRlIG1ldGhvZHMuCisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaFJl
c3BvbnNlLmpzOgorICAgICAgICAoaW5pdGlhbGl6ZUZldGNoUmVzcG9uc2UpOgorICAgICAgICAo
Y2xvbmUpOgorICAgICAgICAoYXJyYXlCdWZmZXIpOgorICAgICAgICAoYmxvYik6CisgICAgICAg
IChmb3JtRGF0YSk6CisgICAgICAgIChqc29uKToKKyAgICAgICAgKHRleHQpOgorICAgICAgICAq
IFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9KU0RPTVByb21pc2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRlZmVycmVkV3JhcHBlcjo6cmVz
b2x2ZVdpdGhOZXdWYWx1ZSk6CisgICAgICAgICogYmluZGluZ3MvanMvV2ViQ29yZUJ1aWx0aW5O
YW1lcy5oOgorCiAyMDE2LTA3LTI1ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdh
bGlhLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OKHIyMDA5MzEpOiBJbnZhbGlkIGNhc3QgaW4g
aGlnaGVzdEFuY2VzdG9yVG9XcmFwTWFya3VwKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggYTU1
ODNjYWFlODliNWRiNmUxMGE0ZGI2NzVmYTNiMWI1NGU5YjI1YS4uZTNhYmViMDJlOWJiZGZkZTI3
NjA1MzljOTI3NTMxY2M4NzM2ZTU5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VM
aXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTgxOCw2ICs4
MTgsNyBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAKICAgICBNb2R1bGVzL2ZldGNoL0RPTVdpbmRv
d0ZldGNoLmNwcAogICAgIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcAorICAgIE1vZHVsZXMv
ZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwCiAgICAgTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlP
d25lci5jcHAKICAgICBNb2R1bGVzL2ZldGNoL0ZldGNoSGVhZGVycy5jcHAKICAgICBNb2R1bGVz
L2ZldGNoL0ZldGNoTG9hZGVyLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9mZXRjaC9GZXRjaEJvZHkuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRj
aEJvZHkuY3BwCmluZGV4IDhjNDc5ZDVmOGUwNjI1MDJkOTU3MGM4YjliNTg1YmNmMGRiNDRkM2Yu
LmUwZjVhZTE4MDM1YWFhZmM3OTRiNzdiMGRkN2Q2YTIxNjA1NTBmZDkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHAKQEAgLTM5LDEyICszOSwxMSBAQAogI2lu
Y2x1ZGUgIkhUVFBQYXJzZXJzLmgiCiAjaW5jbHVkZSAiSlNCbG9iLmgiCiAjaW5jbHVkZSAiSlNE
T01Gb3JtRGF0YS5oIgorI2luY2x1ZGUgIkpTUmVhZGFibGVTdHJlYW0uaCIKICNpbmNsdWRlICJS
ZWFkYWJsZVN0cmVhbVNvdXJjZS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBS
ZWY8QmxvYj4gYmxvYkZyb21BcnJheUJ1ZmZlcihBcnJheUJ1ZmZlciosIGNvbnN0IFN0cmluZyYp
OwotCiBGZXRjaEJvZHk6OkZldGNoQm9keShSZWY8QmxvYj4mJiBibG9iKQogICAgIDogbV90eXBl
KFR5cGU6OkJsb2IpCiAgICAgLCBtX21pbWVUeXBlKGJsb2ItPnR5cGUoKSkKQEAgLTc1LDYgKzc0
LDggQEAgRmV0Y2hCb2R5IEZldGNoQm9keTo6ZXh0cmFjdChKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUs
IEpTQzo6SlNWYWx1ZSB2YWx1ZSkKICAgICAgICAgcmV0dXJuIEZldGNoQm9keSgqSlNET01Gb3Jt
RGF0YTo6dG9XcmFwcGVkKHZhbHVlKSk7CiAgICAgaWYgKHZhbHVlLmlzU3RyaW5nKCkpCiAgICAg
ICAgIHJldHVybiBGZXRjaEJvZHkodmFsdWUudG9XVEZTdHJpbmcoJnN0YXRlKSk7CisgICAgaWYg
KHZhbHVlLmluaGVyaXRzKEpTUmVhZGFibGVTdHJlYW06OmluZm8oKSkpCisgICAgICAgIHJldHVy
biB7IFR5cGU6OlJlYWRhYmxlU3RyZWFtIH07CiAgICAgcmV0dXJuIHsgfTsKIH0KIApAQCAtODks
MTMgKzkwLDE2IEBAIEZldGNoQm9keSBGZXRjaEJvZHk6OmV4dHJhY3RGcm9tQm9keShGZXRjaEJv
ZHkqIGJvZHkpCiB2b2lkIEZldGNoQm9keTo6YXJyYXlCdWZmZXIoRmV0Y2hCb2R5T3duZXImIG93
bmVyLCBEZWZlcnJlZFdyYXBwZXImJiBwcm9taXNlKQogewogICAgIEFTU0VSVChtX3R5cGUgIT0g
VHlwZTo6Tm9uZSk7Ci0gICAgY29uc3VtZShvd25lciwgQ29uc3VtZXI6OlR5cGU6OkFycmF5QnVm
ZmVyLCBXVEZNb3ZlKHByb21pc2UpKTsKKyAgICBtX2NvbnN1bWVyLnNldFR5cGUoRmV0Y2hCb2R5
Q29uc3VtZXI6OlR5cGU6OkFycmF5QnVmZmVyKTsKKyAgICBjb25zdW1lKG93bmVyLCBXVEZNb3Zl
KHByb21pc2UpKTsKIH0KIAogdm9pZCBGZXRjaEJvZHk6OmJsb2IoRmV0Y2hCb2R5T3duZXImIG93
bmVyLCBEZWZlcnJlZFdyYXBwZXImJiBwcm9taXNlKQogewogICAgIEFTU0VSVChtX3R5cGUgIT0g
VHlwZTo6Tm9uZSk7Ci0gICAgY29uc3VtZShvd25lciwgQ29uc3VtZXI6OlR5cGU6OkJsb2IsIFdU
Rk1vdmUocHJvbWlzZSkpOworICAgIG1fY29uc3VtZXIuc2V0VHlwZShGZXRjaEJvZHlDb25zdW1l
cjo6VHlwZTo6QmxvYik7CisgICAgbV9jb25zdW1lci5zZXRDb250ZW50VHlwZShCbG9iOjpub3Jt
YWxpemVkQ29udGVudFR5cGUoZXh0cmFjdE1JTUVUeXBlRnJvbU1lZGlhVHlwZShtX21pbWVUeXBl
KSkpOworICAgIGNvbnN1bWUob3duZXIsIFdURk1vdmUocHJvbWlzZSkpOwogfQogCiB2b2lkIEZl
dGNoQm9keTo6anNvbihGZXRjaEJvZHlPd25lciYgb3duZXIsIERlZmVycmVkV3JhcHBlciYmIHBy
b21pc2UpCkBAIC0xMDYsNyArMTEwLDggQEAgdm9pZCBGZXRjaEJvZHk6Ompzb24oRmV0Y2hCb2R5
T3duZXImIG93bmVyLCBEZWZlcnJlZFdyYXBwZXImJiBwcm9taXNlKQogICAgICAgICBmdWxmaWxs
UHJvbWlzZVdpdGhKU09OKHByb21pc2UsIG1fdGV4dCk7CiAgICAgICAgIHJldHVybjsKICAgICB9
Ci0gICAgY29uc3VtZShvd25lciwgQ29uc3VtZXI6OlR5cGU6OkpTT04sIFdURk1vdmUocHJvbWlz
ZSkpOworICAgIG1fY29uc3VtZXIuc2V0VHlwZShGZXRjaEJvZHlDb25zdW1lcjo6VHlwZTo6SlNP
Tik7CisgICAgY29uc3VtZShvd25lciwgV1RGTW92ZShwcm9taXNlKSk7CiB9CiAKIHZvaWQgRmV0
Y2hCb2R5Ojp0ZXh0KEZldGNoQm9keU93bmVyJiBvd25lciwgRGVmZXJyZWRXcmFwcGVyJiYgcHJv
bWlzZSkKQEAgLTExNywxMTMgKzEyMiw5NSBAQCB2b2lkIEZldGNoQm9keTo6dGV4dChGZXRjaEJv
ZHlPd25lciYgb3duZXIsIERlZmVycmVkV3JhcHBlciYmIHByb21pc2UpCiAgICAgICAgIHByb21p
c2UucmVzb2x2ZShtX3RleHQpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGNvbnN1bWUo
b3duZXIsIENvbnN1bWVyOjpUeXBlOjpUZXh0LCBXVEZNb3ZlKHByb21pc2UpKTsKKyAgICBtX2Nv
bnN1bWVyLnNldFR5cGUoRmV0Y2hCb2R5Q29uc3VtZXI6OlR5cGU6OlRleHQpOworICAgIGNvbnN1
bWUob3duZXIsIFdURk1vdmUocHJvbWlzZSkpOwogfQogCi12b2lkIEZldGNoQm9keTo6Y29uc3Vt
ZShGZXRjaEJvZHlPd25lciYgb3duZXIsIENvbnN1bWVyOjpUeXBlIHR5cGUsIERlZmVycmVkV3Jh
cHBlciYmIHByb21pc2UpCit2b2lkIEZldGNoQm9keTo6Y29uc3VtZShGZXRjaEJvZHlPd25lciYg
b3duZXIsIERlZmVycmVkV3JhcHBlciYmIHByb21pc2UpCiB7Ci0gICAgaWYgKG1fdHlwZSA9PSBU
eXBlOjpBcnJheUJ1ZmZlcikgewotICAgICAgICBjb25zdW1lQXJyYXlCdWZmZXIodHlwZSwgcHJv
bWlzZSk7CisgICAgLy8gVGhpcyBzaG91bGQgYmUgaGFuZGxlZCBieSBGZXRjaEJvZHlPd25lcgor
ICAgIEFTU0VSVChtX3R5cGUgIT0gVHlwZTo6Tm9uZSk7CisgICAgLy8gVGhpcyBzaG91bGQgYmUg
aGFuZGxlZCBieSBKUyBidWlsdC1pbnMKKyAgICBBU1NFUlQobV90eXBlICE9IFR5cGU6OlJlYWRh
YmxlU3RyZWFtKTsKKworICAgIHN3aXRjaCAobV90eXBlKSB7CisgICAgY2FzZSBUeXBlOjpBcnJh
eUJ1ZmZlcjoKKyAgICAgICAgY29uc3VtZUFycmF5QnVmZmVyKHByb21pc2UpOwogICAgICAgICBy
ZXR1cm47Ci0gICAgfQotICAgIGlmIChtX3R5cGUgPT0gVHlwZTo6VGV4dCkgewotICAgICAgICBj
b25zdW1lVGV4dCh0eXBlLCBwcm9taXNlKTsKKyAgICBjYXNlIFR5cGU6OlRleHQ6CisgICAgICAg
IGNvbnN1bWVUZXh0KHByb21pc2UpOwogICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmICht
X3R5cGUgPT0gVHlwZTo6QmxvYikgewotICAgICAgICBjb25zdW1lQmxvYihvd25lciwgdHlwZSwg
V1RGTW92ZShwcm9taXNlKSk7CisgICAgY2FzZSBUeXBlOjpCbG9iOgorICAgICAgICBjb25zdW1l
QmxvYihvd25lciwgV1RGTW92ZShwcm9taXNlKSk7CiAgICAgICAgIHJldHVybjsKLSAgICB9Ci0g
ICAgaWYgKG1fdHlwZSA9PSBUeXBlOjpMb2FkaW5nKSB7Ci0gICAgICAgIC8vIEZJWE1FOiBXZSBz
aG91bGQgYmUgYWJsZSB0byBjaGFuZ2UgdGhlIGxvYWRpbmcgdHlwZSB0byB0ZXh0IGlmIGNvbnN1
bWVyIHR5cGUgaXMgSlNPTiBvciBUZXh0LgotICAgICAgICBtX2NvbnN1bWVyID0gQ29uc3VtZXIo
e3R5cGUsIFdURk1vdmUocHJvbWlzZSl9KTsKKyAgICBjYXNlIFR5cGU6OkxvYWRpbmc6CisgICAg
ICAgIG1fY29uc3VtZVByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpOworICAgICAgICByZXR1cm47
CisgICAgY2FzZSBUeXBlOjpMb2FkZWQ6CisgICAgICAgIG1fY29uc3VtZXIucmVzb2x2ZShwcm9t
aXNlKTsKICAgICAgICAgcmV0dXJuOworICAgIGRlZmF1bHQ6CisgICAgICAgIC8vIEZJWE1FOiBT
dXBwb3J0IG90aGVyIHR5cGVzLgorICAgICAgICBwcm9taXNlLnJlamVjdCgwKTsKICAgICB9Ci0K
LSAgICAvLyBGSVhNRTogU3VwcG9ydCBvdGhlciB0eXBlcy4KLSAgICBwcm9taXNlLnJlamVjdCgw
KTsKIH0KIAogI2lmIEVOQUJMRShTVFJFQU1TX0FQSSkKIHZvaWQgRmV0Y2hCb2R5Ojpjb25zdW1l
QXNTdHJlYW0oRmV0Y2hCb2R5T3duZXImIG93bmVyLCBGZXRjaFJlc3BvbnNlU291cmNlJiBzb3Vy
Y2UpCiB7CisgICAgLy8gVGhpcyBzaG91bGQgYmUgaGFuZGxlZCBieSBGZXRjaFJlc3BvbnNlCiAg
ICAgQVNTRVJUKG1fdHlwZSAhPSBUeXBlOjpMb2FkaW5nKTsKKyAgICAvLyBUaGlzIHNob3VsZCBi
ZSBoYW5kbGVkIGJ5IEpTIGJ1aWx0LWlucworICAgIEFTU0VSVChtX3R5cGUgIT0gVHlwZTo6UmVh
ZGFibGVTdHJlYW0pOwogCisgICAgYm9vbCBjbG9zZVN0cmVhbSA9IGZhbHNlOwogICAgIHN3aXRj
aCAobV90eXBlKSB7CiAgICAgY2FzZSBUeXBlOjpBcnJheUJ1ZmZlcjoKICAgICAgICAgQVNTRVJU
KG1fZGF0YSk7Ci0gICAgICAgIGlmIChzb3VyY2UuZW5xdWV1ZShSZWZQdHI8SlNDOjpBcnJheUJ1
ZmZlcj4obV9kYXRhKSkpCi0gICAgICAgICAgICBzb3VyY2UuY2xvc2UoKTsKLSAgICAgICAgcmV0
dXJuOworICAgICAgICBjbG9zZVN0cmVhbSA9IHNvdXJjZS5lbnF1ZXVlKFJlZlB0cjxKU0M6OkFy
cmF5QnVmZmVyPihtX2RhdGEpKTsKKyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBUeXBlOjpUZXh0
OiB7CiAgICAgICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhID0gZXh0cmFjdEZyb21UZXh0KCk7Ci0g
ICAgICAgIGlmIChzb3VyY2UuZW5xdWV1ZShBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlKGRhdGEuZGF0
YSgpLCBkYXRhLnNpemUoKSkpKQotICAgICAgICAgICAgc291cmNlLmNsb3NlKCk7Ci0gICAgICAg
IHJldHVybjsKKyAgICAgICAgY2xvc2VTdHJlYW0gPSBzb3VyY2UuZW5xdWV1ZShBcnJheUJ1ZmZl
cjo6dHJ5Q3JlYXRlKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSkpOworICAgICAgICBicmVhazsK
ICAgICB9CiAgICAgY2FzZSBUeXBlOjpCbG9iOgogICAgICAgICBBU1NFUlQobV9ibG9iKTsKLSAg
ICAgICAgb3duZXIubG9hZEJsb2IoKm1fYmxvYiwgRmV0Y2hMb2FkZXI6OlR5cGU6OlN0cmVhbSk7
Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgb3duZXIubG9hZEJsb2IoKm1fYmxvYiwgbnVsbHB0
cik7CisgICAgICAgIGJyZWFrOwogICAgIGNhc2UgVHlwZTo6Tm9uZToKLSAgICAgICAgc291cmNl
LmNsb3NlKCk7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgY2xvc2VTdHJlYW0gPSB0cnVlOwor
ICAgICAgICBicmVhazsKKyAgICBjYXNlIFR5cGU6OkxvYWRlZDogeworICAgICAgICBjbG9zZVN0
cmVhbSA9IHNvdXJjZS5lbnF1ZXVlKG1fY29uc3VtZXIudGFrZUFzQXJyYXlCdWZmZXIoKSk7Cisg
ICAgICAgIGJyZWFrOworICAgIH0KICAgICBkZWZhdWx0OgogICAgICAgICBzb3VyY2UuZXJyb3Io
QVNDSUlMaXRlcmFsKCJub3QgaW1wbGVtZW50ZWQiKSk7CiAgICAgfQotfQotI2VuZGlmCiAKLXZv
aWQgRmV0Y2hCb2R5Ojpjb25zdW1lQXJyYXlCdWZmZXIoQ29uc3VtZXI6OlR5cGUgdHlwZSwgRGVm
ZXJyZWRXcmFwcGVyJiBwcm9taXNlKQotewotICAgIGlmICh0eXBlID09IENvbnN1bWVyOjpUeXBl
OjpBcnJheUJ1ZmZlcikgewotICAgICAgICBmdWxmaWxsUHJvbWlzZVdpdGhBcnJheUJ1ZmZlcihw
cm9taXNlLCBtX2RhdGEuZ2V0KCkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmICh0
eXBlID09IENvbnN1bWVyOjpUeXBlOjpCbG9iKSB7Ci0gICAgICAgIHByb21pc2UucmVzb2x2ZShi
bG9iRnJvbUFycmF5QnVmZmVyKG1fZGF0YS5nZXQoKSwgQmxvYjo6bm9ybWFsaXplZENvbnRlbnRU
eXBlKGV4dHJhY3RNSU1FVHlwZUZyb21NZWRpYVR5cGUobV9taW1lVHlwZSkpKSk7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9Ci0KLSAgICBBU1NFUlQodHlwZSA9PSBDb25zdW1lcjo6VHlwZTo6VGV4
dCB8fCB0eXBlID09IENvbnN1bWVyOjpUeXBlOjpKU09OKTsKLSAgICAvLyBGSVhNRTogRG8gd2Ug
bmVlZCBUZXh0UmVzb3VyY2VEZWNvZGVyIHRvIGNyZWF0ZSBhIFN0cmluZyB0byBkZWNvZGUgVVRG
LTggZGF0YS4KLSAgICBmdWxmaWxsVGV4dFByb21pc2UodHlwZSwgVGV4dFJlc291cmNlRGVjb2Rl
cjo6Y3JlYXRlKEFTQ0lJTGl0ZXJhbCgidGV4dC9wbGFpbiIpLCAiVVRGLTgiKS0+ZGVjb2RlQW5k
Rmx1c2goc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KG1fZGF0YS0+ZGF0YSgpKSwgbV9kYXRhLT5i
eXRlTGVuZ3RoKCkpLCBwcm9taXNlKTsKKyAgICBpZiAoY2xvc2VTdHJlYW0pCisgICAgICAgIHNv
dXJjZS5jbG9zZSgpOwogfQorI2VuZGlmCiAKLXZvaWQgRmV0Y2hCb2R5Ojpjb25zdW1lVGV4dChD
b25zdW1lcjo6VHlwZSB0eXBlLCBEZWZlcnJlZFdyYXBwZXImIHByb21pc2UpCit2b2lkIEZldGNo
Qm9keTo6Y29uc3VtZUFycmF5QnVmZmVyKERlZmVycmVkV3JhcHBlciYgcHJvbWlzZSkKIHsKLSAg
ICBBU1NFUlQodHlwZSA9PSBDb25zdW1lcjo6VHlwZTo6QXJyYXlCdWZmZXIgfHwgdHlwZSA9PSBD
b25zdW1lcjo6VHlwZTo6QmxvYik7Ci0KLSAgICBpZiAodHlwZSA9PSBDb25zdW1lcjo6VHlwZTo6
QXJyYXlCdWZmZXIpIHsKLSAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGEgPSBleHRyYWN0RnJv
bVRleHQoKTsKLSAgICAgICAgZnVsZmlsbFByb21pc2VXaXRoQXJyYXlCdWZmZXIocHJvbWlzZSwg
ZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBT
dHJpbmcgY29udGVudFR5cGUgPSBCbG9iOjpub3JtYWxpemVkQ29udGVudFR5cGUoZXh0cmFjdE1J
TUVUeXBlRnJvbU1lZGlhVHlwZShtX21pbWVUeXBlKSk7Ci0gICAgcHJvbWlzZS5yZXNvbHZlKEJs
b2I6OmNyZWF0ZShleHRyYWN0RnJvbVRleHQoKSwgY29udGVudFR5cGUpKTsKKyAgICBtX2NvbnN1
bWVyLnJlc29sdmVXaXRoRGF0YShwcm9taXNlLCBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4o
bV9kYXRhLT5kYXRhKCkpLCBtX2RhdGEtPmJ5dGVMZW5ndGgoKSk7CiB9CiAKLUZldGNoTG9hZGVy
OjpUeXBlIEZldGNoQm9keTo6bG9hZGluZ1R5cGUoQ29uc3VtZXI6OlR5cGUgdHlwZSkKK3ZvaWQg
RmV0Y2hCb2R5Ojpjb25zdW1lVGV4dChEZWZlcnJlZFdyYXBwZXImIHByb21pc2UpCiB7Ci0gICAg
c3dpdGNoICh0eXBlKSB7Ci0gICAgY2FzZSBDb25zdW1lcjo6VHlwZTo6SlNPTjoKLSAgICBjYXNl
IENvbnN1bWVyOjpUeXBlOjpUZXh0OgotICAgICAgICByZXR1cm4gRmV0Y2hMb2FkZXI6OlR5cGU6
OlRleHQ7Ci0gICAgY2FzZSBDb25zdW1lcjo6VHlwZTo6QmxvYjoKLSAgICBjYXNlIENvbnN1bWVy
OjpUeXBlOjpBcnJheUJ1ZmZlcjoKLSAgICAgICAgcmV0dXJuIEZldGNoTG9hZGVyOjpUeXBlOjpB
cnJheUJ1ZmZlcjsKLSAgICBkZWZhdWx0OgotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
LSAgICAgICAgcmV0dXJuIEZldGNoTG9hZGVyOjpUeXBlOjpBcnJheUJ1ZmZlcjsKLSAgICB9Owor
ICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhID0gZXh0cmFjdEZyb21UZXh0KCk7CisgICAgbV9jb25z
dW1lci5yZXNvbHZlV2l0aERhdGEocHJvbWlzZSwgZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKTsK
IH0KIAotdm9pZCBGZXRjaEJvZHk6OmNvbnN1bWVCbG9iKEZldGNoQm9keU93bmVyJiBvd25lciwg
Q29uc3VtZXI6OlR5cGUgdHlwZSwgRGVmZXJyZWRXcmFwcGVyJiYgcHJvbWlzZSkKK3ZvaWQgRmV0
Y2hCb2R5Ojpjb25zdW1lQmxvYihGZXRjaEJvZHlPd25lciYgb3duZXIsIERlZmVycmVkV3JhcHBl
ciYmIHByb21pc2UpCiB7CiAgICAgQVNTRVJUKG1fYmxvYik7CiAKLSAgICBtX2NvbnN1bWVyID0g
Q29uc3VtZXIoe3R5cGUsIFdURk1vdmUocHJvbWlzZSl9KTsKLSAgICBvd25lci5sb2FkQmxvYigq
bV9ibG9iLCBsb2FkaW5nVHlwZSh0eXBlKSk7CisgICAgbV9jb25zdW1lUHJvbWlzZSA9IFdURk1v
dmUocHJvbWlzZSk7CisgICAgb3duZXIubG9hZEJsb2IoKm1fYmxvYiwgJm1fY29uc3VtZXIpOwog
fQogCiBWZWN0b3I8dWludDhfdD4gRmV0Y2hCb2R5OjpleHRyYWN0RnJvbVRleHQoKSBjb25zdApA
QCAtMjM2LDYzICsyMjMsMjEgQEAgVmVjdG9yPHVpbnQ4X3Q+IEZldGNoQm9keTo6ZXh0cmFjdEZy
b21UZXh0KCkgY29uc3QKICAgICByZXR1cm4gdmFsdWU7CiB9CiAKLXN0YXRpYyBpbmxpbmUgUmVm
PEJsb2I+IGJsb2JGcm9tQXJyYXlCdWZmZXIoQXJyYXlCdWZmZXIqIGJ1ZmZlciwgY29uc3QgU3Ry
aW5nJiBjb250ZW50VHlwZSkKLXsKLSAgICBpZiAoIWJ1ZmZlcikKLSAgICAgICAgcmV0dXJuIEJs
b2I6OmNyZWF0ZShWZWN0b3I8dWludDhfdD4oKSwgY29udGVudFR5cGUpOwotCi0gICAgLy8gRklY
TUU6IFdlIHNob3VsZCB0cnkgdG8gbW92ZSBidWZmZXIgdG8gQmxvYiB3aXRob3V0IGRvaW5nIHRo
aXMgY29weS4KLSAgICBWZWN0b3I8dWludDhfdD4gdmFsdWUoYnVmZmVyLT5ieXRlTGVuZ3RoKCkp
OwotICAgIG1lbWNweSh2YWx1ZS5kYXRhKCksIGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPmJ5dGVM
ZW5ndGgoKSk7Ci0gICAgcmV0dXJuIEJsb2I6OmNyZWF0ZShXVEZNb3ZlKHZhbHVlKSwgY29udGVu
dFR5cGUpOwotfQotCi12b2lkIEZldGNoQm9keTo6ZnVsZmlsbFRleHRQcm9taXNlKEZldGNoQm9k
eTo6Q29uc3VtZXI6OlR5cGUgdHlwZSwgY29uc3QgU3RyaW5nJiB0ZXh0LCBEZWZlcnJlZFdyYXBw
ZXImIHByb21pc2UpCi17Ci0gICAgQVNTRVJUKHR5cGUgPT0gQ29uc3VtZXI6OlR5cGU6OlRleHQg
fHwgdHlwZSA9PSBDb25zdW1lcjo6VHlwZTo6SlNPTik7Ci0gICAgaWYgKHR5cGUgPT0gRmV0Y2hC
b2R5OjpDb25zdW1lcjo6VHlwZTo6VGV4dCkKLSAgICAgICAgcHJvbWlzZS5yZXNvbHZlKHRleHQp
OwotICAgIGVsc2UKLSAgICAgICAgZnVsZmlsbFByb21pc2VXaXRoSlNPTihwcm9taXNlLCB0ZXh0
KTsKLX0KLQogdm9pZCBGZXRjaEJvZHk6OmxvYWRpbmdGYWlsZWQoKQogewotICAgIEFTU0VSVCht
X2NvbnN1bWVyKTsKLSAgICBtX2NvbnN1bWVyLT5wcm9taXNlLnJlamVjdCgwKTsKLSAgICBtX2Nv
bnN1bWVyID0gTnVsbG9wdDsKLX0KLQotdm9pZCBGZXRjaEJvZHk6OmxvYWRlZEFzQXJyYXlCdWZm
ZXIoUmVmUHRyPEFycmF5QnVmZmVyPiYmIGJ1ZmZlcikKLXsKLSAgICBpZiAobV90eXBlID09IFR5
cGU6OkxvYWRpbmcpIHsKLSAgICAgICAgbV90eXBlID0gVHlwZTo6QXJyYXlCdWZmZXI7Ci0gICAg
ICAgIG1fZGF0YSA9IGJ1ZmZlcjsKLSAgICAgICAgaWYgKG1fY29uc3VtZXIpIHsKLSAgICAgICAg
ICAgIGNvbnN1bWVBcnJheUJ1ZmZlcihtX2NvbnN1bWVyLT50eXBlLCBtX2NvbnN1bWVyLT5wcm9t
aXNlKTsKLSAgICAgICAgICAgIG1fY29uc3VtZXIgPSBOdWxsb3B0OwotICAgICAgICB9Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBBU1NFUlQobV9jb25zdW1lcik7Ci0gICAgQVNTRVJU
KG1fY29uc3VtZXItPnR5cGUgPT0gQ29uc3VtZXI6OlR5cGU6OkJsb2IgfHwgbV9jb25zdW1lci0+
dHlwZSA9PSBDb25zdW1lcjo6VHlwZTo6QXJyYXlCdWZmZXIpOwotICAgIGlmIChtX2NvbnN1bWVy
LT50eXBlID09IENvbnN1bWVyOjpUeXBlOjpBcnJheUJ1ZmZlcikKLSAgICAgICAgZnVsZmlsbFBy
b21pc2VXaXRoQXJyYXlCdWZmZXIobV9jb25zdW1lci0+cHJvbWlzZSwgYnVmZmVyLmdldCgpKTsK
LSAgICBlbHNlIHsKLSAgICAgICAgQVNTRVJUKG1fYmxvYik7Ci0gICAgICAgIG1fY29uc3VtZXIt
PnByb21pc2UucmVzb2x2ZShibG9iRnJvbUFycmF5QnVmZmVyKGJ1ZmZlci5nZXQoKSwgbV9ibG9i
LT50eXBlKCkpKTsKKyAgICBpZiAobV9jb25zdW1lUHJvbWlzZSkgeworICAgICAgICBtX2NvbnN1
bWVQcm9taXNlLT5yZWplY3QoMCk7CisgICAgICAgIG1fY29uc3VtZVByb21pc2UgPSBOdWxsb3B0
OwogICAgIH0KLSAgICBtX2NvbnN1bWVyID0gTnVsbG9wdDsKIH0KIAotdm9pZCBGZXRjaEJvZHk6
OmxvYWRlZEFzVGV4dChTdHJpbmcmJiB0ZXh0KQordm9pZCBGZXRjaEJvZHk6OmxvYWRpbmdTdWNj
ZWVkZWQoKQogewotICAgIEFTU0VSVChtX2NvbnN1bWVyKTsKLSAgICBBU1NFUlQobV9jb25zdW1l
ci0+dHlwZSA9PSBDb25zdW1lcjo6VHlwZTo6VGV4dCB8fCBtX2NvbnN1bWVyLT50eXBlID09IENv
bnN1bWVyOjpUeXBlOjpKU09OKTsKLQotICAgIGZ1bGZpbGxUZXh0UHJvbWlzZShtX2NvbnN1bWVy
LT50eXBlLCB0ZXh0LCBtX2NvbnN1bWVyLT5wcm9taXNlKTsKLSAgICBtX2NvbnN1bWVyID0gTnVs
bG9wdDsKKyAgICBtX3R5cGUgPSBtX2NvbnN1bWVyLmhhc0RhdGEoKSA/IFR5cGU6OkxvYWRlZCA6
IFR5cGU6Ok5vbmU7CisgICAgaWYgKG1fY29uc3VtZVByb21pc2UpIHsKKyAgICAgICAgbV9jb25z
dW1lci5yZXNvbHZlKCptX2NvbnN1bWVQcm9taXNlKTsKKyAgICAgICAgbV9jb25zdW1lUHJvbWlz
ZSA9IE51bGxvcHQ7CisgICAgfQogfQogCiBSZWZQdHI8Rm9ybURhdGE+IEZldGNoQm9keTo6Ym9k
eUZvckludGVybmFsUmVxdWVzdCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2ZldGNoL0ZldGNoQm9keS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9G
ZXRjaEJvZHkuaAppbmRleCA1NmYzZGZkYzg1NzFjMzE1MTEyZjI2NjVjNmZmZGE5NzVhOWRmMzky
Li42MmQ5ZTVhNzg3ZDU4MzMwYjY2NGY4YWM1NmVmMjQ1MzJjZWY2ZGM1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmgKQEAgLTMzLDYgKzMzLDcgQEAKIAogI2luY2x1
ZGUgIkJsb2IuaCIKICNpbmNsdWRlICJET01Gb3JtRGF0YS5oIgorI2luY2x1ZGUgIkZldGNoQm9k
eUNvbnN1bWVyLmgiCiAjaW5jbHVkZSAiRmV0Y2hMb2FkZXIuaCIKICNpbmNsdWRlICJKU0RPTVBy
b21pc2UuaCIKIApAQCAtNzAsMzUgKzcxLDI3IEBAIHB1YmxpYzoKICAgICBGZXRjaEJvZHkoKSA9
IGRlZmF1bHQ7CiAKICAgICB2b2lkIGxvYWRpbmdGYWlsZWQoKTsKLSAgICB2b2lkIGxvYWRlZEFz
QXJyYXlCdWZmZXIoUmVmUHRyPEFycmF5QnVmZmVyPiYmKTsKLSAgICB2b2lkIGxvYWRlZEFzVGV4
dChTdHJpbmcmJik7CisgICAgdm9pZCBsb2FkaW5nU3VjY2VlZGVkKCk7CiAKICAgICBSZWZQdHI8
Rm9ybURhdGE+IGJvZHlGb3JJbnRlcm5hbFJlcXVlc3QoKSBjb25zdDsKIAotICAgIGVudW0gY2xh
c3MgVHlwZSB7IE5vbmUsIEFycmF5QnVmZmVyLCBMb2FkaW5nLCBUZXh0LCBCbG9iLCBGb3JtRGF0
YSB9OworICAgIGVudW0gY2xhc3MgVHlwZSB7IE5vbmUsIEFycmF5QnVmZmVyLCBCbG9iLCBGb3Jt
RGF0YSwgVGV4dCwgTG9hZGluZywgTG9hZGVkLCBSZWFkYWJsZVN0cmVhbSB9OwogICAgIFR5cGUg
dHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQogCisgICAgRmV0Y2hCb2R5Q29uc3VtZXIm
IGNvbnN1bWVyKCkgeyByZXR1cm4gbV9jb25zdW1lcjsgfQorCiBwcml2YXRlOgogICAgIEZldGNo
Qm9keShSZWY8QmxvYj4mJik7CiAgICAgRmV0Y2hCb2R5KFJlZjxET01Gb3JtRGF0YT4mJik7CiAg
ICAgRmV0Y2hCb2R5KFN0cmluZyYmKTsKICAgICBGZXRjaEJvZHkoVHlwZSB0eXBlKSA6IG1fdHlw
ZSh0eXBlKSB7IH0KIAotICAgIHN0cnVjdCBDb25zdW1lciB7Ci0gICAgICAgIGVudW0gY2xhc3Mg
VHlwZSB7IFRleHQsIEJsb2IsIEpTT04sIEFycmF5QnVmZmVyIH07Ci0KLSAgICAgICAgVHlwZSB0
eXBlOwotICAgICAgICBEZWZlcnJlZFdyYXBwZXIgcHJvbWlzZTsKLSAgICB9OwotICAgIHZvaWQg
Y29uc3VtZShGZXRjaEJvZHlPd25lciYsIENvbnN1bWVyOjpUeXBlLCBEZWZlcnJlZFdyYXBwZXIm
Jik7CisgICAgdm9pZCBjb25zdW1lKEZldGNoQm9keU93bmVyJiwgRGVmZXJyZWRXcmFwcGVyJiYp
OwogCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGV4dHJhY3RGcm9tVGV4dCgpIGNvbnN0OwotICAgIHZv
aWQgY29uc3VtZUFycmF5QnVmZmVyKENvbnN1bWVyOjpUeXBlLCBEZWZlcnJlZFdyYXBwZXImKTsK
LSAgICB2b2lkIGNvbnN1bWVUZXh0KENvbnN1bWVyOjpUeXBlLCBEZWZlcnJlZFdyYXBwZXImKTsK
LSAgICB2b2lkIGNvbnN1bWVCbG9iKEZldGNoQm9keU93bmVyJiwgQ29uc3VtZXI6OlR5cGUsIERl
ZmVycmVkV3JhcHBlciYmKTsKLSAgICBzdGF0aWMgRmV0Y2hMb2FkZXI6OlR5cGUgbG9hZGluZ1R5
cGUoQ29uc3VtZXI6OlR5cGUpOwotICAgIHN0YXRpYyB2b2lkIGZ1bGZpbGxUZXh0UHJvbWlzZShG
ZXRjaEJvZHk6OkNvbnN1bWVyOjpUeXBlLCBjb25zdCBTdHJpbmcmLCBEZWZlcnJlZFdyYXBwZXIm
KTsKLSAgICBzdGF0aWMgdm9pZCBmdWxmaWxsQXJyYXlCdWZmZXJQcm9taXNlKEZldGNoQm9keTo6
Q29uc3VtZXI6OlR5cGUsIGNvbnN0IFN0cmluZyYsIERlZmVycmVkV3JhcHBlciYpOworICAgIHZv
aWQgY29uc3VtZUFycmF5QnVmZmVyKERlZmVycmVkV3JhcHBlciYpOworICAgIHZvaWQgY29uc3Vt
ZVRleHQoRGVmZXJyZWRXcmFwcGVyJik7CisgICAgdm9pZCBjb25zdW1lQmxvYihGZXRjaEJvZHlP
d25lciYsIERlZmVycmVkV3JhcHBlciYmKTsKIAogICAgIFR5cGUgbV90eXBlIHsgVHlwZTo6Tm9u
ZSB9OwogICAgIFN0cmluZyBtX21pbWVUeXBlOwpAQCAtMTA5LDcgKzEwMiw4IEBAIHByaXZhdGU6
CiAgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBtX2RhdGE7CiAgICAgU3RyaW5nIG1fdGV4dDsKIAot
ICAgIE9wdGlvbmFsPENvbnN1bWVyPiBtX2NvbnN1bWVyOworICAgIEZldGNoQm9keUNvbnN1bWVy
IG1fY29uc3VtZXIgeyBGZXRjaEJvZHlDb25zdW1lcjo6VHlwZTo6Tm9uZSB9OworICAgIE9wdGlv
bmFsPERlZmVycmVkV3JhcHBlcj4gbV9jb25zdW1lUHJvbWlzZTsKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0
Y2hCb2R5Q29uc3VtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJv
ZHlDb25zdW1lci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDkzMjUxYmY5NGNkMzQyN2Y2NzlmZDYyZWFkZTRl
OGJhMDAyMzQ2NwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0
Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwCkBAIC0wLDAgKzEsMTQwIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE2IEFwcGxlIEluYy4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCwgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSByZXF1aXJlZCB0byBiZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YK
KyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUgorICogQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyAqIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSCisgKiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorICogT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIkZldGNoQm9keUNvbnN1bWVyLmgiCisKKyNpZiBFTkFCTEUoRkVUQ0hfQVBJKQorCisjaW5j
bHVkZSAiSlNCbG9iLmgiCisjaW5jbHVkZSAiSlNET01Qcm9taXNlLmgiCisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworc3RhdGljIGlubGluZSBSZWY8QmxvYj4gYmxvYkZyb21EYXRhKGNvbnN0IHVu
c2lnbmVkIGNoYXIqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwgY29uc3QgU3RyaW5nJiBjb250ZW50
VHlwZSkKK3sKKyAgICBWZWN0b3I8dWludDhfdD4gdmFsdWUobGVuZ3RoKTsKKyAgICBtZW1jcHko
dmFsdWUuZGF0YSgpLCBkYXRhLCBsZW5ndGgpOworICAgIHJldHVybiBCbG9iOjpjcmVhdGUoV1RG
TW92ZSh2YWx1ZSksIGNvbnRlbnRUeXBlKTsKK30KKwordm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6
cmVzb2x2ZVdpdGhEYXRhKERlZmVycmVkV3JhcHBlciYgcHJvbWlzZSwgY29uc3QgdW5zaWduZWQg
Y2hhciogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKQoreworICAgIHN3aXRjaCAobV90eXBlKSB7Cisg
ICAgY2FzZSBUeXBlOjpBcnJheUJ1ZmZlcjoKKyAgICAgICAgZnVsZmlsbFByb21pc2VXaXRoQXJy
YXlCdWZmZXIocHJvbWlzZSwgZGF0YSwgbGVuZ3RoKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNh
c2UgVHlwZTo6QmxvYjoKKyAgICAgICAgcHJvbWlzZS5yZXNvbHZlV2l0aE5ld2x5Q3JlYXRlZChi
bG9iRnJvbURhdGEoZGF0YSwgbGVuZ3RoLCBtX2NvbnRlbnRUeXBlKSk7CisgICAgICAgIHJldHVy
bjsKKyAgICBjYXNlIFR5cGU6OkpTT046CisgICAgICAgIGZ1bGZpbGxQcm9taXNlV2l0aEpTT04o
cHJvbWlzZSwgU3RyaW5nKGRhdGEsIGxlbmd0aCkpOworICAgICAgICByZXR1cm47CisgICAgY2Fz
ZSBUeXBlOjpUZXh0OgorICAgICAgICBwcm9taXNlLnJlc29sdmUoU3RyaW5nKGRhdGEsIGxlbmd0
aCkpOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBUeXBlOjpOb25lOgorICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KK30KKwordm9pZCBGZXRj
aEJvZHlDb25zdW1lcjo6cmVzb2x2ZShEZWZlcnJlZFdyYXBwZXImIHByb21pc2UpCit7CisgICAg
QVNTRVJUKG1fdHlwZSAhPSBUeXBlOjpOb25lKTsKKyAgICBzd2l0Y2ggKG1fdHlwZSkgeworICAg
IGNhc2UgVHlwZTo6QXJyYXlCdWZmZXI6CisgICAgICAgIGZ1bGZpbGxQcm9taXNlV2l0aEFycmF5
QnVmZmVyKHByb21pc2UsIHRha2VBc0FycmF5QnVmZmVyKCkuZ2V0KCkpOworICAgICAgICByZXR1
cm47CisgICAgY2FzZSBUeXBlOjpCbG9iOgorICAgICAgICBwcm9taXNlLnJlc29sdmVXaXRoTmV3
bHlDcmVhdGVkKHRha2VBc0Jsb2IoKSk7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIFR5cGU6
OkpTT046CisgICAgICAgIGZ1bGZpbGxQcm9taXNlV2l0aEpTT04ocHJvbWlzZSwgdGFrZUFzVGV4
dCgpKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgVHlwZTo6VGV4dDoKKyAgICAgICAgcHJv
bWlzZS5yZXNvbHZlKHRha2VBc1RleHQoKSk7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIFR5
cGU6Ok5vbmU6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm47
CisgICAgfQorfQorCit2b2lkIEZldGNoQm9keUNvbnN1bWVyOjphcHBlbmQoY29uc3QgY2hhciog
ZGF0YSwgdW5zaWduZWQgbGVuZ3RoKQoreworICAgIGlmICghbV9idWZmZXIpIHsKKyAgICAgICAg
bV9idWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLCBsZW5ndGgpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorICAgIG1fYnVmZmVyLT5hcHBlbmQoZGF0YSwgbGVuZ3RoKTsKK30KKwor
dm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6YXBwZW5kKGNvbnN0IHVuc2lnbmVkIGNoYXIqIGRhdGEs
IHVuc2lnbmVkIGxlbmd0aCkKK3sKKyAgICBhcHBlbmQocmVpbnRlcnByZXRfY2FzdDxjb25zdCBj
aGFyKj4oZGF0YSksIGxlbmd0aCk7Cit9CisKK1JlZlB0cjxTaGFyZWRCdWZmZXI+IEZldGNoQm9k
eUNvbnN1bWVyOjp0YWtlRGF0YSgpCit7CisgICAgcmV0dXJuIFdURk1vdmUobV9idWZmZXIpOwor
fQorCitSZWZQdHI8SlNDOjpBcnJheUJ1ZmZlcj4gRmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VBc0Fy
cmF5QnVmZmVyKCkKK3sKKyAgICBpZiAoIW1fYnVmZmVyKQorICAgICAgICByZXR1cm4gQXJyYXlC
dWZmZXI6OnRyeUNyZWF0ZShudWxscHRyLCAwKTsKKworICAgIGF1dG8gYXJyYXlCdWZmZXIgPSBt
X2J1ZmZlci0+Y3JlYXRlQXJyYXlCdWZmZXIoKTsKKyAgICBtX2J1ZmZlciA9IG51bGxwdHI7Cisg
ICAgcmV0dXJuIGFycmF5QnVmZmVyOworfQorCitSZWY8QmxvYj4gRmV0Y2hCb2R5Q29uc3VtZXI6
OnRha2VBc0Jsb2IoKQoreworICAgIEFTU0VSVChtX2J1ZmZlcik7CisgICAgaWYgKCFtX2J1ZmZl
cikKKyAgICAgICAgcmV0dXJuIEJsb2I6OmNyZWF0ZSgpOworCisgICAgLy8gRklYTUU6IFdlIHNo
b3VsZCB0cnkgdG8gbW92ZSBtX2J1ZmZlciB0byBCbG9iIHdpdGhvdXQgZG9pbmcgZXh0cmEgY29w
eS4KKyAgICByZXR1cm4gYmxvYkZyb21EYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdW5zaWdu
ZWQgY2hhcio+KG1fYnVmZmVyLT5kYXRhKCkpLCBtX2J1ZmZlci0+c2l6ZSgpLCBtX2NvbnRlbnRU
eXBlKTsKK30KKworU3RyaW5nIEZldGNoQm9keUNvbnN1bWVyOjp0YWtlQXNUZXh0KCkKK3sKKyAg
ICBpZiAoIW1fYnVmZmVyKQorICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisKKyAgICBhdXRvIHRl
eHQgPSBTdHJpbmcobV9idWZmZXItPmRhdGEoKSwgbV9idWZmZXItPnNpemUoKSk7CisgICAgbV9i
dWZmZXIgPSBudWxscHRyOworICAgIHJldHVybiB0ZXh0OworfQorCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoRkVUQ0hfQVBJKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZhYTFmZTdk
MjhhYzdhNmNhZTMyYWVjNzQ0NDVkOTgwODEzNDRiM2IKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmgKQEAgLTAsMCArMSw3
MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQsIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgcmVxdWlyZWQgdG8gYmUgbWV0OgorICoKKyAqIDEu
ICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgSW5j
LiBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKKyAqIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyAqIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SCisgKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgorICogQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwK
KyAqIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEg
b25jZQorCisjaWYgRU5BQkxFKEZFVENIX0FQSSkKKworI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5o
IgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEJsb2I7CitjbGFzcyBEZWZlcnJlZFdy
YXBwZXI7CisKK2NsYXNzIEZldGNoQm9keUNvbnN1bWVyIHsKK3B1YmxpYzoKKyAgICAvLyBUeXBl
IGlzIHVzZWQgaW4gRmV0Y2hSZXNwb25zZS5qcyBhbmQgc2hvdWxkIGJlIGtlcHQgc3luY2hyb25p
emVkIHdpdGggaXQuCisgICAgZW51bSBjbGFzcyBUeXBlIHsgTm9uZSwgQXJyYXlCdWZmZXIsIEJs
b2IsIEpTT04sIFRleHQgfTsKKworICAgIEZldGNoQm9keUNvbnN1bWVyKFR5cGUgdHlwZSkgOiBt
X3R5cGUodHlwZSkgeyB9CisKKyAgICB2b2lkIGFwcGVuZChjb25zdCBjaGFyKiBkYXRhLCB1bnNp
Z25lZCk7CisgICAgdm9pZCBhcHBlbmQoY29uc3QgdW5zaWduZWQgY2hhciogZGF0YSwgdW5zaWdu
ZWQpOworCisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdGFrZURhdGEoKTsKKyAgICBSZWZQdHI8
SlNDOjpBcnJheUJ1ZmZlcj4gdGFrZUFzQXJyYXlCdWZmZXIoKTsKKyAgICBSZWY8QmxvYj4gdGFr
ZUFzQmxvYigpOworICAgIFN0cmluZyB0YWtlQXNUZXh0KCk7CisKKyAgICB2b2lkIHNldENvbnRl
bnRUeXBlKGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpIHsgbV9jb250ZW50VHlwZSA9IGNvbnRl
bnRUeXBlOyB9CisgICAgdm9pZCBzZXRUeXBlKFR5cGUgdHlwZSkgeyBtX3R5cGUgPSB0eXBlOyB9
CisKKyAgICB2b2lkIGNsZWFuKCkgeyBtX2J1ZmZlciA9IG51bGxwdHI7IH0KKworICAgIHZvaWQg
cmVzb2x2ZShEZWZlcnJlZFdyYXBwZXImKTsKKyAgICB2b2lkIHJlc29sdmVXaXRoRGF0YShEZWZl
cnJlZFdyYXBwZXImLCBjb25zdCB1bnNpZ25lZCBjaGFyKiwgdW5zaWduZWQpOworCisgICAgYm9v
bCBoYXNEYXRhKCkgY29uc3QgeyByZXR1cm4gISFtX2J1ZmZlcjsgfQorCitwcml2YXRlOgorICAg
IFR5cGUgbV90eXBlOworICAgIFN0cmluZyBtX2NvbnRlbnRUeXBlOworICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IG1fYnVmZmVyOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5k
aWYgLy8gRU5BQkxFKEZFVENIX0FQSSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZmV0Y2gvRmV0Y2hCb2R5T3duZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRj
aC9GZXRjaEJvZHlPd25lci5jcHAKaW5kZXggMGY0NTc5NGEwNjllMmVlNjA4YjE4Mzc4ZTNkZjFm
NGJjZTczNTNhNS4uOTY0YmU3NzExMDRkYTY3MTk3ZDNkNTA0YzY5ODgxNDE4Y2M4NTY4OSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlPd25lci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlPd25lci5jcHAKQEAg
LTEzOCw3ICsxMzgsNyBAQCB2b2lkIEZldGNoQm9keU93bmVyOjp0ZXh0KERlZmVycmVkV3JhcHBl
ciYmIHByb21pc2UpCiAgICAgbV9ib2R5LnRleHQoKnRoaXMsIFdURk1vdmUocHJvbWlzZSkpOwog
fQogCi12b2lkIEZldGNoQm9keU93bmVyOjpsb2FkQmxvYihCbG9iJiBibG9iLCBGZXRjaExvYWRl
cjo6VHlwZSB0eXBlKQordm9pZCBGZXRjaEJvZHlPd25lcjo6bG9hZEJsb2IoQmxvYiYgYmxvYiwg
RmV0Y2hCb2R5Q29uc3VtZXIqIGNvbnN1bWVyKQogewogICAgIC8vIENhbiBvbmx5IGJlIGNhbGxl
ZCBvbmNlIGZvciBhIGJvZHkgaW5zdGFuY2UuCiAgICAgQVNTRVJUKGlzRGlzdHVyYmVkKCkpOwpA
QCAtMTUwLDcgKzE1MCw3IEBAIHZvaWQgRmV0Y2hCb2R5T3duZXI6OmxvYWRCbG9iKEJsb2ImIGJs
b2IsIEZldGNoTG9hZGVyOjpUeXBlIHR5cGUpCiAgICAgfQogCiAgICAgbV9ibG9iTG9hZGVyID0g
eyAqdGhpcyB9OwotICAgIG1fYmxvYkxvYWRlci0+bG9hZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxG
ZXRjaExvYWRlcj4odHlwZSwgKm1fYmxvYkxvYWRlcik7CisgICAgbV9ibG9iTG9hZGVyLT5sb2Fk
ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEZldGNoTG9hZGVyPigqbV9ibG9iTG9hZGVyLCBjb25zdW1l
cik7CiAKICAgICBtX2Jsb2JMb2FkZXItPmxvYWRlci0+c3RhcnQoKnNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKSwgYmxvYik7CiAgICAgaWYgKCFtX2Jsb2JMb2FkZXItPmxvYWRlci0+aXNTdGFydGVk
KCkpIHsKQEAgLTE2OSwxMSArMTY5LDYgQEAgdm9pZCBGZXRjaEJvZHlPd25lcjo6ZmluaXNoQmxv
YkxvYWRpbmcoKQogICAgIHVuc2V0UGVuZGluZ0FjdGl2aXR5KHRoaXMpOwogfQogCi12b2lkIEZl
dGNoQm9keU93bmVyOjpsb2FkZWRCbG9iQXNUZXh0KFN0cmluZyYmIHRleHQpCi17Ci0gICAgbV9i
b2R5LmxvYWRlZEFzVGV4dChXVEZNb3ZlKHRleHQpKTsKLX0KLQogdm9pZCBGZXRjaEJvZHlPd25l
cjo6YmxvYkxvYWRpbmdTdWNjZWVkZWQoKQogewogICAgIEFTU0VSVChtX2JvZHkudHlwZSgpID09
IEZldGNoQm9keTo6VHlwZTo6QmxvYik7CkBAIC0xODQsNyArMTc5LDcgQEAgdm9pZCBGZXRjaEJv
ZHlPd25lcjo6YmxvYkxvYWRpbmdTdWNjZWVkZWQoKQogICAgICAgICBtX3JlYWRhYmxlU3RyZWFt
U291cmNlID0gbnVsbHB0cjsKICAgICB9CiAjZW5kaWYKLQorICAgIG1fYm9keS5sb2FkaW5nU3Vj
Y2VlZGVkKCk7CiAgICAgZmluaXNoQmxvYkxvYWRpbmcoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlPd25lci5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlPd25lci5oCmluZGV4IDA2YTIxMjY2NWMzOWZjMzkw
N2QzOGUxM2Y0Y2MxMzNjYzg3MmM3YjQuLjg3YjcyZjBhNDk5ZjkzMzZhNDBmYTQ4NjMzYTE4OTA5
MjIzYjFkOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hC
b2R5T3duZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keU93
bmVyLmgKQEAgLTUyLDcgKzUyLDcgQEAgcHVibGljOgogICAgIHZvaWQganNvbihEZWZlcnJlZFdy
YXBwZXImJik7CiAgICAgdm9pZCB0ZXh0KERlZmVycmVkV3JhcHBlciYmKTsKIAotICAgIHZvaWQg
bG9hZEJsb2IoQmxvYiYsIEZldGNoTG9hZGVyOjpUeXBlKTsKKyAgICB2b2lkIGxvYWRCbG9iKEJs
b2ImLCBGZXRjaEJvZHlDb25zdW1lciopOwogCiAgICAgYm9vbCBpc0FjdGl2ZSgpIGNvbnN0IHsg
cmV0dXJuICEhbV9ibG9iTG9hZGVyOyB9CiAKQEAgLTY3LDggKzY3LDYgQEAgcHJvdGVjdGVkOgog
CiBwcml2YXRlOgogICAgIC8vIEJsb2IgbG9hZGluZyByb3V0aW5lcwotICAgIHZvaWQgbG9hZGVk
QmxvYkFzVGV4dChTdHJpbmcmJik7Ci0gICAgdm9pZCBsb2FkZWRCbG9iQXNBcnJheUJ1ZmZlcihS
ZWZQdHI8QXJyYXlCdWZmZXI+JiYgYnVmZmVyKSB7IG1fYm9keS5sb2FkZWRBc0FycmF5QnVmZmVy
KFdURk1vdmUoYnVmZmVyKSk7IH0KICAgICB2b2lkIGJsb2JDaHVuayhjb25zdCBjaGFyKiwgc2l6
ZV90KTsKICAgICB2b2lkIGJsb2JMb2FkaW5nU3VjY2VlZGVkKCk7CiAgICAgdm9pZCBibG9iTG9h
ZGluZ0ZhaWxlZCgpOwpAQCAtNzgsOCArNzYsNiBAQCBwcml2YXRlOgogICAgICAgICBCbG9iTG9h
ZGVyKEZldGNoQm9keU93bmVyJik7CiAKICAgICAgICAgLy8gRmV0Y2hMb2FkZXJDbGllbnQgQVBJ
Ci0gICAgICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZ0FzVGV4dChTdHJpbmcmJiB0ZXh0KSBmaW5h
bCB7IG93bmVyLmxvYWRlZEJsb2JBc1RleHQoV1RGTW92ZSh0ZXh0KSk7IH0KLSAgICAgICAgdm9p
ZCBkaWRGaW5pc2hMb2FkaW5nQXNBcnJheUJ1ZmZlcihSZWZQdHI8QXJyYXlCdWZmZXI+JiYgYnVm
ZmVyKSBmaW5hbCB7IG93bmVyLmxvYWRlZEJsb2JBc0FycmF5QnVmZmVyKFdURk1vdmUoYnVmZmVy
KSk7IH0KICAgICAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYpIGZpbmFsOwogICAgICAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIqIGRh
dGEsIHNpemVfdCBzaXplKSBmaW5hbCB7IG93bmVyLmJsb2JDaHVuayhkYXRhLCBzaXplKTsgfQog
ICAgICAgICB2b2lkIGRpZEZhaWwoKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZmV0Y2gvRmV0Y2hJbnRlcm5hbHMuanMgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2ZldGNoL0ZldGNoSW50ZXJuYWxzLmpzCmluZGV4IDQ1MmVjNzYzNTM1YTgwOWVhOGQ4Mjk4ZTA2
OTM1ZWU1YjMwNzZlNGIuLmQ3NTAwNGUyZjgwODViMTVjNzEwMDcwMDE1YmVkZDFiNWFiYjIyYzYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hJbnRlcm5hbHMu
anMKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEludGVybmFscy5qcwpA
QCAtNTEsMyArNTEsMjcgQEAgZnVuY3Rpb24gZmlsbEZldGNoSGVhZGVycyhoZWFkZXJzLCBoZWFk
ZXJzSW5pdCkKICAgICAgICAgQEhlYWRlcnMucHJvdG90eXBlLkBhcHBlbmRGcm9tSlMuQGNhbGwo
aGVhZGVycywgbmFtZSwgaGVhZGVyc0luaXRbbmFtZV0pOwogICAgIH0KIH0KKworZnVuY3Rpb24g
Y29uc3VtZVN0cmVhbShyZXNwb25zZSwgdHlwZSkKK3sKKyAgICBAYXNzZXJ0KHJlc3BvbnNlIGlu
c3RhbmNlb2YgQFJlc3BvbnNlKTsKKyAgICBAYXNzZXJ0KHJlc3BvbnNlLkBib2R5IGluc3RhbmNl
b2YgQFJlYWRhYmxlU3RyZWFtKTsKKworICAgIGlmIChAaXNSZWFkYWJsZVN0cmVhbURpc3R1cmJl
ZChyZXNwb25zZS5AYm9keSkpCisgICAgICAgIHJldHVybiBAUHJvbWlzZS5AcmVqZWN0KG5ldyBA
VHlwZUVycm9yKCJDYW5ub3QgY29uc3VtZSBhIGRpc3R1cmJlZCBSZXNwb25zZSBib2R5IFJlYWRh
YmxlU3RyZWFtIikpOworCisgICAgdHJ5IHsKKyAgICAgICAgbGV0IHJlYWRlciA9IG5ldyBAUmVh
ZGFibGVTdHJlYW1SZWFkZXIocmVzcG9uc2UuQGJvZHkpOworCisgICAgICAgIEBSZXNwb25zZS5w
cm90b3R5cGUuQHN0YXJ0Q29uc3VtaW5nU3RyZWFtLkBjYWxsKHJlc3BvbnNlLCB0eXBlKTsKKyAg
ICAgICAgbGV0IHB1bGwgPSAocmVzdWx0KSA9PiB7CisgICAgICAgICAgICBpZiAocmVzdWx0LmRv
bmUpCisgICAgICAgICAgICAgICAgcmV0dXJuIEBSZXNwb25zZS5wcm90b3R5cGUuQGZpbmlzaENv
bnN1bWluZ1N0cmVhbS5AY2FsbChyZXNwb25zZSk7CisgICAgICAgICAgICBAUmVzcG9uc2UucHJv
dG90eXBlLkBjb25zdW1lQ2h1bmsuQGNhbGwocmVzcG9uc2UsIHJlc3VsdC52YWx1ZSk7CisgICAg
ICAgICAgICByZXR1cm4gQFByb21pc2UucHJvdG90eXBlLkB0aGVuLkBjYWxsKEByZWFkRnJvbVJl
YWRhYmxlU3RyZWFtUmVhZGVyKHJlYWRlciksIHB1bGwpOworICAgICAgICB9CisgICAgICAgIHJl
dHVybiBAUHJvbWlzZS5wcm90b3R5cGUuQHRoZW4uQGNhbGwoQHJlYWRGcm9tUmVhZGFibGVTdHJl
YW1SZWFkZXIocmVhZGVyKSwgcHVsbCk7CisgICAgfSBjYXRjaChlKSB7CisgICAgICAgIHJldHVy
biBAUHJvbWlzZS5AcmVqZWN0KGUpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9mZXRjaC9GZXRjaExvYWRlci5jcHAKaW5kZXggMWIyM2YwNDllNjdiNDY3MWMxZTE2YTY4OWUx
ZGIyYjQ0YWQxM2Y4MC4uZTYzYmMxYjJkMzNjMzJkMjFlNDlmOTlhNTcyMjY0NzMwMTUyNjJlYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlci5jcHAKQEAgLTg5
LDI0ICs4OSwyNiBAQCB2b2lkIEZldGNoTG9hZGVyOjpzdGFydChTY3JpcHRFeGVjdXRpb25Db250
ZXh0JiBjb250ZXh0LCBjb25zdCBGZXRjaFJlcXVlc3QmIHJlcQogICAgIG1faXNTdGFydGVkID0g
bV9sb2FkZXI7CiB9CiAKLUZldGNoTG9hZGVyOjpGZXRjaExvYWRlcihUeXBlIHR5cGUsIEZldGNo
TG9hZGVyQ2xpZW50JiBjbGllbnQpCi0gICAgOiBtX3R5cGUodHlwZSkKLSAgICAsIG1fY2xpZW50
KGNsaWVudCkKK0ZldGNoTG9hZGVyOjpGZXRjaExvYWRlcihGZXRjaExvYWRlckNsaWVudCYgY2xp
ZW50LCBGZXRjaEJvZHlDb25zdW1lciogY29uc3VtZXIpCisgICAgOiBtX2NsaWVudChjbGllbnQp
CisgICAgLCBtX2NvbnN1bWVyKGNvbnN1bWVyKQogewogfQogCiB2b2lkIEZldGNoTG9hZGVyOjpz
dG9wKCkKIHsKLSAgICBtX2RhdGEgPSBudWxscHRyOworICAgIGlmIChtX2NvbnN1bWVyKQorICAg
ICAgICBtX2NvbnN1bWVyLT5jbGVhbigpOwogICAgIGlmIChtX2xvYWRlcikKICAgICAgICAgbV9s
b2FkZXItPmNhbmNlbCgpOwogfQogCiBSZWZQdHI8U2hhcmVkQnVmZmVyPiBGZXRjaExvYWRlcjo6
c3RhcnRTdHJlYW1pbmcoKQogewotICAgIEFTU0VSVChtX3R5cGUgPT0gVHlwZTo6QXJyYXlCdWZm
ZXIpOwotICAgIG1fdHlwZSA9IFR5cGU6OlN0cmVhbTsKLSAgICByZXR1cm4gV1RGTW92ZShtX2Rh
dGEpOworICAgIEFTU0VSVChtX2NvbnN1bWVyKTsKKyAgICBhdXRvIGZpcnN0Q2h1bmsgPSBtX2Nv
bnN1bWVyLT50YWtlRGF0YSgpOworICAgIG1fY29uc3VtZXIgPSBudWxscHRyOworICAgIHJldHVy
biBmaXJzdENodW5rOwogfQogCiB2b2lkIEZldGNoTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2Uo
dW5zaWduZWQgbG9uZywgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCkBAIC0xMTQs
MjkgKzExNiwxNyBAQCB2b2lkIEZldGNoTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UodW5zaWdu
ZWQgbG9uZywgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcAogICAgIG1fY2xpZW50LmRpZFJl
Y2VpdmVSZXNwb25zZShyZXNwb25zZSk7CiB9CiAKLS8vIEZJWE1FOiBXZSBzaG91bGQgbWFrZSB0
ZXh0IGFuZCBibG9iIGNyZWF0aW9uIG1vcmUgZWZmaWNpZW50LgotLy8gV2UgbWlnaHQgYWxzbyB3
YW50IHRvIG1lcmdlIHRoaXMgY2xhc3Mgd2l0aCBGaWxlUmVhZGVyTG9hZGVyLgogdm9pZCBGZXRj
aExvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgY2hhciogdmFsdWUsIGludCBzaXplKQogewot
ICAgIGlmIChtX3R5cGUgPT0gVHlwZTo6U3RyZWFtKSB7CisgICAgaWYgKCFtX2NvbnN1bWVyKSB7
CiAgICAgICAgIG1fY2xpZW50LmRpZFJlY2VpdmVEYXRhKHZhbHVlLCBzaXplKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KLSAgICBpZiAoIW1fZGF0YSkgewotICAgICAgICBtX2RhdGEgPSBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZSh2YWx1ZSwgc2l6ZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0g
ICAgbV9kYXRhLT5hcHBlbmQodmFsdWUsIHNpemUpOworICAgIG1fY29uc3VtZXItPmFwcGVuZCh2
YWx1ZSwgc2l6ZSk7CiB9CiAKIHZvaWQgRmV0Y2hMb2FkZXI6OmRpZEZpbmlzaExvYWRpbmcodW5z
aWduZWQgbG9uZywgZG91YmxlKQogewotICAgIGlmIChtX3R5cGUgPT0gVHlwZTo6QXJyYXlCdWZm
ZXIpCi0gICAgICAgIG1fY2xpZW50LmRpZEZpbmlzaExvYWRpbmdBc0FycmF5QnVmZmVyKG1fZGF0
YSA/IG1fZGF0YS0+Y3JlYXRlQXJyYXlCdWZmZXIoKSA6IEFycmF5QnVmZmVyOjp0cnlDcmVhdGUo
bnVsbHB0ciwgMCkpOwotICAgIGVsc2UgaWYgKG1fdHlwZSA9PSBUeXBlOjpUZXh0KQotICAgICAg
ICBtX2NsaWVudC5kaWRGaW5pc2hMb2FkaW5nQXNUZXh0KG1fZGF0YSA/IFRleHRSZXNvdXJjZURl
Y29kZXI6OmNyZWF0ZShBU0NJSUxpdGVyYWwoInRleHQvcGxhaW4iKSwgIlVURi04IiktPmRlY29k
ZUFuZEZsdXNoKG1fZGF0YS0+ZGF0YSgpLCBtX2RhdGEtPnNpemUoKSk6IFN0cmluZygpKTsKLSAg
ICBtX2RhdGEgPSBudWxscHRyOwotCiAgICAgbV9jbGllbnQuZGlkU3VjY2VlZCgpOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyLmgKaW5kZXggZDQ3M2ZmMTc0
NTFmY2E1YzFhNzEzZmI1NDNiZDBiNmEwYjFkZTAyYi4uZGJiODJmYmViZDU1OWU3N2QxY2UxYjYx
NmJjNmQwYjRmMWFlZjNjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRj
aC9GZXRjaExvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hM
b2FkZXIuaApAQCAtMjYsMTIgKzI2LDExIEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5k
ZWYgRmV0Y2hMb2FkZXJfaAotI2RlZmluZSBGZXRjaExvYWRlcl9oCisjcHJhZ21hIG9uY2UKIAog
I2lmIEVOQUJMRShGRVRDSF9BUEkpCiAKLSNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKKyNpbmNs
dWRlICJGZXRjaEJvZHlDb25zdW1lci5oIgogI2luY2x1ZGUgIlRocmVhZGFibGVMb2FkZXIuaCIK
ICNpbmNsdWRlICJUaHJlYWRhYmxlTG9hZGVyQ2xpZW50LmgiCiAKQEAgLTQ0LDkgKzQzLDcgQEAg
Y2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKIAogY2xhc3MgRmV0Y2hMb2FkZXIgZmluYWwg
OiBwdWJsaWMgVGhyZWFkYWJsZUxvYWRlckNsaWVudCB7CiBwdWJsaWM6Ci0gICAgZW51bSBjbGFz
cyBUeXBlIHsgQXJyYXlCdWZmZXIsIFN0cmVhbSwgVGV4dCB9OwotCi0gICAgRmV0Y2hMb2FkZXIo
VHlwZSwgRmV0Y2hMb2FkZXJDbGllbnQmKTsKKyAgICBGZXRjaExvYWRlcihGZXRjaExvYWRlckNs
aWVudCYsIEZldGNoQm9keUNvbnN1bWVyKik7CiAKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBz
dGFydFN0cmVhbWluZygpOwogCkBAIC02MywxOCArNjAsMTMgQEAgcHJpdmF0ZToKICAgICB2b2lk
IGRpZEZpbmlzaExvYWRpbmcodW5zaWduZWQgbG9uZywgZG91YmxlKSBmaW5hbDsKICAgICB2b2lk
IGRpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYpIGZpbmFsOwogCi0gICAgVHlwZSB0eXBlKCkg
Y29uc3QgeyByZXR1cm4gbV90eXBlOyB9Ci0KIHByaXZhdGU6Ci0gICAgVHlwZSBtX3R5cGUgeyBU
eXBlOjpBcnJheUJ1ZmZlciB9OwogICAgIEZldGNoTG9hZGVyQ2xpZW50JiBtX2NsaWVudDsKICAg
ICBSZWZQdHI8VGhyZWFkYWJsZUxvYWRlcj4gbV9sb2FkZXI7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gbV9kYXRhOworICAgIEZldGNoQm9keUNvbnN1bWVyKiBtX2NvbnN1bWVyOwogICAgIGJv
b2wgbV9pc1N0YXJ0ZWQgeyBmYWxzZSB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQog
CiAjZW5kaWYgLy8gRU5BQkxFKEZFVENIX0FQSSkKLQotI2VuZGlmIC8vIEZldGNoTG9hZGVyX2gK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXJDbGll
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXJDbGllbnQuaApp
bmRleCBkMDlmYWQ1M2UyN2U2ZDhhYzIyYWRiN2NhOWY0NTEwMjc4ZGE0MTUwLi5lODhlOTk0MThj
ZDk5MTRhMWVlNDgxODc3ZDYxYWRjYjZlMDRlYWY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlckNsaWVudC5oCkBAIC00Nyw4ICs0Nyw2IEBAIHB1Ymxp
YzoKIAogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYpIHsgfQogCi0gICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWRpbmdBc1RleHQo
U3RyaW5nJiYpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hMb2FkaW5nQXNBcnJheUJ1
ZmZlcihSZWZQdHI8SlNDOjpBcnJheUJ1ZmZlcj4mJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRp
ZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIqLCBzaXplX3QpIHsgfQogCiAgICAgdmlydHVhbCB2b2lk
IGRpZFN1Y2NlZWQoKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Zl
dGNoL0ZldGNoUmVzcG9uc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRj
aFJlc3BvbnNlLmNwcAppbmRleCBjMmU4YWJhYWIxMWEyMDE1NDBkOGJkMTI4NTBlNTFlNzBiMmVh
MzAxLi42NzM4ZmEzMTgzYzk2MTE1OTExMmNlMThjZDA1MGNiODgwZGE4NDAzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAKQEAgLTM0LDYgKzM0
LDcgQEAKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCiAjaW5jbHVkZSAiRmV0Y2hSZXF1ZXN0
LmgiCiAjaW5jbHVkZSAiSFRUUFBhcnNlcnMuaCIKKyNpbmNsdWRlICJKU0Jsb2IuaCIKICNpbmNs
dWRlICJKU0ZldGNoUmVzcG9uc2UuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0
LmgiCiAKQEAgLTkzLDEzICs5NCwxMSBAQCBGZXRjaFJlc3BvbnNlOjpGZXRjaFJlc3BvbnNlKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIEZldGNoQm9keSYmIGJvZHksCiB7CiB9CiAK
LVJlZlB0cjxGZXRjaFJlc3BvbnNlPiBGZXRjaFJlc3BvbnNlOjpjbG9uZShTY3JpcHRFeGVjdXRp
b25Db250ZXh0JiBjb250ZXh0LCBFeGNlcHRpb25Db2RlJiBlYykKK1JlZjxGZXRjaFJlc3BvbnNl
PiBGZXRjaFJlc3BvbnNlOjpjbG9uZUZvckpTKCkKIHsKLSAgICBpZiAoaXNEaXN0dXJiZWQoKSkg
ewotICAgICAgICBlYyA9IFR5cGVFcnJvcjsKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAg
fQotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZldGNoUmVzcG9uc2UoY29udGV4dCwgRmV0Y2hC
b2R5KG1fYm9keSksIEZldGNoSGVhZGVyczo6Y3JlYXRlKGhlYWRlcnMoKSksIFJlc291cmNlUmVz
cG9uc2UobV9yZXNwb25zZSkpKTsKKyAgICBBU1NFUlQoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
KTsKKyAgICBBU1NFUlQoIWlzRGlzdHVyYmVkKCkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IEZldGNoUmVzcG9uc2UoKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgRmV0Y2hCb2R5KG1fYm9k
eSksIEZldGNoSGVhZGVyczo6Y3JlYXRlKGhlYWRlcnMoKSksIFJlc291cmNlUmVzcG9uc2UobV9y
ZXNwb25zZSkpKTsKIH0KIAogdm9pZCBGZXRjaFJlc3BvbnNlOjpmZXRjaChTY3JpcHRFeGVjdXRp
b25Db250ZXh0JiBjb250ZXh0LCBGZXRjaFJlcXVlc3QmIHJlcXVlc3QsIEZldGNoUHJvbWlzZSYm
IHByb21pc2UpCkBAIC0xMzAsNiArMTI5LDggQEAgdm9pZCBGZXRjaFJlc3BvbnNlOjpCb2R5TG9h
ZGVyOjpkaWRTdWNjZWVkKCkKICAgICAgICAgbV9yZXNwb25zZS5tX3JlYWRhYmxlU3RyZWFtU291
cmNlID0gbnVsbHB0cjsKICAgICB9CiAjZW5kaWYKKyAgICBtX3Jlc3BvbnNlLm1fYm9keS5sb2Fk
aW5nU3VjY2VlZGVkKCk7CisKICAgICBpZiAobV9sb2FkZXItPmlzU3RhcnRlZCgpKQogICAgICAg
ICBtX3Jlc3BvbnNlLm1fYm9keUxvYWRlciA9IE51bGxvcHQ7CiAgICAgbV9yZXNwb25zZS51bnNl
dFBlbmRpbmdBY3Rpdml0eSgmbV9yZXNwb25zZSk7CkBAIC0xODcsMTQgKzE4OCw5IEBAIHZvaWQg
RmV0Y2hSZXNwb25zZTo6Qm9keUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgY2hhciogZGF0
YSwgc2l6ZV90IHNpemUpCiAjZW5kaWYKIH0KIAotdm9pZCBGZXRjaFJlc3BvbnNlOjpCb2R5TG9h
ZGVyOjpkaWRGaW5pc2hMb2FkaW5nQXNBcnJheUJ1ZmZlcihSZWZQdHI8QXJyYXlCdWZmZXI+JiYg
YnVmZmVyKQotewotICAgIG1fcmVzcG9uc2UuYm9keSgpLmxvYWRlZEFzQXJyYXlCdWZmZXIoV1RG
TW92ZShidWZmZXIpKTsKLX0KLQogYm9vbCBGZXRjaFJlc3BvbnNlOjpCb2R5TG9hZGVyOjpzdGFy
dChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBjb25zdCBGZXRjaFJlcXVlc3QmIHJl
cXVlc3QpCiB7Ci0gICAgbV9sb2FkZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEZldGNoTG9hZGVyPihG
ZXRjaExvYWRlcjo6VHlwZTo6QXJyYXlCdWZmZXIsICp0aGlzKTsKKyAgICBtX2xvYWRlciA9IHN0
ZDo6bWFrZV91bmlxdWU8RmV0Y2hMb2FkZXI+KCp0aGlzLCAmbV9yZXNwb25zZS5tX2JvZHkuY29u
c3VtZXIoKSk7CiAgICAgbV9sb2FkZXItPnN0YXJ0KGNvbnRleHQsIHJlcXVlc3QpOwogICAgIHJl
dHVybiBtX2xvYWRlci0+aXNTdGFydGVkKCk7CiB9CkBAIC0yMDUsNyArMjAxLDQ2IEBAIHZvaWQg
RmV0Y2hSZXNwb25zZTo6Qm9keUxvYWRlcjo6c3RvcCgpCiAgICAgICAgIG1fbG9hZGVyLT5zdG9w
KCk7CiB9CiAKK3ZvaWQgRmV0Y2hSZXNwb25zZTo6Y29uc3VtZSh1bnNpZ25lZCB0eXBlLCBEZWZl
cnJlZFdyYXBwZXImJiB3cmFwcGVyKQoreworICAgIEFTU0VSVCh0eXBlIDw9IHN0YXRpY19jYXN0
PHVuc2lnbmVkPihGZXRjaEJvZHlDb25zdW1lcjo6VHlwZTo6VGV4dCkpOworCisgICAgc3dpdGNo
IChzdGF0aWNfY2FzdDxGZXRjaEJvZHlDb25zdW1lcjo6VHlwZT4odHlwZSkpIHsKKyAgICBjYXNl
IEZldGNoQm9keUNvbnN1bWVyOjpUeXBlOjpBcnJheUJ1ZmZlcjoKKyAgICAgICAgYXJyYXlCdWZm
ZXIoV1RGTW92ZSh3cmFwcGVyKSk7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIEZldGNoQm9k
eUNvbnN1bWVyOjpUeXBlOjpCbG9iOgorICAgICAgICBibG9iKFdURk1vdmUod3JhcHBlcikpOwor
ICAgICAgICByZXR1cm47CisgICAgY2FzZSBGZXRjaEJvZHlDb25zdW1lcjo6VHlwZTo6SlNPTjoK
KyAgICAgICAganNvbihXVEZNb3ZlKHdyYXBwZXIpKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNh
c2UgRmV0Y2hCb2R5Q29uc3VtZXI6OlR5cGU6OlRleHQ6CisgICAgICAgIHRleHQoV1RGTW92ZSh3
cmFwcGVyKSk7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIEZldGNoQm9keUNvbnN1bWVyOjpU
eXBlOjpOb25lOgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KK30KKwogI2lmIEVOQUJMRShTVFJFQU1TX0FQSSkKK3ZvaWQgRmV0Y2hSZXNwb25z
ZTo6c3RhcnRDb25zdW1pbmdTdHJlYW0odW5zaWduZWQgdHlwZSkKK3sKKyAgICBtX2lzRGlzdHVy
YmVkID0gdHJ1ZTsKKyAgICBtX2NvbnN1bWVyLnNldFR5cGUoc3RhdGljX2Nhc3Q8RmV0Y2hCb2R5
Q29uc3VtZXI6OlR5cGU+KHR5cGUpKTsKK30KKwordm9pZCBGZXRjaFJlc3BvbnNlOjpjb25zdW1l
Q2h1bmsoUmVmPEpTQzo6VWludDhBcnJheT4mJiBjaHVuaykKK3sKKyAgICBtX2NvbnN1bWVyLmFw
cGVuZChjaHVuay0+ZGF0YSgpLCBjaHVuay0+Ynl0ZUxlbmd0aCgpKTsKK30KKwordm9pZCBGZXRj
aFJlc3BvbnNlOjpmaW5pc2hDb25zdW1pbmdTdHJlYW0oRGVmZXJyZWRXcmFwcGVyJiYgcHJvbWlz
ZSkKK3sKKyAgICBtX2NvbnN1bWVyLnJlc29sdmUocHJvbWlzZSk7Cit9CisKIHZvaWQgRmV0Y2hS
ZXNwb25zZTo6Y29uc3VtZUJvZHlBc1N0cmVhbSgpCiB7CiAgICAgQVNTRVJUKG1fcmVhZGFibGVT
dHJlYW1Tb3VyY2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9G
ZXRjaFJlc3BvbnNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9u
c2UuaAppbmRleCA1NzNjMjcwOGQ4ZGM5NGRkYTgxMDViNGM5NjBjNTE1OTY4NTQyMDRmLi44NDg2
MjUxNDA1MDdkODBjODM2ZDcxOTU1YTFiM2I2ZmRiMjhiMjZkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1
ZGUgIkZldGNoQm9keU93bmVyLmgiCiAjaW5jbHVkZSAiRmV0Y2hIZWFkZXJzLmgiCiAjaW5jbHVk
ZSAiUmVzb3VyY2VSZXNwb25zZS5oIgorI2luY2x1ZGUgPHJ1bnRpbWUvVHlwZWRBcnJheXMuaD4K
IAogbmFtZXNwYWNlIEpTQyB7CiBjbGFzcyBBcnJheUJ1ZmZlcjsKQEAgLTU5LDYgKzYwLDEzIEBA
IHB1YmxpYzoKICAgICB1c2luZyBGZXRjaFByb21pc2UgPSBET01Qcm9taXNlPEZldGNoUmVzcG9u
c2U+OwogICAgIHN0YXRpYyB2b2lkIGZldGNoKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBGZXRj
aFJlcXVlc3QmLCBGZXRjaFByb21pc2UmJik7CiAKKyAgICB2b2lkIGNvbnN1bWUodW5zaWduZWQs
IERlZmVycmVkV3JhcHBlciYmKTsKKyNpZiBFTkFCTEUoU1RSRUFNU19BUEkpCisgICAgdm9pZCBz
dGFydENvbnN1bWluZ1N0cmVhbSh1bnNpZ25lZCk7CisgICAgdm9pZCBjb25zdW1lQ2h1bmsoUmVm
PEpTQzo6VWludDhBcnJheT4mJik7CisgICAgdm9pZCBmaW5pc2hDb25zdW1pbmdTdHJlYW0oRGVm
ZXJyZWRXcmFwcGVyJiYpOworI2VuZGlmCisKICAgICB2b2lkIHNldFN0YXR1cyhpbnQsIGNvbnN0
IFN0cmluZyYsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICB2b2lkIGluaXRpYWxpemVXaXRoKEpTQzo6
RXhlY1N0YXRlJiwgSlNDOjpKU1ZhbHVlKTsKIApAQCAtNzAsNyArNzgsNyBAQCBwdWJsaWM6CiAg
ICAgY29uc3QgU3RyaW5nJiBzdGF0dXNUZXh0KCkgY29uc3QgeyByZXR1cm4gbV9yZXNwb25zZS5o
dHRwU3RhdHVzVGV4dCgpOyB9CiAKICAgICBGZXRjaEhlYWRlcnMmIGhlYWRlcnMoKSB7IHJldHVy
biBtX2hlYWRlcnM7IH0KLSAgICBSZWZQdHI8RmV0Y2hSZXNwb25zZT4gY2xvbmUoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBSZWY8RmV0Y2hSZXNwb25zZT4g
Y2xvbmVGb3JKUygpOwogCiAjaWYgRU5BQkxFKFNUUkVBTVNfQVBJKQogICAgIFJlYWRhYmxlU3Ry
ZWFtU291cmNlKiBjcmVhdGVSZWFkYWJsZVN0cmVhbVNvdXJjZSgpOwpAQCAtMTA1LDcgKzExMyw2
IEBAIHByaXZhdGU6CiAgICAgICAgIHZvaWQgZGlkRmFpbCgpIGZpbmFsOwogICAgICAgICB2b2lk
IGRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgZmluYWw7CiAgICAg
ICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgY2hhciosIHNpemVfdCkgZmluYWw7Ci0gICAg
ICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZ0FzQXJyYXlCdWZmZXIoUmVmUHRyPEFycmF5QnVmZmVy
PiYmKSBmaW5hbDsKIAogICAgICAgICBGZXRjaFJlc3BvbnNlJiBtX3Jlc3BvbnNlOwogICAgICAg
ICBPcHRpb25hbDxGZXRjaFByb21pc2U+IG1fcHJvbWlzZTsKQEAgLTExNiw2ICsxMjMsOCBAQCBw
cml2YXRlOgogICAgIFJlZjxGZXRjaEhlYWRlcnM+IG1faGVhZGVyczsKICAgICBPcHRpb25hbDxC
b2R5TG9hZGVyPiBtX2JvZHlMb2FkZXI7CiAgICAgbXV0YWJsZSBTdHJpbmcgbV9yZXNwb25zZVVS
TDsKKworICAgIEZldGNoQm9keUNvbnN1bWVyIG1fY29uc3VtZXIgeyBGZXRjaEJvZHlDb25zdW1l
cjo6VHlwZTo6QXJyYXlCdWZmZXIgIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaWRs
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmlkbAppbmRleCAz
ZmIxNDg4MTQzNTRjZTdkMWY4NDAxODBiYzk5MGRmYjIzZDBhOTJiLi5iZTNjMmNlMDI5MzdmNjIz
OGY4NjVkOTIxOTIyNmI2ZmIxZDE3MDFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZmV0Y2gvRmV0Y2hSZXNwb25zZS5pZGwKQEAgLTUzLDExICs1MywyNSBAQCBpbnRlcmZhY2UgRmV0
Y2hSZXNwb25zZSB7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIEZldGNoSGVhZGVycyBoZWFkZXJz
OwogICAgIFtKU0J1aWx0aW5dIHJlYWRvbmx5IGF0dHJpYnV0ZSBSZWFkYWJsZVN0cmVhbT8gYm9k
eTsKIAotICAgIFtOZXdPYmplY3QsIENhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIFJh
aXNlc0V4Y2VwdGlvbl0gRmV0Y2hSZXNwb25zZSBjbG9uZSgpOworICAgIC8vIENvcHkgb2YgRmV0
Y2hCb2R5IElETCBhcyB3ZSB3YW50IHRvIGltcGxlbWVudCBzb21lIG9mIHRoZXNlIGFzIGJ1aWx0
LWlucy4KKyAgICBbSW1wbGVtZW50ZWRBcz1pc0Rpc3R1cmJlZF0gcmVhZG9ubHkgYXR0cmlidXRl
IGJvb2xlYW4gYm9keVVzZWQ7CisgICAgW0pTQnVpbHRpbl0gUHJvbWlzZSBhcnJheUJ1ZmZlcigp
OworICAgIFtKU0J1aWx0aW5dIFByb21pc2UgYmxvYigpOworICAgIFtKU0J1aWx0aW5dIFByb21p
c2UgZm9ybURhdGEoKTsKKyAgICBbSlNCdWlsdGluXSBQcm9taXNlIGpzb24oKTsKKyAgICBbSlNC
dWlsdGluXSBQcm9taXNlIHRleHQoKTsKIAorICAgIFtKU0J1aWx0aW5dIEZldGNoUmVzcG9uc2Ug
Y2xvbmUoKTsKKworICAgIFtQcml2YXRlSWRlbnRpZmllciwgTmV3T2JqZWN0XSBGZXRjaFJlc3Bv
bnNlIGNsb25lRm9ySlMoKTsKKworICAgIFtDb25kaXRpb25hbD1TVFJFQU1TX0FQSSwgUHJpdmF0
ZUlkZW50aWZpZXJdIHZvaWQgc3RhcnRDb25zdW1pbmdTdHJlYW0odW5zaWduZWQgc2hvcnQgdHlw
ZSk7CisgICAgW0NvbmRpdGlvbmFsPVNUUkVBTVNfQVBJLCBQcml2YXRlSWRlbnRpZmllcl0gdm9p
ZCBjb25zdW1lQ2h1bmsoVWludDhBcnJheSBjaHVuayk7CisgICAgW0NvbmRpdGlvbmFsPVNUUkVB
TVNfQVBJLCBQcml2YXRlSWRlbnRpZmllcl0gUHJvbWlzZSBmaW5pc2hDb25zdW1pbmdTdHJlYW0o
KTsKKworICAgIFtQcml2YXRlSWRlbnRpZmllcl0gUHJvbWlzZSBjb25zdW1lKHVuc2lnbmVkIHNo
b3J0IHR5cGUpOwogICAgIFtQcml2YXRlSWRlbnRpZmllciwgUmFpc2VzRXhjZXB0aW9uXSB2b2lk
IHNldFN0YXR1cyh1bnNpZ25lZCBzaG9ydCBzdGF0dXMsIERPTVN0cmluZyBzdGF0dXNUZXh0KTsK
ICAgICBbQ2FsbFdpdGg9U2NyaXB0U3RhdGUsIFByaXZhdGVJZGVudGlmaWVyXSB2b2lkIGluaXRp
YWxpemVXaXRoKGFueSBib2R5KTsKICAgICBbUHJpdmF0ZUlkZW50aWZpZXIsIE5ld09iamVjdF0g
UmVhZGFibGVTdHJlYW1Tb3VyY2UgY3JlYXRlUmVhZGFibGVTdHJlYW1Tb3VyY2UoKTsKICAgICBb
UHJpdmF0ZUlkZW50aWZpZXJdIGJvb2xlYW4gaXNEaXN0dXJiZWQoKTsKIH07Ci1GZXRjaFJlc3Bv
bnNlIGltcGxlbWVudHMgRmV0Y2hCb2R5OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmpzIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRj
aC9GZXRjaFJlc3BvbnNlLmpzCmluZGV4IGM0YWNjMDEwMTFmNGMxZWU2MzcwZGMzMzQxMzM5ZGI2
ODU4MTkwM2UuLjJkYTlhYzJjY2YwZWVjZmM5YTkxOTRiZDE3MWUwNzk1ZWQ5MDMyY2EgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5qcworKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuanMKQEAgLTQ4LDYg
KzQ4LDEyIEBAIGZ1bmN0aW9uIGluaXRpYWxpemVGZXRjaFJlc3BvbnNlKGJvZHksIGluaXQpCiAg
ICAgaWYgKGJvZHkgIT09IEB1bmRlZmluZWQgJiYgYm9keSAhPT0gbnVsbCkgewogICAgICAgICBp
ZiAoc3RhdHVzID09IDEwMSB8fCBzdGF0dXMgPT0gMjA0IHx8IHN0YXR1cyA9PSAyMDUgfHwgc3Rh
dHVzID09IDMwNCkKICAgICAgICAgICAgIHRocm93IG5ldyBAVHlwZUVycm9yKCJSZXNwb25zZSBj
YW5ub3QgaGF2ZSBhIGJvZHkgd2l0aCB0aGUgZ2l2ZW4gc3RhdHVzIik7CisKKyAgICAgICAgLy8g
RklYTUU6IFVzZSBAaXNSZWFkYWJsZVN0cmVhbSBvbmNlIGl0IGlzIG5vIGxvbmdlciBndWFyZGVk
IGJ5IFNUUkVBTVNfQVBJIGd1YXJkLgorICAgICAgICBsZXQgaXNCb2R5UmVhZGFibGVTdHJlYW0g
PSAoQGlzT2JqZWN0KGJvZHkpICYmICEhYm9keS5AdW5kZXJseWluZ1NvdXJjZSk7CisgICAgICAg
IGlmIChpc0JvZHlSZWFkYWJsZVN0cmVhbSkKKyAgICAgICAgICB0aGlzLkBib2R5ID0gYm9keTsK
KwogICAgICAgICB0aGlzLkBpbml0aWFsaXplV2l0aChib2R5KTsKICAgICB9CiAKQEAgLTY4LDMg
Kzc0LDczIEBAIGZ1bmN0aW9uIGJvZHkoKQogICAgIH0KICAgICByZXR1cm4gdGhpcy5AYm9keTsK
IH0KKworZnVuY3Rpb24gY2xvbmUoKQoreworICAgIGlmICghdGhpcyBpbnN0YW5jZW9mIEBSZXNw
b25zZSkKKyAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3IoIkZ1bmN0aW9uIHNob3VsZCBiZSBj
YWxsZWQgb24gYSBSZXNwb25zZSIpOworCisgICAgaWYgKEBSZXNwb25zZS5wcm90b3R5cGUuQGlz
RGlzdHVyYmVkLkBjYWxsKHRoaXMpKQorICAgICAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcigiQ2Fu
bm90IGNsb25lIGEgZGlzdHVyYmVkIFJlc3BvbnNlIik7CisKKyAgICB2YXIgY2xvbmVkID0gQFJl
c3BvbnNlLnByb3RvdHlwZS5AY2xvbmVGb3JKUy5AY2FsbCh0aGlzKTsKKyAgICBpZiAodGhpcy5A
Ym9keSkgeworICAgICAgICB2YXIgdGVlZFJlYWRhYmxlU3RyZWFtcyA9IEB0ZWVSZWFkYWJsZVN0
cmVhbSh0aGlzLkBib2R5LCBmYWxzZSk7CisgICAgICAgIHRoaXMuQGJvZHkgPSB0ZWVkUmVhZGFi
bGVTdHJlYW1zWzBdOworICAgICAgICBjbG9uZWQuQGJvZHkgPSB0ZWVkUmVhZGFibGVTdHJlYW1z
WzFdOworICAgIH0KKyAgICByZXR1cm4gY2xvbmVkOworfQorCisvLyBjb25zdW1lIGFuZCBjb25z
dW1lU3RyZWFtIHNpbmdsZSBwYXJhbWV0ZXIgc2hvdWxkIGJlIGtlcHQgaW4gc3luYyB3aXRoIEZl
dGNoQm9keTo6Q29uc3VtZXJUeXBlLgorZnVuY3Rpb24gYXJyYXlCdWZmZXIoKQoreworICAgIGlm
ICghdGhpcyBpbnN0YW5jZW9mIEBSZXNwb25zZSkKKyAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJy
b3IoIkZ1bmN0aW9uIHNob3VsZCBiZSBjYWxsZWQgb24gYSBSZXNwb25zZSIpOworCisgICAgaWYg
KCF0aGlzLkBib2R5KQorICAgICAgICByZXR1cm4gQFJlc3BvbnNlLnByb3RvdHlwZS5AY29uc3Vt
ZS5AY2FsbCh0aGlzLCAxKTsKKworICAgIHJldHVybiBAY29uc3VtZVN0cmVhbSh0aGlzLCAxKTsK
K30KKworZnVuY3Rpb24gYmxvYigpCit7CisgICAgaWYgKCF0aGlzIGluc3RhbmNlb2YgQFJlc3Bv
bnNlKQorICAgICAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcigiRnVuY3Rpb24gc2hvdWxkIGJlIGNh
bGxlZCBvbiBhIFJlc3BvbnNlIik7CisKKyAgICBpZiAoIXRoaXMuQGJvZHkpCisgICAgICAgIHJl
dHVybiBAUmVzcG9uc2UucHJvdG90eXBlLkBjb25zdW1lLkBjYWxsKHRoaXMsIDIpOworCisgICAg
cmV0dXJuIEBjb25zdW1lU3RyZWFtKHRoaXMsIDIpOworfQorCitmdW5jdGlvbiBmb3JtRGF0YSgp
Cit7CisgICAgaWYgKCF0aGlzIGluc3RhbmNlb2YgQFJlc3BvbnNlKQorICAgICAgICB0aHJvdyBu
ZXcgQFR5cGVFcnJvcigiRnVuY3Rpb24gc2hvdWxkIGJlIGNhbGxlZCBvbiBhIFJlc3BvbnNlIik7
CisKKyAgICByZXR1cm4gQFByb21pc2UuQHJlamVjdCgiTm90IGltcGxlbWVudGVkIik7Cit9CisK
K2Z1bmN0aW9uIGpzb24oKQoreworICAgIGlmICghdGhpcyBpbnN0YW5jZW9mIEBSZXNwb25zZSkK
KyAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3IoIkZ1bmN0aW9uIHNob3VsZCBiZSBjYWxsZWQg
b24gYSBSZXNwb25zZSIpOworCisgICAgaWYgKCF0aGlzLkBib2R5KQorICAgICAgICByZXR1cm4g
QFJlc3BvbnNlLnByb3RvdHlwZS5AY29uc3VtZS5AY2FsbCh0aGlzLCAzKTsKKworICAgIHJldHVy
biBAY29uc3VtZVN0cmVhbSh0aGlzLCAzKTsKK30KKworZnVuY3Rpb24gdGV4dCgpCit7CisgICAg
aWYgKCF0aGlzIGluc3RhbmNlb2YgQFJlc3BvbnNlKQorICAgICAgICB0aHJvdyBuZXcgQFR5cGVF
cnJvcigiRnVuY3Rpb24gc2hvdWxkIGJlIGNhbGxlZCBvbiBhIFJlc3BvbnNlIik7CisKKyAgICBp
ZiAoIXRoaXMuQGJvZHkpCisgICAgICAgIHJldHVybiBAUmVzcG9uc2UucHJvdG90eXBlLkBjb25z
dW1lLkBjYWxsKHRoaXMsIDQpOworCisgICAgcmV0dXJuIEBjb25zdW1lU3RyZWFtKHRoaXMsIDQp
OworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCmluZGV4IDRmNWU4YmYzMDM3MWRlNjE0NzE5NjhiMDliMjdhZWUzNDdlZTc2NDcuLjM0YzRi
YmEzNGE4NTNlNjhhNGQ0MjlhZmQ5MDZjY2IyMzc0NThlMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE2MzEsNiArMTYzMSw3
IEBACiAJCTQxQkY3MDBGMEZFODZGNjEwMDVFOERFQyAvKiBQbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hh
bm5lbC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
MUJGNzAwRDBGRTg2RjYxMDA1RThERUMgLyogUGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWwuY3Bw
ICovOyB9OwogCQk0MUJGNzAxMDBGRTg2RjYxMDA1RThERUMgLyogUGxhdGZvcm1NZXNzYWdlUG9y
dENoYW5uZWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQxQkY3MDBFMEZFODZGNjEwMDVFOERFQyAvKiBQbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbC5o
ICovOyB9OwogCQk0MUM3NjBCMTBFREUwM0QzMDBDMTY1NUYgLyogU2NyaXB0U3RhdGUuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxQzc2MEIwMEVERTAz
RDMwMEMxNjU1RiAvKiBTY3JpcHRTdGF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CisJCTQxQ0Y4QkU3MUQ0NjIyNjcwMDcwN0RDOSAvKiBGZXRjaEJv
ZHlDb25zdW1lci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA0MUNGOEJFNDFENDYyMjIwMDA3MDdEQzkgLyogRmV0Y2hCb2R5Q29uc3VtZXIuY3BwICov
OyB9OwogCQk0MUQwMTVDQTBGNEI1QzcxMDA0QTY2MkYgLyogQ29udGVudFR5cGUuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRDAxNUM4MEY0QjVDNzEw
MDRBNjYyRiAvKiBDb250ZW50VHlwZS5oICovOyB9OwogCQk0MUQwMTVDQjBGNEI1QzcxMDA0QTY2
MkYgLyogQ29udGVudFR5cGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDFEMDE1QzkwRjRCNUM3MTAwNEE2NjJGIC8qIENvbnRlbnRUeXBlLmNwcCAq
LzsgfTsKIAkJNDFFMUIxRDAwRkY1OTg2OTAwNTc2QjNCIC8qIEFic3RyYWN0V29ya2VyLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRTFCMUNBMEZG
NTk4NjkwMDU3NkIzQiAvKiBBYnN0cmFjdFdvcmtlci5jcHAgKi87IH07CkBAIC02OTA2LDggKzY5
MDcsOCBAQAogCQlGOThGRkY0NTExQTI2NzYyMDBGNTQ4RTggLyogQ1NTT01VdGlscy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjk4RkZGNDMxMUEyNjc2
MjAwRjU0OEU4IC8qIENTU09NVXRpbHMuaCAqLzsgfTsKIAkJRjlGMEVEN0EwREI1MENBMjAwRDE2
REI5IC8qIFhNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjlGMEVENzcwREI1MENBMjAwRDE2REI5IC8qIFhN
TEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudC5oICovOyB9OwogCQlGQTY1NEE2QjExMDhBQkVEMDAy
NjE1RTAgLyogTWF0aE1MVGV4dEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRkE2NTRBNjkxMTA4QUJFRDAwMjYxNUUwIC8qIE1hdGhNTFRl
eHRFbGVtZW50LmNwcCAqLzsgfTsKLQkJRkE2NTRBNkMxMTA4QUJFRDAwMjYxNUUwIC8qIE1hdGhN
TFRleHRFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBGQTY1NEE2QTExMDhBQkVEMDAyNjE1RTAgLyogTWF0aE1MVGV4dEVsZW1lbnQuaCAqLzsg
fTsKIAkJRkE2NTRBNkIxMTA4QUJFRDAwMjYyNkYxIC8qIE1hdGhNTFVuZGVyT3ZlckVsZW1lbnQu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkE2NTRB
NjkxMTA4QUJFRDAwMjYyNkYxIC8qIE1hdGhNTFVuZGVyT3ZlckVsZW1lbnQuY3BwICovOyB9Owor
CQlGQTY1NEE2QzExMDhBQkVEMDAyNjE1RTAgLyogTWF0aE1MVGV4dEVsZW1lbnQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZBNjU0QTZBMTEwOEFCRUQw
MDI2MTVFMCAvKiBNYXRoTUxUZXh0RWxlbWVudC5oICovOyB9OwogCQlGQTY1NEE2QzExMDhBQkVE
MDAyNjI2RjEgLyogTWF0aE1MVW5kZXJPdmVyRWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkE2NTRBNkExMTA4QUJFRDAwMjYyNkYxIC8qIE1h
dGhNTFVuZGVyT3ZlckVsZW1lbnQuaCAqLzsgfTsKIAkJRkFCRTcyRjQxMDU5QzFFQjAwRDk5OURE
IC8qIE1hdGhNTEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRkFCRTcyRUQxMDU5QzFFQjAwRDk5OUREIC8qIE1hdGhNTEVsZW1lbnQuY3Bw
ICovOyB9OwogCQlGQUJFNzJGNTEwNTlDMUVCMDBEOTk5REQgLyogTWF0aE1MRWxlbWVudC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkFCRTcyRUUxMDU5
QzFFQjAwRDk5OUREIC8qIE1hdGhNTEVsZW1lbnQuaCAqLzsgfTsKQEAgLTkyMTUsNiArOTIxNiw5
IEBACiAJCTQxQkY3MDBEMEZFODZGNjEwMDVFOERFQyAvKiBQbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hh
bm5lbC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBQbGF0Zm9ybU1l
c3NhZ2VQb3J0Q2hhbm5lbC5jcHA7IHBhdGggPSBkZWZhdWx0L1BsYXRmb3JtTWVzc2FnZVBvcnRD
aGFubmVsLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFCRjcwMEUwRkU4NkY2
MTAwNUU4REVDIC8qIFBsYXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgbmFtZSA9IFBsYXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsLmg7IHBhdGggPSBk
ZWZhdWx0L1BsYXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTQxQzc2MEIwMEVERTAzRDMwMEMxNjU1RiAvKiBTY3JpcHRTdGF0ZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3JpcHRTdGF0ZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk0MUNGOEJFNDFENDYyMjIwMDA3MDdEQzkgLyogRmV0Y2hCb2R5Q29u
c3VtZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRmV0Y2hCb2R5
Q29uc3VtZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MUNGOEJFNTFENDYy
MjIwMDA3MDdEQzkgLyogRmV0Y2hCb2R5Q29uc3VtZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gRmV0Y2hCb2R5Q29uc3VtZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJNDFDRjhCRTYxRDQ2MjIyQzAwNzA3REM5IC8qIEZldGNoSW50ZXJuYWxzLmpzICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5qYXZhc2NyaXB0OyBwYXRoID0gRmV0Y2hJbnRlcm5hbHMuanM7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxRDAxNUM4MEY0QjVDNzEwMDRBNjYyRiAvKiBD
b250ZW50VHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb250ZW50VHlw
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MUQwMTVDOTBGNEI1QzcxMDA0QTY2
MkYgLyogQ29udGVudFR5cGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gQ29udGVudFR5cGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MUUxQjFD
QTBGRjU5ODY5MDA1NzZCM0IgLyogQWJzdHJhY3RXb3JrZXIuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gQWJzdHJhY3RXb3JrZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtMTM0MDgsOCArMTM0MTIsOCBAQAogCQlCNTdDQjUyQzE4MkEzRUVEMDA3
OUE2NDcgLyogSW5saW5lRWxlbWVudEJveC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBJbmxpbmVFbGVtZW50Qm94LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQjU5NUZGNDYxODI0Q0VFMzAwRkY1MUNEIC8qIFJlbmRlckl0ZXJhdG9yLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbmRlckl0ZXJhdG9yLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUI1OUNBNTlBRjE3MEQ4RkFBNUI4QzlBRCAvKiBNYXRoTUxTY3Jp
cHRzRWxlbWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNYXRo
TUxTY3JpcHRzRWxlbWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUI1OUNB
ODQ5RDQxRTZGNjVEODExOTdBQiAvKiBNYXRoTUxTY3JpcHRzRWxlbWVudC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBNYXRoTUxTY3JpcHRzRWxlbWVudC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlCNTlDQTU5QUYxNzBEOEZBQTVCOENBQkUgLyogTWF0aE1MUGFk
ZGVkRWxlbWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNYXRo
TUxQYWRkZWRFbGVtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQjU5Q0E4
NDlENDFFNkY2NUQ4MTE5N0FCIC8qIE1hdGhNTFNjcmlwdHNFbGVtZW50LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1hdGhNTFNjcmlwdHNFbGVtZW50Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUI1OUNBODQ5RDQxRTZGNjVEODExOThCQyAvKiBNYXRoTUxQYWRk
ZWRFbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1hdGhNTFBhZGRl
ZEVsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjU5REQ2OTcxMTkwMjlF
NTAwN0U5Njg0IC8qIEpTRGF0YWJhc2VDYWxsYmFjay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBKU0RhdGFiYXNlQ2FsbGJhY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQjU5REQ2OTgxMTkwMjlFNTAwN0U5Njg0IC8qIEpTRGF0YWJhc2VDYWxsYmFjay5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0RhdGFiYXNlQ2FsbGJhY2su
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTUwODYsOCArMTUwOTAsOCBAQAog
CQlGQTY1NEE2MzExMDhBQkI3MDAyNjE1RTAgLyogbWF0aG1sLmNzcyAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQu
Y3NzOyBwYXRoID0gbWF0aG1sLmNzczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkE2
NTRBNjcxMTA4QUJFMjAwMjYxNUUwIC8qIG1hdGhhdHRycy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBh
dGggPSBtYXRoYXR0cnMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZBNjU0QTY5
MTEwOEFCRUQwMDI2MTVFMCAvKiBNYXRoTUxUZXh0RWxlbWVudC5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNYXRoTUxUZXh0RWxlbWVudC5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCUZBNjU0QTZBMTEwOEFCRUQwMDI2MTVFMCAvKiBNYXRoTUxUZXh0
RWxlbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNYXRoTUxUZXh0RWxl
bWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGQTY1NEE2OTExMDhBQkVEMDAy
NjI2RjEgLyogTWF0aE1MVW5kZXJPdmVyRWxlbWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBNYXRoTUxVbmRlck92ZXJFbGVtZW50LmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJRkE2NTRBNkExMTA4QUJFRDAwMjYxNUUwIC8qIE1hdGhNTFRleHRF
bGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1hdGhNTFRleHRFbGVt
ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZBNjU0QTZBMTEwOEFCRUQwMDI2
MjZGMSAvKiBNYXRoTUxVbmRlck92ZXJFbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IE1hdGhNTFVuZGVyT3ZlckVsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJRkE2RTQ2NkZDRDA0MThBOTk2NkE1QjYwIC8qIEROU1Jlc29sdmVRdWV1ZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBETlNSZXNvbHZlUXVldWUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkFCRTcyRUQxMDU5QzFFQjAwRDk5OUREIC8qIE1hdGhN
TEVsZW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWF0aE1M
RWxlbWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNzA5MiwxMiArMTcw
OTYsMTUgQEAKIAkJCQk0MUY1NEY3RDFDNTBDNEY2MDAzMzg0ODggLyogRmV0Y2hCb2R5LmNwcCAq
LywKIAkJCQk0MUY1NEY3RTFDNTBDNEY2MDAzMzg0ODggLyogRmV0Y2hCb2R5LmggKi8sCiAJCQkJ
NDFGNTRGN0YxQzUwQzRGNjAwMzM4NDg4IC8qIEZldGNoQm9keS5pZGwgKi8sCisJCQkJNDFDRjhC
RTQxRDQ2MjIyMDAwNzA3REM5IC8qIEZldGNoQm9keUNvbnN1bWVyLmNwcCAqLywKKwkJCQk0MUNG
OEJFNTFENDYyMjIwMDA3MDdEQzkgLyogRmV0Y2hCb2R5Q29uc3VtZXIuaCAqLywKIAkJCQk0MTQ3
RTJCMzFDODk5MTI2MDBBN0U3MTUgLyogRmV0Y2hCb2R5T3duZXIuY3BwICovLAogCQkJCTQxNDdF
MkIyMUM4ODMzN0YwMEE3RTcxNSAvKiBGZXRjaEJvZHlPd25lci5oICovLAogCQkJCTQxRjU0Rjgy
MUM1MEM0RjYwMDMzODQ4OCAvKiBGZXRjaEhlYWRlcnMuY3BwICovLAogCQkJCTQxRjU0RjgzMUM1
MEM0RjYwMDMzODQ4OCAvKiBGZXRjaEhlYWRlcnMuaCAqLywKIAkJCQk0MUY1NEY4NDFDNTBDNEY2
MDAzMzg0ODggLyogRmV0Y2hIZWFkZXJzLmlkbCAqLywKIAkJCQk0MUY1NEY4NTFDNTBDNEY2MDAz
Mzg0ODggLyogRmV0Y2hIZWFkZXJzLmpzICovLAorCQkJCTQxQ0Y4QkU2MUQ0NjIyMkMwMDcwN0RD
OSAvKiBGZXRjaEludGVybmFscy5qcyAqLywKIAkJCQk0MTQ3RTJCNDFDODk5MTI2MDBBN0U3MTUg
LyogRmV0Y2hMb2FkZXIuY3BwICovLAogCQkJCTQxNDdFMkI1MUM4OTkxMjYwMEE3RTcxNSAvKiBG
ZXRjaExvYWRlci5oICovLAogCQkJCTQxNDdFMkI2MUM4OTkxMjYwMEE3RTcxNSAvKiBGZXRjaExv
YWRlckNsaWVudC5oICovLApAQCAtMzA3NTksNiArMzA3NjYsNyBAQAogCQkJCUJDMDZFREUzMEJG
RDZEMEQwMDg1NkU5RCAvKiBKU0hUTUxUYWJsZUNlbGxFbGVtZW50LmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUJDMDZFRDlEMEJGRDY2MDYwMDg1NkU5RCAvKiBKU0hUTUxUYWJsZUNvbEVsZW1lbnQu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkMwNkVFMDQwQkZENzFBQTAwODU2RTlEIC8qIEpTSFRN
TFRhYmxlRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk0MUNGOEJFNzFENDYyMjY3MDA3
MDdEQzkgLyogRmV0Y2hCb2R5Q29uc3VtZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkMwNkVE
OUYwQkZENjYwNjAwODU2RTlEIC8qIEpTSFRNTFRhYmxlUm93RWxlbWVudC5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlCQzA2RUQwNjBCRkQ1QkFFMDA4NTZFOUQgLyogSlNIVE1MVGFibGVTZWN0aW9u
RWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlENjQ4OUQyNTE2NkZGQ0YxMDA3QzAzMUIg
LyogSlNIVE1MVGVtcGxhdGVFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Qcm9taXNlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RPTVByb21pc2UuaAppbmRleCAxMjc1YTMyZTY3OGRkZDhiZWNhMjU0
YmQxZDZkNGQxOWYwMjRjMjg3Li40ZTIyZTMzNGZmMzc2YWQzODQ5YmYwZDEwOTk5Yjk3YmQ5ZDli
YzgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVByb21pc2Uu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVByb21pc2UuaApAQCAtMTE4
LDYgKzExOCw4IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTxjbGFzcyBSZWplY3RSZXN1bHRUeXBl
PiB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxQcm9taXNlUmVzdWx0SW5zcGVjdG9yPFJlamVjdFJl
c3VsdFR5cGU+OjpwYXNzQnlDb25zdFJlZiwgdm9pZD46OnR5cGUKICAgICByZWplY3QoY29uc3Qg
UmVqZWN0UmVzdWx0VHlwZSYgcmVzdWx0KSB7IHJlamVjdFdpdGhWYWx1ZShyZXN1bHQpOyB9CiAK
KyAgICB0ZW1wbGF0ZTxjbGFzcyBSZXNvbHZlUmVzdWx0VHlwZT4gdm9pZCByZXNvbHZlV2l0aE5l
d2x5Q3JlYXRlZChSZWY8UmVzb2x2ZVJlc3VsdFR5cGU+JiYpOworCiAgICAgdm9pZCByZWplY3Qo
RXhjZXB0aW9uQ29kZSwgY29uc3QgU3RyaW5nJiA9IHsgfSk7CiAKICAgICBKU0RPTUdsb2JhbE9i
amVjdCYgZ2xvYmFsT2JqZWN0KCkgY29uc3Q7CkBAIC0xODEsNiArMTgzLDE2IEBAIGlubGluZSB2
b2lkIERlZmVycmVkV3JhcHBlcjo6cmVzb2x2ZVdpdGhWYWx1ZShSZXNvbHZlUmVzdWx0VHlwZSYm
IHJlc3VsdCkKICAgICByZXNvbHZlKCpleGVjLCB0b0pTKGV4ZWMsIG1fZ2xvYmFsT2JqZWN0Lmdl
dCgpLCBzdGQ6OmZvcndhcmQ8UmVzb2x2ZVJlc3VsdFR5cGU+KHJlc3VsdCkpKTsKIH0KIAordGVt
cGxhdGU8Y2xhc3MgUmVzb2x2ZVJlc3VsdFR5cGU+CitpbmxpbmUgdm9pZCBEZWZlcnJlZFdyYXBw
ZXI6OnJlc29sdmVXaXRoTmV3bHlDcmVhdGVkKFJlZjxSZXNvbHZlUmVzdWx0VHlwZT4mJiByZXN1
bHQpCit7CisgICAgQVNTRVJUKG1fZGVmZXJyZWQpOworICAgIEFTU0VSVChtX2dsb2JhbE9iamVj
dCk7CisgICAgSlNDOjpFeGVjU3RhdGUqIGV4ZWMgPSBtX2dsb2JhbE9iamVjdC0+Z2xvYmFsRXhl
YygpOworICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2tlcihleGVjKTsKKyAgICByZXNvbHZlKCpl
eGVjLCB0b0pTTmV3bHlDcmVhdGVkKGV4ZWMsIG1fZ2xvYmFsT2JqZWN0LmdldCgpLCBXVEZNb3Zl
KHJlc3VsdCkpKTsKK30KKwogdGVtcGxhdGU8Y2xhc3MgUmVqZWN0UmVzdWx0VHlwZT4KIGlubGlu
ZSB2b2lkIERlZmVycmVkV3JhcHBlcjo6cmVqZWN0V2l0aFZhbHVlKFJlamVjdFJlc3VsdFR5cGUm
JiByZXN1bHQpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XZWJD
b3JlQnVpbHRpbk5hbWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XZWJDb3JlQnVp
bHRpbk5hbWVzLmgKaW5kZXggYTVhZGQ5NGIyMDlhMjY5M2JlYzM1MWM5OGZmYzVjZTI4YTc2MWJl
Mi4uMzAwMDcyZDY2Zjk0OGEyMzYzNWMzNDBiMWE1ZTVjNWMzMDRkMTllNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2ViQ29yZUJ1aWx0aW5OYW1lcy5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVCdWlsdGluTmFtZXMuaApAQCAtNTMsNiAr
NTMsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIG1hY3JvKGxvY2FsU3RyZWFtcykgXAog
ICAgIG1hY3JvKG9wZXJhdGlvbnMpIFwKICAgICBtYWNybyhvd25lclJlYWRhYmxlU3RyZWFtKSBc
CisgICAgbWFjcm8oY2xvbmVGb3JKUykgXAorICAgIG1hY3JvKGNvbnN1bWUpIFwKKyAgICBtYWNy
byhjb25zdW1lQ2h1bmspIFwKKyAgICBtYWNybyhmaW5pc2hDb25zdW1pbmdTdHJlYW0pIFwKICAg
ICBtYWNybyhwcml2YXRlR2V0U3RhdHMpIFwKICAgICBtYWNybyhwdWxsaW5nKSBcCiAgICAgbWFj
cm8ocHVsbEFnYWluKSBcCkBAIC03Miw2ICs3Niw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICBtYWNybyhzZXRCb2R5KSBcCiAgICAgbWFjcm8oc2V0U3RhdHVzKSBcCiAgICAgbWFjcm8oc3Rh
dGUpIFwKKyAgICBtYWNybyhzdGFydENvbnN1bWluZ1N0cmVhbSkgXAogICAgIG1hY3JvKHN0YXJ0
ZWQpIFwKICAgICBtYWNybyhzdGFydGVkUHJvbWlzZSkgXAogICAgIG1hY3JvKHN0b3JlZEVycm9y
KSBcCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwppbmRleCA0NzdiMGM2MmM1ZWRlNjZlYjk0
MWU1NjY5NDhmZjlhNDRmNjg4YmZmLi41NjY2NzYzZDE5NWYxYWM5NmQ1NjEwYWE2NDEyMWRhMzQy
NmZiMTcwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAor
MjAxNi0wNy0yNSAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAgICAg
W0ZldGNoIEFQSV0gUmVzcG9uc2UgY29uc3RydWN0b3Igc2hvdWxkIGJlIGFibGUgdG8gdGFrZSBh
IFJlYWRhYmxlU3RyZWFtIGFzIGJvZHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE1OTgwNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9yZXNwb25zZS9y
ZXNwb25zZS1jb25zdW1lLWVtcHR5LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiB3ZWItcGxhdGZv
cm0tdGVzdHMvZmV0Y2gvYXBpL3Jlc3BvbnNlL3Jlc3BvbnNlLWNvbnN1bWUtZXhwZWN0ZWQudHh0
OgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkvcmVzcG9uc2UvcmVzcG9u
c2UtY29uc3VtZS5odG1sOiBVcGRhdGluZyB0ZXN0IHRvIGV4ZXJjaWNlIFJlc3BvbnNlIGNvb25z
dHJ1Y3RvciB3aXRoIGEgUmVhZGFibGVTdHJlYW0uCisKIDIwMTYtMDctMjQgIFlvdWVubiBGYWJs
ZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIFtGZXRjaCBBUEldIFJlcXVlc3Qgc2hv
dWxkIGJlIGNyZWF0ZWQgd2l0aCBhbnkgSGVhZGVyc0luaXQgZGF0YQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkvcmVzcG9u
c2UvcmVzcG9uc2UtY29uc3VtZS1lbXB0eS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9yZXNwb25zZS9yZXNwb25zZS1j
b25zdW1lLWVtcHR5LWV4cGVjdGVkLnR4dAppbmRleCA2NzA0ZGUxYTQ0MmU1ZjFmZDcyNWIwY2Vl
MjJjN2YwNzM3YTVlNTg2Li5lOTY3OTUxOGJkOWMwMzA5NGQ4ZmZmY2Y5ZmNmODJkZDE3N2JjN2Nm
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2ZldGNoL2FwaS9yZXNwb25zZS9yZXNwb25zZS1jb25zdW1lLWVtcHR5LWV4cGVjdGVkLnR4dAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNoL2Fw
aS9yZXNwb25zZS9yZXNwb25zZS1jb25zdW1lLWVtcHR5LWV4cGVjdGVkLnR4dApAQCAtMyw3ICsz
LDcgQEAgUEFTUyBDb25zdW1lIHJlc3BvbnNlJ3MgYm9keSBhcyB0ZXh0CiBQQVNTIENvbnN1bWUg
cmVzcG9uc2UncyBib2R5IGFzIGJsb2IgCiBQQVNTIENvbnN1bWUgcmVzcG9uc2UncyBib2R5IGFz
IGFycmF5QnVmZmVyIAogUEFTUyBDb25zdW1lIHJlc3BvbnNlJ3MgYm9keSBhcyBqc29uIAotRkFJ
TCBDb25zdW1lIHJlc3BvbnNlJ3MgYm9keSBhcyBmb3JtRGF0YSBwcm9taXNlX3Rlc3Q6IFVuaGFu
ZGxlZCByZWplY3Rpb24gd2l0aCB2YWx1ZTogdW5kZWZpbmVkCitGQUlMIENvbnN1bWUgcmVzcG9u
c2UncyBib2R5IGFzIGZvcm1EYXRhIHByb21pc2VfdGVzdDogVW5oYW5kbGVkIHJlamVjdGlvbiB3
aXRoIHZhbHVlOiAiTm90IGltcGxlbWVudGVkIgogUEFTUyBDb25zdW1lIGVtcHR5IGJsb2IgcmVz
cG9uc2UgYm9keSBhcyBhcnJheUJ1ZmZlciAKIFBBU1MgQ29uc3VtZSBlbXB0eSB0ZXh0IHJlc3Bv
bnNlIGJvZHkgYXMgYXJyYXlCdWZmZXIgCiBQQVNTIENvbnN1bWUgZW1wdHkgYmxvYiByZXNwb25z
ZSBib2R5IGFzIHRleHQgCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9yZXNwb25zZS9yZXNwb25zZS1jb25zdW1lLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZmV0
Y2gvYXBpL3Jlc3BvbnNlL3Jlc3BvbnNlLWNvbnN1bWUtZXhwZWN0ZWQudHh0CmluZGV4IGQwODhh
NjlhOGNlNDJhMmZhMGExYzkyMDk5ZDg2YTZiZmE1N2U2ZDguLjQxNmEzOTJjZTZhZDZjYWI2OGUy
NzFkZDA0YTE5YTJlZTUwMjAzZWUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvZmV0Y2gvYXBpL3Jlc3BvbnNlL3Jlc3BvbnNlLWNvbnN1bWUt
ZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvZmV0Y2gvYXBpL3Jlc3BvbnNlL3Jlc3BvbnNlLWNvbnN1bWUtZXhwZWN0ZWQudHh0CkBA
IC0zLDkgKzMsMTMgQEAgUEFTUyBDb25zdW1lIHJlc3BvbnNlJ3MgYm9keSBhcyB0ZXh0CiBQQVNT
IENvbnN1bWUgcmVzcG9uc2UncyBib2R5IGFzIGJsb2IgCiBQQVNTIENvbnN1bWUgcmVzcG9uc2Un
cyBib2R5IGFzIGFycmF5QnVmZmVyIAogUEFTUyBDb25zdW1lIHJlc3BvbnNlJ3MgYm9keSBhcyBq
c29uIAotRkFJTCBDb25zdW1lIHJlc3BvbnNlJ3MgYm9keSBhcyBmb3JtRGF0YSBwcm9taXNlX3Rl
c3Q6IFVuaGFuZGxlZCByZWplY3Rpb24gd2l0aCB2YWx1ZTogdW5kZWZpbmVkCitGQUlMIENvbnN1
bWUgcmVzcG9uc2UncyBib2R5IGFzIGZvcm1EYXRhIHByb21pc2VfdGVzdDogVW5oYW5kbGVkIHJl
amVjdGlvbiB3aXRoIHZhbHVlOiAiTm90IGltcGxlbWVudGVkIgogUEFTUyBDb25zdW1lIGJsb2Ig
cmVzcG9uc2UncyBib2R5IGFzIGJsb2IgCiBQQVNTIENvbnN1bWUgYmxvYiByZXNwb25zZSdzIGJv
ZHkgYXMgdGV4dCAKIFBBU1MgQ29uc3VtZSBibG9iIHJlc3BvbnNlJ3MgYm9keSBhcyBqc29uIAog
UEFTUyBDb25zdW1lIGJsb2IgcmVzcG9uc2UncyBib2R5IGFzIGFycmF5QnVmZmVyIAorUEFTUyBD
b25zdW1lIHN0cmVhbSByZXNwb25zZSdzIGJvZHkgYXMgYmxvYiAKK1BBU1MgQ29uc3VtZSBzdHJl
YW0gcmVzcG9uc2UncyBib2R5IGFzIHRleHQgCitQQVNTIENvbnN1bWUgc3RyZWFtIHJlc3BvbnNl
J3MgYm9keSBhcyBqc29uIAorUEFTUyBDb25zdW1lIHN0cmVhbSByZXNwb25zZSdzIGJvZHkgYXMg
YXJyYXlCdWZmZXIgCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvZmV0Y2gvYXBpL3Jlc3BvbnNlL3Jlc3BvbnNlLWNvbnN1bWUuaHRtbCBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZmV0Y2gvYXBpL3Jl
c3BvbnNlL3Jlc3BvbnNlLWNvbnN1bWUuaHRtbAppbmRleCAwMjgxNGZmNWJlOTI2YmU3MzgyNjRi
YTkxMDcwYmQyMzY5ZDU0NjkxLi45OTQxMGNkNDQ4YWI4YmQ2NDc5MDE4NzAwNGVmZDM0YjFjOTlh
YjQ5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2ZldGNoL2FwaS9yZXNwb25zZS9yZXNwb25zZS1jb25zdW1lLmh0bWwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkvcmVzcG9uc2Uv
cmVzcG9uc2UtY29uc3VtZS5odG1sCkBAIC05Miw2ICs5MiwyNSBAQAogICAgIGNoZWNrQmxvYlJl
c3BvbnNlQm9keShibG9iLCB0ZXh0RGF0YSwgImpzb24iLCBjaGVja0JvZHlKU09OKTsKICAgICBj
aGVja0Jsb2JSZXNwb25zZUJvZHkoYmxvYiwgdGV4dERhdGEsICJhcnJheUJ1ZmZlciIsIGNoZWNr
Qm9keUFycmF5QnVmZmVyKTsKIAorICAgIGZ1bmN0aW9uIGNoZWNrUmVhZGFibGVTdHJlYW1SZXNw
b25zZUJvZHkoc3RyZWFtRGF0YSwgYm9keVR5cGUsIGNoZWNrRnVuY3Rpb24pIHsKKyAgICAgIHBy
b21pc2VfdGVzdChmdW5jdGlvbih0ZXN0KSB7CisgICAgICAgIHZhciBzdHJlYW0gPSBuZXcgUmVh
ZGFibGVTdHJlYW0oeworICAgICAgICAgIHN0YXJ0OiBmdW5jdGlvbihjb250cm9sbGVyKSB7Cisg
ICAgICAgICAgICBjb250cm9sbGVyLmVucXVldWUoKHN0cmluZ1RvQXJyYXkoc3RyZWFtRGF0YSkp
KTsKKyAgICAgICAgICAgIGNvbnRyb2xsZXIuY2xvc2UoKTsKKyAgICAgICAgICB9CisgICAgICAg
IH0pOworICAgICAgICB2YXIgcmVzcG9uc2UgPSBuZXcgUmVzcG9uc2Uoc3RyZWFtKTsKKyAgICAg
ICAgYXNzZXJ0X2ZhbHNlKHJlc3BvbnNlLmJvZHlVc2VkLCAiYm9keVVzZWQgaXMgZmFsc2UgYXQg
aW5pdCIpOworICAgICAgICByZXR1cm4gY2hlY2tGdW5jdGlvbihyZXNwb25zZSwgc3RyZWFtRGF0
YSk7CisgICAgICB9LCAiQ29uc3VtZSBzdHJlYW0gcmVzcG9uc2UncyBib2R5IGFzICIgKyBib2R5
VHlwZSk7CisgICAgfQorCisgICAgY2hlY2tSZWFkYWJsZVN0cmVhbVJlc3BvbnNlQm9keSh0ZXh0
RGF0YSwgImJsb2IiLCBjaGVja0JvZHlCbG9iKTsKKyAgICBjaGVja1JlYWRhYmxlU3RyZWFtUmVz
cG9uc2VCb2R5KHRleHREYXRhLCAidGV4dCIsIGNoZWNrQm9keVRleHQpOworICAgIGNoZWNrUmVh
ZGFibGVTdHJlYW1SZXNwb25zZUJvZHkodGV4dERhdGEsICJqc29uIiwgY2hlY2tCb2R5SlNPTik7
CisgICAgY2hlY2tSZWFkYWJsZVN0cmVhbVJlc3BvbnNlQm9keSh0ZXh0RGF0YSwgImFycmF5QnVm
ZmVyIiwgY2hlY2tCb2R5QXJyYXlCdWZmZXIpOworCiAgICAgPC9zY3JpcHQ+CiAgIDwvYm9keT4K
IDwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>284522</attachid>
            <date>2016-07-25 13:32:56 -0700</date>
            <delta_ts>2016-07-26 08:34:27 -0700</delta_ts>
            <desc>Fixing according review</desc>
            <filename>bug-159804-20160725223146.patch</filename>
            <type>text/plain</type>
            <size>64929</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAzNjgzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmE2ZGJmOTIzODAxOTFi
ZTk5ZThkZTlkYjNiOGRjNTY3YmY1MzIyMy4uZTRhNWNkYTliNjFiYTdjOTQ4NTkzMWY5ZGIwMzIx
YzAxZDFiOTI4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyNyBAQAorMjAxNi0wNy0yNSAgWW91
ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAgICAgW0ZldGNoIEFQSV0gUmVz
cG9uc2UgY29uc3RydWN0b3Igc2hvdWxkIGJlIGFibGUgdG8gdGFrZSBhIFJlYWRhYmxlU3RyZWFt
IGFzIGJvZHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE1OTgwNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IENvdmVyZWQgYnkgZXhpc3RpbmcgYW5kIHVwZGF0ZWQgdGVzdHMuCisKKyAgICAgICAgSW50cm9k
dWNlZCBGZXRjaEJvZHlDb25zdW1lciB0byBlbmNhcHN1bGF0ZSB0aGUgY29kZSByZXNwb25zaWJs
ZSB0byBhZGFwdCBGZXRjaEJvZHkgaW50ZXJuYWwgZGF0YSB0byB0aGUgcmVxdWVzdHMgbWFkZSBi
eSB1c2VyIHNjcmlwdHMuCisgICAgICAgIFRoaXMgcmVmYWN0b3JpbmcgZWFzZXMgdGhlIGhhbmRs
aW5nIG9mIGludGVybmFsIGRhdGEgY29taW5nIGZyb20gUmVhZGFibGVTdHJlYW0uCisKKyAgICAg
ICAgRmV0Y2hMb2FkZXIgaXMgbm93IGRlbGVnYXRpbmcgY29udmVyc2lvbiBmcm9tIHRoZSBkYXRh
IHRvIGl0cyBtX2NvbnN1bWVyIGZpZWxkLgorICAgICAgICBJZiBtX2NvbnN1bWVyIGlzIG51bGws
IEZldGNoTG9hZGVyIGNhbGxzIEZldGNoTG9hZGVyQ2xpZW50OjpkaWRSZWNlaXZlRGF0YSAoc3Ry
ZWFtaW5nIHJlY2VwdGlvbiBtb2RlKS4KKyAgICAgICAgQ2xpZW50cyBvZiBGZXRjaExvYWRlciBu
ZWVkcyB0byBwYXNzIGEgRmV0Y2hCb2R5Q29uc3VtZXIgdG8gdGhlIEZldGNoTG9hZGVyIHRvIGRv
IHRoZSBkYXRhIGFkYXB0YXRpb24gYXQgbG9hZGVyIGNyZWF0aW9uIHRpbWUuCisKKyAgICAgICAg
QWRkZWQgc3VwcG9ydCBmb3IgYm9keSBkYXRhIHBhc3NlZCBhcyBhIFJlYWRhYmxlU3RyZWFtIHRv
IFJlc3BvbnNlLgorICAgICAgICBUaGlzIHJlcXVpcmVzIHRvIHNldCBAYm9keSBpbnRlcm5hbCBz
bG90IG9mIHRoZSBSZXNwb25zZSBvYmplY3QgaW4gdGhlIGNvbnN0cnVjdG9yIGluaXRpYWxpemF0
aW9uIEpTIGJ1aWx0LWluLgorCisgICAgICAgIFRvIGFjdHVhbGx5IHVzZSB0aGF0IGRhdGEsIEJv
ZHkgYWNjZXNzb3JzIGFyZSBhbHNvIGltcGxlbWVudGVkIGFzIEpTIGJ1aWx0LWluIGZvciBSZXNw
b25zZS4KKyAgICAgICAgU2luY2UgdGhlcmUgaXMgbm8gbmVlZCB0byBkbyBzbyBmb3IgUmVxdWVz
dCwgRmV0Y2hSZXNwb25zZSBpcyBubyBsb25nZXIgbWFya2VkIGFzIGltcGxlbWVudGluZyBGZXRj
aEJvZHkgYnV0IGFsbAorICAgICAgICBGZXRjaEJvZHkgSURMIGRlc2NyaXB0aW9uIGlzIGlubGlu
ZWQgaW4gRmV0Y2hSZXNwb25zZS5pZGwuCisKKyAgICAgICAgRm9yIGVhY2ggYm9keSBhY2Nlc3Nv
ciAoYXJyYXlCdWZmZXIsIGJsb2IsIGpzb24sIHRleHQpLCB0aGUgY29ycmVzcG9uZGluZyBKUyBi
dWlsdC1pbiBjaGVja3Mgd2hldGhlciBAYm9keSBpbnRlcm5hbCBzbG90IGlzIHNldC4KKyAgICAg
ICAgSWYgdGhhdCBpcyBub3QgdGhlIGNhc2UsIHJlZ3VsYXIgaGFuZGxpbmcgaXMgZG9uZSB0aHJv
dWdoIGEgbmV3IHByaXZhdGUgbWV0aG9kIGNhbGxlZCBAY29uc3VtZS4KKyAgICAgICAgSWYgQGJv
ZHkgaW50ZXJuYWwgc2xvdCBpcyBzZXQsIGNodW5rcyBhcmUgcHVtcGVkIGZyb20gdGhlIFJlYWRh
YmxlU3RyZWFtIHVzaW5nIFJlYWRhYmxlU3RyZWFtIGludGVybmFsIGJ1aWx0LWlucyBmdW5jdGlv
bnMuCisgICAgICAgIERhdGEgaGFuZGxpbmcgaXMgZG9uZSBpbiBDKysgdGhyb3VnaCB0aGUgcHJp
dmF0ZSBtZXRob2RzIEBzdGFydENvbnN1bWluZ1N0cmVhbSwgQGNvbnN1bWVDaHVuayBhbmQgQGZp
bmlzaENvbnN1bWluZ1N0cmVhbS4KKworICAgICAgICBUbyBzdXBwb3J0IGNsb25pbmcgb2YgUmVz
cG9uc2Ugd2l0aCBib2RpZXMsIGNsb25lIG1ldGhvZCBpcyBhbHNvIGltcGxlbWVudGVkIGFzIGEg
SlMgYnVpbHQtaW4uCisgICAgICAgIE1haW4gY2xvbmUgaXMgZG9uZSB0aHJvdWdoIEBjbG9uZUZv
SlMgcHJpdmF0ZSBtZXRob2QgaW1wbGVtZW50ZWQgaW4gQysrLgorICAgICAgICBKUyBidWlsdC1p
biBjbG9uZSBjb2RlIGRvZXMgdGhlIHRlZWluZyBvZiB0aGUgUmVhZGFibGVTdHJlYW0gdXNpbmcg
UmVhZGFibGVTdHJlYW0gSlMgYnVpbHQtaW4gaW50ZXJuYWwgZnVuY3Rpb25zLgorCisgICAgICAg
IEludHJvZHVjaW5nIGEgbmV3IFJlYWRhYmxlU3RyZWFtIHR5cGUgZm9yIEZldGNoQm9keSB0byBj
b3BlIHdpdGggYm9keSBiZWluZyBzdG9yZWQgaW4gYSBSZWFkYWJsZVN0cmVhbS4KKworICAgICAg
ICBJbnRyb2R1Y2luZyBhIG5ldyBMb2FkZWQgdHlwZSBmb3IgRmV0Y2hCb2R5IHRvIGNvcGUgd2l0
aCBib2R5IGJlaW5nIHN0b3JlZCBpbiB0aGUgRmV0Y2hCb2R5Q29uc3VtZXIgb3duZWQgYnkgRmV0
Y2hCb2R5LgorICAgICAgICBUaGlzIGFsbG93cyByZW1vdmluZyB0aGUgY29udmVyc2lvbiBvZiBk
YXRhIHRvIEpTQzo6QXJyYXlCdWZmZXIgd2hpY2ggd2FzIGRvbmUgYnkgZGVmYXV0IGF0IHRoZSBl
bmQgb2YgRmV0Y2ggbG9hZGluZyBpZiB1c2VyIHNjcmlwdCBkaWQgbm90IHJlcXVlc3QgZGF0YSBi
ZWZvcmUuCisgICAgICAgIEF0IHRoZSBlbmQgb2YgYSBsb2FkLCB0aGUgZGF0YSByZW1haW5zIGlu
IEZldGNoQm9keUNvbnN1bWVyIGFuZCB0aGUgYm9keSBpcyBtYXJrZWQgYXMgTG9hZGVkLgorICAg
ICAgICBJZiB0aGUgdXNlciB3YW50cyB0byBnZXQgdGhlIGRhdGEgYWZ0ZXIgZGF0YSBmaW5pc2hl
ZCBiZWluZyBsb2FkZWQsIEZldGNoQm9keUNvbnN1bWVyIHdpbGwgZG8gdGhlIHJlcXVpcmVkIGNv
bnZlcnNpb25zLgorCisgICAgICAgIEludHJvZHVjaW5nIERlZmVycmVkV3JhcHBlcjo6cmVzb2x2
ZVdpdGhOZXdWYWx1ZSB0byBoYW5kbGUgdGhlIGNhc2Ugb2YgcmVzb2x2aW5nIHByb21pc2VzIHdp
dGggbmV3IG9iamVjdHMuCisgICAgICAgIFRoaXMgYWxsb3dzIGRpcmVjdGx5IHVzaW5nIHRvSlNO
ZXdseUNyZWF0ZWQgaW5zdGVhZCBvZiB0b0pTLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6
IEFkZGluZyBGZXRjaEJvZHlDb25zdW1lci4KKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNo
Qm9keS5jcHA6IE1vdmluZyBkYXRhIGFkYXB0YXRpb24gY29kZSB0byBGZXRjaEJvZHlDb25zdW1l
ci4KKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keTo6ZXh0cmFjdCk6CisgICAgICAgIChXZWJD
b3JlOjpGZXRjaEJvZHk6OmFycmF5QnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9k
eTo6YmxvYik6IFNldHRpbmcgY29udGVudFR5cGUgaW4gRmV0Y2hCb2R5Q29uc3VtZXIgdG8gaGFu
ZGxlIHByb3BlciBjcmVhdGlvbiBvZiBibG9iLgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5
Ojpqc29uKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keTo6dGV4dCk6CisgICAgICAgIChX
ZWJDb3JlOjpGZXRjaEJvZHk6OmNvbnN1bWUpOiBSZWZhY3RvcmluZyBhbmQgYWRkZWQgY2FzZSBv
ZiBMb2FkZWQgYm9kaWVzLgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Ojpjb25zdW1lQXNT
dHJlYW0pOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keTo6Y29uc3VtZUFycmF5
QnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keTo6Y29uc3VtZVRleHQpOgorICAg
ICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Ojpjb25zdW1lQmxvYik6CisgICAgICAgIChXZWJDb3Jl
OjpGZXRjaEJvZHk6OmxvYWRpbmdGYWlsZWQpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5
Ojpsb2FkaW5nU3VjY2VlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keTo6bG9hZGlu
Z1R5cGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6YmxvYkZyb21BcnJheUJ1ZmZlcik6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHk6OmZ1bGZpbGxUZXh0UHJvbWlz
ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHk6OmxvYWRlZEFzQXJyYXlC
dWZmZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Ojpsb2FkZWRBc1Rl
eHQpOiBEZWxldGVkLgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Lmg6CisgICAg
ICAgIChXZWJDb3JlOjpGZXRjaEJvZHk6OmNvbnN1bWVyKToKKyAgICAgICAgKiBNb2R1bGVzL2Zl
dGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcDogQWRkZWQsIHJlc3BvbnNpYmxlIG9mIGRhdGEgYWRh
cHRhdGlvbi4KKyAgICAgICAgKFdlYkNvcmU6OmJsb2JGcm9tRGF0YSk6CisgICAgICAgIChXZWJD
b3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6cmVzb2x2ZVdpdGhEYXRhKToKKyAgICAgICAgKFdlYkNv
cmU6OkZldGNoQm9keUNvbnN1bWVyOjpyZXNvbHZlKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNo
Qm9keUNvbnN1bWVyOjphcHBlbmQpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3Vt
ZXI6OnRha2VEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjp0YWtl
QXNBcnJheUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6dGFr
ZUFzQmxvYik6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6dGFrZUFzVGV4
dCk6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5oOiBBZGRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjpGZXRjaEJvZHlDb25zdW1lcik6
CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6c2V0Q29udGVudFR5cGUpOgor
ICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OnNldFR5cGUpOgorICAgICAgICAo
V2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OnR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6RmV0
Y2hCb2R5Q29uc3VtZXI6OmNsZWFuKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1
bWVyOjpoYXNEYXRhKToKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keU93bmVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keU93bmVyOjpsb2FkQmxvYik6CisgICAgICAg
IChXZWJDb3JlOjpGZXRjaEJvZHlPd25lcjo6YmxvYkxvYWRpbmdTdWNjZWVkZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6RmV0Y2hCb2R5T3duZXI6OmxvYWRlZEJsb2JBc1RleHQpOiBEZWxldGVkLgor
ICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5T3duZXIuaDoKKyAgICAgICAgKFdlYkNv
cmU6OkZldGNoQm9keU93bmVyOjpsb2FkZWRCbG9iQXNBcnJheUJ1ZmZlcik6IERlbGV0ZWQuCisg
ICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaEludGVybmFscy5qczoKKyAgICAgICAgKGNvbnN1
bWVTdHJlYW0pOiBQdW1wIFJlYWRhYmxlU3RyZWFtIGRhdGEgYW5kIHNlbmQgaXQgdG8gRmV0Y2hS
ZXNwb25zZSB0byBiZSBjb252ZXJ0ZWQgYWNjb3JkaW5nIHVzZXIgbmVlZC4KKyAgICAgICAgKiBN
b2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoTG9h
ZGVyOjpGZXRjaExvYWRlcik6IEZldGNoTG9hZGVyIGlzIHNpbXBsaWZpZWQgYXMgaXQgaGFzIHR3
byBub2RlczogY29uc3VtZXIgbW9kZSBpbiB3aGljaCBjYXNlCisgICAgICAgIGRhdGEgaXMgc2Vu
dCB0byB0aGUgY29uc3VtZXIgYW5kIG5vLWNvbnN1bWVyIG1vZGUgaW4gd2hpY2ggY2FzZSBkYXRh
IGlzIHBhc3NlZCB0byBsb2FkZXIgY2xpZW50LiBUaGUgc2Vjb25kIG1vZGUKKyAgICAgICAgaXMg
dXNlZCB0byBjb252ZXl5IGRhdGEgdG8gUmVhZGFibGVTdHJlYW0gc291cmNlLgorICAgICAgICAo
V2ViQ29yZTo6RmV0Y2hMb2FkZXI6OnN0b3ApOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hMb2Fk
ZXI6OnN0YXJ0U3RyZWFtaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoTG9hZGVyOjpkaWRS
ZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaExvYWRlcjo6ZGlkRmluaXNoTG9h
ZGluZyk6IERlbGV0ZWQuCisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlci5oOgor
ICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgKFdl
YkNvcmU6OkZldGNoTG9hZGVyQ2xpZW50OjpkaWRGaW5pc2hMb2FkaW5nQXNUZXh0KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkZldGNoTG9hZGVyQ2xpZW50OjpkaWRGaW5pc2hMb2FkaW5n
QXNBcnJheUJ1ZmZlcik6IERlbGV0ZWQuCisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaFJl
c3BvbnNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoUmVzcG9uc2U6OmNsb25lRm9ySlMp
OgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hSZXNwb25zZTo6Qm9keUxvYWRlcjo6ZGlkU3VjY2Vl
ZCk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaFJlc3BvbnNlOjpCb2R5TG9hZGVyOjpzdGFydCk6
CisgICAgICAgIChXZWJDb3JlOjpGZXRjaFJlc3BvbnNlOjpjb25zdW1lKTogSW50cm9kdWNlZCB0
byBjb25zdW1lIGRhdGEgc3RvcmVkIGluIGJvZHkgYW5kIG5vdCBpbiBSZWFkYWJsZVN0cmVhbS4K
KyAgICAgICAgKFdlYkNvcmU6OkZldGNoUmVzcG9uc2U6OnN0YXJ0Q29uc3VtaW5nU3RyZWFtKTog
SW50cm9kdWNlZCB0byBzdGFydCBwcm9jZXNzIG9mIGNvbnN1bWluZyBkYXRhIHN0b3JlZCBpbiB0
aGUgUmVhZGFibGVTdHJlYW0uCisgICAgICAgIChXZWJDb3JlOjpGZXRjaFJlc3BvbnNlOjpjb25z
dW1lQ2h1bmspOiBSZWNlcHRpb24gb2YgUmVhZGFibGVTdHJlYW0gZGF0YS4KKyAgICAgICAgKFdl
YkNvcmU6OkZldGNoUmVzcG9uc2U6OmZpbmlzaENvbnN1bWluZ1N0cmVhbSk6IERvaW5nIHRoZSBm
aW5hbCBjb252ZXJzaW9uLgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hSZXNwb25zZTo6Y2xvbmUp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hSZXNwb25zZTo6Qm9keUxvYWRlcjo6
ZGlkRmluaXNoTG9hZGluZ0FzQXJyYXlCdWZmZXIpOiBEZWxldGVkLgorICAgICAgICAqIE1vZHVs
ZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5oOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hS
ZXNwb25zZS5pZGw6IElubGluaW5nIG9mIEZldGNoQm9keSBtZXRob2RzL2F0dHJpYnV0ZXMgYW5k
IGFkZGluZyBwcml2YXRlIG1ldGhvZHMuCisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaFJl
c3BvbnNlLmpzOgorICAgICAgICAoaW5pdGlhbGl6ZUZldGNoUmVzcG9uc2UpOgorICAgICAgICAo
Y2xvbmUpOgorICAgICAgICAoYXJyYXlCdWZmZXIpOgorICAgICAgICAoYmxvYik6CisgICAgICAg
IChmb3JtRGF0YSk6CisgICAgICAgIChqc29uKToKKyAgICAgICAgKHRleHQpOgorICAgICAgICAq
IFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9KU0RPTVByb21pc2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRlZmVycmVkV3JhcHBlcjo6cmVz
b2x2ZVdpdGhOZXdWYWx1ZSk6CisgICAgICAgICogYmluZGluZ3MvanMvV2ViQ29yZUJ1aWx0aW5O
YW1lcy5oOgorCiAyMDE2LTA3LTI1ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdh
bGlhLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OKHIyMDA5MzEpOiBJbnZhbGlkIGNhc3QgaW4g
aGlnaGVzdEFuY2VzdG9yVG9XcmFwTWFya3VwKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggYTU1
ODNjYWFlODliNWRiNmUxMGE0ZGI2NzVmYTNiMWI1NGU5YjI1YS4uZTNhYmViMDJlOWJiZGZkZTI3
NjA1MzljOTI3NTMxY2M4NzM2ZTU5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VM
aXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTgxOCw2ICs4
MTgsNyBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAKICAgICBNb2R1bGVzL2ZldGNoL0RPTVdpbmRv
d0ZldGNoLmNwcAogICAgIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcAorICAgIE1vZHVsZXMv
ZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwCiAgICAgTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlP
d25lci5jcHAKICAgICBNb2R1bGVzL2ZldGNoL0ZldGNoSGVhZGVycy5jcHAKICAgICBNb2R1bGVz
L2ZldGNoL0ZldGNoTG9hZGVyLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9mZXRjaC9GZXRjaEJvZHkuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRj
aEJvZHkuY3BwCmluZGV4IDhjNDc5ZDVmOGUwNjI1MDJkOTU3MGM4YjliNTg1YmNmMGRiNDRkM2Yu
LmUwZjVhZTE4MDM1YWFhZmM3OTRiNzdiMGRkN2Q2YTIxNjA1NTBmZDkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHAKQEAgLTM5LDEyICszOSwxMSBAQAogI2lu
Y2x1ZGUgIkhUVFBQYXJzZXJzLmgiCiAjaW5jbHVkZSAiSlNCbG9iLmgiCiAjaW5jbHVkZSAiSlNE
T01Gb3JtRGF0YS5oIgorI2luY2x1ZGUgIkpTUmVhZGFibGVTdHJlYW0uaCIKICNpbmNsdWRlICJS
ZWFkYWJsZVN0cmVhbVNvdXJjZS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBS
ZWY8QmxvYj4gYmxvYkZyb21BcnJheUJ1ZmZlcihBcnJheUJ1ZmZlciosIGNvbnN0IFN0cmluZyYp
OwotCiBGZXRjaEJvZHk6OkZldGNoQm9keShSZWY8QmxvYj4mJiBibG9iKQogICAgIDogbV90eXBl
KFR5cGU6OkJsb2IpCiAgICAgLCBtX21pbWVUeXBlKGJsb2ItPnR5cGUoKSkKQEAgLTc1LDYgKzc0
LDggQEAgRmV0Y2hCb2R5IEZldGNoQm9keTo6ZXh0cmFjdChKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUs
IEpTQzo6SlNWYWx1ZSB2YWx1ZSkKICAgICAgICAgcmV0dXJuIEZldGNoQm9keSgqSlNET01Gb3Jt
RGF0YTo6dG9XcmFwcGVkKHZhbHVlKSk7CiAgICAgaWYgKHZhbHVlLmlzU3RyaW5nKCkpCiAgICAg
ICAgIHJldHVybiBGZXRjaEJvZHkodmFsdWUudG9XVEZTdHJpbmcoJnN0YXRlKSk7CisgICAgaWYg
KHZhbHVlLmluaGVyaXRzKEpTUmVhZGFibGVTdHJlYW06OmluZm8oKSkpCisgICAgICAgIHJldHVy
biB7IFR5cGU6OlJlYWRhYmxlU3RyZWFtIH07CiAgICAgcmV0dXJuIHsgfTsKIH0KIApAQCAtODks
MTMgKzkwLDE2IEBAIEZldGNoQm9keSBGZXRjaEJvZHk6OmV4dHJhY3RGcm9tQm9keShGZXRjaEJv
ZHkqIGJvZHkpCiB2b2lkIEZldGNoQm9keTo6YXJyYXlCdWZmZXIoRmV0Y2hCb2R5T3duZXImIG93
bmVyLCBEZWZlcnJlZFdyYXBwZXImJiBwcm9taXNlKQogewogICAgIEFTU0VSVChtX3R5cGUgIT0g
VHlwZTo6Tm9uZSk7Ci0gICAgY29uc3VtZShvd25lciwgQ29uc3VtZXI6OlR5cGU6OkFycmF5QnVm
ZmVyLCBXVEZNb3ZlKHByb21pc2UpKTsKKyAgICBtX2NvbnN1bWVyLnNldFR5cGUoRmV0Y2hCb2R5
Q29uc3VtZXI6OlR5cGU6OkFycmF5QnVmZmVyKTsKKyAgICBjb25zdW1lKG93bmVyLCBXVEZNb3Zl
KHByb21pc2UpKTsKIH0KIAogdm9pZCBGZXRjaEJvZHk6OmJsb2IoRmV0Y2hCb2R5T3duZXImIG93
bmVyLCBEZWZlcnJlZFdyYXBwZXImJiBwcm9taXNlKQogewogICAgIEFTU0VSVChtX3R5cGUgIT0g
VHlwZTo6Tm9uZSk7Ci0gICAgY29uc3VtZShvd25lciwgQ29uc3VtZXI6OlR5cGU6OkJsb2IsIFdU
Rk1vdmUocHJvbWlzZSkpOworICAgIG1fY29uc3VtZXIuc2V0VHlwZShGZXRjaEJvZHlDb25zdW1l
cjo6VHlwZTo6QmxvYik7CisgICAgbV9jb25zdW1lci5zZXRDb250ZW50VHlwZShCbG9iOjpub3Jt
YWxpemVkQ29udGVudFR5cGUoZXh0cmFjdE1JTUVUeXBlRnJvbU1lZGlhVHlwZShtX21pbWVUeXBl
KSkpOworICAgIGNvbnN1bWUob3duZXIsIFdURk1vdmUocHJvbWlzZSkpOwogfQogCiB2b2lkIEZl
dGNoQm9keTo6anNvbihGZXRjaEJvZHlPd25lciYgb3duZXIsIERlZmVycmVkV3JhcHBlciYmIHBy
b21pc2UpCkBAIC0xMDYsNyArMTEwLDggQEAgdm9pZCBGZXRjaEJvZHk6Ompzb24oRmV0Y2hCb2R5
T3duZXImIG93bmVyLCBEZWZlcnJlZFdyYXBwZXImJiBwcm9taXNlKQogICAgICAgICBmdWxmaWxs
UHJvbWlzZVdpdGhKU09OKHByb21pc2UsIG1fdGV4dCk7CiAgICAgICAgIHJldHVybjsKICAgICB9
Ci0gICAgY29uc3VtZShvd25lciwgQ29uc3VtZXI6OlR5cGU6OkpTT04sIFdURk1vdmUocHJvbWlz
ZSkpOworICAgIG1fY29uc3VtZXIuc2V0VHlwZShGZXRjaEJvZHlDb25zdW1lcjo6VHlwZTo6SlNP
Tik7CisgICAgY29uc3VtZShvd25lciwgV1RGTW92ZShwcm9taXNlKSk7CiB9CiAKIHZvaWQgRmV0
Y2hCb2R5Ojp0ZXh0KEZldGNoQm9keU93bmVyJiBvd25lciwgRGVmZXJyZWRXcmFwcGVyJiYgcHJv
bWlzZSkKQEAgLTExNywxMTMgKzEyMiw5NSBAQCB2b2lkIEZldGNoQm9keTo6dGV4dChGZXRjaEJv
ZHlPd25lciYgb3duZXIsIERlZmVycmVkV3JhcHBlciYmIHByb21pc2UpCiAgICAgICAgIHByb21p
c2UucmVzb2x2ZShtX3RleHQpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGNvbnN1bWUo
b3duZXIsIENvbnN1bWVyOjpUeXBlOjpUZXh0LCBXVEZNb3ZlKHByb21pc2UpKTsKKyAgICBtX2Nv
bnN1bWVyLnNldFR5cGUoRmV0Y2hCb2R5Q29uc3VtZXI6OlR5cGU6OlRleHQpOworICAgIGNvbnN1
bWUob3duZXIsIFdURk1vdmUocHJvbWlzZSkpOwogfQogCi12b2lkIEZldGNoQm9keTo6Y29uc3Vt
ZShGZXRjaEJvZHlPd25lciYgb3duZXIsIENvbnN1bWVyOjpUeXBlIHR5cGUsIERlZmVycmVkV3Jh
cHBlciYmIHByb21pc2UpCit2b2lkIEZldGNoQm9keTo6Y29uc3VtZShGZXRjaEJvZHlPd25lciYg
b3duZXIsIERlZmVycmVkV3JhcHBlciYmIHByb21pc2UpCiB7Ci0gICAgaWYgKG1fdHlwZSA9PSBU
eXBlOjpBcnJheUJ1ZmZlcikgewotICAgICAgICBjb25zdW1lQXJyYXlCdWZmZXIodHlwZSwgcHJv
bWlzZSk7CisgICAgLy8gVGhpcyBzaG91bGQgYmUgaGFuZGxlZCBieSBGZXRjaEJvZHlPd25lcgor
ICAgIEFTU0VSVChtX3R5cGUgIT0gVHlwZTo6Tm9uZSk7CisgICAgLy8gVGhpcyBzaG91bGQgYmUg
aGFuZGxlZCBieSBKUyBidWlsdC1pbnMKKyAgICBBU1NFUlQobV90eXBlICE9IFR5cGU6OlJlYWRh
YmxlU3RyZWFtKTsKKworICAgIHN3aXRjaCAobV90eXBlKSB7CisgICAgY2FzZSBUeXBlOjpBcnJh
eUJ1ZmZlcjoKKyAgICAgICAgY29uc3VtZUFycmF5QnVmZmVyKHByb21pc2UpOwogICAgICAgICBy
ZXR1cm47Ci0gICAgfQotICAgIGlmIChtX3R5cGUgPT0gVHlwZTo6VGV4dCkgewotICAgICAgICBj
b25zdW1lVGV4dCh0eXBlLCBwcm9taXNlKTsKKyAgICBjYXNlIFR5cGU6OlRleHQ6CisgICAgICAg
IGNvbnN1bWVUZXh0KHByb21pc2UpOwogICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmICht
X3R5cGUgPT0gVHlwZTo6QmxvYikgewotICAgICAgICBjb25zdW1lQmxvYihvd25lciwgdHlwZSwg
V1RGTW92ZShwcm9taXNlKSk7CisgICAgY2FzZSBUeXBlOjpCbG9iOgorICAgICAgICBjb25zdW1l
QmxvYihvd25lciwgV1RGTW92ZShwcm9taXNlKSk7CiAgICAgICAgIHJldHVybjsKLSAgICB9Ci0g
ICAgaWYgKG1fdHlwZSA9PSBUeXBlOjpMb2FkaW5nKSB7Ci0gICAgICAgIC8vIEZJWE1FOiBXZSBz
aG91bGQgYmUgYWJsZSB0byBjaGFuZ2UgdGhlIGxvYWRpbmcgdHlwZSB0byB0ZXh0IGlmIGNvbnN1
bWVyIHR5cGUgaXMgSlNPTiBvciBUZXh0LgotICAgICAgICBtX2NvbnN1bWVyID0gQ29uc3VtZXIo
e3R5cGUsIFdURk1vdmUocHJvbWlzZSl9KTsKKyAgICBjYXNlIFR5cGU6OkxvYWRpbmc6CisgICAg
ICAgIG1fY29uc3VtZVByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpOworICAgICAgICByZXR1cm47
CisgICAgY2FzZSBUeXBlOjpMb2FkZWQ6CisgICAgICAgIG1fY29uc3VtZXIucmVzb2x2ZShwcm9t
aXNlKTsKICAgICAgICAgcmV0dXJuOworICAgIGRlZmF1bHQ6CisgICAgICAgIC8vIEZJWE1FOiBT
dXBwb3J0IG90aGVyIHR5cGVzLgorICAgICAgICBwcm9taXNlLnJlamVjdCgwKTsKICAgICB9Ci0K
LSAgICAvLyBGSVhNRTogU3VwcG9ydCBvdGhlciB0eXBlcy4KLSAgICBwcm9taXNlLnJlamVjdCgw
KTsKIH0KIAogI2lmIEVOQUJMRShTVFJFQU1TX0FQSSkKIHZvaWQgRmV0Y2hCb2R5Ojpjb25zdW1l
QXNTdHJlYW0oRmV0Y2hCb2R5T3duZXImIG93bmVyLCBGZXRjaFJlc3BvbnNlU291cmNlJiBzb3Vy
Y2UpCiB7CisgICAgLy8gVGhpcyBzaG91bGQgYmUgaGFuZGxlZCBieSBGZXRjaFJlc3BvbnNlCiAg
ICAgQVNTRVJUKG1fdHlwZSAhPSBUeXBlOjpMb2FkaW5nKTsKKyAgICAvLyBUaGlzIHNob3VsZCBi
ZSBoYW5kbGVkIGJ5IEpTIGJ1aWx0LWlucworICAgIEFTU0VSVChtX3R5cGUgIT0gVHlwZTo6UmVh
ZGFibGVTdHJlYW0pOwogCisgICAgYm9vbCBjbG9zZVN0cmVhbSA9IGZhbHNlOwogICAgIHN3aXRj
aCAobV90eXBlKSB7CiAgICAgY2FzZSBUeXBlOjpBcnJheUJ1ZmZlcjoKICAgICAgICAgQVNTRVJU
KG1fZGF0YSk7Ci0gICAgICAgIGlmIChzb3VyY2UuZW5xdWV1ZShSZWZQdHI8SlNDOjpBcnJheUJ1
ZmZlcj4obV9kYXRhKSkpCi0gICAgICAgICAgICBzb3VyY2UuY2xvc2UoKTsKLSAgICAgICAgcmV0
dXJuOworICAgICAgICBjbG9zZVN0cmVhbSA9IHNvdXJjZS5lbnF1ZXVlKFJlZlB0cjxKU0M6OkFy
cmF5QnVmZmVyPihtX2RhdGEpKTsKKyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBUeXBlOjpUZXh0
OiB7CiAgICAgICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhID0gZXh0cmFjdEZyb21UZXh0KCk7Ci0g
ICAgICAgIGlmIChzb3VyY2UuZW5xdWV1ZShBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlKGRhdGEuZGF0
YSgpLCBkYXRhLnNpemUoKSkpKQotICAgICAgICAgICAgc291cmNlLmNsb3NlKCk7Ci0gICAgICAg
IHJldHVybjsKKyAgICAgICAgY2xvc2VTdHJlYW0gPSBzb3VyY2UuZW5xdWV1ZShBcnJheUJ1ZmZl
cjo6dHJ5Q3JlYXRlKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSkpOworICAgICAgICBicmVhazsK
ICAgICB9CiAgICAgY2FzZSBUeXBlOjpCbG9iOgogICAgICAgICBBU1NFUlQobV9ibG9iKTsKLSAg
ICAgICAgb3duZXIubG9hZEJsb2IoKm1fYmxvYiwgRmV0Y2hMb2FkZXI6OlR5cGU6OlN0cmVhbSk7
Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgb3duZXIubG9hZEJsb2IoKm1fYmxvYiwgbnVsbHB0
cik7CisgICAgICAgIGJyZWFrOwogICAgIGNhc2UgVHlwZTo6Tm9uZToKLSAgICAgICAgc291cmNl
LmNsb3NlKCk7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgY2xvc2VTdHJlYW0gPSB0cnVlOwor
ICAgICAgICBicmVhazsKKyAgICBjYXNlIFR5cGU6OkxvYWRlZDogeworICAgICAgICBjbG9zZVN0
cmVhbSA9IHNvdXJjZS5lbnF1ZXVlKG1fY29uc3VtZXIudGFrZUFzQXJyYXlCdWZmZXIoKSk7Cisg
ICAgICAgIGJyZWFrOworICAgIH0KICAgICBkZWZhdWx0OgogICAgICAgICBzb3VyY2UuZXJyb3Io
QVNDSUlMaXRlcmFsKCJub3QgaW1wbGVtZW50ZWQiKSk7CiAgICAgfQotfQotI2VuZGlmCiAKLXZv
aWQgRmV0Y2hCb2R5Ojpjb25zdW1lQXJyYXlCdWZmZXIoQ29uc3VtZXI6OlR5cGUgdHlwZSwgRGVm
ZXJyZWRXcmFwcGVyJiBwcm9taXNlKQotewotICAgIGlmICh0eXBlID09IENvbnN1bWVyOjpUeXBl
OjpBcnJheUJ1ZmZlcikgewotICAgICAgICBmdWxmaWxsUHJvbWlzZVdpdGhBcnJheUJ1ZmZlcihw
cm9taXNlLCBtX2RhdGEuZ2V0KCkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmICh0
eXBlID09IENvbnN1bWVyOjpUeXBlOjpCbG9iKSB7Ci0gICAgICAgIHByb21pc2UucmVzb2x2ZShi
bG9iRnJvbUFycmF5QnVmZmVyKG1fZGF0YS5nZXQoKSwgQmxvYjo6bm9ybWFsaXplZENvbnRlbnRU
eXBlKGV4dHJhY3RNSU1FVHlwZUZyb21NZWRpYVR5cGUobV9taW1lVHlwZSkpKSk7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9Ci0KLSAgICBBU1NFUlQodHlwZSA9PSBDb25zdW1lcjo6VHlwZTo6VGV4
dCB8fCB0eXBlID09IENvbnN1bWVyOjpUeXBlOjpKU09OKTsKLSAgICAvLyBGSVhNRTogRG8gd2Ug
bmVlZCBUZXh0UmVzb3VyY2VEZWNvZGVyIHRvIGNyZWF0ZSBhIFN0cmluZyB0byBkZWNvZGUgVVRG
LTggZGF0YS4KLSAgICBmdWxmaWxsVGV4dFByb21pc2UodHlwZSwgVGV4dFJlc291cmNlRGVjb2Rl
cjo6Y3JlYXRlKEFTQ0lJTGl0ZXJhbCgidGV4dC9wbGFpbiIpLCAiVVRGLTgiKS0+ZGVjb2RlQW5k
Rmx1c2goc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KG1fZGF0YS0+ZGF0YSgpKSwgbV9kYXRhLT5i
eXRlTGVuZ3RoKCkpLCBwcm9taXNlKTsKKyAgICBpZiAoY2xvc2VTdHJlYW0pCisgICAgICAgIHNv
dXJjZS5jbG9zZSgpOwogfQorI2VuZGlmCiAKLXZvaWQgRmV0Y2hCb2R5Ojpjb25zdW1lVGV4dChD
b25zdW1lcjo6VHlwZSB0eXBlLCBEZWZlcnJlZFdyYXBwZXImIHByb21pc2UpCit2b2lkIEZldGNo
Qm9keTo6Y29uc3VtZUFycmF5QnVmZmVyKERlZmVycmVkV3JhcHBlciYgcHJvbWlzZSkKIHsKLSAg
ICBBU1NFUlQodHlwZSA9PSBDb25zdW1lcjo6VHlwZTo6QXJyYXlCdWZmZXIgfHwgdHlwZSA9PSBD
b25zdW1lcjo6VHlwZTo6QmxvYik7Ci0KLSAgICBpZiAodHlwZSA9PSBDb25zdW1lcjo6VHlwZTo6
QXJyYXlCdWZmZXIpIHsKLSAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGEgPSBleHRyYWN0RnJv
bVRleHQoKTsKLSAgICAgICAgZnVsZmlsbFByb21pc2VXaXRoQXJyYXlCdWZmZXIocHJvbWlzZSwg
ZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBT
dHJpbmcgY29udGVudFR5cGUgPSBCbG9iOjpub3JtYWxpemVkQ29udGVudFR5cGUoZXh0cmFjdE1J
TUVUeXBlRnJvbU1lZGlhVHlwZShtX21pbWVUeXBlKSk7Ci0gICAgcHJvbWlzZS5yZXNvbHZlKEJs
b2I6OmNyZWF0ZShleHRyYWN0RnJvbVRleHQoKSwgY29udGVudFR5cGUpKTsKKyAgICBtX2NvbnN1
bWVyLnJlc29sdmVXaXRoRGF0YShwcm9taXNlLCBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4o
bV9kYXRhLT5kYXRhKCkpLCBtX2RhdGEtPmJ5dGVMZW5ndGgoKSk7CiB9CiAKLUZldGNoTG9hZGVy
OjpUeXBlIEZldGNoQm9keTo6bG9hZGluZ1R5cGUoQ29uc3VtZXI6OlR5cGUgdHlwZSkKK3ZvaWQg
RmV0Y2hCb2R5Ojpjb25zdW1lVGV4dChEZWZlcnJlZFdyYXBwZXImIHByb21pc2UpCiB7Ci0gICAg
c3dpdGNoICh0eXBlKSB7Ci0gICAgY2FzZSBDb25zdW1lcjo6VHlwZTo6SlNPTjoKLSAgICBjYXNl
IENvbnN1bWVyOjpUeXBlOjpUZXh0OgotICAgICAgICByZXR1cm4gRmV0Y2hMb2FkZXI6OlR5cGU6
OlRleHQ7Ci0gICAgY2FzZSBDb25zdW1lcjo6VHlwZTo6QmxvYjoKLSAgICBjYXNlIENvbnN1bWVy
OjpUeXBlOjpBcnJheUJ1ZmZlcjoKLSAgICAgICAgcmV0dXJuIEZldGNoTG9hZGVyOjpUeXBlOjpB
cnJheUJ1ZmZlcjsKLSAgICBkZWZhdWx0OgotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
LSAgICAgICAgcmV0dXJuIEZldGNoTG9hZGVyOjpUeXBlOjpBcnJheUJ1ZmZlcjsKLSAgICB9Owor
ICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhID0gZXh0cmFjdEZyb21UZXh0KCk7CisgICAgbV9jb25z
dW1lci5yZXNvbHZlV2l0aERhdGEocHJvbWlzZSwgZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKTsK
IH0KIAotdm9pZCBGZXRjaEJvZHk6OmNvbnN1bWVCbG9iKEZldGNoQm9keU93bmVyJiBvd25lciwg
Q29uc3VtZXI6OlR5cGUgdHlwZSwgRGVmZXJyZWRXcmFwcGVyJiYgcHJvbWlzZSkKK3ZvaWQgRmV0
Y2hCb2R5Ojpjb25zdW1lQmxvYihGZXRjaEJvZHlPd25lciYgb3duZXIsIERlZmVycmVkV3JhcHBl
ciYmIHByb21pc2UpCiB7CiAgICAgQVNTRVJUKG1fYmxvYik7CiAKLSAgICBtX2NvbnN1bWVyID0g
Q29uc3VtZXIoe3R5cGUsIFdURk1vdmUocHJvbWlzZSl9KTsKLSAgICBvd25lci5sb2FkQmxvYigq
bV9ibG9iLCBsb2FkaW5nVHlwZSh0eXBlKSk7CisgICAgbV9jb25zdW1lUHJvbWlzZSA9IFdURk1v
dmUocHJvbWlzZSk7CisgICAgb3duZXIubG9hZEJsb2IoKm1fYmxvYiwgJm1fY29uc3VtZXIpOwog
fQogCiBWZWN0b3I8dWludDhfdD4gRmV0Y2hCb2R5OjpleHRyYWN0RnJvbVRleHQoKSBjb25zdApA
QCAtMjM2LDYzICsyMjMsMjEgQEAgVmVjdG9yPHVpbnQ4X3Q+IEZldGNoQm9keTo6ZXh0cmFjdEZy
b21UZXh0KCkgY29uc3QKICAgICByZXR1cm4gdmFsdWU7CiB9CiAKLXN0YXRpYyBpbmxpbmUgUmVm
PEJsb2I+IGJsb2JGcm9tQXJyYXlCdWZmZXIoQXJyYXlCdWZmZXIqIGJ1ZmZlciwgY29uc3QgU3Ry
aW5nJiBjb250ZW50VHlwZSkKLXsKLSAgICBpZiAoIWJ1ZmZlcikKLSAgICAgICAgcmV0dXJuIEJs
b2I6OmNyZWF0ZShWZWN0b3I8dWludDhfdD4oKSwgY29udGVudFR5cGUpOwotCi0gICAgLy8gRklY
TUU6IFdlIHNob3VsZCB0cnkgdG8gbW92ZSBidWZmZXIgdG8gQmxvYiB3aXRob3V0IGRvaW5nIHRo
aXMgY29weS4KLSAgICBWZWN0b3I8dWludDhfdD4gdmFsdWUoYnVmZmVyLT5ieXRlTGVuZ3RoKCkp
OwotICAgIG1lbWNweSh2YWx1ZS5kYXRhKCksIGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPmJ5dGVM
ZW5ndGgoKSk7Ci0gICAgcmV0dXJuIEJsb2I6OmNyZWF0ZShXVEZNb3ZlKHZhbHVlKSwgY29udGVu
dFR5cGUpOwotfQotCi12b2lkIEZldGNoQm9keTo6ZnVsZmlsbFRleHRQcm9taXNlKEZldGNoQm9k
eTo6Q29uc3VtZXI6OlR5cGUgdHlwZSwgY29uc3QgU3RyaW5nJiB0ZXh0LCBEZWZlcnJlZFdyYXBw
ZXImIHByb21pc2UpCi17Ci0gICAgQVNTRVJUKHR5cGUgPT0gQ29uc3VtZXI6OlR5cGU6OlRleHQg
fHwgdHlwZSA9PSBDb25zdW1lcjo6VHlwZTo6SlNPTik7Ci0gICAgaWYgKHR5cGUgPT0gRmV0Y2hC
b2R5OjpDb25zdW1lcjo6VHlwZTo6VGV4dCkKLSAgICAgICAgcHJvbWlzZS5yZXNvbHZlKHRleHQp
OwotICAgIGVsc2UKLSAgICAgICAgZnVsZmlsbFByb21pc2VXaXRoSlNPTihwcm9taXNlLCB0ZXh0
KTsKLX0KLQogdm9pZCBGZXRjaEJvZHk6OmxvYWRpbmdGYWlsZWQoKQogewotICAgIEFTU0VSVCht
X2NvbnN1bWVyKTsKLSAgICBtX2NvbnN1bWVyLT5wcm9taXNlLnJlamVjdCgwKTsKLSAgICBtX2Nv
bnN1bWVyID0gTnVsbG9wdDsKLX0KLQotdm9pZCBGZXRjaEJvZHk6OmxvYWRlZEFzQXJyYXlCdWZm
ZXIoUmVmUHRyPEFycmF5QnVmZmVyPiYmIGJ1ZmZlcikKLXsKLSAgICBpZiAobV90eXBlID09IFR5
cGU6OkxvYWRpbmcpIHsKLSAgICAgICAgbV90eXBlID0gVHlwZTo6QXJyYXlCdWZmZXI7Ci0gICAg
ICAgIG1fZGF0YSA9IGJ1ZmZlcjsKLSAgICAgICAgaWYgKG1fY29uc3VtZXIpIHsKLSAgICAgICAg
ICAgIGNvbnN1bWVBcnJheUJ1ZmZlcihtX2NvbnN1bWVyLT50eXBlLCBtX2NvbnN1bWVyLT5wcm9t
aXNlKTsKLSAgICAgICAgICAgIG1fY29uc3VtZXIgPSBOdWxsb3B0OwotICAgICAgICB9Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBBU1NFUlQobV9jb25zdW1lcik7Ci0gICAgQVNTRVJU
KG1fY29uc3VtZXItPnR5cGUgPT0gQ29uc3VtZXI6OlR5cGU6OkJsb2IgfHwgbV9jb25zdW1lci0+
dHlwZSA9PSBDb25zdW1lcjo6VHlwZTo6QXJyYXlCdWZmZXIpOwotICAgIGlmIChtX2NvbnN1bWVy
LT50eXBlID09IENvbnN1bWVyOjpUeXBlOjpBcnJheUJ1ZmZlcikKLSAgICAgICAgZnVsZmlsbFBy
b21pc2VXaXRoQXJyYXlCdWZmZXIobV9jb25zdW1lci0+cHJvbWlzZSwgYnVmZmVyLmdldCgpKTsK
LSAgICBlbHNlIHsKLSAgICAgICAgQVNTRVJUKG1fYmxvYik7Ci0gICAgICAgIG1fY29uc3VtZXIt
PnByb21pc2UucmVzb2x2ZShibG9iRnJvbUFycmF5QnVmZmVyKGJ1ZmZlci5nZXQoKSwgbV9ibG9i
LT50eXBlKCkpKTsKKyAgICBpZiAobV9jb25zdW1lUHJvbWlzZSkgeworICAgICAgICBtX2NvbnN1
bWVQcm9taXNlLT5yZWplY3QoMCk7CisgICAgICAgIG1fY29uc3VtZVByb21pc2UgPSBOdWxsb3B0
OwogICAgIH0KLSAgICBtX2NvbnN1bWVyID0gTnVsbG9wdDsKIH0KIAotdm9pZCBGZXRjaEJvZHk6
OmxvYWRlZEFzVGV4dChTdHJpbmcmJiB0ZXh0KQordm9pZCBGZXRjaEJvZHk6OmxvYWRpbmdTdWNj
ZWVkZWQoKQogewotICAgIEFTU0VSVChtX2NvbnN1bWVyKTsKLSAgICBBU1NFUlQobV9jb25zdW1l
ci0+dHlwZSA9PSBDb25zdW1lcjo6VHlwZTo6VGV4dCB8fCBtX2NvbnN1bWVyLT50eXBlID09IENv
bnN1bWVyOjpUeXBlOjpKU09OKTsKLQotICAgIGZ1bGZpbGxUZXh0UHJvbWlzZShtX2NvbnN1bWVy
LT50eXBlLCB0ZXh0LCBtX2NvbnN1bWVyLT5wcm9taXNlKTsKLSAgICBtX2NvbnN1bWVyID0gTnVs
bG9wdDsKKyAgICBtX3R5cGUgPSBtX2NvbnN1bWVyLmhhc0RhdGEoKSA/IFR5cGU6OkxvYWRlZCA6
IFR5cGU6Ok5vbmU7CisgICAgaWYgKG1fY29uc3VtZVByb21pc2UpIHsKKyAgICAgICAgbV9jb25z
dW1lci5yZXNvbHZlKCptX2NvbnN1bWVQcm9taXNlKTsKKyAgICAgICAgbV9jb25zdW1lUHJvbWlz
ZSA9IE51bGxvcHQ7CisgICAgfQogfQogCiBSZWZQdHI8Rm9ybURhdGE+IEZldGNoQm9keTo6Ym9k
eUZvckludGVybmFsUmVxdWVzdCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2ZldGNoL0ZldGNoQm9keS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9G
ZXRjaEJvZHkuaAppbmRleCA1NmYzZGZkYzg1NzFjMzE1MTEyZjI2NjVjNmZmZGE5NzVhOWRmMzky
Li42MmQ5ZTVhNzg3ZDU4MzMwYjY2NGY4YWM1NmVmMjQ1MzJjZWY2ZGM1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmgKQEAgLTMzLDYgKzMzLDcgQEAKIAogI2luY2x1
ZGUgIkJsb2IuaCIKICNpbmNsdWRlICJET01Gb3JtRGF0YS5oIgorI2luY2x1ZGUgIkZldGNoQm9k
eUNvbnN1bWVyLmgiCiAjaW5jbHVkZSAiRmV0Y2hMb2FkZXIuaCIKICNpbmNsdWRlICJKU0RPTVBy
b21pc2UuaCIKIApAQCAtNzAsMzUgKzcxLDI3IEBAIHB1YmxpYzoKICAgICBGZXRjaEJvZHkoKSA9
IGRlZmF1bHQ7CiAKICAgICB2b2lkIGxvYWRpbmdGYWlsZWQoKTsKLSAgICB2b2lkIGxvYWRlZEFz
QXJyYXlCdWZmZXIoUmVmUHRyPEFycmF5QnVmZmVyPiYmKTsKLSAgICB2b2lkIGxvYWRlZEFzVGV4
dChTdHJpbmcmJik7CisgICAgdm9pZCBsb2FkaW5nU3VjY2VlZGVkKCk7CiAKICAgICBSZWZQdHI8
Rm9ybURhdGE+IGJvZHlGb3JJbnRlcm5hbFJlcXVlc3QoKSBjb25zdDsKIAotICAgIGVudW0gY2xh
c3MgVHlwZSB7IE5vbmUsIEFycmF5QnVmZmVyLCBMb2FkaW5nLCBUZXh0LCBCbG9iLCBGb3JtRGF0
YSB9OworICAgIGVudW0gY2xhc3MgVHlwZSB7IE5vbmUsIEFycmF5QnVmZmVyLCBCbG9iLCBGb3Jt
RGF0YSwgVGV4dCwgTG9hZGluZywgTG9hZGVkLCBSZWFkYWJsZVN0cmVhbSB9OwogICAgIFR5cGUg
dHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQogCisgICAgRmV0Y2hCb2R5Q29uc3VtZXIm
IGNvbnN1bWVyKCkgeyByZXR1cm4gbV9jb25zdW1lcjsgfQorCiBwcml2YXRlOgogICAgIEZldGNo
Qm9keShSZWY8QmxvYj4mJik7CiAgICAgRmV0Y2hCb2R5KFJlZjxET01Gb3JtRGF0YT4mJik7CiAg
ICAgRmV0Y2hCb2R5KFN0cmluZyYmKTsKICAgICBGZXRjaEJvZHkoVHlwZSB0eXBlKSA6IG1fdHlw
ZSh0eXBlKSB7IH0KIAotICAgIHN0cnVjdCBDb25zdW1lciB7Ci0gICAgICAgIGVudW0gY2xhc3Mg
VHlwZSB7IFRleHQsIEJsb2IsIEpTT04sIEFycmF5QnVmZmVyIH07Ci0KLSAgICAgICAgVHlwZSB0
eXBlOwotICAgICAgICBEZWZlcnJlZFdyYXBwZXIgcHJvbWlzZTsKLSAgICB9OwotICAgIHZvaWQg
Y29uc3VtZShGZXRjaEJvZHlPd25lciYsIENvbnN1bWVyOjpUeXBlLCBEZWZlcnJlZFdyYXBwZXIm
Jik7CisgICAgdm9pZCBjb25zdW1lKEZldGNoQm9keU93bmVyJiwgRGVmZXJyZWRXcmFwcGVyJiYp
OwogCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGV4dHJhY3RGcm9tVGV4dCgpIGNvbnN0OwotICAgIHZv
aWQgY29uc3VtZUFycmF5QnVmZmVyKENvbnN1bWVyOjpUeXBlLCBEZWZlcnJlZFdyYXBwZXImKTsK
LSAgICB2b2lkIGNvbnN1bWVUZXh0KENvbnN1bWVyOjpUeXBlLCBEZWZlcnJlZFdyYXBwZXImKTsK
LSAgICB2b2lkIGNvbnN1bWVCbG9iKEZldGNoQm9keU93bmVyJiwgQ29uc3VtZXI6OlR5cGUsIERl
ZmVycmVkV3JhcHBlciYmKTsKLSAgICBzdGF0aWMgRmV0Y2hMb2FkZXI6OlR5cGUgbG9hZGluZ1R5
cGUoQ29uc3VtZXI6OlR5cGUpOwotICAgIHN0YXRpYyB2b2lkIGZ1bGZpbGxUZXh0UHJvbWlzZShG
ZXRjaEJvZHk6OkNvbnN1bWVyOjpUeXBlLCBjb25zdCBTdHJpbmcmLCBEZWZlcnJlZFdyYXBwZXIm
KTsKLSAgICBzdGF0aWMgdm9pZCBmdWxmaWxsQXJyYXlCdWZmZXJQcm9taXNlKEZldGNoQm9keTo6
Q29uc3VtZXI6OlR5cGUsIGNvbnN0IFN0cmluZyYsIERlZmVycmVkV3JhcHBlciYpOworICAgIHZv
aWQgY29uc3VtZUFycmF5QnVmZmVyKERlZmVycmVkV3JhcHBlciYpOworICAgIHZvaWQgY29uc3Vt
ZVRleHQoRGVmZXJyZWRXcmFwcGVyJik7CisgICAgdm9pZCBjb25zdW1lQmxvYihGZXRjaEJvZHlP
d25lciYsIERlZmVycmVkV3JhcHBlciYmKTsKIAogICAgIFR5cGUgbV90eXBlIHsgVHlwZTo6Tm9u
ZSB9OwogICAgIFN0cmluZyBtX21pbWVUeXBlOwpAQCAtMTA5LDcgKzEwMiw4IEBAIHByaXZhdGU6
CiAgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBtX2RhdGE7CiAgICAgU3RyaW5nIG1fdGV4dDsKIAot
ICAgIE9wdGlvbmFsPENvbnN1bWVyPiBtX2NvbnN1bWVyOworICAgIEZldGNoQm9keUNvbnN1bWVy
IG1fY29uc3VtZXIgeyBGZXRjaEJvZHlDb25zdW1lcjo6VHlwZTo6Tm9uZSB9OworICAgIE9wdGlv
bmFsPERlZmVycmVkV3JhcHBlcj4gbV9jb25zdW1lUHJvbWlzZTsKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0
Y2hCb2R5Q29uc3VtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJv
ZHlDb25zdW1lci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDkzMjUxYmY5NGNkMzQyN2Y2NzlmZDYyZWFkZTRl
OGJhMDAyMzQ2NwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0
Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwCkBAIC0wLDAgKzEsMTQwIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE2IEFwcGxlIEluYy4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCwgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSByZXF1aXJlZCB0byBiZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YK
KyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUgorICogQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyAqIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSCisgKiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorICogT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIkZldGNoQm9keUNvbnN1bWVyLmgiCisKKyNpZiBFTkFCTEUoRkVUQ0hfQVBJKQorCisjaW5j
bHVkZSAiSlNCbG9iLmgiCisjaW5jbHVkZSAiSlNET01Qcm9taXNlLmgiCisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworc3RhdGljIGlubGluZSBSZWY8QmxvYj4gYmxvYkZyb21EYXRhKGNvbnN0IHVu
c2lnbmVkIGNoYXIqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwgY29uc3QgU3RyaW5nJiBjb250ZW50
VHlwZSkKK3sKKyAgICBWZWN0b3I8dWludDhfdD4gdmFsdWUobGVuZ3RoKTsKKyAgICBtZW1jcHko
dmFsdWUuZGF0YSgpLCBkYXRhLCBsZW5ndGgpOworICAgIHJldHVybiBCbG9iOjpjcmVhdGUoV1RG
TW92ZSh2YWx1ZSksIGNvbnRlbnRUeXBlKTsKK30KKwordm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6
cmVzb2x2ZVdpdGhEYXRhKERlZmVycmVkV3JhcHBlciYgcHJvbWlzZSwgY29uc3QgdW5zaWduZWQg
Y2hhciogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKQoreworICAgIHN3aXRjaCAobV90eXBlKSB7Cisg
ICAgY2FzZSBUeXBlOjpBcnJheUJ1ZmZlcjoKKyAgICAgICAgZnVsZmlsbFByb21pc2VXaXRoQXJy
YXlCdWZmZXIocHJvbWlzZSwgZGF0YSwgbGVuZ3RoKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNh
c2UgVHlwZTo6QmxvYjoKKyAgICAgICAgcHJvbWlzZS5yZXNvbHZlV2l0aE5ld2x5Q3JlYXRlZChi
bG9iRnJvbURhdGEoZGF0YSwgbGVuZ3RoLCBtX2NvbnRlbnRUeXBlKSk7CisgICAgICAgIHJldHVy
bjsKKyAgICBjYXNlIFR5cGU6OkpTT046CisgICAgICAgIGZ1bGZpbGxQcm9taXNlV2l0aEpTT04o
cHJvbWlzZSwgU3RyaW5nKGRhdGEsIGxlbmd0aCkpOworICAgICAgICByZXR1cm47CisgICAgY2Fz
ZSBUeXBlOjpUZXh0OgorICAgICAgICBwcm9taXNlLnJlc29sdmUoU3RyaW5nKGRhdGEsIGxlbmd0
aCkpOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBUeXBlOjpOb25lOgorICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KK30KKwordm9pZCBGZXRj
aEJvZHlDb25zdW1lcjo6cmVzb2x2ZShEZWZlcnJlZFdyYXBwZXImIHByb21pc2UpCit7CisgICAg
QVNTRVJUKG1fdHlwZSAhPSBUeXBlOjpOb25lKTsKKyAgICBzd2l0Y2ggKG1fdHlwZSkgeworICAg
IGNhc2UgVHlwZTo6QXJyYXlCdWZmZXI6CisgICAgICAgIGZ1bGZpbGxQcm9taXNlV2l0aEFycmF5
QnVmZmVyKHByb21pc2UsIHRha2VBc0FycmF5QnVmZmVyKCkuZ2V0KCkpOworICAgICAgICByZXR1
cm47CisgICAgY2FzZSBUeXBlOjpCbG9iOgorICAgICAgICBwcm9taXNlLnJlc29sdmVXaXRoTmV3
bHlDcmVhdGVkKHRha2VBc0Jsb2IoKSk7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIFR5cGU6
OkpTT046CisgICAgICAgIGZ1bGZpbGxQcm9taXNlV2l0aEpTT04ocHJvbWlzZSwgdGFrZUFzVGV4
dCgpKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgVHlwZTo6VGV4dDoKKyAgICAgICAgcHJv
bWlzZS5yZXNvbHZlKHRha2VBc1RleHQoKSk7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIFR5
cGU6Ok5vbmU6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm47
CisgICAgfQorfQorCit2b2lkIEZldGNoQm9keUNvbnN1bWVyOjphcHBlbmQoY29uc3QgY2hhciog
ZGF0YSwgdW5zaWduZWQgbGVuZ3RoKQoreworICAgIGlmICghbV9idWZmZXIpIHsKKyAgICAgICAg
bV9idWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLCBsZW5ndGgpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorICAgIG1fYnVmZmVyLT5hcHBlbmQoZGF0YSwgbGVuZ3RoKTsKK30KKwor
dm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6YXBwZW5kKGNvbnN0IHVuc2lnbmVkIGNoYXIqIGRhdGEs
IHVuc2lnbmVkIGxlbmd0aCkKK3sKKyAgICBhcHBlbmQocmVpbnRlcnByZXRfY2FzdDxjb25zdCBj
aGFyKj4oZGF0YSksIGxlbmd0aCk7Cit9CisKK1JlZlB0cjxTaGFyZWRCdWZmZXI+IEZldGNoQm9k
eUNvbnN1bWVyOjp0YWtlRGF0YSgpCit7CisgICAgcmV0dXJuIFdURk1vdmUobV9idWZmZXIpOwor
fQorCitSZWZQdHI8SlNDOjpBcnJheUJ1ZmZlcj4gRmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VBc0Fy
cmF5QnVmZmVyKCkKK3sKKyAgICBpZiAoIW1fYnVmZmVyKQorICAgICAgICByZXR1cm4gQXJyYXlC
dWZmZXI6OnRyeUNyZWF0ZShudWxscHRyLCAwKTsKKworICAgIGF1dG8gYXJyYXlCdWZmZXIgPSBt
X2J1ZmZlci0+Y3JlYXRlQXJyYXlCdWZmZXIoKTsKKyAgICBtX2J1ZmZlciA9IG51bGxwdHI7Cisg
ICAgcmV0dXJuIGFycmF5QnVmZmVyOworfQorCitSZWY8QmxvYj4gRmV0Y2hCb2R5Q29uc3VtZXI6
OnRha2VBc0Jsb2IoKQoreworICAgIEFTU0VSVChtX2J1ZmZlcik7CisgICAgaWYgKCFtX2J1ZmZl
cikKKyAgICAgICAgcmV0dXJuIEJsb2I6OmNyZWF0ZSgpOworCisgICAgLy8gRklYTUU6IFdlIHNo
b3VsZCB0cnkgdG8gbW92ZSBtX2J1ZmZlciB0byBCbG9iIHdpdGhvdXQgZG9pbmcgZXh0cmEgY29w
eS4KKyAgICByZXR1cm4gYmxvYkZyb21EYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdW5zaWdu
ZWQgY2hhcio+KG1fYnVmZmVyLT5kYXRhKCkpLCBtX2J1ZmZlci0+c2l6ZSgpLCBtX2NvbnRlbnRU
eXBlKTsKK30KKworU3RyaW5nIEZldGNoQm9keUNvbnN1bWVyOjp0YWtlQXNUZXh0KCkKK3sKKyAg
ICBpZiAoIW1fYnVmZmVyKQorICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisKKyAgICBhdXRvIHRl
eHQgPSBTdHJpbmcobV9idWZmZXItPmRhdGEoKSwgbV9idWZmZXItPnNpemUoKSk7CisgICAgbV9i
dWZmZXIgPSBudWxscHRyOworICAgIHJldHVybiB0ZXh0OworfQorCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoRkVUQ0hfQVBJKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZhYTFmZTdk
MjhhYzdhNmNhZTMyYWVjNzQ0NDVkOTgwODEzNDRiM2IKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmgKQEAgLTAsMCArMSw3
MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQsIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgcmVxdWlyZWQgdG8gYmUgbWV0OgorICoKKyAqIDEu
ICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgSW5j
LiBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKKyAqIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyAqIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SCisgKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgorICogQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwK
KyAqIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEg
b25jZQorCisjaWYgRU5BQkxFKEZFVENIX0FQSSkKKworI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5o
IgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEJsb2I7CitjbGFzcyBEZWZlcnJlZFdy
YXBwZXI7CisKK2NsYXNzIEZldGNoQm9keUNvbnN1bWVyIHsKK3B1YmxpYzoKKyAgICAvLyBUeXBl
IGlzIHVzZWQgaW4gRmV0Y2hSZXNwb25zZS5qcyBhbmQgc2hvdWxkIGJlIGtlcHQgc3luY2hyb25p
emVkIHdpdGggaXQuCisgICAgZW51bSBjbGFzcyBUeXBlIHsgTm9uZSwgQXJyYXlCdWZmZXIsIEJs
b2IsIEpTT04sIFRleHQgfTsKKworICAgIEZldGNoQm9keUNvbnN1bWVyKFR5cGUgdHlwZSkgOiBt
X3R5cGUodHlwZSkgeyB9CisKKyAgICB2b2lkIGFwcGVuZChjb25zdCBjaGFyKiBkYXRhLCB1bnNp
Z25lZCk7CisgICAgdm9pZCBhcHBlbmQoY29uc3QgdW5zaWduZWQgY2hhciogZGF0YSwgdW5zaWdu
ZWQpOworCisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdGFrZURhdGEoKTsKKyAgICBSZWZQdHI8
SlNDOjpBcnJheUJ1ZmZlcj4gdGFrZUFzQXJyYXlCdWZmZXIoKTsKKyAgICBSZWY8QmxvYj4gdGFr
ZUFzQmxvYigpOworICAgIFN0cmluZyB0YWtlQXNUZXh0KCk7CisKKyAgICB2b2lkIHNldENvbnRl
bnRUeXBlKGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpIHsgbV9jb250ZW50VHlwZSA9IGNvbnRl
bnRUeXBlOyB9CisgICAgdm9pZCBzZXRUeXBlKFR5cGUgdHlwZSkgeyBtX3R5cGUgPSB0eXBlOyB9
CisKKyAgICB2b2lkIGNsZWFuKCkgeyBtX2J1ZmZlciA9IG51bGxwdHI7IH0KKworICAgIHZvaWQg
cmVzb2x2ZShEZWZlcnJlZFdyYXBwZXImKTsKKyAgICB2b2lkIHJlc29sdmVXaXRoRGF0YShEZWZl
cnJlZFdyYXBwZXImLCBjb25zdCB1bnNpZ25lZCBjaGFyKiwgdW5zaWduZWQpOworCisgICAgYm9v
bCBoYXNEYXRhKCkgY29uc3QgeyByZXR1cm4gISFtX2J1ZmZlcjsgfQorCitwcml2YXRlOgorICAg
IFR5cGUgbV90eXBlOworICAgIFN0cmluZyBtX2NvbnRlbnRUeXBlOworICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IG1fYnVmZmVyOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5k
aWYgLy8gRU5BQkxFKEZFVENIX0FQSSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZmV0Y2gvRmV0Y2hCb2R5T3duZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRj
aC9GZXRjaEJvZHlPd25lci5jcHAKaW5kZXggMGY0NTc5NGEwNjllMmVlNjA4YjE4Mzc4ZTNkZjFm
NGJjZTczNTNhNS4uOTY0YmU3NzExMDRkYTY3MTk3ZDNkNTA0YzY5ODgxNDE4Y2M4NTY4OSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlPd25lci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlPd25lci5jcHAKQEAg
LTEzOCw3ICsxMzgsNyBAQCB2b2lkIEZldGNoQm9keU93bmVyOjp0ZXh0KERlZmVycmVkV3JhcHBl
ciYmIHByb21pc2UpCiAgICAgbV9ib2R5LnRleHQoKnRoaXMsIFdURk1vdmUocHJvbWlzZSkpOwog
fQogCi12b2lkIEZldGNoQm9keU93bmVyOjpsb2FkQmxvYihCbG9iJiBibG9iLCBGZXRjaExvYWRl
cjo6VHlwZSB0eXBlKQordm9pZCBGZXRjaEJvZHlPd25lcjo6bG9hZEJsb2IoQmxvYiYgYmxvYiwg
RmV0Y2hCb2R5Q29uc3VtZXIqIGNvbnN1bWVyKQogewogICAgIC8vIENhbiBvbmx5IGJlIGNhbGxl
ZCBvbmNlIGZvciBhIGJvZHkgaW5zdGFuY2UuCiAgICAgQVNTRVJUKGlzRGlzdHVyYmVkKCkpOwpA
QCAtMTUwLDcgKzE1MCw3IEBAIHZvaWQgRmV0Y2hCb2R5T3duZXI6OmxvYWRCbG9iKEJsb2ImIGJs
b2IsIEZldGNoTG9hZGVyOjpUeXBlIHR5cGUpCiAgICAgfQogCiAgICAgbV9ibG9iTG9hZGVyID0g
eyAqdGhpcyB9OwotICAgIG1fYmxvYkxvYWRlci0+bG9hZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxG
ZXRjaExvYWRlcj4odHlwZSwgKm1fYmxvYkxvYWRlcik7CisgICAgbV9ibG9iTG9hZGVyLT5sb2Fk
ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEZldGNoTG9hZGVyPigqbV9ibG9iTG9hZGVyLCBjb25zdW1l
cik7CiAKICAgICBtX2Jsb2JMb2FkZXItPmxvYWRlci0+c3RhcnQoKnNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKSwgYmxvYik7CiAgICAgaWYgKCFtX2Jsb2JMb2FkZXItPmxvYWRlci0+aXNTdGFydGVk
KCkpIHsKQEAgLTE2OSwxMSArMTY5LDYgQEAgdm9pZCBGZXRjaEJvZHlPd25lcjo6ZmluaXNoQmxv
YkxvYWRpbmcoKQogICAgIHVuc2V0UGVuZGluZ0FjdGl2aXR5KHRoaXMpOwogfQogCi12b2lkIEZl
dGNoQm9keU93bmVyOjpsb2FkZWRCbG9iQXNUZXh0KFN0cmluZyYmIHRleHQpCi17Ci0gICAgbV9i
b2R5LmxvYWRlZEFzVGV4dChXVEZNb3ZlKHRleHQpKTsKLX0KLQogdm9pZCBGZXRjaEJvZHlPd25l
cjo6YmxvYkxvYWRpbmdTdWNjZWVkZWQoKQogewogICAgIEFTU0VSVChtX2JvZHkudHlwZSgpID09
IEZldGNoQm9keTo6VHlwZTo6QmxvYik7CkBAIC0xODQsNyArMTc5LDcgQEAgdm9pZCBGZXRjaEJv
ZHlPd25lcjo6YmxvYkxvYWRpbmdTdWNjZWVkZWQoKQogICAgICAgICBtX3JlYWRhYmxlU3RyZWFt
U291cmNlID0gbnVsbHB0cjsKICAgICB9CiAjZW5kaWYKLQorICAgIG1fYm9keS5sb2FkaW5nU3Vj
Y2VlZGVkKCk7CiAgICAgZmluaXNoQmxvYkxvYWRpbmcoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlPd25lci5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlPd25lci5oCmluZGV4IDA2YTIxMjY2NWMzOWZjMzkw
N2QzOGUxM2Y0Y2MxMzNjYzg3MmM3YjQuLjg3YjcyZjBhNDk5ZjkzMzZhNDBmYTQ4NjMzYTE4OTA5
MjIzYjFkOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hC
b2R5T3duZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keU93
bmVyLmgKQEAgLTUyLDcgKzUyLDcgQEAgcHVibGljOgogICAgIHZvaWQganNvbihEZWZlcnJlZFdy
YXBwZXImJik7CiAgICAgdm9pZCB0ZXh0KERlZmVycmVkV3JhcHBlciYmKTsKIAotICAgIHZvaWQg
bG9hZEJsb2IoQmxvYiYsIEZldGNoTG9hZGVyOjpUeXBlKTsKKyAgICB2b2lkIGxvYWRCbG9iKEJs
b2ImLCBGZXRjaEJvZHlDb25zdW1lciopOwogCiAgICAgYm9vbCBpc0FjdGl2ZSgpIGNvbnN0IHsg
cmV0dXJuICEhbV9ibG9iTG9hZGVyOyB9CiAKQEAgLTY3LDggKzY3LDYgQEAgcHJvdGVjdGVkOgog
CiBwcml2YXRlOgogICAgIC8vIEJsb2IgbG9hZGluZyByb3V0aW5lcwotICAgIHZvaWQgbG9hZGVk
QmxvYkFzVGV4dChTdHJpbmcmJik7Ci0gICAgdm9pZCBsb2FkZWRCbG9iQXNBcnJheUJ1ZmZlcihS
ZWZQdHI8QXJyYXlCdWZmZXI+JiYgYnVmZmVyKSB7IG1fYm9keS5sb2FkZWRBc0FycmF5QnVmZmVy
KFdURk1vdmUoYnVmZmVyKSk7IH0KICAgICB2b2lkIGJsb2JDaHVuayhjb25zdCBjaGFyKiwgc2l6
ZV90KTsKICAgICB2b2lkIGJsb2JMb2FkaW5nU3VjY2VlZGVkKCk7CiAgICAgdm9pZCBibG9iTG9h
ZGluZ0ZhaWxlZCgpOwpAQCAtNzgsOCArNzYsNiBAQCBwcml2YXRlOgogICAgICAgICBCbG9iTG9h
ZGVyKEZldGNoQm9keU93bmVyJik7CiAKICAgICAgICAgLy8gRmV0Y2hMb2FkZXJDbGllbnQgQVBJ
Ci0gICAgICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZ0FzVGV4dChTdHJpbmcmJiB0ZXh0KSBmaW5h
bCB7IG93bmVyLmxvYWRlZEJsb2JBc1RleHQoV1RGTW92ZSh0ZXh0KSk7IH0KLSAgICAgICAgdm9p
ZCBkaWRGaW5pc2hMb2FkaW5nQXNBcnJheUJ1ZmZlcihSZWZQdHI8QXJyYXlCdWZmZXI+JiYgYnVm
ZmVyKSBmaW5hbCB7IG93bmVyLmxvYWRlZEJsb2JBc0FycmF5QnVmZmVyKFdURk1vdmUoYnVmZmVy
KSk7IH0KICAgICAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYpIGZpbmFsOwogICAgICAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIqIGRh
dGEsIHNpemVfdCBzaXplKSBmaW5hbCB7IG93bmVyLmJsb2JDaHVuayhkYXRhLCBzaXplKTsgfQog
ICAgICAgICB2b2lkIGRpZEZhaWwoKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZmV0Y2gvRmV0Y2hJbnRlcm5hbHMuanMgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2ZldGNoL0ZldGNoSW50ZXJuYWxzLmpzCmluZGV4IDQ1MmVjNzYzNTM1YTgwOWVhOGQ4Mjk4ZTA2
OTM1ZWU1YjMwNzZlNGIuLmQ3NTAwNGUyZjgwODViMTVjNzEwMDcwMDE1YmVkZDFiNWFiYjIyYzYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hJbnRlcm5hbHMu
anMKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEludGVybmFscy5qcwpA
QCAtNTEsMyArNTEsMjcgQEAgZnVuY3Rpb24gZmlsbEZldGNoSGVhZGVycyhoZWFkZXJzLCBoZWFk
ZXJzSW5pdCkKICAgICAgICAgQEhlYWRlcnMucHJvdG90eXBlLkBhcHBlbmRGcm9tSlMuQGNhbGwo
aGVhZGVycywgbmFtZSwgaGVhZGVyc0luaXRbbmFtZV0pOwogICAgIH0KIH0KKworZnVuY3Rpb24g
Y29uc3VtZVN0cmVhbShyZXNwb25zZSwgdHlwZSkKK3sKKyAgICBAYXNzZXJ0KHJlc3BvbnNlIGlu
c3RhbmNlb2YgQFJlc3BvbnNlKTsKKyAgICBAYXNzZXJ0KHJlc3BvbnNlLkBib2R5IGluc3RhbmNl
b2YgQFJlYWRhYmxlU3RyZWFtKTsKKworICAgIGlmIChAaXNSZWFkYWJsZVN0cmVhbURpc3R1cmJl
ZChyZXNwb25zZS5AYm9keSkpCisgICAgICAgIHJldHVybiBAUHJvbWlzZS5AcmVqZWN0KG5ldyBA
VHlwZUVycm9yKCJDYW5ub3QgY29uc3VtZSBhIGRpc3R1cmJlZCBSZXNwb25zZSBib2R5IFJlYWRh
YmxlU3RyZWFtIikpOworCisgICAgdHJ5IHsKKyAgICAgICAgbGV0IHJlYWRlciA9IG5ldyBAUmVh
ZGFibGVTdHJlYW1SZWFkZXIocmVzcG9uc2UuQGJvZHkpOworCisgICAgICAgIEBSZXNwb25zZS5w
cm90b3R5cGUuQHN0YXJ0Q29uc3VtaW5nU3RyZWFtLkBjYWxsKHJlc3BvbnNlLCB0eXBlKTsKKyAg
ICAgICAgbGV0IHB1bGwgPSAocmVzdWx0KSA9PiB7CisgICAgICAgICAgICBpZiAocmVzdWx0LmRv
bmUpCisgICAgICAgICAgICAgICAgcmV0dXJuIEBSZXNwb25zZS5wcm90b3R5cGUuQGZpbmlzaENv
bnN1bWluZ1N0cmVhbS5AY2FsbChyZXNwb25zZSk7CisgICAgICAgICAgICBAUmVzcG9uc2UucHJv
dG90eXBlLkBjb25zdW1lQ2h1bmsuQGNhbGwocmVzcG9uc2UsIHJlc3VsdC52YWx1ZSk7CisgICAg
ICAgICAgICByZXR1cm4gQFByb21pc2UucHJvdG90eXBlLkB0aGVuLkBjYWxsKEByZWFkRnJvbVJl
YWRhYmxlU3RyZWFtUmVhZGVyKHJlYWRlciksIHB1bGwpOworICAgICAgICB9CisgICAgICAgIHJl
dHVybiBAUHJvbWlzZS5wcm90b3R5cGUuQHRoZW4uQGNhbGwoQHJlYWRGcm9tUmVhZGFibGVTdHJl
YW1SZWFkZXIocmVhZGVyKSwgcHVsbCk7CisgICAgfSBjYXRjaChlKSB7CisgICAgICAgIHJldHVy
biBAUHJvbWlzZS5AcmVqZWN0KGUpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9mZXRjaC9GZXRjaExvYWRlci5jcHAKaW5kZXggMWIyM2YwNDllNjdiNDY3MWMxZTE2YTY4OWUx
ZGIyYjQ0YWQxM2Y4MC4uZTYzYmMxYjJkMzNjMzJkMjFlNDlmOTlhNTcyMjY0NzMwMTUyNjJlYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlci5jcHAKQEAgLTg5
LDI0ICs4OSwyNiBAQCB2b2lkIEZldGNoTG9hZGVyOjpzdGFydChTY3JpcHRFeGVjdXRpb25Db250
ZXh0JiBjb250ZXh0LCBjb25zdCBGZXRjaFJlcXVlc3QmIHJlcQogICAgIG1faXNTdGFydGVkID0g
bV9sb2FkZXI7CiB9CiAKLUZldGNoTG9hZGVyOjpGZXRjaExvYWRlcihUeXBlIHR5cGUsIEZldGNo
TG9hZGVyQ2xpZW50JiBjbGllbnQpCi0gICAgOiBtX3R5cGUodHlwZSkKLSAgICAsIG1fY2xpZW50
KGNsaWVudCkKK0ZldGNoTG9hZGVyOjpGZXRjaExvYWRlcihGZXRjaExvYWRlckNsaWVudCYgY2xp
ZW50LCBGZXRjaEJvZHlDb25zdW1lciogY29uc3VtZXIpCisgICAgOiBtX2NsaWVudChjbGllbnQp
CisgICAgLCBtX2NvbnN1bWVyKGNvbnN1bWVyKQogewogfQogCiB2b2lkIEZldGNoTG9hZGVyOjpz
dG9wKCkKIHsKLSAgICBtX2RhdGEgPSBudWxscHRyOworICAgIGlmIChtX2NvbnN1bWVyKQorICAg
ICAgICBtX2NvbnN1bWVyLT5jbGVhbigpOwogICAgIGlmIChtX2xvYWRlcikKICAgICAgICAgbV9s
b2FkZXItPmNhbmNlbCgpOwogfQogCiBSZWZQdHI8U2hhcmVkQnVmZmVyPiBGZXRjaExvYWRlcjo6
c3RhcnRTdHJlYW1pbmcoKQogewotICAgIEFTU0VSVChtX3R5cGUgPT0gVHlwZTo6QXJyYXlCdWZm
ZXIpOwotICAgIG1fdHlwZSA9IFR5cGU6OlN0cmVhbTsKLSAgICByZXR1cm4gV1RGTW92ZShtX2Rh
dGEpOworICAgIEFTU0VSVChtX2NvbnN1bWVyKTsKKyAgICBhdXRvIGZpcnN0Q2h1bmsgPSBtX2Nv
bnN1bWVyLT50YWtlRGF0YSgpOworICAgIG1fY29uc3VtZXIgPSBudWxscHRyOworICAgIHJldHVy
biBmaXJzdENodW5rOwogfQogCiB2b2lkIEZldGNoTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2Uo
dW5zaWduZWQgbG9uZywgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCkBAIC0xMTQs
MjkgKzExNiwxNyBAQCB2b2lkIEZldGNoTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UodW5zaWdu
ZWQgbG9uZywgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcAogICAgIG1fY2xpZW50LmRpZFJl
Y2VpdmVSZXNwb25zZShyZXNwb25zZSk7CiB9CiAKLS8vIEZJWE1FOiBXZSBzaG91bGQgbWFrZSB0
ZXh0IGFuZCBibG9iIGNyZWF0aW9uIG1vcmUgZWZmaWNpZW50LgotLy8gV2UgbWlnaHQgYWxzbyB3
YW50IHRvIG1lcmdlIHRoaXMgY2xhc3Mgd2l0aCBGaWxlUmVhZGVyTG9hZGVyLgogdm9pZCBGZXRj
aExvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgY2hhciogdmFsdWUsIGludCBzaXplKQogewot
ICAgIGlmIChtX3R5cGUgPT0gVHlwZTo6U3RyZWFtKSB7CisgICAgaWYgKCFtX2NvbnN1bWVyKSB7
CiAgICAgICAgIG1fY2xpZW50LmRpZFJlY2VpdmVEYXRhKHZhbHVlLCBzaXplKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KLSAgICBpZiAoIW1fZGF0YSkgewotICAgICAgICBtX2RhdGEgPSBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZSh2YWx1ZSwgc2l6ZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0g
ICAgbV9kYXRhLT5hcHBlbmQodmFsdWUsIHNpemUpOworICAgIG1fY29uc3VtZXItPmFwcGVuZCh2
YWx1ZSwgc2l6ZSk7CiB9CiAKIHZvaWQgRmV0Y2hMb2FkZXI6OmRpZEZpbmlzaExvYWRpbmcodW5z
aWduZWQgbG9uZywgZG91YmxlKQogewotICAgIGlmIChtX3R5cGUgPT0gVHlwZTo6QXJyYXlCdWZm
ZXIpCi0gICAgICAgIG1fY2xpZW50LmRpZEZpbmlzaExvYWRpbmdBc0FycmF5QnVmZmVyKG1fZGF0
YSA/IG1fZGF0YS0+Y3JlYXRlQXJyYXlCdWZmZXIoKSA6IEFycmF5QnVmZmVyOjp0cnlDcmVhdGUo
bnVsbHB0ciwgMCkpOwotICAgIGVsc2UgaWYgKG1fdHlwZSA9PSBUeXBlOjpUZXh0KQotICAgICAg
ICBtX2NsaWVudC5kaWRGaW5pc2hMb2FkaW5nQXNUZXh0KG1fZGF0YSA/IFRleHRSZXNvdXJjZURl
Y29kZXI6OmNyZWF0ZShBU0NJSUxpdGVyYWwoInRleHQvcGxhaW4iKSwgIlVURi04IiktPmRlY29k
ZUFuZEZsdXNoKG1fZGF0YS0+ZGF0YSgpLCBtX2RhdGEtPnNpemUoKSk6IFN0cmluZygpKTsKLSAg
ICBtX2RhdGEgPSBudWxscHRyOwotCiAgICAgbV9jbGllbnQuZGlkU3VjY2VlZCgpOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyLmgKaW5kZXggZDQ3M2ZmMTc0
NTFmY2E1YzFhNzEzZmI1NDNiZDBiNmEwYjFkZTAyYi4uZGJiODJmYmViZDU1OWU3N2QxY2UxYjYx
NmJjNmQwYjRmMWFlZjNjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRj
aC9GZXRjaExvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hM
b2FkZXIuaApAQCAtMjYsMTIgKzI2LDExIEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5k
ZWYgRmV0Y2hMb2FkZXJfaAotI2RlZmluZSBGZXRjaExvYWRlcl9oCisjcHJhZ21hIG9uY2UKIAog
I2lmIEVOQUJMRShGRVRDSF9BUEkpCiAKLSNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKKyNpbmNs
dWRlICJGZXRjaEJvZHlDb25zdW1lci5oIgogI2luY2x1ZGUgIlRocmVhZGFibGVMb2FkZXIuaCIK
ICNpbmNsdWRlICJUaHJlYWRhYmxlTG9hZGVyQ2xpZW50LmgiCiAKQEAgLTQ0LDkgKzQzLDcgQEAg
Y2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKIAogY2xhc3MgRmV0Y2hMb2FkZXIgZmluYWwg
OiBwdWJsaWMgVGhyZWFkYWJsZUxvYWRlckNsaWVudCB7CiBwdWJsaWM6Ci0gICAgZW51bSBjbGFz
cyBUeXBlIHsgQXJyYXlCdWZmZXIsIFN0cmVhbSwgVGV4dCB9OwotCi0gICAgRmV0Y2hMb2FkZXIo
VHlwZSwgRmV0Y2hMb2FkZXJDbGllbnQmKTsKKyAgICBGZXRjaExvYWRlcihGZXRjaExvYWRlckNs
aWVudCYsIEZldGNoQm9keUNvbnN1bWVyKik7CiAKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBz
dGFydFN0cmVhbWluZygpOwogCkBAIC02MywxOCArNjAsMTMgQEAgcHJpdmF0ZToKICAgICB2b2lk
IGRpZEZpbmlzaExvYWRpbmcodW5zaWduZWQgbG9uZywgZG91YmxlKSBmaW5hbDsKICAgICB2b2lk
IGRpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYpIGZpbmFsOwogCi0gICAgVHlwZSB0eXBlKCkg
Y29uc3QgeyByZXR1cm4gbV90eXBlOyB9Ci0KIHByaXZhdGU6Ci0gICAgVHlwZSBtX3R5cGUgeyBU
eXBlOjpBcnJheUJ1ZmZlciB9OwogICAgIEZldGNoTG9hZGVyQ2xpZW50JiBtX2NsaWVudDsKICAg
ICBSZWZQdHI8VGhyZWFkYWJsZUxvYWRlcj4gbV9sb2FkZXI7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gbV9kYXRhOworICAgIEZldGNoQm9keUNvbnN1bWVyKiBtX2NvbnN1bWVyOwogICAgIGJv
b2wgbV9pc1N0YXJ0ZWQgeyBmYWxzZSB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQog
CiAjZW5kaWYgLy8gRU5BQkxFKEZFVENIX0FQSSkKLQotI2VuZGlmIC8vIEZldGNoTG9hZGVyX2gK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXJDbGll
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXJDbGllbnQuaApp
bmRleCBkMDlmYWQ1M2UyN2U2ZDhhYzIyYWRiN2NhOWY0NTEwMjc4ZGE0MTUwLi5lODhlOTk0MThj
ZDk5MTRhMWVlNDgxODc3ZDYxYWRjYjZlMDRlYWY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlckNsaWVudC5oCkBAIC00Nyw4ICs0Nyw2IEBAIHB1Ymxp
YzoKIAogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYpIHsgfQogCi0gICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWRpbmdBc1RleHQo
U3RyaW5nJiYpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hMb2FkaW5nQXNBcnJheUJ1
ZmZlcihSZWZQdHI8SlNDOjpBcnJheUJ1ZmZlcj4mJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRp
ZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIqLCBzaXplX3QpIHsgfQogCiAgICAgdmlydHVhbCB2b2lk
IGRpZFN1Y2NlZWQoKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Zl
dGNoL0ZldGNoUmVzcG9uc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRj
aFJlc3BvbnNlLmNwcAppbmRleCBjMmU4YWJhYWIxMWEyMDE1NDBkOGJkMTI4NTBlNTFlNzBiMmVh
MzAxLi42NzM4ZmEzMTgzYzk2MTE1OTExMmNlMThjZDA1MGNiODgwZGE4NDAzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAKQEAgLTM0LDYgKzM0
LDcgQEAKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCiAjaW5jbHVkZSAiRmV0Y2hSZXF1ZXN0
LmgiCiAjaW5jbHVkZSAiSFRUUFBhcnNlcnMuaCIKKyNpbmNsdWRlICJKU0Jsb2IuaCIKICNpbmNs
dWRlICJKU0ZldGNoUmVzcG9uc2UuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0
LmgiCiAKQEAgLTkzLDEzICs5NCwxMSBAQCBGZXRjaFJlc3BvbnNlOjpGZXRjaFJlc3BvbnNlKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIEZldGNoQm9keSYmIGJvZHksCiB7CiB9CiAK
LVJlZlB0cjxGZXRjaFJlc3BvbnNlPiBGZXRjaFJlc3BvbnNlOjpjbG9uZShTY3JpcHRFeGVjdXRp
b25Db250ZXh0JiBjb250ZXh0LCBFeGNlcHRpb25Db2RlJiBlYykKK1JlZjxGZXRjaFJlc3BvbnNl
PiBGZXRjaFJlc3BvbnNlOjpjbG9uZUZvckpTKCkKIHsKLSAgICBpZiAoaXNEaXN0dXJiZWQoKSkg
ewotICAgICAgICBlYyA9IFR5cGVFcnJvcjsKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAg
fQotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZldGNoUmVzcG9uc2UoY29udGV4dCwgRmV0Y2hC
b2R5KG1fYm9keSksIEZldGNoSGVhZGVyczo6Y3JlYXRlKGhlYWRlcnMoKSksIFJlc291cmNlUmVz
cG9uc2UobV9yZXNwb25zZSkpKTsKKyAgICBBU1NFUlQoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
KTsKKyAgICBBU1NFUlQoIWlzRGlzdHVyYmVkKCkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IEZldGNoUmVzcG9uc2UoKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgRmV0Y2hCb2R5KG1fYm9k
eSksIEZldGNoSGVhZGVyczo6Y3JlYXRlKGhlYWRlcnMoKSksIFJlc291cmNlUmVzcG9uc2UobV9y
ZXNwb25zZSkpKTsKIH0KIAogdm9pZCBGZXRjaFJlc3BvbnNlOjpmZXRjaChTY3JpcHRFeGVjdXRp
b25Db250ZXh0JiBjb250ZXh0LCBGZXRjaFJlcXVlc3QmIHJlcXVlc3QsIEZldGNoUHJvbWlzZSYm
IHByb21pc2UpCkBAIC0xMzAsNiArMTI5LDggQEAgdm9pZCBGZXRjaFJlc3BvbnNlOjpCb2R5TG9h
ZGVyOjpkaWRTdWNjZWVkKCkKICAgICAgICAgbV9yZXNwb25zZS5tX3JlYWRhYmxlU3RyZWFtU291
cmNlID0gbnVsbHB0cjsKICAgICB9CiAjZW5kaWYKKyAgICBtX3Jlc3BvbnNlLm1fYm9keS5sb2Fk
aW5nU3VjY2VlZGVkKCk7CisKICAgICBpZiAobV9sb2FkZXItPmlzU3RhcnRlZCgpKQogICAgICAg
ICBtX3Jlc3BvbnNlLm1fYm9keUxvYWRlciA9IE51bGxvcHQ7CiAgICAgbV9yZXNwb25zZS51bnNl
dFBlbmRpbmdBY3Rpdml0eSgmbV9yZXNwb25zZSk7CkBAIC0xODcsMTQgKzE4OCw5IEBAIHZvaWQg
RmV0Y2hSZXNwb25zZTo6Qm9keUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgY2hhciogZGF0
YSwgc2l6ZV90IHNpemUpCiAjZW5kaWYKIH0KIAotdm9pZCBGZXRjaFJlc3BvbnNlOjpCb2R5TG9h
ZGVyOjpkaWRGaW5pc2hMb2FkaW5nQXNBcnJheUJ1ZmZlcihSZWZQdHI8QXJyYXlCdWZmZXI+JiYg
YnVmZmVyKQotewotICAgIG1fcmVzcG9uc2UuYm9keSgpLmxvYWRlZEFzQXJyYXlCdWZmZXIoV1RG
TW92ZShidWZmZXIpKTsKLX0KLQogYm9vbCBGZXRjaFJlc3BvbnNlOjpCb2R5TG9hZGVyOjpzdGFy
dChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBjb25zdCBGZXRjaFJlcXVlc3QmIHJl
cXVlc3QpCiB7Ci0gICAgbV9sb2FkZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEZldGNoTG9hZGVyPihG
ZXRjaExvYWRlcjo6VHlwZTo6QXJyYXlCdWZmZXIsICp0aGlzKTsKKyAgICBtX2xvYWRlciA9IHN0
ZDo6bWFrZV91bmlxdWU8RmV0Y2hMb2FkZXI+KCp0aGlzLCAmbV9yZXNwb25zZS5tX2JvZHkuY29u
c3VtZXIoKSk7CiAgICAgbV9sb2FkZXItPnN0YXJ0KGNvbnRleHQsIHJlcXVlc3QpOwogICAgIHJl
dHVybiBtX2xvYWRlci0+aXNTdGFydGVkKCk7CiB9CkBAIC0yMDUsNyArMjAxLDQ2IEBAIHZvaWQg
RmV0Y2hSZXNwb25zZTo6Qm9keUxvYWRlcjo6c3RvcCgpCiAgICAgICAgIG1fbG9hZGVyLT5zdG9w
KCk7CiB9CiAKK3ZvaWQgRmV0Y2hSZXNwb25zZTo6Y29uc3VtZSh1bnNpZ25lZCB0eXBlLCBEZWZl
cnJlZFdyYXBwZXImJiB3cmFwcGVyKQoreworICAgIEFTU0VSVCh0eXBlIDw9IHN0YXRpY19jYXN0
PHVuc2lnbmVkPihGZXRjaEJvZHlDb25zdW1lcjo6VHlwZTo6VGV4dCkpOworCisgICAgc3dpdGNo
IChzdGF0aWNfY2FzdDxGZXRjaEJvZHlDb25zdW1lcjo6VHlwZT4odHlwZSkpIHsKKyAgICBjYXNl
IEZldGNoQm9keUNvbnN1bWVyOjpUeXBlOjpBcnJheUJ1ZmZlcjoKKyAgICAgICAgYXJyYXlCdWZm
ZXIoV1RGTW92ZSh3cmFwcGVyKSk7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIEZldGNoQm9k
eUNvbnN1bWVyOjpUeXBlOjpCbG9iOgorICAgICAgICBibG9iKFdURk1vdmUod3JhcHBlcikpOwor
ICAgICAgICByZXR1cm47CisgICAgY2FzZSBGZXRjaEJvZHlDb25zdW1lcjo6VHlwZTo6SlNPTjoK
KyAgICAgICAganNvbihXVEZNb3ZlKHdyYXBwZXIpKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNh
c2UgRmV0Y2hCb2R5Q29uc3VtZXI6OlR5cGU6OlRleHQ6CisgICAgICAgIHRleHQoV1RGTW92ZSh3
cmFwcGVyKSk7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIEZldGNoQm9keUNvbnN1bWVyOjpU
eXBlOjpOb25lOgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KK30KKwogI2lmIEVOQUJMRShTVFJFQU1TX0FQSSkKK3ZvaWQgRmV0Y2hSZXNwb25z
ZTo6c3RhcnRDb25zdW1pbmdTdHJlYW0odW5zaWduZWQgdHlwZSkKK3sKKyAgICBtX2lzRGlzdHVy
YmVkID0gdHJ1ZTsKKyAgICBtX2NvbnN1bWVyLnNldFR5cGUoc3RhdGljX2Nhc3Q8RmV0Y2hCb2R5
Q29uc3VtZXI6OlR5cGU+KHR5cGUpKTsKK30KKwordm9pZCBGZXRjaFJlc3BvbnNlOjpjb25zdW1l
Q2h1bmsoUmVmPEpTQzo6VWludDhBcnJheT4mJiBjaHVuaykKK3sKKyAgICBtX2NvbnN1bWVyLmFw
cGVuZChjaHVuay0+ZGF0YSgpLCBjaHVuay0+Ynl0ZUxlbmd0aCgpKTsKK30KKwordm9pZCBGZXRj
aFJlc3BvbnNlOjpmaW5pc2hDb25zdW1pbmdTdHJlYW0oRGVmZXJyZWRXcmFwcGVyJiYgcHJvbWlz
ZSkKK3sKKyAgICBtX2NvbnN1bWVyLnJlc29sdmUocHJvbWlzZSk7Cit9CisKIHZvaWQgRmV0Y2hS
ZXNwb25zZTo6Y29uc3VtZUJvZHlBc1N0cmVhbSgpCiB7CiAgICAgQVNTRVJUKG1fcmVhZGFibGVT
dHJlYW1Tb3VyY2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9G
ZXRjaFJlc3BvbnNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9u
c2UuaAppbmRleCA1NzNjMjcwOGQ4ZGM5NGRkYTgxMDViNGM5NjBjNTE1OTY4NTQyMDRmLi44NDg2
MjUxNDA1MDdkODBjODM2ZDcxOTU1YTFiM2I2ZmRiMjhiMjZkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1
ZGUgIkZldGNoQm9keU93bmVyLmgiCiAjaW5jbHVkZSAiRmV0Y2hIZWFkZXJzLmgiCiAjaW5jbHVk
ZSAiUmVzb3VyY2VSZXNwb25zZS5oIgorI2luY2x1ZGUgPHJ1bnRpbWUvVHlwZWRBcnJheXMuaD4K
IAogbmFtZXNwYWNlIEpTQyB7CiBjbGFzcyBBcnJheUJ1ZmZlcjsKQEAgLTU5LDYgKzYwLDEzIEBA
IHB1YmxpYzoKICAgICB1c2luZyBGZXRjaFByb21pc2UgPSBET01Qcm9taXNlPEZldGNoUmVzcG9u
c2U+OwogICAgIHN0YXRpYyB2b2lkIGZldGNoKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBGZXRj
aFJlcXVlc3QmLCBGZXRjaFByb21pc2UmJik7CiAKKyAgICB2b2lkIGNvbnN1bWUodW5zaWduZWQs
IERlZmVycmVkV3JhcHBlciYmKTsKKyNpZiBFTkFCTEUoU1RSRUFNU19BUEkpCisgICAgdm9pZCBz
dGFydENvbnN1bWluZ1N0cmVhbSh1bnNpZ25lZCk7CisgICAgdm9pZCBjb25zdW1lQ2h1bmsoUmVm
PEpTQzo6VWludDhBcnJheT4mJik7CisgICAgdm9pZCBmaW5pc2hDb25zdW1pbmdTdHJlYW0oRGVm
ZXJyZWRXcmFwcGVyJiYpOworI2VuZGlmCisKICAgICB2b2lkIHNldFN0YXR1cyhpbnQsIGNvbnN0
IFN0cmluZyYsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICB2b2lkIGluaXRpYWxpemVXaXRoKEpTQzo6
RXhlY1N0YXRlJiwgSlNDOjpKU1ZhbHVlKTsKIApAQCAtNzAsNyArNzgsNyBAQCBwdWJsaWM6CiAg
ICAgY29uc3QgU3RyaW5nJiBzdGF0dXNUZXh0KCkgY29uc3QgeyByZXR1cm4gbV9yZXNwb25zZS5o
dHRwU3RhdHVzVGV4dCgpOyB9CiAKICAgICBGZXRjaEhlYWRlcnMmIGhlYWRlcnMoKSB7IHJldHVy
biBtX2hlYWRlcnM7IH0KLSAgICBSZWZQdHI8RmV0Y2hSZXNwb25zZT4gY2xvbmUoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBSZWY8RmV0Y2hSZXNwb25zZT4g
Y2xvbmVGb3JKUygpOwogCiAjaWYgRU5BQkxFKFNUUkVBTVNfQVBJKQogICAgIFJlYWRhYmxlU3Ry
ZWFtU291cmNlKiBjcmVhdGVSZWFkYWJsZVN0cmVhbVNvdXJjZSgpOwpAQCAtMTA1LDcgKzExMyw2
IEBAIHByaXZhdGU6CiAgICAgICAgIHZvaWQgZGlkRmFpbCgpIGZpbmFsOwogICAgICAgICB2b2lk
IGRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgZmluYWw7CiAgICAg
ICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgY2hhciosIHNpemVfdCkgZmluYWw7Ci0gICAg
ICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZ0FzQXJyYXlCdWZmZXIoUmVmUHRyPEFycmF5QnVmZmVy
PiYmKSBmaW5hbDsKIAogICAgICAgICBGZXRjaFJlc3BvbnNlJiBtX3Jlc3BvbnNlOwogICAgICAg
ICBPcHRpb25hbDxGZXRjaFByb21pc2U+IG1fcHJvbWlzZTsKQEAgLTExNiw2ICsxMjMsOCBAQCBw
cml2YXRlOgogICAgIFJlZjxGZXRjaEhlYWRlcnM+IG1faGVhZGVyczsKICAgICBPcHRpb25hbDxC
b2R5TG9hZGVyPiBtX2JvZHlMb2FkZXI7CiAgICAgbXV0YWJsZSBTdHJpbmcgbV9yZXNwb25zZVVS
TDsKKworICAgIEZldGNoQm9keUNvbnN1bWVyIG1fY29uc3VtZXIgeyBGZXRjaEJvZHlDb25zdW1l
cjo6VHlwZTo6QXJyYXlCdWZmZXIgIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaWRs
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmlkbAppbmRleCAz
ZmIxNDg4MTQzNTRjZTdkMWY4NDAxODBiYzk5MGRmYjIzZDBhOTJiLi5iZTNjMmNlMDI5MzdmNjIz
OGY4NjVkOTIxOTIyNmI2ZmIxZDE3MDFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZmV0Y2gvRmV0Y2hSZXNwb25zZS5pZGwKQEAgLTUzLDExICs1MywyNSBAQCBpbnRlcmZhY2UgRmV0
Y2hSZXNwb25zZSB7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIEZldGNoSGVhZGVycyBoZWFkZXJz
OwogICAgIFtKU0J1aWx0aW5dIHJlYWRvbmx5IGF0dHJpYnV0ZSBSZWFkYWJsZVN0cmVhbT8gYm9k
eTsKIAotICAgIFtOZXdPYmplY3QsIENhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIFJh
aXNlc0V4Y2VwdGlvbl0gRmV0Y2hSZXNwb25zZSBjbG9uZSgpOworICAgIC8vIENvcHkgb2YgRmV0
Y2hCb2R5IElETCBhcyB3ZSB3YW50IHRvIGltcGxlbWVudCBzb21lIG9mIHRoZXNlIGFzIGJ1aWx0
LWlucy4KKyAgICBbSW1wbGVtZW50ZWRBcz1pc0Rpc3R1cmJlZF0gcmVhZG9ubHkgYXR0cmlidXRl
IGJvb2xlYW4gYm9keVVzZWQ7CisgICAgW0pTQnVpbHRpbl0gUHJvbWlzZSBhcnJheUJ1ZmZlcigp
OworICAgIFtKU0J1aWx0aW5dIFByb21pc2UgYmxvYigpOworICAgIFtKU0J1aWx0aW5dIFByb21p
c2UgZm9ybURhdGEoKTsKKyAgICBbSlNCdWlsdGluXSBQcm9taXNlIGpzb24oKTsKKyAgICBbSlNC
dWlsdGluXSBQcm9taXNlIHRleHQoKTsKIAorICAgIFtKU0J1aWx0aW5dIEZldGNoUmVzcG9uc2Ug
Y2xvbmUoKTsKKworICAgIFtQcml2YXRlSWRlbnRpZmllciwgTmV3T2JqZWN0XSBGZXRjaFJlc3Bv
bnNlIGNsb25lRm9ySlMoKTsKKworICAgIFtDb25kaXRpb25hbD1TVFJFQU1TX0FQSSwgUHJpdmF0
ZUlkZW50aWZpZXJdIHZvaWQgc3RhcnRDb25zdW1pbmdTdHJlYW0odW5zaWduZWQgc2hvcnQgdHlw
ZSk7CisgICAgW0NvbmRpdGlvbmFsPVNUUkVBTVNfQVBJLCBQcml2YXRlSWRlbnRpZmllcl0gdm9p
ZCBjb25zdW1lQ2h1bmsoVWludDhBcnJheSBjaHVuayk7CisgICAgW0NvbmRpdGlvbmFsPVNUUkVB
TVNfQVBJLCBQcml2YXRlSWRlbnRpZmllcl0gUHJvbWlzZSBmaW5pc2hDb25zdW1pbmdTdHJlYW0o
KTsKKworICAgIFtQcml2YXRlSWRlbnRpZmllcl0gUHJvbWlzZSBjb25zdW1lKHVuc2lnbmVkIHNo
b3J0IHR5cGUpOwogICAgIFtQcml2YXRlSWRlbnRpZmllciwgUmFpc2VzRXhjZXB0aW9uXSB2b2lk
IHNldFN0YXR1cyh1bnNpZ25lZCBzaG9ydCBzdGF0dXMsIERPTVN0cmluZyBzdGF0dXNUZXh0KTsK
ICAgICBbQ2FsbFdpdGg9U2NyaXB0U3RhdGUsIFByaXZhdGVJZGVudGlmaWVyXSB2b2lkIGluaXRp
YWxpemVXaXRoKGFueSBib2R5KTsKICAgICBbUHJpdmF0ZUlkZW50aWZpZXIsIE5ld09iamVjdF0g
UmVhZGFibGVTdHJlYW1Tb3VyY2UgY3JlYXRlUmVhZGFibGVTdHJlYW1Tb3VyY2UoKTsKICAgICBb
UHJpdmF0ZUlkZW50aWZpZXJdIGJvb2xlYW4gaXNEaXN0dXJiZWQoKTsKIH07Ci1GZXRjaFJlc3Bv
bnNlIGltcGxlbWVudHMgRmV0Y2hCb2R5OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmpzIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRj
aC9GZXRjaFJlc3BvbnNlLmpzCmluZGV4IGM0YWNjMDEwMTFmNGMxZWU2MzcwZGMzMzQxMzM5ZGI2
ODU4MTkwM2UuLmYyYjBhOTA2NDkyYjE2ZWFjYzA0MmMyYjAwZmUwNzg1ODVlZWMxMDAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5qcworKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuanMKQEAgLTQ4LDYg
KzQ4LDEyIEBAIGZ1bmN0aW9uIGluaXRpYWxpemVGZXRjaFJlc3BvbnNlKGJvZHksIGluaXQpCiAg
ICAgaWYgKGJvZHkgIT09IEB1bmRlZmluZWQgJiYgYm9keSAhPT0gbnVsbCkgewogICAgICAgICBp
ZiAoc3RhdHVzID09IDEwMSB8fCBzdGF0dXMgPT0gMjA0IHx8IHN0YXR1cyA9PSAyMDUgfHwgc3Rh
dHVzID09IDMwNCkKICAgICAgICAgICAgIHRocm93IG5ldyBAVHlwZUVycm9yKCJSZXNwb25zZSBj
YW5ub3QgaGF2ZSBhIGJvZHkgd2l0aCB0aGUgZ2l2ZW4gc3RhdHVzIik7CisKKyAgICAgICAgLy8g
RklYTUU6IFVzZSBAaXNSZWFkYWJsZVN0cmVhbSBvbmNlIGl0IGlzIG5vIGxvbmdlciBndWFyZGVk
IGJ5IFNUUkVBTVNfQVBJIGd1YXJkLgorICAgICAgICBsZXQgaXNCb2R5UmVhZGFibGVTdHJlYW0g
PSAoQGlzT2JqZWN0KGJvZHkpICYmICEhYm9keS5AdW5kZXJseWluZ1NvdXJjZSk7CisgICAgICAg
IGlmIChpc0JvZHlSZWFkYWJsZVN0cmVhbSkKKyAgICAgICAgICB0aGlzLkBib2R5ID0gYm9keTsK
KwogICAgICAgICB0aGlzLkBpbml0aWFsaXplV2l0aChib2R5KTsKICAgICB9CiAKQEAgLTY4LDMg
Kzc0LDc3IEBAIGZ1bmN0aW9uIGJvZHkoKQogICAgIH0KICAgICByZXR1cm4gdGhpcy5AYm9keTsK
IH0KKworZnVuY3Rpb24gY2xvbmUoKQoreworICAgIGlmICghdGhpcyBpbnN0YW5jZW9mIEBSZXNw
b25zZSkKKyAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3IoIkZ1bmN0aW9uIHNob3VsZCBiZSBj
YWxsZWQgb24gYSBSZXNwb25zZSIpOworCisgICAgaWYgKEBSZXNwb25zZS5wcm90b3R5cGUuQGlz
RGlzdHVyYmVkLkBjYWxsKHRoaXMpKQorICAgICAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcigiQ2Fu
bm90IGNsb25lIGEgZGlzdHVyYmVkIFJlc3BvbnNlIik7CisKKyAgICB2YXIgY2xvbmVkID0gQFJl
c3BvbnNlLnByb3RvdHlwZS5AY2xvbmVGb3JKUy5AY2FsbCh0aGlzKTsKKyAgICBpZiAodGhpcy5A
Ym9keSkgeworICAgICAgICB2YXIgdGVlZFJlYWRhYmxlU3RyZWFtcyA9IEB0ZWVSZWFkYWJsZVN0
cmVhbSh0aGlzLkBib2R5LCBmYWxzZSk7CisgICAgICAgIHRoaXMuQGJvZHkgPSB0ZWVkUmVhZGFi
bGVTdHJlYW1zWzBdOworICAgICAgICBjbG9uZWQuQGJvZHkgPSB0ZWVkUmVhZGFibGVTdHJlYW1z
WzFdOworICAgIH0KKyAgICByZXR1cm4gY2xvbmVkOworfQorCisvLyBjb25zdW1lIGFuZCBjb25z
dW1lU3RyZWFtIHNpbmdsZSBwYXJhbWV0ZXIgc2hvdWxkIGJlIGtlcHQgaW4gc3luYyB3aXRoIEZl
dGNoQm9keUNvbnN1bWVyOjpUeXBlLgorZnVuY3Rpb24gYXJyYXlCdWZmZXIoKQoreworICAgIGlm
ICghdGhpcyBpbnN0YW5jZW9mIEBSZXNwb25zZSkKKyAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJy
b3IoIkZ1bmN0aW9uIHNob3VsZCBiZSBjYWxsZWQgb24gYSBSZXNwb25zZSIpOworCisgICAgY29u
c3QgYXJyYXlCdWZmZXJDb25zdW1lclR5cGUgPSAxOworICAgIGlmICghdGhpcy5AYm9keSkKKyAg
ICAgICAgcmV0dXJuIEBSZXNwb25zZS5wcm90b3R5cGUuQGNvbnN1bWUuQGNhbGwodGhpcywgYXJy
YXlCdWZmZXJDb25zdW1lclR5cGUpOworCisgICAgcmV0dXJuIEBjb25zdW1lU3RyZWFtKHRoaXMs
IGFycmF5QnVmZmVyQ29uc3VtZXJUeXBlKTsKK30KKworZnVuY3Rpb24gYmxvYigpCit7CisgICAg
aWYgKCF0aGlzIGluc3RhbmNlb2YgQFJlc3BvbnNlKQorICAgICAgICB0aHJvdyBuZXcgQFR5cGVF
cnJvcigiRnVuY3Rpb24gc2hvdWxkIGJlIGNhbGxlZCBvbiBhIFJlc3BvbnNlIik7CisKKyAgICBj
b25zdCBibG9iQ29uc3VtZXJUeXBlID0gMjsKKyAgICBpZiAoIXRoaXMuQGJvZHkpCisgICAgICAg
IHJldHVybiBAUmVzcG9uc2UucHJvdG90eXBlLkBjb25zdW1lLkBjYWxsKHRoaXMsIGJsb2JDb25z
dW1lclR5cGUpOworCisgICAgcmV0dXJuIEBjb25zdW1lU3RyZWFtKHRoaXMsIGJsb2JDb25zdW1l
clR5cGUpOworfQorCitmdW5jdGlvbiBmb3JtRGF0YSgpCit7CisgICAgaWYgKCF0aGlzIGluc3Rh
bmNlb2YgQFJlc3BvbnNlKQorICAgICAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcigiRnVuY3Rpb24g
c2hvdWxkIGJlIGNhbGxlZCBvbiBhIFJlc3BvbnNlIik7CisKKyAgICByZXR1cm4gQFByb21pc2Uu
QHJlamVjdCgiTm90IGltcGxlbWVudGVkIik7Cit9CisKK2Z1bmN0aW9uIGpzb24oKQoreworICAg
IGlmICghdGhpcyBpbnN0YW5jZW9mIEBSZXNwb25zZSkKKyAgICAgICAgdGhyb3cgbmV3IEBUeXBl
RXJyb3IoIkZ1bmN0aW9uIHNob3VsZCBiZSBjYWxsZWQgb24gYSBSZXNwb25zZSIpOworCisgICAg
Y29uc3QganNvbkNvbnN1bWVyVHlwZSA9IDM7CisgICAgaWYgKCF0aGlzLkBib2R5KQorICAgICAg
ICByZXR1cm4gQFJlc3BvbnNlLnByb3RvdHlwZS5AY29uc3VtZS5AY2FsbCh0aGlzLCBqc29uQ29u
c3VtZXJUeXBlKTsKKworICAgIHJldHVybiBAY29uc3VtZVN0cmVhbSh0aGlzLCAzKTsKK30KKwor
ZnVuY3Rpb24gdGV4dCgpCit7CisgICAgaWYgKCF0aGlzIGluc3RhbmNlb2YgQFJlc3BvbnNlKQor
ICAgICAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcigiRnVuY3Rpb24gc2hvdWxkIGJlIGNhbGxlZCBv
biBhIFJlc3BvbnNlIik7CisKKyAgICBjb25zdCB0ZXh0Q29uc3VtZXJUeXBlID0gNDsKKyAgICBp
ZiAoIXRoaXMuQGJvZHkpCisgICAgICAgIHJldHVybiBAUmVzcG9uc2UucHJvdG90eXBlLkBjb25z
dW1lLkBjYWxsKHRoaXMsIHRleHRDb25zdW1lclR5cGUpOworCisgICAgcmV0dXJuIEBjb25zdW1l
U3RyZWFtKHRoaXMsIHRleHRDb25zdW1lclR5cGUpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDRmNWU4YmYzMDM3MWRlNjE0
NzE5NjhiMDliMjdhZWUzNDdlZTc2NDcuLjM0YzRiYmEzNGE4NTNlNjhhNGQ0MjlhZmQ5MDZjY2Iy
Mzc0NThlMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKQEAgLTE2MzEsNiArMTYzMSw3IEBACiAJCTQxQkY3MDBGMEZFODZGNjEwMDVF
OERFQyAvKiBQbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbC5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUJGNzAwRDBGRTg2RjYxMDA1RThERUMgLyog
UGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWwuY3BwICovOyB9OwogCQk0MUJGNzAxMDBGRTg2RjYx
MDA1RThERUMgLyogUGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWwuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxQkY3MDBFMEZFODZGNjEwMDVFOERFQyAv
KiBQbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbC5oICovOyB9OwogCQk0MUM3NjBCMTBFREUwM0Qz
MDBDMTY1NUYgLyogU2NyaXB0U3RhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQxQzc2MEIwMEVERTAzRDMwMEMxNjU1RiAvKiBTY3JpcHRTdGF0ZS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTQxQ0Y4
QkU3MUQ0NjIyNjcwMDcwN0RDOSAvKiBGZXRjaEJvZHlDb25zdW1lci5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUNGOEJFNDFENDYyMjIwMDA3MDdE
QzkgLyogRmV0Y2hCb2R5Q29uc3VtZXIuY3BwICovOyB9OwogCQk0MUQwMTVDQTBGNEI1QzcxMDA0
QTY2MkYgLyogQ29udGVudFR5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDQxRDAxNUM4MEY0QjVDNzEwMDRBNjYyRiAvKiBDb250ZW50VHlwZS5oICov
OyB9OwogCQk0MUQwMTVDQjBGNEI1QzcxMDA0QTY2MkYgLyogQ29udGVudFR5cGUuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFEMDE1QzkwRjRCNUM3
MTAwNEE2NjJGIC8qIENvbnRlbnRUeXBlLmNwcCAqLzsgfTsKIAkJNDFFMUIxRDAwRkY1OTg2OTAw
NTc2QjNCIC8qIEFic3RyYWN0V29ya2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQxRTFCMUNBMEZGNTk4NjkwMDU3NkIzQiAvKiBBYnN0cmFjdFdv
cmtlci5jcHAgKi87IH07CkBAIC02OTA2LDggKzY5MDcsOCBAQAogCQlGOThGRkY0NTExQTI2NzYy
MDBGNTQ4RTggLyogQ1NTT01VdGlscy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRjk4RkZGNDMxMUEyNjc2MjAwRjU0OEU4IC8qIENTU09NVXRpbHMuaCAq
LzsgfTsKIAkJRjlGMEVEN0EwREI1MENBMjAwRDE2REI5IC8qIFhNTEh0dHBSZXF1ZXN0UHJvZ3Jl
c3NFdmVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RjlGMEVENzcwREI1MENBMjAwRDE2REI5IC8qIFhNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudC5o
ICovOyB9OwogCQlGQTY1NEE2QjExMDhBQkVEMDAyNjE1RTAgLyogTWF0aE1MVGV4dEVsZW1lbnQu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkE2NTRB
NjkxMTA4QUJFRDAwMjYxNUUwIC8qIE1hdGhNTFRleHRFbGVtZW50LmNwcCAqLzsgfTsKLQkJRkE2
NTRBNkMxMTA4QUJFRDAwMjYxNUUwIC8qIE1hdGhNTFRleHRFbGVtZW50LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGQTY1NEE2QTExMDhBQkVEMDAyNjE1
RTAgLyogTWF0aE1MVGV4dEVsZW1lbnQuaCAqLzsgfTsKIAkJRkE2NTRBNkIxMTA4QUJFRDAwMjYy
NkYxIC8qIE1hdGhNTFVuZGVyT3ZlckVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkE2NTRBNjkxMTA4QUJFRDAwMjYyNkYxIC8qIE1hdGhN
TFVuZGVyT3ZlckVsZW1lbnQuY3BwICovOyB9OworCQlGQTY1NEE2QzExMDhBQkVEMDAyNjE1RTAg
LyogTWF0aE1MVGV4dEVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEZBNjU0QTZBMTEwOEFCRUQwMDI2MTVFMCAvKiBNYXRoTUxUZXh0RWxlbWVu
dC5oICovOyB9OwogCQlGQTY1NEE2QzExMDhBQkVEMDAyNjI2RjEgLyogTWF0aE1MVW5kZXJPdmVy
RWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RkE2NTRBNkExMTA4QUJFRDAwMjYyNkYxIC8qIE1hdGhNTFVuZGVyT3ZlckVsZW1lbnQuaCAqLzsg
fTsKIAkJRkFCRTcyRjQxMDU5QzFFQjAwRDk5OUREIC8qIE1hdGhNTEVsZW1lbnQuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkFCRTcyRUQxMDU5QzFF
QjAwRDk5OUREIC8qIE1hdGhNTEVsZW1lbnQuY3BwICovOyB9OwogCQlGQUJFNzJGNTEwNTlDMUVC
MDBEOTk5REQgLyogTWF0aE1MRWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRkFCRTcyRUUxMDU5QzFFQjAwRDk5OUREIC8qIE1hdGhNTEVsZW1l
bnQuaCAqLzsgfTsKQEAgLTkyMTUsNiArOTIxNiw5IEBACiAJCTQxQkY3MDBEMEZFODZGNjEwMDVF
OERFQyAvKiBQbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IG5hbWUgPSBQbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbC5jcHA7IHBhdGgg
PSBkZWZhdWx0L1BsYXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNDFCRjcwMEUwRkU4NkY2MTAwNUU4REVDIC8qIFBsYXRmb3JtTWVzc2Fn
ZVBvcnRDaGFubmVsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFBsYXRmb3Jt
TWVzc2FnZVBvcnRDaGFubmVsLmg7IHBhdGggPSBkZWZhdWx0L1BsYXRmb3JtTWVzc2FnZVBvcnRD
aGFubmVsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxQzc2MEIwMEVERTAzRDMw
MEMxNjU1RiAvKiBTY3JpcHRTdGF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBTY3JpcHRTdGF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MUNGOEJFNDFE
NDYyMjIwMDA3MDdEQzkgLyogRmV0Y2hCb2R5Q29uc3VtZXIuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gRmV0Y2hCb2R5Q29uc3VtZXIuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk0MUNGOEJFNTFENDYyMjIwMDA3MDdEQzkgLyogRmV0Y2hCb2R5Q29u
c3VtZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRmV0Y2hCb2R5Q29uc3Vt
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDFDRjhCRTYxRDQ2MjIyQzAwNzA3
REM5IC8qIEZldGNoSW50ZXJuYWxzLmpzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5qYXZhc2NyaXB0
OyBwYXRoID0gRmV0Y2hJbnRlcm5hbHMuanM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTQxRDAxNUM4MEY0QjVDNzEwMDRBNjYyRiAvKiBDb250ZW50VHlwZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBDb250ZW50VHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk0MUQwMTVDOTBGNEI1QzcxMDA0QTY2MkYgLyogQ29udGVudFR5cGUuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ29udGVudFR5cGUuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk0MUUxQjFDQTBGRjU5ODY5MDA1NzZCM0IgLyogQWJzdHJh
Y3RXb3JrZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQWJzdHJh
Y3RXb3JrZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTM0MDgsOCArMTM0
MTIsOCBAQAogCQlCNTdDQjUyQzE4MkEzRUVEMDA3OUE2NDcgLyogSW5saW5lRWxlbWVudEJveC5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbmxpbmVFbGVtZW50Qm94
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjU5NUZGNDYxODI0Q0VFMzAwRkY1
MUNEIC8qIFJlbmRlckl0ZXJhdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFJlbmRlckl0ZXJhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUI1OUNBNTlB
RjE3MEQ4RkFBNUI4QzlBRCAvKiBNYXRoTUxTY3JpcHRzRWxlbWVudC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNYXRoTUxTY3JpcHRzRWxlbWVudC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUI1OUNBODQ5RDQxRTZGNjVEODExOTdBQiAvKiBNYXRo
TUxTY3JpcHRzRWxlbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNYXRo
TUxTY3JpcHRzRWxlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCNTlDQTU5
QUYxNzBEOEZBQTVCOENBQkUgLyogTWF0aE1MUGFkZGVkRWxlbWVudC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNYXRoTUxQYWRkZWRFbGVtZW50LmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQjU5Q0E4NDlENDFFNkY2NUQ4MTE5N0FCIC8qIE1hdGhN
TFNjcmlwdHNFbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1hdGhN
TFNjcmlwdHNFbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUI1OUNBODQ5
RDQxRTZGNjVEODExOThCQyAvKiBNYXRoTUxQYWRkZWRFbGVtZW50LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IE1hdGhNTFBhZGRlZEVsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQjU5REQ2OTcxMTkwMjlFNTAwN0U5Njg0IC8qIEpTRGF0YWJhc2VDYWxs
YmFjay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0RhdGFiYXNlQ2FsbGJh
Y2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjU5REQ2OTgxMTkwMjlFNTAwN0U5
Njg0IC8qIEpTRGF0YWJhc2VDYWxsYmFjay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBKU0RhdGFiYXNlQ2FsbGJhY2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtMTUwODYsOCArMTUwOTAsOCBAQAogCQlGQTY1NEE2MzExMDhBQkI3MDAyNjE1RTAg
LyogbWF0aG1sLmNzcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuY3NzOyBwYXRoID0gbWF0aG1sLmNzczsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkE2NTRBNjcxMTA4QUJFMjAwMjYxNUUwIC8qIG1h
dGhhdHRycy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBtYXRoYXR0cnMuaW47IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZBNjU0QTY5MTEwOEFCRUQwMDI2MTVFMCAvKiBNYXRoTUxU
ZXh0RWxlbWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNYXRo
TUxUZXh0RWxlbWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUZBNjU0QTZB
MTEwOEFCRUQwMDI2MTVFMCAvKiBNYXRoTUxUZXh0RWxlbWVudC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBNYXRoTUxUZXh0RWxlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlGQTY1NEE2OTExMDhBQkVEMDAyNjI2RjEgLyogTWF0aE1MVW5kZXJPdmVyRWxl
bWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNYXRoTUxVbmRl
ck92ZXJFbGVtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkE2NTRBNkEx
MTA4QUJFRDAwMjYxNUUwIC8qIE1hdGhNTFRleHRFbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IE1hdGhNTFRleHRFbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUZBNjU0QTZBMTEwOEFCRUQwMDI2MjZGMSAvKiBNYXRoTUxVbmRlck92ZXJFbGVt
ZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1hdGhNTFVuZGVyT3ZlckVs
ZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkE2RTQ2NkZDRDA0MThBOTk2
NkE1QjYwIC8qIEROU1Jlc29sdmVRdWV1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBETlNSZXNvbHZlUXVldWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkFC
RTcyRUQxMDU5QzFFQjAwRDk5OUREIC8qIE1hdGhNTEVsZW1lbnQuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWF0aE1MRWxlbWVudC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC0xNzA5MiwxMiArMTcwOTYsMTUgQEAKIAkJCQk0MUY1NEY3RDFDNTBD
NEY2MDAzMzg0ODggLyogRmV0Y2hCb2R5LmNwcCAqLywKIAkJCQk0MUY1NEY3RTFDNTBDNEY2MDAz
Mzg0ODggLyogRmV0Y2hCb2R5LmggKi8sCiAJCQkJNDFGNTRGN0YxQzUwQzRGNjAwMzM4NDg4IC8q
IEZldGNoQm9keS5pZGwgKi8sCisJCQkJNDFDRjhCRTQxRDQ2MjIyMDAwNzA3REM5IC8qIEZldGNo
Qm9keUNvbnN1bWVyLmNwcCAqLywKKwkJCQk0MUNGOEJFNTFENDYyMjIwMDA3MDdEQzkgLyogRmV0
Y2hCb2R5Q29uc3VtZXIuaCAqLywKIAkJCQk0MTQ3RTJCMzFDODk5MTI2MDBBN0U3MTUgLyogRmV0
Y2hCb2R5T3duZXIuY3BwICovLAogCQkJCTQxNDdFMkIyMUM4ODMzN0YwMEE3RTcxNSAvKiBGZXRj
aEJvZHlPd25lci5oICovLAogCQkJCTQxRjU0RjgyMUM1MEM0RjYwMDMzODQ4OCAvKiBGZXRjaEhl
YWRlcnMuY3BwICovLAogCQkJCTQxRjU0RjgzMUM1MEM0RjYwMDMzODQ4OCAvKiBGZXRjaEhlYWRl
cnMuaCAqLywKIAkJCQk0MUY1NEY4NDFDNTBDNEY2MDAzMzg0ODggLyogRmV0Y2hIZWFkZXJzLmlk
bCAqLywKIAkJCQk0MUY1NEY4NTFDNTBDNEY2MDAzMzg0ODggLyogRmV0Y2hIZWFkZXJzLmpzICov
LAorCQkJCTQxQ0Y4QkU2MUQ0NjIyMkMwMDcwN0RDOSAvKiBGZXRjaEludGVybmFscy5qcyAqLywK
IAkJCQk0MTQ3RTJCNDFDODk5MTI2MDBBN0U3MTUgLyogRmV0Y2hMb2FkZXIuY3BwICovLAogCQkJ
CTQxNDdFMkI1MUM4OTkxMjYwMEE3RTcxNSAvKiBGZXRjaExvYWRlci5oICovLAogCQkJCTQxNDdF
MkI2MUM4OTkxMjYwMEE3RTcxNSAvKiBGZXRjaExvYWRlckNsaWVudC5oICovLApAQCAtMzA3NTks
NiArMzA3NjYsNyBAQAogCQkJCUJDMDZFREUzMEJGRDZEMEQwMDg1NkU5RCAvKiBKU0hUTUxUYWJs
ZUNlbGxFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDMDZFRDlEMEJGRDY2MDYwMDg1
NkU5RCAvKiBKU0hUTUxUYWJsZUNvbEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkMw
NkVFMDQwQkZENzFBQTAwODU2RTlEIC8qIEpTSFRNTFRhYmxlRWxlbWVudC5jcHAgaW4gU291cmNl
cyAqLywKKwkJCQk0MUNGOEJFNzFENDYyMjY3MDA3MDdEQzkgLyogRmV0Y2hCb2R5Q29uc3VtZXIu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkMwNkVEOUYwQkZENjYwNjAwODU2RTlEIC8qIEpTSFRN
TFRhYmxlUm93RWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzA2RUQwNjBCRkQ1QkFF
MDA4NTZFOUQgLyogSlNIVE1MVGFibGVTZWN0aW9uRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlENjQ4OUQyNTE2NkZGQ0YxMDA3QzAzMUIgLyogSlNIVE1MVGVtcGxhdGVFbGVtZW50LmNw
cCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNET01Qcm9taXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVByb21pc2Uu
aAppbmRleCAxMjc1YTMyZTY3OGRkZDhiZWNhMjU0YmQxZDZkNGQxOWYwMjRjMjg3Li40ZTIyZTMz
NGZmMzc2YWQzODQ5YmYwZDEwOTk5Yjk3YmQ5ZDliYzgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTVByb21pc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RPTVByb21pc2UuaApAQCAtMTE4LDYgKzExOCw4IEBAIHB1YmxpYzoKICAgICB0
ZW1wbGF0ZTxjbGFzcyBSZWplY3RSZXN1bHRUeXBlPiB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxQ
cm9taXNlUmVzdWx0SW5zcGVjdG9yPFJlamVjdFJlc3VsdFR5cGU+OjpwYXNzQnlDb25zdFJlZiwg
dm9pZD46OnR5cGUKICAgICByZWplY3QoY29uc3QgUmVqZWN0UmVzdWx0VHlwZSYgcmVzdWx0KSB7
IHJlamVjdFdpdGhWYWx1ZShyZXN1bHQpOyB9CiAKKyAgICB0ZW1wbGF0ZTxjbGFzcyBSZXNvbHZl
UmVzdWx0VHlwZT4gdm9pZCByZXNvbHZlV2l0aE5ld2x5Q3JlYXRlZChSZWY8UmVzb2x2ZVJlc3Vs
dFR5cGU+JiYpOworCiAgICAgdm9pZCByZWplY3QoRXhjZXB0aW9uQ29kZSwgY29uc3QgU3RyaW5n
JiA9IHsgfSk7CiAKICAgICBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KCkgY29uc3Q7
CkBAIC0xODEsNiArMTgzLDE2IEBAIGlubGluZSB2b2lkIERlZmVycmVkV3JhcHBlcjo6cmVzb2x2
ZVdpdGhWYWx1ZShSZXNvbHZlUmVzdWx0VHlwZSYmIHJlc3VsdCkKICAgICByZXNvbHZlKCpleGVj
LCB0b0pTKGV4ZWMsIG1fZ2xvYmFsT2JqZWN0LmdldCgpLCBzdGQ6OmZvcndhcmQ8UmVzb2x2ZVJl
c3VsdFR5cGU+KHJlc3VsdCkpKTsKIH0KIAordGVtcGxhdGU8Y2xhc3MgUmVzb2x2ZVJlc3VsdFR5
cGU+CitpbmxpbmUgdm9pZCBEZWZlcnJlZFdyYXBwZXI6OnJlc29sdmVXaXRoTmV3bHlDcmVhdGVk
KFJlZjxSZXNvbHZlUmVzdWx0VHlwZT4mJiByZXN1bHQpCit7CisgICAgQVNTRVJUKG1fZGVmZXJy
ZWQpOworICAgIEFTU0VSVChtX2dsb2JhbE9iamVjdCk7CisgICAgSlNDOjpFeGVjU3RhdGUqIGV4
ZWMgPSBtX2dsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpOworICAgIEpTQzo6SlNMb2NrSG9sZGVy
IGxvY2tlcihleGVjKTsKKyAgICByZXNvbHZlKCpleGVjLCB0b0pTTmV3bHlDcmVhdGVkKGV4ZWMs
IG1fZ2xvYmFsT2JqZWN0LmdldCgpLCBXVEZNb3ZlKHJlc3VsdCkpKTsKK30KKwogdGVtcGxhdGU8
Y2xhc3MgUmVqZWN0UmVzdWx0VHlwZT4KIGlubGluZSB2b2lkIERlZmVycmVkV3JhcHBlcjo6cmVq
ZWN0V2l0aFZhbHVlKFJlamVjdFJlc3VsdFR5cGUmJiByZXN1bHQpCiB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XZWJDb3JlQnVpbHRpbk5hbWVzLmggYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9XZWJDb3JlQnVpbHRpbk5hbWVzLmgKaW5kZXggYTVhZGQ5NGIy
MDlhMjY5M2JlYzM1MWM5OGZmYzVjZTI4YTc2MWJlMi4uNjgzOTAyYTZiZWQ4ODRmMTNhMmExYjc5
MzM1ZWQyMTZjNmJlNDhmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
V2ViQ29yZUJ1aWx0aW5OYW1lcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dl
YkNvcmVCdWlsdGluTmFtZXMuaApAQCAtMzUsMTQgKzM1LDE4IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICAgICBtYWNybyhhZGRUcmFjaykgXAogICAgIG1hY3JvKGFwcGVuZEZyb21KUykgXAogICAg
IG1hY3JvKGJvZHkpIFwKKyAgICBtYWNybyhjbG9uZUZvckpTKSBcCiAgICAgbWFjcm8oY2xvc2VS
ZXF1ZXN0ZWQpIFwKICAgICBtYWNybyhjbG9zZWRQcm9taXNlQ2FwYWJpbGl0eSkgXAorICAgIG1h
Y3JvKGNvbnN1bWUpIFwKKyAgICBtYWNybyhjb25zdW1lQ2h1bmspIFwKICAgICBtYWNybyhjb250
cm9sbGVkUmVhZGFibGVTdHJlYW0pIFwKICAgICBtYWNybyhjb250cm9sbGVyKSBcCiAgICAgbWFj
cm8oY3JlYXRlUmVhZGFibGVTdHJlYW1Tb3VyY2UpIFwKICAgICBtYWNybyhkaXN0dXJiZWQpIFwK
ICAgICBtYWNybyhmZXRjaFJlcXVlc3QpIFwKICAgICBtYWNybyhmaWxsRnJvbUpTKSBcCisgICAg
bWFjcm8oZmluaXNoQ29uc3VtaW5nU3RyZWFtKSBcCiAgICAgbWFjcm8oZmlyc3RSZWFkQ2FsbGJh
Y2spIFwKICAgICBtYWNybyhnZXRVc2VyTWVkaWFGcm9tSlMpIFwKICAgICBtYWNybyhnZXRSZW1v
dGVTdHJlYW1zKSBcCkBAIC03Miw2ICs3Niw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBt
YWNybyhzZXRCb2R5KSBcCiAgICAgbWFjcm8oc2V0U3RhdHVzKSBcCiAgICAgbWFjcm8oc3RhdGUp
IFwKKyAgICBtYWNybyhzdGFydENvbnN1bWluZ1N0cmVhbSkgXAogICAgIG1hY3JvKHN0YXJ0ZWQp
IFwKICAgICBtYWNybyhzdGFydGVkUHJvbWlzZSkgXAogICAgIG1hY3JvKHN0b3JlZEVycm9yKSBc
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwppbmRleCA0NzdiMGM2MmM1ZWRlNjZlYjk0MWU1
NjY5NDhmZjlhNDRmNjg4YmZmLi41NjY2NzYzZDE5NWYxYWM5NmQ1NjEwYWE2NDEyMWRhMzQyNmZi
MTcwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAx
Ni0wNy0yNSAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAgICAgW0Zl
dGNoIEFQSV0gUmVzcG9uc2UgY29uc3RydWN0b3Igc2hvdWxkIGJlIGFibGUgdG8gdGFrZSBhIFJl
YWRhYmxlU3RyZWFtIGFzIGJvZHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE1OTgwNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9yZXNwb25zZS9yZXNw
b25zZS1jb25zdW1lLWVtcHR5LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0t
dGVzdHMvZmV0Y2gvYXBpL3Jlc3BvbnNlL3Jlc3BvbnNlLWNvbnN1bWUtZXhwZWN0ZWQudHh0Ogor
ICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkvcmVzcG9uc2UvcmVzcG9uc2Ut
Y29uc3VtZS5odG1sOiBVcGRhdGluZyB0ZXN0IHRvIGV4ZXJjaWNlIFJlc3BvbnNlIGNvb25zdHJ1
Y3RvciB3aXRoIGEgUmVhZGFibGVTdHJlYW0uCisKIDIwMTYtMDctMjQgIFlvdWVubiBGYWJsZXQg
IDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIFtGZXRjaCBBUEldIFJlcXVlc3Qgc2hvdWxk
IGJlIGNyZWF0ZWQgd2l0aCBhbnkgSGVhZGVyc0luaXQgZGF0YQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkvcmVzcG9uc2Uv
cmVzcG9uc2UtY29uc3VtZS1lbXB0eS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9yZXNwb25zZS9yZXNwb25zZS1jb25z
dW1lLWVtcHR5LWV4cGVjdGVkLnR4dAppbmRleCA2NzA0ZGUxYTQ0MmU1ZjFmZDcyNWIwY2VlMjJj
N2YwNzM3YTVlNTg2Li5lOTY3OTUxOGJkOWMwMzA5NGQ4ZmZmY2Y5ZmNmODJkZDE3N2JjN2NmIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Zl
dGNoL2FwaS9yZXNwb25zZS9yZXNwb25zZS1jb25zdW1lLWVtcHR5LWV4cGVjdGVkLnR4dAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9y
ZXNwb25zZS9yZXNwb25zZS1jb25zdW1lLWVtcHR5LWV4cGVjdGVkLnR4dApAQCAtMyw3ICszLDcg
QEAgUEFTUyBDb25zdW1lIHJlc3BvbnNlJ3MgYm9keSBhcyB0ZXh0CiBQQVNTIENvbnN1bWUgcmVz
cG9uc2UncyBib2R5IGFzIGJsb2IgCiBQQVNTIENvbnN1bWUgcmVzcG9uc2UncyBib2R5IGFzIGFy
cmF5QnVmZmVyIAogUEFTUyBDb25zdW1lIHJlc3BvbnNlJ3MgYm9keSBhcyBqc29uIAotRkFJTCBD
b25zdW1lIHJlc3BvbnNlJ3MgYm9keSBhcyBmb3JtRGF0YSBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxl
ZCByZWplY3Rpb24gd2l0aCB2YWx1ZTogdW5kZWZpbmVkCitGQUlMIENvbnN1bWUgcmVzcG9uc2Un
cyBib2R5IGFzIGZvcm1EYXRhIHByb21pc2VfdGVzdDogVW5oYW5kbGVkIHJlamVjdGlvbiB3aXRo
IHZhbHVlOiAiTm90IGltcGxlbWVudGVkIgogUEFTUyBDb25zdW1lIGVtcHR5IGJsb2IgcmVzcG9u
c2UgYm9keSBhcyBhcnJheUJ1ZmZlciAKIFBBU1MgQ29uc3VtZSBlbXB0eSB0ZXh0IHJlc3BvbnNl
IGJvZHkgYXMgYXJyYXlCdWZmZXIgCiBQQVNTIENvbnN1bWUgZW1wdHkgYmxvYiByZXNwb25zZSBi
b2R5IGFzIHRleHQgCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9yZXNwb25zZS9yZXNwb25zZS1jb25zdW1lLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZmV0Y2gv
YXBpL3Jlc3BvbnNlL3Jlc3BvbnNlLWNvbnN1bWUtZXhwZWN0ZWQudHh0CmluZGV4IGQwODhhNjlh
OGNlNDJhMmZhMGExYzkyMDk5ZDg2YTZiZmE1N2U2ZDguLjQxNmEzOTJjZTZhZDZjYWI2OGUyNzFk
ZDA0YTE5YTJlZTUwMjAzZWUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvZmV0Y2gvYXBpL3Jlc3BvbnNlL3Jlc3BvbnNlLWNvbnN1bWUtZXhw
ZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvZmV0Y2gvYXBpL3Jlc3BvbnNlL3Jlc3BvbnNlLWNvbnN1bWUtZXhwZWN0ZWQudHh0CkBAIC0z
LDkgKzMsMTMgQEAgUEFTUyBDb25zdW1lIHJlc3BvbnNlJ3MgYm9keSBhcyB0ZXh0CiBQQVNTIENv
bnN1bWUgcmVzcG9uc2UncyBib2R5IGFzIGJsb2IgCiBQQVNTIENvbnN1bWUgcmVzcG9uc2UncyBi
b2R5IGFzIGFycmF5QnVmZmVyIAogUEFTUyBDb25zdW1lIHJlc3BvbnNlJ3MgYm9keSBhcyBqc29u
IAotRkFJTCBDb25zdW1lIHJlc3BvbnNlJ3MgYm9keSBhcyBmb3JtRGF0YSBwcm9taXNlX3Rlc3Q6
IFVuaGFuZGxlZCByZWplY3Rpb24gd2l0aCB2YWx1ZTogdW5kZWZpbmVkCitGQUlMIENvbnN1bWUg
cmVzcG9uc2UncyBib2R5IGFzIGZvcm1EYXRhIHByb21pc2VfdGVzdDogVW5oYW5kbGVkIHJlamVj
dGlvbiB3aXRoIHZhbHVlOiAiTm90IGltcGxlbWVudGVkIgogUEFTUyBDb25zdW1lIGJsb2IgcmVz
cG9uc2UncyBib2R5IGFzIGJsb2IgCiBQQVNTIENvbnN1bWUgYmxvYiByZXNwb25zZSdzIGJvZHkg
YXMgdGV4dCAKIFBBU1MgQ29uc3VtZSBibG9iIHJlc3BvbnNlJ3MgYm9keSBhcyBqc29uIAogUEFT
UyBDb25zdW1lIGJsb2IgcmVzcG9uc2UncyBib2R5IGFzIGFycmF5QnVmZmVyIAorUEFTUyBDb25z
dW1lIHN0cmVhbSByZXNwb25zZSdzIGJvZHkgYXMgYmxvYiAKK1BBU1MgQ29uc3VtZSBzdHJlYW0g
cmVzcG9uc2UncyBib2R5IGFzIHRleHQgCitQQVNTIENvbnN1bWUgc3RyZWFtIHJlc3BvbnNlJ3Mg
Ym9keSBhcyBqc29uIAorUEFTUyBDb25zdW1lIHN0cmVhbSByZXNwb25zZSdzIGJvZHkgYXMgYXJy
YXlCdWZmZXIgCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvZmV0Y2gvYXBpL3Jlc3BvbnNlL3Jlc3BvbnNlLWNvbnN1bWUuaHRtbCBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZmV0Y2gvYXBpL3Jlc3Bv
bnNlL3Jlc3BvbnNlLWNvbnN1bWUuaHRtbAppbmRleCAwMjgxNGZmNWJlOTI2YmU3MzgyNjRiYTkx
MDcwYmQyMzY5ZDU0NjkxLi45OTQxMGNkNDQ4YWI4YmQ2NDc5MDE4NzAwNGVmZDM0YjFjOTlhYjQ5
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2ZldGNoL2FwaS9yZXNwb25zZS9yZXNwb25zZS1jb25zdW1lLmh0bWwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkvcmVzcG9uc2UvcmVz
cG9uc2UtY29uc3VtZS5odG1sCkBAIC05Miw2ICs5MiwyNSBAQAogICAgIGNoZWNrQmxvYlJlc3Bv
bnNlQm9keShibG9iLCB0ZXh0RGF0YSwgImpzb24iLCBjaGVja0JvZHlKU09OKTsKICAgICBjaGVj
a0Jsb2JSZXNwb25zZUJvZHkoYmxvYiwgdGV4dERhdGEsICJhcnJheUJ1ZmZlciIsIGNoZWNrQm9k
eUFycmF5QnVmZmVyKTsKIAorICAgIGZ1bmN0aW9uIGNoZWNrUmVhZGFibGVTdHJlYW1SZXNwb25z
ZUJvZHkoc3RyZWFtRGF0YSwgYm9keVR5cGUsIGNoZWNrRnVuY3Rpb24pIHsKKyAgICAgIHByb21p
c2VfdGVzdChmdW5jdGlvbih0ZXN0KSB7CisgICAgICAgIHZhciBzdHJlYW0gPSBuZXcgUmVhZGFi
bGVTdHJlYW0oeworICAgICAgICAgIHN0YXJ0OiBmdW5jdGlvbihjb250cm9sbGVyKSB7CisgICAg
ICAgICAgICBjb250cm9sbGVyLmVucXVldWUoKHN0cmluZ1RvQXJyYXkoc3RyZWFtRGF0YSkpKTsK
KyAgICAgICAgICAgIGNvbnRyb2xsZXIuY2xvc2UoKTsKKyAgICAgICAgICB9CisgICAgICAgIH0p
OworICAgICAgICB2YXIgcmVzcG9uc2UgPSBuZXcgUmVzcG9uc2Uoc3RyZWFtKTsKKyAgICAgICAg
YXNzZXJ0X2ZhbHNlKHJlc3BvbnNlLmJvZHlVc2VkLCAiYm9keVVzZWQgaXMgZmFsc2UgYXQgaW5p
dCIpOworICAgICAgICByZXR1cm4gY2hlY2tGdW5jdGlvbihyZXNwb25zZSwgc3RyZWFtRGF0YSk7
CisgICAgICB9LCAiQ29uc3VtZSBzdHJlYW0gcmVzcG9uc2UncyBib2R5IGFzICIgKyBib2R5VHlw
ZSk7CisgICAgfQorCisgICAgY2hlY2tSZWFkYWJsZVN0cmVhbVJlc3BvbnNlQm9keSh0ZXh0RGF0
YSwgImJsb2IiLCBjaGVja0JvZHlCbG9iKTsKKyAgICBjaGVja1JlYWRhYmxlU3RyZWFtUmVzcG9u
c2VCb2R5KHRleHREYXRhLCAidGV4dCIsIGNoZWNrQm9keVRleHQpOworICAgIGNoZWNrUmVhZGFi
bGVTdHJlYW1SZXNwb25zZUJvZHkodGV4dERhdGEsICJqc29uIiwgY2hlY2tCb2R5SlNPTik7Cisg
ICAgY2hlY2tSZWFkYWJsZVN0cmVhbVJlc3BvbnNlQm9keSh0ZXh0RGF0YSwgImFycmF5QnVmZmVy
IiwgY2hlY2tCb2R5QXJyYXlCdWZmZXIpOworCiAgICAgPC9zY3JpcHQ+CiAgIDwvYm9keT4KIDwv
aHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>284592</attachid>
            <date>2016-07-26 08:34:36 -0700</date>
            <delta_ts>2016-07-26 10:39:01 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-159804-20160726173326.patch</filename>
            <type>text/plain</type>
            <size>60018</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAzNzE4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWYzMTY3Yjc5NDU3ZmU2
NzVmMWI3NWMzYmE3MzFmYjVjZjc2NzQ4My4uZWI0ODhmYjU5OWQ2YjI4MGQ5OWU0YmZhOWFlYzE2
YTQzOTkwOWRkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyNyBAQAorMjAxNi0wNy0yNiAgWW91
ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAgICAgW0ZldGNoIEFQSV0gUmVz
cG9uc2UgY29uc3RydWN0b3Igc2hvdWxkIGJlIGFibGUgdG8gdGFrZSBhIFJlYWRhYmxlU3RyZWFt
IGFzIGJvZHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE1OTgwNAorCisgICAgICAgIFJldmlld2VkIGJ5IEFsZXggQ2hyaXN0ZW5zZW4uCisKKyAgICAg
ICAgQ292ZXJlZCBieSBleGlzdGluZyBhbmQgdXBkYXRlZCB0ZXN0cy4KKworICAgICAgICBJbnRy
b2R1Y2VkIEZldGNoQm9keUNvbnN1bWVyIHRvIGVuY2Fwc3VsYXRlIHRoZSBjb2RlIHJlc3BvbnNp
YmxlIHRvIGFkYXB0IEZldGNoQm9keSBpbnRlcm5hbCBkYXRhIHRvIHRoZSByZXF1ZXN0cyBtYWRl
IGJ5IHVzZXIgc2NyaXB0cy4KKyAgICAgICAgVGhpcyByZWZhY3RvcmluZyBlYXNlcyB0aGUgaGFu
ZGxpbmcgb2YgaW50ZXJuYWwgZGF0YSBjb21pbmcgZnJvbSBSZWFkYWJsZVN0cmVhbS4KKworICAg
ICAgICBGZXRjaExvYWRlciBpcyBub3cgZGVsZWdhdGluZyBjb252ZXJzaW9uIGZyb20gdGhlIGRh
dGEgdG8gaXRzIG1fY29uc3VtZXIgZmllbGQuCisgICAgICAgIElmIG1fY29uc3VtZXIgaXMgbnVs
bCwgRmV0Y2hMb2FkZXIgY2FsbHMgRmV0Y2hMb2FkZXJDbGllbnQ6OmRpZFJlY2VpdmVEYXRhIChz
dHJlYW1pbmcgcmVjZXB0aW9uIG1vZGUpLgorICAgICAgICBDbGllbnRzIG9mIEZldGNoTG9hZGVy
IG5lZWRzIHRvIHBhc3MgYSBGZXRjaEJvZHlDb25zdW1lciB0byB0aGUgRmV0Y2hMb2FkZXIgdG8g
ZG8gdGhlIGRhdGEgYWRhcHRhdGlvbiBhdCBsb2FkZXIgY3JlYXRpb24gdGltZS4KKworICAgICAg
ICBBZGRlZCBzdXBwb3J0IGZvciBib2R5IGRhdGEgcGFzc2VkIGFzIGEgUmVhZGFibGVTdHJlYW0g
dG8gUmVzcG9uc2UuCisgICAgICAgIFRoaXMgcmVxdWlyZXMgdG8gc2V0IEBib2R5IGludGVybmFs
IHNsb3Qgb2YgdGhlIFJlc3BvbnNlIG9iamVjdCBpbiB0aGUgY29uc3RydWN0b3IgaW5pdGlhbGl6
YXRpb24gSlMgYnVpbHQtaW4uCisKKyAgICAgICAgVG8gYWN0dWFsbHkgdXNlIHRoYXQgZGF0YSwg
Qm9keSBhY2Nlc3NvcnMgYXJlIGFsc28gaW1wbGVtZW50ZWQgYXMgSlMgYnVpbHQtaW4gZm9yIFJl
c3BvbnNlLgorICAgICAgICBTaW5jZSB0aGVyZSBpcyBubyBuZWVkIHRvIGRvIHNvIGZvciBSZXF1
ZXN0LCBGZXRjaFJlc3BvbnNlIGlzIG5vIGxvbmdlciBtYXJrZWQgYXMgaW1wbGVtZW50aW5nIEZl
dGNoQm9keSBidXQgYWxsCisgICAgICAgIEZldGNoQm9keSBJREwgZGVzY3JpcHRpb24gaXMgaW5s
aW5lZCBpbiBGZXRjaFJlc3BvbnNlLmlkbC4KKworICAgICAgICBGb3IgZWFjaCBib2R5IGFjY2Vz
c29yIChhcnJheUJ1ZmZlciwgYmxvYiwganNvbiwgdGV4dCksIHRoZSBjb3JyZXNwb25kaW5nIEpT
IGJ1aWx0LWluIGNoZWNrcyB3aGV0aGVyIEBib2R5IGludGVybmFsIHNsb3QgaXMgc2V0LgorICAg
ICAgICBJZiB0aGF0IGlzIG5vdCB0aGUgY2FzZSwgcmVndWxhciBoYW5kbGluZyBpcyBkb25lIHRo
cm91Z2ggYSBuZXcgcHJpdmF0ZSBtZXRob2QgY2FsbGVkIEBjb25zdW1lLgorICAgICAgICBJZiBA
Ym9keSBpbnRlcm5hbCBzbG90IGlzIHNldCwgY2h1bmtzIGFyZSBwdW1wZWQgZnJvbSB0aGUgUmVh
ZGFibGVTdHJlYW0gdXNpbmcgUmVhZGFibGVTdHJlYW0gaW50ZXJuYWwgYnVpbHQtaW5zIGZ1bmN0
aW9ucy4KKyAgICAgICAgRGF0YSBoYW5kbGluZyBpcyBkb25lIGluIEMrKyB0aHJvdWdoIHRoZSBw
cml2YXRlIG1ldGhvZHMgQHN0YXJ0Q29uc3VtaW5nU3RyZWFtLCBAY29uc3VtZUNodW5rIGFuZCBA
ZmluaXNoQ29uc3VtaW5nU3RyZWFtLgorCisgICAgICAgIFRvIHN1cHBvcnQgY2xvbmluZyBvZiBS
ZXNwb25zZSB3aXRoIGJvZGllcywgY2xvbmUgbWV0aG9kIGlzIGFsc28gaW1wbGVtZW50ZWQgYXMg
YSBKUyBidWlsdC1pbi4KKyAgICAgICAgTWFpbiBjbG9uZSBpcyBkb25lIHRocm91Z2ggQGNsb25l
Rm9KUyBwcml2YXRlIG1ldGhvZCBpbXBsZW1lbnRlZCBpbiBDKysuCisgICAgICAgIEpTIGJ1aWx0
LWluIGNsb25lIGNvZGUgZG9lcyB0aGUgdGVlaW5nIG9mIHRoZSBSZWFkYWJsZVN0cmVhbSB1c2lu
ZyBSZWFkYWJsZVN0cmVhbSBKUyBidWlsdC1pbiBpbnRlcm5hbCBmdW5jdGlvbnMuCisKKyAgICAg
ICAgSW50cm9kdWNpbmcgYSBuZXcgUmVhZGFibGVTdHJlYW0gdHlwZSBmb3IgRmV0Y2hCb2R5IHRv
IGNvcGUgd2l0aCBib2R5IGJlaW5nIHN0b3JlZCBpbiBhIFJlYWRhYmxlU3RyZWFtLgorCisgICAg
ICAgIEludHJvZHVjaW5nIGEgbmV3IExvYWRlZCB0eXBlIGZvciBGZXRjaEJvZHkgdG8gY29wZSB3
aXRoIGJvZHkgYmVpbmcgc3RvcmVkIGluIHRoZSBGZXRjaEJvZHlDb25zdW1lciBvd25lZCBieSBG
ZXRjaEJvZHkuCisgICAgICAgIFRoaXMgYWxsb3dzIHJlbW92aW5nIHRoZSBjb252ZXJzaW9uIG9m
IGRhdGEgdG8gSlNDOjpBcnJheUJ1ZmZlciB3aGljaCB3YXMgZG9uZSBieSBkZWZhdXQgYXQgdGhl
IGVuZCBvZiBGZXRjaCBsb2FkaW5nIGlmIHVzZXIgc2NyaXB0IGRpZCBub3QgcmVxdWVzdCBkYXRh
IGJlZm9yZS4KKyAgICAgICAgQXQgdGhlIGVuZCBvZiBhIGxvYWQsIHRoZSBkYXRhIHJlbWFpbnMg
aW4gRmV0Y2hCb2R5Q29uc3VtZXIgYW5kIHRoZSBib2R5IGlzIG1hcmtlZCBhcyBMb2FkZWQuCisg
ICAgICAgIElmIHRoZSB1c2VyIHdhbnRzIHRvIGdldCB0aGUgZGF0YSBhZnRlciBkYXRhIGZpbmlz
aGVkIGJlaW5nIGxvYWRlZCwgRmV0Y2hCb2R5Q29uc3VtZXIgd2lsbCBkbyB0aGUgcmVxdWlyZWQg
Y29udmVyc2lvbnMuCisKKyAgICAgICAgSW50cm9kdWNpbmcgRGVmZXJyZWRXcmFwcGVyOjpyZXNv
bHZlV2l0aE5ld1ZhbHVlIHRvIGhhbmRsZSB0aGUgY2FzZSBvZiByZXNvbHZpbmcgcHJvbWlzZXMg
d2l0aCBuZXcgb2JqZWN0cy4KKyAgICAgICAgVGhpcyBhbGxvd3MgZGlyZWN0bHkgdXNpbmcgdG9K
U05ld2x5Q3JlYXRlZCBpbnN0ZWFkIG9mIHRvSlMuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4
dDogQWRkaW5nIEZldGNoQm9keUNvbnN1bWVyLgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0
Y2hCb2R5LmNwcDogTW92aW5nIGRhdGEgYWRhcHRhdGlvbiBjb2RlIHRvIEZldGNoQm9keUNvbnN1
bWVyLgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5OjpleHRyYWN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkZldGNoQm9keTo6YXJyYXlCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hC
b2R5OjpibG9iKTogU2V0dGluZyBjb250ZW50VHlwZSBpbiBGZXRjaEJvZHlDb25zdW1lciB0byBo
YW5kbGUgcHJvcGVyIGNyZWF0aW9uIG9mIGJsb2IuCisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJv
ZHk6Ompzb24pOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Ojp0ZXh0KToKKyAgICAgICAg
KFdlYkNvcmU6OkZldGNoQm9keTo6Y29uc3VtZSk6IFJlZmFjdG9yaW5nIGFuZCBhZGRlZCBjYXNl
IG9mIExvYWRlZCBib2RpZXMuCisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHk6OmNvbnN1bWVB
c1N0cmVhbSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Ojpjb25zdW1lQXJy
YXlCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Ojpjb25zdW1lVGV4dCk6Cisg
ICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHk6OmNvbnN1bWVCbG9iKToKKyAgICAgICAgKFdlYkNv
cmU6OkZldGNoQm9keTo6bG9hZGluZ0ZhaWxlZCk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJv
ZHk6OmxvYWRpbmdTdWNjZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Ojpsb2Fk
aW5nVHlwZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpibG9iRnJvbUFycmF5QnVmZmVy
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keTo6ZnVsZmlsbFRleHRQcm9t
aXNlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keTo6bG9hZGVkQXNBcnJh
eUJ1ZmZlcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHk6OmxvYWRlZEFz
VGV4dCk6IERlbGV0ZWQuCisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkZldGNoQm9keTo6Y29uc3VtZXIpOgorICAgICAgICAqIE1vZHVsZXMv
ZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwOiBBZGRlZCwgcmVzcG9uc2libGUgb2YgZGF0YSBh
ZGFwdGF0aW9uLgorICAgICAgICAoV2ViQ29yZTo6YmxvYkZyb21EYXRhKToKKyAgICAgICAgKFdl
YkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjpyZXNvbHZlV2l0aERhdGEpOgorICAgICAgICAoV2Vi
Q29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OnJlc29sdmUpOgorICAgICAgICAoV2ViQ29yZTo6RmV0
Y2hCb2R5Q29uc3VtZXI6OmFwcGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25z
dW1lcjo6dGFrZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OnRh
a2VBc0FycmF5QnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjp0
YWtlQXNCbG9iKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjp0YWtlQXNU
ZXh0KToKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmg6IEFkZGVk
LgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OkZldGNoQm9keUNvbnN1bWVy
KToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjpzZXRDb250ZW50VHlwZSk6
CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6c2V0VHlwZSk6CisgICAgICAg
IChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6dHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpG
ZXRjaEJvZHlDb25zdW1lcjo6Y2xlYW4pOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29u
c3VtZXI6Omhhc0RhdGEpOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5T3duZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5T3duZXI6OmxvYWRCbG9iKToKKyAgICAg
ICAgKFdlYkNvcmU6OkZldGNoQm9keU93bmVyOjpibG9iTG9hZGluZ1N1Y2NlZWRlZCk6CisgICAg
ICAgIChXZWJDb3JlOjpGZXRjaEJvZHlPd25lcjo6bG9hZGVkQmxvYkFzVGV4dCk6IERlbGV0ZWQu
CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlPd25lci5oOgorICAgICAgICAoV2Vi
Q29yZTo6RmV0Y2hCb2R5T3duZXI6OmxvYWRlZEJsb2JBc0FycmF5QnVmZmVyKTogRGVsZXRlZC4K
KyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoSW50ZXJuYWxzLmpzOgorICAgICAgICAoY29u
c3VtZVN0cmVhbSk6IFB1bXAgUmVhZGFibGVTdHJlYW0gZGF0YSBhbmQgc2VuZCBpdCB0byBGZXRj
aFJlc3BvbnNlIHRvIGJlIGNvbnZlcnRlZCBhY2NvcmRpbmcgdXNlciBuZWVkLgorICAgICAgICAq
IE1vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hM
b2FkZXI6OkZldGNoTG9hZGVyKTogRmV0Y2hMb2FkZXIgaXMgc2ltcGxpZmllZCBhcyBpdCBoYXMg
dHdvIG5vZGVzOiBjb25zdW1lciBtb2RlIGluIHdoaWNoIGNhc2UKKyAgICAgICAgZGF0YSBpcyBz
ZW50IHRvIHRoZSBjb25zdW1lciBhbmQgbm8tY29uc3VtZXIgbW9kZSBpbiB3aGljaCBjYXNlIGRh
dGEgaXMgcGFzc2VkIHRvIGxvYWRlciBjbGllbnQuIFRoZSBzZWNvbmQgbW9kZQorICAgICAgICBp
cyB1c2VkIHRvIGNvbnZleXkgZGF0YSB0byBSZWFkYWJsZVN0cmVhbSBzb3VyY2UuCisgICAgICAg
IChXZWJDb3JlOjpGZXRjaExvYWRlcjo6c3RvcCk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaExv
YWRlcjo6c3RhcnRTdHJlYW1pbmcpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hMb2FkZXI6OmRp
ZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoTG9hZGVyOjpkaWRGaW5pc2hM
b2FkaW5nKTogRGVsZXRlZC4KKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyLmg6
CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlckNsaWVudC5oOgorICAgICAgICAo
V2ViQ29yZTo6RmV0Y2hMb2FkZXJDbGllbnQ6OmRpZEZpbmlzaExvYWRpbmdBc1RleHQpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hMb2FkZXJDbGllbnQ6OmRpZEZpbmlzaExvYWRp
bmdBc0FycmF5QnVmZmVyKTogRGVsZXRlZC4KKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNo
UmVzcG9uc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hSZXNwb25zZTo6Y2xvbmVGb3JK
Uyk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaFJlc3BvbnNlOjpCb2R5TG9hZGVyOjpkaWRTdWNj
ZWVkKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoUmVzcG9uc2U6OkJvZHlMb2FkZXI6OnN0YXJ0
KToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoUmVzcG9uc2U6OmNvbnN1bWUpOiBJbnRyb2R1Y2Vk
IHRvIGNvbnN1bWUgZGF0YSBzdG9yZWQgaW4gYm9keSBhbmQgbm90IGluIFJlYWRhYmxlU3RyZWFt
LgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hSZXNwb25zZTo6c3RhcnRDb25zdW1pbmdTdHJlYW0p
OiBJbnRyb2R1Y2VkIHRvIHN0YXJ0IHByb2Nlc3Mgb2YgY29uc3VtaW5nIGRhdGEgc3RvcmVkIGlu
IHRoZSBSZWFkYWJsZVN0cmVhbS4KKyAgICAgICAgKFdlYkNvcmU6OkZldGNoUmVzcG9uc2U6OmNv
bnN1bWVDaHVuayk6IFJlY2VwdGlvbiBvZiBSZWFkYWJsZVN0cmVhbSBkYXRhLgorICAgICAgICAo
V2ViQ29yZTo6RmV0Y2hSZXNwb25zZTo6ZmluaXNoQ29uc3VtaW5nU3RyZWFtKTogRG9pbmcgdGhl
IGZpbmFsIGNvbnZlcnNpb24uCisgICAgICAgIChXZWJDb3JlOjpGZXRjaFJlc3BvbnNlOjpjbG9u
ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpGZXRjaFJlc3BvbnNlOjpCb2R5TG9hZGVy
OjpkaWRGaW5pc2hMb2FkaW5nQXNBcnJheUJ1ZmZlcik6IERlbGV0ZWQuCisgICAgICAgICogTW9k
dWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmg6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRj
aFJlc3BvbnNlLmlkbDogSW5saW5pbmcgb2YgRmV0Y2hCb2R5IG1ldGhvZHMvYXR0cmlidXRlcyBh
bmQgYWRkaW5nIHByaXZhdGUgbWV0aG9kcy4KKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNo
UmVzcG9uc2UuanM6CisgICAgICAgIChpbml0aWFsaXplRmV0Y2hSZXNwb25zZSk6CisgICAgICAg
IChjbG9uZSk6CisgICAgICAgIChhcnJheUJ1ZmZlcik6CisgICAgICAgIChibG9iKToKKyAgICAg
ICAgKGZvcm1EYXRhKToKKyAgICAgICAgKGpzb24pOgorICAgICAgICAodGV4dCk6CisgICAgICAg
ICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJpbmRpbmdz
L2pzL0pTRE9NUHJvbWlzZS5oOgorICAgICAgICAoV2ViQ29yZTo6RGVmZXJyZWRXcmFwcGVyOjpy
ZXNvbHZlV2l0aE5ld1ZhbHVlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9XZWJDb3JlQnVpbHRp
bk5hbWVzLmg6CisKIDIwMTYtMDctMjUgIFNlcmdpbyBWaWxsYXIgU2VuaW4gIDxzdmlsbGFyQGln
YWxpYS5jb20+CiAKICAgICAgICAgW2Nzcy1ncmlkXSByZXBlYXQoKSBzeW50YXggc2hvdWxkIHRh
a2UgYSA8dHJhY2stbGlzdD4gYXJndW1lbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NN
YWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggNmRjMTEz
ZjhhMmM2MDJlM2Y1MDEzMzEzNzM2ZWNhYTM2NmJlNTdmZC4uZWVhNTBkMmMzNTZlM2RmZmY5YzE5
YmU1ODc1ZWQ0NjVhOWVkMDY3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTgxOCw2ICs4MTgs
NyBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAKICAgICBNb2R1bGVzL2ZldGNoL0RPTVdpbmRvd0Zl
dGNoLmNwcAogICAgIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcAorICAgIE1vZHVsZXMvZmV0
Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwCiAgICAgTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlPd25l
ci5jcHAKICAgICBNb2R1bGVzL2ZldGNoL0ZldGNoSGVhZGVycy5jcHAKICAgICBNb2R1bGVzL2Zl
dGNoL0ZldGNoTG9hZGVyLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9m
ZXRjaC9GZXRjaEJvZHkuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJv
ZHkuY3BwCmluZGV4IDhjNDc5ZDVmOGUwNjI1MDJkOTU3MGM4YjliNTg1YmNmMGRiNDRkM2YuLmUw
ZjVhZTE4MDM1YWFhZmM3OTRiNzdiMGRkN2Q2YTIxNjA1NTBmZDkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHAKQEAgLTM5LDEyICszOSwxMSBAQAogI2luY2x1
ZGUgIkhUVFBQYXJzZXJzLmgiCiAjaW5jbHVkZSAiSlNCbG9iLmgiCiAjaW5jbHVkZSAiSlNET01G
b3JtRGF0YS5oIgorI2luY2x1ZGUgIkpTUmVhZGFibGVTdHJlYW0uaCIKICNpbmNsdWRlICJSZWFk
YWJsZVN0cmVhbVNvdXJjZS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBSZWY8
QmxvYj4gYmxvYkZyb21BcnJheUJ1ZmZlcihBcnJheUJ1ZmZlciosIGNvbnN0IFN0cmluZyYpOwot
CiBGZXRjaEJvZHk6OkZldGNoQm9keShSZWY8QmxvYj4mJiBibG9iKQogICAgIDogbV90eXBlKFR5
cGU6OkJsb2IpCiAgICAgLCBtX21pbWVUeXBlKGJsb2ItPnR5cGUoKSkKQEAgLTc1LDYgKzc0LDgg
QEAgRmV0Y2hCb2R5IEZldGNoQm9keTo6ZXh0cmFjdChKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIEpT
Qzo6SlNWYWx1ZSB2YWx1ZSkKICAgICAgICAgcmV0dXJuIEZldGNoQm9keSgqSlNET01Gb3JtRGF0
YTo6dG9XcmFwcGVkKHZhbHVlKSk7CiAgICAgaWYgKHZhbHVlLmlzU3RyaW5nKCkpCiAgICAgICAg
IHJldHVybiBGZXRjaEJvZHkodmFsdWUudG9XVEZTdHJpbmcoJnN0YXRlKSk7CisgICAgaWYgKHZh
bHVlLmluaGVyaXRzKEpTUmVhZGFibGVTdHJlYW06OmluZm8oKSkpCisgICAgICAgIHJldHVybiB7
IFR5cGU6OlJlYWRhYmxlU3RyZWFtIH07CiAgICAgcmV0dXJuIHsgfTsKIH0KIApAQCAtODksMTMg
KzkwLDE2IEBAIEZldGNoQm9keSBGZXRjaEJvZHk6OmV4dHJhY3RGcm9tQm9keShGZXRjaEJvZHkq
IGJvZHkpCiB2b2lkIEZldGNoQm9keTo6YXJyYXlCdWZmZXIoRmV0Y2hCb2R5T3duZXImIG93bmVy
LCBEZWZlcnJlZFdyYXBwZXImJiBwcm9taXNlKQogewogICAgIEFTU0VSVChtX3R5cGUgIT0gVHlw
ZTo6Tm9uZSk7Ci0gICAgY29uc3VtZShvd25lciwgQ29uc3VtZXI6OlR5cGU6OkFycmF5QnVmZmVy
LCBXVEZNb3ZlKHByb21pc2UpKTsKKyAgICBtX2NvbnN1bWVyLnNldFR5cGUoRmV0Y2hCb2R5Q29u
c3VtZXI6OlR5cGU6OkFycmF5QnVmZmVyKTsKKyAgICBjb25zdW1lKG93bmVyLCBXVEZNb3ZlKHBy
b21pc2UpKTsKIH0KIAogdm9pZCBGZXRjaEJvZHk6OmJsb2IoRmV0Y2hCb2R5T3duZXImIG93bmVy
LCBEZWZlcnJlZFdyYXBwZXImJiBwcm9taXNlKQogewogICAgIEFTU0VSVChtX3R5cGUgIT0gVHlw
ZTo6Tm9uZSk7Ci0gICAgY29uc3VtZShvd25lciwgQ29uc3VtZXI6OlR5cGU6OkJsb2IsIFdURk1v
dmUocHJvbWlzZSkpOworICAgIG1fY29uc3VtZXIuc2V0VHlwZShGZXRjaEJvZHlDb25zdW1lcjo6
VHlwZTo6QmxvYik7CisgICAgbV9jb25zdW1lci5zZXRDb250ZW50VHlwZShCbG9iOjpub3JtYWxp
emVkQ29udGVudFR5cGUoZXh0cmFjdE1JTUVUeXBlRnJvbU1lZGlhVHlwZShtX21pbWVUeXBlKSkp
OworICAgIGNvbnN1bWUob3duZXIsIFdURk1vdmUocHJvbWlzZSkpOwogfQogCiB2b2lkIEZldGNo
Qm9keTo6anNvbihGZXRjaEJvZHlPd25lciYgb3duZXIsIERlZmVycmVkV3JhcHBlciYmIHByb21p
c2UpCkBAIC0xMDYsNyArMTEwLDggQEAgdm9pZCBGZXRjaEJvZHk6Ompzb24oRmV0Y2hCb2R5T3du
ZXImIG93bmVyLCBEZWZlcnJlZFdyYXBwZXImJiBwcm9taXNlKQogICAgICAgICBmdWxmaWxsUHJv
bWlzZVdpdGhKU09OKHByb21pc2UsIG1fdGV4dCk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0g
ICAgY29uc3VtZShvd25lciwgQ29uc3VtZXI6OlR5cGU6OkpTT04sIFdURk1vdmUocHJvbWlzZSkp
OworICAgIG1fY29uc3VtZXIuc2V0VHlwZShGZXRjaEJvZHlDb25zdW1lcjo6VHlwZTo6SlNPTik7
CisgICAgY29uc3VtZShvd25lciwgV1RGTW92ZShwcm9taXNlKSk7CiB9CiAKIHZvaWQgRmV0Y2hC
b2R5Ojp0ZXh0KEZldGNoQm9keU93bmVyJiBvd25lciwgRGVmZXJyZWRXcmFwcGVyJiYgcHJvbWlz
ZSkKQEAgLTExNywxMTMgKzEyMiw5NSBAQCB2b2lkIEZldGNoQm9keTo6dGV4dChGZXRjaEJvZHlP
d25lciYgb3duZXIsIERlZmVycmVkV3JhcHBlciYmIHByb21pc2UpCiAgICAgICAgIHByb21pc2Uu
cmVzb2x2ZShtX3RleHQpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGNvbnN1bWUob3du
ZXIsIENvbnN1bWVyOjpUeXBlOjpUZXh0LCBXVEZNb3ZlKHByb21pc2UpKTsKKyAgICBtX2NvbnN1
bWVyLnNldFR5cGUoRmV0Y2hCb2R5Q29uc3VtZXI6OlR5cGU6OlRleHQpOworICAgIGNvbnN1bWUo
b3duZXIsIFdURk1vdmUocHJvbWlzZSkpOwogfQogCi12b2lkIEZldGNoQm9keTo6Y29uc3VtZShG
ZXRjaEJvZHlPd25lciYgb3duZXIsIENvbnN1bWVyOjpUeXBlIHR5cGUsIERlZmVycmVkV3JhcHBl
ciYmIHByb21pc2UpCit2b2lkIEZldGNoQm9keTo6Y29uc3VtZShGZXRjaEJvZHlPd25lciYgb3du
ZXIsIERlZmVycmVkV3JhcHBlciYmIHByb21pc2UpCiB7Ci0gICAgaWYgKG1fdHlwZSA9PSBUeXBl
OjpBcnJheUJ1ZmZlcikgewotICAgICAgICBjb25zdW1lQXJyYXlCdWZmZXIodHlwZSwgcHJvbWlz
ZSk7CisgICAgLy8gVGhpcyBzaG91bGQgYmUgaGFuZGxlZCBieSBGZXRjaEJvZHlPd25lcgorICAg
IEFTU0VSVChtX3R5cGUgIT0gVHlwZTo6Tm9uZSk7CisgICAgLy8gVGhpcyBzaG91bGQgYmUgaGFu
ZGxlZCBieSBKUyBidWlsdC1pbnMKKyAgICBBU1NFUlQobV90eXBlICE9IFR5cGU6OlJlYWRhYmxl
U3RyZWFtKTsKKworICAgIHN3aXRjaCAobV90eXBlKSB7CisgICAgY2FzZSBUeXBlOjpBcnJheUJ1
ZmZlcjoKKyAgICAgICAgY29uc3VtZUFycmF5QnVmZmVyKHByb21pc2UpOwogICAgICAgICByZXR1
cm47Ci0gICAgfQotICAgIGlmIChtX3R5cGUgPT0gVHlwZTo6VGV4dCkgewotICAgICAgICBjb25z
dW1lVGV4dCh0eXBlLCBwcm9taXNlKTsKKyAgICBjYXNlIFR5cGU6OlRleHQ6CisgICAgICAgIGNv
bnN1bWVUZXh0KHByb21pc2UpOwogICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmIChtX3R5
cGUgPT0gVHlwZTo6QmxvYikgewotICAgICAgICBjb25zdW1lQmxvYihvd25lciwgdHlwZSwgV1RG
TW92ZShwcm9taXNlKSk7CisgICAgY2FzZSBUeXBlOjpCbG9iOgorICAgICAgICBjb25zdW1lQmxv
Yihvd25lciwgV1RGTW92ZShwcm9taXNlKSk7CiAgICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAg
aWYgKG1fdHlwZSA9PSBUeXBlOjpMb2FkaW5nKSB7Ci0gICAgICAgIC8vIEZJWE1FOiBXZSBzaG91
bGQgYmUgYWJsZSB0byBjaGFuZ2UgdGhlIGxvYWRpbmcgdHlwZSB0byB0ZXh0IGlmIGNvbnN1bWVy
IHR5cGUgaXMgSlNPTiBvciBUZXh0LgotICAgICAgICBtX2NvbnN1bWVyID0gQ29uc3VtZXIoe3R5
cGUsIFdURk1vdmUocHJvbWlzZSl9KTsKKyAgICBjYXNlIFR5cGU6OkxvYWRpbmc6CisgICAgICAg
IG1fY29uc3VtZVByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpOworICAgICAgICByZXR1cm47Cisg
ICAgY2FzZSBUeXBlOjpMb2FkZWQ6CisgICAgICAgIG1fY29uc3VtZXIucmVzb2x2ZShwcm9taXNl
KTsKICAgICAgICAgcmV0dXJuOworICAgIGRlZmF1bHQ6CisgICAgICAgIC8vIEZJWE1FOiBTdXBw
b3J0IG90aGVyIHR5cGVzLgorICAgICAgICBwcm9taXNlLnJlamVjdCgwKTsKICAgICB9Ci0KLSAg
ICAvLyBGSVhNRTogU3VwcG9ydCBvdGhlciB0eXBlcy4KLSAgICBwcm9taXNlLnJlamVjdCgwKTsK
IH0KIAogI2lmIEVOQUJMRShTVFJFQU1TX0FQSSkKIHZvaWQgRmV0Y2hCb2R5Ojpjb25zdW1lQXNT
dHJlYW0oRmV0Y2hCb2R5T3duZXImIG93bmVyLCBGZXRjaFJlc3BvbnNlU291cmNlJiBzb3VyY2Up
CiB7CisgICAgLy8gVGhpcyBzaG91bGQgYmUgaGFuZGxlZCBieSBGZXRjaFJlc3BvbnNlCiAgICAg
QVNTRVJUKG1fdHlwZSAhPSBUeXBlOjpMb2FkaW5nKTsKKyAgICAvLyBUaGlzIHNob3VsZCBiZSBo
YW5kbGVkIGJ5IEpTIGJ1aWx0LWlucworICAgIEFTU0VSVChtX3R5cGUgIT0gVHlwZTo6UmVhZGFi
bGVTdHJlYW0pOwogCisgICAgYm9vbCBjbG9zZVN0cmVhbSA9IGZhbHNlOwogICAgIHN3aXRjaCAo
bV90eXBlKSB7CiAgICAgY2FzZSBUeXBlOjpBcnJheUJ1ZmZlcjoKICAgICAgICAgQVNTRVJUKG1f
ZGF0YSk7Ci0gICAgICAgIGlmIChzb3VyY2UuZW5xdWV1ZShSZWZQdHI8SlNDOjpBcnJheUJ1ZmZl
cj4obV9kYXRhKSkpCi0gICAgICAgICAgICBzb3VyY2UuY2xvc2UoKTsKLSAgICAgICAgcmV0dXJu
OworICAgICAgICBjbG9zZVN0cmVhbSA9IHNvdXJjZS5lbnF1ZXVlKFJlZlB0cjxKU0M6OkFycmF5
QnVmZmVyPihtX2RhdGEpKTsKKyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBUeXBlOjpUZXh0OiB7
CiAgICAgICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhID0gZXh0cmFjdEZyb21UZXh0KCk7Ci0gICAg
ICAgIGlmIChzb3VyY2UuZW5xdWV1ZShBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlKGRhdGEuZGF0YSgp
LCBkYXRhLnNpemUoKSkpKQotICAgICAgICAgICAgc291cmNlLmNsb3NlKCk7Ci0gICAgICAgIHJl
dHVybjsKKyAgICAgICAgY2xvc2VTdHJlYW0gPSBzb3VyY2UuZW5xdWV1ZShBcnJheUJ1ZmZlcjo6
dHJ5Q3JlYXRlKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSkpOworICAgICAgICBicmVhazsKICAg
ICB9CiAgICAgY2FzZSBUeXBlOjpCbG9iOgogICAgICAgICBBU1NFUlQobV9ibG9iKTsKLSAgICAg
ICAgb3duZXIubG9hZEJsb2IoKm1fYmxvYiwgRmV0Y2hMb2FkZXI6OlR5cGU6OlN0cmVhbSk7Ci0g
ICAgICAgIHJldHVybjsKKyAgICAgICAgb3duZXIubG9hZEJsb2IoKm1fYmxvYiwgbnVsbHB0cik7
CisgICAgICAgIGJyZWFrOwogICAgIGNhc2UgVHlwZTo6Tm9uZToKLSAgICAgICAgc291cmNlLmNs
b3NlKCk7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgY2xvc2VTdHJlYW0gPSB0cnVlOworICAg
ICAgICBicmVhazsKKyAgICBjYXNlIFR5cGU6OkxvYWRlZDogeworICAgICAgICBjbG9zZVN0cmVh
bSA9IHNvdXJjZS5lbnF1ZXVlKG1fY29uc3VtZXIudGFrZUFzQXJyYXlCdWZmZXIoKSk7CisgICAg
ICAgIGJyZWFrOworICAgIH0KICAgICBkZWZhdWx0OgogICAgICAgICBzb3VyY2UuZXJyb3IoQVND
SUlMaXRlcmFsKCJub3QgaW1wbGVtZW50ZWQiKSk7CiAgICAgfQotfQotI2VuZGlmCiAKLXZvaWQg
RmV0Y2hCb2R5Ojpjb25zdW1lQXJyYXlCdWZmZXIoQ29uc3VtZXI6OlR5cGUgdHlwZSwgRGVmZXJy
ZWRXcmFwcGVyJiBwcm9taXNlKQotewotICAgIGlmICh0eXBlID09IENvbnN1bWVyOjpUeXBlOjpB
cnJheUJ1ZmZlcikgewotICAgICAgICBmdWxmaWxsUHJvbWlzZVdpdGhBcnJheUJ1ZmZlcihwcm9t
aXNlLCBtX2RhdGEuZ2V0KCkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmICh0eXBl
ID09IENvbnN1bWVyOjpUeXBlOjpCbG9iKSB7Ci0gICAgICAgIHByb21pc2UucmVzb2x2ZShibG9i
RnJvbUFycmF5QnVmZmVyKG1fZGF0YS5nZXQoKSwgQmxvYjo6bm9ybWFsaXplZENvbnRlbnRUeXBl
KGV4dHJhY3RNSU1FVHlwZUZyb21NZWRpYVR5cGUobV9taW1lVHlwZSkpKSk7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0KLSAgICBBU1NFUlQodHlwZSA9PSBDb25zdW1lcjo6VHlwZTo6VGV4dCB8
fCB0eXBlID09IENvbnN1bWVyOjpUeXBlOjpKU09OKTsKLSAgICAvLyBGSVhNRTogRG8gd2UgbmVl
ZCBUZXh0UmVzb3VyY2VEZWNvZGVyIHRvIGNyZWF0ZSBhIFN0cmluZyB0byBkZWNvZGUgVVRGLTgg
ZGF0YS4KLSAgICBmdWxmaWxsVGV4dFByb21pc2UodHlwZSwgVGV4dFJlc291cmNlRGVjb2Rlcjo6
Y3JlYXRlKEFTQ0lJTGl0ZXJhbCgidGV4dC9wbGFpbiIpLCAiVVRGLTgiKS0+ZGVjb2RlQW5kRmx1
c2goc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KG1fZGF0YS0+ZGF0YSgpKSwgbV9kYXRhLT5ieXRl
TGVuZ3RoKCkpLCBwcm9taXNlKTsKKyAgICBpZiAoY2xvc2VTdHJlYW0pCisgICAgICAgIHNvdXJj
ZS5jbG9zZSgpOwogfQorI2VuZGlmCiAKLXZvaWQgRmV0Y2hCb2R5Ojpjb25zdW1lVGV4dChDb25z
dW1lcjo6VHlwZSB0eXBlLCBEZWZlcnJlZFdyYXBwZXImIHByb21pc2UpCit2b2lkIEZldGNoQm9k
eTo6Y29uc3VtZUFycmF5QnVmZmVyKERlZmVycmVkV3JhcHBlciYgcHJvbWlzZSkKIHsKLSAgICBB
U1NFUlQodHlwZSA9PSBDb25zdW1lcjo6VHlwZTo6QXJyYXlCdWZmZXIgfHwgdHlwZSA9PSBDb25z
dW1lcjo6VHlwZTo6QmxvYik7Ci0KLSAgICBpZiAodHlwZSA9PSBDb25zdW1lcjo6VHlwZTo6QXJy
YXlCdWZmZXIpIHsKLSAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGEgPSBleHRyYWN0RnJvbVRl
eHQoKTsKLSAgICAgICAgZnVsZmlsbFByb21pc2VXaXRoQXJyYXlCdWZmZXIocHJvbWlzZSwgZGF0
YS5kYXRhKCksIGRhdGEuc2l6ZSgpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBTdHJp
bmcgY29udGVudFR5cGUgPSBCbG9iOjpub3JtYWxpemVkQ29udGVudFR5cGUoZXh0cmFjdE1JTUVU
eXBlRnJvbU1lZGlhVHlwZShtX21pbWVUeXBlKSk7Ci0gICAgcHJvbWlzZS5yZXNvbHZlKEJsb2I6
OmNyZWF0ZShleHRyYWN0RnJvbVRleHQoKSwgY29udGVudFR5cGUpKTsKKyAgICBtX2NvbnN1bWVy
LnJlc29sdmVXaXRoRGF0YShwcm9taXNlLCBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4obV9k
YXRhLT5kYXRhKCkpLCBtX2RhdGEtPmJ5dGVMZW5ndGgoKSk7CiB9CiAKLUZldGNoTG9hZGVyOjpU
eXBlIEZldGNoQm9keTo6bG9hZGluZ1R5cGUoQ29uc3VtZXI6OlR5cGUgdHlwZSkKK3ZvaWQgRmV0
Y2hCb2R5Ojpjb25zdW1lVGV4dChEZWZlcnJlZFdyYXBwZXImIHByb21pc2UpCiB7Ci0gICAgc3dp
dGNoICh0eXBlKSB7Ci0gICAgY2FzZSBDb25zdW1lcjo6VHlwZTo6SlNPTjoKLSAgICBjYXNlIENv
bnN1bWVyOjpUeXBlOjpUZXh0OgotICAgICAgICByZXR1cm4gRmV0Y2hMb2FkZXI6OlR5cGU6OlRl
eHQ7Ci0gICAgY2FzZSBDb25zdW1lcjo6VHlwZTo6QmxvYjoKLSAgICBjYXNlIENvbnN1bWVyOjpU
eXBlOjpBcnJheUJ1ZmZlcjoKLSAgICAgICAgcmV0dXJuIEZldGNoTG9hZGVyOjpUeXBlOjpBcnJh
eUJ1ZmZlcjsKLSAgICBkZWZhdWx0OgotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAg
ICAgICAgcmV0dXJuIEZldGNoTG9hZGVyOjpUeXBlOjpBcnJheUJ1ZmZlcjsKLSAgICB9OworICAg
IFZlY3Rvcjx1aW50OF90PiBkYXRhID0gZXh0cmFjdEZyb21UZXh0KCk7CisgICAgbV9jb25zdW1l
ci5yZXNvbHZlV2l0aERhdGEocHJvbWlzZSwgZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKTsKIH0K
IAotdm9pZCBGZXRjaEJvZHk6OmNvbnN1bWVCbG9iKEZldGNoQm9keU93bmVyJiBvd25lciwgQ29u
c3VtZXI6OlR5cGUgdHlwZSwgRGVmZXJyZWRXcmFwcGVyJiYgcHJvbWlzZSkKK3ZvaWQgRmV0Y2hC
b2R5Ojpjb25zdW1lQmxvYihGZXRjaEJvZHlPd25lciYgb3duZXIsIERlZmVycmVkV3JhcHBlciYm
IHByb21pc2UpCiB7CiAgICAgQVNTRVJUKG1fYmxvYik7CiAKLSAgICBtX2NvbnN1bWVyID0gQ29u
c3VtZXIoe3R5cGUsIFdURk1vdmUocHJvbWlzZSl9KTsKLSAgICBvd25lci5sb2FkQmxvYigqbV9i
bG9iLCBsb2FkaW5nVHlwZSh0eXBlKSk7CisgICAgbV9jb25zdW1lUHJvbWlzZSA9IFdURk1vdmUo
cHJvbWlzZSk7CisgICAgb3duZXIubG9hZEJsb2IoKm1fYmxvYiwgJm1fY29uc3VtZXIpOwogfQog
CiBWZWN0b3I8dWludDhfdD4gRmV0Y2hCb2R5OjpleHRyYWN0RnJvbVRleHQoKSBjb25zdApAQCAt
MjM2LDYzICsyMjMsMjEgQEAgVmVjdG9yPHVpbnQ4X3Q+IEZldGNoQm9keTo6ZXh0cmFjdEZyb21U
ZXh0KCkgY29uc3QKICAgICByZXR1cm4gdmFsdWU7CiB9CiAKLXN0YXRpYyBpbmxpbmUgUmVmPEJs
b2I+IGJsb2JGcm9tQXJyYXlCdWZmZXIoQXJyYXlCdWZmZXIqIGJ1ZmZlciwgY29uc3QgU3RyaW5n
JiBjb250ZW50VHlwZSkKLXsKLSAgICBpZiAoIWJ1ZmZlcikKLSAgICAgICAgcmV0dXJuIEJsb2I6
OmNyZWF0ZShWZWN0b3I8dWludDhfdD4oKSwgY29udGVudFR5cGUpOwotCi0gICAgLy8gRklYTUU6
IFdlIHNob3VsZCB0cnkgdG8gbW92ZSBidWZmZXIgdG8gQmxvYiB3aXRob3V0IGRvaW5nIHRoaXMg
Y29weS4KLSAgICBWZWN0b3I8dWludDhfdD4gdmFsdWUoYnVmZmVyLT5ieXRlTGVuZ3RoKCkpOwot
ICAgIG1lbWNweSh2YWx1ZS5kYXRhKCksIGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPmJ5dGVMZW5n
dGgoKSk7Ci0gICAgcmV0dXJuIEJsb2I6OmNyZWF0ZShXVEZNb3ZlKHZhbHVlKSwgY29udGVudFR5
cGUpOwotfQotCi12b2lkIEZldGNoQm9keTo6ZnVsZmlsbFRleHRQcm9taXNlKEZldGNoQm9keTo6
Q29uc3VtZXI6OlR5cGUgdHlwZSwgY29uc3QgU3RyaW5nJiB0ZXh0LCBEZWZlcnJlZFdyYXBwZXIm
IHByb21pc2UpCi17Ci0gICAgQVNTRVJUKHR5cGUgPT0gQ29uc3VtZXI6OlR5cGU6OlRleHQgfHwg
dHlwZSA9PSBDb25zdW1lcjo6VHlwZTo6SlNPTik7Ci0gICAgaWYgKHR5cGUgPT0gRmV0Y2hCb2R5
OjpDb25zdW1lcjo6VHlwZTo6VGV4dCkKLSAgICAgICAgcHJvbWlzZS5yZXNvbHZlKHRleHQpOwot
ICAgIGVsc2UKLSAgICAgICAgZnVsZmlsbFByb21pc2VXaXRoSlNPTihwcm9taXNlLCB0ZXh0KTsK
LX0KLQogdm9pZCBGZXRjaEJvZHk6OmxvYWRpbmdGYWlsZWQoKQogewotICAgIEFTU0VSVChtX2Nv
bnN1bWVyKTsKLSAgICBtX2NvbnN1bWVyLT5wcm9taXNlLnJlamVjdCgwKTsKLSAgICBtX2NvbnN1
bWVyID0gTnVsbG9wdDsKLX0KLQotdm9pZCBGZXRjaEJvZHk6OmxvYWRlZEFzQXJyYXlCdWZmZXIo
UmVmUHRyPEFycmF5QnVmZmVyPiYmIGJ1ZmZlcikKLXsKLSAgICBpZiAobV90eXBlID09IFR5cGU6
OkxvYWRpbmcpIHsKLSAgICAgICAgbV90eXBlID0gVHlwZTo6QXJyYXlCdWZmZXI7Ci0gICAgICAg
IG1fZGF0YSA9IGJ1ZmZlcjsKLSAgICAgICAgaWYgKG1fY29uc3VtZXIpIHsKLSAgICAgICAgICAg
IGNvbnN1bWVBcnJheUJ1ZmZlcihtX2NvbnN1bWVyLT50eXBlLCBtX2NvbnN1bWVyLT5wcm9taXNl
KTsKLSAgICAgICAgICAgIG1fY29uc3VtZXIgPSBOdWxsb3B0OwotICAgICAgICB9Ci0gICAgICAg
IHJldHVybjsKLSAgICB9Ci0KLSAgICBBU1NFUlQobV9jb25zdW1lcik7Ci0gICAgQVNTRVJUKG1f
Y29uc3VtZXItPnR5cGUgPT0gQ29uc3VtZXI6OlR5cGU6OkJsb2IgfHwgbV9jb25zdW1lci0+dHlw
ZSA9PSBDb25zdW1lcjo6VHlwZTo6QXJyYXlCdWZmZXIpOwotICAgIGlmIChtX2NvbnN1bWVyLT50
eXBlID09IENvbnN1bWVyOjpUeXBlOjpBcnJheUJ1ZmZlcikKLSAgICAgICAgZnVsZmlsbFByb21p
c2VXaXRoQXJyYXlCdWZmZXIobV9jb25zdW1lci0+cHJvbWlzZSwgYnVmZmVyLmdldCgpKTsKLSAg
ICBlbHNlIHsKLSAgICAgICAgQVNTRVJUKG1fYmxvYik7Ci0gICAgICAgIG1fY29uc3VtZXItPnBy
b21pc2UucmVzb2x2ZShibG9iRnJvbUFycmF5QnVmZmVyKGJ1ZmZlci5nZXQoKSwgbV9ibG9iLT50
eXBlKCkpKTsKKyAgICBpZiAobV9jb25zdW1lUHJvbWlzZSkgeworICAgICAgICBtX2NvbnN1bWVQ
cm9taXNlLT5yZWplY3QoMCk7CisgICAgICAgIG1fY29uc3VtZVByb21pc2UgPSBOdWxsb3B0Owog
ICAgIH0KLSAgICBtX2NvbnN1bWVyID0gTnVsbG9wdDsKIH0KIAotdm9pZCBGZXRjaEJvZHk6Omxv
YWRlZEFzVGV4dChTdHJpbmcmJiB0ZXh0KQordm9pZCBGZXRjaEJvZHk6OmxvYWRpbmdTdWNjZWVk
ZWQoKQogewotICAgIEFTU0VSVChtX2NvbnN1bWVyKTsKLSAgICBBU1NFUlQobV9jb25zdW1lci0+
dHlwZSA9PSBDb25zdW1lcjo6VHlwZTo6VGV4dCB8fCBtX2NvbnN1bWVyLT50eXBlID09IENvbnN1
bWVyOjpUeXBlOjpKU09OKTsKLQotICAgIGZ1bGZpbGxUZXh0UHJvbWlzZShtX2NvbnN1bWVyLT50
eXBlLCB0ZXh0LCBtX2NvbnN1bWVyLT5wcm9taXNlKTsKLSAgICBtX2NvbnN1bWVyID0gTnVsbG9w
dDsKKyAgICBtX3R5cGUgPSBtX2NvbnN1bWVyLmhhc0RhdGEoKSA/IFR5cGU6OkxvYWRlZCA6IFR5
cGU6Ok5vbmU7CisgICAgaWYgKG1fY29uc3VtZVByb21pc2UpIHsKKyAgICAgICAgbV9jb25zdW1l
ci5yZXNvbHZlKCptX2NvbnN1bWVQcm9taXNlKTsKKyAgICAgICAgbV9jb25zdW1lUHJvbWlzZSA9
IE51bGxvcHQ7CisgICAgfQogfQogCiBSZWZQdHI8Rm9ybURhdGE+IEZldGNoQm9keTo6Ym9keUZv
ckludGVybmFsUmVxdWVzdCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2ZldGNoL0ZldGNoQm9keS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRj
aEJvZHkuaAppbmRleCA1NmYzZGZkYzg1NzFjMzE1MTEyZjI2NjVjNmZmZGE5NzVhOWRmMzkyLi42
MmQ5ZTVhNzg3ZDU4MzMwYjY2NGY4YWM1NmVmMjQ1MzJjZWY2ZGM1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmgKQEAgLTMzLDYgKzMzLDcgQEAKIAogI2luY2x1ZGUg
IkJsb2IuaCIKICNpbmNsdWRlICJET01Gb3JtRGF0YS5oIgorI2luY2x1ZGUgIkZldGNoQm9keUNv
bnN1bWVyLmgiCiAjaW5jbHVkZSAiRmV0Y2hMb2FkZXIuaCIKICNpbmNsdWRlICJKU0RPTVByb21p
c2UuaCIKIApAQCAtNzAsMzUgKzcxLDI3IEBAIHB1YmxpYzoKICAgICBGZXRjaEJvZHkoKSA9IGRl
ZmF1bHQ7CiAKICAgICB2b2lkIGxvYWRpbmdGYWlsZWQoKTsKLSAgICB2b2lkIGxvYWRlZEFzQXJy
YXlCdWZmZXIoUmVmUHRyPEFycmF5QnVmZmVyPiYmKTsKLSAgICB2b2lkIGxvYWRlZEFzVGV4dChT
dHJpbmcmJik7CisgICAgdm9pZCBsb2FkaW5nU3VjY2VlZGVkKCk7CiAKICAgICBSZWZQdHI8Rm9y
bURhdGE+IGJvZHlGb3JJbnRlcm5hbFJlcXVlc3QoKSBjb25zdDsKIAotICAgIGVudW0gY2xhc3Mg
VHlwZSB7IE5vbmUsIEFycmF5QnVmZmVyLCBMb2FkaW5nLCBUZXh0LCBCbG9iLCBGb3JtRGF0YSB9
OworICAgIGVudW0gY2xhc3MgVHlwZSB7IE5vbmUsIEFycmF5QnVmZmVyLCBCbG9iLCBGb3JtRGF0
YSwgVGV4dCwgTG9hZGluZywgTG9hZGVkLCBSZWFkYWJsZVN0cmVhbSB9OwogICAgIFR5cGUgdHlw
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQogCisgICAgRmV0Y2hCb2R5Q29uc3VtZXImIGNv
bnN1bWVyKCkgeyByZXR1cm4gbV9jb25zdW1lcjsgfQorCiBwcml2YXRlOgogICAgIEZldGNoQm9k
eShSZWY8QmxvYj4mJik7CiAgICAgRmV0Y2hCb2R5KFJlZjxET01Gb3JtRGF0YT4mJik7CiAgICAg
RmV0Y2hCb2R5KFN0cmluZyYmKTsKICAgICBGZXRjaEJvZHkoVHlwZSB0eXBlKSA6IG1fdHlwZSh0
eXBlKSB7IH0KIAotICAgIHN0cnVjdCBDb25zdW1lciB7Ci0gICAgICAgIGVudW0gY2xhc3MgVHlw
ZSB7IFRleHQsIEJsb2IsIEpTT04sIEFycmF5QnVmZmVyIH07Ci0KLSAgICAgICAgVHlwZSB0eXBl
OwotICAgICAgICBEZWZlcnJlZFdyYXBwZXIgcHJvbWlzZTsKLSAgICB9OwotICAgIHZvaWQgY29u
c3VtZShGZXRjaEJvZHlPd25lciYsIENvbnN1bWVyOjpUeXBlLCBEZWZlcnJlZFdyYXBwZXImJik7
CisgICAgdm9pZCBjb25zdW1lKEZldGNoQm9keU93bmVyJiwgRGVmZXJyZWRXcmFwcGVyJiYpOwog
CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGV4dHJhY3RGcm9tVGV4dCgpIGNvbnN0OwotICAgIHZvaWQg
Y29uc3VtZUFycmF5QnVmZmVyKENvbnN1bWVyOjpUeXBlLCBEZWZlcnJlZFdyYXBwZXImKTsKLSAg
ICB2b2lkIGNvbnN1bWVUZXh0KENvbnN1bWVyOjpUeXBlLCBEZWZlcnJlZFdyYXBwZXImKTsKLSAg
ICB2b2lkIGNvbnN1bWVCbG9iKEZldGNoQm9keU93bmVyJiwgQ29uc3VtZXI6OlR5cGUsIERlZmVy
cmVkV3JhcHBlciYmKTsKLSAgICBzdGF0aWMgRmV0Y2hMb2FkZXI6OlR5cGUgbG9hZGluZ1R5cGUo
Q29uc3VtZXI6OlR5cGUpOwotICAgIHN0YXRpYyB2b2lkIGZ1bGZpbGxUZXh0UHJvbWlzZShGZXRj
aEJvZHk6OkNvbnN1bWVyOjpUeXBlLCBjb25zdCBTdHJpbmcmLCBEZWZlcnJlZFdyYXBwZXImKTsK
LSAgICBzdGF0aWMgdm9pZCBmdWxmaWxsQXJyYXlCdWZmZXJQcm9taXNlKEZldGNoQm9keTo6Q29u
c3VtZXI6OlR5cGUsIGNvbnN0IFN0cmluZyYsIERlZmVycmVkV3JhcHBlciYpOworICAgIHZvaWQg
Y29uc3VtZUFycmF5QnVmZmVyKERlZmVycmVkV3JhcHBlciYpOworICAgIHZvaWQgY29uc3VtZVRl
eHQoRGVmZXJyZWRXcmFwcGVyJik7CisgICAgdm9pZCBjb25zdW1lQmxvYihGZXRjaEJvZHlPd25l
ciYsIERlZmVycmVkV3JhcHBlciYmKTsKIAogICAgIFR5cGUgbV90eXBlIHsgVHlwZTo6Tm9uZSB9
OwogICAgIFN0cmluZyBtX21pbWVUeXBlOwpAQCAtMTA5LDcgKzEwMiw4IEBAIHByaXZhdGU6CiAg
ICAgUmVmUHRyPEFycmF5QnVmZmVyPiBtX2RhdGE7CiAgICAgU3RyaW5nIG1fdGV4dDsKIAotICAg
IE9wdGlvbmFsPENvbnN1bWVyPiBtX2NvbnN1bWVyOworICAgIEZldGNoQm9keUNvbnN1bWVyIG1f
Y29uc3VtZXIgeyBGZXRjaEJvZHlDb25zdW1lcjo6VHlwZTo6Tm9uZSB9OworICAgIE9wdGlvbmFs
PERlZmVycmVkV3JhcHBlcj4gbV9jb25zdW1lUHJvbWlzZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hC
b2R5Q29uc3VtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlD
b25zdW1lci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDkzMjUxYmY5NGNkMzQyN2Y2NzlmZDYyZWFkZTRlOGJh
MDAyMzQ2NwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gv
RmV0Y2hCb2R5Q29uc3VtZXIuY3BwCkBAIC0wLDAgKzEsMTQwIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE2IEFwcGxlIEluYy4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCwgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSByZXF1aXJlZCB0byBiZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YKKyAq
ICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBw
cm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUgorICogQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTAorICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyAqIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSCisgKiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorICogT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IkZldGNoQm9keUNvbnN1bWVyLmgiCisKKyNpZiBFTkFCTEUoRkVUQ0hfQVBJKQorCisjaW5jbHVk
ZSAiSlNCbG9iLmgiCisjaW5jbHVkZSAiSlNET01Qcm9taXNlLmgiCisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworc3RhdGljIGlubGluZSBSZWY8QmxvYj4gYmxvYkZyb21EYXRhKGNvbnN0IHVuc2ln
bmVkIGNoYXIqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlw
ZSkKK3sKKyAgICBWZWN0b3I8dWludDhfdD4gdmFsdWUobGVuZ3RoKTsKKyAgICBtZW1jcHkodmFs
dWUuZGF0YSgpLCBkYXRhLCBsZW5ndGgpOworICAgIHJldHVybiBCbG9iOjpjcmVhdGUoV1RGTW92
ZSh2YWx1ZSksIGNvbnRlbnRUeXBlKTsKK30KKwordm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6cmVz
b2x2ZVdpdGhEYXRhKERlZmVycmVkV3JhcHBlciYgcHJvbWlzZSwgY29uc3QgdW5zaWduZWQgY2hh
ciogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKQoreworICAgIHN3aXRjaCAobV90eXBlKSB7CisgICAg
Y2FzZSBUeXBlOjpBcnJheUJ1ZmZlcjoKKyAgICAgICAgZnVsZmlsbFByb21pc2VXaXRoQXJyYXlC
dWZmZXIocHJvbWlzZSwgZGF0YSwgbGVuZ3RoKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2Ug
VHlwZTo6QmxvYjoKKyAgICAgICAgcHJvbWlzZS5yZXNvbHZlV2l0aE5ld2x5Q3JlYXRlZChibG9i
RnJvbURhdGEoZGF0YSwgbGVuZ3RoLCBtX2NvbnRlbnRUeXBlKSk7CisgICAgICAgIHJldHVybjsK
KyAgICBjYXNlIFR5cGU6OkpTT046CisgICAgICAgIGZ1bGZpbGxQcm9taXNlV2l0aEpTT04ocHJv
bWlzZSwgU3RyaW5nKGRhdGEsIGxlbmd0aCkpOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBU
eXBlOjpUZXh0OgorICAgICAgICBwcm9taXNlLnJlc29sdmUoU3RyaW5nKGRhdGEsIGxlbmd0aCkp
OworICAgICAgICByZXR1cm47CisgICAgY2FzZSBUeXBlOjpOb25lOgorICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KK30KKwordm9pZCBGZXRjaEJv
ZHlDb25zdW1lcjo6cmVzb2x2ZShEZWZlcnJlZFdyYXBwZXImIHByb21pc2UpCit7CisgICAgQVNT
RVJUKG1fdHlwZSAhPSBUeXBlOjpOb25lKTsKKyAgICBzd2l0Y2ggKG1fdHlwZSkgeworICAgIGNh
c2UgVHlwZTo6QXJyYXlCdWZmZXI6CisgICAgICAgIGZ1bGZpbGxQcm9taXNlV2l0aEFycmF5QnVm
ZmVyKHByb21pc2UsIHRha2VBc0FycmF5QnVmZmVyKCkuZ2V0KCkpOworICAgICAgICByZXR1cm47
CisgICAgY2FzZSBUeXBlOjpCbG9iOgorICAgICAgICBwcm9taXNlLnJlc29sdmVXaXRoTmV3bHlD
cmVhdGVkKHRha2VBc0Jsb2IoKSk7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIFR5cGU6OkpT
T046CisgICAgICAgIGZ1bGZpbGxQcm9taXNlV2l0aEpTT04ocHJvbWlzZSwgdGFrZUFzVGV4dCgp
KTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgVHlwZTo6VGV4dDoKKyAgICAgICAgcHJvbWlz
ZS5yZXNvbHZlKHRha2VBc1RleHQoKSk7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIFR5cGU6
Ok5vbmU6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorfQorCit2b2lkIEZldGNoQm9keUNvbnN1bWVyOjphcHBlbmQoY29uc3QgY2hhciogZGF0
YSwgdW5zaWduZWQgbGVuZ3RoKQoreworICAgIGlmICghbV9idWZmZXIpIHsKKyAgICAgICAgbV9i
dWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLCBsZW5ndGgpOworICAgICAgICByZXR1
cm47CisgICAgfQorICAgIG1fYnVmZmVyLT5hcHBlbmQoZGF0YSwgbGVuZ3RoKTsKK30KKwordm9p
ZCBGZXRjaEJvZHlDb25zdW1lcjo6YXBwZW5kKGNvbnN0IHVuc2lnbmVkIGNoYXIqIGRhdGEsIHVu
c2lnbmVkIGxlbmd0aCkKK3sKKyAgICBhcHBlbmQocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFy
Kj4oZGF0YSksIGxlbmd0aCk7Cit9CisKK1JlZlB0cjxTaGFyZWRCdWZmZXI+IEZldGNoQm9keUNv
bnN1bWVyOjp0YWtlRGF0YSgpCit7CisgICAgcmV0dXJuIFdURk1vdmUobV9idWZmZXIpOworfQor
CitSZWZQdHI8SlNDOjpBcnJheUJ1ZmZlcj4gRmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VBc0FycmF5
QnVmZmVyKCkKK3sKKyAgICBpZiAoIW1fYnVmZmVyKQorICAgICAgICByZXR1cm4gQXJyYXlCdWZm
ZXI6OnRyeUNyZWF0ZShudWxscHRyLCAwKTsKKworICAgIGF1dG8gYXJyYXlCdWZmZXIgPSBtX2J1
ZmZlci0+Y3JlYXRlQXJyYXlCdWZmZXIoKTsKKyAgICBtX2J1ZmZlciA9IG51bGxwdHI7CisgICAg
cmV0dXJuIGFycmF5QnVmZmVyOworfQorCitSZWY8QmxvYj4gRmV0Y2hCb2R5Q29uc3VtZXI6OnRh
a2VBc0Jsb2IoKQoreworICAgIEFTU0VSVChtX2J1ZmZlcik7CisgICAgaWYgKCFtX2J1ZmZlcikK
KyAgICAgICAgcmV0dXJuIEJsb2I6OmNyZWF0ZSgpOworCisgICAgLy8gRklYTUU6IFdlIHNob3Vs
ZCB0cnkgdG8gbW92ZSBtX2J1ZmZlciB0byBCbG9iIHdpdGhvdXQgZG9pbmcgZXh0cmEgY29weS4K
KyAgICByZXR1cm4gYmxvYkZyb21EYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdW5zaWduZWQg
Y2hhcio+KG1fYnVmZmVyLT5kYXRhKCkpLCBtX2J1ZmZlci0+c2l6ZSgpLCBtX2NvbnRlbnRUeXBl
KTsKK30KKworU3RyaW5nIEZldGNoQm9keUNvbnN1bWVyOjp0YWtlQXNUZXh0KCkKK3sKKyAgICBp
ZiAoIW1fYnVmZmVyKQorICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisKKyAgICBhdXRvIHRleHQg
PSBTdHJpbmcobV9idWZmZXItPmRhdGEoKSwgbV9idWZmZXItPnNpemUoKSk7CisgICAgbV9idWZm
ZXIgPSBudWxscHRyOworICAgIHJldHVybiB0ZXh0OworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoRkVUQ0hfQVBJKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZhYTFmZTdkMjhh
YzdhNmNhZTMyYWVjNzQ0NDVkOTgwODEzNDRiM2IKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmgKQEAgLTAsMCArMSw3MyBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQsIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgcmVxdWlyZWQgdG8gYmUgbWV0OgorICoKKyAqIDEuICBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgSW5jLiBu
b3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0
d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
CisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKKyAqIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyAqIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SCisgKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgorICogQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyAq
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25j
ZQorCisjaWYgRU5BQkxFKEZFVENIX0FQSSkKKworI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEJsb2I7CitjbGFzcyBEZWZlcnJlZFdyYXBw
ZXI7CisKK2NsYXNzIEZldGNoQm9keUNvbnN1bWVyIHsKK3B1YmxpYzoKKyAgICAvLyBUeXBlIGlz
IHVzZWQgaW4gRmV0Y2hSZXNwb25zZS5qcyBhbmQgc2hvdWxkIGJlIGtlcHQgc3luY2hyb25pemVk
IHdpdGggaXQuCisgICAgZW51bSBjbGFzcyBUeXBlIHsgTm9uZSwgQXJyYXlCdWZmZXIsIEJsb2Is
IEpTT04sIFRleHQgfTsKKworICAgIEZldGNoQm9keUNvbnN1bWVyKFR5cGUgdHlwZSkgOiBtX3R5
cGUodHlwZSkgeyB9CisKKyAgICB2b2lkIGFwcGVuZChjb25zdCBjaGFyKiBkYXRhLCB1bnNpZ25l
ZCk7CisgICAgdm9pZCBhcHBlbmQoY29uc3QgdW5zaWduZWQgY2hhciogZGF0YSwgdW5zaWduZWQp
OworCisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdGFrZURhdGEoKTsKKyAgICBSZWZQdHI8SlND
OjpBcnJheUJ1ZmZlcj4gdGFrZUFzQXJyYXlCdWZmZXIoKTsKKyAgICBSZWY8QmxvYj4gdGFrZUFz
QmxvYigpOworICAgIFN0cmluZyB0YWtlQXNUZXh0KCk7CisKKyAgICB2b2lkIHNldENvbnRlbnRU
eXBlKGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpIHsgbV9jb250ZW50VHlwZSA9IGNvbnRlbnRU
eXBlOyB9CisgICAgdm9pZCBzZXRUeXBlKFR5cGUgdHlwZSkgeyBtX3R5cGUgPSB0eXBlOyB9CisK
KyAgICB2b2lkIGNsZWFuKCkgeyBtX2J1ZmZlciA9IG51bGxwdHI7IH0KKworICAgIHZvaWQgcmVz
b2x2ZShEZWZlcnJlZFdyYXBwZXImKTsKKyAgICB2b2lkIHJlc29sdmVXaXRoRGF0YShEZWZlcnJl
ZFdyYXBwZXImLCBjb25zdCB1bnNpZ25lZCBjaGFyKiwgdW5zaWduZWQpOworCisgICAgYm9vbCBo
YXNEYXRhKCkgY29uc3QgeyByZXR1cm4gISFtX2J1ZmZlcjsgfQorCitwcml2YXRlOgorICAgIFR5
cGUgbV90eXBlOworICAgIFN0cmluZyBtX2NvbnRlbnRUeXBlOworICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IG1fYnVmZmVyOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYg
Ly8gRU5BQkxFKEZFVENIX0FQSSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZmV0Y2gvRmV0Y2hCb2R5T3duZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9G
ZXRjaEJvZHlPd25lci5jcHAKaW5kZXggMGY0NTc5NGEwNjllMmVlNjA4YjE4Mzc4ZTNkZjFmNGJj
ZTczNTNhNS4uOTY0YmU3NzExMDRkYTY3MTk3ZDNkNTA0YzY5ODgxNDE4Y2M4NTY4OSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlPd25lci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlPd25lci5jcHAKQEAgLTEz
OCw3ICsxMzgsNyBAQCB2b2lkIEZldGNoQm9keU93bmVyOjp0ZXh0KERlZmVycmVkV3JhcHBlciYm
IHByb21pc2UpCiAgICAgbV9ib2R5LnRleHQoKnRoaXMsIFdURk1vdmUocHJvbWlzZSkpOwogfQog
Ci12b2lkIEZldGNoQm9keU93bmVyOjpsb2FkQmxvYihCbG9iJiBibG9iLCBGZXRjaExvYWRlcjo6
VHlwZSB0eXBlKQordm9pZCBGZXRjaEJvZHlPd25lcjo6bG9hZEJsb2IoQmxvYiYgYmxvYiwgRmV0
Y2hCb2R5Q29uc3VtZXIqIGNvbnN1bWVyKQogewogICAgIC8vIENhbiBvbmx5IGJlIGNhbGxlZCBv
bmNlIGZvciBhIGJvZHkgaW5zdGFuY2UuCiAgICAgQVNTRVJUKGlzRGlzdHVyYmVkKCkpOwpAQCAt
MTUwLDcgKzE1MCw3IEBAIHZvaWQgRmV0Y2hCb2R5T3duZXI6OmxvYWRCbG9iKEJsb2ImIGJsb2Is
IEZldGNoTG9hZGVyOjpUeXBlIHR5cGUpCiAgICAgfQogCiAgICAgbV9ibG9iTG9hZGVyID0geyAq
dGhpcyB9OwotICAgIG1fYmxvYkxvYWRlci0+bG9hZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxGZXRj
aExvYWRlcj4odHlwZSwgKm1fYmxvYkxvYWRlcik7CisgICAgbV9ibG9iTG9hZGVyLT5sb2FkZXIg
PSBzdGQ6Om1ha2VfdW5pcXVlPEZldGNoTG9hZGVyPigqbV9ibG9iTG9hZGVyLCBjb25zdW1lcik7
CiAKICAgICBtX2Jsb2JMb2FkZXItPmxvYWRlci0+c3RhcnQoKnNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKSwgYmxvYik7CiAgICAgaWYgKCFtX2Jsb2JMb2FkZXItPmxvYWRlci0+aXNTdGFydGVkKCkp
IHsKQEAgLTE2OSwxMSArMTY5LDYgQEAgdm9pZCBGZXRjaEJvZHlPd25lcjo6ZmluaXNoQmxvYkxv
YWRpbmcoKQogICAgIHVuc2V0UGVuZGluZ0FjdGl2aXR5KHRoaXMpOwogfQogCi12b2lkIEZldGNo
Qm9keU93bmVyOjpsb2FkZWRCbG9iQXNUZXh0KFN0cmluZyYmIHRleHQpCi17Ci0gICAgbV9ib2R5
LmxvYWRlZEFzVGV4dChXVEZNb3ZlKHRleHQpKTsKLX0KLQogdm9pZCBGZXRjaEJvZHlPd25lcjo6
YmxvYkxvYWRpbmdTdWNjZWVkZWQoKQogewogICAgIEFTU0VSVChtX2JvZHkudHlwZSgpID09IEZl
dGNoQm9keTo6VHlwZTo6QmxvYik7CkBAIC0xODQsNyArMTc5LDcgQEAgdm9pZCBGZXRjaEJvZHlP
d25lcjo6YmxvYkxvYWRpbmdTdWNjZWVkZWQoKQogICAgICAgICBtX3JlYWRhYmxlU3RyZWFtU291
cmNlID0gbnVsbHB0cjsKICAgICB9CiAjZW5kaWYKLQorICAgIG1fYm9keS5sb2FkaW5nU3VjY2Vl
ZGVkKCk7CiAgICAgZmluaXNoQmxvYkxvYWRpbmcoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlPd25lci5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlPd25lci5oCmluZGV4IDA2YTIxMjY2NWMzOWZjMzkwN2Qz
OGUxM2Y0Y2MxMzNjYzg3MmM3YjQuLjg3YjcyZjBhNDk5ZjkzMzZhNDBmYTQ4NjMzYTE4OTA5MjIz
YjFkOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5
T3duZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keU93bmVy
LmgKQEAgLTUyLDcgKzUyLDcgQEAgcHVibGljOgogICAgIHZvaWQganNvbihEZWZlcnJlZFdyYXBw
ZXImJik7CiAgICAgdm9pZCB0ZXh0KERlZmVycmVkV3JhcHBlciYmKTsKIAotICAgIHZvaWQgbG9h
ZEJsb2IoQmxvYiYsIEZldGNoTG9hZGVyOjpUeXBlKTsKKyAgICB2b2lkIGxvYWRCbG9iKEJsb2Im
LCBGZXRjaEJvZHlDb25zdW1lciopOwogCiAgICAgYm9vbCBpc0FjdGl2ZSgpIGNvbnN0IHsgcmV0
dXJuICEhbV9ibG9iTG9hZGVyOyB9CiAKQEAgLTY3LDggKzY3LDYgQEAgcHJvdGVjdGVkOgogCiBw
cml2YXRlOgogICAgIC8vIEJsb2IgbG9hZGluZyByb3V0aW5lcwotICAgIHZvaWQgbG9hZGVkQmxv
YkFzVGV4dChTdHJpbmcmJik7Ci0gICAgdm9pZCBsb2FkZWRCbG9iQXNBcnJheUJ1ZmZlcihSZWZQ
dHI8QXJyYXlCdWZmZXI+JiYgYnVmZmVyKSB7IG1fYm9keS5sb2FkZWRBc0FycmF5QnVmZmVyKFdU
Rk1vdmUoYnVmZmVyKSk7IH0KICAgICB2b2lkIGJsb2JDaHVuayhjb25zdCBjaGFyKiwgc2l6ZV90
KTsKICAgICB2b2lkIGJsb2JMb2FkaW5nU3VjY2VlZGVkKCk7CiAgICAgdm9pZCBibG9iTG9hZGlu
Z0ZhaWxlZCgpOwpAQCAtNzgsOCArNzYsNiBAQCBwcml2YXRlOgogICAgICAgICBCbG9iTG9hZGVy
KEZldGNoQm9keU93bmVyJik7CiAKICAgICAgICAgLy8gRmV0Y2hMb2FkZXJDbGllbnQgQVBJCi0g
ICAgICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZ0FzVGV4dChTdHJpbmcmJiB0ZXh0KSBmaW5hbCB7
IG93bmVyLmxvYWRlZEJsb2JBc1RleHQoV1RGTW92ZSh0ZXh0KSk7IH0KLSAgICAgICAgdm9pZCBk
aWRGaW5pc2hMb2FkaW5nQXNBcnJheUJ1ZmZlcihSZWZQdHI8QXJyYXlCdWZmZXI+JiYgYnVmZmVy
KSBmaW5hbCB7IG93bmVyLmxvYWRlZEJsb2JBc0FycmF5QnVmZmVyKFdURk1vdmUoYnVmZmVyKSk7
IH0KICAgICAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYpIGZpbmFsOwogICAgICAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIqIGRhdGEs
IHNpemVfdCBzaXplKSBmaW5hbCB7IG93bmVyLmJsb2JDaHVuayhkYXRhLCBzaXplKTsgfQogICAg
ICAgICB2b2lkIGRpZEZhaWwoKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZmV0Y2gvRmV0Y2hJbnRlcm5hbHMuanMgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Zl
dGNoL0ZldGNoSW50ZXJuYWxzLmpzCmluZGV4IDQ1MmVjNzYzNTM1YTgwOWVhOGQ4Mjk4ZTA2OTM1
ZWU1YjMwNzZlNGIuLmQ3NTAwNGUyZjgwODViMTVjNzEwMDcwMDE1YmVkZDFiNWFiYjIyYzYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hJbnRlcm5hbHMuanMK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEludGVybmFscy5qcwpAQCAt
NTEsMyArNTEsMjcgQEAgZnVuY3Rpb24gZmlsbEZldGNoSGVhZGVycyhoZWFkZXJzLCBoZWFkZXJz
SW5pdCkKICAgICAgICAgQEhlYWRlcnMucHJvdG90eXBlLkBhcHBlbmRGcm9tSlMuQGNhbGwoaGVh
ZGVycywgbmFtZSwgaGVhZGVyc0luaXRbbmFtZV0pOwogICAgIH0KIH0KKworZnVuY3Rpb24gY29u
c3VtZVN0cmVhbShyZXNwb25zZSwgdHlwZSkKK3sKKyAgICBAYXNzZXJ0KHJlc3BvbnNlIGluc3Rh
bmNlb2YgQFJlc3BvbnNlKTsKKyAgICBAYXNzZXJ0KHJlc3BvbnNlLkBib2R5IGluc3RhbmNlb2Yg
QFJlYWRhYmxlU3RyZWFtKTsKKworICAgIGlmIChAaXNSZWFkYWJsZVN0cmVhbURpc3R1cmJlZChy
ZXNwb25zZS5AYm9keSkpCisgICAgICAgIHJldHVybiBAUHJvbWlzZS5AcmVqZWN0KG5ldyBAVHlw
ZUVycm9yKCJDYW5ub3QgY29uc3VtZSBhIGRpc3R1cmJlZCBSZXNwb25zZSBib2R5IFJlYWRhYmxl
U3RyZWFtIikpOworCisgICAgdHJ5IHsKKyAgICAgICAgbGV0IHJlYWRlciA9IG5ldyBAUmVhZGFi
bGVTdHJlYW1SZWFkZXIocmVzcG9uc2UuQGJvZHkpOworCisgICAgICAgIEBSZXNwb25zZS5wcm90
b3R5cGUuQHN0YXJ0Q29uc3VtaW5nU3RyZWFtLkBjYWxsKHJlc3BvbnNlLCB0eXBlKTsKKyAgICAg
ICAgbGV0IHB1bGwgPSAocmVzdWx0KSA9PiB7CisgICAgICAgICAgICBpZiAocmVzdWx0LmRvbmUp
CisgICAgICAgICAgICAgICAgcmV0dXJuIEBSZXNwb25zZS5wcm90b3R5cGUuQGZpbmlzaENvbnN1
bWluZ1N0cmVhbS5AY2FsbChyZXNwb25zZSk7CisgICAgICAgICAgICBAUmVzcG9uc2UucHJvdG90
eXBlLkBjb25zdW1lQ2h1bmsuQGNhbGwocmVzcG9uc2UsIHJlc3VsdC52YWx1ZSk7CisgICAgICAg
ICAgICByZXR1cm4gQFByb21pc2UucHJvdG90eXBlLkB0aGVuLkBjYWxsKEByZWFkRnJvbVJlYWRh
YmxlU3RyZWFtUmVhZGVyKHJlYWRlciksIHB1bGwpOworICAgICAgICB9CisgICAgICAgIHJldHVy
biBAUHJvbWlzZS5wcm90b3R5cGUuQHRoZW4uQGNhbGwoQHJlYWRGcm9tUmVhZGFibGVTdHJlYW1S
ZWFkZXIocmVhZGVyKSwgcHVsbCk7CisgICAgfSBjYXRjaChlKSB7CisgICAgICAgIHJldHVybiBA
UHJvbWlzZS5AcmVqZWN0KGUpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9m
ZXRjaC9GZXRjaExvYWRlci5jcHAKaW5kZXggMWIyM2YwNDllNjdiNDY3MWMxZTE2YTY4OWUxZGIy
YjQ0YWQxM2Y4MC4uZTYzYmMxYjJkMzNjMzJkMjFlNDlmOTlhNTcyMjY0NzMwMTUyNjJlYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlci5jcHAKQEAgLTg5LDI0
ICs4OSwyNiBAQCB2b2lkIEZldGNoTG9hZGVyOjpzdGFydChTY3JpcHRFeGVjdXRpb25Db250ZXh0
JiBjb250ZXh0LCBjb25zdCBGZXRjaFJlcXVlc3QmIHJlcQogICAgIG1faXNTdGFydGVkID0gbV9s
b2FkZXI7CiB9CiAKLUZldGNoTG9hZGVyOjpGZXRjaExvYWRlcihUeXBlIHR5cGUsIEZldGNoTG9h
ZGVyQ2xpZW50JiBjbGllbnQpCi0gICAgOiBtX3R5cGUodHlwZSkKLSAgICAsIG1fY2xpZW50KGNs
aWVudCkKK0ZldGNoTG9hZGVyOjpGZXRjaExvYWRlcihGZXRjaExvYWRlckNsaWVudCYgY2xpZW50
LCBGZXRjaEJvZHlDb25zdW1lciogY29uc3VtZXIpCisgICAgOiBtX2NsaWVudChjbGllbnQpCisg
ICAgLCBtX2NvbnN1bWVyKGNvbnN1bWVyKQogewogfQogCiB2b2lkIEZldGNoTG9hZGVyOjpzdG9w
KCkKIHsKLSAgICBtX2RhdGEgPSBudWxscHRyOworICAgIGlmIChtX2NvbnN1bWVyKQorICAgICAg
ICBtX2NvbnN1bWVyLT5jbGVhbigpOwogICAgIGlmIChtX2xvYWRlcikKICAgICAgICAgbV9sb2Fk
ZXItPmNhbmNlbCgpOwogfQogCiBSZWZQdHI8U2hhcmVkQnVmZmVyPiBGZXRjaExvYWRlcjo6c3Rh
cnRTdHJlYW1pbmcoKQogewotICAgIEFTU0VSVChtX3R5cGUgPT0gVHlwZTo6QXJyYXlCdWZmZXIp
OwotICAgIG1fdHlwZSA9IFR5cGU6OlN0cmVhbTsKLSAgICByZXR1cm4gV1RGTW92ZShtX2RhdGEp
OworICAgIEFTU0VSVChtX2NvbnN1bWVyKTsKKyAgICBhdXRvIGZpcnN0Q2h1bmsgPSBtX2NvbnN1
bWVyLT50YWtlRGF0YSgpOworICAgIG1fY29uc3VtZXIgPSBudWxscHRyOworICAgIHJldHVybiBm
aXJzdENodW5rOwogfQogCiB2b2lkIEZldGNoTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UodW5z
aWduZWQgbG9uZywgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCkBAIC0xMTQsMjkg
KzExNiwxNyBAQCB2b2lkIEZldGNoTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UodW5zaWduZWQg
bG9uZywgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcAogICAgIG1fY2xpZW50LmRpZFJlY2Vp
dmVSZXNwb25zZShyZXNwb25zZSk7CiB9CiAKLS8vIEZJWE1FOiBXZSBzaG91bGQgbWFrZSB0ZXh0
IGFuZCBibG9iIGNyZWF0aW9uIG1vcmUgZWZmaWNpZW50LgotLy8gV2UgbWlnaHQgYWxzbyB3YW50
IHRvIG1lcmdlIHRoaXMgY2xhc3Mgd2l0aCBGaWxlUmVhZGVyTG9hZGVyLgogdm9pZCBGZXRjaExv
YWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgY2hhciogdmFsdWUsIGludCBzaXplKQogewotICAg
IGlmIChtX3R5cGUgPT0gVHlwZTo6U3RyZWFtKSB7CisgICAgaWYgKCFtX2NvbnN1bWVyKSB7CiAg
ICAgICAgIG1fY2xpZW50LmRpZFJlY2VpdmVEYXRhKHZhbHVlLCBzaXplKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KLSAgICBpZiAoIW1fZGF0YSkgewotICAgICAgICBtX2RhdGEgPSBTaGFyZWRC
dWZmZXI6OmNyZWF0ZSh2YWx1ZSwgc2l6ZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAg
bV9kYXRhLT5hcHBlbmQodmFsdWUsIHNpemUpOworICAgIG1fY29uc3VtZXItPmFwcGVuZCh2YWx1
ZSwgc2l6ZSk7CiB9CiAKIHZvaWQgRmV0Y2hMb2FkZXI6OmRpZEZpbmlzaExvYWRpbmcodW5zaWdu
ZWQgbG9uZywgZG91YmxlKQogewotICAgIGlmIChtX3R5cGUgPT0gVHlwZTo6QXJyYXlCdWZmZXIp
Ci0gICAgICAgIG1fY2xpZW50LmRpZEZpbmlzaExvYWRpbmdBc0FycmF5QnVmZmVyKG1fZGF0YSA/
IG1fZGF0YS0+Y3JlYXRlQXJyYXlCdWZmZXIoKSA6IEFycmF5QnVmZmVyOjp0cnlDcmVhdGUobnVs
bHB0ciwgMCkpOwotICAgIGVsc2UgaWYgKG1fdHlwZSA9PSBUeXBlOjpUZXh0KQotICAgICAgICBt
X2NsaWVudC5kaWRGaW5pc2hMb2FkaW5nQXNUZXh0KG1fZGF0YSA/IFRleHRSZXNvdXJjZURlY29k
ZXI6OmNyZWF0ZShBU0NJSUxpdGVyYWwoInRleHQvcGxhaW4iKSwgIlVURi04IiktPmRlY29kZUFu
ZEZsdXNoKG1fZGF0YS0+ZGF0YSgpLCBtX2RhdGEtPnNpemUoKSk6IFN0cmluZygpKTsKLSAgICBt
X2RhdGEgPSBudWxscHRyOwotCiAgICAgbV9jbGllbnQuZGlkU3VjY2VlZCgpOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyLmgKaW5kZXggZDQ3M2ZmMTc0NTFm
Y2E1YzFhNzEzZmI1NDNiZDBiNmEwYjFkZTAyYi4uZGJiODJmYmViZDU1OWU3N2QxY2UxYjYxNmJj
NmQwYjRmMWFlZjNjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9G
ZXRjaExvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hMb2Fk
ZXIuaApAQCAtMjYsMTIgKzI2LDExIEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYg
RmV0Y2hMb2FkZXJfaAotI2RlZmluZSBGZXRjaExvYWRlcl9oCisjcHJhZ21hIG9uY2UKIAogI2lm
IEVOQUJMRShGRVRDSF9BUEkpCiAKLSNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKKyNpbmNsdWRl
ICJGZXRjaEJvZHlDb25zdW1lci5oIgogI2luY2x1ZGUgIlRocmVhZGFibGVMb2FkZXIuaCIKICNp
bmNsdWRlICJUaHJlYWRhYmxlTG9hZGVyQ2xpZW50LmgiCiAKQEAgLTQ0LDkgKzQzLDcgQEAgY2xh
c3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKIAogY2xhc3MgRmV0Y2hMb2FkZXIgZmluYWwgOiBw
dWJsaWMgVGhyZWFkYWJsZUxvYWRlckNsaWVudCB7CiBwdWJsaWM6Ci0gICAgZW51bSBjbGFzcyBU
eXBlIHsgQXJyYXlCdWZmZXIsIFN0cmVhbSwgVGV4dCB9OwotCi0gICAgRmV0Y2hMb2FkZXIoVHlw
ZSwgRmV0Y2hMb2FkZXJDbGllbnQmKTsKKyAgICBGZXRjaExvYWRlcihGZXRjaExvYWRlckNsaWVu
dCYsIEZldGNoQm9keUNvbnN1bWVyKik7CiAKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzdGFy
dFN0cmVhbWluZygpOwogCkBAIC02MywxOCArNjAsMTMgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRp
ZEZpbmlzaExvYWRpbmcodW5zaWduZWQgbG9uZywgZG91YmxlKSBmaW5hbDsKICAgICB2b2lkIGRp
ZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYpIGZpbmFsOwogCi0gICAgVHlwZSB0eXBlKCkgY29u
c3QgeyByZXR1cm4gbV90eXBlOyB9Ci0KIHByaXZhdGU6Ci0gICAgVHlwZSBtX3R5cGUgeyBUeXBl
OjpBcnJheUJ1ZmZlciB9OwogICAgIEZldGNoTG9hZGVyQ2xpZW50JiBtX2NsaWVudDsKICAgICBS
ZWZQdHI8VGhyZWFkYWJsZUxvYWRlcj4gbV9sb2FkZXI7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gbV9kYXRhOworICAgIEZldGNoQm9keUNvbnN1bWVyKiBtX2NvbnN1bWVyOwogICAgIGJvb2wg
bV9pc1N0YXJ0ZWQgeyBmYWxzZSB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAj
ZW5kaWYgLy8gRU5BQkxFKEZFVENIX0FQSSkKLQotI2VuZGlmIC8vIEZldGNoTG9hZGVyX2gKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXJDbGllbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXJDbGllbnQuaAppbmRl
eCBkMDlmYWQ1M2UyN2U2ZDhhYzIyYWRiN2NhOWY0NTEwMjc4ZGE0MTUwLi5lODhlOTk0MThjZDk5
MTRhMWVlNDgxODc3ZDYxYWRjYjZlMDRlYWY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9mZXRjaC9GZXRjaExvYWRlckNsaWVudC5oCkBAIC00Nyw4ICs0Nyw2IEBAIHB1YmxpYzoK
IAogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYpIHsgfQogCi0gICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWRpbmdBc1RleHQoU3Ry
aW5nJiYpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hMb2FkaW5nQXNBcnJheUJ1ZmZl
cihSZWZQdHI8SlNDOjpBcnJheUJ1ZmZlcj4mJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZFJl
Y2VpdmVEYXRhKGNvbnN0IGNoYXIqLCBzaXplX3QpIHsgfQogCiAgICAgdmlydHVhbCB2b2lkIGRp
ZFN1Y2NlZWQoKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNo
L0ZldGNoUmVzcG9uc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJl
c3BvbnNlLmNwcAppbmRleCBjMmU4YWJhYWIxMWEyMDE1NDBkOGJkMTI4NTBlNTFlNzBiMmVhMzAx
Li42NzM4ZmEzMTgzYzk2MTE1OTExMmNlMThjZDA1MGNiODgwZGE4NDAzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAKQEAgLTM0LDYgKzM0LDcg
QEAKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCiAjaW5jbHVkZSAiRmV0Y2hSZXF1ZXN0Lmgi
CiAjaW5jbHVkZSAiSFRUUFBhcnNlcnMuaCIKKyNpbmNsdWRlICJKU0Jsb2IuaCIKICNpbmNsdWRl
ICJKU0ZldGNoUmVzcG9uc2UuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0Lmgi
CiAKQEAgLTkzLDEzICs5NCwxMSBAQCBGZXRjaFJlc3BvbnNlOjpGZXRjaFJlc3BvbnNlKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIEZldGNoQm9keSYmIGJvZHksCiB7CiB9CiAKLVJl
ZlB0cjxGZXRjaFJlc3BvbnNlPiBGZXRjaFJlc3BvbnNlOjpjbG9uZShTY3JpcHRFeGVjdXRpb25D
b250ZXh0JiBjb250ZXh0LCBFeGNlcHRpb25Db2RlJiBlYykKK1JlZjxGZXRjaFJlc3BvbnNlPiBG
ZXRjaFJlc3BvbnNlOjpjbG9uZUZvckpTKCkKIHsKLSAgICBpZiAoaXNEaXN0dXJiZWQoKSkgewot
ICAgICAgICBlYyA9IFR5cGVFcnJvcjsKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgfQot
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZldGNoUmVzcG9uc2UoY29udGV4dCwgRmV0Y2hCb2R5
KG1fYm9keSksIEZldGNoSGVhZGVyczo6Y3JlYXRlKGhlYWRlcnMoKSksIFJlc291cmNlUmVzcG9u
c2UobV9yZXNwb25zZSkpKTsKKyAgICBBU1NFUlQoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsK
KyAgICBBU1NFUlQoIWlzRGlzdHVyYmVkKCkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZl
dGNoUmVzcG9uc2UoKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgRmV0Y2hCb2R5KG1fYm9keSks
IEZldGNoSGVhZGVyczo6Y3JlYXRlKGhlYWRlcnMoKSksIFJlc291cmNlUmVzcG9uc2UobV9yZXNw
b25zZSkpKTsKIH0KIAogdm9pZCBGZXRjaFJlc3BvbnNlOjpmZXRjaChTY3JpcHRFeGVjdXRpb25D
b250ZXh0JiBjb250ZXh0LCBGZXRjaFJlcXVlc3QmIHJlcXVlc3QsIEZldGNoUHJvbWlzZSYmIHBy
b21pc2UpCkBAIC0xMzAsNiArMTI5LDggQEAgdm9pZCBGZXRjaFJlc3BvbnNlOjpCb2R5TG9hZGVy
OjpkaWRTdWNjZWVkKCkKICAgICAgICAgbV9yZXNwb25zZS5tX3JlYWRhYmxlU3RyZWFtU291cmNl
ID0gbnVsbHB0cjsKICAgICB9CiAjZW5kaWYKKyAgICBtX3Jlc3BvbnNlLm1fYm9keS5sb2FkaW5n
U3VjY2VlZGVkKCk7CisKICAgICBpZiAobV9sb2FkZXItPmlzU3RhcnRlZCgpKQogICAgICAgICBt
X3Jlc3BvbnNlLm1fYm9keUxvYWRlciA9IE51bGxvcHQ7CiAgICAgbV9yZXNwb25zZS51bnNldFBl
bmRpbmdBY3Rpdml0eSgmbV9yZXNwb25zZSk7CkBAIC0xODcsMTQgKzE4OCw5IEBAIHZvaWQgRmV0
Y2hSZXNwb25zZTo6Qm9keUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgY2hhciogZGF0YSwg
c2l6ZV90IHNpemUpCiAjZW5kaWYKIH0KIAotdm9pZCBGZXRjaFJlc3BvbnNlOjpCb2R5TG9hZGVy
OjpkaWRGaW5pc2hMb2FkaW5nQXNBcnJheUJ1ZmZlcihSZWZQdHI8QXJyYXlCdWZmZXI+JiYgYnVm
ZmVyKQotewotICAgIG1fcmVzcG9uc2UuYm9keSgpLmxvYWRlZEFzQXJyYXlCdWZmZXIoV1RGTW92
ZShidWZmZXIpKTsKLX0KLQogYm9vbCBGZXRjaFJlc3BvbnNlOjpCb2R5TG9hZGVyOjpzdGFydChT
Y3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBjb25zdCBGZXRjaFJlcXVlc3QmIHJlcXVl
c3QpCiB7Ci0gICAgbV9sb2FkZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEZldGNoTG9hZGVyPihGZXRj
aExvYWRlcjo6VHlwZTo6QXJyYXlCdWZmZXIsICp0aGlzKTsKKyAgICBtX2xvYWRlciA9IHN0ZDo6
bWFrZV91bmlxdWU8RmV0Y2hMb2FkZXI+KCp0aGlzLCAmbV9yZXNwb25zZS5tX2JvZHkuY29uc3Vt
ZXIoKSk7CiAgICAgbV9sb2FkZXItPnN0YXJ0KGNvbnRleHQsIHJlcXVlc3QpOwogICAgIHJldHVy
biBtX2xvYWRlci0+aXNTdGFydGVkKCk7CiB9CkBAIC0yMDUsNyArMjAxLDQ2IEBAIHZvaWQgRmV0
Y2hSZXNwb25zZTo6Qm9keUxvYWRlcjo6c3RvcCgpCiAgICAgICAgIG1fbG9hZGVyLT5zdG9wKCk7
CiB9CiAKK3ZvaWQgRmV0Y2hSZXNwb25zZTo6Y29uc3VtZSh1bnNpZ25lZCB0eXBlLCBEZWZlcnJl
ZFdyYXBwZXImJiB3cmFwcGVyKQoreworICAgIEFTU0VSVCh0eXBlIDw9IHN0YXRpY19jYXN0PHVu
c2lnbmVkPihGZXRjaEJvZHlDb25zdW1lcjo6VHlwZTo6VGV4dCkpOworCisgICAgc3dpdGNoIChz
dGF0aWNfY2FzdDxGZXRjaEJvZHlDb25zdW1lcjo6VHlwZT4odHlwZSkpIHsKKyAgICBjYXNlIEZl
dGNoQm9keUNvbnN1bWVyOjpUeXBlOjpBcnJheUJ1ZmZlcjoKKyAgICAgICAgYXJyYXlCdWZmZXIo
V1RGTW92ZSh3cmFwcGVyKSk7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIEZldGNoQm9keUNv
bnN1bWVyOjpUeXBlOjpCbG9iOgorICAgICAgICBibG9iKFdURk1vdmUod3JhcHBlcikpOworICAg
ICAgICByZXR1cm47CisgICAgY2FzZSBGZXRjaEJvZHlDb25zdW1lcjo6VHlwZTo6SlNPTjoKKyAg
ICAgICAganNvbihXVEZNb3ZlKHdyYXBwZXIpKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2Ug
RmV0Y2hCb2R5Q29uc3VtZXI6OlR5cGU6OlRleHQ6CisgICAgICAgIHRleHQoV1RGTW92ZSh3cmFw
cGVyKSk7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIEZldGNoQm9keUNvbnN1bWVyOjpUeXBl
OjpOb25lOgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KK30KKwogI2lmIEVOQUJMRShTVFJFQU1TX0FQSSkKK3ZvaWQgRmV0Y2hSZXNwb25zZTo6
c3RhcnRDb25zdW1pbmdTdHJlYW0odW5zaWduZWQgdHlwZSkKK3sKKyAgICBtX2lzRGlzdHVyYmVk
ID0gdHJ1ZTsKKyAgICBtX2NvbnN1bWVyLnNldFR5cGUoc3RhdGljX2Nhc3Q8RmV0Y2hCb2R5Q29u
c3VtZXI6OlR5cGU+KHR5cGUpKTsKK30KKwordm9pZCBGZXRjaFJlc3BvbnNlOjpjb25zdW1lQ2h1
bmsoUmVmPEpTQzo6VWludDhBcnJheT4mJiBjaHVuaykKK3sKKyAgICBtX2NvbnN1bWVyLmFwcGVu
ZChjaHVuay0+ZGF0YSgpLCBjaHVuay0+Ynl0ZUxlbmd0aCgpKTsKK30KKwordm9pZCBGZXRjaFJl
c3BvbnNlOjpmaW5pc2hDb25zdW1pbmdTdHJlYW0oRGVmZXJyZWRXcmFwcGVyJiYgcHJvbWlzZSkK
K3sKKyAgICBtX2NvbnN1bWVyLnJlc29sdmUocHJvbWlzZSk7Cit9CisKIHZvaWQgRmV0Y2hSZXNw
b25zZTo6Y29uc3VtZUJvZHlBc1N0cmVhbSgpCiB7CiAgICAgQVNTRVJUKG1fcmVhZGFibGVTdHJl
YW1Tb3VyY2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRj
aFJlc3BvbnNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2Uu
aAppbmRleCA1NzNjMjcwOGQ4ZGM5NGRkYTgxMDViNGM5NjBjNTE1OTY4NTQyMDRmLi44NDg2MjUx
NDA1MDdkODBjODM2ZDcxOTU1YTFiM2I2ZmRiMjhiMjZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUg
IkZldGNoQm9keU93bmVyLmgiCiAjaW5jbHVkZSAiRmV0Y2hIZWFkZXJzLmgiCiAjaW5jbHVkZSAi
UmVzb3VyY2VSZXNwb25zZS5oIgorI2luY2x1ZGUgPHJ1bnRpbWUvVHlwZWRBcnJheXMuaD4KIAog
bmFtZXNwYWNlIEpTQyB7CiBjbGFzcyBBcnJheUJ1ZmZlcjsKQEAgLTU5LDYgKzYwLDEzIEBAIHB1
YmxpYzoKICAgICB1c2luZyBGZXRjaFByb21pc2UgPSBET01Qcm9taXNlPEZldGNoUmVzcG9uc2U+
OwogICAgIHN0YXRpYyB2b2lkIGZldGNoKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBGZXRjaFJl
cXVlc3QmLCBGZXRjaFByb21pc2UmJik7CiAKKyAgICB2b2lkIGNvbnN1bWUodW5zaWduZWQsIERl
ZmVycmVkV3JhcHBlciYmKTsKKyNpZiBFTkFCTEUoU1RSRUFNU19BUEkpCisgICAgdm9pZCBzdGFy
dENvbnN1bWluZ1N0cmVhbSh1bnNpZ25lZCk7CisgICAgdm9pZCBjb25zdW1lQ2h1bmsoUmVmPEpT
Qzo6VWludDhBcnJheT4mJik7CisgICAgdm9pZCBmaW5pc2hDb25zdW1pbmdTdHJlYW0oRGVmZXJy
ZWRXcmFwcGVyJiYpOworI2VuZGlmCisKICAgICB2b2lkIHNldFN0YXR1cyhpbnQsIGNvbnN0IFN0
cmluZyYsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICB2b2lkIGluaXRpYWxpemVXaXRoKEpTQzo6RXhl
Y1N0YXRlJiwgSlNDOjpKU1ZhbHVlKTsKIApAQCAtNzAsNyArNzgsNyBAQCBwdWJsaWM6CiAgICAg
Y29uc3QgU3RyaW5nJiBzdGF0dXNUZXh0KCkgY29uc3QgeyByZXR1cm4gbV9yZXNwb25zZS5odHRw
U3RhdHVzVGV4dCgpOyB9CiAKICAgICBGZXRjaEhlYWRlcnMmIGhlYWRlcnMoKSB7IHJldHVybiBt
X2hlYWRlcnM7IH0KLSAgICBSZWZQdHI8RmV0Y2hSZXNwb25zZT4gY2xvbmUoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBSZWY8RmV0Y2hSZXNwb25zZT4gY2xv
bmVGb3JKUygpOwogCiAjaWYgRU5BQkxFKFNUUkVBTVNfQVBJKQogICAgIFJlYWRhYmxlU3RyZWFt
U291cmNlKiBjcmVhdGVSZWFkYWJsZVN0cmVhbVNvdXJjZSgpOwpAQCAtMTA1LDcgKzExMyw2IEBA
IHByaXZhdGU6CiAgICAgICAgIHZvaWQgZGlkRmFpbCgpIGZpbmFsOwogICAgICAgICB2b2lkIGRp
ZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgZmluYWw7CiAgICAgICAg
IHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgY2hhciosIHNpemVfdCkgZmluYWw7Ci0gICAgICAg
IHZvaWQgZGlkRmluaXNoTG9hZGluZ0FzQXJyYXlCdWZmZXIoUmVmUHRyPEFycmF5QnVmZmVyPiYm
KSBmaW5hbDsKIAogICAgICAgICBGZXRjaFJlc3BvbnNlJiBtX3Jlc3BvbnNlOwogICAgICAgICBP
cHRpb25hbDxGZXRjaFByb21pc2U+IG1fcHJvbWlzZTsKQEAgLTExNiw2ICsxMjMsOCBAQCBwcml2
YXRlOgogICAgIFJlZjxGZXRjaEhlYWRlcnM+IG1faGVhZGVyczsKICAgICBPcHRpb25hbDxCb2R5
TG9hZGVyPiBtX2JvZHlMb2FkZXI7CiAgICAgbXV0YWJsZSBTdHJpbmcgbV9yZXNwb25zZVVSTDsK
KworICAgIEZldGNoQm9keUNvbnN1bWVyIG1fY29uc3VtZXIgeyBGZXRjaEJvZHlDb25zdW1lcjo6
VHlwZTo6QXJyYXlCdWZmZXIgIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaWRsIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmlkbAppbmRleCAzZmIx
NDg4MTQzNTRjZTdkMWY4NDAxODBiYzk5MGRmYjIzZDBhOTJiLi5iZTNjMmNlMDI5MzdmNjIzOGY4
NjVkOTIxOTIyNmI2ZmIxZDE3MDFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2ZldGNoL0ZldGNoUmVzcG9uc2UuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0
Y2gvRmV0Y2hSZXNwb25zZS5pZGwKQEAgLTUzLDExICs1MywyNSBAQCBpbnRlcmZhY2UgRmV0Y2hS
ZXNwb25zZSB7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIEZldGNoSGVhZGVycyBoZWFkZXJzOwog
ICAgIFtKU0J1aWx0aW5dIHJlYWRvbmx5IGF0dHJpYnV0ZSBSZWFkYWJsZVN0cmVhbT8gYm9keTsK
IAotICAgIFtOZXdPYmplY3QsIENhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIFJhaXNl
c0V4Y2VwdGlvbl0gRmV0Y2hSZXNwb25zZSBjbG9uZSgpOworICAgIC8vIENvcHkgb2YgRmV0Y2hC
b2R5IElETCBhcyB3ZSB3YW50IHRvIGltcGxlbWVudCBzb21lIG9mIHRoZXNlIGFzIGJ1aWx0LWlu
cy4KKyAgICBbSW1wbGVtZW50ZWRBcz1pc0Rpc3R1cmJlZF0gcmVhZG9ubHkgYXR0cmlidXRlIGJv
b2xlYW4gYm9keVVzZWQ7CisgICAgW0pTQnVpbHRpbl0gUHJvbWlzZSBhcnJheUJ1ZmZlcigpOwor
ICAgIFtKU0J1aWx0aW5dIFByb21pc2UgYmxvYigpOworICAgIFtKU0J1aWx0aW5dIFByb21pc2Ug
Zm9ybURhdGEoKTsKKyAgICBbSlNCdWlsdGluXSBQcm9taXNlIGpzb24oKTsKKyAgICBbSlNCdWls
dGluXSBQcm9taXNlIHRleHQoKTsKIAorICAgIFtKU0J1aWx0aW5dIEZldGNoUmVzcG9uc2UgY2xv
bmUoKTsKKworICAgIFtQcml2YXRlSWRlbnRpZmllciwgTmV3T2JqZWN0XSBGZXRjaFJlc3BvbnNl
IGNsb25lRm9ySlMoKTsKKworICAgIFtDb25kaXRpb25hbD1TVFJFQU1TX0FQSSwgUHJpdmF0ZUlk
ZW50aWZpZXJdIHZvaWQgc3RhcnRDb25zdW1pbmdTdHJlYW0odW5zaWduZWQgc2hvcnQgdHlwZSk7
CisgICAgW0NvbmRpdGlvbmFsPVNUUkVBTVNfQVBJLCBQcml2YXRlSWRlbnRpZmllcl0gdm9pZCBj
b25zdW1lQ2h1bmsoVWludDhBcnJheSBjaHVuayk7CisgICAgW0NvbmRpdGlvbmFsPVNUUkVBTVNf
QVBJLCBQcml2YXRlSWRlbnRpZmllcl0gUHJvbWlzZSBmaW5pc2hDb25zdW1pbmdTdHJlYW0oKTsK
KworICAgIFtQcml2YXRlSWRlbnRpZmllcl0gUHJvbWlzZSBjb25zdW1lKHVuc2lnbmVkIHNob3J0
IHR5cGUpOwogICAgIFtQcml2YXRlSWRlbnRpZmllciwgUmFpc2VzRXhjZXB0aW9uXSB2b2lkIHNl
dFN0YXR1cyh1bnNpZ25lZCBzaG9ydCBzdGF0dXMsIERPTVN0cmluZyBzdGF0dXNUZXh0KTsKICAg
ICBbQ2FsbFdpdGg9U2NyaXB0U3RhdGUsIFByaXZhdGVJZGVudGlmaWVyXSB2b2lkIGluaXRpYWxp
emVXaXRoKGFueSBib2R5KTsKICAgICBbUHJpdmF0ZUlkZW50aWZpZXIsIE5ld09iamVjdF0gUmVh
ZGFibGVTdHJlYW1Tb3VyY2UgY3JlYXRlUmVhZGFibGVTdHJlYW1Tb3VyY2UoKTsKICAgICBbUHJp
dmF0ZUlkZW50aWZpZXJdIGJvb2xlYW4gaXNEaXN0dXJiZWQoKTsKIH07Ci1GZXRjaFJlc3BvbnNl
IGltcGxlbWVudHMgRmV0Y2hCb2R5OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9mZXRjaC9GZXRjaFJlc3BvbnNlLmpzIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9G
ZXRjaFJlc3BvbnNlLmpzCmluZGV4IGM0YWNjMDEwMTFmNGMxZWU2MzcwZGMzMzQxMzM5ZGI2ODU4
MTkwM2UuLjhhNGRhYmYxYjgxMDZiZmUyYjZjMTA3Y2JlZWZlN2ZjM2Y5NjhhYTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5qcworKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuanMKQEAgLTQ4LDYgKzQ4
LDEyIEBAIGZ1bmN0aW9uIGluaXRpYWxpemVGZXRjaFJlc3BvbnNlKGJvZHksIGluaXQpCiAgICAg
aWYgKGJvZHkgIT09IEB1bmRlZmluZWQgJiYgYm9keSAhPT0gbnVsbCkgewogICAgICAgICBpZiAo
c3RhdHVzID09IDEwMSB8fCBzdGF0dXMgPT0gMjA0IHx8IHN0YXR1cyA9PSAyMDUgfHwgc3RhdHVz
ID09IDMwNCkKICAgICAgICAgICAgIHRocm93IG5ldyBAVHlwZUVycm9yKCJSZXNwb25zZSBjYW5u
b3QgaGF2ZSBhIGJvZHkgd2l0aCB0aGUgZ2l2ZW4gc3RhdHVzIik7CisKKyAgICAgICAgLy8gRklY
TUU6IFVzZSBAaXNSZWFkYWJsZVN0cmVhbSBvbmNlIGl0IGlzIG5vIGxvbmdlciBndWFyZGVkIGJ5
IFNUUkVBTVNfQVBJIGd1YXJkLgorICAgICAgICBsZXQgaXNCb2R5UmVhZGFibGVTdHJlYW0gPSAo
QGlzT2JqZWN0KGJvZHkpICYmICEhYm9keS5AdW5kZXJseWluZ1NvdXJjZSk7CisgICAgICAgIGlm
IChpc0JvZHlSZWFkYWJsZVN0cmVhbSkKKyAgICAgICAgICB0aGlzLkBib2R5ID0gYm9keTsKKwog
ICAgICAgICB0aGlzLkBpbml0aWFsaXplV2l0aChib2R5KTsKICAgICB9CiAKQEAgLTY4LDMgKzc0
LDc3IEBAIGZ1bmN0aW9uIGJvZHkoKQogICAgIH0KICAgICByZXR1cm4gdGhpcy5AYm9keTsKIH0K
KworZnVuY3Rpb24gY2xvbmUoKQoreworICAgIGlmICghdGhpcyBpbnN0YW5jZW9mIEBSZXNwb25z
ZSkKKyAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3IoIkZ1bmN0aW9uIHNob3VsZCBiZSBjYWxs
ZWQgb24gYSBSZXNwb25zZSIpOworCisgICAgaWYgKEBSZXNwb25zZS5wcm90b3R5cGUuQGlzRGlz
dHVyYmVkLkBjYWxsKHRoaXMpKQorICAgICAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcigiQ2Fubm90
IGNsb25lIGEgZGlzdHVyYmVkIFJlc3BvbnNlIik7CisKKyAgICB2YXIgY2xvbmVkID0gQFJlc3Bv
bnNlLnByb3RvdHlwZS5AY2xvbmVGb3JKUy5AY2FsbCh0aGlzKTsKKyAgICBpZiAodGhpcy5AYm9k
eSkgeworICAgICAgICB2YXIgdGVlZFJlYWRhYmxlU3RyZWFtcyA9IEB0ZWVSZWFkYWJsZVN0cmVh
bSh0aGlzLkBib2R5LCBmYWxzZSk7CisgICAgICAgIHRoaXMuQGJvZHkgPSB0ZWVkUmVhZGFibGVT
dHJlYW1zWzBdOworICAgICAgICBjbG9uZWQuQGJvZHkgPSB0ZWVkUmVhZGFibGVTdHJlYW1zWzFd
OworICAgIH0KKyAgICByZXR1cm4gY2xvbmVkOworfQorCisvLyBjb25zdW1lIGFuZCBjb25zdW1l
U3RyZWFtIHNpbmdsZSBwYXJhbWV0ZXIgc2hvdWxkIGJlIGtlcHQgaW4gc3luYyB3aXRoIEZldGNo
Qm9keUNvbnN1bWVyOjpUeXBlLgorZnVuY3Rpb24gYXJyYXlCdWZmZXIoKQoreworICAgIGlmICgh
dGhpcyBpbnN0YW5jZW9mIEBSZXNwb25zZSkKKyAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3Io
IkZ1bmN0aW9uIHNob3VsZCBiZSBjYWxsZWQgb24gYSBSZXNwb25zZSIpOworCisgICAgY29uc3Qg
YXJyYXlCdWZmZXJDb25zdW1lclR5cGUgPSAxOworICAgIGlmICghdGhpcy5AYm9keSkKKyAgICAg
ICAgcmV0dXJuIEBSZXNwb25zZS5wcm90b3R5cGUuQGNvbnN1bWUuQGNhbGwodGhpcywgYXJyYXlC
dWZmZXJDb25zdW1lclR5cGUpOworCisgICAgcmV0dXJuIEBjb25zdW1lU3RyZWFtKHRoaXMsIGFy
cmF5QnVmZmVyQ29uc3VtZXJUeXBlKTsKK30KKworZnVuY3Rpb24gYmxvYigpCit7CisgICAgaWYg
KCF0aGlzIGluc3RhbmNlb2YgQFJlc3BvbnNlKQorICAgICAgICB0aHJvdyBuZXcgQFR5cGVFcnJv
cigiRnVuY3Rpb24gc2hvdWxkIGJlIGNhbGxlZCBvbiBhIFJlc3BvbnNlIik7CisKKyAgICBjb25z
dCBibG9iQ29uc3VtZXJUeXBlID0gMjsKKyAgICBpZiAoIXRoaXMuQGJvZHkpCisgICAgICAgIHJl
dHVybiBAUmVzcG9uc2UucHJvdG90eXBlLkBjb25zdW1lLkBjYWxsKHRoaXMsIGJsb2JDb25zdW1l
clR5cGUpOworCisgICAgcmV0dXJuIEBjb25zdW1lU3RyZWFtKHRoaXMsIGJsb2JDb25zdW1lclR5
cGUpOworfQorCitmdW5jdGlvbiBmb3JtRGF0YSgpCit7CisgICAgaWYgKCF0aGlzIGluc3RhbmNl
b2YgQFJlc3BvbnNlKQorICAgICAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcigiRnVuY3Rpb24gc2hv
dWxkIGJlIGNhbGxlZCBvbiBhIFJlc3BvbnNlIik7CisKKyAgICByZXR1cm4gQFByb21pc2UuQHJl
amVjdCgiTm90IGltcGxlbWVudGVkIik7Cit9CisKK2Z1bmN0aW9uIGpzb24oKQoreworICAgIGlm
ICghdGhpcyBpbnN0YW5jZW9mIEBSZXNwb25zZSkKKyAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJy
b3IoIkZ1bmN0aW9uIHNob3VsZCBiZSBjYWxsZWQgb24gYSBSZXNwb25zZSIpOworCisgICAgY29u
c3QganNvbkNvbnN1bWVyVHlwZSA9IDM7CisgICAgaWYgKCF0aGlzLkBib2R5KQorICAgICAgICBy
ZXR1cm4gQFJlc3BvbnNlLnByb3RvdHlwZS5AY29uc3VtZS5AY2FsbCh0aGlzLCBqc29uQ29uc3Vt
ZXJUeXBlKTsKKworICAgIHJldHVybiBAY29uc3VtZVN0cmVhbSh0aGlzLCBqc29uQ29uc3VtZXJU
eXBlKTsKK30KKworZnVuY3Rpb24gdGV4dCgpCit7CisgICAgaWYgKCF0aGlzIGluc3RhbmNlb2Yg
QFJlc3BvbnNlKQorICAgICAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcigiRnVuY3Rpb24gc2hvdWxk
IGJlIGNhbGxlZCBvbiBhIFJlc3BvbnNlIik7CisKKyAgICBjb25zdCB0ZXh0Q29uc3VtZXJUeXBl
ID0gNDsKKyAgICBpZiAoIXRoaXMuQGJvZHkpCisgICAgICAgIHJldHVybiBAUmVzcG9uc2UucHJv
dG90eXBlLkBjb25zdW1lLkBjYWxsKHRoaXMsIHRleHRDb25zdW1lclR5cGUpOworCisgICAgcmV0
dXJuIEBjb25zdW1lU3RyZWFtKHRoaXMsIHRleHRDb25zdW1lclR5cGUpOworfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGI0YTU1
OTdhMDY4MDhlMzQzMWZkZDk5ZDJkYWRjZmY5YzQ0ZTRjMTYuLjM3M2E5M2NiZWQ4ZThhOTgzNTQw
MDY0YmNhYTI3M2M0YWE5MTc3Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE2MzEsNiArMTYzMSw3IEBACiAJCTQxQkY3MDBG
MEZFODZGNjEwMDVFOERFQyAvKiBQbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUJGNzAwRDBGRTg2RjYx
MDA1RThERUMgLyogUGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWwuY3BwICovOyB9OwogCQk0MUJG
NzAxMDBGRTg2RjYxMDA1RThERUMgLyogUGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWwuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxQkY3MDBFMEZFODZG
NjEwMDVFOERFQyAvKiBQbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbC5oICovOyB9OwogCQk0MUM3
NjBCMTBFREUwM0QzMDBDMTY1NUYgLyogU2NyaXB0U3RhdGUuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxQzc2MEIwMEVERTAzRDMwMEMxNjU1RiAvKiBT
Y3JpcHRTdGF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CisJCTQxQ0Y4QkU3MUQ0NjIyNjcwMDcwN0RDOSAvKiBGZXRjaEJvZHlDb25zdW1lci5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUNGOEJFNDFE
NDYyMjIwMDA3MDdEQzkgLyogRmV0Y2hCb2R5Q29uc3VtZXIuY3BwICovOyB9OwogCQk0MUQwMTVD
QTBGNEI1QzcxMDA0QTY2MkYgLyogQ29udGVudFR5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRDAxNUM4MEY0QjVDNzEwMDRBNjYyRiAvKiBDb250
ZW50VHlwZS5oICovOyB9OwogCQk0MUQwMTVDQjBGNEI1QzcxMDA0QTY2MkYgLyogQ29udGVudFR5
cGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFE
MDE1QzkwRjRCNUM3MTAwNEE2NjJGIC8qIENvbnRlbnRUeXBlLmNwcCAqLzsgfTsKIAkJNDFFMUIx
RDAwRkY1OTg2OTAwNTc2QjNCIC8qIEFic3RyYWN0V29ya2VyLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRTFCMUNBMEZGNTk4NjkwMDU3NkIzQiAv
KiBBYnN0cmFjdFdvcmtlci5jcHAgKi87IH07CkBAIC05MjE4LDYgKzkyMTksOSBAQAogCQk0MUJG
NzAwRDBGRTg2RjYxMDA1RThERUMgLyogUGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWwuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gUGxhdGZvcm1NZXNzYWdlUG9ydENo
YW5uZWwuY3BwOyBwYXRoID0gZGVmYXVsdC9QbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbC5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxQkY3MDBFMEZFODZGNjEwMDVFOERFQyAv
KiBQbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IG5hbWUgPSBQbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbC5oOyBwYXRoID0gZGVmYXVsdC9QbGF0
Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0
MUM3NjBCMDBFREUwM0QzMDBDMTY1NUYgLyogU2NyaXB0U3RhdGUuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gU2NyaXB0U3RhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJNDFDRjhCRTQxRDQ2MjIyMDAwNzA3REM5IC8qIEZldGNoQm9keUNvbnN1bWVyLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZldGNoQm9keUNvbnN1bWVyLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDFDRjhCRTUxRDQ2MjIyMDAwNzA3REM5
IC8qIEZldGNoQm9keUNvbnN1bWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEZldGNoQm9keUNvbnN1bWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxQ0Y4
QkU2MUQ0NjIyMkMwMDcwN0RDOSAvKiBGZXRjaEludGVybmFscy5qcyAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuamF2YXNjcmlwdDsgcGF0aCA9IEZldGNoSW50ZXJuYWxzLmpzOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk0MUQwMTVDODBGNEI1QzcxMDA0QTY2MkYgLyogQ29udGVudFR5cGUu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29udGVudFR5cGUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFEMDE1QzkwRjRCNUM3MTAwNEE2NjJGIC8qIENvbnRl
bnRUeXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvbnRlbnRU
eXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFFMUIxQ0EwRkY1OTg2OTAw
NTc2QjNCIC8qIEFic3RyYWN0V29ya2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEFic3RyYWN0V29ya2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTE3MDk4LDEyICsxNzEwMiwxNSBAQAogCQkJCTQxRjU0RjdEMUM1MEM0RjYwMDMzODQ4OCAv
KiBGZXRjaEJvZHkuY3BwICovLAogCQkJCTQxRjU0RjdFMUM1MEM0RjYwMDMzODQ4OCAvKiBGZXRj
aEJvZHkuaCAqLywKIAkJCQk0MUY1NEY3RjFDNTBDNEY2MDAzMzg0ODggLyogRmV0Y2hCb2R5Lmlk
bCAqLywKKwkJCQk0MUNGOEJFNDFENDYyMjIwMDA3MDdEQzkgLyogRmV0Y2hCb2R5Q29uc3VtZXIu
Y3BwICovLAorCQkJCTQxQ0Y4QkU1MUQ0NjIyMjAwMDcwN0RDOSAvKiBGZXRjaEJvZHlDb25zdW1l
ci5oICovLAogCQkJCTQxNDdFMkIzMUM4OTkxMjYwMEE3RTcxNSAvKiBGZXRjaEJvZHlPd25lci5j
cHAgKi8sCiAJCQkJNDE0N0UyQjIxQzg4MzM3RjAwQTdFNzE1IC8qIEZldGNoQm9keU93bmVyLmgg
Ki8sCiAJCQkJNDFGNTRGODIxQzUwQzRGNjAwMzM4NDg4IC8qIEZldGNoSGVhZGVycy5jcHAgKi8s
CiAJCQkJNDFGNTRGODMxQzUwQzRGNjAwMzM4NDg4IC8qIEZldGNoSGVhZGVycy5oICovLAogCQkJ
CTQxRjU0Rjg0MUM1MEM0RjYwMDMzODQ4OCAvKiBGZXRjaEhlYWRlcnMuaWRsICovLAogCQkJCTQx
RjU0Rjg1MUM1MEM0RjYwMDMzODQ4OCAvKiBGZXRjaEhlYWRlcnMuanMgKi8sCisJCQkJNDFDRjhC
RTYxRDQ2MjIyQzAwNzA3REM5IC8qIEZldGNoSW50ZXJuYWxzLmpzICovLAogCQkJCTQxNDdFMkI0
MUM4OTkxMjYwMEE3RTcxNSAvKiBGZXRjaExvYWRlci5jcHAgKi8sCiAJCQkJNDE0N0UyQjUxQzg5
OTEyNjAwQTdFNzE1IC8qIEZldGNoTG9hZGVyLmggKi8sCiAJCQkJNDE0N0UyQjYxQzg5OTEyNjAw
QTdFNzE1IC8qIEZldGNoTG9hZGVyQ2xpZW50LmggKi8sCkBAIC0zMDc3Miw2ICszMDc3OSw3IEBA
CiAJCQkJQkMwNkVERTMwQkZENkQwRDAwODU2RTlEIC8qIEpTSFRNTFRhYmxlQ2VsbEVsZW1lbnQu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkMwNkVEOUQwQkZENjYwNjAwODU2RTlEIC8qIEpTSFRN
TFRhYmxlQ29sRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzA2RUUwNDBCRkQ3MUFB
MDA4NTZFOUQgLyogSlNIVE1MVGFibGVFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTQx
Q0Y4QkU3MUQ0NjIyNjcwMDcwN0RDOSAvKiBGZXRjaEJvZHlDb25zdW1lci5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlCQzA2RUQ5RjBCRkQ2NjA2MDA4NTZFOUQgLyogSlNIVE1MVGFibGVSb3dFbGVt
ZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDMDZFRDA2MEJGRDVCQUUwMDg1NkU5RCAvKiBK
U0hUTUxUYWJsZVNlY3Rpb25FbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUQ2NDg5RDI1
MTY2RkZDRjEwMDdDMDMxQiAvKiBKU0hUTUxUZW1wbGF0ZUVsZW1lbnQuY3BwIGluIFNvdXJjZXMg
Ki8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVByb21pc2Uu
aCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NUHJvbWlzZS5oCmluZGV4IDEyNzVh
MzJlNjc4ZGRkOGJlY2EyNTRiZDFkNmQ0ZDE5ZjAyNGMyODcuLjRlMjJlMzM0ZmYzNzZhZDM4NDli
ZjBkMTA5OTliOTdiZDlkOWJjODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRE9NUHJvbWlzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9N
UHJvbWlzZS5oCkBAIC0xMTgsNiArMTE4LDggQEAgcHVibGljOgogICAgIHRlbXBsYXRlPGNsYXNz
IFJlamVjdFJlc3VsdFR5cGU+IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPFByb21pc2VSZXN1bHRJ
bnNwZWN0b3I8UmVqZWN0UmVzdWx0VHlwZT46OnBhc3NCeUNvbnN0UmVmLCB2b2lkPjo6dHlwZQog
ICAgIHJlamVjdChjb25zdCBSZWplY3RSZXN1bHRUeXBlJiByZXN1bHQpIHsgcmVqZWN0V2l0aFZh
bHVlKHJlc3VsdCk7IH0KIAorICAgIHRlbXBsYXRlPGNsYXNzIFJlc29sdmVSZXN1bHRUeXBlPiB2
b2lkIHJlc29sdmVXaXRoTmV3bHlDcmVhdGVkKFJlZjxSZXNvbHZlUmVzdWx0VHlwZT4mJik7CisK
ICAgICB2b2lkIHJlamVjdChFeGNlcHRpb25Db2RlLCBjb25zdCBTdHJpbmcmID0geyB9KTsKIAog
ICAgIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QoKSBjb25zdDsKQEAgLTE4MSw2ICsx
ODMsMTYgQEAgaW5saW5lIHZvaWQgRGVmZXJyZWRXcmFwcGVyOjpyZXNvbHZlV2l0aFZhbHVlKFJl
c29sdmVSZXN1bHRUeXBlJiYgcmVzdWx0KQogICAgIHJlc29sdmUoKmV4ZWMsIHRvSlMoZXhlYywg
bV9nbG9iYWxPYmplY3QuZ2V0KCksIHN0ZDo6Zm9yd2FyZDxSZXNvbHZlUmVzdWx0VHlwZT4ocmVz
dWx0KSkpOwogfQogCit0ZW1wbGF0ZTxjbGFzcyBSZXNvbHZlUmVzdWx0VHlwZT4KK2lubGluZSB2
b2lkIERlZmVycmVkV3JhcHBlcjo6cmVzb2x2ZVdpdGhOZXdseUNyZWF0ZWQoUmVmPFJlc29sdmVS
ZXN1bHRUeXBlPiYmIHJlc3VsdCkKK3sKKyAgICBBU1NFUlQobV9kZWZlcnJlZCk7CisgICAgQVNT
RVJUKG1fZ2xvYmFsT2JqZWN0KTsKKyAgICBKU0M6OkV4ZWNTdGF0ZSogZXhlYyA9IG1fZ2xvYmFs
T2JqZWN0LT5nbG9iYWxFeGVjKCk7CisgICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9ja2VyKGV4ZWMp
OworICAgIHJlc29sdmUoKmV4ZWMsIHRvSlNOZXdseUNyZWF0ZWQoZXhlYywgbV9nbG9iYWxPYmpl
Y3QuZ2V0KCksIFdURk1vdmUocmVzdWx0KSkpOworfQorCiB0ZW1wbGF0ZTxjbGFzcyBSZWplY3RS
ZXN1bHRUeXBlPgogaW5saW5lIHZvaWQgRGVmZXJyZWRXcmFwcGVyOjpyZWplY3RXaXRoVmFsdWUo
UmVqZWN0UmVzdWx0VHlwZSYmIHJlc3VsdCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1dlYkNvcmVCdWlsdGluTmFtZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1dlYkNvcmVCdWlsdGluTmFtZXMuaAppbmRleCBhNWFkZDk0YjIwOWEyNjkzYmVjMzUx
Yzk4ZmZjNWNlMjhhNzYxYmUyLi42ODM5MDJhNmJlZDg4NGYxM2EyYTFiNzkzMzVlZDIxNmM2YmU0
OGY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XZWJDb3JlQnVpbHRp
bk5hbWVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2ViQ29yZUJ1aWx0aW5O
YW1lcy5oCkBAIC0zNSwxNCArMzUsMTggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIG1hY3Jv
KGFkZFRyYWNrKSBcCiAgICAgbWFjcm8oYXBwZW5kRnJvbUpTKSBcCiAgICAgbWFjcm8oYm9keSkg
XAorICAgIG1hY3JvKGNsb25lRm9ySlMpIFwKICAgICBtYWNybyhjbG9zZVJlcXVlc3RlZCkgXAog
ICAgIG1hY3JvKGNsb3NlZFByb21pc2VDYXBhYmlsaXR5KSBcCisgICAgbWFjcm8oY29uc3VtZSkg
XAorICAgIG1hY3JvKGNvbnN1bWVDaHVuaykgXAogICAgIG1hY3JvKGNvbnRyb2xsZWRSZWFkYWJs
ZVN0cmVhbSkgXAogICAgIG1hY3JvKGNvbnRyb2xsZXIpIFwKICAgICBtYWNybyhjcmVhdGVSZWFk
YWJsZVN0cmVhbVNvdXJjZSkgXAogICAgIG1hY3JvKGRpc3R1cmJlZCkgXAogICAgIG1hY3JvKGZl
dGNoUmVxdWVzdCkgXAogICAgIG1hY3JvKGZpbGxGcm9tSlMpIFwKKyAgICBtYWNybyhmaW5pc2hD
b25zdW1pbmdTdHJlYW0pIFwKICAgICBtYWNybyhmaXJzdFJlYWRDYWxsYmFjaykgXAogICAgIG1h
Y3JvKGdldFVzZXJNZWRpYUZyb21KUykgXAogICAgIG1hY3JvKGdldFJlbW90ZVN0cmVhbXMpIFwK
QEAgLTcyLDYgKzc2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIG1hY3JvKHNldEJvZHkp
IFwKICAgICBtYWNybyhzZXRTdGF0dXMpIFwKICAgICBtYWNybyhzdGF0ZSkgXAorICAgIG1hY3Jv
KHN0YXJ0Q29uc3VtaW5nU3RyZWFtKSBcCiAgICAgbWFjcm8oc3RhcnRlZCkgXAogICAgIG1hY3Jv
KHN0YXJ0ZWRQcm9taXNlKSBcCiAgICAgbWFjcm8oc3RvcmVkRXJyb3IpIFwKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2MvQ2hhbmdlTG9nCmluZGV4IDJlNzJjYjUzNDAzMzgxOTdjMzBlZDhhYTllY2JkZTYwNTIy
NzY0NzMuLjFiY2ZiODQzMTlkNGNjNmFhNWI5ZWQ3N2Y3NjcxMGQyNzY0ZTA5ODkgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDE2LTA3LTI2ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBbRmV0Y2ggQVBJXSBSZXNw
b25zZSBjb25zdHJ1Y3RvciBzaG91bGQgYmUgYWJsZSB0byB0YWtlIGEgUmVhZGFibGVTdHJlYW0g
YXMgYm9keQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTU5ODA0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQWxleCBDaHJpc3RlbnNlbi4KKworICAgICAg
ICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkvcmVzcG9uc2UvcmVzcG9uc2UtY29uc3Vt
ZS1lbXB0eS1leHBlY3RlZC50eHQ6CisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNo
L2FwaS9yZXNwb25zZS9yZXNwb25zZS1jb25zdW1lLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiB3
ZWItcGxhdGZvcm0tdGVzdHMvZmV0Y2gvYXBpL3Jlc3BvbnNlL3Jlc3BvbnNlLWNvbnN1bWUuaHRt
bDogVXBkYXRpbmcgdGVzdCB0byBleGVyY2ljZSBSZXNwb25zZSBjb29uc3RydWN0b3Igd2l0aCBh
IFJlYWRhYmxlU3RyZWFtLgorCiAyMDE2LTA3LTI1ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBs
ZS5jb20+CiAKICAgICAgICAgU2Vjb25kIHBhcmFtZXRlciB0byBSYW5nZS5zZXRTdGFydCgpIC8g
c2V0RW5kKCkgc2hvdWxkIGJlIG1hbmRhdG9yeQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkvcmVzcG9uc2UvcmVzcG9uc2Ut
Y29uc3VtZS1lbXB0eS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9yZXNwb25zZS9yZXNwb25zZS1jb25zdW1lLWVtcHR5
LWV4cGVjdGVkLnR4dAppbmRleCA2NzA0ZGUxYTQ0MmU1ZjFmZDcyNWIwY2VlMjJjN2YwNzM3YTVl
NTg2Li5lOTY3OTUxOGJkOWMwMzA5NGQ4ZmZmY2Y5ZmNmODJkZDE3N2JjN2NmIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9y
ZXNwb25zZS9yZXNwb25zZS1jb25zdW1lLWVtcHR5LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9yZXNwb25zZS9y
ZXNwb25zZS1jb25zdW1lLWVtcHR5LWV4cGVjdGVkLnR4dApAQCAtMyw3ICszLDcgQEAgUEFTUyBD
b25zdW1lIHJlc3BvbnNlJ3MgYm9keSBhcyB0ZXh0CiBQQVNTIENvbnN1bWUgcmVzcG9uc2UncyBi
b2R5IGFzIGJsb2IgCiBQQVNTIENvbnN1bWUgcmVzcG9uc2UncyBib2R5IGFzIGFycmF5QnVmZmVy
IAogUEFTUyBDb25zdW1lIHJlc3BvbnNlJ3MgYm9keSBhcyBqc29uIAotRkFJTCBDb25zdW1lIHJl
c3BvbnNlJ3MgYm9keSBhcyBmb3JtRGF0YSBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rp
b24gd2l0aCB2YWx1ZTogdW5kZWZpbmVkCitGQUlMIENvbnN1bWUgcmVzcG9uc2UncyBib2R5IGFz
IGZvcm1EYXRhIHByb21pc2VfdGVzdDogVW5oYW5kbGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiAi
Tm90IGltcGxlbWVudGVkIgogUEFTUyBDb25zdW1lIGVtcHR5IGJsb2IgcmVzcG9uc2UgYm9keSBh
cyBhcnJheUJ1ZmZlciAKIFBBU1MgQ29uc3VtZSBlbXB0eSB0ZXh0IHJlc3BvbnNlIGJvZHkgYXMg
YXJyYXlCdWZmZXIgCiBQQVNTIENvbnN1bWUgZW1wdHkgYmxvYiByZXNwb25zZSBib2R5IGFzIHRl
eHQgCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2ZldGNoL2FwaS9yZXNwb25zZS9yZXNwb25zZS1jb25zdW1lLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZmV0Y2gvYXBpL3Jlc3Bv
bnNlL3Jlc3BvbnNlLWNvbnN1bWUtZXhwZWN0ZWQudHh0CmluZGV4IGQwODhhNjlhOGNlNDJhMmZh
MGExYzkyMDk5ZDg2YTZiZmE1N2U2ZDguLjQxNmEzOTJjZTZhZDZjYWI2OGUyNzFkZDA0YTE5YTJl
ZTUwMjAzZWUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvZmV0Y2gvYXBpL3Jlc3BvbnNlL3Jlc3BvbnNlLWNvbnN1bWUtZXhwZWN0ZWQudHh0
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZmV0Y2gv
YXBpL3Jlc3BvbnNlL3Jlc3BvbnNlLWNvbnN1bWUtZXhwZWN0ZWQudHh0CkBAIC0zLDkgKzMsMTMg
QEAgUEFTUyBDb25zdW1lIHJlc3BvbnNlJ3MgYm9keSBhcyB0ZXh0CiBQQVNTIENvbnN1bWUgcmVz
cG9uc2UncyBib2R5IGFzIGJsb2IgCiBQQVNTIENvbnN1bWUgcmVzcG9uc2UncyBib2R5IGFzIGFy
cmF5QnVmZmVyIAogUEFTUyBDb25zdW1lIHJlc3BvbnNlJ3MgYm9keSBhcyBqc29uIAotRkFJTCBD
b25zdW1lIHJlc3BvbnNlJ3MgYm9keSBhcyBmb3JtRGF0YSBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxl
ZCByZWplY3Rpb24gd2l0aCB2YWx1ZTogdW5kZWZpbmVkCitGQUlMIENvbnN1bWUgcmVzcG9uc2Un
cyBib2R5IGFzIGZvcm1EYXRhIHByb21pc2VfdGVzdDogVW5oYW5kbGVkIHJlamVjdGlvbiB3aXRo
IHZhbHVlOiAiTm90IGltcGxlbWVudGVkIgogUEFTUyBDb25zdW1lIGJsb2IgcmVzcG9uc2UncyBi
b2R5IGFzIGJsb2IgCiBQQVNTIENvbnN1bWUgYmxvYiByZXNwb25zZSdzIGJvZHkgYXMgdGV4dCAK
IFBBU1MgQ29uc3VtZSBibG9iIHJlc3BvbnNlJ3MgYm9keSBhcyBqc29uIAogUEFTUyBDb25zdW1l
IGJsb2IgcmVzcG9uc2UncyBib2R5IGFzIGFycmF5QnVmZmVyIAorUEFTUyBDb25zdW1lIHN0cmVh
bSByZXNwb25zZSdzIGJvZHkgYXMgYmxvYiAKK1BBU1MgQ29uc3VtZSBzdHJlYW0gcmVzcG9uc2Un
cyBib2R5IGFzIHRleHQgCitQQVNTIENvbnN1bWUgc3RyZWFtIHJlc3BvbnNlJ3MgYm9keSBhcyBq
c29uIAorUEFTUyBDb25zdW1lIHN0cmVhbSByZXNwb25zZSdzIGJvZHkgYXMgYXJyYXlCdWZmZXIg
CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvZmV0Y2gvYXBpL3Jlc3BvbnNlL3Jlc3BvbnNlLWNvbnN1bWUuaHRtbCBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZmV0Y2gvYXBpL3Jlc3BvbnNlL3Jlc3Bv
bnNlLWNvbnN1bWUuaHRtbAppbmRleCAwMjgxNGZmNWJlOTI2YmU3MzgyNjRiYTkxMDcwYmQyMzY5
ZDU0NjkxLi45OTQxMGNkNDQ4YWI4YmQ2NDc5MDE4NzAwNGVmZDM0YjFjOTlhYjQ5IDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNoL2Fw
aS9yZXNwb25zZS9yZXNwb25zZS1jb25zdW1lLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkvcmVzcG9uc2UvcmVzcG9uc2UtY29u
c3VtZS5odG1sCkBAIC05Miw2ICs5MiwyNSBAQAogICAgIGNoZWNrQmxvYlJlc3BvbnNlQm9keShi
bG9iLCB0ZXh0RGF0YSwgImpzb24iLCBjaGVja0JvZHlKU09OKTsKICAgICBjaGVja0Jsb2JSZXNw
b25zZUJvZHkoYmxvYiwgdGV4dERhdGEsICJhcnJheUJ1ZmZlciIsIGNoZWNrQm9keUFycmF5QnVm
ZmVyKTsKIAorICAgIGZ1bmN0aW9uIGNoZWNrUmVhZGFibGVTdHJlYW1SZXNwb25zZUJvZHkoc3Ry
ZWFtRGF0YSwgYm9keVR5cGUsIGNoZWNrRnVuY3Rpb24pIHsKKyAgICAgIHByb21pc2VfdGVzdChm
dW5jdGlvbih0ZXN0KSB7CisgICAgICAgIHZhciBzdHJlYW0gPSBuZXcgUmVhZGFibGVTdHJlYW0o
eworICAgICAgICAgIHN0YXJ0OiBmdW5jdGlvbihjb250cm9sbGVyKSB7CisgICAgICAgICAgICBj
b250cm9sbGVyLmVucXVldWUoKHN0cmluZ1RvQXJyYXkoc3RyZWFtRGF0YSkpKTsKKyAgICAgICAg
ICAgIGNvbnRyb2xsZXIuY2xvc2UoKTsKKyAgICAgICAgICB9CisgICAgICAgIH0pOworICAgICAg
ICB2YXIgcmVzcG9uc2UgPSBuZXcgUmVzcG9uc2Uoc3RyZWFtKTsKKyAgICAgICAgYXNzZXJ0X2Zh
bHNlKHJlc3BvbnNlLmJvZHlVc2VkLCAiYm9keVVzZWQgaXMgZmFsc2UgYXQgaW5pdCIpOworICAg
ICAgICByZXR1cm4gY2hlY2tGdW5jdGlvbihyZXNwb25zZSwgc3RyZWFtRGF0YSk7CisgICAgICB9
LCAiQ29uc3VtZSBzdHJlYW0gcmVzcG9uc2UncyBib2R5IGFzICIgKyBib2R5VHlwZSk7CisgICAg
fQorCisgICAgY2hlY2tSZWFkYWJsZVN0cmVhbVJlc3BvbnNlQm9keSh0ZXh0RGF0YSwgImJsb2Ii
LCBjaGVja0JvZHlCbG9iKTsKKyAgICBjaGVja1JlYWRhYmxlU3RyZWFtUmVzcG9uc2VCb2R5KHRl
eHREYXRhLCAidGV4dCIsIGNoZWNrQm9keVRleHQpOworICAgIGNoZWNrUmVhZGFibGVTdHJlYW1S
ZXNwb25zZUJvZHkodGV4dERhdGEsICJqc29uIiwgY2hlY2tCb2R5SlNPTik7CisgICAgY2hlY2tS
ZWFkYWJsZVN0cmVhbVJlc3BvbnNlQm9keSh0ZXh0RGF0YSwgImFycmF5QnVmZmVyIiwgY2hlY2tC
b2R5QXJyYXlCdWZmZXIpOworCiAgICAgPC9zY3JpcHQ+CiAgIDwvYm9keT4KIDwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>284603</attachid>
            <date>2016-07-26 10:39:09 -0700</date>
            <delta_ts>2016-07-26 23:39:27 -0700</delta_ts>
            <desc>Removing WebCoreJSBuiltins.cpp from CMake WebCore_DERIVED_SOURCES</desc>
            <filename>bug-159804-20160726193758.patch</filename>
            <type>text/plain</type>
            <size>60709</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAzNzI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjA0MTI1YWY4OTlhY2Nl
YTNjZTIzZDdmZWI5MDk1MWI1ZmYxZmE4Yy4uNzJmMzYwNjUzN2NkZWE1MWY1ZGMwYzQwZTQ5OGEz
NTIwZjNmZjFiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyNyBAQAorMjAxNi0wNy0yNiAgWW91
ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAgICAgW0ZldGNoIEFQSV0gUmVz
cG9uc2UgY29uc3RydWN0b3Igc2hvdWxkIGJlIGFibGUgdG8gdGFrZSBhIFJlYWRhYmxlU3RyZWFt
IGFzIGJvZHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE1OTgwNAorCisgICAgICAgIFJldmlld2VkIGJ5IEFsZXggQ2hyaXN0ZW5zZW4uCisKKyAgICAg
ICAgQ292ZXJlZCBieSBleGlzdGluZyBhbmQgdXBkYXRlZCB0ZXN0cy4KKworICAgICAgICBJbnRy
b2R1Y2VkIEZldGNoQm9keUNvbnN1bWVyIHRvIGVuY2Fwc3VsYXRlIHRoZSBjb2RlIHJlc3BvbnNp
YmxlIHRvIGFkYXB0IEZldGNoQm9keSBpbnRlcm5hbCBkYXRhIHRvIHRoZSByZXF1ZXN0cyBtYWRl
IGJ5IHVzZXIgc2NyaXB0cy4KKyAgICAgICAgVGhpcyByZWZhY3RvcmluZyBlYXNlcyB0aGUgaGFu
ZGxpbmcgb2YgaW50ZXJuYWwgZGF0YSBjb21pbmcgZnJvbSBSZWFkYWJsZVN0cmVhbS4KKworICAg
ICAgICBGZXRjaExvYWRlciBpcyBub3cgZGVsZWdhdGluZyBjb252ZXJzaW9uIGZyb20gdGhlIGRh
dGEgdG8gaXRzIG1fY29uc3VtZXIgZmllbGQuCisgICAgICAgIElmIG1fY29uc3VtZXIgaXMgbnVs
bCwgRmV0Y2hMb2FkZXIgY2FsbHMgRmV0Y2hMb2FkZXJDbGllbnQ6OmRpZFJlY2VpdmVEYXRhIChz
dHJlYW1pbmcgcmVjZXB0aW9uIG1vZGUpLgorICAgICAgICBDbGllbnRzIG9mIEZldGNoTG9hZGVy
IG5lZWRzIHRvIHBhc3MgYSBGZXRjaEJvZHlDb25zdW1lciB0byB0aGUgRmV0Y2hMb2FkZXIgdG8g
ZG8gdGhlIGRhdGEgYWRhcHRhdGlvbiBhdCBsb2FkZXIgY3JlYXRpb24gdGltZS4KKworICAgICAg
ICBBZGRlZCBzdXBwb3J0IGZvciBib2R5IGRhdGEgcGFzc2VkIGFzIGEgUmVhZGFibGVTdHJlYW0g
dG8gUmVzcG9uc2UuCisgICAgICAgIFRoaXMgcmVxdWlyZXMgdG8gc2V0IEBib2R5IGludGVybmFs
IHNsb3Qgb2YgdGhlIFJlc3BvbnNlIG9iamVjdCBpbiB0aGUgY29uc3RydWN0b3IgaW5pdGlhbGl6
YXRpb24gSlMgYnVpbHQtaW4uCisKKyAgICAgICAgVG8gYWN0dWFsbHkgdXNlIHRoYXQgZGF0YSwg
Qm9keSBhY2Nlc3NvcnMgYXJlIGFsc28gaW1wbGVtZW50ZWQgYXMgSlMgYnVpbHQtaW4gZm9yIFJl
c3BvbnNlLgorICAgICAgICBTaW5jZSB0aGVyZSBpcyBubyBuZWVkIHRvIGRvIHNvIGZvciBSZXF1
ZXN0LCBGZXRjaFJlc3BvbnNlIGlzIG5vIGxvbmdlciBtYXJrZWQgYXMgaW1wbGVtZW50aW5nIEZl
dGNoQm9keSBidXQgYWxsCisgICAgICAgIEZldGNoQm9keSBJREwgZGVzY3JpcHRpb24gaXMgaW5s
aW5lZCBpbiBGZXRjaFJlc3BvbnNlLmlkbC4KKworICAgICAgICBGb3IgZWFjaCBib2R5IGFjY2Vz
c29yIChhcnJheUJ1ZmZlciwgYmxvYiwganNvbiwgdGV4dCksIHRoZSBjb3JyZXNwb25kaW5nIEpT
IGJ1aWx0LWluIGNoZWNrcyB3aGV0aGVyIEBib2R5IGludGVybmFsIHNsb3QgaXMgc2V0LgorICAg
ICAgICBJZiB0aGF0IGlzIG5vdCB0aGUgY2FzZSwgcmVndWxhciBoYW5kbGluZyBpcyBkb25lIHRo
cm91Z2ggYSBuZXcgcHJpdmF0ZSBtZXRob2QgY2FsbGVkIEBjb25zdW1lLgorICAgICAgICBJZiBA
Ym9keSBpbnRlcm5hbCBzbG90IGlzIHNldCwgY2h1bmtzIGFyZSBwdW1wZWQgZnJvbSB0aGUgUmVh
ZGFibGVTdHJlYW0gdXNpbmcgUmVhZGFibGVTdHJlYW0gaW50ZXJuYWwgYnVpbHQtaW5zIGZ1bmN0
aW9ucy4KKyAgICAgICAgRGF0YSBoYW5kbGluZyBpcyBkb25lIGluIEMrKyB0aHJvdWdoIHRoZSBw
cml2YXRlIG1ldGhvZHMgQHN0YXJ0Q29uc3VtaW5nU3RyZWFtLCBAY29uc3VtZUNodW5rIGFuZCBA
ZmluaXNoQ29uc3VtaW5nU3RyZWFtLgorCisgICAgICAgIFRvIHN1cHBvcnQgY2xvbmluZyBvZiBS
ZXNwb25zZSB3aXRoIGJvZGllcywgY2xvbmUgbWV0aG9kIGlzIGFsc28gaW1wbGVtZW50ZWQgYXMg
YSBKUyBidWlsdC1pbi4KKyAgICAgICAgTWFpbiBjbG9uZSBpcyBkb25lIHRocm91Z2ggQGNsb25l
Rm9KUyBwcml2YXRlIG1ldGhvZCBpbXBsZW1lbnRlZCBpbiBDKysuCisgICAgICAgIEpTIGJ1aWx0
LWluIGNsb25lIGNvZGUgZG9lcyB0aGUgdGVlaW5nIG9mIHRoZSBSZWFkYWJsZVN0cmVhbSB1c2lu
ZyBSZWFkYWJsZVN0cmVhbSBKUyBidWlsdC1pbiBpbnRlcm5hbCBmdW5jdGlvbnMuCisKKyAgICAg
ICAgSW50cm9kdWNpbmcgYSBuZXcgUmVhZGFibGVTdHJlYW0gdHlwZSBmb3IgRmV0Y2hCb2R5IHRv
IGNvcGUgd2l0aCBib2R5IGJlaW5nIHN0b3JlZCBpbiBhIFJlYWRhYmxlU3RyZWFtLgorCisgICAg
ICAgIEludHJvZHVjaW5nIGEgbmV3IExvYWRlZCB0eXBlIGZvciBGZXRjaEJvZHkgdG8gY29wZSB3
aXRoIGJvZHkgYmVpbmcgc3RvcmVkIGluIHRoZSBGZXRjaEJvZHlDb25zdW1lciBvd25lZCBieSBG
ZXRjaEJvZHkuCisgICAgICAgIFRoaXMgYWxsb3dzIHJlbW92aW5nIHRoZSBjb252ZXJzaW9uIG9m
IGRhdGEgdG8gSlNDOjpBcnJheUJ1ZmZlciB3aGljaCB3YXMgZG9uZSBieSBkZWZhdXQgYXQgdGhl
IGVuZCBvZiBGZXRjaCBsb2FkaW5nIGlmIHVzZXIgc2NyaXB0IGRpZCBub3QgcmVxdWVzdCBkYXRh
IGJlZm9yZS4KKyAgICAgICAgQXQgdGhlIGVuZCBvZiBhIGxvYWQsIHRoZSBkYXRhIHJlbWFpbnMg
aW4gRmV0Y2hCb2R5Q29uc3VtZXIgYW5kIHRoZSBib2R5IGlzIG1hcmtlZCBhcyBMb2FkZWQuCisg
ICAgICAgIElmIHRoZSB1c2VyIHdhbnRzIHRvIGdldCB0aGUgZGF0YSBhZnRlciBkYXRhIGZpbmlz
aGVkIGJlaW5nIGxvYWRlZCwgRmV0Y2hCb2R5Q29uc3VtZXIgd2lsbCBkbyB0aGUgcmVxdWlyZWQg
Y29udmVyc2lvbnMuCisKKyAgICAgICAgSW50cm9kdWNpbmcgRGVmZXJyZWRXcmFwcGVyOjpyZXNv
bHZlV2l0aE5ld1ZhbHVlIHRvIGhhbmRsZSB0aGUgY2FzZSBvZiByZXNvbHZpbmcgcHJvbWlzZXMg
d2l0aCBuZXcgb2JqZWN0cy4KKyAgICAgICAgVGhpcyBhbGxvd3MgZGlyZWN0bHkgdXNpbmcgdG9K
U05ld2x5Q3JlYXRlZCBpbnN0ZWFkIG9mIHRvSlMuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4
dDogQWRkaW5nIEZldGNoQm9keUNvbnN1bWVyLmNwcC4gUmVtb3ZpbmcgV2ViQ29yZUpTQnVpbHRp
bnMuY3BwIGZyb20gQ01ha2UgbGlzdCBhcyBpdCBpcyBub3QgbmVlZGVkLgorICAgICAgICAqIE1v
ZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcDogTW92aW5nIGRhdGEgYWRhcHRhdGlvbiBjb2RlIHRv
IEZldGNoQm9keUNvbnN1bWVyLgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5OjpleHRyYWN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keTo6YXJyYXlCdWZmZXIpOgorICAgICAgICAo
V2ViQ29yZTo6RmV0Y2hCb2R5OjpibG9iKTogU2V0dGluZyBjb250ZW50VHlwZSBpbiBGZXRjaEJv
ZHlDb25zdW1lciB0byBoYW5kbGUgcHJvcGVyIGNyZWF0aW9uIG9mIGJsb2IuCisgICAgICAgIChX
ZWJDb3JlOjpGZXRjaEJvZHk6Ompzb24pOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Ojp0
ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keTo6Y29uc3VtZSk6IFJlZmFjdG9yaW5n
IGFuZCBhZGRlZCBjYXNlIG9mIExvYWRlZCBib2RpZXMuCisgICAgICAgIChXZWJDb3JlOjpGZXRj
aEJvZHk6OmNvbnN1bWVBc1N0cmVhbSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hC
b2R5Ojpjb25zdW1lQXJyYXlCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Ojpj
b25zdW1lVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHk6OmNvbnN1bWVCbG9iKToK
KyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keTo6bG9hZGluZ0ZhaWxlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpGZXRjaEJvZHk6OmxvYWRpbmdTdWNjZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6
RmV0Y2hCb2R5Ojpsb2FkaW5nVHlwZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpibG9i
RnJvbUFycmF5QnVmZmVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keTo6
ZnVsZmlsbFRleHRQcm9taXNlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9k
eTo6bG9hZGVkQXNBcnJheUJ1ZmZlcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpGZXRj
aEJvZHk6OmxvYWRlZEFzVGV4dCk6IERlbGV0ZWQuCisgICAgICAgICogTW9kdWxlcy9mZXRjaC9G
ZXRjaEJvZHkuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keTo6Y29uc3VtZXIpOgorICAg
ICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwOiBBZGRlZCwgcmVzcG9u
c2libGUgb2YgZGF0YSBhZGFwdGF0aW9uLgorICAgICAgICAoV2ViQ29yZTo6YmxvYkZyb21EYXRh
KToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjpyZXNvbHZlV2l0aERhdGEp
OgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OnJlc29sdmUpOgorICAgICAg
ICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OmFwcGVuZCk6CisgICAgICAgIChXZWJDb3Jl
OjpGZXRjaEJvZHlDb25zdW1lcjo6dGFrZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hC
b2R5Q29uc3VtZXI6OnRha2VBc0FycmF5QnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNo
Qm9keUNvbnN1bWVyOjp0YWtlQXNCbG9iKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNv
bnN1bWVyOjp0YWtlQXNUZXh0KToKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNv
bnN1bWVyLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OkZl
dGNoQm9keUNvbnN1bWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjpz
ZXRDb250ZW50VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6c2V0
VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6dHlwZSk6CisgICAg
ICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6Y2xlYW4pOgorICAgICAgICAoV2ViQ29y
ZTo6RmV0Y2hCb2R5Q29uc3VtZXI6Omhhc0RhdGEpOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gv
RmV0Y2hCb2R5T3duZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5T3duZXI6Omxv
YWRCbG9iKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keU93bmVyOjpibG9iTG9hZGluZ1N1
Y2NlZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlPd25lcjo6bG9hZGVkQmxvYkFz
VGV4dCk6IERlbGV0ZWQuCisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlPd25lci5o
OgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5T3duZXI6OmxvYWRlZEJsb2JBc0FycmF5QnVm
ZmVyKTogRGVsZXRlZC4KKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoSW50ZXJuYWxzLmpz
OgorICAgICAgICAoY29uc3VtZVN0cmVhbSk6IFB1bXAgUmVhZGFibGVTdHJlYW0gZGF0YSBhbmQg
c2VuZCBpdCB0byBGZXRjaFJlc3BvbnNlIHRvIGJlIGNvbnZlcnRlZCBhY2NvcmRpbmcgdXNlciBu
ZWVkLgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RmV0Y2hMb2FkZXI6OkZldGNoTG9hZGVyKTogRmV0Y2hMb2FkZXIgaXMgc2ltcGxp
ZmllZCBhcyBpdCBoYXMgdHdvIG5vZGVzOiBjb25zdW1lciBtb2RlIGluIHdoaWNoIGNhc2UKKyAg
ICAgICAgZGF0YSBpcyBzZW50IHRvIHRoZSBjb25zdW1lciBhbmQgbm8tY29uc3VtZXIgbW9kZSBp
biB3aGljaCBjYXNlIGRhdGEgaXMgcGFzc2VkIHRvIGxvYWRlciBjbGllbnQuIFRoZSBzZWNvbmQg
bW9kZQorICAgICAgICBpcyB1c2VkIHRvIGNvbnZleXkgZGF0YSB0byBSZWFkYWJsZVN0cmVhbSBz
b3VyY2UuCisgICAgICAgIChXZWJDb3JlOjpGZXRjaExvYWRlcjo6c3RvcCk6CisgICAgICAgIChX
ZWJDb3JlOjpGZXRjaExvYWRlcjo6c3RhcnRTdHJlYW1pbmcpOgorICAgICAgICAoV2ViQ29yZTo6
RmV0Y2hMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoTG9h
ZGVyOjpkaWRGaW5pc2hMb2FkaW5nKTogRGVsZXRlZC4KKyAgICAgICAgKiBNb2R1bGVzL2ZldGNo
L0ZldGNoTG9hZGVyLmg6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlckNsaWVu
dC5oOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hMb2FkZXJDbGllbnQ6OmRpZEZpbmlzaExvYWRp
bmdBc1RleHQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hMb2FkZXJDbGllbnQ6
OmRpZEZpbmlzaExvYWRpbmdBc0FycmF5QnVmZmVyKTogRGVsZXRlZC4KKyAgICAgICAgKiBNb2R1
bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hSZXNw
b25zZTo6Y2xvbmVGb3JKUyk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaFJlc3BvbnNlOjpCb2R5
TG9hZGVyOjpkaWRTdWNjZWVkKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoUmVzcG9uc2U6OkJv
ZHlMb2FkZXI6OnN0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoUmVzcG9uc2U6OmNvbnN1
bWUpOiBJbnRyb2R1Y2VkIHRvIGNvbnN1bWUgZGF0YSBzdG9yZWQgaW4gYm9keSBhbmQgbm90IGlu
IFJlYWRhYmxlU3RyZWFtLgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hSZXNwb25zZTo6c3RhcnRD
b25zdW1pbmdTdHJlYW0pOiBJbnRyb2R1Y2VkIHRvIHN0YXJ0IHByb2Nlc3Mgb2YgY29uc3VtaW5n
IGRhdGEgc3RvcmVkIGluIHRoZSBSZWFkYWJsZVN0cmVhbS4KKyAgICAgICAgKFdlYkNvcmU6OkZl
dGNoUmVzcG9uc2U6OmNvbnN1bWVDaHVuayk6IFJlY2VwdGlvbiBvZiBSZWFkYWJsZVN0cmVhbSBk
YXRhLgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hSZXNwb25zZTo6ZmluaXNoQ29uc3VtaW5nU3Ry
ZWFtKTogRG9pbmcgdGhlIGZpbmFsIGNvbnZlcnNpb24uCisgICAgICAgIChXZWJDb3JlOjpGZXRj
aFJlc3BvbnNlOjpjbG9uZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpGZXRjaFJlc3Bv
bnNlOjpCb2R5TG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nQXNBcnJheUJ1ZmZlcik6IERlbGV0ZWQu
CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmg6CisgICAgICAgICogTW9k
dWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmlkbDogSW5saW5pbmcgb2YgRmV0Y2hCb2R5IG1ldGhv
ZHMvYXR0cmlidXRlcyBhbmQgYWRkaW5nIHByaXZhdGUgbWV0aG9kcy4KKyAgICAgICAgKiBNb2R1
bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuanM6CisgICAgICAgIChpbml0aWFsaXplRmV0Y2hSZXNw
b25zZSk6CisgICAgICAgIChjbG9uZSk6CisgICAgICAgIChhcnJheUJ1ZmZlcik6CisgICAgICAg
IChibG9iKToKKyAgICAgICAgKGZvcm1EYXRhKToKKyAgICAgICAgKGpzb24pOgorICAgICAgICAo
dGV4dCk6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NUHJvbWlzZS5oOgorICAgICAgICAoV2ViQ29yZTo6RGVm
ZXJyZWRXcmFwcGVyOjpyZXNvbHZlV2l0aE5ld1ZhbHVlKToKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9XZWJDb3JlQnVpbHRpbk5hbWVzLmg6CisKIDIwMTYtMDctMjYgIENvbW1pdCBRdWV1ZSAgPGNv
bW1pdC1xdWV1ZUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0
IHIyMDM3MTkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1Nv
dXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDZkYzExM2Y4YTJjNjAyZTNmNTAxMzMx
MzczNmVjYWEzNjZiZTU3ZmQuLjYyYTcyMzJjZDhiM2RmNWI3NDhmYTdkNzQ4MWY0NmEzMDg1MTAy
NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJj
ZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC04MTgsNiArODE4LDcgQEAgc2V0KFdlYkNvcmVf
U09VUkNFUwogCiAgICAgTW9kdWxlcy9mZXRjaC9ET01XaW5kb3dGZXRjaC5jcHAKICAgICBNb2R1
bGVzL2ZldGNoL0ZldGNoQm9keS5jcHAKKyAgICBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1
bWVyLmNwcAogICAgIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5T3duZXIuY3BwCiAgICAgTW9kdWxl
cy9mZXRjaC9GZXRjaEhlYWRlcnMuY3BwCiAgICAgTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlci5j
cHAKQEAgLTM3NzMsNyArMzc3NCw2IEBAIGFkZF9jdXN0b21fY29tbWFuZCgKICAgICBERVBFTkRT
ICR7QlVJTFRJTlNfR0VORVJBVE9SX1NDUklQVFN9CiAgICAgQ09NTUFORCAke1BZVEhPTl9FWEVD
VVRBQkxFfSAke0phdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSfS9nZW5lcmF0ZS1qcy1idWlsdGlu
cy5weSAtLXdyYXBwZXJzLW9ubHkgLS1mcmFtZXdvcmsgV2ViQ29yZSAtLW91dHB1dC1kaXJlY3Rv
cnkgJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09SRV9ESVJ9ICR7V2ViQ29yZV9CVUlMVElOU19TT1VS
Q0VTfQogICAgIFZFUkJBVElNKQotbGlzdChBUFBFTkQgV2ViQ29yZV9ERVJJVkVEX1NPVVJDRVMg
JHtERVJJVkVEX1NPVVJDRVNfV0VCQ09SRV9ESVJ9L1dlYkNvcmVKU0J1aWx0aW5zLmNwcCkKIGxp
c3QoQVBQRU5EIFdlYkNvcmVfREVSSVZFRF9TT1VSQ0VTICR7REVSSVZFRF9TT1VSQ0VTX1dFQkNP
UkVfRElSfS9XZWJDb3JlSlNCdWlsdGluSW50ZXJuYWxzLmNwcCkKIGxpc3QoQVBQRU5EIFdlYkNv
cmVfREVSSVZFRF9TT1VSQ0VTICR7REVSSVZFRF9TT1VSQ0VTX1dFQkNPUkVfRElSfS9XZWJDb3Jl
SlNCdWlsdGlucy5oKQogbGlzdChBUFBFTkQgV2ViQ29yZV9ERVJJVkVEX1NPVVJDRVMgJHtERVJJ
VkVEX1NPVVJDRVNfV0VCQ09SRV9ESVJ9L1dlYkNvcmVKU0J1aWx0aW5JbnRlcm5hbHMuaCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcAppbmRleCA4YzQ3OWQ1Zjhl
MDYyNTAyZDk1NzBjOGI5YjU4NWJjZjBkYjQ0ZDNmLi5lMGY1YWUxODAzNWFhYWZjNzk0Yjc3YjBk
ZDdkNmEyMTYwNTUwZmQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNo
L0ZldGNoQm9keS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJv
ZHkuY3BwCkBAIC0zOSwxMiArMzksMTEgQEAKICNpbmNsdWRlICJIVFRQUGFyc2Vycy5oIgogI2lu
Y2x1ZGUgIkpTQmxvYi5oIgogI2luY2x1ZGUgIkpTRE9NRm9ybURhdGEuaCIKKyNpbmNsdWRlICJK
U1JlYWRhYmxlU3RyZWFtLmgiCiAjaW5jbHVkZSAiUmVhZGFibGVTdHJlYW1Tb3VyY2UuaCIKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgUmVmPEJsb2I+IGJsb2JGcm9tQXJyYXlCdWZm
ZXIoQXJyYXlCdWZmZXIqLCBjb25zdCBTdHJpbmcmKTsKLQogRmV0Y2hCb2R5OjpGZXRjaEJvZHko
UmVmPEJsb2I+JiYgYmxvYikKICAgICA6IG1fdHlwZShUeXBlOjpCbG9iKQogICAgICwgbV9taW1l
VHlwZShibG9iLT50eXBlKCkpCkBAIC03NSw2ICs3NCw4IEBAIEZldGNoQm9keSBGZXRjaEJvZHk6
OmV4dHJhY3QoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6OkpTVmFsdWUgdmFsdWUpCiAgICAg
ICAgIHJldHVybiBGZXRjaEJvZHkoKkpTRE9NRm9ybURhdGE6OnRvV3JhcHBlZCh2YWx1ZSkpOwog
ICAgIGlmICh2YWx1ZS5pc1N0cmluZygpKQogICAgICAgICByZXR1cm4gRmV0Y2hCb2R5KHZhbHVl
LnRvV1RGU3RyaW5nKCZzdGF0ZSkpOworICAgIGlmICh2YWx1ZS5pbmhlcml0cyhKU1JlYWRhYmxl
U3RyZWFtOjppbmZvKCkpKQorICAgICAgICByZXR1cm4geyBUeXBlOjpSZWFkYWJsZVN0cmVhbSB9
OwogICAgIHJldHVybiB7IH07CiB9CiAKQEAgLTg5LDEzICs5MCwxNiBAQCBGZXRjaEJvZHkgRmV0
Y2hCb2R5OjpleHRyYWN0RnJvbUJvZHkoRmV0Y2hCb2R5KiBib2R5KQogdm9pZCBGZXRjaEJvZHk6
OmFycmF5QnVmZmVyKEZldGNoQm9keU93bmVyJiBvd25lciwgRGVmZXJyZWRXcmFwcGVyJiYgcHJv
bWlzZSkKIHsKICAgICBBU1NFUlQobV90eXBlICE9IFR5cGU6Ok5vbmUpOwotICAgIGNvbnN1bWUo
b3duZXIsIENvbnN1bWVyOjpUeXBlOjpBcnJheUJ1ZmZlciwgV1RGTW92ZShwcm9taXNlKSk7Cisg
ICAgbV9jb25zdW1lci5zZXRUeXBlKEZldGNoQm9keUNvbnN1bWVyOjpUeXBlOjpBcnJheUJ1ZmZl
cik7CisgICAgY29uc3VtZShvd25lciwgV1RGTW92ZShwcm9taXNlKSk7CiB9CiAKIHZvaWQgRmV0
Y2hCb2R5OjpibG9iKEZldGNoQm9keU93bmVyJiBvd25lciwgRGVmZXJyZWRXcmFwcGVyJiYgcHJv
bWlzZSkKIHsKICAgICBBU1NFUlQobV90eXBlICE9IFR5cGU6Ok5vbmUpOwotICAgIGNvbnN1bWUo
b3duZXIsIENvbnN1bWVyOjpUeXBlOjpCbG9iLCBXVEZNb3ZlKHByb21pc2UpKTsKKyAgICBtX2Nv
bnN1bWVyLnNldFR5cGUoRmV0Y2hCb2R5Q29uc3VtZXI6OlR5cGU6OkJsb2IpOworICAgIG1fY29u
c3VtZXIuc2V0Q29udGVudFR5cGUoQmxvYjo6bm9ybWFsaXplZENvbnRlbnRUeXBlKGV4dHJhY3RN
SU1FVHlwZUZyb21NZWRpYVR5cGUobV9taW1lVHlwZSkpKTsKKyAgICBjb25zdW1lKG93bmVyLCBX
VEZNb3ZlKHByb21pc2UpKTsKIH0KIAogdm9pZCBGZXRjaEJvZHk6Ompzb24oRmV0Y2hCb2R5T3du
ZXImIG93bmVyLCBEZWZlcnJlZFdyYXBwZXImJiBwcm9taXNlKQpAQCAtMTA2LDcgKzExMCw4IEBA
IHZvaWQgRmV0Y2hCb2R5Ojpqc29uKEZldGNoQm9keU93bmVyJiBvd25lciwgRGVmZXJyZWRXcmFw
cGVyJiYgcHJvbWlzZSkKICAgICAgICAgZnVsZmlsbFByb21pc2VXaXRoSlNPTihwcm9taXNlLCBt
X3RleHQpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGNvbnN1bWUob3duZXIsIENvbnN1
bWVyOjpUeXBlOjpKU09OLCBXVEZNb3ZlKHByb21pc2UpKTsKKyAgICBtX2NvbnN1bWVyLnNldFR5
cGUoRmV0Y2hCb2R5Q29uc3VtZXI6OlR5cGU6OkpTT04pOworICAgIGNvbnN1bWUob3duZXIsIFdU
Rk1vdmUocHJvbWlzZSkpOwogfQogCiB2b2lkIEZldGNoQm9keTo6dGV4dChGZXRjaEJvZHlPd25l
ciYgb3duZXIsIERlZmVycmVkV3JhcHBlciYmIHByb21pc2UpCkBAIC0xMTcsMTEzICsxMjIsOTUg
QEAgdm9pZCBGZXRjaEJvZHk6OnRleHQoRmV0Y2hCb2R5T3duZXImIG93bmVyLCBEZWZlcnJlZFdy
YXBwZXImJiBwcm9taXNlKQogICAgICAgICBwcm9taXNlLnJlc29sdmUobV90ZXh0KTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KLSAgICBjb25zdW1lKG93bmVyLCBDb25zdW1lcjo6VHlwZTo6VGV4
dCwgV1RGTW92ZShwcm9taXNlKSk7CisgICAgbV9jb25zdW1lci5zZXRUeXBlKEZldGNoQm9keUNv
bnN1bWVyOjpUeXBlOjpUZXh0KTsKKyAgICBjb25zdW1lKG93bmVyLCBXVEZNb3ZlKHByb21pc2Up
KTsKIH0KIAotdm9pZCBGZXRjaEJvZHk6OmNvbnN1bWUoRmV0Y2hCb2R5T3duZXImIG93bmVyLCBD
b25zdW1lcjo6VHlwZSB0eXBlLCBEZWZlcnJlZFdyYXBwZXImJiBwcm9taXNlKQordm9pZCBGZXRj
aEJvZHk6OmNvbnN1bWUoRmV0Y2hCb2R5T3duZXImIG93bmVyLCBEZWZlcnJlZFdyYXBwZXImJiBw
cm9taXNlKQogewotICAgIGlmIChtX3R5cGUgPT0gVHlwZTo6QXJyYXlCdWZmZXIpIHsKLSAgICAg
ICAgY29uc3VtZUFycmF5QnVmZmVyKHR5cGUsIHByb21pc2UpOworICAgIC8vIFRoaXMgc2hvdWxk
IGJlIGhhbmRsZWQgYnkgRmV0Y2hCb2R5T3duZXIKKyAgICBBU1NFUlQobV90eXBlICE9IFR5cGU6
Ok5vbmUpOworICAgIC8vIFRoaXMgc2hvdWxkIGJlIGhhbmRsZWQgYnkgSlMgYnVpbHQtaW5zCisg
ICAgQVNTRVJUKG1fdHlwZSAhPSBUeXBlOjpSZWFkYWJsZVN0cmVhbSk7CisKKyAgICBzd2l0Y2gg
KG1fdHlwZSkgeworICAgIGNhc2UgVHlwZTo6QXJyYXlCdWZmZXI6CisgICAgICAgIGNvbnN1bWVB
cnJheUJ1ZmZlcihwcm9taXNlKTsKICAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBpZiAobV90
eXBlID09IFR5cGU6OlRleHQpIHsKLSAgICAgICAgY29uc3VtZVRleHQodHlwZSwgcHJvbWlzZSk7
CisgICAgY2FzZSBUeXBlOjpUZXh0OgorICAgICAgICBjb25zdW1lVGV4dChwcm9taXNlKTsKICAg
ICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBpZiAobV90eXBlID09IFR5cGU6OkJsb2IpIHsKLSAg
ICAgICAgY29uc3VtZUJsb2Iob3duZXIsIHR5cGUsIFdURk1vdmUocHJvbWlzZSkpOworICAgIGNh
c2UgVHlwZTo6QmxvYjoKKyAgICAgICAgY29uc3VtZUJsb2Iob3duZXIsIFdURk1vdmUocHJvbWlz
ZSkpOwogICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmIChtX3R5cGUgPT0gVHlwZTo6TG9h
ZGluZykgewotICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGJlIGFibGUgdG8gY2hhbmdlIHRo
ZSBsb2FkaW5nIHR5cGUgdG8gdGV4dCBpZiBjb25zdW1lciB0eXBlIGlzIEpTT04gb3IgVGV4dC4K
LSAgICAgICAgbV9jb25zdW1lciA9IENvbnN1bWVyKHt0eXBlLCBXVEZNb3ZlKHByb21pc2UpfSk7
CisgICAgY2FzZSBUeXBlOjpMb2FkaW5nOgorICAgICAgICBtX2NvbnN1bWVQcm9taXNlID0gV1RG
TW92ZShwcm9taXNlKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgVHlwZTo6TG9hZGVkOgor
ICAgICAgICBtX2NvbnN1bWVyLnJlc29sdmUocHJvbWlzZSk7CiAgICAgICAgIHJldHVybjsKKyAg
ICBkZWZhdWx0OgorICAgICAgICAvLyBGSVhNRTogU3VwcG9ydCBvdGhlciB0eXBlcy4KKyAgICAg
ICAgcHJvbWlzZS5yZWplY3QoMCk7CiAgICAgfQotCi0gICAgLy8gRklYTUU6IFN1cHBvcnQgb3Ro
ZXIgdHlwZXMuCi0gICAgcHJvbWlzZS5yZWplY3QoMCk7CiB9CiAKICNpZiBFTkFCTEUoU1RSRUFN
U19BUEkpCiB2b2lkIEZldGNoQm9keTo6Y29uc3VtZUFzU3RyZWFtKEZldGNoQm9keU93bmVyJiBv
d25lciwgRmV0Y2hSZXNwb25zZVNvdXJjZSYgc291cmNlKQogeworICAgIC8vIFRoaXMgc2hvdWxk
IGJlIGhhbmRsZWQgYnkgRmV0Y2hSZXNwb25zZQogICAgIEFTU0VSVChtX3R5cGUgIT0gVHlwZTo6
TG9hZGluZyk7CisgICAgLy8gVGhpcyBzaG91bGQgYmUgaGFuZGxlZCBieSBKUyBidWlsdC1pbnMK
KyAgICBBU1NFUlQobV90eXBlICE9IFR5cGU6OlJlYWRhYmxlU3RyZWFtKTsKIAorICAgIGJvb2wg
Y2xvc2VTdHJlYW0gPSBmYWxzZTsKICAgICBzd2l0Y2ggKG1fdHlwZSkgewogICAgIGNhc2UgVHlw
ZTo6QXJyYXlCdWZmZXI6CiAgICAgICAgIEFTU0VSVChtX2RhdGEpOwotICAgICAgICBpZiAoc291
cmNlLmVucXVldWUoUmVmUHRyPEpTQzo6QXJyYXlCdWZmZXI+KG1fZGF0YSkpKQotICAgICAgICAg
ICAgc291cmNlLmNsb3NlKCk7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgY2xvc2VTdHJlYW0g
PSBzb3VyY2UuZW5xdWV1ZShSZWZQdHI8SlNDOjpBcnJheUJ1ZmZlcj4obV9kYXRhKSk7CisgICAg
ICAgIGJyZWFrOwogICAgIGNhc2UgVHlwZTo6VGV4dDogewogICAgICAgICBWZWN0b3I8dWludDhf
dD4gZGF0YSA9IGV4dHJhY3RGcm9tVGV4dCgpOwotICAgICAgICBpZiAoc291cmNlLmVucXVldWUo
QXJyYXlCdWZmZXI6OnRyeUNyZWF0ZShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpKSkKLSAgICAg
ICAgICAgIHNvdXJjZS5jbG9zZSgpOwotICAgICAgICByZXR1cm47CisgICAgICAgIGNsb3NlU3Ry
ZWFtID0gc291cmNlLmVucXVldWUoQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZShkYXRhLmRhdGEoKSwg
ZGF0YS5zaXplKCkpKTsKKyAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2UgVHlwZTo6Qmxv
YjoKICAgICAgICAgQVNTRVJUKG1fYmxvYik7Ci0gICAgICAgIG93bmVyLmxvYWRCbG9iKCptX2Js
b2IsIEZldGNoTG9hZGVyOjpUeXBlOjpTdHJlYW0pOwotICAgICAgICByZXR1cm47CisgICAgICAg
IG93bmVyLmxvYWRCbG9iKCptX2Jsb2IsIG51bGxwdHIpOworICAgICAgICBicmVhazsKICAgICBj
YXNlIFR5cGU6Ok5vbmU6Ci0gICAgICAgIHNvdXJjZS5jbG9zZSgpOwotICAgICAgICByZXR1cm47
CisgICAgICAgIGNsb3NlU3RyZWFtID0gdHJ1ZTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBU
eXBlOjpMb2FkZWQ6IHsKKyAgICAgICAgY2xvc2VTdHJlYW0gPSBzb3VyY2UuZW5xdWV1ZShtX2Nv
bnN1bWVyLnRha2VBc0FycmF5QnVmZmVyKCkpOworICAgICAgICBicmVhazsKKyAgICB9CiAgICAg
ZGVmYXVsdDoKICAgICAgICAgc291cmNlLmVycm9yKEFTQ0lJTGl0ZXJhbCgibm90IGltcGxlbWVu
dGVkIikpOwogICAgIH0KLX0KLSNlbmRpZgogCi12b2lkIEZldGNoQm9keTo6Y29uc3VtZUFycmF5
QnVmZmVyKENvbnN1bWVyOjpUeXBlIHR5cGUsIERlZmVycmVkV3JhcHBlciYgcHJvbWlzZSkKLXsK
LSAgICBpZiAodHlwZSA9PSBDb25zdW1lcjo6VHlwZTo6QXJyYXlCdWZmZXIpIHsKLSAgICAgICAg
ZnVsZmlsbFByb21pc2VXaXRoQXJyYXlCdWZmZXIocHJvbWlzZSwgbV9kYXRhLmdldCgpKTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBpZiAodHlwZSA9PSBDb25zdW1lcjo6VHlwZTo6Qmxv
YikgewotICAgICAgICBwcm9taXNlLnJlc29sdmUoYmxvYkZyb21BcnJheUJ1ZmZlcihtX2RhdGEu
Z2V0KCksIEJsb2I6Om5vcm1hbGl6ZWRDb250ZW50VHlwZShleHRyYWN0TUlNRVR5cGVGcm9tTWVk
aWFUeXBlKG1fbWltZVR5cGUpKSkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgQVNT
RVJUKHR5cGUgPT0gQ29uc3VtZXI6OlR5cGU6OlRleHQgfHwgdHlwZSA9PSBDb25zdW1lcjo6VHlw
ZTo6SlNPTik7Ci0gICAgLy8gRklYTUU6IERvIHdlIG5lZWQgVGV4dFJlc291cmNlRGVjb2RlciB0
byBjcmVhdGUgYSBTdHJpbmcgdG8gZGVjb2RlIFVURi04IGRhdGEuCi0gICAgZnVsZmlsbFRleHRQ
cm9taXNlKHR5cGUsIFRleHRSZXNvdXJjZURlY29kZXI6OmNyZWF0ZShBU0NJSUxpdGVyYWwoInRl
eHQvcGxhaW4iKSwgIlVURi04IiktPmRlY29kZUFuZEZsdXNoKHN0YXRpY19jYXN0PGNvbnN0IGNo
YXIqPihtX2RhdGEtPmRhdGEoKSksIG1fZGF0YS0+Ynl0ZUxlbmd0aCgpKSwgcHJvbWlzZSk7Cisg
ICAgaWYgKGNsb3NlU3RyZWFtKQorICAgICAgICBzb3VyY2UuY2xvc2UoKTsKIH0KKyNlbmRpZgog
Ci12b2lkIEZldGNoQm9keTo6Y29uc3VtZVRleHQoQ29uc3VtZXI6OlR5cGUgdHlwZSwgRGVmZXJy
ZWRXcmFwcGVyJiBwcm9taXNlKQordm9pZCBGZXRjaEJvZHk6OmNvbnN1bWVBcnJheUJ1ZmZlcihE
ZWZlcnJlZFdyYXBwZXImIHByb21pc2UpCiB7Ci0gICAgQVNTRVJUKHR5cGUgPT0gQ29uc3VtZXI6
OlR5cGU6OkFycmF5QnVmZmVyIHx8IHR5cGUgPT0gQ29uc3VtZXI6OlR5cGU6OkJsb2IpOwotCi0g
ICAgaWYgKHR5cGUgPT0gQ29uc3VtZXI6OlR5cGU6OkFycmF5QnVmZmVyKSB7Ci0gICAgICAgIFZl
Y3Rvcjx1aW50OF90PiBkYXRhID0gZXh0cmFjdEZyb21UZXh0KCk7Ci0gICAgICAgIGZ1bGZpbGxQ
cm9taXNlV2l0aEFycmF5QnVmZmVyKHByb21pc2UsIGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgU3RyaW5nIGNvbnRlbnRUeXBlID0gQmxvYjo6
bm9ybWFsaXplZENvbnRlbnRUeXBlKGV4dHJhY3RNSU1FVHlwZUZyb21NZWRpYVR5cGUobV9taW1l
VHlwZSkpOwotICAgIHByb21pc2UucmVzb2x2ZShCbG9iOjpjcmVhdGUoZXh0cmFjdEZyb21UZXh0
KCksIGNvbnRlbnRUeXBlKSk7CisgICAgbV9jb25zdW1lci5yZXNvbHZlV2l0aERhdGEocHJvbWlz
ZSwgc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KG1fZGF0YS0+ZGF0YSgpKSwgbV9kYXRhLT5i
eXRlTGVuZ3RoKCkpOwogfQogCi1GZXRjaExvYWRlcjo6VHlwZSBGZXRjaEJvZHk6OmxvYWRpbmdU
eXBlKENvbnN1bWVyOjpUeXBlIHR5cGUpCit2b2lkIEZldGNoQm9keTo6Y29uc3VtZVRleHQoRGVm
ZXJyZWRXcmFwcGVyJiBwcm9taXNlKQogewotICAgIHN3aXRjaCAodHlwZSkgewotICAgIGNhc2Ug
Q29uc3VtZXI6OlR5cGU6OkpTT046Ci0gICAgY2FzZSBDb25zdW1lcjo6VHlwZTo6VGV4dDoKLSAg
ICAgICAgcmV0dXJuIEZldGNoTG9hZGVyOjpUeXBlOjpUZXh0OwotICAgIGNhc2UgQ29uc3VtZXI6
OlR5cGU6OkJsb2I6Ci0gICAgY2FzZSBDb25zdW1lcjo6VHlwZTo6QXJyYXlCdWZmZXI6Ci0gICAg
ICAgIHJldHVybiBGZXRjaExvYWRlcjo6VHlwZTo6QXJyYXlCdWZmZXI7Ci0gICAgZGVmYXVsdDoK
LSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybiBGZXRjaExvYWRl
cjo6VHlwZTo6QXJyYXlCdWZmZXI7Ci0gICAgfTsKKyAgICBWZWN0b3I8dWludDhfdD4gZGF0YSA9
IGV4dHJhY3RGcm9tVGV4dCgpOworICAgIG1fY29uc3VtZXIucmVzb2x2ZVdpdGhEYXRhKHByb21p
c2UsIGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7CiB9CiAKLXZvaWQgRmV0Y2hCb2R5Ojpjb25z
dW1lQmxvYihGZXRjaEJvZHlPd25lciYgb3duZXIsIENvbnN1bWVyOjpUeXBlIHR5cGUsIERlZmVy
cmVkV3JhcHBlciYmIHByb21pc2UpCit2b2lkIEZldGNoQm9keTo6Y29uc3VtZUJsb2IoRmV0Y2hC
b2R5T3duZXImIG93bmVyLCBEZWZlcnJlZFdyYXBwZXImJiBwcm9taXNlKQogewogICAgIEFTU0VS
VChtX2Jsb2IpOwogCi0gICAgbV9jb25zdW1lciA9IENvbnN1bWVyKHt0eXBlLCBXVEZNb3ZlKHBy
b21pc2UpfSk7Ci0gICAgb3duZXIubG9hZEJsb2IoKm1fYmxvYiwgbG9hZGluZ1R5cGUodHlwZSkp
OworICAgIG1fY29uc3VtZVByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpOworICAgIG93bmVyLmxv
YWRCbG9iKCptX2Jsb2IsICZtX2NvbnN1bWVyKTsKIH0KIAogVmVjdG9yPHVpbnQ4X3Q+IEZldGNo
Qm9keTo6ZXh0cmFjdEZyb21UZXh0KCkgY29uc3QKQEAgLTIzNiw2MyArMjIzLDIxIEBAIFZlY3Rv
cjx1aW50OF90PiBGZXRjaEJvZHk6OmV4dHJhY3RGcm9tVGV4dCgpIGNvbnN0CiAgICAgcmV0dXJu
IHZhbHVlOwogfQogCi1zdGF0aWMgaW5saW5lIFJlZjxCbG9iPiBibG9iRnJvbUFycmF5QnVmZmVy
KEFycmF5QnVmZmVyKiBidWZmZXIsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpCi17Ci0gICAg
aWYgKCFidWZmZXIpCi0gICAgICAgIHJldHVybiBCbG9iOjpjcmVhdGUoVmVjdG9yPHVpbnQ4X3Q+
KCksIGNvbnRlbnRUeXBlKTsKLQotICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgdHJ5IHRvIG1vdmUg
YnVmZmVyIHRvIEJsb2Igd2l0aG91dCBkb2luZyB0aGlzIGNvcHkuCi0gICAgVmVjdG9yPHVpbnQ4
X3Q+IHZhbHVlKGJ1ZmZlci0+Ynl0ZUxlbmd0aCgpKTsKLSAgICBtZW1jcHkodmFsdWUuZGF0YSgp
LCBidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5ieXRlTGVuZ3RoKCkpOwotICAgIHJldHVybiBCbG9i
OjpjcmVhdGUoV1RGTW92ZSh2YWx1ZSksIGNvbnRlbnRUeXBlKTsKLX0KLQotdm9pZCBGZXRjaEJv
ZHk6OmZ1bGZpbGxUZXh0UHJvbWlzZShGZXRjaEJvZHk6OkNvbnN1bWVyOjpUeXBlIHR5cGUsIGNv
bnN0IFN0cmluZyYgdGV4dCwgRGVmZXJyZWRXcmFwcGVyJiBwcm9taXNlKQotewotICAgIEFTU0VS
VCh0eXBlID09IENvbnN1bWVyOjpUeXBlOjpUZXh0IHx8IHR5cGUgPT0gQ29uc3VtZXI6OlR5cGU6
OkpTT04pOwotICAgIGlmICh0eXBlID09IEZldGNoQm9keTo6Q29uc3VtZXI6OlR5cGU6OlRleHQp
Ci0gICAgICAgIHByb21pc2UucmVzb2x2ZSh0ZXh0KTsKLSAgICBlbHNlCi0gICAgICAgIGZ1bGZp
bGxQcm9taXNlV2l0aEpTT04ocHJvbWlzZSwgdGV4dCk7Ci19Ci0KIHZvaWQgRmV0Y2hCb2R5Ojps
b2FkaW5nRmFpbGVkKCkKIHsKLSAgICBBU1NFUlQobV9jb25zdW1lcik7Ci0gICAgbV9jb25zdW1l
ci0+cHJvbWlzZS5yZWplY3QoMCk7Ci0gICAgbV9jb25zdW1lciA9IE51bGxvcHQ7Ci19Ci0KLXZv
aWQgRmV0Y2hCb2R5Ojpsb2FkZWRBc0FycmF5QnVmZmVyKFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiBi
dWZmZXIpCi17Ci0gICAgaWYgKG1fdHlwZSA9PSBUeXBlOjpMb2FkaW5nKSB7Ci0gICAgICAgIG1f
dHlwZSA9IFR5cGU6OkFycmF5QnVmZmVyOwotICAgICAgICBtX2RhdGEgPSBidWZmZXI7Ci0gICAg
ICAgIGlmIChtX2NvbnN1bWVyKSB7Ci0gICAgICAgICAgICBjb25zdW1lQXJyYXlCdWZmZXIobV9j
b25zdW1lci0+dHlwZSwgbV9jb25zdW1lci0+cHJvbWlzZSk7Ci0gICAgICAgICAgICBtX2NvbnN1
bWVyID0gTnVsbG9wdDsKLSAgICAgICAgfQotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAg
QVNTRVJUKG1fY29uc3VtZXIpOwotICAgIEFTU0VSVChtX2NvbnN1bWVyLT50eXBlID09IENvbnN1
bWVyOjpUeXBlOjpCbG9iIHx8IG1fY29uc3VtZXItPnR5cGUgPT0gQ29uc3VtZXI6OlR5cGU6OkFy
cmF5QnVmZmVyKTsKLSAgICBpZiAobV9jb25zdW1lci0+dHlwZSA9PSBDb25zdW1lcjo6VHlwZTo6
QXJyYXlCdWZmZXIpCi0gICAgICAgIGZ1bGZpbGxQcm9taXNlV2l0aEFycmF5QnVmZmVyKG1fY29u
c3VtZXItPnByb21pc2UsIGJ1ZmZlci5nZXQoKSk7Ci0gICAgZWxzZSB7Ci0gICAgICAgIEFTU0VS
VChtX2Jsb2IpOwotICAgICAgICBtX2NvbnN1bWVyLT5wcm9taXNlLnJlc29sdmUoYmxvYkZyb21B
cnJheUJ1ZmZlcihidWZmZXIuZ2V0KCksIG1fYmxvYi0+dHlwZSgpKSk7CisgICAgaWYgKG1fY29u
c3VtZVByb21pc2UpIHsKKyAgICAgICAgbV9jb25zdW1lUHJvbWlzZS0+cmVqZWN0KDApOworICAg
ICAgICBtX2NvbnN1bWVQcm9taXNlID0gTnVsbG9wdDsKICAgICB9Ci0gICAgbV9jb25zdW1lciA9
IE51bGxvcHQ7CiB9CiAKLXZvaWQgRmV0Y2hCb2R5Ojpsb2FkZWRBc1RleHQoU3RyaW5nJiYgdGV4
dCkKK3ZvaWQgRmV0Y2hCb2R5Ojpsb2FkaW5nU3VjY2VlZGVkKCkKIHsKLSAgICBBU1NFUlQobV9j
b25zdW1lcik7Ci0gICAgQVNTRVJUKG1fY29uc3VtZXItPnR5cGUgPT0gQ29uc3VtZXI6OlR5cGU6
OlRleHQgfHwgbV9jb25zdW1lci0+dHlwZSA9PSBDb25zdW1lcjo6VHlwZTo6SlNPTik7Ci0KLSAg
ICBmdWxmaWxsVGV4dFByb21pc2UobV9jb25zdW1lci0+dHlwZSwgdGV4dCwgbV9jb25zdW1lci0+
cHJvbWlzZSk7Ci0gICAgbV9jb25zdW1lciA9IE51bGxvcHQ7CisgICAgbV90eXBlID0gbV9jb25z
dW1lci5oYXNEYXRhKCkgPyBUeXBlOjpMb2FkZWQgOiBUeXBlOjpOb25lOworICAgIGlmIChtX2Nv
bnN1bWVQcm9taXNlKSB7CisgICAgICAgIG1fY29uc3VtZXIucmVzb2x2ZSgqbV9jb25zdW1lUHJv
bWlzZSk7CisgICAgICAgIG1fY29uc3VtZVByb21pc2UgPSBOdWxsb3B0OworICAgIH0KIH0KIAog
UmVmUHRyPEZvcm1EYXRhPiBGZXRjaEJvZHk6OmJvZHlGb3JJbnRlcm5hbFJlcXVlc3QoKSBjb25z
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmgKaW5kZXggNTZmM2RmZGM4
NTcxYzMxNTExMmYyNjY1YzZmZmRhOTc1YTlkZjM5Mi4uNjJkOWU1YTc4N2Q1ODMzMGI2NjRmOGFj
NTZlZjI0NTMyY2VmNmRjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRj
aC9GZXRjaEJvZHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9k
eS5oCkBAIC0zMyw2ICszMyw3IEBACiAKICNpbmNsdWRlICJCbG9iLmgiCiAjaW5jbHVkZSAiRE9N
Rm9ybURhdGEuaCIKKyNpbmNsdWRlICJGZXRjaEJvZHlDb25zdW1lci5oIgogI2luY2x1ZGUgIkZl
dGNoTG9hZGVyLmgiCiAjaW5jbHVkZSAiSlNET01Qcm9taXNlLmgiCiAKQEAgLTcwLDM1ICs3MSwy
NyBAQCBwdWJsaWM6CiAgICAgRmV0Y2hCb2R5KCkgPSBkZWZhdWx0OwogCiAgICAgdm9pZCBsb2Fk
aW5nRmFpbGVkKCk7Ci0gICAgdm9pZCBsb2FkZWRBc0FycmF5QnVmZmVyKFJlZlB0cjxBcnJheUJ1
ZmZlcj4mJik7Ci0gICAgdm9pZCBsb2FkZWRBc1RleHQoU3RyaW5nJiYpOworICAgIHZvaWQgbG9h
ZGluZ1N1Y2NlZWRlZCgpOwogCiAgICAgUmVmUHRyPEZvcm1EYXRhPiBib2R5Rm9ySW50ZXJuYWxS
ZXF1ZXN0KCkgY29uc3Q7CiAKLSAgICBlbnVtIGNsYXNzIFR5cGUgeyBOb25lLCBBcnJheUJ1ZmZl
ciwgTG9hZGluZywgVGV4dCwgQmxvYiwgRm9ybURhdGEgfTsKKyAgICBlbnVtIGNsYXNzIFR5cGUg
eyBOb25lLCBBcnJheUJ1ZmZlciwgQmxvYiwgRm9ybURhdGEsIFRleHQsIExvYWRpbmcsIExvYWRl
ZCwgUmVhZGFibGVTdHJlYW0gfTsKICAgICBUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5
cGU7IH0KIAorICAgIEZldGNoQm9keUNvbnN1bWVyJiBjb25zdW1lcigpIHsgcmV0dXJuIG1fY29u
c3VtZXI7IH0KKwogcHJpdmF0ZToKICAgICBGZXRjaEJvZHkoUmVmPEJsb2I+JiYpOwogICAgIEZl
dGNoQm9keShSZWY8RE9NRm9ybURhdGE+JiYpOwogICAgIEZldGNoQm9keShTdHJpbmcmJik7CiAg
ICAgRmV0Y2hCb2R5KFR5cGUgdHlwZSkgOiBtX3R5cGUodHlwZSkgeyB9CiAKLSAgICBzdHJ1Y3Qg
Q29uc3VtZXIgewotICAgICAgICBlbnVtIGNsYXNzIFR5cGUgeyBUZXh0LCBCbG9iLCBKU09OLCBB
cnJheUJ1ZmZlciB9OwotCi0gICAgICAgIFR5cGUgdHlwZTsKLSAgICAgICAgRGVmZXJyZWRXcmFw
cGVyIHByb21pc2U7Ci0gICAgfTsKLSAgICB2b2lkIGNvbnN1bWUoRmV0Y2hCb2R5T3duZXImLCBD
b25zdW1lcjo6VHlwZSwgRGVmZXJyZWRXcmFwcGVyJiYpOworICAgIHZvaWQgY29uc3VtZShGZXRj
aEJvZHlPd25lciYsIERlZmVycmVkV3JhcHBlciYmKTsKIAogICAgIFZlY3Rvcjx1aW50OF90PiBl
eHRyYWN0RnJvbVRleHQoKSBjb25zdDsKLSAgICB2b2lkIGNvbnN1bWVBcnJheUJ1ZmZlcihDb25z
dW1lcjo6VHlwZSwgRGVmZXJyZWRXcmFwcGVyJik7Ci0gICAgdm9pZCBjb25zdW1lVGV4dChDb25z
dW1lcjo6VHlwZSwgRGVmZXJyZWRXcmFwcGVyJik7Ci0gICAgdm9pZCBjb25zdW1lQmxvYihGZXRj
aEJvZHlPd25lciYsIENvbnN1bWVyOjpUeXBlLCBEZWZlcnJlZFdyYXBwZXImJik7Ci0gICAgc3Rh
dGljIEZldGNoTG9hZGVyOjpUeXBlIGxvYWRpbmdUeXBlKENvbnN1bWVyOjpUeXBlKTsKLSAgICBz
dGF0aWMgdm9pZCBmdWxmaWxsVGV4dFByb21pc2UoRmV0Y2hCb2R5OjpDb25zdW1lcjo6VHlwZSwg
Y29uc3QgU3RyaW5nJiwgRGVmZXJyZWRXcmFwcGVyJik7Ci0gICAgc3RhdGljIHZvaWQgZnVsZmls
bEFycmF5QnVmZmVyUHJvbWlzZShGZXRjaEJvZHk6OkNvbnN1bWVyOjpUeXBlLCBjb25zdCBTdHJp
bmcmLCBEZWZlcnJlZFdyYXBwZXImKTsKKyAgICB2b2lkIGNvbnN1bWVBcnJheUJ1ZmZlcihEZWZl
cnJlZFdyYXBwZXImKTsKKyAgICB2b2lkIGNvbnN1bWVUZXh0KERlZmVycmVkV3JhcHBlciYpOwor
ICAgIHZvaWQgY29uc3VtZUJsb2IoRmV0Y2hCb2R5T3duZXImLCBEZWZlcnJlZFdyYXBwZXImJik7
CiAKICAgICBUeXBlIG1fdHlwZSB7IFR5cGU6Ok5vbmUgfTsKICAgICBTdHJpbmcgbV9taW1lVHlw
ZTsKQEAgLTEwOSw3ICsxMDIsOCBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4g
bV9kYXRhOwogICAgIFN0cmluZyBtX3RleHQ7CiAKLSAgICBPcHRpb25hbDxDb25zdW1lcj4gbV9j
b25zdW1lcjsKKyAgICBGZXRjaEJvZHlDb25zdW1lciBtX2NvbnN1bWVyIHsgRmV0Y2hCb2R5Q29u
c3VtZXI6OlR5cGU6Ok5vbmUgfTsKKyAgICBPcHRpb25hbDxEZWZlcnJlZFdyYXBwZXI+IG1fY29u
c3VtZVByb21pc2U7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmQ5MzI1MWJmOTRjZDM0MjdmNjc5ZmQ2MmVhZGU0ZThiYTAwMjM0NjcKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcApA
QCAtMCwwICsxLDE0MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQsIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgcmVxdWlyZWQgdG8gYmUgbWV0
OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUg
b2YgQXBwbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAg
IGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisg
KiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKKyAqIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwK
KyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SCisgKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgorICogQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwKKyAqIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJGZXRjaEJvZHlDb25zdW1lci5oIgor
CisjaWYgRU5BQkxFKEZFVENIX0FQSSkKKworI2luY2x1ZGUgIkpTQmxvYi5oIgorI2luY2x1ZGUg
IkpTRE9NUHJvbWlzZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0YXRpYyBpbmxpbmUg
UmVmPEJsb2I+IGJsb2JGcm9tRGF0YShjb25zdCB1bnNpZ25lZCBjaGFyKiBkYXRhLCB1bnNpZ25l
ZCBsZW5ndGgsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpCit7CisgICAgVmVjdG9yPHVpbnQ4
X3Q+IHZhbHVlKGxlbmd0aCk7CisgICAgbWVtY3B5KHZhbHVlLmRhdGEoKSwgZGF0YSwgbGVuZ3Ro
KTsKKyAgICByZXR1cm4gQmxvYjo6Y3JlYXRlKFdURk1vdmUodmFsdWUpLCBjb250ZW50VHlwZSk7
Cit9CisKK3ZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6OnJlc29sdmVXaXRoRGF0YShEZWZlcnJlZFdy
YXBwZXImIHByb21pc2UsIGNvbnN0IHVuc2lnbmVkIGNoYXIqIGRhdGEsIHVuc2lnbmVkIGxlbmd0
aCkKK3sKKyAgICBzd2l0Y2ggKG1fdHlwZSkgeworICAgIGNhc2UgVHlwZTo6QXJyYXlCdWZmZXI6
CisgICAgICAgIGZ1bGZpbGxQcm9taXNlV2l0aEFycmF5QnVmZmVyKHByb21pc2UsIGRhdGEsIGxl
bmd0aCk7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIFR5cGU6OkJsb2I6CisgICAgICAgIHBy
b21pc2UucmVzb2x2ZVdpdGhOZXdseUNyZWF0ZWQoYmxvYkZyb21EYXRhKGRhdGEsIGxlbmd0aCwg
bV9jb250ZW50VHlwZSkpOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBUeXBlOjpKU09OOgor
ICAgICAgICBmdWxmaWxsUHJvbWlzZVdpdGhKU09OKHByb21pc2UsIFN0cmluZyhkYXRhLCBsZW5n
dGgpKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgVHlwZTo6VGV4dDoKKyAgICAgICAgcHJv
bWlzZS5yZXNvbHZlKFN0cmluZyhkYXRhLCBsZW5ndGgpKTsKKyAgICAgICAgcmV0dXJuOworICAg
IGNhc2UgVHlwZTo6Tm9uZToKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAg
IHJldHVybjsKKyAgICB9Cit9CisKK3ZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6OnJlc29sdmUoRGVm
ZXJyZWRXcmFwcGVyJiBwcm9taXNlKQoreworICAgIEFTU0VSVChtX3R5cGUgIT0gVHlwZTo6Tm9u
ZSk7CisgICAgc3dpdGNoIChtX3R5cGUpIHsKKyAgICBjYXNlIFR5cGU6OkFycmF5QnVmZmVyOgor
ICAgICAgICBmdWxmaWxsUHJvbWlzZVdpdGhBcnJheUJ1ZmZlcihwcm9taXNlLCB0YWtlQXNBcnJh
eUJ1ZmZlcigpLmdldCgpKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgVHlwZTo6QmxvYjoK
KyAgICAgICAgcHJvbWlzZS5yZXNvbHZlV2l0aE5ld2x5Q3JlYXRlZCh0YWtlQXNCbG9iKCkpOwor
ICAgICAgICByZXR1cm47CisgICAgY2FzZSBUeXBlOjpKU09OOgorICAgICAgICBmdWxmaWxsUHJv
bWlzZVdpdGhKU09OKHByb21pc2UsIHRha2VBc1RleHQoKSk7CisgICAgICAgIHJldHVybjsKKyAg
ICBjYXNlIFR5cGU6OlRleHQ6CisgICAgICAgIHByb21pc2UucmVzb2x2ZSh0YWtlQXNUZXh0KCkp
OworICAgICAgICByZXR1cm47CisgICAgY2FzZSBUeXBlOjpOb25lOgorICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KK30KKwordm9pZCBGZXRjaEJv
ZHlDb25zdW1lcjo6YXBwZW5kKGNvbnN0IGNoYXIqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkKK3sK
KyAgICBpZiAoIW1fYnVmZmVyKSB7CisgICAgICAgIG1fYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpj
cmVhdGUoZGF0YSwgbGVuZ3RoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBtX2J1ZmZl
ci0+YXBwZW5kKGRhdGEsIGxlbmd0aCk7Cit9CisKK3ZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6OmFw
cGVuZChjb25zdCB1bnNpZ25lZCBjaGFyKiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpCit7CisgICAg
YXBwZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEpLCBsZW5ndGgpOworfQor
CitSZWZQdHI8U2hhcmVkQnVmZmVyPiBGZXRjaEJvZHlDb25zdW1lcjo6dGFrZURhdGEoKQorewor
ICAgIHJldHVybiBXVEZNb3ZlKG1fYnVmZmVyKTsKK30KKworUmVmUHRyPEpTQzo6QXJyYXlCdWZm
ZXI+IEZldGNoQm9keUNvbnN1bWVyOjp0YWtlQXNBcnJheUJ1ZmZlcigpCit7CisgICAgaWYgKCFt
X2J1ZmZlcikKKyAgICAgICAgcmV0dXJuIEFycmF5QnVmZmVyOjp0cnlDcmVhdGUobnVsbHB0ciwg
MCk7CisKKyAgICBhdXRvIGFycmF5QnVmZmVyID0gbV9idWZmZXItPmNyZWF0ZUFycmF5QnVmZmVy
KCk7CisgICAgbV9idWZmZXIgPSBudWxscHRyOworICAgIHJldHVybiBhcnJheUJ1ZmZlcjsKK30K
KworUmVmPEJsb2I+IEZldGNoQm9keUNvbnN1bWVyOjp0YWtlQXNCbG9iKCkKK3sKKyAgICBBU1NF
UlQobV9idWZmZXIpOworICAgIGlmICghbV9idWZmZXIpCisgICAgICAgIHJldHVybiBCbG9iOjpj
cmVhdGUoKTsKKworICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgdHJ5IHRvIG1vdmUgbV9idWZmZXIg
dG8gQmxvYiB3aXRob3V0IGRvaW5nIGV4dHJhIGNvcHkuCisgICAgcmV0dXJuIGJsb2JGcm9tRGF0
YShyZWludGVycHJldF9jYXN0PGNvbnN0IHVuc2lnbmVkIGNoYXIqPihtX2J1ZmZlci0+ZGF0YSgp
KSwgbV9idWZmZXItPnNpemUoKSwgbV9jb250ZW50VHlwZSk7Cit9CisKK1N0cmluZyBGZXRjaEJv
ZHlDb25zdW1lcjo6dGFrZUFzVGV4dCgpCit7CisgICAgaWYgKCFtX2J1ZmZlcikKKyAgICAgICAg
cmV0dXJuIFN0cmluZygpOworCisgICAgYXV0byB0ZXh0ID0gU3RyaW5nKG1fYnVmZmVyLT5kYXRh
KCksIG1fYnVmZmVyLT5zaXplKCkpOworICAgIG1fYnVmZmVyID0gbnVsbHB0cjsKKyAgICByZXR1
cm4gdGV4dDsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxF
KEZFVENIX0FQSSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0
Y2hCb2R5Q29uc3VtZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5
Q29uc3VtZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mYWExZmU3ZDI4YWM3YTZjYWUzMmFlYzc0NDQ1ZDk4MDgx
MzQ0YjNiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9G
ZXRjaEJvZHlDb25zdW1lci5oCkBAIC0wLDAgKzEsNzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTYgQXBwbGUgSW5jLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkLCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IHJlcXVpcmVkIHRvIGJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMu
ICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIEluYy4gbm9yIHRoZSBuYW1lcyBvZgorICogICAg
IGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
CisgKiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorICogU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIKKyAqIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisgKiBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShGRVRDSF9B
UEkpCisKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitjbGFzcyBCbG9iOworY2xhc3MgRGVmZXJyZWRXcmFwcGVyOworCitjbGFzcyBGZXRjaEJvZHlD
b25zdW1lciB7CitwdWJsaWM6CisgICAgLy8gVHlwZSBpcyB1c2VkIGluIEZldGNoUmVzcG9uc2Uu
anMgYW5kIHNob3VsZCBiZSBrZXB0IHN5bmNocm9uaXplZCB3aXRoIGl0LgorICAgIGVudW0gY2xh
c3MgVHlwZSB7IE5vbmUsIEFycmF5QnVmZmVyLCBCbG9iLCBKU09OLCBUZXh0IH07CisKKyAgICBG
ZXRjaEJvZHlDb25zdW1lcihUeXBlIHR5cGUpIDogbV90eXBlKHR5cGUpIHsgfQorCisgICAgdm9p
ZCBhcHBlbmQoY29uc3QgY2hhciogZGF0YSwgdW5zaWduZWQpOworICAgIHZvaWQgYXBwZW5kKGNv
bnN0IHVuc2lnbmVkIGNoYXIqIGRhdGEsIHVuc2lnbmVkKTsKKworICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IHRha2VEYXRhKCk7CisgICAgUmVmUHRyPEpTQzo6QXJyYXlCdWZmZXI+IHRha2VBc0Fy
cmF5QnVmZmVyKCk7CisgICAgUmVmPEJsb2I+IHRha2VBc0Jsb2IoKTsKKyAgICBTdHJpbmcgdGFr
ZUFzVGV4dCgpOworCisgICAgdm9pZCBzZXRDb250ZW50VHlwZShjb25zdCBTdHJpbmcmIGNvbnRl
bnRUeXBlKSB7IG1fY29udGVudFR5cGUgPSBjb250ZW50VHlwZTsgfQorICAgIHZvaWQgc2V0VHlw
ZShUeXBlIHR5cGUpIHsgbV90eXBlID0gdHlwZTsgfQorCisgICAgdm9pZCBjbGVhbigpIHsgbV9i
dWZmZXIgPSBudWxscHRyOyB9CisKKyAgICB2b2lkIHJlc29sdmUoRGVmZXJyZWRXcmFwcGVyJik7
CisgICAgdm9pZCByZXNvbHZlV2l0aERhdGEoRGVmZXJyZWRXcmFwcGVyJiwgY29uc3QgdW5zaWdu
ZWQgY2hhciosIHVuc2lnbmVkKTsKKworICAgIGJvb2wgaGFzRGF0YSgpIGNvbnN0IHsgcmV0dXJu
ICEhbV9idWZmZXI7IH0KKworcHJpdmF0ZToKKyAgICBUeXBlIG1fdHlwZTsKKyAgICBTdHJpbmcg
bV9jb250ZW50VHlwZTsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKK307CisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShGRVRDSF9BUEkpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keU93bmVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5T3duZXIuY3BwCmluZGV4
IDBmNDU3OTRhMDY5ZTJlZTYwOGIxODM3OGUzZGYxZjRiY2U3MzUzYTUuLjk2NGJlNzcxMTA0ZGE2
NzE5N2QzZDUwNGM2OTg4MTQxOGNjODU2ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5T3duZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZmV0Y2gvRmV0Y2hCb2R5T3duZXIuY3BwCkBAIC0xMzgsNyArMTM4LDcgQEAgdm9pZCBGZXRj
aEJvZHlPd25lcjo6dGV4dChEZWZlcnJlZFdyYXBwZXImJiBwcm9taXNlKQogICAgIG1fYm9keS50
ZXh0KCp0aGlzLCBXVEZNb3ZlKHByb21pc2UpKTsKIH0KIAotdm9pZCBGZXRjaEJvZHlPd25lcjo6
bG9hZEJsb2IoQmxvYiYgYmxvYiwgRmV0Y2hMb2FkZXI6OlR5cGUgdHlwZSkKK3ZvaWQgRmV0Y2hC
b2R5T3duZXI6OmxvYWRCbG9iKEJsb2ImIGJsb2IsIEZldGNoQm9keUNvbnN1bWVyKiBjb25zdW1l
cikKIHsKICAgICAvLyBDYW4gb25seSBiZSBjYWxsZWQgb25jZSBmb3IgYSBib2R5IGluc3RhbmNl
LgogICAgIEFTU0VSVChpc0Rpc3R1cmJlZCgpKTsKQEAgLTE1MCw3ICsxNTAsNyBAQCB2b2lkIEZl
dGNoQm9keU93bmVyOjpsb2FkQmxvYihCbG9iJiBibG9iLCBGZXRjaExvYWRlcjo6VHlwZSB0eXBl
KQogICAgIH0KIAogICAgIG1fYmxvYkxvYWRlciA9IHsgKnRoaXMgfTsKLSAgICBtX2Jsb2JMb2Fk
ZXItPmxvYWRlciA9IHN0ZDo6bWFrZV91bmlxdWU8RmV0Y2hMb2FkZXI+KHR5cGUsICptX2Jsb2JM
b2FkZXIpOworICAgIG1fYmxvYkxvYWRlci0+bG9hZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxGZXRj
aExvYWRlcj4oKm1fYmxvYkxvYWRlciwgY29uc3VtZXIpOwogCiAgICAgbV9ibG9iTG9hZGVyLT5s
b2FkZXItPnN0YXJ0KCpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIGJsb2IpOwogICAgIGlmICgh
bV9ibG9iTG9hZGVyLT5sb2FkZXItPmlzU3RhcnRlZCgpKSB7CkBAIC0xNjksMTEgKzE2OSw2IEBA
IHZvaWQgRmV0Y2hCb2R5T3duZXI6OmZpbmlzaEJsb2JMb2FkaW5nKCkKICAgICB1bnNldFBlbmRp
bmdBY3Rpdml0eSh0aGlzKTsKIH0KIAotdm9pZCBGZXRjaEJvZHlPd25lcjo6bG9hZGVkQmxvYkFz
VGV4dChTdHJpbmcmJiB0ZXh0KQotewotICAgIG1fYm9keS5sb2FkZWRBc1RleHQoV1RGTW92ZSh0
ZXh0KSk7Ci19Ci0KIHZvaWQgRmV0Y2hCb2R5T3duZXI6OmJsb2JMb2FkaW5nU3VjY2VlZGVkKCkK
IHsKICAgICBBU1NFUlQobV9ib2R5LnR5cGUoKSA9PSBGZXRjaEJvZHk6OlR5cGU6OkJsb2IpOwpA
QCAtMTg0LDcgKzE3OSw3IEBAIHZvaWQgRmV0Y2hCb2R5T3duZXI6OmJsb2JMb2FkaW5nU3VjY2Vl
ZGVkKCkKICAgICAgICAgbV9yZWFkYWJsZVN0cmVhbVNvdXJjZSA9IG51bGxwdHI7CiAgICAgfQog
I2VuZGlmCi0KKyAgICBtX2JvZHkubG9hZGluZ1N1Y2NlZWRlZCgpOwogICAgIGZpbmlzaEJsb2JM
b2FkaW5nKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gv
RmV0Y2hCb2R5T3duZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5
T3duZXIuaAppbmRleCAwNmEyMTI2NjVjMzlmYzM5MDdkMzhlMTNmNGNjMTMzY2M4NzJjN2I0Li44
N2I3MmYwYTQ5OWY5MzM2YTQwZmE0ODYzM2ExODkwOTIyM2IxZDk2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keU93bmVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlPd25lci5oCkBAIC01Miw3ICs1Miw3IEBAIHB1
YmxpYzoKICAgICB2b2lkIGpzb24oRGVmZXJyZWRXcmFwcGVyJiYpOwogICAgIHZvaWQgdGV4dChE
ZWZlcnJlZFdyYXBwZXImJik7CiAKLSAgICB2b2lkIGxvYWRCbG9iKEJsb2ImLCBGZXRjaExvYWRl
cjo6VHlwZSk7CisgICAgdm9pZCBsb2FkQmxvYihCbG9iJiwgRmV0Y2hCb2R5Q29uc3VtZXIqKTsK
IAogICAgIGJvb2wgaXNBY3RpdmUoKSBjb25zdCB7IHJldHVybiAhIW1fYmxvYkxvYWRlcjsgfQog
CkBAIC02Nyw4ICs2Nyw2IEBAIHByb3RlY3RlZDoKIAogcHJpdmF0ZToKICAgICAvLyBCbG9iIGxv
YWRpbmcgcm91dGluZXMKLSAgICB2b2lkIGxvYWRlZEJsb2JBc1RleHQoU3RyaW5nJiYpOwotICAg
IHZvaWQgbG9hZGVkQmxvYkFzQXJyYXlCdWZmZXIoUmVmUHRyPEFycmF5QnVmZmVyPiYmIGJ1ZmZl
cikgeyBtX2JvZHkubG9hZGVkQXNBcnJheUJ1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpOyB9CiAgICAg
dm9pZCBibG9iQ2h1bmsoY29uc3QgY2hhciosIHNpemVfdCk7CiAgICAgdm9pZCBibG9iTG9hZGlu
Z1N1Y2NlZWRlZCgpOwogICAgIHZvaWQgYmxvYkxvYWRpbmdGYWlsZWQoKTsKQEAgLTc4LDggKzc2
LDYgQEAgcHJpdmF0ZToKICAgICAgICAgQmxvYkxvYWRlcihGZXRjaEJvZHlPd25lciYpOwogCiAg
ICAgICAgIC8vIEZldGNoTG9hZGVyQ2xpZW50IEFQSQotICAgICAgICB2b2lkIGRpZEZpbmlzaExv
YWRpbmdBc1RleHQoU3RyaW5nJiYgdGV4dCkgZmluYWwgeyBvd25lci5sb2FkZWRCbG9iQXNUZXh0
KFdURk1vdmUodGV4dCkpOyB9Ci0gICAgICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZ0FzQXJyYXlC
dWZmZXIoUmVmUHRyPEFycmF5QnVmZmVyPiYmIGJ1ZmZlcikgZmluYWwgeyBvd25lci5sb2FkZWRC
bG9iQXNBcnJheUJ1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpOyB9CiAgICAgICAgIHZvaWQgZGlkUmVj
ZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBmaW5hbDsKICAgICAgICAgdm9p
ZCBkaWRSZWNlaXZlRGF0YShjb25zdCBjaGFyKiBkYXRhLCBzaXplX3Qgc2l6ZSkgZmluYWwgeyBv
d25lci5ibG9iQ2h1bmsoZGF0YSwgc2l6ZSk7IH0KICAgICAgICAgdm9pZCBkaWRGYWlsKCkgZmlu
YWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoSW50ZXJu
YWxzLmpzIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEludGVybmFscy5qcwpp
bmRleCA0NTJlYzc2MzUzNWE4MDllYThkODI5OGUwNjkzNWVlNWIzMDc2ZTRiLi5kNzUwMDRlMmY4
MDg1YjE1YzcxMDA3MDAxNWJlZGQxYjVhYmIyMmM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2ZldGNoL0ZldGNoSW50ZXJuYWxzLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZmV0Y2gvRmV0Y2hJbnRlcm5hbHMuanMKQEAgLTUxLDMgKzUxLDI3IEBAIGZ1bmN0aW9u
IGZpbGxGZXRjaEhlYWRlcnMoaGVhZGVycywgaGVhZGVyc0luaXQpCiAgICAgICAgIEBIZWFkZXJz
LnByb3RvdHlwZS5AYXBwZW5kRnJvbUpTLkBjYWxsKGhlYWRlcnMsIG5hbWUsIGhlYWRlcnNJbml0
W25hbWVdKTsKICAgICB9CiB9CisKK2Z1bmN0aW9uIGNvbnN1bWVTdHJlYW0ocmVzcG9uc2UsIHR5
cGUpCit7CisgICAgQGFzc2VydChyZXNwb25zZSBpbnN0YW5jZW9mIEBSZXNwb25zZSk7CisgICAg
QGFzc2VydChyZXNwb25zZS5AYm9keSBpbnN0YW5jZW9mIEBSZWFkYWJsZVN0cmVhbSk7CisKKyAg
ICBpZiAoQGlzUmVhZGFibGVTdHJlYW1EaXN0dXJiZWQocmVzcG9uc2UuQGJvZHkpKQorICAgICAg
ICByZXR1cm4gQFByb21pc2UuQHJlamVjdChuZXcgQFR5cGVFcnJvcigiQ2Fubm90IGNvbnN1bWUg
YSBkaXN0dXJiZWQgUmVzcG9uc2UgYm9keSBSZWFkYWJsZVN0cmVhbSIpKTsKKworICAgIHRyeSB7
CisgICAgICAgIGxldCByZWFkZXIgPSBuZXcgQFJlYWRhYmxlU3RyZWFtUmVhZGVyKHJlc3BvbnNl
LkBib2R5KTsKKworICAgICAgICBAUmVzcG9uc2UucHJvdG90eXBlLkBzdGFydENvbnN1bWluZ1N0
cmVhbS5AY2FsbChyZXNwb25zZSwgdHlwZSk7CisgICAgICAgIGxldCBwdWxsID0gKHJlc3VsdCkg
PT4geworICAgICAgICAgICAgaWYgKHJlc3VsdC5kb25lKQorICAgICAgICAgICAgICAgIHJldHVy
biBAUmVzcG9uc2UucHJvdG90eXBlLkBmaW5pc2hDb25zdW1pbmdTdHJlYW0uQGNhbGwocmVzcG9u
c2UpOworICAgICAgICAgICAgQFJlc3BvbnNlLnByb3RvdHlwZS5AY29uc3VtZUNodW5rLkBjYWxs
KHJlc3BvbnNlLCByZXN1bHQudmFsdWUpOworICAgICAgICAgICAgcmV0dXJuIEBQcm9taXNlLnBy
b3RvdHlwZS5AdGhlbi5AY2FsbChAcmVhZEZyb21SZWFkYWJsZVN0cmVhbVJlYWRlcihyZWFkZXIp
LCBwdWxsKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gQFByb21pc2UucHJvdG90eXBlLkB0
aGVuLkBjYWxsKEByZWFkRnJvbVJlYWRhYmxlU3RyZWFtUmVhZGVyKHJlYWRlciksIHB1bGwpOwor
ICAgIH0gY2F0Y2goZSkgeworICAgICAgICByZXR1cm4gQFByb21pc2UuQHJlamVjdChlKTsKKyAg
ICB9Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoTG9h
ZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuY3BwCmlu
ZGV4IDFiMjNmMDQ5ZTY3YjQ2NzFjMWUxNmE2ODllMWRiMmI0NGFkMTNmODAuLmU2M2JjMWIyZDMz
YzMyZDIxZTQ5Zjk5YTU3MjI2NDczMDE1MjYyZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuY3BwCkBAIC04OSwyNCArODksMjYgQEAgdm9pZCBGZXRjaExv
YWRlcjo6c3RhcnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmV0Y2hS
ZXF1ZXN0JiByZXEKICAgICBtX2lzU3RhcnRlZCA9IG1fbG9hZGVyOwogfQogCi1GZXRjaExvYWRl
cjo6RmV0Y2hMb2FkZXIoVHlwZSB0eXBlLCBGZXRjaExvYWRlckNsaWVudCYgY2xpZW50KQotICAg
IDogbV90eXBlKHR5cGUpCi0gICAgLCBtX2NsaWVudChjbGllbnQpCitGZXRjaExvYWRlcjo6RmV0
Y2hMb2FkZXIoRmV0Y2hMb2FkZXJDbGllbnQmIGNsaWVudCwgRmV0Y2hCb2R5Q29uc3VtZXIqIGNv
bnN1bWVyKQorICAgIDogbV9jbGllbnQoY2xpZW50KQorICAgICwgbV9jb25zdW1lcihjb25zdW1l
cikKIHsKIH0KIAogdm9pZCBGZXRjaExvYWRlcjo6c3RvcCgpCiB7Ci0gICAgbV9kYXRhID0gbnVs
bHB0cjsKKyAgICBpZiAobV9jb25zdW1lcikKKyAgICAgICAgbV9jb25zdW1lci0+Y2xlYW4oKTsK
ICAgICBpZiAobV9sb2FkZXIpCiAgICAgICAgIG1fbG9hZGVyLT5jYW5jZWwoKTsKIH0KIAogUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gRmV0Y2hMb2FkZXI6OnN0YXJ0U3RyZWFtaW5nKCkKIHsKLSAgICBB
U1NFUlQobV90eXBlID09IFR5cGU6OkFycmF5QnVmZmVyKTsKLSAgICBtX3R5cGUgPSBUeXBlOjpT
dHJlYW07Ci0gICAgcmV0dXJuIFdURk1vdmUobV9kYXRhKTsKKyAgICBBU1NFUlQobV9jb25zdW1l
cik7CisgICAgYXV0byBmaXJzdENodW5rID0gbV9jb25zdW1lci0+dGFrZURhdGEoKTsKKyAgICBt
X2NvbnN1bWVyID0gbnVsbHB0cjsKKyAgICByZXR1cm4gZmlyc3RDaHVuazsKIH0KIAogdm9pZCBG
ZXRjaExvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKHVuc2lnbmVkIGxvbmcsIGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQpAQCAtMTE0LDI5ICsxMTYsMTcgQEAgdm9pZCBGZXRjaExv
YWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKHVuc2lnbmVkIGxvbmcsIGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmIHJlc3AKICAgICBtX2NsaWVudC5kaWRSZWNlaXZlUmVzcG9uc2UocmVzcG9uc2UpOwog
fQogCi0vLyBGSVhNRTogV2Ugc2hvdWxkIG1ha2UgdGV4dCBhbmQgYmxvYiBjcmVhdGlvbiBtb3Jl
IGVmZmljaWVudC4KLS8vIFdlIG1pZ2h0IGFsc28gd2FudCB0byBtZXJnZSB0aGlzIGNsYXNzIHdp
dGggRmlsZVJlYWRlckxvYWRlci4KIHZvaWQgRmV0Y2hMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNv
bnN0IGNoYXIqIHZhbHVlLCBpbnQgc2l6ZSkKIHsKLSAgICBpZiAobV90eXBlID09IFR5cGU6OlN0
cmVhbSkgeworICAgIGlmICghbV9jb25zdW1lcikgewogICAgICAgICBtX2NsaWVudC5kaWRSZWNl
aXZlRGF0YSh2YWx1ZSwgc2l6ZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgaWYgKCFt
X2RhdGEpIHsKLSAgICAgICAgbV9kYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUodmFsdWUsIHNp
emUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIG1fZGF0YS0+YXBwZW5kKHZhbHVlLCBz
aXplKTsKKyAgICBtX2NvbnN1bWVyLT5hcHBlbmQodmFsdWUsIHNpemUpOwogfQogCiB2b2lkIEZl
dGNoTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKHVuc2lnbmVkIGxvbmcsIGRvdWJsZSkKIHsKLSAg
ICBpZiAobV90eXBlID09IFR5cGU6OkFycmF5QnVmZmVyKQotICAgICAgICBtX2NsaWVudC5kaWRG
aW5pc2hMb2FkaW5nQXNBcnJheUJ1ZmZlcihtX2RhdGEgPyBtX2RhdGEtPmNyZWF0ZUFycmF5QnVm
ZmVyKCkgOiBBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlKG51bGxwdHIsIDApKTsKLSAgICBlbHNlIGlm
IChtX3R5cGUgPT0gVHlwZTo6VGV4dCkKLSAgICAgICAgbV9jbGllbnQuZGlkRmluaXNoTG9hZGlu
Z0FzVGV4dChtX2RhdGEgPyBUZXh0UmVzb3VyY2VEZWNvZGVyOjpjcmVhdGUoQVNDSUlMaXRlcmFs
KCJ0ZXh0L3BsYWluIiksICJVVEYtOCIpLT5kZWNvZGVBbmRGbHVzaChtX2RhdGEtPmRhdGEoKSwg
bV9kYXRhLT5zaXplKCkpOiBTdHJpbmcoKSk7Ci0gICAgbV9kYXRhID0gbnVsbHB0cjsKLQogICAg
IG1fY2xpZW50LmRpZFN1Y2NlZWQoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRj
aC9GZXRjaExvYWRlci5oCmluZGV4IGQ0NzNmZjE3NDUxZmNhNWMxYTcxM2ZiNTQzYmQwYjZhMGIx
ZGUwMmIuLmRiYjgyZmJlYmQ1NTllNzdkMWNlMWI2MTZiYzZkMGI0ZjFhZWYzYzMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyLmgKQEAgLTI2LDEyICsyNiwxMSBA
QAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIEZldGNoTG9hZGVyX2gKLSNkZWZpbmUg
RmV0Y2hMb2FkZXJfaAorI3ByYWdtYSBvbmNlCiAKICNpZiBFTkFCTEUoRkVUQ0hfQVBJKQogCi0j
aW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCisjaW5jbHVkZSAiRmV0Y2hCb2R5Q29uc3VtZXIuaCIK
ICNpbmNsdWRlICJUaHJlYWRhYmxlTG9hZGVyLmgiCiAjaW5jbHVkZSAiVGhyZWFkYWJsZUxvYWRl
ckNsaWVudC5oIgogCkBAIC00NCw5ICs0Myw3IEBAIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQ7CiAKIGNsYXNzIEZldGNoTG9hZGVyIGZpbmFsIDogcHVibGljIFRocmVhZGFibGVMb2FkZXJD
bGllbnQgewogcHVibGljOgotICAgIGVudW0gY2xhc3MgVHlwZSB7IEFycmF5QnVmZmVyLCBTdHJl
YW0sIFRleHQgfTsKLQotICAgIEZldGNoTG9hZGVyKFR5cGUsIEZldGNoTG9hZGVyQ2xpZW50Jik7
CisgICAgRmV0Y2hMb2FkZXIoRmV0Y2hMb2FkZXJDbGllbnQmLCBGZXRjaEJvZHlDb25zdW1lciop
OwogCiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc3RhcnRTdHJlYW1pbmcoKTsKIApAQCAtNjMs
MTggKzYwLDEzIEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKHVuc2lnbmVk
IGxvbmcsIGRvdWJsZSkgZmluYWw7CiAgICAgdm9pZCBkaWRGYWlsKGNvbnN0IFJlc291cmNlRXJy
b3ImKSBmaW5hbDsKIAotICAgIFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQot
CiBwcml2YXRlOgotICAgIFR5cGUgbV90eXBlIHsgVHlwZTo6QXJyYXlCdWZmZXIgfTsKICAgICBG
ZXRjaExvYWRlckNsaWVudCYgbV9jbGllbnQ7CiAgICAgUmVmUHRyPFRocmVhZGFibGVMb2FkZXI+
IG1fbG9hZGVyOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fZGF0YTsKKyAgICBGZXRjaEJv
ZHlDb25zdW1lciogbV9jb25zdW1lcjsKICAgICBib29sIG1faXNTdGFydGVkIHsgZmFsc2UgfTsK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShGRVRDSF9B
UEkpCi0KLSNlbmRpZiAvLyBGZXRjaExvYWRlcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2ZldGNoL0ZldGNoTG9hZGVyQ2xpZW50LmgKaW5kZXggZDA5ZmFkNTNlMjdlNmQ4YWMyMmFk
YjdjYTlmNDUxMDI3OGRhNDE1MC4uZTg4ZTk5NDE4Y2Q5OTE0YTFlZTQ4MTg3N2Q2MWFkY2I2ZTA0
ZWFmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRl
ckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXJD
bGllbnQuaApAQCAtNDcsOCArNDcsNiBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlk
UmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSB7IH0KIAotICAgIHZpcnR1
YWwgdm9pZCBkaWRGaW5pc2hMb2FkaW5nQXNUZXh0KFN0cmluZyYmKSB7IH0KLSAgICB2aXJ0dWFs
IHZvaWQgZGlkRmluaXNoTG9hZGluZ0FzQXJyYXlCdWZmZXIoUmVmUHRyPEpTQzo6QXJyYXlCdWZm
ZXI+JiYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBjaGFyKiwg
c2l6ZV90KSB7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBkaWRTdWNjZWVkKCkgPSAwOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAKaW5kZXggYzJlOGFi
YWFiMTFhMjAxNTQwZDhiZDEyODUwZTUxZTcwYjJlYTMwMS4uNjczOGZhMzE4M2M5NjExNTkxMTJj
ZTE4Y2QwNTBjYjg4MGRhODQwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9m
ZXRjaC9GZXRjaFJlc3BvbnNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNo
L0ZldGNoUmVzcG9uc2UuY3BwCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiRXhjZXB0aW9u
Q29kZS5oIgogI2luY2x1ZGUgIkZldGNoUmVxdWVzdC5oIgogI2luY2x1ZGUgIkhUVFBQYXJzZXJz
LmgiCisjaW5jbHVkZSAiSlNCbG9iLmgiCiAjaW5jbHVkZSAiSlNGZXRjaFJlc3BvbnNlLmgiCiAj
aW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgogCkBAIC05MywxMyArOTQsMTEgQEAg
RmV0Y2hSZXNwb25zZTo6RmV0Y2hSZXNwb25zZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250
ZXh0LCBGZXRjaEJvZHkmJiBib2R5LAogewogfQogCi1SZWZQdHI8RmV0Y2hSZXNwb25zZT4gRmV0
Y2hSZXNwb25zZTo6Y2xvbmUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgRXhjZXB0
aW9uQ29kZSYgZWMpCitSZWY8RmV0Y2hSZXNwb25zZT4gRmV0Y2hSZXNwb25zZTo6Y2xvbmVGb3JK
UygpCiB7Ci0gICAgaWYgKGlzRGlzdHVyYmVkKCkpIHsKLSAgICAgICAgZWMgPSBUeXBlRXJyb3I7
Ci0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIH0KLSAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBGZXRjaFJlc3BvbnNlKGNvbnRleHQsIEZldGNoQm9keShtX2JvZHkpLCBGZXRjaEhlYWRlcnM6
OmNyZWF0ZShoZWFkZXJzKCkpLCBSZXNvdXJjZVJlc3BvbnNlKG1fcmVzcG9uc2UpKSk7CisgICAg
QVNTRVJUKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CisgICAgQVNTRVJUKCFpc0Rpc3R1cmJl
ZCgpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBGZXRjaFJlc3BvbnNlKCpzY3JpcHRFeGVj
dXRpb25Db250ZXh0KCksIEZldGNoQm9keShtX2JvZHkpLCBGZXRjaEhlYWRlcnM6OmNyZWF0ZSho
ZWFkZXJzKCkpLCBSZXNvdXJjZVJlc3BvbnNlKG1fcmVzcG9uc2UpKSk7CiB9CiAKIHZvaWQgRmV0
Y2hSZXNwb25zZTo6ZmV0Y2goU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgRmV0Y2hS
ZXF1ZXN0JiByZXF1ZXN0LCBGZXRjaFByb21pc2UmJiBwcm9taXNlKQpAQCAtMTMwLDYgKzEyOSw4
IEBAIHZvaWQgRmV0Y2hSZXNwb25zZTo6Qm9keUxvYWRlcjo6ZGlkU3VjY2VlZCgpCiAgICAgICAg
IG1fcmVzcG9uc2UubV9yZWFkYWJsZVN0cmVhbVNvdXJjZSA9IG51bGxwdHI7CiAgICAgfQogI2Vu
ZGlmCisgICAgbV9yZXNwb25zZS5tX2JvZHkubG9hZGluZ1N1Y2NlZWRlZCgpOworCiAgICAgaWYg
KG1fbG9hZGVyLT5pc1N0YXJ0ZWQoKSkKICAgICAgICAgbV9yZXNwb25zZS5tX2JvZHlMb2FkZXIg
PSBOdWxsb3B0OwogICAgIG1fcmVzcG9uc2UudW5zZXRQZW5kaW5nQWN0aXZpdHkoJm1fcmVzcG9u
c2UpOwpAQCAtMTg3LDE0ICsxODgsOSBAQCB2b2lkIEZldGNoUmVzcG9uc2U6OkJvZHlMb2FkZXI6
OmRpZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBzaXplKQogI2VuZGlmCiB9
CiAKLXZvaWQgRmV0Y2hSZXNwb25zZTo6Qm9keUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZ0FzQXJy
YXlCdWZmZXIoUmVmUHRyPEFycmF5QnVmZmVyPiYmIGJ1ZmZlcikKLXsKLSAgICBtX3Jlc3BvbnNl
LmJvZHkoKS5sb2FkZWRBc0FycmF5QnVmZmVyKFdURk1vdmUoYnVmZmVyKSk7Ci19Ci0KIGJvb2wg
RmV0Y2hSZXNwb25zZTo6Qm9keUxvYWRlcjo6c3RhcnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYg
Y29udGV4dCwgY29uc3QgRmV0Y2hSZXF1ZXN0JiByZXF1ZXN0KQogewotICAgIG1fbG9hZGVyID0g
c3RkOjptYWtlX3VuaXF1ZTxGZXRjaExvYWRlcj4oRmV0Y2hMb2FkZXI6OlR5cGU6OkFycmF5QnVm
ZmVyLCAqdGhpcyk7CisgICAgbV9sb2FkZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEZldGNoTG9hZGVy
PigqdGhpcywgJm1fcmVzcG9uc2UubV9ib2R5LmNvbnN1bWVyKCkpOwogICAgIG1fbG9hZGVyLT5z
dGFydChjb250ZXh0LCByZXF1ZXN0KTsKICAgICByZXR1cm4gbV9sb2FkZXItPmlzU3RhcnRlZCgp
OwogfQpAQCAtMjA1LDcgKzIwMSw0NiBAQCB2b2lkIEZldGNoUmVzcG9uc2U6OkJvZHlMb2FkZXI6
OnN0b3AoKQogICAgICAgICBtX2xvYWRlci0+c3RvcCgpOwogfQogCit2b2lkIEZldGNoUmVzcG9u
c2U6OmNvbnN1bWUodW5zaWduZWQgdHlwZSwgRGVmZXJyZWRXcmFwcGVyJiYgd3JhcHBlcikKK3sK
KyAgICBBU1NFUlQodHlwZSA8PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oRmV0Y2hCb2R5Q29uc3Vt
ZXI6OlR5cGU6OlRleHQpKTsKKworICAgIHN3aXRjaCAoc3RhdGljX2Nhc3Q8RmV0Y2hCb2R5Q29u
c3VtZXI6OlR5cGU+KHR5cGUpKSB7CisgICAgY2FzZSBGZXRjaEJvZHlDb25zdW1lcjo6VHlwZTo6
QXJyYXlCdWZmZXI6CisgICAgICAgIGFycmF5QnVmZmVyKFdURk1vdmUod3JhcHBlcikpOworICAg
ICAgICByZXR1cm47CisgICAgY2FzZSBGZXRjaEJvZHlDb25zdW1lcjo6VHlwZTo6QmxvYjoKKyAg
ICAgICAgYmxvYihXVEZNb3ZlKHdyYXBwZXIpKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2Ug
RmV0Y2hCb2R5Q29uc3VtZXI6OlR5cGU6OkpTT046CisgICAgICAgIGpzb24oV1RGTW92ZSh3cmFw
cGVyKSk7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIEZldGNoQm9keUNvbnN1bWVyOjpUeXBl
OjpUZXh0OgorICAgICAgICB0ZXh0KFdURk1vdmUod3JhcHBlcikpOworICAgICAgICByZXR1cm47
CisgICAgY2FzZSBGZXRjaEJvZHlDb25zdW1lcjo6VHlwZTo6Tm9uZToKKyAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9Cit9CisKICNpZiBFTkFCTEUo
U1RSRUFNU19BUEkpCit2b2lkIEZldGNoUmVzcG9uc2U6OnN0YXJ0Q29uc3VtaW5nU3RyZWFtKHVu
c2lnbmVkIHR5cGUpCit7CisgICAgbV9pc0Rpc3R1cmJlZCA9IHRydWU7CisgICAgbV9jb25zdW1l
ci5zZXRUeXBlKHN0YXRpY19jYXN0PEZldGNoQm9keUNvbnN1bWVyOjpUeXBlPih0eXBlKSk7Cit9
CisKK3ZvaWQgRmV0Y2hSZXNwb25zZTo6Y29uc3VtZUNodW5rKFJlZjxKU0M6OlVpbnQ4QXJyYXk+
JiYgY2h1bmspCit7CisgICAgbV9jb25zdW1lci5hcHBlbmQoY2h1bmstPmRhdGEoKSwgY2h1bmst
PmJ5dGVMZW5ndGgoKSk7Cit9CisKK3ZvaWQgRmV0Y2hSZXNwb25zZTo6ZmluaXNoQ29uc3VtaW5n
U3RyZWFtKERlZmVycmVkV3JhcHBlciYmIHByb21pc2UpCit7CisgICAgbV9jb25zdW1lci5yZXNv
bHZlKHByb21pc2UpOworfQorCiB2b2lkIEZldGNoUmVzcG9uc2U6OmNvbnN1bWVCb2R5QXNTdHJl
YW0oKQogewogICAgIEFTU0VSVChtX3JlYWRhYmxlU3RyZWFtU291cmNlKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmgKaW5kZXggNTczYzI3MDhkOGRjOTRk
ZGE4MTA1YjRjOTYwYzUxNTk2ODU0MjA0Zi4uODQ4NjI1MTQwNTA3ZDgwYzgzNmQ3MTk1NWExYjNi
NmZkYjI4YjI2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRj
aFJlc3BvbnNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3Bv
bnNlLmgKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJGZXRjaEJvZHlPd25lci5oIgogI2lu
Y2x1ZGUgIkZldGNoSGVhZGVycy5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVzcG9uc2UuaCIKKyNp
bmNsdWRlIDxydW50aW1lL1R5cGVkQXJyYXlzLmg+CiAKIG5hbWVzcGFjZSBKU0MgewogY2xhc3Mg
QXJyYXlCdWZmZXI7CkBAIC01OSw2ICs2MCwxMyBAQCBwdWJsaWM6CiAgICAgdXNpbmcgRmV0Y2hQ
cm9taXNlID0gRE9NUHJvbWlzZTxGZXRjaFJlc3BvbnNlPjsKICAgICBzdGF0aWMgdm9pZCBmZXRj
aChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgRmV0Y2hSZXF1ZXN0JiwgRmV0Y2hQcm9taXNlJiYp
OwogCisgICAgdm9pZCBjb25zdW1lKHVuc2lnbmVkLCBEZWZlcnJlZFdyYXBwZXImJik7CisjaWYg
RU5BQkxFKFNUUkVBTVNfQVBJKQorICAgIHZvaWQgc3RhcnRDb25zdW1pbmdTdHJlYW0odW5zaWdu
ZWQpOworICAgIHZvaWQgY29uc3VtZUNodW5rKFJlZjxKU0M6OlVpbnQ4QXJyYXk+JiYpOworICAg
IHZvaWQgZmluaXNoQ29uc3VtaW5nU3RyZWFtKERlZmVycmVkV3JhcHBlciYmKTsKKyNlbmRpZgor
CiAgICAgdm9pZCBzZXRTdGF0dXMoaW50LCBjb25zdCBTdHJpbmcmLCBFeGNlcHRpb25Db2RlJik7
CiAgICAgdm9pZCBpbml0aWFsaXplV2l0aChKU0M6OkV4ZWNTdGF0ZSYsIEpTQzo6SlNWYWx1ZSk7
CiAKQEAgLTcwLDcgKzc4LDcgQEAgcHVibGljOgogICAgIGNvbnN0IFN0cmluZyYgc3RhdHVzVGV4
dCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzcG9uc2UuaHR0cFN0YXR1c1RleHQoKTsgfQogCiAgICAg
RmV0Y2hIZWFkZXJzJiBoZWFkZXJzKCkgeyByZXR1cm4gbV9oZWFkZXJzOyB9Ci0gICAgUmVmUHRy
PEZldGNoUmVzcG9uc2U+IGNsb25lKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBFeGNlcHRpb25D
b2RlJik7CisgICAgUmVmPEZldGNoUmVzcG9uc2U+IGNsb25lRm9ySlMoKTsKIAogI2lmIEVOQUJM
RShTVFJFQU1TX0FQSSkKICAgICBSZWFkYWJsZVN0cmVhbVNvdXJjZSogY3JlYXRlUmVhZGFibGVT
dHJlYW1Tb3VyY2UoKTsKQEAgLTEwNSw3ICsxMTMsNiBAQCBwcml2YXRlOgogICAgICAgICB2b2lk
IGRpZEZhaWwoKSBmaW5hbDsKICAgICAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYpIGZpbmFsOwogICAgICAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNv
bnN0IGNoYXIqLCBzaXplX3QpIGZpbmFsOwotICAgICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmdB
c0FycmF5QnVmZmVyKFJlZlB0cjxBcnJheUJ1ZmZlcj4mJikgZmluYWw7CiAKICAgICAgICAgRmV0
Y2hSZXNwb25zZSYgbV9yZXNwb25zZTsKICAgICAgICAgT3B0aW9uYWw8RmV0Y2hQcm9taXNlPiBt
X3Byb21pc2U7CkBAIC0xMTYsNiArMTIzLDggQEAgcHJpdmF0ZToKICAgICBSZWY8RmV0Y2hIZWFk
ZXJzPiBtX2hlYWRlcnM7CiAgICAgT3B0aW9uYWw8Qm9keUxvYWRlcj4gbV9ib2R5TG9hZGVyOwog
ICAgIG11dGFibGUgU3RyaW5nIG1fcmVzcG9uc2VVUkw7CisKKyAgICBGZXRjaEJvZHlDb25zdW1l
ciBtX2NvbnN1bWVyIHsgRmV0Y2hCb2R5Q29uc3VtZXI6OlR5cGU6OkFycmF5QnVmZmVyICB9Owog
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZmV0Y2gvRmV0Y2hSZXNwb25zZS5pZGwKaW5kZXggM2ZiMTQ4ODE0MzU0Y2U3ZDFmODQwMTgwYmM5
OTBkZmIyM2QwYTkyYi4uYmUzYzJjZTAyOTM3ZjYyMzhmODY1ZDkyMTkyMjZiNmZiMWQxNzAxYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmlk
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaWRsCkBA
IC01MywxMSArNTMsMjUgQEAgaW50ZXJmYWNlIEZldGNoUmVzcG9uc2UgewogICAgIHJlYWRvbmx5
IGF0dHJpYnV0ZSBGZXRjaEhlYWRlcnMgaGVhZGVyczsKICAgICBbSlNCdWlsdGluXSByZWFkb25s
eSBhdHRyaWJ1dGUgUmVhZGFibGVTdHJlYW0/IGJvZHk7CiAKLSAgICBbTmV3T2JqZWN0LCBDYWxs
V2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0LCBSYWlzZXNFeGNlcHRpb25dIEZldGNoUmVzcG9u
c2UgY2xvbmUoKTsKKyAgICAvLyBDb3B5IG9mIEZldGNoQm9keSBJREwgYXMgd2Ugd2FudCB0byBp
bXBsZW1lbnQgc29tZSBvZiB0aGVzZSBhcyBidWlsdC1pbnMuCisgICAgW0ltcGxlbWVudGVkQXM9
aXNEaXN0dXJiZWRdIHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuIGJvZHlVc2VkOworICAgIFtK
U0J1aWx0aW5dIFByb21pc2UgYXJyYXlCdWZmZXIoKTsKKyAgICBbSlNCdWlsdGluXSBQcm9taXNl
IGJsb2IoKTsKKyAgICBbSlNCdWlsdGluXSBQcm9taXNlIGZvcm1EYXRhKCk7CisgICAgW0pTQnVp
bHRpbl0gUHJvbWlzZSBqc29uKCk7CisgICAgW0pTQnVpbHRpbl0gUHJvbWlzZSB0ZXh0KCk7CiAK
KyAgICBbSlNCdWlsdGluXSBGZXRjaFJlc3BvbnNlIGNsb25lKCk7CisKKyAgICBbUHJpdmF0ZUlk
ZW50aWZpZXIsIE5ld09iamVjdF0gRmV0Y2hSZXNwb25zZSBjbG9uZUZvckpTKCk7CisKKyAgICBb
Q29uZGl0aW9uYWw9U1RSRUFNU19BUEksIFByaXZhdGVJZGVudGlmaWVyXSB2b2lkIHN0YXJ0Q29u
c3VtaW5nU3RyZWFtKHVuc2lnbmVkIHNob3J0IHR5cGUpOworICAgIFtDb25kaXRpb25hbD1TVFJF
QU1TX0FQSSwgUHJpdmF0ZUlkZW50aWZpZXJdIHZvaWQgY29uc3VtZUNodW5rKFVpbnQ4QXJyYXkg
Y2h1bmspOworICAgIFtDb25kaXRpb25hbD1TVFJFQU1TX0FQSSwgUHJpdmF0ZUlkZW50aWZpZXJd
IFByb21pc2UgZmluaXNoQ29uc3VtaW5nU3RyZWFtKCk7CisKKyAgICBbUHJpdmF0ZUlkZW50aWZp
ZXJdIFByb21pc2UgY29uc3VtZSh1bnNpZ25lZCBzaG9ydCB0eXBlKTsKICAgICBbUHJpdmF0ZUlk
ZW50aWZpZXIsIFJhaXNlc0V4Y2VwdGlvbl0gdm9pZCBzZXRTdGF0dXModW5zaWduZWQgc2hvcnQg
c3RhdHVzLCBET01TdHJpbmcgc3RhdHVzVGV4dCk7CiAgICAgW0NhbGxXaXRoPVNjcmlwdFN0YXRl
LCBQcml2YXRlSWRlbnRpZmllcl0gdm9pZCBpbml0aWFsaXplV2l0aChhbnkgYm9keSk7CiAgICAg
W1ByaXZhdGVJZGVudGlmaWVyLCBOZXdPYmplY3RdIFJlYWRhYmxlU3RyZWFtU291cmNlIGNyZWF0
ZVJlYWRhYmxlU3RyZWFtU291cmNlKCk7CiAgICAgW1ByaXZhdGVJZGVudGlmaWVyXSBib29sZWFu
IGlzRGlzdHVyYmVkKCk7CiB9OwotRmV0Y2hSZXNwb25zZSBpbXBsZW1lbnRzIEZldGNoQm9keTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5q
cyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5qcwppbmRleCBj
NGFjYzAxMDExZjRjMWVlNjM3MGRjMzM0MTMzOWRiNjg1ODE5MDNlLi44YTRkYWJmMWI4MTA2YmZl
MmI2YzEwN2NiZWVmZTdmYzNmOTY4YWEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuanMKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9m
ZXRjaC9GZXRjaFJlc3BvbnNlLmpzCkBAIC00OCw2ICs0OCwxMiBAQCBmdW5jdGlvbiBpbml0aWFs
aXplRmV0Y2hSZXNwb25zZShib2R5LCBpbml0KQogICAgIGlmIChib2R5ICE9PSBAdW5kZWZpbmVk
ICYmIGJvZHkgIT09IG51bGwpIHsKICAgICAgICAgaWYgKHN0YXR1cyA9PSAxMDEgfHwgc3RhdHVz
ID09IDIwNCB8fCBzdGF0dXMgPT0gMjA1IHx8IHN0YXR1cyA9PSAzMDQpCiAgICAgICAgICAgICB0
aHJvdyBuZXcgQFR5cGVFcnJvcigiUmVzcG9uc2UgY2Fubm90IGhhdmUgYSBib2R5IHdpdGggdGhl
IGdpdmVuIHN0YXR1cyIpOworCisgICAgICAgIC8vIEZJWE1FOiBVc2UgQGlzUmVhZGFibGVTdHJl
YW0gb25jZSBpdCBpcyBubyBsb25nZXIgZ3VhcmRlZCBieSBTVFJFQU1TX0FQSSBndWFyZC4KKyAg
ICAgICAgbGV0IGlzQm9keVJlYWRhYmxlU3RyZWFtID0gKEBpc09iamVjdChib2R5KSAmJiAhIWJv
ZHkuQHVuZGVybHlpbmdTb3VyY2UpOworICAgICAgICBpZiAoaXNCb2R5UmVhZGFibGVTdHJlYW0p
CisgICAgICAgICAgdGhpcy5AYm9keSA9IGJvZHk7CisKICAgICAgICAgdGhpcy5AaW5pdGlhbGl6
ZVdpdGgoYm9keSk7CiAgICAgfQogCkBAIC02OCwzICs3NCw3NyBAQCBmdW5jdGlvbiBib2R5KCkK
ICAgICB9CiAgICAgcmV0dXJuIHRoaXMuQGJvZHk7CiB9CisKK2Z1bmN0aW9uIGNsb25lKCkKK3sK
KyAgICBpZiAoIXRoaXMgaW5zdGFuY2VvZiBAUmVzcG9uc2UpCisgICAgICAgIHRocm93IG5ldyBA
VHlwZUVycm9yKCJGdW5jdGlvbiBzaG91bGQgYmUgY2FsbGVkIG9uIGEgUmVzcG9uc2UiKTsKKwor
ICAgIGlmIChAUmVzcG9uc2UucHJvdG90eXBlLkBpc0Rpc3R1cmJlZC5AY2FsbCh0aGlzKSkKKyAg
ICAgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3IoIkNhbm5vdCBjbG9uZSBhIGRpc3R1cmJlZCBSZXNw
b25zZSIpOworCisgICAgdmFyIGNsb25lZCA9IEBSZXNwb25zZS5wcm90b3R5cGUuQGNsb25lRm9y
SlMuQGNhbGwodGhpcyk7CisgICAgaWYgKHRoaXMuQGJvZHkpIHsKKyAgICAgICAgdmFyIHRlZWRS
ZWFkYWJsZVN0cmVhbXMgPSBAdGVlUmVhZGFibGVTdHJlYW0odGhpcy5AYm9keSwgZmFsc2UpOwor
ICAgICAgICB0aGlzLkBib2R5ID0gdGVlZFJlYWRhYmxlU3RyZWFtc1swXTsKKyAgICAgICAgY2xv
bmVkLkBib2R5ID0gdGVlZFJlYWRhYmxlU3RyZWFtc1sxXTsKKyAgICB9CisgICAgcmV0dXJuIGNs
b25lZDsKK30KKworLy8gY29uc3VtZSBhbmQgY29uc3VtZVN0cmVhbSBzaW5nbGUgcGFyYW1ldGVy
IHNob3VsZCBiZSBrZXB0IGluIHN5bmMgd2l0aCBGZXRjaEJvZHlDb25zdW1lcjo6VHlwZS4KK2Z1
bmN0aW9uIGFycmF5QnVmZmVyKCkKK3sKKyAgICBpZiAoIXRoaXMgaW5zdGFuY2VvZiBAUmVzcG9u
c2UpCisgICAgICAgIHRocm93IG5ldyBAVHlwZUVycm9yKCJGdW5jdGlvbiBzaG91bGQgYmUgY2Fs
bGVkIG9uIGEgUmVzcG9uc2UiKTsKKworICAgIGNvbnN0IGFycmF5QnVmZmVyQ29uc3VtZXJUeXBl
ID0gMTsKKyAgICBpZiAoIXRoaXMuQGJvZHkpCisgICAgICAgIHJldHVybiBAUmVzcG9uc2UucHJv
dG90eXBlLkBjb25zdW1lLkBjYWxsKHRoaXMsIGFycmF5QnVmZmVyQ29uc3VtZXJUeXBlKTsKKwor
ICAgIHJldHVybiBAY29uc3VtZVN0cmVhbSh0aGlzLCBhcnJheUJ1ZmZlckNvbnN1bWVyVHlwZSk7
Cit9CisKK2Z1bmN0aW9uIGJsb2IoKQoreworICAgIGlmICghdGhpcyBpbnN0YW5jZW9mIEBSZXNw
b25zZSkKKyAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3IoIkZ1bmN0aW9uIHNob3VsZCBiZSBj
YWxsZWQgb24gYSBSZXNwb25zZSIpOworCisgICAgY29uc3QgYmxvYkNvbnN1bWVyVHlwZSA9IDI7
CisgICAgaWYgKCF0aGlzLkBib2R5KQorICAgICAgICByZXR1cm4gQFJlc3BvbnNlLnByb3RvdHlw
ZS5AY29uc3VtZS5AY2FsbCh0aGlzLCBibG9iQ29uc3VtZXJUeXBlKTsKKworICAgIHJldHVybiBA
Y29uc3VtZVN0cmVhbSh0aGlzLCBibG9iQ29uc3VtZXJUeXBlKTsKK30KKworZnVuY3Rpb24gZm9y
bURhdGEoKQoreworICAgIGlmICghdGhpcyBpbnN0YW5jZW9mIEBSZXNwb25zZSkKKyAgICAgICAg
dGhyb3cgbmV3IEBUeXBlRXJyb3IoIkZ1bmN0aW9uIHNob3VsZCBiZSBjYWxsZWQgb24gYSBSZXNw
b25zZSIpOworCisgICAgcmV0dXJuIEBQcm9taXNlLkByZWplY3QoIk5vdCBpbXBsZW1lbnRlZCIp
OworfQorCitmdW5jdGlvbiBqc29uKCkKK3sKKyAgICBpZiAoIXRoaXMgaW5zdGFuY2VvZiBAUmVz
cG9uc2UpCisgICAgICAgIHRocm93IG5ldyBAVHlwZUVycm9yKCJGdW5jdGlvbiBzaG91bGQgYmUg
Y2FsbGVkIG9uIGEgUmVzcG9uc2UiKTsKKworICAgIGNvbnN0IGpzb25Db25zdW1lclR5cGUgPSAz
OworICAgIGlmICghdGhpcy5AYm9keSkKKyAgICAgICAgcmV0dXJuIEBSZXNwb25zZS5wcm90b3R5
cGUuQGNvbnN1bWUuQGNhbGwodGhpcywganNvbkNvbnN1bWVyVHlwZSk7CisKKyAgICByZXR1cm4g
QGNvbnN1bWVTdHJlYW0odGhpcywganNvbkNvbnN1bWVyVHlwZSk7Cit9CisKK2Z1bmN0aW9uIHRl
eHQoKQoreworICAgIGlmICghdGhpcyBpbnN0YW5jZW9mIEBSZXNwb25zZSkKKyAgICAgICAgdGhy
b3cgbmV3IEBUeXBlRXJyb3IoIkZ1bmN0aW9uIHNob3VsZCBiZSBjYWxsZWQgb24gYSBSZXNwb25z
ZSIpOworCisgICAgY29uc3QgdGV4dENvbnN1bWVyVHlwZSA9IDQ7CisgICAgaWYgKCF0aGlzLkBi
b2R5KQorICAgICAgICByZXR1cm4gQFJlc3BvbnNlLnByb3RvdHlwZS5AY29uc3VtZS5AY2FsbCh0
aGlzLCB0ZXh0Q29uc3VtZXJUeXBlKTsKKworICAgIHJldHVybiBAY29uc3VtZVN0cmVhbSh0aGlz
LCB0ZXh0Q29uc3VtZXJUeXBlKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBiNGE1NTk3YTA2ODA4ZTM0MzFmZGQ5OWQyZGFk
Y2ZmOWM0NGU0YzE2Li4zNzNhOTNjYmVkOGU4YTk4MzU0MDA2NGJjYWEyNzNjNGFhOTE3N2NiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CkBAIC0xNjMxLDYgKzE2MzEsNyBAQAogCQk0MUJGNzAwRjBGRTg2RjYxMDA1RThERUMgLyogUGxh
dGZvcm1NZXNzYWdlUG9ydENoYW5uZWwuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDFCRjcwMEQwRkU4NkY2MTAwNUU4REVDIC8qIFBsYXRmb3JtTWVz
c2FnZVBvcnRDaGFubmVsLmNwcCAqLzsgfTsKIAkJNDFCRjcwMTAwRkU4NkY2MTAwNUU4REVDIC8q
IFBsYXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0MUJGNzAwRTBGRTg2RjYxMDA1RThERUMgLyogUGxhdGZvcm1N
ZXNzYWdlUG9ydENoYW5uZWwuaCAqLzsgfTsKIAkJNDFDNzYwQjEwRURFMDNEMzAwQzE2NTVGIC8q
IFNjcmlwdFN0YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA0MUM3NjBCMDBFREUwM0QzMDBDMTY1NUYgLyogU2NyaXB0U3RhdGUuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk0MUNGOEJFNzFENDYyMjY3
MDA3MDdEQzkgLyogRmV0Y2hCb2R5Q29uc3VtZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFDRjhCRTQxRDQ2MjIyMDAwNzA3REM5IC8qIEZldGNo
Qm9keUNvbnN1bWVyLmNwcCAqLzsgfTsKIAkJNDFEMDE1Q0EwRjRCNUM3MTAwNEE2NjJGIC8qIENv
bnRlbnRUeXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0MUQwMTVDODBGNEI1QzcxMDA0QTY2MkYgLyogQ29udGVudFR5cGUuaCAqLzsgfTsKIAkJNDFE
MDE1Q0IwRjRCNUM3MTAwNEE2NjJGIC8qIENvbnRlbnRUeXBlLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRDAxNUM5MEY0QjVDNzEwMDRBNjYyRiAv
KiBDb250ZW50VHlwZS5jcHAgKi87IH07CiAJCTQxRTFCMUQwMEZGNTk4NjkwMDU3NkIzQiAvKiBB
YnN0cmFjdFdvcmtlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0MUUxQjFDQTBGRjU5ODY5MDA1NzZCM0IgLyogQWJzdHJhY3RXb3JrZXIuY3BwICov
OyB9OwpAQCAtOTIxOCw2ICs5MjE5LDkgQEAKIAkJNDFCRjcwMEQwRkU4NkY2MTAwNUU4REVDIC8q
IFBsYXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgbmFtZSA9IFBsYXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsLmNwcDsgcGF0aCA9IGRlZmF1
bHQvUGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWwuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk0MUJGNzAwRTBGRTg2RjYxMDA1RThERUMgLyogUGxhdGZvcm1NZXNzYWdlUG9ydENo
YW5uZWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gUGxhdGZvcm1NZXNzYWdl
UG9ydENoYW5uZWwuaDsgcGF0aCA9IGRlZmF1bHQvUGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWwu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFDNzYwQjAwRURFMDNEMzAwQzE2NTVG
IC8qIFNjcmlwdFN0YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcmlw
dFN0YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxQ0Y4QkU0MUQ0NjIyMjAw
MDcwN0RDOSAvKiBGZXRjaEJvZHlDb25zdW1lci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBGZXRjaEJvZHlDb25zdW1lci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTQxQ0Y4QkU1MUQ0NjIyMjAwMDcwN0RDOSAvKiBGZXRjaEJvZHlDb25zdW1lci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGZXRjaEJvZHlDb25zdW1lci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MUNGOEJFNjFENDYyMjJDMDA3MDdEQzkgLyog
RmV0Y2hJbnRlcm5hbHMuanMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmphdmFzY3JpcHQ7IHBhdGgg
PSBGZXRjaEludGVybmFscy5qczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFEMDE1
QzgwRjRCNUM3MTAwNEE2NjJGIC8qIENvbnRlbnRUeXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IENvbnRlbnRUeXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTQxRDAxNUM5MEY0QjVDNzEwMDRBNjYyRiAvKiBDb250ZW50VHlwZS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDb250ZW50VHlwZS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTQxRTFCMUNBMEZGNTk4NjkwMDU3NkIzQiAvKiBBYnN0cmFjdFdvcmtl
ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBYnN0cmFjdFdvcmtl
ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNzA5OCwxMiArMTcxMDIsMTUg
QEAKIAkJCQk0MUY1NEY3RDFDNTBDNEY2MDAzMzg0ODggLyogRmV0Y2hCb2R5LmNwcCAqLywKIAkJ
CQk0MUY1NEY3RTFDNTBDNEY2MDAzMzg0ODggLyogRmV0Y2hCb2R5LmggKi8sCiAJCQkJNDFGNTRG
N0YxQzUwQzRGNjAwMzM4NDg4IC8qIEZldGNoQm9keS5pZGwgKi8sCisJCQkJNDFDRjhCRTQxRDQ2
MjIyMDAwNzA3REM5IC8qIEZldGNoQm9keUNvbnN1bWVyLmNwcCAqLywKKwkJCQk0MUNGOEJFNTFE
NDYyMjIwMDA3MDdEQzkgLyogRmV0Y2hCb2R5Q29uc3VtZXIuaCAqLywKIAkJCQk0MTQ3RTJCMzFD
ODk5MTI2MDBBN0U3MTUgLyogRmV0Y2hCb2R5T3duZXIuY3BwICovLAogCQkJCTQxNDdFMkIyMUM4
ODMzN0YwMEE3RTcxNSAvKiBGZXRjaEJvZHlPd25lci5oICovLAogCQkJCTQxRjU0RjgyMUM1MEM0
RjYwMDMzODQ4OCAvKiBGZXRjaEhlYWRlcnMuY3BwICovLAogCQkJCTQxRjU0RjgzMUM1MEM0RjYw
MDMzODQ4OCAvKiBGZXRjaEhlYWRlcnMuaCAqLywKIAkJCQk0MUY1NEY4NDFDNTBDNEY2MDAzMzg0
ODggLyogRmV0Y2hIZWFkZXJzLmlkbCAqLywKIAkJCQk0MUY1NEY4NTFDNTBDNEY2MDAzMzg0ODgg
LyogRmV0Y2hIZWFkZXJzLmpzICovLAorCQkJCTQxQ0Y4QkU2MUQ0NjIyMkMwMDcwN0RDOSAvKiBG
ZXRjaEludGVybmFscy5qcyAqLywKIAkJCQk0MTQ3RTJCNDFDODk5MTI2MDBBN0U3MTUgLyogRmV0
Y2hMb2FkZXIuY3BwICovLAogCQkJCTQxNDdFMkI1MUM4OTkxMjYwMEE3RTcxNSAvKiBGZXRjaExv
YWRlci5oICovLAogCQkJCTQxNDdFMkI2MUM4OTkxMjYwMEE3RTcxNSAvKiBGZXRjaExvYWRlckNs
aWVudC5oICovLApAQCAtMzA3NzIsNiArMzA3NzksNyBAQAogCQkJCUJDMDZFREUzMEJGRDZEMEQw
MDg1NkU5RCAvKiBKU0hUTUxUYWJsZUNlbGxFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUJDMDZFRDlEMEJGRDY2MDYwMDg1NkU5RCAvKiBKU0hUTUxUYWJsZUNvbEVsZW1lbnQuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQkMwNkVFMDQwQkZENzFBQTAwODU2RTlEIC8qIEpTSFRNTFRhYmxl
RWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk0MUNGOEJFNzFENDYyMjY3MDA3MDdEQzkg
LyogRmV0Y2hCb2R5Q29uc3VtZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkMwNkVEOUYwQkZE
NjYwNjAwODU2RTlEIC8qIEpTSFRNTFRhYmxlUm93RWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlCQzA2RUQwNjBCRkQ1QkFFMDA4NTZFOUQgLyogSlNIVE1MVGFibGVTZWN0aW9uRWxlbWVu
dC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlENjQ4OUQyNTE2NkZGQ0YxMDA3QzAzMUIgLyogSlNI
VE1MVGVtcGxhdGVFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Qcm9taXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RPTVByb21pc2UuaAppbmRleCAxMjc1YTMyZTY3OGRkZDhiZWNhMjU0YmQxZDZk
NGQxOWYwMjRjMjg3Li40ZTIyZTMzNGZmMzc2YWQzODQ5YmYwZDEwOTk5Yjk3YmQ5ZDliYzgwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVByb21pc2UuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVByb21pc2UuaApAQCAtMTE4LDYgKzEx
OCw4IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTxjbGFzcyBSZWplY3RSZXN1bHRUeXBlPiB0eXBl
bmFtZSBzdGQ6OmVuYWJsZV9pZjxQcm9taXNlUmVzdWx0SW5zcGVjdG9yPFJlamVjdFJlc3VsdFR5
cGU+OjpwYXNzQnlDb25zdFJlZiwgdm9pZD46OnR5cGUKICAgICByZWplY3QoY29uc3QgUmVqZWN0
UmVzdWx0VHlwZSYgcmVzdWx0KSB7IHJlamVjdFdpdGhWYWx1ZShyZXN1bHQpOyB9CiAKKyAgICB0
ZW1wbGF0ZTxjbGFzcyBSZXNvbHZlUmVzdWx0VHlwZT4gdm9pZCByZXNvbHZlV2l0aE5ld2x5Q3Jl
YXRlZChSZWY8UmVzb2x2ZVJlc3VsdFR5cGU+JiYpOworCiAgICAgdm9pZCByZWplY3QoRXhjZXB0
aW9uQ29kZSwgY29uc3QgU3RyaW5nJiA9IHsgfSk7CiAKICAgICBKU0RPTUdsb2JhbE9iamVjdCYg
Z2xvYmFsT2JqZWN0KCkgY29uc3Q7CkBAIC0xODEsNiArMTgzLDE2IEBAIGlubGluZSB2b2lkIERl
ZmVycmVkV3JhcHBlcjo6cmVzb2x2ZVdpdGhWYWx1ZShSZXNvbHZlUmVzdWx0VHlwZSYmIHJlc3Vs
dCkKICAgICByZXNvbHZlKCpleGVjLCB0b0pTKGV4ZWMsIG1fZ2xvYmFsT2JqZWN0LmdldCgpLCBz
dGQ6OmZvcndhcmQ8UmVzb2x2ZVJlc3VsdFR5cGU+KHJlc3VsdCkpKTsKIH0KIAordGVtcGxhdGU8
Y2xhc3MgUmVzb2x2ZVJlc3VsdFR5cGU+CitpbmxpbmUgdm9pZCBEZWZlcnJlZFdyYXBwZXI6OnJl
c29sdmVXaXRoTmV3bHlDcmVhdGVkKFJlZjxSZXNvbHZlUmVzdWx0VHlwZT4mJiByZXN1bHQpCit7
CisgICAgQVNTRVJUKG1fZGVmZXJyZWQpOworICAgIEFTU0VSVChtX2dsb2JhbE9iamVjdCk7Cisg
ICAgSlNDOjpFeGVjU3RhdGUqIGV4ZWMgPSBtX2dsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpOwor
ICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2tlcihleGVjKTsKKyAgICByZXNvbHZlKCpleGVjLCB0
b0pTTmV3bHlDcmVhdGVkKGV4ZWMsIG1fZ2xvYmFsT2JqZWN0LmdldCgpLCBXVEZNb3ZlKHJlc3Vs
dCkpKTsKK30KKwogdGVtcGxhdGU8Y2xhc3MgUmVqZWN0UmVzdWx0VHlwZT4KIGlubGluZSB2b2lk
IERlZmVycmVkV3JhcHBlcjo6cmVqZWN0V2l0aFZhbHVlKFJlamVjdFJlc3VsdFR5cGUmJiByZXN1
bHQpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XZWJDb3JlQnVp
bHRpbk5hbWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XZWJDb3JlQnVpbHRpbk5h
bWVzLmgKaW5kZXggYTVhZGQ5NGIyMDlhMjY5M2JlYzM1MWM5OGZmYzVjZTI4YTc2MWJlMi4uNjgz
OTAyYTZiZWQ4ODRmMTNhMmExYjc5MzM1ZWQyMTZjNmJlNDhmOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvV2ViQ29yZUJ1aWx0aW5OYW1lcy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVCdWlsdGluTmFtZXMuaApAQCAtMzUsMTQgKzM1LDE4
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBtYWNybyhhZGRUcmFjaykgXAogICAgIG1hY3Jv
KGFwcGVuZEZyb21KUykgXAogICAgIG1hY3JvKGJvZHkpIFwKKyAgICBtYWNybyhjbG9uZUZvckpT
KSBcCiAgICAgbWFjcm8oY2xvc2VSZXF1ZXN0ZWQpIFwKICAgICBtYWNybyhjbG9zZWRQcm9taXNl
Q2FwYWJpbGl0eSkgXAorICAgIG1hY3JvKGNvbnN1bWUpIFwKKyAgICBtYWNybyhjb25zdW1lQ2h1
bmspIFwKICAgICBtYWNybyhjb250cm9sbGVkUmVhZGFibGVTdHJlYW0pIFwKICAgICBtYWNybyhj
b250cm9sbGVyKSBcCiAgICAgbWFjcm8oY3JlYXRlUmVhZGFibGVTdHJlYW1Tb3VyY2UpIFwKICAg
ICBtYWNybyhkaXN0dXJiZWQpIFwKICAgICBtYWNybyhmZXRjaFJlcXVlc3QpIFwKICAgICBtYWNy
byhmaWxsRnJvbUpTKSBcCisgICAgbWFjcm8oZmluaXNoQ29uc3VtaW5nU3RyZWFtKSBcCiAgICAg
bWFjcm8oZmlyc3RSZWFkQ2FsbGJhY2spIFwKICAgICBtYWNybyhnZXRVc2VyTWVkaWFGcm9tSlMp
IFwKICAgICBtYWNybyhnZXRSZW1vdGVTdHJlYW1zKSBcCkBAIC03Miw2ICs3Niw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICBtYWNybyhzZXRCb2R5KSBcCiAgICAgbWFjcm8oc2V0U3RhdHVz
KSBcCiAgICAgbWFjcm8oc3RhdGUpIFwKKyAgICBtYWNybyhzdGFydENvbnN1bWluZ1N0cmVhbSkg
XAogICAgIG1hY3JvKHN0YXJ0ZWQpIFwKICAgICBtYWNybyhzdGFydGVkUHJvbWlzZSkgXAogICAg
IG1hY3JvKHN0b3JlZEVycm9yKSBcCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2MvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwppbmRleCBj
YzQ4OWM5ZDE3ZDkyZjRhZWJiZmUyMDRhNjE3MDVmNzM1ODg5MzQxLi42NjVlNWY3NTc4MGQyZDdm
YWRlY2UxZWMxNTRkYzYyOWVlNGQ5YmVmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2MvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxNCBAQAorMjAxNi0wNy0yNiAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBs
ZS5jb20+CisKKyAgICAgICAgW0ZldGNoIEFQSV0gUmVzcG9uc2UgY29uc3RydWN0b3Igc2hvdWxk
IGJlIGFibGUgdG8gdGFrZSBhIFJlYWRhYmxlU3RyZWFtIGFzIGJvZHkKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1OTgwNAorCisgICAgICAgIFJldmll
d2VkIGJ5IEFsZXggQ2hyaXN0ZW5zZW4uCisKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMv
ZmV0Y2gvYXBpL3Jlc3BvbnNlL3Jlc3BvbnNlLWNvbnN1bWUtZW1wdHktZXhwZWN0ZWQudHh0Ogor
ICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkvcmVzcG9uc2UvcmVzcG9uc2Ut
Y29uc3VtZS1leHBlY3RlZC50eHQ6CisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNo
L2FwaS9yZXNwb25zZS9yZXNwb25zZS1jb25zdW1lLmh0bWw6IFVwZGF0aW5nIHRlc3QgdG8gZXhl
cmNpY2UgUmVzcG9uc2UgY29vbnN0cnVjdG9yIHdpdGggYSBSZWFkYWJsZVN0cmVhbS4KKwogMjAx
Ni0wNy0yNiAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CiAKICAgICAg
ICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjIwMzcxOS4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZmV0Y2gvYXBpL3Jlc3BvbnNlL3Jl
c3BvbnNlLWNvbnN1bWUtZW1wdHktZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkvcmVzcG9uc2UvcmVzcG9uc2UtY29uc3Vt
ZS1lbXB0eS1leHBlY3RlZC50eHQKaW5kZXggNjcwNGRlMWE0NDJlNWYxZmQ3MjViMGNlZTIyYzdm
MDczN2E1ZTU4Ni4uZTk2Nzk1MThiZDljMDMwOTRkOGZmZmNmOWZjZjgyZGQxNzdiYzdjZiAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9mZXRj
aC9hcGkvcmVzcG9uc2UvcmVzcG9uc2UtY29uc3VtZS1lbXB0eS1leHBlY3RlZC50eHQKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkvcmVz
cG9uc2UvcmVzcG9uc2UtY29uc3VtZS1lbXB0eS1leHBlY3RlZC50eHQKQEAgLTMsNyArMyw3IEBA
IFBBU1MgQ29uc3VtZSByZXNwb25zZSdzIGJvZHkgYXMgdGV4dAogUEFTUyBDb25zdW1lIHJlc3Bv
bnNlJ3MgYm9keSBhcyBibG9iIAogUEFTUyBDb25zdW1lIHJlc3BvbnNlJ3MgYm9keSBhcyBhcnJh
eUJ1ZmZlciAKIFBBU1MgQ29uc3VtZSByZXNwb25zZSdzIGJvZHkgYXMganNvbiAKLUZBSUwgQ29u
c3VtZSByZXNwb25zZSdzIGJvZHkgYXMgZm9ybURhdGEgcHJvbWlzZV90ZXN0OiBVbmhhbmRsZWQg
cmVqZWN0aW9uIHdpdGggdmFsdWU6IHVuZGVmaW5lZAorRkFJTCBDb25zdW1lIHJlc3BvbnNlJ3Mg
Ym9keSBhcyBmb3JtRGF0YSBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rpb24gd2l0aCB2
YWx1ZTogIk5vdCBpbXBsZW1lbnRlZCIKIFBBU1MgQ29uc3VtZSBlbXB0eSBibG9iIHJlc3BvbnNl
IGJvZHkgYXMgYXJyYXlCdWZmZXIgCiBQQVNTIENvbnN1bWUgZW1wdHkgdGV4dCByZXNwb25zZSBi
b2R5IGFzIGFycmF5QnVmZmVyIAogUEFTUyBDb25zdW1lIGVtcHR5IGJsb2IgcmVzcG9uc2UgYm9k
eSBhcyB0ZXh0IApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9mZXRjaC9hcGkvcmVzcG9uc2UvcmVzcG9uc2UtY29uc3VtZS1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNoL2Fw
aS9yZXNwb25zZS9yZXNwb25zZS1jb25zdW1lLWV4cGVjdGVkLnR4dAppbmRleCBkMDg4YTY5YThj
ZTQyYTJmYTBhMWM5MjA5OWQ4NmE2YmZhNTdlNmQ4Li40MTZhMzkyY2U2YWQ2Y2FiNjhlMjcxZGQw
NGExOWEyZWU1MDIwM2VlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9yZXNwb25zZS9yZXNwb25zZS1jb25zdW1lLWV4cGVj
dGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2ZldGNoL2FwaS9yZXNwb25zZS9yZXNwb25zZS1jb25zdW1lLWV4cGVjdGVkLnR4dApAQCAtMyw5
ICszLDEzIEBAIFBBU1MgQ29uc3VtZSByZXNwb25zZSdzIGJvZHkgYXMgdGV4dAogUEFTUyBDb25z
dW1lIHJlc3BvbnNlJ3MgYm9keSBhcyBibG9iIAogUEFTUyBDb25zdW1lIHJlc3BvbnNlJ3MgYm9k
eSBhcyBhcnJheUJ1ZmZlciAKIFBBU1MgQ29uc3VtZSByZXNwb25zZSdzIGJvZHkgYXMganNvbiAK
LUZBSUwgQ29uc3VtZSByZXNwb25zZSdzIGJvZHkgYXMgZm9ybURhdGEgcHJvbWlzZV90ZXN0OiBV
bmhhbmRsZWQgcmVqZWN0aW9uIHdpdGggdmFsdWU6IHVuZGVmaW5lZAorRkFJTCBDb25zdW1lIHJl
c3BvbnNlJ3MgYm9keSBhcyBmb3JtRGF0YSBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rp
b24gd2l0aCB2YWx1ZTogIk5vdCBpbXBsZW1lbnRlZCIKIFBBU1MgQ29uc3VtZSBibG9iIHJlc3Bv
bnNlJ3MgYm9keSBhcyBibG9iIAogUEFTUyBDb25zdW1lIGJsb2IgcmVzcG9uc2UncyBib2R5IGFz
IHRleHQgCiBQQVNTIENvbnN1bWUgYmxvYiByZXNwb25zZSdzIGJvZHkgYXMganNvbiAKIFBBU1Mg
Q29uc3VtZSBibG9iIHJlc3BvbnNlJ3MgYm9keSBhcyBhcnJheUJ1ZmZlciAKK1BBU1MgQ29uc3Vt
ZSBzdHJlYW0gcmVzcG9uc2UncyBib2R5IGFzIGJsb2IgCitQQVNTIENvbnN1bWUgc3RyZWFtIHJl
c3BvbnNlJ3MgYm9keSBhcyB0ZXh0IAorUEFTUyBDb25zdW1lIHN0cmVhbSByZXNwb25zZSdzIGJv
ZHkgYXMganNvbiAKK1BBU1MgQ29uc3VtZSBzdHJlYW0gcmVzcG9uc2UncyBib2R5IGFzIGFycmF5
QnVmZmVyIAogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2ZldGNoL2FwaS9yZXNwb25zZS9yZXNwb25zZS1jb25zdW1lLmh0bWwgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9yZXNwb25z
ZS9yZXNwb25zZS1jb25zdW1lLmh0bWwKaW5kZXggMDI4MTRmZjViZTkyNmJlNzM4MjY0YmE5MTA3
MGJkMjM2OWQ1NDY5MS4uOTk0MTBjZDQ0OGFiOGJkNjQ3OTAxODcwMDRlZmQzNGIxYzk5YWI0OSAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9m
ZXRjaC9hcGkvcmVzcG9uc2UvcmVzcG9uc2UtY29uc3VtZS5odG1sCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZmV0Y2gvYXBpL3Jlc3BvbnNlL3Jlc3Bv
bnNlLWNvbnN1bWUuaHRtbApAQCAtOTIsNiArOTIsMjUgQEAKICAgICBjaGVja0Jsb2JSZXNwb25z
ZUJvZHkoYmxvYiwgdGV4dERhdGEsICJqc29uIiwgY2hlY2tCb2R5SlNPTik7CiAgICAgY2hlY2tC
bG9iUmVzcG9uc2VCb2R5KGJsb2IsIHRleHREYXRhLCAiYXJyYXlCdWZmZXIiLCBjaGVja0JvZHlB
cnJheUJ1ZmZlcik7CiAKKyAgICBmdW5jdGlvbiBjaGVja1JlYWRhYmxlU3RyZWFtUmVzcG9uc2VC
b2R5KHN0cmVhbURhdGEsIGJvZHlUeXBlLCBjaGVja0Z1bmN0aW9uKSB7CisgICAgICBwcm9taXNl
X3Rlc3QoZnVuY3Rpb24odGVzdCkgeworICAgICAgICB2YXIgc3RyZWFtID0gbmV3IFJlYWRhYmxl
U3RyZWFtKHsKKyAgICAgICAgICBzdGFydDogZnVuY3Rpb24oY29udHJvbGxlcikgeworICAgICAg
ICAgICAgY29udHJvbGxlci5lbnF1ZXVlKChzdHJpbmdUb0FycmF5KHN0cmVhbURhdGEpKSk7Cisg
ICAgICAgICAgICBjb250cm9sbGVyLmNsb3NlKCk7CisgICAgICAgICAgfQorICAgICAgICB9KTsK
KyAgICAgICAgdmFyIHJlc3BvbnNlID0gbmV3IFJlc3BvbnNlKHN0cmVhbSk7CisgICAgICAgIGFz
c2VydF9mYWxzZShyZXNwb25zZS5ib2R5VXNlZCwgImJvZHlVc2VkIGlzIGZhbHNlIGF0IGluaXQi
KTsKKyAgICAgICAgcmV0dXJuIGNoZWNrRnVuY3Rpb24ocmVzcG9uc2UsIHN0cmVhbURhdGEpOwor
ICAgICAgfSwgIkNvbnN1bWUgc3RyZWFtIHJlc3BvbnNlJ3MgYm9keSBhcyAiICsgYm9keVR5cGUp
OworICAgIH0KKworICAgIGNoZWNrUmVhZGFibGVTdHJlYW1SZXNwb25zZUJvZHkodGV4dERhdGEs
ICJibG9iIiwgY2hlY2tCb2R5QmxvYik7CisgICAgY2hlY2tSZWFkYWJsZVN0cmVhbVJlc3BvbnNl
Qm9keSh0ZXh0RGF0YSwgInRleHQiLCBjaGVja0JvZHlUZXh0KTsKKyAgICBjaGVja1JlYWRhYmxl
U3RyZWFtUmVzcG9uc2VCb2R5KHRleHREYXRhLCAianNvbiIsIGNoZWNrQm9keUpTT04pOworICAg
IGNoZWNrUmVhZGFibGVTdHJlYW1SZXNwb25zZUJvZHkodGV4dERhdGEsICJhcnJheUJ1ZmZlciIs
IGNoZWNrQm9keUFycmF5QnVmZmVyKTsKKwogICAgIDwvc2NyaXB0PgogICA8L2JvZHk+CiA8L2h0
bWw+Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>