<?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>98934</bug_id>
          
          <creation_ts>2012-10-10 11:44:16 -0700</creation_ts>
          <short_desc>[GTK] Datalist element support for TextFieldInputType</short_desc>
          <delta_ts>2019-07-31 01:02:16 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKitGTK</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>Gtk, LayoutTestFailure</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>122590</dependson>
    
    <dependson>122819</dependson>
          <blocked>27247</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Zan Dobersek">zan</reporter>
          <assigned_to name="ChangSeok Oh">changseok</assigned_to>
          <cc>andersca</cc>
    
    <cc>a.renevier</cc>
    
    <cc>astorino.design</cc>
    
    <cc>bugs-noreply</cc>
    
    <cc>cgarcia</cc>
    
    <cc>changseok</cc>
    
    <cc>chi187</cc>
    
    <cc>commit-queue</cc>
    
    <cc>eflews.bot</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>glenn</cc>
    
    <cc>gustavo</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>joacim.lowgren</cc>
    
    <cc>joone</cc>
    
    <cc>kling</cc>
    
    <cc>macpherson</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>menard</cc>
    
    <cc>mike</cc>
    
    <cc>mrobinson</cc>
    
    <cc>rakuco</cc>
    
    <cc>teun</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>739179</commentid>
    <comment_count>0</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2012-10-10 11:44:16 -0700</bug_when>
    <thetext>Enable the datalist element support and unskip related tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>935756</commentid>
    <comment_count>1</comment_count>
    <who name="ChangSeok Oh">changseok</who>
    <bug_when>2013-10-03 05:38:43 -0700</bug_when>
    <thetext>@Zan, Are you working on this? If you&apos;re not now, I&apos;d like to follow this up.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>935827</commentid>
    <comment_count>2</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2013-10-03 09:45:55 -0700</bug_when>
    <thetext>Nope, feel free to hack on this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>938234</commentid>
    <comment_count>3</comment_count>
    <who name="ChangSeok Oh">changseok</who>
    <bug_when>2013-10-10 00:51:37 -0700</bug_when>
    <thetext>Here is a rough sketch. http://cgit.collabora.com/git/user/kevino/WebKit.git/log/?h=datalist

I&apos;m going to start upstream through several split bugs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>958526</commentid>
    <comment_count>4</comment_count>
      <attachid>218910</attachid>
    <who name="ChangSeok Oh">changseok</who>
    <bug_when>2013-12-10 14:56:53 -0800</bug_when>
    <thetext>Created attachment 218910
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>958529</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-12-10 14:59:06 -0800</bug_when>
    <thetext>Attachment 218910 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;ChangeLog&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/GNUmakefile.am&apos;, u&apos;Source/WebCore/GNUmakefile.list.am&apos;, u&apos;Source/WebCore/css/themeGtk.css&apos;, u&apos;Source/WebCore/page/Page.cpp&apos;, u&apos;Source/WebCore/page/Page.h&apos;, u&apos;Source/WebCore/page/SuggestionBoxController.cpp&apos;, u&apos;Source/WebCore/page/SuggestionBoxController.h&apos;, u&apos;Source/WebCore/page/SuggestionElement.cpp&apos;, u&apos;Source/WebCore/page/SuggestionElement.h&apos;, u&apos;Source/WebCore/platform/gtk/RenderThemeGtk.cpp&apos;, u&apos;Source/WebCore/platform/gtk/RenderThemeGtk.h&apos;, u&apos;Source/WebKit2/ChangeLog&apos;, u&apos;Source/WebKit2/WebProcess/InjectedBundle/API/gtk/WebKitWebPage.cpp&apos;, u&apos;Source/autotools/PrintBuildConfiguration.m4&apos;, u&apos;Source/autotools/ReadCommandLineArguments.m4&apos;, u&apos;Source/autotools/SetupAutomake.m4&apos;, u&apos;Source/autotools/SetupWebKitFeatures.m4&apos;, &apos;--commit-queue&apos;]&quot; exit_code: 1
ERROR: Source/WebCore/page/SuggestionElement.cpp:35:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
Total errors found: 1 in 19 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>958530</commentid>
    <comment_count>6</comment_count>
      <attachid>218910</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-12-10 15:05:47 -0800</bug_when>
    <thetext>Comment on attachment 218910
Patch

Attachment 218910 did not pass efl-ews (efl):
Output: http://webkit-queues.appspot.com/results/47258329</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>958601</commentid>
    <comment_count>7</comment_count>
      <attachid>218910</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-12-10 19:48:16 -0800</bug_when>
    <thetext>Comment on attachment 218910
Patch

Attachment 218910 did not pass efl-wk2-ews (efl-wk2):
Output: http://webkit-queues.appspot.com/results/47218401</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>958658</commentid>
    <comment_count>8</comment_count>
      <attachid>218947</attachid>
    <who name="ChangSeok Oh">changseok</who>
    <bug_when>2013-12-11 03:19:16 -0800</bug_when>
    <thetext>Created attachment 218947
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>958659</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-12-11 03:21:28 -0800</bug_when>
    <thetext>Attachment 218947 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;ChangeLog&apos;, u&apos;Source/WebCore/CMakeLists.txt&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/GNUmakefile.am&apos;, u&apos;Source/WebCore/GNUmakefile.list.am&apos;, u&apos;Source/WebCore/css/themeGtk.css&apos;, u&apos;Source/WebCore/page/Page.cpp&apos;, u&apos;Source/WebCore/page/Page.h&apos;, u&apos;Source/WebCore/page/SuggestionBoxController.cpp&apos;, u&apos;Source/WebCore/page/SuggestionBoxController.h&apos;, u&apos;Source/WebCore/page/SuggestionElement.cpp&apos;, u&apos;Source/WebCore/page/SuggestionElement.h&apos;, u&apos;Source/WebCore/platform/gtk/RenderThemeGtk.cpp&apos;, u&apos;Source/WebCore/platform/gtk/RenderThemeGtk.h&apos;, u&apos;Source/WebKit2/ChangeLog&apos;, u&apos;Source/WebKit2/WebProcess/InjectedBundle/API/gtk/WebKitWebPage.cpp&apos;, u&apos;Source/autotools/PrintBuildConfiguration.m4&apos;, u&apos;Source/autotools/ReadCommandLineArguments.m4&apos;, u&apos;Source/autotools/SetupAutomake.m4&apos;, u&apos;Source/autotools/SetupWebKitFeatures.m4&apos;, &apos;--commit-queue&apos;]&quot; exit_code: 1
ERROR: Source/WebCore/page/SuggestionElement.cpp:35:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
Total errors found: 1 in 20 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>958662</commentid>
    <comment_count>10</comment_count>
    <who name="ChangSeok Oh">changseok</who>
    <bug_when>2013-12-11 03:32:39 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; Attachment 218947 [details] did not pass style-queue:
&gt; 
&gt; Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;ChangeLog&apos;, u&apos;Source/WebCore/CMakeLists.txt&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/GNUmakefile.am&apos;, u&apos;Source/WebCore/GNUmakefile.list.am&apos;, u&apos;Source/WebCore/css/themeGtk.css&apos;, u&apos;Source/WebCore/page/Page.cpp&apos;, u&apos;Source/WebCore/page/Page.h&apos;, u&apos;Source/WebCore/page/SuggestionBoxController.cpp&apos;, u&apos;Source/WebCore/page/SuggestionBoxController.h&apos;, u&apos;Source/WebCore/page/SuggestionElement.cpp&apos;, u&apos;Source/WebCore/page/SuggestionElement.h&apos;, u&apos;Source/WebCore/platform/gtk/RenderThemeGtk.cpp&apos;, u&apos;Source/WebCore/platform/gtk/RenderThemeGtk.h&apos;, u&apos;Source/WebKit2/ChangeLog&apos;, u&apos;Source/WebKit2/WebProcess/InjectedBundle/API/gtk/WebKitWebPage.cpp&apos;, u&apos;Source/autotools/PrintBuildConfiguration.m4&apos;, u&apos;Source/autotools/ReadCommandLineArguments.m4&apos;, u&apos;Source/autotools/SetupAutomake.m4&apos;, u&apos;Source/autotools/SetupWebKitFeatures.m4&apos;, &apos;--commit-queue&apos;]&quot; exit_code: 1
&gt; ERROR: Source/WebCore/page/SuggestionElement.cpp:35:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
&gt; Total errors found: 1 in 20 files
&gt; 
&gt; 
&gt; If any of these errors are false positives, please file a bug against check-webkit-style.

Yeah.. I think this is a false alarm</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>958663</commentid>
    <comment_count>11</comment_count>
      <attachid>218947</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-12-11 03:37:54 -0800</bug_when>
    <thetext>Comment on attachment 218947
Patch

Attachment 218947 did not pass efl-wk2-ews (efl-wk2):
Output: http://webkit-queues.appspot.com/results/47338279</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>958675</commentid>
    <comment_count>12</comment_count>
    <who name="ChangSeok Oh">changseok</who>
    <bug_when>2013-12-11 05:08:27 -0800</bug_when>
    <thetext>(In reply to comment #11)
&gt; (From update of attachment 218947 [details])
&gt; Attachment 218947 [details] did not pass efl-wk2-ews (efl-wk2):
&gt; Output: http://webkit-queues.appspot.com/results/47338279

I think this is an another false alarm. I couldn&apos;t find any build issue with this change on efl port. What happens on the EFL bot.. :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>969088</commentid>
    <comment_count>13</comment_count>
      <attachid>218947</attachid>
    <who name="ChangSeok Oh">changseok</who>
    <bug_when>2014-01-17 01:32:00 -0800</bug_when>
    <thetext>Comment on attachment 218947
Patch

I got a better idea using shadow html like media controls.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>977431</commentid>
    <comment_count>14</comment_count>
      <attachid>223347</attachid>
    <who name="ChangSeok Oh">changseok</who>
    <bug_when>2014-02-06 10:55:07 -0800</bug_when>
    <thetext>Created attachment 223347
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>977443</commentid>
    <comment_count>15</comment_count>
      <attachid>223351</attachid>
    <who name="ChangSeok Oh">changseok</who>
    <bug_when>2014-02-06 11:12:56 -0800</bug_when>
    <thetext>Created attachment 223351
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>977746</commentid>
    <comment_count>16</comment_count>
      <attachid>223431</attachid>
    <who name="ChangSeok Oh">changseok</who>
    <bug_when>2014-02-07 00:26:12 -0800</bug_when>
    <thetext>Created attachment 223431
Add a test to verify the functionality</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>977760</commentid>
    <comment_count>17</comment_count>
      <attachid>223433</attachid>
    <who name="ChangSeok Oh">changseok</who>
    <bug_when>2014-02-07 01:47:14 -0800</bug_when>
    <thetext>Created attachment 223433
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1155763</commentid>
    <comment_count>18</comment_count>
    <who name="Joacim Löwgren">joacim.lowgren</who>
    <bug_when>2016-01-15 07:40:55 -0800</bug_when>
    <thetext>Anything happening on this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1230834</commentid>
    <comment_count>19</comment_count>
      <attachid>223433</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2016-09-17 07:18:11 -0700</bug_when>
    <thetext>Comment on attachment 223433
Patch

Hi,

Apologies that your patch was not reviewed in a timely manner. Since it&apos;s now quite old, I am removing it from the review request queue. Please consider rebasing it on trunk and resubmitting.

To increase the chances of getting a review, consider using &apos;Tools/Scripts/webkit-patch upload --suggest-reviewers&apos; to CC reviewers who might be interested in this bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1383824</commentid>
    <comment_count>20</comment_count>
    <who name="Mattia Astorino">astorino.design</who>
    <bug_when>2017-12-20 14:13:27 -0800</bug_when>
    <thetext>Any update about this? Edge, Chrome and Firefox supports the &lt;datalist&gt; element..</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1537560</commentid>
    <comment_count>21</comment_count>
    <who name="Teun">teun</who>
    <bug_when>2019-05-20 04:46:13 -0700</bug_when>
    <thetext>It appears that support for datalist has been added to Safari?
Tested in 12.1.1 and it works!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1537566</commentid>
    <comment_count>22</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2019-05-20 06:47:50 -0700</bug_when>
    <thetext>Yes, but this is a GTK bug and it doesn&apos;t work for GTK yet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1556934</commentid>
    <comment_count>23</comment_count>
      <attachid>375155</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2019-07-30 06:04:27 -0700</bug_when>
    <thetext>Created attachment 375155
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1556936</commentid>
    <comment_count>24</comment_count>
      <attachid>375156</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2019-07-30 06:12:20 -0700</bug_when>
    <thetext>Created attachment 375156
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1556968</commentid>
    <comment_count>25</comment_count>
      <attachid>375156</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2019-07-30 09:15:12 -0700</bug_when>
    <thetext>Comment on attachment 375156
Patch

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

&gt; Source/WebKit/UIProcess/gtk/WebDataListSuggestionsDropdownGtk.cpp:51
&gt; +    g_signal_connect(treeView, &quot;row-activated&quot;, G_CALLBACK(treeViewRowActivatedCallback), this);

I&apos;m nervous about this one. I see it isn&apos;t disconnected in the destructor. Surely it should use g_signal_connect_object()? Even if you always expect it to be disconnected in the callback, better safe than sorry?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1556986</commentid>
    <comment_count>26</comment_count>
      <attachid>375156</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2019-07-30 09:36:36 -0700</bug_when>
    <thetext>Comment on attachment 375156
Patch

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

&gt;&gt; Source/WebKit/UIProcess/gtk/WebDataListSuggestionsDropdownGtk.cpp:51
&gt;&gt; +    g_signal_connect(treeView, &quot;row-activated&quot;, G_CALLBACK(treeViewRowActivatedCallback), this);
&gt; 
&gt; I&apos;m nervous about this one. I see it isn&apos;t disconnected in the destructor. Surely it should use g_signal_connect_object()? Even if you always expect it to be disconnected in the callback, better safe than sorry?

We can&apos;t use connect_object because this is not a GObject. The treeview is destroyed in the destructor, so it&apos;s not possible that row activated is emitted after this has been deleted.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1556990</commentid>
    <comment_count>27</comment_count>
      <attachid>375156</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2019-07-30 09:54:12 -0700</bug_when>
    <thetext>Comment on attachment 375156
Patch

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

&gt;&gt;&gt; Source/WebKit/UIProcess/gtk/WebDataListSuggestionsDropdownGtk.cpp:51
&gt;&gt;&gt; +    g_signal_connect(treeView, &quot;row-activated&quot;, G_CALLBACK(treeViewRowActivatedCallback), this);
&gt;&gt; 
&gt;&gt; I&apos;m nervous about this one. I see it isn&apos;t disconnected in the destructor. Surely it should use g_signal_connect_object()? Even if you always expect it to be disconnected in the callback, better safe than sorry?
&gt; 
&gt; We can&apos;t use connect_object because this is not a GObject. The treeview is destroyed in the destructor, so it&apos;s not possible that row activated is emitted after this has been deleted.

OK except the treeview is not actually destroyed in the destructor? I would disconnect manually in the destructor.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1557217</commentid>
    <comment_count>28</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2019-07-31 00:59:21 -0700</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #27)
&gt; Comment on attachment 375156 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=375156&amp;action=review
&gt; 
&gt; &gt;&gt;&gt; Source/WebKit/UIProcess/gtk/WebDataListSuggestionsDropdownGtk.cpp:51
&gt; &gt;&gt;&gt; +    g_signal_connect(treeView, &quot;row-activated&quot;, G_CALLBACK(treeViewRowActivatedCallback), this);
&gt; &gt;&gt; 
&gt; &gt;&gt; I&apos;m nervous about this one. I see it isn&apos;t disconnected in the destructor. Surely it should use g_signal_connect_object()? Even if you always expect it to be disconnected in the callback, better safe than sorry?
&gt; &gt; 
&gt; &gt; We can&apos;t use connect_object because this is not a GObject. The treeview is destroyed in the destructor, so it&apos;s not possible that row activated is emitted after this has been deleted.
&gt; 
&gt; OK except the treeview is not actually destroyed in the destructor? I would
&gt; disconnect manually in the destructor.

The treeview is a children of the popup window, when a widget is destroyed, all its children are destroyed too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1557218</commentid>
    <comment_count>29</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2019-07-31 01:02:16 -0700</bug_when>
    <thetext>Committed r248033: &lt;https://trac.webkit.org/changeset/248033&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>218910</attachid>
            <date>2013-12-10 14:56:53 -0800</date>
            <delta_ts>2013-12-11 03:19:07 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-98934-20131210235651.patch</filename>
            <type>text/plain</type>
            <size>41571</size>
            <attacher name="ChangSeok Oh">changseok</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTYwMjc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGY0ZjNjYzk3YWY2YWJk
ZWFjNWJhMzU3NjgwYjFjYjMyZTQwZWZjZC4uZDFiNjYxODM2OGY3YWI3NjY4ODI0YTRhYWViYmQ1
OGU2OTdjODk4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYzIEBACisyMDEzLTEyLTEwICBDaGFu
Z1Nlb2sgT2ggIDxjaGFuZ3Nlb2sub2hAY29sbGFib3JhLmNvbT4KKworICAgICAgICBbR1RLXSBE
YXRhbGlzdCBlbGVtZW50IHN1cHBvcnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTk4OTM0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQWRkZWQgU3VnZ2VzdGlvbkJveENvbnRyb2xsZXIgYW5kIFN1Z2dlc3Rp
b25FbGVtZW50IG5ld2x5LCBUaGV5IG9yaWdpbmF0ZWQKKyAgICAgICAgZnJvbSBTdWdnZXN0aW9u
Qm94SGFuZGxlciBhbmQgU3VnZ2VzdGlvbkVsZW1lbnQgb2YgYmxhY2tiZXJyeSBwb3J0LCBidXQg
aW5jbHVkZQorICAgICAgICBtYW55IGltcHJvdmVtZW50cy4gQmFzaWNhbGx5IGEgc3VnZ2VzdGlv
biBwb3B1cCBpcyBjb25zdHJ1Y3RlZCB3aXRoIGh0bWwoZGl2IGFuZCBzcGFuKS4KKyAgICAgICAg
U3VnZ2VzdGlvbkVsZW1lbnQgaXMgYSBzdWJjbGFzcyBvZiBIVE1MRGl2ZWxlbWVudCBhbmQgcmVw
cmVzZW50cyBhIHNpbmdsZSBpdGVtIG9mIGRhdGFsaXN0LgorICAgICAgICBTdWdnZXN0aW9uQm94
Q29udHJvbGxlciBtYW5hZ2VzIG9wZXJhdGlvbnMgb2YgYSBzdWdnZXN0aW9uIGJveC4gRm9yIGlu
c3RhbmNlLAorICAgICAgICBzaG93aW5nL2hpZGluZyBhIGJveCwgZm9jdXNpbmcgYSBpdGVtLCBl
dGMuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBjb3ZlcmVkIGJ5IGV4aXN0aW5nIHRlc3RzLgor
CisgICAgICAgICogR05VbWFrZWZpbGUuYW06CisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5h
bToKKyAgICAgICAgKiBjc3MvdGhlbWVHdGsuY3NzOiBBZGRlZC4KKyAgICAgICAgKGlucHV0Ojot
d2Via2l0LXN1Z2dlc3Rpb24tYm94KTogRGVmaW5lIHN0eWxlIG9mIHN1Z2dlc3Rpb24gYm94Lgor
ICAgICAgICAoaW5wdXQ6Oi13ZWJraXQtc3VnZ2VzdGlvbi1ib3gtZWxlbWVudCk6IERlZmluZSBz
dHlsZSBvZiBhbiBlbGVtZW50IGluIHN1Z2dlc3Rpb24gYm94LgorICAgICAgICAoaW5wdXQ6Oi13
ZWJraXQtc3VnZ2VzdGlvbi1ib3gtZWxlbWVudC1mb2N1c2VkKTogRGVmaW5lIHN0eWxlIG9mIGEg
Zm9jdXNlZCBlbGVtZW50IGluIGEgc3VnZ2VzdGlvbiBib3guCisgICAgICAgIChpbnB1dDo6LXdl
YmtpdC1zdWdnZXN0aW9uLXByZWZpeC10ZXh0KTogRGVmaW5lIHN0eWxlIHRvIGVtcGhhc2l6ZSBp
bnB1dCBjaGFyYWN0ZXJzLgorICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6IEFkZGVkIFN1Z2dlc3Rp
b25Cb3hDb250cm9sbGVyLgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6UGFnZSk6CisgICAgICAg
ICogcGFnZS9QYWdlLmg6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpzdWdnZXN0aW9uQm94Q29u
dHJvbGxlcik6CisgICAgICAgICogcGFnZS9TdWdnZXN0aW9uQm94Q29udHJvbGxlci5jcHA6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZTo6U3VnZ2VzdGlvbkJveENvbnRyb2xsZXI6OlN1Z2dlc3Rp
b25Cb3hDb250cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlN1Z2dlc3Rpb25Cb3hDb250cm9s
bGVyOjp+U3VnZ2VzdGlvbkJveENvbnRyb2xsZXIpOgorICAgICAgICAoV2ViQ29yZTo6U3VnZ2Vz
dGlvbkJveENvbnRyb2xsZXI6OnNldElucHV0RWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpT
dWdnZXN0aW9uQm94Q29udHJvbGxlcjo6c2V0SW5wdXRFbGVtZW50QW5kU2hvd1N1Z2dlc3Rpb25C
b3gpOgorICAgICAgICAoV2ViQ29yZTo6U3VnZ2VzdGlvbkJveENvbnRyb2xsZXI6OnNob3dTdWdn
ZXN0aW9uQm94KToKKyAgICAgICAgKFdlYkNvcmU6OlN1Z2dlc3Rpb25Cb3hDb250cm9sbGVyOjpo
aWRlU3VnZ2VzdGlvbkJveCk6CisgICAgICAgIChXZWJDb3JlOjpTdWdnZXN0aW9uQm94Q29udHJv
bGxlcjo6cGFyc2VTdWdnZXN0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpTdWdnZXN0aW9uQm94
Q29udHJvbGxlcjo6YWRkU3VnZ2VzdGlvbnNUb1N1Z2dlc3Rpb25Cb3gpOgorICAgICAgICAoV2Vi
Q29yZTo6YWRqdXN0U3VnZ2VzdGlvbkJveFBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlN1
Z2dlc3Rpb25Cb3hDb250cm9sbGVyOjpjcmVhdGVTdWdnZXN0aW9uQm94KToKKyAgICAgICAgKFdl
YkNvcmU6OlN1Z2dlc3Rpb25Cb3hDb250cm9sbGVyOjpmb2N1cyk6CisgICAgICAgIChXZWJDb3Jl
OjpTdWdnZXN0aW9uQm94Q29udHJvbGxlcjo6dW5mb2N1cyk6CisgICAgICAgIChXZWJDb3JlOjpT
dWdnZXN0aW9uQm94Q29udHJvbGxlcjo6cmVzZXRGb2N1cyk6CisgICAgICAgIChXZWJDb3JlOjpT
dWdnZXN0aW9uQm94Q29udHJvbGxlcjo6c2VsZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlN1Z2dl
c3Rpb25Cb3hDb250cm9sbGVyOjpzdWdnZXN0aW9uRWxlbWVudEF0SW5kZXgpOgorICAgICAgICAq
IHBhZ2UvU3VnZ2VzdGlvbkJveENvbnRyb2xsZXIuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3Jl
OjpTdWdnZXN0aW9uQm94Q29udHJvbGxlcjo6aGFzT3BlbmVkU3VnZ2VzdGlvbkJveCk6CisgICAg
ICAgIChXZWJDb3JlOjpTdWdnZXN0aW9uQm94Q29udHJvbGxlcjo6Zm9jdXNlZEVsZW1lbnQpOgor
ICAgICAgICAqIHBhZ2UvU3VnZ2VzdGlvbkVsZW1lbnQuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OlN1Z2dlc3Rpb25FbGVtZW50OjpTdWdnZXN0aW9uRWxlbWVudCk6CisgICAgICAgIChX
ZWJDb3JlOjpTdWdnZXN0aW9uRWxlbWVudDo6flN1Z2dlc3Rpb25FbGVtZW50KToKKyAgICAgICAg
KFdlYkNvcmU6OlN1Z2dlc3Rpb25FbGVtZW50OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
U3VnZ2VzdGlvbkVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6U3VnZ2VzdGlvbkVsZW1lbnQ6OmZvY3VzZWQpOgorICAgICAgICAoV2ViQ29yZTo6U3VnZ2Vz
dGlvbkVsZW1lbnQ6OnVuZm9jdXNlZCk6CisgICAgICAgICogcGFnZS9TdWdnZXN0aW9uRWxlbWVu
dC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlN1Z2dlc3Rpb25FbGVtZW50Ojp2YWx1ZSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3RrL1JlbmRlclRoZW1lR3RrLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclRoZW1lR3RrOjpleHRyYURlZmF1bHRTdHlsZVNoZWV0KToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclRoZW1lR3RrOjpzdXBwb3J0c0RhdGFMaXN0VUkpOgorICAgICAgICAq
IHBsYXRmb3JtL2d0ay9SZW5kZXJUaGVtZUd0ay5oOgorCiAyMDEzLTEyLTA3ICBDaGFuZ1Nlb2sg
T2ggIDxjaGFuZ3Nlb2sub2hAY29sbGFib3JhLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLiBC
dWlsZCBmaXggZm9yIGd0ayBwb3J0IGFmdGVyIHIxNjAyNjAuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMTJlNzkx
YWFmMDJhZTZjNjM0OGI4M2IzZjQ2MWYzMjY4MDA0ODkwOC4uMWRkMGVlMTNjMDc1ZDdiYTJmMDcz
ZWY2YjQwMjM2ODE4ZWE3MmU4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDEzLTEy
LTEwICBDaGFuZ1Nlb2sgT2ggIDxjaGFuZ3Nlb2sub2hAY29sbGFib3JhLmNvbT4KKworICAgICAg
ICBbR1RLXSBEYXRhbGlzdCBlbGVtZW50IHN1cHBvcnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk4OTM0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgSW5zdGFsbGVkIFdLQnVuZGxlUGFnZUZvcm1DbGllbnQg
dG8gaGFuZGxlIGEgc3VnZ2VzdGlvbiBwb3B1cC4KKworICAgICAgICAqIFdlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL2d0ay9XZWJLaXRXZWJQYWdlLmNwcDoKKyAgICAgICAgKHRleHRGaWVs
ZERpZEJlZ2luRWRpdGluZyk6IFNldCBhIGZvY3VzZWQgSFRNTElucHV0RWxlbWVudCB0byBTdWdn
ZXN0aW9uQ29udHJvbGxlci4KKyAgICAgICAgKHRleHRGaWVsZERpZEVuZEVkaXRpbmcpOiBTZWxl
Y3QgYSBmb2N1c2VkIGl0ZW0gd2hlbiBmb2N1c2luZyBvdXQuCisgICAgICAgICh0ZXh0RGlkQ2hh
bmdlSW5UZXh0RmllbGQpOiBTaG93IGluY3JlbWVudGFsIGNvbXBsZXRpb24gaWYgSFRNTElucHV0
RWxlbWVudCBoYXMgYSBkYXRhbGlzdC4KKyAgICAgICAgKHNob3VsZFBlcmZvcm1BY3Rpb25JblRl
eHRGaWVsZCk6IEhhbmRsZSBkaXJlY3Rpb25zL2VudGVyIGtleS4KKyAgICAgICAgKHdlYmtpdFdl
YlBhZ2VDcmVhdGUpOgorCiAyMDEzLTEyLTA3ICBHdXN0YXZvIE5vcm9uaGEgU2lsdmEgIDxnbnNA
Z25vbWUub3JnPgogCiAgICAgICAgIEZpeCBBUEkgdGVzdCBleHBlY3RhdGlvbiBmb2xsb3dpbmcg
MTYwMjIwLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQppbmRleCAyMWEwOGZjYWEwOWM1ZGQwMzI0ODIyMmVh
YWZlNjJmOGFjY2U2NGEzLi4wYmEzMDdkMTc3Mjg4NDRmMTgwNjE3OTA4MTU3YjY5M2Y2ODhmYjQ2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9HTlVtYWtlZmlsZS5hbQpAQCAtMjczLDcgKzI3Myw4IEBAIFVTRVJfQUdFTlRfU1RZ
TEVfU0hFRVRTID0gXAogCSQoV2ViQ29yZSkvY3NzL21lZGlhQ29udHJvbHMuY3NzIFwKIAkkKFdl
YkNvcmUpL2Nzcy9tZWRpYUNvbnRyb2xzR3RrLmNzcyBcCiAJJChXZWJDb3JlKS9jc3MvZnVsbHNj
cmVlbi5jc3MgXAotCSQoV2ViQ29yZSkvY3NzL3BsdWdJbnMuY3NzCisJJChXZWJDb3JlKS9jc3Mv
cGx1Z0lucy5jc3MgXAorCSQoV2ViQ29yZSkvY3NzL3RoZW1lR3RrLmNzcwogCiAjIHBsdWctaW4g
cmVzb3VyY2VzCiBQTFVHX0lOU19SRVNPVVJDRVMgPSBcCkBAIC02OTcsNiArNjk4LDcgQEAgRVhU
UkFfRElTVCArPSBcCiAJU291cmNlL1dlYkNvcmUvY3NzL3BsdWdJbnMuY3NzIFwKIAlTb3VyY2Uv
V2ViQ29yZS9jc3MvcXVpcmtzLmNzcyBcCiAJU291cmNlL1dlYkNvcmUvY3NzL3N2Zy5jc3MgXAor
CVNvdXJjZS9XZWJDb3JlL2Nzcy90aGVtZUd0ay5jc3MgXAogCVNvdXJjZS9XZWJDb3JlL2Nzcy9T
VkdDU1NQcm9wZXJ0eU5hbWVzLmluIFwKIAlTb3VyY2UvV2ViQ29yZS9jc3MvU1ZHQ1NTVmFsdWVL
ZXl3b3Jkcy5pbiBcCiAJU291cmNlL1dlYkNvcmUvY3NzL3ZpZXctc291cmNlLmNzcyBcCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNlL1dlYkNv
cmUvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCA2YjQ1YjkzNTZmMmQ5ZGZkOWVkZWRmNzg4ZTdi
MTMyN2Y4YzViOThhLi4xYjQxNmI1ZmUzYWQ4ZTZiNGExNThiNGVjZTNjMWE5NzUwZjQzZDI2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTQxOTUsNiArNDE5NSwxMCBAQCB3ZWJj
b3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL3BhZ2UvUHJpbnRDb250ZXh0LmggXAog
CVNvdXJjZS9XZWJDb3JlL3BhZ2UvU2NyZWVuLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGFnZS9T
Y3JlZW4uaCBcCisJU291cmNlL1dlYkNvcmUvcGFnZS9TdWdnZXN0aW9uRWxlbWVudC5jcHAgXAor
CVNvdXJjZS9XZWJDb3JlL3BhZ2UvU3VnZ2VzdGlvbkVsZW1lbnQuaCBcCisJU291cmNlL1dlYkNv
cmUvcGFnZS9TdWdnZXN0aW9uQm94Q29udHJvbGxlci5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL3Bh
Z2UvU3VnZ2VzdGlvbkJveENvbnRyb2xsZXIuaCBcCiAJU291cmNlL1dlYkNvcmUvcGFnZS9zY3Jv
bGxpbmcvU2Nyb2xsaW5nQ29uc3RyYWludHMuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wYWdlL3Nj
cm9sbGluZy9TY3JvbGxpbmdDb25zdHJhaW50cy5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wYWdlL3Nj
cm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvci5jcHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvY3NzL3RoZW1lR3RrLmNzcyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy90aGVtZUd0ay5jc3MK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNjgyZjg1ZjE2Mzg3ZWYyMTQwNjA5MDcxNDA4ZTk4ZmZiNTBjZjU5NgotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy90aGVtZUd0ay5jc3MKQEAgLTAsMCAr
MSw0OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBDb2xsYWJvcmEgTHRkLgorICoKKyAq
IFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh
bmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0
IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMg
ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBX
SVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m
CisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu
ICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl
IGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxp
YnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlm
dGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqCisgKi8KKworaW5w
dXQ6Oi13ZWJraXQtc3VnZ2VzdGlvbi1ib3ggeworICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAg
ICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmNmY2ZjOworICAgIHotaW5kZXg6IDIxNDc0ODM2NDc7Cisg
ICAgbWF4LWhlaWdodDogMjAwcHg7CisgICAgLXdlYmtpdC1ib3gtc2hhZG93OiAycHggMnB4IDVw
eCAjQUVBRUFFOworfQorCitpbnB1dDo6LXdlYmtpdC1zdWdnZXN0aW9uLWJveC1lbGVtZW50IHsK
KyAgICBkaXNwbGF5OiBibG9jazsKKyAgICBwYWRkaW5nOiAzcHg7CisgICAgdGV4dC1kZWNvcmF0
aW9uOiBub25lOworICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOworICAgIG92ZXJmbG93OiBo
aWRkZW47Cit9CisKK2lucHV0Ojotd2Via2l0LXN1Z2dlc3Rpb24tYm94LWVsZW1lbnQtZm9jdXNl
ZCB7CisgICAgZGlzcGxheTogYmxvY2s7CisgICAgcGFkZGluZzogM3B4OworICAgIHRleHQtZGVj
b3JhdGlvbjogbm9uZTsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDAwMEZGOworICAgIHRleHQt
b3ZlcmZsb3c6IGVsbGlwc2lzOworICAgIG92ZXJmbG93OiBoaWRkZW47Cit9CisKK2lucHV0Ojot
d2Via2l0LXN1Z2dlc3Rpb24tcHJlZml4LXRleHQgeworICAgIGZvbnQtd2VpZ2h0OiBib2xkOwor
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvUGFnZS5jcHAKaW5kZXggYWU3MjAzZGE1ODI0MTcxMWZkNzk0ZmJmOWZlNmZjN2U4
YmM2YmNkMy4uYjRlYjVkN2ZjNzAxZjA4MDZlNWM5ZjEzNDBiOGFmZGI4ZjZkYTljNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1BhZ2UuY3BwCkBAIC04MSw2ICs4MSw3IEBACiAjaW5jbHVkZSAiU3RvcmFnZU5hbWVzcGFj
ZS5oIgogI2luY2x1ZGUgIlN0eWxlUmVzb2x2ZXIuaCIKICNpbmNsdWRlICJTdWJmcmFtZUxvYWRl
ci5oIgorI2luY2x1ZGUgIlN1Z2dlc3Rpb25Cb3hDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiVGV4
dFJlc291cmNlRGVjb2Rlci5oIgogI2luY2x1ZGUgIlZpc2l0ZWRMaW5rU3RhdGUuaCIKICNpbmNs
dWRlICJWb2lkQ2FsbGJhY2suaCIKQEAgLTEyNSw2ICsxMjYsOSBAQCBmbG9hdCBkZXZpY2VTY2Fs
ZUZhY3RvcihGcmFtZSogZnJhbWUpCiAKIFBhZ2U6OlBhZ2UoUGFnZUNsaWVudHMmIHBhZ2VDbGll
bnRzKQogICAgIDogbV9jaHJvbWUoc3RkOjptYWtlX3VuaXF1ZTxDaHJvbWU+KCp0aGlzLCAqcGFn
ZUNsaWVudHMuY2hyb21lQ2xpZW50KSkKKyNpZiBFTkFCTEUoREFUQUxJU1RfRUxFTUVOVCkKKyAg
ICAsIG1fc3VnZ2VzdGlvbkJveENvbnRyb2xsZXIoc3RkOjptYWtlX3VuaXF1ZTxTdWdnZXN0aW9u
Qm94Q29udHJvbGxlcj4oKnRoaXMpKQorI2VuZGlmCiAgICAgLCBtX2RyYWdDYXJldENvbnRyb2xs
ZXIoc3RkOjptYWtlX3VuaXF1ZTxEcmFnQ2FyZXRDb250cm9sbGVyPigpKQogI2lmIEVOQUJMRShE
UkFHX1NVUFBPUlQpCiAgICAgLCBtX2RyYWdDb250cm9sbGVyKHN0ZDo6bWFrZV91bmlxdWU8RHJh
Z0NvbnRyb2xsZXI+KCp0aGlzLCAqcGFnZUNsaWVudHMuZHJhZ0NsaWVudCkpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5o
CmluZGV4IDcyMzQzNzA2MWM1NWMwZTZmODg5NjVhOWQyZGY5M2EwNGQyMDUwYjIuLjBjZTY0MzM1
NmUxNGEyY2VkZjcxMmJmMTcyMjI4MWMyNTJmZmIxNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCkBAIC02Miw2
ICs2Miw3IEBAIGNsYXNzIENocm9tZUNsaWVudDsKIGNsYXNzIENsaWVudFJlY3RMaXN0OwogY2xh
c3MgQ29udGV4dE1lbnVDbGllbnQ7CiBjbGFzcyBDb250ZXh0TWVudUNvbnRyb2xsZXI7CitjbGFz
cyBTdWdnZXN0aW9uQm94Q29udHJvbGxlcjsKIGNsYXNzIERvY3VtZW50OwogY2xhc3MgRHJhZ0Nh
cmV0Q29udHJvbGxlcjsKIGNsYXNzIERyYWdDbGllbnQ7CkBAIC0xODYsNiArMTg3LDkgQEAgcHVi
bGljOgogI2VuZGlmCiAKICAgICBDaHJvbWUmIGNocm9tZSgpIGNvbnN0IHsgcmV0dXJuICptX2No
cm9tZTsgfQorI2lmIEVOQUJMRShEQVRBTElTVF9FTEVNRU5UKQorICAgIFN1Z2dlc3Rpb25Cb3hD
b250cm9sbGVyJiBzdWdnZXN0aW9uQm94Q29udHJvbGxlcigpIGNvbnN0IHsgcmV0dXJuICptX3N1
Z2dlc3Rpb25Cb3hDb250cm9sbGVyOyB9CisjZW5kaWYKICAgICBEcmFnQ2FyZXRDb250cm9sbGVy
JiBkcmFnQ2FyZXRDb250cm9sbGVyKCkgY29uc3QgeyByZXR1cm4gKm1fZHJhZ0NhcmV0Q29udHJv
bGxlcjsgfQogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCiAgICAgRHJhZ0NvbnRyb2xsZXImIGRy
YWdDb250cm9sbGVyKCkgY29uc3QgeyByZXR1cm4gKm1fZHJhZ0NvbnRyb2xsZXI7IH0KQEAgLTQz
NSw2ICs0MzksOSBAQCBwcml2YXRlOgogICAgIHZvaWQgdW50aHJvdHRsZVRpbWVycygpOwogCiAg
ICAgY29uc3Qgc3RkOjp1bmlxdWVfcHRyPENocm9tZT4gbV9jaHJvbWU7CisjaWYgRU5BQkxFKERB
VEFMSVNUX0VMRU1FTlQpCisgICAgY29uc3Qgc3RkOjp1bmlxdWVfcHRyPFN1Z2dlc3Rpb25Cb3hD
b250cm9sbGVyPiBtX3N1Z2dlc3Rpb25Cb3hDb250cm9sbGVyOworI2VuZGlmCiAgICAgY29uc3Qg
c3RkOjp1bmlxdWVfcHRyPERyYWdDYXJldENvbnRyb2xsZXI+IG1fZHJhZ0NhcmV0Q29udHJvbGxl
cjsKIAogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1N1Z2dlc3Rpb25Cb3hDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
U3VnZ2VzdGlvbkJveENvbnRyb2xsZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE3ZDRkNTgxY2Q1YzE3YWEz
N2I4ZTZiM2FhMTNjOGZlNzU5MGI3YzMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1N1Z2dlc3Rpb25Cb3hDb250cm9sbGVyLmNwcApAQCAtMCwwICsxLDMwMyBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDEyIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzIENvbGxhYm9yYSBMdGQuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBt
ZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUg
b2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJT
IEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICog
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlN1Z2dlc3Rpb25Cb3hD
b250cm9sbGVyLmgiCisKKyNpZiBFTkFCTEUoREFUQUxJU1RfRUxFTUVOVCkKKworI2luY2x1ZGUg
IkNTU1Byb3BlcnR5TmFtZXMuaCIKKyNpbmNsdWRlICJDU1NWYWx1ZUtleXdvcmRzLmgiCisjaW5j
bHVkZSAiRE9NVG9rZW5MaXN0LmgiCisjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZVBsYWNlaG9sZGVy
LmgiCisjaW5jbHVkZSAiSFRNTENvbGxlY3Rpb24uaCIKKyNpbmNsdWRlICJIVE1MRGF0YUxpc3RF
bGVtZW50LmgiCisjaW5jbHVkZSAiSFRNTERpdkVsZW1lbnQuaCIKKyNpbmNsdWRlICJIVE1MSW5w
dXRFbGVtZW50LmgiCisjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCisjaW5jbHVkZSAiSFRNTE9wdGlv
bkVsZW1lbnQuaCIKKyNpbmNsdWRlICJIVE1MU3BhbkVsZW1lbnQuaCIKKyNpbmNsdWRlICJQYWdl
LmgiCisjaW5jbHVkZSAiUmVuZGVyQmxvY2suaCIKKyNpbmNsdWRlICJSZW5kZXJPYmplY3QuaCIK
KyNpbmNsdWRlICJTaGFkb3dSb290LmgiCisjaW5jbHVkZSAiU3R5bGVSZXNvbHZlci5oIgorI2lu
Y2x1ZGUgIlN1Z2dlc3Rpb25FbGVtZW50LmgiCisjaW5jbHVkZSAiVGV4dC5oIgorI2luY2x1ZGUg
PHd0Zi9QYXNzT3duUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordXNpbmcgbmFtZXNw
YWNlIEhUTUxOYW1lczsKKworU3VnZ2VzdGlvbkJveENvbnRyb2xsZXI6OlN1Z2dlc3Rpb25Cb3hD
b250cm9sbGVyKFBhZ2UmIHBhZ2UpCisgICAgOiBtX3BhZ2UocGFnZSkKKyAgICAsIG1faW5wdXRF
bGVtZW50KDApCisgICAgLCBtX2luZGV4KC0xKQoreworfQorCitTdWdnZXN0aW9uQm94Q29udHJv
bGxlcjo6flN1Z2dlc3Rpb25Cb3hDb250cm9sbGVyKCkKK3sKKyAgICBoaWRlU3VnZ2VzdGlvbkJv
eCgpOworfQorCit2b2lkIFN1Z2dlc3Rpb25Cb3hDb250cm9sbGVyOjpzZXRJbnB1dEVsZW1lbnQo
SFRNTElucHV0RWxlbWVudCogZWxlbWVudCkKK3sKKyAgICBtX2lucHV0RWxlbWVudCA9IGVsZW1l
bnQ7Cit9CisKK3ZvaWQgU3VnZ2VzdGlvbkJveENvbnRyb2xsZXI6OnNldElucHV0RWxlbWVudEFu
ZFNob3dTdWdnZXN0aW9uQm94KEhUTUxJbnB1dEVsZW1lbnQqIGVsZW1lbnQsIGJvb2wgc2hvd0Z1
bGxMaXN0KQoreworICAgIGhpZGVTdWdnZXN0aW9uQm94KCk7CisgICAgbV9pbnB1dEVsZW1lbnQg
PSBlbGVtZW50OworICAgIHNob3dTdWdnZXN0aW9uQm94KHNob3dGdWxsTGlzdCk7Cit9CisKK3Zv
aWQgU3VnZ2VzdGlvbkJveENvbnRyb2xsZXI6OnNob3dTdWdnZXN0aW9uQm94KGJvb2wgc2hvd0Z1
bGxMaXN0KQoreworICAgIHJlc2V0Rm9jdXMoKTsKKyAgICBtX3N1Z2dlc3Rpb25zLmNsZWFyKCk7
CisKKyAgICBpZiAoIXBhcnNlU3VnZ2VzdGlvbnMoc2hvd0Z1bGxMaXN0KSkgeworICAgICAgICBo
aWRlU3VnZ2VzdGlvbkJveCgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKCFt
X3N1Z2dlc3Rpb25Cb3gpCisgICAgICAgIGNyZWF0ZVN1Z2dlc3Rpb25Cb3goKTsKKworICAgIGFk
ZFN1Z2dlc3Rpb25zVG9TdWdnZXN0aW9uQm94KCk7Cit9CisKK3ZvaWQgU3VnZ2VzdGlvbkJveENv
bnRyb2xsZXI6OmhpZGVTdWdnZXN0aW9uQm94KCkKK3sKKyAgICBpZiAobV9zdWdnZXN0aW9uQm94
KSB7CisgICAgICAgIGlmIChTaGFkb3dSb290KiBzaGFkb3dSb290ID0gbV9pbnB1dEVsZW1lbnQt
PnVzZXJBZ2VudFNoYWRvd1Jvb3QoKSkgeworICAgICAgICAgICAgRXhjZXB0aW9uQ29kZSBlYzsK
KyAgICAgICAgICAgIHNoYWRvd1Jvb3QtPnJlbW92ZUNoaWxkKG1fc3VnZ2VzdGlvbkJveC5nZXQo
KSwgZWMpOworICAgICAgICB9CisgICAgICAgIG1fc3VnZ2VzdGlvbkJveCA9IDA7CisgICAgfQor
CisgICAgbV9zdWdnZXN0aW9ucy5jbGVhcigpOworICAgIG1faW5kZXggPSAtMTsKK30KKworYm9v
bCBTdWdnZXN0aW9uQm94Q29udHJvbGxlcjo6cGFyc2VTdWdnZXN0aW9ucyhib29sIHNob3dGdWxs
TGlzdCkKK3sKKyAgICAvLyBSZXR1cm4gaWYgdGhpcyBjb250cm9sbGVyIGRvZXNuJ3QgaGF2ZSBh
biBpbnB1dCBlbGVtZW50IHRvIGF0dGFjaCB0bworICAgIGlmICghbV9pbnB1dEVsZW1lbnQpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIC8vIExpc3QgYXR0cmlidXRlIGV4aXN0cywgY2hl
Y2sgaWYgZGF0YWxpc3QgZXhpc3RzLgorICAgIEhUTUxEYXRhTGlzdEVsZW1lbnQqIGRhdGFsaXN0
ID0gbV9pbnB1dEVsZW1lbnQtPmRhdGFMaXN0KCk7CisgICAgaWYgKCFkYXRhbGlzdCkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgUmVmUHRyPEhUTUxDb2xsZWN0aW9uPiBvcHRpb25zTGlz
dCA9IGRhdGFsaXN0LT5vcHRpb25zKCk7CisgICAgU3RyaW5nIHByZWZpeCA9IG1faW5wdXRFbGVt
ZW50LT5pbm5lclRleHRWYWx1ZSgpOworCisgICAgLy8gRXhpdCBpZjoKKyAgICAvLyAxKSBJZiBs
ZW5ndGggb2Ygbm9kZXMgaW4gZGF0YWxpc3QgaXMgZW1wdHksIHJldHVybi4KKyAgICAvLyAyKSBJ
ZiB3ZSBkbyBub3QgYWxsb3cgZW1wdHkgcHJlZml4ZXMgYW5kIHByZWZpeCBpcyBudWxsCisgICAg
aWYgKCFvcHRpb25zTGlzdC0+bGVuZ3RoKCkgfHwgKCFzaG93RnVsbExpc3QgJiYgcHJlZml4Lmlz
RW1wdHkoKSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIC8vIFByZWZpeCBtYXRjaCB0
aGUgaW5uZXIgdGV4dCB2YWx1ZSBvZiB0aGUgaW5wdXQgYWdhaW5zdCB0aGUgY2FuZGlkYXRlIHN1
Z2dlc3Rpb25zLgorICAgIC8vIE1ha2Ugc3VyZSB0aGUgbGVuZ3RoIG9mIHRoZSBzdWdnZXN0aW9u
IGlzIHNtYWxsZXIgdGhhbiBtYXggbGVuZ3RoCisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IG9wdGlvbnNMaXN0LT5sZW5ndGgoKTsgaSsrKSB7CisgICAgICAgIEhUTUxPcHRpb25FbGVtZW50
KiB0YXJnZXQgPSB0b0hUTUxPcHRpb25FbGVtZW50KChvcHRpb25zTGlzdC0+aXRlbShpKSkpOwor
ICAgICAgICBpZiAoIW1faW5wdXRFbGVtZW50LT5pc1ZhbGlkVmFsdWUodGFyZ2V0LT52YWx1ZSgp
KSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIFN0cmluZyBjYW5kaWRhdGVTdHJp
bmcgPSBtX2lucHV0RWxlbWVudC0+c2FuaXRpemVWYWx1ZSh0YXJnZXQtPnZhbHVlKCkpOworICAg
ICAgICBpZiAoIWNhbmRpZGF0ZVN0cmluZy5maW5kSWdub3JpbmdDYXNlKHByZWZpeCkgJiYgY2Fu
ZGlkYXRlU3RyaW5nLmxlbmd0aCgpIDw9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX2lucHV0RWxl
bWVudC0+bWF4TGVuZ3RoKCkpKQorICAgICAgICAgICAgbV9zdWdnZXN0aW9ucy5hcHBlbmQoY2Fu
ZGlkYXRlU3RyaW5nKTsKKyAgICB9CisKKyAgICByZXR1cm4gIW1fc3VnZ2VzdGlvbnMuaXNFbXB0
eSgpOworfQorCit2b2lkIFN1Z2dlc3Rpb25Cb3hDb250cm9sbGVyOjphZGRTdWdnZXN0aW9uc1Rv
U3VnZ2VzdGlvbkJveCgpCit7CisgICAgQVNTRVJUKG1fc3VnZ2VzdGlvbkJveCk7CisgICAgRG9j
dW1lbnQmIGRvY3VtZW50ID0gbV9zdWdnZXN0aW9uQm94LT5kb2N1bWVudCgpOworCisgICAgLy8g
Q2xlYXIgdGhlIHN1Z2dlc3Rpb24gYm94J3MgcHJldmlvdXMgdmFsdWVzCisgICAgbV9zdWdnZXN0
aW9uQm94LT5yZW1vdmVDaGlsZHJlbigpOworCisgICAgaW50IHByZWZpeEluZGV4ID0gbV9pbnB1
dEVsZW1lbnQtPmlubmVyVGV4dFZhbHVlKCkubGVuZ3RoKCk7CisKKyAgICB1bnNpZ25lZCB0b3Rh
bCA9IG1fc3VnZ2VzdGlvbnMuc2l6ZSgpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB0
b3RhbDsgKytpKSB7CisgICAgICAgIFJlZlB0cjxIVE1MRWxlbWVudD4gc3VnZ2VzdGlvbkl0ZW0g
PSBTdWdnZXN0aW9uRWxlbWVudDo6Y3JlYXRlKHRoaXMsIG1fc3VnZ2VzdGlvbnNbaV0sIGRvY3Vt
ZW50KTsKKworICAgICAgICAvLyBBcHBlbmQgdGhlIHBhcnQgd2hlcmUgaXQgcHJlZml4IG1hdGNo
ZWQKKyAgICAgICAgUmVmUHRyPEhUTUxTcGFuRWxlbWVudD4gcHJlZml4RWxlbWVudCA9IEhUTUxT
cGFuRWxlbWVudDo6Y3JlYXRlKEhUTUxOYW1lczo6c3BhblRhZywgZG9jdW1lbnQpOworICAgICAg
ICBwcmVmaXhFbGVtZW50LT5hcHBlbmRDaGlsZChUZXh0OjpjcmVhdGUoZG9jdW1lbnQsIG1fc3Vn
Z2VzdGlvbnNbaV0uc3Vic3RyaW5nKDAsIHByZWZpeEluZGV4KSkpOworICAgICAgICBwcmVmaXhF
bGVtZW50LT5zZXRQc2V1ZG8oIi13ZWJraXQtc3VnZ2VzdGlvbi1wcmVmaXgtdGV4dCIpOworCisg
ICAgICAgIHN1Z2dlc3Rpb25JdGVtLT5hcHBlbmRDaGlsZChwcmVmaXhFbGVtZW50LnJlbGVhc2Uo
KSwgQVNTRVJUX05PX0VYQ0VQVElPTik7CisgICAgICAgIC8vIEFwcGVuZCB0aGUgcmVzdCBvZiB0
aGUgdGV4dCBpbiB0aGUgc3VnZ2VzdGlvbiBpdGVtCisgICAgICAgIHN1Z2dlc3Rpb25JdGVtLT5h
cHBlbmRDaGlsZChUZXh0OjpjcmVhdGUoZG9jdW1lbnQsIG1fc3VnZ2VzdGlvbnNbaV0uc3Vic3Ry
aW5nKHByZWZpeEluZGV4KSksIEFTU0VSVF9OT19FWENFUFRJT04pOworCisgICAgICAgIG1fc3Vn
Z2VzdGlvbkJveC0+YXBwZW5kQ2hpbGQoc3VnZ2VzdGlvbkl0ZW0ucmVsZWFzZSgpLCBBU1NFUlRf
Tk9fRVhDRVBUSU9OKTsKKyAgICB9Cit9CisKK3N0YXRpYyB2b2lkIGFkanVzdFN1Z2dlc3Rpb25C
b3hQb3NpdGlvbihjb25zdCBMYXlvdXRSZWN0JiBob3N0UmVjdCwgSFRNTEVsZW1lbnQqIHN1Z2dl
c3Rpb25Cb3gpCit7CisgICAgLy8gRklYTUU6IHJldmVyc2UgcG9zaXRpb25pbmcgYW5kIHNjcm9s
bAorICAgIEFTU0VSVChzdWdnZXN0aW9uQm94KTsKKyAgICBpZiAoaG9zdFJlY3QuaXNFbXB0eSgp
KQorICAgICAgICByZXR1cm47CisKKyAgICBkb3VibGUgaG9zdFggPSBob3N0UmVjdC54KCk7Cisg
ICAgZG91YmxlIGhvc3RZID0gaG9zdFJlY3QueSgpOworICAgIGlmIChSZW5kZXJPYmplY3QqIHJl
bmRlcmVyID0gc3VnZ2VzdGlvbkJveC0+cmVuZGVyZXIoKSkgeworICAgICAgICBpZiAoUmVuZGVy
Qm94KiBjb250YWluZXIgPSByZW5kZXJlci0+Y29udGFpbmluZ0Jsb2NrKCkpIHsKKyAgICAgICAg
ICAgIEZsb2F0UG9pbnQgY29udGFpbmVyTG9jYXRpb24gPSBjb250YWluZXItPmxvY2FsVG9BYnNv
bHV0ZSgpOworICAgICAgICAgICAgaG9zdFggLT0gY29udGFpbmVyTG9jYXRpb24ueCgpICsgY29u
dGFpbmVyLT5ib3JkZXJMZWZ0KCk7CisgICAgICAgICAgICBob3N0WSAtPSBjb250YWluZXJMb2Nh
dGlvbi55KCkgKyBjb250YWluZXItPmJvcmRlclRvcCgpOworICAgICAgICB9CisgICAgfQorCisg
ICAgc3VnZ2VzdGlvbkJveC0+c2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eVRvcCwg
aG9zdFkgKyBob3N0UmVjdC5oZWlnaHQoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QWCk7Cisg
ICAgLy8gVGhlICdsZWZ0JyB2YWx1ZSBvZiA6Oi13ZWJraXQtdmFsaWRhdGlvbi1idWJibGUtYXJy
b3cuCisgICAgY29uc3QgaW50IGJ1YmJsZUFycm93VG9wT2Zmc2V0ID0gMzI7CisgICAgZG91Ymxl
IGJ1YmJsZVggPSBob3N0WDsKKyAgICBpZiAoaG9zdFJlY3Qud2lkdGgoKSAvIDIgPCBidWJibGVB
cnJvd1RvcE9mZnNldCkKKyAgICAgICAgYnViYmxlWCA9IHN0ZDo6bWF4KGhvc3RYICsgaG9zdFJl
Y3Qud2lkdGgoKSAvIDIgLSBidWJibGVBcnJvd1RvcE9mZnNldCwgMC4wKTsKKyAgICBzdWdnZXN0
aW9uQm94LT5zZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5TGVmdCwgYnViYmxlWCwg
Q1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QWCk7Cit9CisKK3ZvaWQgU3VnZ2VzdGlvbkJveENvbnRy
b2xsZXI6OmNyZWF0ZVN1Z2dlc3Rpb25Cb3goKQoreworICAgIFNoYWRvd1Jvb3QmIHNoYWRvd1Jv
b3QgPSBtX2lucHV0RWxlbWVudC0+ZW5zdXJlVXNlckFnZW50U2hhZG93Um9vdCgpOworICAgIERv
Y3VtZW50JiBkb2N1bWVudCA9IG1faW5wdXRFbGVtZW50LT5kb2N1bWVudCgpOworCisgICAgbV9z
dWdnZXN0aW9uQm94ID0gSFRNTERpdkVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCk7CisgICAgbV9z
dWdnZXN0aW9uQm94LT5zZXRQc2V1ZG8oIi13ZWJraXQtc3VnZ2VzdGlvbi1ib3giKTsKKworICAg
IC8vIE5lZWQgdG8gZm9yY2UgcG9zaXRpb246YWJzb2x1dGUgYmVjYXVzZSBSZW5kZXJNZW51TGlz
dCBkb2Vzbid0IGFzc3VtZSBpdAorICAgIC8vIGNvbnRhaW5zIG5vbi1hYnNvbHV0ZSBvciBub24t
Zml4ZWQgcmVuZGVyZXJzIGFzIGNoaWxkcmVuLgorICAgIG1fc3VnZ2VzdGlvbkJveC0+c2V0SW5s
aW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eVBvc2l0aW9uLCBDU1NWYWx1ZUFic29sdXRlKTsK
KyAgICBtX3N1Z2dlc3Rpb25Cb3gtPnNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlX
aWR0aCwgU3RyaW5nOjpudW1iZXIobV9pbnB1dEVsZW1lbnQtPmNsaWVudFdpZHRoKCkpICsgInB4
IiwgZmFsc2UpOworCisgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgc2hhZG93Um9vdC5h
cHBlbmRDaGlsZChtX3N1Z2dlc3Rpb25Cb3guZ2V0KCksIGVjKTsKKyAgICBBU1NFUlQoIWVjKTsK
KworICAgIGRvY3VtZW50LnVwZGF0ZUxheW91dCgpOworICAgIGFkanVzdFN1Z2dlc3Rpb25Cb3hQ
b3NpdGlvbihtX2lucHV0RWxlbWVudC0+Ym91bmRpbmdCb3goKSwgbV9zdWdnZXN0aW9uQm94Lmdl
dCgpKTsKK30KKwordm9pZCBTdWdnZXN0aW9uQm94Q29udHJvbGxlcjo6Zm9jdXMoRm9jdXNEaXJl
Y3Rpb24gZGlyZWN0aW9uKQoreworICAgIHVuZm9jdXMoKTsKKworICAgIHN3aXRjaCAoZGlyZWN0
aW9uKSB7CisgICAgY2FzZSBGb2N1c0RpcmVjdGlvbkZvcndhcmQ6CisgICAgY2FzZSBGb2N1c0Rp
cmVjdGlvbkRvd246CisgICAgICAgIGlmICgrK21faW5kZXggPj0gc3RhdGljX2Nhc3Q8aW50Piht
X3N1Z2dlc3Rpb25zLnNpemUoKSkpCisgICAgICAgICAgICBtX2luZGV4ID0gMDsKKyAgICAgICAg
YnJlYWs7CisgICAgY2FzZSBGb2N1c0RpcmVjdGlvbkJhY2t3YXJkOgorICAgIGNhc2UgRm9jdXNE
aXJlY3Rpb25VcDoKKyAgICAgICAgaWYgKC0tbV9pbmRleCA8IDApCisgICAgICAgICAgICBtX2lu
ZGV4ID0gbV9zdWdnZXN0aW9ucy5zaXplKCkgLSAxOworICAgICAgICBicmVhazsKKyAgICBkZWZh
dWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9CisKKyAgICBmb2N1cyht
X2luZGV4KTsKK30KKwordm9pZCBTdWdnZXN0aW9uQm94Q29udHJvbGxlcjo6Zm9jdXMoU3VnZ2Vz
dGlvbkVsZW1lbnQqIHN1Z2dlc3Rpb25FbGVtZW50KQoreworICAgIGlmIChtX2luZGV4ID49IDAg
JiYgc3VnZ2VzdGlvbkVsZW1lbnQgPT0gc3VnZ2VzdGlvbkVsZW1lbnRBdEluZGV4KG1faW5kZXgp
KQorICAgICAgICByZXR1cm47CisKKyAgICByZXNldEZvY3VzKCk7CisKKyAgICBpbnQgbmV3SW5k
ZXggPSAtMTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9zdWdnZXN0aW9ucy5zaXpl
KCk7ICsraSkgeworICAgICAgICBpZiAoc3VnZ2VzdGlvbkVsZW1lbnQgPT0gc3VnZ2VzdGlvbkVs
ZW1lbnRBdEluZGV4KGkpKQorICAgICAgICAgICAgbmV3SW5kZXggPSBpOworICAgIH0KKworICAg
IG1faW5kZXggPSBuZXdJbmRleDsKKyAgICBpZiAobV9pbmRleCA+PSAwKQorICAgICAgICBmb2N1
cyhtX2luZGV4KTsKK30KKwordm9pZCBTdWdnZXN0aW9uQm94Q29udHJvbGxlcjo6Zm9jdXMoaW50
IGluZGV4KQoreworICAgIHN1Z2dlc3Rpb25FbGVtZW50QXRJbmRleChpbmRleCktPmZvY3VzZWQo
KTsKK30KKwordm9pZCBTdWdnZXN0aW9uQm94Q29udHJvbGxlcjo6dW5mb2N1cygpCit7CisgICAg
aWYgKG1faW5kZXggPCAwKQorICAgICAgICByZXR1cm47CisKKyAgICBzdWdnZXN0aW9uRWxlbWVu
dEF0SW5kZXgobV9pbmRleCktPnVuZm9jdXNlZCgpOworfQorCit2b2lkIFN1Z2dlc3Rpb25Cb3hD
b250cm9sbGVyOjpyZXNldEZvY3VzKCkKK3sKKyAgICB1bmZvY3VzKCk7CisgICAgbV9pbmRleCA9
IC0xOworfQorCitib29sIFN1Z2dlc3Rpb25Cb3hDb250cm9sbGVyOjpzZWxlY3QoKQoreworICAg
IGlmIChtX2luZGV4IDwgMCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgU3RyaW5nIHZh
bHVlID0gc3VnZ2VzdGlvbkVsZW1lbnRBdEluZGV4KG1faW5kZXgpLT52YWx1ZSgpOworICAgIG1f
aW5wdXRFbGVtZW50LT5zZXRFZGl0aW5nVmFsdWUodmFsdWUpOworCisgICAgaGlkZVN1Z2dlc3Rp
b25Cb3goKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworU3VnZ2VzdGlvbkVsZW1lbnQqIFN1Z2dl
c3Rpb25Cb3hDb250cm9sbGVyOjpzdWdnZXN0aW9uRWxlbWVudEF0SW5kZXgoaW50IGluZGV4KQor
eworICAgIHJldHVybiBzdGF0aWNfY2FzdDxTdWdnZXN0aW9uRWxlbWVudCo+KG1fc3VnZ2VzdGlv
bkJveC0+Y2hpbGROb2RlKGluZGV4KSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwor
I2VuZGlmIC8vIEVOQUJMRShEQVRBTElTVF9FTEVNRU5UKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9TdWdnZXN0aW9uQm94Q29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9TdWdnZXN0aW9uQm94Q29udHJvbGxlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI4ZGFkZDQ0YWNjZjYxZTgw
ZDJiYWNhNDEwNTJhZjdiZTQ3YmY0MGYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1N1Z2dlc3Rpb25Cb3hDb250cm9sbGVyLmgKQEAgLTAsMCArMSw5NCBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDEyIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzIENvbGxhYm9yYSBMdGQuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6
CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIK
KyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2Yg
R29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2lmbmRlZiBTdWdnZXN0aW9uQm94Q29udHJvbGxlcl9oCisjZGVmaW5lIFN1Z2dl
c3Rpb25Cb3hDb250cm9sbGVyX2gKKworI2lmIEVOQUJMRShEQVRBTElTVF9FTEVNRU5UKQorCisj
aW5jbHVkZSAiRm9jdXNEaXJlY3Rpb24uaCIKKyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4K
KyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgSFRNTElucHV0RWxlbWVudDsKK2NsYXNz
IEhUTUxFbGVtZW50OworY2xhc3MgUGFnZTsKK2NsYXNzIFN1Z2dlc3Rpb25FbGVtZW50OworCitj
bGFzcyBTdWdnZXN0aW9uQm94Q29udHJvbGxlciB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUo
U3VnZ2VzdGlvbkJveENvbnRyb2xsZXIpOworcHVibGljOgorICAgIFN1Z2dlc3Rpb25Cb3hDb250
cm9sbGVyKFBhZ2UmKTsKKyAgICB+U3VnZ2VzdGlvbkJveENvbnRyb2xsZXIoKTsKKworICAgIGJv
b2wgaGFzT3BlbmVkU3VnZ2VzdGlvbkJveCgpIGNvbnN0IHsgcmV0dXJuICFtX3N1Z2dlc3Rpb25z
LmlzRW1wdHkoKTsgfQorCisgICAgdm9pZCBzZXRJbnB1dEVsZW1lbnRBbmRTaG93U3VnZ2VzdGlv
bkJveChIVE1MSW5wdXRFbGVtZW50KiwgYm9vbCBzaG93RnVsbExpc3QgPSBmYWxzZSk7CisKKyAg
ICB2b2lkIHNob3dTdWdnZXN0aW9uQm94KGJvb2wgc2hvd0Z1bGxMaXN0KTsKKyAgICB2b2lkIGhp
ZGVTdWdnZXN0aW9uQm94KCk7CisKKyAgICB2b2lkIHNldElucHV0RWxlbWVudChIVE1MSW5wdXRF
bGVtZW50Kik7CisKKyAgICBib29sIHNlbGVjdCgpOworCisgICAgdm9pZCBmb2N1cyhTdWdnZXN0
aW9uRWxlbWVudCopOworICAgIHZvaWQgZm9jdXMoRm9jdXNEaXJlY3Rpb24pOworICAgIHZvaWQg
cmVzZXRGb2N1cygpOworCitwcml2YXRlOgorICAgIHZvaWQgYWRkU3VnZ2VzdGlvbnNUb1N1Z2dl
c3Rpb25Cb3goKTsKKyAgICB2b2lkIGNyZWF0ZVN1Z2dlc3Rpb25Cb3goKTsKKyAgICBib29sIHBh
cnNlU3VnZ2VzdGlvbnMoYm9vbCBzaG93RnVsbExpc3QpOworCisgICAgdm9pZCBmb2N1cyhpbnQg
aW5kZXgpOworICAgIHZvaWQgdW5mb2N1cygpOworCisgICAgU3VnZ2VzdGlvbkVsZW1lbnQqIHN1
Z2dlc3Rpb25FbGVtZW50QXRJbmRleChpbnQgaW5kZXgpOworCisgICAgUGFnZSYgbV9wYWdlOwor
CisgICAgUmVmUHRyPEhUTUxJbnB1dEVsZW1lbnQ+IG1faW5wdXRFbGVtZW50OworICAgIFJlZlB0
cjxIVE1MRWxlbWVudD4gbV9zdWdnZXN0aW9uQm94OworICAgIFZlY3RvcjxTdHJpbmc+IG1fc3Vn
Z2VzdGlvbnM7CisKKyAgICBpbnQgbV9pbmRleDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKKworI2VuZGlmIC8vIEVOQUJMRShEQVRBTElTVF9FTEVNRU5UKQorCisjZW5kaWYgLy8gU3Vn
Z2VzdGlvbkJveENvbnRyb2xsZXJfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9T
dWdnZXN0aW9uRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1N1Z2dlc3Rpb25FbGVt
ZW50LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi41ZWJlZDFjNWJiMDAyYmIzM2JjYjZiMDkxODgwZWZlZGU4MDAx
MzhlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TdWdnZXN0aW9uRWxl
bWVudC5jcHAKQEAgLTAsMCArMSw3NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBSZXNl
YXJjaCBJbiBNb3Rpb24gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxMyBDb2xsYWJvcmEgTHRkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRo
aXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv
b3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJh
bCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91
ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0
cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhP
VVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAq
IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl
ZSB0aGUgR05VCisgKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh
aWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBM
ZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7
IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4s
IDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEg
IFVTQQorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJTdWdnZXN0aW9uRWxl
bWVudC5oIgorCisjaWYgRU5BQkxFKERBVEFMSVNUX0VMRU1FTlQpCisKKyNpbmNsdWRlICJGcmFt
ZS5oIgorI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgorI2luY2x1ZGUgIk1vdXNlRXZlbnQuaCIKKyNp
bmNsdWRlICJQbGF0Zm9ybU1vdXNlRXZlbnQuaCIKKyNpbmNsdWRlICJTdWdnZXN0aW9uQm94Q29u
dHJvbGxlci5oIgorI2luY2x1ZGUgIlRvdWNoRXZlbnQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitTdWdnZXN0aW9uRWxlbWVudDo6U3VnZ2VzdGlvbkVsZW1lbnQoU3VnZ2VzdGlvbkJveENv
bnRyb2xsZXIqIHN1Z2dlc3Rpb25Cb3hDb250cm9sbGVyLCBTdHJpbmcmIHZhbHVlLCBjb25zdCBR
dWFsaWZpZWROYW1lJiBuYW1lLCBEb2N1bWVudCYgZG9jdW1lbnQpCisgICAgOiBIVE1MRGl2RWxl
bWVudChuYW1lLCBkb2N1bWVudCkKKyAgICAsIG1fc3VnZ2VzdGlvbkJveENvbnRyb2xsZXIoc3Vn
Z2VzdGlvbkJveENvbnRyb2xsZXIpCisgICAgLCBtX3ZhbHVlKHZhbHVlKQoreworICAgIHNldFBz
ZXVkbygiLXdlYmtpdC1zdWdnZXN0aW9uLWJveC1lbGVtZW50Iik7Cit9CisKK1N1Z2dlc3Rpb25F
bGVtZW50Ojp+U3VnZ2VzdGlvbkVsZW1lbnQoKQoreworfQorCitQYXNzUmVmUHRyPFN1Z2dlc3Rp
b25FbGVtZW50PiBTdWdnZXN0aW9uRWxlbWVudDo6Y3JlYXRlKFN1Z2dlc3Rpb25Cb3hDb250cm9s
bGVyKiBzdWdnZXN0aW9uQm94Q29udHJvbGxlciwgU3RyaW5nJiB2YWx1ZSwgRG9jdW1lbnQmIGRv
Y3VtZW50KQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcgU3VnZ2VzdGlvbkVsZW1lbnQoc3Vn
Z2VzdGlvbkJveENvbnRyb2xsZXIsIHZhbHVlLCBIVE1MTmFtZXM6OmRpdlRhZywgZG9jdW1lbnQp
KTsKK30KKwordm9pZCBTdWdnZXN0aW9uRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVu
dCogZXZlbnQpCit7CisgICAgaWYgKGV2ZW50LT5pc01vdXNlRXZlbnQoKSkgeworICAgICAgICBp
ZiAoZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkubW91c2Vkb3duRXZlbnQKKyAgICAgICAg
ICAgICYmIHN0YXRpY19jYXN0PE1vdXNlRXZlbnQqPihldmVudCktPmJ1dHRvbigpICE9IFJpZ2h0
QnV0dG9uCisgICAgICAgICAgICAmJiBkb2N1bWVudCgpLmZyYW1lKCkpCisgICAgICAgICAgICBt
X3N1Z2dlc3Rpb25Cb3hDb250cm9sbGVyLT5zZWxlY3QoKTsKKyAgICAgICAgZWxzZSBpZiAoZXZl
bnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkubW91c2Vtb3ZlRXZlbnQpCisgICAgICAgICAgICBt
X3N1Z2dlc3Rpb25Cb3hDb250cm9sbGVyLT5mb2N1cyh0aGlzKTsKKyAgICAgICAgZWxzZSBpZiAo
ZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkubW91c2VvdXRFdmVudCkKKyAgICAgICAgICAg
IG1fc3VnZ2VzdGlvbkJveENvbnRyb2xsZXItPnJlc2V0Rm9jdXMoKTsKKyAgICB9Cit9CisKK3Zv
aWQgU3VnZ2VzdGlvbkVsZW1lbnQ6OmZvY3VzZWQoKQoreworICAgIHNldFBzZXVkbygiLXdlYmtp
dC1zdWdnZXN0aW9uLWJveC1lbGVtZW50LWZvY3VzZWQiKTsKK30KKwordm9pZCBTdWdnZXN0aW9u
RWxlbWVudDo6dW5mb2N1c2VkKCkKK3sKKyAgICBzZXRQc2V1ZG8oIi13ZWJraXQtc3VnZ2VzdGlv
bi1ib3gtZWxlbWVudCIpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAv
LyBFTkFCTEUoREFUQUxJU1RfRUxFTUVOVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvU3VnZ2VzdGlvbkVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU3VnZ2VzdGlvbkVs
ZW1lbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi43Yjg3YThlZDA3ODdlODhmMjU0OWIwZGEyYzk3YzJjOTg3M2Mx
MGE0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TdWdnZXN0aW9uRWxl
bWVudC5oCkBAIC0wLDAgKzEsNTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgUmVzZWFy
Y2ggSW4gTW90aW9uIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTMgQ29sbGFib3JhIEx0ZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlz
IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
CisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwg
UHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIg
b3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJp
YnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VU
IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBN
RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUg
dGhlIEdOVQorICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls
cy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVz
c2VyIEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBp
ZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1
MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxICBV
U0EKKyAqLworCisjaWZuZGVmIFN1Z2dlc3Rpb25FbGVtZW50X2gKKyNkZWZpbmUgU3VnZ2VzdGlv
bkVsZW1lbnRfaAorCisjaWYgRU5BQkxFKERBVEFMSVNUX0VMRU1FTlQpCisKKyNpbmNsdWRlICJI
VE1MRGl2RWxlbWVudC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEV2ZW50Owor
Y2xhc3MgU3VnZ2VzdGlvbkJveENvbnRyb2xsZXI7CisKK2NsYXNzIFN1Z2dlc3Rpb25FbGVtZW50
IDogcHVibGljIEhUTUxEaXZFbGVtZW50IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0
cjxTdWdnZXN0aW9uRWxlbWVudD4gY3JlYXRlKFN1Z2dlc3Rpb25Cb3hDb250cm9sbGVyKiwgU3Ry
aW5nJiwgRG9jdW1lbnQmKTsKKyAgICB2aXJ0dWFsIH5TdWdnZXN0aW9uRWxlbWVudCgpOworCisg
ICAgdm9pZCBmb2N1c2VkKCk7CisgICAgdm9pZCB1bmZvY3VzZWQoKTsKKworICAgIFN0cmluZyB2
YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWU7IH0KKworcHJpdmF0ZToKKyAgICBTdWdnZXN0
aW9uRWxlbWVudChTdWdnZXN0aW9uQm94Q29udHJvbGxlciosIFN0cmluZyYsIGNvbnN0IFF1YWxp
ZmllZE5hbWUmLCBEb2N1bWVudCYpOworCisgICAgdmlydHVhbCB2b2lkIGRlZmF1bHRFdmVudEhh
bmRsZXIoRXZlbnQqKTsKKworICAgIFN1Z2dlc3Rpb25Cb3hDb250cm9sbGVyKiBtX3N1Z2dlc3Rp
b25Cb3hDb250cm9sbGVyOworICAgIFN0cmluZyBtX3ZhbHVlOworfTsKKworfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKERBVEFMSVNUX0VMRU1FTlQpCisKKyNlbmRp
ZiAvLyBTdWdnZXN0aW9uRWxlbWVudF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ndGsvUmVuZGVyVGhlbWVHdGsuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Rr
L1JlbmRlclRoZW1lR3RrLmNwcAppbmRleCA2MjllOGQ2YmUxOTUxODMzOTAzZjU2ZjUwZDBmOTAx
OTI4MzY5MGQwLi4xNjk2YzcyZDcyZGI0ZjZmOGYyOGEwNDM5YTcyMGNiMDFkY2JmY2UxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUmVuZGVyVGhlbWVHdGsuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9SZW5kZXJUaGVtZUd0ay5jcHAKQEAgLTEs
NyArMSw3IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA3IEFwcGxlIEluYy4KICAqIENvcHly
aWdodCAoQykgMjAwNyBBbHAgVG9rZXIgPGFscEBhdG9rZXIuY29tPgotICogQ29weXJpZ2h0IChD
KSAyMDA4IENvbGxhYm9yYSBMdGQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMTMgQ29sbGFi
b3JhIEx0ZC4KICAqIENvcHlyaWdodCAoQykgMjAwOSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNl
bgogICogQ29weXJpZ2h0IChDKSAyMDEwIElnYWxpYSBTLkwuCiAgKgpAQCAtNTAsNiArNTAsMTAg
QEAKICNpbmNsdWRlIDxndGsvZ3RrLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgog
CisjaWYgRU5BQkxFKERBVEFMSVNUX0VMRU1FTlQpCisjaW5jbHVkZSAiSW5wdXRUeXBlTmFtZXMu
aCIKKyNlbmRpZgorCiAjaWYgRU5BQkxFKFBST0dSRVNTX0VMRU1FTlQpCiAjaW5jbHVkZSAiUmVu
ZGVyUHJvZ3Jlc3MuaCIKICNlbmRpZgpAQCAtNDc0LDYgKzQ3OCwxMSBAQCB2b2lkIFJlbmRlclRo
ZW1lR3RrOjpwbGF0Zm9ybUNvbG9yc0RpZENoYW5nZSgpCiAgICAgUmVuZGVyVGhlbWU6OnBsYXRm
b3JtQ29sb3JzRGlkQ2hhbmdlKCk7CiB9CiAKK1N0cmluZyBSZW5kZXJUaGVtZUd0azo6ZXh0cmFE
ZWZhdWx0U3R5bGVTaGVldCgpCit7CisgICAgcmV0dXJuIFN0cmluZyh0aGVtZUd0a1VzZXJBZ2Vu
dFN0eWxlU2hlZXQsIHNpemVvZih0aGVtZUd0a1VzZXJBZ2VudFN0eWxlU2hlZXQpKTsKK30KKwog
I2lmIEVOQUJMRShWSURFTykKIFN0cmluZyBSZW5kZXJUaGVtZUd0azo6ZXh0cmFNZWRpYUNvbnRy
b2xzU3R5bGVTaGVldCgpCiB7CkBAIC03MjQsNiArNzMzLDIwIEBAIGludCBSZW5kZXJUaGVtZUd0
azo6c2xpZGVyVGlja09mZnNldEZyb21UcmFja0NlbnRlcigpIGNvbnN0CiAgICAgLy8gRklYTUU6
IFdlIG5lZWQgdG8gc2V0IHRoaXMgdG8gdGhlIHBvc2l0aW9uIG9mIHRoZSB0aWNrIG1hcmtzLgog
ICAgIHJldHVybiAwOwogfQorCitib29sIFJlbmRlclRoZW1lR3RrOjpzdXBwb3J0c0RhdGFMaXN0
VUkoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlKSBjb25zdAoreworICAgIGJvb2wgcmVzdWx0ID0g
dHlwZSA9PSBJbnB1dFR5cGVOYW1lczo6dGV4dCgpCisgICAgICAgIHx8IHR5cGUgPT0gSW5wdXRU
eXBlTmFtZXM6OnNlYXJjaCgpCisgICAgICAgIHx8IHR5cGUgPT0gSW5wdXRUeXBlTmFtZXM6OnVy
bCgpCisgICAgICAgIHx8IHR5cGUgPT0gSW5wdXRUeXBlTmFtZXM6OnRlbGVwaG9uZSgpCisgICAg
ICAgIHx8IHR5cGUgPT0gSW5wdXRUeXBlTmFtZXM6OmVtYWlsKCkKKyAgICAgICAgfHwgdHlwZSA9
PSBJbnB1dFR5cGVOYW1lczo6bnVtYmVyKCkKKyAgICAgICAgfHwgdHlwZSA9PSBJbnB1dFR5cGVO
YW1lczo6cmFuZ2UoKTsKKworICAgIC8vIFdlIHN1cHBvcnQgYWxsIG5vbi1wb3B1cCBkcml2ZW4g
dHlwZXMuCisgICAgcmV0dXJuIHJlc3VsdDsKK30KICNlbmRpZgogCiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUmVuZGVyVGhlbWVHdGsuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2d0ay9SZW5kZXJUaGVtZUd0ay5oCmluZGV4IDUwZTU3YWVkMWI4YmNhNzNm
ZDQ1OTg0Y2M5NzRmZTI0Y2JhYjEyMjUuLjhjMWMzMDk4YTlkMDM3MTU3MDYyM2M1MDJmZDhmMjc2
ZTE5MzRhZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9SZW5kZXJU
aGVtZUd0ay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9SZW5kZXJUaGVtZUd0
ay5oCkBAIC04NCw2ICs4NCw4IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgYm9vbCBwb3BzTWVu
dUJ5U3BhY2VPclJldHVybigpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIHRydWU7IH0KIAorICAg
IHZpcnR1YWwgU3RyaW5nIGV4dHJhRGVmYXVsdFN0eWxlU2hlZXQoKTsKKwogI2lmIEVOQUJMRShW
SURFTykKICAgICB2aXJ0dWFsIFN0cmluZyBleHRyYU1lZGlhQ29udHJvbHNTdHlsZVNoZWV0KCk7
CiAgICAgdmlydHVhbCBTdHJpbmcgZm9ybWF0TWVkaWFDb250cm9sc0N1cnJlbnRUaW1lKGZsb2F0
IGN1cnJlbnRUaW1lLCBmbG9hdCBkdXJhdGlvbikgY29uc3Q7CkBAIC05Nyw5ICs5OSwxMCBAQCBw
dWJsaWM6CiAjaWYgRU5BQkxFKERBVEFMSVNUX0VMRU1FTlQpCiAgICAgLy8gUmV0dXJucyBzaXpl
IG9mIG9uZSBzbGlkZXIgdGljayBtYXJrIGZvciBhIGhvcml6b250YWwgdHJhY2suCiAgICAgLy8g
Rm9yIHZlcnRpY2FsIHRyYWNrcyB3ZSByb3RhdGUgaXQgYW5kIHVzZSBpdC4gaS5lLiBXaWR0aCBp
cyBhbHdheXMgbGVuZ3RoIGFsb25nIHRoZSB0cmFjay4KLSAgICB2aXJ0dWFsIEludFNpemUgc2xp
ZGVyVGlja1NpemUoKSBjb25zdDsKKyAgICB2aXJ0dWFsIEludFNpemUgc2xpZGVyVGlja1NpemUo
KSBjb25zdCBPVkVSUklERTsKICAgICAvLyBSZXR1cm5zIHRoZSBkaXN0YW5jZSBvZiBzbGlkZXIg
dGljayBvcmlnaW4gZnJvbSB0aGUgc2xpZGVyIHRyYWNrIGNlbnRlci4KLSAgICB2aXJ0dWFsIGlu
dCBzbGlkZXJUaWNrT2Zmc2V0RnJvbVRyYWNrQ2VudGVyKCkgY29uc3Q7CisgICAgdmlydHVhbCBp
bnQgc2xpZGVyVGlja09mZnNldEZyb21UcmFja0NlbnRlcigpIGNvbnN0IE9WRVJSSURFOworICAg
IHZpcnR1YWwgYm9vbCBzdXBwb3J0c0RhdGFMaXN0VUkoY29uc3QgQXRvbWljU3RyaW5nJikgY29u
c3QgT1ZFUlJJREU7CiAjZW5kaWYKIAogI2lmZGVmIEdUS19BUElfVkVSU0lPTl8yCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvV2Vi
S2l0V2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9ndGsvV2ViS2l0V2ViUGFnZS5jcHAKaW5kZXggNDc0YTcwOGFkZDMzNTgwMjY5MzhhODFk
YzhhNTRlODQzY2QzY2U3Yy4uN2Y4ZWMwYzQzMWFhYjYzOWVhOTI2YzliNzRkMWJhYzliMWYxMGEy
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvZ3RrL1dlYktpdFdlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9XZWJLaXRXZWJQYWdlLmNwcApAQCAtMSw1ICsxLDYgQEAK
IC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTIgSWdhbGlhIFMuTC4KKyAqIENvcHlyaWdodCAoQykg
MjAxMyBDb2xsYWJvcmEgTHRkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJl
OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUg
dGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKQEAgLTIzLDYgKzI0LDcgQEAK
ICNpbmNsdWRlICJJbWFnZU9wdGlvbnMuaCIKICNpbmNsdWRlICJJbW11dGFibGVEaWN0aW9uYXJ5
LmgiCiAjaW5jbHVkZSAiSW5qZWN0ZWRCdW5kbGUuaCIKKyNpbmNsdWRlICJJbmplY3RlZEJ1bmRs
ZU5vZGVIYW5kbGUuaCIKICNpbmNsdWRlICJXS0J1bmRsZUFQSUNhc3QuaCIKICNpbmNsdWRlICJX
S0J1bmRsZUZyYW1lLmgiCiAjaW5jbHVkZSAiV2ViSW1hZ2UuaCIKQEAgLTM5LDYgKzQxLDkgQEAK
ICNpbmNsdWRlIDxXZWJDb3JlL0RvY3VtZW50TG9hZGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9G
cmFtZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWVWaWV3Lmg+CisjaW5jbHVkZSA8V2ViQ29y
ZS9IVE1MSW5wdXRFbGVtZW50Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9QYWdlLmg+CisjaW5jbHVk
ZSA8V2ViQ29yZS9TdWdnZXN0aW9uQm94Q29udHJvbGxlci5oPgogI2luY2x1ZGUgPGdsaWIvZ2kx
OG4tbGliLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3Rm
L3RleHQvQ1N0cmluZy5oPgpAQCAtMjIwLDYgKzIyNSw2MSBAQCBzdGF0aWMgdm9pZCBkaWRGYWls
TG9hZEZvclJlc291cmNlKFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBXS0J1bmRsZUZyYW1lUmVmLCB1
aW50NgogICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLmluamVjdGVkQnVuZGxlKCktPnBvc3RNZXNz
YWdlKFN0cmluZzo6ZnJvbVVURjgoIldlYlBhZ2UuRGlkRmFpbExvYWRGb3JSZXNvdXJjZSIpLCBJ
bW11dGFibGVEaWN0aW9uYXJ5OjphZG9wdChtZXNzYWdlKS5nZXQoKSk7CiB9CiAKKyNpZiBFTkFC
TEUoREFUQUxJU1RfRUxFTUVOVCkKK3N0YXRpYyB2b2lkIHRleHRGaWVsZERpZEJlZ2luRWRpdGlu
ZyhXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgV0tCdW5kbGVOb2RlSGFuZGxlUmVmIGh0bWxJbnB1dEVs
ZW1lbnRIYW5kbGUsIFdLQnVuZGxlRnJhbWVSZWYgZnJhbWUsIGNvbnN0IHZvaWQqIGNsaWVudElu
Zm8pCit7CisgICAgSFRNTElucHV0RWxlbWVudCogaHRtbElucHV0RWxlbWVudCA9IHRvSFRNTElu
cHV0RWxlbWVudCh0b0ltcGwoaHRtbElucHV0RWxlbWVudEhhbmRsZSktPmNvcmVOb2RlKCkpOwor
ICAgIGlmIChodG1sSW5wdXRFbGVtZW50ICYmIGh0bWxJbnB1dEVsZW1lbnQtPmRhdGFMaXN0KCkp
CisgICAgICAgIHRvSW1wbChwYWdlKS0+Y29yZVBhZ2UoKS0+c3VnZ2VzdGlvbkJveENvbnRyb2xs
ZXIoKS5zZXRJbnB1dEVsZW1lbnQoaHRtbElucHV0RWxlbWVudCk7Cit9CisKK3N0YXRpYyB2b2lk
IHRleHRGaWVsZERpZEVuZEVkaXRpbmcoV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIFdLQnVuZGxlTm9k
ZUhhbmRsZVJlZiBodG1sSW5wdXRFbGVtZW50SGFuZGxlLCBXS0J1bmRsZUZyYW1lUmVmIGZyYW1l
LCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQoreworICAgIEhUTUxJbnB1dEVsZW1lbnQqIGh0bWxJ
bnB1dEVsZW1lbnQgPSB0b0hUTUxJbnB1dEVsZW1lbnQodG9JbXBsKGh0bWxJbnB1dEVsZW1lbnRI
YW5kbGUpLT5jb3JlTm9kZSgpKTsKKyAgICBpZiAoaHRtbElucHV0RWxlbWVudCAmJiBodG1sSW5w
dXRFbGVtZW50LT5kYXRhTGlzdCgpKSB7CisgICAgICAgIHRvSW1wbChwYWdlKS0+Y29yZVBhZ2Uo
KS0+c3VnZ2VzdGlvbkJveENvbnRyb2xsZXIoKS5zZWxlY3QoKTsKKyAgICAgICAgdG9JbXBsKHBh
Z2UpLT5jb3JlUGFnZSgpLT5zdWdnZXN0aW9uQm94Q29udHJvbGxlcigpLmhpZGVTdWdnZXN0aW9u
Qm94KCk7CisgICAgfQorfQorCitzdGF0aWMgdm9pZCB0ZXh0RGlkQ2hhbmdlSW5UZXh0RmllbGQo
V0tCdW5kbGVQYWdlUmVmIHBhZ2UsIFdLQnVuZGxlTm9kZUhhbmRsZVJlZiBodG1sSW5wdXRFbGVt
ZW50SGFuZGxlLCBXS0J1bmRsZUZyYW1lUmVmIGZyYW1lLCBjb25zdCB2b2lkKiBjbGllbnRJbmZv
KQoreworICAgIEhUTUxJbnB1dEVsZW1lbnQqIGh0bWxJbnB1dEVsZW1lbnQgPSB0b0hUTUxJbnB1
dEVsZW1lbnQodG9JbXBsKGh0bWxJbnB1dEVsZW1lbnRIYW5kbGUpLT5jb3JlTm9kZSgpKTsKKyAg
ICBpZiAoaHRtbElucHV0RWxlbWVudCAmJiBodG1sSW5wdXRFbGVtZW50LT5kYXRhTGlzdCgpKQor
ICAgICAgICB0b0ltcGwocGFnZSktPmNvcmVQYWdlKCktPnN1Z2dlc3Rpb25Cb3hDb250cm9sbGVy
KCkuc2hvd1N1Z2dlc3Rpb25Cb3goZmFsc2UpOworfQorCitzdGF0aWMgYm9vbCBzaG91bGRQZXJm
b3JtQWN0aW9uSW5UZXh0RmllbGQoV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIFdLQnVuZGxlTm9kZUhh
bmRsZVJlZiBodG1sSW5wdXRFbGVtZW50SGFuZGxlLCBXS0lucHV0RmllbGRBY3Rpb25UeXBlIGFj
dGlvblR5cGUsIFdLQnVuZGxlRnJhbWVSZWYgZnJhbWUsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8p
Cit7CisgICAgYm9vbCBoYW5kbGVkID0gZmFsc2U7CisgICAgSFRNTElucHV0RWxlbWVudCogaHRt
bElucHV0RWxlbWVudCA9IHRvSFRNTElucHV0RWxlbWVudCh0b0ltcGwoaHRtbElucHV0RWxlbWVu
dEhhbmRsZSktPmNvcmVOb2RlKCkpOworICAgIGlmIChodG1sSW5wdXRFbGVtZW50ICYmIGh0bWxJ
bnB1dEVsZW1lbnQtPmRhdGFMaXN0KCkpIHsKKyAgICAgICAgU3VnZ2VzdGlvbkJveENvbnRyb2xs
ZXImIHN1Z2dlc3Rpb25Cb3hDb250cm9sbGVyID0gdG9JbXBsKHBhZ2UpLT5jb3JlUGFnZSgpLT5z
dWdnZXN0aW9uQm94Q29udHJvbGxlcigpOworCisgICAgICAgIGlmIChzdWdnZXN0aW9uQm94Q29u
dHJvbGxlci5oYXNPcGVuZWRTdWdnZXN0aW9uQm94KCkpIHsKKyAgICAgICAgICAgIGlmIChhY3Rp
b25UeXBlID09IFdLSW5wdXRGaWVsZEFjdGlvblR5cGVDYW5jZWwpIHsKKyAgICAgICAgICAgICAg
ICBzdWdnZXN0aW9uQm94Q29udHJvbGxlci5oaWRlU3VnZ2VzdGlvbkJveCgpOworICAgICAgICAg
ICAgICAgIGhhbmRsZWQgPSB0cnVlOworICAgICAgICAgICAgfSBlbHNlIGlmIChhY3Rpb25UeXBl
ID09IFdLSW5wdXRGaWVsZEFjdGlvblR5cGVNb3ZlVXApIHsKKyAgICAgICAgICAgICAgICBzdWdn
ZXN0aW9uQm94Q29udHJvbGxlci5mb2N1cyhGb2N1c0RpcmVjdGlvbkJhY2t3YXJkKTsKKyAgICAg
ICAgICAgICAgICBoYW5kbGVkID0gdHJ1ZTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoYWN0aW9u
VHlwZSA9PSBXS0lucHV0RmllbGRBY3Rpb25UeXBlTW92ZURvd24pIHsKKyAgICAgICAgICAgICAg
ICBzdWdnZXN0aW9uQm94Q29udHJvbGxlci5mb2N1cyhGb2N1c0RpcmVjdGlvbkZvcndhcmQpOwor
ICAgICAgICAgICAgICAgIGhhbmRsZWQgPSB0cnVlOworICAgICAgICAgICAgfSBlbHNlIGlmIChh
Y3Rpb25UeXBlID09IFdLSW5wdXRGaWVsZEFjdGlvblR5cGVJbnNlcnROZXdsaW5lKQorICAgICAg
ICAgICAgICAgIGhhbmRsZWQgPSBzdWdnZXN0aW9uQm94Q29udHJvbGxlci5zZWxlY3QoKTsKKyAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGlmIChhY3Rpb25UeXBlID09IFdLSW5wdXRGaWVs
ZEFjdGlvblR5cGVNb3ZlVXAgfHwgYWN0aW9uVHlwZSA9PSBXS0lucHV0RmllbGRBY3Rpb25UeXBl
TW92ZURvd24pIHsKKyAgICAgICAgICAgICAgICBzdWdnZXN0aW9uQm94Q29udHJvbGxlci5zZXRJ
bnB1dEVsZW1lbnRBbmRTaG93U3VnZ2VzdGlvbkJveChodG1sSW5wdXRFbGVtZW50LCB0cnVlKTsK
KyAgICAgICAgICAgICAgICBoYW5kbGVkID0gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fQorICAgIH0KKworICAgIHJldHVybiBoYW5kbGVkOworfQorI2VuZGlmIC8vIEVOQUJMRShEQVRB
TElTVF9FTEVNRU5UKQorCiBzdGF0aWMgdm9pZCB3ZWJraXRXZWJQYWdlR2V0UHJvcGVydHkoR09i
amVjdCogb2JqZWN0LCBndWludCBwcm9wSWQsIEdWYWx1ZSogdmFsdWUsIEdQYXJhbVNwZWMqIHBh
cmFtU3BlYykKIHsKICAgICBXZWJLaXRXZWJQYWdlKiB3ZWJQYWdlID0gV0VCS0lUX1dFQl9QQUdF
KG9iamVjdCk7CkBAIC0zNjgsNiArNDI4LDIyIEBAIFdlYktpdFdlYlBhZ2UqIHdlYmtpdFdlYlBh
Z2VDcmVhdGUoV2ViUGFnZSogd2ViUGFnZSkKICAgICB9OwogICAgIFdLQnVuZGxlUGFnZVNldFJl
c291cmNlTG9hZENsaWVudCh0b0FQSSh3ZWJQYWdlKSwgJnJlc291cmNlTG9hZENsaWVudC5iYXNl
KTsKIAorI2lmIEVOQUJMRShEQVRBTElTVF9FTEVNRU5UKQorICAgIFdLQnVuZGxlUGFnZUZvcm1D
bGllbnRWMCBmb3JtQ2xpZW50ID0geworICAgICAgICB7CisgICAgICAgICAgICAwLCAvLyB2ZXJz
aW9uCisgICAgICAgICAgICBwYWdlLCAvLyBjbGllbnRJbmZvCisgICAgICAgIH0sCisgICAgICAg
IHRleHRGaWVsZERpZEJlZ2luRWRpdGluZywKKyAgICAgICAgdGV4dEZpZWxkRGlkRW5kRWRpdGlu
ZywKKyAgICAgICAgdGV4dERpZENoYW5nZUluVGV4dEZpZWxkLAorICAgICAgICAwLCAvLyB0ZXh0
RGlkQ2hhbmdlSW5UZXh0QXJlYQorICAgICAgICBzaG91bGRQZXJmb3JtQWN0aW9uSW5UZXh0Rmll
bGQsCisgICAgICAgIDAgLy8gd2lsbFN1Ym1pdEZvcm0KKyAgICB9OworICAgIFdLQnVuZGxlUGFn
ZVNldEZvcm1DbGllbnQodG9BUEkod2ViUGFnZSksICZmb3JtQ2xpZW50LmJhc2UpOworI2VuZGlm
CisKICAgICByZXR1cm4gcGFnZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL2F1dG90b29scy9Q
cmludEJ1aWxkQ29uZmlndXJhdGlvbi5tNCBiL1NvdXJjZS9hdXRvdG9vbHMvUHJpbnRCdWlsZENv
bmZpZ3VyYXRpb24ubTQKaW5kZXggNDlhNDBjYTA3NDIzNjdjNTMxNjc2YzFiYjg5N2RlZWYyMmU2
NjEzOC4uODBkYmVmNDlkNDZkOTY0ODhkN2MwOGUyNDRmOTQ0ZDgyOGIyNTA4NiAxMDA2NDQKLS0t
IGEvU291cmNlL2F1dG90b29scy9QcmludEJ1aWxkQ29uZmlndXJhdGlvbi5tNAorKysgYi9Tb3Vy
Y2UvYXV0b3Rvb2xzL1ByaW50QnVpbGRDb25maWd1cmF0aW9uLm00CkBAIC0yNSw2ICsyNSw3IEBA
IEZlYXR1cmVzOgogIEFjY2VsZXJhdGVkIENvbXBvc2l0aW5nICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDogJGVuYWJsZV9hY2NlbGVyYXRlZF9jb21wb3NpdGluZwogIEFjY2VsZXJh
dGVkIDJEIGNhbnZhcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJGVuYWJs
ZV9hY2NlbGVyYXRlZF9jYW52YXMKICBCYXR0ZXJ5IEFQSSBzdXBwb3J0ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA6ICRlbmFibGVfYmF0dGVyeV9zdGF0dXMKKyBEYXRhbGlz
dCBlbGVtZW50IHN1cHBvcnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICRlbmFi
bGVfZGF0YWxpc3RfZWxlbWVudAogIEdhbWVwYWQgc3VwcG9ydCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDogJGVuYWJsZV9nYW1lcGFkCiAgR2VvbG9jYXRpb24gc3Vw
cG9ydCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAkZW5hYmxlX2dlb2xv
Y2F0aW9uCiAgSFRNTDUgdmlkZW8gZWxlbWVudCBzdXBwb3J0ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgOiAkZW5hYmxlX3ZpZGVvCmRpZmYgLS1naXQgYS9Tb3VyY2UvYXV0b3Rvb2xzL1Jl
YWRDb21tYW5kTGluZUFyZ3VtZW50cy5tNCBiL1NvdXJjZS9hdXRvdG9vbHMvUmVhZENvbW1hbmRM
aW5lQXJndW1lbnRzLm00CmluZGV4IDFkZTI1ZDQ5YzliZGU4YjQ1N2NmM2MyNDVkYTI4YmNhMTM2
MTJiMzAuLjEyZjk4MTBhMGM1Y2IxMTJhODZmOTAxZDI5MThmN2ZkMTA2OGUxZmUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9hdXRvdG9vbHMvUmVhZENvbW1hbmRMaW5lQXJndW1lbnRzLm00CisrKyBiL1Nv
dXJjZS9hdXRvdG9vbHMvUmVhZENvbW1hbmRMaW5lQXJndW1lbnRzLm00CkBAIC0yMzEsNCArMjMx
LDkgQEAgQUNfQVJHX0VOQUJMRShbaW50cm9zcGVjdGlvbl0sCiAgICAgW2VuYWJsZV9pbnRyb3Nw
ZWN0aW9uPW5vXSkKIEFDX01TR19SRVNVTFQoWyRlbmFibGVfaW50cm9zcGVjdGlvbl0pCiAKLQor
QUNfTVNHX0NIRUNLSU5HKFt3aGV0aGVyIHRvIGVuYWJsZSBEYXRhbGlzdCBlbGVtZW50IHN1cHBv
cnRdKQorQUNfQVJHX0VOQUJMRShbZGF0YWxpc3QtZWxlbWVudF0sCisgICAgQVNfSEVMUF9TVFJJ
TkcoWy0tZW5hYmxlLWRhdGFsaXN0LWVsZW1lbnRdLFtFbmFibGUgRGF0YWxpc3QgZWxlbWVudCAo
ZGVmYXVsdDogZGlzYWJsZWQpXSksCisgICAgW10sCisgICAgW2VuYWJsZV9kYXRhbGlzdF9lbGVt
ZW50PW5vXSkKK0FDX01TR19SRVNVTFQoWyRlbmFibGVfZGF0YWxpc3RfZWxlbWVudF0pCmRpZmYg
LS1naXQgYS9Tb3VyY2UvYXV0b3Rvb2xzL1NldHVwQXV0b21ha2UubTQgYi9Tb3VyY2UvYXV0b3Rv
b2xzL1NldHVwQXV0b21ha2UubTQKaW5kZXggMDUwZTU1YzNmMjYzNzEzYzg0ZTZiMGM0ZjhkMjRi
M2VkMjU5MmI4Mi4uNGYwYWE0MjMzMzBjNjY3ZDQwYTEzYjc1YjU2NWVjMDg2NmI0ZjE5YSAxMDA2
NDQKLS0tIGEvU291cmNlL2F1dG90b29scy9TZXR1cEF1dG9tYWtlLm00CisrKyBiL1NvdXJjZS9h
dXRvdG9vbHMvU2V0dXBBdXRvbWFrZS5tNApAQCAtNTAsNiArNTAsNyBAQCBBTV9DT05ESVRJT05B
TChbVVNFX0dMRVMyXSwgW3Rlc3QgIiRlbmFibGVfZ2xlczIiID0gInllcyJdKQogIyBXZWJLaXQg
ZmVhdHVyZSBjb25kaXRpb25hbHMuCiBBTV9DT05ESVRJT05BTChbRU5BQkxFX0RFVkVMT1BFUl9N
T0RFXSwgW3Rlc3QgIiRlbmFibGVfZGV2ZWxvcGVyX21vZGUiID0gInllcyJdKQogQU1fQ09ORElU
SU9OQUwoW0VOQUJMRV9ERUJVR10sW3Rlc3QgIiRlbmFibGVfZGVidWciID0gInllcyJdKQorQU1f
Q09ORElUSU9OQUwoW0VOQUJMRV9EQVRBTElTVF9FTEVNRU5UXSxbdGVzdCAiJGVuYWJsZV9kYXRh
bGlzdF9lbGVtZW50IiA9ICJ5ZXMiXSkKIEFNX0NPTkRJVElPTkFMKFtFTkFCTEVfV0VCR0xdLFt0
ZXN0ICIkZW5hYmxlX3dlYmdsIiA9ICJ5ZXMiXSkKIEFNX0NPTkRJVElPTkFMKFtFTkFCTEVfVklE
RU9dLFt0ZXN0ICIkZW5hYmxlX3ZpZGVvIiA9ICJ5ZXMiXSkKIEFNX0NPTkRJVElPTkFMKFtFTkFC
TEVfU1ZHXSxbdGVzdCAiJGVuYWJsZV9zdmciID0gInllcyJdKQpkaWZmIC0tZ2l0IGEvU291cmNl
L2F1dG90b29scy9TZXR1cFdlYktpdEZlYXR1cmVzLm00IGIvU291cmNlL2F1dG90b29scy9TZXR1
cFdlYktpdEZlYXR1cmVzLm00CmluZGV4IDBhN2RjYjQwNjk5ZmQyNTdkNWI3ZjczYTNhZGI1ZTk5
NmFjNzhjOTkuLjQyOGQ5M2I3Y2RjNzE0MWY4OWViNWRjMmZhZjUyMjMwNmYxMDgwODcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9hdXRvdG9vbHMvU2V0dXBXZWJLaXRGZWF0dXJlcy5tNAorKysgYi9Tb3Vy
Y2UvYXV0b3Rvb2xzL1NldHVwV2ViS2l0RmVhdHVyZXMubTQKQEAgLTg5LDYgKzg5LDEyIEBAIGVs
c2UKICAgICBDT05GSUdVUkFCTEVfRkVBVFVSRV9ERUZJTkVTPSIkQ09ORklHVVJBQkxFX0ZFQVRV
UkVfREVGSU5FUyBFTkFCTEVfQkFUVEVSWV9TVEFUVVM9MCIKIGZpCiAKK2lmIHRlc3QgIiRlbmFi
bGVfZGF0YWxpc3RfZWxlbWVudCIgPSAieWVzIjsgdGhlbgorICAgIENPTkZJR1VSQUJMRV9GRUFU
VVJFX0RFRklORVM9IiRDT05GSUdVUkFCTEVfRkVBVFVSRV9ERUZJTkVTIEVOQUJMRV9EQVRBTElT
VF9FTEVNRU5UPTEiCitlbHNlCisgICAgQ09ORklHVVJBQkxFX0ZFQVRVUkVfREVGSU5FUz0iJENP
TkZJR1VSQUJMRV9GRUFUVVJFX0RFRklORVMgRU5BQkxFX0RBVEFMSVNUX0VMRU1FTlQ9MCIKK2Zp
CisKICMgVGhpcyBsaXN0IG9mIGZlYXR1cmVzIHJlcHJlc2VudHMgdGhvc2Ugc2VsZWN0ZWQgZm9y
IHJlbGVhc2UgYnVpbGRzLiAgSWYgeW91IGFyZQogIyBhZGRpbmcgYSBuZXcgb3IgdW5zdGFibGUg
ZmVhdHVyZSwgeW91IHNob3VsZCBtYXJrIGl0IGRpc2FibGVkIGhlcmUuIFdlIG5lZWQgdG8gcnVu
CiAjIHRoaXMgY29tbWFuZCBub3cgcmF0aGVyIHRoYW4gdXNlIEFDX0NPTkZJR19DT01NQU5EUyBi
ZWNhdXNlIGF1dG9tYWtlIHJ1bGVzIGRlcGVuZApAQCAtMTE0LDcgKzEyMCw2IEBAICRzcmNkaXIv
VG9vbHMvZ3RrL2dlbmVyYXRlLWZlYXR1cmUtZGVmaW5lcy1maWxlcyAkQ09ORklHVVJBQkxFX0ZF
QVRVUkVfREVGSU5FUyBcCiAgICAgRU5BQkxFX0NTUzNfQ09ORElUSU9OQUxfUlVMRVM9MCBcCiAg
ICAgRU5BQkxFX0NVU1RPTV9TQ0hFTUVfSEFORExFUj0wIFwKICAgICBFTkFCTEVfREFTSEJPQVJE
X1NVUFBPUlQ9MCBcCi0gICAgRU5BQkxFX0RBVEFMSVNUX0VMRU1FTlQ9MCBcCiAgICAgRU5BQkxF
X0RBVEFfVFJBTlNGRVJfSVRFTVM9MCBcCiAgICAgRU5BQkxFX0RFVEFJTFNfRUxFTUVOVD0xIFwK
ICAgICBFTkFCTEVfREVWSUNFX09SSUVOVEFUSU9OPTAgXApkaWZmIC0tZ2l0IGEvQ2hhbmdlTG9n
IGIvQ2hhbmdlTG9nCmluZGV4IDlmY2U5YmE2NmFkMmMxODZhNjBlM2FkNzhjNjYzMzdlM2I0YjJh
ZTMuLjI4MzdlZDY4ZmU2Y2Y0OWRiNTk4YmY4N2RjNGNjN2I1NTg4MzMxY2QgMTAwNjQ0Ci0tLSBh
L0NoYW5nZUxvZworKysgYi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxMy0xMi0xMCAg
Q2hhbmdTZW9rIE9oICA8Y2hhbmdzZW9rLm9oQGNvbGxhYm9yYS5jb20+CisKKyAgICAgICAgW0dU
S10gRGF0YWxpc3QgZWxlbWVudCBzdXBwb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD05ODkzNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEFkZCBhIGJ1aWxkIG9wdGlvbiBmb3IgZGF0YWxpc3QuCisKKyAg
ICAgICAgKiBTb3VyY2UvYXV0b3Rvb2xzL1ByaW50QnVpbGRDb25maWd1cmF0aW9uLm00OgorICAg
ICAgICAqIFNvdXJjZS9hdXRvdG9vbHMvUmVhZENvbW1hbmRMaW5lQXJndW1lbnRzLm00OgorICAg
ICAgICAqIFNvdXJjZS9hdXRvdG9vbHMvU2V0dXBBdXRvbWFrZS5tNDoKKyAgICAgICAgKiBTb3Vy
Y2UvYXV0b3Rvb2xzL1NldHVwV2ViS2l0RmVhdHVyZXMubTQ6CisKIDIwMTMtMTItMDYgIEFsYmVy
dG8gR2FyY2lhICA8YmVydG9AaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXSBFbmFibGUgd2Vi
IGF1ZGlvIGJ5IGRlZmF1bHQK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>218947</attachid>
            <date>2013-12-11 03:19:16 -0800</date>
            <delta_ts>2014-01-17 01:32:00 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-98934-20131211121912.patch</filename>
            <type>text/plain</type>
            <size>42240</size>
            <attacher name="ChangSeok Oh">changseok</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTYwNDEzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODhjZGZkN2RkMTg5M2Y2
NDdlM2JkMzM4NWMzOTcxODFhNTdiN2ZiYS4uZThiNzI2NmM3YWRhNmFlYTYzM2Q3ZTdmYzZiZmNh
NzU3ZTEwM2YzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYzIEBACisyMDEzLTEyLTExICBDaGFu
Z1Nlb2sgT2ggIDxjaGFuZ3Nlb2sub2hAY29sbGFib3JhLmNvbT4KKworICAgICAgICBbR1RLXSBE
YXRhbGlzdCBlbGVtZW50IHN1cHBvcnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTk4OTM0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQWRkZWQgU3VnZ2VzdGlvbkJveENvbnRyb2xsZXIgYW5kIFN1Z2dlc3Rp
b25FbGVtZW50IG5ld2x5LCBUaGV5IG9yaWdpbmF0ZWQKKyAgICAgICAgZnJvbSBTdWdnZXN0aW9u
Qm94SGFuZGxlciBhbmQgU3VnZ2VzdGlvbkVsZW1lbnQgb2YgYmxhY2tiZXJyeSBwb3J0LCBidXQg
aW5jbHVkZQorICAgICAgICBtYW55IGltcHJvdmVtZW50cy4gQmFzaWNhbGx5IGEgc3VnZ2VzdGlv
biBwb3B1cCBpcyBjb25zdHJ1Y3RlZCB3aXRoIGh0bWwoZGl2IGFuZCBzcGFuKS4KKyAgICAgICAg
U3VnZ2VzdGlvbkVsZW1lbnQgaXMgYSBzdWJjbGFzcyBvZiBIVE1MRGl2ZWxlbWVudCBhbmQgcmVw
cmVzZW50cyBhIHNpbmdsZSBpdGVtIG9mIGRhdGFsaXN0LgorICAgICAgICBTdWdnZXN0aW9uQm94
Q29udHJvbGxlciBtYW5hZ2VzIG9wZXJhdGlvbnMgb2YgYSBzdWdnZXN0aW9uIGJveC4gRm9yIGlu
c3RhbmNlLAorICAgICAgICBzaG93aW5nL2hpZGluZyBhIGJveCwgZm9jdXNpbmcgYSBpdGVtLCBl
dGMuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBjb3ZlcmVkIGJ5IGV4aXN0aW5nIHRlc3RzLgor
CisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogR05VbWFrZWZpbGUuYW06Cisg
ICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBjc3MvdGhlbWVHdGsuY3Nz
OiBBZGRlZC4KKyAgICAgICAgKGlucHV0Ojotd2Via2l0LXN1Z2dlc3Rpb24tYm94KTogRGVmaW5l
IGEgc3R5bGUgZm9yIHN1Z2dlc3Rpb24gYm94LgorICAgICAgICAoaW5wdXQ6Oi13ZWJraXQtc3Vn
Z2VzdGlvbi1ib3gtZWxlbWVudCk6IERlZmluZSBhIHN0eWxlIGZvciBhbiBlbGVtZW50IGluIHN1
Z2dlc3Rpb24gYm94LgorICAgICAgICAoaW5wdXQ6Oi13ZWJraXQtc3VnZ2VzdGlvbi1ib3gtZWxl
bWVudC1mb2N1c2VkKTogRGVmaW5lIGEgc3R5bGUgZm9yIGEgZm9jdXNlZCBlbGVtZW50IGluIGEg
c3VnZ2VzdGlvbiBib3guCisgICAgICAgIChpbnB1dDo6LXdlYmtpdC1zdWdnZXN0aW9uLXByZWZp
eC10ZXh0KTogRGVmaW5lIGEgc3R5bGUgdG8gZW1waGFzaXplIGlucHV0IGNoYXJhY3RlcnMuCisg
ICAgICAgICogcGFnZS9QYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OlBhZ2UpOgor
ICAgICAgICAqIHBhZ2UvUGFnZS5oOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6c3VnZ2VzdGlv
bkJveENvbnRyb2xsZXIpOgorICAgICAgICAqIHBhZ2UvU3VnZ2VzdGlvbkJveENvbnRyb2xsZXIu
Y3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlN1Z2dlc3Rpb25Cb3hDb250cm9sbGVyOjpT
dWdnZXN0aW9uQm94Q29udHJvbGxlcik6CisgICAgICAgIChXZWJDb3JlOjpTdWdnZXN0aW9uQm94
Q29udHJvbGxlcjo6flN1Z2dlc3Rpb25Cb3hDb250cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmU6
OlN1Z2dlc3Rpb25Cb3hDb250cm9sbGVyOjpzZXRJbnB1dEVsZW1lbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6U3VnZ2VzdGlvbkJveENvbnRyb2xsZXI6OnNldElucHV0RWxlbWVudEFuZFNob3dTdWdn
ZXN0aW9uQm94KToKKyAgICAgICAgKFdlYkNvcmU6OlN1Z2dlc3Rpb25Cb3hDb250cm9sbGVyOjpz
aG93U3VnZ2VzdGlvbkJveCk6CisgICAgICAgIChXZWJDb3JlOjpTdWdnZXN0aW9uQm94Q29udHJv
bGxlcjo6aGlkZVN1Z2dlc3Rpb25Cb3gpOgorICAgICAgICAoV2ViQ29yZTo6U3VnZ2VzdGlvbkJv
eENvbnRyb2xsZXI6OnBhcnNlU3VnZ2VzdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6U3VnZ2Vz
dGlvbkJveENvbnRyb2xsZXI6OmFkZFN1Z2dlc3Rpb25zVG9TdWdnZXN0aW9uQm94KToKKyAgICAg
ICAgKFdlYkNvcmU6OmFkanVzdFN1Z2dlc3Rpb25Cb3hQb3NpdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpTdWdnZXN0aW9uQm94Q29udHJvbGxlcjo6Y3JlYXRlU3VnZ2VzdGlvbkJveCk6CisgICAg
ICAgIChXZWJDb3JlOjpTdWdnZXN0aW9uQm94Q29udHJvbGxlcjo6Zm9jdXMpOgorICAgICAgICAo
V2ViQ29yZTo6U3VnZ2VzdGlvbkJveENvbnRyb2xsZXI6OnVuZm9jdXMpOgorICAgICAgICAoV2Vi
Q29yZTo6U3VnZ2VzdGlvbkJveENvbnRyb2xsZXI6OnJlc2V0Rm9jdXMpOgorICAgICAgICAoV2Vi
Q29yZTo6U3VnZ2VzdGlvbkJveENvbnRyb2xsZXI6OnNlbGVjdCk6CisgICAgICAgIChXZWJDb3Jl
OjpTdWdnZXN0aW9uQm94Q29udHJvbGxlcjo6c3VnZ2VzdGlvbkVsZW1lbnRBdEluZGV4KToKKyAg
ICAgICAgKiBwYWdlL1N1Z2dlc3Rpb25Cb3hDb250cm9sbGVyLmg6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZTo6U3VnZ2VzdGlvbkJveENvbnRyb2xsZXI6Omhhc09wZW5lZFN1Z2dlc3Rpb25Cb3gp
OgorICAgICAgICAqIHBhZ2UvU3VnZ2VzdGlvbkVsZW1lbnQuY3BwOiBBZGRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OlN1Z2dlc3Rpb25FbGVtZW50OjpTdWdnZXN0aW9uRWxlbWVudCk6CisgICAgICAg
IChXZWJDb3JlOjpTdWdnZXN0aW9uRWxlbWVudDo6flN1Z2dlc3Rpb25FbGVtZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OlN1Z2dlc3Rpb25FbGVtZW50OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6U3VnZ2VzdGlvbkVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6U3VnZ2VzdGlvbkVsZW1lbnQ6OmZvY3VzZWQpOgorICAgICAgICAoV2ViQ29yZTo6U3Vn
Z2VzdGlvbkVsZW1lbnQ6OnVuZm9jdXNlZCk6CisgICAgICAgICogcGFnZS9TdWdnZXN0aW9uRWxl
bWVudC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlN1Z2dlc3Rpb25FbGVtZW50Ojp2YWx1
ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL1JlbmRlclRoZW1lR3RrLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclRoZW1lR3RrOjpleHRyYURlZmF1bHRTdHlsZVNoZWV0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lR3RrOjpzdXBwb3J0c0RhdGFMaXN0VUkpOgorICAgICAg
ICAqIHBsYXRmb3JtL2d0ay9SZW5kZXJUaGVtZUd0ay5oOgorCiAyMDEzLTEyLTExICBHeXV5b3Vu
ZyBLaW0gIDxneXV5b3VuZy5raW1Ac2Ftc3VuZy5jb20+CiAKICAgICAgICAgU2V0IG1fbmV4dEJy
ZWFrYWJsZVBvc2l0aW9uIGFzIHByaXZhdGUgaW4gSW5saW5lSXRlcmF0b3IsIGFuZCB1c2UgaXQu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cKaW5kZXggZjU0YzI5ODhjNDQxY2IyNWQ5OTQwZTlhN2UwYjUwMDhlNGJmZWZkNi4u
ZTA1NzMwYmRjOGUzNTQ3MzRhMDZiN2ZkOTQ2MjExMDY5MDEwZGM3MyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE5IEBACisyMDEzLTEyLTExICBDaGFuZ1Nlb2sgT2ggIDxjaGFuZ3Nlb2sub2hAY29s
bGFib3JhLmNvbT4KKworICAgICAgICBbR1RLXSBEYXRhbGlzdCBlbGVtZW50IHN1cHBvcnQKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk4OTM0CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW5zdGFsbGVkIFdL
QnVuZGxlUGFnZUZvcm1DbGllbnQgdG8gaGFuZGxlIGEgc3VnZ2VzdGlvbiBwb3B1cC4KKworICAg
ICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9XZWJLaXRXZWJQYWdlLmNw
cDoKKyAgICAgICAgKHRleHRGaWVsZERpZEJlZ2luRWRpdGluZyk6IFNldCBhIGZvY3VzZWQgSFRN
TElucHV0RWxlbWVudCB0byBTdWdnZXN0aW9uQ29udHJvbGxlci4KKyAgICAgICAgKHRleHRGaWVs
ZERpZEVuZEVkaXRpbmcpOiBTZWxlY3QgYSBmb2N1c2VkIGl0ZW0gd2hlbiBmb2N1c2luZyBvdXQu
CisgICAgICAgICh0ZXh0RGlkQ2hhbmdlSW5UZXh0RmllbGQpOiBTaG93IGluY3JlbWVudGFsIGNv
bXBsZXRpb24gaWYgSFRNTElucHV0RWxlbWVudCBoYXMgYSBkYXRhbGlzdC4KKyAgICAgICAgKHNo
b3VsZFBlcmZvcm1BY3Rpb25JblRleHRGaWVsZCk6IEhhbmRsZSBkaXJlY3Rpb25zL2VudGVyIGtl
eS4KKyAgICAgICAgKHdlYmtpdFdlYlBhZ2VDcmVhdGUpOgorCiAyMDEzLTEyLTEwICBNYXJrIFJv
d2UgIDxtcm93ZUBhcHBsZS5jb20+CiAKICAgICAgICAgPGh0dHA6Ly93ZWJraXQub3JnL2IvMTI1
NTU2PiBXZWJLaXQgZG9lc24ndCBkZWFsIHdpdGggbG9uZ2VyIGJ1bmRsZSB2ZXJzaW9ucyBjb3Jy
ZWN0bHkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNl
L1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggY2E3YzQ4M2JjOTU5MTkwM2M1YTA0ZWExYzIx
M2I4YjdmMTgwNjAxYy4uNzBhMTkzOTBjODA0NmYxODllMTZmYjU3NjczNzM4MDU4ZTQ4M2NiNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dl
YkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTE3NzAsNiArMTc3MCw4IEBAIHNldChXZWJDb3JlX1NP
VVJDRVMKICAgICBwYWdlL1NwZWVjaElucHV0RXZlbnQuY3BwCiAgICAgcGFnZS9TcGVlY2hJbnB1
dFJlc3VsdC5jcHAKICAgICBwYWdlL1NwZWVjaElucHV0UmVzdWx0TGlzdC5jcHAKKyAgICBwYWdl
L1N1Z2dlc3Rpb25Cb3hDb250cm9sbGVyLmNwcAorICAgIHBhZ2UvU3VnZ2VzdGlvbkVsZW1lbnQu
Y3BwCiAgICAgcGFnZS9TdXNwZW5kYWJsZVRpbWVyLmNwcAogICAgIHBhZ2UvVXNlckNvbnRlbnRV
UkxQYXR0ZXJuLmNwcAogICAgIHBhZ2UvV2luZG93RmVhdHVyZXMuY3BwCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxl
LmFtCmluZGV4IDIxYTA4ZmNhYTA5YzVkZDAzMjQ4MjIyZWFhZmU2MmY4YWNjZTY0YTMuLjBiYTMw
N2QxNzcyODg0NGYxODA2MTc5MDgxNTdiNjkzZjY4OGZiNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL0dOVW1ha2VmaWxlLmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFt
CkBAIC0yNzMsNyArMjczLDggQEAgVVNFUl9BR0VOVF9TVFlMRV9TSEVFVFMgPSBcCiAJJChXZWJD
b3JlKS9jc3MvbWVkaWFDb250cm9scy5jc3MgXAogCSQoV2ViQ29yZSkvY3NzL21lZGlhQ29udHJv
bHNHdGsuY3NzIFwKIAkkKFdlYkNvcmUpL2Nzcy9mdWxsc2NyZWVuLmNzcyBcCi0JJChXZWJDb3Jl
KS9jc3MvcGx1Z0lucy5jc3MKKwkkKFdlYkNvcmUpL2Nzcy9wbHVnSW5zLmNzcyBcCisJJChXZWJD
b3JlKS9jc3MvdGhlbWVHdGsuY3NzCiAKICMgcGx1Zy1pbiByZXNvdXJjZXMKIFBMVUdfSU5TX1JF
U09VUkNFUyA9IFwKQEAgLTY5Nyw2ICs2OTgsNyBAQCBFWFRSQV9ESVNUICs9IFwKIAlTb3VyY2Uv
V2ViQ29yZS9jc3MvcGx1Z0lucy5jc3MgXAogCVNvdXJjZS9XZWJDb3JlL2Nzcy9xdWlya3MuY3Nz
IFwKIAlTb3VyY2UvV2ViQ29yZS9jc3Mvc3ZnLmNzcyBcCisJU291cmNlL1dlYkNvcmUvY3NzL3Ro
ZW1lR3RrLmNzcyBcCiAJU291cmNlL1dlYkNvcmUvY3NzL1NWR0NTU1Byb3BlcnR5TmFtZXMuaW4g
XAogCVNvdXJjZS9XZWJDb3JlL2Nzcy9TVkdDU1NWYWx1ZUtleXdvcmRzLmluIFwKIAlTb3VyY2Uv
V2ViQ29yZS9jc3Mvdmlldy1zb3VyY2UuY3NzIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFt
CmluZGV4IGM5YTJkZmEyYjAwMjI1OGQzZjgwYTJiNWZlMzZiYmFiN2RmYjc4YjUuLmI5MTg4NGQ3
YWQxMGQ5OGJjN2I2ZmQwMmZjNTY2NGM5MWE2ZTFjM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUu
bGlzdC5hbQpAQCAtNDIwMCw2ICs0MjAwLDEwIEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291
cmNlL1dlYkNvcmUvcGFnZS9QcmludENvbnRleHQuaCBcCiAJU291cmNlL1dlYkNvcmUvcGFnZS9T
Y3JlZW4uY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wYWdlL1NjcmVlbi5oIFwKKwlTb3VyY2UvV2Vi
Q29yZS9wYWdlL1N1Z2dlc3Rpb25FbGVtZW50LmNwcCBcCisJU291cmNlL1dlYkNvcmUvcGFnZS9T
dWdnZXN0aW9uRWxlbWVudC5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wYWdlL1N1Z2dlc3Rpb25Cb3hD
b250cm9sbGVyLmNwcCBcCisJU291cmNlL1dlYkNvcmUvcGFnZS9TdWdnZXN0aW9uQm94Q29udHJv
bGxlci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb25zdHJh
aW50cy5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0NvbnN0
cmFpbnRzLmggXAogCVNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3Jk
aW5hdG9yLmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvdGhlbWVHdGsuY3Nz
IGIvU291cmNlL1dlYkNvcmUvY3NzL3RoZW1lR3RrLmNzcwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ODJmODVmMTYz
ODdlZjIxNDA2MDkwNzE0MDhlOThmZmI1MGNmNTk2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvY3NzL3RoZW1lR3RrLmNzcwpAQCAtMCwwICsxLDQ4IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEzIENvbGxhYm9yYSBMdGQuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUg
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVu
ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vu
c2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgor
ICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRl
ciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9w
ZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3
aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBv
ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ug
c2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENP
UFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3Rvbiwg
TUEgMDIxMTAtMTMwMSwgVVNBLgorICoKKyAqLworCitpbnB1dDo6LXdlYmtpdC1zdWdnZXN0aW9u
LWJveCB7CisgICAgcG9zaXRpb246IGFic29sdXRlOworICAgIGJhY2tncm91bmQtY29sb3I6ICNm
Y2ZjZmM7CisgICAgei1pbmRleDogMjE0NzQ4MzY0NzsKKyAgICBtYXgtaGVpZ2h0OiAyMDBweDsK
KyAgICAtd2Via2l0LWJveC1zaGFkb3c6IDJweCAycHggNXB4ICNBRUFFQUU7Cit9CisKK2lucHV0
Ojotd2Via2l0LXN1Z2dlc3Rpb24tYm94LWVsZW1lbnQgeworICAgIGRpc3BsYXk6IGJsb2NrOwor
ICAgIHBhZGRpbmc6IDNweDsKKyAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7CisgICAgdGV4dC1v
dmVyZmxvdzogZWxsaXBzaXM7CisgICAgb3ZlcmZsb3c6IGhpZGRlbjsKK30KKworaW5wdXQ6Oi13
ZWJraXQtc3VnZ2VzdGlvbi1ib3gtZWxlbWVudC1mb2N1c2VkIHsKKyAgICBkaXNwbGF5OiBibG9j
azsKKyAgICBwYWRkaW5nOiAzcHg7CisgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lOworICAgIGJh
Y2tncm91bmQtY29sb3I6ICMwMDAwRkY7CisgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7Cisg
ICAgb3ZlcmZsb3c6IGhpZGRlbjsKK30KKworaW5wdXQ6Oi13ZWJraXQtc3VnZ2VzdGlvbi1wcmVm
aXgtdGV4dCB7CisgICAgZm9udC13ZWlnaHQ6IGJvbGQ7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1BhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAppbmRl
eCA4Y2YwNWRkYjk4OTdmZjE2NzU3ZDA1MzA0NGE0ZmVhYjYzNjkyODY5Li5lYzU5NzVjYzBlZTBh
M2VmZGUyYzlhYTkyMWExNDQ4ZDA4N2U3MDNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKQEAgLTgxLDYg
KzgxLDcgQEAKICNpbmNsdWRlICJTdG9yYWdlTmFtZXNwYWNlLmgiCiAjaW5jbHVkZSAiU3R5bGVS
ZXNvbHZlci5oIgogI2luY2x1ZGUgIlN1YmZyYW1lTG9hZGVyLmgiCisjaW5jbHVkZSAiU3VnZ2Vz
dGlvbkJveENvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJUZXh0UmVzb3VyY2VEZWNvZGVyLmgiCiAj
aW5jbHVkZSAiVmlzaXRlZExpbmtTdGF0ZS5oIgogI2luY2x1ZGUgIlZvaWRDYWxsYmFjay5oIgpA
QCAtMTM5LDYgKzE0MCw5IEBAIFBhZ2U6OlBhZ2UoUGFnZUNsaWVudHMmIHBhZ2VDbGllbnRzKQog
I2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCiAgICAgLCBtX3BvaW50ZXJMb2NrQ29udHJvbGxlcihQ
b2ludGVyTG9ja0NvbnRyb2xsZXI6OmNyZWF0ZSh0aGlzKSkKICNlbmRpZgorI2lmIEVOQUJMRShE
QVRBTElTVF9FTEVNRU5UKQorICAgICwgbV9zdWdnZXN0aW9uQm94Q29udHJvbGxlcihzdGQ6Om1h
a2VfdW5pcXVlPFN1Z2dlc3Rpb25Cb3hDb250cm9sbGVyPigqdGhpcykpCisjZW5kaWYKICAgICAs
IG1fc2V0dGluZ3MoU2V0dGluZ3M6OmNyZWF0ZSh0aGlzKSkKICAgICAsIG1fcHJvZ3Jlc3Moc3Rk
OjptYWtlX3VuaXF1ZTxQcm9ncmVzc1RyYWNrZXI+KCkpCiAgICAgLCBtX2JhY2tGb3J3YXJkQ29u
dHJvbGxlcihzdGQ6Om1ha2VfdW5pcXVlPEJhY2tGb3J3YXJkQ29udHJvbGxlcj4oKnRoaXMsIHBh
Z2VDbGllbnRzLmJhY2tGb3J3YXJkQ2xpZW50KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKaW5kZXggNWZmOGUyNzc1
NDcxMGI1OWYwYjA2ZDlkMTY1YTc0YWUwODYzMWQzNS4uZDVmMzljMDMzOWZkNWNlODYxZTY1Njk4
NzdiOTc4MTg5MmIwOGNhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKQEAgLTk2LDYgKzk2LDcgQEAgY2xhc3Mg
U2Nyb2xsYWJsZUFyZWE7CiBjbGFzcyBTY3JvbGxpbmdDb29yZGluYXRvcjsKIGNsYXNzIFNldHRp
bmdzOwogY2xhc3MgU3RvcmFnZU5hbWVzcGFjZTsKK2NsYXNzIFN1Z2dlc3Rpb25Cb3hDb250cm9s
bGVyOwogY2xhc3MgVmFsaWRhdGlvbk1lc3NhZ2VDbGllbnQ7CiAKIHR5cGVkZWYgdWludDY0X3Qg
TGlua0hhc2g7CkBAIC0yMDEsNiArMjAyLDkgQEAgcHVibGljOgogI2lmIEVOQUJMRShQT0lOVEVS
X0xPQ0spCiAgICAgUG9pbnRlckxvY2tDb250cm9sbGVyKiBwb2ludGVyTG9ja0NvbnRyb2xsZXIo
KSBjb25zdCB7IHJldHVybiBtX3BvaW50ZXJMb2NrQ29udHJvbGxlci5nZXQoKTsgfQogI2VuZGlm
CisjaWYgRU5BQkxFKERBVEFMSVNUX0VMRU1FTlQpCisgICAgU3VnZ2VzdGlvbkJveENvbnRyb2xs
ZXImIHN1Z2dlc3Rpb25Cb3hDb250cm9sbGVyKCkgY29uc3QgeyByZXR1cm4gKm1fc3VnZ2VzdGlv
bkJveENvbnRyb2xsZXI7IH0KKyNlbmRpZgogICAgIFZhbGlkYXRpb25NZXNzYWdlQ2xpZW50KiB2
YWxpZGF0aW9uTWVzc2FnZUNsaWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsaWRhdGlvbk1lc3Nh
Z2VDbGllbnQ7IH0KIAogICAgIFNjcm9sbGluZ0Nvb3JkaW5hdG9yKiBzY3JvbGxpbmdDb29yZGlu
YXRvcigpOwpAQCAtNDUxLDYgKzQ1NSw5IEBAIHByaXZhdGU6CiAjaWYgRU5BQkxFKFBPSU5URVJf
TE9DSykKICAgICBPd25QdHI8UG9pbnRlckxvY2tDb250cm9sbGVyPiBtX3BvaW50ZXJMb2NrQ29u
dHJvbGxlcjsKICNlbmRpZgorI2lmIEVOQUJMRShEQVRBTElTVF9FTEVNRU5UKQorICAgIGNvbnN0
IHN0ZDo6dW5pcXVlX3B0cjxTdWdnZXN0aW9uQm94Q29udHJvbGxlcj4gbV9zdWdnZXN0aW9uQm94
Q29udHJvbGxlcjsKKyNlbmRpZgogICAgIFJlZlB0cjxTY3JvbGxpbmdDb29yZGluYXRvcj4gbV9z
Y3JvbGxpbmdDb29yZGluYXRvcjsKIAogICAgIGNvbnN0IFJlZlB0cjxTZXR0aW5ncz4gbV9zZXR0
aW5nczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU3VnZ2VzdGlvbkJveENvbnRy
b2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TdWdnZXN0aW9uQm94Q29udHJvbGxlci5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMTdkNGQ1ODFjZDVjMTdhYTM3YjhlNmIzYWExM2M4ZmU3NTkwYjdjMwot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU3VnZ2VzdGlvbkJveENvbnRy
b2xsZXIuY3BwCkBAIC0wLDAgKzEsMzAzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgUmVz
ZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTMgQ29sbGFib3JhIEx0ZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0
aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5h
bWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVj
aWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFT
IElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAor
ICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiU3VnZ2VzdGlvbkJveENvbnRyb2xsZXIuaCIKKworI2lmIEVOQUJM
RShEQVRBTElTVF9FTEVNRU5UKQorCisjaW5jbHVkZSAiQ1NTUHJvcGVydHlOYW1lcy5oIgorI2lu
Y2x1ZGUgIkNTU1ZhbHVlS2V5d29yZHMuaCIKKyNpbmNsdWRlICJET01Ub2tlbkxpc3QuaCIKKyNp
bmNsdWRlICJFeGNlcHRpb25Db2RlUGxhY2Vob2xkZXIuaCIKKyNpbmNsdWRlICJIVE1MQ29sbGVj
dGlvbi5oIgorI2luY2x1ZGUgIkhUTUxEYXRhTGlzdEVsZW1lbnQuaCIKKyNpbmNsdWRlICJIVE1M
RGl2RWxlbWVudC5oIgorI2luY2x1ZGUgIkhUTUxJbnB1dEVsZW1lbnQuaCIKKyNpbmNsdWRlICJI
VE1MTmFtZXMuaCIKKyNpbmNsdWRlICJIVE1MT3B0aW9uRWxlbWVudC5oIgorI2luY2x1ZGUgIkhU
TUxTcGFuRWxlbWVudC5oIgorI2luY2x1ZGUgIlBhZ2UuaCIKKyNpbmNsdWRlICJSZW5kZXJCbG9j
ay5oIgorI2luY2x1ZGUgIlJlbmRlck9iamVjdC5oIgorI2luY2x1ZGUgIlNoYWRvd1Jvb3QuaCIK
KyNpbmNsdWRlICJTdHlsZVJlc29sdmVyLmgiCisjaW5jbHVkZSAiU3VnZ2VzdGlvbkVsZW1lbnQu
aCIKKyNpbmNsdWRlICJUZXh0LmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCit1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOworCitTdWdnZXN0
aW9uQm94Q29udHJvbGxlcjo6U3VnZ2VzdGlvbkJveENvbnRyb2xsZXIoUGFnZSYgcGFnZSkKKyAg
ICA6IG1fcGFnZShwYWdlKQorICAgICwgbV9pbnB1dEVsZW1lbnQoMCkKKyAgICAsIG1faW5kZXgo
LTEpCit7Cit9CisKK1N1Z2dlc3Rpb25Cb3hDb250cm9sbGVyOjp+U3VnZ2VzdGlvbkJveENvbnRy
b2xsZXIoKQoreworICAgIGhpZGVTdWdnZXN0aW9uQm94KCk7Cit9CisKK3ZvaWQgU3VnZ2VzdGlv
bkJveENvbnRyb2xsZXI6OnNldElucHV0RWxlbWVudChIVE1MSW5wdXRFbGVtZW50KiBlbGVtZW50
KQoreworICAgIG1faW5wdXRFbGVtZW50ID0gZWxlbWVudDsKK30KKwordm9pZCBTdWdnZXN0aW9u
Qm94Q29udHJvbGxlcjo6c2V0SW5wdXRFbGVtZW50QW5kU2hvd1N1Z2dlc3Rpb25Cb3goSFRNTElu
cHV0RWxlbWVudCogZWxlbWVudCwgYm9vbCBzaG93RnVsbExpc3QpCit7CisgICAgaGlkZVN1Z2dl
c3Rpb25Cb3goKTsKKyAgICBtX2lucHV0RWxlbWVudCA9IGVsZW1lbnQ7CisgICAgc2hvd1N1Z2dl
c3Rpb25Cb3goc2hvd0Z1bGxMaXN0KTsKK30KKwordm9pZCBTdWdnZXN0aW9uQm94Q29udHJvbGxl
cjo6c2hvd1N1Z2dlc3Rpb25Cb3goYm9vbCBzaG93RnVsbExpc3QpCit7CisgICAgcmVzZXRGb2N1
cygpOworICAgIG1fc3VnZ2VzdGlvbnMuY2xlYXIoKTsKKworICAgIGlmICghcGFyc2VTdWdnZXN0
aW9ucyhzaG93RnVsbExpc3QpKSB7CisgICAgICAgIGhpZGVTdWdnZXN0aW9uQm94KCk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoIW1fc3VnZ2VzdGlvbkJveCkKKyAgICAgICAg
Y3JlYXRlU3VnZ2VzdGlvbkJveCgpOworCisgICAgYWRkU3VnZ2VzdGlvbnNUb1N1Z2dlc3Rpb25C
b3goKTsKK30KKwordm9pZCBTdWdnZXN0aW9uQm94Q29udHJvbGxlcjo6aGlkZVN1Z2dlc3Rpb25C
b3goKQoreworICAgIGlmIChtX3N1Z2dlc3Rpb25Cb3gpIHsKKyAgICAgICAgaWYgKFNoYWRvd1Jv
b3QqIHNoYWRvd1Jvb3QgPSBtX2lucHV0RWxlbWVudC0+dXNlckFnZW50U2hhZG93Um9vdCgpKSB7
CisgICAgICAgICAgICBFeGNlcHRpb25Db2RlIGVjOworICAgICAgICAgICAgc2hhZG93Um9vdC0+
cmVtb3ZlQ2hpbGQobV9zdWdnZXN0aW9uQm94LmdldCgpLCBlYyk7CisgICAgICAgIH0KKyAgICAg
ICAgbV9zdWdnZXN0aW9uQm94ID0gMDsKKyAgICB9CisKKyAgICBtX3N1Z2dlc3Rpb25zLmNsZWFy
KCk7CisgICAgbV9pbmRleCA9IC0xOworfQorCitib29sIFN1Z2dlc3Rpb25Cb3hDb250cm9sbGVy
OjpwYXJzZVN1Z2dlc3Rpb25zKGJvb2wgc2hvd0Z1bGxMaXN0KQoreworICAgIC8vIFJldHVybiBp
ZiB0aGlzIGNvbnRyb2xsZXIgZG9lc24ndCBoYXZlIGFuIGlucHV0IGVsZW1lbnQgdG8gYXR0YWNo
IHRvCisgICAgaWYgKCFtX2lucHV0RWxlbWVudCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisg
ICAgLy8gTGlzdCBhdHRyaWJ1dGUgZXhpc3RzLCBjaGVjayBpZiBkYXRhbGlzdCBleGlzdHMuCisg
ICAgSFRNTERhdGFMaXN0RWxlbWVudCogZGF0YWxpc3QgPSBtX2lucHV0RWxlbWVudC0+ZGF0YUxp
c3QoKTsKKyAgICBpZiAoIWRhdGFsaXN0KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBS
ZWZQdHI8SFRNTENvbGxlY3Rpb24+IG9wdGlvbnNMaXN0ID0gZGF0YWxpc3QtPm9wdGlvbnMoKTsK
KyAgICBTdHJpbmcgcHJlZml4ID0gbV9pbnB1dEVsZW1lbnQtPmlubmVyVGV4dFZhbHVlKCk7CisK
KyAgICAvLyBFeGl0IGlmOgorICAgIC8vIDEpIElmIGxlbmd0aCBvZiBub2RlcyBpbiBkYXRhbGlz
dCBpcyBlbXB0eSwgcmV0dXJuLgorICAgIC8vIDIpIElmIHdlIGRvIG5vdCBhbGxvdyBlbXB0eSBw
cmVmaXhlcyBhbmQgcHJlZml4IGlzIG51bGwKKyAgICBpZiAoIW9wdGlvbnNMaXN0LT5sZW5ndGgo
KSB8fCAoIXNob3dGdWxsTGlzdCAmJiBwcmVmaXguaXNFbXB0eSgpKSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgLy8gUHJlZml4IG1hdGNoIHRoZSBpbm5lciB0ZXh0IHZhbHVlIG9mIHRo
ZSBpbnB1dCBhZ2FpbnN0IHRoZSBjYW5kaWRhdGUgc3VnZ2VzdGlvbnMuCisgICAgLy8gTWFrZSBz
dXJlIHRoZSBsZW5ndGggb2YgdGhlIHN1Z2dlc3Rpb24gaXMgc21hbGxlciB0aGFuIG1heCBsZW5n
dGgKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgb3B0aW9uc0xpc3QtPmxlbmd0aCgpOyBp
KyspIHsKKyAgICAgICAgSFRNTE9wdGlvbkVsZW1lbnQqIHRhcmdldCA9IHRvSFRNTE9wdGlvbkVs
ZW1lbnQoKG9wdGlvbnNMaXN0LT5pdGVtKGkpKSk7CisgICAgICAgIGlmICghbV9pbnB1dEVsZW1l
bnQtPmlzVmFsaWRWYWx1ZSh0YXJnZXQtPnZhbHVlKCkpKQorICAgICAgICAgICAgY29udGludWU7
CisKKyAgICAgICAgU3RyaW5nIGNhbmRpZGF0ZVN0cmluZyA9IG1faW5wdXRFbGVtZW50LT5zYW5p
dGl6ZVZhbHVlKHRhcmdldC0+dmFsdWUoKSk7CisgICAgICAgIGlmICghY2FuZGlkYXRlU3RyaW5n
LmZpbmRJZ25vcmluZ0Nhc2UocHJlZml4KSAmJiBjYW5kaWRhdGVTdHJpbmcubGVuZ3RoKCkgPD0g
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1faW5wdXRFbGVtZW50LT5tYXhMZW5ndGgoKSkpCisgICAg
ICAgICAgICBtX3N1Z2dlc3Rpb25zLmFwcGVuZChjYW5kaWRhdGVTdHJpbmcpOworICAgIH0KKwor
ICAgIHJldHVybiAhbV9zdWdnZXN0aW9ucy5pc0VtcHR5KCk7Cit9CisKK3ZvaWQgU3VnZ2VzdGlv
bkJveENvbnRyb2xsZXI6OmFkZFN1Z2dlc3Rpb25zVG9TdWdnZXN0aW9uQm94KCkKK3sKKyAgICBB
U1NFUlQobV9zdWdnZXN0aW9uQm94KTsKKyAgICBEb2N1bWVudCYgZG9jdW1lbnQgPSBtX3N1Z2dl
c3Rpb25Cb3gtPmRvY3VtZW50KCk7CisKKyAgICAvLyBDbGVhciB0aGUgc3VnZ2VzdGlvbiBib3gn
cyBwcmV2aW91cyB2YWx1ZXMKKyAgICBtX3N1Z2dlc3Rpb25Cb3gtPnJlbW92ZUNoaWxkcmVuKCk7
CisKKyAgICBpbnQgcHJlZml4SW5kZXggPSBtX2lucHV0RWxlbWVudC0+aW5uZXJUZXh0VmFsdWUo
KS5sZW5ndGgoKTsKKworICAgIHVuc2lnbmVkIHRvdGFsID0gbV9zdWdnZXN0aW9ucy5zaXplKCk7
CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHRvdGFsOyArK2kpIHsKKyAgICAgICAgUmVm
UHRyPEhUTUxFbGVtZW50PiBzdWdnZXN0aW9uSXRlbSA9IFN1Z2dlc3Rpb25FbGVtZW50OjpjcmVh
dGUodGhpcywgbV9zdWdnZXN0aW9uc1tpXSwgZG9jdW1lbnQpOworCisgICAgICAgIC8vIEFwcGVu
ZCB0aGUgcGFydCB3aGVyZSBpdCBwcmVmaXggbWF0Y2hlZAorICAgICAgICBSZWZQdHI8SFRNTFNw
YW5FbGVtZW50PiBwcmVmaXhFbGVtZW50ID0gSFRNTFNwYW5FbGVtZW50OjpjcmVhdGUoSFRNTE5h
bWVzOjpzcGFuVGFnLCBkb2N1bWVudCk7CisgICAgICAgIHByZWZpeEVsZW1lbnQtPmFwcGVuZENo
aWxkKFRleHQ6OmNyZWF0ZShkb2N1bWVudCwgbV9zdWdnZXN0aW9uc1tpXS5zdWJzdHJpbmcoMCwg
cHJlZml4SW5kZXgpKSk7CisgICAgICAgIHByZWZpeEVsZW1lbnQtPnNldFBzZXVkbygiLXdlYmtp
dC1zdWdnZXN0aW9uLXByZWZpeC10ZXh0Iik7CisKKyAgICAgICAgc3VnZ2VzdGlvbkl0ZW0tPmFw
cGVuZENoaWxkKHByZWZpeEVsZW1lbnQucmVsZWFzZSgpLCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsK
KyAgICAgICAgLy8gQXBwZW5kIHRoZSByZXN0IG9mIHRoZSB0ZXh0IGluIHRoZSBzdWdnZXN0aW9u
IGl0ZW0KKyAgICAgICAgc3VnZ2VzdGlvbkl0ZW0tPmFwcGVuZENoaWxkKFRleHQ6OmNyZWF0ZShk
b2N1bWVudCwgbV9zdWdnZXN0aW9uc1tpXS5zdWJzdHJpbmcocHJlZml4SW5kZXgpKSwgQVNTRVJU
X05PX0VYQ0VQVElPTik7CisKKyAgICAgICAgbV9zdWdnZXN0aW9uQm94LT5hcHBlbmRDaGlsZChz
dWdnZXN0aW9uSXRlbS5yZWxlYXNlKCksIEFTU0VSVF9OT19FWENFUFRJT04pOworICAgIH0KK30K
Kworc3RhdGljIHZvaWQgYWRqdXN0U3VnZ2VzdGlvbkJveFBvc2l0aW9uKGNvbnN0IExheW91dFJl
Y3QmIGhvc3RSZWN0LCBIVE1MRWxlbWVudCogc3VnZ2VzdGlvbkJveCkKK3sKKyAgICAvLyBGSVhN
RTogcmV2ZXJzZSBwb3NpdGlvbmluZyBhbmQgc2Nyb2xsCisgICAgQVNTRVJUKHN1Z2dlc3Rpb25C
b3gpOworICAgIGlmIChob3N0UmVjdC5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAg
IGRvdWJsZSBob3N0WCA9IGhvc3RSZWN0LngoKTsKKyAgICBkb3VibGUgaG9zdFkgPSBob3N0UmVj
dC55KCk7CisgICAgaWYgKFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBzdWdnZXN0aW9uQm94LT5y
ZW5kZXJlcigpKSB7CisgICAgICAgIGlmIChSZW5kZXJCb3gqIGNvbnRhaW5lciA9IHJlbmRlcmVy
LT5jb250YWluaW5nQmxvY2soKSkgeworICAgICAgICAgICAgRmxvYXRQb2ludCBjb250YWluZXJM
b2NhdGlvbiA9IGNvbnRhaW5lci0+bG9jYWxUb0Fic29sdXRlKCk7CisgICAgICAgICAgICBob3N0
WCAtPSBjb250YWluZXJMb2NhdGlvbi54KCkgKyBjb250YWluZXItPmJvcmRlckxlZnQoKTsKKyAg
ICAgICAgICAgIGhvc3RZIC09IGNvbnRhaW5lckxvY2F0aW9uLnkoKSArIGNvbnRhaW5lci0+Ym9y
ZGVyVG9wKCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBzdWdnZXN0aW9uQm94LT5zZXRJbmxp
bmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5VG9wLCBob3N0WSArIGhvc3RSZWN0LmhlaWdodCgp
LCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BYKTsKKyAgICAvLyBUaGUgJ2xlZnQnIHZhbHVlIG9m
IDo6LXdlYmtpdC12YWxpZGF0aW9uLWJ1YmJsZS1hcnJvdy4KKyAgICBjb25zdCBpbnQgYnViYmxl
QXJyb3dUb3BPZmZzZXQgPSAzMjsKKyAgICBkb3VibGUgYnViYmxlWCA9IGhvc3RYOworICAgIGlm
IChob3N0UmVjdC53aWR0aCgpIC8gMiA8IGJ1YmJsZUFycm93VG9wT2Zmc2V0KQorICAgICAgICBi
dWJibGVYID0gc3RkOjptYXgoaG9zdFggKyBob3N0UmVjdC53aWR0aCgpIC8gMiAtIGJ1YmJsZUFy
cm93VG9wT2Zmc2V0LCAwLjApOworICAgIHN1Z2dlc3Rpb25Cb3gtPnNldElubGluZVN0eWxlUHJv
cGVydHkoQ1NTUHJvcGVydHlMZWZ0LCBidWJibGVYLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BY
KTsKK30KKwordm9pZCBTdWdnZXN0aW9uQm94Q29udHJvbGxlcjo6Y3JlYXRlU3VnZ2VzdGlvbkJv
eCgpCit7CisgICAgU2hhZG93Um9vdCYgc2hhZG93Um9vdCA9IG1faW5wdXRFbGVtZW50LT5lbnN1
cmVVc2VyQWdlbnRTaGFkb3dSb290KCk7CisgICAgRG9jdW1lbnQmIGRvY3VtZW50ID0gbV9pbnB1
dEVsZW1lbnQtPmRvY3VtZW50KCk7CisKKyAgICBtX3N1Z2dlc3Rpb25Cb3ggPSBIVE1MRGl2RWxl
bWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKKyAgICBtX3N1Z2dlc3Rpb25Cb3gtPnNldFBzZXVkbygi
LXdlYmtpdC1zdWdnZXN0aW9uLWJveCIpOworCisgICAgLy8gTmVlZCB0byBmb3JjZSBwb3NpdGlv
bjphYnNvbHV0ZSBiZWNhdXNlIFJlbmRlck1lbnVMaXN0IGRvZXNuJ3QgYXNzdW1lIGl0CisgICAg
Ly8gY29udGFpbnMgbm9uLWFic29sdXRlIG9yIG5vbi1maXhlZCByZW5kZXJlcnMgYXMgY2hpbGRy
ZW4uCisgICAgbV9zdWdnZXN0aW9uQm94LT5zZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3Bl
cnR5UG9zaXRpb24sIENTU1ZhbHVlQWJzb2x1dGUpOworICAgIG1fc3VnZ2VzdGlvbkJveC0+c2V0
SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eVdpZHRoLCBTdHJpbmc6Om51bWJlcihtX2lu
cHV0RWxlbWVudC0+Y2xpZW50V2lkdGgoKSkgKyAicHgiLCBmYWxzZSk7CisKKyAgICBFeGNlcHRp
b25Db2RlIGVjID0gMDsKKyAgICBzaGFkb3dSb290LmFwcGVuZENoaWxkKG1fc3VnZ2VzdGlvbkJv
eC5nZXQoKSwgZWMpOworICAgIEFTU0VSVCghZWMpOworCisgICAgZG9jdW1lbnQudXBkYXRlTGF5
b3V0KCk7CisgICAgYWRqdXN0U3VnZ2VzdGlvbkJveFBvc2l0aW9uKG1faW5wdXRFbGVtZW50LT5i
b3VuZGluZ0JveCgpLCBtX3N1Z2dlc3Rpb25Cb3guZ2V0KCkpOworfQorCit2b2lkIFN1Z2dlc3Rp
b25Cb3hDb250cm9sbGVyOjpmb2N1cyhGb2N1c0RpcmVjdGlvbiBkaXJlY3Rpb24pCit7CisgICAg
dW5mb2N1cygpOworCisgICAgc3dpdGNoIChkaXJlY3Rpb24pIHsKKyAgICBjYXNlIEZvY3VzRGly
ZWN0aW9uRm9yd2FyZDoKKyAgICBjYXNlIEZvY3VzRGlyZWN0aW9uRG93bjoKKyAgICAgICAgaWYg
KCsrbV9pbmRleCA+PSBzdGF0aWNfY2FzdDxpbnQ+KG1fc3VnZ2VzdGlvbnMuc2l6ZSgpKSkKKyAg
ICAgICAgICAgIG1faW5kZXggPSAwOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEZvY3VzRGly
ZWN0aW9uQmFja3dhcmQ6CisgICAgY2FzZSBGb2N1c0RpcmVjdGlvblVwOgorICAgICAgICBpZiAo
LS1tX2luZGV4IDwgMCkKKyAgICAgICAgICAgIG1faW5kZXggPSBtX3N1Z2dlc3Rpb25zLnNpemUo
KSAtIDE7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgIH0KKworICAgIGZvY3VzKG1faW5kZXgpOworfQorCit2b2lkIFN1Z2dl
c3Rpb25Cb3hDb250cm9sbGVyOjpmb2N1cyhTdWdnZXN0aW9uRWxlbWVudCogc3VnZ2VzdGlvbkVs
ZW1lbnQpCit7CisgICAgaWYgKG1faW5kZXggPj0gMCAmJiBzdWdnZXN0aW9uRWxlbWVudCA9PSBz
dWdnZXN0aW9uRWxlbWVudEF0SW5kZXgobV9pbmRleCkpCisgICAgICAgIHJldHVybjsKKworICAg
IHJlc2V0Rm9jdXMoKTsKKworICAgIGludCBuZXdJbmRleCA9IC0xOworICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBtX3N1Z2dlc3Rpb25zLnNpemUoKTsgKytpKSB7CisgICAgICAgIGlmIChz
dWdnZXN0aW9uRWxlbWVudCA9PSBzdWdnZXN0aW9uRWxlbWVudEF0SW5kZXgoaSkpCisgICAgICAg
ICAgICBuZXdJbmRleCA9IGk7CisgICAgfQorCisgICAgbV9pbmRleCA9IG5ld0luZGV4OworICAg
IGlmIChtX2luZGV4ID49IDApCisgICAgICAgIGZvY3VzKG1faW5kZXgpOworfQorCit2b2lkIFN1
Z2dlc3Rpb25Cb3hDb250cm9sbGVyOjpmb2N1cyhpbnQgaW5kZXgpCit7CisgICAgc3VnZ2VzdGlv
bkVsZW1lbnRBdEluZGV4KGluZGV4KS0+Zm9jdXNlZCgpOworfQorCit2b2lkIFN1Z2dlc3Rpb25C
b3hDb250cm9sbGVyOjp1bmZvY3VzKCkKK3sKKyAgICBpZiAobV9pbmRleCA8IDApCisgICAgICAg
IHJldHVybjsKKworICAgIHN1Z2dlc3Rpb25FbGVtZW50QXRJbmRleChtX2luZGV4KS0+dW5mb2N1
c2VkKCk7Cit9CisKK3ZvaWQgU3VnZ2VzdGlvbkJveENvbnRyb2xsZXI6OnJlc2V0Rm9jdXMoKQor
eworICAgIHVuZm9jdXMoKTsKKyAgICBtX2luZGV4ID0gLTE7Cit9CisKK2Jvb2wgU3VnZ2VzdGlv
bkJveENvbnRyb2xsZXI6OnNlbGVjdCgpCit7CisgICAgaWYgKG1faW5kZXggPCAwKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICBTdHJpbmcgdmFsdWUgPSBzdWdnZXN0aW9uRWxlbWVudEF0
SW5kZXgobV9pbmRleCktPnZhbHVlKCk7CisgICAgbV9pbnB1dEVsZW1lbnQtPnNldEVkaXRpbmdW
YWx1ZSh2YWx1ZSk7CisKKyAgICBoaWRlU3VnZ2VzdGlvbkJveCgpOworICAgIHJldHVybiB0cnVl
OworfQorCitTdWdnZXN0aW9uRWxlbWVudCogU3VnZ2VzdGlvbkJveENvbnRyb2xsZXI6OnN1Z2dl
c3Rpb25FbGVtZW50QXRJbmRleChpbnQgaW5kZXgpCit7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0
PFN1Z2dlc3Rpb25FbGVtZW50Kj4obV9zdWdnZXN0aW9uQm94LT5jaGlsZE5vZGUoaW5kZXgpKTsK
K30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKERBVEFMSVNU
X0VMRU1FTlQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1N1Z2dlc3Rpb25Cb3hD
b250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1N1Z2dlc3Rpb25Cb3hDb250cm9sbGVy
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMjhkYWRkNDRhY2NmNjFlODBkMmJhY2E0MTA1MmFmN2JlNDdiZjQwZgot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU3VnZ2VzdGlvbkJveENvbnRy
b2xsZXIuaApAQCAtMCwwICsxLDk0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgUmVzZWFy
Y2ggSW4gTW90aW9uIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTMgQ29sbGFib3JhIEx0ZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9u
LgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVz
IG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElT
IiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICog
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFN1Z2dlc3Rp
b25Cb3hDb250cm9sbGVyX2gKKyNkZWZpbmUgU3VnZ2VzdGlvbkJveENvbnRyb2xsZXJfaAorCisj
aWYgRU5BQkxFKERBVEFMSVNUX0VMRU1FTlQpCisKKyNpbmNsdWRlICJGb2N1c0RpcmVjdGlvbi5o
IgorI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4K
KyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitjbGFzcyBIVE1MSW5wdXRFbGVtZW50OworY2xhc3MgSFRNTEVsZW1lbnQ7CitjbGFzcyBQYWdl
OworY2xhc3MgU3VnZ2VzdGlvbkVsZW1lbnQ7CisKK2NsYXNzIFN1Z2dlc3Rpb25Cb3hDb250cm9s
bGVyIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShTdWdnZXN0aW9uQm94Q29udHJvbGxlcik7
CitwdWJsaWM6CisgICAgU3VnZ2VzdGlvbkJveENvbnRyb2xsZXIoUGFnZSYpOworICAgIH5TdWdn
ZXN0aW9uQm94Q29udHJvbGxlcigpOworCisgICAgYm9vbCBoYXNPcGVuZWRTdWdnZXN0aW9uQm94
KCkgY29uc3QgeyByZXR1cm4gIW1fc3VnZ2VzdGlvbnMuaXNFbXB0eSgpOyB9CisKKyAgICB2b2lk
IHNldElucHV0RWxlbWVudEFuZFNob3dTdWdnZXN0aW9uQm94KEhUTUxJbnB1dEVsZW1lbnQqLCBi
b29sIHNob3dGdWxsTGlzdCA9IGZhbHNlKTsKKworICAgIHZvaWQgc2hvd1N1Z2dlc3Rpb25Cb3go
Ym9vbCBzaG93RnVsbExpc3QpOworICAgIHZvaWQgaGlkZVN1Z2dlc3Rpb25Cb3goKTsKKworICAg
IHZvaWQgc2V0SW5wdXRFbGVtZW50KEhUTUxJbnB1dEVsZW1lbnQqKTsKKworICAgIGJvb2wgc2Vs
ZWN0KCk7CisKKyAgICB2b2lkIGZvY3VzKFN1Z2dlc3Rpb25FbGVtZW50Kik7CisgICAgdm9pZCBm
b2N1cyhGb2N1c0RpcmVjdGlvbik7CisgICAgdm9pZCByZXNldEZvY3VzKCk7CisKK3ByaXZhdGU6
CisgICAgdm9pZCBhZGRTdWdnZXN0aW9uc1RvU3VnZ2VzdGlvbkJveCgpOworICAgIHZvaWQgY3Jl
YXRlU3VnZ2VzdGlvbkJveCgpOworICAgIGJvb2wgcGFyc2VTdWdnZXN0aW9ucyhib29sIHNob3dG
dWxsTGlzdCk7CisKKyAgICB2b2lkIGZvY3VzKGludCBpbmRleCk7CisgICAgdm9pZCB1bmZvY3Vz
KCk7CisKKyAgICBTdWdnZXN0aW9uRWxlbWVudCogc3VnZ2VzdGlvbkVsZW1lbnRBdEluZGV4KGlu
dCBpbmRleCk7CisKKyAgICBQYWdlJiBtX3BhZ2U7CisKKyAgICBSZWZQdHI8SFRNTElucHV0RWxl
bWVudD4gbV9pbnB1dEVsZW1lbnQ7CisgICAgUmVmUHRyPEhUTUxFbGVtZW50PiBtX3N1Z2dlc3Rp
b25Cb3g7CisgICAgVmVjdG9yPFN0cmluZz4gbV9zdWdnZXN0aW9uczsKKworICAgIGludCBtX2lu
ZGV4OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKERB
VEFMSVNUX0VMRU1FTlQpCisKKyNlbmRpZiAvLyBTdWdnZXN0aW9uQm94Q29udHJvbGxlcl9oCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1N1Z2dlc3Rpb25FbGVtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvU3VnZ2VzdGlvbkVsZW1lbnQuY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ5YjE5
OTkwODRhODdiMjBhYmE3ZjZkMWMxNmE0YTQwMjk5ZDA2NGMKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL1N1Z2dlc3Rpb25FbGVtZW50LmNwcApAQCAtMCwwICsxLDc3IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzIENvbGxhYm9yYSBMdGQu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdh
cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRo
ZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBw
dWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJz
aW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNp
b24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQg
aXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg
ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExlc3NlciBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBo
YXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICog
TGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJl
ZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0
aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIlN1Z2dlc3Rpb25FbGVtZW50LmgiCisKKyNpZiBFTkFCTEUoREFU
QUxJU1RfRUxFTUVOVCkKKworI2luY2x1ZGUgIkZyYW1lLmgiCisjaW5jbHVkZSAiSFRNTE5hbWVz
LmgiCisjaW5jbHVkZSAiTW91c2VFdmVudC5oIgorI2luY2x1ZGUgIlBsYXRmb3JtTW91c2VFdmVu
dC5oIgorI2luY2x1ZGUgIlN1Z2dlc3Rpb25Cb3hDb250cm9sbGVyLmgiCisjaW5jbHVkZSAiVG91
Y2hFdmVudC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1N1Z2dlc3Rpb25FbGVtZW50OjpT
dWdnZXN0aW9uRWxlbWVudChTdWdnZXN0aW9uQm94Q29udHJvbGxlciogc3VnZ2VzdGlvbkJveENv
bnRyb2xsZXIsIFN0cmluZyYgdmFsdWUsIGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIERvY3Vt
ZW50JiBkb2N1bWVudCkKKyAgICA6IEhUTUxEaXZFbGVtZW50KG5hbWUsIGRvY3VtZW50KQorICAg
ICwgbV9zdWdnZXN0aW9uQm94Q29udHJvbGxlcihzdWdnZXN0aW9uQm94Q29udHJvbGxlcikKKyAg
ICAsIG1fdmFsdWUodmFsdWUpCit7CisgICAgc2V0UHNldWRvKCItd2Via2l0LXN1Z2dlc3Rpb24t
Ym94LWVsZW1lbnQiKTsKK30KKworU3VnZ2VzdGlvbkVsZW1lbnQ6On5TdWdnZXN0aW9uRWxlbWVu
dCgpCit7Cit9CisKK1Bhc3NSZWZQdHI8U3VnZ2VzdGlvbkVsZW1lbnQ+IFN1Z2dlc3Rpb25FbGVt
ZW50OjpjcmVhdGUoU3VnZ2VzdGlvbkJveENvbnRyb2xsZXIqIHN1Z2dlc3Rpb25Cb3hDb250cm9s
bGVyLCBTdHJpbmcmIHZhbHVlLCBEb2N1bWVudCYgZG9jdW1lbnQpCit7CisgICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBTdWdnZXN0aW9uRWxlbWVudChzdWdnZXN0aW9uQm94Q29udHJvbGxlciwgdmFs
dWUsIEhUTUxOYW1lczo6ZGl2VGFnLCBkb2N1bWVudCkpOworfQorCit2b2lkIFN1Z2dlc3Rpb25F
bGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50KiBldmVudCkKK3sKKyAgICBpZiAoZXZl
bnQtPmlzTW91c2VFdmVudCgpKSB7CisgICAgICAgIGlmIChldmVudC0+dHlwZSgpID09IGV2ZW50
TmFtZXMoKS5tb3VzZWRvd25FdmVudAorICAgICAgICAgICAgJiYgKHN0YXRpY19jYXN0PE1vdXNl
RXZlbnQqPihldmVudCktPmJ1dHRvbigpICE9IFJpZ2h0QnV0dG9uKQorICAgICAgICAgICAgJiYg
ZG9jdW1lbnQoKS5mcmFtZSgpKQorICAgICAgICAgICAgbV9zdWdnZXN0aW9uQm94Q29udHJvbGxl
ci0+c2VsZWN0KCk7CisgICAgICAgIGVsc2UgaWYgKGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1l
cygpLm1vdXNlbW92ZUV2ZW50KQorICAgICAgICAgICAgbV9zdWdnZXN0aW9uQm94Q29udHJvbGxl
ci0+Zm9jdXModGhpcyk7CisgICAgICAgIGVsc2UgaWYgKGV2ZW50LT50eXBlKCkgPT0gZXZlbnRO
YW1lcygpLm1vdXNlb3V0RXZlbnQpCisgICAgICAgICAgICBtX3N1Z2dlc3Rpb25Cb3hDb250cm9s
bGVyLT5yZXNldEZvY3VzKCk7CisgICAgfQorfQorCit2b2lkIFN1Z2dlc3Rpb25FbGVtZW50Ojpm
b2N1c2VkKCkKK3sKKyAgICBzZXRQc2V1ZG8oIi13ZWJraXQtc3VnZ2VzdGlvbi1ib3gtZWxlbWVu
dC1mb2N1c2VkIik7Cit9CisKK3ZvaWQgU3VnZ2VzdGlvbkVsZW1lbnQ6OnVuZm9jdXNlZCgpCit7
CisgICAgc2V0UHNldWRvKCItd2Via2l0LXN1Z2dlc3Rpb24tYm94LWVsZW1lbnQiKTsKK30KKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKERBVEFMSVNUX0VMRU1F
TlQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1N1Z2dlc3Rpb25FbGVtZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1N1Z2dlc3Rpb25FbGVtZW50LmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2I4
N2E4ZWQwNzg3ZTg4ZjI1NDliMGRhMmM5N2MyYzk4NzNjMTBhNAotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvU3VnZ2VzdGlvbkVsZW1lbnQuaApAQCAtMCwwICsxLDU1IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzIENvbGxhYm9yYSBMdGQu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdh
cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRo
ZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBw
dWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJz
aW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNp
b24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQg
aXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg
ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExlc3NlciBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBo
YXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICog
TGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJl
ZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0
aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCisgKi8KKworI2lmbmRlZiBTdWdn
ZXN0aW9uRWxlbWVudF9oCisjZGVmaW5lIFN1Z2dlc3Rpb25FbGVtZW50X2gKKworI2lmIEVOQUJM
RShEQVRBTElTVF9FTEVNRU5UKQorCisjaW5jbHVkZSAiSFRNTERpdkVsZW1lbnQuaCIKKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBFdmVudDsKK2NsYXNzIFN1Z2dlc3Rpb25Cb3hDb250
cm9sbGVyOworCitjbGFzcyBTdWdnZXN0aW9uRWxlbWVudCA6IHB1YmxpYyBIVE1MRGl2RWxlbWVu
dCB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8U3VnZ2VzdGlvbkVsZW1lbnQ+IGNy
ZWF0ZShTdWdnZXN0aW9uQm94Q29udHJvbGxlciosIFN0cmluZyYsIERvY3VtZW50Jik7CisgICAg
dmlydHVhbCB+U3VnZ2VzdGlvbkVsZW1lbnQoKTsKKworICAgIHZvaWQgZm9jdXNlZCgpOworICAg
IHZvaWQgdW5mb2N1c2VkKCk7CisKKyAgICBTdHJpbmcgdmFsdWUoKSBjb25zdCB7IHJldHVybiBt
X3ZhbHVlOyB9CisKK3ByaXZhdGU6CisgICAgU3VnZ2VzdGlvbkVsZW1lbnQoU3VnZ2VzdGlvbkJv
eENvbnRyb2xsZXIqLCBTdHJpbmcmLCBjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsK
KworICAgIHZpcnR1YWwgdm9pZCBkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50Kik7CisKKyAgICBT
dWdnZXN0aW9uQm94Q29udHJvbGxlciogbV9zdWdnZXN0aW9uQm94Q29udHJvbGxlcjsKKyAgICBT
dHJpbmcgbV92YWx1ZTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8v
IEVOQUJMRShEQVRBTElTVF9FTEVNRU5UKQorCisjZW5kaWYgLy8gU3VnZ2VzdGlvbkVsZW1lbnRf
aApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1JlbmRlclRoZW1lR3Rr
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9SZW5kZXJUaGVtZUd0ay5jcHAKaW5k
ZXggNjI5ZThkNmJlMTk1MTgzMzkwM2Y1NmY1MGQwZjkwMTkyODM2OTBkMC4uMTY5NmM3MmQ3MmRi
NGY2ZjhmMjhhMDQzOWE3MjBjYjAxZGNiZmNlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3RrL1JlbmRlclRoZW1lR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ndGsvUmVuZGVyVGhlbWVHdGsuY3BwCkBAIC0xLDcgKzEsNyBAQAogLyoKICAqIENvcHly
aWdodCAoQykgMjAwNyBBcHBsZSBJbmMuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDcgQWxwIFRva2Vy
IDxhbHBAYXRva2VyLmNvbT4KLSAqIENvcHlyaWdodCAoQykgMjAwOCBDb2xsYWJvcmEgTHRkLgor
ICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDEzIENvbGxhYm9yYSBMdGQuCiAgKiBDb3B5cmlnaHQg
KEMpIDIwMDkgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4KICAqIENvcHlyaWdodCAoQykgMjAx
MCBJZ2FsaWEgUy5MLgogICoKQEAgLTUwLDYgKzUwLDEwIEBACiAjaW5jbHVkZSA8Z3RrL2d0ay5o
PgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAorI2lmIEVOQUJMRShEQVRBTElTVF9F
TEVNRU5UKQorI2luY2x1ZGUgIklucHV0VHlwZU5hbWVzLmgiCisjZW5kaWYKKwogI2lmIEVOQUJM
RShQUk9HUkVTU19FTEVNRU5UKQogI2luY2x1ZGUgIlJlbmRlclByb2dyZXNzLmgiCiAjZW5kaWYK
QEAgLTQ3NCw2ICs0NzgsMTEgQEAgdm9pZCBSZW5kZXJUaGVtZUd0azo6cGxhdGZvcm1Db2xvcnNE
aWRDaGFuZ2UoKQogICAgIFJlbmRlclRoZW1lOjpwbGF0Zm9ybUNvbG9yc0RpZENoYW5nZSgpOwog
fQogCitTdHJpbmcgUmVuZGVyVGhlbWVHdGs6OmV4dHJhRGVmYXVsdFN0eWxlU2hlZXQoKQorewor
ICAgIHJldHVybiBTdHJpbmcodGhlbWVHdGtVc2VyQWdlbnRTdHlsZVNoZWV0LCBzaXplb2YodGhl
bWVHdGtVc2VyQWdlbnRTdHlsZVNoZWV0KSk7Cit9CisKICNpZiBFTkFCTEUoVklERU8pCiBTdHJp
bmcgUmVuZGVyVGhlbWVHdGs6OmV4dHJhTWVkaWFDb250cm9sc1N0eWxlU2hlZXQoKQogewpAQCAt
NzI0LDYgKzczMywyMCBAQCBpbnQgUmVuZGVyVGhlbWVHdGs6OnNsaWRlclRpY2tPZmZzZXRGcm9t
VHJhY2tDZW50ZXIoKSBjb25zdAogICAgIC8vIEZJWE1FOiBXZSBuZWVkIHRvIHNldCB0aGlzIHRv
IHRoZSBwb3NpdGlvbiBvZiB0aGUgdGljayBtYXJrcy4KICAgICByZXR1cm4gMDsKIH0KKworYm9v
bCBSZW5kZXJUaGVtZUd0azo6c3VwcG9ydHNEYXRhTGlzdFVJKGNvbnN0IEF0b21pY1N0cmluZyYg
dHlwZSkgY29uc3QKK3sKKyAgICBib29sIHJlc3VsdCA9IHR5cGUgPT0gSW5wdXRUeXBlTmFtZXM6
OnRleHQoKQorICAgICAgICB8fCB0eXBlID09IElucHV0VHlwZU5hbWVzOjpzZWFyY2goKQorICAg
ICAgICB8fCB0eXBlID09IElucHV0VHlwZU5hbWVzOjp1cmwoKQorICAgICAgICB8fCB0eXBlID09
IElucHV0VHlwZU5hbWVzOjp0ZWxlcGhvbmUoKQorICAgICAgICB8fCB0eXBlID09IElucHV0VHlw
ZU5hbWVzOjplbWFpbCgpCisgICAgICAgIHx8IHR5cGUgPT0gSW5wdXRUeXBlTmFtZXM6Om51bWJl
cigpCisgICAgICAgIHx8IHR5cGUgPT0gSW5wdXRUeXBlTmFtZXM6OnJhbmdlKCk7CisKKyAgICAv
LyBXZSBzdXBwb3J0IGFsbCBub24tcG9wdXAgZHJpdmVuIHR5cGVzLgorICAgIHJldHVybiByZXN1
bHQ7Cit9CiAjZW5kaWYKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3RrL1JlbmRlclRoZW1lR3RrLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUmVuZGVy
VGhlbWVHdGsuaAppbmRleCA1MGU1N2FlZDFiOGJjYTczZmQ0NTk4NGNjOTc0ZmUyNGNiYWIxMjI1
Li44YzFjMzA5OGE5ZDAzNzE1NzA2MjNjNTAyZmQ4ZjI3NmUxOTM0YWYwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUmVuZGVyVGhlbWVHdGsuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ndGsvUmVuZGVyVGhlbWVHdGsuaApAQCAtODQsNiArODQsOCBAQCBw
dWJsaWM6CiAKICAgICB2aXJ0dWFsIGJvb2wgcG9wc01lbnVCeVNwYWNlT3JSZXR1cm4oKSBjb25z
dCBPVkVSUklERSB7IHJldHVybiB0cnVlOyB9CiAKKyAgICB2aXJ0dWFsIFN0cmluZyBleHRyYURl
ZmF1bHRTdHlsZVNoZWV0KCk7CisKICNpZiBFTkFCTEUoVklERU8pCiAgICAgdmlydHVhbCBTdHJp
bmcgZXh0cmFNZWRpYUNvbnRyb2xzU3R5bGVTaGVldCgpOwogICAgIHZpcnR1YWwgU3RyaW5nIGZv
cm1hdE1lZGlhQ29udHJvbHNDdXJyZW50VGltZShmbG9hdCBjdXJyZW50VGltZSwgZmxvYXQgZHVy
YXRpb24pIGNvbnN0OwpAQCAtOTcsOSArOTksMTAgQEAgcHVibGljOgogI2lmIEVOQUJMRShEQVRB
TElTVF9FTEVNRU5UKQogICAgIC8vIFJldHVybnMgc2l6ZSBvZiBvbmUgc2xpZGVyIHRpY2sgbWFy
ayBmb3IgYSBob3Jpem9udGFsIHRyYWNrLgogICAgIC8vIEZvciB2ZXJ0aWNhbCB0cmFja3Mgd2Ug
cm90YXRlIGl0IGFuZCB1c2UgaXQuIGkuZS4gV2lkdGggaXMgYWx3YXlzIGxlbmd0aCBhbG9uZyB0
aGUgdHJhY2suCi0gICAgdmlydHVhbCBJbnRTaXplIHNsaWRlclRpY2tTaXplKCkgY29uc3Q7Cisg
ICAgdmlydHVhbCBJbnRTaXplIHNsaWRlclRpY2tTaXplKCkgY29uc3QgT1ZFUlJJREU7CiAgICAg
Ly8gUmV0dXJucyB0aGUgZGlzdGFuY2Ugb2Ygc2xpZGVyIHRpY2sgb3JpZ2luIGZyb20gdGhlIHNs
aWRlciB0cmFjayBjZW50ZXIuCi0gICAgdmlydHVhbCBpbnQgc2xpZGVyVGlja09mZnNldEZyb21U
cmFja0NlbnRlcigpIGNvbnN0OworICAgIHZpcnR1YWwgaW50IHNsaWRlclRpY2tPZmZzZXRGcm9t
VHJhY2tDZW50ZXIoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNE
YXRhTGlzdFVJKGNvbnN0IEF0b21pY1N0cmluZyYpIGNvbnN0IE9WRVJSSURFOwogI2VuZGlmCiAK
ICNpZmRlZiBHVEtfQVBJX1ZFUlNJT05fMgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL1dlYktpdFdlYlBhZ2UuY3BwIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL1dlYktpdFdlYlBhZ2Uu
Y3BwCmluZGV4IGI4YzQyN2JjMTk5ZDMzNTg2MDFjYzI0YmU4YjI2M2QyNWZhZTg2NmQuLmNmYWFm
OGRmODBkMGFjNDZkMWYyODgyNmIzMDFkYzVhOTg5NTMzMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9XZWJLaXRXZWJQYWdlLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsv
V2ViS2l0V2ViUGFnZS5jcHAKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAy
MDEyIElnYWxpYSBTLkwuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQ29sbGFib3JhIEx0ZC4KICAq
CiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg
aXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2Vy
IEdlbmVyYWwgUHVibGljCkBAIC0yMyw2ICsyNCw3IEBACiAjaW5jbHVkZSAiSW1hZ2VPcHRpb25z
LmgiCiAjaW5jbHVkZSAiSW1tdXRhYmxlRGljdGlvbmFyeS5oIgogI2luY2x1ZGUgIkluamVjdGVk
QnVuZGxlLmgiCisjaW5jbHVkZSAiSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlLmgiCiAjaW5jbHVk
ZSAiV0tCdW5kbGVBUElDYXN0LmgiCiAjaW5jbHVkZSAiV0tCdW5kbGVGcmFtZS5oIgogI2luY2x1
ZGUgIldlYkltYWdlLmgiCkBAIC0zOSw2ICs0MSw5IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9Eb2N1
bWVudExvYWRlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWUuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL0ZyYW1lVmlldy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvSFRNTElucHV0RWxlbWVudC5oPgor
I2luY2x1ZGUgPFdlYkNvcmUvUGFnZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU3VnZ2VzdGlvbkJv
eENvbnRyb2xsZXIuaD4KICNpbmNsdWRlIDxnbGliL2dpMThuLWxpYi5oPgogI2luY2x1ZGUgPHd0
Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KQEAgLTIy
MCw2ICsyMjUsNjEgQEAgc3RhdGljIHZvaWQgZGlkRmFpbExvYWRGb3JSZXNvdXJjZShXS0J1bmRs
ZVBhZ2VSZWYgcGFnZSwgV0tCdW5kbGVGcmFtZVJlZiwgdWludDYKICAgICBXZWJQcm9jZXNzOjpz
aGFyZWQoKS5pbmplY3RlZEJ1bmRsZSgpLT5wb3N0TWVzc2FnZShTdHJpbmc6OmZyb21VVEY4KCJX
ZWJQYWdlLkRpZEZhaWxMb2FkRm9yUmVzb3VyY2UiKSwgSW1tdXRhYmxlRGljdGlvbmFyeTo6YWRv
cHQobWVzc2FnZSkuZ2V0KCkpOwogfQogCisjaWYgRU5BQkxFKERBVEFMSVNUX0VMRU1FTlQpCitz
dGF0aWMgdm9pZCB0ZXh0RmllbGREaWRCZWdpbkVkaXRpbmcoV0tCdW5kbGVQYWdlUmVmIHBhZ2Us
IFdLQnVuZGxlTm9kZUhhbmRsZVJlZiBodG1sSW5wdXRFbGVtZW50SGFuZGxlLCBXS0J1bmRsZUZy
YW1lUmVmIGZyYW1lLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQoreworICAgIEhUTUxJbnB1dEVs
ZW1lbnQqIGh0bWxJbnB1dEVsZW1lbnQgPSB0b0hUTUxJbnB1dEVsZW1lbnQodG9JbXBsKGh0bWxJ
bnB1dEVsZW1lbnRIYW5kbGUpLT5jb3JlTm9kZSgpKTsKKyAgICBpZiAoaHRtbElucHV0RWxlbWVu
dCAmJiBodG1sSW5wdXRFbGVtZW50LT5kYXRhTGlzdCgpKQorICAgICAgICB0b0ltcGwocGFnZSkt
PmNvcmVQYWdlKCktPnN1Z2dlc3Rpb25Cb3hDb250cm9sbGVyKCkuc2V0SW5wdXRFbGVtZW50KGh0
bWxJbnB1dEVsZW1lbnQpOworfQorCitzdGF0aWMgdm9pZCB0ZXh0RmllbGREaWRFbmRFZGl0aW5n
KFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBXS0J1bmRsZU5vZGVIYW5kbGVSZWYgaHRtbElucHV0RWxl
bWVudEhhbmRsZSwgV0tCdW5kbGVGcmFtZVJlZiBmcmFtZSwgY29uc3Qgdm9pZCogY2xpZW50SW5m
bykKK3sKKyAgICBIVE1MSW5wdXRFbGVtZW50KiBodG1sSW5wdXRFbGVtZW50ID0gdG9IVE1MSW5w
dXRFbGVtZW50KHRvSW1wbChodG1sSW5wdXRFbGVtZW50SGFuZGxlKS0+Y29yZU5vZGUoKSk7Cisg
ICAgaWYgKGh0bWxJbnB1dEVsZW1lbnQgJiYgaHRtbElucHV0RWxlbWVudC0+ZGF0YUxpc3QoKSkg
eworICAgICAgICB0b0ltcGwocGFnZSktPmNvcmVQYWdlKCktPnN1Z2dlc3Rpb25Cb3hDb250cm9s
bGVyKCkuc2VsZWN0KCk7CisgICAgICAgIHRvSW1wbChwYWdlKS0+Y29yZVBhZ2UoKS0+c3VnZ2Vz
dGlvbkJveENvbnRyb2xsZXIoKS5oaWRlU3VnZ2VzdGlvbkJveCgpOworICAgIH0KK30KKworc3Rh
dGljIHZvaWQgdGV4dERpZENoYW5nZUluVGV4dEZpZWxkKFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBX
S0J1bmRsZU5vZGVIYW5kbGVSZWYgaHRtbElucHV0RWxlbWVudEhhbmRsZSwgV0tCdW5kbGVGcmFt
ZVJlZiBmcmFtZSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKK3sKKyAgICBIVE1MSW5wdXRFbGVt
ZW50KiBodG1sSW5wdXRFbGVtZW50ID0gdG9IVE1MSW5wdXRFbGVtZW50KHRvSW1wbChodG1sSW5w
dXRFbGVtZW50SGFuZGxlKS0+Y29yZU5vZGUoKSk7CisgICAgaWYgKGh0bWxJbnB1dEVsZW1lbnQg
JiYgaHRtbElucHV0RWxlbWVudC0+ZGF0YUxpc3QoKSkKKyAgICAgICAgdG9JbXBsKHBhZ2UpLT5j
b3JlUGFnZSgpLT5zdWdnZXN0aW9uQm94Q29udHJvbGxlcigpLnNob3dTdWdnZXN0aW9uQm94KGZh
bHNlKTsKK30KKworc3RhdGljIGJvb2wgc2hvdWxkUGVyZm9ybUFjdGlvbkluVGV4dEZpZWxkKFdL
QnVuZGxlUGFnZVJlZiBwYWdlLCBXS0J1bmRsZU5vZGVIYW5kbGVSZWYgaHRtbElucHV0RWxlbWVu
dEhhbmRsZSwgV0tJbnB1dEZpZWxkQWN0aW9uVHlwZSBhY3Rpb25UeXBlLCBXS0J1bmRsZUZyYW1l
UmVmIGZyYW1lLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQoreworICAgIGJvb2wgaGFuZGxlZCA9
IGZhbHNlOworICAgIEhUTUxJbnB1dEVsZW1lbnQqIGh0bWxJbnB1dEVsZW1lbnQgPSB0b0hUTUxJ
bnB1dEVsZW1lbnQodG9JbXBsKGh0bWxJbnB1dEVsZW1lbnRIYW5kbGUpLT5jb3JlTm9kZSgpKTsK
KyAgICBpZiAoaHRtbElucHV0RWxlbWVudCAmJiBodG1sSW5wdXRFbGVtZW50LT5kYXRhTGlzdCgp
KSB7CisgICAgICAgIFN1Z2dlc3Rpb25Cb3hDb250cm9sbGVyJiBzdWdnZXN0aW9uQm94Q29udHJv
bGxlciA9IHRvSW1wbChwYWdlKS0+Y29yZVBhZ2UoKS0+c3VnZ2VzdGlvbkJveENvbnRyb2xsZXIo
KTsKKworICAgICAgICBpZiAoc3VnZ2VzdGlvbkJveENvbnRyb2xsZXIuaGFzT3BlbmVkU3VnZ2Vz
dGlvbkJveCgpKSB7CisgICAgICAgICAgICBpZiAoYWN0aW9uVHlwZSA9PSBXS0lucHV0RmllbGRB
Y3Rpb25UeXBlQ2FuY2VsKSB7CisgICAgICAgICAgICAgICAgc3VnZ2VzdGlvbkJveENvbnRyb2xs
ZXIuaGlkZVN1Z2dlc3Rpb25Cb3goKTsKKyAgICAgICAgICAgICAgICBoYW5kbGVkID0gdHJ1ZTsK
KyAgICAgICAgICAgIH0gZWxzZSBpZiAoYWN0aW9uVHlwZSA9PSBXS0lucHV0RmllbGRBY3Rpb25U
eXBlTW92ZVVwKSB7CisgICAgICAgICAgICAgICAgc3VnZ2VzdGlvbkJveENvbnRyb2xsZXIuZm9j
dXMoRm9jdXNEaXJlY3Rpb25CYWNrd2FyZCk7CisgICAgICAgICAgICAgICAgaGFuZGxlZCA9IHRy
dWU7CisgICAgICAgICAgICB9IGVsc2UgaWYgKGFjdGlvblR5cGUgPT0gV0tJbnB1dEZpZWxkQWN0
aW9uVHlwZU1vdmVEb3duKSB7CisgICAgICAgICAgICAgICAgc3VnZ2VzdGlvbkJveENvbnRyb2xs
ZXIuZm9jdXMoRm9jdXNEaXJlY3Rpb25Gb3J3YXJkKTsKKyAgICAgICAgICAgICAgICBoYW5kbGVk
ID0gdHJ1ZTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoYWN0aW9uVHlwZSA9PSBXS0lucHV0Rmll
bGRBY3Rpb25UeXBlSW5zZXJ0TmV3bGluZSkKKyAgICAgICAgICAgICAgICBoYW5kbGVkID0gc3Vn
Z2VzdGlvbkJveENvbnRyb2xsZXIuc2VsZWN0KCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgICBpZiAoYWN0aW9uVHlwZSA9PSBXS0lucHV0RmllbGRBY3Rpb25UeXBlTW92ZVVwIHx8IGFj
dGlvblR5cGUgPT0gV0tJbnB1dEZpZWxkQWN0aW9uVHlwZU1vdmVEb3duKSB7CisgICAgICAgICAg
ICAgICAgc3VnZ2VzdGlvbkJveENvbnRyb2xsZXIuc2V0SW5wdXRFbGVtZW50QW5kU2hvd1N1Z2dl
c3Rpb25Cb3goaHRtbElucHV0RWxlbWVudCwgdHJ1ZSk7CisgICAgICAgICAgICAgICAgaGFuZGxl
ZCA9IHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4g
aGFuZGxlZDsKK30KKyNlbmRpZiAvLyBFTkFCTEUoREFUQUxJU1RfRUxFTUVOVCkKKwogc3RhdGlj
IHZvaWQgd2Via2l0V2ViUGFnZUdldFByb3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJv
cElkLCBHVmFsdWUqIHZhbHVlLCBHUGFyYW1TcGVjKiBwYXJhbVNwZWMpCiB7CiAgICAgV2ViS2l0
V2ViUGFnZSogd2ViUGFnZSA9IFdFQktJVF9XRUJfUEFHRShvYmplY3QpOwpAQCAtMzY4LDYgKzQy
OCwyMiBAQCBXZWJLaXRXZWJQYWdlKiB3ZWJraXRXZWJQYWdlQ3JlYXRlKFdlYlBhZ2UqIHdlYlBh
Z2UpCiAgICAgfTsKICAgICBXS0J1bmRsZVBhZ2VTZXRSZXNvdXJjZUxvYWRDbGllbnQodG9BUEko
d2ViUGFnZSksICZyZXNvdXJjZUxvYWRDbGllbnQuYmFzZSk7CiAKKyNpZiBFTkFCTEUoREFUQUxJ
U1RfRUxFTUVOVCkKKyAgICBXS0J1bmRsZVBhZ2VGb3JtQ2xpZW50VjAgZm9ybUNsaWVudCA9IHsK
KyAgICAgICAgeworICAgICAgICAgICAgMCwgLy8gdmVyc2lvbgorICAgICAgICAgICAgcGFnZSwg
Ly8gY2xpZW50SW5mbworICAgICAgICB9LAorICAgICAgICB0ZXh0RmllbGREaWRCZWdpbkVkaXRp
bmcsCisgICAgICAgIHRleHRGaWVsZERpZEVuZEVkaXRpbmcsCisgICAgICAgIHRleHREaWRDaGFu
Z2VJblRleHRGaWVsZCwKKyAgICAgICAgMCwgLy8gdGV4dERpZENoYW5nZUluVGV4dEFyZWEKKyAg
ICAgICAgc2hvdWxkUGVyZm9ybUFjdGlvbkluVGV4dEZpZWxkLAorICAgICAgICAwIC8vIHdpbGxT
dWJtaXRGb3JtCisgICAgfTsKKyAgICBXS0J1bmRsZVBhZ2VTZXRGb3JtQ2xpZW50KHRvQVBJKHdl
YlBhZ2UpLCAmZm9ybUNsaWVudC5iYXNlKTsKKyNlbmRpZgorCiAgICAgcmV0dXJuIHBhZ2U7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9hdXRvdG9vbHMvUHJpbnRCdWlsZENvbmZpZ3VyYXRpb24u
bTQgYi9Tb3VyY2UvYXV0b3Rvb2xzL1ByaW50QnVpbGRDb25maWd1cmF0aW9uLm00CmluZGV4IDQ5
YTQwY2EwNzQyMzY3YzUzMTY3NmMxYmI4OTdkZWVmMjJlNjYxMzguLjgwZGJlZjQ5ZDQ2ZDk2NDg4
ZDdjMDhlMjQ0Zjk0NGQ4MjhiMjUwODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9hdXRvdG9vbHMvUHJp
bnRCdWlsZENvbmZpZ3VyYXRpb24ubTQKKysrIGIvU291cmNlL2F1dG90b29scy9QcmludEJ1aWxk
Q29uZmlndXJhdGlvbi5tNApAQCAtMjUsNiArMjUsNyBAQCBGZWF0dXJlczoKICBBY2NlbGVyYXRl
ZCBDb21wb3NpdGluZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICRlbmFibGVf
YWNjZWxlcmF0ZWRfY29tcG9zaXRpbmcKICBBY2NlbGVyYXRlZCAyRCBjYW52YXMgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA6ICRlbmFibGVfYWNjZWxlcmF0ZWRfY2FudmFzCiAg
QmF0dGVyeSBBUEkgc3VwcG9ydCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
OiAkZW5hYmxlX2JhdHRlcnlfc3RhdHVzCisgRGF0YWxpc3QgZWxlbWVudCBzdXBwb3J0ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAkZW5hYmxlX2RhdGFsaXN0X2VsZW1lbnQKICBH
YW1lcGFkIHN1cHBvcnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6
ICRlbmFibGVfZ2FtZXBhZAogIEdlb2xvY2F0aW9uIHN1cHBvcnQgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDogJGVuYWJsZV9nZW9sb2NhdGlvbgogIEhUTUw1IHZpZGVvIGVs
ZW1lbnQgc3VwcG9ydCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJGVuYWJsZV92aWRl
bwpkaWZmIC0tZ2l0IGEvU291cmNlL2F1dG90b29scy9SZWFkQ29tbWFuZExpbmVBcmd1bWVudHMu
bTQgYi9Tb3VyY2UvYXV0b3Rvb2xzL1JlYWRDb21tYW5kTGluZUFyZ3VtZW50cy5tNAppbmRleCAx
ZGUyNWQ0OWM5YmRlOGI0NTdjZjNjMjQ1ZGEyOGJjYTEzNjEyYjMwLi4xMmY5ODEwYTBjNWNiMTEy
YTg2ZjkwMWQyOTE4ZjdmZDEwNjhlMWZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvYXV0b3Rvb2xzL1Jl
YWRDb21tYW5kTGluZUFyZ3VtZW50cy5tNAorKysgYi9Tb3VyY2UvYXV0b3Rvb2xzL1JlYWRDb21t
YW5kTGluZUFyZ3VtZW50cy5tNApAQCAtMjMxLDQgKzIzMSw5IEBAIEFDX0FSR19FTkFCTEUoW2lu
dHJvc3BlY3Rpb25dLAogICAgIFtlbmFibGVfaW50cm9zcGVjdGlvbj1ub10pCiBBQ19NU0dfUkVT
VUxUKFskZW5hYmxlX2ludHJvc3BlY3Rpb25dKQogCi0KK0FDX01TR19DSEVDS0lORyhbd2hldGhl
ciB0byBlbmFibGUgRGF0YWxpc3QgZWxlbWVudCBzdXBwb3J0XSkKK0FDX0FSR19FTkFCTEUoW2Rh
dGFsaXN0LWVsZW1lbnRdLAorICAgIEFTX0hFTFBfU1RSSU5HKFstLWVuYWJsZS1kYXRhbGlzdC1l
bGVtZW50XSxbRW5hYmxlIERhdGFsaXN0IGVsZW1lbnQgKGRlZmF1bHQ6IGRpc2FibGVkKV0pLAor
ICAgIFtdLAorICAgIFtlbmFibGVfZGF0YWxpc3RfZWxlbWVudD1ub10pCitBQ19NU0dfUkVTVUxU
KFskZW5hYmxlX2RhdGFsaXN0X2VsZW1lbnRdKQpkaWZmIC0tZ2l0IGEvU291cmNlL2F1dG90b29s
cy9TZXR1cEF1dG9tYWtlLm00IGIvU291cmNlL2F1dG90b29scy9TZXR1cEF1dG9tYWtlLm00Cmlu
ZGV4IGExMzljZWYwOGZiOWNiYjIwMDg5MWUwZWY2Mzc3N2IzMjNiODRmZWEuLmNlNmVhNjdhMzk1
MjQ3YWRlNWQ0MjIwZjU2YjM1YzkwZWIxZWVkMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9hdXRvdG9v
bHMvU2V0dXBBdXRvbWFrZS5tNAorKysgYi9Tb3VyY2UvYXV0b3Rvb2xzL1NldHVwQXV0b21ha2Uu
bTQKQEAgLTUxLDYgKzUxLDcgQEAgQU1fQ09ORElUSU9OQUwoW1VTRV9HTEVTMl0sIFt0ZXN0ICIk
ZW5hYmxlX2dsZXMyIiA9ICJ5ZXMiXSkKICMgV2ViS2l0IGZlYXR1cmUgY29uZGl0aW9uYWxzLgog
QU1fQ09ORElUSU9OQUwoW0VOQUJMRV9ERVZFTE9QRVJfTU9ERV0sIFt0ZXN0ICIkZW5hYmxlX2Rl
dmVsb3Blcl9tb2RlIiA9ICJ5ZXMiXSkKIEFNX0NPTkRJVElPTkFMKFtFTkFCTEVfREVCVUddLFt0
ZXN0ICIkZW5hYmxlX2RlYnVnIiA9ICJ5ZXMiXSkKK0FNX0NPTkRJVElPTkFMKFtFTkFCTEVfREFU
QUxJU1RfRUxFTUVOVF0sW3Rlc3QgIiRlbmFibGVfZGF0YWxpc3RfZWxlbWVudCIgPSAieWVzIl0p
CiBBTV9DT05ESVRJT05BTChbRU5BQkxFX1dFQkdMXSxbdGVzdCAiJGVuYWJsZV93ZWJnbCIgPSAi
eWVzIl0pCiBBTV9DT05ESVRJT05BTChbRU5BQkxFX1ZJREVPXSxbdGVzdCAiJGVuYWJsZV92aWRl
byIgPSAieWVzIl0pCiBBTV9DT05ESVRJT05BTChbRU5BQkxFX1NWR10sW3Rlc3QgIiRlbmFibGVf
c3ZnIiA9ICJ5ZXMiXSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9hdXRvdG9vbHMvU2V0dXBXZWJLaXRG
ZWF0dXJlcy5tNCBiL1NvdXJjZS9hdXRvdG9vbHMvU2V0dXBXZWJLaXRGZWF0dXJlcy5tNAppbmRl
eCBjMjIyNjMzZjRjZWRjNjBmYjY1NDJjMDdlZjM4MzhhODUwNzU0YTA0Li5mMGYxYjQ4MDU2NjJl
YmU0ZDdhNTc3NGQ2ZGZiZWQ3OGU1MjUyZjA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvYXV0b3Rvb2xz
L1NldHVwV2ViS2l0RmVhdHVyZXMubTQKKysrIGIvU291cmNlL2F1dG90b29scy9TZXR1cFdlYktp
dEZlYXR1cmVzLm00CkBAIC04OSw2ICs4OSwxMiBAQCBlbHNlCiAgICAgQ09ORklHVVJBQkxFX0ZF
QVRVUkVfREVGSU5FUz0iJENPTkZJR1VSQUJMRV9GRUFUVVJFX0RFRklORVMgRU5BQkxFX0JBVFRF
UllfU1RBVFVTPTAiCiBmaQogCitpZiB0ZXN0ICIkZW5hYmxlX2RhdGFsaXN0X2VsZW1lbnQiID0g
InllcyI7IHRoZW4KKyAgICBDT05GSUdVUkFCTEVfRkVBVFVSRV9ERUZJTkVTPSIkQ09ORklHVVJB
QkxFX0ZFQVRVUkVfREVGSU5FUyBFTkFCTEVfREFUQUxJU1RfRUxFTUVOVD0xIgorZWxzZQorICAg
IENPTkZJR1VSQUJMRV9GRUFUVVJFX0RFRklORVM9IiRDT05GSUdVUkFCTEVfRkVBVFVSRV9ERUZJ
TkVTIEVOQUJMRV9EQVRBTElTVF9FTEVNRU5UPTAiCitmaQorCiAjIFRoaXMgbGlzdCBvZiBmZWF0
dXJlcyByZXByZXNlbnRzIHRob3NlIHNlbGVjdGVkIGZvciByZWxlYXNlIGJ1aWxkcy4gIElmIHlv
dSBhcmUKICMgYWRkaW5nIGEgbmV3IG9yIHVuc3RhYmxlIGZlYXR1cmUsIHlvdSBzaG91bGQgbWFy
ayBpdCBkaXNhYmxlZCBoZXJlLiBXZSBuZWVkIHRvIHJ1bgogIyB0aGlzIGNvbW1hbmQgbm93IHJh
dGhlciB0aGFuIHVzZSBBQ19DT05GSUdfQ09NTUFORFMgYmVjYXVzZSBhdXRvbWFrZSBydWxlcyBk
ZXBlbmQKQEAgLTExNCw3ICsxMjAsNiBAQCAkc3JjZGlyL1Rvb2xzL2d0ay9nZW5lcmF0ZS1mZWF0
dXJlLWRlZmluZXMtZmlsZXMgJENPTkZJR1VSQUJMRV9GRUFUVVJFX0RFRklORVMgXAogICAgIEVO
QUJMRV9DU1MzX0NPTkRJVElPTkFMX1JVTEVTPTAgXAogICAgIEVOQUJMRV9DVVNUT01fU0NIRU1F
X0hBTkRMRVI9MCBcCiAgICAgRU5BQkxFX0RBU0hCT0FSRF9TVVBQT1JUPTAgXAotICAgIEVOQUJM
RV9EQVRBTElTVF9FTEVNRU5UPTAgXAogICAgIEVOQUJMRV9EQVRBX1RSQU5TRkVSX0lURU1TPTAg
XAogICAgIEVOQUJMRV9ERVRBSUxTX0VMRU1FTlQ9MSBcCiAgICAgRU5BQkxFX0RFVklDRV9PUklF
TlRBVElPTj0wIFwKZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCBmZDA2
ODhmZDllNjQ3OTJkZjY4NmFlYjczYzBhOGRlYWFmYWJjMTZjLi40OWYwYjUxYjc2NWVhOWMyMWFi
NjQwZWU5OTZlNzEwZWMzOTc3OTViIDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTMtMTItMTEgIENoYW5nU2VvayBPaCAgPGNoYW5nc2Vv
ay5vaEBjb2xsYWJvcmEuY29tPgorCisgICAgICAgIFtHVEtdIERhdGFsaXN0IGVsZW1lbnQgc3Vw
cG9ydAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTg5
MzQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQg
YSBidWlsZCBvcHRpb24gZm9yIGRhdGFsaXN0LgorCisgICAgICAgICogU291cmNlL2F1dG90b29s
cy9QcmludEJ1aWxkQ29uZmlndXJhdGlvbi5tNDoKKyAgICAgICAgKiBTb3VyY2UvYXV0b3Rvb2xz
L1JlYWRDb21tYW5kTGluZUFyZ3VtZW50cy5tNDoKKyAgICAgICAgKiBTb3VyY2UvYXV0b3Rvb2xz
L1NldHVwQXV0b21ha2UubTQ6CisgICAgICAgICogU291cmNlL2F1dG90b29scy9TZXR1cFdlYktp
dEZlYXR1cmVzLm00OgorCiAyMDEzLTEyLTEwICBUYW1hcyBHZXJnZWx5ICA8dGdlcmdlbHkudS1z
emVnZWRAcGFydG5lci5zYW1zdW5nLmNvbT4KIAogICAgICAgICBbQ01BS0VdIFJlbW92ZSBjb2Rl
IHRoYXQgZGlzYWJsZXMgQysrMHggY29tcGF0IHdhcm5pbmdzIGZvciBnY2MtNC42IGFuZCBhYm92
ZS4K
</data>
<flag name="commit-queue"
          id="242517"
          type_id="3"
          status="-"
          setter="eflews.bot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>223347</attachid>
            <date>2014-02-06 10:55:07 -0800</date>
            <delta_ts>2014-02-06 11:12:48 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-98934-20140207035506.patch</filename>
            <type>text/plain</type>
            <size>39233</size>
            <attacher name="ChangSeok Oh">changseok</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTYzNTM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjJlYThlYTI2MTBhYmE5
Zjc5ODMyYzQ4Zjg5OGRjMjQyMjM3MjE5Yy4uYzg5MzlkMDFjNmM3NWFhMGJmYjEzNDYzMzU2Yzgw
Nzc1MjIzZjZiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY4IEBACisyMDE0LTAyLTA2ICBDaGFu
Z1Nlb2sgT2ggIDxjaGFuZ3Nlb2sub2hAY29sbGFib3JhLmNvbT4KKworICAgICAgICBEYXRhbGlz
dCBlbGVtZW50IHN1cHBvcnQgZm9yIFRleHRGaWVsZElucHV0VHlwZQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTg5MzQKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGNoYW5nZSBicmluZ3MgZGF0YWxp
c3Qgc3VwcG9ydCB0byBUZXh0RmllbGRJbnB1dFR5cGUuIFRvIGRvIHRoYXQsCisgICAgICAgIEkg
Y3JlYXRlZCB0d28gY2xhc3NlcyBTdWdnZXN0aW9uQ2hvb3NlciBhbmQgU3VnZ2VzdGlvbkVsZW1l
bnQgbmV3bHkuIFN1Z2dlc3Rpb25DaG9vc2VyCisgICAgICAgIGlzIGEgY29udHJvbGxlciB3aGlj
aCBUZXh0RmllbGRJbnB1dFR5cGUgdXNlcyB0byBzaG93L2hpZGUgYSBzdWdnZXN0aW9uIHBvcHVw
LgorICAgICAgICBUaGUgcG9wdXAgc2hvd2luZyBvcHRpb25zIG9mIGRhdGFsaXN0IGlzIGNvbnN0
cnVjdGVkIHdpdGggSFRNTERpdkVsZW1lbnRzCisgICAgICAgIHdoaWNoIGFyZSByZXByZXNlbnRl
ZCBieSBTdWdnZXN0aW9uRWxlbWVudCwgc3ViY2xhc3Mgb2YgSFRNTERpdkVsZW1lbnQuCisgICAg
ICAgIEFsbCBTdWdnZXN0aW9uRWxlbWVudHMgYXJlIGFsc28gd3JhcHBlZCBieSBhIGRpdiBlbGVt
ZW50IGNvbnRhaW5lciBhbmQgaXQgYmVsb25ncyB0bworICAgICAgICBTaGFkb3dSb29vdCBvZiBI
VE1MSW5wdXRFbG1lZW50LiBCYXNpY2FsbHkgbW9zdCBvZiBjb2RlIGlzIHNoYXJlYWJsZSBhbW9u
ZyBwb3J0cworICAgICAgICB0aHJvdWdoIGRlZmluaW5nIHNvbWUgZXh0cmEgc3R5bGUgaW4gY3Nz
IGFuZCBtb2RpZnlpbmcgUmVuZGVyVGhlbWUgc3R1ZmYsCisgICAgICAgIGJ1dCBoZXJlIEkgYXBw
bHkgdGhlIGNoYW5nZSB0byBndGsgcG9ydCBhaGVhZC4KKworICAgICAgICBObyBuZXcgdGVzdHMs
IGNvdmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoK
KyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFt
OgorICAgICAgICAqIGh0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlRleHRGaWVsZElucHV0VHlwZTo6aGFuZGxlS2V5ZG93bkV2ZW50KTogU2hvdyBwb3B1cCBv
ciBtb3ZlIGZvY3VzIGFjY29yZGluZyB0byB1c2VyIGlucHV0LgorICAgICAgICAoV2ViQ29yZTo6
VGV4dEZpZWxkSW5wdXRUeXBlOjpoYW5kbGVCbHVyRXZlbnQpOiBIaWRlIHBvcHVwIHdoZW4gdGV4
dCBmaWVsZCBsb3NlcyBmb2N1cy4KKyAgICAgICAgKFdlYkNvcmU6OlRleHRGaWVsZElucHV0VHlw
ZTo6Y3JlYXRlU2hhZG93U3VidHJlZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0RmllbGRJbnB1
dFR5cGU6OmRpZFNldFZhbHVlQnlVc2VyRWRpdCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0Rmll
bGRJbnB1dFR5cGU6OnByZWZpeCk6IFRoZSBwcmVmaXggaXMgYW4gaW5uZXIgdmFsdWUgaW4gaW5w
dXQgZmllbGQuIEl0IGlzIHJlcXVpcmVkIHRvIHJlYnVpbGQgc3VnZ2VzdGlvbiBwb3B1cC4KKyAg
ICAgICAgKFdlYkNvcmU6OlRleHRGaWVsZElucHV0VHlwZTo6c3VnZ2VzdGlvbnMpOgorICAgICAg
ICAoV2ViQ29yZTo6VGV4dEZpZWxkSW5wdXRUeXBlOjphZGRTdWdnZXN0aW9uQ29udGFpbmVyVG9T
aGFkb3dSb290KToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRGaWVsZElucHV0VHlwZTo6cmVtb3Zl
U3VnZ2VzdGlvbkNvbnRhaW5lckZyb21TaGFkb3dSb290KToKKyAgICAgICAgKFdlYkNvcmU6OlRl
eHRGaWVsZElucHV0VHlwZTo6ZGlkQ2hvb3NlVmFsdWUpOiBGaWxsIHRleHQgZmllbGQgd2l0aCB0
aGUgdmFsdWUgdXNlciBzZWxlY3RlZC4KKyAgICAgICAgKFdlYkNvcmU6OlRleHRGaWVsZElucHV0
VHlwZTo6c2hvdWxkU2hvd1N1Z2dlc3Rpb25zKToKKyAgICAgICAgKiBodG1sL1RleHRGaWVsZElu
cHV0VHlwZS5oOgorICAgICAgICAqIGh0bWwvc2hhZG93L1N1Z2dlc3Rpb25DaG9vc2VyLmNwcDog
QWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpTdWdnZXN0aW9uQ2hvb3Nlcjo6Y3JlYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlN1Z2dlc3Rpb25DaG9vc2VyOjpTdWdnZXN0aW9uQ2hvb3Nlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpTdWdnZXN0aW9uQ2hvb3Nlcjo6flN1Z2dlc3Rpb25DaG9vc2VyKToK
KyAgICAgICAgKFdlYkNvcmU6OlN1Z2dlc3Rpb25DaG9vc2VyOjpjcmVhdGVTdWdnZXN0aW9uQ29u
dGFpbmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlN1Z2dlc3Rpb25DaG9vc2VyOjphZGRTdWdnZXN0
aW9uc1RvQ29udGFpbmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlN1Z2dlc3Rpb25DaG9vc2VyOjpz
aG93KToKKyAgICAgICAgKFdlYkNvcmU6OlN1Z2dlc3Rpb25DaG9vc2VyOjpoaWRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlN1Z2dlc3Rpb25DaG9vc2VyOjpzZWxlY3QpOgorICAgICAgICAoV2ViQ29y
ZTo6U3VnZ2VzdGlvbkNob29zZXI6OmZvY3VzKToKKyAgICAgICAgKFdlYkNvcmU6OlN1Z2dlc3Rp
b25DaG9vc2VyOjp1bmZvY3VzKToKKyAgICAgICAgKFdlYkNvcmU6OlN1Z2dlc3Rpb25DaG9vc2Vy
OjpoYW5kbGVLZXlkb3duRXZlbnQpOgorICAgICAgICAqIGh0bWwvc2hhZG93L1N1Z2dlc3Rpb25D
aG9vc2VyLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6U3VnZ2VzdGlvbkNob29zZXI6OlN1
Z2dlc3Rpb25DaG9vc2VyQ2xpZW50Ojp+U3VnZ2VzdGlvbkNob29zZXJDbGllbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6U3VnZ2VzdGlvbkNob29zZXI6OmZvY3VzZWRTdWdnZXN0aW9uRWxlbWVudCk6
CisgICAgICAgICogaHRtbC9zaGFkb3cvU3VnZ2VzdGlvbkVsZW1lbnQuY3BwOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OlN1Z2dlc3Rpb25FbGVtZW50OjpTdWdnZXN0aW9uRWxlbWVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTdWdnZXN0aW9uRWxlbWVudDo6flN1Z2dlc3Rpb25FbGVtZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OlN1Z2dlc3Rpb25FbGVtZW50OjpjcmVhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6U3VnZ2VzdGlvbkVsZW1lbnQ6OnVwZGF0ZUFwcGVhcmFuY2UpOiBCb2xkIHRoZSBw
cmVmaXggc3RyaW5nIGFjY29yZGluZyB0byB1c2VyIGlucHV0LgorICAgICAgICAoV2ViQ29yZTo6
U3VnZ2VzdGlvbkVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIpOiBIYW5kbGUgbW91c2UgZXZl
bnQgdG8gY2hhbmdlIHRoZSBzdHlsZSBvZiBmb2N1c2VkL3VuZm9jdXNlZCBlbGVtZW50LgorICAg
ICAgICAoV2ViQ29yZTo6U3VnZ2VzdGlvbkVsZW1lbnQ6OmZvY3VzZWQpOiBIaWdobGlnaHQgdGhl
IGVsZW1lbnQgd2hlbiBoYXZpbmcgYSBmb2N1cy4KKyAgICAgICAgKFdlYkNvcmU6OlN1Z2dlc3Rp
b25FbGVtZW50Ojp1bmZvY3VzZWQpOiBSZXR1cm4gdGhlIHN0eWxlIG9mIGVsZW1lbnQgdG8gdGhl
IGRlZmF1bHQgdmFsdWUgd2hlbiBsb3NpbmcgZm9jdXMuCisgICAgICAgICogaHRtbC9zaGFkb3cv
U3VnZ2VzdGlvbkVsZW1lbnQuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpTdWdnZXN0aW9u
RWxlbWVudDo6U3VnZ2VzdGlvbkVsZW1lbnRPd25lcjo6flN1Z2dlc3Rpb25FbGVtZW50T3duZXIp
OgorICAgICAgICAoV2ViQ29yZTo6U3VnZ2VzdGlvbkVsZW1lbnQ6OnZhbHVlKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ndGsvUmVuZGVyVGhlbWVHdGsuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyVGhlbWVHdGs6OmV4dHJhRGVmYXVsdFN0eWxlU2hlZXQpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyVGhlbWVHdGs6OnN1cHBvcnRzRGF0YUxpc3RVSSk6CisgICAgICAgICogcGxhdGZvcm0v
Z3RrL1JlbmRlclRoZW1lR3RrLmg6CisKIDIwMTQtMDItMDYgIEtvb3AgTWFzdCA8a3dtQEZyZWVC
U0Qub3JnPgogCiAgICAgICAgIFVzZSBzeXN0ZW0gZGVmYXVsdCBjb21waWxlciBpbnN0ZWFkIG9m
IGdjYywgYXMgZmluYWwgZmFsbCB0aHJvdWdoLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Q01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCA4MDRj
ODQ1NmJiMWJjNjA2MWI4ZGUwZWIxOGE1NGUxYTk1MGU0ODk5Li4wZGE2YzI0YmRmODM4OGYwMTky
YWMxN2RhNGJlOWNmY2QyYTA5MDdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxp
c3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMTU2Miw2ICsx
NTYyLDggQEAgc2V0KFdlYkNvcmVfU09VUkNFUwogICAgIGh0bWwvc2hhZG93L1Byb2dyZXNzU2hh
ZG93RWxlbWVudC5jcHAKICAgICBodG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQuY3BwCiAg
ICAgaHRtbC9zaGFkb3cvU3BpbkJ1dHRvbkVsZW1lbnQuY3BwCisgICAgaHRtbC9zaGFkb3cvU3Vn
Z2VzdGlvbkNob29zZXIuY3BwCisgICAgaHRtbC9zaGFkb3cvU3VnZ2VzdGlvbkVsZW1lbnQuY3Bw
CiAgICAgaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcAogCiAgICAgaW5z
cGVjdG9yL0NvbW1hbmRMaW5lQVBJSG9zdC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L0dOVW1ha2VmaWxlLmFtIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KaW5kZXggNmU0
ODk1NGQ2MGI5MTIxOTE5MDk2M2Y3ODA2YzFmYzNmNjQ5M2M2MC4uOGYzMzAyODA5NzkzNThmYWIw
ZDIyYzdhYjIyMjI5M2Q5N2ZiYmNjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvR05VbWFr
ZWZpbGUuYW0KKysrIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KQEAgLTI3NCw3ICsy
NzQsOCBAQCBVU0VSX0FHRU5UX1NUWUxFX1NIRUVUUyA9IFwKIAkkKFdlYkNvcmUpL2Nzcy9tZWRp
YUNvbnRyb2xzLmNzcyBcCiAJJChXZWJDb3JlKS9jc3MvbWVkaWFDb250cm9sc0d0ay5jc3MgXAog
CSQoV2ViQ29yZSkvY3NzL2Z1bGxzY3JlZW4uY3NzIFwKLQkkKFdlYkNvcmUpL2Nzcy9wbHVnSW5z
LmNzcworCSQoV2ViQ29yZSkvY3NzL3BsdWdJbnMuY3NzIFwKKwkkKFdlYkNvcmUpL2Nzcy90aGVt
ZUd0ay5jc3MKIAogIyBwbHVnLWluIHJlc291cmNlcwogUExVR19JTlNfUkVTT1VSQ0VTID0gXApA
QCAtNjkzLDYgKzY5NCw3IEBAIEVYVFJBX0RJU1QgKz0gXAogCVNvdXJjZS9XZWJDb3JlL2Nzcy9w
bHVnSW5zLmNzcyBcCiAJU291cmNlL1dlYkNvcmUvY3NzL3F1aXJrcy5jc3MgXAogCVNvdXJjZS9X
ZWJDb3JlL2Nzcy9zdmcuY3NzIFwKKwlTb3VyY2UvV2ViQ29yZS9jc3MvdGhlbWVHdGsuY3NzIFwK
IAlTb3VyY2UvV2ViQ29yZS9jc3MvU1ZHQ1NTUHJvcGVydHlOYW1lcy5pbiBcCiAJU291cmNlL1dl
YkNvcmUvY3NzL1NWR0NTU1ZhbHVlS2V5d29yZHMuaW4gXAogCVNvdXJjZS9XZWJDb3JlL2Nzcy92
aWV3LXNvdXJjZS5jc3MgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUu
bGlzdC5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5kZXggNWRiZWE4
MjU0ODZjOTc1MzVhZGJiNzFlMTY1M2E0MWMzZjU1MWM3Ny4uYjRlYWRkY2FiNjZiMWVhNmZhMzA4
Njk2ZGM2Mjc4NjcyN2U3MzRhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZp
bGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCkBAIC0z
NjI1LDYgKzM2MjUsMTAgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9o
dG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQuaCBcCiAJU291cmNlL1dlYkNvcmUvaHRtbC9z
aGFkb3cvU3BpbkJ1dHRvbkVsZW1lbnQuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRv
dy9TcGluQnV0dG9uRWxlbWVudC5oIFwKKwlTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TdWdn
ZXN0aW9uQ2hvb3Nlci5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1N1Z2dlc3Rp
b25DaG9vc2VyLmggXAorCVNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1N1Z2dlc3Rpb25FbGVt
ZW50LmNwcCBcCisJU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU3VnZ2VzdGlvbkVsZW1lbnQu
aCBcCiAJU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRz
LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1l
bnRzLmggXAogCVNvdXJjZS9XZWJDb3JlL2h0bWwvUGFzc3dvcmRJbnB1dFR5cGUuY3BwIFwKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmNwcAppbmRleCA5MzgxZDk5Y2Jj
NWE1YTMxOGI3YTRkY2E4YWNhZGNiM2Y1N2FmZmZjLi45NjBhMzk3YjBkNTlmY2RiNGVhM2M3Yzg4
Y2YyY2I0YzU5MDZjOTM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHRGaWVs
ZElucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0RmllbGRJbnB1dFR5
cGUuY3BwCkBAIC0xLDYgKzEsNyBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNCBDb2xsYWJvcmEg
THRkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
IGFyZQpAQCAtMzgsOCArMzksMTAgQEAKICNpbmNsdWRlICJGb3JtRGF0YUxpc3QuaCIKICNpbmNs
dWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lU2VsZWN0aW9uLmgiCisjaW5jbHVkZSAiSFRN
TERhdGFMaXN0RWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxJbnB1dEVsZW1lbnQuaCIKICNpbmNs
dWRlICJIVE1MTmFtZXMuaCIKKyNpbmNsdWRlICJIVE1MT3B0aW9uRWxlbWVudC5oIgogI2luY2x1
ZGUgIktleWJvYXJkRXZlbnQuaCIKICNpbmNsdWRlICJOb2RlUmVuZGVyU3R5bGUuaCIKICNpbmNs
dWRlICJQYWdlLmgiCkBAIC00Nyw2ICs1MCw3IEBACiAjaW5jbHVkZSAiUmVuZGVyVGV4dENvbnRy
b2xTaW5nbGVMaW5lLmgiCiAjaW5jbHVkZSAiUmVuZGVyVGhlbWUuaCIKICNpbmNsdWRlICJTaGFk
b3dSb290LmgiCisjaW5jbHVkZSAiU3VnZ2VzdGlvbkNob29zZXIuaCIKICNpbmNsdWRlICJUZXh0
QnJlYWtJdGVyYXRvci5oIgogI2luY2x1ZGUgIlRleHRDb250cm9sSW5uZXJFbGVtZW50cy5oIgog
I2luY2x1ZGUgIlRleHRFdmVudC5oIgpAQCAtMTQ4LDYgKzE1MiwxMiBAQCB2b2lkIFRleHRGaWVs
ZElucHV0VHlwZTo6aGFuZGxlS2V5ZG93bkV2ZW50KEtleWJvYXJkRXZlbnQqIGV2ZW50KQogewog
ICAgIGlmICghZWxlbWVudCgpLmZvY3VzZWQoKSkKICAgICAgICAgcmV0dXJuOworCisjaWYgRU5B
QkxFKERBVEFMSVNUX0VMRU1FTlQpCisgICAgaWYgKG1fc3VnZ2VzdGlvbkNob29zZXIpCisgICAg
ICAgIG1fc3VnZ2VzdGlvbkNob29zZXItPmhhbmRsZUtleWRvd25FdmVudChldmVudCk7CisjZW5k
aWYKKwogICAgIEZyYW1lKiBmcmFtZSA9IGVsZW1lbnQoKS5kb2N1bWVudCgpLmZyYW1lKCk7CiAg
ICAgaWYgKCFmcmFtZSB8fCAhZnJhbWUtPmVkaXRvcigpLmRvVGV4dEZpZWxkQ29tbWFuZEZyb21F
dmVudCgmZWxlbWVudCgpLCBldmVudCkpCiAgICAgICAgIHJldHVybjsKQEAgLTE5OCw2ICsyMDgs
MTEgQEAgdm9pZCBUZXh0RmllbGRJbnB1dFR5cGU6OmhhbmRsZUJsdXJFdmVudCgpCiB7CiAgICAg
SW5wdXRUeXBlOjpoYW5kbGVCbHVyRXZlbnQoKTsKICAgICBlbGVtZW50KCkuZW5kRWRpdGluZygp
OworCisjaWYgRU5BQkxFKERBVEFMSVNUX0VMRU1FTlQpCisgICAgaWYgKG1fc3VnZ2VzdGlvbkNo
b29zZXIpCisgICAgICAgIG1fc3VnZ2VzdGlvbkNob29zZXItPmhpZGUoKTsKKyNlbmRpZgogfQog
CiBib29sIFRleHRGaWVsZElucHV0VHlwZTo6c2hvdWxkU3VibWl0SW1wbGljaXRseShFdmVudCog
ZXZlbnQpCkBAIC0yMzgsNiArMjUzLDExIEBAIHZvaWQgVGV4dEZpZWxkSW5wdXRUeXBlOjpjcmVh
dGVTaGFkb3dTdWJ0cmVlKCkKICAgICBib29sIHNob3VsZEhhdmVTcGluQnV0dG9uID0gdGhpcy0+
c2hvdWxkSGF2ZVNwaW5CdXR0b24oKTsKICAgICBib29sIGNyZWF0ZXNDb250YWluZXIgPSBzaG91
bGRIYXZlU3BpbkJ1dHRvbiB8fCBuZWVkc0NvbnRhaW5lcigpOwogCisjaWYgRU5BQkxFKERBVEFM
SVNUX0VMRU1FTlQpCisgICAgaWYgKHNob3VsZFJlc3BlY3RMaXN0QXR0cmlidXRlKCkpCisgICAg
ICAgIG1fc3VnZ2VzdGlvbkNob29zZXIgPSBTdWdnZXN0aW9uQ2hvb3Nlcjo6Y3JlYXRlKGRvY3Vt
ZW50LCAqdGhpcyk7CisjZW5kaWYKKwogICAgIG1faW5uZXJUZXh0ID0gVGV4dENvbnRyb2xJbm5l
clRleHRFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQpOwogICAgIGlmICghY3JlYXRlc0NvbnRhaW5l
cikgewogICAgICAgICBlbGVtZW50KCkudXNlckFnZW50U2hhZG93Um9vdCgpLT5hcHBlbmRDaGls
ZChtX2lubmVyVGV4dCwgSUdOT1JFX0VYQ0VQVElPTik7CkBAIC00NjUsNiArNDg1LDEwIEBAIHZv
aWQgVGV4dEZpZWxkSW5wdXRUeXBlOjpkaWRTZXRWYWx1ZUJ5VXNlckVkaXQoVmFsdWVDaGFuZ2VT
dGF0ZSBzdGF0ZSkKICAgICBpZiAoIWVsZW1lbnQoKS5mb2N1c2VkKCkpCiAgICAgICAgIHJldHVy
bjsKICAgICBpZiAoRnJhbWUqIGZyYW1lID0gZWxlbWVudCgpLmRvY3VtZW50KCkuZnJhbWUoKSkg
eworI2lmIEVOQUJMRShEQVRBTElTVF9FTEVNRU5UKQorICAgICAgICBpZiAobV9zdWdnZXN0aW9u
Q2hvb3NlcikKKyAgICAgICAgICAgIG1fc3VnZ2VzdGlvbkNob29zZXItPnNob3coZmFsc2UpOwor
I2VuZGlmCiAgICAgICAgIGlmIChzdGF0ZSA9PSBWYWx1ZUNoYW5nZVN0YXRlTm9uZSkKICAgICAg
ICAgICAgIGZyYW1lLT5lZGl0b3IoKS50ZXh0RmllbGREaWRCZWdpbkVkaXRpbmcoJmVsZW1lbnQo
KSk7CiAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS50ZXh0RGlkQ2hhbmdlSW5UZXh0RmllbGQoJmVs
ZW1lbnQoKSk7CkBAIC01MTEsNCArNTM1LDY2IEBAIGJvb2wgVGV4dEZpZWxkSW5wdXRUeXBlOjpz
aG91bGRTcGluQnV0dG9uUmVzcG9uZFRvV2hlZWxFdmVudHMoKQogICAgIHJldHVybiBzaG91bGRT
cGluQnV0dG9uUmVzcG9uZFRvTW91c2VFdmVudHMoKSAmJiBlbGVtZW50KCkuZm9jdXNlZCgpOwog
fQogCisjaWYgRU5BQkxFKERBVEFMSVNUX0VMRU1FTlQpCitTdHJpbmcgVGV4dEZpZWxkSW5wdXRU
eXBlOjpwcmVmaXgoKSBjb25zdAoreworICAgIHJldHVybiBlbGVtZW50KCkuaW5uZXJUZXh0VmFs
dWUoKTsKK30KKworVmVjdG9yPFN0cmluZz4gVGV4dEZpZWxkSW5wdXRUeXBlOjpzdWdnZXN0aW9u
cyhib29sIG5lZWRGdWxsTGlzdCkgY29uc3QKK3sKKyAgICBWZWN0b3I8U3RyaW5nPiBzdWdnZXN0
aW9uczsKKyAgICBIVE1MRGF0YUxpc3RFbGVtZW50KiBkYXRhTGlzdCA9IGVsZW1lbnQoKS5kYXRh
TGlzdCgpOworICAgIGlmIChkYXRhTGlzdCkgeworICAgICAgICBSZWZQdHI8SFRNTENvbGxlY3Rp
b24+IG9wdGlvbnMgPSBkYXRhTGlzdC0+b3B0aW9ucygpOworICAgICAgICBpZiAoIW9wdGlvbnMt
Pmxlbmd0aCgpIHx8ICghbmVlZEZ1bGxMaXN0ICYmIHByZWZpeCgpLmlzRW1wdHkoKSkpCisgICAg
ICAgICAgICByZXR1cm4gc3VnZ2VzdGlvbnM7CisKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgSFRNTE9wdGlvbkVsZW1lbnQqIG9wdGlvbiA9IHRvSFRNTE9wdGlvbkVsZW1lbnQob3B0aW9u
cy0+aXRlbShpKSk7ICsraSkgeworICAgICAgICAgICAgaWYgKCFlbGVtZW50KCkuaXNWYWxpZFZh
bHVlKG9wdGlvbi0+dmFsdWUoKSkpCisgICAgICAgICAgICAgICAgY29udGludWU7CisKKyAgICAg
ICAgICAgIFN0cmluZyBjYW5kaWRhdGVTdHJpbmcgPSBlbGVtZW50KCkuc2FuaXRpemVWYWx1ZShv
cHRpb24tPnZhbHVlKCkpOworICAgICAgICAgICAgaWYgKCFjYW5kaWRhdGVTdHJpbmcuZmluZEln
bm9yaW5nQ2FzZShwcmVmaXgoKSkgJiYgY2FuZGlkYXRlU3RyaW5nLmxlbmd0aCgpIDw9IHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihlbGVtZW50KCkubWF4TGVuZ3RoKCkpKQorICAgICAgICAgICAgICAg
IHN1Z2dlc3Rpb25zLmFwcGVuZChjYW5kaWRhdGVTdHJpbmcpOworICAgICAgICB9CisgICAgfQor
CisgICAgcmV0dXJuIHN1Z2dlc3Rpb25zOworfQorCit2b2lkIFRleHRGaWVsZElucHV0VHlwZTo6
YWRkU3VnZ2VzdGlvbkNvbnRhaW5lclRvU2hhZG93Um9vdChIVE1MRWxlbWVudCogc3VnZ2VzdGlv
bkNvbnRhaW5lcikKK3sKKyAgICBpZiAoIXN1Z2dlc3Rpb25Db250YWluZXIpCisgICAgICAgIHJl
dHVybjsKKworICAgIC8vIE5lZWQgdG8gZm9yY2UgcG9zaXRpb246YWJzb2x1dGUgYmVjYXVzZSBS
ZW5kZXJNZW51TGlzdCBkb2Vzbid0IGFzc3VtZSBpdAorICAgIC8vIGNvbnRhaW5zIG5vbi1hYnNv
bHV0ZSBvciBub24tZml4ZWQgcmVuZGVyZXJzIGFzIGNoaWxkcmVuLgorICAgIHN1Z2dlc3Rpb25D
b250YWluZXItPnNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlQb3NpdGlvbiwgQ1NT
VmFsdWVBYnNvbHV0ZSk7CisgICAgc3VnZ2VzdGlvbkNvbnRhaW5lci0+c2V0SW5saW5lU3R5bGVQ
cm9wZXJ0eShDU1NQcm9wZXJ0eUxlZnQsIGVsZW1lbnQoKS5ib3VuZGluZ0JveCgpLngoKSArIGVs
ZW1lbnQoKS5jbGllbnRMZWZ0KCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUFgpOworICAgIHN1
Z2dlc3Rpb25Db250YWluZXItPnNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlUb3As
IGVsZW1lbnQoKS5ib3VuZGluZ0JveCgpLm1heFkoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19Q
WCk7CisgICAgc3VnZ2VzdGlvbkNvbnRhaW5lci0+c2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQ
cm9wZXJ0eVdpZHRoLCBlbGVtZW50KCkuY2xpZW50V2lkdGgoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6
OkNTU19QWCk7CisKKyAgICBlbGVtZW50KCkudXNlckFnZW50U2hhZG93Um9vdCgpLT5hcHBlbmRD
aGlsZChzdWdnZXN0aW9uQ29udGFpbmVyKTsKK30KKwordm9pZCBUZXh0RmllbGRJbnB1dFR5cGU6
OnJlbW92ZVN1Z2dlc3Rpb25Db250YWluZXJGcm9tU2hhZG93Um9vdChIVE1MRWxlbWVudCogc3Vn
Z2VzdGlvbkNvbnRhaW5lcikKK3sKKyAgICBpZiAoIXN1Z2dlc3Rpb25Db250YWluZXIpCisgICAg
ICAgIHJldHVybjsKKworICAgIGVsZW1lbnQoKS51c2VyQWdlbnRTaGFkb3dSb290KCktPnJlbW92
ZUNoaWxkKHN1Z2dlc3Rpb25Db250YWluZXIpOworfQorCit2b2lkIFRleHRGaWVsZElucHV0VHlw
ZTo6ZGlkQ2hvb3NlVmFsdWUoY29uc3QgU3RyaW5nJiB2YWx1ZSkKK3sKKyAgICBlbGVtZW50KCku
c2V0RWRpdGluZ1ZhbHVlKHZhbHVlKTsKK30KKworYm9vbCBUZXh0RmllbGRJbnB1dFR5cGU6OnNo
b3VsZFNob3dTdWdnZXN0aW9ucygpCit7CisgICAgcmV0dXJuIHNob3VsZFJlc3BlY3RMaXN0QXR0
cmlidXRlKCkgJiYgZWxlbWVudCgpLmZhc3RIYXNBdHRyaWJ1dGUobGlzdEF0dHIpOworfQorI2Vu
ZGlmCisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHRGaWVs
ZElucHV0VHlwZS5oCmluZGV4IDYyMGJhNTU1MGViZjhlMjY4ZTBkZTAyZTlkZTBlNDI1NTRiNWQ3
ZjkuLmE0NTNlN2ZlM2NmNDI2OWI2OTgzMDkwMWMyZGExNWRkZDQ4NzAxYjMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUuaApAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBD
b3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxNCBDb2xsYWJvcmEgTHRkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQpAQCAtMzQsNiArMzUsMTAgQEAKICNpbmNs
dWRlICJJbnB1dFR5cGUuaCIKICNpbmNsdWRlICJTcGluQnV0dG9uRWxlbWVudC5oIgogCisjaWYg
RU5BQkxFKERBVEFMSVNUX0VMRU1FTlQpCisjaW5jbHVkZSAiU3VnZ2VzdGlvbkNob29zZXIuaCIK
KyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEZvcm1EYXRhTGlzdDsKQEAg
LTQxLDcgKzQ2LDExIEBAIGNsYXNzIFRleHRDb250cm9sSW5uZXJUZXh0RWxlbWVudDsKIAogLy8g
VGhlIGNsYXNzIHJlcHJlc2VudHMgdHlwZXMgb2Ygd2hpY2ggVUkgY29udGFpbiB0ZXh0IGZpZWxk
cy4KIC8vIEl0IHN1cHBvcnRzIG5vdCBvbmx5IHRoZSB0eXBlcyBmb3IgQmFzZVRleHRJbnB1dFR5
cGUgYnV0IGFsc28gdHlwZT1udW1iZXIuCi1jbGFzcyBUZXh0RmllbGRJbnB1dFR5cGUgOiBwdWJs
aWMgSW5wdXRUeXBlLCBwcm90ZWN0ZWQgU3BpbkJ1dHRvbkVsZW1lbnQ6OlNwaW5CdXR0b25Pd25l
ciB7CitjbGFzcyBUZXh0RmllbGRJbnB1dFR5cGUgOiBwdWJsaWMgSW5wdXRUeXBlLCBwcm90ZWN0
ZWQgU3BpbkJ1dHRvbkVsZW1lbnQ6OlNwaW5CdXR0b25Pd25lcgorI2lmIEVOQUJMRShEQVRBTElT
VF9FTEVNRU5UKQorICAgICwgcHJvdGVjdGVkIFN1Z2dlc3Rpb25DaG9vc2VyOjpTdWdnZXN0aW9u
Q2hvb3NlckNsaWVudAorI2VuZGlmCit7CiBwcm90ZWN0ZWQ6CiAgICAgZXhwbGljaXQgVGV4dEZp
ZWxkSW5wdXRUeXBlKEhUTUxJbnB1dEVsZW1lbnQmKTsKICAgICB2aXJ0dWFsIH5UZXh0RmllbGRJ
bnB1dFR5cGUoKTsKQEAgLTEwNiw2ICsxMTUsMTYgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZv
aWQgc3BpbkJ1dHRvblN0ZXBEb3duKCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHNwaW5C
dXR0b25TdGVwVXAoKSBvdmVycmlkZTsKIAorI2lmIEVOQUJMRShEQVRBTElTVF9FTEVNRU5UKQor
ICAgIC8vIFN1Z2dlc3Rpb25DaG9vc2VyOjpTdWdnZXN0aW9uQ2hvb3NlckNsaWVudCBmdW5jdGlv
bnMuCisgICAgdmlydHVhbCBTdHJpbmcgcHJlZml4KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdmly
dHVhbCBWZWN0b3I8U3RyaW5nPiBzdWdnZXN0aW9ucyhib29sIG5lZWRGdWxsTGlzdCkgY29uc3Qg
b3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGFkZFN1Z2dlc3Rpb25Db250YWluZXJUb1NoYWRv
d1Jvb3QoSFRNTEVsZW1lbnQqKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlU3Vn
Z2VzdGlvbkNvbnRhaW5lckZyb21TaGFkb3dSb290KEhUTUxFbGVtZW50Kikgb3ZlcnJpZGU7Cisg
ICAgdmlydHVhbCB2b2lkIGRpZENob29zZVZhbHVlKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwor
ICAgIHZpcnR1YWwgYm9vbCBzaG91bGRTaG93U3VnZ2VzdGlvbnMoKSBvdmVycmlkZTsKKyNlbmRp
ZgorCiAgICAgUmVmUHRyPEhUTUxFbGVtZW50PiBtX2NvbnRhaW5lcjsKICAgICBSZWZQdHI8SFRN
TEVsZW1lbnQ+IG1faW5uZXJCbG9jazsKICAgICBSZWZQdHI8VGV4dENvbnRyb2xJbm5lclRleHRF
bGVtZW50PiBtX2lubmVyVGV4dDsKQEAgLTExNCw2ICsxMzMsOSBAQCBwcml2YXRlOgogI2lmIEVO
QUJMRShJTlBVVF9TUEVFQ0gpCiAgICAgUmVmUHRyPEhUTUxFbGVtZW50PiBtX3NwZWVjaEJ1dHRv
bjsKICNlbmRpZgorI2lmIEVOQUJMRShEQVRBTElTVF9FTEVNRU5UKQorICAgIE93blB0cjxTdWdn
ZXN0aW9uQ2hvb3Nlcj4gbV9zdWdnZXN0aW9uQ2hvb3NlcjsKKyNlbmRpZgogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cv
U3VnZ2VzdGlvbkNob29zZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU3VnZ2Vz
dGlvbkNob29zZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ1M2I1YTQ4MDk0ZmE1MzI4ZWVhOTE3MDNlZjQz
MmM0ODYwNmQ1YzUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRv
dy9TdWdnZXN0aW9uQ2hvb3Nlci5jcHAKQEAgLTAsMCArMSwyMDEgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTQgQ29sbGFib3JhIEx0ZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0
aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5h
bWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVj
aWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFT
IElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAor
ICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiU3VnZ2VzdGlvbkNob29zZXIuaCIKKworI2lmIEVOQUJMRShEQVRB
TElTVF9FTEVNRU5UKQorCisjaW5jbHVkZSAiS2V5Ym9hcmRFdmVudC5oIgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK1Bhc3NPd25QdHI8U3VnZ2VzdGlvbkNob29zZXI+IFN1Z2dlc3Rpb25DaG9v
c2VyOjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBTdWdnZXN0aW9uQ2hvb3NlckNsaWVudCYg
Y2xpZW50KQoreworICAgIHJldHVybiBhZG9wdFB0cihuZXcgU3VnZ2VzdGlvbkNob29zZXIoZG9j
dW1lbnQsIGNsaWVudCkpOworfQorCitTdWdnZXN0aW9uQ2hvb3Nlcjo6U3VnZ2VzdGlvbkNob29z
ZXIoRG9jdW1lbnQmIGRvY3VtZW50LCBTdWdnZXN0aW9uQ2hvb3NlckNsaWVudCYgY2xpZW50KQor
ICAgIDogbV9kb2N1bWVudChkb2N1bWVudCkKKyAgICAsIG1fY2xpZW50KGNsaWVudCkKKyAgICAs
IG1fY29udGFpbmVyKG51bGxwdHIpCisgICAgLCBtX2ZvY3VzZWRTdWdnZXN0aW9uRWxlbWVudChu
dWxscHRyKQoreworfQorCitTdWdnZXN0aW9uQ2hvb3Nlcjo6flN1Z2dlc3Rpb25DaG9vc2VyKCkK
K3sKKyAgICBoaWRlKCk7Cit9CisKK1Bhc3NSZWZQdHI8SFRNTEVsZW1lbnQ+IFN1Z2dlc3Rpb25D
aG9vc2VyOjpjcmVhdGVTdWdnZXN0aW9uQ29udGFpbmVyKCkKK3sKKyAgICBSZWZQdHI8SFRNTEVs
ZW1lbnQ+IGNvbnRhaW5lciA9IEhUTUxEaXZFbGVtZW50OjpjcmVhdGUobV9kb2N1bWVudCk7Cisg
ICAgY29udGFpbmVyLT5zZXRQc2V1ZG8oIi13ZWJraXQtc3VnZ2VzdGlvbi1jb250YWluZXIiKTsK
KworICAgIHJldHVybiBjb250YWluZXIucmVsZWFzZSgpOworfQorCit2b2lkIFN1Z2dlc3Rpb25D
aG9vc2VyOjphZGRTdWdnZXN0aW9uc1RvQ29udGFpbmVyKFZlY3RvcjxTdHJpbmc+JiBzdWdnZXN0
aW9ucykKK3sKKyAgICBtX2NvbnRhaW5lci0+cmVtb3ZlQ2hpbGRyZW4oKTsKKworICAgIGludCBw
cmVmaXhMZW5ndGggPSBtX2NsaWVudC5wcmVmaXgoKS5sZW5ndGgoKTsKKyAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgc3VnZ2VzdGlvbnMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgUmVmUHRy
PFN1Z2dlc3Rpb25FbGVtZW50PiBzdWdnZXN0aW9uRWxlbWVudCA9IFN1Z2dlc3Rpb25FbGVtZW50
OjpjcmVhdGUodGhpcywgc3VnZ2VzdGlvbnNbaV0sIG1fZG9jdW1lbnQpOworICAgICAgICBzdWdn
ZXN0aW9uRWxlbWVudC0+dXBkYXRlQXBwZWFyYW5jZShwcmVmaXhMZW5ndGgpOworCisgICAgICAg
IG1fY29udGFpbmVyLT5hcHBlbmRDaGlsZChzdWdnZXN0aW9uRWxlbWVudC5yZWxlYXNlKCksIEFT
U0VSVF9OT19FWENFUFRJT04pOworICAgIH0KK30KKwordm9pZCBTdWdnZXN0aW9uQ2hvb3Nlcjo6
c2hvdyhib29sIHNob3dGdWxsTGlzdCkKK3sKKyAgICBpZiAoIW1fY2xpZW50LnNob3VsZFNob3dT
dWdnZXN0aW9ucygpKQorICAgICAgICByZXR1cm47CisKKyAgICB1bmZvY3VzKCk7CisKKyAgICBW
ZWN0b3I8U3RyaW5nPiBzdWdnZXN0aW9ucyA9IG1fY2xpZW50LnN1Z2dlc3Rpb25zKHNob3dGdWxs
TGlzdCk7CisgICAgaWYgKHN1Z2dlc3Rpb25zLmlzRW1wdHkoKSkgeworICAgICAgICBoaWRlKCk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoIW1fY29udGFpbmVyKSB7CisgICAg
ICAgIG1fY29udGFpbmVyID0gY3JlYXRlU3VnZ2VzdGlvbkNvbnRhaW5lcigpOworICAgICAgICBt
X2NsaWVudC5hZGRTdWdnZXN0aW9uQ29udGFpbmVyVG9TaGFkb3dSb290KG1fY29udGFpbmVyLmdl
dCgpKTsKKyAgICB9CisKKyAgICBhZGRTdWdnZXN0aW9uc1RvQ29udGFpbmVyKHN1Z2dlc3Rpb25z
KTsKK30KKwordm9pZCBTdWdnZXN0aW9uQ2hvb3Nlcjo6aGlkZSgpCit7CisgICAgaWYgKG1fY29u
dGFpbmVyKSB7CisgICAgICAgIG1fY2xpZW50LnJlbW92ZVN1Z2dlc3Rpb25Db250YWluZXJGcm9t
U2hhZG93Um9vdChtX2NvbnRhaW5lci5nZXQoKSk7CisgICAgICAgIG1fY29udGFpbmVyID0gMDsK
KyAgICB9CisgICAgaWYgKG1fZm9jdXNlZFN1Z2dlc3Rpb25FbGVtZW50KQorICAgICAgICBtX2Zv
Y3VzZWRTdWdnZXN0aW9uRWxlbWVudCA9IG51bGxwdHI7Cit9CisKK2Jvb2wgU3VnZ2VzdGlvbkNo
b29zZXI6OnNlbGVjdChTdWdnZXN0aW9uRWxlbWVudCogc3VnZ2VzdGlvbkVsZW1lbnQpCit7Cisg
ICAgaWYgKCFzdWdnZXN0aW9uRWxlbWVudCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg
bV9jbGllbnQuZGlkQ2hvb3NlVmFsdWUoc3VnZ2VzdGlvbkVsZW1lbnQtPnZhbHVlKCkpOworICAg
IGhpZGUoKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBTdWdnZXN0aW9uQ2hvb3Nlcjo6
Zm9jdXMoRm9jdXNEaXJlY3Rpb24gZGlyZWN0aW9uKQoreworICAgIFN1Z2dlc3Rpb25FbGVtZW50
KiBuZXdGb2N1c2VkU3VnZ2VzdGlvbkVsZW1lbnQgPSBtX2ZvY3VzZWRTdWdnZXN0aW9uRWxlbWVu
dDsKKworICAgIHVuZm9jdXMoKTsKKworICAgIHN3aXRjaCAoZGlyZWN0aW9uKSB7CisgICAgY2Fz
ZSBGb2N1c0RpcmVjdGlvbkZvcndhcmQ6CisgICAgY2FzZSBGb2N1c0RpcmVjdGlvbkRvd246Cisg
ICAgICAgIGlmICghbmV3Rm9jdXNlZFN1Z2dlc3Rpb25FbGVtZW50KQorICAgICAgICAgICAgbmV3
Rm9jdXNlZFN1Z2dlc3Rpb25FbGVtZW50ID0gdG9TdWdnZXN0aW9uRWxlbWVudChtX2NvbnRhaW5l
ci0+Zmlyc3RDaGlsZCgpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbmV3Rm9jdXNlZFN1
Z2dlc3Rpb25FbGVtZW50ID0gdG9TdWdnZXN0aW9uRWxlbWVudChuZXdGb2N1c2VkU3VnZ2VzdGlv
bkVsZW1lbnQtPm5leHRTaWJsaW5nKCkgPyBuZXdGb2N1c2VkU3VnZ2VzdGlvbkVsZW1lbnQtPm5l
eHRTaWJsaW5nKCkgOiBtX2NvbnRhaW5lci0+Zmlyc3RDaGlsZCgpKTsKKyAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBGb2N1c0RpcmVjdGlvbkJhY2t3YXJkOgorICAgIGNhc2UgRm9jdXNEaXJlY3Rp
b25VcDoKKyAgICAgICAgaWYgKCFuZXdGb2N1c2VkU3VnZ2VzdGlvbkVsZW1lbnQpCisgICAgICAg
ICAgICBuZXdGb2N1c2VkU3VnZ2VzdGlvbkVsZW1lbnQgPSB0b1N1Z2dlc3Rpb25FbGVtZW50KG1f
Y29udGFpbmVyLT5sYXN0Q2hpbGQoKSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG5ld0Zv
Y3VzZWRTdWdnZXN0aW9uRWxlbWVudCA9IHRvU3VnZ2VzdGlvbkVsZW1lbnQobmV3Rm9jdXNlZFN1
Z2dlc3Rpb25FbGVtZW50LT5wcmV2aW91c1NpYmxpbmcoKSA/IG5ld0ZvY3VzZWRTdWdnZXN0aW9u
RWxlbWVudC0+cHJldmlvdXNTaWJsaW5nKCkgOiBtX2NvbnRhaW5lci0+bGFzdENoaWxkKCkpOwor
ICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKKyAgICB9CisKKyAgICBmb2N1cyhuZXdGb2N1c2VkU3VnZ2VzdGlvbkVsZW1lbnQpOworfQor
Cit2b2lkIFN1Z2dlc3Rpb25DaG9vc2VyOjpmb2N1cyhTdWdnZXN0aW9uRWxlbWVudCogc3VnZ2Vz
dGlvbkVsZW1lbnQpCit7CisgICAgaWYgKHN1Z2dlc3Rpb25FbGVtZW50ICYmIHN1Z2dlc3Rpb25F
bGVtZW50ID09IG1fZm9jdXNlZFN1Z2dlc3Rpb25FbGVtZW50KQorICAgICAgICByZXR1cm47CisK
KyAgICB1bmZvY3VzKCk7CisKKyAgICBtX2ZvY3VzZWRTdWdnZXN0aW9uRWxlbWVudCA9IHN1Z2dl
c3Rpb25FbGVtZW50OworICAgIG1fZm9jdXNlZFN1Z2dlc3Rpb25FbGVtZW50LT5mb2N1c2VkKCk7
Cit9CisKK3ZvaWQgU3VnZ2VzdGlvbkNob29zZXI6OnVuZm9jdXMoKQoreworICAgIGlmICghbV9m
b2N1c2VkU3VnZ2VzdGlvbkVsZW1lbnQpCisgICAgICAgIHJldHVybjsKKworICAgIG1fZm9jdXNl
ZFN1Z2dlc3Rpb25FbGVtZW50LT51bmZvY3VzZWQoKTsKKyAgICBtX2ZvY3VzZWRTdWdnZXN0aW9u
RWxlbWVudCA9IG51bGxwdHI7Cit9CisKK3ZvaWQgU3VnZ2VzdGlvbkNob29zZXI6OmhhbmRsZUtl
eWRvd25FdmVudChLZXlib2FyZEV2ZW50KiBldmVudCkKK3sKKyAgICBpZiAoIWV2ZW50IHx8ICFt
X2NsaWVudC5zaG91bGRTaG93U3VnZ2VzdGlvbnMoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
Ym9vbCBoYW5kbGVkID0gZmFsc2U7CisgICAgU3RyaW5nIGtleSA9IGV2ZW50LT5rZXlJZGVudGlm
aWVyKCk7CisgICAgaWYgKG1fY29udGFpbmVyICYmIG1fY29udGFpbmVyLT5oYXNDaGlsZE5vZGVz
KCkpIHsKKyAgICAgICAgaWYgKGtleSA9PSAiVXAiKSB7CisgICAgICAgICAgICBmb2N1cyhGb2N1
c0RpcmVjdGlvbkJhY2t3YXJkKTsKKyAgICAgICAgICAgIGhhbmRsZWQgPSB0cnVlOworICAgICAg
ICB9IGVsc2UgaWYgKGtleSA9PSAiRG93biIpIHsKKyAgICAgICAgICAgIGZvY3VzKEZvY3VzRGly
ZWN0aW9uRm9yd2FyZCk7CisgICAgICAgICAgICBoYW5kbGVkID0gdHJ1ZTsKKyAgICAgICAgfSBl
bHNlIGlmIChrZXkgPT0gIlUrMDAxQiIpIHsgLy8gQ2FuY2VsCisgICAgICAgICAgICBoaWRlKCk7
CisgICAgICAgICAgICBoYW5kbGVkID0gdHJ1ZTsKKyAgICAgICAgfSBlbHNlIGlmIChrZXkgPT0g
IlUrMDAwOSIpIC8vIFRhYgorICAgICAgICAgICAgc2VsZWN0KG1fZm9jdXNlZFN1Z2dlc3Rpb25F
bGVtZW50KTsKKyAgICAgICAgZWxzZSBpZiAoa2V5ID09ICJFbnRlciIpCisgICAgICAgICAgICBo
YW5kbGVkID0gc2VsZWN0KG1fZm9jdXNlZFN1Z2dlc3Rpb25FbGVtZW50KTsKKyAgICB9IGVsc2Ug
eworICAgICAgICBpZiAoa2V5ID09ICJVcCIgfHwga2V5ID09ICJEb3duIikgeworICAgICAgICAg
ICAgc2hvdyh0cnVlKTsKKyAgICAgICAgICAgIGhhbmRsZWQgPSB0cnVlOworICAgICAgICB9Cisg
ICAgfQorCisgICAgaWYgKGhhbmRsZWQpCisgICAgICAgIGV2ZW50LT5zZXREZWZhdWx0SGFuZGxl
ZCgpOworfQorCit9CisjZW5kaWYgLy8gRU5BQkxFKERBVEFMSVNUX0VMRU1FTlQpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TdWdnZXN0aW9uQ2hvb3Nlci5oIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU3VnZ2VzdGlvbkNob29zZXIuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5j
MzczZmE3ZDU3MjIzNTQwYjQ4MWM4NDFkNzE4ZDUwYjZjN2UzZTdlCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU3VnZ2VzdGlvbkNob29zZXIuaApAQCAtMCww
ICsxLDkxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IENvbGxhYm9yYSBMdGQuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFt
ZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICog
ICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAq
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKgorICovCisKKyNpZm5kZWYgU3VnZ2VzdGlvbkNob29zZXJfaAorI2RlZmluZSBT
dWdnZXN0aW9uQ2hvb3Nlcl9oCisKKyNpZiBFTkFCTEUoREFUQUxJU1RfRUxFTUVOVCkKKworI2lu
Y2x1ZGUgIkZvY3VzRGlyZWN0aW9uLmgiCisjaW5jbHVkZSAiU3VnZ2VzdGlvbkVsZW1lbnQuaCIK
KyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitjbGFzcyBTdWdnZXN0aW9uQ2hvb3NlckNsaWVudDsKKworY2xhc3MgU3VnZ2VzdGlvbkNob29z
ZXIgOiBwdWJsaWMgU3VnZ2VzdGlvbkVsZW1lbnQ6OlN1Z2dlc3Rpb25FbGVtZW50T3duZXIgewor
cHVibGljOgorICAgIGNsYXNzIFN1Z2dlc3Rpb25DaG9vc2VyQ2xpZW50IHsKKyAgICBwdWJsaWM6
CisgICAgICAgIHZpcnR1YWwgflN1Z2dlc3Rpb25DaG9vc2VyQ2xpZW50KCkgeyB9CisgICAgICAg
IHZpcnR1YWwgU3RyaW5nIHByZWZpeCgpIGNvbnN0ID0gMDsKKyAgICAgICAgdmlydHVhbCBWZWN0
b3I8U3RyaW5nPiBzdWdnZXN0aW9ucyhib29sIG5lZWRGdWxsTGlzdCkgY29uc3QgPSAwOworICAg
ICAgICB2aXJ0dWFsIHZvaWQgYWRkU3VnZ2VzdGlvbkNvbnRhaW5lclRvU2hhZG93Um9vdChIVE1M
RWxlbWVudCopID0gMDsKKyAgICAgICAgdmlydHVhbCB2b2lkIHJlbW92ZVN1Z2dlc3Rpb25Db250
YWluZXJGcm9tU2hhZG93Um9vdChIVE1MRWxlbWVudCopID0gMDsKKyAgICAgICAgdmlydHVhbCB2
b2lkIGRpZENob29zZVZhbHVlKGNvbnN0IFN0cmluZyYpID0gMDsKKyAgICAgICAgdmlydHVhbCBi
b29sIHNob3VsZFNob3dTdWdnZXN0aW9ucygpID0gMDsKKyAgICB9OworCisgICAgdmlydHVhbCB+
U3VnZ2VzdGlvbkNob29zZXIoKTsKKworICAgIHN0YXRpYyBQYXNzT3duUHRyPFN1Z2dlc3Rpb25D
aG9vc2VyPiBjcmVhdGUoRG9jdW1lbnQmLCBTdWdnZXN0aW9uQ2hvb3NlckNsaWVudCYpOworCisg
ICAgdmlydHVhbCBTdWdnZXN0aW9uRWxlbWVudCogZm9jdXNlZFN1Z2dlc3Rpb25FbGVtZW50KCkg
Y29uc3QgeyByZXR1cm4gbV9mb2N1c2VkU3VnZ2VzdGlvbkVsZW1lbnQ7IH0KKworICAgIHZpcnR1
YWwgdm9pZCBzaG93KGJvb2wgc2hvd0Z1bGxMaXN0KTsKKyAgICB2aXJ0dWFsIHZvaWQgaGlkZSgp
OworCisgICAgdmlydHVhbCBQYXNzUmVmUHRyPEhUTUxFbGVtZW50PiBjcmVhdGVTdWdnZXN0aW9u
Q29udGFpbmVyKCk7CisgICAgdmlydHVhbCB2b2lkIGFkZFN1Z2dlc3Rpb25zVG9Db250YWluZXIo
VmVjdG9yPFN0cmluZz4mKTsKKworICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVLZXlkb3duRXZlbnQo
S2V5Ym9hcmRFdmVudCopOworCisgICAgdmlydHVhbCB2b2lkIGZvY3VzKEZvY3VzRGlyZWN0aW9u
KTsKKworICAgIC8vIFN1Z2dlc3Rpb25FbGVtZW50T3duZXIKKyAgICB2aXJ0dWFsIGJvb2wgc2Vs
ZWN0KFN1Z2dlc3Rpb25FbGVtZW50Kikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGZvY3Vz
KFN1Z2dlc3Rpb25FbGVtZW50Kikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHVuZm9jdXMo
KSBvdmVycmlkZTsKKworcHJvdGVjdGVkOgorICAgIGV4cGxpY2l0IFN1Z2dlc3Rpb25DaG9vc2Vy
KERvY3VtZW50JiwgU3VnZ2VzdGlvbkNob29zZXJDbGllbnQmKTsKKworcHJpdmF0ZToKKyAgICBE
b2N1bWVudCYgbV9kb2N1bWVudDsKKyAgICBTdWdnZXN0aW9uQ2hvb3NlckNsaWVudCYgbV9jbGll
bnQ7CisgICAgUmVmUHRyPEhUTUxFbGVtZW50PiBtX2NvbnRhaW5lcjsKKyAgICBTdWdnZXN0aW9u
RWxlbWVudCogbV9mb2N1c2VkU3VnZ2VzdGlvbkVsZW1lbnQ7Cit9OworCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoREFUQUxJU1RfRUxFTUVOVCkKKworI2VuZGlm
IC8vIFRleHRDaG9vc2VyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93
L1N1Z2dlc3Rpb25FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1N1Z2dl
c3Rpb25FbGVtZW50LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hMWJjMjhlMjFiOGVlZGFhOGMxZmY4Nzk0OGVm
MzQzMDY2Yjk3Y2E0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFk
b3cvU3VnZ2VzdGlvbkVsZW1lbnQuY3BwCkBAIC0wLDAgKzEsOTkgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTQgQ29sbGFib3JhIEx0ZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0
aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5h
bWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVj
aWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFT
IElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAor
ICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiU3VnZ2VzdGlvbkVsZW1lbnQuaCIKKworI2lmIEVOQUJMRShEQVRB
TElTVF9FTEVNRU5UKQorCisjaW5jbHVkZSAiRnJhbWUuaCIKKyNpbmNsdWRlICJIVE1MTmFtZXMu
aCIKKyNpbmNsdWRlICJIVE1MU3BhbkVsZW1lbnQuaCIKKyNpbmNsdWRlICJNb3VzZUV2ZW50Lmgi
CisjaW5jbHVkZSAiUGxhdGZvcm1Nb3VzZUV2ZW50LmgiCisjaW5jbHVkZSAiVGV4dC5oIgorI2lu
Y2x1ZGUgIlRvdWNoRXZlbnQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitTdWdnZXN0aW9u
RWxlbWVudDo6U3VnZ2VzdGlvbkVsZW1lbnQoU3VnZ2VzdGlvbkVsZW1lbnRPd25lciogb3duZXIs
IFN0cmluZyYgdmFsdWUsIGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIERvY3VtZW50JiBkb2N1
bWVudCkKKyAgICA6IEhUTUxEaXZFbGVtZW50KG5hbWUsIGRvY3VtZW50KQorICAgICwgbV9vd25l
cihvd25lcikKKyAgICAsIG1fdmFsdWUodmFsdWUpCit7CisgICAgc2V0UHNldWRvKCItd2Via2l0
LXN1Z2dlc3Rpb24tZWxlbWVudCIpOworfQorCitTdWdnZXN0aW9uRWxlbWVudDo6flN1Z2dlc3Rp
b25FbGVtZW50KCkKK3sKK30KKworUGFzc1JlZlB0cjxTdWdnZXN0aW9uRWxlbWVudD4gU3VnZ2Vz
dGlvbkVsZW1lbnQ6OmNyZWF0ZShTdWdnZXN0aW9uRWxlbWVudE93bmVyKiBvd25lciwgU3RyaW5n
JiB2YWx1ZSwgRG9jdW1lbnQmIGRvY3VtZW50KQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcg
U3VnZ2VzdGlvbkVsZW1lbnQob3duZXIsIHZhbHVlLCBIVE1MTmFtZXM6OmRpdlRhZywgZG9jdW1l
bnQpKTsKK30KKwordm9pZCBTdWdnZXN0aW9uRWxlbWVudDo6dXBkYXRlQXBwZWFyYW5jZShpbnQg
cHJlZml4TGVuZ3RoKQoreworICAgIFJlZlB0cjxIVE1MU3BhbkVsZW1lbnQ+IHByZWZpeEVsZW1l
bnQgPSBIVE1MU3BhbkVsZW1lbnQ6OmNyZWF0ZShIVE1MTmFtZXM6OnNwYW5UYWcsIGRvY3VtZW50
KCkpOworICAgIHByZWZpeEVsZW1lbnQtPmFwcGVuZENoaWxkKFRleHQ6OmNyZWF0ZShkb2N1bWVu
dCgpLCBtX3ZhbHVlLnN1YnN0cmluZygwLCBwcmVmaXhMZW5ndGgpKSk7CisgICAgcHJlZml4RWxl
bWVudC0+c2V0UHNldWRvKCItd2Via2l0LXN1Z2dlc3Rpb24tcHJlZml4LXRleHQiKTsKKworICAg
IHRoaXMtPmFwcGVuZENoaWxkKHByZWZpeEVsZW1lbnQucmVsZWFzZSgpLCBBU1NFUlRfTk9fRVhD
RVBUSU9OKTsKKyAgICB0aGlzLT5hcHBlbmRDaGlsZChUZXh0OjpjcmVhdGUoZG9jdW1lbnQoKSwg
bV92YWx1ZS5zdWJzdHJpbmcocHJlZml4TGVuZ3RoKSksIEFTU0VSVF9OT19FWENFUFRJT04pOwor
fQorCit2b2lkIFN1Z2dlc3Rpb25FbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50KiBl
dmVudCkKK3sKKyAgICBpZiAoZXZlbnQtPmlzTW91c2VFdmVudCgpKSB7CisgICAgICAgIGlmIChl
dmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5tb3VzZWRvd25FdmVudAorICAgICAgICAgICAg
JiYgKHN0YXRpY19jYXN0PE1vdXNlRXZlbnQqPihldmVudCktPmJ1dHRvbigpICE9IFJpZ2h0QnV0
dG9uKQorICAgICAgICAgICAgJiYgZG9jdW1lbnQoKS5mcmFtZSgpKQorICAgICAgICAgICAgbV9v
d25lci0+c2VsZWN0KHRoaXMpOworICAgICAgICBlbHNlIGlmIChldmVudC0+dHlwZSgpID09IGV2
ZW50TmFtZXMoKS5tb3VzZW1vdmVFdmVudCkKKyAgICAgICAgICAgIG1fb3duZXItPmZvY3VzKHRo
aXMpOworICAgICAgICBlbHNlIGlmIChldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5tb3Vz
ZW91dEV2ZW50KQorICAgICAgICAgICAgbV9vd25lci0+dW5mb2N1cygpOworICAgIH0KK30KKwor
dm9pZCBTdWdnZXN0aW9uRWxlbWVudDo6Zm9jdXNlZCgpCit7CisgICAgc2V0UHNldWRvKCItd2Vi
a2l0LXN1Z2dlc3Rpb24tZWxlbWVudC1mb2N1c2VkIik7Cit9CisKK3ZvaWQgU3VnZ2VzdGlvbkVs
ZW1lbnQ6OnVuZm9jdXNlZCgpCit7CisgICAgc2V0UHNldWRvKCItd2Via2l0LXN1Z2dlc3Rpb24t
ZWxlbWVudCIpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFC
TEUoREFUQUxJU1RfRUxFTUVOVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hh
ZG93L1N1Z2dlc3Rpb25FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TdWdn
ZXN0aW9uRWxlbWVudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQzMWNiMGU2ZjRkMzgwN2IyM2Q5YjJhMjNkYWI0
ZDZhYjU2ZmY5MTAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRv
dy9TdWdnZXN0aW9uRWxlbWVudC5oCkBAIC0wLDAgKzEsNzggQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTQgQ29sbGFib3JhIEx0ZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9u
LgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVz
IG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElT
IiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICog
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFN1Z2dlc3Rp
b25FbGVtZW50X2gKKyNkZWZpbmUgU3VnZ2VzdGlvbkVsZW1lbnRfaAorCisjaWYgRU5BQkxFKERB
VEFMSVNUX0VMRU1FTlQpCisKKyNpbmNsdWRlICJIVE1MRGl2RWxlbWVudC5oIgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK2NsYXNzIEV2ZW50OworY2xhc3MgU3VnZ2VzdGlvbkVsZW1lbnRPd25l
cjsKKworY2xhc3MgU3VnZ2VzdGlvbkVsZW1lbnQgOiBwdWJsaWMgSFRNTERpdkVsZW1lbnQgewor
cHVibGljOgorICAgIGNsYXNzIFN1Z2dlc3Rpb25FbGVtZW50T3duZXIgeworICAgIHB1YmxpYzoK
KyAgICAgICAgdmlydHVhbCB+U3VnZ2VzdGlvbkVsZW1lbnRPd25lcigpIHsgfQorICAgICAgICB2
aXJ0dWFsIGJvb2wgc2VsZWN0KFN1Z2dlc3Rpb25FbGVtZW50KikgPSAwOworICAgICAgICB2aXJ0
dWFsIHZvaWQgZm9jdXMoU3VnZ2VzdGlvbkVsZW1lbnQqKSA9IDA7CisgICAgICAgIHZpcnR1YWwg
dm9pZCB1bmZvY3VzKCkgPSAwOworICAgIH07CisKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdWdn
ZXN0aW9uRWxlbWVudD4gY3JlYXRlKFN1Z2dlc3Rpb25FbGVtZW50T3duZXIqLCBTdHJpbmcmLCBE
b2N1bWVudCYpOworICAgIHZpcnR1YWwgflN1Z2dlc3Rpb25FbGVtZW50KCk7CisKKyAgICB2b2lk
IGZvY3VzZWQoKTsKKyAgICB2b2lkIHVuZm9jdXNlZCgpOworCisgICAgdm9pZCB1cGRhdGVBcHBl
YXJhbmNlKGludCBwcmVmaXhMZW5ndGgpOworCisgICAgU3RyaW5nIHZhbHVlKCkgY29uc3QgeyBy
ZXR1cm4gbV92YWx1ZTsgfQorCitwcml2YXRlOgorICAgIFN1Z2dlc3Rpb25FbGVtZW50KFN1Z2dl
c3Rpb25FbGVtZW50T3duZXIqLCBTdHJpbmcmLCBjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1l
bnQmKTsKKworICAgIHZpcnR1YWwgdm9pZCBkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50Kik7CisK
KyAgICBTdWdnZXN0aW9uRWxlbWVudE93bmVyKiBtX293bmVyOworICAgIFN0cmluZyBtX3ZhbHVl
OworfTsKKworTk9ERV9UWVBFX0NBU1RTKFN1Z2dlc3Rpb25FbGVtZW50KQorCit9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoREFUQUxJU1RfRUxFTUVOVCkKKworI2Vu
ZGlmIC8vIFN1Z2dlc3Rpb25FbGVtZW50X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2d0ay9SZW5kZXJUaGVtZUd0ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
dGsvUmVuZGVyVGhlbWVHdGsuY3BwCmluZGV4IDYyOWU4ZDZiZTE5NTE4MzM5MDNmNTZmNTBkMGY5
MDE5MjgzNjkwZDAuLjRjMWI4NGU3NWUwZDM3YTliOGRiOWU1YjMzOTcwMTI0NjczNWI0MWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9SZW5kZXJUaGVtZUd0ay5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1JlbmRlclRoZW1lR3RrLmNwcApAQCAt
MSw3ICsxLDcgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDcgQXBwbGUgSW5jLgogICogQ29w
eXJpZ2h0IChDKSAyMDA3IEFscCBUb2tlciA8YWxwQGF0b2tlci5jb20+Ci0gKiBDb3B5cmlnaHQg
KEMpIDIwMDggQ29sbGFib3JhIEx0ZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAxNCBDb2xs
YWJvcmEgTHRkLgogICogQ29weXJpZ2h0IChDKSAyMDA5IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFu
c2VuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTAgSWdhbGlhIFMuTC4KICAqCkBAIC01MCw2ICs1MCwx
MCBAQAogI2luY2x1ZGUgPGd0ay9ndGsuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+
CiAKKyNpZiBFTkFCTEUoREFUQUxJU1RfRUxFTUVOVCkKKyNpbmNsdWRlICJJbnB1dFR5cGVOYW1l
cy5oIgorI2VuZGlmCisKICNpZiBFTkFCTEUoUFJPR1JFU1NfRUxFTUVOVCkKICNpbmNsdWRlICJS
ZW5kZXJQcm9ncmVzcy5oIgogI2VuZGlmCkBAIC00NzQsNiArNDc4LDExIEBAIHZvaWQgUmVuZGVy
VGhlbWVHdGs6OnBsYXRmb3JtQ29sb3JzRGlkQ2hhbmdlKCkKICAgICBSZW5kZXJUaGVtZTo6cGxh
dGZvcm1Db2xvcnNEaWRDaGFuZ2UoKTsKIH0KIAorU3RyaW5nIFJlbmRlclRoZW1lR3RrOjpleHRy
YURlZmF1bHRTdHlsZVNoZWV0KCkKK3sKKyAgICByZXR1cm4gU3RyaW5nKHRoZW1lR3RrVXNlckFn
ZW50U3R5bGVTaGVldCwgc2l6ZW9mKHRoZW1lR3RrVXNlckFnZW50U3R5bGVTaGVldCkpOworfQor
CiAjaWYgRU5BQkxFKFZJREVPKQogU3RyaW5nIFJlbmRlclRoZW1lR3RrOjpleHRyYU1lZGlhQ29u
dHJvbHNTdHlsZVNoZWV0KCkKIHsKQEAgLTcyNCw2ICs3MzMsMTYgQEAgaW50IFJlbmRlclRoZW1l
R3RrOjpzbGlkZXJUaWNrT2Zmc2V0RnJvbVRyYWNrQ2VudGVyKCkgY29uc3QKICAgICAvLyBGSVhN
RTogV2UgbmVlZCB0byBzZXQgdGhpcyB0byB0aGUgcG9zaXRpb24gb2YgdGhlIHRpY2sgbWFya3Mu
CiAgICAgcmV0dXJuIDA7CiB9CisKK2Jvb2wgUmVuZGVyVGhlbWVHdGs6OnN1cHBvcnRzRGF0YUxp
c3RVSShjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUpIGNvbnN0Cit7CisgICAgYm9vbCByZXN1bHQg
PSB0eXBlID09IElucHV0VHlwZU5hbWVzOjp0ZXh0KCkKKyAgICAgICAgfHwgdHlwZSA9PSBJbnB1
dFR5cGVOYW1lczo6c2VhcmNoKCkKKyAgICAgICAgfHwgdHlwZSA9PSBJbnB1dFR5cGVOYW1lczo6
dXJsKCkKKyAgICAgICAgfHwgdHlwZSA9PSBJbnB1dFR5cGVOYW1lczo6ZW1haWwoKTsKKworICAg
IHJldHVybiByZXN1bHQ7Cit9CiAjZW5kaWYKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3RrL1JlbmRlclRoZW1lR3RrLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ndGsvUmVuZGVyVGhlbWVHdGsuaAppbmRleCA1NWUwMDY3M2ZmMDRmMzkxMGUwMGZjYzIxZDIz
ZmMzZmY3YTAyYmY4Li4xZDdkYTRhYmVmZWY1MTVkZTMyZDFhN2E1Zjk3ZjQ3YjU5YjYwZjcyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUmVuZGVyVGhlbWVHdGsuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUmVuZGVyVGhlbWVHdGsuaApAQCAtODQs
NiArODQsOCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIGJvb2wgcG9wc01lbnVCeVNwYWNlT3JS
ZXR1cm4oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAKKyAgICB2aXJ0dWFsIFN0
cmluZyBleHRyYURlZmF1bHRTdHlsZVNoZWV0KCk7CisKICNpZiBFTkFCTEUoVklERU8pCiAgICAg
dmlydHVhbCBTdHJpbmcgZXh0cmFNZWRpYUNvbnRyb2xzU3R5bGVTaGVldCgpOwogICAgIHZpcnR1
YWwgU3RyaW5nIGZvcm1hdE1lZGlhQ29udHJvbHNDdXJyZW50VGltZShmbG9hdCBjdXJyZW50VGlt
ZSwgZmxvYXQgZHVyYXRpb24pIGNvbnN0OwpAQCAtOTcsOSArOTksMTAgQEAgcHVibGljOgogI2lm
IEVOQUJMRShEQVRBTElTVF9FTEVNRU5UKQogICAgIC8vIFJldHVybnMgc2l6ZSBvZiBvbmUgc2xp
ZGVyIHRpY2sgbWFyayBmb3IgYSBob3Jpem9udGFsIHRyYWNrLgogICAgIC8vIEZvciB2ZXJ0aWNh
bCB0cmFja3Mgd2Ugcm90YXRlIGl0IGFuZCB1c2UgaXQuIGkuZS4gV2lkdGggaXMgYWx3YXlzIGxl
bmd0aCBhbG9uZyB0aGUgdHJhY2suCi0gICAgdmlydHVhbCBJbnRTaXplIHNsaWRlclRpY2tTaXpl
KCkgY29uc3Q7CisgICAgdmlydHVhbCBJbnRTaXplIHNsaWRlclRpY2tTaXplKCkgY29uc3Qgb3Zl
cnJpZGU7CiAgICAgLy8gUmV0dXJucyB0aGUgZGlzdGFuY2Ugb2Ygc2xpZGVyIHRpY2sgb3JpZ2lu
IGZyb20gdGhlIHNsaWRlciB0cmFjayBjZW50ZXIuCi0gICAgdmlydHVhbCBpbnQgc2xpZGVyVGlj
a09mZnNldEZyb21UcmFja0NlbnRlcigpIGNvbnN0OworICAgIHZpcnR1YWwgaW50IHNsaWRlclRp
Y2tPZmZzZXRGcm9tVHJhY2tDZW50ZXIoKSBjb25zdCBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIGJv
b2wgc3VwcG9ydHNEYXRhTGlzdFVJKGNvbnN0IEF0b21pY1N0cmluZyYpIGNvbnN0IG92ZXJyaWRl
OwogI2VuZGlmCiAKICNpZmRlZiBHVEtfQVBJX1ZFUlNJT05fMgpkaWZmIC0tZ2l0IGEvU291cmNl
L2F1dG90b29scy9QcmludEJ1aWxkQ29uZmlndXJhdGlvbi5tNCBiL1NvdXJjZS9hdXRvdG9vbHMv
UHJpbnRCdWlsZENvbmZpZ3VyYXRpb24ubTQKaW5kZXggNzAyOTk1YmU0YzNmNDFkMWE3NWQ3OTZl
Nzg3ZmY2MjlkMzU2YTZhMi4uZDBjNjQ0MWQ0OTFjYzkwM2FhNWY4YmE0NjM5OGY4NzJjZmFjMzg2
MSAxMDA2NDQKLS0tIGEvU291cmNlL2F1dG90b29scy9QcmludEJ1aWxkQ29uZmlndXJhdGlvbi5t
NAorKysgYi9Tb3VyY2UvYXV0b3Rvb2xzL1ByaW50QnVpbGRDb25maWd1cmF0aW9uLm00CkBAIC0y
NSw2ICsyNSw3IEBAIEZlYXR1cmVzOgogIEFjY2VsZXJhdGVkIENvbXBvc2l0aW5nICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDogJGVuYWJsZV9hY2NlbGVyYXRlZF9jb21wb3NpdGlu
ZwogIEFjY2VsZXJhdGVkIDJEIGNhbnZhcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDogJGVuYWJsZV9hY2NlbGVyYXRlZF9jYW52YXMKICBCYXR0ZXJ5IEFQSSBzdXBwb3J0ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICRlbmFibGVfYmF0dGVyeV9zdGF0
dXMKKyBEYXRhbGlzdCBlbGVtZW50IHN1cHBvcnQgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA6ICRlbmFibGVfZGF0YWxpc3RfZWxlbWVudAogIEdhbWVwYWQgc3VwcG9ydCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJGVuYWJsZV9nYW1lcGFkCiAgR2Vv
bG9jYXRpb24gc3VwcG9ydCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAk
ZW5hYmxlX2dlb2xvY2F0aW9uCiAgSFRNTDUgdmlkZW8gZWxlbWVudCBzdXBwb3J0ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgOiAkZW5hYmxlX3ZpZGVvCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
YXV0b3Rvb2xzL1JlYWRDb21tYW5kTGluZUFyZ3VtZW50cy5tNCBiL1NvdXJjZS9hdXRvdG9vbHMv
UmVhZENvbW1hbmRMaW5lQXJndW1lbnRzLm00CmluZGV4IDdkNTZlMTNkNDkzMDllNDVmZGRiN2Vh
Y2ZhYjBmNWUyNmZhMmM2YjcuLmQzYzZhZmE3MjMzYWIwNGZhZjY2MWY0ZjZhZTY0ZjQzYzg0YjY0
OTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9hdXRvdG9vbHMvUmVhZENvbW1hbmRMaW5lQXJndW1lbnRz
Lm00CisrKyBiL1NvdXJjZS9hdXRvdG9vbHMvUmVhZENvbW1hbmRMaW5lQXJndW1lbnRzLm00CkBA
IC0yMjQsNCArMjI0LDkgQEAgQUNfQVJHX0VOQUJMRShbaW50cm9zcGVjdGlvbl0sCiAgICAgW2Vu
YWJsZV9pbnRyb3NwZWN0aW9uPW5vXSkKIEFDX01TR19SRVNVTFQoWyRlbmFibGVfaW50cm9zcGVj
dGlvbl0pCiAKLQorQUNfTVNHX0NIRUNLSU5HKFt3aGV0aGVyIHRvIGVuYWJsZSBEYXRhbGlzdCBl
bGVtZW50IHN1cHBvcnRdKQorQUNfQVJHX0VOQUJMRShbZGF0YWxpc3QtZWxlbWVudF0sCisgICAg
QVNfSEVMUF9TVFJJTkcoWy0tZW5hYmxlLWRhdGFsaXN0LWVsZW1lbnRdLFtFbmFibGUgRGF0YWxp
c3QgZWxlbWVudCAoZGVmYXVsdDogZGlzYWJsZWQpXSksCisgICAgW10sCisgICAgW2VuYWJsZV9k
YXRhbGlzdF9lbGVtZW50PW5vXSkKK0FDX01TR19SRVNVTFQoWyRlbmFibGVfZGF0YWxpc3RfZWxl
bWVudF0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvYXV0b3Rvb2xzL1NldHVwQXV0b21ha2UubTQgYi9T
b3VyY2UvYXV0b3Rvb2xzL1NldHVwQXV0b21ha2UubTQKaW5kZXggMzUzMmRiMmI1ZTlkYTRkMjdk
MTE1ZjQ5ZGQxNGI5NTFlOWFmMmYwMC4uMjRlN2FjNGFmZDc5NmRhOGMzMGJhNGE5ZjUxOGY0ZGQ3
M2I2OTZjYiAxMDA2NDQKLS0tIGEvU291cmNlL2F1dG90b29scy9TZXR1cEF1dG9tYWtlLm00Cisr
KyBiL1NvdXJjZS9hdXRvdG9vbHMvU2V0dXBBdXRvbWFrZS5tNApAQCAtNTMsNiArNTMsNyBAQCBB
TV9DT05ESVRJT05BTChbVVNFX0dMRVMyXSwgW3Rlc3QgIiRlbmFibGVfZ2xlczIiID0gInllcyJd
KQogIyBXZWJLaXQgZmVhdHVyZSBjb25kaXRpb25hbHMuCiBBTV9DT05ESVRJT05BTChbRU5BQkxF
X0RFVkVMT1BFUl9NT0RFXSwgW3Rlc3QgIiRlbmFibGVfZGV2ZWxvcGVyX21vZGUiID0gInllcyJd
KQogQU1fQ09ORElUSU9OQUwoW0VOQUJMRV9ERUJVR10sW3Rlc3QgIiRlbmFibGVfZGVidWciID0g
InllcyJdKQorQU1fQ09ORElUSU9OQUwoW0VOQUJMRV9EQVRBTElTVF9FTEVNRU5UXSxbdGVzdCAi
JGVuYWJsZV9kYXRhbGlzdF9lbGVtZW50IiA9ICJ5ZXMiXSkKIEFNX0NPTkRJVElPTkFMKFtFTkFC
TEVfV0VCR0xdLFt0ZXN0ICIkZW5hYmxlX3dlYmdsIiA9ICJ5ZXMiXSkKIEFNX0NPTkRJVElPTkFM
KFtFTkFCTEVfVklERU9dLFt0ZXN0ICIkZW5hYmxlX3ZpZGVvIiA9ICJ5ZXMiXSkKIEFNX0NPTkRJ
VElPTkFMKFtFTkFCTEVfQ09WRVJBR0VdLFt0ZXN0ICIkZW5hYmxlX2NvdmVyYWdlIiA9ICJ5ZXMi
XSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9hdXRvdG9vbHMvU2V0dXBXZWJLaXRGZWF0dXJlcy5tNCBi
L1NvdXJjZS9hdXRvdG9vbHMvU2V0dXBXZWJLaXRGZWF0dXJlcy5tNAppbmRleCA1ZGFmN2I5ZjYy
MWU2NmJmMmIyYzkwOTFkYTZmYjEwZDQ4NDA0NWIxLi5iMDYxMjNmZGJmMDAyZGQ1NjlmMGYxZTk5
MmEyYzliNDFjYmU2MTk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvYXV0b3Rvb2xzL1NldHVwV2ViS2l0
RmVhdHVyZXMubTQKKysrIGIvU291cmNlL2F1dG90b29scy9TZXR1cFdlYktpdEZlYXR1cmVzLm00
CkBAIC03Nyw2ICs3NywxMiBAQCBlbHNlCiAgICAgQ09ORklHVVJBQkxFX0ZFQVRVUkVfREVGSU5F
Uz0iJENPTkZJR1VSQUJMRV9GRUFUVVJFX0RFRklORVMgRU5BQkxFX0JBVFRFUllfU1RBVFVTPTAi
CiBmaQogCitpZiB0ZXN0ICIkZW5hYmxlX2RhdGFsaXN0X2VsZW1lbnQiID0gInllcyI7IHRoZW4K
KyAgICBDT05GSUdVUkFCTEVfRkVBVFVSRV9ERUZJTkVTPSIkQ09ORklHVVJBQkxFX0ZFQVRVUkVf
REVGSU5FUyBFTkFCTEVfREFUQUxJU1RfRUxFTUVOVD0xIgorZWxzZQorICAgIENPTkZJR1VSQUJM
RV9GRUFUVVJFX0RFRklORVM9IiRDT05GSUdVUkFCTEVfRkVBVFVSRV9ERUZJTkVTIEVOQUJMRV9E
QVRBTElTVF9FTEVNRU5UPTAiCitmaQorCiAjIFRoaXMgbGlzdCBvZiBmZWF0dXJlcyByZXByZXNl
bnRzIHRob3NlIHNlbGVjdGVkIGZvciByZWxlYXNlIGJ1aWxkcy4gIElmIHlvdSBhcmUKICMgYWRk
aW5nIGEgbmV3IG9yIHVuc3RhYmxlIGZlYXR1cmUsIHlvdSBzaG91bGQgbWFyayBpdCBkaXNhYmxl
ZCBoZXJlLiBXZSBuZWVkIHRvIHJ1bgogIyB0aGlzIGNvbW1hbmQgbm93IHJhdGhlciB0aGFuIHVz
ZSBBQ19DT05GSUdfQ09NTUFORFMgYmVjYXVzZSBhdXRvbWFrZSBydWxlcyBkZXBlbmQKQEAgLTEw
Miw3ICsxMDgsNiBAQCAkc3JjZGlyL1Rvb2xzL2d0ay9nZW5lcmF0ZS1mZWF0dXJlLWRlZmluZXMt
ZmlsZXMgJENPTkZJR1VSQUJMRV9GRUFUVVJFX0RFRklORVMgXAogICAgIEVOQUJMRV9DU1MzX0NP
TkRJVElPTkFMX1JVTEVTPTAgXAogICAgIEVOQUJMRV9DVVNUT01fU0NIRU1FX0hBTkRMRVI9MCBc
CiAgICAgRU5BQkxFX0RBU0hCT0FSRF9TVVBQT1JUPTAgXAotICAgIEVOQUJMRV9EQVRBTElTVF9F
TEVNRU5UPTAgXAogICAgIEVOQUJMRV9EQVRBX1RSQU5TRkVSX0lURU1TPTAgXAogICAgIEVOQUJM
RV9ERVRBSUxTX0VMRU1FTlQ9MSBcCiAgICAgRU5BQkxFX0RFVklDRV9PUklFTlRBVElPTj0wIFwK
ZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCBkOTQ3YWJjNGQxZTIxYWVi
NzI1NTdlNjFiYTVhYzdjYWFlNDY0MzJlLi4wMTYyMDBmMDZiOGEyODUwYWE3Yzg3MDNkMzI2MGNh
YmM1OWVlODA2IDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTcgQEAKKzIwMTQtMDItMDYgIENoYW5nU2VvayBPaCAgPGNoYW5nc2Vvay5vaEBjb2xsYWJv
cmEuY29tPgorCisgICAgICAgIERhdGFsaXN0IGVsZW1lbnQgc3VwcG9ydCBmb3IgVGV4dEZpZWxk
SW5wdXRUeXBlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD05ODkzNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEFkZCBhIGJ1aWxkIG9wdGlvbiB0byBlbmFibGUgZGF0YWxpc3QgZm9yIGd0ayBwb3J0LgorCisg
ICAgICAgICogU291cmNlL2F1dG90b29scy9QcmludEJ1aWxkQ29uZmlndXJhdGlvbi5tNDoKKyAg
ICAgICAgKiBTb3VyY2UvYXV0b3Rvb2xzL1JlYWRDb21tYW5kTGluZUFyZ3VtZW50cy5tNDoKKyAg
ICAgICAgKiBTb3VyY2UvYXV0b3Rvb2xzL1NldHVwQXV0b21ha2UubTQ6CisgICAgICAgICogU291
cmNlL2F1dG90b29scy9TZXR1cFdlYktpdEZlYXR1cmVzLm00OgorCiAyMDE0LTAyLTA1ICBBbmRy
ZWFzIEtsaW5nICA8YWtsaW5nQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgRU5BQkxFKERJ
UkVDVE9SWV9VUExPQUQpLgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>223351</attachid>
            <date>2014-02-06 11:12:56 -0800</date>
            <delta_ts>2014-02-07 00:26:05 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-98934-20140207041254.patch</filename>
            <type>text/plain</type>
            <size>41215</size>
            <attacher name="ChangSeok Oh">changseok</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTYzNTM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjJlYThlYTI2MTBhYmE5
Zjc5ODMyYzQ4Zjg5OGRjMjQyMjM3MjE5Yy4uYzJhMzI4Y2U5ZTVmYWVhMGNhMTcxZWViMzBkYzE3
OWEyZmVmMmM3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDczIEBACisyMDE0LTAyLTA2ICBDaGFu
Z1Nlb2sgT2ggIDxjaGFuZ3Nlb2sub2hAY29sbGFib3JhLmNvbT4KKworICAgICAgICBEYXRhbGlz
dCBlbGVtZW50IHN1cHBvcnQgZm9yIFRleHRGaWVsZElucHV0VHlwZQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTg5MzQKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGNoYW5nZSBicmluZ3MgZGF0YWxp
c3Qgc3VwcG9ydCB0byBUZXh0RmllbGRJbnB1dFR5cGUuIFRvIGRvIHRoYXQsCisgICAgICAgIEkg
Y3JlYXRlZCB0d28gY2xhc3NlcyBTdWdnZXN0aW9uQ2hvb3NlciBhbmQgU3VnZ2VzdGlvbkVsZW1l
bnQgbmV3bHkuIFN1Z2dlc3Rpb25DaG9vc2VyCisgICAgICAgIGlzIGEgY29udHJvbGxlciB3aGlj
aCBUZXh0RmllbGRJbnB1dFR5cGUgdXNlcyB0byBzaG93L2hpZGUgYSBzdWdnZXN0aW9uIHBvcHVw
LgorICAgICAgICBUaGUgcG9wdXAgc2hvd2luZyBvcHRpb25zIG9mIGRhdGFsaXN0IGlzIGNvbnN0
cnVjdGVkIHdpdGggSFRNTERpdkVsZW1lbnRzCisgICAgICAgIHdoaWNoIGFyZSByZXByZXNlbnRl
ZCBieSBTdWdnZXN0aW9uRWxlbWVudCwgc3ViY2xhc3Mgb2YgSFRNTERpdkVsZW1lbnQuCisgICAg
ICAgIEFsbCBTdWdnZXN0aW9uRWxlbWVudHMgYXJlIGFsc28gd3JhcHBlZCBieSBhIGRpdiBlbGVt
ZW50IGNvbnRhaW5lciBhbmQgaXQgYmVsb25ncyB0bworICAgICAgICBTaGFkb3dSb29vdCBvZiBI
VE1MSW5wdXRFbG1lZW50LiBCYXNpY2FsbHkgbW9zdCBvZiBjb2RlIGlzIHNoYXJlYWJsZSBhbW9u
ZyBwb3J0cworICAgICAgICB0aHJvdWdoIGRlZmluaW5nIHNvbWUgZXh0cmEgc3R5bGUgaW4gY3Nz
IGFuZCBtb2RpZnlpbmcgUmVuZGVyVGhlbWUgc3R1ZmYsCisgICAgICAgIGJ1dCBoZXJlIEkgYXBw
bHkgdGhlIGNoYW5nZSB0byBndGsgcG9ydCBhaGVhZC4KKworICAgICAgICBObyBuZXcgdGVzdHMs
IGNvdmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoK
KyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFt
OgorICAgICAgICAqIGNzcy90aGVtZUd0ay5jc3M6IEFkZGVkLgorICAgICAgICAoaW5wdXQ6Oi13
ZWJraXQtc3VnZ2VzdGlvbi1jb250YWluZXIpOgorICAgICAgICAoaW5wdXQ6Oi13ZWJraXQtc3Vn
Z2VzdGlvbi1lbGVtZW50KToKKyAgICAgICAgKGlucHV0Ojotd2Via2l0LXN1Z2dlc3Rpb24tZWxl
bWVudC1mb2N1c2VkKToKKyAgICAgICAgKGlucHV0Ojotd2Via2l0LXN1Z2dlc3Rpb24tcHJlZml4
LXRleHQpOgorICAgICAgICAqIGh0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlRleHRGaWVsZElucHV0VHlwZTo6aGFuZGxlS2V5ZG93bkV2ZW50KTogU2hvdyBw
b3B1cCBvciBtb3ZlIGZvY3VzIGFjY29yZGluZyB0byB1c2VyIGlucHV0LgorICAgICAgICAoV2Vi
Q29yZTo6VGV4dEZpZWxkSW5wdXRUeXBlOjpoYW5kbGVCbHVyRXZlbnQpOiBIaWRlIHBvcHVwIHdo
ZW4gdGV4dCBmaWVsZCBsb3NlcyBmb2N1cy4KKyAgICAgICAgKFdlYkNvcmU6OlRleHRGaWVsZElu
cHV0VHlwZTo6Y3JlYXRlU2hhZG93U3VidHJlZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0Rmll
bGRJbnB1dFR5cGU6OmRpZFNldFZhbHVlQnlVc2VyRWRpdCk6CisgICAgICAgIChXZWJDb3JlOjpU
ZXh0RmllbGRJbnB1dFR5cGU6OnByZWZpeCk6IFRoZSBwcmVmaXggaXMgYW4gaW5uZXIgdmFsdWUg
aW4gaW5wdXQgZmllbGQuIEl0IGlzIHJlcXVpcmVkIHRvIHJlYnVpbGQgc3VnZ2VzdGlvbiBwb3B1
cC4KKyAgICAgICAgKFdlYkNvcmU6OlRleHRGaWVsZElucHV0VHlwZTo6c3VnZ2VzdGlvbnMpOgor
ICAgICAgICAoV2ViQ29yZTo6VGV4dEZpZWxkSW5wdXRUeXBlOjphZGRTdWdnZXN0aW9uQ29udGFp
bmVyVG9TaGFkb3dSb290KToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRGaWVsZElucHV0VHlwZTo6
cmVtb3ZlU3VnZ2VzdGlvbkNvbnRhaW5lckZyb21TaGFkb3dSb290KToKKyAgICAgICAgKFdlYkNv
cmU6OlRleHRGaWVsZElucHV0VHlwZTo6ZGlkQ2hvb3NlVmFsdWUpOiBGaWxsIHRleHQgZmllbGQg
d2l0aCB0aGUgdmFsdWUgdXNlciBzZWxlY3RlZC4KKyAgICAgICAgKFdlYkNvcmU6OlRleHRGaWVs
ZElucHV0VHlwZTo6c2hvdWxkU2hvd1N1Z2dlc3Rpb25zKToKKyAgICAgICAgKiBodG1sL1RleHRG
aWVsZElucHV0VHlwZS5oOgorICAgICAgICAqIGh0bWwvc2hhZG93L1N1Z2dlc3Rpb25DaG9vc2Vy
LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpTdWdnZXN0aW9uQ2hvb3Nlcjo6Y3JlYXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OlN1Z2dlc3Rpb25DaG9vc2VyOjpTdWdnZXN0aW9uQ2hvb3Nl
cik6CisgICAgICAgIChXZWJDb3JlOjpTdWdnZXN0aW9uQ2hvb3Nlcjo6flN1Z2dlc3Rpb25DaG9v
c2VyKToKKyAgICAgICAgKFdlYkNvcmU6OlN1Z2dlc3Rpb25DaG9vc2VyOjpjcmVhdGVTdWdnZXN0
aW9uQ29udGFpbmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlN1Z2dlc3Rpb25DaG9vc2VyOjphZGRT
dWdnZXN0aW9uc1RvQ29udGFpbmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlN1Z2dlc3Rpb25DaG9v
c2VyOjpzaG93KToKKyAgICAgICAgKFdlYkNvcmU6OlN1Z2dlc3Rpb25DaG9vc2VyOjpoaWRlKToK
KyAgICAgICAgKFdlYkNvcmU6OlN1Z2dlc3Rpb25DaG9vc2VyOjpzZWxlY3QpOgorICAgICAgICAo
V2ViQ29yZTo6U3VnZ2VzdGlvbkNob29zZXI6OmZvY3VzKToKKyAgICAgICAgKFdlYkNvcmU6OlN1
Z2dlc3Rpb25DaG9vc2VyOjp1bmZvY3VzKToKKyAgICAgICAgKFdlYkNvcmU6OlN1Z2dlc3Rpb25D
aG9vc2VyOjpoYW5kbGVLZXlkb3duRXZlbnQpOgorICAgICAgICAqIGh0bWwvc2hhZG93L1N1Z2dl
c3Rpb25DaG9vc2VyLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6U3VnZ2VzdGlvbkNob29z
ZXI6OlN1Z2dlc3Rpb25DaG9vc2VyQ2xpZW50Ojp+U3VnZ2VzdGlvbkNob29zZXJDbGllbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6U3VnZ2VzdGlvbkNob29zZXI6OmZvY3VzZWRTdWdnZXN0aW9uRWxl
bWVudCk6CisgICAgICAgICogaHRtbC9zaGFkb3cvU3VnZ2VzdGlvbkVsZW1lbnQuY3BwOiBBZGRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OlN1Z2dlc3Rpb25FbGVtZW50OjpTdWdnZXN0aW9uRWxlbWVu
dCk6CisgICAgICAgIChXZWJDb3JlOjpTdWdnZXN0aW9uRWxlbWVudDo6flN1Z2dlc3Rpb25FbGVt
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlN1Z2dlc3Rpb25FbGVtZW50OjpjcmVhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6U3VnZ2VzdGlvbkVsZW1lbnQ6OnVwZGF0ZUFwcGVhcmFuY2UpOiBCb2xk
IHRoZSBwcmVmaXggc3RyaW5nIGFjY29yZGluZyB0byB1c2VyIGlucHV0LgorICAgICAgICAoV2Vi
Q29yZTo6U3VnZ2VzdGlvbkVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIpOiBIYW5kbGUgbW91
c2UgZXZlbnQgdG8gY2hhbmdlIHRoZSBzdHlsZSBvZiBmb2N1c2VkL3VuZm9jdXNlZCBlbGVtZW50
LgorICAgICAgICAoV2ViQ29yZTo6U3VnZ2VzdGlvbkVsZW1lbnQ6OmZvY3VzZWQpOiBIaWdobGln
aHQgdGhlIGVsZW1lbnQgd2hlbiBoYXZpbmcgYSBmb2N1cy4KKyAgICAgICAgKFdlYkNvcmU6OlN1
Z2dlc3Rpb25FbGVtZW50Ojp1bmZvY3VzZWQpOiBSZXR1cm4gdGhlIHN0eWxlIG9mIGVsZW1lbnQg
dG8gdGhlIGRlZmF1bHQgdmFsdWUgd2hlbiBsb3NpbmcgZm9jdXMuCisgICAgICAgICogaHRtbC9z
aGFkb3cvU3VnZ2VzdGlvbkVsZW1lbnQuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpTdWdn
ZXN0aW9uRWxlbWVudDo6U3VnZ2VzdGlvbkVsZW1lbnRPd25lcjo6flN1Z2dlc3Rpb25FbGVtZW50
T3duZXIpOgorICAgICAgICAoV2ViQ29yZTo6U3VnZ2VzdGlvbkVsZW1lbnQ6OnZhbHVlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ndGsvUmVuZGVyVGhlbWVHdGsuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyVGhlbWVHdGs6OmV4dHJhRGVmYXVsdFN0eWxlU2hlZXQpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyVGhlbWVHdGs6OnN1cHBvcnRzRGF0YUxpc3RVSSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3RrL1JlbmRlclRoZW1lR3RrLmg6CisKIDIwMTQtMDItMDYgIEtvb3AgTWFzdCA8a3dt
QEZyZWVCU0Qub3JnPgogCiAgICAgICAgIFVzZSBzeXN0ZW0gZGVmYXVsdCBjb21waWxlciBpbnN0
ZWFkIG9mIGdjYywgYXMgZmluYWwgZmFsbCB0aHJvdWdoLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRl
eCA4MDRjODQ1NmJiMWJjNjA2MWI4ZGUwZWIxOGE1NGUxYTk1MGU0ODk5Li4wZGE2YzI0YmRmODM4
OGYwMTkyYWMxN2RhNGJlOWNmY2QyYTA5MDdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9D
TWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMTU2
Miw2ICsxNTYyLDggQEAgc2V0KFdlYkNvcmVfU09VUkNFUwogICAgIGh0bWwvc2hhZG93L1Byb2dy
ZXNzU2hhZG93RWxlbWVudC5jcHAKICAgICBodG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQu
Y3BwCiAgICAgaHRtbC9zaGFkb3cvU3BpbkJ1dHRvbkVsZW1lbnQuY3BwCisgICAgaHRtbC9zaGFk
b3cvU3VnZ2VzdGlvbkNob29zZXIuY3BwCisgICAgaHRtbC9zaGFkb3cvU3VnZ2VzdGlvbkVsZW1l
bnQuY3BwCiAgICAgaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcAogCiAg
ICAgaW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJSG9zdC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL0dOVW1ha2VmaWxlLmFtIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KaW5k
ZXggNmU0ODk1NGQ2MGI5MTIxOTE5MDk2M2Y3ODA2YzFmYzNmNjQ5M2M2MC4uOGYzMzAyODA5Nzkz
NThmYWIwZDIyYzdhYjIyMjI5M2Q5N2ZiYmNjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
R05VbWFrZWZpbGUuYW0KKysrIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KQEAgLTI3
NCw3ICsyNzQsOCBAQCBVU0VSX0FHRU5UX1NUWUxFX1NIRUVUUyA9IFwKIAkkKFdlYkNvcmUpL2Nz
cy9tZWRpYUNvbnRyb2xzLmNzcyBcCiAJJChXZWJDb3JlKS9jc3MvbWVkaWFDb250cm9sc0d0ay5j
c3MgXAogCSQoV2ViQ29yZSkvY3NzL2Z1bGxzY3JlZW4uY3NzIFwKLQkkKFdlYkNvcmUpL2Nzcy9w
bHVnSW5zLmNzcworCSQoV2ViQ29yZSkvY3NzL3BsdWdJbnMuY3NzIFwKKwkkKFdlYkNvcmUpL2Nz
cy90aGVtZUd0ay5jc3MKIAogIyBwbHVnLWluIHJlc291cmNlcwogUExVR19JTlNfUkVTT1VSQ0VT
ID0gXApAQCAtNjkzLDYgKzY5NCw3IEBAIEVYVFJBX0RJU1QgKz0gXAogCVNvdXJjZS9XZWJDb3Jl
L2Nzcy9wbHVnSW5zLmNzcyBcCiAJU291cmNlL1dlYkNvcmUvY3NzL3F1aXJrcy5jc3MgXAogCVNv
dXJjZS9XZWJDb3JlL2Nzcy9zdmcuY3NzIFwKKwlTb3VyY2UvV2ViQ29yZS9jc3MvdGhlbWVHdGsu
Y3NzIFwKIAlTb3VyY2UvV2ViQ29yZS9jc3MvU1ZHQ1NTUHJvcGVydHlOYW1lcy5pbiBcCiAJU291
cmNlL1dlYkNvcmUvY3NzL1NWR0NTU1ZhbHVlS2V5d29yZHMuaW4gXAogCVNvdXJjZS9XZWJDb3Jl
L2Nzcy92aWV3LXNvdXJjZS5jc3MgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvR05VbWFr
ZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5kZXgg
NWRiZWE4MjU0ODZjOTc1MzVhZGJiNzFlMTY1M2E0MWMzZjU1MWM3Ny4uYjRlYWRkY2FiNjZiMWVh
NmZhMzA4Njk2ZGM2Mjc4NjcyN2U3MzRhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvR05V
bWFrZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFt
CkBAIC0zNjI1LDYgKzM2MjUsMTAgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2Vi
Q29yZS9odG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQuaCBcCiAJU291cmNlL1dlYkNvcmUv
aHRtbC9zaGFkb3cvU3BpbkJ1dHRvbkVsZW1lbnQuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9odG1s
L3NoYWRvdy9TcGluQnV0dG9uRWxlbWVudC5oIFwKKwlTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRv
dy9TdWdnZXN0aW9uQ2hvb3Nlci5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1N1
Z2dlc3Rpb25DaG9vc2VyLmggXAorCVNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1N1Z2dlc3Rp
b25FbGVtZW50LmNwcCBcCisJU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU3VnZ2VzdGlvbkVs
ZW1lbnQuaCBcCiAJU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVs
ZW1lbnRzLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5l
ckVsZW1lbnRzLmggXAogCVNvdXJjZS9XZWJDb3JlL2h0bWwvUGFzc3dvcmRJbnB1dFR5cGUuY3Bw
IFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy90aGVtZUd0ay5jc3MgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvdGhlbWVHdGsuY3NzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjlkMTViMTQ0NWY0ZDVhMDU1OGJl
ZGUxZWUzZmI2M2FlNDBiYzM5MzgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvdGhlbWVHdGsuY3NzCkBAIC0wLDAgKzEsNDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTQgQ29sbGFib3JhIEx0ZC4gQWxsIHJpZ2h0IHJlc2VydmVkLgorICoKKyAqIFRoaXMgbGlicmFy
eSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1v
ZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
CisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
OyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9u
KSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQg
aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBX
QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFO
VEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdO
VQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisg
KgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0
aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisg
KiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCitpbnB1dDo6LXdlYmtpdC1zdWdn
ZXN0aW9uLWNvbnRhaW5lciB7CisgICAgcG9zaXRpb246IGFic29sdXRlOworICAgIGJhY2tncm91
bmQtY29sb3I6ICNmY2ZjZmM7CisgICAgei1pbmRleDogMjE0NzQ4MzY0NzsKKyAgICBtYXgtaGVp
Z2h0OiAyMDBweDsKKyAgICAtd2Via2l0LWJveC1zaGFkb3c6IDJweCAycHggNXB4ICNBRUFFQUU7
Cit9CisKK2lucHV0Ojotd2Via2l0LXN1Z2dlc3Rpb24tZWxlbWVudCB7CisgICAgZGlzcGxheTog
YmxvY2s7CisgICAgcGFkZGluZzogM3B4OworICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKKyAg
ICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKKyAgICBvdmVyZmxvdzogaGlkZGVuOworfQorCitp
bnB1dDo6LXdlYmtpdC1zdWdnZXN0aW9uLWVsZW1lbnQtZm9jdXNlZCB7CisgICAgZGlzcGxheTog
YmxvY2s7CisgICAgcGFkZGluZzogM3B4OworICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKKyAg
ICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDAwMEZGOworICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lz
OworICAgIG92ZXJmbG93OiBoaWRkZW47Cit9CisKK2lucHV0Ojotd2Via2l0LXN1Z2dlc3Rpb24t
cHJlZml4LXRleHQgeworICAgIGZvbnQtd2VpZ2h0OiBib2xkOworfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9UZXh0RmllbGRJbnB1dFR5cGUuY3BwCmluZGV4IDkzODFkOTljYmM1YTVhMzE4YjdhNGRj
YThhY2FkY2IzZjU3YWZmZmMuLjk2MGEzOTdiMGQ1OWZjZGI0ZWEzYzdjODhjZjJjYjRjNTkwNmM5
MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHRGaWVsZElucHV0VHlwZS5jcHAKQEAgLTEs
NiArMSw3IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE0IENvbGxhYm9yYSBMdGQuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCkBAIC0zOCw4
ICszOSwxMCBAQAogI2luY2x1ZGUgIkZvcm1EYXRhTGlzdC5oIgogI2luY2x1ZGUgIkZyYW1lLmgi
CiAjaW5jbHVkZSAiRnJhbWVTZWxlY3Rpb24uaCIKKyNpbmNsdWRlICJIVE1MRGF0YUxpc3RFbGVt
ZW50LmgiCiAjaW5jbHVkZSAiSFRNTElucHV0RWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxOYW1l
cy5oIgorI2luY2x1ZGUgIkhUTUxPcHRpb25FbGVtZW50LmgiCiAjaW5jbHVkZSAiS2V5Ym9hcmRF
dmVudC5oIgogI2luY2x1ZGUgIk5vZGVSZW5kZXJTdHlsZS5oIgogI2luY2x1ZGUgIlBhZ2UuaCIK
QEAgLTQ3LDYgKzUwLDcgQEAKICNpbmNsdWRlICJSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUu
aCIKICNpbmNsdWRlICJSZW5kZXJUaGVtZS5oIgogI2luY2x1ZGUgIlNoYWRvd1Jvb3QuaCIKKyNp
bmNsdWRlICJTdWdnZXN0aW9uQ2hvb3Nlci5oIgogI2luY2x1ZGUgIlRleHRCcmVha0l0ZXJhdG9y
LmgiCiAjaW5jbHVkZSAiVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmgiCiAjaW5jbHVkZSAiVGV4
dEV2ZW50LmgiCkBAIC0xNDgsNiArMTUyLDEyIEBAIHZvaWQgVGV4dEZpZWxkSW5wdXRUeXBlOjpo
YW5kbGVLZXlkb3duRXZlbnQoS2V5Ym9hcmRFdmVudCogZXZlbnQpCiB7CiAgICAgaWYgKCFlbGVt
ZW50KCkuZm9jdXNlZCgpKQogICAgICAgICByZXR1cm47CisKKyNpZiBFTkFCTEUoREFUQUxJU1Rf
RUxFTUVOVCkKKyAgICBpZiAobV9zdWdnZXN0aW9uQ2hvb3NlcikKKyAgICAgICAgbV9zdWdnZXN0
aW9uQ2hvb3Nlci0+aGFuZGxlS2V5ZG93bkV2ZW50KGV2ZW50KTsKKyNlbmRpZgorCiAgICAgRnJh
bWUqIGZyYW1lID0gZWxlbWVudCgpLmRvY3VtZW50KCkuZnJhbWUoKTsKICAgICBpZiAoIWZyYW1l
IHx8ICFmcmFtZS0+ZWRpdG9yKCkuZG9UZXh0RmllbGRDb21tYW5kRnJvbUV2ZW50KCZlbGVtZW50
KCksIGV2ZW50KSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTk4LDYgKzIwOCwxMSBAQCB2b2lkIFRl
eHRGaWVsZElucHV0VHlwZTo6aGFuZGxlQmx1ckV2ZW50KCkKIHsKICAgICBJbnB1dFR5cGU6Omhh
bmRsZUJsdXJFdmVudCgpOwogICAgIGVsZW1lbnQoKS5lbmRFZGl0aW5nKCk7CisKKyNpZiBFTkFC
TEUoREFUQUxJU1RfRUxFTUVOVCkKKyAgICBpZiAobV9zdWdnZXN0aW9uQ2hvb3NlcikKKyAgICAg
ICAgbV9zdWdnZXN0aW9uQ2hvb3Nlci0+aGlkZSgpOworI2VuZGlmCiB9CiAKIGJvb2wgVGV4dEZp
ZWxkSW5wdXRUeXBlOjpzaG91bGRTdWJtaXRJbXBsaWNpdGx5KEV2ZW50KiBldmVudCkKQEAgLTIz
OCw2ICsyNTMsMTEgQEAgdm9pZCBUZXh0RmllbGRJbnB1dFR5cGU6OmNyZWF0ZVNoYWRvd1N1YnRy
ZWUoKQogICAgIGJvb2wgc2hvdWxkSGF2ZVNwaW5CdXR0b24gPSB0aGlzLT5zaG91bGRIYXZlU3Bp
bkJ1dHRvbigpOwogICAgIGJvb2wgY3JlYXRlc0NvbnRhaW5lciA9IHNob3VsZEhhdmVTcGluQnV0
dG9uIHx8IG5lZWRzQ29udGFpbmVyKCk7CiAKKyNpZiBFTkFCTEUoREFUQUxJU1RfRUxFTUVOVCkK
KyAgICBpZiAoc2hvdWxkUmVzcGVjdExpc3RBdHRyaWJ1dGUoKSkKKyAgICAgICAgbV9zdWdnZXN0
aW9uQ2hvb3NlciA9IFN1Z2dlc3Rpb25DaG9vc2VyOjpjcmVhdGUoZG9jdW1lbnQsICp0aGlzKTsK
KyNlbmRpZgorCiAgICAgbV9pbm5lclRleHQgPSBUZXh0Q29udHJvbElubmVyVGV4dEVsZW1lbnQ6
OmNyZWF0ZShkb2N1bWVudCk7CiAgICAgaWYgKCFjcmVhdGVzQ29udGFpbmVyKSB7CiAgICAgICAg
IGVsZW1lbnQoKS51c2VyQWdlbnRTaGFkb3dSb290KCktPmFwcGVuZENoaWxkKG1faW5uZXJUZXh0
LCBJR05PUkVfRVhDRVBUSU9OKTsKQEAgLTQ2NSw2ICs0ODUsMTAgQEAgdm9pZCBUZXh0RmllbGRJ
bnB1dFR5cGU6OmRpZFNldFZhbHVlQnlVc2VyRWRpdChWYWx1ZUNoYW5nZVN0YXRlIHN0YXRlKQog
ICAgIGlmICghZWxlbWVudCgpLmZvY3VzZWQoKSkKICAgICAgICAgcmV0dXJuOwogICAgIGlmIChG
cmFtZSogZnJhbWUgPSBlbGVtZW50KCkuZG9jdW1lbnQoKS5mcmFtZSgpKSB7CisjaWYgRU5BQkxF
KERBVEFMSVNUX0VMRU1FTlQpCisgICAgICAgIGlmIChtX3N1Z2dlc3Rpb25DaG9vc2VyKQorICAg
ICAgICAgICAgbV9zdWdnZXN0aW9uQ2hvb3Nlci0+c2hvdyhmYWxzZSk7CisjZW5kaWYKICAgICAg
ICAgaWYgKHN0YXRlID09IFZhbHVlQ2hhbmdlU3RhdGVOb25lKQogICAgICAgICAgICAgZnJhbWUt
PmVkaXRvcigpLnRleHRGaWVsZERpZEJlZ2luRWRpdGluZygmZWxlbWVudCgpKTsKICAgICAgICAg
ZnJhbWUtPmVkaXRvcigpLnRleHREaWRDaGFuZ2VJblRleHRGaWVsZCgmZWxlbWVudCgpKTsKQEAg
LTUxMSw0ICs1MzUsNjYgQEAgYm9vbCBUZXh0RmllbGRJbnB1dFR5cGU6OnNob3VsZFNwaW5CdXR0
b25SZXNwb25kVG9XaGVlbEV2ZW50cygpCiAgICAgcmV0dXJuIHNob3VsZFNwaW5CdXR0b25SZXNw
b25kVG9Nb3VzZUV2ZW50cygpICYmIGVsZW1lbnQoKS5mb2N1c2VkKCk7CiB9CiAKKyNpZiBFTkFC
TEUoREFUQUxJU1RfRUxFTUVOVCkKK1N0cmluZyBUZXh0RmllbGRJbnB1dFR5cGU6OnByZWZpeCgp
IGNvbnN0Cit7CisgICAgcmV0dXJuIGVsZW1lbnQoKS5pbm5lclRleHRWYWx1ZSgpOworfQorCitW
ZWN0b3I8U3RyaW5nPiBUZXh0RmllbGRJbnB1dFR5cGU6OnN1Z2dlc3Rpb25zKGJvb2wgbmVlZEZ1
bGxMaXN0KSBjb25zdAoreworICAgIFZlY3RvcjxTdHJpbmc+IHN1Z2dlc3Rpb25zOworICAgIEhU
TUxEYXRhTGlzdEVsZW1lbnQqIGRhdGFMaXN0ID0gZWxlbWVudCgpLmRhdGFMaXN0KCk7CisgICAg
aWYgKGRhdGFMaXN0KSB7CisgICAgICAgIFJlZlB0cjxIVE1MQ29sbGVjdGlvbj4gb3B0aW9ucyA9
IGRhdGFMaXN0LT5vcHRpb25zKCk7CisgICAgICAgIGlmICghb3B0aW9ucy0+bGVuZ3RoKCkgfHwg
KCFuZWVkRnVsbExpc3QgJiYgcHJlZml4KCkuaXNFbXB0eSgpKSkKKyAgICAgICAgICAgIHJldHVy
biBzdWdnZXN0aW9uczsKKworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBIVE1MT3B0aW9u
RWxlbWVudCogb3B0aW9uID0gdG9IVE1MT3B0aW9uRWxlbWVudChvcHRpb25zLT5pdGVtKGkpKTsg
KytpKSB7CisgICAgICAgICAgICBpZiAoIWVsZW1lbnQoKS5pc1ZhbGlkVmFsdWUob3B0aW9uLT52
YWx1ZSgpKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAgICAgU3RyaW5n
IGNhbmRpZGF0ZVN0cmluZyA9IGVsZW1lbnQoKS5zYW5pdGl6ZVZhbHVlKG9wdGlvbi0+dmFsdWUo
KSk7CisgICAgICAgICAgICBpZiAoIWNhbmRpZGF0ZVN0cmluZy5maW5kSWdub3JpbmdDYXNlKHBy
ZWZpeCgpKSAmJiBjYW5kaWRhdGVTdHJpbmcubGVuZ3RoKCkgPD0gc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KGVsZW1lbnQoKS5tYXhMZW5ndGgoKSkpCisgICAgICAgICAgICAgICAgc3VnZ2VzdGlvbnMu
YXBwZW5kKGNhbmRpZGF0ZVN0cmluZyk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4g
c3VnZ2VzdGlvbnM7Cit9CisKK3ZvaWQgVGV4dEZpZWxkSW5wdXRUeXBlOjphZGRTdWdnZXN0aW9u
Q29udGFpbmVyVG9TaGFkb3dSb290KEhUTUxFbGVtZW50KiBzdWdnZXN0aW9uQ29udGFpbmVyKQor
eworICAgIGlmICghc3VnZ2VzdGlvbkNvbnRhaW5lcikKKyAgICAgICAgcmV0dXJuOworCisgICAg
Ly8gTmVlZCB0byBmb3JjZSBwb3NpdGlvbjphYnNvbHV0ZSBiZWNhdXNlIFJlbmRlck1lbnVMaXN0
IGRvZXNuJ3QgYXNzdW1lIGl0CisgICAgLy8gY29udGFpbnMgbm9uLWFic29sdXRlIG9yIG5vbi1m
aXhlZCByZW5kZXJlcnMgYXMgY2hpbGRyZW4uCisgICAgc3VnZ2VzdGlvbkNvbnRhaW5lci0+c2V0
SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eVBvc2l0aW9uLCBDU1NWYWx1ZUFic29sdXRl
KTsKKyAgICBzdWdnZXN0aW9uQ29udGFpbmVyLT5zZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1By
b3BlcnR5TGVmdCwgZWxlbWVudCgpLmJvdW5kaW5nQm94KCkueCgpICsgZWxlbWVudCgpLmNsaWVu
dExlZnQoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QWCk7CisgICAgc3VnZ2VzdGlvbkNvbnRh
aW5lci0+c2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eVRvcCwgZWxlbWVudCgpLmJv
dW5kaW5nQm94KCkubWF4WSgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BYKTsKKyAgICBzdWdn
ZXN0aW9uQ29udGFpbmVyLT5zZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5V2lkdGgs
IGVsZW1lbnQoKS5jbGllbnRXaWR0aCgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BYKTsKKwor
ICAgIGVsZW1lbnQoKS51c2VyQWdlbnRTaGFkb3dSb290KCktPmFwcGVuZENoaWxkKHN1Z2dlc3Rp
b25Db250YWluZXIpOworfQorCit2b2lkIFRleHRGaWVsZElucHV0VHlwZTo6cmVtb3ZlU3VnZ2Vz
dGlvbkNvbnRhaW5lckZyb21TaGFkb3dSb290KEhUTUxFbGVtZW50KiBzdWdnZXN0aW9uQ29udGFp
bmVyKQoreworICAgIGlmICghc3VnZ2VzdGlvbkNvbnRhaW5lcikKKyAgICAgICAgcmV0dXJuOwor
CisgICAgZWxlbWVudCgpLnVzZXJBZ2VudFNoYWRvd1Jvb3QoKS0+cmVtb3ZlQ2hpbGQoc3VnZ2Vz
dGlvbkNvbnRhaW5lcik7Cit9CisKK3ZvaWQgVGV4dEZpZWxkSW5wdXRUeXBlOjpkaWRDaG9vc2VW
YWx1ZShjb25zdCBTdHJpbmcmIHZhbHVlKQoreworICAgIGVsZW1lbnQoKS5zZXRFZGl0aW5nVmFs
dWUodmFsdWUpOworfQorCitib29sIFRleHRGaWVsZElucHV0VHlwZTo6c2hvdWxkU2hvd1N1Z2dl
c3Rpb25zKCkKK3sKKyAgICByZXR1cm4gc2hvdWxkUmVzcGVjdExpc3RBdHRyaWJ1dGUoKSAmJiBl
bGVtZW50KCkuZmFzdEhhc0F0dHJpYnV0ZShsaXN0QXR0cik7Cit9CisjZW5kaWYKKwogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0Rmll
bGRJbnB1dFR5cGUuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmgK
aW5kZXggNjIwYmE1NTUwZWJmOGUyNjhlMGRlMDJlOWRlMGU0MjU1NGI1ZDdmOS4uYTQ1M2U3ZmUz
Y2Y0MjY5YjY5ODMwOTAxYzJkYTE1ZGRkNDg3MDFiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1Rl
eHRGaWVsZElucHV0VHlwZS5oCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykg
MjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDE0IENvbGxhYm9yYSBMdGQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMgYXJlCkBAIC0zNCw2ICszNSwxMCBAQAogI2luY2x1ZGUgIklucHV0VHlw
ZS5oIgogI2luY2x1ZGUgIlNwaW5CdXR0b25FbGVtZW50LmgiCiAKKyNpZiBFTkFCTEUoREFUQUxJ
U1RfRUxFTUVOVCkKKyNpbmNsdWRlICJTdWdnZXN0aW9uQ2hvb3Nlci5oIgorI2VuZGlmCisKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRm9ybURhdGFMaXN0OwpAQCAtNDEsNyArNDYsMTEg
QEAgY2xhc3MgVGV4dENvbnRyb2xJbm5lclRleHRFbGVtZW50OwogCiAvLyBUaGUgY2xhc3MgcmVw
cmVzZW50cyB0eXBlcyBvZiB3aGljaCBVSSBjb250YWluIHRleHQgZmllbGRzLgogLy8gSXQgc3Vw
cG9ydHMgbm90IG9ubHkgdGhlIHR5cGVzIGZvciBCYXNlVGV4dElucHV0VHlwZSBidXQgYWxzbyB0
eXBlPW51bWJlci4KLWNsYXNzIFRleHRGaWVsZElucHV0VHlwZSA6IHB1YmxpYyBJbnB1dFR5cGUs
IHByb3RlY3RlZCBTcGluQnV0dG9uRWxlbWVudDo6U3BpbkJ1dHRvbk93bmVyIHsKK2NsYXNzIFRl
eHRGaWVsZElucHV0VHlwZSA6IHB1YmxpYyBJbnB1dFR5cGUsIHByb3RlY3RlZCBTcGluQnV0dG9u
RWxlbWVudDo6U3BpbkJ1dHRvbk93bmVyCisjaWYgRU5BQkxFKERBVEFMSVNUX0VMRU1FTlQpCisg
ICAgLCBwcm90ZWN0ZWQgU3VnZ2VzdGlvbkNob29zZXI6OlN1Z2dlc3Rpb25DaG9vc2VyQ2xpZW50
CisjZW5kaWYKK3sKIHByb3RlY3RlZDoKICAgICBleHBsaWNpdCBUZXh0RmllbGRJbnB1dFR5cGUo
SFRNTElucHV0RWxlbWVudCYpOwogICAgIHZpcnR1YWwgflRleHRGaWVsZElucHV0VHlwZSgpOwpA
QCAtMTA2LDYgKzExNSwxNiBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBzcGluQnV0dG9u
U3RlcERvd24oKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgc3BpbkJ1dHRvblN0ZXBVcCgp
IG92ZXJyaWRlOwogCisjaWYgRU5BQkxFKERBVEFMSVNUX0VMRU1FTlQpCisgICAgLy8gU3VnZ2Vz
dGlvbkNob29zZXI6OlN1Z2dlc3Rpb25DaG9vc2VyQ2xpZW50IGZ1bmN0aW9ucy4KKyAgICB2aXJ0
dWFsIFN0cmluZyBwcmVmaXgoKSBjb25zdCBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIFZlY3RvcjxT
dHJpbmc+IHN1Z2dlc3Rpb25zKGJvb2wgbmVlZEZ1bGxMaXN0KSBjb25zdCBvdmVycmlkZTsKKyAg
ICB2aXJ0dWFsIHZvaWQgYWRkU3VnZ2VzdGlvbkNvbnRhaW5lclRvU2hhZG93Um9vdChIVE1MRWxl
bWVudCopIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCByZW1vdmVTdWdnZXN0aW9uQ29udGFp
bmVyRnJvbVNoYWRvd1Jvb3QoSFRNTEVsZW1lbnQqKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZv
aWQgZGlkQ2hvb3NlVmFsdWUoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBi
b29sIHNob3VsZFNob3dTdWdnZXN0aW9ucygpIG92ZXJyaWRlOworI2VuZGlmCisKICAgICBSZWZQ
dHI8SFRNTEVsZW1lbnQ+IG1fY29udGFpbmVyOwogICAgIFJlZlB0cjxIVE1MRWxlbWVudD4gbV9p
bm5lckJsb2NrOwogICAgIFJlZlB0cjxUZXh0Q29udHJvbElubmVyVGV4dEVsZW1lbnQ+IG1faW5u
ZXJUZXh0OwpAQCAtMTE0LDYgKzEzMyw5IEBAIHByaXZhdGU6CiAjaWYgRU5BQkxFKElOUFVUX1NQ
RUVDSCkKICAgICBSZWZQdHI8SFRNTEVsZW1lbnQ+IG1fc3BlZWNoQnV0dG9uOwogI2VuZGlmCisj
aWYgRU5BQkxFKERBVEFMSVNUX0VMRU1FTlQpCisgICAgT3duUHRyPFN1Z2dlc3Rpb25DaG9vc2Vy
PiBtX3N1Z2dlc3Rpb25DaG9vc2VyOworI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TdWdnZXN0aW9uQ2hv
b3Nlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TdWdnZXN0aW9uQ2hvb3Nlci5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNDUzYjVhNDgwOTRmYTUzMjhlZWE5MTcwM2VmNDMyYzQ4NjA2ZDVjNQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1N1Z2dlc3Rpb25D
aG9vc2VyLmNwcApAQCAtMCwwICsxLDIwMSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBD
b2xsYWJvcmEgTHRkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAg
KiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisg
KiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElN
SVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisg
KiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJTdWdnZXN0aW9uQ2hvb3Nlci5oIgorCisjaWYgRU5BQkxFKERBVEFMSVNUX0VMRU1FTlQp
CisKKyNpbmNsdWRlICJLZXlib2FyZEV2ZW50LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
UGFzc093blB0cjxTdWdnZXN0aW9uQ2hvb3Nlcj4gU3VnZ2VzdGlvbkNob29zZXI6OmNyZWF0ZShE
b2N1bWVudCYgZG9jdW1lbnQsIFN1Z2dlc3Rpb25DaG9vc2VyQ2xpZW50JiBjbGllbnQpCit7Cisg
ICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBTdWdnZXN0aW9uQ2hvb3Nlcihkb2N1bWVudCwgY2xpZW50
KSk7Cit9CisKK1N1Z2dlc3Rpb25DaG9vc2VyOjpTdWdnZXN0aW9uQ2hvb3NlcihEb2N1bWVudCYg
ZG9jdW1lbnQsIFN1Z2dlc3Rpb25DaG9vc2VyQ2xpZW50JiBjbGllbnQpCisgICAgOiBtX2RvY3Vt
ZW50KGRvY3VtZW50KQorICAgICwgbV9jbGllbnQoY2xpZW50KQorICAgICwgbV9jb250YWluZXIo
bnVsbHB0cikKKyAgICAsIG1fZm9jdXNlZFN1Z2dlc3Rpb25FbGVtZW50KG51bGxwdHIpCit7Cit9
CisKK1N1Z2dlc3Rpb25DaG9vc2VyOjp+U3VnZ2VzdGlvbkNob29zZXIoKQoreworICAgIGhpZGUo
KTsKK30KKworUGFzc1JlZlB0cjxIVE1MRWxlbWVudD4gU3VnZ2VzdGlvbkNob29zZXI6OmNyZWF0
ZVN1Z2dlc3Rpb25Db250YWluZXIoKQoreworICAgIFJlZlB0cjxIVE1MRWxlbWVudD4gY29udGFp
bmVyID0gSFRNTERpdkVsZW1lbnQ6OmNyZWF0ZShtX2RvY3VtZW50KTsKKyAgICBjb250YWluZXIt
PnNldFBzZXVkbygiLXdlYmtpdC1zdWdnZXN0aW9uLWNvbnRhaW5lciIpOworCisgICAgcmV0dXJu
IGNvbnRhaW5lci5yZWxlYXNlKCk7Cit9CisKK3ZvaWQgU3VnZ2VzdGlvbkNob29zZXI6OmFkZFN1
Z2dlc3Rpb25zVG9Db250YWluZXIoVmVjdG9yPFN0cmluZz4mIHN1Z2dlc3Rpb25zKQoreworICAg
IG1fY29udGFpbmVyLT5yZW1vdmVDaGlsZHJlbigpOworCisgICAgaW50IHByZWZpeExlbmd0aCA9
IG1fY2xpZW50LnByZWZpeCgpLmxlbmd0aCgpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBzdWdnZXN0aW9ucy5zaXplKCk7ICsraSkgeworICAgICAgICBSZWZQdHI8U3VnZ2VzdGlvbkVs
ZW1lbnQ+IHN1Z2dlc3Rpb25FbGVtZW50ID0gU3VnZ2VzdGlvbkVsZW1lbnQ6OmNyZWF0ZSh0aGlz
LCBzdWdnZXN0aW9uc1tpXSwgbV9kb2N1bWVudCk7CisgICAgICAgIHN1Z2dlc3Rpb25FbGVtZW50
LT51cGRhdGVBcHBlYXJhbmNlKHByZWZpeExlbmd0aCk7CisKKyAgICAgICAgbV9jb250YWluZXIt
PmFwcGVuZENoaWxkKHN1Z2dlc3Rpb25FbGVtZW50LnJlbGVhc2UoKSwgQVNTRVJUX05PX0VYQ0VQ
VElPTik7CisgICAgfQorfQorCit2b2lkIFN1Z2dlc3Rpb25DaG9vc2VyOjpzaG93KGJvb2wgc2hv
d0Z1bGxMaXN0KQoreworICAgIGlmICghbV9jbGllbnQuc2hvdWxkU2hvd1N1Z2dlc3Rpb25zKCkp
CisgICAgICAgIHJldHVybjsKKworICAgIHVuZm9jdXMoKTsKKworICAgIFZlY3RvcjxTdHJpbmc+
IHN1Z2dlc3Rpb25zID0gbV9jbGllbnQuc3VnZ2VzdGlvbnMoc2hvd0Z1bGxMaXN0KTsKKyAgICBp
ZiAoc3VnZ2VzdGlvbnMuaXNFbXB0eSgpKSB7CisgICAgICAgIGhpZGUoKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworICAgIGlmICghbV9jb250YWluZXIpIHsKKyAgICAgICAgbV9jb250YWlu
ZXIgPSBjcmVhdGVTdWdnZXN0aW9uQ29udGFpbmVyKCk7CisgICAgICAgIG1fY2xpZW50LmFkZFN1
Z2dlc3Rpb25Db250YWluZXJUb1NoYWRvd1Jvb3QobV9jb250YWluZXIuZ2V0KCkpOworICAgIH0K
KworICAgIGFkZFN1Z2dlc3Rpb25zVG9Db250YWluZXIoc3VnZ2VzdGlvbnMpOworfQorCit2b2lk
IFN1Z2dlc3Rpb25DaG9vc2VyOjpoaWRlKCkKK3sKKyAgICBpZiAobV9jb250YWluZXIpIHsKKyAg
ICAgICAgbV9jbGllbnQucmVtb3ZlU3VnZ2VzdGlvbkNvbnRhaW5lckZyb21TaGFkb3dSb290KG1f
Y29udGFpbmVyLmdldCgpKTsKKyAgICAgICAgbV9jb250YWluZXIgPSAwOworICAgIH0KKyAgICBp
ZiAobV9mb2N1c2VkU3VnZ2VzdGlvbkVsZW1lbnQpCisgICAgICAgIG1fZm9jdXNlZFN1Z2dlc3Rp
b25FbGVtZW50ID0gbnVsbHB0cjsKK30KKworYm9vbCBTdWdnZXN0aW9uQ2hvb3Nlcjo6c2VsZWN0
KFN1Z2dlc3Rpb25FbGVtZW50KiBzdWdnZXN0aW9uRWxlbWVudCkKK3sKKyAgICBpZiAoIXN1Z2dl
c3Rpb25FbGVtZW50KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBtX2NsaWVudC5kaWRD
aG9vc2VWYWx1ZShzdWdnZXN0aW9uRWxlbWVudC0+dmFsdWUoKSk7CisgICAgaGlkZSgpOworICAg
IHJldHVybiB0cnVlOworfQorCit2b2lkIFN1Z2dlc3Rpb25DaG9vc2VyOjpmb2N1cyhGb2N1c0Rp
cmVjdGlvbiBkaXJlY3Rpb24pCit7CisgICAgU3VnZ2VzdGlvbkVsZW1lbnQqIG5ld0ZvY3VzZWRT
dWdnZXN0aW9uRWxlbWVudCA9IG1fZm9jdXNlZFN1Z2dlc3Rpb25FbGVtZW50OworCisgICAgdW5m
b2N1cygpOworCisgICAgc3dpdGNoIChkaXJlY3Rpb24pIHsKKyAgICBjYXNlIEZvY3VzRGlyZWN0
aW9uRm9yd2FyZDoKKyAgICBjYXNlIEZvY3VzRGlyZWN0aW9uRG93bjoKKyAgICAgICAgaWYgKCFu
ZXdGb2N1c2VkU3VnZ2VzdGlvbkVsZW1lbnQpCisgICAgICAgICAgICBuZXdGb2N1c2VkU3VnZ2Vz
dGlvbkVsZW1lbnQgPSB0b1N1Z2dlc3Rpb25FbGVtZW50KG1fY29udGFpbmVyLT5maXJzdENoaWxk
KCkpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBuZXdGb2N1c2VkU3VnZ2VzdGlvbkVsZW1l
bnQgPSB0b1N1Z2dlc3Rpb25FbGVtZW50KG5ld0ZvY3VzZWRTdWdnZXN0aW9uRWxlbWVudC0+bmV4
dFNpYmxpbmcoKSA/IG5ld0ZvY3VzZWRTdWdnZXN0aW9uRWxlbWVudC0+bmV4dFNpYmxpbmcoKSA6
IG1fY29udGFpbmVyLT5maXJzdENoaWxkKCkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEZv
Y3VzRGlyZWN0aW9uQmFja3dhcmQ6CisgICAgY2FzZSBGb2N1c0RpcmVjdGlvblVwOgorICAgICAg
ICBpZiAoIW5ld0ZvY3VzZWRTdWdnZXN0aW9uRWxlbWVudCkKKyAgICAgICAgICAgIG5ld0ZvY3Vz
ZWRTdWdnZXN0aW9uRWxlbWVudCA9IHRvU3VnZ2VzdGlvbkVsZW1lbnQobV9jb250YWluZXItPmxh
c3RDaGlsZCgpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbmV3Rm9jdXNlZFN1Z2dlc3Rp
b25FbGVtZW50ID0gdG9TdWdnZXN0aW9uRWxlbWVudChuZXdGb2N1c2VkU3VnZ2VzdGlvbkVsZW1l
bnQtPnByZXZpb3VzU2libGluZygpID8gbmV3Rm9jdXNlZFN1Z2dlc3Rpb25FbGVtZW50LT5wcmV2
aW91c1NpYmxpbmcoKSA6IG1fY29udGFpbmVyLT5sYXN0Q2hpbGQoKSk7CisgICAgICAgIGJyZWFr
OworICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0KKwor
ICAgIGZvY3VzKG5ld0ZvY3VzZWRTdWdnZXN0aW9uRWxlbWVudCk7Cit9CisKK3ZvaWQgU3VnZ2Vz
dGlvbkNob29zZXI6OmZvY3VzKFN1Z2dlc3Rpb25FbGVtZW50KiBzdWdnZXN0aW9uRWxlbWVudCkK
K3sKKyAgICBpZiAoc3VnZ2VzdGlvbkVsZW1lbnQgJiYgc3VnZ2VzdGlvbkVsZW1lbnQgPT0gbV9m
b2N1c2VkU3VnZ2VzdGlvbkVsZW1lbnQpCisgICAgICAgIHJldHVybjsKKworICAgIHVuZm9jdXMo
KTsKKworICAgIG1fZm9jdXNlZFN1Z2dlc3Rpb25FbGVtZW50ID0gc3VnZ2VzdGlvbkVsZW1lbnQ7
CisgICAgbV9mb2N1c2VkU3VnZ2VzdGlvbkVsZW1lbnQtPmZvY3VzZWQoKTsKK30KKwordm9pZCBT
dWdnZXN0aW9uQ2hvb3Nlcjo6dW5mb2N1cygpCit7CisgICAgaWYgKCFtX2ZvY3VzZWRTdWdnZXN0
aW9uRWxlbWVudCkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9mb2N1c2VkU3VnZ2VzdGlvbkVs
ZW1lbnQtPnVuZm9jdXNlZCgpOworICAgIG1fZm9jdXNlZFN1Z2dlc3Rpb25FbGVtZW50ID0gbnVs
bHB0cjsKK30KKwordm9pZCBTdWdnZXN0aW9uQ2hvb3Nlcjo6aGFuZGxlS2V5ZG93bkV2ZW50KEtl
eWJvYXJkRXZlbnQqIGV2ZW50KQoreworICAgIGlmICghZXZlbnQgfHwgIW1fY2xpZW50LnNob3Vs
ZFNob3dTdWdnZXN0aW9ucygpKQorICAgICAgICByZXR1cm47CisKKyAgICBib29sIGhhbmRsZWQg
PSBmYWxzZTsKKyAgICBTdHJpbmcga2V5ID0gZXZlbnQtPmtleUlkZW50aWZpZXIoKTsKKyAgICBp
ZiAobV9jb250YWluZXIgJiYgbV9jb250YWluZXItPmhhc0NoaWxkTm9kZXMoKSkgeworICAgICAg
ICBpZiAoa2V5ID09ICJVcCIpIHsKKyAgICAgICAgICAgIGZvY3VzKEZvY3VzRGlyZWN0aW9uQmFj
a3dhcmQpOworICAgICAgICAgICAgaGFuZGxlZCA9IHRydWU7CisgICAgICAgIH0gZWxzZSBpZiAo
a2V5ID09ICJEb3duIikgeworICAgICAgICAgICAgZm9jdXMoRm9jdXNEaXJlY3Rpb25Gb3J3YXJk
KTsKKyAgICAgICAgICAgIGhhbmRsZWQgPSB0cnVlOworICAgICAgICB9IGVsc2UgaWYgKGtleSA9
PSAiVSswMDFCIikgeyAvLyBDYW5jZWwKKyAgICAgICAgICAgIGhpZGUoKTsKKyAgICAgICAgICAg
IGhhbmRsZWQgPSB0cnVlOworICAgICAgICB9IGVsc2UgaWYgKGtleSA9PSAiVSswMDA5IikgLy8g
VGFiCisgICAgICAgICAgICBzZWxlY3QobV9mb2N1c2VkU3VnZ2VzdGlvbkVsZW1lbnQpOworICAg
ICAgICBlbHNlIGlmIChrZXkgPT0gIkVudGVyIikKKyAgICAgICAgICAgIGhhbmRsZWQgPSBzZWxl
Y3QobV9mb2N1c2VkU3VnZ2VzdGlvbkVsZW1lbnQpOworICAgIH0gZWxzZSB7CisgICAgICAgIGlm
IChrZXkgPT0gIlVwIiB8fCBrZXkgPT0gIkRvd24iKSB7CisgICAgICAgICAgICBzaG93KHRydWUp
OworICAgICAgICAgICAgaGFuZGxlZCA9IHRydWU7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBp
ZiAoaGFuZGxlZCkKKyAgICAgICAgZXZlbnQtPnNldERlZmF1bHRIYW5kbGVkKCk7Cit9CisKK30K
KyNlbmRpZiAvLyBFTkFCTEUoREFUQUxJU1RfRUxFTUVOVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvc2hhZG93L1N1Z2dlc3Rpb25DaG9vc2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3NoYWRvdy9TdWdnZXN0aW9uQ2hvb3Nlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmMzNzNmYTdkNTcyMjM1
NDBiNDgxYzg0MWQ3MThkNTBiNmM3ZTNlN2UKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3NoYWRvdy9TdWdnZXN0aW9uQ2hvb3Nlci5oCkBAIC0wLDAgKzEsOTEgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQ29sbGFib3JhIEx0ZC4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAx
LiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENv
bXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRy
aWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl
ZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICog
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqCisg
Ki8KKworI2lmbmRlZiBTdWdnZXN0aW9uQ2hvb3Nlcl9oCisjZGVmaW5lIFN1Z2dlc3Rpb25DaG9v
c2VyX2gKKworI2lmIEVOQUJMRShEQVRBTElTVF9FTEVNRU5UKQorCisjaW5jbHVkZSAiRm9jdXNE
aXJlY3Rpb24uaCIKKyNpbmNsdWRlICJTdWdnZXN0aW9uRWxlbWVudC5oIgorI2luY2x1ZGUgPHd0
Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFN1Z2dl
c3Rpb25DaG9vc2VyQ2xpZW50OworCitjbGFzcyBTdWdnZXN0aW9uQ2hvb3NlciA6IHB1YmxpYyBT
dWdnZXN0aW9uRWxlbWVudDo6U3VnZ2VzdGlvbkVsZW1lbnRPd25lciB7CitwdWJsaWM6CisgICAg
Y2xhc3MgU3VnZ2VzdGlvbkNob29zZXJDbGllbnQgeworICAgIHB1YmxpYzoKKyAgICAgICAgdmly
dHVhbCB+U3VnZ2VzdGlvbkNob29zZXJDbGllbnQoKSB7IH0KKyAgICAgICAgdmlydHVhbCBTdHJp
bmcgcHJlZml4KCkgY29uc3QgPSAwOworICAgICAgICB2aXJ0dWFsIFZlY3RvcjxTdHJpbmc+IHN1
Z2dlc3Rpb25zKGJvb2wgbmVlZEZ1bGxMaXN0KSBjb25zdCA9IDA7CisgICAgICAgIHZpcnR1YWwg
dm9pZCBhZGRTdWdnZXN0aW9uQ29udGFpbmVyVG9TaGFkb3dSb290KEhUTUxFbGVtZW50KikgPSAw
OworICAgICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlU3VnZ2VzdGlvbkNvbnRhaW5lckZyb21TaGFk
b3dSb290KEhUTUxFbGVtZW50KikgPSAwOworICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hvb3Nl
VmFsdWUoY29uc3QgU3RyaW5nJikgPSAwOworICAgICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkU2hv
d1N1Z2dlc3Rpb25zKCkgPSAwOworICAgIH07CisKKyAgICB2aXJ0dWFsIH5TdWdnZXN0aW9uQ2hv
b3NlcigpOworCisgICAgc3RhdGljIFBhc3NPd25QdHI8U3VnZ2VzdGlvbkNob29zZXI+IGNyZWF0
ZShEb2N1bWVudCYsIFN1Z2dlc3Rpb25DaG9vc2VyQ2xpZW50Jik7CisKKyAgICB2aXJ0dWFsIFN1
Z2dlc3Rpb25FbGVtZW50KiBmb2N1c2VkU3VnZ2VzdGlvbkVsZW1lbnQoKSBjb25zdCB7IHJldHVy
biBtX2ZvY3VzZWRTdWdnZXN0aW9uRWxlbWVudDsgfQorCisgICAgdmlydHVhbCB2b2lkIHNob3co
Ym9vbCBzaG93RnVsbExpc3QpOworICAgIHZpcnR1YWwgdm9pZCBoaWRlKCk7CisKKyAgICB2aXJ0
dWFsIFBhc3NSZWZQdHI8SFRNTEVsZW1lbnQ+IGNyZWF0ZVN1Z2dlc3Rpb25Db250YWluZXIoKTsK
KyAgICB2aXJ0dWFsIHZvaWQgYWRkU3VnZ2VzdGlvbnNUb0NvbnRhaW5lcihWZWN0b3I8U3RyaW5n
PiYpOworCisgICAgdmlydHVhbCB2b2lkIGhhbmRsZUtleWRvd25FdmVudChLZXlib2FyZEV2ZW50
Kik7CisKKyAgICB2aXJ0dWFsIHZvaWQgZm9jdXMoRm9jdXNEaXJlY3Rpb24pOworCisgICAgLy8g
U3VnZ2VzdGlvbkVsZW1lbnRPd25lcgorICAgIHZpcnR1YWwgYm9vbCBzZWxlY3QoU3VnZ2VzdGlv
bkVsZW1lbnQqKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgZm9jdXMoU3VnZ2VzdGlvbkVs
ZW1lbnQqKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgdW5mb2N1cygpIG92ZXJyaWRlOwor
Citwcm90ZWN0ZWQ6CisgICAgZXhwbGljaXQgU3VnZ2VzdGlvbkNob29zZXIoRG9jdW1lbnQmLCBT
dWdnZXN0aW9uQ2hvb3NlckNsaWVudCYpOworCitwcml2YXRlOgorICAgIERvY3VtZW50JiBtX2Rv
Y3VtZW50OworICAgIFN1Z2dlc3Rpb25DaG9vc2VyQ2xpZW50JiBtX2NsaWVudDsKKyAgICBSZWZQ
dHI8SFRNTEVsZW1lbnQ+IG1fY29udGFpbmVyOworICAgIFN1Z2dlc3Rpb25FbGVtZW50KiBtX2Zv
Y3VzZWRTdWdnZXN0aW9uRWxlbWVudDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwor
I2VuZGlmIC8vIEVOQUJMRShEQVRBTElTVF9FTEVNRU5UKQorCisjZW5kaWYgLy8gVGV4dENob29z
ZXJfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU3VnZ2VzdGlvbkVs
ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU3VnZ2VzdGlvbkVsZW1lbnQu
Y3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmExYmMyOGUyMWI4ZWVkYWE4YzFmZjg3OTQ4ZWYzNDMwNjZiOTdjYTQK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TdWdnZXN0aW9u
RWxlbWVudC5jcHAKQEAgLTAsMCArMSw5OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBD
b2xsYWJvcmEgTHRkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAg
KiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisg
KiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElN
SVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisg
KiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJTdWdnZXN0aW9uRWxlbWVudC5oIgorCisjaWYgRU5BQkxFKERBVEFMSVNUX0VMRU1FTlQp
CisKKyNpbmNsdWRlICJGcmFtZS5oIgorI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgorI2luY2x1ZGUg
IkhUTUxTcGFuRWxlbWVudC5oIgorI2luY2x1ZGUgIk1vdXNlRXZlbnQuaCIKKyNpbmNsdWRlICJQ
bGF0Zm9ybU1vdXNlRXZlbnQuaCIKKyNpbmNsdWRlICJUZXh0LmgiCisjaW5jbHVkZSAiVG91Y2hF
dmVudC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1N1Z2dlc3Rpb25FbGVtZW50OjpTdWdn
ZXN0aW9uRWxlbWVudChTdWdnZXN0aW9uRWxlbWVudE93bmVyKiBvd25lciwgU3RyaW5nJiB2YWx1
ZSwgY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50KQorICAgIDog
SFRNTERpdkVsZW1lbnQobmFtZSwgZG9jdW1lbnQpCisgICAgLCBtX293bmVyKG93bmVyKQorICAg
ICwgbV92YWx1ZSh2YWx1ZSkKK3sKKyAgICBzZXRQc2V1ZG8oIi13ZWJraXQtc3VnZ2VzdGlvbi1l
bGVtZW50Iik7Cit9CisKK1N1Z2dlc3Rpb25FbGVtZW50Ojp+U3VnZ2VzdGlvbkVsZW1lbnQoKQor
eworfQorCitQYXNzUmVmUHRyPFN1Z2dlc3Rpb25FbGVtZW50PiBTdWdnZXN0aW9uRWxlbWVudDo6
Y3JlYXRlKFN1Z2dlc3Rpb25FbGVtZW50T3duZXIqIG93bmVyLCBTdHJpbmcmIHZhbHVlLCBEb2N1
bWVudCYgZG9jdW1lbnQpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTdWdnZXN0aW9uRWxl
bWVudChvd25lciwgdmFsdWUsIEhUTUxOYW1lczo6ZGl2VGFnLCBkb2N1bWVudCkpOworfQorCit2
b2lkIFN1Z2dlc3Rpb25FbGVtZW50Ojp1cGRhdGVBcHBlYXJhbmNlKGludCBwcmVmaXhMZW5ndGgp
Cit7CisgICAgUmVmUHRyPEhUTUxTcGFuRWxlbWVudD4gcHJlZml4RWxlbWVudCA9IEhUTUxTcGFu
RWxlbWVudDo6Y3JlYXRlKEhUTUxOYW1lczo6c3BhblRhZywgZG9jdW1lbnQoKSk7CisgICAgcHJl
Zml4RWxlbWVudC0+YXBwZW5kQ2hpbGQoVGV4dDo6Y3JlYXRlKGRvY3VtZW50KCksIG1fdmFsdWUu
c3Vic3RyaW5nKDAsIHByZWZpeExlbmd0aCkpKTsKKyAgICBwcmVmaXhFbGVtZW50LT5zZXRQc2V1
ZG8oIi13ZWJraXQtc3VnZ2VzdGlvbi1wcmVmaXgtdGV4dCIpOworCisgICAgdGhpcy0+YXBwZW5k
Q2hpbGQocHJlZml4RWxlbWVudC5yZWxlYXNlKCksIEFTU0VSVF9OT19FWENFUFRJT04pOworICAg
IHRoaXMtPmFwcGVuZENoaWxkKFRleHQ6OmNyZWF0ZShkb2N1bWVudCgpLCBtX3ZhbHVlLnN1YnN0
cmluZyhwcmVmaXhMZW5ndGgpKSwgQVNTRVJUX05PX0VYQ0VQVElPTik7Cit9CisKK3ZvaWQgU3Vn
Z2VzdGlvbkVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqIGV2ZW50KQoreworICAg
IGlmIChldmVudC0+aXNNb3VzZUV2ZW50KCkpIHsKKyAgICAgICAgaWYgKGV2ZW50LT50eXBlKCkg
PT0gZXZlbnROYW1lcygpLm1vdXNlZG93bkV2ZW50CisgICAgICAgICAgICAmJiAoc3RhdGljX2Nh
c3Q8TW91c2VFdmVudCo+KGV2ZW50KS0+YnV0dG9uKCkgIT0gUmlnaHRCdXR0b24pCisgICAgICAg
ICAgICAmJiBkb2N1bWVudCgpLmZyYW1lKCkpCisgICAgICAgICAgICBtX293bmVyLT5zZWxlY3Qo
dGhpcyk7CisgICAgICAgIGVsc2UgaWYgKGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLm1v
dXNlbW92ZUV2ZW50KQorICAgICAgICAgICAgbV9vd25lci0+Zm9jdXModGhpcyk7CisgICAgICAg
IGVsc2UgaWYgKGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLm1vdXNlb3V0RXZlbnQpCisg
ICAgICAgICAgICBtX293bmVyLT51bmZvY3VzKCk7CisgICAgfQorfQorCit2b2lkIFN1Z2dlc3Rp
b25FbGVtZW50Ojpmb2N1c2VkKCkKK3sKKyAgICBzZXRQc2V1ZG8oIi13ZWJraXQtc3VnZ2VzdGlv
bi1lbGVtZW50LWZvY3VzZWQiKTsKK30KKwordm9pZCBTdWdnZXN0aW9uRWxlbWVudDo6dW5mb2N1
c2VkKCkKK3sKKyAgICBzZXRQc2V1ZG8oIi13ZWJraXQtc3VnZ2VzdGlvbi1lbGVtZW50Iik7Cit9
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShEQVRBTElTVF9F
TEVNRU5UKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU3VnZ2VzdGlv
bkVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1N1Z2dlc3Rpb25FbGVtZW50
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZDMxY2IwZTZmNGQzODA3YjIzZDliMmEyM2RhYjRkNmFiNTZmZjkxMAot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1N1Z2dlc3Rpb25F
bGVtZW50LmgKQEAgLTAsMCArMSw3OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBDb2xs
YWJvcmEgTHRkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
CisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRF
RCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgU3VnZ2VzdGlvbkVsZW1lbnRfaAor
I2RlZmluZSBTdWdnZXN0aW9uRWxlbWVudF9oCisKKyNpZiBFTkFCTEUoREFUQUxJU1RfRUxFTUVO
VCkKKworI2luY2x1ZGUgIkhUTUxEaXZFbGVtZW50LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworY2xhc3MgRXZlbnQ7CitjbGFzcyBTdWdnZXN0aW9uRWxlbWVudE93bmVyOworCitjbGFzcyBT
dWdnZXN0aW9uRWxlbWVudCA6IHB1YmxpYyBIVE1MRGl2RWxlbWVudCB7CitwdWJsaWM6CisgICAg
Y2xhc3MgU3VnZ2VzdGlvbkVsZW1lbnRPd25lciB7CisgICAgcHVibGljOgorICAgICAgICB2aXJ0
dWFsIH5TdWdnZXN0aW9uRWxlbWVudE93bmVyKCkgeyB9CisgICAgICAgIHZpcnR1YWwgYm9vbCBz
ZWxlY3QoU3VnZ2VzdGlvbkVsZW1lbnQqKSA9IDA7CisgICAgICAgIHZpcnR1YWwgdm9pZCBmb2N1
cyhTdWdnZXN0aW9uRWxlbWVudCopID0gMDsKKyAgICAgICAgdmlydHVhbCB2b2lkIHVuZm9jdXMo
KSA9IDA7CisgICAgfTsKKworICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN1Z2dlc3Rpb25FbGVtZW50
PiBjcmVhdGUoU3VnZ2VzdGlvbkVsZW1lbnRPd25lciosIFN0cmluZyYsIERvY3VtZW50Jik7Cisg
ICAgdmlydHVhbCB+U3VnZ2VzdGlvbkVsZW1lbnQoKTsKKworICAgIHZvaWQgZm9jdXNlZCgpOwor
ICAgIHZvaWQgdW5mb2N1c2VkKCk7CisKKyAgICB2b2lkIHVwZGF0ZUFwcGVhcmFuY2UoaW50IHBy
ZWZpeExlbmd0aCk7CisKKyAgICBTdHJpbmcgdmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVl
OyB9CisKK3ByaXZhdGU6CisgICAgU3VnZ2VzdGlvbkVsZW1lbnQoU3VnZ2VzdGlvbkVsZW1lbnRP
d25lciosIFN0cmluZyYsIGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOworCisgICAg
dmlydHVhbCB2b2lkIGRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqKTsKKworICAgIFN1Z2dlc3Rp
b25FbGVtZW50T3duZXIqIG1fb3duZXI7CisgICAgU3RyaW5nIG1fdmFsdWU7Cit9OworCitOT0RF
X1RZUEVfQ0FTVFMoU3VnZ2VzdGlvbkVsZW1lbnQpCisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
KworI2VuZGlmIC8vIEVOQUJMRShEQVRBTElTVF9FTEVNRU5UKQorCisjZW5kaWYgLy8gU3VnZ2Vz
dGlvbkVsZW1lbnRfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Jl
bmRlclRoZW1lR3RrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9SZW5kZXJUaGVt
ZUd0ay5jcHAKaW5kZXggNjI5ZThkNmJlMTk1MTgzMzkwM2Y1NmY1MGQwZjkwMTkyODM2OTBkMC4u
NGMxYjg0ZTc1ZTBkMzdhOWI4ZGI5ZTViMzM5NzAxMjQ2NzM1YjQxYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1JlbmRlclRoZW1lR3RrLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ndGsvUmVuZGVyVGhlbWVHdGsuY3BwCkBAIC0xLDcgKzEsNyBAQAog
LyoKICAqIENvcHlyaWdodCAoQykgMjAwNyBBcHBsZSBJbmMuCiAgKiBDb3B5cmlnaHQgKEMpIDIw
MDcgQWxwIFRva2VyIDxhbHBAYXRva2VyLmNvbT4KLSAqIENvcHlyaWdodCAoQykgMjAwOCBDb2xs
YWJvcmEgTHRkLgorICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDE0IENvbGxhYm9yYSBMdGQuCiAg
KiBDb3B5cmlnaHQgKEMpIDIwMDkgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4KICAqIENvcHly
aWdodCAoQykgMjAxMCBJZ2FsaWEgUy5MLgogICoKQEAgLTUwLDYgKzUwLDEwIEBACiAjaW5jbHVk
ZSA8Z3RrL2d0ay5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAorI2lmIEVOQUJM
RShEQVRBTElTVF9FTEVNRU5UKQorI2luY2x1ZGUgIklucHV0VHlwZU5hbWVzLmgiCisjZW5kaWYK
KwogI2lmIEVOQUJMRShQUk9HUkVTU19FTEVNRU5UKQogI2luY2x1ZGUgIlJlbmRlclByb2dyZXNz
LmgiCiAjZW5kaWYKQEAgLTQ3NCw2ICs0NzgsMTEgQEAgdm9pZCBSZW5kZXJUaGVtZUd0azo6cGxh
dGZvcm1Db2xvcnNEaWRDaGFuZ2UoKQogICAgIFJlbmRlclRoZW1lOjpwbGF0Zm9ybUNvbG9yc0Rp
ZENoYW5nZSgpOwogfQogCitTdHJpbmcgUmVuZGVyVGhlbWVHdGs6OmV4dHJhRGVmYXVsdFN0eWxl
U2hlZXQoKQoreworICAgIHJldHVybiBTdHJpbmcodGhlbWVHdGtVc2VyQWdlbnRTdHlsZVNoZWV0
LCBzaXplb2YodGhlbWVHdGtVc2VyQWdlbnRTdHlsZVNoZWV0KSk7Cit9CisKICNpZiBFTkFCTEUo
VklERU8pCiBTdHJpbmcgUmVuZGVyVGhlbWVHdGs6OmV4dHJhTWVkaWFDb250cm9sc1N0eWxlU2hl
ZXQoKQogewpAQCAtNzI0LDYgKzczMywxNiBAQCBpbnQgUmVuZGVyVGhlbWVHdGs6OnNsaWRlclRp
Y2tPZmZzZXRGcm9tVHJhY2tDZW50ZXIoKSBjb25zdAogICAgIC8vIEZJWE1FOiBXZSBuZWVkIHRv
IHNldCB0aGlzIHRvIHRoZSBwb3NpdGlvbiBvZiB0aGUgdGljayBtYXJrcy4KICAgICByZXR1cm4g
MDsKIH0KKworYm9vbCBSZW5kZXJUaGVtZUd0azo6c3VwcG9ydHNEYXRhTGlzdFVJKGNvbnN0IEF0
b21pY1N0cmluZyYgdHlwZSkgY29uc3QKK3sKKyAgICBib29sIHJlc3VsdCA9IHR5cGUgPT0gSW5w
dXRUeXBlTmFtZXM6OnRleHQoKQorICAgICAgICB8fCB0eXBlID09IElucHV0VHlwZU5hbWVzOjpz
ZWFyY2goKQorICAgICAgICB8fCB0eXBlID09IElucHV0VHlwZU5hbWVzOjp1cmwoKQorICAgICAg
ICB8fCB0eXBlID09IElucHV0VHlwZU5hbWVzOjplbWFpbCgpOworCisgICAgcmV0dXJuIHJlc3Vs
dDsKK30KICNlbmRpZgogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
dGsvUmVuZGVyVGhlbWVHdGsuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9SZW5kZXJU
aGVtZUd0ay5oCmluZGV4IDU1ZTAwNjczZmYwNGYzOTEwZTAwZmNjMjFkMjNmYzNmZjdhMDJiZjgu
LjFkN2RhNGFiZWZlZjUxNWRlMzJkMWE3YTVmOTdmNDdiNTliNjBmNzIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9SZW5kZXJUaGVtZUd0ay5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2d0ay9SZW5kZXJUaGVtZUd0ay5oCkBAIC04NCw2ICs4NCw4IEBAIHB1
YmxpYzoKIAogICAgIHZpcnR1YWwgYm9vbCBwb3BzTWVudUJ5U3BhY2VPclJldHVybigpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KIAorICAgIHZpcnR1YWwgU3RyaW5nIGV4dHJhRGVm
YXVsdFN0eWxlU2hlZXQoKTsKKwogI2lmIEVOQUJMRShWSURFTykKICAgICB2aXJ0dWFsIFN0cmlu
ZyBleHRyYU1lZGlhQ29udHJvbHNTdHlsZVNoZWV0KCk7CiAgICAgdmlydHVhbCBTdHJpbmcgZm9y
bWF0TWVkaWFDb250cm9sc0N1cnJlbnRUaW1lKGZsb2F0IGN1cnJlbnRUaW1lLCBmbG9hdCBkdXJh
dGlvbikgY29uc3Q7CkBAIC05Nyw5ICs5OSwxMCBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKERBVEFM
SVNUX0VMRU1FTlQpCiAgICAgLy8gUmV0dXJucyBzaXplIG9mIG9uZSBzbGlkZXIgdGljayBtYXJr
IGZvciBhIGhvcml6b250YWwgdHJhY2suCiAgICAgLy8gRm9yIHZlcnRpY2FsIHRyYWNrcyB3ZSBy
b3RhdGUgaXQgYW5kIHVzZSBpdC4gaS5lLiBXaWR0aCBpcyBhbHdheXMgbGVuZ3RoIGFsb25nIHRo
ZSB0cmFjay4KLSAgICB2aXJ0dWFsIEludFNpemUgc2xpZGVyVGlja1NpemUoKSBjb25zdDsKKyAg
ICB2aXJ0dWFsIEludFNpemUgc2xpZGVyVGlja1NpemUoKSBjb25zdCBvdmVycmlkZTsKICAgICAv
LyBSZXR1cm5zIHRoZSBkaXN0YW5jZSBvZiBzbGlkZXIgdGljayBvcmlnaW4gZnJvbSB0aGUgc2xp
ZGVyIHRyYWNrIGNlbnRlci4KLSAgICB2aXJ0dWFsIGludCBzbGlkZXJUaWNrT2Zmc2V0RnJvbVRy
YWNrQ2VudGVyKCkgY29uc3Q7CisgICAgdmlydHVhbCBpbnQgc2xpZGVyVGlja09mZnNldEZyb21U
cmFja0NlbnRlcigpIGNvbnN0IG92ZXJyaWRlOworICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0Rh
dGFMaXN0VUkoY29uc3QgQXRvbWljU3RyaW5nJikgY29uc3Qgb3ZlcnJpZGU7CiAjZW5kaWYKIAog
I2lmZGVmIEdUS19BUElfVkVSU0lPTl8yCmRpZmYgLS1naXQgYS9Tb3VyY2UvYXV0b3Rvb2xzL1By
aW50QnVpbGRDb25maWd1cmF0aW9uLm00IGIvU291cmNlL2F1dG90b29scy9QcmludEJ1aWxkQ29u
ZmlndXJhdGlvbi5tNAppbmRleCA3MDI5OTViZTRjM2Y0MWQxYTc1ZDc5NmU3ODdmZjYyOWQzNTZh
NmEyLi5kMGM2NDQxZDQ5MWNjOTAzYWE1ZjhiYTQ2Mzk4Zjg3MmNmYWMzODYxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvYXV0b3Rvb2xzL1ByaW50QnVpbGRDb25maWd1cmF0aW9uLm00CisrKyBiL1NvdXJj
ZS9hdXRvdG9vbHMvUHJpbnRCdWlsZENvbmZpZ3VyYXRpb24ubTQKQEAgLTI1LDYgKzI1LDcgQEAg
RmVhdHVyZXM6CiAgQWNjZWxlcmF0ZWQgQ29tcG9zaXRpbmcgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgOiAkZW5hYmxlX2FjY2VsZXJhdGVkX2NvbXBvc2l0aW5nCiAgQWNjZWxlcmF0
ZWQgMkQgY2FudmFzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAkZW5hYmxl
X2FjY2VsZXJhdGVkX2NhbnZhcwogIEJhdHRlcnkgQVBJIHN1cHBvcnQgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDogJGVuYWJsZV9iYXR0ZXJ5X3N0YXR1cworIERhdGFsaXN0
IGVsZW1lbnQgc3VwcG9ydCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJGVuYWJs
ZV9kYXRhbGlzdF9lbGVtZW50CiAgR2FtZXBhZCBzdXBwb3J0ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgOiAkZW5hYmxlX2dhbWVwYWQKICBHZW9sb2NhdGlvbiBzdXBw
b3J0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICRlbmFibGVfZ2VvbG9j
YXRpb24KICBIVE1MNSB2aWRlbyBlbGVtZW50IHN1cHBvcnQgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA6ICRlbmFibGVfdmlkZW8KZGlmZiAtLWdpdCBhL1NvdXJjZS9hdXRvdG9vbHMvUmVh
ZENvbW1hbmRMaW5lQXJndW1lbnRzLm00IGIvU291cmNlL2F1dG90b29scy9SZWFkQ29tbWFuZExp
bmVBcmd1bWVudHMubTQKaW5kZXggN2Q1NmUxM2Q0OTMwOWU0NWZkZGI3ZWFjZmFiMGY1ZTI2ZmEy
YzZiNy4uZDNjNmFmYTcyMzNhYjA0ZmFmNjYxZjRmNmFlNjRmNDNjODRiNjQ5NSAxMDA2NDQKLS0t
IGEvU291cmNlL2F1dG90b29scy9SZWFkQ29tbWFuZExpbmVBcmd1bWVudHMubTQKKysrIGIvU291
cmNlL2F1dG90b29scy9SZWFkQ29tbWFuZExpbmVBcmd1bWVudHMubTQKQEAgLTIyNCw0ICsyMjQs
OSBAQCBBQ19BUkdfRU5BQkxFKFtpbnRyb3NwZWN0aW9uXSwKICAgICBbZW5hYmxlX2ludHJvc3Bl
Y3Rpb249bm9dKQogQUNfTVNHX1JFU1VMVChbJGVuYWJsZV9pbnRyb3NwZWN0aW9uXSkKIAotCitB
Q19NU0dfQ0hFQ0tJTkcoW3doZXRoZXIgdG8gZW5hYmxlIERhdGFsaXN0IGVsZW1lbnQgc3VwcG9y
dF0pCitBQ19BUkdfRU5BQkxFKFtkYXRhbGlzdC1lbGVtZW50XSwKKyAgICBBU19IRUxQX1NUUklO
RyhbLS1lbmFibGUtZGF0YWxpc3QtZWxlbWVudF0sW0VuYWJsZSBEYXRhbGlzdCBlbGVtZW50IChk
ZWZhdWx0OiBkaXNhYmxlZCldKSwKKyAgICBbXSwKKyAgICBbZW5hYmxlX2RhdGFsaXN0X2VsZW1l
bnQ9bm9dKQorQUNfTVNHX1JFU1VMVChbJGVuYWJsZV9kYXRhbGlzdF9lbGVtZW50XSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9hdXRvdG9vbHMvU2V0dXBBdXRvbWFrZS5tNCBiL1NvdXJjZS9hdXRvdG9v
bHMvU2V0dXBBdXRvbWFrZS5tNAppbmRleCAzNTMyZGIyYjVlOWRhNGQyN2QxMTVmNDlkZDE0Yjk1
MWU5YWYyZjAwLi4yNGU3YWM0YWZkNzk2ZGE4YzMwYmE0YTlmNTE4ZjRkZDczYjY5NmNiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvYXV0b3Rvb2xzL1NldHVwQXV0b21ha2UubTQKKysrIGIvU291cmNlL2F1
dG90b29scy9TZXR1cEF1dG9tYWtlLm00CkBAIC01Myw2ICs1Myw3IEBAIEFNX0NPTkRJVElPTkFM
KFtVU0VfR0xFUzJdLCBbdGVzdCAiJGVuYWJsZV9nbGVzMiIgPSAieWVzIl0pCiAjIFdlYktpdCBm
ZWF0dXJlIGNvbmRpdGlvbmFscy4KIEFNX0NPTkRJVElPTkFMKFtFTkFCTEVfREVWRUxPUEVSX01P
REVdLCBbdGVzdCAiJGVuYWJsZV9kZXZlbG9wZXJfbW9kZSIgPSAieWVzIl0pCiBBTV9DT05ESVRJ
T05BTChbRU5BQkxFX0RFQlVHXSxbdGVzdCAiJGVuYWJsZV9kZWJ1ZyIgPSAieWVzIl0pCitBTV9D
T05ESVRJT05BTChbRU5BQkxFX0RBVEFMSVNUX0VMRU1FTlRdLFt0ZXN0ICIkZW5hYmxlX2RhdGFs
aXN0X2VsZW1lbnQiID0gInllcyJdKQogQU1fQ09ORElUSU9OQUwoW0VOQUJMRV9XRUJHTF0sW3Rl
c3QgIiRlbmFibGVfd2ViZ2wiID0gInllcyJdKQogQU1fQ09ORElUSU9OQUwoW0VOQUJMRV9WSURF
T10sW3Rlc3QgIiRlbmFibGVfdmlkZW8iID0gInllcyJdKQogQU1fQ09ORElUSU9OQUwoW0VOQUJM
RV9DT1ZFUkFHRV0sW3Rlc3QgIiRlbmFibGVfY292ZXJhZ2UiID0gInllcyJdKQpkaWZmIC0tZ2l0
IGEvU291cmNlL2F1dG90b29scy9TZXR1cFdlYktpdEZlYXR1cmVzLm00IGIvU291cmNlL2F1dG90
b29scy9TZXR1cFdlYktpdEZlYXR1cmVzLm00CmluZGV4IDVkYWY3YjlmNjIxZTY2YmYyYjJjOTA5
MWRhNmZiMTBkNDg0MDQ1YjEuLmIwNjEyM2ZkYmYwMDJkZDU2OWYwZjFlOTkyYTJjOWI0MWNiZTYx
OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9hdXRvdG9vbHMvU2V0dXBXZWJLaXRGZWF0dXJlcy5tNAor
KysgYi9Tb3VyY2UvYXV0b3Rvb2xzL1NldHVwV2ViS2l0RmVhdHVyZXMubTQKQEAgLTc3LDYgKzc3
LDEyIEBAIGVsc2UKICAgICBDT05GSUdVUkFCTEVfRkVBVFVSRV9ERUZJTkVTPSIkQ09ORklHVVJB
QkxFX0ZFQVRVUkVfREVGSU5FUyBFTkFCTEVfQkFUVEVSWV9TVEFUVVM9MCIKIGZpCiAKK2lmIHRl
c3QgIiRlbmFibGVfZGF0YWxpc3RfZWxlbWVudCIgPSAieWVzIjsgdGhlbgorICAgIENPTkZJR1VS
QUJMRV9GRUFUVVJFX0RFRklORVM9IiRDT05GSUdVUkFCTEVfRkVBVFVSRV9ERUZJTkVTIEVOQUJM
RV9EQVRBTElTVF9FTEVNRU5UPTEiCitlbHNlCisgICAgQ09ORklHVVJBQkxFX0ZFQVRVUkVfREVG
SU5FUz0iJENPTkZJR1VSQUJMRV9GRUFUVVJFX0RFRklORVMgRU5BQkxFX0RBVEFMSVNUX0VMRU1F
TlQ9MCIKK2ZpCisKICMgVGhpcyBsaXN0IG9mIGZlYXR1cmVzIHJlcHJlc2VudHMgdGhvc2Ugc2Vs
ZWN0ZWQgZm9yIHJlbGVhc2UgYnVpbGRzLiAgSWYgeW91IGFyZQogIyBhZGRpbmcgYSBuZXcgb3Ig
dW5zdGFibGUgZmVhdHVyZSwgeW91IHNob3VsZCBtYXJrIGl0IGRpc2FibGVkIGhlcmUuIFdlIG5l
ZWQgdG8gcnVuCiAjIHRoaXMgY29tbWFuZCBub3cgcmF0aGVyIHRoYW4gdXNlIEFDX0NPTkZJR19D
T01NQU5EUyBiZWNhdXNlIGF1dG9tYWtlIHJ1bGVzIGRlcGVuZApAQCAtMTAyLDcgKzEwOCw2IEBA
ICRzcmNkaXIvVG9vbHMvZ3RrL2dlbmVyYXRlLWZlYXR1cmUtZGVmaW5lcy1maWxlcyAkQ09ORklH
VVJBQkxFX0ZFQVRVUkVfREVGSU5FUyBcCiAgICAgRU5BQkxFX0NTUzNfQ09ORElUSU9OQUxfUlVM
RVM9MCBcCiAgICAgRU5BQkxFX0NVU1RPTV9TQ0hFTUVfSEFORExFUj0wIFwKICAgICBFTkFCTEVf
REFTSEJPQVJEX1NVUFBPUlQ9MCBcCi0gICAgRU5BQkxFX0RBVEFMSVNUX0VMRU1FTlQ9MCBcCiAg
ICAgRU5BQkxFX0RBVEFfVFJBTlNGRVJfSVRFTVM9MCBcCiAgICAgRU5BQkxFX0RFVEFJTFNfRUxF
TUVOVD0xIFwKICAgICBFTkFCTEVfREVWSUNFX09SSUVOVEFUSU9OPTAgXApkaWZmIC0tZ2l0IGEv
Q2hhbmdlTG9nIGIvQ2hhbmdlTG9nCmluZGV4IGQ5NDdhYmM0ZDFlMjFhZWI3MjU1N2U2MWJhNWFj
N2NhYWU0NjQzMmUuLjAxNjIwMGYwNmI4YTI4NTBhYTdjODcwM2QzMjYwY2FiYzU5ZWU4MDYgMTAw
NjQ0Ci0tLSBhL0NoYW5nZUxvZworKysgYi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAx
NC0wMi0wNiAgQ2hhbmdTZW9rIE9oICA8Y2hhbmdzZW9rLm9oQGNvbGxhYm9yYS5jb20+CisKKyAg
ICAgICAgRGF0YWxpc3QgZWxlbWVudCBzdXBwb3J0IGZvciBUZXh0RmllbGRJbnB1dFR5cGUKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk4OTM0CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGEgYnVpbGQg
b3B0aW9uIHRvIGVuYWJsZSBkYXRhbGlzdCBmb3IgZ3RrIHBvcnQuCisKKyAgICAgICAgKiBTb3Vy
Y2UvYXV0b3Rvb2xzL1ByaW50QnVpbGRDb25maWd1cmF0aW9uLm00OgorICAgICAgICAqIFNvdXJj
ZS9hdXRvdG9vbHMvUmVhZENvbW1hbmRMaW5lQXJndW1lbnRzLm00OgorICAgICAgICAqIFNvdXJj
ZS9hdXRvdG9vbHMvU2V0dXBBdXRvbWFrZS5tNDoKKyAgICAgICAgKiBTb3VyY2UvYXV0b3Rvb2xz
L1NldHVwV2ViS2l0RmVhdHVyZXMubTQ6CisKIDIwMTQtMDItMDUgIEFuZHJlYXMgS2xpbmcgIDxh
a2xpbmdAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBFTkFCTEUoRElSRUNUT1JZX1VQTE9B
RCkuCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>223431</attachid>
            <date>2014-02-07 00:26:12 -0800</date>
            <delta_ts>2014-02-07 01:47:08 -0800</delta_ts>
            <desc>Add a test to verify the functionality</desc>
            <filename>bug-98934-20140207172610.patch</filename>
            <type>text/plain</type>
            <size>44791</size>
            <attacher name="ChangSeok Oh">changseok</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTYzNjEyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGEyYTJhMjVkZGNjN2Fk
ZjYwMjc2MWIwOWFhYzFhNzBkNmU2ZDliNS4uY2U1MTZhNjE3ZTlmMDkyZGUyY2ZkYTkwYTc3OWRl
ZTNlN2Q0NTc2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDczIEBACisyMDE0LTAyLTA3ICBDaGFu
Z1Nlb2sgT2ggIDxjaGFuZ3Nlb2sub2hAY29sbGFib3JhLmNvbT4KKworICAgICAgICBEYXRhbGlz
dCBlbGVtZW50IHN1cHBvcnQgZm9yIFRleHRGaWVsZElucHV0VHlwZQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTg5MzQKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGNoYW5nZSBicmluZ3MgZGF0YWxp
c3Qgc3VwcG9ydCB0byBUZXh0RmllbGRJbnB1dFR5cGUuIFRvIGRvIHRoYXQsCisgICAgICAgIEkg
Y3JlYXRlZCB0d28gY2xhc3NlcyBTdWdnZXN0aW9uQ2hvb3NlciBhbmQgU3VnZ2VzdGlvbkVsZW1l
bnQgbmV3bHkuIFN1Z2dlc3Rpb25DaG9vc2VyCisgICAgICAgIGlzIGEgY29udHJvbGxlciB3aGlj
aCBUZXh0RmllbGRJbnB1dFR5cGUgdXNlcyB0byBzaG93L2hpZGUgYSBzdWdnZXN0aW9uIHBvcHVw
LgorICAgICAgICBUaGUgcG9wdXAgc2hvd2luZyBvcHRpb25zIG9mIGRhdGFsaXN0IGlzIGNvbnN0
cnVjdGVkIHdpdGggSFRNTERpdkVsZW1lbnRzCisgICAgICAgIHdoaWNoIGFyZSByZXByZXNlbnRl
ZCBieSBTdWdnZXN0aW9uRWxlbWVudCwgc3ViY2xhc3Mgb2YgSFRNTERpdkVsZW1lbnQuCisgICAg
ICAgIEFsbCBTdWdnZXN0aW9uRWxlbWVudHMgYXJlIGFsc28gd3JhcHBlZCBieSBhIGRpdiBlbGVt
ZW50IGNvbnRhaW5lciBhbmQgaXQgYmVsb25ncyB0bworICAgICAgICBTaGFkb3dSb29vdCBvZiBI
VE1MSW5wdXRFbG1lZW50LiBCYXNpY2FsbHkgbW9zdCBvZiBjb2RlIGlzIHNoYXJlYWJsZSBhbW9u
ZyBwb3J0cworICAgICAgICB0aHJvdWdoIGRlZmluaW5nIHNvbWUgZXh0cmEgc3R5bGUgaW4gY3Nz
IGFuZCBtb2RpZnlpbmcgUmVuZGVyVGhlbWUgc3R1ZmYsCisgICAgICAgIGJ1dCBoZXJlIEkgYXBw
bHkgdGhlIGNoYW5nZSB0byBndGsgcG9ydCBhaGVhZC4KKworICAgICAgICBUZXN0OiBmYXN0L2Zv
cm1zL2RhdGFsaXN0L3RleHRmaWVsZC13aXRoLWRhdGFsaXN0Lmh0bWwKKworICAgICAgICAqIENN
YWtlTGlzdHMudHh0OgorICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOgorICAgICAgICAqIEdOVW1h
a2VmaWxlLmxpc3QuYW06CisgICAgICAgICogY3NzL3RoZW1lR3RrLmNzczogQWRkZWQuCisgICAg
ICAgIChpbnB1dDo6LXdlYmtpdC1zdWdnZXN0aW9uLWNvbnRhaW5lcik6CisgICAgICAgIChpbnB1
dDo6LXdlYmtpdC1zdWdnZXN0aW9uLWVsZW1lbnQpOgorICAgICAgICAoaW5wdXQ6Oi13ZWJraXQt
c3VnZ2VzdGlvbi1lbGVtZW50LWZvY3VzZWQpOgorICAgICAgICAoaW5wdXQ6Oi13ZWJraXQtc3Vn
Z2VzdGlvbi1wcmVmaXgtdGV4dCk6CisgICAgICAgICogaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEZpZWxkSW5wdXRUeXBlOjpoYW5kbGVLZXlkb3du
RXZlbnQpOiBTaG93IHBvcHVwIG9yIG1vdmUgZm9jdXMgYWNjb3JkaW5nIHRvIHVzZXIgaW5wdXQu
CisgICAgICAgIChXZWJDb3JlOjpUZXh0RmllbGRJbnB1dFR5cGU6OmhhbmRsZUJsdXJFdmVudCk6
IEhpZGUgcG9wdXAgd2hlbiB0ZXh0IGZpZWxkIGxvc2VzIGZvY3VzLgorICAgICAgICAoV2ViQ29y
ZTo6VGV4dEZpZWxkSW5wdXRUeXBlOjpjcmVhdGVTaGFkb3dTdWJ0cmVlKToKKyAgICAgICAgKFdl
YkNvcmU6OlRleHRGaWVsZElucHV0VHlwZTo6ZGlkU2V0VmFsdWVCeVVzZXJFZGl0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlRleHRGaWVsZElucHV0VHlwZTo6cHJlZml4KTogVGhlIHByZWZpeCBpcyBh
biBpbm5lciB2YWx1ZSBpbiBpbnB1dCBmaWVsZC4gSXQgaXMgcmVxdWlyZWQgdG8gcmVidWlsZCBz
dWdnZXN0aW9uIHBvcHVwLgorICAgICAgICAoV2ViQ29yZTo6VGV4dEZpZWxkSW5wdXRUeXBlOjpz
dWdnZXN0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0RmllbGRJbnB1dFR5cGU6OmFkZFN1
Z2dlc3Rpb25Db250YWluZXJUb1NoYWRvd1Jvb3QpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEZp
ZWxkSW5wdXRUeXBlOjpyZW1vdmVTdWdnZXN0aW9uQ29udGFpbmVyRnJvbVNoYWRvd1Jvb3QpOgor
ICAgICAgICAoV2ViQ29yZTo6VGV4dEZpZWxkSW5wdXRUeXBlOjpkaWRDaG9vc2VWYWx1ZSk6IEZp
bGwgdGV4dCBmaWVsZCB3aXRoIHRoZSB2YWx1ZSB1c2VyIHNlbGVjdGVkLgorICAgICAgICAoV2Vi
Q29yZTo6VGV4dEZpZWxkSW5wdXRUeXBlOjpzaG91bGRTaG93U3VnZ2VzdGlvbnMpOgorICAgICAg
ICAqIGh0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmg6CisgICAgICAgICogaHRtbC9zaGFkb3cvU3Vn
Z2VzdGlvbkNob29zZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlN1Z2dlc3Rpb25D
aG9vc2VyOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U3VnZ2VzdGlvbkNob29zZXI6OlN1
Z2dlc3Rpb25DaG9vc2VyKToKKyAgICAgICAgKFdlYkNvcmU6OlN1Z2dlc3Rpb25DaG9vc2VyOjp+
U3VnZ2VzdGlvbkNob29zZXIpOgorICAgICAgICAoV2ViQ29yZTo6U3VnZ2VzdGlvbkNob29zZXI6
OmNyZWF0ZVN1Z2dlc3Rpb25Db250YWluZXIpOgorICAgICAgICAoV2ViQ29yZTo6U3VnZ2VzdGlv
bkNob29zZXI6OmFkZFN1Z2dlc3Rpb25zVG9Db250YWluZXIpOgorICAgICAgICAoV2ViQ29yZTo6
U3VnZ2VzdGlvbkNob29zZXI6OnNob3cpOgorICAgICAgICAoV2ViQ29yZTo6U3VnZ2VzdGlvbkNo
b29zZXI6OmhpZGUpOgorICAgICAgICAoV2ViQ29yZTo6U3VnZ2VzdGlvbkNob29zZXI6OnNlbGVj
dCk6CisgICAgICAgIChXZWJDb3JlOjpTdWdnZXN0aW9uQ2hvb3Nlcjo6Zm9jdXMpOgorICAgICAg
ICAoV2ViQ29yZTo6U3VnZ2VzdGlvbkNob29zZXI6OnVuZm9jdXMpOgorICAgICAgICAoV2ViQ29y
ZTo6U3VnZ2VzdGlvbkNob29zZXI6OmhhbmRsZUtleWRvd25FdmVudCk6CisgICAgICAgICogaHRt
bC9zaGFkb3cvU3VnZ2VzdGlvbkNob29zZXIuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpT
dWdnZXN0aW9uQ2hvb3Nlcjo6U3VnZ2VzdGlvbkNob29zZXJDbGllbnQ6On5TdWdnZXN0aW9uQ2hv
b3NlckNsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTdWdnZXN0aW9uQ2hvb3Nlcjo6Zm9jdXNl
ZFN1Z2dlc3Rpb25FbGVtZW50KToKKyAgICAgICAgKiBodG1sL3NoYWRvdy9TdWdnZXN0aW9uRWxl
bWVudC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6U3VnZ2VzdGlvbkVsZW1lbnQ6OlN1
Z2dlc3Rpb25FbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlN1Z2dlc3Rpb25FbGVtZW50Ojp+
U3VnZ2VzdGlvbkVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U3VnZ2VzdGlvbkVsZW1lbnQ6
OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTdWdnZXN0aW9uRWxlbWVudDo6dXBkYXRlQXBw
ZWFyYW5jZSk6IEJvbGQgdGhlIHByZWZpeCBzdHJpbmcgYWNjb3JkaW5nIHRvIHVzZXIgaW5wdXQu
CisgICAgICAgIChXZWJDb3JlOjpTdWdnZXN0aW9uRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxl
cik6IEhhbmRsZSBtb3VzZSBldmVudCB0byBjaGFuZ2UgdGhlIHN0eWxlIG9mIGZvY3VzZWQvdW5m
b2N1c2VkIGVsZW1lbnQuCisgICAgICAgIChXZWJDb3JlOjpTdWdnZXN0aW9uRWxlbWVudDo6Zm9j
dXNlZCk6IEhpZ2hsaWdodCB0aGUgZWxlbWVudCB3aGVuIGhhdmluZyBhIGZvY3VzLgorICAgICAg
ICAoV2ViQ29yZTo6U3VnZ2VzdGlvbkVsZW1lbnQ6OnVuZm9jdXNlZCk6IFJldHVybiB0aGUgc3R5
bGUgb2YgZWxlbWVudCB0byB0aGUgZGVmYXVsdCB2YWx1ZSB3aGVuIGxvc2luZyBmb2N1cy4KKyAg
ICAgICAgKiBodG1sL3NoYWRvdy9TdWdnZXN0aW9uRWxlbWVudC5oOiBBZGRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OlN1Z2dlc3Rpb25FbGVtZW50OjpTdWdnZXN0aW9uRWxlbWVudE93bmVyOjp+U3Vn
Z2VzdGlvbkVsZW1lbnRPd25lcik6CisgICAgICAgIChXZWJDb3JlOjpTdWdnZXN0aW9uRWxlbWVu
dDo6dmFsdWUpOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9SZW5kZXJUaGVtZUd0ay5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUd0azo6ZXh0cmFEZWZhdWx0U3R5bGVTaGVldCk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUd0azo6c3VwcG9ydHNEYXRhTGlzdFVJKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvUmVuZGVyVGhlbWVHdGsuaDoKKwogMjAxNC0wMi0wNiAg
QnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgSURCOiBSZW1vdmUg
dGhlIGVudGlyZWx5IHVubmVjZXNzYXJ5ICJWYWx1ZSBLZXkiIGNvbmNlcHQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKaW5kZXggODQ1ODQwY2E4MmM5OWE1YzM0YjEyNDJiYjE2OWU4NGEyMzNjMjQ2YS4uMTE4
MzMxOTk4NWJlOGE0YzUzNDNkNjg0ZTNlZjdkMzY1NzQ5MWVhNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50
eHQKQEAgLTE1NjEsNiArMTU2MSw4IEBAIHNldChXZWJDb3JlX1NPVVJDRVMKICAgICBodG1sL3No
YWRvdy9Qcm9ncmVzc1NoYWRvd0VsZW1lbnQuY3BwCiAgICAgaHRtbC9zaGFkb3cvU2xpZGVyVGh1
bWJFbGVtZW50LmNwcAogICAgIGh0bWwvc2hhZG93L1NwaW5CdXR0b25FbGVtZW50LmNwcAorICAg
IGh0bWwvc2hhZG93L1N1Z2dlc3Rpb25DaG9vc2VyLmNwcAorICAgIGh0bWwvc2hhZG93L1N1Z2dl
c3Rpb25FbGVtZW50LmNwcAogICAgIGh0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50
cy5jcHAKIAogICAgIGluc3BlY3Rvci9Db21tYW5kTGluZUFQSUhvc3QuY3BwCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2Vm
aWxlLmFtCmluZGV4IDJlMmFjY2JlZGUyZGE2ZjQzNDUyYmEzMmJjMzUyYzQ1NmIxNWI5NDcuLmNi
ZTY4YWRkMTZkNDM4OWI5NDRiNTdjOTg4YzczZjI0NjcxYWQxNmEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxl
LmFtCkBAIC0yNzQsNyArMjc0LDggQEAgVVNFUl9BR0VOVF9TVFlMRV9TSEVFVFMgPSBcCiAJJChX
ZWJDb3JlKS9jc3MvbWVkaWFDb250cm9scy5jc3MgXAogCSQoV2ViQ29yZSkvY3NzL21lZGlhQ29u
dHJvbHNHdGsuY3NzIFwKIAkkKFdlYkNvcmUpL2Nzcy9mdWxsc2NyZWVuLmNzcyBcCi0JJChXZWJD
b3JlKS9jc3MvcGx1Z0lucy5jc3MKKwkkKFdlYkNvcmUpL2Nzcy9wbHVnSW5zLmNzcyBcCisJJChX
ZWJDb3JlKS9jc3MvdGhlbWVHdGsuY3NzCiAKICMgcGx1Zy1pbiByZXNvdXJjZXMKIFBMVUdfSU5T
X1JFU09VUkNFUyA9IFwKQEAgLTY5Miw2ICs2OTMsNyBAQCBFWFRSQV9ESVNUICs9IFwKIAlTb3Vy
Y2UvV2ViQ29yZS9jc3MvcGx1Z0lucy5jc3MgXAogCVNvdXJjZS9XZWJDb3JlL2Nzcy9xdWlya3Mu
Y3NzIFwKIAlTb3VyY2UvV2ViQ29yZS9jc3Mvc3ZnLmNzcyBcCisJU291cmNlL1dlYkNvcmUvY3Nz
L3RoZW1lR3RrLmNzcyBcCiAJU291cmNlL1dlYkNvcmUvY3NzL1NWR0NTU1Byb3BlcnR5TmFtZXMu
aW4gXAogCVNvdXJjZS9XZWJDb3JlL2Nzcy9TVkdDU1NWYWx1ZUtleXdvcmRzLmluIFwKIAlTb3Vy
Y2UvV2ViQ29yZS9jc3Mvdmlldy1zb3VyY2UuY3NzIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0
LmFtCmluZGV4IDI4NzdkZGYzNzJhZGZkOWMzNzZiNGIxYWMyNmNiMWZmY2JkM2Q0MzIuLmJjOWFl
OTRhYzQwZTljMGQwYmM0MjljYTI0OTE5YTVhMjViM2QxODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZp
bGUubGlzdC5hbQpAQCAtMzYyMyw2ICszNjIzLDEwIEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJ
U291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU2xpZGVyVGh1bWJFbGVtZW50LmggXAogCVNvdXJj
ZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NwaW5CdXR0b25FbGVtZW50LmNwcCBcCiAJU291cmNlL1dl
YkNvcmUvaHRtbC9zaGFkb3cvU3BpbkJ1dHRvbkVsZW1lbnQuaCBcCisJU291cmNlL1dlYkNvcmUv
aHRtbC9zaGFkb3cvU3VnZ2VzdGlvbkNob29zZXIuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9odG1s
L3NoYWRvdy9TdWdnZXN0aW9uQ2hvb3Nlci5oIFwKKwlTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRv
dy9TdWdnZXN0aW9uRWxlbWVudC5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1N1
Z2dlc3Rpb25FbGVtZW50LmggXAogCVNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1RleHRDb250
cm9sSW5uZXJFbGVtZW50cy5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1RleHRD
b250cm9sSW5uZXJFbGVtZW50cy5oIFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL1Bhc3N3b3JkSW5w
dXRUeXBlLmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvdGhlbWVHdGsuY3Nz
IGIvU291cmNlL1dlYkNvcmUvY3NzL3RoZW1lR3RrLmNzcwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45ZDE1YjE0NDVm
NGQ1YTA1NThiZWRlMWVlM2ZiNjNhZTQwYmMzOTM4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvY3NzL3RoZW1lR3RrLmNzcwpAQCAtMCwwICsxLDQ3IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE0IENvbGxhYm9yYSBMdGQuIEFsbCByaWdodCByZXNlcnZlZC4KKyAqCisgKiBU
aGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k
L29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5
b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRp
c3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lU
SE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgor
ICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAg
U2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBk
ZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJy
YXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRo
IEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworaW5wdXQ6Oi13
ZWJraXQtc3VnZ2VzdGlvbi1jb250YWluZXIgeworICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAg
ICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmNmY2ZjOworICAgIHotaW5kZXg6IDIxNDc0ODM2NDc7Cisg
ICAgbWF4LWhlaWdodDogMjAwcHg7CisgICAgLXdlYmtpdC1ib3gtc2hhZG93OiAycHggMnB4IDVw
eCAjQUVBRUFFOworfQorCitpbnB1dDo6LXdlYmtpdC1zdWdnZXN0aW9uLWVsZW1lbnQgeworICAg
IGRpc3BsYXk6IGJsb2NrOworICAgIHBhZGRpbmc6IDNweDsKKyAgICB0ZXh0LWRlY29yYXRpb246
IG5vbmU7CisgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7CisgICAgb3ZlcmZsb3c6IGhpZGRl
bjsKK30KKworaW5wdXQ6Oi13ZWJraXQtc3VnZ2VzdGlvbi1lbGVtZW50LWZvY3VzZWQgeworICAg
IGRpc3BsYXk6IGJsb2NrOworICAgIHBhZGRpbmc6IDNweDsKKyAgICB0ZXh0LWRlY29yYXRpb246
IG5vbmU7CisgICAgYmFja2dyb3VuZC1jb2xvcjogIzAwMDBGRjsKKyAgICB0ZXh0LW92ZXJmbG93
OiBlbGxpcHNpczsKKyAgICBvdmVyZmxvdzogaGlkZGVuOworfQorCitpbnB1dDo6LXdlYmtpdC1z
dWdnZXN0aW9uLXByZWZpeC10ZXh0IHsKKyAgICBmb250LXdlaWdodDogYm9sZDsKK30KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmNwcAppbmRleCA5MzgxZDk5Y2JjNWE1
YTMxOGI3YTRkY2E4YWNhZGNiM2Y1N2FmZmZjLi45NjBhMzk3YjBkNTlmY2RiNGVhM2M3Yzg4Y2Yy
Y2I0YzU5MDZjOTM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHRGaWVsZElu
cHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUu
Y3BwCkBAIC0xLDYgKzEsNyBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNCBDb2xsYWJvcmEgTHRk
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZQpAQCAtMzgsOCArMzksMTAgQEAKICNpbmNsdWRlICJGb3JtRGF0YUxpc3QuaCIKICNpbmNsdWRl
ICJGcmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lU2VsZWN0aW9uLmgiCisjaW5jbHVkZSAiSFRNTERh
dGFMaXN0RWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxJbnB1dEVsZW1lbnQuaCIKICNpbmNsdWRl
ICJIVE1MTmFtZXMuaCIKKyNpbmNsdWRlICJIVE1MT3B0aW9uRWxlbWVudC5oIgogI2luY2x1ZGUg
IktleWJvYXJkRXZlbnQuaCIKICNpbmNsdWRlICJOb2RlUmVuZGVyU3R5bGUuaCIKICNpbmNsdWRl
ICJQYWdlLmgiCkBAIC00Nyw2ICs1MCw3IEBACiAjaW5jbHVkZSAiUmVuZGVyVGV4dENvbnRyb2xT
aW5nbGVMaW5lLmgiCiAjaW5jbHVkZSAiUmVuZGVyVGhlbWUuaCIKICNpbmNsdWRlICJTaGFkb3dS
b290LmgiCisjaW5jbHVkZSAiU3VnZ2VzdGlvbkNob29zZXIuaCIKICNpbmNsdWRlICJUZXh0QnJl
YWtJdGVyYXRvci5oIgogI2luY2x1ZGUgIlRleHRDb250cm9sSW5uZXJFbGVtZW50cy5oIgogI2lu
Y2x1ZGUgIlRleHRFdmVudC5oIgpAQCAtMTQ4LDYgKzE1MiwxMiBAQCB2b2lkIFRleHRGaWVsZElu
cHV0VHlwZTo6aGFuZGxlS2V5ZG93bkV2ZW50KEtleWJvYXJkRXZlbnQqIGV2ZW50KQogewogICAg
IGlmICghZWxlbWVudCgpLmZvY3VzZWQoKSkKICAgICAgICAgcmV0dXJuOworCisjaWYgRU5BQkxF
KERBVEFMSVNUX0VMRU1FTlQpCisgICAgaWYgKG1fc3VnZ2VzdGlvbkNob29zZXIpCisgICAgICAg
IG1fc3VnZ2VzdGlvbkNob29zZXItPmhhbmRsZUtleWRvd25FdmVudChldmVudCk7CisjZW5kaWYK
KwogICAgIEZyYW1lKiBmcmFtZSA9IGVsZW1lbnQoKS5kb2N1bWVudCgpLmZyYW1lKCk7CiAgICAg
aWYgKCFmcmFtZSB8fCAhZnJhbWUtPmVkaXRvcigpLmRvVGV4dEZpZWxkQ29tbWFuZEZyb21FdmVu
dCgmZWxlbWVudCgpLCBldmVudCkpCiAgICAgICAgIHJldHVybjsKQEAgLTE5OCw2ICsyMDgsMTEg
QEAgdm9pZCBUZXh0RmllbGRJbnB1dFR5cGU6OmhhbmRsZUJsdXJFdmVudCgpCiB7CiAgICAgSW5w
dXRUeXBlOjpoYW5kbGVCbHVyRXZlbnQoKTsKICAgICBlbGVtZW50KCkuZW5kRWRpdGluZygpOwor
CisjaWYgRU5BQkxFKERBVEFMSVNUX0VMRU1FTlQpCisgICAgaWYgKG1fc3VnZ2VzdGlvbkNob29z
ZXIpCisgICAgICAgIG1fc3VnZ2VzdGlvbkNob29zZXItPmhpZGUoKTsKKyNlbmRpZgogfQogCiBi
b29sIFRleHRGaWVsZElucHV0VHlwZTo6c2hvdWxkU3VibWl0SW1wbGljaXRseShFdmVudCogZXZl
bnQpCkBAIC0yMzgsNiArMjUzLDExIEBAIHZvaWQgVGV4dEZpZWxkSW5wdXRUeXBlOjpjcmVhdGVT
aGFkb3dTdWJ0cmVlKCkKICAgICBib29sIHNob3VsZEhhdmVTcGluQnV0dG9uID0gdGhpcy0+c2hv
dWxkSGF2ZVNwaW5CdXR0b24oKTsKICAgICBib29sIGNyZWF0ZXNDb250YWluZXIgPSBzaG91bGRI
YXZlU3BpbkJ1dHRvbiB8fCBuZWVkc0NvbnRhaW5lcigpOwogCisjaWYgRU5BQkxFKERBVEFMSVNU
X0VMRU1FTlQpCisgICAgaWYgKHNob3VsZFJlc3BlY3RMaXN0QXR0cmlidXRlKCkpCisgICAgICAg
IG1fc3VnZ2VzdGlvbkNob29zZXIgPSBTdWdnZXN0aW9uQ2hvb3Nlcjo6Y3JlYXRlKGRvY3VtZW50
LCAqdGhpcyk7CisjZW5kaWYKKwogICAgIG1faW5uZXJUZXh0ID0gVGV4dENvbnRyb2xJbm5lclRl
eHRFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQpOwogICAgIGlmICghY3JlYXRlc0NvbnRhaW5lcikg
ewogICAgICAgICBlbGVtZW50KCkudXNlckFnZW50U2hhZG93Um9vdCgpLT5hcHBlbmRDaGlsZCht
X2lubmVyVGV4dCwgSUdOT1JFX0VYQ0VQVElPTik7CkBAIC00NjUsNiArNDg1LDEwIEBAIHZvaWQg
VGV4dEZpZWxkSW5wdXRUeXBlOjpkaWRTZXRWYWx1ZUJ5VXNlckVkaXQoVmFsdWVDaGFuZ2VTdGF0
ZSBzdGF0ZSkKICAgICBpZiAoIWVsZW1lbnQoKS5mb2N1c2VkKCkpCiAgICAgICAgIHJldHVybjsK
ICAgICBpZiAoRnJhbWUqIGZyYW1lID0gZWxlbWVudCgpLmRvY3VtZW50KCkuZnJhbWUoKSkgewor
I2lmIEVOQUJMRShEQVRBTElTVF9FTEVNRU5UKQorICAgICAgICBpZiAobV9zdWdnZXN0aW9uQ2hv
b3NlcikKKyAgICAgICAgICAgIG1fc3VnZ2VzdGlvbkNob29zZXItPnNob3coZmFsc2UpOworI2Vu
ZGlmCiAgICAgICAgIGlmIChzdGF0ZSA9PSBWYWx1ZUNoYW5nZVN0YXRlTm9uZSkKICAgICAgICAg
ICAgIGZyYW1lLT5lZGl0b3IoKS50ZXh0RmllbGREaWRCZWdpbkVkaXRpbmcoJmVsZW1lbnQoKSk7
CiAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS50ZXh0RGlkQ2hhbmdlSW5UZXh0RmllbGQoJmVsZW1l
bnQoKSk7CkBAIC01MTEsNCArNTM1LDY2IEBAIGJvb2wgVGV4dEZpZWxkSW5wdXRUeXBlOjpzaG91
bGRTcGluQnV0dG9uUmVzcG9uZFRvV2hlZWxFdmVudHMoKQogICAgIHJldHVybiBzaG91bGRTcGlu
QnV0dG9uUmVzcG9uZFRvTW91c2VFdmVudHMoKSAmJiBlbGVtZW50KCkuZm9jdXNlZCgpOwogfQog
CisjaWYgRU5BQkxFKERBVEFMSVNUX0VMRU1FTlQpCitTdHJpbmcgVGV4dEZpZWxkSW5wdXRUeXBl
OjpwcmVmaXgoKSBjb25zdAoreworICAgIHJldHVybiBlbGVtZW50KCkuaW5uZXJUZXh0VmFsdWUo
KTsKK30KKworVmVjdG9yPFN0cmluZz4gVGV4dEZpZWxkSW5wdXRUeXBlOjpzdWdnZXN0aW9ucyhi
b29sIG5lZWRGdWxsTGlzdCkgY29uc3QKK3sKKyAgICBWZWN0b3I8U3RyaW5nPiBzdWdnZXN0aW9u
czsKKyAgICBIVE1MRGF0YUxpc3RFbGVtZW50KiBkYXRhTGlzdCA9IGVsZW1lbnQoKS5kYXRhTGlz
dCgpOworICAgIGlmIChkYXRhTGlzdCkgeworICAgICAgICBSZWZQdHI8SFRNTENvbGxlY3Rpb24+
IG9wdGlvbnMgPSBkYXRhTGlzdC0+b3B0aW9ucygpOworICAgICAgICBpZiAoIW9wdGlvbnMtPmxl
bmd0aCgpIHx8ICghbmVlZEZ1bGxMaXN0ICYmIHByZWZpeCgpLmlzRW1wdHkoKSkpCisgICAgICAg
ICAgICByZXR1cm4gc3VnZ2VzdGlvbnM7CisKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
SFRNTE9wdGlvbkVsZW1lbnQqIG9wdGlvbiA9IHRvSFRNTE9wdGlvbkVsZW1lbnQob3B0aW9ucy0+
aXRlbShpKSk7ICsraSkgeworICAgICAgICAgICAgaWYgKCFlbGVtZW50KCkuaXNWYWxpZFZhbHVl
KG9wdGlvbi0+dmFsdWUoKSkpCisgICAgICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAg
ICAgIFN0cmluZyBjYW5kaWRhdGVTdHJpbmcgPSBlbGVtZW50KCkuc2FuaXRpemVWYWx1ZShvcHRp
b24tPnZhbHVlKCkpOworICAgICAgICAgICAgaWYgKCFjYW5kaWRhdGVTdHJpbmcuZmluZElnbm9y
aW5nQ2FzZShwcmVmaXgoKSkgJiYgY2FuZGlkYXRlU3RyaW5nLmxlbmd0aCgpIDw9IHN0YXRpY19j
YXN0PHVuc2lnbmVkPihlbGVtZW50KCkubWF4TGVuZ3RoKCkpKQorICAgICAgICAgICAgICAgIHN1
Z2dlc3Rpb25zLmFwcGVuZChjYW5kaWRhdGVTdHJpbmcpOworICAgICAgICB9CisgICAgfQorCisg
ICAgcmV0dXJuIHN1Z2dlc3Rpb25zOworfQorCit2b2lkIFRleHRGaWVsZElucHV0VHlwZTo6YWRk
U3VnZ2VzdGlvbkNvbnRhaW5lclRvU2hhZG93Um9vdChIVE1MRWxlbWVudCogc3VnZ2VzdGlvbkNv
bnRhaW5lcikKK3sKKyAgICBpZiAoIXN1Z2dlc3Rpb25Db250YWluZXIpCisgICAgICAgIHJldHVy
bjsKKworICAgIC8vIE5lZWQgdG8gZm9yY2UgcG9zaXRpb246YWJzb2x1dGUgYmVjYXVzZSBSZW5k
ZXJNZW51TGlzdCBkb2Vzbid0IGFzc3VtZSBpdAorICAgIC8vIGNvbnRhaW5zIG5vbi1hYnNvbHV0
ZSBvciBub24tZml4ZWQgcmVuZGVyZXJzIGFzIGNoaWxkcmVuLgorICAgIHN1Z2dlc3Rpb25Db250
YWluZXItPnNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlQb3NpdGlvbiwgQ1NTVmFs
dWVBYnNvbHV0ZSk7CisgICAgc3VnZ2VzdGlvbkNvbnRhaW5lci0+c2V0SW5saW5lU3R5bGVQcm9w
ZXJ0eShDU1NQcm9wZXJ0eUxlZnQsIGVsZW1lbnQoKS5ib3VuZGluZ0JveCgpLngoKSArIGVsZW1l
bnQoKS5jbGllbnRMZWZ0KCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUFgpOworICAgIHN1Z2dl
c3Rpb25Db250YWluZXItPnNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlUb3AsIGVs
ZW1lbnQoKS5ib3VuZGluZ0JveCgpLm1heFkoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QWCk7
CisgICAgc3VnZ2VzdGlvbkNvbnRhaW5lci0+c2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9w
ZXJ0eVdpZHRoLCBlbGVtZW50KCkuY2xpZW50V2lkdGgoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNT
U19QWCk7CisKKyAgICBlbGVtZW50KCkudXNlckFnZW50U2hhZG93Um9vdCgpLT5hcHBlbmRDaGls
ZChzdWdnZXN0aW9uQ29udGFpbmVyKTsKK30KKwordm9pZCBUZXh0RmllbGRJbnB1dFR5cGU6OnJl
bW92ZVN1Z2dlc3Rpb25Db250YWluZXJGcm9tU2hhZG93Um9vdChIVE1MRWxlbWVudCogc3VnZ2Vz
dGlvbkNvbnRhaW5lcikKK3sKKyAgICBpZiAoIXN1Z2dlc3Rpb25Db250YWluZXIpCisgICAgICAg
IHJldHVybjsKKworICAgIGVsZW1lbnQoKS51c2VyQWdlbnRTaGFkb3dSb290KCktPnJlbW92ZUNo
aWxkKHN1Z2dlc3Rpb25Db250YWluZXIpOworfQorCit2b2lkIFRleHRGaWVsZElucHV0VHlwZTo6
ZGlkQ2hvb3NlVmFsdWUoY29uc3QgU3RyaW5nJiB2YWx1ZSkKK3sKKyAgICBlbGVtZW50KCkuc2V0
RWRpdGluZ1ZhbHVlKHZhbHVlKTsKK30KKworYm9vbCBUZXh0RmllbGRJbnB1dFR5cGU6OnNob3Vs
ZFNob3dTdWdnZXN0aW9ucygpCit7CisgICAgcmV0dXJuIHNob3VsZFJlc3BlY3RMaXN0QXR0cmli
dXRlKCkgJiYgZWxlbWVudCgpLmZhc3RIYXNBdHRyaWJ1dGUobGlzdEF0dHIpOworfQorI2VuZGlm
CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHRGaWVsZElu
cHV0VHlwZS5oCmluZGV4IDYyMGJhNTU1MGViZjhlMjY4ZTBkZTAyZTlkZTBlNDI1NTRiNWQ3Zjku
LmE0NTNlN2ZlM2NmNDI2OWI2OTgzMDkwMWMyZGExNWRkZDQ4NzAxYjMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUuaApAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5
cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxNCBDb2xsYWJvcmEgTHRkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQpAQCAtMzQsNiArMzUsMTAgQEAKICNpbmNsdWRl
ICJJbnB1dFR5cGUuaCIKICNpbmNsdWRlICJTcGluQnV0dG9uRWxlbWVudC5oIgogCisjaWYgRU5B
QkxFKERBVEFMSVNUX0VMRU1FTlQpCisjaW5jbHVkZSAiU3VnZ2VzdGlvbkNob29zZXIuaCIKKyNl
bmRpZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEZvcm1EYXRhTGlzdDsKQEAgLTQx
LDcgKzQ2LDExIEBAIGNsYXNzIFRleHRDb250cm9sSW5uZXJUZXh0RWxlbWVudDsKIAogLy8gVGhl
IGNsYXNzIHJlcHJlc2VudHMgdHlwZXMgb2Ygd2hpY2ggVUkgY29udGFpbiB0ZXh0IGZpZWxkcy4K
IC8vIEl0IHN1cHBvcnRzIG5vdCBvbmx5IHRoZSB0eXBlcyBmb3IgQmFzZVRleHRJbnB1dFR5cGUg
YnV0IGFsc28gdHlwZT1udW1iZXIuCi1jbGFzcyBUZXh0RmllbGRJbnB1dFR5cGUgOiBwdWJsaWMg
SW5wdXRUeXBlLCBwcm90ZWN0ZWQgU3BpbkJ1dHRvbkVsZW1lbnQ6OlNwaW5CdXR0b25Pd25lciB7
CitjbGFzcyBUZXh0RmllbGRJbnB1dFR5cGUgOiBwdWJsaWMgSW5wdXRUeXBlLCBwcm90ZWN0ZWQg
U3BpbkJ1dHRvbkVsZW1lbnQ6OlNwaW5CdXR0b25Pd25lcgorI2lmIEVOQUJMRShEQVRBTElTVF9F
TEVNRU5UKQorICAgICwgcHJvdGVjdGVkIFN1Z2dlc3Rpb25DaG9vc2VyOjpTdWdnZXN0aW9uQ2hv
b3NlckNsaWVudAorI2VuZGlmCit7CiBwcm90ZWN0ZWQ6CiAgICAgZXhwbGljaXQgVGV4dEZpZWxk
SW5wdXRUeXBlKEhUTUxJbnB1dEVsZW1lbnQmKTsKICAgICB2aXJ0dWFsIH5UZXh0RmllbGRJbnB1
dFR5cGUoKTsKQEAgLTEwNiw2ICsxMTUsMTYgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQg
c3BpbkJ1dHRvblN0ZXBEb3duKCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHNwaW5CdXR0
b25TdGVwVXAoKSBvdmVycmlkZTsKIAorI2lmIEVOQUJMRShEQVRBTElTVF9FTEVNRU5UKQorICAg
IC8vIFN1Z2dlc3Rpb25DaG9vc2VyOjpTdWdnZXN0aW9uQ2hvb3NlckNsaWVudCBmdW5jdGlvbnMu
CisgICAgdmlydHVhbCBTdHJpbmcgcHJlZml4KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdmlydHVh
bCBWZWN0b3I8U3RyaW5nPiBzdWdnZXN0aW9ucyhib29sIG5lZWRGdWxsTGlzdCkgY29uc3Qgb3Zl
cnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGFkZFN1Z2dlc3Rpb25Db250YWluZXJUb1NoYWRvd1Jv
b3QoSFRNTEVsZW1lbnQqKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlU3VnZ2Vz
dGlvbkNvbnRhaW5lckZyb21TaGFkb3dSb290KEhUTUxFbGVtZW50Kikgb3ZlcnJpZGU7CisgICAg
dmlydHVhbCB2b2lkIGRpZENob29zZVZhbHVlKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOworICAg
IHZpcnR1YWwgYm9vbCBzaG91bGRTaG93U3VnZ2VzdGlvbnMoKSBvdmVycmlkZTsKKyNlbmRpZgor
CiAgICAgUmVmUHRyPEhUTUxFbGVtZW50PiBtX2NvbnRhaW5lcjsKICAgICBSZWZQdHI8SFRNTEVs
ZW1lbnQ+IG1faW5uZXJCbG9jazsKICAgICBSZWZQdHI8VGV4dENvbnRyb2xJbm5lclRleHRFbGVt
ZW50PiBtX2lubmVyVGV4dDsKQEAgLTExNCw2ICsxMzMsOSBAQCBwcml2YXRlOgogI2lmIEVOQUJM
RShJTlBVVF9TUEVFQ0gpCiAgICAgUmVmUHRyPEhUTUxFbGVtZW50PiBtX3NwZWVjaEJ1dHRvbjsK
ICNlbmRpZgorI2lmIEVOQUJMRShEQVRBTElTVF9FTEVNRU5UKQorICAgIE93blB0cjxTdWdnZXN0
aW9uQ2hvb3Nlcj4gbV9zdWdnZXN0aW9uQ2hvb3NlcjsKKyNlbmRpZgogfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU3Vn
Z2VzdGlvbkNob29zZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU3VnZ2VzdGlv
bkNob29zZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ1M2I1YTQ4MDk0ZmE1MzI4ZWVhOTE3MDNlZjQzMmM0
ODYwNmQ1YzUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9T
dWdnZXN0aW9uQ2hvb3Nlci5jcHAKQEAgLTAsMCArMSwyMDEgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTQgQ29sbGFib3JhIEx0ZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9u
LgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVz
IG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElT
IiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICog
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiU3VnZ2VzdGlvbkNob29zZXIuaCIKKworI2lmIEVOQUJMRShEQVRBTElT
VF9FTEVNRU5UKQorCisjaW5jbHVkZSAiS2V5Ym9hcmRFdmVudC5oIgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK1Bhc3NPd25QdHI8U3VnZ2VzdGlvbkNob29zZXI+IFN1Z2dlc3Rpb25DaG9vc2Vy
OjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBTdWdnZXN0aW9uQ2hvb3NlckNsaWVudCYgY2xp
ZW50KQoreworICAgIHJldHVybiBhZG9wdFB0cihuZXcgU3VnZ2VzdGlvbkNob29zZXIoZG9jdW1l
bnQsIGNsaWVudCkpOworfQorCitTdWdnZXN0aW9uQ2hvb3Nlcjo6U3VnZ2VzdGlvbkNob29zZXIo
RG9jdW1lbnQmIGRvY3VtZW50LCBTdWdnZXN0aW9uQ2hvb3NlckNsaWVudCYgY2xpZW50KQorICAg
IDogbV9kb2N1bWVudChkb2N1bWVudCkKKyAgICAsIG1fY2xpZW50KGNsaWVudCkKKyAgICAsIG1f
Y29udGFpbmVyKG51bGxwdHIpCisgICAgLCBtX2ZvY3VzZWRTdWdnZXN0aW9uRWxlbWVudChudWxs
cHRyKQoreworfQorCitTdWdnZXN0aW9uQ2hvb3Nlcjo6flN1Z2dlc3Rpb25DaG9vc2VyKCkKK3sK
KyAgICBoaWRlKCk7Cit9CisKK1Bhc3NSZWZQdHI8SFRNTEVsZW1lbnQ+IFN1Z2dlc3Rpb25DaG9v
c2VyOjpjcmVhdGVTdWdnZXN0aW9uQ29udGFpbmVyKCkKK3sKKyAgICBSZWZQdHI8SFRNTEVsZW1l
bnQ+IGNvbnRhaW5lciA9IEhUTUxEaXZFbGVtZW50OjpjcmVhdGUobV9kb2N1bWVudCk7CisgICAg
Y29udGFpbmVyLT5zZXRQc2V1ZG8oIi13ZWJraXQtc3VnZ2VzdGlvbi1jb250YWluZXIiKTsKKwor
ICAgIHJldHVybiBjb250YWluZXIucmVsZWFzZSgpOworfQorCit2b2lkIFN1Z2dlc3Rpb25DaG9v
c2VyOjphZGRTdWdnZXN0aW9uc1RvQ29udGFpbmVyKFZlY3RvcjxTdHJpbmc+JiBzdWdnZXN0aW9u
cykKK3sKKyAgICBtX2NvbnRhaW5lci0+cmVtb3ZlQ2hpbGRyZW4oKTsKKworICAgIGludCBwcmVm
aXhMZW5ndGggPSBtX2NsaWVudC5wcmVmaXgoKS5sZW5ndGgoKTsKKyAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgc3VnZ2VzdGlvbnMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgUmVmUHRyPFN1
Z2dlc3Rpb25FbGVtZW50PiBzdWdnZXN0aW9uRWxlbWVudCA9IFN1Z2dlc3Rpb25FbGVtZW50Ojpj
cmVhdGUodGhpcywgc3VnZ2VzdGlvbnNbaV0sIG1fZG9jdW1lbnQpOworICAgICAgICBzdWdnZXN0
aW9uRWxlbWVudC0+dXBkYXRlQXBwZWFyYW5jZShwcmVmaXhMZW5ndGgpOworCisgICAgICAgIG1f
Y29udGFpbmVyLT5hcHBlbmRDaGlsZChzdWdnZXN0aW9uRWxlbWVudC5yZWxlYXNlKCksIEFTU0VS
VF9OT19FWENFUFRJT04pOworICAgIH0KK30KKwordm9pZCBTdWdnZXN0aW9uQ2hvb3Nlcjo6c2hv
dyhib29sIHNob3dGdWxsTGlzdCkKK3sKKyAgICBpZiAoIW1fY2xpZW50LnNob3VsZFNob3dTdWdn
ZXN0aW9ucygpKQorICAgICAgICByZXR1cm47CisKKyAgICB1bmZvY3VzKCk7CisKKyAgICBWZWN0
b3I8U3RyaW5nPiBzdWdnZXN0aW9ucyA9IG1fY2xpZW50LnN1Z2dlc3Rpb25zKHNob3dGdWxsTGlz
dCk7CisgICAgaWYgKHN1Z2dlc3Rpb25zLmlzRW1wdHkoKSkgeworICAgICAgICBoaWRlKCk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoIW1fY29udGFpbmVyKSB7CisgICAgICAg
IG1fY29udGFpbmVyID0gY3JlYXRlU3VnZ2VzdGlvbkNvbnRhaW5lcigpOworICAgICAgICBtX2Ns
aWVudC5hZGRTdWdnZXN0aW9uQ29udGFpbmVyVG9TaGFkb3dSb290KG1fY29udGFpbmVyLmdldCgp
KTsKKyAgICB9CisKKyAgICBhZGRTdWdnZXN0aW9uc1RvQ29udGFpbmVyKHN1Z2dlc3Rpb25zKTsK
K30KKwordm9pZCBTdWdnZXN0aW9uQ2hvb3Nlcjo6aGlkZSgpCit7CisgICAgaWYgKG1fY29udGFp
bmVyKSB7CisgICAgICAgIG1fY2xpZW50LnJlbW92ZVN1Z2dlc3Rpb25Db250YWluZXJGcm9tU2hh
ZG93Um9vdChtX2NvbnRhaW5lci5nZXQoKSk7CisgICAgICAgIG1fY29udGFpbmVyID0gMDsKKyAg
ICB9CisgICAgaWYgKG1fZm9jdXNlZFN1Z2dlc3Rpb25FbGVtZW50KQorICAgICAgICBtX2ZvY3Vz
ZWRTdWdnZXN0aW9uRWxlbWVudCA9IG51bGxwdHI7Cit9CisKK2Jvb2wgU3VnZ2VzdGlvbkNob29z
ZXI6OnNlbGVjdChTdWdnZXN0aW9uRWxlbWVudCogc3VnZ2VzdGlvbkVsZW1lbnQpCit7CisgICAg
aWYgKCFzdWdnZXN0aW9uRWxlbWVudCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgbV9j
bGllbnQuZGlkQ2hvb3NlVmFsdWUoc3VnZ2VzdGlvbkVsZW1lbnQtPnZhbHVlKCkpOworICAgIGhp
ZGUoKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBTdWdnZXN0aW9uQ2hvb3Nlcjo6Zm9j
dXMoRm9jdXNEaXJlY3Rpb24gZGlyZWN0aW9uKQoreworICAgIFN1Z2dlc3Rpb25FbGVtZW50KiBu
ZXdGb2N1c2VkU3VnZ2VzdGlvbkVsZW1lbnQgPSBtX2ZvY3VzZWRTdWdnZXN0aW9uRWxlbWVudDsK
KworICAgIHVuZm9jdXMoKTsKKworICAgIHN3aXRjaCAoZGlyZWN0aW9uKSB7CisgICAgY2FzZSBG
b2N1c0RpcmVjdGlvbkZvcndhcmQ6CisgICAgY2FzZSBGb2N1c0RpcmVjdGlvbkRvd246CisgICAg
ICAgIGlmICghbmV3Rm9jdXNlZFN1Z2dlc3Rpb25FbGVtZW50KQorICAgICAgICAgICAgbmV3Rm9j
dXNlZFN1Z2dlc3Rpb25FbGVtZW50ID0gdG9TdWdnZXN0aW9uRWxlbWVudChtX2NvbnRhaW5lci0+
Zmlyc3RDaGlsZCgpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbmV3Rm9jdXNlZFN1Z2dl
c3Rpb25FbGVtZW50ID0gdG9TdWdnZXN0aW9uRWxlbWVudChuZXdGb2N1c2VkU3VnZ2VzdGlvbkVs
ZW1lbnQtPm5leHRTaWJsaW5nKCkgPyBuZXdGb2N1c2VkU3VnZ2VzdGlvbkVsZW1lbnQtPm5leHRT
aWJsaW5nKCkgOiBtX2NvbnRhaW5lci0+Zmlyc3RDaGlsZCgpKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgY2FzZSBGb2N1c0RpcmVjdGlvbkJhY2t3YXJkOgorICAgIGNhc2UgRm9jdXNEaXJlY3Rpb25V
cDoKKyAgICAgICAgaWYgKCFuZXdGb2N1c2VkU3VnZ2VzdGlvbkVsZW1lbnQpCisgICAgICAgICAg
ICBuZXdGb2N1c2VkU3VnZ2VzdGlvbkVsZW1lbnQgPSB0b1N1Z2dlc3Rpb25FbGVtZW50KG1fY29u
dGFpbmVyLT5sYXN0Q2hpbGQoKSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG5ld0ZvY3Vz
ZWRTdWdnZXN0aW9uRWxlbWVudCA9IHRvU3VnZ2VzdGlvbkVsZW1lbnQobmV3Rm9jdXNlZFN1Z2dl
c3Rpb25FbGVtZW50LT5wcmV2aW91c1NpYmxpbmcoKSA/IG5ld0ZvY3VzZWRTdWdnZXN0aW9uRWxl
bWVudC0+cHJldmlvdXNTaWJsaW5nKCkgOiBtX2NvbnRhaW5lci0+bGFzdENoaWxkKCkpOworICAg
ICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyAgICB9CisKKyAgICBmb2N1cyhuZXdGb2N1c2VkU3VnZ2VzdGlvbkVsZW1lbnQpOworfQorCit2
b2lkIFN1Z2dlc3Rpb25DaG9vc2VyOjpmb2N1cyhTdWdnZXN0aW9uRWxlbWVudCogc3VnZ2VzdGlv
bkVsZW1lbnQpCit7CisgICAgaWYgKHN1Z2dlc3Rpb25FbGVtZW50ICYmIHN1Z2dlc3Rpb25FbGVt
ZW50ID09IG1fZm9jdXNlZFN1Z2dlc3Rpb25FbGVtZW50KQorICAgICAgICByZXR1cm47CisKKyAg
ICB1bmZvY3VzKCk7CisKKyAgICBtX2ZvY3VzZWRTdWdnZXN0aW9uRWxlbWVudCA9IHN1Z2dlc3Rp
b25FbGVtZW50OworICAgIG1fZm9jdXNlZFN1Z2dlc3Rpb25FbGVtZW50LT5mb2N1c2VkKCk7Cit9
CisKK3ZvaWQgU3VnZ2VzdGlvbkNob29zZXI6OnVuZm9jdXMoKQoreworICAgIGlmICghbV9mb2N1
c2VkU3VnZ2VzdGlvbkVsZW1lbnQpCisgICAgICAgIHJldHVybjsKKworICAgIG1fZm9jdXNlZFN1
Z2dlc3Rpb25FbGVtZW50LT51bmZvY3VzZWQoKTsKKyAgICBtX2ZvY3VzZWRTdWdnZXN0aW9uRWxl
bWVudCA9IG51bGxwdHI7Cit9CisKK3ZvaWQgU3VnZ2VzdGlvbkNob29zZXI6OmhhbmRsZUtleWRv
d25FdmVudChLZXlib2FyZEV2ZW50KiBldmVudCkKK3sKKyAgICBpZiAoIWV2ZW50IHx8ICFtX2Ns
aWVudC5zaG91bGRTaG93U3VnZ2VzdGlvbnMoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgYm9v
bCBoYW5kbGVkID0gZmFsc2U7CisgICAgU3RyaW5nIGtleSA9IGV2ZW50LT5rZXlJZGVudGlmaWVy
KCk7CisgICAgaWYgKG1fY29udGFpbmVyICYmIG1fY29udGFpbmVyLT5oYXNDaGlsZE5vZGVzKCkp
IHsKKyAgICAgICAgaWYgKGtleSA9PSAiVXAiKSB7CisgICAgICAgICAgICBmb2N1cyhGb2N1c0Rp
cmVjdGlvbkJhY2t3YXJkKTsKKyAgICAgICAgICAgIGhhbmRsZWQgPSB0cnVlOworICAgICAgICB9
IGVsc2UgaWYgKGtleSA9PSAiRG93biIpIHsKKyAgICAgICAgICAgIGZvY3VzKEZvY3VzRGlyZWN0
aW9uRm9yd2FyZCk7CisgICAgICAgICAgICBoYW5kbGVkID0gdHJ1ZTsKKyAgICAgICAgfSBlbHNl
IGlmIChrZXkgPT0gIlUrMDAxQiIpIHsgLy8gQ2FuY2VsCisgICAgICAgICAgICBoaWRlKCk7Cisg
ICAgICAgICAgICBoYW5kbGVkID0gdHJ1ZTsKKyAgICAgICAgfSBlbHNlIGlmIChrZXkgPT0gIlUr
MDAwOSIpIC8vIFRhYgorICAgICAgICAgICAgc2VsZWN0KG1fZm9jdXNlZFN1Z2dlc3Rpb25FbGVt
ZW50KTsKKyAgICAgICAgZWxzZSBpZiAoa2V5ID09ICJFbnRlciIpCisgICAgICAgICAgICBoYW5k
bGVkID0gc2VsZWN0KG1fZm9jdXNlZFN1Z2dlc3Rpb25FbGVtZW50KTsKKyAgICB9IGVsc2Ugewor
ICAgICAgICBpZiAoa2V5ID09ICJVcCIgfHwga2V5ID09ICJEb3duIikgeworICAgICAgICAgICAg
c2hvdyh0cnVlKTsKKyAgICAgICAgICAgIGhhbmRsZWQgPSB0cnVlOworICAgICAgICB9CisgICAg
fQorCisgICAgaWYgKGhhbmRsZWQpCisgICAgICAgIGV2ZW50LT5zZXREZWZhdWx0SGFuZGxlZCgp
OworfQorCit9CisjZW5kaWYgLy8gRU5BQkxFKERBVEFMSVNUX0VMRU1FTlQpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TdWdnZXN0aW9uQ2hvb3Nlci5oIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9zaGFkb3cvU3VnZ2VzdGlvbkNob29zZXIuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMzcz
ZmE3ZDU3MjIzNTQwYjQ4MWM4NDFkNzE4ZDUwYjZjN2UzZTdlCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU3VnZ2VzdGlvbkNob29zZXIuaApAQCAtMCwwICsx
LDkxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IENvbGxhYm9yYSBMdGQuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBv
ZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAg
IGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKgorICovCisKKyNpZm5kZWYgU3VnZ2VzdGlvbkNob29zZXJfaAorI2RlZmluZSBTdWdn
ZXN0aW9uQ2hvb3Nlcl9oCisKKyNpZiBFTkFCTEUoREFUQUxJU1RfRUxFTUVOVCkKKworI2luY2x1
ZGUgIkZvY3VzRGlyZWN0aW9uLmgiCisjaW5jbHVkZSAiU3VnZ2VzdGlvbkVsZW1lbnQuaCIKKyNp
bmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitj
bGFzcyBTdWdnZXN0aW9uQ2hvb3NlckNsaWVudDsKKworY2xhc3MgU3VnZ2VzdGlvbkNob29zZXIg
OiBwdWJsaWMgU3VnZ2VzdGlvbkVsZW1lbnQ6OlN1Z2dlc3Rpb25FbGVtZW50T3duZXIgeworcHVi
bGljOgorICAgIGNsYXNzIFN1Z2dlc3Rpb25DaG9vc2VyQ2xpZW50IHsKKyAgICBwdWJsaWM6Cisg
ICAgICAgIHZpcnR1YWwgflN1Z2dlc3Rpb25DaG9vc2VyQ2xpZW50KCkgeyB9CisgICAgICAgIHZp
cnR1YWwgU3RyaW5nIHByZWZpeCgpIGNvbnN0ID0gMDsKKyAgICAgICAgdmlydHVhbCBWZWN0b3I8
U3RyaW5nPiBzdWdnZXN0aW9ucyhib29sIG5lZWRGdWxsTGlzdCkgY29uc3QgPSAwOworICAgICAg
ICB2aXJ0dWFsIHZvaWQgYWRkU3VnZ2VzdGlvbkNvbnRhaW5lclRvU2hhZG93Um9vdChIVE1MRWxl
bWVudCopID0gMDsKKyAgICAgICAgdmlydHVhbCB2b2lkIHJlbW92ZVN1Z2dlc3Rpb25Db250YWlu
ZXJGcm9tU2hhZG93Um9vdChIVE1MRWxlbWVudCopID0gMDsKKyAgICAgICAgdmlydHVhbCB2b2lk
IGRpZENob29zZVZhbHVlKGNvbnN0IFN0cmluZyYpID0gMDsKKyAgICAgICAgdmlydHVhbCBib29s
IHNob3VsZFNob3dTdWdnZXN0aW9ucygpID0gMDsKKyAgICB9OworCisgICAgdmlydHVhbCB+U3Vn
Z2VzdGlvbkNob29zZXIoKTsKKworICAgIHN0YXRpYyBQYXNzT3duUHRyPFN1Z2dlc3Rpb25DaG9v
c2VyPiBjcmVhdGUoRG9jdW1lbnQmLCBTdWdnZXN0aW9uQ2hvb3NlckNsaWVudCYpOworCisgICAg
dmlydHVhbCBTdWdnZXN0aW9uRWxlbWVudCogZm9jdXNlZFN1Z2dlc3Rpb25FbGVtZW50KCkgY29u
c3QgeyByZXR1cm4gbV9mb2N1c2VkU3VnZ2VzdGlvbkVsZW1lbnQ7IH0KKworICAgIHZpcnR1YWwg
dm9pZCBzaG93KGJvb2wgc2hvd0Z1bGxMaXN0KTsKKyAgICB2aXJ0dWFsIHZvaWQgaGlkZSgpOwor
CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPEhUTUxFbGVtZW50PiBjcmVhdGVTdWdnZXN0aW9uQ29u
dGFpbmVyKCk7CisgICAgdmlydHVhbCB2b2lkIGFkZFN1Z2dlc3Rpb25zVG9Db250YWluZXIoVmVj
dG9yPFN0cmluZz4mKTsKKworICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVLZXlkb3duRXZlbnQoS2V5
Ym9hcmRFdmVudCopOworCisgICAgdmlydHVhbCB2b2lkIGZvY3VzKEZvY3VzRGlyZWN0aW9uKTsK
KworICAgIC8vIFN1Z2dlc3Rpb25FbGVtZW50T3duZXIKKyAgICB2aXJ0dWFsIGJvb2wgc2VsZWN0
KFN1Z2dlc3Rpb25FbGVtZW50Kikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGZvY3VzKFN1
Z2dlc3Rpb25FbGVtZW50Kikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHVuZm9jdXMoKSBv
dmVycmlkZTsKKworcHJvdGVjdGVkOgorICAgIGV4cGxpY2l0IFN1Z2dlc3Rpb25DaG9vc2VyKERv
Y3VtZW50JiwgU3VnZ2VzdGlvbkNob29zZXJDbGllbnQmKTsKKworcHJpdmF0ZToKKyAgICBEb2N1
bWVudCYgbV9kb2N1bWVudDsKKyAgICBTdWdnZXN0aW9uQ2hvb3NlckNsaWVudCYgbV9jbGllbnQ7
CisgICAgUmVmUHRyPEhUTUxFbGVtZW50PiBtX2NvbnRhaW5lcjsKKyAgICBTdWdnZXN0aW9uRWxl
bWVudCogbV9mb2N1c2VkU3VnZ2VzdGlvbkVsZW1lbnQ7Cit9OworCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoREFUQUxJU1RfRUxFTUVOVCkKKworI2VuZGlmIC8v
IFRleHRDaG9vc2VyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1N1
Z2dlc3Rpb25FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1N1Z2dlc3Rp
b25FbGVtZW50LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hMWJjMjhlMjFiOGVlZGFhOGMxZmY4Nzk0OGVmMzQz
MDY2Yjk3Y2E0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cv
U3VnZ2VzdGlvbkVsZW1lbnQuY3BwCkBAIC0wLDAgKzEsOTkgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTQgQ29sbGFib3JhIEx0ZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9u
LgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVz
IG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElT
IiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICog
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiU3VnZ2VzdGlvbkVsZW1lbnQuaCIKKworI2lmIEVOQUJMRShEQVRBTElT
VF9FTEVNRU5UKQorCisjaW5jbHVkZSAiRnJhbWUuaCIKKyNpbmNsdWRlICJIVE1MTmFtZXMuaCIK
KyNpbmNsdWRlICJIVE1MU3BhbkVsZW1lbnQuaCIKKyNpbmNsdWRlICJNb3VzZUV2ZW50LmgiCisj
aW5jbHVkZSAiUGxhdGZvcm1Nb3VzZUV2ZW50LmgiCisjaW5jbHVkZSAiVGV4dC5oIgorI2luY2x1
ZGUgIlRvdWNoRXZlbnQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitTdWdnZXN0aW9uRWxl
bWVudDo6U3VnZ2VzdGlvbkVsZW1lbnQoU3VnZ2VzdGlvbkVsZW1lbnRPd25lciogb3duZXIsIFN0
cmluZyYgdmFsdWUsIGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIERvY3VtZW50JiBkb2N1bWVu
dCkKKyAgICA6IEhUTUxEaXZFbGVtZW50KG5hbWUsIGRvY3VtZW50KQorICAgICwgbV9vd25lcihv
d25lcikKKyAgICAsIG1fdmFsdWUodmFsdWUpCit7CisgICAgc2V0UHNldWRvKCItd2Via2l0LXN1
Z2dlc3Rpb24tZWxlbWVudCIpOworfQorCitTdWdnZXN0aW9uRWxlbWVudDo6flN1Z2dlc3Rpb25F
bGVtZW50KCkKK3sKK30KKworUGFzc1JlZlB0cjxTdWdnZXN0aW9uRWxlbWVudD4gU3VnZ2VzdGlv
bkVsZW1lbnQ6OmNyZWF0ZShTdWdnZXN0aW9uRWxlbWVudE93bmVyKiBvd25lciwgU3RyaW5nJiB2
YWx1ZSwgRG9jdW1lbnQmIGRvY3VtZW50KQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcgU3Vn
Z2VzdGlvbkVsZW1lbnQob3duZXIsIHZhbHVlLCBIVE1MTmFtZXM6OmRpdlRhZywgZG9jdW1lbnQp
KTsKK30KKwordm9pZCBTdWdnZXN0aW9uRWxlbWVudDo6dXBkYXRlQXBwZWFyYW5jZShpbnQgcHJl
Zml4TGVuZ3RoKQoreworICAgIFJlZlB0cjxIVE1MU3BhbkVsZW1lbnQ+IHByZWZpeEVsZW1lbnQg
PSBIVE1MU3BhbkVsZW1lbnQ6OmNyZWF0ZShIVE1MTmFtZXM6OnNwYW5UYWcsIGRvY3VtZW50KCkp
OworICAgIHByZWZpeEVsZW1lbnQtPmFwcGVuZENoaWxkKFRleHQ6OmNyZWF0ZShkb2N1bWVudCgp
LCBtX3ZhbHVlLnN1YnN0cmluZygwLCBwcmVmaXhMZW5ndGgpKSk7CisgICAgcHJlZml4RWxlbWVu
dC0+c2V0UHNldWRvKCItd2Via2l0LXN1Z2dlc3Rpb24tcHJlZml4LXRleHQiKTsKKworICAgIHRo
aXMtPmFwcGVuZENoaWxkKHByZWZpeEVsZW1lbnQucmVsZWFzZSgpLCBBU1NFUlRfTk9fRVhDRVBU
SU9OKTsKKyAgICB0aGlzLT5hcHBlbmRDaGlsZChUZXh0OjpjcmVhdGUoZG9jdW1lbnQoKSwgbV92
YWx1ZS5zdWJzdHJpbmcocHJlZml4TGVuZ3RoKSksIEFTU0VSVF9OT19FWENFUFRJT04pOworfQor
Cit2b2lkIFN1Z2dlc3Rpb25FbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50KiBldmVu
dCkKK3sKKyAgICBpZiAoZXZlbnQtPmlzTW91c2VFdmVudCgpKSB7CisgICAgICAgIGlmIChldmVu
dC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5tb3VzZWRvd25FdmVudAorICAgICAgICAgICAgJiYg
KHN0YXRpY19jYXN0PE1vdXNlRXZlbnQqPihldmVudCktPmJ1dHRvbigpICE9IFJpZ2h0QnV0dG9u
KQorICAgICAgICAgICAgJiYgZG9jdW1lbnQoKS5mcmFtZSgpKQorICAgICAgICAgICAgbV9vd25l
ci0+c2VsZWN0KHRoaXMpOworICAgICAgICBlbHNlIGlmIChldmVudC0+dHlwZSgpID09IGV2ZW50
TmFtZXMoKS5tb3VzZW1vdmVFdmVudCkKKyAgICAgICAgICAgIG1fb3duZXItPmZvY3VzKHRoaXMp
OworICAgICAgICBlbHNlIGlmIChldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5tb3VzZW91
dEV2ZW50KQorICAgICAgICAgICAgbV9vd25lci0+dW5mb2N1cygpOworICAgIH0KK30KKwordm9p
ZCBTdWdnZXN0aW9uRWxlbWVudDo6Zm9jdXNlZCgpCit7CisgICAgc2V0UHNldWRvKCItd2Via2l0
LXN1Z2dlc3Rpb24tZWxlbWVudC1mb2N1c2VkIik7Cit9CisKK3ZvaWQgU3VnZ2VzdGlvbkVsZW1l
bnQ6OnVuZm9jdXNlZCgpCit7CisgICAgc2V0UHNldWRvKCItd2Via2l0LXN1Z2dlc3Rpb24tZWxl
bWVudCIpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUo
REFUQUxJU1RfRUxFTUVOVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93
L1N1Z2dlc3Rpb25FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TdWdnZXN0
aW9uRWxlbWVudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQzMWNiMGU2ZjRkMzgwN2IyM2Q5YjJhMjNkYWI0ZDZh
YjU2ZmY5MTAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9T
dWdnZXN0aW9uRWxlbWVudC5oCkBAIC0wLDAgKzEsNzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTQgQ29sbGFib3JhIEx0ZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgor
ICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9m
IGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBw
cm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QK
KyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFN1Z2dlc3Rpb25F
bGVtZW50X2gKKyNkZWZpbmUgU3VnZ2VzdGlvbkVsZW1lbnRfaAorCisjaWYgRU5BQkxFKERBVEFM
SVNUX0VMRU1FTlQpCisKKyNpbmNsdWRlICJIVE1MRGl2RWxlbWVudC5oIgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK2NsYXNzIEV2ZW50OworY2xhc3MgU3VnZ2VzdGlvbkVsZW1lbnRPd25lcjsK
KworY2xhc3MgU3VnZ2VzdGlvbkVsZW1lbnQgOiBwdWJsaWMgSFRNTERpdkVsZW1lbnQgeworcHVi
bGljOgorICAgIGNsYXNzIFN1Z2dlc3Rpb25FbGVtZW50T3duZXIgeworICAgIHB1YmxpYzoKKyAg
ICAgICAgdmlydHVhbCB+U3VnZ2VzdGlvbkVsZW1lbnRPd25lcigpIHsgfQorICAgICAgICB2aXJ0
dWFsIGJvb2wgc2VsZWN0KFN1Z2dlc3Rpb25FbGVtZW50KikgPSAwOworICAgICAgICB2aXJ0dWFs
IHZvaWQgZm9jdXMoU3VnZ2VzdGlvbkVsZW1lbnQqKSA9IDA7CisgICAgICAgIHZpcnR1YWwgdm9p
ZCB1bmZvY3VzKCkgPSAwOworICAgIH07CisKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdWdnZXN0
aW9uRWxlbWVudD4gY3JlYXRlKFN1Z2dlc3Rpb25FbGVtZW50T3duZXIqLCBTdHJpbmcmLCBEb2N1
bWVudCYpOworICAgIHZpcnR1YWwgflN1Z2dlc3Rpb25FbGVtZW50KCk7CisKKyAgICB2b2lkIGZv
Y3VzZWQoKTsKKyAgICB2b2lkIHVuZm9jdXNlZCgpOworCisgICAgdm9pZCB1cGRhdGVBcHBlYXJh
bmNlKGludCBwcmVmaXhMZW5ndGgpOworCisgICAgU3RyaW5nIHZhbHVlKCkgY29uc3QgeyByZXR1
cm4gbV92YWx1ZTsgfQorCitwcml2YXRlOgorICAgIFN1Z2dlc3Rpb25FbGVtZW50KFN1Z2dlc3Rp
b25FbGVtZW50T3duZXIqLCBTdHJpbmcmLCBjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQm
KTsKKworICAgIHZpcnR1YWwgdm9pZCBkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50Kik7CisKKyAg
ICBTdWdnZXN0aW9uRWxlbWVudE93bmVyKiBtX293bmVyOworICAgIFN0cmluZyBtX3ZhbHVlOwor
fTsKKworTk9ERV9UWVBFX0NBU1RTKFN1Z2dlc3Rpb25FbGVtZW50KQorCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoREFUQUxJU1RfRUxFTUVOVCkKKworI2VuZGlm
IC8vIFN1Z2dlc3Rpb25FbGVtZW50X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2d0ay9SZW5kZXJUaGVtZUd0ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsv
UmVuZGVyVGhlbWVHdGsuY3BwCmluZGV4IDYyOWU4ZDZiZTE5NTE4MzM5MDNmNTZmNTBkMGY5MDE5
MjgzNjkwZDAuLjRjMWI4NGU3NWUwZDM3YTliOGRiOWU1YjMzOTcwMTI0NjczNWI0MWEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9SZW5kZXJUaGVtZUd0ay5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1JlbmRlclRoZW1lR3RrLmNwcApAQCAtMSw3
ICsxLDcgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDcgQXBwbGUgSW5jLgogICogQ29weXJp
Z2h0IChDKSAyMDA3IEFscCBUb2tlciA8YWxwQGF0b2tlci5jb20+Ci0gKiBDb3B5cmlnaHQgKEMp
IDIwMDggQ29sbGFib3JhIEx0ZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAxNCBDb2xsYWJv
cmEgTHRkLgogICogQ29weXJpZ2h0IChDKSAyMDA5IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2Vu
CiAgKiBDb3B5cmlnaHQgKEMpIDIwMTAgSWdhbGlhIFMuTC4KICAqCkBAIC01MCw2ICs1MCwxMCBA
QAogI2luY2x1ZGUgPGd0ay9ndGsuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAK
KyNpZiBFTkFCTEUoREFUQUxJU1RfRUxFTUVOVCkKKyNpbmNsdWRlICJJbnB1dFR5cGVOYW1lcy5o
IgorI2VuZGlmCisKICNpZiBFTkFCTEUoUFJPR1JFU1NfRUxFTUVOVCkKICNpbmNsdWRlICJSZW5k
ZXJQcm9ncmVzcy5oIgogI2VuZGlmCkBAIC00NzQsNiArNDc4LDExIEBAIHZvaWQgUmVuZGVyVGhl
bWVHdGs6OnBsYXRmb3JtQ29sb3JzRGlkQ2hhbmdlKCkKICAgICBSZW5kZXJUaGVtZTo6cGxhdGZv
cm1Db2xvcnNEaWRDaGFuZ2UoKTsKIH0KIAorU3RyaW5nIFJlbmRlclRoZW1lR3RrOjpleHRyYURl
ZmF1bHRTdHlsZVNoZWV0KCkKK3sKKyAgICByZXR1cm4gU3RyaW5nKHRoZW1lR3RrVXNlckFnZW50
U3R5bGVTaGVldCwgc2l6ZW9mKHRoZW1lR3RrVXNlckFnZW50U3R5bGVTaGVldCkpOworfQorCiAj
aWYgRU5BQkxFKFZJREVPKQogU3RyaW5nIFJlbmRlclRoZW1lR3RrOjpleHRyYU1lZGlhQ29udHJv
bHNTdHlsZVNoZWV0KCkKIHsKQEAgLTcyNCw2ICs3MzMsMTYgQEAgaW50IFJlbmRlclRoZW1lR3Rr
OjpzbGlkZXJUaWNrT2Zmc2V0RnJvbVRyYWNrQ2VudGVyKCkgY29uc3QKICAgICAvLyBGSVhNRTog
V2UgbmVlZCB0byBzZXQgdGhpcyB0byB0aGUgcG9zaXRpb24gb2YgdGhlIHRpY2sgbWFya3MuCiAg
ICAgcmV0dXJuIDA7CiB9CisKK2Jvb2wgUmVuZGVyVGhlbWVHdGs6OnN1cHBvcnRzRGF0YUxpc3RV
SShjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUpIGNvbnN0Cit7CisgICAgYm9vbCByZXN1bHQgPSB0
eXBlID09IElucHV0VHlwZU5hbWVzOjp0ZXh0KCkKKyAgICAgICAgfHwgdHlwZSA9PSBJbnB1dFR5
cGVOYW1lczo6c2VhcmNoKCkKKyAgICAgICAgfHwgdHlwZSA9PSBJbnB1dFR5cGVOYW1lczo6dXJs
KCkKKyAgICAgICAgfHwgdHlwZSA9PSBJbnB1dFR5cGVOYW1lczo6ZW1haWwoKTsKKworICAgIHJl
dHVybiByZXN1bHQ7Cit9CiAjZW5kaWYKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3RrL1JlbmRlclRoZW1lR3RrLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
dGsvUmVuZGVyVGhlbWVHdGsuaAppbmRleCA1NWUwMDY3M2ZmMDRmMzkxMGUwMGZjYzIxZDIzZmMz
ZmY3YTAyYmY4Li4xZDdkYTRhYmVmZWY1MTVkZTMyZDFhN2E1Zjk3ZjQ3YjU5YjYwZjcyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUmVuZGVyVGhlbWVHdGsuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUmVuZGVyVGhlbWVHdGsuaApAQCAtODQsNiAr
ODQsOCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIGJvb2wgcG9wc01lbnVCeVNwYWNlT3JSZXR1
cm4oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAKKyAgICB2aXJ0dWFsIFN0cmlu
ZyBleHRyYURlZmF1bHRTdHlsZVNoZWV0KCk7CisKICNpZiBFTkFCTEUoVklERU8pCiAgICAgdmly
dHVhbCBTdHJpbmcgZXh0cmFNZWRpYUNvbnRyb2xzU3R5bGVTaGVldCgpOwogICAgIHZpcnR1YWwg
U3RyaW5nIGZvcm1hdE1lZGlhQ29udHJvbHNDdXJyZW50VGltZShmbG9hdCBjdXJyZW50VGltZSwg
ZmxvYXQgZHVyYXRpb24pIGNvbnN0OwpAQCAtOTcsOSArOTksMTAgQEAgcHVibGljOgogI2lmIEVO
QUJMRShEQVRBTElTVF9FTEVNRU5UKQogICAgIC8vIFJldHVybnMgc2l6ZSBvZiBvbmUgc2xpZGVy
IHRpY2sgbWFyayBmb3IgYSBob3Jpem9udGFsIHRyYWNrLgogICAgIC8vIEZvciB2ZXJ0aWNhbCB0
cmFja3Mgd2Ugcm90YXRlIGl0IGFuZCB1c2UgaXQuIGkuZS4gV2lkdGggaXMgYWx3YXlzIGxlbmd0
aCBhbG9uZyB0aGUgdHJhY2suCi0gICAgdmlydHVhbCBJbnRTaXplIHNsaWRlclRpY2tTaXplKCkg
Y29uc3Q7CisgICAgdmlydHVhbCBJbnRTaXplIHNsaWRlclRpY2tTaXplKCkgY29uc3Qgb3ZlcnJp
ZGU7CiAgICAgLy8gUmV0dXJucyB0aGUgZGlzdGFuY2Ugb2Ygc2xpZGVyIHRpY2sgb3JpZ2luIGZy
b20gdGhlIHNsaWRlciB0cmFjayBjZW50ZXIuCi0gICAgdmlydHVhbCBpbnQgc2xpZGVyVGlja09m
ZnNldEZyb21UcmFja0NlbnRlcigpIGNvbnN0OworICAgIHZpcnR1YWwgaW50IHNsaWRlclRpY2tP
ZmZzZXRGcm9tVHJhY2tDZW50ZXIoKSBjb25zdCBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIGJvb2wg
c3VwcG9ydHNEYXRhTGlzdFVJKGNvbnN0IEF0b21pY1N0cmluZyYpIGNvbnN0IG92ZXJyaWRlOwog
I2VuZGlmCiAKICNpZmRlZiBHVEtfQVBJX1ZFUlNJT05fMgpkaWZmIC0tZ2l0IGEvU291cmNlL2F1
dG90b29scy9QcmludEJ1aWxkQ29uZmlndXJhdGlvbi5tNCBiL1NvdXJjZS9hdXRvdG9vbHMvUHJp
bnRCdWlsZENvbmZpZ3VyYXRpb24ubTQKaW5kZXggNzAyOTk1YmU0YzNmNDFkMWE3NWQ3OTZlNzg3
ZmY2MjlkMzU2YTZhMi4uZDBjNjQ0MWQ0OTFjYzkwM2FhNWY4YmE0NjM5OGY4NzJjZmFjMzg2MSAx
MDA2NDQKLS0tIGEvU291cmNlL2F1dG90b29scy9QcmludEJ1aWxkQ29uZmlndXJhdGlvbi5tNAor
KysgYi9Tb3VyY2UvYXV0b3Rvb2xzL1ByaW50QnVpbGRDb25maWd1cmF0aW9uLm00CkBAIC0yNSw2
ICsyNSw3IEBAIEZlYXR1cmVzOgogIEFjY2VsZXJhdGVkIENvbXBvc2l0aW5nICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDogJGVuYWJsZV9hY2NlbGVyYXRlZF9jb21wb3NpdGluZwog
IEFjY2VsZXJhdGVkIDJEIGNhbnZhcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDogJGVuYWJsZV9hY2NlbGVyYXRlZF9jYW52YXMKICBCYXR0ZXJ5IEFQSSBzdXBwb3J0ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICRlbmFibGVfYmF0dGVyeV9zdGF0dXMK
KyBEYXRhbGlzdCBlbGVtZW50IHN1cHBvcnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA6ICRlbmFibGVfZGF0YWxpc3RfZWxlbWVudAogIEdhbWVwYWQgc3VwcG9ydCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJGVuYWJsZV9nYW1lcGFkCiAgR2VvbG9j
YXRpb24gc3VwcG9ydCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAkZW5h
YmxlX2dlb2xvY2F0aW9uCiAgSFRNTDUgdmlkZW8gZWxlbWVudCBzdXBwb3J0ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgOiAkZW5hYmxlX3ZpZGVvCmRpZmYgLS1naXQgYS9Tb3VyY2UvYXV0
b3Rvb2xzL1JlYWRDb21tYW5kTGluZUFyZ3VtZW50cy5tNCBiL1NvdXJjZS9hdXRvdG9vbHMvUmVh
ZENvbW1hbmRMaW5lQXJndW1lbnRzLm00CmluZGV4IDdkNTZlMTNkNDkzMDllNDVmZGRiN2VhY2Zh
YjBmNWUyNmZhMmM2YjcuLmQzYzZhZmE3MjMzYWIwNGZhZjY2MWY0ZjZhZTY0ZjQzYzg0YjY0OTUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9hdXRvdG9vbHMvUmVhZENvbW1hbmRMaW5lQXJndW1lbnRzLm00
CisrKyBiL1NvdXJjZS9hdXRvdG9vbHMvUmVhZENvbW1hbmRMaW5lQXJndW1lbnRzLm00CkBAIC0y
MjQsNCArMjI0LDkgQEAgQUNfQVJHX0VOQUJMRShbaW50cm9zcGVjdGlvbl0sCiAgICAgW2VuYWJs
ZV9pbnRyb3NwZWN0aW9uPW5vXSkKIEFDX01TR19SRVNVTFQoWyRlbmFibGVfaW50cm9zcGVjdGlv
bl0pCiAKLQorQUNfTVNHX0NIRUNLSU5HKFt3aGV0aGVyIHRvIGVuYWJsZSBEYXRhbGlzdCBlbGVt
ZW50IHN1cHBvcnRdKQorQUNfQVJHX0VOQUJMRShbZGF0YWxpc3QtZWxlbWVudF0sCisgICAgQVNf
SEVMUF9TVFJJTkcoWy0tZW5hYmxlLWRhdGFsaXN0LWVsZW1lbnRdLFtFbmFibGUgRGF0YWxpc3Qg
ZWxlbWVudCAoZGVmYXVsdDogZGlzYWJsZWQpXSksCisgICAgW10sCisgICAgW2VuYWJsZV9kYXRh
bGlzdF9lbGVtZW50PW5vXSkKK0FDX01TR19SRVNVTFQoWyRlbmFibGVfZGF0YWxpc3RfZWxlbWVu
dF0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvYXV0b3Rvb2xzL1NldHVwQXV0b21ha2UubTQgYi9Tb3Vy
Y2UvYXV0b3Rvb2xzL1NldHVwQXV0b21ha2UubTQKaW5kZXggMzUzMmRiMmI1ZTlkYTRkMjdkMTE1
ZjQ5ZGQxNGI5NTFlOWFmMmYwMC4uMjRlN2FjNGFmZDc5NmRhOGMzMGJhNGE5ZjUxOGY0ZGQ3M2I2
OTZjYiAxMDA2NDQKLS0tIGEvU291cmNlL2F1dG90b29scy9TZXR1cEF1dG9tYWtlLm00CisrKyBi
L1NvdXJjZS9hdXRvdG9vbHMvU2V0dXBBdXRvbWFrZS5tNApAQCAtNTMsNiArNTMsNyBAQCBBTV9D
T05ESVRJT05BTChbVVNFX0dMRVMyXSwgW3Rlc3QgIiRlbmFibGVfZ2xlczIiID0gInllcyJdKQog
IyBXZWJLaXQgZmVhdHVyZSBjb25kaXRpb25hbHMuCiBBTV9DT05ESVRJT05BTChbRU5BQkxFX0RF
VkVMT1BFUl9NT0RFXSwgW3Rlc3QgIiRlbmFibGVfZGV2ZWxvcGVyX21vZGUiID0gInllcyJdKQog
QU1fQ09ORElUSU9OQUwoW0VOQUJMRV9ERUJVR10sW3Rlc3QgIiRlbmFibGVfZGVidWciID0gInll
cyJdKQorQU1fQ09ORElUSU9OQUwoW0VOQUJMRV9EQVRBTElTVF9FTEVNRU5UXSxbdGVzdCAiJGVu
YWJsZV9kYXRhbGlzdF9lbGVtZW50IiA9ICJ5ZXMiXSkKIEFNX0NPTkRJVElPTkFMKFtFTkFCTEVf
V0VCR0xdLFt0ZXN0ICIkZW5hYmxlX3dlYmdsIiA9ICJ5ZXMiXSkKIEFNX0NPTkRJVElPTkFMKFtF
TkFCTEVfVklERU9dLFt0ZXN0ICIkZW5hYmxlX3ZpZGVvIiA9ICJ5ZXMiXSkKIEFNX0NPTkRJVElP
TkFMKFtFTkFCTEVfQ09WRVJBR0VdLFt0ZXN0ICIkZW5hYmxlX2NvdmVyYWdlIiA9ICJ5ZXMiXSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9hdXRvdG9vbHMvU2V0dXBXZWJLaXRGZWF0dXJlcy5tNCBiL1Nv
dXJjZS9hdXRvdG9vbHMvU2V0dXBXZWJLaXRGZWF0dXJlcy5tNAppbmRleCA1ZGFmN2I5ZjYyMWU2
NmJmMmIyYzkwOTFkYTZmYjEwZDQ4NDA0NWIxLi5iMDYxMjNmZGJmMDAyZGQ1NjlmMGYxZTk5MmEy
YzliNDFjYmU2MTk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvYXV0b3Rvb2xzL1NldHVwV2ViS2l0RmVh
dHVyZXMubTQKKysrIGIvU291cmNlL2F1dG90b29scy9TZXR1cFdlYktpdEZlYXR1cmVzLm00CkBA
IC03Nyw2ICs3NywxMiBAQCBlbHNlCiAgICAgQ09ORklHVVJBQkxFX0ZFQVRVUkVfREVGSU5FUz0i
JENPTkZJR1VSQUJMRV9GRUFUVVJFX0RFRklORVMgRU5BQkxFX0JBVFRFUllfU1RBVFVTPTAiCiBm
aQogCitpZiB0ZXN0ICIkZW5hYmxlX2RhdGFsaXN0X2VsZW1lbnQiID0gInllcyI7IHRoZW4KKyAg
ICBDT05GSUdVUkFCTEVfRkVBVFVSRV9ERUZJTkVTPSIkQ09ORklHVVJBQkxFX0ZFQVRVUkVfREVG
SU5FUyBFTkFCTEVfREFUQUxJU1RfRUxFTUVOVD0xIgorZWxzZQorICAgIENPTkZJR1VSQUJMRV9G
RUFUVVJFX0RFRklORVM9IiRDT05GSUdVUkFCTEVfRkVBVFVSRV9ERUZJTkVTIEVOQUJMRV9EQVRB
TElTVF9FTEVNRU5UPTAiCitmaQorCiAjIFRoaXMgbGlzdCBvZiBmZWF0dXJlcyByZXByZXNlbnRz
IHRob3NlIHNlbGVjdGVkIGZvciByZWxlYXNlIGJ1aWxkcy4gIElmIHlvdSBhcmUKICMgYWRkaW5n
IGEgbmV3IG9yIHVuc3RhYmxlIGZlYXR1cmUsIHlvdSBzaG91bGQgbWFyayBpdCBkaXNhYmxlZCBo
ZXJlLiBXZSBuZWVkIHRvIHJ1bgogIyB0aGlzIGNvbW1hbmQgbm93IHJhdGhlciB0aGFuIHVzZSBB
Q19DT05GSUdfQ09NTUFORFMgYmVjYXVzZSBhdXRvbWFrZSBydWxlcyBkZXBlbmQKQEAgLTEwMiw3
ICsxMDgsNiBAQCAkc3JjZGlyL1Rvb2xzL2d0ay9nZW5lcmF0ZS1mZWF0dXJlLWRlZmluZXMtZmls
ZXMgJENPTkZJR1VSQUJMRV9GRUFUVVJFX0RFRklORVMgXAogICAgIEVOQUJMRV9DU1MzX0NPTkRJ
VElPTkFMX1JVTEVTPTAgXAogICAgIEVOQUJMRV9DVVNUT01fU0NIRU1FX0hBTkRMRVI9MCBcCiAg
ICAgRU5BQkxFX0RBU0hCT0FSRF9TVVBQT1JUPTAgXAotICAgIEVOQUJMRV9EQVRBTElTVF9FTEVN
RU5UPTAgXAogICAgIEVOQUJMRV9EQVRBX1RSQU5TRkVSX0lURU1TPTAgXAogICAgIEVOQUJMRV9E
RVRBSUxTX0VMRU1FTlQ9MSBcCiAgICAgRU5BQkxFX0RFVklDRV9PUklFTlRBVElPTj0wIFwKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpp
bmRleCA5YThlMWUwMjRlYTY0OWNhOTU5YWM0ZmM1MjEyY2Q0YWRjMjdmMmZiLi4zN2NjMmIyODVm
ZDA3NDJmMzFiOWY4MTBhMzJmODA0ODY5NjZkZTBlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIw
MTQtMDItMDcgIENoYW5nU2VvayBPaCAgPGNoYW5nc2Vvay5vaEBjb2xsYWJvcmEuY29tPgorCisg
ICAgICAgIERhdGFsaXN0IGVsZW1lbnQgc3VwcG9ydCBmb3IgVGV4dEZpZWxkSW5wdXRUeXBlCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05ODkzNAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhIHRlc3Qg
dG8gdmVyaWZ5IGlmIHRleHRmaWVsZCBjb3VsZCBiZSBmaWxsZWQgd2l0aCBhIGRhdGFsaXN0IG9w
dGlvbgorICAgICAgICBhY2NvcmRpbmcgdG8ga2V5IGV2ZW50cy4KKworICAgICAgICAqIGZhc3Qv
Zm9ybXMvZGF0YWxpc3QvdGV4dGZpZWxkLXdpdGgtZGF0YWxpc3QtZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiBmYXN0L2Zvcm1zL2RhdGFsaXN0L3RleHRmaWVsZC13aXRoLWRhdGFsaXN0
Lmh0bWw6IEFkZGVkLgorCiAyMDE0LTAyLTA2ICBHeXV5b3VuZyBLaW0gIDxneXV5b3VuZy5raW1A
c2Ftc3VuZy5jb20+CiAKICAgICAgICAgQWRkIGEgdGVzdCBjYXNlIGZvciBuYXZpZ2F0b3IuaXNQ
cm90b2NvbEhhbmRsZXJSZWdpc3RlcmVkCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zv
cm1zL2RhdGFsaXN0L3RleHRmaWVsZC13aXRoLWRhdGFsaXN0LWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL2Zhc3QvZm9ybXMvZGF0YWxpc3QvdGV4dGZpZWxkLXdpdGgtZGF0YWxpc3QtZXhwZWN0
ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjA3NDJkODg0MWU4Y2ZiZjJlNTI2YTg3YTBmZGIxODA5NGUzNGE0
M2UKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2RhdGFsaXN0L3Rl
eHRmaWVsZC13aXRoLWRhdGFsaXN0LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEyIEBACitUZXN0
IGRhdGFsaXN0IHN1cHBvcnQgZm9yIHRleHRmaWVsZC4KKworT24gc3VjY2VzcywgeW91IHdpbGwg
c2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExF
VEUiLgorCisKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVU
RQorUEFTUyB0ZXh0ZmllbGQudmFsdWUgaXMgIlNhZmFyaSIKK1BBU1MgdGV4dGZpZWxkLnZhbHVl
IGlzICJTYWZhcmkiCitQQVNTIHRleHRmaWVsZC52YWx1ZSBpcyAiU2FmYXJpIgorCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2RhdGFsaXN0L3RleHRmaWVsZC13aXRoLWRhdGFs
aXN0Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2RhdGFsaXN0L3RleHRmaWVsZC13aXRo
LWRhdGFsaXN0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODUzNzZiNzgyMDg2Y2Y4Nzk0OGU2NGY3YzhkYjcy
Yjg2NjM1NmJhNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvZGF0
YWxpc3QvdGV4dGZpZWxkLXdpdGgtZGF0YWxpc3QuaHRtbApAQCAtMCwwICsxLDUyIEBACis8IURP
Q1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKyAgPGhl
YWQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+
PC9zY3JpcHQ+CisgICAgPHNjcmlwdD4KKyAgICAgIGZ1bmN0aW9uIHRlc3QoKQorICAgICAgewor
ICAgICAgICBkZXNjcmlwdGlvbignVGVzdCBkYXRhbGlzdCBzdXBwb3J0IGZvciB0ZXh0ZmllbGQu
Jyk7CisgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICB2YXIgdGV4
dGZpZWxkID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RleHRmaWVsZCcpOworCisgICAgICAg
ICAgdGV4dGZpZWxkLmZvY3VzKCk7CisgICAgICAgICAgZXZlbnRTZW5kZXIua2V5RG93bignZG93
bkFycm93Jyk7CisgICAgICAgICAgZXZlbnRTZW5kZXIua2V5RG93bignZG93bkFycm93Jyk7Cisg
ICAgICAgICAgZXZlbnRTZW5kZXIua2V5RG93bignZG93bkFycm93Jyk7CisgICAgICAgICAgZXZl
bnRTZW5kZXIua2V5RG93bignZG93bkFycm93Jyk7CisgICAgICAgICAgZXZlbnRTZW5kZXIua2V5
RG93bignZG93bkFycm93Jyk7CisgICAgICAgICAgZXZlbnRTZW5kZXIua2V5RG93bignZG93bkFy
cm93Jyk7CisgICAgICAgICAgZXZlbnRTZW5kZXIua2V5RG93bigiXG4iKTsKKyAgICAgICAgICBz
aG91bGRCZUVxdWFsVG9TdHJpbmcoJ3RleHRmaWVsZC52YWx1ZScsICdTYWZhcmknKTsKKworICAg
ICAgICAgIHRleHRmaWVsZC52YWx1ZSA9ICcnOworICAgICAgICAgIHRleHRmaWVsZC5mb2N1cygp
OworICAgICAgICAgIGV2ZW50U2VuZGVyLmtleURvd24oJ3VwQXJyb3cnKTsKKyAgICAgICAgICBl
dmVudFNlbmRlci5rZXlEb3duKCd1cEFycm93Jyk7CisgICAgICAgICAgZXZlbnRTZW5kZXIua2V5
RG93bigiXG4iKTsKKyAgICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ3RleHRmaWVsZC52
YWx1ZScsICdTYWZhcmknKTsKKworICAgICAgICAgIHRleHRmaWVsZC52YWx1ZSA9ICcnOworICAg
ICAgICAgIHRleHRmaWVsZC5mb2N1cygpOworICAgICAgICAgIGV2ZW50U2VuZGVyLmtleURvd24o
J3MnKTsKKyAgICAgICAgICBldmVudFNlbmRlci5rZXlEb3duKCdkb3duQXJyb3cnKTsKKyAgICAg
ICAgICBldmVudFNlbmRlci5rZXlEb3duKCJcbiIpOworICAgICAgICAgIHNob3VsZEJlRXF1YWxU
b1N0cmluZygndGV4dGZpZWxkLnZhbHVlJywgJ1NhZmFyaScpOworICAgICAgICB9CisgICAgICB9
CisgICAgPC9zY3JpcHQ+CisgIDwvaGVhZD4KKyAgPGJvZHkgb25sb2FkPSJ0ZXN0KCk7Ij4KKyAg
ICA8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKyAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4K
KyAgICA8aW5wdXQgaWQ9InRleHRmaWVsZCIgdHlwZT0ndGV4dCcgbGlzdD0iYnJvd3NlcnMiIG5h
bWU9ImJyb3dzZXIiPgorICAgIDxkYXRhbGlzdCBpZD0iYnJvd3NlcnMiPgorICAgICAgPG9wdGlv
biB2YWx1ZT0iQ2hyb21lIj4KKyAgICAgIDxvcHRpb24gdmFsdWU9IkZpcmVmb3giPgorICAgICAg
PG9wdGlvbiB2YWx1ZT0iSW50ZXJuZXQgRXhwbG9yZXIiPgorICAgICAgPG9wdGlvbiB2YWx1ZT0i
T3BlcmEiPgorICAgICAgPG9wdGlvbiB2YWx1ZT0iU2FmYXJpIj4KKyAgICA8L2RhdGFsaXN0Pgor
ICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Nj
cmlwdD4KKyAgPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvQ2hhbmdlTG9nIGIvQ2hhbmdl
TG9nCmluZGV4IDk2ZDA1YzllOTdlYjNiYTNlZjc3OGE0YmQzODEyNmJmZTBlNjZiYzIuLjljMTA0
Y2IxZDg3OGJmZjFhZWY3ZmFkYzk3NzcyZWJlNzFiODcwMjUgMTAwNjQ0Ci0tLSBhL0NoYW5nZUxv
ZworKysgYi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxNC0wMi0wNyAgQ2hhbmdTZW9r
IE9oICA8Y2hhbmdzZW9rLm9oQGNvbGxhYm9yYS5jb20+CisKKyAgICAgICAgRGF0YWxpc3QgZWxl
bWVudCBzdXBwb3J0IGZvciBUZXh0RmllbGRJbnB1dFR5cGUKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk4OTM0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGEgYnVpbGQgb3B0aW9uIHRvIGVuYWJsZSBk
YXRhbGlzdCBmb3IgZ3RrIHBvcnQuCisKKyAgICAgICAgKiBTb3VyY2UvYXV0b3Rvb2xzL1ByaW50
QnVpbGRDb25maWd1cmF0aW9uLm00OgorICAgICAgICAqIFNvdXJjZS9hdXRvdG9vbHMvUmVhZENv
bW1hbmRMaW5lQXJndW1lbnRzLm00OgorICAgICAgICAqIFNvdXJjZS9hdXRvdG9vbHMvU2V0dXBB
dXRvbWFrZS5tNDoKKyAgICAgICAgKiBTb3VyY2UvYXV0b3Rvb2xzL1NldHVwV2ViS2l0RmVhdHVy
ZXMubTQ6CisKIDIwMTQtMDItMDYgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNv
bT4KIAogICAgICAgICBbaU9TXSBtYWtlIHNob3VsZCBidWlsZCBXZWJLaXQyCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>223433</attachid>
            <date>2014-02-07 01:47:14 -0800</date>
            <delta_ts>2019-07-30 06:04:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-98934-20140207184713.patch</filename>
            <type>text/plain</type>
            <size>44766</size>
            <attacher name="ChangSeok Oh">changseok</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTYzNjEyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGEyYTJhMjVkZGNjN2Fk
ZjYwMjc2MWIwOWFhYzFhNzBkNmU2ZDliNS4uY2U1MTZhNjE3ZTlmMDkyZGUyY2ZkYTkwYTc3OWRl
ZTNlN2Q0NTc2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDczIEBACisyMDE0LTAyLTA3ICBDaGFu
Z1Nlb2sgT2ggIDxjaGFuZ3Nlb2sub2hAY29sbGFib3JhLmNvbT4KKworICAgICAgICBEYXRhbGlz
dCBlbGVtZW50IHN1cHBvcnQgZm9yIFRleHRGaWVsZElucHV0VHlwZQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTg5MzQKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGNoYW5nZSBicmluZ3MgZGF0YWxp
c3Qgc3VwcG9ydCB0byBUZXh0RmllbGRJbnB1dFR5cGUuIFRvIGRvIHRoYXQsCisgICAgICAgIEkg
Y3JlYXRlZCB0d28gY2xhc3NlcyBTdWdnZXN0aW9uQ2hvb3NlciBhbmQgU3VnZ2VzdGlvbkVsZW1l
bnQgbmV3bHkuIFN1Z2dlc3Rpb25DaG9vc2VyCisgICAgICAgIGlzIGEgY29udHJvbGxlciB3aGlj
aCBUZXh0RmllbGRJbnB1dFR5cGUgdXNlcyB0byBzaG93L2hpZGUgYSBzdWdnZXN0aW9uIHBvcHVw
LgorICAgICAgICBUaGUgcG9wdXAgc2hvd2luZyBvcHRpb25zIG9mIGRhdGFsaXN0IGlzIGNvbnN0
cnVjdGVkIHdpdGggSFRNTERpdkVsZW1lbnRzCisgICAgICAgIHdoaWNoIGFyZSByZXByZXNlbnRl
ZCBieSBTdWdnZXN0aW9uRWxlbWVudCwgc3ViY2xhc3Mgb2YgSFRNTERpdkVsZW1lbnQuCisgICAg
ICAgIEFsbCBTdWdnZXN0aW9uRWxlbWVudHMgYXJlIGFsc28gd3JhcHBlZCBieSBhIGRpdiBlbGVt
ZW50IGNvbnRhaW5lciBhbmQgaXQgYmVsb25ncyB0bworICAgICAgICBTaGFkb3dSb29vdCBvZiBI
VE1MSW5wdXRFbG1lZW50LiBCYXNpY2FsbHkgbW9zdCBvZiBjb2RlIGlzIHNoYXJlYWJsZSBhbW9u
ZyBwb3J0cworICAgICAgICB0aHJvdWdoIGRlZmluaW5nIHNvbWUgZXh0cmEgc3R5bGUgaW4gY3Nz
IGFuZCBtb2RpZnlpbmcgUmVuZGVyVGhlbWUgc3R1ZmYsCisgICAgICAgIGJ1dCBoZXJlIEkgYXBw
bHkgdGhlIGNoYW5nZSB0byBndGsgcG9ydCBhaGVhZC4KKworICAgICAgICBUZXN0OiBmYXN0L2Zv
cm1zL2RhdGFsaXN0L3RleHRmaWVsZC13aXRoLWRhdGFsaXN0Lmh0bWwKKworICAgICAgICAqIENN
YWtlTGlzdHMudHh0OgorICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOgorICAgICAgICAqIEdOVW1h
a2VmaWxlLmxpc3QuYW06CisgICAgICAgICogY3NzL3RoZW1lR3RrLmNzczogQWRkZWQuCisgICAg
ICAgIChpbnB1dDo6LXdlYmtpdC1zdWdnZXN0aW9uLWNvbnRhaW5lcik6CisgICAgICAgIChpbnB1
dDo6LXdlYmtpdC1zdWdnZXN0aW9uLWVsZW1lbnQpOgorICAgICAgICAoaW5wdXQ6Oi13ZWJraXQt
c3VnZ2VzdGlvbi1lbGVtZW50LWZvY3VzZWQpOgorICAgICAgICAoaW5wdXQ6Oi13ZWJraXQtc3Vn
Z2VzdGlvbi1wcmVmaXgtdGV4dCk6CisgICAgICAgICogaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEZpZWxkSW5wdXRUeXBlOjpoYW5kbGVLZXlkb3du
RXZlbnQpOiBTaG93IHBvcHVwIG9yIG1vdmUgZm9jdXMgYWNjb3JkaW5nIHRvIHVzZXIgaW5wdXQu
CisgICAgICAgIChXZWJDb3JlOjpUZXh0RmllbGRJbnB1dFR5cGU6OmhhbmRsZUJsdXJFdmVudCk6
IEhpZGUgcG9wdXAgd2hlbiB0ZXh0IGZpZWxkIGxvc2VzIGZvY3VzLgorICAgICAgICAoV2ViQ29y
ZTo6VGV4dEZpZWxkSW5wdXRUeXBlOjpjcmVhdGVTaGFkb3dTdWJ0cmVlKToKKyAgICAgICAgKFdl
YkNvcmU6OlRleHRGaWVsZElucHV0VHlwZTo6ZGlkU2V0VmFsdWVCeVVzZXJFZGl0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlRleHRGaWVsZElucHV0VHlwZTo6cHJlZml4KTogVGhlIHByZWZpeCBpcyBh
biBpbm5lciB2YWx1ZSBpbiBpbnB1dCBmaWVsZC4gSXQgaXMgcmVxdWlyZWQgdG8gcmVidWlsZCBz
dWdnZXN0aW9uIHBvcHVwLgorICAgICAgICAoV2ViQ29yZTo6VGV4dEZpZWxkSW5wdXRUeXBlOjpz
dWdnZXN0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0RmllbGRJbnB1dFR5cGU6OmFkZFN1
Z2dlc3Rpb25Db250YWluZXJUb1NoYWRvd1Jvb3QpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEZp
ZWxkSW5wdXRUeXBlOjpyZW1vdmVTdWdnZXN0aW9uQ29udGFpbmVyRnJvbVNoYWRvd1Jvb3QpOgor
ICAgICAgICAoV2ViQ29yZTo6VGV4dEZpZWxkSW5wdXRUeXBlOjpkaWRDaG9vc2VWYWx1ZSk6IEZp
bGwgdGV4dCBmaWVsZCB3aXRoIHRoZSB2YWx1ZSB1c2VyIHNlbGVjdGVkLgorICAgICAgICAoV2Vi
Q29yZTo6VGV4dEZpZWxkSW5wdXRUeXBlOjpzaG91bGRTaG93U3VnZ2VzdGlvbnMpOgorICAgICAg
ICAqIGh0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmg6CisgICAgICAgICogaHRtbC9zaGFkb3cvU3Vn
Z2VzdGlvbkNob29zZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlN1Z2dlc3Rpb25D
aG9vc2VyOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U3VnZ2VzdGlvbkNob29zZXI6OlN1
Z2dlc3Rpb25DaG9vc2VyKToKKyAgICAgICAgKFdlYkNvcmU6OlN1Z2dlc3Rpb25DaG9vc2VyOjp+
U3VnZ2VzdGlvbkNob29zZXIpOgorICAgICAgICAoV2ViQ29yZTo6U3VnZ2VzdGlvbkNob29zZXI6
OmNyZWF0ZVN1Z2dlc3Rpb25Db250YWluZXIpOgorICAgICAgICAoV2ViQ29yZTo6U3VnZ2VzdGlv
bkNob29zZXI6OmFkZFN1Z2dlc3Rpb25zVG9Db250YWluZXIpOgorICAgICAgICAoV2ViQ29yZTo6
U3VnZ2VzdGlvbkNob29zZXI6OnNob3cpOgorICAgICAgICAoV2ViQ29yZTo6U3VnZ2VzdGlvbkNo
b29zZXI6OmhpZGUpOgorICAgICAgICAoV2ViQ29yZTo6U3VnZ2VzdGlvbkNob29zZXI6OnNlbGVj
dCk6CisgICAgICAgIChXZWJDb3JlOjpTdWdnZXN0aW9uQ2hvb3Nlcjo6Zm9jdXMpOgorICAgICAg
ICAoV2ViQ29yZTo6U3VnZ2VzdGlvbkNob29zZXI6OnVuZm9jdXMpOgorICAgICAgICAoV2ViQ29y
ZTo6U3VnZ2VzdGlvbkNob29zZXI6OmhhbmRsZUtleWRvd25FdmVudCk6CisgICAgICAgICogaHRt
bC9zaGFkb3cvU3VnZ2VzdGlvbkNob29zZXIuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpT
dWdnZXN0aW9uQ2hvb3Nlcjo6U3VnZ2VzdGlvbkNob29zZXJDbGllbnQ6On5TdWdnZXN0aW9uQ2hv
b3NlckNsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTdWdnZXN0aW9uQ2hvb3Nlcjo6Zm9jdXNl
ZFN1Z2dlc3Rpb25FbGVtZW50KToKKyAgICAgICAgKiBodG1sL3NoYWRvdy9TdWdnZXN0aW9uRWxl
bWVudC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6U3VnZ2VzdGlvbkVsZW1lbnQ6OlN1
Z2dlc3Rpb25FbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlN1Z2dlc3Rpb25FbGVtZW50Ojp+
U3VnZ2VzdGlvbkVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U3VnZ2VzdGlvbkVsZW1lbnQ6
OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTdWdnZXN0aW9uRWxlbWVudDo6dXBkYXRlQXBw
ZWFyYW5jZSk6IEJvbGQgdGhlIHByZWZpeCBzdHJpbmcgYWNjb3JkaW5nIHRvIHVzZXIgaW5wdXQu
CisgICAgICAgIChXZWJDb3JlOjpTdWdnZXN0aW9uRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxl
cik6IEhhbmRsZSBtb3VzZSBldmVudCB0byBjaGFuZ2UgdGhlIHN0eWxlIG9mIGZvY3VzZWQvdW5m
b2N1c2VkIGVsZW1lbnQuCisgICAgICAgIChXZWJDb3JlOjpTdWdnZXN0aW9uRWxlbWVudDo6Zm9j
dXNlZCk6IEhpZ2hsaWdodCB0aGUgZWxlbWVudCB3aGVuIGhhdmluZyBhIGZvY3VzLgorICAgICAg
ICAoV2ViQ29yZTo6U3VnZ2VzdGlvbkVsZW1lbnQ6OnVuZm9jdXNlZCk6IFJldHVybiB0aGUgc3R5
bGUgb2YgZWxlbWVudCB0byB0aGUgZGVmYXVsdCB2YWx1ZSB3aGVuIGxvc2luZyBmb2N1cy4KKyAg
ICAgICAgKiBodG1sL3NoYWRvdy9TdWdnZXN0aW9uRWxlbWVudC5oOiBBZGRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OlN1Z2dlc3Rpb25FbGVtZW50OjpTdWdnZXN0aW9uRWxlbWVudE93bmVyOjp+U3Vn
Z2VzdGlvbkVsZW1lbnRPd25lcik6CisgICAgICAgIChXZWJDb3JlOjpTdWdnZXN0aW9uRWxlbWVu
dDo6dmFsdWUpOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9SZW5kZXJUaGVtZUd0ay5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUd0azo6ZXh0cmFEZWZhdWx0U3R5bGVTaGVldCk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUd0azo6c3VwcG9ydHNEYXRhTGlzdFVJKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvUmVuZGVyVGhlbWVHdGsuaDoKKwogMjAxNC0wMi0wNiAg
QnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgSURCOiBSZW1vdmUg
dGhlIGVudGlyZWx5IHVubmVjZXNzYXJ5ICJWYWx1ZSBLZXkiIGNvbmNlcHQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKaW5kZXggODQ1ODQwY2E4MmM5OWE1YzM0YjEyNDJiYjE2OWU4NGEyMzNjMjQ2YS4uMTE4
MzMxOTk4NWJlOGE0YzUzNDNkNjg0ZTNlZjdkMzY1NzQ5MWVhNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50
eHQKQEAgLTE1NjEsNiArMTU2MSw4IEBAIHNldChXZWJDb3JlX1NPVVJDRVMKICAgICBodG1sL3No
YWRvdy9Qcm9ncmVzc1NoYWRvd0VsZW1lbnQuY3BwCiAgICAgaHRtbC9zaGFkb3cvU2xpZGVyVGh1
bWJFbGVtZW50LmNwcAogICAgIGh0bWwvc2hhZG93L1NwaW5CdXR0b25FbGVtZW50LmNwcAorICAg
IGh0bWwvc2hhZG93L1N1Z2dlc3Rpb25DaG9vc2VyLmNwcAorICAgIGh0bWwvc2hhZG93L1N1Z2dl
c3Rpb25FbGVtZW50LmNwcAogICAgIGh0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50
cy5jcHAKIAogICAgIGluc3BlY3Rvci9Db21tYW5kTGluZUFQSUhvc3QuY3BwCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2Vm
aWxlLmFtCmluZGV4IDJlMmFjY2JlZGUyZGE2ZjQzNDUyYmEzMmJjMzUyYzQ1NmIxNWI5NDcuLmNi
ZTY4YWRkMTZkNDM4OWI5NDRiNTdjOTg4YzczZjI0NjcxYWQxNmEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxl
LmFtCkBAIC0yNzQsNyArMjc0LDggQEAgVVNFUl9BR0VOVF9TVFlMRV9TSEVFVFMgPSBcCiAJJChX
ZWJDb3JlKS9jc3MvbWVkaWFDb250cm9scy5jc3MgXAogCSQoV2ViQ29yZSkvY3NzL21lZGlhQ29u
dHJvbHNHdGsuY3NzIFwKIAkkKFdlYkNvcmUpL2Nzcy9mdWxsc2NyZWVuLmNzcyBcCi0JJChXZWJD
b3JlKS9jc3MvcGx1Z0lucy5jc3MKKwkkKFdlYkNvcmUpL2Nzcy9wbHVnSW5zLmNzcyBcCisJJChX
ZWJDb3JlKS9jc3MvdGhlbWVHdGsuY3NzCiAKICMgcGx1Zy1pbiByZXNvdXJjZXMKIFBMVUdfSU5T
X1JFU09VUkNFUyA9IFwKQEAgLTY5Miw2ICs2OTMsNyBAQCBFWFRSQV9ESVNUICs9IFwKIAlTb3Vy
Y2UvV2ViQ29yZS9jc3MvcGx1Z0lucy5jc3MgXAogCVNvdXJjZS9XZWJDb3JlL2Nzcy9xdWlya3Mu
Y3NzIFwKIAlTb3VyY2UvV2ViQ29yZS9jc3Mvc3ZnLmNzcyBcCisJU291cmNlL1dlYkNvcmUvY3Nz
L3RoZW1lR3RrLmNzcyBcCiAJU291cmNlL1dlYkNvcmUvY3NzL1NWR0NTU1Byb3BlcnR5TmFtZXMu
aW4gXAogCVNvdXJjZS9XZWJDb3JlL2Nzcy9TVkdDU1NWYWx1ZUtleXdvcmRzLmluIFwKIAlTb3Vy
Y2UvV2ViQ29yZS9jc3Mvdmlldy1zb3VyY2UuY3NzIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0
LmFtCmluZGV4IDI4NzdkZGYzNzJhZGZkOWMzNzZiNGIxYWMyNmNiMWZmY2JkM2Q0MzIuLmJjOWFl
OTRhYzQwZTljMGQwYmM0MjljYTI0OTE5YTVhMjViM2QxODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZp
bGUubGlzdC5hbQpAQCAtMzYyMyw2ICszNjIzLDEwIEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJ
U291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU2xpZGVyVGh1bWJFbGVtZW50LmggXAogCVNvdXJj
ZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NwaW5CdXR0b25FbGVtZW50LmNwcCBcCiAJU291cmNlL1dl
YkNvcmUvaHRtbC9zaGFkb3cvU3BpbkJ1dHRvbkVsZW1lbnQuaCBcCisJU291cmNlL1dlYkNvcmUv
aHRtbC9zaGFkb3cvU3VnZ2VzdGlvbkNob29zZXIuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9odG1s
L3NoYWRvdy9TdWdnZXN0aW9uQ2hvb3Nlci5oIFwKKwlTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRv
dy9TdWdnZXN0aW9uRWxlbWVudC5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1N1
Z2dlc3Rpb25FbGVtZW50LmggXAogCVNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1RleHRDb250
cm9sSW5uZXJFbGVtZW50cy5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1RleHRD
b250cm9sSW5uZXJFbGVtZW50cy5oIFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL1Bhc3N3b3JkSW5w
dXRUeXBlLmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvdGhlbWVHdGsuY3Nz
IGIvU291cmNlL1dlYkNvcmUvY3NzL3RoZW1lR3RrLmNzcwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45ZDE1YjE0NDVm
NGQ1YTA1NThiZWRlMWVlM2ZiNjNhZTQwYmMzOTM4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvY3NzL3RoZW1lR3RrLmNzcwpAQCAtMCwwICsxLDQ3IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE0IENvbGxhYm9yYSBMdGQuIEFsbCByaWdodCByZXNlcnZlZC4KKyAqCisgKiBU
aGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k
L29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5
b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRp
c3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lU
SE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgor
ICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAg
U2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBk
ZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJy
YXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRo
IEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworaW5wdXQ6Oi13
ZWJraXQtc3VnZ2VzdGlvbi1jb250YWluZXIgeworICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAg
ICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmNmY2ZjOworICAgIHotaW5kZXg6IDIxNDc0ODM2NDc7Cisg
ICAgbWF4LWhlaWdodDogMjAwcHg7CisgICAgLXdlYmtpdC1ib3gtc2hhZG93OiAycHggMnB4IDVw
eCAjQUVBRUFFOworfQorCitpbnB1dDo6LXdlYmtpdC1zdWdnZXN0aW9uLWVsZW1lbnQgeworICAg
IGRpc3BsYXk6IGJsb2NrOworICAgIHBhZGRpbmc6IDNweDsKKyAgICB0ZXh0LWRlY29yYXRpb246
IG5vbmU7CisgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7CisgICAgb3ZlcmZsb3c6IGhpZGRl
bjsKK30KKworaW5wdXQ6Oi13ZWJraXQtc3VnZ2VzdGlvbi1lbGVtZW50LWZvY3VzZWQgeworICAg
IGRpc3BsYXk6IGJsb2NrOworICAgIHBhZGRpbmc6IDNweDsKKyAgICB0ZXh0LWRlY29yYXRpb246
IG5vbmU7CisgICAgYmFja2dyb3VuZC1jb2xvcjogIzAwMDBGRjsKKyAgICB0ZXh0LW92ZXJmbG93
OiBlbGxpcHNpczsKKyAgICBvdmVyZmxvdzogaGlkZGVuOworfQorCitpbnB1dDo6LXdlYmtpdC1z
dWdnZXN0aW9uLXByZWZpeC10ZXh0IHsKKyAgICBmb250LXdlaWdodDogYm9sZDsKK30KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmNwcAppbmRleCA5MzgxZDk5Y2JjNWE1
YTMxOGI3YTRkY2E4YWNhZGNiM2Y1N2FmZmZjLi45NjBhMzk3YjBkNTlmY2RiNGVhM2M3Yzg4Y2Yy
Y2I0YzU5MDZjOTM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHRGaWVsZElu
cHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUu
Y3BwCkBAIC0xLDYgKzEsNyBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNCBDb2xsYWJvcmEgTHRk
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZQpAQCAtMzgsOCArMzksMTAgQEAKICNpbmNsdWRlICJGb3JtRGF0YUxpc3QuaCIKICNpbmNsdWRl
ICJGcmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lU2VsZWN0aW9uLmgiCisjaW5jbHVkZSAiSFRNTERh
dGFMaXN0RWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxJbnB1dEVsZW1lbnQuaCIKICNpbmNsdWRl
ICJIVE1MTmFtZXMuaCIKKyNpbmNsdWRlICJIVE1MT3B0aW9uRWxlbWVudC5oIgogI2luY2x1ZGUg
IktleWJvYXJkRXZlbnQuaCIKICNpbmNsdWRlICJOb2RlUmVuZGVyU3R5bGUuaCIKICNpbmNsdWRl
ICJQYWdlLmgiCkBAIC00Nyw2ICs1MCw3IEBACiAjaW5jbHVkZSAiUmVuZGVyVGV4dENvbnRyb2xT
aW5nbGVMaW5lLmgiCiAjaW5jbHVkZSAiUmVuZGVyVGhlbWUuaCIKICNpbmNsdWRlICJTaGFkb3dS
b290LmgiCisjaW5jbHVkZSAiU3VnZ2VzdGlvbkNob29zZXIuaCIKICNpbmNsdWRlICJUZXh0QnJl
YWtJdGVyYXRvci5oIgogI2luY2x1ZGUgIlRleHRDb250cm9sSW5uZXJFbGVtZW50cy5oIgogI2lu
Y2x1ZGUgIlRleHRFdmVudC5oIgpAQCAtMTQ4LDYgKzE1MiwxMiBAQCB2b2lkIFRleHRGaWVsZElu
cHV0VHlwZTo6aGFuZGxlS2V5ZG93bkV2ZW50KEtleWJvYXJkRXZlbnQqIGV2ZW50KQogewogICAg
IGlmICghZWxlbWVudCgpLmZvY3VzZWQoKSkKICAgICAgICAgcmV0dXJuOworCisjaWYgRU5BQkxF
KERBVEFMSVNUX0VMRU1FTlQpCisgICAgaWYgKG1fc3VnZ2VzdGlvbkNob29zZXIpCisgICAgICAg
IG1fc3VnZ2VzdGlvbkNob29zZXItPmhhbmRsZUtleWRvd25FdmVudChldmVudCk7CisjZW5kaWYK
KwogICAgIEZyYW1lKiBmcmFtZSA9IGVsZW1lbnQoKS5kb2N1bWVudCgpLmZyYW1lKCk7CiAgICAg
aWYgKCFmcmFtZSB8fCAhZnJhbWUtPmVkaXRvcigpLmRvVGV4dEZpZWxkQ29tbWFuZEZyb21FdmVu
dCgmZWxlbWVudCgpLCBldmVudCkpCiAgICAgICAgIHJldHVybjsKQEAgLTE5OCw2ICsyMDgsMTEg
QEAgdm9pZCBUZXh0RmllbGRJbnB1dFR5cGU6OmhhbmRsZUJsdXJFdmVudCgpCiB7CiAgICAgSW5w
dXRUeXBlOjpoYW5kbGVCbHVyRXZlbnQoKTsKICAgICBlbGVtZW50KCkuZW5kRWRpdGluZygpOwor
CisjaWYgRU5BQkxFKERBVEFMSVNUX0VMRU1FTlQpCisgICAgaWYgKG1fc3VnZ2VzdGlvbkNob29z
ZXIpCisgICAgICAgIG1fc3VnZ2VzdGlvbkNob29zZXItPmhpZGUoKTsKKyNlbmRpZgogfQogCiBi
b29sIFRleHRGaWVsZElucHV0VHlwZTo6c2hvdWxkU3VibWl0SW1wbGljaXRseShFdmVudCogZXZl
bnQpCkBAIC0yMzgsNiArMjUzLDExIEBAIHZvaWQgVGV4dEZpZWxkSW5wdXRUeXBlOjpjcmVhdGVT
aGFkb3dTdWJ0cmVlKCkKICAgICBib29sIHNob3VsZEhhdmVTcGluQnV0dG9uID0gdGhpcy0+c2hv
dWxkSGF2ZVNwaW5CdXR0b24oKTsKICAgICBib29sIGNyZWF0ZXNDb250YWluZXIgPSBzaG91bGRI
YXZlU3BpbkJ1dHRvbiB8fCBuZWVkc0NvbnRhaW5lcigpOwogCisjaWYgRU5BQkxFKERBVEFMSVNU
X0VMRU1FTlQpCisgICAgaWYgKHNob3VsZFJlc3BlY3RMaXN0QXR0cmlidXRlKCkpCisgICAgICAg
IG1fc3VnZ2VzdGlvbkNob29zZXIgPSBTdWdnZXN0aW9uQ2hvb3Nlcjo6Y3JlYXRlKGRvY3VtZW50
LCAqdGhpcyk7CisjZW5kaWYKKwogICAgIG1faW5uZXJUZXh0ID0gVGV4dENvbnRyb2xJbm5lclRl
eHRFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQpOwogICAgIGlmICghY3JlYXRlc0NvbnRhaW5lcikg
ewogICAgICAgICBlbGVtZW50KCkudXNlckFnZW50U2hhZG93Um9vdCgpLT5hcHBlbmRDaGlsZCht
X2lubmVyVGV4dCwgSUdOT1JFX0VYQ0VQVElPTik7CkBAIC00NjUsNiArNDg1LDEwIEBAIHZvaWQg
VGV4dEZpZWxkSW5wdXRUeXBlOjpkaWRTZXRWYWx1ZUJ5VXNlckVkaXQoVmFsdWVDaGFuZ2VTdGF0
ZSBzdGF0ZSkKICAgICBpZiAoIWVsZW1lbnQoKS5mb2N1c2VkKCkpCiAgICAgICAgIHJldHVybjsK
ICAgICBpZiAoRnJhbWUqIGZyYW1lID0gZWxlbWVudCgpLmRvY3VtZW50KCkuZnJhbWUoKSkgewor
I2lmIEVOQUJMRShEQVRBTElTVF9FTEVNRU5UKQorICAgICAgICBpZiAobV9zdWdnZXN0aW9uQ2hv
b3NlcikKKyAgICAgICAgICAgIG1fc3VnZ2VzdGlvbkNob29zZXItPnNob3coZmFsc2UpOworI2Vu
ZGlmCiAgICAgICAgIGlmIChzdGF0ZSA9PSBWYWx1ZUNoYW5nZVN0YXRlTm9uZSkKICAgICAgICAg
ICAgIGZyYW1lLT5lZGl0b3IoKS50ZXh0RmllbGREaWRCZWdpbkVkaXRpbmcoJmVsZW1lbnQoKSk7
CiAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS50ZXh0RGlkQ2hhbmdlSW5UZXh0RmllbGQoJmVsZW1l
bnQoKSk7CkBAIC01MTEsNCArNTM1LDY2IEBAIGJvb2wgVGV4dEZpZWxkSW5wdXRUeXBlOjpzaG91
bGRTcGluQnV0dG9uUmVzcG9uZFRvV2hlZWxFdmVudHMoKQogICAgIHJldHVybiBzaG91bGRTcGlu
QnV0dG9uUmVzcG9uZFRvTW91c2VFdmVudHMoKSAmJiBlbGVtZW50KCkuZm9jdXNlZCgpOwogfQog
CisjaWYgRU5BQkxFKERBVEFMSVNUX0VMRU1FTlQpCitTdHJpbmcgVGV4dEZpZWxkSW5wdXRUeXBl
OjpwcmVmaXgoKSBjb25zdAoreworICAgIHJldHVybiBlbGVtZW50KCkuaW5uZXJUZXh0VmFsdWUo
KTsKK30KKworVmVjdG9yPFN0cmluZz4gVGV4dEZpZWxkSW5wdXRUeXBlOjpzdWdnZXN0aW9ucyhi
b29sIG5lZWRGdWxsTGlzdCkgY29uc3QKK3sKKyAgICBWZWN0b3I8U3RyaW5nPiBzdWdnZXN0aW9u
czsKKyAgICBIVE1MRGF0YUxpc3RFbGVtZW50KiBkYXRhTGlzdCA9IGVsZW1lbnQoKS5kYXRhTGlz
dCgpOworICAgIGlmIChkYXRhTGlzdCkgeworICAgICAgICBSZWZQdHI8SFRNTENvbGxlY3Rpb24+
IG9wdGlvbnMgPSBkYXRhTGlzdC0+b3B0aW9ucygpOworICAgICAgICBpZiAoIW9wdGlvbnMtPmxl
bmd0aCgpIHx8ICghbmVlZEZ1bGxMaXN0ICYmIHByZWZpeCgpLmlzRW1wdHkoKSkpCisgICAgICAg
ICAgICByZXR1cm4gc3VnZ2VzdGlvbnM7CisKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
SFRNTE9wdGlvbkVsZW1lbnQqIG9wdGlvbiA9IHRvSFRNTE9wdGlvbkVsZW1lbnQob3B0aW9ucy0+
aXRlbShpKSk7ICsraSkgeworICAgICAgICAgICAgaWYgKCFlbGVtZW50KCkuaXNWYWxpZFZhbHVl
KG9wdGlvbi0+dmFsdWUoKSkpCisgICAgICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAg
ICAgIFN0cmluZyBjYW5kaWRhdGVTdHJpbmcgPSBlbGVtZW50KCkuc2FuaXRpemVWYWx1ZShvcHRp
b24tPnZhbHVlKCkpOworICAgICAgICAgICAgaWYgKCFjYW5kaWRhdGVTdHJpbmcuZmluZElnbm9y
aW5nQ2FzZShwcmVmaXgoKSkgJiYgY2FuZGlkYXRlU3RyaW5nLmxlbmd0aCgpIDw9IHN0YXRpY19j
YXN0PHVuc2lnbmVkPihlbGVtZW50KCkubWF4TGVuZ3RoKCkpKQorICAgICAgICAgICAgICAgIHN1
Z2dlc3Rpb25zLmFwcGVuZChjYW5kaWRhdGVTdHJpbmcpOworICAgICAgICB9CisgICAgfQorCisg
ICAgcmV0dXJuIHN1Z2dlc3Rpb25zOworfQorCit2b2lkIFRleHRGaWVsZElucHV0VHlwZTo6YWRk
U3VnZ2VzdGlvbkNvbnRhaW5lclRvU2hhZG93Um9vdChIVE1MRWxlbWVudCogc3VnZ2VzdGlvbkNv
bnRhaW5lcikKK3sKKyAgICBpZiAoIXN1Z2dlc3Rpb25Db250YWluZXIpCisgICAgICAgIHJldHVy
bjsKKworICAgIC8vIE5lZWQgdG8gZm9yY2UgcG9zaXRpb246YWJzb2x1dGUgYmVjYXVzZSBSZW5k
ZXJNZW51TGlzdCBkb2Vzbid0IGFzc3VtZSBpdAorICAgIC8vIGNvbnRhaW5zIG5vbi1hYnNvbHV0
ZSBvciBub24tZml4ZWQgcmVuZGVyZXJzIGFzIGNoaWxkcmVuLgorICAgIHN1Z2dlc3Rpb25Db250
YWluZXItPnNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlQb3NpdGlvbiwgQ1NTVmFs
dWVBYnNvbHV0ZSk7CisgICAgc3VnZ2VzdGlvbkNvbnRhaW5lci0+c2V0SW5saW5lU3R5bGVQcm9w
ZXJ0eShDU1NQcm9wZXJ0eUxlZnQsIGVsZW1lbnQoKS5ib3VuZGluZ0JveCgpLngoKSArIGVsZW1l
bnQoKS5jbGllbnRMZWZ0KCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUFgpOworICAgIHN1Z2dl
c3Rpb25Db250YWluZXItPnNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlUb3AsIGVs
ZW1lbnQoKS5ib3VuZGluZ0JveCgpLm1heFkoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QWCk7
CisgICAgc3VnZ2VzdGlvbkNvbnRhaW5lci0+c2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9w
ZXJ0eVdpZHRoLCBlbGVtZW50KCkuY2xpZW50V2lkdGgoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNT
U19QWCk7CisKKyAgICBlbGVtZW50KCkudXNlckFnZW50U2hhZG93Um9vdCgpLT5hcHBlbmRDaGls
ZChzdWdnZXN0aW9uQ29udGFpbmVyKTsKK30KKwordm9pZCBUZXh0RmllbGRJbnB1dFR5cGU6OnJl
bW92ZVN1Z2dlc3Rpb25Db250YWluZXJGcm9tU2hhZG93Um9vdChIVE1MRWxlbWVudCogc3VnZ2Vz
dGlvbkNvbnRhaW5lcikKK3sKKyAgICBpZiAoIXN1Z2dlc3Rpb25Db250YWluZXIpCisgICAgICAg
IHJldHVybjsKKworICAgIGVsZW1lbnQoKS51c2VyQWdlbnRTaGFkb3dSb290KCktPnJlbW92ZUNo
aWxkKHN1Z2dlc3Rpb25Db250YWluZXIpOworfQorCit2b2lkIFRleHRGaWVsZElucHV0VHlwZTo6
ZGlkQ2hvb3NlVmFsdWUoY29uc3QgU3RyaW5nJiB2YWx1ZSkKK3sKKyAgICBlbGVtZW50KCkuc2V0
RWRpdGluZ1ZhbHVlKHZhbHVlKTsKK30KKworYm9vbCBUZXh0RmllbGRJbnB1dFR5cGU6OnNob3Vs
ZFNob3dTdWdnZXN0aW9ucygpCit7CisgICAgcmV0dXJuIHNob3VsZFJlc3BlY3RMaXN0QXR0cmli
dXRlKCkgJiYgZWxlbWVudCgpLmZhc3RIYXNBdHRyaWJ1dGUobGlzdEF0dHIpOworfQorI2VuZGlm
CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHRGaWVsZElu
cHV0VHlwZS5oCmluZGV4IDYyMGJhNTU1MGViZjhlMjY4ZTBkZTAyZTlkZTBlNDI1NTRiNWQ3Zjku
LmE0NTNlN2ZlM2NmNDI2OWI2OTgzMDkwMWMyZGExNWRkZDQ4NzAxYjMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUuaApAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5
cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxNCBDb2xsYWJvcmEgTHRkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQpAQCAtMzQsNiArMzUsMTAgQEAKICNpbmNsdWRl
ICJJbnB1dFR5cGUuaCIKICNpbmNsdWRlICJTcGluQnV0dG9uRWxlbWVudC5oIgogCisjaWYgRU5B
QkxFKERBVEFMSVNUX0VMRU1FTlQpCisjaW5jbHVkZSAiU3VnZ2VzdGlvbkNob29zZXIuaCIKKyNl
bmRpZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEZvcm1EYXRhTGlzdDsKQEAgLTQx
LDcgKzQ2LDExIEBAIGNsYXNzIFRleHRDb250cm9sSW5uZXJUZXh0RWxlbWVudDsKIAogLy8gVGhl
IGNsYXNzIHJlcHJlc2VudHMgdHlwZXMgb2Ygd2hpY2ggVUkgY29udGFpbiB0ZXh0IGZpZWxkcy4K
IC8vIEl0IHN1cHBvcnRzIG5vdCBvbmx5IHRoZSB0eXBlcyBmb3IgQmFzZVRleHRJbnB1dFR5cGUg
YnV0IGFsc28gdHlwZT1udW1iZXIuCi1jbGFzcyBUZXh0RmllbGRJbnB1dFR5cGUgOiBwdWJsaWMg
SW5wdXRUeXBlLCBwcm90ZWN0ZWQgU3BpbkJ1dHRvbkVsZW1lbnQ6OlNwaW5CdXR0b25Pd25lciB7
CitjbGFzcyBUZXh0RmllbGRJbnB1dFR5cGUgOiBwdWJsaWMgSW5wdXRUeXBlLCBwcm90ZWN0ZWQg
U3BpbkJ1dHRvbkVsZW1lbnQ6OlNwaW5CdXR0b25Pd25lcgorI2lmIEVOQUJMRShEQVRBTElTVF9F
TEVNRU5UKQorICAgICwgcHJvdGVjdGVkIFN1Z2dlc3Rpb25DaG9vc2VyOjpTdWdnZXN0aW9uQ2hv
b3NlckNsaWVudAorI2VuZGlmCit7CiBwcm90ZWN0ZWQ6CiAgICAgZXhwbGljaXQgVGV4dEZpZWxk
SW5wdXRUeXBlKEhUTUxJbnB1dEVsZW1lbnQmKTsKICAgICB2aXJ0dWFsIH5UZXh0RmllbGRJbnB1
dFR5cGUoKTsKQEAgLTEwNiw2ICsxMTUsMTYgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQg
c3BpbkJ1dHRvblN0ZXBEb3duKCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHNwaW5CdXR0
b25TdGVwVXAoKSBvdmVycmlkZTsKIAorI2lmIEVOQUJMRShEQVRBTElTVF9FTEVNRU5UKQorICAg
IC8vIFN1Z2dlc3Rpb25DaG9vc2VyOjpTdWdnZXN0aW9uQ2hvb3NlckNsaWVudCBmdW5jdGlvbnMu
CisgICAgdmlydHVhbCBTdHJpbmcgcHJlZml4KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdmlydHVh
bCBWZWN0b3I8U3RyaW5nPiBzdWdnZXN0aW9ucyhib29sIG5lZWRGdWxsTGlzdCkgY29uc3Qgb3Zl
cnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGFkZFN1Z2dlc3Rpb25Db250YWluZXJUb1NoYWRvd1Jv
b3QoSFRNTEVsZW1lbnQqKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlU3VnZ2Vz
dGlvbkNvbnRhaW5lckZyb21TaGFkb3dSb290KEhUTUxFbGVtZW50Kikgb3ZlcnJpZGU7CisgICAg
dmlydHVhbCB2b2lkIGRpZENob29zZVZhbHVlKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOworICAg
IHZpcnR1YWwgYm9vbCBzaG91bGRTaG93U3VnZ2VzdGlvbnMoKSBvdmVycmlkZTsKKyNlbmRpZgor
CiAgICAgUmVmUHRyPEhUTUxFbGVtZW50PiBtX2NvbnRhaW5lcjsKICAgICBSZWZQdHI8SFRNTEVs
ZW1lbnQ+IG1faW5uZXJCbG9jazsKICAgICBSZWZQdHI8VGV4dENvbnRyb2xJbm5lclRleHRFbGVt
ZW50PiBtX2lubmVyVGV4dDsKQEAgLTExNCw2ICsxMzMsOSBAQCBwcml2YXRlOgogI2lmIEVOQUJM
RShJTlBVVF9TUEVFQ0gpCiAgICAgUmVmUHRyPEhUTUxFbGVtZW50PiBtX3NwZWVjaEJ1dHRvbjsK
ICNlbmRpZgorI2lmIEVOQUJMRShEQVRBTElTVF9FTEVNRU5UKQorICAgIE93blB0cjxTdWdnZXN0
aW9uQ2hvb3Nlcj4gbV9zdWdnZXN0aW9uQ2hvb3NlcjsKKyNlbmRpZgogfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU3Vn
Z2VzdGlvbkNob29zZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU3VnZ2VzdGlv
bkNob29zZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJlMmQzZTk0YjJmNTMwZGFjODIzNGY3ZGRiODdkZjIz
YTI1NGIwZjAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9T
dWdnZXN0aW9uQ2hvb3Nlci5jcHAKQEAgLTAsMCArMSwyMDEgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTQgQ29sbGFib3JhIEx0ZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9u
LgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVz
IG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElT
IiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICog
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiU3VnZ2VzdGlvbkNob29zZXIuaCIKKworI2lmIEVOQUJMRShEQVRBTElT
VF9FTEVNRU5UKQorCisjaW5jbHVkZSAiS2V5Ym9hcmRFdmVudC5oIgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK1Bhc3NPd25QdHI8U3VnZ2VzdGlvbkNob29zZXI+IFN1Z2dlc3Rpb25DaG9vc2Vy
OjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBTdWdnZXN0aW9uQ2hvb3NlckNsaWVudCYgY2xp
ZW50KQoreworICAgIHJldHVybiBhZG9wdFB0cihuZXcgU3VnZ2VzdGlvbkNob29zZXIoZG9jdW1l
bnQsIGNsaWVudCkpOworfQorCitTdWdnZXN0aW9uQ2hvb3Nlcjo6U3VnZ2VzdGlvbkNob29zZXIo
RG9jdW1lbnQmIGRvY3VtZW50LCBTdWdnZXN0aW9uQ2hvb3NlckNsaWVudCYgY2xpZW50KQorICAg
IDogbV9kb2N1bWVudChkb2N1bWVudCkKKyAgICAsIG1fY2xpZW50KGNsaWVudCkKKyAgICAsIG1f
Y29udGFpbmVyKG51bGxwdHIpCisgICAgLCBtX2ZvY3VzZWRTdWdnZXN0aW9uRWxlbWVudChudWxs
cHRyKQoreworfQorCitTdWdnZXN0aW9uQ2hvb3Nlcjo6flN1Z2dlc3Rpb25DaG9vc2VyKCkKK3sK
KyAgICBoaWRlKCk7Cit9CisKK1Bhc3NSZWZQdHI8SFRNTEVsZW1lbnQ+IFN1Z2dlc3Rpb25DaG9v
c2VyOjpjcmVhdGVTdWdnZXN0aW9uQ29udGFpbmVyKCkKK3sKKyAgICBSZWZQdHI8SFRNTEVsZW1l
bnQ+IGNvbnRhaW5lciA9IEhUTUxEaXZFbGVtZW50OjpjcmVhdGUobV9kb2N1bWVudC5nZXQoKSk7
CisgICAgY29udGFpbmVyLT5zZXRQc2V1ZG8oIi13ZWJraXQtc3VnZ2VzdGlvbi1jb250YWluZXIi
KTsKKworICAgIHJldHVybiBjb250YWluZXIucmVsZWFzZSgpOworfQorCit2b2lkIFN1Z2dlc3Rp
b25DaG9vc2VyOjphZGRTdWdnZXN0aW9uc1RvQ29udGFpbmVyKFZlY3RvcjxTdHJpbmc+JiBzdWdn
ZXN0aW9ucykKK3sKKyAgICBtX2NvbnRhaW5lci0+cmVtb3ZlQ2hpbGRyZW4oKTsKKworICAgIGlu
dCBwcmVmaXhMZW5ndGggPSBtX2NsaWVudC5wcmVmaXgoKS5sZW5ndGgoKTsKKyAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgc3VnZ2VzdGlvbnMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgUmVm
UHRyPFN1Z2dlc3Rpb25FbGVtZW50PiBzdWdnZXN0aW9uRWxlbWVudCA9IFN1Z2dlc3Rpb25FbGVt
ZW50OjpjcmVhdGUodGhpcywgc3VnZ2VzdGlvbnNbaV0sIG1fZG9jdW1lbnQuZ2V0KCkpOworICAg
ICAgICBzdWdnZXN0aW9uRWxlbWVudC0+dXBkYXRlQXBwZWFyYW5jZShwcmVmaXhMZW5ndGgpOwor
CisgICAgICAgIG1fY29udGFpbmVyLT5hcHBlbmRDaGlsZChzdWdnZXN0aW9uRWxlbWVudC5yZWxl
YXNlKCksIEFTU0VSVF9OT19FWENFUFRJT04pOworICAgIH0KK30KKwordm9pZCBTdWdnZXN0aW9u
Q2hvb3Nlcjo6c2hvdyhib29sIHNob3dGdWxsTGlzdCkKK3sKKyAgICBpZiAoIW1fY2xpZW50LnNo
b3VsZFNob3dTdWdnZXN0aW9ucygpKQorICAgICAgICByZXR1cm47CisKKyAgICB1bmZvY3VzKCk7
CisKKyAgICBWZWN0b3I8U3RyaW5nPiBzdWdnZXN0aW9ucyA9IG1fY2xpZW50LnN1Z2dlc3Rpb25z
KHNob3dGdWxsTGlzdCk7CisgICAgaWYgKHN1Z2dlc3Rpb25zLmlzRW1wdHkoKSkgeworICAgICAg
ICBoaWRlKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoIW1fY29udGFpbmVy
KSB7CisgICAgICAgIG1fY29udGFpbmVyID0gY3JlYXRlU3VnZ2VzdGlvbkNvbnRhaW5lcigpOwor
ICAgICAgICBtX2NsaWVudC5hZGRTdWdnZXN0aW9uQ29udGFpbmVyVG9TaGFkb3dSb290KG1fY29u
dGFpbmVyLmdldCgpKTsKKyAgICB9CisKKyAgICBhZGRTdWdnZXN0aW9uc1RvQ29udGFpbmVyKHN1
Z2dlc3Rpb25zKTsKK30KKwordm9pZCBTdWdnZXN0aW9uQ2hvb3Nlcjo6aGlkZSgpCit7CisgICAg
aWYgKG1fY29udGFpbmVyKSB7CisgICAgICAgIG1fY2xpZW50LnJlbW92ZVN1Z2dlc3Rpb25Db250
YWluZXJGcm9tU2hhZG93Um9vdChtX2NvbnRhaW5lci5nZXQoKSk7CisgICAgICAgIG1fY29udGFp
bmVyID0gMDsKKyAgICB9CisgICAgaWYgKG1fZm9jdXNlZFN1Z2dlc3Rpb25FbGVtZW50KQorICAg
ICAgICBtX2ZvY3VzZWRTdWdnZXN0aW9uRWxlbWVudCA9IG51bGxwdHI7Cit9CisKK2Jvb2wgU3Vn
Z2VzdGlvbkNob29zZXI6OnNlbGVjdChTdWdnZXN0aW9uRWxlbWVudCogc3VnZ2VzdGlvbkVsZW1l
bnQpCit7CisgICAgaWYgKCFzdWdnZXN0aW9uRWxlbWVudCkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgbV9jbGllbnQuZGlkQ2hvb3NlVmFsdWUoc3VnZ2VzdGlvbkVsZW1lbnQtPnZhbHVl
KCkpOworICAgIGhpZGUoKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBTdWdnZXN0aW9u
Q2hvb3Nlcjo6Zm9jdXMoRm9jdXNEaXJlY3Rpb24gZGlyZWN0aW9uKQoreworICAgIFN1Z2dlc3Rp
b25FbGVtZW50KiBuZXdGb2N1c2VkU3VnZ2VzdGlvbkVsZW1lbnQgPSBtX2ZvY3VzZWRTdWdnZXN0
aW9uRWxlbWVudDsKKworICAgIHVuZm9jdXMoKTsKKworICAgIHN3aXRjaCAoZGlyZWN0aW9uKSB7
CisgICAgY2FzZSBGb2N1c0RpcmVjdGlvbkZvcndhcmQ6CisgICAgY2FzZSBGb2N1c0RpcmVjdGlv
bkRvd246CisgICAgICAgIGlmICghbmV3Rm9jdXNlZFN1Z2dlc3Rpb25FbGVtZW50KQorICAgICAg
ICAgICAgbmV3Rm9jdXNlZFN1Z2dlc3Rpb25FbGVtZW50ID0gdG9TdWdnZXN0aW9uRWxlbWVudCht
X2NvbnRhaW5lci0+Zmlyc3RDaGlsZCgpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbmV3
Rm9jdXNlZFN1Z2dlc3Rpb25FbGVtZW50ID0gdG9TdWdnZXN0aW9uRWxlbWVudChuZXdGb2N1c2Vk
U3VnZ2VzdGlvbkVsZW1lbnQtPm5leHRTaWJsaW5nKCkgPyBuZXdGb2N1c2VkU3VnZ2VzdGlvbkVs
ZW1lbnQtPm5leHRTaWJsaW5nKCkgOiBtX2NvbnRhaW5lci0+Zmlyc3RDaGlsZCgpKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBGb2N1c0RpcmVjdGlvbkJhY2t3YXJkOgorICAgIGNhc2UgRm9j
dXNEaXJlY3Rpb25VcDoKKyAgICAgICAgaWYgKCFuZXdGb2N1c2VkU3VnZ2VzdGlvbkVsZW1lbnQp
CisgICAgICAgICAgICBuZXdGb2N1c2VkU3VnZ2VzdGlvbkVsZW1lbnQgPSB0b1N1Z2dlc3Rpb25F
bGVtZW50KG1fY29udGFpbmVyLT5sYXN0Q2hpbGQoKSk7CisgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgIG5ld0ZvY3VzZWRTdWdnZXN0aW9uRWxlbWVudCA9IHRvU3VnZ2VzdGlvbkVsZW1lbnQobmV3
Rm9jdXNlZFN1Z2dlc3Rpb25FbGVtZW50LT5wcmV2aW91c1NpYmxpbmcoKSA/IG5ld0ZvY3VzZWRT
dWdnZXN0aW9uRWxlbWVudC0+cHJldmlvdXNTaWJsaW5nKCkgOiBtX2NvbnRhaW5lci0+bGFzdENo
aWxkKCkpOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICB9CisKKyAgICBmb2N1cyhuZXdGb2N1c2VkU3VnZ2VzdGlvbkVsZW1l
bnQpOworfQorCit2b2lkIFN1Z2dlc3Rpb25DaG9vc2VyOjpmb2N1cyhTdWdnZXN0aW9uRWxlbWVu
dCogc3VnZ2VzdGlvbkVsZW1lbnQpCit7CisgICAgaWYgKHN1Z2dlc3Rpb25FbGVtZW50ICYmIHN1
Z2dlc3Rpb25FbGVtZW50ID09IG1fZm9jdXNlZFN1Z2dlc3Rpb25FbGVtZW50KQorICAgICAgICBy
ZXR1cm47CisKKyAgICB1bmZvY3VzKCk7CisKKyAgICBtX2ZvY3VzZWRTdWdnZXN0aW9uRWxlbWVu
dCA9IHN1Z2dlc3Rpb25FbGVtZW50OworICAgIG1fZm9jdXNlZFN1Z2dlc3Rpb25FbGVtZW50LT5m
b2N1c2VkKCk7Cit9CisKK3ZvaWQgU3VnZ2VzdGlvbkNob29zZXI6OnVuZm9jdXMoKQoreworICAg
IGlmICghbV9mb2N1c2VkU3VnZ2VzdGlvbkVsZW1lbnQpCisgICAgICAgIHJldHVybjsKKworICAg
IG1fZm9jdXNlZFN1Z2dlc3Rpb25FbGVtZW50LT51bmZvY3VzZWQoKTsKKyAgICBtX2ZvY3VzZWRT
dWdnZXN0aW9uRWxlbWVudCA9IG51bGxwdHI7Cit9CisKK3ZvaWQgU3VnZ2VzdGlvbkNob29zZXI6
OmhhbmRsZUtleWRvd25FdmVudChLZXlib2FyZEV2ZW50KiBldmVudCkKK3sKKyAgICBpZiAoIWV2
ZW50IHx8ICFtX2NsaWVudC5zaG91bGRTaG93U3VnZ2VzdGlvbnMoKSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgYm9vbCBoYW5kbGVkID0gZmFsc2U7CisgICAgU3RyaW5nIGtleSA9IGV2ZW50LT5r
ZXlJZGVudGlmaWVyKCk7CisgICAgaWYgKG1fY29udGFpbmVyICYmIG1fY29udGFpbmVyLT5oYXND
aGlsZE5vZGVzKCkpIHsKKyAgICAgICAgaWYgKGtleSA9PSAiVXAiKSB7CisgICAgICAgICAgICBm
b2N1cyhGb2N1c0RpcmVjdGlvbkJhY2t3YXJkKTsKKyAgICAgICAgICAgIGhhbmRsZWQgPSB0cnVl
OworICAgICAgICB9IGVsc2UgaWYgKGtleSA9PSAiRG93biIpIHsKKyAgICAgICAgICAgIGZvY3Vz
KEZvY3VzRGlyZWN0aW9uRm9yd2FyZCk7CisgICAgICAgICAgICBoYW5kbGVkID0gdHJ1ZTsKKyAg
ICAgICAgfSBlbHNlIGlmIChrZXkgPT0gIlUrMDAxQiIpIHsgLy8gQ2FuY2VsCisgICAgICAgICAg
ICBoaWRlKCk7CisgICAgICAgICAgICBoYW5kbGVkID0gdHJ1ZTsKKyAgICAgICAgfSBlbHNlIGlm
IChrZXkgPT0gIlUrMDAwOSIpIC8vIFRhYgorICAgICAgICAgICAgc2VsZWN0KG1fZm9jdXNlZFN1
Z2dlc3Rpb25FbGVtZW50KTsKKyAgICAgICAgZWxzZSBpZiAoa2V5ID09ICJFbnRlciIpCisgICAg
ICAgICAgICBoYW5kbGVkID0gc2VsZWN0KG1fZm9jdXNlZFN1Z2dlc3Rpb25FbGVtZW50KTsKKyAg
ICB9IGVsc2UgeworICAgICAgICBpZiAoa2V5ID09ICJVcCIgfHwga2V5ID09ICJEb3duIikgewor
ICAgICAgICAgICAgc2hvdyh0cnVlKTsKKyAgICAgICAgICAgIGhhbmRsZWQgPSB0cnVlOworICAg
ICAgICB9CisgICAgfQorCisgICAgaWYgKGhhbmRsZWQpCisgICAgICAgIGV2ZW50LT5zZXREZWZh
dWx0SGFuZGxlZCgpOworfQorCit9CisjZW5kaWYgLy8gRU5BQkxFKERBVEFMSVNUX0VMRU1FTlQp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TdWdnZXN0aW9uQ2hvb3Nl
ci5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU3VnZ2VzdGlvbkNob29zZXIuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5iYWI2MzRlYjgxMWQ1NzdkZGFlMzM0NTQ1YTVkZjkwMjJhMjk1YjhkCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU3VnZ2VzdGlvbkNob29zZXIu
aApAQCAtMCwwICsxLDkxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IENvbGxhYm9yYSBM
dGQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhl
ciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1l
cyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKgorICovCisKKyNpZm5kZWYgU3VnZ2VzdGlvbkNob29zZXJfaAor
I2RlZmluZSBTdWdnZXN0aW9uQ2hvb3Nlcl9oCisKKyNpZiBFTkFCTEUoREFUQUxJU1RfRUxFTUVO
VCkKKworI2luY2x1ZGUgIkZvY3VzRGlyZWN0aW9uLmgiCisjaW5jbHVkZSAiU3VnZ2VzdGlvbkVs
ZW1lbnQuaCIKKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitjbGFzcyBTdWdnZXN0aW9uQ2hvb3NlckNsaWVudDsKKworY2xhc3MgU3VnZ2Vz
dGlvbkNob29zZXIgOiBwdWJsaWMgU3VnZ2VzdGlvbkVsZW1lbnQ6OlN1Z2dlc3Rpb25FbGVtZW50
T3duZXIgeworcHVibGljOgorICAgIGNsYXNzIFN1Z2dlc3Rpb25DaG9vc2VyQ2xpZW50IHsKKyAg
ICBwdWJsaWM6CisgICAgICAgIHZpcnR1YWwgflN1Z2dlc3Rpb25DaG9vc2VyQ2xpZW50KCkgeyB9
CisgICAgICAgIHZpcnR1YWwgU3RyaW5nIHByZWZpeCgpIGNvbnN0ID0gMDsKKyAgICAgICAgdmly
dHVhbCBWZWN0b3I8U3RyaW5nPiBzdWdnZXN0aW9ucyhib29sIG5lZWRGdWxsTGlzdCkgY29uc3Qg
PSAwOworICAgICAgICB2aXJ0dWFsIHZvaWQgYWRkU3VnZ2VzdGlvbkNvbnRhaW5lclRvU2hhZG93
Um9vdChIVE1MRWxlbWVudCopID0gMDsKKyAgICAgICAgdmlydHVhbCB2b2lkIHJlbW92ZVN1Z2dl
c3Rpb25Db250YWluZXJGcm9tU2hhZG93Um9vdChIVE1MRWxlbWVudCopID0gMDsKKyAgICAgICAg
dmlydHVhbCB2b2lkIGRpZENob29zZVZhbHVlKGNvbnN0IFN0cmluZyYpID0gMDsKKyAgICAgICAg
dmlydHVhbCBib29sIHNob3VsZFNob3dTdWdnZXN0aW9ucygpID0gMDsKKyAgICB9OworCisgICAg
dmlydHVhbCB+U3VnZ2VzdGlvbkNob29zZXIoKTsKKworICAgIHN0YXRpYyBQYXNzT3duUHRyPFN1
Z2dlc3Rpb25DaG9vc2VyPiBjcmVhdGUoRG9jdW1lbnQmLCBTdWdnZXN0aW9uQ2hvb3NlckNsaWVu
dCYpOworCisgICAgdmlydHVhbCBTdWdnZXN0aW9uRWxlbWVudCogZm9jdXNlZFN1Z2dlc3Rpb25F
bGVtZW50KCkgY29uc3QgeyByZXR1cm4gbV9mb2N1c2VkU3VnZ2VzdGlvbkVsZW1lbnQ7IH0KKwor
ICAgIHZpcnR1YWwgdm9pZCBzaG93KGJvb2wgc2hvd0Z1bGxMaXN0KTsKKyAgICB2aXJ0dWFsIHZv
aWQgaGlkZSgpOworCisgICAgdmlydHVhbCBQYXNzUmVmUHRyPEhUTUxFbGVtZW50PiBjcmVhdGVT
dWdnZXN0aW9uQ29udGFpbmVyKCk7CisgICAgdmlydHVhbCB2b2lkIGFkZFN1Z2dlc3Rpb25zVG9D
b250YWluZXIoVmVjdG9yPFN0cmluZz4mKTsKKworICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVLZXlk
b3duRXZlbnQoS2V5Ym9hcmRFdmVudCopOworCisgICAgdmlydHVhbCB2b2lkIGZvY3VzKEZvY3Vz
RGlyZWN0aW9uKTsKKworICAgIC8vIFN1Z2dlc3Rpb25FbGVtZW50T3duZXIKKyAgICB2aXJ0dWFs
IGJvb2wgc2VsZWN0KFN1Z2dlc3Rpb25FbGVtZW50Kikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2
b2lkIGZvY3VzKFN1Z2dlc3Rpb25FbGVtZW50Kikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lk
IHVuZm9jdXMoKSBvdmVycmlkZTsKKworcHJvdGVjdGVkOgorICAgIGV4cGxpY2l0IFN1Z2dlc3Rp
b25DaG9vc2VyKERvY3VtZW50JiwgU3VnZ2VzdGlvbkNob29zZXJDbGllbnQmKTsKKworcHJpdmF0
ZToKKyAgICBSZWY8RG9jdW1lbnQ+IG1fZG9jdW1lbnQ7CisgICAgU3VnZ2VzdGlvbkNob29zZXJD
bGllbnQmIG1fY2xpZW50OworICAgIFJlZlB0cjxIVE1MRWxlbWVudD4gbV9jb250YWluZXI7Cisg
ICAgU3VnZ2VzdGlvbkVsZW1lbnQqIG1fZm9jdXNlZFN1Z2dlc3Rpb25FbGVtZW50OworfTsKKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKERBVEFMSVNUX0VMRU1F
TlQpCisKKyNlbmRpZiAvLyBUZXh0Q2hvb3Nlcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3NoYWRvdy9TdWdnZXN0aW9uRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L3NoYWRvdy9TdWdnZXN0aW9uRWxlbWVudC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTljZTU1MzUyODNlYTE4
ZmJhYmUzOTQyZTJjZmY1YjRhNmNlNTZjOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvc2hhZG93L1N1Z2dlc3Rpb25FbGVtZW50LmNwcApAQCAtMCwwICsxLDk5IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE0IENvbGxhYm9yYSBMdGQuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICog
ICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRo
ZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUK
KyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIElu
Yy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklC
VVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBP
V05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
CisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlN1Z2dlc3Rpb25FbGVtZW50LmgiCisKKyNp
ZiBFTkFCTEUoREFUQUxJU1RfRUxFTUVOVCkKKworI2luY2x1ZGUgIkZyYW1lLmgiCisjaW5jbHVk
ZSAiSFRNTE5hbWVzLmgiCisjaW5jbHVkZSAiSFRNTFNwYW5FbGVtZW50LmgiCisjaW5jbHVkZSAi
TW91c2VFdmVudC5oIgorI2luY2x1ZGUgIlBsYXRmb3JtTW91c2VFdmVudC5oIgorI2luY2x1ZGUg
IlRleHQuaCIKKyNpbmNsdWRlICJUb3VjaEV2ZW50LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworU3VnZ2VzdGlvbkVsZW1lbnQ6OlN1Z2dlc3Rpb25FbGVtZW50KFN1Z2dlc3Rpb25FbGVtZW50
T3duZXIqIG93bmVyLCBTdHJpbmcmIHZhbHVlLCBjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBE
b2N1bWVudCYgZG9jdW1lbnQpCisgICAgOiBIVE1MRGl2RWxlbWVudChuYW1lLCBkb2N1bWVudCkK
KyAgICAsIG1fb3duZXIob3duZXIpCisgICAgLCBtX3ZhbHVlKHZhbHVlKQoreworICAgIHNldFBz
ZXVkbygiLXdlYmtpdC1zdWdnZXN0aW9uLWVsZW1lbnQiKTsKK30KKworU3VnZ2VzdGlvbkVsZW1l
bnQ6On5TdWdnZXN0aW9uRWxlbWVudCgpCit7Cit9CisKK1Bhc3NSZWZQdHI8U3VnZ2VzdGlvbkVs
ZW1lbnQ+IFN1Z2dlc3Rpb25FbGVtZW50OjpjcmVhdGUoU3VnZ2VzdGlvbkVsZW1lbnRPd25lciog
b3duZXIsIFN0cmluZyYgdmFsdWUsIERvY3VtZW50JiBkb2N1bWVudCkKK3sKKyAgICByZXR1cm4g
YWRvcHRSZWYobmV3IFN1Z2dlc3Rpb25FbGVtZW50KG93bmVyLCB2YWx1ZSwgSFRNTE5hbWVzOjpk
aXZUYWcsIGRvY3VtZW50KSk7Cit9CisKK3ZvaWQgU3VnZ2VzdGlvbkVsZW1lbnQ6OnVwZGF0ZUFw
cGVhcmFuY2UoaW50IHByZWZpeExlbmd0aCkKK3sKKyAgICBSZWZQdHI8SFRNTFNwYW5FbGVtZW50
PiBwcmVmaXhFbGVtZW50ID0gSFRNTFNwYW5FbGVtZW50OjpjcmVhdGUoSFRNTE5hbWVzOjpzcGFu
VGFnLCBkb2N1bWVudCgpKTsKKyAgICBwcmVmaXhFbGVtZW50LT5hcHBlbmRDaGlsZChUZXh0Ojpj
cmVhdGUoZG9jdW1lbnQoKSwgbV92YWx1ZS5zdWJzdHJpbmcoMCwgcHJlZml4TGVuZ3RoKSkpOwor
ICAgIHByZWZpeEVsZW1lbnQtPnNldFBzZXVkbygiLXdlYmtpdC1zdWdnZXN0aW9uLXByZWZpeC10
ZXh0Iik7CisKKyAgICBhcHBlbmRDaGlsZChwcmVmaXhFbGVtZW50LnJlbGVhc2UoKSwgQVNTRVJU
X05PX0VYQ0VQVElPTik7CisgICAgYXBwZW5kQ2hpbGQoVGV4dDo6Y3JlYXRlKGRvY3VtZW50KCks
IG1fdmFsdWUuc3Vic3RyaW5nKHByZWZpeExlbmd0aCkpLCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsK
K30KKwordm9pZCBTdWdnZXN0aW9uRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCog
ZXZlbnQpCit7CisgICAgaWYgKGV2ZW50LT5pc01vdXNlRXZlbnQoKSkgeworICAgICAgICBpZiAo
ZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkubW91c2Vkb3duRXZlbnQKKyAgICAgICAgICAg
ICYmIChzdGF0aWNfY2FzdDxNb3VzZUV2ZW50Kj4oZXZlbnQpLT5idXR0b24oKSAhPSBSaWdodEJ1
dHRvbikKKyAgICAgICAgICAgICYmIGRvY3VtZW50KCkuZnJhbWUoKSkKKyAgICAgICAgICAgIG1f
b3duZXItPnNlbGVjdCh0aGlzKTsKKyAgICAgICAgZWxzZSBpZiAoZXZlbnQtPnR5cGUoKSA9PSBl
dmVudE5hbWVzKCkubW91c2Vtb3ZlRXZlbnQpCisgICAgICAgICAgICBtX293bmVyLT5mb2N1cyh0
aGlzKTsKKyAgICAgICAgZWxzZSBpZiAoZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkubW91
c2VvdXRFdmVudCkKKyAgICAgICAgICAgIG1fb3duZXItPnVuZm9jdXMoKTsKKyAgICB9Cit9CisK
K3ZvaWQgU3VnZ2VzdGlvbkVsZW1lbnQ6OmZvY3VzZWQoKQoreworICAgIHNldFBzZXVkbygiLXdl
YmtpdC1zdWdnZXN0aW9uLWVsZW1lbnQtZm9jdXNlZCIpOworfQorCit2b2lkIFN1Z2dlc3Rpb25F
bGVtZW50Ojp1bmZvY3VzZWQoKQoreworICAgIHNldFBzZXVkbygiLXdlYmtpdC1zdWdnZXN0aW9u
LWVsZW1lbnQiKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5B
QkxFKERBVEFMSVNUX0VMRU1FTlQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3No
YWRvdy9TdWdnZXN0aW9uRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU3Vn
Z2VzdGlvbkVsZW1lbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMzFjYjBlNmY0ZDM4MDdiMjNkOWIyYTIzZGFi
NGQ2YWI1NmZmOTEwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFk
b3cvU3VnZ2VzdGlvbkVsZW1lbnQuaApAQCAtMCwwICsxLDc4IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE0IENvbGxhYm9yYSBMdGQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlv
bi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1l
cyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJ
UyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAq
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBTdWdnZXN0
aW9uRWxlbWVudF9oCisjZGVmaW5lIFN1Z2dlc3Rpb25FbGVtZW50X2gKKworI2lmIEVOQUJMRShE
QVRBTElTVF9FTEVNRU5UKQorCisjaW5jbHVkZSAiSFRNTERpdkVsZW1lbnQuaCIKKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitjbGFzcyBFdmVudDsKK2NsYXNzIFN1Z2dlc3Rpb25FbGVtZW50T3du
ZXI7CisKK2NsYXNzIFN1Z2dlc3Rpb25FbGVtZW50IDogcHVibGljIEhUTUxEaXZFbGVtZW50IHsK
K3B1YmxpYzoKKyAgICBjbGFzcyBTdWdnZXN0aW9uRWxlbWVudE93bmVyIHsKKyAgICBwdWJsaWM6
CisgICAgICAgIHZpcnR1YWwgflN1Z2dlc3Rpb25FbGVtZW50T3duZXIoKSB7IH0KKyAgICAgICAg
dmlydHVhbCBib29sIHNlbGVjdChTdWdnZXN0aW9uRWxlbWVudCopID0gMDsKKyAgICAgICAgdmly
dHVhbCB2b2lkIGZvY3VzKFN1Z2dlc3Rpb25FbGVtZW50KikgPSAwOworICAgICAgICB2aXJ0dWFs
IHZvaWQgdW5mb2N1cygpID0gMDsKKyAgICB9OworCisgICAgc3RhdGljIFBhc3NSZWZQdHI8U3Vn
Z2VzdGlvbkVsZW1lbnQ+IGNyZWF0ZShTdWdnZXN0aW9uRWxlbWVudE93bmVyKiwgU3RyaW5nJiwg
RG9jdW1lbnQmKTsKKyAgICB2aXJ0dWFsIH5TdWdnZXN0aW9uRWxlbWVudCgpOworCisgICAgdm9p
ZCBmb2N1c2VkKCk7CisgICAgdm9pZCB1bmZvY3VzZWQoKTsKKworICAgIHZvaWQgdXBkYXRlQXBw
ZWFyYW5jZShpbnQgcHJlZml4TGVuZ3RoKTsKKworICAgIFN0cmluZyB2YWx1ZSgpIGNvbnN0IHsg
cmV0dXJuIG1fdmFsdWU7IH0KKworcHJpdmF0ZToKKyAgICBTdWdnZXN0aW9uRWxlbWVudChTdWdn
ZXN0aW9uRWxlbWVudE93bmVyKiwgU3RyaW5nJiwgY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3Vt
ZW50Jik7CisKKyAgICB2aXJ0dWFsIHZvaWQgZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCopOwor
CisgICAgU3VnZ2VzdGlvbkVsZW1lbnRPd25lciogbV9vd25lcjsKKyAgICBTdHJpbmcgbV92YWx1
ZTsKK307CisKK05PREVfVFlQRV9DQVNUUyhTdWdnZXN0aW9uRWxlbWVudCkKKworfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKERBVEFMSVNUX0VMRU1FTlQpCisKKyNl
bmRpZiAvLyBTdWdnZXN0aW9uRWxlbWVudF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ndGsvUmVuZGVyVGhlbWVHdGsuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3RrL1JlbmRlclRoZW1lR3RrLmNwcAppbmRleCA2MjllOGQ2YmUxOTUxODMzOTAzZjU2ZjUwZDBm
OTAxOTI4MzY5MGQwLi5lNTExM2RjNDUxMmU0MGUwZGM4ZDliZjhmMjY4MWUzMzczNWYzM2EwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUmVuZGVyVGhlbWVHdGsuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9SZW5kZXJUaGVtZUd0ay5jcHAKQEAg
LTEsNyArMSw3IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA3IEFwcGxlIEluYy4KICAqIENv
cHlyaWdodCAoQykgMjAwNyBBbHAgVG9rZXIgPGFscEBhdG9rZXIuY29tPgotICogQ29weXJpZ2h0
IChDKSAyMDA4IENvbGxhYm9yYSBMdGQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMTQgQ29s
bGFib3JhIEx0ZC4KICAqIENvcHlyaWdodCAoQykgMjAwOSBLZW5uZXRoIFJvaGRlIENocmlzdGlh
bnNlbgogICogQ29weXJpZ2h0IChDKSAyMDEwIElnYWxpYSBTLkwuCiAgKgpAQCAtNTAsNiArNTAs
MTAgQEAKICNpbmNsdWRlIDxndGsvZ3RrLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5o
PgogCisjaWYgRU5BQkxFKERBVEFMSVNUX0VMRU1FTlQpCisjaW5jbHVkZSAiSW5wdXRUeXBlTmFt
ZXMuaCIKKyNlbmRpZgorCiAjaWYgRU5BQkxFKFBST0dSRVNTX0VMRU1FTlQpCiAjaW5jbHVkZSAi
UmVuZGVyUHJvZ3Jlc3MuaCIKICNlbmRpZgpAQCAtNDc0LDYgKzQ3OCwxMSBAQCB2b2lkIFJlbmRl
clRoZW1lR3RrOjpwbGF0Zm9ybUNvbG9yc0RpZENoYW5nZSgpCiAgICAgUmVuZGVyVGhlbWU6OnBs
YXRmb3JtQ29sb3JzRGlkQ2hhbmdlKCk7CiB9CiAKK1N0cmluZyBSZW5kZXJUaGVtZUd0azo6ZXh0
cmFEZWZhdWx0U3R5bGVTaGVldCgpCit7CisgICAgcmV0dXJuIFN0cmluZyh0aGVtZUd0a1VzZXJB
Z2VudFN0eWxlU2hlZXQsIHNpemVvZih0aGVtZUd0a1VzZXJBZ2VudFN0eWxlU2hlZXQpKTsKK30K
KwogI2lmIEVOQUJMRShWSURFTykKIFN0cmluZyBSZW5kZXJUaGVtZUd0azo6ZXh0cmFNZWRpYUNv
bnRyb2xzU3R5bGVTaGVldCgpCiB7CkBAIC03MjQsNiArNzMzLDE0IEBAIGludCBSZW5kZXJUaGVt
ZUd0azo6c2xpZGVyVGlja09mZnNldEZyb21UcmFja0NlbnRlcigpIGNvbnN0CiAgICAgLy8gRklY
TUU6IFdlIG5lZWQgdG8gc2V0IHRoaXMgdG8gdGhlIHBvc2l0aW9uIG9mIHRoZSB0aWNrIG1hcmtz
LgogICAgIHJldHVybiAwOwogfQorCitib29sIFJlbmRlclRoZW1lR3RrOjpzdXBwb3J0c0RhdGFM
aXN0VUkoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlKSBjb25zdAoreworICAgIHJldHVybiB0eXBl
ID09IElucHV0VHlwZU5hbWVzOjp0ZXh0KCkKKyAgICAgICAgfHwgdHlwZSA9PSBJbnB1dFR5cGVO
YW1lczo6c2VhcmNoKCkKKyAgICAgICAgfHwgdHlwZSA9PSBJbnB1dFR5cGVOYW1lczo6dXJsKCkK
KyAgICAgICAgfHwgdHlwZSA9PSBJbnB1dFR5cGVOYW1lczo6ZW1haWwoKTsKK30KICNlbmRpZgog
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUmVuZGVyVGhlbWVH
dGsuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9SZW5kZXJUaGVtZUd0ay5oCmluZGV4
IDU1ZTAwNjczZmYwNGYzOTEwZTAwZmNjMjFkMjNmYzNmZjdhMDJiZjguLjFkN2RhNGFiZWZlZjUx
NWRlMzJkMWE3YTVmOTdmNDdiNTliNjBmNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2d0ay9SZW5kZXJUaGVtZUd0ay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2d0ay9SZW5kZXJUaGVtZUd0ay5oCkBAIC04NCw2ICs4NCw4IEBAIHB1YmxpYzoKIAogICAgIHZp
cnR1YWwgYm9vbCBwb3BzTWVudUJ5U3BhY2VPclJldHVybigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIHRydWU7IH0KIAorICAgIHZpcnR1YWwgU3RyaW5nIGV4dHJhRGVmYXVsdFN0eWxlU2hlZXQo
KTsKKwogI2lmIEVOQUJMRShWSURFTykKICAgICB2aXJ0dWFsIFN0cmluZyBleHRyYU1lZGlhQ29u
dHJvbHNTdHlsZVNoZWV0KCk7CiAgICAgdmlydHVhbCBTdHJpbmcgZm9ybWF0TWVkaWFDb250cm9s
c0N1cnJlbnRUaW1lKGZsb2F0IGN1cnJlbnRUaW1lLCBmbG9hdCBkdXJhdGlvbikgY29uc3Q7CkBA
IC05Nyw5ICs5OSwxMCBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKERBVEFMSVNUX0VMRU1FTlQpCiAg
ICAgLy8gUmV0dXJucyBzaXplIG9mIG9uZSBzbGlkZXIgdGljayBtYXJrIGZvciBhIGhvcml6b250
YWwgdHJhY2suCiAgICAgLy8gRm9yIHZlcnRpY2FsIHRyYWNrcyB3ZSByb3RhdGUgaXQgYW5kIHVz
ZSBpdC4gaS5lLiBXaWR0aCBpcyBhbHdheXMgbGVuZ3RoIGFsb25nIHRoZSB0cmFjay4KLSAgICB2
aXJ0dWFsIEludFNpemUgc2xpZGVyVGlja1NpemUoKSBjb25zdDsKKyAgICB2aXJ0dWFsIEludFNp
emUgc2xpZGVyVGlja1NpemUoKSBjb25zdCBvdmVycmlkZTsKICAgICAvLyBSZXR1cm5zIHRoZSBk
aXN0YW5jZSBvZiBzbGlkZXIgdGljayBvcmlnaW4gZnJvbSB0aGUgc2xpZGVyIHRyYWNrIGNlbnRl
ci4KLSAgICB2aXJ0dWFsIGludCBzbGlkZXJUaWNrT2Zmc2V0RnJvbVRyYWNrQ2VudGVyKCkgY29u
c3Q7CisgICAgdmlydHVhbCBpbnQgc2xpZGVyVGlja09mZnNldEZyb21UcmFja0NlbnRlcigpIGNv
bnN0IG92ZXJyaWRlOworICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0RhdGFMaXN0VUkoY29uc3Qg
QXRvbWljU3RyaW5nJikgY29uc3Qgb3ZlcnJpZGU7CiAjZW5kaWYKIAogI2lmZGVmIEdUS19BUElf
VkVSU0lPTl8yCmRpZmYgLS1naXQgYS9Tb3VyY2UvYXV0b3Rvb2xzL1ByaW50QnVpbGRDb25maWd1
cmF0aW9uLm00IGIvU291cmNlL2F1dG90b29scy9QcmludEJ1aWxkQ29uZmlndXJhdGlvbi5tNApp
bmRleCA3MDI5OTViZTRjM2Y0MWQxYTc1ZDc5NmU3ODdmZjYyOWQzNTZhNmEyLi5kMGM2NDQxZDQ5
MWNjOTAzYWE1ZjhiYTQ2Mzk4Zjg3MmNmYWMzODYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvYXV0b3Rv
b2xzL1ByaW50QnVpbGRDb25maWd1cmF0aW9uLm00CisrKyBiL1NvdXJjZS9hdXRvdG9vbHMvUHJp
bnRCdWlsZENvbmZpZ3VyYXRpb24ubTQKQEAgLTI1LDYgKzI1LDcgQEAgRmVhdHVyZXM6CiAgQWNj
ZWxlcmF0ZWQgQ29tcG9zaXRpbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAk
ZW5hYmxlX2FjY2VsZXJhdGVkX2NvbXBvc2l0aW5nCiAgQWNjZWxlcmF0ZWQgMkQgY2FudmFzICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAkZW5hYmxlX2FjY2VsZXJhdGVkX2Nh
bnZhcwogIEJhdHRlcnkgQVBJIHN1cHBvcnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDogJGVuYWJsZV9iYXR0ZXJ5X3N0YXR1cworIERhdGFsaXN0IGVsZW1lbnQgc3VwcG9y
dCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJGVuYWJsZV9kYXRhbGlzdF9lbGVt
ZW50CiAgR2FtZXBhZCBzdXBwb3J0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgOiAkZW5hYmxlX2dhbWVwYWQKICBHZW9sb2NhdGlvbiBzdXBwb3J0ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA6ICRlbmFibGVfZ2VvbG9jYXRpb24KICBIVE1MNSB2
aWRlbyBlbGVtZW50IHN1cHBvcnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICRlbmFi
bGVfdmlkZW8KZGlmZiAtLWdpdCBhL1NvdXJjZS9hdXRvdG9vbHMvUmVhZENvbW1hbmRMaW5lQXJn
dW1lbnRzLm00IGIvU291cmNlL2F1dG90b29scy9SZWFkQ29tbWFuZExpbmVBcmd1bWVudHMubTQK
aW5kZXggN2Q1NmUxM2Q0OTMwOWU0NWZkZGI3ZWFjZmFiMGY1ZTI2ZmEyYzZiNy4uZDNjNmFmYTcy
MzNhYjA0ZmFmNjYxZjRmNmFlNjRmNDNjODRiNjQ5NSAxMDA2NDQKLS0tIGEvU291cmNlL2F1dG90
b29scy9SZWFkQ29tbWFuZExpbmVBcmd1bWVudHMubTQKKysrIGIvU291cmNlL2F1dG90b29scy9S
ZWFkQ29tbWFuZExpbmVBcmd1bWVudHMubTQKQEAgLTIyNCw0ICsyMjQsOSBAQCBBQ19BUkdfRU5B
QkxFKFtpbnRyb3NwZWN0aW9uXSwKICAgICBbZW5hYmxlX2ludHJvc3BlY3Rpb249bm9dKQogQUNf
TVNHX1JFU1VMVChbJGVuYWJsZV9pbnRyb3NwZWN0aW9uXSkKIAotCitBQ19NU0dfQ0hFQ0tJTkco
W3doZXRoZXIgdG8gZW5hYmxlIERhdGFsaXN0IGVsZW1lbnQgc3VwcG9ydF0pCitBQ19BUkdfRU5B
QkxFKFtkYXRhbGlzdC1lbGVtZW50XSwKKyAgICBBU19IRUxQX1NUUklORyhbLS1lbmFibGUtZGF0
YWxpc3QtZWxlbWVudF0sW0VuYWJsZSBEYXRhbGlzdCBlbGVtZW50IChkZWZhdWx0OiBkaXNhYmxl
ZCldKSwKKyAgICBbXSwKKyAgICBbZW5hYmxlX2RhdGFsaXN0X2VsZW1lbnQ9bm9dKQorQUNfTVNH
X1JFU1VMVChbJGVuYWJsZV9kYXRhbGlzdF9lbGVtZW50XSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9h
dXRvdG9vbHMvU2V0dXBBdXRvbWFrZS5tNCBiL1NvdXJjZS9hdXRvdG9vbHMvU2V0dXBBdXRvbWFr
ZS5tNAppbmRleCAzNTMyZGIyYjVlOWRhNGQyN2QxMTVmNDlkZDE0Yjk1MWU5YWYyZjAwLi4yNGU3
YWM0YWZkNzk2ZGE4YzMwYmE0YTlmNTE4ZjRkZDczYjY5NmNiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
YXV0b3Rvb2xzL1NldHVwQXV0b21ha2UubTQKKysrIGIvU291cmNlL2F1dG90b29scy9TZXR1cEF1
dG9tYWtlLm00CkBAIC01Myw2ICs1Myw3IEBAIEFNX0NPTkRJVElPTkFMKFtVU0VfR0xFUzJdLCBb
dGVzdCAiJGVuYWJsZV9nbGVzMiIgPSAieWVzIl0pCiAjIFdlYktpdCBmZWF0dXJlIGNvbmRpdGlv
bmFscy4KIEFNX0NPTkRJVElPTkFMKFtFTkFCTEVfREVWRUxPUEVSX01PREVdLCBbdGVzdCAiJGVu
YWJsZV9kZXZlbG9wZXJfbW9kZSIgPSAieWVzIl0pCiBBTV9DT05ESVRJT05BTChbRU5BQkxFX0RF
QlVHXSxbdGVzdCAiJGVuYWJsZV9kZWJ1ZyIgPSAieWVzIl0pCitBTV9DT05ESVRJT05BTChbRU5B
QkxFX0RBVEFMSVNUX0VMRU1FTlRdLFt0ZXN0ICIkZW5hYmxlX2RhdGFsaXN0X2VsZW1lbnQiID0g
InllcyJdKQogQU1fQ09ORElUSU9OQUwoW0VOQUJMRV9XRUJHTF0sW3Rlc3QgIiRlbmFibGVfd2Vi
Z2wiID0gInllcyJdKQogQU1fQ09ORElUSU9OQUwoW0VOQUJMRV9WSURFT10sW3Rlc3QgIiRlbmFi
bGVfdmlkZW8iID0gInllcyJdKQogQU1fQ09ORElUSU9OQUwoW0VOQUJMRV9DT1ZFUkFHRV0sW3Rl
c3QgIiRlbmFibGVfY292ZXJhZ2UiID0gInllcyJdKQpkaWZmIC0tZ2l0IGEvU291cmNlL2F1dG90
b29scy9TZXR1cFdlYktpdEZlYXR1cmVzLm00IGIvU291cmNlL2F1dG90b29scy9TZXR1cFdlYktp
dEZlYXR1cmVzLm00CmluZGV4IDVkYWY3YjlmNjIxZTY2YmYyYjJjOTA5MWRhNmZiMTBkNDg0MDQ1
YjEuLmIwNjEyM2ZkYmYwMDJkZDU2OWYwZjFlOTkyYTJjOWI0MWNiZTYxOTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9hdXRvdG9vbHMvU2V0dXBXZWJLaXRGZWF0dXJlcy5tNAorKysgYi9Tb3VyY2UvYXV0
b3Rvb2xzL1NldHVwV2ViS2l0RmVhdHVyZXMubTQKQEAgLTc3LDYgKzc3LDEyIEBAIGVsc2UKICAg
ICBDT05GSUdVUkFCTEVfRkVBVFVSRV9ERUZJTkVTPSIkQ09ORklHVVJBQkxFX0ZFQVRVUkVfREVG
SU5FUyBFTkFCTEVfQkFUVEVSWV9TVEFUVVM9MCIKIGZpCiAKK2lmIHRlc3QgIiRlbmFibGVfZGF0
YWxpc3RfZWxlbWVudCIgPSAieWVzIjsgdGhlbgorICAgIENPTkZJR1VSQUJMRV9GRUFUVVJFX0RF
RklORVM9IiRDT05GSUdVUkFCTEVfRkVBVFVSRV9ERUZJTkVTIEVOQUJMRV9EQVRBTElTVF9FTEVN
RU5UPTEiCitlbHNlCisgICAgQ09ORklHVVJBQkxFX0ZFQVRVUkVfREVGSU5FUz0iJENPTkZJR1VS
QUJMRV9GRUFUVVJFX0RFRklORVMgRU5BQkxFX0RBVEFMSVNUX0VMRU1FTlQ9MCIKK2ZpCisKICMg
VGhpcyBsaXN0IG9mIGZlYXR1cmVzIHJlcHJlc2VudHMgdGhvc2Ugc2VsZWN0ZWQgZm9yIHJlbGVh
c2UgYnVpbGRzLiAgSWYgeW91IGFyZQogIyBhZGRpbmcgYSBuZXcgb3IgdW5zdGFibGUgZmVhdHVy
ZSwgeW91IHNob3VsZCBtYXJrIGl0IGRpc2FibGVkIGhlcmUuIFdlIG5lZWQgdG8gcnVuCiAjIHRo
aXMgY29tbWFuZCBub3cgcmF0aGVyIHRoYW4gdXNlIEFDX0NPTkZJR19DT01NQU5EUyBiZWNhdXNl
IGF1dG9tYWtlIHJ1bGVzIGRlcGVuZApAQCAtMTAyLDcgKzEwOCw2IEBAICRzcmNkaXIvVG9vbHMv
Z3RrL2dlbmVyYXRlLWZlYXR1cmUtZGVmaW5lcy1maWxlcyAkQ09ORklHVVJBQkxFX0ZFQVRVUkVf
REVGSU5FUyBcCiAgICAgRU5BQkxFX0NTUzNfQ09ORElUSU9OQUxfUlVMRVM9MCBcCiAgICAgRU5B
QkxFX0NVU1RPTV9TQ0hFTUVfSEFORExFUj0wIFwKICAgICBFTkFCTEVfREFTSEJPQVJEX1NVUFBP
UlQ9MCBcCi0gICAgRU5BQkxFX0RBVEFMSVNUX0VMRU1FTlQ9MCBcCiAgICAgRU5BQkxFX0RBVEFf
VFJBTlNGRVJfSVRFTVM9MCBcCiAgICAgRU5BQkxFX0RFVEFJTFNfRUxFTUVOVD0xIFwKICAgICBF
TkFCTEVfREVWSUNFX09SSUVOVEFUSU9OPTAgXApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDlhOGUxZTAyNGVhNjQ5Y2E5NTlh
YzRmYzUyMTJjZDRhZGMyN2YyZmIuLjM3Y2MyYjI4NWZkMDc0MmYzMWI5ZjgxMGEzMmY4MDQ4Njk2
NmRlMGUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxNC0wMi0wNyAgQ2hhbmdTZW9rIE9oICA8
Y2hhbmdzZW9rLm9oQGNvbGxhYm9yYS5jb20+CisKKyAgICAgICAgRGF0YWxpc3QgZWxlbWVudCBz
dXBwb3J0IGZvciBUZXh0RmllbGRJbnB1dFR5cGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTk4OTM0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgQWRkIGEgdGVzdCB0byB2ZXJpZnkgaWYgdGV4dGZpZWxkIGNv
dWxkIGJlIGZpbGxlZCB3aXRoIGEgZGF0YWxpc3Qgb3B0aW9uCisgICAgICAgIGFjY29yZGluZyB0
byBrZXkgZXZlbnRzLgorCisgICAgICAgICogZmFzdC9mb3Jtcy9kYXRhbGlzdC90ZXh0ZmllbGQt
d2l0aC1kYXRhbGlzdC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZm9ybXMv
ZGF0YWxpc3QvdGV4dGZpZWxkLXdpdGgtZGF0YWxpc3QuaHRtbDogQWRkZWQuCisKIDIwMTQtMDIt
MDYgIEd5dXlvdW5nIEtpbSAgPGd5dXlvdW5nLmtpbUBzYW1zdW5nLmNvbT4KIAogICAgICAgICBB
ZGQgYSB0ZXN0IGNhc2UgZm9yIG5hdmlnYXRvci5pc1Byb3RvY29sSGFuZGxlclJlZ2lzdGVyZWQK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvZGF0YWxpc3QvdGV4dGZpZWxkLXdp
dGgtZGF0YWxpc3QtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9kYXRhbGlz
dC90ZXh0ZmllbGQtd2l0aC1kYXRhbGlzdC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDc0MmQ4
ODQxZThjZmJmMmU1MjZhODdhMGZkYjE4MDk0ZTM0YTQzZQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2Zhc3QvZm9ybXMvZGF0YWxpc3QvdGV4dGZpZWxkLXdpdGgtZGF0YWxpc3QtZXhw
ZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTIgQEAKK1Rlc3QgZGF0YWxpc3Qgc3VwcG9ydCBmb3IgdGV4
dGZpZWxkLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1l
c3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBzdWNjZXNzZnVs
bHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCitQQVNTIHRleHRmaWVsZC52YWx1ZSBp
cyAiU2FmYXJpIgorUEFTUyB0ZXh0ZmllbGQudmFsdWUgaXMgIlNhZmFyaSIKK1BBU1MgdGV4dGZp
ZWxkLnZhbHVlIGlzICJTYWZhcmkiCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9y
bXMvZGF0YWxpc3QvdGV4dGZpZWxkLXdpdGgtZGF0YWxpc3QuaHRtbCBiL0xheW91dFRlc3RzL2Zh
c3QvZm9ybXMvZGF0YWxpc3QvdGV4dGZpZWxkLXdpdGgtZGF0YWxpc3QuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li44NTM3NmI3ODIwODZjZjg3OTQ4ZTY0ZjdjOGRiNzJiODY2MzU2YmE0Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9kYXRhbGlzdC90ZXh0ZmllbGQtd2l0aC1kYXRh
bGlzdC5odG1sCkBAIC0wLDAgKzEsNTIgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVU
Ri8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorICA8aGVhZD4KKyAgICA8c2NyaXB0IHNyYz0iLi4v
Li4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0Pgor
ICAgICAgZnVuY3Rpb24gdGVzdCgpCisgICAgICB7CisgICAgICAgIGRlc2NyaXB0aW9uKCdUZXN0
IGRhdGFsaXN0IHN1cHBvcnQgZm9yIHRleHRmaWVsZC4nKTsKKyAgICAgICAgaWYgKHdpbmRvdy5l
dmVudFNlbmRlcikgeworICAgICAgICAgIHZhciB0ZXh0ZmllbGQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgndGV4dGZpZWxkJyk7CisKKyAgICAgICAgICB0ZXh0ZmllbGQuZm9jdXMoKTsKKyAg
ICAgICAgICBldmVudFNlbmRlci5rZXlEb3duKCdkb3duQXJyb3cnKTsKKyAgICAgICAgICBldmVu
dFNlbmRlci5rZXlEb3duKCdkb3duQXJyb3cnKTsKKyAgICAgICAgICBldmVudFNlbmRlci5rZXlE
b3duKCdkb3duQXJyb3cnKTsKKyAgICAgICAgICBldmVudFNlbmRlci5rZXlEb3duKCdkb3duQXJy
b3cnKTsKKyAgICAgICAgICBldmVudFNlbmRlci5rZXlEb3duKCdkb3duQXJyb3cnKTsKKyAgICAg
ICAgICBldmVudFNlbmRlci5rZXlEb3duKCdkb3duQXJyb3cnKTsKKyAgICAgICAgICBldmVudFNl
bmRlci5rZXlEb3duKCJcbiIpOworICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygndGV4
dGZpZWxkLnZhbHVlJywgJ1NhZmFyaScpOworCisgICAgICAgICAgdGV4dGZpZWxkLnZhbHVlID0g
Jyc7CisgICAgICAgICAgdGV4dGZpZWxkLmZvY3VzKCk7CisgICAgICAgICAgZXZlbnRTZW5kZXIu
a2V5RG93bigndXBBcnJvdycpOworICAgICAgICAgIGV2ZW50U2VuZGVyLmtleURvd24oJ3VwQXJy
b3cnKTsKKyAgICAgICAgICBldmVudFNlbmRlci5rZXlEb3duKCJcbiIpOworICAgICAgICAgIHNo
b3VsZEJlRXF1YWxUb1N0cmluZygndGV4dGZpZWxkLnZhbHVlJywgJ1NhZmFyaScpOworCisgICAg
ICAgICAgdGV4dGZpZWxkLnZhbHVlID0gJyc7CisgICAgICAgICAgdGV4dGZpZWxkLmZvY3VzKCk7
CisgICAgICAgICAgZXZlbnRTZW5kZXIua2V5RG93bigncycpOworICAgICAgICAgIGV2ZW50U2Vu
ZGVyLmtleURvd24oJ2Rvd25BcnJvdycpOworICAgICAgICAgIGV2ZW50U2VuZGVyLmtleURvd24o
IlxuIik7CisgICAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCd0ZXh0ZmllbGQudmFsdWUn
LCAnU2FmYXJpJyk7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICA8L3NjcmlwdD4KKyAgPC9oZWFk
PgorICA8Ym9keSBvbmxvYWQ9InRlc3QoKTsiPgorICAgIDxwIGlkPSJkZXNjcmlwdGlvbiI+PC9w
PgorICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgIDxpbnB1dCBpZD0idGV4dGZpZWxk
IiB0eXBlPSd0ZXh0JyBsaXN0PSJicm93c2VycyIgbmFtZT0iYnJvd3NlciI+CisgICAgPGRhdGFs
aXN0IGlkPSJicm93c2VycyI+CisgICAgICA8b3B0aW9uIHZhbHVlPSJDaHJvbWUiPgorICAgICAg
PG9wdGlvbiB2YWx1ZT0iRmlyZWZveCI+CisgICAgICA8b3B0aW9uIHZhbHVlPSJJbnRlcm5ldCBF
eHBsb3JlciI+CisgICAgICA8b3B0aW9uIHZhbHVlPSJPcGVyYSI+CisgICAgICA8b3B0aW9uIHZh
bHVlPSJTYWZhcmkiPgorICAgIDwvZGF0YWxpc3Q+CisgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
L3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorICA8L2JvZHk+Cis8L2h0bWw+
CmRpZmYgLS1naXQgYS9DaGFuZ2VMb2cgYi9DaGFuZ2VMb2cKaW5kZXggOTZkMDVjOWU5N2ViM2Jh
M2VmNzc4YTRiZDM4MTI2YmZlMGU2NmJjMi4uOWMxMDRjYjFkODc4YmZmMWFlZjdmYWRjOTc3NzJl
YmU3MWI4NzAyNSAxMDA2NDQKLS0tIGEvQ2hhbmdlTG9nCisrKyBiL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE3IEBACisyMDE0LTAyLTA3ICBDaGFuZ1Nlb2sgT2ggIDxjaGFuZ3Nlb2sub2hAY29sbGFi
b3JhLmNvbT4KKworICAgICAgICBEYXRhbGlzdCBlbGVtZW50IHN1cHBvcnQgZm9yIFRleHRGaWVs
ZElucHV0VHlwZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9OTg5MzQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBBZGQgYSBidWlsZCBvcHRpb24gdG8gZW5hYmxlIGRhdGFsaXN0IGZvciBndGsgcG9ydC4KKwor
ICAgICAgICAqIFNvdXJjZS9hdXRvdG9vbHMvUHJpbnRCdWlsZENvbmZpZ3VyYXRpb24ubTQ6Cisg
ICAgICAgICogU291cmNlL2F1dG90b29scy9SZWFkQ29tbWFuZExpbmVBcmd1bWVudHMubTQ6Cisg
ICAgICAgICogU291cmNlL2F1dG90b29scy9TZXR1cEF1dG9tYWtlLm00OgorICAgICAgICAqIFNv
dXJjZS9hdXRvdG9vbHMvU2V0dXBXZWJLaXRGZWF0dXJlcy5tNDoKKwogMjAxNC0wMi0wNiAgSm9z
ZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgogCiAgICAgICAgIFtpT1NdIG1ha2Ug
c2hvdWxkIGJ1aWxkIFdlYktpdDIK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>375155</attachid>
            <date>2019-07-30 06:04:27 -0700</date>
            <delta_ts>2019-07-30 06:12:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>wkgtk-datalist.diff</filename>
            <type>text/plain</type>
            <size>28355</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCA0NTllODI5NjkwYy4uNWVl
MWRkOTRmOWEgMTAwNjQ0Ci0tLSBhL0NoYW5nZUxvZworKysgYi9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxNCBAQAorMjAxOS0wNy0zMCAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxp
YS5jb20+CisKKyAgICAgICAgW0dUS10gRGF0YWxpc3QgZWxlbWVudCBzdXBwb3J0IGZvciBUZXh0
RmllbGRJbnB1dFR5cGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTk4OTM0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgRW5hYmxlIERBVEFMSVNUX0VMRU1FTlQuCisKKyAgICAgICAgKiBTb3VyY2UvY21ha2Uv
T3B0aW9uc0dUSy5jbWFrZToKKwogMjAxOS0wNy0yNCAgRnVqaWkgSGlyb25vcmkgIDxmdWppaS5o
aXJvbm9yaUBnbWFpbC5jb20+CiAKICAgICAgICAgW0NNYWtlXSBDTUFLRV9TSEFSRURfTElOS0VS
X0ZMQUdTIGRyb3BzICItV2wsLS1uby11bmRlZmluZWQiCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggZmM1MTE1MGYyZGEuLjky
NzhiZTgxMTkxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTktMDctMzAgIENhcmxvcyBHYXJj
aWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEtdIERhdGFsaXN0
IGVsZW1lbnQgc3VwcG9ydCBmb3IgVGV4dEZpZWxkSW5wdXRUeXBlCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05ODkzNAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVuc2tpcCBkYXRhbGlzdCB0ZXN0cyBmb3Ig
R1RLIHBvcnQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvVGVzdEV4cGVjdGF0aW9uczoKKwog
MjAxOS0wNy0yOCAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KIAogICAg
ICAgICBSZW9yZ2FuaXplIFVJU2NyaXB0Q29udHJvbGxlciBpbnRvIHBsYXRmb3JtLXNwZWNpZmlj
IHN1YmNsYXNzZXMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9UZXN0RXhw
ZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1Rlc3RFeHBlY3RhdGlvbnMKaW5k
ZXggNzFlNjg1Njc4MTMuLmU3NzkwZDdiYWJlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9ndGsvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsv
VGVzdEV4cGVjdGF0aW9ucwpAQCAtMTc3LDEwICsxNzcsNiBAQCB3ZWJraXQub3JnL2IvOTg5Mjcg
ZmFzdC9kb20vRGV2aWNlT3JpZW50YXRpb24gWyBTa2lwIF0KIGZhc3QvaGlzdG9yeS9wYWdlLWNh
Y2hlLW5vdGlmaWNhdGlvbi1ub24tc3VzcGVuZGFibGUuaHRtbAogZmFzdC9oaXN0b3J5L3BhZ2Ut
Y2FjaGUtbm90aWZpY2F0aW9uLXN1c3BlbmRhYmxlLmh0bWwKIAotIyBEYXRhbGlzdCBpcyBub3Qg
eWV0IGVuYWJsZWQuCi1hY2Nlc3NpYmlsaXR5L2RhdGFsaXN0Lmh0bWwgWyBTa2lwIF0KLXdlYmtp
dC5vcmcvYi85ODkzNCBmYXN0L2Zvcm1zL2RhdGFsaXN0IFsgU2tpcCBdCi0KICMgRU5BQkxFX0lO
UFVUX1RZUEVfKiBhcmUgbm90IGVuYWJsZWQuCiB3ZWJraXQub3JnL2IvOTg5MzYgZmFzdC9mb3Jt
cy9kYXRlIFsgU2tpcCBdCiB3ZWJraXQub3JnL2IvOTg5MzYgZmFzdC9mb3Jtcy9kYXRldGltZSBb
IFNraXAgXQpAQCAtMzc5OSw2ICszNzk1LDcgQEAgd2Via2l0Lm9yZy9iLzE5OTAwOSBmYXN0L3Rl
eHQvdmFyaWF0aW9ucy9vcHRpY2FsLXNpemluZy11bml0cy5odG1sIFsgSW1hZ2VPbmx5RmEKIHdl
YmtpdC5vcmcvYi8xOTk4NTkgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3Nz
LXRleHQvbGluZS1icmVhay9saW5lLWJyZWFrLWFueXdoZXJlLTAwMS5odG1sIFsgSW1hZ2VPbmx5
RmFpbHVyZSBdCiAKIHdlYmtpdC5vcmcvYi8xOTk4NjAgYWNjZXNzaWJpbGl0eS9idXR0b24td2l0
aC1hcmlhLWhhc3BvcHVwLXJvbGUuaHRtbCBbIEZhaWx1cmUgXQord2Via2l0Lm9yZy9iLzE5OTg2
MCBhY2Nlc3NpYmlsaXR5L2RhdGFsaXN0Lmh0bWwgWyBGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi8x
OTk4NjggYWNjZXNzaWJpbGl0eS9ndGsvYXJpYS1oYXNwb3B1cC5odG1sIFsgRmFpbHVyZSBdCiAK
IHdlYmtpdC5vcmcvYi8xOTk0NDAgZmFzdC9tZWRpYXN0cmVhbS9hcHBseS1jb25zdHJhaW50cy12
aWRlby5odG1sIFsgRmFpbHVyZSBdCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjc1ODA0ODQxNDcuLmJjNGZjZDBl
OTc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTktMDctMzAgIENhcmxvcyBHYXJj
aWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEtdIERhdGFsaXN0
IGVsZW1lbnQgc3VwcG9ydCBmb3IgVGV4dEZpZWxkSW5wdXRUeXBlCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05ODkzNAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciByZW5kZXJpbmcg
dGhlIGFycm93IGluZGljYXRvciBvZiB0ZXh0IGZpZWxkcyBoYXZpbmcgZGF0YSBsaXN0LgorCisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lR3RrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclRoZW1lR3RrOjpwYWludFRleHRGaWVsZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJUaGVtZUd0azo6YWRqdXN0TGlzdEJ1dHRvblN0eWxlIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclRoZW1lR3RrOjpwYWludExpc3RCdXR0b25Gb3JJbnB1dCk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJUaGVtZUd0azo6YWRqdXN0U2VhcmNoRmllbGRTdHlsZSBjb25zdCk6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lR3RrLmg6CisKIDIwMTktMDctMjkgIENhcmxv
cyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFdlYlNvY2tl
dHM6IHdvcmtlcnMgbmV2ZXIgdXNlIHRoZSBwbGF0Zm9ybSBXZWJTb2NrZXRzIHBhdGgKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUd0ay5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVHdGsuY3BwCmluZGV4IDZkYzE5Y2EzZDhl
Li40Y2M1NTEzMTM2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRoZW1lR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVH
dGsuY3BwCkBAIC01MjAsNiArNTIwLDE0IEBAIGJvb2wgUmVuZGVyVGhlbWVHdGs6OnBhaW50VGV4
dEZpZWxkKGNvbnN0IFJlbmRlck9iamVjdCYgcmVuZGVyT2JqZWN0LCBjb25zdCBQYWluCiAgICAg
ICAgIGF1dG8mIGVudHJ5V2lkZ2V0ID0gc3RhdGljX2Nhc3Q8UmVuZGVyVGhlbWVFbnRyeSY+KFJl
bmRlclRoZW1lV2lkZ2V0OjpnZXRPckNyZWF0ZShSZW5kZXJUaGVtZVdpZGdldDo6VHlwZTo6RW50
cnkpKTsKICAgICAgICAgZW50cnlXaWRnZXQuZW50cnkoKS5zZXRTdGF0ZSh0aGVtZVBhcnRTdGF0
ZUZsYWdzKCp0aGlzLCBFbnRyeSwgcmVuZGVyT2JqZWN0KSk7CiAgICAgICAgIGVudHJ5V2lkZ2V0
LmVudHJ5KCkucmVuZGVyKHBhaW50SW5mby5jb250ZXh0KCkucGxhdGZvcm1Db250ZXh0KCktPmNy
KCksIHJlY3QpOworCisjaWYgRU5BQkxFKERBVEFMSVNUX0VMRU1FTlQpCisgICAgICAgIGlmIChp
czxIVE1MSW5wdXRFbGVtZW50PihyZW5kZXJPYmplY3QuZ2VuZXJhdGluZ05vZGUoKSkpIHsKKyAg
ICAgICAgICAgIGNvbnN0IGF1dG8mIGlucHV0ID0gZG93bmNhc3Q8SFRNTElucHV0RWxlbWVudD4o
KihyZW5kZXJPYmplY3QuZ2VuZXJhdGluZ05vZGUoKSkpOworICAgICAgICAgICAgaWYgKGlucHV0
Lmxpc3QoKSkKKyAgICAgICAgICAgICAgICBwYWludExpc3RCdXR0b25Gb3JJbnB1dChyZW5kZXJP
YmplY3QsIHBhaW50SW5mbywgcmVjdCk7CisgICAgICAgIH0KKyNlbmRpZgogICAgIH0KICAgICBy
ZXR1cm4gZmFsc2U7CiB9CkBAIC01OTcsNiArNjA1LDM0IEBAIGJvb2wgUmVuZGVyVGhlbWVHdGs6
OnBhaW50U2VhcmNoRmllbGRDYW5jZWxCdXR0b24oY29uc3QgUmVuZGVyQm94JiByZW5kZXJPYmpl
Y3QsCiAgICAgcmV0dXJuIHBhaW50U2VhcmNoRmllbGRJY29uKHRoaXMsIEVudHJ5SWNvblJpZ2h0
LCByZW5kZXJPYmplY3QsIHBhaW50SW5mbywgcmVjdCk7CiB9CiAKKyNpZiBFTkFCTEUoREFUQUxJ
U1RfRUxFTUVOVCkKK3ZvaWQgUmVuZGVyVGhlbWVHdGs6OmFkanVzdExpc3RCdXR0b25TdHlsZShT
dHlsZVJlc29sdmVyJiwgUmVuZGVyU3R5bGUmIHN0eWxlLCBjb25zdCBFbGVtZW50KikgY29uc3QK
K3sKKyAgICAvLyBBZGQgYSBtYXJnaW4gdG8gcGxhY2UgdGhlIGJ1dHRvbiBhdCBlbmQgb2YgdGhl
IGlucHV0IGZpZWxkLgorICAgIGlmIChzdHlsZS5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkpCisg
ICAgICAgIHN0eWxlLnNldE1hcmdpblJpZ2h0KExlbmd0aCgtNCwgRml4ZWQpKTsKKyAgICBlbHNl
CisgICAgICAgIHN0eWxlLnNldE1hcmdpbkxlZnQoTGVuZ3RoKC00LCBGaXhlZCkpOworfQorCit2
b2lkIFJlbmRlclRoZW1lR3RrOjpwYWludExpc3RCdXR0b25Gb3JJbnB1dChjb25zdCBSZW5kZXJP
YmplY3QmIHJlbmRlck9iamVjdCwgY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IEZs
b2F0UmVjdCYgcmVjdCkKK3sKKyAgICAvLyBVc2UgYSBjb21ibyBib3ggd2lkZ2V0IHRvIHJlbmRl
ciBpdHMgYXJyb3cuCisgICAgYXV0byYgY29tYm9XaWRnZXQgPSBzdGF0aWNfY2FzdDxSZW5kZXJU
aGVtZUNvbWJvQm94Jj4oUmVuZGVyVGhlbWVXaWRnZXQ6OmdldE9yQ3JlYXRlKFJlbmRlclRoZW1l
V2lkZ2V0OjpUeXBlOjpDb21ib0JveCkpOworICAgIGNvbWJvV2lkZ2V0LmFycm93KCkuc2V0U3Rh
dGUodGhlbWVQYXJ0U3RhdGVGbGFncygqdGhpcywgQ29tYm9Cb3hCdXR0b24sIHJlbmRlck9iamVj
dCkpOworCisgICAgLy8gQnV0IGEgc2VhcmNoIGVudHJ5IHdpZGdldCB0byBnZXQgdGhlIGNvbnRl
bnRzIHJlY3QsIHNpbmNlIHRoaXMgaXMgYSB0ZXh0IGlucHV0IGZpZWxkLgorICAgIGF1dG8mIHNl
YXJjaEVudHJ5V2lkZ2V0ID0gc3RhdGljX2Nhc3Q8UmVuZGVyVGhlbWVTZWFyY2hFbnRyeSY+KFJl
bmRlclRoZW1lV2lkZ2V0OjpnZXRPckNyZWF0ZShSZW5kZXJUaGVtZVdpZGdldDo6VHlwZTo6U2Vh
cmNoRW50cnkpKTsKKyAgICBhdXRvJiBpY29uID0gc3RhdGljX2Nhc3Q8UmVuZGVyVGhlbWVJY29u
R2FkZ2V0Jj4oc2VhcmNoRW50cnlXaWRnZXQucmlnaHRJY29uKCkpOworICAgIGljb24uc2V0SWNv
blNpemUoY29tYm9XaWRnZXQuYXJyb3coKS5wcmVmZXJyZWRTaXplKCkud2lkdGgoKSk7CisgICAg
R3RrQm9yZGVyIGNvbnRlbnRzQm94ID0gc2VhcmNoRW50cnlXaWRnZXQuZW50cnkoKS5jb250ZW50
c0JveCgpOworICAgIEZsb2F0UmVjdCBhZGp1c3RlZFJlY3QocmVjdCk7CisgICAgYWRqdXN0ZWRS
ZWN0Lm1vdmUoY29udGVudHNCb3gubGVmdCwgY29udGVudHNCb3gudG9wKTsKKyAgICBhZGp1c3Rl
ZFJlY3QuY29udHJhY3QoY29udGVudHNCb3gucmlnaHQgKyAxLCBjb250ZW50c0JveC50b3AgKyBj
b250ZW50c0JveC5ib3R0b20pOworICAgIGNvbWJvV2lkZ2V0LmFycm93KCkucmVuZGVyKHBhaW50
SW5mby5jb250ZXh0KCkucGxhdGZvcm1Db250ZXh0KCktPmNyKCksIGFkanVzdGVkUmVjdCk7Cit9
CisjZW5kaWYKKwogdm9pZCBSZW5kZXJUaGVtZUd0azo6YWRqdXN0U2VhcmNoRmllbGRTdHlsZShT
dHlsZVJlc29sdmVyJiwgUmVuZGVyU3R5bGUmIHN0eWxlLCBjb25zdCBFbGVtZW50KikgY29uc3QK
IHsKICAgICAvLyBXZSBjYW5ub3QgZ2l2ZSBhIHByb3BlciByZW5kZXJpbmcgd2hlbiBib3JkZXIg
cmFkaXVzIGlzIGFjdGl2ZSwgdW5mb3J0dW5hdGVseS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUd0ay5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRoZW1lR3RrLmgKaW5kZXggZTE0NzZkMjIyNjMuLmQ2YWEwNWRlMGMyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVHdGsuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVHdGsuaApAQCAtMTQzLDYgKzE0MywxMSBA
QCBwcml2YXRlOgogICAgIHZvaWQgYWRqdXN0U2VhcmNoRmllbGRDYW5jZWxCdXR0b25TdHlsZShT
dHlsZVJlc29sdmVyJiwgUmVuZGVyU3R5bGUmLCBjb25zdCBFbGVtZW50KikgY29uc3Qgb3ZlcnJp
ZGU7CiAgICAgYm9vbCBwYWludFNlYXJjaEZpZWxkQ2FuY2VsQnV0dG9uKGNvbnN0IFJlbmRlckJv
eCYsIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKSBvdmVycmlkZTsKIAorI2lmIEVO
QUJMRShEQVRBTElTVF9FTEVNRU5UKQorICAgIHZvaWQgcGFpbnRMaXN0QnV0dG9uRm9ySW5wdXQo
Y29uc3QgUmVuZGVyT2JqZWN0JiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgRmxvYXRSZWN0Jik7
CisgICAgdm9pZCBhZGp1c3RMaXN0QnV0dG9uU3R5bGUoU3R5bGVSZXNvbHZlciYsIFJlbmRlclN0
eWxlJiwgY29uc3QgRWxlbWVudCopIGNvbnN0IG92ZXJyaWRlOworI2VuZGlmCisKICAgICBib29s
IHBhaW50U2xpZGVyVHJhY2soY29uc3QgUmVuZGVyT2JqZWN0JiwgY29uc3QgUGFpbnRJbmZvJiwg
Y29uc3QgSW50UmVjdCYpIG92ZXJyaWRlOwogICAgIHZvaWQgYWRqdXN0U2xpZGVyVHJhY2tTdHls
ZShTdHlsZVJlc29sdmVyJiwgUmVuZGVyU3R5bGUmLCBjb25zdCBFbGVtZW50KikgY29uc3Qgb3Zl
cnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKaW5kZXggZTJmZjdiODljMmQuLjVjNmIxYTQ5MDY1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpA
QCAtMSwzICsxLDI4IEBACisyMDE5LTA3LTMwICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJj
aWFAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXSBEYXRhbGlzdCBlbGVtZW50IHN1cHBvcnQg
Zm9yIFRleHRGaWVsZElucHV0VHlwZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9OTg5MzQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBBZGQgYSBXZWJEYXRhTGlzdFN1Z2dlc3Rpb25zRHJvcGRvd24gaW1wbGVt
ZW50YXRpb24gZm9yIHRoZSBHVEsgcG9ydCB1c2luZyBhIHBvcHVwIHdpbmRvdyB3aXRoIGEgdHJl
ZSB2aWV3IGxpc3QuCisKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBTb3VyY2Vz
R1RLLnR4dDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5jcHA6
CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpjcmVhdGVEYXRhTGlzdFN1Z2dlc3Rp
b25zRHJvcGRvd24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGllbnRJbXBs
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL2d0ay9XZWJEYXRhTGlzdFN1Z2dlc3Rpb25zRHJvcGRv
d25HdGsuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6Zmlyc3RUaW1lSXRlbVNlbGVjdGVk
Q2FsbGJhY2spOgorICAgICAgICAoV2ViS2l0OjpXZWJEYXRhTGlzdFN1Z2dlc3Rpb25zRHJvcGRv
d25HdGs6OldlYkRhdGFMaXN0U3VnZ2VzdGlvbnNEcm9wZG93bkd0ayk6CisgICAgICAgIChXZWJL
aXQ6OldlYkRhdGFMaXN0U3VnZ2VzdGlvbnNEcm9wZG93bkd0azo6fldlYkRhdGFMaXN0U3VnZ2Vz
dGlvbnNEcm9wZG93bkd0ayk6CisgICAgICAgIChXZWJLaXQ6OldlYkRhdGFMaXN0U3VnZ2VzdGlv
bnNEcm9wZG93bkd0azo6dHJlZVZpZXdSb3dBY3RpdmF0ZWRDYWxsYmFjayk6CisgICAgICAgIChX
ZWJLaXQ6OldlYkRhdGFMaXN0U3VnZ2VzdGlvbnNEcm9wZG93bkd0azo6ZGlkU2VsZWN0T3B0aW9u
KToKKyAgICAgICAgKFdlYktpdDo6V2ViRGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3duR3RrOjpz
aG93KToKKyAgICAgICAgKFdlYktpdDo6V2ViRGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3duR3Rr
OjpoYW5kbGVLZXlkb3duV2l0aElkZW50aWZpZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJEYXRh
TGlzdFN1Z2dlc3Rpb25zRHJvcGRvd25HdGs6OmNsb3NlKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
Z3RrL1dlYkRhdGFMaXN0U3VnZ2VzdGlvbnNEcm9wZG93bkd0ay5oOiBDb3BpZWQgZnJvbSBUb29s
cy9XZWJLaXRUZXN0UnVubmVyL2d0ay9VSVNjcmlwdENvbnRyb2xsZXJHdGsuaC4KKwogMjAxOS0w
Ny0yNyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIEFsbG93IG1v
cmUgc3lzY2FsbHMgaW4gdGhlIFdlYkNvbnRlbnQgcHJvY2Vzcycgc2FuZGJveCBwcm9maWxlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0IGIvU291cmNlL1dlYktpdC9Tb3Vy
Y2VzLnR4dAppbmRleCAxYjc1ZDdhMDQwYi4uNzkxNmUyM2I3N2UgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dApAQCAt
MjY4LDYgKzI2OCw3IEBAIFVJUHJvY2Vzcy9XZWJDb250ZXh0TWVudUxpc3RlbmVyUHJveHkuY3Bw
CiBVSVByb2Nlc3MvV2ViQ29udGV4dE1lbnVQcm94eS5jcHAKIFVJUHJvY2Vzcy9XZWJDb29raWVN
YW5hZ2VyUHJveHkuY3BwCiBVSVByb2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5Q2xpZW50LmNw
cAorVUlQcm9jZXNzL1dlYkRhdGFMaXN0U3VnZ2VzdGlvbnNEcm9wZG93bi5jcHAKIFVJUHJvY2Vz
cy9XZWJFZGl0Q29tbWFuZFByb3h5LmNwcAogVUlQcm9jZXNzL1dlYkZvcm1DbGllbnQuY3BwCiBV
SVByb2Nlc3MvV2ViRm9ybVN1Ym1pc3Npb25MaXN0ZW5lclByb3h5LmNwcApAQCAtNTMyLDYgKzUz
Myw3IEBAIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvU2Vzc2lvblN0YXRlQ29udmVyc2lvbi5j
cHAKIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAogV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDb2xvckNob29zZXIuY3BwCiBXZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmNwcAorV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJEYXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXIuY3BwCiBXZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkRpYWdub3N0aWNMb2dnaW5nQ2xpZW50LmNwcAogV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJEcmFnQ2xpZW50LmNwcAogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJF
ZGl0b3JDbGllbnQuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNHVEsudHh0
IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzR1RLLnR4dAppbmRleCA0YjVkZGQ3ZDY1MC4uMGYyYjk4
YjAzNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNlc0dUSy50eHQKKysrIGIvU291
cmNlL1dlYktpdC9Tb3VyY2VzR1RLLnR4dApAQCAtMjUxLDYgKzI1MSw3IEBAIFVJUHJvY2Vzcy9n
dGsvVmlld1NuYXBzaG90U3RvcmVHdGsuY3BwCiBVSVByb2Nlc3MvZ3RrL1dheWxhbmRDb21wb3Np
dG9yLmNwcCBAbm8tdW5pZnkKIFVJUHJvY2Vzcy9ndGsvV2ViQ29sb3JQaWNrZXJHdGsuY3BwCiBV
SVByb2Nlc3MvZ3RrL1dlYkNvbnRleHRNZW51UHJveHlHdGsuY3BwCitVSVByb2Nlc3MvZ3RrL1dl
YkRhdGFMaXN0U3VnZ2VzdGlvbnNEcm9wZG93bkd0ay5jcHAKIFVJUHJvY2Vzcy9ndGsvV2ViSW5z
cGVjdG9yUHJveHlHdGsuY3BwCiBVSVByb2Nlc3MvZ3RrL1dlYktpdEluc3BlY3RvcldpbmRvdy5j
cHAKIFVJUHJvY2Vzcy9ndGsvV2ViUGFnZVByb3h5R3RrLmNwcCBAbm8tdW5pZnkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwuY3BwIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5jcHAKaW5kZXgg
NjI4Y2QyYTcyNmEuLmYwOWQ2YzdlOTIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvZ3RrL1BhZ2VDbGllbnRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvZ3RrL1BhZ2VDbGllbnRJbXBsLmNwcApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1
ZGUgIlZpZXdTbmFwc2hvdFN0b3JlLmgiCiAjaW5jbHVkZSAiV2ViQ29sb3JQaWNrZXJHdGsuaCIK
ICNpbmNsdWRlICJXZWJDb250ZXh0TWVudVByb3h5R3RrLmgiCisjaW5jbHVkZSAiV2ViRGF0YUxp
c3RTdWdnZXN0aW9uc0Ryb3Bkb3duR3RrLmgiCiAjaW5jbHVkZSAiV2ViRXZlbnRGYWN0b3J5Lmgi
CiAjaW5jbHVkZSAiV2ViS2l0Q29sb3JDaG9vc2VyLmgiCiAjaW5jbHVkZSAiV2ViS2l0UG9wdXBN
ZW51LmgiCkBAIC0yNTAsNiArMjUxLDEzIEBAIFJlZlB0cjxXZWJDb2xvclBpY2tlcj4gUGFnZUNs
aWVudEltcGw6OmNyZWF0ZUNvbG9yUGlja2VyKFdlYlBhZ2VQcm94eSogcGFnZSwgY29uCiAgICAg
cmV0dXJuIFdlYkNvbG9yUGlja2VyR3RrOjpjcmVhdGUoKnBhZ2UsIGNvbG9yLCByZWN0KTsKIH0K
IAorI2lmIEVOQUJMRShEQVRBTElTVF9FTEVNRU5UKQorUmVmUHRyPFdlYkRhdGFMaXN0U3VnZ2Vz
dGlvbnNEcm9wZG93bj4gUGFnZUNsaWVudEltcGw6OmNyZWF0ZURhdGFMaXN0U3VnZ2VzdGlvbnNE
cm9wZG93bihXZWJQYWdlUHJveHkmIHBhZ2UpCit7CisgICAgcmV0dXJuIFdlYkRhdGFMaXN0U3Vn
Z2VzdGlvbnNEcm9wZG93bkd0azo6Y3JlYXRlKG1fdmlld1dpZGdldCwgcGFnZSk7Cit9CisjZW5k
aWYKKwogdm9pZCBQYWdlQ2xpZW50SW1wbDo6ZW50ZXJBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9k
ZShjb25zdCBMYXllclRyZWVDb250ZXh0JiBsYXllclRyZWVDb250ZXh0KQogewogICAgIHdlYmtp
dFdlYlZpZXdCYXNlRW50ZXJBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZShXRUJLSVRfV0VCX1ZJ
RVdfQkFTRShtX3ZpZXdXaWRnZXQpLCBsYXllclRyZWVDb250ZXh0KTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwuaCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwuaAppbmRleCA1NTgyODExMTZj
NS4uM2M2YzUxNTk1NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9n
dGsvUGFnZUNsaWVudEltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3Rr
L1BhZ2VDbGllbnRJbXBsLmgKQEAgLTkzLDYgKzkzLDkgQEAgcHJpdmF0ZToKICAgICBSZWY8V2Vi
Q29udGV4dE1lbnVQcm94eT4gY3JlYXRlQ29udGV4dE1lbnVQcm94eShXZWJQYWdlUHJveHkmLCBD
b250ZXh0TWVudUNvbnRleHREYXRhJiYsIGNvbnN0IFVzZXJEYXRhJikgb3ZlcnJpZGU7CiAjaWYg
RU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCiAgICAgUmVmUHRyPFdlYkNvbG9yUGlja2VyPiBjcmVh
dGVDb2xvclBpY2tlcihXZWJQYWdlUHJveHkqLCBjb25zdCBXZWJDb3JlOjpDb2xvciYgaW5pdGlh
bENvbG9yLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiwgVmVjdG9yPFdlYkNvcmU6OkNvbG9yPiYm
KSBvdmVycmlkZTsKKyNlbmRpZgorI2lmIEVOQUJMRShEQVRBTElTVF9FTEVNRU5UKQorICAgIFJl
ZlB0cjxXZWJEYXRhTGlzdFN1Z2dlc3Rpb25zRHJvcGRvd24+IGNyZWF0ZURhdGFMaXN0U3VnZ2Vz
dGlvbnNEcm9wZG93bihXZWJQYWdlUHJveHkmKSBvdmVycmlkZTsKICNlbmRpZgogICAgIHZvaWQg
c2VsZWN0aW9uRGlkQ2hhbmdlKCkgb3ZlcnJpZGU7CiAgICAgUmVmUHRyPFZpZXdTbmFwc2hvdD4g
dGFrZVZpZXdTbmFwc2hvdCgpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvZ3RrL1dlYkRhdGFMaXN0U3VnZ2VzdGlvbnNEcm9wZG93bkd0ay5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvV2ViRGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3duR3Rr
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uMzY5MzU4ZGRjNmQK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvV2ViRGF0YUxp
c3RTdWdnZXN0aW9uc0Ryb3Bkb3duR3RrLmNwcApAQCAtMCwwICsxLDIxNiBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxOSBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIldlYkRhdGFMaXN0U3VnZ2VzdGlvbnNEcm9wZG93bkd0ay5oIgorCisjaWYg
RU5BQkxFKERBVEFMSVNUX0VMRU1FTlQpCisKKyNpbmNsdWRlIDxXZWJDb3JlL0RhdGFMaXN0U3Vn
Z2VzdGlvbkluZm9ybWF0aW9uLmg+CisjaW5jbHVkZSA8d3RmL2dsaWIvR1JlZlB0ci5oPgorI2lu
Y2x1ZGUgPHd0Zi9nbGliL0dVbmlxdWVQdHIuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3N0
YXRpYyB2b2lkIGZpcnN0VGltZUl0ZW1TZWxlY3RlZENhbGxiYWNrKEd0a1RyZWVTZWxlY3Rpb24q
IHNlbGVjdGlvbiwgR3RrV2lkZ2V0KiB0cmVlVmlldykKK3sKKyAgICBpZiAoZ3RrX3dpZGdldF9p
c19mb2N1cyh0cmVlVmlldykpCisgICAgICAgIGd0a190cmVlX3NlbGVjdGlvbl91bnNlbGVjdF9h
bGwoc2VsZWN0aW9uKTsKKyAgICBnX3NpZ25hbF9oYW5kbGVyc19kaXNjb25uZWN0X2J5X2Z1bmMo
c2VsZWN0aW9uLCByZWludGVycHJldF9jYXN0PGdwb2ludGVyPihmaXJzdFRpbWVJdGVtU2VsZWN0
ZWRDYWxsYmFjayksIHRyZWVWaWV3KTsKK30KKworV2ViRGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bk
b3duR3RrOjpXZWJEYXRhTGlzdFN1Z2dlc3Rpb25zRHJvcGRvd25HdGsoR3RrV2lkZ2V0KiB3ZWJW
aWV3LCBXZWJQYWdlUHJveHkmIHBhZ2UpCisgICAgOiBXZWJEYXRhTGlzdFN1Z2dlc3Rpb25zRHJv
cGRvd24ocGFnZSkKKyAgICAsIG1fd2ViVmlldyh3ZWJWaWV3KQoreworICAgIEdSZWZQdHI8R3Rr
TGlzdFN0b3JlPiBtb2RlbCA9IGFkb3B0R1JlZihndGtfbGlzdF9zdG9yZV9uZXcoMSwgR19UWVBF
X1NUUklORykpOworICAgIG1fdHJlZVZpZXcgPSBndGtfdHJlZV92aWV3X25ld193aXRoX21vZGVs
KEdUS19UUkVFX01PREVMKG1vZGVsLmdldCgpKSk7CisgICAgYXV0byogdHJlZVZpZXcgPSBHVEtf
VFJFRV9WSUVXKG1fdHJlZVZpZXcpOworICAgIGdfc2lnbmFsX2Nvbm5lY3QodHJlZVZpZXcsICJy
b3ctYWN0aXZhdGVkIiwgR19DQUxMQkFDSyh0cmVlVmlld1Jvd0FjdGl2YXRlZENhbGxiYWNrKSwg
dGhpcyk7CisgICAgZ3RrX3RyZWVfdmlld19zZXRfZW5hYmxlX3NlYXJjaCh0cmVlVmlldywgRkFM
U0UpOworICAgIGd0a190cmVlX3ZpZXdfc2V0X2FjdGl2YXRlX29uX3NpbmdsZV9jbGljayh0cmVl
VmlldywgVFJVRSk7CisgICAgZ3RrX3RyZWVfdmlld19zZXRfaG92ZXJfc2VsZWN0aW9uKHRyZWVW
aWV3LCBUUlVFKTsKKyAgICBndGtfdHJlZV92aWV3X3NldF9oZWFkZXJzX3Zpc2libGUodHJlZVZp
ZXcsIEZBTFNFKTsKKyAgICBndGtfdHJlZV92aWV3X2luc2VydF9jb2x1bW5fd2l0aF9hdHRyaWJ1
dGVzKHRyZWVWaWV3LCAwLCBudWxscHRyLCBndGtfY2VsbF9yZW5kZXJlcl90ZXh0X25ldygpLCAi
dGV4dCIsIDAsIG51bGxwdHIpOworCisgICAgYXV0byogc2VsZWN0aW9uID0gZ3RrX3RyZWVfdmll
d19nZXRfc2VsZWN0aW9uKHRyZWVWaWV3KTsKKyAgICAvLyBUaGUgZmlyc3QgdGltZSBpdCdzIHNo
b3duIHRoZSBmaXJzdCBpdGVtIGlzIGFsd2F5cyBzZWxlY3RlZCwgc28gd2UgY29ubmVjdCB0byBz
ZWxlY3Rpb24gY2hhbmdlZCB0byB1bnNlbGVjdCBpdC4KKyAgICBnX3NpZ25hbF9jb25uZWN0X29i
amVjdChzZWxlY3Rpb24sICJjaGFuZ2VkIiwgR19DQUxMQkFDSyhmaXJzdFRpbWVJdGVtU2VsZWN0
ZWRDYWxsYmFjayksIHRyZWVWaWV3LCBzdGF0aWNfY2FzdDxHQ29ubmVjdEZsYWdzPigwKSk7Cisg
ICAgZ3RrX3RyZWVfc2VsZWN0aW9uX3NldF9tb2RlKHNlbGVjdGlvbiwgR1RLX1NFTEVDVElPTl9T
SU5HTEUpOworCisgICAgYXV0byogc3dpbmRvdyA9IGd0a19zY3JvbGxlZF93aW5kb3dfbmV3KG51
bGxwdHIsIG51bGxwdHIpOworICAgIGd0a19zY3JvbGxlZF93aW5kb3dfc2V0X3BvbGljeShHVEtf
U0NST0xMRURfV0lORE9XKHN3aW5kb3cpLCBHVEtfUE9MSUNZX05FVkVSLCBHVEtfUE9MSUNZX0FV
VE9NQVRJQyk7CisgICAgZ3RrX3Njcm9sbGVkX3dpbmRvd19zZXRfc2hhZG93X3R5cGUoR1RLX1ND
Uk9MTEVEX1dJTkRPVyhzd2luZG93KSwgR1RLX1NIQURPV19FVENIRURfSU4pOworICAgIGd0a19j
b250YWluZXJfYWRkKEdUS19DT05UQUlORVIoc3dpbmRvdyksIG1fdHJlZVZpZXcpOworICAgIGd0
a193aWRnZXRfc2hvdyhtX3RyZWVWaWV3KTsKKworICAgIG1fcG9wdXAgPSBndGtfd2luZG93X25l
dyhHVEtfV0lORE9XX1BPUFVQKTsKKyAgICBndGtfd2luZG93X3NldF90eXBlX2hpbnQoR1RLX1dJ
TkRPVyhtX3BvcHVwKSwgR0RLX1dJTkRPV19UWVBFX0hJTlRfQ09NQk8pOworICAgIGd0a193aW5k
b3dfc2V0X3Jlc2l6YWJsZShHVEtfV0lORE9XKG1fcG9wdXApLCBGQUxTRSk7CisgICAgZ3RrX2Nv
bnRhaW5lcl9hZGQoR1RLX0NPTlRBSU5FUihtX3BvcHVwKSwgc3dpbmRvdyk7CisgICAgZ3RrX3dp
ZGdldF9zaG93KHN3aW5kb3cpOworCisgICAgZ19zaWduYWxfY29ubmVjdF9vYmplY3QobV93ZWJW
aWV3LCAiZm9jdXMtb3V0LWV2ZW50IiwgR19DQUxMQkFDSyhndGtfd2lkZ2V0X2hpZGUpLCBtX3Bv
cHVwLCBHX0NPTk5FQ1RfU1dBUFBFRCk7CisgICAgZ19zaWduYWxfY29ubmVjdF9vYmplY3QobV93
ZWJWaWV3LCAidW5tYXAtZXZlbnQiLCBHX0NBTExCQUNLKGd0a193aWRnZXRfaGlkZSksIG1fcG9w
dXAsIEdfQ09OTkVDVF9TV0FQUEVEKTsKKworI2lmIEVOQUJMRShERVZFTE9QRVJfTU9ERSkKKyAg
ICBnX29iamVjdF9zZXRfZGF0YShHX09CSkVDVChtX3dlYlZpZXcpLCAid2stZGF0YWxpc3QtcG9w
dXAiLCBtX3BvcHVwKTsKKyNlbmRpZgorfQorCitXZWJEYXRhTGlzdFN1Z2dlc3Rpb25zRHJvcGRv
d25HdGs6On5XZWJEYXRhTGlzdFN1Z2dlc3Rpb25zRHJvcGRvd25HdGsoKQoreworICAgIGd0a193
aW5kb3dfc2V0X3RyYW5zaWVudF9mb3IoR1RLX1dJTkRPVyhtX3BvcHVwKSwgbnVsbHB0cik7Cisg
ICAgZ3RrX3dpbmRvd19zZXRfYXR0YWNoZWRfdG8oR1RLX1dJTkRPVyhtX3BvcHVwKSwgbnVsbHB0
cik7CisjaWYgRU5BQkxFKERFVkVMT1BFUl9NT0RFKQorICAgIGdfb2JqZWN0X3NldF9kYXRhKEdf
T0JKRUNUKG1fd2ViVmlldyksICJ3ay1kYXRhbGlzdC1wb3B1cCIsIG51bGxwdHIpOworI2VuZGlm
CisgICAgZ3RrX3dpZGdldF9kZXN0cm95KG1fcG9wdXApOworfQorCit2b2lkIFdlYkRhdGFMaXN0
U3VnZ2VzdGlvbnNEcm9wZG93bkd0azo6dHJlZVZpZXdSb3dBY3RpdmF0ZWRDYWxsYmFjayhHdGtU
cmVlVmlldyogdHJlZVZpZXcsIEd0a1RyZWVQYXRoKiBwYXRoLCBHdGtUcmVlVmlld0NvbHVtbios
IFdlYkRhdGFMaXN0U3VnZ2VzdGlvbnNEcm9wZG93bkd0ayogbWVudSkKK3sKKyAgICBhdXRvKiBt
b2RlbCA9IGd0a190cmVlX3ZpZXdfZ2V0X21vZGVsKHRyZWVWaWV3KTsKKyAgICBHdGtUcmVlSXRl
ciBpdGVyOworICAgIGd0a190cmVlX21vZGVsX2dldF9pdGVyKG1vZGVsLCAmaXRlciwgcGF0aCk7
CisgICAgR1VuaXF1ZU91dFB0cjxjaGFyPiBpdGVtOworICAgIGd0a190cmVlX21vZGVsX2dldCht
b2RlbCwgJml0ZXIsIDAsICZpdGVtLm91dFB0cigpLCAtMSk7CisKKyAgICBtZW51LT5kaWRTZWxl
Y3RPcHRpb24oU3RyaW5nOjpmcm9tVVRGOChpdGVtLmdldCgpKSk7Cit9CisKK3ZvaWQgV2ViRGF0
YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3duR3RrOjpkaWRTZWxlY3RPcHRpb24oY29uc3QgU3RyaW5n
JiBzZWxlY3RlZE9wdGlvbikKK3sKKyAgICBpZiAoIW1fcGFnZSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgbV9wYWdlLT5kaWRTZWxlY3RPcHRpb24oc2VsZWN0ZWRPcHRpb24pOworICAgIGNsb3Nl
KCk7Cit9CisKK3ZvaWQgV2ViRGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3duR3RrOjpzaG93KFdl
YkNvcmU6OkRhdGFMaXN0U3VnZ2VzdGlvbkluZm9ybWF0aW9uJiYgaW5mb3JtYXRpb24pCit7Cisg
ICAgYXV0byogbW9kZWwgPSBHVEtfTElTVF9TVE9SRShndGtfdHJlZV92aWV3X2dldF9tb2RlbChH
VEtfVFJFRV9WSUVXKG1fdHJlZVZpZXcpKSk7CisgICAgZ3RrX2xpc3Rfc3RvcmVfY2xlYXIobW9k
ZWwpOworICAgIGZvciAoY29uc3QgYXV0byYgc3VnZ2VzdGlvbiA6IGluZm9ybWF0aW9uLnN1Z2dl
c3Rpb25zKSB7CisgICAgICAgIEd0a1RyZWVJdGVyIGl0ZXI7CisgICAgICAgIGd0a19saXN0X3N0
b3JlX2FwcGVuZChtb2RlbCwgJml0ZXIpOworICAgICAgICBndGtfbGlzdF9zdG9yZV9zZXQobW9k
ZWwsICZpdGVyLCAwLCBzdWdnZXN0aW9uLnV0ZjgoKS5kYXRhKCksIC0xKTsKKyAgICB9CisKKyAg
ICBHdGtSZXF1aXNpdGlvbiB0cmVlVmlld1JlcXVpc2l0aW9uOworICAgIGd0a193aWRnZXRfZ2V0
X3ByZWZlcnJlZF9zaXplKG1fdHJlZVZpZXcsICZ0cmVlVmlld1JlcXVpc2l0aW9uLCBudWxscHRy
KTsKKyAgICBhdXRvKiBjb2x1bW4gPSBndGtfdHJlZV92aWV3X2dldF9jb2x1bW4oR1RLX1RSRUVf
VklFVyhtX3RyZWVWaWV3KSwgMCk7CisgICAgZ2ludCBpdGVtSGVpZ2h0OworICAgIGd0a190cmVl
X3ZpZXdfY29sdW1uX2NlbGxfZ2V0X3NpemUoY29sdW1uLCBudWxscHRyLCBudWxscHRyLCBudWxs
cHRyLCBudWxscHRyLCAmaXRlbUhlaWdodCk7CisgICAgZ2ludCB2ZXJ0aWNhbFNlcGFyYXRvcjsK
KyAgICBndGtfd2lkZ2V0X3N0eWxlX2dldChtX3RyZWVWaWV3LCAidmVydGljYWwtc2VwYXJhdG9y
IiwgJnZlcnRpY2FsU2VwYXJhdG9yLCBudWxscHRyKTsKKyAgICBpdGVtSGVpZ2h0ICs9IHZlcnRp
Y2FsU2VwYXJhdG9yOworICAgIGlmICghaXRlbUhlaWdodCkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgYXV0byogZGlzcGxheSA9IGd0a193aWRnZXRfZ2V0X2Rpc3BsYXkobV93ZWJWaWV3KTsKKyAg
ICBhdXRvKiBtb25pdG9yID0gZ2RrX2Rpc3BsYXlfZ2V0X21vbml0b3JfYXRfd2luZG93KGRpc3Bs
YXksIGd0a193aWRnZXRfZ2V0X3dpbmRvdyhtX3dlYlZpZXcpKTsKKyAgICBHZGtSZWN0YW5nbGUg
YXJlYTsKKyAgICBnZGtfbW9uaXRvcl9nZXRfd29ya2FyZWEobW9uaXRvciwgJmFyZWEpOworICAg
IGludCB3aWR0aCA9IHN0ZDo6bWluKGluZm9ybWF0aW9uLmVsZW1lbnRSZWN0LndpZHRoKCksIGFy
ZWEud2lkdGgpOworICAgIHNpemVfdCBpdGVtQ291bnQgPSBzdGQ6Om1pbjxzaXplX3Q+KGluZm9y
bWF0aW9uLnN1Z2dlc3Rpb25zLnNpemUoKSwgKGFyZWEuaGVpZ2h0IC8gMykgLyBpdGVtSGVpZ2h0
KTsKKworICAgIGF1dG8qIHN3aW5kb3cgPSBHVEtfU0NST0xMRURfV0lORE9XKGd0a19iaW5fZ2V0
X2NoaWxkKEdUS19CSU4obV9wb3B1cCkpKTsKKyAgICAvLyBEaXNhYmxlIHNjcm9sbGJhcnMgd2hl
biB0aGVyZSdzIG9ubHkgb25lIGl0ZW0gdG8gZW5zdXJlIHRoZSBzY3JvbGxlZCB3aW5kb3cgZG9l
c24ndCB0YWtlIHRoZW0gaW50byBhY2NvdW50IHdoZW4gY2FsY3VsYXRpbmcgaXRzIG1pbmltdW0g
c2l6ZS4KKyAgICBndGtfc2Nyb2xsZWRfd2luZG93X3NldF9wb2xpY3koc3dpbmRvdywgR1RLX1BP
TElDWV9ORVZFUiwgaXRlbUNvdW50ID4gMSA/IEdUS19QT0xJQ1lfQVVUT01BVElDIDogR1RLX1BP
TElDWV9ORVZFUik7CisgICAgZ3RrX3dpZGdldF9yZWFsaXplKG1fdHJlZVZpZXcpOworICAgIGd0
a190cmVlX3ZpZXdfY29sdW1uc19hdXRvc2l6ZShHVEtfVFJFRV9WSUVXKG1fdHJlZVZpZXcpKTsK
KyAgICBndGtfc2Nyb2xsZWRfd2luZG93X3NldF9taW5fY29udGVudF93aWR0aChzd2luZG93LCB3
aWR0aCk7CisgICAgZ3RrX3dpZGdldF9zZXRfc2l6ZV9yZXF1ZXN0KG1fcG9wdXAsIHdpZHRoLCAt
MSk7CisgICAgZ3RrX3Njcm9sbGVkX3dpbmRvd19zZXRfbWluX2NvbnRlbnRfaGVpZ2h0KHN3aW5k
b3csIGl0ZW1Db3VudCAqIGl0ZW1IZWlnaHQpOworCisgICAgR3RrUmVxdWlzaXRpb24gbWVudVJl
cXVpc2l0aW9uOworICAgIGd0a193aWRnZXRfZ2V0X3ByZWZlcnJlZF9zaXplKG1fcG9wdXAsICZt
ZW51UmVxdWlzaXRpb24sIG51bGxwdHIpOworICAgIEludFBvaW50IG1lbnVQb3NpdGlvbiA9IGNv
bnZlcnRXaWRnZXRQb2ludFRvU2NyZWVuUG9pbnQobV93ZWJWaWV3LCBpbmZvcm1hdGlvbi5lbGVt
ZW50UmVjdC5sb2NhdGlvbigpKTsKKyAgICAvLyBGSVhNRTogV2UgY2FuJ3QgZW5zdXJlIHRoZSBt
ZW51IHdpbGwgYmUgb24gc2NyZWVuIGluIFdheWxhbmQuCisgICAgLy8gaHR0cHM6Ly9ibG9nLmd0
ay5vcmcvMjAxNi8wNy8xNS9mdXR1cmUtb2YtcmVsYXRpdmUtd2luZG93LXBvc2l0aW9uaW5nLwor
ICAgIC8vIGh0dHBzOi8vZ2l0bGFiLmdub21lLm9yZy9HTk9NRS9ndGsvaXNzdWVzLzk5NworICAg
IGlmIChtZW51UG9zaXRpb24ueCgpICsgbWVudVJlcXVpc2l0aW9uLndpZHRoID4gYXJlYS54ICsg
YXJlYS53aWR0aCkKKyAgICAgICAgbWVudVBvc2l0aW9uLnNldFgoYXJlYS54ICsgYXJlYS53aWR0
aCAtIG1lbnVSZXF1aXNpdGlvbi53aWR0aCk7CisKKyAgICBpZiAobWVudVBvc2l0aW9uLnkoKSAr
IGluZm9ybWF0aW9uLmVsZW1lbnRSZWN0LmhlaWdodCgpICsgbWVudVJlcXVpc2l0aW9uLmhlaWdo
dCA8PSBhcmVhLnkgKyBhcmVhLmhlaWdodAorICAgICAgICB8fCBtZW51UG9zaXRpb24ueSgpIC0g
YXJlYS55IDwgKGFyZWEueSArIGFyZWEuaGVpZ2h0KSAtIChtZW51UG9zaXRpb24ueSgpICsgaW5m
b3JtYXRpb24uZWxlbWVudFJlY3QuaGVpZ2h0KCkpKQorICAgICAgICBtZW51UG9zaXRpb24ubW92
ZSgwLCBpbmZvcm1hdGlvbi5lbGVtZW50UmVjdC5oZWlnaHQoKSk7CisgICAgZWxzZQorICAgICAg
ICBtZW51UG9zaXRpb24ubW92ZSgwLCAtbWVudVJlcXVpc2l0aW9uLmhlaWdodCk7CisgICAgZ3Rr
X3dpbmRvd19tb3ZlKEdUS19XSU5ET1cobV9wb3B1cCksIG1lbnVQb3NpdGlvbi54KCksIG1lbnVQ
b3NpdGlvbi55KCkpOworCisgICAgYXV0byogdG9wbGV2ZWwgPSBndGtfd2lkZ2V0X2dldF90b3Bs
ZXZlbChtX3dlYlZpZXcpOworICAgIGlmIChHVEtfSVNfV0lORE9XKHRvcGxldmVsKSkgeworICAg
ICAgICBndGtfd2luZG93X3NldF90cmFuc2llbnRfZm9yKEdUS19XSU5ET1cobV9wb3B1cCksIEdU
S19XSU5ET1codG9wbGV2ZWwpKTsKKyAgICAgICAgZ3RrX3dpbmRvd19ncm91cF9hZGRfd2luZG93
KGd0a193aW5kb3dfZ2V0X2dyb3VwKEdUS19XSU5ET1codG9wbGV2ZWwpKSwgR1RLX1dJTkRPVyht
X3BvcHVwKSk7CisgICAgfQorICAgIGd0a193aW5kb3dfc2V0X2F0dGFjaGVkX3RvKEdUS19XSU5E
T1cobV9wb3B1cCksIG1fd2ViVmlldyk7CisgICAgZ3RrX3dpbmRvd19zZXRfc2NyZWVuKEdUS19X
SU5ET1cobV9wb3B1cCksIGd0a193aWRnZXRfZ2V0X3NjcmVlbihtX3dlYlZpZXcpKTsKKworICAg
IGd0a193aWRnZXRfc2hvdyhtX3BvcHVwKTsKK30KKwordm9pZCBXZWJEYXRhTGlzdFN1Z2dlc3Rp
b25zRHJvcGRvd25HdGs6OmhhbmRsZUtleWRvd25XaXRoSWRlbnRpZmllcihjb25zdCBTdHJpbmcm
IGtleSkKK3sKKyAgICBhdXRvKiBzZWxlY3Rpb24gPSBndGtfdHJlZV92aWV3X2dldF9zZWxlY3Rp
b24oR1RLX1RSRUVfVklFVyhtX3RyZWVWaWV3KSk7CisgICAgR3RrVHJlZU1vZGVsKiBtb2RlbDsK
KyAgICBHdGtUcmVlSXRlciBpdGVyOworICAgIGJvb2wgaGFzU2VsZWN0aW9uID0gZ3RrX3RyZWVf
c2VsZWN0aW9uX2dldF9zZWxlY3RlZChzZWxlY3Rpb24sICZtb2RlbCwgJml0ZXIpOworICAgIGlm
IChrZXkgPT0gIkVudGVyIikgeworICAgICAgICBpZiAoaGFzU2VsZWN0aW9uKSB7CisgICAgICAg
ICAgICBHVW5pcXVlT3V0UHRyPGNoYXI+IGl0ZW07CisgICAgICAgICAgICBndGtfdHJlZV9tb2Rl
bF9nZXQobW9kZWwsICZpdGVyLCAwLCAmaXRlbS5vdXRQdHIoKSwgLTEpOworICAgICAgICAgICAg
bV9wYWdlLT5kaWRTZWxlY3RPcHRpb24oU3RyaW5nOjpmcm9tVVRGOChpdGVtLmdldCgpKSk7Cisg
ICAgICAgIH0KKyAgICAgICAgY2xvc2UoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAg
IGlmIChrZXkgPT0gIlVwIikgeworICAgICAgICBpZiAoKGhhc1NlbGVjdGlvbiAmJiBndGtfdHJl
ZV9tb2RlbF9pdGVyX3ByZXZpb3VzKG1vZGVsLCAmaXRlcikpIHx8IGd0a190cmVlX21vZGVsX2l0
ZXJfbnRoX2NoaWxkKG1vZGVsLCAmaXRlciwgbnVsbHB0ciwgZ3RrX3RyZWVfbW9kZWxfaXRlcl9u
X2NoaWxkcmVuKG1vZGVsLCBudWxscHRyKSAtIDEpKQorICAgICAgICAgICAgZ3RrX3RyZWVfc2Vs
ZWN0aW9uX3NlbGVjdF9pdGVyKHNlbGVjdGlvbiwgJml0ZXIpOworICAgICAgICBlbHNlCisgICAg
ICAgICAgICByZXR1cm47CisgICAgfSBlbHNlIGlmIChrZXkgPT0gIkRvd24iKSB7CisgICAgICAg
IGlmICgoaGFzU2VsZWN0aW9uICYmIGd0a190cmVlX21vZGVsX2l0ZXJfbmV4dChtb2RlbCwgJml0
ZXIpKSB8fCBndGtfdHJlZV9tb2RlbF9nZXRfaXRlcl9maXJzdChtb2RlbCwgJml0ZXIpKQorICAg
ICAgICAgICAgZ3RrX3RyZWVfc2VsZWN0aW9uX3NlbGVjdF9pdGVyKHNlbGVjdGlvbiwgJml0ZXIp
OworICAgICAgICBlbHNlCisgICAgICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgR1VuaXF1
ZVB0cjxHdGtUcmVlUGF0aD4gcGF0aChndGtfdHJlZV9tb2RlbF9nZXRfcGF0aChtb2RlbCwgJml0
ZXIpKTsKKyAgICBndGtfdHJlZV92aWV3X3Njcm9sbF90b19jZWxsKEdUS19UUkVFX1ZJRVcobV90
cmVlVmlldyksIHBhdGguZ2V0KCksIG51bGxwdHIsIEZBTFNFLCAwLCAwKTsKK30KKwordm9pZCBX
ZWJEYXRhTGlzdFN1Z2dlc3Rpb25zRHJvcGRvd25HdGs6OmNsb3NlKCkKK3sKKyAgICBndGtfd2lk
Z2V0X2hpZGUobV9wb3B1cCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYg
Ly8gRU5BQkxFKERBVEFMSVNUX0VMRU1FTlQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9ndGsvV2ViRGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3duR3RrLmggYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9ndGsvV2ViRGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3duR3RrLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjY0MDdkNjI2NzIzCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1dlYkRhdGFMaXN0U3Vn
Z2VzdGlvbnNEcm9wZG93bkd0ay5oCkBAIC0wLDAgKzEsNjYgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTkgSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxF
KERBVEFMSVNUX0VMRU1FTlQpCisKKyNpbmNsdWRlICJXZWJEYXRhTGlzdFN1Z2dlc3Rpb25zRHJv
cGRvd24uaCIKKwordHlwZWRlZiBzdHJ1Y3QgX0d0a1RyZWVQYXRoIEd0a1RyZWVQYXRoOwordHlw
ZWRlZiBzdHJ1Y3QgX0d0a1RyZWVWaWV3IEd0a1RyZWVWaWV3OwordHlwZWRlZiBzdHJ1Y3QgX0d0
a1RyZWVWaWV3Q29sdW1uIEd0a1RyZWVWaWV3Q29sdW1uOworCituYW1lc3BhY2UgV2ViS2l0IHsK
KworY2xhc3MgV2ViUGFnZVByb3h5OworCitjbGFzcyBXZWJEYXRhTGlzdFN1Z2dlc3Rpb25zRHJv
cGRvd25HdGsgZmluYWwgOiBwdWJsaWMgV2ViRGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3duIHsK
K3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPFdlYkRhdGFMaXN0U3VnZ2VzdGlvbnNEcm9wZG93bkd0
az4gY3JlYXRlKEd0a1dpZGdldCogd2ViVmlldywgV2ViUGFnZVByb3h5JiBwYWdlKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViRGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bk
b3duR3RrKHdlYlZpZXcsIHBhZ2UpKTsKKyAgICB9CisKKyAgICB+V2ViRGF0YUxpc3RTdWdnZXN0
aW9uc0Ryb3Bkb3duR3RrKCk7CisKK3ByaXZhdGU6CisgICAgV2ViRGF0YUxpc3RTdWdnZXN0aW9u
c0Ryb3Bkb3duR3RrKEd0a1dpZGdldCosIFdlYlBhZ2VQcm94eSYpOworCisgICAgdm9pZCBzaG93
KFdlYkNvcmU6OkRhdGFMaXN0U3VnZ2VzdGlvbkluZm9ybWF0aW9uJiYpIGZpbmFsOworICAgIHZv
aWQgaGFuZGxlS2V5ZG93bldpdGhJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYpIGZpbmFsOworICAg
IHZvaWQgY2xvc2UoKSBmaW5hbDsKKworICAgIHN0YXRpYyB2b2lkIHRyZWVWaWV3Um93QWN0aXZh
dGVkQ2FsbGJhY2soR3RrVHJlZVZpZXcqLCBHdGtUcmVlUGF0aCosIEd0a1RyZWVWaWV3Q29sdW1u
KiwgV2ViRGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3duR3RrKik7CisgICAgdm9pZCBkaWRTZWxl
Y3RPcHRpb24oY29uc3QgU3RyaW5nJik7CisKKyAgICBHdGtXaWRnZXQqIG1fd2ViVmlldyB7IG51
bGxwdHIgfTsKKyAgICBHdGtXaWRnZXQqIG1fcG9wdXAgeyBudWxscHRyIH07CisgICAgR3RrV2lk
Z2V0KiBtX3RyZWVWaWV3IHsgbnVsbHB0ciB9OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CisKKyNlbmRpZiAvLyBFTkFCTEUoREFUQUxJU1RfRUxFTUVOVCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9jbWFrZS9PcHRpb25zR1RLLmNtYWtlIGIvU291cmNlL2NtYWtlL09wdGlvbnNHVEsuY21ha2UK
aW5kZXggMWM2NmMzYzAzNGUuLmVlZDAwNjlhZTJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvY21ha2Uv
T3B0aW9uc0dUSy5jbWFrZQorKysgYi9Tb3VyY2UvY21ha2UvT3B0aW9uc0dUSy5jbWFrZQpAQCAt
MTUwLDYgKzE1MCw3IEBAIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9X
RUJEUklWRVIgUFVCTElDIE9OKQogIyBDaGFuZ2luZyB0aGVzZSBvcHRpb25zIGlzIGNvbXBsZXRl
bHkgdW5zdXBwb3J0ZWQuCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVf
Q09OVEVOVF9FWFRFTlNJT05TIFBSSVZBVEUgT04pCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9S
VF9WQUxVRShFTkFCTEVfREFSS19NT0RFX0NTUyBQUklWQVRFIE9OKQorV0VCS0lUX09QVElPTl9E
RUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX0RBVEFMSVNUX0VMRU1FTlQgUFJJVkFURSBPTikKIFdF
QktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9ET1dOTE9BRF9BVFRSSUJVVEUg
UFJJVkFURSBPTikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9FTkNS
WVBURURfTUVESUEgUFJJVkFURSAke0VOQUJMRV9FWFBFUklNRU5UQUxfRkVBVFVSRVN9KQogV0VC
S0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX0ZUUERJUiBQUklWQVRFIE9GRikK
ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBkYzI0
OWVmYzA4Yi4uZjNmNmYwZDAzYjMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9U
b29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxOS0wNy0zMCAgQ2FybG9zIEdhcmNp
YSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUS10gRGF0YWxpc3Qg
ZWxlbWVudCBzdXBwb3J0IGZvciBUZXh0RmllbGRJbnB1dFR5cGUKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk4OTM0CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50IFVJU2NyaXB0Q29udHJvbGxl
ckd0azo6aXNTaG93aW5nRGF0YUxpc3RTdWdnZXN0aW9ucy4KKworICAgICAgICAqIFdlYktpdFRl
c3RSdW5uZXIvZ3RrL1VJU2NyaXB0Q29udHJvbGxlckd0ay5jcHA6CisgICAgICAgIChXVFI6OlVJ
U2NyaXB0Q29udHJvbGxlckd0azo6aXNTaG93aW5nRGF0YUxpc3RTdWdnZXN0aW9ucyBjb25zdCk6
CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9ndGsvVUlTY3JpcHRDb250cm9sbGVyR3RrLmg6
CisKIDIwMTktMDctMjkgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgogCiAgICAgICAgIE11bHRpcGxlIGNvbnRleHQgbWVudSBhY3Rpb25zIGJyb2tlbiBmb3IgWW91
VHViZSB2aWRlb3MKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvZ3RrL1VJU2Ny
aXB0Q29udHJvbGxlckd0ay5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2d0ay9VSVNjcmlw
dENvbnRyb2xsZXJHdGsuY3BwCmluZGV4IGNkZGUxN2ZkMTY0Li44OTg0NGUwODYxZiAxMDA2NDQK
LS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9ndGsvVUlTY3JpcHRDb250cm9sbGVyR3RrLmNw
cAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2d0ay9VSVNjcmlwdENvbnRyb2xsZXJHdGsu
Y3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiUGxhdGZvcm1XZWJWaWV3LmgiCiAjaW5j
bHVkZSAiVGVzdENvbnRyb2xsZXIuaCIKICNpbmNsdWRlIDxXZWJLaXQvV0tWaWV3UHJpdmF0ZS5o
PgorI2luY2x1ZGUgPGd0ay9ndGsuaD4KIAogbmFtZXNwYWNlIFdUUiB7CiAKQEAgLTUxLDQgKzUy
LDEyIEBAIHZvaWQgVUlTY3JpcHRDb250cm9sbGVyR3RrOjpjb21wbGV0ZUJhY2tTd2lwZShKU1Zh
bHVlUmVmIGNhbGxiYWNrKQogICAgIFdLVmlld0NvbXBsZXRlQmFja1N3aXBlRm9yVGVzdGluZyh3
ZWJWaWV3KTsKIH0KIAorYm9vbCBVSVNjcmlwdENvbnRyb2xsZXJHdGs6OmlzU2hvd2luZ0RhdGFM
aXN0U3VnZ2VzdGlvbnMoKSBjb25zdAoreworICAgIGF1dG8qIHdlYlZpZXcgPSBUZXN0Q29udHJv
bGxlcjo6c2luZ2xldG9uKCkubWFpbldlYlZpZXcoKS0+cGxhdGZvcm1WaWV3KCk7CisgICAgaWYg
KGF1dG8qIHBvcHVwID0gZ19vYmplY3RfZ2V0X2RhdGEoR19PQkpFQ1Qod2ViVmlldyksICJ3ay1k
YXRhbGlzdC1wb3B1cCIpKQorICAgICAgICByZXR1cm4gZ3RrX3dpZGdldF9nZXRfbWFwcGVkKEdU
S19XSURHRVQocG9wdXApKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKIH0gLy8gbmFtZXNwYWNl
IFdUUgpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9ndGsvVUlTY3JpcHRDb250
cm9sbGVyR3RrLmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2d0ay9VSVNjcmlwdENvbnRyb2xs
ZXJHdGsuaAppbmRleCA4M2IzYmJlYzYwOS4uMzMzMThkYzVkNDggMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvZ3RrL1VJU2NyaXB0Q29udHJvbGxlckd0ay5oCisrKyBiL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvZ3RrL1VJU2NyaXB0Q29udHJvbGxlckd0ay5oCkBAIC00MSw2ICs0
MSw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgYmVnaW5CYWNrU3dpcGUoSlNWYWx1ZVJlZikgb3Zl
cnJpZGU7CiAgICAgdm9pZCBjb21wbGV0ZUJhY2tTd2lwZShKU1ZhbHVlUmVmKSBvdmVycmlkZTsK
KyAgICBib29sIGlzU2hvd2luZ0RhdGFMaXN0U3VnZ2VzdGlvbnMoKSBjb25zdCBvdmVycmlkZTsK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdUUgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>375156</attachid>
            <date>2019-07-30 06:12:20 -0700</date>
            <delta_ts>2019-07-30 09:15:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>wkgtk-datalist.diff</filename>
            <type>text/plain</type>
            <size>29257</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCA0NTllODI5NjkwYy4uNWVl
MWRkOTRmOWEgMTAwNjQ0Ci0tLSBhL0NoYW5nZUxvZworKysgYi9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxNCBAQAorMjAxOS0wNy0zMCAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxp
YS5jb20+CisKKyAgICAgICAgW0dUS10gRGF0YWxpc3QgZWxlbWVudCBzdXBwb3J0IGZvciBUZXh0
RmllbGRJbnB1dFR5cGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTk4OTM0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgRW5hYmxlIERBVEFMSVNUX0VMRU1FTlQuCisKKyAgICAgICAgKiBTb3VyY2UvY21ha2Uv
T3B0aW9uc0dUSy5jbWFrZToKKwogMjAxOS0wNy0yNCAgRnVqaWkgSGlyb25vcmkgIDxmdWppaS5o
aXJvbm9yaUBnbWFpbC5jb20+CiAKICAgICAgICAgW0NNYWtlXSBDTUFLRV9TSEFSRURfTElOS0VS
X0ZMQUdTIGRyb3BzICItV2wsLS1uby11bmRlZmluZWQiCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggZmM1MTE1MGYyZGEuLjky
NzhiZTgxMTkxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTktMDctMzAgIENhcmxvcyBHYXJj
aWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEtdIERhdGFsaXN0
IGVsZW1lbnQgc3VwcG9ydCBmb3IgVGV4dEZpZWxkSW5wdXRUeXBlCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05ODkzNAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVuc2tpcCBkYXRhbGlzdCB0ZXN0cyBmb3Ig
R1RLIHBvcnQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvVGVzdEV4cGVjdGF0aW9uczoKKwog
MjAxOS0wNy0yOCAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KIAogICAg
ICAgICBSZW9yZ2FuaXplIFVJU2NyaXB0Q29udHJvbGxlciBpbnRvIHBsYXRmb3JtLXNwZWNpZmlj
IHN1YmNsYXNzZXMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9UZXN0RXhw
ZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1Rlc3RFeHBlY3RhdGlvbnMKaW5k
ZXggNzFlNjg1Njc4MTMuLmU3NzkwZDdiYWJlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9ndGsvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsv
VGVzdEV4cGVjdGF0aW9ucwpAQCAtMTc3LDEwICsxNzcsNiBAQCB3ZWJraXQub3JnL2IvOTg5Mjcg
ZmFzdC9kb20vRGV2aWNlT3JpZW50YXRpb24gWyBTa2lwIF0KIGZhc3QvaGlzdG9yeS9wYWdlLWNh
Y2hlLW5vdGlmaWNhdGlvbi1ub24tc3VzcGVuZGFibGUuaHRtbAogZmFzdC9oaXN0b3J5L3BhZ2Ut
Y2FjaGUtbm90aWZpY2F0aW9uLXN1c3BlbmRhYmxlLmh0bWwKIAotIyBEYXRhbGlzdCBpcyBub3Qg
eWV0IGVuYWJsZWQuCi1hY2Nlc3NpYmlsaXR5L2RhdGFsaXN0Lmh0bWwgWyBTa2lwIF0KLXdlYmtp
dC5vcmcvYi85ODkzNCBmYXN0L2Zvcm1zL2RhdGFsaXN0IFsgU2tpcCBdCi0KICMgRU5BQkxFX0lO
UFVUX1RZUEVfKiBhcmUgbm90IGVuYWJsZWQuCiB3ZWJraXQub3JnL2IvOTg5MzYgZmFzdC9mb3Jt
cy9kYXRlIFsgU2tpcCBdCiB3ZWJraXQub3JnL2IvOTg5MzYgZmFzdC9mb3Jtcy9kYXRldGltZSBb
IFNraXAgXQpAQCAtMzc5OSw2ICszNzk1LDcgQEAgd2Via2l0Lm9yZy9iLzE5OTAwOSBmYXN0L3Rl
eHQvdmFyaWF0aW9ucy9vcHRpY2FsLXNpemluZy11bml0cy5odG1sIFsgSW1hZ2VPbmx5RmEKIHdl
YmtpdC5vcmcvYi8xOTk4NTkgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3Nz
LXRleHQvbGluZS1icmVhay9saW5lLWJyZWFrLWFueXdoZXJlLTAwMS5odG1sIFsgSW1hZ2VPbmx5
RmFpbHVyZSBdCiAKIHdlYmtpdC5vcmcvYi8xOTk4NjAgYWNjZXNzaWJpbGl0eS9idXR0b24td2l0
aC1hcmlhLWhhc3BvcHVwLXJvbGUuaHRtbCBbIEZhaWx1cmUgXQord2Via2l0Lm9yZy9iLzE5OTg2
MCBhY2Nlc3NpYmlsaXR5L2RhdGFsaXN0Lmh0bWwgWyBGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi8x
OTk4NjggYWNjZXNzaWJpbGl0eS9ndGsvYXJpYS1oYXNwb3B1cC5odG1sIFsgRmFpbHVyZSBdCiAK
IHdlYmtpdC5vcmcvYi8xOTk0NDAgZmFzdC9tZWRpYXN0cmVhbS9hcHBseS1jb25zdHJhaW50cy12
aWRlby5odG1sIFsgRmFpbHVyZSBdCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjc1ODA0ODQxNDcuLmJjNGZjZDBl
OTc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTktMDctMzAgIENhcmxvcyBHYXJj
aWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEtdIERhdGFsaXN0
IGVsZW1lbnQgc3VwcG9ydCBmb3IgVGV4dEZpZWxkSW5wdXRUeXBlCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05ODkzNAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciByZW5kZXJpbmcg
dGhlIGFycm93IGluZGljYXRvciBvZiB0ZXh0IGZpZWxkcyBoYXZpbmcgZGF0YSBsaXN0LgorCisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lR3RrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclRoZW1lR3RrOjpwYWludFRleHRGaWVsZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJUaGVtZUd0azo6YWRqdXN0TGlzdEJ1dHRvblN0eWxlIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclRoZW1lR3RrOjpwYWludExpc3RCdXR0b25Gb3JJbnB1dCk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJUaGVtZUd0azo6YWRqdXN0U2VhcmNoRmllbGRTdHlsZSBjb25zdCk6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lR3RrLmg6CisKIDIwMTktMDctMjkgIENhcmxv
cyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFdlYlNvY2tl
dHM6IHdvcmtlcnMgbmV2ZXIgdXNlIHRoZSBwbGF0Zm9ybSBXZWJTb2NrZXRzIHBhdGgKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUd0ay5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVHdGsuY3BwCmluZGV4IDZkYzE5Y2EzZDhl
Li40Y2M1NTEzMTM2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRoZW1lR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVH
dGsuY3BwCkBAIC01MjAsNiArNTIwLDE0IEBAIGJvb2wgUmVuZGVyVGhlbWVHdGs6OnBhaW50VGV4
dEZpZWxkKGNvbnN0IFJlbmRlck9iamVjdCYgcmVuZGVyT2JqZWN0LCBjb25zdCBQYWluCiAgICAg
ICAgIGF1dG8mIGVudHJ5V2lkZ2V0ID0gc3RhdGljX2Nhc3Q8UmVuZGVyVGhlbWVFbnRyeSY+KFJl
bmRlclRoZW1lV2lkZ2V0OjpnZXRPckNyZWF0ZShSZW5kZXJUaGVtZVdpZGdldDo6VHlwZTo6RW50
cnkpKTsKICAgICAgICAgZW50cnlXaWRnZXQuZW50cnkoKS5zZXRTdGF0ZSh0aGVtZVBhcnRTdGF0
ZUZsYWdzKCp0aGlzLCBFbnRyeSwgcmVuZGVyT2JqZWN0KSk7CiAgICAgICAgIGVudHJ5V2lkZ2V0
LmVudHJ5KCkucmVuZGVyKHBhaW50SW5mby5jb250ZXh0KCkucGxhdGZvcm1Db250ZXh0KCktPmNy
KCksIHJlY3QpOworCisjaWYgRU5BQkxFKERBVEFMSVNUX0VMRU1FTlQpCisgICAgICAgIGlmIChp
czxIVE1MSW5wdXRFbGVtZW50PihyZW5kZXJPYmplY3QuZ2VuZXJhdGluZ05vZGUoKSkpIHsKKyAg
ICAgICAgICAgIGNvbnN0IGF1dG8mIGlucHV0ID0gZG93bmNhc3Q8SFRNTElucHV0RWxlbWVudD4o
KihyZW5kZXJPYmplY3QuZ2VuZXJhdGluZ05vZGUoKSkpOworICAgICAgICAgICAgaWYgKGlucHV0
Lmxpc3QoKSkKKyAgICAgICAgICAgICAgICBwYWludExpc3RCdXR0b25Gb3JJbnB1dChyZW5kZXJP
YmplY3QsIHBhaW50SW5mbywgcmVjdCk7CisgICAgICAgIH0KKyNlbmRpZgogICAgIH0KICAgICBy
ZXR1cm4gZmFsc2U7CiB9CkBAIC01OTcsNiArNjA1LDM0IEBAIGJvb2wgUmVuZGVyVGhlbWVHdGs6
OnBhaW50U2VhcmNoRmllbGRDYW5jZWxCdXR0b24oY29uc3QgUmVuZGVyQm94JiByZW5kZXJPYmpl
Y3QsCiAgICAgcmV0dXJuIHBhaW50U2VhcmNoRmllbGRJY29uKHRoaXMsIEVudHJ5SWNvblJpZ2h0
LCByZW5kZXJPYmplY3QsIHBhaW50SW5mbywgcmVjdCk7CiB9CiAKKyNpZiBFTkFCTEUoREFUQUxJ
U1RfRUxFTUVOVCkKK3ZvaWQgUmVuZGVyVGhlbWVHdGs6OmFkanVzdExpc3RCdXR0b25TdHlsZShT
dHlsZVJlc29sdmVyJiwgUmVuZGVyU3R5bGUmIHN0eWxlLCBjb25zdCBFbGVtZW50KikgY29uc3QK
K3sKKyAgICAvLyBBZGQgYSBtYXJnaW4gdG8gcGxhY2UgdGhlIGJ1dHRvbiBhdCBlbmQgb2YgdGhl
IGlucHV0IGZpZWxkLgorICAgIGlmIChzdHlsZS5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkpCisg
ICAgICAgIHN0eWxlLnNldE1hcmdpblJpZ2h0KExlbmd0aCgtNCwgRml4ZWQpKTsKKyAgICBlbHNl
CisgICAgICAgIHN0eWxlLnNldE1hcmdpbkxlZnQoTGVuZ3RoKC00LCBGaXhlZCkpOworfQorCit2
b2lkIFJlbmRlclRoZW1lR3RrOjpwYWludExpc3RCdXR0b25Gb3JJbnB1dChjb25zdCBSZW5kZXJP
YmplY3QmIHJlbmRlck9iamVjdCwgY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IEZs
b2F0UmVjdCYgcmVjdCkKK3sKKyAgICAvLyBVc2UgYSBjb21ibyBib3ggd2lkZ2V0IHRvIHJlbmRl
ciBpdHMgYXJyb3cuCisgICAgYXV0byYgY29tYm9XaWRnZXQgPSBzdGF0aWNfY2FzdDxSZW5kZXJU
aGVtZUNvbWJvQm94Jj4oUmVuZGVyVGhlbWVXaWRnZXQ6OmdldE9yQ3JlYXRlKFJlbmRlclRoZW1l
V2lkZ2V0OjpUeXBlOjpDb21ib0JveCkpOworICAgIGNvbWJvV2lkZ2V0LmFycm93KCkuc2V0U3Rh
dGUodGhlbWVQYXJ0U3RhdGVGbGFncygqdGhpcywgQ29tYm9Cb3hCdXR0b24sIHJlbmRlck9iamVj
dCkpOworCisgICAgLy8gQnV0IGEgc2VhcmNoIGVudHJ5IHdpZGdldCB0byBnZXQgdGhlIGNvbnRl
bnRzIHJlY3QsIHNpbmNlIHRoaXMgaXMgYSB0ZXh0IGlucHV0IGZpZWxkLgorICAgIGF1dG8mIHNl
YXJjaEVudHJ5V2lkZ2V0ID0gc3RhdGljX2Nhc3Q8UmVuZGVyVGhlbWVTZWFyY2hFbnRyeSY+KFJl
bmRlclRoZW1lV2lkZ2V0OjpnZXRPckNyZWF0ZShSZW5kZXJUaGVtZVdpZGdldDo6VHlwZTo6U2Vh
cmNoRW50cnkpKTsKKyAgICBhdXRvJiBpY29uID0gc3RhdGljX2Nhc3Q8UmVuZGVyVGhlbWVJY29u
R2FkZ2V0Jj4oc2VhcmNoRW50cnlXaWRnZXQucmlnaHRJY29uKCkpOworICAgIGljb24uc2V0SWNv
blNpemUoY29tYm9XaWRnZXQuYXJyb3coKS5wcmVmZXJyZWRTaXplKCkud2lkdGgoKSk7CisgICAg
R3RrQm9yZGVyIGNvbnRlbnRzQm94ID0gc2VhcmNoRW50cnlXaWRnZXQuZW50cnkoKS5jb250ZW50
c0JveCgpOworICAgIEZsb2F0UmVjdCBhZGp1c3RlZFJlY3QocmVjdCk7CisgICAgYWRqdXN0ZWRS
ZWN0Lm1vdmUoY29udGVudHNCb3gubGVmdCwgY29udGVudHNCb3gudG9wKTsKKyAgICBhZGp1c3Rl
ZFJlY3QuY29udHJhY3QoY29udGVudHNCb3gucmlnaHQgKyAxLCBjb250ZW50c0JveC50b3AgKyBj
b250ZW50c0JveC5ib3R0b20pOworICAgIGNvbWJvV2lkZ2V0LmFycm93KCkucmVuZGVyKHBhaW50
SW5mby5jb250ZXh0KCkucGxhdGZvcm1Db250ZXh0KCktPmNyKCksIGFkanVzdGVkUmVjdCk7Cit9
CisjZW5kaWYKKwogdm9pZCBSZW5kZXJUaGVtZUd0azo6YWRqdXN0U2VhcmNoRmllbGRTdHlsZShT
dHlsZVJlc29sdmVyJiwgUmVuZGVyU3R5bGUmIHN0eWxlLCBjb25zdCBFbGVtZW50KikgY29uc3QK
IHsKICAgICAvLyBXZSBjYW5ub3QgZ2l2ZSBhIHByb3BlciByZW5kZXJpbmcgd2hlbiBib3JkZXIg
cmFkaXVzIGlzIGFjdGl2ZSwgdW5mb3J0dW5hdGVseS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUd0ay5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRoZW1lR3RrLmgKaW5kZXggZTE0NzZkMjIyNjMuLmQ2YWEwNWRlMGMyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVHdGsuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVHdGsuaApAQCAtMTQzLDYgKzE0MywxMSBA
QCBwcml2YXRlOgogICAgIHZvaWQgYWRqdXN0U2VhcmNoRmllbGRDYW5jZWxCdXR0b25TdHlsZShT
dHlsZVJlc29sdmVyJiwgUmVuZGVyU3R5bGUmLCBjb25zdCBFbGVtZW50KikgY29uc3Qgb3ZlcnJp
ZGU7CiAgICAgYm9vbCBwYWludFNlYXJjaEZpZWxkQ2FuY2VsQnV0dG9uKGNvbnN0IFJlbmRlckJv
eCYsIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKSBvdmVycmlkZTsKIAorI2lmIEVO
QUJMRShEQVRBTElTVF9FTEVNRU5UKQorICAgIHZvaWQgcGFpbnRMaXN0QnV0dG9uRm9ySW5wdXQo
Y29uc3QgUmVuZGVyT2JqZWN0JiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgRmxvYXRSZWN0Jik7
CisgICAgdm9pZCBhZGp1c3RMaXN0QnV0dG9uU3R5bGUoU3R5bGVSZXNvbHZlciYsIFJlbmRlclN0
eWxlJiwgY29uc3QgRWxlbWVudCopIGNvbnN0IG92ZXJyaWRlOworI2VuZGlmCisKICAgICBib29s
IHBhaW50U2xpZGVyVHJhY2soY29uc3QgUmVuZGVyT2JqZWN0JiwgY29uc3QgUGFpbnRJbmZvJiwg
Y29uc3QgSW50UmVjdCYpIG92ZXJyaWRlOwogICAgIHZvaWQgYWRqdXN0U2xpZGVyVHJhY2tTdHls
ZShTdHlsZVJlc29sdmVyJiwgUmVuZGVyU3R5bGUmLCBjb25zdCBFbGVtZW50KikgY29uc3Qgb3Zl
cnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKaW5kZXggZTJmZjdiODljMmQuLjVjNmIxYTQ5MDY1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpA
QCAtMSwzICsxLDI4IEBACisyMDE5LTA3LTMwICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJj
aWFAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXSBEYXRhbGlzdCBlbGVtZW50IHN1cHBvcnQg
Zm9yIFRleHRGaWVsZElucHV0VHlwZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9OTg5MzQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBBZGQgYSBXZWJEYXRhTGlzdFN1Z2dlc3Rpb25zRHJvcGRvd24gaW1wbGVt
ZW50YXRpb24gZm9yIHRoZSBHVEsgcG9ydCB1c2luZyBhIHBvcHVwIHdpbmRvdyB3aXRoIGEgdHJl
ZSB2aWV3IGxpc3QuCisKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBTb3VyY2Vz
R1RLLnR4dDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5jcHA6
CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpjcmVhdGVEYXRhTGlzdFN1Z2dlc3Rp
b25zRHJvcGRvd24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGllbnRJbXBs
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL2d0ay9XZWJEYXRhTGlzdFN1Z2dlc3Rpb25zRHJvcGRv
d25HdGsuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6Zmlyc3RUaW1lSXRlbVNlbGVjdGVk
Q2FsbGJhY2spOgorICAgICAgICAoV2ViS2l0OjpXZWJEYXRhTGlzdFN1Z2dlc3Rpb25zRHJvcGRv
d25HdGs6OldlYkRhdGFMaXN0U3VnZ2VzdGlvbnNEcm9wZG93bkd0ayk6CisgICAgICAgIChXZWJL
aXQ6OldlYkRhdGFMaXN0U3VnZ2VzdGlvbnNEcm9wZG93bkd0azo6fldlYkRhdGFMaXN0U3VnZ2Vz
dGlvbnNEcm9wZG93bkd0ayk6CisgICAgICAgIChXZWJLaXQ6OldlYkRhdGFMaXN0U3VnZ2VzdGlv
bnNEcm9wZG93bkd0azo6dHJlZVZpZXdSb3dBY3RpdmF0ZWRDYWxsYmFjayk6CisgICAgICAgIChX
ZWJLaXQ6OldlYkRhdGFMaXN0U3VnZ2VzdGlvbnNEcm9wZG93bkd0azo6ZGlkU2VsZWN0T3B0aW9u
KToKKyAgICAgICAgKFdlYktpdDo6V2ViRGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3duR3RrOjpz
aG93KToKKyAgICAgICAgKFdlYktpdDo6V2ViRGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3duR3Rr
OjpoYW5kbGVLZXlkb3duV2l0aElkZW50aWZpZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJEYXRh
TGlzdFN1Z2dlc3Rpb25zRHJvcGRvd25HdGs6OmNsb3NlKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
Z3RrL1dlYkRhdGFMaXN0U3VnZ2VzdGlvbnNEcm9wZG93bkd0ay5oOiBDb3BpZWQgZnJvbSBUb29s
cy9XZWJLaXRUZXN0UnVubmVyL2d0ay9VSVNjcmlwdENvbnRyb2xsZXJHdGsuaC4KKwogMjAxOS0w
Ny0yNyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIEFsbG93IG1v
cmUgc3lzY2FsbHMgaW4gdGhlIFdlYkNvbnRlbnQgcHJvY2Vzcycgc2FuZGJveCBwcm9maWxlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0IGIvU291cmNlL1dlYktpdC9Tb3Vy
Y2VzLnR4dAppbmRleCAxYjc1ZDdhMDQwYi4uNzkxNmUyM2I3N2UgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dApAQCAt
MjY4LDYgKzI2OCw3IEBAIFVJUHJvY2Vzcy9XZWJDb250ZXh0TWVudUxpc3RlbmVyUHJveHkuY3Bw
CiBVSVByb2Nlc3MvV2ViQ29udGV4dE1lbnVQcm94eS5jcHAKIFVJUHJvY2Vzcy9XZWJDb29raWVN
YW5hZ2VyUHJveHkuY3BwCiBVSVByb2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5Q2xpZW50LmNw
cAorVUlQcm9jZXNzL1dlYkRhdGFMaXN0U3VnZ2VzdGlvbnNEcm9wZG93bi5jcHAKIFVJUHJvY2Vz
cy9XZWJFZGl0Q29tbWFuZFByb3h5LmNwcAogVUlQcm9jZXNzL1dlYkZvcm1DbGllbnQuY3BwCiBV
SVByb2Nlc3MvV2ViRm9ybVN1Ym1pc3Npb25MaXN0ZW5lclByb3h5LmNwcApAQCAtNTMyLDYgKzUz
Myw3IEBAIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvU2Vzc2lvblN0YXRlQ29udmVyc2lvbi5j
cHAKIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAogV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDb2xvckNob29zZXIuY3BwCiBXZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmNwcAorV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJEYXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXIuY3BwCiBXZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkRpYWdub3N0aWNMb2dnaW5nQ2xpZW50LmNwcAogV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJEcmFnQ2xpZW50LmNwcAogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJF
ZGl0b3JDbGllbnQuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50
eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKaW5kZXggMDJjZjY1YzJhYzIuLjMw
ZjQ4OGFiNTgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKKysr
IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CkBAIC0yMTgsNyArMjE4LDYgQEAgVUlQ
cm9jZXNzL0hpZ2hQZXJmb3JtYW5jZUdyYXBoaWNzVXNhZ2VTYW1wbGVyLmNwcAogVUlQcm9jZXNz
L1BlckFjdGl2aXR5U3RhdGVDUFVVc2FnZVNhbXBsZXIuY3BwCiBVSVByb2Nlc3MvVmlld0dlc3R1
cmVDb250cm9sbGVyLmNwcAogVUlQcm9jZXNzL1ZpZXdTbmFwc2hvdFN0b3JlLmNwcAotVUlQcm9j
ZXNzL1dlYkRhdGFMaXN0U3VnZ2VzdGlvbnNEcm9wZG93bi5jcHAKIFVJUHJvY2Vzcy9XZWJNZWRp
YVNlc3Npb25Gb2N1c01hbmFnZXIuY3BwCiBVSVByb2Nlc3MvV2ViTWVkaWFTZXNzaW9uRm9jdXNN
YW5hZ2VyQ2xpZW50LmNwcAogVUlQcm9jZXNzL1dlYk1lbW9yeVByZXNzdXJlSGFuZGxlci5jcHAK
QEAgLTU1Miw3ICs1NTEsNiBAQCBXZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbkNob2lj
ZUFubm90YXRpb24ubW0KIFdlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luUGFzc3dvcmRG
aWVsZC5tbQogV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW5UZXh0QW5ub3RhdGlvbi5t
bQogCi1XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkRhdGFMaXN0U3VnZ2VzdGlvblBpY2tl
ci5jcHAKIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGFzdGVib2FyZE92ZXJyaWRlcy5j
cHAKIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViVmFsaWRhdGlvbk1lc3NhZ2VDbGllbnQu
Y3BwCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291cmNlc0dUSy50eHQgYi9Tb3VyY2Uv
V2ViS2l0L1NvdXJjZXNHVEsudHh0CmluZGV4IDRiNWRkZDdkNjUwLi4wZjJiOThiMDM3MSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2VzR1RLLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0
L1NvdXJjZXNHVEsudHh0CkBAIC0yNTEsNiArMjUxLDcgQEAgVUlQcm9jZXNzL2d0ay9WaWV3U25h
cHNob3RTdG9yZUd0ay5jcHAKIFVJUHJvY2Vzcy9ndGsvV2F5bGFuZENvbXBvc2l0b3IuY3BwIEBu
by11bmlmeQogVUlQcm9jZXNzL2d0ay9XZWJDb2xvclBpY2tlckd0ay5jcHAKIFVJUHJvY2Vzcy9n
dGsvV2ViQ29udGV4dE1lbnVQcm94eUd0ay5jcHAKK1VJUHJvY2Vzcy9ndGsvV2ViRGF0YUxpc3RT
dWdnZXN0aW9uc0Ryb3Bkb3duR3RrLmNwcAogVUlQcm9jZXNzL2d0ay9XZWJJbnNwZWN0b3JQcm94
eUd0ay5jcHAKIFVJUHJvY2Vzcy9ndGsvV2ViS2l0SW5zcGVjdG9yV2luZG93LmNwcAogVUlQcm9j
ZXNzL2d0ay9XZWJQYWdlUHJveHlHdGsuY3BwIEBuby11bmlmeQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGllbnRJbXBsLmNwcAppbmRleCA2MjhjZDJhNzI2
YS4uZjA5ZDZjN2U5MjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9n
dGsvUGFnZUNsaWVudEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9n
dGsvUGFnZUNsaWVudEltcGwuY3BwCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSAiVmlld1Nu
YXBzaG90U3RvcmUuaCIKICNpbmNsdWRlICJXZWJDb2xvclBpY2tlckd0ay5oIgogI2luY2x1ZGUg
IldlYkNvbnRleHRNZW51UHJveHlHdGsuaCIKKyNpbmNsdWRlICJXZWJEYXRhTGlzdFN1Z2dlc3Rp
b25zRHJvcGRvd25HdGsuaCIKICNpbmNsdWRlICJXZWJFdmVudEZhY3RvcnkuaCIKICNpbmNsdWRl
ICJXZWJLaXRDb2xvckNob29zZXIuaCIKICNpbmNsdWRlICJXZWJLaXRQb3B1cE1lbnUuaCIKQEAg
LTI1MCw2ICsyNTEsMTMgQEAgUmVmUHRyPFdlYkNvbG9yUGlja2VyPiBQYWdlQ2xpZW50SW1wbDo6
Y3JlYXRlQ29sb3JQaWNrZXIoV2ViUGFnZVByb3h5KiBwYWdlLCBjb24KICAgICByZXR1cm4gV2Vi
Q29sb3JQaWNrZXJHdGs6OmNyZWF0ZSgqcGFnZSwgY29sb3IsIHJlY3QpOwogfQogCisjaWYgRU5B
QkxFKERBVEFMSVNUX0VMRU1FTlQpCitSZWZQdHI8V2ViRGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bk
b3duPiBQYWdlQ2xpZW50SW1wbDo6Y3JlYXRlRGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3duKFdl
YlBhZ2VQcm94eSYgcGFnZSkKK3sKKyAgICByZXR1cm4gV2ViRGF0YUxpc3RTdWdnZXN0aW9uc0Ry
b3Bkb3duR3RrOjpjcmVhdGUobV92aWV3V2lkZ2V0LCBwYWdlKTsKK30KKyNlbmRpZgorCiB2b2lk
IFBhZ2VDbGllbnRJbXBsOjplbnRlckFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKGNvbnN0IExh
eWVyVHJlZUNvbnRleHQmIGxheWVyVHJlZUNvbnRleHQpCiB7CiAgICAgd2Via2l0V2ViVmlld0Jh
c2VFbnRlckFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKFdFQktJVF9XRUJfVklFV19CQVNFKG1f
dmlld1dpZGdldCksIGxheWVyVHJlZUNvbnRleHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5oIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5oCmluZGV4IDU1ODI4MTExNmM1Li4zYzZjNTE1
OTU1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xp
ZW50SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVu
dEltcGwuaApAQCAtOTMsNiArOTMsOSBAQCBwcml2YXRlOgogICAgIFJlZjxXZWJDb250ZXh0TWVu
dVByb3h5PiBjcmVhdGVDb250ZXh0TWVudVByb3h5KFdlYlBhZ2VQcm94eSYsIENvbnRleHRNZW51
Q29udGV4dERhdGEmJiwgY29uc3QgVXNlckRhdGEmKSBvdmVycmlkZTsKICNpZiBFTkFCTEUoSU5Q
VVRfVFlQRV9DT0xPUikKICAgICBSZWZQdHI8V2ViQ29sb3JQaWNrZXI+IGNyZWF0ZUNvbG9yUGlj
a2VyKFdlYlBhZ2VQcm94eSosIGNvbnN0IFdlYkNvcmU6OkNvbG9yJiBpbml0aWFsQ29sb3IsIGNv
bnN0IFdlYkNvcmU6OkludFJlY3QmLCBWZWN0b3I8V2ViQ29yZTo6Q29sb3I+JiYpIG92ZXJyaWRl
OworI2VuZGlmCisjaWYgRU5BQkxFKERBVEFMSVNUX0VMRU1FTlQpCisgICAgUmVmUHRyPFdlYkRh
dGFMaXN0U3VnZ2VzdGlvbnNEcm9wZG93bj4gY3JlYXRlRGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bk
b3duKFdlYlBhZ2VQcm94eSYpIG92ZXJyaWRlOwogI2VuZGlmCiAgICAgdm9pZCBzZWxlY3Rpb25E
aWRDaGFuZ2UoKSBvdmVycmlkZTsKICAgICBSZWZQdHI8Vmlld1NuYXBzaG90PiB0YWtlVmlld1Nu
YXBzaG90KCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9n
dGsvV2ViRGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3duR3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2d0ay9XZWJEYXRhTGlzdFN1Z2dlc3Rpb25zRHJvcGRvd25HdGsuY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4zNjkzNThkZGM2ZAotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9XZWJEYXRhTGlzdFN1Z2dlc3Rp
b25zRHJvcGRvd25HdGsuY3BwCkBAIC0wLDAgKzEsMjE2IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE5IElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiV2ViRGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3duR3RrLmgiCisKKyNpZiBFTkFCTEUoREFU
QUxJU1RfRUxFTUVOVCkKKworI2luY2x1ZGUgPFdlYkNvcmUvRGF0YUxpc3RTdWdnZXN0aW9uSW5m
b3JtYXRpb24uaD4KKyNpbmNsdWRlIDx3dGYvZ2xpYi9HUmVmUHRyLmg+CisjaW5jbHVkZSA8d3Rm
L2dsaWIvR1VuaXF1ZVB0ci5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworc3RhdGljIHZvaWQg
Zmlyc3RUaW1lSXRlbVNlbGVjdGVkQ2FsbGJhY2soR3RrVHJlZVNlbGVjdGlvbiogc2VsZWN0aW9u
LCBHdGtXaWRnZXQqIHRyZWVWaWV3KQoreworICAgIGlmIChndGtfd2lkZ2V0X2lzX2ZvY3VzKHRy
ZWVWaWV3KSkKKyAgICAgICAgZ3RrX3RyZWVfc2VsZWN0aW9uX3Vuc2VsZWN0X2FsbChzZWxlY3Rp
b24pOworICAgIGdfc2lnbmFsX2hhbmRsZXJzX2Rpc2Nvbm5lY3RfYnlfZnVuYyhzZWxlY3Rpb24s
IHJlaW50ZXJwcmV0X2Nhc3Q8Z3BvaW50ZXI+KGZpcnN0VGltZUl0ZW1TZWxlY3RlZENhbGxiYWNr
KSwgdHJlZVZpZXcpOworfQorCitXZWJEYXRhTGlzdFN1Z2dlc3Rpb25zRHJvcGRvd25HdGs6Oldl
YkRhdGFMaXN0U3VnZ2VzdGlvbnNEcm9wZG93bkd0ayhHdGtXaWRnZXQqIHdlYlZpZXcsIFdlYlBh
Z2VQcm94eSYgcGFnZSkKKyAgICA6IFdlYkRhdGFMaXN0U3VnZ2VzdGlvbnNEcm9wZG93bihwYWdl
KQorICAgICwgbV93ZWJWaWV3KHdlYlZpZXcpCit7CisgICAgR1JlZlB0cjxHdGtMaXN0U3RvcmU+
IG1vZGVsID0gYWRvcHRHUmVmKGd0a19saXN0X3N0b3JlX25ldygxLCBHX1RZUEVfU1RSSU5HKSk7
CisgICAgbV90cmVlVmlldyA9IGd0a190cmVlX3ZpZXdfbmV3X3dpdGhfbW9kZWwoR1RLX1RSRUVf
TU9ERUwobW9kZWwuZ2V0KCkpKTsKKyAgICBhdXRvKiB0cmVlVmlldyA9IEdUS19UUkVFX1ZJRVco
bV90cmVlVmlldyk7CisgICAgZ19zaWduYWxfY29ubmVjdCh0cmVlVmlldywgInJvdy1hY3RpdmF0
ZWQiLCBHX0NBTExCQUNLKHRyZWVWaWV3Um93QWN0aXZhdGVkQ2FsbGJhY2spLCB0aGlzKTsKKyAg
ICBndGtfdHJlZV92aWV3X3NldF9lbmFibGVfc2VhcmNoKHRyZWVWaWV3LCBGQUxTRSk7CisgICAg
Z3RrX3RyZWVfdmlld19zZXRfYWN0aXZhdGVfb25fc2luZ2xlX2NsaWNrKHRyZWVWaWV3LCBUUlVF
KTsKKyAgICBndGtfdHJlZV92aWV3X3NldF9ob3Zlcl9zZWxlY3Rpb24odHJlZVZpZXcsIFRSVUUp
OworICAgIGd0a190cmVlX3ZpZXdfc2V0X2hlYWRlcnNfdmlzaWJsZSh0cmVlVmlldywgRkFMU0Up
OworICAgIGd0a190cmVlX3ZpZXdfaW5zZXJ0X2NvbHVtbl93aXRoX2F0dHJpYnV0ZXModHJlZVZp
ZXcsIDAsIG51bGxwdHIsIGd0a19jZWxsX3JlbmRlcmVyX3RleHRfbmV3KCksICJ0ZXh0IiwgMCwg
bnVsbHB0cik7CisKKyAgICBhdXRvKiBzZWxlY3Rpb24gPSBndGtfdHJlZV92aWV3X2dldF9zZWxl
Y3Rpb24odHJlZVZpZXcpOworICAgIC8vIFRoZSBmaXJzdCB0aW1lIGl0J3Mgc2hvd24gdGhlIGZp
cnN0IGl0ZW0gaXMgYWx3YXlzIHNlbGVjdGVkLCBzbyB3ZSBjb25uZWN0IHRvIHNlbGVjdGlvbiBj
aGFuZ2VkIHRvIHVuc2VsZWN0IGl0LgorICAgIGdfc2lnbmFsX2Nvbm5lY3Rfb2JqZWN0KHNlbGVj
dGlvbiwgImNoYW5nZWQiLCBHX0NBTExCQUNLKGZpcnN0VGltZUl0ZW1TZWxlY3RlZENhbGxiYWNr
KSwgdHJlZVZpZXcsIHN0YXRpY19jYXN0PEdDb25uZWN0RmxhZ3M+KDApKTsKKyAgICBndGtfdHJl
ZV9zZWxlY3Rpb25fc2V0X21vZGUoc2VsZWN0aW9uLCBHVEtfU0VMRUNUSU9OX1NJTkdMRSk7CisK
KyAgICBhdXRvKiBzd2luZG93ID0gZ3RrX3Njcm9sbGVkX3dpbmRvd19uZXcobnVsbHB0ciwgbnVs
bHB0cik7CisgICAgZ3RrX3Njcm9sbGVkX3dpbmRvd19zZXRfcG9saWN5KEdUS19TQ1JPTExFRF9X
SU5ET1coc3dpbmRvdyksIEdUS19QT0xJQ1lfTkVWRVIsIEdUS19QT0xJQ1lfQVVUT01BVElDKTsK
KyAgICBndGtfc2Nyb2xsZWRfd2luZG93X3NldF9zaGFkb3dfdHlwZShHVEtfU0NST0xMRURfV0lO
RE9XKHN3aW5kb3cpLCBHVEtfU0hBRE9XX0VUQ0hFRF9JTik7CisgICAgZ3RrX2NvbnRhaW5lcl9h
ZGQoR1RLX0NPTlRBSU5FUihzd2luZG93KSwgbV90cmVlVmlldyk7CisgICAgZ3RrX3dpZGdldF9z
aG93KG1fdHJlZVZpZXcpOworCisgICAgbV9wb3B1cCA9IGd0a193aW5kb3dfbmV3KEdUS19XSU5E
T1dfUE9QVVApOworICAgIGd0a193aW5kb3dfc2V0X3R5cGVfaGludChHVEtfV0lORE9XKG1fcG9w
dXApLCBHREtfV0lORE9XX1RZUEVfSElOVF9DT01CTyk7CisgICAgZ3RrX3dpbmRvd19zZXRfcmVz
aXphYmxlKEdUS19XSU5ET1cobV9wb3B1cCksIEZBTFNFKTsKKyAgICBndGtfY29udGFpbmVyX2Fk
ZChHVEtfQ09OVEFJTkVSKG1fcG9wdXApLCBzd2luZG93KTsKKyAgICBndGtfd2lkZ2V0X3Nob3co
c3dpbmRvdyk7CisKKyAgICBnX3NpZ25hbF9jb25uZWN0X29iamVjdChtX3dlYlZpZXcsICJmb2N1
cy1vdXQtZXZlbnQiLCBHX0NBTExCQUNLKGd0a193aWRnZXRfaGlkZSksIG1fcG9wdXAsIEdfQ09O
TkVDVF9TV0FQUEVEKTsKKyAgICBnX3NpZ25hbF9jb25uZWN0X29iamVjdChtX3dlYlZpZXcsICJ1
bm1hcC1ldmVudCIsIEdfQ0FMTEJBQ0soZ3RrX3dpZGdldF9oaWRlKSwgbV9wb3B1cCwgR19DT05O
RUNUX1NXQVBQRUQpOworCisjaWYgRU5BQkxFKERFVkVMT1BFUl9NT0RFKQorICAgIGdfb2JqZWN0
X3NldF9kYXRhKEdfT0JKRUNUKG1fd2ViVmlldyksICJ3ay1kYXRhbGlzdC1wb3B1cCIsIG1fcG9w
dXApOworI2VuZGlmCit9CisKK1dlYkRhdGFMaXN0U3VnZ2VzdGlvbnNEcm9wZG93bkd0azo6fldl
YkRhdGFMaXN0U3VnZ2VzdGlvbnNEcm9wZG93bkd0aygpCit7CisgICAgZ3RrX3dpbmRvd19zZXRf
dHJhbnNpZW50X2ZvcihHVEtfV0lORE9XKG1fcG9wdXApLCBudWxscHRyKTsKKyAgICBndGtfd2lu
ZG93X3NldF9hdHRhY2hlZF90byhHVEtfV0lORE9XKG1fcG9wdXApLCBudWxscHRyKTsKKyNpZiBF
TkFCTEUoREVWRUxPUEVSX01PREUpCisgICAgZ19vYmplY3Rfc2V0X2RhdGEoR19PQkpFQ1QobV93
ZWJWaWV3KSwgIndrLWRhdGFsaXN0LXBvcHVwIiwgbnVsbHB0cik7CisjZW5kaWYKKyAgICBndGtf
d2lkZ2V0X2Rlc3Ryb3kobV9wb3B1cCk7Cit9CisKK3ZvaWQgV2ViRGF0YUxpc3RTdWdnZXN0aW9u
c0Ryb3Bkb3duR3RrOjp0cmVlVmlld1Jvd0FjdGl2YXRlZENhbGxiYWNrKEd0a1RyZWVWaWV3KiB0
cmVlVmlldywgR3RrVHJlZVBhdGgqIHBhdGgsIEd0a1RyZWVWaWV3Q29sdW1uKiwgV2ViRGF0YUxp
c3RTdWdnZXN0aW9uc0Ryb3Bkb3duR3RrKiBtZW51KQoreworICAgIGF1dG8qIG1vZGVsID0gZ3Rr
X3RyZWVfdmlld19nZXRfbW9kZWwodHJlZVZpZXcpOworICAgIEd0a1RyZWVJdGVyIGl0ZXI7Cisg
ICAgZ3RrX3RyZWVfbW9kZWxfZ2V0X2l0ZXIobW9kZWwsICZpdGVyLCBwYXRoKTsKKyAgICBHVW5p
cXVlT3V0UHRyPGNoYXI+IGl0ZW07CisgICAgZ3RrX3RyZWVfbW9kZWxfZ2V0KG1vZGVsLCAmaXRl
ciwgMCwgJml0ZW0ub3V0UHRyKCksIC0xKTsKKworICAgIG1lbnUtPmRpZFNlbGVjdE9wdGlvbihT
dHJpbmc6OmZyb21VVEY4KGl0ZW0uZ2V0KCkpKTsKK30KKwordm9pZCBXZWJEYXRhTGlzdFN1Z2dl
c3Rpb25zRHJvcGRvd25HdGs6OmRpZFNlbGVjdE9wdGlvbihjb25zdCBTdHJpbmcmIHNlbGVjdGVk
T3B0aW9uKQoreworICAgIGlmICghbV9wYWdlKQorICAgICAgICByZXR1cm47CisKKyAgICBtX3Bh
Z2UtPmRpZFNlbGVjdE9wdGlvbihzZWxlY3RlZE9wdGlvbik7CisgICAgY2xvc2UoKTsKK30KKwor
dm9pZCBXZWJEYXRhTGlzdFN1Z2dlc3Rpb25zRHJvcGRvd25HdGs6OnNob3coV2ViQ29yZTo6RGF0
YUxpc3RTdWdnZXN0aW9uSW5mb3JtYXRpb24mJiBpbmZvcm1hdGlvbikKK3sKKyAgICBhdXRvKiBt
b2RlbCA9IEdUS19MSVNUX1NUT1JFKGd0a190cmVlX3ZpZXdfZ2V0X21vZGVsKEdUS19UUkVFX1ZJ
RVcobV90cmVlVmlldykpKTsKKyAgICBndGtfbGlzdF9zdG9yZV9jbGVhcihtb2RlbCk7CisgICAg
Zm9yIChjb25zdCBhdXRvJiBzdWdnZXN0aW9uIDogaW5mb3JtYXRpb24uc3VnZ2VzdGlvbnMpIHsK
KyAgICAgICAgR3RrVHJlZUl0ZXIgaXRlcjsKKyAgICAgICAgZ3RrX2xpc3Rfc3RvcmVfYXBwZW5k
KG1vZGVsLCAmaXRlcik7CisgICAgICAgIGd0a19saXN0X3N0b3JlX3NldChtb2RlbCwgJml0ZXIs
IDAsIHN1Z2dlc3Rpb24udXRmOCgpLmRhdGEoKSwgLTEpOworICAgIH0KKworICAgIEd0a1JlcXVp
c2l0aW9uIHRyZWVWaWV3UmVxdWlzaXRpb247CisgICAgZ3RrX3dpZGdldF9nZXRfcHJlZmVycmVk
X3NpemUobV90cmVlVmlldywgJnRyZWVWaWV3UmVxdWlzaXRpb24sIG51bGxwdHIpOworICAgIGF1
dG8qIGNvbHVtbiA9IGd0a190cmVlX3ZpZXdfZ2V0X2NvbHVtbihHVEtfVFJFRV9WSUVXKG1fdHJl
ZVZpZXcpLCAwKTsKKyAgICBnaW50IGl0ZW1IZWlnaHQ7CisgICAgZ3RrX3RyZWVfdmlld19jb2x1
bW5fY2VsbF9nZXRfc2l6ZShjb2x1bW4sIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIG51bGxw
dHIsICZpdGVtSGVpZ2h0KTsKKyAgICBnaW50IHZlcnRpY2FsU2VwYXJhdG9yOworICAgIGd0a193
aWRnZXRfc3R5bGVfZ2V0KG1fdHJlZVZpZXcsICJ2ZXJ0aWNhbC1zZXBhcmF0b3IiLCAmdmVydGlj
YWxTZXBhcmF0b3IsIG51bGxwdHIpOworICAgIGl0ZW1IZWlnaHQgKz0gdmVydGljYWxTZXBhcmF0
b3I7CisgICAgaWYgKCFpdGVtSGVpZ2h0KQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvKiBk
aXNwbGF5ID0gZ3RrX3dpZGdldF9nZXRfZGlzcGxheShtX3dlYlZpZXcpOworICAgIGF1dG8qIG1v
bml0b3IgPSBnZGtfZGlzcGxheV9nZXRfbW9uaXRvcl9hdF93aW5kb3coZGlzcGxheSwgZ3RrX3dp
ZGdldF9nZXRfd2luZG93KG1fd2ViVmlldykpOworICAgIEdka1JlY3RhbmdsZSBhcmVhOworICAg
IGdka19tb25pdG9yX2dldF93b3JrYXJlYShtb25pdG9yLCAmYXJlYSk7CisgICAgaW50IHdpZHRo
ID0gc3RkOjptaW4oaW5mb3JtYXRpb24uZWxlbWVudFJlY3Qud2lkdGgoKSwgYXJlYS53aWR0aCk7
CisgICAgc2l6ZV90IGl0ZW1Db3VudCA9IHN0ZDo6bWluPHNpemVfdD4oaW5mb3JtYXRpb24uc3Vn
Z2VzdGlvbnMuc2l6ZSgpLCAoYXJlYS5oZWlnaHQgLyAzKSAvIGl0ZW1IZWlnaHQpOworCisgICAg
YXV0byogc3dpbmRvdyA9IEdUS19TQ1JPTExFRF9XSU5ET1coZ3RrX2Jpbl9nZXRfY2hpbGQoR1RL
X0JJTihtX3BvcHVwKSkpOworICAgIC8vIERpc2FibGUgc2Nyb2xsYmFycyB3aGVuIHRoZXJlJ3Mg
b25seSBvbmUgaXRlbSB0byBlbnN1cmUgdGhlIHNjcm9sbGVkIHdpbmRvdyBkb2Vzbid0IHRha2Ug
dGhlbSBpbnRvIGFjY291bnQgd2hlbiBjYWxjdWxhdGluZyBpdHMgbWluaW11bSBzaXplLgorICAg
IGd0a19zY3JvbGxlZF93aW5kb3dfc2V0X3BvbGljeShzd2luZG93LCBHVEtfUE9MSUNZX05FVkVS
LCBpdGVtQ291bnQgPiAxID8gR1RLX1BPTElDWV9BVVRPTUFUSUMgOiBHVEtfUE9MSUNZX05FVkVS
KTsKKyAgICBndGtfd2lkZ2V0X3JlYWxpemUobV90cmVlVmlldyk7CisgICAgZ3RrX3RyZWVfdmll
d19jb2x1bW5zX2F1dG9zaXplKEdUS19UUkVFX1ZJRVcobV90cmVlVmlldykpOworICAgIGd0a19z
Y3JvbGxlZF93aW5kb3dfc2V0X21pbl9jb250ZW50X3dpZHRoKHN3aW5kb3csIHdpZHRoKTsKKyAg
ICBndGtfd2lkZ2V0X3NldF9zaXplX3JlcXVlc3QobV9wb3B1cCwgd2lkdGgsIC0xKTsKKyAgICBn
dGtfc2Nyb2xsZWRfd2luZG93X3NldF9taW5fY29udGVudF9oZWlnaHQoc3dpbmRvdywgaXRlbUNv
dW50ICogaXRlbUhlaWdodCk7CisKKyAgICBHdGtSZXF1aXNpdGlvbiBtZW51UmVxdWlzaXRpb247
CisgICAgZ3RrX3dpZGdldF9nZXRfcHJlZmVycmVkX3NpemUobV9wb3B1cCwgJm1lbnVSZXF1aXNp
dGlvbiwgbnVsbHB0cik7CisgICAgSW50UG9pbnQgbWVudVBvc2l0aW9uID0gY29udmVydFdpZGdl
dFBvaW50VG9TY3JlZW5Qb2ludChtX3dlYlZpZXcsIGluZm9ybWF0aW9uLmVsZW1lbnRSZWN0Lmxv
Y2F0aW9uKCkpOworICAgIC8vIEZJWE1FOiBXZSBjYW4ndCBlbnN1cmUgdGhlIG1lbnUgd2lsbCBi
ZSBvbiBzY3JlZW4gaW4gV2F5bGFuZC4KKyAgICAvLyBodHRwczovL2Jsb2cuZ3RrLm9yZy8yMDE2
LzA3LzE1L2Z1dHVyZS1vZi1yZWxhdGl2ZS13aW5kb3ctcG9zaXRpb25pbmcvCisgICAgLy8gaHR0
cHM6Ly9naXRsYWIuZ25vbWUub3JnL0dOT01FL2d0ay9pc3N1ZXMvOTk3CisgICAgaWYgKG1lbnVQ
b3NpdGlvbi54KCkgKyBtZW51UmVxdWlzaXRpb24ud2lkdGggPiBhcmVhLnggKyBhcmVhLndpZHRo
KQorICAgICAgICBtZW51UG9zaXRpb24uc2V0WChhcmVhLnggKyBhcmVhLndpZHRoIC0gbWVudVJl
cXVpc2l0aW9uLndpZHRoKTsKKworICAgIGlmIChtZW51UG9zaXRpb24ueSgpICsgaW5mb3JtYXRp
b24uZWxlbWVudFJlY3QuaGVpZ2h0KCkgKyBtZW51UmVxdWlzaXRpb24uaGVpZ2h0IDw9IGFyZWEu
eSArIGFyZWEuaGVpZ2h0CisgICAgICAgIHx8IG1lbnVQb3NpdGlvbi55KCkgLSBhcmVhLnkgPCAo
YXJlYS55ICsgYXJlYS5oZWlnaHQpIC0gKG1lbnVQb3NpdGlvbi55KCkgKyBpbmZvcm1hdGlvbi5l
bGVtZW50UmVjdC5oZWlnaHQoKSkpCisgICAgICAgIG1lbnVQb3NpdGlvbi5tb3ZlKDAsIGluZm9y
bWF0aW9uLmVsZW1lbnRSZWN0LmhlaWdodCgpKTsKKyAgICBlbHNlCisgICAgICAgIG1lbnVQb3Np
dGlvbi5tb3ZlKDAsIC1tZW51UmVxdWlzaXRpb24uaGVpZ2h0KTsKKyAgICBndGtfd2luZG93X21v
dmUoR1RLX1dJTkRPVyhtX3BvcHVwKSwgbWVudVBvc2l0aW9uLngoKSwgbWVudVBvc2l0aW9uLnko
KSk7CisKKyAgICBhdXRvKiB0b3BsZXZlbCA9IGd0a193aWRnZXRfZ2V0X3RvcGxldmVsKG1fd2Vi
Vmlldyk7CisgICAgaWYgKEdUS19JU19XSU5ET1codG9wbGV2ZWwpKSB7CisgICAgICAgIGd0a193
aW5kb3dfc2V0X3RyYW5zaWVudF9mb3IoR1RLX1dJTkRPVyhtX3BvcHVwKSwgR1RLX1dJTkRPVyh0
b3BsZXZlbCkpOworICAgICAgICBndGtfd2luZG93X2dyb3VwX2FkZF93aW5kb3coZ3RrX3dpbmRv
d19nZXRfZ3JvdXAoR1RLX1dJTkRPVyh0b3BsZXZlbCkpLCBHVEtfV0lORE9XKG1fcG9wdXApKTsK
KyAgICB9CisgICAgZ3RrX3dpbmRvd19zZXRfYXR0YWNoZWRfdG8oR1RLX1dJTkRPVyhtX3BvcHVw
KSwgbV93ZWJWaWV3KTsKKyAgICBndGtfd2luZG93X3NldF9zY3JlZW4oR1RLX1dJTkRPVyhtX3Bv
cHVwKSwgZ3RrX3dpZGdldF9nZXRfc2NyZWVuKG1fd2ViVmlldykpOworCisgICAgZ3RrX3dpZGdl
dF9zaG93KG1fcG9wdXApOworfQorCit2b2lkIFdlYkRhdGFMaXN0U3VnZ2VzdGlvbnNEcm9wZG93
bkd0azo6aGFuZGxlS2V5ZG93bldpdGhJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYga2V5KQorewor
ICAgIGF1dG8qIHNlbGVjdGlvbiA9IGd0a190cmVlX3ZpZXdfZ2V0X3NlbGVjdGlvbihHVEtfVFJF
RV9WSUVXKG1fdHJlZVZpZXcpKTsKKyAgICBHdGtUcmVlTW9kZWwqIG1vZGVsOworICAgIEd0a1Ry
ZWVJdGVyIGl0ZXI7CisgICAgYm9vbCBoYXNTZWxlY3Rpb24gPSBndGtfdHJlZV9zZWxlY3Rpb25f
Z2V0X3NlbGVjdGVkKHNlbGVjdGlvbiwgJm1vZGVsLCAmaXRlcik7CisgICAgaWYgKGtleSA9PSAi
RW50ZXIiKSB7CisgICAgICAgIGlmIChoYXNTZWxlY3Rpb24pIHsKKyAgICAgICAgICAgIEdVbmlx
dWVPdXRQdHI8Y2hhcj4gaXRlbTsKKyAgICAgICAgICAgIGd0a190cmVlX21vZGVsX2dldChtb2Rl
bCwgJml0ZXIsIDAsICZpdGVtLm91dFB0cigpLCAtMSk7CisgICAgICAgICAgICBtX3BhZ2UtPmRp
ZFNlbGVjdE9wdGlvbihTdHJpbmc6OmZyb21VVEY4KGl0ZW0uZ2V0KCkpKTsKKyAgICAgICAgfQor
ICAgICAgICBjbG9zZSgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKGtleSA9
PSAiVXAiKSB7CisgICAgICAgIGlmICgoaGFzU2VsZWN0aW9uICYmIGd0a190cmVlX21vZGVsX2l0
ZXJfcHJldmlvdXMobW9kZWwsICZpdGVyKSkgfHwgZ3RrX3RyZWVfbW9kZWxfaXRlcl9udGhfY2hp
bGQobW9kZWwsICZpdGVyLCBudWxscHRyLCBndGtfdHJlZV9tb2RlbF9pdGVyX25fY2hpbGRyZW4o
bW9kZWwsIG51bGxwdHIpIC0gMSkpCisgICAgICAgICAgICBndGtfdHJlZV9zZWxlY3Rpb25fc2Vs
ZWN0X2l0ZXIoc2VsZWN0aW9uLCAmaXRlcik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICB9IGVsc2UgaWYgKGtleSA9PSAiRG93biIpIHsKKyAgICAgICAgaWYgKChoYXNT
ZWxlY3Rpb24gJiYgZ3RrX3RyZWVfbW9kZWxfaXRlcl9uZXh0KG1vZGVsLCAmaXRlcikpIHx8IGd0
a190cmVlX21vZGVsX2dldF9pdGVyX2ZpcnN0KG1vZGVsLCAmaXRlcikpCisgICAgICAgICAgICBn
dGtfdHJlZV9zZWxlY3Rpb25fc2VsZWN0X2l0ZXIoc2VsZWN0aW9uLCAmaXRlcik7CisgICAgICAg
IGVsc2UKKyAgICAgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBHVW5pcXVlUHRyPEd0a1Ry
ZWVQYXRoPiBwYXRoKGd0a190cmVlX21vZGVsX2dldF9wYXRoKG1vZGVsLCAmaXRlcikpOworICAg
IGd0a190cmVlX3ZpZXdfc2Nyb2xsX3RvX2NlbGwoR1RLX1RSRUVfVklFVyhtX3RyZWVWaWV3KSwg
cGF0aC5nZXQoKSwgbnVsbHB0ciwgRkFMU0UsIDAsIDApOworfQorCit2b2lkIFdlYkRhdGFMaXN0
U3VnZ2VzdGlvbnNEcm9wZG93bkd0azo6Y2xvc2UoKQoreworICAgIGd0a193aWRnZXRfaGlkZSht
X3BvcHVwKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUo
REFUQUxJU1RfRUxFTUVOVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0
ay9XZWJEYXRhTGlzdFN1Z2dlc3Rpb25zRHJvcGRvd25HdGsuaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2d0ay9XZWJEYXRhTGlzdFN1Z2dlc3Rpb25zRHJvcGRvd25HdGsuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNjQwN2Q2MjY3MjMKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvV2ViRGF0YUxpc3RTdWdnZXN0aW9uc0Ry
b3Bkb3duR3RrLmgKQEAgLTAsMCArMSw2NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBJ
Z2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoREFUQUxJU1Rf
RUxFTUVOVCkKKworI2luY2x1ZGUgIldlYkRhdGFMaXN0U3VnZ2VzdGlvbnNEcm9wZG93bi5oIgor
Cit0eXBlZGVmIHN0cnVjdCBfR3RrVHJlZVBhdGggR3RrVHJlZVBhdGg7Cit0eXBlZGVmIHN0cnVj
dCBfR3RrVHJlZVZpZXcgR3RrVHJlZVZpZXc7Cit0eXBlZGVmIHN0cnVjdCBfR3RrVHJlZVZpZXdD
b2x1bW4gR3RrVHJlZVZpZXdDb2x1bW47CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBX
ZWJQYWdlUHJveHk7CisKK2NsYXNzIFdlYkRhdGFMaXN0U3VnZ2VzdGlvbnNEcm9wZG93bkd0ayBm
aW5hbCA6IHB1YmxpYyBXZWJEYXRhTGlzdFN1Z2dlc3Rpb25zRHJvcGRvd24geworcHVibGljOgor
ICAgIHN0YXRpYyBSZWY8V2ViRGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3duR3RrPiBjcmVhdGUo
R3RrV2lkZ2V0KiB3ZWJWaWV3LCBXZWJQYWdlUHJveHkmIHBhZ2UpCisgICAgeworICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJEYXRhTGlzdFN1Z2dlc3Rpb25zRHJvcGRvd25HdGsod2Vi
VmlldywgcGFnZSkpOworICAgIH0KKworICAgIH5XZWJEYXRhTGlzdFN1Z2dlc3Rpb25zRHJvcGRv
d25HdGsoKTsKKworcHJpdmF0ZToKKyAgICBXZWJEYXRhTGlzdFN1Z2dlc3Rpb25zRHJvcGRvd25H
dGsoR3RrV2lkZ2V0KiwgV2ViUGFnZVByb3h5Jik7CisKKyAgICB2b2lkIHNob3coV2ViQ29yZTo6
RGF0YUxpc3RTdWdnZXN0aW9uSW5mb3JtYXRpb24mJikgZmluYWw7CisgICAgdm9pZCBoYW5kbGVL
ZXlkb3duV2l0aElkZW50aWZpZXIoY29uc3QgU3RyaW5nJikgZmluYWw7CisgICAgdm9pZCBjbG9z
ZSgpIGZpbmFsOworCisgICAgc3RhdGljIHZvaWQgdHJlZVZpZXdSb3dBY3RpdmF0ZWRDYWxsYmFj
ayhHdGtUcmVlVmlldyosIEd0a1RyZWVQYXRoKiwgR3RrVHJlZVZpZXdDb2x1bW4qLCBXZWJEYXRh
TGlzdFN1Z2dlc3Rpb25zRHJvcGRvd25HdGsqKTsKKyAgICB2b2lkIGRpZFNlbGVjdE9wdGlvbihj
b25zdCBTdHJpbmcmKTsKKworICAgIEd0a1dpZGdldCogbV93ZWJWaWV3IHsgbnVsbHB0ciB9Owor
ICAgIEd0a1dpZGdldCogbV9wb3B1cCB7IG51bGxwdHIgfTsKKyAgICBHdGtXaWRnZXQqIG1fdHJl
ZVZpZXcgeyBudWxscHRyIH07Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlm
IC8vIEVOQUJMRShEQVRBTElTVF9FTEVNRU5UKQpkaWZmIC0tZ2l0IGEvU291cmNlL2NtYWtlL09w
dGlvbnNHVEsuY21ha2UgYi9Tb3VyY2UvY21ha2UvT3B0aW9uc0dUSy5jbWFrZQppbmRleCAxYzY2
YzNjMDM0ZS4uZWVkMDA2OWFlMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9jbWFrZS9PcHRpb25zR1RL
LmNtYWtlCisrKyBiL1NvdXJjZS9jbWFrZS9PcHRpb25zR1RLLmNtYWtlCkBAIC0xNTAsNiArMTUw
LDcgQEAgV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX1dFQkRSSVZFUiBQ
VUJMSUMgT04pCiAjIENoYW5naW5nIHRoZXNlIG9wdGlvbnMgaXMgY29tcGxldGVseSB1bnN1cHBv
cnRlZC4KIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9DT05URU5UX0VY
VEVOU0lPTlMgUFJJVkFURSBPTikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVO
QUJMRV9EQVJLX01PREVfQ1NTIFBSSVZBVEUgT04pCitXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9S
VF9WQUxVRShFTkFCTEVfREFUQUxJU1RfRUxFTUVOVCBQUklWQVRFIE9OKQogV0VCS0lUX09QVElP
Tl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX0RPV05MT0FEX0FUVFJJQlVURSBQUklWQVRFIE9O
KQogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX0VOQ1JZUFRFRF9NRURJ
QSBQUklWQVRFICR7RU5BQkxFX0VYUEVSSU1FTlRBTF9GRUFUVVJFU30pCiBXRUJLSVRfT1BUSU9O
X0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfRlRQRElSIFBSSVZBVEUgT0ZGKQpkaWZmIC0tZ2l0
IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGRjMjQ5ZWZjMDhiLi5m
M2Y2ZjBkMDNiMyAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDE5LTA3LTMwICBDYXJsb3MgR2FyY2lhIENhbXBvcyAg
PGNnYXJjaWFAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXSBEYXRhbGlzdCBlbGVtZW50IHN1
cHBvcnQgZm9yIFRleHRGaWVsZElucHV0VHlwZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTg5MzQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBJbXBsZW1lbnQgVUlTY3JpcHRDb250cm9sbGVyR3RrOjppc1No
b3dpbmdEYXRhTGlzdFN1Z2dlc3Rpb25zLgorCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9n
dGsvVUlTY3JpcHRDb250cm9sbGVyR3RrLmNwcDoKKyAgICAgICAgKFdUUjo6VUlTY3JpcHRDb250
cm9sbGVyR3RrOjppc1Nob3dpbmdEYXRhTGlzdFN1Z2dlc3Rpb25zIGNvbnN0KToKKyAgICAgICAg
KiBXZWJLaXRUZXN0UnVubmVyL2d0ay9VSVNjcmlwdENvbnRyb2xsZXJHdGsuaDoKKwogMjAxOS0w
Ny0yOSAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAg
ICAgTXVsdGlwbGUgY29udGV4dCBtZW51IGFjdGlvbnMgYnJva2VuIGZvciBZb3VUdWJlIHZpZGVv
cwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9ndGsvVUlTY3JpcHRDb250cm9s
bGVyR3RrLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvZ3RrL1VJU2NyaXB0Q29udHJvbGxl
ckd0ay5jcHAKaW5kZXggY2RkZTE3ZmQxNjQuLjg5ODQ0ZTA4NjFmIDEwMDY0NAotLS0gYS9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL2d0ay9VSVNjcmlwdENvbnRyb2xsZXJHdGsuY3BwCisrKyBiL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvZ3RrL1VJU2NyaXB0Q29udHJvbGxlckd0ay5jcHAKQEAgLTI5
LDYgKzI5LDcgQEAKICNpbmNsdWRlICJQbGF0Zm9ybVdlYlZpZXcuaCIKICNpbmNsdWRlICJUZXN0
Q29udHJvbGxlci5oIgogI2luY2x1ZGUgPFdlYktpdC9XS1ZpZXdQcml2YXRlLmg+CisjaW5jbHVk
ZSA8Z3RrL2d0ay5oPgogCiBuYW1lc3BhY2UgV1RSIHsKIApAQCAtNTEsNCArNTIsMTIgQEAgdm9p
ZCBVSVNjcmlwdENvbnRyb2xsZXJHdGs6OmNvbXBsZXRlQmFja1N3aXBlKEpTVmFsdWVSZWYgY2Fs
bGJhY2spCiAgICAgV0tWaWV3Q29tcGxldGVCYWNrU3dpcGVGb3JUZXN0aW5nKHdlYlZpZXcpOwog
fQogCitib29sIFVJU2NyaXB0Q29udHJvbGxlckd0azo6aXNTaG93aW5nRGF0YUxpc3RTdWdnZXN0
aW9ucygpIGNvbnN0Cit7CisgICAgYXV0byogd2ViVmlldyA9IFRlc3RDb250cm9sbGVyOjpzaW5n
bGV0b24oKS5tYWluV2ViVmlldygpLT5wbGF0Zm9ybVZpZXcoKTsKKyAgICBpZiAoYXV0byogcG9w
dXAgPSBnX29iamVjdF9nZXRfZGF0YShHX09CSkVDVCh3ZWJWaWV3KSwgIndrLWRhdGFsaXN0LXBv
cHVwIikpCisgICAgICAgIHJldHVybiBndGtfd2lkZ2V0X2dldF9tYXBwZWQoR1RLX1dJREdFVChw
b3B1cCkpOworICAgIHJldHVybiBmYWxzZTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV1RSCmRpZmYg
LS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2d0ay9VSVNjcmlwdENvbnRyb2xsZXJHdGsu
aCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvZ3RrL1VJU2NyaXB0Q29udHJvbGxlckd0ay5oCmlu
ZGV4IDgzYjNiYmVjNjA5Li4zMzMxOGRjNWQ0OCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9ndGsvVUlTY3JpcHRDb250cm9sbGVyR3RrLmgKKysrIGIvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9ndGsvVUlTY3JpcHRDb250cm9sbGVyR3RrLmgKQEAgLTQxLDYgKzQxLDcgQEAgcHVi
bGljOgogCiAgICAgdm9pZCBiZWdpbkJhY2tTd2lwZShKU1ZhbHVlUmVmKSBvdmVycmlkZTsKICAg
ICB2b2lkIGNvbXBsZXRlQmFja1N3aXBlKEpTVmFsdWVSZWYpIG92ZXJyaWRlOworICAgIGJvb2wg
aXNTaG93aW5nRGF0YUxpc3RTdWdnZXN0aW9ucygpIGNvbnN0IG92ZXJyaWRlOwogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV1RSCg==
</data>
<flag name="review"
          id="390942"
          type_id="1"
          status="+"
          setter="mcatanzaro"
    />
          </attachment>
      

    </bug>

</bugzilla>