<?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>102662</bug_id>
          
          <creation_ts>2012-11-19 01:42:35 -0800</creation_ts>
          <short_desc>DFG should be able to cache closure calls</short_desc>
          <delta_ts>2013-03-18 10:31:42 -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>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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>102759</dependson>
    
    <dependson>102871</dependson>
    
    <dependson>102872</dependson>
    
    <dependson>103146</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>barraclough</cc>
    
    <cc>benjamin</cc>
    
    <cc>ggaren</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mhahnenberg</cc>
    
    <cc>msaboff</cc>
    
    <cc>ojan</cc>
    
    <cc>oliver</cc>
    
    <cc>ossy</cc>
    
    <cc>philn</cc>
    
    <cc>rakuco</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sam</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>770484</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-11-19 01:42:35 -0800</bug_when>
    <thetext>Patch forthcoming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>770487</commentid>
    <comment_count>1</comment_count>
      <attachid>174916</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-11-19 01:46:21 -0800</bug_when>
    <thetext>Created attachment 174916
work in progress</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>771356</commentid>
    <comment_count>2</comment_count>
      <attachid>175107</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-11-19 18:30:44 -0800</bug_when>
    <thetext>Created attachment 175107
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>771358</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-19 18:32:59 -0800</bug_when>
    <thetext>Attachment 175107 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/ChangeLog&apos;, u&apos;Source...&quot; exit_code: 1
Source/JavaScriptCore/bytecode/CodeBlock.h:822:  The parameter name &quot;returnAddress&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/bytecode/CodeBlock.h:822:  The parameter name &quot;codeOrigin&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/dfg/DFGRepatch.cpp:1230:  Local variables should never be PassRefPtr (see http://webkit.org/coding/RefPtr.html).  [readability/pass_ptr] [5]
Source/JavaScriptCore/dfg/DFGRepatch.cpp:1234:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/JavaScriptCore/dfg/DFGRepatch.cpp:1235:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 5 in 30 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>771364</commentid>
    <comment_count>4</comment_count>
      <attachid>175107</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-11-19 18:38:54 -0800</bug_when>
    <thetext>Comment on attachment 175107
the patch

Attachment 175107 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/14908388</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>771370</commentid>
    <comment_count>5</comment_count>
      <attachid>175107</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-11-19 18:41:07 -0800</bug_when>
    <thetext>Comment on attachment 175107
the patch

Attachment 175107 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/14916376</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>771394</commentid>
    <comment_count>6</comment_count>
      <attachid>175107</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-11-19 19:13:26 -0800</bug_when>
    <thetext>Comment on attachment 175107
the patch

Attachment 175107 did not pass win-ews (win):
Output: http://queues.webkit.org/results/14910422</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>771402</commentid>
    <comment_count>7</comment_count>
      <attachid>175107</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2012-11-19 19:23:03 -0800</bug_when>
    <thetext>Comment on attachment 175107
the patch

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

r-, i&apos;d like the armv7 errata removal in a separate patch as it makes it difficult to see exactly what is relevant to this patch (also i don&apos;t like playing mix-and-match with back and front end code changes :D )

&gt;&gt; Source/JavaScriptCore/dfg/DFGRepatch.cpp:1230
&gt;&gt; +    PassRefPtr&lt;ClosureCallStubRoutine&gt; stubRoutine = adoptRef(new ClosureCallStubRoutine(
&gt; 
&gt; Local variables should never be PassRefPtr (see http://webkit.org/coding/RefPtr.html).  [readability/pass_ptr] [5]

Style bot is right on this count, should be a RefPtr</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>771412</commentid>
    <comment_count>8</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-11-19 19:43:27 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; (From update of attachment 175107 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=175107&amp;action=review
&gt; 
&gt; r-, i&apos;d like the armv7 errata removal in a separate patch as it makes it difficult to see exactly what is relevant to this patch

See https://bugs.webkit.org/show_bug.cgi?id=102759

&gt; (also i don&apos;t like playing mix-and-match with back and front end code changes :D )

All of the other backend changes (introduction of flipping a branchPtrWithPatch(Condition, RegisterID, TrustedImmPtr) to a jump and vice-versa, and therefore renaming some of the previous patchableBranchPtrWithPatch(Condition, Address, TrustedImmPtr) methods to avoid naming collisions) are directly related to closure calls.  So, I could either do them in a separate patch but then introduce dead and untested code temporarily, or I can leave them as part of this patch.  Do you have a preference?

&gt; 
&gt; &gt;&gt; Source/JavaScriptCore/dfg/DFGRepatch.cpp:1230
&gt; &gt;&gt; +    PassRefPtr&lt;ClosureCallStubRoutine&gt; stubRoutine = adoptRef(new ClosureCallStubRoutine(
&gt; &gt; 
&gt; &gt; Local variables should never be PassRefPtr (see http://webkit.org/coding/RefPtr.html).  [readability/pass_ptr] [5]
&gt; 
&gt; Style bot is right on this count, should be a RefPtr

Will change!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>771459</commentid>
    <comment_count>9</comment_count>
      <attachid>175131</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-11-19 21:14:53 -0800</bug_when>
    <thetext>Created attachment 175131
the patch

Fixed style.

Factored out errata-related changes into https://bugs.webkit.org/show_bug.cgi?id=102759</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>771463</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-19 21:18:45 -0800</bug_when>
    <thetext>Attachment 175131 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/ChangeLog&apos;, u&apos;Source...&quot; exit_code: 1
Source/JavaScriptCore/jit/ClosureCallStubRoutine.h:42:  The parameter name &quot;structure&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/jit/ClosureCallStubRoutine.h:42:  The parameter name &quot;executable&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 2 in 33 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>771469</commentid>
    <comment_count>11</comment_count>
      <attachid>175131</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-11-19 21:23:51 -0800</bug_when>
    <thetext>Comment on attachment 175131
the patch

Attachment 175131 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/14911469</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>771471</commentid>
    <comment_count>12</comment_count>
      <attachid>175131</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-11-19 21:25:02 -0800</bug_when>
    <thetext>Comment on attachment 175131
the patch

Attachment 175131 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/14899461</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>771474</commentid>
    <comment_count>13</comment_count>
      <attachid>175135</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-11-19 21:29:26 -0800</bug_when>
    <thetext>Created attachment 175135
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>771504</commentid>
    <comment_count>14</comment_count>
      <attachid>175135</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-11-19 22:03:42 -0800</bug_when>
    <thetext>Comment on attachment 175135
the patch

Attachment 175135 did not pass win-ews (win):
Output: http://queues.webkit.org/results/14911480</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>771569</commentid>
    <comment_count>15</comment_count>
      <attachid>175153</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-11-19 23:29:22 -0800</bug_when>
    <thetext>Created attachment 175153
the patch

Fix windows, maybe.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>771998</commentid>
    <comment_count>16</comment_count>
      <attachid>175153</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2012-11-20 10:47:12 -0800</bug_when>
    <thetext>Comment on attachment 175153
the patch

Looks fine, I&apos;d like to see the assembler changes split out though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>772243</commentid>
    <comment_count>17</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-11-20 15:55:13 -0800</bug_when>
    <thetext>(In reply to comment #16)
&gt; (From update of attachment 175153 [details])
&gt; Looks fine, I&apos;d like to see the assembler changes split out though.

Sure, I&apos;ll land the asm changes first in a separate patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>772269</commentid>
    <comment_count>18</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-11-20 16:22:57 -0800</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/135330</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>772270</commentid>
    <comment_count>19</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-11-20 16:23:20 -0800</bug_when>
    <thetext>Oops.  Didn&apos;t mean to close the bug.  http://trac.webkit.org/changeset/135330 is just the first part of this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>772328</commentid>
    <comment_count>20</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-11-20 17:31:12 -0800</bug_when>
    <thetext>Second part landed in http://trac.webkit.org/changeset/135336</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>772370</commentid>
    <comment_count>21</comment_count>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2012-11-20 18:31:18 -0800</bug_when>
    <thetext>(In reply to comment #20)
&gt; Second part landed in http://trac.webkit.org/changeset/135336

Are you still uploading patch?

isOnList looks missing yet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>772373</commentid>
    <comment_count>22</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-11-20 18:34:57 -0800</bug_when>
    <thetext>(In reply to comment #21)
&gt; (In reply to comment #20)
&gt; &gt; Second part landed in http://trac.webkit.org/changeset/135336
&gt; 
&gt; Are you still uploading patch?
&gt; 
&gt; isOnList looks missing yet.

Gah!  I&apos;m sorry about that.  I&apos;ll land it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>772374</commentid>
    <comment_count>23</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-11-20 18:35:33 -0800</bug_when>
    <thetext>(In reply to comment #22)
&gt; (In reply to comment #21)
&gt; &gt; (In reply to comment #20)
&gt; &gt; &gt; Second part landed in http://trac.webkit.org/changeset/135336
&gt; &gt; 
&gt; &gt; Are you still uploading patch?
&gt; &gt; 
&gt; &gt; isOnList looks missing yet.
&gt; 
&gt; Gah!  I&apos;m sorry about that.  I&apos;ll land it.

Landed in http://trac.webkit.org/changeset/135341</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>772453</commentid>
    <comment_count>24</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2012-11-20 21:47:13 -0800</bug_when>
    <thetext>ARM traditional - https://bugs.webkit.org/show_bug.cgi?id=102871
and MIPS needs followup patches - https://bugs.webkit.org/show_bug.cgi?id=102872</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>174916</attachid>
            <date>2012-11-19 01:46:21 -0800</date>
            <delta_ts>2012-11-19 18:30:44 -0800</delta_ts>
            <desc>work in progress</desc>
            <filename>closurecall.patch</filename>
            <type>text/plain</type>
            <size>54380</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTM1MTI4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDk1IEBA
CisyMDEyLTExLTE5ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
REZHIHNob3VsZCBiZSBhYmxlIHRvIGNhY2hlIGNsb3N1cmUgY2FsbHMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMjY2MgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdvcmsgaW4gcHJvZ3Jlc3MuIFN0aWxs
IG5lZWQgdG8gcG9ydCB0byAzMi1iaXQgcGxhdGZvcm1zLgorICAgICAgICAKKyAgICAgICAgTG9v
a3MgbGlrZSBhIH4xJSB3aW4gb24gVjh2Ny4KKworICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYXNzZW1ibGVyL0xpbmtCdWZmZXIu
aDoKKyAgICAgICAgKEpTQyk6CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2
XzY0Lmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2XzY0OjpzdGFydE9mQnJhbmNo
UHRyV2l0aFBhdGNoT25SZWdpc3Rlcik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2
XzY0OjpzdGFydE9mUGF0Y2hhYmxlQnJhbmNoUHRyV2l0aFBhdGNoT25BZGRyZXNzKToKKyAgICAg
ICAgKE1hY3JvQXNzZW1ibGVyWDg2XzY0KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJY
ODZfNjQ6OnJldmVydEp1bXBSZXBsYWNlbWVudFRvUGF0Y2hhYmxlQnJhbmNoUHRyV2l0aFBhdGNo
KToKKyAgICAgICAgKiBhc3NlbWJsZXIvUmVwYXRjaEJ1ZmZlci5oOgorICAgICAgICAoSlNDOjpS
ZXBhdGNoQnVmZmVyOjpzdGFydE9mQnJhbmNoUHRyV2l0aFBhdGNoT25SZWdpc3Rlcik6CisgICAg
ICAgIChSZXBhdGNoQnVmZmVyKToKKyAgICAgICAgKEpTQzo6UmVwYXRjaEJ1ZmZlcjo6c3RhcnRP
ZlBhdGNoYWJsZUJyYW5jaFB0cldpdGhQYXRjaE9uQWRkcmVzcyk6CisgICAgICAgIChKU0M6OlJl
cGF0Y2hCdWZmZXI6OnJldmVydEp1bXBSZXBsYWNlbWVudFRvQnJhbmNoUHRyV2l0aFBhdGNoKToK
KyAgICAgICAgKiBieXRlY29kZS9DYWxsTGlua0luZm8uY3BwOgorICAgICAgICAoSlNDOjpDYWxs
TGlua0luZm86OnVubGluayk6CisgICAgICAgICogYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmg6Cisg
ICAgICAgIChDYWxsTGlua0luZm8pOgorICAgICAgICAoSlNDOjpDYWxsTGlua0luZm86OmlzTGlu
a2VkKToKKyAgICAgICAgKEpTQzo6Z2V0Q2FsbExpbmtJbmZvQnl0ZWNvZGVJbmRleCk6CisgICAg
ICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpm
aW5hbGl6ZVVuY29uZGl0aW9uYWxseSk6CisgICAgICAgIChKU0MpOgorICAgICAgICAoSlNDOjpD
b2RlQmxvY2s6OmZpbmRDbG9zdXJlQ2FsbEZvclJldHVyblBDKToKKyAgICAgICAgKEpTQzo6Q29k
ZUJsb2NrOjpieXRlY29kZU9mZnNldCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6Y29kZU9y
aWdpbkZvclJldHVybik6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmg6CisgICAgICAg
IChKU0M6OkNvZGVCbG9jazo6Z2V0Q2FsbExpbmtJbmZvKToKKyAgICAgICAgKENvZGVCbG9jayk6
CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6aXNJbmNvbWluZ0NhbGxBbHJlYWR5TGlua2VkKToK
KyAgICAgICAgKiBkZmcvREZHSklUQ29tcGlsZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkpJ
VENvbXBpbGVyOjpsaW5rKToKKyAgICAgICAgKiBkZmcvREZHSklUQ29tcGlsZXIuaDoKKyAgICAg
ICAgKEpTQzo6REZHOjpKSVRDb21waWxlcjo6YWRkSlNDYWxsKToKKyAgICAgICAgKEpTQzo6REZH
OjpKSVRDb21waWxlcjo6SlNDYWxsUmVjb3JkOjpKU0NhbGxSZWNvcmQpOgorICAgICAgICAoSlND
YWxsUmVjb3JkKToKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5jcHA6CisgICAgICAgICog
ZGZnL0RGR09wZXJhdGlvbnMuaDoKKyAgICAgICAgKiBkZmcvREZHUmVwYXRjaC5jcHA6CisgICAg
ICAgIChKU0M6OkRGRzo6cmVwbGFjZVdpdGhKdW1wKToKKyAgICAgICAgKEpTQzo6REZHOjpsaW5r
U2xvd0Zvcik6CisgICAgICAgIChERkcpOgorICAgICAgICAoSlNDOjpERkc6OmRmZ0xpbmtGb3Ip
OgorICAgICAgICAoSlNDOjpERkc6OmRmZ0xpbmtTbG93Rm9yKToKKyAgICAgICAgKEpTQzo6REZH
OjpkZmdMaW5rQ2xvc3VyZUNhbGwpOgorICAgICAgICAoSlNDOjpERkc6OmRmZ1Jlc2V0R2V0QnlJ
RCk6CisgICAgICAgIChKU0M6OkRGRzo6ZGZnUmVzZXRQdXRCeUlEKToKKyAgICAgICAgKiBkZmcv
REZHUmVwYXRjaC5oOgorICAgICAgICAoREZHKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRp
dmVKSVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmVtaXRDYWxs
KToKKyAgICAgICAgKiBkZmcvREZHVGh1bmtzLmNwcDoKKyAgICAgICAgKERGRyk6CisgICAgICAg
IChKU0M6OkRGRzo6bGlua0Nsb3N1cmVDYWxsVGh1bmtHZW5lcmF0b3IpOgorICAgICAgICAqIGRm
Zy9ERkdUaHVua3MuaDoKKyAgICAgICAgKERGRyk6CisgICAgICAgICogaGVhcC9IZWFwLmg6Cisg
ICAgICAgIChIZWFwKToKKyAgICAgICAgKEpTQzo6SGVhcDo6aml0U3R1YlJvdXRpbmVzKToKKyAg
ICAgICAgKiBoZWFwL0pJVFN0dWJSb3V0aW5lU2V0Lmg6CisgICAgICAgIChKU0M6OkpJVFN0dWJS
b3V0aW5lU2V0OjpzaXplKToKKyAgICAgICAgKEpTQzo6SklUU3R1YlJvdXRpbmVTZXQ6OmF0KToK
KyAgICAgICAgKEpJVFN0dWJSb3V0aW5lU2V0KToKKyAgICAgICAgKiBqaXQvQ2xvc3VyZUNhbGxT
dHViUm91dGluZS5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDKToKKyAgICAgICAgKEpTQzo6Q2xv
c3VyZUNhbGxTdHViUm91dGluZTo6Q2xvc3VyZUNhbGxTdHViUm91dGluZSk6CisgICAgICAgIChK
U0M6OkNsb3N1cmVDYWxsU3R1YlJvdXRpbmU6On5DbG9zdXJlQ2FsbFN0dWJSb3V0aW5lKToKKyAg
ICAgICAgKEpTQzo6Q2xvc3VyZUNhbGxTdHViUm91dGluZTo6bWFya1JlcXVpcmVkT2JqZWN0c0lu
dGVybmFsKToKKyAgICAgICAgKiBqaXQvQ2xvc3VyZUNhbGxTdHViUm91dGluZS5oOiBBZGRlZC4K
KyAgICAgICAgKEpTQyk6CisgICAgICAgIChDbG9zdXJlQ2FsbFN0dWJSb3V0aW5lKToKKyAgICAg
ICAgKEpTQzo6Q2xvc3VyZUNhbGxTdHViUm91dGluZTo6c3RydWN0dXJlKToKKyAgICAgICAgKEpT
Qzo6Q2xvc3VyZUNhbGxTdHViUm91dGluZTo6ZXhlY3V0YWJsZSk6CisgICAgICAgIChKU0M6OkNs
b3N1cmVDYWxsU3R1YlJvdXRpbmU6OmNvZGVPcmlnaW4pOgorICAgICAgICAqIGppdC9HQ0F3YXJl
SklUU3R1YlJvdXRpbmUuY3BwOgorICAgICAgICAoSlNDOjpHQ0F3YXJlSklUU3R1YlJvdXRpbmU6
OkdDQXdhcmVKSVRTdHViUm91dGluZSk6CisgICAgICAgICogaml0L0dDQXdhcmVKSVRTdHViUm91
dGluZS5oOgorICAgICAgICAoR0NBd2FyZUpJVFN0dWJSb3V0aW5lKToKKyAgICAgICAgKEpTQzo6
R0NBd2FyZUpJVFN0dWJSb3V0aW5lOjppc0Nsb3N1cmVDYWxsKToKKyAgICAgICAgKiBqaXQvSklU
LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZSk6CisKIDIwMTItMTEtMTgg
IERhbiBCZXJuc3RlaW4gIDxtaXR6QGFwcGxlLmNvbT4KIAogICAgICAgICBUcnkgdG8gZml4IHRo
ZSBERkcgYnVpbGQgYWZ0ZXIgcjEzNTA5OS4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCShyZXZpc2lvbiAxMzUwNDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTQ3LDYg
KzE0Nyw4IEBACiAJCTBGNjM5NDg1MTVFNDgxMUIwMDZBNTk3QyAvKiBERkdBcnJheU1vZGUuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNjM5NDgyMTVF
NDgxMTQwMDZBNTk3QyAvKiBERkdBcnJheU1vZGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjY2RTE2QjE0REYzRjE2MDBCN0IyRTQgLyogREZH
QWRqYWNlbmN5TGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMEY2NkUxNjgxNERGM0YxMzAwQjdCMkU0IC8qIERGR0FkamFjZW5jeUxpc3QuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjY2RTE2QzE0
REYzRjE2MDBCN0IyRTQgLyogREZHRWRnZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMEY2NkUxNjkxNERGM0YxMzAwQjdCMkU0IC8qIERGR0VkZ2UuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjczRDdB
RTE2NUExNDJEMDBBQ0FCNzEgLyogQ2xvc3VyZUNhbGxTdHViUm91dGluZS5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjczRDdBQjE2NUExNDJBMDBB
Q0FCNzEgLyogQ2xvc3VyZUNhbGxTdHViUm91dGluZS5jcHAgKi87IH07CisJCTBGNzNEN0FGMTY1
QTE0MzAwMEFDQUI3MSAvKiBDbG9zdXJlQ2FsbFN0dWJSb3V0aW5lLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjczRDdBQzE2NUExNDJBMDBBQ0FCNzEg
LyogQ2xvc3VyZUNhbGxTdHViUm91dGluZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTBGNzY2RDI4MTVBOENDMUUwMDhGMzYzRSAvKiBKSVRTdHVi
Um91dGluZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRjc2NkQyNjE1QThDQzFCMDA4RjM2M0UgLyogSklUU3R1YlJvdXRpbmUuY3BwICovOyB9Owog
CQkwRjc2NkQyQjE1QThDQzM4MDA4RjM2M0UgLyogSklUU3R1YlJvdXRpbmVTZXQuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY3NjZEMjkxNUE4Q0Mz
NDAwOEYzNjNFIC8qIEpJVFN0dWJSb3V0aW5lU2V0LmNwcCAqLzsgfTsKIAkJMEY3NjZEMkMxNUE4
Q0MzQTAwOEYzNjNFIC8qIEpJVFN0dWJSb3V0aW5lU2V0LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjc2NkQyQTE1QThDQzM0MDA4RjM2M0UgLyogSklU
U3R1YlJvdXRpbmVTZXQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwpAQCAtMTY1LDkgKzE2Nyw5IEBACiAJCTBGN0IyOTRDMTRDM0NENDMwMDdDM0RCMSAv
KiBERkdCeXRlQ29kZUNhY2hlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwRjVGMDhDQzE0NkJFNjAyMDAwNDcyQTkgLyogREZHQnl0ZUNvZGVDYWNoZS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGN0Iy
OTREMTRDM0NENEMwMDdDM0RCMSAvKiBERkdDb21tb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQzA5NzdFMTQ2OUVCQzQwMENGMjQ0MiAvKiBERkdD
b21tb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQkwRjgwMjNFQTE2MTM4MzJCMDBBMEJBNDUgLyogQnlWYWxJbmZvLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjgwMjNFOTE2MTM4MzIzMDBBMEJBNDUg
LyogQnlWYWxJbmZvLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKLQkJMEY4MzY0QjcxNjRCMEMxMTAwNTMzMjlBIC8qIERGR0JyYW5jaERpcmVjdGlvbi5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY4MzY0QjUx
NjRCMEMwRTAwNTMzMjlBIC8qIERGR0JyYW5jaERpcmVjdGlvbi5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGODMzNUI3MTYzOUMxRTYwMDE0NDNC
NSAvKiBBcnJheUFsbG9jYXRpb25Qcm9maWxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGODMzNUI0MTYzOUMxRTMwMDE0NDNCNSAvKiBBcnJheUFs
bG9jYXRpb25Qcm9maWxlLmNwcCAqLzsgfTsKIAkJMEY4MzM1QjgxNjM5QzFFQTAwMTQ0M0I1IC8q
IEFycmF5QWxsb2NhdGlvblByb2ZpbGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDBGODMzNUI1MTYzOUMxRTMwMDE0NDNCNSAvKiBBcnJheUFsbG9jYXRp
b25Qcm9maWxlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKKwkJMEY4MzY0QjcxNjRCMEMxMTAwNTMzMjlBIC8qIERGR0JyYW5jaERpcmVjdGlvbi5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY4MzY0QjUxNjRC
MEMwRTAwNTMzMjlBIC8qIERGR0JyYW5jaERpcmVjdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGOTE5RDBDMTU3RUUwOUYwMDRBNEU3RCAv
KiBKU1N5bWJvbFRhYmxlT2JqZWN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDBGOTE5RDA5MTU3RUUwOUQwMDRBNEU3RCAvKiBKU1N5bWJvbFRhYmxl
T2JqZWN0LmNwcCAqLzsgfTsKIAkJMEY5MTlEMEQxNTdFRTBBMjAwNEE0RTdEIC8qIEpTU3ltYm9s
VGFibGVPYmplY3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDBGOTE5RDBBMTU3RUUwOUQwMDRBNEU3RCAvKiBKU1N5bWJvbFRhYmxlT2JqZWN0LmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY5MTlEMTAx
NTdGMzMyOTAwNEE0RTdEIC8qIEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3QuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY5MTlEMEUxNTdGMzMyNzAw
NEE0RTdEIC8qIEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3QuY3BwICovOyB9OwpAQCAtOTM4LDYg
Kzk0MCw4IEBACiAJCTBGNjM5NDgyMTVFNDgxMTQwMDZBNTk3QyAvKiBERkdBcnJheU1vZGUuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHQXJyYXlNb2RlLmg7IHBhdGggPSBk
ZmcvREZHQXJyYXlNb2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNjZFMTY4
MTRERjNGMTMwMEI3QjJFNCAvKiBERkdBZGphY2VuY3lMaXN0LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgbmFtZSA9IERGR0FkamFjZW5jeUxpc3QuaDsgcGF0aCA9IGRmZy9ERkdBZGphY2Vu
Y3lMaXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNjZFMTY5MTRERjNGMTMw
MEI3QjJFNCAvKiBERkdFZGdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERG
R0VkZ2UuaDsgcGF0aCA9IGRmZy9ERkdFZGdlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTBGNzNEN0FCMTY1QTE0MkEwMEFDQUI3MSAvKiBDbG9zdXJlQ2FsbFN0dWJSb3V0aW5lLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENsb3N1cmVDYWxsU3R1YlJv
dXRpbmUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjczRDdBQzE2NUExNDJB
MDBBQ0FCNzEgLyogQ2xvc3VyZUNhbGxTdHViUm91dGluZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBDbG9zdXJlQ2FsbFN0dWJSb3V0aW5lLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTBGNzY2RDFDMTVBNTAyOEQwMDhGMzYzRSAvKiBKSVRTdHViUm91dGluZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKSVRTdHViUm91dGluZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjc2NkQyNjE1QThDQzFCMDA4RjM2M0UgLyogSklU
U3R1YlJvdXRpbmUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSklU
U3R1YlJvdXRpbmUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjc2NkQyOTE1
QThDQzM0MDA4RjM2M0UgLyogSklUU3R1YlJvdXRpbmVTZXQuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gSklUU3R1YlJvdXRpbmVTZXQuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtOTU0LDkgKzk1OCw5IEBACiAJCTBGNzcwMDkxMTQwMkZGMjgwMDc4
RUIzOSAvKiBTYW1wbGluZ0NvdW50ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gU2FtcGxpbmdDb3VudGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMEY3QjI5NDgxNEMzQ0QyMzAwN0MzREIxIC8qIERGR0NDYWxsSGVscGVycy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdDQ2FsbEhlbHBlcnMuaDsgcGF0aCA9IGRmZy9E
RkdDQ2FsbEhlbHBlcnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY4MDIzRTkx
NjEzODMyMzAwQTBCQTQ1IC8qIEJ5VmFsSW5mby5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBCeVZhbEluZm8uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMEY4MzY0
QjUxNjRCMEMwRTAwNTMzMjlBIC8qIERGR0JyYW5jaERpcmVjdGlvbi5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBERkdCcmFuY2hEaXJlY3Rpb24uaDsgcGF0aCA9IGRmZy9ERkdC
cmFuY2hEaXJlY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY4MzM1QjQx
NjM5QzFFMzAwMTQ0M0I1IC8qIEFycmF5QWxsb2NhdGlvblByb2ZpbGUuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGODMzNUI1MTYzOUMxRTMwMDE0NDNCNSAvKiBB
cnJheUFsbG9jYXRpb25Qcm9maWxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEFycmF5QWxsb2NhdGlvblByb2ZpbGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MEY4MzY0QjUxNjRCMEMwRTAwNTMzMjlBIC8qIERGR0JyYW5jaERpcmVjdGlvbi5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdCcmFuY2hEaXJlY3Rpb24uaDsgcGF0aCA9IGRm
Zy9ERkdCcmFuY2hEaXJlY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY5
MTlEMDkxNTdFRTA5RDAwNEE0RTdEIC8qIEpTU3ltYm9sVGFibGVPYmplY3QuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNTeW1ib2xUYWJsZU9iamVjdC5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGOTE5RDBBMTU3RUUwOUQwMDRBNEU3RCAvKiBK
U1N5bWJvbFRhYmxlT2JqZWN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpT
U3ltYm9sVGFibGVPYmplY3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY5MTlE
MEUxNTdGMzMyNzAwNEE0RTdEIC8qIEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3QuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVj
dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xODAzLDYgKzE4MDcsOCBAQAog
CQkxNDI5RDkyQzBFRDIyRDcwMDBCODk2MTkgLyogaml0ICovID0gewogCQkJaXNhID0gUEJYR3Jv
dXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQkwRjczRDdBQjE2NUExNDJBMDBBQ0FCNzEgLyogQ2xv
c3VyZUNhbGxTdHViUm91dGluZS5jcHAgKi8sCisJCQkJMEY3M0Q3QUMxNjVBMTQyQTAwQUNBQjcx
IC8qIENsb3N1cmVDYWxsU3R1YlJvdXRpbmUuaCAqLywKIAkJCQkwRkQ4MkUzNzE0MUFCMTQyMDAx
NzlDOTQgLyogQ29tcGFjdEpJVENvZGVNYXAuaCAqLywKIAkJCQlBN0I0OERCNjBFRTc0Q0ZDMDBE
Q0JEQjYgLyogRXhlY3V0YWJsZUFsbG9jYXRvci5jcHAgKi8sCiAJCQkJQTdCNDhEQjUwRUU3NENG
QzAwRENCREI2IC8qIEV4ZWN1dGFibGVBbGxvY2F0b3IuaCAqLywKQEAgLTMwMjIsNiArMzAyOCw3
IEBACiAJCQkJQTdCNjAxODIxNjM5RkQyQTAwMzcyQkEzIC8qIFVubGlua2VkQ29kZUJsb2NrLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlBNzdGMTgyMjE2NDA4OEIyMDA2NDBBNDcgLyogQ29kZUNhY2hl
LmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzdGMTgyNTE2NDE5MkM3MDA2NDBBNDcgLyogUGFyc2Vy
TW9kZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGNzNEN0FGMTY1QTE0MzAwMEFDQUI3MSAvKiBD
bG9zdXJlQ2FsbFN0dWJSb3V0aW5lLmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5
Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTM2MDEsNiArMzYwOCw3
IEBACiAJCQkJMEY4MzM1QjcxNjM5QzFFNjAwMTQ0M0I1IC8qIEFycmF5QWxsb2NhdGlvblByb2Zp
bGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTc2RjI3OTQxNUYxM0M5NjAwNTE3RDY3IC8qIFVu
bGlua2VkQ29kZUJsb2NrLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3N0YxODIxMTY0MDg4QjIw
MDY0MEE0NyAvKiBDb2RlQ2FjaGUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEY3M0Q3QUUxNjVB
MTQyRDAwQUNBQjcxIC8qIENsb3N1cmVDYWxsU3R1YlJvdXRpbmUuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0xpbmtCdWZmZXIuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0xpbmtCdWZmZXIuaAko
cmV2aXNpb24gMTM1MDQxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9MaW5r
QnVmZmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4OCw3ICsyODgsNyBAQCBwcml2YXRlOgogICAg
IEZJTkFMSVpFX0NPREVfSUYoT3B0aW9uczo6c2hvd0Rpc2Fzc2VtYmx5KCksIGxpbmtCdWZmZXJS
ZWZlcmVuY2UsIGRhdGFMb2dBcmd1bWVudHNGb3JIZWFkaW5nKQogCiAjZGVmaW5lIEZJTkFMSVpF
X0RGR19DT0RFKGxpbmtCdWZmZXJSZWZlcmVuY2UsIGRhdGFMb2dBcmd1bWVudHNGb3JIZWFkaW5n
KSAgXAotICAgIEZJTkFMSVpFX0NPREVfSUYoT3B0aW9uczo6c2hvd0RGR0Rpc2Fzc2VtYmx5KCks
IGxpbmtCdWZmZXJSZWZlcmVuY2UsIGRhdGFMb2dBcmd1bWVudHNGb3JIZWFkaW5nKQorICAgIEZJ
TkFMSVpFX0NPREVfSUYoKE9wdGlvbnM6OnNob3dEaXNhc3NlbWJseSgpIHx8IE9wdGlvbnM6OnNo
b3dERkdEaXNhc3NlbWJseSgpKSwgbGlua0J1ZmZlclJlZmVyZW5jZSwgZGF0YUxvZ0FyZ3VtZW50
c0ZvckhlYWRpbmcpCiAKIH0gLy8gbmFtZXNwYWNlIEpTQwogCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5oCShy
ZXZpc2lvbiAxMzUwNDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3Jv
QXNzZW1ibGVyWDg2XzY0LmgJKHdvcmtpbmcgY29weSkKQEAgLTU4Nyw3ICs1ODcsNyBAQCBwdWJs
aWM6CiAKICAgICBzdGF0aWMgYm9vbCBjYW5KdW1wUmVwbGFjZVBhdGNoYWJsZUJyYW5jaFB0cldp
dGhQYXRjaCgpIHsgcmV0dXJuIHRydWU7IH0KICAgICAKLSAgICBzdGF0aWMgQ29kZUxvY2F0aW9u
TGFiZWwgc3RhcnRPZlBhdGNoYWJsZUJyYW5jaFB0cldpdGhQYXRjaChDb2RlTG9jYXRpb25EYXRh
TGFiZWxQdHIgbGFiZWwpCisgICAgc3RhdGljIENvZGVMb2NhdGlvbkxhYmVsIHN0YXJ0T2ZCcmFu
Y2hQdHJXaXRoUGF0Y2hPblJlZ2lzdGVyKENvZGVMb2NhdGlvbkRhdGFMYWJlbFB0ciBsYWJlbCkK
ICAgICB7CiAgICAgICAgIGNvbnN0IGludCByZXhCeXRlcyA9IDE7CiAgICAgICAgIGNvbnN0IGlu
dCBvcGNvZGVCeXRlcyA9IDE7CkBAIC01OTcsMTEgKzU5NywyMSBAQCBwdWJsaWM6CiAgICAgICAg
IHJldHVybiBsYWJlbC5sYWJlbEF0T2Zmc2V0KC10b3RhbEJ5dGVzKTsKICAgICB9CiAgICAgCisg
ICAgc3RhdGljIENvZGVMb2NhdGlvbkxhYmVsIHN0YXJ0T2ZQYXRjaGFibGVCcmFuY2hQdHJXaXRo
UGF0Y2hPbkFkZHJlc3MoQ29kZUxvY2F0aW9uRGF0YUxhYmVsUHRyIGxhYmVsKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIHN0YXJ0T2ZCcmFuY2hQdHJXaXRoUGF0Y2hPblJlZ2lzdGVyKGxhYmVsKTsK
KyAgICB9CisgICAgCiAgICAgc3RhdGljIHZvaWQgcmV2ZXJ0SnVtcFJlcGxhY2VtZW50VG9QYXRj
aGFibGVCcmFuY2hQdHJXaXRoUGF0Y2goQ29kZUxvY2F0aW9uTGFiZWwgaW5zdHJ1Y3Rpb25TdGFy
dCwgQWRkcmVzcywgdm9pZCogaW5pdGlhbFZhbHVlKQogICAgIHsKICAgICAgICAgWDg2QXNzZW1i
bGVyOjpyZXZlcnRKdW1wVG9fbW92cV9pNjRyKGluc3RydWN0aW9uU3RhcnQuZXhlY3V0YWJsZUFk
ZHJlc3MoKSwgcmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4oaW5pdGlhbFZhbHVlKSwgc2NyYXRj
aFJlZ2lzdGVyKTsKICAgICB9CiAKKyAgICBzdGF0aWMgdm9pZCByZXZlcnRKdW1wUmVwbGFjZW1l
bnRUb1BhdGNoYWJsZUJyYW5jaFB0cldpdGhQYXRjaChDb2RlTG9jYXRpb25MYWJlbCBpbnN0cnVj
dGlvblN0YXJ0LCBSZWdpc3RlcklELCB2b2lkKiBpbml0aWFsVmFsdWUpCisgICAgeworICAgICAg
ICBYODZBc3NlbWJsZXI6OnJldmVydEp1bXBUb19tb3ZxX2k2NHIoaW5zdHJ1Y3Rpb25TdGFydC5l
eGVjdXRhYmxlQWRkcmVzcygpLCByZWludGVycHJldF9jYXN0PGludHB0cl90Pihpbml0aWFsVmFs
dWUpLCBzY3JhdGNoUmVnaXN0ZXIpOworICAgIH0KKwogcHJpdmF0ZToKICAgICBmcmllbmQgY2xh
c3MgTGlua0J1ZmZlcjsKICAgICBmcmllbmQgY2xhc3MgUmVwYXRjaEJ1ZmZlcjsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvUmVwYXRjaEJ1ZmZlci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvUmVwYXRjaEJ1ZmZlci5oCShyZXZp
c2lvbiAxMzUwNDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1JlcGF0Y2hC
dWZmZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMTQxLDkgKzE0MSwxNCBAQCBwdWJsaWM6CiAgICAg
ICAgICAgICByZXBsYWNlV2l0aEFkZHJlc3NDb21wdXRhdGlvbihsYWJlbCk7CiAgICAgfQogCi0g
ICAgc3RhdGljIENvZGVMb2NhdGlvbkxhYmVsIHN0YXJ0T2ZQYXRjaGFibGVCcmFuY2hQdHJXaXRo
UGF0Y2goQ29kZUxvY2F0aW9uRGF0YUxhYmVsUHRyIGxhYmVsKQorICAgIHN0YXRpYyBDb2RlTG9j
YXRpb25MYWJlbCBzdGFydE9mQnJhbmNoUHRyV2l0aFBhdGNoT25SZWdpc3RlcihDb2RlTG9jYXRp
b25EYXRhTGFiZWxQdHIgbGFiZWwpCiAgICAgewotICAgICAgICByZXR1cm4gTWFjcm9Bc3NlbWJs
ZXI6OnN0YXJ0T2ZQYXRjaGFibGVCcmFuY2hQdHJXaXRoUGF0Y2gobGFiZWwpOworICAgICAgICBy
ZXR1cm4gTWFjcm9Bc3NlbWJsZXI6OnN0YXJ0T2ZCcmFuY2hQdHJXaXRoUGF0Y2hPblJlZ2lzdGVy
KGxhYmVsKTsKKyAgICB9CisgICAgCisgICAgc3RhdGljIENvZGVMb2NhdGlvbkxhYmVsIHN0YXJ0
T2ZQYXRjaGFibGVCcmFuY2hQdHJXaXRoUGF0Y2hPbkFkZHJlc3MoQ29kZUxvY2F0aW9uRGF0YUxh
YmVsUHRyIGxhYmVsKQorICAgIHsKKyAgICAgICAgcmV0dXJuIE1hY3JvQXNzZW1ibGVyOjpzdGFy
dE9mUGF0Y2hhYmxlQnJhbmNoUHRyV2l0aFBhdGNoT25BZGRyZXNzKGxhYmVsKTsKICAgICB9CiAg
ICAgCiAgICAgdm9pZCByZXBsYWNlV2l0aEp1bXAoQ29kZUxvY2F0aW9uTGFiZWwgaW5zdHJ1Y3Rp
b25TdGFydCwgQ29kZUxvY2F0aW9uTGFiZWwgZGVzdGluYXRpb24pCkBAIC0xNTQsNiArMTU5LDEx
IEBAIHB1YmxpYzoKICAgICAvLyBUaGlzIGlzIGEgKmJpdCogb2YgYSBzaWxseSBBUEksIHNpbmNl
IHdlIGN1cnJlbnRseSBhbHdheXMgYWxzbyByZXBhdGNoIHRoZQogICAgIC8vIGltbWVkaWF0ZSBh
ZnRlciBjYWxsaW5nIHRoaXMuIEJ1dCBJJ20gZmluZSB3aXRoIHRoYXQsIHNpbmNlIHRoaXMganVz
dCBmZWVscwogICAgIC8vIGxlc3MgeXVja3kuCisgICAgdm9pZCByZXZlcnRKdW1wUmVwbGFjZW1l
bnRUb0JyYW5jaFB0cldpdGhQYXRjaChDb2RlTG9jYXRpb25MYWJlbCBpbnN0cnVjdGlvblN0YXJ0
LCBNYWNyb0Fzc2VtYmxlcjo6UmVnaXN0ZXJJRCByZWcsIHZvaWQqIHZhbHVlKQorICAgIHsKKyAg
ICAgICAgTWFjcm9Bc3NlbWJsZXI6OnJldmVydEp1bXBSZXBsYWNlbWVudFRvUGF0Y2hhYmxlQnJh
bmNoUHRyV2l0aFBhdGNoKGluc3RydWN0aW9uU3RhcnQsIHJlZywgdmFsdWUpOworICAgIH0KKwog
ICAgIHZvaWQgcmV2ZXJ0SnVtcFJlcGxhY2VtZW50VG9QYXRjaGFibGVCcmFuY2hQdHJXaXRoUGF0
Y2goQ29kZUxvY2F0aW9uTGFiZWwgaW5zdHJ1Y3Rpb25TdGFydCwgTWFjcm9Bc3NlbWJsZXI6OkFk
ZHJlc3MgYWRkcmVzcywgdm9pZCogdmFsdWUpCiAgICAgewogICAgICAgICBNYWNyb0Fzc2VtYmxl
cjo6cmV2ZXJ0SnVtcFJlcGxhY2VtZW50VG9QYXRjaGFibGVCcmFuY2hQdHJXaXRoUGF0Y2goaW5z
dHJ1Y3Rpb25TdGFydCwgYWRkcmVzcywgdmFsdWUpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0NhbGxMaW5rSW5mby5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rSW5mby5jcHAJKHJldmlzaW9uIDEzNTA0MSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8uY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zNyw2ICszNyw3IEBAIHZvaWQgQ2FsbExpbmtJbmZvOjp1bmxpbmsoSlNHbG9i
YWxEYXRhJiAKIHsKICAgICBBU1NFUlQoaXNMaW5rZWQoKSk7CiAgICAgCisgICAgcmVwYXRjaEJ1
ZmZlci5yZXZlcnRKdW1wUmVwbGFjZW1lbnRUb0JyYW5jaFB0cldpdGhQYXRjaChSZXBhdGNoQnVm
ZmVyOjpzdGFydE9mQnJhbmNoUHRyV2l0aFBhdGNoT25SZWdpc3Rlcihob3RQYXRoQmVnaW4pLCBz
dGF0aWNfY2FzdDxNYWNyb0Fzc2VtYmxlcjo6UmVnaXN0ZXJJRD4oY2FsbGVlR1BSKSwgMCk7CiAg
ICAgaWYgKGlzREZHKSB7CiAjaWYgRU5BQkxFKERGR19KSVQpCiAgICAgICAgIHJlcGF0Y2hCdWZm
ZXIucmVsaW5rKGNhbGxSZXR1cm5Mb2NhdGlvbiwgKGNhbGxUeXBlID09IENvbnN0cnVjdCA/IGds
b2JhbERhdGEuZ2V0Q1RJU3R1YihERkc6OmxpbmtDb25zdHJ1Y3RUaHVua0dlbmVyYXRvcikgOiBn
bG9iYWxEYXRhLmdldENUSVN0dWIoREZHOjpsaW5rQ2FsbFRodW5rR2VuZXJhdG9yKSkuY29kZSgp
KTsKQEAgLTQ3LDYgKzQ4LDcgQEAgdm9pZCBDYWxsTGlua0luZm86OnVubGluayhKU0dsb2JhbERh
dGEmIAogICAgICAgICByZXBhdGNoQnVmZmVyLnJlbGluayhjYWxsUmV0dXJuTG9jYXRpb24sIGNh
bGxUeXBlID09IENvbnN0cnVjdCA/IGdsb2JhbERhdGEuaml0U3R1YnMtPmN0aVZpcnR1YWxDb25z
dHJ1Y3RMaW5rKCkgOiBnbG9iYWxEYXRhLmppdFN0dWJzLT5jdGlWaXJ0dWFsQ2FsbExpbmsoKSk7
CiAgICAgaGFzU2VlblNob3VsZFJlcGF0Y2ggPSBmYWxzZTsKICAgICBjYWxsZWUuY2xlYXIoKTsK
KyAgICBzdHViLmNsZWFyKCk7CiAKICAgICAvLyBJdCB3aWxsIGJlIG9uIGEgbGlzdCBpZiB0aGUg
Y2FsbGVlIGhhcyBhIGNvZGUgYmxvY2suCiAgICAgaWYgKGlzT25MaXN0KCkpCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rSW5mby5oCShyZXZpc2lvbiAx
MzUwNDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDcgQEAKICNpZm5kZWYgQ2FsbExpbmtJbmZvX2gK
ICNkZWZpbmUgQ2FsbExpbmtJbmZvX2gKIAorI2luY2x1ZGUgIkNsb3N1cmVDYWxsU3R1YlJvdXRp
bmUuaCIKICNpbmNsdWRlICJDb2RlTG9jYXRpb24uaCIKICNpbmNsdWRlICJKSVRXcml0ZUJhcnJp
ZXIuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCkBAIC03MCwxMiArNzEsMTQgQEAgc3RydWN0
IENhbGxMaW5rSW5mbyA6IHB1YmxpYyBCYXNpY1Jhd1NlbgogICAgIENvZGVMb2NhdGlvbk5lYXJD
YWxsIGhvdFBhdGhPdGhlcjsKICAgICBKSVRXcml0ZUJhcnJpZXI8SlNGdW5jdGlvbj4gY2FsbGVl
OwogICAgIFdyaXRlQmFycmllcjxKU0Z1bmN0aW9uPiBsYXN0U2VlbkNhbGxlZTsKKyAgICBSZWZQ
dHI8Q2xvc3VyZUNhbGxTdHViUm91dGluZT4gc3R1YjsKICAgICBib29sIGhhc1NlZW5TaG91bGRS
ZXBhdGNoIDogMTsKICAgICBib29sIGlzREZHIDogMTsKICAgICBDYWxsVHlwZSBjYWxsVHlwZSA6
IDY7Ci0gICAgdW5zaWduZWQgYnl0ZWNvZGVJbmRleDsKKyAgICB1bnNpZ25lZCBjYWxsZWVHUFIg
OiA4OworICAgIENvZGVPcmlnaW4gY29kZU9yaWdpbjsKIAotICAgIGJvb2wgaXNMaW5rZWQoKSB7
IHJldHVybiBjYWxsZWU7IH0KKyAgICBib29sIGlzTGlua2VkKCkgeyByZXR1cm4gc3R1YiB8fCBj
YWxsZWU7IH0KICAgICB2b2lkIHVubGluayhKU0dsb2JhbERhdGEmLCBSZXBhdGNoQnVmZmVyJik7
CiAKICAgICBib29sIHNlZW5PbmNlKCkKQEAgLTk2LDcgKzk5LDcgQEAgaW5saW5lIHZvaWQqIGdl
dENhbGxMaW5rSW5mb1JldHVybkxvY2F0aQogCiBpbmxpbmUgdW5zaWduZWQgZ2V0Q2FsbExpbmtJ
bmZvQnl0ZWNvZGVJbmRleChDYWxsTGlua0luZm8qIGNhbGxMaW5rSW5mbykKIHsKLSAgICByZXR1
cm4gY2FsbExpbmtJbmZvLT5ieXRlY29kZUluZGV4OworICAgIHJldHVybiBjYWxsTGlua0luZm8t
PmNvZGVPcmlnaW4uYnl0ZWNvZGVJbmRleDsKIH0KICNlbmRpZiAvLyBFTkFCTEUoSklUKQogCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAkocmV2
aXNpb24gMTM1MDQxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9j
ay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxODcsNyArMjE4Nyw3IEBAIHZvaWQgQ29kZUJsb2Nr
OjpmaW5hbGl6ZVVuY29uZGl0aW9uYWxseSgKICAgICAvLyBDaGVjayBpZiB3ZSdyZSBub3QgbGl2
ZS4gSWYgd2UgYXJlLCB0aGVuIGpldHRpc29uLgogICAgIGlmICghKHNob3VsZEltbWVkaWF0ZWx5
QXNzdW1lTGl2ZW5lc3NEdXJpbmdTY2FuKCkgfHwgbV9kZmdEYXRhLT5saXZlbmVzc0hhc0JlZW5Q
cm92ZWQpKSB7CiAgICAgICAgIGlmICh2ZXJib3NlVW5saW5raW5nKQotICAgICAgICAgICAgZGF0
YUxvZygiQ29kZSBibG9jayAlcCBoYXMgZGVhZCB3ZWFrIHJlZmVyZW5jZXMsIGpldHRpc29uaW5n
IGR1cmluZyBHQy5cbiIsIHRoaXMpOworICAgICAgICAgICAgZGF0YUxvZygiQ29kZSBibG9jayAl
cCAoZXhlY3V0YWJsZSAlcCkgaGFzIGRlYWQgd2VhayByZWZlcmVuY2VzLCBqZXR0aXNvbmluZyBk
dXJpbmcgR0MuXG4iLCB0aGlzLCBvd25lckV4ZWN1dGFibGUoKSk7CiAKICAgICAgICAgLy8gTWFr
ZSBzdXJlIHRoYXQgdGhlIGJhc2VsaW5lIEpJVCBrbm93cyB0aGF0IGl0IHNob3VsZCByZS13YXJt
LXVwIGJlZm9yZQogICAgICAgICAvLyBvcHRpbWl6aW5nLgpAQCAtMjIyNSwxMCArMjIyNSwxOSBA
QCB2b2lkIENvZGVCbG9jazo6ZmluYWxpemVVbmNvbmRpdGlvbmFsbHkoCiAgICAgaWYgKCEhZ2V0
SklUQ29kZSgpKSB7CiAgICAgICAgIFJlcGF0Y2hCdWZmZXIgcmVwYXRjaEJ1ZmZlcih0aGlzKTsK
ICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bWJlck9mQ2FsbExpbmtJbmZvcygp
OyArK2kpIHsKLSAgICAgICAgICAgIGlmIChjYWxsTGlua0luZm8oaSkuaXNMaW5rZWQoKSAmJiAh
SGVhcDo6aXNNYXJrZWQoY2FsbExpbmtJbmZvKGkpLmNhbGxlZS5nZXQoKSkpIHsKLSAgICAgICAg
ICAgICAgICBpZiAodmVyYm9zZVVubGlua2luZykKLSAgICAgICAgICAgICAgICAgICAgZGF0YUxv
ZygiQ2xlYXJpbmcgY2FsbCBmcm9tICVwIHRvICVwLlxuIiwgdGhpcywgY2FsbExpbmtJbmZvKGkp
LmNhbGxlZS5nZXQoKSk7Ci0gICAgICAgICAgICAgICAgY2FsbExpbmtJbmZvKGkpLnVubGluaygq
bV9nbG9iYWxEYXRhLCByZXBhdGNoQnVmZmVyKTsKKyAgICAgICAgICAgIGlmIChjYWxsTGlua0lu
Zm8oaSkuaXNMaW5rZWQoKSkgeworICAgICAgICAgICAgICAgIGlmIChDbG9zdXJlQ2FsbFN0dWJS
b3V0aW5lKiBzdHViID0gY2FsbExpbmtJbmZvKGkpLnN0dWIuZ2V0KCkpIHsKKyAgICAgICAgICAg
ICAgICAgICAgaWYgKCFIZWFwOjppc01hcmtlZChzdHViLT5zdHJ1Y3R1cmUoKSkKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHx8ICFIZWFwOjppc01hcmtlZChzdHViLT5leGVjdXRhYmxlKCkpKSB7
CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAodmVyYm9zZVVubGlua2luZykKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCJDbGVhcmluZyBjbG9zdXJlIGNhbGwgZnJvbSAl
cCB0byAlcCwgc3R1YiByb3V0aW5lICVwLlxuIiwgdGhpcywgc3R1Yi0+ZXhlY3V0YWJsZSgpLCBz
dHViKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxMaW5rSW5mbyhpKS51bmxpbmsoKm1f
Z2xvYmFsRGF0YSwgcmVwYXRjaEJ1ZmZlcik7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICB9IGVsc2UgaWYgKCFIZWFwOjppc01hcmtlZChjYWxsTGlua0luZm8oaSkuY2Fs
bGVlLmdldCgpKSkgeworICAgICAgICAgICAgICAgICAgICBpZiAodmVyYm9zZVVubGlua2luZykK
KyAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIkNsZWFyaW5nIGNhbGwgZnJvbSAlcCB0
byAlcC5cbiIsIHRoaXMsIGNhbGxMaW5rSW5mbyhpKS5jYWxsZWUuZ2V0KCkpOworICAgICAgICAg
ICAgICAgICAgICBjYWxsTGlua0luZm8oaSkudW5saW5rKCptX2dsb2JhbERhdGEsIHJlcGF0Y2hC
dWZmZXIpOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlm
ICghIWNhbGxMaW5rSW5mbyhpKS5sYXN0U2VlbkNhbGxlZQogICAgICAgICAgICAgICAgICYmICFI
ZWFwOjppc01hcmtlZChjYWxsTGlua0luZm8oaSkubGFzdFNlZW5DYWxsZWUuZ2V0KCkpKQpAQCAt
MjU4Myw2ICsyNTkyLDM1IEBAIEluc3RydWN0aW9uKiBDb2RlQmxvY2s6OmFkanVzdFBDSWZBdENh
bGwKIH0KICNlbmRpZiAvLyBFTkFCTEUoTExJTlQpCiAKKyNpZiBFTkFCTEUoSklUKQorQ2xvc3Vy
ZUNhbGxTdHViUm91dGluZSogQ29kZUJsb2NrOjpmaW5kQ2xvc3VyZUNhbGxGb3JSZXR1cm5QQyhS
ZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MpCit7CisgICAgZm9yICh1bnNpZ25lZCBpID0g
bV9jYWxsTGlua0luZm9zLnNpemUoKTsgaS0tOykgeworICAgICAgICBDYWxsTGlua0luZm8mIGlu
Zm8gPSBtX2NhbGxMaW5rSW5mb3NbaV07CisgICAgICAgIGlmICghaW5mby5zdHViKQorICAgICAg
ICAgICAgY29udGludWU7CisgICAgICAgIGlmICghaW5mby5zdHViLT5jb2RlKCkuZXhlY3V0YWJs
ZU1lbW9yeSgpLT5jb250YWlucyhyZXR1cm5BZGRyZXNzLnZhbHVlKCkpKQorICAgICAgICAgICAg
Y29udGludWU7CisgICAgICAgIAorICAgICAgICByZXR1cm4gaW5mby5zdHViLmdldCgpOworICAg
IH0KKyAgICAKKyAgICAvLyBUaGUgc3R1YiByb3V0aW5lIG1heSBoYXZlIGJlZW4gamV0dGlzb25l
ZC4gVGhpcyBpcyByYXJlLCBidXQgd2UgaGF2ZSB0byBoYW5kbGUgaXQuCisgICAgY29uc3QgSklU
U3R1YlJvdXRpbmVTZXQmIHNldCA9IG1fZ2xvYmFsRGF0YS0+aGVhcC5qaXRTdHViUm91dGluZXMo
KTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSBzZXQuc2l6ZSgpOyBpLS07KSB7CisgICAgICAgIEdD
QXdhcmVKSVRTdHViUm91dGluZSogZ2VuZXJpY1N0dWIgPSBzZXQuYXQoaSk7CisgICAgICAgIGlm
ICghZ2VuZXJpY1N0dWItPmlzQ2xvc3VyZUNhbGwoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOwor
ICAgICAgICBDbG9zdXJlQ2FsbFN0dWJSb3V0aW5lKiBzdHViID0gc3RhdGljX2Nhc3Q8Q2xvc3Vy
ZUNhbGxTdHViUm91dGluZSo+KGdlbmVyaWNTdHViKTsKKyAgICAgICAgaWYgKCFzdHViLT5jb2Rl
KCkuZXhlY3V0YWJsZU1lbW9yeSgpLT5jb250YWlucyhyZXR1cm5BZGRyZXNzLnZhbHVlKCkpKQor
ICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIHJldHVybiBzdHViOworICAgIH0KKyAgICAK
KyAgICByZXR1cm4gMDsKK30KKyNlbmRpZgorCiB1bnNpZ25lZCBDb2RlQmxvY2s6OmJ5dGVjb2Rl
T2Zmc2V0KEV4ZWNTdGF0ZSogZXhlYywgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzKQog
ewogICAgIFVOVVNFRF9QQVJBTShleGVjKTsKQEAgLTI2MjAsNyArMjY1OCwxNiBAQCB1bnNpZ25l
ZCBDb2RlQmxvY2s6OmJ5dGVjb2RlT2Zmc2V0KEV4ZWNTCiAgICAgVmVjdG9yPENhbGxSZXR1cm5P
ZmZzZXRUb0J5dGVjb2RlT2Zmc2V0PiYgY2FsbEluZGljZXMgPSBtX3JhcmVEYXRhLT5tX2NhbGxS
ZXR1cm5JbmRleFZlY3RvcjsKICAgICBpZiAoIWNhbGxJbmRpY2VzLnNpemUoKSkKICAgICAgICAg
cmV0dXJuIDE7Ci0gICAgcmV0dXJuIGJpbmFyeVNlYXJjaDxDYWxsUmV0dXJuT2Zmc2V0VG9CeXRl
Y29kZU9mZnNldCwgdW5zaWduZWQsIGdldENhbGxSZXR1cm5PZmZzZXQ+KGNhbGxJbmRpY2VzLmJl
Z2luKCksIGNhbGxJbmRpY2VzLnNpemUoKSwgZ2V0SklUQ29kZSgpLm9mZnNldE9mKHJldHVybkFk
ZHJlc3MudmFsdWUoKSkpLT5ieXRlY29kZU9mZnNldDsKKyAgICAKKyAgICBpZiAoZ2V0SklUQ29k
ZSgpLmdldEV4ZWN1dGFibGVNZW1vcnkoKS0+Y29udGFpbnMocmV0dXJuQWRkcmVzcy52YWx1ZSgp
KSkgeworICAgICAgICB1bnNpZ25lZCBjYWxsUmV0dXJuT2Zmc2V0ID0gZ2V0SklUQ29kZSgpLm9m
ZnNldE9mKHJldHVybkFkZHJlc3MudmFsdWUoKSk7CisgICAgICAgIENhbGxSZXR1cm5PZmZzZXRU
b0J5dGVjb2RlT2Zmc2V0KiByZXN1bHQgPQorICAgICAgICAgICAgYmluYXJ5U2VhcmNoPENhbGxS
ZXR1cm5PZmZzZXRUb0J5dGVjb2RlT2Zmc2V0LCB1bnNpZ25lZCwgZ2V0Q2FsbFJldHVybk9mZnNl
dD4oY2FsbEluZGljZXMuYmVnaW4oKSwgY2FsbEluZGljZXMuc2l6ZSgpLCBjYWxsUmV0dXJuT2Zm
c2V0KTsKKyAgICAgICAgQVNTRVJUKHJlc3VsdC0+Y2FsbFJldHVybk9mZnNldCA9PSBjYWxsUmV0
dXJuT2Zmc2V0KTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdC0+Ynl0ZWNvZGVPZmZzZXQ7CisgICAg
fQorCisgICAgcmV0dXJuIGZpbmRDbG9zdXJlQ2FsbEZvclJldHVyblBDKHJldHVybkFkZHJlc3Mp
LT5jb2RlT3JpZ2luKCkuYnl0ZWNvZGVJbmRleDsKICNlbmRpZiAvLyBFTkFCTEUoSklUKQogCiAj
aWYgIUVOQUJMRShMTElOVCkgJiYgIUVOQUJMRShKSVQpCkBAIC0yNjI4LDYgKzI2NzUsMjQgQEAg
dW5zaWduZWQgQ29kZUJsb2NrOjpieXRlY29kZU9mZnNldChFeGVjUwogI2VuZGlmCiB9CiAKK2Jv
b2wgQ29kZUJsb2NrOjpjb2RlT3JpZ2luRm9yUmV0dXJuKFJldHVybkFkZHJlc3NQdHIgcmV0dXJu
QWRkcmVzcywgQ29kZU9yaWdpbiYgY29kZU9yaWdpbikKK3sKKyAgICBpZiAoIWhhc0NvZGVPcmln
aW5zKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICghZ2V0SklUQ29kZSgpLmdl
dEV4ZWN1dGFibGVNZW1vcnkoKS0+Y29udGFpbnMocmV0dXJuQWRkcmVzcy52YWx1ZSgpKSkgewor
ICAgICAgICBjb2RlT3JpZ2luID0gZmluZENsb3N1cmVDYWxsRm9yUmV0dXJuUEMocmV0dXJuQWRk
cmVzcyktPmNvZGVPcmlnaW4oKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIAor
ICAgIHVuc2lnbmVkIG9mZnNldCA9IGdldEpJVENvZGUoKS5vZmZzZXRPZihyZXR1cm5BZGRyZXNz
LnZhbHVlKCkpOworICAgIENvZGVPcmlnaW5BdENhbGxSZXR1cm5PZmZzZXQqIGVudHJ5ID0gYmlu
YXJ5U2VhcmNoPENvZGVPcmlnaW5BdENhbGxSZXR1cm5PZmZzZXQsIHVuc2lnbmVkLCBnZXRDYWxs
UmV0dXJuT2Zmc2V0Rm9yQ29kZU9yaWdpbj4oY29kZU9yaWdpbnMoKS5iZWdpbigpLCBjb2RlT3Jp
Z2lucygpLnNpemUoKSwgb2Zmc2V0LCBXVEY6OktleU11c3ROb3RCZVByZXNlbnRJbkFycmF5KTsK
KyAgICBpZiAoZW50cnktPmNhbGxSZXR1cm5PZmZzZXQgIT0gb2Zmc2V0KQorICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgY29kZU9yaWdpbiA9IGVudHJ5LT5jb2RlT3JpZ2luOworICAgIHJldHVy
biB0cnVlOworfQorCiB2b2lkIENvZGVCbG9jazo6Y2xlYXJFdmFsQ2FjaGUoKQogewogICAgIGlm
ICghIW1fYWx0ZXJuYXRpdmUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q29kZUJsb2NrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0NvZGVCbG9jay5oCShyZXZpc2lvbiAxMzUwNDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQ29kZUJsb2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTI0NSw2ICsyNDUsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgCiAgICAgICAgIENhbGxMaW5rSW5mbyYgZ2V0Q2FsbExp
bmtJbmZvKHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgpCiAgICAgICAgIHsKKyAgICAgICAgICAgIEFT
U0VSVChKSVRDb2RlOjppc0Jhc2VsaW5lQ29kZShnZXRKSVRUeXBlKCkpKTsKICAgICAgICAgICAg
IHJldHVybiAqKGJpbmFyeVNlYXJjaDxDYWxsTGlua0luZm8sIHVuc2lnbmVkLCBnZXRDYWxsTGlu
a0luZm9CeXRlY29kZUluZGV4PihtX2NhbGxMaW5rSW5mb3MuYmVnaW4oKSwgbV9jYWxsTGlua0lu
Zm9zLnNpemUoKSwgYnl0ZWNvZGVJbmRleCkpOwogICAgICAgICB9CiAjZW5kaWYgLy8gRU5BQkxF
KEpJVCkKQEAgLTI3NCw2ICsyNzUsMTEgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHsKICAg
ICAgICAgICAgIG1faW5jb21pbmdDYWxscy5wdXNoKGluY29taW5nKTsKICAgICAgICAgfQorICAg
ICAgICAKKyAgICAgICAgYm9vbCBpc0luY29taW5nQ2FsbEFscmVhZHlMaW5rZWQoQ2FsbExpbmtJ
bmZvKiBpbmNvbWluZykKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIG1faW5jb21pbmdD
YWxscy5pc09uTGlzdChpbmNvbWluZyk7CisgICAgICAgIH0KICNlbmRpZiAvLyBFTkFCTEUoSklU
KQogCiAjaWYgRU5BQkxFKExMSU5UKQpAQCAtODEzLDE3ICs4MTksNyBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgICAgIHJldHVybiBtX3JhcmVEYXRhICYmICEhbV9yYXJlRGF0YS0+bV9jb2Rl
T3JpZ2lucy5zaXplKCk7CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIGJvb2wgY29kZU9y
aWdpbkZvclJldHVybihSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MsIENvZGVPcmlnaW4m
IGNvZGVPcmlnaW4pCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICghaGFzQ29kZU9yaWdpbnMo
KSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICB1bnNpZ25lZCBv
ZmZzZXQgPSBnZXRKSVRDb2RlKCkub2Zmc2V0T2YocmV0dXJuQWRkcmVzcy52YWx1ZSgpKTsKLSAg
ICAgICAgICAgIENvZGVPcmlnaW5BdENhbGxSZXR1cm5PZmZzZXQqIGVudHJ5ID0gYmluYXJ5U2Vh
cmNoPENvZGVPcmlnaW5BdENhbGxSZXR1cm5PZmZzZXQsIHVuc2lnbmVkLCBnZXRDYWxsUmV0dXJu
T2Zmc2V0Rm9yQ29kZU9yaWdpbj4oY29kZU9yaWdpbnMoKS5iZWdpbigpLCBjb2RlT3JpZ2lucygp
LnNpemUoKSwgb2Zmc2V0LCBXVEY6OktleU11c3ROb3RCZVByZXNlbnRJbkFycmF5KTsKLSAgICAg
ICAgICAgIGlmIChlbnRyeS0+Y2FsbFJldHVybk9mZnNldCAhPSBvZmZzZXQpCi0gICAgICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgY29kZU9yaWdpbiA9IGVudHJ5LT5jb2Rl
T3JpZ2luOwotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KKyAgICAgICAgYm9v
bCBjb2RlT3JpZ2luRm9yUmV0dXJuKFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcywgQ29k
ZU9yaWdpbiYgY29kZU9yaWdpbik7CiAgICAgICAgIAogICAgICAgICBDb2RlT3JpZ2luIGNvZGVP
cmlnaW4odW5zaWduZWQgaW5kZXgpCiAgICAgICAgIHsKQEAgLTExODcsNiArMTE4MywxMCBAQCBu
YW1lc3BhY2UgSlNDIHsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIGZyaWVuZCBjbGFzcyBERkdD
b2RlQmxvY2tzOworCisjaWYgRU5BQkxFKEpJVCkKKyAgICAgICAgQ2xvc3VyZUNhbGxTdHViUm91
dGluZSogZmluZENsb3N1cmVDYWxsRm9yUmV0dXJuUEMoUmV0dXJuQWRkcmVzc1B0cik7CisjZW5k
aWYKICAgICAgICAgCiAjaWYgRU5BQkxFKERGR19KSVQpCiAgICAgICAgIHZvaWQgdGFsbHlGcmVx
dWVudEV4aXRTaXRlcygpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRD
b21waWxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdK
SVRDb21waWxlci5jcHAJKHJldmlzaW9uIDEzNTA0MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODgsMTEgKzE4OCwx
MiBAQCB2b2lkIEpJVENvbXBpbGVyOjpsaW5rKExpbmtCdWZmZXImIGxpbmtCCiAgICAgICAgIENh
bGxMaW5rSW5mbyYgaW5mbyA9IG1fY29kZUJsb2NrLT5jYWxsTGlua0luZm8oaSk7CiAgICAgICAg
IGluZm8uY2FsbFR5cGUgPSBtX2pzQ2FsbHNbaV0ubV9jYWxsVHlwZTsKICAgICAgICAgaW5mby5p
c0RGRyA9IHRydWU7Ci0gICAgICAgIGluZm8uYnl0ZWNvZGVJbmRleCA9IG1fanNDYWxsc1tpXS5t
X2NvZGVPcmlnaW4uYnl0ZWNvZGVJbmRleDsKKyAgICAgICAgaW5mby5jb2RlT3JpZ2luID0gbV9q
c0NhbGxzW2ldLm1fY29kZU9yaWdpbjsKICAgICAgICAgbGlua0J1ZmZlci5saW5rKG1fanNDYWxs
c1tpXS5tX3Nsb3dDYWxsLCBGdW5jdGlvblB0cigobV9nbG9iYWxEYXRhLT5nZXRDVElTdHViKGlu
Zm8uY2FsbFR5cGUgPT0gQ2FsbExpbmtJbmZvOjpDb25zdHJ1Y3QgPyBsaW5rQ29uc3RydWN0VGh1
bmtHZW5lcmF0b3IgOiBsaW5rQ2FsbFRodW5rR2VuZXJhdG9yKSkuY29kZSgpLmV4ZWN1dGFibGVB
ZGRyZXNzKCkpKTsKICAgICAgICAgaW5mby5jYWxsUmV0dXJuTG9jYXRpb24gPSBsaW5rQnVmZmVy
LmxvY2F0aW9uT2ZOZWFyQ2FsbChtX2pzQ2FsbHNbaV0ubV9zbG93Q2FsbCk7CiAgICAgICAgIGlu
Zm8uaG90UGF0aEJlZ2luID0gbGlua0J1ZmZlci5sb2NhdGlvbk9mKG1fanNDYWxsc1tpXS5tX3Rh
cmdldFRvQ2hlY2spOwogICAgICAgICBpbmZvLmhvdFBhdGhPdGhlciA9IGxpbmtCdWZmZXIubG9j
YXRpb25PZk5lYXJDYWxsKG1fanNDYWxsc1tpXS5tX2Zhc3RDYWxsKTsKKyAgICAgICAgaW5mby5j
YWxsZWVHUFIgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9qc0NhbGxzW2ldLm1fY2FsbGVlKTsK
ICAgICB9CiAgICAgCiAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIG9zckV4aXRUaHVuayA9IGds
b2JhbERhdGEoKS0+Z2V0Q1RJU3R1Yihvc3JFeGl0R2VuZXJhdGlvblRodW5rR2VuZXJhdG9yKTsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmgJKHJldmlz
aW9uIDEzNTA0MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIu
aAkod29ya2luZyBjb3B5KQpAQCAtMzU3LDkgKzM1Nyw5IEBAIHB1YmxpYzoKICAgICAgICAgbV9w
cm9wZXJ0eUFjY2Vzc2VzLmFwcGVuZChyZWNvcmQpOwogICAgIH0KIAotICAgIHZvaWQgYWRkSlND
YWxsKENhbGwgZmFzdENhbGwsIENhbGwgc2xvd0NhbGwsIERhdGFMYWJlbFB0ciB0YXJnZXRUb0No
ZWNrLCBDYWxsTGlua0luZm86OkNhbGxUeXBlIGNhbGxUeXBlLCBDb2RlT3JpZ2luIGNvZGVPcmln
aW4pCisgICAgdm9pZCBhZGRKU0NhbGwoQ2FsbCBmYXN0Q2FsbCwgQ2FsbCBzbG93Q2FsbCwgRGF0
YUxhYmVsUHRyIHRhcmdldFRvQ2hlY2ssIENhbGxMaW5rSW5mbzo6Q2FsbFR5cGUgY2FsbFR5cGUs
IEdQUlJlZyBjYWxsZWUsIENvZGVPcmlnaW4gY29kZU9yaWdpbikKICAgICB7Ci0gICAgICAgIG1f
anNDYWxscy5hcHBlbmQoSlNDYWxsUmVjb3JkKGZhc3RDYWxsLCBzbG93Q2FsbCwgdGFyZ2V0VG9D
aGVjaywgY2FsbFR5cGUsIGNvZGVPcmlnaW4pKTsKKyAgICAgICAgbV9qc0NhbGxzLmFwcGVuZChK
U0NhbGxSZWNvcmQoZmFzdENhbGwsIHNsb3dDYWxsLCB0YXJnZXRUb0NoZWNrLCBjYWxsVHlwZSwg
Y2FsbGVlLCBjb2RlT3JpZ2luKSk7CiAgICAgfQogICAgIAogICAgIHZvaWQgYWRkV2Vha1JlZmVy
ZW5jZShKU0NlbGwqIHRhcmdldCkKQEAgLTQ0MCwxMSArNDQwLDEyIEBAIHByaXZhdGU6CiAgICAg
VmVjdG9yPENhbGxFeGNlcHRpb25SZWNvcmQ+IG1fZXhjZXB0aW9uQ2hlY2tzOwogICAgIAogICAg
IHN0cnVjdCBKU0NhbGxSZWNvcmQgewotICAgICAgICBKU0NhbGxSZWNvcmQoQ2FsbCBmYXN0Q2Fs
bCwgQ2FsbCBzbG93Q2FsbCwgRGF0YUxhYmVsUHRyIHRhcmdldFRvQ2hlY2ssIENhbGxMaW5rSW5m
bzo6Q2FsbFR5cGUgY2FsbFR5cGUsIENvZGVPcmlnaW4gY29kZU9yaWdpbikKKyAgICAgICAgSlND
YWxsUmVjb3JkKENhbGwgZmFzdENhbGwsIENhbGwgc2xvd0NhbGwsIERhdGFMYWJlbFB0ciB0YXJn
ZXRUb0NoZWNrLCBDYWxsTGlua0luZm86OkNhbGxUeXBlIGNhbGxUeXBlLCBHUFJSZWcgY2FsbGVl
LCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4pCiAgICAgICAgICAgICA6IG1fZmFzdENhbGwoZmFzdENh
bGwpCiAgICAgICAgICAgICAsIG1fc2xvd0NhbGwoc2xvd0NhbGwpCiAgICAgICAgICAgICAsIG1f
dGFyZ2V0VG9DaGVjayh0YXJnZXRUb0NoZWNrKQogICAgICAgICAgICAgLCBtX2NhbGxUeXBlKGNh
bGxUeXBlKQorICAgICAgICAgICAgLCBtX2NhbGxlZShjYWxsZWUpCiAgICAgICAgICAgICAsIG1f
Y29kZU9yaWdpbihjb2RlT3JpZ2luKQogICAgICAgICB7CiAgICAgICAgIH0KQEAgLTQ1Myw2ICs0
NTQsNyBAQCBwcml2YXRlOgogICAgICAgICBDYWxsIG1fc2xvd0NhbGw7CiAgICAgICAgIERhdGFM
YWJlbFB0ciBtX3RhcmdldFRvQ2hlY2s7CiAgICAgICAgIENhbGxMaW5rSW5mbzo6Q2FsbFR5cGUg
bV9jYWxsVHlwZTsKKyAgICAgICAgR1BSUmVnIG1fY2FsbGVlOwogICAgICAgICBDb2RlT3JpZ2lu
IG1fY29kZU9yaWdpbjsKICAgICB9OwogICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdPcGVyYXRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCShyZXZpc2lvbiAxMzUwNDEpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDYy
LDE0ICsxMDYyLDE0IEBAIGNoYXIqIERGR19PUEVSQVRJT04gb3BlcmF0aW9uTGlua0NvbnN0cnUK
ICAgICByZXR1cm4gbGlua0ZvcihleGVjQ2FsbGVlLCBDb2RlRm9yQ29uc3RydWN0KTsKIH0KIAot
aW5saW5lIGNoYXIqIHZpcnR1YWxGb3IoRXhlY1N0YXRlKiBleGVjQ2FsbGVlLCBDb2RlU3BlY2lh
bGl6YXRpb25LaW5kIGtpbmQpCitpbmxpbmUgY2hhciogdmlydHVhbEZvcldpdGhGdW5jdGlvbihF
eGVjU3RhdGUqIGV4ZWNDYWxsZWUsIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCwgSlNDZWxs
KiYgY2FsbGVlQXNGdW5jdGlvbkNlbGwpCiB7CiAgICAgRXhlY1N0YXRlKiBleGVjID0gZXhlY0Nh
bGxlZS0+Y2FsbGVyRnJhbWUoKTsKICAgICBKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEgPSAmZXhl
Yy0+Z2xvYmFsRGF0YSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoZ2xvYmFs
RGF0YSwgZXhlYyk7CiAKICAgICBKU1ZhbHVlIGNhbGxlZUFzVmFsdWUgPSBleGVjQ2FsbGVlLT5j
YWxsZWVBc1ZhbHVlKCk7Ci0gICAgSlNDZWxsKiBjYWxsZWVBc0Z1bmN0aW9uQ2VsbCA9IGdldEpT
RnVuY3Rpb24oY2FsbGVlQXNWYWx1ZSk7CisgICAgY2FsbGVlQXNGdW5jdGlvbkNlbGwgPSBnZXRK
U0Z1bmN0aW9uKGNhbGxlZUFzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FsbGVlQXNGdW5j
dGlvbkNlbGwpKQogICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oaGFuZGxl
SG9zdENhbGwoZXhlY0NhbGxlZSwgY2FsbGVlQXNWYWx1ZSwga2luZCkpOwogICAgIApAQCAtMTA4
Nyw2ICsxMDg3LDM4IEBAIGlubGluZSBjaGFyKiB2aXJ0dWFsRm9yKEV4ZWNTdGF0ZSogZXhlY0MK
ICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oZXhlY3V0YWJsZS0+Z2VuZXJhdGVk
SklUQ29kZVdpdGhBcml0eUNoZWNrRm9yKGtpbmQpLmV4ZWN1dGFibGVBZGRyZXNzKCkpOwogfQog
CitpbmxpbmUgY2hhciogdmlydHVhbEZvcihFeGVjU3RhdGUqIGV4ZWNDYWxsZWUsIENvZGVTcGVj
aWFsaXphdGlvbktpbmQga2luZCkKK3sKKyAgICBKU0NlbGwqIGNhbGxlZUFzRnVuY3Rpb25DZWxs
SWdub3JlZDsKKyAgICByZXR1cm4gdmlydHVhbEZvcldpdGhGdW5jdGlvbihleGVjQ2FsbGVlLCBr
aW5kLCBjYWxsZWVBc0Z1bmN0aW9uQ2VsbElnbm9yZWQpOworfQorCitjaGFyKiBERkdfT1BFUkFU
SU9OIG9wZXJhdGlvbkxpbmtDbG9zdXJlQ2FsbChFeGVjU3RhdGUqIGV4ZWNDYWxsZWUpCit7Cisg
ICAgSlNDZWxsKiBjYWxsZWVBc0Z1bmN0aW9uQ2VsbDsKKyAgICBjaGFyKiByZXN1bHQgPSB2aXJ0
dWFsRm9yV2l0aEZ1bmN0aW9uKGV4ZWNDYWxsZWUsIENvZGVGb3JDYWxsLCBjYWxsZWVBc0Z1bmN0
aW9uQ2VsbCk7CisgICAgQ2FsbExpbmtJbmZvJiBjYWxsTGlua0luZm8gPSBleGVjQ2FsbGVlLT5j
YWxsZXJGcmFtZSgpLT5jb2RlQmxvY2soKS0+Z2V0Q2FsbExpbmtJbmZvKGV4ZWNDYWxsZWUtPnJl
dHVyblBDKCkpOworICAgIAorICAgIEpTRnVuY3Rpb24qIGNhbGxlZSA9IGpzQ2FzdDxKU0Z1bmN0
aW9uKj4oY2FsbGVlQXNGdW5jdGlvbkNlbGwpOworICAgIEpTRnVuY3Rpb24qIG9sZENhbGxlZSA9
IGNhbGxMaW5rSW5mby5jYWxsZWUuZ2V0KCk7CisgICAgCisgICAgaWYgKG9sZENhbGxlZQorICAg
ICAgICAmJiBvbGRDYWxsZWUtPnN0cnVjdHVyZSgpID09IGNhbGxlZS0+c3RydWN0dXJlKCkKKyAg
ICAgICAgJiYgb2xkQ2FsbGVlLT5leGVjdXRhYmxlKCkgPT0gY2FsbGVlLT5leGVjdXRhYmxlKCkp
IHsKKyAgICAgICAgCisgICAgICAgIEFTU0VSVChjYWxsZWUtPmV4ZWN1dGFibGUoKS0+aGFzSklU
Q29kZUZvckNhbGwoKSk7CisgICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBjb2RlUHRyID0g
Y2FsbGVlLT5leGVjdXRhYmxlKCktPmdlbmVyYXRlZEpJVENvZGVGb3JDYWxsKCkuYWRkcmVzc0Zv
ckNhbGwoKTsKKyAgICAgICAgCisgICAgICAgIGRmZ0xpbmtDbG9zdXJlQ2FsbCgKKyAgICAgICAg
ICAgIGV4ZWNDYWxsZWUsIGNhbGxMaW5rSW5mbywKKyAgICAgICAgICAgIGNhbGxlZS0+ZXhlY3V0
YWJsZSgpLT5pc0hvc3RGdW5jdGlvbigpID8gMCA6ICZqc0Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxl
Kj4oY2FsbGVlLT5leGVjdXRhYmxlKCkpLT5nZW5lcmF0ZWRCeXRlY29kZUZvckNhbGwoKSwKKyAg
ICAgICAgICAgIGNhbGxlZS0+c3RydWN0dXJlKCksIGNhbGxlZS0+ZXhlY3V0YWJsZSgpLCBjb2Rl
UHRyKTsKKyAgICB9IGVsc2UKKyAgICAgICAgZGZnTGlua1Nsb3dGb3IoZXhlY0NhbGxlZSwgY2Fs
bExpbmtJbmZvLCBDb2RlRm9yQ2FsbCk7CisgICAgCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwog
Y2hhciogREZHX09QRVJBVElPTiBvcGVyYXRpb25WaXJ0dWFsQ2FsbChFeGVjU3RhdGUqIGV4ZWND
YWxsZWUpCiB7ICAgIAogICAgIHJldHVybiB2aXJ0dWFsRm9yKGV4ZWNDYWxsZWUsIENvZGVGb3JD
YWxsKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oCShy
ZXZpc2lvbiAxMzUwNDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlv
bnMuaAkod29ya2luZyBjb3B5KQpAQCAtMTgxLDYgKzE4MSw3IEBAIHNpemVfdCBERkdfT1BFUkFU
SU9OIG9wZXJhdGlvbkNvbXBhcmVTdHIKIHNpemVfdCBERkdfT1BFUkFUSU9OIG9wZXJhdGlvbkNv
bXBhcmVTdHJpY3RFcShFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkT3AyKSBXVEZfSU5URVJOQUw7CiBjaGFyKiBERkdfT1BFUkFUSU9O
IG9wZXJhdGlvblZpcnR1YWxDYWxsKEV4ZWNTdGF0ZSopIFdURl9JTlRFUk5BTDsKIGNoYXIqIERG
R19PUEVSQVRJT04gb3BlcmF0aW9uTGlua0NhbGwoRXhlY1N0YXRlKikgV1RGX0lOVEVSTkFMOwor
Y2hhciogREZHX09QRVJBVElPTiBvcGVyYXRpb25MaW5rQ2xvc3VyZUNhbGwoRXhlY1N0YXRlKikg
V1RGX0lOVEVSTkFMOwogY2hhciogREZHX09QRVJBVElPTiBvcGVyYXRpb25WaXJ0dWFsQ29uc3Ry
dWN0KEV4ZWNTdGF0ZSopIFdURl9JTlRFUk5BTDsKIGNoYXIqIERGR19PUEVSQVRJT04gb3BlcmF0
aW9uTGlua0NvbnN0cnVjdChFeGVjU3RhdGUqKSBXVEZfSU5URVJOQUw7CiBKU0NlbGwqIERGR19P
UEVSQVRJT04gb3BlcmF0aW9uQ3JlYXRlQWN0aXZhdGlvbihFeGVjU3RhdGUqKSBXVEZfSU5URVJO
QUw7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1JlcGF0Y2guY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUmVwYXRjaC5jcHAJKHJldmlz
aW9uIDEzNTA0MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUmVwYXRjaC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTExOCw3ICsxMTgsNyBAQCBzdGF0aWMgdm9pZCByZXBsYWNlV2l0
aEp1bXAoUmVwYXRjaEJ1ZmZlCiB7CiAgICAgaWYgKE1hY3JvQXNzZW1ibGVyOjpjYW5KdW1wUmVw
bGFjZVBhdGNoYWJsZUJyYW5jaFB0cldpdGhQYXRjaCgpKSB7CiAgICAgICAgIHJlcGF0Y2hCdWZm
ZXIucmVwbGFjZVdpdGhKdW1wKAotICAgICAgICAgICAgUmVwYXRjaEJ1ZmZlcjo6c3RhcnRPZlBh
dGNoYWJsZUJyYW5jaFB0cldpdGhQYXRjaCgKKyAgICAgICAgICAgIFJlcGF0Y2hCdWZmZXI6OnN0
YXJ0T2ZQYXRjaGFibGVCcmFuY2hQdHJXaXRoUGF0Y2hPbkFkZHJlc3MoCiAgICAgICAgICAgICAg
ICAgc3R1YkluZm8uY2FsbFJldHVybkxvY2F0aW9uLmRhdGFMYWJlbFB0ckF0T2Zmc2V0KAogICAg
ICAgICAgICAgICAgICAgICAtKGludHB0cl90KXN0dWJJbmZvLnBhdGNoLmRmZy5kZWx0YUNoZWNr
SW1tVG9DYWxsKSksCiAgICAgICAgICAgICBDb2RlTG9jYXRpb25MYWJlbCh0YXJnZXQpKTsKQEAg
LTExMTMsOCArMTExMywyMCBAQCB2b2lkIGRmZ0J1aWxkUHV0QnlJZExpc3QoRXhlY1N0YXRlKiBl
eGVjCiAgICAgICAgIGRmZ1JlcGF0Y2hDYWxsKGV4ZWMtPmNvZGVCbG9jaygpLCBzdHViSW5mby5j
YWxsUmV0dXJuTG9jYXRpb24sIGFwcHJvcHJpYXRlR2VuZXJpY1B1dEJ5SWRGdW5jdGlvbihzbG90
LCBwdXRLaW5kKSk7CiB9CiAKK3N0YXRpYyB2b2lkIGxpbmtTbG93Rm9yKFJlcGF0Y2hCdWZmZXIm
IHJlcGF0Y2hCdWZmZXIsIEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgQ2FsbExpbmtJbmZvJiBj
YWxsTGlua0luZm8sIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkKK3sKKyAgICBpZiAoa2lu
ZCA9PSBDb2RlRm9yQ2FsbCkgeworICAgICAgICByZXBhdGNoQnVmZmVyLnJlbGluayhjYWxsTGlu
a0luZm8uY2FsbFJldHVybkxvY2F0aW9uLCBnbG9iYWxEYXRhLT5nZXRDVElTdHViKHZpcnR1YWxD
YWxsVGh1bmtHZW5lcmF0b3IpLmNvZGUoKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAg
QVNTRVJUKGtpbmQgPT0gQ29kZUZvckNvbnN0cnVjdCk7CisgICAgcmVwYXRjaEJ1ZmZlci5yZWxp
bmsoY2FsbExpbmtJbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbiwgZ2xvYmFsRGF0YS0+Z2V0Q1RJU3R1
Yih2aXJ0dWFsQ29uc3RydWN0VGh1bmtHZW5lcmF0b3IpLmNvZGUoKSk7Cit9CisKIHZvaWQgZGZn
TGlua0ZvcihFeGVjU3RhdGUqIGV4ZWMsIENhbGxMaW5rSW5mbyYgY2FsbExpbmtJbmZvLCBDb2Rl
QmxvY2sqIGNhbGxlZUNvZGVCbG9jaywgSlNGdW5jdGlvbiogY2FsbGVlLCBNYWNyb0Fzc2VtYmxl
ckNvZGVQdHIgY29kZVB0ciwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKQogeworICAgIEFT
U0VSVCghY2FsbExpbmtJbmZvLnN0dWIpOworICAgIAogICAgIENvZGVCbG9jayogY2FsbGVyQ29k
ZUJsb2NrID0gZXhlYy0+Y2FsbGVyRnJhbWUoKS0+Y29kZUJsb2NrKCk7CiAgICAgSlNHbG9iYWxE
YXRhKiBnbG9iYWxEYXRhID0gY2FsbGVyQ29kZUJsb2NrLT5nbG9iYWxEYXRhKCk7CiAgICAgCkBA
IC0xMTI5LDExICsxMTQxLDEwMSBAQCB2b2lkIGRmZ0xpbmtGb3IoRXhlY1N0YXRlKiBleGVjLCBD
YWxsTGluCiAgICAgICAgIGNhbGxlZUNvZGVCbG9jay0+bGlua0luY29taW5nQ2FsbCgmY2FsbExp
bmtJbmZvKTsKICAgICAKICAgICBpZiAoa2luZCA9PSBDb2RlRm9yQ2FsbCkgewotICAgICAgICBy
ZXBhdGNoQnVmZmVyLnJlbGluayhjYWxsTGlua0luZm8uY2FsbFJldHVybkxvY2F0aW9uLCBnbG9i
YWxEYXRhLT5nZXRDVElTdHViKHZpcnR1YWxDYWxsVGh1bmtHZW5lcmF0b3IpLmNvZGUoKSk7Cisg
ICAgICAgIHJlcGF0Y2hCdWZmZXIucmVsaW5rKGNhbGxMaW5rSW5mby5jYWxsUmV0dXJuTG9jYXRp
b24sIGdsb2JhbERhdGEtPmdldENUSVN0dWIobGlua0Nsb3N1cmVDYWxsVGh1bmtHZW5lcmF0b3Ip
LmNvZGUoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CisgICAgCiAgICAgQVNTRVJUKGtpbmQg
PT0gQ29kZUZvckNvbnN0cnVjdCk7Ci0gICAgcmVwYXRjaEJ1ZmZlci5yZWxpbmsoY2FsbExpbmtJ
bmZvLmNhbGxSZXR1cm5Mb2NhdGlvbiwgZ2xvYmFsRGF0YS0+Z2V0Q1RJU3R1Yih2aXJ0dWFsQ29u
c3RydWN0VGh1bmtHZW5lcmF0b3IpLmNvZGUoKSk7CisgICAgbGlua1Nsb3dGb3IocmVwYXRjaEJ1
ZmZlciwgZ2xvYmFsRGF0YSwgY2FsbExpbmtJbmZvLCBDb2RlRm9yQ29uc3RydWN0KTsKK30KKwor
dm9pZCBkZmdMaW5rU2xvd0ZvcihFeGVjU3RhdGUqIGV4ZWMsIENhbGxMaW5rSW5mbyYgY2FsbExp
bmtJbmZvLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpCit7CisgICAgQ29kZUJsb2NrKiBj
YWxsZXJDb2RlQmxvY2sgPSBleGVjLT5jYWxsZXJGcmFtZSgpLT5jb2RlQmxvY2soKTsKKyAgICBK
U0dsb2JhbERhdGEqIGdsb2JhbERhdGEgPSBjYWxsZXJDb2RlQmxvY2stPmdsb2JhbERhdGEoKTsK
KyAgICAKKyAgICBSZXBhdGNoQnVmZmVyIHJlcGF0Y2hCdWZmZXIoY2FsbGVyQ29kZUJsb2NrKTsK
KyAgICAKKyAgICBsaW5rU2xvd0ZvcihyZXBhdGNoQnVmZmVyLCBnbG9iYWxEYXRhLCBjYWxsTGlu
a0luZm8sIGtpbmQpOworfQorCit2b2lkIGRmZ0xpbmtDbG9zdXJlQ2FsbChFeGVjU3RhdGUqIGV4
ZWMsIENhbGxMaW5rSW5mbyYgY2FsbExpbmtJbmZvLCBDb2RlQmxvY2sqIGNhbGxlZUNvZGVCbG9j
aywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEV4ZWN1dGFibGVCYXNlKiBleGVjdXRhYmxlLCBNYWNy
b0Fzc2VtYmxlckNvZGVQdHIgY29kZVB0cikKK3sKKyAgICBBU1NFUlQoIWNhbGxMaW5rSW5mby5z
dHViKTsKKyAgICAKKyAgICBDb2RlQmxvY2sqIGNhbGxlckNvZGVCbG9jayA9IGV4ZWMtPmNhbGxl
ckZyYW1lKCktPmNvZGVCbG9jaygpOworICAgIEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSA9IGNh
bGxlckNvZGVCbG9jay0+Z2xvYmFsRGF0YSgpOworICAgIAorICAgIEdQUlJlZyBjYWxsZWVHUFIg
PSBzdGF0aWNfY2FzdDxHUFJSZWc+KGNhbGxMaW5rSW5mby5jYWxsZWVHUFIpOworICAgIAorICAg
IENDYWxsSGVscGVycyBzdHViSml0KGdsb2JhbERhdGEsIGNhbGxlckNvZGVCbG9jayk7CisgICAg
CisgICAgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCBzbG93UGF0aDsKKyAgICAKKyNpZiBVU0UoSlNW
QUxVRTY0KQorICAgIHNsb3dQYXRoLmFwcGVuZCgKKyAgICAgICAgc3R1YkppdC5icmFuY2hUZXN0
NjQoCisgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6Ok5vblplcm8sIGNhbGxlZUdQUiwgR1BSSW5m
bzo6dGFnTWFza1JlZ2lzdGVyKSk7CisjZWxzZQorICAgIEZJWE1FOworI2VuZGlmCisgICAgCisg
ICAgc2xvd1BhdGguYXBwZW5kKAorICAgICAgICBzdHViSml0LmJyYW5jaFB0cigKKyAgICAgICAg
ICAgIENDYWxsSGVscGVyczo6Tm90RXF1YWwsCisgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkFk
ZHJlc3MoY2FsbGVlR1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwKKyAgICAgICAgICAg
IENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihzdHJ1Y3R1cmUpKSk7CisgICAgCisgICAgc2xv
d1BhdGguYXBwZW5kKAorICAgICAgICBzdHViSml0LmJyYW5jaFB0cigKKyAgICAgICAgICAgIEND
YWxsSGVscGVyczo6Tm90RXF1YWwsCisgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Mo
Y2FsbGVlR1BSLCBKU0Z1bmN0aW9uOjpvZmZzZXRPZkV4ZWN1dGFibGUoKSksCisgICAgICAgICAg
ICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoZXhlY3V0YWJsZSkpKTsKKyAgICAKKyAgICBz
dHViSml0LmxvYWRQdHIoCisgICAgICAgIENDYWxsSGVscGVyczo6QWRkcmVzcyhjYWxsZWVHUFIs
IEpTRnVuY3Rpb246Om9mZnNldE9mU2NvcGVDaGFpbigpKSwKKyAgICAgICAgR1BSSW5mbzo6cmV0
dXJuVmFsdWVHUFIpOworCisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICBzdHViSml0LnN0b3JlNjQo
CisgICAgICAgIEdQUkluZm86OnJldHVyblZhbHVlR1BSLAorICAgICAgICBDQ2FsbEhlbHBlcnM6
OkFkZHJlc3MoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIHN0YXRpY19jYXN0PHB0cmRpZmZf
dD4oc2l6ZW9mKFJlZ2lzdGVyKSAqIEpTU3RhY2s6OlNjb3BlQ2hhaW4pKSk7CisjZWxzZQorICAg
IEZJWE1FOworI2VuZGlmCisgICAgCisgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbCA9IHN0dWJK
aXQubmVhckNhbGwoKTsKKyAgICBKSVRDb21waWxlcjo6SnVtcCBkb25lID0gc3R1YkppdC5qdW1w
KCk7CisgICAgCisgICAgc2xvd1BhdGgubGluaygmc3R1YkppdCk7CisgICAgc3R1YkppdC5tb3Zl
KENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihjYWxsTGlua0luZm8uY2FsbFJldHVybkxvY2F0
aW9uLmV4ZWN1dGFibGVBZGRyZXNzKCkpLCBHUFJJbmZvOjpub25BcmdHUFIyKTsKKyAgICBzdHVi
Sml0LnJlc3RvcmVSZXR1cm5BZGRyZXNzQmVmb3JlUmV0dXJuKEdQUkluZm86Om5vbkFyZ0dQUjIp
OworICAgIEpJVENvbXBpbGVyOjpKdW1wIHNsb3cgPSBzdHViSml0Lmp1bXAoKTsKKyAgICAKKyAg
ICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKCpnbG9iYWxEYXRhLCAmc3R1YkppdCwgY2FsbGVyQ29k
ZUJsb2NrKTsKKyAgICAKKyAgICBwYXRjaEJ1ZmZlci5saW5rKGNhbGwsIEZ1bmN0aW9uUHRyKGNv
ZGVQdHIuZXhlY3V0YWJsZUFkZHJlc3MoKSkpOworICAgIHBhdGNoQnVmZmVyLmxpbmsoZG9uZSwg
Y2FsbExpbmtJbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbi5sYWJlbEF0T2Zmc2V0KDApKTsKKyAgICBw
YXRjaEJ1ZmZlci5saW5rKHNsb3csIENvZGVMb2NhdGlvbkxhYmVsKGdsb2JhbERhdGEtPmdldENU
SVN0dWIodmlydHVhbENhbGxUaHVua0dlbmVyYXRvcikuY29kZSgpKSk7CisgICAgCisgICAgUGFz
c1JlZlB0cjxDbG9zdXJlQ2FsbFN0dWJSb3V0aW5lPiBzdHViUm91dGluZSA9IGFkb3B0UmVmKG5l
dyBDbG9zdXJlQ2FsbFN0dWJSb3V0aW5lKAorICAgICAgICBGSU5BTElaRV9ERkdfQ09ERSgKKyAg
ICAgICAgICAgIHBhdGNoQnVmZmVyLAorICAgICAgICAgICAgKCJERkcgY2xvc3VyZSBjYWxsIHN0
dWIgZm9yIENvZGVCbG9jayAlcCwgcmV0dXJuIHBvaW50ICVwLCB0YXJnZXQgJXAgKENvZGVCbG9j
ayAlcCkiLAorICAgICAgICAgICAgIGNhbGxlckNvZGVCbG9jaywgY2FsbExpbmtJbmZvLmNhbGxS
ZXR1cm5Mb2NhdGlvbi5sYWJlbEF0T2Zmc2V0KDApLmV4ZWN1dGFibGVBZGRyZXNzKCksCisgICAg
ICAgICAgICAgY29kZVB0ci5leGVjdXRhYmxlQWRkcmVzcygpLCBjYWxsZWVDb2RlQmxvY2spKSwK
KyAgICAgICAgKmdsb2JhbERhdGEsIGNhbGxlckNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCks
IHN0cnVjdHVyZSwgZXhlY3V0YWJsZSwgY2FsbExpbmtJbmZvLmNvZGVPcmlnaW4pKTsKKyAgICAK
KyAgICBSZXBhdGNoQnVmZmVyIHJlcGF0Y2hCdWZmZXIoY2FsbGVyQ29kZUJsb2NrKTsKKyAgICAK
KyAgICByZXBhdGNoQnVmZmVyLnJlcGxhY2VXaXRoSnVtcCgKKyAgICAgICAgUmVwYXRjaEJ1ZmZl
cjo6c3RhcnRPZkJyYW5jaFB0cldpdGhQYXRjaE9uUmVnaXN0ZXIoY2FsbExpbmtJbmZvLmhvdFBh
dGhCZWdpbiksCisgICAgICAgIENvZGVMb2NhdGlvbkxhYmVsKHN0dWJSb3V0aW5lLT5jb2RlKCku
Y29kZSgpKSk7CisgICAgbGlua1Nsb3dGb3IocmVwYXRjaEJ1ZmZlciwgZ2xvYmFsRGF0YSwgY2Fs
bExpbmtJbmZvLCBDb2RlRm9yQ2FsbCk7CisgICAgCisgICAgY2FsbExpbmtJbmZvLnN0dWIgPSBz
dHViUm91dGluZTsKKyAgICAKKyAgICBBU1NFUlQoIWNhbGxlZUNvZGVCbG9jayB8fCBjYWxsZWVD
b2RlQmxvY2stPmlzSW5jb21pbmdDYWxsQWxyZWFkeUxpbmtlZCgmY2FsbExpbmtJbmZvKSk7CiB9
CiAKIHZvaWQgZGZnUmVzZXRHZXRCeUlEKFJlcGF0Y2hCdWZmZXImIHJlcGF0Y2hCdWZmZXIsIFN0
cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbykKQEAgLTExNDIsNyArMTI0NCw3IEBAIHZvaWQgZGZn
UmVzZXRHZXRCeUlEKFJlcGF0Y2hCdWZmZXImIHJlcGEKICAgICBDb2RlTG9jYXRpb25EYXRhTGFi
ZWxQdHIgc3RydWN0dXJlTGFiZWwgPSBzdHViSW5mby5jYWxsUmV0dXJuTG9jYXRpb24uZGF0YUxh
YmVsUHRyQXRPZmZzZXQoLShpbnRwdHJfdClzdHViSW5mby5wYXRjaC5kZmcuZGVsdGFDaGVja0lt
bVRvQ2FsbCk7CiAgICAgaWYgKE1hY3JvQXNzZW1ibGVyOjpjYW5KdW1wUmVwbGFjZVBhdGNoYWJs
ZUJyYW5jaFB0cldpdGhQYXRjaCgpKSB7CiAgICAgICAgIHJlcGF0Y2hCdWZmZXIucmV2ZXJ0SnVt
cFJlcGxhY2VtZW50VG9QYXRjaGFibGVCcmFuY2hQdHJXaXRoUGF0Y2goCi0gICAgICAgICAgICBS
ZXBhdGNoQnVmZmVyOjpzdGFydE9mUGF0Y2hhYmxlQnJhbmNoUHRyV2l0aFBhdGNoKHN0cnVjdHVy
ZUxhYmVsKSwKKyAgICAgICAgICAgIFJlcGF0Y2hCdWZmZXI6OnN0YXJ0T2ZQYXRjaGFibGVCcmFu
Y2hQdHJXaXRoUGF0Y2hPbkFkZHJlc3Moc3RydWN0dXJlTGFiZWwpLAogICAgICAgICAgICAgTWFj
cm9Bc3NlbWJsZXI6OkFkZHJlc3MoCiAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8TWFjcm9B
c3NlbWJsZXI6OlJlZ2lzdGVySUQ+KHN0dWJJbmZvLnBhdGNoLmRmZy5iYXNlR1BSKSwKICAgICAg
ICAgICAgICAgICBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwKQEAgLTExNzYsNyArMTI3OCw3
IEBAIHZvaWQgZGZnUmVzZXRQdXRCeUlEKFJlcGF0Y2hCdWZmZXImIHJlcGEKICAgICBDb2RlTG9j
YXRpb25EYXRhTGFiZWxQdHIgc3RydWN0dXJlTGFiZWwgPSBzdHViSW5mby5jYWxsUmV0dXJuTG9j
YXRpb24uZGF0YUxhYmVsUHRyQXRPZmZzZXQoLShpbnRwdHJfdClzdHViSW5mby5wYXRjaC5kZmcu
ZGVsdGFDaGVja0ltbVRvQ2FsbCk7CiAgICAgaWYgKE1hY3JvQXNzZW1ibGVyOjpjYW5KdW1wUmVw
bGFjZVBhdGNoYWJsZUJyYW5jaFB0cldpdGhQYXRjaCgpKSB7CiAgICAgICAgIHJlcGF0Y2hCdWZm
ZXIucmV2ZXJ0SnVtcFJlcGxhY2VtZW50VG9QYXRjaGFibGVCcmFuY2hQdHJXaXRoUGF0Y2goCi0g
ICAgICAgICAgICBSZXBhdGNoQnVmZmVyOjpzdGFydE9mUGF0Y2hhYmxlQnJhbmNoUHRyV2l0aFBh
dGNoKHN0cnVjdHVyZUxhYmVsKSwKKyAgICAgICAgICAgIFJlcGF0Y2hCdWZmZXI6OnN0YXJ0T2ZQ
YXRjaGFibGVCcmFuY2hQdHJXaXRoUGF0Y2hPbkFkZHJlc3Moc3RydWN0dXJlTGFiZWwpLAogICAg
ICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoCiAgICAgICAgICAgICAgICAgc3RhdGlj
X2Nhc3Q8TWFjcm9Bc3NlbWJsZXI6OlJlZ2lzdGVySUQ+KHN0dWJJbmZvLnBhdGNoLmRmZy5iYXNl
R1BSKSwKICAgICAgICAgICAgICAgICBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUmVwYXRjaC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUmVwYXRjaC5oCShyZXZpc2lvbiAxMzUwNDEpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1JlcGF0Y2guaAkod29ya2luZyBjb3B5KQpA
QCAtNDEsNiArNDEsOCBAQCB2b2lkIGRmZ0J1aWxkR2V0QnlJRFByb3RvTGlzdChFeGVjU3RhdGUq
CiB2b2lkIGRmZ1JlcGF0Y2hQdXRCeUlEKEV4ZWNTdGF0ZSosIEpTVmFsdWUsIGNvbnN0IElkZW50
aWZpZXImLCBjb25zdCBQdXRQcm9wZXJ0eVNsb3QmLCBTdHJ1Y3R1cmVTdHViSW5mbyYsIFB1dEtp
bmQpOwogdm9pZCBkZmdCdWlsZFB1dEJ5SWRMaXN0KEV4ZWNTdGF0ZSosIEpTVmFsdWUsIGNvbnN0
IElkZW50aWZpZXImLCBjb25zdCBQdXRQcm9wZXJ0eVNsb3QmLCBTdHJ1Y3R1cmVTdHViSW5mbyYs
IFB1dEtpbmQpOwogdm9pZCBkZmdMaW5rRm9yKEV4ZWNTdGF0ZSosIENhbGxMaW5rSW5mbyYsIENv
ZGVCbG9jayosIEpTRnVuY3Rpb24qIGNhbGxlZSwgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyLCBDb2Rl
U3BlY2lhbGl6YXRpb25LaW5kKTsKK3ZvaWQgZGZnTGlua1Nsb3dGb3IoRXhlY1N0YXRlKiwgQ2Fs
bExpbmtJbmZvJiwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCk7Cit2b2lkIGRmZ0xpbmtDbG9zdXJl
Q2FsbChFeGVjU3RhdGUqLCBDYWxsTGlua0luZm8mLCBDb2RlQmxvY2sqLCBTdHJ1Y3R1cmUqLCBF
eGVjdXRhYmxlQmFzZSosIE1hY3JvQXNzZW1ibGVyQ29kZVB0cik7CiB2b2lkIGRmZ1Jlc2V0R2V0
QnlJRChSZXBhdGNoQnVmZmVyJiwgU3RydWN0dXJlU3R1YkluZm8mKTsKIHZvaWQgZGZnUmVzZXRQ
dXRCeUlEKFJlcGF0Y2hCdWZmZXImLCBTdHJ1Y3R1cmVTdHViSW5mbyYpOwogCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHJl
dmlzaW9uIDEzNTA0MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQ2NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwNTgsNyArMTA1OCw3IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmVtaXRDYWxsKE5vZGUmIG5vZGUKICAgICAKICAgICBqc1ZhbHVlUmVzdWx0
KHJlc3VsdEdQUiwgbV9jb21waWxlSW5kZXgsIERhdGFGb3JtYXRKUywgVXNlQ2hpbGRyZW5DYWxs
ZWRFeHBsaWNpdGx5KTsKICAgICAKLSAgICBtX2ppdC5hZGRKU0NhbGwoZmFzdENhbGwsIHNsb3dD
YWxsLCB0YXJnZXRUb0NoZWNrLCBjYWxsVHlwZSwgYXQobV9jb21waWxlSW5kZXgpLmNvZGVPcmln
aW4pOworICAgIG1faml0LmFkZEpTQ2FsbChmYXN0Q2FsbCwgc2xvd0NhbGwsIHRhcmdldFRvQ2hl
Y2ssIGNhbGxUeXBlLCBjYWxsZWVHUFIsIGF0KG1fY29tcGlsZUluZGV4KS5jb2RlT3JpZ2luKTsK
IH0KIAogdGVtcGxhdGU8Ym9vbCBzdHJpY3Q+CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1RodW5rcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdUaHVua3MuY3BwCShyZXZpc2lvbiAxMzUwNDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1RodW5rcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxMyw2ICsyMTMsMTggQEAg
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGxpbmtDb25zdHJ1Y3RUaHVuawogICAgIHJldHVybiBsaW5r
Rm9yVGh1bmtHZW5lcmF0b3IoZ2xvYmFsRGF0YSwgQ29kZUZvckNvbnN0cnVjdCk7CiB9CiAKKy8v
IEZvciBjbG9zdXJlIG9wdGltaXphdGlvbnMsIHdlIG9ubHkgaW5jbHVkZSBjYWxscywgc2luY2Ug
aWYgeW91J3JlIHVzaW5nIGNsb3N1cmVzIGZvcgorLy8gb2JqZWN0IGNvbnN0cnVjdGlvbiB0aGVu
IHlvdSdyZSBnb2luZyB0byBsb3NlIGJpZyB0aW1lIGFueXdheS4KK01hY3JvQXNzZW1ibGVyQ29k
ZVJlZiBsaW5rQ2xvc3VyZUNhbGxUaHVua0dlbmVyYXRvcihKU0dsb2JhbERhdGEqIGdsb2JhbERh
dGEpCit7CisgICAgQ0NhbGxIZWxwZXJzIGppdChnbG9iYWxEYXRhKTsKKyAgICAKKyAgICBzbG93
UGF0aEZvcihqaXQsIGdsb2JhbERhdGEsIG9wZXJhdGlvbkxpbmtDbG9zdXJlQ2FsbCk7CisgICAg
CisgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcigqZ2xvYmFsRGF0YSwgJmppdCwgR0xPQkFMX1RI
VU5LX0lEKTsKKyAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgKCJERkcgbGlu
ayBjbG9zdXJlIGNhbGwgc2xvdyBwYXRoIHRodW5rIikpOworfQorCiBzdGF0aWMgTWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmIHZpcnR1YWxGb3JUaHVua0dlbmVyYXRvcigKICAgICBKU0dsb2JhbERhdGEq
IGdsb2JhbERhdGEsIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkKIHsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVGh1bmtzLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdUaHVua3MuaAkocmV2aXNpb24gMTM1MDQxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUaHVua3MuaAkod29ya2luZyBjb3B5KQpAQCAtNDUsNiAr
NDUsOCBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgdGhyb3dFeGNlcHRpb25Gcm9tCiBNYWNyb0Fz
c2VtYmxlckNvZGVSZWYgbGlua0NhbGxUaHVua0dlbmVyYXRvcihKU0dsb2JhbERhdGEqKTsKIE1h
Y3JvQXNzZW1ibGVyQ29kZVJlZiBsaW5rQ29uc3RydWN0VGh1bmtHZW5lcmF0b3IoSlNHbG9iYWxE
YXRhKik7CiAKK01hY3JvQXNzZW1ibGVyQ29kZVJlZiBsaW5rQ2xvc3VyZUNhbGxUaHVua0dlbmVy
YXRvcihKU0dsb2JhbERhdGEqKTsKKwogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIHZpcnR1YWxDYWxs
VGh1bmtHZW5lcmF0b3IoSlNHbG9iYWxEYXRhKik7CiBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgdmly
dHVhbENvbnN0cnVjdFRodW5rR2VuZXJhdG9yKEpTR2xvYmFsRGF0YSopOwogCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvSGVhcC5oCShyZXZpc2lvbiAxMzUwNDEpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9IZWFwLmgJKHdvcmtpbmcgY29weSkKQEAgLTE3NCw2ICsxNzQsOCBAQCBu
YW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBib29sIGlzUGFnZWRPdXQoZG91YmxlIGRlYWRsaW5l
KTsKICAgICAgICAgdm9pZCBkaWRTdGFydFZNU2h1dGRvd24oKTsKKyAgICAgICAgCisgICAgICAg
IGNvbnN0IEpJVFN0dWJSb3V0aW5lU2V0JiBqaXRTdHViUm91dGluZXMoKSB7IHJldHVybiBtX2pp
dFN0dWJSb3V0aW5lczsgfQogCiAgICAgcHJpdmF0ZToKICAgICAgICAgZnJpZW5kIGNsYXNzIENv
ZGVCbG9jazsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0pJVFN0dWJSb3V0aW5l
U2V0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSklUU3R1YlJv
dXRpbmVTZXQuaAkocmV2aXNpb24gMTM1MDQxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvSklUU3R1YlJvdXRpbmVTZXQuaAkod29ya2luZyBjb3B5KQpAQCAtNjUsNiArNjUsOSBAQCBw
dWJsaWM6CiAgICAgCiAgICAgdm9pZCB0cmFjZU1hcmtlZFN0dWJSb3V0aW5lcyhTbG90VmlzaXRv
ciYpOwogICAgIAorICAgIHVuc2lnbmVkIHNpemUoKSBjb25zdCB7IHJldHVybiBtX2xpc3RPZlJv
dXRpbmVzLnNpemUoKTsgfQorICAgIEdDQXdhcmVKSVRTdHViUm91dGluZSogYXQodW5zaWduZWQg
aSkgY29uc3QgeyByZXR1cm4gbV9saXN0T2ZSb3V0aW5lc1tpXTsgfQorICAgIAogcHJpdmF0ZToK
ICAgICB2b2lkIG1hcmtTbG93KHVpbnRwdHJfdCBhZGRyZXNzKTsKICAgICAKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ2xvc3VyZUNhbGxTdHViUm91dGluZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DbG9zdXJlQ2FsbFN0dWJSb3V0aW5lLmNw
cAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ2xvc3VyZUNhbGxT
dHViUm91dGluZS5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjIgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIkNsb3N1cmVDYWxsU3R1YlJvdXRpbmUuaCIKKworI2lmIEVOQUJMRShKSVQpCisK
KyNpbmNsdWRlICJFeGVjdXRhYmxlLmgiCisjaW5jbHVkZSAiSGVhcC5oIgorI2luY2x1ZGUgIkpT
R2xvYmFsRGF0YS5oIgorI2luY2x1ZGUgIlNsb3RWaXNpdG9yLmgiCisjaW5jbHVkZSAiU3RydWN0
dXJlLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitDbG9zdXJlQ2FsbFN0dWJSb3V0aW5lOjpDbG9z
dXJlQ2FsbFN0dWJSb3V0aW5lKAorICAgIGNvbnN0IE1hY3JvQXNzZW1ibGVyQ29kZVJlZiYgY29k
ZSwgSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25zdCBKU0NlbGwqIG93bmVyLAorICAgIFN0
cnVjdHVyZSogc3RydWN0dXJlLCBFeGVjdXRhYmxlQmFzZSogZXhlY3V0YWJsZSwgY29uc3QgQ29k
ZU9yaWdpbiYgY29kZU9yaWdpbikKKyAgICA6IEdDQXdhcmVKSVRTdHViUm91dGluZShjb2RlLCBn
bG9iYWxEYXRhLCB0cnVlKQorICAgICwgbV9zdHJ1Y3R1cmUoZ2xvYmFsRGF0YSwgb3duZXIsIHN0
cnVjdHVyZSkKKyAgICAsIG1fZXhlY3V0YWJsZShnbG9iYWxEYXRhLCBvd25lciwgZXhlY3V0YWJs
ZSkKKyAgICAsIG1fY29kZU9yaWdpbihjb2RlT3JpZ2luKQoreworfQorCitDbG9zdXJlQ2FsbFN0
dWJSb3V0aW5lOjp+Q2xvc3VyZUNhbGxTdHViUm91dGluZSgpCit7Cit9CisKK3ZvaWQgQ2xvc3Vy
ZUNhbGxTdHViUm91dGluZTo6bWFya1JlcXVpcmVkT2JqZWN0c0ludGVybmFsKFNsb3RWaXNpdG9y
JiB2aXNpdG9yKQoreworICAgIHZpc2l0b3IuYXBwZW5kKCZtX3N0cnVjdHVyZSk7CisgICAgdmlz
aXRvci5hcHBlbmQoJm1fZXhlY3V0YWJsZSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisj
ZW5kaWYgLy8gRU5BQkxFKEpJVCkKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9D
bG9zdXJlQ2FsbFN0dWJSb3V0aW5lLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9DbG9zdXJlQ2FsbFN0dWJSb3V0aW5lLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0Nsb3N1cmVDYWxsU3R1YlJvdXRpbmUuaAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSw2NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAK
KyAqLworCisjaWZuZGVmIENsb3N1cmVDYWxsU3R1YlJvdXRpbmVfaAorI2RlZmluZSBDbG9zdXJl
Q2FsbFN0dWJSb3V0aW5lX2gKKworI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgorCisjaWYgRU5B
QkxFKEpJVCkKKworI2luY2x1ZGUgIkNvZGVPcmlnaW4uaCIKKyNpbmNsdWRlICJHQ0F3YXJlSklU
U3R1YlJvdXRpbmUuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIENsb3N1cmVDYWxsU3R1
YlJvdXRpbmUgOiBwdWJsaWMgR0NBd2FyZUpJVFN0dWJSb3V0aW5lIHsKK3B1YmxpYzoKKyAgICBD
bG9zdXJlQ2FsbFN0dWJSb3V0aW5lKAorICAgICAgICBjb25zdCBNYWNyb0Fzc2VtYmxlckNvZGVS
ZWYmLCBKU0dsb2JhbERhdGEmLCBjb25zdCBKU0NlbGwqIG93bmVyLAorICAgICAgICBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSwgRXhlY3V0YWJsZUJhc2UqIGV4ZWN1dGFibGUsIGNvbnN0IENvZGVPcmln
aW4mKTsKKyAgICAKKyAgICB2aXJ0dWFsIH5DbG9zdXJlQ2FsbFN0dWJSb3V0aW5lKCk7CisgICAg
CisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX3N0cnVjdHVyZS5n
ZXQoKTsgfQorICAgIEV4ZWN1dGFibGVCYXNlKiBleGVjdXRhYmxlKCkgY29uc3QgeyByZXR1cm4g
bV9leGVjdXRhYmxlLmdldCgpOyB9CisgICAgY29uc3QgQ29kZU9yaWdpbiYgY29kZU9yaWdpbigp
IGNvbnN0IHsgcmV0dXJuIG1fY29kZU9yaWdpbjsgfQorCitwcm90ZWN0ZWQ6CisgICAgdmlydHVh
bCB2b2lkIG1hcmtSZXF1aXJlZE9iamVjdHNJbnRlcm5hbChTbG90VmlzaXRvciYpOworCitwcml2
YXRlOgorICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fc3RydWN0dXJlOworICAgIFdyaXRl
QmFycmllcjxFeGVjdXRhYmxlQmFzZT4gbV9leGVjdXRhYmxlOworICAgIC8vIFRoaXMgYWxsb3dz
IHVzIHRvIGZpZ3VyZSBvdXQgd2hvIGEgY2FsbCBpcyBsaW5rZWQgdG8gYnkgc2VhcmNoaW5nIHRo
cm91Z2gKKyAgICAvLyBzdHViIHJvdXRpbmVzLgorICAgIENvZGVPcmlnaW4gbV9jb2RlT3JpZ2lu
OworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBFTkFCTEUoSklUKQorCisj
ZW5kaWYgLy8gQ2xvc3VyZUNhbGxTdHViUm91dGluZV9oCisKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvR0NBd2FyZUpJVFN0dWJSb3V0aW5lLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0dDQXdhcmVKSVRTdHViUm91dGluZS5jcHAJKHJldmlzaW9u
IDEzNTA0MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvR0NBd2FyZUpJVFN0dWJSb3V0
aW5lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsMTcgKzMwLDE3IEBACiAKICNpbmNsdWRlICJI
ZWFwLmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxEYXRhLmgiCi0KICNpbmNsdWRlICJTbG90VmlzaXRv
ci5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZS5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIAogR0NBd2Fy
ZUpJVFN0dWJSb3V0aW5lOjpHQ0F3YXJlSklUU3R1YlJvdXRpbmUoCi0gICAgY29uc3QgTWFjcm9B
c3NlbWJsZXJDb2RlUmVmJiBjb2RlLCBKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEpCisgICAgY29u
c3QgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmJiBjb2RlLCBKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEs
IGJvb2wgaXNDbG9zdXJlQ2FsbCkKICAgICA6IEpJVFN0dWJSb3V0aW5lKGNvZGUpCiAgICAgLCBt
X21heUJlRXhlY3V0aW5nKGZhbHNlKQogICAgICwgbV9pc0pldHRpc29uZWQoZmFsc2UpCisgICAg
LCBtX2lzQ2xvc3VyZUNhbGwoaXNDbG9zdXJlQ2FsbCkKIHsKICAgICBnbG9iYWxEYXRhLmhlYXAu
bV9qaXRTdHViUm91dGluZXMuYWRkKHRoaXMpOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9HQ0F3YXJlSklUU3R1YlJvdXRpbmUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0dDQXdhcmVKSVRTdHViUm91dGluZS5oCShyZXZpc2lvbiAxMzUwNDEp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0dDQXdhcmVKSVRTdHViUm91dGluZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC01NCw3ICs1NCw3IEBAIGNsYXNzIEpJVFN0dWJSb3V0aW5lU2V0Owog
Ly8gbGlzdCB3aGljaCBkb2VzIG5vdCBnZXQgcmVjbGFpbWVkIGFsbCBhdCBvbmNlKS4KIGNsYXNz
IEdDQXdhcmVKSVRTdHViUm91dGluZSA6IHB1YmxpYyBKSVRTdHViUm91dGluZSB7CiBwdWJsaWM6
Ci0gICAgR0NBd2FyZUpJVFN0dWJSb3V0aW5lKGNvbnN0IE1hY3JvQXNzZW1ibGVyQ29kZVJlZiYs
IEpTR2xvYmFsRGF0YSYpOworICAgIEdDQXdhcmVKSVRTdHViUm91dGluZShjb25zdCBNYWNyb0Fz
c2VtYmxlckNvZGVSZWYmLCBKU0dsb2JhbERhdGEmLCBib29sIGlzQ2xvc3VyZUNhbGwgPSBmYWxz
ZSk7CiAgICAgdmlydHVhbCB+R0NBd2FyZUpJVFN0dWJSb3V0aW5lKCk7CiAgICAgCiAgICAgdm9p
ZCBtYXJrUmVxdWlyZWRPYmplY3RzKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQpAQCAtNjQsNiArNjQs
OCBAQCBwdWJsaWM6CiAgICAgCiAgICAgdm9pZCBkZWxldGVGcm9tR0MoKTsKICAgICAKKyAgICBi
b29sIGlzQ2xvc3VyZUNhbGwoKSBjb25zdCB7IHJldHVybiBtX2lzQ2xvc3VyZUNhbGw7IH0KKyAg
ICAKIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIHZvaWQgb2JzZXJ2ZVplcm9SZWZDb3VudCgpOwog
ICAgIApAQCAtNzQsNiArNzYsNyBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBtX21heUJlRXhlY3V0
aW5nOwogICAgIGJvb2wgbV9pc0pldHRpc29uZWQ7CisgICAgYm9vbCBtX2lzQ2xvc3VyZUNhbGw7
CiB9OwogCiAvLyBVc2UgdGhpcyBpZiB5b3Ugd2FudCB0byBtYXJrIG9uZSBhZGRpdGlvbmFsIG9i
amVjdCBkdXJpbmcgR0MgaWYgeW91ciBzdHViCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQu
Y3BwCShyZXZpc2lvbiAxMzUwNDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTc4MSw3ICs3ODEsNyBAQCBKSVRDb2RlIEpJVDo6cHJpdmF0
ZUNvbXBpbGUoQ29kZVB0ciogZnVuCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fY29k
ZUJsb2NrLT5udW1iZXJPZkNhbGxMaW5rSW5mb3MoKTsgKytpKSB7CiAgICAgICAgIENhbGxMaW5r
SW5mbyYgaW5mbyA9IG1fY29kZUJsb2NrLT5jYWxsTGlua0luZm8oaSk7CiAgICAgICAgIGluZm8u
Y2FsbFR5cGUgPSBtX2NhbGxTdHJ1Y3R1cmVTdHViQ29tcGlsYXRpb25JbmZvW2ldLmNhbGxUeXBl
OwotICAgICAgICBpbmZvLmJ5dGVjb2RlSW5kZXggPSBtX2NhbGxTdHJ1Y3R1cmVTdHViQ29tcGls
YXRpb25JbmZvW2ldLmJ5dGVjb2RlSW5kZXg7CisgICAgICAgIGluZm8uY29kZU9yaWdpbiA9IENv
ZGVPcmlnaW4obV9jYWxsU3RydWN0dXJlU3R1YkNvbXBpbGF0aW9uSW5mb1tpXS5ieXRlY29kZUlu
ZGV4KTsKICAgICAgICAgaW5mby5jYWxsUmV0dXJuTG9jYXRpb24gPSBwYXRjaEJ1ZmZlci5sb2Nh
dGlvbk9mTmVhckNhbGwobV9jYWxsU3RydWN0dXJlU3R1YkNvbXBpbGF0aW9uSW5mb1tpXS5jYWxs
UmV0dXJuTG9jYXRpb24pOwogICAgICAgICBpbmZvLmhvdFBhdGhCZWdpbiA9IHBhdGNoQnVmZmVy
LmxvY2F0aW9uT2YobV9jYWxsU3RydWN0dXJlU3R1YkNvbXBpbGF0aW9uSW5mb1tpXS5ob3RQYXRo
QmVnaW4pOwogICAgICAgICBpbmZvLmhvdFBhdGhPdGhlciA9IHBhdGNoQnVmZmVyLmxvY2F0aW9u
T2ZOZWFyQ2FsbChtX2NhbGxTdHJ1Y3R1cmVTdHViQ29tcGlsYXRpb25JbmZvW2ldLmhvdFBhdGhP
dGhlcik7CkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9NZXRhQWxsb2NhdG9ySGFuZGxlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dURi93dGYvTWV0YUFsbG9jYXRvckhhbmRsZS5oCShyZXZpc2lvbiAx
MzUwNDEpCisrKyBTb3VyY2UvV1RGL3d0Zi9NZXRhQWxsb2NhdG9ySGFuZGxlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTY5LDYgKzY5LDE2IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHJldHVybiBt
X3NpemVJbkJ5dGVzOwogICAgIH0KKyAgICAKKyAgICBib29sIGNvbnRhaW5zSW50ZWdlckFkZHJl
c3ModWludHB0cl90IGFkZHJlc3MpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gYWRkcmVz
cyAtIHN0YXJ0QXNJbnRlZ2VyKCkgPCBzaXplSW5CeXRlcygpOworICAgIH0KKyAgICAKKyAgICBi
b29sIGNvbnRhaW5zKHZvaWQqIGFkZHJlc3MpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4g
Y29udGFpbnNJbnRlZ2VyQWRkcmVzcyhyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4oYWRkcmVz
cykpOworICAgIH0KICAgICAgICAgCiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgc2hyaW5r
KHNpemVfdCBuZXdTaXplSW5CeXRlcyk7CiAgICAgCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9TZW50
aW5lbExpbmtlZExpc3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9TZW50aW5lbExp
bmtlZExpc3QuaAkocmV2aXNpb24gMTM1MDQxKQorKysgU291cmNlL1dURi93dGYvU2VudGluZWxM
aW5rZWRMaXN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTgzLDYgKzgzLDggQEAgcHVibGljOgogCiAg
ICAgdm9pZCBwdXNoKFQqKTsKICAgICBzdGF0aWMgdm9pZCByZW1vdmUoVCopOworICAgIAorICAg
IGJvb2wgaXNPbkxpc3QoVCopOwogCiAgICAgaXRlcmF0b3IgYmVnaW4oKTsKICAgICBpdGVyYXRv
ciBlbmQoKTsKQEAgLTE1Miw2ICsxNTQsMTkgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVu
YW1lIFJhd05vZGU+IAogICAgIG5vZGUtPnNldE5leHQoMCk7CiB9CiAKK3RlbXBsYXRlIDx0eXBl
bmFtZSBULCB0eXBlbmFtZSBSYXdOb2RlPiBpbmxpbmUgYm9vbCBTZW50aW5lbExpbmtlZExpc3Q8
VCwgUmF3Tm9kZT46OmlzT25MaXN0KFQqIG5vZGUpCit7CisgICAgaWYgKCFub2RlLT5pc09uTGlz
dCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgZm9yIChUKiBpdGVyID0gYmVn
aW4oKTsgaXRlciAhPSBlbmQoKTsgaXRlciA9IGl0ZXItPm5leHQoKSkgeworICAgICAgICBpZiAo
aXRlciA9PSBub2RlKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIAorICAg
IHJldHVybiBmYWxzZTsKK30KKwogfQogCiB1c2luZyBXVEY6OkJhc2ljUmF3U2VudGluZWxOb2Rl
Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>175107</attachid>
            <date>2012-11-19 18:30:44 -0800</date>
            <delta_ts>2012-11-19 21:14:53 -0800</delta_ts>
            <desc>the patch</desc>
            <filename>closurecall.patch</filename>
            <type>text/plain</type>
            <size>59268</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTM1MjI5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDExMiBA
QAorMjAxMi0xMS0xOSAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IERGRyBzaG91bGQgYmUgYWJsZSB0byBjYWNoZSBjbG9zdXJlIGNhbGxzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDI2NjIKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCBjYWNoaW5nIG9mIGNhbGxz
IHdoZXJlIHRoZSBKU0Z1bmN0aW9uKiB2YXJpZXMsIGJ1dCB0aGUgU3RydWN0dXJlKiBhbmQgRXhl
Y3V0YWJsZUJhc2UqCisgICAgICAgIHN0YXkgdGhlIHNhbWUuIFRoaXMgaXMgYWNjb21wbGlzaGVk
IGJ5IHJlcGxhY2luZyB0aGUgYnJhbmNoIHRoYXQgY29tcGFyZXMgYWdhaW5zdCBhIGNvbnN0YW50
CisgICAgICAgIEpTRnVuY3Rpb24qIHdpdGggYSBqdW1wIHRvIGEgY2xvc3VyZSBjYWxsIHN0dWIu
IFRoZSBjbG9zdXJlIGNhbGwgc3R1YiBjb250YWlucyBhIGZhc3QgcGF0aCwKKyAgICAgICAgYW5k
IGp1bXBzIHNsb3cgZGlyZWN0bHkgdG8gdGhlIHZpcnR1YWwgY2FsbCB0aHVuay4KKyAgICAgICAg
CisgICAgICAgIE1hZGUgdGhpcyB3b3JrIG9uIFg4Ni02NCwgWDg2LCBhbmQgQVJNdjcuIEFsc28g
Z290IHJpZCBvZiBvdXIgc3VwcG9ydCBmb3IgdGhlIEFSTXY3IGVycmF0YQorICAgICAgICBpbiB0
aGUganVtcCByZXBsYWNlbWVudCBjb2RlIGJlY2F1c2UgSSBoYWQgbm8gZXZpZGVuY2UgdGhhdCBp
dCB3YXMgYWN0dWFsbHkgYmVpbmcgdGVzdGVkLAorICAgICAgICBhbmQgYmVjYXVzZSBzdXBwb3J0
aW5nIGl0IHdvdWxkIGhhdmUgbWFkZSB0aGlzIHBhdGNoIG1vcmUgZ25hcmx5LgorICAgICAgICAK
KyAgICAgICAgVGhpcyBsb29rcyBsaWtlIGEgMSUgd2luIG9uIFY4djcuCisKKyAgICAgICAgKiBK
YXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGFzc2Vt
Ymxlci9BUk12N0Fzc2VtYmxlci5oOgorICAgICAgICAoSlNDOjpBUk12N0Fzc2VtYmxlcjo6QmFk
UmVnKToKKyAgICAgICAgKEFSTXY3QXNzZW1ibGVyKToKKyAgICAgICAgKEpTQzo6QVJNdjdBc3Nl
bWJsZXI6OnJldmVydEp1bXBUb19tb3ZUMyk6CisgICAgICAgIChKU0M6OkFSTXY3QXNzZW1ibGVy
OjpyZXBsYWNlV2l0aEp1bXApOgorICAgICAgICAoSlNDOjpBUk12N0Fzc2VtYmxlcjo6bWF4SnVt
cFJlcGxhY2VtZW50U2l6ZSk6CisgICAgICAgICogYXNzZW1ibGVyL0xpbmtCdWZmZXIuaDoKKyAg
ICAgICAgKEpTQyk6CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNdjcuaDoK
KyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk12Nzo6c3RhcnRPZkJyYW5jaFB0cldpdGhQ
YXRjaE9uUmVnaXN0ZXIpOgorICAgICAgICAoTWFjcm9Bc3NlbWJsZXJBUk12Nyk6CisgICAgICAg
IChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNdjc6OnJldmVydEp1bXBSZXBsYWNlbWVudFRvQnJhbmNo
UHRyV2l0aFBhdGNoKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk12Nzo6c3RhcnRP
ZlBhdGNoYWJsZUJyYW5jaFB0cldpdGhQYXRjaE9uQWRkcmVzcyk6CisgICAgICAgICogYXNzZW1i
bGVyL01hY3JvQXNzZW1ibGVyWDg2Lmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2
OjpzdGFydE9mQnJhbmNoUHRyV2l0aFBhdGNoT25SZWdpc3Rlcik6CisgICAgICAgIChNYWNyb0Fz
c2VtYmxlclg4Nik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2OjpzdGFydE9mUGF0
Y2hhYmxlQnJhbmNoUHRyV2l0aFBhdGNoT25BZGRyZXNzKToKKyAgICAgICAgKEpTQzo6TWFjcm9B
c3NlbWJsZXJYODY6OnJldmVydEp1bXBSZXBsYWNlbWVudFRvQnJhbmNoUHRyV2l0aFBhdGNoKToK
KyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZfNjQuaDoKKyAgICAgICAgKEpT
Qzo6TWFjcm9Bc3NlbWJsZXJYODZfNjQ6OnN0YXJ0T2ZCcmFuY2hQdHJXaXRoUGF0Y2hPblJlZ2lz
dGVyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZfNjQ6OnN0YXJ0T2ZQYXRjaGFi
bGVCcmFuY2hQdHJXaXRoUGF0Y2hPbkFkZHJlc3MpOgorICAgICAgICAoTWFjcm9Bc3NlbWJsZXJY
ODZfNjQpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4Nl82NDo6cmV2ZXJ0SnVtcFJl
cGxhY2VtZW50VG9CcmFuY2hQdHJXaXRoUGF0Y2gpOgorICAgICAgICAqIGFzc2VtYmxlci9SZXBh
dGNoQnVmZmVyLmg6CisgICAgICAgIChKU0M6OlJlcGF0Y2hCdWZmZXI6OnN0YXJ0T2ZCcmFuY2hQ
dHJXaXRoUGF0Y2hPblJlZ2lzdGVyKToKKyAgICAgICAgKFJlcGF0Y2hCdWZmZXIpOgorICAgICAg
ICAoSlNDOjpSZXBhdGNoQnVmZmVyOjpzdGFydE9mUGF0Y2hhYmxlQnJhbmNoUHRyV2l0aFBhdGNo
T25BZGRyZXNzKToKKyAgICAgICAgKEpTQzo6UmVwYXRjaEJ1ZmZlcjo6cmV2ZXJ0SnVtcFJlcGxh
Y2VtZW50VG9CcmFuY2hQdHJXaXRoUGF0Y2gpOgorICAgICAgICAqIGFzc2VtYmxlci9YODZBc3Nl
bWJsZXIuaDoKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjpyZXZlcnRKdW1wVG9fY21wbF9p
cl9mb3JjZTMyKToKKyAgICAgICAgKFg4NkFzc2VtYmxlcik6CisgICAgICAgICogYnl0ZWNvZGUv
Q2FsbExpbmtJbmZvLmNwcDoKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtJbmZvOjp1bmxpbmspOgor
ICAgICAgICAqIGJ5dGVjb2RlL0NhbGxMaW5rSW5mby5oOgorICAgICAgICAoQ2FsbExpbmtJbmZv
KToKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtJbmZvOjppc0xpbmtlZCk6CisgICAgICAgIChKU0M6
OmdldENhbGxMaW5rSW5mb0J5dGVjb2RlSW5kZXgpOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVC
bG9jay5jcHA6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZmluYWxpemVVbmNvbmRpdGlvbmFs
bHkpOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpmaW5kQ2xvc3Vy
ZUNhbGxGb3JSZXR1cm5QQyk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6Ynl0ZWNvZGVPZmZz
ZXQpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmNvZGVPcmlnaW5Gb3JSZXR1cm4pOgorICAg
ICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5oOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6Omdl
dENhbGxMaW5rSW5mbyk6CisgICAgICAgIChDb2RlQmxvY2spOgorICAgICAgICAoSlNDOjpDb2Rl
QmxvY2s6OmlzSW5jb21pbmdDYWxsQWxyZWFkeUxpbmtlZCk6CisgICAgICAgICogZGZnL0RGR0pJ
VENvbXBpbGVyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpKSVRDb21waWxlcjo6bGluayk6Cisg
ICAgICAgICogZGZnL0RGR0pJVENvbXBpbGVyLmg6CisgICAgICAgIChKU0M6OkRGRzo6SklUQ29t
cGlsZXI6OmFkZEpTQ2FsbCk6CisgICAgICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6OkpTQ2Fs
bFJlY29yZDo6SlNDYWxsUmVjb3JkKToKKyAgICAgICAgKEpTQ2FsbFJlY29yZCk6CisgICAgICAg
ICogZGZnL0RGR09wZXJhdGlvbnMuY3BwOgorICAgICAgICAqIGRmZy9ERkdPcGVyYXRpb25zLmg6
CisgICAgICAgICogZGZnL0RGR1JlcGF0Y2guY3BwOgorICAgICAgICAoSlNDOjpERkc6OnJlcGxh
Y2VXaXRoSnVtcCk6CisgICAgICAgIChKU0M6OkRGRzo6bGlua1Nsb3dGb3IpOgorICAgICAgICAo
REZHKToKKyAgICAgICAgKEpTQzo6REZHOjpkZmdMaW5rRm9yKToKKyAgICAgICAgKEpTQzo6REZH
OjpkZmdMaW5rU2xvd0Zvcik6CisgICAgICAgIChKU0M6OkRGRzo6ZGZnTGlua0Nsb3N1cmVDYWxs
KToKKyAgICAgICAgKEpTQzo6REZHOjpkZmdSZXNldEdldEJ5SUQpOgorICAgICAgICAoSlNDOjpE
Rkc6OmRmZ1Jlc2V0UHV0QnlJRCk6CisgICAgICAgICogZGZnL0RGR1JlcGF0Y2guaDoKKyAgICAg
ICAgKERGRyk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwOgorICAg
ICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjplbWl0Q2FsbCk6CisgICAgICAgICogZGZn
L0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZl
SklUOjplbWl0Q2FsbCk6CisgICAgICAgICogZGZnL0RGR1RodW5rcy5jcHA6CisgICAgICAgIChE
RkcpOgorICAgICAgICAoSlNDOjpERkc6OmxpbmtDbG9zdXJlQ2FsbFRodW5rR2VuZXJhdG9yKToK
KyAgICAgICAgKiBkZmcvREZHVGh1bmtzLmg6CisgICAgICAgIChERkcpOgorICAgICAgICAqIGhl
YXAvSGVhcC5oOgorICAgICAgICAoSGVhcCk6CisgICAgICAgIChKU0M6OkhlYXA6OmppdFN0dWJS
b3V0aW5lcyk6CisgICAgICAgICogaGVhcC9KSVRTdHViUm91dGluZVNldC5oOgorICAgICAgICAo
SlNDOjpKSVRTdHViUm91dGluZVNldDo6c2l6ZSk6CisgICAgICAgIChKU0M6OkpJVFN0dWJSb3V0
aW5lU2V0OjphdCk6CisgICAgICAgIChKSVRTdHViUm91dGluZVNldCk6CisgICAgICAgICogaml0
L0dDQXdhcmVKSVRTdHViUm91dGluZS5jcHA6CisgICAgICAgIChKU0M6OkdDQXdhcmVKSVRTdHVi
Um91dGluZTo6R0NBd2FyZUpJVFN0dWJSb3V0aW5lKToKKyAgICAgICAgKiBqaXQvR0NBd2FyZUpJ
VFN0dWJSb3V0aW5lLmg6CisgICAgICAgIChHQ0F3YXJlSklUU3R1YlJvdXRpbmUpOgorICAgICAg
ICAoSlNDOjpHQ0F3YXJlSklUU3R1YlJvdXRpbmU6OmlzQ2xvc3VyZUNhbGwpOgorICAgICAgICAq
IGppdC9KSVQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlKToKKwogMjAx
Mi0xMS0xOSAgUGF0cmljayBHYW5zdGVyZXIgIDxwYXJvZ2FAd2Via2l0Lm9yZz4KIAogICAgICAg
ICBbQ01ha2VdIENyZWF0ZSBKYXZhU2NyaXB0Q29yZSBGb3J3YXJkaW5nSGVhZGVycwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDEzNTIxNikKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3
b3JraW5nIGNvcHkpCkBAIC0xNDcsNiArMTQ3LDggQEAKIAkJMEY2Mzk0ODUxNUU0ODExQjAwNkE1
OTdDIC8qIERGR0FycmF5TW9kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMEY2Mzk0ODIxNUU0ODExNDAwNkE1OTdDIC8qIERGR0FycmF5TW9kZS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGNjZFMTZC
MTRERjNGMTYwMEI3QjJFNCAvKiBERkdBZGphY2VuY3lMaXN0LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjY2RTE2ODE0REYzRjEzMDBCN0IyRTQgLyog
REZHQWRqYWNlbmN5TGlzdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTBGNjZFMTZDMTRERjNGMTYwMEI3QjJFNCAvKiBERkdFZGdlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjY2RTE2OTE0REYzRjEz
MDBCN0IyRTQgLyogREZHRWRnZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CisJCTBGNzNEN0FFMTY1QTE0MkQwMEFDQUI3MSAvKiBDbG9zdXJlQ2FsbFN0
dWJSb3V0aW5lLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDBGNzNEN0FCMTY1QTE0MkEwMEFDQUI3MSAvKiBDbG9zdXJlQ2FsbFN0dWJSb3V0aW5lLmNw
cCAqLzsgfTsKKwkJMEY3M0Q3QUYxNjVBMTQzMDAwQUNBQjcxIC8qIENsb3N1cmVDYWxsU3R1YlJv
dXRpbmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
NzNEN0FDMTY1QTE0MkEwMEFDQUI3MSAvKiBDbG9zdXJlQ2FsbFN0dWJSb3V0aW5lLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY3NjZEMjgxNUE4
Q0MxRTAwOEYzNjNFIC8qIEpJVFN0dWJSb3V0aW5lLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNzY2RDI2MTVBOENDMUIwMDhGMzYzRSAvKiBKSVRT
dHViUm91dGluZS5jcHAgKi87IH07CiAJCTBGNzY2RDJCMTVBOENDMzgwMDhGMzYzRSAvKiBKSVRT
dHViUm91dGluZVNldC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRjc2NkQyOTE1QThDQzM0MDA4RjM2M0UgLyogSklUU3R1YlJvdXRpbmVTZXQuY3Bw
ICovOyB9OwogCQkwRjc2NkQyQzE1QThDQzNBMDA4RjM2M0UgLyogSklUU3R1YlJvdXRpbmVTZXQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNzY2RDJB
MTVBOENDMzQwMDhGMzYzRSAvKiBKSVRTdHViUm91dGluZVNldC5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xNjUsOSArMTY3LDkgQEAKIAkJMEY3
QjI5NEMxNEMzQ0Q0MzAwN0MzREIxIC8qIERGR0J5dGVDb2RlQ2FjaGUuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNUYwOENDMTQ2QkU2MDIwMDA0NzJB
OSAvKiBERkdCeXRlQ29kZUNhY2hlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJMEY3QjI5NEQxNEMzQ0Q0QzAwN0MzREIxIC8qIERGR0NvbW1vbi5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZDMDk3N0Ux
NDY5RUJDNDAwQ0YyNDQyIC8qIERGR0NvbW1vbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGODAyM0VBMTYxMzgzMkIwMEEwQkE0NSAvKiBCeVZh
bEluZm8uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
ODAyM0U5MTYxMzgzMjMwMEEwQkE0NSAvKiBCeVZhbEluZm8uaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQkwRjgzNjRCNzE2NEIwQzExMDA1MzMyOUEg
LyogREZHQnJhbmNoRGlyZWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwRjgzNjRCNTE2NEIwQzBFMDA1MzMyOUEgLyogREZHQnJhbmNoRGlyZWN0
aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
MEY4MzM1QjcxNjM5QzFFNjAwMTQ0M0I1IC8qIEFycmF5QWxsb2NhdGlvblByb2ZpbGUuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY4MzM1QjQxNjM5
QzFFMzAwMTQ0M0I1IC8qIEFycmF5QWxsb2NhdGlvblByb2ZpbGUuY3BwICovOyB9OwogCQkwRjgz
MzVCODE2MzlDMUVBMDAxNDQzQjUgLyogQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY4MzM1QjUxNjM5QzFFMzAw
MTQ0M0I1IC8qIEFycmF5QWxsb2NhdGlvblByb2ZpbGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjgzNjRCNzE2NEIwQzExMDA1MzMyOUEgLyog
REZHQnJhbmNoRGlyZWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwRjgzNjRCNTE2NEIwQzBFMDA1MzMyOUEgLyogREZHQnJhbmNoRGlyZWN0aW9u
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY5
MTlEMEMxNTdFRTA5RjAwNEE0RTdEIC8qIEpTU3ltYm9sVGFibGVPYmplY3QuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY5MTlEMDkxNTdFRTA5RDAw
NEE0RTdEIC8qIEpTU3ltYm9sVGFibGVPYmplY3QuY3BwICovOyB9OwogCQkwRjkxOUQwRDE1N0VF
MEEyMDA0QTRFN0QgLyogSlNTeW1ib2xUYWJsZU9iamVjdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY5MTlEMEExNTdFRTA5RDAwNEE0RTdEIC8qIEpT
U3ltYm9sVGFibGVPYmplY3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQkwRjkxOUQxMDE1N0YzMzI5MDA0QTRFN0QgLyogSlNTZWdtZW50ZWRWYXJp
YWJsZU9iamVjdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwRjkxOUQwRTE1N0YzMzI3MDA0QTRFN0QgLyogSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVj
dC5jcHAgKi87IH07CkBAIC05MzgsNiArOTQwLDggQEAKIAkJMEY2Mzk0ODIxNUU0ODExNDAwNkE1
OTdDIC8qIERGR0FycmF5TW9kZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBE
RkdBcnJheU1vZGUuaDsgcGF0aCA9IGRmZy9ERkdBcnJheU1vZGUuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMEY2NkUxNjgxNERGM0YxMzAwQjdCMkU0IC8qIERGR0FkamFjZW5jeUxp
c3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHQWRqYWNlbmN5TGlzdC5o
OyBwYXRoID0gZGZnL0RGR0FkamFjZW5jeUxpc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMEY2NkUxNjkxNERGM0YxMzAwQjdCMkU0IC8qIERGR0VkZ2UuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBuYW1lID0gREZHRWRnZS5oOyBwYXRoID0gZGZnL0RGR0VkZ2UuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY3M0Q3QUIxNjVBMTQyQTAwQUNBQjcxIC8qIENs
b3N1cmVDYWxsU3R1YlJvdXRpbmUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gQ2xvc3VyZUNhbGxTdHViUm91dGluZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTBGNzNEN0FDMTY1QTE0MkEwMEFDQUI3MSAvKiBDbG9zdXJlQ2FsbFN0dWJSb3V0aW5l
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENsb3N1cmVDYWxsU3R1YlJvdXRp
bmUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY3NjZEMUMxNUE1MDI4RDAwOEYz
NjNFIC8qIEpJVFN0dWJSb3V0aW5lLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEpJVFN0dWJSb3V0aW5lLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNzY2RDI2
MTVBOENDMUIwMDhGMzYzRSAvKiBKSVRTdHViUm91dGluZS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBKSVRTdHViUm91dGluZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTBGNzY2RDI5MTVBOENDMzQwMDhGMzYzRSAvKiBKSVRTdHViUm91dGluZVNl
dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKSVRTdHViUm91dGlu
ZVNldC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC05NTQsOSArOTU4LDkgQEAK
IAkJMEY3NzAwOTExNDAyRkYyODAwNzhFQjM5IC8qIFNhbXBsaW5nQ291bnRlci5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTYW1wbGluZ0NvdW50ZXIuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjdCMjk0ODE0QzNDRDIzMDA3QzNEQjEgLyogREZH
Q0NhbGxIZWxwZXJzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR0NDYWxs
SGVscGVycy5oOyBwYXRoID0gZGZnL0RGR0NDYWxsSGVscGVycy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkwRjgwMjNFOTE2MTM4MzIzMDBBMEJBNDUgLyogQnlWYWxJbmZvLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJ5VmFsSW5mby5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQkwRjgzNjRCNTE2NEIwQzBFMDA1MzMyOUEgLyogREZHQnJhbmNoRGly
ZWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR0JyYW5jaERpcmVj
dGlvbi5oOyBwYXRoID0gZGZnL0RGR0JyYW5jaERpcmVjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkwRjgzMzVCNDE2MzlDMUUzMDAxNDQzQjUgLyogQXJyYXlBbGxvY2F0aW9u
UHJvZmlsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBcnJheUFs
bG9jYXRpb25Qcm9maWxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY4MzM1
QjUxNjM5QzFFMzAwMTQ0M0I1IC8qIEFycmF5QWxsb2NhdGlvblByb2ZpbGUuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkwRjgzNjRCNTE2NEIwQzBFMDA1MzMyOUEgLyogREZHQnJh
bmNoRGlyZWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR0JyYW5j
aERpcmVjdGlvbi5oOyBwYXRoID0gZGZnL0RGR0JyYW5jaERpcmVjdGlvbi5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkwRjkxOUQwOTE1N0VFMDlEMDA0QTRFN0QgLyogSlNTeW1ib2xU
YWJsZU9iamVjdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1N5
bWJvbFRhYmxlT2JqZWN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY5MTlE
MEExNTdFRTA5RDAwNEE0RTdEIC8qIEpTU3ltYm9sVGFibGVPYmplY3QuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gSlNTeW1ib2xUYWJsZU9iamVjdC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkwRjkxOUQwRTE1N0YzMzI3MDA0QTRFN0QgLyogSlNTZWdtZW50ZWRW
YXJpYWJsZU9iamVjdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBK
U1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTE4MDMsNiArMTgwNyw4IEBACiAJCTE0MjlEOTJDMEVEMjJENzAwMEI4OTYxOSAvKiBqaXQg
Ki8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTBGNzNEN0FC
MTY1QTE0MkEwMEFDQUI3MSAvKiBDbG9zdXJlQ2FsbFN0dWJSb3V0aW5lLmNwcCAqLywKKwkJCQkw
RjczRDdBQzE2NUExNDJBMDBBQ0FCNzEgLyogQ2xvc3VyZUNhbGxTdHViUm91dGluZS5oICovLAog
CQkJCTBGRDgyRTM3MTQxQUIxNDIwMDE3OUM5NCAvKiBDb21wYWN0SklUQ29kZU1hcC5oICovLAog
CQkJCUE3QjQ4REI2MEVFNzRDRkMwMERDQkRCNiAvKiBFeGVjdXRhYmxlQWxsb2NhdG9yLmNwcCAq
LywKIAkJCQlBN0I0OERCNTBFRTc0Q0ZDMDBEQ0JEQjYgLyogRXhlY3V0YWJsZUFsbG9jYXRvci5o
ICovLApAQCAtMzAyMiw2ICszMDI4LDcgQEAKIAkJCQlBN0I2MDE4MjE2MzlGRDJBMDAzNzJCQTMg
LyogVW5saW5rZWRDb2RlQmxvY2suaCBpbiBIZWFkZXJzICovLAogCQkJCUE3N0YxODIyMTY0MDg4
QjIwMDY0MEE0NyAvKiBDb2RlQ2FjaGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3N0YxODI1MTY0
MTkyQzcwMDY0MEE0NyAvKiBQYXJzZXJNb2Rlcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEY3M0Q3
QUYxNjVBMTQzMDAwQUNBQjcxIC8qIENsb3N1cmVDYWxsU3R1YlJvdXRpbmUuaCBpbiBIZWFkZXJz
ICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwog
CQl9OwpAQCAtMzYwMSw2ICszNjA4LDcgQEAKIAkJCQkwRjgzMzVCNzE2MzlDMUU2MDAxNDQzQjUg
LyogQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNzZGMjc5
NDE1RjEzQzk2MDA1MTdENjcgLyogVW5saW5rZWRDb2RlQmxvY2suY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJQTc3RjE4MjExNjQwODhCMjAwNjQwQTQ3IC8qIENvZGVDYWNoZS5jcHAgaW4gU291cmNl
cyAqLywKKwkJCQkwRjczRDdBRTE2NUExNDJEMDBBQ0FCNzEgLyogQ2xvc3VyZUNhbGxTdHViUm91
dGluZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBv
c3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3Nl
bWJsZXIvQVJNdjdBc3NlbWJsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL0FSTXY3QXNzZW1ibGVyLmgJKHJldmlzaW9uIDEzNTIxNikKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQVJNdjdBc3NlbWJsZXIuaAkod29ya2luZyBjb3B5
KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDksIDIwMTAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA5LCAyMDEwLCAy
MDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAx
MCBVbml2ZXJzaXR5IG9mIFN6ZWdlZAogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtNTA3LDcgKzUwNyw3
IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAKICAgICAvLyBBUk12NywgQXBweC1BLjYuMwotICAgIGJv
b2wgQmFkUmVnKFJlZ2lzdGVySUQgcmVnKQorICAgIHN0YXRpYyBib29sIEJhZFJlZyhSZWdpc3Rl
cklEIHJlZykKICAgICB7CiAgICAgICAgIHJldHVybiAocmVnID09IEFSTVJlZ2lzdGVyczo6c3Ap
IHx8IChyZWcgPT0gQVJNUmVnaXN0ZXJzOjpwYyk7CiAgICAgfQpAQCAtMTI2MSw2ICsxMjYxLDE4
IEBAIHB1YmxpYzoKICAgICAgICAgCiAgICAgICAgIG1fZm9ybWF0dGVyLnR3b1dvcmRPcDVpNklt
bTRSZWc0RW5jb2RlZEltbShPUF9NT1ZfaW1tX1QzLCBpbW0ubV92YWx1ZS5pbW00LCByZCwgaW1t
KTsKICAgICB9CisgICAgCisgICAgc3RhdGljIHZvaWQgcmV2ZXJ0SnVtcFRvX21vdlQzKHZvaWQq
IGluc3RydWN0aW9uU3RhcnQsIFJlZ2lzdGVySUQgcmQsIEFSTVRodW1iSW1tZWRpYXRlIGltbSkK
KyAgICB7CisgICAgICAgIEFTU0VSVChpbW0uaXNWYWxpZCgpKTsKKyAgICAgICAgQVNTRVJUKCFp
bW0uaXNFbmNvZGVkSW1tKCkpOworICAgICAgICBBU1NFUlQoIUJhZFJlZyhyZCkpOworICAgICAg
ICAKKyAgICAgICAgdWludDE2X3QqIGFkZHJlc3MgPSBzdGF0aWNfY2FzdDx1aW50MTZfdCo+KGlu
c3RydWN0aW9uU3RhcnQpOworICAgICAgICBhZGRyZXNzWzBdID0gdHdvV29yZE9wNWk2SW1tNFJl
ZzRFbmNvZGVkSW1tRmlyc3QoT1BfTU9WX2ltbV9UMywgaW1tKTsKKyAgICAgICAgYWRkcmVzc1sx
XSA9IHR3b1dvcmRPcDVpNkltbTRSZWc0RW5jb2RlZEltbVNlY29uZChyZCwgaW1tKTsKKyAgICAg
ICAgY2FjaGVGbHVzaChhZGRyZXNzLCBzaXplb2YodWludDE2X3QpICogMik7CisgICAgfQogCiAg
ICAgQUxXQVlTX0lOTElORSB2b2lkIG1vdihSZWdpc3RlcklEIHJkLCBBUk1UaHVtYkltbWVkaWF0
ZSBpbW0pCiAgICAgewpAQCAtMjEzMywyMiArMjE0NSwxMyBAQCBwdWJsaWM6CiAgICAgICAgIEFT
U0VSVCghKGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KHRvKSAmIDEpKTsKICAgICAgICAgdWludDE2
X3QqIHB0ciA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDE2X3QqPihpbnN0cnVjdGlvblN0YXJ0KSAr
IDI7CiAgICAgICAgIAotICAgICAgICAvLyBFbnN1cmUgdGhhdCB3ZSdyZSBub3QgaW4gb25lIG9m
IHRob3NlIGVycmF0YS10cmlnZ2VyaW5nIHRoaW5naWVzLiBJZiB3ZSBhcmUsIHRoZW4KLSAgICAg
ICAgLy8gcHJlcGVuZCBhIG5vcC4KLSAgICAgICAgYm9vbCBzcGFuc1R3bzRLID0gKChyZWludGVy
cHJldF9jYXN0PGludHB0cl90PihwdHIpICYgMHhmZmYpID09IDB4MDAyKTsKLSAgICAgICAgCi0g
ICAgICAgIGlmIChzcGFuc1R3bzRLKSB7Ci0gICAgICAgICAgICBwdHJbLTJdID0gT1BfTk9QX1Qx
OwotICAgICAgICAgICAgcHRyKys7Ci0gICAgICAgIH0KLQogICAgICAgICBsaW5rSnVtcFQ0KHB0
ciwgdG8pOwogICAgICAgICBjYWNoZUZsdXNoKHB0ciAtIDIsIHNpemVvZih1aW50MTZfdCkgKiAy
KTsKICAgICB9CiAgICAgCiAgICAgc3RhdGljIHB0cmRpZmZfdCBtYXhKdW1wUmVwbGFjZW1lbnRT
aXplKCkKICAgICB7Ci0gICAgICAgIHJldHVybiA2OworICAgICAgICByZXR1cm4gNDsKICAgICB9
CiAgICAgCiAgICAgc3RhdGljIHZvaWQgcmVwbGFjZVdpdGhMb2FkKHZvaWQqIGluc3RydWN0aW9u
U3RhcnQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0xpbmtCdWZmZXIu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0xpbmtCdWZm
ZXIuaAkocmV2aXNpb24gMTM1MjE2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxl
ci9MaW5rQnVmZmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4OCw3ICsyODgsNyBAQCBwcml2YXRl
OgogICAgIEZJTkFMSVpFX0NPREVfSUYoT3B0aW9uczo6c2hvd0Rpc2Fzc2VtYmx5KCksIGxpbmtC
dWZmZXJSZWZlcmVuY2UsIGRhdGFMb2dBcmd1bWVudHNGb3JIZWFkaW5nKQogCiAjZGVmaW5lIEZJ
TkFMSVpFX0RGR19DT0RFKGxpbmtCdWZmZXJSZWZlcmVuY2UsIGRhdGFMb2dBcmd1bWVudHNGb3JI
ZWFkaW5nKSAgXAotICAgIEZJTkFMSVpFX0NPREVfSUYoT3B0aW9uczo6c2hvd0RGR0Rpc2Fzc2Vt
Ymx5KCksIGxpbmtCdWZmZXJSZWZlcmVuY2UsIGRhdGFMb2dBcmd1bWVudHNGb3JIZWFkaW5nKQor
ICAgIEZJTkFMSVpFX0NPREVfSUYoKE9wdGlvbnM6OnNob3dEaXNhc3NlbWJseSgpIHx8IE9wdGlv
bnM6OnNob3dERkdEaXNhc3NlbWJseSgpKSwgbGlua0J1ZmZlclJlZmVyZW5jZSwgZGF0YUxvZ0Fy
Z3VtZW50c0ZvckhlYWRpbmcpCiAKIH0gLy8gbmFtZXNwYWNlIEpTQwogCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNdjcuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNdjcu
aAkocmV2aXNpb24gMTM1MjE2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9N
YWNyb0Fzc2VtYmxlckFSTXY3LmgJKHdvcmtpbmcgY29weSkKQEAgLTE3NjEsNyArMTc2MSwxOCBA
QCBwdWJsaWM6CiAgICAgCiAgICAgc3RhdGljIGJvb2wgY2FuSnVtcFJlcGxhY2VQYXRjaGFibGVC
cmFuY2hQdHJXaXRoUGF0Y2goKSB7IHJldHVybiBmYWxzZTsgfQogICAgIAotICAgIHN0YXRpYyBD
b2RlTG9jYXRpb25MYWJlbCBzdGFydE9mUGF0Y2hhYmxlQnJhbmNoUHRyV2l0aFBhdGNoKENvZGVM
b2NhdGlvbkRhdGFMYWJlbFB0cikKKyAgICBzdGF0aWMgQ29kZUxvY2F0aW9uTGFiZWwgc3RhcnRP
ZkJyYW5jaFB0cldpdGhQYXRjaE9uUmVnaXN0ZXIoQ29kZUxvY2F0aW9uRGF0YUxhYmVsUHRyIGxh
YmVsKQorICAgIHsKKyAgICAgICAgY29uc3QgdW5zaWduZWQgdHdvV29yZE9wU2l6ZSA9IDQ7Cisg
ICAgICAgIHJldHVybiBsYWJlbC5sYWJlbEF0T2Zmc2V0KC10d29Xb3JkT3BTaXplICogMik7Cisg
ICAgfQorICAgIAorICAgIHN0YXRpYyB2b2lkIHJldmVydEp1bXBSZXBsYWNlbWVudFRvQnJhbmNo
UHRyV2l0aFBhdGNoKENvZGVMb2NhdGlvbkxhYmVsIGluc3RydWN0aW9uU3RhcnQsIFJlZ2lzdGVy
SUQsIHZvaWQqIGluaXRpYWxWYWx1ZSkKKyAgICB7CisgICAgICAgIEFSTXY3QXNzZW1ibGVyOjpy
ZXZlcnRKdW1wVG9fbW92VDMoaW5zdHJ1Y3Rpb25TdGFydC5kYXRhTG9jYXRpb24oKSwgZGF0YVRl
bXBSZWdpc3RlciwgQVJNVGh1bWJJbW1lZGlhdGU6Om1ha2VVSW50MTYocmVpbnRlcnByZXRfY2Fz
dDx1aW50cHRyX3Q+KGluaXRpYWxWYWx1ZSkgJiAweGZmZmYpKTsKKyAgICB9CisgICAgCisgICAg
c3RhdGljIENvZGVMb2NhdGlvbkxhYmVsIHN0YXJ0T2ZQYXRjaGFibGVCcmFuY2hQdHJXaXRoUGF0
Y2hPbkFkZHJlc3MoQ29kZUxvY2F0aW9uRGF0YUxhYmVsUHRyKQogICAgIHsKICAgICAgICAgVU5S
RUFDSEFCTEVfRk9SX1BMQVRGT1JNKCk7CiAgICAgICAgIHJldHVybiBDb2RlTG9jYXRpb25MYWJl
bCgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxl
clg4Ni5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFj
cm9Bc3NlbWJsZXJYODYuaAkocmV2aXNpb24gMTM1MjE2KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Ni5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNTUs
NyArMjU1LDE3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBib29sIGNhbkp1bXBSZXBsYWNlUGF0
Y2hhYmxlQnJhbmNoUHRyV2l0aFBhdGNoKCkgeyByZXR1cm4gdHJ1ZTsgfQogICAgIAotICAgIHN0
YXRpYyBDb2RlTG9jYXRpb25MYWJlbCBzdGFydE9mUGF0Y2hhYmxlQnJhbmNoUHRyV2l0aFBhdGNo
KENvZGVMb2NhdGlvbkRhdGFMYWJlbFB0ciBsYWJlbCkKKyAgICBzdGF0aWMgQ29kZUxvY2F0aW9u
TGFiZWwgc3RhcnRPZkJyYW5jaFB0cldpdGhQYXRjaE9uUmVnaXN0ZXIoQ29kZUxvY2F0aW9uRGF0
YUxhYmVsUHRyIGxhYmVsKQorICAgIHsKKyAgICAgICAgY29uc3QgaW50IG9wY29kZUJ5dGVzID0g
MTsKKyAgICAgICAgY29uc3QgaW50IG1vZFJNQnl0ZXMgPSAxOworICAgICAgICBjb25zdCBpbnQg
aW1tZWRpYXRlQnl0ZXMgPSA0OworICAgICAgICBjb25zdCBpbnQgdG90YWxCeXRlcyA9IG9wY29k
ZUJ5dGVzICsgbW9kUk1CeXRlcyArIGltbWVkaWF0ZUJ5dGVzOworICAgICAgICBBU1NFUlQodG90
YWxCeXRlcyA+PSBtYXhKdW1wUmVwbGFjZW1lbnRTaXplKCkpOworICAgICAgICByZXR1cm4gbGFi
ZWwubGFiZWxBdE9mZnNldCgtdG90YWxCeXRlcyk7CisgICAgfQorICAgIAorICAgIHN0YXRpYyBD
b2RlTG9jYXRpb25MYWJlbCBzdGFydE9mUGF0Y2hhYmxlQnJhbmNoUHRyV2l0aFBhdGNoT25BZGRy
ZXNzKENvZGVMb2NhdGlvbkRhdGFMYWJlbFB0ciBsYWJlbCkKICAgICB7CiAgICAgICAgIGNvbnN0
IGludCBvcGNvZGVCeXRlcyA9IDE7CiAgICAgICAgIGNvbnN0IGludCBtb2RSTUJ5dGVzID0gMTsK
QEAgLTI2Niw2ICsyNzYsMTEgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbGFiZWwubGFiZWxB
dE9mZnNldCgtdG90YWxCeXRlcyk7CiAgICAgfQogICAgIAorICAgIHN0YXRpYyB2b2lkIHJldmVy
dEp1bXBSZXBsYWNlbWVudFRvQnJhbmNoUHRyV2l0aFBhdGNoKENvZGVMb2NhdGlvbkxhYmVsIGlu
c3RydWN0aW9uU3RhcnQsIFJlZ2lzdGVySUQgcmVnLCB2b2lkKiBpbml0aWFsVmFsdWUpCisgICAg
eworICAgICAgICBYODZBc3NlbWJsZXI6OnJldmVydEp1bXBUb19jbXBsX2lyX2ZvcmNlMzIoaW5z
dHJ1Y3Rpb25TdGFydC5leGVjdXRhYmxlQWRkcmVzcygpLCByZWludGVycHJldF9jYXN0PGludHB0
cl90Pihpbml0aWFsVmFsdWUpLCByZWcpOworICAgIH0KKwogICAgIHN0YXRpYyB2b2lkIHJldmVy
dEp1bXBSZXBsYWNlbWVudFRvUGF0Y2hhYmxlQnJhbmNoUHRyV2l0aFBhdGNoKENvZGVMb2NhdGlv
bkxhYmVsIGluc3RydWN0aW9uU3RhcnQsIEFkZHJlc3MgYWRkcmVzcywgdm9pZCogaW5pdGlhbFZh
bHVlKQogICAgIHsKICAgICAgICAgQVNTRVJUKCFhZGRyZXNzLm9mZnNldCk7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4
Nl82NC5oCShyZXZpc2lvbiAxMzUyMTYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0LmgJKHdvcmtpbmcgY29weSkKQEAgLTU4Nyw3ICs1ODcs
NyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgYm9vbCBjYW5KdW1wUmVwbGFjZVBhdGNoYWJsZUJy
YW5jaFB0cldpdGhQYXRjaCgpIHsgcmV0dXJuIHRydWU7IH0KICAgICAKLSAgICBzdGF0aWMgQ29k
ZUxvY2F0aW9uTGFiZWwgc3RhcnRPZlBhdGNoYWJsZUJyYW5jaFB0cldpdGhQYXRjaChDb2RlTG9j
YXRpb25EYXRhTGFiZWxQdHIgbGFiZWwpCisgICAgc3RhdGljIENvZGVMb2NhdGlvbkxhYmVsIHN0
YXJ0T2ZCcmFuY2hQdHJXaXRoUGF0Y2hPblJlZ2lzdGVyKENvZGVMb2NhdGlvbkRhdGFMYWJlbFB0
ciBsYWJlbCkKICAgICB7CiAgICAgICAgIGNvbnN0IGludCByZXhCeXRlcyA9IDE7CiAgICAgICAg
IGNvbnN0IGludCBvcGNvZGVCeXRlcyA9IDE7CkBAIC01OTcsMTEgKzU5NywyMSBAQCBwdWJsaWM6
CiAgICAgICAgIHJldHVybiBsYWJlbC5sYWJlbEF0T2Zmc2V0KC10b3RhbEJ5dGVzKTsKICAgICB9
CiAgICAgCisgICAgc3RhdGljIENvZGVMb2NhdGlvbkxhYmVsIHN0YXJ0T2ZQYXRjaGFibGVCcmFu
Y2hQdHJXaXRoUGF0Y2hPbkFkZHJlc3MoQ29kZUxvY2F0aW9uRGF0YUxhYmVsUHRyIGxhYmVsKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIHN0YXJ0T2ZCcmFuY2hQdHJXaXRoUGF0Y2hPblJlZ2lzdGVy
KGxhYmVsKTsKKyAgICB9CisgICAgCiAgICAgc3RhdGljIHZvaWQgcmV2ZXJ0SnVtcFJlcGxhY2Vt
ZW50VG9QYXRjaGFibGVCcmFuY2hQdHJXaXRoUGF0Y2goQ29kZUxvY2F0aW9uTGFiZWwgaW5zdHJ1
Y3Rpb25TdGFydCwgQWRkcmVzcywgdm9pZCogaW5pdGlhbFZhbHVlKQogICAgIHsKICAgICAgICAg
WDg2QXNzZW1ibGVyOjpyZXZlcnRKdW1wVG9fbW92cV9pNjRyKGluc3RydWN0aW9uU3RhcnQuZXhl
Y3V0YWJsZUFkZHJlc3MoKSwgcmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4oaW5pdGlhbFZhbHVl
KSwgc2NyYXRjaFJlZ2lzdGVyKTsKICAgICB9CiAKKyAgICBzdGF0aWMgdm9pZCByZXZlcnRKdW1w
UmVwbGFjZW1lbnRUb0JyYW5jaFB0cldpdGhQYXRjaChDb2RlTG9jYXRpb25MYWJlbCBpbnN0cnVj
dGlvblN0YXJ0LCBSZWdpc3RlcklELCB2b2lkKiBpbml0aWFsVmFsdWUpCisgICAgeworICAgICAg
ICBYODZBc3NlbWJsZXI6OnJldmVydEp1bXBUb19tb3ZxX2k2NHIoaW5zdHJ1Y3Rpb25TdGFydC5l
eGVjdXRhYmxlQWRkcmVzcygpLCByZWludGVycHJldF9jYXN0PGludHB0cl90Pihpbml0aWFsVmFs
dWUpLCBzY3JhdGNoUmVnaXN0ZXIpOworICAgIH0KKwogcHJpdmF0ZToKICAgICBmcmllbmQgY2xh
c3MgTGlua0J1ZmZlcjsKICAgICBmcmllbmQgY2xhc3MgUmVwYXRjaEJ1ZmZlcjsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvUmVwYXRjaEJ1ZmZlci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvUmVwYXRjaEJ1ZmZlci5oCShyZXZp
c2lvbiAxMzUyMTYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1JlcGF0Y2hC
dWZmZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMTQxLDkgKzE0MSwxNCBAQCBwdWJsaWM6CiAgICAg
ICAgICAgICByZXBsYWNlV2l0aEFkZHJlc3NDb21wdXRhdGlvbihsYWJlbCk7CiAgICAgfQogCi0g
ICAgc3RhdGljIENvZGVMb2NhdGlvbkxhYmVsIHN0YXJ0T2ZQYXRjaGFibGVCcmFuY2hQdHJXaXRo
UGF0Y2goQ29kZUxvY2F0aW9uRGF0YUxhYmVsUHRyIGxhYmVsKQorICAgIHN0YXRpYyBDb2RlTG9j
YXRpb25MYWJlbCBzdGFydE9mQnJhbmNoUHRyV2l0aFBhdGNoT25SZWdpc3RlcihDb2RlTG9jYXRp
b25EYXRhTGFiZWxQdHIgbGFiZWwpCiAgICAgewotICAgICAgICByZXR1cm4gTWFjcm9Bc3NlbWJs
ZXI6OnN0YXJ0T2ZQYXRjaGFibGVCcmFuY2hQdHJXaXRoUGF0Y2gobGFiZWwpOworICAgICAgICBy
ZXR1cm4gTWFjcm9Bc3NlbWJsZXI6OnN0YXJ0T2ZCcmFuY2hQdHJXaXRoUGF0Y2hPblJlZ2lzdGVy
KGxhYmVsKTsKKyAgICB9CisgICAgCisgICAgc3RhdGljIENvZGVMb2NhdGlvbkxhYmVsIHN0YXJ0
T2ZQYXRjaGFibGVCcmFuY2hQdHJXaXRoUGF0Y2hPbkFkZHJlc3MoQ29kZUxvY2F0aW9uRGF0YUxh
YmVsUHRyIGxhYmVsKQorICAgIHsKKyAgICAgICAgcmV0dXJuIE1hY3JvQXNzZW1ibGVyOjpzdGFy
dE9mUGF0Y2hhYmxlQnJhbmNoUHRyV2l0aFBhdGNoT25BZGRyZXNzKGxhYmVsKTsKICAgICB9CiAg
ICAgCiAgICAgdm9pZCByZXBsYWNlV2l0aEp1bXAoQ29kZUxvY2F0aW9uTGFiZWwgaW5zdHJ1Y3Rp
b25TdGFydCwgQ29kZUxvY2F0aW9uTGFiZWwgZGVzdGluYXRpb24pCkBAIC0xNTQsNiArMTU5LDEx
IEBAIHB1YmxpYzoKICAgICAvLyBUaGlzIGlzIGEgKmJpdCogb2YgYSBzaWxseSBBUEksIHNpbmNl
IHdlIGN1cnJlbnRseSBhbHdheXMgYWxzbyByZXBhdGNoIHRoZQogICAgIC8vIGltbWVkaWF0ZSBh
ZnRlciBjYWxsaW5nIHRoaXMuIEJ1dCBJJ20gZmluZSB3aXRoIHRoYXQsIHNpbmNlIHRoaXMganVz
dCBmZWVscwogICAgIC8vIGxlc3MgeXVja3kuCisgICAgdm9pZCByZXZlcnRKdW1wUmVwbGFjZW1l
bnRUb0JyYW5jaFB0cldpdGhQYXRjaChDb2RlTG9jYXRpb25MYWJlbCBpbnN0cnVjdGlvblN0YXJ0
LCBNYWNyb0Fzc2VtYmxlcjo6UmVnaXN0ZXJJRCByZWcsIHZvaWQqIHZhbHVlKQorICAgIHsKKyAg
ICAgICAgTWFjcm9Bc3NlbWJsZXI6OnJldmVydEp1bXBSZXBsYWNlbWVudFRvQnJhbmNoUHRyV2l0
aFBhdGNoKGluc3RydWN0aW9uU3RhcnQsIHJlZywgdmFsdWUpOworICAgIH0KKwogICAgIHZvaWQg
cmV2ZXJ0SnVtcFJlcGxhY2VtZW50VG9QYXRjaGFibGVCcmFuY2hQdHJXaXRoUGF0Y2goQ29kZUxv
Y2F0aW9uTGFiZWwgaW5zdHJ1Y3Rpb25TdGFydCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MgYWRk
cmVzcywgdm9pZCogdmFsdWUpCiAgICAgewogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6cmV2ZXJ0
SnVtcFJlcGxhY2VtZW50VG9QYXRjaGFibGVCcmFuY2hQdHJXaXRoUGF0Y2goaW5zdHJ1Y3Rpb25T
dGFydCwgYWRkcmVzcywgdmFsdWUpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2Vt
Ymxlci9YODZBc3NlbWJsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YXNzZW1ibGVyL1g4NkFzc2VtYmxlci5oCShyZXZpc2lvbiAxMzUyMTYpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL1g4NkFzc2VtYmxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
OTAzLDYgKzE5MDMsMjMgQEAgcHVibGljOgogICAgIH0KICNlbmRpZgogICAgIAorICAgIHN0YXRp
YyB2b2lkIHJldmVydEp1bXBUb19jbXBsX2lyX2ZvcmNlMzIodm9pZCogaW5zdHJ1Y3Rpb25TdGFy
dCwgaW50MzJfdCBpbW0sIFJlZ2lzdGVySUQgZHN0KQorICAgIHsKKyAgICAgICAgY29uc3QgaW50
IG9wY29kZUJ5dGVzID0gMTsKKyAgICAgICAgY29uc3QgaW50IG1vZFJNQnl0ZXMgPSAxOworICAg
ICAgICBBU1NFUlQob3Bjb2RlQnl0ZXMgKyBtb2RSTUJ5dGVzIDw9IG1heEp1bXBSZXBsYWNlbWVu
dFNpemUoKSk7CisgICAgICAgIHVpbnQ4X3QqIHB0ciA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhf
dCo+KGluc3RydWN0aW9uU3RhcnQpOworICAgICAgICBwdHJbMF0gPSBPUF9HUk9VUDFfRXZJejsK
KyAgICAgICAgcHRyWzFdID0gKFg4Nkluc3RydWN0aW9uRm9ybWF0dGVyOjpNb2RSbVJlZ2lzdGVy
IDw8IDYpIHwgKEdST1VQMV9PUF9DTVAgPDwgMykgfCBkc3Q7CisgICAgICAgIHVuaW9uIHsKKyAg
ICAgICAgICAgIHVpbnQzMl90IGFzV29yZDsKKyAgICAgICAgICAgIHVpbnQ4X3QgYXNCeXRlc1s0
XTsKKyAgICAgICAgfSB1OworICAgICAgICB1LmFzV29yZCA9IGltbTsKKyAgICAgICAgZm9yICh1
bnNpZ25lZCBpID0gb3Bjb2RlQnl0ZXMgKyBtb2RSTUJ5dGVzOyBpIDwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KG1heEp1bXBSZXBsYWNlbWVudFNpemUoKSk7ICsraSkKKyAgICAgICAgICAgIHB0cltp
XSA9IHUuYXNCeXRlc1tpIC0gb3Bjb2RlQnl0ZXMgLSBtb2RSTUJ5dGVzXTsKKyAgICB9CisgICAg
CiAgICAgc3RhdGljIHZvaWQgcmV2ZXJ0SnVtcFRvX2NtcGxfaW1fZm9yY2UzMih2b2lkKiBpbnN0
cnVjdGlvblN0YXJ0LCBpbnQzMl90IGltbSwgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBkc3QpCiAg
ICAgewogICAgICAgICBBU1NFUlRfVU5VU0VEKG9mZnNldCwgIW9mZnNldCk7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmNwcAkocmV2aXNp
b24gMTM1MjE2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rSW5m
by5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3LDYgKzM3LDcgQEAgdm9pZCBDYWxsTGlua0luZm86
OnVubGluayhKU0dsb2JhbERhdGEmIAogewogICAgIEFTU0VSVChpc0xpbmtlZCgpKTsKICAgICAK
KyAgICByZXBhdGNoQnVmZmVyLnJldmVydEp1bXBSZXBsYWNlbWVudFRvQnJhbmNoUHRyV2l0aFBh
dGNoKFJlcGF0Y2hCdWZmZXI6OnN0YXJ0T2ZCcmFuY2hQdHJXaXRoUGF0Y2hPblJlZ2lzdGVyKGhv
dFBhdGhCZWdpbiksIHN0YXRpY19jYXN0PE1hY3JvQXNzZW1ibGVyOjpSZWdpc3RlcklEPihjYWxs
ZWVHUFIpLCAwKTsKICAgICBpZiAoaXNERkcpIHsKICNpZiBFTkFCTEUoREZHX0pJVCkKICAgICAg
ICAgcmVwYXRjaEJ1ZmZlci5yZWxpbmsoY2FsbFJldHVybkxvY2F0aW9uLCAoY2FsbFR5cGUgPT0g
Q29uc3RydWN0ID8gZ2xvYmFsRGF0YS5nZXRDVElTdHViKERGRzo6bGlua0NvbnN0cnVjdFRodW5r
R2VuZXJhdG9yKSA6IGdsb2JhbERhdGEuZ2V0Q1RJU3R1YihERkc6OmxpbmtDYWxsVGh1bmtHZW5l
cmF0b3IpKS5jb2RlKCkpOwpAQCAtNDcsNiArNDgsNyBAQCB2b2lkIENhbGxMaW5rSW5mbzo6dW5s
aW5rKEpTR2xvYmFsRGF0YSYgCiAgICAgICAgIHJlcGF0Y2hCdWZmZXIucmVsaW5rKGNhbGxSZXR1
cm5Mb2NhdGlvbiwgY2FsbFR5cGUgPT0gQ29uc3RydWN0ID8gZ2xvYmFsRGF0YS5qaXRTdHVicy0+
Y3RpVmlydHVhbENvbnN0cnVjdExpbmsoKSA6IGdsb2JhbERhdGEuaml0U3R1YnMtPmN0aVZpcnR1
YWxDYWxsTGluaygpKTsKICAgICBoYXNTZWVuU2hvdWxkUmVwYXRjaCA9IGZhbHNlOwogICAgIGNh
bGxlZS5jbGVhcigpOworICAgIHN0dWIuY2xlYXIoKTsKIAogICAgIC8vIEl0IHdpbGwgYmUgb24g
YSBsaXN0IGlmIHRoZSBjYWxsZWUgaGFzIGEgY29kZSBibG9jay4KICAgICBpZiAoaXNPbkxpc3Qo
KSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8uaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZv
LmgJKHJldmlzaW9uIDEzNTIxNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9D
YWxsTGlua0luZm8uaAkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsNyBAQAogI2lmbmRlZiBD
YWxsTGlua0luZm9faAogI2RlZmluZSBDYWxsTGlua0luZm9faAogCisjaW5jbHVkZSAiQ2xvc3Vy
ZUNhbGxTdHViUm91dGluZS5oIgogI2luY2x1ZGUgIkNvZGVMb2NhdGlvbi5oIgogI2luY2x1ZGUg
IkpJVFdyaXRlQmFycmllci5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKQEAgLTcwLDEyICs3
MSwxNCBAQCBzdHJ1Y3QgQ2FsbExpbmtJbmZvIDogcHVibGljIEJhc2ljUmF3U2VuCiAgICAgQ29k
ZUxvY2F0aW9uTmVhckNhbGwgaG90UGF0aE90aGVyOwogICAgIEpJVFdyaXRlQmFycmllcjxKU0Z1
bmN0aW9uPiBjYWxsZWU7CiAgICAgV3JpdGVCYXJyaWVyPEpTRnVuY3Rpb24+IGxhc3RTZWVuQ2Fs
bGVlOworICAgIFJlZlB0cjxDbG9zdXJlQ2FsbFN0dWJSb3V0aW5lPiBzdHViOwogICAgIGJvb2wg
aGFzU2VlblNob3VsZFJlcGF0Y2ggOiAxOwogICAgIGJvb2wgaXNERkcgOiAxOwogICAgIENhbGxU
eXBlIGNhbGxUeXBlIDogNjsKLSAgICB1bnNpZ25lZCBieXRlY29kZUluZGV4OworICAgIHVuc2ln
bmVkIGNhbGxlZUdQUiA6IDg7CisgICAgQ29kZU9yaWdpbiBjb2RlT3JpZ2luOwogCi0gICAgYm9v
bCBpc0xpbmtlZCgpIHsgcmV0dXJuIGNhbGxlZTsgfQorICAgIGJvb2wgaXNMaW5rZWQoKSB7IHJl
dHVybiBzdHViIHx8IGNhbGxlZTsgfQogICAgIHZvaWQgdW5saW5rKEpTR2xvYmFsRGF0YSYsIFJl
cGF0Y2hCdWZmZXImKTsKIAogICAgIGJvb2wgc2Vlbk9uY2UoKQpAQCAtOTYsNyArOTksNyBAQCBp
bmxpbmUgdm9pZCogZ2V0Q2FsbExpbmtJbmZvUmV0dXJuTG9jYXRpCiAKIGlubGluZSB1bnNpZ25l
ZCBnZXRDYWxsTGlua0luZm9CeXRlY29kZUluZGV4KENhbGxMaW5rSW5mbyogY2FsbExpbmtJbmZv
KQogewotICAgIHJldHVybiBjYWxsTGlua0luZm8tPmJ5dGVjb2RlSW5kZXg7CisgICAgcmV0dXJu
IGNhbGxMaW5rSW5mby0+Y29kZU9yaWdpbi5ieXRlY29kZUluZGV4OwogfQogI2VuZGlmIC8vIEVO
QUJMRShKSVQpCiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxv
Y2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2Rl
QmxvY2suY3BwCShyZXZpc2lvbiAxMzUyMTYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ29kZUJsb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjE4OCw3ICsyMTg4LDcgQEAg
dm9pZCBDb2RlQmxvY2s6OmZpbmFsaXplVW5jb25kaXRpb25hbGx5KAogICAgIC8vIENoZWNrIGlm
IHdlJ3JlIG5vdCBsaXZlLiBJZiB3ZSBhcmUsIHRoZW4gamV0dGlzb24uCiAgICAgaWYgKCEoc2hv
dWxkSW1tZWRpYXRlbHlBc3N1bWVMaXZlbmVzc0R1cmluZ1NjYW4oKSB8fCBtX2RmZ0RhdGEtPmxp
dmVuZXNzSGFzQmVlblByb3ZlZCkpIHsKICAgICAgICAgaWYgKHZlcmJvc2VVbmxpbmtpbmcpCi0g
ICAgICAgICAgICBkYXRhTG9nKCJDb2RlIGJsb2NrICVwIGhhcyBkZWFkIHdlYWsgcmVmZXJlbmNl
cywgamV0dGlzb25pbmcgZHVyaW5nIEdDLlxuIiwgdGhpcyk7CisgICAgICAgICAgICBkYXRhTG9n
KCJDb2RlIGJsb2NrICVwIChleGVjdXRhYmxlICVwKSBoYXMgZGVhZCB3ZWFrIHJlZmVyZW5jZXMs
IGpldHRpc29uaW5nIGR1cmluZyBHQy5cbiIsIHRoaXMsIG93bmVyRXhlY3V0YWJsZSgpKTsKIAog
ICAgICAgICAvLyBNYWtlIHN1cmUgdGhhdCB0aGUgYmFzZWxpbmUgSklUIGtub3dzIHRoYXQgaXQg
c2hvdWxkIHJlLXdhcm0tdXAgYmVmb3JlCiAgICAgICAgIC8vIG9wdGltaXppbmcuCkBAIC0yMjQ3
LDEwICsyMjQ3LDE5IEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5hbGl6ZVVuY29uZGl0aW9uYWxseSgK
ICAgICBpZiAoISFnZXRKSVRDb2RlKCkpIHsKICAgICAgICAgUmVwYXRjaEJ1ZmZlciByZXBhdGNo
QnVmZmVyKHRoaXMpOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtYmVyT2ZD
YWxsTGlua0luZm9zKCk7ICsraSkgewotICAgICAgICAgICAgaWYgKGNhbGxMaW5rSW5mbyhpKS5p
c0xpbmtlZCgpICYmICFIZWFwOjppc01hcmtlZChjYWxsTGlua0luZm8oaSkuY2FsbGVlLmdldCgp
KSkgewotICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlVW5saW5raW5nKQotICAgICAgICAgICAg
ICAgICAgICBkYXRhTG9nKCJDbGVhcmluZyBjYWxsIGZyb20gJXAgdG8gJXAuXG4iLCB0aGlzLCBj
YWxsTGlua0luZm8oaSkuY2FsbGVlLmdldCgpKTsKLSAgICAgICAgICAgICAgICBjYWxsTGlua0lu
Zm8oaSkudW5saW5rKCptX2dsb2JhbERhdGEsIHJlcGF0Y2hCdWZmZXIpOworICAgICAgICAgICAg
aWYgKGNhbGxMaW5rSW5mbyhpKS5pc0xpbmtlZCgpKSB7CisgICAgICAgICAgICAgICAgaWYgKENs
b3N1cmVDYWxsU3R1YlJvdXRpbmUqIHN0dWIgPSBjYWxsTGlua0luZm8oaSkuc3R1Yi5nZXQoKSkg
eworICAgICAgICAgICAgICAgICAgICBpZiAoIUhlYXA6OmlzTWFya2VkKHN0dWItPnN0cnVjdHVy
ZSgpKQorICAgICAgICAgICAgICAgICAgICAgICAgfHwgIUhlYXA6OmlzTWFya2VkKHN0dWItPmV4
ZWN1dGFibGUoKSkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlVW5saW5r
aW5nKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIkNsZWFyaW5nIGNsb3N1
cmUgY2FsbCBmcm9tICVwIHRvICVwLCBzdHViIHJvdXRpbmUgJXAuXG4iLCB0aGlzLCBzdHViLT5l
eGVjdXRhYmxlKCksIHN0dWIpOworICAgICAgICAgICAgICAgICAgICAgICAgY2FsbExpbmtJbmZv
KGkpLnVubGluaygqbV9nbG9iYWxEYXRhLCByZXBhdGNoQnVmZmVyKTsKKyAgICAgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoIUhlYXA6OmlzTWFya2VkKGNhbGxM
aW5rSW5mbyhpKS5jYWxsZWUuZ2V0KCkpKSB7CisgICAgICAgICAgICAgICAgICAgIGlmICh2ZXJi
b3NlVW5saW5raW5nKQorICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiQ2xlYXJpbmcg
Y2FsbCBmcm9tICVwIHRvICVwLlxuIiwgdGhpcywgY2FsbExpbmtJbmZvKGkpLmNhbGxlZS5nZXQo
KSk7CisgICAgICAgICAgICAgICAgICAgIGNhbGxMaW5rSW5mbyhpKS51bmxpbmsoKm1fZ2xvYmFs
RGF0YSwgcmVwYXRjaEJ1ZmZlcik7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQog
ICAgICAgICAgICAgaWYgKCEhY2FsbExpbmtJbmZvKGkpLmxhc3RTZWVuQ2FsbGVlCiAgICAgICAg
ICAgICAgICAgJiYgIUhlYXA6OmlzTWFya2VkKGNhbGxMaW5rSW5mbyhpKS5sYXN0U2VlbkNhbGxl
ZS5nZXQoKSkpCkBAIC0yNjA1LDYgKzI2MTQsMzUgQEAgSW5zdHJ1Y3Rpb24qIENvZGVCbG9jazo6
YWRqdXN0UENJZkF0Q2FsbAogfQogI2VuZGlmIC8vIEVOQUJMRShMTElOVCkKIAorI2lmIEVOQUJM
RShKSVQpCitDbG9zdXJlQ2FsbFN0dWJSb3V0aW5lKiBDb2RlQmxvY2s6OmZpbmRDbG9zdXJlQ2Fs
bEZvclJldHVyblBDKFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcykKK3sKKyAgICBmb3Ig
KHVuc2lnbmVkIGkgPSBtX2NhbGxMaW5rSW5mb3Muc2l6ZSgpOyBpLS07KSB7CisgICAgICAgIENh
bGxMaW5rSW5mbyYgaW5mbyA9IG1fY2FsbExpbmtJbmZvc1tpXTsKKyAgICAgICAgaWYgKCFpbmZv
LnN0dWIpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgaWYgKCFpbmZvLnN0dWItPmNv
ZGUoKS5leGVjdXRhYmxlTWVtb3J5KCktPmNvbnRhaW5zKHJldHVybkFkZHJlc3MudmFsdWUoKSkp
CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgCisgICAgICAgIHJldHVybiBpbmZvLnN0
dWIuZ2V0KCk7CisgICAgfQorICAgIAorICAgIC8vIFRoZSBzdHViIHJvdXRpbmUgbWF5IGhhdmUg
YmVlbiBqZXR0aXNvbmVkLiBUaGlzIGlzIHJhcmUsIGJ1dCB3ZSBoYXZlIHRvIGhhbmRsZSBpdC4K
KyAgICBjb25zdCBKSVRTdHViUm91dGluZVNldCYgc2V0ID0gbV9nbG9iYWxEYXRhLT5oZWFwLmpp
dFN0dWJSb3V0aW5lcygpOworICAgIGZvciAodW5zaWduZWQgaSA9IHNldC5zaXplKCk7IGktLTsp
IHsKKyAgICAgICAgR0NBd2FyZUpJVFN0dWJSb3V0aW5lKiBnZW5lcmljU3R1YiA9IHNldC5hdChp
KTsKKyAgICAgICAgaWYgKCFnZW5lcmljU3R1Yi0+aXNDbG9zdXJlQ2FsbCgpKQorICAgICAgICAg
ICAgY29udGludWU7CisgICAgICAgIENsb3N1cmVDYWxsU3R1YlJvdXRpbmUqIHN0dWIgPSBzdGF0
aWNfY2FzdDxDbG9zdXJlQ2FsbFN0dWJSb3V0aW5lKj4oZ2VuZXJpY1N0dWIpOworICAgICAgICBp
ZiAoIXN0dWItPmNvZGUoKS5leGVjdXRhYmxlTWVtb3J5KCktPmNvbnRhaW5zKHJldHVybkFkZHJl
c3MudmFsdWUoKSkpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgcmV0dXJuIHN0dWI7
CisgICAgfQorICAgIAorICAgIHJldHVybiAwOworfQorI2VuZGlmCisKIHVuc2lnbmVkIENvZGVC
bG9jazo6Ynl0ZWNvZGVPZmZzZXQoRXhlY1N0YXRlKiBleGVjLCBSZXR1cm5BZGRyZXNzUHRyIHJl
dHVybkFkZHJlc3MpCiB7CiAgICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwpAQCAtMjY0Miw3ICsyNjgw
LDE2IEBAIHVuc2lnbmVkIENvZGVCbG9jazo6Ynl0ZWNvZGVPZmZzZXQoRXhlY1MKICAgICBWZWN0
b3I8Q2FsbFJldHVybk9mZnNldFRvQnl0ZWNvZGVPZmZzZXQ+JiBjYWxsSW5kaWNlcyA9IG1fcmFy
ZURhdGEtPm1fY2FsbFJldHVybkluZGV4VmVjdG9yOwogICAgIGlmICghY2FsbEluZGljZXMuc2l6
ZSgpKQogICAgICAgICByZXR1cm4gMTsKLSAgICByZXR1cm4gYmluYXJ5U2VhcmNoPENhbGxSZXR1
cm5PZmZzZXRUb0J5dGVjb2RlT2Zmc2V0LCB1bnNpZ25lZCwgZ2V0Q2FsbFJldHVybk9mZnNldD4o
Y2FsbEluZGljZXMuYmVnaW4oKSwgY2FsbEluZGljZXMuc2l6ZSgpLCBnZXRKSVRDb2RlKCkub2Zm
c2V0T2YocmV0dXJuQWRkcmVzcy52YWx1ZSgpKSktPmJ5dGVjb2RlT2Zmc2V0OworICAgIAorICAg
IGlmIChnZXRKSVRDb2RlKCkuZ2V0RXhlY3V0YWJsZU1lbW9yeSgpLT5jb250YWlucyhyZXR1cm5B
ZGRyZXNzLnZhbHVlKCkpKSB7CisgICAgICAgIHVuc2lnbmVkIGNhbGxSZXR1cm5PZmZzZXQgPSBn
ZXRKSVRDb2RlKCkub2Zmc2V0T2YocmV0dXJuQWRkcmVzcy52YWx1ZSgpKTsKKyAgICAgICAgQ2Fs
bFJldHVybk9mZnNldFRvQnl0ZWNvZGVPZmZzZXQqIHJlc3VsdCA9CisgICAgICAgICAgICBiaW5h
cnlTZWFyY2g8Q2FsbFJldHVybk9mZnNldFRvQnl0ZWNvZGVPZmZzZXQsIHVuc2lnbmVkLCBnZXRD
YWxsUmV0dXJuT2Zmc2V0PihjYWxsSW5kaWNlcy5iZWdpbigpLCBjYWxsSW5kaWNlcy5zaXplKCks
IGNhbGxSZXR1cm5PZmZzZXQpOworICAgICAgICBBU1NFUlQocmVzdWx0LT5jYWxsUmV0dXJuT2Zm
c2V0ID09IGNhbGxSZXR1cm5PZmZzZXQpOworICAgICAgICByZXR1cm4gcmVzdWx0LT5ieXRlY29k
ZU9mZnNldDsKKyAgICB9CisKKyAgICByZXR1cm4gZmluZENsb3N1cmVDYWxsRm9yUmV0dXJuUEMo
cmV0dXJuQWRkcmVzcyktPmNvZGVPcmlnaW4oKS5ieXRlY29kZUluZGV4OwogI2VuZGlmIC8vIEVO
QUJMRShKSVQpCiAKICNpZiAhRU5BQkxFKExMSU5UKSAmJiAhRU5BQkxFKEpJVCkKQEAgLTI2NTAs
NiArMjY5NywyNCBAQCB1bnNpZ25lZCBDb2RlQmxvY2s6OmJ5dGVjb2RlT2Zmc2V0KEV4ZWNTCiAj
ZW5kaWYKIH0KIAorYm9vbCBDb2RlQmxvY2s6OmNvZGVPcmlnaW5Gb3JSZXR1cm4oUmV0dXJuQWRk
cmVzc1B0ciByZXR1cm5BZGRyZXNzLCBDb2RlT3JpZ2luJiBjb2RlT3JpZ2luKQoreworICAgIGlm
ICghaGFzQ29kZU9yaWdpbnMoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKCFn
ZXRKSVRDb2RlKCkuZ2V0RXhlY3V0YWJsZU1lbW9yeSgpLT5jb250YWlucyhyZXR1cm5BZGRyZXNz
LnZhbHVlKCkpKSB7CisgICAgICAgIGNvZGVPcmlnaW4gPSBmaW5kQ2xvc3VyZUNhbGxGb3JSZXR1
cm5QQyhyZXR1cm5BZGRyZXNzKS0+Y29kZU9yaWdpbigpOworICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICB9CisgICAgCisgICAgdW5zaWduZWQgb2Zmc2V0ID0gZ2V0SklUQ29kZSgpLm9mZnNldE9m
KHJldHVybkFkZHJlc3MudmFsdWUoKSk7CisgICAgQ29kZU9yaWdpbkF0Q2FsbFJldHVybk9mZnNl
dCogZW50cnkgPSBiaW5hcnlTZWFyY2g8Q29kZU9yaWdpbkF0Q2FsbFJldHVybk9mZnNldCwgdW5z
aWduZWQsIGdldENhbGxSZXR1cm5PZmZzZXRGb3JDb2RlT3JpZ2luPihjb2RlT3JpZ2lucygpLmJl
Z2luKCksIGNvZGVPcmlnaW5zKCkuc2l6ZSgpLCBvZmZzZXQsIFdURjo6S2V5TXVzdE5vdEJlUHJl
c2VudEluQXJyYXkpOworICAgIGlmIChlbnRyeS0+Y2FsbFJldHVybk9mZnNldCAhPSBvZmZzZXQp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBjb2RlT3JpZ2luID0gZW50cnktPmNvZGVPcmln
aW47CisgICAgcmV0dXJuIHRydWU7Cit9CisKIHZvaWQgQ29kZUJsb2NrOjpjbGVhckV2YWxDYWNo
ZSgpCiB7CiAgICAgaWYgKCEhbV9hbHRlcm5hdGl2ZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgJKHJldmlzaW9uIDEzNTIxNikKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAkod29ya2luZyBjb3B5KQpAQCAtMjQ1
LDYgKzI0NSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAKICAgICAgICAgQ2FsbExpbmtJ
bmZvJiBnZXRDYWxsTGlua0luZm8odW5zaWduZWQgYnl0ZWNvZGVJbmRleCkKICAgICAgICAgewor
ICAgICAgICAgICAgQVNTRVJUKEpJVENvZGU6OmlzQmFzZWxpbmVDb2RlKGdldEpJVFR5cGUoKSkp
OwogICAgICAgICAgICAgcmV0dXJuICooYmluYXJ5U2VhcmNoPENhbGxMaW5rSW5mbywgdW5zaWdu
ZWQsIGdldENhbGxMaW5rSW5mb0J5dGVjb2RlSW5kZXg+KG1fY2FsbExpbmtJbmZvcy5iZWdpbigp
LCBtX2NhbGxMaW5rSW5mb3Muc2l6ZSgpLCBieXRlY29kZUluZGV4KSk7CiAgICAgICAgIH0KICNl
bmRpZiAvLyBFTkFCTEUoSklUKQpAQCAtMjc0LDYgKzI3NSwxMSBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgewogICAgICAgICAgICAgbV9pbmNvbWluZ0NhbGxzLnB1c2goaW5jb21pbmcpOwog
ICAgICAgICB9CisgICAgICAgIAorICAgICAgICBib29sIGlzSW5jb21pbmdDYWxsQWxyZWFkeUxp
bmtlZChDYWxsTGlua0luZm8qIGluY29taW5nKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1
cm4gbV9pbmNvbWluZ0NhbGxzLmlzT25MaXN0KGluY29taW5nKTsKKyAgICAgICAgfQogI2VuZGlm
IC8vIEVOQUJMRShKSVQpCiAKICNpZiBFTkFCTEUoTExJTlQpCkBAIC04MTMsMTcgKzgxOSw3IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgcmV0dXJuIG1fcmFyZURhdGEgJiYgISFtX3Jh
cmVEYXRhLT5tX2NvZGVPcmlnaW5zLnNpemUoKTsKICAgICAgICAgfQogICAgICAgICAKLSAgICAg
ICAgYm9vbCBjb2RlT3JpZ2luRm9yUmV0dXJuKFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVz
cywgQ29kZU9yaWdpbiYgY29kZU9yaWdpbikKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKCFo
YXNDb2RlT3JpZ2lucygpKQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAg
ICAgIHVuc2lnbmVkIG9mZnNldCA9IGdldEpJVENvZGUoKS5vZmZzZXRPZihyZXR1cm5BZGRyZXNz
LnZhbHVlKCkpOwotICAgICAgICAgICAgQ29kZU9yaWdpbkF0Q2FsbFJldHVybk9mZnNldCogZW50
cnkgPSBiaW5hcnlTZWFyY2g8Q29kZU9yaWdpbkF0Q2FsbFJldHVybk9mZnNldCwgdW5zaWduZWQs
IGdldENhbGxSZXR1cm5PZmZzZXRGb3JDb2RlT3JpZ2luPihjb2RlT3JpZ2lucygpLmJlZ2luKCks
IGNvZGVPcmlnaW5zKCkuc2l6ZSgpLCBvZmZzZXQsIFdURjo6S2V5TXVzdE5vdEJlUHJlc2VudElu
QXJyYXkpOwotICAgICAgICAgICAgaWYgKGVudHJ5LT5jYWxsUmV0dXJuT2Zmc2V0ICE9IG9mZnNl
dCkKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICBjb2RlT3JpZ2lu
ID0gZW50cnktPmNvZGVPcmlnaW47Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAg
fQorICAgICAgICBib29sIGNvZGVPcmlnaW5Gb3JSZXR1cm4oUmV0dXJuQWRkcmVzc1B0ciByZXR1
cm5BZGRyZXNzLCBDb2RlT3JpZ2luJiBjb2RlT3JpZ2luKTsKICAgICAgICAgCiAgICAgICAgIENv
ZGVPcmlnaW4gY29kZU9yaWdpbih1bnNpZ25lZCBpbmRleCkKICAgICAgICAgewpAQCAtMTE4Nyw2
ICsxMTgzLDEwIEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgcHJpdmF0ZToKICAgICAgICAgZnJp
ZW5kIGNsYXNzIERGR0NvZGVCbG9ja3M7CisKKyNpZiBFTkFCTEUoSklUKQorICAgICAgICBDbG9z
dXJlQ2FsbFN0dWJSb3V0aW5lKiBmaW5kQ2xvc3VyZUNhbGxGb3JSZXR1cm5QQyhSZXR1cm5BZGRy
ZXNzUHRyKTsKKyNlbmRpZgogICAgICAgICAKICNpZiBFTkFCTEUoREZHX0pJVCkKICAgICAgICAg
dm9pZCB0YWxseUZyZXF1ZW50RXhpdFNpdGVzKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcAkocmV2aXNpb24gMTM1MjE2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTE4OCwxMSArMTg4LDEyIEBAIHZvaWQgSklUQ29tcGlsZXI6OmxpbmsoTGlua0J1ZmZlciYgbGlu
a0IKICAgICAgICAgQ2FsbExpbmtJbmZvJiBpbmZvID0gbV9jb2RlQmxvY2stPmNhbGxMaW5rSW5m
byhpKTsKICAgICAgICAgaW5mby5jYWxsVHlwZSA9IG1fanNDYWxsc1tpXS5tX2NhbGxUeXBlOwog
ICAgICAgICBpbmZvLmlzREZHID0gdHJ1ZTsKLSAgICAgICAgaW5mby5ieXRlY29kZUluZGV4ID0g
bV9qc0NhbGxzW2ldLm1fY29kZU9yaWdpbi5ieXRlY29kZUluZGV4OworICAgICAgICBpbmZvLmNv
ZGVPcmlnaW4gPSBtX2pzQ2FsbHNbaV0ubV9jb2RlT3JpZ2luOwogICAgICAgICBsaW5rQnVmZmVy
LmxpbmsobV9qc0NhbGxzW2ldLm1fc2xvd0NhbGwsIEZ1bmN0aW9uUHRyKChtX2dsb2JhbERhdGEt
PmdldENUSVN0dWIoaW5mby5jYWxsVHlwZSA9PSBDYWxsTGlua0luZm86OkNvbnN0cnVjdCA/IGxp
bmtDb25zdHJ1Y3RUaHVua0dlbmVyYXRvciA6IGxpbmtDYWxsVGh1bmtHZW5lcmF0b3IpKS5jb2Rl
KCkuZXhlY3V0YWJsZUFkZHJlc3MoKSkpOwogICAgICAgICBpbmZvLmNhbGxSZXR1cm5Mb2NhdGlv
biA9IGxpbmtCdWZmZXIubG9jYXRpb25PZk5lYXJDYWxsKG1fanNDYWxsc1tpXS5tX3Nsb3dDYWxs
KTsKICAgICAgICAgaW5mby5ob3RQYXRoQmVnaW4gPSBsaW5rQnVmZmVyLmxvY2F0aW9uT2YobV9q
c0NhbGxzW2ldLm1fdGFyZ2V0VG9DaGVjayk7CiAgICAgICAgIGluZm8uaG90UGF0aE90aGVyID0g
bGlua0J1ZmZlci5sb2NhdGlvbk9mTmVhckNhbGwobV9qc0NhbGxzW2ldLm1fZmFzdENhbGwpOwor
ICAgICAgICBpbmZvLmNhbGxlZUdQUiA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX2pzQ2FsbHNb
aV0ubV9jYWxsZWUpOwogICAgIH0KICAgICAKICAgICBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgb3Ny
RXhpdFRodW5rID0gZ2xvYmFsRGF0YSgpLT5nZXRDVElTdHViKG9zckV4aXRHZW5lcmF0aW9uVGh1
bmtHZW5lcmF0b3IpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21w
aWxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29t
cGlsZXIuaAkocmV2aXNpb24gMTM1MjE2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdKSVRDb21waWxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNTcsOSArMzU3LDkgQEAgcHVibGlj
OgogICAgICAgICBtX3Byb3BlcnR5QWNjZXNzZXMuYXBwZW5kKHJlY29yZCk7CiAgICAgfQogCi0g
ICAgdm9pZCBhZGRKU0NhbGwoQ2FsbCBmYXN0Q2FsbCwgQ2FsbCBzbG93Q2FsbCwgRGF0YUxhYmVs
UHRyIHRhcmdldFRvQ2hlY2ssIENhbGxMaW5rSW5mbzo6Q2FsbFR5cGUgY2FsbFR5cGUsIENvZGVP
cmlnaW4gY29kZU9yaWdpbikKKyAgICB2b2lkIGFkZEpTQ2FsbChDYWxsIGZhc3RDYWxsLCBDYWxs
IHNsb3dDYWxsLCBEYXRhTGFiZWxQdHIgdGFyZ2V0VG9DaGVjaywgQ2FsbExpbmtJbmZvOjpDYWxs
VHlwZSBjYWxsVHlwZSwgR1BSUmVnIGNhbGxlZSwgQ29kZU9yaWdpbiBjb2RlT3JpZ2luKQogICAg
IHsKLSAgICAgICAgbV9qc0NhbGxzLmFwcGVuZChKU0NhbGxSZWNvcmQoZmFzdENhbGwsIHNsb3dD
YWxsLCB0YXJnZXRUb0NoZWNrLCBjYWxsVHlwZSwgY29kZU9yaWdpbikpOworICAgICAgICBtX2pz
Q2FsbHMuYXBwZW5kKEpTQ2FsbFJlY29yZChmYXN0Q2FsbCwgc2xvd0NhbGwsIHRhcmdldFRvQ2hl
Y2ssIGNhbGxUeXBlLCBjYWxsZWUsIGNvZGVPcmlnaW4pKTsKICAgICB9CiAgICAgCiAgICAgdm9p
ZCBhZGRXZWFrUmVmZXJlbmNlKEpTQ2VsbCogdGFyZ2V0KQpAQCAtNDQwLDExICs0NDAsMTIgQEAg
cHJpdmF0ZToKICAgICBWZWN0b3I8Q2FsbEV4Y2VwdGlvblJlY29yZD4gbV9leGNlcHRpb25DaGVj
a3M7CiAgICAgCiAgICAgc3RydWN0IEpTQ2FsbFJlY29yZCB7Ci0gICAgICAgIEpTQ2FsbFJlY29y
ZChDYWxsIGZhc3RDYWxsLCBDYWxsIHNsb3dDYWxsLCBEYXRhTGFiZWxQdHIgdGFyZ2V0VG9DaGVj
aywgQ2FsbExpbmtJbmZvOjpDYWxsVHlwZSBjYWxsVHlwZSwgQ29kZU9yaWdpbiBjb2RlT3JpZ2lu
KQorICAgICAgICBKU0NhbGxSZWNvcmQoQ2FsbCBmYXN0Q2FsbCwgQ2FsbCBzbG93Q2FsbCwgRGF0
YUxhYmVsUHRyIHRhcmdldFRvQ2hlY2ssIENhbGxMaW5rSW5mbzo6Q2FsbFR5cGUgY2FsbFR5cGUs
IEdQUlJlZyBjYWxsZWUsIENvZGVPcmlnaW4gY29kZU9yaWdpbikKICAgICAgICAgICAgIDogbV9m
YXN0Q2FsbChmYXN0Q2FsbCkKICAgICAgICAgICAgICwgbV9zbG93Q2FsbChzbG93Q2FsbCkKICAg
ICAgICAgICAgICwgbV90YXJnZXRUb0NoZWNrKHRhcmdldFRvQ2hlY2spCiAgICAgICAgICAgICAs
IG1fY2FsbFR5cGUoY2FsbFR5cGUpCisgICAgICAgICAgICAsIG1fY2FsbGVlKGNhbGxlZSkKICAg
ICAgICAgICAgICwgbV9jb2RlT3JpZ2luKGNvZGVPcmlnaW4pCiAgICAgICAgIHsKICAgICAgICAg
fQpAQCAtNDUzLDYgKzQ1NCw3IEBAIHByaXZhdGU6CiAgICAgICAgIENhbGwgbV9zbG93Q2FsbDsK
ICAgICAgICAgRGF0YUxhYmVsUHRyIG1fdGFyZ2V0VG9DaGVjazsKICAgICAgICAgQ2FsbExpbmtJ
bmZvOjpDYWxsVHlwZSBtX2NhbGxUeXBlOworICAgICAgICBHUFJSZWcgbV9jYWxsZWU7CiAgICAg
ICAgIENvZGVPcmlnaW4gbV9jb2RlT3JpZ2luOwogICAgIH07CiAgICAgCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAJKHJldmlzaW9uIDEzNTIxNikK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEwNjIsMTQgKzEwNjIsMTQgQEAgY2hhciogREZHX09QRVJBVElPTiBvcGVyYXRp
b25MaW5rQ29uc3RydQogICAgIHJldHVybiBsaW5rRm9yKGV4ZWNDYWxsZWUsIENvZGVGb3JDb25z
dHJ1Y3QpOwogfQogCi1pbmxpbmUgY2hhciogdmlydHVhbEZvcihFeGVjU3RhdGUqIGV4ZWNDYWxs
ZWUsIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkKK2lubGluZSBjaGFyKiB2aXJ0dWFsRm9y
V2l0aEZ1bmN0aW9uKEV4ZWNTdGF0ZSogZXhlY0NhbGxlZSwgQ29kZVNwZWNpYWxpemF0aW9uS2lu
ZCBraW5kLCBKU0NlbGwqJiBjYWxsZWVBc0Z1bmN0aW9uQ2VsbCkKIHsKICAgICBFeGVjU3RhdGUq
IGV4ZWMgPSBleGVjQ2FsbGVlLT5jYWxsZXJGcmFtZSgpOwogICAgIEpTR2xvYmFsRGF0YSogZ2xv
YmFsRGF0YSA9ICZleGVjLT5nbG9iYWxEYXRhKCk7CiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2Vy
IHRyYWNlcihnbG9iYWxEYXRhLCBleGVjKTsKIAogICAgIEpTVmFsdWUgY2FsbGVlQXNWYWx1ZSA9
IGV4ZWNDYWxsZWUtPmNhbGxlZUFzVmFsdWUoKTsKLSAgICBKU0NlbGwqIGNhbGxlZUFzRnVuY3Rp
b25DZWxsID0gZ2V0SlNGdW5jdGlvbihjYWxsZWVBc1ZhbHVlKTsKKyAgICBjYWxsZWVBc0Z1bmN0
aW9uQ2VsbCA9IGdldEpTRnVuY3Rpb24oY2FsbGVlQXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZ
KCFjYWxsZWVBc0Z1bmN0aW9uQ2VsbCkpCiAgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0
PGNoYXIqPihoYW5kbGVIb3N0Q2FsbChleGVjQ2FsbGVlLCBjYWxsZWVBc1ZhbHVlLCBraW5kKSk7
CiAgICAgCkBAIC0xMDg3LDYgKzEwODcsMzggQEAgaW5saW5lIGNoYXIqIHZpcnR1YWxGb3IoRXhl
Y1N0YXRlKiBleGVjQwogICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNoYXIqPihleGVjdXRh
YmxlLT5nZW5lcmF0ZWRKSVRDb2RlV2l0aEFyaXR5Q2hlY2tGb3Ioa2luZCkuZXhlY3V0YWJsZUFk
ZHJlc3MoKSk7CiB9CiAKK2lubGluZSBjaGFyKiB2aXJ0dWFsRm9yKEV4ZWNTdGF0ZSogZXhlY0Nh
bGxlZSwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKQoreworICAgIEpTQ2VsbCogY2FsbGVl
QXNGdW5jdGlvbkNlbGxJZ25vcmVkOworICAgIHJldHVybiB2aXJ0dWFsRm9yV2l0aEZ1bmN0aW9u
KGV4ZWNDYWxsZWUsIGtpbmQsIGNhbGxlZUFzRnVuY3Rpb25DZWxsSWdub3JlZCk7Cit9CisKK2No
YXIqIERGR19PUEVSQVRJT04gb3BlcmF0aW9uTGlua0Nsb3N1cmVDYWxsKEV4ZWNTdGF0ZSogZXhl
Y0NhbGxlZSkKK3sKKyAgICBKU0NlbGwqIGNhbGxlZUFzRnVuY3Rpb25DZWxsOworICAgIGNoYXIq
IHJlc3VsdCA9IHZpcnR1YWxGb3JXaXRoRnVuY3Rpb24oZXhlY0NhbGxlZSwgQ29kZUZvckNhbGws
IGNhbGxlZUFzRnVuY3Rpb25DZWxsKTsKKyAgICBDYWxsTGlua0luZm8mIGNhbGxMaW5rSW5mbyA9
IGV4ZWNDYWxsZWUtPmNhbGxlckZyYW1lKCktPmNvZGVCbG9jaygpLT5nZXRDYWxsTGlua0luZm8o
ZXhlY0NhbGxlZS0+cmV0dXJuUEMoKSk7CisgICAgCisgICAgSlNGdW5jdGlvbiogY2FsbGVlID0g
anNDYXN0PEpTRnVuY3Rpb24qPihjYWxsZWVBc0Z1bmN0aW9uQ2VsbCk7CisgICAgSlNGdW5jdGlv
biogb2xkQ2FsbGVlID0gY2FsbExpbmtJbmZvLmNhbGxlZS5nZXQoKTsKKyAgICAKKyAgICBpZiAo
b2xkQ2FsbGVlCisgICAgICAgICYmIG9sZENhbGxlZS0+c3RydWN0dXJlKCkgPT0gY2FsbGVlLT5z
dHJ1Y3R1cmUoKQorICAgICAgICAmJiBvbGRDYWxsZWUtPmV4ZWN1dGFibGUoKSA9PSBjYWxsZWUt
PmV4ZWN1dGFibGUoKSkgeworICAgICAgICAKKyAgICAgICAgQVNTRVJUKGNhbGxlZS0+ZXhlY3V0
YWJsZSgpLT5oYXNKSVRDb2RlRm9yQ2FsbCgpKTsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2Rl
UHRyIGNvZGVQdHIgPSBjYWxsZWUtPmV4ZWN1dGFibGUoKS0+Z2VuZXJhdGVkSklUQ29kZUZvckNh
bGwoKS5hZGRyZXNzRm9yQ2FsbCgpOworICAgICAgICAKKyAgICAgICAgZGZnTGlua0Nsb3N1cmVD
YWxsKAorICAgICAgICAgICAgZXhlY0NhbGxlZSwgY2FsbExpbmtJbmZvLAorICAgICAgICAgICAg
Y2FsbGVlLT5leGVjdXRhYmxlKCktPmlzSG9zdEZ1bmN0aW9uKCkgPyAwIDogJmpzQ2FzdDxGdW5j
dGlvbkV4ZWN1dGFibGUqPihjYWxsZWUtPmV4ZWN1dGFibGUoKSktPmdlbmVyYXRlZEJ5dGVjb2Rl
Rm9yQ2FsbCgpLAorICAgICAgICAgICAgY2FsbGVlLT5zdHJ1Y3R1cmUoKSwgY2FsbGVlLT5leGVj
dXRhYmxlKCksIGNvZGVQdHIpOworICAgIH0gZWxzZQorICAgICAgICBkZmdMaW5rU2xvd0Zvcihl
eGVjQ2FsbGVlLCBjYWxsTGlua0luZm8sIENvZGVGb3JDYWxsKTsKKyAgICAKKyAgICByZXR1cm4g
cmVzdWx0OworfQorCiBjaGFyKiBERkdfT1BFUkFUSU9OIG9wZXJhdGlvblZpcnR1YWxDYWxsKEV4
ZWNTdGF0ZSogZXhlY0NhbGxlZSkKIHsgICAgCiAgICAgcmV0dXJuIHZpcnR1YWxGb3IoZXhlY0Nh
bGxlZSwgQ29kZUZvckNhbGwpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdP
cGVyYXRpb25zLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdP
cGVyYXRpb25zLmgJKHJldmlzaW9uIDEzNTIxNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHT3BlcmF0aW9ucy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xODEsNiArMTgxLDcgQEAgc2l6
ZV90IERGR19PUEVSQVRJT04gb3BlcmF0aW9uQ29tcGFyZVN0cgogc2l6ZV90IERGR19PUEVSQVRJ
T04gb3BlcmF0aW9uQ29tcGFyZVN0cmljdEVxKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIpIFdURl9JTlRFUk5BTDsKIGNoYXIq
IERGR19PUEVSQVRJT04gb3BlcmF0aW9uVmlydHVhbENhbGwoRXhlY1N0YXRlKikgV1RGX0lOVEVS
TkFMOwogY2hhciogREZHX09QRVJBVElPTiBvcGVyYXRpb25MaW5rQ2FsbChFeGVjU3RhdGUqKSBX
VEZfSU5URVJOQUw7CitjaGFyKiBERkdfT1BFUkFUSU9OIG9wZXJhdGlvbkxpbmtDbG9zdXJlQ2Fs
bChFeGVjU3RhdGUqKSBXVEZfSU5URVJOQUw7CiBjaGFyKiBERkdfT1BFUkFUSU9OIG9wZXJhdGlv
blZpcnR1YWxDb25zdHJ1Y3QoRXhlY1N0YXRlKikgV1RGX0lOVEVSTkFMOwogY2hhciogREZHX09Q
RVJBVElPTiBvcGVyYXRpb25MaW5rQ29uc3RydWN0KEV4ZWNTdGF0ZSopIFdURl9JTlRFUk5BTDsK
IEpTQ2VsbCogREZHX09QRVJBVElPTiBvcGVyYXRpb25DcmVhdGVBY3RpdmF0aW9uKEV4ZWNTdGF0
ZSopIFdURl9JTlRFUk5BTDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUmVw
YXRjaC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdSZXBh
dGNoLmNwcAkocmV2aXNpb24gMTM1MjE2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdSZXBhdGNoLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE4LDcgKzExOCw3IEBAIHN0YXRpYyB2
b2lkIHJlcGxhY2VXaXRoSnVtcChSZXBhdGNoQnVmZmUKIHsKICAgICBpZiAoTWFjcm9Bc3NlbWJs
ZXI6OmNhbkp1bXBSZXBsYWNlUGF0Y2hhYmxlQnJhbmNoUHRyV2l0aFBhdGNoKCkpIHsKICAgICAg
ICAgcmVwYXRjaEJ1ZmZlci5yZXBsYWNlV2l0aEp1bXAoCi0gICAgICAgICAgICBSZXBhdGNoQnVm
ZmVyOjpzdGFydE9mUGF0Y2hhYmxlQnJhbmNoUHRyV2l0aFBhdGNoKAorICAgICAgICAgICAgUmVw
YXRjaEJ1ZmZlcjo6c3RhcnRPZlBhdGNoYWJsZUJyYW5jaFB0cldpdGhQYXRjaE9uQWRkcmVzcygK
ICAgICAgICAgICAgICAgICBzdHViSW5mby5jYWxsUmV0dXJuTG9jYXRpb24uZGF0YUxhYmVsUHRy
QXRPZmZzZXQoCiAgICAgICAgICAgICAgICAgICAgIC0oaW50cHRyX3Qpc3R1YkluZm8ucGF0Y2gu
ZGZnLmRlbHRhQ2hlY2tJbW1Ub0NhbGwpKSwKICAgICAgICAgICAgIENvZGVMb2NhdGlvbkxhYmVs
KHRhcmdldCkpOwpAQCAtMTExMyw4ICsxMTEzLDIwIEBAIHZvaWQgZGZnQnVpbGRQdXRCeUlkTGlz
dChFeGVjU3RhdGUqIGV4ZWMKICAgICAgICAgZGZnUmVwYXRjaENhbGwoZXhlYy0+Y29kZUJsb2Nr
KCksIHN0dWJJbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbiwgYXBwcm9wcmlhdGVHZW5lcmljUHV0QnlJ
ZEZ1bmN0aW9uKHNsb3QsIHB1dEtpbmQpKTsKIH0KIAorc3RhdGljIHZvaWQgbGlua1Nsb3dGb3Io
UmVwYXRjaEJ1ZmZlciYgcmVwYXRjaEJ1ZmZlciwgSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBD
YWxsTGlua0luZm8mIGNhbGxMaW5rSW5mbywgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKQor
eworICAgIGlmIChraW5kID09IENvZGVGb3JDYWxsKSB7CisgICAgICAgIHJlcGF0Y2hCdWZmZXIu
cmVsaW5rKGNhbGxMaW5rSW5mby5jYWxsUmV0dXJuTG9jYXRpb24sIGdsb2JhbERhdGEtPmdldENU
SVN0dWIodmlydHVhbENhbGxUaHVua0dlbmVyYXRvcikuY29kZSgpKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKyAgICBBU1NFUlQoa2luZCA9PSBDb2RlRm9yQ29uc3RydWN0KTsKKyAgICByZXBh
dGNoQnVmZmVyLnJlbGluayhjYWxsTGlua0luZm8uY2FsbFJldHVybkxvY2F0aW9uLCBnbG9iYWxE
YXRhLT5nZXRDVElTdHViKHZpcnR1YWxDb25zdHJ1Y3RUaHVua0dlbmVyYXRvcikuY29kZSgpKTsK
K30KKwogdm9pZCBkZmdMaW5rRm9yKEV4ZWNTdGF0ZSogZXhlYywgQ2FsbExpbmtJbmZvJiBjYWxs
TGlua0luZm8sIENvZGVCbG9jayogY2FsbGVlQ29kZUJsb2NrLCBKU0Z1bmN0aW9uKiBjYWxsZWUs
IE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBjb2RlUHRyLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtp
bmQpCiB7CisgICAgQVNTRVJUKCFjYWxsTGlua0luZm8uc3R1Yik7CisgICAgCiAgICAgQ29kZUJs
b2NrKiBjYWxsZXJDb2RlQmxvY2sgPSBleGVjLT5jYWxsZXJGcmFtZSgpLT5jb2RlQmxvY2soKTsK
ICAgICBKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEgPSBjYWxsZXJDb2RlQmxvY2stPmdsb2JhbERh
dGEoKTsKICAgICAKQEAgLTExMjksMTEgKzExNDEsMTEwIEBAIHZvaWQgZGZnTGlua0ZvcihFeGVj
U3RhdGUqIGV4ZWMsIENhbGxMaW4KICAgICAgICAgY2FsbGVlQ29kZUJsb2NrLT5saW5rSW5jb21p
bmdDYWxsKCZjYWxsTGlua0luZm8pOwogICAgIAogICAgIGlmIChraW5kID09IENvZGVGb3JDYWxs
KSB7Ci0gICAgICAgIHJlcGF0Y2hCdWZmZXIucmVsaW5rKGNhbGxMaW5rSW5mby5jYWxsUmV0dXJu
TG9jYXRpb24sIGdsb2JhbERhdGEtPmdldENUSVN0dWIodmlydHVhbENhbGxUaHVua0dlbmVyYXRv
cikuY29kZSgpKTsKKyAgICAgICAgcmVwYXRjaEJ1ZmZlci5yZWxpbmsoY2FsbExpbmtJbmZvLmNh
bGxSZXR1cm5Mb2NhdGlvbiwgZ2xvYmFsRGF0YS0+Z2V0Q1RJU3R1YihsaW5rQ2xvc3VyZUNhbGxU
aHVua0dlbmVyYXRvcikuY29kZSgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KKyAgICAKICAg
ICBBU1NFUlQoa2luZCA9PSBDb2RlRm9yQ29uc3RydWN0KTsKLSAgICByZXBhdGNoQnVmZmVyLnJl
bGluayhjYWxsTGlua0luZm8uY2FsbFJldHVybkxvY2F0aW9uLCBnbG9iYWxEYXRhLT5nZXRDVElT
dHViKHZpcnR1YWxDb25zdHJ1Y3RUaHVua0dlbmVyYXRvcikuY29kZSgpKTsKKyAgICBsaW5rU2xv
d0ZvcihyZXBhdGNoQnVmZmVyLCBnbG9iYWxEYXRhLCBjYWxsTGlua0luZm8sIENvZGVGb3JDb25z
dHJ1Y3QpOworfQorCit2b2lkIGRmZ0xpbmtTbG93Rm9yKEV4ZWNTdGF0ZSogZXhlYywgQ2FsbExp
bmtJbmZvJiBjYWxsTGlua0luZm8sIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkKK3sKKyAg
ICBDb2RlQmxvY2sqIGNhbGxlckNvZGVCbG9jayA9IGV4ZWMtPmNhbGxlckZyYW1lKCktPmNvZGVC
bG9jaygpOworICAgIEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSA9IGNhbGxlckNvZGVCbG9jay0+
Z2xvYmFsRGF0YSgpOworICAgIAorICAgIFJlcGF0Y2hCdWZmZXIgcmVwYXRjaEJ1ZmZlcihjYWxs
ZXJDb2RlQmxvY2spOworICAgIAorICAgIGxpbmtTbG93Rm9yKHJlcGF0Y2hCdWZmZXIsIGdsb2Jh
bERhdGEsIGNhbGxMaW5rSW5mbywga2luZCk7Cit9CisKK3ZvaWQgZGZnTGlua0Nsb3N1cmVDYWxs
KEV4ZWNTdGF0ZSogZXhlYywgQ2FsbExpbmtJbmZvJiBjYWxsTGlua0luZm8sIENvZGVCbG9jayog
Y2FsbGVlQ29kZUJsb2NrLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgRXhlY3V0YWJsZUJhc2UqIGV4
ZWN1dGFibGUsIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBjb2RlUHRyKQoreworICAgIEFTU0VSVCgh
Y2FsbExpbmtJbmZvLnN0dWIpOworICAgIAorICAgIENvZGVCbG9jayogY2FsbGVyQ29kZUJsb2Nr
ID0gZXhlYy0+Y2FsbGVyRnJhbWUoKS0+Y29kZUJsb2NrKCk7CisgICAgSlNHbG9iYWxEYXRhKiBn
bG9iYWxEYXRhID0gY2FsbGVyQ29kZUJsb2NrLT5nbG9iYWxEYXRhKCk7CisgICAgCisgICAgR1BS
UmVnIGNhbGxlZUdQUiA9IHN0YXRpY19jYXN0PEdQUlJlZz4oY2FsbExpbmtJbmZvLmNhbGxlZUdQ
Uik7CisgICAgCisgICAgQ0NhbGxIZWxwZXJzIHN0dWJKaXQoZ2xvYmFsRGF0YSwgY2FsbGVyQ29k
ZUJsb2NrKTsKKyAgICAKKyAgICBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0IHNsb3dQYXRoOworICAg
IAorI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgc2xvd1BhdGguYXBwZW5kKAorICAgICAgICBzdHVi
Sml0LmJyYW5jaFRlc3Q2NCgKKyAgICAgICAgICAgIENDYWxsSGVscGVyczo6Tm9uWmVybywgY2Fs
bGVlR1BSLCBHUFJJbmZvOjp0YWdNYXNrUmVnaXN0ZXIpKTsKKyNlbHNlCisgICAgLy8gV2Ugd291
bGQgaGF2ZSBhbHJlYWR5IGNoZWNrZWQgdGhhdCB0aGUgY2FsbGVlIGlzIGEgY2VsbC4KKyNlbmRp
ZgorICAgIAorICAgIHNsb3dQYXRoLmFwcGVuZCgKKyAgICAgICAgc3R1YkppdC5icmFuY2hQdHIo
CisgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6Ok5vdEVxdWFsLAorICAgICAgICAgICAgQ0NhbGxI
ZWxwZXJzOjpBZGRyZXNzKGNhbGxlZUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksCisg
ICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoc3RydWN0dXJlKSkpOworICAg
IAorICAgIHNsb3dQYXRoLmFwcGVuZCgKKyAgICAgICAgc3R1YkppdC5icmFuY2hQdHIoCisgICAg
ICAgICAgICBDQ2FsbEhlbHBlcnM6Ok5vdEVxdWFsLAorICAgICAgICAgICAgQ0NhbGxIZWxwZXJz
OjpBZGRyZXNzKGNhbGxlZUdQUiwgSlNGdW5jdGlvbjo6b2Zmc2V0T2ZFeGVjdXRhYmxlKCkpLAor
ICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGV4ZWN1dGFibGUpKSk7Cisg
ICAgCisgICAgc3R1YkppdC5sb2FkUHRyKAorICAgICAgICBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Mo
Y2FsbGVlR1BSLCBKU0Z1bmN0aW9uOjpvZmZzZXRPZlNjb3BlQ2hhaW4oKSksCisgICAgICAgIEdQ
UkluZm86OnJldHVyblZhbHVlR1BSKTsKKworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgc3R1Ykpp
dC5zdG9yZTY0KAorICAgICAgICBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUiwKKyAgICAgICAgQ0Nh
bGxIZWxwZXJzOjpBZGRyZXNzKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBzdGF0aWNfY2Fz
dDxwdHJkaWZmX3Q+KHNpemVvZihSZWdpc3RlcikgKiBKU1N0YWNrOjpTY29wZUNoYWluKSkpOwor
I2Vsc2UKKyAgICBzdHViSml0LnN0b3JlUHRyKAorICAgICAgICBHUFJJbmZvOjpyZXR1cm5WYWx1
ZUdQUiwKKyAgICAgICAgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKEdQUkluZm86OmNhbGxGcmFtZVJl
Z2lzdGVyLCBzdGF0aWNfY2FzdDxwdHJkaWZmX3Q+KHNpemVvZihSZWdpc3RlcikgKiBKU1N0YWNr
OjpTY29wZUNoYWluKSArIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBh
c0JpdHMucGF5bG9hZCkpKTsKKyAgICBzdHViSml0LnN0b3JlMzIoCisgICAgICAgIENDYWxsSGVs
cGVyczo6VHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpLAorICAgICAgICBDQ2FsbEhlbHBl
cnM6OkFkZHJlc3MoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIHN0YXRpY19jYXN0PHB0cmRp
ZmZfdD4oc2l6ZW9mKFJlZ2lzdGVyKSAqIEpTU3RhY2s6OlNjb3BlQ2hhaW4pICsgT0JKRUNUX09G
RlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy50YWcpKSk7CisjZW5kaWYKKyAg
ICAKKyAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsID0gc3R1YkppdC5uZWFyQ2FsbCgpOworICAg
IEpJVENvbXBpbGVyOjpKdW1wIGRvbmUgPSBzdHViSml0Lmp1bXAoKTsKKyAgICAKKyAgICBzbG93
UGF0aC5saW5rKCZzdHViSml0KTsKKyAgICBzdHViSml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVz
dGVkSW1tUHRyKGNhbGxMaW5rSW5mby5jYWxsUmV0dXJuTG9jYXRpb24uZXhlY3V0YWJsZUFkZHJl
c3MoKSksIEdQUkluZm86Om5vbkFyZ0dQUjIpOworICAgIHN0dWJKaXQucmVzdG9yZVJldHVybkFk
ZHJlc3NCZWZvcmVSZXR1cm4oR1BSSW5mbzo6bm9uQXJnR1BSMik7CisgICAgc3R1YkppdC5tb3Zl
KGNhbGxlZUdQUiwgR1BSSW5mbzo6bm9uQXJnR1BSMCk7CisjaWYgVVNFKEpTVkFMVUUzMl82NCkK
KyAgICBzdHViSml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2Vs
bFRhZyksIEdQUkluZm86Om5vbkFyZ0dQUjEpOworI2VuZGlmCisgICAgSklUQ29tcGlsZXI6Okp1
bXAgc2xvdyA9IHN0dWJKaXQuanVtcCgpOworICAgIAorICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZm
ZXIoKmdsb2JhbERhdGEsICZzdHViSml0LCBjYWxsZXJDb2RlQmxvY2spOworICAgIAorICAgIHBh
dGNoQnVmZmVyLmxpbmsoY2FsbCwgRnVuY3Rpb25QdHIoY29kZVB0ci5leGVjdXRhYmxlQWRkcmVz
cygpKSk7CisgICAgcGF0Y2hCdWZmZXIubGluayhkb25lLCBjYWxsTGlua0luZm8uY2FsbFJldHVy
bkxvY2F0aW9uLmxhYmVsQXRPZmZzZXQoMCkpOworICAgIHBhdGNoQnVmZmVyLmxpbmsoc2xvdywg
Q29kZUxvY2F0aW9uTGFiZWwoZ2xvYmFsRGF0YS0+Z2V0Q1RJU3R1Yih2aXJ0dWFsQ2FsbFRodW5r
R2VuZXJhdG9yKS5jb2RlKCkpKTsKKyAgICAKKyAgICBQYXNzUmVmUHRyPENsb3N1cmVDYWxsU3R1
YlJvdXRpbmU+IHN0dWJSb3V0aW5lID0gYWRvcHRSZWYobmV3IENsb3N1cmVDYWxsU3R1YlJvdXRp
bmUoCisgICAgICAgIEZJTkFMSVpFX0RGR19DT0RFKAorICAgICAgICAgICAgcGF0Y2hCdWZmZXIs
CisgICAgICAgICAgICAoIkRGRyBjbG9zdXJlIGNhbGwgc3R1YiBmb3IgQ29kZUJsb2NrICVwLCBy
ZXR1cm4gcG9pbnQgJXAsIHRhcmdldCAlcCAoQ29kZUJsb2NrICVwKSIsCisgICAgICAgICAgICAg
Y2FsbGVyQ29kZUJsb2NrLCBjYWxsTGlua0luZm8uY2FsbFJldHVybkxvY2F0aW9uLmxhYmVsQXRP
ZmZzZXQoMCkuZXhlY3V0YWJsZUFkZHJlc3MoKSwKKyAgICAgICAgICAgICBjb2RlUHRyLmV4ZWN1
dGFibGVBZGRyZXNzKCksIGNhbGxlZUNvZGVCbG9jaykpLAorICAgICAgICAqZ2xvYmFsRGF0YSwg
Y2FsbGVyQ29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKSwgc3RydWN0dXJlLCBleGVjdXRhYmxl
LCBjYWxsTGlua0luZm8uY29kZU9yaWdpbikpOworICAgIAorICAgIFJlcGF0Y2hCdWZmZXIgcmVw
YXRjaEJ1ZmZlcihjYWxsZXJDb2RlQmxvY2spOworICAgIAorICAgIHJlcGF0Y2hCdWZmZXIucmVw
bGFjZVdpdGhKdW1wKAorICAgICAgICBSZXBhdGNoQnVmZmVyOjpzdGFydE9mQnJhbmNoUHRyV2l0
aFBhdGNoT25SZWdpc3RlcihjYWxsTGlua0luZm8uaG90UGF0aEJlZ2luKSwKKyAgICAgICAgQ29k
ZUxvY2F0aW9uTGFiZWwoc3R1YlJvdXRpbmUtPmNvZGUoKS5jb2RlKCkpKTsKKyAgICBsaW5rU2xv
d0ZvcihyZXBhdGNoQnVmZmVyLCBnbG9iYWxEYXRhLCBjYWxsTGlua0luZm8sIENvZGVGb3JDYWxs
KTsKKyAgICAKKyAgICBjYWxsTGlua0luZm8uc3R1YiA9IHN0dWJSb3V0aW5lOworICAgIAorICAg
IEFTU0VSVCghY2FsbGVlQ29kZUJsb2NrIHx8IGNhbGxlZUNvZGVCbG9jay0+aXNJbmNvbWluZ0Nh
bGxBbHJlYWR5TGlua2VkKCZjYWxsTGlua0luZm8pKTsKIH0KIAogdm9pZCBkZmdSZXNldEdldEJ5
SUQoUmVwYXRjaEJ1ZmZlciYgcmVwYXRjaEJ1ZmZlciwgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJ
bmZvKQpAQCAtMTE0Miw3ICsxMjUzLDcgQEAgdm9pZCBkZmdSZXNldEdldEJ5SUQoUmVwYXRjaEJ1
ZmZlciYgcmVwYQogICAgIENvZGVMb2NhdGlvbkRhdGFMYWJlbFB0ciBzdHJ1Y3R1cmVMYWJlbCA9
IHN0dWJJbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbi5kYXRhTGFiZWxQdHJBdE9mZnNldCgtKGludHB0
cl90KXN0dWJJbmZvLnBhdGNoLmRmZy5kZWx0YUNoZWNrSW1tVG9DYWxsKTsKICAgICBpZiAoTWFj
cm9Bc3NlbWJsZXI6OmNhbkp1bXBSZXBsYWNlUGF0Y2hhYmxlQnJhbmNoUHRyV2l0aFBhdGNoKCkp
IHsKICAgICAgICAgcmVwYXRjaEJ1ZmZlci5yZXZlcnRKdW1wUmVwbGFjZW1lbnRUb1BhdGNoYWJs
ZUJyYW5jaFB0cldpdGhQYXRjaCgKLSAgICAgICAgICAgIFJlcGF0Y2hCdWZmZXI6OnN0YXJ0T2ZQ
YXRjaGFibGVCcmFuY2hQdHJXaXRoUGF0Y2goc3RydWN0dXJlTGFiZWwpLAorICAgICAgICAgICAg
UmVwYXRjaEJ1ZmZlcjo6c3RhcnRPZlBhdGNoYWJsZUJyYW5jaFB0cldpdGhQYXRjaE9uQWRkcmVz
cyhzdHJ1Y3R1cmVMYWJlbCksCiAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcygK
ICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxNYWNyb0Fzc2VtYmxlcjo6UmVnaXN0ZXJJRD4o
c3R1YkluZm8ucGF0Y2guZGZnLmJhc2VHUFIpLAogICAgICAgICAgICAgICAgIEpTQ2VsbDo6c3Ry
dWN0dXJlT2Zmc2V0KCkpLApAQCAtMTE3Niw3ICsxMjg3LDcgQEAgdm9pZCBkZmdSZXNldFB1dEJ5
SUQoUmVwYXRjaEJ1ZmZlciYgcmVwYQogICAgIENvZGVMb2NhdGlvbkRhdGFMYWJlbFB0ciBzdHJ1
Y3R1cmVMYWJlbCA9IHN0dWJJbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbi5kYXRhTGFiZWxQdHJBdE9m
ZnNldCgtKGludHB0cl90KXN0dWJJbmZvLnBhdGNoLmRmZy5kZWx0YUNoZWNrSW1tVG9DYWxsKTsK
ICAgICBpZiAoTWFjcm9Bc3NlbWJsZXI6OmNhbkp1bXBSZXBsYWNlUGF0Y2hhYmxlQnJhbmNoUHRy
V2l0aFBhdGNoKCkpIHsKICAgICAgICAgcmVwYXRjaEJ1ZmZlci5yZXZlcnRKdW1wUmVwbGFjZW1l
bnRUb1BhdGNoYWJsZUJyYW5jaFB0cldpdGhQYXRjaCgKLSAgICAgICAgICAgIFJlcGF0Y2hCdWZm
ZXI6OnN0YXJ0T2ZQYXRjaGFibGVCcmFuY2hQdHJXaXRoUGF0Y2goc3RydWN0dXJlTGFiZWwpLAor
ICAgICAgICAgICAgUmVwYXRjaEJ1ZmZlcjo6c3RhcnRPZlBhdGNoYWJsZUJyYW5jaFB0cldpdGhQ
YXRjaE9uQWRkcmVzcyhzdHJ1Y3R1cmVMYWJlbCksCiAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxl
cjo6QWRkcmVzcygKICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxNYWNyb0Fzc2VtYmxlcjo6
UmVnaXN0ZXJJRD4oc3R1YkluZm8ucGF0Y2guZGZnLmJhc2VHUFIpLAogICAgICAgICAgICAgICAg
IEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdSZXBhdGNoLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdSZXBhdGNoLmgJKHJldmlzaW9uIDEzNTIxNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHUmVwYXRjaC5oCSh3b3JraW5nIGNvcHkpCkBAIC00MSw2ICs0MSw4IEBAIHZvaWQg
ZGZnQnVpbGRHZXRCeUlEUHJvdG9MaXN0KEV4ZWNTdGF0ZSoKIHZvaWQgZGZnUmVwYXRjaFB1dEJ5
SUQoRXhlY1N0YXRlKiwgSlNWYWx1ZSwgY29uc3QgSWRlbnRpZmllciYsIGNvbnN0IFB1dFByb3Bl
cnR5U2xvdCYsIFN0cnVjdHVyZVN0dWJJbmZvJiwgUHV0S2luZCk7CiB2b2lkIGRmZ0J1aWxkUHV0
QnlJZExpc3QoRXhlY1N0YXRlKiwgSlNWYWx1ZSwgY29uc3QgSWRlbnRpZmllciYsIGNvbnN0IFB1
dFByb3BlcnR5U2xvdCYsIFN0cnVjdHVyZVN0dWJJbmZvJiwgUHV0S2luZCk7CiB2b2lkIGRmZ0xp
bmtGb3IoRXhlY1N0YXRlKiwgQ2FsbExpbmtJbmZvJiwgQ29kZUJsb2NrKiwgSlNGdW5jdGlvbiog
Y2FsbGVlLCBNYWNyb0Fzc2VtYmxlckNvZGVQdHIsIENvZGVTcGVjaWFsaXphdGlvbktpbmQpOwor
dm9pZCBkZmdMaW5rU2xvd0ZvcihFeGVjU3RhdGUqLCBDYWxsTGlua0luZm8mLCBDb2RlU3BlY2lh
bGl6YXRpb25LaW5kKTsKK3ZvaWQgZGZnTGlua0Nsb3N1cmVDYWxsKEV4ZWNTdGF0ZSosIENhbGxM
aW5rSW5mbyYsIENvZGVCbG9jayosIFN0cnVjdHVyZSosIEV4ZWN1dGFibGVCYXNlKiwgTWFjcm9B
c3NlbWJsZXJDb2RlUHRyKTsKIHZvaWQgZGZnUmVzZXRHZXRCeUlEKFJlcGF0Y2hCdWZmZXImLCBT
dHJ1Y3R1cmVTdHViSW5mbyYpOwogdm9pZCBkZmdSZXNldFB1dEJ5SUQoUmVwYXRjaEJ1ZmZlciYs
IFN0cnVjdHVyZVN0dWJJbmZvJik7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAkocmV2aXNpb24gMTM1MjE2KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtOTk4LDcgKzk5OCw2IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6Om5v
blNwZWN1bGF0aXZlTm9uUGUKIAogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdENhbGwoTm9kZSYg
bm9kZSkKIHsKLQogICAgIGlmIChub2RlLm9wKCkgIT0gQ2FsbCkKICAgICAgICAgQVNTRVJUKG5v
ZGUub3AoKSA9PSBDb25zdHJ1Y3QpOwogCkBAIC0xMDQ5LDggKzEwNDgsOCBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjplbWl0Q2FsbChOb2RlJiBub2RlCiAgICAgCiAgICAgbV9qaXQuYWRkUHRyKFRy
dXN0ZWRJbW0zMihtX2ppdC5jb2RlQmxvY2soKS0+bV9udW1DYWxsZWVSZWdpc3RlcnMgKiBzaXpl
b2YoUmVnaXN0ZXIpKSwgR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIpOwogICAgIAotICAgIHNs
b3dQYXRoLmFwcGVuZChtX2ppdC5icmFuY2hQdHJXaXRoUGF0Y2goTWFjcm9Bc3NlbWJsZXI6Ok5v
dEVxdWFsLCBjYWxsZWVQYXlsb2FkR1BSLCB0YXJnZXRUb0NoZWNrKSk7CiAgICAgc2xvd1BhdGgu
YXBwZW5kKG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgY2FsbGVlVGFn
R1BSLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZykpKTsKKyAgICBzbG93UGF0aC5hcHBl
bmQobV9qaXQuYnJhbmNoUHRyV2l0aFBhdGNoKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgY2Fs
bGVlUGF5bG9hZEdQUiwgdGFyZ2V0VG9DaGVjaykpOwogICAgIG1faml0LmxvYWRQdHIoTWFjcm9B
c3NlbWJsZXI6OkFkZHJlc3MoY2FsbGVlUGF5bG9hZEdQUiwgT0JKRUNUX09GRlNFVE9GKEpTRnVu
Y3Rpb24sIG1fc2NvcGUpKSwgcmVzdWx0UGF5bG9hZEdQUik7CiAgICAgbV9qaXQuc3RvcmVQdHIo
cmVzdWx0UGF5bG9hZEdQUiwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoR1BSSW5mbzo6Y2FsbEZy
YW1lUmVnaXN0ZXIsIHN0YXRpY19jYXN0PHB0cmRpZmZfdD4oc2l6ZW9mKFJlZ2lzdGVyKSkgKiBK
U1N0YWNrOjpTY29wZUNoYWluICsgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0
b3IsIGFzQml0cy5wYXlsb2FkKSkpOwogICAgIG1faml0LnN0b3JlMzIoTWFjcm9Bc3NlbWJsZXI6
OlRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mo
R1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIHN0YXRpY19jYXN0PHB0cmRpZmZfdD4oc2l6ZW9m
KFJlZ2lzdGVyKSkgKiBKU1N0YWNrOjpTY29wZUNoYWluICsgT0JKRUNUX09GRlNFVE9GKEVuY29k
ZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy50YWcpKSk7CkBAIC0xMDg0LDcgKzEwODMsNyBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0Q2FsbChOb2RlJiBub2RlCiAKICAgICBqc1ZhbHVlUmVz
dWx0KHJlc3VsdFRhZ0dQUiwgcmVzdWx0UGF5bG9hZEdQUiwgbV9jb21waWxlSW5kZXgsIERhdGFG
b3JtYXRKUywgVXNlQ2hpbGRyZW5DYWxsZWRFeHBsaWNpdGx5KTsKIAotICAgIG1faml0LmFkZEpT
Q2FsbChmYXN0Q2FsbCwgc2xvd0NhbGwsIHRhcmdldFRvQ2hlY2ssIGNhbGxUeXBlLCBhdChtX2Nv
bXBpbGVJbmRleCkuY29kZU9yaWdpbik7CisgICAgbV9qaXQuYWRkSlNDYWxsKGZhc3RDYWxsLCBz
bG93Q2FsbCwgdGFyZ2V0VG9DaGVjaywgY2FsbFR5cGUsIGNhbGxlZVBheWxvYWRHUFIsIGF0KG1f
Y29tcGlsZUluZGV4KS5jb2RlT3JpZ2luKTsKIH0KIAogdGVtcGxhdGU8Ym9vbCBzdHJpY3Q+Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2
NC5jcHAJKHJldmlzaW9uIDEzNTIxNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwNTgsNyArMTA1OCw3IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRDYWxsKE5vZGUmIG5vZGUKICAgICAKICAgICBqc1Zh
bHVlUmVzdWx0KHJlc3VsdEdQUiwgbV9jb21waWxlSW5kZXgsIERhdGFGb3JtYXRKUywgVXNlQ2hp
bGRyZW5DYWxsZWRFeHBsaWNpdGx5KTsKICAgICAKLSAgICBtX2ppdC5hZGRKU0NhbGwoZmFzdENh
bGwsIHNsb3dDYWxsLCB0YXJnZXRUb0NoZWNrLCBjYWxsVHlwZSwgYXQobV9jb21waWxlSW5kZXgp
LmNvZGVPcmlnaW4pOworICAgIG1faml0LmFkZEpTQ2FsbChmYXN0Q2FsbCwgc2xvd0NhbGwsIHRh
cmdldFRvQ2hlY2ssIGNhbGxUeXBlLCBjYWxsZWVHUFIsIGF0KG1fY29tcGlsZUluZGV4KS5jb2Rl
T3JpZ2luKTsKIH0KIAogdGVtcGxhdGU8Ym9vbCBzdHJpY3Q+CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1RodW5rcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdUaHVua3MuY3BwCShyZXZpc2lvbiAxMzUyMTYpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1RodW5rcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxMyw2ICsy
MTMsMTggQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGxpbmtDb25zdHJ1Y3RUaHVuawogICAgIHJl
dHVybiBsaW5rRm9yVGh1bmtHZW5lcmF0b3IoZ2xvYmFsRGF0YSwgQ29kZUZvckNvbnN0cnVjdCk7
CiB9CiAKKy8vIEZvciBjbG9zdXJlIG9wdGltaXphdGlvbnMsIHdlIG9ubHkgaW5jbHVkZSBjYWxs
cywgc2luY2UgaWYgeW91J3JlIHVzaW5nIGNsb3N1cmVzIGZvcgorLy8gb2JqZWN0IGNvbnN0cnVj
dGlvbiB0aGVuIHlvdSdyZSBnb2luZyB0byBsb3NlIGJpZyB0aW1lIGFueXdheS4KK01hY3JvQXNz
ZW1ibGVyQ29kZVJlZiBsaW5rQ2xvc3VyZUNhbGxUaHVua0dlbmVyYXRvcihKU0dsb2JhbERhdGEq
IGdsb2JhbERhdGEpCit7CisgICAgQ0NhbGxIZWxwZXJzIGppdChnbG9iYWxEYXRhKTsKKyAgICAK
KyAgICBzbG93UGF0aEZvcihqaXQsIGdsb2JhbERhdGEsIG9wZXJhdGlvbkxpbmtDbG9zdXJlQ2Fs
bCk7CisgICAgCisgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcigqZ2xvYmFsRGF0YSwgJmppdCwg
R0xPQkFMX1RIVU5LX0lEKTsKKyAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwg
KCJERkcgbGluayBjbG9zdXJlIGNhbGwgc2xvdyBwYXRoIHRodW5rIikpOworfQorCiBzdGF0aWMg
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmIHZpcnR1YWxGb3JUaHVua0dlbmVyYXRvcigKICAgICBKU0ds
b2JhbERhdGEqIGdsb2JhbERhdGEsIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkKIHsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVGh1bmtzLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUaHVua3MuaAkocmV2aXNpb24gMTM1MjE2KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUaHVua3MuaAkod29ya2luZyBjb3B5KQpA
QCAtNDUsNiArNDUsOCBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgdGhyb3dFeGNlcHRpb25Gcm9t
CiBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgbGlua0NhbGxUaHVua0dlbmVyYXRvcihKU0dsb2JhbERh
dGEqKTsKIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBsaW5rQ29uc3RydWN0VGh1bmtHZW5lcmF0b3Io
SlNHbG9iYWxEYXRhKik7CiAKK01hY3JvQXNzZW1ibGVyQ29kZVJlZiBsaW5rQ2xvc3VyZUNhbGxU
aHVua0dlbmVyYXRvcihKU0dsb2JhbERhdGEqKTsKKwogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIHZp
cnR1YWxDYWxsVGh1bmtHZW5lcmF0b3IoSlNHbG9iYWxEYXRhKik7CiBNYWNyb0Fzc2VtYmxlckNv
ZGVSZWYgdmlydHVhbENvbnN0cnVjdFRodW5rR2VuZXJhdG9yKEpTR2xvYmFsRGF0YSopOwogCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCShyZXZpc2lvbiAxMzUyMTYpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgJKHdvcmtpbmcgY29weSkKQEAgLTE3NCw2ICsx
NzQsOCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBib29sIGlzUGFnZWRPdXQoZG91Ymxl
IGRlYWRsaW5lKTsKICAgICAgICAgdm9pZCBkaWRTdGFydFZNU2h1dGRvd24oKTsKKyAgICAgICAg
CisgICAgICAgIGNvbnN0IEpJVFN0dWJSb3V0aW5lU2V0JiBqaXRTdHViUm91dGluZXMoKSB7IHJl
dHVybiBtX2ppdFN0dWJSb3V0aW5lczsgfQogCiAgICAgcHJpdmF0ZToKICAgICAgICAgZnJpZW5k
IGNsYXNzIENvZGVCbG9jazsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0pJVFN0
dWJSb3V0aW5lU2V0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
SklUU3R1YlJvdXRpbmVTZXQuaAkocmV2aXNpb24gMTM1MjE2KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvSklUU3R1YlJvdXRpbmVTZXQuaAkod29ya2luZyBjb3B5KQpAQCAtNjUsNiAr
NjUsOSBAQCBwdWJsaWM6CiAgICAgCiAgICAgdm9pZCB0cmFjZU1hcmtlZFN0dWJSb3V0aW5lcyhT
bG90VmlzaXRvciYpOwogICAgIAorICAgIHVuc2lnbmVkIHNpemUoKSBjb25zdCB7IHJldHVybiBt
X2xpc3RPZlJvdXRpbmVzLnNpemUoKTsgfQorICAgIEdDQXdhcmVKSVRTdHViUm91dGluZSogYXQo
dW5zaWduZWQgaSkgY29uc3QgeyByZXR1cm4gbV9saXN0T2ZSb3V0aW5lc1tpXTsgfQorICAgIAog
cHJpdmF0ZToKICAgICB2b2lkIG1hcmtTbG93KHVpbnRwdHJfdCBhZGRyZXNzKTsKICAgICAKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvR0NBd2FyZUpJVFN0dWJSb3V0aW5lLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0dDQXdhcmVKSVRTdHViUm91
dGluZS5jcHAJKHJldmlzaW9uIDEzNTIxNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
R0NBd2FyZUpJVFN0dWJSb3V0aW5lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsMTcgKzMwLDE3
IEBACiAKICNpbmNsdWRlICJIZWFwLmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxEYXRhLmgiCi0KICNp
bmNsdWRlICJTbG90VmlzaXRvci5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZS5oIgogCiBuYW1lc3Bh
Y2UgSlNDIHsKIAogR0NBd2FyZUpJVFN0dWJSb3V0aW5lOjpHQ0F3YXJlSklUU3R1YlJvdXRpbmUo
Ci0gICAgY29uc3QgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmJiBjb2RlLCBKU0dsb2JhbERhdGEmIGds
b2JhbERhdGEpCisgICAgY29uc3QgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmJiBjb2RlLCBKU0dsb2Jh
bERhdGEmIGdsb2JhbERhdGEsIGJvb2wgaXNDbG9zdXJlQ2FsbCkKICAgICA6IEpJVFN0dWJSb3V0
aW5lKGNvZGUpCiAgICAgLCBtX21heUJlRXhlY3V0aW5nKGZhbHNlKQogICAgICwgbV9pc0pldHRp
c29uZWQoZmFsc2UpCisgICAgLCBtX2lzQ2xvc3VyZUNhbGwoaXNDbG9zdXJlQ2FsbCkKIHsKICAg
ICBnbG9iYWxEYXRhLmhlYXAubV9qaXRTdHViUm91dGluZXMuYWRkKHRoaXMpOwogfQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9HQ0F3YXJlSklUU3R1YlJvdXRpbmUuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0dDQXdhcmVKSVRTdHViUm91dGluZS5o
CShyZXZpc2lvbiAxMzUyMTYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0dDQXdhcmVK
SVRTdHViUm91dGluZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01NCw3ICs1NCw3IEBAIGNsYXNzIEpJ
VFN0dWJSb3V0aW5lU2V0OwogLy8gbGlzdCB3aGljaCBkb2VzIG5vdCBnZXQgcmVjbGFpbWVkIGFs
bCBhdCBvbmNlKS4KIGNsYXNzIEdDQXdhcmVKSVRTdHViUm91dGluZSA6IHB1YmxpYyBKSVRTdHVi
Um91dGluZSB7CiBwdWJsaWM6Ci0gICAgR0NBd2FyZUpJVFN0dWJSb3V0aW5lKGNvbnN0IE1hY3Jv
QXNzZW1ibGVyQ29kZVJlZiYsIEpTR2xvYmFsRGF0YSYpOworICAgIEdDQXdhcmVKSVRTdHViUm91
dGluZShjb25zdCBNYWNyb0Fzc2VtYmxlckNvZGVSZWYmLCBKU0dsb2JhbERhdGEmLCBib29sIGlz
Q2xvc3VyZUNhbGwgPSBmYWxzZSk7CiAgICAgdmlydHVhbCB+R0NBd2FyZUpJVFN0dWJSb3V0aW5l
KCk7CiAgICAgCiAgICAgdm9pZCBtYXJrUmVxdWlyZWRPYmplY3RzKFNsb3RWaXNpdG9yJiB2aXNp
dG9yKQpAQCAtNjQsNiArNjQsOCBAQCBwdWJsaWM6CiAgICAgCiAgICAgdm9pZCBkZWxldGVGcm9t
R0MoKTsKICAgICAKKyAgICBib29sIGlzQ2xvc3VyZUNhbGwoKSBjb25zdCB7IHJldHVybiBtX2lz
Q2xvc3VyZUNhbGw7IH0KKyAgICAKIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIHZvaWQgb2JzZXJ2
ZVplcm9SZWZDb3VudCgpOwogICAgIApAQCAtNzQsNiArNzYsNyBAQCBwcml2YXRlOgogCiAgICAg
Ym9vbCBtX21heUJlRXhlY3V0aW5nOwogICAgIGJvb2wgbV9pc0pldHRpc29uZWQ7CisgICAgYm9v
bCBtX2lzQ2xvc3VyZUNhbGw7CiB9OwogCiAvLyBVc2UgdGhpcyBpZiB5b3Ugd2FudCB0byBtYXJr
IG9uZSBhZGRpdGlvbmFsIG9iamVjdCBkdXJpbmcgR0MgaWYgeW91ciBzdHViCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVQuY3BwCShyZXZpc2lvbiAxMzUyMTYpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc4MSwxMCArNzgxLDExIEBA
IEpJVENvZGUgSklUOjpwcml2YXRlQ29tcGlsZShDb2RlUHRyKiBmdW4KICAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgbV9jb2RlQmxvY2stPm51bWJlck9mQ2FsbExpbmtJbmZvcygpOyArK2kp
IHsKICAgICAgICAgQ2FsbExpbmtJbmZvJiBpbmZvID0gbV9jb2RlQmxvY2stPmNhbGxMaW5rSW5m
byhpKTsKICAgICAgICAgaW5mby5jYWxsVHlwZSA9IG1fY2FsbFN0cnVjdHVyZVN0dWJDb21waWxh
dGlvbkluZm9baV0uY2FsbFR5cGU7Ci0gICAgICAgIGluZm8uYnl0ZWNvZGVJbmRleCA9IG1fY2Fs
bFN0cnVjdHVyZVN0dWJDb21waWxhdGlvbkluZm9baV0uYnl0ZWNvZGVJbmRleDsKKyAgICAgICAg
aW5mby5jb2RlT3JpZ2luID0gQ29kZU9yaWdpbihtX2NhbGxTdHJ1Y3R1cmVTdHViQ29tcGlsYXRp
b25JbmZvW2ldLmJ5dGVjb2RlSW5kZXgpOwogICAgICAgICBpbmZvLmNhbGxSZXR1cm5Mb2NhdGlv
biA9IHBhdGNoQnVmZmVyLmxvY2F0aW9uT2ZOZWFyQ2FsbChtX2NhbGxTdHJ1Y3R1cmVTdHViQ29t
cGlsYXRpb25JbmZvW2ldLmNhbGxSZXR1cm5Mb2NhdGlvbik7CiAgICAgICAgIGluZm8uaG90UGF0
aEJlZ2luID0gcGF0Y2hCdWZmZXIubG9jYXRpb25PZihtX2NhbGxTdHJ1Y3R1cmVTdHViQ29tcGls
YXRpb25JbmZvW2ldLmhvdFBhdGhCZWdpbik7CiAgICAgICAgIGluZm8uaG90UGF0aE90aGVyID0g
cGF0Y2hCdWZmZXIubG9jYXRpb25PZk5lYXJDYWxsKG1fY2FsbFN0cnVjdHVyZVN0dWJDb21waWxh
dGlvbkluZm9baV0uaG90UGF0aE90aGVyKTsKKyAgICAgICAgaW5mby5jYWxsZWVHUFIgPSByZWdU
MDsKICAgICB9CiAKICNpZiBFTkFCTEUoREZHX0pJVCkgfHwgRU5BQkxFKExMSU5UKQpJbmRleDog
U291cmNlL1dURi93dGYvTWV0YUFsbG9jYXRvckhhbmRsZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XVEYvd3RmL01ldGFBbGxvY2F0b3JIYW5kbGUuaAkocmV2aXNpb24gMTM1MjE2KQorKysgU291
cmNlL1dURi93dGYvTWV0YUFsbG9jYXRvckhhbmRsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC02OSw2
ICs2OSwxNiBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICByZXR1cm4gbV9zaXplSW5CeXRlczsK
ICAgICB9CisgICAgCisgICAgYm9vbCBjb250YWluc0ludGVnZXJBZGRyZXNzKHVpbnRwdHJfdCBh
ZGRyZXNzKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkZHJlc3MgLSBzdGFydEFzSW50
ZWdlcigpIDwgc2l6ZUluQnl0ZXMoKTsKKyAgICB9CisgICAgCisgICAgYm9vbCBjb250YWlucyh2
b2lkKiBhZGRyZXNzKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIGNvbnRhaW5zSW50ZWdl
ckFkZHJlc3MocmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KGFkZHJlc3MpKTsKKyAgICB9CiAg
ICAgICAgIAogICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIHNocmluayhzaXplX3QgbmV3U2l6
ZUluQnl0ZXMpOwogICAgIApJbmRleDogU291cmNlL1dURi93dGYvU2VudGluZWxMaW5rZWRMaXN0
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvU2VudGluZWxMaW5rZWRMaXN0LmgJKHJl
dmlzaW9uIDEzNTIxNikKKysrIFNvdXJjZS9XVEYvd3RmL1NlbnRpbmVsTGlua2VkTGlzdC5oCSh3
b3JraW5nIGNvcHkpCkBAIC04Myw2ICs4Myw4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgcHVzaChU
Kik7CiAgICAgc3RhdGljIHZvaWQgcmVtb3ZlKFQqKTsKKyAgICAKKyAgICBib29sIGlzT25MaXN0
KFQqKTsKIAogICAgIGl0ZXJhdG9yIGJlZ2luKCk7CiAgICAgaXRlcmF0b3IgZW5kKCk7CkBAIC0x
NTIsNiArMTU0LDE5IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBSYXdOb2RlPiAK
ICAgICBub2RlLT5zZXROZXh0KDApOwogfQogCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5h
bWUgUmF3Tm9kZT4gaW5saW5lIGJvb2wgU2VudGluZWxMaW5rZWRMaXN0PFQsIFJhd05vZGU+Ojpp
c09uTGlzdChUKiBub2RlKQoreworICAgIGlmICghbm9kZS0+aXNPbkxpc3QoKSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIAorICAgIGZvciAoVCogaXRlciA9IGJlZ2luKCk7IGl0ZXIgIT0g
ZW5kKCk7IGl0ZXIgPSBpdGVyLT5uZXh0KCkpIHsKKyAgICAgICAgaWYgKGl0ZXIgPT0gbm9kZSkK
KyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICAKKyAgICByZXR1cm4gZmFsc2U7
Cit9CisKIH0KIAogdXNpbmcgV1RGOjpCYXNpY1Jhd1NlbnRpbmVsTm9kZTsK
</data>
<flag name="review"
          id="190456"
          type_id="1"
          status="-"
          setter="oliver"
    />
    <flag name="commit-queue"
          id="190459"
          type_id="3"
          status="-"
          setter="webkit-ews"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>175131</attachid>
            <date>2012-11-19 21:14:53 -0800</date>
            <delta_ts>2012-11-19 21:29:26 -0800</delta_ts>
            <desc>the patch</desc>
            <filename>closurecall.patch</filename>
            <type>text/plain</type>
            <size>65471</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTM1MjQ0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDExNyBA
QAorMjAxMi0xMS0xOSAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IERGRyBzaG91bGQgYmUgYWJsZSB0byBjYWNoZSBjbG9zdXJlIGNhbGxzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDI2NjIKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCBjYWNoaW5nIG9mIGNhbGxz
IHdoZXJlIHRoZSBKU0Z1bmN0aW9uKiB2YXJpZXMsIGJ1dCB0aGUgU3RydWN0dXJlKiBhbmQgRXhl
Y3V0YWJsZUJhc2UqCisgICAgICAgIHN0YXkgdGhlIHNhbWUuIFRoaXMgaXMgYWNjb21wbGlzaGVk
IGJ5IHJlcGxhY2luZyB0aGUgYnJhbmNoIHRoYXQgY29tcGFyZXMgYWdhaW5zdCBhIGNvbnN0YW50
CisgICAgICAgIEpTRnVuY3Rpb24qIHdpdGggYSBqdW1wIHRvIGEgY2xvc3VyZSBjYWxsIHN0dWIu
IFRoZSBjbG9zdXJlIGNhbGwgc3R1YiBjb250YWlucyBhIGZhc3QgcGF0aCwKKyAgICAgICAgYW5k
IGp1bXBzIHNsb3cgZGlyZWN0bHkgdG8gdGhlIHZpcnR1YWwgY2FsbCB0aHVuay4KKworICAgICAg
ICBMb29rcyBsaWtlIGEgMSUgd2luIG9uIFY4djcuCisKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGFzc2VtYmxlci9BUk12N0Fz
c2VtYmxlci5oOgorICAgICAgICAoSlNDOjpBUk12N0Fzc2VtYmxlcjo6QmFkUmVnKToKKyAgICAg
ICAgKEFSTXY3QXNzZW1ibGVyKToKKyAgICAgICAgKEpTQzo6QVJNdjdBc3NlbWJsZXI6OnJldmVy
dEp1bXBUb19tb3ZUMyk6CisgICAgICAgICogYXNzZW1ibGVyL0xpbmtCdWZmZXIuaDoKKyAgICAg
ICAgKEpTQyk6CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNdjcuaDoKKyAg
ICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk12Nzo6c3RhcnRPZkJyYW5jaFB0cldpdGhQYXRj
aE9uUmVnaXN0ZXIpOgorICAgICAgICAoTWFjcm9Bc3NlbWJsZXJBUk12Nyk6CisgICAgICAgIChK
U0M6Ok1hY3JvQXNzZW1ibGVyQVJNdjc6OnJldmVydEp1bXBSZXBsYWNlbWVudFRvQnJhbmNoUHRy
V2l0aFBhdGNoKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk12Nzo6c3RhcnRPZlBh
dGNoYWJsZUJyYW5jaFB0cldpdGhQYXRjaE9uQWRkcmVzcyk6CisgICAgICAgICogYXNzZW1ibGVy
L01hY3JvQXNzZW1ibGVyWDg2Lmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2Ojpz
dGFydE9mQnJhbmNoUHRyV2l0aFBhdGNoT25SZWdpc3Rlcik6CisgICAgICAgIChNYWNyb0Fzc2Vt
Ymxlclg4Nik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2OjpzdGFydE9mUGF0Y2hh
YmxlQnJhbmNoUHRyV2l0aFBhdGNoT25BZGRyZXNzKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3Nl
bWJsZXJYODY6OnJldmVydEp1bXBSZXBsYWNlbWVudFRvQnJhbmNoUHRyV2l0aFBhdGNoKToKKyAg
ICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZfNjQuaDoKKyAgICAgICAgKEpTQzo6
TWFjcm9Bc3NlbWJsZXJYODZfNjQ6OnN0YXJ0T2ZCcmFuY2hQdHJXaXRoUGF0Y2hPblJlZ2lzdGVy
KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZfNjQ6OnN0YXJ0T2ZQYXRjaGFibGVC
cmFuY2hQdHJXaXRoUGF0Y2hPbkFkZHJlc3MpOgorICAgICAgICAoTWFjcm9Bc3NlbWJsZXJYODZf
NjQpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4Nl82NDo6cmV2ZXJ0SnVtcFJlcGxh
Y2VtZW50VG9CcmFuY2hQdHJXaXRoUGF0Y2gpOgorICAgICAgICAqIGFzc2VtYmxlci9SZXBhdGNo
QnVmZmVyLmg6CisgICAgICAgIChKU0M6OlJlcGF0Y2hCdWZmZXI6OnN0YXJ0T2ZCcmFuY2hQdHJX
aXRoUGF0Y2hPblJlZ2lzdGVyKToKKyAgICAgICAgKFJlcGF0Y2hCdWZmZXIpOgorICAgICAgICAo
SlNDOjpSZXBhdGNoQnVmZmVyOjpzdGFydE9mUGF0Y2hhYmxlQnJhbmNoUHRyV2l0aFBhdGNoT25B
ZGRyZXNzKToKKyAgICAgICAgKEpTQzo6UmVwYXRjaEJ1ZmZlcjo6cmV2ZXJ0SnVtcFJlcGxhY2Vt
ZW50VG9CcmFuY2hQdHJXaXRoUGF0Y2gpOgorICAgICAgICAqIGFzc2VtYmxlci9YODZBc3NlbWJs
ZXIuaDoKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjpyZXZlcnRKdW1wVG9fY21wbF9pcl9m
b3JjZTMyKToKKyAgICAgICAgKFg4NkFzc2VtYmxlcik6CisgICAgICAgICogYnl0ZWNvZGUvQ2Fs
bExpbmtJbmZvLmNwcDoKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtJbmZvOjp1bmxpbmspOgorICAg
ICAgICAqIGJ5dGVjb2RlL0NhbGxMaW5rSW5mby5oOgorICAgICAgICAoQ2FsbExpbmtJbmZvKToK
KyAgICAgICAgKEpTQzo6Q2FsbExpbmtJbmZvOjppc0xpbmtlZCk6CisgICAgICAgIChKU0M6Omdl
dENhbGxMaW5rSW5mb0J5dGVjb2RlSW5kZXgpOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9j
ay5jcHA6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZmluYWxpemVVbmNvbmRpdGlvbmFsbHkp
OgorICAgICAgICAoSlNDKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpmaW5kQ2xvc3VyZUNh
bGxGb3JSZXR1cm5QQyk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6Ynl0ZWNvZGVPZmZzZXQp
OgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmNvZGVPcmlnaW5Gb3JSZXR1cm4pOgorICAgICAg
ICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5oOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmdldENh
bGxMaW5rSW5mbyk6CisgICAgICAgIChDb2RlQmxvY2spOgorICAgICAgICAoSlNDOjpDb2RlQmxv
Y2s6OmlzSW5jb21pbmdDYWxsQWxyZWFkeUxpbmtlZCk6CisgICAgICAgICogZGZnL0RGR0pJVENv
bXBpbGVyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpKSVRDb21waWxlcjo6bGluayk6CisgICAg
ICAgICogZGZnL0RGR0pJVENvbXBpbGVyLmg6CisgICAgICAgIChKU0M6OkRGRzo6SklUQ29tcGls
ZXI6OmFkZEpTQ2FsbCk6CisgICAgICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6OkpTQ2FsbFJl
Y29yZDo6SlNDYWxsUmVjb3JkKToKKyAgICAgICAgKEpTQ2FsbFJlY29yZCk6CisgICAgICAgICog
ZGZnL0RGR09wZXJhdGlvbnMuY3BwOgorICAgICAgICAqIGRmZy9ERkdPcGVyYXRpb25zLmg6Cisg
ICAgICAgICogZGZnL0RGR1JlcGF0Y2guY3BwOgorICAgICAgICAoSlNDOjpERkc6OnJlcGxhY2VX
aXRoSnVtcCk6CisgICAgICAgIChKU0M6OkRGRzo6bGlua1Nsb3dGb3IpOgorICAgICAgICAoREZH
KToKKyAgICAgICAgKEpTQzo6REZHOjpkZmdMaW5rRm9yKToKKyAgICAgICAgKEpTQzo6REZHOjpk
ZmdMaW5rU2xvd0Zvcik6CisgICAgICAgIChKU0M6OkRGRzo6ZGZnTGlua0Nsb3N1cmVDYWxsKToK
KyAgICAgICAgKEpTQzo6REZHOjpkZmdSZXNldEdldEJ5SUQpOgorICAgICAgICAoSlNDOjpERkc6
OmRmZ1Jlc2V0UHV0QnlJRCk6CisgICAgICAgICogZGZnL0RGR1JlcGF0Y2guaDoKKyAgICAgICAg
KERGRyk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwOgorICAgICAg
ICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjplbWl0Q2FsbCk6CisgICAgICAgICogZGZnL0RG
R1NwZWN1bGF0aXZlSklUNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklU
OjplbWl0Q2FsbCk6CisgICAgICAgICogZGZnL0RGR1RodW5rcy5jcHA6CisgICAgICAgIChERkcp
OgorICAgICAgICAoSlNDOjpERkc6OmxpbmtDbG9zdXJlQ2FsbFRodW5rR2VuZXJhdG9yKToKKyAg
ICAgICAgKiBkZmcvREZHVGh1bmtzLmg6CisgICAgICAgIChERkcpOgorICAgICAgICAqIGhlYXAv
SGVhcC5oOgorICAgICAgICAoSGVhcCk6CisgICAgICAgIChKU0M6OkhlYXA6OmppdFN0dWJSb3V0
aW5lcyk6CisgICAgICAgICogaGVhcC9KSVRTdHViUm91dGluZVNldC5oOgorICAgICAgICAoSlND
OjpKSVRTdHViUm91dGluZVNldDo6c2l6ZSk6CisgICAgICAgIChKU0M6OkpJVFN0dWJSb3V0aW5l
U2V0OjphdCk6CisgICAgICAgIChKSVRTdHViUm91dGluZVNldCk6CisgICAgICAgICogaml0L0Ns
b3N1cmVDYWxsU3R1YlJvdXRpbmUuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQyk6CisgICAgICAg
IChKU0M6OkNsb3N1cmVDYWxsU3R1YlJvdXRpbmU6OkNsb3N1cmVDYWxsU3R1YlJvdXRpbmUpOgor
ICAgICAgICAoSlNDOjpDbG9zdXJlQ2FsbFN0dWJSb3V0aW5lOjp+Q2xvc3VyZUNhbGxTdHViUm91
dGluZSk6CisgICAgICAgIChKU0M6OkNsb3N1cmVDYWxsU3R1YlJvdXRpbmU6Om1hcmtSZXF1aXJl
ZE9iamVjdHNJbnRlcm5hbCk6CisgICAgICAgICogaml0L0Nsb3N1cmVDYWxsU3R1YlJvdXRpbmUu
aDogQWRkZWQuCisgICAgICAgIChKU0MpOgorICAgICAgICAoQ2xvc3VyZUNhbGxTdHViUm91dGlu
ZSk6CisgICAgICAgIChKU0M6OkNsb3N1cmVDYWxsU3R1YlJvdXRpbmU6OnN0cnVjdHVyZSk6Cisg
ICAgICAgIChKU0M6OkNsb3N1cmVDYWxsU3R1YlJvdXRpbmU6OmV4ZWN1dGFibGUpOgorICAgICAg
ICAoSlNDOjpDbG9zdXJlQ2FsbFN0dWJSb3V0aW5lOjpjb2RlT3JpZ2luKToKKyAgICAgICAgKiBq
aXQvR0NBd2FyZUpJVFN0dWJSb3V0aW5lLmNwcDoKKyAgICAgICAgKEpTQzo6R0NBd2FyZUpJVFN0
dWJSb3V0aW5lOjpHQ0F3YXJlSklUU3R1YlJvdXRpbmUpOgorICAgICAgICAqIGppdC9HQ0F3YXJl
SklUU3R1YlJvdXRpbmUuaDoKKyAgICAgICAgKEdDQXdhcmVKSVRTdHViUm91dGluZSk6CisgICAg
ICAgIChKU0M6OkdDQXdhcmVKSVRTdHViUm91dGluZTo6aXNDbG9zdXJlQ2FsbCk6CisgICAgICAg
ICogaml0L0pJVC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGUpOgorCiAy
MDEyLTExLTE5ICBQYXRyaWNrIEdhbnN0ZXJlciAgPHBhcm9nYUB3ZWJraXQub3JnPgogCiAgICAg
ICAgIFtDTWFrZV0gQ3JlYXRlIEphdmFTY3JpcHRDb3JlIEZvcndhcmRpbmdIZWFkZXJzCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTM1MjE2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJ
KHdvcmtpbmcgY29weSkKQEAgLTE0Nyw2ICsxNDcsOCBAQAogCQkwRjYzOTQ4NTE1RTQ4MTFCMDA2
QTU5N0MgLyogREZHQXJyYXlNb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwRjYzOTQ4MjE1RTQ4MTE0MDA2QTU5N0MgLyogREZHQXJyYXlNb2RlLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY2NkUx
NkIxNERGM0YxNjAwQjdCMkU0IC8qIERGR0FkamFjZW5jeUxpc3QuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNjZFMTY4MTRERjNGMTMwMEI3QjJFNCAv
KiBERkdBZGphY2VuY3lMaXN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJMEY2NkUxNkMxNERGM0YxNjAwQjdCMkU0IC8qIERGR0VkZ2UuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNjZFMTY5MTRERjNG
MTMwMEI3QjJFNCAvKiBERkdFZGdlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKKwkJMEY3M0Q3QUUxNjVBMTQyRDAwQUNBQjcxIC8qIENsb3N1cmVDYWxs
U3R1YlJvdXRpbmUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMEY3M0Q3QUIxNjVBMTQyQTAwQUNBQjcxIC8qIENsb3N1cmVDYWxsU3R1YlJvdXRpbmUu
Y3BwICovOyB9OworCQkwRjczRDdBRjE2NUExNDMwMDBBQ0FCNzEgLyogQ2xvc3VyZUNhbGxTdHVi
Um91dGluZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MEY3M0Q3QUMxNjVBMTQyQTAwQUNBQjcxIC8qIENsb3N1cmVDYWxsU3R1YlJvdXRpbmUuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjc2NkQyODE1
QThDQzFFMDA4RjM2M0UgLyogSklUU3R1YlJvdXRpbmUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY3NjZEMjYxNUE4Q0MxQjAwOEYzNjNFIC8qIEpJ
VFN0dWJSb3V0aW5lLmNwcCAqLzsgfTsKIAkJMEY3NjZEMkIxNUE4Q0MzODAwOEYzNjNFIC8qIEpJ
VFN0dWJSb3V0aW5lU2V0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGNzY2RDI5MTVBOENDMzQwMDhGMzYzRSAvKiBKSVRTdHViUm91dGluZVNldC5j
cHAgKi87IH07CiAJCTBGNzY2RDJDMTVBOENDM0EwMDhGMzYzRSAvKiBKSVRTdHViUm91dGluZVNl
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY3NjZE
MkExNUE4Q0MzNDAwOEYzNjNFIC8qIEpJVFN0dWJSb3V0aW5lU2V0LmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTE2NSw5ICsxNjcsOSBAQAogCQkw
RjdCMjk0QzE0QzNDRDQzMDA3QzNEQjEgLyogREZHQnl0ZUNvZGVDYWNoZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY1RjA4Q0MxNDZCRTYwMjAwMDQ3
MkE5IC8qIERGR0J5dGVDb2RlQ2FjaGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQkwRjdCMjk0RDE0QzNDRDRDMDA3QzNEQjEgLyogREZHQ29tbW9u
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkMwOTc3
RTE0NjlFQkM0MDBDRjI0NDIgLyogREZHQ29tbW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY4MDIzRUExNjEzODMyQjAwQTBCQTQ1IC8qIEJ5
VmFsSW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MEY4MDIzRTkxNjEzODMyMzAwQTBCQTQ1IC8qIEJ5VmFsSW5mby5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTBGODM2NEI3MTY0QjBDMTEwMDUzMzI5
QSAvKiBERkdCcmFuY2hEaXJlY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDBGODM2NEI1MTY0QjBDMEUwMDUzMzI5QSAvKiBERkdCcmFuY2hEaXJl
Y3Rpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQkwRjgzMzVCNzE2MzlDMUU2MDAxNDQzQjUgLyogQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjgzMzVCNDE2
MzlDMUUzMDAxNDQzQjUgLyogQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5jcHAgKi87IH07CiAJCTBG
ODMzNUI4MTYzOUMxRUEwMDE0NDNCNSAvKiBBcnJheUFsbG9jYXRpb25Qcm9maWxlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjgzMzVCNTE2MzlDMUUz
MDAxNDQzQjUgLyogQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGODM2NEI3MTY0QjBDMTEwMDUzMzI5QSAv
KiBERkdCcmFuY2hEaXJlY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGODM2NEI1MTY0QjBDMEUwMDUzMzI5QSAvKiBERkdCcmFuY2hEaXJlY3Rp
b24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkw
RjkxOUQwQzE1N0VFMDlGMDA0QTRFN0QgLyogSlNTeW1ib2xUYWJsZU9iamVjdC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjkxOUQwOTE1N0VFMDlE
MDA0QTRFN0QgLyogSlNTeW1ib2xUYWJsZU9iamVjdC5jcHAgKi87IH07CiAJCTBGOTE5RDBEMTU3
RUUwQTIwMDRBNEU3RCAvKiBKU1N5bWJvbFRhYmxlT2JqZWN0LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjkxOUQwQTE1N0VFMDlEMDA0QTRFN0QgLyog
SlNTeW1ib2xUYWJsZU9iamVjdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTBGOTE5RDEwMTU3RjMzMjkwMDRBNEU3RCAvKiBKU1NlZ21lbnRlZFZh
cmlhYmxlT2JqZWN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDBGOTE5RDBFMTU3RjMzMjcwMDRBNEU3RCAvKiBKU1NlZ21lbnRlZFZhcmlhYmxlT2Jq
ZWN0LmNwcCAqLzsgfTsKQEAgLTkzOCw2ICs5NDAsOCBAQAogCQkwRjYzOTQ4MjE1RTQ4MTE0MDA2
QTU5N0MgLyogREZHQXJyYXlNb2RlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9
IERGR0FycmF5TW9kZS5oOyBwYXRoID0gZGZnL0RGR0FycmF5TW9kZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkwRjY2RTE2ODE0REYzRjEzMDBCN0IyRTQgLyogREZHQWRqYWNlbmN5
TGlzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdBZGphY2VuY3lMaXN0
Lmg7IHBhdGggPSBkZmcvREZHQWRqYWNlbmN5TGlzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkwRjY2RTE2OTE0REYzRjEzMDBCN0IyRTQgLyogREZHRWRnZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdFZGdlLmg7IHBhdGggPSBkZmcvREZHRWRnZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjczRDdBQjE2NUExNDJBMDBBQ0FCNzEgLyog
Q2xvc3VyZUNhbGxTdHViUm91dGluZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBDbG9zdXJlQ2FsbFN0dWJSb3V0aW5lLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJMEY3M0Q3QUMxNjVBMTQyQTAwQUNBQjcxIC8qIENsb3N1cmVDYWxsU3R1YlJvdXRp
bmUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2xvc3VyZUNhbGxTdHViUm91
dGluZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjc2NkQxQzE1QTUwMjhEMDA4
RjM2M0UgLyogSklUU3R1YlJvdXRpbmUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSklUU3R1YlJvdXRpbmUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY3NjZE
MjYxNUE4Q0MxQjAwOEYzNjNFIC8qIEpJVFN0dWJSb3V0aW5lLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpJVFN0dWJSb3V0aW5lLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMEY3NjZEMjkxNUE4Q0MzNDAwOEYzNjNFIC8qIEpJVFN0dWJSb3V0aW5l
U2V0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpJVFN0dWJSb3V0
aW5lU2V0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTk1NCw5ICs5NTgsOSBA
QAogCQkwRjc3MDA5MTE0MDJGRjI4MDA3OEVCMzkgLyogU2FtcGxpbmdDb3VudGVyLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNhbXBsaW5nQ291bnRlci5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGN0IyOTQ4MTRDM0NEMjMwMDdDM0RCMSAvKiBE
RkdDQ2FsbEhlbHBlcnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHQ0Nh
bGxIZWxwZXJzLmg7IHBhdGggPSBkZmcvREZHQ0NhbGxIZWxwZXJzLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTBGODAyM0U5MTYxMzgzMjMwMEEwQkE0NSAvKiBCeVZhbEluZm8uaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQnlWYWxJbmZvLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCTBGODM2NEI1MTY0QjBDMEUwMDUzMzI5QSAvKiBERkdCcmFuY2hE
aXJlY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHQnJhbmNoRGly
ZWN0aW9uLmg7IHBhdGggPSBkZmcvREZHQnJhbmNoRGlyZWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTBGODMzNUI0MTYzOUMxRTMwMDE0NDNCNSAvKiBBcnJheUFsbG9jYXRp
b25Qcm9maWxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFycmF5
QWxsb2NhdGlvblByb2ZpbGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjgz
MzVCNTE2MzlDMUUzMDAxNDQzQjUgLyogQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBcnJheUFsbG9jYXRpb25Qcm9maWxlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGODM2NEI1MTY0QjBDMEUwMDUzMzI5QSAvKiBERkdC
cmFuY2hEaXJlY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHQnJh
bmNoRGlyZWN0aW9uLmg7IHBhdGggPSBkZmcvREZHQnJhbmNoRGlyZWN0aW9uLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGOTE5RDA5MTU3RUUwOUQwMDRBNEU3RCAvKiBKU1N5bWJv
bFRhYmxlT2JqZWN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpT
U3ltYm9sVGFibGVPYmplY3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjkx
OUQwQTE1N0VFMDlEMDA0QTRFN0QgLyogSlNTeW1ib2xUYWJsZU9iamVjdC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBKU1N5bWJvbFRhYmxlT2JqZWN0Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTBGOTE5RDBFMTU3RjMzMjcwMDRBNEU3RCAvKiBKU1NlZ21lbnRl
ZFZhcmlhYmxlT2JqZWN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtMTgwMyw2ICsxODA3LDggQEAKIAkJMTQyOUQ5MkMwRUQyMkQ3MDAwQjg5NjE5IC8qIGpp
dCAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJMEY3M0Q3
QUIxNjVBMTQyQTAwQUNBQjcxIC8qIENsb3N1cmVDYWxsU3R1YlJvdXRpbmUuY3BwICovLAorCQkJ
CTBGNzNEN0FDMTY1QTE0MkEwMEFDQUI3MSAvKiBDbG9zdXJlQ2FsbFN0dWJSb3V0aW5lLmggKi8s
CiAJCQkJMEZEODJFMzcxNDFBQjE0MjAwMTc5Qzk0IC8qIENvbXBhY3RKSVRDb2RlTWFwLmggKi8s
CiAJCQkJQTdCNDhEQjYwRUU3NENGQzAwRENCREI2IC8qIEV4ZWN1dGFibGVBbGxvY2F0b3IuY3Bw
ICovLAogCQkJCUE3QjQ4REI1MEVFNzRDRkMwMERDQkRCNiAvKiBFeGVjdXRhYmxlQWxsb2NhdG9y
LmggKi8sCkBAIC0zMDIyLDYgKzMwMjgsNyBAQAogCQkJCUE3QjYwMTgyMTYzOUZEMkEwMDM3MkJB
MyAvKiBVbmxpbmtlZENvZGVCbG9jay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTc3RjE4MjIxNjQw
ODhCMjAwNjQwQTQ3IC8qIENvZGVDYWNoZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTc3RjE4MjUx
NjQxOTJDNzAwNjQwQTQ3IC8qIFBhcnNlck1vZGVzLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjcz
RDdBRjE2NUExNDMwMDBBQ0FCNzEgLyogQ2xvc3VyZUNhbGxTdHViUm91dGluZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7
CiAJCX07CkBAIC0zNjAxLDYgKzM2MDgsNyBAQAogCQkJCTBGODMzNUI3MTYzOUMxRTYwMDE0NDNC
NSAvKiBBcnJheUFsbG9jYXRpb25Qcm9maWxlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3NkYy
Nzk0MTVGMTNDOTYwMDUxN0Q2NyAvKiBVbmxpbmtlZENvZGVCbG9jay5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlBNzdGMTgyMTE2NDA4OEIyMDA2NDBBNDcgLyogQ29kZUNhY2hlLmNwcCBpbiBTb3Vy
Y2VzICovLAorCQkJCTBGNzNEN0FFMTY1QTE0MkQwMEFDQUI3MSAvKiBDbG9zdXJlQ2FsbFN0dWJS
b3V0aW5lLmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50
UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fz
c2VtYmxlci9BUk12N0Fzc2VtYmxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9hc3NlbWJsZXIvQVJNdjdBc3NlbWJsZXIuaAkocmV2aXNpb24gMTM1MjE2KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BUk12N0Fzc2VtYmxlci5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOSwgMjAxMCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDksIDIwMTAs
IDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAy
MDEwIFVuaXZlcnNpdHkgb2YgU3plZ2VkCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC01MDcsNyArNTA3
LDcgQEAgcHVibGljOgogcHJpdmF0ZToKIAogICAgIC8vIEFSTXY3LCBBcHB4LUEuNi4zCi0gICAg
Ym9vbCBCYWRSZWcoUmVnaXN0ZXJJRCByZWcpCisgICAgc3RhdGljIGJvb2wgQmFkUmVnKFJlZ2lz
dGVySUQgcmVnKQogICAgIHsKICAgICAgICAgcmV0dXJuIChyZWcgPT0gQVJNUmVnaXN0ZXJzOjpz
cCkgfHwgKHJlZyA9PSBBUk1SZWdpc3RlcnM6OnBjKTsKICAgICB9CkBAIC0xMjYxLDYgKzEyNjEs
MTggQEAgcHVibGljOgogICAgICAgICAKICAgICAgICAgbV9mb3JtYXR0ZXIudHdvV29yZE9wNWk2
SW1tNFJlZzRFbmNvZGVkSW1tKE9QX01PVl9pbW1fVDMsIGltbS5tX3ZhbHVlLmltbTQsIHJkLCBp
bW0pOwogICAgIH0KKyAgICAKKyAgICBzdGF0aWMgdm9pZCByZXZlcnRKdW1wVG9fbW92VDModm9p
ZCogaW5zdHJ1Y3Rpb25TdGFydCwgUmVnaXN0ZXJJRCByZCwgQVJNVGh1bWJJbW1lZGlhdGUgaW1t
KQorICAgIHsKKyAgICAgICAgQVNTRVJUKGltbS5pc1ZhbGlkKCkpOworICAgICAgICBBU1NFUlQo
IWltbS5pc0VuY29kZWRJbW0oKSk7CisgICAgICAgIEFTU0VSVCghQmFkUmVnKHJkKSk7CisgICAg
ICAgIAorICAgICAgICB1aW50MTZfdCogYWRkcmVzcyA9IHN0YXRpY19jYXN0PHVpbnQxNl90Kj4o
aW5zdHJ1Y3Rpb25TdGFydCk7CisgICAgICAgIGFkZHJlc3NbMF0gPSB0d29Xb3JkT3A1aTZJbW00
UmVnNEVuY29kZWRJbW1GaXJzdChPUF9NT1ZfaW1tX1QzLCBpbW0pOworICAgICAgICBhZGRyZXNz
WzFdID0gdHdvV29yZE9wNWk2SW1tNFJlZzRFbmNvZGVkSW1tU2Vjb25kKHJkLCBpbW0pOworICAg
ICAgICBjYWNoZUZsdXNoKGFkZHJlc3MsIHNpemVvZih1aW50MTZfdCkgKiAyKTsKKyAgICB9CiAK
ICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgbW92KFJlZ2lzdGVySUQgcmQsIEFSTVRodW1iSW1tZWRp
YXRlIGltbSkKICAgICB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0xp
bmtCdWZmZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVy
L0xpbmtCdWZmZXIuaAkocmV2aXNpb24gMTM1MjE2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Fzc2VtYmxlci9MaW5rQnVmZmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4OCw3ICsyODgsNyBA
QCBwcml2YXRlOgogICAgIEZJTkFMSVpFX0NPREVfSUYoT3B0aW9uczo6c2hvd0Rpc2Fzc2VtYmx5
KCksIGxpbmtCdWZmZXJSZWZlcmVuY2UsIGRhdGFMb2dBcmd1bWVudHNGb3JIZWFkaW5nKQogCiAj
ZGVmaW5lIEZJTkFMSVpFX0RGR19DT0RFKGxpbmtCdWZmZXJSZWZlcmVuY2UsIGRhdGFMb2dBcmd1
bWVudHNGb3JIZWFkaW5nKSAgXAotICAgIEZJTkFMSVpFX0NPREVfSUYoT3B0aW9uczo6c2hvd0RG
R0Rpc2Fzc2VtYmx5KCksIGxpbmtCdWZmZXJSZWZlcmVuY2UsIGRhdGFMb2dBcmd1bWVudHNGb3JI
ZWFkaW5nKQorICAgIEZJTkFMSVpFX0NPREVfSUYoKE9wdGlvbnM6OnNob3dEaXNhc3NlbWJseSgp
IHx8IE9wdGlvbnM6OnNob3dERkdEaXNhc3NlbWJseSgpKSwgbGlua0J1ZmZlclJlZmVyZW5jZSwg
ZGF0YUxvZ0FyZ3VtZW50c0ZvckhlYWRpbmcpCiAKIH0gLy8gbmFtZXNwYWNlIEpTQwogCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNdjcuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1i
bGVyQVJNdjcuaAkocmV2aXNpb24gMTM1MjE2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fz
c2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTXY3LmgJKHdvcmtpbmcgY29weSkKQEAgLTE3NjEsNyAr
MTc2MSwxOCBAQCBwdWJsaWM6CiAgICAgCiAgICAgc3RhdGljIGJvb2wgY2FuSnVtcFJlcGxhY2VQ
YXRjaGFibGVCcmFuY2hQdHJXaXRoUGF0Y2goKSB7IHJldHVybiBmYWxzZTsgfQogICAgIAotICAg
IHN0YXRpYyBDb2RlTG9jYXRpb25MYWJlbCBzdGFydE9mUGF0Y2hhYmxlQnJhbmNoUHRyV2l0aFBh
dGNoKENvZGVMb2NhdGlvbkRhdGFMYWJlbFB0cikKKyAgICBzdGF0aWMgQ29kZUxvY2F0aW9uTGFi
ZWwgc3RhcnRPZkJyYW5jaFB0cldpdGhQYXRjaE9uUmVnaXN0ZXIoQ29kZUxvY2F0aW9uRGF0YUxh
YmVsUHRyIGxhYmVsKQorICAgIHsKKyAgICAgICAgY29uc3QgdW5zaWduZWQgdHdvV29yZE9wU2l6
ZSA9IDQ7CisgICAgICAgIHJldHVybiBsYWJlbC5sYWJlbEF0T2Zmc2V0KC10d29Xb3JkT3BTaXpl
ICogMik7CisgICAgfQorICAgIAorICAgIHN0YXRpYyB2b2lkIHJldmVydEp1bXBSZXBsYWNlbWVu
dFRvQnJhbmNoUHRyV2l0aFBhdGNoKENvZGVMb2NhdGlvbkxhYmVsIGluc3RydWN0aW9uU3RhcnQs
IFJlZ2lzdGVySUQsIHZvaWQqIGluaXRpYWxWYWx1ZSkKKyAgICB7CisgICAgICAgIEFSTXY3QXNz
ZW1ibGVyOjpyZXZlcnRKdW1wVG9fbW92VDMoaW5zdHJ1Y3Rpb25TdGFydC5kYXRhTG9jYXRpb24o
KSwgZGF0YVRlbXBSZWdpc3RlciwgQVJNVGh1bWJJbW1lZGlhdGU6Om1ha2VVSW50MTYocmVpbnRl
cnByZXRfY2FzdDx1aW50cHRyX3Q+KGluaXRpYWxWYWx1ZSkgJiAweGZmZmYpKTsKKyAgICB9Cisg
ICAgCisgICAgc3RhdGljIENvZGVMb2NhdGlvbkxhYmVsIHN0YXJ0T2ZQYXRjaGFibGVCcmFuY2hQ
dHJXaXRoUGF0Y2hPbkFkZHJlc3MoQ29kZUxvY2F0aW9uRGF0YUxhYmVsUHRyKQogICAgIHsKICAg
ICAgICAgVU5SRUFDSEFCTEVfRk9SX1BMQVRGT1JNKCk7CiAgICAgICAgIHJldHVybiBDb2RlTG9j
YXRpb25MYWJlbCgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNy
b0Fzc2VtYmxlclg4Ni5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3Nl
bWJsZXIvTWFjcm9Bc3NlbWJsZXJYODYuaAkocmV2aXNpb24gMTM1MjE2KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Ni5oCSh3b3JraW5nIGNvcHkp
CkBAIC0yNTUsNyArMjU1LDE3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBib29sIGNhbkp1bXBS
ZXBsYWNlUGF0Y2hhYmxlQnJhbmNoUHRyV2l0aFBhdGNoKCkgeyByZXR1cm4gdHJ1ZTsgfQogICAg
IAotICAgIHN0YXRpYyBDb2RlTG9jYXRpb25MYWJlbCBzdGFydE9mUGF0Y2hhYmxlQnJhbmNoUHRy
V2l0aFBhdGNoKENvZGVMb2NhdGlvbkRhdGFMYWJlbFB0ciBsYWJlbCkKKyAgICBzdGF0aWMgQ29k
ZUxvY2F0aW9uTGFiZWwgc3RhcnRPZkJyYW5jaFB0cldpdGhQYXRjaE9uUmVnaXN0ZXIoQ29kZUxv
Y2F0aW9uRGF0YUxhYmVsUHRyIGxhYmVsKQorICAgIHsKKyAgICAgICAgY29uc3QgaW50IG9wY29k
ZUJ5dGVzID0gMTsKKyAgICAgICAgY29uc3QgaW50IG1vZFJNQnl0ZXMgPSAxOworICAgICAgICBj
b25zdCBpbnQgaW1tZWRpYXRlQnl0ZXMgPSA0OworICAgICAgICBjb25zdCBpbnQgdG90YWxCeXRl
cyA9IG9wY29kZUJ5dGVzICsgbW9kUk1CeXRlcyArIGltbWVkaWF0ZUJ5dGVzOworICAgICAgICBB
U1NFUlQodG90YWxCeXRlcyA+PSBtYXhKdW1wUmVwbGFjZW1lbnRTaXplKCkpOworICAgICAgICBy
ZXR1cm4gbGFiZWwubGFiZWxBdE9mZnNldCgtdG90YWxCeXRlcyk7CisgICAgfQorICAgIAorICAg
IHN0YXRpYyBDb2RlTG9jYXRpb25MYWJlbCBzdGFydE9mUGF0Y2hhYmxlQnJhbmNoUHRyV2l0aFBh
dGNoT25BZGRyZXNzKENvZGVMb2NhdGlvbkRhdGFMYWJlbFB0ciBsYWJlbCkKICAgICB7CiAgICAg
ICAgIGNvbnN0IGludCBvcGNvZGVCeXRlcyA9IDE7CiAgICAgICAgIGNvbnN0IGludCBtb2RSTUJ5
dGVzID0gMTsKQEAgLTI2Niw2ICsyNzYsMTEgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbGFi
ZWwubGFiZWxBdE9mZnNldCgtdG90YWxCeXRlcyk7CiAgICAgfQogICAgIAorICAgIHN0YXRpYyB2
b2lkIHJldmVydEp1bXBSZXBsYWNlbWVudFRvQnJhbmNoUHRyV2l0aFBhdGNoKENvZGVMb2NhdGlv
bkxhYmVsIGluc3RydWN0aW9uU3RhcnQsIFJlZ2lzdGVySUQgcmVnLCB2b2lkKiBpbml0aWFsVmFs
dWUpCisgICAgeworICAgICAgICBYODZBc3NlbWJsZXI6OnJldmVydEp1bXBUb19jbXBsX2lyX2Zv
cmNlMzIoaW5zdHJ1Y3Rpb25TdGFydC5leGVjdXRhYmxlQWRkcmVzcygpLCByZWludGVycHJldF9j
YXN0PGludHB0cl90Pihpbml0aWFsVmFsdWUpLCByZWcpOworICAgIH0KKwogICAgIHN0YXRpYyB2
b2lkIHJldmVydEp1bXBSZXBsYWNlbWVudFRvUGF0Y2hhYmxlQnJhbmNoUHRyV2l0aFBhdGNoKENv
ZGVMb2NhdGlvbkxhYmVsIGluc3RydWN0aW9uU3RhcnQsIEFkZHJlc3MgYWRkcmVzcywgdm9pZCog
aW5pdGlhbFZhbHVlKQogICAgIHsKICAgICAgICAgQVNTRVJUKCFhZGRyZXNzLm9mZnNldCk7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fz
c2VtYmxlclg4Nl82NC5oCShyZXZpc2lvbiAxMzUyMTYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0LmgJKHdvcmtpbmcgY29weSkKQEAgLTU4
Nyw3ICs1ODcsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgYm9vbCBjYW5KdW1wUmVwbGFjZVBh
dGNoYWJsZUJyYW5jaFB0cldpdGhQYXRjaCgpIHsgcmV0dXJuIHRydWU7IH0KICAgICAKLSAgICBz
dGF0aWMgQ29kZUxvY2F0aW9uTGFiZWwgc3RhcnRPZlBhdGNoYWJsZUJyYW5jaFB0cldpdGhQYXRj
aChDb2RlTG9jYXRpb25EYXRhTGFiZWxQdHIgbGFiZWwpCisgICAgc3RhdGljIENvZGVMb2NhdGlv
bkxhYmVsIHN0YXJ0T2ZCcmFuY2hQdHJXaXRoUGF0Y2hPblJlZ2lzdGVyKENvZGVMb2NhdGlvbkRh
dGFMYWJlbFB0ciBsYWJlbCkKICAgICB7CiAgICAgICAgIGNvbnN0IGludCByZXhCeXRlcyA9IDE7
CiAgICAgICAgIGNvbnN0IGludCBvcGNvZGVCeXRlcyA9IDE7CkBAIC01OTcsMTEgKzU5NywyMSBA
QCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBsYWJlbC5sYWJlbEF0T2Zmc2V0KC10b3RhbEJ5dGVz
KTsKICAgICB9CiAgICAgCisgICAgc3RhdGljIENvZGVMb2NhdGlvbkxhYmVsIHN0YXJ0T2ZQYXRj
aGFibGVCcmFuY2hQdHJXaXRoUGF0Y2hPbkFkZHJlc3MoQ29kZUxvY2F0aW9uRGF0YUxhYmVsUHRy
IGxhYmVsKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHN0YXJ0T2ZCcmFuY2hQdHJXaXRoUGF0Y2hP
blJlZ2lzdGVyKGxhYmVsKTsKKyAgICB9CisgICAgCiAgICAgc3RhdGljIHZvaWQgcmV2ZXJ0SnVt
cFJlcGxhY2VtZW50VG9QYXRjaGFibGVCcmFuY2hQdHJXaXRoUGF0Y2goQ29kZUxvY2F0aW9uTGFi
ZWwgaW5zdHJ1Y3Rpb25TdGFydCwgQWRkcmVzcywgdm9pZCogaW5pdGlhbFZhbHVlKQogICAgIHsK
ICAgICAgICAgWDg2QXNzZW1ibGVyOjpyZXZlcnRKdW1wVG9fbW92cV9pNjRyKGluc3RydWN0aW9u
U3RhcnQuZXhlY3V0YWJsZUFkZHJlc3MoKSwgcmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4oaW5p
dGlhbFZhbHVlKSwgc2NyYXRjaFJlZ2lzdGVyKTsKICAgICB9CiAKKyAgICBzdGF0aWMgdm9pZCBy
ZXZlcnRKdW1wUmVwbGFjZW1lbnRUb0JyYW5jaFB0cldpdGhQYXRjaChDb2RlTG9jYXRpb25MYWJl
bCBpbnN0cnVjdGlvblN0YXJ0LCBSZWdpc3RlcklELCB2b2lkKiBpbml0aWFsVmFsdWUpCisgICAg
eworICAgICAgICBYODZBc3NlbWJsZXI6OnJldmVydEp1bXBUb19tb3ZxX2k2NHIoaW5zdHJ1Y3Rp
b25TdGFydC5leGVjdXRhYmxlQWRkcmVzcygpLCByZWludGVycHJldF9jYXN0PGludHB0cl90Pihp
bml0aWFsVmFsdWUpLCBzY3JhdGNoUmVnaXN0ZXIpOworICAgIH0KKwogcHJpdmF0ZToKICAgICBm
cmllbmQgY2xhc3MgTGlua0J1ZmZlcjsKICAgICBmcmllbmQgY2xhc3MgUmVwYXRjaEJ1ZmZlcjsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvUmVwYXRjaEJ1ZmZlci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvUmVwYXRjaEJ1ZmZl
ci5oCShyZXZpc2lvbiAxMzUyMTYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVy
L1JlcGF0Y2hCdWZmZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMTQxLDkgKzE0MSwxNCBAQCBwdWJs
aWM6CiAgICAgICAgICAgICByZXBsYWNlV2l0aEFkZHJlc3NDb21wdXRhdGlvbihsYWJlbCk7CiAg
ICAgfQogCi0gICAgc3RhdGljIENvZGVMb2NhdGlvbkxhYmVsIHN0YXJ0T2ZQYXRjaGFibGVCcmFu
Y2hQdHJXaXRoUGF0Y2goQ29kZUxvY2F0aW9uRGF0YUxhYmVsUHRyIGxhYmVsKQorICAgIHN0YXRp
YyBDb2RlTG9jYXRpb25MYWJlbCBzdGFydE9mQnJhbmNoUHRyV2l0aFBhdGNoT25SZWdpc3RlcihD
b2RlTG9jYXRpb25EYXRhTGFiZWxQdHIgbGFiZWwpCiAgICAgewotICAgICAgICByZXR1cm4gTWFj
cm9Bc3NlbWJsZXI6OnN0YXJ0T2ZQYXRjaGFibGVCcmFuY2hQdHJXaXRoUGF0Y2gobGFiZWwpOwor
ICAgICAgICByZXR1cm4gTWFjcm9Bc3NlbWJsZXI6OnN0YXJ0T2ZCcmFuY2hQdHJXaXRoUGF0Y2hP
blJlZ2lzdGVyKGxhYmVsKTsKKyAgICB9CisgICAgCisgICAgc3RhdGljIENvZGVMb2NhdGlvbkxh
YmVsIHN0YXJ0T2ZQYXRjaGFibGVCcmFuY2hQdHJXaXRoUGF0Y2hPbkFkZHJlc3MoQ29kZUxvY2F0
aW9uRGF0YUxhYmVsUHRyIGxhYmVsKQorICAgIHsKKyAgICAgICAgcmV0dXJuIE1hY3JvQXNzZW1i
bGVyOjpzdGFydE9mUGF0Y2hhYmxlQnJhbmNoUHRyV2l0aFBhdGNoT25BZGRyZXNzKGxhYmVsKTsK
ICAgICB9CiAgICAgCiAgICAgdm9pZCByZXBsYWNlV2l0aEp1bXAoQ29kZUxvY2F0aW9uTGFiZWwg
aW5zdHJ1Y3Rpb25TdGFydCwgQ29kZUxvY2F0aW9uTGFiZWwgZGVzdGluYXRpb24pCkBAIC0xNTQs
NiArMTU5LDExIEBAIHB1YmxpYzoKICAgICAvLyBUaGlzIGlzIGEgKmJpdCogb2YgYSBzaWxseSBB
UEksIHNpbmNlIHdlIGN1cnJlbnRseSBhbHdheXMgYWxzbyByZXBhdGNoIHRoZQogICAgIC8vIGlt
bWVkaWF0ZSBhZnRlciBjYWxsaW5nIHRoaXMuIEJ1dCBJJ20gZmluZSB3aXRoIHRoYXQsIHNpbmNl
IHRoaXMganVzdCBmZWVscwogICAgIC8vIGxlc3MgeXVja3kuCisgICAgdm9pZCByZXZlcnRKdW1w
UmVwbGFjZW1lbnRUb0JyYW5jaFB0cldpdGhQYXRjaChDb2RlTG9jYXRpb25MYWJlbCBpbnN0cnVj
dGlvblN0YXJ0LCBNYWNyb0Fzc2VtYmxlcjo6UmVnaXN0ZXJJRCByZWcsIHZvaWQqIHZhbHVlKQor
ICAgIHsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OnJldmVydEp1bXBSZXBsYWNlbWVudFRvQnJh
bmNoUHRyV2l0aFBhdGNoKGluc3RydWN0aW9uU3RhcnQsIHJlZywgdmFsdWUpOworICAgIH0KKwog
ICAgIHZvaWQgcmV2ZXJ0SnVtcFJlcGxhY2VtZW50VG9QYXRjaGFibGVCcmFuY2hQdHJXaXRoUGF0
Y2goQ29kZUxvY2F0aW9uTGFiZWwgaW5zdHJ1Y3Rpb25TdGFydCwgTWFjcm9Bc3NlbWJsZXI6OkFk
ZHJlc3MgYWRkcmVzcywgdm9pZCogdmFsdWUpCiAgICAgewogICAgICAgICBNYWNyb0Fzc2VtYmxl
cjo6cmV2ZXJ0SnVtcFJlcGxhY2VtZW50VG9QYXRjaGFibGVCcmFuY2hQdHJXaXRoUGF0Y2goaW5z
dHJ1Y3Rpb25TdGFydCwgYWRkcmVzcywgdmFsdWUpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2Fzc2VtYmxlci9YODZBc3NlbWJsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYXNzZW1ibGVyL1g4NkFzc2VtYmxlci5oCShyZXZpc2lvbiAxMzUyMTYpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1g4NkFzc2VtYmxlci5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xOTAzLDYgKzE5MDMsMjMgQEAgcHVibGljOgogICAgIH0KICNlbmRpZgogICAgIAor
ICAgIHN0YXRpYyB2b2lkIHJldmVydEp1bXBUb19jbXBsX2lyX2ZvcmNlMzIodm9pZCogaW5zdHJ1
Y3Rpb25TdGFydCwgaW50MzJfdCBpbW0sIFJlZ2lzdGVySUQgZHN0KQorICAgIHsKKyAgICAgICAg
Y29uc3QgaW50IG9wY29kZUJ5dGVzID0gMTsKKyAgICAgICAgY29uc3QgaW50IG1vZFJNQnl0ZXMg
PSAxOworICAgICAgICBBU1NFUlQob3Bjb2RlQnl0ZXMgKyBtb2RSTUJ5dGVzIDw9IG1heEp1bXBS
ZXBsYWNlbWVudFNpemUoKSk7CisgICAgICAgIHVpbnQ4X3QqIHB0ciA9IHJlaW50ZXJwcmV0X2Nh
c3Q8dWludDhfdCo+KGluc3RydWN0aW9uU3RhcnQpOworICAgICAgICBwdHJbMF0gPSBPUF9HUk9V
UDFfRXZJejsKKyAgICAgICAgcHRyWzFdID0gKFg4Nkluc3RydWN0aW9uRm9ybWF0dGVyOjpNb2RS
bVJlZ2lzdGVyIDw8IDYpIHwgKEdST1VQMV9PUF9DTVAgPDwgMykgfCBkc3Q7CisgICAgICAgIHVu
aW9uIHsKKyAgICAgICAgICAgIHVpbnQzMl90IGFzV29yZDsKKyAgICAgICAgICAgIHVpbnQ4X3Qg
YXNCeXRlc1s0XTsKKyAgICAgICAgfSB1OworICAgICAgICB1LmFzV29yZCA9IGltbTsKKyAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gb3Bjb2RlQnl0ZXMgKyBtb2RSTUJ5dGVzOyBpIDwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KG1heEp1bXBSZXBsYWNlbWVudFNpemUoKSk7ICsraSkKKyAgICAgICAg
ICAgIHB0cltpXSA9IHUuYXNCeXRlc1tpIC0gb3Bjb2RlQnl0ZXMgLSBtb2RSTUJ5dGVzXTsKKyAg
ICB9CisgICAgCiAgICAgc3RhdGljIHZvaWQgcmV2ZXJ0SnVtcFRvX2NtcGxfaW1fZm9yY2UzMih2
b2lkKiBpbnN0cnVjdGlvblN0YXJ0LCBpbnQzMl90IGltbSwgaW50IG9mZnNldCwgUmVnaXN0ZXJJ
RCBkc3QpCiAgICAgewogICAgICAgICBBU1NFUlRfVU5VU0VEKG9mZnNldCwgIW9mZnNldCk7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmNw
cAkocmV2aXNpb24gMTM1MjE2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nh
bGxMaW5rSW5mby5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3LDYgKzM3LDcgQEAgdm9pZCBDYWxs
TGlua0luZm86OnVubGluayhKU0dsb2JhbERhdGEmIAogewogICAgIEFTU0VSVChpc0xpbmtlZCgp
KTsKICAgICAKKyAgICByZXBhdGNoQnVmZmVyLnJldmVydEp1bXBSZXBsYWNlbWVudFRvQnJhbmNo
UHRyV2l0aFBhdGNoKFJlcGF0Y2hCdWZmZXI6OnN0YXJ0T2ZCcmFuY2hQdHJXaXRoUGF0Y2hPblJl
Z2lzdGVyKGhvdFBhdGhCZWdpbiksIHN0YXRpY19jYXN0PE1hY3JvQXNzZW1ibGVyOjpSZWdpc3Rl
cklEPihjYWxsZWVHUFIpLCAwKTsKICAgICBpZiAoaXNERkcpIHsKICNpZiBFTkFCTEUoREZHX0pJ
VCkKICAgICAgICAgcmVwYXRjaEJ1ZmZlci5yZWxpbmsoY2FsbFJldHVybkxvY2F0aW9uLCAoY2Fs
bFR5cGUgPT0gQ29uc3RydWN0ID8gZ2xvYmFsRGF0YS5nZXRDVElTdHViKERGRzo6bGlua0NvbnN0
cnVjdFRodW5rR2VuZXJhdG9yKSA6IGdsb2JhbERhdGEuZ2V0Q1RJU3R1YihERkc6OmxpbmtDYWxs
VGh1bmtHZW5lcmF0b3IpKS5jb2RlKCkpOwpAQCAtNDcsNiArNDgsNyBAQCB2b2lkIENhbGxMaW5r
SW5mbzo6dW5saW5rKEpTR2xvYmFsRGF0YSYgCiAgICAgICAgIHJlcGF0Y2hCdWZmZXIucmVsaW5r
KGNhbGxSZXR1cm5Mb2NhdGlvbiwgY2FsbFR5cGUgPT0gQ29uc3RydWN0ID8gZ2xvYmFsRGF0YS5q
aXRTdHVicy0+Y3RpVmlydHVhbENvbnN0cnVjdExpbmsoKSA6IGdsb2JhbERhdGEuaml0U3R1YnMt
PmN0aVZpcnR1YWxDYWxsTGluaygpKTsKICAgICBoYXNTZWVuU2hvdWxkUmVwYXRjaCA9IGZhbHNl
OwogICAgIGNhbGxlZS5jbGVhcigpOworICAgIHN0dWIuY2xlYXIoKTsKIAogICAgIC8vIEl0IHdp
bGwgYmUgb24gYSBsaXN0IGlmIHRoZSBjYWxsZWUgaGFzIGEgY29kZSBibG9jay4KICAgICBpZiAo
aXNPbkxpc3QoKSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlu
a0luZm8uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2Fs
bExpbmtJbmZvLmgJKHJldmlzaW9uIDEzNTIxNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9DYWxsTGlua0luZm8uaAkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsNyBAQAog
I2lmbmRlZiBDYWxsTGlua0luZm9faAogI2RlZmluZSBDYWxsTGlua0luZm9faAogCisjaW5jbHVk
ZSAiQ2xvc3VyZUNhbGxTdHViUm91dGluZS5oIgogI2luY2x1ZGUgIkNvZGVMb2NhdGlvbi5oIgog
I2luY2x1ZGUgIkpJVFdyaXRlQmFycmllci5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKQEAg
LTcwLDEyICs3MSwxNCBAQCBzdHJ1Y3QgQ2FsbExpbmtJbmZvIDogcHVibGljIEJhc2ljUmF3U2Vu
CiAgICAgQ29kZUxvY2F0aW9uTmVhckNhbGwgaG90UGF0aE90aGVyOwogICAgIEpJVFdyaXRlQmFy
cmllcjxKU0Z1bmN0aW9uPiBjYWxsZWU7CiAgICAgV3JpdGVCYXJyaWVyPEpTRnVuY3Rpb24+IGxh
c3RTZWVuQ2FsbGVlOworICAgIFJlZlB0cjxDbG9zdXJlQ2FsbFN0dWJSb3V0aW5lPiBzdHViOwog
ICAgIGJvb2wgaGFzU2VlblNob3VsZFJlcGF0Y2ggOiAxOwogICAgIGJvb2wgaXNERkcgOiAxOwog
ICAgIENhbGxUeXBlIGNhbGxUeXBlIDogNjsKLSAgICB1bnNpZ25lZCBieXRlY29kZUluZGV4Owor
ICAgIHVuc2lnbmVkIGNhbGxlZUdQUiA6IDg7CisgICAgQ29kZU9yaWdpbiBjb2RlT3JpZ2luOwog
Ci0gICAgYm9vbCBpc0xpbmtlZCgpIHsgcmV0dXJuIGNhbGxlZTsgfQorICAgIGJvb2wgaXNMaW5r
ZWQoKSB7IHJldHVybiBzdHViIHx8IGNhbGxlZTsgfQogICAgIHZvaWQgdW5saW5rKEpTR2xvYmFs
RGF0YSYsIFJlcGF0Y2hCdWZmZXImKTsKIAogICAgIGJvb2wgc2Vlbk9uY2UoKQpAQCAtOTYsNyAr
OTksNyBAQCBpbmxpbmUgdm9pZCogZ2V0Q2FsbExpbmtJbmZvUmV0dXJuTG9jYXRpCiAKIGlubGlu
ZSB1bnNpZ25lZCBnZXRDYWxsTGlua0luZm9CeXRlY29kZUluZGV4KENhbGxMaW5rSW5mbyogY2Fs
bExpbmtJbmZvKQogewotICAgIHJldHVybiBjYWxsTGlua0luZm8tPmJ5dGVjb2RlSW5kZXg7Cisg
ICAgcmV0dXJuIGNhbGxMaW5rSW5mby0+Y29kZU9yaWdpbi5ieXRlY29kZUluZGV4OwogfQogI2Vu
ZGlmIC8vIEVOQUJMRShKSVQpCiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9Db2RlQmxvY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9Db2RlQmxvY2suY3BwCShyZXZpc2lvbiAxMzUyMTYpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjE4OCw3ICsy
MTg4LDcgQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmFsaXplVW5jb25kaXRpb25hbGx5KAogICAgIC8v
IENoZWNrIGlmIHdlJ3JlIG5vdCBsaXZlLiBJZiB3ZSBhcmUsIHRoZW4gamV0dGlzb24uCiAgICAg
aWYgKCEoc2hvdWxkSW1tZWRpYXRlbHlBc3N1bWVMaXZlbmVzc0R1cmluZ1NjYW4oKSB8fCBtX2Rm
Z0RhdGEtPmxpdmVuZXNzSGFzQmVlblByb3ZlZCkpIHsKICAgICAgICAgaWYgKHZlcmJvc2VVbmxp
bmtpbmcpCi0gICAgICAgICAgICBkYXRhTG9nKCJDb2RlIGJsb2NrICVwIGhhcyBkZWFkIHdlYWsg
cmVmZXJlbmNlcywgamV0dGlzb25pbmcgZHVyaW5nIEdDLlxuIiwgdGhpcyk7CisgICAgICAgICAg
ICBkYXRhTG9nKCJDb2RlIGJsb2NrICVwIChleGVjdXRhYmxlICVwKSBoYXMgZGVhZCB3ZWFrIHJl
ZmVyZW5jZXMsIGpldHRpc29uaW5nIGR1cmluZyBHQy5cbiIsIHRoaXMsIG93bmVyRXhlY3V0YWJs
ZSgpKTsKIAogICAgICAgICAvLyBNYWtlIHN1cmUgdGhhdCB0aGUgYmFzZWxpbmUgSklUIGtub3dz
IHRoYXQgaXQgc2hvdWxkIHJlLXdhcm0tdXAgYmVmb3JlCiAgICAgICAgIC8vIG9wdGltaXppbmcu
CkBAIC0yMjQ3LDEwICsyMjQ3LDE5IEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5hbGl6ZVVuY29uZGl0
aW9uYWxseSgKICAgICBpZiAoISFnZXRKSVRDb2RlKCkpIHsKICAgICAgICAgUmVwYXRjaEJ1ZmZl
ciByZXBhdGNoQnVmZmVyKHRoaXMpOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
bnVtYmVyT2ZDYWxsTGlua0luZm9zKCk7ICsraSkgewotICAgICAgICAgICAgaWYgKGNhbGxMaW5r
SW5mbyhpKS5pc0xpbmtlZCgpICYmICFIZWFwOjppc01hcmtlZChjYWxsTGlua0luZm8oaSkuY2Fs
bGVlLmdldCgpKSkgewotICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlVW5saW5raW5nKQotICAg
ICAgICAgICAgICAgICAgICBkYXRhTG9nKCJDbGVhcmluZyBjYWxsIGZyb20gJXAgdG8gJXAuXG4i
LCB0aGlzLCBjYWxsTGlua0luZm8oaSkuY2FsbGVlLmdldCgpKTsKLSAgICAgICAgICAgICAgICBj
YWxsTGlua0luZm8oaSkudW5saW5rKCptX2dsb2JhbERhdGEsIHJlcGF0Y2hCdWZmZXIpOworICAg
ICAgICAgICAgaWYgKGNhbGxMaW5rSW5mbyhpKS5pc0xpbmtlZCgpKSB7CisgICAgICAgICAgICAg
ICAgaWYgKENsb3N1cmVDYWxsU3R1YlJvdXRpbmUqIHN0dWIgPSBjYWxsTGlua0luZm8oaSkuc3R1
Yi5nZXQoKSkgeworICAgICAgICAgICAgICAgICAgICBpZiAoIUhlYXA6OmlzTWFya2VkKHN0dWIt
PnN0cnVjdHVyZSgpKQorICAgICAgICAgICAgICAgICAgICAgICAgfHwgIUhlYXA6OmlzTWFya2Vk
KHN0dWItPmV4ZWN1dGFibGUoKSkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2ZXJi
b3NlVW5saW5raW5nKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIkNsZWFy
aW5nIGNsb3N1cmUgY2FsbCBmcm9tICVwIHRvICVwLCBzdHViIHJvdXRpbmUgJXAuXG4iLCB0aGlz
LCBzdHViLT5leGVjdXRhYmxlKCksIHN0dWIpOworICAgICAgICAgICAgICAgICAgICAgICAgY2Fs
bExpbmtJbmZvKGkpLnVubGluaygqbV9nbG9iYWxEYXRhLCByZXBhdGNoQnVmZmVyKTsKKyAgICAg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoIUhlYXA6OmlzTWFy
a2VkKGNhbGxMaW5rSW5mbyhpKS5jYWxsZWUuZ2V0KCkpKSB7CisgICAgICAgICAgICAgICAgICAg
IGlmICh2ZXJib3NlVW5saW5raW5nKQorICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygi
Q2xlYXJpbmcgY2FsbCBmcm9tICVwIHRvICVwLlxuIiwgdGhpcywgY2FsbExpbmtJbmZvKGkpLmNh
bGxlZS5nZXQoKSk7CisgICAgICAgICAgICAgICAgICAgIGNhbGxMaW5rSW5mbyhpKS51bmxpbmso
Km1fZ2xvYmFsRGF0YSwgcmVwYXRjaEJ1ZmZlcik7CisgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgfQogICAgICAgICAgICAgaWYgKCEhY2FsbExpbmtJbmZvKGkpLmxhc3RTZWVuQ2FsbGVl
CiAgICAgICAgICAgICAgICAgJiYgIUhlYXA6OmlzTWFya2VkKGNhbGxMaW5rSW5mbyhpKS5sYXN0
U2VlbkNhbGxlZS5nZXQoKSkpCkBAIC0yNjA1LDYgKzI2MTQsMzUgQEAgSW5zdHJ1Y3Rpb24qIENv
ZGVCbG9jazo6YWRqdXN0UENJZkF0Q2FsbAogfQogI2VuZGlmIC8vIEVOQUJMRShMTElOVCkKIAor
I2lmIEVOQUJMRShKSVQpCitDbG9zdXJlQ2FsbFN0dWJSb3V0aW5lKiBDb2RlQmxvY2s6OmZpbmRD
bG9zdXJlQ2FsbEZvclJldHVyblBDKFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcykKK3sK
KyAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX2NhbGxMaW5rSW5mb3Muc2l6ZSgpOyBpLS07KSB7Cisg
ICAgICAgIENhbGxMaW5rSW5mbyYgaW5mbyA9IG1fY2FsbExpbmtJbmZvc1tpXTsKKyAgICAgICAg
aWYgKCFpbmZvLnN0dWIpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgaWYgKCFpbmZv
LnN0dWItPmNvZGUoKS5leGVjdXRhYmxlTWVtb3J5KCktPmNvbnRhaW5zKHJldHVybkFkZHJlc3Mu
dmFsdWUoKSkpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgCisgICAgICAgIHJldHVy
biBpbmZvLnN0dWIuZ2V0KCk7CisgICAgfQorICAgIAorICAgIC8vIFRoZSBzdHViIHJvdXRpbmUg
bWF5IGhhdmUgYmVlbiBqZXR0aXNvbmVkLiBUaGlzIGlzIHJhcmUsIGJ1dCB3ZSBoYXZlIHRvIGhh
bmRsZSBpdC4KKyAgICBjb25zdCBKSVRTdHViUm91dGluZVNldCYgc2V0ID0gbV9nbG9iYWxEYXRh
LT5oZWFwLmppdFN0dWJSb3V0aW5lcygpOworICAgIGZvciAodW5zaWduZWQgaSA9IHNldC5zaXpl
KCk7IGktLTspIHsKKyAgICAgICAgR0NBd2FyZUpJVFN0dWJSb3V0aW5lKiBnZW5lcmljU3R1YiA9
IHNldC5hdChpKTsKKyAgICAgICAgaWYgKCFnZW5lcmljU3R1Yi0+aXNDbG9zdXJlQ2FsbCgpKQor
ICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIENsb3N1cmVDYWxsU3R1YlJvdXRpbmUqIHN0
dWIgPSBzdGF0aWNfY2FzdDxDbG9zdXJlQ2FsbFN0dWJSb3V0aW5lKj4oZ2VuZXJpY1N0dWIpOwor
ICAgICAgICBpZiAoIXN0dWItPmNvZGUoKS5leGVjdXRhYmxlTWVtb3J5KCktPmNvbnRhaW5zKHJl
dHVybkFkZHJlc3MudmFsdWUoKSkpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgcmV0
dXJuIHN0dWI7CisgICAgfQorICAgIAorICAgIHJldHVybiAwOworfQorI2VuZGlmCisKIHVuc2ln
bmVkIENvZGVCbG9jazo6Ynl0ZWNvZGVPZmZzZXQoRXhlY1N0YXRlKiBleGVjLCBSZXR1cm5BZGRy
ZXNzUHRyIHJldHVybkFkZHJlc3MpCiB7CiAgICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwpAQCAtMjY0
Miw3ICsyNjgwLDE2IEBAIHVuc2lnbmVkIENvZGVCbG9jazo6Ynl0ZWNvZGVPZmZzZXQoRXhlY1MK
ICAgICBWZWN0b3I8Q2FsbFJldHVybk9mZnNldFRvQnl0ZWNvZGVPZmZzZXQ+JiBjYWxsSW5kaWNl
cyA9IG1fcmFyZURhdGEtPm1fY2FsbFJldHVybkluZGV4VmVjdG9yOwogICAgIGlmICghY2FsbElu
ZGljZXMuc2l6ZSgpKQogICAgICAgICByZXR1cm4gMTsKLSAgICByZXR1cm4gYmluYXJ5U2VhcmNo
PENhbGxSZXR1cm5PZmZzZXRUb0J5dGVjb2RlT2Zmc2V0LCB1bnNpZ25lZCwgZ2V0Q2FsbFJldHVy
bk9mZnNldD4oY2FsbEluZGljZXMuYmVnaW4oKSwgY2FsbEluZGljZXMuc2l6ZSgpLCBnZXRKSVRD
b2RlKCkub2Zmc2V0T2YocmV0dXJuQWRkcmVzcy52YWx1ZSgpKSktPmJ5dGVjb2RlT2Zmc2V0Owor
ICAgIAorICAgIGlmIChnZXRKSVRDb2RlKCkuZ2V0RXhlY3V0YWJsZU1lbW9yeSgpLT5jb250YWlu
cyhyZXR1cm5BZGRyZXNzLnZhbHVlKCkpKSB7CisgICAgICAgIHVuc2lnbmVkIGNhbGxSZXR1cm5P
ZmZzZXQgPSBnZXRKSVRDb2RlKCkub2Zmc2V0T2YocmV0dXJuQWRkcmVzcy52YWx1ZSgpKTsKKyAg
ICAgICAgQ2FsbFJldHVybk9mZnNldFRvQnl0ZWNvZGVPZmZzZXQqIHJlc3VsdCA9CisgICAgICAg
ICAgICBiaW5hcnlTZWFyY2g8Q2FsbFJldHVybk9mZnNldFRvQnl0ZWNvZGVPZmZzZXQsIHVuc2ln
bmVkLCBnZXRDYWxsUmV0dXJuT2Zmc2V0PihjYWxsSW5kaWNlcy5iZWdpbigpLCBjYWxsSW5kaWNl
cy5zaXplKCksIGNhbGxSZXR1cm5PZmZzZXQpOworICAgICAgICBBU1NFUlQocmVzdWx0LT5jYWxs
UmV0dXJuT2Zmc2V0ID09IGNhbGxSZXR1cm5PZmZzZXQpOworICAgICAgICByZXR1cm4gcmVzdWx0
LT5ieXRlY29kZU9mZnNldDsKKyAgICB9CisKKyAgICByZXR1cm4gZmluZENsb3N1cmVDYWxsRm9y
UmV0dXJuUEMocmV0dXJuQWRkcmVzcyktPmNvZGVPcmlnaW4oKS5ieXRlY29kZUluZGV4OwogI2Vu
ZGlmIC8vIEVOQUJMRShKSVQpCiAKICNpZiAhRU5BQkxFKExMSU5UKSAmJiAhRU5BQkxFKEpJVCkK
QEAgLTI2NTAsNiArMjY5NywyNCBAQCB1bnNpZ25lZCBDb2RlQmxvY2s6OmJ5dGVjb2RlT2Zmc2V0
KEV4ZWNTCiAjZW5kaWYKIH0KIAorYm9vbCBDb2RlQmxvY2s6OmNvZGVPcmlnaW5Gb3JSZXR1cm4o
UmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzLCBDb2RlT3JpZ2luJiBjb2RlT3JpZ2luKQor
eworICAgIGlmICghaGFzQ29kZU9yaWdpbnMoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisg
ICAgaWYgKCFnZXRKSVRDb2RlKCkuZ2V0RXhlY3V0YWJsZU1lbW9yeSgpLT5jb250YWlucyhyZXR1
cm5BZGRyZXNzLnZhbHVlKCkpKSB7CisgICAgICAgIGNvZGVPcmlnaW4gPSBmaW5kQ2xvc3VyZUNh
bGxGb3JSZXR1cm5QQyhyZXR1cm5BZGRyZXNzKS0+Y29kZU9yaWdpbigpOworICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICB9CisgICAgCisgICAgdW5zaWduZWQgb2Zmc2V0ID0gZ2V0SklUQ29kZSgp
Lm9mZnNldE9mKHJldHVybkFkZHJlc3MudmFsdWUoKSk7CisgICAgQ29kZU9yaWdpbkF0Q2FsbFJl
dHVybk9mZnNldCogZW50cnkgPSBiaW5hcnlTZWFyY2g8Q29kZU9yaWdpbkF0Q2FsbFJldHVybk9m
ZnNldCwgdW5zaWduZWQsIGdldENhbGxSZXR1cm5PZmZzZXRGb3JDb2RlT3JpZ2luPihjb2RlT3Jp
Z2lucygpLmJlZ2luKCksIGNvZGVPcmlnaW5zKCkuc2l6ZSgpLCBvZmZzZXQsIFdURjo6S2V5TXVz
dE5vdEJlUHJlc2VudEluQXJyYXkpOworICAgIGlmIChlbnRyeS0+Y2FsbFJldHVybk9mZnNldCAh
PSBvZmZzZXQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBjb2RlT3JpZ2luID0gZW50cnkt
PmNvZGVPcmlnaW47CisgICAgcmV0dXJuIHRydWU7Cit9CisKIHZvaWQgQ29kZUJsb2NrOjpjbGVh
ckV2YWxDYWNoZSgpCiB7CiAgICAgaWYgKCEhbV9hbHRlcm5hdGl2ZSkKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgJKHJldmlzaW9uIDEzNTIxNikKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAkod29ya2luZyBjb3B5
KQpAQCAtMjQ1LDYgKzI0NSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAKICAgICAgICAg
Q2FsbExpbmtJbmZvJiBnZXRDYWxsTGlua0luZm8odW5zaWduZWQgYnl0ZWNvZGVJbmRleCkKICAg
ICAgICAgeworICAgICAgICAgICAgQVNTRVJUKEpJVENvZGU6OmlzQmFzZWxpbmVDb2RlKGdldEpJ
VFR5cGUoKSkpOwogICAgICAgICAgICAgcmV0dXJuICooYmluYXJ5U2VhcmNoPENhbGxMaW5rSW5m
bywgdW5zaWduZWQsIGdldENhbGxMaW5rSW5mb0J5dGVjb2RlSW5kZXg+KG1fY2FsbExpbmtJbmZv
cy5iZWdpbigpLCBtX2NhbGxMaW5rSW5mb3Muc2l6ZSgpLCBieXRlY29kZUluZGV4KSk7CiAgICAg
ICAgIH0KICNlbmRpZiAvLyBFTkFCTEUoSklUKQpAQCAtMjc0LDYgKzI3NSwxMSBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgewogICAgICAgICAgICAgbV9pbmNvbWluZ0NhbGxzLnB1c2goaW5j
b21pbmcpOwogICAgICAgICB9CisgICAgICAgIAorICAgICAgICBib29sIGlzSW5jb21pbmdDYWxs
QWxyZWFkeUxpbmtlZChDYWxsTGlua0luZm8qIGluY29taW5nKQorICAgICAgICB7CisgICAgICAg
ICAgICByZXR1cm4gbV9pbmNvbWluZ0NhbGxzLmlzT25MaXN0KGluY29taW5nKTsKKyAgICAgICAg
fQogI2VuZGlmIC8vIEVOQUJMRShKSVQpCiAKICNpZiBFTkFCTEUoTExJTlQpCkBAIC04MTMsMTcg
KzgxOSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgcmV0dXJuIG1fcmFyZURhdGEg
JiYgISFtX3JhcmVEYXRhLT5tX2NvZGVPcmlnaW5zLnNpemUoKTsKICAgICAgICAgfQogICAgICAg
ICAKLSAgICAgICAgYm9vbCBjb2RlT3JpZ2luRm9yUmV0dXJuKFJldHVybkFkZHJlc3NQdHIgcmV0
dXJuQWRkcmVzcywgQ29kZU9yaWdpbiYgY29kZU9yaWdpbikKLSAgICAgICAgewotICAgICAgICAg
ICAgaWYgKCFoYXNDb2RlT3JpZ2lucygpKQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICAgICAgICAgIHVuc2lnbmVkIG9mZnNldCA9IGdldEpJVENvZGUoKS5vZmZzZXRPZihyZXR1
cm5BZGRyZXNzLnZhbHVlKCkpOwotICAgICAgICAgICAgQ29kZU9yaWdpbkF0Q2FsbFJldHVybk9m
ZnNldCogZW50cnkgPSBiaW5hcnlTZWFyY2g8Q29kZU9yaWdpbkF0Q2FsbFJldHVybk9mZnNldCwg
dW5zaWduZWQsIGdldENhbGxSZXR1cm5PZmZzZXRGb3JDb2RlT3JpZ2luPihjb2RlT3JpZ2lucygp
LmJlZ2luKCksIGNvZGVPcmlnaW5zKCkuc2l6ZSgpLCBvZmZzZXQsIFdURjo6S2V5TXVzdE5vdEJl
UHJlc2VudEluQXJyYXkpOwotICAgICAgICAgICAgaWYgKGVudHJ5LT5jYWxsUmV0dXJuT2Zmc2V0
ICE9IG9mZnNldCkKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICBj
b2RlT3JpZ2luID0gZW50cnktPmNvZGVPcmlnaW47Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
LSAgICAgICAgfQorICAgICAgICBib29sIGNvZGVPcmlnaW5Gb3JSZXR1cm4oUmV0dXJuQWRkcmVz
c1B0ciwgQ29kZU9yaWdpbiYpOwogICAgICAgICAKICAgICAgICAgQ29kZU9yaWdpbiBjb2RlT3Jp
Z2luKHVuc2lnbmVkIGluZGV4KQogICAgICAgICB7CkBAIC0xMTg3LDYgKzExODMsMTAgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAKICAgICBwcml2YXRlOgogICAgICAgICBmcmllbmQgY2xhc3MgREZHQ29k
ZUJsb2NrczsKKworI2lmIEVOQUJMRShKSVQpCisgICAgICAgIENsb3N1cmVDYWxsU3R1YlJvdXRp
bmUqIGZpbmRDbG9zdXJlQ2FsbEZvclJldHVyblBDKFJldHVybkFkZHJlc3NQdHIpOworI2VuZGlm
CiAgICAgICAgIAogI2lmIEVOQUJMRShERkdfSklUKQogICAgICAgICB2b2lkIHRhbGx5RnJlcXVl
bnRFeGl0U2l0ZXMoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29t
cGlsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklU
Q29tcGlsZXIuY3BwCShyZXZpc2lvbiAxMzUyMTYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0pJVENvbXBpbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTg4LDExICsxODgsMTIg
QEAgdm9pZCBKSVRDb21waWxlcjo6bGluayhMaW5rQnVmZmVyJiBsaW5rQgogICAgICAgICBDYWxs
TGlua0luZm8mIGluZm8gPSBtX2NvZGVCbG9jay0+Y2FsbExpbmtJbmZvKGkpOwogICAgICAgICBp
bmZvLmNhbGxUeXBlID0gbV9qc0NhbGxzW2ldLm1fY2FsbFR5cGU7CiAgICAgICAgIGluZm8uaXNE
RkcgPSB0cnVlOwotICAgICAgICBpbmZvLmJ5dGVjb2RlSW5kZXggPSBtX2pzQ2FsbHNbaV0ubV9j
b2RlT3JpZ2luLmJ5dGVjb2RlSW5kZXg7CisgICAgICAgIGluZm8uY29kZU9yaWdpbiA9IG1fanND
YWxsc1tpXS5tX2NvZGVPcmlnaW47CiAgICAgICAgIGxpbmtCdWZmZXIubGluayhtX2pzQ2FsbHNb
aV0ubV9zbG93Q2FsbCwgRnVuY3Rpb25QdHIoKG1fZ2xvYmFsRGF0YS0+Z2V0Q1RJU3R1YihpbmZv
LmNhbGxUeXBlID09IENhbGxMaW5rSW5mbzo6Q29uc3RydWN0ID8gbGlua0NvbnN0cnVjdFRodW5r
R2VuZXJhdG9yIDogbGlua0NhbGxUaHVua0dlbmVyYXRvcikpLmNvZGUoKS5leGVjdXRhYmxlQWRk
cmVzcygpKSk7CiAgICAgICAgIGluZm8uY2FsbFJldHVybkxvY2F0aW9uID0gbGlua0J1ZmZlci5s
b2NhdGlvbk9mTmVhckNhbGwobV9qc0NhbGxzW2ldLm1fc2xvd0NhbGwpOwogICAgICAgICBpbmZv
LmhvdFBhdGhCZWdpbiA9IGxpbmtCdWZmZXIubG9jYXRpb25PZihtX2pzQ2FsbHNbaV0ubV90YXJn
ZXRUb0NoZWNrKTsKICAgICAgICAgaW5mby5ob3RQYXRoT3RoZXIgPSBsaW5rQnVmZmVyLmxvY2F0
aW9uT2ZOZWFyQ2FsbChtX2pzQ2FsbHNbaV0ubV9mYXN0Q2FsbCk7CisgICAgICAgIGluZm8uY2Fs
bGVlR1BSID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fanNDYWxsc1tpXS5tX2NhbGxlZSk7CiAg
ICAgfQogICAgIAogICAgIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBvc3JFeGl0VGh1bmsgPSBnbG9i
YWxEYXRhKCktPmdldENUSVN0dWIob3NyRXhpdEdlbmVyYXRpb25UaHVua0dlbmVyYXRvcik7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5oCShyZXZpc2lv
biAxMzUyMTYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTM1Nyw5ICszNTcsOSBAQCBwdWJsaWM6CiAgICAgICAgIG1fcHJv
cGVydHlBY2Nlc3Nlcy5hcHBlbmQocmVjb3JkKTsKICAgICB9CiAKLSAgICB2b2lkIGFkZEpTQ2Fs
bChDYWxsIGZhc3RDYWxsLCBDYWxsIHNsb3dDYWxsLCBEYXRhTGFiZWxQdHIgdGFyZ2V0VG9DaGVj
aywgQ2FsbExpbmtJbmZvOjpDYWxsVHlwZSBjYWxsVHlwZSwgQ29kZU9yaWdpbiBjb2RlT3JpZ2lu
KQorICAgIHZvaWQgYWRkSlNDYWxsKENhbGwgZmFzdENhbGwsIENhbGwgc2xvd0NhbGwsIERhdGFM
YWJlbFB0ciB0YXJnZXRUb0NoZWNrLCBDYWxsTGlua0luZm86OkNhbGxUeXBlIGNhbGxUeXBlLCBH
UFJSZWcgY2FsbGVlLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4pCiAgICAgewotICAgICAgICBtX2pz
Q2FsbHMuYXBwZW5kKEpTQ2FsbFJlY29yZChmYXN0Q2FsbCwgc2xvd0NhbGwsIHRhcmdldFRvQ2hl
Y2ssIGNhbGxUeXBlLCBjb2RlT3JpZ2luKSk7CisgICAgICAgIG1fanNDYWxscy5hcHBlbmQoSlND
YWxsUmVjb3JkKGZhc3RDYWxsLCBzbG93Q2FsbCwgdGFyZ2V0VG9DaGVjaywgY2FsbFR5cGUsIGNh
bGxlZSwgY29kZU9yaWdpbikpOwogICAgIH0KICAgICAKICAgICB2b2lkIGFkZFdlYWtSZWZlcmVu
Y2UoSlNDZWxsKiB0YXJnZXQpCkBAIC00NDAsMTEgKzQ0MCwxMiBAQCBwcml2YXRlOgogICAgIFZl
Y3RvcjxDYWxsRXhjZXB0aW9uUmVjb3JkPiBtX2V4Y2VwdGlvbkNoZWNrczsKICAgICAKICAgICBz
dHJ1Y3QgSlNDYWxsUmVjb3JkIHsKLSAgICAgICAgSlNDYWxsUmVjb3JkKENhbGwgZmFzdENhbGws
IENhbGwgc2xvd0NhbGwsIERhdGFMYWJlbFB0ciB0YXJnZXRUb0NoZWNrLCBDYWxsTGlua0luZm86
OkNhbGxUeXBlIGNhbGxUeXBlLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4pCisgICAgICAgIEpTQ2Fs
bFJlY29yZChDYWxsIGZhc3RDYWxsLCBDYWxsIHNsb3dDYWxsLCBEYXRhTGFiZWxQdHIgdGFyZ2V0
VG9DaGVjaywgQ2FsbExpbmtJbmZvOjpDYWxsVHlwZSBjYWxsVHlwZSwgR1BSUmVnIGNhbGxlZSwg
Q29kZU9yaWdpbiBjb2RlT3JpZ2luKQogICAgICAgICAgICAgOiBtX2Zhc3RDYWxsKGZhc3RDYWxs
KQogICAgICAgICAgICAgLCBtX3Nsb3dDYWxsKHNsb3dDYWxsKQogICAgICAgICAgICAgLCBtX3Rh
cmdldFRvQ2hlY2sodGFyZ2V0VG9DaGVjaykKICAgICAgICAgICAgICwgbV9jYWxsVHlwZShjYWxs
VHlwZSkKKyAgICAgICAgICAgICwgbV9jYWxsZWUoY2FsbGVlKQogICAgICAgICAgICAgLCBtX2Nv
ZGVPcmlnaW4oY29kZU9yaWdpbikKICAgICAgICAgewogICAgICAgICB9CkBAIC00NTMsNiArNDU0
LDcgQEAgcHJpdmF0ZToKICAgICAgICAgQ2FsbCBtX3Nsb3dDYWxsOwogICAgICAgICBEYXRhTGFi
ZWxQdHIgbV90YXJnZXRUb0NoZWNrOwogICAgICAgICBDYWxsTGlua0luZm86OkNhbGxUeXBlIG1f
Y2FsbFR5cGU7CisgICAgICAgIEdQUlJlZyBtX2NhbGxlZTsKICAgICAgICAgQ29kZU9yaWdpbiBt
X2NvZGVPcmlnaW47CiAgICAgfTsKICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHT3BlcmF0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdPcGVyYXRpb25zLmNwcAkocmV2aXNpb24gMTM1MjE2KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA2Miwx
NCArMTA2MiwxNCBAQCBjaGFyKiBERkdfT1BFUkFUSU9OIG9wZXJhdGlvbkxpbmtDb25zdHJ1CiAg
ICAgcmV0dXJuIGxpbmtGb3IoZXhlY0NhbGxlZSwgQ29kZUZvckNvbnN0cnVjdCk7CiB9CiAKLWlu
bGluZSBjaGFyKiB2aXJ0dWFsRm9yKEV4ZWNTdGF0ZSogZXhlY0NhbGxlZSwgQ29kZVNwZWNpYWxp
emF0aW9uS2luZCBraW5kKQoraW5saW5lIGNoYXIqIHZpcnR1YWxGb3JXaXRoRnVuY3Rpb24oRXhl
Y1N0YXRlKiBleGVjQ2FsbGVlLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQsIEpTQ2VsbCom
IGNhbGxlZUFzRnVuY3Rpb25DZWxsKQogewogICAgIEV4ZWNTdGF0ZSogZXhlYyA9IGV4ZWNDYWxs
ZWUtPmNhbGxlckZyYW1lKCk7CiAgICAgSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhID0gJmV4ZWMt
Pmdsb2JhbERhdGEoKTsKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKGdsb2JhbERh
dGEsIGV4ZWMpOwogCiAgICAgSlNWYWx1ZSBjYWxsZWVBc1ZhbHVlID0gZXhlY0NhbGxlZS0+Y2Fs
bGVlQXNWYWx1ZSgpOwotICAgIEpTQ2VsbCogY2FsbGVlQXNGdW5jdGlvbkNlbGwgPSBnZXRKU0Z1
bmN0aW9uKGNhbGxlZUFzVmFsdWUpOworICAgIGNhbGxlZUFzRnVuY3Rpb25DZWxsID0gZ2V0SlNG
dW5jdGlvbihjYWxsZWVBc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhbGxlZUFzRnVuY3Rp
b25DZWxsKSkKICAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGhhbmRsZUhv
c3RDYWxsKGV4ZWNDYWxsZWUsIGNhbGxlZUFzVmFsdWUsIGtpbmQpKTsKICAgICAKQEAgLTEwODcs
NiArMTA4Nyw1NiBAQCBpbmxpbmUgY2hhciogdmlydHVhbEZvcihFeGVjU3RhdGUqIGV4ZWNDCiAg
ICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGV4ZWN1dGFibGUtPmdlbmVyYXRlZEpJ
VENvZGVXaXRoQXJpdHlDaGVja0ZvcihraW5kKS5leGVjdXRhYmxlQWRkcmVzcygpKTsKIH0KIAor
aW5saW5lIGNoYXIqIHZpcnR1YWxGb3IoRXhlY1N0YXRlKiBleGVjQ2FsbGVlLCBDb2RlU3BlY2lh
bGl6YXRpb25LaW5kIGtpbmQpCit7CisgICAgSlNDZWxsKiBjYWxsZWVBc0Z1bmN0aW9uQ2VsbEln
bm9yZWQ7CisgICAgcmV0dXJuIHZpcnR1YWxGb3JXaXRoRnVuY3Rpb24oZXhlY0NhbGxlZSwga2lu
ZCwgY2FsbGVlQXNGdW5jdGlvbkNlbGxJZ25vcmVkKTsKK30KKworc3RhdGljIGJvb2wgYXR0ZW1w
dFRvT3B0aW1pemVDbG9zdXJlQ2FsbChFeGVjU3RhdGUqIGV4ZWNDYWxsZWUsIEpTQ2VsbCogY2Fs
bGVlQXNGdW5jdGlvbkNlbGwsIENhbGxMaW5rSW5mbyYgY2FsbExpbmtJbmZvKQoreworICAgIGlm
ICghY2FsbGVlQXNGdW5jdGlvbkNlbGwpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAg
ICBKU0Z1bmN0aW9uKiBjYWxsZWUgPSBqc0Nhc3Q8SlNGdW5jdGlvbio+KGNhbGxlZUFzRnVuY3Rp
b25DZWxsKTsKKyAgICBKU0Z1bmN0aW9uKiBvbGRDYWxsZWUgPSBjYWxsTGlua0luZm8uY2FsbGVl
LmdldCgpOworICAgIAorICAgIGlmICghb2xkQ2FsbGVlCisgICAgICAgIHx8IG9sZENhbGxlZS0+
c3RydWN0dXJlKCkgIT0gY2FsbGVlLT5zdHJ1Y3R1cmUoKQorICAgICAgICB8fCBvbGRDYWxsZWUt
PmV4ZWN1dGFibGUoKSAhPSBjYWxsZWUtPmV4ZWN1dGFibGUoKSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIAorICAgIEFTU0VSVChjYWxsZWUtPmV4ZWN1dGFibGUoKS0+aGFzSklUQ29kZUZv
ckNhbGwoKSk7CisgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIGNvZGVQdHIgPSBjYWxsZWUtPmV4
ZWN1dGFibGUoKS0+Z2VuZXJhdGVkSklUQ29kZUZvckNhbGwoKS5hZGRyZXNzRm9yQ2FsbCgpOwor
ICAgIAorICAgIENvZGVCbG9jayogY29kZUJsb2NrOworICAgIGlmIChjYWxsZWUtPmV4ZWN1dGFi
bGUoKS0+aXNIb3N0RnVuY3Rpb24oKSkKKyAgICAgICAgY29kZUJsb2NrID0gMDsKKyAgICBlbHNl
IHsKKyAgICAgICAgY29kZUJsb2NrID0gJmpzQ2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihjYWxs
ZWUtPmV4ZWN1dGFibGUoKSktPmdlbmVyYXRlZEJ5dGVjb2RlRm9yQ2FsbCgpOworICAgICAgICBp
ZiAoZXhlY0NhbGxlZS0+YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMoKSA8IHN0YXRpY19jYXN0
PHNpemVfdD4oY29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkpKQorICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIH0KKyAgICAKKyAgICBkZmdMaW5rQ2xvc3VyZUNhbGwoCisgICAgICAgIGV4
ZWNDYWxsZWUsIGNhbGxMaW5rSW5mbywgY29kZUJsb2NrLAorICAgICAgICBjYWxsZWUtPnN0cnVj
dHVyZSgpLCBjYWxsZWUtPmV4ZWN1dGFibGUoKSwgY29kZVB0cik7CisgICAgCisgICAgcmV0dXJu
IHRydWU7Cit9CisKK2NoYXIqIERGR19PUEVSQVRJT04gb3BlcmF0aW9uTGlua0Nsb3N1cmVDYWxs
KEV4ZWNTdGF0ZSogZXhlY0NhbGxlZSkKK3sKKyAgICBKU0NlbGwqIGNhbGxlZUFzRnVuY3Rpb25D
ZWxsOworICAgIGNoYXIqIHJlc3VsdCA9IHZpcnR1YWxGb3JXaXRoRnVuY3Rpb24oZXhlY0NhbGxl
ZSwgQ29kZUZvckNhbGwsIGNhbGxlZUFzRnVuY3Rpb25DZWxsKTsKKyAgICBDYWxsTGlua0luZm8m
IGNhbGxMaW5rSW5mbyA9IGV4ZWNDYWxsZWUtPmNhbGxlckZyYW1lKCktPmNvZGVCbG9jaygpLT5n
ZXRDYWxsTGlua0luZm8oZXhlY0NhbGxlZS0+cmV0dXJuUEMoKSk7CisKKyAgICBpZiAoIWF0dGVt
cHRUb09wdGltaXplQ2xvc3VyZUNhbGwoZXhlY0NhbGxlZSwgY2FsbGVlQXNGdW5jdGlvbkNlbGws
IGNhbGxMaW5rSW5mbykpCisgICAgICAgIGRmZ0xpbmtTbG93Rm9yKGV4ZWNDYWxsZWUsIGNhbGxM
aW5rSW5mbywgQ29kZUZvckNhbGwpOworICAgIAorICAgIHJldHVybiByZXN1bHQ7Cit9CisKIGNo
YXIqIERGR19PUEVSQVRJT04gb3BlcmF0aW9uVmlydHVhbENhbGwoRXhlY1N0YXRlKiBleGVjQ2Fs
bGVlKQogeyAgICAKICAgICByZXR1cm4gdmlydHVhbEZvcihleGVjQ2FsbGVlLCBDb2RlRm9yQ2Fs
bCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaAkocmV2
aXNpb24gMTM1MjE2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25z
LmgJKHdvcmtpbmcgY29weSkKQEAgLTE4MSw2ICsxODEsNyBAQCBzaXplX3QgREZHX09QRVJBVElP
TiBvcGVyYXRpb25Db21wYXJlU3RyCiBzaXplX3QgREZHX09QRVJBVElPTiBvcGVyYXRpb25Db21w
YXJlU3RyaWN0RXEoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZE9wMikgV1RGX0lOVEVSTkFMOwogY2hhciogREZHX09QRVJBVElPTiBv
cGVyYXRpb25WaXJ0dWFsQ2FsbChFeGVjU3RhdGUqKSBXVEZfSU5URVJOQUw7CiBjaGFyKiBERkdf
T1BFUkFUSU9OIG9wZXJhdGlvbkxpbmtDYWxsKEV4ZWNTdGF0ZSopIFdURl9JTlRFUk5BTDsKK2No
YXIqIERGR19PUEVSQVRJT04gb3BlcmF0aW9uTGlua0Nsb3N1cmVDYWxsKEV4ZWNTdGF0ZSopIFdU
Rl9JTlRFUk5BTDsKIGNoYXIqIERGR19PUEVSQVRJT04gb3BlcmF0aW9uVmlydHVhbENvbnN0cnVj
dChFeGVjU3RhdGUqKSBXVEZfSU5URVJOQUw7CiBjaGFyKiBERkdfT1BFUkFUSU9OIG9wZXJhdGlv
bkxpbmtDb25zdHJ1Y3QoRXhlY1N0YXRlKikgV1RGX0lOVEVSTkFMOwogSlNDZWxsKiBERkdfT1BF
UkFUSU9OIG9wZXJhdGlvbkNyZWF0ZUFjdGl2YXRpb24oRXhlY1N0YXRlKikgV1RGX0lOVEVSTkFM
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdSZXBhdGNoLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1JlcGF0Y2guY3BwCShyZXZpc2lv
biAxMzUyMTYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1JlcGF0Y2guY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xMTgsNyArMTE4LDcgQEAgc3RhdGljIHZvaWQgcmVwbGFjZVdpdGhK
dW1wKFJlcGF0Y2hCdWZmZQogewogICAgIGlmIChNYWNyb0Fzc2VtYmxlcjo6Y2FuSnVtcFJlcGxh
Y2VQYXRjaGFibGVCcmFuY2hQdHJXaXRoUGF0Y2goKSkgewogICAgICAgICByZXBhdGNoQnVmZmVy
LnJlcGxhY2VXaXRoSnVtcCgKLSAgICAgICAgICAgIFJlcGF0Y2hCdWZmZXI6OnN0YXJ0T2ZQYXRj
aGFibGVCcmFuY2hQdHJXaXRoUGF0Y2goCisgICAgICAgICAgICBSZXBhdGNoQnVmZmVyOjpzdGFy
dE9mUGF0Y2hhYmxlQnJhbmNoUHRyV2l0aFBhdGNoT25BZGRyZXNzKAogICAgICAgICAgICAgICAg
IHN0dWJJbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbi5kYXRhTGFiZWxQdHJBdE9mZnNldCgKICAgICAg
ICAgICAgICAgICAgICAgLShpbnRwdHJfdClzdHViSW5mby5wYXRjaC5kZmcuZGVsdGFDaGVja0lt
bVRvQ2FsbCkpLAogICAgICAgICAgICAgQ29kZUxvY2F0aW9uTGFiZWwodGFyZ2V0KSk7CkBAIC0x
MTEzLDggKzExMTMsMjAgQEAgdm9pZCBkZmdCdWlsZFB1dEJ5SWRMaXN0KEV4ZWNTdGF0ZSogZXhl
YwogICAgICAgICBkZmdSZXBhdGNoQ2FsbChleGVjLT5jb2RlQmxvY2soKSwgc3R1YkluZm8uY2Fs
bFJldHVybkxvY2F0aW9uLCBhcHByb3ByaWF0ZUdlbmVyaWNQdXRCeUlkRnVuY3Rpb24oc2xvdCwg
cHV0S2luZCkpOwogfQogCitzdGF0aWMgdm9pZCBsaW5rU2xvd0ZvcihSZXBhdGNoQnVmZmVyJiBy
ZXBhdGNoQnVmZmVyLCBKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIENhbGxMaW5rSW5mbyYgY2Fs
bExpbmtJbmZvLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpCit7CisgICAgaWYgKGtpbmQg
PT0gQ29kZUZvckNhbGwpIHsKKyAgICAgICAgcmVwYXRjaEJ1ZmZlci5yZWxpbmsoY2FsbExpbmtJ
bmZvLmNhbGxSZXR1cm5Mb2NhdGlvbiwgZ2xvYmFsRGF0YS0+Z2V0Q1RJU3R1Yih2aXJ0dWFsQ2Fs
bFRodW5rR2VuZXJhdG9yKS5jb2RlKCkpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIEFT
U0VSVChraW5kID09IENvZGVGb3JDb25zdHJ1Y3QpOworICAgIHJlcGF0Y2hCdWZmZXIucmVsaW5r
KGNhbGxMaW5rSW5mby5jYWxsUmV0dXJuTG9jYXRpb24sIGdsb2JhbERhdGEtPmdldENUSVN0dWIo
dmlydHVhbENvbnN0cnVjdFRodW5rR2VuZXJhdG9yKS5jb2RlKCkpOworfQorCiB2b2lkIGRmZ0xp
bmtGb3IoRXhlY1N0YXRlKiBleGVjLCBDYWxsTGlua0luZm8mIGNhbGxMaW5rSW5mbywgQ29kZUJs
b2NrKiBjYWxsZWVDb2RlQmxvY2ssIEpTRnVuY3Rpb24qIGNhbGxlZSwgTWFjcm9Bc3NlbWJsZXJD
b2RlUHRyIGNvZGVQdHIsIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkKIHsKKyAgICBBU1NF
UlQoIWNhbGxMaW5rSW5mby5zdHViKTsKKyAgICAKICAgICBDb2RlQmxvY2sqIGNhbGxlckNvZGVC
bG9jayA9IGV4ZWMtPmNhbGxlckZyYW1lKCktPmNvZGVCbG9jaygpOwogICAgIEpTR2xvYmFsRGF0
YSogZ2xvYmFsRGF0YSA9IGNhbGxlckNvZGVCbG9jay0+Z2xvYmFsRGF0YSgpOwogICAgIApAQCAt
MTEyOSwxMSArMTE0MSwxMTAgQEAgdm9pZCBkZmdMaW5rRm9yKEV4ZWNTdGF0ZSogZXhlYywgQ2Fs
bExpbgogICAgICAgICBjYWxsZWVDb2RlQmxvY2stPmxpbmtJbmNvbWluZ0NhbGwoJmNhbGxMaW5r
SW5mbyk7CiAgICAgCiAgICAgaWYgKGtpbmQgPT0gQ29kZUZvckNhbGwpIHsKLSAgICAgICAgcmVw
YXRjaEJ1ZmZlci5yZWxpbmsoY2FsbExpbmtJbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbiwgZ2xvYmFs
RGF0YS0+Z2V0Q1RJU3R1Yih2aXJ0dWFsQ2FsbFRodW5rR2VuZXJhdG9yKS5jb2RlKCkpOworICAg
ICAgICByZXBhdGNoQnVmZmVyLnJlbGluayhjYWxsTGlua0luZm8uY2FsbFJldHVybkxvY2F0aW9u
LCBnbG9iYWxEYXRhLT5nZXRDVElTdHViKGxpbmtDbG9zdXJlQ2FsbFRodW5rR2VuZXJhdG9yKS5j
b2RlKCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQorICAgIAogICAgIEFTU0VSVChraW5kID09
IENvZGVGb3JDb25zdHJ1Y3QpOwotICAgIHJlcGF0Y2hCdWZmZXIucmVsaW5rKGNhbGxMaW5rSW5m
by5jYWxsUmV0dXJuTG9jYXRpb24sIGdsb2JhbERhdGEtPmdldENUSVN0dWIodmlydHVhbENvbnN0
cnVjdFRodW5rR2VuZXJhdG9yKS5jb2RlKCkpOworICAgIGxpbmtTbG93Rm9yKHJlcGF0Y2hCdWZm
ZXIsIGdsb2JhbERhdGEsIGNhbGxMaW5rSW5mbywgQ29kZUZvckNvbnN0cnVjdCk7Cit9CisKK3Zv
aWQgZGZnTGlua1Nsb3dGb3IoRXhlY1N0YXRlKiBleGVjLCBDYWxsTGlua0luZm8mIGNhbGxMaW5r
SW5mbywgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKQoreworICAgIENvZGVCbG9jayogY2Fs
bGVyQ29kZUJsb2NrID0gZXhlYy0+Y2FsbGVyRnJhbWUoKS0+Y29kZUJsb2NrKCk7CisgICAgSlNH
bG9iYWxEYXRhKiBnbG9iYWxEYXRhID0gY2FsbGVyQ29kZUJsb2NrLT5nbG9iYWxEYXRhKCk7Cisg
ICAgCisgICAgUmVwYXRjaEJ1ZmZlciByZXBhdGNoQnVmZmVyKGNhbGxlckNvZGVCbG9jayk7Cisg
ICAgCisgICAgbGlua1Nsb3dGb3IocmVwYXRjaEJ1ZmZlciwgZ2xvYmFsRGF0YSwgY2FsbExpbmtJ
bmZvLCBraW5kKTsKK30KKwordm9pZCBkZmdMaW5rQ2xvc3VyZUNhbGwoRXhlY1N0YXRlKiBleGVj
LCBDYWxsTGlua0luZm8mIGNhbGxMaW5rSW5mbywgQ29kZUJsb2NrKiBjYWxsZWVDb2RlQmxvY2ss
IFN0cnVjdHVyZSogc3RydWN0dXJlLCBFeGVjdXRhYmxlQmFzZSogZXhlY3V0YWJsZSwgTWFjcm9B
c3NlbWJsZXJDb2RlUHRyIGNvZGVQdHIpCit7CisgICAgQVNTRVJUKCFjYWxsTGlua0luZm8uc3R1
Yik7CisgICAgCisgICAgQ29kZUJsb2NrKiBjYWxsZXJDb2RlQmxvY2sgPSBleGVjLT5jYWxsZXJG
cmFtZSgpLT5jb2RlQmxvY2soKTsKKyAgICBKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEgPSBjYWxs
ZXJDb2RlQmxvY2stPmdsb2JhbERhdGEoKTsKKyAgICAKKyAgICBHUFJSZWcgY2FsbGVlR1BSID0g
c3RhdGljX2Nhc3Q8R1BSUmVnPihjYWxsTGlua0luZm8uY2FsbGVlR1BSKTsKKyAgICAKKyAgICBD
Q2FsbEhlbHBlcnMgc3R1YkppdChnbG9iYWxEYXRhLCBjYWxsZXJDb2RlQmxvY2spOworICAgIAor
ICAgIENDYWxsSGVscGVyczo6SnVtcExpc3Qgc2xvd1BhdGg7CisgICAgCisjaWYgVVNFKEpTVkFM
VUU2NCkKKyAgICBzbG93UGF0aC5hcHBlbmQoCisgICAgICAgIHN0dWJKaXQuYnJhbmNoVGVzdDY0
KAorICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpOb25aZXJvLCBjYWxsZWVHUFIsIEdQUkluZm86
OnRhZ01hc2tSZWdpc3RlcikpOworI2Vsc2UKKyAgICAvLyBXZSB3b3VsZCBoYXZlIGFscmVhZHkg
Y2hlY2tlZCB0aGF0IHRoZSBjYWxsZWUgaXMgYSBjZWxsLgorI2VuZGlmCisgICAgCisgICAgc2xv
d1BhdGguYXBwZW5kKAorICAgICAgICBzdHViSml0LmJyYW5jaFB0cigKKyAgICAgICAgICAgIEND
YWxsSGVscGVyczo6Tm90RXF1YWwsCisgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Mo
Y2FsbGVlR1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwKKyAgICAgICAgICAgIENDYWxs
SGVscGVyczo6VHJ1c3RlZEltbVB0cihzdHJ1Y3R1cmUpKSk7CisgICAgCisgICAgc2xvd1BhdGgu
YXBwZW5kKAorICAgICAgICBzdHViSml0LmJyYW5jaFB0cigKKyAgICAgICAgICAgIENDYWxsSGVs
cGVyczo6Tm90RXF1YWwsCisgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoY2FsbGVl
R1BSLCBKU0Z1bmN0aW9uOjpvZmZzZXRPZkV4ZWN1dGFibGUoKSksCisgICAgICAgICAgICBDQ2Fs
bEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoZXhlY3V0YWJsZSkpKTsKKyAgICAKKyAgICBzdHViSml0
LmxvYWRQdHIoCisgICAgICAgIENDYWxsSGVscGVyczo6QWRkcmVzcyhjYWxsZWVHUFIsIEpTRnVu
Y3Rpb246Om9mZnNldE9mU2NvcGVDaGFpbigpKSwKKyAgICAgICAgR1BSSW5mbzo6cmV0dXJuVmFs
dWVHUFIpOworCisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICBzdHViSml0LnN0b3JlNjQoCisgICAg
ICAgIEdQUkluZm86OnJldHVyblZhbHVlR1BSLAorICAgICAgICBDQ2FsbEhlbHBlcnM6OkFkZHJl
c3MoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIHN0YXRpY19jYXN0PHB0cmRpZmZfdD4oc2l6
ZW9mKFJlZ2lzdGVyKSAqIEpTU3RhY2s6OlNjb3BlQ2hhaW4pKSk7CisjZWxzZQorICAgIHN0dWJK
aXQuc3RvcmVQdHIoCisgICAgICAgIEdQUkluZm86OnJldHVyblZhbHVlR1BSLAorICAgICAgICBD
Q2FsbEhlbHBlcnM6OkFkZHJlc3MoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIHN0YXRpY19j
YXN0PHB0cmRpZmZfdD4oc2l6ZW9mKFJlZ2lzdGVyKSAqIEpTU3RhY2s6OlNjb3BlQ2hhaW4pICsg
T0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy5wYXlsb2FkKSkp
OworICAgIHN0dWJKaXQuc3RvcmUzMigKKyAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1t
MzIoSlNWYWx1ZTo6Q2VsbFRhZyksCisgICAgICAgIENDYWxsSGVscGVyczo6QWRkcmVzcyhHUFJJ
bmZvOjpjYWxsRnJhbWVSZWdpc3Rlciwgc3RhdGljX2Nhc3Q8cHRyZGlmZl90PihzaXplb2YoUmVn
aXN0ZXIpICogSlNTdGFjazo6U2NvcGVDaGFpbikgKyBPQkpFQ1RfT0ZGU0VUT0YoRW5jb2RlZFZh
bHVlRGVzY3JpcHRvciwgYXNCaXRzLnRhZykpKTsKKyNlbmRpZgorICAgIAorICAgIEpJVENvbXBp
bGVyOjpDYWxsIGNhbGwgPSBzdHViSml0Lm5lYXJDYWxsKCk7CisgICAgSklUQ29tcGlsZXI6Okp1
bXAgZG9uZSA9IHN0dWJKaXQuanVtcCgpOworICAgIAorICAgIHNsb3dQYXRoLmxpbmsoJnN0dWJK
aXQpOworICAgIHN0dWJKaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoY2FsbExp
bmtJbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbi5leGVjdXRhYmxlQWRkcmVzcygpKSwgR1BSSW5mbzo6
bm9uQXJnR1BSMik7CisgICAgc3R1YkppdC5yZXN0b3JlUmV0dXJuQWRkcmVzc0JlZm9yZVJldHVy
bihHUFJJbmZvOjpub25BcmdHUFIyKTsKKyAgICBzdHViSml0Lm1vdmUoY2FsbGVlR1BSLCBHUFJJ
bmZvOjpub25BcmdHUFIwKTsKKyNpZiBVU0UoSlNWQUxVRTMyXzY0KQorICAgIHN0dWJKaXQubW92
ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSwgR1BSSW5mbzo6
bm9uQXJnR1BSMSk7CisjZW5kaWYKKyAgICBKSVRDb21waWxlcjo6SnVtcCBzbG93ID0gc3R1Ykpp
dC5qdW1wKCk7CisgICAgCisgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcigqZ2xvYmFsRGF0YSwg
JnN0dWJKaXQsIGNhbGxlckNvZGVCbG9jayk7CisgICAgCisgICAgcGF0Y2hCdWZmZXIubGluayhj
YWxsLCBGdW5jdGlvblB0cihjb2RlUHRyLmV4ZWN1dGFibGVBZGRyZXNzKCkpKTsKKyAgICBwYXRj
aEJ1ZmZlci5saW5rKGRvbmUsIGNhbGxMaW5rSW5mby5jYWxsUmV0dXJuTG9jYXRpb24ubGFiZWxB
dE9mZnNldCgwKSk7CisgICAgcGF0Y2hCdWZmZXIubGluayhzbG93LCBDb2RlTG9jYXRpb25MYWJl
bChnbG9iYWxEYXRhLT5nZXRDVElTdHViKHZpcnR1YWxDYWxsVGh1bmtHZW5lcmF0b3IpLmNvZGUo
KSkpOworICAgIAorICAgIFJlZlB0cjxDbG9zdXJlQ2FsbFN0dWJSb3V0aW5lPiBzdHViUm91dGlu
ZSA9IGFkb3B0UmVmKG5ldyBDbG9zdXJlQ2FsbFN0dWJSb3V0aW5lKAorICAgICAgICBGSU5BTEla
RV9ERkdfQ09ERSgKKyAgICAgICAgICAgIHBhdGNoQnVmZmVyLAorICAgICAgICAgICAgKCJERkcg
Y2xvc3VyZSBjYWxsIHN0dWIgZm9yIENvZGVCbG9jayAlcCwgcmV0dXJuIHBvaW50ICVwLCB0YXJn
ZXQgJXAgKENvZGVCbG9jayAlcCkiLAorICAgICAgICAgICAgICAgIGNhbGxlckNvZGVCbG9jaywg
Y2FsbExpbmtJbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbi5sYWJlbEF0T2Zmc2V0KDApLmV4ZWN1dGFi
bGVBZGRyZXNzKCksCisgICAgICAgICAgICAgICAgY29kZVB0ci5leGVjdXRhYmxlQWRkcmVzcygp
LCBjYWxsZWVDb2RlQmxvY2spKSwKKyAgICAgICAgKmdsb2JhbERhdGEsIGNhbGxlckNvZGVCbG9j
ay0+b3duZXJFeGVjdXRhYmxlKCksIHN0cnVjdHVyZSwgZXhlY3V0YWJsZSwgY2FsbExpbmtJbmZv
LmNvZGVPcmlnaW4pKTsKKyAgICAKKyAgICBSZXBhdGNoQnVmZmVyIHJlcGF0Y2hCdWZmZXIoY2Fs
bGVyQ29kZUJsb2NrKTsKKyAgICAKKyAgICByZXBhdGNoQnVmZmVyLnJlcGxhY2VXaXRoSnVtcCgK
KyAgICAgICAgUmVwYXRjaEJ1ZmZlcjo6c3RhcnRPZkJyYW5jaFB0cldpdGhQYXRjaE9uUmVnaXN0
ZXIoY2FsbExpbmtJbmZvLmhvdFBhdGhCZWdpbiksCisgICAgICAgIENvZGVMb2NhdGlvbkxhYmVs
KHN0dWJSb3V0aW5lLT5jb2RlKCkuY29kZSgpKSk7CisgICAgbGlua1Nsb3dGb3IocmVwYXRjaEJ1
ZmZlciwgZ2xvYmFsRGF0YSwgY2FsbExpbmtJbmZvLCBDb2RlRm9yQ2FsbCk7CisgICAgCisgICAg
Y2FsbExpbmtJbmZvLnN0dWIgPSBzdHViUm91dGluZS5yZWxlYXNlKCk7CisgICAgCisgICAgQVNT
RVJUKCFjYWxsZWVDb2RlQmxvY2sgfHwgY2FsbGVlQ29kZUJsb2NrLT5pc0luY29taW5nQ2FsbEFs
cmVhZHlMaW5rZWQoJmNhbGxMaW5rSW5mbykpOwogfQogCiB2b2lkIGRmZ1Jlc2V0R2V0QnlJRChS
ZXBhdGNoQnVmZmVyJiByZXBhdGNoQnVmZmVyLCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8p
CkBAIC0xMTQyLDcgKzEyNTMsNyBAQCB2b2lkIGRmZ1Jlc2V0R2V0QnlJRChSZXBhdGNoQnVmZmVy
JiByZXBhCiAgICAgQ29kZUxvY2F0aW9uRGF0YUxhYmVsUHRyIHN0cnVjdHVyZUxhYmVsID0gc3R1
YkluZm8uY2FsbFJldHVybkxvY2F0aW9uLmRhdGFMYWJlbFB0ckF0T2Zmc2V0KC0oaW50cHRyX3Qp
c3R1YkluZm8ucGF0Y2guZGZnLmRlbHRhQ2hlY2tJbW1Ub0NhbGwpOwogICAgIGlmIChNYWNyb0Fz
c2VtYmxlcjo6Y2FuSnVtcFJlcGxhY2VQYXRjaGFibGVCcmFuY2hQdHJXaXRoUGF0Y2goKSkgewog
ICAgICAgICByZXBhdGNoQnVmZmVyLnJldmVydEp1bXBSZXBsYWNlbWVudFRvUGF0Y2hhYmxlQnJh
bmNoUHRyV2l0aFBhdGNoKAotICAgICAgICAgICAgUmVwYXRjaEJ1ZmZlcjo6c3RhcnRPZlBhdGNo
YWJsZUJyYW5jaFB0cldpdGhQYXRjaChzdHJ1Y3R1cmVMYWJlbCksCisgICAgICAgICAgICBSZXBh
dGNoQnVmZmVyOjpzdGFydE9mUGF0Y2hhYmxlQnJhbmNoUHRyV2l0aFBhdGNoT25BZGRyZXNzKHN0
cnVjdHVyZUxhYmVsKSwKICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKAogICAg
ICAgICAgICAgICAgIHN0YXRpY19jYXN0PE1hY3JvQXNzZW1ibGVyOjpSZWdpc3RlcklEPihzdHVi
SW5mby5wYXRjaC5kZmcuYmFzZUdQUiksCiAgICAgICAgICAgICAgICAgSlNDZWxsOjpzdHJ1Y3R1
cmVPZmZzZXQoKSksCkBAIC0xMTc2LDcgKzEyODcsNyBAQCB2b2lkIGRmZ1Jlc2V0UHV0QnlJRChS
ZXBhdGNoQnVmZmVyJiByZXBhCiAgICAgQ29kZUxvY2F0aW9uRGF0YUxhYmVsUHRyIHN0cnVjdHVy
ZUxhYmVsID0gc3R1YkluZm8uY2FsbFJldHVybkxvY2F0aW9uLmRhdGFMYWJlbFB0ckF0T2Zmc2V0
KC0oaW50cHRyX3Qpc3R1YkluZm8ucGF0Y2guZGZnLmRlbHRhQ2hlY2tJbW1Ub0NhbGwpOwogICAg
IGlmIChNYWNyb0Fzc2VtYmxlcjo6Y2FuSnVtcFJlcGxhY2VQYXRjaGFibGVCcmFuY2hQdHJXaXRo
UGF0Y2goKSkgewogICAgICAgICByZXBhdGNoQnVmZmVyLnJldmVydEp1bXBSZXBsYWNlbWVudFRv
UGF0Y2hhYmxlQnJhbmNoUHRyV2l0aFBhdGNoKAotICAgICAgICAgICAgUmVwYXRjaEJ1ZmZlcjo6
c3RhcnRPZlBhdGNoYWJsZUJyYW5jaFB0cldpdGhQYXRjaChzdHJ1Y3R1cmVMYWJlbCksCisgICAg
ICAgICAgICBSZXBhdGNoQnVmZmVyOjpzdGFydE9mUGF0Y2hhYmxlQnJhbmNoUHRyV2l0aFBhdGNo
T25BZGRyZXNzKHN0cnVjdHVyZUxhYmVsKSwKICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpB
ZGRyZXNzKAogICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PE1hY3JvQXNzZW1ibGVyOjpSZWdp
c3RlcklEPihzdHViSW5mby5wYXRjaC5kZmcuYmFzZUdQUiksCiAgICAgICAgICAgICAgICAgSlND
ZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1JlcGF0Y2guaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1JlcGF0Y2guaAkocmV2aXNpb24gMTM1MjE2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdSZXBhdGNoLmgJKHdvcmtpbmcgY29weSkKQEAgLTQxLDYgKzQxLDggQEAgdm9pZCBkZmdC
dWlsZEdldEJ5SURQcm90b0xpc3QoRXhlY1N0YXRlKgogdm9pZCBkZmdSZXBhdGNoUHV0QnlJRChF
eGVjU3RhdGUqLCBKU1ZhbHVlLCBjb25zdCBJZGVudGlmaWVyJiwgY29uc3QgUHV0UHJvcGVydHlT
bG90JiwgU3RydWN0dXJlU3R1YkluZm8mLCBQdXRLaW5kKTsKIHZvaWQgZGZnQnVpbGRQdXRCeUlk
TGlzdChFeGVjU3RhdGUqLCBKU1ZhbHVlLCBjb25zdCBJZGVudGlmaWVyJiwgY29uc3QgUHV0UHJv
cGVydHlTbG90JiwgU3RydWN0dXJlU3R1YkluZm8mLCBQdXRLaW5kKTsKIHZvaWQgZGZnTGlua0Zv
cihFeGVjU3RhdGUqLCBDYWxsTGlua0luZm8mLCBDb2RlQmxvY2sqLCBKU0Z1bmN0aW9uKiBjYWxs
ZWUsIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCk7Cit2b2lk
IGRmZ0xpbmtTbG93Rm9yKEV4ZWNTdGF0ZSosIENhbGxMaW5rSW5mbyYsIENvZGVTcGVjaWFsaXph
dGlvbktpbmQpOwordm9pZCBkZmdMaW5rQ2xvc3VyZUNhbGwoRXhlY1N0YXRlKiwgQ2FsbExpbmtJ
bmZvJiwgQ29kZUJsb2NrKiwgU3RydWN0dXJlKiwgRXhlY3V0YWJsZUJhc2UqLCBNYWNyb0Fzc2Vt
YmxlckNvZGVQdHIpOwogdm9pZCBkZmdSZXNldEdldEJ5SUQoUmVwYXRjaEJ1ZmZlciYsIFN0cnVj
dHVyZVN0dWJJbmZvJik7CiB2b2lkIGRmZ1Jlc2V0UHV0QnlJRChSZXBhdGNoQnVmZmVyJiwgU3Ry
dWN0dXJlU3R1YkluZm8mKTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCShyZXZpc2lvbiAxMzUyMTYpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC05OTgsNyArOTk4LDYgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6bm9uU3Bl
Y3VsYXRpdmVOb25QZQogCiB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0Q2FsbChOb2RlJiBub2Rl
KQogewotCiAgICAgaWYgKG5vZGUub3AoKSAhPSBDYWxsKQogICAgICAgICBBU1NFUlQobm9kZS5v
cCgpID09IENvbnN0cnVjdCk7CiAKQEAgLTEwNDksOCArMTA0OCw4IEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmVtaXRDYWxsKE5vZGUmIG5vZGUKICAgICAKICAgICBtX2ppdC5hZGRQdHIoVHJ1c3Rl
ZEltbTMyKG1faml0LmNvZGVCbG9jaygpLT5tX251bUNhbGxlZVJlZ2lzdGVycyAqIHNpemVvZihS
ZWdpc3RlcikpLCBHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rlcik7CiAgICAgCi0gICAgc2xvd1Bh
dGguYXBwZW5kKG1faml0LmJyYW5jaFB0cldpdGhQYXRjaChNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1
YWwsIGNhbGxlZVBheWxvYWRHUFIsIHRhcmdldFRvQ2hlY2spKTsKICAgICBzbG93UGF0aC5hcHBl
bmQobV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBjYWxsZWVUYWdHUFIs
IFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSkpOworICAgIHNsb3dQYXRoLmFwcGVuZCht
X2ppdC5icmFuY2hQdHJXaXRoUGF0Y2goTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBjYWxsZWVQ
YXlsb2FkR1BSLCB0YXJnZXRUb0NoZWNrKSk7CiAgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2Vt
Ymxlcjo6QWRkcmVzcyhjYWxsZWVQYXlsb2FkR1BSLCBPQkpFQ1RfT0ZGU0VUT0YoSlNGdW5jdGlv
biwgbV9zY29wZSkpLCByZXN1bHRQYXlsb2FkR1BSKTsKICAgICBtX2ppdC5zdG9yZVB0cihyZXN1
bHRQYXlsb2FkR1BSLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhHUFJJbmZvOjpjYWxsRnJhbWVS
ZWdpc3Rlciwgc3RhdGljX2Nhc3Q8cHRyZGlmZl90PihzaXplb2YoUmVnaXN0ZXIpKSAqIEpTU3Rh
Y2s6OlNjb3BlQ2hhaW4gKyBPQkpFQ1RfT0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVzY3JpcHRvciwg
YXNCaXRzLnBheWxvYWQpKSk7CiAgICAgbV9qaXQuc3RvcmUzMihNYWNyb0Fzc2VtYmxlcjo6VHJ1
c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhHUFJJ
bmZvOjpjYWxsRnJhbWVSZWdpc3Rlciwgc3RhdGljX2Nhc3Q8cHRyZGlmZl90PihzaXplb2YoUmVn
aXN0ZXIpKSAqIEpTU3RhY2s6OlNjb3BlQ2hhaW4gKyBPQkpFQ1RfT0ZGU0VUT0YoRW5jb2RlZFZh
bHVlRGVzY3JpcHRvciwgYXNCaXRzLnRhZykpKTsKQEAgLTEwODQsNyArMTA4Myw3IEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmVtaXRDYWxsKE5vZGUmIG5vZGUKIAogICAgIGpzVmFsdWVSZXN1bHQo
cmVzdWx0VGFnR1BSLCByZXN1bHRQYXlsb2FkR1BSLCBtX2NvbXBpbGVJbmRleCwgRGF0YUZvcm1h
dEpTLCBVc2VDaGlsZHJlbkNhbGxlZEV4cGxpY2l0bHkpOwogCi0gICAgbV9qaXQuYWRkSlNDYWxs
KGZhc3RDYWxsLCBzbG93Q2FsbCwgdGFyZ2V0VG9DaGVjaywgY2FsbFR5cGUsIGF0KG1fY29tcGls
ZUluZGV4KS5jb2RlT3JpZ2luKTsKKyAgICBtX2ppdC5hZGRKU0NhbGwoZmFzdENhbGwsIHNsb3dD
YWxsLCB0YXJnZXRUb0NoZWNrLCBjYWxsVHlwZSwgY2FsbGVlUGF5bG9hZEdQUiwgYXQobV9jb21w
aWxlSW5kZXgpLmNvZGVPcmlnaW4pOwogfQogCiB0ZW1wbGF0ZTxib29sIHN0cmljdD4KSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNw
cAkocmV2aXNpb24gMTM1MjE2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVDY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA1OCw3ICsxMDU4LDcgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdENhbGwoTm9kZSYgbm9kZQogICAgIAogICAgIGpzVmFsdWVS
ZXN1bHQocmVzdWx0R1BSLCBtX2NvbXBpbGVJbmRleCwgRGF0YUZvcm1hdEpTLCBVc2VDaGlsZHJl
bkNhbGxlZEV4cGxpY2l0bHkpOwogICAgIAotICAgIG1faml0LmFkZEpTQ2FsbChmYXN0Q2FsbCwg
c2xvd0NhbGwsIHRhcmdldFRvQ2hlY2ssIGNhbGxUeXBlLCBhdChtX2NvbXBpbGVJbmRleCkuY29k
ZU9yaWdpbik7CisgICAgbV9qaXQuYWRkSlNDYWxsKGZhc3RDYWxsLCBzbG93Q2FsbCwgdGFyZ2V0
VG9DaGVjaywgY2FsbFR5cGUsIGNhbGxlZUdQUiwgYXQobV9jb21waWxlSW5kZXgpLmNvZGVPcmln
aW4pOwogfQogCiB0ZW1wbGF0ZTxib29sIHN0cmljdD4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHVGh1bmtzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1RodW5rcy5jcHAJKHJldmlzaW9uIDEzNTIxNikKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHVGh1bmtzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjEzLDYgKzIxMywx
OCBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgbGlua0NvbnN0cnVjdFRodW5rCiAgICAgcmV0dXJu
IGxpbmtGb3JUaHVua0dlbmVyYXRvcihnbG9iYWxEYXRhLCBDb2RlRm9yQ29uc3RydWN0KTsKIH0K
IAorLy8gRm9yIGNsb3N1cmUgb3B0aW1pemF0aW9ucywgd2Ugb25seSBpbmNsdWRlIGNhbGxzLCBz
aW5jZSBpZiB5b3UncmUgdXNpbmcgY2xvc3VyZXMgZm9yCisvLyBvYmplY3QgY29uc3RydWN0aW9u
IHRoZW4geW91J3JlIGdvaW5nIHRvIGxvc2UgYmlnIHRpbWUgYW55d2F5LgorTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmIGxpbmtDbG9zdXJlQ2FsbFRodW5rR2VuZXJhdG9yKEpTR2xvYmFsRGF0YSogZ2xv
YmFsRGF0YSkKK3sKKyAgICBDQ2FsbEhlbHBlcnMgaml0KGdsb2JhbERhdGEpOworICAgIAorICAg
IHNsb3dQYXRoRm9yKGppdCwgZ2xvYmFsRGF0YSwgb3BlcmF0aW9uTGlua0Nsb3N1cmVDYWxsKTsK
KyAgICAKKyAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKCpnbG9iYWxEYXRhLCAmaml0LCBHTE9C
QUxfVEhVTktfSUQpOworICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCAoIkRG
RyBsaW5rIGNsb3N1cmUgY2FsbCBzbG93IHBhdGggdGh1bmsiKSk7Cit9CisKIHN0YXRpYyBNYWNy
b0Fzc2VtYmxlckNvZGVSZWYgdmlydHVhbEZvclRodW5rR2VuZXJhdG9yKAogICAgIEpTR2xvYmFs
RGF0YSogZ2xvYmFsRGF0YSwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKQogewpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUaHVua3MuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1RodW5rcy5oCShyZXZpc2lvbiAxMzUyMTYpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1RodW5rcy5oCSh3b3JraW5nIGNvcHkpCkBAIC00
NSw2ICs0NSw4IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiB0aHJvd0V4Y2VwdGlvbkZyb20KIE1h
Y3JvQXNzZW1ibGVyQ29kZVJlZiBsaW5rQ2FsbFRodW5rR2VuZXJhdG9yKEpTR2xvYmFsRGF0YSop
OwogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGxpbmtDb25zdHJ1Y3RUaHVua0dlbmVyYXRvcihKU0ds
b2JhbERhdGEqKTsKIAorTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGxpbmtDbG9zdXJlQ2FsbFRodW5r
R2VuZXJhdG9yKEpTR2xvYmFsRGF0YSopOworCiBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgdmlydHVh
bENhbGxUaHVua0dlbmVyYXRvcihKU0dsb2JhbERhdGEqKTsKIE1hY3JvQXNzZW1ibGVyQ29kZVJl
ZiB2aXJ0dWFsQ29uc3RydWN0VGh1bmtHZW5lcmF0b3IoSlNHbG9iYWxEYXRhKik7CiAKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgJKHJldmlzaW9uIDEzNTIxNikKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAkod29ya2luZyBjb3B5KQpAQCAtMTc0LDYgKzE3NCw4
IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIGJvb2wgaXNQYWdlZE91dChkb3VibGUgZGVh
ZGxpbmUpOwogICAgICAgICB2b2lkIGRpZFN0YXJ0Vk1TaHV0ZG93bigpOworICAgICAgICAKKyAg
ICAgICAgY29uc3QgSklUU3R1YlJvdXRpbmVTZXQmIGppdFN0dWJSb3V0aW5lcygpIHsgcmV0dXJu
IG1faml0U3R1YlJvdXRpbmVzOyB9CiAKICAgICBwcml2YXRlOgogICAgICAgICBmcmllbmQgY2xh
c3MgQ29kZUJsb2NrOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSklUU3R1YlJv
dXRpbmVTZXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9KSVRT
dHViUm91dGluZVNldC5oCShyZXZpc2lvbiAxMzUyMTYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9KSVRTdHViUm91dGluZVNldC5oCSh3b3JraW5nIGNvcHkpCkBAIC02NSw2ICs2NSw5
IEBAIHB1YmxpYzoKICAgICAKICAgICB2b2lkIHRyYWNlTWFya2VkU3R1YlJvdXRpbmVzKFNsb3RW
aXNpdG9yJik7CiAgICAgCisgICAgdW5zaWduZWQgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbGlz
dE9mUm91dGluZXMuc2l6ZSgpOyB9CisgICAgR0NBd2FyZUpJVFN0dWJSb3V0aW5lKiBhdCh1bnNp
Z25lZCBpKSBjb25zdCB7IHJldHVybiBtX2xpc3RPZlJvdXRpbmVzW2ldOyB9CisgICAgCiBwcml2
YXRlOgogICAgIHZvaWQgbWFya1Nsb3codWludHB0cl90IGFkZHJlc3MpOwogICAgIApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DbG9zdXJlQ2FsbFN0dWJSb3V0aW5lLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Nsb3N1cmVDYWxsU3R1YlJvdXRp
bmUuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DbG9zdXJl
Q2FsbFN0dWJSb3V0aW5lLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2MiBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiQ2xvc3VyZUNhbGxTdHViUm91dGluZS5oIgorCisjaWYgRU5BQkxFKEpJ
VCkKKworI2luY2x1ZGUgIkV4ZWN1dGFibGUuaCIKKyNpbmNsdWRlICJIZWFwLmgiCisjaW5jbHVk
ZSAiSlNHbG9iYWxEYXRhLmgiCisjaW5jbHVkZSAiU2xvdFZpc2l0b3IuaCIKKyNpbmNsdWRlICJT
dHJ1Y3R1cmUuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK0Nsb3N1cmVDYWxsU3R1YlJvdXRpbmU6
OkNsb3N1cmVDYWxsU3R1YlJvdXRpbmUoCisgICAgY29uc3QgTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
JiBjb2RlLCBKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNvbnN0IEpTQ2VsbCogb3duZXIsCisg
ICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEV4ZWN1dGFibGVCYXNlKiBleGVjdXRhYmxlLCBjb25z
dCBDb2RlT3JpZ2luJiBjb2RlT3JpZ2luKQorICAgIDogR0NBd2FyZUpJVFN0dWJSb3V0aW5lKGNv
ZGUsIGdsb2JhbERhdGEsIHRydWUpCisgICAgLCBtX3N0cnVjdHVyZShnbG9iYWxEYXRhLCBvd25l
ciwgc3RydWN0dXJlKQorICAgICwgbV9leGVjdXRhYmxlKGdsb2JhbERhdGEsIG93bmVyLCBleGVj
dXRhYmxlKQorICAgICwgbV9jb2RlT3JpZ2luKGNvZGVPcmlnaW4pCit7Cit9CisKK0Nsb3N1cmVD
YWxsU3R1YlJvdXRpbmU6On5DbG9zdXJlQ2FsbFN0dWJSb3V0aW5lKCkKK3sKK30KKwordm9pZCBD
bG9zdXJlQ2FsbFN0dWJSb3V0aW5lOjptYXJrUmVxdWlyZWRPYmplY3RzSW50ZXJuYWwoU2xvdFZp
c2l0b3ImIHZpc2l0b3IpCit7CisgICAgdmlzaXRvci5hcHBlbmQoJm1fc3RydWN0dXJlKTsKKyAg
ICB2aXNpdG9yLmFwcGVuZCgmbV9leGVjdXRhYmxlKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlND
CisKKyNlbmRpZiAvLyBFTkFCTEUoSklUKQorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0Nsb3N1cmVDYWxsU3R1YlJvdXRpbmUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0Nsb3N1cmVDYWxsU3R1YlJvdXRpbmUuaAkocmV2aXNpb24gMCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ2xvc3VyZUNhbGxTdHViUm91dGluZS5oCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDY2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuIAorICovCisKKyNpZm5kZWYgQ2xvc3VyZUNhbGxTdHViUm91dGluZV9oCisjZGVmaW5lIENs
b3N1cmVDYWxsU3R1YlJvdXRpbmVfaAorCisjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CisKKyNp
ZiBFTkFCTEUoSklUKQorCisjaW5jbHVkZSAiQ29kZU9yaWdpbi5oIgorI2luY2x1ZGUgIkdDQXdh
cmVKSVRTdHViUm91dGluZS5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgQ2xvc3VyZUNh
bGxTdHViUm91dGluZSA6IHB1YmxpYyBHQ0F3YXJlSklUU3R1YlJvdXRpbmUgeworcHVibGljOgor
ICAgIENsb3N1cmVDYWxsU3R1YlJvdXRpbmUoCisgICAgICAgIGNvbnN0IE1hY3JvQXNzZW1ibGVy
Q29kZVJlZiYsIEpTR2xvYmFsRGF0YSYsIGNvbnN0IEpTQ2VsbCogb3duZXIsCisgICAgICAgIFN0
cnVjdHVyZSogc3RydWN0dXJlLCBFeGVjdXRhYmxlQmFzZSogZXhlY3V0YWJsZSwgY29uc3QgQ29k
ZU9yaWdpbiYpOworICAgIAorICAgIHZpcnR1YWwgfkNsb3N1cmVDYWxsU3R1YlJvdXRpbmUoKTsK
KyAgICAKKyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RydWN0
dXJlLmdldCgpOyB9CisgICAgRXhlY3V0YWJsZUJhc2UqIGV4ZWN1dGFibGUoKSBjb25zdCB7IHJl
dHVybiBtX2V4ZWN1dGFibGUuZ2V0KCk7IH0KKyAgICBjb25zdCBDb2RlT3JpZ2luJiBjb2RlT3Jp
Z2luKCkgY29uc3QgeyByZXR1cm4gbV9jb2RlT3JpZ2luOyB9CisKK3Byb3RlY3RlZDoKKyAgICB2
aXJ0dWFsIHZvaWQgbWFya1JlcXVpcmVkT2JqZWN0c0ludGVybmFsKFNsb3RWaXNpdG9yJik7CisK
K3ByaXZhdGU6CisgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9zdHJ1Y3R1cmU7CisgICAg
V3JpdGVCYXJyaWVyPEV4ZWN1dGFibGVCYXNlPiBtX2V4ZWN1dGFibGU7CisgICAgLy8gVGhpcyBh
bGxvd3MgdXMgdG8gZmlndXJlIG91dCB3aG8gYSBjYWxsIGlzIGxpbmtlZCB0byBieSBzZWFyY2hp
bmcgdGhyb3VnaAorICAgIC8vIHN0dWIgcm91dGluZXMuCisgICAgQ29kZU9yaWdpbiBtX2NvZGVP
cmlnaW47Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIEVOQUJMRShKSVQp
CisKKyNlbmRpZiAvLyBDbG9zdXJlQ2FsbFN0dWJSb3V0aW5lX2gKKwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9HQ0F3YXJlSklUU3R1YlJvdXRpbmUuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvR0NBd2FyZUpJVFN0dWJSb3V0aW5lLmNwcAkocmV2
aXNpb24gMTM1MjE2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9HQ0F3YXJlSklUU3R1
YlJvdXRpbmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCwxNyArMzAsMTcgQEAKIAogI2luY2x1
ZGUgIkhlYXAuaCIKICNpbmNsdWRlICJKU0dsb2JhbERhdGEuaCIKLQogI2luY2x1ZGUgIlNsb3RW
aXNpdG9yLmgiCiAjaW5jbHVkZSAiU3RydWN0dXJlLmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCiBH
Q0F3YXJlSklUU3R1YlJvdXRpbmU6OkdDQXdhcmVKSVRTdHViUm91dGluZSgKLSAgICBjb25zdCBN
YWNyb0Fzc2VtYmxlckNvZGVSZWYmIGNvZGUsIEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSkKKyAg
ICBjb25zdCBNYWNyb0Fzc2VtYmxlckNvZGVSZWYmIGNvZGUsIEpTR2xvYmFsRGF0YSYgZ2xvYmFs
RGF0YSwgYm9vbCBpc0Nsb3N1cmVDYWxsKQogICAgIDogSklUU3R1YlJvdXRpbmUoY29kZSkKICAg
ICAsIG1fbWF5QmVFeGVjdXRpbmcoZmFsc2UpCiAgICAgLCBtX2lzSmV0dGlzb25lZChmYWxzZSkK
KyAgICAsIG1faXNDbG9zdXJlQ2FsbChpc0Nsb3N1cmVDYWxsKQogewogICAgIGdsb2JhbERhdGEu
aGVhcC5tX2ppdFN0dWJSb3V0aW5lcy5hZGQodGhpcyk7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0dDQXdhcmVKSVRTdHViUm91dGluZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvR0NBd2FyZUpJVFN0dWJSb3V0aW5lLmgJKHJldmlzaW9uIDEz
NTIxNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvR0NBd2FyZUpJVFN0dWJSb3V0aW5l
LmgJKHdvcmtpbmcgY29weSkKQEAgLTU0LDcgKzU0LDcgQEAgY2xhc3MgSklUU3R1YlJvdXRpbmVT
ZXQ7CiAvLyBsaXN0IHdoaWNoIGRvZXMgbm90IGdldCByZWNsYWltZWQgYWxsIGF0IG9uY2UpLgog
Y2xhc3MgR0NBd2FyZUpJVFN0dWJSb3V0aW5lIDogcHVibGljIEpJVFN0dWJSb3V0aW5lIHsKIHB1
YmxpYzoKLSAgICBHQ0F3YXJlSklUU3R1YlJvdXRpbmUoY29uc3QgTWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmJiwgSlNHbG9iYWxEYXRhJik7CisgICAgR0NBd2FyZUpJVFN0dWJSb3V0aW5lKGNvbnN0IE1h
Y3JvQXNzZW1ibGVyQ29kZVJlZiYsIEpTR2xvYmFsRGF0YSYsIGJvb2wgaXNDbG9zdXJlQ2FsbCA9
IGZhbHNlKTsKICAgICB2aXJ0dWFsIH5HQ0F3YXJlSklUU3R1YlJvdXRpbmUoKTsKICAgICAKICAg
ICB2b2lkIG1hcmtSZXF1aXJlZE9iamVjdHMoU2xvdFZpc2l0b3ImIHZpc2l0b3IpCkBAIC02NCw2
ICs2NCw4IEBAIHB1YmxpYzoKICAgICAKICAgICB2b2lkIGRlbGV0ZUZyb21HQygpOwogICAgIAor
ICAgIGJvb2wgaXNDbG9zdXJlQ2FsbCgpIGNvbnN0IHsgcmV0dXJuIG1faXNDbG9zdXJlQ2FsbDsg
fQorICAgIAogcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgdm9pZCBvYnNlcnZlWmVyb1JlZkNvdW50
KCk7CiAgICAgCkBAIC03NCw2ICs3Niw3IEBAIHByaXZhdGU6CiAKICAgICBib29sIG1fbWF5QmVF
eGVjdXRpbmc7CiAgICAgYm9vbCBtX2lzSmV0dGlzb25lZDsKKyAgICBib29sIG1faXNDbG9zdXJl
Q2FsbDsKIH07CiAKIC8vIFVzZSB0aGlzIGlmIHlvdSB3YW50IHRvIG1hcmsgb25lIGFkZGl0aW9u
YWwgb2JqZWN0IGR1cmluZyBHQyBpZiB5b3VyIHN0dWIKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklULmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVC5jcHAJKHJldmlzaW9uIDEzNTIxNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklULmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzgxLDEwICs3ODEsMTEgQEAgSklUQ29kZSBKSVQ6
OnByaXZhdGVDb21waWxlKENvZGVQdHIqIGZ1bgogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBtX2NvZGVCbG9jay0+bnVtYmVyT2ZDYWxsTGlua0luZm9zKCk7ICsraSkgewogICAgICAgICBD
YWxsTGlua0luZm8mIGluZm8gPSBtX2NvZGVCbG9jay0+Y2FsbExpbmtJbmZvKGkpOwogICAgICAg
ICBpbmZvLmNhbGxUeXBlID0gbV9jYWxsU3RydWN0dXJlU3R1YkNvbXBpbGF0aW9uSW5mb1tpXS5j
YWxsVHlwZTsKLSAgICAgICAgaW5mby5ieXRlY29kZUluZGV4ID0gbV9jYWxsU3RydWN0dXJlU3R1
YkNvbXBpbGF0aW9uSW5mb1tpXS5ieXRlY29kZUluZGV4OworICAgICAgICBpbmZvLmNvZGVPcmln
aW4gPSBDb2RlT3JpZ2luKG1fY2FsbFN0cnVjdHVyZVN0dWJDb21waWxhdGlvbkluZm9baV0uYnl0
ZWNvZGVJbmRleCk7CiAgICAgICAgIGluZm8uY2FsbFJldHVybkxvY2F0aW9uID0gcGF0Y2hCdWZm
ZXIubG9jYXRpb25PZk5lYXJDYWxsKG1fY2FsbFN0cnVjdHVyZVN0dWJDb21waWxhdGlvbkluZm9b
aV0uY2FsbFJldHVybkxvY2F0aW9uKTsKICAgICAgICAgaW5mby5ob3RQYXRoQmVnaW4gPSBwYXRj
aEJ1ZmZlci5sb2NhdGlvbk9mKG1fY2FsbFN0cnVjdHVyZVN0dWJDb21waWxhdGlvbkluZm9baV0u
aG90UGF0aEJlZ2luKTsKICAgICAgICAgaW5mby5ob3RQYXRoT3RoZXIgPSBwYXRjaEJ1ZmZlci5s
b2NhdGlvbk9mTmVhckNhbGwobV9jYWxsU3RydWN0dXJlU3R1YkNvbXBpbGF0aW9uSW5mb1tpXS5o
b3RQYXRoT3RoZXIpOworICAgICAgICBpbmZvLmNhbGxlZUdQUiA9IHJlZ1QwOwogICAgIH0KIAog
I2lmIEVOQUJMRShERkdfSklUKSB8fCBFTkFCTEUoTExJTlQpCkluZGV4OiBTb3VyY2UvV1RGL0No
YW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL0NoYW5nZUxvZwkocmV2aXNpb24gMTM1
MjQ0KQorKysgU291cmNlL1dURi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwy
MyBAQAorMjAxMi0xMS0xOSAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAg
ICAgIERGRyBzaG91bGQgYmUgYWJsZSB0byBjYWNoZSBjbG9zdXJlIGNhbGxzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDI2NjIKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCBzdXBwb3J0IHRvIHRo
ZSBtZXRhIGFsbG9jYXRvciBmb3IgZWFzaWx5IHF1ZXJ5aW5nIHdoZXRoZXIgYW4gYWRkcmVzcyBm
YWxscyB3aXRoaW4KKyAgICAgICAgYSBjZXJ0YWluIGFsbG9jYXRlZCBjaHVuay4gQWxzbyBhZGRl
ZCBhIHVzZWZ1bCBkZWJ1ZyByb3V0aW5lIHRvIFNlbnRpbmVsTGlua2VkTGlzdCwKKyAgICAgICAg
d2hpY2ggY2FuIGJlIHVzZWQgdG8gY2hlY2sgaWYgYSBub2RlIGlzIG9uIGEgcGFydGljdWxhciBs
aXN0LgorCisgICAgICAgICogd3RmL01ldGFBbGxvY2F0b3JIYW5kbGUuaDoKKyAgICAgICAgKE1l
dGFBbGxvY2F0b3JIYW5kbGUpOgorICAgICAgICAoV1RGOjpNZXRhQWxsb2NhdG9ySGFuZGxlOjpj
b250YWluc0ludGVnZXJBZGRyZXNzKToKKyAgICAgICAgKFdURjo6TWV0YUFsbG9jYXRvckhhbmRs
ZTo6Y29udGFpbnMpOgorICAgICAgICAqIHd0Zi9TZW50aW5lbExpbmtlZExpc3QuaDoKKyAgICAg
ICAgKFNlbnRpbmVsTGlua2VkTGlzdCk6CisgICAgICAgIChXVEY6Ojo6aXNPbkxpc3QpOgorICAg
ICAgICAoV1RGKToKKwogMjAxMi0xMS0xOSAgTGFzemxvIEdvbWJvcyAgPGwuZ29tYm9zQHNhbXN1
bmcuY29tPgogCiAgICAgICAgIFJlbW92ZSBSZWFkV3JpdGVMb2NrCkluZGV4OiBTb3VyY2UvV1RG
L3d0Zi9NZXRhQWxsb2NhdG9ySGFuZGxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYv
TWV0YUFsbG9jYXRvckhhbmRsZS5oCShyZXZpc2lvbiAxMzUyMTYpCisrKyBTb3VyY2UvV1RGL3d0
Zi9NZXRhQWxsb2NhdG9ySGFuZGxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTY5LDYgKzY5LDE2IEBA
IHB1YmxpYzoKICAgICB7CiAgICAgICAgIHJldHVybiBtX3NpemVJbkJ5dGVzOwogICAgIH0KKyAg
ICAKKyAgICBib29sIGNvbnRhaW5zSW50ZWdlckFkZHJlc3ModWludHB0cl90IGFkZHJlc3MpIGNv
bnN0CisgICAgeworICAgICAgICByZXR1cm4gYWRkcmVzcyAtIHN0YXJ0QXNJbnRlZ2VyKCkgPCBz
aXplSW5CeXRlcygpOworICAgIH0KKyAgICAKKyAgICBib29sIGNvbnRhaW5zKHZvaWQqIGFkZHJl
c3MpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gY29udGFpbnNJbnRlZ2VyQWRkcmVzcyhy
ZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4oYWRkcmVzcykpOworICAgIH0KICAgICAgICAgCiAg
ICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgc2hyaW5rKHNpemVfdCBuZXdTaXplSW5CeXRlcyk7
CiAgICAgCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9TZW50aW5lbExpbmtlZExpc3QuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9TZW50aW5lbExpbmtlZExpc3QuaAkocmV2aXNpb24gMTM1
MjE2KQorKysgU291cmNlL1dURi93dGYvU2VudGluZWxMaW5rZWRMaXN0LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTgzLDYgKzgzLDggQEAgcHVibGljOgogCiAgICAgdm9pZCBwdXNoKFQqKTsKICAgICBz
dGF0aWMgdm9pZCByZW1vdmUoVCopOworICAgIAorICAgIGJvb2wgaXNPbkxpc3QoVCopOwogCiAg
ICAgaXRlcmF0b3IgYmVnaW4oKTsKICAgICBpdGVyYXRvciBlbmQoKTsKQEAgLTE1Miw2ICsxNTQs
MTkgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFJhd05vZGU+IAogICAgIG5vZGUt
PnNldE5leHQoMCk7CiB9CiAKK3RlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBSYXdOb2Rl
PiBpbmxpbmUgYm9vbCBTZW50aW5lbExpbmtlZExpc3Q8VCwgUmF3Tm9kZT46OmlzT25MaXN0KFQq
IG5vZGUpCit7CisgICAgaWYgKCFub2RlLT5pc09uTGlzdCgpKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgCisgICAgZm9yIChUKiBpdGVyID0gYmVnaW4oKTsgaXRlciAhPSBlbmQoKTsgaXRl
ciA9IGl0ZXItPm5leHQoKSkgeworICAgICAgICBpZiAoaXRlciA9PSBub2RlKQorICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIAorICAgIHJldHVybiBmYWxzZTsKK30KKwogfQog
CiB1c2luZyBXVEY6OkJhc2ljUmF3U2VudGluZWxOb2RlOwo=
</data>
<flag name="commit-queue"
          id="190487"
          type_id="3"
          status="-"
          setter="webkit-ews"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>175135</attachid>
            <date>2012-11-19 21:29:26 -0800</date>
            <delta_ts>2012-11-19 23:29:22 -0800</delta_ts>
            <desc>the patch</desc>
            <filename>closurecall.patch</filename>
            <type>text/plain</type>
            <size>67950</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTM1MjQ1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEyMSBA
QAorMjAxMi0xMS0xOSAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IERGRyBzaG91bGQgYmUgYWJsZSB0byBjYWNoZSBjbG9zdXJlIGNhbGxzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDI2NjIKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCBjYWNoaW5nIG9mIGNhbGxz
IHdoZXJlIHRoZSBKU0Z1bmN0aW9uKiB2YXJpZXMsIGJ1dCB0aGUgU3RydWN0dXJlKiBhbmQgRXhl
Y3V0YWJsZUJhc2UqCisgICAgICAgIHN0YXkgdGhlIHNhbWUuIFRoaXMgaXMgYWNjb21wbGlzaGVk
IGJ5IHJlcGxhY2luZyB0aGUgYnJhbmNoIHRoYXQgY29tcGFyZXMgYWdhaW5zdCBhIGNvbnN0YW50
CisgICAgICAgIEpTRnVuY3Rpb24qIHdpdGggYSBqdW1wIHRvIGEgY2xvc3VyZSBjYWxsIHN0dWIu
IFRoZSBjbG9zdXJlIGNhbGwgc3R1YiBjb250YWlucyBhIGZhc3QgcGF0aCwKKyAgICAgICAgYW5k
IGp1bXBzIHNsb3cgZGlyZWN0bHkgdG8gdGhlIHZpcnR1YWwgY2FsbCB0aHVuay4KKworICAgICAg
ICBMb29rcyBsaWtlIGEgMSUgd2luIG9uIFY4djcuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4
dDoKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIEphdmFTY3JpcHRD
b3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2o6CisgICAgICAg
ICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBU
YXJnZXQucHJpOgorICAgICAgICAqIGFzc2VtYmxlci9BUk12N0Fzc2VtYmxlci5oOgorICAgICAg
ICAoSlNDOjpBUk12N0Fzc2VtYmxlcjo6QmFkUmVnKToKKyAgICAgICAgKEFSTXY3QXNzZW1ibGVy
KToKKyAgICAgICAgKEpTQzo6QVJNdjdBc3NlbWJsZXI6OnJldmVydEp1bXBUb19tb3ZUMyk6Cisg
ICAgICAgICogYXNzZW1ibGVyL0xpbmtCdWZmZXIuaDoKKyAgICAgICAgKEpTQyk6CisgICAgICAg
ICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNdjcuaDoKKyAgICAgICAgKEpTQzo6TWFjcm9B
c3NlbWJsZXJBUk12Nzo6c3RhcnRPZkJyYW5jaFB0cldpdGhQYXRjaE9uUmVnaXN0ZXIpOgorICAg
ICAgICAoTWFjcm9Bc3NlbWJsZXJBUk12Nyk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVy
QVJNdjc6OnJldmVydEp1bXBSZXBsYWNlbWVudFRvQnJhbmNoUHRyV2l0aFBhdGNoKToKKyAgICAg
ICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk12Nzo6c3RhcnRPZlBhdGNoYWJsZUJyYW5jaFB0cldp
dGhQYXRjaE9uQWRkcmVzcyk6CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2
Lmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2OjpzdGFydE9mQnJhbmNoUHRyV2l0
aFBhdGNoT25SZWdpc3Rlcik6CisgICAgICAgIChNYWNyb0Fzc2VtYmxlclg4Nik6CisgICAgICAg
IChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2OjpzdGFydE9mUGF0Y2hhYmxlQnJhbmNoUHRyV2l0aFBh
dGNoT25BZGRyZXNzKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODY6OnJldmVydEp1
bXBSZXBsYWNlbWVudFRvQnJhbmNoUHRyV2l0aFBhdGNoKToKKyAgICAgICAgKiBhc3NlbWJsZXIv
TWFjcm9Bc3NlbWJsZXJYODZfNjQuaDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZf
NjQ6OnN0YXJ0T2ZCcmFuY2hQdHJXaXRoUGF0Y2hPblJlZ2lzdGVyKToKKyAgICAgICAgKEpTQzo6
TWFjcm9Bc3NlbWJsZXJYODZfNjQ6OnN0YXJ0T2ZQYXRjaGFibGVCcmFuY2hQdHJXaXRoUGF0Y2hP
bkFkZHJlc3MpOgorICAgICAgICAoTWFjcm9Bc3NlbWJsZXJYODZfNjQpOgorICAgICAgICAoSlND
OjpNYWNyb0Fzc2VtYmxlclg4Nl82NDo6cmV2ZXJ0SnVtcFJlcGxhY2VtZW50VG9CcmFuY2hQdHJX
aXRoUGF0Y2gpOgorICAgICAgICAqIGFzc2VtYmxlci9SZXBhdGNoQnVmZmVyLmg6CisgICAgICAg
IChKU0M6OlJlcGF0Y2hCdWZmZXI6OnN0YXJ0T2ZCcmFuY2hQdHJXaXRoUGF0Y2hPblJlZ2lzdGVy
KToKKyAgICAgICAgKFJlcGF0Y2hCdWZmZXIpOgorICAgICAgICAoSlNDOjpSZXBhdGNoQnVmZmVy
OjpzdGFydE9mUGF0Y2hhYmxlQnJhbmNoUHRyV2l0aFBhdGNoT25BZGRyZXNzKToKKyAgICAgICAg
KEpTQzo6UmVwYXRjaEJ1ZmZlcjo6cmV2ZXJ0SnVtcFJlcGxhY2VtZW50VG9CcmFuY2hQdHJXaXRo
UGF0Y2gpOgorICAgICAgICAqIGFzc2VtYmxlci9YODZBc3NlbWJsZXIuaDoKKyAgICAgICAgKEpT
Qzo6WDg2QXNzZW1ibGVyOjpyZXZlcnRKdW1wVG9fY21wbF9pcl9mb3JjZTMyKToKKyAgICAgICAg
KFg4NkFzc2VtYmxlcik6CisgICAgICAgICogYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmNwcDoKKyAg
ICAgICAgKEpTQzo6Q2FsbExpbmtJbmZvOjp1bmxpbmspOgorICAgICAgICAqIGJ5dGVjb2RlL0Nh
bGxMaW5rSW5mby5oOgorICAgICAgICAoQ2FsbExpbmtJbmZvKToKKyAgICAgICAgKEpTQzo6Q2Fs
bExpbmtJbmZvOjppc0xpbmtlZCk6CisgICAgICAgIChKU0M6OmdldENhbGxMaW5rSW5mb0J5dGVj
b2RlSW5kZXgpOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5jcHA6CisgICAgICAgIChK
U0M6OkNvZGVCbG9jazo6ZmluYWxpemVVbmNvbmRpdGlvbmFsbHkpOgorICAgICAgICAoSlNDKToK
KyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpmaW5kQ2xvc3VyZUNhbGxGb3JSZXR1cm5QQyk6Cisg
ICAgICAgIChKU0M6OkNvZGVCbG9jazo6Ynl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAoSlNDOjpD
b2RlQmxvY2s6OmNvZGVPcmlnaW5Gb3JSZXR1cm4pOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVC
bG9jay5oOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmdldENhbGxMaW5rSW5mbyk6CisgICAg
ICAgIChDb2RlQmxvY2spOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmlzSW5jb21pbmdDYWxs
QWxyZWFkeUxpbmtlZCk6CisgICAgICAgICogZGZnL0RGR0pJVENvbXBpbGVyLmNwcDoKKyAgICAg
ICAgKEpTQzo6REZHOjpKSVRDb21waWxlcjo6bGluayk6CisgICAgICAgICogZGZnL0RGR0pJVENv
bXBpbGVyLmg6CisgICAgICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6OmFkZEpTQ2FsbCk6Cisg
ICAgICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6OkpTQ2FsbFJlY29yZDo6SlNDYWxsUmVjb3Jk
KToKKyAgICAgICAgKEpTQ2FsbFJlY29yZCk6CisgICAgICAgICogZGZnL0RGR09wZXJhdGlvbnMu
Y3BwOgorICAgICAgICAqIGRmZy9ERkdPcGVyYXRpb25zLmg6CisgICAgICAgICogZGZnL0RGR1Jl
cGF0Y2guY3BwOgorICAgICAgICAoSlNDOjpERkc6OnJlcGxhY2VXaXRoSnVtcCk6CisgICAgICAg
IChKU0M6OkRGRzo6bGlua1Nsb3dGb3IpOgorICAgICAgICAoREZHKToKKyAgICAgICAgKEpTQzo6
REZHOjpkZmdMaW5rRm9yKToKKyAgICAgICAgKEpTQzo6REZHOjpkZmdMaW5rU2xvd0Zvcik6Cisg
ICAgICAgIChKU0M6OkRGRzo6ZGZnTGlua0Nsb3N1cmVDYWxsKToKKyAgICAgICAgKEpTQzo6REZH
OjpkZmdSZXNldEdldEJ5SUQpOgorICAgICAgICAoSlNDOjpERkc6OmRmZ1Jlc2V0UHV0QnlJRCk6
CisgICAgICAgICogZGZnL0RGR1JlcGF0Y2guaDoKKyAgICAgICAgKERGRyk6CisgICAgICAgICog
ZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1
bGF0aXZlSklUOjplbWl0Q2FsbCk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQu
Y3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjplbWl0Q2FsbCk6CisgICAg
ICAgICogZGZnL0RGR1RodW5rcy5jcHA6CisgICAgICAgIChERkcpOgorICAgICAgICAoSlNDOjpE
Rkc6OmxpbmtDbG9zdXJlQ2FsbFRodW5rR2VuZXJhdG9yKToKKyAgICAgICAgKiBkZmcvREZHVGh1
bmtzLmg6CisgICAgICAgIChERkcpOgorICAgICAgICAqIGhlYXAvSGVhcC5oOgorICAgICAgICAo
SGVhcCk6CisgICAgICAgIChKU0M6OkhlYXA6OmppdFN0dWJSb3V0aW5lcyk6CisgICAgICAgICog
aGVhcC9KSVRTdHViUm91dGluZVNldC5oOgorICAgICAgICAoSlNDOjpKSVRTdHViUm91dGluZVNl
dDo6c2l6ZSk6CisgICAgICAgIChKU0M6OkpJVFN0dWJSb3V0aW5lU2V0OjphdCk6CisgICAgICAg
IChKSVRTdHViUm91dGluZVNldCk6CisgICAgICAgICogaml0L0Nsb3N1cmVDYWxsU3R1YlJvdXRp
bmUuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQyk6CisgICAgICAgIChKU0M6OkNsb3N1cmVDYWxs
U3R1YlJvdXRpbmU6OkNsb3N1cmVDYWxsU3R1YlJvdXRpbmUpOgorICAgICAgICAoSlNDOjpDbG9z
dXJlQ2FsbFN0dWJSb3V0aW5lOjp+Q2xvc3VyZUNhbGxTdHViUm91dGluZSk6CisgICAgICAgIChK
U0M6OkNsb3N1cmVDYWxsU3R1YlJvdXRpbmU6Om1hcmtSZXF1aXJlZE9iamVjdHNJbnRlcm5hbCk6
CisgICAgICAgICogaml0L0Nsb3N1cmVDYWxsU3R1YlJvdXRpbmUuaDogQWRkZWQuCisgICAgICAg
IChKU0MpOgorICAgICAgICAoQ2xvc3VyZUNhbGxTdHViUm91dGluZSk6CisgICAgICAgIChKU0M6
OkNsb3N1cmVDYWxsU3R1YlJvdXRpbmU6OnN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OkNsb3N1
cmVDYWxsU3R1YlJvdXRpbmU6OmV4ZWN1dGFibGUpOgorICAgICAgICAoSlNDOjpDbG9zdXJlQ2Fs
bFN0dWJSb3V0aW5lOjpjb2RlT3JpZ2luKToKKyAgICAgICAgKiBqaXQvR0NBd2FyZUpJVFN0dWJS
b3V0aW5lLmNwcDoKKyAgICAgICAgKEpTQzo6R0NBd2FyZUpJVFN0dWJSb3V0aW5lOjpHQ0F3YXJl
SklUU3R1YlJvdXRpbmUpOgorICAgICAgICAqIGppdC9HQ0F3YXJlSklUU3R1YlJvdXRpbmUuaDoK
KyAgICAgICAgKEdDQXdhcmVKSVRTdHViUm91dGluZSk6CisgICAgICAgIChKU0M6OkdDQXdhcmVK
SVRTdHViUm91dGluZTo6aXNDbG9zdXJlQ2FsbCk6CisgICAgICAgICogaml0L0pJVC5jcHA6Cisg
ICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGUpOgorCiAyMDEyLTExLTE5ICBQYXRyaWNr
IEdhbnN0ZXJlciAgPHBhcm9nYUB3ZWJraXQub3JnPgogCiAgICAgICAgIFtDTWFrZV0gQ3JlYXRl
IEphdmFTY3JpcHRDb3JlIEZvcndhcmRpbmdIZWFkZXJzCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAxMzUyMTYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEzOSw2ICsxMzksNyBAQCBTRVQo
SmF2YVNjcmlwdENvcmVfU09VUkNFUwogICAgIGludGVycHJldGVyL0pTU3RhY2suY3BwCiAgICAg
aW50ZXJwcmV0ZXIvVk1JbnNwZWN0b3IuY3BwCiAKKyAgICBqaXQvQ2xvc3VyZUNhbGxTdHViUm91
dGluZS5jcHAKICAgICBqaXQvRXhlY3V0YWJsZUFsbG9jYXRvci5jcHAKICAgICBqaXQvSG9zdENh
bGxSZXR1cm5WYWx1ZS5jcHAKICAgICBqaXQvR0NBd2FyZUpJVFN0dWJSb3V0aW5lLmNwcApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHJldmlzaW9uIDEz
NTIxNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zODQsNiArMzg0LDggQEAgamF2YXNjcmlwdGNvcmVfc291cmNlcyArPSBc
CiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1ZNSW5zcGVjdG9yLmggXAogCVNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZVByZWZpeC5oIFwKIAlTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0NvbXBhY3RKSVRDb2RlTWFwLmggXAorCVNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvQ2xvc3VyZUNhbGxTdHViUm91dGluZS5jcHAgXAorCVNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvQ2xvc3VyZUNhbGxTdHViUm91dGluZS5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0V4ZWN1dGFibGVBbGxvY2F0b3IuY3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0V4ZWN1dGFibGVBbGxvY2F0b3IuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9H
Q0F3YXJlSklUU3R1YlJvdXRpbmUuY3BwIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9U
YXJnZXQucHJpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9UYXJnZXQucHJp
CShyZXZpc2lvbiAxMzUyMTYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvVGFyZ2V0LnByaQko
d29ya2luZyBjb3B5KQpAQCAtMTQ0LDYgKzE0NCw3IEBAIFNPVVJDRVMgKz0gXAogICAgIGludGVy
cHJldGVyL0NhbGxGcmFtZS5jcHAgXAogICAgIGludGVycHJldGVyL0ludGVycHJldGVyLmNwcCBc
CiAgICAgaW50ZXJwcmV0ZXIvSlNTdGFjay5jcHAgXAorICAgIGppdC9DbG9zdXJlQ2FsbFN0dWJS
b3V0aW5lLmNwcCBcCiAgICAgaml0L0V4ZWN1dGFibGVBbGxvY2F0b3JGaXhlZFZNUG9vbC5jcHAg
XAogICAgIGppdC9FeGVjdXRhYmxlQWxsb2NhdG9yLmNwcCBcCiAgICAgaml0L0hvc3RDYWxsUmV0
dXJuVmFsdWUuY3BwIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qCShyZXZpc2lvbiAxMzUyMTYpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLnZjcHJvagkod29ya2luZyBjb3B5KQpAQCAtMTkzMCw2ICsxOTMwLDE0IEBACiAJ
CQlOYW1lPSJqaXQiCiAJCQk+CiAJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5caml0
XENsb3N1cmVDYWxsU3R1YlJvdXRpbmUuY3BwIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxl
CisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxqaXRcQ2xvc3VyZUNhbGxTdHViUm91dGluZS5oIgor
CQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxqaXRc
RXhlY3V0YWJsZUFsbG9jYXRvci5jcHAiCiAJCQkJPgogCQkJPC9GaWxlPgpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDEzNTIxNikKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5n
IGNvcHkpCkBAIC0xNDcsNiArMTQ3LDggQEAKIAkJMEY2Mzk0ODUxNUU0ODExQjAwNkE1OTdDIC8q
IERGR0FycmF5TW9kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMEY2Mzk0ODIxNUU0ODExNDAwNkE1OTdDIC8qIERGR0FycmF5TW9kZS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGNjZFMTZCMTRERjNG
MTYwMEI3QjJFNCAvKiBERkdBZGphY2VuY3lMaXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjY2RTE2ODE0REYzRjEzMDBCN0IyRTQgLyogREZHQWRq
YWNlbmN5TGlzdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTBGNjZFMTZDMTRERjNGMTYwMEI3QjJFNCAvKiBERkdFZGdlLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjY2RTE2OTE0REYzRjEzMDBCN0Iy
RTQgLyogREZHRWRnZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CisJCTBGNzNEN0FFMTY1QTE0MkQwMEFDQUI3MSAvKiBDbG9zdXJlQ2FsbFN0dWJSb3V0
aW5lLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
NzNEN0FCMTY1QTE0MkEwMEFDQUI3MSAvKiBDbG9zdXJlQ2FsbFN0dWJSb3V0aW5lLmNwcCAqLzsg
fTsKKwkJMEY3M0Q3QUYxNjVBMTQzMDAwQUNBQjcxIC8qIENsb3N1cmVDYWxsU3R1YlJvdXRpbmUu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNzNEN0FD
MTY1QTE0MkEwMEFDQUI3MSAvKiBDbG9zdXJlQ2FsbFN0dWJSb3V0aW5lLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY3NjZEMjgxNUE4Q0MxRTAw
OEYzNjNFIC8qIEpJVFN0dWJSb3V0aW5lLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBGNzY2RDI2MTVBOENDMUIwMDhGMzYzRSAvKiBKSVRTdHViUm91
dGluZS5jcHAgKi87IH07CiAJCTBGNzY2RDJCMTVBOENDMzgwMDhGMzYzRSAvKiBKSVRTdHViUm91
dGluZVNldC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRjc2NkQyOTE1QThDQzM0MDA4RjM2M0UgLyogSklUU3R1YlJvdXRpbmVTZXQuY3BwICovOyB9
OwogCQkwRjc2NkQyQzE1QThDQzNBMDA4RjM2M0UgLyogSklUU3R1YlJvdXRpbmVTZXQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNzY2RDJBMTVBOEND
MzQwMDhGMzYzRSAvKiBKSVRTdHViUm91dGluZVNldC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xNjUsOSArMTY3LDkgQEAKIAkJMEY3QjI5NEMx
NEMzQ0Q0MzAwN0MzREIxIC8qIERGR0J5dGVDb2RlQ2FjaGUuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNUYwOENDMTQ2QkU2MDIwMDA0NzJBOSAvKiBE
RkdCeXRlQ29kZUNhY2hlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJMEY3QjI5NEQxNEMzQ0Q0QzAwN0MzREIxIC8qIERGR0NvbW1vbi5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZDMDk3N0UxNDY5RUJD
NDAwQ0YyNDQyIC8qIERGR0NvbW1vbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTBGODAyM0VBMTYxMzgzMkIwMEEwQkE0NSAvKiBCeVZhbEluZm8u
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGODAyM0U5
MTYxMzgzMjMwMEEwQkE0NSAvKiBCeVZhbEluZm8uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwotCQkwRjgzNjRCNzE2NEIwQzExMDA1MzMyOUEgLyogREZH
QnJhbmNoRGlyZWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRjgzNjRCNTE2NEIwQzBFMDA1MzMyOUEgLyogREZHQnJhbmNoRGlyZWN0aW9uLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY4MzM1
QjcxNjM5QzFFNjAwMTQ0M0I1IC8qIEFycmF5QWxsb2NhdGlvblByb2ZpbGUuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY4MzM1QjQxNjM5QzFFMzAw
MTQ0M0I1IC8qIEFycmF5QWxsb2NhdGlvblByb2ZpbGUuY3BwICovOyB9OwogCQkwRjgzMzVCODE2
MzlDMUVBMDAxNDQzQjUgLyogQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY4MzM1QjUxNjM5QzFFMzAwMTQ0M0I1
IC8qIEFycmF5QWxsb2NhdGlvblByb2ZpbGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OworCQkwRjgzNjRCNzE2NEIwQzExMDA1MzMyOUEgLyogREZHQnJh
bmNoRGlyZWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwRjgzNjRCNTE2NEIwQzBFMDA1MzMyOUEgLyogREZHQnJhbmNoRGlyZWN0aW9uLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY5MTlEMEMx
NTdFRTA5RjAwNEE0RTdEIC8qIEpTU3ltYm9sVGFibGVPYmplY3QuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY5MTlEMDkxNTdFRTA5RDAwNEE0RTdE
IC8qIEpTU3ltYm9sVGFibGVPYmplY3QuY3BwICovOyB9OwogCQkwRjkxOUQwRDE1N0VFMEEyMDA0
QTRFN0QgLyogSlNTeW1ib2xUYWJsZU9iamVjdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEY5MTlEMEExNTdFRTA5RDAwNEE0RTdEIC8qIEpTU3ltYm9s
VGFibGVPYmplY3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQkwRjkxOUQxMDE1N0YzMzI5MDA0QTRFN0QgLyogSlNTZWdtZW50ZWRWYXJpYWJsZU9i
amVjdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
RjkxOUQwRTE1N0YzMzI3MDA0QTRFN0QgLyogSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdC5jcHAg
Ki87IH07CkBAIC05MzgsNiArOTQwLDggQEAKIAkJMEY2Mzk0ODIxNUU0ODExNDAwNkE1OTdDIC8q
IERGR0FycmF5TW9kZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdBcnJh
eU1vZGUuaDsgcGF0aCA9IGRmZy9ERkdBcnJheU1vZGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMEY2NkUxNjgxNERGM0YxMzAwQjdCMkU0IC8qIERGR0FkamFjZW5jeUxpc3QuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHQWRqYWNlbmN5TGlzdC5oOyBwYXRo
ID0gZGZnL0RGR0FkamFjZW5jeUxpc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MEY2NkUxNjkxNERGM0YxMzAwQjdCMkU0IC8qIERGR0VkZ2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBuYW1lID0gREZHRWRnZS5oOyBwYXRoID0gZGZnL0RGR0VkZ2UuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY3M0Q3QUIxNjVBMTQyQTAwQUNBQjcxIC8qIENsb3N1cmVD
YWxsU3R1YlJvdXRpbmUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
Q2xvc3VyZUNhbGxTdHViUm91dGluZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTBGNzNEN0FDMTY1QTE0MkEwMEFDQUI3MSAvKiBDbG9zdXJlQ2FsbFN0dWJSb3V0aW5lLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENsb3N1cmVDYWxsU3R1YlJvdXRpbmUuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY3NjZEMUMxNUE1MDI4RDAwOEYzNjNFIC8q
IEpJVFN0dWJSb3V0aW5lLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpJVFN0
dWJSb3V0aW5lLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNzY2RDI2MTVBOEND
MUIwMDhGMzYzRSAvKiBKSVRTdHViUm91dGluZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBKSVRTdHViUm91dGluZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTBGNzY2RDI5MTVBOENDMzQwMDhGMzYzRSAvKiBKSVRTdHViUm91dGluZVNldC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKSVRTdHViUm91dGluZVNldC5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC05NTQsOSArOTU4LDkgQEAKIAkJMEY3
NzAwOTExNDAyRkYyODAwNzhFQjM5IC8qIFNhbXBsaW5nQ291bnRlci5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTYW1wbGluZ0NvdW50ZXIuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkwRjdCMjk0ODE0QzNDRDIzMDA3QzNEQjEgLyogREZHQ0NhbGxI
ZWxwZXJzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR0NDYWxsSGVscGVy
cy5oOyBwYXRoID0gZGZnL0RGR0NDYWxsSGVscGVycy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkwRjgwMjNFOTE2MTM4MzIzMDBBMEJBNDUgLyogQnlWYWxJbmZvLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJ5VmFsSW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQkwRjgzNjRCNTE2NEIwQzBFMDA1MzMyOUEgLyogREZHQnJhbmNoRGlyZWN0aW9u
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR0JyYW5jaERpcmVjdGlvbi5o
OyBwYXRoID0gZGZnL0RGR0JyYW5jaERpcmVjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkwRjgzMzVCNDE2MzlDMUUzMDAxNDQzQjUgLyogQXJyYXlBbGxvY2F0aW9uUHJvZmls
ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBcnJheUFsbG9jYXRp
b25Qcm9maWxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY4MzM1QjUxNjM5
QzFFMzAwMTQ0M0I1IC8qIEFycmF5QWxsb2NhdGlvblByb2ZpbGUuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkwRjgzNjRCNTE2NEIwQzBFMDA1MzMyOUEgLyogREZHQnJhbmNoRGly
ZWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR0JyYW5jaERpcmVj
dGlvbi5oOyBwYXRoID0gZGZnL0RGR0JyYW5jaERpcmVjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkwRjkxOUQwOTE1N0VFMDlEMDA0QTRFN0QgLyogSlNTeW1ib2xUYWJsZU9i
amVjdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1N5bWJvbFRh
YmxlT2JqZWN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY5MTlEMEExNTdF
RTA5RDAwNEE0RTdEIC8qIEpTU3ltYm9sVGFibGVPYmplY3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gSlNTeW1ib2xUYWJsZU9iamVjdC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkwRjkxOUQwRTE1N0YzMzI3MDA0QTRFN0QgLyogSlNTZWdtZW50ZWRWYXJpYWJs
ZU9iamVjdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1NlZ21l
bnRlZFZhcmlhYmxlT2JqZWN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE4
MDMsNiArMTgwNyw4IEBACiAJCTE0MjlEOTJDMEVEMjJENzAwMEI4OTYxOSAvKiBqaXQgKi8gPSB7
CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTBGNzNEN0FCMTY1QTE0
MkEwMEFDQUI3MSAvKiBDbG9zdXJlQ2FsbFN0dWJSb3V0aW5lLmNwcCAqLywKKwkJCQkwRjczRDdB
QzE2NUExNDJBMDBBQ0FCNzEgLyogQ2xvc3VyZUNhbGxTdHViUm91dGluZS5oICovLAogCQkJCTBG
RDgyRTM3MTQxQUIxNDIwMDE3OUM5NCAvKiBDb21wYWN0SklUQ29kZU1hcC5oICovLAogCQkJCUE3
QjQ4REI2MEVFNzRDRkMwMERDQkRCNiAvKiBFeGVjdXRhYmxlQWxsb2NhdG9yLmNwcCAqLywKIAkJ
CQlBN0I0OERCNTBFRTc0Q0ZDMDBEQ0JEQjYgLyogRXhlY3V0YWJsZUFsbG9jYXRvci5oICovLApA
QCAtMzAyMiw2ICszMDI4LDcgQEAKIAkJCQlBN0I2MDE4MjE2MzlGRDJBMDAzNzJCQTMgLyogVW5s
aW5rZWRDb2RlQmxvY2suaCBpbiBIZWFkZXJzICovLAogCQkJCUE3N0YxODIyMTY0MDg4QjIwMDY0
MEE0NyAvKiBDb2RlQ2FjaGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3N0YxODI1MTY0MTkyQzcw
MDY0MEE0NyAvKiBQYXJzZXJNb2Rlcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEY3M0Q3QUYxNjVB
MTQzMDAwQUNBQjcxIC8qIENsb3N1cmVDYWxsU3R1YlJvdXRpbmUuaCBpbiBIZWFkZXJzICovLAog
CQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpA
QCAtMzYwMSw2ICszNjA4LDcgQEAKIAkJCQkwRjgzMzVCNzE2MzlDMUU2MDAxNDQzQjUgLyogQXJy
YXlBbGxvY2F0aW9uUHJvZmlsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNzZGMjc5NDE1RjEz
Qzk2MDA1MTdENjcgLyogVW5saW5rZWRDb2RlQmxvY2suY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QTc3RjE4MjExNjQwODhCMjAwNjQwQTQ3IC8qIENvZGVDYWNoZS5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQkwRjczRDdBRTE2NUExNDJEMDBBQ0FCNzEgLyogQ2xvc3VyZUNhbGxTdHViUm91dGluZS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9j
ZXNzaW5nID0gMDsKIAkJfTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIv
QVJNdjdBc3NlbWJsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL0FSTXY3QXNzZW1ibGVyLmgJKHJldmlzaW9uIDEzNTIxNikKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvQVJNdjdBc3NlbWJsZXIuaAkod29ya2luZyBjb3B5KQpAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDksIDIwMTAgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA5LCAyMDEwLCAyMDEyIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxMCBVbml2
ZXJzaXR5IG9mIFN6ZWdlZAogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtNTA3LDcgKzUwNyw3IEBAIHB1
YmxpYzoKIHByaXZhdGU6CiAKICAgICAvLyBBUk12NywgQXBweC1BLjYuMwotICAgIGJvb2wgQmFk
UmVnKFJlZ2lzdGVySUQgcmVnKQorICAgIHN0YXRpYyBib29sIEJhZFJlZyhSZWdpc3RlcklEIHJl
ZykKICAgICB7CiAgICAgICAgIHJldHVybiAocmVnID09IEFSTVJlZ2lzdGVyczo6c3ApIHx8IChy
ZWcgPT0gQVJNUmVnaXN0ZXJzOjpwYyk7CiAgICAgfQpAQCAtMTI2MSw2ICsxMjYxLDE4IEBAIHB1
YmxpYzoKICAgICAgICAgCiAgICAgICAgIG1fZm9ybWF0dGVyLnR3b1dvcmRPcDVpNkltbTRSZWc0
RW5jb2RlZEltbShPUF9NT1ZfaW1tX1QzLCBpbW0ubV92YWx1ZS5pbW00LCByZCwgaW1tKTsKICAg
ICB9CisgICAgCisgICAgc3RhdGljIHZvaWQgcmV2ZXJ0SnVtcFRvX21vdlQzKHZvaWQqIGluc3Ry
dWN0aW9uU3RhcnQsIFJlZ2lzdGVySUQgcmQsIEFSTVRodW1iSW1tZWRpYXRlIGltbSkKKyAgICB7
CisgICAgICAgIEFTU0VSVChpbW0uaXNWYWxpZCgpKTsKKyAgICAgICAgQVNTRVJUKCFpbW0uaXNF
bmNvZGVkSW1tKCkpOworICAgICAgICBBU1NFUlQoIUJhZFJlZyhyZCkpOworICAgICAgICAKKyAg
ICAgICAgdWludDE2X3QqIGFkZHJlc3MgPSBzdGF0aWNfY2FzdDx1aW50MTZfdCo+KGluc3RydWN0
aW9uU3RhcnQpOworICAgICAgICBhZGRyZXNzWzBdID0gdHdvV29yZE9wNWk2SW1tNFJlZzRFbmNv
ZGVkSW1tRmlyc3QoT1BfTU9WX2ltbV9UMywgaW1tKTsKKyAgICAgICAgYWRkcmVzc1sxXSA9IHR3
b1dvcmRPcDVpNkltbTRSZWc0RW5jb2RlZEltbVNlY29uZChyZCwgaW1tKTsKKyAgICAgICAgY2Fj
aGVGbHVzaChhZGRyZXNzLCBzaXplb2YodWludDE2X3QpICogMik7CisgICAgfQogCiAgICAgQUxX
QVlTX0lOTElORSB2b2lkIG1vdihSZWdpc3RlcklEIHJkLCBBUk1UaHVtYkltbWVkaWF0ZSBpbW0p
CiAgICAgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9MaW5rQnVmZmVy
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9MaW5rQnVm
ZmVyLmgJKHJldmlzaW9uIDEzNTIxNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvTGlua0J1ZmZlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yODgsNyArMjg4LDcgQEAgcHJpdmF0
ZToKICAgICBGSU5BTElaRV9DT0RFX0lGKE9wdGlvbnM6OnNob3dEaXNhc3NlbWJseSgpLCBsaW5r
QnVmZmVyUmVmZXJlbmNlLCBkYXRhTG9nQXJndW1lbnRzRm9ySGVhZGluZykKIAogI2RlZmluZSBG
SU5BTElaRV9ERkdfQ09ERShsaW5rQnVmZmVyUmVmZXJlbmNlLCBkYXRhTG9nQXJndW1lbnRzRm9y
SGVhZGluZykgIFwKLSAgICBGSU5BTElaRV9DT0RFX0lGKE9wdGlvbnM6OnNob3dERkdEaXNhc3Nl
bWJseSgpLCBsaW5rQnVmZmVyUmVmZXJlbmNlLCBkYXRhTG9nQXJndW1lbnRzRm9ySGVhZGluZykK
KyAgICBGSU5BTElaRV9DT0RFX0lGKChPcHRpb25zOjpzaG93RGlzYXNzZW1ibHkoKSB8fCBPcHRp
b25zOjpzaG93REZHRGlzYXNzZW1ibHkoKSksIGxpbmtCdWZmZXJSZWZlcmVuY2UsIGRhdGFMb2dB
cmd1bWVudHNGb3JIZWFkaW5nKQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKIApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTXY3LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTXY3
LmgJKHJldmlzaW9uIDEzNTIxNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIv
TWFjcm9Bc3NlbWJsZXJBUk12Ny5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNzYxLDcgKzE3NjEsMTgg
QEAgcHVibGljOgogICAgIAogICAgIHN0YXRpYyBib29sIGNhbkp1bXBSZXBsYWNlUGF0Y2hhYmxl
QnJhbmNoUHRyV2l0aFBhdGNoKCkgeyByZXR1cm4gZmFsc2U7IH0KICAgICAKLSAgICBzdGF0aWMg
Q29kZUxvY2F0aW9uTGFiZWwgc3RhcnRPZlBhdGNoYWJsZUJyYW5jaFB0cldpdGhQYXRjaChDb2Rl
TG9jYXRpb25EYXRhTGFiZWxQdHIpCisgICAgc3RhdGljIENvZGVMb2NhdGlvbkxhYmVsIHN0YXJ0
T2ZCcmFuY2hQdHJXaXRoUGF0Y2hPblJlZ2lzdGVyKENvZGVMb2NhdGlvbkRhdGFMYWJlbFB0ciBs
YWJlbCkKKyAgICB7CisgICAgICAgIGNvbnN0IHVuc2lnbmVkIHR3b1dvcmRPcFNpemUgPSA0Owor
ICAgICAgICByZXR1cm4gbGFiZWwubGFiZWxBdE9mZnNldCgtdHdvV29yZE9wU2l6ZSAqIDIpOwor
ICAgIH0KKyAgICAKKyAgICBzdGF0aWMgdm9pZCByZXZlcnRKdW1wUmVwbGFjZW1lbnRUb0JyYW5j
aFB0cldpdGhQYXRjaChDb2RlTG9jYXRpb25MYWJlbCBpbnN0cnVjdGlvblN0YXJ0LCBSZWdpc3Rl
cklELCB2b2lkKiBpbml0aWFsVmFsdWUpCisgICAgeworICAgICAgICBBUk12N0Fzc2VtYmxlcjo6
cmV2ZXJ0SnVtcFRvX21vdlQzKGluc3RydWN0aW9uU3RhcnQuZGF0YUxvY2F0aW9uKCksIGRhdGFU
ZW1wUmVnaXN0ZXIsIEFSTVRodW1iSW1tZWRpYXRlOjptYWtlVUludDE2KHJlaW50ZXJwcmV0X2Nh
c3Q8dWludHB0cl90Pihpbml0aWFsVmFsdWUpICYgMHhmZmZmKSk7CisgICAgfQorICAgIAorICAg
IHN0YXRpYyBDb2RlTG9jYXRpb25MYWJlbCBzdGFydE9mUGF0Y2hhYmxlQnJhbmNoUHRyV2l0aFBh
dGNoT25BZGRyZXNzKENvZGVMb2NhdGlvbkRhdGFMYWJlbFB0cikKICAgICB7CiAgICAgICAgIFVO
UkVBQ0hBQkxFX0ZPUl9QTEFURk9STSgpOwogICAgICAgICByZXR1cm4gQ29kZUxvY2F0aW9uTGFi
ZWwoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJs
ZXJYODYuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01h
Y3JvQXNzZW1ibGVyWDg2LmgJKHJldmlzaW9uIDEzNTIxNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODYuaAkod29ya2luZyBjb3B5KQpAQCAtMjU1
LDcgKzI1NSwxNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgYm9vbCBjYW5KdW1wUmVwbGFjZVBh
dGNoYWJsZUJyYW5jaFB0cldpdGhQYXRjaCgpIHsgcmV0dXJuIHRydWU7IH0KICAgICAKLSAgICBz
dGF0aWMgQ29kZUxvY2F0aW9uTGFiZWwgc3RhcnRPZlBhdGNoYWJsZUJyYW5jaFB0cldpdGhQYXRj
aChDb2RlTG9jYXRpb25EYXRhTGFiZWxQdHIgbGFiZWwpCisgICAgc3RhdGljIENvZGVMb2NhdGlv
bkxhYmVsIHN0YXJ0T2ZCcmFuY2hQdHJXaXRoUGF0Y2hPblJlZ2lzdGVyKENvZGVMb2NhdGlvbkRh
dGFMYWJlbFB0ciBsYWJlbCkKKyAgICB7CisgICAgICAgIGNvbnN0IGludCBvcGNvZGVCeXRlcyA9
IDE7CisgICAgICAgIGNvbnN0IGludCBtb2RSTUJ5dGVzID0gMTsKKyAgICAgICAgY29uc3QgaW50
IGltbWVkaWF0ZUJ5dGVzID0gNDsKKyAgICAgICAgY29uc3QgaW50IHRvdGFsQnl0ZXMgPSBvcGNv
ZGVCeXRlcyArIG1vZFJNQnl0ZXMgKyBpbW1lZGlhdGVCeXRlczsKKyAgICAgICAgQVNTRVJUKHRv
dGFsQnl0ZXMgPj0gbWF4SnVtcFJlcGxhY2VtZW50U2l6ZSgpKTsKKyAgICAgICAgcmV0dXJuIGxh
YmVsLmxhYmVsQXRPZmZzZXQoLXRvdGFsQnl0ZXMpOworICAgIH0KKyAgICAKKyAgICBzdGF0aWMg
Q29kZUxvY2F0aW9uTGFiZWwgc3RhcnRPZlBhdGNoYWJsZUJyYW5jaFB0cldpdGhQYXRjaE9uQWRk
cmVzcyhDb2RlTG9jYXRpb25EYXRhTGFiZWxQdHIgbGFiZWwpCiAgICAgewogICAgICAgICBjb25z
dCBpbnQgb3Bjb2RlQnl0ZXMgPSAxOwogICAgICAgICBjb25zdCBpbnQgbW9kUk1CeXRlcyA9IDE7
CkBAIC0yNjYsNiArMjc2LDExIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGxhYmVsLmxhYmVs
QXRPZmZzZXQoLXRvdGFsQnl0ZXMpOwogICAgIH0KICAgICAKKyAgICBzdGF0aWMgdm9pZCByZXZl
cnRKdW1wUmVwbGFjZW1lbnRUb0JyYW5jaFB0cldpdGhQYXRjaChDb2RlTG9jYXRpb25MYWJlbCBp
bnN0cnVjdGlvblN0YXJ0LCBSZWdpc3RlcklEIHJlZywgdm9pZCogaW5pdGlhbFZhbHVlKQorICAg
IHsKKyAgICAgICAgWDg2QXNzZW1ibGVyOjpyZXZlcnRKdW1wVG9fY21wbF9pcl9mb3JjZTMyKGlu
c3RydWN0aW9uU3RhcnQuZXhlY3V0YWJsZUFkZHJlc3MoKSwgcmVpbnRlcnByZXRfY2FzdDxpbnRw
dHJfdD4oaW5pdGlhbFZhbHVlKSwgcmVnKTsKKyAgICB9CisKICAgICBzdGF0aWMgdm9pZCByZXZl
cnRKdW1wUmVwbGFjZW1lbnRUb1BhdGNoYWJsZUJyYW5jaFB0cldpdGhQYXRjaChDb2RlTG9jYXRp
b25MYWJlbCBpbnN0cnVjdGlvblN0YXJ0LCBBZGRyZXNzIGFkZHJlc3MsIHZvaWQqIGluaXRpYWxW
YWx1ZSkKICAgICB7CiAgICAgICAgIEFTU0VSVCghYWRkcmVzcy5vZmZzZXQpOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJY
ODZfNjQuaAkocmV2aXNpb24gMTM1MjE2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2Vt
Ymxlci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5oCSh3b3JraW5nIGNvcHkpCkBAIC01ODcsNyArNTg3
LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIGJvb2wgY2FuSnVtcFJlcGxhY2VQYXRjaGFibGVC
cmFuY2hQdHJXaXRoUGF0Y2goKSB7IHJldHVybiB0cnVlOyB9CiAgICAgCi0gICAgc3RhdGljIENv
ZGVMb2NhdGlvbkxhYmVsIHN0YXJ0T2ZQYXRjaGFibGVCcmFuY2hQdHJXaXRoUGF0Y2goQ29kZUxv
Y2F0aW9uRGF0YUxhYmVsUHRyIGxhYmVsKQorICAgIHN0YXRpYyBDb2RlTG9jYXRpb25MYWJlbCBz
dGFydE9mQnJhbmNoUHRyV2l0aFBhdGNoT25SZWdpc3RlcihDb2RlTG9jYXRpb25EYXRhTGFiZWxQ
dHIgbGFiZWwpCiAgICAgewogICAgICAgICBjb25zdCBpbnQgcmV4Qnl0ZXMgPSAxOwogICAgICAg
ICBjb25zdCBpbnQgb3Bjb2RlQnl0ZXMgPSAxOwpAQCAtNTk3LDExICs1OTcsMjEgQEAgcHVibGlj
OgogICAgICAgICByZXR1cm4gbGFiZWwubGFiZWxBdE9mZnNldCgtdG90YWxCeXRlcyk7CiAgICAg
fQogICAgIAorICAgIHN0YXRpYyBDb2RlTG9jYXRpb25MYWJlbCBzdGFydE9mUGF0Y2hhYmxlQnJh
bmNoUHRyV2l0aFBhdGNoT25BZGRyZXNzKENvZGVMb2NhdGlvbkRhdGFMYWJlbFB0ciBsYWJlbCkK
KyAgICB7CisgICAgICAgIHJldHVybiBzdGFydE9mQnJhbmNoUHRyV2l0aFBhdGNoT25SZWdpc3Rl
cihsYWJlbCk7CisgICAgfQorICAgIAogICAgIHN0YXRpYyB2b2lkIHJldmVydEp1bXBSZXBsYWNl
bWVudFRvUGF0Y2hhYmxlQnJhbmNoUHRyV2l0aFBhdGNoKENvZGVMb2NhdGlvbkxhYmVsIGluc3Ry
dWN0aW9uU3RhcnQsIEFkZHJlc3MsIHZvaWQqIGluaXRpYWxWYWx1ZSkKICAgICB7CiAgICAgICAg
IFg4NkFzc2VtYmxlcjo6cmV2ZXJ0SnVtcFRvX21vdnFfaTY0cihpbnN0cnVjdGlvblN0YXJ0LmV4
ZWN1dGFibGVBZGRyZXNzKCksIHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KGluaXRpYWxWYWx1
ZSksIHNjcmF0Y2hSZWdpc3Rlcik7CiAgICAgfQogCisgICAgc3RhdGljIHZvaWQgcmV2ZXJ0SnVt
cFJlcGxhY2VtZW50VG9CcmFuY2hQdHJXaXRoUGF0Y2goQ29kZUxvY2F0aW9uTGFiZWwgaW5zdHJ1
Y3Rpb25TdGFydCwgUmVnaXN0ZXJJRCwgdm9pZCogaW5pdGlhbFZhbHVlKQorICAgIHsKKyAgICAg
ICAgWDg2QXNzZW1ibGVyOjpyZXZlcnRKdW1wVG9fbW92cV9pNjRyKGluc3RydWN0aW9uU3RhcnQu
ZXhlY3V0YWJsZUFkZHJlc3MoKSwgcmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4oaW5pdGlhbFZh
bHVlKSwgc2NyYXRjaFJlZ2lzdGVyKTsKKyAgICB9CisKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNs
YXNzIExpbmtCdWZmZXI7CiAgICAgZnJpZW5kIGNsYXNzIFJlcGF0Y2hCdWZmZXI7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1JlcGF0Y2hCdWZmZXIuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1JlcGF0Y2hCdWZmZXIuaAkocmV2
aXNpb24gMTM1MjE2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9SZXBhdGNo
QnVmZmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTE0MSw5ICsxNDEsMTQgQEAgcHVibGljOgogICAg
ICAgICAgICAgcmVwbGFjZVdpdGhBZGRyZXNzQ29tcHV0YXRpb24obGFiZWwpOwogICAgIH0KIAot
ICAgIHN0YXRpYyBDb2RlTG9jYXRpb25MYWJlbCBzdGFydE9mUGF0Y2hhYmxlQnJhbmNoUHRyV2l0
aFBhdGNoKENvZGVMb2NhdGlvbkRhdGFMYWJlbFB0ciBsYWJlbCkKKyAgICBzdGF0aWMgQ29kZUxv
Y2F0aW9uTGFiZWwgc3RhcnRPZkJyYW5jaFB0cldpdGhQYXRjaE9uUmVnaXN0ZXIoQ29kZUxvY2F0
aW9uRGF0YUxhYmVsUHRyIGxhYmVsKQogICAgIHsKLSAgICAgICAgcmV0dXJuIE1hY3JvQXNzZW1i
bGVyOjpzdGFydE9mUGF0Y2hhYmxlQnJhbmNoUHRyV2l0aFBhdGNoKGxhYmVsKTsKKyAgICAgICAg
cmV0dXJuIE1hY3JvQXNzZW1ibGVyOjpzdGFydE9mQnJhbmNoUHRyV2l0aFBhdGNoT25SZWdpc3Rl
cihsYWJlbCk7CisgICAgfQorICAgIAorICAgIHN0YXRpYyBDb2RlTG9jYXRpb25MYWJlbCBzdGFy
dE9mUGF0Y2hhYmxlQnJhbmNoUHRyV2l0aFBhdGNoT25BZGRyZXNzKENvZGVMb2NhdGlvbkRhdGFM
YWJlbFB0ciBsYWJlbCkKKyAgICB7CisgICAgICAgIHJldHVybiBNYWNyb0Fzc2VtYmxlcjo6c3Rh
cnRPZlBhdGNoYWJsZUJyYW5jaFB0cldpdGhQYXRjaE9uQWRkcmVzcyhsYWJlbCk7CiAgICAgfQog
ICAgIAogICAgIHZvaWQgcmVwbGFjZVdpdGhKdW1wKENvZGVMb2NhdGlvbkxhYmVsIGluc3RydWN0
aW9uU3RhcnQsIENvZGVMb2NhdGlvbkxhYmVsIGRlc3RpbmF0aW9uKQpAQCAtMTU0LDYgKzE1OSwx
MSBAQCBwdWJsaWM6CiAgICAgLy8gVGhpcyBpcyBhICpiaXQqIG9mIGEgc2lsbHkgQVBJLCBzaW5j
ZSB3ZSBjdXJyZW50bHkgYWx3YXlzIGFsc28gcmVwYXRjaCB0aGUKICAgICAvLyBpbW1lZGlhdGUg
YWZ0ZXIgY2FsbGluZyB0aGlzLiBCdXQgSSdtIGZpbmUgd2l0aCB0aGF0LCBzaW5jZSB0aGlzIGp1
c3QgZmVlbHMKICAgICAvLyBsZXNzIHl1Y2t5LgorICAgIHZvaWQgcmV2ZXJ0SnVtcFJlcGxhY2Vt
ZW50VG9CcmFuY2hQdHJXaXRoUGF0Y2goQ29kZUxvY2F0aW9uTGFiZWwgaW5zdHJ1Y3Rpb25TdGFy
dCwgTWFjcm9Bc3NlbWJsZXI6OlJlZ2lzdGVySUQgcmVnLCB2b2lkKiB2YWx1ZSkKKyAgICB7Cisg
ICAgICAgIE1hY3JvQXNzZW1ibGVyOjpyZXZlcnRKdW1wUmVwbGFjZW1lbnRUb0JyYW5jaFB0cldp
dGhQYXRjaChpbnN0cnVjdGlvblN0YXJ0LCByZWcsIHZhbHVlKTsKKyAgICB9CisKICAgICB2b2lk
IHJldmVydEp1bXBSZXBsYWNlbWVudFRvUGF0Y2hhYmxlQnJhbmNoUHRyV2l0aFBhdGNoKENvZGVM
b2NhdGlvbkxhYmVsIGluc3RydWN0aW9uU3RhcnQsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzIGFk
ZHJlc3MsIHZvaWQqIHZhbHVlKQogICAgIHsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OnJldmVy
dEp1bXBSZXBsYWNlbWVudFRvUGF0Y2hhYmxlQnJhbmNoUHRyV2l0aFBhdGNoKGluc3RydWN0aW9u
U3RhcnQsIGFkZHJlc3MsIHZhbHVlKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3Nl
bWJsZXIvWDg2QXNzZW1ibGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Fzc2VtYmxlci9YODZBc3NlbWJsZXIuaAkocmV2aXNpb24gMTM1MjE2KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9YODZBc3NlbWJsZXIuaAkod29ya2luZyBjb3B5KQpAQCAt
MTkwMyw2ICsxOTAzLDIzIEBAIHB1YmxpYzoKICAgICB9CiAjZW5kaWYKICAgICAKKyAgICBzdGF0
aWMgdm9pZCByZXZlcnRKdW1wVG9fY21wbF9pcl9mb3JjZTMyKHZvaWQqIGluc3RydWN0aW9uU3Rh
cnQsIGludDMyX3QgaW1tLCBSZWdpc3RlcklEIGRzdCkKKyAgICB7CisgICAgICAgIGNvbnN0IGlu
dCBvcGNvZGVCeXRlcyA9IDE7CisgICAgICAgIGNvbnN0IGludCBtb2RSTUJ5dGVzID0gMTsKKyAg
ICAgICAgQVNTRVJUKG9wY29kZUJ5dGVzICsgbW9kUk1CeXRlcyA8PSBtYXhKdW1wUmVwbGFjZW1l
bnRTaXplKCkpOworICAgICAgICB1aW50OF90KiBwdHIgPSByZWludGVycHJldF9jYXN0PHVpbnQ4
X3QqPihpbnN0cnVjdGlvblN0YXJ0KTsKKyAgICAgICAgcHRyWzBdID0gT1BfR1JPVVAxX0V2SXo7
CisgICAgICAgIHB0clsxXSA9IChYODZJbnN0cnVjdGlvbkZvcm1hdHRlcjo6TW9kUm1SZWdpc3Rl
ciA8PCA2KSB8IChHUk9VUDFfT1BfQ01QIDw8IDMpIHwgZHN0OworICAgICAgICB1bmlvbiB7Cisg
ICAgICAgICAgICB1aW50MzJfdCBhc1dvcmQ7CisgICAgICAgICAgICB1aW50OF90IGFzQnl0ZXNb
NF07CisgICAgICAgIH0gdTsKKyAgICAgICAgdS5hc1dvcmQgPSBpbW07CisgICAgICAgIGZvciAo
dW5zaWduZWQgaSA9IG9wY29kZUJ5dGVzICsgbW9kUk1CeXRlczsgaSA8IHN0YXRpY19jYXN0PHVu
c2lnbmVkPihtYXhKdW1wUmVwbGFjZW1lbnRTaXplKCkpOyArK2kpCisgICAgICAgICAgICBwdHJb
aV0gPSB1LmFzQnl0ZXNbaSAtIG9wY29kZUJ5dGVzIC0gbW9kUk1CeXRlc107CisgICAgfQorICAg
IAogICAgIHN0YXRpYyB2b2lkIHJldmVydEp1bXBUb19jbXBsX2ltX2ZvcmNlMzIodm9pZCogaW5z
dHJ1Y3Rpb25TdGFydCwgaW50MzJfdCBpbW0sIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgZHN0KQog
ICAgIHsKICAgICAgICAgQVNTRVJUX1VOVVNFRChvZmZzZXQsICFvZmZzZXQpOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rSW5mby5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rSW5mby5jcHAJKHJldmlz
aW9uIDEzNTIxNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0lu
Zm8uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw2ICszNyw3IEBAIHZvaWQgQ2FsbExpbmtJbmZv
Ojp1bmxpbmsoSlNHbG9iYWxEYXRhJiAKIHsKICAgICBBU1NFUlQoaXNMaW5rZWQoKSk7CiAgICAg
CisgICAgcmVwYXRjaEJ1ZmZlci5yZXZlcnRKdW1wUmVwbGFjZW1lbnRUb0JyYW5jaFB0cldpdGhQ
YXRjaChSZXBhdGNoQnVmZmVyOjpzdGFydE9mQnJhbmNoUHRyV2l0aFBhdGNoT25SZWdpc3Rlciho
b3RQYXRoQmVnaW4pLCBzdGF0aWNfY2FzdDxNYWNyb0Fzc2VtYmxlcjo6UmVnaXN0ZXJJRD4oY2Fs
bGVlR1BSKSwgMCk7CiAgICAgaWYgKGlzREZHKSB7CiAjaWYgRU5BQkxFKERGR19KSVQpCiAgICAg
ICAgIHJlcGF0Y2hCdWZmZXIucmVsaW5rKGNhbGxSZXR1cm5Mb2NhdGlvbiwgKGNhbGxUeXBlID09
IENvbnN0cnVjdCA/IGdsb2JhbERhdGEuZ2V0Q1RJU3R1YihERkc6OmxpbmtDb25zdHJ1Y3RUaHVu
a0dlbmVyYXRvcikgOiBnbG9iYWxEYXRhLmdldENUSVN0dWIoREZHOjpsaW5rQ2FsbFRodW5rR2Vu
ZXJhdG9yKSkuY29kZSgpKTsKQEAgLTQ3LDYgKzQ4LDcgQEAgdm9pZCBDYWxsTGlua0luZm86OnVu
bGluayhKU0dsb2JhbERhdGEmIAogICAgICAgICByZXBhdGNoQnVmZmVyLnJlbGluayhjYWxsUmV0
dXJuTG9jYXRpb24sIGNhbGxUeXBlID09IENvbnN0cnVjdCA/IGdsb2JhbERhdGEuaml0U3R1YnMt
PmN0aVZpcnR1YWxDb25zdHJ1Y3RMaW5rKCkgOiBnbG9iYWxEYXRhLmppdFN0dWJzLT5jdGlWaXJ0
dWFsQ2FsbExpbmsoKSk7CiAgICAgaGFzU2VlblNob3VsZFJlcGF0Y2ggPSBmYWxzZTsKICAgICBj
YWxsZWUuY2xlYXIoKTsKKyAgICBzdHViLmNsZWFyKCk7CiAKICAgICAvLyBJdCB3aWxsIGJlIG9u
IGEgbGlzdCBpZiB0aGUgY2FsbGVlIGhhcyBhIGNvZGUgYmxvY2suCiAgICAgaWYgKGlzT25MaXN0
KCkpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rSW5m
by5oCShyZXZpc2lvbiAxMzUyMTYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q2FsbExpbmtJbmZvLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDcgQEAKICNpZm5kZWYg
Q2FsbExpbmtJbmZvX2gKICNkZWZpbmUgQ2FsbExpbmtJbmZvX2gKIAorI2luY2x1ZGUgIkNsb3N1
cmVDYWxsU3R1YlJvdXRpbmUuaCIKICNpbmNsdWRlICJDb2RlTG9jYXRpb24uaCIKICNpbmNsdWRl
ICJKSVRXcml0ZUJhcnJpZXIuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCkBAIC03MCwxMiAr
NzEsMTQgQEAgc3RydWN0IENhbGxMaW5rSW5mbyA6IHB1YmxpYyBCYXNpY1Jhd1NlbgogICAgIENv
ZGVMb2NhdGlvbk5lYXJDYWxsIGhvdFBhdGhPdGhlcjsKICAgICBKSVRXcml0ZUJhcnJpZXI8SlNG
dW5jdGlvbj4gY2FsbGVlOwogICAgIFdyaXRlQmFycmllcjxKU0Z1bmN0aW9uPiBsYXN0U2VlbkNh
bGxlZTsKKyAgICBSZWZQdHI8Q2xvc3VyZUNhbGxTdHViUm91dGluZT4gc3R1YjsKICAgICBib29s
IGhhc1NlZW5TaG91bGRSZXBhdGNoIDogMTsKICAgICBib29sIGlzREZHIDogMTsKICAgICBDYWxs
VHlwZSBjYWxsVHlwZSA6IDY7Ci0gICAgdW5zaWduZWQgYnl0ZWNvZGVJbmRleDsKKyAgICB1bnNp
Z25lZCBjYWxsZWVHUFIgOiA4OworICAgIENvZGVPcmlnaW4gY29kZU9yaWdpbjsKIAotICAgIGJv
b2wgaXNMaW5rZWQoKSB7IHJldHVybiBjYWxsZWU7IH0KKyAgICBib29sIGlzTGlua2VkKCkgeyBy
ZXR1cm4gc3R1YiB8fCBjYWxsZWU7IH0KICAgICB2b2lkIHVubGluayhKU0dsb2JhbERhdGEmLCBS
ZXBhdGNoQnVmZmVyJik7CiAKICAgICBib29sIHNlZW5PbmNlKCkKQEAgLTk2LDcgKzk5LDcgQEAg
aW5saW5lIHZvaWQqIGdldENhbGxMaW5rSW5mb1JldHVybkxvY2F0aQogCiBpbmxpbmUgdW5zaWdu
ZWQgZ2V0Q2FsbExpbmtJbmZvQnl0ZWNvZGVJbmRleChDYWxsTGlua0luZm8qIGNhbGxMaW5rSW5m
bykKIHsKLSAgICByZXR1cm4gY2FsbExpbmtJbmZvLT5ieXRlY29kZUluZGV4OworICAgIHJldHVy
biBjYWxsTGlua0luZm8tPmNvZGVPcmlnaW4uYnl0ZWNvZGVJbmRleDsKIH0KICNlbmRpZiAvLyBF
TkFCTEUoSklUKQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJs
b2NrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29k
ZUJsb2NrLmNwcAkocmV2aXNpb24gMTM1MjE2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0NvZGVCbG9jay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxODgsNyArMjE4OCw3IEBA
IHZvaWQgQ29kZUJsb2NrOjpmaW5hbGl6ZVVuY29uZGl0aW9uYWxseSgKICAgICAvLyBDaGVjayBp
ZiB3ZSdyZSBub3QgbGl2ZS4gSWYgd2UgYXJlLCB0aGVuIGpldHRpc29uLgogICAgIGlmICghKHNo
b3VsZEltbWVkaWF0ZWx5QXNzdW1lTGl2ZW5lc3NEdXJpbmdTY2FuKCkgfHwgbV9kZmdEYXRhLT5s
aXZlbmVzc0hhc0JlZW5Qcm92ZWQpKSB7CiAgICAgICAgIGlmICh2ZXJib3NlVW5saW5raW5nKQot
ICAgICAgICAgICAgZGF0YUxvZygiQ29kZSBibG9jayAlcCBoYXMgZGVhZCB3ZWFrIHJlZmVyZW5j
ZXMsIGpldHRpc29uaW5nIGR1cmluZyBHQy5cbiIsIHRoaXMpOworICAgICAgICAgICAgZGF0YUxv
ZygiQ29kZSBibG9jayAlcCAoZXhlY3V0YWJsZSAlcCkgaGFzIGRlYWQgd2VhayByZWZlcmVuY2Vz
LCBqZXR0aXNvbmluZyBkdXJpbmcgR0MuXG4iLCB0aGlzLCBvd25lckV4ZWN1dGFibGUoKSk7CiAK
ICAgICAgICAgLy8gTWFrZSBzdXJlIHRoYXQgdGhlIGJhc2VsaW5lIEpJVCBrbm93cyB0aGF0IGl0
IHNob3VsZCByZS13YXJtLXVwIGJlZm9yZQogICAgICAgICAvLyBvcHRpbWl6aW5nLgpAQCAtMjI0
NywxMCArMjI0NywxOSBAQCB2b2lkIENvZGVCbG9jazo6ZmluYWxpemVVbmNvbmRpdGlvbmFsbHko
CiAgICAgaWYgKCEhZ2V0SklUQ29kZSgpKSB7CiAgICAgICAgIFJlcGF0Y2hCdWZmZXIgcmVwYXRj
aEJ1ZmZlcih0aGlzKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bWJlck9m
Q2FsbExpbmtJbmZvcygpOyArK2kpIHsKLSAgICAgICAgICAgIGlmIChjYWxsTGlua0luZm8oaSku
aXNMaW5rZWQoKSAmJiAhSGVhcDo6aXNNYXJrZWQoY2FsbExpbmtJbmZvKGkpLmNhbGxlZS5nZXQo
KSkpIHsKLSAgICAgICAgICAgICAgICBpZiAodmVyYm9zZVVubGlua2luZykKLSAgICAgICAgICAg
ICAgICAgICAgZGF0YUxvZygiQ2xlYXJpbmcgY2FsbCBmcm9tICVwIHRvICVwLlxuIiwgdGhpcywg
Y2FsbExpbmtJbmZvKGkpLmNhbGxlZS5nZXQoKSk7Ci0gICAgICAgICAgICAgICAgY2FsbExpbmtJ
bmZvKGkpLnVubGluaygqbV9nbG9iYWxEYXRhLCByZXBhdGNoQnVmZmVyKTsKKyAgICAgICAgICAg
IGlmIChjYWxsTGlua0luZm8oaSkuaXNMaW5rZWQoKSkgeworICAgICAgICAgICAgICAgIGlmIChD
bG9zdXJlQ2FsbFN0dWJSb3V0aW5lKiBzdHViID0gY2FsbExpbmtJbmZvKGkpLnN0dWIuZ2V0KCkp
IHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFIZWFwOjppc01hcmtlZChzdHViLT5zdHJ1Y3R1
cmUoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHx8ICFIZWFwOjppc01hcmtlZChzdHViLT5l
eGVjdXRhYmxlKCkpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAodmVyYm9zZVVubGlu
a2luZykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCJDbGVhcmluZyBjbG9z
dXJlIGNhbGwgZnJvbSAlcCB0byAlcCwgc3R1YiByb3V0aW5lICVwLlxuIiwgdGhpcywgc3R1Yi0+
ZXhlY3V0YWJsZSgpLCBzdHViKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxMaW5rSW5m
byhpKS51bmxpbmsoKm1fZ2xvYmFsRGF0YSwgcmVwYXRjaEJ1ZmZlcik7CisgICAgICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCFIZWFwOjppc01hcmtlZChjYWxs
TGlua0luZm8oaSkuY2FsbGVlLmdldCgpKSkgeworICAgICAgICAgICAgICAgICAgICBpZiAodmVy
Ym9zZVVubGlua2luZykKKyAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIkNsZWFyaW5n
IGNhbGwgZnJvbSAlcCB0byAlcC5cbiIsIHRoaXMsIGNhbGxMaW5rSW5mbyhpKS5jYWxsZWUuZ2V0
KCkpOworICAgICAgICAgICAgICAgICAgICBjYWxsTGlua0luZm8oaSkudW5saW5rKCptX2dsb2Jh
bERhdGEsIHJlcGF0Y2hCdWZmZXIpOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIGlmICghIWNhbGxMaW5rSW5mbyhpKS5sYXN0U2VlbkNhbGxlZQogICAgICAg
ICAgICAgICAgICYmICFIZWFwOjppc01hcmtlZChjYWxsTGlua0luZm8oaSkubGFzdFNlZW5DYWxs
ZWUuZ2V0KCkpKQpAQCAtMjYwNSw2ICsyNjE0LDM1IEBAIEluc3RydWN0aW9uKiBDb2RlQmxvY2s6
OmFkanVzdFBDSWZBdENhbGwKIH0KICNlbmRpZiAvLyBFTkFCTEUoTExJTlQpCiAKKyNpZiBFTkFC
TEUoSklUKQorQ2xvc3VyZUNhbGxTdHViUm91dGluZSogQ29kZUJsb2NrOjpmaW5kQ2xvc3VyZUNh
bGxGb3JSZXR1cm5QQyhSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MpCit7CisgICAgZm9y
ICh1bnNpZ25lZCBpID0gbV9jYWxsTGlua0luZm9zLnNpemUoKTsgaS0tOykgeworICAgICAgICBD
YWxsTGlua0luZm8mIGluZm8gPSBtX2NhbGxMaW5rSW5mb3NbaV07CisgICAgICAgIGlmICghaW5m
by5zdHViKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIGlmICghaW5mby5zdHViLT5j
b2RlKCkuZXhlY3V0YWJsZU1lbW9yeSgpLT5jb250YWlucyhyZXR1cm5BZGRyZXNzLnZhbHVlKCkp
KQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIAorICAgICAgICByZXR1cm4gaW5mby5z
dHViLmdldCgpOworICAgIH0KKyAgICAKKyAgICAvLyBUaGUgc3R1YiByb3V0aW5lIG1heSBoYXZl
IGJlZW4gamV0dGlzb25lZC4gVGhpcyBpcyByYXJlLCBidXQgd2UgaGF2ZSB0byBoYW5kbGUgaXQu
CisgICAgY29uc3QgSklUU3R1YlJvdXRpbmVTZXQmIHNldCA9IG1fZ2xvYmFsRGF0YS0+aGVhcC5q
aXRTdHViUm91dGluZXMoKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSBzZXQuc2l6ZSgpOyBpLS07
KSB7CisgICAgICAgIEdDQXdhcmVKSVRTdHViUm91dGluZSogZ2VuZXJpY1N0dWIgPSBzZXQuYXQo
aSk7CisgICAgICAgIGlmICghZ2VuZXJpY1N0dWItPmlzQ2xvc3VyZUNhbGwoKSkKKyAgICAgICAg
ICAgIGNvbnRpbnVlOworICAgICAgICBDbG9zdXJlQ2FsbFN0dWJSb3V0aW5lKiBzdHViID0gc3Rh
dGljX2Nhc3Q8Q2xvc3VyZUNhbGxTdHViUm91dGluZSo+KGdlbmVyaWNTdHViKTsKKyAgICAgICAg
aWYgKCFzdHViLT5jb2RlKCkuZXhlY3V0YWJsZU1lbW9yeSgpLT5jb250YWlucyhyZXR1cm5BZGRy
ZXNzLnZhbHVlKCkpKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIHJldHVybiBzdHVi
OworICAgIH0KKyAgICAKKyAgICByZXR1cm4gMDsKK30KKyNlbmRpZgorCiB1bnNpZ25lZCBDb2Rl
QmxvY2s6OmJ5dGVjb2RlT2Zmc2V0KEV4ZWNTdGF0ZSogZXhlYywgUmV0dXJuQWRkcmVzc1B0ciBy
ZXR1cm5BZGRyZXNzKQogewogICAgIFVOVVNFRF9QQVJBTShleGVjKTsKQEAgLTI2NDIsNyArMjY4
MCwxNiBAQCB1bnNpZ25lZCBDb2RlQmxvY2s6OmJ5dGVjb2RlT2Zmc2V0KEV4ZWNTCiAgICAgVmVj
dG9yPENhbGxSZXR1cm5PZmZzZXRUb0J5dGVjb2RlT2Zmc2V0PiYgY2FsbEluZGljZXMgPSBtX3Jh
cmVEYXRhLT5tX2NhbGxSZXR1cm5JbmRleFZlY3RvcjsKICAgICBpZiAoIWNhbGxJbmRpY2VzLnNp
emUoKSkKICAgICAgICAgcmV0dXJuIDE7Ci0gICAgcmV0dXJuIGJpbmFyeVNlYXJjaDxDYWxsUmV0
dXJuT2Zmc2V0VG9CeXRlY29kZU9mZnNldCwgdW5zaWduZWQsIGdldENhbGxSZXR1cm5PZmZzZXQ+
KGNhbGxJbmRpY2VzLmJlZ2luKCksIGNhbGxJbmRpY2VzLnNpemUoKSwgZ2V0SklUQ29kZSgpLm9m
ZnNldE9mKHJldHVybkFkZHJlc3MudmFsdWUoKSkpLT5ieXRlY29kZU9mZnNldDsKKyAgICAKKyAg
ICBpZiAoZ2V0SklUQ29kZSgpLmdldEV4ZWN1dGFibGVNZW1vcnkoKS0+Y29udGFpbnMocmV0dXJu
QWRkcmVzcy52YWx1ZSgpKSkgeworICAgICAgICB1bnNpZ25lZCBjYWxsUmV0dXJuT2Zmc2V0ID0g
Z2V0SklUQ29kZSgpLm9mZnNldE9mKHJldHVybkFkZHJlc3MudmFsdWUoKSk7CisgICAgICAgIENh
bGxSZXR1cm5PZmZzZXRUb0J5dGVjb2RlT2Zmc2V0KiByZXN1bHQgPQorICAgICAgICAgICAgYmlu
YXJ5U2VhcmNoPENhbGxSZXR1cm5PZmZzZXRUb0J5dGVjb2RlT2Zmc2V0LCB1bnNpZ25lZCwgZ2V0
Q2FsbFJldHVybk9mZnNldD4oY2FsbEluZGljZXMuYmVnaW4oKSwgY2FsbEluZGljZXMuc2l6ZSgp
LCBjYWxsUmV0dXJuT2Zmc2V0KTsKKyAgICAgICAgQVNTRVJUKHJlc3VsdC0+Y2FsbFJldHVybk9m
ZnNldCA9PSBjYWxsUmV0dXJuT2Zmc2V0KTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdC0+Ynl0ZWNv
ZGVPZmZzZXQ7CisgICAgfQorCisgICAgcmV0dXJuIGZpbmRDbG9zdXJlQ2FsbEZvclJldHVyblBD
KHJldHVybkFkZHJlc3MpLT5jb2RlT3JpZ2luKCkuYnl0ZWNvZGVJbmRleDsKICNlbmRpZiAvLyBF
TkFCTEUoSklUKQogCiAjaWYgIUVOQUJMRShMTElOVCkgJiYgIUVOQUJMRShKSVQpCkBAIC0yNjUw
LDYgKzI2OTcsMjQgQEAgdW5zaWduZWQgQ29kZUJsb2NrOjpieXRlY29kZU9mZnNldChFeGVjUwog
I2VuZGlmCiB9CiAKK2Jvb2wgQ29kZUJsb2NrOjpjb2RlT3JpZ2luRm9yUmV0dXJuKFJldHVybkFk
ZHJlc3NQdHIgcmV0dXJuQWRkcmVzcywgQ29kZU9yaWdpbiYgY29kZU9yaWdpbikKK3sKKyAgICBp
ZiAoIWhhc0NvZGVPcmlnaW5zKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICgh
Z2V0SklUQ29kZSgpLmdldEV4ZWN1dGFibGVNZW1vcnkoKS0+Y29udGFpbnMocmV0dXJuQWRkcmVz
cy52YWx1ZSgpKSkgeworICAgICAgICBjb2RlT3JpZ2luID0gZmluZENsb3N1cmVDYWxsRm9yUmV0
dXJuUEMocmV0dXJuQWRkcmVzcyktPmNvZGVPcmlnaW4oKTsKKyAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgfQorICAgIAorICAgIHVuc2lnbmVkIG9mZnNldCA9IGdldEpJVENvZGUoKS5vZmZzZXRP
ZihyZXR1cm5BZGRyZXNzLnZhbHVlKCkpOworICAgIENvZGVPcmlnaW5BdENhbGxSZXR1cm5PZmZz
ZXQqIGVudHJ5ID0gYmluYXJ5U2VhcmNoPENvZGVPcmlnaW5BdENhbGxSZXR1cm5PZmZzZXQsIHVu
c2lnbmVkLCBnZXRDYWxsUmV0dXJuT2Zmc2V0Rm9yQ29kZU9yaWdpbj4oY29kZU9yaWdpbnMoKS5i
ZWdpbigpLCBjb2RlT3JpZ2lucygpLnNpemUoKSwgb2Zmc2V0LCBXVEY6OktleU11c3ROb3RCZVBy
ZXNlbnRJbkFycmF5KTsKKyAgICBpZiAoZW50cnktPmNhbGxSZXR1cm5PZmZzZXQgIT0gb2Zmc2V0
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgY29kZU9yaWdpbiA9IGVudHJ5LT5jb2RlT3Jp
Z2luOworICAgIHJldHVybiB0cnVlOworfQorCiB2b2lkIENvZGVCbG9jazo6Y2xlYXJFdmFsQ2Fj
aGUoKQogewogICAgIGlmICghIW1fYWx0ZXJuYXRpdmUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCShyZXZpc2lvbiAxMzUyMTYpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTI0
NSw2ICsyNDUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgCiAgICAgICAgIENhbGxMaW5r
SW5mbyYgZ2V0Q2FsbExpbmtJbmZvKHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgpCiAgICAgICAgIHsK
KyAgICAgICAgICAgIEFTU0VSVChKSVRDb2RlOjppc0Jhc2VsaW5lQ29kZShnZXRKSVRUeXBlKCkp
KTsKICAgICAgICAgICAgIHJldHVybiAqKGJpbmFyeVNlYXJjaDxDYWxsTGlua0luZm8sIHVuc2ln
bmVkLCBnZXRDYWxsTGlua0luZm9CeXRlY29kZUluZGV4PihtX2NhbGxMaW5rSW5mb3MuYmVnaW4o
KSwgbV9jYWxsTGlua0luZm9zLnNpemUoKSwgYnl0ZWNvZGVJbmRleCkpOwogICAgICAgICB9CiAj
ZW5kaWYgLy8gRU5BQkxFKEpJVCkKQEAgLTI3NCw2ICsyNzUsMTEgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIHsKICAgICAgICAgICAgIG1faW5jb21pbmdDYWxscy5wdXNoKGluY29taW5nKTsK
ICAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgYm9vbCBpc0luY29taW5nQ2FsbEFscmVhZHlM
aW5rZWQoQ2FsbExpbmtJbmZvKiBpbmNvbWluZykKKyAgICAgICAgeworICAgICAgICAgICAgcmV0
dXJuIG1faW5jb21pbmdDYWxscy5pc09uTGlzdChpbmNvbWluZyk7CisgICAgICAgIH0KICNlbmRp
ZiAvLyBFTkFCTEUoSklUKQogCiAjaWYgRU5BQkxFKExMSU5UKQpAQCAtODEzLDE3ICs4MTksNyBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHJldHVybiBtX3JhcmVEYXRhICYmICEhbV9y
YXJlRGF0YS0+bV9jb2RlT3JpZ2lucy5zaXplKCk7CiAgICAgICAgIH0KICAgICAgICAgCi0gICAg
ICAgIGJvb2wgY29kZU9yaWdpbkZvclJldHVybihSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJl
c3MsIENvZGVPcmlnaW4mIGNvZGVPcmlnaW4pCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICgh
aGFzQ29kZU9yaWdpbnMoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAg
ICAgICB1bnNpZ25lZCBvZmZzZXQgPSBnZXRKSVRDb2RlKCkub2Zmc2V0T2YocmV0dXJuQWRkcmVz
cy52YWx1ZSgpKTsKLSAgICAgICAgICAgIENvZGVPcmlnaW5BdENhbGxSZXR1cm5PZmZzZXQqIGVu
dHJ5ID0gYmluYXJ5U2VhcmNoPENvZGVPcmlnaW5BdENhbGxSZXR1cm5PZmZzZXQsIHVuc2lnbmVk
LCBnZXRDYWxsUmV0dXJuT2Zmc2V0Rm9yQ29kZU9yaWdpbj4oY29kZU9yaWdpbnMoKS5iZWdpbigp
LCBjb2RlT3JpZ2lucygpLnNpemUoKSwgb2Zmc2V0LCBXVEY6OktleU11c3ROb3RCZVByZXNlbnRJ
bkFycmF5KTsKLSAgICAgICAgICAgIGlmIChlbnRyeS0+Y2FsbFJldHVybk9mZnNldCAhPSBvZmZz
ZXQpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgY29kZU9yaWdp
biA9IGVudHJ5LT5jb2RlT3JpZ2luOwotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAg
IH0KKyAgICAgICAgYm9vbCBjb2RlT3JpZ2luRm9yUmV0dXJuKFJldHVybkFkZHJlc3NQdHIsIENv
ZGVPcmlnaW4mKTsKICAgICAgICAgCiAgICAgICAgIENvZGVPcmlnaW4gY29kZU9yaWdpbih1bnNp
Z25lZCBpbmRleCkKICAgICAgICAgewpAQCAtMTE4Nyw2ICsxMTgzLDEwIEBAIG5hbWVzcGFjZSBK
U0MgewogCiAgICAgcHJpdmF0ZToKICAgICAgICAgZnJpZW5kIGNsYXNzIERGR0NvZGVCbG9ja3M7
CisKKyNpZiBFTkFCTEUoSklUKQorICAgICAgICBDbG9zdXJlQ2FsbFN0dWJSb3V0aW5lKiBmaW5k
Q2xvc3VyZUNhbGxGb3JSZXR1cm5QQyhSZXR1cm5BZGRyZXNzUHRyKTsKKyNlbmRpZgogICAgICAg
ICAKICNpZiBFTkFCTEUoREZHX0pJVCkKICAgICAgICAgdm9pZCB0YWxseUZyZXF1ZW50RXhpdFNp
dGVzKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVy
LmNwcAkocmV2aXNpb24gMTM1MjE2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdK
SVRDb21waWxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4OCwxMSArMTg4LDEyIEBAIHZvaWQg
SklUQ29tcGlsZXI6OmxpbmsoTGlua0J1ZmZlciYgbGlua0IKICAgICAgICAgQ2FsbExpbmtJbmZv
JiBpbmZvID0gbV9jb2RlQmxvY2stPmNhbGxMaW5rSW5mbyhpKTsKICAgICAgICAgaW5mby5jYWxs
VHlwZSA9IG1fanNDYWxsc1tpXS5tX2NhbGxUeXBlOwogICAgICAgICBpbmZvLmlzREZHID0gdHJ1
ZTsKLSAgICAgICAgaW5mby5ieXRlY29kZUluZGV4ID0gbV9qc0NhbGxzW2ldLm1fY29kZU9yaWdp
bi5ieXRlY29kZUluZGV4OworICAgICAgICBpbmZvLmNvZGVPcmlnaW4gPSBtX2pzQ2FsbHNbaV0u
bV9jb2RlT3JpZ2luOwogICAgICAgICBsaW5rQnVmZmVyLmxpbmsobV9qc0NhbGxzW2ldLm1fc2xv
d0NhbGwsIEZ1bmN0aW9uUHRyKChtX2dsb2JhbERhdGEtPmdldENUSVN0dWIoaW5mby5jYWxsVHlw
ZSA9PSBDYWxsTGlua0luZm86OkNvbnN0cnVjdCA/IGxpbmtDb25zdHJ1Y3RUaHVua0dlbmVyYXRv
ciA6IGxpbmtDYWxsVGh1bmtHZW5lcmF0b3IpKS5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3MoKSkp
OwogICAgICAgICBpbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbiA9IGxpbmtCdWZmZXIubG9jYXRpb25P
Zk5lYXJDYWxsKG1fanNDYWxsc1tpXS5tX3Nsb3dDYWxsKTsKICAgICAgICAgaW5mby5ob3RQYXRo
QmVnaW4gPSBsaW5rQnVmZmVyLmxvY2F0aW9uT2YobV9qc0NhbGxzW2ldLm1fdGFyZ2V0VG9DaGVj
ayk7CiAgICAgICAgIGluZm8uaG90UGF0aE90aGVyID0gbGlua0J1ZmZlci5sb2NhdGlvbk9mTmVh
ckNhbGwobV9qc0NhbGxzW2ldLm1fZmFzdENhbGwpOworICAgICAgICBpbmZvLmNhbGxlZUdQUiA9
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX2pzQ2FsbHNbaV0ubV9jYWxsZWUpOwogICAgIH0KICAg
ICAKICAgICBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgb3NyRXhpdFRodW5rID0gZ2xvYmFsRGF0YSgp
LT5nZXRDVElTdHViKG9zckV4aXRHZW5lcmF0aW9uVGh1bmtHZW5lcmF0b3IpOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuaAkocmV2aXNpb24gMTM1MjE2
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zNTcsOSArMzU3LDkgQEAgcHVibGljOgogICAgICAgICBtX3Byb3BlcnR5QWNj
ZXNzZXMuYXBwZW5kKHJlY29yZCk7CiAgICAgfQogCi0gICAgdm9pZCBhZGRKU0NhbGwoQ2FsbCBm
YXN0Q2FsbCwgQ2FsbCBzbG93Q2FsbCwgRGF0YUxhYmVsUHRyIHRhcmdldFRvQ2hlY2ssIENhbGxM
aW5rSW5mbzo6Q2FsbFR5cGUgY2FsbFR5cGUsIENvZGVPcmlnaW4gY29kZU9yaWdpbikKKyAgICB2
b2lkIGFkZEpTQ2FsbChDYWxsIGZhc3RDYWxsLCBDYWxsIHNsb3dDYWxsLCBEYXRhTGFiZWxQdHIg
dGFyZ2V0VG9DaGVjaywgQ2FsbExpbmtJbmZvOjpDYWxsVHlwZSBjYWxsVHlwZSwgR1BSUmVnIGNh
bGxlZSwgQ29kZU9yaWdpbiBjb2RlT3JpZ2luKQogICAgIHsKLSAgICAgICAgbV9qc0NhbGxzLmFw
cGVuZChKU0NhbGxSZWNvcmQoZmFzdENhbGwsIHNsb3dDYWxsLCB0YXJnZXRUb0NoZWNrLCBjYWxs
VHlwZSwgY29kZU9yaWdpbikpOworICAgICAgICBtX2pzQ2FsbHMuYXBwZW5kKEpTQ2FsbFJlY29y
ZChmYXN0Q2FsbCwgc2xvd0NhbGwsIHRhcmdldFRvQ2hlY2ssIGNhbGxUeXBlLCBjYWxsZWUsIGNv
ZGVPcmlnaW4pKTsKICAgICB9CiAgICAgCiAgICAgdm9pZCBhZGRXZWFrUmVmZXJlbmNlKEpTQ2Vs
bCogdGFyZ2V0KQpAQCAtNDQwLDExICs0NDAsMTIgQEAgcHJpdmF0ZToKICAgICBWZWN0b3I8Q2Fs
bEV4Y2VwdGlvblJlY29yZD4gbV9leGNlcHRpb25DaGVja3M7CiAgICAgCiAgICAgc3RydWN0IEpT
Q2FsbFJlY29yZCB7Ci0gICAgICAgIEpTQ2FsbFJlY29yZChDYWxsIGZhc3RDYWxsLCBDYWxsIHNs
b3dDYWxsLCBEYXRhTGFiZWxQdHIgdGFyZ2V0VG9DaGVjaywgQ2FsbExpbmtJbmZvOjpDYWxsVHlw
ZSBjYWxsVHlwZSwgQ29kZU9yaWdpbiBjb2RlT3JpZ2luKQorICAgICAgICBKU0NhbGxSZWNvcmQo
Q2FsbCBmYXN0Q2FsbCwgQ2FsbCBzbG93Q2FsbCwgRGF0YUxhYmVsUHRyIHRhcmdldFRvQ2hlY2ss
IENhbGxMaW5rSW5mbzo6Q2FsbFR5cGUgY2FsbFR5cGUsIEdQUlJlZyBjYWxsZWUsIENvZGVPcmln
aW4gY29kZU9yaWdpbikKICAgICAgICAgICAgIDogbV9mYXN0Q2FsbChmYXN0Q2FsbCkKICAgICAg
ICAgICAgICwgbV9zbG93Q2FsbChzbG93Q2FsbCkKICAgICAgICAgICAgICwgbV90YXJnZXRUb0No
ZWNrKHRhcmdldFRvQ2hlY2spCiAgICAgICAgICAgICAsIG1fY2FsbFR5cGUoY2FsbFR5cGUpCisg
ICAgICAgICAgICAsIG1fY2FsbGVlKGNhbGxlZSkKICAgICAgICAgICAgICwgbV9jb2RlT3JpZ2lu
KGNvZGVPcmlnaW4pCiAgICAgICAgIHsKICAgICAgICAgfQpAQCAtNDUzLDYgKzQ1NCw3IEBAIHBy
aXZhdGU6CiAgICAgICAgIENhbGwgbV9zbG93Q2FsbDsKICAgICAgICAgRGF0YUxhYmVsUHRyIG1f
dGFyZ2V0VG9DaGVjazsKICAgICAgICAgQ2FsbExpbmtJbmZvOjpDYWxsVHlwZSBtX2NhbGxUeXBl
OworICAgICAgICBHUFJSZWcgbV9jYWxsZWU7CiAgICAgICAgIENvZGVPcmlnaW4gbV9jb2RlT3Jp
Z2luOwogICAgIH07CiAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09w
ZXJhdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
T3BlcmF0aW9ucy5jcHAJKHJldmlzaW9uIDEzNTIxNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwNjIsMTQgKzEwNjIs
MTQgQEAgY2hhciogREZHX09QRVJBVElPTiBvcGVyYXRpb25MaW5rQ29uc3RydQogICAgIHJldHVy
biBsaW5rRm9yKGV4ZWNDYWxsZWUsIENvZGVGb3JDb25zdHJ1Y3QpOwogfQogCi1pbmxpbmUgY2hh
ciogdmlydHVhbEZvcihFeGVjU3RhdGUqIGV4ZWNDYWxsZWUsIENvZGVTcGVjaWFsaXphdGlvbktp
bmQga2luZCkKK2lubGluZSBjaGFyKiB2aXJ0dWFsRm9yV2l0aEZ1bmN0aW9uKEV4ZWNTdGF0ZSog
ZXhlY0NhbGxlZSwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kLCBKU0NlbGwqJiBjYWxsZWVB
c0Z1bmN0aW9uQ2VsbCkKIHsKICAgICBFeGVjU3RhdGUqIGV4ZWMgPSBleGVjQ2FsbGVlLT5jYWxs
ZXJGcmFtZSgpOwogICAgIEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSA9ICZleGVjLT5nbG9iYWxE
YXRhKCk7CiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcihnbG9iYWxEYXRhLCBleGVj
KTsKIAogICAgIEpTVmFsdWUgY2FsbGVlQXNWYWx1ZSA9IGV4ZWNDYWxsZWUtPmNhbGxlZUFzVmFs
dWUoKTsKLSAgICBKU0NlbGwqIGNhbGxlZUFzRnVuY3Rpb25DZWxsID0gZ2V0SlNGdW5jdGlvbihj
YWxsZWVBc1ZhbHVlKTsKKyAgICBjYWxsZWVBc0Z1bmN0aW9uQ2VsbCA9IGdldEpTRnVuY3Rpb24o
Y2FsbGVlQXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYWxsZWVBc0Z1bmN0aW9uQ2VsbCkp
CiAgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNoYXIqPihoYW5kbGVIb3N0Q2FsbChl
eGVjQ2FsbGVlLCBjYWxsZWVBc1ZhbHVlLCBraW5kKSk7CiAgICAgCkBAIC0xMDg3LDYgKzEwODcs
NTYgQEAgaW5saW5lIGNoYXIqIHZpcnR1YWxGb3IoRXhlY1N0YXRlKiBleGVjQwogICAgIHJldHVy
biByZWludGVycHJldF9jYXN0PGNoYXIqPihleGVjdXRhYmxlLT5nZW5lcmF0ZWRKSVRDb2RlV2l0
aEFyaXR5Q2hlY2tGb3Ioa2luZCkuZXhlY3V0YWJsZUFkZHJlc3MoKSk7CiB9CiAKK2lubGluZSBj
aGFyKiB2aXJ0dWFsRm9yKEV4ZWNTdGF0ZSogZXhlY0NhbGxlZSwgQ29kZVNwZWNpYWxpemF0aW9u
S2luZCBraW5kKQoreworICAgIEpTQ2VsbCogY2FsbGVlQXNGdW5jdGlvbkNlbGxJZ25vcmVkOwor
ICAgIHJldHVybiB2aXJ0dWFsRm9yV2l0aEZ1bmN0aW9uKGV4ZWNDYWxsZWUsIGtpbmQsIGNhbGxl
ZUFzRnVuY3Rpb25DZWxsSWdub3JlZCk7Cit9CisKK3N0YXRpYyBib29sIGF0dGVtcHRUb09wdGlt
aXplQ2xvc3VyZUNhbGwoRXhlY1N0YXRlKiBleGVjQ2FsbGVlLCBKU0NlbGwqIGNhbGxlZUFzRnVu
Y3Rpb25DZWxsLCBDYWxsTGlua0luZm8mIGNhbGxMaW5rSW5mbykKK3sKKyAgICBpZiAoIWNhbGxl
ZUFzRnVuY3Rpb25DZWxsKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgSlNGdW5j
dGlvbiogY2FsbGVlID0ganNDYXN0PEpTRnVuY3Rpb24qPihjYWxsZWVBc0Z1bmN0aW9uQ2VsbCk7
CisgICAgSlNGdW5jdGlvbiogb2xkQ2FsbGVlID0gY2FsbExpbmtJbmZvLmNhbGxlZS5nZXQoKTsK
KyAgICAKKyAgICBpZiAoIW9sZENhbGxlZQorICAgICAgICB8fCBvbGRDYWxsZWUtPnN0cnVjdHVy
ZSgpICE9IGNhbGxlZS0+c3RydWN0dXJlKCkKKyAgICAgICAgfHwgb2xkQ2FsbGVlLT5leGVjdXRh
YmxlKCkgIT0gY2FsbGVlLT5leGVjdXRhYmxlKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAKKyAgICBBU1NFUlQoY2FsbGVlLT5leGVjdXRhYmxlKCktPmhhc0pJVENvZGVGb3JDYWxsKCkp
OworICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBjb2RlUHRyID0gY2FsbGVlLT5leGVjdXRhYmxl
KCktPmdlbmVyYXRlZEpJVENvZGVGb3JDYWxsKCkuYWRkcmVzc0ZvckNhbGwoKTsKKyAgICAKKyAg
ICBDb2RlQmxvY2sqIGNvZGVCbG9jazsKKyAgICBpZiAoY2FsbGVlLT5leGVjdXRhYmxlKCktPmlz
SG9zdEZ1bmN0aW9uKCkpCisgICAgICAgIGNvZGVCbG9jayA9IDA7CisgICAgZWxzZSB7CisgICAg
ICAgIGNvZGVCbG9jayA9ICZqc0Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4oY2FsbGVlLT5leGVj
dXRhYmxlKCkpLT5nZW5lcmF0ZWRCeXRlY29kZUZvckNhbGwoKTsKKyAgICAgICAgaWYgKGV4ZWND
YWxsZWUtPmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKCkgPCBzdGF0aWNfY2FzdDxzaXplX3Q+
KGNvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICB9CisgICAgCisgICAgZGZnTGlua0Nsb3N1cmVDYWxsKAorICAgICAgICBleGVjQ2FsbGVl
LCBjYWxsTGlua0luZm8sIGNvZGVCbG9jaywKKyAgICAgICAgY2FsbGVlLT5zdHJ1Y3R1cmUoKSwg
Y2FsbGVlLT5leGVjdXRhYmxlKCksIGNvZGVQdHIpOworICAgIAorICAgIHJldHVybiB0cnVlOwor
fQorCitjaGFyKiBERkdfT1BFUkFUSU9OIG9wZXJhdGlvbkxpbmtDbG9zdXJlQ2FsbChFeGVjU3Rh
dGUqIGV4ZWNDYWxsZWUpCit7CisgICAgSlNDZWxsKiBjYWxsZWVBc0Z1bmN0aW9uQ2VsbDsKKyAg
ICBjaGFyKiByZXN1bHQgPSB2aXJ0dWFsRm9yV2l0aEZ1bmN0aW9uKGV4ZWNDYWxsZWUsIENvZGVG
b3JDYWxsLCBjYWxsZWVBc0Z1bmN0aW9uQ2VsbCk7CisgICAgQ2FsbExpbmtJbmZvJiBjYWxsTGlu
a0luZm8gPSBleGVjQ2FsbGVlLT5jYWxsZXJGcmFtZSgpLT5jb2RlQmxvY2soKS0+Z2V0Q2FsbExp
bmtJbmZvKGV4ZWNDYWxsZWUtPnJldHVyblBDKCkpOworCisgICAgaWYgKCFhdHRlbXB0VG9PcHRp
bWl6ZUNsb3N1cmVDYWxsKGV4ZWNDYWxsZWUsIGNhbGxlZUFzRnVuY3Rpb25DZWxsLCBjYWxsTGlu
a0luZm8pKQorICAgICAgICBkZmdMaW5rU2xvd0ZvcihleGVjQ2FsbGVlLCBjYWxsTGlua0luZm8s
IENvZGVGb3JDYWxsKTsKKyAgICAKKyAgICByZXR1cm4gcmVzdWx0OworfQorCiBjaGFyKiBERkdf
T1BFUkFUSU9OIG9wZXJhdGlvblZpcnR1YWxDYWxsKEV4ZWNTdGF0ZSogZXhlY0NhbGxlZSkKIHsg
ICAgCiAgICAgcmV0dXJuIHZpcnR1YWxGb3IoZXhlY0NhbGxlZSwgQ29kZUZvckNhbGwpOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgJKHJldmlzaW9uIDEz
NTIxNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xODEsNiArMTgxLDcgQEAgc2l6ZV90IERGR19PUEVSQVRJT04gb3BlcmF0
aW9uQ29tcGFyZVN0cgogc2l6ZV90IERGR19PUEVSQVRJT04gb3BlcmF0aW9uQ29tcGFyZVN0cmlj
dEVxKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRPcDIpIFdURl9JTlRFUk5BTDsKIGNoYXIqIERGR19PUEVSQVRJT04gb3BlcmF0aW9u
VmlydHVhbENhbGwoRXhlY1N0YXRlKikgV1RGX0lOVEVSTkFMOwogY2hhciogREZHX09QRVJBVElP
TiBvcGVyYXRpb25MaW5rQ2FsbChFeGVjU3RhdGUqKSBXVEZfSU5URVJOQUw7CitjaGFyKiBERkdf
T1BFUkFUSU9OIG9wZXJhdGlvbkxpbmtDbG9zdXJlQ2FsbChFeGVjU3RhdGUqKSBXVEZfSU5URVJO
QUw7CiBjaGFyKiBERkdfT1BFUkFUSU9OIG9wZXJhdGlvblZpcnR1YWxDb25zdHJ1Y3QoRXhlY1N0
YXRlKikgV1RGX0lOVEVSTkFMOwogY2hhciogREZHX09QRVJBVElPTiBvcGVyYXRpb25MaW5rQ29u
c3RydWN0KEV4ZWNTdGF0ZSopIFdURl9JTlRFUk5BTDsKIEpTQ2VsbCogREZHX09QRVJBVElPTiBv
cGVyYXRpb25DcmVhdGVBY3RpdmF0aW9uKEV4ZWNTdGF0ZSopIFdURl9JTlRFUk5BTDsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUmVwYXRjaC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdSZXBhdGNoLmNwcAkocmV2aXNpb24gMTM1MjE2
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdSZXBhdGNoLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTE4LDcgKzExOCw3IEBAIHN0YXRpYyB2b2lkIHJlcGxhY2VXaXRoSnVtcChSZXBh
dGNoQnVmZmUKIHsKICAgICBpZiAoTWFjcm9Bc3NlbWJsZXI6OmNhbkp1bXBSZXBsYWNlUGF0Y2hh
YmxlQnJhbmNoUHRyV2l0aFBhdGNoKCkpIHsKICAgICAgICAgcmVwYXRjaEJ1ZmZlci5yZXBsYWNl
V2l0aEp1bXAoCi0gICAgICAgICAgICBSZXBhdGNoQnVmZmVyOjpzdGFydE9mUGF0Y2hhYmxlQnJh
bmNoUHRyV2l0aFBhdGNoKAorICAgICAgICAgICAgUmVwYXRjaEJ1ZmZlcjo6c3RhcnRPZlBhdGNo
YWJsZUJyYW5jaFB0cldpdGhQYXRjaE9uQWRkcmVzcygKICAgICAgICAgICAgICAgICBzdHViSW5m
by5jYWxsUmV0dXJuTG9jYXRpb24uZGF0YUxhYmVsUHRyQXRPZmZzZXQoCiAgICAgICAgICAgICAg
ICAgICAgIC0oaW50cHRyX3Qpc3R1YkluZm8ucGF0Y2guZGZnLmRlbHRhQ2hlY2tJbW1Ub0NhbGwp
KSwKICAgICAgICAgICAgIENvZGVMb2NhdGlvbkxhYmVsKHRhcmdldCkpOwpAQCAtMTExMyw4ICsx
MTEzLDIwIEBAIHZvaWQgZGZnQnVpbGRQdXRCeUlkTGlzdChFeGVjU3RhdGUqIGV4ZWMKICAgICAg
ICAgZGZnUmVwYXRjaENhbGwoZXhlYy0+Y29kZUJsb2NrKCksIHN0dWJJbmZvLmNhbGxSZXR1cm5M
b2NhdGlvbiwgYXBwcm9wcmlhdGVHZW5lcmljUHV0QnlJZEZ1bmN0aW9uKHNsb3QsIHB1dEtpbmQp
KTsKIH0KIAorc3RhdGljIHZvaWQgbGlua1Nsb3dGb3IoUmVwYXRjaEJ1ZmZlciYgcmVwYXRjaEJ1
ZmZlciwgSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBDYWxsTGlua0luZm8mIGNhbGxMaW5rSW5m
bywgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKQoreworICAgIGlmIChraW5kID09IENvZGVG
b3JDYWxsKSB7CisgICAgICAgIHJlcGF0Y2hCdWZmZXIucmVsaW5rKGNhbGxMaW5rSW5mby5jYWxs
UmV0dXJuTG9jYXRpb24sIGdsb2JhbERhdGEtPmdldENUSVN0dWIodmlydHVhbENhbGxUaHVua0dl
bmVyYXRvcikuY29kZSgpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBBU1NFUlQoa2lu
ZCA9PSBDb2RlRm9yQ29uc3RydWN0KTsKKyAgICByZXBhdGNoQnVmZmVyLnJlbGluayhjYWxsTGlu
a0luZm8uY2FsbFJldHVybkxvY2F0aW9uLCBnbG9iYWxEYXRhLT5nZXRDVElTdHViKHZpcnR1YWxD
b25zdHJ1Y3RUaHVua0dlbmVyYXRvcikuY29kZSgpKTsKK30KKwogdm9pZCBkZmdMaW5rRm9yKEV4
ZWNTdGF0ZSogZXhlYywgQ2FsbExpbmtJbmZvJiBjYWxsTGlua0luZm8sIENvZGVCbG9jayogY2Fs
bGVlQ29kZUJsb2NrLCBKU0Z1bmN0aW9uKiBjYWxsZWUsIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBj
b2RlUHRyLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpCiB7CisgICAgQVNTRVJUKCFjYWxs
TGlua0luZm8uc3R1Yik7CisgICAgCiAgICAgQ29kZUJsb2NrKiBjYWxsZXJDb2RlQmxvY2sgPSBl
eGVjLT5jYWxsZXJGcmFtZSgpLT5jb2RlQmxvY2soKTsKICAgICBKU0dsb2JhbERhdGEqIGdsb2Jh
bERhdGEgPSBjYWxsZXJDb2RlQmxvY2stPmdsb2JhbERhdGEoKTsKICAgICAKQEAgLTExMjksMTEg
KzExNDEsMTEwIEBAIHZvaWQgZGZnTGlua0ZvcihFeGVjU3RhdGUqIGV4ZWMsIENhbGxMaW4KICAg
ICAgICAgY2FsbGVlQ29kZUJsb2NrLT5saW5rSW5jb21pbmdDYWxsKCZjYWxsTGlua0luZm8pOwog
ICAgIAogICAgIGlmIChraW5kID09IENvZGVGb3JDYWxsKSB7Ci0gICAgICAgIHJlcGF0Y2hCdWZm
ZXIucmVsaW5rKGNhbGxMaW5rSW5mby5jYWxsUmV0dXJuTG9jYXRpb24sIGdsb2JhbERhdGEtPmdl
dENUSVN0dWIodmlydHVhbENhbGxUaHVua0dlbmVyYXRvcikuY29kZSgpKTsKKyAgICAgICAgcmVw
YXRjaEJ1ZmZlci5yZWxpbmsoY2FsbExpbmtJbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbiwgZ2xvYmFs
RGF0YS0+Z2V0Q1RJU3R1YihsaW5rQ2xvc3VyZUNhbGxUaHVua0dlbmVyYXRvcikuY29kZSgpKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KKyAgICAKICAgICBBU1NFUlQoa2luZCA9PSBDb2RlRm9y
Q29uc3RydWN0KTsKLSAgICByZXBhdGNoQnVmZmVyLnJlbGluayhjYWxsTGlua0luZm8uY2FsbFJl
dHVybkxvY2F0aW9uLCBnbG9iYWxEYXRhLT5nZXRDVElTdHViKHZpcnR1YWxDb25zdHJ1Y3RUaHVu
a0dlbmVyYXRvcikuY29kZSgpKTsKKyAgICBsaW5rU2xvd0ZvcihyZXBhdGNoQnVmZmVyLCBnbG9i
YWxEYXRhLCBjYWxsTGlua0luZm8sIENvZGVGb3JDb25zdHJ1Y3QpOworfQorCit2b2lkIGRmZ0xp
bmtTbG93Rm9yKEV4ZWNTdGF0ZSogZXhlYywgQ2FsbExpbmtJbmZvJiBjYWxsTGlua0luZm8sIENv
ZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkKK3sKKyAgICBDb2RlQmxvY2sqIGNhbGxlckNvZGVC
bG9jayA9IGV4ZWMtPmNhbGxlckZyYW1lKCktPmNvZGVCbG9jaygpOworICAgIEpTR2xvYmFsRGF0
YSogZ2xvYmFsRGF0YSA9IGNhbGxlckNvZGVCbG9jay0+Z2xvYmFsRGF0YSgpOworICAgIAorICAg
IFJlcGF0Y2hCdWZmZXIgcmVwYXRjaEJ1ZmZlcihjYWxsZXJDb2RlQmxvY2spOworICAgIAorICAg
IGxpbmtTbG93Rm9yKHJlcGF0Y2hCdWZmZXIsIGdsb2JhbERhdGEsIGNhbGxMaW5rSW5mbywga2lu
ZCk7Cit9CisKK3ZvaWQgZGZnTGlua0Nsb3N1cmVDYWxsKEV4ZWNTdGF0ZSogZXhlYywgQ2FsbExp
bmtJbmZvJiBjYWxsTGlua0luZm8sIENvZGVCbG9jayogY2FsbGVlQ29kZUJsb2NrLCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSwgRXhlY3V0YWJsZUJhc2UqIGV4ZWN1dGFibGUsIE1hY3JvQXNzZW1ibGVy
Q29kZVB0ciBjb2RlUHRyKQoreworICAgIEFTU0VSVCghY2FsbExpbmtJbmZvLnN0dWIpOworICAg
IAorICAgIENvZGVCbG9jayogY2FsbGVyQ29kZUJsb2NrID0gZXhlYy0+Y2FsbGVyRnJhbWUoKS0+
Y29kZUJsb2NrKCk7CisgICAgSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhID0gY2FsbGVyQ29kZUJs
b2NrLT5nbG9iYWxEYXRhKCk7CisgICAgCisgICAgR1BSUmVnIGNhbGxlZUdQUiA9IHN0YXRpY19j
YXN0PEdQUlJlZz4oY2FsbExpbmtJbmZvLmNhbGxlZUdQUik7CisgICAgCisgICAgQ0NhbGxIZWxw
ZXJzIHN0dWJKaXQoZ2xvYmFsRGF0YSwgY2FsbGVyQ29kZUJsb2NrKTsKKyAgICAKKyAgICBDQ2Fs
bEhlbHBlcnM6Okp1bXBMaXN0IHNsb3dQYXRoOworICAgIAorI2lmIFVTRShKU1ZBTFVFNjQpCisg
ICAgc2xvd1BhdGguYXBwZW5kKAorICAgICAgICBzdHViSml0LmJyYW5jaFRlc3Q2NCgKKyAgICAg
ICAgICAgIENDYWxsSGVscGVyczo6Tm9uWmVybywgY2FsbGVlR1BSLCBHUFJJbmZvOjp0YWdNYXNr
UmVnaXN0ZXIpKTsKKyNlbHNlCisgICAgLy8gV2Ugd291bGQgaGF2ZSBhbHJlYWR5IGNoZWNrZWQg
dGhhdCB0aGUgY2FsbGVlIGlzIGEgY2VsbC4KKyNlbmRpZgorICAgIAorICAgIHNsb3dQYXRoLmFw
cGVuZCgKKyAgICAgICAgc3R1YkppdC5icmFuY2hQdHIoCisgICAgICAgICAgICBDQ2FsbEhlbHBl
cnM6Ok5vdEVxdWFsLAorICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKGNhbGxlZUdQ
UiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksCisgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6
OlRydXN0ZWRJbW1QdHIoc3RydWN0dXJlKSkpOworICAgIAorICAgIHNsb3dQYXRoLmFwcGVuZCgK
KyAgICAgICAgc3R1YkppdC5icmFuY2hQdHIoCisgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6Ok5v
dEVxdWFsLAorICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKGNhbGxlZUdQUiwgSlNG
dW5jdGlvbjo6b2Zmc2V0T2ZFeGVjdXRhYmxlKCkpLAorICAgICAgICAgICAgQ0NhbGxIZWxwZXJz
OjpUcnVzdGVkSW1tUHRyKGV4ZWN1dGFibGUpKSk7CisgICAgCisgICAgc3R1YkppdC5sb2FkUHRy
KAorICAgICAgICBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoY2FsbGVlR1BSLCBKU0Z1bmN0aW9uOjpv
ZmZzZXRPZlNjb3BlQ2hhaW4oKSksCisgICAgICAgIEdQUkluZm86OnJldHVyblZhbHVlR1BSKTsK
KworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgc3R1YkppdC5zdG9yZTY0KAorICAgICAgICBHUFJJ
bmZvOjpyZXR1cm5WYWx1ZUdQUiwKKyAgICAgICAgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKEdQUklu
Zm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBzdGF0aWNfY2FzdDxwdHJkaWZmX3Q+KHNpemVvZihSZWdp
c3RlcikgKiBKU1N0YWNrOjpTY29wZUNoYWluKSkpOworI2Vsc2UKKyAgICBzdHViSml0LnN0b3Jl
UHRyKAorICAgICAgICBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUiwKKyAgICAgICAgQ0NhbGxIZWxw
ZXJzOjpBZGRyZXNzKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBzdGF0aWNfY2FzdDxwdHJk
aWZmX3Q+KHNpemVvZihSZWdpc3RlcikgKiBKU1N0YWNrOjpTY29wZUNoYWluKSArIE9CSkVDVF9P
RkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMucGF5bG9hZCkpKTsKKyAgICBz
dHViSml0LnN0b3JlMzIoCisgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKEpTVmFs
dWU6OkNlbGxUYWcpLAorICAgICAgICBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoR1BSSW5mbzo6Y2Fs
bEZyYW1lUmVnaXN0ZXIsIHN0YXRpY19jYXN0PHB0cmRpZmZfdD4oc2l6ZW9mKFJlZ2lzdGVyKSAq
IEpTU3RhY2s6OlNjb3BlQ2hhaW4pICsgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2Ny
aXB0b3IsIGFzQml0cy50YWcpKSk7CisjZW5kaWYKKyAgICAKKyAgICBKSVRDb21waWxlcjo6Q2Fs
bCBjYWxsID0gc3R1YkppdC5uZWFyQ2FsbCgpOworICAgIEpJVENvbXBpbGVyOjpKdW1wIGRvbmUg
PSBzdHViSml0Lmp1bXAoKTsKKyAgICAKKyAgICBzbG93UGF0aC5saW5rKCZzdHViSml0KTsKKyAg
ICBzdHViSml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGNhbGxMaW5rSW5mby5j
YWxsUmV0dXJuTG9jYXRpb24uZXhlY3V0YWJsZUFkZHJlc3MoKSksIEdQUkluZm86Om5vbkFyZ0dQ
UjIpOworICAgIHN0dWJKaXQucmVzdG9yZVJldHVybkFkZHJlc3NCZWZvcmVSZXR1cm4oR1BSSW5m
bzo6bm9uQXJnR1BSMik7CisgICAgc3R1YkppdC5tb3ZlKGNhbGxlZUdQUiwgR1BSSW5mbzo6bm9u
QXJnR1BSMCk7CisjaWYgVVNFKEpTVkFMVUUzMl82NCkKKyAgICBzdHViSml0Lm1vdmUoQ0NhbGxI
ZWxwZXJzOjpUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZyksIEdQUkluZm86Om5vbkFyZ0dQ
UjEpOworI2VuZGlmCisgICAgSklUQ29tcGlsZXI6Okp1bXAgc2xvdyA9IHN0dWJKaXQuanVtcCgp
OworICAgIAorICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoKmdsb2JhbERhdGEsICZzdHViSml0
LCBjYWxsZXJDb2RlQmxvY2spOworICAgIAorICAgIHBhdGNoQnVmZmVyLmxpbmsoY2FsbCwgRnVu
Y3Rpb25QdHIoY29kZVB0ci5leGVjdXRhYmxlQWRkcmVzcygpKSk7CisgICAgcGF0Y2hCdWZmZXIu
bGluayhkb25lLCBjYWxsTGlua0luZm8uY2FsbFJldHVybkxvY2F0aW9uLmxhYmVsQXRPZmZzZXQo
MCkpOworICAgIHBhdGNoQnVmZmVyLmxpbmsoc2xvdywgQ29kZUxvY2F0aW9uTGFiZWwoZ2xvYmFs
RGF0YS0+Z2V0Q1RJU3R1Yih2aXJ0dWFsQ2FsbFRodW5rR2VuZXJhdG9yKS5jb2RlKCkpKTsKKyAg
ICAKKyAgICBSZWZQdHI8Q2xvc3VyZUNhbGxTdHViUm91dGluZT4gc3R1YlJvdXRpbmUgPSBhZG9w
dFJlZihuZXcgQ2xvc3VyZUNhbGxTdHViUm91dGluZSgKKyAgICAgICAgRklOQUxJWkVfREZHX0NP
REUoCisgICAgICAgICAgICBwYXRjaEJ1ZmZlciwKKyAgICAgICAgICAgICgiREZHIGNsb3N1cmUg
Y2FsbCBzdHViIGZvciBDb2RlQmxvY2sgJXAsIHJldHVybiBwb2ludCAlcCwgdGFyZ2V0ICVwIChD
b2RlQmxvY2sgJXApIiwKKyAgICAgICAgICAgICAgICBjYWxsZXJDb2RlQmxvY2ssIGNhbGxMaW5r
SW5mby5jYWxsUmV0dXJuTG9jYXRpb24ubGFiZWxBdE9mZnNldCgwKS5leGVjdXRhYmxlQWRkcmVz
cygpLAorICAgICAgICAgICAgICAgIGNvZGVQdHIuZXhlY3V0YWJsZUFkZHJlc3MoKSwgY2FsbGVl
Q29kZUJsb2NrKSksCisgICAgICAgICpnbG9iYWxEYXRhLCBjYWxsZXJDb2RlQmxvY2stPm93bmVy
RXhlY3V0YWJsZSgpLCBzdHJ1Y3R1cmUsIGV4ZWN1dGFibGUsIGNhbGxMaW5rSW5mby5jb2RlT3Jp
Z2luKSk7CisgICAgCisgICAgUmVwYXRjaEJ1ZmZlciByZXBhdGNoQnVmZmVyKGNhbGxlckNvZGVC
bG9jayk7CisgICAgCisgICAgcmVwYXRjaEJ1ZmZlci5yZXBsYWNlV2l0aEp1bXAoCisgICAgICAg
IFJlcGF0Y2hCdWZmZXI6OnN0YXJ0T2ZCcmFuY2hQdHJXaXRoUGF0Y2hPblJlZ2lzdGVyKGNhbGxM
aW5rSW5mby5ob3RQYXRoQmVnaW4pLAorICAgICAgICBDb2RlTG9jYXRpb25MYWJlbChzdHViUm91
dGluZS0+Y29kZSgpLmNvZGUoKSkpOworICAgIGxpbmtTbG93Rm9yKHJlcGF0Y2hCdWZmZXIsIGds
b2JhbERhdGEsIGNhbGxMaW5rSW5mbywgQ29kZUZvckNhbGwpOworICAgIAorICAgIGNhbGxMaW5r
SW5mby5zdHViID0gc3R1YlJvdXRpbmUucmVsZWFzZSgpOworICAgIAorICAgIEFTU0VSVCghY2Fs
bGVlQ29kZUJsb2NrIHx8IGNhbGxlZUNvZGVCbG9jay0+aXNJbmNvbWluZ0NhbGxBbHJlYWR5TGlu
a2VkKCZjYWxsTGlua0luZm8pKTsKIH0KIAogdm9pZCBkZmdSZXNldEdldEJ5SUQoUmVwYXRjaEJ1
ZmZlciYgcmVwYXRjaEJ1ZmZlciwgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvKQpAQCAtMTE0
Miw3ICsxMjUzLDcgQEAgdm9pZCBkZmdSZXNldEdldEJ5SUQoUmVwYXRjaEJ1ZmZlciYgcmVwYQog
ICAgIENvZGVMb2NhdGlvbkRhdGFMYWJlbFB0ciBzdHJ1Y3R1cmVMYWJlbCA9IHN0dWJJbmZvLmNh
bGxSZXR1cm5Mb2NhdGlvbi5kYXRhTGFiZWxQdHJBdE9mZnNldCgtKGludHB0cl90KXN0dWJJbmZv
LnBhdGNoLmRmZy5kZWx0YUNoZWNrSW1tVG9DYWxsKTsKICAgICBpZiAoTWFjcm9Bc3NlbWJsZXI6
OmNhbkp1bXBSZXBsYWNlUGF0Y2hhYmxlQnJhbmNoUHRyV2l0aFBhdGNoKCkpIHsKICAgICAgICAg
cmVwYXRjaEJ1ZmZlci5yZXZlcnRKdW1wUmVwbGFjZW1lbnRUb1BhdGNoYWJsZUJyYW5jaFB0cldp
dGhQYXRjaCgKLSAgICAgICAgICAgIFJlcGF0Y2hCdWZmZXI6OnN0YXJ0T2ZQYXRjaGFibGVCcmFu
Y2hQdHJXaXRoUGF0Y2goc3RydWN0dXJlTGFiZWwpLAorICAgICAgICAgICAgUmVwYXRjaEJ1ZmZl
cjo6c3RhcnRPZlBhdGNoYWJsZUJyYW5jaFB0cldpdGhQYXRjaE9uQWRkcmVzcyhzdHJ1Y3R1cmVM
YWJlbCksCiAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcygKICAgICAgICAgICAg
ICAgICBzdGF0aWNfY2FzdDxNYWNyb0Fzc2VtYmxlcjo6UmVnaXN0ZXJJRD4oc3R1YkluZm8ucGF0
Y2guZGZnLmJhc2VHUFIpLAogICAgICAgICAgICAgICAgIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0
KCkpLApAQCAtMTE3Niw3ICsxMjg3LDcgQEAgdm9pZCBkZmdSZXNldFB1dEJ5SUQoUmVwYXRjaEJ1
ZmZlciYgcmVwYQogICAgIENvZGVMb2NhdGlvbkRhdGFMYWJlbFB0ciBzdHJ1Y3R1cmVMYWJlbCA9
IHN0dWJJbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbi5kYXRhTGFiZWxQdHJBdE9mZnNldCgtKGludHB0
cl90KXN0dWJJbmZvLnBhdGNoLmRmZy5kZWx0YUNoZWNrSW1tVG9DYWxsKTsKICAgICBpZiAoTWFj
cm9Bc3NlbWJsZXI6OmNhbkp1bXBSZXBsYWNlUGF0Y2hhYmxlQnJhbmNoUHRyV2l0aFBhdGNoKCkp
IHsKICAgICAgICAgcmVwYXRjaEJ1ZmZlci5yZXZlcnRKdW1wUmVwbGFjZW1lbnRUb1BhdGNoYWJs
ZUJyYW5jaFB0cldpdGhQYXRjaCgKLSAgICAgICAgICAgIFJlcGF0Y2hCdWZmZXI6OnN0YXJ0T2ZQ
YXRjaGFibGVCcmFuY2hQdHJXaXRoUGF0Y2goc3RydWN0dXJlTGFiZWwpLAorICAgICAgICAgICAg
UmVwYXRjaEJ1ZmZlcjo6c3RhcnRPZlBhdGNoYWJsZUJyYW5jaFB0cldpdGhQYXRjaE9uQWRkcmVz
cyhzdHJ1Y3R1cmVMYWJlbCksCiAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcygK
ICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxNYWNyb0Fzc2VtYmxlcjo6UmVnaXN0ZXJJRD4o
c3R1YkluZm8ucGF0Y2guZGZnLmJhc2VHUFIpLAogICAgICAgICAgICAgICAgIEpTQ2VsbDo6c3Ry
dWN0dXJlT2Zmc2V0KCkpLApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdSZXBh
dGNoLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdSZXBhdGNo
LmgJKHJldmlzaW9uIDEzNTIxNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUmVw
YXRjaC5oCSh3b3JraW5nIGNvcHkpCkBAIC00MSw2ICs0MSw4IEBAIHZvaWQgZGZnQnVpbGRHZXRC
eUlEUHJvdG9MaXN0KEV4ZWNTdGF0ZSoKIHZvaWQgZGZnUmVwYXRjaFB1dEJ5SUQoRXhlY1N0YXRl
KiwgSlNWYWx1ZSwgY29uc3QgSWRlbnRpZmllciYsIGNvbnN0IFB1dFByb3BlcnR5U2xvdCYsIFN0
cnVjdHVyZVN0dWJJbmZvJiwgUHV0S2luZCk7CiB2b2lkIGRmZ0J1aWxkUHV0QnlJZExpc3QoRXhl
Y1N0YXRlKiwgSlNWYWx1ZSwgY29uc3QgSWRlbnRpZmllciYsIGNvbnN0IFB1dFByb3BlcnR5U2xv
dCYsIFN0cnVjdHVyZVN0dWJJbmZvJiwgUHV0S2luZCk7CiB2b2lkIGRmZ0xpbmtGb3IoRXhlY1N0
YXRlKiwgQ2FsbExpbmtJbmZvJiwgQ29kZUJsb2NrKiwgSlNGdW5jdGlvbiogY2FsbGVlLCBNYWNy
b0Fzc2VtYmxlckNvZGVQdHIsIENvZGVTcGVjaWFsaXphdGlvbktpbmQpOwordm9pZCBkZmdMaW5r
U2xvd0ZvcihFeGVjU3RhdGUqLCBDYWxsTGlua0luZm8mLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5k
KTsKK3ZvaWQgZGZnTGlua0Nsb3N1cmVDYWxsKEV4ZWNTdGF0ZSosIENhbGxMaW5rSW5mbyYsIENv
ZGVCbG9jayosIFN0cnVjdHVyZSosIEV4ZWN1dGFibGVCYXNlKiwgTWFjcm9Bc3NlbWJsZXJDb2Rl
UHRyKTsKIHZvaWQgZGZnUmVzZXRHZXRCeUlEKFJlcGF0Y2hCdWZmZXImLCBTdHJ1Y3R1cmVTdHVi
SW5mbyYpOwogdm9pZCBkZmdSZXNldFB1dEJ5SUQoUmVwYXRjaEJ1ZmZlciYsIFN0cnVjdHVyZVN0
dWJJbmZvJik7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQzMl82NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAkocmV2aXNpb24gMTM1MjE2KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtOTk4LDcgKzk5OCw2IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6Om5vblNwZWN1bGF0aXZl
Tm9uUGUKIAogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdENhbGwoTm9kZSYgbm9kZSkKIHsKLQog
ICAgIGlmIChub2RlLm9wKCkgIT0gQ2FsbCkKICAgICAgICAgQVNTRVJUKG5vZGUub3AoKSA9PSBD
b25zdHJ1Y3QpOwogCkBAIC0xMDQ5LDggKzEwNDgsOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpl
bWl0Q2FsbChOb2RlJiBub2RlCiAgICAgCiAgICAgbV9qaXQuYWRkUHRyKFRydXN0ZWRJbW0zMiht
X2ppdC5jb2RlQmxvY2soKS0+bV9udW1DYWxsZWVSZWdpc3RlcnMgKiBzaXplb2YoUmVnaXN0ZXIp
KSwgR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIpOwogICAgIAotICAgIHNsb3dQYXRoLmFwcGVu
ZChtX2ppdC5icmFuY2hQdHJXaXRoUGF0Y2goTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBjYWxs
ZWVQYXlsb2FkR1BSLCB0YXJnZXRUb0NoZWNrKSk7CiAgICAgc2xvd1BhdGguYXBwZW5kKG1faml0
LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgY2FsbGVlVGFnR1BSLCBUcnVzdGVk
SW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZykpKTsKKyAgICBzbG93UGF0aC5hcHBlbmQobV9qaXQuYnJh
bmNoUHRyV2l0aFBhdGNoKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgY2FsbGVlUGF5bG9hZEdQ
UiwgdGFyZ2V0VG9DaGVjaykpOwogICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFk
ZHJlc3MoY2FsbGVlUGF5bG9hZEdQUiwgT0JKRUNUX09GRlNFVE9GKEpTRnVuY3Rpb24sIG1fc2Nv
cGUpKSwgcmVzdWx0UGF5bG9hZEdQUik7CiAgICAgbV9qaXQuc3RvcmVQdHIocmVzdWx0UGF5bG9h
ZEdQUiwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIs
IHN0YXRpY19jYXN0PHB0cmRpZmZfdD4oc2l6ZW9mKFJlZ2lzdGVyKSkgKiBKU1N0YWNrOjpTY29w
ZUNoYWluICsgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy5w
YXlsb2FkKSkpOwogICAgIG1faml0LnN0b3JlMzIoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0z
MihKU1ZhbHVlOjpDZWxsVGFnKSwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoR1BSSW5mbzo6Y2Fs
bEZyYW1lUmVnaXN0ZXIsIHN0YXRpY19jYXN0PHB0cmRpZmZfdD4oc2l6ZW9mKFJlZ2lzdGVyKSkg
KiBKU1N0YWNrOjpTY29wZUNoYWluICsgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2Ny
aXB0b3IsIGFzQml0cy50YWcpKSk7CkBAIC0xMDg0LDcgKzEwODMsNyBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjplbWl0Q2FsbChOb2RlJiBub2RlCiAKICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFRh
Z0dQUiwgcmVzdWx0UGF5bG9hZEdQUiwgbV9jb21waWxlSW5kZXgsIERhdGFGb3JtYXRKUywgVXNl
Q2hpbGRyZW5DYWxsZWRFeHBsaWNpdGx5KTsKIAotICAgIG1faml0LmFkZEpTQ2FsbChmYXN0Q2Fs
bCwgc2xvd0NhbGwsIHRhcmdldFRvQ2hlY2ssIGNhbGxUeXBlLCBhdChtX2NvbXBpbGVJbmRleCku
Y29kZU9yaWdpbik7CisgICAgbV9qaXQuYWRkSlNDYWxsKGZhc3RDYWxsLCBzbG93Q2FsbCwgdGFy
Z2V0VG9DaGVjaywgY2FsbFR5cGUsIGNhbGxlZVBheWxvYWRHUFIsIGF0KG1fY29tcGlsZUluZGV4
KS5jb2RlT3JpZ2luKTsKIH0KIAogdGVtcGxhdGU8Ym9vbCBzdHJpY3Q+CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHJldmlz
aW9uIDEzNTIxNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQ2NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwNTgsNyArMTA1OCw3IEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmVtaXRDYWxsKE5vZGUmIG5vZGUKICAgICAKICAgICBqc1ZhbHVlUmVzdWx0KHJl
c3VsdEdQUiwgbV9jb21waWxlSW5kZXgsIERhdGFGb3JtYXRKUywgVXNlQ2hpbGRyZW5DYWxsZWRF
eHBsaWNpdGx5KTsKICAgICAKLSAgICBtX2ppdC5hZGRKU0NhbGwoZmFzdENhbGwsIHNsb3dDYWxs
LCB0YXJnZXRUb0NoZWNrLCBjYWxsVHlwZSwgYXQobV9jb21waWxlSW5kZXgpLmNvZGVPcmlnaW4p
OworICAgIG1faml0LmFkZEpTQ2FsbChmYXN0Q2FsbCwgc2xvd0NhbGwsIHRhcmdldFRvQ2hlY2ss
IGNhbGxUeXBlLCBjYWxsZWVHUFIsIGF0KG1fY29tcGlsZUluZGV4KS5jb2RlT3JpZ2luKTsKIH0K
IAogdGVtcGxhdGU8Ym9vbCBzdHJpY3Q+CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1RodW5rcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdUaHVua3MuY3BwCShyZXZpc2lvbiAxMzUyMTYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1RodW5rcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxMyw2ICsyMTMsMTggQEAgTWFj
cm9Bc3NlbWJsZXJDb2RlUmVmIGxpbmtDb25zdHJ1Y3RUaHVuawogICAgIHJldHVybiBsaW5rRm9y
VGh1bmtHZW5lcmF0b3IoZ2xvYmFsRGF0YSwgQ29kZUZvckNvbnN0cnVjdCk7CiB9CiAKKy8vIEZv
ciBjbG9zdXJlIG9wdGltaXphdGlvbnMsIHdlIG9ubHkgaW5jbHVkZSBjYWxscywgc2luY2UgaWYg
eW91J3JlIHVzaW5nIGNsb3N1cmVzIGZvcgorLy8gb2JqZWN0IGNvbnN0cnVjdGlvbiB0aGVuIHlv
dSdyZSBnb2luZyB0byBsb3NlIGJpZyB0aW1lIGFueXdheS4KK01hY3JvQXNzZW1ibGVyQ29kZVJl
ZiBsaW5rQ2xvc3VyZUNhbGxUaHVua0dlbmVyYXRvcihKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEp
Cit7CisgICAgQ0NhbGxIZWxwZXJzIGppdChnbG9iYWxEYXRhKTsKKyAgICAKKyAgICBzbG93UGF0
aEZvcihqaXQsIGdsb2JhbERhdGEsIG9wZXJhdGlvbkxpbmtDbG9zdXJlQ2FsbCk7CisgICAgCisg
ICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcigqZ2xvYmFsRGF0YSwgJmppdCwgR0xPQkFMX1RIVU5L
X0lEKTsKKyAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgKCJERkcgbGluayBj
bG9zdXJlIGNhbGwgc2xvdyBwYXRoIHRodW5rIikpOworfQorCiBzdGF0aWMgTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmIHZpcnR1YWxGb3JUaHVua0dlbmVyYXRvcigKICAgICBKU0dsb2JhbERhdGEqIGds
b2JhbERhdGEsIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkKIHsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHVGh1bmtzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdUaHVua3MuaAkocmV2aXNpb24gMTM1MjE2KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdUaHVua3MuaAkod29ya2luZyBjb3B5KQpAQCAtNDUsNiArNDUs
OCBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgdGhyb3dFeGNlcHRpb25Gcm9tCiBNYWNyb0Fzc2Vt
YmxlckNvZGVSZWYgbGlua0NhbGxUaHVua0dlbmVyYXRvcihKU0dsb2JhbERhdGEqKTsKIE1hY3Jv
QXNzZW1ibGVyQ29kZVJlZiBsaW5rQ29uc3RydWN0VGh1bmtHZW5lcmF0b3IoSlNHbG9iYWxEYXRh
Kik7CiAKK01hY3JvQXNzZW1ibGVyQ29kZVJlZiBsaW5rQ2xvc3VyZUNhbGxUaHVua0dlbmVyYXRv
cihKU0dsb2JhbERhdGEqKTsKKwogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIHZpcnR1YWxDYWxsVGh1
bmtHZW5lcmF0b3IoSlNHbG9iYWxEYXRhKik7CiBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgdmlydHVh
bENvbnN0cnVjdFRodW5rR2VuZXJhdG9yKEpTR2xvYmFsRGF0YSopOwogCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvSGVhcC5oCShyZXZpc2lvbiAxMzUyMTYpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9IZWFwLmgJKHdvcmtpbmcgY29weSkKQEAgLTE3NCw2ICsxNzQsOCBAQCBuYW1l
c3BhY2UgSlNDIHsKIAogICAgICAgICBib29sIGlzUGFnZWRPdXQoZG91YmxlIGRlYWRsaW5lKTsK
ICAgICAgICAgdm9pZCBkaWRTdGFydFZNU2h1dGRvd24oKTsKKyAgICAgICAgCisgICAgICAgIGNv
bnN0IEpJVFN0dWJSb3V0aW5lU2V0JiBqaXRTdHViUm91dGluZXMoKSB7IHJldHVybiBtX2ppdFN0
dWJSb3V0aW5lczsgfQogCiAgICAgcHJpdmF0ZToKICAgICAgICAgZnJpZW5kIGNsYXNzIENvZGVC
bG9jazsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0pJVFN0dWJSb3V0aW5lU2V0
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSklUU3R1YlJvdXRp
bmVTZXQuaAkocmV2aXNpb24gMTM1MjE2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
SklUU3R1YlJvdXRpbmVTZXQuaAkod29ya2luZyBjb3B5KQpAQCAtNjUsNiArNjUsOSBAQCBwdWJs
aWM6CiAgICAgCiAgICAgdm9pZCB0cmFjZU1hcmtlZFN0dWJSb3V0aW5lcyhTbG90VmlzaXRvciYp
OwogICAgIAorICAgIHVuc2lnbmVkIHNpemUoKSBjb25zdCB7IHJldHVybiBtX2xpc3RPZlJvdXRp
bmVzLnNpemUoKTsgfQorICAgIEdDQXdhcmVKSVRTdHViUm91dGluZSogYXQodW5zaWduZWQgaSkg
Y29uc3QgeyByZXR1cm4gbV9saXN0T2ZSb3V0aW5lc1tpXTsgfQorICAgIAogcHJpdmF0ZToKICAg
ICB2b2lkIG1hcmtTbG93KHVpbnRwdHJfdCBhZGRyZXNzKTsKICAgICAKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvQ2xvc3VyZUNhbGxTdHViUm91dGluZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DbG9zdXJlQ2FsbFN0dWJSb3V0aW5lLmNwcAko
cmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ2xvc3VyZUNhbGxTdHVi
Um91dGluZS5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjIgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIkNsb3N1cmVDYWxsU3R1YlJvdXRpbmUuaCIKKworI2lmIEVOQUJMRShKSVQpCisKKyNp
bmNsdWRlICJFeGVjdXRhYmxlLmgiCisjaW5jbHVkZSAiSGVhcC5oIgorI2luY2x1ZGUgIkpTR2xv
YmFsRGF0YS5oIgorI2luY2x1ZGUgIlNsb3RWaXNpdG9yLmgiCisjaW5jbHVkZSAiU3RydWN0dXJl
LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitDbG9zdXJlQ2FsbFN0dWJSb3V0aW5lOjpDbG9zdXJl
Q2FsbFN0dWJSb3V0aW5lKAorICAgIGNvbnN0IE1hY3JvQXNzZW1ibGVyQ29kZVJlZiYgY29kZSwg
SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25zdCBKU0NlbGwqIG93bmVyLAorICAgIFN0cnVj
dHVyZSogc3RydWN0dXJlLCBFeGVjdXRhYmxlQmFzZSogZXhlY3V0YWJsZSwgY29uc3QgQ29kZU9y
aWdpbiYgY29kZU9yaWdpbikKKyAgICA6IEdDQXdhcmVKSVRTdHViUm91dGluZShjb2RlLCBnbG9i
YWxEYXRhLCB0cnVlKQorICAgICwgbV9zdHJ1Y3R1cmUoZ2xvYmFsRGF0YSwgb3duZXIsIHN0cnVj
dHVyZSkKKyAgICAsIG1fZXhlY3V0YWJsZShnbG9iYWxEYXRhLCBvd25lciwgZXhlY3V0YWJsZSkK
KyAgICAsIG1fY29kZU9yaWdpbihjb2RlT3JpZ2luKQoreworfQorCitDbG9zdXJlQ2FsbFN0dWJS
b3V0aW5lOjp+Q2xvc3VyZUNhbGxTdHViUm91dGluZSgpCit7Cit9CisKK3ZvaWQgQ2xvc3VyZUNh
bGxTdHViUm91dGluZTo6bWFya1JlcXVpcmVkT2JqZWN0c0ludGVybmFsKFNsb3RWaXNpdG9yJiB2
aXNpdG9yKQoreworICAgIHZpc2l0b3IuYXBwZW5kKCZtX3N0cnVjdHVyZSk7CisgICAgdmlzaXRv
ci5hcHBlbmQoJm1fZXhlY3V0YWJsZSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5k
aWYgLy8gRU5BQkxFKEpJVCkKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DbG9z
dXJlQ2FsbFN0dWJSb3V0aW5lLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9DbG9zdXJlQ2FsbFN0dWJSb3V0aW5lLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0Nsb3N1cmVDYWxsU3R1YlJvdXRpbmUuaAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSw2NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAq
LworCisjaWZuZGVmIENsb3N1cmVDYWxsU3R1YlJvdXRpbmVfaAorI2RlZmluZSBDbG9zdXJlQ2Fs
bFN0dWJSb3V0aW5lX2gKKworI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgorCisjaWYgRU5BQkxF
KEpJVCkKKworI2luY2x1ZGUgIkNvZGVPcmlnaW4uaCIKKyNpbmNsdWRlICJHQ0F3YXJlSklUU3R1
YlJvdXRpbmUuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIENsb3N1cmVDYWxsU3R1YlJv
dXRpbmUgOiBwdWJsaWMgR0NBd2FyZUpJVFN0dWJSb3V0aW5lIHsKK3B1YmxpYzoKKyAgICBDbG9z
dXJlQ2FsbFN0dWJSb3V0aW5lKAorICAgICAgICBjb25zdCBNYWNyb0Fzc2VtYmxlckNvZGVSZWYm
LCBKU0dsb2JhbERhdGEmLCBjb25zdCBKU0NlbGwqIG93bmVyLAorICAgICAgICBTdHJ1Y3R1cmUq
LCBFeGVjdXRhYmxlQmFzZSosIGNvbnN0IENvZGVPcmlnaW4mKTsKKyAgICAKKyAgICB2aXJ0dWFs
IH5DbG9zdXJlQ2FsbFN0dWJSb3V0aW5lKCk7CisgICAgCisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUoKSBjb25zdCB7IHJldHVybiBtX3N0cnVjdHVyZS5nZXQoKTsgfQorICAgIEV4ZWN1dGFibGVC
YXNlKiBleGVjdXRhYmxlKCkgY29uc3QgeyByZXR1cm4gbV9leGVjdXRhYmxlLmdldCgpOyB9Cisg
ICAgY29uc3QgQ29kZU9yaWdpbiYgY29kZU9yaWdpbigpIGNvbnN0IHsgcmV0dXJuIG1fY29kZU9y
aWdpbjsgfQorCitwcm90ZWN0ZWQ6CisgICAgdmlydHVhbCB2b2lkIG1hcmtSZXF1aXJlZE9iamVj
dHNJbnRlcm5hbChTbG90VmlzaXRvciYpOworCitwcml2YXRlOgorICAgIFdyaXRlQmFycmllcjxT
dHJ1Y3R1cmU+IG1fc3RydWN0dXJlOworICAgIFdyaXRlQmFycmllcjxFeGVjdXRhYmxlQmFzZT4g
bV9leGVjdXRhYmxlOworICAgIC8vIFRoaXMgYWxsb3dzIHVzIHRvIGZpZ3VyZSBvdXQgd2hvIGEg
Y2FsbCBpcyBsaW5rZWQgdG8gYnkgc2VhcmNoaW5nIHRocm91Z2gKKyAgICAvLyBzdHViIHJvdXRp
bmVzLgorICAgIENvZGVPcmlnaW4gbV9jb2RlT3JpZ2luOworfTsKKworfSAvLyBuYW1lc3BhY2Ug
SlNDCisKKyNlbmRpZiAvLyBFTkFCTEUoSklUKQorCisjZW5kaWYgLy8gQ2xvc3VyZUNhbGxTdHVi
Um91dGluZV9oCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvR0NBd2FyZUpJVFN0
dWJSb3V0aW5lLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0dD
QXdhcmVKSVRTdHViUm91dGluZS5jcHAJKHJldmlzaW9uIDEzNTIxNikKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvR0NBd2FyZUpJVFN0dWJSb3V0aW5lLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzAsMTcgKzMwLDE3IEBACiAKICNpbmNsdWRlICJIZWFwLmgiCiAjaW5jbHVkZSAiSlNHbG9i
YWxEYXRhLmgiCi0KICNpbmNsdWRlICJTbG90VmlzaXRvci5oIgogI2luY2x1ZGUgIlN0cnVjdHVy
ZS5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIAogR0NBd2FyZUpJVFN0dWJSb3V0aW5lOjpHQ0F3YXJl
SklUU3R1YlJvdXRpbmUoCi0gICAgY29uc3QgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmJiBjb2RlLCBK
U0dsb2JhbERhdGEmIGdsb2JhbERhdGEpCisgICAgY29uc3QgTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
JiBjb2RlLCBKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGJvb2wgaXNDbG9zdXJlQ2FsbCkKICAg
ICA6IEpJVFN0dWJSb3V0aW5lKGNvZGUpCiAgICAgLCBtX21heUJlRXhlY3V0aW5nKGZhbHNlKQog
ICAgICwgbV9pc0pldHRpc29uZWQoZmFsc2UpCisgICAgLCBtX2lzQ2xvc3VyZUNhbGwoaXNDbG9z
dXJlQ2FsbCkKIHsKICAgICBnbG9iYWxEYXRhLmhlYXAubV9qaXRTdHViUm91dGluZXMuYWRkKHRo
aXMpOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9HQ0F3YXJlSklUU3R1YlJv
dXRpbmUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0dDQXdhcmVK
SVRTdHViUm91dGluZS5oCShyZXZpc2lvbiAxMzUyMTYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0dDQXdhcmVKSVRTdHViUm91dGluZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01NCw3ICs1
NCw3IEBAIGNsYXNzIEpJVFN0dWJSb3V0aW5lU2V0OwogLy8gbGlzdCB3aGljaCBkb2VzIG5vdCBn
ZXQgcmVjbGFpbWVkIGFsbCBhdCBvbmNlKS4KIGNsYXNzIEdDQXdhcmVKSVRTdHViUm91dGluZSA6
IHB1YmxpYyBKSVRTdHViUm91dGluZSB7CiBwdWJsaWM6Ci0gICAgR0NBd2FyZUpJVFN0dWJSb3V0
aW5lKGNvbnN0IE1hY3JvQXNzZW1ibGVyQ29kZVJlZiYsIEpTR2xvYmFsRGF0YSYpOworICAgIEdD
QXdhcmVKSVRTdHViUm91dGluZShjb25zdCBNYWNyb0Fzc2VtYmxlckNvZGVSZWYmLCBKU0dsb2Jh
bERhdGEmLCBib29sIGlzQ2xvc3VyZUNhbGwgPSBmYWxzZSk7CiAgICAgdmlydHVhbCB+R0NBd2Fy
ZUpJVFN0dWJSb3V0aW5lKCk7CiAgICAgCiAgICAgdm9pZCBtYXJrUmVxdWlyZWRPYmplY3RzKFNs
b3RWaXNpdG9yJiB2aXNpdG9yKQpAQCAtNjQsNiArNjQsOCBAQCBwdWJsaWM6CiAgICAgCiAgICAg
dm9pZCBkZWxldGVGcm9tR0MoKTsKICAgICAKKyAgICBib29sIGlzQ2xvc3VyZUNhbGwoKSBjb25z
dCB7IHJldHVybiBtX2lzQ2xvc3VyZUNhbGw7IH0KKyAgICAKIHByb3RlY3RlZDoKICAgICB2aXJ0
dWFsIHZvaWQgb2JzZXJ2ZVplcm9SZWZDb3VudCgpOwogICAgIApAQCAtNzQsNiArNzYsNyBAQCBw
cml2YXRlOgogCiAgICAgYm9vbCBtX21heUJlRXhlY3V0aW5nOwogICAgIGJvb2wgbV9pc0pldHRp
c29uZWQ7CisgICAgYm9vbCBtX2lzQ2xvc3VyZUNhbGw7CiB9OwogCiAvLyBVc2UgdGhpcyBpZiB5
b3Ugd2FudCB0byBtYXJrIG9uZSBhZGRpdGlvbmFsIG9iamVjdCBkdXJpbmcgR0MgaWYgeW91ciBz
dHViCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCShyZXZpc2lvbiAxMzUyMTYpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc4
MSwxMCArNzgxLDExIEBAIEpJVENvZGUgSklUOjpwcml2YXRlQ29tcGlsZShDb2RlUHRyKiBmdW4K
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9jb2RlQmxvY2stPm51bWJlck9mQ2FsbExp
bmtJbmZvcygpOyArK2kpIHsKICAgICAgICAgQ2FsbExpbmtJbmZvJiBpbmZvID0gbV9jb2RlQmxv
Y2stPmNhbGxMaW5rSW5mbyhpKTsKICAgICAgICAgaW5mby5jYWxsVHlwZSA9IG1fY2FsbFN0cnVj
dHVyZVN0dWJDb21waWxhdGlvbkluZm9baV0uY2FsbFR5cGU7Ci0gICAgICAgIGluZm8uYnl0ZWNv
ZGVJbmRleCA9IG1fY2FsbFN0cnVjdHVyZVN0dWJDb21waWxhdGlvbkluZm9baV0uYnl0ZWNvZGVJ
bmRleDsKKyAgICAgICAgaW5mby5jb2RlT3JpZ2luID0gQ29kZU9yaWdpbihtX2NhbGxTdHJ1Y3R1
cmVTdHViQ29tcGlsYXRpb25JbmZvW2ldLmJ5dGVjb2RlSW5kZXgpOwogICAgICAgICBpbmZvLmNh
bGxSZXR1cm5Mb2NhdGlvbiA9IHBhdGNoQnVmZmVyLmxvY2F0aW9uT2ZOZWFyQ2FsbChtX2NhbGxT
dHJ1Y3R1cmVTdHViQ29tcGlsYXRpb25JbmZvW2ldLmNhbGxSZXR1cm5Mb2NhdGlvbik7CiAgICAg
ICAgIGluZm8uaG90UGF0aEJlZ2luID0gcGF0Y2hCdWZmZXIubG9jYXRpb25PZihtX2NhbGxTdHJ1
Y3R1cmVTdHViQ29tcGlsYXRpb25JbmZvW2ldLmhvdFBhdGhCZWdpbik7CiAgICAgICAgIGluZm8u
aG90UGF0aE90aGVyID0gcGF0Y2hCdWZmZXIubG9jYXRpb25PZk5lYXJDYWxsKG1fY2FsbFN0cnVj
dHVyZVN0dWJDb21waWxhdGlvbkluZm9baV0uaG90UGF0aE90aGVyKTsKKyAgICAgICAgaW5mby5j
YWxsZWVHUFIgPSByZWdUMDsKICAgICB9CiAKICNpZiBFTkFCTEUoREZHX0pJVCkgfHwgRU5BQkxF
KExMSU5UKQpJbmRleDogU291cmNlL1dURi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dURi9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzNTI0NCkKKysrIFNvdXJjZS9XVEYvQ2hhbmdlTG9n
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTItMTEtMTkgIEZpbGlwIFBpemxv
ICA8ZnBpemxvQGFwcGxlLmNvbT4KKworICAgICAgICBERkcgc2hvdWxkIGJlIGFibGUgdG8gY2Fj
aGUgY2xvc3VyZSBjYWxscworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTAyNjYyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgQWRkZWQgc3VwcG9ydCB0byB0aGUgbWV0YSBhbGxvY2F0b3IgZm9yIGVhc2lseSBx
dWVyeWluZyB3aGV0aGVyIGFuIGFkZHJlc3MgZmFsbHMgd2l0aGluCisgICAgICAgIGEgY2VydGFp
biBhbGxvY2F0ZWQgY2h1bmsuIEFsc28gYWRkZWQgYSB1c2VmdWwgZGVidWcgcm91dGluZSB0byBT
ZW50aW5lbExpbmtlZExpc3QsCisgICAgICAgIHdoaWNoIGNhbiBiZSB1c2VkIHRvIGNoZWNrIGlm
IGEgbm9kZSBpcyBvbiBhIHBhcnRpY3VsYXIgbGlzdC4KKworICAgICAgICAqIHd0Zi9NZXRhQWxs
b2NhdG9ySGFuZGxlLmg6CisgICAgICAgIChNZXRhQWxsb2NhdG9ySGFuZGxlKToKKyAgICAgICAg
KFdURjo6TWV0YUFsbG9jYXRvckhhbmRsZTo6Y29udGFpbnNJbnRlZ2VyQWRkcmVzcyk6CisgICAg
ICAgIChXVEY6Ok1ldGFBbGxvY2F0b3JIYW5kbGU6OmNvbnRhaW5zKToKKyAgICAgICAgKiB3dGYv
U2VudGluZWxMaW5rZWRMaXN0Lmg6CisgICAgICAgIChTZW50aW5lbExpbmtlZExpc3QpOgorICAg
ICAgICAoV1RGOjo6OmlzT25MaXN0KToKKyAgICAgICAgKFdURik6CisKIDIwMTItMTEtMTkgIExh
c3psbyBHb21ib3MgIDxsLmdvbWJvc0BzYW1zdW5nLmNvbT4KIAogICAgICAgICBSZW1vdmUgUmVh
ZFdyaXRlTG9jawpJbmRleDogU291cmNlL1dURi93dGYvTWV0YUFsbG9jYXRvckhhbmRsZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL01ldGFBbGxvY2F0b3JIYW5kbGUuaAkocmV2aXNp
b24gMTM1MjE2KQorKysgU291cmNlL1dURi93dGYvTWV0YUFsbG9jYXRvckhhbmRsZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC02OSw2ICs2OSwxNiBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICByZXR1
cm4gbV9zaXplSW5CeXRlczsKICAgICB9CisgICAgCisgICAgYm9vbCBjb250YWluc0ludGVnZXJB
ZGRyZXNzKHVpbnRwdHJfdCBhZGRyZXNzKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIGFk
ZHJlc3MgLSBzdGFydEFzSW50ZWdlcigpIDwgc2l6ZUluQnl0ZXMoKTsKKyAgICB9CisgICAgCisg
ICAgYm9vbCBjb250YWlucyh2b2lkKiBhZGRyZXNzKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0
dXJuIGNvbnRhaW5zSW50ZWdlckFkZHJlc3MocmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KGFk
ZHJlc3MpKTsKKyAgICB9CiAgICAgICAgIAogICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIHNo
cmluayhzaXplX3QgbmV3U2l6ZUluQnl0ZXMpOwogICAgIApJbmRleDogU291cmNlL1dURi93dGYv
U2VudGluZWxMaW5rZWRMaXN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvU2VudGlu
ZWxMaW5rZWRMaXN0LmgJKHJldmlzaW9uIDEzNTIxNikKKysrIFNvdXJjZS9XVEYvd3RmL1NlbnRp
bmVsTGlua2VkTGlzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC04Myw2ICs4Myw4IEBAIHB1YmxpYzoK
IAogICAgIHZvaWQgcHVzaChUKik7CiAgICAgc3RhdGljIHZvaWQgcmVtb3ZlKFQqKTsKKyAgICAK
KyAgICBib29sIGlzT25MaXN0KFQqKTsKIAogICAgIGl0ZXJhdG9yIGJlZ2luKCk7CiAgICAgaXRl
cmF0b3IgZW5kKCk7CkBAIC0xNTIsNiArMTU0LDE5IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBULCB0
eXBlbmFtZSBSYXdOb2RlPiAKICAgICBub2RlLT5zZXROZXh0KDApOwogfQogCit0ZW1wbGF0ZSA8
dHlwZW5hbWUgVCwgdHlwZW5hbWUgUmF3Tm9kZT4gaW5saW5lIGJvb2wgU2VudGluZWxMaW5rZWRM
aXN0PFQsIFJhd05vZGU+Ojppc09uTGlzdChUKiBub2RlKQoreworICAgIGlmICghbm9kZS0+aXNP
bkxpc3QoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAorICAgIGZvciAoVCogaXRlciA9
IGJlZ2luKCk7IGl0ZXIgIT0gZW5kKCk7IGl0ZXIgPSBpdGVyLT5uZXh0KCkpIHsKKyAgICAgICAg
aWYgKGl0ZXIgPT0gbm9kZSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICAK
KyAgICByZXR1cm4gZmFsc2U7Cit9CisKIH0KIAogdXNpbmcgV1RGOjpCYXNpY1Jhd1NlbnRpbmVs
Tm9kZTsK
</data>
<flag name="commit-queue"
          id="190495"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>175153</attachid>
            <date>2012-11-19 23:29:22 -0800</date>
            <delta_ts>2012-11-20 10:47:12 -0800</delta_ts>
            <desc>the patch</desc>
            <filename>closurecall.patch</filename>
            <type>text/plain</type>
            <size>67998</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTM1MjQ1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEyMSBA
QAorMjAxMi0xMS0xOSAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IERGRyBzaG91bGQgYmUgYWJsZSB0byBjYWNoZSBjbG9zdXJlIGNhbGxzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDI2NjIKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCBjYWNoaW5nIG9mIGNhbGxz
IHdoZXJlIHRoZSBKU0Z1bmN0aW9uKiB2YXJpZXMsIGJ1dCB0aGUgU3RydWN0dXJlKiBhbmQgRXhl
Y3V0YWJsZUJhc2UqCisgICAgICAgIHN0YXkgdGhlIHNhbWUuIFRoaXMgaXMgYWNjb21wbGlzaGVk
IGJ5IHJlcGxhY2luZyB0aGUgYnJhbmNoIHRoYXQgY29tcGFyZXMgYWdhaW5zdCBhIGNvbnN0YW50
CisgICAgICAgIEpTRnVuY3Rpb24qIHdpdGggYSBqdW1wIHRvIGEgY2xvc3VyZSBjYWxsIHN0dWIu
IFRoZSBjbG9zdXJlIGNhbGwgc3R1YiBjb250YWlucyBhIGZhc3QgcGF0aCwKKyAgICAgICAgYW5k
IGp1bXBzIHNsb3cgZGlyZWN0bHkgdG8gdGhlIHZpcnR1YWwgY2FsbCB0aHVuay4KKworICAgICAg
ICBMb29rcyBsaWtlIGEgMSUgd2luIG9uIFY4djcuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4
dDoKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIEphdmFTY3JpcHRD
b3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2o6CisgICAgICAg
ICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBU
YXJnZXQucHJpOgorICAgICAgICAqIGFzc2VtYmxlci9BUk12N0Fzc2VtYmxlci5oOgorICAgICAg
ICAoSlNDOjpBUk12N0Fzc2VtYmxlcjo6QmFkUmVnKToKKyAgICAgICAgKEFSTXY3QXNzZW1ibGVy
KToKKyAgICAgICAgKEpTQzo6QVJNdjdBc3NlbWJsZXI6OnJldmVydEp1bXBUb19tb3ZUMyk6Cisg
ICAgICAgICogYXNzZW1ibGVyL0xpbmtCdWZmZXIuaDoKKyAgICAgICAgKEpTQyk6CisgICAgICAg
ICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNdjcuaDoKKyAgICAgICAgKEpTQzo6TWFjcm9B
c3NlbWJsZXJBUk12Nzo6c3RhcnRPZkJyYW5jaFB0cldpdGhQYXRjaE9uUmVnaXN0ZXIpOgorICAg
ICAgICAoTWFjcm9Bc3NlbWJsZXJBUk12Nyk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVy
QVJNdjc6OnJldmVydEp1bXBSZXBsYWNlbWVudFRvQnJhbmNoUHRyV2l0aFBhdGNoKToKKyAgICAg
ICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk12Nzo6c3RhcnRPZlBhdGNoYWJsZUJyYW5jaFB0cldp
dGhQYXRjaE9uQWRkcmVzcyk6CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2
Lmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2OjpzdGFydE9mQnJhbmNoUHRyV2l0
aFBhdGNoT25SZWdpc3Rlcik6CisgICAgICAgIChNYWNyb0Fzc2VtYmxlclg4Nik6CisgICAgICAg
IChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2OjpzdGFydE9mUGF0Y2hhYmxlQnJhbmNoUHRyV2l0aFBh
dGNoT25BZGRyZXNzKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODY6OnJldmVydEp1
bXBSZXBsYWNlbWVudFRvQnJhbmNoUHRyV2l0aFBhdGNoKToKKyAgICAgICAgKiBhc3NlbWJsZXIv
TWFjcm9Bc3NlbWJsZXJYODZfNjQuaDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZf
NjQ6OnN0YXJ0T2ZCcmFuY2hQdHJXaXRoUGF0Y2hPblJlZ2lzdGVyKToKKyAgICAgICAgKEpTQzo6
TWFjcm9Bc3NlbWJsZXJYODZfNjQ6OnN0YXJ0T2ZQYXRjaGFibGVCcmFuY2hQdHJXaXRoUGF0Y2hP
bkFkZHJlc3MpOgorICAgICAgICAoTWFjcm9Bc3NlbWJsZXJYODZfNjQpOgorICAgICAgICAoSlND
OjpNYWNyb0Fzc2VtYmxlclg4Nl82NDo6cmV2ZXJ0SnVtcFJlcGxhY2VtZW50VG9CcmFuY2hQdHJX
aXRoUGF0Y2gpOgorICAgICAgICAqIGFzc2VtYmxlci9SZXBhdGNoQnVmZmVyLmg6CisgICAgICAg
IChKU0M6OlJlcGF0Y2hCdWZmZXI6OnN0YXJ0T2ZCcmFuY2hQdHJXaXRoUGF0Y2hPblJlZ2lzdGVy
KToKKyAgICAgICAgKFJlcGF0Y2hCdWZmZXIpOgorICAgICAgICAoSlNDOjpSZXBhdGNoQnVmZmVy
OjpzdGFydE9mUGF0Y2hhYmxlQnJhbmNoUHRyV2l0aFBhdGNoT25BZGRyZXNzKToKKyAgICAgICAg
KEpTQzo6UmVwYXRjaEJ1ZmZlcjo6cmV2ZXJ0SnVtcFJlcGxhY2VtZW50VG9CcmFuY2hQdHJXaXRo
UGF0Y2gpOgorICAgICAgICAqIGFzc2VtYmxlci9YODZBc3NlbWJsZXIuaDoKKyAgICAgICAgKEpT
Qzo6WDg2QXNzZW1ibGVyOjpyZXZlcnRKdW1wVG9fY21wbF9pcl9mb3JjZTMyKToKKyAgICAgICAg
KFg4NkFzc2VtYmxlcik6CisgICAgICAgICogYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmNwcDoKKyAg
ICAgICAgKEpTQzo6Q2FsbExpbmtJbmZvOjp1bmxpbmspOgorICAgICAgICAqIGJ5dGVjb2RlL0Nh
bGxMaW5rSW5mby5oOgorICAgICAgICAoQ2FsbExpbmtJbmZvKToKKyAgICAgICAgKEpTQzo6Q2Fs
bExpbmtJbmZvOjppc0xpbmtlZCk6CisgICAgICAgIChKU0M6OmdldENhbGxMaW5rSW5mb0J5dGVj
b2RlSW5kZXgpOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5jcHA6CisgICAgICAgIChK
U0M6OkNvZGVCbG9jazo6ZmluYWxpemVVbmNvbmRpdGlvbmFsbHkpOgorICAgICAgICAoSlNDKToK
KyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpmaW5kQ2xvc3VyZUNhbGxGb3JSZXR1cm5QQyk6Cisg
ICAgICAgIChKU0M6OkNvZGVCbG9jazo6Ynl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAoSlNDOjpD
b2RlQmxvY2s6OmNvZGVPcmlnaW5Gb3JSZXR1cm4pOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVC
bG9jay5oOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmdldENhbGxMaW5rSW5mbyk6CisgICAg
ICAgIChDb2RlQmxvY2spOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmlzSW5jb21pbmdDYWxs
QWxyZWFkeUxpbmtlZCk6CisgICAgICAgICogZGZnL0RGR0pJVENvbXBpbGVyLmNwcDoKKyAgICAg
ICAgKEpTQzo6REZHOjpKSVRDb21waWxlcjo6bGluayk6CisgICAgICAgICogZGZnL0RGR0pJVENv
bXBpbGVyLmg6CisgICAgICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6OmFkZEpTQ2FsbCk6Cisg
ICAgICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6OkpTQ2FsbFJlY29yZDo6SlNDYWxsUmVjb3Jk
KToKKyAgICAgICAgKEpTQ2FsbFJlY29yZCk6CisgICAgICAgICogZGZnL0RGR09wZXJhdGlvbnMu
Y3BwOgorICAgICAgICAqIGRmZy9ERkdPcGVyYXRpb25zLmg6CisgICAgICAgICogZGZnL0RGR1Jl
cGF0Y2guY3BwOgorICAgICAgICAoSlNDOjpERkc6OnJlcGxhY2VXaXRoSnVtcCk6CisgICAgICAg
IChKU0M6OkRGRzo6bGlua1Nsb3dGb3IpOgorICAgICAgICAoREZHKToKKyAgICAgICAgKEpTQzo6
REZHOjpkZmdMaW5rRm9yKToKKyAgICAgICAgKEpTQzo6REZHOjpkZmdMaW5rU2xvd0Zvcik6Cisg
ICAgICAgIChKU0M6OkRGRzo6ZGZnTGlua0Nsb3N1cmVDYWxsKToKKyAgICAgICAgKEpTQzo6REZH
OjpkZmdSZXNldEdldEJ5SUQpOgorICAgICAgICAoSlNDOjpERkc6OmRmZ1Jlc2V0UHV0QnlJRCk6
CisgICAgICAgICogZGZnL0RGR1JlcGF0Y2guaDoKKyAgICAgICAgKERGRyk6CisgICAgICAgICog
ZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1
bGF0aXZlSklUOjplbWl0Q2FsbCk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQu
Y3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjplbWl0Q2FsbCk6CisgICAg
ICAgICogZGZnL0RGR1RodW5rcy5jcHA6CisgICAgICAgIChERkcpOgorICAgICAgICAoSlNDOjpE
Rkc6OmxpbmtDbG9zdXJlQ2FsbFRodW5rR2VuZXJhdG9yKToKKyAgICAgICAgKiBkZmcvREZHVGh1
bmtzLmg6CisgICAgICAgIChERkcpOgorICAgICAgICAqIGhlYXAvSGVhcC5oOgorICAgICAgICAo
SGVhcCk6CisgICAgICAgIChKU0M6OkhlYXA6OmppdFN0dWJSb3V0aW5lcyk6CisgICAgICAgICog
aGVhcC9KSVRTdHViUm91dGluZVNldC5oOgorICAgICAgICAoSlNDOjpKSVRTdHViUm91dGluZVNl
dDo6c2l6ZSk6CisgICAgICAgIChKU0M6OkpJVFN0dWJSb3V0aW5lU2V0OjphdCk6CisgICAgICAg
IChKSVRTdHViUm91dGluZVNldCk6CisgICAgICAgICogaml0L0Nsb3N1cmVDYWxsU3R1YlJvdXRp
bmUuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQyk6CisgICAgICAgIChKU0M6OkNsb3N1cmVDYWxs
U3R1YlJvdXRpbmU6OkNsb3N1cmVDYWxsU3R1YlJvdXRpbmUpOgorICAgICAgICAoSlNDOjpDbG9z
dXJlQ2FsbFN0dWJSb3V0aW5lOjp+Q2xvc3VyZUNhbGxTdHViUm91dGluZSk6CisgICAgICAgIChK
U0M6OkNsb3N1cmVDYWxsU3R1YlJvdXRpbmU6Om1hcmtSZXF1aXJlZE9iamVjdHNJbnRlcm5hbCk6
CisgICAgICAgICogaml0L0Nsb3N1cmVDYWxsU3R1YlJvdXRpbmUuaDogQWRkZWQuCisgICAgICAg
IChKU0MpOgorICAgICAgICAoQ2xvc3VyZUNhbGxTdHViUm91dGluZSk6CisgICAgICAgIChKU0M6
OkNsb3N1cmVDYWxsU3R1YlJvdXRpbmU6OnN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OkNsb3N1
cmVDYWxsU3R1YlJvdXRpbmU6OmV4ZWN1dGFibGUpOgorICAgICAgICAoSlNDOjpDbG9zdXJlQ2Fs
bFN0dWJSb3V0aW5lOjpjb2RlT3JpZ2luKToKKyAgICAgICAgKiBqaXQvR0NBd2FyZUpJVFN0dWJS
b3V0aW5lLmNwcDoKKyAgICAgICAgKEpTQzo6R0NBd2FyZUpJVFN0dWJSb3V0aW5lOjpHQ0F3YXJl
SklUU3R1YlJvdXRpbmUpOgorICAgICAgICAqIGppdC9HQ0F3YXJlSklUU3R1YlJvdXRpbmUuaDoK
KyAgICAgICAgKEdDQXdhcmVKSVRTdHViUm91dGluZSk6CisgICAgICAgIChKU0M6OkdDQXdhcmVK
SVRTdHViUm91dGluZTo6aXNDbG9zdXJlQ2FsbCk6CisgICAgICAgICogaml0L0pJVC5jcHA6Cisg
ICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGUpOgorCiAyMDEyLTExLTE5ICBQYXRyaWNr
IEdhbnN0ZXJlciAgPHBhcm9nYUB3ZWJraXQub3JnPgogCiAgICAgICAgIFtDTWFrZV0gQ3JlYXRl
IEphdmFTY3JpcHRDb3JlIEZvcndhcmRpbmdIZWFkZXJzCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAxMzUyMTYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEzOSw2ICsxMzksNyBAQCBTRVQo
SmF2YVNjcmlwdENvcmVfU09VUkNFUwogICAgIGludGVycHJldGVyL0pTU3RhY2suY3BwCiAgICAg
aW50ZXJwcmV0ZXIvVk1JbnNwZWN0b3IuY3BwCiAKKyAgICBqaXQvQ2xvc3VyZUNhbGxTdHViUm91
dGluZS5jcHAKICAgICBqaXQvRXhlY3V0YWJsZUFsbG9jYXRvci5jcHAKICAgICBqaXQvSG9zdENh
bGxSZXR1cm5WYWx1ZS5jcHAKICAgICBqaXQvR0NBd2FyZUpJVFN0dWJSb3V0aW5lLmNwcApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHJldmlzaW9uIDEz
NTIxNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zODQsNiArMzg0LDggQEAgamF2YXNjcmlwdGNvcmVfc291cmNlcyArPSBc
CiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1ZNSW5zcGVjdG9yLmggXAogCVNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZVByZWZpeC5oIFwKIAlTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0NvbXBhY3RKSVRDb2RlTWFwLmggXAorCVNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvQ2xvc3VyZUNhbGxTdHViUm91dGluZS5jcHAgXAorCVNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvQ2xvc3VyZUNhbGxTdHViUm91dGluZS5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0V4ZWN1dGFibGVBbGxvY2F0b3IuY3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0V4ZWN1dGFibGVBbGxvY2F0b3IuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9H
Q0F3YXJlSklUU3R1YlJvdXRpbmUuY3BwIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9U
YXJnZXQucHJpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9UYXJnZXQucHJp
CShyZXZpc2lvbiAxMzUyMTYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvVGFyZ2V0LnByaQko
d29ya2luZyBjb3B5KQpAQCAtMTQ0LDYgKzE0NCw3IEBAIFNPVVJDRVMgKz0gXAogICAgIGludGVy
cHJldGVyL0NhbGxGcmFtZS5jcHAgXAogICAgIGludGVycHJldGVyL0ludGVycHJldGVyLmNwcCBc
CiAgICAgaW50ZXJwcmV0ZXIvSlNTdGFjay5jcHAgXAorICAgIGppdC9DbG9zdXJlQ2FsbFN0dWJS
b3V0aW5lLmNwcCBcCiAgICAgaml0L0V4ZWN1dGFibGVBbGxvY2F0b3JGaXhlZFZNUG9vbC5jcHAg
XAogICAgIGppdC9FeGVjdXRhYmxlQWxsb2NhdG9yLmNwcCBcCiAgICAgaml0L0hvc3RDYWxsUmV0
dXJuVmFsdWUuY3BwIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qCShyZXZpc2lvbiAxMzUyMTYpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLnZjcHJvagkod29ya2luZyBjb3B5KQpAQCAtMTkzMCw2ICsxOTMwLDE0IEBACiAJ
CQlOYW1lPSJqaXQiCiAJCQk+CiAJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5caml0
XENsb3N1cmVDYWxsU3R1YlJvdXRpbmUuY3BwIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxl
CisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxqaXRcQ2xvc3VyZUNhbGxTdHViUm91dGluZS5oIgor
CQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxqaXRc
RXhlY3V0YWJsZUFsbG9jYXRvci5jcHAiCiAJCQkJPgogCQkJPC9GaWxlPgpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDEzNTIxNikKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5n
IGNvcHkpCkBAIC0xNDcsNiArMTQ3LDggQEAKIAkJMEY2Mzk0ODUxNUU0ODExQjAwNkE1OTdDIC8q
IERGR0FycmF5TW9kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMEY2Mzk0ODIxNUU0ODExNDAwNkE1OTdDIC8qIERGR0FycmF5TW9kZS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGNjZFMTZCMTRERjNG
MTYwMEI3QjJFNCAvKiBERkdBZGphY2VuY3lMaXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjY2RTE2ODE0REYzRjEzMDBCN0IyRTQgLyogREZHQWRq
YWNlbmN5TGlzdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTBGNjZFMTZDMTRERjNGMTYwMEI3QjJFNCAvKiBERkdFZGdlLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjY2RTE2OTE0REYzRjEzMDBCN0Iy
RTQgLyogREZHRWRnZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CisJCTBGNzNEN0FFMTY1QTE0MkQwMEFDQUI3MSAvKiBDbG9zdXJlQ2FsbFN0dWJSb3V0
aW5lLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
NzNEN0FCMTY1QTE0MkEwMEFDQUI3MSAvKiBDbG9zdXJlQ2FsbFN0dWJSb3V0aW5lLmNwcCAqLzsg
fTsKKwkJMEY3M0Q3QUYxNjVBMTQzMDAwQUNBQjcxIC8qIENsb3N1cmVDYWxsU3R1YlJvdXRpbmUu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNzNEN0FD
MTY1QTE0MkEwMEFDQUI3MSAvKiBDbG9zdXJlQ2FsbFN0dWJSb3V0aW5lLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY3NjZEMjgxNUE4Q0MxRTAw
OEYzNjNFIC8qIEpJVFN0dWJSb3V0aW5lLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBGNzY2RDI2MTVBOENDMUIwMDhGMzYzRSAvKiBKSVRTdHViUm91
dGluZS5jcHAgKi87IH07CiAJCTBGNzY2RDJCMTVBOENDMzgwMDhGMzYzRSAvKiBKSVRTdHViUm91
dGluZVNldC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRjc2NkQyOTE1QThDQzM0MDA4RjM2M0UgLyogSklUU3R1YlJvdXRpbmVTZXQuY3BwICovOyB9
OwogCQkwRjc2NkQyQzE1QThDQzNBMDA4RjM2M0UgLyogSklUU3R1YlJvdXRpbmVTZXQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNzY2RDJBMTVBOEND
MzQwMDhGMzYzRSAvKiBKSVRTdHViUm91dGluZVNldC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xNjUsOSArMTY3LDkgQEAKIAkJMEY3QjI5NEMx
NEMzQ0Q0MzAwN0MzREIxIC8qIERGR0J5dGVDb2RlQ2FjaGUuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNUYwOENDMTQ2QkU2MDIwMDA0NzJBOSAvKiBE
RkdCeXRlQ29kZUNhY2hlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJMEY3QjI5NEQxNEMzQ0Q0QzAwN0MzREIxIC8qIERGR0NvbW1vbi5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZDMDk3N0UxNDY5RUJD
NDAwQ0YyNDQyIC8qIERGR0NvbW1vbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTBGODAyM0VBMTYxMzgzMkIwMEEwQkE0NSAvKiBCeVZhbEluZm8u
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGODAyM0U5
MTYxMzgzMjMwMEEwQkE0NSAvKiBCeVZhbEluZm8uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwotCQkwRjgzNjRCNzE2NEIwQzExMDA1MzMyOUEgLyogREZH
QnJhbmNoRGlyZWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRjgzNjRCNTE2NEIwQzBFMDA1MzMyOUEgLyogREZHQnJhbmNoRGlyZWN0aW9uLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY4MzM1
QjcxNjM5QzFFNjAwMTQ0M0I1IC8qIEFycmF5QWxsb2NhdGlvblByb2ZpbGUuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY4MzM1QjQxNjM5QzFFMzAw
MTQ0M0I1IC8qIEFycmF5QWxsb2NhdGlvblByb2ZpbGUuY3BwICovOyB9OwogCQkwRjgzMzVCODE2
MzlDMUVBMDAxNDQzQjUgLyogQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY4MzM1QjUxNjM5QzFFMzAwMTQ0M0I1
IC8qIEFycmF5QWxsb2NhdGlvblByb2ZpbGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OworCQkwRjgzNjRCNzE2NEIwQzExMDA1MzMyOUEgLyogREZHQnJh
bmNoRGlyZWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwRjgzNjRCNTE2NEIwQzBFMDA1MzMyOUEgLyogREZHQnJhbmNoRGlyZWN0aW9uLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY5MTlEMEMx
NTdFRTA5RjAwNEE0RTdEIC8qIEpTU3ltYm9sVGFibGVPYmplY3QuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY5MTlEMDkxNTdFRTA5RDAwNEE0RTdE
IC8qIEpTU3ltYm9sVGFibGVPYmplY3QuY3BwICovOyB9OwogCQkwRjkxOUQwRDE1N0VFMEEyMDA0
QTRFN0QgLyogSlNTeW1ib2xUYWJsZU9iamVjdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEY5MTlEMEExNTdFRTA5RDAwNEE0RTdEIC8qIEpTU3ltYm9s
VGFibGVPYmplY3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQkwRjkxOUQxMDE1N0YzMzI5MDA0QTRFN0QgLyogSlNTZWdtZW50ZWRWYXJpYWJsZU9i
amVjdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
RjkxOUQwRTE1N0YzMzI3MDA0QTRFN0QgLyogSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdC5jcHAg
Ki87IH07CkBAIC05MzgsNiArOTQwLDggQEAKIAkJMEY2Mzk0ODIxNUU0ODExNDAwNkE1OTdDIC8q
IERGR0FycmF5TW9kZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdBcnJh
eU1vZGUuaDsgcGF0aCA9IGRmZy9ERkdBcnJheU1vZGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMEY2NkUxNjgxNERGM0YxMzAwQjdCMkU0IC8qIERGR0FkamFjZW5jeUxpc3QuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHQWRqYWNlbmN5TGlzdC5oOyBwYXRo
ID0gZGZnL0RGR0FkamFjZW5jeUxpc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MEY2NkUxNjkxNERGM0YxMzAwQjdCMkU0IC8qIERGR0VkZ2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBuYW1lID0gREZHRWRnZS5oOyBwYXRoID0gZGZnL0RGR0VkZ2UuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY3M0Q3QUIxNjVBMTQyQTAwQUNBQjcxIC8qIENsb3N1cmVD
YWxsU3R1YlJvdXRpbmUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
Q2xvc3VyZUNhbGxTdHViUm91dGluZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTBGNzNEN0FDMTY1QTE0MkEwMEFDQUI3MSAvKiBDbG9zdXJlQ2FsbFN0dWJSb3V0aW5lLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENsb3N1cmVDYWxsU3R1YlJvdXRpbmUuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY3NjZEMUMxNUE1MDI4RDAwOEYzNjNFIC8q
IEpJVFN0dWJSb3V0aW5lLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpJVFN0
dWJSb3V0aW5lLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNzY2RDI2MTVBOEND
MUIwMDhGMzYzRSAvKiBKSVRTdHViUm91dGluZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBKSVRTdHViUm91dGluZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTBGNzY2RDI5MTVBOENDMzQwMDhGMzYzRSAvKiBKSVRTdHViUm91dGluZVNldC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKSVRTdHViUm91dGluZVNldC5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC05NTQsOSArOTU4LDkgQEAKIAkJMEY3
NzAwOTExNDAyRkYyODAwNzhFQjM5IC8qIFNhbXBsaW5nQ291bnRlci5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTYW1wbGluZ0NvdW50ZXIuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkwRjdCMjk0ODE0QzNDRDIzMDA3QzNEQjEgLyogREZHQ0NhbGxI
ZWxwZXJzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR0NDYWxsSGVscGVy
cy5oOyBwYXRoID0gZGZnL0RGR0NDYWxsSGVscGVycy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkwRjgwMjNFOTE2MTM4MzIzMDBBMEJBNDUgLyogQnlWYWxJbmZvLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJ5VmFsSW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQkwRjgzNjRCNTE2NEIwQzBFMDA1MzMyOUEgLyogREZHQnJhbmNoRGlyZWN0aW9u
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR0JyYW5jaERpcmVjdGlvbi5o
OyBwYXRoID0gZGZnL0RGR0JyYW5jaERpcmVjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkwRjgzMzVCNDE2MzlDMUUzMDAxNDQzQjUgLyogQXJyYXlBbGxvY2F0aW9uUHJvZmls
ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBcnJheUFsbG9jYXRp
b25Qcm9maWxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY4MzM1QjUxNjM5
QzFFMzAwMTQ0M0I1IC8qIEFycmF5QWxsb2NhdGlvblByb2ZpbGUuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkwRjgzNjRCNTE2NEIwQzBFMDA1MzMyOUEgLyogREZHQnJhbmNoRGly
ZWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR0JyYW5jaERpcmVj
dGlvbi5oOyBwYXRoID0gZGZnL0RGR0JyYW5jaERpcmVjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkwRjkxOUQwOTE1N0VFMDlEMDA0QTRFN0QgLyogSlNTeW1ib2xUYWJsZU9i
amVjdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1N5bWJvbFRh
YmxlT2JqZWN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY5MTlEMEExNTdF
RTA5RDAwNEE0RTdEIC8qIEpTU3ltYm9sVGFibGVPYmplY3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gSlNTeW1ib2xUYWJsZU9iamVjdC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkwRjkxOUQwRTE1N0YzMzI3MDA0QTRFN0QgLyogSlNTZWdtZW50ZWRWYXJpYWJs
ZU9iamVjdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1NlZ21l
bnRlZFZhcmlhYmxlT2JqZWN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE4
MDMsNiArMTgwNyw4IEBACiAJCTE0MjlEOTJDMEVEMjJENzAwMEI4OTYxOSAvKiBqaXQgKi8gPSB7
CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTBGNzNEN0FCMTY1QTE0
MkEwMEFDQUI3MSAvKiBDbG9zdXJlQ2FsbFN0dWJSb3V0aW5lLmNwcCAqLywKKwkJCQkwRjczRDdB
QzE2NUExNDJBMDBBQ0FCNzEgLyogQ2xvc3VyZUNhbGxTdHViUm91dGluZS5oICovLAogCQkJCTBG
RDgyRTM3MTQxQUIxNDIwMDE3OUM5NCAvKiBDb21wYWN0SklUQ29kZU1hcC5oICovLAogCQkJCUE3
QjQ4REI2MEVFNzRDRkMwMERDQkRCNiAvKiBFeGVjdXRhYmxlQWxsb2NhdG9yLmNwcCAqLywKIAkJ
CQlBN0I0OERCNTBFRTc0Q0ZDMDBEQ0JEQjYgLyogRXhlY3V0YWJsZUFsbG9jYXRvci5oICovLApA
QCAtMzAyMiw2ICszMDI4LDcgQEAKIAkJCQlBN0I2MDE4MjE2MzlGRDJBMDAzNzJCQTMgLyogVW5s
aW5rZWRDb2RlQmxvY2suaCBpbiBIZWFkZXJzICovLAogCQkJCUE3N0YxODIyMTY0MDg4QjIwMDY0
MEE0NyAvKiBDb2RlQ2FjaGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3N0YxODI1MTY0MTkyQzcw
MDY0MEE0NyAvKiBQYXJzZXJNb2Rlcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEY3M0Q3QUYxNjVB
MTQzMDAwQUNBQjcxIC8qIENsb3N1cmVDYWxsU3R1YlJvdXRpbmUuaCBpbiBIZWFkZXJzICovLAog
CQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpA
QCAtMzYwMSw2ICszNjA4LDcgQEAKIAkJCQkwRjgzMzVCNzE2MzlDMUU2MDAxNDQzQjUgLyogQXJy
YXlBbGxvY2F0aW9uUHJvZmlsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNzZGMjc5NDE1RjEz
Qzk2MDA1MTdENjcgLyogVW5saW5rZWRDb2RlQmxvY2suY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QTc3RjE4MjExNjQwODhCMjAwNjQwQTQ3IC8qIENvZGVDYWNoZS5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQkwRjczRDdBRTE2NUExNDJEMDBBQ0FCNzEgLyogQ2xvc3VyZUNhbGxTdHViUm91dGluZS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9j
ZXNzaW5nID0gMDsKIAkJfTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIv
QVJNdjdBc3NlbWJsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL0FSTXY3QXNzZW1ibGVyLmgJKHJldmlzaW9uIDEzNTIxNikKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvQVJNdjdBc3NlbWJsZXIuaAkod29ya2luZyBjb3B5KQpAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDksIDIwMTAgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA5LCAyMDEwLCAyMDEyIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxMCBVbml2
ZXJzaXR5IG9mIFN6ZWdlZAogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtNTA3LDcgKzUwNyw3IEBAIHB1
YmxpYzoKIHByaXZhdGU6CiAKICAgICAvLyBBUk12NywgQXBweC1BLjYuMwotICAgIGJvb2wgQmFk
UmVnKFJlZ2lzdGVySUQgcmVnKQorICAgIHN0YXRpYyBib29sIEJhZFJlZyhSZWdpc3RlcklEIHJl
ZykKICAgICB7CiAgICAgICAgIHJldHVybiAocmVnID09IEFSTVJlZ2lzdGVyczo6c3ApIHx8IChy
ZWcgPT0gQVJNUmVnaXN0ZXJzOjpwYyk7CiAgICAgfQpAQCAtMTI2MSw2ICsxMjYxLDE4IEBAIHB1
YmxpYzoKICAgICAgICAgCiAgICAgICAgIG1fZm9ybWF0dGVyLnR3b1dvcmRPcDVpNkltbTRSZWc0
RW5jb2RlZEltbShPUF9NT1ZfaW1tX1QzLCBpbW0ubV92YWx1ZS5pbW00LCByZCwgaW1tKTsKICAg
ICB9CisgICAgCisgICAgc3RhdGljIHZvaWQgcmV2ZXJ0SnVtcFRvX21vdlQzKHZvaWQqIGluc3Ry
dWN0aW9uU3RhcnQsIFJlZ2lzdGVySUQgcmQsIEFSTVRodW1iSW1tZWRpYXRlIGltbSkKKyAgICB7
CisgICAgICAgIEFTU0VSVChpbW0uaXNWYWxpZCgpKTsKKyAgICAgICAgQVNTRVJUKCFpbW0uaXNF
bmNvZGVkSW1tKCkpOworICAgICAgICBBU1NFUlQoIUJhZFJlZyhyZCkpOworICAgICAgICAKKyAg
ICAgICAgdWludDE2X3QqIGFkZHJlc3MgPSBzdGF0aWNfY2FzdDx1aW50MTZfdCo+KGluc3RydWN0
aW9uU3RhcnQpOworICAgICAgICBhZGRyZXNzWzBdID0gdHdvV29yZE9wNWk2SW1tNFJlZzRFbmNv
ZGVkSW1tRmlyc3QoT1BfTU9WX2ltbV9UMywgaW1tKTsKKyAgICAgICAgYWRkcmVzc1sxXSA9IHR3
b1dvcmRPcDVpNkltbTRSZWc0RW5jb2RlZEltbVNlY29uZChyZCwgaW1tKTsKKyAgICAgICAgY2Fj
aGVGbHVzaChhZGRyZXNzLCBzaXplb2YodWludDE2X3QpICogMik7CisgICAgfQogCiAgICAgQUxX
QVlTX0lOTElORSB2b2lkIG1vdihSZWdpc3RlcklEIHJkLCBBUk1UaHVtYkltbWVkaWF0ZSBpbW0p
CiAgICAgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9MaW5rQnVmZmVy
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9MaW5rQnVm
ZmVyLmgJKHJldmlzaW9uIDEzNTIxNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvTGlua0J1ZmZlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yODgsNyArMjg4LDcgQEAgcHJpdmF0
ZToKICAgICBGSU5BTElaRV9DT0RFX0lGKE9wdGlvbnM6OnNob3dEaXNhc3NlbWJseSgpLCBsaW5r
QnVmZmVyUmVmZXJlbmNlLCBkYXRhTG9nQXJndW1lbnRzRm9ySGVhZGluZykKIAogI2RlZmluZSBG
SU5BTElaRV9ERkdfQ09ERShsaW5rQnVmZmVyUmVmZXJlbmNlLCBkYXRhTG9nQXJndW1lbnRzRm9y
SGVhZGluZykgIFwKLSAgICBGSU5BTElaRV9DT0RFX0lGKE9wdGlvbnM6OnNob3dERkdEaXNhc3Nl
bWJseSgpLCBsaW5rQnVmZmVyUmVmZXJlbmNlLCBkYXRhTG9nQXJndW1lbnRzRm9ySGVhZGluZykK
KyAgICBGSU5BTElaRV9DT0RFX0lGKChPcHRpb25zOjpzaG93RGlzYXNzZW1ibHkoKSB8fCBPcHRp
b25zOjpzaG93REZHRGlzYXNzZW1ibHkoKSksIGxpbmtCdWZmZXJSZWZlcmVuY2UsIGRhdGFMb2dB
cmd1bWVudHNGb3JIZWFkaW5nKQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKIApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTXY3LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTXY3
LmgJKHJldmlzaW9uIDEzNTIxNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIv
TWFjcm9Bc3NlbWJsZXJBUk12Ny5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNzYxLDcgKzE3NjEsMTgg
QEAgcHVibGljOgogICAgIAogICAgIHN0YXRpYyBib29sIGNhbkp1bXBSZXBsYWNlUGF0Y2hhYmxl
QnJhbmNoUHRyV2l0aFBhdGNoKCkgeyByZXR1cm4gZmFsc2U7IH0KICAgICAKLSAgICBzdGF0aWMg
Q29kZUxvY2F0aW9uTGFiZWwgc3RhcnRPZlBhdGNoYWJsZUJyYW5jaFB0cldpdGhQYXRjaChDb2Rl
TG9jYXRpb25EYXRhTGFiZWxQdHIpCisgICAgc3RhdGljIENvZGVMb2NhdGlvbkxhYmVsIHN0YXJ0
T2ZCcmFuY2hQdHJXaXRoUGF0Y2hPblJlZ2lzdGVyKENvZGVMb2NhdGlvbkRhdGFMYWJlbFB0ciBs
YWJlbCkKKyAgICB7CisgICAgICAgIGNvbnN0IHVuc2lnbmVkIHR3b1dvcmRPcFNpemUgPSA0Owor
ICAgICAgICByZXR1cm4gbGFiZWwubGFiZWxBdE9mZnNldCgtdHdvV29yZE9wU2l6ZSAqIDIpOwor
ICAgIH0KKyAgICAKKyAgICBzdGF0aWMgdm9pZCByZXZlcnRKdW1wUmVwbGFjZW1lbnRUb0JyYW5j
aFB0cldpdGhQYXRjaChDb2RlTG9jYXRpb25MYWJlbCBpbnN0cnVjdGlvblN0YXJ0LCBSZWdpc3Rl
cklELCB2b2lkKiBpbml0aWFsVmFsdWUpCisgICAgeworICAgICAgICBBUk12N0Fzc2VtYmxlcjo6
cmV2ZXJ0SnVtcFRvX21vdlQzKGluc3RydWN0aW9uU3RhcnQuZGF0YUxvY2F0aW9uKCksIGRhdGFU
ZW1wUmVnaXN0ZXIsIEFSTVRodW1iSW1tZWRpYXRlOjptYWtlVUludDE2KHJlaW50ZXJwcmV0X2Nh
c3Q8dWludHB0cl90Pihpbml0aWFsVmFsdWUpICYgMHhmZmZmKSk7CisgICAgfQorICAgIAorICAg
IHN0YXRpYyBDb2RlTG9jYXRpb25MYWJlbCBzdGFydE9mUGF0Y2hhYmxlQnJhbmNoUHRyV2l0aFBh
dGNoT25BZGRyZXNzKENvZGVMb2NhdGlvbkRhdGFMYWJlbFB0cikKICAgICB7CiAgICAgICAgIFVO
UkVBQ0hBQkxFX0ZPUl9QTEFURk9STSgpOwogICAgICAgICByZXR1cm4gQ29kZUxvY2F0aW9uTGFi
ZWwoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJs
ZXJYODYuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01h
Y3JvQXNzZW1ibGVyWDg2LmgJKHJldmlzaW9uIDEzNTIxNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODYuaAkod29ya2luZyBjb3B5KQpAQCAtMjU1
LDcgKzI1NSwxNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgYm9vbCBjYW5KdW1wUmVwbGFjZVBh
dGNoYWJsZUJyYW5jaFB0cldpdGhQYXRjaCgpIHsgcmV0dXJuIHRydWU7IH0KICAgICAKLSAgICBz
dGF0aWMgQ29kZUxvY2F0aW9uTGFiZWwgc3RhcnRPZlBhdGNoYWJsZUJyYW5jaFB0cldpdGhQYXRj
aChDb2RlTG9jYXRpb25EYXRhTGFiZWxQdHIgbGFiZWwpCisgICAgc3RhdGljIENvZGVMb2NhdGlv
bkxhYmVsIHN0YXJ0T2ZCcmFuY2hQdHJXaXRoUGF0Y2hPblJlZ2lzdGVyKENvZGVMb2NhdGlvbkRh
dGFMYWJlbFB0ciBsYWJlbCkKKyAgICB7CisgICAgICAgIGNvbnN0IGludCBvcGNvZGVCeXRlcyA9
IDE7CisgICAgICAgIGNvbnN0IGludCBtb2RSTUJ5dGVzID0gMTsKKyAgICAgICAgY29uc3QgaW50
IGltbWVkaWF0ZUJ5dGVzID0gNDsKKyAgICAgICAgY29uc3QgaW50IHRvdGFsQnl0ZXMgPSBvcGNv
ZGVCeXRlcyArIG1vZFJNQnl0ZXMgKyBpbW1lZGlhdGVCeXRlczsKKyAgICAgICAgQVNTRVJUKHRv
dGFsQnl0ZXMgPj0gbWF4SnVtcFJlcGxhY2VtZW50U2l6ZSgpKTsKKyAgICAgICAgcmV0dXJuIGxh
YmVsLmxhYmVsQXRPZmZzZXQoLXRvdGFsQnl0ZXMpOworICAgIH0KKyAgICAKKyAgICBzdGF0aWMg
Q29kZUxvY2F0aW9uTGFiZWwgc3RhcnRPZlBhdGNoYWJsZUJyYW5jaFB0cldpdGhQYXRjaE9uQWRk
cmVzcyhDb2RlTG9jYXRpb25EYXRhTGFiZWxQdHIgbGFiZWwpCiAgICAgewogICAgICAgICBjb25z
dCBpbnQgb3Bjb2RlQnl0ZXMgPSAxOwogICAgICAgICBjb25zdCBpbnQgbW9kUk1CeXRlcyA9IDE7
CkBAIC0yNjYsNiArMjc2LDExIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGxhYmVsLmxhYmVs
QXRPZmZzZXQoLXRvdGFsQnl0ZXMpOwogICAgIH0KICAgICAKKyAgICBzdGF0aWMgdm9pZCByZXZl
cnRKdW1wUmVwbGFjZW1lbnRUb0JyYW5jaFB0cldpdGhQYXRjaChDb2RlTG9jYXRpb25MYWJlbCBp
bnN0cnVjdGlvblN0YXJ0LCBSZWdpc3RlcklEIHJlZywgdm9pZCogaW5pdGlhbFZhbHVlKQorICAg
IHsKKyAgICAgICAgWDg2QXNzZW1ibGVyOjpyZXZlcnRKdW1wVG9fY21wbF9pcl9mb3JjZTMyKGlu
c3RydWN0aW9uU3RhcnQuZXhlY3V0YWJsZUFkZHJlc3MoKSwgcmVpbnRlcnByZXRfY2FzdDxpbnRw
dHJfdD4oaW5pdGlhbFZhbHVlKSwgcmVnKTsKKyAgICB9CisKICAgICBzdGF0aWMgdm9pZCByZXZl
cnRKdW1wUmVwbGFjZW1lbnRUb1BhdGNoYWJsZUJyYW5jaFB0cldpdGhQYXRjaChDb2RlTG9jYXRp
b25MYWJlbCBpbnN0cnVjdGlvblN0YXJ0LCBBZGRyZXNzIGFkZHJlc3MsIHZvaWQqIGluaXRpYWxW
YWx1ZSkKICAgICB7CiAgICAgICAgIEFTU0VSVCghYWRkcmVzcy5vZmZzZXQpOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJY
ODZfNjQuaAkocmV2aXNpb24gMTM1MjE2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2Vt
Ymxlci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5oCSh3b3JraW5nIGNvcHkpCkBAIC01ODcsNyArNTg3
LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIGJvb2wgY2FuSnVtcFJlcGxhY2VQYXRjaGFibGVC
cmFuY2hQdHJXaXRoUGF0Y2goKSB7IHJldHVybiB0cnVlOyB9CiAgICAgCi0gICAgc3RhdGljIENv
ZGVMb2NhdGlvbkxhYmVsIHN0YXJ0T2ZQYXRjaGFibGVCcmFuY2hQdHJXaXRoUGF0Y2goQ29kZUxv
Y2F0aW9uRGF0YUxhYmVsUHRyIGxhYmVsKQorICAgIHN0YXRpYyBDb2RlTG9jYXRpb25MYWJlbCBz
dGFydE9mQnJhbmNoUHRyV2l0aFBhdGNoT25SZWdpc3RlcihDb2RlTG9jYXRpb25EYXRhTGFiZWxQ
dHIgbGFiZWwpCiAgICAgewogICAgICAgICBjb25zdCBpbnQgcmV4Qnl0ZXMgPSAxOwogICAgICAg
ICBjb25zdCBpbnQgb3Bjb2RlQnl0ZXMgPSAxOwpAQCAtNTk3LDExICs1OTcsMjEgQEAgcHVibGlj
OgogICAgICAgICByZXR1cm4gbGFiZWwubGFiZWxBdE9mZnNldCgtdG90YWxCeXRlcyk7CiAgICAg
fQogICAgIAorICAgIHN0YXRpYyBDb2RlTG9jYXRpb25MYWJlbCBzdGFydE9mUGF0Y2hhYmxlQnJh
bmNoUHRyV2l0aFBhdGNoT25BZGRyZXNzKENvZGVMb2NhdGlvbkRhdGFMYWJlbFB0ciBsYWJlbCkK
KyAgICB7CisgICAgICAgIHJldHVybiBzdGFydE9mQnJhbmNoUHRyV2l0aFBhdGNoT25SZWdpc3Rl
cihsYWJlbCk7CisgICAgfQorICAgIAogICAgIHN0YXRpYyB2b2lkIHJldmVydEp1bXBSZXBsYWNl
bWVudFRvUGF0Y2hhYmxlQnJhbmNoUHRyV2l0aFBhdGNoKENvZGVMb2NhdGlvbkxhYmVsIGluc3Ry
dWN0aW9uU3RhcnQsIEFkZHJlc3MsIHZvaWQqIGluaXRpYWxWYWx1ZSkKICAgICB7CiAgICAgICAg
IFg4NkFzc2VtYmxlcjo6cmV2ZXJ0SnVtcFRvX21vdnFfaTY0cihpbnN0cnVjdGlvblN0YXJ0LmV4
ZWN1dGFibGVBZGRyZXNzKCksIHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KGluaXRpYWxWYWx1
ZSksIHNjcmF0Y2hSZWdpc3Rlcik7CiAgICAgfQogCisgICAgc3RhdGljIHZvaWQgcmV2ZXJ0SnVt
cFJlcGxhY2VtZW50VG9CcmFuY2hQdHJXaXRoUGF0Y2goQ29kZUxvY2F0aW9uTGFiZWwgaW5zdHJ1
Y3Rpb25TdGFydCwgUmVnaXN0ZXJJRCwgdm9pZCogaW5pdGlhbFZhbHVlKQorICAgIHsKKyAgICAg
ICAgWDg2QXNzZW1ibGVyOjpyZXZlcnRKdW1wVG9fbW92cV9pNjRyKGluc3RydWN0aW9uU3RhcnQu
ZXhlY3V0YWJsZUFkZHJlc3MoKSwgcmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4oaW5pdGlhbFZh
bHVlKSwgc2NyYXRjaFJlZ2lzdGVyKTsKKyAgICB9CisKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNs
YXNzIExpbmtCdWZmZXI7CiAgICAgZnJpZW5kIGNsYXNzIFJlcGF0Y2hCdWZmZXI7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1JlcGF0Y2hCdWZmZXIuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1JlcGF0Y2hCdWZmZXIuaAkocmV2
aXNpb24gMTM1MjE2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9SZXBhdGNo
QnVmZmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTE0MSw5ICsxNDEsMTQgQEAgcHVibGljOgogICAg
ICAgICAgICAgcmVwbGFjZVdpdGhBZGRyZXNzQ29tcHV0YXRpb24obGFiZWwpOwogICAgIH0KIAot
ICAgIHN0YXRpYyBDb2RlTG9jYXRpb25MYWJlbCBzdGFydE9mUGF0Y2hhYmxlQnJhbmNoUHRyV2l0
aFBhdGNoKENvZGVMb2NhdGlvbkRhdGFMYWJlbFB0ciBsYWJlbCkKKyAgICBzdGF0aWMgQ29kZUxv
Y2F0aW9uTGFiZWwgc3RhcnRPZkJyYW5jaFB0cldpdGhQYXRjaE9uUmVnaXN0ZXIoQ29kZUxvY2F0
aW9uRGF0YUxhYmVsUHRyIGxhYmVsKQogICAgIHsKLSAgICAgICAgcmV0dXJuIE1hY3JvQXNzZW1i
bGVyOjpzdGFydE9mUGF0Y2hhYmxlQnJhbmNoUHRyV2l0aFBhdGNoKGxhYmVsKTsKKyAgICAgICAg
cmV0dXJuIE1hY3JvQXNzZW1ibGVyOjpzdGFydE9mQnJhbmNoUHRyV2l0aFBhdGNoT25SZWdpc3Rl
cihsYWJlbCk7CisgICAgfQorICAgIAorICAgIHN0YXRpYyBDb2RlTG9jYXRpb25MYWJlbCBzdGFy
dE9mUGF0Y2hhYmxlQnJhbmNoUHRyV2l0aFBhdGNoT25BZGRyZXNzKENvZGVMb2NhdGlvbkRhdGFM
YWJlbFB0ciBsYWJlbCkKKyAgICB7CisgICAgICAgIHJldHVybiBNYWNyb0Fzc2VtYmxlcjo6c3Rh
cnRPZlBhdGNoYWJsZUJyYW5jaFB0cldpdGhQYXRjaE9uQWRkcmVzcyhsYWJlbCk7CiAgICAgfQog
ICAgIAogICAgIHZvaWQgcmVwbGFjZVdpdGhKdW1wKENvZGVMb2NhdGlvbkxhYmVsIGluc3RydWN0
aW9uU3RhcnQsIENvZGVMb2NhdGlvbkxhYmVsIGRlc3RpbmF0aW9uKQpAQCAtMTU0LDYgKzE1OSwx
MSBAQCBwdWJsaWM6CiAgICAgLy8gVGhpcyBpcyBhICpiaXQqIG9mIGEgc2lsbHkgQVBJLCBzaW5j
ZSB3ZSBjdXJyZW50bHkgYWx3YXlzIGFsc28gcmVwYXRjaCB0aGUKICAgICAvLyBpbW1lZGlhdGUg
YWZ0ZXIgY2FsbGluZyB0aGlzLiBCdXQgSSdtIGZpbmUgd2l0aCB0aGF0LCBzaW5jZSB0aGlzIGp1
c3QgZmVlbHMKICAgICAvLyBsZXNzIHl1Y2t5LgorICAgIHZvaWQgcmV2ZXJ0SnVtcFJlcGxhY2Vt
ZW50VG9CcmFuY2hQdHJXaXRoUGF0Y2goQ29kZUxvY2F0aW9uTGFiZWwgaW5zdHJ1Y3Rpb25TdGFy
dCwgTWFjcm9Bc3NlbWJsZXI6OlJlZ2lzdGVySUQgcmVnLCB2b2lkKiB2YWx1ZSkKKyAgICB7Cisg
ICAgICAgIE1hY3JvQXNzZW1ibGVyOjpyZXZlcnRKdW1wUmVwbGFjZW1lbnRUb0JyYW5jaFB0cldp
dGhQYXRjaChpbnN0cnVjdGlvblN0YXJ0LCByZWcsIHZhbHVlKTsKKyAgICB9CisKICAgICB2b2lk
IHJldmVydEp1bXBSZXBsYWNlbWVudFRvUGF0Y2hhYmxlQnJhbmNoUHRyV2l0aFBhdGNoKENvZGVM
b2NhdGlvbkxhYmVsIGluc3RydWN0aW9uU3RhcnQsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzIGFk
ZHJlc3MsIHZvaWQqIHZhbHVlKQogICAgIHsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OnJldmVy
dEp1bXBSZXBsYWNlbWVudFRvUGF0Y2hhYmxlQnJhbmNoUHRyV2l0aFBhdGNoKGluc3RydWN0aW9u
U3RhcnQsIGFkZHJlc3MsIHZhbHVlKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3Nl
bWJsZXIvWDg2QXNzZW1ibGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Fzc2VtYmxlci9YODZBc3NlbWJsZXIuaAkocmV2aXNpb24gMTM1MjE2KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9YODZBc3NlbWJsZXIuaAkod29ya2luZyBjb3B5KQpAQCAt
MTkwMyw2ICsxOTAzLDIzIEBAIHB1YmxpYzoKICAgICB9CiAjZW5kaWYKICAgICAKKyAgICBzdGF0
aWMgdm9pZCByZXZlcnRKdW1wVG9fY21wbF9pcl9mb3JjZTMyKHZvaWQqIGluc3RydWN0aW9uU3Rh
cnQsIGludDMyX3QgaW1tLCBSZWdpc3RlcklEIGRzdCkKKyAgICB7CisgICAgICAgIGNvbnN0IGlu
dCBvcGNvZGVCeXRlcyA9IDE7CisgICAgICAgIGNvbnN0IGludCBtb2RSTUJ5dGVzID0gMTsKKyAg
ICAgICAgQVNTRVJUKG9wY29kZUJ5dGVzICsgbW9kUk1CeXRlcyA8PSBtYXhKdW1wUmVwbGFjZW1l
bnRTaXplKCkpOworICAgICAgICB1aW50OF90KiBwdHIgPSByZWludGVycHJldF9jYXN0PHVpbnQ4
X3QqPihpbnN0cnVjdGlvblN0YXJ0KTsKKyAgICAgICAgcHRyWzBdID0gT1BfR1JPVVAxX0V2SXo7
CisgICAgICAgIHB0clsxXSA9IChYODZJbnN0cnVjdGlvbkZvcm1hdHRlcjo6TW9kUm1SZWdpc3Rl
ciA8PCA2KSB8IChHUk9VUDFfT1BfQ01QIDw8IDMpIHwgZHN0OworICAgICAgICB1bmlvbiB7Cisg
ICAgICAgICAgICB1aW50MzJfdCBhc1dvcmQ7CisgICAgICAgICAgICB1aW50OF90IGFzQnl0ZXNb
NF07CisgICAgICAgIH0gdTsKKyAgICAgICAgdS5hc1dvcmQgPSBpbW07CisgICAgICAgIGZvciAo
dW5zaWduZWQgaSA9IG9wY29kZUJ5dGVzICsgbW9kUk1CeXRlczsgaSA8IHN0YXRpY19jYXN0PHVu
c2lnbmVkPihtYXhKdW1wUmVwbGFjZW1lbnRTaXplKCkpOyArK2kpCisgICAgICAgICAgICBwdHJb
aV0gPSB1LmFzQnl0ZXNbaSAtIG9wY29kZUJ5dGVzIC0gbW9kUk1CeXRlc107CisgICAgfQorICAg
IAogICAgIHN0YXRpYyB2b2lkIHJldmVydEp1bXBUb19jbXBsX2ltX2ZvcmNlMzIodm9pZCogaW5z
dHJ1Y3Rpb25TdGFydCwgaW50MzJfdCBpbW0sIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgZHN0KQog
ICAgIHsKICAgICAgICAgQVNTRVJUX1VOVVNFRChvZmZzZXQsICFvZmZzZXQpOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rSW5mby5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rSW5mby5jcHAJKHJldmlz
aW9uIDEzNTIxNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0lu
Zm8uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw2ICszNyw3IEBAIHZvaWQgQ2FsbExpbmtJbmZv
Ojp1bmxpbmsoSlNHbG9iYWxEYXRhJiAKIHsKICAgICBBU1NFUlQoaXNMaW5rZWQoKSk7CiAgICAg
CisgICAgcmVwYXRjaEJ1ZmZlci5yZXZlcnRKdW1wUmVwbGFjZW1lbnRUb0JyYW5jaFB0cldpdGhQ
YXRjaChSZXBhdGNoQnVmZmVyOjpzdGFydE9mQnJhbmNoUHRyV2l0aFBhdGNoT25SZWdpc3Rlciho
b3RQYXRoQmVnaW4pLCBzdGF0aWNfY2FzdDxNYWNyb0Fzc2VtYmxlcjo6UmVnaXN0ZXJJRD4oY2Fs
bGVlR1BSKSwgMCk7CiAgICAgaWYgKGlzREZHKSB7CiAjaWYgRU5BQkxFKERGR19KSVQpCiAgICAg
ICAgIHJlcGF0Y2hCdWZmZXIucmVsaW5rKGNhbGxSZXR1cm5Mb2NhdGlvbiwgKGNhbGxUeXBlID09
IENvbnN0cnVjdCA/IGdsb2JhbERhdGEuZ2V0Q1RJU3R1YihERkc6OmxpbmtDb25zdHJ1Y3RUaHVu
a0dlbmVyYXRvcikgOiBnbG9iYWxEYXRhLmdldENUSVN0dWIoREZHOjpsaW5rQ2FsbFRodW5rR2Vu
ZXJhdG9yKSkuY29kZSgpKTsKQEAgLTQ3LDYgKzQ4LDcgQEAgdm9pZCBDYWxsTGlua0luZm86OnVu
bGluayhKU0dsb2JhbERhdGEmIAogICAgICAgICByZXBhdGNoQnVmZmVyLnJlbGluayhjYWxsUmV0
dXJuTG9jYXRpb24sIGNhbGxUeXBlID09IENvbnN0cnVjdCA/IGdsb2JhbERhdGEuaml0U3R1YnMt
PmN0aVZpcnR1YWxDb25zdHJ1Y3RMaW5rKCkgOiBnbG9iYWxEYXRhLmppdFN0dWJzLT5jdGlWaXJ0
dWFsQ2FsbExpbmsoKSk7CiAgICAgaGFzU2VlblNob3VsZFJlcGF0Y2ggPSBmYWxzZTsKICAgICBj
YWxsZWUuY2xlYXIoKTsKKyAgICBzdHViLmNsZWFyKCk7CiAKICAgICAvLyBJdCB3aWxsIGJlIG9u
IGEgbGlzdCBpZiB0aGUgY2FsbGVlIGhhcyBhIGNvZGUgYmxvY2suCiAgICAgaWYgKGlzT25MaXN0
KCkpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rSW5m
by5oCShyZXZpc2lvbiAxMzUyMTYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q2FsbExpbmtJbmZvLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDcgQEAKICNpZm5kZWYg
Q2FsbExpbmtJbmZvX2gKICNkZWZpbmUgQ2FsbExpbmtJbmZvX2gKIAorI2luY2x1ZGUgIkNsb3N1
cmVDYWxsU3R1YlJvdXRpbmUuaCIKICNpbmNsdWRlICJDb2RlTG9jYXRpb24uaCIKICNpbmNsdWRl
ICJKSVRXcml0ZUJhcnJpZXIuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCkBAIC03MCwxMiAr
NzEsMTQgQEAgc3RydWN0IENhbGxMaW5rSW5mbyA6IHB1YmxpYyBCYXNpY1Jhd1NlbgogICAgIENv
ZGVMb2NhdGlvbk5lYXJDYWxsIGhvdFBhdGhPdGhlcjsKICAgICBKSVRXcml0ZUJhcnJpZXI8SlNG
dW5jdGlvbj4gY2FsbGVlOwogICAgIFdyaXRlQmFycmllcjxKU0Z1bmN0aW9uPiBsYXN0U2VlbkNh
bGxlZTsKKyAgICBSZWZQdHI8Q2xvc3VyZUNhbGxTdHViUm91dGluZT4gc3R1YjsKICAgICBib29s
IGhhc1NlZW5TaG91bGRSZXBhdGNoIDogMTsKICAgICBib29sIGlzREZHIDogMTsKICAgICBDYWxs
VHlwZSBjYWxsVHlwZSA6IDY7Ci0gICAgdW5zaWduZWQgYnl0ZWNvZGVJbmRleDsKKyAgICB1bnNp
Z25lZCBjYWxsZWVHUFIgOiA4OworICAgIENvZGVPcmlnaW4gY29kZU9yaWdpbjsKIAotICAgIGJv
b2wgaXNMaW5rZWQoKSB7IHJldHVybiBjYWxsZWU7IH0KKyAgICBib29sIGlzTGlua2VkKCkgeyBy
ZXR1cm4gc3R1YiB8fCBjYWxsZWU7IH0KICAgICB2b2lkIHVubGluayhKU0dsb2JhbERhdGEmLCBS
ZXBhdGNoQnVmZmVyJik7CiAKICAgICBib29sIHNlZW5PbmNlKCkKQEAgLTk2LDcgKzk5LDcgQEAg
aW5saW5lIHZvaWQqIGdldENhbGxMaW5rSW5mb1JldHVybkxvY2F0aQogCiBpbmxpbmUgdW5zaWdu
ZWQgZ2V0Q2FsbExpbmtJbmZvQnl0ZWNvZGVJbmRleChDYWxsTGlua0luZm8qIGNhbGxMaW5rSW5m
bykKIHsKLSAgICByZXR1cm4gY2FsbExpbmtJbmZvLT5ieXRlY29kZUluZGV4OworICAgIHJldHVy
biBjYWxsTGlua0luZm8tPmNvZGVPcmlnaW4uYnl0ZWNvZGVJbmRleDsKIH0KICNlbmRpZiAvLyBF
TkFCTEUoSklUKQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJs
b2NrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29k
ZUJsb2NrLmNwcAkocmV2aXNpb24gMTM1MjE2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0NvZGVCbG9jay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxODgsNyArMjE4OCw3IEBA
IHZvaWQgQ29kZUJsb2NrOjpmaW5hbGl6ZVVuY29uZGl0aW9uYWxseSgKICAgICAvLyBDaGVjayBp
ZiB3ZSdyZSBub3QgbGl2ZS4gSWYgd2UgYXJlLCB0aGVuIGpldHRpc29uLgogICAgIGlmICghKHNo
b3VsZEltbWVkaWF0ZWx5QXNzdW1lTGl2ZW5lc3NEdXJpbmdTY2FuKCkgfHwgbV9kZmdEYXRhLT5s
aXZlbmVzc0hhc0JlZW5Qcm92ZWQpKSB7CiAgICAgICAgIGlmICh2ZXJib3NlVW5saW5raW5nKQot
ICAgICAgICAgICAgZGF0YUxvZygiQ29kZSBibG9jayAlcCBoYXMgZGVhZCB3ZWFrIHJlZmVyZW5j
ZXMsIGpldHRpc29uaW5nIGR1cmluZyBHQy5cbiIsIHRoaXMpOworICAgICAgICAgICAgZGF0YUxv
ZygiQ29kZSBibG9jayAlcCAoZXhlY3V0YWJsZSAlcCkgaGFzIGRlYWQgd2VhayByZWZlcmVuY2Vz
LCBqZXR0aXNvbmluZyBkdXJpbmcgR0MuXG4iLCB0aGlzLCBvd25lckV4ZWN1dGFibGUoKSk7CiAK
ICAgICAgICAgLy8gTWFrZSBzdXJlIHRoYXQgdGhlIGJhc2VsaW5lIEpJVCBrbm93cyB0aGF0IGl0
IHNob3VsZCByZS13YXJtLXVwIGJlZm9yZQogICAgICAgICAvLyBvcHRpbWl6aW5nLgpAQCAtMjI0
NywxMCArMjI0NywxOSBAQCB2b2lkIENvZGVCbG9jazo6ZmluYWxpemVVbmNvbmRpdGlvbmFsbHko
CiAgICAgaWYgKCEhZ2V0SklUQ29kZSgpKSB7CiAgICAgICAgIFJlcGF0Y2hCdWZmZXIgcmVwYXRj
aEJ1ZmZlcih0aGlzKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bWJlck9m
Q2FsbExpbmtJbmZvcygpOyArK2kpIHsKLSAgICAgICAgICAgIGlmIChjYWxsTGlua0luZm8oaSku
aXNMaW5rZWQoKSAmJiAhSGVhcDo6aXNNYXJrZWQoY2FsbExpbmtJbmZvKGkpLmNhbGxlZS5nZXQo
KSkpIHsKLSAgICAgICAgICAgICAgICBpZiAodmVyYm9zZVVubGlua2luZykKLSAgICAgICAgICAg
ICAgICAgICAgZGF0YUxvZygiQ2xlYXJpbmcgY2FsbCBmcm9tICVwIHRvICVwLlxuIiwgdGhpcywg
Y2FsbExpbmtJbmZvKGkpLmNhbGxlZS5nZXQoKSk7Ci0gICAgICAgICAgICAgICAgY2FsbExpbmtJ
bmZvKGkpLnVubGluaygqbV9nbG9iYWxEYXRhLCByZXBhdGNoQnVmZmVyKTsKKyAgICAgICAgICAg
IGlmIChjYWxsTGlua0luZm8oaSkuaXNMaW5rZWQoKSkgeworICAgICAgICAgICAgICAgIGlmIChD
bG9zdXJlQ2FsbFN0dWJSb3V0aW5lKiBzdHViID0gY2FsbExpbmtJbmZvKGkpLnN0dWIuZ2V0KCkp
IHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFIZWFwOjppc01hcmtlZChzdHViLT5zdHJ1Y3R1
cmUoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHx8ICFIZWFwOjppc01hcmtlZChzdHViLT5l
eGVjdXRhYmxlKCkpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAodmVyYm9zZVVubGlu
a2luZykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCJDbGVhcmluZyBjbG9z
dXJlIGNhbGwgZnJvbSAlcCB0byAlcCwgc3R1YiByb3V0aW5lICVwLlxuIiwgdGhpcywgc3R1Yi0+
ZXhlY3V0YWJsZSgpLCBzdHViKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxMaW5rSW5m
byhpKS51bmxpbmsoKm1fZ2xvYmFsRGF0YSwgcmVwYXRjaEJ1ZmZlcik7CisgICAgICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCFIZWFwOjppc01hcmtlZChjYWxs
TGlua0luZm8oaSkuY2FsbGVlLmdldCgpKSkgeworICAgICAgICAgICAgICAgICAgICBpZiAodmVy
Ym9zZVVubGlua2luZykKKyAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIkNsZWFyaW5n
IGNhbGwgZnJvbSAlcCB0byAlcC5cbiIsIHRoaXMsIGNhbGxMaW5rSW5mbyhpKS5jYWxsZWUuZ2V0
KCkpOworICAgICAgICAgICAgICAgICAgICBjYWxsTGlua0luZm8oaSkudW5saW5rKCptX2dsb2Jh
bERhdGEsIHJlcGF0Y2hCdWZmZXIpOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIGlmICghIWNhbGxMaW5rSW5mbyhpKS5sYXN0U2VlbkNhbGxlZQogICAgICAg
ICAgICAgICAgICYmICFIZWFwOjppc01hcmtlZChjYWxsTGlua0luZm8oaSkubGFzdFNlZW5DYWxs
ZWUuZ2V0KCkpKQpAQCAtMjYwNSw2ICsyNjE0LDM1IEBAIEluc3RydWN0aW9uKiBDb2RlQmxvY2s6
OmFkanVzdFBDSWZBdENhbGwKIH0KICNlbmRpZiAvLyBFTkFCTEUoTExJTlQpCiAKKyNpZiBFTkFC
TEUoSklUKQorQ2xvc3VyZUNhbGxTdHViUm91dGluZSogQ29kZUJsb2NrOjpmaW5kQ2xvc3VyZUNh
bGxGb3JSZXR1cm5QQyhSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MpCit7CisgICAgZm9y
ICh1bnNpZ25lZCBpID0gbV9jYWxsTGlua0luZm9zLnNpemUoKTsgaS0tOykgeworICAgICAgICBD
YWxsTGlua0luZm8mIGluZm8gPSBtX2NhbGxMaW5rSW5mb3NbaV07CisgICAgICAgIGlmICghaW5m
by5zdHViKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIGlmICghaW5mby5zdHViLT5j
b2RlKCkuZXhlY3V0YWJsZU1lbW9yeSgpLT5jb250YWlucyhyZXR1cm5BZGRyZXNzLnZhbHVlKCkp
KQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIAorICAgICAgICByZXR1cm4gaW5mby5z
dHViLmdldCgpOworICAgIH0KKyAgICAKKyAgICAvLyBUaGUgc3R1YiByb3V0aW5lIG1heSBoYXZl
IGJlZW4gamV0dGlzb25lZC4gVGhpcyBpcyByYXJlLCBidXQgd2UgaGF2ZSB0byBoYW5kbGUgaXQu
CisgICAgY29uc3QgSklUU3R1YlJvdXRpbmVTZXQmIHNldCA9IG1fZ2xvYmFsRGF0YS0+aGVhcC5q
aXRTdHViUm91dGluZXMoKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSBzZXQuc2l6ZSgpOyBpLS07
KSB7CisgICAgICAgIEdDQXdhcmVKSVRTdHViUm91dGluZSogZ2VuZXJpY1N0dWIgPSBzZXQuYXQo
aSk7CisgICAgICAgIGlmICghZ2VuZXJpY1N0dWItPmlzQ2xvc3VyZUNhbGwoKSkKKyAgICAgICAg
ICAgIGNvbnRpbnVlOworICAgICAgICBDbG9zdXJlQ2FsbFN0dWJSb3V0aW5lKiBzdHViID0gc3Rh
dGljX2Nhc3Q8Q2xvc3VyZUNhbGxTdHViUm91dGluZSo+KGdlbmVyaWNTdHViKTsKKyAgICAgICAg
aWYgKCFzdHViLT5jb2RlKCkuZXhlY3V0YWJsZU1lbW9yeSgpLT5jb250YWlucyhyZXR1cm5BZGRy
ZXNzLnZhbHVlKCkpKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIHJldHVybiBzdHVi
OworICAgIH0KKyAgICAKKyAgICByZXR1cm4gMDsKK30KKyNlbmRpZgorCiB1bnNpZ25lZCBDb2Rl
QmxvY2s6OmJ5dGVjb2RlT2Zmc2V0KEV4ZWNTdGF0ZSogZXhlYywgUmV0dXJuQWRkcmVzc1B0ciBy
ZXR1cm5BZGRyZXNzKQogewogICAgIFVOVVNFRF9QQVJBTShleGVjKTsKQEAgLTI2NDIsNyArMjY4
MCwxNiBAQCB1bnNpZ25lZCBDb2RlQmxvY2s6OmJ5dGVjb2RlT2Zmc2V0KEV4ZWNTCiAgICAgVmVj
dG9yPENhbGxSZXR1cm5PZmZzZXRUb0J5dGVjb2RlT2Zmc2V0PiYgY2FsbEluZGljZXMgPSBtX3Jh
cmVEYXRhLT5tX2NhbGxSZXR1cm5JbmRleFZlY3RvcjsKICAgICBpZiAoIWNhbGxJbmRpY2VzLnNp
emUoKSkKICAgICAgICAgcmV0dXJuIDE7Ci0gICAgcmV0dXJuIGJpbmFyeVNlYXJjaDxDYWxsUmV0
dXJuT2Zmc2V0VG9CeXRlY29kZU9mZnNldCwgdW5zaWduZWQsIGdldENhbGxSZXR1cm5PZmZzZXQ+
KGNhbGxJbmRpY2VzLmJlZ2luKCksIGNhbGxJbmRpY2VzLnNpemUoKSwgZ2V0SklUQ29kZSgpLm9m
ZnNldE9mKHJldHVybkFkZHJlc3MudmFsdWUoKSkpLT5ieXRlY29kZU9mZnNldDsKKyAgICAKKyAg
ICBpZiAoZ2V0SklUQ29kZSgpLmdldEV4ZWN1dGFibGVNZW1vcnkoKS0+Y29udGFpbnMocmV0dXJu
QWRkcmVzcy52YWx1ZSgpKSkgeworICAgICAgICB1bnNpZ25lZCBjYWxsUmV0dXJuT2Zmc2V0ID0g
Z2V0SklUQ29kZSgpLm9mZnNldE9mKHJldHVybkFkZHJlc3MudmFsdWUoKSk7CisgICAgICAgIENh
bGxSZXR1cm5PZmZzZXRUb0J5dGVjb2RlT2Zmc2V0KiByZXN1bHQgPQorICAgICAgICAgICAgYmlu
YXJ5U2VhcmNoPENhbGxSZXR1cm5PZmZzZXRUb0J5dGVjb2RlT2Zmc2V0LCB1bnNpZ25lZCwgZ2V0
Q2FsbFJldHVybk9mZnNldD4oY2FsbEluZGljZXMuYmVnaW4oKSwgY2FsbEluZGljZXMuc2l6ZSgp
LCBjYWxsUmV0dXJuT2Zmc2V0KTsKKyAgICAgICAgQVNTRVJUKHJlc3VsdC0+Y2FsbFJldHVybk9m
ZnNldCA9PSBjYWxsUmV0dXJuT2Zmc2V0KTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdC0+Ynl0ZWNv
ZGVPZmZzZXQ7CisgICAgfQorCisgICAgcmV0dXJuIGZpbmRDbG9zdXJlQ2FsbEZvclJldHVyblBD
KHJldHVybkFkZHJlc3MpLT5jb2RlT3JpZ2luKCkuYnl0ZWNvZGVJbmRleDsKICNlbmRpZiAvLyBF
TkFCTEUoSklUKQogCiAjaWYgIUVOQUJMRShMTElOVCkgJiYgIUVOQUJMRShKSVQpCkBAIC0yNjUw
LDYgKzI2OTcsMjYgQEAgdW5zaWduZWQgQ29kZUJsb2NrOjpieXRlY29kZU9mZnNldChFeGVjUwog
I2VuZGlmCiB9CiAKKyNpZiBFTkFCTEUoREZHX0pJVCkKK2Jvb2wgQ29kZUJsb2NrOjpjb2RlT3Jp
Z2luRm9yUmV0dXJuKFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcywgQ29kZU9yaWdpbiYg
Y29kZU9yaWdpbikKK3sKKyAgICBpZiAoIWhhc0NvZGVPcmlnaW5zKCkpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgIGlmICghZ2V0SklUQ29kZSgpLmdldEV4ZWN1dGFibGVNZW1vcnkoKS0+
Y29udGFpbnMocmV0dXJuQWRkcmVzcy52YWx1ZSgpKSkgeworICAgICAgICBjb2RlT3JpZ2luID0g
ZmluZENsb3N1cmVDYWxsRm9yUmV0dXJuUEMocmV0dXJuQWRkcmVzcyktPmNvZGVPcmlnaW4oKTsK
KyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIAorICAgIHVuc2lnbmVkIG9mZnNldCA9
IGdldEpJVENvZGUoKS5vZmZzZXRPZihyZXR1cm5BZGRyZXNzLnZhbHVlKCkpOworICAgIENvZGVP
cmlnaW5BdENhbGxSZXR1cm5PZmZzZXQqIGVudHJ5ID0gYmluYXJ5U2VhcmNoPENvZGVPcmlnaW5B
dENhbGxSZXR1cm5PZmZzZXQsIHVuc2lnbmVkLCBnZXRDYWxsUmV0dXJuT2Zmc2V0Rm9yQ29kZU9y
aWdpbj4oY29kZU9yaWdpbnMoKS5iZWdpbigpLCBjb2RlT3JpZ2lucygpLnNpemUoKSwgb2Zmc2V0
LCBXVEY6OktleU11c3ROb3RCZVByZXNlbnRJbkFycmF5KTsKKyAgICBpZiAoZW50cnktPmNhbGxS
ZXR1cm5PZmZzZXQgIT0gb2Zmc2V0KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgY29kZU9y
aWdpbiA9IGVudHJ5LT5jb2RlT3JpZ2luOworICAgIHJldHVybiB0cnVlOworfQorI2VuZGlmIC8v
IEVOQUJMRShERkdfSklUKQorCiB2b2lkIENvZGVCbG9jazo6Y2xlYXJFdmFsQ2FjaGUoKQogewog
ICAgIGlmICghIW1fYWx0ZXJuYXRpdmUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ29kZUJsb2NrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0NvZGVCbG9jay5oCShyZXZpc2lvbiAxMzUyMTYpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTI0NSw2ICsyNDUs
NyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgCiAgICAgICAgIENhbGxMaW5rSW5mbyYgZ2V0
Q2FsbExpbmtJbmZvKHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgpCiAgICAgICAgIHsKKyAgICAgICAg
ICAgIEFTU0VSVChKSVRDb2RlOjppc0Jhc2VsaW5lQ29kZShnZXRKSVRUeXBlKCkpKTsKICAgICAg
ICAgICAgIHJldHVybiAqKGJpbmFyeVNlYXJjaDxDYWxsTGlua0luZm8sIHVuc2lnbmVkLCBnZXRD
YWxsTGlua0luZm9CeXRlY29kZUluZGV4PihtX2NhbGxMaW5rSW5mb3MuYmVnaW4oKSwgbV9jYWxs
TGlua0luZm9zLnNpemUoKSwgYnl0ZWNvZGVJbmRleCkpOwogICAgICAgICB9CiAjZW5kaWYgLy8g
RU5BQkxFKEpJVCkKQEAgLTI3NCw2ICsyNzUsMTEgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IHsKICAgICAgICAgICAgIG1faW5jb21pbmdDYWxscy5wdXNoKGluY29taW5nKTsKICAgICAgICAg
fQorICAgICAgICAKKyAgICAgICAgYm9vbCBpc0luY29taW5nQ2FsbEFscmVhZHlMaW5rZWQoQ2Fs
bExpbmtJbmZvKiBpbmNvbWluZykKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIG1faW5j
b21pbmdDYWxscy5pc09uTGlzdChpbmNvbWluZyk7CisgICAgICAgIH0KICNlbmRpZiAvLyBFTkFC
TEUoSklUKQogCiAjaWYgRU5BQkxFKExMSU5UKQpAQCAtODEzLDE3ICs4MTksNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgICAgIHJldHVybiBtX3JhcmVEYXRhICYmICEhbV9yYXJlRGF0YS0+
bV9jb2RlT3JpZ2lucy5zaXplKCk7CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIGJvb2wg
Y29kZU9yaWdpbkZvclJldHVybihSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MsIENvZGVP
cmlnaW4mIGNvZGVPcmlnaW4pCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICghaGFzQ29kZU9y
aWdpbnMoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICB1bnNp
Z25lZCBvZmZzZXQgPSBnZXRKSVRDb2RlKCkub2Zmc2V0T2YocmV0dXJuQWRkcmVzcy52YWx1ZSgp
KTsKLSAgICAgICAgICAgIENvZGVPcmlnaW5BdENhbGxSZXR1cm5PZmZzZXQqIGVudHJ5ID0gYmlu
YXJ5U2VhcmNoPENvZGVPcmlnaW5BdENhbGxSZXR1cm5PZmZzZXQsIHVuc2lnbmVkLCBnZXRDYWxs
UmV0dXJuT2Zmc2V0Rm9yQ29kZU9yaWdpbj4oY29kZU9yaWdpbnMoKS5iZWdpbigpLCBjb2RlT3Jp
Z2lucygpLnNpemUoKSwgb2Zmc2V0LCBXVEY6OktleU11c3ROb3RCZVByZXNlbnRJbkFycmF5KTsK
LSAgICAgICAgICAgIGlmIChlbnRyeS0+Y2FsbFJldHVybk9mZnNldCAhPSBvZmZzZXQpCi0gICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgY29kZU9yaWdpbiA9IGVudHJ5
LT5jb2RlT3JpZ2luOwotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KKyAgICAg
ICAgYm9vbCBjb2RlT3JpZ2luRm9yUmV0dXJuKFJldHVybkFkZHJlc3NQdHIsIENvZGVPcmlnaW4m
KTsKICAgICAgICAgCiAgICAgICAgIENvZGVPcmlnaW4gY29kZU9yaWdpbih1bnNpZ25lZCBpbmRl
eCkKICAgICAgICAgewpAQCAtMTE4Nyw2ICsxMTgzLDEwIEBAIG5hbWVzcGFjZSBKU0MgewogCiAg
ICAgcHJpdmF0ZToKICAgICAgICAgZnJpZW5kIGNsYXNzIERGR0NvZGVCbG9ja3M7CisKKyNpZiBF
TkFCTEUoSklUKQorICAgICAgICBDbG9zdXJlQ2FsbFN0dWJSb3V0aW5lKiBmaW5kQ2xvc3VyZUNh
bGxGb3JSZXR1cm5QQyhSZXR1cm5BZGRyZXNzUHRyKTsKKyNlbmRpZgogICAgICAgICAKICNpZiBF
TkFCTEUoREZHX0pJVCkKICAgICAgICAgdm9pZCB0YWxseUZyZXF1ZW50RXhpdFNpdGVzKCk7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcAkocmV2
aXNpb24gMTM1MjE2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxl
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4OCwxMSArMTg4LDEyIEBAIHZvaWQgSklUQ29tcGls
ZXI6OmxpbmsoTGlua0J1ZmZlciYgbGlua0IKICAgICAgICAgQ2FsbExpbmtJbmZvJiBpbmZvID0g
bV9jb2RlQmxvY2stPmNhbGxMaW5rSW5mbyhpKTsKICAgICAgICAgaW5mby5jYWxsVHlwZSA9IG1f
anNDYWxsc1tpXS5tX2NhbGxUeXBlOwogICAgICAgICBpbmZvLmlzREZHID0gdHJ1ZTsKLSAgICAg
ICAgaW5mby5ieXRlY29kZUluZGV4ID0gbV9qc0NhbGxzW2ldLm1fY29kZU9yaWdpbi5ieXRlY29k
ZUluZGV4OworICAgICAgICBpbmZvLmNvZGVPcmlnaW4gPSBtX2pzQ2FsbHNbaV0ubV9jb2RlT3Jp
Z2luOwogICAgICAgICBsaW5rQnVmZmVyLmxpbmsobV9qc0NhbGxzW2ldLm1fc2xvd0NhbGwsIEZ1
bmN0aW9uUHRyKChtX2dsb2JhbERhdGEtPmdldENUSVN0dWIoaW5mby5jYWxsVHlwZSA9PSBDYWxs
TGlua0luZm86OkNvbnN0cnVjdCA/IGxpbmtDb25zdHJ1Y3RUaHVua0dlbmVyYXRvciA6IGxpbmtD
YWxsVGh1bmtHZW5lcmF0b3IpKS5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3MoKSkpOwogICAgICAg
ICBpbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbiA9IGxpbmtCdWZmZXIubG9jYXRpb25PZk5lYXJDYWxs
KG1fanNDYWxsc1tpXS5tX3Nsb3dDYWxsKTsKICAgICAgICAgaW5mby5ob3RQYXRoQmVnaW4gPSBs
aW5rQnVmZmVyLmxvY2F0aW9uT2YobV9qc0NhbGxzW2ldLm1fdGFyZ2V0VG9DaGVjayk7CiAgICAg
ICAgIGluZm8uaG90UGF0aE90aGVyID0gbGlua0J1ZmZlci5sb2NhdGlvbk9mTmVhckNhbGwobV9q
c0NhbGxzW2ldLm1fZmFzdENhbGwpOworICAgICAgICBpbmZvLmNhbGxlZUdQUiA9IHN0YXRpY19j
YXN0PHVuc2lnbmVkPihtX2pzQ2FsbHNbaV0ubV9jYWxsZWUpOwogICAgIH0KICAgICAKICAgICBN
YWNyb0Fzc2VtYmxlckNvZGVSZWYgb3NyRXhpdFRodW5rID0gZ2xvYmFsRGF0YSgpLT5nZXRDVElT
dHViKG9zckV4aXRHZW5lcmF0aW9uVGh1bmtHZW5lcmF0b3IpOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuaAkocmV2aXNpb24gMTM1MjE2KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zNTcsOSArMzU3LDkgQEAgcHVibGljOgogICAgICAgICBtX3Byb3BlcnR5QWNjZXNzZXMuYXBw
ZW5kKHJlY29yZCk7CiAgICAgfQogCi0gICAgdm9pZCBhZGRKU0NhbGwoQ2FsbCBmYXN0Q2FsbCwg
Q2FsbCBzbG93Q2FsbCwgRGF0YUxhYmVsUHRyIHRhcmdldFRvQ2hlY2ssIENhbGxMaW5rSW5mbzo6
Q2FsbFR5cGUgY2FsbFR5cGUsIENvZGVPcmlnaW4gY29kZU9yaWdpbikKKyAgICB2b2lkIGFkZEpT
Q2FsbChDYWxsIGZhc3RDYWxsLCBDYWxsIHNsb3dDYWxsLCBEYXRhTGFiZWxQdHIgdGFyZ2V0VG9D
aGVjaywgQ2FsbExpbmtJbmZvOjpDYWxsVHlwZSBjYWxsVHlwZSwgR1BSUmVnIGNhbGxlZSwgQ29k
ZU9yaWdpbiBjb2RlT3JpZ2luKQogICAgIHsKLSAgICAgICAgbV9qc0NhbGxzLmFwcGVuZChKU0Nh
bGxSZWNvcmQoZmFzdENhbGwsIHNsb3dDYWxsLCB0YXJnZXRUb0NoZWNrLCBjYWxsVHlwZSwgY29k
ZU9yaWdpbikpOworICAgICAgICBtX2pzQ2FsbHMuYXBwZW5kKEpTQ2FsbFJlY29yZChmYXN0Q2Fs
bCwgc2xvd0NhbGwsIHRhcmdldFRvQ2hlY2ssIGNhbGxUeXBlLCBjYWxsZWUsIGNvZGVPcmlnaW4p
KTsKICAgICB9CiAgICAgCiAgICAgdm9pZCBhZGRXZWFrUmVmZXJlbmNlKEpTQ2VsbCogdGFyZ2V0
KQpAQCAtNDQwLDExICs0NDAsMTIgQEAgcHJpdmF0ZToKICAgICBWZWN0b3I8Q2FsbEV4Y2VwdGlv
blJlY29yZD4gbV9leGNlcHRpb25DaGVja3M7CiAgICAgCiAgICAgc3RydWN0IEpTQ2FsbFJlY29y
ZCB7Ci0gICAgICAgIEpTQ2FsbFJlY29yZChDYWxsIGZhc3RDYWxsLCBDYWxsIHNsb3dDYWxsLCBE
YXRhTGFiZWxQdHIgdGFyZ2V0VG9DaGVjaywgQ2FsbExpbmtJbmZvOjpDYWxsVHlwZSBjYWxsVHlw
ZSwgQ29kZU9yaWdpbiBjb2RlT3JpZ2luKQorICAgICAgICBKU0NhbGxSZWNvcmQoQ2FsbCBmYXN0
Q2FsbCwgQ2FsbCBzbG93Q2FsbCwgRGF0YUxhYmVsUHRyIHRhcmdldFRvQ2hlY2ssIENhbGxMaW5r
SW5mbzo6Q2FsbFR5cGUgY2FsbFR5cGUsIEdQUlJlZyBjYWxsZWUsIENvZGVPcmlnaW4gY29kZU9y
aWdpbikKICAgICAgICAgICAgIDogbV9mYXN0Q2FsbChmYXN0Q2FsbCkKICAgICAgICAgICAgICwg
bV9zbG93Q2FsbChzbG93Q2FsbCkKICAgICAgICAgICAgICwgbV90YXJnZXRUb0NoZWNrKHRhcmdl
dFRvQ2hlY2spCiAgICAgICAgICAgICAsIG1fY2FsbFR5cGUoY2FsbFR5cGUpCisgICAgICAgICAg
ICAsIG1fY2FsbGVlKGNhbGxlZSkKICAgICAgICAgICAgICwgbV9jb2RlT3JpZ2luKGNvZGVPcmln
aW4pCiAgICAgICAgIHsKICAgICAgICAgfQpAQCAtNDUzLDYgKzQ1NCw3IEBAIHByaXZhdGU6CiAg
ICAgICAgIENhbGwgbV9zbG93Q2FsbDsKICAgICAgICAgRGF0YUxhYmVsUHRyIG1fdGFyZ2V0VG9D
aGVjazsKICAgICAgICAgQ2FsbExpbmtJbmZvOjpDYWxsVHlwZSBtX2NhbGxUeXBlOworICAgICAg
ICBHUFJSZWcgbV9jYWxsZWU7CiAgICAgICAgIENvZGVPcmlnaW4gbV9jb2RlT3JpZ2luOwogICAg
IH07CiAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9u
cy5jcHAJKHJldmlzaW9uIDEzNTIxNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
T3BlcmF0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwNjIsMTQgKzEwNjIsMTQgQEAgY2hh
ciogREZHX09QRVJBVElPTiBvcGVyYXRpb25MaW5rQ29uc3RydQogICAgIHJldHVybiBsaW5rRm9y
KGV4ZWNDYWxsZWUsIENvZGVGb3JDb25zdHJ1Y3QpOwogfQogCi1pbmxpbmUgY2hhciogdmlydHVh
bEZvcihFeGVjU3RhdGUqIGV4ZWNDYWxsZWUsIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkK
K2lubGluZSBjaGFyKiB2aXJ0dWFsRm9yV2l0aEZ1bmN0aW9uKEV4ZWNTdGF0ZSogZXhlY0NhbGxl
ZSwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kLCBKU0NlbGwqJiBjYWxsZWVBc0Z1bmN0aW9u
Q2VsbCkKIHsKICAgICBFeGVjU3RhdGUqIGV4ZWMgPSBleGVjQ2FsbGVlLT5jYWxsZXJGcmFtZSgp
OwogICAgIEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSA9ICZleGVjLT5nbG9iYWxEYXRhKCk7CiAg
ICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcihnbG9iYWxEYXRhLCBleGVjKTsKIAogICAg
IEpTVmFsdWUgY2FsbGVlQXNWYWx1ZSA9IGV4ZWNDYWxsZWUtPmNhbGxlZUFzVmFsdWUoKTsKLSAg
ICBKU0NlbGwqIGNhbGxlZUFzRnVuY3Rpb25DZWxsID0gZ2V0SlNGdW5jdGlvbihjYWxsZWVBc1Zh
bHVlKTsKKyAgICBjYWxsZWVBc0Z1bmN0aW9uQ2VsbCA9IGdldEpTRnVuY3Rpb24oY2FsbGVlQXNW
YWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYWxsZWVBc0Z1bmN0aW9uQ2VsbCkpCiAgICAgICAg
IHJldHVybiByZWludGVycHJldF9jYXN0PGNoYXIqPihoYW5kbGVIb3N0Q2FsbChleGVjQ2FsbGVl
LCBjYWxsZWVBc1ZhbHVlLCBraW5kKSk7CiAgICAgCkBAIC0xMDg3LDYgKzEwODcsNTYgQEAgaW5s
aW5lIGNoYXIqIHZpcnR1YWxGb3IoRXhlY1N0YXRlKiBleGVjQwogICAgIHJldHVybiByZWludGVy
cHJldF9jYXN0PGNoYXIqPihleGVjdXRhYmxlLT5nZW5lcmF0ZWRKSVRDb2RlV2l0aEFyaXR5Q2hl
Y2tGb3Ioa2luZCkuZXhlY3V0YWJsZUFkZHJlc3MoKSk7CiB9CiAKK2lubGluZSBjaGFyKiB2aXJ0
dWFsRm9yKEV4ZWNTdGF0ZSogZXhlY0NhbGxlZSwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5k
KQoreworICAgIEpTQ2VsbCogY2FsbGVlQXNGdW5jdGlvbkNlbGxJZ25vcmVkOworICAgIHJldHVy
biB2aXJ0dWFsRm9yV2l0aEZ1bmN0aW9uKGV4ZWNDYWxsZWUsIGtpbmQsIGNhbGxlZUFzRnVuY3Rp
b25DZWxsSWdub3JlZCk7Cit9CisKK3N0YXRpYyBib29sIGF0dGVtcHRUb09wdGltaXplQ2xvc3Vy
ZUNhbGwoRXhlY1N0YXRlKiBleGVjQ2FsbGVlLCBKU0NlbGwqIGNhbGxlZUFzRnVuY3Rpb25DZWxs
LCBDYWxsTGlua0luZm8mIGNhbGxMaW5rSW5mbykKK3sKKyAgICBpZiAoIWNhbGxlZUFzRnVuY3Rp
b25DZWxsKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgSlNGdW5jdGlvbiogY2Fs
bGVlID0ganNDYXN0PEpTRnVuY3Rpb24qPihjYWxsZWVBc0Z1bmN0aW9uQ2VsbCk7CisgICAgSlNG
dW5jdGlvbiogb2xkQ2FsbGVlID0gY2FsbExpbmtJbmZvLmNhbGxlZS5nZXQoKTsKKyAgICAKKyAg
ICBpZiAoIW9sZENhbGxlZQorICAgICAgICB8fCBvbGRDYWxsZWUtPnN0cnVjdHVyZSgpICE9IGNh
bGxlZS0+c3RydWN0dXJlKCkKKyAgICAgICAgfHwgb2xkQ2FsbGVlLT5leGVjdXRhYmxlKCkgIT0g
Y2FsbGVlLT5leGVjdXRhYmxlKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAgICBB
U1NFUlQoY2FsbGVlLT5leGVjdXRhYmxlKCktPmhhc0pJVENvZGVGb3JDYWxsKCkpOworICAgIE1h
Y3JvQXNzZW1ibGVyQ29kZVB0ciBjb2RlUHRyID0gY2FsbGVlLT5leGVjdXRhYmxlKCktPmdlbmVy
YXRlZEpJVENvZGVGb3JDYWxsKCkuYWRkcmVzc0ZvckNhbGwoKTsKKyAgICAKKyAgICBDb2RlQmxv
Y2sqIGNvZGVCbG9jazsKKyAgICBpZiAoY2FsbGVlLT5leGVjdXRhYmxlKCktPmlzSG9zdEZ1bmN0
aW9uKCkpCisgICAgICAgIGNvZGVCbG9jayA9IDA7CisgICAgZWxzZSB7CisgICAgICAgIGNvZGVC
bG9jayA9ICZqc0Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4oY2FsbGVlLT5leGVjdXRhYmxlKCkp
LT5nZW5lcmF0ZWRCeXRlY29kZUZvckNhbGwoKTsKKyAgICAgICAgaWYgKGV4ZWNDYWxsZWUtPmFy
Z3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKCkgPCBzdGF0aWNfY2FzdDxzaXplX3Q+KGNvZGVCbG9j
ay0+bnVtUGFyYW1ldGVycygpKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cisg
ICAgCisgICAgZGZnTGlua0Nsb3N1cmVDYWxsKAorICAgICAgICBleGVjQ2FsbGVlLCBjYWxsTGlu
a0luZm8sIGNvZGVCbG9jaywKKyAgICAgICAgY2FsbGVlLT5zdHJ1Y3R1cmUoKSwgY2FsbGVlLT5l
eGVjdXRhYmxlKCksIGNvZGVQdHIpOworICAgIAorICAgIHJldHVybiB0cnVlOworfQorCitjaGFy
KiBERkdfT1BFUkFUSU9OIG9wZXJhdGlvbkxpbmtDbG9zdXJlQ2FsbChFeGVjU3RhdGUqIGV4ZWND
YWxsZWUpCit7CisgICAgSlNDZWxsKiBjYWxsZWVBc0Z1bmN0aW9uQ2VsbDsKKyAgICBjaGFyKiBy
ZXN1bHQgPSB2aXJ0dWFsRm9yV2l0aEZ1bmN0aW9uKGV4ZWNDYWxsZWUsIENvZGVGb3JDYWxsLCBj
YWxsZWVBc0Z1bmN0aW9uQ2VsbCk7CisgICAgQ2FsbExpbmtJbmZvJiBjYWxsTGlua0luZm8gPSBl
eGVjQ2FsbGVlLT5jYWxsZXJGcmFtZSgpLT5jb2RlQmxvY2soKS0+Z2V0Q2FsbExpbmtJbmZvKGV4
ZWNDYWxsZWUtPnJldHVyblBDKCkpOworCisgICAgaWYgKCFhdHRlbXB0VG9PcHRpbWl6ZUNsb3N1
cmVDYWxsKGV4ZWNDYWxsZWUsIGNhbGxlZUFzRnVuY3Rpb25DZWxsLCBjYWxsTGlua0luZm8pKQor
ICAgICAgICBkZmdMaW5rU2xvd0ZvcihleGVjQ2FsbGVlLCBjYWxsTGlua0luZm8sIENvZGVGb3JD
YWxsKTsKKyAgICAKKyAgICByZXR1cm4gcmVzdWx0OworfQorCiBjaGFyKiBERkdfT1BFUkFUSU9O
IG9wZXJhdGlvblZpcnR1YWxDYWxsKEV4ZWNTdGF0ZSogZXhlY0NhbGxlZSkKIHsgICAgCiAgICAg
cmV0dXJuIHZpcnR1YWxGb3IoZXhlY0NhbGxlZSwgQ29kZUZvckNhbGwpOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgJKHJldmlzaW9uIDEzNTIxNikKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xODEsNiArMTgxLDcgQEAgc2l6ZV90IERGR19PUEVSQVRJT04gb3BlcmF0aW9uQ29tcGFy
ZVN0cgogc2l6ZV90IERGR19PUEVSQVRJT04gb3BlcmF0aW9uQ29tcGFyZVN0cmljdEVxKEV4ZWNT
dGF0ZSosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRP
cDIpIFdURl9JTlRFUk5BTDsKIGNoYXIqIERGR19PUEVSQVRJT04gb3BlcmF0aW9uVmlydHVhbENh
bGwoRXhlY1N0YXRlKikgV1RGX0lOVEVSTkFMOwogY2hhciogREZHX09QRVJBVElPTiBvcGVyYXRp
b25MaW5rQ2FsbChFeGVjU3RhdGUqKSBXVEZfSU5URVJOQUw7CitjaGFyKiBERkdfT1BFUkFUSU9O
IG9wZXJhdGlvbkxpbmtDbG9zdXJlQ2FsbChFeGVjU3RhdGUqKSBXVEZfSU5URVJOQUw7CiBjaGFy
KiBERkdfT1BFUkFUSU9OIG9wZXJhdGlvblZpcnR1YWxDb25zdHJ1Y3QoRXhlY1N0YXRlKikgV1RG
X0lOVEVSTkFMOwogY2hhciogREZHX09QRVJBVElPTiBvcGVyYXRpb25MaW5rQ29uc3RydWN0KEV4
ZWNTdGF0ZSopIFdURl9JTlRFUk5BTDsKIEpTQ2VsbCogREZHX09QRVJBVElPTiBvcGVyYXRpb25D
cmVhdGVBY3RpdmF0aW9uKEV4ZWNTdGF0ZSopIFdURl9JTlRFUk5BTDsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHUmVwYXRjaC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdSZXBhdGNoLmNwcAkocmV2aXNpb24gMTM1MjE2KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdSZXBhdGNoLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTE4LDcgKzExOCw3IEBAIHN0YXRpYyB2b2lkIHJlcGxhY2VXaXRoSnVtcChSZXBhdGNoQnVmZmUK
IHsKICAgICBpZiAoTWFjcm9Bc3NlbWJsZXI6OmNhbkp1bXBSZXBsYWNlUGF0Y2hhYmxlQnJhbmNo
UHRyV2l0aFBhdGNoKCkpIHsKICAgICAgICAgcmVwYXRjaEJ1ZmZlci5yZXBsYWNlV2l0aEp1bXAo
Ci0gICAgICAgICAgICBSZXBhdGNoQnVmZmVyOjpzdGFydE9mUGF0Y2hhYmxlQnJhbmNoUHRyV2l0
aFBhdGNoKAorICAgICAgICAgICAgUmVwYXRjaEJ1ZmZlcjo6c3RhcnRPZlBhdGNoYWJsZUJyYW5j
aFB0cldpdGhQYXRjaE9uQWRkcmVzcygKICAgICAgICAgICAgICAgICBzdHViSW5mby5jYWxsUmV0
dXJuTG9jYXRpb24uZGF0YUxhYmVsUHRyQXRPZmZzZXQoCiAgICAgICAgICAgICAgICAgICAgIC0o
aW50cHRyX3Qpc3R1YkluZm8ucGF0Y2guZGZnLmRlbHRhQ2hlY2tJbW1Ub0NhbGwpKSwKICAgICAg
ICAgICAgIENvZGVMb2NhdGlvbkxhYmVsKHRhcmdldCkpOwpAQCAtMTExMyw4ICsxMTEzLDIwIEBA
IHZvaWQgZGZnQnVpbGRQdXRCeUlkTGlzdChFeGVjU3RhdGUqIGV4ZWMKICAgICAgICAgZGZnUmVw
YXRjaENhbGwoZXhlYy0+Y29kZUJsb2NrKCksIHN0dWJJbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbiwg
YXBwcm9wcmlhdGVHZW5lcmljUHV0QnlJZEZ1bmN0aW9uKHNsb3QsIHB1dEtpbmQpKTsKIH0KIAor
c3RhdGljIHZvaWQgbGlua1Nsb3dGb3IoUmVwYXRjaEJ1ZmZlciYgcmVwYXRjaEJ1ZmZlciwgSlNH
bG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBDYWxsTGlua0luZm8mIGNhbGxMaW5rSW5mbywgQ29kZVNw
ZWNpYWxpemF0aW9uS2luZCBraW5kKQoreworICAgIGlmIChraW5kID09IENvZGVGb3JDYWxsKSB7
CisgICAgICAgIHJlcGF0Y2hCdWZmZXIucmVsaW5rKGNhbGxMaW5rSW5mby5jYWxsUmV0dXJuTG9j
YXRpb24sIGdsb2JhbERhdGEtPmdldENUSVN0dWIodmlydHVhbENhbGxUaHVua0dlbmVyYXRvciku
Y29kZSgpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBBU1NFUlQoa2luZCA9PSBDb2Rl
Rm9yQ29uc3RydWN0KTsKKyAgICByZXBhdGNoQnVmZmVyLnJlbGluayhjYWxsTGlua0luZm8uY2Fs
bFJldHVybkxvY2F0aW9uLCBnbG9iYWxEYXRhLT5nZXRDVElTdHViKHZpcnR1YWxDb25zdHJ1Y3RU
aHVua0dlbmVyYXRvcikuY29kZSgpKTsKK30KKwogdm9pZCBkZmdMaW5rRm9yKEV4ZWNTdGF0ZSog
ZXhlYywgQ2FsbExpbmtJbmZvJiBjYWxsTGlua0luZm8sIENvZGVCbG9jayogY2FsbGVlQ29kZUJs
b2NrLCBKU0Z1bmN0aW9uKiBjYWxsZWUsIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBjb2RlUHRyLCBD
b2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpCiB7CisgICAgQVNTRVJUKCFjYWxsTGlua0luZm8u
c3R1Yik7CisgICAgCiAgICAgQ29kZUJsb2NrKiBjYWxsZXJDb2RlQmxvY2sgPSBleGVjLT5jYWxs
ZXJGcmFtZSgpLT5jb2RlQmxvY2soKTsKICAgICBKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEgPSBj
YWxsZXJDb2RlQmxvY2stPmdsb2JhbERhdGEoKTsKICAgICAKQEAgLTExMjksMTEgKzExNDEsMTEw
IEBAIHZvaWQgZGZnTGlua0ZvcihFeGVjU3RhdGUqIGV4ZWMsIENhbGxMaW4KICAgICAgICAgY2Fs
bGVlQ29kZUJsb2NrLT5saW5rSW5jb21pbmdDYWxsKCZjYWxsTGlua0luZm8pOwogICAgIAogICAg
IGlmIChraW5kID09IENvZGVGb3JDYWxsKSB7Ci0gICAgICAgIHJlcGF0Y2hCdWZmZXIucmVsaW5r
KGNhbGxMaW5rSW5mby5jYWxsUmV0dXJuTG9jYXRpb24sIGdsb2JhbERhdGEtPmdldENUSVN0dWIo
dmlydHVhbENhbGxUaHVua0dlbmVyYXRvcikuY29kZSgpKTsKKyAgICAgICAgcmVwYXRjaEJ1ZmZl
ci5yZWxpbmsoY2FsbExpbmtJbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbiwgZ2xvYmFsRGF0YS0+Z2V0
Q1RJU3R1YihsaW5rQ2xvc3VyZUNhbGxUaHVua0dlbmVyYXRvcikuY29kZSgpKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KKyAgICAKICAgICBBU1NFUlQoa2luZCA9PSBDb2RlRm9yQ29uc3RydWN0
KTsKLSAgICByZXBhdGNoQnVmZmVyLnJlbGluayhjYWxsTGlua0luZm8uY2FsbFJldHVybkxvY2F0
aW9uLCBnbG9iYWxEYXRhLT5nZXRDVElTdHViKHZpcnR1YWxDb25zdHJ1Y3RUaHVua0dlbmVyYXRv
cikuY29kZSgpKTsKKyAgICBsaW5rU2xvd0ZvcihyZXBhdGNoQnVmZmVyLCBnbG9iYWxEYXRhLCBj
YWxsTGlua0luZm8sIENvZGVGb3JDb25zdHJ1Y3QpOworfQorCit2b2lkIGRmZ0xpbmtTbG93Rm9y
KEV4ZWNTdGF0ZSogZXhlYywgQ2FsbExpbmtJbmZvJiBjYWxsTGlua0luZm8sIENvZGVTcGVjaWFs
aXphdGlvbktpbmQga2luZCkKK3sKKyAgICBDb2RlQmxvY2sqIGNhbGxlckNvZGVCbG9jayA9IGV4
ZWMtPmNhbGxlckZyYW1lKCktPmNvZGVCbG9jaygpOworICAgIEpTR2xvYmFsRGF0YSogZ2xvYmFs
RGF0YSA9IGNhbGxlckNvZGVCbG9jay0+Z2xvYmFsRGF0YSgpOworICAgIAorICAgIFJlcGF0Y2hC
dWZmZXIgcmVwYXRjaEJ1ZmZlcihjYWxsZXJDb2RlQmxvY2spOworICAgIAorICAgIGxpbmtTbG93
Rm9yKHJlcGF0Y2hCdWZmZXIsIGdsb2JhbERhdGEsIGNhbGxMaW5rSW5mbywga2luZCk7Cit9CisK
K3ZvaWQgZGZnTGlua0Nsb3N1cmVDYWxsKEV4ZWNTdGF0ZSogZXhlYywgQ2FsbExpbmtJbmZvJiBj
YWxsTGlua0luZm8sIENvZGVCbG9jayogY2FsbGVlQ29kZUJsb2NrLCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSwgRXhlY3V0YWJsZUJhc2UqIGV4ZWN1dGFibGUsIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBj
b2RlUHRyKQoreworICAgIEFTU0VSVCghY2FsbExpbmtJbmZvLnN0dWIpOworICAgIAorICAgIENv
ZGVCbG9jayogY2FsbGVyQ29kZUJsb2NrID0gZXhlYy0+Y2FsbGVyRnJhbWUoKS0+Y29kZUJsb2Nr
KCk7CisgICAgSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhID0gY2FsbGVyQ29kZUJsb2NrLT5nbG9i
YWxEYXRhKCk7CisgICAgCisgICAgR1BSUmVnIGNhbGxlZUdQUiA9IHN0YXRpY19jYXN0PEdQUlJl
Zz4oY2FsbExpbmtJbmZvLmNhbGxlZUdQUik7CisgICAgCisgICAgQ0NhbGxIZWxwZXJzIHN0dWJK
aXQoZ2xvYmFsRGF0YSwgY2FsbGVyQ29kZUJsb2NrKTsKKyAgICAKKyAgICBDQ2FsbEhlbHBlcnM6
Okp1bXBMaXN0IHNsb3dQYXRoOworICAgIAorI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgc2xvd1Bh
dGguYXBwZW5kKAorICAgICAgICBzdHViSml0LmJyYW5jaFRlc3Q2NCgKKyAgICAgICAgICAgIEND
YWxsSGVscGVyczo6Tm9uWmVybywgY2FsbGVlR1BSLCBHUFJJbmZvOjp0YWdNYXNrUmVnaXN0ZXIp
KTsKKyNlbHNlCisgICAgLy8gV2Ugd291bGQgaGF2ZSBhbHJlYWR5IGNoZWNrZWQgdGhhdCB0aGUg
Y2FsbGVlIGlzIGEgY2VsbC4KKyNlbmRpZgorICAgIAorICAgIHNsb3dQYXRoLmFwcGVuZCgKKyAg
ICAgICAgc3R1YkppdC5icmFuY2hQdHIoCisgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6Ok5vdEVx
dWFsLAorICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKGNhbGxlZUdQUiwgSlNDZWxs
OjpzdHJ1Y3R1cmVPZmZzZXQoKSksCisgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJ
bW1QdHIoc3RydWN0dXJlKSkpOworICAgIAorICAgIHNsb3dQYXRoLmFwcGVuZCgKKyAgICAgICAg
c3R1YkppdC5icmFuY2hQdHIoCisgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6Ok5vdEVxdWFsLAor
ICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKGNhbGxlZUdQUiwgSlNGdW5jdGlvbjo6
b2Zmc2V0T2ZFeGVjdXRhYmxlKCkpLAorICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVk
SW1tUHRyKGV4ZWN1dGFibGUpKSk7CisgICAgCisgICAgc3R1YkppdC5sb2FkUHRyKAorICAgICAg
ICBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoY2FsbGVlR1BSLCBKU0Z1bmN0aW9uOjpvZmZzZXRPZlNj
b3BlQ2hhaW4oKSksCisgICAgICAgIEdQUkluZm86OnJldHVyblZhbHVlR1BSKTsKKworI2lmIFVT
RShKU1ZBTFVFNjQpCisgICAgc3R1YkppdC5zdG9yZTY0KAorICAgICAgICBHUFJJbmZvOjpyZXR1
cm5WYWx1ZUdQUiwKKyAgICAgICAgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKEdQUkluZm86OmNhbGxG
cmFtZVJlZ2lzdGVyLCBzdGF0aWNfY2FzdDxwdHJkaWZmX3Q+KHNpemVvZihSZWdpc3RlcikgKiBK
U1N0YWNrOjpTY29wZUNoYWluKSkpOworI2Vsc2UKKyAgICBzdHViSml0LnN0b3JlUHRyKAorICAg
ICAgICBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUiwKKyAgICAgICAgQ0NhbGxIZWxwZXJzOjpBZGRy
ZXNzKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBzdGF0aWNfY2FzdDxwdHJkaWZmX3Q+KHNp
emVvZihSZWdpc3RlcikgKiBKU1N0YWNrOjpTY29wZUNoYWluKSArIE9CSkVDVF9PRkZTRVRPRihF
bmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMucGF5bG9hZCkpKTsKKyAgICBzdHViSml0LnN0
b3JlMzIoCisgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxU
YWcpLAorICAgICAgICBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoR1BSSW5mbzo6Y2FsbEZyYW1lUmVn
aXN0ZXIsIHN0YXRpY19jYXN0PHB0cmRpZmZfdD4oc2l6ZW9mKFJlZ2lzdGVyKSAqIEpTU3RhY2s6
OlNjb3BlQ2hhaW4pICsgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFz
Qml0cy50YWcpKSk7CisjZW5kaWYKKyAgICAKKyAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsID0g
c3R1YkppdC5uZWFyQ2FsbCgpOworICAgIEpJVENvbXBpbGVyOjpKdW1wIGRvbmUgPSBzdHViSml0
Lmp1bXAoKTsKKyAgICAKKyAgICBzbG93UGF0aC5saW5rKCZzdHViSml0KTsKKyAgICBzdHViSml0
Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGNhbGxMaW5rSW5mby5jYWxsUmV0dXJu
TG9jYXRpb24uZXhlY3V0YWJsZUFkZHJlc3MoKSksIEdQUkluZm86Om5vbkFyZ0dQUjIpOworICAg
IHN0dWJKaXQucmVzdG9yZVJldHVybkFkZHJlc3NCZWZvcmVSZXR1cm4oR1BSSW5mbzo6bm9uQXJn
R1BSMik7CisgICAgc3R1YkppdC5tb3ZlKGNhbGxlZUdQUiwgR1BSSW5mbzo6bm9uQXJnR1BSMCk7
CisjaWYgVVNFKEpTVkFMVUUzMl82NCkKKyAgICBzdHViSml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpU
cnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZyksIEdQUkluZm86Om5vbkFyZ0dQUjEpOworI2Vu
ZGlmCisgICAgSklUQ29tcGlsZXI6Okp1bXAgc2xvdyA9IHN0dWJKaXQuanVtcCgpOworICAgIAor
ICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoKmdsb2JhbERhdGEsICZzdHViSml0LCBjYWxsZXJD
b2RlQmxvY2spOworICAgIAorICAgIHBhdGNoQnVmZmVyLmxpbmsoY2FsbCwgRnVuY3Rpb25QdHIo
Y29kZVB0ci5leGVjdXRhYmxlQWRkcmVzcygpKSk7CisgICAgcGF0Y2hCdWZmZXIubGluayhkb25l
LCBjYWxsTGlua0luZm8uY2FsbFJldHVybkxvY2F0aW9uLmxhYmVsQXRPZmZzZXQoMCkpOworICAg
IHBhdGNoQnVmZmVyLmxpbmsoc2xvdywgQ29kZUxvY2F0aW9uTGFiZWwoZ2xvYmFsRGF0YS0+Z2V0
Q1RJU3R1Yih2aXJ0dWFsQ2FsbFRodW5rR2VuZXJhdG9yKS5jb2RlKCkpKTsKKyAgICAKKyAgICBS
ZWZQdHI8Q2xvc3VyZUNhbGxTdHViUm91dGluZT4gc3R1YlJvdXRpbmUgPSBhZG9wdFJlZihuZXcg
Q2xvc3VyZUNhbGxTdHViUm91dGluZSgKKyAgICAgICAgRklOQUxJWkVfREZHX0NPREUoCisgICAg
ICAgICAgICBwYXRjaEJ1ZmZlciwKKyAgICAgICAgICAgICgiREZHIGNsb3N1cmUgY2FsbCBzdHVi
IGZvciBDb2RlQmxvY2sgJXAsIHJldHVybiBwb2ludCAlcCwgdGFyZ2V0ICVwIChDb2RlQmxvY2sg
JXApIiwKKyAgICAgICAgICAgICAgICBjYWxsZXJDb2RlQmxvY2ssIGNhbGxMaW5rSW5mby5jYWxs
UmV0dXJuTG9jYXRpb24ubGFiZWxBdE9mZnNldCgwKS5leGVjdXRhYmxlQWRkcmVzcygpLAorICAg
ICAgICAgICAgICAgIGNvZGVQdHIuZXhlY3V0YWJsZUFkZHJlc3MoKSwgY2FsbGVlQ29kZUJsb2Nr
KSksCisgICAgICAgICpnbG9iYWxEYXRhLCBjYWxsZXJDb2RlQmxvY2stPm93bmVyRXhlY3V0YWJs
ZSgpLCBzdHJ1Y3R1cmUsIGV4ZWN1dGFibGUsIGNhbGxMaW5rSW5mby5jb2RlT3JpZ2luKSk7Cisg
ICAgCisgICAgUmVwYXRjaEJ1ZmZlciByZXBhdGNoQnVmZmVyKGNhbGxlckNvZGVCbG9jayk7Cisg
ICAgCisgICAgcmVwYXRjaEJ1ZmZlci5yZXBsYWNlV2l0aEp1bXAoCisgICAgICAgIFJlcGF0Y2hC
dWZmZXI6OnN0YXJ0T2ZCcmFuY2hQdHJXaXRoUGF0Y2hPblJlZ2lzdGVyKGNhbGxMaW5rSW5mby5o
b3RQYXRoQmVnaW4pLAorICAgICAgICBDb2RlTG9jYXRpb25MYWJlbChzdHViUm91dGluZS0+Y29k
ZSgpLmNvZGUoKSkpOworICAgIGxpbmtTbG93Rm9yKHJlcGF0Y2hCdWZmZXIsIGdsb2JhbERhdGEs
IGNhbGxMaW5rSW5mbywgQ29kZUZvckNhbGwpOworICAgIAorICAgIGNhbGxMaW5rSW5mby5zdHVi
ID0gc3R1YlJvdXRpbmUucmVsZWFzZSgpOworICAgIAorICAgIEFTU0VSVCghY2FsbGVlQ29kZUJs
b2NrIHx8IGNhbGxlZUNvZGVCbG9jay0+aXNJbmNvbWluZ0NhbGxBbHJlYWR5TGlua2VkKCZjYWxs
TGlua0luZm8pKTsKIH0KIAogdm9pZCBkZmdSZXNldEdldEJ5SUQoUmVwYXRjaEJ1ZmZlciYgcmVw
YXRjaEJ1ZmZlciwgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvKQpAQCAtMTE0Miw3ICsxMjUz
LDcgQEAgdm9pZCBkZmdSZXNldEdldEJ5SUQoUmVwYXRjaEJ1ZmZlciYgcmVwYQogICAgIENvZGVM
b2NhdGlvbkRhdGFMYWJlbFB0ciBzdHJ1Y3R1cmVMYWJlbCA9IHN0dWJJbmZvLmNhbGxSZXR1cm5M
b2NhdGlvbi5kYXRhTGFiZWxQdHJBdE9mZnNldCgtKGludHB0cl90KXN0dWJJbmZvLnBhdGNoLmRm
Zy5kZWx0YUNoZWNrSW1tVG9DYWxsKTsKICAgICBpZiAoTWFjcm9Bc3NlbWJsZXI6OmNhbkp1bXBS
ZXBsYWNlUGF0Y2hhYmxlQnJhbmNoUHRyV2l0aFBhdGNoKCkpIHsKICAgICAgICAgcmVwYXRjaEJ1
ZmZlci5yZXZlcnRKdW1wUmVwbGFjZW1lbnRUb1BhdGNoYWJsZUJyYW5jaFB0cldpdGhQYXRjaCgK
LSAgICAgICAgICAgIFJlcGF0Y2hCdWZmZXI6OnN0YXJ0T2ZQYXRjaGFibGVCcmFuY2hQdHJXaXRo
UGF0Y2goc3RydWN0dXJlTGFiZWwpLAorICAgICAgICAgICAgUmVwYXRjaEJ1ZmZlcjo6c3RhcnRP
ZlBhdGNoYWJsZUJyYW5jaFB0cldpdGhQYXRjaE9uQWRkcmVzcyhzdHJ1Y3R1cmVMYWJlbCksCiAg
ICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcygKICAgICAgICAgICAgICAgICBzdGF0
aWNfY2FzdDxNYWNyb0Fzc2VtYmxlcjo6UmVnaXN0ZXJJRD4oc3R1YkluZm8ucGF0Y2guZGZnLmJh
c2VHUFIpLAogICAgICAgICAgICAgICAgIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLApAQCAt
MTE3Niw3ICsxMjg3LDcgQEAgdm9pZCBkZmdSZXNldFB1dEJ5SUQoUmVwYXRjaEJ1ZmZlciYgcmVw
YQogICAgIENvZGVMb2NhdGlvbkRhdGFMYWJlbFB0ciBzdHJ1Y3R1cmVMYWJlbCA9IHN0dWJJbmZv
LmNhbGxSZXR1cm5Mb2NhdGlvbi5kYXRhTGFiZWxQdHJBdE9mZnNldCgtKGludHB0cl90KXN0dWJJ
bmZvLnBhdGNoLmRmZy5kZWx0YUNoZWNrSW1tVG9DYWxsKTsKICAgICBpZiAoTWFjcm9Bc3NlbWJs
ZXI6OmNhbkp1bXBSZXBsYWNlUGF0Y2hhYmxlQnJhbmNoUHRyV2l0aFBhdGNoKCkpIHsKICAgICAg
ICAgcmVwYXRjaEJ1ZmZlci5yZXZlcnRKdW1wUmVwbGFjZW1lbnRUb1BhdGNoYWJsZUJyYW5jaFB0
cldpdGhQYXRjaCgKLSAgICAgICAgICAgIFJlcGF0Y2hCdWZmZXI6OnN0YXJ0T2ZQYXRjaGFibGVC
cmFuY2hQdHJXaXRoUGF0Y2goc3RydWN0dXJlTGFiZWwpLAorICAgICAgICAgICAgUmVwYXRjaEJ1
ZmZlcjo6c3RhcnRPZlBhdGNoYWJsZUJyYW5jaFB0cldpdGhQYXRjaE9uQWRkcmVzcyhzdHJ1Y3R1
cmVMYWJlbCksCiAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcygKICAgICAgICAg
ICAgICAgICBzdGF0aWNfY2FzdDxNYWNyb0Fzc2VtYmxlcjo6UmVnaXN0ZXJJRD4oc3R1YkluZm8u
cGF0Y2guZGZnLmJhc2VHUFIpLAogICAgICAgICAgICAgICAgIEpTQ2VsbDo6c3RydWN0dXJlT2Zm
c2V0KCkpLApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdSZXBhdGNoLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdSZXBhdGNoLmgJKHJldmlz
aW9uIDEzNTIxNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUmVwYXRjaC5oCSh3
b3JraW5nIGNvcHkpCkBAIC00MSw2ICs0MSw4IEBAIHZvaWQgZGZnQnVpbGRHZXRCeUlEUHJvdG9M
aXN0KEV4ZWNTdGF0ZSoKIHZvaWQgZGZnUmVwYXRjaFB1dEJ5SUQoRXhlY1N0YXRlKiwgSlNWYWx1
ZSwgY29uc3QgSWRlbnRpZmllciYsIGNvbnN0IFB1dFByb3BlcnR5U2xvdCYsIFN0cnVjdHVyZVN0
dWJJbmZvJiwgUHV0S2luZCk7CiB2b2lkIGRmZ0J1aWxkUHV0QnlJZExpc3QoRXhlY1N0YXRlKiwg
SlNWYWx1ZSwgY29uc3QgSWRlbnRpZmllciYsIGNvbnN0IFB1dFByb3BlcnR5U2xvdCYsIFN0cnVj
dHVyZVN0dWJJbmZvJiwgUHV0S2luZCk7CiB2b2lkIGRmZ0xpbmtGb3IoRXhlY1N0YXRlKiwgQ2Fs
bExpbmtJbmZvJiwgQ29kZUJsb2NrKiwgSlNGdW5jdGlvbiogY2FsbGVlLCBNYWNyb0Fzc2VtYmxl
ckNvZGVQdHIsIENvZGVTcGVjaWFsaXphdGlvbktpbmQpOwordm9pZCBkZmdMaW5rU2xvd0ZvcihF
eGVjU3RhdGUqLCBDYWxsTGlua0luZm8mLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kKTsKK3ZvaWQg
ZGZnTGlua0Nsb3N1cmVDYWxsKEV4ZWNTdGF0ZSosIENhbGxMaW5rSW5mbyYsIENvZGVCbG9jayos
IFN0cnVjdHVyZSosIEV4ZWN1dGFibGVCYXNlKiwgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKTsKIHZv
aWQgZGZnUmVzZXRHZXRCeUlEKFJlcGF0Y2hCdWZmZXImLCBTdHJ1Y3R1cmVTdHViSW5mbyYpOwog
dm9pZCBkZmdSZXNldFB1dEJ5SUQoUmVwYXRjaEJ1ZmZlciYsIFN0cnVjdHVyZVN0dWJJbmZvJik7
CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82
NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVDMyXzY0LmNwcAkocmV2aXNpb24gMTM1MjE2KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTk4
LDcgKzk5OCw2IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6Om5vblNwZWN1bGF0aXZlTm9uUGUKIAog
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdENhbGwoTm9kZSYgbm9kZSkKIHsKLQogICAgIGlmIChu
b2RlLm9wKCkgIT0gQ2FsbCkKICAgICAgICAgQVNTRVJUKG5vZGUub3AoKSA9PSBDb25zdHJ1Y3Qp
OwogCkBAIC0xMDQ5LDggKzEwNDgsOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0Q2FsbChO
b2RlJiBub2RlCiAgICAgCiAgICAgbV9qaXQuYWRkUHRyKFRydXN0ZWRJbW0zMihtX2ppdC5jb2Rl
QmxvY2soKS0+bV9udW1DYWxsZWVSZWdpc3RlcnMgKiBzaXplb2YoUmVnaXN0ZXIpKSwgR1BSSW5m
bzo6Y2FsbEZyYW1lUmVnaXN0ZXIpOwogICAgIAotICAgIHNsb3dQYXRoLmFwcGVuZChtX2ppdC5i
cmFuY2hQdHJXaXRoUGF0Y2goTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBjYWxsZWVQYXlsb2Fk
R1BSLCB0YXJnZXRUb0NoZWNrKSk7CiAgICAgc2xvd1BhdGguYXBwZW5kKG1faml0LmJyYW5jaDMy
KE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgY2FsbGVlVGFnR1BSLCBUcnVzdGVkSW1tMzIoSlNW
YWx1ZTo6Q2VsbFRhZykpKTsKKyAgICBzbG93UGF0aC5hcHBlbmQobV9qaXQuYnJhbmNoUHRyV2l0
aFBhdGNoKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgY2FsbGVlUGF5bG9hZEdQUiwgdGFyZ2V0
VG9DaGVjaykpOwogICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoY2Fs
bGVlUGF5bG9hZEdQUiwgT0JKRUNUX09GRlNFVE9GKEpTRnVuY3Rpb24sIG1fc2NvcGUpKSwgcmVz
dWx0UGF5bG9hZEdQUik7CiAgICAgbV9qaXQuc3RvcmVQdHIocmVzdWx0UGF5bG9hZEdQUiwgTWFj
cm9Bc3NlbWJsZXI6OkFkZHJlc3MoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIHN0YXRpY19j
YXN0PHB0cmRpZmZfdD4oc2l6ZW9mKFJlZ2lzdGVyKSkgKiBKU1N0YWNrOjpTY29wZUNoYWluICsg
T0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy5wYXlsb2FkKSkp
OwogICAgIG1faml0LnN0b3JlMzIoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMihKU1ZhbHVl
OjpDZWxsVGFnKSwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoR1BSSW5mbzo6Y2FsbEZyYW1lUmVn
aXN0ZXIsIHN0YXRpY19jYXN0PHB0cmRpZmZfdD4oc2l6ZW9mKFJlZ2lzdGVyKSkgKiBKU1N0YWNr
OjpTY29wZUNoYWluICsgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFz
Qml0cy50YWcpKSk7CkBAIC0xMDg0LDcgKzEwODMsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpl
bWl0Q2FsbChOb2RlJiBub2RlCiAKICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFRhZ0dQUiwgcmVz
dWx0UGF5bG9hZEdQUiwgbV9jb21waWxlSW5kZXgsIERhdGFGb3JtYXRKUywgVXNlQ2hpbGRyZW5D
YWxsZWRFeHBsaWNpdGx5KTsKIAotICAgIG1faml0LmFkZEpTQ2FsbChmYXN0Q2FsbCwgc2xvd0Nh
bGwsIHRhcmdldFRvQ2hlY2ssIGNhbGxUeXBlLCBhdChtX2NvbXBpbGVJbmRleCkuY29kZU9yaWdp
bik7CisgICAgbV9qaXQuYWRkSlNDYWxsKGZhc3RDYWxsLCBzbG93Q2FsbCwgdGFyZ2V0VG9DaGVj
aywgY2FsbFR5cGUsIGNhbGxlZVBheWxvYWRHUFIsIGF0KG1fY29tcGlsZUluZGV4KS5jb2RlT3Jp
Z2luKTsKIH0KIAogdGVtcGxhdGU8Ym9vbCBzdHJpY3Q+CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHJldmlzaW9uIDEzNTIx
NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEwNTgsNyArMTA1OCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmVtaXRDYWxsKE5vZGUmIG5vZGUKICAgICAKICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdEdQUiwg
bV9jb21waWxlSW5kZXgsIERhdGFGb3JtYXRKUywgVXNlQ2hpbGRyZW5DYWxsZWRFeHBsaWNpdGx5
KTsKICAgICAKLSAgICBtX2ppdC5hZGRKU0NhbGwoZmFzdENhbGwsIHNsb3dDYWxsLCB0YXJnZXRU
b0NoZWNrLCBjYWxsVHlwZSwgYXQobV9jb21waWxlSW5kZXgpLmNvZGVPcmlnaW4pOworICAgIG1f
aml0LmFkZEpTQ2FsbChmYXN0Q2FsbCwgc2xvd0NhbGwsIHRhcmdldFRvQ2hlY2ssIGNhbGxUeXBl
LCBjYWxsZWVHUFIsIGF0KG1fY29tcGlsZUluZGV4KS5jb2RlT3JpZ2luKTsKIH0KIAogdGVtcGxh
dGU8Ym9vbCBzdHJpY3Q+CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1RodW5r
cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUaHVua3Mu
Y3BwCShyZXZpc2lvbiAxMzUyMTYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Ro
dW5rcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxMyw2ICsyMTMsMTggQEAgTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmIGxpbmtDb25zdHJ1Y3RUaHVuawogICAgIHJldHVybiBsaW5rRm9yVGh1bmtHZW5l
cmF0b3IoZ2xvYmFsRGF0YSwgQ29kZUZvckNvbnN0cnVjdCk7CiB9CiAKKy8vIEZvciBjbG9zdXJl
IG9wdGltaXphdGlvbnMsIHdlIG9ubHkgaW5jbHVkZSBjYWxscywgc2luY2UgaWYgeW91J3JlIHVz
aW5nIGNsb3N1cmVzIGZvcgorLy8gb2JqZWN0IGNvbnN0cnVjdGlvbiB0aGVuIHlvdSdyZSBnb2lu
ZyB0byBsb3NlIGJpZyB0aW1lIGFueXdheS4KK01hY3JvQXNzZW1ibGVyQ29kZVJlZiBsaW5rQ2xv
c3VyZUNhbGxUaHVua0dlbmVyYXRvcihKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEpCit7CisgICAg
Q0NhbGxIZWxwZXJzIGppdChnbG9iYWxEYXRhKTsKKyAgICAKKyAgICBzbG93UGF0aEZvcihqaXQs
IGdsb2JhbERhdGEsIG9wZXJhdGlvbkxpbmtDbG9zdXJlQ2FsbCk7CisgICAgCisgICAgTGlua0J1
ZmZlciBwYXRjaEJ1ZmZlcigqZ2xvYmFsRGF0YSwgJmppdCwgR0xPQkFMX1RIVU5LX0lEKTsKKyAg
ICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgKCJERkcgbGluayBjbG9zdXJlIGNh
bGwgc2xvdyBwYXRoIHRodW5rIikpOworfQorCiBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
IHZpcnR1YWxGb3JUaHVua0dlbmVyYXRvcigKICAgICBKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEs
IENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkKIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHVGh1bmtzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdUaHVua3MuaAkocmV2aXNpb24gMTM1MjE2KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdUaHVua3MuaAkod29ya2luZyBjb3B5KQpAQCAtNDUsNiArNDUsOCBAQCBNYWNy
b0Fzc2VtYmxlckNvZGVSZWYgdGhyb3dFeGNlcHRpb25Gcm9tCiBNYWNyb0Fzc2VtYmxlckNvZGVS
ZWYgbGlua0NhbGxUaHVua0dlbmVyYXRvcihKU0dsb2JhbERhdGEqKTsKIE1hY3JvQXNzZW1ibGVy
Q29kZVJlZiBsaW5rQ29uc3RydWN0VGh1bmtHZW5lcmF0b3IoSlNHbG9iYWxEYXRhKik7CiAKK01h
Y3JvQXNzZW1ibGVyQ29kZVJlZiBsaW5rQ2xvc3VyZUNhbGxUaHVua0dlbmVyYXRvcihKU0dsb2Jh
bERhdGEqKTsKKwogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIHZpcnR1YWxDYWxsVGh1bmtHZW5lcmF0
b3IoSlNHbG9iYWxEYXRhKik7CiBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgdmlydHVhbENvbnN0cnVj
dFRodW5rR2VuZXJhdG9yKEpTR2xvYmFsRGF0YSopOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9IZWFwLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvSGVhcC5oCShyZXZpc2lvbiAxMzUyMTYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9IZWFwLmgJKHdvcmtpbmcgY29weSkKQEAgLTE3NCw2ICsxNzQsOCBAQCBuYW1lc3BhY2UgSlND
IHsKIAogICAgICAgICBib29sIGlzUGFnZWRPdXQoZG91YmxlIGRlYWRsaW5lKTsKICAgICAgICAg
dm9pZCBkaWRTdGFydFZNU2h1dGRvd24oKTsKKyAgICAgICAgCisgICAgICAgIGNvbnN0IEpJVFN0
dWJSb3V0aW5lU2V0JiBqaXRTdHViUm91dGluZXMoKSB7IHJldHVybiBtX2ppdFN0dWJSb3V0aW5l
czsgfQogCiAgICAgcHJpdmF0ZToKICAgICAgICAgZnJpZW5kIGNsYXNzIENvZGVCbG9jazsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0pJVFN0dWJSb3V0aW5lU2V0LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSklUU3R1YlJvdXRpbmVTZXQuaAko
cmV2aXNpb24gMTM1MjE2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSklUU3R1YlJv
dXRpbmVTZXQuaAkod29ya2luZyBjb3B5KQpAQCAtNjUsNiArNjUsOSBAQCBwdWJsaWM6CiAgICAg
CiAgICAgdm9pZCB0cmFjZU1hcmtlZFN0dWJSb3V0aW5lcyhTbG90VmlzaXRvciYpOwogICAgIAor
ICAgIHVuc2lnbmVkIHNpemUoKSBjb25zdCB7IHJldHVybiBtX2xpc3RPZlJvdXRpbmVzLnNpemUo
KTsgfQorICAgIEdDQXdhcmVKSVRTdHViUm91dGluZSogYXQodW5zaWduZWQgaSkgY29uc3QgeyBy
ZXR1cm4gbV9saXN0T2ZSb3V0aW5lc1tpXTsgfQorICAgIAogcHJpdmF0ZToKICAgICB2b2lkIG1h
cmtTbG93KHVpbnRwdHJfdCBhZGRyZXNzKTsKICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvQ2xvc3VyZUNhbGxTdHViUm91dGluZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9DbG9zdXJlQ2FsbFN0dWJSb3V0aW5lLmNwcAkocmV2aXNpb24g
MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ2xvc3VyZUNhbGxTdHViUm91dGluZS5j
cHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkNs
b3N1cmVDYWxsU3R1YlJvdXRpbmUuaCIKKworI2lmIEVOQUJMRShKSVQpCisKKyNpbmNsdWRlICJF
eGVjdXRhYmxlLmgiCisjaW5jbHVkZSAiSGVhcC5oIgorI2luY2x1ZGUgIkpTR2xvYmFsRGF0YS5o
IgorI2luY2x1ZGUgIlNsb3RWaXNpdG9yLmgiCisjaW5jbHVkZSAiU3RydWN0dXJlLmgiCisKK25h
bWVzcGFjZSBKU0MgeworCitDbG9zdXJlQ2FsbFN0dWJSb3V0aW5lOjpDbG9zdXJlQ2FsbFN0dWJS
b3V0aW5lKAorICAgIGNvbnN0IE1hY3JvQXNzZW1ibGVyQ29kZVJlZiYgY29kZSwgSlNHbG9iYWxE
YXRhJiBnbG9iYWxEYXRhLCBjb25zdCBKU0NlbGwqIG93bmVyLAorICAgIFN0cnVjdHVyZSogc3Ry
dWN0dXJlLCBFeGVjdXRhYmxlQmFzZSogZXhlY3V0YWJsZSwgY29uc3QgQ29kZU9yaWdpbiYgY29k
ZU9yaWdpbikKKyAgICA6IEdDQXdhcmVKSVRTdHViUm91dGluZShjb2RlLCBnbG9iYWxEYXRhLCB0
cnVlKQorICAgICwgbV9zdHJ1Y3R1cmUoZ2xvYmFsRGF0YSwgb3duZXIsIHN0cnVjdHVyZSkKKyAg
ICAsIG1fZXhlY3V0YWJsZShnbG9iYWxEYXRhLCBvd25lciwgZXhlY3V0YWJsZSkKKyAgICAsIG1f
Y29kZU9yaWdpbihjb2RlT3JpZ2luKQoreworfQorCitDbG9zdXJlQ2FsbFN0dWJSb3V0aW5lOjp+
Q2xvc3VyZUNhbGxTdHViUm91dGluZSgpCit7Cit9CisKK3ZvaWQgQ2xvc3VyZUNhbGxTdHViUm91
dGluZTo6bWFya1JlcXVpcmVkT2JqZWN0c0ludGVybmFsKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQor
eworICAgIHZpc2l0b3IuYXBwZW5kKCZtX3N0cnVjdHVyZSk7CisgICAgdmlzaXRvci5hcHBlbmQo
Jm1fZXhlY3V0YWJsZSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gRU5B
QkxFKEpJVCkKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DbG9zdXJlQ2FsbFN0
dWJSb3V0aW5lLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DbG9z
dXJlQ2FsbFN0dWJSb3V0aW5lLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0Nsb3N1cmVDYWxsU3R1YlJvdXRpbmUuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2
NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZu
ZGVmIENsb3N1cmVDYWxsU3R1YlJvdXRpbmVfaAorI2RlZmluZSBDbG9zdXJlQ2FsbFN0dWJSb3V0
aW5lX2gKKworI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgorCisjaWYgRU5BQkxFKEpJVCkKKwor
I2luY2x1ZGUgIkNvZGVPcmlnaW4uaCIKKyNpbmNsdWRlICJHQ0F3YXJlSklUU3R1YlJvdXRpbmUu
aCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIENsb3N1cmVDYWxsU3R1YlJvdXRpbmUgOiBw
dWJsaWMgR0NBd2FyZUpJVFN0dWJSb3V0aW5lIHsKK3B1YmxpYzoKKyAgICBDbG9zdXJlQ2FsbFN0
dWJSb3V0aW5lKAorICAgICAgICBjb25zdCBNYWNyb0Fzc2VtYmxlckNvZGVSZWYmLCBKU0dsb2Jh
bERhdGEmLCBjb25zdCBKU0NlbGwqIG93bmVyLAorICAgICAgICBTdHJ1Y3R1cmUqLCBFeGVjdXRh
YmxlQmFzZSosIGNvbnN0IENvZGVPcmlnaW4mKTsKKyAgICAKKyAgICB2aXJ0dWFsIH5DbG9zdXJl
Q2FsbFN0dWJSb3V0aW5lKCk7CisgICAgCisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUoKSBjb25z
dCB7IHJldHVybiBtX3N0cnVjdHVyZS5nZXQoKTsgfQorICAgIEV4ZWN1dGFibGVCYXNlKiBleGVj
dXRhYmxlKCkgY29uc3QgeyByZXR1cm4gbV9leGVjdXRhYmxlLmdldCgpOyB9CisgICAgY29uc3Qg
Q29kZU9yaWdpbiYgY29kZU9yaWdpbigpIGNvbnN0IHsgcmV0dXJuIG1fY29kZU9yaWdpbjsgfQor
Citwcm90ZWN0ZWQ6CisgICAgdmlydHVhbCB2b2lkIG1hcmtSZXF1aXJlZE9iamVjdHNJbnRlcm5h
bChTbG90VmlzaXRvciYpOworCitwcml2YXRlOgorICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+
IG1fc3RydWN0dXJlOworICAgIFdyaXRlQmFycmllcjxFeGVjdXRhYmxlQmFzZT4gbV9leGVjdXRh
YmxlOworICAgIC8vIFRoaXMgYWxsb3dzIHVzIHRvIGZpZ3VyZSBvdXQgd2hvIGEgY2FsbCBpcyBs
aW5rZWQgdG8gYnkgc2VhcmNoaW5nIHRocm91Z2gKKyAgICAvLyBzdHViIHJvdXRpbmVzLgorICAg
IENvZGVPcmlnaW4gbV9jb2RlT3JpZ2luOworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNl
bmRpZiAvLyBFTkFCTEUoSklUKQorCisjZW5kaWYgLy8gQ2xvc3VyZUNhbGxTdHViUm91dGluZV9o
CisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvR0NBd2FyZUpJVFN0dWJSb3V0aW5l
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0dDQXdhcmVKSVRT
dHViUm91dGluZS5jcHAJKHJldmlzaW9uIDEzNTIxNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvR0NBd2FyZUpJVFN0dWJSb3V0aW5lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsMTcg
KzMwLDE3IEBACiAKICNpbmNsdWRlICJIZWFwLmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxEYXRhLmgi
Ci0KICNpbmNsdWRlICJTbG90VmlzaXRvci5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZS5oIgogCiBu
YW1lc3BhY2UgSlNDIHsKIAogR0NBd2FyZUpJVFN0dWJSb3V0aW5lOjpHQ0F3YXJlSklUU3R1YlJv
dXRpbmUoCi0gICAgY29uc3QgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmJiBjb2RlLCBKU0dsb2JhbERh
dGEmIGdsb2JhbERhdGEpCisgICAgY29uc3QgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmJiBjb2RlLCBK
U0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGJvb2wgaXNDbG9zdXJlQ2FsbCkKICAgICA6IEpJVFN0
dWJSb3V0aW5lKGNvZGUpCiAgICAgLCBtX21heUJlRXhlY3V0aW5nKGZhbHNlKQogICAgICwgbV9p
c0pldHRpc29uZWQoZmFsc2UpCisgICAgLCBtX2lzQ2xvc3VyZUNhbGwoaXNDbG9zdXJlQ2FsbCkK
IHsKICAgICBnbG9iYWxEYXRhLmhlYXAubV9qaXRTdHViUm91dGluZXMuYWRkKHRoaXMpOwogfQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9HQ0F3YXJlSklUU3R1YlJvdXRpbmUuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0dDQXdhcmVKSVRTdHViUm91
dGluZS5oCShyZXZpc2lvbiAxMzUyMTYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0dD
QXdhcmVKSVRTdHViUm91dGluZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01NCw3ICs1NCw3IEBAIGNs
YXNzIEpJVFN0dWJSb3V0aW5lU2V0OwogLy8gbGlzdCB3aGljaCBkb2VzIG5vdCBnZXQgcmVjbGFp
bWVkIGFsbCBhdCBvbmNlKS4KIGNsYXNzIEdDQXdhcmVKSVRTdHViUm91dGluZSA6IHB1YmxpYyBK
SVRTdHViUm91dGluZSB7CiBwdWJsaWM6Ci0gICAgR0NBd2FyZUpJVFN0dWJSb3V0aW5lKGNvbnN0
IE1hY3JvQXNzZW1ibGVyQ29kZVJlZiYsIEpTR2xvYmFsRGF0YSYpOworICAgIEdDQXdhcmVKSVRT
dHViUm91dGluZShjb25zdCBNYWNyb0Fzc2VtYmxlckNvZGVSZWYmLCBKU0dsb2JhbERhdGEmLCBi
b29sIGlzQ2xvc3VyZUNhbGwgPSBmYWxzZSk7CiAgICAgdmlydHVhbCB+R0NBd2FyZUpJVFN0dWJS
b3V0aW5lKCk7CiAgICAgCiAgICAgdm9pZCBtYXJrUmVxdWlyZWRPYmplY3RzKFNsb3RWaXNpdG9y
JiB2aXNpdG9yKQpAQCAtNjQsNiArNjQsOCBAQCBwdWJsaWM6CiAgICAgCiAgICAgdm9pZCBkZWxl
dGVGcm9tR0MoKTsKICAgICAKKyAgICBib29sIGlzQ2xvc3VyZUNhbGwoKSBjb25zdCB7IHJldHVy
biBtX2lzQ2xvc3VyZUNhbGw7IH0KKyAgICAKIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIHZvaWQg
b2JzZXJ2ZVplcm9SZWZDb3VudCgpOwogICAgIApAQCAtNzQsNiArNzYsNyBAQCBwcml2YXRlOgog
CiAgICAgYm9vbCBtX21heUJlRXhlY3V0aW5nOwogICAgIGJvb2wgbV9pc0pldHRpc29uZWQ7Cisg
ICAgYm9vbCBtX2lzQ2xvc3VyZUNhbGw7CiB9OwogCiAvLyBVc2UgdGhpcyBpZiB5b3Ugd2FudCB0
byBtYXJrIG9uZSBhZGRpdGlvbmFsIG9iamVjdCBkdXJpbmcgR0MgaWYgeW91ciBzdHViCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCShyZXZpc2lvbiAxMzUyMTYpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc4MSwxMCArNzgx
LDExIEBAIEpJVENvZGUgSklUOjpwcml2YXRlQ29tcGlsZShDb2RlUHRyKiBmdW4KICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9jb2RlQmxvY2stPm51bWJlck9mQ2FsbExpbmtJbmZvcygp
OyArK2kpIHsKICAgICAgICAgQ2FsbExpbmtJbmZvJiBpbmZvID0gbV9jb2RlQmxvY2stPmNhbGxM
aW5rSW5mbyhpKTsKICAgICAgICAgaW5mby5jYWxsVHlwZSA9IG1fY2FsbFN0cnVjdHVyZVN0dWJD
b21waWxhdGlvbkluZm9baV0uY2FsbFR5cGU7Ci0gICAgICAgIGluZm8uYnl0ZWNvZGVJbmRleCA9
IG1fY2FsbFN0cnVjdHVyZVN0dWJDb21waWxhdGlvbkluZm9baV0uYnl0ZWNvZGVJbmRleDsKKyAg
ICAgICAgaW5mby5jb2RlT3JpZ2luID0gQ29kZU9yaWdpbihtX2NhbGxTdHJ1Y3R1cmVTdHViQ29t
cGlsYXRpb25JbmZvW2ldLmJ5dGVjb2RlSW5kZXgpOwogICAgICAgICBpbmZvLmNhbGxSZXR1cm5M
b2NhdGlvbiA9IHBhdGNoQnVmZmVyLmxvY2F0aW9uT2ZOZWFyQ2FsbChtX2NhbGxTdHJ1Y3R1cmVT
dHViQ29tcGlsYXRpb25JbmZvW2ldLmNhbGxSZXR1cm5Mb2NhdGlvbik7CiAgICAgICAgIGluZm8u
aG90UGF0aEJlZ2luID0gcGF0Y2hCdWZmZXIubG9jYXRpb25PZihtX2NhbGxTdHJ1Y3R1cmVTdHVi
Q29tcGlsYXRpb25JbmZvW2ldLmhvdFBhdGhCZWdpbik7CiAgICAgICAgIGluZm8uaG90UGF0aE90
aGVyID0gcGF0Y2hCdWZmZXIubG9jYXRpb25PZk5lYXJDYWxsKG1fY2FsbFN0cnVjdHVyZVN0dWJD
b21waWxhdGlvbkluZm9baV0uaG90UGF0aE90aGVyKTsKKyAgICAgICAgaW5mby5jYWxsZWVHUFIg
PSByZWdUMDsKICAgICB9CiAKICNpZiBFTkFCTEUoREZHX0pJVCkgfHwgRU5BQkxFKExMSU5UKQpJ
bmRleDogU291cmNlL1dURi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi9DaGFu
Z2VMb2cJKHJldmlzaW9uIDEzNTI0NCkKKysrIFNvdXJjZS9XVEYvQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTItMTEtMTkgIEZpbGlwIFBpemxvICA8ZnBpemxv
QGFwcGxlLmNvbT4KKworICAgICAgICBERkcgc2hvdWxkIGJlIGFibGUgdG8gY2FjaGUgY2xvc3Vy
ZSBjYWxscworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTAyNjYyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
QWRkZWQgc3VwcG9ydCB0byB0aGUgbWV0YSBhbGxvY2F0b3IgZm9yIGVhc2lseSBxdWVyeWluZyB3
aGV0aGVyIGFuIGFkZHJlc3MgZmFsbHMgd2l0aGluCisgICAgICAgIGEgY2VydGFpbiBhbGxvY2F0
ZWQgY2h1bmsuIEFsc28gYWRkZWQgYSB1c2VmdWwgZGVidWcgcm91dGluZSB0byBTZW50aW5lbExp
bmtlZExpc3QsCisgICAgICAgIHdoaWNoIGNhbiBiZSB1c2VkIHRvIGNoZWNrIGlmIGEgbm9kZSBp
cyBvbiBhIHBhcnRpY3VsYXIgbGlzdC4KKworICAgICAgICAqIHd0Zi9NZXRhQWxsb2NhdG9ySGFu
ZGxlLmg6CisgICAgICAgIChNZXRhQWxsb2NhdG9ySGFuZGxlKToKKyAgICAgICAgKFdURjo6TWV0
YUFsbG9jYXRvckhhbmRsZTo6Y29udGFpbnNJbnRlZ2VyQWRkcmVzcyk6CisgICAgICAgIChXVEY6
Ok1ldGFBbGxvY2F0b3JIYW5kbGU6OmNvbnRhaW5zKToKKyAgICAgICAgKiB3dGYvU2VudGluZWxM
aW5rZWRMaXN0Lmg6CisgICAgICAgIChTZW50aW5lbExpbmtlZExpc3QpOgorICAgICAgICAoV1RG
Ojo6OmlzT25MaXN0KToKKyAgICAgICAgKFdURik6CisKIDIwMTItMTEtMTkgIExhc3psbyBHb21i
b3MgIDxsLmdvbWJvc0BzYW1zdW5nLmNvbT4KIAogICAgICAgICBSZW1vdmUgUmVhZFdyaXRlTG9j
awpJbmRleDogU291cmNlL1dURi93dGYvTWV0YUFsbG9jYXRvckhhbmRsZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XVEYvd3RmL01ldGFBbGxvY2F0b3JIYW5kbGUuaAkocmV2aXNpb24gMTM1MjE2
KQorKysgU291cmNlL1dURi93dGYvTWV0YUFsbG9jYXRvckhhbmRsZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC02OSw2ICs2OSwxNiBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICByZXR1cm4gbV9zaXpl
SW5CeXRlczsKICAgICB9CisgICAgCisgICAgYm9vbCBjb250YWluc0ludGVnZXJBZGRyZXNzKHVp
bnRwdHJfdCBhZGRyZXNzKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkZHJlc3MgLSBz
dGFydEFzSW50ZWdlcigpIDwgc2l6ZUluQnl0ZXMoKTsKKyAgICB9CisgICAgCisgICAgYm9vbCBj
b250YWlucyh2b2lkKiBhZGRyZXNzKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIGNvbnRh
aW5zSW50ZWdlckFkZHJlc3MocmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KGFkZHJlc3MpKTsK
KyAgICB9CiAgICAgICAgIAogICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIHNocmluayhzaXpl
X3QgbmV3U2l6ZUluQnl0ZXMpOwogICAgIApJbmRleDogU291cmNlL1dURi93dGYvU2VudGluZWxM
aW5rZWRMaXN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvU2VudGluZWxMaW5rZWRM
aXN0LmgJKHJldmlzaW9uIDEzNTIxNikKKysrIFNvdXJjZS9XVEYvd3RmL1NlbnRpbmVsTGlua2Vk
TGlzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC04Myw2ICs4Myw4IEBAIHB1YmxpYzoKIAogICAgIHZv
aWQgcHVzaChUKik7CiAgICAgc3RhdGljIHZvaWQgcmVtb3ZlKFQqKTsKKyAgICAKKyAgICBib29s
IGlzT25MaXN0KFQqKTsKIAogICAgIGl0ZXJhdG9yIGJlZ2luKCk7CiAgICAgaXRlcmF0b3IgZW5k
KCk7CkBAIC0xNTIsNiArMTU0LDE5IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBS
YXdOb2RlPiAKICAgICBub2RlLT5zZXROZXh0KDApOwogfQogCit0ZW1wbGF0ZSA8dHlwZW5hbWUg
VCwgdHlwZW5hbWUgUmF3Tm9kZT4gaW5saW5lIGJvb2wgU2VudGluZWxMaW5rZWRMaXN0PFQsIFJh
d05vZGU+Ojppc09uTGlzdChUKiBub2RlKQoreworICAgIGlmICghbm9kZS0+aXNPbkxpc3QoKSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAorICAgIGZvciAoVCogaXRlciA9IGJlZ2luKCk7
IGl0ZXIgIT0gZW5kKCk7IGl0ZXIgPSBpdGVyLT5uZXh0KCkpIHsKKyAgICAgICAgaWYgKGl0ZXIg
PT0gbm9kZSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICAKKyAgICByZXR1
cm4gZmFsc2U7Cit9CisKIH0KIAogdXNpbmcgV1RGOjpCYXNpY1Jhd1NlbnRpbmVsTm9kZTsK
</data>
<flag name="review"
          id="190513"
          type_id="1"
          status="+"
          setter="barraclough"
    />
          </attachment>
      

    </bug>

</bugzilla>