<?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>166681</bug_id>
          
          <creation_ts>2017-01-04 04:17:57 -0800</creation_ts>
          <short_desc>WebInspector: refactor RemoteInspector to move cocoa specific code to their own files</short_desc>
          <delta_ts>2017-02-22 10:02:11 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Local Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>166680</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Carlos Garcia Campos">cgarcia</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>achristensen</cc>
    
    <cc>bburg</cc>
    
    <cc>clopez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>joepeck</cc>
    
    <cc>ossy</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1263736</commentid>
    <comment_count>0</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2017-01-04 04:17:57 -0800</bug_when>
    <thetext>Most of the RemoteInspector implementation is actually cross-platform, but RemoteInspector.mm and RemoteConnectionToTarget.mm need to be factored out.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1263741</commentid>
    <comment_count>1</comment_count>
      <attachid>298005</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2017-01-04 04:55:11 -0800</bug_when>
    <thetext>Created attachment 298005
WIP patch

I need someone with a mac who can add make the XCode changes after the refactoring, please. I&apos;ll deal with builds breaks using EWS.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1263747</commentid>
    <comment_count>2</comment_count>
      <attachid>298008</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2017-01-04 05:25:32 -0800</bug_when>
    <thetext>Created attachment 298008
WIP patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1265356</commentid>
    <comment_count>3</comment_count>
      <attachid>298462</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2017-01-10 06:55:19 -0800</bug_when>
    <thetext>Created attachment 298462
WIP: trying xcode changes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1265357</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-01-10 06:57:49 -0800</bug_when>
    <thetext>Attachment 298462 did not pass style-queue:


ERROR: Source/JavaScriptCore/inspector/remote/cocoa/RemoteInspectorXPCConnection.mm:111:  No space between ^ and block definition.  [whitespace/brackets] [4]
ERROR: Source/JavaScriptCore/inspector/remote/cocoa/RemoteInspectorXPCConnection.mm:153:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/inspector/remote/cocoa/RemoteConnectionToTargetCocoa.mm:82:  No space between ^ and block definition.  [whitespace/brackets] [4]
ERROR: Source/JavaScriptCore/inspector/remote/cocoa/RemoteConnectionToTargetCocoa.mm:163:  No space between ^ and block definition.  [whitespace/brackets] [4]
ERROR: Source/JavaScriptCore/inspector/remote/cocoa/RemoteConnectionToTargetCocoa.mm:164:  No space between ^ and block definition.  [whitespace/brackets] [4]
ERROR: Source/JavaScriptCore/inspector/remote/cocoa/RemoteConnectionToTargetCocoa.mm:164:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/inspector/remote/cocoa/RemoteConnectionToTargetCocoa.mm:198:  No space between ^ and block definition.  [whitespace/brackets] [4]
ERROR: Source/JavaScriptCore/inspector/remote/cocoa/RemoteConnectionToTargetCocoa.mm:199:  No space between ^ and block definition.  [whitespace/brackets] [4]
ERROR: Source/JavaScriptCore/inspector/remote/cocoa/RemoteConnectionToTargetCocoa.mm:199:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/inspector/remote/cocoa/RemoteConnectionToTargetCocoa.mm:216:  No space between ^ and block definition.  [whitespace/brackets] [4]
ERROR: Source/JavaScriptCore/inspector/remote/cocoa/RemoteConnectionToTargetCocoa.mm:217:  No space between ^ and block definition.  [whitespace/brackets] [4]
ERROR: Source/JavaScriptCore/inspector/remote/cocoa/RemoteConnectionToTargetCocoa.mm:217:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/inspector/remote/cocoa/RemoteInspectorCocoa.mm:50:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
ERROR: Source/JavaScriptCore/inspector/remote/cocoa/RemoteInspectorCocoa.mm:69:  No space between ^ and block definition.  [whitespace/brackets] [4]
ERROR: Source/JavaScriptCore/inspector/remote/cocoa/RemoteInspectorCocoa.mm:71:  No space between ^ and block definition.  [whitespace/brackets] [4]
ERROR: Source/JavaScriptCore/inspector/remote/cocoa/RemoteInspectorCocoa.mm:147:  No space between ^ and block definition.  [whitespace/brackets] [4]
ERROR: Source/JavaScriptCore/inspector/remote/cocoa/RemoteInspectorCocoa.mm:209:  No space between ^ and block definition.  [whitespace/brackets] [4]
ERROR: Source/JavaScriptCore/inspector/remote/cocoa/RemoteInspectorCocoa.mm:452:  No space between ^ and block definition.  [whitespace/brackets] [4]
ERROR: Source/JavaScriptCore/inspector/remote/cocoa/RemoteInspectorCocoa.mm:562:  No space between ^ and block definition.  [whitespace/brackets] [4]
ERROR: Source/JavaScriptCore/inspector/remote/cocoa/RemoteInspectorCocoa.mm:588:  No space between ^ and block definition.  [whitespace/brackets] [4]
Total errors found: 20 in 13 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>1265373</commentid>
    <comment_count>5</comment_count>
      <attachid>298469</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2017-01-10 08:47:14 -0800</bug_when>
    <thetext>Created attachment 298469
WIP: try to fix the mac builds and some style issues</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1265374</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-01-10 08:48:41 -0800</bug_when>
    <thetext>Attachment 298469 did not pass style-queue:


ERROR: Source/JavaScriptCore/inspector/remote/cocoa/RemoteInspectorXPCConnection.mm:153:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/inspector/remote/cocoa/RemoteConnectionToTargetCocoa.mm:164:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/inspector/remote/cocoa/RemoteConnectionToTargetCocoa.mm:199:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/inspector/remote/cocoa/RemoteConnectionToTargetCocoa.mm:217:  This { should be at the end of the previous line  [whitespace/braces] [4]
Total errors found: 4 in 13 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>1265377</commentid>
    <comment_count>7</comment_count>
      <attachid>298470</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2017-01-10 08:58:54 -0800</bug_when>
    <thetext>Created attachment 298470
WIP: Try to fix mac builds</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1265378</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-01-10 09:01:44 -0800</bug_when>
    <thetext>Attachment 298470 did not pass style-queue:


ERROR: Source/JavaScriptCore/inspector/remote/cocoa/RemoteInspectorXPCConnection.mm:153:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/inspector/remote/cocoa/RemoteConnectionToTargetCocoa.mm:164:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/inspector/remote/cocoa/RemoteConnectionToTargetCocoa.mm:199:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/inspector/remote/cocoa/RemoteConnectionToTargetCocoa.mm:217:  This { should be at the end of the previous line  [whitespace/braces] [4]
Total errors found: 4 in 13 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>1265389</commentid>
    <comment_count>9</comment_count>
      <attachid>298472</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2017-01-10 09:27:39 -0800</bug_when>
    <thetext>Created attachment 298472
WIP: Try to fix mac builds</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1265390</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-01-10 09:29:01 -0800</bug_when>
    <thetext>Attachment 298472 did not pass style-queue:


ERROR: Source/JavaScriptCore/inspector/remote/cocoa/RemoteInspectorXPCConnection.mm:153:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/inspector/remote/cocoa/RemoteConnectionToTargetCocoa.mm:164:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/inspector/remote/cocoa/RemoteConnectionToTargetCocoa.mm:199:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/inspector/remote/cocoa/RemoteConnectionToTargetCocoa.mm:217:  This { should be at the end of the previous line  [whitespace/braces] [4]
Total errors found: 4 in 13 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>1265392</commentid>
    <comment_count>11</comment_count>
      <attachid>298474</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2017-01-10 09:33:41 -0800</bug_when>
    <thetext>Created attachment 298474
WIP: Trying to fix mac builds</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1265395</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-01-10 09:38:43 -0800</bug_when>
    <thetext>Attachment 298474 did not pass style-queue:


ERROR: Source/JavaScriptCore/inspector/remote/cocoa/RemoteInspectorXPCConnection.mm:153:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/inspector/remote/cocoa/RemoteConnectionToTargetCocoa.mm:164:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/inspector/remote/cocoa/RemoteConnectionToTargetCocoa.mm:199:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/inspector/remote/cocoa/RemoteConnectionToTargetCocoa.mm:217:  This { should be at the end of the previous line  [whitespace/braces] [4]
Total errors found: 4 in 13 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>1265693</commentid>
    <comment_count>13</comment_count>
      <attachid>298557</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2017-01-10 23:53:08 -0800</bug_when>
    <thetext>Created attachment 298557
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1265694</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-01-10 23:54:47 -0800</bug_when>
    <thetext>Attachment 298557 did not pass style-queue:


ERROR: Source/JavaScriptCore/inspector/remote/cocoa/RemoteInspectorXPCConnection.mm:153:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/inspector/remote/cocoa/RemoteConnectionToTargetCocoa.mm:164:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/inspector/remote/cocoa/RemoteConnectionToTargetCocoa.mm:199:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/inspector/remote/cocoa/RemoteConnectionToTargetCocoa.mm:217:  This { should be at the end of the previous line  [whitespace/braces] [4]
Total errors found: 4 in 15 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>1267151</commentid>
    <comment_count>15</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2017-01-16 08:03:24 -0800</bug_when>
    <thetext>Ping reviewers. This is just a refactoring.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1272993</commentid>
    <comment_count>16</comment_count>
      <attachid>298557</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2017-02-03 11:35:18 -0800</bug_when>
    <thetext>Comment on attachment 298557
Patch

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

Looks straightforward, and inspector devs have had plenty of time to complain by now if something&apos;s undesired.

&gt; Source/JavaScriptCore/ChangeLog:10
&gt; +        cross-platform parts of RemoteInspector have been moced to a new RemoteInspector.cpp file. Also moved to cocoa

moved</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1275577</commentid>
    <comment_count>17</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2017-02-10 15:36:15 -0800</bug_when>
    <thetext>I&apos;m going to update this patch and land it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1275662</commentid>
    <comment_count>18</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2017-02-10 17:29:01 -0800</bug_when>
    <thetext>Committed r212169: &lt;http://trac.webkit.org/changeset/212169&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1275763</commentid>
    <comment_count>19</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2017-02-10 23:25:52 -0800</bug_when>
    <thetext>Thanks Brian!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1277224</commentid>
    <comment_count>20</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2017-02-15 09:34:00 -0800</bug_when>
    <thetext>(In reply to comment #18)
&gt; Committed r212169: &lt;http://trac.webkit.org/changeset/212169&gt;

Mac CMake buildfix landed in https://trac.webkit.org/changeset/212363</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1277319</commentid>
    <comment_count>21</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-02-15 13:36:26 -0800</bug_when>
    <thetext>I&apos;m seeing suspicious crashes on my phone when starting the Web Inspector on iOS:

Thread 0 name:  Dispatch queue: com.apple.main-thread
Thread 0 Crashed:
0   JavaScriptCore                	0x00000001016b86a8 Inspector::InspectorValue::parseJSON(WTF::String const&amp;, WTF::RefPtr&lt;Inspector::InspectorValue&gt;&amp;) + 40
1   JavaScriptCore                	0x000000010166c414 Inspector::BackendDispatcher::dispatch(WTF::String const&amp;) + 104
2   JavaScriptCore                	0x000000010166c414 Inspector::BackendDispatcher::dispatch(WTF::String const&amp;) + 104
3   JavaScriptCore                	0x0000000101956278 ___ZN9Inspector24RemoteConnectionToTarget19sendMessageToTargetERKN3WTF6StringE_block_invoke + 128
4   JavaScriptCore                	0x0000000101956634 Inspector::RemoteTargetHandleRunSourceGlobal(void*) + 220
5   CoreFoundation                	0x000000018fe4e3c8 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 24
6   CoreFoundation                	0x000000018fe4dd38 __CFRunLoopDoSources0 + 540
7   CoreFoundation                	0x000000018fe4b944 __CFRunLoopRun + 744
8   CoreFoundation                	0x000000018fd7b9bc CFRunLoopRunSpecific + 424
9   Foundation                    	0x0000000190897884 -[NSRunLoop(NSRunLoop) runMode:beforeDate:] + 304
10  Foundation                    	0x00000001908ec1d8 -[NSRunLoop(NSRunLoop) run] + 88
11  libxpc.dylib                  	0x000000018ef9fc54 _xpc_objc_main + 664
12  libxpc.dylib                  	0x000000018efa1984 xpc_main + 200
13  com.apple.WebKit.WebContent   	0x00000001000e75b8 main + 376
14  libdyld.dylib                 	0x000000018ed8959c start + 4</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1277360</commentid>
    <comment_count>22</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-02-15 14:35:51 -0800</bug_when>
    <thetext>I verified that the WebInspector crashed immediately when starting to inspect a page 100% of the time and I reverted this in http://trac.webkit.org/r212394 and the WebInspector works fine on iOS.
Brian, please check that the WebInspector works on iOS before re-landing this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1277430</commentid>
    <comment_count>23</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2017-02-15 17:07:15 -0800</bug_when>
    <thetext>(In reply to comment #22)
&gt; I verified that the WebInspector crashed immediately when starting to
&gt; inspect a page 100% of the time and I reverted this in
&gt; http://trac.webkit.org/r212394 and the WebInspector works fine on iOS.
&gt; Brian, please check that the WebInspector works on iOS before re-landing
&gt; this.

I would have appreciated a ping at the least. It is probably something trivial, and now I&apos;ll need to waste some build time on trunk to fix someone else&apos;s code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1277518</commentid>
    <comment_count>24</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2017-02-15 22:27:05 -0800</bug_when>
    <thetext>I&apos;ll re-check the patch, it shouldn&apos;t change anything actually, it&apos;s just a refactoring. Let me know if I can help somehow, I can&apos;t test on iOS, though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1277524</commentid>
    <comment_count>25</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-02-15 22:49:50 -0800</bug_when>
    <thetext>Carlos, I&apos;m 100% sure if you re-land the patch as-is it will make the iOS web inspector crash on launch 100% of the time.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1277533</commentid>
    <comment_count>26</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2017-02-15 23:10:33 -0800</bug_when>
    <thetext>(In reply to comment #25)
&gt; Carlos, I&apos;m 100% sure if you re-land the patch as-is it will make the iOS
&gt; web inspector crash on launch 100% of the time.

Sure, that&apos;s why we need to investigate :-) I must have messed anything in the refactoring.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1277535</commentid>
    <comment_count>27</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2017-02-15 23:12:27 -0800</bug_when>
    <thetext>(In reply to comment #26)
&gt; (In reply to comment #25)
&gt; &gt; Carlos, I&apos;m 100% sure if you re-land the patch as-is it will make the iOS
&gt; &gt; web inspector crash on launch 100% of the time.
&gt; 
&gt; Sure, that&apos;s why we need to investigate :-) I must have messed anything in
&gt; the refactoring.

There was at least one change to RemoteInspector committed to trunk after this patch was last rebased. I had to manually merge in one of them, and must have missed another one. Please compare the pre- and post- of my commit, not the one up on bugzilla.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1277543</commentid>
    <comment_count>28</comment_count>
      <attachid>298557</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-02-15 23:39:26 -0800</bug_when>
    <thetext>Comment on attachment 298557
Patch

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

&gt; Source/JavaScriptCore/inspector/remote/cocoa/RemoteConnectionToTargetCocoa.mmSource/JavaScriptCore/inspector/remote/RemoteConnectionToTarget.mm:213
&gt; -void RemoteConnectionToTarget::sendMessageToTarget(NSString *message)
&gt; +void RemoteConnectionToTarget::sendMessageToTarget(const String&amp; message)

This change broke it.  I&apos;m going to re-commit it with an NSString.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1277544</commentid>
    <comment_count>29</comment_count>
      <attachid>301717</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-02-15 23:41:44 -0800</bug_when>
    <thetext>Created attachment 301717
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1277545</commentid>
    <comment_count>30</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-02-15 23:42:39 -0800</bug_when>
    <thetext>Re-committed latest patch with fixed API in http://trac.webkit.org/r212424</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1277546</commentid>
    <comment_count>31</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2017-02-15 23:43:53 -0800</bug_when>
    <thetext>(In reply to comment #28)
&gt; Comment on attachment 298557 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=298557&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/inspector/remote/cocoa/RemoteConnectionToTargetCocoa.mmSource/JavaScriptCore/inspector/remote/RemoteConnectionToTarget.mm:213
&gt; &gt; -void RemoteConnectionToTarget::sendMessageToTarget(NSString *message)
&gt; &gt; +void RemoteConnectionToTarget::sendMessageToTarget(const String&amp; message)
&gt; 
&gt; This change broke it.  I&apos;m going to re-commit it with an NSString.

Thanks Alex! Then we need ifdefs, no?. I assumed there was an implicit conversion, because it built.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1277547</commentid>
    <comment_count>32</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-02-15 23:45:24 -0800</bug_when>
    <thetext>I put ifdefs.  We could maybe do something like PlatformString, but that definitely needs to stay an NSString for some reason.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1277969</commentid>
    <comment_count>33</comment_count>
      <attachid>298557</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2017-02-16 15:47:39 -0800</bug_when>
    <thetext>Comment on attachment 298557
Patch

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

&gt;&gt;&gt; Source/JavaScriptCore/inspector/remote/cocoa/RemoteConnectionToTargetCocoa.mmSource/JavaScriptCore/inspector/remote/RemoteConnectionToTarget.mm:213
&gt;&gt;&gt; +void RemoteConnectionToTarget::sendMessageToTarget(const String&amp; message)
&gt;&gt; 
&gt;&gt; This change broke it.  I&apos;m going to re-commit it with an NSString.
&gt; 
&gt; Thanks Alex! Then we need ifdefs, no?. I assumed there was an implicit conversion, because it built.

Yes, this would cause issues with WTFString because the String is being transported across multiple threads here.

Here it is on RemoteInspector&apos;s XPC Connection Queue and dispatchAsyncOnTarget below will use the string on the Target&apos;s Debugger Queue (typically the Main Queue / Web Thread for WebViews).

Using WTFString I think it would destroy the data by the time the other thread uses it. In the NSString case it gets retained for use in the block and released afterwards.

The typical pattern for using WTFString across threads would be an isolatedCopy and capturing in a lambda. It seems that would be rather wasteful here though (the data is not going to change).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1279940</commentid>
    <comment_count>34</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2017-02-22 10:02:11 -0800</bug_when>
    <thetext>&lt;rdar://problem/30610701&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>298005</attachid>
            <date>2017-01-04 04:55:11 -0800</date>
            <delta_ts>2017-01-04 05:25:32 -0800</delta_ts>
            <desc>WIP patch</desc>
            <filename>wip-remote-inspector-refactor.diff</filename>
            <type>text/plain</type>
            <size>45412</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNSZW1vdGVJbnNwZWN0b3Iu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1JlbW90ZUluc3BlY3Rvci5jcHAKaW5k
ZXggZmFlYmM1ZGUzZTEuLjNiZTYxZDA5MjcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL0pTUmVtb3RlSW5zcGVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL0pTUmVtb3RlSW5zcGVjdG9yLmNwcApAQCAtNTAsOSArNTAsOSBAQCB2b2lkIEpTUmVt
b3RlSW5zcGVjdG9yU3RhcnQodm9pZCkKICNlbmRpZgogfQogCi12b2lkIEpTUmVtb3RlSW5zcGVj
dG9yU2V0UGFyZW50UHJvY2Vzc0luZm9ybWF0aW9uKHBpZF90IHBpZCwgY29uc3QgVUludDgqIGF1
ZGl0RGF0YSwgc2l6ZV90IGF1ZGl0TGVuZ3RoKQordm9pZCBKU1JlbW90ZUluc3BlY3RvclNldFBh
cmVudFByb2Nlc3NJbmZvcm1hdGlvbihwaWRfdCBwaWQsIGNvbnN0IHVpbnQ4X3QqIGF1ZGl0RGF0
YSwgc2l6ZV90IGF1ZGl0TGVuZ3RoKQogewotI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQor
I2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKSAmJiBQTEFURk9STShDT0NPQSkKICAgICBSZXRh
aW5QdHI8Q0ZEYXRhUmVmPiBhdWRpdERhdGFSZWYgPSBhZG9wdENGKENGRGF0YUNyZWF0ZShrQ0ZB
bGxvY2F0b3JEZWZhdWx0LCBhdWRpdERhdGEsIGF1ZGl0TGVuZ3RoKSk7CiAgICAgUmVtb3RlSW5z
cGVjdG9yOjpzaW5nbGV0b24oKS5zZXRQYXJlbnRQcm9jZXNzSW5mb3JtYXRpb24ocGlkLCBhdWRp
dERhdGFSZWYpOwogI2Vsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9QbGF0
Zm9ybU1hYy5jbWFrZSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9QbGF0Zm9ybU1hYy5jbWFrZQpp
bmRleCAyZTZiMTViOWM2ZS4uMGFiOGZiNGU4MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9QbGF0Zm9ybU1hYy5jbWFrZQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvUGxh
dGZvcm1NYWMuY21ha2UKQEAgLTEwLDExICsxMCwxNCBAQCBsaXN0KEFQUEVORCBKYXZhU2NyaXB0
Q29yZV9TT1VSQ0VTCiAgICAgQVBJL09iakNDYWxsYmFja0Z1bmN0aW9uLm1tCiAKICAgICBpbnNw
ZWN0b3IvcmVtb3RlL1JlbW90ZUF1dG9tYXRpb25UYXJnZXQuY3BwCi0gICAgaW5zcGVjdG9yL3Jl
bW90ZS9SZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQubW0KICAgICBpbnNwZWN0b3IvcmVtb3RlL1Jl
bW90ZUNvbnRyb2xsYWJsZVRhcmdldC5jcHAKICAgICBpbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUlu
c3BlY3Rpb25UYXJnZXQuY3BwCi0gICAgaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3Iu
bW0KKyAgICBpbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3Rvci5jcHAKICAgICBpbnNwZWN0
b3IvcmVtb3RlL1JlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24ubW0KKworICAgIGluc3BlY3Rv
ci9yZW1vdGUvY29jb2EvUmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0Q29jb2EubW0KKyAgICBpbnNw
ZWN0b3IvcmVtb3RlL2NvY29hL1JlbW90ZUluc3BlY3RvckNvY29hLm1tCisgICAgaW5zcGVjdG9y
L3JlbW90ZS9jb2NvYS9SZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uLm1tCiApCiBhZGRfZGVm
aW5pdGlvbnMoLURTVEFUSUNBTExZX0xJTktFRF9XSVRIX1dURiAtRF9fU1REQ19XQU5UX0xJQl9F
WFQxX18pCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVt
b3RlL1JlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9yZW1vdGUvUmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0LmgKaW5kZXggZGJhMDYwMTc5
OWEuLjg5YWE3YmM1ZTc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL3JlbW90ZS9SZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQuaApAQCAt
MjcsNjcgKzI3LDgyIEBACiAKICNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKIAotI2ltcG9y
dCAiSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsLmgiCi0jaW1wb3J0ICJSZW1vdGVDb25uZWN0aW9u
VG9UYXJnZXQuaCIKLSNpbXBvcnQgIlJlbW90ZUluc3BlY3Rvci5oIgotI2ltcG9ydCA8bXV0ZXg+
Ci0jaW1wb3J0IDx3dGYvQmxvY2tQdHIuaD4KLSNpbXBvcnQgPHd0Zi9Mb2NrLmg+Ci0jaW1wb3J0
IDx3dGYvUmV0YWluUHRyLmg+Ci0jaW1wb3J0IDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4K
KyNpbmNsdWRlICJJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwuaCIKKyNpbmNsdWRlIDx3dGYvTG9j
ay5oPgorI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgorCisjaWYgUExBVEZP
Uk0oQ09DT0EpCisjaW5jbHVkZSA8d3RmL0Jsb2NrUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JldGFp
blB0ci5oPgogCiBPQkpDX0NMQVNTIE5TU3RyaW5nOworI2VuZGlmCiAKIG5hbWVzcGFjZSBJbnNw
ZWN0b3IgewogCitjbGFzcyBSZW1vdGVDb250cm9sbGFibGVUYXJnZXQ7CisKKyNpZiBQTEFURk9S
TShDT0NPQSkKIHR5cGVkZWYgVmVjdG9yPEJsb2NrUHRyPHZvaWQgKCk+PiBSZW1vdGVUYXJnZXRR
dWV1ZTsKKyNlbmRpZgogCiBjbGFzcyBSZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQgZmluYWwgOiBw
dWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8UmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0PiwgcHVi
bGljIEZyb250ZW5kQ2hhbm5lbCB7CiBwdWJsaWM6Ci0gICAgUmVtb3RlQ29ubmVjdGlvblRvVGFy
Z2V0KFJlbW90ZUNvbnRyb2xsYWJsZVRhcmdldCosIE5TU3RyaW5nICpjb25uZWN0aW9uSWRlbnRp
ZmllciwgTlNTdHJpbmcgKmRlc3RpbmF0aW9uKTsKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBS
ZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQoUmVtb3RlQ29udHJvbGxhYmxlVGFyZ2V0KiwgTlNTdHJp
bmcqIGNvbm5lY3Rpb25JZGVudGlmaWVyLCBOU1N0cmluZyogZGVzdGluYXRpb24pOworI2VuZGlm
CiAgICAgdmlydHVhbCB+UmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0KCk7CiAKICAgICAvLyBNYWlu
IEFQSS4KICAgICBib29sIHNldHVwKGJvb2wgaXNBdXRvbWF0aWNJbnNwZWN0aW9uID0gZmFsc2Us
IGJvb2wgYXV0b21hdGljYWxseVBhdXNlID0gZmFsc2UpOwotICAgIHZvaWQgc2VuZE1lc3NhZ2VU
b1RhcmdldChOU1N0cmluZyAqKTsKKyAgICB2b2lkIHNlbmRNZXNzYWdlVG9UYXJnZXQoY29uc3Qg
U3RyaW5nJik7CiAgICAgdm9pZCBjbG9zZSgpOwogICAgIHZvaWQgdGFyZ2V0Q2xvc2VkKCk7CiAK
ICAgICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiB0YXJnZXRJZGVudGlmaWVyKCkgY29uc3Q7Cisj
aWYgUExBVEZPUk0oQ09DT0EpCiAgICAgTlNTdHJpbmcgKmNvbm5lY3Rpb25JZGVudGlmaWVyKCkg
Y29uc3Q7CiAgICAgTlNTdHJpbmcgKmRlc3RpbmF0aW9uKCkgY29uc3Q7CiAKICAgICBMb2NrJiBx
dWV1ZU11dGV4KCkgeyByZXR1cm4gbV9xdWV1ZU11dGV4OyB9CiAgICAgY29uc3QgUmVtb3RlVGFy
Z2V0UXVldWUmIHF1ZXVlKCkgY29uc3QgeyByZXR1cm4gbV9xdWV1ZTsgfQogICAgIHZvaWQgY2xl
YXJRdWV1ZSgpIHsgbV9xdWV1ZS5jbGVhcigpOyB9CisjZW5kaWYKIAogICAgIC8vIEZyb250ZW5k
Q2hhbm5lbCBvdmVycmlkZXMuCiAgICAgQ29ubmVjdGlvblR5cGUgY29ubmVjdGlvblR5cGUoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBDb25uZWN0aW9uVHlwZTo6UmVtb3RlOyB9CiAgICAgdm9p
ZCBzZW5kTWVzc2FnZVRvRnJvbnRlbmQoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CiAKIHByaXZh
dGU6CisjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgdm9pZCBkaXNwYXRjaEFzeW5jT25UYXJnZXQo
dm9pZCAoXmJsb2NrKSgpKTsKIAogICAgIHZvaWQgc2V0dXBSdW5Mb29wKCk7CiAgICAgdm9pZCB0
ZWFyZG93blJ1bkxvb3AoKTsKICAgICB2b2lkIHF1ZXVlVGFza09uUHJpdmF0ZVJ1bkxvb3Aodm9p
ZCAoXmJsb2NrKSgpKTsKKyNlbmRpZgogCiAgICAgLy8gVGhpcyBjb25uZWN0aW9uIGZyb20gdGhl
IFJlbW90ZUluc3BlY3RvciBzaW5nbGV0b24gdG8gdGhlIEluc3BlY3Rpb25UYXJnZXQKICAgICAv
LyBjYW4gYmUgdXNlZCBvbiBtdWx0aXBsZSB0aHJlYWRzLiBTbyBhbnkgYWNjZXNzIHRvIHRoZSB0
YXJnZXQKICAgICAvLyBpdHNlbGYgbXVzdCB0YWtlIHRoaXMgbXV0ZXggdG8gZW5zdXJlIG1fdGFy
Z2V0IGlzIHZhbGlkLgogICAgIExvY2sgbV90YXJnZXRNdXRleDsKIAorI2lmIFBMQVRGT1JNKENP
Q09BKQogICAgIC8vIElmIGEgdGFyZ2V0IGhhcyBhIHNwZWNpZmljIHJ1biBsb29wIGl0IHdhbnRz
IHRvIGV2YWx1YXRlIG9uCiAgICAgLy8gd2Ugc2V0dXAgb3VyIHJ1biBsb29wIHNvdXJjZXMgb24g
dGhhdCBzcGVjaWZpYyBydW4gbG9vcC4KICAgICBSZXRhaW5QdHI8Q0ZSdW5Mb29wUmVmPiBtX3J1
bkxvb3A7CiAgICAgUmV0YWluUHRyPENGUnVuTG9vcFNvdXJjZVJlZj4gbV9ydW5Mb29wU291cmNl
OwogICAgIFJlbW90ZVRhcmdldFF1ZXVlIG1fcXVldWU7CiAgICAgTG9jayBtX3F1ZXVlTXV0ZXg7
CisjZW5kaWYKIAogICAgIFJlbW90ZUNvbnRyb2xsYWJsZVRhcmdldCogbV90YXJnZXQgeyBudWxs
cHRyIH07CisgICAgYm9vbCBtX2Nvbm5lY3RlZCB7IGZhbHNlIH07CisKKyNpZiBQTEFURk9STShD
T0NPQSkKICAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IG1fY29ubmVjdGlvbklkZW50aWZpZXI7CiAg
ICAgUmV0YWluUHRyPE5TU3RyaW5nPiBtX2Rlc3RpbmF0aW9uOwotICAgIGJvb2wgbV9jb25uZWN0
ZWQgeyBmYWxzZSB9OworI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUNv
bnRyb2xsYWJsZVRhcmdldC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1v
dGUvUmVtb3RlQ29udHJvbGxhYmxlVGFyZ2V0LmgKaW5kZXggZDY1ZmFlYWQ5NWQuLmFmYWUzNjlh
ZTFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9S
ZW1vdGVDb250cm9sbGFibGVUYXJnZXQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL3JlbW90ZS9SZW1vdGVDb250cm9sbGFibGVUYXJnZXQuaApAQCAtMjcsMTAgKzI3LDEz
IEBACiAKICNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKIAotI2luY2x1ZGUgPENvcmVGb3Vu
ZGF0aW9uL0NGUnVuTG9vcC5oPgogI2luY2x1ZGUgPHd0Zi9UeXBlQ2FzdHMuaD4KICNpbmNsdWRl
IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAorI2lmIFVTRShDRikKKyNpbmNsdWRlIDxDb3JlRm91
bmRhdGlvbi9DRlJ1bkxvb3AuaD4KKyNlbmRpZgorCiBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAog
Y2xhc3MgRnJvbnRlbmRDaGFubmVsOwpAQCAtNTMsOCArNTYsMTAgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgYm9vbCByZW1vdGVDb250cm9sQWxsb3dlZCgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFs
IHZvaWQgZGlzcGF0Y2hNZXNzYWdlRnJvbVJlbW90ZShjb25zdCBTdHJpbmcmIG1lc3NhZ2UpID0g
MDsKIAorI2lmIFVTRShDRikKICAgICAvLyBUaGUgZGlzcGF0Y2ggYmxvY2sgd2lsbCBiZSBzY2hl
ZHVsZWQgb24gYSBnbG9iYWwgcnVuIGxvb3AgaWYgbnVsbCBpcyByZXR1cm5lZC4KICAgICB2aXJ0
dWFsIENGUnVuTG9vcFJlZiB0YXJnZXRSdW5Mb29wKCkgeyByZXR1cm4gbnVsbHB0cjsgfQorI2Vu
ZGlmCiBwcml2YXRlOgogICAgIHVuc2lnbmVkIG1faWRlbnRpZmllciB7MH07CiB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVj
dGlvblRhcmdldC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVt
b3RlSW5zcGVjdGlvblRhcmdldC5oCmluZGV4IDM4NTJmY2NkODMxLi40NTMyOWY2ZDYyZiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5z
cGVjdGlvblRhcmdldC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVt
b3RlL1JlbW90ZUluc3BlY3Rpb25UYXJnZXQuaApAQCAtNDEsOCArNDEsMTAgQEAgcHVibGljOgog
ICAgIGJvb2wgcmVtb3RlRGVidWdnaW5nQWxsb3dlZCgpIGNvbnN0IHsgcmV0dXJuIG1fYWxsb3dl
ZDsgfQogICAgIHZvaWQgc2V0UmVtb3RlRGVidWdnaW5nQWxsb3dlZChib29sKTsKIAorI2lmIFVT
RShDRikKICAgICBDRlJ1bkxvb3BSZWYgdGFyZ2V0UnVuTG9vcCgpIG92ZXJyaWRlIHsgcmV0dXJu
IG1fcnVuTG9vcC5nZXQoKTsgfQogICAgIHZvaWQgc2V0VGFyZ2V0UnVuTG9vcChDRlJ1bkxvb3BS
ZWYgcnVuTG9vcCkgeyBtX3J1bkxvb3AgPSBydW5Mb29wOyB9CisjZW5kaWYKIAogICAgIHZpcnR1
YWwgU3RyaW5nIG5hbWUoKSBjb25zdCB7IHJldHVybiBTdHJpbmcoKTsgfSAvLyBKYXZhU2NyaXB0
IGFuZCBXZWIKICAgICB2aXJ0dWFsIFN0cmluZyB1cmwoKSBjb25zdCB7IHJldHVybiBTdHJpbmco
KTsgfSAvLyBXZWIKQEAgLTU5LDcgKzYxLDkgQEAgcHVibGljOgogICAgIGJvb2wgcmVtb3RlQ29u
dHJvbEFsbG93ZWQoKSBjb25zdCBvdmVycmlkZTsKIHByaXZhdGU6CiAgICAgYm9vbCBtX2FsbG93
ZWQge2ZhbHNlfTsKKyNpZiBVU0UoQ0YpCiAgICAgUmV0YWluUHRyPENGUnVuTG9vcFJlZj4gbV9y
dW5Mb29wOworI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3Rv
ci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNw
ZWN0b3IuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4xNTc3YmVi
YjdkMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
cmVtb3RlL1JlbW90ZUluc3BlY3Rvci5jcHAKQEAgLTAsMCArMSwyMjQgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTMtMjAxNiBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJSZW1vdGVJbnNwZWN0b3IuaCIKKworI2lmIEVOQUJMRShSRU1PVEVfSU5T
UEVDVE9SKQorCisjaW5jbHVkZSAiUmVtb3RlQXV0b21hdGlvblRhcmdldC5oIgorI2luY2x1ZGUg
IlJlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldC5oIgorI2luY2x1ZGUgIlJlbW90ZUluc3BlY3Rpb25U
YXJnZXQuaCIKKyNpbmNsdWRlICJSZW1vdGVJbnNwZWN0b3JDb25zdGFudHMuaCIKKyNpbmNsdWRl
IDx3dGYvTWFpblRocmVhZC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCitu
YW1lc3BhY2UgSW5zcGVjdG9yIHsKKworYm9vbCBSZW1vdGVJbnNwZWN0b3I6OnN0YXJ0RW5hYmxl
ZCA9IHRydWU7CisKK3ZvaWQgUmVtb3RlSW5zcGVjdG9yOjpzdGFydERpc2FibGVkKCkKK3sKKyAg
ICBSZW1vdGVJbnNwZWN0b3I6OnN0YXJ0RW5hYmxlZCA9IGZhbHNlOworfQorCit1bnNpZ25lZCBS
ZW1vdGVJbnNwZWN0b3I6Om5leHRBdmFpbGFibGVUYXJnZXRJZGVudGlmaWVyKCkKK3sKKyAgICB1
bnNpZ25lZCBuZXh0VmFsaWRUYXJnZXRJZGVudGlmaWVyOworICAgIGRvIHsKKyAgICAgICAgbmV4
dFZhbGlkVGFyZ2V0SWRlbnRpZmllciA9IG1fbmV4dEF2YWlsYWJsZVRhcmdldElkZW50aWZpZXIr
KzsKKyAgICB9IHdoaWxlICghbmV4dFZhbGlkVGFyZ2V0SWRlbnRpZmllciB8fCBuZXh0VmFsaWRU
YXJnZXRJZGVudGlmaWVyID09IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSB8
fCBtX3RhcmdldE1hcC5jb250YWlucyhuZXh0VmFsaWRUYXJnZXRJZGVudGlmaWVyKSk7CisgICAg
cmV0dXJuIG5leHRWYWxpZFRhcmdldElkZW50aWZpZXI7Cit9CisKK3ZvaWQgUmVtb3RlSW5zcGVj
dG9yOjpyZWdpc3RlclRhcmdldChSZW1vdGVDb250cm9sbGFibGVUYXJnZXQqIHRhcmdldCkKK3sK
KyAgICBBU1NFUlRfQVJHKHRhcmdldCwgdGFyZ2V0KTsKKworICAgIHN0ZDo6bG9ja19ndWFyZDxM
b2NrPiBsb2NrKG1fbXV0ZXgpOworCisgICAgdW5zaWduZWQgdGFyZ2V0SWRlbnRpZmllciA9IG5l
eHRBdmFpbGFibGVUYXJnZXRJZGVudGlmaWVyKCk7CisgICAgdGFyZ2V0LT5zZXRUYXJnZXRJZGVu
dGlmaWVyKHRhcmdldElkZW50aWZpZXIpOworCisgICAgeworICAgICAgICBhdXRvIHJlc3VsdCA9
IG1fdGFyZ2V0TWFwLnNldCh0YXJnZXRJZGVudGlmaWVyLCB0YXJnZXQpOworICAgICAgICBBU1NF
UlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0LmlzTmV3RW50cnkpOworICAgIH0KKworICAgIC8vIElm
IHJlbW90ZSBjb250cm9sIGlzIG5vdCBhbGxvd2VkLCBhIG51bGwgbGlzdGluZyBpcyByZXR1cm5l
ZC4KKyAgICBpZiAoYXV0byB0YXJnZXRMaXN0aW5nID0gbGlzdGluZ0ZvclRhcmdldCgqdGFyZ2V0
KSkgeworICAgICAgICBhdXRvIHJlc3VsdCA9IG1fdGFyZ2V0TGlzdGluZ01hcC5zZXQodGFyZ2V0
SWRlbnRpZmllciwgdGFyZ2V0TGlzdGluZyk7CisgICAgICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0
LCByZXN1bHQuaXNOZXdFbnRyeSk7CisgICAgfQorCisgICAgcHVzaExpc3RpbmdzU29vbigpOwor
fQorCit2b2lkIFJlbW90ZUluc3BlY3Rvcjo6dW5yZWdpc3RlclRhcmdldChSZW1vdGVDb250cm9s
bGFibGVUYXJnZXQqIHRhcmdldCkKK3sKKyAgICBBU1NFUlRfQVJHKHRhcmdldCwgdGFyZ2V0KTsK
KworICAgIHN0ZDo6bG9ja19ndWFyZDxMb2NrPiBsb2NrKG1fbXV0ZXgpOworCisgICAgdW5zaWdu
ZWQgdGFyZ2V0SWRlbnRpZmllciA9IHRhcmdldC0+dGFyZ2V0SWRlbnRpZmllcigpOworICAgIGlm
ICghdGFyZ2V0SWRlbnRpZmllcikKKyAgICAgICAgcmV0dXJuOworCisgICAgYm9vbCB3YXNSZW1v
dmVkID0gbV90YXJnZXRNYXAucmVtb3ZlKHRhcmdldElkZW50aWZpZXIpOworICAgIEFTU0VSVF9V
TlVTRUQod2FzUmVtb3ZlZCwgd2FzUmVtb3ZlZCk7CisKKyAgICAvLyBUaGUgbGlzdGluZyBtYXkg
bmV2ZXIgaGF2ZSBiZWVuIGFkZGVkIGlmIHJlbW90ZSBjb250cm9sIGlzbid0IGFsbG93ZWQuCisg
ICAgbV90YXJnZXRMaXN0aW5nTWFwLnJlbW92ZSh0YXJnZXRJZGVudGlmaWVyKTsKKworICAgIGlm
IChhdXRvIGNvbm5lY3Rpb25Ub1RhcmdldCA9IG1fdGFyZ2V0Q29ubmVjdGlvbk1hcC50YWtlKHRh
cmdldElkZW50aWZpZXIpKQorICAgICAgICBjb25uZWN0aW9uVG9UYXJnZXQtPnRhcmdldENsb3Nl
ZCgpOworCisgICAgcHVzaExpc3RpbmdzU29vbigpOworfQorCit2b2lkIFJlbW90ZUluc3BlY3Rv
cjo6dXBkYXRlVGFyZ2V0KFJlbW90ZUNvbnRyb2xsYWJsZVRhcmdldCogdGFyZ2V0KQoreworICAg
IEFTU0VSVF9BUkcodGFyZ2V0LCB0YXJnZXQpOworCisgICAgc3RkOjpsb2NrX2d1YXJkPExvY2s+
IGxvY2sobV9tdXRleCk7CisKKyAgICB1bnNpZ25lZCB0YXJnZXRJZGVudGlmaWVyID0gdGFyZ2V0
LT50YXJnZXRJZGVudGlmaWVyKCk7CisgICAgaWYgKCF0YXJnZXRJZGVudGlmaWVyKQorICAgICAg
ICByZXR1cm47CisKKyAgICB7CisgICAgICAgIGF1dG8gcmVzdWx0ID0gbV90YXJnZXRNYXAuc2V0
KHRhcmdldElkZW50aWZpZXIsIHRhcmdldCk7CisgICAgICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0
LCAhcmVzdWx0LmlzTmV3RW50cnkpOworICAgIH0KKworICAgIC8vIElmIHRoZSB0YXJnZXQgaGFz
IGp1c3QgYWxsb3dlZCByZW1vdGUgY29udHJvbCwgdGhlbiB0aGUgbGlzdGluZyB3b24ndCBleGlz
dCB5ZXQuCisgICAgLy8gSWYgdGhlIHRhcmdldCBoYXMgbm8gaWRlbnRpZmllciByZW1vdmUgdGhl
IG9sZCBsaXN0aW5nLgorICAgIGlmIChhdXRvIHRhcmdldExpc3RpbmcgPSBsaXN0aW5nRm9yVGFy
Z2V0KCp0YXJnZXQpKQorICAgICAgICBtX3RhcmdldExpc3RpbmdNYXAuc2V0KHRhcmdldElkZW50
aWZpZXIsIHRhcmdldExpc3RpbmcpOworICAgIGVsc2UKKyAgICAgICAgbV90YXJnZXRMaXN0aW5n
TWFwLnJlbW92ZSh0YXJnZXRJZGVudGlmaWVyKTsKKworICAgIHB1c2hMaXN0aW5nc1Nvb24oKTsK
K30KKwordm9pZCBSZW1vdGVJbnNwZWN0b3I6OnVwZGF0ZUNsaWVudENhcGFiaWxpdGllcygpCit7
CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKworICAgIHN0ZDo6bG9ja19ndWFyZDxMb2Nr
PiBsb2NrKG1fbXV0ZXgpOworCisgICAgaWYgKCFtX2NsaWVudCkKKyAgICAgICAgbV9jbGllbnRD
YXBhYmlsaXRpZXMgPSBzdGQ6Om51bGxvcHQ7CisgICAgZWxzZSB7CisgICAgICAgIFJlbW90ZUlu
c3BlY3Rvcjo6Q2xpZW50OjpDYXBhYmlsaXRpZXMgdXBkYXRlZENhcGFiaWxpdGllcyA9IHsKKyAg
ICAgICAgICAgIG1fY2xpZW50LT5yZW1vdGVBdXRvbWF0aW9uQWxsb3dlZCgpIC8vIHJlbW90ZUF1
dG9tYXRpb25BbGxvd2VkCisgICAgICAgIH07CisKKyAgICAgICAgbV9jbGllbnRDYXBhYmlsaXRp
ZXMgPSB1cGRhdGVkQ2FwYWJpbGl0aWVzOworICAgIH0KK30KKwordm9pZCBSZW1vdGVJbnNwZWN0
b3I6OnNldFJlbW90ZUluc3BlY3RvckNsaWVudChSZW1vdGVJbnNwZWN0b3I6OkNsaWVudCogY2xp
ZW50KQoreworICAgIEFTU0VSVF9BUkcoY2xpZW50LCBjbGllbnQpOworICAgIEFTU0VSVCghbV9j
bGllbnQpOworCisgICAgeworICAgICAgICBzdGQ6OmxvY2tfZ3VhcmQ8TG9jaz4gbG9jayhtX211
dGV4KTsKKyAgICAgICAgbV9jbGllbnQgPSBjbGllbnQ7CisgICAgfQorCisgICAgLy8gU2VuZCBh
biB1cGRhdGVkIGxpc3RpbmcgdGhhdCBpbmNsdWRlcyB3aGV0aGVyIHRoZSBjbGllbnQgYWxsb3dz
IHJlbW90ZSBhdXRvbWF0aW9uLgorICAgIHVwZGF0ZUNsaWVudENhcGFiaWxpdGllcygpOworICAg
IHB1c2hMaXN0aW5nc1Nvb24oKTsKK30KKwordm9pZCBSZW1vdGVJbnNwZWN0b3I6OnNldHVwRmFp
bGVkKHVuc2lnbmVkIHRhcmdldElkZW50aWZpZXIpCit7CisgICAgc3RkOjpsb2NrX2d1YXJkPExv
Y2s+IGxvY2sobV9tdXRleCk7CisKKyAgICBtX3RhcmdldENvbm5lY3Rpb25NYXAucmVtb3ZlKHRh
cmdldElkZW50aWZpZXIpOworCisgICAgdXBkYXRlSGFzQWN0aXZlRGVidWdTZXNzaW9uKCk7CisK
KyAgICBpZiAodGFyZ2V0SWRlbnRpZmllciA9PSBtX2F1dG9tYXRpY0luc3BlY3Rpb25DYW5kaWRh
dGVUYXJnZXRJZGVudGlmaWVyKQorICAgICAgICBtX2F1dG9tYXRpY0luc3BlY3Rpb25QYXVzZWQg
PSBmYWxzZTsKKworICAgIHB1c2hMaXN0aW5nc1Nvb24oKTsKK30KKwordm9pZCBSZW1vdGVJbnNw
ZWN0b3I6OnNldHVwQ29tcGxldGVkKHVuc2lnbmVkIHRhcmdldElkZW50aWZpZXIpCit7CisgICAg
c3RkOjpsb2NrX2d1YXJkPExvY2s+IGxvY2sobV9tdXRleCk7CisKKyAgICBpZiAodGFyZ2V0SWRl
bnRpZmllciA9PSBtX2F1dG9tYXRpY0luc3BlY3Rpb25DYW5kaWRhdGVUYXJnZXRJZGVudGlmaWVy
KQorICAgICAgICBtX2F1dG9tYXRpY0luc3BlY3Rpb25QYXVzZWQgPSBmYWxzZTsKK30KKworYm9v
bCBSZW1vdGVJbnNwZWN0b3I6OndhaXRpbmdGb3JBdXRvbWF0aWNJbnNwZWN0aW9uKHVuc2lnbmVk
KQoreworICAgIC8vIFdlIGRvbid0IHRha2UgdGhlIGxvY2sgdG8gY2hlY2sgdGhpcyBiZWNhdXNl
IHdlIGFzc3VtZSBpdCB3aWxsIGJlIGNoZWNrZWQgcmVwZWF0ZWRseS4KKyAgICByZXR1cm4gbV9h
dXRvbWF0aWNJbnNwZWN0aW9uUGF1c2VkOworfQorCit2b2lkIFJlbW90ZUluc3BlY3Rvcjo6Y2xp
ZW50Q2FwYWJpbGl0aWVzRGlkQ2hhbmdlKCkKK3sKKyAgICB1cGRhdGVDbGllbnRDYXBhYmlsaXRp
ZXMoKTsKKyAgICBwdXNoTGlzdGluZ3NTb29uKCk7Cit9CisKK3ZvaWQgUmVtb3RlSW5zcGVjdG9y
OjpzdG9wKCkKK3sKKyAgICBzdGQ6OmxvY2tfZ3VhcmQ8TG9jaz4gbG9jayhtX211dGV4KTsKKwor
ICAgIHN0b3BJbnRlcm5hbChTdG9wU291cmNlOjpBUEkpOworfQorCitUYXJnZXRMaXN0aW5nIFJl
bW90ZUluc3BlY3Rvcjo6bGlzdGluZ0ZvclRhcmdldChjb25zdCBSZW1vdGVDb250cm9sbGFibGVU
YXJnZXQmIHRhcmdldCkgY29uc3QKK3sKKyAgICBpZiAoaXM8UmVtb3RlSW5zcGVjdGlvblRhcmdl
dD4odGFyZ2V0KSkKKyAgICAgICAgcmV0dXJuIGxpc3RpbmdGb3JJbnNwZWN0aW9uVGFyZ2V0KGRv
d25jYXN0PFJlbW90ZUluc3BlY3Rpb25UYXJnZXQ+KHRhcmdldCkpOworICAgIGlmIChpczxSZW1v
dGVBdXRvbWF0aW9uVGFyZ2V0Pih0YXJnZXQpKQorICAgICAgICByZXR1cm4gbGlzdGluZ0ZvckF1
dG9tYXRpb25UYXJnZXQoZG93bmNhc3Q8UmVtb3RlQXV0b21hdGlvblRhcmdldD4odGFyZ2V0KSk7
CisKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKwor
dm9pZCBSZW1vdGVJbnNwZWN0b3I6OnVwZGF0ZUhhc0FjdGl2ZURlYnVnU2Vzc2lvbigpCit7Cisg
ICAgYm9vbCBoYXNBY3RpdmVEZWJ1Z2dlclNlc3Npb24gPSAhbV90YXJnZXRDb25uZWN0aW9uTWFw
LmlzRW1wdHkoKTsKKyAgICBpZiAoaGFzQWN0aXZlRGVidWdnZXJTZXNzaW9uID09IG1faGFzQWN0
aXZlRGVidWdTZXNzaW9uKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2hhc0FjdGl2ZURlYnVn
U2Vzc2lvbiA9IGhhc0FjdGl2ZURlYnVnZ2VyU2Vzc2lvbjsKKworICAgIC8vIEZJWE1FOiBFeHBv
c2Ugc29tZSB3YXkgdG8gYWNjZXNzIHRoaXMgc3RhdGUgaW4gYW4gZW1iZWRkZXIuCisgICAgLy8g
TGVnYWN5IGlPUyBXZWJLaXQgMSBoYWQgYSBub3RpZmljYXRpb24uIFRoaXMgd2lsbCBuZWVkIHRv
IGJlIHNtYXJ0ZXIgd2l0aCBXZWJLaXQyLgorfQorCit9IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IK
KworI2VuZGlmIC8vIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3IuaAppbmRl
eCA5M2ZkMWE3ZDdjMC4uMjFhN2UxM2YxMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3Rvci5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3Rvci5oCkBAIC0yNywxNCAr
MjcsMTggQEAKIAogI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQogCi0jaW1wb3J0ICJSZW1v
dGVJbnNwZWN0b3JYUENDb25uZWN0aW9uLmgiCi0jaW1wb3J0IDx3dGYvRm9yd2FyZC5oPgotI2lt
cG9ydCA8d3RmL0hhc2hNYXAuaD4KLSNpbXBvcnQgPHd0Zi9Mb2NrLmg+Ci0jaW1wb3J0IDx3dGYv
UmV0YWluUHRyLmg+CisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvSGFz
aE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CisKKyNpZiBQTEFURk9STShDT0NPQSkKKyNp
bmNsdWRlICJSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uLmgiCisjaW5jbHVkZSA8d3RmL1Jl
dGFpblB0ci5oPgogCiBPQkpDX0NMQVNTIE5TRGljdGlvbmFyeTsKIE9CSkNfQ0xBU1MgTlNTdHJp
bmc7Cit0eXBlZGVmIFJldGFpblB0cjxOU0RpY3Rpb25hcnk+IFRhcmdldExpc3Rpbmc7CisjZW5k
aWYKIAogbmFtZXNwYWNlIEluc3BlY3RvciB7CiAKQEAgLTQ0LDcgKzQ4LDExIEBAIGNsYXNzIFJl
bW90ZUNvbnRyb2xsYWJsZVRhcmdldDsKIGNsYXNzIFJlbW90ZUluc3BlY3Rpb25UYXJnZXQ7CiBj
bGFzcyBSZW1vdGVJbnNwZWN0b3JDbGllbnQ7CiAKLWNsYXNzIEpTX0VYUE9SVF9QUklWQVRFIFJl
bW90ZUluc3BlY3RvciBmaW5hbCA6IHB1YmxpYyBSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9u
OjpDbGllbnQgeworY2xhc3MgSlNfRVhQT1JUX1BSSVZBVEUgUmVtb3RlSW5zcGVjdG9yIGZpbmFs
CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgOiBwdWJsaWMgUmVtb3RlSW5zcGVjdG9yWFBDQ29u
bmVjdGlvbjo6Q2xpZW50CisjZW5kaWYKK3sKIHB1YmxpYzoKICAgICBjbGFzcyBDbGllbnQgewog
ICAgIHB1YmxpYzoKQEAgLTgwLDExICs4OCwxMyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzdGFydCgp
OwogICAgIHZvaWQgc3RvcCgpOwogCisjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgYm9vbCBoYXNQ
YXJlbnRQcm9jZXNzSW5mb3JtYXRpb24oKSBjb25zdCB7IHJldHVybiBtX3BhcmVudFByb2Nlc3NJ
ZGVudGlmaWVyICE9IDA7IH0KICAgICBwaWRfdCBwYXJlbnRQcm9jZXNzSWRlbnRpZmllcigpIGNv
bnN0IHsgcmV0dXJuIG1fcGFyZW50UHJvY2Vzc0lkZW50aWZpZXI7IH0KICAgICBSZXRhaW5QdHI8
Q0ZEYXRhUmVmPiBwYXJlbnRQcm9jZXNzQXVkaXREYXRhKCkgY29uc3QgeyByZXR1cm4gbV9wYXJl
bnRQcm9jZXNzQXVkaXREYXRhOyB9CiAgICAgdm9pZCBzZXRQYXJlbnRQcm9jZXNzSW5mb3JtYXRp
b24ocGlkX3QsIFJldGFpblB0cjxDRkRhdGFSZWY+IGF1ZGl0RGF0YSk7CiAgICAgdm9pZCBzZXRQ
YXJlbnRQcm9jZXNzSW5mb21hdGlvbklzRGVsYXllZCgpOworI2VuZGlmCiAKIHByaXZhdGU6CiAg
ICAgUmVtb3RlSW5zcGVjdG9yKCk7CkBAIC05NCwxMSArMTA0LDE0IEBAIHByaXZhdGU6CiAgICAg
ZW51bSBjbGFzcyBTdG9wU291cmNlIHsgQVBJLCBYUENNZXNzYWdlIH07CiAgICAgdm9pZCBzdG9w
SW50ZXJuYWwoU3RvcFNvdXJjZSk7CiAKKyNpZiBQTEFURk9STShDT0NPQSkKICAgICB2b2lkIHNl
dHVwWFBDQ29ubmVjdGlvbklmTmVlZGVkKCk7CisjZW5kaWYKKworICAgIFRhcmdldExpc3Rpbmcg
bGlzdGluZ0ZvclRhcmdldChjb25zdCBSZW1vdGVDb250cm9sbGFibGVUYXJnZXQmKSBjb25zdDsK
KyAgICBUYXJnZXRMaXN0aW5nIGxpc3RpbmdGb3JJbnNwZWN0aW9uVGFyZ2V0KGNvbnN0IFJlbW90
ZUluc3BlY3Rpb25UYXJnZXQmKSBjb25zdDsKKyAgICBUYXJnZXRMaXN0aW5nIGxpc3RpbmdGb3JB
dXRvbWF0aW9uVGFyZ2V0KGNvbnN0IFJlbW90ZUF1dG9tYXRpb25UYXJnZXQmKSBjb25zdDsKIAot
ICAgIFJldGFpblB0cjxOU0RpY3Rpb25hcnk+IGxpc3RpbmdGb3JUYXJnZXQoY29uc3QgUmVtb3Rl
Q29udHJvbGxhYmxlVGFyZ2V0JikgY29uc3Q7Ci0gICAgUmV0YWluUHRyPE5TRGljdGlvbmFyeT4g
bGlzdGluZ0Zvckluc3BlY3Rpb25UYXJnZXQoY29uc3QgUmVtb3RlSW5zcGVjdGlvblRhcmdldCYp
IGNvbnN0OwotICAgIFJldGFpblB0cjxOU0RpY3Rpb25hcnk+IGxpc3RpbmdGb3JBdXRvbWF0aW9u
VGFyZ2V0KGNvbnN0IFJlbW90ZUF1dG9tYXRpb25UYXJnZXQmKSBjb25zdDsKICAgICB2b2lkIHB1
c2hMaXN0aW5nc05vdygpOwogICAgIHZvaWQgcHVzaExpc3RpbmdzU29vbigpOwogCkBAIC0xMDcs
NiArMTIwLDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgc2VuZEF1dG9tYXRpY0luc3BlY3Rpb25D
YW5kaWRhdGVNZXNzYWdlKCk7CiAKKyNpZiBQTEFURk9STShDT0NPQSkKICAgICB2b2lkIHhwY0Nv
bm5lY3Rpb25SZWNlaXZlZE1lc3NhZ2UoUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbiosIE5T
U3RyaW5nICptZXNzYWdlTmFtZSwgTlNEaWN0aW9uYXJ5ICp1c2VySW5mbykgb3ZlcnJpZGU7CiAg
ICAgdm9pZCB4cGNDb25uZWN0aW9uRmFpbGVkKFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24q
KSBvdmVycmlkZTsKICAgICB2b2lkIHhwY0Nvbm5lY3Rpb25VbmhhbmRsZWRNZXNzYWdlKFJlbW90
ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24qLCB4cGNfb2JqZWN0X3QpIG92ZXJyaWRlOwpAQCAtMTIx
LDYgKzEzNSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCByZWNlaXZlZEF1dG9tYXRpY0luc3BlY3Rp
b25Db25maWd1cmF0aW9uTWVzc2FnZShOU0RpY3Rpb25hcnkgKnVzZXJJbmZvKTsKICAgICB2b2lk
IHJlY2VpdmVkQXV0b21hdGljSW5zcGVjdGlvblJlamVjdE1lc3NhZ2UoTlNEaWN0aW9uYXJ5ICp1
c2VySW5mbyk7CiAgICAgdm9pZCByZWNlaXZlZEF1dG9tYXRpb25TZXNzaW9uUmVxdWVzdE1lc3Nh
Z2UoTlNEaWN0aW9uYXJ5ICp1c2VySW5mbyk7CisjZW5kaWYKIAogICAgIHN0YXRpYyBib29sIHN0
YXJ0RW5hYmxlZDsKIApAQCAtMTMxLDE1ICsxNDYsMTkgQEAgcHJpdmF0ZToKICAgICBMb2NrIG1f
bXV0ZXg7CiAKICAgICBIYXNoTWFwPHVuc2lnbmVkLCBSZW1vdGVDb250cm9sbGFibGVUYXJnZXQq
PiBtX3RhcmdldE1hcDsKLSAgICBIYXNoTWFwPHVuc2lnbmVkLCBSZXRhaW5QdHI8TlNEaWN0aW9u
YXJ5Pj4gbV90YXJnZXRMaXN0aW5nTWFwOwogICAgIEhhc2hNYXA8dW5zaWduZWQsIFJlZlB0cjxS
ZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQ+PiBtX3RhcmdldENvbm5lY3Rpb25NYXA7CisgICAgSGFz
aE1hcDx1bnNpZ25lZCwgVGFyZ2V0TGlzdGluZz4gbV90YXJnZXRMaXN0aW5nTWFwOwogCisjaWYg
UExBVEZPUk0oQ09DT0EpCiAgICAgUmVmUHRyPFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24+
IG1fcmVsYXlDb25uZWN0aW9uOworI2VuZGlmCiAKICAgICBSZW1vdGVJbnNwZWN0b3I6OkNsaWVu
dCogbV9jbGllbnQgeyBudWxscHRyIH07CiAgICAgc3RkOjpvcHRpb25hbDxSZW1vdGVJbnNwZWN0
b3I6OkNsaWVudDo6Q2FwYWJpbGl0aWVzPiBtX2NsaWVudENhcGFiaWxpdGllczsKIAorI2lmIFBM
QVRGT1JNKENPQ09BKQogICAgIGRpc3BhdGNoX3F1ZXVlX3QgbV94cGNRdWV1ZTsKKyNlbmRpZgog
ICAgIHVuc2lnbmVkIG1fbmV4dEF2YWlsYWJsZVRhcmdldElkZW50aWZpZXIgeyAxIH07CiAgICAg
aW50IG1fbm90aWZ5VG9rZW4geyAwIH07CiAgICAgYm9vbCBtX2VuYWJsZWQgeyBmYWxzZSB9OwpA
QCAtMTQ3LDcgKzE2Niw5IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX3B1c2hTY2hlZHVsZWQgeyBm
YWxzZSB9OwogCiAgICAgcGlkX3QgbV9wYXJlbnRQcm9jZXNzSWRlbnRpZmllciB7IDAgfTsKKyNp
ZiBQTEFURk9STShDT0NPQSkKICAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBtX3BhcmVudFByb2Nl
c3NBdWRpdERhdGE7CisjZW5kaWYKICAgICBib29sIG1fc2hvdWxkU2VuZFBhcmVudFByb2Nlc3NJ
bmZvcm1hdGlvbiB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2F1dG9tYXRpY0luc3BlY3Rpb25FbmFi
bGVkIHsgZmFsc2UgfTsKICAgICBib29sIG1fYXV0b21hdGljSW5zcGVjdGlvblBhdXNlZCB7IGZh
bHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90
ZS9SZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQubW0gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL3JlbW90ZS9jb2NvYS9SZW1vdGVDb25uZWN0aW9uVG9UYXJnZXRDb2NvYS5tbQpzaW1p
bGFyaXR5IGluZGV4IDk5JQpyZW5hbWUgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL3JlbW90ZS9SZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQubW0KcmVuYW1lIHRvIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL2NvY29hL1JlbW90ZUNvbm5lY3Rpb25Ub1Rh
cmdldENvY29hLm1tCmluZGV4IGQ2MGRhNDhhZmE4Li5lYmE0NjlkYWIxMCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlQ29ubmVjdGlvblRv
VGFyZ2V0Lm1tCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL2Nv
Y29hL1JlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldENvY29hLm1tCkBAIC0zMSw2ICszMSw3IEBACiAj
aW1wb3J0ICJFdmVudExvb3AuaCIKICNpbXBvcnQgIlJlbW90ZUF1dG9tYXRpb25UYXJnZXQuaCIK
ICNpbXBvcnQgIlJlbW90ZUluc3BlY3Rpb25UYXJnZXQuaCIKKyNpbXBvcnQgIlJlbW90ZUluc3Bl
Y3Rvci5oIgogI2ltcG9ydCA8ZGlzcGF0Y2gvZGlzcGF0Y2guaD4KICNpbXBvcnQgPHd0Zi9PcHRp
b25hbC5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Jl
bW90ZS9jb2NvYS9SZW1vdGVJbnNwZWN0b3JDb2NvYS5tbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvcmVtb3RlL2NvY29hL1JlbW90ZUluc3BlY3RvckNvY29hLm1tCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5iZWY1YmJhZTU5ZgotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL2NvY29hL1JlbW90
ZUluc3BlY3RvckNvY29hLm1tCkBAIC0wLDAgKzEsNjYxIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEzLTIwMTYgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBv
cnQgIlJlbW90ZUluc3BlY3Rvci5oIgorCisjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCisK
KyNpbXBvcnQgIkluaXRpYWxpemVUaHJlYWRpbmcuaCIKKyNpbXBvcnQgIlJlbW90ZUF1dG9tYXRp
b25UYXJnZXQuaCIKKyNpbXBvcnQgIlJlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldC5oIgorI2ltcG9y
dCAiUmVtb3RlSW5zcGVjdGlvblRhcmdldC5oIgorI2ltcG9ydCAiUmVtb3RlSW5zcGVjdG9yQ29u
c3RhbnRzLmgiCisjaW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KKyNpbXBvcnQgPGRp
c3BhdGNoL2Rpc3BhdGNoLmg+CisjaW1wb3J0IDxub3RpZnkuaD4KKyNpbXBvcnQgPHd0Zi9Bc3Nl
cnRpb25zLmg+CisjaW1wb3J0IDx3dGYvTWFpblRocmVhZC5oPgorI2ltcG9ydCA8d3RmL05ldmVy
RGVzdHJveWVkLmg+CisjaW1wb3J0IDx3dGYvc3BpL2Rhcndpbi9TYW5kYm94U1BJLmg+CisjaW1w
b3J0IDx3dGYvc3BpL2Rhcndpbi9YUENTUEkuaD4KKyNpbXBvcnQgPHd0Zi90ZXh0L1dURlN0cmlu
Zy5oPgorCituYW1lc3BhY2UgSW5zcGVjdG9yIHsKKworc3RhdGljIGJvb2wgY2FuQWNjZXNzV2Vi
SW5zcGVjdG9yTWFjaFBvcnQoKQoreworICAgIHJldHVybiBzYW5kYm94X2NoZWNrKGdldHBpZCgp
LCAibWFjaC1sb29rdXAiLCBzdGF0aWNfY2FzdDxlbnVtIHNhbmRib3hfZmlsdGVyX3R5cGU+KFNB
TkRCT1hfRklMVEVSX0dMT0JBTF9OQU1FIHwgU0FOREJPWF9DSEVDS19OT19SRVBPUlQpLCBXSVJY
UENNYWNoUG9ydE5hbWUpID09IDA7Cit9CisKK3N0YXRpYyBib29sIGdsb2JhbEF1dG9tYXRpY0lu
c3BlY3Rpb25TdGF0ZSgpCit7CisgICAgaW50IHRva2VuID0gMDsKKyAgICBpZiAobm90aWZ5X3Jl
Z2lzdGVyX2NoZWNrKFdJUkF1dG9tYXRpY0luc3BlY3Rpb25FbmFibGVkU3RhdGUsICZ0b2tlbikg
IT0gTk9USUZZX1NUQVRVU19PSykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgdWludDY0
X3QgYXV0b21hdGljSW5zcGVjdGlvbkVuYWJsZWQgPSAwOworICAgIG5vdGlmeV9nZXRfc3RhdGUo
dG9rZW4sICZhdXRvbWF0aWNJbnNwZWN0aW9uRW5hYmxlZCk7CisgICAgcmV0dXJuIGF1dG9tYXRp
Y0luc3BlY3Rpb25FbmFibGVkID09IDE7Cit9CisKK1JlbW90ZUluc3BlY3RvciYgUmVtb3RlSW5z
cGVjdG9yOjpzaW5nbGV0b24oKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZW1vdGVJ
bnNwZWN0b3I+IHNoYXJlZDsKKworICAgIHN0YXRpYyBkaXNwYXRjaF9vbmNlX3Qgb25jZTsKKyAg
ICBkaXNwYXRjaF9vbmNlKCZvbmNlLCBeeworICAgICAgICBpZiAoY2FuQWNjZXNzV2ViSW5zcGVj
dG9yTWFjaFBvcnQoKSkgeworICAgICAgICAgICAgZGlzcGF0Y2hfYmxvY2tfdCBpbml0aWFsaXpl
ID0gXnsKKyAgICAgICAgICAgICAgICBXVEY6OmluaXRpYWxpemVNYWluVGhyZWFkKCk7CisgICAg
ICAgICAgICAgICAgSlNDOjppbml0aWFsaXplVGhyZWFkaW5nKCk7CisgICAgICAgICAgICAgICAg
aWYgKFJlbW90ZUluc3BlY3Rvcjo6c3RhcnRFbmFibGVkKQorICAgICAgICAgICAgICAgICAgICBz
aGFyZWQuZ2V0KCkuc3RhcnQoKTsKKyAgICAgICAgICAgIH07CisKKyAgICAgICAgICAgIGlmIChb
TlNUaHJlYWQgaXNNYWluVGhyZWFkXSkKKyAgICAgICAgICAgICAgICBpbml0aWFsaXplKCk7Cisg
ICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAvLyBGSVhNRTogVGhpcyBtZWFucyB0
aGF0IHdlIG1heSBtaXNzIGFuIGF1dG8tYXR0YWNoIHRvIGEgSlNDb250ZXh0IGNyZWF0ZWQgb24g
YSBub24tbWFpbiB0aHJlYWQuCisgICAgICAgICAgICAgICAgLy8gVGhlIG1haW4gdGhyZWFkIGlu
aXRpYWxpemF0aW9uIGlzIHJlcXVpcmVkIGZvciBjZXJ0YWluIFdURiB2YWx1ZXMgdGhhdCBuZWVk
IHRvIGJlIGluaXRpYWxpemVkCisgICAgICAgICAgICAgICAgLy8gb24gdGhlICJyZWFsIiBtYWlu
IHRocmVhZC4gV2Ugc2hvdWxkIGludmVzdGlnYXRlIGEgYmV0dGVyIHdheSB0byBoYW5kbGUgdGhp
cy4KKyAgICAgICAgICAgICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1
ZSgpLCBpbml0aWFsaXplKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0pOworCisg
ICAgcmV0dXJuIHNoYXJlZDsKK30KKworUmVtb3RlSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3Io
KQorICAgIDogbV94cGNRdWV1ZShkaXNwYXRjaF9xdWV1ZV9jcmVhdGUoImNvbS5hcHBsZS5KYXZh
U2NyaXB0Q29yZS5yZW1vdGUtaW5zcGVjdG9yLXhwYyIsIERJU1BBVENIX1FVRVVFX1NFUklBTCkp
Cit7Cit9CisKK3ZvaWQgUmVtb3RlSW5zcGVjdG9yOjp1cGRhdGVBdXRvbWF0aWNJbnNwZWN0aW9u
Q2FuZGlkYXRlKFJlbW90ZUluc3BlY3Rpb25UYXJnZXQqIHRhcmdldCkKK3sKKyAgICBBU1NFUlRf
QVJHKHRhcmdldCwgdGFyZ2V0KTsKKyAgICB7CisgICAgICAgIHN0ZDo6bG9ja19ndWFyZDxMb2Nr
PiBsb2NrKG1fbXV0ZXgpOworCisgICAgICAgIHVuc2lnbmVkIHRhcmdldElkZW50aWZpZXIgPSB0
YXJnZXQtPnRhcmdldElkZW50aWZpZXIoKTsKKyAgICAgICAgaWYgKCF0YXJnZXRJZGVudGlmaWVy
KQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGF1dG8gcmVzdWx0ID0gbV90YXJnZXRN
YXAuc2V0KHRhcmdldElkZW50aWZpZXIsIHRhcmdldCk7CisgICAgICAgIEFTU0VSVF9VTlVTRUQo
cmVzdWx0LCAhcmVzdWx0LmlzTmV3RW50cnkpOworCisgICAgICAgIC8vIElmIHRoZSB0YXJnZXQg
aGFzIGp1c3QgYWxsb3dlZCByZW1vdGUgY29udHJvbCwgdGhlbiB0aGUgbGlzdGluZyB3b24ndCBl
eGlzdCB5ZXQuCisgICAgICAgIC8vIElmIHRoZSB0YXJnZXQgaGFzIG5vIGlkZW50aWZpZXIgcmVt
b3ZlIHRoZSBvbGQgbGlzdGluZy4KKyAgICAgICAgaWYgKFJldGFpblB0cjxOU0RpY3Rpb25hcnk+
IHRhcmdldExpc3RpbmcgPSBsaXN0aW5nRm9yVGFyZ2V0KCp0YXJnZXQpKQorICAgICAgICAgICAg
bV90YXJnZXRMaXN0aW5nTWFwLnNldCh0YXJnZXRJZGVudGlmaWVyLCB0YXJnZXRMaXN0aW5nKTsK
KyAgICAgICAgZWxzZQorICAgICAgICAgICAgbV90YXJnZXRMaXN0aW5nTWFwLnJlbW92ZSh0YXJn
ZXRJZGVudGlmaWVyKTsKKworICAgICAgICAvLyBEb24ndCBhbGxvdyBhdXRvbWF0aWMgaW5zcGVj
dGlvbiB1bmxlc3MgaXQgaXMgYWxsb3dlZCBvciB3ZSBhcmUgc3RvcHBlZC4KKyAgICAgICAgaWYg
KCFtX2F1dG9tYXRpY0luc3BlY3Rpb25FbmFibGVkIHx8ICFtX2VuYWJsZWQpIHsKKyAgICAgICAg
ICAgIHB1c2hMaXN0aW5nc1Nvb24oKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQor
CisgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgaGFuZGxlIG11bHRpcGxlIGRlYnVnZ2FibGVz
IHRyeWluZyB0byBwYXVzZSBhdCB0aGUgc2FtZSB0aW1lIG9uIGRpZmZlcmVudCB0aHJlYWRzLgor
ICAgICAgICAvLyBUbyBtYWtlIHRoaXMgd29yayB3ZSB3aWxsIG5lZWQgdG8gY2hhbmdlIG1fYXV0
b21hdGljSW5zcGVjdGlvbkNhbmRpZGF0ZVRhcmdldElkZW50aWZpZXIgdG8gYmUgYSBwZXItdGhy
ZWFkIHZhbHVlLgorICAgICAgICAvLyBNdWx0aXBsZSBhdHRlbXB0cyBvbiB0aGUgc2FtZSB0aHJl
YWQgc2hvdWxkIG5vdCBiZSBwb3NzaWJsZSBiZWNhdXNlIG91ciBuZXN0ZWQgcnVuIGxvb3AgaXMg
aW4gYSBzcGVjaWFsIFJXSSBtb2RlLgorICAgICAgICBpZiAobV9hdXRvbWF0aWNJbnNwZWN0aW9u
UGF1c2VkKSB7CisgICAgICAgICAgICBMT0dfRVJST1IoIlNraXBwaW5nIEF1dG9tYXRpYyBJbnNw
ZWN0aW9uIENhbmRpZGF0ZSB3aXRoIHBhZ2VJZCgldSkgYmVjYXVzZSB3ZSBhcmUgYWxyZWFkeSBw
YXVzZWQgd2FpdGluZyBmb3IgcGFnZUlkKCV1KSIsIHRhcmdldElkZW50aWZpZXIsIG1fYXV0b21h
dGljSW5zcGVjdGlvbkNhbmRpZGF0ZVRhcmdldElkZW50aWZpZXIpOworICAgICAgICAgICAgcHVz
aExpc3RpbmdzU29vbigpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAg
ICAgbV9hdXRvbWF0aWNJbnNwZWN0aW9uUGF1c2VkID0gdHJ1ZTsKKyAgICAgICAgbV9hdXRvbWF0
aWNJbnNwZWN0aW9uQ2FuZGlkYXRlVGFyZ2V0SWRlbnRpZmllciA9IHRhcmdldElkZW50aWZpZXI7
CisKKyAgICAgICAgLy8gSWYgd2UgYXJlIHBhdXNpbmcgYmVmb3JlIHdlIGhhdmUgY29ubmVjdGVk
IHRvIHdlYmluc3BlY3RvcmQgdGhlIGNhbmRpZGF0ZSBtZXNzYWdlIHdpbGwgYmUgc2VudCBhcyBz
b29uIGFzIHRoZSBjb25uZWN0aW9uIGlzIGVzdGFibGlzaGVkLgorICAgICAgICBpZiAobV9yZWxh
eUNvbm5lY3Rpb24pIHsKKyAgICAgICAgICAgIHB1c2hMaXN0aW5nc05vdygpOworICAgICAgICAg
ICAgc2VuZEF1dG9tYXRpY0luc3BlY3Rpb25DYW5kaWRhdGVNZXNzYWdlKCk7CisgICAgICAgIH0K
KworICAgICAgICAvLyBJbiBjYXNlIGRlYnVnZ2VycyBmYWlsIHRvIHJlc3BvbmQsIG9yIHdlIGNh
bm5vdCBjb25uZWN0IHRvIHdlYmluc3BlY3RvcmQsIGF1dG9tYXRpY2FsbHkgY29udGludWUgYWZ0
ZXIgYSBzaG9ydCBwZXJpb2Qgb2YgdGltZS4KKyNpZiBQTEFURk9STShXQVRDSE9TKQorICAgICAg
ICBpbnQ2NF90IGRlYnVnZ2VyVGltZW91dERlbGF5ID0gNTsKKyNlbHNlCisgICAgICAgIGludDY0
X3QgZGVidWdnZXJUaW1lb3V0RGVsYXkgPSAxOworI2VuZGlmCisgICAgICAgIGRpc3BhdGNoX2Fm
dGVyKGRpc3BhdGNoX3RpbWUoRElTUEFUQ0hfVElNRV9OT1csIGRlYnVnZ2VyVGltZW91dERlbGF5
ICogTlNFQ19QRVJfU0VDKSwgZGlzcGF0Y2hfZ2V0X2dsb2JhbF9xdWV1ZShESVNQQVRDSF9RVUVV
RV9QUklPUklUWV9ERUZBVUxULCAwKSwgXnsKKyAgICAgICAgICAgIHN0ZDo6bG9ja19ndWFyZDxM
b2NrPiBsb2NrKG1fbXV0ZXgpOworICAgICAgICAgICAgaWYgKG1fYXV0b21hdGljSW5zcGVjdGlv
bkNhbmRpZGF0ZVRhcmdldElkZW50aWZpZXIgPT0gdGFyZ2V0SWRlbnRpZmllcikgeworICAgICAg
ICAgICAgICAgIExPR19FUlJPUigiU2tpcHBpbmcgQXV0b21hdGljIEluc3BlY3Rpb24gQ2FuZGlk
YXRlIHdpdGggcGFnZUlkKCV1KSBiZWNhdXNlIHdlIGZhaWxlZCB0byByZWNlaXZlIGEgcmVzcG9u
c2UgaW4gdGltZS4iLCBtX2F1dG9tYXRpY0luc3BlY3Rpb25DYW5kaWRhdGVUYXJnZXRJZGVudGlm
aWVyKTsKKyAgICAgICAgICAgICAgICBtX2F1dG9tYXRpY0luc3BlY3Rpb25QYXVzZWQgPSBmYWxz
ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSk7CisgICAgfQorCisgICAgdGFyZ2V0LT5wYXVz
ZVdhaXRpbmdGb3JBdXRvbWF0aWNJbnNwZWN0aW9uKCk7CisKKyAgICB7CisgICAgICAgIHN0ZDo6
bG9ja19ndWFyZDxMb2NrPiBsb2NrKG1fbXV0ZXgpOworCisgICAgICAgIEFTU0VSVChtX2F1dG9t
YXRpY0luc3BlY3Rpb25DYW5kaWRhdGVUYXJnZXRJZGVudGlmaWVyKTsKKyAgICAgICAgbV9hdXRv
bWF0aWNJbnNwZWN0aW9uQ2FuZGlkYXRlVGFyZ2V0SWRlbnRpZmllciA9IDA7CisgICAgfQorfQor
Cit2b2lkIFJlbW90ZUluc3BlY3Rvcjo6c2VuZEF1dG9tYXRpY0luc3BlY3Rpb25DYW5kaWRhdGVN
ZXNzYWdlKCkKK3sKKyAgICBBU1NFUlQobV9lbmFibGVkKTsKKyAgICBBU1NFUlQobV9hdXRvbWF0
aWNJbnNwZWN0aW9uRW5hYmxlZCk7CisgICAgQVNTRVJUKG1fYXV0b21hdGljSW5zcGVjdGlvblBh
dXNlZCk7CisgICAgQVNTRVJUKG1fYXV0b21hdGljSW5zcGVjdGlvbkNhbmRpZGF0ZVRhcmdldElk
ZW50aWZpZXIpOworICAgIEFTU0VSVChtX3JlbGF5Q29ubmVjdGlvbik7CisKKyAgICBOU0RpY3Rp
b25hcnkgKmRldGFpbHMgPSBAe1dJUlRhcmdldElkZW50aWZpZXJLZXk6IEAobV9hdXRvbWF0aWNJ
bnNwZWN0aW9uQ2FuZGlkYXRlVGFyZ2V0SWRlbnRpZmllcil9OworICAgIG1fcmVsYXlDb25uZWN0
aW9uLT5zZW5kTWVzc2FnZShXSVJBdXRvbWF0aWNJbnNwZWN0aW9uQ2FuZGlkYXRlTWVzc2FnZSwg
ZGV0YWlscyk7Cit9CisKK3ZvaWQgUmVtb3RlSW5zcGVjdG9yOjpzZW5kTWVzc2FnZVRvUmVtb3Rl
KHVuc2lnbmVkIHRhcmdldElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKK3sKKyAg
ICBzdGQ6OmxvY2tfZ3VhcmQ8TG9jaz4gbG9jayhtX211dGV4KTsKKworICAgIGlmICghbV9yZWxh
eUNvbm5lY3Rpb24pCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gdGFyZ2V0Q29ubmVjdGlv
biA9IG1fdGFyZ2V0Q29ubmVjdGlvbk1hcC5nZXQodGFyZ2V0SWRlbnRpZmllcik7CisgICAgaWYg
KCF0YXJnZXRDb25uZWN0aW9uKQorICAgICAgICByZXR1cm47CisKKyAgICBOU0RpY3Rpb25hcnkg
KnVzZXJJbmZvID0gQHsKKyAgICAgICAgV0lSUmF3RGF0YUtleTogW3N0YXRpY19jYXN0PE5TU3Ry
aW5nICo+KG1lc3NhZ2UpIGRhdGFVc2luZ0VuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXSwK
KyAgICAgICAgV0lSQ29ubmVjdGlvbklkZW50aWZpZXJLZXk6IHRhcmdldENvbm5lY3Rpb24tPmNv
bm5lY3Rpb25JZGVudGlmaWVyKCksCisgICAgICAgIFdJUkRlc3RpbmF0aW9uS2V5OiB0YXJnZXRD
b25uZWN0aW9uLT5kZXN0aW5hdGlvbigpCisgICAgfTsKKworICAgIG1fcmVsYXlDb25uZWN0aW9u
LT5zZW5kTWVzc2FnZShXSVJSYXdEYXRhTWVzc2FnZSwgdXNlckluZm8pOworfQorCit2b2lkIFJl
bW90ZUluc3BlY3Rvcjo6c3RhcnQoKQoreworICAgIHN0ZDo6bG9ja19ndWFyZDxMb2NrPiBsb2Nr
KG1fbXV0ZXgpOworCisgICAgaWYgKG1fZW5hYmxlZCkKKyAgICAgICAgcmV0dXJuOworCisgICAg
bV9lbmFibGVkID0gdHJ1ZTsKKworICAgIC8vIExvYWQgdGhlIGluaXRpYWwgYXV0b21hdGljIGlu
c3BlY3Rpb24gc3RhdGUgd2hlbiBmaXJzdCBzdGFydGVkLCBzbyB3ZSBrbm93IGl0IGJlZm9yZSB3
ZSBoYXZlIGV2ZW4gY29ubmVjdGVkIHRvIHdlYmluc3BlY3RvcmQuCisgICAgc3RhdGljIGRpc3Bh
dGNoX29uY2VfdCBvbmNlOworICAgIGRpc3BhdGNoX29uY2UoJm9uY2UsIF57CisgICAgICAgIG1f
YXV0b21hdGljSW5zcGVjdGlvbkVuYWJsZWQgPSBnbG9iYWxBdXRvbWF0aWNJbnNwZWN0aW9uU3Rh
dGUoKTsKKyAgICB9KTsKKworICAgIG5vdGlmeV9yZWdpc3Rlcl9kaXNwYXRjaChXSVJTZXJ2aWNl
QXZhaWxhYmxlTm90aWZpY2F0aW9uLCAmbV9ub3RpZnlUb2tlbiwgbV94cGNRdWV1ZSwgXihpbnQp
IHsKKyAgICAgICAgUmVtb3RlSW5zcGVjdG9yOjpzaW5nbGV0b24oKS5zZXR1cFhQQ0Nvbm5lY3Rp
b25JZk5lZWRlZCgpOworICAgIH0pOworCisgICAgbm90aWZ5X3Bvc3QoV0lSU2VydmljZUF2YWls
YWJpbGl0eUNoZWNrTm90aWZpY2F0aW9uKTsKK30KKwordm9pZCBSZW1vdGVJbnNwZWN0b3I6OnN0
b3BJbnRlcm5hbChTdG9wU291cmNlIHNvdXJjZSkKK3sKKyAgICBpZiAoIW1fZW5hYmxlZCkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgbV9lbmFibGVkID0gZmFsc2U7CisKKyAgICBtX3B1c2hTY2hl
ZHVsZWQgPSBmYWxzZTsKKworICAgIGZvciAoYXV0byB0YXJnZXRDb25uZWN0aW9uIDogbV90YXJn
ZXRDb25uZWN0aW9uTWFwLnZhbHVlcygpKQorICAgICAgICB0YXJnZXRDb25uZWN0aW9uLT5jbG9z
ZSgpOworICAgIG1fdGFyZ2V0Q29ubmVjdGlvbk1hcC5jbGVhcigpOworCisgICAgdXBkYXRlSGFz
QWN0aXZlRGVidWdTZXNzaW9uKCk7CisKKyAgICBtX2F1dG9tYXRpY0luc3BlY3Rpb25QYXVzZWQg
PSBmYWxzZTsKKworICAgIGlmIChtX3JlbGF5Q29ubmVjdGlvbikgeworICAgICAgICBzd2l0Y2gg
KHNvdXJjZSkgeworICAgICAgICBjYXNlIFN0b3BTb3VyY2U6OkFQSToKKyAgICAgICAgICAgIG1f
cmVsYXlDb25uZWN0aW9uLT5jbG9zZSgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNh
c2UgU3RvcFNvdXJjZTo6WFBDTWVzc2FnZToKKyAgICAgICAgICAgIG1fcmVsYXlDb25uZWN0aW9u
LT5jbG9zZUZyb21NZXNzYWdlKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisg
ICAgICAgIG1fcmVsYXlDb25uZWN0aW9uID0gbnVsbHB0cjsKKyAgICB9CisKKyAgICBub3RpZnlf
Y2FuY2VsKG1fbm90aWZ5VG9rZW4pOworfQorCit2b2lkIFJlbW90ZUluc3BlY3Rvcjo6c2V0dXBY
UENDb25uZWN0aW9uSWZOZWVkZWQoKQoreworICAgIHN0ZDo6bG9ja19ndWFyZDxMb2NrPiBsb2Nr
KG1fbXV0ZXgpOworCisgICAgaWYgKG1fcmVsYXlDb25uZWN0aW9uKQorICAgICAgICByZXR1cm47
CisKKyAgICB4cGNfY29ubmVjdGlvbl90IGNvbm5lY3Rpb24gPSB4cGNfY29ubmVjdGlvbl9jcmVh
dGVfbWFjaF9zZXJ2aWNlKFdJUlhQQ01hY2hQb3J0TmFtZSwgbV94cGNRdWV1ZSwgMCk7CisgICAg
aWYgKCFjb25uZWN0aW9uKQorICAgICAgICByZXR1cm47CisKKyAgICBtX3JlbGF5Q29ubmVjdGlv
biA9IGFkb3B0UmVmKG5ldyBSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uKGNvbm5lY3Rpb24s
IG1feHBjUXVldWUsIHRoaXMpKTsKKyAgICBtX3JlbGF5Q29ubmVjdGlvbi0+c2VuZE1lc3NhZ2Uo
QCJzeW4iLCBuaWwpOyAvLyBTZW5kIGEgc2ltcGxlIG1lc3NhZ2UgdG8gaW5pdGlhbGl6ZSB0aGUg
WFBDIGNvbm5lY3Rpb24uCisgICAgeHBjX3JlbGVhc2UoY29ubmVjdGlvbik7CisKKyAgICBpZiAo
bV9hdXRvbWF0aWNJbnNwZWN0aW9uQ2FuZGlkYXRlVGFyZ2V0SWRlbnRpZmllcikgeworICAgICAg
ICAvLyBXZSBhbHJlYWR5IGhhdmUgYSBkZWJ1Z2dhYmxlIHdhaXRpbmcgdG8gYmUgYXV0b21hdGlj
YWxseSBpbnNwZWN0ZWQuCisgICAgICAgIHB1c2hMaXN0aW5nc05vdygpOworICAgICAgICBzZW5k
QXV0b21hdGljSW5zcGVjdGlvbkNhbmRpZGF0ZU1lc3NhZ2UoKTsKKyAgICB9IGVsc2UKKyAgICAg
ICAgcHVzaExpc3RpbmdzU29vbigpOworfQorCisjcHJhZ21hIG1hcmsgLSBQcm94eSBBcHBsaWNh
dGlvbiBJbmZvcm1hdGlvbgorCit2b2lkIFJlbW90ZUluc3BlY3Rvcjo6c2V0UGFyZW50UHJvY2Vz
c0luZm9ybWF0aW9uKHBpZF90IHBpZCwgUmV0YWluUHRyPENGRGF0YVJlZj4gYXVkaXREYXRhKQor
eworICAgIHN0ZDo6bG9ja19ndWFyZDxMb2NrPiBsb2NrKG1fbXV0ZXgpOworCisgICAgaWYgKG1f
cGFyZW50UHJvY2Vzc0lkZW50aWZpZXIgfHwgbV9wYXJlbnRQcm9jZXNzQXVkaXREYXRhKQorICAg
ICAgICByZXR1cm47CisKKyAgICBtX3BhcmVudFByb2Nlc3NJZGVudGlmaWVyID0gcGlkOworICAg
IG1fcGFyZW50UHJvY2Vzc0F1ZGl0RGF0YSA9IGF1ZGl0RGF0YTsKKworICAgIGlmIChtX3Nob3Vs
ZFNlbmRQYXJlbnRQcm9jZXNzSW5mb3JtYXRpb24pCisgICAgICAgIHJlY2VpdmVkUHJveHlBcHBs
aWNhdGlvblNldHVwTWVzc2FnZShuaWwpOworfQorCisjcHJhZ21hIG1hcmsgLSBSZW1vdGVJbnNw
ZWN0b3JYUENDb25uZWN0aW9uOjpDbGllbnQKKwordm9pZCBSZW1vdGVJbnNwZWN0b3I6OnhwY0Nv
bm5lY3Rpb25SZWNlaXZlZE1lc3NhZ2UoUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbiosIE5T
U3RyaW5nICptZXNzYWdlTmFtZSwgTlNEaWN0aW9uYXJ5ICp1c2VySW5mbykKK3sKKyAgICBzdGQ6
OmxvY2tfZ3VhcmQ8TG9jaz4gbG9jayhtX211dGV4KTsKKworICAgIGlmIChbbWVzc2FnZU5hbWUg
aXNFcXVhbFRvU3RyaW5nOldJUlBlcm1pc3Npb25EZW5pZWRdKSB7CisgICAgICAgIHN0b3BJbnRl
cm5hbChTdG9wU291cmNlOjpYUENNZXNzYWdlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIGlmIChbbWVzc2FnZU5hbWUgaXNFcXVhbFRvU3RyaW5nOldJUlNvY2tldERhdGFNZXNzYWdl
XSkKKyAgICAgICAgcmVjZWl2ZWREYXRhTWVzc2FnZSh1c2VySW5mbyk7CisgICAgZWxzZSBpZiAo
W21lc3NhZ2VOYW1lIGlzRXF1YWxUb1N0cmluZzpXSVJTb2NrZXRTZXR1cE1lc3NhZ2VdKQorICAg
ICAgICByZWNlaXZlZFNldHVwTWVzc2FnZSh1c2VySW5mbyk7CisgICAgZWxzZSBpZiAoW21lc3Nh
Z2VOYW1lIGlzRXF1YWxUb1N0cmluZzpXSVJXZWJQYWdlQ2xvc2VNZXNzYWdlXSkKKyAgICAgICAg
cmVjZWl2ZWREaWRDbG9zZU1lc3NhZ2UodXNlckluZm8pOworICAgIGVsc2UgaWYgKFttZXNzYWdl
TmFtZSBpc0VxdWFsVG9TdHJpbmc6V0lSQXBwbGljYXRpb25HZXRMaXN0aW5nTWVzc2FnZV0pCisg
ICAgICAgIHJlY2VpdmVkR2V0TGlzdGluZ01lc3NhZ2UodXNlckluZm8pOworICAgIGVsc2UgaWYg
KFttZXNzYWdlTmFtZSBpc0VxdWFsVG9TdHJpbmc6V0lSSW5kaWNhdGVNZXNzYWdlXSkKKyAgICAg
ICAgcmVjZWl2ZWRJbmRpY2F0ZU1lc3NhZ2UodXNlckluZm8pOworICAgIGVsc2UgaWYgKFttZXNz
YWdlTmFtZSBpc0VxdWFsVG9TdHJpbmc6V0lSUHJveHlBcHBsaWNhdGlvblNldHVwTWVzc2FnZV0p
CisgICAgICAgIHJlY2VpdmVkUHJveHlBcHBsaWNhdGlvblNldHVwTWVzc2FnZSh1c2VySW5mbyk7
CisgICAgZWxzZSBpZiAoW21lc3NhZ2VOYW1lIGlzRXF1YWxUb1N0cmluZzpXSVJDb25uZWN0aW9u
RGllZE1lc3NhZ2VdKQorICAgICAgICByZWNlaXZlZENvbm5lY3Rpb25EaWVkTWVzc2FnZSh1c2Vy
SW5mbyk7CisgICAgZWxzZSBpZiAoW21lc3NhZ2VOYW1lIGlzRXF1YWxUb1N0cmluZzpXSVJBdXRv
bWF0aWNJbnNwZWN0aW9uQ29uZmlndXJhdGlvbk1lc3NhZ2VdKQorICAgICAgICByZWNlaXZlZEF1
dG9tYXRpY0luc3BlY3Rpb25Db25maWd1cmF0aW9uTWVzc2FnZSh1c2VySW5mbyk7CisgICAgZWxz
ZSBpZiAoW21lc3NhZ2VOYW1lIGlzRXF1YWxUb1N0cmluZzpXSVJBdXRvbWF0aWNJbnNwZWN0aW9u
UmVqZWN0TWVzc2FnZV0pCisgICAgICAgIHJlY2VpdmVkQXV0b21hdGljSW5zcGVjdGlvblJlamVj
dE1lc3NhZ2UodXNlckluZm8pOworICAgIGVsc2UgaWYgKFttZXNzYWdlTmFtZSBpc0VxdWFsVG9T
dHJpbmc6V0lSQXV0b21hdGlvblNlc3Npb25SZXF1ZXN0TWVzc2FnZV0pCisgICAgICAgIHJlY2Vp
dmVkQXV0b21hdGlvblNlc3Npb25SZXF1ZXN0TWVzc2FnZSh1c2VySW5mbyk7CisgICAgZWxzZQor
ICAgICAgICBOU0xvZyhAIlVucmVjb2duaXplZCBSZW1vdGVJbnNwZWN0b3IgWFBDIE1lc3NhZ2U6
ICVAIiwgbWVzc2FnZU5hbWUpOworfQorCit2b2lkIFJlbW90ZUluc3BlY3Rvcjo6eHBjQ29ubmVj
dGlvbkZhaWxlZChSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uKiByZWxheUNvbm5lY3Rpb24p
Cit7CisgICAgc3RkOjpsb2NrX2d1YXJkPExvY2s+IGxvY2sobV9tdXRleCk7CisKKyAgICBBU1NF
UlQocmVsYXlDb25uZWN0aW9uID09IG1fcmVsYXlDb25uZWN0aW9uKTsKKyAgICBpZiAocmVsYXlD
b25uZWN0aW9uICE9IG1fcmVsYXlDb25uZWN0aW9uKQorICAgICAgICByZXR1cm47CisKKyAgICBt
X3B1c2hTY2hlZHVsZWQgPSBmYWxzZTsKKworICAgIGZvciAoYXV0byB0YXJnZXRDb25uZWN0aW9u
IDogbV90YXJnZXRDb25uZWN0aW9uTWFwLnZhbHVlcygpKQorICAgICAgICB0YXJnZXRDb25uZWN0
aW9uLT5jbG9zZSgpOworICAgIG1fdGFyZ2V0Q29ubmVjdGlvbk1hcC5jbGVhcigpOworCisgICAg
dXBkYXRlSGFzQWN0aXZlRGVidWdTZXNzaW9uKCk7CisKKyAgICBtX2F1dG9tYXRpY0luc3BlY3Rp
b25QYXVzZWQgPSBmYWxzZTsKKworICAgIC8vIFRoZSBYUEMgY29ubmVjdGlvbiB3aWxsIGNsb3Nl
IGl0c2VsZi4KKyAgICBtX3JlbGF5Q29ubmVjdGlvbiA9IG51bGxwdHI7Cit9CisKK3ZvaWQgUmVt
b3RlSW5zcGVjdG9yOjp4cGNDb25uZWN0aW9uVW5oYW5kbGVkTWVzc2FnZShSZW1vdGVJbnNwZWN0
b3JYUENDb25uZWN0aW9uKiwgeHBjX29iamVjdF90KQoreworICAgIC8vIEludGVudGlvbmFsbHkg
aWdub3JlZC4KK30KKworI3ByYWdtYSBtYXJrIC0gTGlzdGluZ3MKKworUmV0YWluUHRyPE5TRGlj
dGlvbmFyeT4gUmVtb3RlSW5zcGVjdG9yOjpsaXN0aW5nRm9yVGFyZ2V0KGNvbnN0IFJlbW90ZUNv
bnRyb2xsYWJsZVRhcmdldCYgdGFyZ2V0KSBjb25zdAoreworICAgIGlmIChpczxSZW1vdGVJbnNw
ZWN0aW9uVGFyZ2V0Pih0YXJnZXQpKQorICAgICAgICByZXR1cm4gbGlzdGluZ0Zvckluc3BlY3Rp
b25UYXJnZXQoZG93bmNhc3Q8UmVtb3RlSW5zcGVjdGlvblRhcmdldD4odGFyZ2V0KSk7CisgICAg
aWYgKGlzPFJlbW90ZUF1dG9tYXRpb25UYXJnZXQ+KHRhcmdldCkpCisgICAgICAgIHJldHVybiBs
aXN0aW5nRm9yQXV0b21hdGlvblRhcmdldChkb3duY2FzdDxSZW1vdGVBdXRvbWF0aW9uVGFyZ2V0
Pih0YXJnZXQpKTsKKworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBuaWw7
Cit9CisKK1JldGFpblB0cjxOU0RpY3Rpb25hcnk+IFJlbW90ZUluc3BlY3Rvcjo6bGlzdGluZ0Zv
ckluc3BlY3Rpb25UYXJnZXQoY29uc3QgUmVtb3RlSW5zcGVjdGlvblRhcmdldCYgdGFyZ2V0KSBj
b25zdAoreworICAgIC8vIE11c3QgY29sbGVjdCB0YXJnZXQgaW5mb3JtYXRpb24gb24gdGhlIFdl
YlRocmVhZCwgTWFpbiwgb3IgV29ya2VyIHRocmVhZCBzaW5jZSBSZW1vdGVUYXJnZXRzIGFyZQor
ICAgIC8vIGltcGxlbWVudGVkIGJ5IG5vbi10aHJlYWRzYWZlIEpTQyAvIFdlYkNvcmUgY2xhc3Nl
cyBzdWNoIGFzIEpTR2xvYmFsT2JqZWN0IG9yIFdlYkNvcmU6OlBhZ2UuCisKKyAgICBpZiAoIXRh
cmdldC5yZW1vdGVEZWJ1Z2dpbmdBbGxvd2VkKCkpCisgICAgICAgIHJldHVybiBuaWw7CisKKyAg
ICBSZXRhaW5QdHI8TlNNdXRhYmxlRGljdGlvbmFyeT4gbGlzdGluZyA9IGFkb3B0TlMoW1tOU011
dGFibGVEaWN0aW9uYXJ5IGFsbG9jXSBpbml0XSk7CisgICAgW2xpc3Rpbmcgc2V0T2JqZWN0OkAo
dGFyZ2V0LnRhcmdldElkZW50aWZpZXIoKSkgZm9yS2V5OldJUlRhcmdldElkZW50aWZpZXJLZXld
OworCisgICAgc3dpdGNoICh0YXJnZXQudHlwZSgpKSB7CisgICAgY2FzZSBSZW1vdGVJbnNwZWN0
aW9uVGFyZ2V0OjpUeXBlOjpKYXZhU2NyaXB0OgorICAgICAgICBbbGlzdGluZyBzZXRPYmplY3Q6
dGFyZ2V0Lm5hbWUoKSBmb3JLZXk6V0lSVGl0bGVLZXldOworICAgICAgICBbbGlzdGluZyBzZXRP
YmplY3Q6V0lSVHlwZUphdmFTY3JpcHQgZm9yS2V5OldJUlR5cGVLZXldOworICAgICAgICBicmVh
azsKKyAgICBjYXNlIFJlbW90ZUluc3BlY3Rpb25UYXJnZXQ6OlR5cGU6OldlYjoKKyAgICAgICAg
W2xpc3Rpbmcgc2V0T2JqZWN0OnRhcmdldC51cmwoKSBmb3JLZXk6V0lSVVJMS2V5XTsKKyAgICAg
ICAgW2xpc3Rpbmcgc2V0T2JqZWN0OnRhcmdldC5uYW1lKCkgZm9yS2V5OldJUlRpdGxlS2V5XTsK
KyAgICAgICAgW2xpc3Rpbmcgc2V0T2JqZWN0OldJUlR5cGVXZWIgZm9yS2V5OldJUlR5cGVLZXld
OworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgaWYgKGF1dG8qIGNvbm5lY3Rpb25U
b1RhcmdldCA9IG1fdGFyZ2V0Q29ubmVjdGlvbk1hcC5nZXQodGFyZ2V0LnRhcmdldElkZW50aWZp
ZXIoKSkpCisgICAgICAgIFtsaXN0aW5nIHNldE9iamVjdDpjb25uZWN0aW9uVG9UYXJnZXQtPmNv
bm5lY3Rpb25JZGVudGlmaWVyKCkgZm9yS2V5OldJUkNvbm5lY3Rpb25JZGVudGlmaWVyS2V5XTsK
KworICAgIGlmICh0YXJnZXQuaGFzTG9jYWxEZWJ1Z2dlcigpKQorICAgICAgICBbbGlzdGluZyBz
ZXRPYmplY3Q6QFlFUyBmb3JLZXk6V0lSSGFzTG9jYWxEZWJ1Z2dlcktleV07CisKKyAgICByZXR1
cm4gbGlzdGluZzsKK30KKworUmV0YWluUHRyPE5TRGljdGlvbmFyeT4gUmVtb3RlSW5zcGVjdG9y
OjpsaXN0aW5nRm9yQXV0b21hdGlvblRhcmdldChjb25zdCBSZW1vdGVBdXRvbWF0aW9uVGFyZ2V0
JiB0YXJnZXQpIGNvbnN0Cit7CisgICAgLy8gTXVzdCBjb2xsZWN0IHRhcmdldCBpbmZvcm1hdGlv
biBvbiB0aGUgV2ViVGhyZWFkIG9yIE1haW4gdGhyZWFkIHNpbmNlIFJlbW90ZVRhcmdldHMgYXJl
CisgICAgLy8gaW1wbGVtZW50ZWQgYnkgbm9uLXRocmVhZHNhZmUgSlNDIC8gV2ViQ29yZSBjbGFz
c2VzIHN1Y2ggYXMgSlNHbG9iYWxPYmplY3Qgb3IgV2ViQ29yZTo6UGFnZS4KKyAgICBBU1NFUlQo
aXNNYWluVGhyZWFkKCkpOworCisgICAgUmV0YWluUHRyPE5TTXV0YWJsZURpY3Rpb25hcnk+IGxp
c3RpbmcgPSBhZG9wdE5TKFtbTlNNdXRhYmxlRGljdGlvbmFyeSBhbGxvY10gaW5pdF0pOworICAg
IFtsaXN0aW5nIHNldE9iamVjdDpAKHRhcmdldC50YXJnZXRJZGVudGlmaWVyKCkpIGZvcktleTpX
SVJUYXJnZXRJZGVudGlmaWVyS2V5XTsKKyAgICBbbGlzdGluZyBzZXRPYmplY3Q6dGFyZ2V0Lm5h
bWUoKSBmb3JLZXk6V0lSU2Vzc2lvbklkZW50aWZpZXJLZXldOworICAgIFtsaXN0aW5nIHNldE9i
amVjdDpXSVJUeXBlQXV0b21hdGlvbiBmb3JLZXk6V0lSVHlwZUtleV07CisgICAgW2xpc3Rpbmcg
c2V0T2JqZWN0OkAodGFyZ2V0LmlzUGFpcmVkKCkpIGZvcktleTpXSVJBdXRvbWF0aW9uVGFyZ2V0
SXNQYWlyZWRLZXldOworCisgICAgaWYgKGF1dG8gY29ubmVjdGlvblRvVGFyZ2V0ID0gbV90YXJn
ZXRDb25uZWN0aW9uTWFwLmdldCh0YXJnZXQudGFyZ2V0SWRlbnRpZmllcigpKSkKKyAgICAgICAg
W2xpc3Rpbmcgc2V0T2JqZWN0OmNvbm5lY3Rpb25Ub1RhcmdldC0+Y29ubmVjdGlvbklkZW50aWZp
ZXIoKSBmb3JLZXk6V0lSQ29ubmVjdGlvbklkZW50aWZpZXJLZXldOworCisgICAgcmV0dXJuIGxp
c3Rpbmc7Cit9CisKK3ZvaWQgUmVtb3RlSW5zcGVjdG9yOjpwdXNoTGlzdGluZ3NOb3coKQorewor
ICAgIEFTU0VSVChtX3JlbGF5Q29ubmVjdGlvbik7CisgICAgaWYgKCFtX3JlbGF5Q29ubmVjdGlv
bikKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9wdXNoU2NoZWR1bGVkID0gZmFsc2U7CisKKyAg
ICBSZXRhaW5QdHI8TlNNdXRhYmxlRGljdGlvbmFyeT4gbGlzdGluZ3MgPSBhZG9wdE5TKFtbTlNN
dXRhYmxlRGljdGlvbmFyeSBhbGxvY10gaW5pdF0pOworICAgIGZvciAoUmV0YWluUHRyPE5TRGlj
dGlvbmFyeT4gbGlzdGluZyA6IG1fdGFyZ2V0TGlzdGluZ01hcC52YWx1ZXMoKSkgeworICAgICAg
ICBOU1N0cmluZyAqdGFyZ2V0SWRlbnRpZmllclN0cmluZyA9IFtbbGlzdGluZy5nZXQoKSBvYmpl
Y3RGb3JLZXk6V0lSVGFyZ2V0SWRlbnRpZmllcktleV0gc3RyaW5nVmFsdWVdOworICAgICAgICBb
bGlzdGluZ3Mgc2V0T2JqZWN0Omxpc3RpbmcuZ2V0KCkgZm9yS2V5OnRhcmdldElkZW50aWZpZXJT
dHJpbmddOworICAgIH0KKworICAgIFJldGFpblB0cjxOU011dGFibGVEaWN0aW9uYXJ5PiBtZXNz
YWdlID0gYWRvcHROUyhbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRdKTsKKyAgICBb
bWVzc2FnZSBzZXRPYmplY3Q6bGlzdGluZ3MuZ2V0KCkgZm9yS2V5OldJUkxpc3RpbmdLZXldOwor
CisgICAgQk9PTCBpc0FsbG93ZWQgPSBtX2NsaWVudENhcGFiaWxpdGllcyAmJiBtX2NsaWVudENh
cGFiaWxpdGllcy0+cmVtb3RlQXV0b21hdGlvbkFsbG93ZWQ7CisgICAgW21lc3NhZ2Ugc2V0T2Jq
ZWN0OkAoaXNBbGxvd2VkKSBmb3JLZXk6V0lSUmVtb3RlQXV0b21hdGlvbkVuYWJsZWRLZXldOwor
CisgICAgbV9yZWxheUNvbm5lY3Rpb24tPnNlbmRNZXNzYWdlKFdJUkxpc3RpbmdNZXNzYWdlLCBt
ZXNzYWdlLmdldCgpKTsKK30KKwordm9pZCBSZW1vdGVJbnNwZWN0b3I6OnB1c2hMaXN0aW5nc1Nv
b24oKQoreworICAgIGlmICghbV9yZWxheUNvbm5lY3Rpb24pCisgICAgICAgIHJldHVybjsKKwor
ICAgIGlmIChtX3B1c2hTY2hlZHVsZWQpCisgICAgICAgIHJldHVybjsKKworICAgIG1fcHVzaFNj
aGVkdWxlZCA9IHRydWU7CisgICAgZGlzcGF0Y2hfYWZ0ZXIoZGlzcGF0Y2hfdGltZShESVNQQVRD
SF9USU1FX05PVywgMC4yICogTlNFQ19QRVJfU0VDKSwgZGlzcGF0Y2hfZ2V0X2dsb2JhbF9xdWV1
ZShESVNQQVRDSF9RVUVVRV9QUklPUklUWV9ERUZBVUxULCAwKSwgXnsKKyAgICAgICAgc3RkOjps
b2NrX2d1YXJkPExvY2s+IGxvY2sobV9tdXRleCk7CisgICAgICAgIGlmIChtX3B1c2hTY2hlZHVs
ZWQpCisgICAgICAgICAgICBwdXNoTGlzdGluZ3NOb3coKTsKKyAgICB9KTsKK30KKworI3ByYWdt
YSBtYXJrIC0gUmVjZWl2ZWQgWFBDIE1lc3NhZ2VzCisKK3ZvaWQgUmVtb3RlSW5zcGVjdG9yOjpy
ZWNlaXZlZFNldHVwTWVzc2FnZShOU0RpY3Rpb25hcnkgKnVzZXJJbmZvKQoreworICAgIHVuc2ln
bmVkIHRhcmdldElkZW50aWZpZXIgPSBbW3VzZXJJbmZvIG9iamVjdEZvcktleTpXSVJUYXJnZXRJ
ZGVudGlmaWVyS2V5XSB1bnNpZ25lZEludGVnZXJWYWx1ZV07CisgICAgaWYgKCF0YXJnZXRJZGVu
dGlmaWVyKQorICAgICAgICByZXR1cm47CisKKyAgICBOU1N0cmluZyAqY29ubmVjdGlvbklkZW50
aWZpZXIgPSBbdXNlckluZm8gb2JqZWN0Rm9yS2V5OldJUkNvbm5lY3Rpb25JZGVudGlmaWVyS2V5
XTsKKyAgICBpZiAoIWNvbm5lY3Rpb25JZGVudGlmaWVyKQorICAgICAgICByZXR1cm47CisKKyAg
ICBOU1N0cmluZyAqc2VuZGVyID0gW3VzZXJJbmZvIG9iamVjdEZvcktleTpXSVJTZW5kZXJLZXld
OworICAgIGlmICghc2VuZGVyKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAobV90YXJnZXRD
b25uZWN0aW9uTWFwLmNvbnRhaW5zKHRhcmdldElkZW50aWZpZXIpKQorICAgICAgICByZXR1cm47
CisKKyAgICBhdXRvIGZpbmRSZXN1bHQgPSBtX3RhcmdldE1hcC5maW5kKHRhcmdldElkZW50aWZp
ZXIpOworICAgIGlmIChmaW5kUmVzdWx0ID09IG1fdGFyZ2V0TWFwLmVuZCgpKQorICAgICAgICBy
ZXR1cm47CisKKyAgICAvLyBBdHRlbXB0IHRvIGNyZWF0ZSBhIGNvbm5lY3Rpb24uIFRoaXMgbWF5
IGZhaWwgaWYgdGhlIHBhZ2UgYWxyZWFkeSBoYXMgYW4gaW5zcGVjdG9yIG9yIGlmIGl0IGRpc2Fs
bG93cyBpbnNwZWN0aW9uLgorICAgIFJlbW90ZUNvbnRyb2xsYWJsZVRhcmdldCogdGFyZ2V0ID0g
ZmluZFJlc3VsdC0+dmFsdWU7CisgICAgYXV0byBjb25uZWN0aW9uVG9UYXJnZXQgPSBhZG9wdFJl
ZigqbmV3IFJlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldCh0YXJnZXQsIGNvbm5lY3Rpb25JZGVudGlm
aWVyLCBzZW5kZXIpKTsKKworICAgIGlmIChpczxSZW1vdGVJbnNwZWN0aW9uVGFyZ2V0Pih0YXJn
ZXQpKSB7CisgICAgICAgIGJvb2wgaXNBdXRvbWF0aWNJbnNwZWN0aW9uID0gbV9hdXRvbWF0aWNJ
bnNwZWN0aW9uQ2FuZGlkYXRlVGFyZ2V0SWRlbnRpZmllciA9PSB0YXJnZXQtPnRhcmdldElkZW50
aWZpZXIoKTsKKyAgICAgICAgYm9vbCBhdXRvbWF0aWNhbGx5UGF1c2UgPSBbW3VzZXJJbmZvIG9i
amVjdEZvcktleTpXSVJBdXRvbWF0aWNhbGx5UGF1c2VdIGJvb2xWYWx1ZV07CisKKyAgICAgICAg
aWYgKCFjb25uZWN0aW9uVG9UYXJnZXQtPnNldHVwKGlzQXV0b21hdGljSW5zcGVjdGlvbiwgYXV0
b21hdGljYWxseVBhdXNlKSkgeworICAgICAgICAgICAgY29ubmVjdGlvblRvVGFyZ2V0LT5jbG9z
ZSgpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIG1fdGFyZ2V0Q29u
bmVjdGlvbk1hcC5zZXQodGFyZ2V0SWRlbnRpZmllciwgV1RGTW92ZShjb25uZWN0aW9uVG9UYXJn
ZXQpKTsKKyAgICAgICAgdXBkYXRlSGFzQWN0aXZlRGVidWdTZXNzaW9uKCk7CisgICAgfSBlbHNl
IGlmIChpczxSZW1vdGVBdXRvbWF0aW9uVGFyZ2V0Pih0YXJnZXQpKSB7CisgICAgICAgIGlmICgh
Y29ubmVjdGlvblRvVGFyZ2V0LT5zZXR1cCgpKSB7CisgICAgICAgICAgICBjb25uZWN0aW9uVG9U
YXJnZXQtPmNsb3NlKCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAg
bV90YXJnZXRDb25uZWN0aW9uTWFwLnNldCh0YXJnZXRJZGVudGlmaWVyLCBXVEZNb3ZlKGNvbm5l
Y3Rpb25Ub1RhcmdldCkpOworICAgICAgICB1cGRhdGVIYXNBY3RpdmVEZWJ1Z1Nlc3Npb24oKTsK
KyAgICB9IGVsc2UKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisKKyAgICBwdXNoTGlz
dGluZ3NTb29uKCk7Cit9CisKK3ZvaWQgUmVtb3RlSW5zcGVjdG9yOjpyZWNlaXZlZERhdGFNZXNz
YWdlKE5TRGljdGlvbmFyeSAqdXNlckluZm8pCit7CisgICAgdW5zaWduZWQgdGFyZ2V0SWRlbnRp
ZmllciA9IFtbdXNlckluZm8gb2JqZWN0Rm9yS2V5OldJUlRhcmdldElkZW50aWZpZXJLZXldIHVu
c2lnbmVkSW50ZWdlclZhbHVlXTsKKyAgICBpZiAoIXRhcmdldElkZW50aWZpZXIpCisgICAgICAg
IHJldHVybjsKKworICAgIGF1dG8gY29ubmVjdGlvblRvVGFyZ2V0ID0gbV90YXJnZXRDb25uZWN0
aW9uTWFwLmdldCh0YXJnZXRJZGVudGlmaWVyKTsKKyAgICBpZiAoIWNvbm5lY3Rpb25Ub1Rhcmdl
dCkKKyAgICAgICAgcmV0dXJuOworCisgICAgTlNEYXRhICpkYXRhID0gW3VzZXJJbmZvIG9iamVj
dEZvcktleTpXSVJTb2NrZXREYXRhS2V5XTsKKyAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IG1lc3Nh
Z2UgPSBhZG9wdE5TKFtbTlNTdHJpbmcgYWxsb2NdIGluaXRXaXRoRGF0YTpkYXRhIGVuY29kaW5n
Ok5TVVRGOFN0cmluZ0VuY29kaW5nXSk7CisgICAgY29ubmVjdGlvblRvVGFyZ2V0LT5zZW5kTWVz
c2FnZVRvVGFyZ2V0KG1lc3NhZ2UuZ2V0KCkpOworfQorCit2b2lkIFJlbW90ZUluc3BlY3Rvcjo6
cmVjZWl2ZWREaWRDbG9zZU1lc3NhZ2UoTlNEaWN0aW9uYXJ5ICp1c2VySW5mbykKK3sKKyAgICB1
bnNpZ25lZCB0YXJnZXRJZGVudGlmaWVyID0gW1t1c2VySW5mbyBvYmplY3RGb3JLZXk6V0lSVGFy
Z2V0SWRlbnRpZmllcktleV0gdW5zaWduZWRJbnRlZ2VyVmFsdWVdOworICAgIGlmICghdGFyZ2V0
SWRlbnRpZmllcikKKyAgICAgICAgcmV0dXJuOworCisgICAgTlNTdHJpbmcgKmNvbm5lY3Rpb25J
ZGVudGlmaWVyID0gW3VzZXJJbmZvIG9iamVjdEZvcktleTpXSVJDb25uZWN0aW9uSWRlbnRpZmll
cktleV07CisgICAgaWYgKCFjb25uZWN0aW9uSWRlbnRpZmllcikKKyAgICAgICAgcmV0dXJuOwor
CisgICAgYXV0byBjb25uZWN0aW9uVG9UYXJnZXQgPSBtX3RhcmdldENvbm5lY3Rpb25NYXAuZ2V0
KHRhcmdldElkZW50aWZpZXIpOworICAgIGlmICghY29ubmVjdGlvblRvVGFyZ2V0KQorICAgICAg
ICByZXR1cm47CisKKyAgICBpZiAoIVtjb25uZWN0aW9uSWRlbnRpZmllciBpc0VxdWFsVG9TdHJp
bmc6Y29ubmVjdGlvblRvVGFyZ2V0LT5jb25uZWN0aW9uSWRlbnRpZmllcigpXSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgY29ubmVjdGlvblRvVGFyZ2V0LT5jbG9zZSgpOworICAgIG1fdGFyZ2V0
Q29ubmVjdGlvbk1hcC5yZW1vdmUodGFyZ2V0SWRlbnRpZmllcik7CisKKyAgICB1cGRhdGVIYXNB
Y3RpdmVEZWJ1Z1Nlc3Npb24oKTsKKworICAgIHB1c2hMaXN0aW5nc1Nvb24oKTsKK30KKwordm9p
ZCBSZW1vdGVJbnNwZWN0b3I6OnJlY2VpdmVkR2V0TGlzdGluZ01lc3NhZ2UoTlNEaWN0aW9uYXJ5
ICopCit7CisgICAgcHVzaExpc3RpbmdzTm93KCk7Cit9CisKK3ZvaWQgUmVtb3RlSW5zcGVjdG9y
OjpyZWNlaXZlZEluZGljYXRlTWVzc2FnZShOU0RpY3Rpb25hcnkgKnVzZXJJbmZvKQoreworICAg
IHVuc2lnbmVkIGlkZW50aWZpZXIgPSBbW3VzZXJJbmZvIG9iamVjdEZvcktleTpXSVJUYXJnZXRJ
ZGVudGlmaWVyS2V5XSB1bnNpZ25lZEludGVnZXJWYWx1ZV07CisgICAgaWYgKCFpZGVudGlmaWVy
KQorICAgICAgICByZXR1cm47CisKKyAgICBCT09MIGluZGljYXRlRW5hYmxlZCA9IFtbdXNlcklu
Zm8gb2JqZWN0Rm9yS2V5OldJUkluZGljYXRlRW5hYmxlZEtleV0gYm9vbFZhbHVlXTsKKworICAg
IGNhbGxPbldlYlRocmVhZE9yRGlzcGF0Y2hBc3luY09uTWFpblRocmVhZCheeworICAgICAgICBS
ZW1vdGVDb250cm9sbGFibGVUYXJnZXQqIHRhcmdldCA9IG51bGxwdHI7CisgICAgICAgIHsKKyAg
ICAgICAgICAgIHN0ZDo6bG9ja19ndWFyZDxMb2NrPiBsb2NrKG1fbXV0ZXgpOworCisgICAgICAg
ICAgICBhdXRvIGZpbmRSZXN1bHQgPSBtX3RhcmdldE1hcC5maW5kKGlkZW50aWZpZXIpOworICAg
ICAgICAgICAgaWYgKGZpbmRSZXN1bHQgPT0gbV90YXJnZXRNYXAuZW5kKCkpCisgICAgICAgICAg
ICAgICAgcmV0dXJuOworCisgICAgICAgICAgICB0YXJnZXQgPSBmaW5kUmVzdWx0LT52YWx1ZTsK
KyAgICAgICAgfQorICAgICAgICBpZiAoaXM8UmVtb3RlSW5zcGVjdGlvblRhcmdldD4odGFyZ2V0
KSkKKyAgICAgICAgICAgIGRvd25jYXN0PFJlbW90ZUluc3BlY3Rpb25UYXJnZXQ+KHRhcmdldCkt
PnNldEluZGljYXRpbmcoaW5kaWNhdGVFbmFibGVkKTsKKyAgICB9KTsKK30KKwordm9pZCBSZW1v
dGVJbnNwZWN0b3I6OnJlY2VpdmVkUHJveHlBcHBsaWNhdGlvblNldHVwTWVzc2FnZShOU0RpY3Rp
b25hcnkgKikKK3sKKyAgICBBU1NFUlQobV9yZWxheUNvbm5lY3Rpb24pOworICAgIGlmICghbV9y
ZWxheUNvbm5lY3Rpb24pCisgICAgICAgIHJldHVybjsKKworICAgIGlmICghbV9wYXJlbnRQcm9j
ZXNzSWRlbnRpZmllciB8fCAhbV9wYXJlbnRQcm9jZXNzQXVkaXREYXRhKSB7CisgICAgICAgIC8v
IFdlIGFyZSBhIHByb3h5IGFwcGxpY2F0aW9uIHdpdGhvdXQgcGFyZW50IHByb2Nlc3MgaW5mb3Jt
YXRpb24uCisgICAgICAgIC8vIFdhaXQgYSBiaXQgZm9yIHRoZSBpbmZvcm1hdGlvbiwgYnV0IGdp
dmUgdXAgYWZ0ZXIgYSBzZWNvbmQuCisgICAgICAgIG1fc2hvdWxkU2VuZFBhcmVudFByb2Nlc3NJ
bmZvcm1hdGlvbiA9IHRydWU7CisgICAgICAgIGRpc3BhdGNoX2FmdGVyKGRpc3BhdGNoX3RpbWUo
RElTUEFUQ0hfVElNRV9OT1csIDEgKiBOU0VDX1BFUl9TRUMpLCBkaXNwYXRjaF9nZXRfZ2xvYmFs
X3F1ZXVlKERJU1BBVENIX1FVRVVFX1BSSU9SSVRZX0RFRkFVTFQsIDApLCBeeworICAgICAgICAg
ICAgc3RkOjpsb2NrX2d1YXJkPExvY2s+IGxvY2sobV9tdXRleCk7CisgICAgICAgICAgICBpZiAo
bV9zaG91bGRTZW5kUGFyZW50UHJvY2Vzc0luZm9ybWF0aW9uKQorICAgICAgICAgICAgICAgIHN0
b3BJbnRlcm5hbChTdG9wU291cmNlOjpYUENNZXNzYWdlKTsKKyAgICAgICAgfSk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICBtX3Nob3VsZFNlbmRQYXJlbnRQcm9jZXNzSW5mb3JtYXRp
b24gPSBmYWxzZTsKKworICAgIG1fcmVsYXlDb25uZWN0aW9uLT5zZW5kTWVzc2FnZShXSVJQcm94
eUFwcGxpY2F0aW9uU2V0dXBSZXNwb25zZU1lc3NhZ2UsIEB7CisgICAgICAgIFdJUlByb3h5QXBw
bGljYXRpb25QYXJlbnRQSURLZXk6IEAobV9wYXJlbnRQcm9jZXNzSWRlbnRpZmllciksCisgICAg
ICAgIFdJUlByb3h5QXBwbGljYXRpb25QYXJlbnRBdWRpdERhdGFLZXk6IChOU0RhdGEgKiltX3Bh
cmVudFByb2Nlc3NBdWRpdERhdGEuZ2V0KCksCisgICAgfSk7Cit9CisKK3ZvaWQgUmVtb3RlSW5z
cGVjdG9yOjpyZWNlaXZlZENvbm5lY3Rpb25EaWVkTWVzc2FnZShOU0RpY3Rpb25hcnkgKnVzZXJJ
bmZvKQoreworICAgIE5TU3RyaW5nICpjb25uZWN0aW9uSWRlbnRpZmllciA9IFt1c2VySW5mbyBv
YmplY3RGb3JLZXk6V0lSQ29ubmVjdGlvbklkZW50aWZpZXJLZXldOworICAgIGlmICghY29ubmVj
dGlvbklkZW50aWZpZXIpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gaXQgPSBtX3Rhcmdl
dENvbm5lY3Rpb25NYXAuYmVnaW4oKTsKKyAgICBhdXRvIGVuZCA9IG1fdGFyZ2V0Q29ubmVjdGlv
bk1hcC5lbmQoKTsKKyAgICBmb3IgKDsgaXQgIT0gZW5kOyArK2l0KSB7CisgICAgICAgIGlmIChb
Y29ubmVjdGlvbklkZW50aWZpZXIgaXNFcXVhbFRvU3RyaW5nOml0LT52YWx1ZS0+Y29ubmVjdGlv
bklkZW50aWZpZXIoKV0pCisgICAgICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBpZiAoaXQg
PT0gZW5kKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIGNvbm5lY3Rpb24gPSBpdC0+dmFs
dWU7CisgICAgY29ubmVjdGlvbi0+Y2xvc2UoKTsKKyAgICBtX3RhcmdldENvbm5lY3Rpb25NYXAu
cmVtb3ZlKGl0KTsKKworICAgIHVwZGF0ZUhhc0FjdGl2ZURlYnVnU2Vzc2lvbigpOworfQorCit2
b2lkIFJlbW90ZUluc3BlY3Rvcjo6cmVjZWl2ZWRBdXRvbWF0aWNJbnNwZWN0aW9uQ29uZmlndXJh
dGlvbk1lc3NhZ2UoTlNEaWN0aW9uYXJ5ICp1c2VySW5mbykKK3sKKyAgICBtX2F1dG9tYXRpY0lu
c3BlY3Rpb25FbmFibGVkID0gW1t1c2VySW5mbyBvYmplY3RGb3JLZXk6V0lSQXV0b21hdGljSW5z
cGVjdGlvbkVuYWJsZWRLZXldIGJvb2xWYWx1ZV07CisKKyAgICBpZiAoIW1fYXV0b21hdGljSW5z
cGVjdGlvbkVuYWJsZWQgJiYgbV9hdXRvbWF0aWNJbnNwZWN0aW9uUGF1c2VkKQorICAgICAgICBt
X2F1dG9tYXRpY0luc3BlY3Rpb25QYXVzZWQgPSBmYWxzZTsKK30KKwordm9pZCBSZW1vdGVJbnNw
ZWN0b3I6OnJlY2VpdmVkQXV0b21hdGljSW5zcGVjdGlvblJlamVjdE1lc3NhZ2UoTlNEaWN0aW9u
YXJ5ICp1c2VySW5mbykKK3sKKyAgICB1bnNpZ25lZCByZWplY3Rpb25JZGVudGlmaWVyID0gW1t1
c2VySW5mbyBvYmplY3RGb3JLZXk6V0lSVGFyZ2V0SWRlbnRpZmllcktleV0gdW5zaWduZWRJbnRW
YWx1ZV07CisKKyAgICBBU1NFUlQocmVqZWN0aW9uSWRlbnRpZmllciA9PSBtX2F1dG9tYXRpY0lu
c3BlY3Rpb25DYW5kaWRhdGVUYXJnZXRJZGVudGlmaWVyKTsKKyAgICBpZiAocmVqZWN0aW9uSWRl
bnRpZmllciA9PSBtX2F1dG9tYXRpY0luc3BlY3Rpb25DYW5kaWRhdGVUYXJnZXRJZGVudGlmaWVy
KQorICAgICAgICBtX2F1dG9tYXRpY0luc3BlY3Rpb25QYXVzZWQgPSBmYWxzZTsKK30KKwordm9p
ZCBSZW1vdGVJbnNwZWN0b3I6OnJlY2VpdmVkQXV0b21hdGlvblNlc3Npb25SZXF1ZXN0TWVzc2Fn
ZShOU0RpY3Rpb25hcnkgKnVzZXJJbmZvKQoreworICAgIGlmICghbV9jbGllbnQpCisgICAgICAg
IHJldHVybjsKKworICAgIGlmICghbV9jbGllbnRDYXBhYmlsaXRpZXMgfHwgIW1fY2xpZW50Q2Fw
YWJpbGl0aWVzLT5yZW1vdGVBdXRvbWF0aW9uQWxsb3dlZCkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgTlNTdHJpbmcgKnN1Z2dlc3RlZFNlc3Npb25JZGVudGlmaWVyID0gW3VzZXJJbmZvIG9iamVj
dEZvcktleTpXSVJTZXNzaW9uSWRlbnRpZmllcktleV07CisgICAgaWYgKCFzdWdnZXN0ZWRTZXNz
aW9uSWRlbnRpZmllcikKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9jbGllbnQtPnJlcXVlc3RB
dXRvbWF0aW9uU2Vzc2lvbihzdWdnZXN0ZWRTZXNzaW9uSWRlbnRpZmllcik7Cit9CisKK30gLy8g
bmFtZXNwYWNlIEluc3BlY3RvcgorCisjZW5kaWYgLy8gRU5BQkxFKFJFTU9URV9JTlNQRUNUT1Ip
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1v
dGVJbnNwZWN0b3JYUENDb25uZWN0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL3JlbW90ZS9jb2NvYS9SZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uLmgKc2ltaWxhcml0
eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
cmVtb3RlL1JlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24uaApyZW5hbWUgdG8gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvY29jb2EvUmVtb3RlSW5zcGVjdG9yWFBDQ29u
bmVjdGlvbi5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Jl
bW90ZS9SZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uLm1tIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9yZW1vdGUvY29jb2EvUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbi5t
bQpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbi5tbQpyZW5hbWUg
dG8gU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvY29jb2EvUmVtb3RlSW5z
cGVjdG9yWFBDQ29ubmVjdGlvbi5tbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vz
cy5jcHAKaW5kZXggYzEyODAxODMwMzUuLjRkYTM0NzUyYTIxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKQEAgLTM3Nyw3ICszNzcsNyBAQCB2b2lkIFdlYlByb2Nl
c3M6OmluaXRpYWxpemVXZWJQcm9jZXNzKFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmJiBw
YXJhbWV0ZXJzKQogICAgIHNldEVuYWJsZWRTZXJ2aWNlcyhwYXJhbWV0ZXJzLmhhc0ltYWdlU2Vy
dmljZXMsIHBhcmFtZXRlcnMuaGFzU2VsZWN0aW9uU2VydmljZXMsIHBhcmFtZXRlcnMuaGFzUmlj
aENvbnRlbnRTZXJ2aWNlcyk7CiAjZW5kaWYKIAotI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9S
KQorI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKSAmJiBQTEFURk9STShDT0NPQSkKICAgICBh
dWRpdF90b2tlbl90IGF1ZGl0VG9rZW47CiAgICAgaWYgKHBhcmVudFByb2Nlc3NDb25uZWN0aW9u
KCktPmdldEF1ZGl0VG9rZW4oYXVkaXRUb2tlbikpIHsKICAgICAgICAgUmV0YWluUHRyPENGRGF0
YVJlZj4gYXVkaXREYXRhID0gYWRvcHRDRihDRkRhdGFDcmVhdGUobnVsbHB0ciwgKGNvbnN0IFVJ
bnQ4KikmYXVkaXRUb2tlbiwgc2l6ZW9mKGF1ZGl0VG9rZW4pKSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>298008</attachid>
            <date>2017-01-04 05:25:32 -0800</date>
            <delta_ts>2017-01-10 06:55:19 -0800</delta_ts>
            <desc>WIP patch</desc>
            <filename>wip-remote-inspector-refactor.diff</filename>
            <type>text/plain</type>
            <size>27807</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNSZW1vdGVJbnNwZWN0b3Iu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1JlbW90ZUluc3BlY3Rvci5jcHAKaW5k
ZXggZmFlYmM1ZGUzZTEuLjNiZTYxZDA5MjcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL0pTUmVtb3RlSW5zcGVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL0pTUmVtb3RlSW5zcGVjdG9yLmNwcApAQCAtNTAsOSArNTAsOSBAQCB2b2lkIEpTUmVt
b3RlSW5zcGVjdG9yU3RhcnQodm9pZCkKICNlbmRpZgogfQogCi12b2lkIEpTUmVtb3RlSW5zcGVj
dG9yU2V0UGFyZW50UHJvY2Vzc0luZm9ybWF0aW9uKHBpZF90IHBpZCwgY29uc3QgVUludDgqIGF1
ZGl0RGF0YSwgc2l6ZV90IGF1ZGl0TGVuZ3RoKQordm9pZCBKU1JlbW90ZUluc3BlY3RvclNldFBh
cmVudFByb2Nlc3NJbmZvcm1hdGlvbihwaWRfdCBwaWQsIGNvbnN0IHVpbnQ4X3QqIGF1ZGl0RGF0
YSwgc2l6ZV90IGF1ZGl0TGVuZ3RoKQogewotI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQor
I2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKSAmJiBQTEFURk9STShDT0NPQSkKICAgICBSZXRh
aW5QdHI8Q0ZEYXRhUmVmPiBhdWRpdERhdGFSZWYgPSBhZG9wdENGKENGRGF0YUNyZWF0ZShrQ0ZB
bGxvY2F0b3JEZWZhdWx0LCBhdWRpdERhdGEsIGF1ZGl0TGVuZ3RoKSk7CiAgICAgUmVtb3RlSW5z
cGVjdG9yOjpzaW5nbGV0b24oKS5zZXRQYXJlbnRQcm9jZXNzSW5mb3JtYXRpb24ocGlkLCBhdWRp
dERhdGFSZWYpOwogI2Vsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9QbGF0
Zm9ybU1hYy5jbWFrZSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9QbGF0Zm9ybU1hYy5jbWFrZQpp
bmRleCAyZTZiMTViOWM2ZS4uZDc0MDVhODZkMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9QbGF0Zm9ybU1hYy5jbWFrZQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvUGxh
dGZvcm1NYWMuY21ha2UKQEAgLTEwLDExICsxMCwxNCBAQCBsaXN0KEFQUEVORCBKYXZhU2NyaXB0
Q29yZV9TT1VSQ0VTCiAgICAgQVBJL09iakNDYWxsYmFja0Z1bmN0aW9uLm1tCiAKICAgICBpbnNw
ZWN0b3IvcmVtb3RlL1JlbW90ZUF1dG9tYXRpb25UYXJnZXQuY3BwCi0gICAgaW5zcGVjdG9yL3Jl
bW90ZS9SZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQubW0KICAgICBpbnNwZWN0b3IvcmVtb3RlL1Jl
bW90ZUNvbnRyb2xsYWJsZVRhcmdldC5jcHAKICAgICBpbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUlu
c3BlY3Rpb25UYXJnZXQuY3BwCi0gICAgaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3Iu
bW0KKyAgICBpbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3Rvci5jcHAKICAgICBpbnNwZWN0
b3IvcmVtb3RlL1JlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24ubW0KKworICAgIGluc3BlY3Rv
ci9yZW1vdGUvY29jb2EvUmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0Q29jb2EubW0KKyAgICBpbnNw
ZWN0b3IvcmVtb3RlL2NvY29hL1JlbW90ZUluc3BlY3RvckNvY29hLm1tCisgICAgaW5zcGVjdG9y
L3JlbW90ZS9jb2NvYS9SZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uLm1tCiApCiBhZGRfZGVm
aW5pdGlvbnMoLURTVEFUSUNBTExZX0xJTktFRF9XSVRIX1dURiAtRF9fU1REQ19XQU5UX0xJQl9F
WFQxX18pCiAKQEAgLTI2LDYgKzI5LDcgQEAgbGlzdChBUFBFTkQgSmF2YVNjcmlwdENvcmVfTElC
UkFSSUVTCiBsaXN0KEFQUEVORCBKYXZhU2NyaXB0Q29yZV9JTkNMVURFX0RJUkVDVE9SSUVTCiAg
ICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2Rpc2Fzc2VtYmxlci91ZGlzODYKICAgICAke0pBVkFT
Q1JJUFRDT1JFX0RJUn0vaWN1CisgICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2luc3BlY3Rvci9y
ZW1vdGUvY29jb2EKICkKIAogc2V0KENNQUtFX1NIQVJFRF9MSU5LRVJfRkxBR1MgJHtDTUFLRV9T
SEFSRURfTElOS0VSX0ZMQUdTfSAiLWNvbXBhdGliaWxpdHlfdmVyc2lvbiAxIC1jdXJyZW50X3Zl
cnNpb24gJHtXRUJLSVRfTUFDX1ZFUlNJT059IikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldC5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlQ29ubmVjdGlvblRvVGFy
Z2V0LmgKaW5kZXggZGJhMDYwMTc5OWEuLjg5YWE3YmM1ZTc3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVDb25u
ZWN0aW9uVG9UYXJnZXQuaApAQCAtMjcsNjcgKzI3LDgyIEBACiAKICNpZiBFTkFCTEUoUkVNT1RF
X0lOU1BFQ1RPUikKIAotI2ltcG9ydCAiSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsLmgiCi0jaW1w
b3J0ICJSZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQuaCIKLSNpbXBvcnQgIlJlbW90ZUluc3BlY3Rv
ci5oIgotI2ltcG9ydCA8bXV0ZXg+Ci0jaW1wb3J0IDx3dGYvQmxvY2tQdHIuaD4KLSNpbXBvcnQg
PHd0Zi9Mb2NrLmg+Ci0jaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+Ci0jaW1wb3J0IDx3dGYvVGhy
ZWFkU2FmZVJlZkNvdW50ZWQuaD4KKyNpbmNsdWRlICJJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwu
aCIKKyNpbmNsdWRlIDx3dGYvTG9jay5oPgorI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291
bnRlZC5oPgorCisjaWYgUExBVEZPUk0oQ09DT0EpCisjaW5jbHVkZSA8d3RmL0Jsb2NrUHRyLmg+
CisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogCiBPQkpDX0NMQVNTIE5TU3RyaW5nOworI2Vu
ZGlmCiAKIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCitjbGFzcyBSZW1vdGVDb250cm9sbGFibGVU
YXJnZXQ7CisKKyNpZiBQTEFURk9STShDT0NPQSkKIHR5cGVkZWYgVmVjdG9yPEJsb2NrUHRyPHZv
aWQgKCk+PiBSZW1vdGVUYXJnZXRRdWV1ZTsKKyNlbmRpZgogCiBjbGFzcyBSZW1vdGVDb25uZWN0
aW9uVG9UYXJnZXQgZmluYWwgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8UmVtb3RlQ29u
bmVjdGlvblRvVGFyZ2V0PiwgcHVibGljIEZyb250ZW5kQ2hhbm5lbCB7CiBwdWJsaWM6Ci0gICAg
UmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0KFJlbW90ZUNvbnRyb2xsYWJsZVRhcmdldCosIE5TU3Ry
aW5nICpjb25uZWN0aW9uSWRlbnRpZmllciwgTlNTdHJpbmcgKmRlc3RpbmF0aW9uKTsKKyNpZiBQ
TEFURk9STShDT0NPQSkKKyAgICBSZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQoUmVtb3RlQ29udHJv
bGxhYmxlVGFyZ2V0KiwgTlNTdHJpbmcqIGNvbm5lY3Rpb25JZGVudGlmaWVyLCBOU1N0cmluZyog
ZGVzdGluYXRpb24pOworI2VuZGlmCiAgICAgdmlydHVhbCB+UmVtb3RlQ29ubmVjdGlvblRvVGFy
Z2V0KCk7CiAKICAgICAvLyBNYWluIEFQSS4KICAgICBib29sIHNldHVwKGJvb2wgaXNBdXRvbWF0
aWNJbnNwZWN0aW9uID0gZmFsc2UsIGJvb2wgYXV0b21hdGljYWxseVBhdXNlID0gZmFsc2UpOwot
ICAgIHZvaWQgc2VuZE1lc3NhZ2VUb1RhcmdldChOU1N0cmluZyAqKTsKKyAgICB2b2lkIHNlbmRN
ZXNzYWdlVG9UYXJnZXQoY29uc3QgU3RyaW5nJik7CiAgICAgdm9pZCBjbG9zZSgpOwogICAgIHZv
aWQgdGFyZ2V0Q2xvc2VkKCk7CiAKICAgICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiB0YXJnZXRJ
ZGVudGlmaWVyKCkgY29uc3Q7CisjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgTlNTdHJpbmcgKmNv
bm5lY3Rpb25JZGVudGlmaWVyKCkgY29uc3Q7CiAgICAgTlNTdHJpbmcgKmRlc3RpbmF0aW9uKCkg
Y29uc3Q7CiAKICAgICBMb2NrJiBxdWV1ZU11dGV4KCkgeyByZXR1cm4gbV9xdWV1ZU11dGV4OyB9
CiAgICAgY29uc3QgUmVtb3RlVGFyZ2V0UXVldWUmIHF1ZXVlKCkgY29uc3QgeyByZXR1cm4gbV9x
dWV1ZTsgfQogICAgIHZvaWQgY2xlYXJRdWV1ZSgpIHsgbV9xdWV1ZS5jbGVhcigpOyB9CisjZW5k
aWYKIAogICAgIC8vIEZyb250ZW5kQ2hhbm5lbCBvdmVycmlkZXMuCiAgICAgQ29ubmVjdGlvblR5
cGUgY29ubmVjdGlvblR5cGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBDb25uZWN0aW9uVHlw
ZTo6UmVtb3RlOyB9CiAgICAgdm9pZCBzZW5kTWVzc2FnZVRvRnJvbnRlbmQoY29uc3QgU3RyaW5n
Jikgb3ZlcnJpZGU7CiAKIHByaXZhdGU6CisjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgdm9pZCBk
aXNwYXRjaEFzeW5jT25UYXJnZXQodm9pZCAoXmJsb2NrKSgpKTsKIAogICAgIHZvaWQgc2V0dXBS
dW5Mb29wKCk7CiAgICAgdm9pZCB0ZWFyZG93blJ1bkxvb3AoKTsKICAgICB2b2lkIHF1ZXVlVGFz
a09uUHJpdmF0ZVJ1bkxvb3Aodm9pZCAoXmJsb2NrKSgpKTsKKyNlbmRpZgogCiAgICAgLy8gVGhp
cyBjb25uZWN0aW9uIGZyb20gdGhlIFJlbW90ZUluc3BlY3RvciBzaW5nbGV0b24gdG8gdGhlIElu
c3BlY3Rpb25UYXJnZXQKICAgICAvLyBjYW4gYmUgdXNlZCBvbiBtdWx0aXBsZSB0aHJlYWRzLiBT
byBhbnkgYWNjZXNzIHRvIHRoZSB0YXJnZXQKICAgICAvLyBpdHNlbGYgbXVzdCB0YWtlIHRoaXMg
bXV0ZXggdG8gZW5zdXJlIG1fdGFyZ2V0IGlzIHZhbGlkLgogICAgIExvY2sgbV90YXJnZXRNdXRl
eDsKIAorI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIC8vIElmIGEgdGFyZ2V0IGhhcyBhIHNwZWNp
ZmljIHJ1biBsb29wIGl0IHdhbnRzIHRvIGV2YWx1YXRlIG9uCiAgICAgLy8gd2Ugc2V0dXAgb3Vy
IHJ1biBsb29wIHNvdXJjZXMgb24gdGhhdCBzcGVjaWZpYyBydW4gbG9vcC4KICAgICBSZXRhaW5Q
dHI8Q0ZSdW5Mb29wUmVmPiBtX3J1bkxvb3A7CiAgICAgUmV0YWluUHRyPENGUnVuTG9vcFNvdXJj
ZVJlZj4gbV9ydW5Mb29wU291cmNlOwogICAgIFJlbW90ZVRhcmdldFF1ZXVlIG1fcXVldWU7CiAg
ICAgTG9jayBtX3F1ZXVlTXV0ZXg7CisjZW5kaWYKIAogICAgIFJlbW90ZUNvbnRyb2xsYWJsZVRh
cmdldCogbV90YXJnZXQgeyBudWxscHRyIH07CisgICAgYm9vbCBtX2Nvbm5lY3RlZCB7IGZhbHNl
IH07CisKKyNpZiBQTEFURk9STShDT0NPQSkKICAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IG1fY29u
bmVjdGlvbklkZW50aWZpZXI7CiAgICAgUmV0YWluUHRyPE5TU3RyaW5nPiBtX2Rlc3RpbmF0aW9u
OwotICAgIGJvb2wgbV9jb25uZWN0ZWQgeyBmYWxzZSB9OworI2VuZGlmCiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBJbnNwZWN0b3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvcmVtb3RlL1JlbW90ZUNvbnRyb2xsYWJsZVRhcmdldC5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlQ29udHJvbGxhYmxlVGFyZ2V0LmgKaW5kZXgg
ZDY1ZmFlYWQ5NWQuLmFmYWUzNjlhZTFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVDb250cm9sbGFibGVUYXJnZXQuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVDb250cm9sbGFibGVUYXJn
ZXQuaApAQCAtMjcsMTAgKzI3LDEzIEBACiAKICNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikK
IAotI2luY2x1ZGUgPENvcmVGb3VuZGF0aW9uL0NGUnVuTG9vcC5oPgogI2luY2x1ZGUgPHd0Zi9U
eXBlQ2FzdHMuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAorI2lmIFVTRShD
RikKKyNpbmNsdWRlIDxDb3JlRm91bmRhdGlvbi9DRlJ1bkxvb3AuaD4KKyNlbmRpZgorCiBuYW1l
c3BhY2UgSW5zcGVjdG9yIHsKIAogY2xhc3MgRnJvbnRlbmRDaGFubmVsOwpAQCAtNTMsOCArNTYs
MTAgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCByZW1vdGVDb250cm9sQWxsb3dlZCgpIGNv
bnN0ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hNZXNzYWdlRnJvbVJlbW90ZShjb25z
dCBTdHJpbmcmIG1lc3NhZ2UpID0gMDsKIAorI2lmIFVTRShDRikKICAgICAvLyBUaGUgZGlzcGF0
Y2ggYmxvY2sgd2lsbCBiZSBzY2hlZHVsZWQgb24gYSBnbG9iYWwgcnVuIGxvb3AgaWYgbnVsbCBp
cyByZXR1cm5lZC4KICAgICB2aXJ0dWFsIENGUnVuTG9vcFJlZiB0YXJnZXRSdW5Mb29wKCkgeyBy
ZXR1cm4gbnVsbHB0cjsgfQorI2VuZGlmCiBwcml2YXRlOgogICAgIHVuc2lnbmVkIG1faWRlbnRp
ZmllciB7MH07CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9yZW1vdGUvUmVtb3RlSW5zcGVjdGlvblRhcmdldC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdGlvblRhcmdldC5oCmluZGV4IDM4NTJmY2Nk
ODMxLi40NTMyOWY2ZDYyZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdGlvblRhcmdldC5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3Rpb25UYXJnZXQuaApAQCAtNDEs
OCArNDEsMTAgQEAgcHVibGljOgogICAgIGJvb2wgcmVtb3RlRGVidWdnaW5nQWxsb3dlZCgpIGNv
bnN0IHsgcmV0dXJuIG1fYWxsb3dlZDsgfQogICAgIHZvaWQgc2V0UmVtb3RlRGVidWdnaW5nQWxs
b3dlZChib29sKTsKIAorI2lmIFVTRShDRikKICAgICBDRlJ1bkxvb3BSZWYgdGFyZ2V0UnVuTG9v
cCgpIG92ZXJyaWRlIHsgcmV0dXJuIG1fcnVuTG9vcC5nZXQoKTsgfQogICAgIHZvaWQgc2V0VGFy
Z2V0UnVuTG9vcChDRlJ1bkxvb3BSZWYgcnVuTG9vcCkgeyBtX3J1bkxvb3AgPSBydW5Mb29wOyB9
CisjZW5kaWYKIAogICAgIHZpcnR1YWwgU3RyaW5nIG5hbWUoKSBjb25zdCB7IHJldHVybiBTdHJp
bmcoKTsgfSAvLyBKYXZhU2NyaXB0IGFuZCBXZWIKICAgICB2aXJ0dWFsIFN0cmluZyB1cmwoKSBj
b25zdCB7IHJldHVybiBTdHJpbmcoKTsgfSAvLyBXZWIKQEAgLTU5LDcgKzYxLDkgQEAgcHVibGlj
OgogICAgIGJvb2wgcmVtb3RlQ29udHJvbEFsbG93ZWQoKSBjb25zdCBvdmVycmlkZTsKIHByaXZh
dGU6CiAgICAgYm9vbCBtX2FsbG93ZWQge2ZhbHNlfTsKKyNpZiBVU0UoQ0YpCiAgICAgUmV0YWlu
UHRyPENGUnVuTG9vcFJlZj4gbV9ydW5Mb29wOworI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBJbnNwZWN0b3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
cmVtb3RlL1JlbW90ZUluc3BlY3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3IuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwLi4xNTc3YmViYjdkMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3Rvci5jcHAKQEAgLTAsMCAr
MSwyMjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxNiBBcHBsZSBJbmMuIEFsbCBS
aWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJSZW1vdGVJbnNwZWN0b3IuaCIKKwor
I2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQorCisjaW5jbHVkZSAiUmVtb3RlQXV0b21hdGlv
blRhcmdldC5oIgorI2luY2x1ZGUgIlJlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldC5oIgorI2luY2x1
ZGUgIlJlbW90ZUluc3BlY3Rpb25UYXJnZXQuaCIKKyNpbmNsdWRlICJSZW1vdGVJbnNwZWN0b3JD
b25zdGFudHMuaCIKKyNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgorI2luY2x1ZGUgPHd0Zi90
ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgSW5zcGVjdG9yIHsKKworYm9vbCBSZW1vdGVJ
bnNwZWN0b3I6OnN0YXJ0RW5hYmxlZCA9IHRydWU7CisKK3ZvaWQgUmVtb3RlSW5zcGVjdG9yOjpz
dGFydERpc2FibGVkKCkKK3sKKyAgICBSZW1vdGVJbnNwZWN0b3I6OnN0YXJ0RW5hYmxlZCA9IGZh
bHNlOworfQorCit1bnNpZ25lZCBSZW1vdGVJbnNwZWN0b3I6Om5leHRBdmFpbGFibGVUYXJnZXRJ
ZGVudGlmaWVyKCkKK3sKKyAgICB1bnNpZ25lZCBuZXh0VmFsaWRUYXJnZXRJZGVudGlmaWVyOwor
ICAgIGRvIHsKKyAgICAgICAgbmV4dFZhbGlkVGFyZ2V0SWRlbnRpZmllciA9IG1fbmV4dEF2YWls
YWJsZVRhcmdldElkZW50aWZpZXIrKzsKKyAgICB9IHdoaWxlICghbmV4dFZhbGlkVGFyZ2V0SWRl
bnRpZmllciB8fCBuZXh0VmFsaWRUYXJnZXRJZGVudGlmaWVyID09IHN0ZDo6bnVtZXJpY19saW1p
dHM8dW5zaWduZWQ+OjptYXgoKSB8fCBtX3RhcmdldE1hcC5jb250YWlucyhuZXh0VmFsaWRUYXJn
ZXRJZGVudGlmaWVyKSk7CisgICAgcmV0dXJuIG5leHRWYWxpZFRhcmdldElkZW50aWZpZXI7Cit9
CisKK3ZvaWQgUmVtb3RlSW5zcGVjdG9yOjpyZWdpc3RlclRhcmdldChSZW1vdGVDb250cm9sbGFi
bGVUYXJnZXQqIHRhcmdldCkKK3sKKyAgICBBU1NFUlRfQVJHKHRhcmdldCwgdGFyZ2V0KTsKKwor
ICAgIHN0ZDo6bG9ja19ndWFyZDxMb2NrPiBsb2NrKG1fbXV0ZXgpOworCisgICAgdW5zaWduZWQg
dGFyZ2V0SWRlbnRpZmllciA9IG5leHRBdmFpbGFibGVUYXJnZXRJZGVudGlmaWVyKCk7CisgICAg
dGFyZ2V0LT5zZXRUYXJnZXRJZGVudGlmaWVyKHRhcmdldElkZW50aWZpZXIpOworCisgICAgewor
ICAgICAgICBhdXRvIHJlc3VsdCA9IG1fdGFyZ2V0TWFwLnNldCh0YXJnZXRJZGVudGlmaWVyLCB0
YXJnZXQpOworICAgICAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0LmlzTmV3RW50cnkp
OworICAgIH0KKworICAgIC8vIElmIHJlbW90ZSBjb250cm9sIGlzIG5vdCBhbGxvd2VkLCBhIG51
bGwgbGlzdGluZyBpcyByZXR1cm5lZC4KKyAgICBpZiAoYXV0byB0YXJnZXRMaXN0aW5nID0gbGlz
dGluZ0ZvclRhcmdldCgqdGFyZ2V0KSkgeworICAgICAgICBhdXRvIHJlc3VsdCA9IG1fdGFyZ2V0
TGlzdGluZ01hcC5zZXQodGFyZ2V0SWRlbnRpZmllciwgdGFyZ2V0TGlzdGluZyk7CisgICAgICAg
IEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQuaXNOZXdFbnRyeSk7CisgICAgfQorCisgICAg
cHVzaExpc3RpbmdzU29vbigpOworfQorCit2b2lkIFJlbW90ZUluc3BlY3Rvcjo6dW5yZWdpc3Rl
clRhcmdldChSZW1vdGVDb250cm9sbGFibGVUYXJnZXQqIHRhcmdldCkKK3sKKyAgICBBU1NFUlRf
QVJHKHRhcmdldCwgdGFyZ2V0KTsKKworICAgIHN0ZDo6bG9ja19ndWFyZDxMb2NrPiBsb2NrKG1f
bXV0ZXgpOworCisgICAgdW5zaWduZWQgdGFyZ2V0SWRlbnRpZmllciA9IHRhcmdldC0+dGFyZ2V0
SWRlbnRpZmllcigpOworICAgIGlmICghdGFyZ2V0SWRlbnRpZmllcikKKyAgICAgICAgcmV0dXJu
OworCisgICAgYm9vbCB3YXNSZW1vdmVkID0gbV90YXJnZXRNYXAucmVtb3ZlKHRhcmdldElkZW50
aWZpZXIpOworICAgIEFTU0VSVF9VTlVTRUQod2FzUmVtb3ZlZCwgd2FzUmVtb3ZlZCk7CisKKyAg
ICAvLyBUaGUgbGlzdGluZyBtYXkgbmV2ZXIgaGF2ZSBiZWVuIGFkZGVkIGlmIHJlbW90ZSBjb250
cm9sIGlzbid0IGFsbG93ZWQuCisgICAgbV90YXJnZXRMaXN0aW5nTWFwLnJlbW92ZSh0YXJnZXRJ
ZGVudGlmaWVyKTsKKworICAgIGlmIChhdXRvIGNvbm5lY3Rpb25Ub1RhcmdldCA9IG1fdGFyZ2V0
Q29ubmVjdGlvbk1hcC50YWtlKHRhcmdldElkZW50aWZpZXIpKQorICAgICAgICBjb25uZWN0aW9u
VG9UYXJnZXQtPnRhcmdldENsb3NlZCgpOworCisgICAgcHVzaExpc3RpbmdzU29vbigpOworfQor
Cit2b2lkIFJlbW90ZUluc3BlY3Rvcjo6dXBkYXRlVGFyZ2V0KFJlbW90ZUNvbnRyb2xsYWJsZVRh
cmdldCogdGFyZ2V0KQoreworICAgIEFTU0VSVF9BUkcodGFyZ2V0LCB0YXJnZXQpOworCisgICAg
c3RkOjpsb2NrX2d1YXJkPExvY2s+IGxvY2sobV9tdXRleCk7CisKKyAgICB1bnNpZ25lZCB0YXJn
ZXRJZGVudGlmaWVyID0gdGFyZ2V0LT50YXJnZXRJZGVudGlmaWVyKCk7CisgICAgaWYgKCF0YXJn
ZXRJZGVudGlmaWVyKQorICAgICAgICByZXR1cm47CisKKyAgICB7CisgICAgICAgIGF1dG8gcmVz
dWx0ID0gbV90YXJnZXRNYXAuc2V0KHRhcmdldElkZW50aWZpZXIsIHRhcmdldCk7CisgICAgICAg
IEFTU0VSVF9VTlVTRUQocmVzdWx0LCAhcmVzdWx0LmlzTmV3RW50cnkpOworICAgIH0KKworICAg
IC8vIElmIHRoZSB0YXJnZXQgaGFzIGp1c3QgYWxsb3dlZCByZW1vdGUgY29udHJvbCwgdGhlbiB0
aGUgbGlzdGluZyB3b24ndCBleGlzdCB5ZXQuCisgICAgLy8gSWYgdGhlIHRhcmdldCBoYXMgbm8g
aWRlbnRpZmllciByZW1vdmUgdGhlIG9sZCBsaXN0aW5nLgorICAgIGlmIChhdXRvIHRhcmdldExp
c3RpbmcgPSBsaXN0aW5nRm9yVGFyZ2V0KCp0YXJnZXQpKQorICAgICAgICBtX3RhcmdldExpc3Rp
bmdNYXAuc2V0KHRhcmdldElkZW50aWZpZXIsIHRhcmdldExpc3RpbmcpOworICAgIGVsc2UKKyAg
ICAgICAgbV90YXJnZXRMaXN0aW5nTWFwLnJlbW92ZSh0YXJnZXRJZGVudGlmaWVyKTsKKworICAg
IHB1c2hMaXN0aW5nc1Nvb24oKTsKK30KKwordm9pZCBSZW1vdGVJbnNwZWN0b3I6OnVwZGF0ZUNs
aWVudENhcGFiaWxpdGllcygpCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKworICAg
IHN0ZDo6bG9ja19ndWFyZDxMb2NrPiBsb2NrKG1fbXV0ZXgpOworCisgICAgaWYgKCFtX2NsaWVu
dCkKKyAgICAgICAgbV9jbGllbnRDYXBhYmlsaXRpZXMgPSBzdGQ6Om51bGxvcHQ7CisgICAgZWxz
ZSB7CisgICAgICAgIFJlbW90ZUluc3BlY3Rvcjo6Q2xpZW50OjpDYXBhYmlsaXRpZXMgdXBkYXRl
ZENhcGFiaWxpdGllcyA9IHsKKyAgICAgICAgICAgIG1fY2xpZW50LT5yZW1vdGVBdXRvbWF0aW9u
QWxsb3dlZCgpIC8vIHJlbW90ZUF1dG9tYXRpb25BbGxvd2VkCisgICAgICAgIH07CisKKyAgICAg
ICAgbV9jbGllbnRDYXBhYmlsaXRpZXMgPSB1cGRhdGVkQ2FwYWJpbGl0aWVzOworICAgIH0KK30K
Kwordm9pZCBSZW1vdGVJbnNwZWN0b3I6OnNldFJlbW90ZUluc3BlY3RvckNsaWVudChSZW1vdGVJ
bnNwZWN0b3I6OkNsaWVudCogY2xpZW50KQoreworICAgIEFTU0VSVF9BUkcoY2xpZW50LCBjbGll
bnQpOworICAgIEFTU0VSVCghbV9jbGllbnQpOworCisgICAgeworICAgICAgICBzdGQ6OmxvY2tf
Z3VhcmQ8TG9jaz4gbG9jayhtX211dGV4KTsKKyAgICAgICAgbV9jbGllbnQgPSBjbGllbnQ7Cisg
ICAgfQorCisgICAgLy8gU2VuZCBhbiB1cGRhdGVkIGxpc3RpbmcgdGhhdCBpbmNsdWRlcyB3aGV0
aGVyIHRoZSBjbGllbnQgYWxsb3dzIHJlbW90ZSBhdXRvbWF0aW9uLgorICAgIHVwZGF0ZUNsaWVu
dENhcGFiaWxpdGllcygpOworICAgIHB1c2hMaXN0aW5nc1Nvb24oKTsKK30KKwordm9pZCBSZW1v
dGVJbnNwZWN0b3I6OnNldHVwRmFpbGVkKHVuc2lnbmVkIHRhcmdldElkZW50aWZpZXIpCit7Cisg
ICAgc3RkOjpsb2NrX2d1YXJkPExvY2s+IGxvY2sobV9tdXRleCk7CisKKyAgICBtX3RhcmdldENv
bm5lY3Rpb25NYXAucmVtb3ZlKHRhcmdldElkZW50aWZpZXIpOworCisgICAgdXBkYXRlSGFzQWN0
aXZlRGVidWdTZXNzaW9uKCk7CisKKyAgICBpZiAodGFyZ2V0SWRlbnRpZmllciA9PSBtX2F1dG9t
YXRpY0luc3BlY3Rpb25DYW5kaWRhdGVUYXJnZXRJZGVudGlmaWVyKQorICAgICAgICBtX2F1dG9t
YXRpY0luc3BlY3Rpb25QYXVzZWQgPSBmYWxzZTsKKworICAgIHB1c2hMaXN0aW5nc1Nvb24oKTsK
K30KKwordm9pZCBSZW1vdGVJbnNwZWN0b3I6OnNldHVwQ29tcGxldGVkKHVuc2lnbmVkIHRhcmdl
dElkZW50aWZpZXIpCit7CisgICAgc3RkOjpsb2NrX2d1YXJkPExvY2s+IGxvY2sobV9tdXRleCk7
CisKKyAgICBpZiAodGFyZ2V0SWRlbnRpZmllciA9PSBtX2F1dG9tYXRpY0luc3BlY3Rpb25DYW5k
aWRhdGVUYXJnZXRJZGVudGlmaWVyKQorICAgICAgICBtX2F1dG9tYXRpY0luc3BlY3Rpb25QYXVz
ZWQgPSBmYWxzZTsKK30KKworYm9vbCBSZW1vdGVJbnNwZWN0b3I6OndhaXRpbmdGb3JBdXRvbWF0
aWNJbnNwZWN0aW9uKHVuc2lnbmVkKQoreworICAgIC8vIFdlIGRvbid0IHRha2UgdGhlIGxvY2sg
dG8gY2hlY2sgdGhpcyBiZWNhdXNlIHdlIGFzc3VtZSBpdCB3aWxsIGJlIGNoZWNrZWQgcmVwZWF0
ZWRseS4KKyAgICByZXR1cm4gbV9hdXRvbWF0aWNJbnNwZWN0aW9uUGF1c2VkOworfQorCit2b2lk
IFJlbW90ZUluc3BlY3Rvcjo6Y2xpZW50Q2FwYWJpbGl0aWVzRGlkQ2hhbmdlKCkKK3sKKyAgICB1
cGRhdGVDbGllbnRDYXBhYmlsaXRpZXMoKTsKKyAgICBwdXNoTGlzdGluZ3NTb29uKCk7Cit9CisK
K3ZvaWQgUmVtb3RlSW5zcGVjdG9yOjpzdG9wKCkKK3sKKyAgICBzdGQ6OmxvY2tfZ3VhcmQ8TG9j
az4gbG9jayhtX211dGV4KTsKKworICAgIHN0b3BJbnRlcm5hbChTdG9wU291cmNlOjpBUEkpOwor
fQorCitUYXJnZXRMaXN0aW5nIFJlbW90ZUluc3BlY3Rvcjo6bGlzdGluZ0ZvclRhcmdldChjb25z
dCBSZW1vdGVDb250cm9sbGFibGVUYXJnZXQmIHRhcmdldCkgY29uc3QKK3sKKyAgICBpZiAoaXM8
UmVtb3RlSW5zcGVjdGlvblRhcmdldD4odGFyZ2V0KSkKKyAgICAgICAgcmV0dXJuIGxpc3RpbmdG
b3JJbnNwZWN0aW9uVGFyZ2V0KGRvd25jYXN0PFJlbW90ZUluc3BlY3Rpb25UYXJnZXQ+KHRhcmdl
dCkpOworICAgIGlmIChpczxSZW1vdGVBdXRvbWF0aW9uVGFyZ2V0Pih0YXJnZXQpKQorICAgICAg
ICByZXR1cm4gbGlzdGluZ0ZvckF1dG9tYXRpb25UYXJnZXQoZG93bmNhc3Q8UmVtb3RlQXV0b21h
dGlvblRhcmdldD4odGFyZ2V0KSk7CisKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBy
ZXR1cm4gbnVsbHB0cjsKK30KKwordm9pZCBSZW1vdGVJbnNwZWN0b3I6OnVwZGF0ZUhhc0FjdGl2
ZURlYnVnU2Vzc2lvbigpCit7CisgICAgYm9vbCBoYXNBY3RpdmVEZWJ1Z2dlclNlc3Npb24gPSAh
bV90YXJnZXRDb25uZWN0aW9uTWFwLmlzRW1wdHkoKTsKKyAgICBpZiAoaGFzQWN0aXZlRGVidWdn
ZXJTZXNzaW9uID09IG1faGFzQWN0aXZlRGVidWdTZXNzaW9uKQorICAgICAgICByZXR1cm47CisK
KyAgICBtX2hhc0FjdGl2ZURlYnVnU2Vzc2lvbiA9IGhhc0FjdGl2ZURlYnVnZ2VyU2Vzc2lvbjsK
KworICAgIC8vIEZJWE1FOiBFeHBvc2Ugc29tZSB3YXkgdG8gYWNjZXNzIHRoaXMgc3RhdGUgaW4g
YW4gZW1iZWRkZXIuCisgICAgLy8gTGVnYWN5IGlPUyBXZWJLaXQgMSBoYWQgYSBub3RpZmljYXRp
b24uIFRoaXMgd2lsbCBuZWVkIHRvIGJlIHNtYXJ0ZXIgd2l0aCBXZWJLaXQyLgorfQorCit9IC8v
IG5hbWVzcGFjZSBJbnNwZWN0b3IKKworI2VuZGlmIC8vIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9S
KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVt
b3RlSW5zcGVjdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9S
ZW1vdGVJbnNwZWN0b3IuaAppbmRleCA5M2ZkMWE3ZDdjMC4uMjFhN2UxM2YxMTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3Rv
ci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUlu
c3BlY3Rvci5oCkBAIC0yNywxNCArMjcsMTggQEAKIAogI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVD
VE9SKQogCi0jaW1wb3J0ICJSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uLmgiCi0jaW1wb3J0
IDx3dGYvRm9yd2FyZC5oPgotI2ltcG9ydCA8d3RmL0hhc2hNYXAuaD4KLSNpbXBvcnQgPHd0Zi9M
b2NrLmg+Ci0jaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CisjaW5jbHVkZSA8d3RmL0ZvcndhcmQu
aD4KKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CisKKyNp
ZiBQTEFURk9STShDT0NPQSkKKyNpbmNsdWRlICJSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9u
LmgiCisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogCiBPQkpDX0NMQVNTIE5TRGljdGlvbmFy
eTsKIE9CSkNfQ0xBU1MgTlNTdHJpbmc7Cit0eXBlZGVmIFJldGFpblB0cjxOU0RpY3Rpb25hcnk+
IFRhcmdldExpc3Rpbmc7CisjZW5kaWYKIAogbmFtZXNwYWNlIEluc3BlY3RvciB7CiAKQEAgLTQ0
LDcgKzQ4LDExIEBAIGNsYXNzIFJlbW90ZUNvbnRyb2xsYWJsZVRhcmdldDsKIGNsYXNzIFJlbW90
ZUluc3BlY3Rpb25UYXJnZXQ7CiBjbGFzcyBSZW1vdGVJbnNwZWN0b3JDbGllbnQ7CiAKLWNsYXNz
IEpTX0VYUE9SVF9QUklWQVRFIFJlbW90ZUluc3BlY3RvciBmaW5hbCA6IHB1YmxpYyBSZW1vdGVJ
bnNwZWN0b3JYUENDb25uZWN0aW9uOjpDbGllbnQgeworY2xhc3MgSlNfRVhQT1JUX1BSSVZBVEUg
UmVtb3RlSW5zcGVjdG9yIGZpbmFsCisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgOiBwdWJsaWMg
UmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbjo6Q2xpZW50CisjZW5kaWYKK3sKIHB1YmxpYzoK
ICAgICBjbGFzcyBDbGllbnQgewogICAgIHB1YmxpYzoKQEAgLTgwLDExICs4OCwxMyBAQCBwdWJs
aWM6CiAgICAgdm9pZCBzdGFydCgpOwogICAgIHZvaWQgc3RvcCgpOwogCisjaWYgUExBVEZPUk0o
Q09DT0EpCiAgICAgYm9vbCBoYXNQYXJlbnRQcm9jZXNzSW5mb3JtYXRpb24oKSBjb25zdCB7IHJl
dHVybiBtX3BhcmVudFByb2Nlc3NJZGVudGlmaWVyICE9IDA7IH0KICAgICBwaWRfdCBwYXJlbnRQ
cm9jZXNzSWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fcGFyZW50UHJvY2Vzc0lkZW50aWZp
ZXI7IH0KICAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBwYXJlbnRQcm9jZXNzQXVkaXREYXRhKCkg
Y29uc3QgeyByZXR1cm4gbV9wYXJlbnRQcm9jZXNzQXVkaXREYXRhOyB9CiAgICAgdm9pZCBzZXRQ
YXJlbnRQcm9jZXNzSW5mb3JtYXRpb24ocGlkX3QsIFJldGFpblB0cjxDRkRhdGFSZWY+IGF1ZGl0
RGF0YSk7CiAgICAgdm9pZCBzZXRQYXJlbnRQcm9jZXNzSW5mb21hdGlvbklzRGVsYXllZCgpOwor
I2VuZGlmCiAKIHByaXZhdGU6CiAgICAgUmVtb3RlSW5zcGVjdG9yKCk7CkBAIC05NCwxMSArMTA0
LDE0IEBAIHByaXZhdGU6CiAgICAgZW51bSBjbGFzcyBTdG9wU291cmNlIHsgQVBJLCBYUENNZXNz
YWdlIH07CiAgICAgdm9pZCBzdG9wSW50ZXJuYWwoU3RvcFNvdXJjZSk7CiAKKyNpZiBQTEFURk9S
TShDT0NPQSkKICAgICB2b2lkIHNldHVwWFBDQ29ubmVjdGlvbklmTmVlZGVkKCk7CisjZW5kaWYK
KworICAgIFRhcmdldExpc3RpbmcgbGlzdGluZ0ZvclRhcmdldChjb25zdCBSZW1vdGVDb250cm9s
bGFibGVUYXJnZXQmKSBjb25zdDsKKyAgICBUYXJnZXRMaXN0aW5nIGxpc3RpbmdGb3JJbnNwZWN0
aW9uVGFyZ2V0KGNvbnN0IFJlbW90ZUluc3BlY3Rpb25UYXJnZXQmKSBjb25zdDsKKyAgICBUYXJn
ZXRMaXN0aW5nIGxpc3RpbmdGb3JBdXRvbWF0aW9uVGFyZ2V0KGNvbnN0IFJlbW90ZUF1dG9tYXRp
b25UYXJnZXQmKSBjb25zdDsKIAotICAgIFJldGFpblB0cjxOU0RpY3Rpb25hcnk+IGxpc3RpbmdG
b3JUYXJnZXQoY29uc3QgUmVtb3RlQ29udHJvbGxhYmxlVGFyZ2V0JikgY29uc3Q7Ci0gICAgUmV0
YWluUHRyPE5TRGljdGlvbmFyeT4gbGlzdGluZ0Zvckluc3BlY3Rpb25UYXJnZXQoY29uc3QgUmVt
b3RlSW5zcGVjdGlvblRhcmdldCYpIGNvbnN0OwotICAgIFJldGFpblB0cjxOU0RpY3Rpb25hcnk+
IGxpc3RpbmdGb3JBdXRvbWF0aW9uVGFyZ2V0KGNvbnN0IFJlbW90ZUF1dG9tYXRpb25UYXJnZXQm
KSBjb25zdDsKICAgICB2b2lkIHB1c2hMaXN0aW5nc05vdygpOwogICAgIHZvaWQgcHVzaExpc3Rp
bmdzU29vbigpOwogCkBAIC0xMDcsNiArMTIwLDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgc2Vu
ZEF1dG9tYXRpY0luc3BlY3Rpb25DYW5kaWRhdGVNZXNzYWdlKCk7CiAKKyNpZiBQTEFURk9STShD
T0NPQSkKICAgICB2b2lkIHhwY0Nvbm5lY3Rpb25SZWNlaXZlZE1lc3NhZ2UoUmVtb3RlSW5zcGVj
dG9yWFBDQ29ubmVjdGlvbiosIE5TU3RyaW5nICptZXNzYWdlTmFtZSwgTlNEaWN0aW9uYXJ5ICp1
c2VySW5mbykgb3ZlcnJpZGU7CiAgICAgdm9pZCB4cGNDb25uZWN0aW9uRmFpbGVkKFJlbW90ZUlu
c3BlY3RvclhQQ0Nvbm5lY3Rpb24qKSBvdmVycmlkZTsKICAgICB2b2lkIHhwY0Nvbm5lY3Rpb25V
bmhhbmRsZWRNZXNzYWdlKFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24qLCB4cGNfb2JqZWN0
X3QpIG92ZXJyaWRlOwpAQCAtMTIxLDYgKzEzNSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCByZWNl
aXZlZEF1dG9tYXRpY0luc3BlY3Rpb25Db25maWd1cmF0aW9uTWVzc2FnZShOU0RpY3Rpb25hcnkg
KnVzZXJJbmZvKTsKICAgICB2b2lkIHJlY2VpdmVkQXV0b21hdGljSW5zcGVjdGlvblJlamVjdE1l
c3NhZ2UoTlNEaWN0aW9uYXJ5ICp1c2VySW5mbyk7CiAgICAgdm9pZCByZWNlaXZlZEF1dG9tYXRp
b25TZXNzaW9uUmVxdWVzdE1lc3NhZ2UoTlNEaWN0aW9uYXJ5ICp1c2VySW5mbyk7CisjZW5kaWYK
IAogICAgIHN0YXRpYyBib29sIHN0YXJ0RW5hYmxlZDsKIApAQCAtMTMxLDE1ICsxNDYsMTkgQEAg
cHJpdmF0ZToKICAgICBMb2NrIG1fbXV0ZXg7CiAKICAgICBIYXNoTWFwPHVuc2lnbmVkLCBSZW1v
dGVDb250cm9sbGFibGVUYXJnZXQqPiBtX3RhcmdldE1hcDsKLSAgICBIYXNoTWFwPHVuc2lnbmVk
LCBSZXRhaW5QdHI8TlNEaWN0aW9uYXJ5Pj4gbV90YXJnZXRMaXN0aW5nTWFwOwogICAgIEhhc2hN
YXA8dW5zaWduZWQsIFJlZlB0cjxSZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQ+PiBtX3RhcmdldENv
bm5lY3Rpb25NYXA7CisgICAgSGFzaE1hcDx1bnNpZ25lZCwgVGFyZ2V0TGlzdGluZz4gbV90YXJn
ZXRMaXN0aW5nTWFwOwogCisjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgUmVmUHRyPFJlbW90ZUlu
c3BlY3RvclhQQ0Nvbm5lY3Rpb24+IG1fcmVsYXlDb25uZWN0aW9uOworI2VuZGlmCiAKICAgICBS
ZW1vdGVJbnNwZWN0b3I6OkNsaWVudCogbV9jbGllbnQgeyBudWxscHRyIH07CiAgICAgc3RkOjpv
cHRpb25hbDxSZW1vdGVJbnNwZWN0b3I6OkNsaWVudDo6Q2FwYWJpbGl0aWVzPiBtX2NsaWVudENh
cGFiaWxpdGllczsKIAorI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIGRpc3BhdGNoX3F1ZXVlX3Qg
bV94cGNRdWV1ZTsKKyNlbmRpZgogICAgIHVuc2lnbmVkIG1fbmV4dEF2YWlsYWJsZVRhcmdldElk
ZW50aWZpZXIgeyAxIH07CiAgICAgaW50IG1fbm90aWZ5VG9rZW4geyAwIH07CiAgICAgYm9vbCBt
X2VuYWJsZWQgeyBmYWxzZSB9OwpAQCAtMTQ3LDcgKzE2Niw5IEBAIHByaXZhdGU6CiAgICAgYm9v
bCBtX3B1c2hTY2hlZHVsZWQgeyBmYWxzZSB9OwogCiAgICAgcGlkX3QgbV9wYXJlbnRQcm9jZXNz
SWRlbnRpZmllciB7IDAgfTsKKyNpZiBQTEFURk9STShDT0NPQSkKICAgICBSZXRhaW5QdHI8Q0ZE
YXRhUmVmPiBtX3BhcmVudFByb2Nlc3NBdWRpdERhdGE7CisjZW5kaWYKICAgICBib29sIG1fc2hv
dWxkU2VuZFBhcmVudFByb2Nlc3NJbmZvcm1hdGlvbiB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2F1
dG9tYXRpY0luc3BlY3Rpb25FbmFibGVkIHsgZmFsc2UgfTsKICAgICBib29sIG1fYXV0b21hdGlj
SW5zcGVjdGlvblBhdXNlZCB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQubW0gYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9jb2NvYS9SZW1vdGVDb25uZWN0aW9u
VG9UYXJnZXRDb2NvYS5tbQpzaW1pbGFyaXR5IGluZGV4IDk5JQpyZW5hbWUgZnJvbSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQu
bW0KcmVuYW1lIHRvIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL2NvY29h
L1JlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldENvY29hLm1tCmluZGV4IGQ2MGRhNDhhZmE4Li5lYmE0
NjlkYWIxMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1v
dGUvUmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0Lm1tCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvcmVtb3RlL2NvY29hL1JlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldENvY29hLm1t
CkBAIC0zMSw2ICszMSw3IEBACiAjaW1wb3J0ICJFdmVudExvb3AuaCIKICNpbXBvcnQgIlJlbW90
ZUF1dG9tYXRpb25UYXJnZXQuaCIKICNpbXBvcnQgIlJlbW90ZUluc3BlY3Rpb25UYXJnZXQuaCIK
KyNpbXBvcnQgIlJlbW90ZUluc3BlY3Rvci5oIgogI2ltcG9ydCA8ZGlzcGF0Y2gvZGlzcGF0Y2gu
aD4KICNpbXBvcnQgPHd0Zi9PcHRpb25hbC5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3IubW0gYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9jb2NvYS9SZW1vdGVJbnNwZWN0b3JDb2NvYS5t
bQpzaW1pbGFyaXR5IGluZGV4IDgzJQpyZW5hbWUgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3IubW0KcmVuYW1lIHRvIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL2NvY29hL1JlbW90ZUluc3BlY3RvckNvY29hLm1t
CmluZGV4IDIxY2IyMzJkOGM0Li5iZWY1YmJhZTU5ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yLm1tCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL2NvY29hL1JlbW90ZUluc3BlY3RvckNv
Y29hLm1tCkBAIC02MSwxMyArNjEsNiBAQCBzdGF0aWMgYm9vbCBnbG9iYWxBdXRvbWF0aWNJbnNw
ZWN0aW9uU3RhdGUoKQogICAgIHJldHVybiBhdXRvbWF0aWNJbnNwZWN0aW9uRW5hYmxlZCA9PSAx
OwogfQogCi1ib29sIFJlbW90ZUluc3BlY3Rvcjo6c3RhcnRFbmFibGVkID0gdHJ1ZTsKLQotdm9p
ZCBSZW1vdGVJbnNwZWN0b3I6OnN0YXJ0RGlzYWJsZWQoKQotewotICAgIFJlbW90ZUluc3BlY3Rv
cjo6c3RhcnRFbmFibGVkID0gZmFsc2U7Ci19Ci0KIFJlbW90ZUluc3BlY3RvciYgUmVtb3RlSW5z
cGVjdG9yOjpzaW5nbGV0b24oKQogewogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZW1vdGVJ
bnNwZWN0b3I+IHNoYXJlZDsKQEAgLTEwMSw4NSArOTQsNiBAQCBSZW1vdGVJbnNwZWN0b3I6OlJl
bW90ZUluc3BlY3RvcigpCiB7CiB9CiAKLXVuc2lnbmVkIFJlbW90ZUluc3BlY3Rvcjo6bmV4dEF2
YWlsYWJsZVRhcmdldElkZW50aWZpZXIoKQotewotICAgIHVuc2lnbmVkIG5leHRWYWxpZFRhcmdl
dElkZW50aWZpZXI7Ci0gICAgZG8gewotICAgICAgICBuZXh0VmFsaWRUYXJnZXRJZGVudGlmaWVy
ID0gbV9uZXh0QXZhaWxhYmxlVGFyZ2V0SWRlbnRpZmllcisrOwotICAgIH0gd2hpbGUgKCFuZXh0
VmFsaWRUYXJnZXRJZGVudGlmaWVyIHx8IG5leHRWYWxpZFRhcmdldElkZW50aWZpZXIgPT0gc3Rk
OjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpIHx8IG1fdGFyZ2V0TWFwLmNvbnRhaW5z
KG5leHRWYWxpZFRhcmdldElkZW50aWZpZXIpKTsKLSAgICByZXR1cm4gbmV4dFZhbGlkVGFyZ2V0
SWRlbnRpZmllcjsKLX0KLQotdm9pZCBSZW1vdGVJbnNwZWN0b3I6OnJlZ2lzdGVyVGFyZ2V0KFJl
bW90ZUNvbnRyb2xsYWJsZVRhcmdldCogdGFyZ2V0KQotewotICAgIEFTU0VSVF9BUkcodGFyZ2V0
LCB0YXJnZXQpOwotCi0gICAgc3RkOjpsb2NrX2d1YXJkPExvY2s+IGxvY2sobV9tdXRleCk7Ci0K
LSAgICB1bnNpZ25lZCB0YXJnZXRJZGVudGlmaWVyID0gbmV4dEF2YWlsYWJsZVRhcmdldElkZW50
aWZpZXIoKTsKLSAgICB0YXJnZXQtPnNldFRhcmdldElkZW50aWZpZXIodGFyZ2V0SWRlbnRpZmll
cik7Ci0KLSAgICB7Ci0gICAgICAgIGF1dG8gcmVzdWx0ID0gbV90YXJnZXRNYXAuc2V0KHRhcmdl
dElkZW50aWZpZXIsIHRhcmdldCk7Ci0gICAgICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1
bHQuaXNOZXdFbnRyeSk7Ci0gICAgfQotCi0gICAgLy8gSWYgcmVtb3RlIGNvbnRyb2wgaXMgbm90
IGFsbG93ZWQsIGEgbnVsbCBsaXN0aW5nIGlzIHJldHVybmVkLgotICAgIGlmIChSZXRhaW5QdHI8
TlNEaWN0aW9uYXJ5PiB0YXJnZXRMaXN0aW5nID0gbGlzdGluZ0ZvclRhcmdldCgqdGFyZ2V0KSkg
ewotICAgICAgICBhdXRvIHJlc3VsdCA9IG1fdGFyZ2V0TGlzdGluZ01hcC5zZXQodGFyZ2V0SWRl
bnRpZmllciwgdGFyZ2V0TGlzdGluZyk7Ci0gICAgICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCBy
ZXN1bHQuaXNOZXdFbnRyeSk7Ci0gICAgfQotCi0gICAgcHVzaExpc3RpbmdzU29vbigpOwotfQot
Ci12b2lkIFJlbW90ZUluc3BlY3Rvcjo6dW5yZWdpc3RlclRhcmdldChSZW1vdGVDb250cm9sbGFi
bGVUYXJnZXQqIHRhcmdldCkKLXsKLSAgICBBU1NFUlRfQVJHKHRhcmdldCwgdGFyZ2V0KTsKLQot
ICAgIHN0ZDo6bG9ja19ndWFyZDxMb2NrPiBsb2NrKG1fbXV0ZXgpOwotCi0gICAgdW5zaWduZWQg
dGFyZ2V0SWRlbnRpZmllciA9IHRhcmdldC0+dGFyZ2V0SWRlbnRpZmllcigpOwotICAgIGlmICgh
dGFyZ2V0SWRlbnRpZmllcikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgYm9vbCB3YXNSZW1vdmVk
ID0gbV90YXJnZXRNYXAucmVtb3ZlKHRhcmdldElkZW50aWZpZXIpOwotICAgIEFTU0VSVF9VTlVT
RUQod2FzUmVtb3ZlZCwgd2FzUmVtb3ZlZCk7Ci0KLSAgICAvLyBUaGUgbGlzdGluZyBtYXkgbmV2
ZXIgaGF2ZSBiZWVuIGFkZGVkIGlmIHJlbW90ZSBjb250cm9sIGlzbid0IGFsbG93ZWQuCi0gICAg
bV90YXJnZXRMaXN0aW5nTWFwLnJlbW92ZSh0YXJnZXRJZGVudGlmaWVyKTsKLQotICAgIGlmIChh
dXRvIGNvbm5lY3Rpb25Ub1RhcmdldCA9IG1fdGFyZ2V0Q29ubmVjdGlvbk1hcC50YWtlKHRhcmdl
dElkZW50aWZpZXIpKQotICAgICAgICBjb25uZWN0aW9uVG9UYXJnZXQtPnRhcmdldENsb3NlZCgp
OwotCi0gICAgcHVzaExpc3RpbmdzU29vbigpOwotfQotCi12b2lkIFJlbW90ZUluc3BlY3Rvcjo6
dXBkYXRlVGFyZ2V0KFJlbW90ZUNvbnRyb2xsYWJsZVRhcmdldCogdGFyZ2V0KQotewotICAgIEFT
U0VSVF9BUkcodGFyZ2V0LCB0YXJnZXQpOwotCi0gICAgc3RkOjpsb2NrX2d1YXJkPExvY2s+IGxv
Y2sobV9tdXRleCk7Ci0KLSAgICB1bnNpZ25lZCB0YXJnZXRJZGVudGlmaWVyID0gdGFyZ2V0LT50
YXJnZXRJZGVudGlmaWVyKCk7Ci0gICAgaWYgKCF0YXJnZXRJZGVudGlmaWVyKQotICAgICAgICBy
ZXR1cm47Ci0KLSAgICB7Ci0gICAgICAgIGF1dG8gcmVzdWx0ID0gbV90YXJnZXRNYXAuc2V0KHRh
cmdldElkZW50aWZpZXIsIHRhcmdldCk7Ci0gICAgICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCAh
cmVzdWx0LmlzTmV3RW50cnkpOwotICAgIH0KLQotICAgIC8vIElmIHRoZSB0YXJnZXQgaGFzIGp1
c3QgYWxsb3dlZCByZW1vdGUgY29udHJvbCwgdGhlbiB0aGUgbGlzdGluZyB3b24ndCBleGlzdCB5
ZXQuCi0gICAgLy8gSWYgdGhlIHRhcmdldCBoYXMgbm8gaWRlbnRpZmllciByZW1vdmUgdGhlIG9s
ZCBsaXN0aW5nLgotICAgIGlmIChSZXRhaW5QdHI8TlNEaWN0aW9uYXJ5PiB0YXJnZXRMaXN0aW5n
ID0gbGlzdGluZ0ZvclRhcmdldCgqdGFyZ2V0KSkKLSAgICAgICAgbV90YXJnZXRMaXN0aW5nTWFw
LnNldCh0YXJnZXRJZGVudGlmaWVyLCB0YXJnZXRMaXN0aW5nKTsKLSAgICBlbHNlCi0gICAgICAg
IG1fdGFyZ2V0TGlzdGluZ01hcC5yZW1vdmUodGFyZ2V0SWRlbnRpZmllcik7Ci0KLSAgICBwdXNo
TGlzdGluZ3NTb29uKCk7Ci19Ci0KIHZvaWQgUmVtb3RlSW5zcGVjdG9yOjp1cGRhdGVBdXRvbWF0
aWNJbnNwZWN0aW9uQ2FuZGlkYXRlKFJlbW90ZUluc3BlY3Rpb25UYXJnZXQqIHRhcmdldCkKIHsK
ICAgICBBU1NFUlRfQVJHKHRhcmdldCwgdGFyZ2V0KTsKQEAgLTI0OSwzOCArMTYzLDYgQEAgdm9p
ZCBSZW1vdGVJbnNwZWN0b3I6OnVwZGF0ZUF1dG9tYXRpY0luc3BlY3Rpb25DYW5kaWRhdGUoUmVt
b3RlSW5zcGVjdGlvblRhcmdldCoKICAgICB9CiB9CiAKLXZvaWQgUmVtb3RlSW5zcGVjdG9yOjp1
cGRhdGVDbGllbnRDYXBhYmlsaXRpZXMoKQotewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7
Ci0KLSAgICBzdGQ6OmxvY2tfZ3VhcmQ8TG9jaz4gbG9jayhtX211dGV4KTsKLQotICAgIGlmICgh
bV9jbGllbnQpCi0gICAgICAgIG1fY2xpZW50Q2FwYWJpbGl0aWVzID0gc3RkOjpudWxsb3B0Owot
ICAgIGVsc2UgewotICAgICAgICBSZW1vdGVJbnNwZWN0b3I6OkNsaWVudDo6Q2FwYWJpbGl0aWVz
IHVwZGF0ZWRDYXBhYmlsaXRpZXMgPSB7Ci0gICAgICAgICAgICBtX2NsaWVudC0+cmVtb3RlQXV0
b21hdGlvbkFsbG93ZWQoKSAvLyByZW1vdGVBdXRvbWF0aW9uQWxsb3dlZAotICAgICAgICB9Owot
Ci0gICAgICAgIG1fY2xpZW50Q2FwYWJpbGl0aWVzID0gdXBkYXRlZENhcGFiaWxpdGllczsKLSAg
ICB9Ci19Ci0KLXZvaWQgUmVtb3RlSW5zcGVjdG9yOjpzZXRSZW1vdGVJbnNwZWN0b3JDbGllbnQo
UmVtb3RlSW5zcGVjdG9yOjpDbGllbnQqIGNsaWVudCkKLXsKLSAgICBBU1NFUlRfQVJHKGNsaWVu
dCwgY2xpZW50KTsKLSAgICBBU1NFUlQoIW1fY2xpZW50KTsKLQotICAgIHsKLSAgICAgICAgc3Rk
Ojpsb2NrX2d1YXJkPExvY2s+IGxvY2sobV9tdXRleCk7Ci0gICAgICAgIG1fY2xpZW50ID0gY2xp
ZW50OwotICAgIH0KLQotICAgIC8vIFNlbmQgYW4gdXBkYXRlZCBsaXN0aW5nIHRoYXQgaW5jbHVk
ZXMgd2hldGhlciB0aGUgY2xpZW50IGFsbG93cyByZW1vdGUgYXV0b21hdGlvbi4KLSAgICB1cGRh
dGVDbGllbnRDYXBhYmlsaXRpZXMoKTsKLSAgICBwdXNoTGlzdGluZ3NTb29uKCk7Ci19Ci0KIHZv
aWQgUmVtb3RlSW5zcGVjdG9yOjpzZW5kQXV0b21hdGljSW5zcGVjdGlvbkNhbmRpZGF0ZU1lc3Nh
Z2UoKQogewogICAgIEFTU0VSVChtX2VuYWJsZWQpOwpAQCAtMzEzLDQwICsxOTUsNiBAQCB2b2lk
IFJlbW90ZUluc3BlY3Rvcjo6c2VuZE1lc3NhZ2VUb1JlbW90ZSh1bnNpZ25lZCB0YXJnZXRJZGVu
dGlmaWVyLCBjb25zdCBTdHJpbgogICAgIG1fcmVsYXlDb25uZWN0aW9uLT5zZW5kTWVzc2FnZShX
SVJSYXdEYXRhTWVzc2FnZSwgdXNlckluZm8pOwogfQogCi12b2lkIFJlbW90ZUluc3BlY3Rvcjo6
c2V0dXBGYWlsZWQodW5zaWduZWQgdGFyZ2V0SWRlbnRpZmllcikKLXsKLSAgICBzdGQ6OmxvY2tf
Z3VhcmQ8TG9jaz4gbG9jayhtX211dGV4KTsKLQotICAgIG1fdGFyZ2V0Q29ubmVjdGlvbk1hcC5y
ZW1vdmUodGFyZ2V0SWRlbnRpZmllcik7Ci0KLSAgICB1cGRhdGVIYXNBY3RpdmVEZWJ1Z1Nlc3Np
b24oKTsKLQotICAgIGlmICh0YXJnZXRJZGVudGlmaWVyID09IG1fYXV0b21hdGljSW5zcGVjdGlv
bkNhbmRpZGF0ZVRhcmdldElkZW50aWZpZXIpCi0gICAgICAgIG1fYXV0b21hdGljSW5zcGVjdGlv
blBhdXNlZCA9IGZhbHNlOwotCi0gICAgcHVzaExpc3RpbmdzU29vbigpOwotfQotCi12b2lkIFJl
bW90ZUluc3BlY3Rvcjo6c2V0dXBDb21wbGV0ZWQodW5zaWduZWQgdGFyZ2V0SWRlbnRpZmllcikK
LXsKLSAgICBzdGQ6OmxvY2tfZ3VhcmQ8TG9jaz4gbG9jayhtX211dGV4KTsKLQotICAgIGlmICh0
YXJnZXRJZGVudGlmaWVyID09IG1fYXV0b21hdGljSW5zcGVjdGlvbkNhbmRpZGF0ZVRhcmdldElk
ZW50aWZpZXIpCi0gICAgICAgIG1fYXV0b21hdGljSW5zcGVjdGlvblBhdXNlZCA9IGZhbHNlOwot
fQotCi1ib29sIFJlbW90ZUluc3BlY3Rvcjo6d2FpdGluZ0ZvckF1dG9tYXRpY0luc3BlY3Rpb24o
dW5zaWduZWQpCi17Ci0gICAgLy8gV2UgZG9uJ3QgdGFrZSB0aGUgbG9jayB0byBjaGVjayB0aGlz
IGJlY2F1c2Ugd2UgYXNzdW1lIGl0IHdpbGwgYmUgY2hlY2tlZCByZXBlYXRlZGx5LgotICAgIHJl
dHVybiBtX2F1dG9tYXRpY0luc3BlY3Rpb25QYXVzZWQ7Ci19Ci0KLXZvaWQgUmVtb3RlSW5zcGVj
dG9yOjpjbGllbnRDYXBhYmlsaXRpZXNEaWRDaGFuZ2UoKQotewotICAgIHVwZGF0ZUNsaWVudENh
cGFiaWxpdGllcygpOwotICAgIHB1c2hMaXN0aW5nc1Nvb24oKTsKLX0KLQogdm9pZCBSZW1vdGVJ
bnNwZWN0b3I6OnN0YXJ0KCkKIHsKICAgICBzdGQ6OmxvY2tfZ3VhcmQ8TG9jaz4gbG9jayhtX211
dGV4KTsKQEAgLTM2OSwxMyArMjE3LDYgQEAgdm9pZCBSZW1vdGVJbnNwZWN0b3I6OnN0YXJ0KCkK
ICAgICBub3RpZnlfcG9zdChXSVJTZXJ2aWNlQXZhaWxhYmlsaXR5Q2hlY2tOb3RpZmljYXRpb24p
OwogfQogCi12b2lkIFJlbW90ZUluc3BlY3Rvcjo6c3RvcCgpCi17Ci0gICAgc3RkOjpsb2NrX2d1
YXJkPExvY2s+IGxvY2sobV9tdXRleCk7Ci0KLSAgICBzdG9wSW50ZXJuYWwoU3RvcFNvdXJjZTo6
QVBJKTsKLX0KLQogdm9pZCBSZW1vdGVJbnNwZWN0b3I6OnN0b3BJbnRlcm5hbChTdG9wU291cmNl
IHNvdXJjZSkKIHsKICAgICBpZiAoIW1fZW5hYmxlZCkKQEAgLTYxNSwyMSArNDU2LDYgQEAgdm9p
ZCBSZW1vdGVJbnNwZWN0b3I6OnB1c2hMaXN0aW5nc1Nvb24oKQogICAgIH0pOwogfQogCi0jcHJh
Z21hIG1hcmsgLSBBY3RpdmUgRGVidWdnZXIgU2Vzc2lvbnMKLQotdm9pZCBSZW1vdGVJbnNwZWN0
b3I6OnVwZGF0ZUhhc0FjdGl2ZURlYnVnU2Vzc2lvbigpCi17Ci0gICAgYm9vbCBoYXNBY3RpdmVE
ZWJ1Z2dlclNlc3Npb24gPSAhbV90YXJnZXRDb25uZWN0aW9uTWFwLmlzRW1wdHkoKTsKLSAgICBp
ZiAoaGFzQWN0aXZlRGVidWdnZXJTZXNzaW9uID09IG1faGFzQWN0aXZlRGVidWdTZXNzaW9uKQot
ICAgICAgICByZXR1cm47Ci0KLSAgICBtX2hhc0FjdGl2ZURlYnVnU2Vzc2lvbiA9IGhhc0FjdGl2
ZURlYnVnZ2VyU2Vzc2lvbjsKLQotICAgIC8vIEZJWE1FOiBFeHBvc2Ugc29tZSB3YXkgdG8gYWNj
ZXNzIHRoaXMgc3RhdGUgaW4gYW4gZW1iZWRkZXIuCi0gICAgLy8gTGVnYWN5IGlPUyBXZWJLaXQg
MSBoYWQgYSBub3RpZmljYXRpb24uIFRoaXMgd2lsbCBuZWVkIHRvIGJlIHNtYXJ0ZXIgd2l0aCBX
ZWJLaXQyLgotfQotCi0KICNwcmFnbWEgbWFyayAtIFJlY2VpdmVkIFhQQyBNZXNzYWdlcwogCiB2
b2lkIFJlbW90ZUluc3BlY3Rvcjo6cmVjZWl2ZWRTZXR1cE1lc3NhZ2UoTlNEaWN0aW9uYXJ5ICp1
c2VySW5mbykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVt
b3RlL1JlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvcmVtb3RlL2NvY29hL1JlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24uaApz
aW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbi5oCnJlbmFtZSB0byBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9jb2NvYS9SZW1vdGVJbnNwZWN0
b3JYUENDb25uZWN0aW9uLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24ubW0gYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9jb2NvYS9SZW1vdGVJbnNwZWN0b3JYUENDb25u
ZWN0aW9uLm1tCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uLm1t
CnJlbmFtZSB0byBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9jb2NvYS9S
ZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uLm1tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQcm9jZXNzLmNwcAppbmRleCBjMTI4MDE4MzAzNS4uNGRhMzQ3NTJhMjEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcApAQCAtMzc3LDcgKzM3Nyw3IEBAIHZvaWQg
V2ViUHJvY2Vzczo6aW5pdGlhbGl6ZVdlYlByb2Nlc3MoV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1l
dGVycyYmIHBhcmFtZXRlcnMpCiAgICAgc2V0RW5hYmxlZFNlcnZpY2VzKHBhcmFtZXRlcnMuaGFz
SW1hZ2VTZXJ2aWNlcywgcGFyYW1ldGVycy5oYXNTZWxlY3Rpb25TZXJ2aWNlcywgcGFyYW1ldGVy
cy5oYXNSaWNoQ29udGVudFNlcnZpY2VzKTsKICNlbmRpZgogCi0jaWYgRU5BQkxFKFJFTU9URV9J
TlNQRUNUT1IpCisjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpICYmIFBMQVRGT1JNKENPQ09B
KQogICAgIGF1ZGl0X3Rva2VuX3QgYXVkaXRUb2tlbjsKICAgICBpZiAocGFyZW50UHJvY2Vzc0Nv
bm5lY3Rpb24oKS0+Z2V0QXVkaXRUb2tlbihhdWRpdFRva2VuKSkgewogICAgICAgICBSZXRhaW5Q
dHI8Q0ZEYXRhUmVmPiBhdWRpdERhdGEgPSBhZG9wdENGKENGRGF0YUNyZWF0ZShudWxscHRyLCAo
Y29uc3QgVUludDgqKSZhdWRpdFRva2VuLCBzaXplb2YoYXVkaXRUb2tlbikpKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>298462</attachid>
            <date>2017-01-10 06:55:19 -0800</date>
            <delta_ts>2017-01-10 08:47:14 -0800</delta_ts>
            <desc>WIP: trying xcode changes</desc>
            <filename>wk-inspector-patch.diff</filename>
            <type>text/plain</type>
            <size>50457</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNSZW1vdGVJbnNwZWN0b3Iu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1JlbW90ZUluc3BlY3Rvci5jcHAKaW5k
ZXggZmFlYmM1ZC4uM2JlNjFkMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQ
SS9KU1JlbW90ZUluc3BlY3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9K
U1JlbW90ZUluc3BlY3Rvci5jcHAKQEAgLTUwLDkgKzUwLDkgQEAgdm9pZCBKU1JlbW90ZUluc3Bl
Y3RvclN0YXJ0KHZvaWQpCiAjZW5kaWYKIH0KIAotdm9pZCBKU1JlbW90ZUluc3BlY3RvclNldFBh
cmVudFByb2Nlc3NJbmZvcm1hdGlvbihwaWRfdCBwaWQsIGNvbnN0IFVJbnQ4KiBhdWRpdERhdGEs
IHNpemVfdCBhdWRpdExlbmd0aCkKK3ZvaWQgSlNSZW1vdGVJbnNwZWN0b3JTZXRQYXJlbnRQcm9j
ZXNzSW5mb3JtYXRpb24ocGlkX3QgcGlkLCBjb25zdCB1aW50OF90KiBhdWRpdERhdGEsIHNpemVf
dCBhdWRpdExlbmd0aCkKIHsKLSNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKKyNpZiBFTkFC
TEUoUkVNT1RFX0lOU1BFQ1RPUikgJiYgUExBVEZPUk0oQ09DT0EpCiAgICAgUmV0YWluUHRyPENG
RGF0YVJlZj4gYXVkaXREYXRhUmVmID0gYWRvcHRDRihDRkRhdGFDcmVhdGUoa0NGQWxsb2NhdG9y
RGVmYXVsdCwgYXVkaXREYXRhLCBhdWRpdExlbmd0aCkpOwogICAgIFJlbW90ZUluc3BlY3Rvcjo6
c2luZ2xldG9uKCkuc2V0UGFyZW50UHJvY2Vzc0luZm9ybWF0aW9uKHBpZCwgYXVkaXREYXRhUmVm
KTsKICNlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDU3NjE4ZDUuLjY0ZTRk
ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xNDU5LDYgKzE0NTksMTEgQEAK
IAkJNzlFRTBDMDAxQjRBRkI4NTAwMDM4NUM5IC8qIFZhcmlhYmxlRW52aXJvbm1lbnQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc5RUUwQkZFMUI0QUZC
ODUwMDAzODVDOSAvKiBWYXJpYWJsZUVudmlyb25tZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzlGOEZDMUUxQjlGRUQwRjAwQ0E2NkFCIC8q
IERGR01heGltYWxGbHVzaEluc2VydGlvblBoYXNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc5RjhGQzFDMUI5RkVEMEYwMENBNjZBQiAvKiBERkdN
YXhpbWFsRmx1c2hJbnNlcnRpb25QaGFzZS5jcHAgKi87IH07CiAJCTc5RjhGQzFGMUI5RkVEMEYw
MENBNjZBQiAvKiBERkdNYXhpbWFsRmx1c2hJbnNlcnRpb25QaGFzZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzlGOEZDMUQxQjlGRUQwRjAwQ0E2NkFC
IC8qIERGR01heGltYWxGbHVzaEluc2VydGlvblBoYXNlLmggKi87IH07CisJCTdBQ0RERUQ0MUUy
NTJCNEQwMDk3QUZFQiAvKiBSZW1vdGVDb25uZWN0aW9uVG9UYXJnZXRDb2NvYS5tbSBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBQ0RERUQwMUUyNTJCMkIw
MDk3QUZFQiAvKiBSZW1vdGVDb25uZWN0aW9uVG9UYXJnZXRDb2NvYS5tbSAqLzsgfTsKKwkJN0FD
RERFRDUxRTI1MkI1RTAwOTdBRkVCIC8qIFJlbW90ZUluc3BlY3RvckNvY29hLm1tIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0FDRERFRDExRTI1MkIyQjAw
OTdBRkVCIC8qIFJlbW90ZUluc3BlY3RvckNvY29hLm1tICovOyB9OworCQk3QUNEREVENzFFMjUy
QjY4MDA5N0FGRUIgLyogUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbi5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0FDRERFRDIxRTI1MkIyQjAwOTdB
RkVCIC8qIFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24uaCAqLzsgfTsKKwkJN0FDRERFRDgx
RTI1MkI2RTAwOTdBRkVCIC8qIFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24ubW0gaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QUNEREVEMzFFMjUyQjJC
MDA5N0FGRUIgLyogUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbi5tbSAqLzsgfTsKKwkJN0FD
RERFRDkxRTI1MkI4MzAwOTdBRkVCIC8qIFJlbW90ZUluc3BlY3Rvci5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QUNEREVENjFFMjUyQjVGMDA5N0FG
RUIgLyogUmVtb3RlSW5zcGVjdG9yLmNwcCAqLzsgfTsKIAkJN0JDNTQ3RDMxQjY5NTlBMTAwOTU5
QjU4IC8qIFdhc21Gb3JtYXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDdCQzU0N0QyMUI2OTU5OUIwMDk1OUI1OCAvKiBXYXNtRm9ybWF0LmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0MwMDhDREExODcx
MjRCQjAwOTU1QzI0IC8qIEpTUHJvbWlzZURlZmVycmVkLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDMDA4Q0Q4MTg3MTI0QkIwMDk1NUMyNCAvKiBK
U1Byb21pc2VEZWZlcnJlZC5jcHAgKi87IH07CiAJCTdDMDA4Q0RCMTg3MTI0QkIwMDk1NUMyNCAv
KiBKU1Byb21pc2VEZWZlcnJlZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gN0MwMDhDRDkxODcxMjRCQjAwOTU1QzI0IC8qIEpTUHJvbWlzZURlZmVycmVk
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTE3
NjMsMTIgKzE3NjgsOCBAQAogCQlBNUFCNDlERDFCRUM4MDg2MDA3MDIwRkIgLyogUGVyR2xvYmFs
T2JqZWN0V3JhcHBlcldvcmxkLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBNUFCNDlEQjFCRUM4MDc5MDA3MDIwRkIgLyogUGVyR2xvYmFsT2JqZWN0V3Jh
cHBlcldvcmxkLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJQTVCNkE3NEQxOEM2REJBNjAwRjExRTkxIC8qIENvbnNvbGVDbGllbnQuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTVCNkE3NEMxOEM2REJB
NjAwRjExRTkxIC8qIENvbnNvbGVDbGllbnQuY3BwICovOyB9OwogCQlBNUJBMTVFODE4MjM0MEIz
MDBBODJFNjkgLyogUmVtb3RlSW5zcGVjdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBBNUJBMTVFMTE4MjM0MEIzMDBBODJFNjkgLyogUmVtb3RlSW5z
cGVjdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
LQkJQTVCQTE1RTkxODIzNDBCMzAwQTgyRTY5IC8qIFJlbW90ZUluc3BlY3Rvci5tbSBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1QkExNUUyMTgyMzQwQjMw
MEE4MkU2OSAvKiBSZW1vdGVJbnNwZWN0b3IubW0gKi87IH07CiAJCUE1QkExNUVBMTgyMzQwQjQw
MEE4MkU2OSAvKiBSZW1vdGVJbnNwZWN0b3JDb25zdGFudHMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1QkExNUUzMTgyMzQwQjMwMEE4MkU2OSAvKiBS
ZW1vdGVJbnNwZWN0b3JDb25zdGFudHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQlBNUJBMTVFQjE4MjM0MEI0MDBBODJFNjkgLyogUmVtb3RlQ29u
bmVjdGlvblRvVGFyZ2V0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBNUJBMTVFNDE4MjM0MEIzMDBBODJFNjkgLyogUmVtb3RlQ29ubmVjdGlvblRvVGFy
Z2V0LmggKi87IH07Ci0JCUE1QkExNUVDMTgyMzQwQjQwMEE4MkU2OSAvKiBSZW1vdGVDb25uZWN0
aW9uVG9UYXJnZXQubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBBNUJBMTVFNTE4MjM0MEIzMDBBODJFNjkgLyogUmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0
Lm1tICovOyB9OwotCQlBNUJBMTVFRDE4MjM0MEI0MDBBODJFNjkgLyogUmVtb3RlSW5zcGVjdG9y
WFBDQ29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQTVCQTE1RTYxODIzNDBCMzAwQTgyRTY5IC8qIFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5l
Y3Rpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owot
CQlBNUJBMTVFRTE4MjM0MEI0MDBBODJFNjkgLyogUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlv
bi5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1QkEx
NUU3MTgyMzQwQjMwMEE4MkU2OSAvKiBSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uLm1tICov
OyB9OwogCQlBNUJBMTVGMDE4MjM0NUFGMDBBODJFNjkgLyogUmVtb3RlSW5zcGVjdGlvblRhcmdl
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTVCQTE1
RUYxODIzNDVBRjAwQTgyRTY5IC8qIFJlbW90ZUluc3BlY3Rpb25UYXJnZXQuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBNUMzQTFBNTE4QzA0OTAy
MDBDOTU5M0EgLyogSlNHbG9iYWxPYmplY3RDb25zb2xlQ2xpZW50LmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1QzNBMUEzMThDMDQ5MDIwMEM5NTkz
QSAvKiBKU0dsb2JhbE9iamVjdENvbnNvbGVDbGllbnQuY3BwICovOyB9OwogCQlBNUMzQTFBNjE4
QzA0OTAyMDBDOTU5M0EgLyogSlNHbG9iYWxPYmplY3RDb25zb2xlQ2xpZW50LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNUMzQTFBNDE4QzA0OTAyMDBD
OTU5M0EgLyogSlNHbG9iYWxPYmplY3RDb25zb2xlQ2xpZW50LmggKi87IH07CkBAIC0yMTQ1LDYg
KzIxNDYsNyBAQAogCQlCQ0Y2MDUxNDBFMjAzRUY4MDBCOUE2NEQgLyogQXJnTGlzdC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNGNjA1MTIwRTIwM0VG
ODAwQjlBNjREIC8qIEFyZ0xpc3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQlCQ0ZEOEM5MjBFRUIyRUU3MDAyODM4NDggLyogSnVtcFRhYmxlLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDRkQ4Qzkw
MEVFQjJFRTcwMDI4Mzg0OCAvKiBKdW1wVGFibGUuY3BwICovOyB9OwogCQlCQ0ZEOEM5MzBFRUIy
RUU3MDAyODM4NDggLyogSnVtcFRhYmxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBCQ0ZEOEM5MTBFRUIyRUU3MDAyODM4NDggLyogSnVtcFRhYmxlLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQkRGQ0Iy
QkJFOTBGNDEzNDlFMUIwQkVEIC8qIEpTU291cmNlQ29kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzAzMjE3NURGMUFENDdEODk5OEIzNEUxIC8qIEpT
U291cmNlQ29kZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCUMyMDMyODIwMTk4MTk3OUQwMDg4QjQ5OSAvKiBDdXN0b21HbG9iYWxPYmplY3RDbGFz
c1Rlc3QuYyBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMy
MDMyODFFMTk4MTk3OUQwMDg4QjQ5OSAvKiBDdXN0b21HbG9iYWxPYmplY3RDbGFzc1Rlc3QuYyAq
LzsgfTsKIAkJQzIwQkE5MkQxNkJCMUMxNTAwQjNBRUEyIC8qIFN0cnVjdHVyZVJhcmVEYXRhSW5s
aW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzIw
QkE5MkMxNkJCMUMxNTAwQjNBRUEyIC8qIFN0cnVjdHVyZVJhcmVEYXRhSW5saW5lcy5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUMyMTYwRkU3MTVG
N0U5NUUwMDk0MkRGQyAvKiBTbG90VmlzaXRvcklubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQ0I0MDg1MTVDMEEzQzMwMDQ4OTMyQiAvKiBT
bG90VmlzaXRvcklubGluZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwpAQCAtMjMwMSw2ICsyMzAzLDcgQEAKIAkJRTQ5REMxNkIxMkVGMjkzRTAwMTg0
QTFGIC8qIFNvdXJjZVByb3ZpZGVyQ2FjaGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRTQ5REMxNTUxMkVGMjc3MjAwMTg0QTFGIC8qIFNvdXJjZVBy
b3ZpZGVyQ2FjaGUuY3BwICovOyB9OwogCQlFNDlEQzE2QzEyRUYyOTRFMDAxODRBMUYgLyogU291
cmNlUHJvdmlkZXJDYWNoZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRTQ5REMxNTExMkVGMjcyMjAwMTg0QTFGIC8qIFNvdXJjZVByb3ZpZGVyQ2FjaGUu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFNDlE
QzE2RDEyRUYyOTUzMDAxODRBMUYgLyogU291cmNlUHJvdmlkZXJDYWNoZUl0ZW0uaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0OURDMTQ5MTJFRjI2MUEw
MDE4NEExRiAvKiBTb3VyY2VQcm92aWRlckNhY2hlSXRlbS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUZBM0FCMjExQzg0OTQ1MjRBQjM5MDI2NyAv
KiBKU1NvdXJjZUNvZGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRjczOTI2OTE4REM2NDMzMEFGQ0RGMEQ3IC8qIEpTU291cmNlQ29kZS5jcHAgKi87
IH07CiAJCUZFMEQ0QTA2MUFCOEREMEEwMDJGNTRCRiAvKiBFeGVjdXRpb25UaW1lTGltaXRUZXN0
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMEQ0
QTA0MUFCOEREMEEwMDJGNTRCRiAvKiBFeGVjdXRpb25UaW1lTGltaXRUZXN0LmNwcCAqLzsgfTsK
IAkJRkUwRDRBMDkxQUJBMjQzNzAwMkY1NEJGIC8qIEdsb2JhbENvbnRleHRXaXRoRmluYWxpemVy
VGVzdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBG
RTBENEEwNzFBQkEyNDM3MDAyRjU0QkYgLyogR2xvYmFsQ29udGV4dFdpdGhGaW5hbGl6ZXJUZXN0
LmNwcCAqLzsgfTsKIAkJRkUxMjIwMjcxQkU3RjU4QzAwMzlFNkYyIC8qIEpJVEFkZEdlbmVyYXRv
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUxMjIw
MjYxQkU3RjU2NDAwMzlFNkYyIC8qIEpJVEFkZEdlbmVyYXRvci5oICovOyB9OwpAQCAtMjM3Miw4
ICsyMzc1LDYgQEAKIAkJRkVEOTRGMkYxNzFFM0UyMzAwQkU3N0E0IC8qIFdhdGNoZG9nLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRUQ5NEYyQzE3MUUz
RTIzMDBCRTc3QTQgLyogV2F0Y2hkb2cuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQlGRUYwNDA1MTFBQUU2NjJEMDBCRDI4QjAgLyogQ29tcGFyZUFu
ZFN3YXBUZXN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEZFRjA0MDUwMUFBRTY2MkQwMEJEMjhCMCAvKiBDb21wYXJlQW5kU3dhcFRlc3QuY3BwICov
OyB9OwogCQlGRUZENkZDNjFENUU3OTkyMDA4RjJGMEIgLyogSlNTdHJpbmdJbmxpbmVzLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRUZENkZDNTFENUU3
OTcwMDA4RjJGMEIgLyogSlNTdHJpbmdJbmxpbmVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJRkEzQUIyMTFDODQ5NDUyNEFCMzkwMjY3IC8qIEpT
U291cmNlQ29kZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBGNzM5MjY5MThEQzY0MzMwQUZDREYwRDcgLyogSlNTb3VyY2VDb2RlLmNwcCAqLzsgfTsK
LQkJQkRGQ0IyQkJFOTBGNDEzNDlFMUIwQkVEIC8qIEpTU291cmNlQ29kZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzAzMjE3NURGMUFENDdEODk5OEIz
NEUxIC8qIEpTU291cmNlQ29kZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAvKiBFbmQgUEJYQnVpbGRGaWxlIHNlY3Rpb24gKi8KIAogLyogQmVnaW4g
UEJYQ29udGFpbmVySXRlbVByb3h5IHNlY3Rpb24gKi8KQEAgLTM2NTUsNiArMzY1Niw3IEBACiAJ
CTJBREZBMjYyMThFRjM1NDAwMDRGOUZDQyAvKiBHQ0xvZ2dpbmcuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR0NMb2dnaW5nLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMkFGNzM4MkExOEJCQkY5MjAwOEE1QTM3IC8qIFN0cnVjdHVyZUlEVGFibGUu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3RydWN0dXJlSURUYWJs
ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJBRjczODJCMThCQkJGOTIwMDhB
NUEzNyAvKiBTdHJ1Y3R1cmVJRFRhYmxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFN0cnVjdHVyZUlEVGFibGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzAz
MjE3NURGMUFENDdEODk5OEIzNEUxIC8qIEpTU291cmNlQ29kZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBKU1NvdXJjZUNvZGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMzcxRDg0MkMxN0M5OEI2RTAwRUNGOTk0IC8qIGxpYnouZHlsaWIgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSAiY29tcGlsZWQubWFjaC1vLmR5
bGliIjsgbmFtZSA9IGxpYnouZHlsaWI7IHBhdGggPSB1c3IvbGliL2xpYnouZHlsaWI7IHNvdXJj
ZVRyZWUgPSBTREtST09UOyB9OwogCQk0MTI5NTI3MzFEMkNGNkFDMDBFNzhCODkgLyogYnVpbHRp
bnNfZ2VuZXJhdGVfaW50ZXJuYWxzX3dyYXBwZXJfaGVhZGVyLnB5ICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5z
Y3JpcHQucHl0aG9uOyBwYXRoID0gYnVpbHRpbnNfZ2VuZXJhdGVfaW50ZXJuYWxzX3dyYXBwZXJf
aGVhZGVyLnB5OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTI5NTI3NDFEMkNGNkFD
MDBFNzhCODkgLyogYnVpbHRpbnNfZ2VuZXJhdGVfaW50ZXJuYWxzX3dyYXBwZXJfaW1wbGVtZW50
YXRpb24ucHkgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnNjcmlwdC5weXRob247IHBhdGggPSBidWlsdGluc19n
ZW5lcmF0ZV9pbnRlcm5hbHNfd3JhcHBlcl9pbXBsZW1lbnRhdGlvbi5weTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTM5MTIsNiArMzkxNCwxMSBAQAogCQk3OUVFMEJGRTFCNEFGQjg1
MDAwMzg1QzkgLyogVmFyaWFibGVFbnZpcm9ubWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBWYXJpYWJsZUVudmlyb25tZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTc5RjhGQzFDMUI5RkVEMEYwMENBNjZBQiAvKiBERkdNYXhpbWFsRmx1c2hJbnNlcnRp
b25QaGFzZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdNYXhp
bWFsRmx1c2hJbnNlcnRpb25QaGFzZS5jcHA7IHBhdGggPSBkZmcvREZHTWF4aW1hbEZsdXNoSW5z
ZXJ0aW9uUGhhc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3OUY4RkMxRDFC
OUZFRDBGMDBDQTY2QUIgLyogREZHTWF4aW1hbEZsdXNoSW5zZXJ0aW9uUGhhc2UuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHTWF4aW1hbEZsdXNoSW5zZXJ0aW9uUGhhc2Uu
aDsgcGF0aCA9IGRmZy9ERkdNYXhpbWFsRmx1c2hJbnNlcnRpb25QaGFzZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk3QUNEREVEMDFFMjUyQjJCMDA5N0FGRUIgLyogUmVtb3RlQ29u
bmVjdGlvblRvVGFyZ2V0Q29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7
IG5hbWUgPSBSZW1vdGVDb25uZWN0aW9uVG9UYXJnZXRDb2NvYS5tbTsgcGF0aCA9IGNvY29hL1Jl
bW90ZUNvbm5lY3Rpb25Ub1RhcmdldENvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk3QUNEREVEMTFFMjUyQjJCMDA5N0FGRUIgLyogUmVtb3RlSW5zcGVjdG9yQ29jb2EubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBSZW1vdGVJbnNwZWN0b3JD
b2NvYS5tbTsgcGF0aCA9IGNvY29hL1JlbW90ZUluc3BlY3RvckNvY29hLm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk3QUNEREVEMjFFMjUyQjJCMDA5N0FGRUIgLyogUmVtb3RlSW5z
cGVjdG9yWFBDQ29ubmVjdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBS
ZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uLmg7IHBhdGggPSBjb2NvYS9SZW1vdGVJbnNwZWN0
b3JYUENDb25uZWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdBQ0RERUQz
MUUyNTJCMkIwMDk3QUZFQiAvKiBSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gUmVtb3RlSW5zcGVjdG9yWFBDQ29u
bmVjdGlvbi5tbTsgcGF0aCA9IGNvY29hL1JlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24ubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdBQ0RERUQ2MUUyNTJCNUYwMDk3QUZFQiAv
KiBSZW1vdGVJbnNwZWN0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gUmVtb3RlSW5zcGVjdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0JD
NTQ3RDIxQjY5NTk5QjAwOTU5QjU4IC8qIFdhc21Gb3JtYXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gV2FzbUZvcm1hdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk3QzAwOENEODE4NzEyNEJCMDA5NTVDMjQgLyogSlNQcm9taXNlRGVmZXJyZWQuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNQcm9taXNlRGVmZXJyZWQuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QzAwOENEOTE4NzEyNEJCMDA5NTVDMjQgLyog
SlNQcm9taXNlRGVmZXJyZWQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNQ
cm9taXNlRGVmZXJyZWQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQyNTcsMTIg
KzQyNjQsOCBAQAogCQlBNUFCNDlEQjFCRUM4MDc5MDA3MDIwRkIgLyogUGVyR2xvYmFsT2JqZWN0
V3JhcHBlcldvcmxkLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBlckdsb2Jh
bE9iamVjdFdyYXBwZXJXb3JsZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNUI2
QTc0QzE4QzZEQkE2MDBGMTFFOTEgLyogQ29uc29sZUNsaWVudC5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDb25zb2xlQ2xpZW50LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQTVCQTE1RTExODIzNDBCMzAwQTgyRTY5IC8qIFJlbW90ZUluc3BlY3Rv
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVJbnNwZWN0b3IuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQTVCQTE1RTIxODIzNDBCMzAwQTgyRTY5IC8q
IFJlbW90ZUluc3BlY3Rvci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0
aCA9IFJlbW90ZUluc3BlY3Rvci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTVC
QTE1RTMxODIzNDBCMzAwQTgyRTY5IC8qIFJlbW90ZUluc3BlY3RvckNvbnN0YW50cy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVJbnNwZWN0b3JDb25zdGFudHMuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTVCQTE1RTQxODIzNDBCMzAwQTgyRTY5IC8q
IFJlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBSZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLQkJQTVCQTE1RTUxODIzNDBCMzAwQTgyRTY5IC8qIFJlbW90ZUNvbm5lY3Rpb25Ub1Rhcmdl
dC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFJlbW90ZUNvbm5l
Y3Rpb25Ub1RhcmdldC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQTVCQTE1RTYx
ODIzNDBCMzAwQTgyRTY5IC8qIFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24uaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbi5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlBNUJBMTVFNzE4MjM0MEIzMDBBODJFNjkg
LyogUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgcGF0aCA9IFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24ubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1QkExNUVGMTgyMzQ1QUYwMEE4MkU2OSAvKiBSZW1v
dGVJbnNwZWN0aW9uVGFyZ2V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJl
bW90ZUluc3BlY3Rpb25UYXJnZXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTVD
M0ExQTMxOEMwNDkwMjAwQzk1OTNBIC8qIEpTR2xvYmFsT2JqZWN0Q29uc29sZUNsaWVudC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0dsb2JhbE9iamVjdENvbnNv
bGVDbGllbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNUMzQTFBNDE4QzA0
OTAyMDBDOTU5M0EgLyogSlNHbG9iYWxPYmplY3RDb25zb2xlQ2xpZW50LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTR2xvYmFsT2JqZWN0Q29uc29sZUNsaWVudC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDgyMyw2ICs0ODI2LDcgQEAKIAkJRjY5MkE4N0Qw
MjU1NTk3RDAxRkY2MEY3IC8qIFJlZ0V4cC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZWdFeHAuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB0YWJXaWR0aCA9IDg7IH07CiAJCUY2OTJBODdFMDI1NTU5N0QwMUZGNjBGNyAvKiBS
ZWdFeHAuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsg
aW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gUmVnRXhwLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgfTsKIAkJ
RjY5MkE4ODcwMjU1NTk3RDAxRkY2MEY3IC8qIEpTQ0pTVmFsdWUuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNDSlNWYWx1ZS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgfTsKKwkJRjczOTI2OTE4REM2
NDMzMEFGQ0RGMEQ3IC8qIEpTU291cmNlQ29kZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBKU1NvdXJjZUNvZGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlGRTBENEEwNDFBQjhERDBBMDAyRjU0QkYgLyogRXhlY3V0aW9uVGltZUxpbWl0VGVzdC5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBFeGVjdXRpb25UaW1lTGlt
aXRUZXN0LmNwcDsgcGF0aCA9IEFQSS90ZXN0cy9FeGVjdXRpb25UaW1lTGltaXRUZXN0LmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkUwRDRBMDUxQUI4REQwQTAwMkY1NEJGIC8q
IEV4ZWN1dGlvblRpbWVMaW1pdFRlc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1l
ID0gRXhlY3V0aW9uVGltZUxpbWl0VGVzdC5oOyBwYXRoID0gQVBJL3Rlc3RzL0V4ZWN1dGlvblRp
bWVMaW1pdFRlc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkUwRDRBMDcxQUJB
MjQzNzAwMkY1NEJGIC8qIEdsb2JhbENvbnRleHRXaXRoRmluYWxpemVyVGVzdC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBHbG9iYWxDb250ZXh0V2l0aEZpbmFsaXpl
clRlc3QuY3BwOyBwYXRoID0gQVBJL3Rlc3RzL0dsb2JhbENvbnRleHRXaXRoRmluYWxpemVyVGVz
dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00OTAyLDggKzQ5MDYsNiBAQAog
CQlGRUYwNDA1MDFBQUU2NjJEMDBCRDI4QjAgLyogQ29tcGFyZUFuZFN3YXBUZXN0LmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IENvbXBhcmVBbmRTd2FwVGVzdC5jcHA7
IHBhdGggPSBBUEkvdGVzdHMvQ29tcGFyZUFuZFN3YXBUZXN0LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJRkVGMDQwNTIxQUFFQzRFRDAwQkQyOEIwIC8qIENvbXBhcmVBbmRTd2Fw
VGVzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBDb21wYXJlQW5kU3dhcFRl
c3QuaDsgcGF0aCA9IEFQSS90ZXN0cy9Db21wYXJlQW5kU3dhcFRlc3QuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJRkVGRDZGQzUxRDVFNzk3MDAwOEYyRjBCIC8qIEpTU3RyaW5nSW5s
aW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1N0cmluZ0lubGluZXMu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRjczOTI2OTE4REM2NDMzMEFGQ0RGMEQ3
IC8qIEpTU291cmNlQ29kZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUg
PSBKU1NvdXJjZUNvZGUuY3BwOyBwYXRoID0gSlNTb3VyY2VDb2RlLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJMzAzMjE3NURGMUFENDdEODk5OEIzNEUxIC8qIEpTU291cmNlQ29k
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBKU1NvdXJjZUNvZGUuaDsgcGF0
aCA9IEpTU291cmNlQ29kZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogLyogRW5kIFBC
WEZpbGVSZWZlcmVuY2Ugc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhGcmFtZXdvcmtzQnVpbGRQ
aGFzZSBzZWN0aW9uICovCkBAIC02MDU4LDYgKzYwNjAsMTcgQEAKIAkJCXBhdGggPSBkaXNhc3Nl
bWJsZXIvQVJNdjc7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9OworCQk3QUNEREVD
RjFFMjUyQUNBMDA5N0FGRUIgLyogY29jb2EgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJ
CWNoaWxkcmVuID0gKAorCQkJCTdBQ0RERUQwMUUyNTJCMkIwMDk3QUZFQiAvKiBSZW1vdGVDb25u
ZWN0aW9uVG9UYXJnZXRDb2NvYS5tbSAqLywKKwkJCQk3QUNEREVEMTFFMjUyQjJCMDA5N0FGRUIg
LyogUmVtb3RlSW5zcGVjdG9yQ29jb2EubW0gKi8sCisJCQkJN0FDRERFRDIxRTI1MkIyQjAwOTdB
RkVCIC8qIFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24uaCAqLywKKwkJCQk3QUNEREVEMzFF
MjUyQjJCMDA5N0FGRUIgLyogUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbi5tbSAqLywKKwkJ
CSk7CisJCQluYW1lID0gY29jb2E7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9Owog
CQk3Qjk4RDEzMzFCNjBDRDFFMDAyM0IxQTQgLyogd2FzbSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdy
b3VwOwogCQkJY2hpbGRyZW4gPSAoCkBAIC03NTc2LDE5ICs3NTg5LDE3IEBACiAJCUE1QkExNUUw
MTgyMzQwOUQwMEE4MkU2OSAvKiByZW1vdGUgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJ
CWNoaWxkcmVuID0gKAorCQkJCTdBQ0RERUQ2MUUyNTJCNUYwMDk3QUZFQiAvKiBSZW1vdGVJbnNw
ZWN0b3IuY3BwICovLAorCQkJCTdBQ0RERUNGMUUyNTJBQ0EwMDk3QUZFQiAvKiBjb2NvYSAqLywK
IAkJCQk5OTJBQkNGNTFCRUE5NENBMDA2NDAzQTAgLyogUmVtb3RlQXV0b21hdGlvblRhcmdldC5j
cHAgKi8sCiAJCQkJOTkyQUJDRjYxQkVBOTRDQTAwNjQwM0EwIC8qIFJlbW90ZUF1dG9tYXRpb25U
YXJnZXQuaCAqLywKIAkJCQlBNUJBMTVFNDE4MjM0MEIzMDBBODJFNjkgLyogUmVtb3RlQ29ubmVj
dGlvblRvVGFyZ2V0LmggKi8sCi0JCQkJQTVCQTE1RTUxODIzNDBCMzAwQTgyRTY5IC8qIFJlbW90
ZUNvbm5lY3Rpb25Ub1RhcmdldC5tbSAqLywKIAkJCQk5OThFRDY3MjFCRUQ2NTlBMDBERDgwMTcg
LyogUmVtb3RlQ29udHJvbGxhYmxlVGFyZ2V0LmNwcCAqLywKIAkJCQk5OThFRDY3MzFCRUQ2NTlB
MDBERDgwMTcgLyogUmVtb3RlQ29udHJvbGxhYmxlVGFyZ2V0LmggKi8sCiAJCQkJQTU5NDU1OEUx
ODI0NUVERTAwQ0MzODQzIC8qIFJlbW90ZUluc3BlY3Rpb25UYXJnZXQuY3BwICovLAogCQkJCUE1
QkExNUVGMTgyMzQ1QUYwMEE4MkU2OSAvKiBSZW1vdGVJbnNwZWN0aW9uVGFyZ2V0LmggKi8sCiAJ
CQkJQTVCQTE1RTExODIzNDBCMzAwQTgyRTY5IC8qIFJlbW90ZUluc3BlY3Rvci5oICovLAotCQkJ
CUE1QkExNUUyMTgyMzQwQjMwMEE4MkU2OSAvKiBSZW1vdGVJbnNwZWN0b3IubW0gKi8sCiAJCQkJ
QTVCQTE1RTMxODIzNDBCMzAwQTgyRTY5IC8qIFJlbW90ZUluc3BlY3RvckNvbnN0YW50cy5oICov
LAotCQkJCUE1QkExNUU2MTgyMzQwQjMwMEE4MkU2OSAvKiBSZW1vdGVJbnNwZWN0b3JYUENDb25u
ZWN0aW9uLmggKi8sCi0JCQkJQTVCQTE1RTcxODIzNDBCMzAwQTgyRTY5IC8qIFJlbW90ZUluc3Bl
Y3RvclhQQ0Nvbm5lY3Rpb24ubW0gKi8sCiAJCQkpOwogCQkJcGF0aCA9IHJlbW90ZTsKIAkJCXNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC04OTA1LDcgKzg5MTYsNiBAQAogCQkJCUE1QkExNUYw
MTgyMzQ1QUYwMEE4MkU2OSAvKiBSZW1vdGVJbnNwZWN0aW9uVGFyZ2V0LmggaW4gSGVhZGVycyAq
LywKIAkJCQlBNUJBMTVFODE4MjM0MEIzMDBBODJFNjkgLyogUmVtb3RlSW5zcGVjdG9yLmggaW4g
SGVhZGVycyAqLywKIAkJCQlBNUJBMTVFQTE4MjM0MEI0MDBBODJFNjkgLyogUmVtb3RlSW5zcGVj
dG9yQ29uc3RhbnRzLmggaW4gSGVhZGVycyAqLywKLQkJCQlBNUJBMTVFRDE4MjM0MEI0MDBBODJF
NjkgLyogUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MEYyNEU1NTExN0VFMjc0OTAwQUJCMjE3IC8qIFJlcGF0Y2guaCBpbiBIZWFkZXJzICovLAogCQkJ
CTg2OUVCQ0I3MEU4QzZENEEwMDg3MjJDQyAvKiBSZXN1bHRUeXBlLmggaW4gSGVhZGVycyAqLywK
IAkJCQk3MEIwQTlEMTFBOUI2NjQ2MDAwMTMwNkEgLyogUnVudGltZUZsYWdzLmggaW4gSGVhZGVy
cyAqLywKQEAgLTkwMjAsNiArOTAzMCw3IEBACiAJCQkJMEZGNDI3NDkxNThFQkU5MTAwNENCOUZG
IC8qIHVkaXM4Nl90eXBlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdFNUFCMzkxNzk5RTRCMjAw
RDI4MzNEIC8qIFVEaXM4NkRpc2Fzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdBOEFG
NDExN0FEQjVGMzAwNUFCMTc0IC8qIFVpbnQxNkFycmF5LmggaW4gSGVhZGVycyAqLywKKwkJCQk3
QUNEREVENzFFMjUyQjY4MDA5N0FGRUIgLyogUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbi5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJODY2NzM5RDMxM0JGREU3MTAwMjNEODdDIC8qIFVpbnQxNldp
dGhGcmFjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdBOEFGNDIxN0FEQjVGMzAwNUFCMTc0
IC8qIFVpbnQzMkFycmF5LmggaW4gSGVhZGVycyAqLywKIAkJCQlBN0E4QUYzRjE3QURCNUYzMDA1
QUIxNzQgLyogVWludDhBcnJheS5oIGluIEhlYWRlcnMgKi8sCkBAIC05OTE0LDYgKzk5MjUsNyBA
QAogCQkJCTBGQzA5NzcyMTQ2OTNBRjkwMENGMjQ0MiAvKiBERkdPU1JFeGl0Q29tcGlsZXI2NC5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjcwMjVBOTE3MTRCMEZBMDAzODJDMEUgLyogREZHT1NS
RXhpdENvbXBpbGVyQ29tbW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMzkyQzg5MUI0NjE4
ODQwMDg0NDcyOCAvKiBERkdPU1JFeGl0RnV6ei5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk3QUNE
REVEODFFMjUyQjZFMDA5N0FGRUIgLyogUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbi5tbSBp
biBTb3VyY2VzICovLAogCQkJCTBGRUZDOUFBMTY4MUEzQjMwMDU2N0Y1MyAvKiBERkdPU1JFeGl0
SnVtcFBsYWNlaG9sZGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMjM1QkVEMTcxNzhFNzMw
MDY5MEM3RiAvKiBERkdPU1JFeGl0UHJlcGFyYXRpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MEY2MjM3OTcxQUU0NUNBNzAwRDQwMkVBIC8qIERGR1BoYW50b21JbnNlcnRpb25QaGFzZS5jcHAg
aW4gU291cmNlcyAqLywKQEAgLTk5MzEsNiArOTk0Myw3IEBACiAJCQkJODZFQzlERDIxMzI4REY4
MjAwMkIyQUQ3IC8qIERGR1NwZWN1bGF0aXZlSklULmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg2
ODgwRjFGMTQzMjhCQjkwMEIwOEQ0MiAvKiBERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTg2ODgwRjREMTQzNTNCMjEwMEIwOEQ0MiAvKiBERkdTcGVjdWxhdGl2
ZUpJVDY0LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTdBQ0RERUQ1MUUyNTJCNUUwMDk3QUZFQiAv
KiBSZW1vdGVJbnNwZWN0b3JDb2NvYS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTBGNjgyRkIyMTlC
Q0IzNjQwMEZBM0JBRCAvKiBERkdTU0FDYWxjdWxhdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUE3RDg5Q0ZGMTdBMEI4Q0MwMDc3M0FEOCAvKiBERkdTU0FDb252ZXJzaW9uUGhhc2UuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMEZDMjBDQjkxODU1NkEzNTAwQzlFOTU0IC8qIERGR1NTQUxvd2Vy
aW5nUGhhc2UuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0xMDI1MSw2ICsxMDI2NCw3IEBACiAJCQkJ
QkNGRDhDOTIwRUVCMkVFNzAwMjgzODQ4IC8qIEp1bXBUYWJsZS5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkwRjA3MEE0QTFENTQzQTk1MDA2RTcyMzIgLyogTGFyZ2VBbGxvY2F0aW9uLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCURDRjNENTY5MUNEMjk0NkQwMDNENUM2NSAvKiBMYXp5Q2xhc3NTdHJ1
Y3R1cmUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJN0FDRERFRDQxRTI1MkI0RDAwOTdBRkVCIC8q
IFJlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldENvY29hLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZC
NTQ2NzkxNEY1QzQ2QjAwMkMyOTg5IC8qIExhenlPcGVyYW5kVmFsdWVQcm9maWxlLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTE0OEYyMUIwMTA3RUM1NDEwMDQyRUMyQyAvKiBMZXhlci5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkwRkY0Mjc1NzE1OTE0QTIwMDA0Q0I5RkYgLyogTGlua0J1ZmZlci5j
cHAgaW4gU291cmNlcyAqLywKQEAgLTEwMjc2LDYgKzEwMjkwLDcgQEAKIAkJCQk3OTVCMTk5NzFE
NzhCRTM1MDAyNjJGQTAgLyogTWFwQmFzZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNzAwODcz
OTE3Q0JFODUzMDBDM0U2NDMgLyogTWFwQ29uc3RydWN0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQTc0REVGOTMxODJEOTkxNDAwNTIyQzIyIC8qIE1hcEl0ZXJhdG9yUHJvdG90eXBlLmNwcCBp
biBTb3VyY2VzICovLAorCQkJCTdBQ0RERUQ5MUUyNTJCODMwMDk3QUZFQiAvKiBSZW1vdGVJbnNw
ZWN0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTcwMDg3M0QxN0NCRThEMzAwQzNFNjQzIC8q
IE1hcFByb3RvdHlwZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDMkI5MTZDNTE0REEwNDBDMDBD
QkFDODYgLyogTWFya2VkQWxsb2NhdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0MkQ2RjA4
MTM1MzlBMjgwMEIwMkU4NiAvKiBNYXJrZWRCbG9jay5jcHAgaW4gU291cmNlcyAqLywKQEAgLTEw
MzYzLDExICsxMDM3OCw4IEBACiAJCQkJMEZDMzE0MTUxODE0NkQ3MDAwMDMzMjMyIC8qIFJlZ2lz
dGVyU2V0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE1N0QyM0VEMTg5MUI1NTQwMDMxQzdGQSAv
KiBSZWd1bGFyRXhwcmVzc2lvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5OTJBQkNGOTFCRUE5
QkQyMDA2NDAzQTAgLyogUmVtb3RlQXV0b21hdGlvblRhcmdldC5jcHAgaW4gU291cmNlcyAqLywK
LQkJCQlBNUJBMTVFQzE4MjM0MEI0MDBBODJFNjkgLyogUmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0
Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJOTk4RUQ2NzQxQkVENzBBQzAwREQ4MDE3IC8qIFJlbW90
ZUNvbnRyb2xsYWJsZVRhcmdldC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNTk0NTU4RjE4MjQ1
RUZEMDBDQzM4NDMgLyogUmVtb3RlSW5zcGVjdGlvblRhcmdldC5jcHAgaW4gU291cmNlcyAqLywK
LQkJCQlBNUJBMTVFOTE4MjM0MEIzMDBBODJFNjkgLyogUmVtb3RlSW5zcGVjdG9yLm1tIGluIFNv
dXJjZXMgKi8sCi0JCQkJQTVCQTE1RUUxODIzNDBCNDAwQTgyRTY5IC8qIFJlbW90ZUluc3BlY3Rv
clhQQ0Nvbm5lY3Rpb24ubW0gaW4gU291cmNlcyAqLywKIAkJCQkwRjI0RTU1MDE3RUUyNzQ5MDBB
QkIyMTcgLyogUmVwYXRjaC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1Mjc3NzNERTFBQUY4M0FD
MDBCREU3RTggLyogUnVudGltZVR5cGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY3NzAwOTIx
NDAyRkYzQzAwNzhFQjM5IC8qIFNhbXBsaW5nQ291bnRlci5jcHAgaW4gU291cmNlcyAqLywKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9QbGF0Zm9ybU1hYy5jbWFrZSBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9QbGF0Zm9ybU1hYy5jbWFrZQppbmRleCAyZTZiMTViLi5kNzQwNWE4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvUGxhdGZvcm1NYWMuY21ha2UKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCkBAIC0xMCwxMSArMTAs
MTQgQEAgbGlzdChBUFBFTkQgSmF2YVNjcmlwdENvcmVfU09VUkNFUwogICAgIEFQSS9PYmpDQ2Fs
bGJhY2tGdW5jdGlvbi5tbQogCiAgICAgaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVBdXRvbWF0aW9u
VGFyZ2V0LmNwcAotICAgIGluc3BlY3Rvci9yZW1vdGUvUmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0
Lm1tCiAgICAgaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVDb250cm9sbGFibGVUYXJnZXQuY3BwCiAg
ICAgaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0aW9uVGFyZ2V0LmNwcAotICAgIGluc3Bl
Y3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yLm1tCisgICAgaW5zcGVjdG9yL3JlbW90ZS9SZW1v
dGVJbnNwZWN0b3IuY3BwCiAgICAgaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3JYUEND
b25uZWN0aW9uLm1tCisKKyAgICBpbnNwZWN0b3IvcmVtb3RlL2NvY29hL1JlbW90ZUNvbm5lY3Rp
b25Ub1RhcmdldENvY29hLm1tCisgICAgaW5zcGVjdG9yL3JlbW90ZS9jb2NvYS9SZW1vdGVJbnNw
ZWN0b3JDb2NvYS5tbQorICAgIGluc3BlY3Rvci9yZW1vdGUvY29jb2EvUmVtb3RlSW5zcGVjdG9y
WFBDQ29ubmVjdGlvbi5tbQogKQogYWRkX2RlZmluaXRpb25zKC1EU1RBVElDQUxMWV9MSU5LRURf
V0lUSF9XVEYgLURfX1NURENfV0FOVF9MSUJfRVhUMV9fKQogCkBAIC0yNiw2ICsyOSw3IEBAIGxp
c3QoQVBQRU5EIEphdmFTY3JpcHRDb3JlX0xJQlJBUklFUwogbGlzdChBUFBFTkQgSmF2YVNjcmlw
dENvcmVfSU5DTFVERV9ESVJFQ1RPUklFUwogICAgICR7SkFWQVNDUklQVENPUkVfRElSfS9kaXNh
c3NlbWJsZXIvdWRpczg2CiAgICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2ljdQorICAgICR7SkFW
QVNDUklQVENPUkVfRElSfS9pbnNwZWN0b3IvcmVtb3RlL2NvY29hCiApCiAKIHNldChDTUFLRV9T
SEFSRURfTElOS0VSX0ZMQUdTICR7Q01BS0VfU0hBUkVEX0xJTktFUl9GTEFHU30gIi1jb21wYXRp
YmlsaXR5X3ZlcnNpb24gMSAtY3VycmVudF92ZXJzaW9uICR7V0VCS0lUX01BQ19WRVJTSU9OfSIp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1v
dGVDb25uZWN0aW9uVG9UYXJnZXQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
cmVtb3RlL1JlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldC5oCmluZGV4IGRiYTA2MDEuLjg5YWE3YmMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90
ZUNvbm5lY3Rpb25Ub1RhcmdldC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3IvcmVtb3RlL1JlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldC5oCkBAIC0yNyw2NyArMjcsODIgQEAK
IAogI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQogCi0jaW1wb3J0ICJJbnNwZWN0b3JGcm9u
dGVuZENoYW5uZWwuaCIKLSNpbXBvcnQgIlJlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldC5oIgotI2lt
cG9ydCAiUmVtb3RlSW5zcGVjdG9yLmgiCi0jaW1wb3J0IDxtdXRleD4KLSNpbXBvcnQgPHd0Zi9C
bG9ja1B0ci5oPgotI2ltcG9ydCA8d3RmL0xvY2suaD4KLSNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIu
aD4KLSNpbXBvcnQgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgIkluc3Bl
Y3RvckZyb250ZW5kQ2hhbm5lbC5oIgorI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CisjaW5jbHVkZSA8
d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CisKKyNpZiBQTEFURk9STShDT0NPQSkKKyNpbmNs
dWRlIDx3dGYvQmxvY2tQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAKIE9CSkNf
Q0xBU1MgTlNTdHJpbmc7CisjZW5kaWYKIAogbmFtZXNwYWNlIEluc3BlY3RvciB7CiAKK2NsYXNz
IFJlbW90ZUNvbnRyb2xsYWJsZVRhcmdldDsKKworI2lmIFBMQVRGT1JNKENPQ09BKQogdHlwZWRl
ZiBWZWN0b3I8QmxvY2tQdHI8dm9pZCAoKT4+IFJlbW90ZVRhcmdldFF1ZXVlOworI2VuZGlmCiAK
IGNsYXNzIFJlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldCBmaW5hbCA6IHB1YmxpYyBUaHJlYWRTYWZl
UmVmQ291bnRlZDxSZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQ+LCBwdWJsaWMgRnJvbnRlbmRDaGFu
bmVsIHsKIHB1YmxpYzoKLSAgICBSZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQoUmVtb3RlQ29udHJv
bGxhYmxlVGFyZ2V0KiwgTlNTdHJpbmcgKmNvbm5lY3Rpb25JZGVudGlmaWVyLCBOU1N0cmluZyAq
ZGVzdGluYXRpb24pOworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIFJlbW90ZUNvbm5lY3Rpb25U
b1RhcmdldChSZW1vdGVDb250cm9sbGFibGVUYXJnZXQqLCBOU1N0cmluZyogY29ubmVjdGlvbklk
ZW50aWZpZXIsIE5TU3RyaW5nKiBkZXN0aW5hdGlvbik7CisjZW5kaWYKICAgICB2aXJ0dWFsIH5S
ZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQoKTsKIAogICAgIC8vIE1haW4gQVBJLgogICAgIGJvb2wg
c2V0dXAoYm9vbCBpc0F1dG9tYXRpY0luc3BlY3Rpb24gPSBmYWxzZSwgYm9vbCBhdXRvbWF0aWNh
bGx5UGF1c2UgPSBmYWxzZSk7Ci0gICAgdm9pZCBzZW5kTWVzc2FnZVRvVGFyZ2V0KE5TU3RyaW5n
ICopOworICAgIHZvaWQgc2VuZE1lc3NhZ2VUb1RhcmdldChjb25zdCBTdHJpbmcmKTsKICAgICB2
b2lkIGNsb3NlKCk7CiAgICAgdm9pZCB0YXJnZXRDbG9zZWQoKTsKIAogICAgIHN0ZDo6b3B0aW9u
YWw8dW5zaWduZWQ+IHRhcmdldElkZW50aWZpZXIoKSBjb25zdDsKKyNpZiBQTEFURk9STShDT0NP
QSkKICAgICBOU1N0cmluZyAqY29ubmVjdGlvbklkZW50aWZpZXIoKSBjb25zdDsKICAgICBOU1N0
cmluZyAqZGVzdGluYXRpb24oKSBjb25zdDsKIAogICAgIExvY2smIHF1ZXVlTXV0ZXgoKSB7IHJl
dHVybiBtX3F1ZXVlTXV0ZXg7IH0KICAgICBjb25zdCBSZW1vdGVUYXJnZXRRdWV1ZSYgcXVldWUo
KSBjb25zdCB7IHJldHVybiBtX3F1ZXVlOyB9CiAgICAgdm9pZCBjbGVhclF1ZXVlKCkgeyBtX3F1
ZXVlLmNsZWFyKCk7IH0KKyNlbmRpZgogCiAgICAgLy8gRnJvbnRlbmRDaGFubmVsIG92ZXJyaWRl
cy4KICAgICBDb25uZWN0aW9uVHlwZSBjb25uZWN0aW9uVHlwZSgpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIENvbm5lY3Rpb25UeXBlOjpSZW1vdGU7IH0KICAgICB2b2lkIHNlbmRNZXNzYWdlVG9G
cm9udGVuZChjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKIAogcHJpdmF0ZToKKyNpZiBQTEFURk9S
TShDT0NPQSkKICAgICB2b2lkIGRpc3BhdGNoQXN5bmNPblRhcmdldCh2b2lkICheYmxvY2spKCkp
OwogCiAgICAgdm9pZCBzZXR1cFJ1bkxvb3AoKTsKICAgICB2b2lkIHRlYXJkb3duUnVuTG9vcCgp
OwogICAgIHZvaWQgcXVldWVUYXNrT25Qcml2YXRlUnVuTG9vcCh2b2lkICheYmxvY2spKCkpOwor
I2VuZGlmCiAKICAgICAvLyBUaGlzIGNvbm5lY3Rpb24gZnJvbSB0aGUgUmVtb3RlSW5zcGVjdG9y
IHNpbmdsZXRvbiB0byB0aGUgSW5zcGVjdGlvblRhcmdldAogICAgIC8vIGNhbiBiZSB1c2VkIG9u
IG11bHRpcGxlIHRocmVhZHMuIFNvIGFueSBhY2Nlc3MgdG8gdGhlIHRhcmdldAogICAgIC8vIGl0
c2VsZiBtdXN0IHRha2UgdGhpcyBtdXRleCB0byBlbnN1cmUgbV90YXJnZXQgaXMgdmFsaWQuCiAg
ICAgTG9jayBtX3RhcmdldE11dGV4OwogCisjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgLy8gSWYg
YSB0YXJnZXQgaGFzIGEgc3BlY2lmaWMgcnVuIGxvb3AgaXQgd2FudHMgdG8gZXZhbHVhdGUgb24K
ICAgICAvLyB3ZSBzZXR1cCBvdXIgcnVuIGxvb3Agc291cmNlcyBvbiB0aGF0IHNwZWNpZmljIHJ1
biBsb29wLgogICAgIFJldGFpblB0cjxDRlJ1bkxvb3BSZWY+IG1fcnVuTG9vcDsKICAgICBSZXRh
aW5QdHI8Q0ZSdW5Mb29wU291cmNlUmVmPiBtX3J1bkxvb3BTb3VyY2U7CiAgICAgUmVtb3RlVGFy
Z2V0UXVldWUgbV9xdWV1ZTsKICAgICBMb2NrIG1fcXVldWVNdXRleDsKKyNlbmRpZgogCiAgICAg
UmVtb3RlQ29udHJvbGxhYmxlVGFyZ2V0KiBtX3RhcmdldCB7IG51bGxwdHIgfTsKKyAgICBib29s
IG1fY29ubmVjdGVkIHsgZmFsc2UgfTsKKworI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIFJldGFp
blB0cjxOU1N0cmluZz4gbV9jb25uZWN0aW9uSWRlbnRpZmllcjsKICAgICBSZXRhaW5QdHI8TlNT
dHJpbmc+IG1fZGVzdGluYXRpb247Ci0gICAgYm9vbCBtX2Nvbm5lY3RlZCB7IGZhbHNlIH07Cisj
ZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEluc3BlY3RvcgpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlQ29udHJvbGxhYmxlVGFyZ2V0
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVDb250cm9s
bGFibGVUYXJnZXQuaAppbmRleCBkNjVmYWVhLi5hZmFlMzY5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVDb250cm9sbGFibGVUYXJnZXQu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVDb250
cm9sbGFibGVUYXJnZXQuaApAQCAtMjcsMTAgKzI3LDEzIEBACiAKICNpZiBFTkFCTEUoUkVNT1RF
X0lOU1BFQ1RPUikKIAotI2luY2x1ZGUgPENvcmVGb3VuZGF0aW9uL0NGUnVuTG9vcC5oPgogI2lu
Y2x1ZGUgPHd0Zi9UeXBlQ2FzdHMuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4K
IAorI2lmIFVTRShDRikKKyNpbmNsdWRlIDxDb3JlRm91bmRhdGlvbi9DRlJ1bkxvb3AuaD4KKyNl
bmRpZgorCiBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAogY2xhc3MgRnJvbnRlbmRDaGFubmVsOwpA
QCAtNTMsOCArNTYsMTAgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCByZW1vdGVDb250cm9s
QWxsb3dlZCgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hNZXNzYWdlRnJv
bVJlbW90ZShjb25zdCBTdHJpbmcmIG1lc3NhZ2UpID0gMDsKIAorI2lmIFVTRShDRikKICAgICAv
LyBUaGUgZGlzcGF0Y2ggYmxvY2sgd2lsbCBiZSBzY2hlZHVsZWQgb24gYSBnbG9iYWwgcnVuIGxv
b3AgaWYgbnVsbCBpcyByZXR1cm5lZC4KICAgICB2aXJ0dWFsIENGUnVuTG9vcFJlZiB0YXJnZXRS
dW5Mb29wKCkgeyByZXR1cm4gbnVsbHB0cjsgfQorI2VuZGlmCiBwcml2YXRlOgogICAgIHVuc2ln
bmVkIG1faWRlbnRpZmllciB7MH07CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdGlvblRhcmdldC5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdGlvblRhcmdldC5oCmlu
ZGV4IDM4NTJmY2MuLjQ1MzI5ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3Rpb25UYXJnZXQuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0aW9uVGFyZ2V0LmgKQEAg
LTQxLDggKzQxLDEwIEBAIHB1YmxpYzoKICAgICBib29sIHJlbW90ZURlYnVnZ2luZ0FsbG93ZWQo
KSBjb25zdCB7IHJldHVybiBtX2FsbG93ZWQ7IH0KICAgICB2b2lkIHNldFJlbW90ZURlYnVnZ2lu
Z0FsbG93ZWQoYm9vbCk7CiAKKyNpZiBVU0UoQ0YpCiAgICAgQ0ZSdW5Mb29wUmVmIHRhcmdldFJ1
bkxvb3AoKSBvdmVycmlkZSB7IHJldHVybiBtX3J1bkxvb3AuZ2V0KCk7IH0KICAgICB2b2lkIHNl
dFRhcmdldFJ1bkxvb3AoQ0ZSdW5Mb29wUmVmIHJ1bkxvb3ApIHsgbV9ydW5Mb29wID0gcnVuTG9v
cDsgfQorI2VuZGlmCiAKICAgICB2aXJ0dWFsIFN0cmluZyBuYW1lKCkgY29uc3QgeyByZXR1cm4g
U3RyaW5nKCk7IH0gLy8gSmF2YVNjcmlwdCBhbmQgV2ViCiAgICAgdmlydHVhbCBTdHJpbmcgdXJs
KCkgY29uc3QgeyByZXR1cm4gU3RyaW5nKCk7IH0gLy8gV2ViCkBAIC01OSw3ICs2MSw5IEBAIHB1
YmxpYzoKICAgICBib29sIHJlbW90ZUNvbnRyb2xBbGxvd2VkKCkgY29uc3Qgb3ZlcnJpZGU7CiBw
cml2YXRlOgogICAgIGJvb2wgbV9hbGxvd2VkIHtmYWxzZX07CisjaWYgVVNFKENGKQogICAgIFJl
dGFpblB0cjxDRlJ1bkxvb3BSZWY+IG1fcnVuTG9vcDsKKyNlbmRpZgogfTsKIAogfSAvLyBuYW1l
c3BhY2UgSW5zcGVjdG9yCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi4xNTc3YmViCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yLmNwcApAQCAtMCwwICsxLDIy
NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE2IEFwcGxlIEluYy4gQWxsIFJpZ2h0
cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlJlbW90ZUluc3BlY3Rvci5oIgorCisjaWYg
RU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCisKKyNpbmNsdWRlICJSZW1vdGVBdXRvbWF0aW9uVGFy
Z2V0LmgiCisjaW5jbHVkZSAiUmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0LmgiCisjaW5jbHVkZSAi
UmVtb3RlSW5zcGVjdGlvblRhcmdldC5oIgorI2luY2x1ZGUgIlJlbW90ZUluc3BlY3RvckNvbnN0
YW50cy5oIgorI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CisjaW5jbHVkZSA8d3RmL3RleHQv
V1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBJbnNwZWN0b3IgeworCitib29sIFJlbW90ZUluc3Bl
Y3Rvcjo6c3RhcnRFbmFibGVkID0gdHJ1ZTsKKwordm9pZCBSZW1vdGVJbnNwZWN0b3I6OnN0YXJ0
RGlzYWJsZWQoKQoreworICAgIFJlbW90ZUluc3BlY3Rvcjo6c3RhcnRFbmFibGVkID0gZmFsc2U7
Cit9CisKK3Vuc2lnbmVkIFJlbW90ZUluc3BlY3Rvcjo6bmV4dEF2YWlsYWJsZVRhcmdldElkZW50
aWZpZXIoKQoreworICAgIHVuc2lnbmVkIG5leHRWYWxpZFRhcmdldElkZW50aWZpZXI7CisgICAg
ZG8geworICAgICAgICBuZXh0VmFsaWRUYXJnZXRJZGVudGlmaWVyID0gbV9uZXh0QXZhaWxhYmxl
VGFyZ2V0SWRlbnRpZmllcisrOworICAgIH0gd2hpbGUgKCFuZXh0VmFsaWRUYXJnZXRJZGVudGlm
aWVyIHx8IG5leHRWYWxpZFRhcmdldElkZW50aWZpZXIgPT0gc3RkOjpudW1lcmljX2xpbWl0czx1
bnNpZ25lZD46Om1heCgpIHx8IG1fdGFyZ2V0TWFwLmNvbnRhaW5zKG5leHRWYWxpZFRhcmdldElk
ZW50aWZpZXIpKTsKKyAgICByZXR1cm4gbmV4dFZhbGlkVGFyZ2V0SWRlbnRpZmllcjsKK30KKwor
dm9pZCBSZW1vdGVJbnNwZWN0b3I6OnJlZ2lzdGVyVGFyZ2V0KFJlbW90ZUNvbnRyb2xsYWJsZVRh
cmdldCogdGFyZ2V0KQoreworICAgIEFTU0VSVF9BUkcodGFyZ2V0LCB0YXJnZXQpOworCisgICAg
c3RkOjpsb2NrX2d1YXJkPExvY2s+IGxvY2sobV9tdXRleCk7CisKKyAgICB1bnNpZ25lZCB0YXJn
ZXRJZGVudGlmaWVyID0gbmV4dEF2YWlsYWJsZVRhcmdldElkZW50aWZpZXIoKTsKKyAgICB0YXJn
ZXQtPnNldFRhcmdldElkZW50aWZpZXIodGFyZ2V0SWRlbnRpZmllcik7CisKKyAgICB7CisgICAg
ICAgIGF1dG8gcmVzdWx0ID0gbV90YXJnZXRNYXAuc2V0KHRhcmdldElkZW50aWZpZXIsIHRhcmdl
dCk7CisgICAgICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQuaXNOZXdFbnRyeSk7Cisg
ICAgfQorCisgICAgLy8gSWYgcmVtb3RlIGNvbnRyb2wgaXMgbm90IGFsbG93ZWQsIGEgbnVsbCBs
aXN0aW5nIGlzIHJldHVybmVkLgorICAgIGlmIChhdXRvIHRhcmdldExpc3RpbmcgPSBsaXN0aW5n
Rm9yVGFyZ2V0KCp0YXJnZXQpKSB7CisgICAgICAgIGF1dG8gcmVzdWx0ID0gbV90YXJnZXRMaXN0
aW5nTWFwLnNldCh0YXJnZXRJZGVudGlmaWVyLCB0YXJnZXRMaXN0aW5nKTsKKyAgICAgICAgQVNT
RVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdC5pc05ld0VudHJ5KTsKKyAgICB9CisKKyAgICBwdXNo
TGlzdGluZ3NTb29uKCk7Cit9CisKK3ZvaWQgUmVtb3RlSW5zcGVjdG9yOjp1bnJlZ2lzdGVyVGFy
Z2V0KFJlbW90ZUNvbnRyb2xsYWJsZVRhcmdldCogdGFyZ2V0KQoreworICAgIEFTU0VSVF9BUkco
dGFyZ2V0LCB0YXJnZXQpOworCisgICAgc3RkOjpsb2NrX2d1YXJkPExvY2s+IGxvY2sobV9tdXRl
eCk7CisKKyAgICB1bnNpZ25lZCB0YXJnZXRJZGVudGlmaWVyID0gdGFyZ2V0LT50YXJnZXRJZGVu
dGlmaWVyKCk7CisgICAgaWYgKCF0YXJnZXRJZGVudGlmaWVyKQorICAgICAgICByZXR1cm47CisK
KyAgICBib29sIHdhc1JlbW92ZWQgPSBtX3RhcmdldE1hcC5yZW1vdmUodGFyZ2V0SWRlbnRpZmll
cik7CisgICAgQVNTRVJUX1VOVVNFRCh3YXNSZW1vdmVkLCB3YXNSZW1vdmVkKTsKKworICAgIC8v
IFRoZSBsaXN0aW5nIG1heSBuZXZlciBoYXZlIGJlZW4gYWRkZWQgaWYgcmVtb3RlIGNvbnRyb2wg
aXNuJ3QgYWxsb3dlZC4KKyAgICBtX3RhcmdldExpc3RpbmdNYXAucmVtb3ZlKHRhcmdldElkZW50
aWZpZXIpOworCisgICAgaWYgKGF1dG8gY29ubmVjdGlvblRvVGFyZ2V0ID0gbV90YXJnZXRDb25u
ZWN0aW9uTWFwLnRha2UodGFyZ2V0SWRlbnRpZmllcikpCisgICAgICAgIGNvbm5lY3Rpb25Ub1Rh
cmdldC0+dGFyZ2V0Q2xvc2VkKCk7CisKKyAgICBwdXNoTGlzdGluZ3NTb29uKCk7Cit9CisKK3Zv
aWQgUmVtb3RlSW5zcGVjdG9yOjp1cGRhdGVUYXJnZXQoUmVtb3RlQ29udHJvbGxhYmxlVGFyZ2V0
KiB0YXJnZXQpCit7CisgICAgQVNTRVJUX0FSRyh0YXJnZXQsIHRhcmdldCk7CisKKyAgICBzdGQ6
OmxvY2tfZ3VhcmQ8TG9jaz4gbG9jayhtX211dGV4KTsKKworICAgIHVuc2lnbmVkIHRhcmdldElk
ZW50aWZpZXIgPSB0YXJnZXQtPnRhcmdldElkZW50aWZpZXIoKTsKKyAgICBpZiAoIXRhcmdldElk
ZW50aWZpZXIpCisgICAgICAgIHJldHVybjsKKworICAgIHsKKyAgICAgICAgYXV0byByZXN1bHQg
PSBtX3RhcmdldE1hcC5zZXQodGFyZ2V0SWRlbnRpZmllciwgdGFyZ2V0KTsKKyAgICAgICAgQVNT
RVJUX1VOVVNFRChyZXN1bHQsICFyZXN1bHQuaXNOZXdFbnRyeSk7CisgICAgfQorCisgICAgLy8g
SWYgdGhlIHRhcmdldCBoYXMganVzdCBhbGxvd2VkIHJlbW90ZSBjb250cm9sLCB0aGVuIHRoZSBs
aXN0aW5nIHdvbid0IGV4aXN0IHlldC4KKyAgICAvLyBJZiB0aGUgdGFyZ2V0IGhhcyBubyBpZGVu
dGlmaWVyIHJlbW92ZSB0aGUgb2xkIGxpc3RpbmcuCisgICAgaWYgKGF1dG8gdGFyZ2V0TGlzdGlu
ZyA9IGxpc3RpbmdGb3JUYXJnZXQoKnRhcmdldCkpCisgICAgICAgIG1fdGFyZ2V0TGlzdGluZ01h
cC5zZXQodGFyZ2V0SWRlbnRpZmllciwgdGFyZ2V0TGlzdGluZyk7CisgICAgZWxzZQorICAgICAg
ICBtX3RhcmdldExpc3RpbmdNYXAucmVtb3ZlKHRhcmdldElkZW50aWZpZXIpOworCisgICAgcHVz
aExpc3RpbmdzU29vbigpOworfQorCit2b2lkIFJlbW90ZUluc3BlY3Rvcjo6dXBkYXRlQ2xpZW50
Q2FwYWJpbGl0aWVzKCkKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworCisgICAgc3Rk
Ojpsb2NrX2d1YXJkPExvY2s+IGxvY2sobV9tdXRleCk7CisKKyAgICBpZiAoIW1fY2xpZW50KQor
ICAgICAgICBtX2NsaWVudENhcGFiaWxpdGllcyA9IHN0ZDo6bnVsbG9wdDsKKyAgICBlbHNlIHsK
KyAgICAgICAgUmVtb3RlSW5zcGVjdG9yOjpDbGllbnQ6OkNhcGFiaWxpdGllcyB1cGRhdGVkQ2Fw
YWJpbGl0aWVzID0geworICAgICAgICAgICAgbV9jbGllbnQtPnJlbW90ZUF1dG9tYXRpb25BbGxv
d2VkKCkgLy8gcmVtb3RlQXV0b21hdGlvbkFsbG93ZWQKKyAgICAgICAgfTsKKworICAgICAgICBt
X2NsaWVudENhcGFiaWxpdGllcyA9IHVwZGF0ZWRDYXBhYmlsaXRpZXM7CisgICAgfQorfQorCit2
b2lkIFJlbW90ZUluc3BlY3Rvcjo6c2V0UmVtb3RlSW5zcGVjdG9yQ2xpZW50KFJlbW90ZUluc3Bl
Y3Rvcjo6Q2xpZW50KiBjbGllbnQpCit7CisgICAgQVNTRVJUX0FSRyhjbGllbnQsIGNsaWVudCk7
CisgICAgQVNTRVJUKCFtX2NsaWVudCk7CisKKyAgICB7CisgICAgICAgIHN0ZDo6bG9ja19ndWFy
ZDxMb2NrPiBsb2NrKG1fbXV0ZXgpOworICAgICAgICBtX2NsaWVudCA9IGNsaWVudDsKKyAgICB9
CisKKyAgICAvLyBTZW5kIGFuIHVwZGF0ZWQgbGlzdGluZyB0aGF0IGluY2x1ZGVzIHdoZXRoZXIg
dGhlIGNsaWVudCBhbGxvd3MgcmVtb3RlIGF1dG9tYXRpb24uCisgICAgdXBkYXRlQ2xpZW50Q2Fw
YWJpbGl0aWVzKCk7CisgICAgcHVzaExpc3RpbmdzU29vbigpOworfQorCit2b2lkIFJlbW90ZUlu
c3BlY3Rvcjo6c2V0dXBGYWlsZWQodW5zaWduZWQgdGFyZ2V0SWRlbnRpZmllcikKK3sKKyAgICBz
dGQ6OmxvY2tfZ3VhcmQ8TG9jaz4gbG9jayhtX211dGV4KTsKKworICAgIG1fdGFyZ2V0Q29ubmVj
dGlvbk1hcC5yZW1vdmUodGFyZ2V0SWRlbnRpZmllcik7CisKKyAgICB1cGRhdGVIYXNBY3RpdmVE
ZWJ1Z1Nlc3Npb24oKTsKKworICAgIGlmICh0YXJnZXRJZGVudGlmaWVyID09IG1fYXV0b21hdGlj
SW5zcGVjdGlvbkNhbmRpZGF0ZVRhcmdldElkZW50aWZpZXIpCisgICAgICAgIG1fYXV0b21hdGlj
SW5zcGVjdGlvblBhdXNlZCA9IGZhbHNlOworCisgICAgcHVzaExpc3RpbmdzU29vbigpOworfQor
Cit2b2lkIFJlbW90ZUluc3BlY3Rvcjo6c2V0dXBDb21wbGV0ZWQodW5zaWduZWQgdGFyZ2V0SWRl
bnRpZmllcikKK3sKKyAgICBzdGQ6OmxvY2tfZ3VhcmQ8TG9jaz4gbG9jayhtX211dGV4KTsKKwor
ICAgIGlmICh0YXJnZXRJZGVudGlmaWVyID09IG1fYXV0b21hdGljSW5zcGVjdGlvbkNhbmRpZGF0
ZVRhcmdldElkZW50aWZpZXIpCisgICAgICAgIG1fYXV0b21hdGljSW5zcGVjdGlvblBhdXNlZCA9
IGZhbHNlOworfQorCitib29sIFJlbW90ZUluc3BlY3Rvcjo6d2FpdGluZ0ZvckF1dG9tYXRpY0lu
c3BlY3Rpb24odW5zaWduZWQpCit7CisgICAgLy8gV2UgZG9uJ3QgdGFrZSB0aGUgbG9jayB0byBj
aGVjayB0aGlzIGJlY2F1c2Ugd2UgYXNzdW1lIGl0IHdpbGwgYmUgY2hlY2tlZCByZXBlYXRlZGx5
LgorICAgIHJldHVybiBtX2F1dG9tYXRpY0luc3BlY3Rpb25QYXVzZWQ7Cit9CisKK3ZvaWQgUmVt
b3RlSW5zcGVjdG9yOjpjbGllbnRDYXBhYmlsaXRpZXNEaWRDaGFuZ2UoKQoreworICAgIHVwZGF0
ZUNsaWVudENhcGFiaWxpdGllcygpOworICAgIHB1c2hMaXN0aW5nc1Nvb24oKTsKK30KKwordm9p
ZCBSZW1vdGVJbnNwZWN0b3I6OnN0b3AoKQoreworICAgIHN0ZDo6bG9ja19ndWFyZDxMb2NrPiBs
b2NrKG1fbXV0ZXgpOworCisgICAgc3RvcEludGVybmFsKFN0b3BTb3VyY2U6OkFQSSk7Cit9CisK
K1RhcmdldExpc3RpbmcgUmVtb3RlSW5zcGVjdG9yOjpsaXN0aW5nRm9yVGFyZ2V0KGNvbnN0IFJl
bW90ZUNvbnRyb2xsYWJsZVRhcmdldCYgdGFyZ2V0KSBjb25zdAoreworICAgIGlmIChpczxSZW1v
dGVJbnNwZWN0aW9uVGFyZ2V0Pih0YXJnZXQpKQorICAgICAgICByZXR1cm4gbGlzdGluZ0Zvcklu
c3BlY3Rpb25UYXJnZXQoZG93bmNhc3Q8UmVtb3RlSW5zcGVjdGlvblRhcmdldD4odGFyZ2V0KSk7
CisgICAgaWYgKGlzPFJlbW90ZUF1dG9tYXRpb25UYXJnZXQ+KHRhcmdldCkpCisgICAgICAgIHJl
dHVybiBsaXN0aW5nRm9yQXV0b21hdGlvblRhcmdldChkb3duY2FzdDxSZW1vdGVBdXRvbWF0aW9u
VGFyZ2V0Pih0YXJnZXQpKTsKKworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVy
biBudWxscHRyOworfQorCit2b2lkIFJlbW90ZUluc3BlY3Rvcjo6dXBkYXRlSGFzQWN0aXZlRGVi
dWdTZXNzaW9uKCkKK3sKKyAgICBib29sIGhhc0FjdGl2ZURlYnVnZ2VyU2Vzc2lvbiA9ICFtX3Rh
cmdldENvbm5lY3Rpb25NYXAuaXNFbXB0eSgpOworICAgIGlmIChoYXNBY3RpdmVEZWJ1Z2dlclNl
c3Npb24gPT0gbV9oYXNBY3RpdmVEZWJ1Z1Nlc3Npb24pCisgICAgICAgIHJldHVybjsKKworICAg
IG1faGFzQWN0aXZlRGVidWdTZXNzaW9uID0gaGFzQWN0aXZlRGVidWdnZXJTZXNzaW9uOworCisg
ICAgLy8gRklYTUU6IEV4cG9zZSBzb21lIHdheSB0byBhY2Nlc3MgdGhpcyBzdGF0ZSBpbiBhbiBl
bWJlZGRlci4KKyAgICAvLyBMZWdhY3kgaU9TIFdlYktpdCAxIGhhZCBhIG5vdGlmaWNhdGlvbi4g
VGhpcyB3aWxsIG5lZWQgdG8gYmUgc21hcnRlciB3aXRoIFdlYktpdDIuCit9CisKK30gLy8gbmFt
ZXNwYWNlIEluc3BlY3RvcgorCisjZW5kaWYgLy8gRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJ
bnNwZWN0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90
ZUluc3BlY3Rvci5oCmluZGV4IDkzZmQxYTcuLjIxYTdlMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3Rvci5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3Rvci5oCkBA
IC0yNywxNCArMjcsMTggQEAKIAogI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQogCi0jaW1w
b3J0ICJSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uLmgiCi0jaW1wb3J0IDx3dGYvRm9yd2Fy
ZC5oPgotI2ltcG9ydCA8d3RmL0hhc2hNYXAuaD4KLSNpbXBvcnQgPHd0Zi9Mb2NrLmg+Ci0jaW1w
b3J0IDx3dGYvUmV0YWluUHRyLmg+CisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRl
IDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CisKKyNpZiBQTEFURk9STShD
T0NPQSkKKyNpbmNsdWRlICJSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uLmgiCisjaW5jbHVk
ZSA8d3RmL1JldGFpblB0ci5oPgogCiBPQkpDX0NMQVNTIE5TRGljdGlvbmFyeTsKIE9CSkNfQ0xB
U1MgTlNTdHJpbmc7Cit0eXBlZGVmIFJldGFpblB0cjxOU0RpY3Rpb25hcnk+IFRhcmdldExpc3Rp
bmc7CisjZW5kaWYKIAogbmFtZXNwYWNlIEluc3BlY3RvciB7CiAKQEAgLTQ0LDcgKzQ4LDExIEBA
IGNsYXNzIFJlbW90ZUNvbnRyb2xsYWJsZVRhcmdldDsKIGNsYXNzIFJlbW90ZUluc3BlY3Rpb25U
YXJnZXQ7CiBjbGFzcyBSZW1vdGVJbnNwZWN0b3JDbGllbnQ7CiAKLWNsYXNzIEpTX0VYUE9SVF9Q
UklWQVRFIFJlbW90ZUluc3BlY3RvciBmaW5hbCA6IHB1YmxpYyBSZW1vdGVJbnNwZWN0b3JYUEND
b25uZWN0aW9uOjpDbGllbnQgeworY2xhc3MgSlNfRVhQT1JUX1BSSVZBVEUgUmVtb3RlSW5zcGVj
dG9yIGZpbmFsCisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgOiBwdWJsaWMgUmVtb3RlSW5zcGVj
dG9yWFBDQ29ubmVjdGlvbjo6Q2xpZW50CisjZW5kaWYKK3sKIHB1YmxpYzoKICAgICBjbGFzcyBD
bGllbnQgewogICAgIHB1YmxpYzoKQEAgLTgwLDExICs4OCwxMyBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBzdGFydCgpOwogICAgIHZvaWQgc3RvcCgpOwogCisjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAg
Ym9vbCBoYXNQYXJlbnRQcm9jZXNzSW5mb3JtYXRpb24oKSBjb25zdCB7IHJldHVybiBtX3BhcmVu
dFByb2Nlc3NJZGVudGlmaWVyICE9IDA7IH0KICAgICBwaWRfdCBwYXJlbnRQcm9jZXNzSWRlbnRp
ZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fcGFyZW50UHJvY2Vzc0lkZW50aWZpZXI7IH0KICAgICBS
ZXRhaW5QdHI8Q0ZEYXRhUmVmPiBwYXJlbnRQcm9jZXNzQXVkaXREYXRhKCkgY29uc3QgeyByZXR1
cm4gbV9wYXJlbnRQcm9jZXNzQXVkaXREYXRhOyB9CiAgICAgdm9pZCBzZXRQYXJlbnRQcm9jZXNz
SW5mb3JtYXRpb24ocGlkX3QsIFJldGFpblB0cjxDRkRhdGFSZWY+IGF1ZGl0RGF0YSk7CiAgICAg
dm9pZCBzZXRQYXJlbnRQcm9jZXNzSW5mb21hdGlvbklzRGVsYXllZCgpOworI2VuZGlmCiAKIHBy
aXZhdGU6CiAgICAgUmVtb3RlSW5zcGVjdG9yKCk7CkBAIC05NCwxMSArMTA0LDE0IEBAIHByaXZh
dGU6CiAgICAgZW51bSBjbGFzcyBTdG9wU291cmNlIHsgQVBJLCBYUENNZXNzYWdlIH07CiAgICAg
dm9pZCBzdG9wSW50ZXJuYWwoU3RvcFNvdXJjZSk7CiAKKyNpZiBQTEFURk9STShDT0NPQSkKICAg
ICB2b2lkIHNldHVwWFBDQ29ubmVjdGlvbklmTmVlZGVkKCk7CisjZW5kaWYKKworICAgIFRhcmdl
dExpc3RpbmcgbGlzdGluZ0ZvclRhcmdldChjb25zdCBSZW1vdGVDb250cm9sbGFibGVUYXJnZXQm
KSBjb25zdDsKKyAgICBUYXJnZXRMaXN0aW5nIGxpc3RpbmdGb3JJbnNwZWN0aW9uVGFyZ2V0KGNv
bnN0IFJlbW90ZUluc3BlY3Rpb25UYXJnZXQmKSBjb25zdDsKKyAgICBUYXJnZXRMaXN0aW5nIGxp
c3RpbmdGb3JBdXRvbWF0aW9uVGFyZ2V0KGNvbnN0IFJlbW90ZUF1dG9tYXRpb25UYXJnZXQmKSBj
b25zdDsKIAotICAgIFJldGFpblB0cjxOU0RpY3Rpb25hcnk+IGxpc3RpbmdGb3JUYXJnZXQoY29u
c3QgUmVtb3RlQ29udHJvbGxhYmxlVGFyZ2V0JikgY29uc3Q7Ci0gICAgUmV0YWluUHRyPE5TRGlj
dGlvbmFyeT4gbGlzdGluZ0Zvckluc3BlY3Rpb25UYXJnZXQoY29uc3QgUmVtb3RlSW5zcGVjdGlv
blRhcmdldCYpIGNvbnN0OwotICAgIFJldGFpblB0cjxOU0RpY3Rpb25hcnk+IGxpc3RpbmdGb3JB
dXRvbWF0aW9uVGFyZ2V0KGNvbnN0IFJlbW90ZUF1dG9tYXRpb25UYXJnZXQmKSBjb25zdDsKICAg
ICB2b2lkIHB1c2hMaXN0aW5nc05vdygpOwogICAgIHZvaWQgcHVzaExpc3RpbmdzU29vbigpOwog
CkBAIC0xMDcsNiArMTIwLDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgc2VuZEF1dG9tYXRpY0lu
c3BlY3Rpb25DYW5kaWRhdGVNZXNzYWdlKCk7CiAKKyNpZiBQTEFURk9STShDT0NPQSkKICAgICB2
b2lkIHhwY0Nvbm5lY3Rpb25SZWNlaXZlZE1lc3NhZ2UoUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVj
dGlvbiosIE5TU3RyaW5nICptZXNzYWdlTmFtZSwgTlNEaWN0aW9uYXJ5ICp1c2VySW5mbykgb3Zl
cnJpZGU7CiAgICAgdm9pZCB4cGNDb25uZWN0aW9uRmFpbGVkKFJlbW90ZUluc3BlY3RvclhQQ0Nv
bm5lY3Rpb24qKSBvdmVycmlkZTsKICAgICB2b2lkIHhwY0Nvbm5lY3Rpb25VbmhhbmRsZWRNZXNz
YWdlKFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24qLCB4cGNfb2JqZWN0X3QpIG92ZXJyaWRl
OwpAQCAtMTIxLDYgKzEzNSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCByZWNlaXZlZEF1dG9tYXRp
Y0luc3BlY3Rpb25Db25maWd1cmF0aW9uTWVzc2FnZShOU0RpY3Rpb25hcnkgKnVzZXJJbmZvKTsK
ICAgICB2b2lkIHJlY2VpdmVkQXV0b21hdGljSW5zcGVjdGlvblJlamVjdE1lc3NhZ2UoTlNEaWN0
aW9uYXJ5ICp1c2VySW5mbyk7CiAgICAgdm9pZCByZWNlaXZlZEF1dG9tYXRpb25TZXNzaW9uUmVx
dWVzdE1lc3NhZ2UoTlNEaWN0aW9uYXJ5ICp1c2VySW5mbyk7CisjZW5kaWYKIAogICAgIHN0YXRp
YyBib29sIHN0YXJ0RW5hYmxlZDsKIApAQCAtMTMxLDE1ICsxNDYsMTkgQEAgcHJpdmF0ZToKICAg
ICBMb2NrIG1fbXV0ZXg7CiAKICAgICBIYXNoTWFwPHVuc2lnbmVkLCBSZW1vdGVDb250cm9sbGFi
bGVUYXJnZXQqPiBtX3RhcmdldE1hcDsKLSAgICBIYXNoTWFwPHVuc2lnbmVkLCBSZXRhaW5QdHI8
TlNEaWN0aW9uYXJ5Pj4gbV90YXJnZXRMaXN0aW5nTWFwOwogICAgIEhhc2hNYXA8dW5zaWduZWQs
IFJlZlB0cjxSZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQ+PiBtX3RhcmdldENvbm5lY3Rpb25NYXA7
CisgICAgSGFzaE1hcDx1bnNpZ25lZCwgVGFyZ2V0TGlzdGluZz4gbV90YXJnZXRMaXN0aW5nTWFw
OwogCisjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgUmVmUHRyPFJlbW90ZUluc3BlY3RvclhQQ0Nv
bm5lY3Rpb24+IG1fcmVsYXlDb25uZWN0aW9uOworI2VuZGlmCiAKICAgICBSZW1vdGVJbnNwZWN0
b3I6OkNsaWVudCogbV9jbGllbnQgeyBudWxscHRyIH07CiAgICAgc3RkOjpvcHRpb25hbDxSZW1v
dGVJbnNwZWN0b3I6OkNsaWVudDo6Q2FwYWJpbGl0aWVzPiBtX2NsaWVudENhcGFiaWxpdGllczsK
IAorI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIGRpc3BhdGNoX3F1ZXVlX3QgbV94cGNRdWV1ZTsK
KyNlbmRpZgogICAgIHVuc2lnbmVkIG1fbmV4dEF2YWlsYWJsZVRhcmdldElkZW50aWZpZXIgeyAx
IH07CiAgICAgaW50IG1fbm90aWZ5VG9rZW4geyAwIH07CiAgICAgYm9vbCBtX2VuYWJsZWQgeyBm
YWxzZSB9OwpAQCAtMTQ3LDcgKzE2Niw5IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX3B1c2hTY2hl
ZHVsZWQgeyBmYWxzZSB9OwogCiAgICAgcGlkX3QgbV9wYXJlbnRQcm9jZXNzSWRlbnRpZmllciB7
IDAgfTsKKyNpZiBQTEFURk9STShDT0NPQSkKICAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBtX3Bh
cmVudFByb2Nlc3NBdWRpdERhdGE7CisjZW5kaWYKICAgICBib29sIG1fc2hvdWxkU2VuZFBhcmVu
dFByb2Nlc3NJbmZvcm1hdGlvbiB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2F1dG9tYXRpY0luc3Bl
Y3Rpb25FbmFibGVkIHsgZmFsc2UgfTsKICAgICBib29sIG1fYXV0b21hdGljSW5zcGVjdGlvblBh
dXNlZCB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL3JlbW90ZS9SZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQubW0gYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL3JlbW90ZS9jb2NvYS9SZW1vdGVDb25uZWN0aW9uVG9UYXJnZXRDb2Nv
YS5tbQpzaW1pbGFyaXR5IGluZGV4IDk5JQpyZW5hbWUgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQubW0KcmVuYW1lIHRv
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL2NvY29hL1JlbW90ZUNvbm5l
Y3Rpb25Ub1RhcmdldENvY29hLm1tCmluZGV4IGQ2MGRhNDguLmViYTQ2OWQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUNvbm5lY3Rpb25U
b1RhcmdldC5tbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9j
b2NvYS9SZW1vdGVDb25uZWN0aW9uVG9UYXJnZXRDb2NvYS5tbQpAQCAtMzEsNiArMzEsNyBAQAog
I2ltcG9ydCAiRXZlbnRMb29wLmgiCiAjaW1wb3J0ICJSZW1vdGVBdXRvbWF0aW9uVGFyZ2V0Lmgi
CiAjaW1wb3J0ICJSZW1vdGVJbnNwZWN0aW9uVGFyZ2V0LmgiCisjaW1wb3J0ICJSZW1vdGVJbnNw
ZWN0b3IuaCIKICNpbXBvcnQgPGRpc3BhdGNoL2Rpc3BhdGNoLmg+CiAjaW1wb3J0IDx3dGYvT3B0
aW9uYWwuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9y
ZW1vdGUvUmVtb3RlSW5zcGVjdG9yLm1tIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9yZW1vdGUvY29jb2EvUmVtb3RlSW5zcGVjdG9yQ29jb2EubW0Kc2ltaWxhcml0eSBpbmRleCA4
MyUKcmVuYW1lIGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVt
b3RlSW5zcGVjdG9yLm1tCnJlbmFtZSB0byBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L3JlbW90ZS9jb2NvYS9SZW1vdGVJbnNwZWN0b3JDb2NvYS5tbQppbmRleCAyMWNiMjMyLi5iZWY1
YmJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9S
ZW1vdGVJbnNwZWN0b3IubW0KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9y
ZW1vdGUvY29jb2EvUmVtb3RlSW5zcGVjdG9yQ29jb2EubW0KQEAgLTYxLDEzICs2MSw2IEBAIHN0
YXRpYyBib29sIGdsb2JhbEF1dG9tYXRpY0luc3BlY3Rpb25TdGF0ZSgpCiAgICAgcmV0dXJuIGF1
dG9tYXRpY0luc3BlY3Rpb25FbmFibGVkID09IDE7CiB9CiAKLWJvb2wgUmVtb3RlSW5zcGVjdG9y
OjpzdGFydEVuYWJsZWQgPSB0cnVlOwotCi12b2lkIFJlbW90ZUluc3BlY3Rvcjo6c3RhcnREaXNh
YmxlZCgpCi17Ci0gICAgUmVtb3RlSW5zcGVjdG9yOjpzdGFydEVuYWJsZWQgPSBmYWxzZTsKLX0K
LQogUmVtb3RlSW5zcGVjdG9yJiBSZW1vdGVJbnNwZWN0b3I6OnNpbmdsZXRvbigpCiB7CiAgICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPFJlbW90ZUluc3BlY3Rvcj4gc2hhcmVkOwpAQCAtMTAxLDg1
ICs5NCw2IEBAIFJlbW90ZUluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yKCkKIHsKIH0KIAotdW5z
aWduZWQgUmVtb3RlSW5zcGVjdG9yOjpuZXh0QXZhaWxhYmxlVGFyZ2V0SWRlbnRpZmllcigpCi17
Ci0gICAgdW5zaWduZWQgbmV4dFZhbGlkVGFyZ2V0SWRlbnRpZmllcjsKLSAgICBkbyB7Ci0gICAg
ICAgIG5leHRWYWxpZFRhcmdldElkZW50aWZpZXIgPSBtX25leHRBdmFpbGFibGVUYXJnZXRJZGVu
dGlmaWVyKys7Ci0gICAgfSB3aGlsZSAoIW5leHRWYWxpZFRhcmdldElkZW50aWZpZXIgfHwgbmV4
dFZhbGlkVGFyZ2V0SWRlbnRpZmllciA9PSBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6
bWF4KCkgfHwgbV90YXJnZXRNYXAuY29udGFpbnMobmV4dFZhbGlkVGFyZ2V0SWRlbnRpZmllcikp
OwotICAgIHJldHVybiBuZXh0VmFsaWRUYXJnZXRJZGVudGlmaWVyOwotfQotCi12b2lkIFJlbW90
ZUluc3BlY3Rvcjo6cmVnaXN0ZXJUYXJnZXQoUmVtb3RlQ29udHJvbGxhYmxlVGFyZ2V0KiB0YXJn
ZXQpCi17Ci0gICAgQVNTRVJUX0FSRyh0YXJnZXQsIHRhcmdldCk7Ci0KLSAgICBzdGQ6OmxvY2tf
Z3VhcmQ8TG9jaz4gbG9jayhtX211dGV4KTsKLQotICAgIHVuc2lnbmVkIHRhcmdldElkZW50aWZp
ZXIgPSBuZXh0QXZhaWxhYmxlVGFyZ2V0SWRlbnRpZmllcigpOwotICAgIHRhcmdldC0+c2V0VGFy
Z2V0SWRlbnRpZmllcih0YXJnZXRJZGVudGlmaWVyKTsKLQotICAgIHsKLSAgICAgICAgYXV0byBy
ZXN1bHQgPSBtX3RhcmdldE1hcC5zZXQodGFyZ2V0SWRlbnRpZmllciwgdGFyZ2V0KTsKLSAgICAg
ICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdC5pc05ld0VudHJ5KTsKLSAgICB9Ci0KLSAg
ICAvLyBJZiByZW1vdGUgY29udHJvbCBpcyBub3QgYWxsb3dlZCwgYSBudWxsIGxpc3RpbmcgaXMg
cmV0dXJuZWQuCi0gICAgaWYgKFJldGFpblB0cjxOU0RpY3Rpb25hcnk+IHRhcmdldExpc3Rpbmcg
PSBsaXN0aW5nRm9yVGFyZ2V0KCp0YXJnZXQpKSB7Ci0gICAgICAgIGF1dG8gcmVzdWx0ID0gbV90
YXJnZXRMaXN0aW5nTWFwLnNldCh0YXJnZXRJZGVudGlmaWVyLCB0YXJnZXRMaXN0aW5nKTsKLSAg
ICAgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdC5pc05ld0VudHJ5KTsKLSAgICB9Ci0K
LSAgICBwdXNoTGlzdGluZ3NTb29uKCk7Ci19Ci0KLXZvaWQgUmVtb3RlSW5zcGVjdG9yOjp1bnJl
Z2lzdGVyVGFyZ2V0KFJlbW90ZUNvbnRyb2xsYWJsZVRhcmdldCogdGFyZ2V0KQotewotICAgIEFT
U0VSVF9BUkcodGFyZ2V0LCB0YXJnZXQpOwotCi0gICAgc3RkOjpsb2NrX2d1YXJkPExvY2s+IGxv
Y2sobV9tdXRleCk7Ci0KLSAgICB1bnNpZ25lZCB0YXJnZXRJZGVudGlmaWVyID0gdGFyZ2V0LT50
YXJnZXRJZGVudGlmaWVyKCk7Ci0gICAgaWYgKCF0YXJnZXRJZGVudGlmaWVyKQotICAgICAgICBy
ZXR1cm47Ci0KLSAgICBib29sIHdhc1JlbW92ZWQgPSBtX3RhcmdldE1hcC5yZW1vdmUodGFyZ2V0
SWRlbnRpZmllcik7Ci0gICAgQVNTRVJUX1VOVVNFRCh3YXNSZW1vdmVkLCB3YXNSZW1vdmVkKTsK
LQotICAgIC8vIFRoZSBsaXN0aW5nIG1heSBuZXZlciBoYXZlIGJlZW4gYWRkZWQgaWYgcmVtb3Rl
IGNvbnRyb2wgaXNuJ3QgYWxsb3dlZC4KLSAgICBtX3RhcmdldExpc3RpbmdNYXAucmVtb3ZlKHRh
cmdldElkZW50aWZpZXIpOwotCi0gICAgaWYgKGF1dG8gY29ubmVjdGlvblRvVGFyZ2V0ID0gbV90
YXJnZXRDb25uZWN0aW9uTWFwLnRha2UodGFyZ2V0SWRlbnRpZmllcikpCi0gICAgICAgIGNvbm5l
Y3Rpb25Ub1RhcmdldC0+dGFyZ2V0Q2xvc2VkKCk7Ci0KLSAgICBwdXNoTGlzdGluZ3NTb29uKCk7
Ci19Ci0KLXZvaWQgUmVtb3RlSW5zcGVjdG9yOjp1cGRhdGVUYXJnZXQoUmVtb3RlQ29udHJvbGxh
YmxlVGFyZ2V0KiB0YXJnZXQpCi17Ci0gICAgQVNTRVJUX0FSRyh0YXJnZXQsIHRhcmdldCk7Ci0K
LSAgICBzdGQ6OmxvY2tfZ3VhcmQ8TG9jaz4gbG9jayhtX211dGV4KTsKLQotICAgIHVuc2lnbmVk
IHRhcmdldElkZW50aWZpZXIgPSB0YXJnZXQtPnRhcmdldElkZW50aWZpZXIoKTsKLSAgICBpZiAo
IXRhcmdldElkZW50aWZpZXIpCi0gICAgICAgIHJldHVybjsKLQotICAgIHsKLSAgICAgICAgYXV0
byByZXN1bHQgPSBtX3RhcmdldE1hcC5zZXQodGFyZ2V0SWRlbnRpZmllciwgdGFyZ2V0KTsKLSAg
ICAgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsICFyZXN1bHQuaXNOZXdFbnRyeSk7Ci0gICAgfQot
Ci0gICAgLy8gSWYgdGhlIHRhcmdldCBoYXMganVzdCBhbGxvd2VkIHJlbW90ZSBjb250cm9sLCB0
aGVuIHRoZSBsaXN0aW5nIHdvbid0IGV4aXN0IHlldC4KLSAgICAvLyBJZiB0aGUgdGFyZ2V0IGhh
cyBubyBpZGVudGlmaWVyIHJlbW92ZSB0aGUgb2xkIGxpc3RpbmcuCi0gICAgaWYgKFJldGFpblB0
cjxOU0RpY3Rpb25hcnk+IHRhcmdldExpc3RpbmcgPSBsaXN0aW5nRm9yVGFyZ2V0KCp0YXJnZXQp
KQotICAgICAgICBtX3RhcmdldExpc3RpbmdNYXAuc2V0KHRhcmdldElkZW50aWZpZXIsIHRhcmdl
dExpc3RpbmcpOwotICAgIGVsc2UKLSAgICAgICAgbV90YXJnZXRMaXN0aW5nTWFwLnJlbW92ZSh0
YXJnZXRJZGVudGlmaWVyKTsKLQotICAgIHB1c2hMaXN0aW5nc1Nvb24oKTsKLX0KLQogdm9pZCBS
ZW1vdGVJbnNwZWN0b3I6OnVwZGF0ZUF1dG9tYXRpY0luc3BlY3Rpb25DYW5kaWRhdGUoUmVtb3Rl
SW5zcGVjdGlvblRhcmdldCogdGFyZ2V0KQogewogICAgIEFTU0VSVF9BUkcodGFyZ2V0LCB0YXJn
ZXQpOwpAQCAtMjQ5LDM4ICsxNjMsNiBAQCB2b2lkIFJlbW90ZUluc3BlY3Rvcjo6dXBkYXRlQXV0
b21hdGljSW5zcGVjdGlvbkNhbmRpZGF0ZShSZW1vdGVJbnNwZWN0aW9uVGFyZ2V0KgogICAgIH0K
IH0KIAotdm9pZCBSZW1vdGVJbnNwZWN0b3I6OnVwZGF0ZUNsaWVudENhcGFiaWxpdGllcygpCi17
Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLQotICAgIHN0ZDo6bG9ja19ndWFyZDxMb2Nr
PiBsb2NrKG1fbXV0ZXgpOwotCi0gICAgaWYgKCFtX2NsaWVudCkKLSAgICAgICAgbV9jbGllbnRD
YXBhYmlsaXRpZXMgPSBzdGQ6Om51bGxvcHQ7Ci0gICAgZWxzZSB7Ci0gICAgICAgIFJlbW90ZUlu
c3BlY3Rvcjo6Q2xpZW50OjpDYXBhYmlsaXRpZXMgdXBkYXRlZENhcGFiaWxpdGllcyA9IHsKLSAg
ICAgICAgICAgIG1fY2xpZW50LT5yZW1vdGVBdXRvbWF0aW9uQWxsb3dlZCgpIC8vIHJlbW90ZUF1
dG9tYXRpb25BbGxvd2VkCi0gICAgICAgIH07Ci0KLSAgICAgICAgbV9jbGllbnRDYXBhYmlsaXRp
ZXMgPSB1cGRhdGVkQ2FwYWJpbGl0aWVzOwotICAgIH0KLX0KLQotdm9pZCBSZW1vdGVJbnNwZWN0
b3I6OnNldFJlbW90ZUluc3BlY3RvckNsaWVudChSZW1vdGVJbnNwZWN0b3I6OkNsaWVudCogY2xp
ZW50KQotewotICAgIEFTU0VSVF9BUkcoY2xpZW50LCBjbGllbnQpOwotICAgIEFTU0VSVCghbV9j
bGllbnQpOwotCi0gICAgewotICAgICAgICBzdGQ6OmxvY2tfZ3VhcmQ8TG9jaz4gbG9jayhtX211
dGV4KTsKLSAgICAgICAgbV9jbGllbnQgPSBjbGllbnQ7Ci0gICAgfQotCi0gICAgLy8gU2VuZCBh
biB1cGRhdGVkIGxpc3RpbmcgdGhhdCBpbmNsdWRlcyB3aGV0aGVyIHRoZSBjbGllbnQgYWxsb3dz
IHJlbW90ZSBhdXRvbWF0aW9uLgotICAgIHVwZGF0ZUNsaWVudENhcGFiaWxpdGllcygpOwotICAg
IHB1c2hMaXN0aW5nc1Nvb24oKTsKLX0KLQogdm9pZCBSZW1vdGVJbnNwZWN0b3I6OnNlbmRBdXRv
bWF0aWNJbnNwZWN0aW9uQ2FuZGlkYXRlTWVzc2FnZSgpCiB7CiAgICAgQVNTRVJUKG1fZW5hYmxl
ZCk7CkBAIC0zMTMsNDAgKzE5NSw2IEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9yOjpzZW5kTWVzc2Fn
ZVRvUmVtb3RlKHVuc2lnbmVkIHRhcmdldElkZW50aWZpZXIsIGNvbnN0IFN0cmluCiAgICAgbV9y
ZWxheUNvbm5lY3Rpb24tPnNlbmRNZXNzYWdlKFdJUlJhd0RhdGFNZXNzYWdlLCB1c2VySW5mbyk7
CiB9CiAKLXZvaWQgUmVtb3RlSW5zcGVjdG9yOjpzZXR1cEZhaWxlZCh1bnNpZ25lZCB0YXJnZXRJ
ZGVudGlmaWVyKQotewotICAgIHN0ZDo6bG9ja19ndWFyZDxMb2NrPiBsb2NrKG1fbXV0ZXgpOwot
Ci0gICAgbV90YXJnZXRDb25uZWN0aW9uTWFwLnJlbW92ZSh0YXJnZXRJZGVudGlmaWVyKTsKLQot
ICAgIHVwZGF0ZUhhc0FjdGl2ZURlYnVnU2Vzc2lvbigpOwotCi0gICAgaWYgKHRhcmdldElkZW50
aWZpZXIgPT0gbV9hdXRvbWF0aWNJbnNwZWN0aW9uQ2FuZGlkYXRlVGFyZ2V0SWRlbnRpZmllcikK
LSAgICAgICAgbV9hdXRvbWF0aWNJbnNwZWN0aW9uUGF1c2VkID0gZmFsc2U7Ci0KLSAgICBwdXNo
TGlzdGluZ3NTb29uKCk7Ci19Ci0KLXZvaWQgUmVtb3RlSW5zcGVjdG9yOjpzZXR1cENvbXBsZXRl
ZCh1bnNpZ25lZCB0YXJnZXRJZGVudGlmaWVyKQotewotICAgIHN0ZDo6bG9ja19ndWFyZDxMb2Nr
PiBsb2NrKG1fbXV0ZXgpOwotCi0gICAgaWYgKHRhcmdldElkZW50aWZpZXIgPT0gbV9hdXRvbWF0
aWNJbnNwZWN0aW9uQ2FuZGlkYXRlVGFyZ2V0SWRlbnRpZmllcikKLSAgICAgICAgbV9hdXRvbWF0
aWNJbnNwZWN0aW9uUGF1c2VkID0gZmFsc2U7Ci19Ci0KLWJvb2wgUmVtb3RlSW5zcGVjdG9yOjp3
YWl0aW5nRm9yQXV0b21hdGljSW5zcGVjdGlvbih1bnNpZ25lZCkKLXsKLSAgICAvLyBXZSBkb24n
dCB0YWtlIHRoZSBsb2NrIHRvIGNoZWNrIHRoaXMgYmVjYXVzZSB3ZSBhc3N1bWUgaXQgd2lsbCBi
ZSBjaGVja2VkIHJlcGVhdGVkbHkuCi0gICAgcmV0dXJuIG1fYXV0b21hdGljSW5zcGVjdGlvblBh
dXNlZDsKLX0KLQotdm9pZCBSZW1vdGVJbnNwZWN0b3I6OmNsaWVudENhcGFiaWxpdGllc0RpZENo
YW5nZSgpCi17Ci0gICAgdXBkYXRlQ2xpZW50Q2FwYWJpbGl0aWVzKCk7Ci0gICAgcHVzaExpc3Rp
bmdzU29vbigpOwotfQotCiB2b2lkIFJlbW90ZUluc3BlY3Rvcjo6c3RhcnQoKQogewogICAgIHN0
ZDo6bG9ja19ndWFyZDxMb2NrPiBsb2NrKG1fbXV0ZXgpOwpAQCAtMzY5LDEzICsyMTcsNiBAQCB2
b2lkIFJlbW90ZUluc3BlY3Rvcjo6c3RhcnQoKQogICAgIG5vdGlmeV9wb3N0KFdJUlNlcnZpY2VB
dmFpbGFiaWxpdHlDaGVja05vdGlmaWNhdGlvbik7CiB9CiAKLXZvaWQgUmVtb3RlSW5zcGVjdG9y
OjpzdG9wKCkKLXsKLSAgICBzdGQ6OmxvY2tfZ3VhcmQ8TG9jaz4gbG9jayhtX211dGV4KTsKLQot
ICAgIHN0b3BJbnRlcm5hbChTdG9wU291cmNlOjpBUEkpOwotfQotCiB2b2lkIFJlbW90ZUluc3Bl
Y3Rvcjo6c3RvcEludGVybmFsKFN0b3BTb3VyY2Ugc291cmNlKQogewogICAgIGlmICghbV9lbmFi
bGVkKQpAQCAtNjE1LDIxICs0NTYsNiBAQCB2b2lkIFJlbW90ZUluc3BlY3Rvcjo6cHVzaExpc3Rp
bmdzU29vbigpCiAgICAgfSk7CiB9CiAKLSNwcmFnbWEgbWFyayAtIEFjdGl2ZSBEZWJ1Z2dlciBT
ZXNzaW9ucwotCi12b2lkIFJlbW90ZUluc3BlY3Rvcjo6dXBkYXRlSGFzQWN0aXZlRGVidWdTZXNz
aW9uKCkKLXsKLSAgICBib29sIGhhc0FjdGl2ZURlYnVnZ2VyU2Vzc2lvbiA9ICFtX3RhcmdldENv
bm5lY3Rpb25NYXAuaXNFbXB0eSgpOwotICAgIGlmIChoYXNBY3RpdmVEZWJ1Z2dlclNlc3Npb24g
PT0gbV9oYXNBY3RpdmVEZWJ1Z1Nlc3Npb24pCi0gICAgICAgIHJldHVybjsKLQotICAgIG1faGFz
QWN0aXZlRGVidWdTZXNzaW9uID0gaGFzQWN0aXZlRGVidWdnZXJTZXNzaW9uOwotCi0gICAgLy8g
RklYTUU6IEV4cG9zZSBzb21lIHdheSB0byBhY2Nlc3MgdGhpcyBzdGF0ZSBpbiBhbiBlbWJlZGRl
ci4KLSAgICAvLyBMZWdhY3kgaU9TIFdlYktpdCAxIGhhZCBhIG5vdGlmaWNhdGlvbi4gVGhpcyB3
aWxsIG5lZWQgdG8gYmUgc21hcnRlciB3aXRoIFdlYktpdDIuCi19Ci0KLQogI3ByYWdtYSBtYXJr
IC0gUmVjZWl2ZWQgWFBDIE1lc3NhZ2VzCiAKIHZvaWQgUmVtb3RlSW5zcGVjdG9yOjpyZWNlaXZl
ZFNldHVwTWVzc2FnZShOU0RpY3Rpb25hcnkgKnVzZXJJbmZvKQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVj
dGlvbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvY29jb2EvUmVt
b3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbi5oCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUg
ZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0
b3JYUENDb25uZWN0aW9uLmgKcmVuYW1lIHRvIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3IvcmVtb3RlL2NvY29hL1JlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24uaApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9y
WFBDQ29ubmVjdGlvbi5tbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3Rl
L2NvY29hL1JlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24ubW0Kc2ltaWxhcml0eSBpbmRleCAx
MDAlCnJlbmFtZSBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1Jl
bW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24ubW0KcmVuYW1lIHRvIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvcmVtb3RlL2NvY29hL1JlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24u
bW0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCmluZGV4IGMxMjgwMTgu
LjRkYTM0NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vz
cy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcApAQCAt
Mzc3LDcgKzM3Nyw3IEBAIHZvaWQgV2ViUHJvY2Vzczo6aW5pdGlhbGl6ZVdlYlByb2Nlc3MoV2Vi
UHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCiAgICAgc2V0RW5hYmxlZFNl
cnZpY2VzKHBhcmFtZXRlcnMuaGFzSW1hZ2VTZXJ2aWNlcywgcGFyYW1ldGVycy5oYXNTZWxlY3Rp
b25TZXJ2aWNlcywgcGFyYW1ldGVycy5oYXNSaWNoQ29udGVudFNlcnZpY2VzKTsKICNlbmRpZgog
Ci0jaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCisjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNU
T1IpICYmIFBMQVRGT1JNKENPQ09BKQogICAgIGF1ZGl0X3Rva2VuX3QgYXVkaXRUb2tlbjsKICAg
ICBpZiAocGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+Z2V0QXVkaXRUb2tlbihhdWRpdFRva2Vu
KSkgewogICAgICAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBhdWRpdERhdGEgPSBhZG9wdENGKENG
RGF0YUNyZWF0ZShudWxscHRyLCAoY29uc3QgVUludDgqKSZhdWRpdFRva2VuLCBzaXplb2YoYXVk
aXRUb2tlbikpKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>298469</attachid>
            <date>2017-01-10 08:47:14 -0800</date>
            <delta_ts>2017-01-10 08:58:54 -0800</delta_ts>
            <desc>WIP: try to fix the mac builds and some style issues</desc>
            <filename>wk-inspector-patch.diff</filename>
            <type>text/plain</type>
            <size>49411</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNSZW1vdGVJbnNwZWN0b3Iu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1JlbW90ZUluc3BlY3Rvci5jcHAKaW5k
ZXggZmFlYmM1ZGUzZTEuLjNiZTYxZDA5MjcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL0pTUmVtb3RlSW5zcGVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL0pTUmVtb3RlSW5zcGVjdG9yLmNwcApAQCAtNTAsOSArNTAsOSBAQCB2b2lkIEpTUmVt
b3RlSW5zcGVjdG9yU3RhcnQodm9pZCkKICNlbmRpZgogfQogCi12b2lkIEpTUmVtb3RlSW5zcGVj
dG9yU2V0UGFyZW50UHJvY2Vzc0luZm9ybWF0aW9uKHBpZF90IHBpZCwgY29uc3QgVUludDgqIGF1
ZGl0RGF0YSwgc2l6ZV90IGF1ZGl0TGVuZ3RoKQordm9pZCBKU1JlbW90ZUluc3BlY3RvclNldFBh
cmVudFByb2Nlc3NJbmZvcm1hdGlvbihwaWRfdCBwaWQsIGNvbnN0IHVpbnQ4X3QqIGF1ZGl0RGF0
YSwgc2l6ZV90IGF1ZGl0TGVuZ3RoKQogewotI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQor
I2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKSAmJiBQTEFURk9STShDT0NPQSkKICAgICBSZXRh
aW5QdHI8Q0ZEYXRhUmVmPiBhdWRpdERhdGFSZWYgPSBhZG9wdENGKENGRGF0YUNyZWF0ZShrQ0ZB
bGxvY2F0b3JEZWZhdWx0LCBhdWRpdERhdGEsIGF1ZGl0TGVuZ3RoKSk7CiAgICAgUmVtb3RlSW5z
cGVjdG9yOjpzaW5nbGV0b24oKS5zZXRQYXJlbnRQcm9jZXNzSW5mb3JtYXRpb24ocGlkLCBhdWRp
dERhdGFSZWYpOwogI2Vsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMTdlY2Iz
MWU5ZmIuLmM2ZjM4NDYxM2ViIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTQ0
OCw2ICsxNDQ4LDExIEBACiAJCTc5RUUwQzAwMUI0QUZCODUwMDAzODVDOSAvKiBWYXJpYWJsZUVu
dmlyb25tZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA3OUVFMEJGRTFCNEFGQjg1MDAwMzg1QzkgLyogVmFyaWFibGVFbnZpcm9ubWVudC5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTc5RjhGQzFFMUI5
RkVEMEYwMENBNjZBQiAvKiBERkdNYXhpbWFsRmx1c2hJbnNlcnRpb25QaGFzZS5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3OUY4RkMxQzFCOUZFRDBG
MDBDQTY2QUIgLyogREZHTWF4aW1hbEZsdXNoSW5zZXJ0aW9uUGhhc2UuY3BwICovOyB9OwogCQk3
OUY4RkMxRjFCOUZFRDBGMDBDQTY2QUIgLyogREZHTWF4aW1hbEZsdXNoSW5zZXJ0aW9uUGhhc2Uu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc5RjhGQzFE
MUI5RkVEMEYwMENBNjZBQiAvKiBERkdNYXhpbWFsRmx1c2hJbnNlcnRpb25QaGFzZS5oICovOyB9
OworCQk3QUNEREVENDFFMjUyQjREMDA5N0FGRUIgLyogUmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0
Q29jb2EubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3
QUNEREVEMDFFMjUyQjJCMDA5N0FGRUIgLyogUmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0Q29jb2Eu
bW0gKi87IH07CisJCTdBQ0RERUQ1MUUyNTJCNUUwMDk3QUZFQiAvKiBSZW1vdGVJbnNwZWN0b3JD
b2NvYS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdB
Q0RERUQxMUUyNTJCMkIwMDk3QUZFQiAvKiBSZW1vdGVJbnNwZWN0b3JDb2NvYS5tbSAqLzsgfTsK
KwkJN0FDRERFRDcxRTI1MkI2ODAwOTdBRkVCIC8qIFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rp
b24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBQ0RE
RUQyMUUyNTJCMkIwMDk3QUZFQiAvKiBSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uLmggKi87
IH07CisJCTdBQ0RERUQ4MUUyNTJCNkUwMDk3QUZFQiAvKiBSZW1vdGVJbnNwZWN0b3JYUENDb25u
ZWN0aW9uLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
N0FDRERFRDMxRTI1MkIyQjAwOTdBRkVCIC8qIFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24u
bW0gKi87IH07CisJCTdBQ0RERUQ5MUUyNTJCODMwMDk3QUZFQiAvKiBSZW1vdGVJbnNwZWN0b3Iu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0FDRERF
RDYxRTI1MkI1RjAwOTdBRkVCIC8qIFJlbW90ZUluc3BlY3Rvci5jcHAgKi87IH07CiAJCTdCQzU0
N0QzMUI2OTU5QTEwMDk1OUI1OCAvKiBXYXNtRm9ybWF0LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QkM1NDdEMjFCNjk1OTlCMDA5NTlCNTggLyogV2Fz
bUZvcm1hdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTdDMDA4Q0RBMTg3MTI0QkIwMDk1NUMyNCAvKiBKU1Byb21pc2VEZWZlcnJlZC5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzAwOENEODE4NzEy
NEJCMDA5NTVDMjQgLyogSlNQcm9taXNlRGVmZXJyZWQuY3BwICovOyB9OwogCQk3QzAwOENEQjE4
NzEyNEJCMDA5NTVDMjQgLyogSlNQcm9taXNlRGVmZXJyZWQuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDMDA4Q0Q5MTg3MTI0QkIwMDk1NUMyNCAvKiBK
U1Byb21pc2VEZWZlcnJlZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CkBAIC0xNzUyLDEyICsxNzU3LDggQEAKIAkJQTVBQjQ5REQxQkVDODA4NjAwNzAy
MEZCIC8qIFBlckdsb2JhbE9iamVjdFdyYXBwZXJXb3JsZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTVBQjQ5REIxQkVDODA3OTAwNzAyMEZCIC8qIFBl
ckdsb2JhbE9iamVjdFdyYXBwZXJXb3JsZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCUE1QjZBNzREMThDNkRCQTYwMEYxMUU5MSAvKiBDb25zb2xl
Q2xpZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEE1QjZBNzRDMThDNkRCQTYwMEYxMUU5MSAvKiBDb25zb2xlQ2xpZW50LmNwcCAqLzsgfTsKIAkJ
QTVCQTE1RTgxODIzNDBCMzAwQTgyRTY5IC8qIFJlbW90ZUluc3BlY3Rvci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTVCQTE1RTExODIzNDBCMzAwQTgy
RTY5IC8qIFJlbW90ZUluc3BlY3Rvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07Ci0JCUE1QkExNUU5MTgyMzQwQjMwMEE4MkU2OSAvKiBSZW1vdGVJbnNw
ZWN0b3IubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBB
NUJBMTVFMjE4MjM0MEIzMDBBODJFNjkgLyogUmVtb3RlSW5zcGVjdG9yLm1tICovOyB9OwogCQlB
NUJBMTVFQTE4MjM0MEI0MDBBODJFNjkgLyogUmVtb3RlSW5zcGVjdG9yQ29uc3RhbnRzLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNUJBMTVFMzE4MjM0
MEIzMDBBODJFNjkgLyogUmVtb3RlSW5zcGVjdG9yQ29uc3RhbnRzLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTVCQTE1RUIxODIzNDBCNDAwQTgy
RTY5IC8qIFJlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTVCQTE1RTQxODIzNDBCMzAwQTgyRTY5IC8qIFJlbW90
ZUNvbm5lY3Rpb25Ub1RhcmdldC5oICovOyB9OwotCQlBNUJBMTVFQzE4MjM0MEI0MDBBODJFNjkg
LyogUmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQTVCQTE1RTUxODIzNDBCMzAwQTgyRTY5IC8qIFJlbW90ZUNv
bm5lY3Rpb25Ub1RhcmdldC5tbSAqLzsgfTsKLQkJQTVCQTE1RUQxODIzNDBCNDAwQTgyRTY5IC8q
IFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1QkExNUU2MTgyMzQwQjMwMEE4MkU2OSAvKiBSZW1vdGVJ
bnNwZWN0b3JYUENDb25uZWN0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKLQkJQTVCQTE1RUUxODIzNDBCNDAwQTgyRTY5IC8qIFJlbW90ZUluc3Bl
Y3RvclhQQ0Nvbm5lY3Rpb24ubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBNUJBMTVFNzE4MjM0MEIzMDBBODJFNjkgLyogUmVtb3RlSW5zcGVjdG9yWFBD
Q29ubmVjdGlvbi5tbSAqLzsgfTsKIAkJQTVCQTE1RjAxODIzNDVBRjAwQTgyRTY5IC8qIFJlbW90
ZUluc3BlY3Rpb25UYXJnZXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEE1QkExNUVGMTgyMzQ1QUYwMEE4MkU2OSAvKiBSZW1vdGVJbnNwZWN0aW9uVGFy
Z2V0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
QTVDM0ExQTUxOEMwNDkwMjAwQzk1OTNBIC8qIEpTR2xvYmFsT2JqZWN0Q29uc29sZUNsaWVudC5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNUMzQTFB
MzE4QzA0OTAyMDBDOTU5M0EgLyogSlNHbG9iYWxPYmplY3RDb25zb2xlQ2xpZW50LmNwcCAqLzsg
fTsKIAkJQTVDM0ExQTYxOEMwNDkwMjAwQzk1OTNBIC8qIEpTR2xvYmFsT2JqZWN0Q29uc29sZUNs
aWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTVD
M0ExQTQxOEMwNDkwMjAwQzk1OTNBIC8qIEpTR2xvYmFsT2JqZWN0Q29uc29sZUNsaWVudC5oICov
OyB9OwpAQCAtMzg4OCw2ICszODg5LDExIEBACiAJCTc5RUUwQkZFMUI0QUZCODUwMDAzODVDOSAv
KiBWYXJpYWJsZUVudmlyb25tZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFZhcmlhYmxlRW52aXJvbm1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzlG
OEZDMUMxQjlGRUQwRjAwQ0E2NkFCIC8qIERGR01heGltYWxGbHVzaEluc2VydGlvblBoYXNlLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR01heGltYWxGbHVzaElu
c2VydGlvblBoYXNlLmNwcDsgcGF0aCA9IGRmZy9ERkdNYXhpbWFsRmx1c2hJbnNlcnRpb25QaGFz
ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTc5RjhGQzFEMUI5RkVEMEYwMENB
NjZBQiAvKiBERkdNYXhpbWFsRmx1c2hJbnNlcnRpb25QaGFzZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBERkdNYXhpbWFsRmx1c2hJbnNlcnRpb25QaGFzZS5oOyBwYXRoID0g
ZGZnL0RGR01heGltYWxGbHVzaEluc2VydGlvblBoYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTdBQ0RERUQwMUUyNTJCMkIwMDk3QUZFQiAvKiBSZW1vdGVDb25uZWN0aW9uVG9U
YXJnZXRDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFJl
bW90ZUNvbm5lY3Rpb25Ub1RhcmdldENvY29hLm1tOyBwYXRoID0gY29jb2EvUmVtb3RlQ29ubmVj
dGlvblRvVGFyZ2V0Q29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdBQ0RE
RUQxMUUyNTJCMkIwMDk3QUZFQiAvKiBSZW1vdGVJbnNwZWN0b3JDb2NvYS5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFJlbW90ZUluc3BlY3RvckNvY29hLm1tOyBw
YXRoID0gY29jb2EvUmVtb3RlSW5zcGVjdG9yQ29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTdBQ0RERUQyMUUyNTJCMkIwMDk3QUZFQiAvKiBSZW1vdGVJbnNwZWN0b3JYUEND
b25uZWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFJlbW90ZUluc3Bl
Y3RvclhQQ0Nvbm5lY3Rpb24uaDsgcGF0aCA9IGNvY29hL1JlbW90ZUluc3BlY3RvclhQQ0Nvbm5l
Y3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0FDRERFRDMxRTI1MkIyQjAw
OTdBRkVCIC8qIFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24ubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uLm1t
OyBwYXRoID0gY29jb2EvUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbi5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0FDRERFRDYxRTI1MkI1RjAwOTdBRkVCIC8qIFJlbW90ZUlu
c3BlY3Rvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVJ
bnNwZWN0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QkM1NDdEMjFCNjk1
OTlCMDA5NTlCNTggLyogV2FzbUZvcm1hdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXYXNtRm9ybWF0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDMDA4Q0Q4
MTg3MTI0QkIwMDk1NUMyNCAvKiBKU1Byb21pc2VEZWZlcnJlZC5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1Byb21pc2VEZWZlcnJlZC5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTdDMDA4Q0Q5MTg3MTI0QkIwMDk1NUMyNCAvKiBKU1Byb21pc2VE
ZWZlcnJlZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1Byb21pc2VEZWZl
cnJlZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDIzMywxMiArNDIzOSw4IEBA
CiAJCUE1QUI0OURCMUJFQzgwNzkwMDcwMjBGQiAvKiBQZXJHbG9iYWxPYmplY3RXcmFwcGVyV29y
bGQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGVyR2xvYmFsT2JqZWN0V3Jh
cHBlcldvcmxkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1QjZBNzRDMThDNkRC
QTYwMEYxMUU5MSAvKiBDb25zb2xlQ2xpZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IENvbnNvbGVDbGllbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlBNUJBMTVFMTE4MjM0MEIzMDBBODJFNjkgLyogUmVtb3RlSW5zcGVjdG9yLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUluc3BlY3Rvci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQlBNUJBMTVFMjE4MjM0MEIzMDBBODJFNjkgLyogUmVtb3RlSW5z
cGVjdG9yLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUmVtb3Rl
SW5zcGVjdG9yLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNUJBMTVFMzE4MjM0
MEIzMDBBODJFNjkgLyogUmVtb3RlSW5zcGVjdG9yQ29uc3RhbnRzLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUluc3BlY3RvckNvbnN0YW50cy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlBNUJBMTVFNDE4MjM0MEIzMDBBODJFNjkgLyogUmVtb3RlQ29u
bmVjdGlvblRvVGFyZ2V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90
ZUNvbm5lY3Rpb25Ub1RhcmdldC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlBNUJB
MTVFNTE4MjM0MEIzMDBBODJFNjkgLyogUmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0Lm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUmVtb3RlQ29ubmVjdGlvblRvVGFy
Z2V0Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlBNUJBMTVFNjE4MjM0MEIzMDBB
ODJFNjkgLyogUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbi5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUE1QkExNUU3MTgyMzQwQjMwMEE4MkU2OSAvKiBSZW1vdGVJ
bnNwZWN0b3JYUENDb25uZWN0aW9uLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbi5tbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQTVCQTE1RUYxODIzNDVBRjAwQTgyRTY5IC8qIFJlbW90ZUluc3BlY3Rp
b25UYXJnZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlSW5zcGVj
dGlvblRhcmdldC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNUMzQTFBMzE4QzA0
OTAyMDBDOTU5M0EgLyogSlNHbG9iYWxPYmplY3RDb25zb2xlQ2xpZW50LmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTR2xvYmFsT2JqZWN0Q29uc29sZUNsaWVudC5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1QzNBMUE0MThDMDQ5MDIwMEM5NTkz
QSAvKiBKU0dsb2JhbE9iamVjdENvbnNvbGVDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSlNHbG9iYWxPYmplY3RDb25zb2xlQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC02MDIzLDYgKzYwMjUsMTcgQEAKIAkJCXBhdGggPSBkaXNhc3NlbWJs
ZXIvQVJNdjc7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9OworCQk3QUNEREVDRjFF
MjUyQUNBMDA5N0FGRUIgLyogY29jb2EgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNo
aWxkcmVuID0gKAorCQkJCTdBQ0RERUQwMUUyNTJCMkIwMDk3QUZFQiAvKiBSZW1vdGVDb25uZWN0
aW9uVG9UYXJnZXRDb2NvYS5tbSAqLywKKwkJCQk3QUNEREVEMTFFMjUyQjJCMDA5N0FGRUIgLyog
UmVtb3RlSW5zcGVjdG9yQ29jb2EubW0gKi8sCisJCQkJN0FDRERFRDIxRTI1MkIyQjAwOTdBRkVC
IC8qIFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24uaCAqLywKKwkJCQk3QUNEREVEMzFFMjUy
QjJCMDA5N0FGRUIgLyogUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbi5tbSAqLywKKwkJCSk7
CisJCQluYW1lID0gY29jb2E7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OwogCQk3
Qjk4RDEzMzFCNjBDRDFFMDAyM0IxQTQgLyogd2FzbSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3Vw
OwogCQkJY2hpbGRyZW4gPSAoCkBAIC03NTM3LDE5ICs3NTUwLDE3IEBACiAJCUE1QkExNUUwMTgy
MzQwOUQwMEE4MkU2OSAvKiByZW1vdGUgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNo
aWxkcmVuID0gKAorCQkJCTdBQ0RERUQ2MUUyNTJCNUYwMDk3QUZFQiAvKiBSZW1vdGVJbnNwZWN0
b3IuY3BwICovLAorCQkJCTdBQ0RERUNGMUUyNTJBQ0EwMDk3QUZFQiAvKiBjb2NvYSAqLywKIAkJ
CQk5OTJBQkNGNTFCRUE5NENBMDA2NDAzQTAgLyogUmVtb3RlQXV0b21hdGlvblRhcmdldC5jcHAg
Ki8sCiAJCQkJOTkyQUJDRjYxQkVBOTRDQTAwNjQwM0EwIC8qIFJlbW90ZUF1dG9tYXRpb25UYXJn
ZXQuaCAqLywKIAkJCQlBNUJBMTVFNDE4MjM0MEIzMDBBODJFNjkgLyogUmVtb3RlQ29ubmVjdGlv
blRvVGFyZ2V0LmggKi8sCi0JCQkJQTVCQTE1RTUxODIzNDBCMzAwQTgyRTY5IC8qIFJlbW90ZUNv
bm5lY3Rpb25Ub1RhcmdldC5tbSAqLywKIAkJCQk5OThFRDY3MjFCRUQ2NTlBMDBERDgwMTcgLyog
UmVtb3RlQ29udHJvbGxhYmxlVGFyZ2V0LmNwcCAqLywKIAkJCQk5OThFRDY3MzFCRUQ2NTlBMDBE
RDgwMTcgLyogUmVtb3RlQ29udHJvbGxhYmxlVGFyZ2V0LmggKi8sCiAJCQkJQTU5NDU1OEUxODI0
NUVERTAwQ0MzODQzIC8qIFJlbW90ZUluc3BlY3Rpb25UYXJnZXQuY3BwICovLAogCQkJCUE1QkEx
NUVGMTgyMzQ1QUYwMEE4MkU2OSAvKiBSZW1vdGVJbnNwZWN0aW9uVGFyZ2V0LmggKi8sCiAJCQkJ
QTVCQTE1RTExODIzNDBCMzAwQTgyRTY5IC8qIFJlbW90ZUluc3BlY3Rvci5oICovLAotCQkJCUE1
QkExNUUyMTgyMzQwQjMwMEE4MkU2OSAvKiBSZW1vdGVJbnNwZWN0b3IubW0gKi8sCiAJCQkJQTVC
QTE1RTMxODIzNDBCMzAwQTgyRTY5IC8qIFJlbW90ZUluc3BlY3RvckNvbnN0YW50cy5oICovLAot
CQkJCUE1QkExNUU2MTgyMzQwQjMwMEE4MkU2OSAvKiBSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0
aW9uLmggKi8sCi0JCQkJQTVCQTE1RTcxODIzNDBCMzAwQTgyRTY5IC8qIFJlbW90ZUluc3BlY3Rv
clhQQ0Nvbm5lY3Rpb24ubW0gKi8sCiAJCQkpOwogCQkJcGF0aCA9IHJlbW90ZTsKIAkJCXNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC04ODYwLDcgKzg4NzEsNiBAQAogCQkJCUE1QkExNUYwMTgy
MzQ1QUYwMEE4MkU2OSAvKiBSZW1vdGVJbnNwZWN0aW9uVGFyZ2V0LmggaW4gSGVhZGVycyAqLywK
IAkJCQlBNUJBMTVFODE4MjM0MEIzMDBBODJFNjkgLyogUmVtb3RlSW5zcGVjdG9yLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlBNUJBMTVFQTE4MjM0MEI0MDBBODJFNjkgLyogUmVtb3RlSW5zcGVjdG9y
Q29uc3RhbnRzLmggaW4gSGVhZGVycyAqLywKLQkJCQlBNUJBMTVFRDE4MjM0MEI0MDBBODJFNjkg
LyogUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYy
NEU1NTExN0VFMjc0OTAwQUJCMjE3IC8qIFJlcGF0Y2guaCBpbiBIZWFkZXJzICovLAogCQkJCTg2
OUVCQ0I3MEU4QzZENEEwMDg3MjJDQyAvKiBSZXN1bHRUeXBlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk3MEIwQTlEMTFBOUI2NjQ2MDAwMTMwNkEgLyogUnVudGltZUZsYWdzLmggaW4gSGVhZGVycyAq
LywKQEAgLTg5NzQsNiArODk4NCw3IEBACiAJCQkJMEZGNDI3NDkxNThFQkU5MTAwNENCOUZGIC8q
IHVkaXM4Nl90eXBlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdFNUFCMzkxNzk5RTRCMjAwRDI4
MzNEIC8qIFVEaXM4NkRpc2Fzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdBOEFGNDEx
N0FEQjVGMzAwNUFCMTc0IC8qIFVpbnQxNkFycmF5LmggaW4gSGVhZGVycyAqLywKKwkJCQk3QUNE
REVENzFFMjUyQjY4MDA5N0FGRUIgLyogUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbi5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJODY2NzM5RDMxM0JGREU3MTAwMjNEODdDIC8qIFVpbnQxNldpdGhG
cmFjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdBOEFGNDIxN0FEQjVGMzAwNUFCMTc0IC8q
IFVpbnQzMkFycmF5LmggaW4gSGVhZGVycyAqLywKIAkJCQlBN0E4QUYzRjE3QURCNUYzMDA1QUIx
NzQgLyogVWludDhBcnJheS5oIGluIEhlYWRlcnMgKi8sCkBAIC05ODY1LDYgKzk4NzYsNyBAQAog
CQkJCTBGQzA5NzcyMTQ2OTNBRjkwMENGMjQ0MiAvKiBERkdPU1JFeGl0Q29tcGlsZXI2NC5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkwRjcwMjVBOTE3MTRCMEZBMDAzODJDMEUgLyogREZHT1NSRXhp
dENvbXBpbGVyQ29tbW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMzkyQzg5MUI0NjE4ODQw
MDg0NDcyOCAvKiBERkdPU1JFeGl0RnV6ei5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk3QUNEREVE
ODFFMjUyQjZFMDA5N0FGRUIgLyogUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbi5tbSBpbiBT
b3VyY2VzICovLAogCQkJCTBGRUZDOUFBMTY4MUEzQjMwMDU2N0Y1MyAvKiBERkdPU1JFeGl0SnVt
cFBsYWNlaG9sZGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMjM1QkVEMTcxNzhFNzMwMDY5
MEM3RiAvKiBERkdPU1JFeGl0UHJlcGFyYXRpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY2
MjM3OTcxQUU0NUNBNzAwRDQwMkVBIC8qIERGR1BoYW50b21JbnNlcnRpb25QaGFzZS5jcHAgaW4g
U291cmNlcyAqLywKQEAgLTk4ODIsNiArOTg5NCw3IEBACiAJCQkJODZFQzlERDIxMzI4REY4MjAw
MkIyQUQ3IC8qIERGR1NwZWN1bGF0aXZlSklULmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg2ODgw
RjFGMTQzMjhCQjkwMEIwOEQ0MiAvKiBERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTg2ODgwRjREMTQzNTNCMjEwMEIwOEQ0MiAvKiBERkdTcGVjdWxhdGl2ZUpJ
VDY0LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTdBQ0RERUQ1MUUyNTJCNUUwMDk3QUZFQiAvKiBS
ZW1vdGVJbnNwZWN0b3JDb2NvYS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTBGNjgyRkIyMTlCQ0Iz
NjQwMEZBM0JBRCAvKiBERkdTU0FDYWxjdWxhdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3
RDg5Q0ZGMTdBMEI4Q0MwMDc3M0FEOCAvKiBERkdTU0FDb252ZXJzaW9uUGhhc2UuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMEZDMjBDQjkxODU1NkEzNTAwQzlFOTU0IC8qIERGR1NTQUxvd2VyaW5n
UGhhc2UuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0xMDIwMiw2ICsxMDIxNSw3IEBACiAJCQkJQkNG
RDhDOTIwRUVCMkVFNzAwMjgzODQ4IC8qIEp1bXBUYWJsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkwRjA3MEE0QTFENTQzQTk1MDA2RTcyMzIgLyogTGFyZ2VBbGxvY2F0aW9uLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCURDRjNENTY5MUNEMjk0NkQwMDNENUM2NSAvKiBMYXp5Q2xhc3NTdHJ1Y3R1
cmUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJN0FDRERFRDQxRTI1MkI0RDAwOTdBRkVCIC8qIFJl
bW90ZUNvbm5lY3Rpb25Ub1RhcmdldENvY29hLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZCNTQ2
NzkxNEY1QzQ2QjAwMkMyOTg5IC8qIExhenlPcGVyYW5kVmFsdWVQcm9maWxlLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTE0OEYyMUIwMTA3RUM1NDEwMDQyRUMyQyAvKiBMZXhlci5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkwRkY0Mjc1NzE1OTE0QTIwMDA0Q0I5RkYgLyogTGlua0J1ZmZlci5jcHAg
aW4gU291cmNlcyAqLywKQEAgLTEwMjI3LDYgKzEwMjQxLDcgQEAKIAkJCQk3OTVCMTk5NzFENzhC
RTM1MDAyNjJGQTAgLyogTWFwQmFzZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNzAwODczOTE3
Q0JFODUzMDBDM0U2NDMgLyogTWFwQ29uc3RydWN0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QTc0REVGOTMxODJEOTkxNDAwNTIyQzIyIC8qIE1hcEl0ZXJhdG9yUHJvdG90eXBlLmNwcCBpbiBT
b3VyY2VzICovLAorCQkJCTdBQ0RERUQ5MUUyNTJCODMwMDk3QUZFQiAvKiBSZW1vdGVJbnNwZWN0
b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTcwMDg3M0QxN0NCRThEMzAwQzNFNjQzIC8qIE1h
cFByb3RvdHlwZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDMkI5MTZDNTE0REEwNDBDMDBDQkFD
ODYgLyogTWFya2VkQWxsb2NhdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0MkQ2RjA4MTM1
MzlBMjgwMEIwMkU4NiAvKiBNYXJrZWRCbG9jay5jcHAgaW4gU291cmNlcyAqLywKQEAgLTEwMzE0
LDExICsxMDMyOSw4IEBACiAJCQkJMEZDMzE0MTUxODE0NkQ3MDAwMDMzMjMyIC8qIFJlZ2lzdGVy
U2V0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE1N0QyM0VEMTg5MUI1NTQwMDMxQzdGQSAvKiBS
ZWd1bGFyRXhwcmVzc2lvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5OTJBQkNGOTFCRUE5QkQy
MDA2NDAzQTAgLyogUmVtb3RlQXV0b21hdGlvblRhcmdldC5jcHAgaW4gU291cmNlcyAqLywKLQkJ
CQlBNUJBMTVFQzE4MjM0MEI0MDBBODJFNjkgLyogUmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0Lm1t
IGluIFNvdXJjZXMgKi8sCiAJCQkJOTk4RUQ2NzQxQkVENzBBQzAwREQ4MDE3IC8qIFJlbW90ZUNv
bnRyb2xsYWJsZVRhcmdldC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNTk0NTU4RjE4MjQ1RUZE
MDBDQzM4NDMgLyogUmVtb3RlSW5zcGVjdGlvblRhcmdldC5jcHAgaW4gU291cmNlcyAqLywKLQkJ
CQlBNUJBMTVFOTE4MjM0MEIzMDBBODJFNjkgLyogUmVtb3RlSW5zcGVjdG9yLm1tIGluIFNvdXJj
ZXMgKi8sCi0JCQkJQTVCQTE1RUUxODIzNDBCNDAwQTgyRTY5IC8qIFJlbW90ZUluc3BlY3RvclhQ
Q0Nvbm5lY3Rpb24ubW0gaW4gU291cmNlcyAqLywKIAkJCQkwRjI0RTU1MDE3RUUyNzQ5MDBBQkIy
MTcgLyogUmVwYXRjaC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1Mjc3NzNERTFBQUY4M0FDMDBC
REU3RTggLyogUnVudGltZVR5cGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY3NzAwOTIxNDAy
RkYzQzAwNzhFQjM5IC8qIFNhbXBsaW5nQ291bnRlci5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9QbGF0Zm9ybU1hYy5jbWFrZSBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9QbGF0Zm9ybU1hYy5jbWFrZQppbmRleCAyZTZiMTViOWM2ZS4uZDc0MDVh
ODZkMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9QbGF0Zm9ybU1hYy5jbWFr
ZQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvUGxhdGZvcm1NYWMuY21ha2UKQEAgLTEwLDEx
ICsxMCwxNCBAQCBsaXN0KEFQUEVORCBKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTCiAgICAgQVBJL09i
akNDYWxsYmFja0Z1bmN0aW9uLm1tCiAKICAgICBpbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUF1dG9t
YXRpb25UYXJnZXQuY3BwCi0gICAgaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVDb25uZWN0aW9uVG9U
YXJnZXQubW0KICAgICBpbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUNvbnRyb2xsYWJsZVRhcmdldC5j
cHAKICAgICBpbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3Rpb25UYXJnZXQuY3BwCi0gICAg
aW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3IubW0KKyAgICBpbnNwZWN0b3IvcmVtb3Rl
L1JlbW90ZUluc3BlY3Rvci5jcHAKICAgICBpbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3Rv
clhQQ0Nvbm5lY3Rpb24ubW0KKworICAgIGluc3BlY3Rvci9yZW1vdGUvY29jb2EvUmVtb3RlQ29u
bmVjdGlvblRvVGFyZ2V0Q29jb2EubW0KKyAgICBpbnNwZWN0b3IvcmVtb3RlL2NvY29hL1JlbW90
ZUluc3BlY3RvckNvY29hLm1tCisgICAgaW5zcGVjdG9yL3JlbW90ZS9jb2NvYS9SZW1vdGVJbnNw
ZWN0b3JYUENDb25uZWN0aW9uLm1tCiApCiBhZGRfZGVmaW5pdGlvbnMoLURTVEFUSUNBTExZX0xJ
TktFRF9XSVRIX1dURiAtRF9fU1REQ19XQU5UX0xJQl9FWFQxX18pCiAKQEAgLTI2LDYgKzI5LDcg
QEAgbGlzdChBUFBFTkQgSmF2YVNjcmlwdENvcmVfTElCUkFSSUVTCiBsaXN0KEFQUEVORCBKYXZh
U2NyaXB0Q29yZV9JTkNMVURFX0RJUkVDVE9SSUVTCiAgICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9
L2Rpc2Fzc2VtYmxlci91ZGlzODYKICAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vaWN1CisgICAg
JHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2luc3BlY3Rvci9yZW1vdGUvY29jb2EKICkKIAogc2V0KENN
QUtFX1NIQVJFRF9MSU5LRVJfRkxBR1MgJHtDTUFLRV9TSEFSRURfTElOS0VSX0ZMQUdTfSAiLWNv
bXBhdGliaWxpdHlfdmVyc2lvbiAxIC1jdXJyZW50X3ZlcnNpb24gJHtXRUJLSVRfTUFDX1ZFUlNJ
T059IikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3Rl
L1JlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9yZW1vdGUvUmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0LmgKaW5kZXggZGJhMDYwMTc5OWEu
Ljg5YWE3YmM1ZTc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L3JlbW90ZS9SZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQuaApAQCAtMjcs
NjcgKzI3LDgyIEBACiAKICNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKIAotI2ltcG9ydCAi
SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsLmgiCi0jaW1wb3J0ICJSZW1vdGVDb25uZWN0aW9uVG9U
YXJnZXQuaCIKLSNpbXBvcnQgIlJlbW90ZUluc3BlY3Rvci5oIgotI2ltcG9ydCA8bXV0ZXg+Ci0j
aW1wb3J0IDx3dGYvQmxvY2tQdHIuaD4KLSNpbXBvcnQgPHd0Zi9Mb2NrLmg+Ci0jaW1wb3J0IDx3
dGYvUmV0YWluUHRyLmg+Ci0jaW1wb3J0IDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KKyNp
bmNsdWRlICJJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwuaCIKKyNpbmNsdWRlIDx3dGYvTG9jay5o
PgorI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgorCisjaWYgUExBVEZPUk0o
Q09DT0EpCisjaW5jbHVkZSA8d3RmL0Jsb2NrUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JldGFpblB0
ci5oPgogCiBPQkpDX0NMQVNTIE5TU3RyaW5nOworI2VuZGlmCiAKIG5hbWVzcGFjZSBJbnNwZWN0
b3IgewogCitjbGFzcyBSZW1vdGVDb250cm9sbGFibGVUYXJnZXQ7CisKKyNpZiBQTEFURk9STShD
T0NPQSkKIHR5cGVkZWYgVmVjdG9yPEJsb2NrUHRyPHZvaWQgKCk+PiBSZW1vdGVUYXJnZXRRdWV1
ZTsKKyNlbmRpZgogCiBjbGFzcyBSZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQgZmluYWwgOiBwdWJs
aWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8UmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0PiwgcHVibGlj
IEZyb250ZW5kQ2hhbm5lbCB7CiBwdWJsaWM6Ci0gICAgUmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0
KFJlbW90ZUNvbnRyb2xsYWJsZVRhcmdldCosIE5TU3RyaW5nICpjb25uZWN0aW9uSWRlbnRpZmll
ciwgTlNTdHJpbmcgKmRlc3RpbmF0aW9uKTsKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBSZW1v
dGVDb25uZWN0aW9uVG9UYXJnZXQoUmVtb3RlQ29udHJvbGxhYmxlVGFyZ2V0KiwgTlNTdHJpbmcq
IGNvbm5lY3Rpb25JZGVudGlmaWVyLCBOU1N0cmluZyogZGVzdGluYXRpb24pOworI2VuZGlmCiAg
ICAgdmlydHVhbCB+UmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0KCk7CiAKICAgICAvLyBNYWluIEFQ
SS4KICAgICBib29sIHNldHVwKGJvb2wgaXNBdXRvbWF0aWNJbnNwZWN0aW9uID0gZmFsc2UsIGJv
b2wgYXV0b21hdGljYWxseVBhdXNlID0gZmFsc2UpOwotICAgIHZvaWQgc2VuZE1lc3NhZ2VUb1Rh
cmdldChOU1N0cmluZyAqKTsKKyAgICB2b2lkIHNlbmRNZXNzYWdlVG9UYXJnZXQoY29uc3QgU3Ry
aW5nJik7CiAgICAgdm9pZCBjbG9zZSgpOwogICAgIHZvaWQgdGFyZ2V0Q2xvc2VkKCk7CiAKICAg
ICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiB0YXJnZXRJZGVudGlmaWVyKCkgY29uc3Q7CisjaWYg
UExBVEZPUk0oQ09DT0EpCiAgICAgTlNTdHJpbmcgKmNvbm5lY3Rpb25JZGVudGlmaWVyKCkgY29u
c3Q7CiAgICAgTlNTdHJpbmcgKmRlc3RpbmF0aW9uKCkgY29uc3Q7CiAKICAgICBMb2NrJiBxdWV1
ZU11dGV4KCkgeyByZXR1cm4gbV9xdWV1ZU11dGV4OyB9CiAgICAgY29uc3QgUmVtb3RlVGFyZ2V0
UXVldWUmIHF1ZXVlKCkgY29uc3QgeyByZXR1cm4gbV9xdWV1ZTsgfQogICAgIHZvaWQgY2xlYXJR
dWV1ZSgpIHsgbV9xdWV1ZS5jbGVhcigpOyB9CisjZW5kaWYKIAogICAgIC8vIEZyb250ZW5kQ2hh
bm5lbCBvdmVycmlkZXMuCiAgICAgQ29ubmVjdGlvblR5cGUgY29ubmVjdGlvblR5cGUoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBDb25uZWN0aW9uVHlwZTo6UmVtb3RlOyB9CiAgICAgdm9pZCBz
ZW5kTWVzc2FnZVRvRnJvbnRlbmQoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CiAKIHByaXZhdGU6
CisjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgdm9pZCBkaXNwYXRjaEFzeW5jT25UYXJnZXQodm9p
ZCAoXmJsb2NrKSgpKTsKIAogICAgIHZvaWQgc2V0dXBSdW5Mb29wKCk7CiAgICAgdm9pZCB0ZWFy
ZG93blJ1bkxvb3AoKTsKICAgICB2b2lkIHF1ZXVlVGFza09uUHJpdmF0ZVJ1bkxvb3Aodm9pZCAo
XmJsb2NrKSgpKTsKKyNlbmRpZgogCiAgICAgLy8gVGhpcyBjb25uZWN0aW9uIGZyb20gdGhlIFJl
bW90ZUluc3BlY3RvciBzaW5nbGV0b24gdG8gdGhlIEluc3BlY3Rpb25UYXJnZXQKICAgICAvLyBj
YW4gYmUgdXNlZCBvbiBtdWx0aXBsZSB0aHJlYWRzLiBTbyBhbnkgYWNjZXNzIHRvIHRoZSB0YXJn
ZXQKICAgICAvLyBpdHNlbGYgbXVzdCB0YWtlIHRoaXMgbXV0ZXggdG8gZW5zdXJlIG1fdGFyZ2V0
IGlzIHZhbGlkLgogICAgIExvY2sgbV90YXJnZXRNdXRleDsKIAorI2lmIFBMQVRGT1JNKENPQ09B
KQogICAgIC8vIElmIGEgdGFyZ2V0IGhhcyBhIHNwZWNpZmljIHJ1biBsb29wIGl0IHdhbnRzIHRv
IGV2YWx1YXRlIG9uCiAgICAgLy8gd2Ugc2V0dXAgb3VyIHJ1biBsb29wIHNvdXJjZXMgb24gdGhh
dCBzcGVjaWZpYyBydW4gbG9vcC4KICAgICBSZXRhaW5QdHI8Q0ZSdW5Mb29wUmVmPiBtX3J1bkxv
b3A7CiAgICAgUmV0YWluUHRyPENGUnVuTG9vcFNvdXJjZVJlZj4gbV9ydW5Mb29wU291cmNlOwog
ICAgIFJlbW90ZVRhcmdldFF1ZXVlIG1fcXVldWU7CiAgICAgTG9jayBtX3F1ZXVlTXV0ZXg7Cisj
ZW5kaWYKIAogICAgIFJlbW90ZUNvbnRyb2xsYWJsZVRhcmdldCogbV90YXJnZXQgeyBudWxscHRy
IH07CisgICAgYm9vbCBtX2Nvbm5lY3RlZCB7IGZhbHNlIH07CisKKyNpZiBQTEFURk9STShDT0NP
QSkKICAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IG1fY29ubmVjdGlvbklkZW50aWZpZXI7CiAgICAg
UmV0YWluUHRyPE5TU3RyaW5nPiBtX2Rlc3RpbmF0aW9uOwotICAgIGJvb2wgbV9jb25uZWN0ZWQg
eyBmYWxzZSB9OworI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUNvbnRy
b2xsYWJsZVRhcmdldC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUv
UmVtb3RlQ29udHJvbGxhYmxlVGFyZ2V0LmgKaW5kZXggZDY1ZmFlYWQ5NWQuLmFmYWUzNjlhZTFm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1v
dGVDb250cm9sbGFibGVUYXJnZXQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL3JlbW90ZS9SZW1vdGVDb250cm9sbGFibGVUYXJnZXQuaApAQCAtMjcsMTAgKzI3LDEzIEBA
CiAKICNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKIAotI2luY2x1ZGUgPENvcmVGb3VuZGF0
aW9uL0NGUnVuTG9vcC5oPgogI2luY2x1ZGUgPHd0Zi9UeXBlQ2FzdHMuaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAorI2lmIFVTRShDRikKKyNpbmNsdWRlIDxDb3JlRm91bmRh
dGlvbi9DRlJ1bkxvb3AuaD4KKyNlbmRpZgorCiBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAogY2xh
c3MgRnJvbnRlbmRDaGFubmVsOwpAQCAtNTMsOCArNTYsMTAgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgYm9vbCByZW1vdGVDb250cm9sQWxsb3dlZCgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgZGlzcGF0Y2hNZXNzYWdlRnJvbVJlbW90ZShjb25zdCBTdHJpbmcmIG1lc3NhZ2UpID0gMDsK
IAorI2lmIFVTRShDRikKICAgICAvLyBUaGUgZGlzcGF0Y2ggYmxvY2sgd2lsbCBiZSBzY2hlZHVs
ZWQgb24gYSBnbG9iYWwgcnVuIGxvb3AgaWYgbnVsbCBpcyByZXR1cm5lZC4KICAgICB2aXJ0dWFs
IENGUnVuTG9vcFJlZiB0YXJnZXRSdW5Mb29wKCkgeyByZXR1cm4gbnVsbHB0cjsgfQorI2VuZGlm
CiBwcml2YXRlOgogICAgIHVuc2lnbmVkIG1faWRlbnRpZmllciB7MH07CiB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdGlv
blRhcmdldC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3Rl
SW5zcGVjdGlvblRhcmdldC5oCmluZGV4IDM4NTJmY2NkODMxLi40NTMyOWY2ZDYyZiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVj
dGlvblRhcmdldC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3Rl
L1JlbW90ZUluc3BlY3Rpb25UYXJnZXQuaApAQCAtNDEsOCArNDEsMTAgQEAgcHVibGljOgogICAg
IGJvb2wgcmVtb3RlRGVidWdnaW5nQWxsb3dlZCgpIGNvbnN0IHsgcmV0dXJuIG1fYWxsb3dlZDsg
fQogICAgIHZvaWQgc2V0UmVtb3RlRGVidWdnaW5nQWxsb3dlZChib29sKTsKIAorI2lmIFVTRShD
RikKICAgICBDRlJ1bkxvb3BSZWYgdGFyZ2V0UnVuTG9vcCgpIG92ZXJyaWRlIHsgcmV0dXJuIG1f
cnVuTG9vcC5nZXQoKTsgfQogICAgIHZvaWQgc2V0VGFyZ2V0UnVuTG9vcChDRlJ1bkxvb3BSZWYg
cnVuTG9vcCkgeyBtX3J1bkxvb3AgPSBydW5Mb29wOyB9CisjZW5kaWYKIAogICAgIHZpcnR1YWwg
U3RyaW5nIG5hbWUoKSBjb25zdCB7IHJldHVybiBTdHJpbmcoKTsgfSAvLyBKYXZhU2NyaXB0IGFu
ZCBXZWIKICAgICB2aXJ0dWFsIFN0cmluZyB1cmwoKSBjb25zdCB7IHJldHVybiBTdHJpbmcoKTsg
fSAvLyBXZWIKQEAgLTU5LDcgKzYxLDkgQEAgcHVibGljOgogICAgIGJvb2wgcmVtb3RlQ29udHJv
bEFsbG93ZWQoKSBjb25zdCBvdmVycmlkZTsKIHByaXZhdGU6CiAgICAgYm9vbCBtX2FsbG93ZWQg
e2ZhbHNlfTsKKyNpZiBVU0UoQ0YpCiAgICAgUmV0YWluUHRyPENGUnVuTG9vcFJlZj4gbV9ydW5M
b29wOworI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3Rvci5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0
b3IuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4xNTc3YmViYjdk
MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVt
b3RlL1JlbW90ZUluc3BlY3Rvci5jcHAKQEAgLTAsMCArMSwyMjQgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTMtMjAxNiBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJSZW1vdGVJbnNwZWN0b3IuaCIKKworI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVD
VE9SKQorCisjaW5jbHVkZSAiUmVtb3RlQXV0b21hdGlvblRhcmdldC5oIgorI2luY2x1ZGUgIlJl
bW90ZUNvbm5lY3Rpb25Ub1RhcmdldC5oIgorI2luY2x1ZGUgIlJlbW90ZUluc3BlY3Rpb25UYXJn
ZXQuaCIKKyNpbmNsdWRlICJSZW1vdGVJbnNwZWN0b3JDb25zdGFudHMuaCIKKyNpbmNsdWRlIDx3
dGYvTWFpblRocmVhZC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1l
c3BhY2UgSW5zcGVjdG9yIHsKKworYm9vbCBSZW1vdGVJbnNwZWN0b3I6OnN0YXJ0RW5hYmxlZCA9
IHRydWU7CisKK3ZvaWQgUmVtb3RlSW5zcGVjdG9yOjpzdGFydERpc2FibGVkKCkKK3sKKyAgICBS
ZW1vdGVJbnNwZWN0b3I6OnN0YXJ0RW5hYmxlZCA9IGZhbHNlOworfQorCit1bnNpZ25lZCBSZW1v
dGVJbnNwZWN0b3I6Om5leHRBdmFpbGFibGVUYXJnZXRJZGVudGlmaWVyKCkKK3sKKyAgICB1bnNp
Z25lZCBuZXh0VmFsaWRUYXJnZXRJZGVudGlmaWVyOworICAgIGRvIHsKKyAgICAgICAgbmV4dFZh
bGlkVGFyZ2V0SWRlbnRpZmllciA9IG1fbmV4dEF2YWlsYWJsZVRhcmdldElkZW50aWZpZXIrKzsK
KyAgICB9IHdoaWxlICghbmV4dFZhbGlkVGFyZ2V0SWRlbnRpZmllciB8fCBuZXh0VmFsaWRUYXJn
ZXRJZGVudGlmaWVyID09IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSB8fCBt
X3RhcmdldE1hcC5jb250YWlucyhuZXh0VmFsaWRUYXJnZXRJZGVudGlmaWVyKSk7CisgICAgcmV0
dXJuIG5leHRWYWxpZFRhcmdldElkZW50aWZpZXI7Cit9CisKK3ZvaWQgUmVtb3RlSW5zcGVjdG9y
OjpyZWdpc3RlclRhcmdldChSZW1vdGVDb250cm9sbGFibGVUYXJnZXQqIHRhcmdldCkKK3sKKyAg
ICBBU1NFUlRfQVJHKHRhcmdldCwgdGFyZ2V0KTsKKworICAgIHN0ZDo6bG9ja19ndWFyZDxMb2Nr
PiBsb2NrKG1fbXV0ZXgpOworCisgICAgdW5zaWduZWQgdGFyZ2V0SWRlbnRpZmllciA9IG5leHRB
dmFpbGFibGVUYXJnZXRJZGVudGlmaWVyKCk7CisgICAgdGFyZ2V0LT5zZXRUYXJnZXRJZGVudGlm
aWVyKHRhcmdldElkZW50aWZpZXIpOworCisgICAgeworICAgICAgICBhdXRvIHJlc3VsdCA9IG1f
dGFyZ2V0TWFwLnNldCh0YXJnZXRJZGVudGlmaWVyLCB0YXJnZXQpOworICAgICAgICBBU1NFUlRf
VU5VU0VEKHJlc3VsdCwgcmVzdWx0LmlzTmV3RW50cnkpOworICAgIH0KKworICAgIC8vIElmIHJl
bW90ZSBjb250cm9sIGlzIG5vdCBhbGxvd2VkLCBhIG51bGwgbGlzdGluZyBpcyByZXR1cm5lZC4K
KyAgICBpZiAoYXV0byB0YXJnZXRMaXN0aW5nID0gbGlzdGluZ0ZvclRhcmdldCgqdGFyZ2V0KSkg
eworICAgICAgICBhdXRvIHJlc3VsdCA9IG1fdGFyZ2V0TGlzdGluZ01hcC5zZXQodGFyZ2V0SWRl
bnRpZmllciwgdGFyZ2V0TGlzdGluZyk7CisgICAgICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCBy
ZXN1bHQuaXNOZXdFbnRyeSk7CisgICAgfQorCisgICAgcHVzaExpc3RpbmdzU29vbigpOworfQor
Cit2b2lkIFJlbW90ZUluc3BlY3Rvcjo6dW5yZWdpc3RlclRhcmdldChSZW1vdGVDb250cm9sbGFi
bGVUYXJnZXQqIHRhcmdldCkKK3sKKyAgICBBU1NFUlRfQVJHKHRhcmdldCwgdGFyZ2V0KTsKKwor
ICAgIHN0ZDo6bG9ja19ndWFyZDxMb2NrPiBsb2NrKG1fbXV0ZXgpOworCisgICAgdW5zaWduZWQg
dGFyZ2V0SWRlbnRpZmllciA9IHRhcmdldC0+dGFyZ2V0SWRlbnRpZmllcigpOworICAgIGlmICgh
dGFyZ2V0SWRlbnRpZmllcikKKyAgICAgICAgcmV0dXJuOworCisgICAgYm9vbCB3YXNSZW1vdmVk
ID0gbV90YXJnZXRNYXAucmVtb3ZlKHRhcmdldElkZW50aWZpZXIpOworICAgIEFTU0VSVF9VTlVT
RUQod2FzUmVtb3ZlZCwgd2FzUmVtb3ZlZCk7CisKKyAgICAvLyBUaGUgbGlzdGluZyBtYXkgbmV2
ZXIgaGF2ZSBiZWVuIGFkZGVkIGlmIHJlbW90ZSBjb250cm9sIGlzbid0IGFsbG93ZWQuCisgICAg
bV90YXJnZXRMaXN0aW5nTWFwLnJlbW92ZSh0YXJnZXRJZGVudGlmaWVyKTsKKworICAgIGlmIChh
dXRvIGNvbm5lY3Rpb25Ub1RhcmdldCA9IG1fdGFyZ2V0Q29ubmVjdGlvbk1hcC50YWtlKHRhcmdl
dElkZW50aWZpZXIpKQorICAgICAgICBjb25uZWN0aW9uVG9UYXJnZXQtPnRhcmdldENsb3NlZCgp
OworCisgICAgcHVzaExpc3RpbmdzU29vbigpOworfQorCit2b2lkIFJlbW90ZUluc3BlY3Rvcjo6
dXBkYXRlVGFyZ2V0KFJlbW90ZUNvbnRyb2xsYWJsZVRhcmdldCogdGFyZ2V0KQoreworICAgIEFT
U0VSVF9BUkcodGFyZ2V0LCB0YXJnZXQpOworCisgICAgc3RkOjpsb2NrX2d1YXJkPExvY2s+IGxv
Y2sobV9tdXRleCk7CisKKyAgICB1bnNpZ25lZCB0YXJnZXRJZGVudGlmaWVyID0gdGFyZ2V0LT50
YXJnZXRJZGVudGlmaWVyKCk7CisgICAgaWYgKCF0YXJnZXRJZGVudGlmaWVyKQorICAgICAgICBy
ZXR1cm47CisKKyAgICB7CisgICAgICAgIGF1dG8gcmVzdWx0ID0gbV90YXJnZXRNYXAuc2V0KHRh
cmdldElkZW50aWZpZXIsIHRhcmdldCk7CisgICAgICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCAh
cmVzdWx0LmlzTmV3RW50cnkpOworICAgIH0KKworICAgIC8vIElmIHRoZSB0YXJnZXQgaGFzIGp1
c3QgYWxsb3dlZCByZW1vdGUgY29udHJvbCwgdGhlbiB0aGUgbGlzdGluZyB3b24ndCBleGlzdCB5
ZXQuCisgICAgLy8gSWYgdGhlIHRhcmdldCBoYXMgbm8gaWRlbnRpZmllciByZW1vdmUgdGhlIG9s
ZCBsaXN0aW5nLgorICAgIGlmIChhdXRvIHRhcmdldExpc3RpbmcgPSBsaXN0aW5nRm9yVGFyZ2V0
KCp0YXJnZXQpKQorICAgICAgICBtX3RhcmdldExpc3RpbmdNYXAuc2V0KHRhcmdldElkZW50aWZp
ZXIsIHRhcmdldExpc3RpbmcpOworICAgIGVsc2UKKyAgICAgICAgbV90YXJnZXRMaXN0aW5nTWFw
LnJlbW92ZSh0YXJnZXRJZGVudGlmaWVyKTsKKworICAgIHB1c2hMaXN0aW5nc1Nvb24oKTsKK30K
Kwordm9pZCBSZW1vdGVJbnNwZWN0b3I6OnVwZGF0ZUNsaWVudENhcGFiaWxpdGllcygpCit7Cisg
ICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKworICAgIHN0ZDo6bG9ja19ndWFyZDxMb2NrPiBs
b2NrKG1fbXV0ZXgpOworCisgICAgaWYgKCFtX2NsaWVudCkKKyAgICAgICAgbV9jbGllbnRDYXBh
YmlsaXRpZXMgPSBzdGQ6Om51bGxvcHQ7CisgICAgZWxzZSB7CisgICAgICAgIFJlbW90ZUluc3Bl
Y3Rvcjo6Q2xpZW50OjpDYXBhYmlsaXRpZXMgdXBkYXRlZENhcGFiaWxpdGllcyA9IHsKKyAgICAg
ICAgICAgIG1fY2xpZW50LT5yZW1vdGVBdXRvbWF0aW9uQWxsb3dlZCgpIC8vIHJlbW90ZUF1dG9t
YXRpb25BbGxvd2VkCisgICAgICAgIH07CisKKyAgICAgICAgbV9jbGllbnRDYXBhYmlsaXRpZXMg
PSB1cGRhdGVkQ2FwYWJpbGl0aWVzOworICAgIH0KK30KKwordm9pZCBSZW1vdGVJbnNwZWN0b3I6
OnNldFJlbW90ZUluc3BlY3RvckNsaWVudChSZW1vdGVJbnNwZWN0b3I6OkNsaWVudCogY2xpZW50
KQoreworICAgIEFTU0VSVF9BUkcoY2xpZW50LCBjbGllbnQpOworICAgIEFTU0VSVCghbV9jbGll
bnQpOworCisgICAgeworICAgICAgICBzdGQ6OmxvY2tfZ3VhcmQ8TG9jaz4gbG9jayhtX211dGV4
KTsKKyAgICAgICAgbV9jbGllbnQgPSBjbGllbnQ7CisgICAgfQorCisgICAgLy8gU2VuZCBhbiB1
cGRhdGVkIGxpc3RpbmcgdGhhdCBpbmNsdWRlcyB3aGV0aGVyIHRoZSBjbGllbnQgYWxsb3dzIHJl
bW90ZSBhdXRvbWF0aW9uLgorICAgIHVwZGF0ZUNsaWVudENhcGFiaWxpdGllcygpOworICAgIHB1
c2hMaXN0aW5nc1Nvb24oKTsKK30KKwordm9pZCBSZW1vdGVJbnNwZWN0b3I6OnNldHVwRmFpbGVk
KHVuc2lnbmVkIHRhcmdldElkZW50aWZpZXIpCit7CisgICAgc3RkOjpsb2NrX2d1YXJkPExvY2s+
IGxvY2sobV9tdXRleCk7CisKKyAgICBtX3RhcmdldENvbm5lY3Rpb25NYXAucmVtb3ZlKHRhcmdl
dElkZW50aWZpZXIpOworCisgICAgdXBkYXRlSGFzQWN0aXZlRGVidWdTZXNzaW9uKCk7CisKKyAg
ICBpZiAodGFyZ2V0SWRlbnRpZmllciA9PSBtX2F1dG9tYXRpY0luc3BlY3Rpb25DYW5kaWRhdGVU
YXJnZXRJZGVudGlmaWVyKQorICAgICAgICBtX2F1dG9tYXRpY0luc3BlY3Rpb25QYXVzZWQgPSBm
YWxzZTsKKworICAgIHB1c2hMaXN0aW5nc1Nvb24oKTsKK30KKwordm9pZCBSZW1vdGVJbnNwZWN0
b3I6OnNldHVwQ29tcGxldGVkKHVuc2lnbmVkIHRhcmdldElkZW50aWZpZXIpCit7CisgICAgc3Rk
Ojpsb2NrX2d1YXJkPExvY2s+IGxvY2sobV9tdXRleCk7CisKKyAgICBpZiAodGFyZ2V0SWRlbnRp
ZmllciA9PSBtX2F1dG9tYXRpY0luc3BlY3Rpb25DYW5kaWRhdGVUYXJnZXRJZGVudGlmaWVyKQor
ICAgICAgICBtX2F1dG9tYXRpY0luc3BlY3Rpb25QYXVzZWQgPSBmYWxzZTsKK30KKworYm9vbCBS
ZW1vdGVJbnNwZWN0b3I6OndhaXRpbmdGb3JBdXRvbWF0aWNJbnNwZWN0aW9uKHVuc2lnbmVkKQor
eworICAgIC8vIFdlIGRvbid0IHRha2UgdGhlIGxvY2sgdG8gY2hlY2sgdGhpcyBiZWNhdXNlIHdl
IGFzc3VtZSBpdCB3aWxsIGJlIGNoZWNrZWQgcmVwZWF0ZWRseS4KKyAgICByZXR1cm4gbV9hdXRv
bWF0aWNJbnNwZWN0aW9uUGF1c2VkOworfQorCit2b2lkIFJlbW90ZUluc3BlY3Rvcjo6Y2xpZW50
Q2FwYWJpbGl0aWVzRGlkQ2hhbmdlKCkKK3sKKyAgICB1cGRhdGVDbGllbnRDYXBhYmlsaXRpZXMo
KTsKKyAgICBwdXNoTGlzdGluZ3NTb29uKCk7Cit9CisKK3ZvaWQgUmVtb3RlSW5zcGVjdG9yOjpz
dG9wKCkKK3sKKyAgICBzdGQ6OmxvY2tfZ3VhcmQ8TG9jaz4gbG9jayhtX211dGV4KTsKKworICAg
IHN0b3BJbnRlcm5hbChTdG9wU291cmNlOjpBUEkpOworfQorCitUYXJnZXRMaXN0aW5nIFJlbW90
ZUluc3BlY3Rvcjo6bGlzdGluZ0ZvclRhcmdldChjb25zdCBSZW1vdGVDb250cm9sbGFibGVUYXJn
ZXQmIHRhcmdldCkgY29uc3QKK3sKKyAgICBpZiAoaXM8UmVtb3RlSW5zcGVjdGlvblRhcmdldD4o
dGFyZ2V0KSkKKyAgICAgICAgcmV0dXJuIGxpc3RpbmdGb3JJbnNwZWN0aW9uVGFyZ2V0KGRvd25j
YXN0PFJlbW90ZUluc3BlY3Rpb25UYXJnZXQ+KHRhcmdldCkpOworICAgIGlmIChpczxSZW1vdGVB
dXRvbWF0aW9uVGFyZ2V0Pih0YXJnZXQpKQorICAgICAgICByZXR1cm4gbGlzdGluZ0ZvckF1dG9t
YXRpb25UYXJnZXQoZG93bmNhc3Q8UmVtb3RlQXV0b21hdGlvblRhcmdldD4odGFyZ2V0KSk7CisK
KyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKwordm9p
ZCBSZW1vdGVJbnNwZWN0b3I6OnVwZGF0ZUhhc0FjdGl2ZURlYnVnU2Vzc2lvbigpCit7CisgICAg
Ym9vbCBoYXNBY3RpdmVEZWJ1Z2dlclNlc3Npb24gPSAhbV90YXJnZXRDb25uZWN0aW9uTWFwLmlz
RW1wdHkoKTsKKyAgICBpZiAoaGFzQWN0aXZlRGVidWdnZXJTZXNzaW9uID09IG1faGFzQWN0aXZl
RGVidWdTZXNzaW9uKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2hhc0FjdGl2ZURlYnVnU2Vz
c2lvbiA9IGhhc0FjdGl2ZURlYnVnZ2VyU2Vzc2lvbjsKKworICAgIC8vIEZJWE1FOiBFeHBvc2Ug
c29tZSB3YXkgdG8gYWNjZXNzIHRoaXMgc3RhdGUgaW4gYW4gZW1iZWRkZXIuCisgICAgLy8gTGVn
YWN5IGlPUyBXZWJLaXQgMSBoYWQgYSBub3RpZmljYXRpb24uIFRoaXMgd2lsbCBuZWVkIHRvIGJl
IHNtYXJ0ZXIgd2l0aCBXZWJLaXQyLgorfQorCit9IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IKKwor
I2VuZGlmIC8vIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3IuaAppbmRleCA5
M2ZkMWE3ZDdjMC4uMjFhN2UxM2YxMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3Rvci5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3Rvci5oCkBAIC0yNywxNCArMjcs
MTggQEAKIAogI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQogCi0jaW1wb3J0ICJSZW1vdGVJ
bnNwZWN0b3JYUENDb25uZWN0aW9uLmgiCi0jaW1wb3J0IDx3dGYvRm9yd2FyZC5oPgotI2ltcG9y
dCA8d3RmL0hhc2hNYXAuaD4KLSNpbXBvcnQgPHd0Zi9Mb2NrLmg+Ci0jaW1wb3J0IDx3dGYvUmV0
YWluUHRyLmg+CisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaE1h
cC5oPgorI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CisKKyNpZiBQTEFURk9STShDT0NPQSkKKyNpbmNs
dWRlICJSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uLmgiCisjaW5jbHVkZSA8d3RmL1JldGFp
blB0ci5oPgogCiBPQkpDX0NMQVNTIE5TRGljdGlvbmFyeTsKIE9CSkNfQ0xBU1MgTlNTdHJpbmc7
Cit0eXBlZGVmIFJldGFpblB0cjxOU0RpY3Rpb25hcnk+IFRhcmdldExpc3Rpbmc7CisjZW5kaWYK
IAogbmFtZXNwYWNlIEluc3BlY3RvciB7CiAKQEAgLTQ0LDcgKzQ4LDExIEBAIGNsYXNzIFJlbW90
ZUNvbnRyb2xsYWJsZVRhcmdldDsKIGNsYXNzIFJlbW90ZUluc3BlY3Rpb25UYXJnZXQ7CiBjbGFz
cyBSZW1vdGVJbnNwZWN0b3JDbGllbnQ7CiAKLWNsYXNzIEpTX0VYUE9SVF9QUklWQVRFIFJlbW90
ZUluc3BlY3RvciBmaW5hbCA6IHB1YmxpYyBSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uOjpD
bGllbnQgeworY2xhc3MgSlNfRVhQT1JUX1BSSVZBVEUgUmVtb3RlSW5zcGVjdG9yIGZpbmFsCisj
aWYgUExBVEZPUk0oQ09DT0EpCisgICAgOiBwdWJsaWMgUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVj
dGlvbjo6Q2xpZW50CisjZW5kaWYKK3sKIHB1YmxpYzoKICAgICBjbGFzcyBDbGllbnQgewogICAg
IHB1YmxpYzoKQEAgLTgwLDExICs4OCwxMyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzdGFydCgpOwog
ICAgIHZvaWQgc3RvcCgpOwogCisjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgYm9vbCBoYXNQYXJl
bnRQcm9jZXNzSW5mb3JtYXRpb24oKSBjb25zdCB7IHJldHVybiBtX3BhcmVudFByb2Nlc3NJZGVu
dGlmaWVyICE9IDA7IH0KICAgICBwaWRfdCBwYXJlbnRQcm9jZXNzSWRlbnRpZmllcigpIGNvbnN0
IHsgcmV0dXJuIG1fcGFyZW50UHJvY2Vzc0lkZW50aWZpZXI7IH0KICAgICBSZXRhaW5QdHI8Q0ZE
YXRhUmVmPiBwYXJlbnRQcm9jZXNzQXVkaXREYXRhKCkgY29uc3QgeyByZXR1cm4gbV9wYXJlbnRQ
cm9jZXNzQXVkaXREYXRhOyB9CiAgICAgdm9pZCBzZXRQYXJlbnRQcm9jZXNzSW5mb3JtYXRpb24o
cGlkX3QsIFJldGFpblB0cjxDRkRhdGFSZWY+IGF1ZGl0RGF0YSk7CiAgICAgdm9pZCBzZXRQYXJl
bnRQcm9jZXNzSW5mb21hdGlvbklzRGVsYXllZCgpOworI2VuZGlmCiAKIHByaXZhdGU6CiAgICAg
UmVtb3RlSW5zcGVjdG9yKCk7CkBAIC05NCwxMSArMTA0LDE0IEBAIHByaXZhdGU6CiAgICAgZW51
bSBjbGFzcyBTdG9wU291cmNlIHsgQVBJLCBYUENNZXNzYWdlIH07CiAgICAgdm9pZCBzdG9wSW50
ZXJuYWwoU3RvcFNvdXJjZSk7CiAKKyNpZiBQTEFURk9STShDT0NPQSkKICAgICB2b2lkIHNldHVw
WFBDQ29ubmVjdGlvbklmTmVlZGVkKCk7CisjZW5kaWYKKworICAgIFRhcmdldExpc3RpbmcgbGlz
dGluZ0ZvclRhcmdldChjb25zdCBSZW1vdGVDb250cm9sbGFibGVUYXJnZXQmKSBjb25zdDsKKyAg
ICBUYXJnZXRMaXN0aW5nIGxpc3RpbmdGb3JJbnNwZWN0aW9uVGFyZ2V0KGNvbnN0IFJlbW90ZUlu
c3BlY3Rpb25UYXJnZXQmKSBjb25zdDsKKyAgICBUYXJnZXRMaXN0aW5nIGxpc3RpbmdGb3JBdXRv
bWF0aW9uVGFyZ2V0KGNvbnN0IFJlbW90ZUF1dG9tYXRpb25UYXJnZXQmKSBjb25zdDsKIAotICAg
IFJldGFpblB0cjxOU0RpY3Rpb25hcnk+IGxpc3RpbmdGb3JUYXJnZXQoY29uc3QgUmVtb3RlQ29u
dHJvbGxhYmxlVGFyZ2V0JikgY29uc3Q7Ci0gICAgUmV0YWluUHRyPE5TRGljdGlvbmFyeT4gbGlz
dGluZ0Zvckluc3BlY3Rpb25UYXJnZXQoY29uc3QgUmVtb3RlSW5zcGVjdGlvblRhcmdldCYpIGNv
bnN0OwotICAgIFJldGFpblB0cjxOU0RpY3Rpb25hcnk+IGxpc3RpbmdGb3JBdXRvbWF0aW9uVGFy
Z2V0KGNvbnN0IFJlbW90ZUF1dG9tYXRpb25UYXJnZXQmKSBjb25zdDsKICAgICB2b2lkIHB1c2hM
aXN0aW5nc05vdygpOwogICAgIHZvaWQgcHVzaExpc3RpbmdzU29vbigpOwogCkBAIC0xMDcsNiAr
MTIwLDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgc2VuZEF1dG9tYXRpY0luc3BlY3Rpb25DYW5k
aWRhdGVNZXNzYWdlKCk7CiAKKyNpZiBQTEFURk9STShDT0NPQSkKICAgICB2b2lkIHhwY0Nvbm5l
Y3Rpb25SZWNlaXZlZE1lc3NhZ2UoUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbiosIE5TU3Ry
aW5nICptZXNzYWdlTmFtZSwgTlNEaWN0aW9uYXJ5ICp1c2VySW5mbykgb3ZlcnJpZGU7CiAgICAg
dm9pZCB4cGNDb25uZWN0aW9uRmFpbGVkKFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24qKSBv
dmVycmlkZTsKICAgICB2b2lkIHhwY0Nvbm5lY3Rpb25VbmhhbmRsZWRNZXNzYWdlKFJlbW90ZUlu
c3BlY3RvclhQQ0Nvbm5lY3Rpb24qLCB4cGNfb2JqZWN0X3QpIG92ZXJyaWRlOwpAQCAtMTIxLDYg
KzEzNSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCByZWNlaXZlZEF1dG9tYXRpY0luc3BlY3Rpb25D
b25maWd1cmF0aW9uTWVzc2FnZShOU0RpY3Rpb25hcnkgKnVzZXJJbmZvKTsKICAgICB2b2lkIHJl
Y2VpdmVkQXV0b21hdGljSW5zcGVjdGlvblJlamVjdE1lc3NhZ2UoTlNEaWN0aW9uYXJ5ICp1c2Vy
SW5mbyk7CiAgICAgdm9pZCByZWNlaXZlZEF1dG9tYXRpb25TZXNzaW9uUmVxdWVzdE1lc3NhZ2Uo
TlNEaWN0aW9uYXJ5ICp1c2VySW5mbyk7CisjZW5kaWYKIAogICAgIHN0YXRpYyBib29sIHN0YXJ0
RW5hYmxlZDsKIApAQCAtMTMxLDE1ICsxNDYsMTkgQEAgcHJpdmF0ZToKICAgICBMb2NrIG1fbXV0
ZXg7CiAKICAgICBIYXNoTWFwPHVuc2lnbmVkLCBSZW1vdGVDb250cm9sbGFibGVUYXJnZXQqPiBt
X3RhcmdldE1hcDsKLSAgICBIYXNoTWFwPHVuc2lnbmVkLCBSZXRhaW5QdHI8TlNEaWN0aW9uYXJ5
Pj4gbV90YXJnZXRMaXN0aW5nTWFwOwogICAgIEhhc2hNYXA8dW5zaWduZWQsIFJlZlB0cjxSZW1v
dGVDb25uZWN0aW9uVG9UYXJnZXQ+PiBtX3RhcmdldENvbm5lY3Rpb25NYXA7CisgICAgSGFzaE1h
cDx1bnNpZ25lZCwgVGFyZ2V0TGlzdGluZz4gbV90YXJnZXRMaXN0aW5nTWFwOwogCisjaWYgUExB
VEZPUk0oQ09DT0EpCiAgICAgUmVmUHRyPFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24+IG1f
cmVsYXlDb25uZWN0aW9uOworI2VuZGlmCiAKICAgICBSZW1vdGVJbnNwZWN0b3I6OkNsaWVudCog
bV9jbGllbnQgeyBudWxscHRyIH07CiAgICAgc3RkOjpvcHRpb25hbDxSZW1vdGVJbnNwZWN0b3I6
OkNsaWVudDo6Q2FwYWJpbGl0aWVzPiBtX2NsaWVudENhcGFiaWxpdGllczsKIAorI2lmIFBMQVRG
T1JNKENPQ09BKQogICAgIGRpc3BhdGNoX3F1ZXVlX3QgbV94cGNRdWV1ZTsKKyNlbmRpZgogICAg
IHVuc2lnbmVkIG1fbmV4dEF2YWlsYWJsZVRhcmdldElkZW50aWZpZXIgeyAxIH07CiAgICAgaW50
IG1fbm90aWZ5VG9rZW4geyAwIH07CiAgICAgYm9vbCBtX2VuYWJsZWQgeyBmYWxzZSB9OwpAQCAt
MTQ3LDcgKzE2Niw5IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX3B1c2hTY2hlZHVsZWQgeyBmYWxz
ZSB9OwogCiAgICAgcGlkX3QgbV9wYXJlbnRQcm9jZXNzSWRlbnRpZmllciB7IDAgfTsKKyNpZiBQ
TEFURk9STShDT0NPQSkKICAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBtX3BhcmVudFByb2Nlc3NB
dWRpdERhdGE7CisjZW5kaWYKICAgICBib29sIG1fc2hvdWxkU2VuZFBhcmVudFByb2Nlc3NJbmZv
cm1hdGlvbiB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2F1dG9tYXRpY0luc3BlY3Rpb25FbmFibGVk
IHsgZmFsc2UgfTsKICAgICBib29sIG1fYXV0b21hdGljSW5zcGVjdGlvblBhdXNlZCB7IGZhbHNl
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9S
ZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQubW0gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL3JlbW90ZS9jb2NvYS9SZW1vdGVDb25uZWN0aW9uVG9UYXJnZXRDb2NvYS5tbQpzaW1pbGFy
aXR5IGluZGV4IDkzJQpyZW5hbWUgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L3JlbW90ZS9SZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQubW0KcmVuYW1lIHRvIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL2NvY29hL1JlbW90ZUNvbm5lY3Rpb25Ub1Rhcmdl
dENvY29hLm1tCmluZGV4IGQ2MGRhNDhhZmE4Li5hYzNjNzIzMWY0NSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlQ29ubmVjdGlvblRvVGFy
Z2V0Lm1tCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL2NvY29h
L1JlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldENvY29hLm1tCkBAIC0zMSw2ICszMSw3IEBACiAjaW1w
b3J0ICJFdmVudExvb3AuaCIKICNpbXBvcnQgIlJlbW90ZUF1dG9tYXRpb25UYXJnZXQuaCIKICNp
bXBvcnQgIlJlbW90ZUluc3BlY3Rpb25UYXJnZXQuaCIKKyNpbXBvcnQgIlJlbW90ZUluc3BlY3Rv
ci5oIgogI2ltcG9ydCA8ZGlzcGF0Y2gvZGlzcGF0Y2guaD4KICNpbXBvcnQgPHd0Zi9PcHRpb25h
bC5oPgogCkBAIC03OCwxMCArNzksMTAgQEAgc3RhdGljIHZvaWQgUmVtb3RlVGFyZ2V0UXVldWVU
YXNrT25HbG9iYWxRdWV1ZSh2b2lkIChedGFzaykoKSkKIHN0YXRpYyB2b2lkIFJlbW90ZVRhcmdl
dEluaXRpYWxpemVHbG9iYWxRdWV1ZSgpCiB7CiAgICAgc3RhdGljIGRpc3BhdGNoX29uY2VfdCBw
cmVkOwotICAgIGRpc3BhdGNoX29uY2UoJnByZWQsIF57CisgICAgZGlzcGF0Y2hfb25jZSgmcHJl
ZCwgXiB7CiAgICAgICAgIHJ3aVF1ZXVlID0gbmV3IFJlbW90ZVRhcmdldFF1ZXVlOwogCi0gICAg
ICAgIENGUnVuTG9vcFNvdXJjZUNvbnRleHQgcnVuTG9vcFNvdXJjZUNvbnRleHQgPSB7MCwgbnVs
bHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0
ciwgbnVsbHB0ciwgUmVtb3RlVGFyZ2V0SGFuZGxlUnVuU291cmNlR2xvYmFsfTsKKyAgICAgICAg
Q0ZSdW5Mb29wU291cmNlQ29udGV4dCBydW5Mb29wU291cmNlQ29udGV4dCA9IHsgMCwgbnVsbHB0
ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwg
bnVsbHB0ciwgUmVtb3RlVGFyZ2V0SGFuZGxlUnVuU291cmNlR2xvYmFsIH07CiAgICAgICAgIHJ3
aVJ1bkxvb3BTb3VyY2UgPSBDRlJ1bkxvb3BTb3VyY2VDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVs
dCwgMSwgJnJ1bkxvb3BTb3VyY2VDb250ZXh0KTsKIAogICAgICAgICAvLyBBZGQgdG8gdGhlIGRl
ZmF1bHQgcnVuIGxvb3AgbW9kZSBmb3IgZGVmYXVsdCBoYW5kbGluZywgYW5kIHRoZSBKU0NvbnRl
eHQgcmVtb3RlIGluc3BlY3RvciBydW4gbG9vcCBtb2RlIHdoZW4gcGF1c2VkLgpAQCAtMTU5LDcg
KzE2MCw3IEBAIGJvb2wgUmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0OjpzZXR1cChib29sIGlzQXV0
b21hdGljSW5zcGVjdGlvbiwgYm9vbCBhdXRvbWF0aWNhCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IAogICAgIHJlZigpOwotICAgIGRpc3BhdGNoQXN5bmNPblRhcmdldCheeworICAgIGRpc3BhdGNo
QXN5bmNPblRhcmdldCheIHsKICAgICAgICAgewogICAgICAgICAgICAgc3RkOjpsb2NrX2d1YXJk
PExvY2s+IGxvY2sobV90YXJnZXRNdXRleCk7CiAgICAgICAgICAgICBpZiAoIW1fdGFyZ2V0IHx8
ICFtX3RhcmdldC0+cmVtb3RlQ29udHJvbEFsbG93ZWQoKSkgewpAQCAtMTk0LDcgKzE5NSw3IEBA
IHZvaWQgUmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0Ojp0YXJnZXRDbG9zZWQoKQogdm9pZCBSZW1v
dGVDb25uZWN0aW9uVG9UYXJnZXQ6OmNsb3NlKCkKIHsKICAgICByZWYoKTsKLSAgICBkaXNwYXRj
aEFzeW5jT25UYXJnZXQoXnsKKyAgICBkaXNwYXRjaEFzeW5jT25UYXJnZXQoXiB7CiAgICAgICAg
IHsKICAgICAgICAgICAgIHN0ZDo6bG9ja19ndWFyZDxMb2NrPiBsb2NrKG1fdGFyZ2V0TXV0ZXgp
OwogCkBAIC0yMDksMTAgKzIxMCwxMCBAQCB2b2lkIFJlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldDo6
Y2xvc2UoKQogICAgIH0pOwogfQogCi12b2lkIFJlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldDo6c2Vu
ZE1lc3NhZ2VUb1RhcmdldChOU1N0cmluZyAqbWVzc2FnZSkKK3ZvaWQgUmVtb3RlQ29ubmVjdGlv
blRvVGFyZ2V0OjpzZW5kTWVzc2FnZVRvVGFyZ2V0KGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKIHsK
ICAgICByZWYoKTsKLSAgICBkaXNwYXRjaEFzeW5jT25UYXJnZXQoXnsKKyAgICBkaXNwYXRjaEFz
eW5jT25UYXJnZXQoXiB7CiAgICAgICAgIHsKICAgICAgICAgICAgIFJlbW90ZUNvbnRyb2xsYWJs
ZVRhcmdldCogdGFyZ2V0ID0gbnVsbHB0cjsKICAgICAgICAgICAgIHsKQEAgLTI0Niw3ICsyNDcs
NyBAQCB2b2lkIFJlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldDo6c2V0dXBSdW5Mb29wKCkKIAogICAg
IG1fcnVuTG9vcCA9IHRhcmdldFJ1bkxvb3A7CiAKLSAgICBDRlJ1bkxvb3BTb3VyY2VDb250ZXh0
IHJ1bkxvb3BTb3VyY2VDb250ZXh0ID0gezAsIHRoaXMsIG51bGxwdHIsIG51bGxwdHIsIG51bGxw
dHIsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIFJlbW90ZVRhcmdldEhhbmRs
ZVJ1blNvdXJjZVdpdGhJbmZvfTsKKyAgICBDRlJ1bkxvb3BTb3VyY2VDb250ZXh0IHJ1bkxvb3BT
b3VyY2VDb250ZXh0ID0geyAwLCB0aGlzLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBudWxs
cHRyLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBSZW1vdGVUYXJnZXRIYW5kbGVSdW5Tb3Vy
Y2VXaXRoSW5mbyB9OwogICAgIG1fcnVuTG9vcFNvdXJjZSA9IGFkb3B0Q0YoQ0ZSdW5Mb29wU291
cmNlQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIDEsICZydW5Mb29wU291cmNlQ29udGV4dCkp
OwogCiAgICAgQ0ZSdW5Mb29wQWRkU291cmNlKG1fcnVuTG9vcC5nZXQoKSwgbV9ydW5Mb29wU291
cmNlLmdldCgpLCBrQ0ZSdW5Mb29wRGVmYXVsdE1vZGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yLm1tIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvY29jb2EvUmVtb3RlSW5zcGVjdG9yQ29j
b2EubW0Kc2ltaWxhcml0eSBpbmRleCA4MSUKcmVuYW1lIGZyb20gU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yLm1tCnJlbmFtZSB0byBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9jb2NvYS9SZW1vdGVJbnNwZWN0b3JDb2Nv
YS5tbQppbmRleCAyMWNiMjMyZDhjNC4uZGIzODUyYmNlOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3Rvci5tbQorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9jb2NvYS9SZW1vdGVJbnNwZWN0
b3JDb2NvYS5tbQpAQCAtNDcsNyArNDcsNyBAQCBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAogc3Rh
dGljIGJvb2wgY2FuQWNjZXNzV2ViSW5zcGVjdG9yTWFjaFBvcnQoKQogewotICAgIHJldHVybiBz
YW5kYm94X2NoZWNrKGdldHBpZCgpLCAibWFjaC1sb29rdXAiLCBzdGF0aWNfY2FzdDxlbnVtIHNh
bmRib3hfZmlsdGVyX3R5cGU+KFNBTkRCT1hfRklMVEVSX0dMT0JBTF9OQU1FIHwgU0FOREJPWF9D
SEVDS19OT19SRVBPUlQpLCBXSVJYUENNYWNoUG9ydE5hbWUpID09IDA7CisgICAgcmV0dXJuICFz
YW5kYm94X2NoZWNrKGdldHBpZCgpLCAibWFjaC1sb29rdXAiLCBzdGF0aWNfY2FzdDxlbnVtIHNh
bmRib3hfZmlsdGVyX3R5cGU+KFNBTkRCT1hfRklMVEVSX0dMT0JBTF9OQU1FIHwgU0FOREJPWF9D
SEVDS19OT19SRVBPUlQpLCBXSVJYUENNYWNoUG9ydE5hbWUpOwogfQogCiBzdGF0aWMgYm9vbCBn
bG9iYWxBdXRvbWF0aWNJbnNwZWN0aW9uU3RhdGUoKQpAQCAtNjEsMjEgKzYxLDE0IEBAIHN0YXRp
YyBib29sIGdsb2JhbEF1dG9tYXRpY0luc3BlY3Rpb25TdGF0ZSgpCiAgICAgcmV0dXJuIGF1dG9t
YXRpY0luc3BlY3Rpb25FbmFibGVkID09IDE7CiB9CiAKLWJvb2wgUmVtb3RlSW5zcGVjdG9yOjpz
dGFydEVuYWJsZWQgPSB0cnVlOwotCi12b2lkIFJlbW90ZUluc3BlY3Rvcjo6c3RhcnREaXNhYmxl
ZCgpCi17Ci0gICAgUmVtb3RlSW5zcGVjdG9yOjpzdGFydEVuYWJsZWQgPSBmYWxzZTsKLX0KLQog
UmVtb3RlSW5zcGVjdG9yJiBSZW1vdGVJbnNwZWN0b3I6OnNpbmdsZXRvbigpCiB7CiAgICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPFJlbW90ZUluc3BlY3Rvcj4gc2hhcmVkOwogCiAgICAgc3RhdGlj
IGRpc3BhdGNoX29uY2VfdCBvbmNlOwotICAgIGRpc3BhdGNoX29uY2UoJm9uY2UsIF57CisgICAg
ZGlzcGF0Y2hfb25jZSgmb25jZSwgXiB7CiAgICAgICAgIGlmIChjYW5BY2Nlc3NXZWJJbnNwZWN0
b3JNYWNoUG9ydCgpKSB7Ci0gICAgICAgICAgICBkaXNwYXRjaF9ibG9ja190IGluaXRpYWxpemUg
PSBeeworICAgICAgICAgICAgZGlzcGF0Y2hfYmxvY2tfdCBpbml0aWFsaXplID0gXiB7CiAgICAg
ICAgICAgICAgICAgV1RGOjppbml0aWFsaXplTWFpblRocmVhZCgpOwogICAgICAgICAgICAgICAg
IEpTQzo6aW5pdGlhbGl6ZVRocmVhZGluZygpOwogICAgICAgICAgICAgICAgIGlmIChSZW1vdGVJ
bnNwZWN0b3I6OnN0YXJ0RW5hYmxlZCkKQEAgLTEwMSw4NSArOTQsNiBAQCBSZW1vdGVJbnNwZWN0
b3I6OlJlbW90ZUluc3BlY3RvcigpCiB7CiB9CiAKLXVuc2lnbmVkIFJlbW90ZUluc3BlY3Rvcjo6
bmV4dEF2YWlsYWJsZVRhcmdldElkZW50aWZpZXIoKQotewotICAgIHVuc2lnbmVkIG5leHRWYWxp
ZFRhcmdldElkZW50aWZpZXI7Ci0gICAgZG8gewotICAgICAgICBuZXh0VmFsaWRUYXJnZXRJZGVu
dGlmaWVyID0gbV9uZXh0QXZhaWxhYmxlVGFyZ2V0SWRlbnRpZmllcisrOwotICAgIH0gd2hpbGUg
KCFuZXh0VmFsaWRUYXJnZXRJZGVudGlmaWVyIHx8IG5leHRWYWxpZFRhcmdldElkZW50aWZpZXIg
PT0gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpIHx8IG1fdGFyZ2V0TWFwLmNv
bnRhaW5zKG5leHRWYWxpZFRhcmdldElkZW50aWZpZXIpKTsKLSAgICByZXR1cm4gbmV4dFZhbGlk
VGFyZ2V0SWRlbnRpZmllcjsKLX0KLQotdm9pZCBSZW1vdGVJbnNwZWN0b3I6OnJlZ2lzdGVyVGFy
Z2V0KFJlbW90ZUNvbnRyb2xsYWJsZVRhcmdldCogdGFyZ2V0KQotewotICAgIEFTU0VSVF9BUkco
dGFyZ2V0LCB0YXJnZXQpOwotCi0gICAgc3RkOjpsb2NrX2d1YXJkPExvY2s+IGxvY2sobV9tdXRl
eCk7Ci0KLSAgICB1bnNpZ25lZCB0YXJnZXRJZGVudGlmaWVyID0gbmV4dEF2YWlsYWJsZVRhcmdl
dElkZW50aWZpZXIoKTsKLSAgICB0YXJnZXQtPnNldFRhcmdldElkZW50aWZpZXIodGFyZ2V0SWRl
bnRpZmllcik7Ci0KLSAgICB7Ci0gICAgICAgIGF1dG8gcmVzdWx0ID0gbV90YXJnZXRNYXAuc2V0
KHRhcmdldElkZW50aWZpZXIsIHRhcmdldCk7Ci0gICAgICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0
LCByZXN1bHQuaXNOZXdFbnRyeSk7Ci0gICAgfQotCi0gICAgLy8gSWYgcmVtb3RlIGNvbnRyb2wg
aXMgbm90IGFsbG93ZWQsIGEgbnVsbCBsaXN0aW5nIGlzIHJldHVybmVkLgotICAgIGlmIChSZXRh
aW5QdHI8TlNEaWN0aW9uYXJ5PiB0YXJnZXRMaXN0aW5nID0gbGlzdGluZ0ZvclRhcmdldCgqdGFy
Z2V0KSkgewotICAgICAgICBhdXRvIHJlc3VsdCA9IG1fdGFyZ2V0TGlzdGluZ01hcC5zZXQodGFy
Z2V0SWRlbnRpZmllciwgdGFyZ2V0TGlzdGluZyk7Ci0gICAgICAgIEFTU0VSVF9VTlVTRUQocmVz
dWx0LCByZXN1bHQuaXNOZXdFbnRyeSk7Ci0gICAgfQotCi0gICAgcHVzaExpc3RpbmdzU29vbigp
OwotfQotCi12b2lkIFJlbW90ZUluc3BlY3Rvcjo6dW5yZWdpc3RlclRhcmdldChSZW1vdGVDb250
cm9sbGFibGVUYXJnZXQqIHRhcmdldCkKLXsKLSAgICBBU1NFUlRfQVJHKHRhcmdldCwgdGFyZ2V0
KTsKLQotICAgIHN0ZDo6bG9ja19ndWFyZDxMb2NrPiBsb2NrKG1fbXV0ZXgpOwotCi0gICAgdW5z
aWduZWQgdGFyZ2V0SWRlbnRpZmllciA9IHRhcmdldC0+dGFyZ2V0SWRlbnRpZmllcigpOwotICAg
IGlmICghdGFyZ2V0SWRlbnRpZmllcikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgYm9vbCB3YXNS
ZW1vdmVkID0gbV90YXJnZXRNYXAucmVtb3ZlKHRhcmdldElkZW50aWZpZXIpOwotICAgIEFTU0VS
VF9VTlVTRUQod2FzUmVtb3ZlZCwgd2FzUmVtb3ZlZCk7Ci0KLSAgICAvLyBUaGUgbGlzdGluZyBt
YXkgbmV2ZXIgaGF2ZSBiZWVuIGFkZGVkIGlmIHJlbW90ZSBjb250cm9sIGlzbid0IGFsbG93ZWQu
Ci0gICAgbV90YXJnZXRMaXN0aW5nTWFwLnJlbW92ZSh0YXJnZXRJZGVudGlmaWVyKTsKLQotICAg
IGlmIChhdXRvIGNvbm5lY3Rpb25Ub1RhcmdldCA9IG1fdGFyZ2V0Q29ubmVjdGlvbk1hcC50YWtl
KHRhcmdldElkZW50aWZpZXIpKQotICAgICAgICBjb25uZWN0aW9uVG9UYXJnZXQtPnRhcmdldENs
b3NlZCgpOwotCi0gICAgcHVzaExpc3RpbmdzU29vbigpOwotfQotCi12b2lkIFJlbW90ZUluc3Bl
Y3Rvcjo6dXBkYXRlVGFyZ2V0KFJlbW90ZUNvbnRyb2xsYWJsZVRhcmdldCogdGFyZ2V0KQotewot
ICAgIEFTU0VSVF9BUkcodGFyZ2V0LCB0YXJnZXQpOwotCi0gICAgc3RkOjpsb2NrX2d1YXJkPExv
Y2s+IGxvY2sobV9tdXRleCk7Ci0KLSAgICB1bnNpZ25lZCB0YXJnZXRJZGVudGlmaWVyID0gdGFy
Z2V0LT50YXJnZXRJZGVudGlmaWVyKCk7Ci0gICAgaWYgKCF0YXJnZXRJZGVudGlmaWVyKQotICAg
ICAgICByZXR1cm47Ci0KLSAgICB7Ci0gICAgICAgIGF1dG8gcmVzdWx0ID0gbV90YXJnZXRNYXAu
c2V0KHRhcmdldElkZW50aWZpZXIsIHRhcmdldCk7Ci0gICAgICAgIEFTU0VSVF9VTlVTRUQocmVz
dWx0LCAhcmVzdWx0LmlzTmV3RW50cnkpOwotICAgIH0KLQotICAgIC8vIElmIHRoZSB0YXJnZXQg
aGFzIGp1c3QgYWxsb3dlZCByZW1vdGUgY29udHJvbCwgdGhlbiB0aGUgbGlzdGluZyB3b24ndCBl
eGlzdCB5ZXQuCi0gICAgLy8gSWYgdGhlIHRhcmdldCBoYXMgbm8gaWRlbnRpZmllciByZW1vdmUg
dGhlIG9sZCBsaXN0aW5nLgotICAgIGlmIChSZXRhaW5QdHI8TlNEaWN0aW9uYXJ5PiB0YXJnZXRM
aXN0aW5nID0gbGlzdGluZ0ZvclRhcmdldCgqdGFyZ2V0KSkKLSAgICAgICAgbV90YXJnZXRMaXN0
aW5nTWFwLnNldCh0YXJnZXRJZGVudGlmaWVyLCB0YXJnZXRMaXN0aW5nKTsKLSAgICBlbHNlCi0g
ICAgICAgIG1fdGFyZ2V0TGlzdGluZ01hcC5yZW1vdmUodGFyZ2V0SWRlbnRpZmllcik7Ci0KLSAg
ICBwdXNoTGlzdGluZ3NTb29uKCk7Ci19Ci0KIHZvaWQgUmVtb3RlSW5zcGVjdG9yOjp1cGRhdGVB
dXRvbWF0aWNJbnNwZWN0aW9uQ2FuZGlkYXRlKFJlbW90ZUluc3BlY3Rpb25UYXJnZXQqIHRhcmdl
dCkKIHsKICAgICBBU1NFUlRfQVJHKHRhcmdldCwgdGFyZ2V0KTsKQEAgLTIzMCw3ICsxNDQsNyBA
QCB2b2lkIFJlbW90ZUluc3BlY3Rvcjo6dXBkYXRlQXV0b21hdGljSW5zcGVjdGlvbkNhbmRpZGF0
ZShSZW1vdGVJbnNwZWN0aW9uVGFyZ2V0KgogI2Vsc2UKICAgICAgICAgaW50NjRfdCBkZWJ1Z2dl
clRpbWVvdXREZWxheSA9IDE7CiAjZW5kaWYKLSAgICAgICAgZGlzcGF0Y2hfYWZ0ZXIoZGlzcGF0
Y2hfdGltZShESVNQQVRDSF9USU1FX05PVywgZGVidWdnZXJUaW1lb3V0RGVsYXkgKiBOU0VDX1BF
Ul9TRUMpLCBkaXNwYXRjaF9nZXRfZ2xvYmFsX3F1ZXVlKERJU1BBVENIX1FVRVVFX1BSSU9SSVRZ
X0RFRkFVTFQsIDApLCBeeworICAgICAgICBkaXNwYXRjaF9hZnRlcihkaXNwYXRjaF90aW1lKERJ
U1BBVENIX1RJTUVfTk9XLCBkZWJ1Z2dlclRpbWVvdXREZWxheSAqIE5TRUNfUEVSX1NFQyksIGRp
c3BhdGNoX2dldF9nbG9iYWxfcXVldWUoRElTUEFUQ0hfUVVFVUVfUFJJT1JJVFlfREVGQVVMVCwg
MCksIF4gewogICAgICAgICAgICAgc3RkOjpsb2NrX2d1YXJkPExvY2s+IGxvY2sobV9tdXRleCk7
CiAgICAgICAgICAgICBpZiAobV9hdXRvbWF0aWNJbnNwZWN0aW9uQ2FuZGlkYXRlVGFyZ2V0SWRl
bnRpZmllciA9PSB0YXJnZXRJZGVudGlmaWVyKSB7CiAgICAgICAgICAgICAgICAgTE9HX0VSUk9S
KCJTa2lwcGluZyBBdXRvbWF0aWMgSW5zcGVjdGlvbiBDYW5kaWRhdGUgd2l0aCBwYWdlSWQoJXUp
IGJlY2F1c2Ugd2UgZmFpbGVkIHRvIHJlY2VpdmUgYSByZXNwb25zZSBpbiB0aW1lLiIsIG1fYXV0
b21hdGljSW5zcGVjdGlvbkNhbmRpZGF0ZVRhcmdldElkZW50aWZpZXIpOwpAQCAtMjQ5LDM4ICsx
NjMsNiBAQCB2b2lkIFJlbW90ZUluc3BlY3Rvcjo6dXBkYXRlQXV0b21hdGljSW5zcGVjdGlvbkNh
bmRpZGF0ZShSZW1vdGVJbnNwZWN0aW9uVGFyZ2V0KgogICAgIH0KIH0KIAotdm9pZCBSZW1vdGVJ
bnNwZWN0b3I6OnVwZGF0ZUNsaWVudENhcGFiaWxpdGllcygpCi17Ci0gICAgQVNTRVJUKGlzTWFp
blRocmVhZCgpKTsKLQotICAgIHN0ZDo6bG9ja19ndWFyZDxMb2NrPiBsb2NrKG1fbXV0ZXgpOwot
Ci0gICAgaWYgKCFtX2NsaWVudCkKLSAgICAgICAgbV9jbGllbnRDYXBhYmlsaXRpZXMgPSBzdGQ6
Om51bGxvcHQ7Ci0gICAgZWxzZSB7Ci0gICAgICAgIFJlbW90ZUluc3BlY3Rvcjo6Q2xpZW50OjpD
YXBhYmlsaXRpZXMgdXBkYXRlZENhcGFiaWxpdGllcyA9IHsKLSAgICAgICAgICAgIG1fY2xpZW50
LT5yZW1vdGVBdXRvbWF0aW9uQWxsb3dlZCgpIC8vIHJlbW90ZUF1dG9tYXRpb25BbGxvd2VkCi0g
ICAgICAgIH07Ci0KLSAgICAgICAgbV9jbGllbnRDYXBhYmlsaXRpZXMgPSB1cGRhdGVkQ2FwYWJp
bGl0aWVzOwotICAgIH0KLX0KLQotdm9pZCBSZW1vdGVJbnNwZWN0b3I6OnNldFJlbW90ZUluc3Bl
Y3RvckNsaWVudChSZW1vdGVJbnNwZWN0b3I6OkNsaWVudCogY2xpZW50KQotewotICAgIEFTU0VS
VF9BUkcoY2xpZW50LCBjbGllbnQpOwotICAgIEFTU0VSVCghbV9jbGllbnQpOwotCi0gICAgewot
ICAgICAgICBzdGQ6OmxvY2tfZ3VhcmQ8TG9jaz4gbG9jayhtX211dGV4KTsKLSAgICAgICAgbV9j
bGllbnQgPSBjbGllbnQ7Ci0gICAgfQotCi0gICAgLy8gU2VuZCBhbiB1cGRhdGVkIGxpc3Rpbmcg
dGhhdCBpbmNsdWRlcyB3aGV0aGVyIHRoZSBjbGllbnQgYWxsb3dzIHJlbW90ZSBhdXRvbWF0aW9u
LgotICAgIHVwZGF0ZUNsaWVudENhcGFiaWxpdGllcygpOwotICAgIHB1c2hMaXN0aW5nc1Nvb24o
KTsKLX0KLQogdm9pZCBSZW1vdGVJbnNwZWN0b3I6OnNlbmRBdXRvbWF0aWNJbnNwZWN0aW9uQ2Fu
ZGlkYXRlTWVzc2FnZSgpCiB7CiAgICAgQVNTRVJUKG1fZW5hYmxlZCk7CkBAIC0zMTMsNDAgKzE5
NSw2IEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9yOjpzZW5kTWVzc2FnZVRvUmVtb3RlKHVuc2lnbmVk
IHRhcmdldElkZW50aWZpZXIsIGNvbnN0IFN0cmluCiAgICAgbV9yZWxheUNvbm5lY3Rpb24tPnNl
bmRNZXNzYWdlKFdJUlJhd0RhdGFNZXNzYWdlLCB1c2VySW5mbyk7CiB9CiAKLXZvaWQgUmVtb3Rl
SW5zcGVjdG9yOjpzZXR1cEZhaWxlZCh1bnNpZ25lZCB0YXJnZXRJZGVudGlmaWVyKQotewotICAg
IHN0ZDo6bG9ja19ndWFyZDxMb2NrPiBsb2NrKG1fbXV0ZXgpOwotCi0gICAgbV90YXJnZXRDb25u
ZWN0aW9uTWFwLnJlbW92ZSh0YXJnZXRJZGVudGlmaWVyKTsKLQotICAgIHVwZGF0ZUhhc0FjdGl2
ZURlYnVnU2Vzc2lvbigpOwotCi0gICAgaWYgKHRhcmdldElkZW50aWZpZXIgPT0gbV9hdXRvbWF0
aWNJbnNwZWN0aW9uQ2FuZGlkYXRlVGFyZ2V0SWRlbnRpZmllcikKLSAgICAgICAgbV9hdXRvbWF0
aWNJbnNwZWN0aW9uUGF1c2VkID0gZmFsc2U7Ci0KLSAgICBwdXNoTGlzdGluZ3NTb29uKCk7Ci19
Ci0KLXZvaWQgUmVtb3RlSW5zcGVjdG9yOjpzZXR1cENvbXBsZXRlZCh1bnNpZ25lZCB0YXJnZXRJ
ZGVudGlmaWVyKQotewotICAgIHN0ZDo6bG9ja19ndWFyZDxMb2NrPiBsb2NrKG1fbXV0ZXgpOwot
Ci0gICAgaWYgKHRhcmdldElkZW50aWZpZXIgPT0gbV9hdXRvbWF0aWNJbnNwZWN0aW9uQ2FuZGlk
YXRlVGFyZ2V0SWRlbnRpZmllcikKLSAgICAgICAgbV9hdXRvbWF0aWNJbnNwZWN0aW9uUGF1c2Vk
ID0gZmFsc2U7Ci19Ci0KLWJvb2wgUmVtb3RlSW5zcGVjdG9yOjp3YWl0aW5nRm9yQXV0b21hdGlj
SW5zcGVjdGlvbih1bnNpZ25lZCkKLXsKLSAgICAvLyBXZSBkb24ndCB0YWtlIHRoZSBsb2NrIHRv
IGNoZWNrIHRoaXMgYmVjYXVzZSB3ZSBhc3N1bWUgaXQgd2lsbCBiZSBjaGVja2VkIHJlcGVhdGVk
bHkuCi0gICAgcmV0dXJuIG1fYXV0b21hdGljSW5zcGVjdGlvblBhdXNlZDsKLX0KLQotdm9pZCBS
ZW1vdGVJbnNwZWN0b3I6OmNsaWVudENhcGFiaWxpdGllc0RpZENoYW5nZSgpCi17Ci0gICAgdXBk
YXRlQ2xpZW50Q2FwYWJpbGl0aWVzKCk7Ci0gICAgcHVzaExpc3RpbmdzU29vbigpOwotfQotCiB2
b2lkIFJlbW90ZUluc3BlY3Rvcjo6c3RhcnQoKQogewogICAgIHN0ZDo6bG9ja19ndWFyZDxMb2Nr
PiBsb2NrKG1fbXV0ZXgpOwpAQCAtMzU4LDcgKzIwNiw3IEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9y
OjpzdGFydCgpCiAKICAgICAvLyBMb2FkIHRoZSBpbml0aWFsIGF1dG9tYXRpYyBpbnNwZWN0aW9u
IHN0YXRlIHdoZW4gZmlyc3Qgc3RhcnRlZCwgc28gd2Uga25vdyBpdCBiZWZvcmUgd2UgaGF2ZSBl
dmVuIGNvbm5lY3RlZCB0byB3ZWJpbnNwZWN0b3JkLgogICAgIHN0YXRpYyBkaXNwYXRjaF9vbmNl
X3Qgb25jZTsKLSAgICBkaXNwYXRjaF9vbmNlKCZvbmNlLCBeeworICAgIGRpc3BhdGNoX29uY2Uo
Jm9uY2UsIF4gewogICAgICAgICBtX2F1dG9tYXRpY0luc3BlY3Rpb25FbmFibGVkID0gZ2xvYmFs
QXV0b21hdGljSW5zcGVjdGlvblN0YXRlKCk7CiAgICAgfSk7CiAKQEAgLTM2OSwxMyArMjE3LDYg
QEAgdm9pZCBSZW1vdGVJbnNwZWN0b3I6OnN0YXJ0KCkKICAgICBub3RpZnlfcG9zdChXSVJTZXJ2
aWNlQXZhaWxhYmlsaXR5Q2hlY2tOb3RpZmljYXRpb24pOwogfQogCi12b2lkIFJlbW90ZUluc3Bl
Y3Rvcjo6c3RvcCgpCi17Ci0gICAgc3RkOjpsb2NrX2d1YXJkPExvY2s+IGxvY2sobV9tdXRleCk7
Ci0KLSAgICBzdG9wSW50ZXJuYWwoU3RvcFNvdXJjZTo6QVBJKTsKLX0KLQogdm9pZCBSZW1vdGVJ
bnNwZWN0b3I6OnN0b3BJbnRlcm5hbChTdG9wU291cmNlIHNvdXJjZSkKIHsKICAgICBpZiAoIW1f
ZW5hYmxlZCkKQEAgLTYwOCwyOCArNDQ5LDEzIEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9yOjpwdXNo
TGlzdGluZ3NTb29uKCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9wdXNoU2NoZWR1bGVkID0g
dHJ1ZTsKLSAgICBkaXNwYXRjaF9hZnRlcihkaXNwYXRjaF90aW1lKERJU1BBVENIX1RJTUVfTk9X
LCAwLjIgKiBOU0VDX1BFUl9TRUMpLCBkaXNwYXRjaF9nZXRfZ2xvYmFsX3F1ZXVlKERJU1BBVENI
X1FVRVVFX1BSSU9SSVRZX0RFRkFVTFQsIDApLCBeeworICAgIGRpc3BhdGNoX2FmdGVyKGRpc3Bh
dGNoX3RpbWUoRElTUEFUQ0hfVElNRV9OT1csIDAuMiAqIE5TRUNfUEVSX1NFQyksIGRpc3BhdGNo
X2dldF9nbG9iYWxfcXVldWUoRElTUEFUQ0hfUVVFVUVfUFJJT1JJVFlfREVGQVVMVCwgMCksIF4g
ewogICAgICAgICBzdGQ6OmxvY2tfZ3VhcmQ8TG9jaz4gbG9jayhtX211dGV4KTsKICAgICAgICAg
aWYgKG1fcHVzaFNjaGVkdWxlZCkKICAgICAgICAgICAgIHB1c2hMaXN0aW5nc05vdygpOwogICAg
IH0pOwogfQogCi0jcHJhZ21hIG1hcmsgLSBBY3RpdmUgRGVidWdnZXIgU2Vzc2lvbnMKLQotdm9p
ZCBSZW1vdGVJbnNwZWN0b3I6OnVwZGF0ZUhhc0FjdGl2ZURlYnVnU2Vzc2lvbigpCi17Ci0gICAg
Ym9vbCBoYXNBY3RpdmVEZWJ1Z2dlclNlc3Npb24gPSAhbV90YXJnZXRDb25uZWN0aW9uTWFwLmlz
RW1wdHkoKTsKLSAgICBpZiAoaGFzQWN0aXZlRGVidWdnZXJTZXNzaW9uID09IG1faGFzQWN0aXZl
RGVidWdTZXNzaW9uKQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX2hhc0FjdGl2ZURlYnVnU2Vz
c2lvbiA9IGhhc0FjdGl2ZURlYnVnZ2VyU2Vzc2lvbjsKLQotICAgIC8vIEZJWE1FOiBFeHBvc2Ug
c29tZSB3YXkgdG8gYWNjZXNzIHRoaXMgc3RhdGUgaW4gYW4gZW1iZWRkZXIuCi0gICAgLy8gTGVn
YWN5IGlPUyBXZWJLaXQgMSBoYWQgYSBub3RpZmljYXRpb24uIFRoaXMgd2lsbCBuZWVkIHRvIGJl
IHNtYXJ0ZXIgd2l0aCBXZWJLaXQyLgotfQotCi0KICNwcmFnbWEgbWFyayAtIFJlY2VpdmVkIFhQ
QyBNZXNzYWdlcwogCiB2b2lkIFJlbW90ZUluc3BlY3Rvcjo6cmVjZWl2ZWRTZXR1cE1lc3NhZ2Uo
TlNEaWN0aW9uYXJ5ICp1c2VySW5mbykKQEAgLTczMyw3ICs1NTksNyBAQCB2b2lkIFJlbW90ZUlu
c3BlY3Rvcjo6cmVjZWl2ZWRJbmRpY2F0ZU1lc3NhZ2UoTlNEaWN0aW9uYXJ5ICp1c2VySW5mbykK
IAogICAgIEJPT0wgaW5kaWNhdGVFbmFibGVkID0gW1t1c2VySW5mbyBvYmplY3RGb3JLZXk6V0lS
SW5kaWNhdGVFbmFibGVkS2V5XSBib29sVmFsdWVdOwogCi0gICAgY2FsbE9uV2ViVGhyZWFkT3JE
aXNwYXRjaEFzeW5jT25NYWluVGhyZWFkKF57CisgICAgY2FsbE9uV2ViVGhyZWFkT3JEaXNwYXRj
aEFzeW5jT25NYWluVGhyZWFkKF4gewogICAgICAgICBSZW1vdGVDb250cm9sbGFibGVUYXJnZXQq
IHRhcmdldCA9IG51bGxwdHI7CiAgICAgICAgIHsKICAgICAgICAgICAgIHN0ZDo6bG9ja19ndWFy
ZDxMb2NrPiBsb2NrKG1fbXV0ZXgpOwpAQCAtNzU5LDcgKzU4NSw3IEBAIHZvaWQgUmVtb3RlSW5z
cGVjdG9yOjpyZWNlaXZlZFByb3h5QXBwbGljYXRpb25TZXR1cE1lc3NhZ2UoTlNEaWN0aW9uYXJ5
ICopCiAgICAgICAgIC8vIFdlIGFyZSBhIHByb3h5IGFwcGxpY2F0aW9uIHdpdGhvdXQgcGFyZW50
IHByb2Nlc3MgaW5mb3JtYXRpb24uCiAgICAgICAgIC8vIFdhaXQgYSBiaXQgZm9yIHRoZSBpbmZv
cm1hdGlvbiwgYnV0IGdpdmUgdXAgYWZ0ZXIgYSBzZWNvbmQuCiAgICAgICAgIG1fc2hvdWxkU2Vu
ZFBhcmVudFByb2Nlc3NJbmZvcm1hdGlvbiA9IHRydWU7Ci0gICAgICAgIGRpc3BhdGNoX2FmdGVy
KGRpc3BhdGNoX3RpbWUoRElTUEFUQ0hfVElNRV9OT1csIDEgKiBOU0VDX1BFUl9TRUMpLCBkaXNw
YXRjaF9nZXRfZ2xvYmFsX3F1ZXVlKERJU1BBVENIX1FVRVVFX1BSSU9SSVRZX0RFRkFVTFQsIDAp
LCBeeworICAgICAgICBkaXNwYXRjaF9hZnRlcihkaXNwYXRjaF90aW1lKERJU1BBVENIX1RJTUVf
Tk9XLCAxICogTlNFQ19QRVJfU0VDKSwgZGlzcGF0Y2hfZ2V0X2dsb2JhbF9xdWV1ZShESVNQQVRD
SF9RVUVVRV9QUklPUklUWV9ERUZBVUxULCAwKSwgXiB7CiAgICAgICAgICAgICBzdGQ6OmxvY2tf
Z3VhcmQ8TG9jaz4gbG9jayhtX211dGV4KTsKICAgICAgICAgICAgIGlmIChtX3Nob3VsZFNlbmRQ
YXJlbnRQcm9jZXNzSW5mb3JtYXRpb24pCiAgICAgICAgICAgICAgICAgc3RvcEludGVybmFsKFN0
b3BTb3VyY2U6OlhQQ01lc3NhZ2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbi5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvY29jb2EvUmVtb3RlSW5zcGVjdG9yWFBD
Q29ubmVjdGlvbi5oCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9u
LmgKcmVuYW1lIHRvIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL2NvY29h
L1JlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24uaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbi5t
bSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL2NvY29hL1JlbW90ZUlu
c3BlY3RvclhQQ0Nvbm5lY3Rpb24ubW0Kc2ltaWxhcml0eSBpbmRleCA5OSUKcmVuYW1lIGZyb20g
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yWFBD
Q29ubmVjdGlvbi5tbQpyZW5hbWUgdG8gU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9y
ZW1vdGUvY29jb2EvUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbi5tbQppbmRleCA3NjYwOTk0
Y2MyOS4uYTkwMmQ2ZGZjNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24ubW0KKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvY29jb2EvUmVtb3RlSW5zcGVjdG9yWFBD
Q29ubmVjdGlvbi5tbQpAQCAtMTA4LDcgKzEwOCw3IEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9yWFBD
Q29ubmVjdGlvbjo6Y2xvc2VGcm9tTWVzc2FnZSgpCiAgICAgbV9jbG9zZWQgPSB0cnVlOwogICAg
IG1fY2xpZW50ID0gbnVsbHB0cjsKIAotICAgIGRpc3BhdGNoX2FzeW5jKG1fcXVldWUsIF57Cisg
ICAgZGlzcGF0Y2hfYXN5bmMobV9xdWV1ZSwgXiB7CiAgICAgICAgIHN0ZDo6bG9ja19ndWFyZDxM
b2NrPiBsb2NrKG1fbXV0ZXgpOwogICAgICAgICAvLyBUaGlzIHdpbGwgdHJpZ2dlciBvbmUgbGFz
dCBYUENfRVJST1JfQ09OTkVDVElPTl9JTlZBTElEIGV2ZW50IG9uIHRoZSBxdWV1ZSBhbmQgZGVy
ZWYgdXMuCiAgICAgICAgIGNsb3NlT25RdWV1ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUHJvY2Vzcy5jcHAKaW5kZXggYzEyODAxODMwMzUuLjRkYTM0NzUyYTIxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKQEAgLTM3Nyw3ICszNzcsNyBAQCB2b2lk
IFdlYlByb2Nlc3M6OmluaXRpYWxpemVXZWJQcm9jZXNzKFdlYlByb2Nlc3NDcmVhdGlvblBhcmFt
ZXRlcnMmJiBwYXJhbWV0ZXJzKQogICAgIHNldEVuYWJsZWRTZXJ2aWNlcyhwYXJhbWV0ZXJzLmhh
c0ltYWdlU2VydmljZXMsIHBhcmFtZXRlcnMuaGFzU2VsZWN0aW9uU2VydmljZXMsIHBhcmFtZXRl
cnMuaGFzUmljaENvbnRlbnRTZXJ2aWNlcyk7CiAjZW5kaWYKIAotI2lmIEVOQUJMRShSRU1PVEVf
SU5TUEVDVE9SKQorI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKSAmJiBQTEFURk9STShDT0NP
QSkKICAgICBhdWRpdF90b2tlbl90IGF1ZGl0VG9rZW47CiAgICAgaWYgKHBhcmVudFByb2Nlc3ND
b25uZWN0aW9uKCktPmdldEF1ZGl0VG9rZW4oYXVkaXRUb2tlbikpIHsKICAgICAgICAgUmV0YWlu
UHRyPENGRGF0YVJlZj4gYXVkaXREYXRhID0gYWRvcHRDRihDRkRhdGFDcmVhdGUobnVsbHB0ciwg
KGNvbnN0IFVJbnQ4KikmYXVkaXRUb2tlbiwgc2l6ZW9mKGF1ZGl0VG9rZW4pKSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>298470</attachid>
            <date>2017-01-10 08:58:54 -0800</date>
            <delta_ts>2017-01-10 09:27:39 -0800</delta_ts>
            <desc>WIP: Try to fix mac builds</desc>
            <filename>wk-inspector-patch.diff</filename>
            <type>text/plain</type>
            <size>50184</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNSZW1vdGVJbnNwZWN0b3Iu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1JlbW90ZUluc3BlY3Rvci5jcHAKaW5k
ZXggZmFlYmM1ZGUzZTEuLjNiZTYxZDA5MjcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL0pTUmVtb3RlSW5zcGVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL0pTUmVtb3RlSW5zcGVjdG9yLmNwcApAQCAtNTAsOSArNTAsOSBAQCB2b2lkIEpTUmVt
b3RlSW5zcGVjdG9yU3RhcnQodm9pZCkKICNlbmRpZgogfQogCi12b2lkIEpTUmVtb3RlSW5zcGVj
dG9yU2V0UGFyZW50UHJvY2Vzc0luZm9ybWF0aW9uKHBpZF90IHBpZCwgY29uc3QgVUludDgqIGF1
ZGl0RGF0YSwgc2l6ZV90IGF1ZGl0TGVuZ3RoKQordm9pZCBKU1JlbW90ZUluc3BlY3RvclNldFBh
cmVudFByb2Nlc3NJbmZvcm1hdGlvbihwaWRfdCBwaWQsIGNvbnN0IHVpbnQ4X3QqIGF1ZGl0RGF0
YSwgc2l6ZV90IGF1ZGl0TGVuZ3RoKQogewotI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQor
I2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKSAmJiBQTEFURk9STShDT0NPQSkKICAgICBSZXRh
aW5QdHI8Q0ZEYXRhUmVmPiBhdWRpdERhdGFSZWYgPSBhZG9wdENGKENGRGF0YUNyZWF0ZShrQ0ZB
bGxvY2F0b3JEZWZhdWx0LCBhdWRpdERhdGEsIGF1ZGl0TGVuZ3RoKSk7CiAgICAgUmVtb3RlSW5z
cGVjdG9yOjpzaW5nbGV0b24oKS5zZXRQYXJlbnRQcm9jZXNzSW5mb3JtYXRpb24ocGlkLCBhdWRp
dERhdGFSZWYpOwogI2Vsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMTdlY2Iz
MWU5ZmIuLmM2ZjM4NDYxM2ViIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTQ0
OCw2ICsxNDQ4LDExIEBACiAJCTc5RUUwQzAwMUI0QUZCODUwMDAzODVDOSAvKiBWYXJpYWJsZUVu
dmlyb25tZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA3OUVFMEJGRTFCNEFGQjg1MDAwMzg1QzkgLyogVmFyaWFibGVFbnZpcm9ubWVudC5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTc5RjhGQzFFMUI5
RkVEMEYwMENBNjZBQiAvKiBERkdNYXhpbWFsRmx1c2hJbnNlcnRpb25QaGFzZS5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3OUY4RkMxQzFCOUZFRDBG
MDBDQTY2QUIgLyogREZHTWF4aW1hbEZsdXNoSW5zZXJ0aW9uUGhhc2UuY3BwICovOyB9OwogCQk3
OUY4RkMxRjFCOUZFRDBGMDBDQTY2QUIgLyogREZHTWF4aW1hbEZsdXNoSW5zZXJ0aW9uUGhhc2Uu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc5RjhGQzFE
MUI5RkVEMEYwMENBNjZBQiAvKiBERkdNYXhpbWFsRmx1c2hJbnNlcnRpb25QaGFzZS5oICovOyB9
OworCQk3QUNEREVENDFFMjUyQjREMDA5N0FGRUIgLyogUmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0
Q29jb2EubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3
QUNEREVEMDFFMjUyQjJCMDA5N0FGRUIgLyogUmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0Q29jb2Eu
bW0gKi87IH07CisJCTdBQ0RERUQ1MUUyNTJCNUUwMDk3QUZFQiAvKiBSZW1vdGVJbnNwZWN0b3JD
b2NvYS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdB
Q0RERUQxMUUyNTJCMkIwMDk3QUZFQiAvKiBSZW1vdGVJbnNwZWN0b3JDb2NvYS5tbSAqLzsgfTsK
KwkJN0FDRERFRDcxRTI1MkI2ODAwOTdBRkVCIC8qIFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rp
b24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBQ0RE
RUQyMUUyNTJCMkIwMDk3QUZFQiAvKiBSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uLmggKi87
IH07CisJCTdBQ0RERUQ4MUUyNTJCNkUwMDk3QUZFQiAvKiBSZW1vdGVJbnNwZWN0b3JYUENDb25u
ZWN0aW9uLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
N0FDRERFRDMxRTI1MkIyQjAwOTdBRkVCIC8qIFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24u
bW0gKi87IH07CisJCTdBQ0RERUQ5MUUyNTJCODMwMDk3QUZFQiAvKiBSZW1vdGVJbnNwZWN0b3Iu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0FDRERF
RDYxRTI1MkI1RjAwOTdBRkVCIC8qIFJlbW90ZUluc3BlY3Rvci5jcHAgKi87IH07CiAJCTdCQzU0
N0QzMUI2OTU5QTEwMDk1OUI1OCAvKiBXYXNtRm9ybWF0LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QkM1NDdEMjFCNjk1OTlCMDA5NTlCNTggLyogV2Fz
bUZvcm1hdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTdDMDA4Q0RBMTg3MTI0QkIwMDk1NUMyNCAvKiBKU1Byb21pc2VEZWZlcnJlZC5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzAwOENEODE4NzEy
NEJCMDA5NTVDMjQgLyogSlNQcm9taXNlRGVmZXJyZWQuY3BwICovOyB9OwogCQk3QzAwOENEQjE4
NzEyNEJCMDA5NTVDMjQgLyogSlNQcm9taXNlRGVmZXJyZWQuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDMDA4Q0Q5MTg3MTI0QkIwMDk1NUMyNCAvKiBK
U1Byb21pc2VEZWZlcnJlZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CkBAIC0xNzUyLDEyICsxNzU3LDggQEAKIAkJQTVBQjQ5REQxQkVDODA4NjAwNzAy
MEZCIC8qIFBlckdsb2JhbE9iamVjdFdyYXBwZXJXb3JsZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTVBQjQ5REIxQkVDODA3OTAwNzAyMEZCIC8qIFBl
ckdsb2JhbE9iamVjdFdyYXBwZXJXb3JsZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCUE1QjZBNzREMThDNkRCQTYwMEYxMUU5MSAvKiBDb25zb2xl
Q2xpZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEE1QjZBNzRDMThDNkRCQTYwMEYxMUU5MSAvKiBDb25zb2xlQ2xpZW50LmNwcCAqLzsgfTsKIAkJ
QTVCQTE1RTgxODIzNDBCMzAwQTgyRTY5IC8qIFJlbW90ZUluc3BlY3Rvci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTVCQTE1RTExODIzNDBCMzAwQTgy
RTY5IC8qIFJlbW90ZUluc3BlY3Rvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07Ci0JCUE1QkExNUU5MTgyMzQwQjMwMEE4MkU2OSAvKiBSZW1vdGVJbnNw
ZWN0b3IubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBB
NUJBMTVFMjE4MjM0MEIzMDBBODJFNjkgLyogUmVtb3RlSW5zcGVjdG9yLm1tICovOyB9OwogCQlB
NUJBMTVFQTE4MjM0MEI0MDBBODJFNjkgLyogUmVtb3RlSW5zcGVjdG9yQ29uc3RhbnRzLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNUJBMTVFMzE4MjM0
MEIzMDBBODJFNjkgLyogUmVtb3RlSW5zcGVjdG9yQ29uc3RhbnRzLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTVCQTE1RUIxODIzNDBCNDAwQTgy
RTY5IC8qIFJlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTVCQTE1RTQxODIzNDBCMzAwQTgyRTY5IC8qIFJlbW90
ZUNvbm5lY3Rpb25Ub1RhcmdldC5oICovOyB9OwotCQlBNUJBMTVFQzE4MjM0MEI0MDBBODJFNjkg
LyogUmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQTVCQTE1RTUxODIzNDBCMzAwQTgyRTY5IC8qIFJlbW90ZUNv
bm5lY3Rpb25Ub1RhcmdldC5tbSAqLzsgfTsKLQkJQTVCQTE1RUQxODIzNDBCNDAwQTgyRTY5IC8q
IFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1QkExNUU2MTgyMzQwQjMwMEE4MkU2OSAvKiBSZW1vdGVJ
bnNwZWN0b3JYUENDb25uZWN0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKLQkJQTVCQTE1RUUxODIzNDBCNDAwQTgyRTY5IC8qIFJlbW90ZUluc3Bl
Y3RvclhQQ0Nvbm5lY3Rpb24ubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBNUJBMTVFNzE4MjM0MEIzMDBBODJFNjkgLyogUmVtb3RlSW5zcGVjdG9yWFBD
Q29ubmVjdGlvbi5tbSAqLzsgfTsKIAkJQTVCQTE1RjAxODIzNDVBRjAwQTgyRTY5IC8qIFJlbW90
ZUluc3BlY3Rpb25UYXJnZXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEE1QkExNUVGMTgyMzQ1QUYwMEE4MkU2OSAvKiBSZW1vdGVJbnNwZWN0aW9uVGFy
Z2V0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
QTVDM0ExQTUxOEMwNDkwMjAwQzk1OTNBIC8qIEpTR2xvYmFsT2JqZWN0Q29uc29sZUNsaWVudC5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNUMzQTFB
MzE4QzA0OTAyMDBDOTU5M0EgLyogSlNHbG9iYWxPYmplY3RDb25zb2xlQ2xpZW50LmNwcCAqLzsg
fTsKIAkJQTVDM0ExQTYxOEMwNDkwMjAwQzk1OTNBIC8qIEpTR2xvYmFsT2JqZWN0Q29uc29sZUNs
aWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTVD
M0ExQTQxOEMwNDkwMjAwQzk1OTNBIC8qIEpTR2xvYmFsT2JqZWN0Q29uc29sZUNsaWVudC5oICov
OyB9OwpAQCAtMzg4OCw2ICszODg5LDExIEBACiAJCTc5RUUwQkZFMUI0QUZCODUwMDAzODVDOSAv
KiBWYXJpYWJsZUVudmlyb25tZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFZhcmlhYmxlRW52aXJvbm1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzlG
OEZDMUMxQjlGRUQwRjAwQ0E2NkFCIC8qIERGR01heGltYWxGbHVzaEluc2VydGlvblBoYXNlLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR01heGltYWxGbHVzaElu
c2VydGlvblBoYXNlLmNwcDsgcGF0aCA9IGRmZy9ERkdNYXhpbWFsRmx1c2hJbnNlcnRpb25QaGFz
ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTc5RjhGQzFEMUI5RkVEMEYwMENB
NjZBQiAvKiBERkdNYXhpbWFsRmx1c2hJbnNlcnRpb25QaGFzZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBERkdNYXhpbWFsRmx1c2hJbnNlcnRpb25QaGFzZS5oOyBwYXRoID0g
ZGZnL0RGR01heGltYWxGbHVzaEluc2VydGlvblBoYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTdBQ0RERUQwMUUyNTJCMkIwMDk3QUZFQiAvKiBSZW1vdGVDb25uZWN0aW9uVG9U
YXJnZXRDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFJl
bW90ZUNvbm5lY3Rpb25Ub1RhcmdldENvY29hLm1tOyBwYXRoID0gY29jb2EvUmVtb3RlQ29ubmVj
dGlvblRvVGFyZ2V0Q29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdBQ0RE
RUQxMUUyNTJCMkIwMDk3QUZFQiAvKiBSZW1vdGVJbnNwZWN0b3JDb2NvYS5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFJlbW90ZUluc3BlY3RvckNvY29hLm1tOyBw
YXRoID0gY29jb2EvUmVtb3RlSW5zcGVjdG9yQ29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTdBQ0RERUQyMUUyNTJCMkIwMDk3QUZFQiAvKiBSZW1vdGVJbnNwZWN0b3JYUEND
b25uZWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFJlbW90ZUluc3Bl
Y3RvclhQQ0Nvbm5lY3Rpb24uaDsgcGF0aCA9IGNvY29hL1JlbW90ZUluc3BlY3RvclhQQ0Nvbm5l
Y3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0FDRERFRDMxRTI1MkIyQjAw
OTdBRkVCIC8qIFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24ubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uLm1t
OyBwYXRoID0gY29jb2EvUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbi5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0FDRERFRDYxRTI1MkI1RjAwOTdBRkVCIC8qIFJlbW90ZUlu
c3BlY3Rvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVJ
bnNwZWN0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QkM1NDdEMjFCNjk1
OTlCMDA5NTlCNTggLyogV2FzbUZvcm1hdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXYXNtRm9ybWF0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDMDA4Q0Q4
MTg3MTI0QkIwMDk1NUMyNCAvKiBKU1Byb21pc2VEZWZlcnJlZC5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1Byb21pc2VEZWZlcnJlZC5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTdDMDA4Q0Q5MTg3MTI0QkIwMDk1NUMyNCAvKiBKU1Byb21pc2VE
ZWZlcnJlZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1Byb21pc2VEZWZl
cnJlZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDIzMywxMiArNDIzOSw4IEBA
CiAJCUE1QUI0OURCMUJFQzgwNzkwMDcwMjBGQiAvKiBQZXJHbG9iYWxPYmplY3RXcmFwcGVyV29y
bGQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGVyR2xvYmFsT2JqZWN0V3Jh
cHBlcldvcmxkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1QjZBNzRDMThDNkRC
QTYwMEYxMUU5MSAvKiBDb25zb2xlQ2xpZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IENvbnNvbGVDbGllbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlBNUJBMTVFMTE4MjM0MEIzMDBBODJFNjkgLyogUmVtb3RlSW5zcGVjdG9yLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUluc3BlY3Rvci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQlBNUJBMTVFMjE4MjM0MEIzMDBBODJFNjkgLyogUmVtb3RlSW5z
cGVjdG9yLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUmVtb3Rl
SW5zcGVjdG9yLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNUJBMTVFMzE4MjM0
MEIzMDBBODJFNjkgLyogUmVtb3RlSW5zcGVjdG9yQ29uc3RhbnRzLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUluc3BlY3RvckNvbnN0YW50cy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlBNUJBMTVFNDE4MjM0MEIzMDBBODJFNjkgLyogUmVtb3RlQ29u
bmVjdGlvblRvVGFyZ2V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90
ZUNvbm5lY3Rpb25Ub1RhcmdldC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlBNUJB
MTVFNTE4MjM0MEIzMDBBODJFNjkgLyogUmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0Lm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUmVtb3RlQ29ubmVjdGlvblRvVGFy
Z2V0Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlBNUJBMTVFNjE4MjM0MEIzMDBB
ODJFNjkgLyogUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbi5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUE1QkExNUU3MTgyMzQwQjMwMEE4MkU2OSAvKiBSZW1vdGVJ
bnNwZWN0b3JYUENDb25uZWN0aW9uLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbi5tbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQTVCQTE1RUYxODIzNDVBRjAwQTgyRTY5IC8qIFJlbW90ZUluc3BlY3Rp
b25UYXJnZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlSW5zcGVj
dGlvblRhcmdldC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNUMzQTFBMzE4QzA0
OTAyMDBDOTU5M0EgLyogSlNHbG9iYWxPYmplY3RDb25zb2xlQ2xpZW50LmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTR2xvYmFsT2JqZWN0Q29uc29sZUNsaWVudC5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1QzNBMUE0MThDMDQ5MDIwMEM5NTkz
QSAvKiBKU0dsb2JhbE9iamVjdENvbnNvbGVDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSlNHbG9iYWxPYmplY3RDb25zb2xlQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC02MDIzLDYgKzYwMjUsMTcgQEAKIAkJCXBhdGggPSBkaXNhc3NlbWJs
ZXIvQVJNdjc7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9OworCQk3QUNEREVDRjFF
MjUyQUNBMDA5N0FGRUIgLyogY29jb2EgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNo
aWxkcmVuID0gKAorCQkJCTdBQ0RERUQwMUUyNTJCMkIwMDk3QUZFQiAvKiBSZW1vdGVDb25uZWN0
aW9uVG9UYXJnZXRDb2NvYS5tbSAqLywKKwkJCQk3QUNEREVEMTFFMjUyQjJCMDA5N0FGRUIgLyog
UmVtb3RlSW5zcGVjdG9yQ29jb2EubW0gKi8sCisJCQkJN0FDRERFRDIxRTI1MkIyQjAwOTdBRkVC
IC8qIFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24uaCAqLywKKwkJCQk3QUNEREVEMzFFMjUy
QjJCMDA5N0FGRUIgLyogUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbi5tbSAqLywKKwkJCSk7
CisJCQluYW1lID0gY29jb2E7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OwogCQk3
Qjk4RDEzMzFCNjBDRDFFMDAyM0IxQTQgLyogd2FzbSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3Vw
OwogCQkJY2hpbGRyZW4gPSAoCkBAIC03NTM3LDE5ICs3NTUwLDE3IEBACiAJCUE1QkExNUUwMTgy
MzQwOUQwMEE4MkU2OSAvKiByZW1vdGUgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNo
aWxkcmVuID0gKAorCQkJCTdBQ0RERUQ2MUUyNTJCNUYwMDk3QUZFQiAvKiBSZW1vdGVJbnNwZWN0
b3IuY3BwICovLAorCQkJCTdBQ0RERUNGMUUyNTJBQ0EwMDk3QUZFQiAvKiBjb2NvYSAqLywKIAkJ
CQk5OTJBQkNGNTFCRUE5NENBMDA2NDAzQTAgLyogUmVtb3RlQXV0b21hdGlvblRhcmdldC5jcHAg
Ki8sCiAJCQkJOTkyQUJDRjYxQkVBOTRDQTAwNjQwM0EwIC8qIFJlbW90ZUF1dG9tYXRpb25UYXJn
ZXQuaCAqLywKIAkJCQlBNUJBMTVFNDE4MjM0MEIzMDBBODJFNjkgLyogUmVtb3RlQ29ubmVjdGlv
blRvVGFyZ2V0LmggKi8sCi0JCQkJQTVCQTE1RTUxODIzNDBCMzAwQTgyRTY5IC8qIFJlbW90ZUNv
bm5lY3Rpb25Ub1RhcmdldC5tbSAqLywKIAkJCQk5OThFRDY3MjFCRUQ2NTlBMDBERDgwMTcgLyog
UmVtb3RlQ29udHJvbGxhYmxlVGFyZ2V0LmNwcCAqLywKIAkJCQk5OThFRDY3MzFCRUQ2NTlBMDBE
RDgwMTcgLyogUmVtb3RlQ29udHJvbGxhYmxlVGFyZ2V0LmggKi8sCiAJCQkJQTU5NDU1OEUxODI0
NUVERTAwQ0MzODQzIC8qIFJlbW90ZUluc3BlY3Rpb25UYXJnZXQuY3BwICovLAogCQkJCUE1QkEx
NUVGMTgyMzQ1QUYwMEE4MkU2OSAvKiBSZW1vdGVJbnNwZWN0aW9uVGFyZ2V0LmggKi8sCiAJCQkJ
QTVCQTE1RTExODIzNDBCMzAwQTgyRTY5IC8qIFJlbW90ZUluc3BlY3Rvci5oICovLAotCQkJCUE1
QkExNUUyMTgyMzQwQjMwMEE4MkU2OSAvKiBSZW1vdGVJbnNwZWN0b3IubW0gKi8sCiAJCQkJQTVC
QTE1RTMxODIzNDBCMzAwQTgyRTY5IC8qIFJlbW90ZUluc3BlY3RvckNvbnN0YW50cy5oICovLAot
CQkJCUE1QkExNUU2MTgyMzQwQjMwMEE4MkU2OSAvKiBSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0
aW9uLmggKi8sCi0JCQkJQTVCQTE1RTcxODIzNDBCMzAwQTgyRTY5IC8qIFJlbW90ZUluc3BlY3Rv
clhQQ0Nvbm5lY3Rpb24ubW0gKi8sCiAJCQkpOwogCQkJcGF0aCA9IHJlbW90ZTsKIAkJCXNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC04ODYwLDcgKzg4NzEsNiBAQAogCQkJCUE1QkExNUYwMTgy
MzQ1QUYwMEE4MkU2OSAvKiBSZW1vdGVJbnNwZWN0aW9uVGFyZ2V0LmggaW4gSGVhZGVycyAqLywK
IAkJCQlBNUJBMTVFODE4MjM0MEIzMDBBODJFNjkgLyogUmVtb3RlSW5zcGVjdG9yLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlBNUJBMTVFQTE4MjM0MEI0MDBBODJFNjkgLyogUmVtb3RlSW5zcGVjdG9y
Q29uc3RhbnRzLmggaW4gSGVhZGVycyAqLywKLQkJCQlBNUJBMTVFRDE4MjM0MEI0MDBBODJFNjkg
LyogUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYy
NEU1NTExN0VFMjc0OTAwQUJCMjE3IC8qIFJlcGF0Y2guaCBpbiBIZWFkZXJzICovLAogCQkJCTg2
OUVCQ0I3MEU4QzZENEEwMDg3MjJDQyAvKiBSZXN1bHRUeXBlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk3MEIwQTlEMTFBOUI2NjQ2MDAwMTMwNkEgLyogUnVudGltZUZsYWdzLmggaW4gSGVhZGVycyAq
LywKQEAgLTg5NzQsNiArODk4NCw3IEBACiAJCQkJMEZGNDI3NDkxNThFQkU5MTAwNENCOUZGIC8q
IHVkaXM4Nl90eXBlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdFNUFCMzkxNzk5RTRCMjAwRDI4
MzNEIC8qIFVEaXM4NkRpc2Fzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdBOEFGNDEx
N0FEQjVGMzAwNUFCMTc0IC8qIFVpbnQxNkFycmF5LmggaW4gSGVhZGVycyAqLywKKwkJCQk3QUNE
REVENzFFMjUyQjY4MDA5N0FGRUIgLyogUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbi5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJODY2NzM5RDMxM0JGREU3MTAwMjNEODdDIC8qIFVpbnQxNldpdGhG
cmFjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdBOEFGNDIxN0FEQjVGMzAwNUFCMTc0IC8q
IFVpbnQzMkFycmF5LmggaW4gSGVhZGVycyAqLywKIAkJCQlBN0E4QUYzRjE3QURCNUYzMDA1QUIx
NzQgLyogVWludDhBcnJheS5oIGluIEhlYWRlcnMgKi8sCkBAIC05ODY1LDYgKzk4NzYsNyBAQAog
CQkJCTBGQzA5NzcyMTQ2OTNBRjkwMENGMjQ0MiAvKiBERkdPU1JFeGl0Q29tcGlsZXI2NC5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkwRjcwMjVBOTE3MTRCMEZBMDAzODJDMEUgLyogREZHT1NSRXhp
dENvbXBpbGVyQ29tbW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMzkyQzg5MUI0NjE4ODQw
MDg0NDcyOCAvKiBERkdPU1JFeGl0RnV6ei5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk3QUNEREVE
ODFFMjUyQjZFMDA5N0FGRUIgLyogUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbi5tbSBpbiBT
b3VyY2VzICovLAogCQkJCTBGRUZDOUFBMTY4MUEzQjMwMDU2N0Y1MyAvKiBERkdPU1JFeGl0SnVt
cFBsYWNlaG9sZGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMjM1QkVEMTcxNzhFNzMwMDY5
MEM3RiAvKiBERkdPU1JFeGl0UHJlcGFyYXRpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY2
MjM3OTcxQUU0NUNBNzAwRDQwMkVBIC8qIERGR1BoYW50b21JbnNlcnRpb25QaGFzZS5jcHAgaW4g
U291cmNlcyAqLywKQEAgLTk4ODIsNiArOTg5NCw3IEBACiAJCQkJODZFQzlERDIxMzI4REY4MjAw
MkIyQUQ3IC8qIERGR1NwZWN1bGF0aXZlSklULmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg2ODgw
RjFGMTQzMjhCQjkwMEIwOEQ0MiAvKiBERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTg2ODgwRjREMTQzNTNCMjEwMEIwOEQ0MiAvKiBERkdTcGVjdWxhdGl2ZUpJ
VDY0LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTdBQ0RERUQ1MUUyNTJCNUUwMDk3QUZFQiAvKiBS
ZW1vdGVJbnNwZWN0b3JDb2NvYS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTBGNjgyRkIyMTlCQ0Iz
NjQwMEZBM0JBRCAvKiBERkdTU0FDYWxjdWxhdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3
RDg5Q0ZGMTdBMEI4Q0MwMDc3M0FEOCAvKiBERkdTU0FDb252ZXJzaW9uUGhhc2UuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMEZDMjBDQjkxODU1NkEzNTAwQzlFOTU0IC8qIERGR1NTQUxvd2VyaW5n
UGhhc2UuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0xMDIwMiw2ICsxMDIxNSw3IEBACiAJCQkJQkNG
RDhDOTIwRUVCMkVFNzAwMjgzODQ4IC8qIEp1bXBUYWJsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkwRjA3MEE0QTFENTQzQTk1MDA2RTcyMzIgLyogTGFyZ2VBbGxvY2F0aW9uLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCURDRjNENTY5MUNEMjk0NkQwMDNENUM2NSAvKiBMYXp5Q2xhc3NTdHJ1Y3R1
cmUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJN0FDRERFRDQxRTI1MkI0RDAwOTdBRkVCIC8qIFJl
bW90ZUNvbm5lY3Rpb25Ub1RhcmdldENvY29hLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZCNTQ2
NzkxNEY1QzQ2QjAwMkMyOTg5IC8qIExhenlPcGVyYW5kVmFsdWVQcm9maWxlLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTE0OEYyMUIwMTA3RUM1NDEwMDQyRUMyQyAvKiBMZXhlci5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkwRkY0Mjc1NzE1OTE0QTIwMDA0Q0I5RkYgLyogTGlua0J1ZmZlci5jcHAg
aW4gU291cmNlcyAqLywKQEAgLTEwMjI3LDYgKzEwMjQxLDcgQEAKIAkJCQk3OTVCMTk5NzFENzhC
RTM1MDAyNjJGQTAgLyogTWFwQmFzZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNzAwODczOTE3
Q0JFODUzMDBDM0U2NDMgLyogTWFwQ29uc3RydWN0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QTc0REVGOTMxODJEOTkxNDAwNTIyQzIyIC8qIE1hcEl0ZXJhdG9yUHJvdG90eXBlLmNwcCBpbiBT
b3VyY2VzICovLAorCQkJCTdBQ0RERUQ5MUUyNTJCODMwMDk3QUZFQiAvKiBSZW1vdGVJbnNwZWN0
b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTcwMDg3M0QxN0NCRThEMzAwQzNFNjQzIC8qIE1h
cFByb3RvdHlwZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDMkI5MTZDNTE0REEwNDBDMDBDQkFD
ODYgLyogTWFya2VkQWxsb2NhdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0MkQ2RjA4MTM1
MzlBMjgwMEIwMkU4NiAvKiBNYXJrZWRCbG9jay5jcHAgaW4gU291cmNlcyAqLywKQEAgLTEwMzE0
LDExICsxMDMyOSw4IEBACiAJCQkJMEZDMzE0MTUxODE0NkQ3MDAwMDMzMjMyIC8qIFJlZ2lzdGVy
U2V0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE1N0QyM0VEMTg5MUI1NTQwMDMxQzdGQSAvKiBS
ZWd1bGFyRXhwcmVzc2lvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5OTJBQkNGOTFCRUE5QkQy
MDA2NDAzQTAgLyogUmVtb3RlQXV0b21hdGlvblRhcmdldC5jcHAgaW4gU291cmNlcyAqLywKLQkJ
CQlBNUJBMTVFQzE4MjM0MEI0MDBBODJFNjkgLyogUmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0Lm1t
IGluIFNvdXJjZXMgKi8sCiAJCQkJOTk4RUQ2NzQxQkVENzBBQzAwREQ4MDE3IC8qIFJlbW90ZUNv
bnRyb2xsYWJsZVRhcmdldC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNTk0NTU4RjE4MjQ1RUZE
MDBDQzM4NDMgLyogUmVtb3RlSW5zcGVjdGlvblRhcmdldC5jcHAgaW4gU291cmNlcyAqLywKLQkJ
CQlBNUJBMTVFOTE4MjM0MEIzMDBBODJFNjkgLyogUmVtb3RlSW5zcGVjdG9yLm1tIGluIFNvdXJj
ZXMgKi8sCi0JCQkJQTVCQTE1RUUxODIzNDBCNDAwQTgyRTY5IC8qIFJlbW90ZUluc3BlY3RvclhQ
Q0Nvbm5lY3Rpb24ubW0gaW4gU291cmNlcyAqLywKIAkJCQkwRjI0RTU1MDE3RUUyNzQ5MDBBQkIy
MTcgLyogUmVwYXRjaC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1Mjc3NzNERTFBQUY4M0FDMDBC
REU3RTggLyogUnVudGltZVR5cGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY3NzAwOTIxNDAy
RkYzQzAwNzhFQjM5IC8qIFNhbXBsaW5nQ291bnRlci5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9QbGF0Zm9ybU1hYy5jbWFrZSBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9QbGF0Zm9ybU1hYy5jbWFrZQppbmRleCAyZTZiMTViOWM2ZS4uZDc0MDVh
ODZkMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9QbGF0Zm9ybU1hYy5jbWFr
ZQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvUGxhdGZvcm1NYWMuY21ha2UKQEAgLTEwLDEx
ICsxMCwxNCBAQCBsaXN0KEFQUEVORCBKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTCiAgICAgQVBJL09i
akNDYWxsYmFja0Z1bmN0aW9uLm1tCiAKICAgICBpbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUF1dG9t
YXRpb25UYXJnZXQuY3BwCi0gICAgaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVDb25uZWN0aW9uVG9U
YXJnZXQubW0KICAgICBpbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUNvbnRyb2xsYWJsZVRhcmdldC5j
cHAKICAgICBpbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3Rpb25UYXJnZXQuY3BwCi0gICAg
aW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3IubW0KKyAgICBpbnNwZWN0b3IvcmVtb3Rl
L1JlbW90ZUluc3BlY3Rvci5jcHAKICAgICBpbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3Rv
clhQQ0Nvbm5lY3Rpb24ubW0KKworICAgIGluc3BlY3Rvci9yZW1vdGUvY29jb2EvUmVtb3RlQ29u
bmVjdGlvblRvVGFyZ2V0Q29jb2EubW0KKyAgICBpbnNwZWN0b3IvcmVtb3RlL2NvY29hL1JlbW90
ZUluc3BlY3RvckNvY29hLm1tCisgICAgaW5zcGVjdG9yL3JlbW90ZS9jb2NvYS9SZW1vdGVJbnNw
ZWN0b3JYUENDb25uZWN0aW9uLm1tCiApCiBhZGRfZGVmaW5pdGlvbnMoLURTVEFUSUNBTExZX0xJ
TktFRF9XSVRIX1dURiAtRF9fU1REQ19XQU5UX0xJQl9FWFQxX18pCiAKQEAgLTI2LDYgKzI5LDcg
QEAgbGlzdChBUFBFTkQgSmF2YVNjcmlwdENvcmVfTElCUkFSSUVTCiBsaXN0KEFQUEVORCBKYXZh
U2NyaXB0Q29yZV9JTkNMVURFX0RJUkVDVE9SSUVTCiAgICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9
L2Rpc2Fzc2VtYmxlci91ZGlzODYKICAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vaWN1CisgICAg
JHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2luc3BlY3Rvci9yZW1vdGUvY29jb2EKICkKIAogc2V0KENN
QUtFX1NIQVJFRF9MSU5LRVJfRkxBR1MgJHtDTUFLRV9TSEFSRURfTElOS0VSX0ZMQUdTfSAiLWNv
bXBhdGliaWxpdHlfdmVyc2lvbiAxIC1jdXJyZW50X3ZlcnNpb24gJHtXRUJLSVRfTUFDX1ZFUlNJ
T059IikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3Rl
L1JlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9yZW1vdGUvUmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0LmgKaW5kZXggZGJhMDYwMTc5OWEu
Ljg5YWE3YmM1ZTc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L3JlbW90ZS9SZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQuaApAQCAtMjcs
NjcgKzI3LDgyIEBACiAKICNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKIAotI2ltcG9ydCAi
SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsLmgiCi0jaW1wb3J0ICJSZW1vdGVDb25uZWN0aW9uVG9U
YXJnZXQuaCIKLSNpbXBvcnQgIlJlbW90ZUluc3BlY3Rvci5oIgotI2ltcG9ydCA8bXV0ZXg+Ci0j
aW1wb3J0IDx3dGYvQmxvY2tQdHIuaD4KLSNpbXBvcnQgPHd0Zi9Mb2NrLmg+Ci0jaW1wb3J0IDx3
dGYvUmV0YWluUHRyLmg+Ci0jaW1wb3J0IDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KKyNp
bmNsdWRlICJJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwuaCIKKyNpbmNsdWRlIDx3dGYvTG9jay5o
PgorI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgorCisjaWYgUExBVEZPUk0o
Q09DT0EpCisjaW5jbHVkZSA8d3RmL0Jsb2NrUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JldGFpblB0
ci5oPgogCiBPQkpDX0NMQVNTIE5TU3RyaW5nOworI2VuZGlmCiAKIG5hbWVzcGFjZSBJbnNwZWN0
b3IgewogCitjbGFzcyBSZW1vdGVDb250cm9sbGFibGVUYXJnZXQ7CisKKyNpZiBQTEFURk9STShD
T0NPQSkKIHR5cGVkZWYgVmVjdG9yPEJsb2NrUHRyPHZvaWQgKCk+PiBSZW1vdGVUYXJnZXRRdWV1
ZTsKKyNlbmRpZgogCiBjbGFzcyBSZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQgZmluYWwgOiBwdWJs
aWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8UmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0PiwgcHVibGlj
IEZyb250ZW5kQ2hhbm5lbCB7CiBwdWJsaWM6Ci0gICAgUmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0
KFJlbW90ZUNvbnRyb2xsYWJsZVRhcmdldCosIE5TU3RyaW5nICpjb25uZWN0aW9uSWRlbnRpZmll
ciwgTlNTdHJpbmcgKmRlc3RpbmF0aW9uKTsKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBSZW1v
dGVDb25uZWN0aW9uVG9UYXJnZXQoUmVtb3RlQ29udHJvbGxhYmxlVGFyZ2V0KiwgTlNTdHJpbmcq
IGNvbm5lY3Rpb25JZGVudGlmaWVyLCBOU1N0cmluZyogZGVzdGluYXRpb24pOworI2VuZGlmCiAg
ICAgdmlydHVhbCB+UmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0KCk7CiAKICAgICAvLyBNYWluIEFQ
SS4KICAgICBib29sIHNldHVwKGJvb2wgaXNBdXRvbWF0aWNJbnNwZWN0aW9uID0gZmFsc2UsIGJv
b2wgYXV0b21hdGljYWxseVBhdXNlID0gZmFsc2UpOwotICAgIHZvaWQgc2VuZE1lc3NhZ2VUb1Rh
cmdldChOU1N0cmluZyAqKTsKKyAgICB2b2lkIHNlbmRNZXNzYWdlVG9UYXJnZXQoY29uc3QgU3Ry
aW5nJik7CiAgICAgdm9pZCBjbG9zZSgpOwogICAgIHZvaWQgdGFyZ2V0Q2xvc2VkKCk7CiAKICAg
ICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiB0YXJnZXRJZGVudGlmaWVyKCkgY29uc3Q7CisjaWYg
UExBVEZPUk0oQ09DT0EpCiAgICAgTlNTdHJpbmcgKmNvbm5lY3Rpb25JZGVudGlmaWVyKCkgY29u
c3Q7CiAgICAgTlNTdHJpbmcgKmRlc3RpbmF0aW9uKCkgY29uc3Q7CiAKICAgICBMb2NrJiBxdWV1
ZU11dGV4KCkgeyByZXR1cm4gbV9xdWV1ZU11dGV4OyB9CiAgICAgY29uc3QgUmVtb3RlVGFyZ2V0
UXVldWUmIHF1ZXVlKCkgY29uc3QgeyByZXR1cm4gbV9xdWV1ZTsgfQogICAgIHZvaWQgY2xlYXJR
dWV1ZSgpIHsgbV9xdWV1ZS5jbGVhcigpOyB9CisjZW5kaWYKIAogICAgIC8vIEZyb250ZW5kQ2hh
bm5lbCBvdmVycmlkZXMuCiAgICAgQ29ubmVjdGlvblR5cGUgY29ubmVjdGlvblR5cGUoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBDb25uZWN0aW9uVHlwZTo6UmVtb3RlOyB9CiAgICAgdm9pZCBz
ZW5kTWVzc2FnZVRvRnJvbnRlbmQoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CiAKIHByaXZhdGU6
CisjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgdm9pZCBkaXNwYXRjaEFzeW5jT25UYXJnZXQodm9p
ZCAoXmJsb2NrKSgpKTsKIAogICAgIHZvaWQgc2V0dXBSdW5Mb29wKCk7CiAgICAgdm9pZCB0ZWFy
ZG93blJ1bkxvb3AoKTsKICAgICB2b2lkIHF1ZXVlVGFza09uUHJpdmF0ZVJ1bkxvb3Aodm9pZCAo
XmJsb2NrKSgpKTsKKyNlbmRpZgogCiAgICAgLy8gVGhpcyBjb25uZWN0aW9uIGZyb20gdGhlIFJl
bW90ZUluc3BlY3RvciBzaW5nbGV0b24gdG8gdGhlIEluc3BlY3Rpb25UYXJnZXQKICAgICAvLyBj
YW4gYmUgdXNlZCBvbiBtdWx0aXBsZSB0aHJlYWRzLiBTbyBhbnkgYWNjZXNzIHRvIHRoZSB0YXJn
ZXQKICAgICAvLyBpdHNlbGYgbXVzdCB0YWtlIHRoaXMgbXV0ZXggdG8gZW5zdXJlIG1fdGFyZ2V0
IGlzIHZhbGlkLgogICAgIExvY2sgbV90YXJnZXRNdXRleDsKIAorI2lmIFBMQVRGT1JNKENPQ09B
KQogICAgIC8vIElmIGEgdGFyZ2V0IGhhcyBhIHNwZWNpZmljIHJ1biBsb29wIGl0IHdhbnRzIHRv
IGV2YWx1YXRlIG9uCiAgICAgLy8gd2Ugc2V0dXAgb3VyIHJ1biBsb29wIHNvdXJjZXMgb24gdGhh
dCBzcGVjaWZpYyBydW4gbG9vcC4KICAgICBSZXRhaW5QdHI8Q0ZSdW5Mb29wUmVmPiBtX3J1bkxv
b3A7CiAgICAgUmV0YWluUHRyPENGUnVuTG9vcFNvdXJjZVJlZj4gbV9ydW5Mb29wU291cmNlOwog
ICAgIFJlbW90ZVRhcmdldFF1ZXVlIG1fcXVldWU7CiAgICAgTG9jayBtX3F1ZXVlTXV0ZXg7Cisj
ZW5kaWYKIAogICAgIFJlbW90ZUNvbnRyb2xsYWJsZVRhcmdldCogbV90YXJnZXQgeyBudWxscHRy
IH07CisgICAgYm9vbCBtX2Nvbm5lY3RlZCB7IGZhbHNlIH07CisKKyNpZiBQTEFURk9STShDT0NP
QSkKICAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IG1fY29ubmVjdGlvbklkZW50aWZpZXI7CiAgICAg
UmV0YWluUHRyPE5TU3RyaW5nPiBtX2Rlc3RpbmF0aW9uOwotICAgIGJvb2wgbV9jb25uZWN0ZWQg
eyBmYWxzZSB9OworI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUNvbnRy
b2xsYWJsZVRhcmdldC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUv
UmVtb3RlQ29udHJvbGxhYmxlVGFyZ2V0LmgKaW5kZXggZDY1ZmFlYWQ5NWQuLmFmYWUzNjlhZTFm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1v
dGVDb250cm9sbGFibGVUYXJnZXQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL3JlbW90ZS9SZW1vdGVDb250cm9sbGFibGVUYXJnZXQuaApAQCAtMjcsMTAgKzI3LDEzIEBA
CiAKICNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKIAotI2luY2x1ZGUgPENvcmVGb3VuZGF0
aW9uL0NGUnVuTG9vcC5oPgogI2luY2x1ZGUgPHd0Zi9UeXBlQ2FzdHMuaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAorI2lmIFVTRShDRikKKyNpbmNsdWRlIDxDb3JlRm91bmRh
dGlvbi9DRlJ1bkxvb3AuaD4KKyNlbmRpZgorCiBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAogY2xh
c3MgRnJvbnRlbmRDaGFubmVsOwpAQCAtNTMsOCArNTYsMTAgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgYm9vbCByZW1vdGVDb250cm9sQWxsb3dlZCgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgZGlzcGF0Y2hNZXNzYWdlRnJvbVJlbW90ZShjb25zdCBTdHJpbmcmIG1lc3NhZ2UpID0gMDsK
IAorI2lmIFVTRShDRikKICAgICAvLyBUaGUgZGlzcGF0Y2ggYmxvY2sgd2lsbCBiZSBzY2hlZHVs
ZWQgb24gYSBnbG9iYWwgcnVuIGxvb3AgaWYgbnVsbCBpcyByZXR1cm5lZC4KICAgICB2aXJ0dWFs
IENGUnVuTG9vcFJlZiB0YXJnZXRSdW5Mb29wKCkgeyByZXR1cm4gbnVsbHB0cjsgfQorI2VuZGlm
CiBwcml2YXRlOgogICAgIHVuc2lnbmVkIG1faWRlbnRpZmllciB7MH07CiB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdGlv
blRhcmdldC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3Rl
SW5zcGVjdGlvblRhcmdldC5oCmluZGV4IDM4NTJmY2NkODMxLi40NTMyOWY2ZDYyZiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVj
dGlvblRhcmdldC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3Rl
L1JlbW90ZUluc3BlY3Rpb25UYXJnZXQuaApAQCAtNDEsOCArNDEsMTAgQEAgcHVibGljOgogICAg
IGJvb2wgcmVtb3RlRGVidWdnaW5nQWxsb3dlZCgpIGNvbnN0IHsgcmV0dXJuIG1fYWxsb3dlZDsg
fQogICAgIHZvaWQgc2V0UmVtb3RlRGVidWdnaW5nQWxsb3dlZChib29sKTsKIAorI2lmIFVTRShD
RikKICAgICBDRlJ1bkxvb3BSZWYgdGFyZ2V0UnVuTG9vcCgpIG92ZXJyaWRlIHsgcmV0dXJuIG1f
cnVuTG9vcC5nZXQoKTsgfQogICAgIHZvaWQgc2V0VGFyZ2V0UnVuTG9vcChDRlJ1bkxvb3BSZWYg
cnVuTG9vcCkgeyBtX3J1bkxvb3AgPSBydW5Mb29wOyB9CisjZW5kaWYKIAogICAgIHZpcnR1YWwg
U3RyaW5nIG5hbWUoKSBjb25zdCB7IHJldHVybiBTdHJpbmcoKTsgfSAvLyBKYXZhU2NyaXB0IGFu
ZCBXZWIKICAgICB2aXJ0dWFsIFN0cmluZyB1cmwoKSBjb25zdCB7IHJldHVybiBTdHJpbmcoKTsg
fSAvLyBXZWIKQEAgLTU5LDcgKzYxLDkgQEAgcHVibGljOgogICAgIGJvb2wgcmVtb3RlQ29udHJv
bEFsbG93ZWQoKSBjb25zdCBvdmVycmlkZTsKIHByaXZhdGU6CiAgICAgYm9vbCBtX2FsbG93ZWQg
e2ZhbHNlfTsKKyNpZiBVU0UoQ0YpCiAgICAgUmV0YWluUHRyPENGUnVuTG9vcFJlZj4gbV9ydW5M
b29wOworI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3Rvci5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0
b3IuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4xNTc3YmViYjdk
MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVt
b3RlL1JlbW90ZUluc3BlY3Rvci5jcHAKQEAgLTAsMCArMSwyMjQgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTMtMjAxNiBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJSZW1vdGVJbnNwZWN0b3IuaCIKKworI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVD
VE9SKQorCisjaW5jbHVkZSAiUmVtb3RlQXV0b21hdGlvblRhcmdldC5oIgorI2luY2x1ZGUgIlJl
bW90ZUNvbm5lY3Rpb25Ub1RhcmdldC5oIgorI2luY2x1ZGUgIlJlbW90ZUluc3BlY3Rpb25UYXJn
ZXQuaCIKKyNpbmNsdWRlICJSZW1vdGVJbnNwZWN0b3JDb25zdGFudHMuaCIKKyNpbmNsdWRlIDx3
dGYvTWFpblRocmVhZC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1l
c3BhY2UgSW5zcGVjdG9yIHsKKworYm9vbCBSZW1vdGVJbnNwZWN0b3I6OnN0YXJ0RW5hYmxlZCA9
IHRydWU7CisKK3ZvaWQgUmVtb3RlSW5zcGVjdG9yOjpzdGFydERpc2FibGVkKCkKK3sKKyAgICBS
ZW1vdGVJbnNwZWN0b3I6OnN0YXJ0RW5hYmxlZCA9IGZhbHNlOworfQorCit1bnNpZ25lZCBSZW1v
dGVJbnNwZWN0b3I6Om5leHRBdmFpbGFibGVUYXJnZXRJZGVudGlmaWVyKCkKK3sKKyAgICB1bnNp
Z25lZCBuZXh0VmFsaWRUYXJnZXRJZGVudGlmaWVyOworICAgIGRvIHsKKyAgICAgICAgbmV4dFZh
bGlkVGFyZ2V0SWRlbnRpZmllciA9IG1fbmV4dEF2YWlsYWJsZVRhcmdldElkZW50aWZpZXIrKzsK
KyAgICB9IHdoaWxlICghbmV4dFZhbGlkVGFyZ2V0SWRlbnRpZmllciB8fCBuZXh0VmFsaWRUYXJn
ZXRJZGVudGlmaWVyID09IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSB8fCBt
X3RhcmdldE1hcC5jb250YWlucyhuZXh0VmFsaWRUYXJnZXRJZGVudGlmaWVyKSk7CisgICAgcmV0
dXJuIG5leHRWYWxpZFRhcmdldElkZW50aWZpZXI7Cit9CisKK3ZvaWQgUmVtb3RlSW5zcGVjdG9y
OjpyZWdpc3RlclRhcmdldChSZW1vdGVDb250cm9sbGFibGVUYXJnZXQqIHRhcmdldCkKK3sKKyAg
ICBBU1NFUlRfQVJHKHRhcmdldCwgdGFyZ2V0KTsKKworICAgIHN0ZDo6bG9ja19ndWFyZDxMb2Nr
PiBsb2NrKG1fbXV0ZXgpOworCisgICAgdW5zaWduZWQgdGFyZ2V0SWRlbnRpZmllciA9IG5leHRB
dmFpbGFibGVUYXJnZXRJZGVudGlmaWVyKCk7CisgICAgdGFyZ2V0LT5zZXRUYXJnZXRJZGVudGlm
aWVyKHRhcmdldElkZW50aWZpZXIpOworCisgICAgeworICAgICAgICBhdXRvIHJlc3VsdCA9IG1f
dGFyZ2V0TWFwLnNldCh0YXJnZXRJZGVudGlmaWVyLCB0YXJnZXQpOworICAgICAgICBBU1NFUlRf
VU5VU0VEKHJlc3VsdCwgcmVzdWx0LmlzTmV3RW50cnkpOworICAgIH0KKworICAgIC8vIElmIHJl
bW90ZSBjb250cm9sIGlzIG5vdCBhbGxvd2VkLCBhIG51bGwgbGlzdGluZyBpcyByZXR1cm5lZC4K
KyAgICBpZiAoYXV0byB0YXJnZXRMaXN0aW5nID0gbGlzdGluZ0ZvclRhcmdldCgqdGFyZ2V0KSkg
eworICAgICAgICBhdXRvIHJlc3VsdCA9IG1fdGFyZ2V0TGlzdGluZ01hcC5zZXQodGFyZ2V0SWRl
bnRpZmllciwgdGFyZ2V0TGlzdGluZyk7CisgICAgICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCBy
ZXN1bHQuaXNOZXdFbnRyeSk7CisgICAgfQorCisgICAgcHVzaExpc3RpbmdzU29vbigpOworfQor
Cit2b2lkIFJlbW90ZUluc3BlY3Rvcjo6dW5yZWdpc3RlclRhcmdldChSZW1vdGVDb250cm9sbGFi
bGVUYXJnZXQqIHRhcmdldCkKK3sKKyAgICBBU1NFUlRfQVJHKHRhcmdldCwgdGFyZ2V0KTsKKwor
ICAgIHN0ZDo6bG9ja19ndWFyZDxMb2NrPiBsb2NrKG1fbXV0ZXgpOworCisgICAgdW5zaWduZWQg
dGFyZ2V0SWRlbnRpZmllciA9IHRhcmdldC0+dGFyZ2V0SWRlbnRpZmllcigpOworICAgIGlmICgh
dGFyZ2V0SWRlbnRpZmllcikKKyAgICAgICAgcmV0dXJuOworCisgICAgYm9vbCB3YXNSZW1vdmVk
ID0gbV90YXJnZXRNYXAucmVtb3ZlKHRhcmdldElkZW50aWZpZXIpOworICAgIEFTU0VSVF9VTlVT
RUQod2FzUmVtb3ZlZCwgd2FzUmVtb3ZlZCk7CisKKyAgICAvLyBUaGUgbGlzdGluZyBtYXkgbmV2
ZXIgaGF2ZSBiZWVuIGFkZGVkIGlmIHJlbW90ZSBjb250cm9sIGlzbid0IGFsbG93ZWQuCisgICAg
bV90YXJnZXRMaXN0aW5nTWFwLnJlbW92ZSh0YXJnZXRJZGVudGlmaWVyKTsKKworICAgIGlmIChh
dXRvIGNvbm5lY3Rpb25Ub1RhcmdldCA9IG1fdGFyZ2V0Q29ubmVjdGlvbk1hcC50YWtlKHRhcmdl
dElkZW50aWZpZXIpKQorICAgICAgICBjb25uZWN0aW9uVG9UYXJnZXQtPnRhcmdldENsb3NlZCgp
OworCisgICAgcHVzaExpc3RpbmdzU29vbigpOworfQorCit2b2lkIFJlbW90ZUluc3BlY3Rvcjo6
dXBkYXRlVGFyZ2V0KFJlbW90ZUNvbnRyb2xsYWJsZVRhcmdldCogdGFyZ2V0KQoreworICAgIEFT
U0VSVF9BUkcodGFyZ2V0LCB0YXJnZXQpOworCisgICAgc3RkOjpsb2NrX2d1YXJkPExvY2s+IGxv
Y2sobV9tdXRleCk7CisKKyAgICB1bnNpZ25lZCB0YXJnZXRJZGVudGlmaWVyID0gdGFyZ2V0LT50
YXJnZXRJZGVudGlmaWVyKCk7CisgICAgaWYgKCF0YXJnZXRJZGVudGlmaWVyKQorICAgICAgICBy
ZXR1cm47CisKKyAgICB7CisgICAgICAgIGF1dG8gcmVzdWx0ID0gbV90YXJnZXRNYXAuc2V0KHRh
cmdldElkZW50aWZpZXIsIHRhcmdldCk7CisgICAgICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCAh
cmVzdWx0LmlzTmV3RW50cnkpOworICAgIH0KKworICAgIC8vIElmIHRoZSB0YXJnZXQgaGFzIGp1
c3QgYWxsb3dlZCByZW1vdGUgY29udHJvbCwgdGhlbiB0aGUgbGlzdGluZyB3b24ndCBleGlzdCB5
ZXQuCisgICAgLy8gSWYgdGhlIHRhcmdldCBoYXMgbm8gaWRlbnRpZmllciByZW1vdmUgdGhlIG9s
ZCBsaXN0aW5nLgorICAgIGlmIChhdXRvIHRhcmdldExpc3RpbmcgPSBsaXN0aW5nRm9yVGFyZ2V0
KCp0YXJnZXQpKQorICAgICAgICBtX3RhcmdldExpc3RpbmdNYXAuc2V0KHRhcmdldElkZW50aWZp
ZXIsIHRhcmdldExpc3RpbmcpOworICAgIGVsc2UKKyAgICAgICAgbV90YXJnZXRMaXN0aW5nTWFw
LnJlbW92ZSh0YXJnZXRJZGVudGlmaWVyKTsKKworICAgIHB1c2hMaXN0aW5nc1Nvb24oKTsKK30K
Kwordm9pZCBSZW1vdGVJbnNwZWN0b3I6OnVwZGF0ZUNsaWVudENhcGFiaWxpdGllcygpCit7Cisg
ICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKworICAgIHN0ZDo6bG9ja19ndWFyZDxMb2NrPiBs
b2NrKG1fbXV0ZXgpOworCisgICAgaWYgKCFtX2NsaWVudCkKKyAgICAgICAgbV9jbGllbnRDYXBh
YmlsaXRpZXMgPSBzdGQ6Om51bGxvcHQ7CisgICAgZWxzZSB7CisgICAgICAgIFJlbW90ZUluc3Bl
Y3Rvcjo6Q2xpZW50OjpDYXBhYmlsaXRpZXMgdXBkYXRlZENhcGFiaWxpdGllcyA9IHsKKyAgICAg
ICAgICAgIG1fY2xpZW50LT5yZW1vdGVBdXRvbWF0aW9uQWxsb3dlZCgpIC8vIHJlbW90ZUF1dG9t
YXRpb25BbGxvd2VkCisgICAgICAgIH07CisKKyAgICAgICAgbV9jbGllbnRDYXBhYmlsaXRpZXMg
PSB1cGRhdGVkQ2FwYWJpbGl0aWVzOworICAgIH0KK30KKwordm9pZCBSZW1vdGVJbnNwZWN0b3I6
OnNldFJlbW90ZUluc3BlY3RvckNsaWVudChSZW1vdGVJbnNwZWN0b3I6OkNsaWVudCogY2xpZW50
KQoreworICAgIEFTU0VSVF9BUkcoY2xpZW50LCBjbGllbnQpOworICAgIEFTU0VSVCghbV9jbGll
bnQpOworCisgICAgeworICAgICAgICBzdGQ6OmxvY2tfZ3VhcmQ8TG9jaz4gbG9jayhtX211dGV4
KTsKKyAgICAgICAgbV9jbGllbnQgPSBjbGllbnQ7CisgICAgfQorCisgICAgLy8gU2VuZCBhbiB1
cGRhdGVkIGxpc3RpbmcgdGhhdCBpbmNsdWRlcyB3aGV0aGVyIHRoZSBjbGllbnQgYWxsb3dzIHJl
bW90ZSBhdXRvbWF0aW9uLgorICAgIHVwZGF0ZUNsaWVudENhcGFiaWxpdGllcygpOworICAgIHB1
c2hMaXN0aW5nc1Nvb24oKTsKK30KKwordm9pZCBSZW1vdGVJbnNwZWN0b3I6OnNldHVwRmFpbGVk
KHVuc2lnbmVkIHRhcmdldElkZW50aWZpZXIpCit7CisgICAgc3RkOjpsb2NrX2d1YXJkPExvY2s+
IGxvY2sobV9tdXRleCk7CisKKyAgICBtX3RhcmdldENvbm5lY3Rpb25NYXAucmVtb3ZlKHRhcmdl
dElkZW50aWZpZXIpOworCisgICAgdXBkYXRlSGFzQWN0aXZlRGVidWdTZXNzaW9uKCk7CisKKyAg
ICBpZiAodGFyZ2V0SWRlbnRpZmllciA9PSBtX2F1dG9tYXRpY0luc3BlY3Rpb25DYW5kaWRhdGVU
YXJnZXRJZGVudGlmaWVyKQorICAgICAgICBtX2F1dG9tYXRpY0luc3BlY3Rpb25QYXVzZWQgPSBm
YWxzZTsKKworICAgIHB1c2hMaXN0aW5nc1Nvb24oKTsKK30KKwordm9pZCBSZW1vdGVJbnNwZWN0
b3I6OnNldHVwQ29tcGxldGVkKHVuc2lnbmVkIHRhcmdldElkZW50aWZpZXIpCit7CisgICAgc3Rk
Ojpsb2NrX2d1YXJkPExvY2s+IGxvY2sobV9tdXRleCk7CisKKyAgICBpZiAodGFyZ2V0SWRlbnRp
ZmllciA9PSBtX2F1dG9tYXRpY0luc3BlY3Rpb25DYW5kaWRhdGVUYXJnZXRJZGVudGlmaWVyKQor
ICAgICAgICBtX2F1dG9tYXRpY0luc3BlY3Rpb25QYXVzZWQgPSBmYWxzZTsKK30KKworYm9vbCBS
ZW1vdGVJbnNwZWN0b3I6OndhaXRpbmdGb3JBdXRvbWF0aWNJbnNwZWN0aW9uKHVuc2lnbmVkKQor
eworICAgIC8vIFdlIGRvbid0IHRha2UgdGhlIGxvY2sgdG8gY2hlY2sgdGhpcyBiZWNhdXNlIHdl
IGFzc3VtZSBpdCB3aWxsIGJlIGNoZWNrZWQgcmVwZWF0ZWRseS4KKyAgICByZXR1cm4gbV9hdXRv
bWF0aWNJbnNwZWN0aW9uUGF1c2VkOworfQorCit2b2lkIFJlbW90ZUluc3BlY3Rvcjo6Y2xpZW50
Q2FwYWJpbGl0aWVzRGlkQ2hhbmdlKCkKK3sKKyAgICB1cGRhdGVDbGllbnRDYXBhYmlsaXRpZXMo
KTsKKyAgICBwdXNoTGlzdGluZ3NTb29uKCk7Cit9CisKK3ZvaWQgUmVtb3RlSW5zcGVjdG9yOjpz
dG9wKCkKK3sKKyAgICBzdGQ6OmxvY2tfZ3VhcmQ8TG9jaz4gbG9jayhtX211dGV4KTsKKworICAg
IHN0b3BJbnRlcm5hbChTdG9wU291cmNlOjpBUEkpOworfQorCitUYXJnZXRMaXN0aW5nIFJlbW90
ZUluc3BlY3Rvcjo6bGlzdGluZ0ZvclRhcmdldChjb25zdCBSZW1vdGVDb250cm9sbGFibGVUYXJn
ZXQmIHRhcmdldCkgY29uc3QKK3sKKyAgICBpZiAoaXM8UmVtb3RlSW5zcGVjdGlvblRhcmdldD4o
dGFyZ2V0KSkKKyAgICAgICAgcmV0dXJuIGxpc3RpbmdGb3JJbnNwZWN0aW9uVGFyZ2V0KGRvd25j
YXN0PFJlbW90ZUluc3BlY3Rpb25UYXJnZXQ+KHRhcmdldCkpOworICAgIGlmIChpczxSZW1vdGVB
dXRvbWF0aW9uVGFyZ2V0Pih0YXJnZXQpKQorICAgICAgICByZXR1cm4gbGlzdGluZ0ZvckF1dG9t
YXRpb25UYXJnZXQoZG93bmNhc3Q8UmVtb3RlQXV0b21hdGlvblRhcmdldD4odGFyZ2V0KSk7CisK
KyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKwordm9p
ZCBSZW1vdGVJbnNwZWN0b3I6OnVwZGF0ZUhhc0FjdGl2ZURlYnVnU2Vzc2lvbigpCit7CisgICAg
Ym9vbCBoYXNBY3RpdmVEZWJ1Z2dlclNlc3Npb24gPSAhbV90YXJnZXRDb25uZWN0aW9uTWFwLmlz
RW1wdHkoKTsKKyAgICBpZiAoaGFzQWN0aXZlRGVidWdnZXJTZXNzaW9uID09IG1faGFzQWN0aXZl
RGVidWdTZXNzaW9uKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2hhc0FjdGl2ZURlYnVnU2Vz
c2lvbiA9IGhhc0FjdGl2ZURlYnVnZ2VyU2Vzc2lvbjsKKworICAgIC8vIEZJWE1FOiBFeHBvc2Ug
c29tZSB3YXkgdG8gYWNjZXNzIHRoaXMgc3RhdGUgaW4gYW4gZW1iZWRkZXIuCisgICAgLy8gTGVn
YWN5IGlPUyBXZWJLaXQgMSBoYWQgYSBub3RpZmljYXRpb24uIFRoaXMgd2lsbCBuZWVkIHRvIGJl
IHNtYXJ0ZXIgd2l0aCBXZWJLaXQyLgorfQorCit9IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IKKwor
I2VuZGlmIC8vIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3IuaAppbmRleCA5
M2ZkMWE3ZDdjMC4uMjFhN2UxM2YxMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3Rvci5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3Rvci5oCkBAIC0yNywxNCArMjcs
MTggQEAKIAogI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQogCi0jaW1wb3J0ICJSZW1vdGVJ
bnNwZWN0b3JYUENDb25uZWN0aW9uLmgiCi0jaW1wb3J0IDx3dGYvRm9yd2FyZC5oPgotI2ltcG9y
dCA8d3RmL0hhc2hNYXAuaD4KLSNpbXBvcnQgPHd0Zi9Mb2NrLmg+Ci0jaW1wb3J0IDx3dGYvUmV0
YWluUHRyLmg+CisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaE1h
cC5oPgorI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CisKKyNpZiBQTEFURk9STShDT0NPQSkKKyNpbmNs
dWRlICJSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uLmgiCisjaW5jbHVkZSA8d3RmL1JldGFp
blB0ci5oPgogCiBPQkpDX0NMQVNTIE5TRGljdGlvbmFyeTsKIE9CSkNfQ0xBU1MgTlNTdHJpbmc7
Cit0eXBlZGVmIFJldGFpblB0cjxOU0RpY3Rpb25hcnk+IFRhcmdldExpc3Rpbmc7CisjZW5kaWYK
IAogbmFtZXNwYWNlIEluc3BlY3RvciB7CiAKQEAgLTQ0LDcgKzQ4LDExIEBAIGNsYXNzIFJlbW90
ZUNvbnRyb2xsYWJsZVRhcmdldDsKIGNsYXNzIFJlbW90ZUluc3BlY3Rpb25UYXJnZXQ7CiBjbGFz
cyBSZW1vdGVJbnNwZWN0b3JDbGllbnQ7CiAKLWNsYXNzIEpTX0VYUE9SVF9QUklWQVRFIFJlbW90
ZUluc3BlY3RvciBmaW5hbCA6IHB1YmxpYyBSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uOjpD
bGllbnQgeworY2xhc3MgSlNfRVhQT1JUX1BSSVZBVEUgUmVtb3RlSW5zcGVjdG9yIGZpbmFsCisj
aWYgUExBVEZPUk0oQ09DT0EpCisgICAgOiBwdWJsaWMgUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVj
dGlvbjo6Q2xpZW50CisjZW5kaWYKK3sKIHB1YmxpYzoKICAgICBjbGFzcyBDbGllbnQgewogICAg
IHB1YmxpYzoKQEAgLTgwLDExICs4OCwxMyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzdGFydCgpOwog
ICAgIHZvaWQgc3RvcCgpOwogCisjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgYm9vbCBoYXNQYXJl
bnRQcm9jZXNzSW5mb3JtYXRpb24oKSBjb25zdCB7IHJldHVybiBtX3BhcmVudFByb2Nlc3NJZGVu
dGlmaWVyICE9IDA7IH0KICAgICBwaWRfdCBwYXJlbnRQcm9jZXNzSWRlbnRpZmllcigpIGNvbnN0
IHsgcmV0dXJuIG1fcGFyZW50UHJvY2Vzc0lkZW50aWZpZXI7IH0KICAgICBSZXRhaW5QdHI8Q0ZE
YXRhUmVmPiBwYXJlbnRQcm9jZXNzQXVkaXREYXRhKCkgY29uc3QgeyByZXR1cm4gbV9wYXJlbnRQ
cm9jZXNzQXVkaXREYXRhOyB9CiAgICAgdm9pZCBzZXRQYXJlbnRQcm9jZXNzSW5mb3JtYXRpb24o
cGlkX3QsIFJldGFpblB0cjxDRkRhdGFSZWY+IGF1ZGl0RGF0YSk7CiAgICAgdm9pZCBzZXRQYXJl
bnRQcm9jZXNzSW5mb21hdGlvbklzRGVsYXllZCgpOworI2VuZGlmCiAKIHByaXZhdGU6CiAgICAg
UmVtb3RlSW5zcGVjdG9yKCk7CkBAIC05NCwxMSArMTA0LDE0IEBAIHByaXZhdGU6CiAgICAgZW51
bSBjbGFzcyBTdG9wU291cmNlIHsgQVBJLCBYUENNZXNzYWdlIH07CiAgICAgdm9pZCBzdG9wSW50
ZXJuYWwoU3RvcFNvdXJjZSk7CiAKKyNpZiBQTEFURk9STShDT0NPQSkKICAgICB2b2lkIHNldHVw
WFBDQ29ubmVjdGlvbklmTmVlZGVkKCk7CisjZW5kaWYKKworICAgIFRhcmdldExpc3RpbmcgbGlz
dGluZ0ZvclRhcmdldChjb25zdCBSZW1vdGVDb250cm9sbGFibGVUYXJnZXQmKSBjb25zdDsKKyAg
ICBUYXJnZXRMaXN0aW5nIGxpc3RpbmdGb3JJbnNwZWN0aW9uVGFyZ2V0KGNvbnN0IFJlbW90ZUlu
c3BlY3Rpb25UYXJnZXQmKSBjb25zdDsKKyAgICBUYXJnZXRMaXN0aW5nIGxpc3RpbmdGb3JBdXRv
bWF0aW9uVGFyZ2V0KGNvbnN0IFJlbW90ZUF1dG9tYXRpb25UYXJnZXQmKSBjb25zdDsKIAotICAg
IFJldGFpblB0cjxOU0RpY3Rpb25hcnk+IGxpc3RpbmdGb3JUYXJnZXQoY29uc3QgUmVtb3RlQ29u
dHJvbGxhYmxlVGFyZ2V0JikgY29uc3Q7Ci0gICAgUmV0YWluUHRyPE5TRGljdGlvbmFyeT4gbGlz
dGluZ0Zvckluc3BlY3Rpb25UYXJnZXQoY29uc3QgUmVtb3RlSW5zcGVjdGlvblRhcmdldCYpIGNv
bnN0OwotICAgIFJldGFpblB0cjxOU0RpY3Rpb25hcnk+IGxpc3RpbmdGb3JBdXRvbWF0aW9uVGFy
Z2V0KGNvbnN0IFJlbW90ZUF1dG9tYXRpb25UYXJnZXQmKSBjb25zdDsKICAgICB2b2lkIHB1c2hM
aXN0aW5nc05vdygpOwogICAgIHZvaWQgcHVzaExpc3RpbmdzU29vbigpOwogCkBAIC0xMDcsNiAr
MTIwLDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgc2VuZEF1dG9tYXRpY0luc3BlY3Rpb25DYW5k
aWRhdGVNZXNzYWdlKCk7CiAKKyNpZiBQTEFURk9STShDT0NPQSkKICAgICB2b2lkIHhwY0Nvbm5l
Y3Rpb25SZWNlaXZlZE1lc3NhZ2UoUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbiosIE5TU3Ry
aW5nICptZXNzYWdlTmFtZSwgTlNEaWN0aW9uYXJ5ICp1c2VySW5mbykgb3ZlcnJpZGU7CiAgICAg
dm9pZCB4cGNDb25uZWN0aW9uRmFpbGVkKFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24qKSBv
dmVycmlkZTsKICAgICB2b2lkIHhwY0Nvbm5lY3Rpb25VbmhhbmRsZWRNZXNzYWdlKFJlbW90ZUlu
c3BlY3RvclhQQ0Nvbm5lY3Rpb24qLCB4cGNfb2JqZWN0X3QpIG92ZXJyaWRlOwpAQCAtMTIxLDYg
KzEzNSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCByZWNlaXZlZEF1dG9tYXRpY0luc3BlY3Rpb25D
b25maWd1cmF0aW9uTWVzc2FnZShOU0RpY3Rpb25hcnkgKnVzZXJJbmZvKTsKICAgICB2b2lkIHJl
Y2VpdmVkQXV0b21hdGljSW5zcGVjdGlvblJlamVjdE1lc3NhZ2UoTlNEaWN0aW9uYXJ5ICp1c2Vy
SW5mbyk7CiAgICAgdm9pZCByZWNlaXZlZEF1dG9tYXRpb25TZXNzaW9uUmVxdWVzdE1lc3NhZ2Uo
TlNEaWN0aW9uYXJ5ICp1c2VySW5mbyk7CisjZW5kaWYKIAogICAgIHN0YXRpYyBib29sIHN0YXJ0
RW5hYmxlZDsKIApAQCAtMTMxLDE1ICsxNDYsMTkgQEAgcHJpdmF0ZToKICAgICBMb2NrIG1fbXV0
ZXg7CiAKICAgICBIYXNoTWFwPHVuc2lnbmVkLCBSZW1vdGVDb250cm9sbGFibGVUYXJnZXQqPiBt
X3RhcmdldE1hcDsKLSAgICBIYXNoTWFwPHVuc2lnbmVkLCBSZXRhaW5QdHI8TlNEaWN0aW9uYXJ5
Pj4gbV90YXJnZXRMaXN0aW5nTWFwOwogICAgIEhhc2hNYXA8dW5zaWduZWQsIFJlZlB0cjxSZW1v
dGVDb25uZWN0aW9uVG9UYXJnZXQ+PiBtX3RhcmdldENvbm5lY3Rpb25NYXA7CisgICAgSGFzaE1h
cDx1bnNpZ25lZCwgVGFyZ2V0TGlzdGluZz4gbV90YXJnZXRMaXN0aW5nTWFwOwogCisjaWYgUExB
VEZPUk0oQ09DT0EpCiAgICAgUmVmUHRyPFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24+IG1f
cmVsYXlDb25uZWN0aW9uOworI2VuZGlmCiAKICAgICBSZW1vdGVJbnNwZWN0b3I6OkNsaWVudCog
bV9jbGllbnQgeyBudWxscHRyIH07CiAgICAgc3RkOjpvcHRpb25hbDxSZW1vdGVJbnNwZWN0b3I6
OkNsaWVudDo6Q2FwYWJpbGl0aWVzPiBtX2NsaWVudENhcGFiaWxpdGllczsKIAorI2lmIFBMQVRG
T1JNKENPQ09BKQogICAgIGRpc3BhdGNoX3F1ZXVlX3QgbV94cGNRdWV1ZTsKKyNlbmRpZgogICAg
IHVuc2lnbmVkIG1fbmV4dEF2YWlsYWJsZVRhcmdldElkZW50aWZpZXIgeyAxIH07CiAgICAgaW50
IG1fbm90aWZ5VG9rZW4geyAwIH07CiAgICAgYm9vbCBtX2VuYWJsZWQgeyBmYWxzZSB9OwpAQCAt
MTQ3LDcgKzE2Niw5IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX3B1c2hTY2hlZHVsZWQgeyBmYWxz
ZSB9OwogCiAgICAgcGlkX3QgbV9wYXJlbnRQcm9jZXNzSWRlbnRpZmllciB7IDAgfTsKKyNpZiBQ
TEFURk9STShDT0NPQSkKICAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBtX3BhcmVudFByb2Nlc3NB
dWRpdERhdGE7CisjZW5kaWYKICAgICBib29sIG1fc2hvdWxkU2VuZFBhcmVudFByb2Nlc3NJbmZv
cm1hdGlvbiB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2F1dG9tYXRpY0luc3BlY3Rpb25FbmFibGVk
IHsgZmFsc2UgfTsKICAgICBib29sIG1fYXV0b21hdGljSW5zcGVjdGlvblBhdXNlZCB7IGZhbHNl
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9S
ZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQubW0gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL3JlbW90ZS9jb2NvYS9SZW1vdGVDb25uZWN0aW9uVG9UYXJnZXRDb2NvYS5tbQpzaW1pbGFy
aXR5IGluZGV4IDkzJQpyZW5hbWUgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L3JlbW90ZS9SZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQubW0KcmVuYW1lIHRvIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL2NvY29hL1JlbW90ZUNvbm5lY3Rpb25Ub1Rhcmdl
dENvY29hLm1tCmluZGV4IGQ2MGRhNDhhZmE4Li5hYzNjNzIzMWY0NSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlQ29ubmVjdGlvblRvVGFy
Z2V0Lm1tCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL2NvY29h
L1JlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldENvY29hLm1tCkBAIC0zMSw2ICszMSw3IEBACiAjaW1w
b3J0ICJFdmVudExvb3AuaCIKICNpbXBvcnQgIlJlbW90ZUF1dG9tYXRpb25UYXJnZXQuaCIKICNp
bXBvcnQgIlJlbW90ZUluc3BlY3Rpb25UYXJnZXQuaCIKKyNpbXBvcnQgIlJlbW90ZUluc3BlY3Rv
ci5oIgogI2ltcG9ydCA8ZGlzcGF0Y2gvZGlzcGF0Y2guaD4KICNpbXBvcnQgPHd0Zi9PcHRpb25h
bC5oPgogCkBAIC03OCwxMCArNzksMTAgQEAgc3RhdGljIHZvaWQgUmVtb3RlVGFyZ2V0UXVldWVU
YXNrT25HbG9iYWxRdWV1ZSh2b2lkIChedGFzaykoKSkKIHN0YXRpYyB2b2lkIFJlbW90ZVRhcmdl
dEluaXRpYWxpemVHbG9iYWxRdWV1ZSgpCiB7CiAgICAgc3RhdGljIGRpc3BhdGNoX29uY2VfdCBw
cmVkOwotICAgIGRpc3BhdGNoX29uY2UoJnByZWQsIF57CisgICAgZGlzcGF0Y2hfb25jZSgmcHJl
ZCwgXiB7CiAgICAgICAgIHJ3aVF1ZXVlID0gbmV3IFJlbW90ZVRhcmdldFF1ZXVlOwogCi0gICAg
ICAgIENGUnVuTG9vcFNvdXJjZUNvbnRleHQgcnVuTG9vcFNvdXJjZUNvbnRleHQgPSB7MCwgbnVs
bHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0
ciwgbnVsbHB0ciwgUmVtb3RlVGFyZ2V0SGFuZGxlUnVuU291cmNlR2xvYmFsfTsKKyAgICAgICAg
Q0ZSdW5Mb29wU291cmNlQ29udGV4dCBydW5Mb29wU291cmNlQ29udGV4dCA9IHsgMCwgbnVsbHB0
ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwg
bnVsbHB0ciwgUmVtb3RlVGFyZ2V0SGFuZGxlUnVuU291cmNlR2xvYmFsIH07CiAgICAgICAgIHJ3
aVJ1bkxvb3BTb3VyY2UgPSBDRlJ1bkxvb3BTb3VyY2VDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVs
dCwgMSwgJnJ1bkxvb3BTb3VyY2VDb250ZXh0KTsKIAogICAgICAgICAvLyBBZGQgdG8gdGhlIGRl
ZmF1bHQgcnVuIGxvb3AgbW9kZSBmb3IgZGVmYXVsdCBoYW5kbGluZywgYW5kIHRoZSBKU0NvbnRl
eHQgcmVtb3RlIGluc3BlY3RvciBydW4gbG9vcCBtb2RlIHdoZW4gcGF1c2VkLgpAQCAtMTU5LDcg
KzE2MCw3IEBAIGJvb2wgUmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0OjpzZXR1cChib29sIGlzQXV0
b21hdGljSW5zcGVjdGlvbiwgYm9vbCBhdXRvbWF0aWNhCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IAogICAgIHJlZigpOwotICAgIGRpc3BhdGNoQXN5bmNPblRhcmdldCheeworICAgIGRpc3BhdGNo
QXN5bmNPblRhcmdldCheIHsKICAgICAgICAgewogICAgICAgICAgICAgc3RkOjpsb2NrX2d1YXJk
PExvY2s+IGxvY2sobV90YXJnZXRNdXRleCk7CiAgICAgICAgICAgICBpZiAoIW1fdGFyZ2V0IHx8
ICFtX3RhcmdldC0+cmVtb3RlQ29udHJvbEFsbG93ZWQoKSkgewpAQCAtMTk0LDcgKzE5NSw3IEBA
IHZvaWQgUmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0Ojp0YXJnZXRDbG9zZWQoKQogdm9pZCBSZW1v
dGVDb25uZWN0aW9uVG9UYXJnZXQ6OmNsb3NlKCkKIHsKICAgICByZWYoKTsKLSAgICBkaXNwYXRj
aEFzeW5jT25UYXJnZXQoXnsKKyAgICBkaXNwYXRjaEFzeW5jT25UYXJnZXQoXiB7CiAgICAgICAg
IHsKICAgICAgICAgICAgIHN0ZDo6bG9ja19ndWFyZDxMb2NrPiBsb2NrKG1fdGFyZ2V0TXV0ZXgp
OwogCkBAIC0yMDksMTAgKzIxMCwxMCBAQCB2b2lkIFJlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldDo6
Y2xvc2UoKQogICAgIH0pOwogfQogCi12b2lkIFJlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldDo6c2Vu
ZE1lc3NhZ2VUb1RhcmdldChOU1N0cmluZyAqbWVzc2FnZSkKK3ZvaWQgUmVtb3RlQ29ubmVjdGlv
blRvVGFyZ2V0OjpzZW5kTWVzc2FnZVRvVGFyZ2V0KGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKIHsK
ICAgICByZWYoKTsKLSAgICBkaXNwYXRjaEFzeW5jT25UYXJnZXQoXnsKKyAgICBkaXNwYXRjaEFz
eW5jT25UYXJnZXQoXiB7CiAgICAgICAgIHsKICAgICAgICAgICAgIFJlbW90ZUNvbnRyb2xsYWJs
ZVRhcmdldCogdGFyZ2V0ID0gbnVsbHB0cjsKICAgICAgICAgICAgIHsKQEAgLTI0Niw3ICsyNDcs
NyBAQCB2b2lkIFJlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldDo6c2V0dXBSdW5Mb29wKCkKIAogICAg
IG1fcnVuTG9vcCA9IHRhcmdldFJ1bkxvb3A7CiAKLSAgICBDRlJ1bkxvb3BTb3VyY2VDb250ZXh0
IHJ1bkxvb3BTb3VyY2VDb250ZXh0ID0gezAsIHRoaXMsIG51bGxwdHIsIG51bGxwdHIsIG51bGxw
dHIsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIFJlbW90ZVRhcmdldEhhbmRs
ZVJ1blNvdXJjZVdpdGhJbmZvfTsKKyAgICBDRlJ1bkxvb3BTb3VyY2VDb250ZXh0IHJ1bkxvb3BT
b3VyY2VDb250ZXh0ID0geyAwLCB0aGlzLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBudWxs
cHRyLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBSZW1vdGVUYXJnZXRIYW5kbGVSdW5Tb3Vy
Y2VXaXRoSW5mbyB9OwogICAgIG1fcnVuTG9vcFNvdXJjZSA9IGFkb3B0Q0YoQ0ZSdW5Mb29wU291
cmNlQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIDEsICZydW5Mb29wU291cmNlQ29udGV4dCkp
OwogCiAgICAgQ0ZSdW5Mb29wQWRkU291cmNlKG1fcnVuTG9vcC5nZXQoKSwgbV9ydW5Mb29wU291
cmNlLmdldCgpLCBrQ0ZSdW5Mb29wRGVmYXVsdE1vZGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yLm1tIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvY29jb2EvUmVtb3RlSW5zcGVjdG9yQ29j
b2EubW0Kc2ltaWxhcml0eSBpbmRleCA4MCUKcmVuYW1lIGZyb20gU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yLm1tCnJlbmFtZSB0byBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9jb2NvYS9SZW1vdGVJbnNwZWN0b3JDb2Nv
YS5tbQppbmRleCAyMWNiMjMyZDhjNC4uYTg4OGIyY2Q3OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3Rvci5tbQorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9jb2NvYS9SZW1vdGVJbnNwZWN0
b3JDb2NvYS5tbQpAQCAtNDcsNyArNDcsNyBAQCBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAogc3Rh
dGljIGJvb2wgY2FuQWNjZXNzV2ViSW5zcGVjdG9yTWFjaFBvcnQoKQogewotICAgIHJldHVybiBz
YW5kYm94X2NoZWNrKGdldHBpZCgpLCAibWFjaC1sb29rdXAiLCBzdGF0aWNfY2FzdDxlbnVtIHNh
bmRib3hfZmlsdGVyX3R5cGU+KFNBTkRCT1hfRklMVEVSX0dMT0JBTF9OQU1FIHwgU0FOREJPWF9D
SEVDS19OT19SRVBPUlQpLCBXSVJYUENNYWNoUG9ydE5hbWUpID09IDA7CisgICAgcmV0dXJuICFz
YW5kYm94X2NoZWNrKGdldHBpZCgpLCAibWFjaC1sb29rdXAiLCBzdGF0aWNfY2FzdDxlbnVtIHNh
bmRib3hfZmlsdGVyX3R5cGU+KFNBTkRCT1hfRklMVEVSX0dMT0JBTF9OQU1FIHwgU0FOREJPWF9D
SEVDS19OT19SRVBPUlQpLCBXSVJYUENNYWNoUG9ydE5hbWUpOwogfQogCiBzdGF0aWMgYm9vbCBn
bG9iYWxBdXRvbWF0aWNJbnNwZWN0aW9uU3RhdGUoKQpAQCAtNjEsMjEgKzYxLDE0IEBAIHN0YXRp
YyBib29sIGdsb2JhbEF1dG9tYXRpY0luc3BlY3Rpb25TdGF0ZSgpCiAgICAgcmV0dXJuIGF1dG9t
YXRpY0luc3BlY3Rpb25FbmFibGVkID09IDE7CiB9CiAKLWJvb2wgUmVtb3RlSW5zcGVjdG9yOjpz
dGFydEVuYWJsZWQgPSB0cnVlOwotCi12b2lkIFJlbW90ZUluc3BlY3Rvcjo6c3RhcnREaXNhYmxl
ZCgpCi17Ci0gICAgUmVtb3RlSW5zcGVjdG9yOjpzdGFydEVuYWJsZWQgPSBmYWxzZTsKLX0KLQog
UmVtb3RlSW5zcGVjdG9yJiBSZW1vdGVJbnNwZWN0b3I6OnNpbmdsZXRvbigpCiB7CiAgICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPFJlbW90ZUluc3BlY3Rvcj4gc2hhcmVkOwogCiAgICAgc3RhdGlj
IGRpc3BhdGNoX29uY2VfdCBvbmNlOwotICAgIGRpc3BhdGNoX29uY2UoJm9uY2UsIF57CisgICAg
ZGlzcGF0Y2hfb25jZSgmb25jZSwgXiB7CiAgICAgICAgIGlmIChjYW5BY2Nlc3NXZWJJbnNwZWN0
b3JNYWNoUG9ydCgpKSB7Ci0gICAgICAgICAgICBkaXNwYXRjaF9ibG9ja190IGluaXRpYWxpemUg
PSBeeworICAgICAgICAgICAgZGlzcGF0Y2hfYmxvY2tfdCBpbml0aWFsaXplID0gXiB7CiAgICAg
ICAgICAgICAgICAgV1RGOjppbml0aWFsaXplTWFpblRocmVhZCgpOwogICAgICAgICAgICAgICAg
IEpTQzo6aW5pdGlhbGl6ZVRocmVhZGluZygpOwogICAgICAgICAgICAgICAgIGlmIChSZW1vdGVJ
bnNwZWN0b3I6OnN0YXJ0RW5hYmxlZCkKQEAgLTEwMSw4NSArOTQsNiBAQCBSZW1vdGVJbnNwZWN0
b3I6OlJlbW90ZUluc3BlY3RvcigpCiB7CiB9CiAKLXVuc2lnbmVkIFJlbW90ZUluc3BlY3Rvcjo6
bmV4dEF2YWlsYWJsZVRhcmdldElkZW50aWZpZXIoKQotewotICAgIHVuc2lnbmVkIG5leHRWYWxp
ZFRhcmdldElkZW50aWZpZXI7Ci0gICAgZG8gewotICAgICAgICBuZXh0VmFsaWRUYXJnZXRJZGVu
dGlmaWVyID0gbV9uZXh0QXZhaWxhYmxlVGFyZ2V0SWRlbnRpZmllcisrOwotICAgIH0gd2hpbGUg
KCFuZXh0VmFsaWRUYXJnZXRJZGVudGlmaWVyIHx8IG5leHRWYWxpZFRhcmdldElkZW50aWZpZXIg
PT0gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpIHx8IG1fdGFyZ2V0TWFwLmNv
bnRhaW5zKG5leHRWYWxpZFRhcmdldElkZW50aWZpZXIpKTsKLSAgICByZXR1cm4gbmV4dFZhbGlk
VGFyZ2V0SWRlbnRpZmllcjsKLX0KLQotdm9pZCBSZW1vdGVJbnNwZWN0b3I6OnJlZ2lzdGVyVGFy
Z2V0KFJlbW90ZUNvbnRyb2xsYWJsZVRhcmdldCogdGFyZ2V0KQotewotICAgIEFTU0VSVF9BUkco
dGFyZ2V0LCB0YXJnZXQpOwotCi0gICAgc3RkOjpsb2NrX2d1YXJkPExvY2s+IGxvY2sobV9tdXRl
eCk7Ci0KLSAgICB1bnNpZ25lZCB0YXJnZXRJZGVudGlmaWVyID0gbmV4dEF2YWlsYWJsZVRhcmdl
dElkZW50aWZpZXIoKTsKLSAgICB0YXJnZXQtPnNldFRhcmdldElkZW50aWZpZXIodGFyZ2V0SWRl
bnRpZmllcik7Ci0KLSAgICB7Ci0gICAgICAgIGF1dG8gcmVzdWx0ID0gbV90YXJnZXRNYXAuc2V0
KHRhcmdldElkZW50aWZpZXIsIHRhcmdldCk7Ci0gICAgICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0
LCByZXN1bHQuaXNOZXdFbnRyeSk7Ci0gICAgfQotCi0gICAgLy8gSWYgcmVtb3RlIGNvbnRyb2wg
aXMgbm90IGFsbG93ZWQsIGEgbnVsbCBsaXN0aW5nIGlzIHJldHVybmVkLgotICAgIGlmIChSZXRh
aW5QdHI8TlNEaWN0aW9uYXJ5PiB0YXJnZXRMaXN0aW5nID0gbGlzdGluZ0ZvclRhcmdldCgqdGFy
Z2V0KSkgewotICAgICAgICBhdXRvIHJlc3VsdCA9IG1fdGFyZ2V0TGlzdGluZ01hcC5zZXQodGFy
Z2V0SWRlbnRpZmllciwgdGFyZ2V0TGlzdGluZyk7Ci0gICAgICAgIEFTU0VSVF9VTlVTRUQocmVz
dWx0LCByZXN1bHQuaXNOZXdFbnRyeSk7Ci0gICAgfQotCi0gICAgcHVzaExpc3RpbmdzU29vbigp
OwotfQotCi12b2lkIFJlbW90ZUluc3BlY3Rvcjo6dW5yZWdpc3RlclRhcmdldChSZW1vdGVDb250
cm9sbGFibGVUYXJnZXQqIHRhcmdldCkKLXsKLSAgICBBU1NFUlRfQVJHKHRhcmdldCwgdGFyZ2V0
KTsKLQotICAgIHN0ZDo6bG9ja19ndWFyZDxMb2NrPiBsb2NrKG1fbXV0ZXgpOwotCi0gICAgdW5z
aWduZWQgdGFyZ2V0SWRlbnRpZmllciA9IHRhcmdldC0+dGFyZ2V0SWRlbnRpZmllcigpOwotICAg
IGlmICghdGFyZ2V0SWRlbnRpZmllcikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgYm9vbCB3YXNS
ZW1vdmVkID0gbV90YXJnZXRNYXAucmVtb3ZlKHRhcmdldElkZW50aWZpZXIpOwotICAgIEFTU0VS
VF9VTlVTRUQod2FzUmVtb3ZlZCwgd2FzUmVtb3ZlZCk7Ci0KLSAgICAvLyBUaGUgbGlzdGluZyBt
YXkgbmV2ZXIgaGF2ZSBiZWVuIGFkZGVkIGlmIHJlbW90ZSBjb250cm9sIGlzbid0IGFsbG93ZWQu
Ci0gICAgbV90YXJnZXRMaXN0aW5nTWFwLnJlbW92ZSh0YXJnZXRJZGVudGlmaWVyKTsKLQotICAg
IGlmIChhdXRvIGNvbm5lY3Rpb25Ub1RhcmdldCA9IG1fdGFyZ2V0Q29ubmVjdGlvbk1hcC50YWtl
KHRhcmdldElkZW50aWZpZXIpKQotICAgICAgICBjb25uZWN0aW9uVG9UYXJnZXQtPnRhcmdldENs
b3NlZCgpOwotCi0gICAgcHVzaExpc3RpbmdzU29vbigpOwotfQotCi12b2lkIFJlbW90ZUluc3Bl
Y3Rvcjo6dXBkYXRlVGFyZ2V0KFJlbW90ZUNvbnRyb2xsYWJsZVRhcmdldCogdGFyZ2V0KQotewot
ICAgIEFTU0VSVF9BUkcodGFyZ2V0LCB0YXJnZXQpOwotCi0gICAgc3RkOjpsb2NrX2d1YXJkPExv
Y2s+IGxvY2sobV9tdXRleCk7Ci0KLSAgICB1bnNpZ25lZCB0YXJnZXRJZGVudGlmaWVyID0gdGFy
Z2V0LT50YXJnZXRJZGVudGlmaWVyKCk7Ci0gICAgaWYgKCF0YXJnZXRJZGVudGlmaWVyKQotICAg
ICAgICByZXR1cm47Ci0KLSAgICB7Ci0gICAgICAgIGF1dG8gcmVzdWx0ID0gbV90YXJnZXRNYXAu
c2V0KHRhcmdldElkZW50aWZpZXIsIHRhcmdldCk7Ci0gICAgICAgIEFTU0VSVF9VTlVTRUQocmVz
dWx0LCAhcmVzdWx0LmlzTmV3RW50cnkpOwotICAgIH0KLQotICAgIC8vIElmIHRoZSB0YXJnZXQg
aGFzIGp1c3QgYWxsb3dlZCByZW1vdGUgY29udHJvbCwgdGhlbiB0aGUgbGlzdGluZyB3b24ndCBl
eGlzdCB5ZXQuCi0gICAgLy8gSWYgdGhlIHRhcmdldCBoYXMgbm8gaWRlbnRpZmllciByZW1vdmUg
dGhlIG9sZCBsaXN0aW5nLgotICAgIGlmIChSZXRhaW5QdHI8TlNEaWN0aW9uYXJ5PiB0YXJnZXRM
aXN0aW5nID0gbGlzdGluZ0ZvclRhcmdldCgqdGFyZ2V0KSkKLSAgICAgICAgbV90YXJnZXRMaXN0
aW5nTWFwLnNldCh0YXJnZXRJZGVudGlmaWVyLCB0YXJnZXRMaXN0aW5nKTsKLSAgICBlbHNlCi0g
ICAgICAgIG1fdGFyZ2V0TGlzdGluZ01hcC5yZW1vdmUodGFyZ2V0SWRlbnRpZmllcik7Ci0KLSAg
ICBwdXNoTGlzdGluZ3NTb29uKCk7Ci19Ci0KIHZvaWQgUmVtb3RlSW5zcGVjdG9yOjp1cGRhdGVB
dXRvbWF0aWNJbnNwZWN0aW9uQ2FuZGlkYXRlKFJlbW90ZUluc3BlY3Rpb25UYXJnZXQqIHRhcmdl
dCkKIHsKICAgICBBU1NFUlRfQVJHKHRhcmdldCwgdGFyZ2V0KTsKQEAgLTIzMCw3ICsxNDQsNyBA
QCB2b2lkIFJlbW90ZUluc3BlY3Rvcjo6dXBkYXRlQXV0b21hdGljSW5zcGVjdGlvbkNhbmRpZGF0
ZShSZW1vdGVJbnNwZWN0aW9uVGFyZ2V0KgogI2Vsc2UKICAgICAgICAgaW50NjRfdCBkZWJ1Z2dl
clRpbWVvdXREZWxheSA9IDE7CiAjZW5kaWYKLSAgICAgICAgZGlzcGF0Y2hfYWZ0ZXIoZGlzcGF0
Y2hfdGltZShESVNQQVRDSF9USU1FX05PVywgZGVidWdnZXJUaW1lb3V0RGVsYXkgKiBOU0VDX1BF
Ul9TRUMpLCBkaXNwYXRjaF9nZXRfZ2xvYmFsX3F1ZXVlKERJU1BBVENIX1FVRVVFX1BSSU9SSVRZ
X0RFRkFVTFQsIDApLCBeeworICAgICAgICBkaXNwYXRjaF9hZnRlcihkaXNwYXRjaF90aW1lKERJ
U1BBVENIX1RJTUVfTk9XLCBkZWJ1Z2dlclRpbWVvdXREZWxheSAqIE5TRUNfUEVSX1NFQyksIGRp
c3BhdGNoX2dldF9nbG9iYWxfcXVldWUoRElTUEFUQ0hfUVVFVUVfUFJJT1JJVFlfREVGQVVMVCwg
MCksIF4gewogICAgICAgICAgICAgc3RkOjpsb2NrX2d1YXJkPExvY2s+IGxvY2sobV9tdXRleCk7
CiAgICAgICAgICAgICBpZiAobV9hdXRvbWF0aWNJbnNwZWN0aW9uQ2FuZGlkYXRlVGFyZ2V0SWRl
bnRpZmllciA9PSB0YXJnZXRJZGVudGlmaWVyKSB7CiAgICAgICAgICAgICAgICAgTE9HX0VSUk9S
KCJTa2lwcGluZyBBdXRvbWF0aWMgSW5zcGVjdGlvbiBDYW5kaWRhdGUgd2l0aCBwYWdlSWQoJXUp
IGJlY2F1c2Ugd2UgZmFpbGVkIHRvIHJlY2VpdmUgYSByZXNwb25zZSBpbiB0aW1lLiIsIG1fYXV0
b21hdGljSW5zcGVjdGlvbkNhbmRpZGF0ZVRhcmdldElkZW50aWZpZXIpOwpAQCAtMjQ5LDM4ICsx
NjMsNiBAQCB2b2lkIFJlbW90ZUluc3BlY3Rvcjo6dXBkYXRlQXV0b21hdGljSW5zcGVjdGlvbkNh
bmRpZGF0ZShSZW1vdGVJbnNwZWN0aW9uVGFyZ2V0KgogICAgIH0KIH0KIAotdm9pZCBSZW1vdGVJ
bnNwZWN0b3I6OnVwZGF0ZUNsaWVudENhcGFiaWxpdGllcygpCi17Ci0gICAgQVNTRVJUKGlzTWFp
blRocmVhZCgpKTsKLQotICAgIHN0ZDo6bG9ja19ndWFyZDxMb2NrPiBsb2NrKG1fbXV0ZXgpOwot
Ci0gICAgaWYgKCFtX2NsaWVudCkKLSAgICAgICAgbV9jbGllbnRDYXBhYmlsaXRpZXMgPSBzdGQ6
Om51bGxvcHQ7Ci0gICAgZWxzZSB7Ci0gICAgICAgIFJlbW90ZUluc3BlY3Rvcjo6Q2xpZW50OjpD
YXBhYmlsaXRpZXMgdXBkYXRlZENhcGFiaWxpdGllcyA9IHsKLSAgICAgICAgICAgIG1fY2xpZW50
LT5yZW1vdGVBdXRvbWF0aW9uQWxsb3dlZCgpIC8vIHJlbW90ZUF1dG9tYXRpb25BbGxvd2VkCi0g
ICAgICAgIH07Ci0KLSAgICAgICAgbV9jbGllbnRDYXBhYmlsaXRpZXMgPSB1cGRhdGVkQ2FwYWJp
bGl0aWVzOwotICAgIH0KLX0KLQotdm9pZCBSZW1vdGVJbnNwZWN0b3I6OnNldFJlbW90ZUluc3Bl
Y3RvckNsaWVudChSZW1vdGVJbnNwZWN0b3I6OkNsaWVudCogY2xpZW50KQotewotICAgIEFTU0VS
VF9BUkcoY2xpZW50LCBjbGllbnQpOwotICAgIEFTU0VSVCghbV9jbGllbnQpOwotCi0gICAgewot
ICAgICAgICBzdGQ6OmxvY2tfZ3VhcmQ8TG9jaz4gbG9jayhtX211dGV4KTsKLSAgICAgICAgbV9j
bGllbnQgPSBjbGllbnQ7Ci0gICAgfQotCi0gICAgLy8gU2VuZCBhbiB1cGRhdGVkIGxpc3Rpbmcg
dGhhdCBpbmNsdWRlcyB3aGV0aGVyIHRoZSBjbGllbnQgYWxsb3dzIHJlbW90ZSBhdXRvbWF0aW9u
LgotICAgIHVwZGF0ZUNsaWVudENhcGFiaWxpdGllcygpOwotICAgIHB1c2hMaXN0aW5nc1Nvb24o
KTsKLX0KLQogdm9pZCBSZW1vdGVJbnNwZWN0b3I6OnNlbmRBdXRvbWF0aWNJbnNwZWN0aW9uQ2Fu
ZGlkYXRlTWVzc2FnZSgpCiB7CiAgICAgQVNTRVJUKG1fZW5hYmxlZCk7CkBAIC0zMTMsNDAgKzE5
NSw2IEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9yOjpzZW5kTWVzc2FnZVRvUmVtb3RlKHVuc2lnbmVk
IHRhcmdldElkZW50aWZpZXIsIGNvbnN0IFN0cmluCiAgICAgbV9yZWxheUNvbm5lY3Rpb24tPnNl
bmRNZXNzYWdlKFdJUlJhd0RhdGFNZXNzYWdlLCB1c2VySW5mbyk7CiB9CiAKLXZvaWQgUmVtb3Rl
SW5zcGVjdG9yOjpzZXR1cEZhaWxlZCh1bnNpZ25lZCB0YXJnZXRJZGVudGlmaWVyKQotewotICAg
IHN0ZDo6bG9ja19ndWFyZDxMb2NrPiBsb2NrKG1fbXV0ZXgpOwotCi0gICAgbV90YXJnZXRDb25u
ZWN0aW9uTWFwLnJlbW92ZSh0YXJnZXRJZGVudGlmaWVyKTsKLQotICAgIHVwZGF0ZUhhc0FjdGl2
ZURlYnVnU2Vzc2lvbigpOwotCi0gICAgaWYgKHRhcmdldElkZW50aWZpZXIgPT0gbV9hdXRvbWF0
aWNJbnNwZWN0aW9uQ2FuZGlkYXRlVGFyZ2V0SWRlbnRpZmllcikKLSAgICAgICAgbV9hdXRvbWF0
aWNJbnNwZWN0aW9uUGF1c2VkID0gZmFsc2U7Ci0KLSAgICBwdXNoTGlzdGluZ3NTb29uKCk7Ci19
Ci0KLXZvaWQgUmVtb3RlSW5zcGVjdG9yOjpzZXR1cENvbXBsZXRlZCh1bnNpZ25lZCB0YXJnZXRJ
ZGVudGlmaWVyKQotewotICAgIHN0ZDo6bG9ja19ndWFyZDxMb2NrPiBsb2NrKG1fbXV0ZXgpOwot
Ci0gICAgaWYgKHRhcmdldElkZW50aWZpZXIgPT0gbV9hdXRvbWF0aWNJbnNwZWN0aW9uQ2FuZGlk
YXRlVGFyZ2V0SWRlbnRpZmllcikKLSAgICAgICAgbV9hdXRvbWF0aWNJbnNwZWN0aW9uUGF1c2Vk
ID0gZmFsc2U7Ci19Ci0KLWJvb2wgUmVtb3RlSW5zcGVjdG9yOjp3YWl0aW5nRm9yQXV0b21hdGlj
SW5zcGVjdGlvbih1bnNpZ25lZCkKLXsKLSAgICAvLyBXZSBkb24ndCB0YWtlIHRoZSBsb2NrIHRv
IGNoZWNrIHRoaXMgYmVjYXVzZSB3ZSBhc3N1bWUgaXQgd2lsbCBiZSBjaGVja2VkIHJlcGVhdGVk
bHkuCi0gICAgcmV0dXJuIG1fYXV0b21hdGljSW5zcGVjdGlvblBhdXNlZDsKLX0KLQotdm9pZCBS
ZW1vdGVJbnNwZWN0b3I6OmNsaWVudENhcGFiaWxpdGllc0RpZENoYW5nZSgpCi17Ci0gICAgdXBk
YXRlQ2xpZW50Q2FwYWJpbGl0aWVzKCk7Ci0gICAgcHVzaExpc3RpbmdzU29vbigpOwotfQotCiB2
b2lkIFJlbW90ZUluc3BlY3Rvcjo6c3RhcnQoKQogewogICAgIHN0ZDo6bG9ja19ndWFyZDxMb2Nr
PiBsb2NrKG1fbXV0ZXgpOwpAQCAtMzU4LDcgKzIwNiw3IEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9y
OjpzdGFydCgpCiAKICAgICAvLyBMb2FkIHRoZSBpbml0aWFsIGF1dG9tYXRpYyBpbnNwZWN0aW9u
IHN0YXRlIHdoZW4gZmlyc3Qgc3RhcnRlZCwgc28gd2Uga25vdyBpdCBiZWZvcmUgd2UgaGF2ZSBl
dmVuIGNvbm5lY3RlZCB0byB3ZWJpbnNwZWN0b3JkLgogICAgIHN0YXRpYyBkaXNwYXRjaF9vbmNl
X3Qgb25jZTsKLSAgICBkaXNwYXRjaF9vbmNlKCZvbmNlLCBeeworICAgIGRpc3BhdGNoX29uY2Uo
Jm9uY2UsIF4gewogICAgICAgICBtX2F1dG9tYXRpY0luc3BlY3Rpb25FbmFibGVkID0gZ2xvYmFs
QXV0b21hdGljSW5zcGVjdGlvblN0YXRlKCk7CiAgICAgfSk7CiAKQEAgLTM2OSwxMyArMjE3LDYg
QEAgdm9pZCBSZW1vdGVJbnNwZWN0b3I6OnN0YXJ0KCkKICAgICBub3RpZnlfcG9zdChXSVJTZXJ2
aWNlQXZhaWxhYmlsaXR5Q2hlY2tOb3RpZmljYXRpb24pOwogfQogCi12b2lkIFJlbW90ZUluc3Bl
Y3Rvcjo6c3RvcCgpCi17Ci0gICAgc3RkOjpsb2NrX2d1YXJkPExvY2s+IGxvY2sobV9tdXRleCk7
Ci0KLSAgICBzdG9wSW50ZXJuYWwoU3RvcFNvdXJjZTo6QVBJKTsKLX0KLQogdm9pZCBSZW1vdGVJ
bnNwZWN0b3I6OnN0b3BJbnRlcm5hbChTdG9wU291cmNlIHNvdXJjZSkKIHsKICAgICBpZiAoIW1f
ZW5hYmxlZCkKQEAgLTUxMiwxNyArMzUzLDYgQEAgdm9pZCBSZW1vdGVJbnNwZWN0b3I6OnhwY0Nv
bm5lY3Rpb25VbmhhbmRsZWRNZXNzYWdlKFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24KIAog
I3ByYWdtYSBtYXJrIC0gTGlzdGluZ3MKIAotUmV0YWluUHRyPE5TRGljdGlvbmFyeT4gUmVtb3Rl
SW5zcGVjdG9yOjpsaXN0aW5nRm9yVGFyZ2V0KGNvbnN0IFJlbW90ZUNvbnRyb2xsYWJsZVRhcmdl
dCYgdGFyZ2V0KSBjb25zdAotewotICAgIGlmIChpczxSZW1vdGVJbnNwZWN0aW9uVGFyZ2V0Pih0
YXJnZXQpKQotICAgICAgICByZXR1cm4gbGlzdGluZ0Zvckluc3BlY3Rpb25UYXJnZXQoZG93bmNh
c3Q8UmVtb3RlSW5zcGVjdGlvblRhcmdldD4odGFyZ2V0KSk7Ci0gICAgaWYgKGlzPFJlbW90ZUF1
dG9tYXRpb25UYXJnZXQ+KHRhcmdldCkpCi0gICAgICAgIHJldHVybiBsaXN0aW5nRm9yQXV0b21h
dGlvblRhcmdldChkb3duY2FzdDxSZW1vdGVBdXRvbWF0aW9uVGFyZ2V0Pih0YXJnZXQpKTsKLQot
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBuaWw7Ci19Ci0KIFJldGFpblB0
cjxOU0RpY3Rpb25hcnk+IFJlbW90ZUluc3BlY3Rvcjo6bGlzdGluZ0Zvckluc3BlY3Rpb25UYXJn
ZXQoY29uc3QgUmVtb3RlSW5zcGVjdGlvblRhcmdldCYgdGFyZ2V0KSBjb25zdAogewogICAgIC8v
IE11c3QgY29sbGVjdCB0YXJnZXQgaW5mb3JtYXRpb24gb24gdGhlIFdlYlRocmVhZCwgTWFpbiwg
b3IgV29ya2VyIHRocmVhZCBzaW5jZSBSZW1vdGVUYXJnZXRzIGFyZQpAQCAtNjA4LDI4ICs0Mzgs
MTMgQEAgdm9pZCBSZW1vdGVJbnNwZWN0b3I6OnB1c2hMaXN0aW5nc1Nvb24oKQogICAgICAgICBy
ZXR1cm47CiAKICAgICBtX3B1c2hTY2hlZHVsZWQgPSB0cnVlOwotICAgIGRpc3BhdGNoX2FmdGVy
KGRpc3BhdGNoX3RpbWUoRElTUEFUQ0hfVElNRV9OT1csIDAuMiAqIE5TRUNfUEVSX1NFQyksIGRp
c3BhdGNoX2dldF9nbG9iYWxfcXVldWUoRElTUEFUQ0hfUVVFVUVfUFJJT1JJVFlfREVGQVVMVCwg
MCksIF57CisgICAgZGlzcGF0Y2hfYWZ0ZXIoZGlzcGF0Y2hfdGltZShESVNQQVRDSF9USU1FX05P
VywgMC4yICogTlNFQ19QRVJfU0VDKSwgZGlzcGF0Y2hfZ2V0X2dsb2JhbF9xdWV1ZShESVNQQVRD
SF9RVUVVRV9QUklPUklUWV9ERUZBVUxULCAwKSwgXiB7CiAgICAgICAgIHN0ZDo6bG9ja19ndWFy
ZDxMb2NrPiBsb2NrKG1fbXV0ZXgpOwogICAgICAgICBpZiAobV9wdXNoU2NoZWR1bGVkKQogICAg
ICAgICAgICAgcHVzaExpc3RpbmdzTm93KCk7CiAgICAgfSk7CiB9CiAKLSNwcmFnbWEgbWFyayAt
IEFjdGl2ZSBEZWJ1Z2dlciBTZXNzaW9ucwotCi12b2lkIFJlbW90ZUluc3BlY3Rvcjo6dXBkYXRl
SGFzQWN0aXZlRGVidWdTZXNzaW9uKCkKLXsKLSAgICBib29sIGhhc0FjdGl2ZURlYnVnZ2VyU2Vz
c2lvbiA9ICFtX3RhcmdldENvbm5lY3Rpb25NYXAuaXNFbXB0eSgpOwotICAgIGlmIChoYXNBY3Rp
dmVEZWJ1Z2dlclNlc3Npb24gPT0gbV9oYXNBY3RpdmVEZWJ1Z1Nlc3Npb24pCi0gICAgICAgIHJl
dHVybjsKLQotICAgIG1faGFzQWN0aXZlRGVidWdTZXNzaW9uID0gaGFzQWN0aXZlRGVidWdnZXJT
ZXNzaW9uOwotCi0gICAgLy8gRklYTUU6IEV4cG9zZSBzb21lIHdheSB0byBhY2Nlc3MgdGhpcyBz
dGF0ZSBpbiBhbiBlbWJlZGRlci4KLSAgICAvLyBMZWdhY3kgaU9TIFdlYktpdCAxIGhhZCBhIG5v
dGlmaWNhdGlvbi4gVGhpcyB3aWxsIG5lZWQgdG8gYmUgc21hcnRlciB3aXRoIFdlYktpdDIuCi19
Ci0KLQogI3ByYWdtYSBtYXJrIC0gUmVjZWl2ZWQgWFBDIE1lc3NhZ2VzCiAKIHZvaWQgUmVtb3Rl
SW5zcGVjdG9yOjpyZWNlaXZlZFNldHVwTWVzc2FnZShOU0RpY3Rpb25hcnkgKnVzZXJJbmZvKQpA
QCAtNzMzLDcgKzU0OCw3IEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9yOjpyZWNlaXZlZEluZGljYXRl
TWVzc2FnZShOU0RpY3Rpb25hcnkgKnVzZXJJbmZvKQogCiAgICAgQk9PTCBpbmRpY2F0ZUVuYWJs
ZWQgPSBbW3VzZXJJbmZvIG9iamVjdEZvcktleTpXSVJJbmRpY2F0ZUVuYWJsZWRLZXldIGJvb2xW
YWx1ZV07CiAKLSAgICBjYWxsT25XZWJUaHJlYWRPckRpc3BhdGNoQXN5bmNPbk1haW5UaHJlYWQo
XnsKKyAgICBjYWxsT25XZWJUaHJlYWRPckRpc3BhdGNoQXN5bmNPbk1haW5UaHJlYWQoXiB7CiAg
ICAgICAgIFJlbW90ZUNvbnRyb2xsYWJsZVRhcmdldCogdGFyZ2V0ID0gbnVsbHB0cjsKICAgICAg
ICAgewogICAgICAgICAgICAgc3RkOjpsb2NrX2d1YXJkPExvY2s+IGxvY2sobV9tdXRleCk7CkBA
IC03NTksNyArNTc0LDcgQEAgdm9pZCBSZW1vdGVJbnNwZWN0b3I6OnJlY2VpdmVkUHJveHlBcHBs
aWNhdGlvblNldHVwTWVzc2FnZShOU0RpY3Rpb25hcnkgKikKICAgICAgICAgLy8gV2UgYXJlIGEg
cHJveHkgYXBwbGljYXRpb24gd2l0aG91dCBwYXJlbnQgcHJvY2VzcyBpbmZvcm1hdGlvbi4KICAg
ICAgICAgLy8gV2FpdCBhIGJpdCBmb3IgdGhlIGluZm9ybWF0aW9uLCBidXQgZ2l2ZSB1cCBhZnRl
ciBhIHNlY29uZC4KICAgICAgICAgbV9zaG91bGRTZW5kUGFyZW50UHJvY2Vzc0luZm9ybWF0aW9u
ID0gdHJ1ZTsKLSAgICAgICAgZGlzcGF0Y2hfYWZ0ZXIoZGlzcGF0Y2hfdGltZShESVNQQVRDSF9U
SU1FX05PVywgMSAqIE5TRUNfUEVSX1NFQyksIGRpc3BhdGNoX2dldF9nbG9iYWxfcXVldWUoRElT
UEFUQ0hfUVVFVUVfUFJJT1JJVFlfREVGQVVMVCwgMCksIF57CisgICAgICAgIGRpc3BhdGNoX2Fm
dGVyKGRpc3BhdGNoX3RpbWUoRElTUEFUQ0hfVElNRV9OT1csIDEgKiBOU0VDX1BFUl9TRUMpLCBk
aXNwYXRjaF9nZXRfZ2xvYmFsX3F1ZXVlKERJU1BBVENIX1FVRVVFX1BSSU9SSVRZX0RFRkFVTFQs
IDApLCBeIHsKICAgICAgICAgICAgIHN0ZDo6bG9ja19ndWFyZDxMb2NrPiBsb2NrKG1fbXV0ZXgp
OwogICAgICAgICAgICAgaWYgKG1fc2hvdWxkU2VuZFBhcmVudFByb2Nlc3NJbmZvcm1hdGlvbikK
ICAgICAgICAgICAgICAgICBzdG9wSW50ZXJuYWwoU3RvcFNvdXJjZTo6WFBDTWVzc2FnZSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJ
bnNwZWN0b3JYUENDb25uZWN0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L3JlbW90ZS9jb2NvYS9SZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uLmgKc2ltaWxhcml0eSBp
bmRleCAxMDAlCnJlbmFtZSBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVt
b3RlL1JlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24uaApyZW5hbWUgdG8gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvY29jb2EvUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVj
dGlvbi5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90
ZS9SZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uLm1tIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9yZW1vdGUvY29jb2EvUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbi5tbQpz
aW1pbGFyaXR5IGluZGV4IDk5JQpyZW5hbWUgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uLm1tCnJlbmFtZSB0byBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9jb2NvYS9SZW1vdGVJbnNwZWN0
b3JYUENDb25uZWN0aW9uLm1tCmluZGV4IDc2NjA5OTRjYzI5Li5hOTAyZDZkZmM1MCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVj
dG9yWFBDQ29ubmVjdGlvbi5tbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L3JlbW90ZS9jb2NvYS9SZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uLm1tCkBAIC0xMDgsNyAr
MTA4LDcgQEAgdm9pZCBSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uOjpjbG9zZUZyb21NZXNz
YWdlKCkKICAgICBtX2Nsb3NlZCA9IHRydWU7CiAgICAgbV9jbGllbnQgPSBudWxscHRyOwogCi0g
ICAgZGlzcGF0Y2hfYXN5bmMobV9xdWV1ZSwgXnsKKyAgICBkaXNwYXRjaF9hc3luYyhtX3F1ZXVl
LCBeIHsKICAgICAgICAgc3RkOjpsb2NrX2d1YXJkPExvY2s+IGxvY2sobV9tdXRleCk7CiAgICAg
ICAgIC8vIFRoaXMgd2lsbCB0cmlnZ2VyIG9uZSBsYXN0IFhQQ19FUlJPUl9DT05ORUNUSU9OX0lO
VkFMSUQgZXZlbnQgb24gdGhlIHF1ZXVlIGFuZCBkZXJlZiB1cy4KICAgICAgICAgY2xvc2VPblF1
ZXVlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3Mu
Y3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAppbmRleCBjMTI4
MDE4MzAzNS4uNGRhMzQ3NTJhMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9j
ZXNzLmNwcApAQCAtMzc3LDcgKzM3Nyw3IEBAIHZvaWQgV2ViUHJvY2Vzczo6aW5pdGlhbGl6ZVdl
YlByb2Nlc3MoV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCiAgICAg
c2V0RW5hYmxlZFNlcnZpY2VzKHBhcmFtZXRlcnMuaGFzSW1hZ2VTZXJ2aWNlcywgcGFyYW1ldGVy
cy5oYXNTZWxlY3Rpb25TZXJ2aWNlcywgcGFyYW1ldGVycy5oYXNSaWNoQ29udGVudFNlcnZpY2Vz
KTsKICNlbmRpZgogCi0jaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCisjaWYgRU5BQkxFKFJF
TU9URV9JTlNQRUNUT1IpICYmIFBMQVRGT1JNKENPQ09BKQogICAgIGF1ZGl0X3Rva2VuX3QgYXVk
aXRUb2tlbjsKICAgICBpZiAocGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+Z2V0QXVkaXRUb2tl
bihhdWRpdFRva2VuKSkgewogICAgICAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBhdWRpdERhdGEg
PSBhZG9wdENGKENGRGF0YUNyZWF0ZShudWxscHRyLCAoY29uc3QgVUludDgqKSZhdWRpdFRva2Vu
LCBzaXplb2YoYXVkaXRUb2tlbikpKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>298472</attachid>
            <date>2017-01-10 09:27:39 -0800</date>
            <delta_ts>2017-01-10 09:33:41 -0800</delta_ts>
            <desc>WIP: Try to fix mac builds</desc>
            <filename>wk-inspector-patch.diff</filename>
            <type>text/plain</type>
            <size>50222</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNSZW1vdGVJbnNwZWN0b3Iu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1JlbW90ZUluc3BlY3Rvci5jcHAKaW5k
ZXggZmFlYmM1ZGUzZTEuLjNiZTYxZDA5MjcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL0pTUmVtb3RlSW5zcGVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL0pTUmVtb3RlSW5zcGVjdG9yLmNwcApAQCAtNTAsOSArNTAsOSBAQCB2b2lkIEpTUmVt
b3RlSW5zcGVjdG9yU3RhcnQodm9pZCkKICNlbmRpZgogfQogCi12b2lkIEpTUmVtb3RlSW5zcGVj
dG9yU2V0UGFyZW50UHJvY2Vzc0luZm9ybWF0aW9uKHBpZF90IHBpZCwgY29uc3QgVUludDgqIGF1
ZGl0RGF0YSwgc2l6ZV90IGF1ZGl0TGVuZ3RoKQordm9pZCBKU1JlbW90ZUluc3BlY3RvclNldFBh
cmVudFByb2Nlc3NJbmZvcm1hdGlvbihwaWRfdCBwaWQsIGNvbnN0IHVpbnQ4X3QqIGF1ZGl0RGF0
YSwgc2l6ZV90IGF1ZGl0TGVuZ3RoKQogewotI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQor
I2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKSAmJiBQTEFURk9STShDT0NPQSkKICAgICBSZXRh
aW5QdHI8Q0ZEYXRhUmVmPiBhdWRpdERhdGFSZWYgPSBhZG9wdENGKENGRGF0YUNyZWF0ZShrQ0ZB
bGxvY2F0b3JEZWZhdWx0LCBhdWRpdERhdGEsIGF1ZGl0TGVuZ3RoKSk7CiAgICAgUmVtb3RlSW5z
cGVjdG9yOjpzaW5nbGV0b24oKS5zZXRQYXJlbnRQcm9jZXNzSW5mb3JtYXRpb24ocGlkLCBhdWRp
dERhdGFSZWYpOwogI2Vsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMTdlY2Iz
MWU5ZmIuLjQyMzkxYzczMGY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTQ0
OCw2ICsxNDQ4LDExIEBACiAJCTc5RUUwQzAwMUI0QUZCODUwMDAzODVDOSAvKiBWYXJpYWJsZUVu
dmlyb25tZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA3OUVFMEJGRTFCNEFGQjg1MDAwMzg1QzkgLyogVmFyaWFibGVFbnZpcm9ubWVudC5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTc5RjhGQzFFMUI5
RkVEMEYwMENBNjZBQiAvKiBERkdNYXhpbWFsRmx1c2hJbnNlcnRpb25QaGFzZS5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3OUY4RkMxQzFCOUZFRDBG
MDBDQTY2QUIgLyogREZHTWF4aW1hbEZsdXNoSW5zZXJ0aW9uUGhhc2UuY3BwICovOyB9OwogCQk3
OUY4RkMxRjFCOUZFRDBGMDBDQTY2QUIgLyogREZHTWF4aW1hbEZsdXNoSW5zZXJ0aW9uUGhhc2Uu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc5RjhGQzFE
MUI5RkVEMEYwMENBNjZBQiAvKiBERkdNYXhpbWFsRmx1c2hJbnNlcnRpb25QaGFzZS5oICovOyB9
OworCQk3QUNEREVENDFFMjUyQjREMDA5N0FGRUIgLyogUmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0
Q29jb2EubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3
QUNEREVEMDFFMjUyQjJCMDA5N0FGRUIgLyogUmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0Q29jb2Eu
bW0gKi87IH07CisJCTdBQ0RERUQ1MUUyNTJCNUUwMDk3QUZFQiAvKiBSZW1vdGVJbnNwZWN0b3JD
b2NvYS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdB
Q0RERUQxMUUyNTJCMkIwMDk3QUZFQiAvKiBSZW1vdGVJbnNwZWN0b3JDb2NvYS5tbSAqLzsgfTsK
KwkJN0FDRERFRDcxRTI1MkI2ODAwOTdBRkVCIC8qIFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rp
b24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBQ0RE
RUQyMUUyNTJCMkIwMDk3QUZFQiAvKiBSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsKKwkJN0FDRERFRDgxRTI1
MkI2RTAwOTdBRkVCIC8qIFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24ubW0gaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QUNEREVEMzFFMjUyQjJCMDA5
N0FGRUIgLyogUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbi5tbSAqLzsgfTsKKwkJN0FDRERF
RDkxRTI1MkI4MzAwOTdBRkVCIC8qIFJlbW90ZUluc3BlY3Rvci5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QUNEREVENjFFMjUyQjVGMDA5N0FGRUIg
LyogUmVtb3RlSW5zcGVjdG9yLmNwcCAqLzsgfTsKIAkJN0JDNTQ3RDMxQjY5NTlBMTAwOTU5QjU4
IC8qIFdhc21Gb3JtYXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDdCQzU0N0QyMUI2OTU5OUIwMDk1OUI1OCAvKiBXYXNtRm9ybWF0LmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0MwMDhDREExODcxMjRC
QjAwOTU1QzI0IC8qIEpTUHJvbWlzZURlZmVycmVkLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDMDA4Q0Q4MTg3MTI0QkIwMDk1NUMyNCAvKiBKU1By
b21pc2VEZWZlcnJlZC5jcHAgKi87IH07CiAJCTdDMDA4Q0RCMTg3MTI0QkIwMDk1NUMyNCAvKiBK
U1Byb21pc2VEZWZlcnJlZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gN0MwMDhDRDkxODcxMjRCQjAwOTU1QzI0IC8qIEpTUHJvbWlzZURlZmVycmVkLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTE3NTIs
MTIgKzE3NTcsOCBAQAogCQlBNUFCNDlERDFCRUM4MDg2MDA3MDIwRkIgLyogUGVyR2xvYmFsT2Jq
ZWN0V3JhcHBlcldvcmxkLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBNUFCNDlEQjFCRUM4MDc5MDA3MDIwRkIgLyogUGVyR2xvYmFsT2JqZWN0V3JhcHBl
cldvcmxkLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJQTVCNkE3NEQxOEM2REJBNjAwRjExRTkxIC8qIENvbnNvbGVDbGllbnQuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTVCNkE3NEMxOEM2REJBNjAw
RjExRTkxIC8qIENvbnNvbGVDbGllbnQuY3BwICovOyB9OwogCQlBNUJBMTVFODE4MjM0MEIzMDBB
ODJFNjkgLyogUmVtb3RlSW5zcGVjdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBNUJBMTVFMTE4MjM0MEIzMDBBODJFNjkgLyogUmVtb3RlSW5zcGVj
dG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJ
QTVCQTE1RTkxODIzNDBCMzAwQTgyRTY5IC8qIFJlbW90ZUluc3BlY3Rvci5tbSBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1QkExNUUyMTgyMzQwQjMwMEE4
MkU2OSAvKiBSZW1vdGVJbnNwZWN0b3IubW0gKi87IH07CiAJCUE1QkExNUVBMTgyMzQwQjQwMEE4
MkU2OSAvKiBSZW1vdGVJbnNwZWN0b3JDb25zdGFudHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1QkExNUUzMTgyMzQwQjMwMEE4MkU2OSAvKiBSZW1v
dGVJbnNwZWN0b3JDb25zdGFudHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQlBNUJBMTVFQjE4MjM0MEI0MDBBODJFNjkgLyogUmVtb3RlQ29ubmVj
dGlvblRvVGFyZ2V0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBBNUJBMTVFNDE4MjM0MEIzMDBBODJFNjkgLyogUmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0
LmggKi87IH07Ci0JCUE1QkExNUVDMTgyMzQwQjQwMEE4MkU2OSAvKiBSZW1vdGVDb25uZWN0aW9u
VG9UYXJnZXQubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBBNUJBMTVFNTE4MjM0MEIzMDBBODJFNjkgLyogUmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0Lm1t
ICovOyB9OwotCQlBNUJBMTVFRDE4MjM0MEI0MDBBODJFNjkgLyogUmVtb3RlSW5zcGVjdG9yWFBD
Q29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQTVCQTE1RTYxODIzNDBCMzAwQTgyRTY5IC8qIFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rp
b24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQlB
NUJBMTVFRTE4MjM0MEI0MDBBODJFNjkgLyogUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbi5t
bSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1QkExNUU3
MTgyMzQwQjMwMEE4MkU2OSAvKiBSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uLm1tICovOyB9
OwogCQlBNUJBMTVGMDE4MjM0NUFGMDBBODJFNjkgLyogUmVtb3RlSW5zcGVjdGlvblRhcmdldC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTVCQTE1RUYx
ODIzNDVBRjAwQTgyRTY5IC8qIFJlbW90ZUluc3BlY3Rpb25UYXJnZXQuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBNUMzQTFBNTE4QzA0OTAyMDBD
OTU5M0EgLyogSlNHbG9iYWxPYmplY3RDb25zb2xlQ2xpZW50LmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1QzNBMUEzMThDMDQ5MDIwMEM5NTkzQSAv
KiBKU0dsb2JhbE9iamVjdENvbnNvbGVDbGllbnQuY3BwICovOyB9OwogCQlBNUMzQTFBNjE4QzA0
OTAyMDBDOTU5M0EgLyogSlNHbG9iYWxPYmplY3RDb25zb2xlQ2xpZW50LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNUMzQTFBNDE4QzA0OTAyMDBDOTU5
M0EgLyogSlNHbG9iYWxPYmplY3RDb25zb2xlQ2xpZW50LmggKi87IH07CkBAIC0zODg4LDYgKzM4
ODksMTEgQEAKIAkJNzlFRTBCRkUxQjRBRkI4NTAwMDM4NUM5IC8qIFZhcmlhYmxlRW52aXJvbm1l
bnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVmFyaWFibGVFbnZpcm9ubWVu
dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3OUY4RkMxQzFCOUZFRDBGMDBDQTY2
QUIgLyogREZHTWF4aW1hbEZsdXNoSW5zZXJ0aW9uUGhhc2UuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBuYW1lID0gREZHTWF4aW1hbEZsdXNoSW5zZXJ0aW9uUGhhc2UuY3BwOyBw
YXRoID0gZGZnL0RGR01heGltYWxGbHVzaEluc2VydGlvblBoYXNlLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNzlGOEZDMUQxQjlGRUQwRjAwQ0E2NkFCIC8qIERGR01heGltYWxG
bHVzaEluc2VydGlvblBoYXNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERG
R01heGltYWxGbHVzaEluc2VydGlvblBoYXNlLmg7IHBhdGggPSBkZmcvREZHTWF4aW1hbEZsdXNo
SW5zZXJ0aW9uUGhhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0FDRERFRDAx
RTI1MkIyQjAwOTdBRkVCIC8qIFJlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldENvY29hLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gUmVtb3RlQ29ubmVjdGlvblRvVGFy
Z2V0Q29jb2EubW07IHBhdGggPSBjb2NvYS9SZW1vdGVDb25uZWN0aW9uVG9UYXJnZXRDb2NvYS5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0FDRERFRDExRTI1MkIyQjAwOTdBRkVC
IC8qIFJlbW90ZUluc3BlY3RvckNvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBuYW1lID0gUmVtb3RlSW5zcGVjdG9yQ29jb2EubW07IHBhdGggPSBjb2NvYS9SZW1vdGVJ
bnNwZWN0b3JDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0FDRERFRDIx
RTI1MkIyQjAwOTdBRkVCIC8qIFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24uaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbi5o
OyBwYXRoID0gY29jb2EvUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbi5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk3QUNEREVEMzFFMjUyQjJCMDA5N0FGRUIgLyogUmVtb3RlSW5z
cGVjdG9yWFBDQ29ubmVjdGlvbi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
bmFtZSA9IFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24ubW07IHBhdGggPSBjb2NvYS9SZW1v
dGVJbnNwZWN0b3JYUENDb25uZWN0aW9uLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk3QUNEREVENjFFMjUyQjVGMDA5N0FGRUIgLyogUmVtb3RlSW5zcGVjdG9yLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZUluc3BlY3Rvci5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCQzU0N0QyMUI2OTU5OUIwMDk1OUI1OCAvKiBXYXNt
Rm9ybWF0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdhc21Gb3JtYXQuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0MwMDhDRDgxODcxMjRCQjAwOTU1QzI0IC8q
IEpTUHJvbWlzZURlZmVycmVkLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEpTUHJvbWlzZURlZmVycmVkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
N0MwMDhDRDkxODcxMjRCQjAwOTU1QzI0IC8qIEpTUHJvbWlzZURlZmVycmVkLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTUHJvbWlzZURlZmVycmVkLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC00MjMzLDEyICs0MjM5LDggQEAKIAkJQTVBQjQ5REIxQkVDODA3
OTAwNzAyMEZCIC8qIFBlckdsb2JhbE9iamVjdFdyYXBwZXJXb3JsZC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBQZXJHbG9iYWxPYmplY3RXcmFwcGVyV29ybGQuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTVCNkE3NEMxOEM2REJBNjAwRjExRTkxIC8qIENvbnNv
bGVDbGllbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ29uc29s
ZUNsaWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1QkExNUUxMTgyMzQw
QjMwMEE4MkU2OSAvKiBSZW1vdGVJbnNwZWN0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gUmVtb3RlSW5zcGVjdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CUE1QkExNUUyMTgyMzQwQjMwMEE4MkU2OSAvKiBSZW1vdGVJbnNwZWN0b3IubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBSZW1vdGVJbnNwZWN0b3IubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1QkExNUUzMTgyMzQwQjMwMEE4MkU2OSAvKiBSZW1v
dGVJbnNwZWN0b3JDb25zdGFudHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
UmVtb3RlSW5zcGVjdG9yQ29uc3RhbnRzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUE1QkExNUU0MTgyMzQwQjMwMEE4MkU2OSAvKiBSZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUE1QkExNUU1MTgyMzQwQjMwMEE4MkU2
OSAvKiBSZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IHBhdGggPSBSZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQubW07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCUE1QkExNUU2MTgyMzQwQjMwMEE4MkU2OSAvKiBSZW1vdGVJbnNw
ZWN0b3JYUENDb25uZWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJl
bW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJQTVCQTE1RTcxODIzNDBCMzAwQTgyRTY5IC8qIFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rp
b24ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBSZW1vdGVJbnNw
ZWN0b3JYUENDb25uZWN0aW9uLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNUJB
MTVFRjE4MjM0NUFGMDBBODJFNjkgLyogUmVtb3RlSW5zcGVjdGlvblRhcmdldC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVJbnNwZWN0aW9uVGFyZ2V0Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1QzNBMUEzMThDMDQ5MDIwMEM5NTkzQSAvKiBKU0ds
b2JhbE9iamVjdENvbnNvbGVDbGllbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gSlNHbG9iYWxPYmplY3RDb25zb2xlQ2xpZW50LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQTVDM0ExQTQxOEMwNDkwMjAwQzk1OTNBIC8qIEpTR2xvYmFsT2JqZWN0
Q29uc29sZUNsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0dsb2Jh
bE9iamVjdENvbnNvbGVDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTYw
MjMsNiArNjAyNSwxNyBAQAogCQkJcGF0aCA9IGRpc2Fzc2VtYmxlci9BUk12NzsKIAkJCXNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7CiAJCX07CisJCTdBQ0RERUNGMUUyNTJBQ0EwMDk3QUZFQiAvKiBj
b2NvYSAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJN0FD
RERFRDAxRTI1MkIyQjAwOTdBRkVCIC8qIFJlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldENvY29hLm1t
ICovLAorCQkJCTdBQ0RERUQxMUUyNTJCMkIwMDk3QUZFQiAvKiBSZW1vdGVJbnNwZWN0b3JDb2Nv
YS5tbSAqLywKKwkJCQk3QUNEREVEMjFFMjUyQjJCMDA5N0FGRUIgLyogUmVtb3RlSW5zcGVjdG9y
WFBDQ29ubmVjdGlvbi5oICovLAorCQkJCTdBQ0RERUQzMUUyNTJCMkIwMDk3QUZFQiAvKiBSZW1v
dGVJbnNwZWN0b3JYUENDb25uZWN0aW9uLm1tICovLAorCQkJKTsKKwkJCW5hbWUgPSBjb2NvYTsK
KwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CiAJCTdCOThEMTMzMUI2MENEMUUwMDIz
QjFBNCAvKiB3YXNtICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgK
QEAgLTc1MzcsMTkgKzc1NTAsMTcgQEAKIAkJQTVCQTE1RTAxODIzNDA5RDAwQTgyRTY5IC8qIHJl
bW90ZSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJN0FD
RERFRDYxRTI1MkI1RjAwOTdBRkVCIC8qIFJlbW90ZUluc3BlY3Rvci5jcHAgKi8sCisJCQkJN0FD
RERFQ0YxRTI1MkFDQTAwOTdBRkVCIC8qIGNvY29hICovLAogCQkJCTk5MkFCQ0Y1MUJFQTk0Q0Ew
MDY0MDNBMCAvKiBSZW1vdGVBdXRvbWF0aW9uVGFyZ2V0LmNwcCAqLywKIAkJCQk5OTJBQkNGNjFC
RUE5NENBMDA2NDAzQTAgLyogUmVtb3RlQXV0b21hdGlvblRhcmdldC5oICovLAogCQkJCUE1QkEx
NUU0MTgyMzQwQjMwMEE4MkU2OSAvKiBSZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQuaCAqLywKLQkJ
CQlBNUJBMTVFNTE4MjM0MEIzMDBBODJFNjkgLyogUmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0Lm1t
ICovLAogCQkJCTk5OEVENjcyMUJFRDY1OUEwMEREODAxNyAvKiBSZW1vdGVDb250cm9sbGFibGVU
YXJnZXQuY3BwICovLAogCQkJCTk5OEVENjczMUJFRDY1OUEwMEREODAxNyAvKiBSZW1vdGVDb250
cm9sbGFibGVUYXJnZXQuaCAqLywKIAkJCQlBNTk0NTU4RTE4MjQ1RURFMDBDQzM4NDMgLyogUmVt
b3RlSW5zcGVjdGlvblRhcmdldC5jcHAgKi8sCiAJCQkJQTVCQTE1RUYxODIzNDVBRjAwQTgyRTY5
IC8qIFJlbW90ZUluc3BlY3Rpb25UYXJnZXQuaCAqLywKIAkJCQlBNUJBMTVFMTE4MjM0MEIzMDBB
ODJFNjkgLyogUmVtb3RlSW5zcGVjdG9yLmggKi8sCi0JCQkJQTVCQTE1RTIxODIzNDBCMzAwQTgy
RTY5IC8qIFJlbW90ZUluc3BlY3Rvci5tbSAqLywKIAkJCQlBNUJBMTVFMzE4MjM0MEIzMDBBODJF
NjkgLyogUmVtb3RlSW5zcGVjdG9yQ29uc3RhbnRzLmggKi8sCi0JCQkJQTVCQTE1RTYxODIzNDBC
MzAwQTgyRTY5IC8qIFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24uaCAqLywKLQkJCQlBNUJB
MTVFNzE4MjM0MEIzMDBBODJFNjkgLyogUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbi5tbSAq
LywKIAkJCSk7CiAJCQlwYXRoID0gcmVtb3RlOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsK
QEAgLTg4NjAsNyArODg3MSw2IEBACiAJCQkJQTVCQTE1RjAxODIzNDVBRjAwQTgyRTY5IC8qIFJl
bW90ZUluc3BlY3Rpb25UYXJnZXQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1QkExNUU4MTgyMzQw
QjMwMEE4MkU2OSAvKiBSZW1vdGVJbnNwZWN0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1QkEx
NUVBMTgyMzQwQjQwMEE4MkU2OSAvKiBSZW1vdGVJbnNwZWN0b3JDb25zdGFudHMuaCBpbiBIZWFk
ZXJzICovLAotCQkJCUE1QkExNUVEMTgyMzQwQjQwMEE4MkU2OSAvKiBSZW1vdGVJbnNwZWN0b3JY
UENDb25uZWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjI0RTU1MTE3RUUyNzQ5MDBBQkIy
MTcgLyogUmVwYXRjaC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODY5RUJDQjcwRThDNkQ0QTAwODcy
MkNDIC8qIFJlc3VsdFR5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTcwQjBBOUQxMUE5QjY2NDYw
MDAxMzA2QSAvKiBSdW50aW1lRmxhZ3MuaCBpbiBIZWFkZXJzICovLApAQCAtODk3NCw2ICs4OTg0
LDcgQEAKIAkJCQkwRkY0Mjc0OTE1OEVCRTkxMDA0Q0I5RkYgLyogdWRpczg2X3R5cGVzLmggaW4g
SGVhZGVycyAqLywKIAkJCQlBN0U1QUIzOTE3OTlFNEIyMDBEMjgzM0QgLyogVURpczg2RGlzYXNz
ZW1ibGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlBN0E4QUY0MTE3QURCNUYzMDA1QUIxNzQgLyog
VWludDE2QXJyYXkuaCBpbiBIZWFkZXJzICovLAorCQkJCTdBQ0RERUQ3MUUyNTJCNjgwMDk3QUZF
QiAvKiBSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk4
NjY3MzlEMzEzQkZERTcxMDAyM0Q4N0MgLyogVWludDE2V2l0aEZyYWN0aW9uLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlBN0E4QUY0MjE3QURCNUYzMDA1QUIxNzQgLyogVWludDMyQXJyYXkuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUE3QThBRjNGMTdBREI1RjMwMDVBQjE3NCAvKiBVaW50OEFycmF5Lmgg
aW4gSGVhZGVycyAqLywKQEAgLTk4NjUsNiArOTg3Niw3IEBACiAJCQkJMEZDMDk3NzIxNDY5M0FG
OTAwQ0YyNDQyIC8qIERGR09TUkV4aXRDb21waWxlcjY0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTBGNzAyNUE5MTcxNEIwRkEwMDM4MkMwRSAvKiBERkdPU1JFeGl0Q29tcGlsZXJDb21tb24uY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMEYzOTJDODkxQjQ2MTg4NDAwODQ0NzI4IC8qIERGR09TUkV4
aXRGdXp6LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTdBQ0RERUQ4MUUyNTJCNkUwMDk3QUZFQiAv
KiBSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZF
RkM5QUExNjgxQTNCMzAwNTY3RjUzIC8qIERGR09TUkV4aXRKdW1wUGxhY2Vob2xkZXIuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMEYyMzVCRUQxNzE3OEU3MzAwNjkwQzdGIC8qIERGR09TUkV4aXRQ
cmVwYXJhdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjYyMzc5NzFBRTQ1Q0E3MDBENDAy
RUEgLyogREZHUGhhbnRvbUluc2VydGlvblBoYXNlLmNwcCBpbiBTb3VyY2VzICovLApAQCAtOTg4
Miw2ICs5ODk0LDcgQEAKIAkJCQk4NkVDOUREMjEzMjhERjgyMDAyQjJBRDcgLyogREZHU3BlY3Vs
YXRpdmVKSVQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODY4ODBGMUYxNDMyOEJCOTAwQjA4RDQy
IC8qIERGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODY4ODBG
NEQxNDM1M0IyMTAwQjA4RDQyIC8qIERGR1NwZWN1bGF0aXZlSklUNjQuY3BwIGluIFNvdXJjZXMg
Ki8sCisJCQkJN0FDRERFRDUxRTI1MkI1RTAwOTdBRkVCIC8qIFJlbW90ZUluc3BlY3RvckNvY29h
Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY2ODJGQjIxOUJDQjM2NDAwRkEzQkFEIC8qIERGR1NT
QUNhbGN1bGF0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTdEODlDRkYxN0EwQjhDQzAwNzcz
QUQ4IC8qIERGR1NTQUNvbnZlcnNpb25QaGFzZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkMy
MENCOTE4NTU2QTM1MDBDOUU5NTQgLyogREZHU1NBTG93ZXJpbmdQaGFzZS5jcHAgaW4gU291cmNl
cyAqLywKQEAgLTEwMjAyLDYgKzEwMjE1LDcgQEAKIAkJCQlCQ0ZEOEM5MjBFRUIyRUU3MDAyODM4
NDggLyogSnVtcFRhYmxlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMDcwQTRBMUQ1NDNBOTUw
MDZFNzIzMiAvKiBMYXJnZUFsbG9jYXRpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRENGM0Q1
NjkxQ0QyOTQ2RDAwM0Q1QzY1IC8qIExhenlDbGFzc1N0cnVjdHVyZS5jcHAgaW4gU291cmNlcyAq
LywKKwkJCQk3QUNEREVENDFFMjUyQjREMDA5N0FGRUIgLyogUmVtb3RlQ29ubmVjdGlvblRvVGFy
Z2V0Q29jb2EubW0gaW4gU291cmNlcyAqLywKIAkJCQkwRkI1NDY3OTE0RjVDNDZCMDAyQzI5ODkg
LyogTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQ4RjIx
QjAxMDdFQzU0MTAwNDJFQzJDIC8qIExleGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRjQy
NzU3MTU5MTRBMjAwMDRDQjlGRiAvKiBMaW5rQnVmZmVyLmNwcCBpbiBTb3VyY2VzICovLApAQCAt
MTAyMjcsNiArMTAyNDEsNyBAQAogCQkJCTc5NUIxOTk3MUQ3OEJFMzUwMDI2MkZBMCAvKiBNYXBC
YXNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3MDA4NzM5MTdDQkU4NTMwMEMzRTY0MyAvKiBN
YXBDb25zdHJ1Y3Rvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNzRERUY5MzE4MkQ5OTE0MDA1
MjJDMjIgLyogTWFwSXRlcmF0b3JQcm90b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJN0FD
RERFRDkxRTI1MkI4MzAwOTdBRkVCIC8qIFJlbW90ZUluc3BlY3Rvci5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlBNzAwODczRDE3Q0JFOEQzMDBDM0U2NDMgLyogTWFwUHJvdG90eXBlLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUMyQjkxNkM1MTREQTA0MEMwMENCQUM4NiAvKiBNYXJrZWRBbGxvY2F0
b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQyRDZGMDgxMzUzOUEyODAwQjAyRTg2IC8qIE1h
cmtlZEJsb2NrLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMTAzMTQsMTEgKzEwMzI5LDggQEAKIAkJ
CQkwRkMzMTQxNTE4MTQ2RDcwMDAwMzMyMzIgLyogUmVnaXN0ZXJTZXQuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQTU3RDIzRUQxODkxQjU1NDAwMzFDN0ZBIC8qIFJlZ3VsYXJFeHByZXNzaW9uLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTk5MkFCQ0Y5MUJFQTlCRDIwMDY0MDNBMCAvKiBSZW1vdGVB
dXRvbWF0aW9uVGFyZ2V0LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUE1QkExNUVDMTgyMzQwQjQw
MEE4MkU2OSAvKiBSZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQubW0gaW4gU291cmNlcyAqLywKIAkJ
CQk5OThFRDY3NDFCRUQ3MEFDMDBERDgwMTcgLyogUmVtb3RlQ29udHJvbGxhYmxlVGFyZ2V0LmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUE1OTQ1NThGMTgyNDVFRkQwMENDMzg0MyAvKiBSZW1vdGVJ
bnNwZWN0aW9uVGFyZ2V0LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUE1QkExNUU5MTgyMzQwQjMw
MEE4MkU2OSAvKiBSZW1vdGVJbnNwZWN0b3IubW0gaW4gU291cmNlcyAqLywKLQkJCQlBNUJBMTVF
RTE4MjM0MEI0MDBBODJFNjkgLyogUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbi5tbSBpbiBT
b3VyY2VzICovLAogCQkJCTBGMjRFNTUwMTdFRTI3NDkwMEFCQjIxNyAvKiBSZXBhdGNoLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTUyNzc3M0RFMUFBRjgzQUMwMEJERTdFOCAvKiBSdW50aW1lVHlw
ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjc3MDA5MjE0MDJGRjNDMDA3OEVCMzkgLyogU2Ft
cGxpbmdDb3VudGVyLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL1BsYXRmb3JtTWFjLmNtYWtlIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1BsYXRm
b3JtTWFjLmNtYWtlCmluZGV4IDJlNmIxNWI5YzZlLi5kNzQwNWE4NmQyOSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9QbGF0Zm9ybU1hYy5jbWFrZQpAQCAtMTAsMTEgKzEwLDE0IEBAIGxpc3QoQVBQ
RU5EIEphdmFTY3JpcHRDb3JlX1NPVVJDRVMKICAgICBBUEkvT2JqQ0NhbGxiYWNrRnVuY3Rpb24u
bW0KIAogICAgIGluc3BlY3Rvci9yZW1vdGUvUmVtb3RlQXV0b21hdGlvblRhcmdldC5jcHAKLSAg
ICBpbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldC5tbQogICAgIGluc3Bl
Y3Rvci9yZW1vdGUvUmVtb3RlQ29udHJvbGxhYmxlVGFyZ2V0LmNwcAogICAgIGluc3BlY3Rvci9y
ZW1vdGUvUmVtb3RlSW5zcGVjdGlvblRhcmdldC5jcHAKLSAgICBpbnNwZWN0b3IvcmVtb3RlL1Jl
bW90ZUluc3BlY3Rvci5tbQorICAgIGluc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yLmNw
cAogICAgIGluc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbi5tbQor
CisgICAgaW5zcGVjdG9yL3JlbW90ZS9jb2NvYS9SZW1vdGVDb25uZWN0aW9uVG9UYXJnZXRDb2Nv
YS5tbQorICAgIGluc3BlY3Rvci9yZW1vdGUvY29jb2EvUmVtb3RlSW5zcGVjdG9yQ29jb2EubW0K
KyAgICBpbnNwZWN0b3IvcmVtb3RlL2NvY29hL1JlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24u
bW0KICkKIGFkZF9kZWZpbml0aW9ucygtRFNUQVRJQ0FMTFlfTElOS0VEX1dJVEhfV1RGIC1EX19T
VERDX1dBTlRfTElCX0VYVDFfXykKIApAQCAtMjYsNiArMjksNyBAQCBsaXN0KEFQUEVORCBKYXZh
U2NyaXB0Q29yZV9MSUJSQVJJRVMKIGxpc3QoQVBQRU5EIEphdmFTY3JpcHRDb3JlX0lOQ0xVREVf
RElSRUNUT1JJRVMKICAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vZGlzYXNzZW1ibGVyL3VkaXM4
NgogICAgICR7SkFWQVNDUklQVENPUkVfRElSfS9pY3UKKyAgICAke0pBVkFTQ1JJUFRDT1JFX0RJ
Un0vaW5zcGVjdG9yL3JlbW90ZS9jb2NvYQogKQogCiBzZXQoQ01BS0VfU0hBUkVEX0xJTktFUl9G
TEFHUyAke0NNQUtFX1NIQVJFRF9MSU5LRVJfRkxBR1N9ICItY29tcGF0aWJpbGl0eV92ZXJzaW9u
IDEgLWN1cnJlbnRfdmVyc2lvbiAke1dFQktJVF9NQUNfVkVSU0lPTn0iKQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlQ29ubmVjdGlvblRv
VGFyZ2V0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVD
b25uZWN0aW9uVG9UYXJnZXQuaAppbmRleCBkYmEwNjAxNzk5YS4uODlhYTdiYzVlNzcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUNvbm5l
Y3Rpb25Ub1RhcmdldC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVt
b3RlL1JlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldC5oCkBAIC0yNyw2NyArMjcsODIgQEAKIAogI2lm
IEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQogCi0jaW1wb3J0ICJJbnNwZWN0b3JGcm9udGVuZENo
YW5uZWwuaCIKLSNpbXBvcnQgIlJlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldC5oIgotI2ltcG9ydCAi
UmVtb3RlSW5zcGVjdG9yLmgiCi0jaW1wb3J0IDxtdXRleD4KLSNpbXBvcnQgPHd0Zi9CbG9ja1B0
ci5oPgotI2ltcG9ydCA8d3RmL0xvY2suaD4KLSNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KLSNp
bXBvcnQgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgIkluc3BlY3RvckZy
b250ZW5kQ2hhbm5lbC5oIgorI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CisjaW5jbHVkZSA8d3RmL1Ro
cmVhZFNhZmVSZWZDb3VudGVkLmg+CisKKyNpZiBQTEFURk9STShDT0NPQSkKKyNpbmNsdWRlIDx3
dGYvQmxvY2tQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAKIE9CSkNfQ0xBU1Mg
TlNTdHJpbmc7CisjZW5kaWYKIAogbmFtZXNwYWNlIEluc3BlY3RvciB7CiAKK2NsYXNzIFJlbW90
ZUNvbnRyb2xsYWJsZVRhcmdldDsKKworI2lmIFBMQVRGT1JNKENPQ09BKQogdHlwZWRlZiBWZWN0
b3I8QmxvY2tQdHI8dm9pZCAoKT4+IFJlbW90ZVRhcmdldFF1ZXVlOworI2VuZGlmCiAKIGNsYXNz
IFJlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldCBmaW5hbCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291
bnRlZDxSZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQ+LCBwdWJsaWMgRnJvbnRlbmRDaGFubmVsIHsK
IHB1YmxpYzoKLSAgICBSZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQoUmVtb3RlQ29udHJvbGxhYmxl
VGFyZ2V0KiwgTlNTdHJpbmcgKmNvbm5lY3Rpb25JZGVudGlmaWVyLCBOU1N0cmluZyAqZGVzdGlu
YXRpb24pOworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIFJlbW90ZUNvbm5lY3Rpb25Ub1Rhcmdl
dChSZW1vdGVDb250cm9sbGFibGVUYXJnZXQqLCBOU1N0cmluZyogY29ubmVjdGlvbklkZW50aWZp
ZXIsIE5TU3RyaW5nKiBkZXN0aW5hdGlvbik7CisjZW5kaWYKICAgICB2aXJ0dWFsIH5SZW1vdGVD
b25uZWN0aW9uVG9UYXJnZXQoKTsKIAogICAgIC8vIE1haW4gQVBJLgogICAgIGJvb2wgc2V0dXAo
Ym9vbCBpc0F1dG9tYXRpY0luc3BlY3Rpb24gPSBmYWxzZSwgYm9vbCBhdXRvbWF0aWNhbGx5UGF1
c2UgPSBmYWxzZSk7Ci0gICAgdm9pZCBzZW5kTWVzc2FnZVRvVGFyZ2V0KE5TU3RyaW5nICopOwor
ICAgIHZvaWQgc2VuZE1lc3NhZ2VUb1RhcmdldChjb25zdCBTdHJpbmcmKTsKICAgICB2b2lkIGNs
b3NlKCk7CiAgICAgdm9pZCB0YXJnZXRDbG9zZWQoKTsKIAogICAgIHN0ZDo6b3B0aW9uYWw8dW5z
aWduZWQ+IHRhcmdldElkZW50aWZpZXIoKSBjb25zdDsKKyNpZiBQTEFURk9STShDT0NPQSkKICAg
ICBOU1N0cmluZyAqY29ubmVjdGlvbklkZW50aWZpZXIoKSBjb25zdDsKICAgICBOU1N0cmluZyAq
ZGVzdGluYXRpb24oKSBjb25zdDsKIAogICAgIExvY2smIHF1ZXVlTXV0ZXgoKSB7IHJldHVybiBt
X3F1ZXVlTXV0ZXg7IH0KICAgICBjb25zdCBSZW1vdGVUYXJnZXRRdWV1ZSYgcXVldWUoKSBjb25z
dCB7IHJldHVybiBtX3F1ZXVlOyB9CiAgICAgdm9pZCBjbGVhclF1ZXVlKCkgeyBtX3F1ZXVlLmNs
ZWFyKCk7IH0KKyNlbmRpZgogCiAgICAgLy8gRnJvbnRlbmRDaGFubmVsIG92ZXJyaWRlcy4KICAg
ICBDb25uZWN0aW9uVHlwZSBjb25uZWN0aW9uVHlwZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IENvbm5lY3Rpb25UeXBlOjpSZW1vdGU7IH0KICAgICB2b2lkIHNlbmRNZXNzYWdlVG9Gcm9udGVu
ZChjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKIAogcHJpdmF0ZToKKyNpZiBQTEFURk9STShDT0NP
QSkKICAgICB2b2lkIGRpc3BhdGNoQXN5bmNPblRhcmdldCh2b2lkICheYmxvY2spKCkpOwogCiAg
ICAgdm9pZCBzZXR1cFJ1bkxvb3AoKTsKICAgICB2b2lkIHRlYXJkb3duUnVuTG9vcCgpOwogICAg
IHZvaWQgcXVldWVUYXNrT25Qcml2YXRlUnVuTG9vcCh2b2lkICheYmxvY2spKCkpOworI2VuZGlm
CiAKICAgICAvLyBUaGlzIGNvbm5lY3Rpb24gZnJvbSB0aGUgUmVtb3RlSW5zcGVjdG9yIHNpbmds
ZXRvbiB0byB0aGUgSW5zcGVjdGlvblRhcmdldAogICAgIC8vIGNhbiBiZSB1c2VkIG9uIG11bHRp
cGxlIHRocmVhZHMuIFNvIGFueSBhY2Nlc3MgdG8gdGhlIHRhcmdldAogICAgIC8vIGl0c2VsZiBt
dXN0IHRha2UgdGhpcyBtdXRleCB0byBlbnN1cmUgbV90YXJnZXQgaXMgdmFsaWQuCiAgICAgTG9j
ayBtX3RhcmdldE11dGV4OwogCisjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgLy8gSWYgYSB0YXJn
ZXQgaGFzIGEgc3BlY2lmaWMgcnVuIGxvb3AgaXQgd2FudHMgdG8gZXZhbHVhdGUgb24KICAgICAv
LyB3ZSBzZXR1cCBvdXIgcnVuIGxvb3Agc291cmNlcyBvbiB0aGF0IHNwZWNpZmljIHJ1biBsb29w
LgogICAgIFJldGFpblB0cjxDRlJ1bkxvb3BSZWY+IG1fcnVuTG9vcDsKICAgICBSZXRhaW5QdHI8
Q0ZSdW5Mb29wU291cmNlUmVmPiBtX3J1bkxvb3BTb3VyY2U7CiAgICAgUmVtb3RlVGFyZ2V0UXVl
dWUgbV9xdWV1ZTsKICAgICBMb2NrIG1fcXVldWVNdXRleDsKKyNlbmRpZgogCiAgICAgUmVtb3Rl
Q29udHJvbGxhYmxlVGFyZ2V0KiBtX3RhcmdldCB7IG51bGxwdHIgfTsKKyAgICBib29sIG1fY29u
bmVjdGVkIHsgZmFsc2UgfTsKKworI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIFJldGFpblB0cjxO
U1N0cmluZz4gbV9jb25uZWN0aW9uSWRlbnRpZmllcjsKICAgICBSZXRhaW5QdHI8TlNTdHJpbmc+
IG1fZGVzdGluYXRpb247Ci0gICAgYm9vbCBtX2Nvbm5lY3RlZCB7IGZhbHNlIH07CisjZW5kaWYK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIEluc3BlY3RvcgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlQ29udHJvbGxhYmxlVGFyZ2V0LmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVDb250cm9sbGFibGVU
YXJnZXQuaAppbmRleCBkNjVmYWVhZDk1ZC4uYWZhZTM2OWFlMWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUNvbnRyb2xsYWJsZVRhcmdl
dC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUNv
bnRyb2xsYWJsZVRhcmdldC5oCkBAIC0yNywxMCArMjcsMTMgQEAKIAogI2lmIEVOQUJMRShSRU1P
VEVfSU5TUEVDVE9SKQogCi0jaW5jbHVkZSA8Q29yZUZvdW5kYXRpb24vQ0ZSdW5Mb29wLmg+CiAj
aW5jbHVkZSA8d3RmL1R5cGVDYXN0cy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5o
PgogCisjaWYgVVNFKENGKQorI2luY2x1ZGUgPENvcmVGb3VuZGF0aW9uL0NGUnVuTG9vcC5oPgor
I2VuZGlmCisKIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCiBjbGFzcyBGcm9udGVuZENoYW5uZWw7
CkBAIC01Myw4ICs1NiwxMCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIHJlbW90ZUNvbnRy
b2xBbGxvd2VkKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaE1lc3NhZ2VG
cm9tUmVtb3RlKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkgPSAwOwogCisjaWYgVVNFKENGKQogICAg
IC8vIFRoZSBkaXNwYXRjaCBibG9jayB3aWxsIGJlIHNjaGVkdWxlZCBvbiBhIGdsb2JhbCBydW4g
bG9vcCBpZiBudWxsIGlzIHJldHVybmVkLgogICAgIHZpcnR1YWwgQ0ZSdW5Mb29wUmVmIHRhcmdl
dFJ1bkxvb3AoKSB7IHJldHVybiBudWxscHRyOyB9CisjZW5kaWYKIHByaXZhdGU6CiAgICAgdW5z
aWduZWQgbV9pZGVudGlmaWVyIHswfTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0aW9uVGFyZ2V0LmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0aW9uVGFyZ2V0LmgK
aW5kZXggMzg1MmZjY2Q4MzEuLjQ1MzI5ZjZkNjJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0aW9uVGFyZ2V0LmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdGlvblRh
cmdldC5oCkBAIC00MSw4ICs0MSwxMCBAQCBwdWJsaWM6CiAgICAgYm9vbCByZW1vdGVEZWJ1Z2dp
bmdBbGxvd2VkKCkgY29uc3QgeyByZXR1cm4gbV9hbGxvd2VkOyB9CiAgICAgdm9pZCBzZXRSZW1v
dGVEZWJ1Z2dpbmdBbGxvd2VkKGJvb2wpOwogCisjaWYgVVNFKENGKQogICAgIENGUnVuTG9vcFJl
ZiB0YXJnZXRSdW5Mb29wKCkgb3ZlcnJpZGUgeyByZXR1cm4gbV9ydW5Mb29wLmdldCgpOyB9CiAg
ICAgdm9pZCBzZXRUYXJnZXRSdW5Mb29wKENGUnVuTG9vcFJlZiBydW5Mb29wKSB7IG1fcnVuTG9v
cCA9IHJ1bkxvb3A7IH0KKyNlbmRpZgogCiAgICAgdmlydHVhbCBTdHJpbmcgbmFtZSgpIGNvbnN0
IHsgcmV0dXJuIFN0cmluZygpOyB9IC8vIEphdmFTY3JpcHQgYW5kIFdlYgogICAgIHZpcnR1YWwg
U3RyaW5nIHVybCgpIGNvbnN0IHsgcmV0dXJuIFN0cmluZygpOyB9IC8vIFdlYgpAQCAtNTksNyAr
NjEsOSBAQCBwdWJsaWM6CiAgICAgYm9vbCByZW1vdGVDb250cm9sQWxsb3dlZCgpIGNvbnN0IG92
ZXJyaWRlOwogcHJpdmF0ZToKICAgICBib29sIG1fYWxsb3dlZCB7ZmFsc2V9OworI2lmIFVTRShD
RikKICAgICBSZXRhaW5QdHI8Q0ZSdW5Mb29wUmVmPiBtX3J1bkxvb3A7CisjZW5kaWYKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIEluc3BlY3RvcgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3Rvci5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjE1NzdiZWJiN2QwCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9y
LmNwcApAQCAtMCwwICsxLDIyNCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE2IEFw
cGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlJlbW90ZUlu
c3BlY3Rvci5oIgorCisjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCisKKyNpbmNsdWRlICJS
ZW1vdGVBdXRvbWF0aW9uVGFyZ2V0LmgiCisjaW5jbHVkZSAiUmVtb3RlQ29ubmVjdGlvblRvVGFy
Z2V0LmgiCisjaW5jbHVkZSAiUmVtb3RlSW5zcGVjdGlvblRhcmdldC5oIgorI2luY2x1ZGUgIlJl
bW90ZUluc3BlY3RvckNvbnN0YW50cy5oIgorI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+Cisj
aW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBJbnNwZWN0b3Igewor
Citib29sIFJlbW90ZUluc3BlY3Rvcjo6c3RhcnRFbmFibGVkID0gdHJ1ZTsKKwordm9pZCBSZW1v
dGVJbnNwZWN0b3I6OnN0YXJ0RGlzYWJsZWQoKQoreworICAgIFJlbW90ZUluc3BlY3Rvcjo6c3Rh
cnRFbmFibGVkID0gZmFsc2U7Cit9CisKK3Vuc2lnbmVkIFJlbW90ZUluc3BlY3Rvcjo6bmV4dEF2
YWlsYWJsZVRhcmdldElkZW50aWZpZXIoKQoreworICAgIHVuc2lnbmVkIG5leHRWYWxpZFRhcmdl
dElkZW50aWZpZXI7CisgICAgZG8geworICAgICAgICBuZXh0VmFsaWRUYXJnZXRJZGVudGlmaWVy
ID0gbV9uZXh0QXZhaWxhYmxlVGFyZ2V0SWRlbnRpZmllcisrOworICAgIH0gd2hpbGUgKCFuZXh0
VmFsaWRUYXJnZXRJZGVudGlmaWVyIHx8IG5leHRWYWxpZFRhcmdldElkZW50aWZpZXIgPT0gc3Rk
OjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpIHx8IG1fdGFyZ2V0TWFwLmNvbnRhaW5z
KG5leHRWYWxpZFRhcmdldElkZW50aWZpZXIpKTsKKyAgICByZXR1cm4gbmV4dFZhbGlkVGFyZ2V0
SWRlbnRpZmllcjsKK30KKwordm9pZCBSZW1vdGVJbnNwZWN0b3I6OnJlZ2lzdGVyVGFyZ2V0KFJl
bW90ZUNvbnRyb2xsYWJsZVRhcmdldCogdGFyZ2V0KQoreworICAgIEFTU0VSVF9BUkcodGFyZ2V0
LCB0YXJnZXQpOworCisgICAgc3RkOjpsb2NrX2d1YXJkPExvY2s+IGxvY2sobV9tdXRleCk7CisK
KyAgICB1bnNpZ25lZCB0YXJnZXRJZGVudGlmaWVyID0gbmV4dEF2YWlsYWJsZVRhcmdldElkZW50
aWZpZXIoKTsKKyAgICB0YXJnZXQtPnNldFRhcmdldElkZW50aWZpZXIodGFyZ2V0SWRlbnRpZmll
cik7CisKKyAgICB7CisgICAgICAgIGF1dG8gcmVzdWx0ID0gbV90YXJnZXRNYXAuc2V0KHRhcmdl
dElkZW50aWZpZXIsIHRhcmdldCk7CisgICAgICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1
bHQuaXNOZXdFbnRyeSk7CisgICAgfQorCisgICAgLy8gSWYgcmVtb3RlIGNvbnRyb2wgaXMgbm90
IGFsbG93ZWQsIGEgbnVsbCBsaXN0aW5nIGlzIHJldHVybmVkLgorICAgIGlmIChhdXRvIHRhcmdl
dExpc3RpbmcgPSBsaXN0aW5nRm9yVGFyZ2V0KCp0YXJnZXQpKSB7CisgICAgICAgIGF1dG8gcmVz
dWx0ID0gbV90YXJnZXRMaXN0aW5nTWFwLnNldCh0YXJnZXRJZGVudGlmaWVyLCB0YXJnZXRMaXN0
aW5nKTsKKyAgICAgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdC5pc05ld0VudHJ5KTsK
KyAgICB9CisKKyAgICBwdXNoTGlzdGluZ3NTb29uKCk7Cit9CisKK3ZvaWQgUmVtb3RlSW5zcGVj
dG9yOjp1bnJlZ2lzdGVyVGFyZ2V0KFJlbW90ZUNvbnRyb2xsYWJsZVRhcmdldCogdGFyZ2V0KQor
eworICAgIEFTU0VSVF9BUkcodGFyZ2V0LCB0YXJnZXQpOworCisgICAgc3RkOjpsb2NrX2d1YXJk
PExvY2s+IGxvY2sobV9tdXRleCk7CisKKyAgICB1bnNpZ25lZCB0YXJnZXRJZGVudGlmaWVyID0g
dGFyZ2V0LT50YXJnZXRJZGVudGlmaWVyKCk7CisgICAgaWYgKCF0YXJnZXRJZGVudGlmaWVyKQor
ICAgICAgICByZXR1cm47CisKKyAgICBib29sIHdhc1JlbW92ZWQgPSBtX3RhcmdldE1hcC5yZW1v
dmUodGFyZ2V0SWRlbnRpZmllcik7CisgICAgQVNTRVJUX1VOVVNFRCh3YXNSZW1vdmVkLCB3YXNS
ZW1vdmVkKTsKKworICAgIC8vIFRoZSBsaXN0aW5nIG1heSBuZXZlciBoYXZlIGJlZW4gYWRkZWQg
aWYgcmVtb3RlIGNvbnRyb2wgaXNuJ3QgYWxsb3dlZC4KKyAgICBtX3RhcmdldExpc3RpbmdNYXAu
cmVtb3ZlKHRhcmdldElkZW50aWZpZXIpOworCisgICAgaWYgKGF1dG8gY29ubmVjdGlvblRvVGFy
Z2V0ID0gbV90YXJnZXRDb25uZWN0aW9uTWFwLnRha2UodGFyZ2V0SWRlbnRpZmllcikpCisgICAg
ICAgIGNvbm5lY3Rpb25Ub1RhcmdldC0+dGFyZ2V0Q2xvc2VkKCk7CisKKyAgICBwdXNoTGlzdGlu
Z3NTb29uKCk7Cit9CisKK3ZvaWQgUmVtb3RlSW5zcGVjdG9yOjp1cGRhdGVUYXJnZXQoUmVtb3Rl
Q29udHJvbGxhYmxlVGFyZ2V0KiB0YXJnZXQpCit7CisgICAgQVNTRVJUX0FSRyh0YXJnZXQsIHRh
cmdldCk7CisKKyAgICBzdGQ6OmxvY2tfZ3VhcmQ8TG9jaz4gbG9jayhtX211dGV4KTsKKworICAg
IHVuc2lnbmVkIHRhcmdldElkZW50aWZpZXIgPSB0YXJnZXQtPnRhcmdldElkZW50aWZpZXIoKTsK
KyAgICBpZiAoIXRhcmdldElkZW50aWZpZXIpCisgICAgICAgIHJldHVybjsKKworICAgIHsKKyAg
ICAgICAgYXV0byByZXN1bHQgPSBtX3RhcmdldE1hcC5zZXQodGFyZ2V0SWRlbnRpZmllciwgdGFy
Z2V0KTsKKyAgICAgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsICFyZXN1bHQuaXNOZXdFbnRyeSk7
CisgICAgfQorCisgICAgLy8gSWYgdGhlIHRhcmdldCBoYXMganVzdCBhbGxvd2VkIHJlbW90ZSBj
b250cm9sLCB0aGVuIHRoZSBsaXN0aW5nIHdvbid0IGV4aXN0IHlldC4KKyAgICAvLyBJZiB0aGUg
dGFyZ2V0IGhhcyBubyBpZGVudGlmaWVyIHJlbW92ZSB0aGUgb2xkIGxpc3RpbmcuCisgICAgaWYg
KGF1dG8gdGFyZ2V0TGlzdGluZyA9IGxpc3RpbmdGb3JUYXJnZXQoKnRhcmdldCkpCisgICAgICAg
IG1fdGFyZ2V0TGlzdGluZ01hcC5zZXQodGFyZ2V0SWRlbnRpZmllciwgdGFyZ2V0TGlzdGluZyk7
CisgICAgZWxzZQorICAgICAgICBtX3RhcmdldExpc3RpbmdNYXAucmVtb3ZlKHRhcmdldElkZW50
aWZpZXIpOworCisgICAgcHVzaExpc3RpbmdzU29vbigpOworfQorCit2b2lkIFJlbW90ZUluc3Bl
Y3Rvcjo6dXBkYXRlQ2xpZW50Q2FwYWJpbGl0aWVzKCkKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhy
ZWFkKCkpOworCisgICAgc3RkOjpsb2NrX2d1YXJkPExvY2s+IGxvY2sobV9tdXRleCk7CisKKyAg
ICBpZiAoIW1fY2xpZW50KQorICAgICAgICBtX2NsaWVudENhcGFiaWxpdGllcyA9IHN0ZDo6bnVs
bG9wdDsKKyAgICBlbHNlIHsKKyAgICAgICAgUmVtb3RlSW5zcGVjdG9yOjpDbGllbnQ6OkNhcGFi
aWxpdGllcyB1cGRhdGVkQ2FwYWJpbGl0aWVzID0geworICAgICAgICAgICAgbV9jbGllbnQtPnJl
bW90ZUF1dG9tYXRpb25BbGxvd2VkKCkgLy8gcmVtb3RlQXV0b21hdGlvbkFsbG93ZWQKKyAgICAg
ICAgfTsKKworICAgICAgICBtX2NsaWVudENhcGFiaWxpdGllcyA9IHVwZGF0ZWRDYXBhYmlsaXRp
ZXM7CisgICAgfQorfQorCit2b2lkIFJlbW90ZUluc3BlY3Rvcjo6c2V0UmVtb3RlSW5zcGVjdG9y
Q2xpZW50KFJlbW90ZUluc3BlY3Rvcjo6Q2xpZW50KiBjbGllbnQpCit7CisgICAgQVNTRVJUX0FS
RyhjbGllbnQsIGNsaWVudCk7CisgICAgQVNTRVJUKCFtX2NsaWVudCk7CisKKyAgICB7CisgICAg
ICAgIHN0ZDo6bG9ja19ndWFyZDxMb2NrPiBsb2NrKG1fbXV0ZXgpOworICAgICAgICBtX2NsaWVu
dCA9IGNsaWVudDsKKyAgICB9CisKKyAgICAvLyBTZW5kIGFuIHVwZGF0ZWQgbGlzdGluZyB0aGF0
IGluY2x1ZGVzIHdoZXRoZXIgdGhlIGNsaWVudCBhbGxvd3MgcmVtb3RlIGF1dG9tYXRpb24uCisg
ICAgdXBkYXRlQ2xpZW50Q2FwYWJpbGl0aWVzKCk7CisgICAgcHVzaExpc3RpbmdzU29vbigpOwor
fQorCit2b2lkIFJlbW90ZUluc3BlY3Rvcjo6c2V0dXBGYWlsZWQodW5zaWduZWQgdGFyZ2V0SWRl
bnRpZmllcikKK3sKKyAgICBzdGQ6OmxvY2tfZ3VhcmQ8TG9jaz4gbG9jayhtX211dGV4KTsKKwor
ICAgIG1fdGFyZ2V0Q29ubmVjdGlvbk1hcC5yZW1vdmUodGFyZ2V0SWRlbnRpZmllcik7CisKKyAg
ICB1cGRhdGVIYXNBY3RpdmVEZWJ1Z1Nlc3Npb24oKTsKKworICAgIGlmICh0YXJnZXRJZGVudGlm
aWVyID09IG1fYXV0b21hdGljSW5zcGVjdGlvbkNhbmRpZGF0ZVRhcmdldElkZW50aWZpZXIpCisg
ICAgICAgIG1fYXV0b21hdGljSW5zcGVjdGlvblBhdXNlZCA9IGZhbHNlOworCisgICAgcHVzaExp
c3RpbmdzU29vbigpOworfQorCit2b2lkIFJlbW90ZUluc3BlY3Rvcjo6c2V0dXBDb21wbGV0ZWQo
dW5zaWduZWQgdGFyZ2V0SWRlbnRpZmllcikKK3sKKyAgICBzdGQ6OmxvY2tfZ3VhcmQ8TG9jaz4g
bG9jayhtX211dGV4KTsKKworICAgIGlmICh0YXJnZXRJZGVudGlmaWVyID09IG1fYXV0b21hdGlj
SW5zcGVjdGlvbkNhbmRpZGF0ZVRhcmdldElkZW50aWZpZXIpCisgICAgICAgIG1fYXV0b21hdGlj
SW5zcGVjdGlvblBhdXNlZCA9IGZhbHNlOworfQorCitib29sIFJlbW90ZUluc3BlY3Rvcjo6d2Fp
dGluZ0ZvckF1dG9tYXRpY0luc3BlY3Rpb24odW5zaWduZWQpCit7CisgICAgLy8gV2UgZG9uJ3Qg
dGFrZSB0aGUgbG9jayB0byBjaGVjayB0aGlzIGJlY2F1c2Ugd2UgYXNzdW1lIGl0IHdpbGwgYmUg
Y2hlY2tlZCByZXBlYXRlZGx5LgorICAgIHJldHVybiBtX2F1dG9tYXRpY0luc3BlY3Rpb25QYXVz
ZWQ7Cit9CisKK3ZvaWQgUmVtb3RlSW5zcGVjdG9yOjpjbGllbnRDYXBhYmlsaXRpZXNEaWRDaGFu
Z2UoKQoreworICAgIHVwZGF0ZUNsaWVudENhcGFiaWxpdGllcygpOworICAgIHB1c2hMaXN0aW5n
c1Nvb24oKTsKK30KKwordm9pZCBSZW1vdGVJbnNwZWN0b3I6OnN0b3AoKQoreworICAgIHN0ZDo6
bG9ja19ndWFyZDxMb2NrPiBsb2NrKG1fbXV0ZXgpOworCisgICAgc3RvcEludGVybmFsKFN0b3BT
b3VyY2U6OkFQSSk7Cit9CisKK1RhcmdldExpc3RpbmcgUmVtb3RlSW5zcGVjdG9yOjpsaXN0aW5n
Rm9yVGFyZ2V0KGNvbnN0IFJlbW90ZUNvbnRyb2xsYWJsZVRhcmdldCYgdGFyZ2V0KSBjb25zdAor
eworICAgIGlmIChpczxSZW1vdGVJbnNwZWN0aW9uVGFyZ2V0Pih0YXJnZXQpKQorICAgICAgICBy
ZXR1cm4gbGlzdGluZ0Zvckluc3BlY3Rpb25UYXJnZXQoZG93bmNhc3Q8UmVtb3RlSW5zcGVjdGlv
blRhcmdldD4odGFyZ2V0KSk7CisgICAgaWYgKGlzPFJlbW90ZUF1dG9tYXRpb25UYXJnZXQ+KHRh
cmdldCkpCisgICAgICAgIHJldHVybiBsaXN0aW5nRm9yQXV0b21hdGlvblRhcmdldChkb3duY2Fz
dDxSZW1vdGVBdXRvbWF0aW9uVGFyZ2V0Pih0YXJnZXQpKTsKKworICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgIHJldHVybiBudWxscHRyOworfQorCit2b2lkIFJlbW90ZUluc3BlY3Rvcjo6
dXBkYXRlSGFzQWN0aXZlRGVidWdTZXNzaW9uKCkKK3sKKyAgICBib29sIGhhc0FjdGl2ZURlYnVn
Z2VyU2Vzc2lvbiA9ICFtX3RhcmdldENvbm5lY3Rpb25NYXAuaXNFbXB0eSgpOworICAgIGlmICho
YXNBY3RpdmVEZWJ1Z2dlclNlc3Npb24gPT0gbV9oYXNBY3RpdmVEZWJ1Z1Nlc3Npb24pCisgICAg
ICAgIHJldHVybjsKKworICAgIG1faGFzQWN0aXZlRGVidWdTZXNzaW9uID0gaGFzQWN0aXZlRGVi
dWdnZXJTZXNzaW9uOworCisgICAgLy8gRklYTUU6IEV4cG9zZSBzb21lIHdheSB0byBhY2Nlc3Mg
dGhpcyBzdGF0ZSBpbiBhbiBlbWJlZGRlci4KKyAgICAvLyBMZWdhY3kgaU9TIFdlYktpdCAxIGhh
ZCBhIG5vdGlmaWNhdGlvbi4gVGhpcyB3aWxsIG5lZWQgdG8gYmUgc21hcnRlciB3aXRoIFdlYktp
dDIuCit9CisKK30gLy8gbmFtZXNwYWNlIEluc3BlY3RvcgorCisjZW5kaWYgLy8gRU5BQkxFKFJF
TU9URV9JTlNQRUNUT1IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3Rvci5oCmluZGV4IDkzZmQxYTdkN2MwLi4yMWE3ZTEz
ZjExNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUv
UmVtb3RlSW5zcGVjdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9y
ZW1vdGUvUmVtb3RlSW5zcGVjdG9yLmgKQEAgLTI3LDE0ICsyNywxOCBAQAogCiAjaWYgRU5BQkxF
KFJFTU9URV9JTlNQRUNUT1IpCiAKLSNpbXBvcnQgIlJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rp
b24uaCIKLSNpbXBvcnQgPHd0Zi9Gb3J3YXJkLmg+Ci0jaW1wb3J0IDx3dGYvSGFzaE1hcC5oPgot
I2ltcG9ydCA8d3RmL0xvY2suaD4KLSNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KKyNpbmNsdWRl
IDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3Rm
L0xvY2suaD4KKworI2lmIFBMQVRGT1JNKENPQ09BKQorI2luY2x1ZGUgIlJlbW90ZUluc3BlY3Rv
clhQQ0Nvbm5lY3Rpb24uaCIKKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAKIE9CSkNfQ0xB
U1MgTlNEaWN0aW9uYXJ5OwogT0JKQ19DTEFTUyBOU1N0cmluZzsKK3R5cGVkZWYgUmV0YWluUHRy
PE5TRGljdGlvbmFyeT4gVGFyZ2V0TGlzdGluZzsKKyNlbmRpZgogCiBuYW1lc3BhY2UgSW5zcGVj
dG9yIHsKIApAQCAtNDQsNyArNDgsMTEgQEAgY2xhc3MgUmVtb3RlQ29udHJvbGxhYmxlVGFyZ2V0
OwogY2xhc3MgUmVtb3RlSW5zcGVjdGlvblRhcmdldDsKIGNsYXNzIFJlbW90ZUluc3BlY3RvckNs
aWVudDsKIAotY2xhc3MgSlNfRVhQT1JUX1BSSVZBVEUgUmVtb3RlSW5zcGVjdG9yIGZpbmFsIDog
cHVibGljIFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb246OkNsaWVudCB7CitjbGFzcyBKU19F
WFBPUlRfUFJJVkFURSBSZW1vdGVJbnNwZWN0b3IgZmluYWwKKyNpZiBQTEFURk9STShDT0NPQSkK
KyAgICA6IHB1YmxpYyBSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uOjpDbGllbnQKKyNlbmRp
ZgorewogcHVibGljOgogICAgIGNsYXNzIENsaWVudCB7CiAgICAgcHVibGljOgpAQCAtODAsMTEg
Kzg4LDEzIEBAIHB1YmxpYzoKICAgICB2b2lkIHN0YXJ0KCk7CiAgICAgdm9pZCBzdG9wKCk7CiAK
KyNpZiBQTEFURk9STShDT0NPQSkKICAgICBib29sIGhhc1BhcmVudFByb2Nlc3NJbmZvcm1hdGlv
bigpIGNvbnN0IHsgcmV0dXJuIG1fcGFyZW50UHJvY2Vzc0lkZW50aWZpZXIgIT0gMDsgfQogICAg
IHBpZF90IHBhcmVudFByb2Nlc3NJZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9wYXJlbnRQ
cm9jZXNzSWRlbnRpZmllcjsgfQogICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IHBhcmVudFByb2Nl
c3NBdWRpdERhdGEoKSBjb25zdCB7IHJldHVybiBtX3BhcmVudFByb2Nlc3NBdWRpdERhdGE7IH0K
ICAgICB2b2lkIHNldFBhcmVudFByb2Nlc3NJbmZvcm1hdGlvbihwaWRfdCwgUmV0YWluUHRyPENG
RGF0YVJlZj4gYXVkaXREYXRhKTsKICAgICB2b2lkIHNldFBhcmVudFByb2Nlc3NJbmZvbWF0aW9u
SXNEZWxheWVkKCk7CisjZW5kaWYKIAogcHJpdmF0ZToKICAgICBSZW1vdGVJbnNwZWN0b3IoKTsK
QEAgLTk0LDExICsxMDQsMTQgQEAgcHJpdmF0ZToKICAgICBlbnVtIGNsYXNzIFN0b3BTb3VyY2Ug
eyBBUEksIFhQQ01lc3NhZ2UgfTsKICAgICB2b2lkIHN0b3BJbnRlcm5hbChTdG9wU291cmNlKTsK
IAorI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHZvaWQgc2V0dXBYUENDb25uZWN0aW9uSWZOZWVk
ZWQoKTsKKyNlbmRpZgorCisgICAgVGFyZ2V0TGlzdGluZyBsaXN0aW5nRm9yVGFyZ2V0KGNvbnN0
IFJlbW90ZUNvbnRyb2xsYWJsZVRhcmdldCYpIGNvbnN0OworICAgIFRhcmdldExpc3RpbmcgbGlz
dGluZ0Zvckluc3BlY3Rpb25UYXJnZXQoY29uc3QgUmVtb3RlSW5zcGVjdGlvblRhcmdldCYpIGNv
bnN0OworICAgIFRhcmdldExpc3RpbmcgbGlzdGluZ0ZvckF1dG9tYXRpb25UYXJnZXQoY29uc3Qg
UmVtb3RlQXV0b21hdGlvblRhcmdldCYpIGNvbnN0OwogCi0gICAgUmV0YWluUHRyPE5TRGljdGlv
bmFyeT4gbGlzdGluZ0ZvclRhcmdldChjb25zdCBSZW1vdGVDb250cm9sbGFibGVUYXJnZXQmKSBj
b25zdDsKLSAgICBSZXRhaW5QdHI8TlNEaWN0aW9uYXJ5PiBsaXN0aW5nRm9ySW5zcGVjdGlvblRh
cmdldChjb25zdCBSZW1vdGVJbnNwZWN0aW9uVGFyZ2V0JikgY29uc3Q7Ci0gICAgUmV0YWluUHRy
PE5TRGljdGlvbmFyeT4gbGlzdGluZ0ZvckF1dG9tYXRpb25UYXJnZXQoY29uc3QgUmVtb3RlQXV0
b21hdGlvblRhcmdldCYpIGNvbnN0OwogICAgIHZvaWQgcHVzaExpc3RpbmdzTm93KCk7CiAgICAg
dm9pZCBwdXNoTGlzdGluZ3NTb29uKCk7CiAKQEAgLTEwNyw2ICsxMjAsNyBAQCBwcml2YXRlOgog
CiAgICAgdm9pZCBzZW5kQXV0b21hdGljSW5zcGVjdGlvbkNhbmRpZGF0ZU1lc3NhZ2UoKTsKIAor
I2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHZvaWQgeHBjQ29ubmVjdGlvblJlY2VpdmVkTWVzc2Fn
ZShSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uKiwgTlNTdHJpbmcgKm1lc3NhZ2VOYW1lLCBO
U0RpY3Rpb25hcnkgKnVzZXJJbmZvKSBvdmVycmlkZTsKICAgICB2b2lkIHhwY0Nvbm5lY3Rpb25G
YWlsZWQoUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbiopIG92ZXJyaWRlOwogICAgIHZvaWQg
eHBjQ29ubmVjdGlvblVuaGFuZGxlZE1lc3NhZ2UoUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlv
biosIHhwY19vYmplY3RfdCkgb3ZlcnJpZGU7CkBAIC0xMjEsNiArMTM1LDcgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIHJlY2VpdmVkQXV0b21hdGljSW5zcGVjdGlvbkNvbmZpZ3VyYXRpb25NZXNzYWdl
KE5TRGljdGlvbmFyeSAqdXNlckluZm8pOwogICAgIHZvaWQgcmVjZWl2ZWRBdXRvbWF0aWNJbnNw
ZWN0aW9uUmVqZWN0TWVzc2FnZShOU0RpY3Rpb25hcnkgKnVzZXJJbmZvKTsKICAgICB2b2lkIHJl
Y2VpdmVkQXV0b21hdGlvblNlc3Npb25SZXF1ZXN0TWVzc2FnZShOU0RpY3Rpb25hcnkgKnVzZXJJ
bmZvKTsKKyNlbmRpZgogCiAgICAgc3RhdGljIGJvb2wgc3RhcnRFbmFibGVkOwogCkBAIC0xMzEs
MTUgKzE0NiwxOSBAQCBwcml2YXRlOgogICAgIExvY2sgbV9tdXRleDsKIAogICAgIEhhc2hNYXA8
dW5zaWduZWQsIFJlbW90ZUNvbnRyb2xsYWJsZVRhcmdldCo+IG1fdGFyZ2V0TWFwOwotICAgIEhh
c2hNYXA8dW5zaWduZWQsIFJldGFpblB0cjxOU0RpY3Rpb25hcnk+PiBtX3RhcmdldExpc3RpbmdN
YXA7CiAgICAgSGFzaE1hcDx1bnNpZ25lZCwgUmVmUHRyPFJlbW90ZUNvbm5lY3Rpb25Ub1Rhcmdl
dD4+IG1fdGFyZ2V0Q29ubmVjdGlvbk1hcDsKKyAgICBIYXNoTWFwPHVuc2lnbmVkLCBUYXJnZXRM
aXN0aW5nPiBtX3RhcmdldExpc3RpbmdNYXA7CiAKKyNpZiBQTEFURk9STShDT0NPQSkKICAgICBS
ZWZQdHI8UmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbj4gbV9yZWxheUNvbm5lY3Rpb247Cisj
ZW5kaWYKIAogICAgIFJlbW90ZUluc3BlY3Rvcjo6Q2xpZW50KiBtX2NsaWVudCB7IG51bGxwdHIg
fTsKICAgICBzdGQ6Om9wdGlvbmFsPFJlbW90ZUluc3BlY3Rvcjo6Q2xpZW50OjpDYXBhYmlsaXRp
ZXM+IG1fY2xpZW50Q2FwYWJpbGl0aWVzOwogCisjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgZGlz
cGF0Y2hfcXVldWVfdCBtX3hwY1F1ZXVlOworI2VuZGlmCiAgICAgdW5zaWduZWQgbV9uZXh0QXZh
aWxhYmxlVGFyZ2V0SWRlbnRpZmllciB7IDEgfTsKICAgICBpbnQgbV9ub3RpZnlUb2tlbiB7IDAg
fTsKICAgICBib29sIG1fZW5hYmxlZCB7IGZhbHNlIH07CkBAIC0xNDcsNyArMTY2LDkgQEAgcHJp
dmF0ZToKICAgICBib29sIG1fcHVzaFNjaGVkdWxlZCB7IGZhbHNlIH07CiAKICAgICBwaWRfdCBt
X3BhcmVudFByb2Nlc3NJZGVudGlmaWVyIHsgMCB9OworI2lmIFBMQVRGT1JNKENPQ09BKQogICAg
IFJldGFpblB0cjxDRkRhdGFSZWY+IG1fcGFyZW50UHJvY2Vzc0F1ZGl0RGF0YTsKKyNlbmRpZgog
ICAgIGJvb2wgbV9zaG91bGRTZW5kUGFyZW50UHJvY2Vzc0luZm9ybWF0aW9uIHsgZmFsc2UgfTsK
ICAgICBib29sIG1fYXV0b21hdGljSW5zcGVjdGlvbkVuYWJsZWQgeyBmYWxzZSB9OwogICAgIGJv
b2wgbV9hdXRvbWF0aWNJbnNwZWN0aW9uUGF1c2VkIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUNvbm5lY3Rpb25Ub1Rh
cmdldC5tbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL2NvY29hL1Jl
bW90ZUNvbm5lY3Rpb25Ub1RhcmdldENvY29hLm1tCnNpbWlsYXJpdHkgaW5kZXggOTMlCnJlbmFt
ZSBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUNvbm5l
Y3Rpb25Ub1RhcmdldC5tbQpyZW5hbWUgdG8gU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9yZW1vdGUvY29jb2EvUmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0Q29jb2EubW0KaW5kZXggZDYw
ZGE0OGFmYTguLmFjM2M3MjMxZjQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQubW0KKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvY29jb2EvUmVtb3RlQ29ubmVjdGlvblRv
VGFyZ2V0Q29jb2EubW0KQEAgLTMxLDYgKzMxLDcgQEAKICNpbXBvcnQgIkV2ZW50TG9vcC5oIgog
I2ltcG9ydCAiUmVtb3RlQXV0b21hdGlvblRhcmdldC5oIgogI2ltcG9ydCAiUmVtb3RlSW5zcGVj
dGlvblRhcmdldC5oIgorI2ltcG9ydCAiUmVtb3RlSW5zcGVjdG9yLmgiCiAjaW1wb3J0IDxkaXNw
YXRjaC9kaXNwYXRjaC5oPgogI2ltcG9ydCA8d3RmL09wdGlvbmFsLmg+CiAKQEAgLTc4LDEwICs3
OSwxMCBAQCBzdGF0aWMgdm9pZCBSZW1vdGVUYXJnZXRRdWV1ZVRhc2tPbkdsb2JhbFF1ZXVlKHZv
aWQgKF50YXNrKSgpKQogc3RhdGljIHZvaWQgUmVtb3RlVGFyZ2V0SW5pdGlhbGl6ZUdsb2JhbFF1
ZXVlKCkKIHsKICAgICBzdGF0aWMgZGlzcGF0Y2hfb25jZV90IHByZWQ7Ci0gICAgZGlzcGF0Y2hf
b25jZSgmcHJlZCwgXnsKKyAgICBkaXNwYXRjaF9vbmNlKCZwcmVkLCBeIHsKICAgICAgICAgcndp
UXVldWUgPSBuZXcgUmVtb3RlVGFyZ2V0UXVldWU7CiAKLSAgICAgICAgQ0ZSdW5Mb29wU291cmNl
Q29udGV4dCBydW5Mb29wU291cmNlQ29udGV4dCA9IHswLCBudWxscHRyLCBudWxscHRyLCBudWxs
cHRyLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBSZW1vdGVU
YXJnZXRIYW5kbGVSdW5Tb3VyY2VHbG9iYWx9OworICAgICAgICBDRlJ1bkxvb3BTb3VyY2VDb250
ZXh0IHJ1bkxvb3BTb3VyY2VDb250ZXh0ID0geyAwLCBudWxscHRyLCBudWxscHRyLCBudWxscHRy
LCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBSZW1vdGVUYXJn
ZXRIYW5kbGVSdW5Tb3VyY2VHbG9iYWwgfTsKICAgICAgICAgcndpUnVuTG9vcFNvdXJjZSA9IENG
UnVuTG9vcFNvdXJjZUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAxLCAmcnVuTG9vcFNvdXJj
ZUNvbnRleHQpOwogCiAgICAgICAgIC8vIEFkZCB0byB0aGUgZGVmYXVsdCBydW4gbG9vcCBtb2Rl
IGZvciBkZWZhdWx0IGhhbmRsaW5nLCBhbmQgdGhlIEpTQ29udGV4dCByZW1vdGUgaW5zcGVjdG9y
IHJ1biBsb29wIG1vZGUgd2hlbiBwYXVzZWQuCkBAIC0xNTksNyArMTYwLDcgQEAgYm9vbCBSZW1v
dGVDb25uZWN0aW9uVG9UYXJnZXQ6OnNldHVwKGJvb2wgaXNBdXRvbWF0aWNJbnNwZWN0aW9uLCBi
b29sIGF1dG9tYXRpY2EKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgcmVmKCk7Ci0gICAg
ZGlzcGF0Y2hBc3luY09uVGFyZ2V0KF57CisgICAgZGlzcGF0Y2hBc3luY09uVGFyZ2V0KF4gewog
ICAgICAgICB7CiAgICAgICAgICAgICBzdGQ6OmxvY2tfZ3VhcmQ8TG9jaz4gbG9jayhtX3Rhcmdl
dE11dGV4KTsKICAgICAgICAgICAgIGlmICghbV90YXJnZXQgfHwgIW1fdGFyZ2V0LT5yZW1vdGVD
b250cm9sQWxsb3dlZCgpKSB7CkBAIC0xOTQsNyArMTk1LDcgQEAgdm9pZCBSZW1vdGVDb25uZWN0
aW9uVG9UYXJnZXQ6OnRhcmdldENsb3NlZCgpCiB2b2lkIFJlbW90ZUNvbm5lY3Rpb25Ub1Rhcmdl
dDo6Y2xvc2UoKQogewogICAgIHJlZigpOwotICAgIGRpc3BhdGNoQXN5bmNPblRhcmdldCheewor
ICAgIGRpc3BhdGNoQXN5bmNPblRhcmdldCheIHsKICAgICAgICAgewogICAgICAgICAgICAgc3Rk
Ojpsb2NrX2d1YXJkPExvY2s+IGxvY2sobV90YXJnZXRNdXRleCk7CiAKQEAgLTIwOSwxMCArMjEw
LDEwIEBAIHZvaWQgUmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0OjpjbG9zZSgpCiAgICAgfSk7CiB9
CiAKLXZvaWQgUmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0OjpzZW5kTWVzc2FnZVRvVGFyZ2V0KE5T
U3RyaW5nICptZXNzYWdlKQordm9pZCBSZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQ6OnNlbmRNZXNz
YWdlVG9UYXJnZXQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogewogICAgIHJlZigpOwotICAgIGRp
c3BhdGNoQXN5bmNPblRhcmdldCheeworICAgIGRpc3BhdGNoQXN5bmNPblRhcmdldCheIHsKICAg
ICAgICAgewogICAgICAgICAgICAgUmVtb3RlQ29udHJvbGxhYmxlVGFyZ2V0KiB0YXJnZXQgPSBu
dWxscHRyOwogICAgICAgICAgICAgewpAQCAtMjQ2LDcgKzI0Nyw3IEBAIHZvaWQgUmVtb3RlQ29u
bmVjdGlvblRvVGFyZ2V0OjpzZXR1cFJ1bkxvb3AoKQogCiAgICAgbV9ydW5Mb29wID0gdGFyZ2V0
UnVuTG9vcDsKIAotICAgIENGUnVuTG9vcFNvdXJjZUNvbnRleHQgcnVuTG9vcFNvdXJjZUNvbnRl
eHQgPSB7MCwgdGhpcywgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0
ciwgbnVsbHB0ciwgbnVsbHB0ciwgUmVtb3RlVGFyZ2V0SGFuZGxlUnVuU291cmNlV2l0aEluZm99
OworICAgIENGUnVuTG9vcFNvdXJjZUNvbnRleHQgcnVuTG9vcFNvdXJjZUNvbnRleHQgPSB7IDAs
IHRoaXMsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIG51bGxw
dHIsIG51bGxwdHIsIFJlbW90ZVRhcmdldEhhbmRsZVJ1blNvdXJjZVdpdGhJbmZvIH07CiAgICAg
bV9ydW5Mb29wU291cmNlID0gYWRvcHRDRihDRlJ1bkxvb3BTb3VyY2VDcmVhdGUoa0NGQWxsb2Nh
dG9yRGVmYXVsdCwgMSwgJnJ1bkxvb3BTb3VyY2VDb250ZXh0KSk7CiAKICAgICBDRlJ1bkxvb3BB
ZGRTb3VyY2UobV9ydW5Mb29wLmdldCgpLCBtX3J1bkxvb3BTb3VyY2UuZ2V0KCksIGtDRlJ1bkxv
b3BEZWZhdWx0TW9kZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3IubW0gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL3JlbW90ZS9jb2NvYS9SZW1vdGVJbnNwZWN0b3JDb2NvYS5tbQpzaW1pbGFyaXR5IGlu
ZGV4IDgwJQpyZW5hbWUgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90
ZS9SZW1vdGVJbnNwZWN0b3IubW0KcmVuYW1lIHRvIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvcmVtb3RlL2NvY29hL1JlbW90ZUluc3BlY3RvckNvY29hLm1tCmluZGV4IDIxY2IyMzJk
OGM0Li5hODg4YjJjZDc5NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yLm1tCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvcmVtb3RlL2NvY29hL1JlbW90ZUluc3BlY3RvckNvY29hLm1tCkBAIC00Nyw3
ICs0Nyw3IEBAIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCiBzdGF0aWMgYm9vbCBjYW5BY2Nlc3NX
ZWJJbnNwZWN0b3JNYWNoUG9ydCgpCiB7Ci0gICAgcmV0dXJuIHNhbmRib3hfY2hlY2soZ2V0cGlk
KCksICJtYWNoLWxvb2t1cCIsIHN0YXRpY19jYXN0PGVudW0gc2FuZGJveF9maWx0ZXJfdHlwZT4o
U0FOREJPWF9GSUxURVJfR0xPQkFMX05BTUUgfCBTQU5EQk9YX0NIRUNLX05PX1JFUE9SVCksIFdJ
UlhQQ01hY2hQb3J0TmFtZSkgPT0gMDsKKyAgICByZXR1cm4gIXNhbmRib3hfY2hlY2soZ2V0cGlk
KCksICJtYWNoLWxvb2t1cCIsIHN0YXRpY19jYXN0PGVudW0gc2FuZGJveF9maWx0ZXJfdHlwZT4o
U0FOREJPWF9GSUxURVJfR0xPQkFMX05BTUUgfCBTQU5EQk9YX0NIRUNLX05PX1JFUE9SVCksIFdJ
UlhQQ01hY2hQb3J0TmFtZSk7CiB9CiAKIHN0YXRpYyBib29sIGdsb2JhbEF1dG9tYXRpY0luc3Bl
Y3Rpb25TdGF0ZSgpCkBAIC02MSwyMSArNjEsMTQgQEAgc3RhdGljIGJvb2wgZ2xvYmFsQXV0b21h
dGljSW5zcGVjdGlvblN0YXRlKCkKICAgICByZXR1cm4gYXV0b21hdGljSW5zcGVjdGlvbkVuYWJs
ZWQgPT0gMTsKIH0KIAotYm9vbCBSZW1vdGVJbnNwZWN0b3I6OnN0YXJ0RW5hYmxlZCA9IHRydWU7
Ci0KLXZvaWQgUmVtb3RlSW5zcGVjdG9yOjpzdGFydERpc2FibGVkKCkKLXsKLSAgICBSZW1vdGVJ
bnNwZWN0b3I6OnN0YXJ0RW5hYmxlZCA9IGZhbHNlOwotfQotCiBSZW1vdGVJbnNwZWN0b3ImIFJl
bW90ZUluc3BlY3Rvcjo6c2luZ2xldG9uKCkKIHsKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
UmVtb3RlSW5zcGVjdG9yPiBzaGFyZWQ7CiAKICAgICBzdGF0aWMgZGlzcGF0Y2hfb25jZV90IG9u
Y2U7Ci0gICAgZGlzcGF0Y2hfb25jZSgmb25jZSwgXnsKKyAgICBkaXNwYXRjaF9vbmNlKCZvbmNl
LCBeIHsKICAgICAgICAgaWYgKGNhbkFjY2Vzc1dlYkluc3BlY3Rvck1hY2hQb3J0KCkpIHsKLSAg
ICAgICAgICAgIGRpc3BhdGNoX2Jsb2NrX3QgaW5pdGlhbGl6ZSA9IF57CisgICAgICAgICAgICBk
aXNwYXRjaF9ibG9ja190IGluaXRpYWxpemUgPSBeIHsKICAgICAgICAgICAgICAgICBXVEY6Omlu
aXRpYWxpemVNYWluVGhyZWFkKCk7CiAgICAgICAgICAgICAgICAgSlNDOjppbml0aWFsaXplVGhy
ZWFkaW5nKCk7CiAgICAgICAgICAgICAgICAgaWYgKFJlbW90ZUluc3BlY3Rvcjo6c3RhcnRFbmFi
bGVkKQpAQCAtMTAxLDg1ICs5NCw2IEBAIFJlbW90ZUluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9y
KCkKIHsKIH0KIAotdW5zaWduZWQgUmVtb3RlSW5zcGVjdG9yOjpuZXh0QXZhaWxhYmxlVGFyZ2V0
SWRlbnRpZmllcigpCi17Ci0gICAgdW5zaWduZWQgbmV4dFZhbGlkVGFyZ2V0SWRlbnRpZmllcjsK
LSAgICBkbyB7Ci0gICAgICAgIG5leHRWYWxpZFRhcmdldElkZW50aWZpZXIgPSBtX25leHRBdmFp
bGFibGVUYXJnZXRJZGVudGlmaWVyKys7Ci0gICAgfSB3aGlsZSAoIW5leHRWYWxpZFRhcmdldElk
ZW50aWZpZXIgfHwgbmV4dFZhbGlkVGFyZ2V0SWRlbnRpZmllciA9PSBzdGQ6Om51bWVyaWNfbGlt
aXRzPHVuc2lnbmVkPjo6bWF4KCkgfHwgbV90YXJnZXRNYXAuY29udGFpbnMobmV4dFZhbGlkVGFy
Z2V0SWRlbnRpZmllcikpOwotICAgIHJldHVybiBuZXh0VmFsaWRUYXJnZXRJZGVudGlmaWVyOwot
fQotCi12b2lkIFJlbW90ZUluc3BlY3Rvcjo6cmVnaXN0ZXJUYXJnZXQoUmVtb3RlQ29udHJvbGxh
YmxlVGFyZ2V0KiB0YXJnZXQpCi17Ci0gICAgQVNTRVJUX0FSRyh0YXJnZXQsIHRhcmdldCk7Ci0K
LSAgICBzdGQ6OmxvY2tfZ3VhcmQ8TG9jaz4gbG9jayhtX211dGV4KTsKLQotICAgIHVuc2lnbmVk
IHRhcmdldElkZW50aWZpZXIgPSBuZXh0QXZhaWxhYmxlVGFyZ2V0SWRlbnRpZmllcigpOwotICAg
IHRhcmdldC0+c2V0VGFyZ2V0SWRlbnRpZmllcih0YXJnZXRJZGVudGlmaWVyKTsKLQotICAgIHsK
LSAgICAgICAgYXV0byByZXN1bHQgPSBtX3RhcmdldE1hcC5zZXQodGFyZ2V0SWRlbnRpZmllciwg
dGFyZ2V0KTsKLSAgICAgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdC5pc05ld0VudHJ5
KTsKLSAgICB9Ci0KLSAgICAvLyBJZiByZW1vdGUgY29udHJvbCBpcyBub3QgYWxsb3dlZCwgYSBu
dWxsIGxpc3RpbmcgaXMgcmV0dXJuZWQuCi0gICAgaWYgKFJldGFpblB0cjxOU0RpY3Rpb25hcnk+
IHRhcmdldExpc3RpbmcgPSBsaXN0aW5nRm9yVGFyZ2V0KCp0YXJnZXQpKSB7Ci0gICAgICAgIGF1
dG8gcmVzdWx0ID0gbV90YXJnZXRMaXN0aW5nTWFwLnNldCh0YXJnZXRJZGVudGlmaWVyLCB0YXJn
ZXRMaXN0aW5nKTsKLSAgICAgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdC5pc05ld0Vu
dHJ5KTsKLSAgICB9Ci0KLSAgICBwdXNoTGlzdGluZ3NTb29uKCk7Ci19Ci0KLXZvaWQgUmVtb3Rl
SW5zcGVjdG9yOjp1bnJlZ2lzdGVyVGFyZ2V0KFJlbW90ZUNvbnRyb2xsYWJsZVRhcmdldCogdGFy
Z2V0KQotewotICAgIEFTU0VSVF9BUkcodGFyZ2V0LCB0YXJnZXQpOwotCi0gICAgc3RkOjpsb2Nr
X2d1YXJkPExvY2s+IGxvY2sobV9tdXRleCk7Ci0KLSAgICB1bnNpZ25lZCB0YXJnZXRJZGVudGlm
aWVyID0gdGFyZ2V0LT50YXJnZXRJZGVudGlmaWVyKCk7Ci0gICAgaWYgKCF0YXJnZXRJZGVudGlm
aWVyKQotICAgICAgICByZXR1cm47Ci0KLSAgICBib29sIHdhc1JlbW92ZWQgPSBtX3RhcmdldE1h
cC5yZW1vdmUodGFyZ2V0SWRlbnRpZmllcik7Ci0gICAgQVNTRVJUX1VOVVNFRCh3YXNSZW1vdmVk
LCB3YXNSZW1vdmVkKTsKLQotICAgIC8vIFRoZSBsaXN0aW5nIG1heSBuZXZlciBoYXZlIGJlZW4g
YWRkZWQgaWYgcmVtb3RlIGNvbnRyb2wgaXNuJ3QgYWxsb3dlZC4KLSAgICBtX3RhcmdldExpc3Rp
bmdNYXAucmVtb3ZlKHRhcmdldElkZW50aWZpZXIpOwotCi0gICAgaWYgKGF1dG8gY29ubmVjdGlv
blRvVGFyZ2V0ID0gbV90YXJnZXRDb25uZWN0aW9uTWFwLnRha2UodGFyZ2V0SWRlbnRpZmllcikp
Ci0gICAgICAgIGNvbm5lY3Rpb25Ub1RhcmdldC0+dGFyZ2V0Q2xvc2VkKCk7Ci0KLSAgICBwdXNo
TGlzdGluZ3NTb29uKCk7Ci19Ci0KLXZvaWQgUmVtb3RlSW5zcGVjdG9yOjp1cGRhdGVUYXJnZXQo
UmVtb3RlQ29udHJvbGxhYmxlVGFyZ2V0KiB0YXJnZXQpCi17Ci0gICAgQVNTRVJUX0FSRyh0YXJn
ZXQsIHRhcmdldCk7Ci0KLSAgICBzdGQ6OmxvY2tfZ3VhcmQ8TG9jaz4gbG9jayhtX211dGV4KTsK
LQotICAgIHVuc2lnbmVkIHRhcmdldElkZW50aWZpZXIgPSB0YXJnZXQtPnRhcmdldElkZW50aWZp
ZXIoKTsKLSAgICBpZiAoIXRhcmdldElkZW50aWZpZXIpCi0gICAgICAgIHJldHVybjsKLQotICAg
IHsKLSAgICAgICAgYXV0byByZXN1bHQgPSBtX3RhcmdldE1hcC5zZXQodGFyZ2V0SWRlbnRpZmll
ciwgdGFyZ2V0KTsKLSAgICAgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsICFyZXN1bHQuaXNOZXdF
bnRyeSk7Ci0gICAgfQotCi0gICAgLy8gSWYgdGhlIHRhcmdldCBoYXMganVzdCBhbGxvd2VkIHJl
bW90ZSBjb250cm9sLCB0aGVuIHRoZSBsaXN0aW5nIHdvbid0IGV4aXN0IHlldC4KLSAgICAvLyBJ
ZiB0aGUgdGFyZ2V0IGhhcyBubyBpZGVudGlmaWVyIHJlbW92ZSB0aGUgb2xkIGxpc3RpbmcuCi0g
ICAgaWYgKFJldGFpblB0cjxOU0RpY3Rpb25hcnk+IHRhcmdldExpc3RpbmcgPSBsaXN0aW5nRm9y
VGFyZ2V0KCp0YXJnZXQpKQotICAgICAgICBtX3RhcmdldExpc3RpbmdNYXAuc2V0KHRhcmdldElk
ZW50aWZpZXIsIHRhcmdldExpc3RpbmcpOwotICAgIGVsc2UKLSAgICAgICAgbV90YXJnZXRMaXN0
aW5nTWFwLnJlbW92ZSh0YXJnZXRJZGVudGlmaWVyKTsKLQotICAgIHB1c2hMaXN0aW5nc1Nvb24o
KTsKLX0KLQogdm9pZCBSZW1vdGVJbnNwZWN0b3I6OnVwZGF0ZUF1dG9tYXRpY0luc3BlY3Rpb25D
YW5kaWRhdGUoUmVtb3RlSW5zcGVjdGlvblRhcmdldCogdGFyZ2V0KQogewogICAgIEFTU0VSVF9B
UkcodGFyZ2V0LCB0YXJnZXQpOwpAQCAtMjMwLDcgKzE0NCw3IEBAIHZvaWQgUmVtb3RlSW5zcGVj
dG9yOjp1cGRhdGVBdXRvbWF0aWNJbnNwZWN0aW9uQ2FuZGlkYXRlKFJlbW90ZUluc3BlY3Rpb25U
YXJnZXQqCiAjZWxzZQogICAgICAgICBpbnQ2NF90IGRlYnVnZ2VyVGltZW91dERlbGF5ID0gMTsK
ICNlbmRpZgotICAgICAgICBkaXNwYXRjaF9hZnRlcihkaXNwYXRjaF90aW1lKERJU1BBVENIX1RJ
TUVfTk9XLCBkZWJ1Z2dlclRpbWVvdXREZWxheSAqIE5TRUNfUEVSX1NFQyksIGRpc3BhdGNoX2dl
dF9nbG9iYWxfcXVldWUoRElTUEFUQ0hfUVVFVUVfUFJJT1JJVFlfREVGQVVMVCwgMCksIF57Cisg
ICAgICAgIGRpc3BhdGNoX2FmdGVyKGRpc3BhdGNoX3RpbWUoRElTUEFUQ0hfVElNRV9OT1csIGRl
YnVnZ2VyVGltZW91dERlbGF5ICogTlNFQ19QRVJfU0VDKSwgZGlzcGF0Y2hfZ2V0X2dsb2JhbF9x
dWV1ZShESVNQQVRDSF9RVUVVRV9QUklPUklUWV9ERUZBVUxULCAwKSwgXiB7CiAgICAgICAgICAg
ICBzdGQ6OmxvY2tfZ3VhcmQ8TG9jaz4gbG9jayhtX211dGV4KTsKICAgICAgICAgICAgIGlmICht
X2F1dG9tYXRpY0luc3BlY3Rpb25DYW5kaWRhdGVUYXJnZXRJZGVudGlmaWVyID09IHRhcmdldElk
ZW50aWZpZXIpIHsKICAgICAgICAgICAgICAgICBMT0dfRVJST1IoIlNraXBwaW5nIEF1dG9tYXRp
YyBJbnNwZWN0aW9uIENhbmRpZGF0ZSB3aXRoIHBhZ2VJZCgldSkgYmVjYXVzZSB3ZSBmYWlsZWQg
dG8gcmVjZWl2ZSBhIHJlc3BvbnNlIGluIHRpbWUuIiwgbV9hdXRvbWF0aWNJbnNwZWN0aW9uQ2Fu
ZGlkYXRlVGFyZ2V0SWRlbnRpZmllcik7CkBAIC0yNDksMzggKzE2Myw2IEBAIHZvaWQgUmVtb3Rl
SW5zcGVjdG9yOjp1cGRhdGVBdXRvbWF0aWNJbnNwZWN0aW9uQ2FuZGlkYXRlKFJlbW90ZUluc3Bl
Y3Rpb25UYXJnZXQqCiAgICAgfQogfQogCi12b2lkIFJlbW90ZUluc3BlY3Rvcjo6dXBkYXRlQ2xp
ZW50Q2FwYWJpbGl0aWVzKCkKLXsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotCi0gICAg
c3RkOjpsb2NrX2d1YXJkPExvY2s+IGxvY2sobV9tdXRleCk7Ci0KLSAgICBpZiAoIW1fY2xpZW50
KQotICAgICAgICBtX2NsaWVudENhcGFiaWxpdGllcyA9IHN0ZDo6bnVsbG9wdDsKLSAgICBlbHNl
IHsKLSAgICAgICAgUmVtb3RlSW5zcGVjdG9yOjpDbGllbnQ6OkNhcGFiaWxpdGllcyB1cGRhdGVk
Q2FwYWJpbGl0aWVzID0gewotICAgICAgICAgICAgbV9jbGllbnQtPnJlbW90ZUF1dG9tYXRpb25B
bGxvd2VkKCkgLy8gcmVtb3RlQXV0b21hdGlvbkFsbG93ZWQKLSAgICAgICAgfTsKLQotICAgICAg
ICBtX2NsaWVudENhcGFiaWxpdGllcyA9IHVwZGF0ZWRDYXBhYmlsaXRpZXM7Ci0gICAgfQotfQot
Ci12b2lkIFJlbW90ZUluc3BlY3Rvcjo6c2V0UmVtb3RlSW5zcGVjdG9yQ2xpZW50KFJlbW90ZUlu
c3BlY3Rvcjo6Q2xpZW50KiBjbGllbnQpCi17Ci0gICAgQVNTRVJUX0FSRyhjbGllbnQsIGNsaWVu
dCk7Ci0gICAgQVNTRVJUKCFtX2NsaWVudCk7Ci0KLSAgICB7Ci0gICAgICAgIHN0ZDo6bG9ja19n
dWFyZDxMb2NrPiBsb2NrKG1fbXV0ZXgpOwotICAgICAgICBtX2NsaWVudCA9IGNsaWVudDsKLSAg
ICB9Ci0KLSAgICAvLyBTZW5kIGFuIHVwZGF0ZWQgbGlzdGluZyB0aGF0IGluY2x1ZGVzIHdoZXRo
ZXIgdGhlIGNsaWVudCBhbGxvd3MgcmVtb3RlIGF1dG9tYXRpb24uCi0gICAgdXBkYXRlQ2xpZW50
Q2FwYWJpbGl0aWVzKCk7Ci0gICAgcHVzaExpc3RpbmdzU29vbigpOwotfQotCiB2b2lkIFJlbW90
ZUluc3BlY3Rvcjo6c2VuZEF1dG9tYXRpY0luc3BlY3Rpb25DYW5kaWRhdGVNZXNzYWdlKCkKIHsK
ICAgICBBU1NFUlQobV9lbmFibGVkKTsKQEAgLTMxMyw0MCArMTk1LDYgQEAgdm9pZCBSZW1vdGVJ
bnNwZWN0b3I6OnNlbmRNZXNzYWdlVG9SZW1vdGUodW5zaWduZWQgdGFyZ2V0SWRlbnRpZmllciwg
Y29uc3QgU3RyaW4KICAgICBtX3JlbGF5Q29ubmVjdGlvbi0+c2VuZE1lc3NhZ2UoV0lSUmF3RGF0
YU1lc3NhZ2UsIHVzZXJJbmZvKTsKIH0KIAotdm9pZCBSZW1vdGVJbnNwZWN0b3I6OnNldHVwRmFp
bGVkKHVuc2lnbmVkIHRhcmdldElkZW50aWZpZXIpCi17Ci0gICAgc3RkOjpsb2NrX2d1YXJkPExv
Y2s+IGxvY2sobV9tdXRleCk7Ci0KLSAgICBtX3RhcmdldENvbm5lY3Rpb25NYXAucmVtb3ZlKHRh
cmdldElkZW50aWZpZXIpOwotCi0gICAgdXBkYXRlSGFzQWN0aXZlRGVidWdTZXNzaW9uKCk7Ci0K
LSAgICBpZiAodGFyZ2V0SWRlbnRpZmllciA9PSBtX2F1dG9tYXRpY0luc3BlY3Rpb25DYW5kaWRh
dGVUYXJnZXRJZGVudGlmaWVyKQotICAgICAgICBtX2F1dG9tYXRpY0luc3BlY3Rpb25QYXVzZWQg
PSBmYWxzZTsKLQotICAgIHB1c2hMaXN0aW5nc1Nvb24oKTsKLX0KLQotdm9pZCBSZW1vdGVJbnNw
ZWN0b3I6OnNldHVwQ29tcGxldGVkKHVuc2lnbmVkIHRhcmdldElkZW50aWZpZXIpCi17Ci0gICAg
c3RkOjpsb2NrX2d1YXJkPExvY2s+IGxvY2sobV9tdXRleCk7Ci0KLSAgICBpZiAodGFyZ2V0SWRl
bnRpZmllciA9PSBtX2F1dG9tYXRpY0luc3BlY3Rpb25DYW5kaWRhdGVUYXJnZXRJZGVudGlmaWVy
KQotICAgICAgICBtX2F1dG9tYXRpY0luc3BlY3Rpb25QYXVzZWQgPSBmYWxzZTsKLX0KLQotYm9v
bCBSZW1vdGVJbnNwZWN0b3I6OndhaXRpbmdGb3JBdXRvbWF0aWNJbnNwZWN0aW9uKHVuc2lnbmVk
KQotewotICAgIC8vIFdlIGRvbid0IHRha2UgdGhlIGxvY2sgdG8gY2hlY2sgdGhpcyBiZWNhdXNl
IHdlIGFzc3VtZSBpdCB3aWxsIGJlIGNoZWNrZWQgcmVwZWF0ZWRseS4KLSAgICByZXR1cm4gbV9h
dXRvbWF0aWNJbnNwZWN0aW9uUGF1c2VkOwotfQotCi12b2lkIFJlbW90ZUluc3BlY3Rvcjo6Y2xp
ZW50Q2FwYWJpbGl0aWVzRGlkQ2hhbmdlKCkKLXsKLSAgICB1cGRhdGVDbGllbnRDYXBhYmlsaXRp
ZXMoKTsKLSAgICBwdXNoTGlzdGluZ3NTb29uKCk7Ci19Ci0KIHZvaWQgUmVtb3RlSW5zcGVjdG9y
OjpzdGFydCgpCiB7CiAgICAgc3RkOjpsb2NrX2d1YXJkPExvY2s+IGxvY2sobV9tdXRleCk7CkBA
IC0zNTgsNyArMjA2LDcgQEAgdm9pZCBSZW1vdGVJbnNwZWN0b3I6OnN0YXJ0KCkKIAogICAgIC8v
IExvYWQgdGhlIGluaXRpYWwgYXV0b21hdGljIGluc3BlY3Rpb24gc3RhdGUgd2hlbiBmaXJzdCBz
dGFydGVkLCBzbyB3ZSBrbm93IGl0IGJlZm9yZSB3ZSBoYXZlIGV2ZW4gY29ubmVjdGVkIHRvIHdl
Ymluc3BlY3RvcmQuCiAgICAgc3RhdGljIGRpc3BhdGNoX29uY2VfdCBvbmNlOwotICAgIGRpc3Bh
dGNoX29uY2UoJm9uY2UsIF57CisgICAgZGlzcGF0Y2hfb25jZSgmb25jZSwgXiB7CiAgICAgICAg
IG1fYXV0b21hdGljSW5zcGVjdGlvbkVuYWJsZWQgPSBnbG9iYWxBdXRvbWF0aWNJbnNwZWN0aW9u
U3RhdGUoKTsKICAgICB9KTsKIApAQCAtMzY5LDEzICsyMTcsNiBAQCB2b2lkIFJlbW90ZUluc3Bl
Y3Rvcjo6c3RhcnQoKQogICAgIG5vdGlmeV9wb3N0KFdJUlNlcnZpY2VBdmFpbGFiaWxpdHlDaGVj
a05vdGlmaWNhdGlvbik7CiB9CiAKLXZvaWQgUmVtb3RlSW5zcGVjdG9yOjpzdG9wKCkKLXsKLSAg
ICBzdGQ6OmxvY2tfZ3VhcmQ8TG9jaz4gbG9jayhtX211dGV4KTsKLQotICAgIHN0b3BJbnRlcm5h
bChTdG9wU291cmNlOjpBUEkpOwotfQotCiB2b2lkIFJlbW90ZUluc3BlY3Rvcjo6c3RvcEludGVy
bmFsKFN0b3BTb3VyY2Ugc291cmNlKQogewogICAgIGlmICghbV9lbmFibGVkKQpAQCAtNTEyLDE3
ICszNTMsNiBAQCB2b2lkIFJlbW90ZUluc3BlY3Rvcjo6eHBjQ29ubmVjdGlvblVuaGFuZGxlZE1l
c3NhZ2UoUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbgogCiAjcHJhZ21hIG1hcmsgLSBMaXN0
aW5ncwogCi1SZXRhaW5QdHI8TlNEaWN0aW9uYXJ5PiBSZW1vdGVJbnNwZWN0b3I6Omxpc3RpbmdG
b3JUYXJnZXQoY29uc3QgUmVtb3RlQ29udHJvbGxhYmxlVGFyZ2V0JiB0YXJnZXQpIGNvbnN0Ci17
Ci0gICAgaWYgKGlzPFJlbW90ZUluc3BlY3Rpb25UYXJnZXQ+KHRhcmdldCkpCi0gICAgICAgIHJl
dHVybiBsaXN0aW5nRm9ySW5zcGVjdGlvblRhcmdldChkb3duY2FzdDxSZW1vdGVJbnNwZWN0aW9u
VGFyZ2V0Pih0YXJnZXQpKTsKLSAgICBpZiAoaXM8UmVtb3RlQXV0b21hdGlvblRhcmdldD4odGFy
Z2V0KSkKLSAgICAgICAgcmV0dXJuIGxpc3RpbmdGb3JBdXRvbWF0aW9uVGFyZ2V0KGRvd25jYXN0
PFJlbW90ZUF1dG9tYXRpb25UYXJnZXQ+KHRhcmdldCkpOwotCi0gICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7Ci0gICAgcmV0dXJuIG5pbDsKLX0KLQogUmV0YWluUHRyPE5TRGljdGlvbmFyeT4gUmVt
b3RlSW5zcGVjdG9yOjpsaXN0aW5nRm9ySW5zcGVjdGlvblRhcmdldChjb25zdCBSZW1vdGVJbnNw
ZWN0aW9uVGFyZ2V0JiB0YXJnZXQpIGNvbnN0CiB7CiAgICAgLy8gTXVzdCBjb2xsZWN0IHRhcmdl
dCBpbmZvcm1hdGlvbiBvbiB0aGUgV2ViVGhyZWFkLCBNYWluLCBvciBXb3JrZXIgdGhyZWFkIHNp
bmNlIFJlbW90ZVRhcmdldHMgYXJlCkBAIC02MDgsMjggKzQzOCwxMyBAQCB2b2lkIFJlbW90ZUlu
c3BlY3Rvcjo6cHVzaExpc3RpbmdzU29vbigpCiAgICAgICAgIHJldHVybjsKIAogICAgIG1fcHVz
aFNjaGVkdWxlZCA9IHRydWU7Ci0gICAgZGlzcGF0Y2hfYWZ0ZXIoZGlzcGF0Y2hfdGltZShESVNQ
QVRDSF9USU1FX05PVywgMC4yICogTlNFQ19QRVJfU0VDKSwgZGlzcGF0Y2hfZ2V0X2dsb2JhbF9x
dWV1ZShESVNQQVRDSF9RVUVVRV9QUklPUklUWV9ERUZBVUxULCAwKSwgXnsKKyAgICBkaXNwYXRj
aF9hZnRlcihkaXNwYXRjaF90aW1lKERJU1BBVENIX1RJTUVfTk9XLCAwLjIgKiBOU0VDX1BFUl9T
RUMpLCBkaXNwYXRjaF9nZXRfZ2xvYmFsX3F1ZXVlKERJU1BBVENIX1FVRVVFX1BSSU9SSVRZX0RF
RkFVTFQsIDApLCBeIHsKICAgICAgICAgc3RkOjpsb2NrX2d1YXJkPExvY2s+IGxvY2sobV9tdXRl
eCk7CiAgICAgICAgIGlmIChtX3B1c2hTY2hlZHVsZWQpCiAgICAgICAgICAgICBwdXNoTGlzdGlu
Z3NOb3coKTsKICAgICB9KTsKIH0KIAotI3ByYWdtYSBtYXJrIC0gQWN0aXZlIERlYnVnZ2VyIFNl
c3Npb25zCi0KLXZvaWQgUmVtb3RlSW5zcGVjdG9yOjp1cGRhdGVIYXNBY3RpdmVEZWJ1Z1Nlc3Np
b24oKQotewotICAgIGJvb2wgaGFzQWN0aXZlRGVidWdnZXJTZXNzaW9uID0gIW1fdGFyZ2V0Q29u
bmVjdGlvbk1hcC5pc0VtcHR5KCk7Ci0gICAgaWYgKGhhc0FjdGl2ZURlYnVnZ2VyU2Vzc2lvbiA9
PSBtX2hhc0FjdGl2ZURlYnVnU2Vzc2lvbikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9oYXNB
Y3RpdmVEZWJ1Z1Nlc3Npb24gPSBoYXNBY3RpdmVEZWJ1Z2dlclNlc3Npb247Ci0KLSAgICAvLyBG
SVhNRTogRXhwb3NlIHNvbWUgd2F5IHRvIGFjY2VzcyB0aGlzIHN0YXRlIGluIGFuIGVtYmVkZGVy
LgotICAgIC8vIExlZ2FjeSBpT1MgV2ViS2l0IDEgaGFkIGEgbm90aWZpY2F0aW9uLiBUaGlzIHdp
bGwgbmVlZCB0byBiZSBzbWFydGVyIHdpdGggV2ViS2l0Mi4KLX0KLQotCiAjcHJhZ21hIG1hcmsg
LSBSZWNlaXZlZCBYUEMgTWVzc2FnZXMKIAogdm9pZCBSZW1vdGVJbnNwZWN0b3I6OnJlY2VpdmVk
U2V0dXBNZXNzYWdlKE5TRGljdGlvbmFyeSAqdXNlckluZm8pCkBAIC03MzMsNyArNTQ4LDcgQEAg
dm9pZCBSZW1vdGVJbnNwZWN0b3I6OnJlY2VpdmVkSW5kaWNhdGVNZXNzYWdlKE5TRGljdGlvbmFy
eSAqdXNlckluZm8pCiAKICAgICBCT09MIGluZGljYXRlRW5hYmxlZCA9IFtbdXNlckluZm8gb2Jq
ZWN0Rm9yS2V5OldJUkluZGljYXRlRW5hYmxlZEtleV0gYm9vbFZhbHVlXTsKIAotICAgIGNhbGxP
bldlYlRocmVhZE9yRGlzcGF0Y2hBc3luY09uTWFpblRocmVhZCheeworICAgIGNhbGxPbldlYlRo
cmVhZE9yRGlzcGF0Y2hBc3luY09uTWFpblRocmVhZCheIHsKICAgICAgICAgUmVtb3RlQ29udHJv
bGxhYmxlVGFyZ2V0KiB0YXJnZXQgPSBudWxscHRyOwogICAgICAgICB7CiAgICAgICAgICAgICBz
dGQ6OmxvY2tfZ3VhcmQ8TG9jaz4gbG9jayhtX211dGV4KTsKQEAgLTc1OSw3ICs1NzQsNyBAQCB2
b2lkIFJlbW90ZUluc3BlY3Rvcjo6cmVjZWl2ZWRQcm94eUFwcGxpY2F0aW9uU2V0dXBNZXNzYWdl
KE5TRGljdGlvbmFyeSAqKQogICAgICAgICAvLyBXZSBhcmUgYSBwcm94eSBhcHBsaWNhdGlvbiB3
aXRob3V0IHBhcmVudCBwcm9jZXNzIGluZm9ybWF0aW9uLgogICAgICAgICAvLyBXYWl0IGEgYml0
IGZvciB0aGUgaW5mb3JtYXRpb24sIGJ1dCBnaXZlIHVwIGFmdGVyIGEgc2Vjb25kLgogICAgICAg
ICBtX3Nob3VsZFNlbmRQYXJlbnRQcm9jZXNzSW5mb3JtYXRpb24gPSB0cnVlOwotICAgICAgICBk
aXNwYXRjaF9hZnRlcihkaXNwYXRjaF90aW1lKERJU1BBVENIX1RJTUVfTk9XLCAxICogTlNFQ19Q
RVJfU0VDKSwgZGlzcGF0Y2hfZ2V0X2dsb2JhbF9xdWV1ZShESVNQQVRDSF9RVUVVRV9QUklPUklU
WV9ERUZBVUxULCAwKSwgXnsKKyAgICAgICAgZGlzcGF0Y2hfYWZ0ZXIoZGlzcGF0Y2hfdGltZShE
SVNQQVRDSF9USU1FX05PVywgMSAqIE5TRUNfUEVSX1NFQyksIGRpc3BhdGNoX2dldF9nbG9iYWxf
cXVldWUoRElTUEFUQ0hfUVVFVUVfUFJJT1JJVFlfREVGQVVMVCwgMCksIF4gewogICAgICAgICAg
ICAgc3RkOjpsb2NrX2d1YXJkPExvY2s+IGxvY2sobV9tdXRleCk7CiAgICAgICAgICAgICBpZiAo
bV9zaG91bGRTZW5kUGFyZW50UHJvY2Vzc0luZm9ybWF0aW9uKQogICAgICAgICAgICAgICAgIHN0
b3BJbnRlcm5hbChTdG9wU291cmNlOjpYUENNZXNzYWdlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rp
b24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL2NvY29hL1JlbW90
ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24uaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZy
b20gU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9y
WFBDQ29ubmVjdGlvbi5oCnJlbmFtZSB0byBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L3JlbW90ZS9jb2NvYS9SZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uLmgKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3RvclhQ
Q0Nvbm5lY3Rpb24ubW0gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9j
b2NvYS9SZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uLm1tCnNpbWlsYXJpdHkgaW5kZXggOTkl
CnJlbmFtZSBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90
ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24ubW0KcmVuYW1lIHRvIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvcmVtb3RlL2NvY29hL1JlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24ubW0K
aW5kZXggNzY2MDk5NGNjMjkuLmE5MDJkNmRmYzUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uLm1t
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL2NvY29hL1JlbW90
ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24ubW0KQEAgLTEwOCw3ICsxMDgsNyBAQCB2b2lkIFJlbW90
ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb246OmNsb3NlRnJvbU1lc3NhZ2UoKQogICAgIG1fY2xvc2Vk
ID0gdHJ1ZTsKICAgICBtX2NsaWVudCA9IG51bGxwdHI7CiAKLSAgICBkaXNwYXRjaF9hc3luYyht
X3F1ZXVlLCBeeworICAgIGRpc3BhdGNoX2FzeW5jKG1fcXVldWUsIF4gewogICAgICAgICBzdGQ6
OmxvY2tfZ3VhcmQ8TG9jaz4gbG9jayhtX211dGV4KTsKICAgICAgICAgLy8gVGhpcyB3aWxsIHRy
aWdnZXIgb25lIGxhc3QgWFBDX0VSUk9SX0NPTk5FQ1RJT05fSU5WQUxJRCBldmVudCBvbiB0aGUg
cXVldWUgYW5kIGRlcmVmIHVzLgogICAgICAgICBjbG9zZU9uUXVldWUoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCmluZGV4IGMxMjgwMTgzMDM1Li40ZGEzNDc1MmEy
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCkBAIC0zNzcsNyAr
Mzc3LDcgQEAgdm9pZCBXZWJQcm9jZXNzOjppbml0aWFsaXplV2ViUHJvY2VzcyhXZWJQcm9jZXNz
Q3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKICAgICBzZXRFbmFibGVkU2VydmljZXMo
cGFyYW1ldGVycy5oYXNJbWFnZVNlcnZpY2VzLCBwYXJhbWV0ZXJzLmhhc1NlbGVjdGlvblNlcnZp
Y2VzLCBwYXJhbWV0ZXJzLmhhc1JpY2hDb250ZW50U2VydmljZXMpOwogI2VuZGlmCiAKLSNpZiBF
TkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKKyNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikgJiYg
UExBVEZPUk0oQ09DT0EpCiAgICAgYXVkaXRfdG9rZW5fdCBhdWRpdFRva2VuOwogICAgIGlmIChw
YXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5nZXRBdWRpdFRva2VuKGF1ZGl0VG9rZW4pKSB7CiAg
ICAgICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IGF1ZGl0RGF0YSA9IGFkb3B0Q0YoQ0ZEYXRhQ3Jl
YXRlKG51bGxwdHIsIChjb25zdCBVSW50OCopJmF1ZGl0VG9rZW4sIHNpemVvZihhdWRpdFRva2Vu
KSkpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>298474</attachid>
            <date>2017-01-10 09:33:41 -0800</date>
            <delta_ts>2017-01-10 23:53:08 -0800</delta_ts>
            <desc>WIP: Trying to fix mac builds</desc>
            <filename>wk-inspector-patch.diff</filename>
            <type>text/plain</type>
            <size>50225</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNSZW1vdGVJbnNwZWN0b3Iu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1JlbW90ZUluc3BlY3Rvci5jcHAKaW5k
ZXggZmFlYmM1ZGUzZTEuLjNiZTYxZDA5MjcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL0pTUmVtb3RlSW5zcGVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL0pTUmVtb3RlSW5zcGVjdG9yLmNwcApAQCAtNTAsOSArNTAsOSBAQCB2b2lkIEpTUmVt
b3RlSW5zcGVjdG9yU3RhcnQodm9pZCkKICNlbmRpZgogfQogCi12b2lkIEpTUmVtb3RlSW5zcGVj
dG9yU2V0UGFyZW50UHJvY2Vzc0luZm9ybWF0aW9uKHBpZF90IHBpZCwgY29uc3QgVUludDgqIGF1
ZGl0RGF0YSwgc2l6ZV90IGF1ZGl0TGVuZ3RoKQordm9pZCBKU1JlbW90ZUluc3BlY3RvclNldFBh
cmVudFByb2Nlc3NJbmZvcm1hdGlvbihwaWRfdCBwaWQsIGNvbnN0IHVpbnQ4X3QqIGF1ZGl0RGF0
YSwgc2l6ZV90IGF1ZGl0TGVuZ3RoKQogewotI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQor
I2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKSAmJiBQTEFURk9STShDT0NPQSkKICAgICBSZXRh
aW5QdHI8Q0ZEYXRhUmVmPiBhdWRpdERhdGFSZWYgPSBhZG9wdENGKENGRGF0YUNyZWF0ZShrQ0ZB
bGxvY2F0b3JEZWZhdWx0LCBhdWRpdERhdGEsIGF1ZGl0TGVuZ3RoKSk7CiAgICAgUmVtb3RlSW5z
cGVjdG9yOjpzaW5nbGV0b24oKS5zZXRQYXJlbnRQcm9jZXNzSW5mb3JtYXRpb24ocGlkLCBhdWRp
dERhdGFSZWYpOwogI2Vsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMTdlY2Iz
MWU5ZmIuLmU5ZjcwNzA0YmE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTQ0
OCw2ICsxNDQ4LDExIEBACiAJCTc5RUUwQzAwMUI0QUZCODUwMDAzODVDOSAvKiBWYXJpYWJsZUVu
dmlyb25tZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA3OUVFMEJGRTFCNEFGQjg1MDAwMzg1QzkgLyogVmFyaWFibGVFbnZpcm9ubWVudC5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTc5RjhGQzFFMUI5
RkVEMEYwMENBNjZBQiAvKiBERkdNYXhpbWFsRmx1c2hJbnNlcnRpb25QaGFzZS5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3OUY4RkMxQzFCOUZFRDBG
MDBDQTY2QUIgLyogREZHTWF4aW1hbEZsdXNoSW5zZXJ0aW9uUGhhc2UuY3BwICovOyB9OwogCQk3
OUY4RkMxRjFCOUZFRDBGMDBDQTY2QUIgLyogREZHTWF4aW1hbEZsdXNoSW5zZXJ0aW9uUGhhc2Uu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc5RjhGQzFE
MUI5RkVEMEYwMENBNjZBQiAvKiBERkdNYXhpbWFsRmx1c2hJbnNlcnRpb25QaGFzZS5oICovOyB9
OworCQk3QUNEREVENDFFMjUyQjREMDA5N0FGRUIgLyogUmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0
Q29jb2EubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3
QUNEREVEMDFFMjUyQjJCMDA5N0FGRUIgLyogUmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0Q29jb2Eu
bW0gKi87IH07CisJCTdBQ0RERUQ1MUUyNTJCNUUwMDk3QUZFQiAvKiBSZW1vdGVJbnNwZWN0b3JD
b2NvYS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdB
Q0RERUQxMUUyNTJCMkIwMDk3QUZFQiAvKiBSZW1vdGVJbnNwZWN0b3JDb2NvYS5tbSAqLzsgfTsK
KwkJN0FDRERFRDcxRTI1MkI2ODAwOTdBRkVCIC8qIFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rp
b24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBQ0RE
RUQyMUUyNTJCMkIwMDk3QUZFQiAvKiBSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJN0FDRERFRDgx
RTI1MkI2RTAwOTdBRkVCIC8qIFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24ubW0gaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QUNEREVEMzFFMjUyQjJC
MDA5N0FGRUIgLyogUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbi5tbSAqLzsgfTsKKwkJN0FD
RERFRDkxRTI1MkI4MzAwOTdBRkVCIC8qIFJlbW90ZUluc3BlY3Rvci5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QUNEREVENjFFMjUyQjVGMDA5N0FG
RUIgLyogUmVtb3RlSW5zcGVjdG9yLmNwcCAqLzsgfTsKIAkJN0JDNTQ3RDMxQjY5NTlBMTAwOTU5
QjU4IC8qIFdhc21Gb3JtYXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDdCQzU0N0QyMUI2OTU5OUIwMDk1OUI1OCAvKiBXYXNtRm9ybWF0LmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0MwMDhDREExODcx
MjRCQjAwOTU1QzI0IC8qIEpTUHJvbWlzZURlZmVycmVkLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDMDA4Q0Q4MTg3MTI0QkIwMDk1NUMyNCAvKiBK
U1Byb21pc2VEZWZlcnJlZC5jcHAgKi87IH07CiAJCTdDMDA4Q0RCMTg3MTI0QkIwMDk1NUMyNCAv
KiBKU1Byb21pc2VEZWZlcnJlZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gN0MwMDhDRDkxODcxMjRCQjAwOTU1QzI0IC8qIEpTUHJvbWlzZURlZmVycmVk
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTE3
NTIsMTIgKzE3NTcsOCBAQAogCQlBNUFCNDlERDFCRUM4MDg2MDA3MDIwRkIgLyogUGVyR2xvYmFs
T2JqZWN0V3JhcHBlcldvcmxkLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBNUFCNDlEQjFCRUM4MDc5MDA3MDIwRkIgLyogUGVyR2xvYmFsT2JqZWN0V3Jh
cHBlcldvcmxkLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJQTVCNkE3NEQxOEM2REJBNjAwRjExRTkxIC8qIENvbnNvbGVDbGllbnQuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTVCNkE3NEMxOEM2REJB
NjAwRjExRTkxIC8qIENvbnNvbGVDbGllbnQuY3BwICovOyB9OwogCQlBNUJBMTVFODE4MjM0MEIz
MDBBODJFNjkgLyogUmVtb3RlSW5zcGVjdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBBNUJBMTVFMTE4MjM0MEIzMDBBODJFNjkgLyogUmVtb3RlSW5z
cGVjdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
LQkJQTVCQTE1RTkxODIzNDBCMzAwQTgyRTY5IC8qIFJlbW90ZUluc3BlY3Rvci5tbSBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1QkExNUUyMTgyMzQwQjMw
MEE4MkU2OSAvKiBSZW1vdGVJbnNwZWN0b3IubW0gKi87IH07CiAJCUE1QkExNUVBMTgyMzQwQjQw
MEE4MkU2OSAvKiBSZW1vdGVJbnNwZWN0b3JDb25zdGFudHMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1QkExNUUzMTgyMzQwQjMwMEE4MkU2OSAvKiBS
ZW1vdGVJbnNwZWN0b3JDb25zdGFudHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQlBNUJBMTVFQjE4MjM0MEI0MDBBODJFNjkgLyogUmVtb3RlQ29u
bmVjdGlvblRvVGFyZ2V0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBNUJBMTVFNDE4MjM0MEIzMDBBODJFNjkgLyogUmVtb3RlQ29ubmVjdGlvblRvVGFy
Z2V0LmggKi87IH07Ci0JCUE1QkExNUVDMTgyMzQwQjQwMEE4MkU2OSAvKiBSZW1vdGVDb25uZWN0
aW9uVG9UYXJnZXQubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBBNUJBMTVFNTE4MjM0MEIzMDBBODJFNjkgLyogUmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0
Lm1tICovOyB9OwotCQlBNUJBMTVFRDE4MjM0MEI0MDBBODJFNjkgLyogUmVtb3RlSW5zcGVjdG9y
WFBDQ29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQTVCQTE1RTYxODIzNDBCMzAwQTgyRTY5IC8qIFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5l
Y3Rpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owot
CQlBNUJBMTVFRTE4MjM0MEI0MDBBODJFNjkgLyogUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlv
bi5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1QkEx
NUU3MTgyMzQwQjMwMEE4MkU2OSAvKiBSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uLm1tICov
OyB9OwogCQlBNUJBMTVGMDE4MjM0NUFGMDBBODJFNjkgLyogUmVtb3RlSW5zcGVjdGlvblRhcmdl
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTVCQTE1
RUYxODIzNDVBRjAwQTgyRTY5IC8qIFJlbW90ZUluc3BlY3Rpb25UYXJnZXQuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBNUMzQTFBNTE4QzA0OTAy
MDBDOTU5M0EgLyogSlNHbG9iYWxPYmplY3RDb25zb2xlQ2xpZW50LmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1QzNBMUEzMThDMDQ5MDIwMEM5NTkz
QSAvKiBKU0dsb2JhbE9iamVjdENvbnNvbGVDbGllbnQuY3BwICovOyB9OwogCQlBNUMzQTFBNjE4
QzA0OTAyMDBDOTU5M0EgLyogSlNHbG9iYWxPYmplY3RDb25zb2xlQ2xpZW50LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNUMzQTFBNDE4QzA0OTAyMDBD
OTU5M0EgLyogSlNHbG9iYWxPYmplY3RDb25zb2xlQ2xpZW50LmggKi87IH07CkBAIC0zODg4LDYg
KzM4ODksMTEgQEAKIAkJNzlFRTBCRkUxQjRBRkI4NTAwMDM4NUM5IC8qIFZhcmlhYmxlRW52aXJv
bm1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVmFyaWFibGVFbnZpcm9u
bWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3OUY4RkMxQzFCOUZFRDBGMDBD
QTY2QUIgLyogREZHTWF4aW1hbEZsdXNoSW5zZXJ0aW9uUGhhc2UuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHTWF4aW1hbEZsdXNoSW5zZXJ0aW9uUGhhc2UuY3Bw
OyBwYXRoID0gZGZnL0RGR01heGltYWxGbHVzaEluc2VydGlvblBoYXNlLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzlGOEZDMUQxQjlGRUQwRjAwQ0E2NkFCIC8qIERGR01heGlt
YWxGbHVzaEluc2VydGlvblBoYXNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9
IERGR01heGltYWxGbHVzaEluc2VydGlvblBoYXNlLmg7IHBhdGggPSBkZmcvREZHTWF4aW1hbEZs
dXNoSW5zZXJ0aW9uUGhhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0FDRERF
RDAxRTI1MkIyQjAwOTdBRkVCIC8qIFJlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldENvY29hLm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gUmVtb3RlQ29ubmVjdGlvblRv
VGFyZ2V0Q29jb2EubW07IHBhdGggPSBjb2NvYS9SZW1vdGVDb25uZWN0aW9uVG9UYXJnZXRDb2Nv
YS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0FDRERFRDExRTI1MkIyQjAwOTdB
RkVCIC8qIFJlbW90ZUluc3BlY3RvckNvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBuYW1lID0gUmVtb3RlSW5zcGVjdG9yQ29jb2EubW07IHBhdGggPSBjb2NvYS9SZW1v
dGVJbnNwZWN0b3JDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0FDRERF
RDIxRTI1MkIyQjAwOTdBRkVCIC8qIFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24uaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlv
bi5oOyBwYXRoID0gY29jb2EvUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbi5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk3QUNEREVEMzFFMjUyQjJCMDA5N0FGRUIgLyogUmVtb3Rl
SW5zcGVjdG9yWFBDQ29ubmVjdGlvbi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgbmFtZSA9IFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24ubW07IHBhdGggPSBjb2NvYS9S
ZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk3QUNEREVENjFFMjUyQjVGMDA5N0FGRUIgLyogUmVtb3RlSW5zcGVjdG9yLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZUluc3BlY3Rvci5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCQzU0N0QyMUI2OTU5OUIwMDk1OUI1OCAvKiBX
YXNtRm9ybWF0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdhc21Gb3JtYXQu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0MwMDhDRDgxODcxMjRCQjAwOTU1QzI0
IC8qIEpTUHJvbWlzZURlZmVycmVkLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEpTUHJvbWlzZURlZmVycmVkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJN0MwMDhDRDkxODcxMjRCQjAwOTU1QzI0IC8qIEpTUHJvbWlzZURlZmVycmVkLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTUHJvbWlzZURlZmVycmVkLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00MjMzLDEyICs0MjM5LDggQEAKIAkJQTVBQjQ5REIxQkVD
ODA3OTAwNzAyMEZCIC8qIFBlckdsb2JhbE9iamVjdFdyYXBwZXJXb3JsZC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBQZXJHbG9iYWxPYmplY3RXcmFwcGVyV29ybGQuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTVCNkE3NEMxOEM2REJBNjAwRjExRTkxIC8qIENv
bnNvbGVDbGllbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ29u
c29sZUNsaWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1QkExNUUxMTgy
MzQwQjMwMEE4MkU2OSAvKiBSZW1vdGVJbnNwZWN0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gUmVtb3RlSW5zcGVjdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCUE1QkExNUUyMTgyMzQwQjMwMEE4MkU2OSAvKiBSZW1vdGVJbnNwZWN0b3IubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBSZW1vdGVJbnNwZWN0b3IubW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1QkExNUUzMTgyMzQwQjMwMEE4MkU2OSAvKiBS
ZW1vdGVJbnNwZWN0b3JDb25zdGFudHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gUmVtb3RlSW5zcGVjdG9yQ29uc3RhbnRzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUE1QkExNUU0MTgyMzQwQjMwMEE4MkU2OSAvKiBSZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlQ29ubmVjdGlvblRvVGFy
Z2V0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUE1QkExNUU1MTgyMzQwQjMwMEE4
MkU2OSAvKiBSZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IHBhdGggPSBSZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQubW07IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUE1QkExNUU2MTgyMzQwQjMwMEE4MkU2OSAvKiBSZW1vdGVJ
bnNwZWN0b3JYUENDb25uZWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLQkJQTVCQTE1RTcxODIzNDBCMzAwQTgyRTY5IC8qIFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5l
Y3Rpb24ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBSZW1vdGVJ
bnNwZWN0b3JYUENDb25uZWN0aW9uLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlB
NUJBMTVFRjE4MjM0NUFGMDBBODJFNjkgLyogUmVtb3RlSW5zcGVjdGlvblRhcmdldC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVJbnNwZWN0aW9uVGFyZ2V0Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1QzNBMUEzMThDMDQ5MDIwMEM5NTkzQSAvKiBK
U0dsb2JhbE9iamVjdENvbnNvbGVDbGllbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gSlNHbG9iYWxPYmplY3RDb25zb2xlQ2xpZW50LmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQTVDM0ExQTQxOEMwNDkwMjAwQzk1OTNBIC8qIEpTR2xvYmFsT2Jq
ZWN0Q29uc29sZUNsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0ds
b2JhbE9iamVjdENvbnNvbGVDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTYwMjMsNiArNjAyNSwxNyBAQAogCQkJcGF0aCA9IGRpc2Fzc2VtYmxlci9BUk12NzsKIAkJCXNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7CiAJCX07CisJCTdBQ0RERUNGMUUyNTJBQ0EwMDk3QUZFQiAv
KiBjb2NvYSAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJ
N0FDRERFRDAxRTI1MkIyQjAwOTdBRkVCIC8qIFJlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldENvY29h
Lm1tICovLAorCQkJCTdBQ0RERUQxMUUyNTJCMkIwMDk3QUZFQiAvKiBSZW1vdGVJbnNwZWN0b3JD
b2NvYS5tbSAqLywKKwkJCQk3QUNEREVEMjFFMjUyQjJCMDA5N0FGRUIgLyogUmVtb3RlSW5zcGVj
dG9yWFBDQ29ubmVjdGlvbi5oICovLAorCQkJCTdBQ0RERUQzMUUyNTJCMkIwMDk3QUZFQiAvKiBS
ZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uLm1tICovLAorCQkJKTsKKwkJCW5hbWUgPSBjb2Nv
YTsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CiAJCTdCOThEMTMzMUI2MENEMUUw
MDIzQjFBNCAvKiB3YXNtICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9
ICgKQEAgLTc1MzcsMTkgKzc1NTAsMTcgQEAKIAkJQTVCQTE1RTAxODIzNDA5RDAwQTgyRTY5IC8q
IHJlbW90ZSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJ
N0FDRERFRDYxRTI1MkI1RjAwOTdBRkVCIC8qIFJlbW90ZUluc3BlY3Rvci5jcHAgKi8sCisJCQkJ
N0FDRERFQ0YxRTI1MkFDQTAwOTdBRkVCIC8qIGNvY29hICovLAogCQkJCTk5MkFCQ0Y1MUJFQTk0
Q0EwMDY0MDNBMCAvKiBSZW1vdGVBdXRvbWF0aW9uVGFyZ2V0LmNwcCAqLywKIAkJCQk5OTJBQkNG
NjFCRUE5NENBMDA2NDAzQTAgLyogUmVtb3RlQXV0b21hdGlvblRhcmdldC5oICovLAogCQkJCUE1
QkExNUU0MTgyMzQwQjMwMEE4MkU2OSAvKiBSZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQuaCAqLywK
LQkJCQlBNUJBMTVFNTE4MjM0MEIzMDBBODJFNjkgLyogUmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0
Lm1tICovLAogCQkJCTk5OEVENjcyMUJFRDY1OUEwMEREODAxNyAvKiBSZW1vdGVDb250cm9sbGFi
bGVUYXJnZXQuY3BwICovLAogCQkJCTk5OEVENjczMUJFRDY1OUEwMEREODAxNyAvKiBSZW1vdGVD
b250cm9sbGFibGVUYXJnZXQuaCAqLywKIAkJCQlBNTk0NTU4RTE4MjQ1RURFMDBDQzM4NDMgLyog
UmVtb3RlSW5zcGVjdGlvblRhcmdldC5jcHAgKi8sCiAJCQkJQTVCQTE1RUYxODIzNDVBRjAwQTgy
RTY5IC8qIFJlbW90ZUluc3BlY3Rpb25UYXJnZXQuaCAqLywKIAkJCQlBNUJBMTVFMTE4MjM0MEIz
MDBBODJFNjkgLyogUmVtb3RlSW5zcGVjdG9yLmggKi8sCi0JCQkJQTVCQTE1RTIxODIzNDBCMzAw
QTgyRTY5IC8qIFJlbW90ZUluc3BlY3Rvci5tbSAqLywKIAkJCQlBNUJBMTVFMzE4MjM0MEIzMDBB
ODJFNjkgLyogUmVtb3RlSW5zcGVjdG9yQ29uc3RhbnRzLmggKi8sCi0JCQkJQTVCQTE1RTYxODIz
NDBCMzAwQTgyRTY5IC8qIFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24uaCAqLywKLQkJCQlB
NUJBMTVFNzE4MjM0MEIzMDBBODJFNjkgLyogUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbi5t
bSAqLywKIAkJCSk7CiAJCQlwYXRoID0gcmVtb3RlOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsKQEAgLTg4NjAsNyArODg3MSw2IEBACiAJCQkJQTVCQTE1RjAxODIzNDVBRjAwQTgyRTY5IC8q
IFJlbW90ZUluc3BlY3Rpb25UYXJnZXQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1QkExNUU4MTgy
MzQwQjMwMEE4MkU2OSAvKiBSZW1vdGVJbnNwZWN0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1
QkExNUVBMTgyMzQwQjQwMEE4MkU2OSAvKiBSZW1vdGVJbnNwZWN0b3JDb25zdGFudHMuaCBpbiBI
ZWFkZXJzICovLAotCQkJCUE1QkExNUVEMTgyMzQwQjQwMEE4MkU2OSAvKiBSZW1vdGVJbnNwZWN0
b3JYUENDb25uZWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjI0RTU1MTE3RUUyNzQ5MDBB
QkIyMTcgLyogUmVwYXRjaC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODY5RUJDQjcwRThDNkQ0QTAw
ODcyMkNDIC8qIFJlc3VsdFR5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTcwQjBBOUQxMUE5QjY2
NDYwMDAxMzA2QSAvKiBSdW50aW1lRmxhZ3MuaCBpbiBIZWFkZXJzICovLApAQCAtODk3NCw2ICs4
OTg0LDcgQEAKIAkJCQkwRkY0Mjc0OTE1OEVCRTkxMDA0Q0I5RkYgLyogdWRpczg2X3R5cGVzLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlBN0U1QUIzOTE3OTlFNEIyMDBEMjgzM0QgLyogVURpczg2RGlz
YXNzZW1ibGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlBN0E4QUY0MTE3QURCNUYzMDA1QUIxNzQg
LyogVWludDE2QXJyYXkuaCBpbiBIZWFkZXJzICovLAorCQkJCTdBQ0RERUQ3MUUyNTJCNjgwMDk3
QUZFQiAvKiBSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk4NjY3MzlEMzEzQkZERTcxMDAyM0Q4N0MgLyogVWludDE2V2l0aEZyYWN0aW9uLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlBN0E4QUY0MjE3QURCNUYzMDA1QUIxNzQgLyogVWludDMyQXJyYXkuaCBp
biBIZWFkZXJzICovLAogCQkJCUE3QThBRjNGMTdBREI1RjMwMDVBQjE3NCAvKiBVaW50OEFycmF5
LmggaW4gSGVhZGVycyAqLywKQEAgLTk4NjUsNiArOTg3Niw3IEBACiAJCQkJMEZDMDk3NzIxNDY5
M0FGOTAwQ0YyNDQyIC8qIERGR09TUkV4aXRDb21waWxlcjY0LmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTBGNzAyNUE5MTcxNEIwRkEwMDM4MkMwRSAvKiBERkdPU1JFeGl0Q29tcGlsZXJDb21tb24u
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYzOTJDODkxQjQ2MTg4NDAwODQ0NzI4IC8qIERGR09T
UkV4aXRGdXp6LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTdBQ0RERUQ4MUUyNTJCNkUwMDk3QUZF
QiAvKiBSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MEZFRkM5QUExNjgxQTNCMzAwNTY3RjUzIC8qIERGR09TUkV4aXRKdW1wUGxhY2Vob2xkZXIuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMEYyMzVCRUQxNzE3OEU3MzAwNjkwQzdGIC8qIERGR09TUkV4
aXRQcmVwYXJhdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjYyMzc5NzFBRTQ1Q0E3MDBE
NDAyRUEgLyogREZHUGhhbnRvbUluc2VydGlvblBoYXNlLmNwcCBpbiBTb3VyY2VzICovLApAQCAt
OTg4Miw2ICs5ODk0LDcgQEAKIAkJCQk4NkVDOUREMjEzMjhERjgyMDAyQjJBRDcgLyogREZHU3Bl
Y3VsYXRpdmVKSVQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODY4ODBGMUYxNDMyOEJCOTAwQjA4
RDQyIC8qIERGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODY4
ODBGNEQxNDM1M0IyMTAwQjA4RDQyIC8qIERGR1NwZWN1bGF0aXZlSklUNjQuY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkJN0FDRERFRDUxRTI1MkI1RTAwOTdBRkVCIC8qIFJlbW90ZUluc3BlY3RvckNv
Y29hLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY2ODJGQjIxOUJDQjM2NDAwRkEzQkFEIC8qIERG
R1NTQUNhbGN1bGF0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTdEODlDRkYxN0EwQjhDQzAw
NzczQUQ4IC8qIERGR1NTQUNvbnZlcnNpb25QaGFzZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkw
RkMyMENCOTE4NTU2QTM1MDBDOUU5NTQgLyogREZHU1NBTG93ZXJpbmdQaGFzZS5jcHAgaW4gU291
cmNlcyAqLywKQEAgLTEwMjAyLDYgKzEwMjE1LDcgQEAKIAkJCQlCQ0ZEOEM5MjBFRUIyRUU3MDAy
ODM4NDggLyogSnVtcFRhYmxlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMDcwQTRBMUQ1NDNB
OTUwMDZFNzIzMiAvKiBMYXJnZUFsbG9jYXRpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRENG
M0Q1NjkxQ0QyOTQ2RDAwM0Q1QzY1IC8qIExhenlDbGFzc1N0cnVjdHVyZS5jcHAgaW4gU291cmNl
cyAqLywKKwkJCQk3QUNEREVENDFFMjUyQjREMDA5N0FGRUIgLyogUmVtb3RlQ29ubmVjdGlvblRv
VGFyZ2V0Q29jb2EubW0gaW4gU291cmNlcyAqLywKIAkJCQkwRkI1NDY3OTE0RjVDNDZCMDAyQzI5
ODkgLyogTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQ4
RjIxQjAxMDdFQzU0MTAwNDJFQzJDIC8qIExleGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBG
RjQyNzU3MTU5MTRBMjAwMDRDQjlGRiAvKiBMaW5rQnVmZmVyLmNwcCBpbiBTb3VyY2VzICovLApA
QCAtMTAyMjcsNiArMTAyNDEsNyBAQAogCQkJCTc5NUIxOTk3MUQ3OEJFMzUwMDI2MkZBMCAvKiBN
YXBCYXNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3MDA4NzM5MTdDQkU4NTMwMEMzRTY0MyAv
KiBNYXBDb25zdHJ1Y3Rvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNzRERUY5MzE4MkQ5OTE0
MDA1MjJDMjIgLyogTWFwSXRlcmF0b3JQcm90b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJ
N0FDRERFRDkxRTI1MkI4MzAwOTdBRkVCIC8qIFJlbW90ZUluc3BlY3Rvci5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlBNzAwODczRDE3Q0JFOEQzMDBDM0U2NDMgLyogTWFwUHJvdG90eXBlLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUMyQjkxNkM1MTREQTA0MEMwMENCQUM4NiAvKiBNYXJrZWRBbGxv
Y2F0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQyRDZGMDgxMzUzOUEyODAwQjAyRTg2IC8q
IE1hcmtlZEJsb2NrLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMTAzMTQsMTEgKzEwMzI5LDggQEAK
IAkJCQkwRkMzMTQxNTE4MTQ2RDcwMDAwMzMyMzIgLyogUmVnaXN0ZXJTZXQuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQTU3RDIzRUQxODkxQjU1NDAwMzFDN0ZBIC8qIFJlZ3VsYXJFeHByZXNzaW9u
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTk5MkFCQ0Y5MUJFQTlCRDIwMDY0MDNBMCAvKiBSZW1v
dGVBdXRvbWF0aW9uVGFyZ2V0LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUE1QkExNUVDMTgyMzQw
QjQwMEE4MkU2OSAvKiBSZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQubW0gaW4gU291cmNlcyAqLywK
IAkJCQk5OThFRDY3NDFCRUQ3MEFDMDBERDgwMTcgLyogUmVtb3RlQ29udHJvbGxhYmxlVGFyZ2V0
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE1OTQ1NThGMTgyNDVFRkQwMENDMzg0MyAvKiBSZW1v
dGVJbnNwZWN0aW9uVGFyZ2V0LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUE1QkExNUU5MTgyMzQw
QjMwMEE4MkU2OSAvKiBSZW1vdGVJbnNwZWN0b3IubW0gaW4gU291cmNlcyAqLywKLQkJCQlBNUJB
MTVFRTE4MjM0MEI0MDBBODJFNjkgLyogUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbi5tbSBp
biBTb3VyY2VzICovLAogCQkJCTBGMjRFNTUwMTdFRTI3NDkwMEFCQjIxNyAvKiBSZXBhdGNoLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTUyNzc3M0RFMUFBRjgzQUMwMEJERTdFOCAvKiBSdW50aW1l
VHlwZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjc3MDA5MjE0MDJGRjNDMDA3OEVCMzkgLyog
U2FtcGxpbmdDb3VudGVyLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL1BsYXRmb3JtTWFjLmNtYWtlIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1Bs
YXRmb3JtTWFjLmNtYWtlCmluZGV4IDJlNmIxNWI5YzZlLi5kNzQwNWE4NmQyOSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9QbGF0Zm9ybU1hYy5jbWFrZQpAQCAtMTAsMTEgKzEwLDE0IEBAIGxpc3Qo
QVBQRU5EIEphdmFTY3JpcHRDb3JlX1NPVVJDRVMKICAgICBBUEkvT2JqQ0NhbGxiYWNrRnVuY3Rp
b24ubW0KIAogICAgIGluc3BlY3Rvci9yZW1vdGUvUmVtb3RlQXV0b21hdGlvblRhcmdldC5jcHAK
LSAgICBpbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldC5tbQogICAgIGlu
c3BlY3Rvci9yZW1vdGUvUmVtb3RlQ29udHJvbGxhYmxlVGFyZ2V0LmNwcAogICAgIGluc3BlY3Rv
ci9yZW1vdGUvUmVtb3RlSW5zcGVjdGlvblRhcmdldC5jcHAKLSAgICBpbnNwZWN0b3IvcmVtb3Rl
L1JlbW90ZUluc3BlY3Rvci5tbQorICAgIGluc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9y
LmNwcAogICAgIGluc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbi5t
bQorCisgICAgaW5zcGVjdG9yL3JlbW90ZS9jb2NvYS9SZW1vdGVDb25uZWN0aW9uVG9UYXJnZXRD
b2NvYS5tbQorICAgIGluc3BlY3Rvci9yZW1vdGUvY29jb2EvUmVtb3RlSW5zcGVjdG9yQ29jb2Eu
bW0KKyAgICBpbnNwZWN0b3IvcmVtb3RlL2NvY29hL1JlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rp
b24ubW0KICkKIGFkZF9kZWZpbml0aW9ucygtRFNUQVRJQ0FMTFlfTElOS0VEX1dJVEhfV1RGIC1E
X19TVERDX1dBTlRfTElCX0VYVDFfXykKIApAQCAtMjYsNiArMjksNyBAQCBsaXN0KEFQUEVORCBK
YXZhU2NyaXB0Q29yZV9MSUJSQVJJRVMKIGxpc3QoQVBQRU5EIEphdmFTY3JpcHRDb3JlX0lOQ0xV
REVfRElSRUNUT1JJRVMKICAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vZGlzYXNzZW1ibGVyL3Vk
aXM4NgogICAgICR7SkFWQVNDUklQVENPUkVfRElSfS9pY3UKKyAgICAke0pBVkFTQ1JJUFRDT1JF
X0RJUn0vaW5zcGVjdG9yL3JlbW90ZS9jb2NvYQogKQogCiBzZXQoQ01BS0VfU0hBUkVEX0xJTktF
Ul9GTEFHUyAke0NNQUtFX1NIQVJFRF9MSU5LRVJfRkxBR1N9ICItY29tcGF0aWJpbGl0eV92ZXJz
aW9uIDEgLWN1cnJlbnRfdmVyc2lvbiAke1dFQktJVF9NQUNfVkVSU0lPTn0iKQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlQ29ubmVjdGlv
blRvVGFyZ2V0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1v
dGVDb25uZWN0aW9uVG9UYXJnZXQuaAppbmRleCBkYmEwNjAxNzk5YS4uODlhYTdiYzVlNzcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUNv
bm5lY3Rpb25Ub1RhcmdldC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
cmVtb3RlL1JlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldC5oCkBAIC0yNyw2NyArMjcsODIgQEAKIAog
I2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQogCi0jaW1wb3J0ICJJbnNwZWN0b3JGcm9udGVu
ZENoYW5uZWwuaCIKLSNpbXBvcnQgIlJlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldC5oIgotI2ltcG9y
dCAiUmVtb3RlSW5zcGVjdG9yLmgiCi0jaW1wb3J0IDxtdXRleD4KLSNpbXBvcnQgPHd0Zi9CbG9j
a1B0ci5oPgotI2ltcG9ydCA8d3RmL0xvY2suaD4KLSNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4K
LSNpbXBvcnQgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgIkluc3BlY3Rv
ckZyb250ZW5kQ2hhbm5lbC5oIgorI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CisjaW5jbHVkZSA8d3Rm
L1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CisKKyNpZiBQTEFURk9STShDT0NPQSkKKyNpbmNsdWRl
IDx3dGYvQmxvY2tQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAKIE9CSkNfQ0xB
U1MgTlNTdHJpbmc7CisjZW5kaWYKIAogbmFtZXNwYWNlIEluc3BlY3RvciB7CiAKK2NsYXNzIFJl
bW90ZUNvbnRyb2xsYWJsZVRhcmdldDsKKworI2lmIFBMQVRGT1JNKENPQ09BKQogdHlwZWRlZiBW
ZWN0b3I8QmxvY2tQdHI8dm9pZCAoKT4+IFJlbW90ZVRhcmdldFF1ZXVlOworI2VuZGlmCiAKIGNs
YXNzIFJlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldCBmaW5hbCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVm
Q291bnRlZDxSZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQ+LCBwdWJsaWMgRnJvbnRlbmRDaGFubmVs
IHsKIHB1YmxpYzoKLSAgICBSZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQoUmVtb3RlQ29udHJvbGxh
YmxlVGFyZ2V0KiwgTlNTdHJpbmcgKmNvbm5lY3Rpb25JZGVudGlmaWVyLCBOU1N0cmluZyAqZGVz
dGluYXRpb24pOworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIFJlbW90ZUNvbm5lY3Rpb25Ub1Rh
cmdldChSZW1vdGVDb250cm9sbGFibGVUYXJnZXQqLCBOU1N0cmluZyogY29ubmVjdGlvbklkZW50
aWZpZXIsIE5TU3RyaW5nKiBkZXN0aW5hdGlvbik7CisjZW5kaWYKICAgICB2aXJ0dWFsIH5SZW1v
dGVDb25uZWN0aW9uVG9UYXJnZXQoKTsKIAogICAgIC8vIE1haW4gQVBJLgogICAgIGJvb2wgc2V0
dXAoYm9vbCBpc0F1dG9tYXRpY0luc3BlY3Rpb24gPSBmYWxzZSwgYm9vbCBhdXRvbWF0aWNhbGx5
UGF1c2UgPSBmYWxzZSk7Ci0gICAgdm9pZCBzZW5kTWVzc2FnZVRvVGFyZ2V0KE5TU3RyaW5nICop
OworICAgIHZvaWQgc2VuZE1lc3NhZ2VUb1RhcmdldChjb25zdCBTdHJpbmcmKTsKICAgICB2b2lk
IGNsb3NlKCk7CiAgICAgdm9pZCB0YXJnZXRDbG9zZWQoKTsKIAogICAgIHN0ZDo6b3B0aW9uYWw8
dW5zaWduZWQ+IHRhcmdldElkZW50aWZpZXIoKSBjb25zdDsKKyNpZiBQTEFURk9STShDT0NPQSkK
ICAgICBOU1N0cmluZyAqY29ubmVjdGlvbklkZW50aWZpZXIoKSBjb25zdDsKICAgICBOU1N0cmlu
ZyAqZGVzdGluYXRpb24oKSBjb25zdDsKIAogICAgIExvY2smIHF1ZXVlTXV0ZXgoKSB7IHJldHVy
biBtX3F1ZXVlTXV0ZXg7IH0KICAgICBjb25zdCBSZW1vdGVUYXJnZXRRdWV1ZSYgcXVldWUoKSBj
b25zdCB7IHJldHVybiBtX3F1ZXVlOyB9CiAgICAgdm9pZCBjbGVhclF1ZXVlKCkgeyBtX3F1ZXVl
LmNsZWFyKCk7IH0KKyNlbmRpZgogCiAgICAgLy8gRnJvbnRlbmRDaGFubmVsIG92ZXJyaWRlcy4K
ICAgICBDb25uZWN0aW9uVHlwZSBjb25uZWN0aW9uVHlwZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIENvbm5lY3Rpb25UeXBlOjpSZW1vdGU7IH0KICAgICB2b2lkIHNlbmRNZXNzYWdlVG9Gcm9u
dGVuZChjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKIAogcHJpdmF0ZToKKyNpZiBQTEFURk9STShD
T0NPQSkKICAgICB2b2lkIGRpc3BhdGNoQXN5bmNPblRhcmdldCh2b2lkICheYmxvY2spKCkpOwog
CiAgICAgdm9pZCBzZXR1cFJ1bkxvb3AoKTsKICAgICB2b2lkIHRlYXJkb3duUnVuTG9vcCgpOwog
ICAgIHZvaWQgcXVldWVUYXNrT25Qcml2YXRlUnVuTG9vcCh2b2lkICheYmxvY2spKCkpOworI2Vu
ZGlmCiAKICAgICAvLyBUaGlzIGNvbm5lY3Rpb24gZnJvbSB0aGUgUmVtb3RlSW5zcGVjdG9yIHNp
bmdsZXRvbiB0byB0aGUgSW5zcGVjdGlvblRhcmdldAogICAgIC8vIGNhbiBiZSB1c2VkIG9uIG11
bHRpcGxlIHRocmVhZHMuIFNvIGFueSBhY2Nlc3MgdG8gdGhlIHRhcmdldAogICAgIC8vIGl0c2Vs
ZiBtdXN0IHRha2UgdGhpcyBtdXRleCB0byBlbnN1cmUgbV90YXJnZXQgaXMgdmFsaWQuCiAgICAg
TG9jayBtX3RhcmdldE11dGV4OwogCisjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgLy8gSWYgYSB0
YXJnZXQgaGFzIGEgc3BlY2lmaWMgcnVuIGxvb3AgaXQgd2FudHMgdG8gZXZhbHVhdGUgb24KICAg
ICAvLyB3ZSBzZXR1cCBvdXIgcnVuIGxvb3Agc291cmNlcyBvbiB0aGF0IHNwZWNpZmljIHJ1biBs
b29wLgogICAgIFJldGFpblB0cjxDRlJ1bkxvb3BSZWY+IG1fcnVuTG9vcDsKICAgICBSZXRhaW5Q
dHI8Q0ZSdW5Mb29wU291cmNlUmVmPiBtX3J1bkxvb3BTb3VyY2U7CiAgICAgUmVtb3RlVGFyZ2V0
UXVldWUgbV9xdWV1ZTsKICAgICBMb2NrIG1fcXVldWVNdXRleDsKKyNlbmRpZgogCiAgICAgUmVt
b3RlQ29udHJvbGxhYmxlVGFyZ2V0KiBtX3RhcmdldCB7IG51bGxwdHIgfTsKKyAgICBib29sIG1f
Y29ubmVjdGVkIHsgZmFsc2UgfTsKKworI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIFJldGFpblB0
cjxOU1N0cmluZz4gbV9jb25uZWN0aW9uSWRlbnRpZmllcjsKICAgICBSZXRhaW5QdHI8TlNTdHJp
bmc+IG1fZGVzdGluYXRpb247Ci0gICAgYm9vbCBtX2Nvbm5lY3RlZCB7IGZhbHNlIH07CisjZW5k
aWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEluc3BlY3RvcgpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlQ29udHJvbGxhYmxlVGFyZ2V0Lmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVDb250cm9sbGFi
bGVUYXJnZXQuaAppbmRleCBkNjVmYWVhZDk1ZC4uYWZhZTM2OWFlMWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUNvbnRyb2xsYWJsZVRh
cmdldC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90
ZUNvbnRyb2xsYWJsZVRhcmdldC5oCkBAIC0yNywxMCArMjcsMTMgQEAKIAogI2lmIEVOQUJMRShS
RU1PVEVfSU5TUEVDVE9SKQogCi0jaW5jbHVkZSA8Q29yZUZvdW5kYXRpb24vQ0ZSdW5Mb29wLmg+
CiAjaW5jbHVkZSA8d3RmL1R5cGVDYXN0cy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmlu
Zy5oPgogCisjaWYgVVNFKENGKQorI2luY2x1ZGUgPENvcmVGb3VuZGF0aW9uL0NGUnVuTG9vcC5o
PgorI2VuZGlmCisKIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCiBjbGFzcyBGcm9udGVuZENoYW5u
ZWw7CkBAIC01Myw4ICs1NiwxMCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIHJlbW90ZUNv
bnRyb2xBbGxvd2VkKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaE1lc3Nh
Z2VGcm9tUmVtb3RlKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkgPSAwOwogCisjaWYgVVNFKENGKQog
ICAgIC8vIFRoZSBkaXNwYXRjaCBibG9jayB3aWxsIGJlIHNjaGVkdWxlZCBvbiBhIGdsb2JhbCBy
dW4gbG9vcCBpZiBudWxsIGlzIHJldHVybmVkLgogICAgIHZpcnR1YWwgQ0ZSdW5Mb29wUmVmIHRh
cmdldFJ1bkxvb3AoKSB7IHJldHVybiBudWxscHRyOyB9CisjZW5kaWYKIHByaXZhdGU6CiAgICAg
dW5zaWduZWQgbV9pZGVudGlmaWVyIHswfTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0aW9uVGFyZ2V0LmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0aW9uVGFyZ2V0
LmgKaW5kZXggMzg1MmZjY2Q4MzEuLjQ1MzI5ZjZkNjJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0aW9uVGFyZ2V0LmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdGlv
blRhcmdldC5oCkBAIC00MSw4ICs0MSwxMCBAQCBwdWJsaWM6CiAgICAgYm9vbCByZW1vdGVEZWJ1
Z2dpbmdBbGxvd2VkKCkgY29uc3QgeyByZXR1cm4gbV9hbGxvd2VkOyB9CiAgICAgdm9pZCBzZXRS
ZW1vdGVEZWJ1Z2dpbmdBbGxvd2VkKGJvb2wpOwogCisjaWYgVVNFKENGKQogICAgIENGUnVuTG9v
cFJlZiB0YXJnZXRSdW5Mb29wKCkgb3ZlcnJpZGUgeyByZXR1cm4gbV9ydW5Mb29wLmdldCgpOyB9
CiAgICAgdm9pZCBzZXRUYXJnZXRSdW5Mb29wKENGUnVuTG9vcFJlZiBydW5Mb29wKSB7IG1fcnVu
TG9vcCA9IHJ1bkxvb3A7IH0KKyNlbmRpZgogCiAgICAgdmlydHVhbCBTdHJpbmcgbmFtZSgpIGNv
bnN0IHsgcmV0dXJuIFN0cmluZygpOyB9IC8vIEphdmFTY3JpcHQgYW5kIFdlYgogICAgIHZpcnR1
YWwgU3RyaW5nIHVybCgpIGNvbnN0IHsgcmV0dXJuIFN0cmluZygpOyB9IC8vIFdlYgpAQCAtNTks
NyArNjEsOSBAQCBwdWJsaWM6CiAgICAgYm9vbCByZW1vdGVDb250cm9sQWxsb3dlZCgpIGNvbnN0
IG92ZXJyaWRlOwogcHJpdmF0ZToKICAgICBib29sIG1fYWxsb3dlZCB7ZmFsc2V9OworI2lmIFVT
RShDRikKICAgICBSZXRhaW5QdHI8Q0ZSdW5Mb29wUmVmPiBtX3J1bkxvb3A7CisjZW5kaWYKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIEluc3BlY3RvcgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3Rvci5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjE1NzdiZWJiN2QwCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVj
dG9yLmNwcApAQCAtMCwwICsxLDIyNCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE2
IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlJlbW90
ZUluc3BlY3Rvci5oIgorCisjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCisKKyNpbmNsdWRl
ICJSZW1vdGVBdXRvbWF0aW9uVGFyZ2V0LmgiCisjaW5jbHVkZSAiUmVtb3RlQ29ubmVjdGlvblRv
VGFyZ2V0LmgiCisjaW5jbHVkZSAiUmVtb3RlSW5zcGVjdGlvblRhcmdldC5oIgorI2luY2x1ZGUg
IlJlbW90ZUluc3BlY3RvckNvbnN0YW50cy5oIgorI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+
CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBJbnNwZWN0b3Ig
eworCitib29sIFJlbW90ZUluc3BlY3Rvcjo6c3RhcnRFbmFibGVkID0gdHJ1ZTsKKwordm9pZCBS
ZW1vdGVJbnNwZWN0b3I6OnN0YXJ0RGlzYWJsZWQoKQoreworICAgIFJlbW90ZUluc3BlY3Rvcjo6
c3RhcnRFbmFibGVkID0gZmFsc2U7Cit9CisKK3Vuc2lnbmVkIFJlbW90ZUluc3BlY3Rvcjo6bmV4
dEF2YWlsYWJsZVRhcmdldElkZW50aWZpZXIoKQoreworICAgIHVuc2lnbmVkIG5leHRWYWxpZFRh
cmdldElkZW50aWZpZXI7CisgICAgZG8geworICAgICAgICBuZXh0VmFsaWRUYXJnZXRJZGVudGlm
aWVyID0gbV9uZXh0QXZhaWxhYmxlVGFyZ2V0SWRlbnRpZmllcisrOworICAgIH0gd2hpbGUgKCFu
ZXh0VmFsaWRUYXJnZXRJZGVudGlmaWVyIHx8IG5leHRWYWxpZFRhcmdldElkZW50aWZpZXIgPT0g
c3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpIHx8IG1fdGFyZ2V0TWFwLmNvbnRh
aW5zKG5leHRWYWxpZFRhcmdldElkZW50aWZpZXIpKTsKKyAgICByZXR1cm4gbmV4dFZhbGlkVGFy
Z2V0SWRlbnRpZmllcjsKK30KKwordm9pZCBSZW1vdGVJbnNwZWN0b3I6OnJlZ2lzdGVyVGFyZ2V0
KFJlbW90ZUNvbnRyb2xsYWJsZVRhcmdldCogdGFyZ2V0KQoreworICAgIEFTU0VSVF9BUkcodGFy
Z2V0LCB0YXJnZXQpOworCisgICAgc3RkOjpsb2NrX2d1YXJkPExvY2s+IGxvY2sobV9tdXRleCk7
CisKKyAgICB1bnNpZ25lZCB0YXJnZXRJZGVudGlmaWVyID0gbmV4dEF2YWlsYWJsZVRhcmdldElk
ZW50aWZpZXIoKTsKKyAgICB0YXJnZXQtPnNldFRhcmdldElkZW50aWZpZXIodGFyZ2V0SWRlbnRp
Zmllcik7CisKKyAgICB7CisgICAgICAgIGF1dG8gcmVzdWx0ID0gbV90YXJnZXRNYXAuc2V0KHRh
cmdldElkZW50aWZpZXIsIHRhcmdldCk7CisgICAgICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCBy
ZXN1bHQuaXNOZXdFbnRyeSk7CisgICAgfQorCisgICAgLy8gSWYgcmVtb3RlIGNvbnRyb2wgaXMg
bm90IGFsbG93ZWQsIGEgbnVsbCBsaXN0aW5nIGlzIHJldHVybmVkLgorICAgIGlmIChhdXRvIHRh
cmdldExpc3RpbmcgPSBsaXN0aW5nRm9yVGFyZ2V0KCp0YXJnZXQpKSB7CisgICAgICAgIGF1dG8g
cmVzdWx0ID0gbV90YXJnZXRMaXN0aW5nTWFwLnNldCh0YXJnZXRJZGVudGlmaWVyLCB0YXJnZXRM
aXN0aW5nKTsKKyAgICAgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdC5pc05ld0VudHJ5
KTsKKyAgICB9CisKKyAgICBwdXNoTGlzdGluZ3NTb29uKCk7Cit9CisKK3ZvaWQgUmVtb3RlSW5z
cGVjdG9yOjp1bnJlZ2lzdGVyVGFyZ2V0KFJlbW90ZUNvbnRyb2xsYWJsZVRhcmdldCogdGFyZ2V0
KQoreworICAgIEFTU0VSVF9BUkcodGFyZ2V0LCB0YXJnZXQpOworCisgICAgc3RkOjpsb2NrX2d1
YXJkPExvY2s+IGxvY2sobV9tdXRleCk7CisKKyAgICB1bnNpZ25lZCB0YXJnZXRJZGVudGlmaWVy
ID0gdGFyZ2V0LT50YXJnZXRJZGVudGlmaWVyKCk7CisgICAgaWYgKCF0YXJnZXRJZGVudGlmaWVy
KQorICAgICAgICByZXR1cm47CisKKyAgICBib29sIHdhc1JlbW92ZWQgPSBtX3RhcmdldE1hcC5y
ZW1vdmUodGFyZ2V0SWRlbnRpZmllcik7CisgICAgQVNTRVJUX1VOVVNFRCh3YXNSZW1vdmVkLCB3
YXNSZW1vdmVkKTsKKworICAgIC8vIFRoZSBsaXN0aW5nIG1heSBuZXZlciBoYXZlIGJlZW4gYWRk
ZWQgaWYgcmVtb3RlIGNvbnRyb2wgaXNuJ3QgYWxsb3dlZC4KKyAgICBtX3RhcmdldExpc3RpbmdN
YXAucmVtb3ZlKHRhcmdldElkZW50aWZpZXIpOworCisgICAgaWYgKGF1dG8gY29ubmVjdGlvblRv
VGFyZ2V0ID0gbV90YXJnZXRDb25uZWN0aW9uTWFwLnRha2UodGFyZ2V0SWRlbnRpZmllcikpCisg
ICAgICAgIGNvbm5lY3Rpb25Ub1RhcmdldC0+dGFyZ2V0Q2xvc2VkKCk7CisKKyAgICBwdXNoTGlz
dGluZ3NTb29uKCk7Cit9CisKK3ZvaWQgUmVtb3RlSW5zcGVjdG9yOjp1cGRhdGVUYXJnZXQoUmVt
b3RlQ29udHJvbGxhYmxlVGFyZ2V0KiB0YXJnZXQpCit7CisgICAgQVNTRVJUX0FSRyh0YXJnZXQs
IHRhcmdldCk7CisKKyAgICBzdGQ6OmxvY2tfZ3VhcmQ8TG9jaz4gbG9jayhtX211dGV4KTsKKwor
ICAgIHVuc2lnbmVkIHRhcmdldElkZW50aWZpZXIgPSB0YXJnZXQtPnRhcmdldElkZW50aWZpZXIo
KTsKKyAgICBpZiAoIXRhcmdldElkZW50aWZpZXIpCisgICAgICAgIHJldHVybjsKKworICAgIHsK
KyAgICAgICAgYXV0byByZXN1bHQgPSBtX3RhcmdldE1hcC5zZXQodGFyZ2V0SWRlbnRpZmllciwg
dGFyZ2V0KTsKKyAgICAgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsICFyZXN1bHQuaXNOZXdFbnRy
eSk7CisgICAgfQorCisgICAgLy8gSWYgdGhlIHRhcmdldCBoYXMganVzdCBhbGxvd2VkIHJlbW90
ZSBjb250cm9sLCB0aGVuIHRoZSBsaXN0aW5nIHdvbid0IGV4aXN0IHlldC4KKyAgICAvLyBJZiB0
aGUgdGFyZ2V0IGhhcyBubyBpZGVudGlmaWVyIHJlbW92ZSB0aGUgb2xkIGxpc3RpbmcuCisgICAg
aWYgKGF1dG8gdGFyZ2V0TGlzdGluZyA9IGxpc3RpbmdGb3JUYXJnZXQoKnRhcmdldCkpCisgICAg
ICAgIG1fdGFyZ2V0TGlzdGluZ01hcC5zZXQodGFyZ2V0SWRlbnRpZmllciwgdGFyZ2V0TGlzdGlu
Zyk7CisgICAgZWxzZQorICAgICAgICBtX3RhcmdldExpc3RpbmdNYXAucmVtb3ZlKHRhcmdldElk
ZW50aWZpZXIpOworCisgICAgcHVzaExpc3RpbmdzU29vbigpOworfQorCit2b2lkIFJlbW90ZUlu
c3BlY3Rvcjo6dXBkYXRlQ2xpZW50Q2FwYWJpbGl0aWVzKCkKK3sKKyAgICBBU1NFUlQoaXNNYWlu
VGhyZWFkKCkpOworCisgICAgc3RkOjpsb2NrX2d1YXJkPExvY2s+IGxvY2sobV9tdXRleCk7CisK
KyAgICBpZiAoIW1fY2xpZW50KQorICAgICAgICBtX2NsaWVudENhcGFiaWxpdGllcyA9IHN0ZDo6
bnVsbG9wdDsKKyAgICBlbHNlIHsKKyAgICAgICAgUmVtb3RlSW5zcGVjdG9yOjpDbGllbnQ6OkNh
cGFiaWxpdGllcyB1cGRhdGVkQ2FwYWJpbGl0aWVzID0geworICAgICAgICAgICAgbV9jbGllbnQt
PnJlbW90ZUF1dG9tYXRpb25BbGxvd2VkKCkgLy8gcmVtb3RlQXV0b21hdGlvbkFsbG93ZWQKKyAg
ICAgICAgfTsKKworICAgICAgICBtX2NsaWVudENhcGFiaWxpdGllcyA9IHVwZGF0ZWRDYXBhYmls
aXRpZXM7CisgICAgfQorfQorCit2b2lkIFJlbW90ZUluc3BlY3Rvcjo6c2V0UmVtb3RlSW5zcGVj
dG9yQ2xpZW50KFJlbW90ZUluc3BlY3Rvcjo6Q2xpZW50KiBjbGllbnQpCit7CisgICAgQVNTRVJU
X0FSRyhjbGllbnQsIGNsaWVudCk7CisgICAgQVNTRVJUKCFtX2NsaWVudCk7CisKKyAgICB7Cisg
ICAgICAgIHN0ZDo6bG9ja19ndWFyZDxMb2NrPiBsb2NrKG1fbXV0ZXgpOworICAgICAgICBtX2Ns
aWVudCA9IGNsaWVudDsKKyAgICB9CisKKyAgICAvLyBTZW5kIGFuIHVwZGF0ZWQgbGlzdGluZyB0
aGF0IGluY2x1ZGVzIHdoZXRoZXIgdGhlIGNsaWVudCBhbGxvd3MgcmVtb3RlIGF1dG9tYXRpb24u
CisgICAgdXBkYXRlQ2xpZW50Q2FwYWJpbGl0aWVzKCk7CisgICAgcHVzaExpc3RpbmdzU29vbigp
OworfQorCit2b2lkIFJlbW90ZUluc3BlY3Rvcjo6c2V0dXBGYWlsZWQodW5zaWduZWQgdGFyZ2V0
SWRlbnRpZmllcikKK3sKKyAgICBzdGQ6OmxvY2tfZ3VhcmQ8TG9jaz4gbG9jayhtX211dGV4KTsK
KworICAgIG1fdGFyZ2V0Q29ubmVjdGlvbk1hcC5yZW1vdmUodGFyZ2V0SWRlbnRpZmllcik7CisK
KyAgICB1cGRhdGVIYXNBY3RpdmVEZWJ1Z1Nlc3Npb24oKTsKKworICAgIGlmICh0YXJnZXRJZGVu
dGlmaWVyID09IG1fYXV0b21hdGljSW5zcGVjdGlvbkNhbmRpZGF0ZVRhcmdldElkZW50aWZpZXIp
CisgICAgICAgIG1fYXV0b21hdGljSW5zcGVjdGlvblBhdXNlZCA9IGZhbHNlOworCisgICAgcHVz
aExpc3RpbmdzU29vbigpOworfQorCit2b2lkIFJlbW90ZUluc3BlY3Rvcjo6c2V0dXBDb21wbGV0
ZWQodW5zaWduZWQgdGFyZ2V0SWRlbnRpZmllcikKK3sKKyAgICBzdGQ6OmxvY2tfZ3VhcmQ8TG9j
az4gbG9jayhtX211dGV4KTsKKworICAgIGlmICh0YXJnZXRJZGVudGlmaWVyID09IG1fYXV0b21h
dGljSW5zcGVjdGlvbkNhbmRpZGF0ZVRhcmdldElkZW50aWZpZXIpCisgICAgICAgIG1fYXV0b21h
dGljSW5zcGVjdGlvblBhdXNlZCA9IGZhbHNlOworfQorCitib29sIFJlbW90ZUluc3BlY3Rvcjo6
d2FpdGluZ0ZvckF1dG9tYXRpY0luc3BlY3Rpb24odW5zaWduZWQpCit7CisgICAgLy8gV2UgZG9u
J3QgdGFrZSB0aGUgbG9jayB0byBjaGVjayB0aGlzIGJlY2F1c2Ugd2UgYXNzdW1lIGl0IHdpbGwg
YmUgY2hlY2tlZCByZXBlYXRlZGx5LgorICAgIHJldHVybiBtX2F1dG9tYXRpY0luc3BlY3Rpb25Q
YXVzZWQ7Cit9CisKK3ZvaWQgUmVtb3RlSW5zcGVjdG9yOjpjbGllbnRDYXBhYmlsaXRpZXNEaWRD
aGFuZ2UoKQoreworICAgIHVwZGF0ZUNsaWVudENhcGFiaWxpdGllcygpOworICAgIHB1c2hMaXN0
aW5nc1Nvb24oKTsKK30KKwordm9pZCBSZW1vdGVJbnNwZWN0b3I6OnN0b3AoKQoreworICAgIHN0
ZDo6bG9ja19ndWFyZDxMb2NrPiBsb2NrKG1fbXV0ZXgpOworCisgICAgc3RvcEludGVybmFsKFN0
b3BTb3VyY2U6OkFQSSk7Cit9CisKK1RhcmdldExpc3RpbmcgUmVtb3RlSW5zcGVjdG9yOjpsaXN0
aW5nRm9yVGFyZ2V0KGNvbnN0IFJlbW90ZUNvbnRyb2xsYWJsZVRhcmdldCYgdGFyZ2V0KSBjb25z
dAoreworICAgIGlmIChpczxSZW1vdGVJbnNwZWN0aW9uVGFyZ2V0Pih0YXJnZXQpKQorICAgICAg
ICByZXR1cm4gbGlzdGluZ0Zvckluc3BlY3Rpb25UYXJnZXQoZG93bmNhc3Q8UmVtb3RlSW5zcGVj
dGlvblRhcmdldD4odGFyZ2V0KSk7CisgICAgaWYgKGlzPFJlbW90ZUF1dG9tYXRpb25UYXJnZXQ+
KHRhcmdldCkpCisgICAgICAgIHJldHVybiBsaXN0aW5nRm9yQXV0b21hdGlvblRhcmdldChkb3du
Y2FzdDxSZW1vdGVBdXRvbWF0aW9uVGFyZ2V0Pih0YXJnZXQpKTsKKworICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgIHJldHVybiBudWxscHRyOworfQorCit2b2lkIFJlbW90ZUluc3BlY3Rv
cjo6dXBkYXRlSGFzQWN0aXZlRGVidWdTZXNzaW9uKCkKK3sKKyAgICBib29sIGhhc0FjdGl2ZURl
YnVnZ2VyU2Vzc2lvbiA9ICFtX3RhcmdldENvbm5lY3Rpb25NYXAuaXNFbXB0eSgpOworICAgIGlm
IChoYXNBY3RpdmVEZWJ1Z2dlclNlc3Npb24gPT0gbV9oYXNBY3RpdmVEZWJ1Z1Nlc3Npb24pCisg
ICAgICAgIHJldHVybjsKKworICAgIG1faGFzQWN0aXZlRGVidWdTZXNzaW9uID0gaGFzQWN0aXZl
RGVidWdnZXJTZXNzaW9uOworCisgICAgLy8gRklYTUU6IEV4cG9zZSBzb21lIHdheSB0byBhY2Nl
c3MgdGhpcyBzdGF0ZSBpbiBhbiBlbWJlZGRlci4KKyAgICAvLyBMZWdhY3kgaU9TIFdlYktpdCAx
IGhhZCBhIG5vdGlmaWNhdGlvbi4gVGhpcyB3aWxsIG5lZWQgdG8gYmUgc21hcnRlciB3aXRoIFdl
YktpdDIuCit9CisKK30gLy8gbmFtZXNwYWNlIEluc3BlY3RvcgorCisjZW5kaWYgLy8gRU5BQkxF
KFJFTU9URV9JTlNQRUNUT1IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3Rvci5oCmluZGV4IDkzZmQxYTdkN2MwLi4yMWE3
ZTEzZjExNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1v
dGUvUmVtb3RlSW5zcGVjdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yLmgKQEAgLTI3LDE0ICsyNywxOCBAQAogCiAjaWYgRU5B
QkxFKFJFTU9URV9JTlNQRUNUT1IpCiAKLSNpbXBvcnQgIlJlbW90ZUluc3BlY3RvclhQQ0Nvbm5l
Y3Rpb24uaCIKLSNpbXBvcnQgPHd0Zi9Gb3J3YXJkLmg+Ci0jaW1wb3J0IDx3dGYvSGFzaE1hcC5o
PgotI2ltcG9ydCA8d3RmL0xvY2suaD4KLSNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KKyNpbmNs
dWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8
d3RmL0xvY2suaD4KKworI2lmIFBMQVRGT1JNKENPQ09BKQorI2luY2x1ZGUgIlJlbW90ZUluc3Bl
Y3RvclhQQ0Nvbm5lY3Rpb24uaCIKKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAKIE9CSkNf
Q0xBU1MgTlNEaWN0aW9uYXJ5OwogT0JKQ19DTEFTUyBOU1N0cmluZzsKK3R5cGVkZWYgUmV0YWlu
UHRyPE5TRGljdGlvbmFyeT4gVGFyZ2V0TGlzdGluZzsKKyNlbmRpZgogCiBuYW1lc3BhY2UgSW5z
cGVjdG9yIHsKIApAQCAtNDQsNyArNDgsMTEgQEAgY2xhc3MgUmVtb3RlQ29udHJvbGxhYmxlVGFy
Z2V0OwogY2xhc3MgUmVtb3RlSW5zcGVjdGlvblRhcmdldDsKIGNsYXNzIFJlbW90ZUluc3BlY3Rv
ckNsaWVudDsKIAotY2xhc3MgSlNfRVhQT1JUX1BSSVZBVEUgUmVtb3RlSW5zcGVjdG9yIGZpbmFs
IDogcHVibGljIFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb246OkNsaWVudCB7CitjbGFzcyBK
U19FWFBPUlRfUFJJVkFURSBSZW1vdGVJbnNwZWN0b3IgZmluYWwKKyNpZiBQTEFURk9STShDT0NP
QSkKKyAgICA6IHB1YmxpYyBSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uOjpDbGllbnQKKyNl
bmRpZgorewogcHVibGljOgogICAgIGNsYXNzIENsaWVudCB7CiAgICAgcHVibGljOgpAQCAtODAs
MTEgKzg4LDEzIEBAIHB1YmxpYzoKICAgICB2b2lkIHN0YXJ0KCk7CiAgICAgdm9pZCBzdG9wKCk7
CiAKKyNpZiBQTEFURk9STShDT0NPQSkKICAgICBib29sIGhhc1BhcmVudFByb2Nlc3NJbmZvcm1h
dGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fcGFyZW50UHJvY2Vzc0lkZW50aWZpZXIgIT0gMDsgfQog
ICAgIHBpZF90IHBhcmVudFByb2Nlc3NJZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9wYXJl
bnRQcm9jZXNzSWRlbnRpZmllcjsgfQogICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IHBhcmVudFBy
b2Nlc3NBdWRpdERhdGEoKSBjb25zdCB7IHJldHVybiBtX3BhcmVudFByb2Nlc3NBdWRpdERhdGE7
IH0KICAgICB2b2lkIHNldFBhcmVudFByb2Nlc3NJbmZvcm1hdGlvbihwaWRfdCwgUmV0YWluUHRy
PENGRGF0YVJlZj4gYXVkaXREYXRhKTsKICAgICB2b2lkIHNldFBhcmVudFByb2Nlc3NJbmZvbWF0
aW9uSXNEZWxheWVkKCk7CisjZW5kaWYKIAogcHJpdmF0ZToKICAgICBSZW1vdGVJbnNwZWN0b3Io
KTsKQEAgLTk0LDExICsxMDQsMTQgQEAgcHJpdmF0ZToKICAgICBlbnVtIGNsYXNzIFN0b3BTb3Vy
Y2UgeyBBUEksIFhQQ01lc3NhZ2UgfTsKICAgICB2b2lkIHN0b3BJbnRlcm5hbChTdG9wU291cmNl
KTsKIAorI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHZvaWQgc2V0dXBYUENDb25uZWN0aW9uSWZO
ZWVkZWQoKTsKKyNlbmRpZgorCisgICAgVGFyZ2V0TGlzdGluZyBsaXN0aW5nRm9yVGFyZ2V0KGNv
bnN0IFJlbW90ZUNvbnRyb2xsYWJsZVRhcmdldCYpIGNvbnN0OworICAgIFRhcmdldExpc3Rpbmcg
bGlzdGluZ0Zvckluc3BlY3Rpb25UYXJnZXQoY29uc3QgUmVtb3RlSW5zcGVjdGlvblRhcmdldCYp
IGNvbnN0OworICAgIFRhcmdldExpc3RpbmcgbGlzdGluZ0ZvckF1dG9tYXRpb25UYXJnZXQoY29u
c3QgUmVtb3RlQXV0b21hdGlvblRhcmdldCYpIGNvbnN0OwogCi0gICAgUmV0YWluUHRyPE5TRGlj
dGlvbmFyeT4gbGlzdGluZ0ZvclRhcmdldChjb25zdCBSZW1vdGVDb250cm9sbGFibGVUYXJnZXQm
KSBjb25zdDsKLSAgICBSZXRhaW5QdHI8TlNEaWN0aW9uYXJ5PiBsaXN0aW5nRm9ySW5zcGVjdGlv
blRhcmdldChjb25zdCBSZW1vdGVJbnNwZWN0aW9uVGFyZ2V0JikgY29uc3Q7Ci0gICAgUmV0YWlu
UHRyPE5TRGljdGlvbmFyeT4gbGlzdGluZ0ZvckF1dG9tYXRpb25UYXJnZXQoY29uc3QgUmVtb3Rl
QXV0b21hdGlvblRhcmdldCYpIGNvbnN0OwogICAgIHZvaWQgcHVzaExpc3RpbmdzTm93KCk7CiAg
ICAgdm9pZCBwdXNoTGlzdGluZ3NTb29uKCk7CiAKQEAgLTEwNyw2ICsxMjAsNyBAQCBwcml2YXRl
OgogCiAgICAgdm9pZCBzZW5kQXV0b21hdGljSW5zcGVjdGlvbkNhbmRpZGF0ZU1lc3NhZ2UoKTsK
IAorI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHZvaWQgeHBjQ29ubmVjdGlvblJlY2VpdmVkTWVz
c2FnZShSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uKiwgTlNTdHJpbmcgKm1lc3NhZ2VOYW1l
LCBOU0RpY3Rpb25hcnkgKnVzZXJJbmZvKSBvdmVycmlkZTsKICAgICB2b2lkIHhwY0Nvbm5lY3Rp
b25GYWlsZWQoUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbiopIG92ZXJyaWRlOwogICAgIHZv
aWQgeHBjQ29ubmVjdGlvblVuaGFuZGxlZE1lc3NhZ2UoUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVj
dGlvbiosIHhwY19vYmplY3RfdCkgb3ZlcnJpZGU7CkBAIC0xMjEsNiArMTM1LDcgQEAgcHJpdmF0
ZToKICAgICB2b2lkIHJlY2VpdmVkQXV0b21hdGljSW5zcGVjdGlvbkNvbmZpZ3VyYXRpb25NZXNz
YWdlKE5TRGljdGlvbmFyeSAqdXNlckluZm8pOwogICAgIHZvaWQgcmVjZWl2ZWRBdXRvbWF0aWNJ
bnNwZWN0aW9uUmVqZWN0TWVzc2FnZShOU0RpY3Rpb25hcnkgKnVzZXJJbmZvKTsKICAgICB2b2lk
IHJlY2VpdmVkQXV0b21hdGlvblNlc3Npb25SZXF1ZXN0TWVzc2FnZShOU0RpY3Rpb25hcnkgKnVz
ZXJJbmZvKTsKKyNlbmRpZgogCiAgICAgc3RhdGljIGJvb2wgc3RhcnRFbmFibGVkOwogCkBAIC0x
MzEsMTUgKzE0NiwxOSBAQCBwcml2YXRlOgogICAgIExvY2sgbV9tdXRleDsKIAogICAgIEhhc2hN
YXA8dW5zaWduZWQsIFJlbW90ZUNvbnRyb2xsYWJsZVRhcmdldCo+IG1fdGFyZ2V0TWFwOwotICAg
IEhhc2hNYXA8dW5zaWduZWQsIFJldGFpblB0cjxOU0RpY3Rpb25hcnk+PiBtX3RhcmdldExpc3Rp
bmdNYXA7CiAgICAgSGFzaE1hcDx1bnNpZ25lZCwgUmVmUHRyPFJlbW90ZUNvbm5lY3Rpb25Ub1Rh
cmdldD4+IG1fdGFyZ2V0Q29ubmVjdGlvbk1hcDsKKyAgICBIYXNoTWFwPHVuc2lnbmVkLCBUYXJn
ZXRMaXN0aW5nPiBtX3RhcmdldExpc3RpbmdNYXA7CiAKKyNpZiBQTEFURk9STShDT0NPQSkKICAg
ICBSZWZQdHI8UmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbj4gbV9yZWxheUNvbm5lY3Rpb247
CisjZW5kaWYKIAogICAgIFJlbW90ZUluc3BlY3Rvcjo6Q2xpZW50KiBtX2NsaWVudCB7IG51bGxw
dHIgfTsKICAgICBzdGQ6Om9wdGlvbmFsPFJlbW90ZUluc3BlY3Rvcjo6Q2xpZW50OjpDYXBhYmls
aXRpZXM+IG1fY2xpZW50Q2FwYWJpbGl0aWVzOwogCisjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAg
ZGlzcGF0Y2hfcXVldWVfdCBtX3hwY1F1ZXVlOworI2VuZGlmCiAgICAgdW5zaWduZWQgbV9uZXh0
QXZhaWxhYmxlVGFyZ2V0SWRlbnRpZmllciB7IDEgfTsKICAgICBpbnQgbV9ub3RpZnlUb2tlbiB7
IDAgfTsKICAgICBib29sIG1fZW5hYmxlZCB7IGZhbHNlIH07CkBAIC0xNDcsNyArMTY2LDkgQEAg
cHJpdmF0ZToKICAgICBib29sIG1fcHVzaFNjaGVkdWxlZCB7IGZhbHNlIH07CiAKICAgICBwaWRf
dCBtX3BhcmVudFByb2Nlc3NJZGVudGlmaWVyIHsgMCB9OworI2lmIFBMQVRGT1JNKENPQ09BKQog
ICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IG1fcGFyZW50UHJvY2Vzc0F1ZGl0RGF0YTsKKyNlbmRp
ZgogICAgIGJvb2wgbV9zaG91bGRTZW5kUGFyZW50UHJvY2Vzc0luZm9ybWF0aW9uIHsgZmFsc2Ug
fTsKICAgICBib29sIG1fYXV0b21hdGljSW5zcGVjdGlvbkVuYWJsZWQgeyBmYWxzZSB9OwogICAg
IGJvb2wgbV9hdXRvbWF0aWNJbnNwZWN0aW9uUGF1c2VkIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUNvbm5lY3Rpb25U
b1RhcmdldC5tbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL2NvY29h
L1JlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldENvY29hLm1tCnNpbWlsYXJpdHkgaW5kZXggOTMlCnJl
bmFtZSBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUNv
bm5lY3Rpb25Ub1RhcmdldC5tbQpyZW5hbWUgdG8gU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9yZW1vdGUvY29jb2EvUmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0Q29jb2EubW0KaW5kZXgg
ZDYwZGE0OGFmYTguLmFjM2M3MjMxZjQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQubW0KKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvY29jb2EvUmVtb3RlQ29ubmVjdGlv
blRvVGFyZ2V0Q29jb2EubW0KQEAgLTMxLDYgKzMxLDcgQEAKICNpbXBvcnQgIkV2ZW50TG9vcC5o
IgogI2ltcG9ydCAiUmVtb3RlQXV0b21hdGlvblRhcmdldC5oIgogI2ltcG9ydCAiUmVtb3RlSW5z
cGVjdGlvblRhcmdldC5oIgorI2ltcG9ydCAiUmVtb3RlSW5zcGVjdG9yLmgiCiAjaW1wb3J0IDxk
aXNwYXRjaC9kaXNwYXRjaC5oPgogI2ltcG9ydCA8d3RmL09wdGlvbmFsLmg+CiAKQEAgLTc4LDEw
ICs3OSwxMCBAQCBzdGF0aWMgdm9pZCBSZW1vdGVUYXJnZXRRdWV1ZVRhc2tPbkdsb2JhbFF1ZXVl
KHZvaWQgKF50YXNrKSgpKQogc3RhdGljIHZvaWQgUmVtb3RlVGFyZ2V0SW5pdGlhbGl6ZUdsb2Jh
bFF1ZXVlKCkKIHsKICAgICBzdGF0aWMgZGlzcGF0Y2hfb25jZV90IHByZWQ7Ci0gICAgZGlzcGF0
Y2hfb25jZSgmcHJlZCwgXnsKKyAgICBkaXNwYXRjaF9vbmNlKCZwcmVkLCBeIHsKICAgICAgICAg
cndpUXVldWUgPSBuZXcgUmVtb3RlVGFyZ2V0UXVldWU7CiAKLSAgICAgICAgQ0ZSdW5Mb29wU291
cmNlQ29udGV4dCBydW5Mb29wU291cmNlQ29udGV4dCA9IHswLCBudWxscHRyLCBudWxscHRyLCBu
dWxscHRyLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBSZW1v
dGVUYXJnZXRIYW5kbGVSdW5Tb3VyY2VHbG9iYWx9OworICAgICAgICBDRlJ1bkxvb3BTb3VyY2VD
b250ZXh0IHJ1bkxvb3BTb3VyY2VDb250ZXh0ID0geyAwLCBudWxscHRyLCBudWxscHRyLCBudWxs
cHRyLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBSZW1vdGVU
YXJnZXRIYW5kbGVSdW5Tb3VyY2VHbG9iYWwgfTsKICAgICAgICAgcndpUnVuTG9vcFNvdXJjZSA9
IENGUnVuTG9vcFNvdXJjZUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAxLCAmcnVuTG9vcFNv
dXJjZUNvbnRleHQpOwogCiAgICAgICAgIC8vIEFkZCB0byB0aGUgZGVmYXVsdCBydW4gbG9vcCBt
b2RlIGZvciBkZWZhdWx0IGhhbmRsaW5nLCBhbmQgdGhlIEpTQ29udGV4dCByZW1vdGUgaW5zcGVj
dG9yIHJ1biBsb29wIG1vZGUgd2hlbiBwYXVzZWQuCkBAIC0xNTksNyArMTYwLDcgQEAgYm9vbCBS
ZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQ6OnNldHVwKGJvb2wgaXNBdXRvbWF0aWNJbnNwZWN0aW9u
LCBib29sIGF1dG9tYXRpY2EKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgcmVmKCk7Ci0g
ICAgZGlzcGF0Y2hBc3luY09uVGFyZ2V0KF57CisgICAgZGlzcGF0Y2hBc3luY09uVGFyZ2V0KF4g
ewogICAgICAgICB7CiAgICAgICAgICAgICBzdGQ6OmxvY2tfZ3VhcmQ8TG9jaz4gbG9jayhtX3Rh
cmdldE11dGV4KTsKICAgICAgICAgICAgIGlmICghbV90YXJnZXQgfHwgIW1fdGFyZ2V0LT5yZW1v
dGVDb250cm9sQWxsb3dlZCgpKSB7CkBAIC0xOTQsNyArMTk1LDcgQEAgdm9pZCBSZW1vdGVDb25u
ZWN0aW9uVG9UYXJnZXQ6OnRhcmdldENsb3NlZCgpCiB2b2lkIFJlbW90ZUNvbm5lY3Rpb25Ub1Rh
cmdldDo6Y2xvc2UoKQogewogICAgIHJlZigpOwotICAgIGRpc3BhdGNoQXN5bmNPblRhcmdldChe
eworICAgIGRpc3BhdGNoQXN5bmNPblRhcmdldCheIHsKICAgICAgICAgewogICAgICAgICAgICAg
c3RkOjpsb2NrX2d1YXJkPExvY2s+IGxvY2sobV90YXJnZXRNdXRleCk7CiAKQEAgLTIwOSwxMCAr
MjEwLDEwIEBAIHZvaWQgUmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0OjpjbG9zZSgpCiAgICAgfSk7
CiB9CiAKLXZvaWQgUmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0OjpzZW5kTWVzc2FnZVRvVGFyZ2V0
KE5TU3RyaW5nICptZXNzYWdlKQordm9pZCBSZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQ6OnNlbmRN
ZXNzYWdlVG9UYXJnZXQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogewogICAgIHJlZigpOwotICAg
IGRpc3BhdGNoQXN5bmNPblRhcmdldCheeworICAgIGRpc3BhdGNoQXN5bmNPblRhcmdldCheIHsK
ICAgICAgICAgewogICAgICAgICAgICAgUmVtb3RlQ29udHJvbGxhYmxlVGFyZ2V0KiB0YXJnZXQg
PSBudWxscHRyOwogICAgICAgICAgICAgewpAQCAtMjQ2LDcgKzI0Nyw3IEBAIHZvaWQgUmVtb3Rl
Q29ubmVjdGlvblRvVGFyZ2V0OjpzZXR1cFJ1bkxvb3AoKQogCiAgICAgbV9ydW5Mb29wID0gdGFy
Z2V0UnVuTG9vcDsKIAotICAgIENGUnVuTG9vcFNvdXJjZUNvbnRleHQgcnVuTG9vcFNvdXJjZUNv
bnRleHQgPSB7MCwgdGhpcywgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVs
bHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgUmVtb3RlVGFyZ2V0SGFuZGxlUnVuU291cmNlV2l0aElu
Zm99OworICAgIENGUnVuTG9vcFNvdXJjZUNvbnRleHQgcnVuTG9vcFNvdXJjZUNvbnRleHQgPSB7
IDAsIHRoaXMsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIG51
bGxwdHIsIG51bGxwdHIsIFJlbW90ZVRhcmdldEhhbmRsZVJ1blNvdXJjZVdpdGhJbmZvIH07CiAg
ICAgbV9ydW5Mb29wU291cmNlID0gYWRvcHRDRihDRlJ1bkxvb3BTb3VyY2VDcmVhdGUoa0NGQWxs
b2NhdG9yRGVmYXVsdCwgMSwgJnJ1bkxvb3BTb3VyY2VDb250ZXh0KSk7CiAKICAgICBDRlJ1bkxv
b3BBZGRTb3VyY2UobV9ydW5Mb29wLmdldCgpLCBtX3J1bkxvb3BTb3VyY2UuZ2V0KCksIGtDRlJ1
bkxvb3BEZWZhdWx0TW9kZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3IubW0gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL3JlbW90ZS9jb2NvYS9SZW1vdGVJbnNwZWN0b3JDb2NvYS5tbQpzaW1pbGFyaXR5
IGluZGV4IDgwJQpyZW5hbWUgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Jl
bW90ZS9SZW1vdGVJbnNwZWN0b3IubW0KcmVuYW1lIHRvIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3IvcmVtb3RlL2NvY29hL1JlbW90ZUluc3BlY3RvckNvY29hLm1tCmluZGV4IDIxY2Iy
MzJkOGM0Li5hODg4YjJjZDc5NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yLm1tCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvcmVtb3RlL2NvY29hL1JlbW90ZUluc3BlY3RvckNvY29hLm1tCkBAIC00
Nyw3ICs0Nyw3IEBAIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCiBzdGF0aWMgYm9vbCBjYW5BY2Nl
c3NXZWJJbnNwZWN0b3JNYWNoUG9ydCgpCiB7Ci0gICAgcmV0dXJuIHNhbmRib3hfY2hlY2soZ2V0
cGlkKCksICJtYWNoLWxvb2t1cCIsIHN0YXRpY19jYXN0PGVudW0gc2FuZGJveF9maWx0ZXJfdHlw
ZT4oU0FOREJPWF9GSUxURVJfR0xPQkFMX05BTUUgfCBTQU5EQk9YX0NIRUNLX05PX1JFUE9SVCks
IFdJUlhQQ01hY2hQb3J0TmFtZSkgPT0gMDsKKyAgICByZXR1cm4gIXNhbmRib3hfY2hlY2soZ2V0
cGlkKCksICJtYWNoLWxvb2t1cCIsIHN0YXRpY19jYXN0PGVudW0gc2FuZGJveF9maWx0ZXJfdHlw
ZT4oU0FOREJPWF9GSUxURVJfR0xPQkFMX05BTUUgfCBTQU5EQk9YX0NIRUNLX05PX1JFUE9SVCks
IFdJUlhQQ01hY2hQb3J0TmFtZSk7CiB9CiAKIHN0YXRpYyBib29sIGdsb2JhbEF1dG9tYXRpY0lu
c3BlY3Rpb25TdGF0ZSgpCkBAIC02MSwyMSArNjEsMTQgQEAgc3RhdGljIGJvb2wgZ2xvYmFsQXV0
b21hdGljSW5zcGVjdGlvblN0YXRlKCkKICAgICByZXR1cm4gYXV0b21hdGljSW5zcGVjdGlvbkVu
YWJsZWQgPT0gMTsKIH0KIAotYm9vbCBSZW1vdGVJbnNwZWN0b3I6OnN0YXJ0RW5hYmxlZCA9IHRy
dWU7Ci0KLXZvaWQgUmVtb3RlSW5zcGVjdG9yOjpzdGFydERpc2FibGVkKCkKLXsKLSAgICBSZW1v
dGVJbnNwZWN0b3I6OnN0YXJ0RW5hYmxlZCA9IGZhbHNlOwotfQotCiBSZW1vdGVJbnNwZWN0b3Im
IFJlbW90ZUluc3BlY3Rvcjo6c2luZ2xldG9uKCkKIHsKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95
ZWQ8UmVtb3RlSW5zcGVjdG9yPiBzaGFyZWQ7CiAKICAgICBzdGF0aWMgZGlzcGF0Y2hfb25jZV90
IG9uY2U7Ci0gICAgZGlzcGF0Y2hfb25jZSgmb25jZSwgXnsKKyAgICBkaXNwYXRjaF9vbmNlKCZv
bmNlLCBeIHsKICAgICAgICAgaWYgKGNhbkFjY2Vzc1dlYkluc3BlY3Rvck1hY2hQb3J0KCkpIHsK
LSAgICAgICAgICAgIGRpc3BhdGNoX2Jsb2NrX3QgaW5pdGlhbGl6ZSA9IF57CisgICAgICAgICAg
ICBkaXNwYXRjaF9ibG9ja190IGluaXRpYWxpemUgPSBeIHsKICAgICAgICAgICAgICAgICBXVEY6
OmluaXRpYWxpemVNYWluVGhyZWFkKCk7CiAgICAgICAgICAgICAgICAgSlNDOjppbml0aWFsaXpl
VGhyZWFkaW5nKCk7CiAgICAgICAgICAgICAgICAgaWYgKFJlbW90ZUluc3BlY3Rvcjo6c3RhcnRF
bmFibGVkKQpAQCAtMTAxLDg1ICs5NCw2IEBAIFJlbW90ZUluc3BlY3Rvcjo6UmVtb3RlSW5zcGVj
dG9yKCkKIHsKIH0KIAotdW5zaWduZWQgUmVtb3RlSW5zcGVjdG9yOjpuZXh0QXZhaWxhYmxlVGFy
Z2V0SWRlbnRpZmllcigpCi17Ci0gICAgdW5zaWduZWQgbmV4dFZhbGlkVGFyZ2V0SWRlbnRpZmll
cjsKLSAgICBkbyB7Ci0gICAgICAgIG5leHRWYWxpZFRhcmdldElkZW50aWZpZXIgPSBtX25leHRB
dmFpbGFibGVUYXJnZXRJZGVudGlmaWVyKys7Ci0gICAgfSB3aGlsZSAoIW5leHRWYWxpZFRhcmdl
dElkZW50aWZpZXIgfHwgbmV4dFZhbGlkVGFyZ2V0SWRlbnRpZmllciA9PSBzdGQ6Om51bWVyaWNf
bGltaXRzPHVuc2lnbmVkPjo6bWF4KCkgfHwgbV90YXJnZXRNYXAuY29udGFpbnMobmV4dFZhbGlk
VGFyZ2V0SWRlbnRpZmllcikpOwotICAgIHJldHVybiBuZXh0VmFsaWRUYXJnZXRJZGVudGlmaWVy
OwotfQotCi12b2lkIFJlbW90ZUluc3BlY3Rvcjo6cmVnaXN0ZXJUYXJnZXQoUmVtb3RlQ29udHJv
bGxhYmxlVGFyZ2V0KiB0YXJnZXQpCi17Ci0gICAgQVNTRVJUX0FSRyh0YXJnZXQsIHRhcmdldCk7
Ci0KLSAgICBzdGQ6OmxvY2tfZ3VhcmQ8TG9jaz4gbG9jayhtX211dGV4KTsKLQotICAgIHVuc2ln
bmVkIHRhcmdldElkZW50aWZpZXIgPSBuZXh0QXZhaWxhYmxlVGFyZ2V0SWRlbnRpZmllcigpOwot
ICAgIHRhcmdldC0+c2V0VGFyZ2V0SWRlbnRpZmllcih0YXJnZXRJZGVudGlmaWVyKTsKLQotICAg
IHsKLSAgICAgICAgYXV0byByZXN1bHQgPSBtX3RhcmdldE1hcC5zZXQodGFyZ2V0SWRlbnRpZmll
ciwgdGFyZ2V0KTsKLSAgICAgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdC5pc05ld0Vu
dHJ5KTsKLSAgICB9Ci0KLSAgICAvLyBJZiByZW1vdGUgY29udHJvbCBpcyBub3QgYWxsb3dlZCwg
YSBudWxsIGxpc3RpbmcgaXMgcmV0dXJuZWQuCi0gICAgaWYgKFJldGFpblB0cjxOU0RpY3Rpb25h
cnk+IHRhcmdldExpc3RpbmcgPSBsaXN0aW5nRm9yVGFyZ2V0KCp0YXJnZXQpKSB7Ci0gICAgICAg
IGF1dG8gcmVzdWx0ID0gbV90YXJnZXRMaXN0aW5nTWFwLnNldCh0YXJnZXRJZGVudGlmaWVyLCB0
YXJnZXRMaXN0aW5nKTsKLSAgICAgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdC5pc05l
d0VudHJ5KTsKLSAgICB9Ci0KLSAgICBwdXNoTGlzdGluZ3NTb29uKCk7Ci19Ci0KLXZvaWQgUmVt
b3RlSW5zcGVjdG9yOjp1bnJlZ2lzdGVyVGFyZ2V0KFJlbW90ZUNvbnRyb2xsYWJsZVRhcmdldCog
dGFyZ2V0KQotewotICAgIEFTU0VSVF9BUkcodGFyZ2V0LCB0YXJnZXQpOwotCi0gICAgc3RkOjps
b2NrX2d1YXJkPExvY2s+IGxvY2sobV9tdXRleCk7Ci0KLSAgICB1bnNpZ25lZCB0YXJnZXRJZGVu
dGlmaWVyID0gdGFyZ2V0LT50YXJnZXRJZGVudGlmaWVyKCk7Ci0gICAgaWYgKCF0YXJnZXRJZGVu
dGlmaWVyKQotICAgICAgICByZXR1cm47Ci0KLSAgICBib29sIHdhc1JlbW92ZWQgPSBtX3Rhcmdl
dE1hcC5yZW1vdmUodGFyZ2V0SWRlbnRpZmllcik7Ci0gICAgQVNTRVJUX1VOVVNFRCh3YXNSZW1v
dmVkLCB3YXNSZW1vdmVkKTsKLQotICAgIC8vIFRoZSBsaXN0aW5nIG1heSBuZXZlciBoYXZlIGJl
ZW4gYWRkZWQgaWYgcmVtb3RlIGNvbnRyb2wgaXNuJ3QgYWxsb3dlZC4KLSAgICBtX3RhcmdldExp
c3RpbmdNYXAucmVtb3ZlKHRhcmdldElkZW50aWZpZXIpOwotCi0gICAgaWYgKGF1dG8gY29ubmVj
dGlvblRvVGFyZ2V0ID0gbV90YXJnZXRDb25uZWN0aW9uTWFwLnRha2UodGFyZ2V0SWRlbnRpZmll
cikpCi0gICAgICAgIGNvbm5lY3Rpb25Ub1RhcmdldC0+dGFyZ2V0Q2xvc2VkKCk7Ci0KLSAgICBw
dXNoTGlzdGluZ3NTb29uKCk7Ci19Ci0KLXZvaWQgUmVtb3RlSW5zcGVjdG9yOjp1cGRhdGVUYXJn
ZXQoUmVtb3RlQ29udHJvbGxhYmxlVGFyZ2V0KiB0YXJnZXQpCi17Ci0gICAgQVNTRVJUX0FSRyh0
YXJnZXQsIHRhcmdldCk7Ci0KLSAgICBzdGQ6OmxvY2tfZ3VhcmQ8TG9jaz4gbG9jayhtX211dGV4
KTsKLQotICAgIHVuc2lnbmVkIHRhcmdldElkZW50aWZpZXIgPSB0YXJnZXQtPnRhcmdldElkZW50
aWZpZXIoKTsKLSAgICBpZiAoIXRhcmdldElkZW50aWZpZXIpCi0gICAgICAgIHJldHVybjsKLQot
ICAgIHsKLSAgICAgICAgYXV0byByZXN1bHQgPSBtX3RhcmdldE1hcC5zZXQodGFyZ2V0SWRlbnRp
ZmllciwgdGFyZ2V0KTsKLSAgICAgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsICFyZXN1bHQuaXNO
ZXdFbnRyeSk7Ci0gICAgfQotCi0gICAgLy8gSWYgdGhlIHRhcmdldCBoYXMganVzdCBhbGxvd2Vk
IHJlbW90ZSBjb250cm9sLCB0aGVuIHRoZSBsaXN0aW5nIHdvbid0IGV4aXN0IHlldC4KLSAgICAv
LyBJZiB0aGUgdGFyZ2V0IGhhcyBubyBpZGVudGlmaWVyIHJlbW92ZSB0aGUgb2xkIGxpc3Rpbmcu
Ci0gICAgaWYgKFJldGFpblB0cjxOU0RpY3Rpb25hcnk+IHRhcmdldExpc3RpbmcgPSBsaXN0aW5n
Rm9yVGFyZ2V0KCp0YXJnZXQpKQotICAgICAgICBtX3RhcmdldExpc3RpbmdNYXAuc2V0KHRhcmdl
dElkZW50aWZpZXIsIHRhcmdldExpc3RpbmcpOwotICAgIGVsc2UKLSAgICAgICAgbV90YXJnZXRM
aXN0aW5nTWFwLnJlbW92ZSh0YXJnZXRJZGVudGlmaWVyKTsKLQotICAgIHB1c2hMaXN0aW5nc1Nv
b24oKTsKLX0KLQogdm9pZCBSZW1vdGVJbnNwZWN0b3I6OnVwZGF0ZUF1dG9tYXRpY0luc3BlY3Rp
b25DYW5kaWRhdGUoUmVtb3RlSW5zcGVjdGlvblRhcmdldCogdGFyZ2V0KQogewogICAgIEFTU0VS
VF9BUkcodGFyZ2V0LCB0YXJnZXQpOwpAQCAtMjMwLDcgKzE0NCw3IEBAIHZvaWQgUmVtb3RlSW5z
cGVjdG9yOjp1cGRhdGVBdXRvbWF0aWNJbnNwZWN0aW9uQ2FuZGlkYXRlKFJlbW90ZUluc3BlY3Rp
b25UYXJnZXQqCiAjZWxzZQogICAgICAgICBpbnQ2NF90IGRlYnVnZ2VyVGltZW91dERlbGF5ID0g
MTsKICNlbmRpZgotICAgICAgICBkaXNwYXRjaF9hZnRlcihkaXNwYXRjaF90aW1lKERJU1BBVENI
X1RJTUVfTk9XLCBkZWJ1Z2dlclRpbWVvdXREZWxheSAqIE5TRUNfUEVSX1NFQyksIGRpc3BhdGNo
X2dldF9nbG9iYWxfcXVldWUoRElTUEFUQ0hfUVVFVUVfUFJJT1JJVFlfREVGQVVMVCwgMCksIF57
CisgICAgICAgIGRpc3BhdGNoX2FmdGVyKGRpc3BhdGNoX3RpbWUoRElTUEFUQ0hfVElNRV9OT1cs
IGRlYnVnZ2VyVGltZW91dERlbGF5ICogTlNFQ19QRVJfU0VDKSwgZGlzcGF0Y2hfZ2V0X2dsb2Jh
bF9xdWV1ZShESVNQQVRDSF9RVUVVRV9QUklPUklUWV9ERUZBVUxULCAwKSwgXiB7CiAgICAgICAg
ICAgICBzdGQ6OmxvY2tfZ3VhcmQ8TG9jaz4gbG9jayhtX211dGV4KTsKICAgICAgICAgICAgIGlm
IChtX2F1dG9tYXRpY0luc3BlY3Rpb25DYW5kaWRhdGVUYXJnZXRJZGVudGlmaWVyID09IHRhcmdl
dElkZW50aWZpZXIpIHsKICAgICAgICAgICAgICAgICBMT0dfRVJST1IoIlNraXBwaW5nIEF1dG9t
YXRpYyBJbnNwZWN0aW9uIENhbmRpZGF0ZSB3aXRoIHBhZ2VJZCgldSkgYmVjYXVzZSB3ZSBmYWls
ZWQgdG8gcmVjZWl2ZSBhIHJlc3BvbnNlIGluIHRpbWUuIiwgbV9hdXRvbWF0aWNJbnNwZWN0aW9u
Q2FuZGlkYXRlVGFyZ2V0SWRlbnRpZmllcik7CkBAIC0yNDksMzggKzE2Myw2IEBAIHZvaWQgUmVt
b3RlSW5zcGVjdG9yOjp1cGRhdGVBdXRvbWF0aWNJbnNwZWN0aW9uQ2FuZGlkYXRlKFJlbW90ZUlu
c3BlY3Rpb25UYXJnZXQqCiAgICAgfQogfQogCi12b2lkIFJlbW90ZUluc3BlY3Rvcjo6dXBkYXRl
Q2xpZW50Q2FwYWJpbGl0aWVzKCkKLXsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotCi0g
ICAgc3RkOjpsb2NrX2d1YXJkPExvY2s+IGxvY2sobV9tdXRleCk7Ci0KLSAgICBpZiAoIW1fY2xp
ZW50KQotICAgICAgICBtX2NsaWVudENhcGFiaWxpdGllcyA9IHN0ZDo6bnVsbG9wdDsKLSAgICBl
bHNlIHsKLSAgICAgICAgUmVtb3RlSW5zcGVjdG9yOjpDbGllbnQ6OkNhcGFiaWxpdGllcyB1cGRh
dGVkQ2FwYWJpbGl0aWVzID0gewotICAgICAgICAgICAgbV9jbGllbnQtPnJlbW90ZUF1dG9tYXRp
b25BbGxvd2VkKCkgLy8gcmVtb3RlQXV0b21hdGlvbkFsbG93ZWQKLSAgICAgICAgfTsKLQotICAg
ICAgICBtX2NsaWVudENhcGFiaWxpdGllcyA9IHVwZGF0ZWRDYXBhYmlsaXRpZXM7Ci0gICAgfQot
fQotCi12b2lkIFJlbW90ZUluc3BlY3Rvcjo6c2V0UmVtb3RlSW5zcGVjdG9yQ2xpZW50KFJlbW90
ZUluc3BlY3Rvcjo6Q2xpZW50KiBjbGllbnQpCi17Ci0gICAgQVNTRVJUX0FSRyhjbGllbnQsIGNs
aWVudCk7Ci0gICAgQVNTRVJUKCFtX2NsaWVudCk7Ci0KLSAgICB7Ci0gICAgICAgIHN0ZDo6bG9j
a19ndWFyZDxMb2NrPiBsb2NrKG1fbXV0ZXgpOwotICAgICAgICBtX2NsaWVudCA9IGNsaWVudDsK
LSAgICB9Ci0KLSAgICAvLyBTZW5kIGFuIHVwZGF0ZWQgbGlzdGluZyB0aGF0IGluY2x1ZGVzIHdo
ZXRoZXIgdGhlIGNsaWVudCBhbGxvd3MgcmVtb3RlIGF1dG9tYXRpb24uCi0gICAgdXBkYXRlQ2xp
ZW50Q2FwYWJpbGl0aWVzKCk7Ci0gICAgcHVzaExpc3RpbmdzU29vbigpOwotfQotCiB2b2lkIFJl
bW90ZUluc3BlY3Rvcjo6c2VuZEF1dG9tYXRpY0luc3BlY3Rpb25DYW5kaWRhdGVNZXNzYWdlKCkK
IHsKICAgICBBU1NFUlQobV9lbmFibGVkKTsKQEAgLTMxMyw0MCArMTk1LDYgQEAgdm9pZCBSZW1v
dGVJbnNwZWN0b3I6OnNlbmRNZXNzYWdlVG9SZW1vdGUodW5zaWduZWQgdGFyZ2V0SWRlbnRpZmll
ciwgY29uc3QgU3RyaW4KICAgICBtX3JlbGF5Q29ubmVjdGlvbi0+c2VuZE1lc3NhZ2UoV0lSUmF3
RGF0YU1lc3NhZ2UsIHVzZXJJbmZvKTsKIH0KIAotdm9pZCBSZW1vdGVJbnNwZWN0b3I6OnNldHVw
RmFpbGVkKHVuc2lnbmVkIHRhcmdldElkZW50aWZpZXIpCi17Ci0gICAgc3RkOjpsb2NrX2d1YXJk
PExvY2s+IGxvY2sobV9tdXRleCk7Ci0KLSAgICBtX3RhcmdldENvbm5lY3Rpb25NYXAucmVtb3Zl
KHRhcmdldElkZW50aWZpZXIpOwotCi0gICAgdXBkYXRlSGFzQWN0aXZlRGVidWdTZXNzaW9uKCk7
Ci0KLSAgICBpZiAodGFyZ2V0SWRlbnRpZmllciA9PSBtX2F1dG9tYXRpY0luc3BlY3Rpb25DYW5k
aWRhdGVUYXJnZXRJZGVudGlmaWVyKQotICAgICAgICBtX2F1dG9tYXRpY0luc3BlY3Rpb25QYXVz
ZWQgPSBmYWxzZTsKLQotICAgIHB1c2hMaXN0aW5nc1Nvb24oKTsKLX0KLQotdm9pZCBSZW1vdGVJ
bnNwZWN0b3I6OnNldHVwQ29tcGxldGVkKHVuc2lnbmVkIHRhcmdldElkZW50aWZpZXIpCi17Ci0g
ICAgc3RkOjpsb2NrX2d1YXJkPExvY2s+IGxvY2sobV9tdXRleCk7Ci0KLSAgICBpZiAodGFyZ2V0
SWRlbnRpZmllciA9PSBtX2F1dG9tYXRpY0luc3BlY3Rpb25DYW5kaWRhdGVUYXJnZXRJZGVudGlm
aWVyKQotICAgICAgICBtX2F1dG9tYXRpY0luc3BlY3Rpb25QYXVzZWQgPSBmYWxzZTsKLX0KLQot
Ym9vbCBSZW1vdGVJbnNwZWN0b3I6OndhaXRpbmdGb3JBdXRvbWF0aWNJbnNwZWN0aW9uKHVuc2ln
bmVkKQotewotICAgIC8vIFdlIGRvbid0IHRha2UgdGhlIGxvY2sgdG8gY2hlY2sgdGhpcyBiZWNh
dXNlIHdlIGFzc3VtZSBpdCB3aWxsIGJlIGNoZWNrZWQgcmVwZWF0ZWRseS4KLSAgICByZXR1cm4g
bV9hdXRvbWF0aWNJbnNwZWN0aW9uUGF1c2VkOwotfQotCi12b2lkIFJlbW90ZUluc3BlY3Rvcjo6
Y2xpZW50Q2FwYWJpbGl0aWVzRGlkQ2hhbmdlKCkKLXsKLSAgICB1cGRhdGVDbGllbnRDYXBhYmls
aXRpZXMoKTsKLSAgICBwdXNoTGlzdGluZ3NTb29uKCk7Ci19Ci0KIHZvaWQgUmVtb3RlSW5zcGVj
dG9yOjpzdGFydCgpCiB7CiAgICAgc3RkOjpsb2NrX2d1YXJkPExvY2s+IGxvY2sobV9tdXRleCk7
CkBAIC0zNTgsNyArMjA2LDcgQEAgdm9pZCBSZW1vdGVJbnNwZWN0b3I6OnN0YXJ0KCkKIAogICAg
IC8vIExvYWQgdGhlIGluaXRpYWwgYXV0b21hdGljIGluc3BlY3Rpb24gc3RhdGUgd2hlbiBmaXJz
dCBzdGFydGVkLCBzbyB3ZSBrbm93IGl0IGJlZm9yZSB3ZSBoYXZlIGV2ZW4gY29ubmVjdGVkIHRv
IHdlYmluc3BlY3RvcmQuCiAgICAgc3RhdGljIGRpc3BhdGNoX29uY2VfdCBvbmNlOwotICAgIGRp
c3BhdGNoX29uY2UoJm9uY2UsIF57CisgICAgZGlzcGF0Y2hfb25jZSgmb25jZSwgXiB7CiAgICAg
ICAgIG1fYXV0b21hdGljSW5zcGVjdGlvbkVuYWJsZWQgPSBnbG9iYWxBdXRvbWF0aWNJbnNwZWN0
aW9uU3RhdGUoKTsKICAgICB9KTsKIApAQCAtMzY5LDEzICsyMTcsNiBAQCB2b2lkIFJlbW90ZUlu
c3BlY3Rvcjo6c3RhcnQoKQogICAgIG5vdGlmeV9wb3N0KFdJUlNlcnZpY2VBdmFpbGFiaWxpdHlD
aGVja05vdGlmaWNhdGlvbik7CiB9CiAKLXZvaWQgUmVtb3RlSW5zcGVjdG9yOjpzdG9wKCkKLXsK
LSAgICBzdGQ6OmxvY2tfZ3VhcmQ8TG9jaz4gbG9jayhtX211dGV4KTsKLQotICAgIHN0b3BJbnRl
cm5hbChTdG9wU291cmNlOjpBUEkpOwotfQotCiB2b2lkIFJlbW90ZUluc3BlY3Rvcjo6c3RvcElu
dGVybmFsKFN0b3BTb3VyY2Ugc291cmNlKQogewogICAgIGlmICghbV9lbmFibGVkKQpAQCAtNTEy
LDE3ICszNTMsNiBAQCB2b2lkIFJlbW90ZUluc3BlY3Rvcjo6eHBjQ29ubmVjdGlvblVuaGFuZGxl
ZE1lc3NhZ2UoUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbgogCiAjcHJhZ21hIG1hcmsgLSBM
aXN0aW5ncwogCi1SZXRhaW5QdHI8TlNEaWN0aW9uYXJ5PiBSZW1vdGVJbnNwZWN0b3I6Omxpc3Rp
bmdGb3JUYXJnZXQoY29uc3QgUmVtb3RlQ29udHJvbGxhYmxlVGFyZ2V0JiB0YXJnZXQpIGNvbnN0
Ci17Ci0gICAgaWYgKGlzPFJlbW90ZUluc3BlY3Rpb25UYXJnZXQ+KHRhcmdldCkpCi0gICAgICAg
IHJldHVybiBsaXN0aW5nRm9ySW5zcGVjdGlvblRhcmdldChkb3duY2FzdDxSZW1vdGVJbnNwZWN0
aW9uVGFyZ2V0Pih0YXJnZXQpKTsKLSAgICBpZiAoaXM8UmVtb3RlQXV0b21hdGlvblRhcmdldD4o
dGFyZ2V0KSkKLSAgICAgICAgcmV0dXJuIGxpc3RpbmdGb3JBdXRvbWF0aW9uVGFyZ2V0KGRvd25j
YXN0PFJlbW90ZUF1dG9tYXRpb25UYXJnZXQ+KHRhcmdldCkpOwotCi0gICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7Ci0gICAgcmV0dXJuIG5pbDsKLX0KLQogUmV0YWluUHRyPE5TRGljdGlvbmFyeT4g
UmVtb3RlSW5zcGVjdG9yOjpsaXN0aW5nRm9ySW5zcGVjdGlvblRhcmdldChjb25zdCBSZW1vdGVJ
bnNwZWN0aW9uVGFyZ2V0JiB0YXJnZXQpIGNvbnN0CiB7CiAgICAgLy8gTXVzdCBjb2xsZWN0IHRh
cmdldCBpbmZvcm1hdGlvbiBvbiB0aGUgV2ViVGhyZWFkLCBNYWluLCBvciBXb3JrZXIgdGhyZWFk
IHNpbmNlIFJlbW90ZVRhcmdldHMgYXJlCkBAIC02MDgsMjggKzQzOCwxMyBAQCB2b2lkIFJlbW90
ZUluc3BlY3Rvcjo6cHVzaExpc3RpbmdzU29vbigpCiAgICAgICAgIHJldHVybjsKIAogICAgIG1f
cHVzaFNjaGVkdWxlZCA9IHRydWU7Ci0gICAgZGlzcGF0Y2hfYWZ0ZXIoZGlzcGF0Y2hfdGltZShE
SVNQQVRDSF9USU1FX05PVywgMC4yICogTlNFQ19QRVJfU0VDKSwgZGlzcGF0Y2hfZ2V0X2dsb2Jh
bF9xdWV1ZShESVNQQVRDSF9RVUVVRV9QUklPUklUWV9ERUZBVUxULCAwKSwgXnsKKyAgICBkaXNw
YXRjaF9hZnRlcihkaXNwYXRjaF90aW1lKERJU1BBVENIX1RJTUVfTk9XLCAwLjIgKiBOU0VDX1BF
Ul9TRUMpLCBkaXNwYXRjaF9nZXRfZ2xvYmFsX3F1ZXVlKERJU1BBVENIX1FVRVVFX1BSSU9SSVRZ
X0RFRkFVTFQsIDApLCBeIHsKICAgICAgICAgc3RkOjpsb2NrX2d1YXJkPExvY2s+IGxvY2sobV9t
dXRleCk7CiAgICAgICAgIGlmIChtX3B1c2hTY2hlZHVsZWQpCiAgICAgICAgICAgICBwdXNoTGlz
dGluZ3NOb3coKTsKICAgICB9KTsKIH0KIAotI3ByYWdtYSBtYXJrIC0gQWN0aXZlIERlYnVnZ2Vy
IFNlc3Npb25zCi0KLXZvaWQgUmVtb3RlSW5zcGVjdG9yOjp1cGRhdGVIYXNBY3RpdmVEZWJ1Z1Nl
c3Npb24oKQotewotICAgIGJvb2wgaGFzQWN0aXZlRGVidWdnZXJTZXNzaW9uID0gIW1fdGFyZ2V0
Q29ubmVjdGlvbk1hcC5pc0VtcHR5KCk7Ci0gICAgaWYgKGhhc0FjdGl2ZURlYnVnZ2VyU2Vzc2lv
biA9PSBtX2hhc0FjdGl2ZURlYnVnU2Vzc2lvbikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9o
YXNBY3RpdmVEZWJ1Z1Nlc3Npb24gPSBoYXNBY3RpdmVEZWJ1Z2dlclNlc3Npb247Ci0KLSAgICAv
LyBGSVhNRTogRXhwb3NlIHNvbWUgd2F5IHRvIGFjY2VzcyB0aGlzIHN0YXRlIGluIGFuIGVtYmVk
ZGVyLgotICAgIC8vIExlZ2FjeSBpT1MgV2ViS2l0IDEgaGFkIGEgbm90aWZpY2F0aW9uLiBUaGlz
IHdpbGwgbmVlZCB0byBiZSBzbWFydGVyIHdpdGggV2ViS2l0Mi4KLX0KLQotCiAjcHJhZ21hIG1h
cmsgLSBSZWNlaXZlZCBYUEMgTWVzc2FnZXMKIAogdm9pZCBSZW1vdGVJbnNwZWN0b3I6OnJlY2Vp
dmVkU2V0dXBNZXNzYWdlKE5TRGljdGlvbmFyeSAqdXNlckluZm8pCkBAIC03MzMsNyArNTQ4LDcg
QEAgdm9pZCBSZW1vdGVJbnNwZWN0b3I6OnJlY2VpdmVkSW5kaWNhdGVNZXNzYWdlKE5TRGljdGlv
bmFyeSAqdXNlckluZm8pCiAKICAgICBCT09MIGluZGljYXRlRW5hYmxlZCA9IFtbdXNlckluZm8g
b2JqZWN0Rm9yS2V5OldJUkluZGljYXRlRW5hYmxlZEtleV0gYm9vbFZhbHVlXTsKIAotICAgIGNh
bGxPbldlYlRocmVhZE9yRGlzcGF0Y2hBc3luY09uTWFpblRocmVhZCheeworICAgIGNhbGxPbldl
YlRocmVhZE9yRGlzcGF0Y2hBc3luY09uTWFpblRocmVhZCheIHsKICAgICAgICAgUmVtb3RlQ29u
dHJvbGxhYmxlVGFyZ2V0KiB0YXJnZXQgPSBudWxscHRyOwogICAgICAgICB7CiAgICAgICAgICAg
ICBzdGQ6OmxvY2tfZ3VhcmQ8TG9jaz4gbG9jayhtX211dGV4KTsKQEAgLTc1OSw3ICs1NzQsNyBA
QCB2b2lkIFJlbW90ZUluc3BlY3Rvcjo6cmVjZWl2ZWRQcm94eUFwcGxpY2F0aW9uU2V0dXBNZXNz
YWdlKE5TRGljdGlvbmFyeSAqKQogICAgICAgICAvLyBXZSBhcmUgYSBwcm94eSBhcHBsaWNhdGlv
biB3aXRob3V0IHBhcmVudCBwcm9jZXNzIGluZm9ybWF0aW9uLgogICAgICAgICAvLyBXYWl0IGEg
Yml0IGZvciB0aGUgaW5mb3JtYXRpb24sIGJ1dCBnaXZlIHVwIGFmdGVyIGEgc2Vjb25kLgogICAg
ICAgICBtX3Nob3VsZFNlbmRQYXJlbnRQcm9jZXNzSW5mb3JtYXRpb24gPSB0cnVlOwotICAgICAg
ICBkaXNwYXRjaF9hZnRlcihkaXNwYXRjaF90aW1lKERJU1BBVENIX1RJTUVfTk9XLCAxICogTlNF
Q19QRVJfU0VDKSwgZGlzcGF0Y2hfZ2V0X2dsb2JhbF9xdWV1ZShESVNQQVRDSF9RVUVVRV9QUklP
UklUWV9ERUZBVUxULCAwKSwgXnsKKyAgICAgICAgZGlzcGF0Y2hfYWZ0ZXIoZGlzcGF0Y2hfdGlt
ZShESVNQQVRDSF9USU1FX05PVywgMSAqIE5TRUNfUEVSX1NFQyksIGRpc3BhdGNoX2dldF9nbG9i
YWxfcXVldWUoRElTUEFUQ0hfUVVFVUVfUFJJT1JJVFlfREVGQVVMVCwgMCksIF4gewogICAgICAg
ICAgICAgc3RkOjpsb2NrX2d1YXJkPExvY2s+IGxvY2sobV9tdXRleCk7CiAgICAgICAgICAgICBp
ZiAobV9zaG91bGRTZW5kUGFyZW50UHJvY2Vzc0luZm9ybWF0aW9uKQogICAgICAgICAgICAgICAg
IHN0b3BJbnRlcm5hbChTdG9wU291cmNlOjpYUENNZXNzYWdlKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3RvclhQQ0Nvbm5l
Y3Rpb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL2NvY29hL1Jl
bW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24uaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1l
IGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVj
dG9yWFBDQ29ubmVjdGlvbi5oCnJlbmFtZSB0byBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL3JlbW90ZS9jb2NvYS9SZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uLmgKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3Rv
clhQQ0Nvbm5lY3Rpb24ubW0gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90
ZS9jb2NvYS9SZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uLm1tCnNpbWlsYXJpdHkgaW5kZXgg
OTklCnJlbmFtZSBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1Jl
bW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24ubW0KcmVuYW1lIHRvIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvcmVtb3RlL2NvY29hL1JlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24u
bW0KaW5kZXggNzY2MDk5NGNjMjkuLmE5MDJkNmRmYzUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9u
Lm1tCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL2NvY29hL1Jl
bW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24ubW0KQEAgLTEwOCw3ICsxMDgsNyBAQCB2b2lkIFJl
bW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb246OmNsb3NlRnJvbU1lc3NhZ2UoKQogICAgIG1fY2xv
c2VkID0gdHJ1ZTsKICAgICBtX2NsaWVudCA9IG51bGxwdHI7CiAKLSAgICBkaXNwYXRjaF9hc3lu
YyhtX3F1ZXVlLCBeeworICAgIGRpc3BhdGNoX2FzeW5jKG1fcXVldWUsIF4gewogICAgICAgICBz
dGQ6OmxvY2tfZ3VhcmQ8TG9jaz4gbG9jayhtX211dGV4KTsKICAgICAgICAgLy8gVGhpcyB3aWxs
IHRyaWdnZXIgb25lIGxhc3QgWFBDX0VSUk9SX0NPTk5FQ1RJT05fSU5WQUxJRCBldmVudCBvbiB0
aGUgcXVldWUgYW5kIGRlcmVmIHVzLgogICAgICAgICBjbG9zZU9uUXVldWUoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCmluZGV4IGMxMjgwMTgzMDM1Li40ZGEzNDc1
MmEyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCkBAIC0zNzcs
NyArMzc3LDcgQEAgdm9pZCBXZWJQcm9jZXNzOjppbml0aWFsaXplV2ViUHJvY2VzcyhXZWJQcm9j
ZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKICAgICBzZXRFbmFibGVkU2Vydmlj
ZXMocGFyYW1ldGVycy5oYXNJbWFnZVNlcnZpY2VzLCBwYXJhbWV0ZXJzLmhhc1NlbGVjdGlvblNl
cnZpY2VzLCBwYXJhbWV0ZXJzLmhhc1JpY2hDb250ZW50U2VydmljZXMpOwogI2VuZGlmCiAKLSNp
ZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKKyNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikg
JiYgUExBVEZPUk0oQ09DT0EpCiAgICAgYXVkaXRfdG9rZW5fdCBhdWRpdFRva2VuOwogICAgIGlm
IChwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5nZXRBdWRpdFRva2VuKGF1ZGl0VG9rZW4pKSB7
CiAgICAgICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IGF1ZGl0RGF0YSA9IGFkb3B0Q0YoQ0ZEYXRh
Q3JlYXRlKG51bGxwdHIsIChjb25zdCBVSW50OCopJmF1ZGl0VG9rZW4sIHNpemVvZihhdWRpdFRv
a2VuKSkpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>298557</attachid>
            <date>2017-01-10 23:53:08 -0800</date>
            <delta_ts>2017-02-15 23:41:36 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>wk-inspector-patch.diff</filename>
            <type>text/plain</type>
            <size>55251</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNSZW1vdGVJbnNwZWN0b3Iu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1JlbW90ZUluc3BlY3Rvci5jcHAKaW5k
ZXggZmFlYmM1ZGUzZTEuLjNiZTYxZDA5MjcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL0pTUmVtb3RlSW5zcGVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL0pTUmVtb3RlSW5zcGVjdG9yLmNwcApAQCAtNTAsOSArNTAsOSBAQCB2b2lkIEpTUmVt
b3RlSW5zcGVjdG9yU3RhcnQodm9pZCkKICNlbmRpZgogfQogCi12b2lkIEpTUmVtb3RlSW5zcGVj
dG9yU2V0UGFyZW50UHJvY2Vzc0luZm9ybWF0aW9uKHBpZF90IHBpZCwgY29uc3QgVUludDgqIGF1
ZGl0RGF0YSwgc2l6ZV90IGF1ZGl0TGVuZ3RoKQordm9pZCBKU1JlbW90ZUluc3BlY3RvclNldFBh
cmVudFByb2Nlc3NJbmZvcm1hdGlvbihwaWRfdCBwaWQsIGNvbnN0IHVpbnQ4X3QqIGF1ZGl0RGF0
YSwgc2l6ZV90IGF1ZGl0TGVuZ3RoKQogewotI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQor
I2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKSAmJiBQTEFURk9STShDT0NPQSkKICAgICBSZXRh
aW5QdHI8Q0ZEYXRhUmVmPiBhdWRpdERhdGFSZWYgPSBhZG9wdENGKENGRGF0YUNyZWF0ZShrQ0ZB
bGxvY2F0b3JEZWZhdWx0LCBhdWRpdERhdGEsIGF1ZGl0TGVuZ3RoKSk7CiAgICAgUmVtb3RlSW5z
cGVjdG9yOjpzaW5nbGV0b24oKS5zZXRQYXJlbnRQcm9jZXNzSW5mb3JtYXRpb24ocGlkLCBhdWRp
dERhdGFSZWYpOwogI2Vsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFu
Z2VMb2cgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IGRmMTE0NTEzOGRh
Li5jODg1Yjg0NmFkNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjEgQEAK
KzIwMTctMDEtMTAgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgor
CisgICAgICAgIFdlYkluc3BlY3RvcjogcmVmYWN0b3IgUmVtb3RlSW5zcGVjdG9yIHRvIG1vdmUg
Y29jb2Egc3BlY2lmaWMgY29kZSB0byB0aGVpciBvd24gZmlsZXMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NjY4MQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1vdmUgUmVtb3RlQ29ubmVjdGlvblRvVGFy
Z2V0Lm1tIGFuZCBSZW1vdGVJbnNwZWN0b3IubW0gdG8gYSBjb2NvYSBkaXJlY3RvcnkgcmVuYW1l
ZCB3aXRoIGEgQ29jb2EgcHJlZml4LAorICAgICAgICBiZWNhdXNlIHRob3NlIGFyZSBub3cgdGhl
IGNvY29hIGltcGxlbWVudGF0aW9uIG9mIFJlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldCBhbmQgUmVt
b3RlSW5zcGVjdG9yLiBUaGUKKyAgICAgICAgY3Jvc3MtcGxhdGZvcm0gcGFydHMgb2YgUmVtb3Rl
SW5zcGVjdG9yIGhhdmUgYmVlbiBtb2NlZCB0byBhIG5ldyBSZW1vdGVJbnNwZWN0b3IuY3BwIGZp
bGUuIEFsc28gbW92ZWQgdG8gY29jb2EKKyAgICAgICAgZGlyZWN0b3J5IFJlbW90ZUluc3BlY3Rv
clhQQ0Nvbm5lY3Rpb24uaCBhbmQgUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbi5tbSBrZWVw
aW5nIHRoZSBzYW1lIG5hbWUuIE90aGVyIHRoYW4KKyAgICAgICAgdGhhdCB0aGVyZSBhcmVuJ3Qg
aW1wb3J0YW50IGNvZGUgY2hhbmdlcywgb25seSBzb21lIGNvY29hIHNwZWNpZmljIHR5cGVzIGxp
a2UgTlNTdHJpbmcgdXNlZCBpbiBjb21tb24gaGVhZGVycywKKyAgICAgICAgYW5kIHNvbWUgb3Ro
ZXIgcGxhdGZvcm0gaWZkZWZzIG5lZWRlZC4gVGhpcyBpcyBpbiBwcmVwYXJhdGlvbiBmb3IgYWRk
aW5nIGEgcmVtb3RlIGluc3BlY3RvciBpbXBsZW1lbnRhdGlvbiBmb3IKKyAgICAgICAgdGhlIEdU
SysgcG9ydC4KKworICAgICAgICAqIEFQSS9KU1JlbW90ZUluc3BlY3Rvci5jcHA6CisgICAgICAg
IChKU1JlbW90ZUluc3BlY3RvclNldFBhcmVudFByb2Nlc3NJbmZvcm1hdGlvbik6IEFkZCBQTEFU
Rk9STShDT0NPQSkgdG8gdGhlIGlmZGVmLgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogUGxhdGZvcm1NYWMuY21ha2U6CisgICAg
ICAgICogaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQuaDogQWRkIHBs
YXRmb3JtIGlmZGVmcyBmb3IgY29jb2Egc3BlY2lmaWMgcGFydHMgYW5kIGNoYW5nZQorICAgICAg
ICBzZW5kTWVzc2FnZVRvVGFyZ2V0IHRvIHJlY2VpdmUgYSBXVEYgU3RyaW5nIGluc3RlYWQgb2Yg
YW4gTlNTdHJpbmcuCisgICAgICAgICogaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVDb250cm9sbGFi
bGVUYXJnZXQuaDogQWRkIHBsYXRmb3JtIGlmZGVmcyBmb3IgQ0Ygc3BlY2lmaWMgcGFydHMuCisg
ICAgICAgICogaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0aW9uVGFyZ2V0Lmg6CisgICAg
ICAgICogaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3IuY3BwOiBBZGRlZC4KKyAgICAg
ICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yOjpzdGFydERpc2FibGVkKToKKyAgICAgICAg
KEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yOjpuZXh0QXZhaWxhYmxlVGFyZ2V0SWRlbnRpZmll
cik6CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rvcjo6cmVnaXN0ZXJUYXJnZXQp
OgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3I6OnVucmVnaXN0ZXJUYXJnZXQp
OgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3I6OnVwZGF0ZVRhcmdldCk6Cisg
ICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rvcjo6dXBkYXRlQ2xpZW50Q2FwYWJpbGl0
aWVzKToKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yOjpzZXRSZW1vdGVJbnNw
ZWN0b3JDbGllbnQpOgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3I6OnNldHVw
RmFpbGVkKToKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yOjpzZXR1cENvbXBs
ZXRlZCk6CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rvcjo6d2FpdGluZ0ZvckF1
dG9tYXRpY0luc3BlY3Rpb24pOgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3I6
OmNsaWVudENhcGFiaWxpdGllc0RpZENoYW5nZSk6CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90
ZUluc3BlY3Rvcjo6c3RvcCk6CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rvcjo6
bGlzdGluZ0ZvclRhcmdldCk6CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rvcjo6
dXBkYXRlSGFzQWN0aXZlRGVidWdTZXNzaW9uKToKKyAgICAgICAgKiBpbnNwZWN0b3IvcmVtb3Rl
L1JlbW90ZUluc3BlY3Rvci5oOiBBZGQgcGxhdGZvcm0gaWZkZWZzIGZvciBjb2NvYSBzcGVjaWZp
YyBwYXJ0cy4gQWxzbyBhZGQgVGFyZ2V0TGlzdGluZworICAgICAgICB0eXBlZGVmIHRvIGRlZmlu
ZSBwbGF0Zm9ybSBzcGVjaWZpYyB0eXBlcyBmb3IgdGhlIGxpc3RpbmdzIHdpdGhvdXQgbW9yZSBp
ZmRlZnMuCisgICAgICAgICogaW5zcGVjdG9yL3JlbW90ZS9jb2NvYS9SZW1vdGVDb25uZWN0aW9u
VG9UYXJnZXRDb2NvYS5tbTogUmVuYW1lZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvcmVtb3RlL1JlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldC5tbS4KKyAgICAgICAgKEluc3Bl
Y3Rvcjo6UmVtb3RlVGFyZ2V0SW5pdGlhbGl6ZUdsb2JhbFF1ZXVlKToKKyAgICAgICAgKEluc3Bl
Y3Rvcjo6UmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0OjpzZXR1cCk6CisgICAgICAgIChJbnNwZWN0
b3I6OlJlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldDo6Y2xvc2UpOgorICAgICAgICAoSW5zcGVjdG9y
OjpSZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQ6OnNlbmRNZXNzYWdlVG9UYXJnZXQpOgorICAgICAg
ICAoSW5zcGVjdG9yOjpSZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQ6OnNldHVwUnVuTG9vcCk6Cisg
ICAgICAgICogaW5zcGVjdG9yL3JlbW90ZS9jb2NvYS9SZW1vdGVJbnNwZWN0b3JDb2NvYS5tbTog
UmVuYW1lZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90
ZUluc3BlY3Rvci5tbS4KKyAgICAgICAgKEluc3BlY3Rvcjo6Y2FuQWNjZXNzV2ViSW5zcGVjdG9y
TWFjaFBvcnQpOgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3I6OnNpbmdsZXRv
bik6CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rvcjo6dXBkYXRlQXV0b21hdGlj
SW5zcGVjdGlvbkNhbmRpZGF0ZSk6CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rv
cjo6c3RhcnQpOgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3I6OnB1c2hMaXN0
aW5nc1Nvb24pOgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3I6OnJlY2VpdmVk
SW5kaWNhdGVNZXNzYWdlKToKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yOjpy
ZWNlaXZlZFByb3h5QXBwbGljYXRpb25TZXR1cE1lc3NhZ2UpOgorICAgICAgICAqIGluc3BlY3Rv
ci9yZW1vdGUvY29jb2EvUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbi5oOiBSZW5hbWVkIGZy
b20gU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9y
WFBDQ29ubmVjdGlvbi5oLgorICAgICAgICAqIGluc3BlY3Rvci9yZW1vdGUvY29jb2EvUmVtb3Rl
SW5zcGVjdG9yWFBDQ29ubmVjdGlvbi5tbTogUmVuYW1lZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24ubW0uCisg
ICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb246OmNsb3NlRnJv
bU1lc3NhZ2UpOgorCiAyMDE3LTAxLTA4ICBBbmRyZWFzIEtsaW5nICA8YWtsaW5nQGFwcGxlLmNv
bT4KIAogICAgICAgICBJbmplY3QgTWFya2VkU3BhY2Ugc2l6ZSBjbGFzc2VzIGZvciBhIGZldyBt
b3JlIGhpZ2gtdm9sdW1lIG9iamVjdHMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4
IDE3ZWNiMzFlOWZiLi5lOWY3MDcwNGJhOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
QEAgLTE0NDgsNiArMTQ0OCwxMSBAQAogCQk3OUVFMEMwMDFCNEFGQjg1MDAwMzg1QzkgLyogVmFy
aWFibGVFbnZpcm9ubWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNzlFRTBCRkUxQjRBRkI4NTAwMDM4NUM5IC8qIFZhcmlhYmxlRW52aXJvbm1lbnQu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3OUY4
RkMxRTFCOUZFRDBGMDBDQTY2QUIgLyogREZHTWF4aW1hbEZsdXNoSW5zZXJ0aW9uUGhhc2UuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzlGOEZDMUMx
QjlGRUQwRjAwQ0E2NkFCIC8qIERGR01heGltYWxGbHVzaEluc2VydGlvblBoYXNlLmNwcCAqLzsg
fTsKIAkJNzlGOEZDMUYxQjlGRUQwRjAwQ0E2NkFCIC8qIERGR01heGltYWxGbHVzaEluc2VydGlv
blBoYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3
OUY4RkMxRDFCOUZFRDBGMDBDQTY2QUIgLyogREZHTWF4aW1hbEZsdXNoSW5zZXJ0aW9uUGhhc2Uu
aCAqLzsgfTsKKwkJN0FDRERFRDQxRTI1MkI0RDAwOTdBRkVCIC8qIFJlbW90ZUNvbm5lY3Rpb25U
b1RhcmdldENvY29hLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gN0FDRERFRDAxRTI1MkIyQjAwOTdBRkVCIC8qIFJlbW90ZUNvbm5lY3Rpb25Ub1Rhcmdl
dENvY29hLm1tICovOyB9OworCQk3QUNEREVENTFFMjUyQjVFMDA5N0FGRUIgLyogUmVtb3RlSW5z
cGVjdG9yQ29jb2EubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA3QUNEREVEMTFFMjUyQjJCMDA5N0FGRUIgLyogUmVtb3RlSW5zcGVjdG9yQ29jb2EubW0g
Ki87IH07CisJCTdBQ0RERUQ3MUUyNTJCNjgwMDk3QUZFQiAvKiBSZW1vdGVJbnNwZWN0b3JYUEND
b25uZWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA3QUNEREVEMjFFMjUyQjJCMDA5N0FGRUIgLyogUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlv
bi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTdB
Q0RERUQ4MUUyNTJCNkUwMDk3QUZFQiAvKiBSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uLm1t
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0FDRERFRDMx
RTI1MkIyQjAwOTdBRkVCIC8qIFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24ubW0gKi87IH07
CisJCTdBQ0RERUQ5MUUyNTJCODMwMDk3QUZFQiAvKiBSZW1vdGVJbnNwZWN0b3IuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0FDRERFRDYxRTI1MkI1
RjAwOTdBRkVCIC8qIFJlbW90ZUluc3BlY3Rvci5jcHAgKi87IH07CiAJCTdCQzU0N0QzMUI2OTU5
QTEwMDk1OUI1OCAvKiBXYXNtRm9ybWF0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA3QkM1NDdEMjFCNjk1OTlCMDA5NTlCNTggLyogV2FzbUZvcm1hdC5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdDMDA4
Q0RBMTg3MTI0QkIwMDk1NUMyNCAvKiBKU1Byb21pc2VEZWZlcnJlZC5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzAwOENEODE4NzEyNEJCMDA5NTVD
MjQgLyogSlNQcm9taXNlRGVmZXJyZWQuY3BwICovOyB9OwogCQk3QzAwOENEQjE4NzEyNEJCMDA5
NTVDMjQgLyogSlNQcm9taXNlRGVmZXJyZWQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDdDMDA4Q0Q5MTg3MTI0QkIwMDk1NUMyNCAvKiBKU1Byb21pc2VE
ZWZlcnJlZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CkBAIC0xNzUyLDEyICsxNzU3LDggQEAKIAkJQTVBQjQ5REQxQkVDODA4NjAwNzAyMEZCIC8qIFBl
ckdsb2JhbE9iamVjdFdyYXBwZXJXb3JsZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQTVBQjQ5REIxQkVDODA3OTAwNzAyMEZCIC8qIFBlckdsb2JhbE9i
amVjdFdyYXBwZXJXb3JsZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCUE1QjZBNzREMThDNkRCQTYwMEYxMUU5MSAvKiBDb25zb2xlQ2xpZW50LmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1QjZBNzRD
MThDNkRCQTYwMEYxMUU5MSAvKiBDb25zb2xlQ2xpZW50LmNwcCAqLzsgfTsKIAkJQTVCQTE1RTgx
ODIzNDBCMzAwQTgyRTY5IC8qIFJlbW90ZUluc3BlY3Rvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTVCQTE1RTExODIzNDBCMzAwQTgyRTY5IC8qIFJl
bW90ZUluc3BlY3Rvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07Ci0JCUE1QkExNUU5MTgyMzQwQjMwMEE4MkU2OSAvKiBSZW1vdGVJbnNwZWN0b3IubW0g
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNUJBMTVFMjE4
MjM0MEIzMDBBODJFNjkgLyogUmVtb3RlSW5zcGVjdG9yLm1tICovOyB9OwogCQlBNUJBMTVFQTE4
MjM0MEI0MDBBODJFNjkgLyogUmVtb3RlSW5zcGVjdG9yQ29uc3RhbnRzLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNUJBMTVFMzE4MjM0MEIzMDBBODJF
NjkgLyogUmVtb3RlSW5zcGVjdG9yQ29uc3RhbnRzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTVCQTE1RUIxODIzNDBCNDAwQTgyRTY5IC8qIFJl
bW90ZUNvbm5lY3Rpb25Ub1RhcmdldC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQTVCQTE1RTQxODIzNDBCMzAwQTgyRTY5IC8qIFJlbW90ZUNvbm5lY3Rp
b25Ub1RhcmdldC5oICovOyB9OwotCQlBNUJBMTVFQzE4MjM0MEI0MDBBODJFNjkgLyogUmVtb3Rl
Q29ubmVjdGlvblRvVGFyZ2V0Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQTVCQTE1RTUxODIzNDBCMzAwQTgyRTY5IC8qIFJlbW90ZUNvbm5lY3Rpb25U
b1RhcmdldC5tbSAqLzsgfTsKLQkJQTVCQTE1RUQxODIzNDBCNDAwQTgyRTY5IC8qIFJlbW90ZUlu
c3BlY3RvclhQQ0Nvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEE1QkExNUU2MTgyMzQwQjMwMEE4MkU2OSAvKiBSZW1vdGVJbnNwZWN0b3JY
UENDb25uZWN0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKLQkJQTVCQTE1RUUxODIzNDBCNDAwQTgyRTY5IC8qIFJlbW90ZUluc3BlY3RvclhQQ0Nv
bm5lY3Rpb24ubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBBNUJBMTVFNzE4MjM0MEIzMDBBODJFNjkgLyogUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlv
bi5tbSAqLzsgfTsKIAkJQTVCQTE1RjAxODIzNDVBRjAwQTgyRTY5IC8qIFJlbW90ZUluc3BlY3Rp
b25UYXJnZXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEE1QkExNUVGMTgyMzQ1QUYwMEE4MkU2OSAvKiBSZW1vdGVJbnNwZWN0aW9uVGFyZ2V0LmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTVDM0ExQTUx
OEMwNDkwMjAwQzk1OTNBIC8qIEpTR2xvYmFsT2JqZWN0Q29uc29sZUNsaWVudC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNUMzQTFBMzE4QzA0OTAy
MDBDOTU5M0EgLyogSlNHbG9iYWxPYmplY3RDb25zb2xlQ2xpZW50LmNwcCAqLzsgfTsKIAkJQTVD
M0ExQTYxOEMwNDkwMjAwQzk1OTNBIC8qIEpTR2xvYmFsT2JqZWN0Q29uc29sZUNsaWVudC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTVDM0ExQTQxOEMw
NDkwMjAwQzk1OTNBIC8qIEpTR2xvYmFsT2JqZWN0Q29uc29sZUNsaWVudC5oICovOyB9OwpAQCAt
Mzg4OCw2ICszODg5LDExIEBACiAJCTc5RUUwQkZFMUI0QUZCODUwMDAzODVDOSAvKiBWYXJpYWJs
ZUVudmlyb25tZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFZhcmlhYmxl
RW52aXJvbm1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzlGOEZDMUMxQjlG
RUQwRjAwQ0E2NkFCIC8qIERGR01heGltYWxGbHVzaEluc2VydGlvblBoYXNlLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR01heGltYWxGbHVzaEluc2VydGlvblBo
YXNlLmNwcDsgcGF0aCA9IGRmZy9ERkdNYXhpbWFsRmx1c2hJbnNlcnRpb25QaGFzZS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTc5RjhGQzFEMUI5RkVEMEYwMENBNjZBQiAvKiBE
RkdNYXhpbWFsRmx1c2hJbnNlcnRpb25QaGFzZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IG5hbWUgPSBERkdNYXhpbWFsRmx1c2hJbnNlcnRpb25QaGFzZS5oOyBwYXRoID0gZGZnL0RGR01h
eGltYWxGbHVzaEluc2VydGlvblBoYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTdBQ0RERUQwMUUyNTJCMkIwMDk3QUZFQiAvKiBSZW1vdGVDb25uZWN0aW9uVG9UYXJnZXRDb2Nv
YS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFJlbW90ZUNvbm5l
Y3Rpb25Ub1RhcmdldENvY29hLm1tOyBwYXRoID0gY29jb2EvUmVtb3RlQ29ubmVjdGlvblRvVGFy
Z2V0Q29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdBQ0RERUQxMUUyNTJC
MkIwMDk3QUZFQiAvKiBSZW1vdGVJbnNwZWN0b3JDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgbmFtZSA9IFJlbW90ZUluc3BlY3RvckNvY29hLm1tOyBwYXRoID0gY29j
b2EvUmVtb3RlSW5zcGVjdG9yQ29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTdBQ0RERUQyMUUyNTJCMkIwMDk3QUZFQiAvKiBSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9u
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFJlbW90ZUluc3BlY3RvclhQQ0Nv
bm5lY3Rpb24uaDsgcGF0aCA9IGNvY29hL1JlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24uaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0FDRERFRDMxRTI1MkIyQjAwOTdBRkVCIC8q
IFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IG5hbWUgPSBSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uLm1tOyBwYXRoID0g
Y29jb2EvUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbi5tbTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJN0FDRERFRDYxRTI1MkI1RjAwOTdBRkVCIC8qIFJlbW90ZUluc3BlY3Rvci5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVJbnNwZWN0b3Iu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QkM1NDdEMjFCNjk1OTlCMDA5NTlC
NTggLyogV2FzbUZvcm1hdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXYXNt
Rm9ybWF0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDMDA4Q0Q4MTg3MTI0QkIw
MDk1NUMyNCAvKiBKU1Byb21pc2VEZWZlcnJlZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBKU1Byb21pc2VEZWZlcnJlZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTdDMDA4Q0Q5MTg3MTI0QkIwMDk1NUMyNCAvKiBKU1Byb21pc2VEZWZlcnJlZC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1Byb21pc2VEZWZlcnJlZC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDIzMywxMiArNDIzOSw4IEBACiAJCUE1QUI0
OURCMUJFQzgwNzkwMDcwMjBGQiAvKiBQZXJHbG9iYWxPYmplY3RXcmFwcGVyV29ybGQuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGVyR2xvYmFsT2JqZWN0V3JhcHBlcldvcmxk
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1QjZBNzRDMThDNkRCQTYwMEYxMUU5
MSAvKiBDb25zb2xlQ2xpZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IENvbnNvbGVDbGllbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNUJB
MTVFMTE4MjM0MEIzMDBBODJFNjkgLyogUmVtb3RlSW5zcGVjdG9yLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUluc3BlY3Rvci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQlBNUJBMTVFMjE4MjM0MEIzMDBBODJFNjkgLyogUmVtb3RlSW5zcGVjdG9yLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUmVtb3RlSW5zcGVjdG9y
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNUJBMTVFMzE4MjM0MEIzMDBBODJF
NjkgLyogUmVtb3RlSW5zcGVjdG9yQ29uc3RhbnRzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFJlbW90ZUluc3BlY3RvckNvbnN0YW50cy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlBNUJBMTVFNDE4MjM0MEIzMDBBODJFNjkgLyogUmVtb3RlQ29ubmVjdGlvblRv
VGFyZ2V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUNvbm5lY3Rp
b25Ub1RhcmdldC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlBNUJBMTVFNTE4MjM0
MEIzMDBBODJFNjkgLyogUmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0Lm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0Lm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlBNUJBMTVFNjE4MjM0MEIzMDBBODJFNjkgLyog
UmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCUE1QkExNUU3MTgyMzQwQjMwMEE4MkU2OSAvKiBSZW1vdGVJbnNwZWN0b3JY
UENDb25uZWN0aW9uLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0g
UmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQTVCQTE1RUYxODIzNDVBRjAwQTgyRTY5IC8qIFJlbW90ZUluc3BlY3Rpb25UYXJnZXQu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlSW5zcGVjdGlvblRhcmdl
dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNUMzQTFBMzE4QzA0OTAyMDBDOTU5
M0EgLyogSlNHbG9iYWxPYmplY3RDb25zb2xlQ2xpZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEpTR2xvYmFsT2JqZWN0Q29uc29sZUNsaWVudC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1QzNBMUE0MThDMDQ5MDIwMEM5NTkzQSAvKiBKU0ds
b2JhbE9iamVjdENvbnNvbGVDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSlNHbG9iYWxPYmplY3RDb25zb2xlQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC02MDIzLDYgKzYwMjUsMTcgQEAKIAkJCXBhdGggPSBkaXNhc3NlbWJsZXIvQVJNdjc7
CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9OworCQk3QUNEREVDRjFFMjUyQUNBMDA5
N0FGRUIgLyogY29jb2EgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0g
KAorCQkJCTdBQ0RERUQwMUUyNTJCMkIwMDk3QUZFQiAvKiBSZW1vdGVDb25uZWN0aW9uVG9UYXJn
ZXRDb2NvYS5tbSAqLywKKwkJCQk3QUNEREVEMTFFMjUyQjJCMDA5N0FGRUIgLyogUmVtb3RlSW5z
cGVjdG9yQ29jb2EubW0gKi8sCisJCQkJN0FDRERFRDIxRTI1MkIyQjAwOTdBRkVCIC8qIFJlbW90
ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24uaCAqLywKKwkJCQk3QUNEREVEMzFFMjUyQjJCMDA5N0FG
RUIgLyogUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbi5tbSAqLywKKwkJCSk7CisJCQluYW1l
ID0gY29jb2E7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OwogCQk3Qjk4RDEzMzFC
NjBDRDFFMDAyM0IxQTQgLyogd2FzbSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hp
bGRyZW4gPSAoCkBAIC03NTM3LDE5ICs3NTUwLDE3IEBACiAJCUE1QkExNUUwMTgyMzQwOUQwMEE4
MkU2OSAvKiByZW1vdGUgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0g
KAorCQkJCTdBQ0RERUQ2MUUyNTJCNUYwMDk3QUZFQiAvKiBSZW1vdGVJbnNwZWN0b3IuY3BwICov
LAorCQkJCTdBQ0RERUNGMUUyNTJBQ0EwMDk3QUZFQiAvKiBjb2NvYSAqLywKIAkJCQk5OTJBQkNG
NTFCRUE5NENBMDA2NDAzQTAgLyogUmVtb3RlQXV0b21hdGlvblRhcmdldC5jcHAgKi8sCiAJCQkJ
OTkyQUJDRjYxQkVBOTRDQTAwNjQwM0EwIC8qIFJlbW90ZUF1dG9tYXRpb25UYXJnZXQuaCAqLywK
IAkJCQlBNUJBMTVFNDE4MjM0MEIzMDBBODJFNjkgLyogUmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0
LmggKi8sCi0JCQkJQTVCQTE1RTUxODIzNDBCMzAwQTgyRTY5IC8qIFJlbW90ZUNvbm5lY3Rpb25U
b1RhcmdldC5tbSAqLywKIAkJCQk5OThFRDY3MjFCRUQ2NTlBMDBERDgwMTcgLyogUmVtb3RlQ29u
dHJvbGxhYmxlVGFyZ2V0LmNwcCAqLywKIAkJCQk5OThFRDY3MzFCRUQ2NTlBMDBERDgwMTcgLyog
UmVtb3RlQ29udHJvbGxhYmxlVGFyZ2V0LmggKi8sCiAJCQkJQTU5NDU1OEUxODI0NUVERTAwQ0Mz
ODQzIC8qIFJlbW90ZUluc3BlY3Rpb25UYXJnZXQuY3BwICovLAogCQkJCUE1QkExNUVGMTgyMzQ1
QUYwMEE4MkU2OSAvKiBSZW1vdGVJbnNwZWN0aW9uVGFyZ2V0LmggKi8sCiAJCQkJQTVCQTE1RTEx
ODIzNDBCMzAwQTgyRTY5IC8qIFJlbW90ZUluc3BlY3Rvci5oICovLAotCQkJCUE1QkExNUUyMTgy
MzQwQjMwMEE4MkU2OSAvKiBSZW1vdGVJbnNwZWN0b3IubW0gKi8sCiAJCQkJQTVCQTE1RTMxODIz
NDBCMzAwQTgyRTY5IC8qIFJlbW90ZUluc3BlY3RvckNvbnN0YW50cy5oICovLAotCQkJCUE1QkEx
NUU2MTgyMzQwQjMwMEE4MkU2OSAvKiBSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uLmggKi8s
Ci0JCQkJQTVCQTE1RTcxODIzNDBCMzAwQTgyRTY5IC8qIFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5l
Y3Rpb24ubW0gKi8sCiAJCQkpOwogCQkJcGF0aCA9IHJlbW90ZTsKIAkJCXNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7CkBAIC04ODYwLDcgKzg4NzEsNiBAQAogCQkJCUE1QkExNUYwMTgyMzQ1QUYwMEE4
MkU2OSAvKiBSZW1vdGVJbnNwZWN0aW9uVGFyZ2V0LmggaW4gSGVhZGVycyAqLywKIAkJCQlBNUJB
MTVFODE4MjM0MEIzMDBBODJFNjkgLyogUmVtb3RlSW5zcGVjdG9yLmggaW4gSGVhZGVycyAqLywK
IAkJCQlBNUJBMTVFQTE4MjM0MEI0MDBBODJFNjkgLyogUmVtb3RlSW5zcGVjdG9yQ29uc3RhbnRz
LmggaW4gSGVhZGVycyAqLywKLQkJCQlBNUJBMTVFRDE4MjM0MEI0MDBBODJFNjkgLyogUmVtb3Rl
SW5zcGVjdG9yWFBDQ29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyNEU1NTExN0VF
Mjc0OTAwQUJCMjE3IC8qIFJlcGF0Y2guaCBpbiBIZWFkZXJzICovLAogCQkJCTg2OUVCQ0I3MEU4
QzZENEEwMDg3MjJDQyAvKiBSZXN1bHRUeXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQk3MEIwQTlE
MTFBOUI2NjQ2MDAwMTMwNkEgLyogUnVudGltZUZsYWdzLmggaW4gSGVhZGVycyAqLywKQEAgLTg5
NzQsNiArODk4NCw3IEBACiAJCQkJMEZGNDI3NDkxNThFQkU5MTAwNENCOUZGIC8qIHVkaXM4Nl90
eXBlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdFNUFCMzkxNzk5RTRCMjAwRDI4MzNEIC8qIFVE
aXM4NkRpc2Fzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdBOEFGNDExN0FEQjVGMzAw
NUFCMTc0IC8qIFVpbnQxNkFycmF5LmggaW4gSGVhZGVycyAqLywKKwkJCQk3QUNEREVENzFFMjUy
QjY4MDA5N0FGRUIgLyogUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbi5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJODY2NzM5RDMxM0JGREU3MTAwMjNEODdDIC8qIFVpbnQxNldpdGhGcmFjdGlvbi5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQTdBOEFGNDIxN0FEQjVGMzAwNUFCMTc0IC8qIFVpbnQzMkFy
cmF5LmggaW4gSGVhZGVycyAqLywKIAkJCQlBN0E4QUYzRjE3QURCNUYzMDA1QUIxNzQgLyogVWlu
dDhBcnJheS5oIGluIEhlYWRlcnMgKi8sCkBAIC05ODY1LDYgKzk4NzYsNyBAQAogCQkJCTBGQzA5
NzcyMTQ2OTNBRjkwMENGMjQ0MiAvKiBERkdPU1JFeGl0Q29tcGlsZXI2NC5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkwRjcwMjVBOTE3MTRCMEZBMDAzODJDMEUgLyogREZHT1NSRXhpdENvbXBpbGVy
Q29tbW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMzkyQzg5MUI0NjE4ODQwMDg0NDcyOCAv
KiBERkdPU1JFeGl0RnV6ei5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk3QUNEREVEODFFMjUyQjZF
MDA5N0FGRUIgLyogUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbi5tbSBpbiBTb3VyY2VzICov
LAogCQkJCTBGRUZDOUFBMTY4MUEzQjMwMDU2N0Y1MyAvKiBERkdPU1JFeGl0SnVtcFBsYWNlaG9s
ZGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMjM1QkVEMTcxNzhFNzMwMDY5MEM3RiAvKiBE
RkdPU1JFeGl0UHJlcGFyYXRpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY2MjM3OTcxQUU0
NUNBNzAwRDQwMkVBIC8qIERGR1BoYW50b21JbnNlcnRpb25QaGFzZS5jcHAgaW4gU291cmNlcyAq
LywKQEAgLTk4ODIsNiArOTg5NCw3IEBACiAJCQkJODZFQzlERDIxMzI4REY4MjAwMkIyQUQ3IC8q
IERGR1NwZWN1bGF0aXZlSklULmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg2ODgwRjFGMTQzMjhC
QjkwMEIwOEQ0MiAvKiBERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTg2ODgwRjREMTQzNTNCMjEwMEIwOEQ0MiAvKiBERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcCBp
biBTb3VyY2VzICovLAorCQkJCTdBQ0RERUQ1MUUyNTJCNUUwMDk3QUZFQiAvKiBSZW1vdGVJbnNw
ZWN0b3JDb2NvYS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTBGNjgyRkIyMTlCQ0IzNjQwMEZBM0JB
RCAvKiBERkdTU0FDYWxjdWxhdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3RDg5Q0ZGMTdB
MEI4Q0MwMDc3M0FEOCAvKiBERkdTU0FDb252ZXJzaW9uUGhhc2UuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMEZDMjBDQjkxODU1NkEzNTAwQzlFOTU0IC8qIERGR1NTQUxvd2VyaW5nUGhhc2UuY3Bw
IGluIFNvdXJjZXMgKi8sCkBAIC0xMDIwMiw2ICsxMDIxNSw3IEBACiAJCQkJQkNGRDhDOTIwRUVC
MkVFNzAwMjgzODQ4IC8qIEp1bXBUYWJsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjA3MEE0
QTFENTQzQTk1MDA2RTcyMzIgLyogTGFyZ2VBbGxvY2F0aW9uLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCURDRjNENTY5MUNEMjk0NkQwMDNENUM2NSAvKiBMYXp5Q2xhc3NTdHJ1Y3R1cmUuY3BwIGlu
IFNvdXJjZXMgKi8sCisJCQkJN0FDRERFRDQxRTI1MkI0RDAwOTdBRkVCIC8qIFJlbW90ZUNvbm5l
Y3Rpb25Ub1RhcmdldENvY29hLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZCNTQ2NzkxNEY1QzQ2
QjAwMkMyOTg5IC8qIExhenlPcGVyYW5kVmFsdWVQcm9maWxlLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTE0OEYyMUIwMTA3RUM1NDEwMDQyRUMyQyAvKiBMZXhlci5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkwRkY0Mjc1NzE1OTE0QTIwMDA0Q0I5RkYgLyogTGlua0J1ZmZlci5jcHAgaW4gU291cmNl
cyAqLywKQEAgLTEwMjI3LDYgKzEwMjQxLDcgQEAKIAkJCQk3OTVCMTk5NzFENzhCRTM1MDAyNjJG
QTAgLyogTWFwQmFzZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNzAwODczOTE3Q0JFODUzMDBD
M0U2NDMgLyogTWFwQ29uc3RydWN0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTc0REVGOTMx
ODJEOTkxNDAwNTIyQzIyIC8qIE1hcEl0ZXJhdG9yUHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICov
LAorCQkJCTdBQ0RERUQ5MUUyNTJCODMwMDk3QUZFQiAvKiBSZW1vdGVJbnNwZWN0b3IuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQTcwMDg3M0QxN0NCRThEMzAwQzNFNjQzIC8qIE1hcFByb3RvdHlw
ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDMkI5MTZDNTE0REEwNDBDMDBDQkFDODYgLyogTWFy
a2VkQWxsb2NhdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0MkQ2RjA4MTM1MzlBMjgwMEIw
MkU4NiAvKiBNYXJrZWRCbG9jay5jcHAgaW4gU291cmNlcyAqLywKQEAgLTEwMzE0LDExICsxMDMy
OSw4IEBACiAJCQkJMEZDMzE0MTUxODE0NkQ3MDAwMDMzMjMyIC8qIFJlZ2lzdGVyU2V0LmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUE1N0QyM0VEMTg5MUI1NTQwMDMxQzdGQSAvKiBSZWd1bGFyRXhw
cmVzc2lvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5OTJBQkNGOTFCRUE5QkQyMDA2NDAzQTAg
LyogUmVtb3RlQXV0b21hdGlvblRhcmdldC5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlBNUJBMTVF
QzE4MjM0MEI0MDBBODJFNjkgLyogUmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0Lm1tIGluIFNvdXJj
ZXMgKi8sCiAJCQkJOTk4RUQ2NzQxQkVENzBBQzAwREQ4MDE3IC8qIFJlbW90ZUNvbnRyb2xsYWJs
ZVRhcmdldC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNTk0NTU4RjE4MjQ1RUZEMDBDQzM4NDMg
LyogUmVtb3RlSW5zcGVjdGlvblRhcmdldC5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlBNUJBMTVF
OTE4MjM0MEIzMDBBODJFNjkgLyogUmVtb3RlSW5zcGVjdG9yLm1tIGluIFNvdXJjZXMgKi8sCi0J
CQkJQTVCQTE1RUUxODIzNDBCNDAwQTgyRTY5IC8qIFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rp
b24ubW0gaW4gU291cmNlcyAqLywKIAkJCQkwRjI0RTU1MDE3RUUyNzQ5MDBBQkIyMTcgLyogUmVw
YXRjaC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1Mjc3NzNERTFBQUY4M0FDMDBCREU3RTggLyog
UnVudGltZVR5cGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY3NzAwOTIxNDAyRkYzQzAwNzhF
QjM5IC8qIFNhbXBsaW5nQ291bnRlci5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9QbGF0Zm9ybU1hYy5jbWFrZSBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9QbGF0Zm9ybU1hYy5jbWFrZQppbmRleCAyZTZiMTViOWM2ZS4uZDc0MDVhODZkMjkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9QbGF0Zm9ybU1hYy5jbWFrZQorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvUGxhdGZvcm1NYWMuY21ha2UKQEAgLTEwLDExICsxMCwxNCBA
QCBsaXN0KEFQUEVORCBKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTCiAgICAgQVBJL09iakNDYWxsYmFj
a0Z1bmN0aW9uLm1tCiAKICAgICBpbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUF1dG9tYXRpb25UYXJn
ZXQuY3BwCi0gICAgaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQubW0K
ICAgICBpbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUNvbnRyb2xsYWJsZVRhcmdldC5jcHAKICAgICBp
bnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3Rpb25UYXJnZXQuY3BwCi0gICAgaW5zcGVjdG9y
L3JlbW90ZS9SZW1vdGVJbnNwZWN0b3IubW0KKyAgICBpbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUlu
c3BlY3Rvci5jcHAKICAgICBpbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3RvclhQQ0Nvbm5l
Y3Rpb24ubW0KKworICAgIGluc3BlY3Rvci9yZW1vdGUvY29jb2EvUmVtb3RlQ29ubmVjdGlvblRv
VGFyZ2V0Q29jb2EubW0KKyAgICBpbnNwZWN0b3IvcmVtb3RlL2NvY29hL1JlbW90ZUluc3BlY3Rv
ckNvY29hLm1tCisgICAgaW5zcGVjdG9yL3JlbW90ZS9jb2NvYS9SZW1vdGVJbnNwZWN0b3JYUEND
b25uZWN0aW9uLm1tCiApCiBhZGRfZGVmaW5pdGlvbnMoLURTVEFUSUNBTExZX0xJTktFRF9XSVRI
X1dURiAtRF9fU1REQ19XQU5UX0xJQl9FWFQxX18pCiAKQEAgLTI2LDYgKzI5LDcgQEAgbGlzdChB
UFBFTkQgSmF2YVNjcmlwdENvcmVfTElCUkFSSUVTCiBsaXN0KEFQUEVORCBKYXZhU2NyaXB0Q29y
ZV9JTkNMVURFX0RJUkVDVE9SSUVTCiAgICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2Rpc2Fzc2Vt
Ymxlci91ZGlzODYKICAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vaWN1CisgICAgJHtKQVZBU0NS
SVBUQ09SRV9ESVJ9L2luc3BlY3Rvci9yZW1vdGUvY29jb2EKICkKIAogc2V0KENNQUtFX1NIQVJF
RF9MSU5LRVJfRkxBR1MgJHtDTUFLRV9TSEFSRURfTElOS0VSX0ZMQUdTfSAiLWNvbXBhdGliaWxp
dHlfdmVyc2lvbiAxIC1jdXJyZW50X3ZlcnNpb24gJHtXRUJLSVRfTUFDX1ZFUlNJT059IikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUNv
bm5lY3Rpb25Ub1RhcmdldC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1v
dGUvUmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0LmgKaW5kZXggZGJhMDYwMTc5OWEuLjg5YWE3YmM1
ZTc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9S
ZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL3JlbW90ZS9SZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQuaApAQCAtMjcsNjcgKzI3LDgy
IEBACiAKICNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKIAotI2ltcG9ydCAiSW5zcGVjdG9y
RnJvbnRlbmRDaGFubmVsLmgiCi0jaW1wb3J0ICJSZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQuaCIK
LSNpbXBvcnQgIlJlbW90ZUluc3BlY3Rvci5oIgotI2ltcG9ydCA8bXV0ZXg+Ci0jaW1wb3J0IDx3
dGYvQmxvY2tQdHIuaD4KLSNpbXBvcnQgPHd0Zi9Mb2NrLmg+Ci0jaW1wb3J0IDx3dGYvUmV0YWlu
UHRyLmg+Ci0jaW1wb3J0IDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KKyNpbmNsdWRlICJJ
bnNwZWN0b3JGcm9udGVuZENoYW5uZWwuaCIKKyNpbmNsdWRlIDx3dGYvTG9jay5oPgorI2luY2x1
ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgorCisjaWYgUExBVEZPUk0oQ09DT0EpCisj
aW5jbHVkZSA8d3RmL0Jsb2NrUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogCiBP
QkpDX0NMQVNTIE5TU3RyaW5nOworI2VuZGlmCiAKIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCitj
bGFzcyBSZW1vdGVDb250cm9sbGFibGVUYXJnZXQ7CisKKyNpZiBQTEFURk9STShDT0NPQSkKIHR5
cGVkZWYgVmVjdG9yPEJsb2NrUHRyPHZvaWQgKCk+PiBSZW1vdGVUYXJnZXRRdWV1ZTsKKyNlbmRp
ZgogCiBjbGFzcyBSZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQgZmluYWwgOiBwdWJsaWMgVGhyZWFk
U2FmZVJlZkNvdW50ZWQ8UmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0PiwgcHVibGljIEZyb250ZW5k
Q2hhbm5lbCB7CiBwdWJsaWM6Ci0gICAgUmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0KFJlbW90ZUNv
bnRyb2xsYWJsZVRhcmdldCosIE5TU3RyaW5nICpjb25uZWN0aW9uSWRlbnRpZmllciwgTlNTdHJp
bmcgKmRlc3RpbmF0aW9uKTsKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBSZW1vdGVDb25uZWN0
aW9uVG9UYXJnZXQoUmVtb3RlQ29udHJvbGxhYmxlVGFyZ2V0KiwgTlNTdHJpbmcqIGNvbm5lY3Rp
b25JZGVudGlmaWVyLCBOU1N0cmluZyogZGVzdGluYXRpb24pOworI2VuZGlmCiAgICAgdmlydHVh
bCB+UmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0KCk7CiAKICAgICAvLyBNYWluIEFQSS4KICAgICBi
b29sIHNldHVwKGJvb2wgaXNBdXRvbWF0aWNJbnNwZWN0aW9uID0gZmFsc2UsIGJvb2wgYXV0b21h
dGljYWxseVBhdXNlID0gZmFsc2UpOwotICAgIHZvaWQgc2VuZE1lc3NhZ2VUb1RhcmdldChOU1N0
cmluZyAqKTsKKyAgICB2b2lkIHNlbmRNZXNzYWdlVG9UYXJnZXQoY29uc3QgU3RyaW5nJik7CiAg
ICAgdm9pZCBjbG9zZSgpOwogICAgIHZvaWQgdGFyZ2V0Q2xvc2VkKCk7CiAKICAgICBzdGQ6Om9w
dGlvbmFsPHVuc2lnbmVkPiB0YXJnZXRJZGVudGlmaWVyKCkgY29uc3Q7CisjaWYgUExBVEZPUk0o
Q09DT0EpCiAgICAgTlNTdHJpbmcgKmNvbm5lY3Rpb25JZGVudGlmaWVyKCkgY29uc3Q7CiAgICAg
TlNTdHJpbmcgKmRlc3RpbmF0aW9uKCkgY29uc3Q7CiAKICAgICBMb2NrJiBxdWV1ZU11dGV4KCkg
eyByZXR1cm4gbV9xdWV1ZU11dGV4OyB9CiAgICAgY29uc3QgUmVtb3RlVGFyZ2V0UXVldWUmIHF1
ZXVlKCkgY29uc3QgeyByZXR1cm4gbV9xdWV1ZTsgfQogICAgIHZvaWQgY2xlYXJRdWV1ZSgpIHsg
bV9xdWV1ZS5jbGVhcigpOyB9CisjZW5kaWYKIAogICAgIC8vIEZyb250ZW5kQ2hhbm5lbCBvdmVy
cmlkZXMuCiAgICAgQ29ubmVjdGlvblR5cGUgY29ubmVjdGlvblR5cGUoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBDb25uZWN0aW9uVHlwZTo6UmVtb3RlOyB9CiAgICAgdm9pZCBzZW5kTWVzc2Fn
ZVRvRnJvbnRlbmQoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CiAKIHByaXZhdGU6CisjaWYgUExB
VEZPUk0oQ09DT0EpCiAgICAgdm9pZCBkaXNwYXRjaEFzeW5jT25UYXJnZXQodm9pZCAoXmJsb2Nr
KSgpKTsKIAogICAgIHZvaWQgc2V0dXBSdW5Mb29wKCk7CiAgICAgdm9pZCB0ZWFyZG93blJ1bkxv
b3AoKTsKICAgICB2b2lkIHF1ZXVlVGFza09uUHJpdmF0ZVJ1bkxvb3Aodm9pZCAoXmJsb2NrKSgp
KTsKKyNlbmRpZgogCiAgICAgLy8gVGhpcyBjb25uZWN0aW9uIGZyb20gdGhlIFJlbW90ZUluc3Bl
Y3RvciBzaW5nbGV0b24gdG8gdGhlIEluc3BlY3Rpb25UYXJnZXQKICAgICAvLyBjYW4gYmUgdXNl
ZCBvbiBtdWx0aXBsZSB0aHJlYWRzLiBTbyBhbnkgYWNjZXNzIHRvIHRoZSB0YXJnZXQKICAgICAv
LyBpdHNlbGYgbXVzdCB0YWtlIHRoaXMgbXV0ZXggdG8gZW5zdXJlIG1fdGFyZ2V0IGlzIHZhbGlk
LgogICAgIExvY2sgbV90YXJnZXRNdXRleDsKIAorI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIC8v
IElmIGEgdGFyZ2V0IGhhcyBhIHNwZWNpZmljIHJ1biBsb29wIGl0IHdhbnRzIHRvIGV2YWx1YXRl
IG9uCiAgICAgLy8gd2Ugc2V0dXAgb3VyIHJ1biBsb29wIHNvdXJjZXMgb24gdGhhdCBzcGVjaWZp
YyBydW4gbG9vcC4KICAgICBSZXRhaW5QdHI8Q0ZSdW5Mb29wUmVmPiBtX3J1bkxvb3A7CiAgICAg
UmV0YWluUHRyPENGUnVuTG9vcFNvdXJjZVJlZj4gbV9ydW5Mb29wU291cmNlOwogICAgIFJlbW90
ZVRhcmdldFF1ZXVlIG1fcXVldWU7CiAgICAgTG9jayBtX3F1ZXVlTXV0ZXg7CisjZW5kaWYKIAog
ICAgIFJlbW90ZUNvbnRyb2xsYWJsZVRhcmdldCogbV90YXJnZXQgeyBudWxscHRyIH07CisgICAg
Ym9vbCBtX2Nvbm5lY3RlZCB7IGZhbHNlIH07CisKKyNpZiBQTEFURk9STShDT0NPQSkKICAgICBS
ZXRhaW5QdHI8TlNTdHJpbmc+IG1fY29ubmVjdGlvbklkZW50aWZpZXI7CiAgICAgUmV0YWluUHRy
PE5TU3RyaW5nPiBtX2Rlc3RpbmF0aW9uOwotICAgIGJvb2wgbV9jb25uZWN0ZWQgeyBmYWxzZSB9
OworI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUNvbnRyb2xsYWJsZVRh
cmdldC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlQ29u
dHJvbGxhYmxlVGFyZ2V0LmgKaW5kZXggZDY1ZmFlYWQ5NWQuLmFmYWUzNjlhZTFmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVDb250cm9s
bGFibGVUYXJnZXQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90
ZS9SZW1vdGVDb250cm9sbGFibGVUYXJnZXQuaApAQCAtMjcsMTAgKzI3LDEzIEBACiAKICNpZiBF
TkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKIAotI2luY2x1ZGUgPENvcmVGb3VuZGF0aW9uL0NGUnVu
TG9vcC5oPgogI2luY2x1ZGUgPHd0Zi9UeXBlQ2FzdHMuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9X
VEZTdHJpbmcuaD4KIAorI2lmIFVTRShDRikKKyNpbmNsdWRlIDxDb3JlRm91bmRhdGlvbi9DRlJ1
bkxvb3AuaD4KKyNlbmRpZgorCiBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAogY2xhc3MgRnJvbnRl
bmRDaGFubmVsOwpAQCAtNTMsOCArNTYsMTAgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBy
ZW1vdGVDb250cm9sQWxsb3dlZCgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0
Y2hNZXNzYWdlRnJvbVJlbW90ZShjb25zdCBTdHJpbmcmIG1lc3NhZ2UpID0gMDsKIAorI2lmIFVT
RShDRikKICAgICAvLyBUaGUgZGlzcGF0Y2ggYmxvY2sgd2lsbCBiZSBzY2hlZHVsZWQgb24gYSBn
bG9iYWwgcnVuIGxvb3AgaWYgbnVsbCBpcyByZXR1cm5lZC4KICAgICB2aXJ0dWFsIENGUnVuTG9v
cFJlZiB0YXJnZXRSdW5Mb29wKCkgeyByZXR1cm4gbnVsbHB0cjsgfQorI2VuZGlmCiBwcml2YXRl
OgogICAgIHVuc2lnbmVkIG1faWRlbnRpZmllciB7MH07CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdGlvblRhcmdldC5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdGlv
blRhcmdldC5oCmluZGV4IDM4NTJmY2NkODMxLi40NTMyOWY2ZDYyZiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdGlvblRhcmdl
dC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUlu
c3BlY3Rpb25UYXJnZXQuaApAQCAtNDEsOCArNDEsMTAgQEAgcHVibGljOgogICAgIGJvb2wgcmVt
b3RlRGVidWdnaW5nQWxsb3dlZCgpIGNvbnN0IHsgcmV0dXJuIG1fYWxsb3dlZDsgfQogICAgIHZv
aWQgc2V0UmVtb3RlRGVidWdnaW5nQWxsb3dlZChib29sKTsKIAorI2lmIFVTRShDRikKICAgICBD
RlJ1bkxvb3BSZWYgdGFyZ2V0UnVuTG9vcCgpIG92ZXJyaWRlIHsgcmV0dXJuIG1fcnVuTG9vcC5n
ZXQoKTsgfQogICAgIHZvaWQgc2V0VGFyZ2V0UnVuTG9vcChDRlJ1bkxvb3BSZWYgcnVuTG9vcCkg
eyBtX3J1bkxvb3AgPSBydW5Mb29wOyB9CisjZW5kaWYKIAogICAgIHZpcnR1YWwgU3RyaW5nIG5h
bWUoKSBjb25zdCB7IHJldHVybiBTdHJpbmcoKTsgfSAvLyBKYXZhU2NyaXB0IGFuZCBXZWIKICAg
ICB2aXJ0dWFsIFN0cmluZyB1cmwoKSBjb25zdCB7IHJldHVybiBTdHJpbmcoKTsgfSAvLyBXZWIK
QEAgLTU5LDcgKzYxLDkgQEAgcHVibGljOgogICAgIGJvb2wgcmVtb3RlQ29udHJvbEFsbG93ZWQo
KSBjb25zdCBvdmVycmlkZTsKIHByaXZhdGU6CiAgICAgYm9vbCBtX2FsbG93ZWQge2ZhbHNlfTsK
KyNpZiBVU0UoQ0YpCiAgICAgUmV0YWluUHRyPENGUnVuTG9vcFJlZj4gbV9ydW5Mb29wOworI2Vu
ZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3Rvci5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3IuY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4xNTc3YmViYjdkMAotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90
ZUluc3BlY3Rvci5jcHAKQEAgLTAsMCArMSwyMjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTMtMjAxNiBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJSZW1vdGVJbnNwZWN0b3IuaCIKKworI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQorCisj
aW5jbHVkZSAiUmVtb3RlQXV0b21hdGlvblRhcmdldC5oIgorI2luY2x1ZGUgIlJlbW90ZUNvbm5l
Y3Rpb25Ub1RhcmdldC5oIgorI2luY2x1ZGUgIlJlbW90ZUluc3BlY3Rpb25UYXJnZXQuaCIKKyNp
bmNsdWRlICJSZW1vdGVJbnNwZWN0b3JDb25zdGFudHMuaCIKKyNpbmNsdWRlIDx3dGYvTWFpblRo
cmVhZC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgSW5z
cGVjdG9yIHsKKworYm9vbCBSZW1vdGVJbnNwZWN0b3I6OnN0YXJ0RW5hYmxlZCA9IHRydWU7CisK
K3ZvaWQgUmVtb3RlSW5zcGVjdG9yOjpzdGFydERpc2FibGVkKCkKK3sKKyAgICBSZW1vdGVJbnNw
ZWN0b3I6OnN0YXJ0RW5hYmxlZCA9IGZhbHNlOworfQorCit1bnNpZ25lZCBSZW1vdGVJbnNwZWN0
b3I6Om5leHRBdmFpbGFibGVUYXJnZXRJZGVudGlmaWVyKCkKK3sKKyAgICB1bnNpZ25lZCBuZXh0
VmFsaWRUYXJnZXRJZGVudGlmaWVyOworICAgIGRvIHsKKyAgICAgICAgbmV4dFZhbGlkVGFyZ2V0
SWRlbnRpZmllciA9IG1fbmV4dEF2YWlsYWJsZVRhcmdldElkZW50aWZpZXIrKzsKKyAgICB9IHdo
aWxlICghbmV4dFZhbGlkVGFyZ2V0SWRlbnRpZmllciB8fCBuZXh0VmFsaWRUYXJnZXRJZGVudGlm
aWVyID09IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSB8fCBtX3RhcmdldE1h
cC5jb250YWlucyhuZXh0VmFsaWRUYXJnZXRJZGVudGlmaWVyKSk7CisgICAgcmV0dXJuIG5leHRW
YWxpZFRhcmdldElkZW50aWZpZXI7Cit9CisKK3ZvaWQgUmVtb3RlSW5zcGVjdG9yOjpyZWdpc3Rl
clRhcmdldChSZW1vdGVDb250cm9sbGFibGVUYXJnZXQqIHRhcmdldCkKK3sKKyAgICBBU1NFUlRf
QVJHKHRhcmdldCwgdGFyZ2V0KTsKKworICAgIHN0ZDo6bG9ja19ndWFyZDxMb2NrPiBsb2NrKG1f
bXV0ZXgpOworCisgICAgdW5zaWduZWQgdGFyZ2V0SWRlbnRpZmllciA9IG5leHRBdmFpbGFibGVU
YXJnZXRJZGVudGlmaWVyKCk7CisgICAgdGFyZ2V0LT5zZXRUYXJnZXRJZGVudGlmaWVyKHRhcmdl
dElkZW50aWZpZXIpOworCisgICAgeworICAgICAgICBhdXRvIHJlc3VsdCA9IG1fdGFyZ2V0TWFw
LnNldCh0YXJnZXRJZGVudGlmaWVyLCB0YXJnZXQpOworICAgICAgICBBU1NFUlRfVU5VU0VEKHJl
c3VsdCwgcmVzdWx0LmlzTmV3RW50cnkpOworICAgIH0KKworICAgIC8vIElmIHJlbW90ZSBjb250
cm9sIGlzIG5vdCBhbGxvd2VkLCBhIG51bGwgbGlzdGluZyBpcyByZXR1cm5lZC4KKyAgICBpZiAo
YXV0byB0YXJnZXRMaXN0aW5nID0gbGlzdGluZ0ZvclRhcmdldCgqdGFyZ2V0KSkgeworICAgICAg
ICBhdXRvIHJlc3VsdCA9IG1fdGFyZ2V0TGlzdGluZ01hcC5zZXQodGFyZ2V0SWRlbnRpZmllciwg
dGFyZ2V0TGlzdGluZyk7CisgICAgICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQuaXNO
ZXdFbnRyeSk7CisgICAgfQorCisgICAgcHVzaExpc3RpbmdzU29vbigpOworfQorCit2b2lkIFJl
bW90ZUluc3BlY3Rvcjo6dW5yZWdpc3RlclRhcmdldChSZW1vdGVDb250cm9sbGFibGVUYXJnZXQq
IHRhcmdldCkKK3sKKyAgICBBU1NFUlRfQVJHKHRhcmdldCwgdGFyZ2V0KTsKKworICAgIHN0ZDo6
bG9ja19ndWFyZDxMb2NrPiBsb2NrKG1fbXV0ZXgpOworCisgICAgdW5zaWduZWQgdGFyZ2V0SWRl
bnRpZmllciA9IHRhcmdldC0+dGFyZ2V0SWRlbnRpZmllcigpOworICAgIGlmICghdGFyZ2V0SWRl
bnRpZmllcikKKyAgICAgICAgcmV0dXJuOworCisgICAgYm9vbCB3YXNSZW1vdmVkID0gbV90YXJn
ZXRNYXAucmVtb3ZlKHRhcmdldElkZW50aWZpZXIpOworICAgIEFTU0VSVF9VTlVTRUQod2FzUmVt
b3ZlZCwgd2FzUmVtb3ZlZCk7CisKKyAgICAvLyBUaGUgbGlzdGluZyBtYXkgbmV2ZXIgaGF2ZSBi
ZWVuIGFkZGVkIGlmIHJlbW90ZSBjb250cm9sIGlzbid0IGFsbG93ZWQuCisgICAgbV90YXJnZXRM
aXN0aW5nTWFwLnJlbW92ZSh0YXJnZXRJZGVudGlmaWVyKTsKKworICAgIGlmIChhdXRvIGNvbm5l
Y3Rpb25Ub1RhcmdldCA9IG1fdGFyZ2V0Q29ubmVjdGlvbk1hcC50YWtlKHRhcmdldElkZW50aWZp
ZXIpKQorICAgICAgICBjb25uZWN0aW9uVG9UYXJnZXQtPnRhcmdldENsb3NlZCgpOworCisgICAg
cHVzaExpc3RpbmdzU29vbigpOworfQorCit2b2lkIFJlbW90ZUluc3BlY3Rvcjo6dXBkYXRlVGFy
Z2V0KFJlbW90ZUNvbnRyb2xsYWJsZVRhcmdldCogdGFyZ2V0KQoreworICAgIEFTU0VSVF9BUkco
dGFyZ2V0LCB0YXJnZXQpOworCisgICAgc3RkOjpsb2NrX2d1YXJkPExvY2s+IGxvY2sobV9tdXRl
eCk7CisKKyAgICB1bnNpZ25lZCB0YXJnZXRJZGVudGlmaWVyID0gdGFyZ2V0LT50YXJnZXRJZGVu
dGlmaWVyKCk7CisgICAgaWYgKCF0YXJnZXRJZGVudGlmaWVyKQorICAgICAgICByZXR1cm47CisK
KyAgICB7CisgICAgICAgIGF1dG8gcmVzdWx0ID0gbV90YXJnZXRNYXAuc2V0KHRhcmdldElkZW50
aWZpZXIsIHRhcmdldCk7CisgICAgICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCAhcmVzdWx0Lmlz
TmV3RW50cnkpOworICAgIH0KKworICAgIC8vIElmIHRoZSB0YXJnZXQgaGFzIGp1c3QgYWxsb3dl
ZCByZW1vdGUgY29udHJvbCwgdGhlbiB0aGUgbGlzdGluZyB3b24ndCBleGlzdCB5ZXQuCisgICAg
Ly8gSWYgdGhlIHRhcmdldCBoYXMgbm8gaWRlbnRpZmllciByZW1vdmUgdGhlIG9sZCBsaXN0aW5n
LgorICAgIGlmIChhdXRvIHRhcmdldExpc3RpbmcgPSBsaXN0aW5nRm9yVGFyZ2V0KCp0YXJnZXQp
KQorICAgICAgICBtX3RhcmdldExpc3RpbmdNYXAuc2V0KHRhcmdldElkZW50aWZpZXIsIHRhcmdl
dExpc3RpbmcpOworICAgIGVsc2UKKyAgICAgICAgbV90YXJnZXRMaXN0aW5nTWFwLnJlbW92ZSh0
YXJnZXRJZGVudGlmaWVyKTsKKworICAgIHB1c2hMaXN0aW5nc1Nvb24oKTsKK30KKwordm9pZCBS
ZW1vdGVJbnNwZWN0b3I6OnVwZGF0ZUNsaWVudENhcGFiaWxpdGllcygpCit7CisgICAgQVNTRVJU
KGlzTWFpblRocmVhZCgpKTsKKworICAgIHN0ZDo6bG9ja19ndWFyZDxMb2NrPiBsb2NrKG1fbXV0
ZXgpOworCisgICAgaWYgKCFtX2NsaWVudCkKKyAgICAgICAgbV9jbGllbnRDYXBhYmlsaXRpZXMg
PSBzdGQ6Om51bGxvcHQ7CisgICAgZWxzZSB7CisgICAgICAgIFJlbW90ZUluc3BlY3Rvcjo6Q2xp
ZW50OjpDYXBhYmlsaXRpZXMgdXBkYXRlZENhcGFiaWxpdGllcyA9IHsKKyAgICAgICAgICAgIG1f
Y2xpZW50LT5yZW1vdGVBdXRvbWF0aW9uQWxsb3dlZCgpIC8vIHJlbW90ZUF1dG9tYXRpb25BbGxv
d2VkCisgICAgICAgIH07CisKKyAgICAgICAgbV9jbGllbnRDYXBhYmlsaXRpZXMgPSB1cGRhdGVk
Q2FwYWJpbGl0aWVzOworICAgIH0KK30KKwordm9pZCBSZW1vdGVJbnNwZWN0b3I6OnNldFJlbW90
ZUluc3BlY3RvckNsaWVudChSZW1vdGVJbnNwZWN0b3I6OkNsaWVudCogY2xpZW50KQoreworICAg
IEFTU0VSVF9BUkcoY2xpZW50LCBjbGllbnQpOworICAgIEFTU0VSVCghbV9jbGllbnQpOworCisg
ICAgeworICAgICAgICBzdGQ6OmxvY2tfZ3VhcmQ8TG9jaz4gbG9jayhtX211dGV4KTsKKyAgICAg
ICAgbV9jbGllbnQgPSBjbGllbnQ7CisgICAgfQorCisgICAgLy8gU2VuZCBhbiB1cGRhdGVkIGxp
c3RpbmcgdGhhdCBpbmNsdWRlcyB3aGV0aGVyIHRoZSBjbGllbnQgYWxsb3dzIHJlbW90ZSBhdXRv
bWF0aW9uLgorICAgIHVwZGF0ZUNsaWVudENhcGFiaWxpdGllcygpOworICAgIHB1c2hMaXN0aW5n
c1Nvb24oKTsKK30KKwordm9pZCBSZW1vdGVJbnNwZWN0b3I6OnNldHVwRmFpbGVkKHVuc2lnbmVk
IHRhcmdldElkZW50aWZpZXIpCit7CisgICAgc3RkOjpsb2NrX2d1YXJkPExvY2s+IGxvY2sobV9t
dXRleCk7CisKKyAgICBtX3RhcmdldENvbm5lY3Rpb25NYXAucmVtb3ZlKHRhcmdldElkZW50aWZp
ZXIpOworCisgICAgdXBkYXRlSGFzQWN0aXZlRGVidWdTZXNzaW9uKCk7CisKKyAgICBpZiAodGFy
Z2V0SWRlbnRpZmllciA9PSBtX2F1dG9tYXRpY0luc3BlY3Rpb25DYW5kaWRhdGVUYXJnZXRJZGVu
dGlmaWVyKQorICAgICAgICBtX2F1dG9tYXRpY0luc3BlY3Rpb25QYXVzZWQgPSBmYWxzZTsKKwor
ICAgIHB1c2hMaXN0aW5nc1Nvb24oKTsKK30KKwordm9pZCBSZW1vdGVJbnNwZWN0b3I6OnNldHVw
Q29tcGxldGVkKHVuc2lnbmVkIHRhcmdldElkZW50aWZpZXIpCit7CisgICAgc3RkOjpsb2NrX2d1
YXJkPExvY2s+IGxvY2sobV9tdXRleCk7CisKKyAgICBpZiAodGFyZ2V0SWRlbnRpZmllciA9PSBt
X2F1dG9tYXRpY0luc3BlY3Rpb25DYW5kaWRhdGVUYXJnZXRJZGVudGlmaWVyKQorICAgICAgICBt
X2F1dG9tYXRpY0luc3BlY3Rpb25QYXVzZWQgPSBmYWxzZTsKK30KKworYm9vbCBSZW1vdGVJbnNw
ZWN0b3I6OndhaXRpbmdGb3JBdXRvbWF0aWNJbnNwZWN0aW9uKHVuc2lnbmVkKQoreworICAgIC8v
IFdlIGRvbid0IHRha2UgdGhlIGxvY2sgdG8gY2hlY2sgdGhpcyBiZWNhdXNlIHdlIGFzc3VtZSBp
dCB3aWxsIGJlIGNoZWNrZWQgcmVwZWF0ZWRseS4KKyAgICByZXR1cm4gbV9hdXRvbWF0aWNJbnNw
ZWN0aW9uUGF1c2VkOworfQorCit2b2lkIFJlbW90ZUluc3BlY3Rvcjo6Y2xpZW50Q2FwYWJpbGl0
aWVzRGlkQ2hhbmdlKCkKK3sKKyAgICB1cGRhdGVDbGllbnRDYXBhYmlsaXRpZXMoKTsKKyAgICBw
dXNoTGlzdGluZ3NTb29uKCk7Cit9CisKK3ZvaWQgUmVtb3RlSW5zcGVjdG9yOjpzdG9wKCkKK3sK
KyAgICBzdGQ6OmxvY2tfZ3VhcmQ8TG9jaz4gbG9jayhtX211dGV4KTsKKworICAgIHN0b3BJbnRl
cm5hbChTdG9wU291cmNlOjpBUEkpOworfQorCitUYXJnZXRMaXN0aW5nIFJlbW90ZUluc3BlY3Rv
cjo6bGlzdGluZ0ZvclRhcmdldChjb25zdCBSZW1vdGVDb250cm9sbGFibGVUYXJnZXQmIHRhcmdl
dCkgY29uc3QKK3sKKyAgICBpZiAoaXM8UmVtb3RlSW5zcGVjdGlvblRhcmdldD4odGFyZ2V0KSkK
KyAgICAgICAgcmV0dXJuIGxpc3RpbmdGb3JJbnNwZWN0aW9uVGFyZ2V0KGRvd25jYXN0PFJlbW90
ZUluc3BlY3Rpb25UYXJnZXQ+KHRhcmdldCkpOworICAgIGlmIChpczxSZW1vdGVBdXRvbWF0aW9u
VGFyZ2V0Pih0YXJnZXQpKQorICAgICAgICByZXR1cm4gbGlzdGluZ0ZvckF1dG9tYXRpb25UYXJn
ZXQoZG93bmNhc3Q8UmVtb3RlQXV0b21hdGlvblRhcmdldD4odGFyZ2V0KSk7CisKKyAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKwordm9pZCBSZW1vdGVJ
bnNwZWN0b3I6OnVwZGF0ZUhhc0FjdGl2ZURlYnVnU2Vzc2lvbigpCit7CisgICAgYm9vbCBoYXNB
Y3RpdmVEZWJ1Z2dlclNlc3Npb24gPSAhbV90YXJnZXRDb25uZWN0aW9uTWFwLmlzRW1wdHkoKTsK
KyAgICBpZiAoaGFzQWN0aXZlRGVidWdnZXJTZXNzaW9uID09IG1faGFzQWN0aXZlRGVidWdTZXNz
aW9uKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2hhc0FjdGl2ZURlYnVnU2Vzc2lvbiA9IGhh
c0FjdGl2ZURlYnVnZ2VyU2Vzc2lvbjsKKworICAgIC8vIEZJWE1FOiBFeHBvc2Ugc29tZSB3YXkg
dG8gYWNjZXNzIHRoaXMgc3RhdGUgaW4gYW4gZW1iZWRkZXIuCisgICAgLy8gTGVnYWN5IGlPUyBX
ZWJLaXQgMSBoYWQgYSBub3RpZmljYXRpb24uIFRoaXMgd2lsbCBuZWVkIHRvIGJlIHNtYXJ0ZXIg
d2l0aCBXZWJLaXQyLgorfQorCit9IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IKKworI2VuZGlmIC8v
IEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3IuaAppbmRleCA5M2ZkMWE3ZDdj
MC4uMjFhN2UxM2YxMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3IvcmVtb3RlL1JlbW90ZUluc3BlY3Rvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3Rvci5oCkBAIC0yNywxNCArMjcsMTggQEAKIAog
I2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQogCi0jaW1wb3J0ICJSZW1vdGVJbnNwZWN0b3JY
UENDb25uZWN0aW9uLmgiCi0jaW1wb3J0IDx3dGYvRm9yd2FyZC5oPgotI2ltcG9ydCA8d3RmL0hh
c2hNYXAuaD4KLSNpbXBvcnQgPHd0Zi9Mb2NrLmg+Ci0jaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+
CisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2lu
Y2x1ZGUgPHd0Zi9Mb2NrLmg+CisKKyNpZiBQTEFURk9STShDT0NPQSkKKyNpbmNsdWRlICJSZW1v
dGVJbnNwZWN0b3JYUENDb25uZWN0aW9uLmgiCisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgog
CiBPQkpDX0NMQVNTIE5TRGljdGlvbmFyeTsKIE9CSkNfQ0xBU1MgTlNTdHJpbmc7Cit0eXBlZGVm
IFJldGFpblB0cjxOU0RpY3Rpb25hcnk+IFRhcmdldExpc3Rpbmc7CisjZW5kaWYKIAogbmFtZXNw
YWNlIEluc3BlY3RvciB7CiAKQEAgLTQ0LDcgKzQ4LDExIEBAIGNsYXNzIFJlbW90ZUNvbnRyb2xs
YWJsZVRhcmdldDsKIGNsYXNzIFJlbW90ZUluc3BlY3Rpb25UYXJnZXQ7CiBjbGFzcyBSZW1vdGVJ
bnNwZWN0b3JDbGllbnQ7CiAKLWNsYXNzIEpTX0VYUE9SVF9QUklWQVRFIFJlbW90ZUluc3BlY3Rv
ciBmaW5hbCA6IHB1YmxpYyBSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uOjpDbGllbnQgewor
Y2xhc3MgSlNfRVhQT1JUX1BSSVZBVEUgUmVtb3RlSW5zcGVjdG9yIGZpbmFsCisjaWYgUExBVEZP
Uk0oQ09DT0EpCisgICAgOiBwdWJsaWMgUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbjo6Q2xp
ZW50CisjZW5kaWYKK3sKIHB1YmxpYzoKICAgICBjbGFzcyBDbGllbnQgewogICAgIHB1YmxpYzoK
QEAgLTgwLDExICs4OCwxMyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzdGFydCgpOwogICAgIHZvaWQg
c3RvcCgpOwogCisjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgYm9vbCBoYXNQYXJlbnRQcm9jZXNz
SW5mb3JtYXRpb24oKSBjb25zdCB7IHJldHVybiBtX3BhcmVudFByb2Nlc3NJZGVudGlmaWVyICE9
IDA7IH0KICAgICBwaWRfdCBwYXJlbnRQcm9jZXNzSWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJu
IG1fcGFyZW50UHJvY2Vzc0lkZW50aWZpZXI7IH0KICAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBw
YXJlbnRQcm9jZXNzQXVkaXREYXRhKCkgY29uc3QgeyByZXR1cm4gbV9wYXJlbnRQcm9jZXNzQXVk
aXREYXRhOyB9CiAgICAgdm9pZCBzZXRQYXJlbnRQcm9jZXNzSW5mb3JtYXRpb24ocGlkX3QsIFJl
dGFpblB0cjxDRkRhdGFSZWY+IGF1ZGl0RGF0YSk7CiAgICAgdm9pZCBzZXRQYXJlbnRQcm9jZXNz
SW5mb21hdGlvbklzRGVsYXllZCgpOworI2VuZGlmCiAKIHByaXZhdGU6CiAgICAgUmVtb3RlSW5z
cGVjdG9yKCk7CkBAIC05NCwxMSArMTA0LDE0IEBAIHByaXZhdGU6CiAgICAgZW51bSBjbGFzcyBT
dG9wU291cmNlIHsgQVBJLCBYUENNZXNzYWdlIH07CiAgICAgdm9pZCBzdG9wSW50ZXJuYWwoU3Rv
cFNvdXJjZSk7CiAKKyNpZiBQTEFURk9STShDT0NPQSkKICAgICB2b2lkIHNldHVwWFBDQ29ubmVj
dGlvbklmTmVlZGVkKCk7CisjZW5kaWYKKworICAgIFRhcmdldExpc3RpbmcgbGlzdGluZ0ZvclRh
cmdldChjb25zdCBSZW1vdGVDb250cm9sbGFibGVUYXJnZXQmKSBjb25zdDsKKyAgICBUYXJnZXRM
aXN0aW5nIGxpc3RpbmdGb3JJbnNwZWN0aW9uVGFyZ2V0KGNvbnN0IFJlbW90ZUluc3BlY3Rpb25U
YXJnZXQmKSBjb25zdDsKKyAgICBUYXJnZXRMaXN0aW5nIGxpc3RpbmdGb3JBdXRvbWF0aW9uVGFy
Z2V0KGNvbnN0IFJlbW90ZUF1dG9tYXRpb25UYXJnZXQmKSBjb25zdDsKIAotICAgIFJldGFpblB0
cjxOU0RpY3Rpb25hcnk+IGxpc3RpbmdGb3JUYXJnZXQoY29uc3QgUmVtb3RlQ29udHJvbGxhYmxl
VGFyZ2V0JikgY29uc3Q7Ci0gICAgUmV0YWluUHRyPE5TRGljdGlvbmFyeT4gbGlzdGluZ0Zvcklu
c3BlY3Rpb25UYXJnZXQoY29uc3QgUmVtb3RlSW5zcGVjdGlvblRhcmdldCYpIGNvbnN0OwotICAg
IFJldGFpblB0cjxOU0RpY3Rpb25hcnk+IGxpc3RpbmdGb3JBdXRvbWF0aW9uVGFyZ2V0KGNvbnN0
IFJlbW90ZUF1dG9tYXRpb25UYXJnZXQmKSBjb25zdDsKICAgICB2b2lkIHB1c2hMaXN0aW5nc05v
dygpOwogICAgIHZvaWQgcHVzaExpc3RpbmdzU29vbigpOwogCkBAIC0xMDcsNiArMTIwLDcgQEAg
cHJpdmF0ZToKIAogICAgIHZvaWQgc2VuZEF1dG9tYXRpY0luc3BlY3Rpb25DYW5kaWRhdGVNZXNz
YWdlKCk7CiAKKyNpZiBQTEFURk9STShDT0NPQSkKICAgICB2b2lkIHhwY0Nvbm5lY3Rpb25SZWNl
aXZlZE1lc3NhZ2UoUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbiosIE5TU3RyaW5nICptZXNz
YWdlTmFtZSwgTlNEaWN0aW9uYXJ5ICp1c2VySW5mbykgb3ZlcnJpZGU7CiAgICAgdm9pZCB4cGND
b25uZWN0aW9uRmFpbGVkKFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24qKSBvdmVycmlkZTsK
ICAgICB2b2lkIHhwY0Nvbm5lY3Rpb25VbmhhbmRsZWRNZXNzYWdlKFJlbW90ZUluc3BlY3RvclhQ
Q0Nvbm5lY3Rpb24qLCB4cGNfb2JqZWN0X3QpIG92ZXJyaWRlOwpAQCAtMTIxLDYgKzEzNSw3IEBA
IHByaXZhdGU6CiAgICAgdm9pZCByZWNlaXZlZEF1dG9tYXRpY0luc3BlY3Rpb25Db25maWd1cmF0
aW9uTWVzc2FnZShOU0RpY3Rpb25hcnkgKnVzZXJJbmZvKTsKICAgICB2b2lkIHJlY2VpdmVkQXV0
b21hdGljSW5zcGVjdGlvblJlamVjdE1lc3NhZ2UoTlNEaWN0aW9uYXJ5ICp1c2VySW5mbyk7CiAg
ICAgdm9pZCByZWNlaXZlZEF1dG9tYXRpb25TZXNzaW9uUmVxdWVzdE1lc3NhZ2UoTlNEaWN0aW9u
YXJ5ICp1c2VySW5mbyk7CisjZW5kaWYKIAogICAgIHN0YXRpYyBib29sIHN0YXJ0RW5hYmxlZDsK
IApAQCAtMTMxLDE1ICsxNDYsMTkgQEAgcHJpdmF0ZToKICAgICBMb2NrIG1fbXV0ZXg7CiAKICAg
ICBIYXNoTWFwPHVuc2lnbmVkLCBSZW1vdGVDb250cm9sbGFibGVUYXJnZXQqPiBtX3RhcmdldE1h
cDsKLSAgICBIYXNoTWFwPHVuc2lnbmVkLCBSZXRhaW5QdHI8TlNEaWN0aW9uYXJ5Pj4gbV90YXJn
ZXRMaXN0aW5nTWFwOwogICAgIEhhc2hNYXA8dW5zaWduZWQsIFJlZlB0cjxSZW1vdGVDb25uZWN0
aW9uVG9UYXJnZXQ+PiBtX3RhcmdldENvbm5lY3Rpb25NYXA7CisgICAgSGFzaE1hcDx1bnNpZ25l
ZCwgVGFyZ2V0TGlzdGluZz4gbV90YXJnZXRMaXN0aW5nTWFwOwogCisjaWYgUExBVEZPUk0oQ09D
T0EpCiAgICAgUmVmUHRyPFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24+IG1fcmVsYXlDb25u
ZWN0aW9uOworI2VuZGlmCiAKICAgICBSZW1vdGVJbnNwZWN0b3I6OkNsaWVudCogbV9jbGllbnQg
eyBudWxscHRyIH07CiAgICAgc3RkOjpvcHRpb25hbDxSZW1vdGVJbnNwZWN0b3I6OkNsaWVudDo6
Q2FwYWJpbGl0aWVzPiBtX2NsaWVudENhcGFiaWxpdGllczsKIAorI2lmIFBMQVRGT1JNKENPQ09B
KQogICAgIGRpc3BhdGNoX3F1ZXVlX3QgbV94cGNRdWV1ZTsKKyNlbmRpZgogICAgIHVuc2lnbmVk
IG1fbmV4dEF2YWlsYWJsZVRhcmdldElkZW50aWZpZXIgeyAxIH07CiAgICAgaW50IG1fbm90aWZ5
VG9rZW4geyAwIH07CiAgICAgYm9vbCBtX2VuYWJsZWQgeyBmYWxzZSB9OwpAQCAtMTQ3LDcgKzE2
Niw5IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX3B1c2hTY2hlZHVsZWQgeyBmYWxzZSB9OwogCiAg
ICAgcGlkX3QgbV9wYXJlbnRQcm9jZXNzSWRlbnRpZmllciB7IDAgfTsKKyNpZiBQTEFURk9STShD
T0NPQSkKICAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBtX3BhcmVudFByb2Nlc3NBdWRpdERhdGE7
CisjZW5kaWYKICAgICBib29sIG1fc2hvdWxkU2VuZFBhcmVudFByb2Nlc3NJbmZvcm1hdGlvbiB7
IGZhbHNlIH07CiAgICAgYm9vbCBtX2F1dG9tYXRpY0luc3BlY3Rpb25FbmFibGVkIHsgZmFsc2Ug
fTsKICAgICBib29sIG1fYXV0b21hdGljSW5zcGVjdGlvblBhdXNlZCB7IGZhbHNlIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVDb25u
ZWN0aW9uVG9UYXJnZXQubW0gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90
ZS9jb2NvYS9SZW1vdGVDb25uZWN0aW9uVG9UYXJnZXRDb2NvYS5tbQpzaW1pbGFyaXR5IGluZGV4
IDkzJQpyZW5hbWUgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9S
ZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQubW0KcmVuYW1lIHRvIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvcmVtb3RlL2NvY29hL1JlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldENvY29hLm1t
CmluZGV4IGQ2MGRhNDhhZmE4Li5hYzNjNzIzMWY0NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0Lm1tCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL2NvY29hL1JlbW90ZUNv
bm5lY3Rpb25Ub1RhcmdldENvY29hLm1tCkBAIC0zMSw2ICszMSw3IEBACiAjaW1wb3J0ICJFdmVu
dExvb3AuaCIKICNpbXBvcnQgIlJlbW90ZUF1dG9tYXRpb25UYXJnZXQuaCIKICNpbXBvcnQgIlJl
bW90ZUluc3BlY3Rpb25UYXJnZXQuaCIKKyNpbXBvcnQgIlJlbW90ZUluc3BlY3Rvci5oIgogI2lt
cG9ydCA8ZGlzcGF0Y2gvZGlzcGF0Y2guaD4KICNpbXBvcnQgPHd0Zi9PcHRpb25hbC5oPgogCkBA
IC03OCwxMCArNzksMTAgQEAgc3RhdGljIHZvaWQgUmVtb3RlVGFyZ2V0UXVldWVUYXNrT25HbG9i
YWxRdWV1ZSh2b2lkIChedGFzaykoKSkKIHN0YXRpYyB2b2lkIFJlbW90ZVRhcmdldEluaXRpYWxp
emVHbG9iYWxRdWV1ZSgpCiB7CiAgICAgc3RhdGljIGRpc3BhdGNoX29uY2VfdCBwcmVkOwotICAg
IGRpc3BhdGNoX29uY2UoJnByZWQsIF57CisgICAgZGlzcGF0Y2hfb25jZSgmcHJlZCwgXiB7CiAg
ICAgICAgIHJ3aVF1ZXVlID0gbmV3IFJlbW90ZVRhcmdldFF1ZXVlOwogCi0gICAgICAgIENGUnVu
TG9vcFNvdXJjZUNvbnRleHQgcnVuTG9vcFNvdXJjZUNvbnRleHQgPSB7MCwgbnVsbHB0ciwgbnVs
bHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0
ciwgUmVtb3RlVGFyZ2V0SGFuZGxlUnVuU291cmNlR2xvYmFsfTsKKyAgICAgICAgQ0ZSdW5Mb29w
U291cmNlQ29udGV4dCBydW5Mb29wU291cmNlQ29udGV4dCA9IHsgMCwgbnVsbHB0ciwgbnVsbHB0
ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwg
UmVtb3RlVGFyZ2V0SGFuZGxlUnVuU291cmNlR2xvYmFsIH07CiAgICAgICAgIHJ3aVJ1bkxvb3BT
b3VyY2UgPSBDRlJ1bkxvb3BTb3VyY2VDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgMSwgJnJ1
bkxvb3BTb3VyY2VDb250ZXh0KTsKIAogICAgICAgICAvLyBBZGQgdG8gdGhlIGRlZmF1bHQgcnVu
IGxvb3AgbW9kZSBmb3IgZGVmYXVsdCBoYW5kbGluZywgYW5kIHRoZSBKU0NvbnRleHQgcmVtb3Rl
IGluc3BlY3RvciBydW4gbG9vcCBtb2RlIHdoZW4gcGF1c2VkLgpAQCAtMTU5LDcgKzE2MCw3IEBA
IGJvb2wgUmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0OjpzZXR1cChib29sIGlzQXV0b21hdGljSW5z
cGVjdGlvbiwgYm9vbCBhdXRvbWF0aWNhCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIHJl
ZigpOwotICAgIGRpc3BhdGNoQXN5bmNPblRhcmdldCheeworICAgIGRpc3BhdGNoQXN5bmNPblRh
cmdldCheIHsKICAgICAgICAgewogICAgICAgICAgICAgc3RkOjpsb2NrX2d1YXJkPExvY2s+IGxv
Y2sobV90YXJnZXRNdXRleCk7CiAgICAgICAgICAgICBpZiAoIW1fdGFyZ2V0IHx8ICFtX3Rhcmdl
dC0+cmVtb3RlQ29udHJvbEFsbG93ZWQoKSkgewpAQCAtMTk0LDcgKzE5NSw3IEBAIHZvaWQgUmVt
b3RlQ29ubmVjdGlvblRvVGFyZ2V0Ojp0YXJnZXRDbG9zZWQoKQogdm9pZCBSZW1vdGVDb25uZWN0
aW9uVG9UYXJnZXQ6OmNsb3NlKCkKIHsKICAgICByZWYoKTsKLSAgICBkaXNwYXRjaEFzeW5jT25U
YXJnZXQoXnsKKyAgICBkaXNwYXRjaEFzeW5jT25UYXJnZXQoXiB7CiAgICAgICAgIHsKICAgICAg
ICAgICAgIHN0ZDo6bG9ja19ndWFyZDxMb2NrPiBsb2NrKG1fdGFyZ2V0TXV0ZXgpOwogCkBAIC0y
MDksMTAgKzIxMCwxMCBAQCB2b2lkIFJlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldDo6Y2xvc2UoKQog
ICAgIH0pOwogfQogCi12b2lkIFJlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldDo6c2VuZE1lc3NhZ2VU
b1RhcmdldChOU1N0cmluZyAqbWVzc2FnZSkKK3ZvaWQgUmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0
OjpzZW5kTWVzc2FnZVRvVGFyZ2V0KGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKIHsKICAgICByZWYo
KTsKLSAgICBkaXNwYXRjaEFzeW5jT25UYXJnZXQoXnsKKyAgICBkaXNwYXRjaEFzeW5jT25UYXJn
ZXQoXiB7CiAgICAgICAgIHsKICAgICAgICAgICAgIFJlbW90ZUNvbnRyb2xsYWJsZVRhcmdldCog
dGFyZ2V0ID0gbnVsbHB0cjsKICAgICAgICAgICAgIHsKQEAgLTI0Niw3ICsyNDcsNyBAQCB2b2lk
IFJlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldDo6c2V0dXBSdW5Mb29wKCkKIAogICAgIG1fcnVuTG9v
cCA9IHRhcmdldFJ1bkxvb3A7CiAKLSAgICBDRlJ1bkxvb3BTb3VyY2VDb250ZXh0IHJ1bkxvb3BT
b3VyY2VDb250ZXh0ID0gezAsIHRoaXMsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIG51bGxw
dHIsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIFJlbW90ZVRhcmdldEhhbmRsZVJ1blNvdXJj
ZVdpdGhJbmZvfTsKKyAgICBDRlJ1bkxvb3BTb3VyY2VDb250ZXh0IHJ1bkxvb3BTb3VyY2VDb250
ZXh0ID0geyAwLCB0aGlzLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBudWxs
cHRyLCBudWxscHRyLCBudWxscHRyLCBSZW1vdGVUYXJnZXRIYW5kbGVSdW5Tb3VyY2VXaXRoSW5m
byB9OwogICAgIG1fcnVuTG9vcFNvdXJjZSA9IGFkb3B0Q0YoQ0ZSdW5Mb29wU291cmNlQ3JlYXRl
KGtDRkFsbG9jYXRvckRlZmF1bHQsIDEsICZydW5Mb29wU291cmNlQ29udGV4dCkpOwogCiAgICAg
Q0ZSdW5Mb29wQWRkU291cmNlKG1fcnVuTG9vcC5nZXQoKSwgbV9ydW5Mb29wU291cmNlLmdldCgp
LCBrQ0ZSdW5Mb29wRGVmYXVsdE1vZGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yLm1tIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvY29jb2EvUmVtb3RlSW5zcGVjdG9yQ29jb2EubW0Kc2lt
aWxhcml0eSBpbmRleCA4MCUKcmVuYW1lIGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yLm1tCnJlbmFtZSB0byBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL3JlbW90ZS9jb2NvYS9SZW1vdGVJbnNwZWN0b3JDb2NvYS5tbQppbmRl
eCAyMWNiMjMyZDhjNC4uYTg4OGIyY2Q3OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3Rvci5tbQorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9jb2NvYS9SZW1vdGVJbnNwZWN0b3JDb2NvYS5t
bQpAQCAtNDcsNyArNDcsNyBAQCBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAogc3RhdGljIGJvb2wg
Y2FuQWNjZXNzV2ViSW5zcGVjdG9yTWFjaFBvcnQoKQogewotICAgIHJldHVybiBzYW5kYm94X2No
ZWNrKGdldHBpZCgpLCAibWFjaC1sb29rdXAiLCBzdGF0aWNfY2FzdDxlbnVtIHNhbmRib3hfZmls
dGVyX3R5cGU+KFNBTkRCT1hfRklMVEVSX0dMT0JBTF9OQU1FIHwgU0FOREJPWF9DSEVDS19OT19S
RVBPUlQpLCBXSVJYUENNYWNoUG9ydE5hbWUpID09IDA7CisgICAgcmV0dXJuICFzYW5kYm94X2No
ZWNrKGdldHBpZCgpLCAibWFjaC1sb29rdXAiLCBzdGF0aWNfY2FzdDxlbnVtIHNhbmRib3hfZmls
dGVyX3R5cGU+KFNBTkRCT1hfRklMVEVSX0dMT0JBTF9OQU1FIHwgU0FOREJPWF9DSEVDS19OT19S
RVBPUlQpLCBXSVJYUENNYWNoUG9ydE5hbWUpOwogfQogCiBzdGF0aWMgYm9vbCBnbG9iYWxBdXRv
bWF0aWNJbnNwZWN0aW9uU3RhdGUoKQpAQCAtNjEsMjEgKzYxLDE0IEBAIHN0YXRpYyBib29sIGds
b2JhbEF1dG9tYXRpY0luc3BlY3Rpb25TdGF0ZSgpCiAgICAgcmV0dXJuIGF1dG9tYXRpY0luc3Bl
Y3Rpb25FbmFibGVkID09IDE7CiB9CiAKLWJvb2wgUmVtb3RlSW5zcGVjdG9yOjpzdGFydEVuYWJs
ZWQgPSB0cnVlOwotCi12b2lkIFJlbW90ZUluc3BlY3Rvcjo6c3RhcnREaXNhYmxlZCgpCi17Ci0g
ICAgUmVtb3RlSW5zcGVjdG9yOjpzdGFydEVuYWJsZWQgPSBmYWxzZTsKLX0KLQogUmVtb3RlSW5z
cGVjdG9yJiBSZW1vdGVJbnNwZWN0b3I6OnNpbmdsZXRvbigpCiB7CiAgICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPFJlbW90ZUluc3BlY3Rvcj4gc2hhcmVkOwogCiAgICAgc3RhdGljIGRpc3BhdGNo
X29uY2VfdCBvbmNlOwotICAgIGRpc3BhdGNoX29uY2UoJm9uY2UsIF57CisgICAgZGlzcGF0Y2hf
b25jZSgmb25jZSwgXiB7CiAgICAgICAgIGlmIChjYW5BY2Nlc3NXZWJJbnNwZWN0b3JNYWNoUG9y
dCgpKSB7Ci0gICAgICAgICAgICBkaXNwYXRjaF9ibG9ja190IGluaXRpYWxpemUgPSBeeworICAg
ICAgICAgICAgZGlzcGF0Y2hfYmxvY2tfdCBpbml0aWFsaXplID0gXiB7CiAgICAgICAgICAgICAg
ICAgV1RGOjppbml0aWFsaXplTWFpblRocmVhZCgpOwogICAgICAgICAgICAgICAgIEpTQzo6aW5p
dGlhbGl6ZVRocmVhZGluZygpOwogICAgICAgICAgICAgICAgIGlmIChSZW1vdGVJbnNwZWN0b3I6
OnN0YXJ0RW5hYmxlZCkKQEAgLTEwMSw4NSArOTQsNiBAQCBSZW1vdGVJbnNwZWN0b3I6OlJlbW90
ZUluc3BlY3RvcigpCiB7CiB9CiAKLXVuc2lnbmVkIFJlbW90ZUluc3BlY3Rvcjo6bmV4dEF2YWls
YWJsZVRhcmdldElkZW50aWZpZXIoKQotewotICAgIHVuc2lnbmVkIG5leHRWYWxpZFRhcmdldElk
ZW50aWZpZXI7Ci0gICAgZG8gewotICAgICAgICBuZXh0VmFsaWRUYXJnZXRJZGVudGlmaWVyID0g
bV9uZXh0QXZhaWxhYmxlVGFyZ2V0SWRlbnRpZmllcisrOwotICAgIH0gd2hpbGUgKCFuZXh0VmFs
aWRUYXJnZXRJZGVudGlmaWVyIHx8IG5leHRWYWxpZFRhcmdldElkZW50aWZpZXIgPT0gc3RkOjpu
dW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpIHx8IG1fdGFyZ2V0TWFwLmNvbnRhaW5zKG5l
eHRWYWxpZFRhcmdldElkZW50aWZpZXIpKTsKLSAgICByZXR1cm4gbmV4dFZhbGlkVGFyZ2V0SWRl
bnRpZmllcjsKLX0KLQotdm9pZCBSZW1vdGVJbnNwZWN0b3I6OnJlZ2lzdGVyVGFyZ2V0KFJlbW90
ZUNvbnRyb2xsYWJsZVRhcmdldCogdGFyZ2V0KQotewotICAgIEFTU0VSVF9BUkcodGFyZ2V0LCB0
YXJnZXQpOwotCi0gICAgc3RkOjpsb2NrX2d1YXJkPExvY2s+IGxvY2sobV9tdXRleCk7Ci0KLSAg
ICB1bnNpZ25lZCB0YXJnZXRJZGVudGlmaWVyID0gbmV4dEF2YWlsYWJsZVRhcmdldElkZW50aWZp
ZXIoKTsKLSAgICB0YXJnZXQtPnNldFRhcmdldElkZW50aWZpZXIodGFyZ2V0SWRlbnRpZmllcik7
Ci0KLSAgICB7Ci0gICAgICAgIGF1dG8gcmVzdWx0ID0gbV90YXJnZXRNYXAuc2V0KHRhcmdldElk
ZW50aWZpZXIsIHRhcmdldCk7Ci0gICAgICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQu
aXNOZXdFbnRyeSk7Ci0gICAgfQotCi0gICAgLy8gSWYgcmVtb3RlIGNvbnRyb2wgaXMgbm90IGFs
bG93ZWQsIGEgbnVsbCBsaXN0aW5nIGlzIHJldHVybmVkLgotICAgIGlmIChSZXRhaW5QdHI8TlNE
aWN0aW9uYXJ5PiB0YXJnZXRMaXN0aW5nID0gbGlzdGluZ0ZvclRhcmdldCgqdGFyZ2V0KSkgewot
ICAgICAgICBhdXRvIHJlc3VsdCA9IG1fdGFyZ2V0TGlzdGluZ01hcC5zZXQodGFyZ2V0SWRlbnRp
ZmllciwgdGFyZ2V0TGlzdGluZyk7Ci0gICAgICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1
bHQuaXNOZXdFbnRyeSk7Ci0gICAgfQotCi0gICAgcHVzaExpc3RpbmdzU29vbigpOwotfQotCi12
b2lkIFJlbW90ZUluc3BlY3Rvcjo6dW5yZWdpc3RlclRhcmdldChSZW1vdGVDb250cm9sbGFibGVU
YXJnZXQqIHRhcmdldCkKLXsKLSAgICBBU1NFUlRfQVJHKHRhcmdldCwgdGFyZ2V0KTsKLQotICAg
IHN0ZDo6bG9ja19ndWFyZDxMb2NrPiBsb2NrKG1fbXV0ZXgpOwotCi0gICAgdW5zaWduZWQgdGFy
Z2V0SWRlbnRpZmllciA9IHRhcmdldC0+dGFyZ2V0SWRlbnRpZmllcigpOwotICAgIGlmICghdGFy
Z2V0SWRlbnRpZmllcikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgYm9vbCB3YXNSZW1vdmVkID0g
bV90YXJnZXRNYXAucmVtb3ZlKHRhcmdldElkZW50aWZpZXIpOwotICAgIEFTU0VSVF9VTlVTRUQo
d2FzUmVtb3ZlZCwgd2FzUmVtb3ZlZCk7Ci0KLSAgICAvLyBUaGUgbGlzdGluZyBtYXkgbmV2ZXIg
aGF2ZSBiZWVuIGFkZGVkIGlmIHJlbW90ZSBjb250cm9sIGlzbid0IGFsbG93ZWQuCi0gICAgbV90
YXJnZXRMaXN0aW5nTWFwLnJlbW92ZSh0YXJnZXRJZGVudGlmaWVyKTsKLQotICAgIGlmIChhdXRv
IGNvbm5lY3Rpb25Ub1RhcmdldCA9IG1fdGFyZ2V0Q29ubmVjdGlvbk1hcC50YWtlKHRhcmdldElk
ZW50aWZpZXIpKQotICAgICAgICBjb25uZWN0aW9uVG9UYXJnZXQtPnRhcmdldENsb3NlZCgpOwot
Ci0gICAgcHVzaExpc3RpbmdzU29vbigpOwotfQotCi12b2lkIFJlbW90ZUluc3BlY3Rvcjo6dXBk
YXRlVGFyZ2V0KFJlbW90ZUNvbnRyb2xsYWJsZVRhcmdldCogdGFyZ2V0KQotewotICAgIEFTU0VS
VF9BUkcodGFyZ2V0LCB0YXJnZXQpOwotCi0gICAgc3RkOjpsb2NrX2d1YXJkPExvY2s+IGxvY2so
bV9tdXRleCk7Ci0KLSAgICB1bnNpZ25lZCB0YXJnZXRJZGVudGlmaWVyID0gdGFyZ2V0LT50YXJn
ZXRJZGVudGlmaWVyKCk7Ci0gICAgaWYgKCF0YXJnZXRJZGVudGlmaWVyKQotICAgICAgICByZXR1
cm47Ci0KLSAgICB7Ci0gICAgICAgIGF1dG8gcmVzdWx0ID0gbV90YXJnZXRNYXAuc2V0KHRhcmdl
dElkZW50aWZpZXIsIHRhcmdldCk7Ci0gICAgICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCAhcmVz
dWx0LmlzTmV3RW50cnkpOwotICAgIH0KLQotICAgIC8vIElmIHRoZSB0YXJnZXQgaGFzIGp1c3Qg
YWxsb3dlZCByZW1vdGUgY29udHJvbCwgdGhlbiB0aGUgbGlzdGluZyB3b24ndCBleGlzdCB5ZXQu
Ci0gICAgLy8gSWYgdGhlIHRhcmdldCBoYXMgbm8gaWRlbnRpZmllciByZW1vdmUgdGhlIG9sZCBs
aXN0aW5nLgotICAgIGlmIChSZXRhaW5QdHI8TlNEaWN0aW9uYXJ5PiB0YXJnZXRMaXN0aW5nID0g
bGlzdGluZ0ZvclRhcmdldCgqdGFyZ2V0KSkKLSAgICAgICAgbV90YXJnZXRMaXN0aW5nTWFwLnNl
dCh0YXJnZXRJZGVudGlmaWVyLCB0YXJnZXRMaXN0aW5nKTsKLSAgICBlbHNlCi0gICAgICAgIG1f
dGFyZ2V0TGlzdGluZ01hcC5yZW1vdmUodGFyZ2V0SWRlbnRpZmllcik7Ci0KLSAgICBwdXNoTGlz
dGluZ3NTb29uKCk7Ci19Ci0KIHZvaWQgUmVtb3RlSW5zcGVjdG9yOjp1cGRhdGVBdXRvbWF0aWNJ
bnNwZWN0aW9uQ2FuZGlkYXRlKFJlbW90ZUluc3BlY3Rpb25UYXJnZXQqIHRhcmdldCkKIHsKICAg
ICBBU1NFUlRfQVJHKHRhcmdldCwgdGFyZ2V0KTsKQEAgLTIzMCw3ICsxNDQsNyBAQCB2b2lkIFJl
bW90ZUluc3BlY3Rvcjo6dXBkYXRlQXV0b21hdGljSW5zcGVjdGlvbkNhbmRpZGF0ZShSZW1vdGVJ
bnNwZWN0aW9uVGFyZ2V0KgogI2Vsc2UKICAgICAgICAgaW50NjRfdCBkZWJ1Z2dlclRpbWVvdXRE
ZWxheSA9IDE7CiAjZW5kaWYKLSAgICAgICAgZGlzcGF0Y2hfYWZ0ZXIoZGlzcGF0Y2hfdGltZShE
SVNQQVRDSF9USU1FX05PVywgZGVidWdnZXJUaW1lb3V0RGVsYXkgKiBOU0VDX1BFUl9TRUMpLCBk
aXNwYXRjaF9nZXRfZ2xvYmFsX3F1ZXVlKERJU1BBVENIX1FVRVVFX1BSSU9SSVRZX0RFRkFVTFQs
IDApLCBeeworICAgICAgICBkaXNwYXRjaF9hZnRlcihkaXNwYXRjaF90aW1lKERJU1BBVENIX1RJ
TUVfTk9XLCBkZWJ1Z2dlclRpbWVvdXREZWxheSAqIE5TRUNfUEVSX1NFQyksIGRpc3BhdGNoX2dl
dF9nbG9iYWxfcXVldWUoRElTUEFUQ0hfUVVFVUVfUFJJT1JJVFlfREVGQVVMVCwgMCksIF4gewog
ICAgICAgICAgICAgc3RkOjpsb2NrX2d1YXJkPExvY2s+IGxvY2sobV9tdXRleCk7CiAgICAgICAg
ICAgICBpZiAobV9hdXRvbWF0aWNJbnNwZWN0aW9uQ2FuZGlkYXRlVGFyZ2V0SWRlbnRpZmllciA9
PSB0YXJnZXRJZGVudGlmaWVyKSB7CiAgICAgICAgICAgICAgICAgTE9HX0VSUk9SKCJTa2lwcGlu
ZyBBdXRvbWF0aWMgSW5zcGVjdGlvbiBDYW5kaWRhdGUgd2l0aCBwYWdlSWQoJXUpIGJlY2F1c2Ug
d2UgZmFpbGVkIHRvIHJlY2VpdmUgYSByZXNwb25zZSBpbiB0aW1lLiIsIG1fYXV0b21hdGljSW5z
cGVjdGlvbkNhbmRpZGF0ZVRhcmdldElkZW50aWZpZXIpOwpAQCAtMjQ5LDM4ICsxNjMsNiBAQCB2
b2lkIFJlbW90ZUluc3BlY3Rvcjo6dXBkYXRlQXV0b21hdGljSW5zcGVjdGlvbkNhbmRpZGF0ZShS
ZW1vdGVJbnNwZWN0aW9uVGFyZ2V0KgogICAgIH0KIH0KIAotdm9pZCBSZW1vdGVJbnNwZWN0b3I6
OnVwZGF0ZUNsaWVudENhcGFiaWxpdGllcygpCi17Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgp
KTsKLQotICAgIHN0ZDo6bG9ja19ndWFyZDxMb2NrPiBsb2NrKG1fbXV0ZXgpOwotCi0gICAgaWYg
KCFtX2NsaWVudCkKLSAgICAgICAgbV9jbGllbnRDYXBhYmlsaXRpZXMgPSBzdGQ6Om51bGxvcHQ7
Ci0gICAgZWxzZSB7Ci0gICAgICAgIFJlbW90ZUluc3BlY3Rvcjo6Q2xpZW50OjpDYXBhYmlsaXRp
ZXMgdXBkYXRlZENhcGFiaWxpdGllcyA9IHsKLSAgICAgICAgICAgIG1fY2xpZW50LT5yZW1vdGVB
dXRvbWF0aW9uQWxsb3dlZCgpIC8vIHJlbW90ZUF1dG9tYXRpb25BbGxvd2VkCi0gICAgICAgIH07
Ci0KLSAgICAgICAgbV9jbGllbnRDYXBhYmlsaXRpZXMgPSB1cGRhdGVkQ2FwYWJpbGl0aWVzOwot
ICAgIH0KLX0KLQotdm9pZCBSZW1vdGVJbnNwZWN0b3I6OnNldFJlbW90ZUluc3BlY3RvckNsaWVu
dChSZW1vdGVJbnNwZWN0b3I6OkNsaWVudCogY2xpZW50KQotewotICAgIEFTU0VSVF9BUkcoY2xp
ZW50LCBjbGllbnQpOwotICAgIEFTU0VSVCghbV9jbGllbnQpOwotCi0gICAgewotICAgICAgICBz
dGQ6OmxvY2tfZ3VhcmQ8TG9jaz4gbG9jayhtX211dGV4KTsKLSAgICAgICAgbV9jbGllbnQgPSBj
bGllbnQ7Ci0gICAgfQotCi0gICAgLy8gU2VuZCBhbiB1cGRhdGVkIGxpc3RpbmcgdGhhdCBpbmNs
dWRlcyB3aGV0aGVyIHRoZSBjbGllbnQgYWxsb3dzIHJlbW90ZSBhdXRvbWF0aW9uLgotICAgIHVw
ZGF0ZUNsaWVudENhcGFiaWxpdGllcygpOwotICAgIHB1c2hMaXN0aW5nc1Nvb24oKTsKLX0KLQog
dm9pZCBSZW1vdGVJbnNwZWN0b3I6OnNlbmRBdXRvbWF0aWNJbnNwZWN0aW9uQ2FuZGlkYXRlTWVz
c2FnZSgpCiB7CiAgICAgQVNTRVJUKG1fZW5hYmxlZCk7CkBAIC0zMTMsNDAgKzE5NSw2IEBAIHZv
aWQgUmVtb3RlSW5zcGVjdG9yOjpzZW5kTWVzc2FnZVRvUmVtb3RlKHVuc2lnbmVkIHRhcmdldElk
ZW50aWZpZXIsIGNvbnN0IFN0cmluCiAgICAgbV9yZWxheUNvbm5lY3Rpb24tPnNlbmRNZXNzYWdl
KFdJUlJhd0RhdGFNZXNzYWdlLCB1c2VySW5mbyk7CiB9CiAKLXZvaWQgUmVtb3RlSW5zcGVjdG9y
OjpzZXR1cEZhaWxlZCh1bnNpZ25lZCB0YXJnZXRJZGVudGlmaWVyKQotewotICAgIHN0ZDo6bG9j
a19ndWFyZDxMb2NrPiBsb2NrKG1fbXV0ZXgpOwotCi0gICAgbV90YXJnZXRDb25uZWN0aW9uTWFw
LnJlbW92ZSh0YXJnZXRJZGVudGlmaWVyKTsKLQotICAgIHVwZGF0ZUhhc0FjdGl2ZURlYnVnU2Vz
c2lvbigpOwotCi0gICAgaWYgKHRhcmdldElkZW50aWZpZXIgPT0gbV9hdXRvbWF0aWNJbnNwZWN0
aW9uQ2FuZGlkYXRlVGFyZ2V0SWRlbnRpZmllcikKLSAgICAgICAgbV9hdXRvbWF0aWNJbnNwZWN0
aW9uUGF1c2VkID0gZmFsc2U7Ci0KLSAgICBwdXNoTGlzdGluZ3NTb29uKCk7Ci19Ci0KLXZvaWQg
UmVtb3RlSW5zcGVjdG9yOjpzZXR1cENvbXBsZXRlZCh1bnNpZ25lZCB0YXJnZXRJZGVudGlmaWVy
KQotewotICAgIHN0ZDo6bG9ja19ndWFyZDxMb2NrPiBsb2NrKG1fbXV0ZXgpOwotCi0gICAgaWYg
KHRhcmdldElkZW50aWZpZXIgPT0gbV9hdXRvbWF0aWNJbnNwZWN0aW9uQ2FuZGlkYXRlVGFyZ2V0
SWRlbnRpZmllcikKLSAgICAgICAgbV9hdXRvbWF0aWNJbnNwZWN0aW9uUGF1c2VkID0gZmFsc2U7
Ci19Ci0KLWJvb2wgUmVtb3RlSW5zcGVjdG9yOjp3YWl0aW5nRm9yQXV0b21hdGljSW5zcGVjdGlv
bih1bnNpZ25lZCkKLXsKLSAgICAvLyBXZSBkb24ndCB0YWtlIHRoZSBsb2NrIHRvIGNoZWNrIHRo
aXMgYmVjYXVzZSB3ZSBhc3N1bWUgaXQgd2lsbCBiZSBjaGVja2VkIHJlcGVhdGVkbHkuCi0gICAg
cmV0dXJuIG1fYXV0b21hdGljSW5zcGVjdGlvblBhdXNlZDsKLX0KLQotdm9pZCBSZW1vdGVJbnNw
ZWN0b3I6OmNsaWVudENhcGFiaWxpdGllc0RpZENoYW5nZSgpCi17Ci0gICAgdXBkYXRlQ2xpZW50
Q2FwYWJpbGl0aWVzKCk7Ci0gICAgcHVzaExpc3RpbmdzU29vbigpOwotfQotCiB2b2lkIFJlbW90
ZUluc3BlY3Rvcjo6c3RhcnQoKQogewogICAgIHN0ZDo6bG9ja19ndWFyZDxMb2NrPiBsb2NrKG1f
bXV0ZXgpOwpAQCAtMzU4LDcgKzIwNiw3IEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9yOjpzdGFydCgp
CiAKICAgICAvLyBMb2FkIHRoZSBpbml0aWFsIGF1dG9tYXRpYyBpbnNwZWN0aW9uIHN0YXRlIHdo
ZW4gZmlyc3Qgc3RhcnRlZCwgc28gd2Uga25vdyBpdCBiZWZvcmUgd2UgaGF2ZSBldmVuIGNvbm5l
Y3RlZCB0byB3ZWJpbnNwZWN0b3JkLgogICAgIHN0YXRpYyBkaXNwYXRjaF9vbmNlX3Qgb25jZTsK
LSAgICBkaXNwYXRjaF9vbmNlKCZvbmNlLCBeeworICAgIGRpc3BhdGNoX29uY2UoJm9uY2UsIF4g
ewogICAgICAgICBtX2F1dG9tYXRpY0luc3BlY3Rpb25FbmFibGVkID0gZ2xvYmFsQXV0b21hdGlj
SW5zcGVjdGlvblN0YXRlKCk7CiAgICAgfSk7CiAKQEAgLTM2OSwxMyArMjE3LDYgQEAgdm9pZCBS
ZW1vdGVJbnNwZWN0b3I6OnN0YXJ0KCkKICAgICBub3RpZnlfcG9zdChXSVJTZXJ2aWNlQXZhaWxh
YmlsaXR5Q2hlY2tOb3RpZmljYXRpb24pOwogfQogCi12b2lkIFJlbW90ZUluc3BlY3Rvcjo6c3Rv
cCgpCi17Ci0gICAgc3RkOjpsb2NrX2d1YXJkPExvY2s+IGxvY2sobV9tdXRleCk7Ci0KLSAgICBz
dG9wSW50ZXJuYWwoU3RvcFNvdXJjZTo6QVBJKTsKLX0KLQogdm9pZCBSZW1vdGVJbnNwZWN0b3I6
OnN0b3BJbnRlcm5hbChTdG9wU291cmNlIHNvdXJjZSkKIHsKICAgICBpZiAoIW1fZW5hYmxlZCkK
QEAgLTUxMiwxNyArMzUzLDYgQEAgdm9pZCBSZW1vdGVJbnNwZWN0b3I6OnhwY0Nvbm5lY3Rpb25V
bmhhbmRsZWRNZXNzYWdlKFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24KIAogI3ByYWdtYSBt
YXJrIC0gTGlzdGluZ3MKIAotUmV0YWluUHRyPE5TRGljdGlvbmFyeT4gUmVtb3RlSW5zcGVjdG9y
OjpsaXN0aW5nRm9yVGFyZ2V0KGNvbnN0IFJlbW90ZUNvbnRyb2xsYWJsZVRhcmdldCYgdGFyZ2V0
KSBjb25zdAotewotICAgIGlmIChpczxSZW1vdGVJbnNwZWN0aW9uVGFyZ2V0Pih0YXJnZXQpKQot
ICAgICAgICByZXR1cm4gbGlzdGluZ0Zvckluc3BlY3Rpb25UYXJnZXQoZG93bmNhc3Q8UmVtb3Rl
SW5zcGVjdGlvblRhcmdldD4odGFyZ2V0KSk7Ci0gICAgaWYgKGlzPFJlbW90ZUF1dG9tYXRpb25U
YXJnZXQ+KHRhcmdldCkpCi0gICAgICAgIHJldHVybiBsaXN0aW5nRm9yQXV0b21hdGlvblRhcmdl
dChkb3duY2FzdDxSZW1vdGVBdXRvbWF0aW9uVGFyZ2V0Pih0YXJnZXQpKTsKLQotICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBuaWw7Ci19Ci0KIFJldGFpblB0cjxOU0RpY3Rp
b25hcnk+IFJlbW90ZUluc3BlY3Rvcjo6bGlzdGluZ0Zvckluc3BlY3Rpb25UYXJnZXQoY29uc3Qg
UmVtb3RlSW5zcGVjdGlvblRhcmdldCYgdGFyZ2V0KSBjb25zdAogewogICAgIC8vIE11c3QgY29s
bGVjdCB0YXJnZXQgaW5mb3JtYXRpb24gb24gdGhlIFdlYlRocmVhZCwgTWFpbiwgb3IgV29ya2Vy
IHRocmVhZCBzaW5jZSBSZW1vdGVUYXJnZXRzIGFyZQpAQCAtNjA4LDI4ICs0MzgsMTMgQEAgdm9p
ZCBSZW1vdGVJbnNwZWN0b3I6OnB1c2hMaXN0aW5nc1Nvb24oKQogICAgICAgICByZXR1cm47CiAK
ICAgICBtX3B1c2hTY2hlZHVsZWQgPSB0cnVlOwotICAgIGRpc3BhdGNoX2FmdGVyKGRpc3BhdGNo
X3RpbWUoRElTUEFUQ0hfVElNRV9OT1csIDAuMiAqIE5TRUNfUEVSX1NFQyksIGRpc3BhdGNoX2dl
dF9nbG9iYWxfcXVldWUoRElTUEFUQ0hfUVVFVUVfUFJJT1JJVFlfREVGQVVMVCwgMCksIF57Cisg
ICAgZGlzcGF0Y2hfYWZ0ZXIoZGlzcGF0Y2hfdGltZShESVNQQVRDSF9USU1FX05PVywgMC4yICog
TlNFQ19QRVJfU0VDKSwgZGlzcGF0Y2hfZ2V0X2dsb2JhbF9xdWV1ZShESVNQQVRDSF9RVUVVRV9Q
UklPUklUWV9ERUZBVUxULCAwKSwgXiB7CiAgICAgICAgIHN0ZDo6bG9ja19ndWFyZDxMb2NrPiBs
b2NrKG1fbXV0ZXgpOwogICAgICAgICBpZiAobV9wdXNoU2NoZWR1bGVkKQogICAgICAgICAgICAg
cHVzaExpc3RpbmdzTm93KCk7CiAgICAgfSk7CiB9CiAKLSNwcmFnbWEgbWFyayAtIEFjdGl2ZSBE
ZWJ1Z2dlciBTZXNzaW9ucwotCi12b2lkIFJlbW90ZUluc3BlY3Rvcjo6dXBkYXRlSGFzQWN0aXZl
RGVidWdTZXNzaW9uKCkKLXsKLSAgICBib29sIGhhc0FjdGl2ZURlYnVnZ2VyU2Vzc2lvbiA9ICFt
X3RhcmdldENvbm5lY3Rpb25NYXAuaXNFbXB0eSgpOwotICAgIGlmIChoYXNBY3RpdmVEZWJ1Z2dl
clNlc3Npb24gPT0gbV9oYXNBY3RpdmVEZWJ1Z1Nlc3Npb24pCi0gICAgICAgIHJldHVybjsKLQot
ICAgIG1faGFzQWN0aXZlRGVidWdTZXNzaW9uID0gaGFzQWN0aXZlRGVidWdnZXJTZXNzaW9uOwot
Ci0gICAgLy8gRklYTUU6IEV4cG9zZSBzb21lIHdheSB0byBhY2Nlc3MgdGhpcyBzdGF0ZSBpbiBh
biBlbWJlZGRlci4KLSAgICAvLyBMZWdhY3kgaU9TIFdlYktpdCAxIGhhZCBhIG5vdGlmaWNhdGlv
bi4gVGhpcyB3aWxsIG5lZWQgdG8gYmUgc21hcnRlciB3aXRoIFdlYktpdDIuCi19Ci0KLQogI3By
YWdtYSBtYXJrIC0gUmVjZWl2ZWQgWFBDIE1lc3NhZ2VzCiAKIHZvaWQgUmVtb3RlSW5zcGVjdG9y
OjpyZWNlaXZlZFNldHVwTWVzc2FnZShOU0RpY3Rpb25hcnkgKnVzZXJJbmZvKQpAQCAtNzMzLDcg
KzU0OCw3IEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9yOjpyZWNlaXZlZEluZGljYXRlTWVzc2FnZShO
U0RpY3Rpb25hcnkgKnVzZXJJbmZvKQogCiAgICAgQk9PTCBpbmRpY2F0ZUVuYWJsZWQgPSBbW3Vz
ZXJJbmZvIG9iamVjdEZvcktleTpXSVJJbmRpY2F0ZUVuYWJsZWRLZXldIGJvb2xWYWx1ZV07CiAK
LSAgICBjYWxsT25XZWJUaHJlYWRPckRpc3BhdGNoQXN5bmNPbk1haW5UaHJlYWQoXnsKKyAgICBj
YWxsT25XZWJUaHJlYWRPckRpc3BhdGNoQXN5bmNPbk1haW5UaHJlYWQoXiB7CiAgICAgICAgIFJl
bW90ZUNvbnRyb2xsYWJsZVRhcmdldCogdGFyZ2V0ID0gbnVsbHB0cjsKICAgICAgICAgewogICAg
ICAgICAgICAgc3RkOjpsb2NrX2d1YXJkPExvY2s+IGxvY2sobV9tdXRleCk7CkBAIC03NTksNyAr
NTc0LDcgQEAgdm9pZCBSZW1vdGVJbnNwZWN0b3I6OnJlY2VpdmVkUHJveHlBcHBsaWNhdGlvblNl
dHVwTWVzc2FnZShOU0RpY3Rpb25hcnkgKikKICAgICAgICAgLy8gV2UgYXJlIGEgcHJveHkgYXBw
bGljYXRpb24gd2l0aG91dCBwYXJlbnQgcHJvY2VzcyBpbmZvcm1hdGlvbi4KICAgICAgICAgLy8g
V2FpdCBhIGJpdCBmb3IgdGhlIGluZm9ybWF0aW9uLCBidXQgZ2l2ZSB1cCBhZnRlciBhIHNlY29u
ZC4KICAgICAgICAgbV9zaG91bGRTZW5kUGFyZW50UHJvY2Vzc0luZm9ybWF0aW9uID0gdHJ1ZTsK
LSAgICAgICAgZGlzcGF0Y2hfYWZ0ZXIoZGlzcGF0Y2hfdGltZShESVNQQVRDSF9USU1FX05PVywg
MSAqIE5TRUNfUEVSX1NFQyksIGRpc3BhdGNoX2dldF9nbG9iYWxfcXVldWUoRElTUEFUQ0hfUVVF
VUVfUFJJT1JJVFlfREVGQVVMVCwgMCksIF57CisgICAgICAgIGRpc3BhdGNoX2FmdGVyKGRpc3Bh
dGNoX3RpbWUoRElTUEFUQ0hfVElNRV9OT1csIDEgKiBOU0VDX1BFUl9TRUMpLCBkaXNwYXRjaF9n
ZXRfZ2xvYmFsX3F1ZXVlKERJU1BBVENIX1FVRVVFX1BSSU9SSVRZX0RFRkFVTFQsIDApLCBeIHsK
ICAgICAgICAgICAgIHN0ZDo6bG9ja19ndWFyZDxMb2NrPiBsb2NrKG1fbXV0ZXgpOwogICAgICAg
ICAgICAgaWYgKG1fc2hvdWxkU2VuZFBhcmVudFByb2Nlc3NJbmZvcm1hdGlvbikKICAgICAgICAg
ICAgICAgICBzdG9wSW50ZXJuYWwoU3RvcFNvdXJjZTo6WFBDTWVzc2FnZSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3JY
UENDb25uZWN0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9j
b2NvYS9SZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uLmgKc2ltaWxhcml0eSBpbmRleCAxMDAl
CnJlbmFtZSBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90
ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24uaApyZW5hbWUgdG8gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9yZW1vdGUvY29jb2EvUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbi5oCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJ
bnNwZWN0b3JYUENDb25uZWN0aW9uLm1tIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9yZW1vdGUvY29jb2EvUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbi5tbQpzaW1pbGFyaXR5
IGluZGV4IDk5JQpyZW5hbWUgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Jl
bW90ZS9SZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uLm1tCnJlbmFtZSB0byBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9jb2NvYS9SZW1vdGVJbnNwZWN0b3JYUENDb25u
ZWN0aW9uLm1tCmluZGV4IDc2NjA5OTRjYzI5Li5hOTAyZDZkZmM1MCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yWFBDQ29u
bmVjdGlvbi5tbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9j
b2NvYS9SZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uLm1tCkBAIC0xMDgsNyArMTA4LDcgQEAg
dm9pZCBSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uOjpjbG9zZUZyb21NZXNzYWdlKCkKICAg
ICBtX2Nsb3NlZCA9IHRydWU7CiAgICAgbV9jbGllbnQgPSBudWxscHRyOwogCi0gICAgZGlzcGF0
Y2hfYXN5bmMobV9xdWV1ZSwgXnsKKyAgICBkaXNwYXRjaF9hc3luYyhtX3F1ZXVlLCBeIHsKICAg
ICAgICAgc3RkOjpsb2NrX2d1YXJkPExvY2s+IGxvY2sobV9tdXRleCk7CiAgICAgICAgIC8vIFRo
aXMgd2lsbCB0cmlnZ2VyIG9uZSBsYXN0IFhQQ19FUlJPUl9DT05ORUNUSU9OX0lOVkFMSUQgZXZl
bnQgb24gdGhlIHF1ZXVlIGFuZCBkZXJlZiB1cy4KICAgICAgICAgY2xvc2VPblF1ZXVlKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFu
Z2VMb2cKaW5kZXggMGFlY2E4ZGI5MTMuLjgzOTljMTAwMGUzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTMgQEAKKzIwMTctMDEtMTAgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2Fs
aWEuY29tPgorCisgICAgICAgIFdlYkluc3BlY3RvcjogcmVmYWN0b3IgUmVtb3RlSW5zcGVjdG9y
IHRvIG1vdmUgY29jb2Egc3BlY2lmaWMgY29kZSB0byB0aGVpciBvd24gZmlsZXMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NjY4MQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQ
cm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6aW5pdGlhbGl6ZVdlYlBy
b2Nlc3MpOiBBZGQgUExBVEZPUk0oQ09DT0EpIHRvIHRoZSBpZmRlZi4KKwogMjAxNy0wMS0wOSAg
VG9tYXMgUG9wZWxhICA8dHBvcGVsYUByZWRoYXQuY29tPgogCiAgICAgICAgIFtHVEtdIFJlcGxh
Y2UgV2ViS2l0V2ViU2V0dGluZ3Mgd2l0aCBXZWJLaXRTZXR0aW5ncyBpbiBkb2N1bWVudGF0aW9u
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAppbmRleCBjMTI4MDE4MzAz
NS4uNGRhMzQ3NTJhMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNw
cApAQCAtMzc3LDcgKzM3Nyw3IEBAIHZvaWQgV2ViUHJvY2Vzczo6aW5pdGlhbGl6ZVdlYlByb2Nl
c3MoV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCiAgICAgc2V0RW5h
YmxlZFNlcnZpY2VzKHBhcmFtZXRlcnMuaGFzSW1hZ2VTZXJ2aWNlcywgcGFyYW1ldGVycy5oYXNT
ZWxlY3Rpb25TZXJ2aWNlcywgcGFyYW1ldGVycy5oYXNSaWNoQ29udGVudFNlcnZpY2VzKTsKICNl
bmRpZgogCi0jaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCisjaWYgRU5BQkxFKFJFTU9URV9J
TlNQRUNUT1IpICYmIFBMQVRGT1JNKENPQ09BKQogICAgIGF1ZGl0X3Rva2VuX3QgYXVkaXRUb2tl
bjsKICAgICBpZiAocGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+Z2V0QXVkaXRUb2tlbihhdWRp
dFRva2VuKSkgewogICAgICAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBhdWRpdERhdGEgPSBhZG9w
dENGKENGRGF0YUNyZWF0ZShudWxscHRyLCAoY29uc3QgVUludDgqKSZhdWRpdFRva2VuLCBzaXpl
b2YoYXVkaXRUb2tlbikpKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>301717</attachid>
            <date>2017-02-15 23:41:44 -0800</date>
            <delta_ts>2017-02-15 23:42:13 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-166681-20170215233908.patch</filename>
            <type>text/plain</type>
            <size>86872</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjEyNDIzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBA
CisyMDE3LTAyLTE1ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+
CisKKyAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjIxMjM5NC4KKworICAgICAgICBG
aXhlZCBpT1MgV2ViSW5zcGVjdG9yCisKKyAgICAgICAgUmV2ZXJ0ZWQgY2hhbmdlc2V0OgorCisg
ICAgICAgICJVbnJldmlld2VkLCByb2xsaW5nIG91dCByMjEyMTY5LiIKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NjY4MQorICAgICAgICBodHRwOi8v
dHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8yMTIzOTQKKwogMjAxNy0wMi0xNSAgR3VpbGxhdW1l
IEVtb250ICA8Z3VpamVtb250QGlnYWxpYS5jb20+CiAKICAgICAgICAgTUlQUzogYWRkIG1pc3Np
bmcgaW1wbGVtZW50YXRpb25zIG9mIGxvYWQ4U2lnbmVkRXh0ZW5kVG8zMigpCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvUGxhdGZvcm1NYWMuY21ha2UKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCShyZXZpc2lvbiAyMTI0MjMpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvUGxhdGZvcm1NYWMuY21ha2UJKHdvcmtpbmcgY29weSkKQEAg
LTEwLDEwICsxMCwxMyBAQCBsaXN0KEFQUEVORCBKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTCiAgICAg
QVBJL09iakNDYWxsYmFja0Z1bmN0aW9uLm1tCiAKICAgICBpbnNwZWN0b3IvcmVtb3RlL1JlbW90
ZUF1dG9tYXRpb25UYXJnZXQuY3BwCi0gICAgaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVDb25uZWN0
aW9uVG9UYXJnZXQubW0KICAgICBpbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUNvbnRyb2xsYWJsZVRh
cmdldC5jcHAKICAgICBpbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3Rpb25UYXJnZXQuY3Bw
Ci0gICAgaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3IubW0KKyAgICBpbnNwZWN0b3Iv
cmVtb3RlL1JlbW90ZUluc3BlY3Rvci5jcHAKKworICAgIGluc3BlY3Rvci9yZW1vdGUvY29jb2Ev
UmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0Q29jb2EubW0KKyAgICBpbnNwZWN0b3IvcmVtb3RlL2Nv
Y29hL1JlbW90ZUluc3BlY3RvckNvY29hLm1tCisgICAgaW5zcGVjdG9yL3JlbW90ZS9jb2NvYS9S
ZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uLm1tCiApCiBhZGRfZGVmaW5pdGlvbnMoLURTVEFU
SUNBTExZX0xJTktFRF9XSVRIX1dURiAtRF9fU1REQ19XQU5UX0xJQl9FWFQxX18pCiAKQEAgLTI1
LDYgKzI4LDcgQEAgbGlzdChBUFBFTkQgSmF2YVNjcmlwdENvcmVfTElCUkFSSUVTCiBsaXN0KEFQ
UEVORCBKYXZhU2NyaXB0Q29yZV9JTkNMVURFX0RJUkVDVE9SSUVTCiAgICAgJHtKQVZBU0NSSVBU
Q09SRV9ESVJ9L2Rpc2Fzc2VtYmxlci91ZGlzODYKICAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0v
aWN1CisgICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2luc3BlY3Rvci9yZW1vdGUvY29jb2EKICkK
IAogc2V0KENNQUtFX1NIQVJFRF9MSU5LRVJfRkxBR1MgJHtDTUFLRV9TSEFSRURfTElOS0VSX0ZM
QUdTfSAiLWNvbXBhdGliaWxpdHlfdmVyc2lvbiAxIC1jdXJyZW50X3ZlcnNpb24gJHtXRUJLSVRf
TUFDX1ZFUlNJT059IikKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNSZW1vdGVJ
bnNwZWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNS
ZW1vdGVJbnNwZWN0b3IuY3BwCShyZXZpc2lvbiAyMTI0MjMpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL0pTUmVtb3RlSW5zcGVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTAsOSAr
NTAsOSBAQCB2b2lkIEpTUmVtb3RlSW5zcGVjdG9yU3RhcnQodm9pZCkKICNlbmRpZgogfQogCi12
b2lkIEpTUmVtb3RlSW5zcGVjdG9yU2V0UGFyZW50UHJvY2Vzc0luZm9ybWF0aW9uKHBpZF90IHBp
ZCwgY29uc3QgVUludDgqIGF1ZGl0RGF0YSwgc2l6ZV90IGF1ZGl0TGVuZ3RoKQordm9pZCBKU1Jl
bW90ZUluc3BlY3RvclNldFBhcmVudFByb2Nlc3NJbmZvcm1hdGlvbihwaWRfdCBwaWQsIGNvbnN0
IHVpbnQ4X3QqIGF1ZGl0RGF0YSwgc2l6ZV90IGF1ZGl0TGVuZ3RoKQogewotI2lmIEVOQUJMRShS
RU1PVEVfSU5TUEVDVE9SKQorI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKSAmJiBQTEFURk9S
TShDT0NPQSkKICAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBhdWRpdERhdGFSZWYgPSBhZG9wdENG
KENGRGF0YUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBhdWRpdERhdGEsIGF1ZGl0TGVuZ3Ro
KSk7CiAgICAgUmVtb3RlSW5zcGVjdG9yOjpzaW5nbGV0b24oKS5zZXRQYXJlbnRQcm9jZXNzSW5m
b3JtYXRpb24ocGlkLCBhdWRpdERhdGFSZWYpOwogI2Vsc2UKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCShyZXZpc2lvbiAyMTI0MjMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpA
QCAtMTYwMyw2ICsxNjAzLDExIEBACiAJCTk5MjhGRjNCMThBQzRBRUMwMEI4Q0YxMiAvKiBKU1Jl
cGxheUlucHV0cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA5OTI4RkYzOTE4QUM0QUVDMDBCOENGMTIgLyogSlNSZXBsYXlJbnB1dHMuY3BwICovOyB9
OwogCQk5OTI4RkYzQzE4QUM0QUVDMDBCOENGMTIgLyogSlNSZXBsYXlJbnB1dHMuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5MjhGRjNBMThBQzRBRUMw
MEI4Q0YxMiAvKiBKU1JlcGxheUlucHV0cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTk5MkFCQ0Y5MUJFQTlCRDIwMDY0MDNBMCAvKiBSZW1vdGVB
dXRvbWF0aW9uVGFyZ2V0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDk5MkFCQ0Y1MUJFQTk0Q0EwMDY0MDNBMCAvKiBSZW1vdGVBdXRvbWF0aW9uVGFy
Z2V0LmNwcCAqLzsgfTsKKwkJOTkyRjU2QjQxRTRFODRBNDAwMzU5NTNCIC8qIFJlbW90ZUNvbm5l
Y3Rpb25Ub1RhcmdldENvY29hLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gOTkyRjU2QjMxRTRFODQ3RDAwMzU5NTNCIC8qIFJlbW90ZUNvbm5lY3Rpb25U
b1RhcmdldENvY29hLm1tICovOyB9OworCQk5OTJGNTZCNTFFNEU4NEE4MDAzNTk1M0IgLyogUmVt
b3RlSW5zcGVjdG9yQ29jb2EubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA5OTJGNTZCMDFFNEU4NDc5MDAzNTk1M0IgLyogUmVtb3RlSW5zcGVjdG9yQ29j
b2EubW0gKi87IH07CisJCTk5MkY1NkI2MUU0RTg0QUIwMDM1OTUzQiAvKiBSZW1vdGVJbnNwZWN0
b3JYUENDb25uZWN0aW9uLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gOTkyRjU2QjIxRTRFODQ3OTAwMzU5NTNCIC8qIFJlbW90ZUluc3BlY3RvclhQQ0Nv
bm5lY3Rpb24ubW0gKi87IH07CisJCTk5MkY1NkI3MUU0RTg0QjIwMDM1OTUzQiAvKiBSZW1vdGVJ
bnNwZWN0b3JYUENDb25uZWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA5OTJGNTZCMTFFNEU4NDc5MDAzNTk1M0IgLyogUmVtb3RlSW5zcGVjdG9y
WFBDQ29ubmVjdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CisJCTk5NTU2Njg2MUU0RThCMEYwMEFBRTEzQyAvKiBSZW1vdGVJbnNwZWN0b3IuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTk1NTY2ODUx
RTRFOEIwNzAwQUFFMTNDIC8qIFJlbW90ZUluc3BlY3Rvci5jcHAgKi87IH07CiAJCTk5NTlFOTJC
MUJEMTdGQTQwMDFBQTQxMyAvKiBjc3NtaW4ucHkgaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA5OTU5RTkyNzFCRDE3RkEwMDAxQUE0MTMgLyogY3NzbWluLnB5
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTk5NTlF
OTJEMUJEMTdGQTQwMDFBQTQxMyAvKiBqc21pbi5weSBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5NTlFOTI5MUJEMTdGQTAwMDFBQTQxMyAvKiBqc21pbi5w
eSAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5OTU5
RTkyRTFCRDE3RkE0MDAxQUE0MTMgLyogeHhkLnBsIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gOTk1OUU5MkExQkQxN0ZBMDAwMUFBNDEzIC8qIHh4ZC5wbCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTc3OSwx
MiArMTc4NCw4IEBACiAJCUE1QUI0OUREMUJFQzgwODYwMDcwMjBGQiAvKiBQZXJHbG9iYWxPYmpl
Y3RXcmFwcGVyV29ybGQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEE1QUI0OURCMUJFQzgwNzkwMDcwMjBGQiAvKiBQZXJHbG9iYWxPYmplY3RXcmFwcGVy
V29ybGQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQlBNUI2QTc0RDE4QzZEQkE2MDBGMTFFOTEgLyogQ29uc29sZUNsaWVudC5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNUI2QTc0QzE4QzZEQkE2MDBG
MTFFOTEgLyogQ29uc29sZUNsaWVudC5jcHAgKi87IH07CiAJCUE1QkExNUU4MTgyMzQwQjMwMEE4
MkU2OSAvKiBSZW1vdGVJbnNwZWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEE1QkExNUUxMTgyMzQwQjMwMEE4MkU2OSAvKiBSZW1vdGVJbnNwZWN0
b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQlB
NUJBMTVFOTE4MjM0MEIzMDBBODJFNjkgLyogUmVtb3RlSW5zcGVjdG9yLm1tIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTVCQTE1RTIxODIzNDBCMzAwQTgy
RTY5IC8qIFJlbW90ZUluc3BlY3Rvci5tbSAqLzsgfTsKIAkJQTVCQTE1RUExODIzNDBCNDAwQTgy
RTY5IC8qIFJlbW90ZUluc3BlY3RvckNvbnN0YW50cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTVCQTE1RTMxODIzNDBCMzAwQTgyRTY5IC8qIFJlbW90
ZUluc3BlY3RvckNvbnN0YW50cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCUE1QkExNUVCMTgyMzQwQjQwMEE4MkU2OSAvKiBSZW1vdGVDb25uZWN0
aW9uVG9UYXJnZXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEE1QkExNUU0MTgyMzQwQjMwMEE4MkU2OSAvKiBSZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQu
aCAqLzsgfTsKLQkJQTVCQTE1RUMxODIzNDBCNDAwQTgyRTY5IC8qIFJlbW90ZUNvbm5lY3Rpb25U
b1RhcmdldC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEE1QkExNUU1MTgyMzQwQjMwMEE4MkU2OSAvKiBSZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQubW0g
Ki87IH07Ci0JCUE1QkExNUVEMTgyMzQwQjQwMEE4MkU2OSAvKiBSZW1vdGVJbnNwZWN0b3JYUEND
b25uZWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBBNUJBMTVFNjE4MjM0MEIzMDBBODJFNjkgLyogUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlv
bi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCUE1
QkExNUVFMTgyMzQwQjQwMEE4MkU2OSAvKiBSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uLm1t
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTVCQTE1RTcx
ODIzNDBCMzAwQTgyRTY5IC8qIFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24ubW0gKi87IH07
CiAJCUE1QkExNUYwMTgyMzQ1QUYwMEE4MkU2OSAvKiBSZW1vdGVJbnNwZWN0aW9uVGFyZ2V0Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNUJBMTVFRjE4
MjM0NUFGMDBBODJFNjkgLyogUmVtb3RlSW5zcGVjdGlvblRhcmdldC5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUE1QzNBMUE1MThDMDQ5MDIwMEM5
NTkzQSAvKiBKU0dsb2JhbE9iamVjdENvbnNvbGVDbGllbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTVDM0ExQTMxOEMwNDkwMjAwQzk1OTNBIC8q
IEpTR2xvYmFsT2JqZWN0Q29uc29sZUNsaWVudC5jcHAgKi87IH07CiAJCUE1QzNBMUE2MThDMDQ5
MDIwMEM5NTkzQSAvKiBKU0dsb2JhbE9iamVjdENvbnNvbGVDbGllbnQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1QzNBMUE0MThDMDQ5MDIwMEM5NTkz
QSAvKiBKU0dsb2JhbE9iamVjdENvbnNvbGVDbGllbnQuaCAqLzsgfTsKQEAgLTQxMjAsNiArNDEy
MSwxMSBAQAogCQk5OTI4RkYzRDE4QUM0QjFDMDBCOENGMTIgLyogSlNJbnB1dHMuanNvbiAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQuanNvbjsgcGF0aCA9IEpTSW5wdXRzLmpzb247IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTk5MkFCQ0Y1MUJFQTk0Q0EwMDY0MDNBMCAvKiBSZW1vdGVBdXRvbWF0aW9u
VGFyZ2V0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZUF1
dG9tYXRpb25UYXJnZXQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5OTJBQkNG
NjFCRUE5NENBMDA2NDAzQTAgLyogUmVtb3RlQXV0b21hdGlvblRhcmdldC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVBdXRvbWF0aW9uVGFyZ2V0Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTk5MkY1NkIwMUU0RTg0NzkwMDM1OTUzQiAvKiBSZW1vdGVJ
bnNwZWN0b3JDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IFJlbW90ZUluc3BlY3RvckNvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5
OTJGNTZCMTFFNEU4NDc5MDAzNTk1M0IgLyogUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbi5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVJbnNwZWN0b3JYUENDb25u
ZWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk5MkY1NkIyMUU0RTg0Nzkw
MDM1OTUzQiAvKiBSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbi5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTkyRjU2QjMxRTRFODQ3RDAwMzU5NTNC
IC8qIFJlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldENvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAub2JqY3BwOyBwYXRoID0gUmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0Q29jb2EubW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk5NTU2Njg1MUU0RThCMDcwMEFBRTEzQyAvKiBS
ZW1vdGVJbnNwZWN0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
UmVtb3RlSW5zcGVjdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTk1OUU5
MjcxQkQxN0ZBMDAwMUFBNDEzIC8qIGNzc21pbi5weSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuc2NyaXB0LnB5
dGhvbjsgcGF0aCA9IGNzc21pbi5weTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTk1
OUU5MjkxQkQxN0ZBMDAwMUFBNDEzIC8qIGpzbWluLnB5ICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQu
cHl0aG9uOyBwYXRoID0ganNtaW4ucHk7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk5
NTlFOTJBMUJEMTdGQTAwMDFBQTQxMyAvKiB4eGQucGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnNjcmlwdC5w
ZXJsOyBwYXRoID0geHhkLnBsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDI5Nywx
MiArNDMwMyw4IEBACiAJCUE1QUI0OURCMUJFQzgwNzkwMDcwMjBGQiAvKiBQZXJHbG9iYWxPYmpl
Y3RXcmFwcGVyV29ybGQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGVyR2xv
YmFsT2JqZWN0V3JhcHBlcldvcmxkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1
QjZBNzRDMThDNkRCQTYwMEYxMUU5MSAvKiBDb25zb2xlQ2xpZW50LmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvbnNvbGVDbGllbnQuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlBNUJBMTVFMTE4MjM0MEIzMDBBODJFNjkgLyogUmVtb3RlSW5zcGVj
dG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUluc3BlY3Rvci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlBNUJBMTVFMjE4MjM0MEIzMDBBODJFNjkg
LyogUmVtb3RlSW5zcGVjdG9yLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBw
YXRoID0gUmVtb3RlSW5zcGVjdG9yLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlB
NUJBMTVFMzE4MjM0MEIzMDBBODJFNjkgLyogUmVtb3RlSW5zcGVjdG9yQ29uc3RhbnRzLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUluc3BlY3RvckNvbnN0YW50cy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNUJBMTVFNDE4MjM0MEIzMDBBODJFNjkg
LyogUmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFJlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQlBNUJBMTVFNTE4MjM0MEIzMDBBODJFNjkgLyogUmVtb3RlQ29ubmVjdGlvblRvVGFy
Z2V0Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUmVtb3RlQ29u
bmVjdGlvblRvVGFyZ2V0Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlBNUJBMTVF
NjE4MjM0MEIzMDBBODJFNjkgLyogUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbi5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9u
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUE1QkExNUU3MTgyMzQwQjMwMEE4MkU2
OSAvKiBSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uLm1tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAub2JqY3BwOyBwYXRoID0gUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbi5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTVCQTE1RUYxODIzNDVBRjAwQTgyRTY5IC8qIFJl
bW90ZUluc3BlY3Rpb25UYXJnZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
UmVtb3RlSW5zcGVjdGlvblRhcmdldC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlB
NUMzQTFBMzE4QzA0OTAyMDBDOTU5M0EgLyogSlNHbG9iYWxPYmplY3RDb25zb2xlQ2xpZW50LmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTR2xvYmFsT2JqZWN0Q29u
c29sZUNsaWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1QzNBMUE0MThD
MDQ5MDIwMEM5NTkzQSAvKiBKU0dsb2JhbE9iamVjdENvbnNvbGVDbGllbnQuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNHbG9iYWxPYmplY3RDb25zb2xlQ2xpZW50Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC01MDQyLDYgKzUwNDQsNyBAQAogCQkJaXNhID0g
UEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKIAkJCQkwRjkzMjc1OTFDMjBCQ0JBMDBDRjY1NjQg
LyogZHluYmVuY2ggKi8sCisJCQkJOTMyRjVCRTEwODIyQTFDNzAwNzM2OTc1IC8qIGpzYyAqLywK
IAkJCQkwRkY5MjJDRjE0RjQ2QjEzMDA0MUEyNEUgLyogSlNDTExJbnRPZmZzZXRzRXh0cmFjdG9y
ICovLAogCQkJCTE0MTIxMTIwMEE0ODc5M0MwMDQ4MDI1NSAvKiBtaW5pZG9tICovLAogCQkJCTBG
NjE4MzQzMUM0NUY2MkEwMDcyNDUwQiAvKiB0ZXN0YWlyICovLApAQCAtNTA0OSw3ICs1MDUyLDYg
QEAKIAkJCQkwRkVDODVBRDFCREI1Q0YxMDA4MEZGNzQgLyogdGVzdGIzICovLAogCQkJCTY1MTEy
MzA1MTQwNDZBNEMwMDJCMTAxRCAvKiB0ZXN0UmVnRXhwICovLAogCQkJCTkzMkY1QkQ5MDgyMkEx
QzcwMDczNjk3NSAvKiBKYXZhU2NyaXB0Q29yZS5mcmFtZXdvcmsgKi8sCi0JCQkJOTMyRjVCRTEw
ODIyQTFDNzAwNzM2OTc1IC8qIGpzYyAqLywKIAkJCSk7CiAJCQluYW1lID0gUHJvZHVjdHM7CiAJ
CQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtNjEwOCw2ICs2MTEwLDE3IEBACiAJCQlwYXRo
ID0gZGlzYXNzZW1ibGVyL0FSTXY3OwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKIAkJfTsK
KwkJN0FDRERFQ0YxRTI1MkFDQTAwOTdBRkVCIC8qIGNvY29hICovID0geworCQkJaXNhID0gUEJY
R3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQk5OTJGNTZCMzFFNEU4NDdEMDAzNTk1M0IgLyog
UmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0Q29jb2EubW0gKi8sCisJCQkJOTkyRjU2QjAxRTRFODQ3
OTAwMzU5NTNCIC8qIFJlbW90ZUluc3BlY3RvckNvY29hLm1tICovLAorCQkJCTk5MkY1NkIxMUU0
RTg0NzkwMDM1OTUzQiAvKiBSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uLmggKi8sCisJCQkJ
OTkyRjU2QjIxRTRFODQ3OTAwMzU5NTNCIC8qIFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24u
bW0gKi8sCisJCQkpOworCQkJcGF0aCA9IGNvY29hOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsKKwkJfTsKIAkJN0I5OEQxMzMxQjYwQ0QxRTAwMjNCMUE0IC8qIHdhc20gKi8gPSB7CiAJCQlp
c2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKApAQCAtNjgyNCw5ICs2ODM3LDkgQEAKIAkJ
CQlGRTM4NEVFMjFBRERCN0FEMDA1NURFMkMgLyogSlNEb2xsYXJWTS5oICovLAogCQkJCUZFMzg0
RUUzMUFEREI3QUQwMDU1REUyQyAvKiBKU0RvbGxhclZNUHJvdG90eXBlLmNwcCAqLywKIAkJCQlG
RTM4NEVFNDFBRERCN0FEMDA1NURFMkMgLyogSlNEb2xsYXJWTVByb3RvdHlwZS5oICovLAorCQkJ
CTg2QjU4MjJDMTREMjJGNUYwMEE5QzMwNiAvKiBQcm9maWxlVHJlZU5vZGUuaCAqLywKIAkJCQlG
RTMwMjJEMDFFM0Q3Mzk2MDBCQUM0OTMgLyogU2lnaWxsQ3Jhc2hBbmFseXplci5jcHAgKi8sCiAJ
CQkJRkUzMDIyRDExRTNENzM5NjAwQkFDNDkzIC8qIFNpZ2lsbENyYXNoQW5hbHl6ZXIuaCAqLywK
LQkJCQk4NkI1ODIyQzE0RDIyRjVGMDBBOUMzMDYgLyogUHJvZmlsZVRyZWVOb2RlLmggKi8sCiAJ
CQkJODZCNTgyNkExNEQzNUQ1MTAwQTlDMzA2IC8qIFRpZXJlZE1NYXBBcnJheS5oICovLAogCQkJ
CUZFMzAyMkQ0MUU0Mjg1NjcwMEJBQzQ5MyAvKiBWTUluc3BlY3Rvci5jcHAgKi8sCiAJCQkJRkUz
MDIyRDUxRTQyODU2NzAwQkFDNDkzIC8qIFZNSW5zcGVjdG9yLmggKi8sCkBAIC03MTEwLDEwICs3
MTIzLDEwIEBACiAJCQkJMEZCMTc2NUYxOTZCOEY5RTAwOTEwNTJBIC8qIERGR1B1cmVWYWx1ZS5o
ICovLAogCQkJCTBGM0ExQkY3MUE5RUNCN0QwMDBERTAxQSAvKiBERkdQdXRTdGFja1NpbmtpbmdQ
aGFzZS5jcHAgKi8sCiAJCQkJMEYzQTFCRjgxQTlFQ0I3RDAwMERFMDFBIC8qIERGR1B1dFN0YWNr
U2lua2luZ1BoYXNlLmggKi8sCisJCQkJODZFQzlEQzExMzI4REY4MjAwMkIyQUQ3IC8qIERGR1Jl
Z2lzdGVyQmFuay5oICovLAogCQkJCTc5RkM4QTA3MUUzMkU5RjAwMEQ4OEYwRSAvKiBERkdSZWdp
c3RlcmVkU3RydWN0dXJlLmggKi8sCiAJCQkJNzk4MEMxNkExRTNBOTQwRTAwQjcxNjE1IC8qIERG
R1JlZ2lzdGVyZWRTdHJ1Y3R1cmVTZXQuY3BwICovLAogCQkJCTc5ODBDMTZCMUUzQTk0MEUwMEI3
MTYxNSAvKiBERkdSZWdpc3RlcmVkU3RydWN0dXJlU2V0LmggKi8sCi0JCQkJODZFQzlEQzExMzI4
REY4MjAwMkIyQUQ3IC8qIERGR1JlZ2lzdGVyQmFuay5oICovLAogCQkJCTBGMkZDQ0Y0MThBNjAw
NzAwMDFBMjdGOCAvKiBERkdTYWZlcG9pbnQuY3BwICovLAogCQkJCTBGMkZDQ0Y1MThBNjAwNzAw
MDFBMjdGOCAvKiBERkdTYWZlcG9pbnQuaCAqLywKIAkJCQlBNzdBNDIzQzE3QTBCQkZEMDBBOERC
ODEgLyogREZHU2FmZVRvRXhlY3V0ZS5oICovLApAQCAtNzY0MiwxOSArNzY1NSwxNyBAQAogCQlB
NUJBMTVFMDE4MjM0MDlEMDBBODJFNjkgLyogcmVtb3RlICovID0gewogCQkJaXNhID0gUEJYR3Jv
dXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk3QUNEREVDRjFFMjUyQUNBMDA5N0FGRUIgLyogY29j
b2EgKi8sCiAJCQkJOTkyQUJDRjUxQkVBOTRDQTAwNjQwM0EwIC8qIFJlbW90ZUF1dG9tYXRpb25U
YXJnZXQuY3BwICovLAogCQkJCTk5MkFCQ0Y2MUJFQTk0Q0EwMDY0MDNBMCAvKiBSZW1vdGVBdXRv
bWF0aW9uVGFyZ2V0LmggKi8sCiAJCQkJQTVCQTE1RTQxODIzNDBCMzAwQTgyRTY5IC8qIFJlbW90
ZUNvbm5lY3Rpb25Ub1RhcmdldC5oICovLAotCQkJCUE1QkExNUU1MTgyMzQwQjMwMEE4MkU2OSAv
KiBSZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQubW0gKi8sCiAJCQkJOTk4RUQ2NzIxQkVENjU5QTAw
REQ4MDE3IC8qIFJlbW90ZUNvbnRyb2xsYWJsZVRhcmdldC5jcHAgKi8sCiAJCQkJOTk4RUQ2NzMx
QkVENjU5QTAwREQ4MDE3IC8qIFJlbW90ZUNvbnRyb2xsYWJsZVRhcmdldC5oICovLAogCQkJCUE1
OTQ1NThFMTgyNDVFREUwMENDMzg0MyAvKiBSZW1vdGVJbnNwZWN0aW9uVGFyZ2V0LmNwcCAqLywK
IAkJCQlBNUJBMTVFRjE4MjM0NUFGMDBBODJFNjkgLyogUmVtb3RlSW5zcGVjdGlvblRhcmdldC5o
ICovLAorCQkJCTk5NTU2Njg1MUU0RThCMDcwMEFBRTEzQyAvKiBSZW1vdGVJbnNwZWN0b3IuY3Bw
ICovLAogCQkJCUE1QkExNUUxMTgyMzQwQjMwMEE4MkU2OSAvKiBSZW1vdGVJbnNwZWN0b3IuaCAq
LywKLQkJCQlBNUJBMTVFMjE4MjM0MEIzMDBBODJFNjkgLyogUmVtb3RlSW5zcGVjdG9yLm1tICov
LAogCQkJCUE1QkExNUUzMTgyMzQwQjMwMEE4MkU2OSAvKiBSZW1vdGVJbnNwZWN0b3JDb25zdGFu
dHMuaCAqLywKLQkJCQlBNUJBMTVFNjE4MjM0MEIzMDBBODJFNjkgLyogUmVtb3RlSW5zcGVjdG9y
WFBDQ29ubmVjdGlvbi5oICovLAotCQkJCUE1QkExNUU3MTgyMzQwQjMwMEE4MkU2OSAvKiBSZW1v
dGVJbnNwZWN0b3JYUENDb25uZWN0aW9uLm1tICovLAogCQkJKTsKIAkJCXBhdGggPSByZW1vdGU7
CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtODA5Nyw3ICs4MTA4LDYgQEAKIAkJCQkw
RjIxQzI3RDE0QkU3MjdBMDBBREM2NEIgLyogQ29kZVNwZWNpYWxpemF0aW9uS2luZC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMEYwQjgzQTcxNEJDRjUwNzAwODg1QjRGIC8qIENvZGVUeXBlLmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRkE3NjIwNTFEQjkyNDI5MDBCN0EyRkQgLyogQ29sbGVjdGlvblNj
b3BlLmggaW4gSGVhZGVycyAqLywKLQkJCQk3OUZDOEEwODFFMzJFOUYwMDBEODhGMEUgLyogREZH
UmVnaXN0ZXJlZFN0cnVjdHVyZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTUzMjQzOTgxODU2QTQ4
OTAwMkVENjkyIC8qIENvbWJpbmVkRG9tYWlucy5qc29uIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMx
OEMzRjMwRTE2RjVDRDAwQjM0NDYwIC8qIENvbW1vbklkZW50aWZpZXJzLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRjE1RjE1RjE0QjdBNzNFMDA1REUzN0QgLyogQ29tbW9uU2xvd1BhdGhzLmggaW4g
SGVhZGVycyAqLywKQEAgLTgyOTIsNiArODMwMiw4IEBACiAJCQkJMEZCMTc2NjMxOTZCOEY5RTAw
OTEwNTJBIC8qIERGR1B1cmVWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYzQTFCRkExQTlF
Q0I3RDAwMERFMDFBIC8qIERGR1B1dFN0YWNrU2lua2luZ1BoYXNlLmggaW4gSGVhZGVycyAqLywK
IAkJCQk4NkVDOUREMTEzMjhERjgyMDAyQjJBRDcgLyogREZHUmVnaXN0ZXJCYW5rLmggaW4gSGVh
ZGVycyAqLywKKwkJCQk3OUZDOEEwODFFMzJFOUYwMDBEODhGMEUgLyogREZHUmVnaXN0ZXJlZFN0
cnVjdHVyZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNzk4MEMxNkQxRTNBOTQwRTAwQjcxNjE1IC8q
IERGR1JlZ2lzdGVyZWRTdHJ1Y3R1cmVTZXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMkZDQ0ZD
MThBNjAwNzAwMDFBMjdGOCAvKiBERkdTYWZlcG9pbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3
N0E0MjQzMTdBMEJCRkQwMEE4REI4MSAvKiBERkdTYWZlVG9FeGVjdXRlLmggaW4gSGVhZGVycyAq
LywKIAkJCQlBNzQxMDE3RjE3OURBRjgwMDAyRUI4QkEgLyogREZHU2FuZVN0cmluZ0dldEJ5VmFs
U2xvd1BhdGhHZW5lcmF0b3IuaCBpbiBIZWFkZXJzICovLApAQCAtODQ1NCw3ICs4NDY2LDYgQEAK
IAkJCQkwRjg2QTI2RjFENkY3QjMzMDBDQjBDOTIgLyogR0NUeXBlTWFwLmggaW4gSGVhZGVycyAq
LywKIAkJCQk5OTU5RTkzMTFCRDE4MjcyMDAxQUE0MTMgLyogZ2VuZXJhdGUtY29tYmluZWQtaW5z
cGVjdG9yLWpzb24ucHkgaW4gSGVhZGVycyAqLywKIAkJCQlDNDcwM0NDMDE5Mjg0NDk2MDAxM0ZC
RUEgLyogZ2VuZXJhdGUtaW5zcGVjdG9yLXByb3RvY29sLWJpbmRpbmdzLnB5IGluIEhlYWRlcnMg
Ki8sCi0JCQkJRkUzMDIyRDkxRTQzQzkzNDAwQkFDNDkzIC8qIEpTVmlydHVhbE1hY2hpbmVQcml2
YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQk5OURBMDBBRjFCRDU5OTRFMDBGNDU3NUMgLyogZ2Vu
ZXJhdGUtanMtYnVpbHRpbnMucHkgaW4gSGVhZGVycyAqLywKIAkJCQlBNUVBNzBFQzE5RjVCM0VB
MDA5OEY1RUMgLyogZ2VuZXJhdGVfY3BwX2FsdGVybmF0ZV9iYWNrZW5kX2Rpc3BhdGNoZXJfaGVh
ZGVyLnB5IGluIEhlYWRlcnMgKi8sCiAJCQkJQTVFRjlCMTQxQTFENDNGNjAwNzAyRTkwIC8qIGdl
bmVyYXRlX2NwcF9iYWNrZW5kX2Rpc3BhdGNoZXJfaGVhZGVyLnB5IGluIEhlYWRlcnMgKi8sCkBA
IC04NjkxLDcgKzg3MDIsNiBAQAogCQkJCUE1MEU0QjY0MTg4MDlERDUwMDY4QTQ2RCAvKiBKU0ds
b2JhbE9iamVjdFJ1bnRpbWVBZ2VudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTUwM0ZBMkExODhG
MTA1OTAwMTEwRjE0IC8qIEpTR2xvYmFsT2JqZWN0U2NyaXB0RGVidWdTZXJ2ZXIuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUE1MTNFNUMwMTg1QkZBQ0MwMDdFOTVBRCAvKiBKU0luamVjdGVkU2NyaXB0
SG9zdC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNzk4MEMxNkQxRTNBOTQwRTAwQjcxNjE1IC8qIERG
R1JlZ2lzdGVyZWRTdHJ1Y3R1cmVTZXQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1MTNFNUMyMTg1
QkZBQ0MwMDdFOTVBRCAvKiBKU0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQzQ0MkNCMjUxQTZDREI4QzAwNUQzRDdDIC8qIEpTSW5wdXRzLmpzb24gaW4g
SGVhZGVycyAqLywKIAkJCQkwRjJCNjZGODE3QjZCNUFCMDBBN0FFM0YgLyogSlNJbnQxNkFycmF5
LmggaW4gSGVhZGVycyAqLywKQEAgLTg3NzEsNiArODc4MSw3IEBACiAJCQkJQkMxOEM0MkMwRTE2
RjVDRDAwQjM0NDYwIC8qIEpTVmFsdWVSZWYuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2RTNDNjE1
MTY3QkFCRDcwMDZENzYwQSAvKiBKU1ZpcnR1YWxNYWNoaW5lLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk4NkUzQzYxRDE2N0JBQkVFMDA2RDc2MEEgLyogSlNWaXJ0dWFsTWFjaGluZUludGVybmFsLmgg
aW4gSGVhZGVycyAqLywKKwkJCQlGRTMwMjJEOTFFNDNDOTM0MDBCQUM0OTMgLyogSlNWaXJ0dWFs
TWFjaGluZVByaXZhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3Q0EzQUU4MTdEQTQxQUUwMDY1
MzhBRiAvKiBKU1dlYWtNYXAuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3NDgyRTkzMTE2QTdDQUQw
MDNCMDcxMiAvKiBKU1dlYWtPYmplY3RNYXBSZWZJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQTc0ODJCOTMxMTY3MTE0NzAwM0IwNzEyIC8qIEpTV2Vha09iamVjdE1hcFJlZlByaXZhdGUu
aCBpbiBIZWFkZXJzICovLApAQCAtODgwOCw3ICs4ODE5LDYgQEAKIAkJCQlGRTM5MTM1NjFCNzk0
RjhGMDBFREFGNzEgLyogTGl2ZU9iamVjdExpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTcwREU5
QTA5MUJFN0Q2OUUwMDVEODlEOSAvKiBMTEludEFzc2VtYmx5LmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwRjBGQzQ1QTE0QkQxNUY1MDBCODExNTQgLyogTExJbnRDYWxsTGlua0luZm8uaCBpbiBIZWFk
ZXJzICovLAotCQkJCUZFMzAyMkQzMUUzRDczQTUwMEJBQzQ5MyAvKiBTaWdpbGxDcmFzaEFuYWx5
emVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRTIwQ0U5RTE1RjA0QTk1MDBERjM0MzAgLyogTExJ
bnRDTG9vcC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY0NjgwQ0ExNEJCQjE2QzAwQkZFMjcyIC8q
IExMSW50Q29tbW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjQ2ODBEMzE0QkJEMTY3MDBCRkUy
NzIgLyogTExJbnREYXRhLmggaW4gSGVhZGVycyAqLywKQEAgLTg4NjgsNyArODg3OCw2IEBACiAJ
CQkJQTc5RDNFRDlDNTA2NEREMEE4NDY2QTNBIC8qIE1vZHVsZVNjb3BlRGF0YS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMEYxRkIzOTkxRTFGNjVGQjAwQTlCRTUwIC8qIE11dGF0b3JTY2hlZHVsZXIu
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGQTc2MjA3MURCOTI0MzMwMEI3QTJGRCAvKiBNdXRhdG9y
U3RhdGUuaCBpbiBIZWFkZXJzICovLAotCQkJCUZFMzAyMkQ3MUU0Mjg1NzMwMEJBQzQ5MyAvKiBW
TUluc3BlY3Rvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMwMkU5MTEwRTE4MzlEQjAwMEY5Mjk3
IC8qIE5hdGl2ZUVycm9yQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMDJFOTEz
MEUxODM5REIwMDBGOTI5NyAvKiBOYXRpdmVFcnJvclByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMTQ3MzQxRDAxREMwMkRCNDAwQUEyOUJBIC8qIE5hdGl2ZUV4ZWN1dGFibGUuaCBpbiBI
ZWFkZXJzICovLApAQCAtODk3OCw3ICs4OTg3LDcgQEAKIAkJCQlBNUJBMTVGMDE4MjM0NUFGMDBB
ODJFNjkgLyogUmVtb3RlSW5zcGVjdGlvblRhcmdldC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTVC
QTE1RTgxODIzNDBCMzAwQTgyRTY5IC8qIFJlbW90ZUluc3BlY3Rvci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQTVCQTE1RUExODIzNDBCNDAwQTgyRTY5IC8qIFJlbW90ZUluc3BlY3RvckNvbnN0YW50
cy5oIGluIEhlYWRlcnMgKi8sCi0JCQkJQTVCQTE1RUQxODIzNDBCNDAwQTgyRTY5IC8qIFJlbW90
ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICovLAorCQkJCTk5MkY1NkI3MUU0
RTg0QjIwMDM1OTUzQiAvKiBSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwRjI0RTU1MTE3RUUyNzQ5MDBBQkIyMTcgLyogUmVwYXRjaC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJODY5RUJDQjcwRThDNkQ0QTAwODcyMkNDIC8qIFJlc3VsdFR5cGUuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTcwQjBBOUQxMUE5QjY2NDYwMDAxMzA2QSAvKiBSdW50aW1lRmxhZ3Mu
aCBpbiBIZWFkZXJzICovLApAQCAtOTAwOCw2ICs5MDE3LDcgQEAKIAkJCQkwRkVFOTg0MTFBODg2
NUI3MDA3NTRFOTMgLyogU2V0dXBWYXJhcmdzRnJhbWUuaCBpbiBIZWFkZXJzICovLAogCQkJCURD
MTdFODE4MUM5QzkxRDkwMDhBNkFCMyAvKiBTaGFkb3dDaGlja2VuLmggaW4gSGVhZGVycyAqLywK
IAkJCQlEQzE3RTgxOTFDOUM5MURCMDA4QTZBQjMgLyogU2hhZG93Q2hpY2tlbklubGluZXMuaCBp
biBIZWFkZXJzICovLAorCQkJCUZFMzAyMkQzMUUzRDczQTUwMEJBQzQ5MyAvKiBTaWdpbGxDcmFz
aEFuYWx5emVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJCNjcwNTE3QjZCNUFCMDBBN0FFM0Yg
LyogU2ltcGxlVHlwZWRBcnJheUNvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0QkE3
OEYxMTNBQUI4OEYwMDVCN0MyQyAvKiBTbG90VmlzaXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QzIxNjBGRTcxNUY3RTk1RTAwOTQyREZDIC8qIFNsb3RWaXNpdG9ySW5saW5lcy5oIGluIEhlYWRl
cnMgKi8sCkBAIC05MTI2LDYgKzkxMzYsNyBAQAogCQkJCTY1OEQzQTU2MTk2MzgyNjgwMDNDNDVE
NiAvKiBWTUVudHJ5UmVjb3JkLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRTU5MzJBODE4M0M1QTI2
MDBBMUVDQ0MgLyogVk1FbnRyeVNjb3BlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjVBRTJDNDFE
RjRGMjgwMDA2NkVGRTEgLyogVk1JbmxpbmVzLmggaW4gSGVhZGVycyAqLywKKwkJCQlGRTMwMjJE
NzFFNDI4NTczMDBCQUM0OTMgLyogVk1JbnNwZWN0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTUz
RjQwRTkzMUQ1QTRBQjMwMDk5QTFCNiAvKiBXYXNtQjNJUkdlbmVyYXRvci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQUQ0QjFERkExREYyNDRFMjAwNzFBRTMyIC8qIFdhc21CaW5kaW5nLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk1M0ZEMDRENDFEN0FCMjkxMDAzMjg3RDMgLyogV2FzbUNhbGxpbmdDb252
ZW50aW9uLmggaW4gSGVhZGVycyAqLywKQEAgLTk3MzUsNyArOTc0Niw2IEBACiAJCQkJMEY5NjMw
MzkxRDQxOTJDNjAwNTYwOUQ5IC8qIEFsbG9jYXRvckF0dHJpYnV0ZXMuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMTQ3RjM5QkQxMDdFQzM3NjAwNDI3QTQ4IC8qIEFyZ0xpc3QuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJNzlBMjI4MzUxRDM1RDcxRTAwRDhFMDY3IC8qIEFyaXRoUHJvZmlsZS5jcHAg
aW4gU291cmNlcyAqLywKLQkJCQlGRTMwMjJENjFFNDI4NTczMDBCQUM0OTMgLyogVk1JbnNwZWN0
b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY3NDNCQUExNkI4ODI0OTAwOUY5Mjc3IC8qIEFS
TTY0RGlzYXNzZW1ibGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg2RDNCMkMzMTAxNTZCREUw
MDI4NjVFNyAvKiBBUk1Bc3NlbWJsZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNjVDMDI4NTAx
NzE3OTVFMjAwMzUxRTM1IC8qIEFSTXY3RGlzYXNzZW1ibGVyLmNwcCBpbiBTb3VyY2VzICovLApA
QCAtMTAwMDUsNiArMTAwMTUsNyBAQAogCQkJCTBGMkI5Q0VDMTlEMEJBN0QwMEIxRDFCNSAvKiBE
RkdQcm9tb3RlZEhlYXBMb2NhdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkIxNzY2MjE5
NkI4RjlFMDA5MTA1MkEgLyogREZHUHVyZVZhbHVlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBG
M0ExQkY5MUE5RUNCN0QwMDBERTAxQSAvKiBERkdQdXRTdGFja1NpbmtpbmdQaGFzZS5jcHAgaW4g
U291cmNlcyAqLywKKwkJCQk3OTgwQzE2QzFFM0E5NDBFMDBCNzE2MTUgLyogREZHUmVnaXN0ZXJl
ZFN0cnVjdHVyZVNldC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjJGQ0NGQjE4QTYwMDcwMDAx
QTI3RjggLyogREZHU2FmZXBvaW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg2RUM5REQyMTMy
OERGODIwMDJCMkFENyAvKiBERkdTcGVjdWxhdGl2ZUpJVC5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk4Njg4MEYxRjE0MzI4QkI5MDBCMDhENDIgLyogREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAg
aW4gU291cmNlcyAqLywKQEAgLTEwMDU4LDcgKzEwMDY5LDYgQEAKIAkJCQkxNEFEOTExNzFEQ0E5
N0ZEMDAxNEY5RkUgLyogRXZhbENvZGVCbG9jay5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDcz
NDFFMjFEQzJDRTk2MDBBQTI5QkEgLyogRXZhbEV4ZWN1dGFibGUuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJQTU0OTgyMDMxODkxRDBCMDAwODFFNUI4IC8qIEV2ZW50TG9vcC5jcHAgaW4gU291cmNl
cyAqLywKLQkJCQk3OTgwQzE2QzFFM0E5NDBFMDBCNzE2MTUgLyogREZHUmVnaXN0ZXJlZFN0cnVj
dHVyZVNldC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGRTFDMEZGRjFCMTk0RkQxMDBCNTNGQ0Eg
LyogRXhjZXB0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZFODBDMTlCMUQ3NzZBOTgwMDg1
MTBDMCAvKiBFeGNlcHRpb25FdmVudExvY2F0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBG
MTJERTBGMTk3OUQ1RkQwMDA2RkY0RSAvKiBFeGNlcHRpb25GdXp6LmNwcCBpbiBTb3VyY2VzICov
LApAQCAtMTA0MzEsNyArMTA0NDEsNiBAQAogCQkJCTc5QjAwQ0JFMUM2QUIwN0UwMDg4QzY1RCAv
KiBQcm94eU9iamVjdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3OTE2MERCRDFDOEUzRUM4MDA4
QzA4NUEgLyogUHJveHlSZXZva2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYxNUNEMjIxQkE1
Rjk4NjAwMzFGRkQzIC8qIFB1dEJ5SWRGbGFncy5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlGRTMw
MjJEMjFFM0Q3M0E1MDBCQUM0OTMgLyogU2lnaWxsQ3Jhc2hBbmFseXplci5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkwRjkzMzJBMzE0Q0E3REQ3MDA4NUYzQzYgLyogUHV0QnlJZFN0YXR1cy5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkwRjkzQjRBOTE4QjkyQzREMDAxNzhBM0YgLyogUHV0QnlJZFZh
cmlhbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZGNjBBQzMxNjc0MEY4ODAwMDI5Nzc5IC8q
IFJlZHVjZVdoaXRlc3BhY2UuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0xMDQ0OSwxMSArMTA0NTgs
MTIgQEAKIAkJCQkwRkMzMTQxNTE4MTQ2RDcwMDAwMzMyMzIgLyogUmVnaXN0ZXJTZXQuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQTU3RDIzRUQxODkxQjU1NDAwMzFDN0ZBIC8qIFJlZ3VsYXJFeHBy
ZXNzaW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTk5MkFCQ0Y5MUJFQTlCRDIwMDY0MDNBMCAv
KiBSZW1vdGVBdXRvbWF0aW9uVGFyZ2V0LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUE1QkExNUVD
MTgyMzQwQjQwMEE4MkU2OSAvKiBSZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQubW0gaW4gU291cmNl
cyAqLywKKwkJCQk5OTJGNTZCNDFFNEU4NEE0MDAzNTk1M0IgLyogUmVtb3RlQ29ubmVjdGlvblRv
VGFyZ2V0Q29jb2EubW0gaW4gU291cmNlcyAqLywKIAkJCQk5OThFRDY3NDFCRUQ3MEFDMDBERDgw
MTcgLyogUmVtb3RlQ29udHJvbGxhYmxlVGFyZ2V0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE1
OTQ1NThGMTgyNDVFRkQwMENDMzg0MyAvKiBSZW1vdGVJbnNwZWN0aW9uVGFyZ2V0LmNwcCBpbiBT
b3VyY2VzICovLAotCQkJCUE1QkExNUU5MTgyMzQwQjMwMEE4MkU2OSAvKiBSZW1vdGVJbnNwZWN0
b3IubW0gaW4gU291cmNlcyAqLywKLQkJCQlBNUJBMTVFRTE4MjM0MEI0MDBBODJFNjkgLyogUmVt
b3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbi5tbSBpbiBTb3VyY2VzICovLAorCQkJCTk5NTU2Njg2
MUU0RThCMEYwMEFBRTEzQyAvKiBSZW1vdGVJbnNwZWN0b3IuY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJOTkyRjU2QjUxRTRFODRBODAwMzU5NTNCIC8qIFJlbW90ZUluc3BlY3RvckNvY29hLm1tIGlu
IFNvdXJjZXMgKi8sCisJCQkJOTkyRjU2QjYxRTRFODRBQjAwMzU5NTNCIC8qIFJlbW90ZUluc3Bl
Y3RvclhQQ0Nvbm5lY3Rpb24ubW0gaW4gU291cmNlcyAqLywKIAkJCQkwRjI0RTU1MDE3RUUyNzQ5
MDBBQkIyMTcgLyogUmVwYXRjaC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1Mjc3NzNERTFBQUY4
M0FDMDBCREU3RTggLyogUnVudGltZVR5cGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY3NzAw
OTIxNDAyRkYzQzAwNzhFQjM5IC8qIFNhbXBsaW5nQ291bnRlci5jcHAgaW4gU291cmNlcyAqLywK
QEAgLTEwNDc2LDYgKzEwNDg2LDcgQEAKIAkJCQlBNzI5OURBMTE3RDEyODQ4MDA1RjVGRjkgLyog
U2V0UHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRUU5ODQzMUE4OTIyNzUwMDc1
NEU5MyAvKiBTZXR1cFZhcmFyZ3NGcmFtZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlEQzE3RTgx
NzFDOUM5MUQ2MDA4QTZBQjMgLyogU2hhZG93Q2hpY2tlbi5jcHAgaW4gU291cmNlcyAqLywKKwkJ
CQlGRTMwMjJEMjFFM0Q3M0E1MDBCQUM0OTMgLyogU2lnaWxsQ3Jhc2hBbmFseXplci5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkwRjJCNjcwNDE3QjZCNUFCMDBBN0FFM0YgLyogU2ltcGxlVHlwZWRB
cnJheUNvbnRyb2xsZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQzIyNTQ5NDMxNUY3REJBQTAw
NjVFODk4IC8qIFNsb3RWaXNpdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTkzMzA0MDJDMEU2
QTc2NDAwMDc4NkU2QSAvKiBTbWFsbFN0cmluZ3MuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0xMDU1
MCw2ICsxMDU2MSw3IEBACiAJCQkJMEY5NTJBQTIxREY3ODYwRDAwRTA2RkJEIC8qIFZpc2l0UmFj
ZUtleS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFMThFM0E1OTBERjkyNzhDMDBEOTBCMzQgLyog
Vk0uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkU1OTMyQTcxODNDNUEyNjAwQTFFQ0NDIC8qIFZN
RW50cnlTY29wZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlGRTMwMjJENjFFNDI4NTczMDBCQUM0
OTMgLyogVk1JbnNwZWN0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTNGNDBFOEYxRDU5MDI4
MjAwOTlBMUI2IC8qIFdhc21CM0lSR2VuZXJhdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUFE
NEIxREY5MURGMjQ0RTIwMDcxQUUzMiAvKiBXYXNtQmluZGluZy5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk1M0ZEMDREMzFEN0FCMjc3MDAzMjg3RDMgLyogV2FzbUNhbGxpbmdDb252ZW50aW9uLmNw
cCBpbiBTb3VyY2VzICovLApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9y
ZW1vdGUvUmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0LmgJ
KHJldmlzaW9uIDIxMjQyMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVt
b3RlL1JlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2NyAr
MjcsODYgQEAKIAogI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQogCi0jaW1wb3J0ICJJbnNw
ZWN0b3JGcm9udGVuZENoYW5uZWwuaCIKLSNpbXBvcnQgIlJlbW90ZUNvbm5lY3Rpb25Ub1Rhcmdl
dC5oIgotI2ltcG9ydCAiUmVtb3RlSW5zcGVjdG9yLmgiCi0jaW1wb3J0IDxtdXRleD4KLSNpbXBv
cnQgPHd0Zi9CbG9ja1B0ci5oPgotI2ltcG9ydCA8d3RmL0xvY2suaD4KLSNpbXBvcnQgPHd0Zi9S
ZXRhaW5QdHIuaD4KLSNpbXBvcnQgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgorI2luY2x1
ZGUgIkluc3BlY3RvckZyb250ZW5kQ2hhbm5lbC5oIgorI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+Cisj
aW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CisKKyNpZiBQTEFURk9STShDT0NP
QSkKKyNpbmNsdWRlIDx3dGYvQmxvY2tQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+
CiAKIE9CSkNfQ0xBU1MgTlNTdHJpbmc7CisjZW5kaWYKIAogbmFtZXNwYWNlIEluc3BlY3RvciB7
CiAKK2NsYXNzIFJlbW90ZUNvbnRyb2xsYWJsZVRhcmdldDsKKworI2lmIFBMQVRGT1JNKENPQ09B
KQogdHlwZWRlZiBWZWN0b3I8QmxvY2tQdHI8dm9pZCAoKT4+IFJlbW90ZVRhcmdldFF1ZXVlOwor
I2VuZGlmCiAKIGNsYXNzIFJlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldCBmaW5hbCA6IHB1YmxpYyBU
aHJlYWRTYWZlUmVmQ291bnRlZDxSZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQ+LCBwdWJsaWMgRnJv
bnRlbmRDaGFubmVsIHsKIHB1YmxpYzoKLSAgICBSZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQoUmVt
b3RlQ29udHJvbGxhYmxlVGFyZ2V0KiwgTlNTdHJpbmcgKmNvbm5lY3Rpb25JZGVudGlmaWVyLCBO
U1N0cmluZyAqZGVzdGluYXRpb24pOworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIFJlbW90ZUNv
bm5lY3Rpb25Ub1RhcmdldChSZW1vdGVDb250cm9sbGFibGVUYXJnZXQqLCBOU1N0cmluZyogY29u
bmVjdGlvbklkZW50aWZpZXIsIE5TU3RyaW5nKiBkZXN0aW5hdGlvbik7CisjZW5kaWYKICAgICB2
aXJ0dWFsIH5SZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQoKTsKIAogICAgIC8vIE1haW4gQVBJLgog
ICAgIGJvb2wgc2V0dXAoYm9vbCBpc0F1dG9tYXRpY0luc3BlY3Rpb24gPSBmYWxzZSwgYm9vbCBh
dXRvbWF0aWNhbGx5UGF1c2UgPSBmYWxzZSk7CisjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgdm9p
ZCBzZW5kTWVzc2FnZVRvVGFyZ2V0KE5TU3RyaW5nICopOworI2Vsc2UKKyAgICB2b2lkIHNlbmRN
ZXNzYWdlVG9UYXJnZXQoY29uc3QgU3RyaW5nJik7CisjZW5kaWYKICAgICB2b2lkIGNsb3NlKCk7
CiAgICAgdm9pZCB0YXJnZXRDbG9zZWQoKTsKIAogICAgIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+
IHRhcmdldElkZW50aWZpZXIoKSBjb25zdDsKKyNpZiBQTEFURk9STShDT0NPQSkKICAgICBOU1N0
cmluZyAqY29ubmVjdGlvbklkZW50aWZpZXIoKSBjb25zdDsKICAgICBOU1N0cmluZyAqZGVzdGlu
YXRpb24oKSBjb25zdDsKIAogICAgIExvY2smIHF1ZXVlTXV0ZXgoKSB7IHJldHVybiBtX3F1ZXVl
TXV0ZXg7IH0KICAgICBjb25zdCBSZW1vdGVUYXJnZXRRdWV1ZSYgcXVldWUoKSBjb25zdCB7IHJl
dHVybiBtX3F1ZXVlOyB9CiAgICAgdm9pZCBjbGVhclF1ZXVlKCkgeyBtX3F1ZXVlLmNsZWFyKCk7
IH0KKyNlbmRpZgogCiAgICAgLy8gRnJvbnRlbmRDaGFubmVsIG92ZXJyaWRlcy4KICAgICBDb25u
ZWN0aW9uVHlwZSBjb25uZWN0aW9uVHlwZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIENvbm5l
Y3Rpb25UeXBlOjpSZW1vdGU7IH0KICAgICB2b2lkIHNlbmRNZXNzYWdlVG9Gcm9udGVuZChjb25z
dCBTdHJpbmcmKSBvdmVycmlkZTsKIAogcHJpdmF0ZToKKyNpZiBQTEFURk9STShDT0NPQSkKICAg
ICB2b2lkIGRpc3BhdGNoQXN5bmNPblRhcmdldCh2b2lkICheYmxvY2spKCkpOwogCiAgICAgdm9p
ZCBzZXR1cFJ1bkxvb3AoKTsKICAgICB2b2lkIHRlYXJkb3duUnVuTG9vcCgpOwogICAgIHZvaWQg
cXVldWVUYXNrT25Qcml2YXRlUnVuTG9vcCh2b2lkICheYmxvY2spKCkpOworI2VuZGlmCiAKICAg
ICAvLyBUaGlzIGNvbm5lY3Rpb24gZnJvbSB0aGUgUmVtb3RlSW5zcGVjdG9yIHNpbmdsZXRvbiB0
byB0aGUgSW5zcGVjdGlvblRhcmdldAogICAgIC8vIGNhbiBiZSB1c2VkIG9uIG11bHRpcGxlIHRo
cmVhZHMuIFNvIGFueSBhY2Nlc3MgdG8gdGhlIHRhcmdldAogICAgIC8vIGl0c2VsZiBtdXN0IHRh
a2UgdGhpcyBtdXRleCB0byBlbnN1cmUgbV90YXJnZXQgaXMgdmFsaWQuCiAgICAgTG9jayBtX3Rh
cmdldE11dGV4OwogCisjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgLy8gSWYgYSB0YXJnZXQgaGFz
IGEgc3BlY2lmaWMgcnVuIGxvb3AgaXQgd2FudHMgdG8gZXZhbHVhdGUgb24KICAgICAvLyB3ZSBz
ZXR1cCBvdXIgcnVuIGxvb3Agc291cmNlcyBvbiB0aGF0IHNwZWNpZmljIHJ1biBsb29wLgogICAg
IFJldGFpblB0cjxDRlJ1bkxvb3BSZWY+IG1fcnVuTG9vcDsKICAgICBSZXRhaW5QdHI8Q0ZSdW5M
b29wU291cmNlUmVmPiBtX3J1bkxvb3BTb3VyY2U7CiAgICAgUmVtb3RlVGFyZ2V0UXVldWUgbV9x
dWV1ZTsKICAgICBMb2NrIG1fcXVldWVNdXRleDsKKyNlbmRpZgogCiAgICAgUmVtb3RlQ29udHJv
bGxhYmxlVGFyZ2V0KiBtX3RhcmdldCB7IG51bGxwdHIgfTsKKyAgICBib29sIG1fY29ubmVjdGVk
IHsgZmFsc2UgfTsKKworI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIFJldGFpblB0cjxOU1N0cmlu
Zz4gbV9jb25uZWN0aW9uSWRlbnRpZmllcjsKICAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IG1fZGVz
dGluYXRpb247Ci0gICAgYm9vbCBtX2Nvbm5lY3RlZCB7IGZhbHNlIH07CisjZW5kaWYKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIEluc3BlY3RvcgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9yZW1vdGUvUmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0Lm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUNvbm5lY3Rpb25U
b1RhcmdldC5tbQkocmV2aXNpb24gMjEyNDIzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9yZW1vdGUvUmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0Lm1tCShub25leGlzdGVudCkK
QEAgLTEsMjgzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTUgQXBwbGUg
SW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
LSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi0jaW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIlJlbW90ZUNvbm5lY3Rp
b25Ub1RhcmdldC5oIgotCi0jaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCi0KLSNpbXBvcnQg
IkV2ZW50TG9vcC5oIgotI2ltcG9ydCAiUmVtb3RlQXV0b21hdGlvblRhcmdldC5oIgotI2ltcG9y
dCAiUmVtb3RlSW5zcGVjdGlvblRhcmdldC5oIgotI2ltcG9ydCA8ZGlzcGF0Y2gvZGlzcGF0Y2gu
aD4KLSNpbXBvcnQgPHd0Zi9PcHRpb25hbC5oPgotCi0jaWYgUExBVEZPUk0oSU9TKQotI2ltcG9y
dCA8d3RmL2lvcy9XZWJDb3JlVGhyZWFkLmg+Ci0jZW5kaWYKLQotbmFtZXNwYWNlIEluc3BlY3Rv
ciB7Ci0KLXN0YXRpYyBTdGF0aWNMb2NrIHJ3aVF1ZXVlTXV0ZXg7Ci1zdGF0aWMgQ0ZSdW5Mb29w
U291cmNlUmVmIHJ3aVJ1bkxvb3BTb3VyY2U7Ci1zdGF0aWMgUmVtb3RlVGFyZ2V0UXVldWUqIHJ3
aVF1ZXVlOwotCi1zdGF0aWMgdm9pZCBSZW1vdGVUYXJnZXRIYW5kbGVSdW5Tb3VyY2VHbG9iYWwo
dm9pZCopCi17Ci0gICAgQVNTRVJUKENGUnVuTG9vcEdldEN1cnJlbnQoKSA9PSBDRlJ1bkxvb3BH
ZXRNYWluKCkpOwotICAgIEFTU0VSVChyd2lSdW5Mb29wU291cmNlKTsKLSAgICBBU1NFUlQocndp
UXVldWUpOwotCi0gICAgUmVtb3RlVGFyZ2V0UXVldWUgcXVldWVDb3B5OwotICAgIHsKLSAgICAg
ICAgc3RkOjpsb2NrX2d1YXJkPFN0YXRpY0xvY2s+IGxvY2socndpUXVldWVNdXRleCk7Ci0gICAg
ICAgIHF1ZXVlQ29weSA9ICpyd2lRdWV1ZTsKLSAgICAgICAgcndpUXVldWUtPmNsZWFyKCk7Ci0g
ICAgfQotCi0gICAgZm9yIChjb25zdCBhdXRvJiBibG9jayA6IHF1ZXVlQ29weSkKLSAgICAgICAg
YmxvY2soKTsKLX0KLQotc3RhdGljIHZvaWQgUmVtb3RlVGFyZ2V0UXVldWVUYXNrT25HbG9iYWxR
dWV1ZSh2b2lkIChedGFzaykoKSkKLXsKLSAgICBBU1NFUlQocndpUnVuTG9vcFNvdXJjZSk7Ci0g
ICAgQVNTRVJUKHJ3aVF1ZXVlKTsKLQotICAgIHsKLSAgICAgICAgc3RkOjpsb2NrX2d1YXJkPFN0
YXRpY0xvY2s+IGxvY2socndpUXVldWVNdXRleCk7Ci0gICAgICAgIHJ3aVF1ZXVlLT5hcHBlbmQo
dGFzayk7Ci0gICAgfQotCi0gICAgQ0ZSdW5Mb29wU291cmNlU2lnbmFsKHJ3aVJ1bkxvb3BTb3Vy
Y2UpOwotICAgIENGUnVuTG9vcFdha2VVcChDRlJ1bkxvb3BHZXRNYWluKCkpOwotfQotCi1zdGF0
aWMgdm9pZCBSZW1vdGVUYXJnZXRJbml0aWFsaXplR2xvYmFsUXVldWUoKQotewotICAgIHN0YXRp
YyBkaXNwYXRjaF9vbmNlX3QgcHJlZDsKLSAgICBkaXNwYXRjaF9vbmNlKCZwcmVkLCBeewotICAg
ICAgICByd2lRdWV1ZSA9IG5ldyBSZW1vdGVUYXJnZXRRdWV1ZTsKLQotICAgICAgICBDRlJ1bkxv
b3BTb3VyY2VDb250ZXh0IHJ1bkxvb3BTb3VyY2VDb250ZXh0ID0gezAsIG51bGxwdHIsIG51bGxw
dHIsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIs
IFJlbW90ZVRhcmdldEhhbmRsZVJ1blNvdXJjZUdsb2JhbH07Ci0gICAgICAgIHJ3aVJ1bkxvb3BT
b3VyY2UgPSBDRlJ1bkxvb3BTb3VyY2VDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgMSwgJnJ1
bkxvb3BTb3VyY2VDb250ZXh0KTsKLQotICAgICAgICAvLyBBZGQgdG8gdGhlIGRlZmF1bHQgcnVu
IGxvb3AgbW9kZSBmb3IgZGVmYXVsdCBoYW5kbGluZywgYW5kIHRoZSBKU0NvbnRleHQgcmVtb3Rl
IGluc3BlY3RvciBydW4gbG9vcCBtb2RlIHdoZW4gcGF1c2VkLgotICAgICAgICBDRlJ1bkxvb3BB
ZGRTb3VyY2UoQ0ZSdW5Mb29wR2V0TWFpbigpLCByd2lSdW5Mb29wU291cmNlLCBrQ0ZSdW5Mb29w
RGVmYXVsdE1vZGUpOwotICAgICAgICBDRlJ1bkxvb3BBZGRTb3VyY2UoQ0ZSdW5Mb29wR2V0TWFp
bigpLCByd2lSdW5Mb29wU291cmNlLCBFdmVudExvb3A6OnJlbW90ZUluc3BlY3RvclJ1bkxvb3BN
b2RlKCkpOwotICAgIH0pOwotfQotCi1zdGF0aWMgdm9pZCBSZW1vdGVUYXJnZXRIYW5kbGVSdW5T
b3VyY2VXaXRoSW5mbyh2b2lkKiBpbmZvKQotewotICAgIFJlbW90ZUNvbm5lY3Rpb25Ub1Rhcmdl
dCAqY29ubmVjdGlvblRvVGFyZ2V0ID0gc3RhdGljX2Nhc3Q8UmVtb3RlQ29ubmVjdGlvblRvVGFy
Z2V0Kj4oaW5mbyk7Ci0KLSAgICBSZW1vdGVUYXJnZXRRdWV1ZSBxdWV1ZUNvcHk7Ci0gICAgewot
ICAgICAgICBzdGQ6OmxvY2tfZ3VhcmQ8TG9jaz4gbG9jayhjb25uZWN0aW9uVG9UYXJnZXQtPnF1
ZXVlTXV0ZXgoKSk7Ci0gICAgICAgIHF1ZXVlQ29weSA9IGNvbm5lY3Rpb25Ub1RhcmdldC0+cXVl
dWUoKTsKLSAgICAgICAgY29ubmVjdGlvblRvVGFyZ2V0LT5jbGVhclF1ZXVlKCk7Ci0gICAgfQot
Ci0gICAgZm9yIChjb25zdCBhdXRvJiBibG9jayA6IHF1ZXVlQ29weSkKLSAgICAgICAgYmxvY2so
KTsKLX0KLQotCi1SZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQ6OlJlbW90ZUNvbm5lY3Rpb25Ub1Rh
cmdldChSZW1vdGVDb250cm9sbGFibGVUYXJnZXQqIHRhcmdldCwgTlNTdHJpbmcgKmNvbm5lY3Rp
b25JZGVudGlmaWVyLCBOU1N0cmluZyAqZGVzdGluYXRpb24pCi0gICAgOiBtX3RhcmdldCh0YXJn
ZXQpCi0gICAgLCBtX2Nvbm5lY3Rpb25JZGVudGlmaWVyKGNvbm5lY3Rpb25JZGVudGlmaWVyKQot
ICAgICwgbV9kZXN0aW5hdGlvbihkZXN0aW5hdGlvbikKLXsKLSAgICBzZXR1cFJ1bkxvb3AoKTsK
LX0KLQotUmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0Ojp+UmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0
KCkKLXsKLSAgICB0ZWFyZG93blJ1bkxvb3AoKTsKLX0KLQotc3RkOjpvcHRpb25hbDx1bnNpZ25l
ZD4gUmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0Ojp0YXJnZXRJZGVudGlmaWVyKCkgY29uc3QKLXsK
LSAgICByZXR1cm4gbV90YXJnZXQgPyBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPihtX3RhcmdldC0+
dGFyZ2V0SWRlbnRpZmllcigpKSA6IHN0ZDo6bnVsbG9wdDsKLX0KLQotTlNTdHJpbmcgKlJlbW90
ZUNvbm5lY3Rpb25Ub1RhcmdldDo6Y29ubmVjdGlvbklkZW50aWZpZXIoKSBjb25zdAotewotICAg
IHJldHVybiBbW21fY29ubmVjdGlvbklkZW50aWZpZXIgY29weV0gYXV0b3JlbGVhc2VdOwotfQot
Ci1OU1N0cmluZyAqUmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0OjpkZXN0aW5hdGlvbigpIGNvbnN0
Ci17Ci0gICAgcmV0dXJuIFtbbV9kZXN0aW5hdGlvbiBjb3B5XSBhdXRvcmVsZWFzZV07Ci19Ci0K
LXZvaWQgUmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0OjpkaXNwYXRjaEFzeW5jT25UYXJnZXQodm9p
ZCAoXmJsb2NrKSgpKQotewotICAgIGlmIChtX3J1bkxvb3ApIHsKLSAgICAgICAgcXVldWVUYXNr
T25Qcml2YXRlUnVuTG9vcChibG9jayk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSNpZiBQ
TEFURk9STShJT1MpCi0gICAgaWYgKFdlYkNvcmVXZWJUaHJlYWRJc0VuYWJsZWQgJiYgV2ViQ29y
ZVdlYlRocmVhZElzRW5hYmxlZCgpKSB7Ci0gICAgICAgIFdlYkNvcmVXZWJUaHJlYWRSdW4oYmxv
Y2spOwotICAgICAgICByZXR1cm47Ci0gICAgfQotI2VuZGlmCi0KLSAgICBSZW1vdGVUYXJnZXRR
dWV1ZVRhc2tPbkdsb2JhbFF1ZXVlKGJsb2NrKTsKLX0KLQotYm9vbCBSZW1vdGVDb25uZWN0aW9u
VG9UYXJnZXQ6OnNldHVwKGJvb2wgaXNBdXRvbWF0aWNJbnNwZWN0aW9uLCBib29sIGF1dG9tYXRp
Y2FsbHlQYXVzZSkKLXsKLSAgICBzdGQ6OmxvY2tfZ3VhcmQ8TG9jaz4gbG9jayhtX3RhcmdldE11
dGV4KTsKLQotICAgIGlmICghbV90YXJnZXQpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAg
IHJlZigpOwotICAgIGRpc3BhdGNoQXN5bmNPblRhcmdldCheewotICAgICAgICB7Ci0gICAgICAg
ICAgICBzdGQ6OmxvY2tfZ3VhcmQ8TG9jaz4gbG9jayhtX3RhcmdldE11dGV4KTsKLSAgICAgICAg
ICAgIGlmICghbV90YXJnZXQgfHwgIW1fdGFyZ2V0LT5yZW1vdGVDb250cm9sQWxsb3dlZCgpKSB7
Ci0gICAgICAgICAgICAgICAgUmVtb3RlSW5zcGVjdG9yOjpzaW5nbGV0b24oKS5zZXR1cEZhaWxl
ZCh0YXJnZXRJZGVudGlmaWVyKCkudmFsdWVfb3IoMCkpOwotICAgICAgICAgICAgICAgIG1fdGFy
Z2V0ID0gbnVsbHB0cjsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAoaXM8UmVtb3RlSW5zcGVjdGlv
blRhcmdldD4obV90YXJnZXQpKSB7Ci0gICAgICAgICAgICAgICAgYXV0byBjYXN0ZWRUYXJnZXQg
PSBkb3duY2FzdDxSZW1vdGVJbnNwZWN0aW9uVGFyZ2V0PihtX3RhcmdldCk7Ci0gICAgICAgICAg
ICAgICAgY2FzdGVkVGFyZ2V0LT5jb25uZWN0KHRoaXMsIGlzQXV0b21hdGljSW5zcGVjdGlvbik7
Ci0gICAgICAgICAgICAgICAgbV9jb25uZWN0ZWQgPSB0cnVlOwotCi0gICAgICAgICAgICAgICAg
aWYgKGF1dG9tYXRpY2FsbHlQYXVzZSkKLSAgICAgICAgICAgICAgICAgICAgY2FzdGVkVGFyZ2V0
LT5wYXVzZSgpOwotICAgICAgICAgICAgfSBlbHNlIGlmIChpczxSZW1vdGVBdXRvbWF0aW9uVGFy
Z2V0PihtX3RhcmdldCkpIHsKLSAgICAgICAgICAgICAgICBhdXRvIGNhc3RlZFRhcmdldCA9IGRv
d25jYXN0PFJlbW90ZUF1dG9tYXRpb25UYXJnZXQ+KG1fdGFyZ2V0KTsKLSAgICAgICAgICAgICAg
ICBjYXN0ZWRUYXJnZXQtPmNvbm5lY3QodGhpcyk7Ci0gICAgICAgICAgICAgICAgbV9jb25uZWN0
ZWQgPSB0cnVlOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGRlcmVmKCk7Ci0g
ICAgfSk7Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotdm9pZCBSZW1vdGVDb25uZWN0aW9uVG9U
YXJnZXQ6OnRhcmdldENsb3NlZCgpCi17Ci0gICAgc3RkOjpsb2NrX2d1YXJkPExvY2s+IGxvY2so
bV90YXJnZXRNdXRleCk7Ci0KLSAgICBtX3RhcmdldCA9IG51bGxwdHI7Ci19Ci0KLXZvaWQgUmVt
b3RlQ29ubmVjdGlvblRvVGFyZ2V0OjpjbG9zZSgpCi17Ci0gICAgcmVmKCk7Ci0gICAgZGlzcGF0
Y2hBc3luY09uVGFyZ2V0KF57Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHN0ZDo6bG9ja19ndWFy
ZDxMb2NrPiBsb2NrKG1fdGFyZ2V0TXV0ZXgpOwotCi0gICAgICAgICAgICBpZiAobV90YXJnZXQp
IHsKLSAgICAgICAgICAgICAgICBpZiAobV9jb25uZWN0ZWQpCi0gICAgICAgICAgICAgICAgICAg
IG1fdGFyZ2V0LT5kaXNjb25uZWN0KHRoaXMpOwotCi0gICAgICAgICAgICAgICAgbV90YXJnZXQg
PSBudWxscHRyOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGRlcmVmKCk7Ci0g
ICAgfSk7Ci19Ci0KLXZvaWQgUmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0OjpzZW5kTWVzc2FnZVRv
VGFyZ2V0KE5TU3RyaW5nICptZXNzYWdlKQotewotICAgIHJlZigpOwotICAgIGRpc3BhdGNoQXN5
bmNPblRhcmdldCheewotICAgICAgICB7Ci0gICAgICAgICAgICBSZW1vdGVDb250cm9sbGFibGVU
YXJnZXQqIHRhcmdldCA9IG51bGxwdHI7Ci0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAg
c3RkOjpsb2NrX2d1YXJkPExvY2s+IGxvY2sobV90YXJnZXRNdXRleCk7Ci0gICAgICAgICAgICAg
ICAgaWYgKCFtX3RhcmdldCkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAg
ICAgICAgIHRhcmdldCA9IG1fdGFyZ2V0OwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICB0
YXJnZXQtPmRpc3BhdGNoTWVzc2FnZUZyb21SZW1vdGUobWVzc2FnZSk7Ci0gICAgICAgIH0KLSAg
ICAgICAgZGVyZWYoKTsKLSAgICB9KTsKLX0KLQotdm9pZCBSZW1vdGVDb25uZWN0aW9uVG9UYXJn
ZXQ6OnNlbmRNZXNzYWdlVG9Gcm9udGVuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCi17Ci0gICAg
aWYgKCF0YXJnZXRJZGVudGlmaWVyKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIFJlbW90ZUlu
c3BlY3Rvcjo6c2luZ2xldG9uKCkuc2VuZE1lc3NhZ2VUb1JlbW90ZSh0YXJnZXRJZGVudGlmaWVy
KCkudmFsdWUoKSwgbWVzc2FnZSk7Ci19Ci0KLXZvaWQgUmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0
OjpzZXR1cFJ1bkxvb3AoKQotewotICAgIENGUnVuTG9vcFJlZiB0YXJnZXRSdW5Mb29wID0gbV90
YXJnZXQtPnRhcmdldFJ1bkxvb3AoKTsKLSAgICBpZiAoIXRhcmdldFJ1bkxvb3ApIHsKLSAgICAg
ICAgUmVtb3RlVGFyZ2V0SW5pdGlhbGl6ZUdsb2JhbFF1ZXVlKCk7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0KLSAgICBtX3J1bkxvb3AgPSB0YXJnZXRSdW5Mb29wOwotCi0gICAgQ0ZSdW5Mb29w
U291cmNlQ29udGV4dCBydW5Mb29wU291cmNlQ29udGV4dCA9IHswLCB0aGlzLCBudWxscHRyLCBu
dWxscHRyLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBSZW1v
dGVUYXJnZXRIYW5kbGVSdW5Tb3VyY2VXaXRoSW5mb307Ci0gICAgbV9ydW5Mb29wU291cmNlID0g
YWRvcHRDRihDRlJ1bkxvb3BTb3VyY2VDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgMSwgJnJ1
bkxvb3BTb3VyY2VDb250ZXh0KSk7Ci0KLSAgICBDRlJ1bkxvb3BBZGRTb3VyY2UobV9ydW5Mb29w
LmdldCgpLCBtX3J1bkxvb3BTb3VyY2UuZ2V0KCksIGtDRlJ1bkxvb3BEZWZhdWx0TW9kZSk7Ci0g
ICAgQ0ZSdW5Mb29wQWRkU291cmNlKG1fcnVuTG9vcC5nZXQoKSwgbV9ydW5Mb29wU291cmNlLmdl
dCgpLCBFdmVudExvb3A6OnJlbW90ZUluc3BlY3RvclJ1bkxvb3BNb2RlKCkpOwotfQotCi12b2lk
IFJlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldDo6dGVhcmRvd25SdW5Mb29wKCkKLXsKLSAgICBpZiAo
IW1fcnVuTG9vcCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgQ0ZSdW5Mb29wUmVtb3ZlU291cmNl
KG1fcnVuTG9vcC5nZXQoKSwgbV9ydW5Mb29wU291cmNlLmdldCgpLCBrQ0ZSdW5Mb29wRGVmYXVs
dE1vZGUpOwotICAgIENGUnVuTG9vcFJlbW92ZVNvdXJjZShtX3J1bkxvb3AuZ2V0KCksIG1fcnVu
TG9vcFNvdXJjZS5nZXQoKSwgRXZlbnRMb29wOjpyZW1vdGVJbnNwZWN0b3JSdW5Mb29wTW9kZSgp
KTsKLQotICAgIG1fcnVuTG9vcCA9IG51bGxwdHI7Ci0gICAgbV9ydW5Mb29wU291cmNlID0gbnVs
bHB0cjsKLX0KLQotdm9pZCBSZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQ6OnF1ZXVlVGFza09uUHJp
dmF0ZVJ1bkxvb3Aodm9pZCAoXmJsb2NrKSgpKQotewotICAgIEFTU0VSVChtX3J1bkxvb3ApOwot
Ci0gICAgewotICAgICAgICBzdGQ6OmxvY2tfZ3VhcmQ8TG9jaz4gbG9jayhtX3F1ZXVlTXV0ZXgp
OwotICAgICAgICBtX3F1ZXVlLmFwcGVuZChibG9jayk7Ci0gICAgfQotCi0gICAgQ0ZSdW5Mb29w
U291cmNlU2lnbmFsKG1fcnVuTG9vcFNvdXJjZS5nZXQoKSk7Ci0gICAgQ0ZSdW5Mb29wV2FrZVVw
KG1fcnVuTG9vcC5nZXQoKSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIEluc3BlY3RvcgotCi0jZW5k
aWYgLy8gRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVDb250cm9sbGFibGVUYXJnZXQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVDb250cm9s
bGFibGVUYXJnZXQuaAkocmV2aXNpb24gMjEyNDIzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlQ29udHJvbGxhYmxlVGFyZ2V0LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTI3LDEwICsyNywxMyBAQAogCiAjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCiAK
LSNpbmNsdWRlIDxDb3JlRm91bmRhdGlvbi9DRlJ1bkxvb3AuaD4KICNpbmNsdWRlIDx3dGYvVHlw
ZUNhc3RzLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKKyNpZiBVU0UoQ0Yp
CisjaW5jbHVkZSA8Q29yZUZvdW5kYXRpb24vQ0ZSdW5Mb29wLmg+CisjZW5kaWYKKwogbmFtZXNw
YWNlIEluc3BlY3RvciB7CiAKIGNsYXNzIEZyb250ZW5kQ2hhbm5lbDsKQEAgLTUzLDggKzU2LDEw
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgcmVtb3RlQ29udHJvbEFsbG93ZWQoKSBjb25z
dCA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoTWVzc2FnZUZyb21SZW1vdGUoY29uc3Qg
U3RyaW5nJiBtZXNzYWdlKSA9IDA7CiAKKyNpZiBVU0UoQ0YpCiAgICAgLy8gVGhlIGRpc3BhdGNo
IGJsb2NrIHdpbGwgYmUgc2NoZWR1bGVkIG9uIGEgZ2xvYmFsIHJ1biBsb29wIGlmIG51bGwgaXMg
cmV0dXJuZWQuCiAgICAgdmlydHVhbCBDRlJ1bkxvb3BSZWYgdGFyZ2V0UnVuTG9vcCgpIHsgcmV0
dXJuIG51bGxwdHI7IH0KKyNlbmRpZgogcHJpdmF0ZToKICAgICB1bnNpZ25lZCBtX2lkZW50aWZp
ZXIgezB9OwogfTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3Rl
L1JlbW90ZUluc3BlY3Rpb25UYXJnZXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0aW9uVGFyZ2V0LmgJKHJldmlzaW9u
IDIxMjQyMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90
ZUluc3BlY3Rpb25UYXJnZXQuaAkod29ya2luZyBjb3B5KQpAQCAtNDEsOCArNDEsMTAgQEAgcHVi
bGljOgogICAgIGJvb2wgcmVtb3RlRGVidWdnaW5nQWxsb3dlZCgpIGNvbnN0IHsgcmV0dXJuIG1f
YWxsb3dlZDsgfQogICAgIHZvaWQgc2V0UmVtb3RlRGVidWdnaW5nQWxsb3dlZChib29sKTsKIAor
I2lmIFVTRShDRikKICAgICBDRlJ1bkxvb3BSZWYgdGFyZ2V0UnVuTG9vcCgpIG92ZXJyaWRlIHsg
cmV0dXJuIG1fcnVuTG9vcC5nZXQoKTsgfQogICAgIHZvaWQgc2V0VGFyZ2V0UnVuTG9vcChDRlJ1
bkxvb3BSZWYgcnVuTG9vcCkgeyBtX3J1bkxvb3AgPSBydW5Mb29wOyB9CisjZW5kaWYKIAogICAg
IHZpcnR1YWwgU3RyaW5nIG5hbWUoKSBjb25zdCB7IHJldHVybiBTdHJpbmcoKTsgfSAvLyBKYXZh
U2NyaXB0IGFuZCBXZWIKICAgICB2aXJ0dWFsIFN0cmluZyB1cmwoKSBjb25zdCB7IHJldHVybiBT
dHJpbmcoKTsgfSAvLyBXZWIKQEAgLTU5LDcgKzYxLDkgQEAgcHVibGljOgogICAgIGJvb2wgcmVt
b3RlQ29udHJvbEFsbG93ZWQoKSBjb25zdCBvdmVycmlkZTsKIHByaXZhdGU6CiAgICAgYm9vbCBt
X2FsbG93ZWQge2ZhbHNlfTsKKyNpZiBVU0UoQ0YpCiAgICAgUmV0YWluUHRyPENGUnVuTG9vcFJl
Zj4gbV9ydW5Mb29wOworI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3Rv
ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3Rl
L1JlbW90ZUluc3BlY3Rvci5oCShyZXZpc2lvbiAyMTI0MjMpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3IuaAkod29ya2luZyBjb3B5KQpA
QCAtMjcsMTQgKzI3LDE4IEBACiAKICNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKIAotI2lt
cG9ydCAiUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbi5oIgotI2ltcG9ydCA8d3RmL0Zvcndh
cmQuaD4KLSNpbXBvcnQgPHd0Zi9IYXNoTWFwLmg+Ci0jaW1wb3J0IDx3dGYvTG9jay5oPgotI2lt
cG9ydCA8d3RmL1JldGFpblB0ci5oPgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVk
ZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvTG9jay5oPgorCisjaWYgUExBVEZPUk0o
Q09DT0EpCisjaW5jbHVkZSAiUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbi5oIgorI2luY2x1
ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KIAogT0JKQ19DTEFTUyBOU0RpY3Rpb25hcnk7CiBPQkpDX0NM
QVNTIE5TU3RyaW5nOwordHlwZWRlZiBSZXRhaW5QdHI8TlNEaWN0aW9uYXJ5PiBUYXJnZXRMaXN0
aW5nOworI2VuZGlmCiAKIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCkBAIC00NCw3ICs0OCwxMSBA
QCBjbGFzcyBSZW1vdGVDb250cm9sbGFibGVUYXJnZXQ7CiBjbGFzcyBSZW1vdGVJbnNwZWN0aW9u
VGFyZ2V0OwogY2xhc3MgUmVtb3RlSW5zcGVjdG9yQ2xpZW50OwogCi1jbGFzcyBKU19FWFBPUlRf
UFJJVkFURSBSZW1vdGVJbnNwZWN0b3IgZmluYWwgOiBwdWJsaWMgUmVtb3RlSW5zcGVjdG9yWFBD
Q29ubmVjdGlvbjo6Q2xpZW50IHsKK2NsYXNzIEpTX0VYUE9SVF9QUklWQVRFIFJlbW90ZUluc3Bl
Y3RvciBmaW5hbAorI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIDogcHVibGljIFJlbW90ZUluc3Bl
Y3RvclhQQ0Nvbm5lY3Rpb246OkNsaWVudAorI2VuZGlmCit7CiBwdWJsaWM6CiAgICAgY2xhc3Mg
Q2xpZW50IHsKICAgICBwdWJsaWM6CkBAIC04MCwxMSArODgsMTMgQEAgcHVibGljOgogICAgIHZv
aWQgc3RhcnQoKTsKICAgICB2b2lkIHN0b3AoKTsKIAorI2lmIFBMQVRGT1JNKENPQ09BKQogICAg
IGJvb2wgaGFzUGFyZW50UHJvY2Vzc0luZm9ybWF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9wYXJl
bnRQcm9jZXNzSWRlbnRpZmllciAhPSAwOyB9CiAgICAgcGlkX3QgcGFyZW50UHJvY2Vzc0lkZW50
aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX3BhcmVudFByb2Nlc3NJZGVudGlmaWVyOyB9CiAgICAg
UmV0YWluUHRyPENGRGF0YVJlZj4gcGFyZW50UHJvY2Vzc0F1ZGl0RGF0YSgpIGNvbnN0IHsgcmV0
dXJuIG1fcGFyZW50UHJvY2Vzc0F1ZGl0RGF0YTsgfQogICAgIHZvaWQgc2V0UGFyZW50UHJvY2Vz
c0luZm9ybWF0aW9uKHBpZF90LCBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBhdWRpdERhdGEpOwogICAg
IHZvaWQgc2V0UGFyZW50UHJvY2Vzc0luZm9tYXRpb25Jc0RlbGF5ZWQoKTsKKyNlbmRpZgogCiBw
cml2YXRlOgogICAgIFJlbW90ZUluc3BlY3RvcigpOwpAQCAtOTQsMTEgKzEwNCwxNCBAQCBwcml2
YXRlOgogICAgIGVudW0gY2xhc3MgU3RvcFNvdXJjZSB7IEFQSSwgWFBDTWVzc2FnZSB9OwogICAg
IHZvaWQgc3RvcEludGVybmFsKFN0b3BTb3VyY2UpOwogCisjaWYgUExBVEZPUk0oQ09DT0EpCiAg
ICAgdm9pZCBzZXR1cFhQQ0Nvbm5lY3Rpb25JZk5lZWRlZCgpOworI2VuZGlmCisKKyAgICBUYXJn
ZXRMaXN0aW5nIGxpc3RpbmdGb3JUYXJnZXQoY29uc3QgUmVtb3RlQ29udHJvbGxhYmxlVGFyZ2V0
JikgY29uc3Q7CisgICAgVGFyZ2V0TGlzdGluZyBsaXN0aW5nRm9ySW5zcGVjdGlvblRhcmdldChj
b25zdCBSZW1vdGVJbnNwZWN0aW9uVGFyZ2V0JikgY29uc3Q7CisgICAgVGFyZ2V0TGlzdGluZyBs
aXN0aW5nRm9yQXV0b21hdGlvblRhcmdldChjb25zdCBSZW1vdGVBdXRvbWF0aW9uVGFyZ2V0Jikg
Y29uc3Q7CiAKLSAgICBSZXRhaW5QdHI8TlNEaWN0aW9uYXJ5PiBsaXN0aW5nRm9yVGFyZ2V0KGNv
bnN0IFJlbW90ZUNvbnRyb2xsYWJsZVRhcmdldCYpIGNvbnN0OwotICAgIFJldGFpblB0cjxOU0Rp
Y3Rpb25hcnk+IGxpc3RpbmdGb3JJbnNwZWN0aW9uVGFyZ2V0KGNvbnN0IFJlbW90ZUluc3BlY3Rp
b25UYXJnZXQmKSBjb25zdDsKLSAgICBSZXRhaW5QdHI8TlNEaWN0aW9uYXJ5PiBsaXN0aW5nRm9y
QXV0b21hdGlvblRhcmdldChjb25zdCBSZW1vdGVBdXRvbWF0aW9uVGFyZ2V0JikgY29uc3Q7CiAg
ICAgdm9pZCBwdXNoTGlzdGluZ3NOb3coKTsKICAgICB2b2lkIHB1c2hMaXN0aW5nc1Nvb24oKTsK
IApAQCAtMTEwLDYgKzEyMyw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHNlbmRBdXRvbWF0aWNJ
bnNwZWN0aW9uQ2FuZGlkYXRlTWVzc2FnZSgpOwogCisjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAg
dm9pZCB4cGNDb25uZWN0aW9uUmVjZWl2ZWRNZXNzYWdlKFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5l
Y3Rpb24qLCBOU1N0cmluZyAqbWVzc2FnZU5hbWUsIE5TRGljdGlvbmFyeSAqdXNlckluZm8pIG92
ZXJyaWRlOwogICAgIHZvaWQgeHBjQ29ubmVjdGlvbkZhaWxlZChSZW1vdGVJbnNwZWN0b3JYUEND
b25uZWN0aW9uKikgb3ZlcnJpZGU7CiAgICAgdm9pZCB4cGNDb25uZWN0aW9uVW5oYW5kbGVkTWVz
c2FnZShSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uKiwgeHBjX29iamVjdF90KSBvdmVycmlk
ZTsKQEAgLTEyNCw2ICsxMzgsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVjZWl2ZWRBdXRvbWF0
aWNJbnNwZWN0aW9uQ29uZmlndXJhdGlvbk1lc3NhZ2UoTlNEaWN0aW9uYXJ5ICp1c2VySW5mbyk7
CiAgICAgdm9pZCByZWNlaXZlZEF1dG9tYXRpY0luc3BlY3Rpb25SZWplY3RNZXNzYWdlKE5TRGlj
dGlvbmFyeSAqdXNlckluZm8pOwogICAgIHZvaWQgcmVjZWl2ZWRBdXRvbWF0aW9uU2Vzc2lvblJl
cXVlc3RNZXNzYWdlKE5TRGljdGlvbmFyeSAqdXNlckluZm8pOworI2VuZGlmCiAKICAgICBzdGF0
aWMgYm9vbCBzdGFydEVuYWJsZWQ7CiAKQEAgLTEzNCwxNSArMTQ5LDE5IEBAIHByaXZhdGU6CiAg
ICAgTG9jayBtX211dGV4OwogCiAgICAgSGFzaE1hcDx1bnNpZ25lZCwgUmVtb3RlQ29udHJvbGxh
YmxlVGFyZ2V0Kj4gbV90YXJnZXRNYXA7Ci0gICAgSGFzaE1hcDx1bnNpZ25lZCwgUmV0YWluUHRy
PE5TRGljdGlvbmFyeT4+IG1fdGFyZ2V0TGlzdGluZ01hcDsKICAgICBIYXNoTWFwPHVuc2lnbmVk
LCBSZWZQdHI8UmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0Pj4gbV90YXJnZXRDb25uZWN0aW9uTWFw
OworICAgIEhhc2hNYXA8dW5zaWduZWQsIFRhcmdldExpc3Rpbmc+IG1fdGFyZ2V0TGlzdGluZ01h
cDsKIAorI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIFJlZlB0cjxSZW1vdGVJbnNwZWN0b3JYUEND
b25uZWN0aW9uPiBtX3JlbGF5Q29ubmVjdGlvbjsKKyNlbmRpZgogCiAgICAgUmVtb3RlSW5zcGVj
dG9yOjpDbGllbnQqIG1fY2xpZW50IHsgbnVsbHB0ciB9OwogICAgIHN0ZDo6b3B0aW9uYWw8UmVt
b3RlSW5zcGVjdG9yOjpDbGllbnQ6OkNhcGFiaWxpdGllcz4gbV9jbGllbnRDYXBhYmlsaXRpZXM7
CiAKKyNpZiBQTEFURk9STShDT0NPQSkKICAgICBkaXNwYXRjaF9xdWV1ZV90IG1feHBjUXVldWU7
CisjZW5kaWYKICAgICB1bnNpZ25lZCBtX25leHRBdmFpbGFibGVUYXJnZXRJZGVudGlmaWVyIHsg
MSB9OwogICAgIGludCBtX25vdGlmeVRva2VuIHsgMCB9OwogICAgIGJvb2wgbV9lbmFibGVkIHsg
ZmFsc2UgfTsKQEAgLTE1MCw3ICsxNjksOSBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9wdXNoU2No
ZWR1bGVkIHsgZmFsc2UgfTsKIAogICAgIHBpZF90IG1fcGFyZW50UHJvY2Vzc0lkZW50aWZpZXIg
eyAwIH07CisjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgUmV0YWluUHRyPENGRGF0YVJlZj4gbV9w
YXJlbnRQcm9jZXNzQXVkaXREYXRhOworI2VuZGlmCiAgICAgYm9vbCBtX3Nob3VsZFNlbmRQYXJl
bnRQcm9jZXNzSW5mb3JtYXRpb24geyBmYWxzZSB9OwogICAgIGJvb2wgbV9hdXRvbWF0aWNJbnNw
ZWN0aW9uRW5hYmxlZCB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2F1dG9tYXRpY0luc3BlY3Rpb25Q
YXVzZWQgeyBmYWxzZSB9OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9y
ZW1vdGUvUmVtb3RlSW5zcGVjdG9yLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3Rvci5tbQkocmV2aXNpb24gMjEyNDIz
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVj
dG9yLm1tCShub25leGlzdGVudCkKQEAgLTEsODU3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTMtMjAxNiBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0g
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbXBvcnQgImNvbmZpZy5oIgotI2lt
cG9ydCAiUmVtb3RlSW5zcGVjdG9yLmgiCi0KLSNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikK
LQotI2ltcG9ydCAiSW5pdGlhbGl6ZVRocmVhZGluZy5oIgotI2ltcG9ydCAiUmVtb3RlQXV0b21h
dGlvblRhcmdldC5oIgotI2ltcG9ydCAiUmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0LmgiCi0jaW1w
b3J0ICJSZW1vdGVJbnNwZWN0aW9uVGFyZ2V0LmgiCi0jaW1wb3J0ICJSZW1vdGVJbnNwZWN0b3JD
b25zdGFudHMuaCIKLSNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgotI2ltcG9ydCA8
ZGlzcGF0Y2gvZGlzcGF0Y2guaD4KLSNpbXBvcnQgPG5vdGlmeS5oPgotI2ltcG9ydCA8d3RmL0Fz
c2VydGlvbnMuaD4KLSNpbXBvcnQgPHd0Zi9NYWluVGhyZWFkLmg+Ci0jaW1wb3J0IDx3dGYvTmV2
ZXJEZXN0cm95ZWQuaD4KLSNpbXBvcnQgPHd0Zi9zcGkvZGFyd2luL1NhbmRib3hTUEkuaD4KLSNp
bXBvcnQgPHd0Zi9zcGkvZGFyd2luL1hQQ1NQSS5oPgotI2ltcG9ydCA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+Ci0KLW5hbWVzcGFjZSBJbnNwZWN0b3IgewotCi1zdGF0aWMgYm9vbCBjYW5BY2Nlc3NX
ZWJJbnNwZWN0b3JNYWNoUG9ydCgpCi17Ci0gICAgcmV0dXJuIHNhbmRib3hfY2hlY2soZ2V0cGlk
KCksICJtYWNoLWxvb2t1cCIsIHN0YXRpY19jYXN0PGVudW0gc2FuZGJveF9maWx0ZXJfdHlwZT4o
U0FOREJPWF9GSUxURVJfR0xPQkFMX05BTUUgfCBTQU5EQk9YX0NIRUNLX05PX1JFUE9SVCksIFdJ
UlhQQ01hY2hQb3J0TmFtZSkgPT0gMDsKLX0KLQotc3RhdGljIGJvb2wgZ2xvYmFsQXV0b21hdGlj
SW5zcGVjdGlvblN0YXRlKCkKLXsKLSAgICBpbnQgdG9rZW4gPSAwOwotICAgIGlmIChub3RpZnlf
cmVnaXN0ZXJfY2hlY2soV0lSQXV0b21hdGljSW5zcGVjdGlvbkVuYWJsZWRTdGF0ZSwgJnRva2Vu
KSAhPSBOT1RJRllfU1RBVFVTX09LKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICB1aW50
NjRfdCBhdXRvbWF0aWNJbnNwZWN0aW9uRW5hYmxlZCA9IDA7Ci0gICAgbm90aWZ5X2dldF9zdGF0
ZSh0b2tlbiwgJmF1dG9tYXRpY0luc3BlY3Rpb25FbmFibGVkKTsKLSAgICByZXR1cm4gYXV0b21h
dGljSW5zcGVjdGlvbkVuYWJsZWQgPT0gMTsKLX0KLQotYm9vbCBSZW1vdGVJbnNwZWN0b3I6OnN0
YXJ0RW5hYmxlZCA9IHRydWU7Ci0KLXZvaWQgUmVtb3RlSW5zcGVjdG9yOjpzdGFydERpc2FibGVk
KCkKLXsKLSAgICBSZW1vdGVJbnNwZWN0b3I6OnN0YXJ0RW5hYmxlZCA9IGZhbHNlOwotfQotCi1S
ZW1vdGVJbnNwZWN0b3ImIFJlbW90ZUluc3BlY3Rvcjo6c2luZ2xldG9uKCkKLXsKLSAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQ8UmVtb3RlSW5zcGVjdG9yPiBzaGFyZWQ7Ci0KLSAgICBzdGF0aWMg
ZGlzcGF0Y2hfb25jZV90IG9uY2U7Ci0gICAgZGlzcGF0Y2hfb25jZSgmb25jZSwgXnsKLSAgICAg
ICAgaWYgKGNhbkFjY2Vzc1dlYkluc3BlY3Rvck1hY2hQb3J0KCkpIHsKLSAgICAgICAgICAgIGRp
c3BhdGNoX2Jsb2NrX3QgaW5pdGlhbGl6ZSA9IF57Ci0gICAgICAgICAgICAgICAgV1RGOjppbml0
aWFsaXplTWFpblRocmVhZCgpOwotICAgICAgICAgICAgICAgIEpTQzo6aW5pdGlhbGl6ZVRocmVh
ZGluZygpOwotICAgICAgICAgICAgICAgIGlmIChSZW1vdGVJbnNwZWN0b3I6OnN0YXJ0RW5hYmxl
ZCkKLSAgICAgICAgICAgICAgICAgICAgc2hhcmVkLmdldCgpLnN0YXJ0KCk7Ci0gICAgICAgICAg
ICB9OwotCi0gICAgICAgICAgICBpZiAoW05TVGhyZWFkIGlzTWFpblRocmVhZF0pCi0gICAgICAg
ICAgICAgICAgaW5pdGlhbGl6ZSgpOwotICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAg
ICAgLy8gRklYTUU6IFRoaXMgbWVhbnMgdGhhdCB3ZSBtYXkgbWlzcyBhbiBhdXRvLWF0dGFjaCB0
byBhIEpTQ29udGV4dCBjcmVhdGVkIG9uIGEgbm9uLW1haW4gdGhyZWFkLgotICAgICAgICAgICAg
ICAgIC8vIFRoZSBtYWluIHRocmVhZCBpbml0aWFsaXphdGlvbiBpcyByZXF1aXJlZCBmb3IgY2Vy
dGFpbiBXVEYgdmFsdWVzIHRoYXQgbmVlZCB0byBiZSBpbml0aWFsaXplZAotICAgICAgICAgICAg
ICAgIC8vIG9uIHRoZSAicmVhbCIgbWFpbiB0aHJlYWQuIFdlIHNob3VsZCBpbnZlc3RpZ2F0ZSBh
IGJldHRlciB3YXkgdG8gaGFuZGxlIHRoaXMuCi0gICAgICAgICAgICAgICAgZGlzcGF0Y2hfYXN5
bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgaW5pdGlhbGl6ZSk7Ci0gICAgICAgICAgICB9
Ci0gICAgICAgIH0KLSAgICB9KTsKLQotICAgIHJldHVybiBzaGFyZWQ7Ci19Ci0KLVJlbW90ZUlu
c3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yKCkKLSAgICA6IG1feHBjUXVldWUoZGlzcGF0Y2hfcXVl
dWVfY3JlYXRlKCJjb20uYXBwbGUuSmF2YVNjcmlwdENvcmUucmVtb3RlLWluc3BlY3Rvci14cGMi
LCBESVNQQVRDSF9RVUVVRV9TRVJJQUwpKQotewotfQotCi11bnNpZ25lZCBSZW1vdGVJbnNwZWN0
b3I6Om5leHRBdmFpbGFibGVUYXJnZXRJZGVudGlmaWVyKCkKLXsKLSAgICB1bnNpZ25lZCBuZXh0
VmFsaWRUYXJnZXRJZGVudGlmaWVyOwotICAgIGRvIHsKLSAgICAgICAgbmV4dFZhbGlkVGFyZ2V0
SWRlbnRpZmllciA9IG1fbmV4dEF2YWlsYWJsZVRhcmdldElkZW50aWZpZXIrKzsKLSAgICB9IHdo
aWxlICghbmV4dFZhbGlkVGFyZ2V0SWRlbnRpZmllciB8fCBuZXh0VmFsaWRUYXJnZXRJZGVudGlm
aWVyID09IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSB8fCBtX3RhcmdldE1h
cC5jb250YWlucyhuZXh0VmFsaWRUYXJnZXRJZGVudGlmaWVyKSk7Ci0gICAgcmV0dXJuIG5leHRW
YWxpZFRhcmdldElkZW50aWZpZXI7Ci19Ci0KLXZvaWQgUmVtb3RlSW5zcGVjdG9yOjpyZWdpc3Rl
clRhcmdldChSZW1vdGVDb250cm9sbGFibGVUYXJnZXQqIHRhcmdldCkKLXsKLSAgICBBU1NFUlRf
QVJHKHRhcmdldCwgdGFyZ2V0KTsKLQotICAgIHN0ZDo6bG9ja19ndWFyZDxMb2NrPiBsb2NrKG1f
bXV0ZXgpOwotCi0gICAgdW5zaWduZWQgdGFyZ2V0SWRlbnRpZmllciA9IG5leHRBdmFpbGFibGVU
YXJnZXRJZGVudGlmaWVyKCk7Ci0gICAgdGFyZ2V0LT5zZXRUYXJnZXRJZGVudGlmaWVyKHRhcmdl
dElkZW50aWZpZXIpOwotCi0gICAgewotICAgICAgICBhdXRvIHJlc3VsdCA9IG1fdGFyZ2V0TWFw
LnNldCh0YXJnZXRJZGVudGlmaWVyLCB0YXJnZXQpOwotICAgICAgICBBU1NFUlRfVU5VU0VEKHJl
c3VsdCwgcmVzdWx0LmlzTmV3RW50cnkpOwotICAgIH0KLQotICAgIC8vIElmIHJlbW90ZSBjb250
cm9sIGlzIG5vdCBhbGxvd2VkLCBhIG51bGwgbGlzdGluZyBpcyByZXR1cm5lZC4KLSAgICBpZiAo
UmV0YWluUHRyPE5TRGljdGlvbmFyeT4gdGFyZ2V0TGlzdGluZyA9IGxpc3RpbmdGb3JUYXJnZXQo
KnRhcmdldCkpIHsKLSAgICAgICAgYXV0byByZXN1bHQgPSBtX3RhcmdldExpc3RpbmdNYXAuc2V0
KHRhcmdldElkZW50aWZpZXIsIHRhcmdldExpc3RpbmcpOwotICAgICAgICBBU1NFUlRfVU5VU0VE
KHJlc3VsdCwgcmVzdWx0LmlzTmV3RW50cnkpOwotICAgIH0KLQotICAgIHB1c2hMaXN0aW5nc1Nv
b24oKTsKLX0KLQotdm9pZCBSZW1vdGVJbnNwZWN0b3I6OnVucmVnaXN0ZXJUYXJnZXQoUmVtb3Rl
Q29udHJvbGxhYmxlVGFyZ2V0KiB0YXJnZXQpCi17Ci0gICAgQVNTRVJUX0FSRyh0YXJnZXQsIHRh
cmdldCk7Ci0KLSAgICBzdGQ6OmxvY2tfZ3VhcmQ8TG9jaz4gbG9jayhtX211dGV4KTsKLQotICAg
IHVuc2lnbmVkIHRhcmdldElkZW50aWZpZXIgPSB0YXJnZXQtPnRhcmdldElkZW50aWZpZXIoKTsK
LSAgICBpZiAoIXRhcmdldElkZW50aWZpZXIpCi0gICAgICAgIHJldHVybjsKLQotICAgIGJvb2wg
d2FzUmVtb3ZlZCA9IG1fdGFyZ2V0TWFwLnJlbW92ZSh0YXJnZXRJZGVudGlmaWVyKTsKLSAgICBB
U1NFUlRfVU5VU0VEKHdhc1JlbW92ZWQsIHdhc1JlbW92ZWQpOwotCi0gICAgLy8gVGhlIGxpc3Rp
bmcgbWF5IG5ldmVyIGhhdmUgYmVlbiBhZGRlZCBpZiByZW1vdGUgY29udHJvbCBpc24ndCBhbGxv
d2VkLgotICAgIG1fdGFyZ2V0TGlzdGluZ01hcC5yZW1vdmUodGFyZ2V0SWRlbnRpZmllcik7Ci0K
LSAgICBpZiAoYXV0byBjb25uZWN0aW9uVG9UYXJnZXQgPSBtX3RhcmdldENvbm5lY3Rpb25NYXAu
dGFrZSh0YXJnZXRJZGVudGlmaWVyKSkKLSAgICAgICAgY29ubmVjdGlvblRvVGFyZ2V0LT50YXJn
ZXRDbG9zZWQoKTsKLQotICAgIHB1c2hMaXN0aW5nc1Nvb24oKTsKLX0KLQotdm9pZCBSZW1vdGVJ
bnNwZWN0b3I6OnVwZGF0ZVRhcmdldChSZW1vdGVDb250cm9sbGFibGVUYXJnZXQqIHRhcmdldCkK
LXsKLSAgICBBU1NFUlRfQVJHKHRhcmdldCwgdGFyZ2V0KTsKLQotICAgIHN0ZDo6bG9ja19ndWFy
ZDxMb2NrPiBsb2NrKG1fbXV0ZXgpOwotCi0gICAgdW5zaWduZWQgdGFyZ2V0SWRlbnRpZmllciA9
IHRhcmdldC0+dGFyZ2V0SWRlbnRpZmllcigpOwotICAgIGlmICghdGFyZ2V0SWRlbnRpZmllcikK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgewotICAgICAgICBhdXRvIHJlc3VsdCA9IG1fdGFyZ2V0
TWFwLnNldCh0YXJnZXRJZGVudGlmaWVyLCB0YXJnZXQpOwotICAgICAgICBBU1NFUlRfVU5VU0VE
KHJlc3VsdCwgIXJlc3VsdC5pc05ld0VudHJ5KTsKLSAgICB9Ci0KLSAgICAvLyBJZiB0aGUgdGFy
Z2V0IGhhcyBqdXN0IGFsbG93ZWQgcmVtb3RlIGNvbnRyb2wsIHRoZW4gdGhlIGxpc3Rpbmcgd29u
J3QgZXhpc3QgeWV0LgotICAgIC8vIElmIHRoZSB0YXJnZXQgaGFzIG5vIGlkZW50aWZpZXIgcmVt
b3ZlIHRoZSBvbGQgbGlzdGluZy4KLSAgICBpZiAoUmV0YWluUHRyPE5TRGljdGlvbmFyeT4gdGFy
Z2V0TGlzdGluZyA9IGxpc3RpbmdGb3JUYXJnZXQoKnRhcmdldCkpCi0gICAgICAgIG1fdGFyZ2V0
TGlzdGluZ01hcC5zZXQodGFyZ2V0SWRlbnRpZmllciwgdGFyZ2V0TGlzdGluZyk7Ci0gICAgZWxz
ZQotICAgICAgICBtX3RhcmdldExpc3RpbmdNYXAucmVtb3ZlKHRhcmdldElkZW50aWZpZXIpOwot
Ci0gICAgcHVzaExpc3RpbmdzU29vbigpOwotfQotCi12b2lkIFJlbW90ZUluc3BlY3Rvcjo6dXBk
YXRlQXV0b21hdGljSW5zcGVjdGlvbkNhbmRpZGF0ZShSZW1vdGVJbnNwZWN0aW9uVGFyZ2V0KiB0
YXJnZXQpCi17Ci0gICAgQVNTRVJUX0FSRyh0YXJnZXQsIHRhcmdldCk7Ci0gICAgewotICAgICAg
ICBzdGQ6OmxvY2tfZ3VhcmQ8TG9jaz4gbG9jayhtX211dGV4KTsKLQotICAgICAgICB1bnNpZ25l
ZCB0YXJnZXRJZGVudGlmaWVyID0gdGFyZ2V0LT50YXJnZXRJZGVudGlmaWVyKCk7Ci0gICAgICAg
IGlmICghdGFyZ2V0SWRlbnRpZmllcikKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBh
dXRvIHJlc3VsdCA9IG1fdGFyZ2V0TWFwLnNldCh0YXJnZXRJZGVudGlmaWVyLCB0YXJnZXQpOwot
ICAgICAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgIXJlc3VsdC5pc05ld0VudHJ5KTsKLQotICAg
ICAgICAvLyBJZiB0aGUgdGFyZ2V0IGhhcyBqdXN0IGFsbG93ZWQgcmVtb3RlIGNvbnRyb2wsIHRo
ZW4gdGhlIGxpc3Rpbmcgd29uJ3QgZXhpc3QgeWV0LgotICAgICAgICAvLyBJZiB0aGUgdGFyZ2V0
IGhhcyBubyBpZGVudGlmaWVyIHJlbW92ZSB0aGUgb2xkIGxpc3RpbmcuCi0gICAgICAgIGlmIChS
ZXRhaW5QdHI8TlNEaWN0aW9uYXJ5PiB0YXJnZXRMaXN0aW5nID0gbGlzdGluZ0ZvclRhcmdldCgq
dGFyZ2V0KSkKLSAgICAgICAgICAgIG1fdGFyZ2V0TGlzdGluZ01hcC5zZXQodGFyZ2V0SWRlbnRp
ZmllciwgdGFyZ2V0TGlzdGluZyk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fdGFyZ2V0
TGlzdGluZ01hcC5yZW1vdmUodGFyZ2V0SWRlbnRpZmllcik7Ci0KLSAgICAgICAgLy8gRG9uJ3Qg
YWxsb3cgYXV0b21hdGljIGluc3BlY3Rpb24gdW5sZXNzIGl0IGlzIGFsbG93ZWQgb3Igd2UgYXJl
IHN0b3BwZWQuCi0gICAgICAgIGlmICghbV9hdXRvbWF0aWNJbnNwZWN0aW9uRW5hYmxlZCB8fCAh
bV9lbmFibGVkKSB7Ci0gICAgICAgICAgICBwdXNoTGlzdGluZ3NTb29uKCk7Ci0gICAgICAgICAg
ICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGhhbmRs
ZSBtdWx0aXBsZSBkZWJ1Z2dhYmxlcyB0cnlpbmcgdG8gcGF1c2UgYXQgdGhlIHNhbWUgdGltZSBv
biBkaWZmZXJlbnQgdGhyZWFkcy4KLSAgICAgICAgLy8gVG8gbWFrZSB0aGlzIHdvcmsgd2Ugd2ls
bCBuZWVkIHRvIGNoYW5nZSBtX2F1dG9tYXRpY0luc3BlY3Rpb25DYW5kaWRhdGVUYXJnZXRJZGVu
dGlmaWVyIHRvIGJlIGEgcGVyLXRocmVhZCB2YWx1ZS4KLSAgICAgICAgLy8gTXVsdGlwbGUgYXR0
ZW1wdHMgb24gdGhlIHNhbWUgdGhyZWFkIHNob3VsZCBub3QgYmUgcG9zc2libGUgYmVjYXVzZSBv
dXIgbmVzdGVkIHJ1biBsb29wIGlzIGluIGEgc3BlY2lhbCBSV0kgbW9kZS4KLSAgICAgICAgaWYg
KG1fYXV0b21hdGljSW5zcGVjdGlvblBhdXNlZCkgewotICAgICAgICAgICAgTE9HX0VSUk9SKCJT
a2lwcGluZyBBdXRvbWF0aWMgSW5zcGVjdGlvbiBDYW5kaWRhdGUgd2l0aCBwYWdlSWQoJXUpIGJl
Y2F1c2Ugd2UgYXJlIGFscmVhZHkgcGF1c2VkIHdhaXRpbmcgZm9yIHBhZ2VJZCgldSkiLCB0YXJn
ZXRJZGVudGlmaWVyLCBtX2F1dG9tYXRpY0luc3BlY3Rpb25DYW5kaWRhdGVUYXJnZXRJZGVudGlm
aWVyKTsKLSAgICAgICAgICAgIHB1c2hMaXN0aW5nc1Nvb24oKTsKLSAgICAgICAgICAgIHJldHVy
bjsKLSAgICAgICAgfQotCi0gICAgICAgIG1fYXV0b21hdGljSW5zcGVjdGlvblBhdXNlZCA9IHRy
dWU7Ci0gICAgICAgIG1fYXV0b21hdGljSW5zcGVjdGlvbkNhbmRpZGF0ZVRhcmdldElkZW50aWZp
ZXIgPSB0YXJnZXRJZGVudGlmaWVyOwotCi0gICAgICAgIC8vIElmIHdlIGFyZSBwYXVzaW5nIGJl
Zm9yZSB3ZSBoYXZlIGNvbm5lY3RlZCB0byB3ZWJpbnNwZWN0b3JkIHRoZSBjYW5kaWRhdGUgbWVz
c2FnZSB3aWxsIGJlIHNlbnQgYXMgc29vbiBhcyB0aGUgY29ubmVjdGlvbiBpcyBlc3RhYmxpc2hl
ZC4KLSAgICAgICAgaWYgKG1fcmVsYXlDb25uZWN0aW9uKSB7Ci0gICAgICAgICAgICBwdXNoTGlz
dGluZ3NOb3coKTsKLSAgICAgICAgICAgIHNlbmRBdXRvbWF0aWNJbnNwZWN0aW9uQ2FuZGlkYXRl
TWVzc2FnZSgpOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gSW4gY2FzZSBkZWJ1Z2dlcnMgZmFp
bCB0byByZXNwb25kLCBvciB3ZSBjYW5ub3QgY29ubmVjdCB0byB3ZWJpbnNwZWN0b3JkLCBhdXRv
bWF0aWNhbGx5IGNvbnRpbnVlIGFmdGVyIGEgc2hvcnQgcGVyaW9kIG9mIHRpbWUuCi0jaWYgUExB
VEZPUk0oV0FUQ0hPUykKLSAgICAgICAgaW50NjRfdCBkZWJ1Z2dlclRpbWVvdXREZWxheSA9IDU7
Ci0jZWxzZQotICAgICAgICBpbnQ2NF90IGRlYnVnZ2VyVGltZW91dERlbGF5ID0gMTsKLSNlbmRp
ZgotICAgICAgICBkaXNwYXRjaF9hZnRlcihkaXNwYXRjaF90aW1lKERJU1BBVENIX1RJTUVfTk9X
LCBkZWJ1Z2dlclRpbWVvdXREZWxheSAqIE5TRUNfUEVSX1NFQyksIGRpc3BhdGNoX2dldF9nbG9i
YWxfcXVldWUoRElTUEFUQ0hfUVVFVUVfUFJJT1JJVFlfREVGQVVMVCwgMCksIF57Ci0gICAgICAg
ICAgICBzdGQ6OmxvY2tfZ3VhcmQ8TG9jaz4gbG9jayhtX211dGV4KTsKLSAgICAgICAgICAgIGlm
IChtX2F1dG9tYXRpY0luc3BlY3Rpb25DYW5kaWRhdGVUYXJnZXRJZGVudGlmaWVyID09IHRhcmdl
dElkZW50aWZpZXIpIHsKLSAgICAgICAgICAgICAgICBMT0dfRVJST1IoIlNraXBwaW5nIEF1dG9t
YXRpYyBJbnNwZWN0aW9uIENhbmRpZGF0ZSB3aXRoIHBhZ2VJZCgldSkgYmVjYXVzZSB3ZSBmYWls
ZWQgdG8gcmVjZWl2ZSBhIHJlc3BvbnNlIGluIHRpbWUuIiwgbV9hdXRvbWF0aWNJbnNwZWN0aW9u
Q2FuZGlkYXRlVGFyZ2V0SWRlbnRpZmllcik7Ci0gICAgICAgICAgICAgICAgbV9hdXRvbWF0aWNJ
bnNwZWN0aW9uUGF1c2VkID0gZmFsc2U7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0pOwotICAg
IH0KLQotICAgIHRhcmdldC0+cGF1c2VXYWl0aW5nRm9yQXV0b21hdGljSW5zcGVjdGlvbigpOwot
Ci0gICAgewotICAgICAgICBzdGQ6OmxvY2tfZ3VhcmQ8TG9jaz4gbG9jayhtX211dGV4KTsKLQot
ICAgICAgICBBU1NFUlQobV9hdXRvbWF0aWNJbnNwZWN0aW9uQ2FuZGlkYXRlVGFyZ2V0SWRlbnRp
Zmllcik7Ci0gICAgICAgIG1fYXV0b21hdGljSW5zcGVjdGlvbkNhbmRpZGF0ZVRhcmdldElkZW50
aWZpZXIgPSAwOwotICAgIH0KLX0KLQotdm9pZCBSZW1vdGVJbnNwZWN0b3I6OnVwZGF0ZUNsaWVu
dENhcGFiaWxpdGllcygpCi17Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLQotICAgIHN0
ZDo6bG9ja19ndWFyZDxMb2NrPiBsb2NrKG1fbXV0ZXgpOwotCi0gICAgaWYgKCFtX2NsaWVudCkK
LSAgICAgICAgbV9jbGllbnRDYXBhYmlsaXRpZXMgPSBzdGQ6Om51bGxvcHQ7Ci0gICAgZWxzZSB7
Ci0gICAgICAgIFJlbW90ZUluc3BlY3Rvcjo6Q2xpZW50OjpDYXBhYmlsaXRpZXMgdXBkYXRlZENh
cGFiaWxpdGllcyA9IHsKLSAgICAgICAgICAgIG1fY2xpZW50LT5yZW1vdGVBdXRvbWF0aW9uQWxs
b3dlZCgpIC8vIHJlbW90ZUF1dG9tYXRpb25BbGxvd2VkCi0gICAgICAgIH07Ci0KLSAgICAgICAg
bV9jbGllbnRDYXBhYmlsaXRpZXMgPSB1cGRhdGVkQ2FwYWJpbGl0aWVzOwotICAgIH0KLX0KLQot
dm9pZCBSZW1vdGVJbnNwZWN0b3I6OnNldFJlbW90ZUluc3BlY3RvckNsaWVudChSZW1vdGVJbnNw
ZWN0b3I6OkNsaWVudCogY2xpZW50KQotewotICAgIEFTU0VSVF9BUkcoY2xpZW50LCBjbGllbnQp
OwotICAgIEFTU0VSVCghbV9jbGllbnQpOwotCi0gICAgewotICAgICAgICBzdGQ6OmxvY2tfZ3Vh
cmQ8TG9jaz4gbG9jayhtX211dGV4KTsKLSAgICAgICAgbV9jbGllbnQgPSBjbGllbnQ7Ci0gICAg
fQotCi0gICAgLy8gU2VuZCBhbiB1cGRhdGVkIGxpc3RpbmcgdGhhdCBpbmNsdWRlcyB3aGV0aGVy
IHRoZSBjbGllbnQgYWxsb3dzIHJlbW90ZSBhdXRvbWF0aW9uLgotICAgIHVwZGF0ZUNsaWVudENh
cGFiaWxpdGllcygpOwotICAgIHB1c2hMaXN0aW5nc1Nvb24oKTsKLX0KLQotdm9pZCBSZW1vdGVJ
bnNwZWN0b3I6OnNlbmRBdXRvbWF0aWNJbnNwZWN0aW9uQ2FuZGlkYXRlTWVzc2FnZSgpCi17Ci0g
ICAgQVNTRVJUKG1fZW5hYmxlZCk7Ci0gICAgQVNTRVJUKG1fYXV0b21hdGljSW5zcGVjdGlvbkVu
YWJsZWQpOwotICAgIEFTU0VSVChtX2F1dG9tYXRpY0luc3BlY3Rpb25QYXVzZWQpOwotICAgIEFT
U0VSVChtX2F1dG9tYXRpY0luc3BlY3Rpb25DYW5kaWRhdGVUYXJnZXRJZGVudGlmaWVyKTsKLSAg
ICBBU1NFUlQobV9yZWxheUNvbm5lY3Rpb24pOwotCi0gICAgTlNEaWN0aW9uYXJ5ICpkZXRhaWxz
ID0gQHtXSVJUYXJnZXRJZGVudGlmaWVyS2V5OiBAKG1fYXV0b21hdGljSW5zcGVjdGlvbkNhbmRp
ZGF0ZVRhcmdldElkZW50aWZpZXIpfTsKLSAgICBtX3JlbGF5Q29ubmVjdGlvbi0+c2VuZE1lc3Nh
Z2UoV0lSQXV0b21hdGljSW5zcGVjdGlvbkNhbmRpZGF0ZU1lc3NhZ2UsIGRldGFpbHMpOwotfQot
Ci12b2lkIFJlbW90ZUluc3BlY3Rvcjo6c2VuZE1lc3NhZ2VUb1JlbW90ZSh1bnNpZ25lZCB0YXJn
ZXRJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCi17Ci0gICAgc3RkOjpsb2NrX2d1
YXJkPExvY2s+IGxvY2sobV9tdXRleCk7Ci0KLSAgICBpZiAoIW1fcmVsYXlDb25uZWN0aW9uKQot
ICAgICAgICByZXR1cm47Ci0KLSAgICBhdXRvIHRhcmdldENvbm5lY3Rpb24gPSBtX3RhcmdldENv
bm5lY3Rpb25NYXAuZ2V0KHRhcmdldElkZW50aWZpZXIpOwotICAgIGlmICghdGFyZ2V0Q29ubmVj
dGlvbikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgTlNEaWN0aW9uYXJ5ICp1c2VySW5mbyA9IEB7
Ci0gICAgICAgIFdJUlJhd0RhdGFLZXk6IFtzdGF0aWNfY2FzdDxOU1N0cmluZyAqPihtZXNzYWdl
KSBkYXRhVXNpbmdFbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ10sCi0gICAgICAgIFdJUkNv
bm5lY3Rpb25JZGVudGlmaWVyS2V5OiB0YXJnZXRDb25uZWN0aW9uLT5jb25uZWN0aW9uSWRlbnRp
ZmllcigpLAotICAgICAgICBXSVJEZXN0aW5hdGlvbktleTogdGFyZ2V0Q29ubmVjdGlvbi0+ZGVz
dGluYXRpb24oKQotICAgIH07Ci0KLSAgICBtX3JlbGF5Q29ubmVjdGlvbi0+c2VuZE1lc3NhZ2Uo
V0lSUmF3RGF0YU1lc3NhZ2UsIHVzZXJJbmZvKTsKLX0KLQotdm9pZCBSZW1vdGVJbnNwZWN0b3I6
OnNldHVwRmFpbGVkKHVuc2lnbmVkIHRhcmdldElkZW50aWZpZXIpCi17Ci0gICAgc3RkOjpsb2Nr
X2d1YXJkPExvY2s+IGxvY2sobV9tdXRleCk7Ci0KLSAgICBtX3RhcmdldENvbm5lY3Rpb25NYXAu
cmVtb3ZlKHRhcmdldElkZW50aWZpZXIpOwotCi0gICAgaWYgKHRhcmdldElkZW50aWZpZXIgPT0g
bV9hdXRvbWF0aWNJbnNwZWN0aW9uQ2FuZGlkYXRlVGFyZ2V0SWRlbnRpZmllcikKLSAgICAgICAg
bV9hdXRvbWF0aWNJbnNwZWN0aW9uUGF1c2VkID0gZmFsc2U7Ci0KLSAgICB1cGRhdGVIYXNBY3Rp
dmVEZWJ1Z1Nlc3Npb24oKTsKLSAgICB1cGRhdGVUYXJnZXRMaXN0aW5nKHRhcmdldElkZW50aWZp
ZXIpOwotICAgIHB1c2hMaXN0aW5nc1Nvb24oKTsKLX0KLQotdm9pZCBSZW1vdGVJbnNwZWN0b3I6
OnNldHVwQ29tcGxldGVkKHVuc2lnbmVkIHRhcmdldElkZW50aWZpZXIpCi17Ci0gICAgc3RkOjps
b2NrX2d1YXJkPExvY2s+IGxvY2sobV9tdXRleCk7Ci0KLSAgICBpZiAodGFyZ2V0SWRlbnRpZmll
ciA9PSBtX2F1dG9tYXRpY0luc3BlY3Rpb25DYW5kaWRhdGVUYXJnZXRJZGVudGlmaWVyKQotICAg
ICAgICBtX2F1dG9tYXRpY0luc3BlY3Rpb25QYXVzZWQgPSBmYWxzZTsKLX0KLQotYm9vbCBSZW1v
dGVJbnNwZWN0b3I6OndhaXRpbmdGb3JBdXRvbWF0aWNJbnNwZWN0aW9uKHVuc2lnbmVkKQotewot
ICAgIC8vIFdlIGRvbid0IHRha2UgdGhlIGxvY2sgdG8gY2hlY2sgdGhpcyBiZWNhdXNlIHdlIGFz
c3VtZSBpdCB3aWxsIGJlIGNoZWNrZWQgcmVwZWF0ZWRseS4KLSAgICByZXR1cm4gbV9hdXRvbWF0
aWNJbnNwZWN0aW9uUGF1c2VkOwotfQotCi12b2lkIFJlbW90ZUluc3BlY3Rvcjo6Y2xpZW50Q2Fw
YWJpbGl0aWVzRGlkQ2hhbmdlKCkKLXsKLSAgICB1cGRhdGVDbGllbnRDYXBhYmlsaXRpZXMoKTsK
LSAgICBwdXNoTGlzdGluZ3NTb29uKCk7Ci19Ci0KLXZvaWQgUmVtb3RlSW5zcGVjdG9yOjpzdGFy
dCgpCi17Ci0gICAgc3RkOjpsb2NrX2d1YXJkPExvY2s+IGxvY2sobV9tdXRleCk7Ci0KLSAgICBp
ZiAobV9lbmFibGVkKQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX2VuYWJsZWQgPSB0cnVlOwot
Ci0gICAgLy8gTG9hZCB0aGUgaW5pdGlhbCBhdXRvbWF0aWMgaW5zcGVjdGlvbiBzdGF0ZSB3aGVu
IGZpcnN0IHN0YXJ0ZWQsIHNvIHdlIGtub3cgaXQgYmVmb3JlIHdlIGhhdmUgZXZlbiBjb25uZWN0
ZWQgdG8gd2ViaW5zcGVjdG9yZC4KLSAgICBzdGF0aWMgZGlzcGF0Y2hfb25jZV90IG9uY2U7Ci0g
ICAgZGlzcGF0Y2hfb25jZSgmb25jZSwgXnsKLSAgICAgICAgbV9hdXRvbWF0aWNJbnNwZWN0aW9u
RW5hYmxlZCA9IGdsb2JhbEF1dG9tYXRpY0luc3BlY3Rpb25TdGF0ZSgpOwotICAgIH0pOwotCi0g
ICAgbm90aWZ5X3JlZ2lzdGVyX2Rpc3BhdGNoKFdJUlNlcnZpY2VBdmFpbGFibGVOb3RpZmljYXRp
b24sICZtX25vdGlmeVRva2VuLCBtX3hwY1F1ZXVlLCBeKGludCkgewotICAgICAgICBSZW1vdGVJ
bnNwZWN0b3I6OnNpbmdsZXRvbigpLnNldHVwWFBDQ29ubmVjdGlvbklmTmVlZGVkKCk7Ci0gICAg
fSk7Ci0KLSAgICBub3RpZnlfcG9zdChXSVJTZXJ2aWNlQXZhaWxhYmlsaXR5Q2hlY2tOb3RpZmlj
YXRpb24pOwotfQotCi12b2lkIFJlbW90ZUluc3BlY3Rvcjo6c3RvcCgpCi17Ci0gICAgc3RkOjps
b2NrX2d1YXJkPExvY2s+IGxvY2sobV9tdXRleCk7Ci0KLSAgICBzdG9wSW50ZXJuYWwoU3RvcFNv
dXJjZTo6QVBJKTsKLX0KLQotdm9pZCBSZW1vdGVJbnNwZWN0b3I6OnN0b3BJbnRlcm5hbChTdG9w
U291cmNlIHNvdXJjZSkKLXsKLSAgICBpZiAoIW1fZW5hYmxlZCkKLSAgICAgICAgcmV0dXJuOwot
Ci0gICAgbV9lbmFibGVkID0gZmFsc2U7Ci0KLSAgICBtX3B1c2hTY2hlZHVsZWQgPSBmYWxzZTsK
LQotICAgIGZvciAoYXV0byB0YXJnZXRDb25uZWN0aW9uIDogbV90YXJnZXRDb25uZWN0aW9uTWFw
LnZhbHVlcygpKQotICAgICAgICB0YXJnZXRDb25uZWN0aW9uLT5jbG9zZSgpOwotICAgIG1fdGFy
Z2V0Q29ubmVjdGlvbk1hcC5jbGVhcigpOwotCi0gICAgdXBkYXRlSGFzQWN0aXZlRGVidWdTZXNz
aW9uKCk7Ci0KLSAgICBtX2F1dG9tYXRpY0luc3BlY3Rpb25QYXVzZWQgPSBmYWxzZTsKLQotICAg
IGlmIChtX3JlbGF5Q29ubmVjdGlvbikgewotICAgICAgICBzd2l0Y2ggKHNvdXJjZSkgewotICAg
ICAgICBjYXNlIFN0b3BTb3VyY2U6OkFQSToKLSAgICAgICAgICAgIG1fcmVsYXlDb25uZWN0aW9u
LT5jbG9zZSgpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgU3RvcFNvdXJjZTo6
WFBDTWVzc2FnZToKLSAgICAgICAgICAgIG1fcmVsYXlDb25uZWN0aW9uLT5jbG9zZUZyb21NZXNz
YWdlKCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotCi0gICAgICAgIG1fcmVsYXlD
b25uZWN0aW9uID0gbnVsbHB0cjsKLSAgICB9Ci0KLSAgICBub3RpZnlfY2FuY2VsKG1fbm90aWZ5
VG9rZW4pOwotfQotCi12b2lkIFJlbW90ZUluc3BlY3Rvcjo6c2V0dXBYUENDb25uZWN0aW9uSWZO
ZWVkZWQoKQotewotICAgIHN0ZDo6bG9ja19ndWFyZDxMb2NrPiBsb2NrKG1fbXV0ZXgpOwotCi0g
ICAgaWYgKG1fcmVsYXlDb25uZWN0aW9uKQotICAgICAgICByZXR1cm47Ci0KLSAgICB4cGNfY29u
bmVjdGlvbl90IGNvbm5lY3Rpb24gPSB4cGNfY29ubmVjdGlvbl9jcmVhdGVfbWFjaF9zZXJ2aWNl
KFdJUlhQQ01hY2hQb3J0TmFtZSwgbV94cGNRdWV1ZSwgMCk7Ci0gICAgaWYgKCFjb25uZWN0aW9u
KQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX3JlbGF5Q29ubmVjdGlvbiA9IGFkb3B0UmVmKG5l
dyBSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uKGNvbm5lY3Rpb24sIG1feHBjUXVldWUsIHRo
aXMpKTsKLSAgICBtX3JlbGF5Q29ubmVjdGlvbi0+c2VuZE1lc3NhZ2UoQCJzeW4iLCBuaWwpOyAv
LyBTZW5kIGEgc2ltcGxlIG1lc3NhZ2UgdG8gaW5pdGlhbGl6ZSB0aGUgWFBDIGNvbm5lY3Rpb24u
Ci0gICAgeHBjX3JlbGVhc2UoY29ubmVjdGlvbik7Ci0KLSAgICBpZiAobV9hdXRvbWF0aWNJbnNw
ZWN0aW9uQ2FuZGlkYXRlVGFyZ2V0SWRlbnRpZmllcikgewotICAgICAgICAvLyBXZSBhbHJlYWR5
IGhhdmUgYSBkZWJ1Z2dhYmxlIHdhaXRpbmcgdG8gYmUgYXV0b21hdGljYWxseSBpbnNwZWN0ZWQu
Ci0gICAgICAgIHB1c2hMaXN0aW5nc05vdygpOwotICAgICAgICBzZW5kQXV0b21hdGljSW5zcGVj
dGlvbkNhbmRpZGF0ZU1lc3NhZ2UoKTsKLSAgICB9IGVsc2UKLSAgICAgICAgcHVzaExpc3Rpbmdz
U29vbigpOwotfQotCi0jcHJhZ21hIG1hcmsgLSBQcm94eSBBcHBsaWNhdGlvbiBJbmZvcm1hdGlv
bgotCi12b2lkIFJlbW90ZUluc3BlY3Rvcjo6c2V0UGFyZW50UHJvY2Vzc0luZm9ybWF0aW9uKHBp
ZF90IHBpZCwgUmV0YWluUHRyPENGRGF0YVJlZj4gYXVkaXREYXRhKQotewotICAgIHN0ZDo6bG9j
a19ndWFyZDxMb2NrPiBsb2NrKG1fbXV0ZXgpOwotCi0gICAgaWYgKG1fcGFyZW50UHJvY2Vzc0lk
ZW50aWZpZXIgfHwgbV9wYXJlbnRQcm9jZXNzQXVkaXREYXRhKQotICAgICAgICByZXR1cm47Ci0K
LSAgICBtX3BhcmVudFByb2Nlc3NJZGVudGlmaWVyID0gcGlkOwotICAgIG1fcGFyZW50UHJvY2Vz
c0F1ZGl0RGF0YSA9IGF1ZGl0RGF0YTsKLQotICAgIGlmIChtX3Nob3VsZFNlbmRQYXJlbnRQcm9j
ZXNzSW5mb3JtYXRpb24pCi0gICAgICAgIHJlY2VpdmVkUHJveHlBcHBsaWNhdGlvblNldHVwTWVz
c2FnZShuaWwpOwotfQotCi0jcHJhZ21hIG1hcmsgLSBSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0
aW9uOjpDbGllbnQKLQotdm9pZCBSZW1vdGVJbnNwZWN0b3I6OnhwY0Nvbm5lY3Rpb25SZWNlaXZl
ZE1lc3NhZ2UoUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbiosIE5TU3RyaW5nICptZXNzYWdl
TmFtZSwgTlNEaWN0aW9uYXJ5ICp1c2VySW5mbykKLXsKLSAgICBzdGQ6OmxvY2tfZ3VhcmQ8TG9j
az4gbG9jayhtX211dGV4KTsKLQotICAgIGlmIChbbWVzc2FnZU5hbWUgaXNFcXVhbFRvU3RyaW5n
OldJUlBlcm1pc3Npb25EZW5pZWRdKSB7Ci0gICAgICAgIHN0b3BJbnRlcm5hbChTdG9wU291cmNl
OjpYUENNZXNzYWdlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChbbWVzc2Fn
ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOldJUlNvY2tldERhdGFNZXNzYWdlXSkKLSAgICAgICAgcmVj
ZWl2ZWREYXRhTWVzc2FnZSh1c2VySW5mbyk7Ci0gICAgZWxzZSBpZiAoW21lc3NhZ2VOYW1lIGlz
RXF1YWxUb1N0cmluZzpXSVJTb2NrZXRTZXR1cE1lc3NhZ2VdKQotICAgICAgICByZWNlaXZlZFNl
dHVwTWVzc2FnZSh1c2VySW5mbyk7Ci0gICAgZWxzZSBpZiAoW21lc3NhZ2VOYW1lIGlzRXF1YWxU
b1N0cmluZzpXSVJXZWJQYWdlQ2xvc2VNZXNzYWdlXSkKLSAgICAgICAgcmVjZWl2ZWREaWRDbG9z
ZU1lc3NhZ2UodXNlckluZm8pOwotICAgIGVsc2UgaWYgKFttZXNzYWdlTmFtZSBpc0VxdWFsVG9T
dHJpbmc6V0lSQXBwbGljYXRpb25HZXRMaXN0aW5nTWVzc2FnZV0pCi0gICAgICAgIHJlY2VpdmVk
R2V0TGlzdGluZ01lc3NhZ2UodXNlckluZm8pOwotICAgIGVsc2UgaWYgKFttZXNzYWdlTmFtZSBp
c0VxdWFsVG9TdHJpbmc6V0lSSW5kaWNhdGVNZXNzYWdlXSkKLSAgICAgICAgcmVjZWl2ZWRJbmRp
Y2F0ZU1lc3NhZ2UodXNlckluZm8pOwotICAgIGVsc2UgaWYgKFttZXNzYWdlTmFtZSBpc0VxdWFs
VG9TdHJpbmc6V0lSUHJveHlBcHBsaWNhdGlvblNldHVwTWVzc2FnZV0pCi0gICAgICAgIHJlY2Vp
dmVkUHJveHlBcHBsaWNhdGlvblNldHVwTWVzc2FnZSh1c2VySW5mbyk7Ci0gICAgZWxzZSBpZiAo
W21lc3NhZ2VOYW1lIGlzRXF1YWxUb1N0cmluZzpXSVJDb25uZWN0aW9uRGllZE1lc3NhZ2VdKQot
ICAgICAgICByZWNlaXZlZENvbm5lY3Rpb25EaWVkTWVzc2FnZSh1c2VySW5mbyk7Ci0gICAgZWxz
ZSBpZiAoW21lc3NhZ2VOYW1lIGlzRXF1YWxUb1N0cmluZzpXSVJBdXRvbWF0aWNJbnNwZWN0aW9u
Q29uZmlndXJhdGlvbk1lc3NhZ2VdKQotICAgICAgICByZWNlaXZlZEF1dG9tYXRpY0luc3BlY3Rp
b25Db25maWd1cmF0aW9uTWVzc2FnZSh1c2VySW5mbyk7Ci0gICAgZWxzZSBpZiAoW21lc3NhZ2VO
YW1lIGlzRXF1YWxUb1N0cmluZzpXSVJBdXRvbWF0aWNJbnNwZWN0aW9uUmVqZWN0TWVzc2FnZV0p
Ci0gICAgICAgIHJlY2VpdmVkQXV0b21hdGljSW5zcGVjdGlvblJlamVjdE1lc3NhZ2UodXNlcklu
Zm8pOwotICAgIGVsc2UgaWYgKFttZXNzYWdlTmFtZSBpc0VxdWFsVG9TdHJpbmc6V0lSQXV0b21h
dGlvblNlc3Npb25SZXF1ZXN0TWVzc2FnZV0pCi0gICAgICAgIHJlY2VpdmVkQXV0b21hdGlvblNl
c3Npb25SZXF1ZXN0TWVzc2FnZSh1c2VySW5mbyk7Ci0gICAgZWxzZQotICAgICAgICBOU0xvZyhA
IlVucmVjb2duaXplZCBSZW1vdGVJbnNwZWN0b3IgWFBDIE1lc3NhZ2U6ICVAIiwgbWVzc2FnZU5h
bWUpOwotfQotCi12b2lkIFJlbW90ZUluc3BlY3Rvcjo6eHBjQ29ubmVjdGlvbkZhaWxlZChSZW1v
dGVJbnNwZWN0b3JYUENDb25uZWN0aW9uKiByZWxheUNvbm5lY3Rpb24pCi17Ci0gICAgc3RkOjps
b2NrX2d1YXJkPExvY2s+IGxvY2sobV9tdXRleCk7Ci0KLSAgICBBU1NFUlQocmVsYXlDb25uZWN0
aW9uID09IG1fcmVsYXlDb25uZWN0aW9uKTsKLSAgICBpZiAocmVsYXlDb25uZWN0aW9uICE9IG1f
cmVsYXlDb25uZWN0aW9uKQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX3B1c2hTY2hlZHVsZWQg
PSBmYWxzZTsKLQotICAgIGZvciAoYXV0byB0YXJnZXRDb25uZWN0aW9uIDogbV90YXJnZXRDb25u
ZWN0aW9uTWFwLnZhbHVlcygpKQotICAgICAgICB0YXJnZXRDb25uZWN0aW9uLT5jbG9zZSgpOwot
ICAgIG1fdGFyZ2V0Q29ubmVjdGlvbk1hcC5jbGVhcigpOwotCi0gICAgdXBkYXRlSGFzQWN0aXZl
RGVidWdTZXNzaW9uKCk7Ci0KLSAgICBtX2F1dG9tYXRpY0luc3BlY3Rpb25QYXVzZWQgPSBmYWxz
ZTsKLQotICAgIC8vIFRoZSBYUEMgY29ubmVjdGlvbiB3aWxsIGNsb3NlIGl0c2VsZi4KLSAgICBt
X3JlbGF5Q29ubmVjdGlvbiA9IG51bGxwdHI7Ci19Ci0KLXZvaWQgUmVtb3RlSW5zcGVjdG9yOjp4
cGNDb25uZWN0aW9uVW5oYW5kbGVkTWVzc2FnZShSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9u
KiwgeHBjX29iamVjdF90KQotewotICAgIC8vIEludGVudGlvbmFsbHkgaWdub3JlZC4KLX0KLQot
I3ByYWdtYSBtYXJrIC0gTGlzdGluZ3MKLQotUmV0YWluUHRyPE5TRGljdGlvbmFyeT4gUmVtb3Rl
SW5zcGVjdG9yOjpsaXN0aW5nRm9yVGFyZ2V0KGNvbnN0IFJlbW90ZUNvbnRyb2xsYWJsZVRhcmdl
dCYgdGFyZ2V0KSBjb25zdAotewotICAgIGlmIChpczxSZW1vdGVJbnNwZWN0aW9uVGFyZ2V0Pih0
YXJnZXQpKQotICAgICAgICByZXR1cm4gbGlzdGluZ0Zvckluc3BlY3Rpb25UYXJnZXQoZG93bmNh
c3Q8UmVtb3RlSW5zcGVjdGlvblRhcmdldD4odGFyZ2V0KSk7Ci0gICAgaWYgKGlzPFJlbW90ZUF1
dG9tYXRpb25UYXJnZXQ+KHRhcmdldCkpCi0gICAgICAgIHJldHVybiBsaXN0aW5nRm9yQXV0b21h
dGlvblRhcmdldChkb3duY2FzdDxSZW1vdGVBdXRvbWF0aW9uVGFyZ2V0Pih0YXJnZXQpKTsKLQot
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBuaWw7Ci19Ci0KLVJldGFpblB0
cjxOU0RpY3Rpb25hcnk+IFJlbW90ZUluc3BlY3Rvcjo6bGlzdGluZ0Zvckluc3BlY3Rpb25UYXJn
ZXQoY29uc3QgUmVtb3RlSW5zcGVjdGlvblRhcmdldCYgdGFyZ2V0KSBjb25zdAotewotICAgIC8v
IE11c3QgY29sbGVjdCB0YXJnZXQgaW5mb3JtYXRpb24gb24gdGhlIFdlYlRocmVhZCwgTWFpbiwg
b3IgV29ya2VyIHRocmVhZCBzaW5jZSBSZW1vdGVUYXJnZXRzIGFyZQotICAgIC8vIGltcGxlbWVu
dGVkIGJ5IG5vbi10aHJlYWRzYWZlIEpTQyAvIFdlYkNvcmUgY2xhc3NlcyBzdWNoIGFzIEpTR2xv
YmFsT2JqZWN0IG9yIFdlYkNvcmU6OlBhZ2UuCi0KLSAgICBpZiAoIXRhcmdldC5yZW1vdGVEZWJ1
Z2dpbmdBbGxvd2VkKCkpCi0gICAgICAgIHJldHVybiBuaWw7Ci0KLSAgICBSZXRhaW5QdHI8TlNN
dXRhYmxlRGljdGlvbmFyeT4gbGlzdGluZyA9IGFkb3B0TlMoW1tOU011dGFibGVEaWN0aW9uYXJ5
IGFsbG9jXSBpbml0XSk7Ci0gICAgW2xpc3Rpbmcgc2V0T2JqZWN0OkAodGFyZ2V0LnRhcmdldElk
ZW50aWZpZXIoKSkgZm9yS2V5OldJUlRhcmdldElkZW50aWZpZXJLZXldOwotCi0gICAgc3dpdGNo
ICh0YXJnZXQudHlwZSgpKSB7Ci0gICAgY2FzZSBSZW1vdGVJbnNwZWN0aW9uVGFyZ2V0OjpUeXBl
OjpKYXZhU2NyaXB0OgotICAgICAgICBbbGlzdGluZyBzZXRPYmplY3Q6dGFyZ2V0Lm5hbWUoKSBm
b3JLZXk6V0lSVGl0bGVLZXldOwotICAgICAgICBbbGlzdGluZyBzZXRPYmplY3Q6V0lSVHlwZUph
dmFTY3JpcHQgZm9yS2V5OldJUlR5cGVLZXldOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFJl
bW90ZUluc3BlY3Rpb25UYXJnZXQ6OlR5cGU6OldlYjoKLSAgICAgICAgW2xpc3Rpbmcgc2V0T2Jq
ZWN0OnRhcmdldC51cmwoKSBmb3JLZXk6V0lSVVJMS2V5XTsKLSAgICAgICAgW2xpc3Rpbmcgc2V0
T2JqZWN0OnRhcmdldC5uYW1lKCkgZm9yS2V5OldJUlRpdGxlS2V5XTsKLSAgICAgICAgW2xpc3Rp
bmcgc2V0T2JqZWN0OldJUlR5cGVXZWIgZm9yS2V5OldJUlR5cGVLZXldOwotICAgICAgICBicmVh
azsKLSAgICBkZWZhdWx0OgotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAg
YnJlYWs7Ci0gICAgfQotCi0gICAgaWYgKGF1dG8qIGNvbm5lY3Rpb25Ub1RhcmdldCA9IG1fdGFy
Z2V0Q29ubmVjdGlvbk1hcC5nZXQodGFyZ2V0LnRhcmdldElkZW50aWZpZXIoKSkpCi0gICAgICAg
IFtsaXN0aW5nIHNldE9iamVjdDpjb25uZWN0aW9uVG9UYXJnZXQtPmNvbm5lY3Rpb25JZGVudGlm
aWVyKCkgZm9yS2V5OldJUkNvbm5lY3Rpb25JZGVudGlmaWVyS2V5XTsKLQotICAgIGlmICh0YXJn
ZXQuaGFzTG9jYWxEZWJ1Z2dlcigpKQotICAgICAgICBbbGlzdGluZyBzZXRPYmplY3Q6QFlFUyBm
b3JLZXk6V0lSSGFzTG9jYWxEZWJ1Z2dlcktleV07Ci0KLSAgICByZXR1cm4gbGlzdGluZzsKLX0K
LQotUmV0YWluUHRyPE5TRGljdGlvbmFyeT4gUmVtb3RlSW5zcGVjdG9yOjpsaXN0aW5nRm9yQXV0
b21hdGlvblRhcmdldChjb25zdCBSZW1vdGVBdXRvbWF0aW9uVGFyZ2V0JiB0YXJnZXQpIGNvbnN0
Ci17Ci0gICAgLy8gTXVzdCBjb2xsZWN0IHRhcmdldCBpbmZvcm1hdGlvbiBvbiB0aGUgV2ViVGhy
ZWFkIG9yIE1haW4gdGhyZWFkIHNpbmNlIFJlbW90ZVRhcmdldHMgYXJlCi0gICAgLy8gaW1wbGVt
ZW50ZWQgYnkgbm9uLXRocmVhZHNhZmUgSlNDIC8gV2ViQ29yZSBjbGFzc2VzIHN1Y2ggYXMgSlNH
bG9iYWxPYmplY3Qgb3IgV2ViQ29yZTo6UGFnZS4KLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkp
OwotCi0gICAgUmV0YWluUHRyPE5TTXV0YWJsZURpY3Rpb25hcnk+IGxpc3RpbmcgPSBhZG9wdE5T
KFtbTlNNdXRhYmxlRGljdGlvbmFyeSBhbGxvY10gaW5pdF0pOwotICAgIFtsaXN0aW5nIHNldE9i
amVjdDpAKHRhcmdldC50YXJnZXRJZGVudGlmaWVyKCkpIGZvcktleTpXSVJUYXJnZXRJZGVudGlm
aWVyS2V5XTsKLSAgICBbbGlzdGluZyBzZXRPYmplY3Q6dGFyZ2V0Lm5hbWUoKSBmb3JLZXk6V0lS
U2Vzc2lvbklkZW50aWZpZXJLZXldOwotICAgIFtsaXN0aW5nIHNldE9iamVjdDpXSVJUeXBlQXV0
b21hdGlvbiBmb3JLZXk6V0lSVHlwZUtleV07Ci0gICAgW2xpc3Rpbmcgc2V0T2JqZWN0OkAodGFy
Z2V0LmlzUGFpcmVkKCkpIGZvcktleTpXSVJBdXRvbWF0aW9uVGFyZ2V0SXNQYWlyZWRLZXldOwot
Ci0gICAgaWYgKGF1dG8gY29ubmVjdGlvblRvVGFyZ2V0ID0gbV90YXJnZXRDb25uZWN0aW9uTWFw
LmdldCh0YXJnZXQudGFyZ2V0SWRlbnRpZmllcigpKSkKLSAgICAgICAgW2xpc3Rpbmcgc2V0T2Jq
ZWN0OmNvbm5lY3Rpb25Ub1RhcmdldC0+Y29ubmVjdGlvbklkZW50aWZpZXIoKSBmb3JLZXk6V0lS
Q29ubmVjdGlvbklkZW50aWZpZXJLZXldOwotCi0gICAgcmV0dXJuIGxpc3Rpbmc7Ci19Ci0KLXZv
aWQgUmVtb3RlSW5zcGVjdG9yOjpwdXNoTGlzdGluZ3NOb3coKQotewotICAgIEFTU0VSVChtX3Jl
bGF5Q29ubmVjdGlvbik7Ci0gICAgaWYgKCFtX3JlbGF5Q29ubmVjdGlvbikKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgbV9wdXNoU2NoZWR1bGVkID0gZmFsc2U7Ci0KLSAgICBSZXRhaW5QdHI8TlNN
dXRhYmxlRGljdGlvbmFyeT4gbGlzdGluZ3MgPSBhZG9wdE5TKFtbTlNNdXRhYmxlRGljdGlvbmFy
eSBhbGxvY10gaW5pdF0pOwotICAgIGZvciAoUmV0YWluUHRyPE5TRGljdGlvbmFyeT4gbGlzdGlu
ZyA6IG1fdGFyZ2V0TGlzdGluZ01hcC52YWx1ZXMoKSkgewotICAgICAgICBOU1N0cmluZyAqdGFy
Z2V0SWRlbnRpZmllclN0cmluZyA9IFtbbGlzdGluZy5nZXQoKSBvYmplY3RGb3JLZXk6V0lSVGFy
Z2V0SWRlbnRpZmllcktleV0gc3RyaW5nVmFsdWVdOwotICAgICAgICBbbGlzdGluZ3Mgc2V0T2Jq
ZWN0Omxpc3RpbmcuZ2V0KCkgZm9yS2V5OnRhcmdldElkZW50aWZpZXJTdHJpbmddOwotICAgIH0K
LQotICAgIFJldGFpblB0cjxOU011dGFibGVEaWN0aW9uYXJ5PiBtZXNzYWdlID0gYWRvcHROUyhb
W05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRdKTsKLSAgICBbbWVzc2FnZSBzZXRPYmpl
Y3Q6bGlzdGluZ3MuZ2V0KCkgZm9yS2V5OldJUkxpc3RpbmdLZXldOwotCi0gICAgQk9PTCBpc0Fs
bG93ZWQgPSBtX2NsaWVudENhcGFiaWxpdGllcyAmJiBtX2NsaWVudENhcGFiaWxpdGllcy0+cmVt
b3RlQXV0b21hdGlvbkFsbG93ZWQ7Ci0gICAgW21lc3NhZ2Ugc2V0T2JqZWN0OkAoaXNBbGxvd2Vk
KSBmb3JLZXk6V0lSUmVtb3RlQXV0b21hdGlvbkVuYWJsZWRLZXldOwotCi0gICAgbV9yZWxheUNv
bm5lY3Rpb24tPnNlbmRNZXNzYWdlKFdJUkxpc3RpbmdNZXNzYWdlLCBtZXNzYWdlLmdldCgpKTsK
LX0KLQotdm9pZCBSZW1vdGVJbnNwZWN0b3I6OnB1c2hMaXN0aW5nc1Nvb24oKQotewotICAgIGlm
ICghbV9yZWxheUNvbm5lY3Rpb24pCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmIChtX3B1c2hT
Y2hlZHVsZWQpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fcHVzaFNjaGVkdWxlZCA9IHRydWU7
Ci0gICAgZGlzcGF0Y2hfYWZ0ZXIoZGlzcGF0Y2hfdGltZShESVNQQVRDSF9USU1FX05PVywgMC4y
ICogTlNFQ19QRVJfU0VDKSwgZGlzcGF0Y2hfZ2V0X2dsb2JhbF9xdWV1ZShESVNQQVRDSF9RVUVV
RV9QUklPUklUWV9ERUZBVUxULCAwKSwgXnsKLSAgICAgICAgc3RkOjpsb2NrX2d1YXJkPExvY2s+
IGxvY2sobV9tdXRleCk7Ci0gICAgICAgIGlmIChtX3B1c2hTY2hlZHVsZWQpCi0gICAgICAgICAg
ICBwdXNoTGlzdGluZ3NOb3coKTsKLSAgICB9KTsKLX0KLQotI3ByYWdtYSBtYXJrIC0gVXBkYXRl
IExpc3Rpbmcgd2l0aCBsb2NrCi0KLXZvaWQgUmVtb3RlSW5zcGVjdG9yOjp1cGRhdGVUYXJnZXRM
aXN0aW5nKHVuc2lnbmVkIHRhcmdldElkZW50aWZpZXIpCi17Ci0gICAgYXV0byB0YXJnZXQgPSBt
X3RhcmdldE1hcC5nZXQodGFyZ2V0SWRlbnRpZmllcik7Ci0gICAgaWYgKCF0YXJnZXQpCi0gICAg
ICAgIHJldHVybjsKLQotICAgIHVwZGF0ZVRhcmdldExpc3RpbmcoKnRhcmdldCk7Ci19Ci0KLXZv
aWQgUmVtb3RlSW5zcGVjdG9yOjp1cGRhdGVUYXJnZXRMaXN0aW5nKGNvbnN0IFJlbW90ZUNvbnRy
b2xsYWJsZVRhcmdldCYgdGFyZ2V0KQotewotICAgIFJldGFpblB0cjxOU0RpY3Rpb25hcnk+IHRh
cmdldExpc3RpbmcgPSBsaXN0aW5nRm9yVGFyZ2V0KHRhcmdldCk7Ci0gICAgaWYgKCF0YXJnZXRM
aXN0aW5nKQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX3RhcmdldExpc3RpbmdNYXAuc2V0KHRh
cmdldC50YXJnZXRJZGVudGlmaWVyKCksIHRhcmdldExpc3RpbmcpOwotfQotCi0jcHJhZ21hIG1h
cmsgLSBBY3RpdmUgRGVidWdnZXIgU2Vzc2lvbnMKLQotdm9pZCBSZW1vdGVJbnNwZWN0b3I6OnVw
ZGF0ZUhhc0FjdGl2ZURlYnVnU2Vzc2lvbigpCi17Ci0gICAgYm9vbCBoYXNBY3RpdmVEZWJ1Z2dl
clNlc3Npb24gPSAhbV90YXJnZXRDb25uZWN0aW9uTWFwLmlzRW1wdHkoKTsKLSAgICBpZiAoaGFz
QWN0aXZlRGVidWdnZXJTZXNzaW9uID09IG1faGFzQWN0aXZlRGVidWdTZXNzaW9uKQotICAgICAg
ICByZXR1cm47Ci0KLSAgICBtX2hhc0FjdGl2ZURlYnVnU2Vzc2lvbiA9IGhhc0FjdGl2ZURlYnVn
Z2VyU2Vzc2lvbjsKLQotICAgIC8vIEZJWE1FOiBFeHBvc2Ugc29tZSB3YXkgdG8gYWNjZXNzIHRo
aXMgc3RhdGUgaW4gYW4gZW1iZWRkZXIuCi0gICAgLy8gTGVnYWN5IGlPUyBXZWJLaXQgMSBoYWQg
YSBub3RpZmljYXRpb24uIFRoaXMgd2lsbCBuZWVkIHRvIGJlIHNtYXJ0ZXIgd2l0aCBXZWJLaXQy
LgotfQotCi0jcHJhZ21hIG1hcmsgLSBSZWNlaXZlZCBYUEMgTWVzc2FnZXMKLQotdm9pZCBSZW1v
dGVJbnNwZWN0b3I6OnJlY2VpdmVkU2V0dXBNZXNzYWdlKE5TRGljdGlvbmFyeSAqdXNlckluZm8p
Ci17Ci0gICAgdW5zaWduZWQgdGFyZ2V0SWRlbnRpZmllciA9IFtbdXNlckluZm8gb2JqZWN0Rm9y
S2V5OldJUlRhcmdldElkZW50aWZpZXJLZXldIHVuc2lnbmVkSW50ZWdlclZhbHVlXTsKLSAgICBp
ZiAoIXRhcmdldElkZW50aWZpZXIpCi0gICAgICAgIHJldHVybjsKLQotICAgIE5TU3RyaW5nICpj
b25uZWN0aW9uSWRlbnRpZmllciA9IFt1c2VySW5mbyBvYmplY3RGb3JLZXk6V0lSQ29ubmVjdGlv
bklkZW50aWZpZXJLZXldOwotICAgIGlmICghY29ubmVjdGlvbklkZW50aWZpZXIpCi0gICAgICAg
IHJldHVybjsKLQotICAgIE5TU3RyaW5nICpzZW5kZXIgPSBbdXNlckluZm8gb2JqZWN0Rm9yS2V5
OldJUlNlbmRlcktleV07Ci0gICAgaWYgKCFzZW5kZXIpCi0gICAgICAgIHJldHVybjsKLQotICAg
IGlmIChtX3RhcmdldENvbm5lY3Rpb25NYXAuY29udGFpbnModGFyZ2V0SWRlbnRpZmllcikpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIGF1dG8gZmluZFJlc3VsdCA9IG1fdGFyZ2V0TWFwLmZpbmQo
dGFyZ2V0SWRlbnRpZmllcik7Ci0gICAgaWYgKGZpbmRSZXN1bHQgPT0gbV90YXJnZXRNYXAuZW5k
KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIC8vIEF0dGVtcHQgdG8gY3JlYXRlIGEgY29ubmVj
dGlvbi4gVGhpcyBtYXkgZmFpbCBpZiB0aGUgcGFnZSBhbHJlYWR5IGhhcyBhbiBpbnNwZWN0b3Ig
b3IgaWYgaXQgZGlzYWxsb3dzIGluc3BlY3Rpb24uCi0gICAgUmVtb3RlQ29udHJvbGxhYmxlVGFy
Z2V0KiB0YXJnZXQgPSBmaW5kUmVzdWx0LT52YWx1ZTsKLSAgICBhdXRvIGNvbm5lY3Rpb25Ub1Rh
cmdldCA9IGFkb3B0UmVmKCpuZXcgUmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0KHRhcmdldCwgY29u
bmVjdGlvbklkZW50aWZpZXIsIHNlbmRlcikpOwotCi0gICAgaWYgKGlzPFJlbW90ZUluc3BlY3Rp
b25UYXJnZXQ+KHRhcmdldCkpIHsKLSAgICAgICAgYm9vbCBpc0F1dG9tYXRpY0luc3BlY3Rpb24g
PSBtX2F1dG9tYXRpY0luc3BlY3Rpb25DYW5kaWRhdGVUYXJnZXRJZGVudGlmaWVyID09IHRhcmdl
dC0+dGFyZ2V0SWRlbnRpZmllcigpOwotICAgICAgICBib29sIGF1dG9tYXRpY2FsbHlQYXVzZSA9
IFtbdXNlckluZm8gb2JqZWN0Rm9yS2V5OldJUkF1dG9tYXRpY2FsbHlQYXVzZV0gYm9vbFZhbHVl
XTsKLQotICAgICAgICBpZiAoIWNvbm5lY3Rpb25Ub1RhcmdldC0+c2V0dXAoaXNBdXRvbWF0aWNJ
bnNwZWN0aW9uLCBhdXRvbWF0aWNhbGx5UGF1c2UpKSB7Ci0gICAgICAgICAgICBjb25uZWN0aW9u
VG9UYXJnZXQtPmNsb3NlKCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAg
ICAgbV90YXJnZXRDb25uZWN0aW9uTWFwLnNldCh0YXJnZXRJZGVudGlmaWVyLCBXVEZNb3ZlKGNv
bm5lY3Rpb25Ub1RhcmdldCkpOwotICAgIH0gZWxzZSBpZiAoaXM8UmVtb3RlQXV0b21hdGlvblRh
cmdldD4odGFyZ2V0KSkgewotICAgICAgICBpZiAoIWNvbm5lY3Rpb25Ub1RhcmdldC0+c2V0dXAo
KSkgewotICAgICAgICAgICAgY29ubmVjdGlvblRvVGFyZ2V0LT5jbG9zZSgpOwotICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIG1fdGFyZ2V0Q29ubmVjdGlvbk1hcC5zZXQo
dGFyZ2V0SWRlbnRpZmllciwgV1RGTW92ZShjb25uZWN0aW9uVG9UYXJnZXQpKTsKLSAgICB9IGVs
c2UKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0KLSAgICB1cGRhdGVIYXNBY3RpdmVE
ZWJ1Z1Nlc3Npb24oKTsKLSAgICB1cGRhdGVUYXJnZXRMaXN0aW5nKCp0YXJnZXQpOwotICAgIHB1
c2hMaXN0aW5nc1Nvb24oKTsKLX0KLQotdm9pZCBSZW1vdGVJbnNwZWN0b3I6OnJlY2VpdmVkRGF0
YU1lc3NhZ2UoTlNEaWN0aW9uYXJ5ICp1c2VySW5mbykKLXsKLSAgICB1bnNpZ25lZCB0YXJnZXRJ
ZGVudGlmaWVyID0gW1t1c2VySW5mbyBvYmplY3RGb3JLZXk6V0lSVGFyZ2V0SWRlbnRpZmllcktl
eV0gdW5zaWduZWRJbnRlZ2VyVmFsdWVdOwotICAgIGlmICghdGFyZ2V0SWRlbnRpZmllcikKLSAg
ICAgICAgcmV0dXJuOwotCi0gICAgYXV0byBjb25uZWN0aW9uVG9UYXJnZXQgPSBtX3RhcmdldENv
bm5lY3Rpb25NYXAuZ2V0KHRhcmdldElkZW50aWZpZXIpOwotICAgIGlmICghY29ubmVjdGlvblRv
VGFyZ2V0KQotICAgICAgICByZXR1cm47Ci0KLSAgICBOU0RhdGEgKmRhdGEgPSBbdXNlckluZm8g
b2JqZWN0Rm9yS2V5OldJUlNvY2tldERhdGFLZXldOwotICAgIFJldGFpblB0cjxOU1N0cmluZz4g
bWVzc2FnZSA9IGFkb3B0TlMoW1tOU1N0cmluZyBhbGxvY10gaW5pdFdpdGhEYXRhOmRhdGEgZW5j
b2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddKTsKLSAgICBjb25uZWN0aW9uVG9UYXJnZXQtPnNl
bmRNZXNzYWdlVG9UYXJnZXQobWVzc2FnZS5nZXQoKSk7Ci19Ci0KLXZvaWQgUmVtb3RlSW5zcGVj
dG9yOjpyZWNlaXZlZERpZENsb3NlTWVzc2FnZShOU0RpY3Rpb25hcnkgKnVzZXJJbmZvKQotewot
ICAgIHVuc2lnbmVkIHRhcmdldElkZW50aWZpZXIgPSBbW3VzZXJJbmZvIG9iamVjdEZvcktleTpX
SVJUYXJnZXRJZGVudGlmaWVyS2V5XSB1bnNpZ25lZEludGVnZXJWYWx1ZV07Ci0gICAgaWYgKCF0
YXJnZXRJZGVudGlmaWVyKQotICAgICAgICByZXR1cm47Ci0KLSAgICBOU1N0cmluZyAqY29ubmVj
dGlvbklkZW50aWZpZXIgPSBbdXNlckluZm8gb2JqZWN0Rm9yS2V5OldJUkNvbm5lY3Rpb25JZGVu
dGlmaWVyS2V5XTsKLSAgICBpZiAoIWNvbm5lY3Rpb25JZGVudGlmaWVyKQotICAgICAgICByZXR1
cm47Ci0KLSAgICBhdXRvIGNvbm5lY3Rpb25Ub1RhcmdldCA9IG1fdGFyZ2V0Q29ubmVjdGlvbk1h
cC5nZXQodGFyZ2V0SWRlbnRpZmllcik7Ci0gICAgaWYgKCFjb25uZWN0aW9uVG9UYXJnZXQpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIGlmICghW2Nvbm5lY3Rpb25JZGVudGlmaWVyIGlzRXF1YWxU
b1N0cmluZzpjb25uZWN0aW9uVG9UYXJnZXQtPmNvbm5lY3Rpb25JZGVudGlmaWVyKCldKQotICAg
ICAgICByZXR1cm47Ci0KLSAgICBjb25uZWN0aW9uVG9UYXJnZXQtPmNsb3NlKCk7Ci0gICAgbV90
YXJnZXRDb25uZWN0aW9uTWFwLnJlbW92ZSh0YXJnZXRJZGVudGlmaWVyKTsKLQotICAgIHVwZGF0
ZUhhc0FjdGl2ZURlYnVnU2Vzc2lvbigpOwotICAgIHVwZGF0ZVRhcmdldExpc3RpbmcodGFyZ2V0
SWRlbnRpZmllcik7Ci0gICAgcHVzaExpc3RpbmdzU29vbigpOwotfQotCi12b2lkIFJlbW90ZUlu
c3BlY3Rvcjo6cmVjZWl2ZWRHZXRMaXN0aW5nTWVzc2FnZShOU0RpY3Rpb25hcnkgKikKLXsKLSAg
ICBwdXNoTGlzdGluZ3NOb3coKTsKLX0KLQotdm9pZCBSZW1vdGVJbnNwZWN0b3I6OnJlY2VpdmVk
SW5kaWNhdGVNZXNzYWdlKE5TRGljdGlvbmFyeSAqdXNlckluZm8pCi17Ci0gICAgdW5zaWduZWQg
aWRlbnRpZmllciA9IFtbdXNlckluZm8gb2JqZWN0Rm9yS2V5OldJUlRhcmdldElkZW50aWZpZXJL
ZXldIHVuc2lnbmVkSW50ZWdlclZhbHVlXTsKLSAgICBpZiAoIWlkZW50aWZpZXIpCi0gICAgICAg
IHJldHVybjsKLQotICAgIEJPT0wgaW5kaWNhdGVFbmFibGVkID0gW1t1c2VySW5mbyBvYmplY3RG
b3JLZXk6V0lSSW5kaWNhdGVFbmFibGVkS2V5XSBib29sVmFsdWVdOwotCi0gICAgY2FsbE9uV2Vi
VGhyZWFkT3JEaXNwYXRjaEFzeW5jT25NYWluVGhyZWFkKF57Ci0gICAgICAgIFJlbW90ZUNvbnRy
b2xsYWJsZVRhcmdldCogdGFyZ2V0ID0gbnVsbHB0cjsKLSAgICAgICAgewotICAgICAgICAgICAg
c3RkOjpsb2NrX2d1YXJkPExvY2s+IGxvY2sobV9tdXRleCk7Ci0KLSAgICAgICAgICAgIGF1dG8g
ZmluZFJlc3VsdCA9IG1fdGFyZ2V0TWFwLmZpbmQoaWRlbnRpZmllcik7Ci0gICAgICAgICAgICBp
ZiAoZmluZFJlc3VsdCA9PSBtX3RhcmdldE1hcC5lbmQoKSkKLSAgICAgICAgICAgICAgICByZXR1
cm47Ci0KLSAgICAgICAgICAgIHRhcmdldCA9IGZpbmRSZXN1bHQtPnZhbHVlOwotICAgICAgICB9
Ci0gICAgICAgIGlmIChpczxSZW1vdGVJbnNwZWN0aW9uVGFyZ2V0Pih0YXJnZXQpKQotICAgICAg
ICAgICAgZG93bmNhc3Q8UmVtb3RlSW5zcGVjdGlvblRhcmdldD4odGFyZ2V0KS0+c2V0SW5kaWNh
dGluZyhpbmRpY2F0ZUVuYWJsZWQpOwotICAgIH0pOwotfQotCi12b2lkIFJlbW90ZUluc3BlY3Rv
cjo6cmVjZWl2ZWRQcm94eUFwcGxpY2F0aW9uU2V0dXBNZXNzYWdlKE5TRGljdGlvbmFyeSAqKQot
ewotICAgIEFTU0VSVChtX3JlbGF5Q29ubmVjdGlvbik7Ci0gICAgaWYgKCFtX3JlbGF5Q29ubmVj
dGlvbikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKCFtX3BhcmVudFByb2Nlc3NJZGVudGlm
aWVyIHx8ICFtX3BhcmVudFByb2Nlc3NBdWRpdERhdGEpIHsKLSAgICAgICAgLy8gV2UgYXJlIGEg
cHJveHkgYXBwbGljYXRpb24gd2l0aG91dCBwYXJlbnQgcHJvY2VzcyBpbmZvcm1hdGlvbi4KLSAg
ICAgICAgLy8gV2FpdCBhIGJpdCBmb3IgdGhlIGluZm9ybWF0aW9uLCBidXQgZ2l2ZSB1cCBhZnRl
ciBhIHNlY29uZC4KLSAgICAgICAgbV9zaG91bGRTZW5kUGFyZW50UHJvY2Vzc0luZm9ybWF0aW9u
ID0gdHJ1ZTsKLSAgICAgICAgZGlzcGF0Y2hfYWZ0ZXIoZGlzcGF0Y2hfdGltZShESVNQQVRDSF9U
SU1FX05PVywgMSAqIE5TRUNfUEVSX1NFQyksIGRpc3BhdGNoX2dldF9nbG9iYWxfcXVldWUoRElT
UEFUQ0hfUVVFVUVfUFJJT1JJVFlfREVGQVVMVCwgMCksIF57Ci0gICAgICAgICAgICBzdGQ6Omxv
Y2tfZ3VhcmQ8TG9jaz4gbG9jayhtX211dGV4KTsKLSAgICAgICAgICAgIGlmIChtX3Nob3VsZFNl
bmRQYXJlbnRQcm9jZXNzSW5mb3JtYXRpb24pCi0gICAgICAgICAgICAgICAgc3RvcEludGVybmFs
KFN0b3BTb3VyY2U6OlhQQ01lc3NhZ2UpOwotICAgICAgICB9KTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLQotICAgIG1fc2hvdWxkU2VuZFBhcmVudFByb2Nlc3NJbmZvcm1hdGlvbiA9IGZhbHNl
OwotCi0gICAgbV9yZWxheUNvbm5lY3Rpb24tPnNlbmRNZXNzYWdlKFdJUlByb3h5QXBwbGljYXRp
b25TZXR1cFJlc3BvbnNlTWVzc2FnZSwgQHsKLSAgICAgICAgV0lSUHJveHlBcHBsaWNhdGlvblBh
cmVudFBJREtleTogQChtX3BhcmVudFByb2Nlc3NJZGVudGlmaWVyKSwKLSAgICAgICAgV0lSUHJv
eHlBcHBsaWNhdGlvblBhcmVudEF1ZGl0RGF0YUtleTogKE5TRGF0YSAqKW1fcGFyZW50UHJvY2Vz
c0F1ZGl0RGF0YS5nZXQoKSwKLSAgICB9KTsKLX0KLQotdm9pZCBSZW1vdGVJbnNwZWN0b3I6OnJl
Y2VpdmVkQ29ubmVjdGlvbkRpZWRNZXNzYWdlKE5TRGljdGlvbmFyeSAqdXNlckluZm8pCi17Ci0g
ICAgTlNTdHJpbmcgKmNvbm5lY3Rpb25JZGVudGlmaWVyID0gW3VzZXJJbmZvIG9iamVjdEZvcktl
eTpXSVJDb25uZWN0aW9uSWRlbnRpZmllcktleV07Ci0gICAgaWYgKCFjb25uZWN0aW9uSWRlbnRp
ZmllcikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgYXV0byBpdCA9IG1fdGFyZ2V0Q29ubmVjdGlv
bk1hcC5iZWdpbigpOwotICAgIGF1dG8gZW5kID0gbV90YXJnZXRDb25uZWN0aW9uTWFwLmVuZCgp
OwotICAgIGZvciAoOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAgaWYgKFtjb25uZWN0aW9u
SWRlbnRpZmllciBpc0VxdWFsVG9TdHJpbmc6aXQtPnZhbHVlLT5jb25uZWN0aW9uSWRlbnRpZmll
cigpXSkKLSAgICAgICAgICAgIGJyZWFrOwotICAgIH0KLQotICAgIGlmIChpdCA9PSBlbmQpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIGF1dG8gY29ubmVjdGlvbiA9IGl0LT52YWx1ZTsKLSAgICB1
bnNpZ25lZCB0YXJnZXRJZGVudGlmaWVyID0gY29ubmVjdGlvbi0+dGFyZ2V0SWRlbnRpZmllcigp
LnZhbHVlX29yKDApOwotICAgIGNvbm5lY3Rpb24tPmNsb3NlKCk7Ci0gICAgbV90YXJnZXRDb25u
ZWN0aW9uTWFwLnJlbW92ZShpdCk7Ci0KLSAgICB1cGRhdGVIYXNBY3RpdmVEZWJ1Z1Nlc3Npb24o
KTsKLSAgICB1cGRhdGVUYXJnZXRMaXN0aW5nKHRhcmdldElkZW50aWZpZXIpOwotICAgIHB1c2hM
aXN0aW5nc1Nvb24oKTsKLX0KLQotdm9pZCBSZW1vdGVJbnNwZWN0b3I6OnJlY2VpdmVkQXV0b21h
dGljSW5zcGVjdGlvbkNvbmZpZ3VyYXRpb25NZXNzYWdlKE5TRGljdGlvbmFyeSAqdXNlckluZm8p
Ci17Ci0gICAgbV9hdXRvbWF0aWNJbnNwZWN0aW9uRW5hYmxlZCA9IFtbdXNlckluZm8gb2JqZWN0
Rm9yS2V5OldJUkF1dG9tYXRpY0luc3BlY3Rpb25FbmFibGVkS2V5XSBib29sVmFsdWVdOwotCi0g
ICAgaWYgKCFtX2F1dG9tYXRpY0luc3BlY3Rpb25FbmFibGVkICYmIG1fYXV0b21hdGljSW5zcGVj
dGlvblBhdXNlZCkKLSAgICAgICAgbV9hdXRvbWF0aWNJbnNwZWN0aW9uUGF1c2VkID0gZmFsc2U7
Ci19Ci0KLXZvaWQgUmVtb3RlSW5zcGVjdG9yOjpyZWNlaXZlZEF1dG9tYXRpY0luc3BlY3Rpb25S
ZWplY3RNZXNzYWdlKE5TRGljdGlvbmFyeSAqdXNlckluZm8pCi17Ci0gICAgdW5zaWduZWQgcmVq
ZWN0aW9uSWRlbnRpZmllciA9IFtbdXNlckluZm8gb2JqZWN0Rm9yS2V5OldJUlRhcmdldElkZW50
aWZpZXJLZXldIHVuc2lnbmVkSW50VmFsdWVdOwotCi0gICAgQVNTRVJUKHJlamVjdGlvbklkZW50
aWZpZXIgPT0gbV9hdXRvbWF0aWNJbnNwZWN0aW9uQ2FuZGlkYXRlVGFyZ2V0SWRlbnRpZmllcik7
Ci0gICAgaWYgKHJlamVjdGlvbklkZW50aWZpZXIgPT0gbV9hdXRvbWF0aWNJbnNwZWN0aW9uQ2Fu
ZGlkYXRlVGFyZ2V0SWRlbnRpZmllcikKLSAgICAgICAgbV9hdXRvbWF0aWNJbnNwZWN0aW9uUGF1
c2VkID0gZmFsc2U7Ci19Ci0KLXZvaWQgUmVtb3RlSW5zcGVjdG9yOjpyZWNlaXZlZEF1dG9tYXRp
b25TZXNzaW9uUmVxdWVzdE1lc3NhZ2UoTlNEaWN0aW9uYXJ5ICp1c2VySW5mbykKLXsKLSAgICBp
ZiAoIW1fY2xpZW50KQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAoIW1fY2xpZW50Q2FwYWJp
bGl0aWVzIHx8ICFtX2NsaWVudENhcGFiaWxpdGllcy0+cmVtb3RlQXV0b21hdGlvbkFsbG93ZWQp
Ci0gICAgICAgIHJldHVybjsKLQotICAgIE5TU3RyaW5nICpzdWdnZXN0ZWRTZXNzaW9uSWRlbnRp
ZmllciA9IFt1c2VySW5mbyBvYmplY3RGb3JLZXk6V0lSU2Vzc2lvbklkZW50aWZpZXJLZXldOwot
ICAgIGlmICghc3VnZ2VzdGVkU2Vzc2lvbklkZW50aWZpZXIpCi0gICAgICAgIHJldHVybjsKLQot
ICAgIG1fY2xpZW50LT5yZXF1ZXN0QXV0b21hdGlvblNlc3Npb24oc3VnZ2VzdGVkU2Vzc2lvbklk
ZW50aWZpZXIpOwotfQotCi19IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IKLQotI2VuZGlmIC8vIEVO
QUJMRShSRU1PVEVfSU5TUEVDVE9SKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbi5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3RvclhQ
Q0Nvbm5lY3Rpb24uaAkocmV2aXNpb24gMjEyNDIzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbi5oCShub25leGlz
dGVudCkKQEAgLTEsNzcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJ
bmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQot
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1Ip
Ci0KLSNpbXBvcnQgPGRpc3BhdGNoL2Rpc3BhdGNoLmg+Ci0jaW1wb3J0IDx3dGYvTG9jay5oPgot
I2ltcG9ydCA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+Ci0jaW1wb3J0IDx3dGYvc3BpL2Rh
cndpbi9YUENTUEkuaD4KLQotT0JKQ19DTEFTUyBOU0RpY3Rpb25hcnk7Ci1PQkpDX0NMQVNTIE5T
U3RyaW5nOwotCi1uYW1lc3BhY2UgSW5zcGVjdG9yIHsKLQotY2xhc3MgUmVtb3RlSW5zcGVjdG9y
WFBDQ29ubmVjdGlvbiA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxSZW1vdGVJbnNwZWN0
b3JYUENDb25uZWN0aW9uPiB7Ci1wdWJsaWM6Ci0gICAgY2xhc3MgQ2xpZW50IHsKLSAgICBwdWJs
aWM6Ci0gICAgICAgIHZpcnR1YWwgfkNsaWVudCgpIHsgfQotICAgICAgICB2aXJ0dWFsIHZvaWQg
eHBjQ29ubmVjdGlvblJlY2VpdmVkTWVzc2FnZShSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9u
KiwgTlNTdHJpbmcgKm1lc3NhZ2VOYW1lLCBOU0RpY3Rpb25hcnkgKnVzZXJJbmZvKSA9IDA7Ci0g
ICAgICAgIHZpcnR1YWwgdm9pZCB4cGNDb25uZWN0aW9uRmFpbGVkKFJlbW90ZUluc3BlY3RvclhQ
Q0Nvbm5lY3Rpb24qKSA9IDA7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCB4cGNDb25uZWN0aW9uVW5o
YW5kbGVkTWVzc2FnZShSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uKiwgeHBjX29iamVjdF90
KSA9IDA7Ci0gICAgfTsKLQotICAgIFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24oeHBjX2Nv
bm5lY3Rpb25fdCwgZGlzcGF0Y2hfcXVldWVfdCwgQ2xpZW50Kik7Ci0gICAgdmlydHVhbCB+UmVt
b3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbigpOwotCi0gICAgdm9pZCBjbG9zZSgpOwotICAgIHZv
aWQgY2xvc2VGcm9tTWVzc2FnZSgpOwotICAgIHZvaWQgc2VuZE1lc3NhZ2UoTlNTdHJpbmcgKm1l
c3NhZ2VOYW1lLCBOU0RpY3Rpb25hcnkgKnVzZXJJbmZvKTsKLQotcHJpdmF0ZToKLSAgICBOU0Rp
Y3Rpb25hcnkgKmRlc2VyaWFsaXplTWVzc2FnZSh4cGNfb2JqZWN0X3QpOwotICAgIHZvaWQgaGFu
ZGxlRXZlbnQoeHBjX29iamVjdF90KTsKLSAgICB2b2lkIGNsb3NlT25RdWV1ZSgpOwotCi0gICAg
Ly8gV2UgaGFuZGxlIFhQQyBldmVudHMgb24gdGhlIHF1ZXVlLCBidXQgYSBjbGllbnQgbWF5IGNh
bGwgY2xvc2UoKSBvbiBhbnkgcXVldWUuCi0gICAgLy8gV2UgbWFrZSBzdXJlIHRoYXQgbV9jbGll
bnQgaXMgdGhyZWFkIHNhZmUgYW5kIGltbWVkaWF0ZWx5IGNsZWFyZWQgaW4gY2xvc2UoKS4KLSAg
ICBMb2NrIG1fbXV0ZXg7Ci0KLSAgICB4cGNfY29ubmVjdGlvbl90IG1fY29ubmVjdGlvbjsKLSAg
ICBkaXNwYXRjaF9xdWV1ZV90IG1fcXVldWU7Ci0gICAgQ2xpZW50KiBtX2NsaWVudDsKLSAgICBi
b29sIG1fY2xvc2VkIHsgZmFsc2UgfTsKLSNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19Y
X1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTIwMCkKLSAgICBib29sIG1fdmFsaWRhdGVkIHsg
ZmFsc2UgfTsKLSNlbmRpZgotfTsKLQotfSAvLyBuYW1lc3BhY2UgSW5zcGVjdG9yCi0KLSNlbmRp
ZiAvLyBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24ubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5z
cGVjdG9yWFBDQ29ubmVjdGlvbi5tbQkocmV2aXNpb24gMjEyNDIzKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbi5t
bQkobm9uZXhpc3RlbnQpCkBAIC0xLDIyMiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDEzIEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
LSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0ICJSZW1v
dGVJbnNwZWN0b3JYUENDb25uZWN0aW9uLmgiCi0KLSNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RP
UikKLQotI2ltcG9ydCA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmg+Ci0jaW1wb3J0IDxtdXRleD4K
LSNpbXBvcnQgPHd0Zi9Bc3NlcnRpb25zLmg+Ci0jaW1wb3J0IDx3dGYvTG9jay5oPgotI2ltcG9y
dCA8d3RmL1JlZi5oPgotI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgotI2ltcG9ydCA8d3RmL3Nw
aS9jb2NvYS9TZWN1cml0eVNQSS5oPgotI2ltcG9ydCA8d3RmL3NwaS9kYXJ3aW4vWFBDU1BJLmg+
Ci0KLSNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQotI2ltcG9ydCA8Q29yZUZvdW5kYXRpb24v
Q0ZYUENCcmlkZ2UuaD4KLSNlbHNlCi1leHRlcm4gIkMiIHsKLSAgICB4cGNfb2JqZWN0X3QgX0NG
WFBDQ3JlYXRlWFBDTWVzc2FnZVdpdGhDRk9iamVjdChDRlR5cGVSZWYpOwotICAgIENGVHlwZVJl
ZiBfQ0ZYUENDcmVhdGVDRk9iamVjdEZyb21YUENNZXNzYWdlKHhwY19vYmplY3RfdCk7Ci19Ci0j
ZW5kaWYKLQotI2lmIChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVR
VUlSRUQgPj0gMTAxMjAwKQotc3RhdGljIGJvb2wgYXVkaXRUb2tlbkhhc0VudGl0bGVtZW50KGF1
ZGl0X3Rva2VuX3QgdG9rZW4sIE5TU3RyaW5nICplbnRpdGxlbWVudCkKLXsKLSAgICBhdXRvIHRh
c2sgPSBhZG9wdENGKFNlY1Rhc2tDcmVhdGVXaXRoQXVkaXRUb2tlbihrQ0ZBbGxvY2F0b3JEZWZh
dWx0LCB0b2tlbikpOwotICAgIGlmICghdGFzaykKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0g
ICAgYXV0byB2YWx1ZSA9IGFkb3B0Q0YoU2VjVGFza0NvcHlWYWx1ZUZvckVudGl0bGVtZW50KHRh
c2suZ2V0KCksIChDRlN0cmluZ1JlZillbnRpdGxlbWVudCwgbnVsbHB0cikpOwotICAgIGlmICgh
dmFsdWUpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGlmIChDRkdldFR5cGVJRCh2YWx1
ZS5nZXQoKSkgIT0gQ0ZCb29sZWFuR2V0VHlwZUlEKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsK
LQotICAgIHJldHVybiBDRkJvb2xlYW5HZXRWYWx1ZShzdGF0aWNfY2FzdDxDRkJvb2xlYW5SZWY+
KHZhbHVlLmdldCgpKSk7Ci19Ci0jZW5kaWYKLQotbmFtZXNwYWNlIEluc3BlY3RvciB7Ci0KLS8v
IENvbnN0YW50cyBwcml2YXRlIHRvIHRoaXMgZmlsZSBmb3IgbWVzc2FnZSBzZXJpYWxpemF0aW9u
IG9uIGJvdGggZW5kcy4KLSNkZWZpbmUgUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbk1lc3Nh
Z2VOYW1lS2V5IEAibWVzc2FnZU5hbWUiCi0jZGVmaW5lIFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5l
Y3Rpb25Vc2VySW5mb0tleSBAInVzZXJJbmZvIgotI2RlZmluZSBSZW1vdGVJbnNwZWN0b3JYUEND
b25uZWN0aW9uU2VyaWFsaXplZE1lc3NhZ2VLZXkgIm1zZ0RhdGEiCi0KLVJlbW90ZUluc3BlY3Rv
clhQQ0Nvbm5lY3Rpb246OlJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24oeHBjX2Nvbm5lY3Rp
b25fdCBjb25uZWN0aW9uLCBkaXNwYXRjaF9xdWV1ZV90IHF1ZXVlLCBDbGllbnQqIGNsaWVudCkK
LSAgICA6IG1fY29ubmVjdGlvbihjb25uZWN0aW9uKQotICAgICwgbV9xdWV1ZShxdWV1ZSkKLSAg
ICAsIG1fY2xpZW50KGNsaWVudCkKLXsKLSAgICBkaXNwYXRjaF9yZXRhaW4obV9xdWV1ZSk7Ci0K
LSAgICB4cGNfcmV0YWluKG1fY29ubmVjdGlvbik7Ci0gICAgeHBjX2Nvbm5lY3Rpb25fc2V0X3Rh
cmdldF9xdWV1ZShtX2Nvbm5lY3Rpb24sIG1fcXVldWUpOwotICAgIHhwY19jb25uZWN0aW9uX3Nl
dF9ldmVudF9oYW5kbGVyKG1fY29ubmVjdGlvbiwgXih4cGNfb2JqZWN0X3Qgb2JqZWN0KSB7Ci0g
ICAgICAgIGhhbmRsZUV2ZW50KG9iamVjdCk7Ci0gICAgfSk7Ci0KLSAgICAvLyBCYWxhbmNlZCBi
eSBkZXJlZiB3aGVuIHRoZSB4cGNfY29ubmVjdGlvbiByZWNlaXZlcyBYUENfRVJST1JfQ09OTkVD
VElPTl9JTlZBTElELgotICAgIHJlZigpOwotCi0gICAgeHBjX2Nvbm5lY3Rpb25fcmVzdW1lKG1f
Y29ubmVjdGlvbik7Ci19Ci0KLVJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb246On5SZW1vdGVJ
bnNwZWN0b3JYUENDb25uZWN0aW9uKCkKLXsKLSAgICBBU1NFUlQoIW1fY2xpZW50KTsKLSAgICBB
U1NFUlQoIW1fY29ubmVjdGlvbik7Ci0gICAgQVNTRVJUKG1fY2xvc2VkKTsKLX0KLQotdm9pZCBS
ZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uOjpjbG9zZSgpCi17Ci0gICAgc3RkOjpsb2NrX2d1
YXJkPExvY2s+IGxvY2sobV9tdXRleCk7Ci0gICAgY2xvc2VGcm9tTWVzc2FnZSgpOwotfQotCi12
b2lkIFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb246OmNsb3NlRnJvbU1lc3NhZ2UoKQotewot
ICAgIG1fY2xvc2VkID0gdHJ1ZTsKLSAgICBtX2NsaWVudCA9IG51bGxwdHI7Ci0KLSAgICBkaXNw
YXRjaF9hc3luYyhtX3F1ZXVlLCBeewotICAgICAgICBzdGQ6OmxvY2tfZ3VhcmQ8TG9jaz4gbG9j
ayhtX211dGV4KTsKLSAgICAgICAgLy8gVGhpcyB3aWxsIHRyaWdnZXIgb25lIGxhc3QgWFBDX0VS
Uk9SX0NPTk5FQ1RJT05fSU5WQUxJRCBldmVudCBvbiB0aGUgcXVldWUgYW5kIGRlcmVmIHVzLgot
ICAgICAgICBjbG9zZU9uUXVldWUoKTsKLSAgICB9KTsKLX0KLQotdm9pZCBSZW1vdGVJbnNwZWN0
b3JYUENDb25uZWN0aW9uOjpjbG9zZU9uUXVldWUoKQotewotICAgIGlmIChtX2Nvbm5lY3Rpb24p
IHsKLSAgICAgICAgeHBjX2Nvbm5lY3Rpb25fY2FuY2VsKG1fY29ubmVjdGlvbik7Ci0gICAgICAg
IHhwY19yZWxlYXNlKG1fY29ubmVjdGlvbik7Ci0gICAgICAgIG1fY29ubmVjdGlvbiA9IG51bGxw
dHI7Ci0gICAgfQotCi0gICAgaWYgKG1fcXVldWUpIHsKLSAgICAgICAgZGlzcGF0Y2hfcmVsZWFz
ZShtX3F1ZXVlKTsKLSAgICAgICAgbV9xdWV1ZSA9IG51bGxwdHI7Ci0gICAgfQotfQotCi1OU0Rp
Y3Rpb25hcnkgKlJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb246OmRlc2VyaWFsaXplTWVzc2Fn
ZSh4cGNfb2JqZWN0X3Qgb2JqZWN0KQotewotICAgIGlmICh4cGNfZ2V0X3R5cGUob2JqZWN0KSAh
PSBYUENfVFlQRV9ESUNUSU9OQVJZKQotICAgICAgICByZXR1cm4gbmlsOwotCi0gICAgeHBjX29i
amVjdF90IHhwY0RpY3Rpb25hcnkgPSB4cGNfZGljdGlvbmFyeV9nZXRfdmFsdWUob2JqZWN0LCBS
ZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uU2VyaWFsaXplZE1lc3NhZ2VLZXkpOwotICAgIGlm
ICgheHBjRGljdGlvbmFyeSB8fCB4cGNfZ2V0X3R5cGUoeHBjRGljdGlvbmFyeSkgIT0gWFBDX1RZ
UEVfRElDVElPTkFSWSkgewotICAgICAgICBzdGQ6OmxvY2tfZ3VhcmQ8TG9jaz4gbG9jayhtX211
dGV4KTsKLSAgICAgICAgaWYgKG1fY2xpZW50KQotICAgICAgICAgICAgbV9jbGllbnQtPnhwY0Nv
bm5lY3Rpb25VbmhhbmRsZWRNZXNzYWdlKHRoaXMsIG9iamVjdCk7Ci0gICAgICAgIHJldHVybiBu
aWw7Ci0gICAgfQotCi0gICAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gZGljdGlvbmFyeSA9
IGFkb3B0Q0YoKENGRGljdGlvbmFyeVJlZilfQ0ZYUENDcmVhdGVDRk9iamVjdEZyb21YUENNZXNz
YWdlKHhwY0RpY3Rpb25hcnkpKTsKLSAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKGRpY3Rpb25hcnks
ICJVbmFibGUgdG8gZGVzZXJpYWxpemUgeHBjIG1lc3NhZ2UiKTsKLSAgICByZXR1cm4gKE5TRGlj
dGlvbmFyeSAqKWRpY3Rpb25hcnkuYXV0b3JlbGVhc2UoKTsKLX0KLQotdm9pZCBSZW1vdGVJbnNw
ZWN0b3JYUENDb25uZWN0aW9uOjpoYW5kbGVFdmVudCh4cGNfb2JqZWN0X3Qgb2JqZWN0KQotewot
ICAgIGlmICh4cGNfZ2V0X3R5cGUob2JqZWN0KSA9PSBYUENfVFlQRV9FUlJPUikgewotICAgICAg
ICB7Ci0gICAgICAgICAgICBzdGQ6OmxvY2tfZ3VhcmQ8TG9jaz4gbG9jayhtX211dGV4KTsKLSAg
ICAgICAgICAgIGlmIChtX2NsaWVudCkKLSAgICAgICAgICAgICAgICBtX2NsaWVudC0+eHBjQ29u
bmVjdGlvbkZhaWxlZCh0aGlzKTsKLQotICAgICAgICAgICAgbV9jbG9zZWQgPSB0cnVlOwotICAg
ICAgICAgICAgbV9jbGllbnQgPSBudWxscHRyOwotICAgICAgICAgICAgY2xvc2VPblF1ZXVlKCk7
Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAob2JqZWN0ID09IFhQQ19FUlJPUl9DT05ORUNUSU9O
X0lOVkFMSUQpIHsKLSAgICAgICAgICAgIC8vIFRoaXMgaXMgdGhlIGxhc3QgZXZlbnQgd2Ugd2ls
bCBldmVyIHJlY2VpdmUgZnJvbSB0aGUgY29ubmVjdGlvbi4KLSAgICAgICAgICAgIC8vIFRoaXMg
YmFsYW5jZXMgdGhlIHJlZigpIGluIHRoZSBjb25zdHJ1Y3Rvci4KLSAgICAgICAgICAgIGRlcmVm
KCk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotI2lmIChQTEFURk9STShN
QUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMjAwKQotICAgIGlm
ICghbV92YWxpZGF0ZWQpIHsKLSAgICAgICAgYXVkaXRfdG9rZW5fdCB0b2tlbjsKLSAgICAgICAg
eHBjX2Nvbm5lY3Rpb25fZ2V0X2F1ZGl0X3Rva2VuKG1fY29ubmVjdGlvbiwgJnRva2VuKTsKLSAg
ICAgICAgaWYgKCFhdWRpdFRva2VuSGFzRW50aXRsZW1lbnQodG9rZW4sIEAiY29tLmFwcGxlLnBy
aXZhdGUud2ViaW5zcGVjdG9yLndlYmluc3BlY3RvcmQiKSkgewotICAgICAgICAgICAgc3RkOjps
b2NrX2d1YXJkPExvY2s+IGxvY2sobV9tdXRleCk7Ci0gICAgICAgICAgICAvLyBUaGlzIHdpbGwg
dHJpZ2dlciBvbmUgbGFzdCBYUENfRVJST1JfQ09OTkVDVElPTl9JTlZBTElEIGV2ZW50IG9uIHRo
ZSBxdWV1ZSBhbmQgZGVyZWYgdXMuCi0gICAgICAgICAgICBjbG9zZU9uUXVldWUoKTsKLSAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICBtX3ZhbGlkYXRlZCA9IHRydWU7Ci0g
ICAgfQotI2VuZGlmCi0KLSAgICBOU0RpY3Rpb25hcnkgKmRhdGFEaWN0aW9uYXJ5ID0gZGVzZXJp
YWxpemVNZXNzYWdlKG9iamVjdCk7Ci0gICAgaWYgKCFkYXRhRGljdGlvbmFyeSkKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgTlNTdHJpbmcgKm1lc3NhZ2UgPSBbZGF0YURpY3Rpb25hcnkgb2JqZWN0
Rm9yS2V5OlJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb25NZXNzYWdlTmFtZUtleV07Ci0gICAg
TlNEaWN0aW9uYXJ5ICp1c2VySW5mbyA9IFtkYXRhRGljdGlvbmFyeSBvYmplY3RGb3JLZXk6UmVt
b3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvblVzZXJJbmZvS2V5XTsKLSAgICBzdGQ6OmxvY2tfZ3Vh
cmQ8TG9jaz4gbG9jayhtX211dGV4KTsKLSAgICBpZiAobV9jbGllbnQpCi0gICAgICAgIG1fY2xp
ZW50LT54cGNDb25uZWN0aW9uUmVjZWl2ZWRNZXNzYWdlKHRoaXMsIG1lc3NhZ2UsIHVzZXJJbmZv
KTsKLX0KLQotdm9pZCBSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uOjpzZW5kTWVzc2FnZShO
U1N0cmluZyAqbWVzc2FnZU5hbWUsIE5TRGljdGlvbmFyeSAqdXNlckluZm8pCi17Ci0gICAgQVNT
RVJUKCFtX2Nsb3NlZCk7Ci0gICAgaWYgKG1fY2xvc2VkKQotICAgICAgICByZXR1cm47Ci0KLSAg
ICBOU011dGFibGVEaWN0aW9uYXJ5ICpkaWN0aW9uYXJ5ID0gW05TTXV0YWJsZURpY3Rpb25hcnkg
ZGljdGlvbmFyeVdpdGhPYmplY3Q6bWVzc2FnZU5hbWUgZm9yS2V5OlJlbW90ZUluc3BlY3RvclhQ
Q0Nvbm5lY3Rpb25NZXNzYWdlTmFtZUtleV07Ci0gICAgaWYgKHVzZXJJbmZvKQotICAgICAgICBb
ZGljdGlvbmFyeSBzZXRPYmplY3Q6dXNlckluZm8gZm9yS2V5OlJlbW90ZUluc3BlY3RvclhQQ0Nv
bm5lY3Rpb25Vc2VySW5mb0tleV07Ci0KLSAgICB4cGNfb2JqZWN0X3QgeHBjRGljdGlvbmFyeSA9
IF9DRlhQQ0NyZWF0ZVhQQ01lc3NhZ2VXaXRoQ0ZPYmplY3QoKENGRGljdGlvbmFyeVJlZilkaWN0
aW9uYXJ5KTsKLSAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKHhwY0RpY3Rpb25hcnkgJiYgeHBjX2dl
dF90eXBlKHhwY0RpY3Rpb25hcnkpID09IFhQQ19UWVBFX0RJQ1RJT05BUlksICJVbmFibGUgdG8g
c2VyaWFsaXplIHhwYyBtZXNzYWdlIik7Ci0gICAgaWYgKCF4cGNEaWN0aW9uYXJ5KQotICAgICAg
ICByZXR1cm47Ci0KLSAgICB4cGNfb2JqZWN0X3QgbXNnID0geHBjX2RpY3Rpb25hcnlfY3JlYXRl
KG51bGxwdHIsIG51bGxwdHIsIDApOwotICAgIHhwY19kaWN0aW9uYXJ5X3NldF92YWx1ZShtc2cs
IFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb25TZXJpYWxpemVkTWVzc2FnZUtleSwgeHBjRGlj
dGlvbmFyeSk7Ci0gICAgeHBjX3JlbGVhc2UoeHBjRGljdGlvbmFyeSk7Ci0KLSAgICB4cGNfY29u
bmVjdGlvbl9zZW5kX21lc3NhZ2UobV9jb25uZWN0aW9uLCBtc2cpOwotCi0gICAgeHBjX3JlbGVh
c2UobXNnKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgSW5zcGVjdG9yCi0KLSNlbmRpZiAvLyBFTkFC
TEUoUkVNT1RFX0lOU1BFQ1RPUikKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3IvcmVtb3RlL2NvY29hL1JlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldENvY29hLm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL2NvY29hL1JlbW90
ZUNvbm5lY3Rpb25Ub1RhcmdldENvY29hLm1tCShyZXZpc2lvbiAyMTIzOTMpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9jb2NvYS9SZW1vdGVDb25uZWN0aW9uVG9U
YXJnZXRDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtMjEwLDcgKzIxMCw3IEBAIHZvaWQgUmVt
b3RlQ29ubmVjdGlvblRvVGFyZ2V0OjpjbG9zZSgpCiAgICAgfSk7CiB9CiAKLXZvaWQgUmVtb3Rl
Q29ubmVjdGlvblRvVGFyZ2V0OjpzZW5kTWVzc2FnZVRvVGFyZ2V0KGNvbnN0IFN0cmluZyYgbWVz
c2FnZSkKK3ZvaWQgUmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0OjpzZW5kTWVzc2FnZVRvVGFyZ2V0
KE5TU3RyaW5nICptZXNzYWdlKQogewogICAgIHJlZigpOwogICAgIGRpc3BhdGNoQXN5bmNPblRh
cmdldCheewpJbmRleDogU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkocmV2aXNpb24gMjEyNDIzKQorKysgU291cmNlL1dlYktp
dDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTctMDItMTUg
IEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBV
bnJldmlld2VkLCByb2xsaW5nIG91dCByMjEyMzk0LgorCisgICAgICAgIEZpeGVkIGlPUyBXZWJJ
bnNwZWN0b3IKKworICAgICAgICBSZXZlcnRlZCBjaGFuZ2VzZXQ6CisKKyAgICAgICAgIlVucmV2
aWV3ZWQsIHJvbGxpbmcgb3V0IHIyMTIxNjkuIgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY2NjgxCisgICAgICAgIGh0dHA6Ly90cmFjLndlYmtpdC5v
cmcvY2hhbmdlc2V0LzIxMjM5NAorCiAyMDE3LTAyLTE1ICBFcmljIENhcmxzb24gIDxlcmljLmNh
cmxzb25AYXBwbGUuY29tPgogCiAgICAgICAgIFtNZWRpYVN0cmVhbV0gZGVsZXRlIENhcHR1cmVE
ZXZpY2VJbmZvIHN0cnVjdApJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9j
ZXNzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nl
c3MuY3BwCShyZXZpc2lvbiAyMTI0MjMpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlByb2Nlc3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNzAsNyArMzcwLDcgQEAgdm9pZCBXZWJQ
cm9jZXNzOjppbml0aWFsaXplV2ViUHJvY2VzcyhXZQogICAgIHNldEVuYWJsZWRTZXJ2aWNlcyhw
YXJhbWV0ZXJzLmhhc0ltYWdlU2VydmljZXMsIHBhcmFtZXRlcnMuaGFzU2VsZWN0aW9uU2Vydmlj
ZXMsIHBhcmFtZXRlcnMuaGFzUmljaENvbnRlbnRTZXJ2aWNlcyk7CiAjZW5kaWYKIAotI2lmIEVO
QUJMRShSRU1PVEVfSU5TUEVDVE9SKQorI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKSAmJiBQ
TEFURk9STShDT0NPQSkKICAgICBhdWRpdF90b2tlbl90IGF1ZGl0VG9rZW47CiAgICAgaWYgKHBh
cmVudFByb2Nlc3NDb25uZWN0aW9uKCktPmdldEF1ZGl0VG9rZW4oYXVkaXRUb2tlbikpIHsKICAg
ICAgICAgUmV0YWluUHRyPENGRGF0YVJlZj4gYXVkaXREYXRhID0gYWRvcHRDRihDRkRhdGFDcmVh
dGUobnVsbHB0ciwgKGNvbnN0IFVJbnQ4KikmYXVkaXRUb2tlbiwgc2l6ZW9mKGF1ZGl0VG9rZW4p
KSk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>