<?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>125986</bug_id>
          
          <creation_ts>2013-12-19 01:19:31 -0800</creation_ts>
          <short_desc>Extract common parts from jhbuildrc files.</short_desc>
          <delta_ts>2014-02-24 07:40:07 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>128311</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="ezisfake">Szanka.Peter</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>d-r</cc>
    
    <cc>galpeter</cc>
    
    <cc>gtk-ews</cc>
    
    <cc>gustavo</cc>
    
    <cc>ltilve+ews</cc>
    
    <cc>mrobinson</cc>
    
    <cc>ossy</cc>
    
    <cc>rego+ews</cc>
    
    <cc>xan.lopez</cc>
    
    <cc>zan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>961320</commentid>
    <comment_count>0</comment_count>
    <who name="ezisfake">Szanka.Peter</who>
    <bug_when>2013-12-19 01:19:31 -0800</bug_when>
    <thetext>The Tools/{efl, nix, gtk}/jhbuildrc files have some common parts. Extract them to a file in Tools/jhbuild/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>961370</commentid>
    <comment_count>1</comment_count>
      <attachid>219648</attachid>
    <who name="ezisfake">Szanka.Peter</who>
    <bug_when>2013-12-19 06:37:18 -0800</bug_when>
    <thetext>Created attachment 219648
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>961373</commentid>
    <comment_count>2</comment_count>
      <attachid>219650</attachid>
    <who name="ezisfake">Szanka.Peter</who>
    <bug_when>2013-12-19 06:44:57 -0800</bug_when>
    <thetext>Created attachment 219650
patch

fixed some checkstyle warning</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>961374</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-12-19 06:46:53 -0800</bug_when>
    <thetext>Attachment 219650 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Tools/ChangeLog&apos;, u&apos;Tools/efl/common.py&apos;, u&apos;Tools/efl/jhbuildrc&apos;, u&apos;Tools/gtk/common.py&apos;, u&apos;Tools/gtk/jhbuildrc&apos;, u&apos;Tools/jhbuild/jhbuildrc_common.py&apos;, u&apos;Tools/nix/common.py&apos;, u&apos;Tools/nix/jhbuildrc&apos;, &apos;--commit-queue&apos;]&quot; exit_code: 1
ERROR: Tools/jhbuild/jhbuildrc_common.py:56:  .has_key() is deprecated, use &apos;in&apos;  [pep8/W601] [5]
Total errors found: 1 in 5 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>961385</commentid>
    <comment_count>4</comment_count>
      <attachid>219650</attachid>
    <who name="kov&apos;s GTK+ EWS bot">gtk-ews</who>
    <bug_when>2013-12-19 07:40:58 -0800</bug_when>
    <thetext>Comment on attachment 219650
patch

Attachment 219650 did not pass gtk-ews (gtk):
Output: http://webkit-queues.appspot.com/results/48818030</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>967710</commentid>
    <comment_count>5</comment_count>
      <attachid>221119</attachid>
    <who name="ezisfake">Szanka.Peter</who>
    <bug_when>2014-01-14 01:12:12 -0800</bug_when>
    <thetext>Created attachment 221119
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>967755</commentid>
    <comment_count>6</comment_count>
    <who name="Dominik Röttsches (drott)">d-r</who>
    <bug_when>2014-01-14 04:23:37 -0800</bug_when>
    <thetext>*** Bug 81344 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>967760</commentid>
    <comment_count>7</comment_count>
      <attachid>221141</attachid>
    <who name="ezisfake">Szanka.Peter</who>
    <bug_when>2014-01-14 04:47:55 -0800</bug_when>
    <thetext>Created attachment 221141
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>967761</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-01-14 04:49:33 -0800</bug_when>
    <thetext>Attachment 221141 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Tools/ChangeLog&apos;, u&apos;Tools/efl/common.py&apos;, u&apos;Tools/efl/jhbuildrc&apos;, u&apos;Tools/gtk/common.py&apos;, u&apos;Tools/gtk/find-make-dist-errors&apos;, u&apos;Tools/gtk/generate-gtkdoc&apos;, u&apos;Tools/gtk/jhbuildrc&apos;, u&apos;Tools/jhbuild/jhbuildrc_common.py&apos;, u&apos;Tools/nix/common.py&apos;, u&apos;Tools/nix/jhbuildrc&apos;, &apos;--commit-queue&apos;]&quot; exit_code: 1
ERROR: Tools/jhbuild/jhbuildrc_common.py:56:  .has_key() is deprecated, use &apos;in&apos;  [pep8/W601] [5]
Total errors found: 1 in 7 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>967777</commentid>
    <comment_count>9</comment_count>
      <attachid>221141</attachid>
    <who name="kov&apos;s GTK+ EWS bot">gtk-ews</who>
    <bug_when>2014-01-14 05:32:43 -0800</bug_when>
    <thetext>Comment on attachment 221141
patch

Attachment 221141 did not pass gtk-ews (gtk):
Output: http://webkit-queues.appspot.com/results/4690392855347200</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>968321</commentid>
    <comment_count>10</comment_count>
      <attachid>221268</attachid>
    <who name="ezisfake">Szanka.Peter</who>
    <bug_when>2014-01-15 08:03:00 -0800</bug_when>
    <thetext>Created attachment 221268
final patch ( i hope)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>977316</commentid>
    <comment_count>11</comment_count>
      <attachid>221268</attachid>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2014-02-06 05:07:33 -0800</bug_when>
    <thetext>Comment on attachment 221268
final patch ( i hope)

LGTM, r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>977318</commentid>
    <comment_count>12</comment_count>
      <attachid>221268</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-02-06 05:36:54 -0800</bug_when>
    <thetext>Comment on attachment 221268
final patch ( i hope)

Clearing flags on attachment: 221268

Committed r163530: &lt;http://trac.webkit.org/changeset/163530&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>977319</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-02-06 05:36:59 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>977391</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-02-06 09:40:39 -0800</bug_when>
    <thetext>Re-opened since this is blocked by bug 128311</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>981516</commentid>
    <comment_count>15</comment_count>
      <attachid>224392</attachid>
    <who name="Tibor Mészáros">mtiborinf</who>
    <bug_when>2014-02-17 10:09:30 -0800</bug_when>
    <thetext>Created attachment 224392
Patch v6

This patch will extract common parts from jhbuildrc files, and fix run-gtk-test script too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>981889</commentid>
    <comment_count>16</comment_count>
      <attachid>224392</attachid>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2014-02-18 04:40:47 -0800</bug_when>
    <thetext>Comment on attachment 224392
Patch v6

Please add the jhbuildrc_common.py to the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>981891</commentid>
    <comment_count>17</comment_count>
      <attachid>224497</attachid>
    <who name="Tibor Mészáros">mtiborinf</who>
    <bug_when>2014-02-18 04:56:35 -0800</bug_when>
    <thetext>Created attachment 224497
Patch v7

Added the missing jhbuildrc_common.py file.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>981892</commentid>
    <comment_count>18</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-02-18 04:57:32 -0800</bug_when>
    <thetext>Attachment 224497 did not pass style-queue:


ERROR: Tools/jhbuild/jhbuildrc_common.py:21:  trailing whitespace  [pep8/W291] [5]
ERROR: Tools/jhbuild/jhbuildrc_common.py:25:  expected 2 blank lines, found 1  [pep8/E302] [5]
ERROR: Tools/jhbuild/jhbuildrc_common.py:26:  indentation is not a multiple of four  [pep8/E111] [5]
ERROR: Tools/jhbuild/jhbuildrc_common.py:27:  indentation is not a multiple of four  [pep8/E111] [5]
ERROR: Tools/jhbuild/jhbuildrc_common.py:29:  indentation is not a multiple of four  [pep8/E111] [5]
ERROR: Tools/jhbuild/jhbuildrc_common.py:31:  expected 2 blank lines, found 1  [pep8/E302] [5]
ERROR: Tools/jhbuild/jhbuildrc_common.py:32:  indentation is not a multiple of four  [pep8/E111] [5]
ERROR: Tools/jhbuild/jhbuildrc_common.py:34:  trailing whitespace  [pep8/W291] [5]
ERROR: Tools/jhbuild/jhbuildrc_common.py:34:  expected 2 blank lines, found 1  [pep8/E302] [5]
ERROR: Tools/jhbuild/jhbuildrc_common.py:35:  indentation is not a multiple of four  [pep8/E111] [5]
ERROR: Tools/jhbuild/jhbuildrc_common.py:36:  indentation is not a multiple of four  [pep8/E111] [5]
ERROR: Tools/jhbuild/jhbuildrc_common.py:38:  trailing whitespace  [pep8/W291] [5]
ERROR: Tools/jhbuild/jhbuildrc_common.py:38:  indentation is not a multiple of four  [pep8/E111] [5]
ERROR: Tools/jhbuild/jhbuildrc_common.py:40:  indentation is not a multiple of four  [pep8/E111] [5]
ERROR: Tools/jhbuild/jhbuildrc_common.py:41:  indentation is not a multiple of four  [pep8/E111] [5]
ERROR: Tools/jhbuild/jhbuildrc_common.py:42:  whitespace after &apos;[&apos;  [pep8/E201] [5]
ERROR: Tools/jhbuild/jhbuildrc_common.py:42:  indentation is not a multiple of four  [pep8/E111] [5]
ERROR: Tools/jhbuild/jhbuildrc_common.py:43:  indentation is not a multiple of four  [pep8/E111] [5]
ERROR: Tools/jhbuild/jhbuildrc_common.py:44:  indentation is not a multiple of four  [pep8/E111] [5]
ERROR: Tools/jhbuild/jhbuildrc_common.py:46:  indentation is not a multiple of four  [pep8/E111] [5]
ERROR: Tools/jhbuild/jhbuildrc_common.py:47:  whitespace after &apos;[&apos;  [pep8/E201] [5]
ERROR: Tools/jhbuild/jhbuildrc_common.py:47:  indentation is not a multiple of four  [pep8/E111] [5]
ERROR: Tools/jhbuild/jhbuildrc_common.py:48:  indentation is not a multiple of four  [pep8/E111] [5]
ERROR: Tools/jhbuild/jhbuildrc_common.py:49:  indentation is not a multiple of four  [pep8/E111] [5]
ERROR: Tools/jhbuild/jhbuildrc_common.py:51:  indentation is not a multiple of four  [pep8/E111] [5]
ERROR: Tools/jhbuild/jhbuildrc_common.py:52:  indentation is not a multiple of four  [pep8/E111] [5]
ERROR: Tools/jhbuild/jhbuildrc_common.py:53:  indentation is not a multiple of four  [pep8/E111] [5]
ERROR: Tools/jhbuild/jhbuildrc_common.py:54:  indentation is not a multiple of four  [pep8/E111] [5]
ERROR: Tools/jhbuild/jhbuildrc_common.py:55:  indentation is not a multiple of four  [pep8/E111] [5]
ERROR: Tools/jhbuild/jhbuildrc_common.py:55:  missing whitespace after &apos;,&apos;  [pep8/E231] [5]
ERROR: Tools/jhbuild/jhbuildrc_common.py:56:  indentation is not a multiple of four  [pep8/E111] [5]
ERROR: Tools/jhbuild/jhbuildrc_common.py:56:  missing whitespace after &apos;,&apos;  [pep8/E231] [5]
ERROR: Tools/jhbuild/jhbuildrc_common.py:58:  indentation is not a multiple of four  [pep8/E111] [5]
ERROR: Tools/jhbuild/jhbuildrc_common.py:59:  indentation is not a multiple of four  [pep8/E111] [5]
ERROR: Tools/jhbuild/jhbuildrc_common.py:60:  blank line at end of file  [pep8/W391] [5]
ERROR: Tools/jhbuild/jhbuildrc_common.py:60:  trailing whitespace  [pep8/W291] [5]
Total errors found: 36 in 11 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>981919</commentid>
    <comment_count>19</comment_count>
      <attachid>224507</attachid>
    <who name="Tibor Mészáros">mtiborinf</who>
    <bug_when>2014-02-18 07:16:59 -0800</bug_when>
    <thetext>Created attachment 224507
Patch v8

The Tools/Scripts/update-webkit-[efl|gtk]libs now working.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>981920</commentid>
    <comment_count>20</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-02-18 07:18:51 -0800</bug_when>
    <thetext>Attachment 224507 did not pass style-queue:


ERROR: Tools/jhbuild/jhbuildrc_common.py:21:  trailing whitespace  [pep8/W291] [5]
ERROR: Tools/jhbuild/jhbuildrc_common.py:25:  expected 2 blank lines, found 1  [pep8/E302] [5]
ERROR: Tools/jhbuild/jhbuildrc_common.py:26:  indentation is not a multiple of four  [pep8/E111] [5]
ERROR: Tools/jhbuild/jhbuildrc_common.py:27:  indentation is not a multiple of four  [pep8/E111] [5]
ERROR: Tools/jhbuild/jhbuildrc_common.py:29:  indentation is not a multiple of four  [pep8/E111] [5]
ERROR: Tools/jhbuild/jhbuildrc_common.py:31:  expected 2 blank lines, found 1  [pep8/E302] [5]
ERROR: Tools/jhbuild/jhbuildrc_common.py:32:  indentation is not a multiple of four  [pep8/E111] [5]
ERROR: Tools/jhbuild/jhbuildrc_common.py:34:  expected 2 blank lines, found 1  [pep8/E302] [5]
ERROR: Tools/jhbuild/jhbuildrc_common.py:35:  indentation is not a multiple of four  [pep8/E111] [5]
ERROR: Tools/jhbuild/jhbuildrc_common.py:36:  indentation is not a multiple of four  [pep8/E111] [5]
ERROR: Tools/jhbuild/jhbuildrc_common.py:37:  trailing whitespace  [pep8/W291] [5]
ERROR: Tools/jhbuild/jhbuildrc_common.py:38:  indentation is not a multiple of four  [pep8/E111] [5]
ERROR: Tools/jhbuild/jhbuildrc_common.py:39:  trailing whitespace  [pep8/W291] [5]
ERROR: Tools/jhbuild/jhbuildrc_common.py:40:  indentation is not a multiple of four  [pep8/E111] [5]
ERROR: Tools/jhbuild/jhbuildrc_common.py:41:  indentation is not a multiple of four  [pep8/E111] [5]
ERROR: Tools/jhbuild/jhbuildrc_common.py:42:  indentation is not a multiple of four  [pep8/E111] [5]
ERROR: Tools/jhbuild/jhbuildrc_common.py:43:  indentation is not a multiple of four  [pep8/E111] [5]
ERROR: Tools/jhbuild/jhbuildrc_common.py:44:  indentation is not a multiple of four  [pep8/E111] [5]
ERROR: Tools/jhbuild/jhbuildrc_common.py:45:  trailing whitespace  [pep8/W291] [5]
ERROR: Tools/jhbuild/jhbuildrc_common.py:46:  indentation is not a multiple of four  [pep8/E111] [5]
ERROR: Tools/jhbuild/jhbuildrc_common.py:47:  indentation is not a multiple of four  [pep8/E111] [5]
ERROR: Tools/jhbuild/jhbuildrc_common.py:48:  indentation is not a multiple of four  [pep8/E111] [5]
ERROR: Tools/jhbuild/jhbuildrc_common.py:49:  indentation is not a multiple of four  [pep8/E111] [5]
ERROR: Tools/jhbuild/jhbuildrc_common.py:50:  trailing whitespace  [pep8/W291] [5]
ERROR: Tools/jhbuild/jhbuildrc_common.py:51:  indentation is not a multiple of four  [pep8/E111] [5]
ERROR: Tools/jhbuild/jhbuildrc_common.py:52:  indentation is not a multiple of four  [pep8/E111] [5]
ERROR: Tools/jhbuild/jhbuildrc_common.py:53:  indentation is not a multiple of four  [pep8/E111] [5]
ERROR: Tools/jhbuild/jhbuildrc_common.py:54:  indentation is not a multiple of four  [pep8/E111] [5]
ERROR: Tools/jhbuild/jhbuildrc_common.py:55:  indentation is not a multiple of four  [pep8/E111] [5]
ERROR: Tools/jhbuild/jhbuildrc_common.py:56:  indentation is not a multiple of four  [pep8/E111] [5]
ERROR: Tools/jhbuild/jhbuildrc_common.py:57:  trailing whitespace  [pep8/W291] [5]
ERROR: Tools/jhbuild/jhbuildrc_common.py:58:  indentation is not a multiple of four  [pep8/E111] [5]
ERROR: Tools/jhbuild/jhbuildrc_common.py:59:  indentation is not a multiple of four  [pep8/E111] [5]
ERROR: Tools/jhbuild/jhbuildrc_common.py:60:  blank line at end of file  [pep8/W391] [5]
ERROR: Tools/jhbuild/jhbuildrc_common.py:60:  trailing whitespace  [pep8/W291] [5]
Total errors found: 35 in 11 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>981931</commentid>
    <comment_count>21</comment_count>
      <attachid>224511</attachid>
    <who name="Tibor Mészáros">mtiborinf</who>
    <bug_when>2014-02-18 07:51:48 -0800</bug_when>
    <thetext>Created attachment 224511
Patch v9

Style has been fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>982378</commentid>
    <comment_count>22</comment_count>
      <attachid>224511</attachid>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2014-02-19 09:34:49 -0800</bug_when>
    <thetext>Comment on attachment 224511
Patch v9

The patch looks good to me, but the Nix part has gone away - https://trac.webkit.org/changeset/164360 ,
and please credit the original author in the changelog.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>983218</commentid>
    <comment_count>23</comment_count>
      <attachid>224872</attachid>
    <who name="Tibor Mészáros">mtiborinf</who>
    <bug_when>2014-02-21 08:44:28 -0800</bug_when>
    <thetext>Created attachment 224872
Patch v10

Removed the nix support</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>983229</commentid>
    <comment_count>24</comment_count>
    <who name="Peter Gal">galpeter</who>
    <bug_when>2014-02-21 09:05:23 -0800</bug_when>
    <thetext>(In reply to comment #23)
&gt; Created an attachment (id=224872) [details]
&gt; Patch v10


It seems this patch contains modifications against an already existing &apos;jhbuildrc_common.py&apos; file, which is clearly incorrect (it&apos;s not in the repo). The whole &apos;jhbuildrc_common.py&apos; file should be in the patch as a new file.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>983864</commentid>
    <comment_count>25</comment_count>
      <attachid>224872</attachid>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2014-02-24 03:36:56 -0800</bug_when>
    <thetext>Comment on attachment 224872
Patch v10

r-, because the patch isn&apos;t appliable and the credit for the original author is still missing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>983872</commentid>
    <comment_count>26</comment_count>
      <attachid>225053</attachid>
    <who name="Tibor Mészáros">mtiborinf</who>
    <bug_when>2014-02-24 04:48:02 -0800</bug_when>
    <thetext>Created attachment 225053
Patch v11

The nix support removed, and added co-author.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>983873</commentid>
    <comment_count>27</comment_count>
      <attachid>225054</attachid>
    <who name="Tibor Mészáros">mtiborinf</who>
    <bug_when>2014-02-24 05:09:02 -0800</bug_when>
    <thetext>Created attachment 225054
Patch v12

Updated patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>983877</commentid>
    <comment_count>28</comment_count>
      <attachid>225057</attachid>
    <who name="Tibor Mészáros">mtiborinf</who>
    <bug_when>2014-02-24 06:01:23 -0800</bug_when>
    <thetext>Created attachment 225057
Patch v13

Updated patch again</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>983878</commentid>
    <comment_count>29</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-02-24 06:03:59 -0800</bug_when>
    <thetext>Attachment 225057 did not pass style-queue:


ERROR: Tools/jhbuild/jhbuildrc_common.py:64:  trailing whitespace  [pep8/W291] [5]
Total errors found: 1 in 10 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>983881</commentid>
    <comment_count>30</comment_count>
      <attachid>225059</attachid>
    <who name="Tibor Mészáros">mtiborinf</who>
    <bug_when>2014-02-24 06:11:56 -0800</bug_when>
    <thetext>Created attachment 225059
Patch v14

Removed the trailing whitespace from Tools/jhbuild/jhbuildrc_common.py:64</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>983884</commentid>
    <comment_count>31</comment_count>
      <attachid>225061</attachid>
    <who name="Tibor Mészáros">mtiborinf</who>
    <bug_when>2014-02-24 06:27:48 -0800</bug_when>
    <thetext>Created attachment 225061
Patch v15

Added the missing line break to the end of the diff file...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>983905</commentid>
    <comment_count>32</comment_count>
      <attachid>225061</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-02-24 07:40:03 -0800</bug_when>
    <thetext>Comment on attachment 225061
Patch v15

Clearing flags on attachment: 225061

Committed r164585: &lt;http://trac.webkit.org/changeset/164585&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>983906</commentid>
    <comment_count>33</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-02-24 07:40:07 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>219648</attachid>
            <date>2013-12-19 06:37:18 -0800</date>
            <delta_ts>2013-12-19 06:38:18 -0800</delta_ts>
            <desc>patch</desc>
            <filename>diff</filename>
            <type>text/plain</type>
            <size>12439</size>
            <attacher name="ezisfake">Szanka.Peter</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1Rvb2xzL2poYnVpbGQvamhidWlsZHJjX2NvbW1vbi5weSBiL1Rvb2xzL2po
YnVpbGQvamhidWlsZHJjX2NvbW1vbi5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi4xMGQ1OTYxCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvamhidWlsZC9qaGJ1aWxkcmNf
Y29tbW9uLnB5CkBAIC0wLDAgKzEsNjIgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbgorIyBDb3B5
cmlnaHQgKEMpIDIwMTEgSWdhbGlhIFMuTC4KKyMgQ29weXJpZ2h0IChDKSAyMDEyIEludGVsIENv
cnBvcmF0aW9uCisjIENvcHlyaWdodCAoQykgMjAxMiwgMjAxMyBOb2tpYSBDb3Jwb3JhdGlvbiBh
bmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykuCisjCisjIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNv
ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyMgbW9kaWZ5IGl0IHVuZGVy
IHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworIyBMaWNlbnNlIGFz
IHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyMgdmVy
c2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJz
aW9uLgorIworIyBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp
dCB3aWxsIGJlIHVzZWZ1bCwKKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2
ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyMgTGVzc2VyIEdlbmVyYWwg
UHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyMKKyMgWW91IHNob3VsZCBoYXZlIHJl
Y2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworIyBMaWNlbnNl
IGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3
YXJlCisjIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3Is
IEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQorCitpbXBvcnQgbXVsdGlwcm9jZXNzaW5nCitp
bXBvcnQgc3lzCitpbXBvcnQgb3MKKworc2NyaXB0X2RpciA9IE5vbmUKKworZGVmIHNjcmlwdF9w
YXRoKCphcmdzKToKKyAgICBnbG9iYWwgc2NyaXB0X2RpcgorICAgIGlmIG5vdCBzY3JpcHRfZGly
OgorICAgICAgICBzY3JpcHRfZGlyID0gb3MucGF0aC5qb2luKG9zLnBhdGguZGlybmFtZShfX2Zp
bGVfXyksICcuLicsICdTY3JpcHRzJykKKyAgICByZXR1cm4gb3MucGF0aC5qb2luKCooc2NyaXB0
X2RpciwpICsgYXJncykKKworZGVmIHRvcF9sZXZlbF9wYXRoKCphcmdzKToKKyAgICByZXR1cm4g
b3MucGF0aC5qb2luKCooKG9zLnBhdGguam9pbihvcy5wYXRoLmRpcm5hbWUoX19maWxlX18pLCAn
Li4nLCAnLi4nKSwpICsgYXJncykpCisKK2RlZiBpbml0KGpoYnVpbGRyY19nbG9iYWxzLCBwbGF0
Zm9ybSk6CisKKyAgICBfX3Rvb2xzX2RpcmVjdG9yeSA9IG9zLnBhdGguam9pbihvcy5wYXRoLmRp
cm5hbWUoX19maWxlX18pLCAiLi4vIiwgcGxhdGZvcm0pCisgICAgc3lzLnBhdGguaW5zZXJ0KDAs
IF9fdG9vbHNfZGlyZWN0b3J5KQorCisgICAgamhidWlsZHJjX2dsb2JhbHNbImJ1aWxkX3BvbGlj
eSJdID0gJ3VwZGF0ZWQnCisKKyAgICBfX21vZHVsZXNldF9maWxlX3VyaSA9ICdmaWxlOi8vJyAr
IG9zLnBhdGguam9pbihfX3Rvb2xzX2RpcmVjdG9yeSwgJ2poYnVpbGQubW9kdWxlcycpCisgICAg
X19leHRyYV9tb2R1bGVzZXRzID0gb3MuZW52aXJvbi5nZXQoIldFQktJVF9FWFRSQV9NT0RVTEVT
RVRTIiwgIiIpLnNwbGl0KCIsIikKKyAgICBqaGJ1aWxkcmNfZ2xvYmFsc1sibW9kdWxlc2V0Il0g
PSBbIF9fbW9kdWxlc2V0X2ZpbGVfdXJpLCBdCisgICAgaWYgX19leHRyYV9tb2R1bGVzZXRzICE9
IFsnJ106CisgICAgICAgIGpoYnVpbGRyY19nbG9iYWxzWyJtb2R1bGVzZXQiXS5leHRlbmQoX19l
eHRyYV9tb2R1bGVzZXRzKQorCisgICAgX19leHRyYV9tb2R1bGVzID0gb3MuZW52aXJvbi5nZXQo
IldFQktJVF9FWFRSQV9NT0RVTEVTIiwgIiIpLnNwbGl0KCIsIikKKyAgICBqaGJ1aWxkcmNfZ2xv
YmFsc1sibW9kdWxlcyJdID0gWyAnd2Via2l0JyArIHBsYXRmb3JtICsgJy10ZXN0aW5nLWRlcGVu
ZGVuY2llcycsIF0KKyAgICBpZiBfX2V4dHJhX21vZHVsZXMgIT0gWycnXToKKyAgICAgICAgamhi
dWlsZHJjX2dsb2JhbHNbIm1vZHVsZXMiXS5leHRlbmQoX19leHRyYV9tb2R1bGVzKQorCisgICAg
aWYgb3MuZW52aXJvbi5oYXNfa2V5KCdXRUJLSVRfT1VUUFVURElSJyk6CisgICAgICAgIGpoYnVp
bGRyY19nbG9iYWxzWyJjaGVja291dHJvb3QiXSA9IGNoZWNrb3V0cm9vdCA9IG9zLnBhdGguYWJz
cGF0aChvcy5wYXRoLmpvaW4ob3MuZW52aXJvblsnV0VCS0lUX09VVFBVVERJUiddLCAnRGVwZW5k
ZW5jaWVzJywgJ1NvdXJjZScpKQorICAgICAgICBqaGJ1aWxkcmNfZ2xvYmFsc1sicHJlZml4Il0g
PSBvcy5wYXRoLmFic3BhdGgob3MucGF0aC5qb2luKG9zLmVudmlyb25bJ1dFQktJVF9PVVRQVVRE
SVInXSwgJ0RlcGVuZGVuY2llcycsICdSb290JykpCisgICAgZWxzZToKKyAgICAgICAgamhidWls
ZHJjX2dsb2JhbHNbImNoZWNrb3V0cm9vdCJdID0gY2hlY2tvdXRyb290ID0gb3MucGF0aC5hYnNw
YXRoKHRvcF9sZXZlbF9wYXRoKCdXZWJLaXRCdWlsZCcsJ0RlcGVuZGVuY2llcycsICdTb3VyY2Un
KSkKKyAgICAgICAgamhidWlsZHJjX2dsb2JhbHNbInByZWZpeCJdID0gb3MucGF0aC5hYnNwYXRo
KHRvcF9sZXZlbF9wYXRoKCdXZWJLaXRCdWlsZCcsJ0RlcGVuZGVuY2llcycsICdSb290JykpCisK
KyAgICBqaGJ1aWxkcmNfZ2xvYmFsc1sibm9ub3RpZnkiXSA9IFRydWUKKyAgICBqaGJ1aWxkcmNf
Z2xvYmFsc1sibm90cmF5aWNvbiJdID0gVHJ1ZQorCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VM
b2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNThiMjdmYS4uMjU2NWNkMyAxMDA2NDQKLS0tIGEv
VG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisy
MDEzLTEyLTE5ICBQZXRlciBTemFua2EgIDxoODY4MDY0QHN0dWQudS1zemVnZWQuaHU+CisKKyAg
ICAgICAgRXh0cmFjdCBjb21tb24gcGFydHMgZnJvbSBqaGJ1aWxkcmMgZmlsZXMuCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjU5ODYKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGVmbC9jb21tb24ucHk6
IFJlbW92ZWQuCisgICAgICAgICogZWZsL2poYnVpbGRyYzoKKyAgICAgICAgKiBndGsvY29tbW9u
LnB5OgorICAgICAgICAqIGd0ay9qaGJ1aWxkcmM6CisgICAgICAgICogamhidWlsZC9qaGJ1aWxk
cmNfY29tbW9uLnB5OiBBZGRlZC4KKyAgICAgICAgKHNjcmlwdF9wYXRoKToKKyAgICAgICAgKHRv
cF9sZXZlbF9wYXRoKToKKyAgICAgICAgKGluaXQpOgorICAgICAgICAqIG5peC9jb21tb24ucHk6
IFJlbW92ZWQuCisgICAgICAgICogbml4L2poYnVpbGRyYzoKKworICAgICAgICBBbHNvIG1vdmUg
dGhlIHNjcmlwdF9wYXRoIGFuZCB0b3BfbGV2ZWxfcGF0aCBtZXRob2RzIHRvIHRoZSBuZXcgZmls
ZSBmcm9tIHRoZSBjb21tb24ucHlzLgorCiAyMDEzLTEyLTE1ICBUYW1hcyBHZXJnZWx5ICA8dGdl
cmdlbHkudS1zemVnZWRAcGFydG5lci5zYW1zdW5nLmNvbT4KIAogICAgICAgICBSZWZhY3RvciBv
cHRpb24gaGFuZGxpbmcgaW4gV2ViS2l0VGVzdFJ1bm5lci4KZGlmZiAtLWdpdCBhL1Rvb2xzL2Vm
bC9jb21tb24ucHkgYi9Ub29scy9lZmwvY29tbW9uLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCA3NzY1N2IzLi4wMDAwMDAwCi0tLSBhL1Rvb2xzL2VmbC9jb21tb24ucHkKKysrIC9k
ZXYvbnVsbApAQCAtMSwzMSArMCwwIEBACi0jIS91c3IvYmluL2VudiBweXRob24KLSMgQ29weXJp
Z2h0IChDKSAyMDExIElnYWxpYSBTLkwuCi0jCi0jIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3
YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSMgbW9kaWZ5IGl0IHVuZGVyIHRo
ZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotIyBMaWNlbnNlIGFzIHB1
Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSMgdmVyc2lv
biAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9u
LgotIwotIyBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3
aWxsIGJlIHVzZWZ1bCwKLSMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g
dGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSMgTGVzc2VyIEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSMKLSMgWW91IHNob3VsZCBoYXZlIHJlY2Vp
dmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotIyBMaWNlbnNlIGFs
b25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJl
Ci0jIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJv
c3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQotCi1pbXBvcnQgb3MKLQotc2NyaXB0X2RpciA9IE5v
bmUKLQotCi1kZWYgc2NyaXB0X3BhdGgoKmFyZ3MpOgotICAgIGdsb2JhbCBzY3JpcHRfZGlyCi0g
ICAgaWYgbm90IHNjcmlwdF9kaXI6Ci0gICAgICAgIHNjcmlwdF9kaXIgPSBvcy5wYXRoLmpvaW4o
b3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSwgJy4uJywgJ1NjcmlwdHMnKQotICAgIHJldHVybiBv
cy5wYXRoLmpvaW4oKihzY3JpcHRfZGlyLCkgKyBhcmdzKQotCi0KLWRlZiB0b3BfbGV2ZWxfcGF0
aCgqYXJncyk6Ci0gICAgcmV0dXJuIG9zLnBhdGguam9pbigqKChzY3JpcHRfcGF0aCgnLi4nLCAn
Li4nKSwpICsgYXJncykpCmRpZmYgLS1naXQgYS9Ub29scy9lZmwvamhidWlsZHJjIGIvVG9vbHMv
ZWZsL2poYnVpbGRyYwppbmRleCA3N2RhYWU5Li43NDhjOTE1IDEwMDY0NAotLS0gYS9Ub29scy9l
ZmwvamhidWlsZHJjCisrKyBiL1Rvb2xzL2VmbC9qaGJ1aWxkcmMKQEAgLTE2LDM3ICsxNiw5IEBA
CiAjIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhl
IEZyZWUgU29mdHdhcmUKICMgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBG
aWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCiAKLWltcG9ydCBtdWx0aXBy
b2Nlc3NpbmcKLWltcG9ydCBzeXMKLQotX19lZmxfdG9vbHNfZGlyZWN0b3J5ID0gb3MucGF0aC5h
YnNwYXRoKG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXykpCi1zeXMucGF0aCA9IFtfX2VmbF90b29s
c19kaXJlY3RvcnldICsgc3lzLnBhdGgKLWltcG9ydCBjb21tb24KLQotYnVpbGRfcG9saWN5ID0g
J3VwZGF0ZWQnCi0KLSMgRklYTUU6IG1vdmUgc2hhcmVkIHBhcnRzIGludG8gLi4vamhidWlsZCBm
b2xkZXIuCi0KLV9fbW9kdWxlc2V0X2ZpbGVfdXJpID0gJ2ZpbGU6Ly8nICsgb3MucGF0aC5qb2lu
KF9fZWZsX3Rvb2xzX2RpcmVjdG9yeSwgJ2poYnVpbGQubW9kdWxlcycpCi1fX2V4dHJhX21vZHVs
ZXNldHMgPSBvcy5lbnZpcm9uLmdldCgiV0VCS0lUX0VYVFJBX01PRFVMRVNFVFMiLCAiIikuc3Bs
aXQoIiwiKQotbW9kdWxlc2V0ID0gWyBfX21vZHVsZXNldF9maWxlX3VyaSwgXQotaWYgX19leHRy
YV9tb2R1bGVzZXRzICE9IFsnJ106Ci0gICAgbW9kdWxlc2V0LmV4dGVuZChfX2V4dHJhX21vZHVs
ZXNldHMpCi0KLV9fZXh0cmFfbW9kdWxlcyA9IG9zLmVudmlyb24uZ2V0KCJXRUJLSVRfRVhUUkFf
TU9EVUxFUyIsICIiKS5zcGxpdCgiLCIpCi1tb2R1bGVzID0gWyAnd2Via2l0ZWZsLXRlc3Rpbmct
ZGVwZW5kZW5jaWVzJywgXQotaWYgX19leHRyYV9tb2R1bGVzICE9IFsnJ106Ci0gICAgbW9kdWxl
cy5leHRlbmQoX19leHRyYV9tb2R1bGVzKQotCi1pZiBvcy5lbnZpcm9uLmhhc19rZXkoJ1dFQktJ
VF9PVVRQVVRESVInKToKLSAgICBjaGVja291dHJvb3QgPSBvcy5wYXRoLmFic3BhdGgob3MucGF0
aC5qb2luKG9zLmVudmlyb25bJ1dFQktJVF9PVVRQVVRESVInXSwgJ0RlcGVuZGVuY2llcycsICdT
b3VyY2UnKSkKLSAgICBwcmVmaXggPSBvcy5wYXRoLmFic3BhdGgob3MucGF0aC5qb2luKG9zLmVu
dmlyb25bJ1dFQktJVF9PVVRQVVRESVInXSwgJ0RlcGVuZGVuY2llcycsICdSb290JykpCi1lbHNl
OgotICAgIGNoZWNrb3V0cm9vdCA9IG9zLnBhdGguYWJzcGF0aChjb21tb24udG9wX2xldmVsX3Bh
dGgoJ1dlYktpdEJ1aWxkJywnRGVwZW5kZW5jaWVzJywgJ1NvdXJjZScpKQotICAgIHByZWZpeCA9
IG9zLnBhdGguYWJzcGF0aChjb21tb24udG9wX2xldmVsX3BhdGgoJ1dlYktpdEJ1aWxkJywnRGVw
ZW5kZW5jaWVzJywgJ1Jvb3QnKSkKLQotbm9ub3RpZnkgPSBUcnVlCi1ub3RyYXlpY29uID0gVHJ1
ZQorc3lzLnBhdGguaW5zZXJ0KDAsIG9zLnBhdGguam9pbihvcy5wYXRoLmRpcm5hbWUoX19maWxl
X18pLCAiLi4vamhidWlsZCIpICkKK2ltcG9ydCBqaGJ1aWxkcmNfY29tbW9uCitqaGJ1aWxkcmNf
Y29tbW9uLmluaXQoZ2xvYmFscygpLCAiZWZsIikKIAogaWYgJ05VTUJFUl9PRl9QUk9DRVNTT1JT
JyBpbiBvcy5lbnZpcm9uOgogICAgIGpvYnMgPSBvcy5lbnZpcm9uWydOVU1CRVJfT0ZfUFJPQ0VT
U09SUyddCmRpZmYgLS1naXQgYS9Ub29scy9ndGsvY29tbW9uLnB5IGIvVG9vbHMvZ3RrL2NvbW1v
bi5weQppbmRleCA0MjU1YzliLi40MzM1OGM1IDEwMDY0NAotLS0gYS9Ub29scy9ndGsvY29tbW9u
LnB5CisrKyBiL1Rvb2xzL2d0ay9jb21tb24ucHkKQEAgLTIxLDIxICsyMSw4IEBAIGltcG9ydCBz
ZWxlY3QKIGltcG9ydCBzdWJwcm9jZXNzCiBpbXBvcnQgc3lzCiAKLXNjcmlwdF9kaXIgPSBOb25l
CiBidWlsZF9kaXIgPSBOb25lCiAKLQotZGVmIHNjcmlwdF9wYXRoKCphcmdzKToKLSAgICBnbG9i
YWwgc2NyaXB0X2RpcgotICAgIGlmIG5vdCBzY3JpcHRfZGlyOgotICAgICAgICBzY3JpcHRfZGly
ID0gb3MucGF0aC5qb2luKG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXyksICcuLicsICdTY3JpcHRz
JykKLSAgICByZXR1cm4gb3MucGF0aC5qb2luKCooc2NyaXB0X2RpciwpICsgYXJncykKLQotCi1k
ZWYgdG9wX2xldmVsX3BhdGgoKmFyZ3MpOgotICAgIHJldHVybiBvcy5wYXRoLmpvaW4oKigob3Mu
cGF0aC5qb2luKG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXyksICcuLicsICcuLicpLCkgKyBhcmdz
KSkKLQotCiBkZWYgZ2V0X2J1aWxkX3BhdGgoYnVpbGRfdHlwZXM9KCdSZWxlYXNlJywgJ0RlYnVn
JyksIGZhdGFsPVRydWUpOgogICAgIGdsb2JhbCBidWlsZF9kaXIKICAgICBpZiBidWlsZF9kaXI6
CmRpZmYgLS1naXQgYS9Ub29scy9ndGsvamhidWlsZHJjIGIvVG9vbHMvZ3RrL2poYnVpbGRyYwpp
bmRleCA2OWY5NDU3Li4wNDE4NjVhIDEwMDY0NAotLS0gYS9Ub29scy9ndGsvamhidWlsZHJjCisr
KyBiL1Rvb2xzL2d0ay9qaGJ1aWxkcmMKQEAgLTE1LDM2ICsxNSwxNCBAQAogIyBMaWNlbnNlIGFs
b25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJl
CiAjIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJv
c3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQogCi1pbXBvcnQgbXVsdGlwcm9jZXNzaW5nCi1pbXBv
cnQgc3lzCitzeXMucGF0aC5pbnNlcnQoMCwgb3MucGF0aC5qb2luKG9zLnBhdGguZGlybmFtZShf
X2ZpbGVfXyksICIuLi9qaGJ1aWxkIikgKQoraW1wb3J0IGpoYnVpbGRyY19jb21tb24KK2poYnVp
bGRyY19jb21tb24uaW5pdChnbG9iYWxzKCksICJndGsiKQogCiBfX2d0a190b29sc19kaXJlY3Rv
cnkgPSBvcy5wYXRoLmFic3BhdGgob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSkKIHN5cy5wYXRo
ID0gW19fZ3RrX3Rvb2xzX2RpcmVjdG9yeV0gKyBzeXMucGF0aAogaW1wb3J0IGNvbW1vbgogCi1i
dWlsZF9wb2xpY3kgPSAndXBkYXRlZCcKLQotX19tb2R1bGVzZXRfZmlsZV91cmkgPSAnZmlsZTov
LycgKyBvcy5wYXRoLmpvaW4oX19ndGtfdG9vbHNfZGlyZWN0b3J5LCAnamhidWlsZC5tb2R1bGVz
JykKLV9fZXh0cmFfbW9kdWxlc2V0cyA9IG9zLmVudmlyb24uZ2V0KCJXRUJLSVRfRVhUUkFfTU9E
VUxFU0VUUyIsICIiKS5zcGxpdCgiLCIpCi1tb2R1bGVzZXQgPSBbIF9fbW9kdWxlc2V0X2ZpbGVf
dXJpLCBdCi1pZiBfX2V4dHJhX21vZHVsZXNldHMgIT0gWycnXToKLSAgICBtb2R1bGVzZXQuZXh0
ZW5kKF9fZXh0cmFfbW9kdWxlc2V0cykKLQotX19leHRyYV9tb2R1bGVzID0gb3MuZW52aXJvbi5n
ZXQoIldFQktJVF9FWFRSQV9NT0RVTEVTIiwgIiIpLnNwbGl0KCIsIikKLW1vZHVsZXMgPSBbICd3
ZWJraXRndGstdGVzdGluZy1kZXBlbmRlbmNpZXMnLCBdCi1pZiBfX2V4dHJhX21vZHVsZXMgIT0g
WycnXToKLSAgICBtb2R1bGVzLmV4dGVuZChfX2V4dHJhX21vZHVsZXMpCi0KLWlmIG9zLmVudmly
b24uaGFzX2tleSgnV0VCS0lUX09VVFBVVERJUicpOgotICAgIGNoZWNrb3V0cm9vdCA9IG9zLnBh
dGguYWJzcGF0aChvcy5wYXRoLmpvaW4ob3MuZW52aXJvblsnV0VCS0lUX09VVFBVVERJUiddLCAn
RGVwZW5kZW5jaWVzJywgJ1NvdXJjZScpKQotICAgIHByZWZpeCA9IG9zLnBhdGguYWJzcGF0aChv
cy5wYXRoLmpvaW4ob3MuZW52aXJvblsnV0VCS0lUX09VVFBVVERJUiddLCAnRGVwZW5kZW5jaWVz
JywgJ1Jvb3QnKSkKLWVsc2U6Ci0gICAgY2hlY2tvdXRyb290ID0gb3MucGF0aC5hYnNwYXRoKGNv
bW1vbi50b3BfbGV2ZWxfcGF0aCgnV2ViS2l0QnVpbGQnLCdEZXBlbmRlbmNpZXMnLCAnU291cmNl
JykpCi0gICAgcHJlZml4ID0gb3MucGF0aC5hYnNwYXRoKGNvbW1vbi50b3BfbGV2ZWxfcGF0aCgn
V2ViS2l0QnVpbGQnLCdEZXBlbmRlbmNpZXMnLCAnUm9vdCcpKQotCi1ub25vdGlmeSA9IFRydWUK
LW5vdHJheWljb24gPSBUcnVlCi0KIGlmICdOVU1CRVJfT0ZfUFJPQ0VTU09SUycgaW4gb3MuZW52
aXJvbjoKICAgICBqb2JzID0gb3MuZW52aXJvblsnTlVNQkVSX09GX1BST0NFU1NPUlMnXQogCmRp
ZmYgLS1naXQgYS9Ub29scy9uaXgvY29tbW9uLnB5IGIvVG9vbHMvbml4L2NvbW1vbi5weQpkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGI4YjY2Mi4uMDAwMDAwMAotLS0gYS9Ub29scy9u
aXgvY29tbW9uLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMzIgKzAsMCBAQAotIyEvdXNyL2Jpbi9l
bnYgcHl0aG9uCi0jIENvcHlyaWdodCAoQykgMjAxMSBJZ2FsaWEgUy5MLgotIyBDb3B5cmlnaHQg
KEMpIDIwMTIsIDIwMTMgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1p
ZXMpLgotIwotIyBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry
aWJ1dGUgaXQgYW5kL29yCi0jIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBM
ZXNzZXIgR2VuZXJhbCBQdWJsaWMKLSMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0jIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwg
b3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSMKLSMgVGhpcyBsaWJyYXJ5
IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0jIGJ1
dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5
IG9mCi0jIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RS4gIFNlZSB0aGUgR05VCi0jIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl
IGRldGFpbHMuCi0jCi0jIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdO
VSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKLSMgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFy
eTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotIyBGb3VuZGF0aW9uLCBJbmMu
LCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAx
ICBVU0EKLQotaW1wb3J0IG9zCi0KLXNjcmlwdF9kaXIgPSBOb25lCi0KLQotZGVmIHNjcmlwdF9w
YXRoKCphcmdzKToKLSAgICBnbG9iYWwgc2NyaXB0X2RpcgotICAgIGlmIG5vdCBzY3JpcHRfZGly
OgotICAgICAgICBzY3JpcHRfZGlyID0gb3MucGF0aC5qb2luKG9zLnBhdGguZGlybmFtZShfX2Zp
bGVfXyksICcuLicsICdTY3JpcHRzJykKLSAgICByZXR1cm4gb3MucGF0aC5qb2luKCooc2NyaXB0
X2RpciwpICsgYXJncykKLQotCi1kZWYgdG9wX2xldmVsX3BhdGgoKmFyZ3MpOgotICAgIHJldHVy
biBvcy5wYXRoLmpvaW4oKigoc2NyaXB0X3BhdGgoJy4uJywgJy4uJyksKSArIGFyZ3MpKQpkaWZm
IC0tZ2l0IGEvVG9vbHMvbml4L2poYnVpbGRyYyBiL1Rvb2xzL25peC9qaGJ1aWxkcmMKaW5kZXgg
MzU1NTJjYS4uYjc1NzgzZiAxMDA2NDQKLS0tIGEvVG9vbHMvbml4L2poYnVpbGRyYworKysgYi9U
b29scy9uaXgvamhidWlsZHJjCkBAIC0xNywzOCArMTcsMTAgQEAKICMgTGljZW5zZSBhbG9uZyB3
aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQogIyBG
b3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24s
IE1BICAwMjExMC0xMzAxICBVU0EKIAotaW1wb3J0IG11bHRpcHJvY2Vzc2luZwotaW1wb3J0IHN5
cwotaW1wb3J0IG9zCitzeXMucGF0aC5pbnNlcnQoMCwgb3MucGF0aC5qb2luKG9zLnBhdGguZGly
bmFtZShfX2ZpbGVfXyksICIuLi9qaGJ1aWxkIikgKQoraW1wb3J0IGpoYnVpbGRyY19jb21tb24K
K2poYnVpbGRyY19jb21tb24uaW5pdChnbG9iYWxzKCksICJuaXgiKQogCi1fX25peF90b29sc19k
aXJlY3RvcnkgPSBvcy5wYXRoLmFic3BhdGgob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSkKLXN5
cy5wYXRoID0gW19fbml4X3Rvb2xzX2RpcmVjdG9yeV0gKyBzeXMucGF0aAotaW1wb3J0IGNvbW1v
bgotCi1idWlsZF9wb2xpY3kgPSAndXBkYXRlZCcKLQotIyBGSVhNRTogbW92ZSBzaGFyZWQgcGFy
dHMgaW50byAuLi9qaGJ1aWxkIGZvbGRlci4KLQotX19tb2R1bGVzZXRfZmlsZV91cmkgPSAnZmls
ZTovLycgKyBvcy5wYXRoLmpvaW4oX19uaXhfdG9vbHNfZGlyZWN0b3J5LCAnamhidWlsZC5tb2R1
bGVzJykKLV9fZXh0cmFfbW9kdWxlc2V0cyA9IG9zLmVudmlyb24uZ2V0KCJXRUJLSVRfRVhUUkFf
TU9EVUxFU0VUUyIsICIiKS5zcGxpdCgiLCIpCi1tb2R1bGVzZXQgPSBbIF9fbW9kdWxlc2V0X2Zp
bGVfdXJpLCBdCi1pZiBfX2V4dHJhX21vZHVsZXNldHMgIT0gWycnXToKLSAgICBtb2R1bGVzZXQu
ZXh0ZW5kKF9fZXh0cmFfbW9kdWxlc2V0cykKLQotX19leHRyYV9tb2R1bGVzID0gb3MuZW52aXJv
bi5nZXQoIldFQktJVF9FWFRSQV9NT0RVTEVTIiwgIiIpLnNwbGl0KCIsIikKLW1vZHVsZXMgPSBb
ICd3ZWJraXRuaXgtdGVzdGluZy1kZXBlbmRlbmNpZXMnLCBdCi1pZiBfX2V4dHJhX21vZHVsZXMg
IT0gWycnXToKLSAgICBtb2R1bGVzLmV4dGVuZChfX2V4dHJhX21vZHVsZXMpCi0KLWlmIG9zLmVu
dmlyb24uaGFzX2tleSgnV0VCS0lUX09VVFBVVERJUicpOgotICAgIGNoZWNrb3V0cm9vdCA9IG9z
LnBhdGguYWJzcGF0aChvcy5wYXRoLmpvaW4ob3MuZW52aXJvblsnV0VCS0lUX09VVFBVVERJUidd
LCAnRGVwZW5kZW5jaWVzJywgJ1NvdXJjZScpKQotICAgIHByZWZpeCA9IG9zLnBhdGguYWJzcGF0
aChvcy5wYXRoLmpvaW4ob3MuZW52aXJvblsnV0VCS0lUX09VVFBVVERJUiddLCAnRGVwZW5kZW5j
aWVzJywgJ1Jvb3QnKSkKLWVsc2U6Ci0gICAgY2hlY2tvdXRyb290ID0gb3MucGF0aC5hYnNwYXRo
KGNvbW1vbi50b3BfbGV2ZWxfcGF0aCgnV2ViS2l0QnVpbGQnLCdEZXBlbmRlbmNpZXMnLCAnU291
cmNlJykpCi0gICAgcHJlZml4ID0gb3MucGF0aC5hYnNwYXRoKGNvbW1vbi50b3BfbGV2ZWxfcGF0
aCgnV2ViS2l0QnVpbGQnLCdEZXBlbmRlbmNpZXMnLCAnUm9vdCcpKQotCi1ub25vdGlmeSA9IFRy
dWUKLW5vdHJheWljb24gPSBUcnVlCiBpZiAnTUFLRUZMQUdTJyBub3QgaW4gb3MuZW52aXJvbjoK
ICAgICBvcy5lbnZpcm9uWydNQUtFRkxBR1MnXSA9ICctaiVkJyAlIG11bHRpcHJvY2Vzc2luZy5j
cHVfY291bnQoKQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>219650</attachid>
            <date>2013-12-19 06:44:57 -0800</date>
            <delta_ts>2014-01-14 01:12:12 -0800</delta_ts>
            <desc>patch</desc>
            <filename>diff</filename>
            <type>text/plain</type>
            <size>12443</size>
            <attacher name="ezisfake">Szanka.Peter</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1Rvb2xzL2poYnVpbGQvamhidWlsZHJjX2NvbW1vbi5weSBiL1Rvb2xzL2po
YnVpbGQvamhidWlsZHJjX2NvbW1vbi5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi45YWZjNDA2Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvamhidWlsZC9qaGJ1aWxkcmNf
Y29tbW9uLnB5CkBAIC0wLDAgKzEsNjQgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbgorIyBDb3B5
cmlnaHQgKEMpIDIwMTEgSWdhbGlhIFMuTC4KKyMgQ29weXJpZ2h0IChDKSAyMDEyIEludGVsIENv
cnBvcmF0aW9uCisjIENvcHlyaWdodCAoQykgMjAxMiwgMjAxMyBOb2tpYSBDb3Jwb3JhdGlvbiBh
bmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykuCisjCisjIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNv
ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyMgbW9kaWZ5IGl0IHVuZGVy
IHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworIyBMaWNlbnNlIGFz
IHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyMgdmVy
c2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJz
aW9uLgorIworIyBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp
dCB3aWxsIGJlIHVzZWZ1bCwKKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2
ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyMgTGVzc2VyIEdlbmVyYWwg
UHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyMKKyMgWW91IHNob3VsZCBoYXZlIHJl
Y2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworIyBMaWNlbnNl
IGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3
YXJlCisjIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3Is
IEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQorCitpbXBvcnQgbXVsdGlwcm9jZXNzaW5nCitp
bXBvcnQgc3lzCitpbXBvcnQgb3MKKworc2NyaXB0X2RpciA9IE5vbmUKKworCitkZWYgc2NyaXB0
X3BhdGgoKmFyZ3MpOgorICAgIGdsb2JhbCBzY3JpcHRfZGlyCisgICAgaWYgbm90IHNjcmlwdF9k
aXI6CisgICAgICAgIHNjcmlwdF9kaXIgPSBvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1lKF9f
ZmlsZV9fKSwgJy4uJywgJ1NjcmlwdHMnKQorICAgIHJldHVybiBvcy5wYXRoLmpvaW4oKihzY3Jp
cHRfZGlyLCkgKyBhcmdzKQorCisKK2RlZiB0b3BfbGV2ZWxfcGF0aCgqYXJncyk6CisgICAgcmV0
dXJuIG9zLnBhdGguam9pbigqKChvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9f
KSwgJy4uJywgJy4uJyksKSArIGFyZ3MpKQorCisKK2RlZiBpbml0KGpoYnVpbGRyY19nbG9iYWxz
LCBwbGF0Zm9ybSk6CisKKyAgICBfX3Rvb2xzX2RpcmVjdG9yeSA9IG9zLnBhdGguam9pbihvcy5w
YXRoLmRpcm5hbWUoX19maWxlX18pLCAiLi4vIiwgcGxhdGZvcm0pCisgICAgc3lzLnBhdGguaW5z
ZXJ0KDAsIF9fdG9vbHNfZGlyZWN0b3J5KQorCisgICAgamhidWlsZHJjX2dsb2JhbHNbImJ1aWxk
X3BvbGljeSJdID0gJ3VwZGF0ZWQnCisKKyAgICBfX21vZHVsZXNldF9maWxlX3VyaSA9ICdmaWxl
Oi8vJyArIG9zLnBhdGguam9pbihfX3Rvb2xzX2RpcmVjdG9yeSwgJ2poYnVpbGQubW9kdWxlcycp
CisgICAgX19leHRyYV9tb2R1bGVzZXRzID0gb3MuZW52aXJvbi5nZXQoIldFQktJVF9FWFRSQV9N
T0RVTEVTRVRTIiwgIiIpLnNwbGl0KCIsIikKKyAgICBqaGJ1aWxkcmNfZ2xvYmFsc1sibW9kdWxl
c2V0Il0gPSBbX19tb2R1bGVzZXRfZmlsZV91cmksIF0KKyAgICBpZiBfX2V4dHJhX21vZHVsZXNl
dHMgIT0gWycnXToKKyAgICAgICAgamhidWlsZHJjX2dsb2JhbHNbIm1vZHVsZXNldCJdLmV4dGVu
ZChfX2V4dHJhX21vZHVsZXNldHMpCisKKyAgICBfX2V4dHJhX21vZHVsZXMgPSBvcy5lbnZpcm9u
LmdldCgiV0VCS0lUX0VYVFJBX01PRFVMRVMiLCAiIikuc3BsaXQoIiwiKQorICAgIGpoYnVpbGRy
Y19nbG9iYWxzWyJtb2R1bGVzIl0gPSBbJ3dlYmtpdCcgKyBwbGF0Zm9ybSArICctdGVzdGluZy1k
ZXBlbmRlbmNpZXMnLCBdCisgICAgaWYgX19leHRyYV9tb2R1bGVzICE9IFsnJ106CisgICAgICAg
IGpoYnVpbGRyY19nbG9iYWxzWyJtb2R1bGVzIl0uZXh0ZW5kKF9fZXh0cmFfbW9kdWxlcykKKwor
ICAgIGlmIG9zLmVudmlyb24uaGFzX2tleSgnV0VCS0lUX09VVFBVVERJUicpOgorICAgICAgICBq
aGJ1aWxkcmNfZ2xvYmFsc1siY2hlY2tvdXRyb290Il0gPSBjaGVja291dHJvb3QgPSBvcy5wYXRo
LmFic3BhdGgob3MucGF0aC5qb2luKG9zLmVudmlyb25bJ1dFQktJVF9PVVRQVVRESVInXSwgJ0Rl
cGVuZGVuY2llcycsICdTb3VyY2UnKSkKKyAgICAgICAgamhidWlsZHJjX2dsb2JhbHNbInByZWZp
eCJdID0gb3MucGF0aC5hYnNwYXRoKG9zLnBhdGguam9pbihvcy5lbnZpcm9uWydXRUJLSVRfT1VU
UFVURElSJ10sICdEZXBlbmRlbmNpZXMnLCAnUm9vdCcpKQorICAgIGVsc2U6CisgICAgICAgIGpo
YnVpbGRyY19nbG9iYWxzWyJjaGVja291dHJvb3QiXSA9IGNoZWNrb3V0cm9vdCA9IG9zLnBhdGgu
YWJzcGF0aCh0b3BfbGV2ZWxfcGF0aCgnV2ViS2l0QnVpbGQnLCAnRGVwZW5kZW5jaWVzJywgJ1Nv
dXJjZScpKQorICAgICAgICBqaGJ1aWxkcmNfZ2xvYmFsc1sicHJlZml4Il0gPSBvcy5wYXRoLmFi
c3BhdGgodG9wX2xldmVsX3BhdGgoJ1dlYktpdEJ1aWxkJywgJ0RlcGVuZGVuY2llcycsICdSb290
JykpCisKKyAgICBqaGJ1aWxkcmNfZ2xvYmFsc1sibm9ub3RpZnkiXSA9IFRydWUKKyAgICBqaGJ1
aWxkcmNfZ2xvYmFsc1sibm90cmF5aWNvbiJdID0gVHJ1ZQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hh
bmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDU4YjI3ZmEuLjI1NjVjZDMgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMyBA
QAorMjAxMy0xMi0xOSAgUGV0ZXIgU3phbmthICA8aDg2ODA2NEBzdHVkLnUtc3plZ2VkLmh1Pgor
CisgICAgICAgIEV4dHJhY3QgY29tbW9uIHBhcnRzIGZyb20gamhidWlsZHJjIGZpbGVzLgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI1OTg2CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBlZmwvY29tbW9u
LnB5OiBSZW1vdmVkLgorICAgICAgICAqIGVmbC9qaGJ1aWxkcmM6CisgICAgICAgICogZ3RrL2Nv
bW1vbi5weToKKyAgICAgICAgKiBndGsvamhidWlsZHJjOgorICAgICAgICAqIGpoYnVpbGQvamhi
dWlsZHJjX2NvbW1vbi5weTogQWRkZWQuCisgICAgICAgIChzY3JpcHRfcGF0aCk6CisgICAgICAg
ICh0b3BfbGV2ZWxfcGF0aCk6CisgICAgICAgIChpbml0KToKKyAgICAgICAgKiBuaXgvY29tbW9u
LnB5OiBSZW1vdmVkLgorICAgICAgICAqIG5peC9qaGJ1aWxkcmM6CisKKyAgICAgICAgQWxzbyBt
b3ZlIHRoZSBzY3JpcHRfcGF0aCBhbmQgdG9wX2xldmVsX3BhdGggbWV0aG9kcyB0byB0aGUgbmV3
IGZpbGUgZnJvbSB0aGUgY29tbW9uLnB5cy4KKwogMjAxMy0xMi0xNSAgVGFtYXMgR2VyZ2VseSAg
PHRnZXJnZWx5LnUtc3plZ2VkQHBhcnRuZXIuc2Ftc3VuZy5jb20+CiAKICAgICAgICAgUmVmYWN0
b3Igb3B0aW9uIGhhbmRsaW5nIGluIFdlYktpdFRlc3RSdW5uZXIuCmRpZmYgLS1naXQgYS9Ub29s
cy9lZmwvY29tbW9uLnB5IGIvVG9vbHMvZWZsL2NvbW1vbi5weQpkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggNzc2NTdiMy4uMDAwMDAwMAotLS0gYS9Ub29scy9lZmwvY29tbW9uLnB5Cisr
KyAvZGV2L251bGwKQEAgLTEsMzEgKzAsMCBAQAotIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCi0jIENv
cHlyaWdodCAoQykgMjAxMSBJZ2FsaWEgUy5MLgotIwotIyBUaGlzIGxpYnJhcnkgaXMgZnJlZSBz
b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0jIG1vZGlmeSBpdCB1bmRl
ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKLSMgTGljZW5zZSBh
cyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0jIHZl
cnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy
c2lvbi4KLSMKLSMgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQg
aXQgd2lsbCBiZSB1c2VmdWwsCi0jIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl
dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0jIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0jIExlc3NlciBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0jCi0jIFlvdSBzaG91bGQgaGF2ZSBy
ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKLSMgTGljZW5z
ZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0
d2FyZQotIyBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29y
LCBCb3N0b24sIE1BICAwMjExMC0xMzAxICBVU0EKLQotaW1wb3J0IG9zCi0KLXNjcmlwdF9kaXIg
PSBOb25lCi0KLQotZGVmIHNjcmlwdF9wYXRoKCphcmdzKToKLSAgICBnbG9iYWwgc2NyaXB0X2Rp
cgotICAgIGlmIG5vdCBzY3JpcHRfZGlyOgotICAgICAgICBzY3JpcHRfZGlyID0gb3MucGF0aC5q
b2luKG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXyksICcuLicsICdTY3JpcHRzJykKLSAgICByZXR1
cm4gb3MucGF0aC5qb2luKCooc2NyaXB0X2RpciwpICsgYXJncykKLQotCi1kZWYgdG9wX2xldmVs
X3BhdGgoKmFyZ3MpOgotICAgIHJldHVybiBvcy5wYXRoLmpvaW4oKigoc2NyaXB0X3BhdGgoJy4u
JywgJy4uJyksKSArIGFyZ3MpKQpkaWZmIC0tZ2l0IGEvVG9vbHMvZWZsL2poYnVpbGRyYyBiL1Rv
b2xzL2VmbC9qaGJ1aWxkcmMKaW5kZXggNzdkYWFlOS4uNzQ4YzkxNSAxMDA2NDQKLS0tIGEvVG9v
bHMvZWZsL2poYnVpbGRyYworKysgYi9Ub29scy9lZmwvamhidWlsZHJjCkBAIC0xNiwzNyArMTYs
OSBAQAogIyBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRv
IHRoZSBGcmVlIFNvZnR3YXJlCiAjIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVl
dCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQogCi1pbXBvcnQgbXVs
dGlwcm9jZXNzaW5nCi1pbXBvcnQgc3lzCi0KLV9fZWZsX3Rvb2xzX2RpcmVjdG9yeSA9IG9zLnBh
dGguYWJzcGF0aChvcy5wYXRoLmRpcm5hbWUoX19maWxlX18pKQotc3lzLnBhdGggPSBbX19lZmxf
dG9vbHNfZGlyZWN0b3J5XSArIHN5cy5wYXRoCi1pbXBvcnQgY29tbW9uCi0KLWJ1aWxkX3BvbGlj
eSA9ICd1cGRhdGVkJwotCi0jIEZJWE1FOiBtb3ZlIHNoYXJlZCBwYXJ0cyBpbnRvIC4uL2poYnVp
bGQgZm9sZGVyLgotCi1fX21vZHVsZXNldF9maWxlX3VyaSA9ICdmaWxlOi8vJyArIG9zLnBhdGgu
am9pbihfX2VmbF90b29sc19kaXJlY3RvcnksICdqaGJ1aWxkLm1vZHVsZXMnKQotX19leHRyYV9t
b2R1bGVzZXRzID0gb3MuZW52aXJvbi5nZXQoIldFQktJVF9FWFRSQV9NT0RVTEVTRVRTIiwgIiIp
LnNwbGl0KCIsIikKLW1vZHVsZXNldCA9IFsgX19tb2R1bGVzZXRfZmlsZV91cmksIF0KLWlmIF9f
ZXh0cmFfbW9kdWxlc2V0cyAhPSBbJyddOgotICAgIG1vZHVsZXNldC5leHRlbmQoX19leHRyYV9t
b2R1bGVzZXRzKQotCi1fX2V4dHJhX21vZHVsZXMgPSBvcy5lbnZpcm9uLmdldCgiV0VCS0lUX0VY
VFJBX01PRFVMRVMiLCAiIikuc3BsaXQoIiwiKQotbW9kdWxlcyA9IFsgJ3dlYmtpdGVmbC10ZXN0
aW5nLWRlcGVuZGVuY2llcycsIF0KLWlmIF9fZXh0cmFfbW9kdWxlcyAhPSBbJyddOgotICAgIG1v
ZHVsZXMuZXh0ZW5kKF9fZXh0cmFfbW9kdWxlcykKLQotaWYgb3MuZW52aXJvbi5oYXNfa2V5KCdX
RUJLSVRfT1VUUFVURElSJyk6Ci0gICAgY2hlY2tvdXRyb290ID0gb3MucGF0aC5hYnNwYXRoKG9z
LnBhdGguam9pbihvcy5lbnZpcm9uWydXRUJLSVRfT1VUUFVURElSJ10sICdEZXBlbmRlbmNpZXMn
LCAnU291cmNlJykpCi0gICAgcHJlZml4ID0gb3MucGF0aC5hYnNwYXRoKG9zLnBhdGguam9pbihv
cy5lbnZpcm9uWydXRUJLSVRfT1VUUFVURElSJ10sICdEZXBlbmRlbmNpZXMnLCAnUm9vdCcpKQot
ZWxzZToKLSAgICBjaGVja291dHJvb3QgPSBvcy5wYXRoLmFic3BhdGgoY29tbW9uLnRvcF9sZXZl
bF9wYXRoKCdXZWJLaXRCdWlsZCcsJ0RlcGVuZGVuY2llcycsICdTb3VyY2UnKSkKLSAgICBwcmVm
aXggPSBvcy5wYXRoLmFic3BhdGgoY29tbW9uLnRvcF9sZXZlbF9wYXRoKCdXZWJLaXRCdWlsZCcs
J0RlcGVuZGVuY2llcycsICdSb290JykpCi0KLW5vbm90aWZ5ID0gVHJ1ZQotbm90cmF5aWNvbiA9
IFRydWUKK3N5cy5wYXRoLmluc2VydCgwLCBvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1lKF9f
ZmlsZV9fKSwgIi4uL2poYnVpbGQiKSApCitpbXBvcnQgamhidWlsZHJjX2NvbW1vbgoramhidWls
ZHJjX2NvbW1vbi5pbml0KGdsb2JhbHMoKSwgImVmbCIpCiAKIGlmICdOVU1CRVJfT0ZfUFJPQ0VT
U09SUycgaW4gb3MuZW52aXJvbjoKICAgICBqb2JzID0gb3MuZW52aXJvblsnTlVNQkVSX09GX1BS
T0NFU1NPUlMnXQpkaWZmIC0tZ2l0IGEvVG9vbHMvZ3RrL2NvbW1vbi5weSBiL1Rvb2xzL2d0ay9j
b21tb24ucHkKaW5kZXggNDI1NWM5Yi4uNDMzNThjNSAxMDA2NDQKLS0tIGEvVG9vbHMvZ3RrL2Nv
bW1vbi5weQorKysgYi9Ub29scy9ndGsvY29tbW9uLnB5CkBAIC0yMSwyMSArMjEsOCBAQCBpbXBv
cnQgc2VsZWN0CiBpbXBvcnQgc3VicHJvY2VzcwogaW1wb3J0IHN5cwogCi1zY3JpcHRfZGlyID0g
Tm9uZQogYnVpbGRfZGlyID0gTm9uZQogCi0KLWRlZiBzY3JpcHRfcGF0aCgqYXJncyk6Ci0gICAg
Z2xvYmFsIHNjcmlwdF9kaXIKLSAgICBpZiBub3Qgc2NyaXB0X2RpcjoKLSAgICAgICAgc2NyaXB0
X2RpciA9IG9zLnBhdGguam9pbihvcy5wYXRoLmRpcm5hbWUoX19maWxlX18pLCAnLi4nLCAnU2Ny
aXB0cycpCi0gICAgcmV0dXJuIG9zLnBhdGguam9pbigqKHNjcmlwdF9kaXIsKSArIGFyZ3MpCi0K
LQotZGVmIHRvcF9sZXZlbF9wYXRoKCphcmdzKToKLSAgICByZXR1cm4gb3MucGF0aC5qb2luKCoo
KG9zLnBhdGguam9pbihvcy5wYXRoLmRpcm5hbWUoX19maWxlX18pLCAnLi4nLCAnLi4nKSwpICsg
YXJncykpCi0KLQogZGVmIGdldF9idWlsZF9wYXRoKGJ1aWxkX3R5cGVzPSgnUmVsZWFzZScsICdE
ZWJ1ZycpLCBmYXRhbD1UcnVlKToKICAgICBnbG9iYWwgYnVpbGRfZGlyCiAgICAgaWYgYnVpbGRf
ZGlyOgpkaWZmIC0tZ2l0IGEvVG9vbHMvZ3RrL2poYnVpbGRyYyBiL1Rvb2xzL2d0ay9qaGJ1aWxk
cmMKaW5kZXggNjlmOTQ1Ny4uMDQxODY1YSAxMDA2NDQKLS0tIGEvVG9vbHMvZ3RrL2poYnVpbGRy
YworKysgYi9Ub29scy9ndGsvamhidWlsZHJjCkBAIC0xNSwzNiArMTUsMTQgQEAKICMgTGljZW5z
ZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0
d2FyZQogIyBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29y
LCBCb3N0b24sIE1BICAwMjExMC0xMzAxICBVU0EKIAotaW1wb3J0IG11bHRpcHJvY2Vzc2luZwot
aW1wb3J0IHN5cworc3lzLnBhdGguaW5zZXJ0KDAsIG9zLnBhdGguam9pbihvcy5wYXRoLmRpcm5h
bWUoX19maWxlX18pLCAiLi4vamhidWlsZCIpICkKK2ltcG9ydCBqaGJ1aWxkcmNfY29tbW9uCitq
aGJ1aWxkcmNfY29tbW9uLmluaXQoZ2xvYmFscygpLCAiZ3RrIikKIAogX19ndGtfdG9vbHNfZGly
ZWN0b3J5ID0gb3MucGF0aC5hYnNwYXRoKG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXykpCiBzeXMu
cGF0aCA9IFtfX2d0a190b29sc19kaXJlY3RvcnldICsgc3lzLnBhdGgKIGltcG9ydCBjb21tb24K
IAotYnVpbGRfcG9saWN5ID0gJ3VwZGF0ZWQnCi0KLV9fbW9kdWxlc2V0X2ZpbGVfdXJpID0gJ2Zp
bGU6Ly8nICsgb3MucGF0aC5qb2luKF9fZ3RrX3Rvb2xzX2RpcmVjdG9yeSwgJ2poYnVpbGQubW9k
dWxlcycpCi1fX2V4dHJhX21vZHVsZXNldHMgPSBvcy5lbnZpcm9uLmdldCgiV0VCS0lUX0VYVFJB
X01PRFVMRVNFVFMiLCAiIikuc3BsaXQoIiwiKQotbW9kdWxlc2V0ID0gWyBfX21vZHVsZXNldF9m
aWxlX3VyaSwgXQotaWYgX19leHRyYV9tb2R1bGVzZXRzICE9IFsnJ106Ci0gICAgbW9kdWxlc2V0
LmV4dGVuZChfX2V4dHJhX21vZHVsZXNldHMpCi0KLV9fZXh0cmFfbW9kdWxlcyA9IG9zLmVudmly
b24uZ2V0KCJXRUJLSVRfRVhUUkFfTU9EVUxFUyIsICIiKS5zcGxpdCgiLCIpCi1tb2R1bGVzID0g
WyAnd2Via2l0Z3RrLXRlc3RpbmctZGVwZW5kZW5jaWVzJywgXQotaWYgX19leHRyYV9tb2R1bGVz
ICE9IFsnJ106Ci0gICAgbW9kdWxlcy5leHRlbmQoX19leHRyYV9tb2R1bGVzKQotCi1pZiBvcy5l
bnZpcm9uLmhhc19rZXkoJ1dFQktJVF9PVVRQVVRESVInKToKLSAgICBjaGVja291dHJvb3QgPSBv
cy5wYXRoLmFic3BhdGgob3MucGF0aC5qb2luKG9zLmVudmlyb25bJ1dFQktJVF9PVVRQVVRESVIn
XSwgJ0RlcGVuZGVuY2llcycsICdTb3VyY2UnKSkKLSAgICBwcmVmaXggPSBvcy5wYXRoLmFic3Bh
dGgob3MucGF0aC5qb2luKG9zLmVudmlyb25bJ1dFQktJVF9PVVRQVVRESVInXSwgJ0RlcGVuZGVu
Y2llcycsICdSb290JykpCi1lbHNlOgotICAgIGNoZWNrb3V0cm9vdCA9IG9zLnBhdGguYWJzcGF0
aChjb21tb24udG9wX2xldmVsX3BhdGgoJ1dlYktpdEJ1aWxkJywnRGVwZW5kZW5jaWVzJywgJ1Nv
dXJjZScpKQotICAgIHByZWZpeCA9IG9zLnBhdGguYWJzcGF0aChjb21tb24udG9wX2xldmVsX3Bh
dGgoJ1dlYktpdEJ1aWxkJywnRGVwZW5kZW5jaWVzJywgJ1Jvb3QnKSkKLQotbm9ub3RpZnkgPSBU
cnVlCi1ub3RyYXlpY29uID0gVHJ1ZQotCiBpZiAnTlVNQkVSX09GX1BST0NFU1NPUlMnIGluIG9z
LmVudmlyb246CiAgICAgam9icyA9IG9zLmVudmlyb25bJ05VTUJFUl9PRl9QUk9DRVNTT1JTJ10K
IApkaWZmIC0tZ2l0IGEvVG9vbHMvbml4L2NvbW1vbi5weSBiL1Rvb2xzL25peC9jb21tb24ucHkK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBiOGI2NjIuLjAwMDAwMDAKLS0tIGEvVG9v
bHMvbml4L2NvbW1vbi5weQorKysgL2Rldi9udWxsCkBAIC0xLDMyICswLDAgQEAKLSMhL3Vzci9i
aW4vZW52IHB5dGhvbgotIyBDb3B5cmlnaHQgKEMpIDIwMTEgSWdhbGlhIFMuTC4KLSMgQ29weXJp
Z2h0IChDKSAyMDEyLCAyMDEzIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFy
eSgtaWVzKS4KLSMKLSMgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk
aXN0cmlidXRlIGl0IGFuZC9vcgotIyBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH
TlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi0jIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotIyB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vu
c2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0jCi0jIFRoaXMgbGli
cmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAot
IyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy
YW50eSBvZgotIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UuICBTZWUgdGhlIEdOVQotIyBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3Ig
bW9yZSBkZXRhaWxzLgotIwotIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo
ZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi0jIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxp
YnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSMgRm91bmRhdGlvbiwg
SW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAt
MTMwMSAgVVNBCi0KLWltcG9ydCBvcwotCi1zY3JpcHRfZGlyID0gTm9uZQotCi0KLWRlZiBzY3Jp
cHRfcGF0aCgqYXJncyk6Ci0gICAgZ2xvYmFsIHNjcmlwdF9kaXIKLSAgICBpZiBub3Qgc2NyaXB0
X2RpcjoKLSAgICAgICAgc2NyaXB0X2RpciA9IG9zLnBhdGguam9pbihvcy5wYXRoLmRpcm5hbWUo
X19maWxlX18pLCAnLi4nLCAnU2NyaXB0cycpCi0gICAgcmV0dXJuIG9zLnBhdGguam9pbigqKHNj
cmlwdF9kaXIsKSArIGFyZ3MpCi0KLQotZGVmIHRvcF9sZXZlbF9wYXRoKCphcmdzKToKLSAgICBy
ZXR1cm4gb3MucGF0aC5qb2luKCooKHNjcmlwdF9wYXRoKCcuLicsICcuLicpLCkgKyBhcmdzKSkK
ZGlmZiAtLWdpdCBhL1Rvb2xzL25peC9qaGJ1aWxkcmMgYi9Ub29scy9uaXgvamhidWlsZHJjCmlu
ZGV4IDM1NTUyY2EuLmI3NTc4M2YgMTAwNjQ0Ci0tLSBhL1Rvb2xzL25peC9qaGJ1aWxkcmMKKysr
IGIvVG9vbHMvbml4L2poYnVpbGRyYwpAQCAtMTcsMzggKzE3LDEwIEBACiAjIExpY2Vuc2UgYWxv
bmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUK
ICMgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9z
dG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCiAKLWltcG9ydCBtdWx0aXByb2Nlc3NpbmcKLWltcG9y
dCBzeXMKLWltcG9ydCBvcworc3lzLnBhdGguaW5zZXJ0KDAsIG9zLnBhdGguam9pbihvcy5wYXRo
LmRpcm5hbWUoX19maWxlX18pLCAiLi4vamhidWlsZCIpICkKK2ltcG9ydCBqaGJ1aWxkcmNfY29t
bW9uCitqaGJ1aWxkcmNfY29tbW9uLmluaXQoZ2xvYmFscygpLCAibml4IikKIAotX19uaXhfdG9v
bHNfZGlyZWN0b3J5ID0gb3MucGF0aC5hYnNwYXRoKG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXykp
Ci1zeXMucGF0aCA9IFtfX25peF90b29sc19kaXJlY3RvcnldICsgc3lzLnBhdGgKLWltcG9ydCBj
b21tb24KLQotYnVpbGRfcG9saWN5ID0gJ3VwZGF0ZWQnCi0KLSMgRklYTUU6IG1vdmUgc2hhcmVk
IHBhcnRzIGludG8gLi4vamhidWlsZCBmb2xkZXIuCi0KLV9fbW9kdWxlc2V0X2ZpbGVfdXJpID0g
J2ZpbGU6Ly8nICsgb3MucGF0aC5qb2luKF9fbml4X3Rvb2xzX2RpcmVjdG9yeSwgJ2poYnVpbGQu
bW9kdWxlcycpCi1fX2V4dHJhX21vZHVsZXNldHMgPSBvcy5lbnZpcm9uLmdldCgiV0VCS0lUX0VY
VFJBX01PRFVMRVNFVFMiLCAiIikuc3BsaXQoIiwiKQotbW9kdWxlc2V0ID0gWyBfX21vZHVsZXNl
dF9maWxlX3VyaSwgXQotaWYgX19leHRyYV9tb2R1bGVzZXRzICE9IFsnJ106Ci0gICAgbW9kdWxl
c2V0LmV4dGVuZChfX2V4dHJhX21vZHVsZXNldHMpCi0KLV9fZXh0cmFfbW9kdWxlcyA9IG9zLmVu
dmlyb24uZ2V0KCJXRUJLSVRfRVhUUkFfTU9EVUxFUyIsICIiKS5zcGxpdCgiLCIpCi1tb2R1bGVz
ID0gWyAnd2Via2l0bml4LXRlc3RpbmctZGVwZW5kZW5jaWVzJywgXQotaWYgX19leHRyYV9tb2R1
bGVzICE9IFsnJ106Ci0gICAgbW9kdWxlcy5leHRlbmQoX19leHRyYV9tb2R1bGVzKQotCi1pZiBv
cy5lbnZpcm9uLmhhc19rZXkoJ1dFQktJVF9PVVRQVVRESVInKToKLSAgICBjaGVja291dHJvb3Qg
PSBvcy5wYXRoLmFic3BhdGgob3MucGF0aC5qb2luKG9zLmVudmlyb25bJ1dFQktJVF9PVVRQVVRE
SVInXSwgJ0RlcGVuZGVuY2llcycsICdTb3VyY2UnKSkKLSAgICBwcmVmaXggPSBvcy5wYXRoLmFi
c3BhdGgob3MucGF0aC5qb2luKG9zLmVudmlyb25bJ1dFQktJVF9PVVRQVVRESVInXSwgJ0RlcGVu
ZGVuY2llcycsICdSb290JykpCi1lbHNlOgotICAgIGNoZWNrb3V0cm9vdCA9IG9zLnBhdGguYWJz
cGF0aChjb21tb24udG9wX2xldmVsX3BhdGgoJ1dlYktpdEJ1aWxkJywnRGVwZW5kZW5jaWVzJywg
J1NvdXJjZScpKQotICAgIHByZWZpeCA9IG9zLnBhdGguYWJzcGF0aChjb21tb24udG9wX2xldmVs
X3BhdGgoJ1dlYktpdEJ1aWxkJywnRGVwZW5kZW5jaWVzJywgJ1Jvb3QnKSkKLQotbm9ub3RpZnkg
PSBUcnVlCi1ub3RyYXlpY29uID0gVHJ1ZQogaWYgJ01BS0VGTEFHUycgbm90IGluIG9zLmVudmly
b246CiAgICAgb3MuZW52aXJvblsnTUFLRUZMQUdTJ10gPSAnLWolZCcgJSBtdWx0aXByb2Nlc3Np
bmcuY3B1X2NvdW50KCkKIAo=
</data>
<flag name="commit-queue"
          id="243302"
          type_id="3"
          status="-"
          setter="gtk-ews"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>221119</attachid>
            <date>2014-01-14 01:12:12 -0800</date>
            <delta_ts>2014-01-14 01:18:24 -0800</delta_ts>
            <desc>patch</desc>
            <filename>np.diff</filename>
            <type>text/plain</type>
            <size>17458</size>
            <attacher name="ezisfake">Szanka.Peter</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCAzNGIz
Zjc5Li4yMTNmY2JhIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzEgQEAKKzIwMTQtMDEtMTMgIFBldGVyIFN6YW5rYSAgPGg4Njgw
NjRAc3R1ZC51LXN6ZWdlZC5odT4KKworICAgICAgICBFeHRyYWN0IGNvbW1vbiBwYXJ0cyBmcm9t
IGpoYnVpbGRyYyBmaWxlcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTEyNTk4NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogZWZsL2NvbW1vbi5weTogUmVtb3ZlZC4KKyAgICAgICAgKiBlZmwvamhidWls
ZHJjOgorICAgICAgICAqIGd0ay9jb21tb24ucHk6CisgICAgICAgICogZ3RrL2ZpbmQtbWFrZS1k
aXN0LWVycm9yczoKKyAgICAgICAgKGdldF9taXNzaW5nX2hlYWRlcnMpOgorICAgICAgICAqIGd0
ay9nZW5lcmF0ZS1ndGtkb2M6CisgICAgICAgIChnZXRfd2Via2l0Ml9vcHRpb25zLnNyY19wYXRo
KToKKyAgICAgICAgKGdldF93ZWJraXQyX29wdGlvbnMuaW5qZWN0ZWRfYnVuZGxlX3NyY19wYXRo
KToKKyAgICAgICAgKGdldF93ZWJraXQyX29wdGlvbnMpOgorICAgICAgICAoZ2V0X3dlYmtpdDFf
b3B0aW9ucy5zcmNfcGF0aCk6CisgICAgICAgIChnZXRfd2Via2l0MV9vcHRpb25zKToKKyAgICAg
ICAgKGdldF93ZWJraXRkb21fb3B0aW9ucy5zcmNfcGF0aCk6CisgICAgICAgIChnZXRfd2Via2l0
ZG9tX29wdGlvbnMpOgorICAgICAgICAqIGd0ay9qaGJ1aWxkcmM6CisgICAgICAgICogamhidWls
ZC9qaGJ1aWxkcmNfY29tbW9uLnB5OiBBZGRlZC4KKyAgICAgICAgKHNjcmlwdF9wYXRoKToKKyAg
ICAgICAgKHRvcF9sZXZlbF9wYXRoKToKKyAgICAgICAgKGluaXQpOgorICAgICAgICAqIG5peC9j
b21tb24ucHk6IFJlbW92ZWQuCisgICAgICAgICogbml4L2poYnVpbGRyYzoKKwogMjAxMy0xMi0x
OCAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgogCiAgICAgICAgIERlcHJl
Y2F0ZSBzb21lIFdLTXV0YWJsZURpY3Rpb25hcnkgZnVuY3Rpb25zCmRpZmYgLS1naXQgYS9Ub29s
cy9lZmwvamhidWlsZHJjIGIvVG9vbHMvZWZsL2poYnVpbGRyYwppbmRleCA3N2RhYWU5Li43NDhj
OTE1IDEwMDY0NAotLS0gYS9Ub29scy9lZmwvamhidWlsZHJjCisrKyBiL1Rvb2xzL2VmbC9qaGJ1
aWxkcmMKQEAgLTE2LDM3ICsxNiw5IEBACiAjIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJh
cnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKICMgRm91bmRhdGlvbiwgSW5j
LiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMw
MSAgVVNBCiAKLWltcG9ydCBtdWx0aXByb2Nlc3NpbmcKLWltcG9ydCBzeXMKLQotX19lZmxfdG9v
bHNfZGlyZWN0b3J5ID0gb3MucGF0aC5hYnNwYXRoKG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXykp
Ci1zeXMucGF0aCA9IFtfX2VmbF90b29sc19kaXJlY3RvcnldICsgc3lzLnBhdGgKLWltcG9ydCBj
b21tb24KLQotYnVpbGRfcG9saWN5ID0gJ3VwZGF0ZWQnCi0KLSMgRklYTUU6IG1vdmUgc2hhcmVk
IHBhcnRzIGludG8gLi4vamhidWlsZCBmb2xkZXIuCi0KLV9fbW9kdWxlc2V0X2ZpbGVfdXJpID0g
J2ZpbGU6Ly8nICsgb3MucGF0aC5qb2luKF9fZWZsX3Rvb2xzX2RpcmVjdG9yeSwgJ2poYnVpbGQu
bW9kdWxlcycpCi1fX2V4dHJhX21vZHVsZXNldHMgPSBvcy5lbnZpcm9uLmdldCgiV0VCS0lUX0VY
VFJBX01PRFVMRVNFVFMiLCAiIikuc3BsaXQoIiwiKQotbW9kdWxlc2V0ID0gWyBfX21vZHVsZXNl
dF9maWxlX3VyaSwgXQotaWYgX19leHRyYV9tb2R1bGVzZXRzICE9IFsnJ106Ci0gICAgbW9kdWxl
c2V0LmV4dGVuZChfX2V4dHJhX21vZHVsZXNldHMpCi0KLV9fZXh0cmFfbW9kdWxlcyA9IG9zLmVu
dmlyb24uZ2V0KCJXRUJLSVRfRVhUUkFfTU9EVUxFUyIsICIiKS5zcGxpdCgiLCIpCi1tb2R1bGVz
ID0gWyAnd2Via2l0ZWZsLXRlc3RpbmctZGVwZW5kZW5jaWVzJywgXQotaWYgX19leHRyYV9tb2R1
bGVzICE9IFsnJ106Ci0gICAgbW9kdWxlcy5leHRlbmQoX19leHRyYV9tb2R1bGVzKQotCi1pZiBv
cy5lbnZpcm9uLmhhc19rZXkoJ1dFQktJVF9PVVRQVVRESVInKToKLSAgICBjaGVja291dHJvb3Qg
PSBvcy5wYXRoLmFic3BhdGgob3MucGF0aC5qb2luKG9zLmVudmlyb25bJ1dFQktJVF9PVVRQVVRE
SVInXSwgJ0RlcGVuZGVuY2llcycsICdTb3VyY2UnKSkKLSAgICBwcmVmaXggPSBvcy5wYXRoLmFi
c3BhdGgob3MucGF0aC5qb2luKG9zLmVudmlyb25bJ1dFQktJVF9PVVRQVVRESVInXSwgJ0RlcGVu
ZGVuY2llcycsICdSb290JykpCi1lbHNlOgotICAgIGNoZWNrb3V0cm9vdCA9IG9zLnBhdGguYWJz
cGF0aChjb21tb24udG9wX2xldmVsX3BhdGgoJ1dlYktpdEJ1aWxkJywnRGVwZW5kZW5jaWVzJywg
J1NvdXJjZScpKQotICAgIHByZWZpeCA9IG9zLnBhdGguYWJzcGF0aChjb21tb24udG9wX2xldmVs
X3BhdGgoJ1dlYktpdEJ1aWxkJywnRGVwZW5kZW5jaWVzJywgJ1Jvb3QnKSkKLQotbm9ub3RpZnkg
PSBUcnVlCi1ub3RyYXlpY29uID0gVHJ1ZQorc3lzLnBhdGguaW5zZXJ0KDAsIG9zLnBhdGguam9p
bihvcy5wYXRoLmRpcm5hbWUoX19maWxlX18pLCAiLi4vamhidWlsZCIpICkKK2ltcG9ydCBqaGJ1
aWxkcmNfY29tbW9uCitqaGJ1aWxkcmNfY29tbW9uLmluaXQoZ2xvYmFscygpLCAiZWZsIikKIAog
aWYgJ05VTUJFUl9PRl9QUk9DRVNTT1JTJyBpbiBvcy5lbnZpcm9uOgogICAgIGpvYnMgPSBvcy5l
bnZpcm9uWydOVU1CRVJfT0ZfUFJPQ0VTU09SUyddCmRpZmYgLS1naXQgYS9Ub29scy9ndGsvY29t
bW9uLnB5IGIvVG9vbHMvZ3RrL2NvbW1vbi5weQppbmRleCA0MjU1YzliLi40MzM1OGM1IDEwMDY0
NAotLS0gYS9Ub29scy9ndGsvY29tbW9uLnB5CisrKyBiL1Rvb2xzL2d0ay9jb21tb24ucHkKQEAg
LTIxLDIxICsyMSw4IEBAIGltcG9ydCBzZWxlY3QKIGltcG9ydCBzdWJwcm9jZXNzCiBpbXBvcnQg
c3lzCiAKLXNjcmlwdF9kaXIgPSBOb25lCiBidWlsZF9kaXIgPSBOb25lCiAKLQotZGVmIHNjcmlw
dF9wYXRoKCphcmdzKToKLSAgICBnbG9iYWwgc2NyaXB0X2RpcgotICAgIGlmIG5vdCBzY3JpcHRf
ZGlyOgotICAgICAgICBzY3JpcHRfZGlyID0gb3MucGF0aC5qb2luKG9zLnBhdGguZGlybmFtZShf
X2ZpbGVfXyksICcuLicsICdTY3JpcHRzJykKLSAgICByZXR1cm4gb3MucGF0aC5qb2luKCooc2Ny
aXB0X2RpciwpICsgYXJncykKLQotCi1kZWYgdG9wX2xldmVsX3BhdGgoKmFyZ3MpOgotICAgIHJl
dHVybiBvcy5wYXRoLmpvaW4oKigob3MucGF0aC5qb2luKG9zLnBhdGguZGlybmFtZShfX2ZpbGVf
XyksICcuLicsICcuLicpLCkgKyBhcmdzKSkKLQotCiBkZWYgZ2V0X2J1aWxkX3BhdGgoYnVpbGRf
dHlwZXM9KCdSZWxlYXNlJywgJ0RlYnVnJyksIGZhdGFsPVRydWUpOgogICAgIGdsb2JhbCBidWls
ZF9kaXIKICAgICBpZiBidWlsZF9kaXI6CmRpZmYgLS1naXQgYS9Ub29scy9ndGsvZmluZC1tYWtl
LWRpc3QtZXJyb3JzIGIvVG9vbHMvZ3RrL2ZpbmQtbWFrZS1kaXN0LWVycm9ycwppbmRleCA4ODBj
NzgwLi45ODE5MDU1IDEwMDc1NQotLS0gYS9Ub29scy9ndGsvZmluZC1tYWtlLWRpc3QtZXJyb3Jz
CisrKyBiL1Rvb2xzL2d0ay9maW5kLW1ha2UtZGlzdC1lcnJvcnMKQEAgLTIwLDYgKzIwLDkgQEAg
aW1wb3J0IG9zCiBpbXBvcnQgc3VicHJvY2VzcwogaW1wb3J0IHN5cwogCitzeXMucGF0aC5pbnNl
cnQoMCwgb3MucGF0aC5qb2luKG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXyksICIuLi9qaGJ1aWxk
IikgKQoraW1wb3J0IGpoYnVpbGRyY19jb21tb24KKwogZGVmIGlzX3NvdXJjZV9maWxlX2xpc3Rp
bmcobGluZSk6CiAgICAgcmV0dXJuIGxpbmUuc3RyaXAoKS5zdGFydHN3aXRoKCdTb3VyY2UnKQog
CkBAIC04Niw3ICs4OSw3IEBAIGRlZiBnZXRfdW5saXN0ZWRfaGVhZGVycyhsaXN0ZWRfbWFrZWZp
bGVfaGVhZGVycyk6CiBkZWYgZ2V0X21pc3NpbmdfaGVhZGVycyhsaXN0ZWRfbWFrZWZpbGVfaGVh
ZGVycyk6CiAgICAgbWlzc2luZyA9IHNldCgpCiAgICAgZm9yIGhlYWRlciBpbiBsaXN0ZWRfbWFr
ZWZpbGVfaGVhZGVyczoKLSAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKGNvbW1vbi50b3Bf
bGV2ZWxfcGF0aChoZWFkZXIpKToKKyAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKGpoYnVp
bGRyY19jb21tb24udG9wX2xldmVsX3BhdGgoaGVhZGVyKSk6CiAgICAgICAgICAgICBtaXNzaW5n
LmFkZChoZWFkZXIpCiAgICAgcmV0dXJuIG1pc3NpbmcKIApkaWZmIC0tZ2l0IGEvVG9vbHMvZ3Rr
L2dlbmVyYXRlLWd0a2RvYyBiL1Rvb2xzL2d0ay9nZW5lcmF0ZS1ndGtkb2MKaW5kZXggMzZmYWM0
ZC4uOGYzYTk3ZiAxMDA3NTUKLS0tIGEvVG9vbHMvZ3RrL2dlbmVyYXRlLWd0a2RvYworKysgYi9U
b29scy9ndGsvZ2VuZXJhdGUtZ3RrZG9jCkBAIC0yMiw2ICsyMiw5IEBAIGltcG9ydCBsb2dnaW5n
CiBpbXBvcnQgb3MucGF0aAogaW1wb3J0IHN5cwogCitzeXMucGF0aC5pbnNlcnQoMCwgb3MucGF0
aC5qb2luKG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXyksICIuLi9qaGJ1aWxkIikgKQoraW1wb3J0
IGpoYnVpbGRyY19jb21tb24KKwogZGVmIGNvbmZpZ3VyZV9sb2dnaW5nKCk6CiAgICAgbGV2ZWwg
PSBsb2dnaW5nLkRFQlVHIGlmICctdicgaW4gc3lzLmFyZ3YgZWxzZSBsb2dnaW5nLklORk8KICAg
ICBsb2dnZXIgPSBsb2dnaW5nLmdldExvZ2dlcignZ3RrZG9jJykKQEAgLTc5LDkgKzgyLDkgQEAg
ZGVmIGdldF93ZWJraXQyX29wdGlvbnMoKToKICAgICBkZWYgZGVyaXZlZF9zb3VyY2VzX3BhdGgo
KmFyZ3MpOgogICAgICAgICByZXR1cm4gY29tbW9uLmJ1aWxkX3BhdGgoKigoJ0Rlcml2ZWRTb3Vy
Y2VzJywgJ1dlYktpdDInKSArIGFyZ3MpKQogICAgIGRlZiBzcmNfcGF0aCgqYXJncyk6Ci0gICAg
ICAgIHJldHVybiBjb21tb24udG9wX2xldmVsX3BhdGgoKigoJ1NvdXJjZScsICdXZWJLaXQyJywg
J1VJUHJvY2VzcycsICdBUEknLCAnZ3RrJykgKyBhcmdzKSkKKyAgICAgICAgcmV0dXJuIGpoYnVp
bGRyY19jb21tb24udG9wX2xldmVsX3BhdGgoKigoJ1NvdXJjZScsICdXZWJLaXQyJywgJ1VJUHJv
Y2VzcycsICdBUEknLCAnZ3RrJykgKyBhcmdzKSkKICAgICBkZWYgaW5qZWN0ZWRfYnVuZGxlX3Ny
Y19wYXRoKCphcmdzKToKLSAgICAgICAgcmV0dXJuIGNvbW1vbi50b3BfbGV2ZWxfcGF0aCgqKCgn
U291cmNlJywgJ1dlYktpdDInLCAnV2ViUHJvY2VzcycsICdJbmplY3RlZEJ1bmRsZScsICdBUEkn
LCAnZ3RrJykgKyBhcmdzKSkKKyAgICAgICAgcmV0dXJuIGpoYnVpbGRyY19jb21tb24udG9wX2xl
dmVsX3BhdGgoKigoJ1NvdXJjZScsICdXZWJLaXQyJywgJ1dlYlByb2Nlc3MnLCAnSW5qZWN0ZWRC
dW5kbGUnLCAnQVBJJywgJ2d0aycpICsgYXJncykpCiAKICAgICB4cmVmX2RlcHMgPSBnZXRfY29t
bW9uX3hyZWZfZGVwcygpLmNvcHkoKQogICAgIHhyZWZfZGVwcy51cGRhdGUoewpAQCAtOTgsNyAr
MTAxLDcgQEAgZGVmIGdldF93ZWJraXQyX29wdGlvbnMoKToKICAgICAgICAgJ2NmbGFncycgOiAn
IC1JJyArIGRlcml2ZWRfc291cmNlc19wYXRoKCd3ZWJraXQyZ3RrJywgJ2luY2x1ZGUnKSArIFwK
ICAgICAgICAgICAgICAgICAgICAnIC1JJyArIGRlcml2ZWRfc291cmNlc19wYXRoKCd3ZWJraXQy
Z3RrJykgKyBcCiAgICAgICAgICAgICAgICAgICAgJyAtSScgKyBkZXJpdmVkX3NvdXJjZXNfcGF0
aCgnaW5jbHVkZScpICsgXAotICAgICAgICAgICAgICAgICAgICcgLUknICsgY29tbW9uLnRvcF9s
ZXZlbF9wYXRoKCdTb3VyY2UnKSArIFwKKyAgICAgICAgICAgICAgICAgICAnIC1JJyArIGpoYnVp
bGRyY19jb21tb24udG9wX2xldmVsX3BhdGgoJ1NvdXJjZScpICsgXAogICAgICAgICAgICAgICAg
ICAgICcgLUknICsgc3JjX3BhdGgoKSwKICAgICAgICAgJ2Nyb3NzX3JlZmVyZW5jZV9kZXBzJyA6
IGdldF9ndGtkb2NfbW9kdWxlX3BhdGhzKHhyZWZfZGVwcykgKyBbd2Via2l0ZG9tX2RvY3NfaHRt
bF9wYXRoKCldLAogICAgICAgICAnaWdub3JlZF9maWxlcyc6IGdsb2IuZ2xvYihzcmNfcGF0aCgn
KlByaXZhdGUuaCcpKSArIFwKQEAgLTExOCw3ICsxMjEsNyBAQCBkZWYgZ2V0X3dlYmtpdDJfb3B0
aW9ucygpOgogCiBkZWYgZ2V0X3dlYmtpdDFfb3B0aW9ucyhndGtfdmVyc2lvbik6CiAgICAgZGVm
IHNyY19wYXRoKCphcmdzKToKLSAgICAgICAgcmV0dXJuIGNvbW1vbi50b3BfbGV2ZWxfcGF0aCgq
KCgnU291cmNlJywgJ1dlYktpdCcsICdndGsnKSArIGFyZ3MpKQorICAgICAgICByZXR1cm4gamhi
dWlsZHJjX2NvbW1vbi50b3BfbGV2ZWxfcGF0aCgqKCgnU291cmNlJywgJ1dlYktpdCcsICdndGsn
KSArIGFyZ3MpKQogCiAgICAgeHJlZl9kZXBzID0gZ2V0X2NvbW1vbl94cmVmX2RlcHMoKS5jb3B5
KCkKICAgICBpZiBndGtfdmVyc2lvbiA9PSAzOgpAQCAtMTQwLDggKzE0Myw4IEBAIGRlZiBnZXRf
d2Via2l0MV9vcHRpb25zKGd0a192ZXJzaW9uKToKICAgICAgICAgJ2NmbGFncycgOiAnIC1JJyAr
IGNvbW1vbi5idWlsZF9wYXRoKCdXZWJLaXQnLCAnZ3RrJykgKyBcCiAgICAgICAgICAgICAgICAg
ICAgJyAtSScgKyBjb21tb24uYnVpbGRfcGF0aCgnRGVyaXZlZFNvdXJjZXMnKSArIFwKICAgICAg
ICAgICAgICAgICAgICAnIC1JJyArIHNyY19wYXRoKCkgKyBcCi0gICAgICAgICAgICAgICAgICAg
JyAtSScgKyBjb21tb24udG9wX2xldmVsX3BhdGgoJ1NvdXJjZScpICsgXAotICAgICAgICAgICAg
ICAgICAgICcgLUknICsgY29tbW9uLnRvcF9sZXZlbF9wYXRoKCdTb3VyY2UnLCAnSmF2YVNjcmlw
dENvcmUnLCAnRm9yd2FyZGluZ0hlYWRlcnMnKSwKKyAgICAgICAgICAgICAgICAgICAnIC1JJyAr
IGpoYnVpbGRyY19jb21tb24udG9wX2xldmVsX3BhdGgoJ1NvdXJjZScpICsgXAorICAgICAgICAg
ICAgICAgICAgICcgLUknICsgamhidWlsZHJjX2NvbW1vbi50b3BfbGV2ZWxfcGF0aCgnU291cmNl
JywgJ0phdmFTY3JpcHRDb3JlJywgJ0ZvcndhcmRpbmdIZWFkZXJzJyksCiAgICAgICAgICdjcm9z
c19yZWZlcmVuY2VfZGVwcycgOiBnZXRfZ3RrZG9jX21vZHVsZV9wYXRocyh4cmVmX2RlcHMpICsg
W3dlYmtpdGRvbV9kb2NzX2h0bWxfcGF0aCgpXSwKICAgICAgICAgJ2lnbm9yZWRfZmlsZXMnOiBn
bG9iLmdsb2Ioc3JjX3BhdGgoJ3dlYmtpdCcsICcqcHJpdmF0ZS4qJykpICsgXAogICAgICAgICAg
ICAgICAgICAgICAgICAgIGdsb2IuZ2xvYihzcmNfcGF0aCgnd2Via2l0JywgJ3dlYmtpdGF1dGhl
bnRpY2F0aW9uZGlhbG9nLionKSkgKyBcCkBAIC0xNTMsNyArMTU2LDcgQEAgZGVmIGdldF93ZWJr
aXRkb21fb3B0aW9ucygpOgogICAgIGRlZiBkZXJpdmVkX3NvdXJjZXNfcGF0aCgqYXJncyk6CiAg
ICAgICAgIHJldHVybiBjb21tb24uYnVpbGRfcGF0aCgqKCgnRGVyaXZlZFNvdXJjZXMnLCAnd2Vi
a2l0ZG9tJykgKyBhcmdzKSkKICAgICBkZWYgc3JjX3BhdGgoKmFyZ3MpOgotICAgICAgICByZXR1
cm4gY29tbW9uLnRvcF9sZXZlbF9wYXRoKCooKCdTb3VyY2UnLCAnV2ViQ29yZScsICdiaW5kaW5n
cycsICdnb2JqZWN0JykgKyBhcmdzKSkKKyAgICAgICAgcmV0dXJuIGpoYnVpbGRyY19jb21tb24u
dG9wX2xldmVsX3BhdGgoKigoJ1NvdXJjZScsICdXZWJDb3JlJywgJ2JpbmRpbmdzJywgJ2dvYmpl
Y3QnKSArIGFyZ3MpKQogCiAgICAgeHJlZl9kZXBzID0geyAnZ2xpYi0yLjAnIDogWydnbGliJywg
J2dvYmplY3QnLCAnZ2lvJ10gfQogCkBAIC0xNjYsNyArMTY5LDcgQEAgZGVmIGdldF93ZWJraXRk
b21fb3B0aW9ucygpOgogICAgICAgICAnc291cmNlX2RpcnMnIDogW2Rlcml2ZWRfc291cmNlc19w
YXRoKCldLAogICAgICAgICAnY2ZsYWdzJyA6ICcgLUknICsgZGVyaXZlZF9zb3VyY2VzX3BhdGgo
KSArIFwKICAgICAgICAgICAgICAgICAgICAnIC1JJyArIHNyY19wYXRoKCkgKyBcCi0gICAgICAg
ICAgICAgICAgICAgJyAtSScgKyBjb21tb24udG9wX2xldmVsX3BhdGgoJ1NvdXJjZScpLAorICAg
ICAgICAgICAgICAgICAgICcgLUknICsgamhidWlsZHJjX2NvbW1vbi50b3BfbGV2ZWxfcGF0aCgn
U291cmNlJyksCiAgICAgICAgICdjcm9zc19yZWZlcmVuY2VfZGVwcycgOiBnZXRfZ3RrZG9jX21v
ZHVsZV9wYXRocyh4cmVmX2RlcHMpLAogICAgICAgICAnaWdub3JlZF9maWxlcyc6IGdsb2IuZ2xv
YihkZXJpdmVkX3NvdXJjZXNfcGF0aCgnKlByaXZhdGUuaCcpKQogICAgIH0pCmRpZmYgLS1naXQg
YS9Ub29scy9ndGsvamhidWlsZHJjIGIvVG9vbHMvZ3RrL2poYnVpbGRyYwppbmRleCA2OWY5NDU3
Li4wNDE4NjVhIDEwMDY0NAotLS0gYS9Ub29scy9ndGsvamhidWlsZHJjCisrKyBiL1Rvb2xzL2d0
ay9qaGJ1aWxkcmMKQEAgLTE1LDM2ICsxNSwxNCBAQAogIyBMaWNlbnNlIGFsb25nIHdpdGggdGhp
cyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiAjIEZvdW5kYXRp
b24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAy
MTEwLTEzMDEgIFVTQQogCi1pbXBvcnQgbXVsdGlwcm9jZXNzaW5nCi1pbXBvcnQgc3lzCitzeXMu
cGF0aC5pbnNlcnQoMCwgb3MucGF0aC5qb2luKG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXyksICIu
Li9qaGJ1aWxkIikgKQoraW1wb3J0IGpoYnVpbGRyY19jb21tb24KK2poYnVpbGRyY19jb21tb24u
aW5pdChnbG9iYWxzKCksICJndGsiKQogCiBfX2d0a190b29sc19kaXJlY3RvcnkgPSBvcy5wYXRo
LmFic3BhdGgob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSkKIHN5cy5wYXRoID0gW19fZ3RrX3Rv
b2xzX2RpcmVjdG9yeV0gKyBzeXMucGF0aAogaW1wb3J0IGNvbW1vbgogCi1idWlsZF9wb2xpY3kg
PSAndXBkYXRlZCcKLQotX19tb2R1bGVzZXRfZmlsZV91cmkgPSAnZmlsZTovLycgKyBvcy5wYXRo
LmpvaW4oX19ndGtfdG9vbHNfZGlyZWN0b3J5LCAnamhidWlsZC5tb2R1bGVzJykKLV9fZXh0cmFf
bW9kdWxlc2V0cyA9IG9zLmVudmlyb24uZ2V0KCJXRUJLSVRfRVhUUkFfTU9EVUxFU0VUUyIsICIi
KS5zcGxpdCgiLCIpCi1tb2R1bGVzZXQgPSBbIF9fbW9kdWxlc2V0X2ZpbGVfdXJpLCBdCi1pZiBf
X2V4dHJhX21vZHVsZXNldHMgIT0gWycnXToKLSAgICBtb2R1bGVzZXQuZXh0ZW5kKF9fZXh0cmFf
bW9kdWxlc2V0cykKLQotX19leHRyYV9tb2R1bGVzID0gb3MuZW52aXJvbi5nZXQoIldFQktJVF9F
WFRSQV9NT0RVTEVTIiwgIiIpLnNwbGl0KCIsIikKLW1vZHVsZXMgPSBbICd3ZWJraXRndGstdGVz
dGluZy1kZXBlbmRlbmNpZXMnLCBdCi1pZiBfX2V4dHJhX21vZHVsZXMgIT0gWycnXToKLSAgICBt
b2R1bGVzLmV4dGVuZChfX2V4dHJhX21vZHVsZXMpCi0KLWlmIG9zLmVudmlyb24uaGFzX2tleSgn
V0VCS0lUX09VVFBVVERJUicpOgotICAgIGNoZWNrb3V0cm9vdCA9IG9zLnBhdGguYWJzcGF0aChv
cy5wYXRoLmpvaW4ob3MuZW52aXJvblsnV0VCS0lUX09VVFBVVERJUiddLCAnRGVwZW5kZW5jaWVz
JywgJ1NvdXJjZScpKQotICAgIHByZWZpeCA9IG9zLnBhdGguYWJzcGF0aChvcy5wYXRoLmpvaW4o
b3MuZW52aXJvblsnV0VCS0lUX09VVFBVVERJUiddLCAnRGVwZW5kZW5jaWVzJywgJ1Jvb3QnKSkK
LWVsc2U6Ci0gICAgY2hlY2tvdXRyb290ID0gb3MucGF0aC5hYnNwYXRoKGNvbW1vbi50b3BfbGV2
ZWxfcGF0aCgnV2ViS2l0QnVpbGQnLCdEZXBlbmRlbmNpZXMnLCAnU291cmNlJykpCi0gICAgcHJl
Zml4ID0gb3MucGF0aC5hYnNwYXRoKGNvbW1vbi50b3BfbGV2ZWxfcGF0aCgnV2ViS2l0QnVpbGQn
LCdEZXBlbmRlbmNpZXMnLCAnUm9vdCcpKQotCi1ub25vdGlmeSA9IFRydWUKLW5vdHJheWljb24g
PSBUcnVlCi0KIGlmICdOVU1CRVJfT0ZfUFJPQ0VTU09SUycgaW4gb3MuZW52aXJvbjoKICAgICBq
b2JzID0gb3MuZW52aXJvblsnTlVNQkVSX09GX1BST0NFU1NPUlMnXQogCmRpZmYgLS1naXQgYS9U
b29scy9uaXgvamhidWlsZHJjIGIvVG9vbHMvbml4L2poYnVpbGRyYwppbmRleCAzNTU1MmNhLi5i
NzU3ODNmIDEwMDY0NAotLS0gYS9Ub29scy9uaXgvamhidWlsZHJjCisrKyBiL1Rvb2xzL25peC9q
aGJ1aWxkcmMKQEAgLTE3LDM4ICsxNywxMCBAQAogIyBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBs
aWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiAjIEZvdW5kYXRpb24s
IEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEw
LTEzMDEgIFVTQQogCi1pbXBvcnQgbXVsdGlwcm9jZXNzaW5nCi1pbXBvcnQgc3lzCi1pbXBvcnQg
b3MKK3N5cy5wYXRoLmluc2VydCgwLCBvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1lKF9fZmls
ZV9fKSwgIi4uL2poYnVpbGQiKSApCitpbXBvcnQgamhidWlsZHJjX2NvbW1vbgoramhidWlsZHJj
X2NvbW1vbi5pbml0KGdsb2JhbHMoKSwgIm5peCIpCiAKLV9fbml4X3Rvb2xzX2RpcmVjdG9yeSA9
IG9zLnBhdGguYWJzcGF0aChvcy5wYXRoLmRpcm5hbWUoX19maWxlX18pKQotc3lzLnBhdGggPSBb
X19uaXhfdG9vbHNfZGlyZWN0b3J5XSArIHN5cy5wYXRoCi1pbXBvcnQgY29tbW9uCi0KLWJ1aWxk
X3BvbGljeSA9ICd1cGRhdGVkJwotCi0jIEZJWE1FOiBtb3ZlIHNoYXJlZCBwYXJ0cyBpbnRvIC4u
L2poYnVpbGQgZm9sZGVyLgotCi1fX21vZHVsZXNldF9maWxlX3VyaSA9ICdmaWxlOi8vJyArIG9z
LnBhdGguam9pbihfX25peF90b29sc19kaXJlY3RvcnksICdqaGJ1aWxkLm1vZHVsZXMnKQotX19l
eHRyYV9tb2R1bGVzZXRzID0gb3MuZW52aXJvbi5nZXQoIldFQktJVF9FWFRSQV9NT0RVTEVTRVRT
IiwgIiIpLnNwbGl0KCIsIikKLW1vZHVsZXNldCA9IFsgX19tb2R1bGVzZXRfZmlsZV91cmksIF0K
LWlmIF9fZXh0cmFfbW9kdWxlc2V0cyAhPSBbJyddOgotICAgIG1vZHVsZXNldC5leHRlbmQoX19l
eHRyYV9tb2R1bGVzZXRzKQotCi1fX2V4dHJhX21vZHVsZXMgPSBvcy5lbnZpcm9uLmdldCgiV0VC
S0lUX0VYVFJBX01PRFVMRVMiLCAiIikuc3BsaXQoIiwiKQotbW9kdWxlcyA9IFsgJ3dlYmtpdG5p
eC10ZXN0aW5nLWRlcGVuZGVuY2llcycsIF0KLWlmIF9fZXh0cmFfbW9kdWxlcyAhPSBbJyddOgot
ICAgIG1vZHVsZXMuZXh0ZW5kKF9fZXh0cmFfbW9kdWxlcykKLQotaWYgb3MuZW52aXJvbi5oYXNf
a2V5KCdXRUJLSVRfT1VUUFVURElSJyk6Ci0gICAgY2hlY2tvdXRyb290ID0gb3MucGF0aC5hYnNw
YXRoKG9zLnBhdGguam9pbihvcy5lbnZpcm9uWydXRUJLSVRfT1VUUFVURElSJ10sICdEZXBlbmRl
bmNpZXMnLCAnU291cmNlJykpCi0gICAgcHJlZml4ID0gb3MucGF0aC5hYnNwYXRoKG9zLnBhdGgu
am9pbihvcy5lbnZpcm9uWydXRUJLSVRfT1VUUFVURElSJ10sICdEZXBlbmRlbmNpZXMnLCAnUm9v
dCcpKQotZWxzZToKLSAgICBjaGVja291dHJvb3QgPSBvcy5wYXRoLmFic3BhdGgoY29tbW9uLnRv
cF9sZXZlbF9wYXRoKCdXZWJLaXRCdWlsZCcsJ0RlcGVuZGVuY2llcycsICdTb3VyY2UnKSkKLSAg
ICBwcmVmaXggPSBvcy5wYXRoLmFic3BhdGgoY29tbW9uLnRvcF9sZXZlbF9wYXRoKCdXZWJLaXRC
dWlsZCcsJ0RlcGVuZGVuY2llcycsICdSb290JykpCi0KLW5vbm90aWZ5ID0gVHJ1ZQotbm90cmF5
aWNvbiA9IFRydWUKIGlmICdNQUtFRkxBR1MnIG5vdCBpbiBvcy5lbnZpcm9uOgogICAgIG9zLmVu
dmlyb25bJ01BS0VGTEFHUyddID0gJy1qJWQnICUgbXVsdGlwcm9jZXNzaW5nLmNwdV9jb3VudCgp
CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL2VmbC9jb21tb24ucHkgYi9Ub29scy9lZmwvY29tbW9uLnB5
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NzY1N2IzLi4wMDAwMDAwCi0tLSBhL1Rv
b2xzL2VmbC9jb21tb24ucHkKKysrIC9kZXYvbnVsbApAQCAtMSwzMSArMCwwIEBACi0jIS91c3Iv
YmluL2VudiBweXRob24KLSMgQ29weXJpZ2h0IChDKSAyMDExIElnYWxpYSBTLkwuCi0jCi0jIFRo
aXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv
b3IKLSMgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFs
IFB1YmxpYwotIyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uOyBlaXRoZXIKLSMgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBv
cHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotIwotIyBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0
ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSMgYnV0IFdJVEhPVVQgQU5Z
IFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSMgTUVSQ0hB
TlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBH
TlUKLSMgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSMK
LSMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5l
cmFsIFB1YmxpYwotIyBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdy
aXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0jIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGlu
IFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQotCi1pbXBv
cnQgb3MKLQotc2NyaXB0X2RpciA9IE5vbmUKLQotCi1kZWYgc2NyaXB0X3BhdGgoKmFyZ3MpOgot
ICAgIGdsb2JhbCBzY3JpcHRfZGlyCi0gICAgaWYgbm90IHNjcmlwdF9kaXI6Ci0gICAgICAgIHNj
cmlwdF9kaXIgPSBvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSwgJy4uJywg
J1NjcmlwdHMnKQotICAgIHJldHVybiBvcy5wYXRoLmpvaW4oKihzY3JpcHRfZGlyLCkgKyBhcmdz
KQotCi0KLWRlZiB0b3BfbGV2ZWxfcGF0aCgqYXJncyk6Ci0gICAgcmV0dXJuIG9zLnBhdGguam9p
bigqKChzY3JpcHRfcGF0aCgnLi4nLCAnLi4nKSwpICsgYXJncykpCmRpZmYgLS1naXQgYS9Ub29s
cy9qaGJ1aWxkL2poYnVpbGRyY19jb21tb24ucHkgYi9Ub29scy9qaGJ1aWxkL2poYnVpbGRyY19j
b21tb24ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWFmYzQwNgotLS0g
L2Rldi9udWxsCisrKyBiL1Rvb2xzL2poYnVpbGQvamhidWlsZHJjX2NvbW1vbi5weQpAQCAtMCww
ICsxLDY0IEBACisjIS91c3IvYmluL2VudiBweXRob24KKyMgQ29weXJpZ2h0IChDKSAyMDExIEln
YWxpYSBTLkwuCisjIENvcHlyaWdodCAoQykgMjAxMiBJbnRlbCBDb3Jwb3JhdGlvbgorIyBDb3B5
cmlnaHQgKEMpIDIwMTIsIDIwMTMgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRp
YXJ5KC1pZXMpLgorIworIyBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy
ZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisjIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl
IEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhl
IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisjIHZlcnNpb24gMiBvZiB0aGUgTGlj
ZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyMKKyMgVGhpcyBs
aWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWws
CisjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdh
cnJhbnR5IG9mCisjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRS4gIFNlZSB0aGUgR05VCisjIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZv
ciBtb3JlIGRldGFpbHMuCisjCisjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2Yg
dGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyMgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMg
bGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorIyBGb3VuZGF0aW9u
LCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjEx
MC0xMzAxICBVU0EKKworaW1wb3J0IG11bHRpcHJvY2Vzc2luZworaW1wb3J0IHN5cworaW1wb3J0
IG9zCisKK3NjcmlwdF9kaXIgPSBOb25lCisKKworZGVmIHNjcmlwdF9wYXRoKCphcmdzKToKKyAg
ICBnbG9iYWwgc2NyaXB0X2RpcgorICAgIGlmIG5vdCBzY3JpcHRfZGlyOgorICAgICAgICBzY3Jp
cHRfZGlyID0gb3MucGF0aC5qb2luKG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXyksICcuLicsICdT
Y3JpcHRzJykKKyAgICByZXR1cm4gb3MucGF0aC5qb2luKCooc2NyaXB0X2RpciwpICsgYXJncykK
KworCitkZWYgdG9wX2xldmVsX3BhdGgoKmFyZ3MpOgorICAgIHJldHVybiBvcy5wYXRoLmpvaW4o
Kigob3MucGF0aC5qb2luKG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXyksICcuLicsICcuLicpLCkg
KyBhcmdzKSkKKworCitkZWYgaW5pdChqaGJ1aWxkcmNfZ2xvYmFscywgcGxhdGZvcm0pOgorCisg
ICAgX190b29sc19kaXJlY3RvcnkgPSBvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1lKF9fZmls
ZV9fKSwgIi4uLyIsIHBsYXRmb3JtKQorICAgIHN5cy5wYXRoLmluc2VydCgwLCBfX3Rvb2xzX2Rp
cmVjdG9yeSkKKworICAgIGpoYnVpbGRyY19nbG9iYWxzWyJidWlsZF9wb2xpY3kiXSA9ICd1cGRh
dGVkJworCisgICAgX19tb2R1bGVzZXRfZmlsZV91cmkgPSAnZmlsZTovLycgKyBvcy5wYXRoLmpv
aW4oX190b29sc19kaXJlY3RvcnksICdqaGJ1aWxkLm1vZHVsZXMnKQorICAgIF9fZXh0cmFfbW9k
dWxlc2V0cyA9IG9zLmVudmlyb24uZ2V0KCJXRUJLSVRfRVhUUkFfTU9EVUxFU0VUUyIsICIiKS5z
cGxpdCgiLCIpCisgICAgamhidWlsZHJjX2dsb2JhbHNbIm1vZHVsZXNldCJdID0gW19fbW9kdWxl
c2V0X2ZpbGVfdXJpLCBdCisgICAgaWYgX19leHRyYV9tb2R1bGVzZXRzICE9IFsnJ106CisgICAg
ICAgIGpoYnVpbGRyY19nbG9iYWxzWyJtb2R1bGVzZXQiXS5leHRlbmQoX19leHRyYV9tb2R1bGVz
ZXRzKQorCisgICAgX19leHRyYV9tb2R1bGVzID0gb3MuZW52aXJvbi5nZXQoIldFQktJVF9FWFRS
QV9NT0RVTEVTIiwgIiIpLnNwbGl0KCIsIikKKyAgICBqaGJ1aWxkcmNfZ2xvYmFsc1sibW9kdWxl
cyJdID0gWyd3ZWJraXQnICsgcGxhdGZvcm0gKyAnLXRlc3RpbmctZGVwZW5kZW5jaWVzJywgXQor
ICAgIGlmIF9fZXh0cmFfbW9kdWxlcyAhPSBbJyddOgorICAgICAgICBqaGJ1aWxkcmNfZ2xvYmFs
c1sibW9kdWxlcyJdLmV4dGVuZChfX2V4dHJhX21vZHVsZXMpCisKKyAgICBpZiBvcy5lbnZpcm9u
Lmhhc19rZXkoJ1dFQktJVF9PVVRQVVRESVInKToKKyAgICAgICAgamhidWlsZHJjX2dsb2JhbHNb
ImNoZWNrb3V0cm9vdCJdID0gY2hlY2tvdXRyb290ID0gb3MucGF0aC5hYnNwYXRoKG9zLnBhdGgu
am9pbihvcy5lbnZpcm9uWydXRUJLSVRfT1VUUFVURElSJ10sICdEZXBlbmRlbmNpZXMnLCAnU291
cmNlJykpCisgICAgICAgIGpoYnVpbGRyY19nbG9iYWxzWyJwcmVmaXgiXSA9IG9zLnBhdGguYWJz
cGF0aChvcy5wYXRoLmpvaW4ob3MuZW52aXJvblsnV0VCS0lUX09VVFBVVERJUiddLCAnRGVwZW5k
ZW5jaWVzJywgJ1Jvb3QnKSkKKyAgICBlbHNlOgorICAgICAgICBqaGJ1aWxkcmNfZ2xvYmFsc1si
Y2hlY2tvdXRyb290Il0gPSBjaGVja291dHJvb3QgPSBvcy5wYXRoLmFic3BhdGgodG9wX2xldmVs
X3BhdGgoJ1dlYktpdEJ1aWxkJywgJ0RlcGVuZGVuY2llcycsICdTb3VyY2UnKSkKKyAgICAgICAg
amhidWlsZHJjX2dsb2JhbHNbInByZWZpeCJdID0gb3MucGF0aC5hYnNwYXRoKHRvcF9sZXZlbF9w
YXRoKCdXZWJLaXRCdWlsZCcsICdEZXBlbmRlbmNpZXMnLCAnUm9vdCcpKQorCisgICAgamhidWls
ZHJjX2dsb2JhbHNbIm5vbm90aWZ5Il0gPSBUcnVlCisgICAgamhidWlsZHJjX2dsb2JhbHNbIm5v
dHJheWljb24iXSA9IFRydWUKZGlmZiAtLWdpdCBhL1Rvb2xzL25peC9jb21tb24ucHkgYi9Ub29s
cy9uaXgvY29tbW9uLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwYjhiNjYyLi4w
MDAwMDAwCi0tLSBhL1Rvb2xzL25peC9jb21tb24ucHkKKysrIC9kZXYvbnVsbApAQCAtMSwzMiAr
MCwwIEBACi0jIS91c3IvYmluL2VudiBweXRob24KLSMgQ29weXJpZ2h0IChDKSAyMDExIElnYWxp
YSBTLkwuCi0jIENvcHlyaWdodCAoQykgMjAxMiwgMjAxMyBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQv
b3IgaXRzIHN1YnNpZGlhcnkoLWllcykuCi0jCi0jIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3
YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSMgbW9kaWZ5IGl0IHVuZGVyIHRo
ZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotIyBMaWNlbnNlIGFzIHB1
Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSMgdmVyc2lv
biAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9u
LgotIwotIyBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3
aWxsIGJlIHVzZWZ1bCwKLSMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g
dGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSMgTGVzc2VyIEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSMKLSMgWW91IHNob3VsZCBoYXZlIHJlY2Vp
dmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotIyBMaWNlbnNlIGFs
b25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJl
Ci0jIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJv
c3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQotCi1pbXBvcnQgb3MKLQotc2NyaXB0X2RpciA9IE5v
bmUKLQotCi1kZWYgc2NyaXB0X3BhdGgoKmFyZ3MpOgotICAgIGdsb2JhbCBzY3JpcHRfZGlyCi0g
ICAgaWYgbm90IHNjcmlwdF9kaXI6Ci0gICAgICAgIHNjcmlwdF9kaXIgPSBvcy5wYXRoLmpvaW4o
b3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSwgJy4uJywgJ1NjcmlwdHMnKQotICAgIHJldHVybiBv
cy5wYXRoLmpvaW4oKihzY3JpcHRfZGlyLCkgKyBhcmdzKQotCi0KLWRlZiB0b3BfbGV2ZWxfcGF0
aCgqYXJncyk6Ci0gICAgcmV0dXJuIG9zLnBhdGguam9pbigqKChzY3JpcHRfcGF0aCgnLi4nLCAn
Li4nKSwpICsgYXJncykpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>221141</attachid>
            <date>2014-01-14 04:47:55 -0800</date>
            <delta_ts>2014-01-15 08:03:27 -0800</delta_ts>
            <desc>patch</desc>
            <filename>np3.diff</filename>
            <type>text/plain</type>
            <size>17380</size>
            <attacher name="ezisfake">Szanka.Peter</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBlYjlk
MzMyLi4xMTVjN2FkIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzEgQEAKKzIwMTQtMDEtMTQgIFBldGVyIFN6YW5rYSAgPGg4Njgw
NjRAc3R1ZC51LXN6ZWdlZC5odT4KKworICAgICAgICBFeHRyYWN0IGNvbW1vbiBwYXJ0cyBmcm9t
IGpoYnVpbGRyYyBmaWxlcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTEyNTk4NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogZWZsL2NvbW1vbi5weTogUmVtb3ZlZC4KKyAgICAgICAgKiBlZmwvamhidWls
ZHJjOgorICAgICAgICAqIGd0ay9jb21tb24ucHk6CisgICAgICAgICogZ3RrL2ZpbmQtbWFrZS1k
aXN0LWVycm9yczoKKyAgICAgICAgKGdldF9taXNzaW5nX2hlYWRlcnMpOgorICAgICAgICAqIGd0
ay9nZW5lcmF0ZS1ndGtkb2M6CisgICAgICAgIChnZXRfd2Via2l0Ml9vcHRpb25zLnNyY19wYXRo
KToKKyAgICAgICAgKGdldF93ZWJraXQyX29wdGlvbnMuaW5qZWN0ZWRfYnVuZGxlX3NyY19wYXRo
KToKKyAgICAgICAgKGdldF93ZWJraXQyX29wdGlvbnMpOgorICAgICAgICAoZ2V0X3dlYmtpdDFf
b3B0aW9ucy5zcmNfcGF0aCk6CisgICAgICAgIChnZXRfd2Via2l0MV9vcHRpb25zKToKKyAgICAg
ICAgKGdldF93ZWJraXRkb21fb3B0aW9ucy5zcmNfcGF0aCk6CisgICAgICAgIChnZXRfd2Via2l0
ZG9tX29wdGlvbnMpOgorICAgICAgICAqIGd0ay9qaGJ1aWxkcmM6CisgICAgICAgICogamhidWls
ZC9qaGJ1aWxkcmNfY29tbW9uLnB5OiBBZGRlZC4KKyAgICAgICAgKHNjcmlwdF9wYXRoKToKKyAg
ICAgICAgKHRvcF9sZXZlbF9wYXRoKToKKyAgICAgICAgKGluaXQpOgorICAgICAgICAqIG5peC9j
b21tb24ucHk6IFJlbW92ZWQuCisgICAgICAgICogbml4L2poYnVpbGRyYzoKKwogMjAxNC0wMS0x
MyAgTHVjYXMgRm9yc2NobGVyICA8bGZvcnNjaGxlckBhcHBsZS5jb20+CiAKICAgICAgICAgVXBk
YXRlIHRoZSBMTElOVCBDTG9vcCBCb3QgYnVpbGQgaW5mcmFzdHJ1Y3R1cmUKZGlmZiAtLWdpdCBh
L1Rvb2xzL2VmbC9qaGJ1aWxkcmMgYi9Ub29scy9lZmwvamhidWlsZHJjCmluZGV4IDc3ZGFhZTku
Ljc0OGM5MTUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL2VmbC9qaGJ1aWxkcmMKKysrIGIvVG9vbHMvZWZs
L2poYnVpbGRyYwpAQCAtMTYsMzcgKzE2LDkgQEAKICMgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMg
bGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQogIyBGb3VuZGF0aW9u
LCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjEx
MC0xMzAxICBVU0EKIAotaW1wb3J0IG11bHRpcHJvY2Vzc2luZwotaW1wb3J0IHN5cwotCi1fX2Vm
bF90b29sc19kaXJlY3RvcnkgPSBvcy5wYXRoLmFic3BhdGgob3MucGF0aC5kaXJuYW1lKF9fZmls
ZV9fKSkKLXN5cy5wYXRoID0gW19fZWZsX3Rvb2xzX2RpcmVjdG9yeV0gKyBzeXMucGF0aAotaW1w
b3J0IGNvbW1vbgotCi1idWlsZF9wb2xpY3kgPSAndXBkYXRlZCcKLQotIyBGSVhNRTogbW92ZSBz
aGFyZWQgcGFydHMgaW50byAuLi9qaGJ1aWxkIGZvbGRlci4KLQotX19tb2R1bGVzZXRfZmlsZV91
cmkgPSAnZmlsZTovLycgKyBvcy5wYXRoLmpvaW4oX19lZmxfdG9vbHNfZGlyZWN0b3J5LCAnamhi
dWlsZC5tb2R1bGVzJykKLV9fZXh0cmFfbW9kdWxlc2V0cyA9IG9zLmVudmlyb24uZ2V0KCJXRUJL
SVRfRVhUUkFfTU9EVUxFU0VUUyIsICIiKS5zcGxpdCgiLCIpCi1tb2R1bGVzZXQgPSBbIF9fbW9k
dWxlc2V0X2ZpbGVfdXJpLCBdCi1pZiBfX2V4dHJhX21vZHVsZXNldHMgIT0gWycnXToKLSAgICBt
b2R1bGVzZXQuZXh0ZW5kKF9fZXh0cmFfbW9kdWxlc2V0cykKLQotX19leHRyYV9tb2R1bGVzID0g
b3MuZW52aXJvbi5nZXQoIldFQktJVF9FWFRSQV9NT0RVTEVTIiwgIiIpLnNwbGl0KCIsIikKLW1v
ZHVsZXMgPSBbICd3ZWJraXRlZmwtdGVzdGluZy1kZXBlbmRlbmNpZXMnLCBdCi1pZiBfX2V4dHJh
X21vZHVsZXMgIT0gWycnXToKLSAgICBtb2R1bGVzLmV4dGVuZChfX2V4dHJhX21vZHVsZXMpCi0K
LWlmIG9zLmVudmlyb24uaGFzX2tleSgnV0VCS0lUX09VVFBVVERJUicpOgotICAgIGNoZWNrb3V0
cm9vdCA9IG9zLnBhdGguYWJzcGF0aChvcy5wYXRoLmpvaW4ob3MuZW52aXJvblsnV0VCS0lUX09V
VFBVVERJUiddLCAnRGVwZW5kZW5jaWVzJywgJ1NvdXJjZScpKQotICAgIHByZWZpeCA9IG9zLnBh
dGguYWJzcGF0aChvcy5wYXRoLmpvaW4ob3MuZW52aXJvblsnV0VCS0lUX09VVFBVVERJUiddLCAn
RGVwZW5kZW5jaWVzJywgJ1Jvb3QnKSkKLWVsc2U6Ci0gICAgY2hlY2tvdXRyb290ID0gb3MucGF0
aC5hYnNwYXRoKGNvbW1vbi50b3BfbGV2ZWxfcGF0aCgnV2ViS2l0QnVpbGQnLCdEZXBlbmRlbmNp
ZXMnLCAnU291cmNlJykpCi0gICAgcHJlZml4ID0gb3MucGF0aC5hYnNwYXRoKGNvbW1vbi50b3Bf
bGV2ZWxfcGF0aCgnV2ViS2l0QnVpbGQnLCdEZXBlbmRlbmNpZXMnLCAnUm9vdCcpKQotCi1ub25v
dGlmeSA9IFRydWUKLW5vdHJheWljb24gPSBUcnVlCitzeXMucGF0aC5pbnNlcnQoMCwgb3MucGF0
aC5qb2luKG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXyksICIuLi9qaGJ1aWxkIikgKQoraW1wb3J0
IGpoYnVpbGRyY19jb21tb24KK2poYnVpbGRyY19jb21tb24uaW5pdChnbG9iYWxzKCksICJlZmwi
KQogCiBpZiAnTlVNQkVSX09GX1BST0NFU1NPUlMnIGluIG9zLmVudmlyb246CiAgICAgam9icyA9
IG9zLmVudmlyb25bJ05VTUJFUl9PRl9QUk9DRVNTT1JTJ10KZGlmZiAtLWdpdCBhL1Rvb2xzL2d0
ay9jb21tb24ucHkgYi9Ub29scy9ndGsvY29tbW9uLnB5CmluZGV4IDAyZGI5MzIuLmRmMmY4MDYg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL2d0ay9jb21tb24ucHkKKysrIGIvVG9vbHMvZ3RrL2NvbW1vbi5w
eQpAQCAtMjEsNyArMjEsNiBAQCBpbXBvcnQgc2VsZWN0CiBpbXBvcnQgc3VicHJvY2VzcwogaW1w
b3J0IHN5cwogCi1zY3JpcHRfZGlyID0gTm9uZQogYnVpbGRfZGlyID0gTm9uZQogbGlicmFyeV9i
dWlsZF9kaXIgPSBOb25lCiB0ZXN0c19saWJyYXJ5X2J1aWxkX2RpciA9IE5vbmUKQEAgLTcxLDE3
ICs3MCw2IEBAIGRlZiBiaW5hcnlfYnVpbGRfcGF0aCgqYXJncyk6CiAgICAgcmV0dXJuIGxpYnJh
cnlfYnVpbGRfZGlyCiAKIAotZGVmIHNjcmlwdF9wYXRoKCphcmdzKToKLSAgICBnbG9iYWwgc2Ny
aXB0X2RpcgotICAgIGlmIG5vdCBzY3JpcHRfZGlyOgotICAgICAgICBzY3JpcHRfZGlyID0gb3Mu
cGF0aC5qb2luKG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXyksICcuLicsICdTY3JpcHRzJykKLSAg
ICByZXR1cm4gb3MucGF0aC5qb2luKCooc2NyaXB0X2RpciwpICsgYXJncykKLQotCi1kZWYgdG9w
X2xldmVsX3BhdGgoKmFyZ3MpOgotICAgIHJldHVybiBvcy5wYXRoLmpvaW4oKigob3MucGF0aC5q
b2luKG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXyksICcuLicsICcuLicpLCkgKyBhcmdzKSkKLQot
CiBkZWYgZ2V0X2J1aWxkX3BhdGgoZmF0YWw9VHJ1ZSk6CiAgICAgZ2xvYmFsIGJ1aWxkX2Rpcgog
ICAgIGlmIGJ1aWxkX2RpcjoKZGlmZiAtLWdpdCBhL1Rvb2xzL2d0ay9maW5kLW1ha2UtZGlzdC1l
cnJvcnMgYi9Ub29scy9ndGsvZmluZC1tYWtlLWRpc3QtZXJyb3JzCmluZGV4IDg4MGM3ODAuLjk4
MTkwNTUgMTAwNzU1Ci0tLSBhL1Rvb2xzL2d0ay9maW5kLW1ha2UtZGlzdC1lcnJvcnMKKysrIGIv
VG9vbHMvZ3RrL2ZpbmQtbWFrZS1kaXN0LWVycm9ycwpAQCAtMjAsNiArMjAsOSBAQCBpbXBvcnQg
b3MKIGltcG9ydCBzdWJwcm9jZXNzCiBpbXBvcnQgc3lzCiAKK3N5cy5wYXRoLmluc2VydCgwLCBv
cy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSwgIi4uL2poYnVpbGQiKSApCitp
bXBvcnQgamhidWlsZHJjX2NvbW1vbgorCiBkZWYgaXNfc291cmNlX2ZpbGVfbGlzdGluZyhsaW5l
KToKICAgICByZXR1cm4gbGluZS5zdHJpcCgpLnN0YXJ0c3dpdGgoJ1NvdXJjZScpCiAKQEAgLTg2
LDcgKzg5LDcgQEAgZGVmIGdldF91bmxpc3RlZF9oZWFkZXJzKGxpc3RlZF9tYWtlZmlsZV9oZWFk
ZXJzKToKIGRlZiBnZXRfbWlzc2luZ19oZWFkZXJzKGxpc3RlZF9tYWtlZmlsZV9oZWFkZXJzKToK
ICAgICBtaXNzaW5nID0gc2V0KCkKICAgICBmb3IgaGVhZGVyIGluIGxpc3RlZF9tYWtlZmlsZV9o
ZWFkZXJzOgotICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMoY29tbW9uLnRvcF9sZXZlbF9w
YXRoKGhlYWRlcikpOgorICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMoamhidWlsZHJjX2Nv
bW1vbi50b3BfbGV2ZWxfcGF0aChoZWFkZXIpKToKICAgICAgICAgICAgIG1pc3NpbmcuYWRkKGhl
YWRlcikKICAgICByZXR1cm4gbWlzc2luZwogCmRpZmYgLS1naXQgYS9Ub29scy9ndGsvZ2VuZXJh
dGUtZ3RrZG9jIGIvVG9vbHMvZ3RrL2dlbmVyYXRlLWd0a2RvYwppbmRleCBjZTIyMGE2Li5kNTRl
NWVmIDEwMDc1NQotLS0gYS9Ub29scy9ndGsvZ2VuZXJhdGUtZ3RrZG9jCisrKyBiL1Rvb2xzL2d0
ay9nZW5lcmF0ZS1ndGtkb2MKQEAgLTIyLDYgKzIyLDkgQEAgaW1wb3J0IGxvZ2dpbmcKIGltcG9y
dCBvcy5wYXRoCiBpbXBvcnQgc3lzCiAKK3N5cy5wYXRoLmluc2VydCgwLCBvcy5wYXRoLmpvaW4o
b3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSwgIi4uL2poYnVpbGQiKSApCitpbXBvcnQgamhidWls
ZHJjX2NvbW1vbgorCiBkZWYgY29uZmlndXJlX2xvZ2dpbmcoKToKICAgICBsZXZlbCA9IGxvZ2dp
bmcuREVCVUcgaWYgJy12JyBpbiBzeXMuYXJndiBlbHNlIGxvZ2dpbmcuSU5GTwogICAgIGxvZ2dl
ciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCdndGtkb2MnKQpAQCAtNzYsOCArNzksOCBAQCBkZWYgd2Vi
a2l0ZG9tX2RvY3NfaHRtbF9wYXRoKCk6CiAgICAgcmV0dXJuIGNvbW1vbi5idWlsZF9wYXRoKCdE
b2N1bWVudGF0aW9uJywgJ3dlYmtpdGRvbWd0aycsICdodG1sJykKIAogZGVmIGdldF93ZWJraXQy
X29wdGlvbnMoKToKLSAgICBhcGlfcGF0aCA9IGNvbW1vbi50b3BfbGV2ZWxfcGF0aCgnU291cmNl
JywgJ1dlYktpdDInLCAnVUlQcm9jZXNzJywgJ0FQSScsICdndGsnKQotICAgIGluamVjdGVkX2J1
bmRsZV9hcGlfcGF0aCA9IGNvbW1vbi50b3BfbGV2ZWxfcGF0aCgnU291cmNlJywgJ1dlYktpdDIn
LCAnV2ViUHJvY2VzcycsICdJbmplY3RlZEJ1bmRsZScsICdBUEknLCAnZ3RrJykKKyAgICBhcGlf
cGF0aCA9IGpoYnVpbGRyY19jb21tb24udG9wX2xldmVsX3BhdGgoJ1NvdXJjZScsICdXZWJLaXQy
JywgJ1VJUHJvY2VzcycsICdBUEknLCAnZ3RrJykKKyAgICBpbmplY3RlZF9idW5kbGVfYXBpX3Bh
dGggPSBqaGJ1aWxkcmNfY29tbW9uLnRvcF9sZXZlbF9wYXRoKCdTb3VyY2UnLCAnV2ViS2l0Mics
ICdXZWJQcm9jZXNzJywgJ0luamVjdGVkQnVuZGxlJywgJ0FQSScsICdndGsnKQogCiAgICAgaWYg
Y29tbW9uLmlzX2NtYWtlX2J1aWxkKCk6CiAgICAgICAgIGdlbmVyYXRlZF9hcGlfcGF0aCA9IGNv
bW1vbi5idWlsZF9wYXRoKCdEZXJpdmVkU291cmNlcycsICd3ZWJraXQyZ3RrJywgJ3dlYmtpdDIn
KQpAQCAtMTAxLDcgKzEwNCw3IEBAIGRlZiBnZXRfd2Via2l0Ml9vcHRpb25zKCk6CiAgICAgICAg
ICdzb3VyY2VfZGlycycgOiBbc3JjX3BhdGgoKSwgZ2VuZXJhdGVkX2FwaV9wYXRoLCBpbmplY3Rl
ZF9idW5kbGVfYXBpX3BhdGhdLAogICAgICAgICAnY2ZsYWdzJyA6CiAgICAgICAgICAgICAjIENv
bW1vbiBwYXRocwotICAgICAgICAgICAgJyAtSScgKyBjb21tb24udG9wX2xldmVsX3BhdGgoJ1Nv
dXJjZScpICsgXAorICAgICAgICAgICAgJyAtSScgKyBqaGJ1aWxkcmNfY29tbW9uLnRvcF9sZXZl
bF9wYXRoKCdTb3VyY2UnKSArIFwKICAgICAgICAgICAgICcgLUknICsgYXBpX3BhdGggKyBcCiAg
ICAgICAgICAgICAjIEF1dG90b29scyBwYXRocwogICAgICAgICAgICAgJyAtSScgKyBjb21tb24u
YnVpbGRfcGF0aCgnRGVyaXZlZFNvdXJjZXMnLCAnd2Via2l0Mmd0aycsICdpbmNsdWRlJykgKyBc
CkBAIC0xMjcsNyArMTMwLDcgQEAgZGVmIGdldF93ZWJraXQyX29wdGlvbnMoKToKIAogZGVmIGdl
dF93ZWJraXQxX29wdGlvbnMoZ3RrX3ZlcnNpb24pOgogICAgIGRlZiBzcmNfcGF0aCgqYXJncyk6
Ci0gICAgICAgIHJldHVybiBjb21tb24udG9wX2xldmVsX3BhdGgoKigoJ1NvdXJjZScsICdXZWJL
aXQnLCAnZ3RrJykgKyBhcmdzKSkKKyAgICAgICAgcmV0dXJuIGpoYnVpbGRyY19jb21tb24udG9w
X2xldmVsX3BhdGgoKigoJ1NvdXJjZScsICdXZWJLaXQnLCAnZ3RrJykgKyBhcmdzKSkKIAogICAg
IGRlZiB3ZWJraXR2ZXJzaW9uaF9wYXRoKCk6CiAgICAgICAgIGlmIGNvbW1vbi5pc19jbWFrZV9i
dWlsZCgpOgpAQCAtMTU1LDggKzE1OCw4IEBAIGRlZiBnZXRfd2Via2l0MV9vcHRpb25zKGd0a192
ZXJzaW9uKToKICAgICAgICAgJ2NmbGFncycgOiAnIC1JJyArIGNvbW1vbi5idWlsZF9wYXRoKCdX
ZWJLaXQnLCAnZ3RrJykgKyBcCiAgICAgICAgICAgICAgICAgICAgJyAtSScgKyBjb21tb24uYnVp
bGRfcGF0aCgnRGVyaXZlZFNvdXJjZXMnKSArIFwKICAgICAgICAgICAgICAgICAgICAnIC1JJyAr
IHNyY19wYXRoKCkgKyBcCi0gICAgICAgICAgICAgICAgICAgJyAtSScgKyBjb21tb24udG9wX2xl
dmVsX3BhdGgoJ1NvdXJjZScpICsgXAotICAgICAgICAgICAgICAgICAgICcgLUknICsgY29tbW9u
LnRvcF9sZXZlbF9wYXRoKCdTb3VyY2UnLCAnSmF2YVNjcmlwdENvcmUnLCAnRm9yd2FyZGluZ0hl
YWRlcnMnKSwKKyAgICAgICAgICAgICAgICAgICAnIC1JJyArIGpoYnVpbGRyY19jb21tb24udG9w
X2xldmVsX3BhdGgoJ1NvdXJjZScpICsgXAorICAgICAgICAgICAgICAgICAgICcgLUknICsgamhi
dWlsZHJjX2NvbW1vbi50b3BfbGV2ZWxfcGF0aCgnU291cmNlJywgJ0phdmFTY3JpcHRDb3JlJywg
J0ZvcndhcmRpbmdIZWFkZXJzJyksCiAgICAgICAgICdjcm9zc19yZWZlcmVuY2VfZGVwcycgOiBn
ZXRfZ3RrZG9jX21vZHVsZV9wYXRocyh4cmVmX2RlcHMpICsgW3dlYmtpdGRvbV9kb2NzX2h0bWxf
cGF0aCgpXSwKICAgICAgICAgJ2lnbm9yZWRfZmlsZXMnOiBnbG9iLmdsb2Ioc3JjX3BhdGgoJ3dl
YmtpdCcsICcqcHJpdmF0ZS4qJykpICsgXAogICAgICAgICAgICAgICAgICAgICAgICAgIGdsb2Iu
Z2xvYihzcmNfcGF0aCgnd2Via2l0JywgJ3dlYmtpdGF1dGhlbnRpY2F0aW9uZGlhbG9nLionKSkg
KyBcCkBAIC0xNjgsNyArMTcxLDcgQEAgZGVmIGdldF93ZWJraXRkb21fb3B0aW9ucygpOgogICAg
IGRlZiBkZXJpdmVkX3NvdXJjZXNfcGF0aCgqYXJncyk6CiAgICAgICAgIHJldHVybiBjb21tb24u
YnVpbGRfcGF0aCgqKCgnRGVyaXZlZFNvdXJjZXMnLCAnd2Via2l0ZG9tJykgKyBhcmdzKSkKICAg
ICBkZWYgc3JjX3BhdGgoKmFyZ3MpOgotICAgICAgICByZXR1cm4gY29tbW9uLnRvcF9sZXZlbF9w
YXRoKCooKCdTb3VyY2UnLCAnV2ViQ29yZScsICdiaW5kaW5ncycsICdnb2JqZWN0JykgKyBhcmdz
KSkKKyAgICAgICAgcmV0dXJuIGpoYnVpbGRyY19jb21tb24udG9wX2xldmVsX3BhdGgoKigoJ1Nv
dXJjZScsICdXZWJDb3JlJywgJ2JpbmRpbmdzJywgJ2dvYmplY3QnKSArIGFyZ3MpKQogCiAgICAg
eHJlZl9kZXBzID0geyAnZ2xpYi0yLjAnIDogWydnbGliJywgJ2dvYmplY3QnLCAnZ2lvJ10gfQog
CkBAIC0xODEsNyArMTg0LDcgQEAgZGVmIGdldF93ZWJraXRkb21fb3B0aW9ucygpOgogICAgICAg
ICAnc291cmNlX2RpcnMnIDogW2Rlcml2ZWRfc291cmNlc19wYXRoKCldLAogICAgICAgICAnY2Zs
YWdzJyA6ICcgLUknICsgZGVyaXZlZF9zb3VyY2VzX3BhdGgoKSArIFwKICAgICAgICAgICAgICAg
ICAgICAnIC1JJyArIHNyY19wYXRoKCkgKyBcCi0gICAgICAgICAgICAgICAgICAgJyAtSScgKyBj
b21tb24udG9wX2xldmVsX3BhdGgoJ1NvdXJjZScpLAorICAgICAgICAgICAgICAgICAgICcgLUkn
ICsgamhidWlsZHJjX2NvbW1vbi50b3BfbGV2ZWxfcGF0aCgnU291cmNlJyksCiAgICAgICAgICdj
cm9zc19yZWZlcmVuY2VfZGVwcycgOiBnZXRfZ3RrZG9jX21vZHVsZV9wYXRocyh4cmVmX2RlcHMp
LAogICAgICAgICAnaWdub3JlZF9maWxlcyc6IGdsb2IuZ2xvYihkZXJpdmVkX3NvdXJjZXNfcGF0
aCgnKlByaXZhdGUuaCcpKQogICAgIH0pCmRpZmYgLS1naXQgYS9Ub29scy9ndGsvamhidWlsZHJj
IGIvVG9vbHMvZ3RrL2poYnVpbGRyYwppbmRleCA2OWY5NDU3Li4wNDE4NjVhIDEwMDY0NAotLS0g
YS9Ub29scy9ndGsvamhidWlsZHJjCisrKyBiL1Rvb2xzL2d0ay9qaGJ1aWxkcmMKQEAgLTE1LDM2
ICsxNSwxNCBAQAogIyBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdy
aXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiAjIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGlu
IFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQogCi1pbXBv
cnQgbXVsdGlwcm9jZXNzaW5nCi1pbXBvcnQgc3lzCitzeXMucGF0aC5pbnNlcnQoMCwgb3MucGF0
aC5qb2luKG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXyksICIuLi9qaGJ1aWxkIikgKQoraW1wb3J0
IGpoYnVpbGRyY19jb21tb24KK2poYnVpbGRyY19jb21tb24uaW5pdChnbG9iYWxzKCksICJndGsi
KQogCiBfX2d0a190b29sc19kaXJlY3RvcnkgPSBvcy5wYXRoLmFic3BhdGgob3MucGF0aC5kaXJu
YW1lKF9fZmlsZV9fKSkKIHN5cy5wYXRoID0gW19fZ3RrX3Rvb2xzX2RpcmVjdG9yeV0gKyBzeXMu
cGF0aAogaW1wb3J0IGNvbW1vbgogCi1idWlsZF9wb2xpY3kgPSAndXBkYXRlZCcKLQotX19tb2R1
bGVzZXRfZmlsZV91cmkgPSAnZmlsZTovLycgKyBvcy5wYXRoLmpvaW4oX19ndGtfdG9vbHNfZGly
ZWN0b3J5LCAnamhidWlsZC5tb2R1bGVzJykKLV9fZXh0cmFfbW9kdWxlc2V0cyA9IG9zLmVudmly
b24uZ2V0KCJXRUJLSVRfRVhUUkFfTU9EVUxFU0VUUyIsICIiKS5zcGxpdCgiLCIpCi1tb2R1bGVz
ZXQgPSBbIF9fbW9kdWxlc2V0X2ZpbGVfdXJpLCBdCi1pZiBfX2V4dHJhX21vZHVsZXNldHMgIT0g
WycnXToKLSAgICBtb2R1bGVzZXQuZXh0ZW5kKF9fZXh0cmFfbW9kdWxlc2V0cykKLQotX19leHRy
YV9tb2R1bGVzID0gb3MuZW52aXJvbi5nZXQoIldFQktJVF9FWFRSQV9NT0RVTEVTIiwgIiIpLnNw
bGl0KCIsIikKLW1vZHVsZXMgPSBbICd3ZWJraXRndGstdGVzdGluZy1kZXBlbmRlbmNpZXMnLCBd
Ci1pZiBfX2V4dHJhX21vZHVsZXMgIT0gWycnXToKLSAgICBtb2R1bGVzLmV4dGVuZChfX2V4dHJh
X21vZHVsZXMpCi0KLWlmIG9zLmVudmlyb24uaGFzX2tleSgnV0VCS0lUX09VVFBVVERJUicpOgot
ICAgIGNoZWNrb3V0cm9vdCA9IG9zLnBhdGguYWJzcGF0aChvcy5wYXRoLmpvaW4ob3MuZW52aXJv
blsnV0VCS0lUX09VVFBVVERJUiddLCAnRGVwZW5kZW5jaWVzJywgJ1NvdXJjZScpKQotICAgIHBy
ZWZpeCA9IG9zLnBhdGguYWJzcGF0aChvcy5wYXRoLmpvaW4ob3MuZW52aXJvblsnV0VCS0lUX09V
VFBVVERJUiddLCAnRGVwZW5kZW5jaWVzJywgJ1Jvb3QnKSkKLWVsc2U6Ci0gICAgY2hlY2tvdXRy
b290ID0gb3MucGF0aC5hYnNwYXRoKGNvbW1vbi50b3BfbGV2ZWxfcGF0aCgnV2ViS2l0QnVpbGQn
LCdEZXBlbmRlbmNpZXMnLCAnU291cmNlJykpCi0gICAgcHJlZml4ID0gb3MucGF0aC5hYnNwYXRo
KGNvbW1vbi50b3BfbGV2ZWxfcGF0aCgnV2ViS2l0QnVpbGQnLCdEZXBlbmRlbmNpZXMnLCAnUm9v
dCcpKQotCi1ub25vdGlmeSA9IFRydWUKLW5vdHJheWljb24gPSBUcnVlCi0KIGlmICdOVU1CRVJf
T0ZfUFJPQ0VTU09SUycgaW4gb3MuZW52aXJvbjoKICAgICBqb2JzID0gb3MuZW52aXJvblsnTlVN
QkVSX09GX1BST0NFU1NPUlMnXQogCmRpZmYgLS1naXQgYS9Ub29scy9uaXgvamhidWlsZHJjIGIv
VG9vbHMvbml4L2poYnVpbGRyYwppbmRleCAzNTU1MmNhLi5iNzU3ODNmIDEwMDY0NAotLS0gYS9U
b29scy9uaXgvamhidWlsZHJjCisrKyBiL1Rvb2xzL25peC9qaGJ1aWxkcmMKQEAgLTE3LDM4ICsx
NywxMCBAQAogIyBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRl
IHRvIHRoZSBGcmVlIFNvZnR3YXJlCiAjIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0
cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQogCi1pbXBvcnQg
bXVsdGlwcm9jZXNzaW5nCi1pbXBvcnQgc3lzCi1pbXBvcnQgb3MKK3N5cy5wYXRoLmluc2VydCgw
LCBvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSwgIi4uL2poYnVpbGQiKSAp
CitpbXBvcnQgamhidWlsZHJjX2NvbW1vbgoramhidWlsZHJjX2NvbW1vbi5pbml0KGdsb2JhbHMo
KSwgIm5peCIpCiAKLV9fbml4X3Rvb2xzX2RpcmVjdG9yeSA9IG9zLnBhdGguYWJzcGF0aChvcy5w
YXRoLmRpcm5hbWUoX19maWxlX18pKQotc3lzLnBhdGggPSBbX19uaXhfdG9vbHNfZGlyZWN0b3J5
XSArIHN5cy5wYXRoCi1pbXBvcnQgY29tbW9uCi0KLWJ1aWxkX3BvbGljeSA9ICd1cGRhdGVkJwot
Ci0jIEZJWE1FOiBtb3ZlIHNoYXJlZCBwYXJ0cyBpbnRvIC4uL2poYnVpbGQgZm9sZGVyLgotCi1f
X21vZHVsZXNldF9maWxlX3VyaSA9ICdmaWxlOi8vJyArIG9zLnBhdGguam9pbihfX25peF90b29s
c19kaXJlY3RvcnksICdqaGJ1aWxkLm1vZHVsZXMnKQotX19leHRyYV9tb2R1bGVzZXRzID0gb3Mu
ZW52aXJvbi5nZXQoIldFQktJVF9FWFRSQV9NT0RVTEVTRVRTIiwgIiIpLnNwbGl0KCIsIikKLW1v
ZHVsZXNldCA9IFsgX19tb2R1bGVzZXRfZmlsZV91cmksIF0KLWlmIF9fZXh0cmFfbW9kdWxlc2V0
cyAhPSBbJyddOgotICAgIG1vZHVsZXNldC5leHRlbmQoX19leHRyYV9tb2R1bGVzZXRzKQotCi1f
X2V4dHJhX21vZHVsZXMgPSBvcy5lbnZpcm9uLmdldCgiV0VCS0lUX0VYVFJBX01PRFVMRVMiLCAi
Iikuc3BsaXQoIiwiKQotbW9kdWxlcyA9IFsgJ3dlYmtpdG5peC10ZXN0aW5nLWRlcGVuZGVuY2ll
cycsIF0KLWlmIF9fZXh0cmFfbW9kdWxlcyAhPSBbJyddOgotICAgIG1vZHVsZXMuZXh0ZW5kKF9f
ZXh0cmFfbW9kdWxlcykKLQotaWYgb3MuZW52aXJvbi5oYXNfa2V5KCdXRUJLSVRfT1VUUFVURElS
Jyk6Ci0gICAgY2hlY2tvdXRyb290ID0gb3MucGF0aC5hYnNwYXRoKG9zLnBhdGguam9pbihvcy5l
bnZpcm9uWydXRUJLSVRfT1VUUFVURElSJ10sICdEZXBlbmRlbmNpZXMnLCAnU291cmNlJykpCi0g
ICAgcHJlZml4ID0gb3MucGF0aC5hYnNwYXRoKG9zLnBhdGguam9pbihvcy5lbnZpcm9uWydXRUJL
SVRfT1VUUFVURElSJ10sICdEZXBlbmRlbmNpZXMnLCAnUm9vdCcpKQotZWxzZToKLSAgICBjaGVj
a291dHJvb3QgPSBvcy5wYXRoLmFic3BhdGgoY29tbW9uLnRvcF9sZXZlbF9wYXRoKCdXZWJLaXRC
dWlsZCcsJ0RlcGVuZGVuY2llcycsICdTb3VyY2UnKSkKLSAgICBwcmVmaXggPSBvcy5wYXRoLmFi
c3BhdGgoY29tbW9uLnRvcF9sZXZlbF9wYXRoKCdXZWJLaXRCdWlsZCcsJ0RlcGVuZGVuY2llcycs
ICdSb290JykpCi0KLW5vbm90aWZ5ID0gVHJ1ZQotbm90cmF5aWNvbiA9IFRydWUKIGlmICdNQUtF
RkxBR1MnIG5vdCBpbiBvcy5lbnZpcm9uOgogICAgIG9zLmVudmlyb25bJ01BS0VGTEFHUyddID0g
Jy1qJWQnICUgbXVsdGlwcm9jZXNzaW5nLmNwdV9jb3VudCgpCiAKZGlmZiAtLWdpdCBhL1Rvb2xz
L2VmbC9jb21tb24ucHkgYi9Ub29scy9lZmwvY29tbW9uLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCA3NzY1N2IzLi4wMDAwMDAwCi0tLSBhL1Rvb2xzL2VmbC9jb21tb24ucHkKKysr
IC9kZXYvbnVsbApAQCAtMSwzMSArMCwwIEBACi0jIS91c3IvYmluL2VudiBweXRob24KLSMgQ29w
eXJpZ2h0IChDKSAyMDExIElnYWxpYSBTLkwuCi0jCi0jIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNv
ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSMgbW9kaWZ5IGl0IHVuZGVy
IHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotIyBMaWNlbnNlIGFz
IHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSMgdmVy
c2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJz
aW9uLgotIwotIyBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp
dCB3aWxsIGJlIHVzZWZ1bCwKLSMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2
ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSMgTGVzc2VyIEdlbmVyYWwg
UHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSMKLSMgWW91IHNob3VsZCBoYXZlIHJl
Y2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotIyBMaWNlbnNl
IGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3
YXJlCi0jIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3Is
IEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQotCi1pbXBvcnQgb3MKLQotc2NyaXB0X2RpciA9
IE5vbmUKLQotCi1kZWYgc2NyaXB0X3BhdGgoKmFyZ3MpOgotICAgIGdsb2JhbCBzY3JpcHRfZGly
Ci0gICAgaWYgbm90IHNjcmlwdF9kaXI6Ci0gICAgICAgIHNjcmlwdF9kaXIgPSBvcy5wYXRoLmpv
aW4ob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSwgJy4uJywgJ1NjcmlwdHMnKQotICAgIHJldHVy
biBvcy5wYXRoLmpvaW4oKihzY3JpcHRfZGlyLCkgKyBhcmdzKQotCi0KLWRlZiB0b3BfbGV2ZWxf
cGF0aCgqYXJncyk6Ci0gICAgcmV0dXJuIG9zLnBhdGguam9pbigqKChzY3JpcHRfcGF0aCgnLi4n
LCAnLi4nKSwpICsgYXJncykpCmRpZmYgLS1naXQgYS9Ub29scy9qaGJ1aWxkL2poYnVpbGRyY19j
b21tb24ucHkgYi9Ub29scy9qaGJ1aWxkL2poYnVpbGRyY19jb21tb24ucHkKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWFmYzQwNgotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xz
L2poYnVpbGQvamhidWlsZHJjX2NvbW1vbi5weQpAQCAtMCwwICsxLDY0IEBACisjIS91c3IvYmlu
L2VudiBweXRob24KKyMgQ29weXJpZ2h0IChDKSAyMDExIElnYWxpYSBTLkwuCisjIENvcHlyaWdo
dCAoQykgMjAxMiBJbnRlbCBDb3Jwb3JhdGlvbgorIyBDb3B5cmlnaHQgKEMpIDIwMTIsIDIwMTMg
Tm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpLgorIworIyBUaGlz
IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
CisjIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQ
dWJsaWMKKyMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbjsgZWl0aGVyCisjIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0
aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyMKKyMgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVk
IGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisjIGJ1dCBXSVRIT1VUIEFOWSBX
QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisjIE1FUkNIQU5U
QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05V
CisjIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisjCisj
IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJh
bCBQdWJsaWMKKyMgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0
ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorIyBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBT
dHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxICBVU0EKKworaW1wb3J0
IG11bHRpcHJvY2Vzc2luZworaW1wb3J0IHN5cworaW1wb3J0IG9zCisKK3NjcmlwdF9kaXIgPSBO
b25lCisKKworZGVmIHNjcmlwdF9wYXRoKCphcmdzKToKKyAgICBnbG9iYWwgc2NyaXB0X2Rpcgor
ICAgIGlmIG5vdCBzY3JpcHRfZGlyOgorICAgICAgICBzY3JpcHRfZGlyID0gb3MucGF0aC5qb2lu
KG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXyksICcuLicsICdTY3JpcHRzJykKKyAgICByZXR1cm4g
b3MucGF0aC5qb2luKCooc2NyaXB0X2RpciwpICsgYXJncykKKworCitkZWYgdG9wX2xldmVsX3Bh
dGgoKmFyZ3MpOgorICAgIHJldHVybiBvcy5wYXRoLmpvaW4oKigob3MucGF0aC5qb2luKG9zLnBh
dGguZGlybmFtZShfX2ZpbGVfXyksICcuLicsICcuLicpLCkgKyBhcmdzKSkKKworCitkZWYgaW5p
dChqaGJ1aWxkcmNfZ2xvYmFscywgcGxhdGZvcm0pOgorCisgICAgX190b29sc19kaXJlY3Rvcnkg
PSBvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSwgIi4uLyIsIHBsYXRmb3Jt
KQorICAgIHN5cy5wYXRoLmluc2VydCgwLCBfX3Rvb2xzX2RpcmVjdG9yeSkKKworICAgIGpoYnVp
bGRyY19nbG9iYWxzWyJidWlsZF9wb2xpY3kiXSA9ICd1cGRhdGVkJworCisgICAgX19tb2R1bGVz
ZXRfZmlsZV91cmkgPSAnZmlsZTovLycgKyBvcy5wYXRoLmpvaW4oX190b29sc19kaXJlY3Rvcnks
ICdqaGJ1aWxkLm1vZHVsZXMnKQorICAgIF9fZXh0cmFfbW9kdWxlc2V0cyA9IG9zLmVudmlyb24u
Z2V0KCJXRUJLSVRfRVhUUkFfTU9EVUxFU0VUUyIsICIiKS5zcGxpdCgiLCIpCisgICAgamhidWls
ZHJjX2dsb2JhbHNbIm1vZHVsZXNldCJdID0gW19fbW9kdWxlc2V0X2ZpbGVfdXJpLCBdCisgICAg
aWYgX19leHRyYV9tb2R1bGVzZXRzICE9IFsnJ106CisgICAgICAgIGpoYnVpbGRyY19nbG9iYWxz
WyJtb2R1bGVzZXQiXS5leHRlbmQoX19leHRyYV9tb2R1bGVzZXRzKQorCisgICAgX19leHRyYV9t
b2R1bGVzID0gb3MuZW52aXJvbi5nZXQoIldFQktJVF9FWFRSQV9NT0RVTEVTIiwgIiIpLnNwbGl0
KCIsIikKKyAgICBqaGJ1aWxkcmNfZ2xvYmFsc1sibW9kdWxlcyJdID0gWyd3ZWJraXQnICsgcGxh
dGZvcm0gKyAnLXRlc3RpbmctZGVwZW5kZW5jaWVzJywgXQorICAgIGlmIF9fZXh0cmFfbW9kdWxl
cyAhPSBbJyddOgorICAgICAgICBqaGJ1aWxkcmNfZ2xvYmFsc1sibW9kdWxlcyJdLmV4dGVuZChf
X2V4dHJhX21vZHVsZXMpCisKKyAgICBpZiBvcy5lbnZpcm9uLmhhc19rZXkoJ1dFQktJVF9PVVRQ
VVRESVInKToKKyAgICAgICAgamhidWlsZHJjX2dsb2JhbHNbImNoZWNrb3V0cm9vdCJdID0gY2hl
Y2tvdXRyb290ID0gb3MucGF0aC5hYnNwYXRoKG9zLnBhdGguam9pbihvcy5lbnZpcm9uWydXRUJL
SVRfT1VUUFVURElSJ10sICdEZXBlbmRlbmNpZXMnLCAnU291cmNlJykpCisgICAgICAgIGpoYnVp
bGRyY19nbG9iYWxzWyJwcmVmaXgiXSA9IG9zLnBhdGguYWJzcGF0aChvcy5wYXRoLmpvaW4ob3Mu
ZW52aXJvblsnV0VCS0lUX09VVFBVVERJUiddLCAnRGVwZW5kZW5jaWVzJywgJ1Jvb3QnKSkKKyAg
ICBlbHNlOgorICAgICAgICBqaGJ1aWxkcmNfZ2xvYmFsc1siY2hlY2tvdXRyb290Il0gPSBjaGVj
a291dHJvb3QgPSBvcy5wYXRoLmFic3BhdGgodG9wX2xldmVsX3BhdGgoJ1dlYktpdEJ1aWxkJywg
J0RlcGVuZGVuY2llcycsICdTb3VyY2UnKSkKKyAgICAgICAgamhidWlsZHJjX2dsb2JhbHNbInBy
ZWZpeCJdID0gb3MucGF0aC5hYnNwYXRoKHRvcF9sZXZlbF9wYXRoKCdXZWJLaXRCdWlsZCcsICdE
ZXBlbmRlbmNpZXMnLCAnUm9vdCcpKQorCisgICAgamhidWlsZHJjX2dsb2JhbHNbIm5vbm90aWZ5
Il0gPSBUcnVlCisgICAgamhidWlsZHJjX2dsb2JhbHNbIm5vdHJheWljb24iXSA9IFRydWUKZGlm
ZiAtLWdpdCBhL1Rvb2xzL25peC9jb21tb24ucHkgYi9Ub29scy9uaXgvY29tbW9uLnB5CmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwYjhiNjYyLi4wMDAwMDAwCi0tLSBhL1Rvb2xzL25p
eC9jb21tb24ucHkKKysrIC9kZXYvbnVsbApAQCAtMSwzMiArMCwwIEBACi0jIS91c3IvYmluL2Vu
diBweXRob24KLSMgQ29weXJpZ2h0IChDKSAyMDExIElnYWxpYSBTLkwuCi0jIENvcHlyaWdodCAo
QykgMjAxMiwgMjAxMyBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWll
cykuCi0jCi0jIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp
YnV0ZSBpdCBhbmQvb3IKLSMgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExl
c3NlciBHZW5lcmFsIFB1YmxpYwotIyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSMgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBv
ciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotIwotIyBUaGlzIGxpYnJhcnkg
aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSMgYnV0
IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkg
b2YKLSMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
LiAgU2VlIHRoZSBHTlUKLSMgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUg
ZGV0YWlscy4KLSMKLSMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05V
IExlc3NlciBHZW5lcmFsIFB1YmxpYwotIyBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5
OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0jIEZvdW5kYXRpb24sIEluYy4s
IDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEg
IFVTQQotCi1pbXBvcnQgb3MKLQotc2NyaXB0X2RpciA9IE5vbmUKLQotCi1kZWYgc2NyaXB0X3Bh
dGgoKmFyZ3MpOgotICAgIGdsb2JhbCBzY3JpcHRfZGlyCi0gICAgaWYgbm90IHNjcmlwdF9kaXI6
Ci0gICAgICAgIHNjcmlwdF9kaXIgPSBvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1lKF9fZmls
ZV9fKSwgJy4uJywgJ1NjcmlwdHMnKQotICAgIHJldHVybiBvcy5wYXRoLmpvaW4oKihzY3JpcHRf
ZGlyLCkgKyBhcmdzKQotCi0KLWRlZiB0b3BfbGV2ZWxfcGF0aCgqYXJncyk6Ci0gICAgcmV0dXJu
IG9zLnBhdGguam9pbigqKChzY3JpcHRfcGF0aCgnLi4nLCAnLi4nKSwpICsgYXJncykpCg==
</data>
<flag name="commit-queue"
          id="244998"
          type_id="3"
          status="-"
          setter="gtk-ews"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>221268</attachid>
            <date>2014-01-15 08:03:00 -0800</date>
            <delta_ts>2014-02-06 05:36:54 -0800</delta_ts>
            <desc>final patch ( i hope)</desc>
            <filename>patch_v4.diff</filename>
            <type>text/plain</type>
            <size>18088</size>
            <attacher name="ezisfake">Szanka.Peter</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBjMWFj
OTlhLi5jODY2ZDYxIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzEgQEAKKzIwMTQtMDEtMTUgIFBldGVyIFN6YW5rYSAgPGg4Njgw
NjRAc3R1ZC51LXN6ZWdlZC5odT4KKworICAgICAgICBFeHRyYWN0IGNvbW1vbiBwYXJ0cyBmcm9t
IGpoYnVpbGRyYyBmaWxlcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTEyNTk4NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogZWZsL2NvbW1vbi5weTogUmVtb3ZlZC4KKyAgICAgICAgKiBlZmwvamhidWls
ZHJjOgorICAgICAgICAqIGd0ay9jb21tb24ucHk6CisgICAgICAgIChiaW5hcnlfYnVpbGRfcGF0
aCk6CisgICAgICAgICogZ3RrL2ZpbmQtbWFrZS1kaXN0LWVycm9yczoKKyAgICAgICAgKGdldF9t
aXNzaW5nX2hlYWRlcnMpOgorICAgICAgICAqIGd0ay9nZW5lcmF0ZS1ndGtkb2M6CisgICAgICAg
IChnZXRfd2Via2l0Ml9vcHRpb25zKToKKyAgICAgICAgKGdldF93ZWJraXQxX29wdGlvbnMuc3Jj
X3BhdGgpOgorICAgICAgICAoZ2V0X3dlYmtpdDFfb3B0aW9ucyk6CisgICAgICAgIChnZXRfd2Vi
a2l0ZG9tX29wdGlvbnMuc3JjX3BhdGgpOgorICAgICAgICAoZ2V0X3dlYmtpdGRvbV9vcHRpb25z
KToKKyAgICAgICAgKiBndGsvZ2VuZXJhdGUtaW5zcGVjdG9yLWdyZXNvdXJjZS1tYW5pZmVzdC5w
eToKKyAgICAgICAgKiBndGsvamhidWlsZHJjOgorICAgICAgICAqIGpoYnVpbGQvamhidWlsZHJj
X2NvbW1vbi5weTogQWRkZWQuCisgICAgICAgIChzY3JpcHRfcGF0aCk6CisgICAgICAgICh0b3Bf
bGV2ZWxfcGF0aCk6CisgICAgICAgIChpbml0KToKKyAgICAgICAgKiBuaXgvY29tbW9uLnB5OiBS
ZW1vdmVkLgorICAgICAgICAqIG5peC9qaGJ1aWxkcmM6CisKIDIwMTQtMDEtMTUgIENoYW5nU2Vv
ayBPaCAgPGNoYW5nc2Vvay5vaEBjb2xsYWJvcmEuY29tPgogCiAgICAgICAgIFtFRkxdIENoYW5n
ZSB0ZXN0IGZvbnQgaW5zdGFsbGVkIHBhdGggdG8gd2Via2l0Z3RrLWZvbnQtdGVzdHMKZGlmZiAt
LWdpdCBhL1Rvb2xzL2VmbC9qaGJ1aWxkcmMgYi9Ub29scy9lZmwvamhidWlsZHJjCmluZGV4IDc3
ZGFhZTkuLjc0OGM5MTUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL2VmbC9qaGJ1aWxkcmMKKysrIGIvVG9v
bHMvZWZsL2poYnVpbGRyYwpAQCAtMTYsMzcgKzE2LDkgQEAKICMgTGljZW5zZSBhbG9uZyB3aXRo
IHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQogIyBGb3Vu
ZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1B
ICAwMjExMC0xMzAxICBVU0EKIAotaW1wb3J0IG11bHRpcHJvY2Vzc2luZwotaW1wb3J0IHN5cwot
Ci1fX2VmbF90b29sc19kaXJlY3RvcnkgPSBvcy5wYXRoLmFic3BhdGgob3MucGF0aC5kaXJuYW1l
KF9fZmlsZV9fKSkKLXN5cy5wYXRoID0gW19fZWZsX3Rvb2xzX2RpcmVjdG9yeV0gKyBzeXMucGF0
aAotaW1wb3J0IGNvbW1vbgotCi1idWlsZF9wb2xpY3kgPSAndXBkYXRlZCcKLQotIyBGSVhNRTog
bW92ZSBzaGFyZWQgcGFydHMgaW50byAuLi9qaGJ1aWxkIGZvbGRlci4KLQotX19tb2R1bGVzZXRf
ZmlsZV91cmkgPSAnZmlsZTovLycgKyBvcy5wYXRoLmpvaW4oX19lZmxfdG9vbHNfZGlyZWN0b3J5
LCAnamhidWlsZC5tb2R1bGVzJykKLV9fZXh0cmFfbW9kdWxlc2V0cyA9IG9zLmVudmlyb24uZ2V0
KCJXRUJLSVRfRVhUUkFfTU9EVUxFU0VUUyIsICIiKS5zcGxpdCgiLCIpCi1tb2R1bGVzZXQgPSBb
IF9fbW9kdWxlc2V0X2ZpbGVfdXJpLCBdCi1pZiBfX2V4dHJhX21vZHVsZXNldHMgIT0gWycnXToK
LSAgICBtb2R1bGVzZXQuZXh0ZW5kKF9fZXh0cmFfbW9kdWxlc2V0cykKLQotX19leHRyYV9tb2R1
bGVzID0gb3MuZW52aXJvbi5nZXQoIldFQktJVF9FWFRSQV9NT0RVTEVTIiwgIiIpLnNwbGl0KCIs
IikKLW1vZHVsZXMgPSBbICd3ZWJraXRlZmwtdGVzdGluZy1kZXBlbmRlbmNpZXMnLCBdCi1pZiBf
X2V4dHJhX21vZHVsZXMgIT0gWycnXToKLSAgICBtb2R1bGVzLmV4dGVuZChfX2V4dHJhX21vZHVs
ZXMpCi0KLWlmIG9zLmVudmlyb24uaGFzX2tleSgnV0VCS0lUX09VVFBVVERJUicpOgotICAgIGNo
ZWNrb3V0cm9vdCA9IG9zLnBhdGguYWJzcGF0aChvcy5wYXRoLmpvaW4ob3MuZW52aXJvblsnV0VC
S0lUX09VVFBVVERJUiddLCAnRGVwZW5kZW5jaWVzJywgJ1NvdXJjZScpKQotICAgIHByZWZpeCA9
IG9zLnBhdGguYWJzcGF0aChvcy5wYXRoLmpvaW4ob3MuZW52aXJvblsnV0VCS0lUX09VVFBVVERJ
UiddLCAnRGVwZW5kZW5jaWVzJywgJ1Jvb3QnKSkKLWVsc2U6Ci0gICAgY2hlY2tvdXRyb290ID0g
b3MucGF0aC5hYnNwYXRoKGNvbW1vbi50b3BfbGV2ZWxfcGF0aCgnV2ViS2l0QnVpbGQnLCdEZXBl
bmRlbmNpZXMnLCAnU291cmNlJykpCi0gICAgcHJlZml4ID0gb3MucGF0aC5hYnNwYXRoKGNvbW1v
bi50b3BfbGV2ZWxfcGF0aCgnV2ViS2l0QnVpbGQnLCdEZXBlbmRlbmNpZXMnLCAnUm9vdCcpKQot
Ci1ub25vdGlmeSA9IFRydWUKLW5vdHJheWljb24gPSBUcnVlCitzeXMucGF0aC5pbnNlcnQoMCwg
b3MucGF0aC5qb2luKG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXyksICIuLi9qaGJ1aWxkIikgKQor
aW1wb3J0IGpoYnVpbGRyY19jb21tb24KK2poYnVpbGRyY19jb21tb24uaW5pdChnbG9iYWxzKCks
ICJlZmwiKQogCiBpZiAnTlVNQkVSX09GX1BST0NFU1NPUlMnIGluIG9zLmVudmlyb246CiAgICAg
am9icyA9IG9zLmVudmlyb25bJ05VTUJFUl9PRl9QUk9DRVNTT1JTJ10KZGlmZiAtLWdpdCBhL1Rv
b2xzL2d0ay9jb21tb24ucHkgYi9Ub29scy9ndGsvY29tbW9uLnB5CmluZGV4IDAyZGI5MzIuLmRm
MmY4MDYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL2d0ay9jb21tb24ucHkKKysrIGIvVG9vbHMvZ3RrL2Nv
bW1vbi5weQpAQCAtMjEsNyArMjEsNiBAQCBpbXBvcnQgc2VsZWN0CiBpbXBvcnQgc3VicHJvY2Vz
cwogaW1wb3J0IHN5cwogCi1zY3JpcHRfZGlyID0gTm9uZQogYnVpbGRfZGlyID0gTm9uZQogbGli
cmFyeV9idWlsZF9kaXIgPSBOb25lCiB0ZXN0c19saWJyYXJ5X2J1aWxkX2RpciA9IE5vbmUKQEAg
LTcxLDE3ICs3MCw2IEBAIGRlZiBiaW5hcnlfYnVpbGRfcGF0aCgqYXJncyk6CiAgICAgcmV0dXJu
IGxpYnJhcnlfYnVpbGRfZGlyCiAKIAotZGVmIHNjcmlwdF9wYXRoKCphcmdzKToKLSAgICBnbG9i
YWwgc2NyaXB0X2RpcgotICAgIGlmIG5vdCBzY3JpcHRfZGlyOgotICAgICAgICBzY3JpcHRfZGly
ID0gb3MucGF0aC5qb2luKG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXyksICcuLicsICdTY3JpcHRz
JykKLSAgICByZXR1cm4gb3MucGF0aC5qb2luKCooc2NyaXB0X2RpciwpICsgYXJncykKLQotCi1k
ZWYgdG9wX2xldmVsX3BhdGgoKmFyZ3MpOgotICAgIHJldHVybiBvcy5wYXRoLmpvaW4oKigob3Mu
cGF0aC5qb2luKG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXyksICcuLicsICcuLicpLCkgKyBhcmdz
KSkKLQotCiBkZWYgZ2V0X2J1aWxkX3BhdGgoZmF0YWw9VHJ1ZSk6CiAgICAgZ2xvYmFsIGJ1aWxk
X2RpcgogICAgIGlmIGJ1aWxkX2RpcjoKZGlmZiAtLWdpdCBhL1Rvb2xzL2d0ay9maW5kLW1ha2Ut
ZGlzdC1lcnJvcnMgYi9Ub29scy9ndGsvZmluZC1tYWtlLWRpc3QtZXJyb3JzCmluZGV4IDg4MGM3
ODAuLjk4MTkwNTUgMTAwNzU1Ci0tLSBhL1Rvb2xzL2d0ay9maW5kLW1ha2UtZGlzdC1lcnJvcnMK
KysrIGIvVG9vbHMvZ3RrL2ZpbmQtbWFrZS1kaXN0LWVycm9ycwpAQCAtMjAsNiArMjAsOSBAQCBp
bXBvcnQgb3MKIGltcG9ydCBzdWJwcm9jZXNzCiBpbXBvcnQgc3lzCiAKK3N5cy5wYXRoLmluc2Vy
dCgwLCBvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSwgIi4uL2poYnVpbGQi
KSApCitpbXBvcnQgamhidWlsZHJjX2NvbW1vbgorCiBkZWYgaXNfc291cmNlX2ZpbGVfbGlzdGlu
ZyhsaW5lKToKICAgICByZXR1cm4gbGluZS5zdHJpcCgpLnN0YXJ0c3dpdGgoJ1NvdXJjZScpCiAK
QEAgLTg2LDcgKzg5LDcgQEAgZGVmIGdldF91bmxpc3RlZF9oZWFkZXJzKGxpc3RlZF9tYWtlZmls
ZV9oZWFkZXJzKToKIGRlZiBnZXRfbWlzc2luZ19oZWFkZXJzKGxpc3RlZF9tYWtlZmlsZV9oZWFk
ZXJzKToKICAgICBtaXNzaW5nID0gc2V0KCkKICAgICBmb3IgaGVhZGVyIGluIGxpc3RlZF9tYWtl
ZmlsZV9oZWFkZXJzOgotICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMoY29tbW9uLnRvcF9s
ZXZlbF9wYXRoKGhlYWRlcikpOgorICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMoamhidWls
ZHJjX2NvbW1vbi50b3BfbGV2ZWxfcGF0aChoZWFkZXIpKToKICAgICAgICAgICAgIG1pc3Npbmcu
YWRkKGhlYWRlcikKICAgICByZXR1cm4gbWlzc2luZwogCmRpZmYgLS1naXQgYS9Ub29scy9ndGsv
Z2VuZXJhdGUtZ3RrZG9jIGIvVG9vbHMvZ3RrL2dlbmVyYXRlLWd0a2RvYwppbmRleCBjZTIyMGE2
Li5kNTRlNWVmIDEwMDc1NQotLS0gYS9Ub29scy9ndGsvZ2VuZXJhdGUtZ3RrZG9jCisrKyBiL1Rv
b2xzL2d0ay9nZW5lcmF0ZS1ndGtkb2MKQEAgLTIyLDYgKzIyLDkgQEAgaW1wb3J0IGxvZ2dpbmcK
IGltcG9ydCBvcy5wYXRoCiBpbXBvcnQgc3lzCiAKK3N5cy5wYXRoLmluc2VydCgwLCBvcy5wYXRo
LmpvaW4ob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSwgIi4uL2poYnVpbGQiKSApCitpbXBvcnQg
amhidWlsZHJjX2NvbW1vbgorCiBkZWYgY29uZmlndXJlX2xvZ2dpbmcoKToKICAgICBsZXZlbCA9
IGxvZ2dpbmcuREVCVUcgaWYgJy12JyBpbiBzeXMuYXJndiBlbHNlIGxvZ2dpbmcuSU5GTwogICAg
IGxvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCdndGtkb2MnKQpAQCAtNzYsOCArNzksOCBAQCBk
ZWYgd2Via2l0ZG9tX2RvY3NfaHRtbF9wYXRoKCk6CiAgICAgcmV0dXJuIGNvbW1vbi5idWlsZF9w
YXRoKCdEb2N1bWVudGF0aW9uJywgJ3dlYmtpdGRvbWd0aycsICdodG1sJykKIAogZGVmIGdldF93
ZWJraXQyX29wdGlvbnMoKToKLSAgICBhcGlfcGF0aCA9IGNvbW1vbi50b3BfbGV2ZWxfcGF0aCgn
U291cmNlJywgJ1dlYktpdDInLCAnVUlQcm9jZXNzJywgJ0FQSScsICdndGsnKQotICAgIGluamVj
dGVkX2J1bmRsZV9hcGlfcGF0aCA9IGNvbW1vbi50b3BfbGV2ZWxfcGF0aCgnU291cmNlJywgJ1dl
YktpdDInLCAnV2ViUHJvY2VzcycsICdJbmplY3RlZEJ1bmRsZScsICdBUEknLCAnZ3RrJykKKyAg
ICBhcGlfcGF0aCA9IGpoYnVpbGRyY19jb21tb24udG9wX2xldmVsX3BhdGgoJ1NvdXJjZScsICdX
ZWJLaXQyJywgJ1VJUHJvY2VzcycsICdBUEknLCAnZ3RrJykKKyAgICBpbmplY3RlZF9idW5kbGVf
YXBpX3BhdGggPSBqaGJ1aWxkcmNfY29tbW9uLnRvcF9sZXZlbF9wYXRoKCdTb3VyY2UnLCAnV2Vi
S2l0MicsICdXZWJQcm9jZXNzJywgJ0luamVjdGVkQnVuZGxlJywgJ0FQSScsICdndGsnKQogCiAg
ICAgaWYgY29tbW9uLmlzX2NtYWtlX2J1aWxkKCk6CiAgICAgICAgIGdlbmVyYXRlZF9hcGlfcGF0
aCA9IGNvbW1vbi5idWlsZF9wYXRoKCdEZXJpdmVkU291cmNlcycsICd3ZWJraXQyZ3RrJywgJ3dl
YmtpdDInKQpAQCAtMTAxLDcgKzEwNCw3IEBAIGRlZiBnZXRfd2Via2l0Ml9vcHRpb25zKCk6CiAg
ICAgICAgICdzb3VyY2VfZGlycycgOiBbc3JjX3BhdGgoKSwgZ2VuZXJhdGVkX2FwaV9wYXRoLCBp
bmplY3RlZF9idW5kbGVfYXBpX3BhdGhdLAogICAgICAgICAnY2ZsYWdzJyA6CiAgICAgICAgICAg
ICAjIENvbW1vbiBwYXRocwotICAgICAgICAgICAgJyAtSScgKyBjb21tb24udG9wX2xldmVsX3Bh
dGgoJ1NvdXJjZScpICsgXAorICAgICAgICAgICAgJyAtSScgKyBqaGJ1aWxkcmNfY29tbW9uLnRv
cF9sZXZlbF9wYXRoKCdTb3VyY2UnKSArIFwKICAgICAgICAgICAgICcgLUknICsgYXBpX3BhdGgg
KyBcCiAgICAgICAgICAgICAjIEF1dG90b29scyBwYXRocwogICAgICAgICAgICAgJyAtSScgKyBj
b21tb24uYnVpbGRfcGF0aCgnRGVyaXZlZFNvdXJjZXMnLCAnd2Via2l0Mmd0aycsICdpbmNsdWRl
JykgKyBcCkBAIC0xMjcsNyArMTMwLDcgQEAgZGVmIGdldF93ZWJraXQyX29wdGlvbnMoKToKIAog
ZGVmIGdldF93ZWJraXQxX29wdGlvbnMoZ3RrX3ZlcnNpb24pOgogICAgIGRlZiBzcmNfcGF0aCgq
YXJncyk6Ci0gICAgICAgIHJldHVybiBjb21tb24udG9wX2xldmVsX3BhdGgoKigoJ1NvdXJjZScs
ICdXZWJLaXQnLCAnZ3RrJykgKyBhcmdzKSkKKyAgICAgICAgcmV0dXJuIGpoYnVpbGRyY19jb21t
b24udG9wX2xldmVsX3BhdGgoKigoJ1NvdXJjZScsICdXZWJLaXQnLCAnZ3RrJykgKyBhcmdzKSkK
IAogICAgIGRlZiB3ZWJraXR2ZXJzaW9uaF9wYXRoKCk6CiAgICAgICAgIGlmIGNvbW1vbi5pc19j
bWFrZV9idWlsZCgpOgpAQCAtMTU1LDggKzE1OCw4IEBAIGRlZiBnZXRfd2Via2l0MV9vcHRpb25z
KGd0a192ZXJzaW9uKToKICAgICAgICAgJ2NmbGFncycgOiAnIC1JJyArIGNvbW1vbi5idWlsZF9w
YXRoKCdXZWJLaXQnLCAnZ3RrJykgKyBcCiAgICAgICAgICAgICAgICAgICAgJyAtSScgKyBjb21t
b24uYnVpbGRfcGF0aCgnRGVyaXZlZFNvdXJjZXMnKSArIFwKICAgICAgICAgICAgICAgICAgICAn
IC1JJyArIHNyY19wYXRoKCkgKyBcCi0gICAgICAgICAgICAgICAgICAgJyAtSScgKyBjb21tb24u
dG9wX2xldmVsX3BhdGgoJ1NvdXJjZScpICsgXAotICAgICAgICAgICAgICAgICAgICcgLUknICsg
Y29tbW9uLnRvcF9sZXZlbF9wYXRoKCdTb3VyY2UnLCAnSmF2YVNjcmlwdENvcmUnLCAnRm9yd2Fy
ZGluZ0hlYWRlcnMnKSwKKyAgICAgICAgICAgICAgICAgICAnIC1JJyArIGpoYnVpbGRyY19jb21t
b24udG9wX2xldmVsX3BhdGgoJ1NvdXJjZScpICsgXAorICAgICAgICAgICAgICAgICAgICcgLUkn
ICsgamhidWlsZHJjX2NvbW1vbi50b3BfbGV2ZWxfcGF0aCgnU291cmNlJywgJ0phdmFTY3JpcHRD
b3JlJywgJ0ZvcndhcmRpbmdIZWFkZXJzJyksCiAgICAgICAgICdjcm9zc19yZWZlcmVuY2VfZGVw
cycgOiBnZXRfZ3RrZG9jX21vZHVsZV9wYXRocyh4cmVmX2RlcHMpICsgW3dlYmtpdGRvbV9kb2Nz
X2h0bWxfcGF0aCgpXSwKICAgICAgICAgJ2lnbm9yZWRfZmlsZXMnOiBnbG9iLmdsb2Ioc3JjX3Bh
dGgoJ3dlYmtpdCcsICcqcHJpdmF0ZS4qJykpICsgXAogICAgICAgICAgICAgICAgICAgICAgICAg
IGdsb2IuZ2xvYihzcmNfcGF0aCgnd2Via2l0JywgJ3dlYmtpdGF1dGhlbnRpY2F0aW9uZGlhbG9n
LionKSkgKyBcCkBAIC0xNjgsNyArMTcxLDcgQEAgZGVmIGdldF93ZWJraXRkb21fb3B0aW9ucygp
OgogICAgIGRlZiBkZXJpdmVkX3NvdXJjZXNfcGF0aCgqYXJncyk6CiAgICAgICAgIHJldHVybiBj
b21tb24uYnVpbGRfcGF0aCgqKCgnRGVyaXZlZFNvdXJjZXMnLCAnd2Via2l0ZG9tJykgKyBhcmdz
KSkKICAgICBkZWYgc3JjX3BhdGgoKmFyZ3MpOgotICAgICAgICByZXR1cm4gY29tbW9uLnRvcF9s
ZXZlbF9wYXRoKCooKCdTb3VyY2UnLCAnV2ViQ29yZScsICdiaW5kaW5ncycsICdnb2JqZWN0Jykg
KyBhcmdzKSkKKyAgICAgICAgcmV0dXJuIGpoYnVpbGRyY19jb21tb24udG9wX2xldmVsX3BhdGgo
KigoJ1NvdXJjZScsICdXZWJDb3JlJywgJ2JpbmRpbmdzJywgJ2dvYmplY3QnKSArIGFyZ3MpKQog
CiAgICAgeHJlZl9kZXBzID0geyAnZ2xpYi0yLjAnIDogWydnbGliJywgJ2dvYmplY3QnLCAnZ2lv
J10gfQogCkBAIC0xODEsNyArMTg0LDcgQEAgZGVmIGdldF93ZWJraXRkb21fb3B0aW9ucygpOgog
ICAgICAgICAnc291cmNlX2RpcnMnIDogW2Rlcml2ZWRfc291cmNlc19wYXRoKCldLAogICAgICAg
ICAnY2ZsYWdzJyA6ICcgLUknICsgZGVyaXZlZF9zb3VyY2VzX3BhdGgoKSArIFwKICAgICAgICAg
ICAgICAgICAgICAnIC1JJyArIHNyY19wYXRoKCkgKyBcCi0gICAgICAgICAgICAgICAgICAgJyAt
SScgKyBjb21tb24udG9wX2xldmVsX3BhdGgoJ1NvdXJjZScpLAorICAgICAgICAgICAgICAgICAg
ICcgLUknICsgamhidWlsZHJjX2NvbW1vbi50b3BfbGV2ZWxfcGF0aCgnU291cmNlJyksCiAgICAg
ICAgICdjcm9zc19yZWZlcmVuY2VfZGVwcycgOiBnZXRfZ3RrZG9jX21vZHVsZV9wYXRocyh4cmVm
X2RlcHMpLAogICAgICAgICAnaWdub3JlZF9maWxlcyc6IGdsb2IuZ2xvYihkZXJpdmVkX3NvdXJj
ZXNfcGF0aCgnKlByaXZhdGUuaCcpKQogICAgIH0pCmRpZmYgLS1naXQgYS9Ub29scy9ndGsvZ2Vu
ZXJhdGUtaW5zcGVjdG9yLWdyZXNvdXJjZS1tYW5pZmVzdC5weSBiL1Rvb2xzL2d0ay9nZW5lcmF0
ZS1pbnNwZWN0b3ItZ3Jlc291cmNlLW1hbmlmZXN0LnB5CmluZGV4IDU4YTFkZjEuLjBiZDYzOTQg
MTAwNzU1Ci0tLSBhL1Rvb2xzL2d0ay9nZW5lcmF0ZS1pbnNwZWN0b3ItZ3Jlc291cmNlLW1hbmlm
ZXN0LnB5CisrKyBiL1Rvb2xzL2d0ay9nZW5lcmF0ZS1pbnNwZWN0b3ItZ3Jlc291cmNlLW1hbmlm
ZXN0LnB5CkBAIC0yMCw3ICsyMCwxMCBAQCBpbXBvcnQgZ2xvYgogaW1wb3J0IG9zCiBpbXBvcnQg
c3lzCiAKLXJlc291cmNlc19wYXRoID0gY29tbW9uLnRvcF9sZXZlbF9wYXRoKCkgKyAiL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS8iCitzeXMucGF0aC5pbnNlcnQoMCwgb3MucGF0aC5qb2luKG9zLnBh
dGguZGlybmFtZShfX2ZpbGVfXyksICIuLi9qaGJ1aWxkIikpCitpbXBvcnQgamhidWlsZHJjX2Nv
bW1vbgorCityZXNvdXJjZXNfcGF0aCA9IGpoYnVpbGRyY19jb21tb24udG9wX2xldmVsX3BhdGgo
KSArICIvU291cmNlL1dlYkluc3BlY3RvclVJLyIKIGluc3BlY3Rvcl9maWxlcyA9IFwKICAgICBn
bG9iLmdsb2IocmVzb3VyY2VzX3BhdGggKyAnVXNlckludGVyZmFjZS8qLmh0bWwnKSArIFwKICAg
ICBnbG9iLmdsb2IocmVzb3VyY2VzX3BhdGggKyAnVXNlckludGVyZmFjZS8qLmpzJykgKyBcCmRp
ZmYgLS1naXQgYS9Ub29scy9ndGsvamhidWlsZHJjIGIvVG9vbHMvZ3RrL2poYnVpbGRyYwppbmRl
eCA2OWY5NDU3Li4wNDE4NjVhIDEwMDY0NAotLS0gYS9Ub29scy9ndGsvamhidWlsZHJjCisrKyBi
L1Rvb2xzL2d0ay9qaGJ1aWxkcmMKQEAgLTE1LDM2ICsxNSwxNCBAQAogIyBMaWNlbnNlIGFsb25n
IHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiAj
IEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3Rv
biwgTUEgIDAyMTEwLTEzMDEgIFVTQQogCi1pbXBvcnQgbXVsdGlwcm9jZXNzaW5nCi1pbXBvcnQg
c3lzCitzeXMucGF0aC5pbnNlcnQoMCwgb3MucGF0aC5qb2luKG9zLnBhdGguZGlybmFtZShfX2Zp
bGVfXyksICIuLi9qaGJ1aWxkIikgKQoraW1wb3J0IGpoYnVpbGRyY19jb21tb24KK2poYnVpbGRy
Y19jb21tb24uaW5pdChnbG9iYWxzKCksICJndGsiKQogCiBfX2d0a190b29sc19kaXJlY3Rvcnkg
PSBvcy5wYXRoLmFic3BhdGgob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSkKIHN5cy5wYXRoID0g
W19fZ3RrX3Rvb2xzX2RpcmVjdG9yeV0gKyBzeXMucGF0aAogaW1wb3J0IGNvbW1vbgogCi1idWls
ZF9wb2xpY3kgPSAndXBkYXRlZCcKLQotX19tb2R1bGVzZXRfZmlsZV91cmkgPSAnZmlsZTovLycg
KyBvcy5wYXRoLmpvaW4oX19ndGtfdG9vbHNfZGlyZWN0b3J5LCAnamhidWlsZC5tb2R1bGVzJykK
LV9fZXh0cmFfbW9kdWxlc2V0cyA9IG9zLmVudmlyb24uZ2V0KCJXRUJLSVRfRVhUUkFfTU9EVUxF
U0VUUyIsICIiKS5zcGxpdCgiLCIpCi1tb2R1bGVzZXQgPSBbIF9fbW9kdWxlc2V0X2ZpbGVfdXJp
LCBdCi1pZiBfX2V4dHJhX21vZHVsZXNldHMgIT0gWycnXToKLSAgICBtb2R1bGVzZXQuZXh0ZW5k
KF9fZXh0cmFfbW9kdWxlc2V0cykKLQotX19leHRyYV9tb2R1bGVzID0gb3MuZW52aXJvbi5nZXQo
IldFQktJVF9FWFRSQV9NT0RVTEVTIiwgIiIpLnNwbGl0KCIsIikKLW1vZHVsZXMgPSBbICd3ZWJr
aXRndGstdGVzdGluZy1kZXBlbmRlbmNpZXMnLCBdCi1pZiBfX2V4dHJhX21vZHVsZXMgIT0gWycn
XToKLSAgICBtb2R1bGVzLmV4dGVuZChfX2V4dHJhX21vZHVsZXMpCi0KLWlmIG9zLmVudmlyb24u
aGFzX2tleSgnV0VCS0lUX09VVFBVVERJUicpOgotICAgIGNoZWNrb3V0cm9vdCA9IG9zLnBhdGgu
YWJzcGF0aChvcy5wYXRoLmpvaW4ob3MuZW52aXJvblsnV0VCS0lUX09VVFBVVERJUiddLCAnRGVw
ZW5kZW5jaWVzJywgJ1NvdXJjZScpKQotICAgIHByZWZpeCA9IG9zLnBhdGguYWJzcGF0aChvcy5w
YXRoLmpvaW4ob3MuZW52aXJvblsnV0VCS0lUX09VVFBVVERJUiddLCAnRGVwZW5kZW5jaWVzJywg
J1Jvb3QnKSkKLWVsc2U6Ci0gICAgY2hlY2tvdXRyb290ID0gb3MucGF0aC5hYnNwYXRoKGNvbW1v
bi50b3BfbGV2ZWxfcGF0aCgnV2ViS2l0QnVpbGQnLCdEZXBlbmRlbmNpZXMnLCAnU291cmNlJykp
Ci0gICAgcHJlZml4ID0gb3MucGF0aC5hYnNwYXRoKGNvbW1vbi50b3BfbGV2ZWxfcGF0aCgnV2Vi
S2l0QnVpbGQnLCdEZXBlbmRlbmNpZXMnLCAnUm9vdCcpKQotCi1ub25vdGlmeSA9IFRydWUKLW5v
dHJheWljb24gPSBUcnVlCi0KIGlmICdOVU1CRVJfT0ZfUFJPQ0VTU09SUycgaW4gb3MuZW52aXJv
bjoKICAgICBqb2JzID0gb3MuZW52aXJvblsnTlVNQkVSX09GX1BST0NFU1NPUlMnXQogCmRpZmYg
LS1naXQgYS9Ub29scy9uaXgvamhidWlsZHJjIGIvVG9vbHMvbml4L2poYnVpbGRyYwppbmRleCAz
NTU1MmNhLi5iNzU3ODNmIDEwMDY0NAotLS0gYS9Ub29scy9uaXgvamhidWlsZHJjCisrKyBiL1Rv
b2xzL25peC9qaGJ1aWxkcmMKQEAgLTE3LDM4ICsxNywxMCBAQAogIyBMaWNlbnNlIGFsb25nIHdp
dGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiAjIEZv
dW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3Rvbiwg
TUEgIDAyMTEwLTEzMDEgIFVTQQogCi1pbXBvcnQgbXVsdGlwcm9jZXNzaW5nCi1pbXBvcnQgc3lz
Ci1pbXBvcnQgb3MKK3N5cy5wYXRoLmluc2VydCgwLCBvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJu
YW1lKF9fZmlsZV9fKSwgIi4uL2poYnVpbGQiKSApCitpbXBvcnQgamhidWlsZHJjX2NvbW1vbgor
amhidWlsZHJjX2NvbW1vbi5pbml0KGdsb2JhbHMoKSwgIm5peCIpCiAKLV9fbml4X3Rvb2xzX2Rp
cmVjdG9yeSA9IG9zLnBhdGguYWJzcGF0aChvcy5wYXRoLmRpcm5hbWUoX19maWxlX18pKQotc3lz
LnBhdGggPSBbX19uaXhfdG9vbHNfZGlyZWN0b3J5XSArIHN5cy5wYXRoCi1pbXBvcnQgY29tbW9u
Ci0KLWJ1aWxkX3BvbGljeSA9ICd1cGRhdGVkJwotCi0jIEZJWE1FOiBtb3ZlIHNoYXJlZCBwYXJ0
cyBpbnRvIC4uL2poYnVpbGQgZm9sZGVyLgotCi1fX21vZHVsZXNldF9maWxlX3VyaSA9ICdmaWxl
Oi8vJyArIG9zLnBhdGguam9pbihfX25peF90b29sc19kaXJlY3RvcnksICdqaGJ1aWxkLm1vZHVs
ZXMnKQotX19leHRyYV9tb2R1bGVzZXRzID0gb3MuZW52aXJvbi5nZXQoIldFQktJVF9FWFRSQV9N
T0RVTEVTRVRTIiwgIiIpLnNwbGl0KCIsIikKLW1vZHVsZXNldCA9IFsgX19tb2R1bGVzZXRfZmls
ZV91cmksIF0KLWlmIF9fZXh0cmFfbW9kdWxlc2V0cyAhPSBbJyddOgotICAgIG1vZHVsZXNldC5l
eHRlbmQoX19leHRyYV9tb2R1bGVzZXRzKQotCi1fX2V4dHJhX21vZHVsZXMgPSBvcy5lbnZpcm9u
LmdldCgiV0VCS0lUX0VYVFJBX01PRFVMRVMiLCAiIikuc3BsaXQoIiwiKQotbW9kdWxlcyA9IFsg
J3dlYmtpdG5peC10ZXN0aW5nLWRlcGVuZGVuY2llcycsIF0KLWlmIF9fZXh0cmFfbW9kdWxlcyAh
PSBbJyddOgotICAgIG1vZHVsZXMuZXh0ZW5kKF9fZXh0cmFfbW9kdWxlcykKLQotaWYgb3MuZW52
aXJvbi5oYXNfa2V5KCdXRUJLSVRfT1VUUFVURElSJyk6Ci0gICAgY2hlY2tvdXRyb290ID0gb3Mu
cGF0aC5hYnNwYXRoKG9zLnBhdGguam9pbihvcy5lbnZpcm9uWydXRUJLSVRfT1VUUFVURElSJ10s
ICdEZXBlbmRlbmNpZXMnLCAnU291cmNlJykpCi0gICAgcHJlZml4ID0gb3MucGF0aC5hYnNwYXRo
KG9zLnBhdGguam9pbihvcy5lbnZpcm9uWydXRUJLSVRfT1VUUFVURElSJ10sICdEZXBlbmRlbmNp
ZXMnLCAnUm9vdCcpKQotZWxzZToKLSAgICBjaGVja291dHJvb3QgPSBvcy5wYXRoLmFic3BhdGgo
Y29tbW9uLnRvcF9sZXZlbF9wYXRoKCdXZWJLaXRCdWlsZCcsJ0RlcGVuZGVuY2llcycsICdTb3Vy
Y2UnKSkKLSAgICBwcmVmaXggPSBvcy5wYXRoLmFic3BhdGgoY29tbW9uLnRvcF9sZXZlbF9wYXRo
KCdXZWJLaXRCdWlsZCcsJ0RlcGVuZGVuY2llcycsICdSb290JykpCi0KLW5vbm90aWZ5ID0gVHJ1
ZQotbm90cmF5aWNvbiA9IFRydWUKIGlmICdNQUtFRkxBR1MnIG5vdCBpbiBvcy5lbnZpcm9uOgog
ICAgIG9zLmVudmlyb25bJ01BS0VGTEFHUyddID0gJy1qJWQnICUgbXVsdGlwcm9jZXNzaW5nLmNw
dV9jb3VudCgpCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL2VmbC9jb21tb24ucHkgYi9Ub29scy9lZmwv
Y29tbW9uLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NzY1N2IzLi4wMDAwMDAw
Ci0tLSBhL1Rvb2xzL2VmbC9jb21tb24ucHkKKysrIC9kZXYvbnVsbApAQCAtMSwzMSArMCwwIEBA
Ci0jIS91c3IvYmluL2VudiBweXRob24KLSMgQ29weXJpZ2h0IChDKSAyMDExIElnYWxpYSBTLkwu
Ci0jCi0jIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0
ZSBpdCBhbmQvb3IKLSMgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3Nl
ciBHZW5lcmFsIFB1YmxpYwotIyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSMgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAo
YXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotIwotIyBUaGlzIGxpYnJhcnkgaXMg
ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSMgYnV0IFdJ
VEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YK
LSMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAg
U2VlIHRoZSBHTlUKLSMgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0
YWlscy4KLSMKLSMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExl
c3NlciBHZW5lcmFsIFB1YmxpYwotIyBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBp
ZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0jIEZvdW5kYXRpb24sIEluYy4sIDUx
IEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVT
QQotCi1pbXBvcnQgb3MKLQotc2NyaXB0X2RpciA9IE5vbmUKLQotCi1kZWYgc2NyaXB0X3BhdGgo
KmFyZ3MpOgotICAgIGdsb2JhbCBzY3JpcHRfZGlyCi0gICAgaWYgbm90IHNjcmlwdF9kaXI6Ci0g
ICAgICAgIHNjcmlwdF9kaXIgPSBvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9f
KSwgJy4uJywgJ1NjcmlwdHMnKQotICAgIHJldHVybiBvcy5wYXRoLmpvaW4oKihzY3JpcHRfZGly
LCkgKyBhcmdzKQotCi0KLWRlZiB0b3BfbGV2ZWxfcGF0aCgqYXJncyk6Ci0gICAgcmV0dXJuIG9z
LnBhdGguam9pbigqKChzY3JpcHRfcGF0aCgnLi4nLCAnLi4nKSwpICsgYXJncykpCmRpZmYgLS1n
aXQgYS9Ub29scy9qaGJ1aWxkL2poYnVpbGRyY19jb21tb24ucHkgYi9Ub29scy9qaGJ1aWxkL2po
YnVpbGRyY19jb21tb24ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWFm
YzQwNgotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL2poYnVpbGQvamhidWlsZHJjX2NvbW1vbi5w
eQpAQCAtMCwwICsxLDY0IEBACisjIS91c3IvYmluL2VudiBweXRob24KKyMgQ29weXJpZ2h0IChD
KSAyMDExIElnYWxpYSBTLkwuCisjIENvcHlyaWdodCAoQykgMjAxMiBJbnRlbCBDb3Jwb3JhdGlv
bgorIyBDb3B5cmlnaHQgKEMpIDIwMTIsIDIwMTMgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0
cyBzdWJzaWRpYXJ5KC1pZXMpLgorIworIyBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsg
eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisjIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVy
bXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyMgTGljZW5zZSBhcyBwdWJsaXNo
ZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisjIHZlcnNpb24gMiBv
ZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyMK
KyMgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBi
ZSB1c2VmdWwsCisjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp
bXBsaWVkIHdhcnJhbnR5IG9mCisjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisjIExlc3NlciBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisjCisjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBh
IGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyMgTGljZW5zZSBhbG9uZyB3
aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorIyBG
b3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24s
IE1BICAwMjExMC0xMzAxICBVU0EKKworaW1wb3J0IG11bHRpcHJvY2Vzc2luZworaW1wb3J0IHN5
cworaW1wb3J0IG9zCisKK3NjcmlwdF9kaXIgPSBOb25lCisKKworZGVmIHNjcmlwdF9wYXRoKCph
cmdzKToKKyAgICBnbG9iYWwgc2NyaXB0X2RpcgorICAgIGlmIG5vdCBzY3JpcHRfZGlyOgorICAg
ICAgICBzY3JpcHRfZGlyID0gb3MucGF0aC5qb2luKG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXyks
ICcuLicsICdTY3JpcHRzJykKKyAgICByZXR1cm4gb3MucGF0aC5qb2luKCooc2NyaXB0X2Rpciwp
ICsgYXJncykKKworCitkZWYgdG9wX2xldmVsX3BhdGgoKmFyZ3MpOgorICAgIHJldHVybiBvcy5w
YXRoLmpvaW4oKigob3MucGF0aC5qb2luKG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXyksICcuLics
ICcuLicpLCkgKyBhcmdzKSkKKworCitkZWYgaW5pdChqaGJ1aWxkcmNfZ2xvYmFscywgcGxhdGZv
cm0pOgorCisgICAgX190b29sc19kaXJlY3RvcnkgPSBvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJu
YW1lKF9fZmlsZV9fKSwgIi4uLyIsIHBsYXRmb3JtKQorICAgIHN5cy5wYXRoLmluc2VydCgwLCBf
X3Rvb2xzX2RpcmVjdG9yeSkKKworICAgIGpoYnVpbGRyY19nbG9iYWxzWyJidWlsZF9wb2xpY3ki
XSA9ICd1cGRhdGVkJworCisgICAgX19tb2R1bGVzZXRfZmlsZV91cmkgPSAnZmlsZTovLycgKyBv
cy5wYXRoLmpvaW4oX190b29sc19kaXJlY3RvcnksICdqaGJ1aWxkLm1vZHVsZXMnKQorICAgIF9f
ZXh0cmFfbW9kdWxlc2V0cyA9IG9zLmVudmlyb24uZ2V0KCJXRUJLSVRfRVhUUkFfTU9EVUxFU0VU
UyIsICIiKS5zcGxpdCgiLCIpCisgICAgamhidWlsZHJjX2dsb2JhbHNbIm1vZHVsZXNldCJdID0g
W19fbW9kdWxlc2V0X2ZpbGVfdXJpLCBdCisgICAgaWYgX19leHRyYV9tb2R1bGVzZXRzICE9IFsn
J106CisgICAgICAgIGpoYnVpbGRyY19nbG9iYWxzWyJtb2R1bGVzZXQiXS5leHRlbmQoX19leHRy
YV9tb2R1bGVzZXRzKQorCisgICAgX19leHRyYV9tb2R1bGVzID0gb3MuZW52aXJvbi5nZXQoIldF
QktJVF9FWFRSQV9NT0RVTEVTIiwgIiIpLnNwbGl0KCIsIikKKyAgICBqaGJ1aWxkcmNfZ2xvYmFs
c1sibW9kdWxlcyJdID0gWyd3ZWJraXQnICsgcGxhdGZvcm0gKyAnLXRlc3RpbmctZGVwZW5kZW5j
aWVzJywgXQorICAgIGlmIF9fZXh0cmFfbW9kdWxlcyAhPSBbJyddOgorICAgICAgICBqaGJ1aWxk
cmNfZ2xvYmFsc1sibW9kdWxlcyJdLmV4dGVuZChfX2V4dHJhX21vZHVsZXMpCisKKyAgICBpZiAn
V0VCS0lUX09VVFBVVERJUicgaW4gb3MuZW52aXJvbjoKKyAgICAgICAgamhidWlsZHJjX2dsb2Jh
bHNbImNoZWNrb3V0cm9vdCJdID0gY2hlY2tvdXRyb290ID0gb3MucGF0aC5hYnNwYXRoKG9zLnBh
dGguam9pbihvcy5lbnZpcm9uWydXRUJLSVRfT1VUUFVURElSJ10sICdEZXBlbmRlbmNpZXMnLCAn
U291cmNlJykpCisgICAgICAgIGpoYnVpbGRyY19nbG9iYWxzWyJwcmVmaXgiXSA9IG9zLnBhdGgu
YWJzcGF0aChvcy5wYXRoLmpvaW4ob3MuZW52aXJvblsnV0VCS0lUX09VVFBVVERJUiddLCAnRGVw
ZW5kZW5jaWVzJywgJ1Jvb3QnKSkKKyAgICBlbHNlOgorICAgICAgICBqaGJ1aWxkcmNfZ2xvYmFs
c1siY2hlY2tvdXRyb290Il0gPSBjaGVja291dHJvb3QgPSBvcy5wYXRoLmFic3BhdGgodG9wX2xl
dmVsX3BhdGgoJ1dlYktpdEJ1aWxkJywgJ0RlcGVuZGVuY2llcycsICdTb3VyY2UnKSkKKyAgICAg
ICAgamhidWlsZHJjX2dsb2JhbHNbInByZWZpeCJdID0gb3MucGF0aC5hYnNwYXRoKHRvcF9sZXZl
bF9wYXRoKCdXZWJLaXRCdWlsZCcsICdEZXBlbmRlbmNpZXMnLCAnUm9vdCcpKQorCisgICAgamhi
dWlsZHJjX2dsb2JhbHNbIm5vbm90aWZ5Il0gPSBUcnVlCisgICAgamhidWlsZHJjX2dsb2JhbHNb
Im5vdHJheWljb24iXSA9IFRydWUKZGlmZiAtLWdpdCBhL1Rvb2xzL25peC9jb21tb24ucHkgYi9U
b29scy9uaXgvY29tbW9uLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwYjhiNjYy
Li4wMDAwMDAwCi0tLSBhL1Rvb2xzL25peC9jb21tb24ucHkKKysrIC9kZXYvbnVsbApAQCAtMSwz
MiArMCwwIEBACi0jIS91c3IvYmluL2VudiBweXRob24KLSMgQ29weXJpZ2h0IChDKSAyMDExIEln
YWxpYSBTLkwuCi0jIENvcHlyaWdodCAoQykgMjAxMiwgMjAxMyBOb2tpYSBDb3Jwb3JhdGlvbiBh
bmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykuCi0jCi0jIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNv
ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSMgbW9kaWZ5IGl0IHVuZGVy
IHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotIyBMaWNlbnNlIGFz
IHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSMgdmVy
c2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJz
aW9uLgotIwotIyBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp
dCB3aWxsIGJlIHVzZWZ1bCwKLSMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2
ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSMgTGVzc2VyIEdlbmVyYWwg
UHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSMKLSMgWW91IHNob3VsZCBoYXZlIHJl
Y2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotIyBMaWNlbnNl
IGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3
YXJlCi0jIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3Is
IEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQotCi1pbXBvcnQgb3MKLQotc2NyaXB0X2RpciA9
IE5vbmUKLQotCi1kZWYgc2NyaXB0X3BhdGgoKmFyZ3MpOgotICAgIGdsb2JhbCBzY3JpcHRfZGly
Ci0gICAgaWYgbm90IHNjcmlwdF9kaXI6Ci0gICAgICAgIHNjcmlwdF9kaXIgPSBvcy5wYXRoLmpv
aW4ob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSwgJy4uJywgJ1NjcmlwdHMnKQotICAgIHJldHVy
biBvcy5wYXRoLmpvaW4oKihzY3JpcHRfZGlyLCkgKyBhcmdzKQotCi0KLWRlZiB0b3BfbGV2ZWxf
cGF0aCgqYXJncyk6Ci0gICAgcmV0dXJuIG9zLnBhdGguam9pbigqKChzY3JpcHRfcGF0aCgnLi4n
LCAnLi4nKSwpICsgYXJncykpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>224392</attachid>
            <date>2014-02-17 10:09:30 -0800</date>
            <delta_ts>2014-02-18 04:56:35 -0800</delta_ts>
            <desc>Patch v6</desc>
            <filename>extract.patch</filename>
            <type>text/plain</type>
            <size>18248</size>
            <attacher name="Tibor Mészáros">mtiborinf</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA0ZGZk
OWZmLi4wZTA3MzAyIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzEgQEAKKzIwMTQtMDItMTcgIFRpYm9yIE1lc3phcm9zICA8dG1l
c3phcm9zLnUtc3plZ2VkQHBhcnRuZXIuc2Ftc3VuZy5jb20+CisKKyAgICAgICAgRXh0cmFjdCBj
b21tb24gcGFydHMgZnJvbSBqaGJ1aWxkcmMgZmlsZXMuCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjU5ODYKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNjcmlwdHMvcnVuLWd0ay10ZXN0czoKKyAgICAg
ICAgKFRlc3RSdW5uZXIuX3NldHVwX3Rlc3RpbmdfZW52aXJvbm1lbnQpOgorICAgICAgICAqIGVm
bC9jb21tb24ucHk6IFJlbW92ZWQuCisgICAgICAgICogZWZsL2poYnVpbGRyYzoKKyAgICAgICAg
KiBndGsvY2hlY2stZ2RvbS1zeW1ib2xzOgorICAgICAgICAqIGd0ay9jb21tb24ucHk6CisgICAg
ICAgIChiaW5hcnlfYnVpbGRfcGF0aCk6CisgICAgICAgIChnZXRfYnVpbGRfcGF0aCk6CisgICAg
ICAgICogZ3RrL2ZpbmQtbWFrZS1kaXN0LWVycm9yczoKKyAgICAgICAgKGdldF9taXNzaW5nX2hl
YWRlcnMpOgorICAgICAgICAqIGd0ay9nZW5lcmF0ZS1ndGtkb2M6CisgICAgICAgIChnZXRfd2Vi
a2l0Ml9vcHRpb25zKToKKyAgICAgICAgKGdldF93ZWJraXQxX29wdGlvbnMuc3JjX3BhdGgpOgor
ICAgICAgICAoZ2V0X3dlYmtpdDFfb3B0aW9ucyk6CisgICAgICAgIChnZXRfd2Via2l0ZG9tX29w
dGlvbnMuc3JjX3BhdGgpOgorICAgICAgICAoZ2V0X3dlYmtpdGRvbV9vcHRpb25zKToKKyAgICAg
ICAgKiBndGsvZ2VuZXJhdGUtaW5zcGVjdG9yLWdyZXNvdXJjZS1tYW5pZmVzdC5weToKKyAgICAg
ICAgKiBndGsvamhidWlsZHJjOgorICAgICAgICAqIG5peC9jb21tb24ucHk6IFJlbW92ZWQuCisg
ICAgICAgICogbml4L2poYnVpbGRyYzoKKwogMjAxNC0wMi0xNSAgUnl1YW4gQ2hvaSAgPHJ5dWFu
LmNob2lAc2Ftc3VuZy5jb20+CiAKICAgICAgICAgQnVpbGQgYnJlYWsgd2hlbiBkaXNhYmxlZCBB
Q0NFU1NJQklMSVRZIHNpbmNlIHIxNjI5ODYKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvcnVu
LWd0ay10ZXN0cyBiL1Rvb2xzL1NjcmlwdHMvcnVuLWd0ay10ZXN0cwppbmRleCBlOTgwODYwLi40
YmI0NjNjIDEwMDc1NQotLS0gYS9Ub29scy9TY3JpcHRzL3J1bi1ndGstdGVzdHMKKysrIGIvVG9v
bHMvU2NyaXB0cy9ydW4tZ3RrLXRlc3RzCkBAIC0zMSw2ICszMSw5IEBAIHN5cy5wYXRoLmFwcGVu
ZChvcy5wYXRoLmpvaW4odG9wX2xldmVsX2RpcmVjdG9yeSwgIlRvb2xzIiwgImd0ayIpKQogaW1w
b3J0IGNvbW1vbgogaW1wb3J0IGpoYnVpbGR1dGlscwogCitzeXMucGF0aC5pbnNlcnQoMCwgb3Mu
cGF0aC5qb2luKG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXyksICIuLi9qaGJ1aWxkIikpCitpbXBv
cnQgamhidWlsZHJjX2NvbW1vbgorCiBjbGFzcyBTa2lwcGVkVGVzdDoKICAgICBFTlRJUkVfU1VJ
VEUgPSBOb25lCiAKQEAgLTE5NSw3ICsxOTgsNyBAQCBjbGFzcyBUZXN0UnVubmVyOgogICAgIGRl
ZiBfc2V0dXBfdGVzdGluZ19lbnZpcm9ubWVudChzZWxmKToKICAgICAgICAgc2VsZi5fdGVzdF9l
bnYgPSBvcy5lbnZpcm9uCiAgICAgICAgIHNlbGYuX3Rlc3RfZW52WydHU0VUVElOR1NfQkFDS0VO
RCddID0gJ21lbW9yeScKLSAgICAgICAgc2VsZi5fdGVzdF9lbnZbIlRFU1RfV0VCS0lUX0FQSV9X
RUJLSVQyX1JFU09VUkNFU19QQVRIIl0gPSBjb21tb24udG9wX2xldmVsX3BhdGgoIlRvb2xzIiwg
IlRlc3RXZWJLaXRBUEkiLCAiVGVzdHMiLCAiV2ViS2l0MiIpCisgICAgICAgIHNlbGYuX3Rlc3Rf
ZW52WyJURVNUX1dFQktJVF9BUElfV0VCS0lUMl9SRVNPVVJDRVNfUEFUSCJdID0gamhidWlsZHJj
X2NvbW1vbi50b3BfbGV2ZWxfcGF0aCgiVG9vbHMiLCAiVGVzdFdlYktpdEFQSSIsICJUZXN0cyIs
ICJXZWJLaXQyIikKICAgICAgICAgc2VsZi5fdGVzdF9lbnZbIlRFU1RfV0VCS0lUX0FQSV9XRUJL
SVQyX0lOSkVDVEVEX0JVTkRMRV9QQVRIIl0gPSBjb21tb24udGVzdHNfbGlicmFyeV9idWlsZF9w
YXRoKCkKICAgICAgICAgc2VsZi5fdGVzdF9lbnZbIldFQktJVF9FWEVDX1BBVEgiXSA9IHNlbGYu
X3Byb2dyYW1zX3BhdGgKIApkaWZmIC0tZ2l0IGEvVG9vbHMvZWZsL2NvbW1vbi5weSBiL1Rvb2xz
L2VmbC9jb21tb24ucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc3NjU3YjMuLjAw
MDAwMDAKLS0tIGEvVG9vbHMvZWZsL2NvbW1vbi5weQorKysgL2Rldi9udWxsCkBAIC0xLDMxICsw
LDAgQEAKLSMhL3Vzci9iaW4vZW52IHB5dGhvbgotIyBDb3B5cmlnaHQgKEMpIDIwMTEgSWdhbGlh
IFMuTC4KLSMKLSMgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vcgotIyBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg
TGVzc2VyIEdlbmVyYWwgUHVibGljCi0jIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotIyB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2Us
IG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0jCi0jIFRoaXMgbGlicmFy
eSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotIyBi
dXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50
eSBvZgotIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UuICBTZWUgdGhlIEdOVQotIyBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y
ZSBkZXRhaWxzLgotIwotIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH
TlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi0jIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJh
cnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSMgRm91bmRhdGlvbiwgSW5j
LiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMw
MSAgVVNBCi0KLWltcG9ydCBvcwotCi1zY3JpcHRfZGlyID0gTm9uZQotCi0KLWRlZiBzY3JpcHRf
cGF0aCgqYXJncyk6Ci0gICAgZ2xvYmFsIHNjcmlwdF9kaXIKLSAgICBpZiBub3Qgc2NyaXB0X2Rp
cjoKLSAgICAgICAgc2NyaXB0X2RpciA9IG9zLnBhdGguam9pbihvcy5wYXRoLmRpcm5hbWUoX19m
aWxlX18pLCAnLi4nLCAnU2NyaXB0cycpCi0gICAgcmV0dXJuIG9zLnBhdGguam9pbigqKHNjcmlw
dF9kaXIsKSArIGFyZ3MpCi0KLQotZGVmIHRvcF9sZXZlbF9wYXRoKCphcmdzKToKLSAgICByZXR1
cm4gb3MucGF0aC5qb2luKCooKHNjcmlwdF9wYXRoKCcuLicsICcuLicpLCkgKyBhcmdzKSkKZGlm
ZiAtLWdpdCBhL1Rvb2xzL2VmbC9qaGJ1aWxkcmMgYi9Ub29scy9lZmwvamhidWlsZHJjCmluZGV4
IDc3ZGFhZTkuLjY1ZGY2YjMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL2VmbC9qaGJ1aWxkcmMKKysrIGIv
VG9vbHMvZWZsL2poYnVpbGRyYwpAQCAtMTYsNDAgKzE2LDExIEBACiAjIExpY2Vuc2UgYWxvbmcg
d2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKICMg
Rm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9u
LCBNQSAgMDIxMTAtMTMwMSAgVVNBCiAKLWltcG9ydCBtdWx0aXByb2Nlc3NpbmcKIGltcG9ydCBz
eXMKIAotX19lZmxfdG9vbHNfZGlyZWN0b3J5ID0gb3MucGF0aC5hYnNwYXRoKG9zLnBhdGguZGly
bmFtZShfX2ZpbGVfXykpCi1zeXMucGF0aCA9IFtfX2VmbF90b29sc19kaXJlY3RvcnldICsgc3lz
LnBhdGgKLWltcG9ydCBjb21tb24KLQotYnVpbGRfcG9saWN5ID0gJ3VwZGF0ZWQnCi0KLSMgRklY
TUU6IG1vdmUgc2hhcmVkIHBhcnRzIGludG8gLi4vamhidWlsZCBmb2xkZXIuCi0KLV9fbW9kdWxl
c2V0X2ZpbGVfdXJpID0gJ2ZpbGU6Ly8nICsgb3MucGF0aC5qb2luKF9fZWZsX3Rvb2xzX2RpcmVj
dG9yeSwgJ2poYnVpbGQubW9kdWxlcycpCi1fX2V4dHJhX21vZHVsZXNldHMgPSBvcy5lbnZpcm9u
LmdldCgiV0VCS0lUX0VYVFJBX01PRFVMRVNFVFMiLCAiIikuc3BsaXQoIiwiKQotbW9kdWxlc2V0
ID0gWyBfX21vZHVsZXNldF9maWxlX3VyaSwgXQotaWYgX19leHRyYV9tb2R1bGVzZXRzICE9IFsn
J106Ci0gICAgbW9kdWxlc2V0LmV4dGVuZChfX2V4dHJhX21vZHVsZXNldHMpCi0KLV9fZXh0cmFf
bW9kdWxlcyA9IG9zLmVudmlyb24uZ2V0KCJXRUJLSVRfRVhUUkFfTU9EVUxFUyIsICIiKS5zcGxp
dCgiLCIpCi1tb2R1bGVzID0gWyAnd2Via2l0ZWZsLXRlc3RpbmctZGVwZW5kZW5jaWVzJywgXQot
aWYgX19leHRyYV9tb2R1bGVzICE9IFsnJ106Ci0gICAgbW9kdWxlcy5leHRlbmQoX19leHRyYV9t
b2R1bGVzKQotCi1pZiBvcy5lbnZpcm9uLmhhc19rZXkoJ1dFQktJVF9PVVRQVVRESVInKToKLSAg
ICBjaGVja291dHJvb3QgPSBvcy5wYXRoLmFic3BhdGgob3MucGF0aC5qb2luKG9zLmVudmlyb25b
J1dFQktJVF9PVVRQVVRESVInXSwgJ0RlcGVuZGVuY2llcycsICdTb3VyY2UnKSkKLSAgICBwcmVm
aXggPSBvcy5wYXRoLmFic3BhdGgob3MucGF0aC5qb2luKG9zLmVudmlyb25bJ1dFQktJVF9PVVRQ
VVRESVInXSwgJ0RlcGVuZGVuY2llcycsICdSb290JykpCi1lbHNlOgotICAgIGNoZWNrb3V0cm9v
dCA9IG9zLnBhdGguYWJzcGF0aChjb21tb24udG9wX2xldmVsX3BhdGgoJ1dlYktpdEJ1aWxkJywn
RGVwZW5kZW5jaWVzJywgJ1NvdXJjZScpKQotICAgIHByZWZpeCA9IG9zLnBhdGguYWJzcGF0aChj
b21tb24udG9wX2xldmVsX3BhdGgoJ1dlYktpdEJ1aWxkJywnRGVwZW5kZW5jaWVzJywgJ1Jvb3Qn
KSkKLQotbm9ub3RpZnkgPSBUcnVlCi1ub3RyYXlpY29uID0gVHJ1ZQotCi1pZiAnTlVNQkVSX09G
X1BST0NFU1NPUlMnIGluIG9zLmVudmlyb246Ci0gICAgam9icyA9IG9zLmVudmlyb25bJ05VTUJF
Ul9PRl9QUk9DRVNTT1JTJ10KK3N5cy5wYXRoLmluc2VydCgwLCBvcy5wYXRoLmpvaW4ob3MucGF0
aC5kaXJuYW1lKF9fZmlsZV9fKSwgIi4uL2poYnVpbGQiKSApCitpbXBvcnQgamhidWlsZHJjX2Nv
bW1vbgoramhidWlsZHJjX2NvbW1vbi5pbml0KGdsb2JhbHMoKSwgImVmbCIpIAogCiAjIFVzZSBz
eXN0ZW0gbGlicmFyaWVzIHdoaWxlIGJ1aWxkaW5nLgogaWYgdXNlX2xpYjY0OgpkaWZmIC0tZ2l0
IGEvVG9vbHMvZ3RrL2NoZWNrLWdkb20tc3ltYm9scyBiL1Rvb2xzL2d0ay9jaGVjay1nZG9tLXN5
bWJvbHMKaW5kZXggZjExMDhiNy4uYjdhM2E0YyAxMDA3NTUKLS0tIGEvVG9vbHMvZ3RrL2NoZWNr
LWdkb20tc3ltYm9scworKysgYi9Ub29scy9ndGsvY2hlY2stZ2RvbS1zeW1ib2xzCkBAIC0yMiw2
ICsyMiw4IEBAIGltcG9ydCBzdWJwcm9jZXNzCiBpbXBvcnQgc3lzCiBpbXBvcnQgdGVtcGZpbGUK
IAorc3lzLnBhdGguaW5zZXJ0KDAsIG9zLnBhdGguam9pbihvcy5wYXRoLmRpcm5hbWUoX19maWxl
X18pLCAiLi4vamhidWlsZCIpKQoraW1wb3J0IGpoYnVpbGRyY19jb21tb24KIAogZGVmIHNob3Vs
ZF91cGRhdGVfc3ltYm9sc19maWxlKG5ldywgb2xkKToKICAgICBpZiBub3Qgb3MucGF0aC5leGlz
dHMob2xkKToKQEAgLTUwLDcgKzUyLDcgQEAgaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKICAg
ICAgICAgICAgICAgICB0bXAud3JpdGUoZmlsZV9oYW5kbGUucmVhZCgpKQogICAgICAgICB0bXAu
Zmx1c2goKQogCi0gICAgICAgIGdkb21fc291cmNlX3BhdGggPSBjb21tb24udG9wX2xldmVsX3Bh
dGgoJ1NvdXJjZScsICdXZWJDb3JlJywgJ2JpbmRpbmdzJykKKyAgICAgICAgZ2RvbV9zb3VyY2Vf
cGF0aCA9IGpoYnVpbGRyY19jb21tb24udG9wX2xldmVsX3BhdGgoJ1NvdXJjZScsICdXZWJDb3Jl
JywgJ2JpbmRpbmdzJykKICAgICAgICAgYXBpX2JyZWFrX3Rlc3RfcGF0aCA9IG9zLnBhdGguam9p
bihnZG9tX3NvdXJjZV9wYXRoLCAnc2NyaXB0cycsICdnb2JqZWN0LXJ1bi1hcGktYnJlYWstdGVz
dCcpCiAgICAgICAgIHN1YnByb2Nlc3MuY2FsbChbc3lzLmV4ZWN1dGFibGUsIGFwaV9icmVha190
ZXN0X3BhdGgsIG9zLnBhdGguam9pbihnZG9tX3NvdXJjZV9wYXRoLCAnZ29iamVjdCcsICAnd2Vi
a2l0ZG9tLnN5bWJvbHMnKSwgdG1wLm5hbWVdKQogCmRpZmYgLS1naXQgYS9Ub29scy9ndGsvY29t
bW9uLnB5IGIvVG9vbHMvZ3RrL2NvbW1vbi5weQppbmRleCAwMmRiOTMyLi42ZTUxYWY1IDEwMDY0
NAotLS0gYS9Ub29scy9ndGsvY29tbW9uLnB5CisrKyBiL1Rvb2xzL2d0ay9jb21tb24ucHkKQEAg
LTIxLDcgKzIxLDkgQEAgaW1wb3J0IHNlbGVjdAogaW1wb3J0IHN1YnByb2Nlc3MKIGltcG9ydCBz
eXMKIAotc2NyaXB0X2RpciA9IE5vbmUKK3N5cy5wYXRoLmluc2VydCgwLCBvcy5wYXRoLmpvaW4o
b3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSwgIi4uL2poYnVpbGQiKSkKK2ltcG9ydCBqaGJ1aWxk
cmNfY29tbW9uCisKIGJ1aWxkX2RpciA9IE5vbmUKIGxpYnJhcnlfYnVpbGRfZGlyID0gTm9uZQog
dGVzdHNfbGlicmFyeV9idWlsZF9kaXIgPSBOb25lCkBAIC03MSwxNyArNzMsNiBAQCBkZWYgYmlu
YXJ5X2J1aWxkX3BhdGgoKmFyZ3MpOgogICAgIHJldHVybiBsaWJyYXJ5X2J1aWxkX2RpcgogCiAK
LWRlZiBzY3JpcHRfcGF0aCgqYXJncyk6Ci0gICAgZ2xvYmFsIHNjcmlwdF9kaXIKLSAgICBpZiBu
b3Qgc2NyaXB0X2RpcjoKLSAgICAgICAgc2NyaXB0X2RpciA9IG9zLnBhdGguam9pbihvcy5wYXRo
LmRpcm5hbWUoX19maWxlX18pLCAnLi4nLCAnU2NyaXB0cycpCi0gICAgcmV0dXJuIG9zLnBhdGgu
am9pbigqKHNjcmlwdF9kaXIsKSArIGFyZ3MpCi0KLQotZGVmIHRvcF9sZXZlbF9wYXRoKCphcmdz
KToKLSAgICByZXR1cm4gb3MucGF0aC5qb2luKCooKG9zLnBhdGguam9pbihvcy5wYXRoLmRpcm5h
bWUoX19maWxlX18pLCAnLi4nLCAnLi4nKSwpICsgYXJncykpCi0KLQogZGVmIGdldF9idWlsZF9w
YXRoKGZhdGFsPVRydWUpOgogICAgIGdsb2JhbCBidWlsZF9kaXIKICAgICBpZiBidWlsZF9kaXI6
CkBAIC0xMDksMjAgKzEwMCwyMCBAQCBkZWYgZ2V0X2J1aWxkX3BhdGgoZmF0YWw9VHJ1ZSk6CiAK
ICAgICBnbG9iYWwgYnVpbGRfdHlwZXMKICAgICBmb3IgYnVpbGRfdHlwZSBpbiBidWlsZF90eXBl
czoKLSAgICAgICAgYnVpbGRfZGlyID0gdG9wX2xldmVsX3BhdGgoJ1dlYktpdEJ1aWxkJywgYnVp
bGRfdHlwZSkKKyAgICAgICAgYnVpbGRfZGlyID0gamhidWlsZHJjX2NvbW1vbi50b3BfbGV2ZWxf
cGF0aCgnV2ViS2l0QnVpbGQnLCBidWlsZF90eXBlKQogICAgICAgICBpZiBpc192YWxpZF9idWls
ZF9kaXJlY3RvcnkoYnVpbGRfZGlyKToKICAgICAgICAgICAgIHJldHVybiBidWlsZF9kaXIKIAog
ICAgICMgZGlzdGNoZWNrIGJ1aWxkcyBpbiBhIGRpcmVjdG9yeSBuYW1lZCBfYnVpbGQgaW4gdGhl
IHRvcC1sZXZlbCBwYXRoLgotICAgIGJ1aWxkX2RpciA9IHRvcF9sZXZlbF9wYXRoKCJfYnVpbGQi
KQorICAgIGJ1aWxkX2RpciA9IGpoYnVpbGRyY19jb21tb24udG9wX2xldmVsX3BhdGgoIl9idWls
ZCIpCiAgICAgaWYgaXNfdmFsaWRfYnVpbGRfZGlyZWN0b3J5KGJ1aWxkX2Rpcik6CiAgICAgICAg
IHJldHVybiBidWlsZF9kaXIKIAotICAgIGJ1aWxkX2RpciA9IHRvcF9sZXZlbF9wYXRoKCkKKyAg
ICBidWlsZF9kaXIgPSBqaGJ1aWxkcmNfY29tbW9uLnRvcF9sZXZlbF9wYXRoKCkKICAgICBpZiBp
c192YWxpZF9idWlsZF9kaXJlY3RvcnkoYnVpbGRfZGlyKToKICAgICAgICAgcmV0dXJuIGJ1aWxk
X2RpcgogCi0gICAgYnVpbGRfZGlyID0gdG9wX2xldmVsX3BhdGgoIldlYktpdEJ1aWxkIikKKyAg
ICBidWlsZF9kaXIgPSBqaGJ1aWxkcmNfY29tbW9uLnRvcF9sZXZlbF9wYXRoKCJXZWJLaXRCdWls
ZCIpCiAgICAgaWYgaXNfdmFsaWRfYnVpbGRfZGlyZWN0b3J5KGJ1aWxkX2Rpcik6CiAgICAgICAg
IHJldHVybiBidWlsZF9kaXIKIApkaWZmIC0tZ2l0IGEvVG9vbHMvZ3RrL2ZpbmQtbWFrZS1kaXN0
LWVycm9ycyBiL1Rvb2xzL2d0ay9maW5kLW1ha2UtZGlzdC1lcnJvcnMKaW5kZXggODgwYzc4MC4u
MzVkOGE3NCAxMDA3NTUKLS0tIGEvVG9vbHMvZ3RrL2ZpbmQtbWFrZS1kaXN0LWVycm9ycworKysg
Yi9Ub29scy9ndGsvZmluZC1tYWtlLWRpc3QtZXJyb3JzCkBAIC0yMCw2ICsyMCw5IEBAIGltcG9y
dCBvcwogaW1wb3J0IHN1YnByb2Nlc3MKIGltcG9ydCBzeXMKIAorc3lzLnBhdGguaW5zZXJ0KDAs
IG9zLnBhdGguam9pbihvcy5wYXRoLmRpcm5hbWUoX19maWxlX18pLCAiLi4vamhidWlsZCIpKQor
aW1wb3J0IGpoYnVpbGRyY19jb21tb24KKwogZGVmIGlzX3NvdXJjZV9maWxlX2xpc3RpbmcobGlu
ZSk6CiAgICAgcmV0dXJuIGxpbmUuc3RyaXAoKS5zdGFydHN3aXRoKCdTb3VyY2UnKQogCkBAIC04
Niw3ICs4OSw3IEBAIGRlZiBnZXRfdW5saXN0ZWRfaGVhZGVycyhsaXN0ZWRfbWFrZWZpbGVfaGVh
ZGVycyk6CiBkZWYgZ2V0X21pc3NpbmdfaGVhZGVycyhsaXN0ZWRfbWFrZWZpbGVfaGVhZGVycyk6
CiAgICAgbWlzc2luZyA9IHNldCgpCiAgICAgZm9yIGhlYWRlciBpbiBsaXN0ZWRfbWFrZWZpbGVf
aGVhZGVyczoKLSAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKGNvbW1vbi50b3BfbGV2ZWxf
cGF0aChoZWFkZXIpKToKKyAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKGpoYnVpbGRyY19j
b21tb24udG9wX2xldmVsX3BhdGgoaGVhZGVyKSk6CiAgICAgICAgICAgICBtaXNzaW5nLmFkZCho
ZWFkZXIpCiAgICAgcmV0dXJuIG1pc3NpbmcKIApkaWZmIC0tZ2l0IGEvVG9vbHMvZ3RrL2dlbmVy
YXRlLWd0a2RvYyBiL1Rvb2xzL2d0ay9nZW5lcmF0ZS1ndGtkb2MKaW5kZXggY2UyMjBhNi4uZDc4
OTg5ZCAxMDA3NTUKLS0tIGEvVG9vbHMvZ3RrL2dlbmVyYXRlLWd0a2RvYworKysgYi9Ub29scy9n
dGsvZ2VuZXJhdGUtZ3RrZG9jCkBAIC0yMiw2ICsyMiw5IEBAIGltcG9ydCBsb2dnaW5nCiBpbXBv
cnQgb3MucGF0aAogaW1wb3J0IHN5cwogCitzeXMucGF0aC5pbnNlcnQoMCwgb3MucGF0aC5qb2lu
KG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXyksICIuLi9qaGJ1aWxkIikpCitpbXBvcnQgamhidWls
ZHJjX2NvbW1vbgorCiBkZWYgY29uZmlndXJlX2xvZ2dpbmcoKToKICAgICBsZXZlbCA9IGxvZ2dp
bmcuREVCVUcgaWYgJy12JyBpbiBzeXMuYXJndiBlbHNlIGxvZ2dpbmcuSU5GTwogICAgIGxvZ2dl
ciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCdndGtkb2MnKQpAQCAtNzYsOCArNzksOCBAQCBkZWYgd2Vi
a2l0ZG9tX2RvY3NfaHRtbF9wYXRoKCk6CiAgICAgcmV0dXJuIGNvbW1vbi5idWlsZF9wYXRoKCdE
b2N1bWVudGF0aW9uJywgJ3dlYmtpdGRvbWd0aycsICdodG1sJykKIAogZGVmIGdldF93ZWJraXQy
X29wdGlvbnMoKToKLSAgICBhcGlfcGF0aCA9IGNvbW1vbi50b3BfbGV2ZWxfcGF0aCgnU291cmNl
JywgJ1dlYktpdDInLCAnVUlQcm9jZXNzJywgJ0FQSScsICdndGsnKQotICAgIGluamVjdGVkX2J1
bmRsZV9hcGlfcGF0aCA9IGNvbW1vbi50b3BfbGV2ZWxfcGF0aCgnU291cmNlJywgJ1dlYktpdDIn
LCAnV2ViUHJvY2VzcycsICdJbmplY3RlZEJ1bmRsZScsICdBUEknLCAnZ3RrJykKKyAgICBhcGlf
cGF0aCA9IGpoYnVpbGRyY19jb21tb24udG9wX2xldmVsX3BhdGgoJ1NvdXJjZScsICdXZWJLaXQy
JywgJ1VJUHJvY2VzcycsICdBUEknLCAnZ3RrJykKKyAgICBpbmplY3RlZF9idW5kbGVfYXBpX3Bh
dGggPSBqaGJ1aWxkcmNfY29tbW9uLnRvcF9sZXZlbF9wYXRoKCdTb3VyY2UnLCAnV2ViS2l0Mics
ICdXZWJQcm9jZXNzJywgJ0luamVjdGVkQnVuZGxlJywgJ0FQSScsICdndGsnKSAKIAogICAgIGlm
IGNvbW1vbi5pc19jbWFrZV9idWlsZCgpOgogICAgICAgICBnZW5lcmF0ZWRfYXBpX3BhdGggPSBj
b21tb24uYnVpbGRfcGF0aCgnRGVyaXZlZFNvdXJjZXMnLCAnd2Via2l0Mmd0aycsICd3ZWJraXQy
JykKQEAgLTEwMSw3ICsxMDQsNyBAQCBkZWYgZ2V0X3dlYmtpdDJfb3B0aW9ucygpOgogICAgICAg
ICAnc291cmNlX2RpcnMnIDogW3NyY19wYXRoKCksIGdlbmVyYXRlZF9hcGlfcGF0aCwgaW5qZWN0
ZWRfYnVuZGxlX2FwaV9wYXRoXSwKICAgICAgICAgJ2NmbGFncycgOgogICAgICAgICAgICAgIyBD
b21tb24gcGF0aHMKLSAgICAgICAgICAgICcgLUknICsgY29tbW9uLnRvcF9sZXZlbF9wYXRoKCdT
b3VyY2UnKSArIFwKKyAgICAgICAgICAgICcgLUknICsgamhidWlsZHJjX2NvbW1vbi50b3BfbGV2
ZWxfcGF0aCgnU291cmNlJykgKyBcCiAgICAgICAgICAgICAnIC1JJyArIGFwaV9wYXRoICsgXAog
ICAgICAgICAgICAgIyBBdXRvdG9vbHMgcGF0aHMKICAgICAgICAgICAgICcgLUknICsgY29tbW9u
LmJ1aWxkX3BhdGgoJ0Rlcml2ZWRTb3VyY2VzJywgJ3dlYmtpdDJndGsnLCAnaW5jbHVkZScpICsg
XApAQCAtMTI3LDcgKzEzMCw3IEBAIGRlZiBnZXRfd2Via2l0Ml9vcHRpb25zKCk6CiAKIGRlZiBn
ZXRfd2Via2l0MV9vcHRpb25zKGd0a192ZXJzaW9uKToKICAgICBkZWYgc3JjX3BhdGgoKmFyZ3Mp
OgotICAgICAgICByZXR1cm4gY29tbW9uLnRvcF9sZXZlbF9wYXRoKCooKCdTb3VyY2UnLCAnV2Vi
S2l0JywgJ2d0aycpICsgYXJncykpCisgICAgICAgIHJldHVybiBqaGJ1aWxkcmNfY29tbW9uLnRv
cF9sZXZlbF9wYXRoKCooKCdTb3VyY2UnLCAnV2ViS2l0JywgJ2d0aycpICsgYXJncykpCiAKICAg
ICBkZWYgd2Via2l0dmVyc2lvbmhfcGF0aCgpOgogICAgICAgICBpZiBjb21tb24uaXNfY21ha2Vf
YnVpbGQoKToKQEAgLTE1NSw4ICsxNTgsOCBAQCBkZWYgZ2V0X3dlYmtpdDFfb3B0aW9ucyhndGtf
dmVyc2lvbik6CiAgICAgICAgICdjZmxhZ3MnIDogJyAtSScgKyBjb21tb24uYnVpbGRfcGF0aCgn
V2ViS2l0JywgJ2d0aycpICsgXAogICAgICAgICAgICAgICAgICAgICcgLUknICsgY29tbW9uLmJ1
aWxkX3BhdGgoJ0Rlcml2ZWRTb3VyY2VzJykgKyBcCiAgICAgICAgICAgICAgICAgICAgJyAtSScg
KyBzcmNfcGF0aCgpICsgXAotICAgICAgICAgICAgICAgICAgICcgLUknICsgY29tbW9uLnRvcF9s
ZXZlbF9wYXRoKCdTb3VyY2UnKSArIFwKLSAgICAgICAgICAgICAgICAgICAnIC1JJyArIGNvbW1v
bi50b3BfbGV2ZWxfcGF0aCgnU291cmNlJywgJ0phdmFTY3JpcHRDb3JlJywgJ0ZvcndhcmRpbmdI
ZWFkZXJzJyksCisgICAgICAgICAgICAgICAgICAgJyAtSScgKyBqaGJ1aWxkcmNfY29tbW9uLnRv
cF9sZXZlbF9wYXRoKCdTb3VyY2UnKSArIFwKKyAgICAgICAgICAgICAgICAgICAnIC1JJyArIGpo
YnVpbGRyY19jb21tb24udG9wX2xldmVsX3BhdGgoJ1NvdXJjZScsICdKYXZhU2NyaXB0Q29yZScs
ICdGb3J3YXJkaW5nSGVhZGVycycpLAogICAgICAgICAnY3Jvc3NfcmVmZXJlbmNlX2RlcHMnIDog
Z2V0X2d0a2RvY19tb2R1bGVfcGF0aHMoeHJlZl9kZXBzKSArIFt3ZWJraXRkb21fZG9jc19odG1s
X3BhdGgoKV0sCiAgICAgICAgICdpZ25vcmVkX2ZpbGVzJzogZ2xvYi5nbG9iKHNyY19wYXRoKCd3
ZWJraXQnLCAnKnByaXZhdGUuKicpKSArIFwKICAgICAgICAgICAgICAgICAgICAgICAgICBnbG9i
Lmdsb2Ioc3JjX3BhdGgoJ3dlYmtpdCcsICd3ZWJraXRhdXRoZW50aWNhdGlvbmRpYWxvZy4qJykp
ICsgXApAQCAtMTY4LDcgKzE3MSw3IEBAIGRlZiBnZXRfd2Via2l0ZG9tX29wdGlvbnMoKToKICAg
ICBkZWYgZGVyaXZlZF9zb3VyY2VzX3BhdGgoKmFyZ3MpOgogICAgICAgICByZXR1cm4gY29tbW9u
LmJ1aWxkX3BhdGgoKigoJ0Rlcml2ZWRTb3VyY2VzJywgJ3dlYmtpdGRvbScpICsgYXJncykpCiAg
ICAgZGVmIHNyY19wYXRoKCphcmdzKToKLSAgICAgICAgcmV0dXJuIGNvbW1vbi50b3BfbGV2ZWxf
cGF0aCgqKCgnU291cmNlJywgJ1dlYkNvcmUnLCAnYmluZGluZ3MnLCAnZ29iamVjdCcpICsgYXJn
cykpCisgICAgICAgIHJldHVybiBqaGJ1aWxkcmNfY29tbW9uLnRvcF9sZXZlbF9wYXRoKCooKCdT
b3VyY2UnLCAnV2ViQ29yZScsICdiaW5kaW5ncycsICdnb2JqZWN0JykgKyBhcmdzKSkKIAogICAg
IHhyZWZfZGVwcyA9IHsgJ2dsaWItMi4wJyA6IFsnZ2xpYicsICdnb2JqZWN0JywgJ2dpbyddIH0K
IApAQCAtMTgxLDcgKzE4NCw3IEBAIGRlZiBnZXRfd2Via2l0ZG9tX29wdGlvbnMoKToKICAgICAg
ICAgJ3NvdXJjZV9kaXJzJyA6IFtkZXJpdmVkX3NvdXJjZXNfcGF0aCgpXSwKICAgICAgICAgJ2Nm
bGFncycgOiAnIC1JJyArIGRlcml2ZWRfc291cmNlc19wYXRoKCkgKyBcCiAgICAgICAgICAgICAg
ICAgICAgJyAtSScgKyBzcmNfcGF0aCgpICsgXAotICAgICAgICAgICAgICAgICAgICcgLUknICsg
Y29tbW9uLnRvcF9sZXZlbF9wYXRoKCdTb3VyY2UnKSwKKyAgICAgICAgICAgICAgICAgICAnIC1J
JyArIGpoYnVpbGRyY19jb21tb24udG9wX2xldmVsX3BhdGgoJ1NvdXJjZScpLAogICAgICAgICAn
Y3Jvc3NfcmVmZXJlbmNlX2RlcHMnIDogZ2V0X2d0a2RvY19tb2R1bGVfcGF0aHMoeHJlZl9kZXBz
KSwKICAgICAgICAgJ2lnbm9yZWRfZmlsZXMnOiBnbG9iLmdsb2IoZGVyaXZlZF9zb3VyY2VzX3Bh
dGgoJypQcml2YXRlLmgnKSkKICAgICB9KQpkaWZmIC0tZ2l0IGEvVG9vbHMvZ3RrL2dlbmVyYXRl
LWluc3BlY3Rvci1ncmVzb3VyY2UtbWFuaWZlc3QucHkgYi9Ub29scy9ndGsvZ2VuZXJhdGUtaW5z
cGVjdG9yLWdyZXNvdXJjZS1tYW5pZmVzdC5weQppbmRleCA1OGExZGYxLi4wYmQ2Mzk0IDEwMDc1
NQotLS0gYS9Ub29scy9ndGsvZ2VuZXJhdGUtaW5zcGVjdG9yLWdyZXNvdXJjZS1tYW5pZmVzdC5w
eQorKysgYi9Ub29scy9ndGsvZ2VuZXJhdGUtaW5zcGVjdG9yLWdyZXNvdXJjZS1tYW5pZmVzdC5w
eQpAQCAtMjAsNyArMjAsMTAgQEAgaW1wb3J0IGdsb2IKIGltcG9ydCBvcwogaW1wb3J0IHN5cwog
Ci1yZXNvdXJjZXNfcGF0aCA9IGNvbW1vbi50b3BfbGV2ZWxfcGF0aCgpICsgIi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvIgorc3lzLnBhdGguaW5zZXJ0KDAsIG9zLnBhdGguam9pbihvcy5wYXRoLmRp
cm5hbWUoX19maWxlX18pLCAiLi4vamhidWlsZCIpKQoraW1wb3J0IGpoYnVpbGRyY19jb21tb24K
KworcmVzb3VyY2VzX3BhdGggPSBqaGJ1aWxkcmNfY29tbW9uLnRvcF9sZXZlbF9wYXRoKCkgKyAi
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS8iCiBpbnNwZWN0b3JfZmlsZXMgPSBcCiAgICAgZ2xvYi5n
bG9iKHJlc291cmNlc19wYXRoICsgJ1VzZXJJbnRlcmZhY2UvKi5odG1sJykgKyBcCiAgICAgZ2xv
Yi5nbG9iKHJlc291cmNlc19wYXRoICsgJ1VzZXJJbnRlcmZhY2UvKi5qcycpICsgXApkaWZmIC0t
Z2l0IGEvVG9vbHMvZ3RrL2poYnVpbGRyYyBiL1Rvb2xzL2d0ay9qaGJ1aWxkcmMKaW5kZXggNjlm
OTQ1Ny4uYWNlYzY3NSAxMDA2NDQKLS0tIGEvVG9vbHMvZ3RrL2poYnVpbGRyYworKysgYi9Ub29s
cy9ndGsvamhidWlsZHJjCkBAIC0xNSwzNiArMTUsMTYgQEAKICMgTGljZW5zZSBhbG9uZyB3aXRo
IHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQogIyBGb3Vu
ZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1B
ICAwMjExMC0xMzAxICBVU0EKIAotaW1wb3J0IG11bHRpcHJvY2Vzc2luZwogaW1wb3J0IHN5cwog
CitzeXMucGF0aC5pbnNlcnQoMCwgb3MucGF0aC5qb2luKG9zLnBhdGguZGlybmFtZShfX2ZpbGVf
XyksICIuLi9qaGJ1aWxkIikgKQoraW1wb3J0IGpoYnVpbGRyY19jb21tb24KK2poYnVpbGRyY19j
b21tb24uaW5pdChnbG9iYWxzKCksICJndGsiKQorCiBfX2d0a190b29sc19kaXJlY3RvcnkgPSBv
cy5wYXRoLmFic3BhdGgob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSkKIHN5cy5wYXRoID0gW19f
Z3RrX3Rvb2xzX2RpcmVjdG9yeV0gKyBzeXMucGF0aAogaW1wb3J0IGNvbW1vbgogCi1idWlsZF9w
b2xpY3kgPSAndXBkYXRlZCcKLQotX19tb2R1bGVzZXRfZmlsZV91cmkgPSAnZmlsZTovLycgKyBv
cy5wYXRoLmpvaW4oX19ndGtfdG9vbHNfZGlyZWN0b3J5LCAnamhidWlsZC5tb2R1bGVzJykKLV9f
ZXh0cmFfbW9kdWxlc2V0cyA9IG9zLmVudmlyb24uZ2V0KCJXRUJLSVRfRVhUUkFfTU9EVUxFU0VU
UyIsICIiKS5zcGxpdCgiLCIpCi1tb2R1bGVzZXQgPSBbIF9fbW9kdWxlc2V0X2ZpbGVfdXJpLCBd
Ci1pZiBfX2V4dHJhX21vZHVsZXNldHMgIT0gWycnXToKLSAgICBtb2R1bGVzZXQuZXh0ZW5kKF9f
ZXh0cmFfbW9kdWxlc2V0cykKLQotX19leHRyYV9tb2R1bGVzID0gb3MuZW52aXJvbi5nZXQoIldF
QktJVF9FWFRSQV9NT0RVTEVTIiwgIiIpLnNwbGl0KCIsIikKLW1vZHVsZXMgPSBbICd3ZWJraXRn
dGstdGVzdGluZy1kZXBlbmRlbmNpZXMnLCBdCi1pZiBfX2V4dHJhX21vZHVsZXMgIT0gWycnXToK
LSAgICBtb2R1bGVzLmV4dGVuZChfX2V4dHJhX21vZHVsZXMpCi0KLWlmIG9zLmVudmlyb24uaGFz
X2tleSgnV0VCS0lUX09VVFBVVERJUicpOgotICAgIGNoZWNrb3V0cm9vdCA9IG9zLnBhdGguYWJz
cGF0aChvcy5wYXRoLmpvaW4ob3MuZW52aXJvblsnV0VCS0lUX09VVFBVVERJUiddLCAnRGVwZW5k
ZW5jaWVzJywgJ1NvdXJjZScpKQotICAgIHByZWZpeCA9IG9zLnBhdGguYWJzcGF0aChvcy5wYXRo
LmpvaW4ob3MuZW52aXJvblsnV0VCS0lUX09VVFBVVERJUiddLCAnRGVwZW5kZW5jaWVzJywgJ1Jv
b3QnKSkKLWVsc2U6Ci0gICAgY2hlY2tvdXRyb290ID0gb3MucGF0aC5hYnNwYXRoKGNvbW1vbi50
b3BfbGV2ZWxfcGF0aCgnV2ViS2l0QnVpbGQnLCdEZXBlbmRlbmNpZXMnLCAnU291cmNlJykpCi0g
ICAgcHJlZml4ID0gb3MucGF0aC5hYnNwYXRoKGNvbW1vbi50b3BfbGV2ZWxfcGF0aCgnV2ViS2l0
QnVpbGQnLCdEZXBlbmRlbmNpZXMnLCAnUm9vdCcpKQotCi1ub25vdGlmeSA9IFRydWUKLW5vdHJh
eWljb24gPSBUcnVlCi0KIGlmICdOVU1CRVJfT0ZfUFJPQ0VTU09SUycgaW4gb3MuZW52aXJvbjoK
ICAgICBqb2JzID0gb3MuZW52aXJvblsnTlVNQkVSX09GX1BST0NFU1NPUlMnXQogCmRpZmYgLS1n
aXQgYS9Ub29scy9uaXgvY29tbW9uLnB5IGIvVG9vbHMvbml4L2NvbW1vbi5weQpkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMGI4YjY2Mi4uMDAwMDAwMAotLS0gYS9Ub29scy9uaXgvY29t
bW9uLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMzIgKzAsMCBAQAotIyEvdXNyL2Jpbi9lbnYgcHl0
aG9uCi0jIENvcHlyaWdodCAoQykgMjAxMSBJZ2FsaWEgUy5MLgotIyBDb3B5cmlnaHQgKEMpIDIw
MTIsIDIwMTMgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpLgot
IwotIyBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg
aXQgYW5kL29yCi0jIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIg
R2VuZXJhbCBQdWJsaWMKLSMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbjsgZWl0aGVyCi0jIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0
IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSMKLSMgVGhpcyBsaWJyYXJ5IGlzIGRp
c3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0jIGJ1dCBXSVRI
T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0j
IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl
ZSB0aGUgR05VCi0jIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp
bHMuCi0jCi0jIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNz
ZXIgR2VuZXJhbCBQdWJsaWMKLSMgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYg
bm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotIyBGb3VuZGF0aW9uLCBJbmMuLCA1MSBG
cmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxICBVU0EK
LQotaW1wb3J0IG9zCi0KLXNjcmlwdF9kaXIgPSBOb25lCi0KLQotZGVmIHNjcmlwdF9wYXRoKCph
cmdzKToKLSAgICBnbG9iYWwgc2NyaXB0X2RpcgotICAgIGlmIG5vdCBzY3JpcHRfZGlyOgotICAg
ICAgICBzY3JpcHRfZGlyID0gb3MucGF0aC5qb2luKG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXyks
ICcuLicsICdTY3JpcHRzJykKLSAgICByZXR1cm4gb3MucGF0aC5qb2luKCooc2NyaXB0X2Rpciwp
ICsgYXJncykKLQotCi1kZWYgdG9wX2xldmVsX3BhdGgoKmFyZ3MpOgotICAgIHJldHVybiBvcy5w
YXRoLmpvaW4oKigoc2NyaXB0X3BhdGgoJy4uJywgJy4uJyksKSArIGFyZ3MpKQpkaWZmIC0tZ2l0
IGEvVG9vbHMvbml4L2poYnVpbGRyYyBiL1Rvb2xzL25peC9qaGJ1aWxkcmMKaW5kZXggMzU1NTJj
YS4uYzA1MmE2OCAxMDA2NDQKLS0tIGEvVG9vbHMvbml4L2poYnVpbGRyYworKysgYi9Ub29scy9u
aXgvamhidWlsZHJjCkBAIC0xNywzOCArMTcsMTIgQEAKICMgTGljZW5zZSBhbG9uZyB3aXRoIHRo
aXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQogIyBGb3VuZGF0
aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAw
MjExMC0xMzAxICBVU0EKIAotaW1wb3J0IG11bHRpcHJvY2Vzc2luZwogaW1wb3J0IHN5cwotaW1w
b3J0IG9zCiAKLV9fbml4X3Rvb2xzX2RpcmVjdG9yeSA9IG9zLnBhdGguYWJzcGF0aChvcy5wYXRo
LmRpcm5hbWUoX19maWxlX18pKQotc3lzLnBhdGggPSBbX19uaXhfdG9vbHNfZGlyZWN0b3J5XSAr
IHN5cy5wYXRoCi1pbXBvcnQgY29tbW9uCitzeXMucGF0aC5pbnNlcnQoMCwgb3MucGF0aC5qb2lu
KG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXyksICIuLi9qaGJ1aWxkIikgKQoraW1wb3J0IGpoYnVp
bGRyY19jb21tb24KK2poYnVpbGRyY19jb21tb24uaW5pdChnbG9iYWxzKCksICJuaXgiKSAKIAot
YnVpbGRfcG9saWN5ID0gJ3VwZGF0ZWQnCi0KLSMgRklYTUU6IG1vdmUgc2hhcmVkIHBhcnRzIGlu
dG8gLi4vamhidWlsZCBmb2xkZXIuCi0KLV9fbW9kdWxlc2V0X2ZpbGVfdXJpID0gJ2ZpbGU6Ly8n
ICsgb3MucGF0aC5qb2luKF9fbml4X3Rvb2xzX2RpcmVjdG9yeSwgJ2poYnVpbGQubW9kdWxlcycp
Ci1fX2V4dHJhX21vZHVsZXNldHMgPSBvcy5lbnZpcm9uLmdldCgiV0VCS0lUX0VYVFJBX01PRFVM
RVNFVFMiLCAiIikuc3BsaXQoIiwiKQotbW9kdWxlc2V0ID0gWyBfX21vZHVsZXNldF9maWxlX3Vy
aSwgXQotaWYgX19leHRyYV9tb2R1bGVzZXRzICE9IFsnJ106Ci0gICAgbW9kdWxlc2V0LmV4dGVu
ZChfX2V4dHJhX21vZHVsZXNldHMpCi0KLV9fZXh0cmFfbW9kdWxlcyA9IG9zLmVudmlyb24uZ2V0
KCJXRUJLSVRfRVhUUkFfTU9EVUxFUyIsICIiKS5zcGxpdCgiLCIpCi1tb2R1bGVzID0gWyAnd2Vi
a2l0bml4LXRlc3RpbmctZGVwZW5kZW5jaWVzJywgXQotaWYgX19leHRyYV9tb2R1bGVzICE9IFsn
J106Ci0gICAgbW9kdWxlcy5leHRlbmQoX19leHRyYV9tb2R1bGVzKQotCi1pZiBvcy5lbnZpcm9u
Lmhhc19rZXkoJ1dFQktJVF9PVVRQVVRESVInKToKLSAgICBjaGVja291dHJvb3QgPSBvcy5wYXRo
LmFic3BhdGgob3MucGF0aC5qb2luKG9zLmVudmlyb25bJ1dFQktJVF9PVVRQVVRESVInXSwgJ0Rl
cGVuZGVuY2llcycsICdTb3VyY2UnKSkKLSAgICBwcmVmaXggPSBvcy5wYXRoLmFic3BhdGgob3Mu
cGF0aC5qb2luKG9zLmVudmlyb25bJ1dFQktJVF9PVVRQVVRESVInXSwgJ0RlcGVuZGVuY2llcycs
ICdSb290JykpCi1lbHNlOgotICAgIGNoZWNrb3V0cm9vdCA9IG9zLnBhdGguYWJzcGF0aChjb21t
b24udG9wX2xldmVsX3BhdGgoJ1dlYktpdEJ1aWxkJywnRGVwZW5kZW5jaWVzJywgJ1NvdXJjZScp
KQotICAgIHByZWZpeCA9IG9zLnBhdGguYWJzcGF0aChjb21tb24udG9wX2xldmVsX3BhdGgoJ1dl
YktpdEJ1aWxkJywnRGVwZW5kZW5jaWVzJywgJ1Jvb3QnKSkKLQotbm9ub3RpZnkgPSBUcnVlCi1u
b3RyYXlpY29uID0gVHJ1ZQogaWYgJ01BS0VGTEFHUycgbm90IGluIG9zLmVudmlyb246CiAgICAg
b3MuZW52aXJvblsnTUFLRUZMQUdTJ10gPSAnLWolZCcgJSBtdWx0aXByb2Nlc3NpbmcuY3B1X2Nv
dW50KCkKIAo=
</data>
<flag name="review"
          id="248479"
          type_id="1"
          status="-"
          setter="ossy"
    />
    <flag name="commit-queue"
          id="248480"
          type_id="3"
          status="-"
          setter="ossy"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>224497</attachid>
            <date>2014-02-18 04:56:35 -0800</date>
            <delta_ts>2014-02-18 07:16:59 -0800</delta_ts>
            <desc>Patch v7</desc>
            <filename>extract_v2.patch</filename>
            <type>text/plain</type>
            <size>21139</size>
            <attacher name="Tibor Mészáros">mtiborinf</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA0ZGZk
OWZmLi4wZTA3MzAyIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzEgQEAKKzIwMTQtMDItMTcgIFRpYm9yIE1lc3phcm9zICA8dG1l
c3phcm9zLnUtc3plZ2VkQHBhcnRuZXIuc2Ftc3VuZy5jb20+CisKKyAgICAgICAgRXh0cmFjdCBj
b21tb24gcGFydHMgZnJvbSBqaGJ1aWxkcmMgZmlsZXMuCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjU5ODYKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNjcmlwdHMvcnVuLWd0ay10ZXN0czoKKyAgICAg
ICAgKFRlc3RSdW5uZXIuX3NldHVwX3Rlc3RpbmdfZW52aXJvbm1lbnQpOgorICAgICAgICAqIGVm
bC9jb21tb24ucHk6IFJlbW92ZWQuCisgICAgICAgICogZWZsL2poYnVpbGRyYzoKKyAgICAgICAg
KiBndGsvY2hlY2stZ2RvbS1zeW1ib2xzOgorICAgICAgICAqIGd0ay9jb21tb24ucHk6CisgICAg
ICAgIChiaW5hcnlfYnVpbGRfcGF0aCk6CisgICAgICAgIChnZXRfYnVpbGRfcGF0aCk6CisgICAg
ICAgICogZ3RrL2ZpbmQtbWFrZS1kaXN0LWVycm9yczoKKyAgICAgICAgKGdldF9taXNzaW5nX2hl
YWRlcnMpOgorICAgICAgICAqIGd0ay9nZW5lcmF0ZS1ndGtkb2M6CisgICAgICAgIChnZXRfd2Vi
a2l0Ml9vcHRpb25zKToKKyAgICAgICAgKGdldF93ZWJraXQxX29wdGlvbnMuc3JjX3BhdGgpOgor
ICAgICAgICAoZ2V0X3dlYmtpdDFfb3B0aW9ucyk6CisgICAgICAgIChnZXRfd2Via2l0ZG9tX29w
dGlvbnMuc3JjX3BhdGgpOgorICAgICAgICAoZ2V0X3dlYmtpdGRvbV9vcHRpb25zKToKKyAgICAg
ICAgKiBndGsvZ2VuZXJhdGUtaW5zcGVjdG9yLWdyZXNvdXJjZS1tYW5pZmVzdC5weToKKyAgICAg
ICAgKiBndGsvamhidWlsZHJjOgorICAgICAgICAqIG5peC9jb21tb24ucHk6IFJlbW92ZWQuCisg
ICAgICAgICogbml4L2poYnVpbGRyYzoKKwogMjAxNC0wMi0xNSAgUnl1YW4gQ2hvaSAgPHJ5dWFu
LmNob2lAc2Ftc3VuZy5jb20+CiAKICAgICAgICAgQnVpbGQgYnJlYWsgd2hlbiBkaXNhYmxlZCBB
Q0NFU1NJQklMSVRZIHNpbmNlIHIxNjI5ODYKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvcnVu
LWd0ay10ZXN0cyBiL1Rvb2xzL1NjcmlwdHMvcnVuLWd0ay10ZXN0cwppbmRleCBlOTgwODYwLi40
YmI0NjNjIDEwMDc1NQotLS0gYS9Ub29scy9TY3JpcHRzL3J1bi1ndGstdGVzdHMKKysrIGIvVG9v
bHMvU2NyaXB0cy9ydW4tZ3RrLXRlc3RzCkBAIC0zMSw2ICszMSw5IEBAIHN5cy5wYXRoLmFwcGVu
ZChvcy5wYXRoLmpvaW4odG9wX2xldmVsX2RpcmVjdG9yeSwgIlRvb2xzIiwgImd0ayIpKQogaW1w
b3J0IGNvbW1vbgogaW1wb3J0IGpoYnVpbGR1dGlscwogCitzeXMucGF0aC5pbnNlcnQoMCwgb3Mu
cGF0aC5qb2luKG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXyksICIuLi9qaGJ1aWxkIikpCitpbXBv
cnQgamhidWlsZHJjX2NvbW1vbgorCiBjbGFzcyBTa2lwcGVkVGVzdDoKICAgICBFTlRJUkVfU1VJ
VEUgPSBOb25lCiAKQEAgLTE5NSw3ICsxOTgsNyBAQCBjbGFzcyBUZXN0UnVubmVyOgogICAgIGRl
ZiBfc2V0dXBfdGVzdGluZ19lbnZpcm9ubWVudChzZWxmKToKICAgICAgICAgc2VsZi5fdGVzdF9l
bnYgPSBvcy5lbnZpcm9uCiAgICAgICAgIHNlbGYuX3Rlc3RfZW52WydHU0VUVElOR1NfQkFDS0VO
RCddID0gJ21lbW9yeScKLSAgICAgICAgc2VsZi5fdGVzdF9lbnZbIlRFU1RfV0VCS0lUX0FQSV9X
RUJLSVQyX1JFU09VUkNFU19QQVRIIl0gPSBjb21tb24udG9wX2xldmVsX3BhdGgoIlRvb2xzIiwg
IlRlc3RXZWJLaXRBUEkiLCAiVGVzdHMiLCAiV2ViS2l0MiIpCisgICAgICAgIHNlbGYuX3Rlc3Rf
ZW52WyJURVNUX1dFQktJVF9BUElfV0VCS0lUMl9SRVNPVVJDRVNfUEFUSCJdID0gamhidWlsZHJj
X2NvbW1vbi50b3BfbGV2ZWxfcGF0aCgiVG9vbHMiLCAiVGVzdFdlYktpdEFQSSIsICJUZXN0cyIs
ICJXZWJLaXQyIikKICAgICAgICAgc2VsZi5fdGVzdF9lbnZbIlRFU1RfV0VCS0lUX0FQSV9XRUJL
SVQyX0lOSkVDVEVEX0JVTkRMRV9QQVRIIl0gPSBjb21tb24udGVzdHNfbGlicmFyeV9idWlsZF9w
YXRoKCkKICAgICAgICAgc2VsZi5fdGVzdF9lbnZbIldFQktJVF9FWEVDX1BBVEgiXSA9IHNlbGYu
X3Byb2dyYW1zX3BhdGgKIApkaWZmIC0tZ2l0IGEvVG9vbHMvZWZsL2NvbW1vbi5weSBiL1Rvb2xz
L2VmbC9jb21tb24ucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc3NjU3YjMuLjAw
MDAwMDAKLS0tIGEvVG9vbHMvZWZsL2NvbW1vbi5weQorKysgL2Rldi9udWxsCkBAIC0xLDMxICsw
LDAgQEAKLSMhL3Vzci9iaW4vZW52IHB5dGhvbgotIyBDb3B5cmlnaHQgKEMpIDIwMTEgSWdhbGlh
IFMuTC4KLSMKLSMgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vcgotIyBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg
TGVzc2VyIEdlbmVyYWwgUHVibGljCi0jIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotIyB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2Us
IG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0jCi0jIFRoaXMgbGlicmFy
eSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotIyBi
dXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50
eSBvZgotIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UuICBTZWUgdGhlIEdOVQotIyBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y
ZSBkZXRhaWxzLgotIwotIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH
TlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi0jIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJh
cnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSMgRm91bmRhdGlvbiwgSW5j
LiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMw
MSAgVVNBCi0KLWltcG9ydCBvcwotCi1zY3JpcHRfZGlyID0gTm9uZQotCi0KLWRlZiBzY3JpcHRf
cGF0aCgqYXJncyk6Ci0gICAgZ2xvYmFsIHNjcmlwdF9kaXIKLSAgICBpZiBub3Qgc2NyaXB0X2Rp
cjoKLSAgICAgICAgc2NyaXB0X2RpciA9IG9zLnBhdGguam9pbihvcy5wYXRoLmRpcm5hbWUoX19m
aWxlX18pLCAnLi4nLCAnU2NyaXB0cycpCi0gICAgcmV0dXJuIG9zLnBhdGguam9pbigqKHNjcmlw
dF9kaXIsKSArIGFyZ3MpCi0KLQotZGVmIHRvcF9sZXZlbF9wYXRoKCphcmdzKToKLSAgICByZXR1
cm4gb3MucGF0aC5qb2luKCooKHNjcmlwdF9wYXRoKCcuLicsICcuLicpLCkgKyBhcmdzKSkKZGlm
ZiAtLWdpdCBhL1Rvb2xzL2VmbC9qaGJ1aWxkcmMgYi9Ub29scy9lZmwvamhidWlsZHJjCmluZGV4
IDc3ZGFhZTkuLjY1ZGY2YjMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL2VmbC9qaGJ1aWxkcmMKKysrIGIv
VG9vbHMvZWZsL2poYnVpbGRyYwpAQCAtMTYsNDAgKzE2LDExIEBACiAjIExpY2Vuc2UgYWxvbmcg
d2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKICMg
Rm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9u
LCBNQSAgMDIxMTAtMTMwMSAgVVNBCiAKLWltcG9ydCBtdWx0aXByb2Nlc3NpbmcKIGltcG9ydCBz
eXMKIAotX19lZmxfdG9vbHNfZGlyZWN0b3J5ID0gb3MucGF0aC5hYnNwYXRoKG9zLnBhdGguZGly
bmFtZShfX2ZpbGVfXykpCi1zeXMucGF0aCA9IFtfX2VmbF90b29sc19kaXJlY3RvcnldICsgc3lz
LnBhdGgKLWltcG9ydCBjb21tb24KLQotYnVpbGRfcG9saWN5ID0gJ3VwZGF0ZWQnCi0KLSMgRklY
TUU6IG1vdmUgc2hhcmVkIHBhcnRzIGludG8gLi4vamhidWlsZCBmb2xkZXIuCi0KLV9fbW9kdWxl
c2V0X2ZpbGVfdXJpID0gJ2ZpbGU6Ly8nICsgb3MucGF0aC5qb2luKF9fZWZsX3Rvb2xzX2RpcmVj
dG9yeSwgJ2poYnVpbGQubW9kdWxlcycpCi1fX2V4dHJhX21vZHVsZXNldHMgPSBvcy5lbnZpcm9u
LmdldCgiV0VCS0lUX0VYVFJBX01PRFVMRVNFVFMiLCAiIikuc3BsaXQoIiwiKQotbW9kdWxlc2V0
ID0gWyBfX21vZHVsZXNldF9maWxlX3VyaSwgXQotaWYgX19leHRyYV9tb2R1bGVzZXRzICE9IFsn
J106Ci0gICAgbW9kdWxlc2V0LmV4dGVuZChfX2V4dHJhX21vZHVsZXNldHMpCi0KLV9fZXh0cmFf
bW9kdWxlcyA9IG9zLmVudmlyb24uZ2V0KCJXRUJLSVRfRVhUUkFfTU9EVUxFUyIsICIiKS5zcGxp
dCgiLCIpCi1tb2R1bGVzID0gWyAnd2Via2l0ZWZsLXRlc3RpbmctZGVwZW5kZW5jaWVzJywgXQot
aWYgX19leHRyYV9tb2R1bGVzICE9IFsnJ106Ci0gICAgbW9kdWxlcy5leHRlbmQoX19leHRyYV9t
b2R1bGVzKQotCi1pZiBvcy5lbnZpcm9uLmhhc19rZXkoJ1dFQktJVF9PVVRQVVRESVInKToKLSAg
ICBjaGVja291dHJvb3QgPSBvcy5wYXRoLmFic3BhdGgob3MucGF0aC5qb2luKG9zLmVudmlyb25b
J1dFQktJVF9PVVRQVVRESVInXSwgJ0RlcGVuZGVuY2llcycsICdTb3VyY2UnKSkKLSAgICBwcmVm
aXggPSBvcy5wYXRoLmFic3BhdGgob3MucGF0aC5qb2luKG9zLmVudmlyb25bJ1dFQktJVF9PVVRQ
VVRESVInXSwgJ0RlcGVuZGVuY2llcycsICdSb290JykpCi1lbHNlOgotICAgIGNoZWNrb3V0cm9v
dCA9IG9zLnBhdGguYWJzcGF0aChjb21tb24udG9wX2xldmVsX3BhdGgoJ1dlYktpdEJ1aWxkJywn
RGVwZW5kZW5jaWVzJywgJ1NvdXJjZScpKQotICAgIHByZWZpeCA9IG9zLnBhdGguYWJzcGF0aChj
b21tb24udG9wX2xldmVsX3BhdGgoJ1dlYktpdEJ1aWxkJywnRGVwZW5kZW5jaWVzJywgJ1Jvb3Qn
KSkKLQotbm9ub3RpZnkgPSBUcnVlCi1ub3RyYXlpY29uID0gVHJ1ZQotCi1pZiAnTlVNQkVSX09G
X1BST0NFU1NPUlMnIGluIG9zLmVudmlyb246Ci0gICAgam9icyA9IG9zLmVudmlyb25bJ05VTUJF
Ul9PRl9QUk9DRVNTT1JTJ10KK3N5cy5wYXRoLmluc2VydCgwLCBvcy5wYXRoLmpvaW4ob3MucGF0
aC5kaXJuYW1lKF9fZmlsZV9fKSwgIi4uL2poYnVpbGQiKSApCitpbXBvcnQgamhidWlsZHJjX2Nv
bW1vbgoramhidWlsZHJjX2NvbW1vbi5pbml0KGdsb2JhbHMoKSwgImVmbCIpIAogCiAjIFVzZSBz
eXN0ZW0gbGlicmFyaWVzIHdoaWxlIGJ1aWxkaW5nLgogaWYgdXNlX2xpYjY0OgpkaWZmIC0tZ2l0
IGEvVG9vbHMvZ3RrL2NoZWNrLWdkb20tc3ltYm9scyBiL1Rvb2xzL2d0ay9jaGVjay1nZG9tLXN5
bWJvbHMKaW5kZXggZjExMDhiNy4uYjdhM2E0YyAxMDA3NTUKLS0tIGEvVG9vbHMvZ3RrL2NoZWNr
LWdkb20tc3ltYm9scworKysgYi9Ub29scy9ndGsvY2hlY2stZ2RvbS1zeW1ib2xzCkBAIC0yMiw2
ICsyMiw4IEBAIGltcG9ydCBzdWJwcm9jZXNzCiBpbXBvcnQgc3lzCiBpbXBvcnQgdGVtcGZpbGUK
IAorc3lzLnBhdGguaW5zZXJ0KDAsIG9zLnBhdGguam9pbihvcy5wYXRoLmRpcm5hbWUoX19maWxl
X18pLCAiLi4vamhidWlsZCIpKQoraW1wb3J0IGpoYnVpbGRyY19jb21tb24KIAogZGVmIHNob3Vs
ZF91cGRhdGVfc3ltYm9sc19maWxlKG5ldywgb2xkKToKICAgICBpZiBub3Qgb3MucGF0aC5leGlz
dHMob2xkKToKQEAgLTUwLDcgKzUyLDcgQEAgaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKICAg
ICAgICAgICAgICAgICB0bXAud3JpdGUoZmlsZV9oYW5kbGUucmVhZCgpKQogICAgICAgICB0bXAu
Zmx1c2goKQogCi0gICAgICAgIGdkb21fc291cmNlX3BhdGggPSBjb21tb24udG9wX2xldmVsX3Bh
dGgoJ1NvdXJjZScsICdXZWJDb3JlJywgJ2JpbmRpbmdzJykKKyAgICAgICAgZ2RvbV9zb3VyY2Vf
cGF0aCA9IGpoYnVpbGRyY19jb21tb24udG9wX2xldmVsX3BhdGgoJ1NvdXJjZScsICdXZWJDb3Jl
JywgJ2JpbmRpbmdzJykKICAgICAgICAgYXBpX2JyZWFrX3Rlc3RfcGF0aCA9IG9zLnBhdGguam9p
bihnZG9tX3NvdXJjZV9wYXRoLCAnc2NyaXB0cycsICdnb2JqZWN0LXJ1bi1hcGktYnJlYWstdGVz
dCcpCiAgICAgICAgIHN1YnByb2Nlc3MuY2FsbChbc3lzLmV4ZWN1dGFibGUsIGFwaV9icmVha190
ZXN0X3BhdGgsIG9zLnBhdGguam9pbihnZG9tX3NvdXJjZV9wYXRoLCAnZ29iamVjdCcsICAnd2Vi
a2l0ZG9tLnN5bWJvbHMnKSwgdG1wLm5hbWVdKQogCmRpZmYgLS1naXQgYS9Ub29scy9ndGsvY29t
bW9uLnB5IGIvVG9vbHMvZ3RrL2NvbW1vbi5weQppbmRleCAwMmRiOTMyLi42ZTUxYWY1IDEwMDY0
NAotLS0gYS9Ub29scy9ndGsvY29tbW9uLnB5CisrKyBiL1Rvb2xzL2d0ay9jb21tb24ucHkKQEAg
LTIxLDcgKzIxLDkgQEAgaW1wb3J0IHNlbGVjdAogaW1wb3J0IHN1YnByb2Nlc3MKIGltcG9ydCBz
eXMKIAotc2NyaXB0X2RpciA9IE5vbmUKK3N5cy5wYXRoLmluc2VydCgwLCBvcy5wYXRoLmpvaW4o
b3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSwgIi4uL2poYnVpbGQiKSkKK2ltcG9ydCBqaGJ1aWxk
cmNfY29tbW9uCisKIGJ1aWxkX2RpciA9IE5vbmUKIGxpYnJhcnlfYnVpbGRfZGlyID0gTm9uZQog
dGVzdHNfbGlicmFyeV9idWlsZF9kaXIgPSBOb25lCkBAIC03MSwxNyArNzMsNiBAQCBkZWYgYmlu
YXJ5X2J1aWxkX3BhdGgoKmFyZ3MpOgogICAgIHJldHVybiBsaWJyYXJ5X2J1aWxkX2RpcgogCiAK
LWRlZiBzY3JpcHRfcGF0aCgqYXJncyk6Ci0gICAgZ2xvYmFsIHNjcmlwdF9kaXIKLSAgICBpZiBu
b3Qgc2NyaXB0X2RpcjoKLSAgICAgICAgc2NyaXB0X2RpciA9IG9zLnBhdGguam9pbihvcy5wYXRo
LmRpcm5hbWUoX19maWxlX18pLCAnLi4nLCAnU2NyaXB0cycpCi0gICAgcmV0dXJuIG9zLnBhdGgu
am9pbigqKHNjcmlwdF9kaXIsKSArIGFyZ3MpCi0KLQotZGVmIHRvcF9sZXZlbF9wYXRoKCphcmdz
KToKLSAgICByZXR1cm4gb3MucGF0aC5qb2luKCooKG9zLnBhdGguam9pbihvcy5wYXRoLmRpcm5h
bWUoX19maWxlX18pLCAnLi4nLCAnLi4nKSwpICsgYXJncykpCi0KLQogZGVmIGdldF9idWlsZF9w
YXRoKGZhdGFsPVRydWUpOgogICAgIGdsb2JhbCBidWlsZF9kaXIKICAgICBpZiBidWlsZF9kaXI6
CkBAIC0xMDksMjAgKzEwMCwyMCBAQCBkZWYgZ2V0X2J1aWxkX3BhdGgoZmF0YWw9VHJ1ZSk6CiAK
ICAgICBnbG9iYWwgYnVpbGRfdHlwZXMKICAgICBmb3IgYnVpbGRfdHlwZSBpbiBidWlsZF90eXBl
czoKLSAgICAgICAgYnVpbGRfZGlyID0gdG9wX2xldmVsX3BhdGgoJ1dlYktpdEJ1aWxkJywgYnVp
bGRfdHlwZSkKKyAgICAgICAgYnVpbGRfZGlyID0gamhidWlsZHJjX2NvbW1vbi50b3BfbGV2ZWxf
cGF0aCgnV2ViS2l0QnVpbGQnLCBidWlsZF90eXBlKQogICAgICAgICBpZiBpc192YWxpZF9idWls
ZF9kaXJlY3RvcnkoYnVpbGRfZGlyKToKICAgICAgICAgICAgIHJldHVybiBidWlsZF9kaXIKIAog
ICAgICMgZGlzdGNoZWNrIGJ1aWxkcyBpbiBhIGRpcmVjdG9yeSBuYW1lZCBfYnVpbGQgaW4gdGhl
IHRvcC1sZXZlbCBwYXRoLgotICAgIGJ1aWxkX2RpciA9IHRvcF9sZXZlbF9wYXRoKCJfYnVpbGQi
KQorICAgIGJ1aWxkX2RpciA9IGpoYnVpbGRyY19jb21tb24udG9wX2xldmVsX3BhdGgoIl9idWls
ZCIpCiAgICAgaWYgaXNfdmFsaWRfYnVpbGRfZGlyZWN0b3J5KGJ1aWxkX2Rpcik6CiAgICAgICAg
IHJldHVybiBidWlsZF9kaXIKIAotICAgIGJ1aWxkX2RpciA9IHRvcF9sZXZlbF9wYXRoKCkKKyAg
ICBidWlsZF9kaXIgPSBqaGJ1aWxkcmNfY29tbW9uLnRvcF9sZXZlbF9wYXRoKCkKICAgICBpZiBp
c192YWxpZF9idWlsZF9kaXJlY3RvcnkoYnVpbGRfZGlyKToKICAgICAgICAgcmV0dXJuIGJ1aWxk
X2RpcgogCi0gICAgYnVpbGRfZGlyID0gdG9wX2xldmVsX3BhdGgoIldlYktpdEJ1aWxkIikKKyAg
ICBidWlsZF9kaXIgPSBqaGJ1aWxkcmNfY29tbW9uLnRvcF9sZXZlbF9wYXRoKCJXZWJLaXRCdWls
ZCIpCiAgICAgaWYgaXNfdmFsaWRfYnVpbGRfZGlyZWN0b3J5KGJ1aWxkX2Rpcik6CiAgICAgICAg
IHJldHVybiBidWlsZF9kaXIKIApkaWZmIC0tZ2l0IGEvVG9vbHMvZ3RrL2ZpbmQtbWFrZS1kaXN0
LWVycm9ycyBiL1Rvb2xzL2d0ay9maW5kLW1ha2UtZGlzdC1lcnJvcnMKaW5kZXggODgwYzc4MC4u
MzVkOGE3NCAxMDA3NTUKLS0tIGEvVG9vbHMvZ3RrL2ZpbmQtbWFrZS1kaXN0LWVycm9ycworKysg
Yi9Ub29scy9ndGsvZmluZC1tYWtlLWRpc3QtZXJyb3JzCkBAIC0yMCw2ICsyMCw5IEBAIGltcG9y
dCBvcwogaW1wb3J0IHN1YnByb2Nlc3MKIGltcG9ydCBzeXMKIAorc3lzLnBhdGguaW5zZXJ0KDAs
IG9zLnBhdGguam9pbihvcy5wYXRoLmRpcm5hbWUoX19maWxlX18pLCAiLi4vamhidWlsZCIpKQor
aW1wb3J0IGpoYnVpbGRyY19jb21tb24KKwogZGVmIGlzX3NvdXJjZV9maWxlX2xpc3RpbmcobGlu
ZSk6CiAgICAgcmV0dXJuIGxpbmUuc3RyaXAoKS5zdGFydHN3aXRoKCdTb3VyY2UnKQogCkBAIC04
Niw3ICs4OSw3IEBAIGRlZiBnZXRfdW5saXN0ZWRfaGVhZGVycyhsaXN0ZWRfbWFrZWZpbGVfaGVh
ZGVycyk6CiBkZWYgZ2V0X21pc3NpbmdfaGVhZGVycyhsaXN0ZWRfbWFrZWZpbGVfaGVhZGVycyk6
CiAgICAgbWlzc2luZyA9IHNldCgpCiAgICAgZm9yIGhlYWRlciBpbiBsaXN0ZWRfbWFrZWZpbGVf
aGVhZGVyczoKLSAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKGNvbW1vbi50b3BfbGV2ZWxf
cGF0aChoZWFkZXIpKToKKyAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKGpoYnVpbGRyY19j
b21tb24udG9wX2xldmVsX3BhdGgoaGVhZGVyKSk6CiAgICAgICAgICAgICBtaXNzaW5nLmFkZCho
ZWFkZXIpCiAgICAgcmV0dXJuIG1pc3NpbmcKIApkaWZmIC0tZ2l0IGEvVG9vbHMvZ3RrL2dlbmVy
YXRlLWd0a2RvYyBiL1Rvb2xzL2d0ay9nZW5lcmF0ZS1ndGtkb2MKaW5kZXggY2UyMjBhNi4uZDc4
OTg5ZCAxMDA3NTUKLS0tIGEvVG9vbHMvZ3RrL2dlbmVyYXRlLWd0a2RvYworKysgYi9Ub29scy9n
dGsvZ2VuZXJhdGUtZ3RrZG9jCkBAIC0yMiw2ICsyMiw5IEBAIGltcG9ydCBsb2dnaW5nCiBpbXBv
cnQgb3MucGF0aAogaW1wb3J0IHN5cwogCitzeXMucGF0aC5pbnNlcnQoMCwgb3MucGF0aC5qb2lu
KG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXyksICIuLi9qaGJ1aWxkIikpCitpbXBvcnQgamhidWls
ZHJjX2NvbW1vbgorCiBkZWYgY29uZmlndXJlX2xvZ2dpbmcoKToKICAgICBsZXZlbCA9IGxvZ2dp
bmcuREVCVUcgaWYgJy12JyBpbiBzeXMuYXJndiBlbHNlIGxvZ2dpbmcuSU5GTwogICAgIGxvZ2dl
ciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCdndGtkb2MnKQpAQCAtNzYsOCArNzksOCBAQCBkZWYgd2Vi
a2l0ZG9tX2RvY3NfaHRtbF9wYXRoKCk6CiAgICAgcmV0dXJuIGNvbW1vbi5idWlsZF9wYXRoKCdE
b2N1bWVudGF0aW9uJywgJ3dlYmtpdGRvbWd0aycsICdodG1sJykKIAogZGVmIGdldF93ZWJraXQy
X29wdGlvbnMoKToKLSAgICBhcGlfcGF0aCA9IGNvbW1vbi50b3BfbGV2ZWxfcGF0aCgnU291cmNl
JywgJ1dlYktpdDInLCAnVUlQcm9jZXNzJywgJ0FQSScsICdndGsnKQotICAgIGluamVjdGVkX2J1
bmRsZV9hcGlfcGF0aCA9IGNvbW1vbi50b3BfbGV2ZWxfcGF0aCgnU291cmNlJywgJ1dlYktpdDIn
LCAnV2ViUHJvY2VzcycsICdJbmplY3RlZEJ1bmRsZScsICdBUEknLCAnZ3RrJykKKyAgICBhcGlf
cGF0aCA9IGpoYnVpbGRyY19jb21tb24udG9wX2xldmVsX3BhdGgoJ1NvdXJjZScsICdXZWJLaXQy
JywgJ1VJUHJvY2VzcycsICdBUEknLCAnZ3RrJykKKyAgICBpbmplY3RlZF9idW5kbGVfYXBpX3Bh
dGggPSBqaGJ1aWxkcmNfY29tbW9uLnRvcF9sZXZlbF9wYXRoKCdTb3VyY2UnLCAnV2ViS2l0Mics
ICdXZWJQcm9jZXNzJywgJ0luamVjdGVkQnVuZGxlJywgJ0FQSScsICdndGsnKSAKIAogICAgIGlm
IGNvbW1vbi5pc19jbWFrZV9idWlsZCgpOgogICAgICAgICBnZW5lcmF0ZWRfYXBpX3BhdGggPSBj
b21tb24uYnVpbGRfcGF0aCgnRGVyaXZlZFNvdXJjZXMnLCAnd2Via2l0Mmd0aycsICd3ZWJraXQy
JykKQEAgLTEwMSw3ICsxMDQsNyBAQCBkZWYgZ2V0X3dlYmtpdDJfb3B0aW9ucygpOgogICAgICAg
ICAnc291cmNlX2RpcnMnIDogW3NyY19wYXRoKCksIGdlbmVyYXRlZF9hcGlfcGF0aCwgaW5qZWN0
ZWRfYnVuZGxlX2FwaV9wYXRoXSwKICAgICAgICAgJ2NmbGFncycgOgogICAgICAgICAgICAgIyBD
b21tb24gcGF0aHMKLSAgICAgICAgICAgICcgLUknICsgY29tbW9uLnRvcF9sZXZlbF9wYXRoKCdT
b3VyY2UnKSArIFwKKyAgICAgICAgICAgICcgLUknICsgamhidWlsZHJjX2NvbW1vbi50b3BfbGV2
ZWxfcGF0aCgnU291cmNlJykgKyBcCiAgICAgICAgICAgICAnIC1JJyArIGFwaV9wYXRoICsgXAog
ICAgICAgICAgICAgIyBBdXRvdG9vbHMgcGF0aHMKICAgICAgICAgICAgICcgLUknICsgY29tbW9u
LmJ1aWxkX3BhdGgoJ0Rlcml2ZWRTb3VyY2VzJywgJ3dlYmtpdDJndGsnLCAnaW5jbHVkZScpICsg
XApAQCAtMTI3LDcgKzEzMCw3IEBAIGRlZiBnZXRfd2Via2l0Ml9vcHRpb25zKCk6CiAKIGRlZiBn
ZXRfd2Via2l0MV9vcHRpb25zKGd0a192ZXJzaW9uKToKICAgICBkZWYgc3JjX3BhdGgoKmFyZ3Mp
OgotICAgICAgICByZXR1cm4gY29tbW9uLnRvcF9sZXZlbF9wYXRoKCooKCdTb3VyY2UnLCAnV2Vi
S2l0JywgJ2d0aycpICsgYXJncykpCisgICAgICAgIHJldHVybiBqaGJ1aWxkcmNfY29tbW9uLnRv
cF9sZXZlbF9wYXRoKCooKCdTb3VyY2UnLCAnV2ViS2l0JywgJ2d0aycpICsgYXJncykpCiAKICAg
ICBkZWYgd2Via2l0dmVyc2lvbmhfcGF0aCgpOgogICAgICAgICBpZiBjb21tb24uaXNfY21ha2Vf
YnVpbGQoKToKQEAgLTE1NSw4ICsxNTgsOCBAQCBkZWYgZ2V0X3dlYmtpdDFfb3B0aW9ucyhndGtf
dmVyc2lvbik6CiAgICAgICAgICdjZmxhZ3MnIDogJyAtSScgKyBjb21tb24uYnVpbGRfcGF0aCgn
V2ViS2l0JywgJ2d0aycpICsgXAogICAgICAgICAgICAgICAgICAgICcgLUknICsgY29tbW9uLmJ1
aWxkX3BhdGgoJ0Rlcml2ZWRTb3VyY2VzJykgKyBcCiAgICAgICAgICAgICAgICAgICAgJyAtSScg
KyBzcmNfcGF0aCgpICsgXAotICAgICAgICAgICAgICAgICAgICcgLUknICsgY29tbW9uLnRvcF9s
ZXZlbF9wYXRoKCdTb3VyY2UnKSArIFwKLSAgICAgICAgICAgICAgICAgICAnIC1JJyArIGNvbW1v
bi50b3BfbGV2ZWxfcGF0aCgnU291cmNlJywgJ0phdmFTY3JpcHRDb3JlJywgJ0ZvcndhcmRpbmdI
ZWFkZXJzJyksCisgICAgICAgICAgICAgICAgICAgJyAtSScgKyBqaGJ1aWxkcmNfY29tbW9uLnRv
cF9sZXZlbF9wYXRoKCdTb3VyY2UnKSArIFwKKyAgICAgICAgICAgICAgICAgICAnIC1JJyArIGpo
YnVpbGRyY19jb21tb24udG9wX2xldmVsX3BhdGgoJ1NvdXJjZScsICdKYXZhU2NyaXB0Q29yZScs
ICdGb3J3YXJkaW5nSGVhZGVycycpLAogICAgICAgICAnY3Jvc3NfcmVmZXJlbmNlX2RlcHMnIDog
Z2V0X2d0a2RvY19tb2R1bGVfcGF0aHMoeHJlZl9kZXBzKSArIFt3ZWJraXRkb21fZG9jc19odG1s
X3BhdGgoKV0sCiAgICAgICAgICdpZ25vcmVkX2ZpbGVzJzogZ2xvYi5nbG9iKHNyY19wYXRoKCd3
ZWJraXQnLCAnKnByaXZhdGUuKicpKSArIFwKICAgICAgICAgICAgICAgICAgICAgICAgICBnbG9i
Lmdsb2Ioc3JjX3BhdGgoJ3dlYmtpdCcsICd3ZWJraXRhdXRoZW50aWNhdGlvbmRpYWxvZy4qJykp
ICsgXApAQCAtMTY4LDcgKzE3MSw3IEBAIGRlZiBnZXRfd2Via2l0ZG9tX29wdGlvbnMoKToKICAg
ICBkZWYgZGVyaXZlZF9zb3VyY2VzX3BhdGgoKmFyZ3MpOgogICAgICAgICByZXR1cm4gY29tbW9u
LmJ1aWxkX3BhdGgoKigoJ0Rlcml2ZWRTb3VyY2VzJywgJ3dlYmtpdGRvbScpICsgYXJncykpCiAg
ICAgZGVmIHNyY19wYXRoKCphcmdzKToKLSAgICAgICAgcmV0dXJuIGNvbW1vbi50b3BfbGV2ZWxf
cGF0aCgqKCgnU291cmNlJywgJ1dlYkNvcmUnLCAnYmluZGluZ3MnLCAnZ29iamVjdCcpICsgYXJn
cykpCisgICAgICAgIHJldHVybiBqaGJ1aWxkcmNfY29tbW9uLnRvcF9sZXZlbF9wYXRoKCooKCdT
b3VyY2UnLCAnV2ViQ29yZScsICdiaW5kaW5ncycsICdnb2JqZWN0JykgKyBhcmdzKSkKIAogICAg
IHhyZWZfZGVwcyA9IHsgJ2dsaWItMi4wJyA6IFsnZ2xpYicsICdnb2JqZWN0JywgJ2dpbyddIH0K
IApAQCAtMTgxLDcgKzE4NCw3IEBAIGRlZiBnZXRfd2Via2l0ZG9tX29wdGlvbnMoKToKICAgICAg
ICAgJ3NvdXJjZV9kaXJzJyA6IFtkZXJpdmVkX3NvdXJjZXNfcGF0aCgpXSwKICAgICAgICAgJ2Nm
bGFncycgOiAnIC1JJyArIGRlcml2ZWRfc291cmNlc19wYXRoKCkgKyBcCiAgICAgICAgICAgICAg
ICAgICAgJyAtSScgKyBzcmNfcGF0aCgpICsgXAotICAgICAgICAgICAgICAgICAgICcgLUknICsg
Y29tbW9uLnRvcF9sZXZlbF9wYXRoKCdTb3VyY2UnKSwKKyAgICAgICAgICAgICAgICAgICAnIC1J
JyArIGpoYnVpbGRyY19jb21tb24udG9wX2xldmVsX3BhdGgoJ1NvdXJjZScpLAogICAgICAgICAn
Y3Jvc3NfcmVmZXJlbmNlX2RlcHMnIDogZ2V0X2d0a2RvY19tb2R1bGVfcGF0aHMoeHJlZl9kZXBz
KSwKICAgICAgICAgJ2lnbm9yZWRfZmlsZXMnOiBnbG9iLmdsb2IoZGVyaXZlZF9zb3VyY2VzX3Bh
dGgoJypQcml2YXRlLmgnKSkKICAgICB9KQpkaWZmIC0tZ2l0IGEvVG9vbHMvZ3RrL2dlbmVyYXRl
LWluc3BlY3Rvci1ncmVzb3VyY2UtbWFuaWZlc3QucHkgYi9Ub29scy9ndGsvZ2VuZXJhdGUtaW5z
cGVjdG9yLWdyZXNvdXJjZS1tYW5pZmVzdC5weQppbmRleCA1OGExZGYxLi4wYmQ2Mzk0IDEwMDc1
NQotLS0gYS9Ub29scy9ndGsvZ2VuZXJhdGUtaW5zcGVjdG9yLWdyZXNvdXJjZS1tYW5pZmVzdC5w
eQorKysgYi9Ub29scy9ndGsvZ2VuZXJhdGUtaW5zcGVjdG9yLWdyZXNvdXJjZS1tYW5pZmVzdC5w
eQpAQCAtMjAsNyArMjAsMTAgQEAgaW1wb3J0IGdsb2IKIGltcG9ydCBvcwogaW1wb3J0IHN5cwog
Ci1yZXNvdXJjZXNfcGF0aCA9IGNvbW1vbi50b3BfbGV2ZWxfcGF0aCgpICsgIi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvIgorc3lzLnBhdGguaW5zZXJ0KDAsIG9zLnBhdGguam9pbihvcy5wYXRoLmRp
cm5hbWUoX19maWxlX18pLCAiLi4vamhidWlsZCIpKQoraW1wb3J0IGpoYnVpbGRyY19jb21tb24K
KworcmVzb3VyY2VzX3BhdGggPSBqaGJ1aWxkcmNfY29tbW9uLnRvcF9sZXZlbF9wYXRoKCkgKyAi
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS8iCiBpbnNwZWN0b3JfZmlsZXMgPSBcCiAgICAgZ2xvYi5n
bG9iKHJlc291cmNlc19wYXRoICsgJ1VzZXJJbnRlcmZhY2UvKi5odG1sJykgKyBcCiAgICAgZ2xv
Yi5nbG9iKHJlc291cmNlc19wYXRoICsgJ1VzZXJJbnRlcmZhY2UvKi5qcycpICsgXApkaWZmIC0t
Z2l0IGEvVG9vbHMvZ3RrL2poYnVpbGRyYyBiL1Rvb2xzL2d0ay9qaGJ1aWxkcmMKaW5kZXggNjlm
OTQ1Ny4uYWNlYzY3NSAxMDA2NDQKLS0tIGEvVG9vbHMvZ3RrL2poYnVpbGRyYworKysgYi9Ub29s
cy9ndGsvamhidWlsZHJjCkBAIC0xNSwzNiArMTUsMTYgQEAKICMgTGljZW5zZSBhbG9uZyB3aXRo
IHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQogIyBGb3Vu
ZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1B
ICAwMjExMC0xMzAxICBVU0EKIAotaW1wb3J0IG11bHRpcHJvY2Vzc2luZwogaW1wb3J0IHN5cwog
CitzeXMucGF0aC5pbnNlcnQoMCwgb3MucGF0aC5qb2luKG9zLnBhdGguZGlybmFtZShfX2ZpbGVf
XyksICIuLi9qaGJ1aWxkIikgKQoraW1wb3J0IGpoYnVpbGRyY19jb21tb24KK2poYnVpbGRyY19j
b21tb24uaW5pdChnbG9iYWxzKCksICJndGsiKQorCiBfX2d0a190b29sc19kaXJlY3RvcnkgPSBv
cy5wYXRoLmFic3BhdGgob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSkKIHN5cy5wYXRoID0gW19f
Z3RrX3Rvb2xzX2RpcmVjdG9yeV0gKyBzeXMucGF0aAogaW1wb3J0IGNvbW1vbgogCi1idWlsZF9w
b2xpY3kgPSAndXBkYXRlZCcKLQotX19tb2R1bGVzZXRfZmlsZV91cmkgPSAnZmlsZTovLycgKyBv
cy5wYXRoLmpvaW4oX19ndGtfdG9vbHNfZGlyZWN0b3J5LCAnamhidWlsZC5tb2R1bGVzJykKLV9f
ZXh0cmFfbW9kdWxlc2V0cyA9IG9zLmVudmlyb24uZ2V0KCJXRUJLSVRfRVhUUkFfTU9EVUxFU0VU
UyIsICIiKS5zcGxpdCgiLCIpCi1tb2R1bGVzZXQgPSBbIF9fbW9kdWxlc2V0X2ZpbGVfdXJpLCBd
Ci1pZiBfX2V4dHJhX21vZHVsZXNldHMgIT0gWycnXToKLSAgICBtb2R1bGVzZXQuZXh0ZW5kKF9f
ZXh0cmFfbW9kdWxlc2V0cykKLQotX19leHRyYV9tb2R1bGVzID0gb3MuZW52aXJvbi5nZXQoIldF
QktJVF9FWFRSQV9NT0RVTEVTIiwgIiIpLnNwbGl0KCIsIikKLW1vZHVsZXMgPSBbICd3ZWJraXRn
dGstdGVzdGluZy1kZXBlbmRlbmNpZXMnLCBdCi1pZiBfX2V4dHJhX21vZHVsZXMgIT0gWycnXToK
LSAgICBtb2R1bGVzLmV4dGVuZChfX2V4dHJhX21vZHVsZXMpCi0KLWlmIG9zLmVudmlyb24uaGFz
X2tleSgnV0VCS0lUX09VVFBVVERJUicpOgotICAgIGNoZWNrb3V0cm9vdCA9IG9zLnBhdGguYWJz
cGF0aChvcy5wYXRoLmpvaW4ob3MuZW52aXJvblsnV0VCS0lUX09VVFBVVERJUiddLCAnRGVwZW5k
ZW5jaWVzJywgJ1NvdXJjZScpKQotICAgIHByZWZpeCA9IG9zLnBhdGguYWJzcGF0aChvcy5wYXRo
LmpvaW4ob3MuZW52aXJvblsnV0VCS0lUX09VVFBVVERJUiddLCAnRGVwZW5kZW5jaWVzJywgJ1Jv
b3QnKSkKLWVsc2U6Ci0gICAgY2hlY2tvdXRyb290ID0gb3MucGF0aC5hYnNwYXRoKGNvbW1vbi50
b3BfbGV2ZWxfcGF0aCgnV2ViS2l0QnVpbGQnLCdEZXBlbmRlbmNpZXMnLCAnU291cmNlJykpCi0g
ICAgcHJlZml4ID0gb3MucGF0aC5hYnNwYXRoKGNvbW1vbi50b3BfbGV2ZWxfcGF0aCgnV2ViS2l0
QnVpbGQnLCdEZXBlbmRlbmNpZXMnLCAnUm9vdCcpKQotCi1ub25vdGlmeSA9IFRydWUKLW5vdHJh
eWljb24gPSBUcnVlCi0KIGlmICdOVU1CRVJfT0ZfUFJPQ0VTU09SUycgaW4gb3MuZW52aXJvbjoK
ICAgICBqb2JzID0gb3MuZW52aXJvblsnTlVNQkVSX09GX1BST0NFU1NPUlMnXQogCmRpZmYgLS1n
aXQgYS9Ub29scy9qaGJ1aWxkL2poYnVpbGRyY19jb21tb24ucHkgYi9Ub29scy9qaGJ1aWxkL2po
YnVpbGRyY19jb21tb24ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTg4
ZDBjOQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL2poYnVpbGQvamhidWlsZHJjX2NvbW1vbi5w
eQpAQCAtMCwwICsxLDYwIEBACisjIS91c3IvYmluL2VudiBweXRob24KKyMgQ29weXJpZ2h0IChD
KSAyMDExIElnYWxpYSBTLkwuCisjIENvcHlyaWdodCAoQykgMjAxMiBJbnRlbCBDb3Jwb3JhdGlv
bgorIworIyBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1
dGUgaXQgYW5kL29yCisjIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNz
ZXIgR2VuZXJhbCBQdWJsaWMKKyMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29m
dHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisjIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3Ig
KGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyMKKyMgVGhpcyBsaWJyYXJ5IGlz
IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisjIGJ1dCBX
SVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m
CisjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g
IFNlZSB0aGUgR05VCisjIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRl
dGFpbHMuCisjCisjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBM
ZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyMgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsg
aWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorIyBGb3VuZGF0aW9uLCBJbmMuLCA1
MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxICBV
U0EKKworaW1wb3J0IG11bHRpcHJvY2Vzc2luZworaW1wb3J0IHN5cworaW1wb3J0IG9zIAorCitz
Y3JpcHRfZGlyID0gTm9uZQorCitkZWYgc2NyaXB0X3BhdGgoKmFyZ3MpOgorIGdsb2JhbCBzY3Jp
cHRfZGlyCisgaWYgbm90IHNjcmlwdF9kaXI6CisgICAgc2NyaXB0X2RpciA9IG9zLnBhdGguam9p
bihvcy5wYXRoLmRpcm5hbWUoX19maWxlX18pLCAnLi4nLCAnU2NyaXB0cycpCisgcmV0dXJuIG9z
LnBhdGguam9pbigqKHNjcmlwdF9kaXIsKSArIGFyZ3MpCisKK2RlZiB0b3BfbGV2ZWxfcGF0aCgq
YXJncyk6CisgcmV0dXJuIG9zLnBhdGguam9pbigqKChvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJu
YW1lKF9fZmlsZV9fKSwgJy4uJywgJy4uJyksKSArIGFyZ3MpKQorCitkZWYgaW5pdChqaGJ1aWxk
cmNfZ2xvYmFscywgcGxhdGZvcm0pOiAKKyAgIF9fdG9vbHNfZGlyZWN0b3J5ID0gb3MucGF0aC5q
b2luKG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXyksICIuLi8iLCBwbGF0Zm9ybSkKKyAgIHN5cy5w
YXRoLmluc2VydCgwLCBfX3Rvb2xzX2RpcmVjdG9yeSkKKworICAgamhidWlsZHJjX2dsb2JhbHNb
ImJ1aWxkX3BvbGljeSJdID0gJ3VwZGF0ZWQnIAorCisgICBfX21vZHVsZXNldF9maWxlX3VyaSA9
ICdmaWxlOi8vJyArIG9zLnBhdGguam9pbihfX3Rvb2xzX2RpcmVjdG9yeSwgJ2poYnVpbGQubW9k
dWxlcycpCisgICBfX2V4dHJhX21vZHVsZXNldHMgPSBvcy5lbnZpcm9uLmdldCgiV0VCS0lUX0VY
VFJBX01PRFVMRVNFVFMiLCAiIikuc3BsaXQoIiwiKQorICAgamhidWlsZHJjX2dsb2JhbHNbIm1v
ZHVsZXNldCJdID0gWyBfX21vZHVsZXNldF9maWxlX3VyaSwgXQorICAgaWYgX19leHRyYV9tb2R1
bGVzZXRzICE9IFsnJ106CisgICAgICAgamhidWlsZHJjX2dsb2JhbHNbIm1vZHVsZXNldCJdLmV4
dGVuZChfX2V4dHJhX21vZHVsZXNldHMpCisKKyAgIF9fZXh0cmFfbW9kdWxlcyA9IG9zLmVudmly
b24uZ2V0KCJXRUJLSVRfRVhUUkFfTU9EVUxFUyIsICIiKS5zcGxpdCgiLCIpCisgICBqaGJ1aWxk
cmNfZ2xvYmFsc1sibW9kdWxlc2V0Il0gPSBbICd3ZWJraXRlZmwtdGVzdGluZy1kZXBlbmRlbmNp
ZXMnLCBdCisgICBpZiBfX2V4dHJhX21vZHVsZXMgIT0gWycnXToKKyAgICAgICBqaGJ1aWxkcmNf
Z2xvYmFsc1sibW9kdWxlc2V0Il0uZXh0ZW5kKF9fZXh0cmFfbW9kdWxlcykKKworICAgaWYgJ1dF
QktJVF9PVVRQVVRESVInIGluIG9zLmVudmlyb246CisgICAgICAgamhidWlsZHJjX2dsb2JhbHNb
ImNoZWNrb3V0cm9vdCJdID0gY2hlY2tvdXRyb290ID0gb3MucGF0aC5hYnNwYXRoKG9zLnBhdGgu
am9pbihvcy5lbnZpcm9uWydXRUJLSVRfT1VUUFVURElSJ10sICdEZXBlbmRlbmNpZXMnLCAnU291
cmNlJykpCisgICAgICAgamhidWlsZHJjX2dsb2JhbHNbInByZWZpeCJdID0gcHJlZml4ID0gb3Mu
cGF0aC5hYnNwYXRoKG9zLnBhdGguam9pbihvcy5lbnZpcm9uWydXRUJLSVRfT1VUUFVURElSJ10s
ICdEZXBlbmRlbmNpZXMnLCAnUm9vdCcpKQorICAgZWxzZToKKyAgICAgICBqaGJ1aWxkcmNfZ2xv
YmFsc1siY2hlY2tvdXRyb290Il0gPSBjaGVja291dHJvb3QgPSBvcy5wYXRoLmFic3BhdGgodG9w
X2xldmVsX3BhdGgoJ1dlYktpdEJ1aWxkJywnRGVwZW5kZW5jaWVzJywgJ1NvdXJjZScpKQorICAg
ICAgIGpoYnVpbGRyY19nbG9iYWxzWyJwcmVmaXgiXSA9IHByZWZpeCA9IG9zLnBhdGguYWJzcGF0
aCh0b3BfbGV2ZWxfcGF0aCgnV2ViS2l0QnVpbGQnLCdEZXBlbmRlbmNpZXMnLCAnUm9vdCcpKQor
CisgICBqaGJ1aWxkcmNfZ2xvYmFsc1sibm9ub3RpZnkiXSA9IFRydWUKKyAgIGpoYnVpbGRyY19n
bG9iYWxzWyJub3RyYXlpY29uIl0gPSBUcnVlCisgICAKZGlmZiAtLWdpdCBhL1Rvb2xzL25peC9j
b21tb24ucHkgYi9Ub29scy9uaXgvY29tbW9uLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwYjhiNjYyLi4wMDAwMDAwCi0tLSBhL1Rvb2xzL25peC9jb21tb24ucHkKKysrIC9kZXYv
bnVsbApAQCAtMSwzMiArMCwwIEBACi0jIS91c3IvYmluL2VudiBweXRob24KLSMgQ29weXJpZ2h0
IChDKSAyMDExIElnYWxpYSBTLkwuCi0jIENvcHlyaWdodCAoQykgMjAxMiwgMjAxMyBOb2tpYSBD
b3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykuCi0jCi0jIFRoaXMgbGlicmFy
eSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSMgbW9k
aWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwot
IyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBl
aXRoZXIKLSMgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFu
eSBsYXRlciB2ZXJzaW9uLgotIwotIyBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhl
IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZ
OyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSMgTUVSQ0hBTlRBQklMSVRZ
IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSMgTGVz
c2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSMKLSMgWW91IHNo
b3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1Ymxp
YwotIyBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRo
ZSBGcmVlIFNvZnR3YXJlCi0jIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwg
RmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQotCi1pbXBvcnQgb3MKLQot
c2NyaXB0X2RpciA9IE5vbmUKLQotCi1kZWYgc2NyaXB0X3BhdGgoKmFyZ3MpOgotICAgIGdsb2Jh
bCBzY3JpcHRfZGlyCi0gICAgaWYgbm90IHNjcmlwdF9kaXI6Ci0gICAgICAgIHNjcmlwdF9kaXIg
PSBvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSwgJy4uJywgJ1NjcmlwdHMn
KQotICAgIHJldHVybiBvcy5wYXRoLmpvaW4oKihzY3JpcHRfZGlyLCkgKyBhcmdzKQotCi0KLWRl
ZiB0b3BfbGV2ZWxfcGF0aCgqYXJncyk6Ci0gICAgcmV0dXJuIG9zLnBhdGguam9pbigqKChzY3Jp
cHRfcGF0aCgnLi4nLCAnLi4nKSwpICsgYXJncykpCmRpZmYgLS1naXQgYS9Ub29scy9uaXgvamhi
dWlsZHJjIGIvVG9vbHMvbml4L2poYnVpbGRyYwppbmRleCAzNTU1MmNhLi5jMDUyYTY4IDEwMDY0
NAotLS0gYS9Ub29scy9uaXgvamhidWlsZHJjCisrKyBiL1Rvb2xzL25peC9qaGJ1aWxkcmMKQEAg
LTE3LDM4ICsxNywxMiBAQAogIyBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBu
b3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiAjIEZvdW5kYXRpb24sIEluYy4sIDUxIEZy
YW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQog
Ci1pbXBvcnQgbXVsdGlwcm9jZXNzaW5nCiBpbXBvcnQgc3lzCi1pbXBvcnQgb3MKIAotX19uaXhf
dG9vbHNfZGlyZWN0b3J5ID0gb3MucGF0aC5hYnNwYXRoKG9zLnBhdGguZGlybmFtZShfX2ZpbGVf
XykpCi1zeXMucGF0aCA9IFtfX25peF90b29sc19kaXJlY3RvcnldICsgc3lzLnBhdGgKLWltcG9y
dCBjb21tb24KK3N5cy5wYXRoLmluc2VydCgwLCBvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1l
KF9fZmlsZV9fKSwgIi4uL2poYnVpbGQiKSApCitpbXBvcnQgamhidWlsZHJjX2NvbW1vbgoramhi
dWlsZHJjX2NvbW1vbi5pbml0KGdsb2JhbHMoKSwgIm5peCIpIAogCi1idWlsZF9wb2xpY3kgPSAn
dXBkYXRlZCcKLQotIyBGSVhNRTogbW92ZSBzaGFyZWQgcGFydHMgaW50byAuLi9qaGJ1aWxkIGZv
bGRlci4KLQotX19tb2R1bGVzZXRfZmlsZV91cmkgPSAnZmlsZTovLycgKyBvcy5wYXRoLmpvaW4o
X19uaXhfdG9vbHNfZGlyZWN0b3J5LCAnamhidWlsZC5tb2R1bGVzJykKLV9fZXh0cmFfbW9kdWxl
c2V0cyA9IG9zLmVudmlyb24uZ2V0KCJXRUJLSVRfRVhUUkFfTU9EVUxFU0VUUyIsICIiKS5zcGxp
dCgiLCIpCi1tb2R1bGVzZXQgPSBbIF9fbW9kdWxlc2V0X2ZpbGVfdXJpLCBdCi1pZiBfX2V4dHJh
X21vZHVsZXNldHMgIT0gWycnXToKLSAgICBtb2R1bGVzZXQuZXh0ZW5kKF9fZXh0cmFfbW9kdWxl
c2V0cykKLQotX19leHRyYV9tb2R1bGVzID0gb3MuZW52aXJvbi5nZXQoIldFQktJVF9FWFRSQV9N
T0RVTEVTIiwgIiIpLnNwbGl0KCIsIikKLW1vZHVsZXMgPSBbICd3ZWJraXRuaXgtdGVzdGluZy1k
ZXBlbmRlbmNpZXMnLCBdCi1pZiBfX2V4dHJhX21vZHVsZXMgIT0gWycnXToKLSAgICBtb2R1bGVz
LmV4dGVuZChfX2V4dHJhX21vZHVsZXMpCi0KLWlmIG9zLmVudmlyb24uaGFzX2tleSgnV0VCS0lU
X09VVFBVVERJUicpOgotICAgIGNoZWNrb3V0cm9vdCA9IG9zLnBhdGguYWJzcGF0aChvcy5wYXRo
LmpvaW4ob3MuZW52aXJvblsnV0VCS0lUX09VVFBVVERJUiddLCAnRGVwZW5kZW5jaWVzJywgJ1Nv
dXJjZScpKQotICAgIHByZWZpeCA9IG9zLnBhdGguYWJzcGF0aChvcy5wYXRoLmpvaW4ob3MuZW52
aXJvblsnV0VCS0lUX09VVFBVVERJUiddLCAnRGVwZW5kZW5jaWVzJywgJ1Jvb3QnKSkKLWVsc2U6
Ci0gICAgY2hlY2tvdXRyb290ID0gb3MucGF0aC5hYnNwYXRoKGNvbW1vbi50b3BfbGV2ZWxfcGF0
aCgnV2ViS2l0QnVpbGQnLCdEZXBlbmRlbmNpZXMnLCAnU291cmNlJykpCi0gICAgcHJlZml4ID0g
b3MucGF0aC5hYnNwYXRoKGNvbW1vbi50b3BfbGV2ZWxfcGF0aCgnV2ViS2l0QnVpbGQnLCdEZXBl
bmRlbmNpZXMnLCAnUm9vdCcpKQotCi1ub25vdGlmeSA9IFRydWUKLW5vdHJheWljb24gPSBUcnVl
CiBpZiAnTUFLRUZMQUdTJyBub3QgaW4gb3MuZW52aXJvbjoKICAgICBvcy5lbnZpcm9uWydNQUtF
RkxBR1MnXSA9ICctaiVkJyAlIG11bHRpcHJvY2Vzc2luZy5jcHVfY291bnQoKQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>224507</attachid>
            <date>2014-02-18 07:16:59 -0800</date>
            <delta_ts>2014-02-18 07:51:48 -0800</delta_ts>
            <desc>Patch v8</desc>
            <filename>extract_v3.patch</filename>
            <type>text/plain</type>
            <size>21228</size>
            <attacher name="Tibor Mészáros">mtiborinf</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA0ZGZk
OWZmLi4zN2IwMjM3IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzUgQEAKKzIwMTQtMDItMTggIFRpYm9yIE1lc3phcm9zICA8dG1l
c3phcm9zLnUtc3plZ2VkQHBhcnRuZXIuc2Ftc3VuZy5jb20+CisKKyAgICAgICAgRXh0cmFjdCBj
b21tb24gcGFydHMgZnJvbSBqaGJ1aWxkcmMgZmlsZXMuCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjU5ODYKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNjcmlwdHMvcnVuLWd0ay10ZXN0czoKKyAgICAg
ICAgKFRlc3RSdW5uZXIuX3NldHVwX3Rlc3RpbmdfZW52aXJvbm1lbnQpOgorICAgICAgICAqIGVm
bC9jb21tb24ucHk6IFJlbW92ZWQuCisgICAgICAgICogZWZsL2poYnVpbGRyYzoKKyAgICAgICAg
KiBndGsvY2hlY2stZ2RvbS1zeW1ib2xzOgorICAgICAgICAqIGd0ay9jb21tb24ucHk6CisgICAg
ICAgIChiaW5hcnlfYnVpbGRfcGF0aCk6CisgICAgICAgIChnZXRfYnVpbGRfcGF0aCk6CisgICAg
ICAgICogZ3RrL2ZpbmQtbWFrZS1kaXN0LWVycm9yczoKKyAgICAgICAgKGdldF9taXNzaW5nX2hl
YWRlcnMpOgorICAgICAgICAqIGd0ay9nZW5lcmF0ZS1ndGtkb2M6CisgICAgICAgIChnZXRfd2Vi
a2l0Ml9vcHRpb25zKToKKyAgICAgICAgKGdldF93ZWJraXQxX29wdGlvbnMuc3JjX3BhdGgpOgor
ICAgICAgICAoZ2V0X3dlYmtpdDFfb3B0aW9ucyk6CisgICAgICAgIChnZXRfd2Via2l0ZG9tX29w
dGlvbnMuc3JjX3BhdGgpOgorICAgICAgICAoZ2V0X3dlYmtpdGRvbV9vcHRpb25zKToKKyAgICAg
ICAgKiBndGsvZ2VuZXJhdGUtaW5zcGVjdG9yLWdyZXNvdXJjZS1tYW5pZmVzdC5weToKKyAgICAg
ICAgKiBndGsvamhidWlsZHJjOgorICAgICAgICAqIGpoYnVpbGQvamhidWlsZHJjX2NvbW1vbi5w
eTogQWRkZWQuCisgICAgICAgIChzY3JpcHRfcGF0aCk6CisgICAgICAgICh0b3BfbGV2ZWxfcGF0
aCk6CisgICAgICAgIChpbml0KToKKyAgICAgICAgKiBuaXgvY29tbW9uLnB5OiBSZW1vdmVkLgor
ICAgICAgICAqIG5peC9qaGJ1aWxkcmM6CisKIDIwMTQtMDItMTUgIFJ5dWFuIENob2kgIDxyeXVh
bi5jaG9pQHNhbXN1bmcuY29tPgogCiAgICAgICAgIEJ1aWxkIGJyZWFrIHdoZW4gZGlzYWJsZWQg
QUNDRVNTSUJJTElUWSBzaW5jZSByMTYyOTg2CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3J1
bi1ndGstdGVzdHMgYi9Ub29scy9TY3JpcHRzL3J1bi1ndGstdGVzdHMKaW5kZXggZTk4MDg2MC4u
NGJiNDYzYyAxMDA3NTUKLS0tIGEvVG9vbHMvU2NyaXB0cy9ydW4tZ3RrLXRlc3RzCisrKyBiL1Rv
b2xzL1NjcmlwdHMvcnVuLWd0ay10ZXN0cwpAQCAtMzEsNiArMzEsOSBAQCBzeXMucGF0aC5hcHBl
bmQob3MucGF0aC5qb2luKHRvcF9sZXZlbF9kaXJlY3RvcnksICJUb29scyIsICJndGsiKSkKIGlt
cG9ydCBjb21tb24KIGltcG9ydCBqaGJ1aWxkdXRpbHMKIAorc3lzLnBhdGguaW5zZXJ0KDAsIG9z
LnBhdGguam9pbihvcy5wYXRoLmRpcm5hbWUoX19maWxlX18pLCAiLi4vamhidWlsZCIpKQoraW1w
b3J0IGpoYnVpbGRyY19jb21tb24KKwogY2xhc3MgU2tpcHBlZFRlc3Q6CiAgICAgRU5USVJFX1NV
SVRFID0gTm9uZQogCkBAIC0xOTUsNyArMTk4LDcgQEAgY2xhc3MgVGVzdFJ1bm5lcjoKICAgICBk
ZWYgX3NldHVwX3Rlc3RpbmdfZW52aXJvbm1lbnQoc2VsZik6CiAgICAgICAgIHNlbGYuX3Rlc3Rf
ZW52ID0gb3MuZW52aXJvbgogICAgICAgICBzZWxmLl90ZXN0X2VudlsnR1NFVFRJTkdTX0JBQ0tF
TkQnXSA9ICdtZW1vcnknCi0gICAgICAgIHNlbGYuX3Rlc3RfZW52WyJURVNUX1dFQktJVF9BUElf
V0VCS0lUMl9SRVNPVVJDRVNfUEFUSCJdID0gY29tbW9uLnRvcF9sZXZlbF9wYXRoKCJUb29scyIs
ICJUZXN0V2ViS2l0QVBJIiwgIlRlc3RzIiwgIldlYktpdDIiKQorICAgICAgICBzZWxmLl90ZXN0
X2VudlsiVEVTVF9XRUJLSVRfQVBJX1dFQktJVDJfUkVTT1VSQ0VTX1BBVEgiXSA9IGpoYnVpbGRy
Y19jb21tb24udG9wX2xldmVsX3BhdGgoIlRvb2xzIiwgIlRlc3RXZWJLaXRBUEkiLCAiVGVzdHMi
LCAiV2ViS2l0MiIpCiAgICAgICAgIHNlbGYuX3Rlc3RfZW52WyJURVNUX1dFQktJVF9BUElfV0VC
S0lUMl9JTkpFQ1RFRF9CVU5ETEVfUEFUSCJdID0gY29tbW9uLnRlc3RzX2xpYnJhcnlfYnVpbGRf
cGF0aCgpCiAgICAgICAgIHNlbGYuX3Rlc3RfZW52WyJXRUJLSVRfRVhFQ19QQVRIIl0gPSBzZWxm
Ll9wcm9ncmFtc19wYXRoCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL2VmbC9jb21tb24ucHkgYi9Ub29s
cy9lZmwvY29tbW9uLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NzY1N2IzLi4w
MDAwMDAwCi0tLSBhL1Rvb2xzL2VmbC9jb21tb24ucHkKKysrIC9kZXYvbnVsbApAQCAtMSwzMSAr
MCwwIEBACi0jIS91c3IvYmluL2VudiBweXRob24KLSMgQ29weXJpZ2h0IChDKSAyMDExIElnYWxp
YSBTLkwuCi0jCi0jIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz
dHJpYnV0ZSBpdCBhbmQvb3IKLSMgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V
IExlc3NlciBHZW5lcmFsIFB1YmxpYwotIyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSMgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNl
LCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotIwotIyBUaGlzIGxpYnJh
cnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSMg
YnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFu
dHkgb2YKLSMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFLiAgU2VlIHRoZSBHTlUKLSMgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1v
cmUgZGV0YWlscy4KLSMKLSMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUg
R05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotIyBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJy
YXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0jIEZvdW5kYXRpb24sIElu
Yy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEz
MDEgIFVTQQotCi1pbXBvcnQgb3MKLQotc2NyaXB0X2RpciA9IE5vbmUKLQotCi1kZWYgc2NyaXB0
X3BhdGgoKmFyZ3MpOgotICAgIGdsb2JhbCBzY3JpcHRfZGlyCi0gICAgaWYgbm90IHNjcmlwdF9k
aXI6Ci0gICAgICAgIHNjcmlwdF9kaXIgPSBvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1lKF9f
ZmlsZV9fKSwgJy4uJywgJ1NjcmlwdHMnKQotICAgIHJldHVybiBvcy5wYXRoLmpvaW4oKihzY3Jp
cHRfZGlyLCkgKyBhcmdzKQotCi0KLWRlZiB0b3BfbGV2ZWxfcGF0aCgqYXJncyk6Ci0gICAgcmV0
dXJuIG9zLnBhdGguam9pbigqKChzY3JpcHRfcGF0aCgnLi4nLCAnLi4nKSwpICsgYXJncykpCmRp
ZmYgLS1naXQgYS9Ub29scy9lZmwvamhidWlsZHJjIGIvVG9vbHMvZWZsL2poYnVpbGRyYwppbmRl
eCA3N2RhYWU5Li42NWRmNmIzIDEwMDY0NAotLS0gYS9Ub29scy9lZmwvamhidWlsZHJjCisrKyBi
L1Rvb2xzL2VmbC9qaGJ1aWxkcmMKQEAgLTE2LDQwICsxNiwxMSBAQAogIyBMaWNlbnNlIGFsb25n
IHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiAj
IEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3Rv
biwgTUEgIDAyMTEwLTEzMDEgIFVTQQogCi1pbXBvcnQgbXVsdGlwcm9jZXNzaW5nCiBpbXBvcnQg
c3lzCiAKLV9fZWZsX3Rvb2xzX2RpcmVjdG9yeSA9IG9zLnBhdGguYWJzcGF0aChvcy5wYXRoLmRp
cm5hbWUoX19maWxlX18pKQotc3lzLnBhdGggPSBbX19lZmxfdG9vbHNfZGlyZWN0b3J5XSArIHN5
cy5wYXRoCi1pbXBvcnQgY29tbW9uCi0KLWJ1aWxkX3BvbGljeSA9ICd1cGRhdGVkJwotCi0jIEZJ
WE1FOiBtb3ZlIHNoYXJlZCBwYXJ0cyBpbnRvIC4uL2poYnVpbGQgZm9sZGVyLgotCi1fX21vZHVs
ZXNldF9maWxlX3VyaSA9ICdmaWxlOi8vJyArIG9zLnBhdGguam9pbihfX2VmbF90b29sc19kaXJl
Y3RvcnksICdqaGJ1aWxkLm1vZHVsZXMnKQotX19leHRyYV9tb2R1bGVzZXRzID0gb3MuZW52aXJv
bi5nZXQoIldFQktJVF9FWFRSQV9NT0RVTEVTRVRTIiwgIiIpLnNwbGl0KCIsIikKLW1vZHVsZXNl
dCA9IFsgX19tb2R1bGVzZXRfZmlsZV91cmksIF0KLWlmIF9fZXh0cmFfbW9kdWxlc2V0cyAhPSBb
JyddOgotICAgIG1vZHVsZXNldC5leHRlbmQoX19leHRyYV9tb2R1bGVzZXRzKQotCi1fX2V4dHJh
X21vZHVsZXMgPSBvcy5lbnZpcm9uLmdldCgiV0VCS0lUX0VYVFJBX01PRFVMRVMiLCAiIikuc3Bs
aXQoIiwiKQotbW9kdWxlcyA9IFsgJ3dlYmtpdGVmbC10ZXN0aW5nLWRlcGVuZGVuY2llcycsIF0K
LWlmIF9fZXh0cmFfbW9kdWxlcyAhPSBbJyddOgotICAgIG1vZHVsZXMuZXh0ZW5kKF9fZXh0cmFf
bW9kdWxlcykKLQotaWYgb3MuZW52aXJvbi5oYXNfa2V5KCdXRUJLSVRfT1VUUFVURElSJyk6Ci0g
ICAgY2hlY2tvdXRyb290ID0gb3MucGF0aC5hYnNwYXRoKG9zLnBhdGguam9pbihvcy5lbnZpcm9u
WydXRUJLSVRfT1VUUFVURElSJ10sICdEZXBlbmRlbmNpZXMnLCAnU291cmNlJykpCi0gICAgcHJl
Zml4ID0gb3MucGF0aC5hYnNwYXRoKG9zLnBhdGguam9pbihvcy5lbnZpcm9uWydXRUJLSVRfT1VU
UFVURElSJ10sICdEZXBlbmRlbmNpZXMnLCAnUm9vdCcpKQotZWxzZToKLSAgICBjaGVja291dHJv
b3QgPSBvcy5wYXRoLmFic3BhdGgoY29tbW9uLnRvcF9sZXZlbF9wYXRoKCdXZWJLaXRCdWlsZCcs
J0RlcGVuZGVuY2llcycsICdTb3VyY2UnKSkKLSAgICBwcmVmaXggPSBvcy5wYXRoLmFic3BhdGgo
Y29tbW9uLnRvcF9sZXZlbF9wYXRoKCdXZWJLaXRCdWlsZCcsJ0RlcGVuZGVuY2llcycsICdSb290
JykpCi0KLW5vbm90aWZ5ID0gVHJ1ZQotbm90cmF5aWNvbiA9IFRydWUKLQotaWYgJ05VTUJFUl9P
Rl9QUk9DRVNTT1JTJyBpbiBvcy5lbnZpcm9uOgotICAgIGpvYnMgPSBvcy5lbnZpcm9uWydOVU1C
RVJfT0ZfUFJPQ0VTU09SUyddCitzeXMucGF0aC5pbnNlcnQoMCwgb3MucGF0aC5qb2luKG9zLnBh
dGguZGlybmFtZShfX2ZpbGVfXyksICIuLi9qaGJ1aWxkIikgKQoraW1wb3J0IGpoYnVpbGRyY19j
b21tb24KK2poYnVpbGRyY19jb21tb24uaW5pdChnbG9iYWxzKCksICJlZmwiKSAKIAogIyBVc2Ug
c3lzdGVtIGxpYnJhcmllcyB3aGlsZSBidWlsZGluZy4KIGlmIHVzZV9saWI2NDoKZGlmZiAtLWdp
dCBhL1Rvb2xzL2d0ay9jaGVjay1nZG9tLXN5bWJvbHMgYi9Ub29scy9ndGsvY2hlY2stZ2RvbS1z
eW1ib2xzCmluZGV4IGYxMTA4YjcuLmI3YTNhNGMgMTAwNzU1Ci0tLSBhL1Rvb2xzL2d0ay9jaGVj
ay1nZG9tLXN5bWJvbHMKKysrIGIvVG9vbHMvZ3RrL2NoZWNrLWdkb20tc3ltYm9scwpAQCAtMjIs
NiArMjIsOCBAQCBpbXBvcnQgc3VicHJvY2VzcwogaW1wb3J0IHN5cwogaW1wb3J0IHRlbXBmaWxl
CiAKK3N5cy5wYXRoLmluc2VydCgwLCBvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1lKF9fZmls
ZV9fKSwgIi4uL2poYnVpbGQiKSkKK2ltcG9ydCBqaGJ1aWxkcmNfY29tbW9uCiAKIGRlZiBzaG91
bGRfdXBkYXRlX3N5bWJvbHNfZmlsZShuZXcsIG9sZCk6CiAgICAgaWYgbm90IG9zLnBhdGguZXhp
c3RzKG9sZCk6CkBAIC01MCw3ICs1Miw3IEBAIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CiAg
ICAgICAgICAgICAgICAgdG1wLndyaXRlKGZpbGVfaGFuZGxlLnJlYWQoKSkKICAgICAgICAgdG1w
LmZsdXNoKCkKIAotICAgICAgICBnZG9tX3NvdXJjZV9wYXRoID0gY29tbW9uLnRvcF9sZXZlbF9w
YXRoKCdTb3VyY2UnLCAnV2ViQ29yZScsICdiaW5kaW5ncycpCisgICAgICAgIGdkb21fc291cmNl
X3BhdGggPSBqaGJ1aWxkcmNfY29tbW9uLnRvcF9sZXZlbF9wYXRoKCdTb3VyY2UnLCAnV2ViQ29y
ZScsICdiaW5kaW5ncycpCiAgICAgICAgIGFwaV9icmVha190ZXN0X3BhdGggPSBvcy5wYXRoLmpv
aW4oZ2RvbV9zb3VyY2VfcGF0aCwgJ3NjcmlwdHMnLCAnZ29iamVjdC1ydW4tYXBpLWJyZWFrLXRl
c3QnKQogICAgICAgICBzdWJwcm9jZXNzLmNhbGwoW3N5cy5leGVjdXRhYmxlLCBhcGlfYnJlYWtf
dGVzdF9wYXRoLCBvcy5wYXRoLmpvaW4oZ2RvbV9zb3VyY2VfcGF0aCwgJ2dvYmplY3QnLCAgJ3dl
YmtpdGRvbS5zeW1ib2xzJyksIHRtcC5uYW1lXSkKIApkaWZmIC0tZ2l0IGEvVG9vbHMvZ3RrL2Nv
bW1vbi5weSBiL1Rvb2xzL2d0ay9jb21tb24ucHkKaW5kZXggMDJkYjkzMi4uNmU1MWFmNSAxMDA2
NDQKLS0tIGEvVG9vbHMvZ3RrL2NvbW1vbi5weQorKysgYi9Ub29scy9ndGsvY29tbW9uLnB5CkBA
IC0yMSw3ICsyMSw5IEBAIGltcG9ydCBzZWxlY3QKIGltcG9ydCBzdWJwcm9jZXNzCiBpbXBvcnQg
c3lzCiAKLXNjcmlwdF9kaXIgPSBOb25lCitzeXMucGF0aC5pbnNlcnQoMCwgb3MucGF0aC5qb2lu
KG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXyksICIuLi9qaGJ1aWxkIikpCitpbXBvcnQgamhidWls
ZHJjX2NvbW1vbgorCiBidWlsZF9kaXIgPSBOb25lCiBsaWJyYXJ5X2J1aWxkX2RpciA9IE5vbmUK
IHRlc3RzX2xpYnJhcnlfYnVpbGRfZGlyID0gTm9uZQpAQCAtNzEsMTcgKzczLDYgQEAgZGVmIGJp
bmFyeV9idWlsZF9wYXRoKCphcmdzKToKICAgICByZXR1cm4gbGlicmFyeV9idWlsZF9kaXIKIAog
Ci1kZWYgc2NyaXB0X3BhdGgoKmFyZ3MpOgotICAgIGdsb2JhbCBzY3JpcHRfZGlyCi0gICAgaWYg
bm90IHNjcmlwdF9kaXI6Ci0gICAgICAgIHNjcmlwdF9kaXIgPSBvcy5wYXRoLmpvaW4ob3MucGF0
aC5kaXJuYW1lKF9fZmlsZV9fKSwgJy4uJywgJ1NjcmlwdHMnKQotICAgIHJldHVybiBvcy5wYXRo
LmpvaW4oKihzY3JpcHRfZGlyLCkgKyBhcmdzKQotCi0KLWRlZiB0b3BfbGV2ZWxfcGF0aCgqYXJn
cyk6Ci0gICAgcmV0dXJuIG9zLnBhdGguam9pbigqKChvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJu
YW1lKF9fZmlsZV9fKSwgJy4uJywgJy4uJyksKSArIGFyZ3MpKQotCi0KIGRlZiBnZXRfYnVpbGRf
cGF0aChmYXRhbD1UcnVlKToKICAgICBnbG9iYWwgYnVpbGRfZGlyCiAgICAgaWYgYnVpbGRfZGly
OgpAQCAtMTA5LDIwICsxMDAsMjAgQEAgZGVmIGdldF9idWlsZF9wYXRoKGZhdGFsPVRydWUpOgog
CiAgICAgZ2xvYmFsIGJ1aWxkX3R5cGVzCiAgICAgZm9yIGJ1aWxkX3R5cGUgaW4gYnVpbGRfdHlw
ZXM6Ci0gICAgICAgIGJ1aWxkX2RpciA9IHRvcF9sZXZlbF9wYXRoKCdXZWJLaXRCdWlsZCcsIGJ1
aWxkX3R5cGUpCisgICAgICAgIGJ1aWxkX2RpciA9IGpoYnVpbGRyY19jb21tb24udG9wX2xldmVs
X3BhdGgoJ1dlYktpdEJ1aWxkJywgYnVpbGRfdHlwZSkKICAgICAgICAgaWYgaXNfdmFsaWRfYnVp
bGRfZGlyZWN0b3J5KGJ1aWxkX2Rpcik6CiAgICAgICAgICAgICByZXR1cm4gYnVpbGRfZGlyCiAK
ICAgICAjIGRpc3RjaGVjayBidWlsZHMgaW4gYSBkaXJlY3RvcnkgbmFtZWQgX2J1aWxkIGluIHRo
ZSB0b3AtbGV2ZWwgcGF0aC4KLSAgICBidWlsZF9kaXIgPSB0b3BfbGV2ZWxfcGF0aCgiX2J1aWxk
IikKKyAgICBidWlsZF9kaXIgPSBqaGJ1aWxkcmNfY29tbW9uLnRvcF9sZXZlbF9wYXRoKCJfYnVp
bGQiKQogICAgIGlmIGlzX3ZhbGlkX2J1aWxkX2RpcmVjdG9yeShidWlsZF9kaXIpOgogICAgICAg
ICByZXR1cm4gYnVpbGRfZGlyCiAKLSAgICBidWlsZF9kaXIgPSB0b3BfbGV2ZWxfcGF0aCgpCisg
ICAgYnVpbGRfZGlyID0gamhidWlsZHJjX2NvbW1vbi50b3BfbGV2ZWxfcGF0aCgpCiAgICAgaWYg
aXNfdmFsaWRfYnVpbGRfZGlyZWN0b3J5KGJ1aWxkX2Rpcik6CiAgICAgICAgIHJldHVybiBidWls
ZF9kaXIKIAotICAgIGJ1aWxkX2RpciA9IHRvcF9sZXZlbF9wYXRoKCJXZWJLaXRCdWlsZCIpCisg
ICAgYnVpbGRfZGlyID0gamhidWlsZHJjX2NvbW1vbi50b3BfbGV2ZWxfcGF0aCgiV2ViS2l0QnVp
bGQiKQogICAgIGlmIGlzX3ZhbGlkX2J1aWxkX2RpcmVjdG9yeShidWlsZF9kaXIpOgogICAgICAg
ICByZXR1cm4gYnVpbGRfZGlyCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL2d0ay9maW5kLW1ha2UtZGlz
dC1lcnJvcnMgYi9Ub29scy9ndGsvZmluZC1tYWtlLWRpc3QtZXJyb3JzCmluZGV4IDg4MGM3ODAu
LjM1ZDhhNzQgMTAwNzU1Ci0tLSBhL1Rvb2xzL2d0ay9maW5kLW1ha2UtZGlzdC1lcnJvcnMKKysr
IGIvVG9vbHMvZ3RrL2ZpbmQtbWFrZS1kaXN0LWVycm9ycwpAQCAtMjAsNiArMjAsOSBAQCBpbXBv
cnQgb3MKIGltcG9ydCBzdWJwcm9jZXNzCiBpbXBvcnQgc3lzCiAKK3N5cy5wYXRoLmluc2VydCgw
LCBvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSwgIi4uL2poYnVpbGQiKSkK
K2ltcG9ydCBqaGJ1aWxkcmNfY29tbW9uCisKIGRlZiBpc19zb3VyY2VfZmlsZV9saXN0aW5nKGxp
bmUpOgogICAgIHJldHVybiBsaW5lLnN0cmlwKCkuc3RhcnRzd2l0aCgnU291cmNlJykKIApAQCAt
ODYsNyArODksNyBAQCBkZWYgZ2V0X3VubGlzdGVkX2hlYWRlcnMobGlzdGVkX21ha2VmaWxlX2hl
YWRlcnMpOgogZGVmIGdldF9taXNzaW5nX2hlYWRlcnMobGlzdGVkX21ha2VmaWxlX2hlYWRlcnMp
OgogICAgIG1pc3NpbmcgPSBzZXQoKQogICAgIGZvciBoZWFkZXIgaW4gbGlzdGVkX21ha2VmaWxl
X2hlYWRlcnM6Ci0gICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhjb21tb24udG9wX2xldmVs
X3BhdGgoaGVhZGVyKSk6CisgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhqaGJ1aWxkcmNf
Y29tbW9uLnRvcF9sZXZlbF9wYXRoKGhlYWRlcikpOgogICAgICAgICAgICAgbWlzc2luZy5hZGQo
aGVhZGVyKQogICAgIHJldHVybiBtaXNzaW5nCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL2d0ay9nZW5l
cmF0ZS1ndGtkb2MgYi9Ub29scy9ndGsvZ2VuZXJhdGUtZ3RrZG9jCmluZGV4IGNlMjIwYTYuLmQ3
ODk4OWQgMTAwNzU1Ci0tLSBhL1Rvb2xzL2d0ay9nZW5lcmF0ZS1ndGtkb2MKKysrIGIvVG9vbHMv
Z3RrL2dlbmVyYXRlLWd0a2RvYwpAQCAtMjIsNiArMjIsOSBAQCBpbXBvcnQgbG9nZ2luZwogaW1w
b3J0IG9zLnBhdGgKIGltcG9ydCBzeXMKIAorc3lzLnBhdGguaW5zZXJ0KDAsIG9zLnBhdGguam9p
bihvcy5wYXRoLmRpcm5hbWUoX19maWxlX18pLCAiLi4vamhidWlsZCIpKQoraW1wb3J0IGpoYnVp
bGRyY19jb21tb24KKwogZGVmIGNvbmZpZ3VyZV9sb2dnaW5nKCk6CiAgICAgbGV2ZWwgPSBsb2dn
aW5nLkRFQlVHIGlmICctdicgaW4gc3lzLmFyZ3YgZWxzZSBsb2dnaW5nLklORk8KICAgICBsb2dn
ZXIgPSBsb2dnaW5nLmdldExvZ2dlcignZ3RrZG9jJykKQEAgLTc2LDggKzc5LDggQEAgZGVmIHdl
YmtpdGRvbV9kb2NzX2h0bWxfcGF0aCgpOgogICAgIHJldHVybiBjb21tb24uYnVpbGRfcGF0aCgn
RG9jdW1lbnRhdGlvbicsICd3ZWJraXRkb21ndGsnLCAnaHRtbCcpCiAKIGRlZiBnZXRfd2Via2l0
Ml9vcHRpb25zKCk6Ci0gICAgYXBpX3BhdGggPSBjb21tb24udG9wX2xldmVsX3BhdGgoJ1NvdXJj
ZScsICdXZWJLaXQyJywgJ1VJUHJvY2VzcycsICdBUEknLCAnZ3RrJykKLSAgICBpbmplY3RlZF9i
dW5kbGVfYXBpX3BhdGggPSBjb21tb24udG9wX2xldmVsX3BhdGgoJ1NvdXJjZScsICdXZWJLaXQy
JywgJ1dlYlByb2Nlc3MnLCAnSW5qZWN0ZWRCdW5kbGUnLCAnQVBJJywgJ2d0aycpCisgICAgYXBp
X3BhdGggPSBqaGJ1aWxkcmNfY29tbW9uLnRvcF9sZXZlbF9wYXRoKCdTb3VyY2UnLCAnV2ViS2l0
MicsICdVSVByb2Nlc3MnLCAnQVBJJywgJ2d0aycpCisgICAgaW5qZWN0ZWRfYnVuZGxlX2FwaV9w
YXRoID0gamhidWlsZHJjX2NvbW1vbi50b3BfbGV2ZWxfcGF0aCgnU291cmNlJywgJ1dlYktpdDIn
LCAnV2ViUHJvY2VzcycsICdJbmplY3RlZEJ1bmRsZScsICdBUEknLCAnZ3RrJykgCiAKICAgICBp
ZiBjb21tb24uaXNfY21ha2VfYnVpbGQoKToKICAgICAgICAgZ2VuZXJhdGVkX2FwaV9wYXRoID0g
Y29tbW9uLmJ1aWxkX3BhdGgoJ0Rlcml2ZWRTb3VyY2VzJywgJ3dlYmtpdDJndGsnLCAnd2Via2l0
MicpCkBAIC0xMDEsNyArMTA0LDcgQEAgZGVmIGdldF93ZWJraXQyX29wdGlvbnMoKToKICAgICAg
ICAgJ3NvdXJjZV9kaXJzJyA6IFtzcmNfcGF0aCgpLCBnZW5lcmF0ZWRfYXBpX3BhdGgsIGluamVj
dGVkX2J1bmRsZV9hcGlfcGF0aF0sCiAgICAgICAgICdjZmxhZ3MnIDoKICAgICAgICAgICAgICMg
Q29tbW9uIHBhdGhzCi0gICAgICAgICAgICAnIC1JJyArIGNvbW1vbi50b3BfbGV2ZWxfcGF0aCgn
U291cmNlJykgKyBcCisgICAgICAgICAgICAnIC1JJyArIGpoYnVpbGRyY19jb21tb24udG9wX2xl
dmVsX3BhdGgoJ1NvdXJjZScpICsgXAogICAgICAgICAgICAgJyAtSScgKyBhcGlfcGF0aCArIFwK
ICAgICAgICAgICAgICMgQXV0b3Rvb2xzIHBhdGhzCiAgICAgICAgICAgICAnIC1JJyArIGNvbW1v
bi5idWlsZF9wYXRoKCdEZXJpdmVkU291cmNlcycsICd3ZWJraXQyZ3RrJywgJ2luY2x1ZGUnKSAr
IFwKQEAgLTEyNyw3ICsxMzAsNyBAQCBkZWYgZ2V0X3dlYmtpdDJfb3B0aW9ucygpOgogCiBkZWYg
Z2V0X3dlYmtpdDFfb3B0aW9ucyhndGtfdmVyc2lvbik6CiAgICAgZGVmIHNyY19wYXRoKCphcmdz
KToKLSAgICAgICAgcmV0dXJuIGNvbW1vbi50b3BfbGV2ZWxfcGF0aCgqKCgnU291cmNlJywgJ1dl
YktpdCcsICdndGsnKSArIGFyZ3MpKQorICAgICAgICByZXR1cm4gamhidWlsZHJjX2NvbW1vbi50
b3BfbGV2ZWxfcGF0aCgqKCgnU291cmNlJywgJ1dlYktpdCcsICdndGsnKSArIGFyZ3MpKQogCiAg
ICAgZGVmIHdlYmtpdHZlcnNpb25oX3BhdGgoKToKICAgICAgICAgaWYgY29tbW9uLmlzX2NtYWtl
X2J1aWxkKCk6CkBAIC0xNTUsOCArMTU4LDggQEAgZGVmIGdldF93ZWJraXQxX29wdGlvbnMoZ3Rr
X3ZlcnNpb24pOgogICAgICAgICAnY2ZsYWdzJyA6ICcgLUknICsgY29tbW9uLmJ1aWxkX3BhdGgo
J1dlYktpdCcsICdndGsnKSArIFwKICAgICAgICAgICAgICAgICAgICAnIC1JJyArIGNvbW1vbi5i
dWlsZF9wYXRoKCdEZXJpdmVkU291cmNlcycpICsgXAogICAgICAgICAgICAgICAgICAgICcgLUkn
ICsgc3JjX3BhdGgoKSArIFwKLSAgICAgICAgICAgICAgICAgICAnIC1JJyArIGNvbW1vbi50b3Bf
bGV2ZWxfcGF0aCgnU291cmNlJykgKyBcCi0gICAgICAgICAgICAgICAgICAgJyAtSScgKyBjb21t
b24udG9wX2xldmVsX3BhdGgoJ1NvdXJjZScsICdKYXZhU2NyaXB0Q29yZScsICdGb3J3YXJkaW5n
SGVhZGVycycpLAorICAgICAgICAgICAgICAgICAgICcgLUknICsgamhidWlsZHJjX2NvbW1vbi50
b3BfbGV2ZWxfcGF0aCgnU291cmNlJykgKyBcCisgICAgICAgICAgICAgICAgICAgJyAtSScgKyBq
aGJ1aWxkcmNfY29tbW9uLnRvcF9sZXZlbF9wYXRoKCdTb3VyY2UnLCAnSmF2YVNjcmlwdENvcmUn
LCAnRm9yd2FyZGluZ0hlYWRlcnMnKSwKICAgICAgICAgJ2Nyb3NzX3JlZmVyZW5jZV9kZXBzJyA6
IGdldF9ndGtkb2NfbW9kdWxlX3BhdGhzKHhyZWZfZGVwcykgKyBbd2Via2l0ZG9tX2RvY3NfaHRt
bF9wYXRoKCldLAogICAgICAgICAnaWdub3JlZF9maWxlcyc6IGdsb2IuZ2xvYihzcmNfcGF0aCgn
d2Via2l0JywgJypwcml2YXRlLionKSkgKyBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgZ2xv
Yi5nbG9iKHNyY19wYXRoKCd3ZWJraXQnLCAnd2Via2l0YXV0aGVudGljYXRpb25kaWFsb2cuKicp
KSArIFwKQEAgLTE2OCw3ICsxNzEsNyBAQCBkZWYgZ2V0X3dlYmtpdGRvbV9vcHRpb25zKCk6CiAg
ICAgZGVmIGRlcml2ZWRfc291cmNlc19wYXRoKCphcmdzKToKICAgICAgICAgcmV0dXJuIGNvbW1v
bi5idWlsZF9wYXRoKCooKCdEZXJpdmVkU291cmNlcycsICd3ZWJraXRkb20nKSArIGFyZ3MpKQog
ICAgIGRlZiBzcmNfcGF0aCgqYXJncyk6Ci0gICAgICAgIHJldHVybiBjb21tb24udG9wX2xldmVs
X3BhdGgoKigoJ1NvdXJjZScsICdXZWJDb3JlJywgJ2JpbmRpbmdzJywgJ2dvYmplY3QnKSArIGFy
Z3MpKQorICAgICAgICByZXR1cm4gamhidWlsZHJjX2NvbW1vbi50b3BfbGV2ZWxfcGF0aCgqKCgn
U291cmNlJywgJ1dlYkNvcmUnLCAnYmluZGluZ3MnLCAnZ29iamVjdCcpICsgYXJncykpCiAKICAg
ICB4cmVmX2RlcHMgPSB7ICdnbGliLTIuMCcgOiBbJ2dsaWInLCAnZ29iamVjdCcsICdnaW8nXSB9
CiAKQEAgLTE4MSw3ICsxODQsNyBAQCBkZWYgZ2V0X3dlYmtpdGRvbV9vcHRpb25zKCk6CiAgICAg
ICAgICdzb3VyY2VfZGlycycgOiBbZGVyaXZlZF9zb3VyY2VzX3BhdGgoKV0sCiAgICAgICAgICdj
ZmxhZ3MnIDogJyAtSScgKyBkZXJpdmVkX3NvdXJjZXNfcGF0aCgpICsgXAogICAgICAgICAgICAg
ICAgICAgICcgLUknICsgc3JjX3BhdGgoKSArIFwKLSAgICAgICAgICAgICAgICAgICAnIC1JJyAr
IGNvbW1vbi50b3BfbGV2ZWxfcGF0aCgnU291cmNlJyksCisgICAgICAgICAgICAgICAgICAgJyAt
SScgKyBqaGJ1aWxkcmNfY29tbW9uLnRvcF9sZXZlbF9wYXRoKCdTb3VyY2UnKSwKICAgICAgICAg
J2Nyb3NzX3JlZmVyZW5jZV9kZXBzJyA6IGdldF9ndGtkb2NfbW9kdWxlX3BhdGhzKHhyZWZfZGVw
cyksCiAgICAgICAgICdpZ25vcmVkX2ZpbGVzJzogZ2xvYi5nbG9iKGRlcml2ZWRfc291cmNlc19w
YXRoKCcqUHJpdmF0ZS5oJykpCiAgICAgfSkKZGlmZiAtLWdpdCBhL1Rvb2xzL2d0ay9nZW5lcmF0
ZS1pbnNwZWN0b3ItZ3Jlc291cmNlLW1hbmlmZXN0LnB5IGIvVG9vbHMvZ3RrL2dlbmVyYXRlLWlu
c3BlY3Rvci1ncmVzb3VyY2UtbWFuaWZlc3QucHkKaW5kZXggNThhMWRmMS4uMGJkNjM5NCAxMDA3
NTUKLS0tIGEvVG9vbHMvZ3RrL2dlbmVyYXRlLWluc3BlY3Rvci1ncmVzb3VyY2UtbWFuaWZlc3Qu
cHkKKysrIGIvVG9vbHMvZ3RrL2dlbmVyYXRlLWluc3BlY3Rvci1ncmVzb3VyY2UtbWFuaWZlc3Qu
cHkKQEAgLTIwLDcgKzIwLDEwIEBAIGltcG9ydCBnbG9iCiBpbXBvcnQgb3MKIGltcG9ydCBzeXMK
IAotcmVzb3VyY2VzX3BhdGggPSBjb21tb24udG9wX2xldmVsX3BhdGgoKSArICIvU291cmNlL1dl
Ykluc3BlY3RvclVJLyIKK3N5cy5wYXRoLmluc2VydCgwLCBvcy5wYXRoLmpvaW4ob3MucGF0aC5k
aXJuYW1lKF9fZmlsZV9fKSwgIi4uL2poYnVpbGQiKSkKK2ltcG9ydCBqaGJ1aWxkcmNfY29tbW9u
CisKK3Jlc291cmNlc19wYXRoID0gamhidWlsZHJjX2NvbW1vbi50b3BfbGV2ZWxfcGF0aCgpICsg
Ii9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvIgogaW5zcGVjdG9yX2ZpbGVzID0gXAogICAgIGdsb2Iu
Z2xvYihyZXNvdXJjZXNfcGF0aCArICdVc2VySW50ZXJmYWNlLyouaHRtbCcpICsgXAogICAgIGds
b2IuZ2xvYihyZXNvdXJjZXNfcGF0aCArICdVc2VySW50ZXJmYWNlLyouanMnKSArIFwKZGlmZiAt
LWdpdCBhL1Rvb2xzL2d0ay9qaGJ1aWxkcmMgYi9Ub29scy9ndGsvamhidWlsZHJjCmluZGV4IDY5
Zjk0NTcuLmFjZWM2NzUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL2d0ay9qaGJ1aWxkcmMKKysrIGIvVG9v
bHMvZ3RrL2poYnVpbGRyYwpAQCAtMTUsMzYgKzE1LDE2IEBACiAjIExpY2Vuc2UgYWxvbmcgd2l0
aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKICMgRm91
bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBN
QSAgMDIxMTAtMTMwMSAgVVNBCiAKLWltcG9ydCBtdWx0aXByb2Nlc3NpbmcKIGltcG9ydCBzeXMK
IAorc3lzLnBhdGguaW5zZXJ0KDAsIG9zLnBhdGguam9pbihvcy5wYXRoLmRpcm5hbWUoX19maWxl
X18pLCAiLi4vamhidWlsZCIpICkKK2ltcG9ydCBqaGJ1aWxkcmNfY29tbW9uCitqaGJ1aWxkcmNf
Y29tbW9uLmluaXQoZ2xvYmFscygpLCAiZ3RrIikKKwogX19ndGtfdG9vbHNfZGlyZWN0b3J5ID0g
b3MucGF0aC5hYnNwYXRoKG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXykpCiBzeXMucGF0aCA9IFtf
X2d0a190b29sc19kaXJlY3RvcnldICsgc3lzLnBhdGgKIGltcG9ydCBjb21tb24KIAotYnVpbGRf
cG9saWN5ID0gJ3VwZGF0ZWQnCi0KLV9fbW9kdWxlc2V0X2ZpbGVfdXJpID0gJ2ZpbGU6Ly8nICsg
b3MucGF0aC5qb2luKF9fZ3RrX3Rvb2xzX2RpcmVjdG9yeSwgJ2poYnVpbGQubW9kdWxlcycpCi1f
X2V4dHJhX21vZHVsZXNldHMgPSBvcy5lbnZpcm9uLmdldCgiV0VCS0lUX0VYVFJBX01PRFVMRVNF
VFMiLCAiIikuc3BsaXQoIiwiKQotbW9kdWxlc2V0ID0gWyBfX21vZHVsZXNldF9maWxlX3VyaSwg
XQotaWYgX19leHRyYV9tb2R1bGVzZXRzICE9IFsnJ106Ci0gICAgbW9kdWxlc2V0LmV4dGVuZChf
X2V4dHJhX21vZHVsZXNldHMpCi0KLV9fZXh0cmFfbW9kdWxlcyA9IG9zLmVudmlyb24uZ2V0KCJX
RUJLSVRfRVhUUkFfTU9EVUxFUyIsICIiKS5zcGxpdCgiLCIpCi1tb2R1bGVzID0gWyAnd2Via2l0
Z3RrLXRlc3RpbmctZGVwZW5kZW5jaWVzJywgXQotaWYgX19leHRyYV9tb2R1bGVzICE9IFsnJ106
Ci0gICAgbW9kdWxlcy5leHRlbmQoX19leHRyYV9tb2R1bGVzKQotCi1pZiBvcy5lbnZpcm9uLmhh
c19rZXkoJ1dFQktJVF9PVVRQVVRESVInKToKLSAgICBjaGVja291dHJvb3QgPSBvcy5wYXRoLmFi
c3BhdGgob3MucGF0aC5qb2luKG9zLmVudmlyb25bJ1dFQktJVF9PVVRQVVRESVInXSwgJ0RlcGVu
ZGVuY2llcycsICdTb3VyY2UnKSkKLSAgICBwcmVmaXggPSBvcy5wYXRoLmFic3BhdGgob3MucGF0
aC5qb2luKG9zLmVudmlyb25bJ1dFQktJVF9PVVRQVVRESVInXSwgJ0RlcGVuZGVuY2llcycsICdS
b290JykpCi1lbHNlOgotICAgIGNoZWNrb3V0cm9vdCA9IG9zLnBhdGguYWJzcGF0aChjb21tb24u
dG9wX2xldmVsX3BhdGgoJ1dlYktpdEJ1aWxkJywnRGVwZW5kZW5jaWVzJywgJ1NvdXJjZScpKQot
ICAgIHByZWZpeCA9IG9zLnBhdGguYWJzcGF0aChjb21tb24udG9wX2xldmVsX3BhdGgoJ1dlYktp
dEJ1aWxkJywnRGVwZW5kZW5jaWVzJywgJ1Jvb3QnKSkKLQotbm9ub3RpZnkgPSBUcnVlCi1ub3Ry
YXlpY29uID0gVHJ1ZQotCiBpZiAnTlVNQkVSX09GX1BST0NFU1NPUlMnIGluIG9zLmVudmlyb246
CiAgICAgam9icyA9IG9zLmVudmlyb25bJ05VTUJFUl9PRl9QUk9DRVNTT1JTJ10KIApkaWZmIC0t
Z2l0IGEvVG9vbHMvamhidWlsZC9qaGJ1aWxkcmNfY29tbW9uLnB5IGIvVG9vbHMvamhidWlsZC9q
aGJ1aWxkcmNfY29tbW9uLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVl
ODc1NjIKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9qaGJ1aWxkL2poYnVpbGRyY19jb21tb24u
cHkKQEAgLTAsMCArMSw2MCBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisjIENvcHlyaWdodCAo
QykgMjAxMSBJZ2FsaWEgUy5MLgorIyBDb3B5cmlnaHQgKEMpIDIwMTIgSW50ZWwgQ29ycG9yYXRp
b24KKyMKKyMgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli
dXRlIGl0IGFuZC9vcgorIyBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVz
c2VyIEdlbmVyYWwgUHVibGljCisjIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorIyB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9y
IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisjCisjIFRoaXMgbGlicmFyeSBp
cyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorIyBidXQg
V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv
ZgorIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu
ICBTZWUgdGhlIEdOVQorIyBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBk
ZXRhaWxzLgorIworIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg
TGVzc2VyIEdlbmVyYWwgUHVibGljCisjIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7
IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyMgRm91bmRhdGlvbiwgSW5jLiwg
NTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAg
VVNBCisKK2ltcG9ydCBtdWx0aXByb2Nlc3NpbmcKK2ltcG9ydCBzeXMKK2ltcG9ydCBvcyAKKwor
c2NyaXB0X2RpciA9IE5vbmUKKworZGVmIHNjcmlwdF9wYXRoKCphcmdzKToKKyBnbG9iYWwgc2Ny
aXB0X2RpcgorIGlmIG5vdCBzY3JpcHRfZGlyOgorICAgIHNjcmlwdF9kaXIgPSBvcy5wYXRoLmpv
aW4ob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSwgJy4uJywgJ1NjcmlwdHMnKQorIHJldHVybiBv
cy5wYXRoLmpvaW4oKihzY3JpcHRfZGlyLCkgKyBhcmdzKQorCitkZWYgdG9wX2xldmVsX3BhdGgo
KmFyZ3MpOgorIHJldHVybiBvcy5wYXRoLmpvaW4oKigob3MucGF0aC5qb2luKG9zLnBhdGguZGly
bmFtZShfX2ZpbGVfXyksICcuLicsICcuLicpLCkgKyBhcmdzKSkKKworZGVmIGluaXQoamhidWls
ZHJjX2dsb2JhbHMsIHBsYXRmb3JtKToKKyAgX190b29sc19kaXJlY3RvcnkgPSBvcy5wYXRoLmpv
aW4ob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSwgIi4uLyIsIHBsYXRmb3JtKQorICBzeXMucGF0
aC5pbnNlcnQoMCwgX190b29sc19kaXJlY3RvcnkpCisgCisgIGpoYnVpbGRyY19nbG9iYWxzWyJi
dWlsZF9wb2xpY3kiXSA9ICd1cGRhdGVkJworIAorICBfX21vZHVsZXNldF9maWxlX3VyaSA9ICdm
aWxlOi8vJyArIG9zLnBhdGguam9pbihfX3Rvb2xzX2RpcmVjdG9yeSwgJ2poYnVpbGQubW9kdWxl
cycpCisgIF9fZXh0cmFfbW9kdWxlc2V0cyA9IG9zLmVudmlyb24uZ2V0KCJXRUJLSVRfRVhUUkFf
TU9EVUxFU0VUUyIsICIiKS5zcGxpdCgiLCIpCisgIGpoYnVpbGRyY19nbG9iYWxzWyJtb2R1bGVz
ZXQiXSA9IFtfX21vZHVsZXNldF9maWxlX3VyaSwgXQorICBpZiBfX2V4dHJhX21vZHVsZXNldHMg
IT0gWycnXToKKyAgICAgIGpoYnVpbGRyY19nbG9iYWxzWyJtb2R1bGVzZXQiXS5leHRlbmQoX19l
eHRyYV9tb2R1bGVzZXRzKQorIAorICBfX2V4dHJhX21vZHVsZXMgPSBvcy5lbnZpcm9uLmdldCgi
V0VCS0lUX0VYVFJBX01PRFVMRVMiLCAiIikuc3BsaXQoIiwiKQorICBqaGJ1aWxkcmNfZ2xvYmFs
c1sibW9kdWxlcyJdID0gWyd3ZWJraXQnICsgcGxhdGZvcm0gKyAnLXRlc3RpbmctZGVwZW5kZW5j
aWVzJywgXQorICBpZiBfX2V4dHJhX21vZHVsZXMgIT0gWycnXToKKyAgICAgIGpoYnVpbGRyY19n
bG9iYWxzWyJtb2R1bGVzIl0uZXh0ZW5kKF9fZXh0cmFfbW9kdWxlcykKKyAKKyAgaWYgJ1dFQktJ
VF9PVVRQVVRESVInIGluIG9zLmVudmlyb246CisgICAgICBqaGJ1aWxkcmNfZ2xvYmFsc1siY2hl
Y2tvdXRyb290Il0gPSBjaGVja291dHJvb3QgPSBvcy5wYXRoLmFic3BhdGgob3MucGF0aC5qb2lu
KG9zLmVudmlyb25bJ1dFQktJVF9PVVRQVVRESVInXSwgJ0RlcGVuZGVuY2llcycsICdTb3VyY2Un
KSkKKyAgICAgIGpoYnVpbGRyY19nbG9iYWxzWyJwcmVmaXgiXSA9IG9zLnBhdGguYWJzcGF0aChv
cy5wYXRoLmpvaW4ob3MuZW52aXJvblsnV0VCS0lUX09VVFBVVERJUiddLCAnRGVwZW5kZW5jaWVz
JywgJ1Jvb3QnKSkKKyAgZWxzZToKKyAgICAgIGpoYnVpbGRyY19nbG9iYWxzWyJjaGVja291dHJv
b3QiXSA9IGNoZWNrb3V0cm9vdCA9IG9zLnBhdGguYWJzcGF0aCh0b3BfbGV2ZWxfcGF0aCgnV2Vi
S2l0QnVpbGQnLCAnRGVwZW5kZW5jaWVzJywgJ1NvdXJjZScpKQorICAgICAgamhidWlsZHJjX2ds
b2JhbHNbInByZWZpeCJdID0gb3MucGF0aC5hYnNwYXRoKHRvcF9sZXZlbF9wYXRoKCdXZWJLaXRC
dWlsZCcsICdEZXBlbmRlbmNpZXMnLCAnUm9vdCcpKQorIAorICBqaGJ1aWxkcmNfZ2xvYmFsc1si
bm9ub3RpZnkiXSA9IFRydWUKKyAgamhidWlsZHJjX2dsb2JhbHNbIm5vdHJheWljb24iXSA9IFRy
dWUKKyAgIApkaWZmIC0tZ2l0IGEvVG9vbHMvbml4L2NvbW1vbi5weSBiL1Rvb2xzL25peC9jb21t
b24ucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBiOGI2NjIuLjAwMDAwMDAKLS0t
IGEvVG9vbHMvbml4L2NvbW1vbi5weQorKysgL2Rldi9udWxsCkBAIC0xLDMyICswLDAgQEAKLSMh
L3Vzci9iaW4vZW52IHB5dGhvbgotIyBDb3B5cmlnaHQgKEMpIDIwMTEgSWdhbGlhIFMuTC4KLSMg
Q29weXJpZ2h0IChDKSAyMDEyLCAyMDEzIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vi
c2lkaWFyeSgtaWVzKS4KLSMKLSMgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj
YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotIyBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9m
IHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi0jIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotIyB2ZXJzaW9uIDIgb2YgdGhl
IExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0jCi0jIFRo
aXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl
ZnVsLAotIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGll
ZCB3YXJyYW50eSBvZgotIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotIyBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZSBmb3IgbW9yZSBkZXRhaWxzLgotIwotIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5
IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi0jIExpY2Vuc2UgYWxvbmcgd2l0aCB0
aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSMgRm91bmRh
dGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAg
MDIxMTAtMTMwMSAgVVNBCi0KLWltcG9ydCBvcwotCi1zY3JpcHRfZGlyID0gTm9uZQotCi0KLWRl
ZiBzY3JpcHRfcGF0aCgqYXJncyk6Ci0gICAgZ2xvYmFsIHNjcmlwdF9kaXIKLSAgICBpZiBub3Qg
c2NyaXB0X2RpcjoKLSAgICAgICAgc2NyaXB0X2RpciA9IG9zLnBhdGguam9pbihvcy5wYXRoLmRp
cm5hbWUoX19maWxlX18pLCAnLi4nLCAnU2NyaXB0cycpCi0gICAgcmV0dXJuIG9zLnBhdGguam9p
bigqKHNjcmlwdF9kaXIsKSArIGFyZ3MpCi0KLQotZGVmIHRvcF9sZXZlbF9wYXRoKCphcmdzKToK
LSAgICByZXR1cm4gb3MucGF0aC5qb2luKCooKHNjcmlwdF9wYXRoKCcuLicsICcuLicpLCkgKyBh
cmdzKSkKZGlmZiAtLWdpdCBhL1Rvb2xzL25peC9qaGJ1aWxkcmMgYi9Ub29scy9uaXgvamhidWls
ZHJjCmluZGV4IDM1NTUyY2EuLmMwNTJhNjggMTAwNjQ0Ci0tLSBhL1Rvb2xzL25peC9qaGJ1aWxk
cmMKKysrIGIvVG9vbHMvbml4L2poYnVpbGRyYwpAQCAtMTcsMzggKzE3LDEyIEBACiAjIExpY2Vu
c2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29m
dHdhcmUKICMgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9v
ciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCiAKLWltcG9ydCBtdWx0aXByb2Nlc3NpbmcK
IGltcG9ydCBzeXMKLWltcG9ydCBvcwogCi1fX25peF90b29sc19kaXJlY3RvcnkgPSBvcy5wYXRo
LmFic3BhdGgob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSkKLXN5cy5wYXRoID0gW19fbml4X3Rv
b2xzX2RpcmVjdG9yeV0gKyBzeXMucGF0aAotaW1wb3J0IGNvbW1vbgorc3lzLnBhdGguaW5zZXJ0
KDAsIG9zLnBhdGguam9pbihvcy5wYXRoLmRpcm5hbWUoX19maWxlX18pLCAiLi4vamhidWlsZCIp
ICkKK2ltcG9ydCBqaGJ1aWxkcmNfY29tbW9uCitqaGJ1aWxkcmNfY29tbW9uLmluaXQoZ2xvYmFs
cygpLCAibml4IikgCiAKLWJ1aWxkX3BvbGljeSA9ICd1cGRhdGVkJwotCi0jIEZJWE1FOiBtb3Zl
IHNoYXJlZCBwYXJ0cyBpbnRvIC4uL2poYnVpbGQgZm9sZGVyLgotCi1fX21vZHVsZXNldF9maWxl
X3VyaSA9ICdmaWxlOi8vJyArIG9zLnBhdGguam9pbihfX25peF90b29sc19kaXJlY3RvcnksICdq
aGJ1aWxkLm1vZHVsZXMnKQotX19leHRyYV9tb2R1bGVzZXRzID0gb3MuZW52aXJvbi5nZXQoIldF
QktJVF9FWFRSQV9NT0RVTEVTRVRTIiwgIiIpLnNwbGl0KCIsIikKLW1vZHVsZXNldCA9IFsgX19t
b2R1bGVzZXRfZmlsZV91cmksIF0KLWlmIF9fZXh0cmFfbW9kdWxlc2V0cyAhPSBbJyddOgotICAg
IG1vZHVsZXNldC5leHRlbmQoX19leHRyYV9tb2R1bGVzZXRzKQotCi1fX2V4dHJhX21vZHVsZXMg
PSBvcy5lbnZpcm9uLmdldCgiV0VCS0lUX0VYVFJBX01PRFVMRVMiLCAiIikuc3BsaXQoIiwiKQot
bW9kdWxlcyA9IFsgJ3dlYmtpdG5peC10ZXN0aW5nLWRlcGVuZGVuY2llcycsIF0KLWlmIF9fZXh0
cmFfbW9kdWxlcyAhPSBbJyddOgotICAgIG1vZHVsZXMuZXh0ZW5kKF9fZXh0cmFfbW9kdWxlcykK
LQotaWYgb3MuZW52aXJvbi5oYXNfa2V5KCdXRUJLSVRfT1VUUFVURElSJyk6Ci0gICAgY2hlY2tv
dXRyb290ID0gb3MucGF0aC5hYnNwYXRoKG9zLnBhdGguam9pbihvcy5lbnZpcm9uWydXRUJLSVRf
T1VUUFVURElSJ10sICdEZXBlbmRlbmNpZXMnLCAnU291cmNlJykpCi0gICAgcHJlZml4ID0gb3Mu
cGF0aC5hYnNwYXRoKG9zLnBhdGguam9pbihvcy5lbnZpcm9uWydXRUJLSVRfT1VUUFVURElSJ10s
ICdEZXBlbmRlbmNpZXMnLCAnUm9vdCcpKQotZWxzZToKLSAgICBjaGVja291dHJvb3QgPSBvcy5w
YXRoLmFic3BhdGgoY29tbW9uLnRvcF9sZXZlbF9wYXRoKCdXZWJLaXRCdWlsZCcsJ0RlcGVuZGVu
Y2llcycsICdTb3VyY2UnKSkKLSAgICBwcmVmaXggPSBvcy5wYXRoLmFic3BhdGgoY29tbW9uLnRv
cF9sZXZlbF9wYXRoKCdXZWJLaXRCdWlsZCcsJ0RlcGVuZGVuY2llcycsICdSb290JykpCi0KLW5v
bm90aWZ5ID0gVHJ1ZQotbm90cmF5aWNvbiA9IFRydWUKIGlmICdNQUtFRkxBR1MnIG5vdCBpbiBv
cy5lbnZpcm9uOgogICAgIG9zLmVudmlyb25bJ01BS0VGTEFHUyddID0gJy1qJWQnICUgbXVsdGlw
cm9jZXNzaW5nLmNwdV9jb3VudCgpCiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>224511</attachid>
            <date>2014-02-18 07:51:48 -0800</date>
            <delta_ts>2014-02-21 08:44:28 -0800</delta_ts>
            <desc>Patch v9</desc>
            <filename>extract_v3.patch</filename>
            <type>text/plain</type>
            <size>21283</size>
            <attacher name="Tibor Mészáros">mtiborinf</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA0ZGZk
OWZmLi4zN2IwMjM3IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzUgQEAKKzIwMTQtMDItMTggIFRpYm9yIE1lc3phcm9zICA8dG1l
c3phcm9zLnUtc3plZ2VkQHBhcnRuZXIuc2Ftc3VuZy5jb20+CisKKyAgICAgICAgRXh0cmFjdCBj
b21tb24gcGFydHMgZnJvbSBqaGJ1aWxkcmMgZmlsZXMuCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjU5ODYKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNjcmlwdHMvcnVuLWd0ay10ZXN0czoKKyAgICAg
ICAgKFRlc3RSdW5uZXIuX3NldHVwX3Rlc3RpbmdfZW52aXJvbm1lbnQpOgorICAgICAgICAqIGVm
bC9jb21tb24ucHk6IFJlbW92ZWQuCisgICAgICAgICogZWZsL2poYnVpbGRyYzoKKyAgICAgICAg
KiBndGsvY2hlY2stZ2RvbS1zeW1ib2xzOgorICAgICAgICAqIGd0ay9jb21tb24ucHk6CisgICAg
ICAgIChiaW5hcnlfYnVpbGRfcGF0aCk6CisgICAgICAgIChnZXRfYnVpbGRfcGF0aCk6CisgICAg
ICAgICogZ3RrL2ZpbmQtbWFrZS1kaXN0LWVycm9yczoKKyAgICAgICAgKGdldF9taXNzaW5nX2hl
YWRlcnMpOgorICAgICAgICAqIGd0ay9nZW5lcmF0ZS1ndGtkb2M6CisgICAgICAgIChnZXRfd2Vi
a2l0Ml9vcHRpb25zKToKKyAgICAgICAgKGdldF93ZWJraXQxX29wdGlvbnMuc3JjX3BhdGgpOgor
ICAgICAgICAoZ2V0X3dlYmtpdDFfb3B0aW9ucyk6CisgICAgICAgIChnZXRfd2Via2l0ZG9tX29w
dGlvbnMuc3JjX3BhdGgpOgorICAgICAgICAoZ2V0X3dlYmtpdGRvbV9vcHRpb25zKToKKyAgICAg
ICAgKiBndGsvZ2VuZXJhdGUtaW5zcGVjdG9yLWdyZXNvdXJjZS1tYW5pZmVzdC5weToKKyAgICAg
ICAgKiBndGsvamhidWlsZHJjOgorICAgICAgICAqIGpoYnVpbGQvamhidWlsZHJjX2NvbW1vbi5w
eTogQWRkZWQuCisgICAgICAgIChzY3JpcHRfcGF0aCk6CisgICAgICAgICh0b3BfbGV2ZWxfcGF0
aCk6CisgICAgICAgIChpbml0KToKKyAgICAgICAgKiBuaXgvY29tbW9uLnB5OiBSZW1vdmVkLgor
ICAgICAgICAqIG5peC9qaGJ1aWxkcmM6CisKIDIwMTQtMDItMTUgIFJ5dWFuIENob2kgIDxyeXVh
bi5jaG9pQHNhbXN1bmcuY29tPgogCiAgICAgICAgIEJ1aWxkIGJyZWFrIHdoZW4gZGlzYWJsZWQg
QUNDRVNTSUJJTElUWSBzaW5jZSByMTYyOTg2CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3J1
bi1ndGstdGVzdHMgYi9Ub29scy9TY3JpcHRzL3J1bi1ndGstdGVzdHMKaW5kZXggZTk4MDg2MC4u
NGJiNDYzYyAxMDA3NTUKLS0tIGEvVG9vbHMvU2NyaXB0cy9ydW4tZ3RrLXRlc3RzCisrKyBiL1Rv
b2xzL1NjcmlwdHMvcnVuLWd0ay10ZXN0cwpAQCAtMzEsNiArMzEsOSBAQCBzeXMucGF0aC5hcHBl
bmQob3MucGF0aC5qb2luKHRvcF9sZXZlbF9kaXJlY3RvcnksICJUb29scyIsICJndGsiKSkKIGlt
cG9ydCBjb21tb24KIGltcG9ydCBqaGJ1aWxkdXRpbHMKIAorc3lzLnBhdGguaW5zZXJ0KDAsIG9z
LnBhdGguam9pbihvcy5wYXRoLmRpcm5hbWUoX19maWxlX18pLCAiLi4vamhidWlsZCIpKQoraW1w
b3J0IGpoYnVpbGRyY19jb21tb24KKwogY2xhc3MgU2tpcHBlZFRlc3Q6CiAgICAgRU5USVJFX1NV
SVRFID0gTm9uZQogCkBAIC0xOTUsNyArMTk4LDcgQEAgY2xhc3MgVGVzdFJ1bm5lcjoKICAgICBk
ZWYgX3NldHVwX3Rlc3RpbmdfZW52aXJvbm1lbnQoc2VsZik6CiAgICAgICAgIHNlbGYuX3Rlc3Rf
ZW52ID0gb3MuZW52aXJvbgogICAgICAgICBzZWxmLl90ZXN0X2VudlsnR1NFVFRJTkdTX0JBQ0tF
TkQnXSA9ICdtZW1vcnknCi0gICAgICAgIHNlbGYuX3Rlc3RfZW52WyJURVNUX1dFQktJVF9BUElf
V0VCS0lUMl9SRVNPVVJDRVNfUEFUSCJdID0gY29tbW9uLnRvcF9sZXZlbF9wYXRoKCJUb29scyIs
ICJUZXN0V2ViS2l0QVBJIiwgIlRlc3RzIiwgIldlYktpdDIiKQorICAgICAgICBzZWxmLl90ZXN0
X2VudlsiVEVTVF9XRUJLSVRfQVBJX1dFQktJVDJfUkVTT1VSQ0VTX1BBVEgiXSA9IGpoYnVpbGRy
Y19jb21tb24udG9wX2xldmVsX3BhdGgoIlRvb2xzIiwgIlRlc3RXZWJLaXRBUEkiLCAiVGVzdHMi
LCAiV2ViS2l0MiIpCiAgICAgICAgIHNlbGYuX3Rlc3RfZW52WyJURVNUX1dFQktJVF9BUElfV0VC
S0lUMl9JTkpFQ1RFRF9CVU5ETEVfUEFUSCJdID0gY29tbW9uLnRlc3RzX2xpYnJhcnlfYnVpbGRf
cGF0aCgpCiAgICAgICAgIHNlbGYuX3Rlc3RfZW52WyJXRUJLSVRfRVhFQ19QQVRIIl0gPSBzZWxm
Ll9wcm9ncmFtc19wYXRoCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL2VmbC9jb21tb24ucHkgYi9Ub29s
cy9lZmwvY29tbW9uLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NzY1N2IzLi4w
MDAwMDAwCi0tLSBhL1Rvb2xzL2VmbC9jb21tb24ucHkKKysrIC9kZXYvbnVsbApAQCAtMSwzMSAr
MCwwIEBACi0jIS91c3IvYmluL2VudiBweXRob24KLSMgQ29weXJpZ2h0IChDKSAyMDExIElnYWxp
YSBTLkwuCi0jCi0jIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz
dHJpYnV0ZSBpdCBhbmQvb3IKLSMgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V
IExlc3NlciBHZW5lcmFsIFB1YmxpYwotIyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSMgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNl
LCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotIwotIyBUaGlzIGxpYnJh
cnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSMg
YnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFu
dHkgb2YKLSMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFLiAgU2VlIHRoZSBHTlUKLSMgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1v
cmUgZGV0YWlscy4KLSMKLSMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUg
R05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotIyBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJy
YXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0jIEZvdW5kYXRpb24sIElu
Yy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEz
MDEgIFVTQQotCi1pbXBvcnQgb3MKLQotc2NyaXB0X2RpciA9IE5vbmUKLQotCi1kZWYgc2NyaXB0
X3BhdGgoKmFyZ3MpOgotICAgIGdsb2JhbCBzY3JpcHRfZGlyCi0gICAgaWYgbm90IHNjcmlwdF9k
aXI6Ci0gICAgICAgIHNjcmlwdF9kaXIgPSBvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1lKF9f
ZmlsZV9fKSwgJy4uJywgJ1NjcmlwdHMnKQotICAgIHJldHVybiBvcy5wYXRoLmpvaW4oKihzY3Jp
cHRfZGlyLCkgKyBhcmdzKQotCi0KLWRlZiB0b3BfbGV2ZWxfcGF0aCgqYXJncyk6Ci0gICAgcmV0
dXJuIG9zLnBhdGguam9pbigqKChzY3JpcHRfcGF0aCgnLi4nLCAnLi4nKSwpICsgYXJncykpCmRp
ZmYgLS1naXQgYS9Ub29scy9lZmwvamhidWlsZHJjIGIvVG9vbHMvZWZsL2poYnVpbGRyYwppbmRl
eCA3N2RhYWU5Li42NWRmNmIzIDEwMDY0NAotLS0gYS9Ub29scy9lZmwvamhidWlsZHJjCisrKyBi
L1Rvb2xzL2VmbC9qaGJ1aWxkcmMKQEAgLTE2LDQwICsxNiwxMSBAQAogIyBMaWNlbnNlIGFsb25n
IHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiAj
IEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3Rv
biwgTUEgIDAyMTEwLTEzMDEgIFVTQQogCi1pbXBvcnQgbXVsdGlwcm9jZXNzaW5nCiBpbXBvcnQg
c3lzCiAKLV9fZWZsX3Rvb2xzX2RpcmVjdG9yeSA9IG9zLnBhdGguYWJzcGF0aChvcy5wYXRoLmRp
cm5hbWUoX19maWxlX18pKQotc3lzLnBhdGggPSBbX19lZmxfdG9vbHNfZGlyZWN0b3J5XSArIHN5
cy5wYXRoCi1pbXBvcnQgY29tbW9uCi0KLWJ1aWxkX3BvbGljeSA9ICd1cGRhdGVkJwotCi0jIEZJ
WE1FOiBtb3ZlIHNoYXJlZCBwYXJ0cyBpbnRvIC4uL2poYnVpbGQgZm9sZGVyLgotCi1fX21vZHVs
ZXNldF9maWxlX3VyaSA9ICdmaWxlOi8vJyArIG9zLnBhdGguam9pbihfX2VmbF90b29sc19kaXJl
Y3RvcnksICdqaGJ1aWxkLm1vZHVsZXMnKQotX19leHRyYV9tb2R1bGVzZXRzID0gb3MuZW52aXJv
bi5nZXQoIldFQktJVF9FWFRSQV9NT0RVTEVTRVRTIiwgIiIpLnNwbGl0KCIsIikKLW1vZHVsZXNl
dCA9IFsgX19tb2R1bGVzZXRfZmlsZV91cmksIF0KLWlmIF9fZXh0cmFfbW9kdWxlc2V0cyAhPSBb
JyddOgotICAgIG1vZHVsZXNldC5leHRlbmQoX19leHRyYV9tb2R1bGVzZXRzKQotCi1fX2V4dHJh
X21vZHVsZXMgPSBvcy5lbnZpcm9uLmdldCgiV0VCS0lUX0VYVFJBX01PRFVMRVMiLCAiIikuc3Bs
aXQoIiwiKQotbW9kdWxlcyA9IFsgJ3dlYmtpdGVmbC10ZXN0aW5nLWRlcGVuZGVuY2llcycsIF0K
LWlmIF9fZXh0cmFfbW9kdWxlcyAhPSBbJyddOgotICAgIG1vZHVsZXMuZXh0ZW5kKF9fZXh0cmFf
bW9kdWxlcykKLQotaWYgb3MuZW52aXJvbi5oYXNfa2V5KCdXRUJLSVRfT1VUUFVURElSJyk6Ci0g
ICAgY2hlY2tvdXRyb290ID0gb3MucGF0aC5hYnNwYXRoKG9zLnBhdGguam9pbihvcy5lbnZpcm9u
WydXRUJLSVRfT1VUUFVURElSJ10sICdEZXBlbmRlbmNpZXMnLCAnU291cmNlJykpCi0gICAgcHJl
Zml4ID0gb3MucGF0aC5hYnNwYXRoKG9zLnBhdGguam9pbihvcy5lbnZpcm9uWydXRUJLSVRfT1VU
UFVURElSJ10sICdEZXBlbmRlbmNpZXMnLCAnUm9vdCcpKQotZWxzZToKLSAgICBjaGVja291dHJv
b3QgPSBvcy5wYXRoLmFic3BhdGgoY29tbW9uLnRvcF9sZXZlbF9wYXRoKCdXZWJLaXRCdWlsZCcs
J0RlcGVuZGVuY2llcycsICdTb3VyY2UnKSkKLSAgICBwcmVmaXggPSBvcy5wYXRoLmFic3BhdGgo
Y29tbW9uLnRvcF9sZXZlbF9wYXRoKCdXZWJLaXRCdWlsZCcsJ0RlcGVuZGVuY2llcycsICdSb290
JykpCi0KLW5vbm90aWZ5ID0gVHJ1ZQotbm90cmF5aWNvbiA9IFRydWUKLQotaWYgJ05VTUJFUl9P
Rl9QUk9DRVNTT1JTJyBpbiBvcy5lbnZpcm9uOgotICAgIGpvYnMgPSBvcy5lbnZpcm9uWydOVU1C
RVJfT0ZfUFJPQ0VTU09SUyddCitzeXMucGF0aC5pbnNlcnQoMCwgb3MucGF0aC5qb2luKG9zLnBh
dGguZGlybmFtZShfX2ZpbGVfXyksICIuLi9qaGJ1aWxkIikgKQoraW1wb3J0IGpoYnVpbGRyY19j
b21tb24KK2poYnVpbGRyY19jb21tb24uaW5pdChnbG9iYWxzKCksICJlZmwiKSAKIAogIyBVc2Ug
c3lzdGVtIGxpYnJhcmllcyB3aGlsZSBidWlsZGluZy4KIGlmIHVzZV9saWI2NDoKZGlmZiAtLWdp
dCBhL1Rvb2xzL2d0ay9jaGVjay1nZG9tLXN5bWJvbHMgYi9Ub29scy9ndGsvY2hlY2stZ2RvbS1z
eW1ib2xzCmluZGV4IGYxMTA4YjcuLmI3YTNhNGMgMTAwNzU1Ci0tLSBhL1Rvb2xzL2d0ay9jaGVj
ay1nZG9tLXN5bWJvbHMKKysrIGIvVG9vbHMvZ3RrL2NoZWNrLWdkb20tc3ltYm9scwpAQCAtMjIs
NiArMjIsOCBAQCBpbXBvcnQgc3VicHJvY2VzcwogaW1wb3J0IHN5cwogaW1wb3J0IHRlbXBmaWxl
CiAKK3N5cy5wYXRoLmluc2VydCgwLCBvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1lKF9fZmls
ZV9fKSwgIi4uL2poYnVpbGQiKSkKK2ltcG9ydCBqaGJ1aWxkcmNfY29tbW9uCiAKIGRlZiBzaG91
bGRfdXBkYXRlX3N5bWJvbHNfZmlsZShuZXcsIG9sZCk6CiAgICAgaWYgbm90IG9zLnBhdGguZXhp
c3RzKG9sZCk6CkBAIC01MCw3ICs1Miw3IEBAIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CiAg
ICAgICAgICAgICAgICAgdG1wLndyaXRlKGZpbGVfaGFuZGxlLnJlYWQoKSkKICAgICAgICAgdG1w
LmZsdXNoKCkKIAotICAgICAgICBnZG9tX3NvdXJjZV9wYXRoID0gY29tbW9uLnRvcF9sZXZlbF9w
YXRoKCdTb3VyY2UnLCAnV2ViQ29yZScsICdiaW5kaW5ncycpCisgICAgICAgIGdkb21fc291cmNl
X3BhdGggPSBqaGJ1aWxkcmNfY29tbW9uLnRvcF9sZXZlbF9wYXRoKCdTb3VyY2UnLCAnV2ViQ29y
ZScsICdiaW5kaW5ncycpCiAgICAgICAgIGFwaV9icmVha190ZXN0X3BhdGggPSBvcy5wYXRoLmpv
aW4oZ2RvbV9zb3VyY2VfcGF0aCwgJ3NjcmlwdHMnLCAnZ29iamVjdC1ydW4tYXBpLWJyZWFrLXRl
c3QnKQogICAgICAgICBzdWJwcm9jZXNzLmNhbGwoW3N5cy5leGVjdXRhYmxlLCBhcGlfYnJlYWtf
dGVzdF9wYXRoLCBvcy5wYXRoLmpvaW4oZ2RvbV9zb3VyY2VfcGF0aCwgJ2dvYmplY3QnLCAgJ3dl
YmtpdGRvbS5zeW1ib2xzJyksIHRtcC5uYW1lXSkKIApkaWZmIC0tZ2l0IGEvVG9vbHMvZ3RrL2Nv
bW1vbi5weSBiL1Rvb2xzL2d0ay9jb21tb24ucHkKaW5kZXggMDJkYjkzMi4uNmU1MWFmNSAxMDA2
NDQKLS0tIGEvVG9vbHMvZ3RrL2NvbW1vbi5weQorKysgYi9Ub29scy9ndGsvY29tbW9uLnB5CkBA
IC0yMSw3ICsyMSw5IEBAIGltcG9ydCBzZWxlY3QKIGltcG9ydCBzdWJwcm9jZXNzCiBpbXBvcnQg
c3lzCiAKLXNjcmlwdF9kaXIgPSBOb25lCitzeXMucGF0aC5pbnNlcnQoMCwgb3MucGF0aC5qb2lu
KG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXyksICIuLi9qaGJ1aWxkIikpCitpbXBvcnQgamhidWls
ZHJjX2NvbW1vbgorCiBidWlsZF9kaXIgPSBOb25lCiBsaWJyYXJ5X2J1aWxkX2RpciA9IE5vbmUK
IHRlc3RzX2xpYnJhcnlfYnVpbGRfZGlyID0gTm9uZQpAQCAtNzEsMTcgKzczLDYgQEAgZGVmIGJp
bmFyeV9idWlsZF9wYXRoKCphcmdzKToKICAgICByZXR1cm4gbGlicmFyeV9idWlsZF9kaXIKIAog
Ci1kZWYgc2NyaXB0X3BhdGgoKmFyZ3MpOgotICAgIGdsb2JhbCBzY3JpcHRfZGlyCi0gICAgaWYg
bm90IHNjcmlwdF9kaXI6Ci0gICAgICAgIHNjcmlwdF9kaXIgPSBvcy5wYXRoLmpvaW4ob3MucGF0
aC5kaXJuYW1lKF9fZmlsZV9fKSwgJy4uJywgJ1NjcmlwdHMnKQotICAgIHJldHVybiBvcy5wYXRo
LmpvaW4oKihzY3JpcHRfZGlyLCkgKyBhcmdzKQotCi0KLWRlZiB0b3BfbGV2ZWxfcGF0aCgqYXJn
cyk6Ci0gICAgcmV0dXJuIG9zLnBhdGguam9pbigqKChvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJu
YW1lKF9fZmlsZV9fKSwgJy4uJywgJy4uJyksKSArIGFyZ3MpKQotCi0KIGRlZiBnZXRfYnVpbGRf
cGF0aChmYXRhbD1UcnVlKToKICAgICBnbG9iYWwgYnVpbGRfZGlyCiAgICAgaWYgYnVpbGRfZGly
OgpAQCAtMTA5LDIwICsxMDAsMjAgQEAgZGVmIGdldF9idWlsZF9wYXRoKGZhdGFsPVRydWUpOgog
CiAgICAgZ2xvYmFsIGJ1aWxkX3R5cGVzCiAgICAgZm9yIGJ1aWxkX3R5cGUgaW4gYnVpbGRfdHlw
ZXM6Ci0gICAgICAgIGJ1aWxkX2RpciA9IHRvcF9sZXZlbF9wYXRoKCdXZWJLaXRCdWlsZCcsIGJ1
aWxkX3R5cGUpCisgICAgICAgIGJ1aWxkX2RpciA9IGpoYnVpbGRyY19jb21tb24udG9wX2xldmVs
X3BhdGgoJ1dlYktpdEJ1aWxkJywgYnVpbGRfdHlwZSkKICAgICAgICAgaWYgaXNfdmFsaWRfYnVp
bGRfZGlyZWN0b3J5KGJ1aWxkX2Rpcik6CiAgICAgICAgICAgICByZXR1cm4gYnVpbGRfZGlyCiAK
ICAgICAjIGRpc3RjaGVjayBidWlsZHMgaW4gYSBkaXJlY3RvcnkgbmFtZWQgX2J1aWxkIGluIHRo
ZSB0b3AtbGV2ZWwgcGF0aC4KLSAgICBidWlsZF9kaXIgPSB0b3BfbGV2ZWxfcGF0aCgiX2J1aWxk
IikKKyAgICBidWlsZF9kaXIgPSBqaGJ1aWxkcmNfY29tbW9uLnRvcF9sZXZlbF9wYXRoKCJfYnVp
bGQiKQogICAgIGlmIGlzX3ZhbGlkX2J1aWxkX2RpcmVjdG9yeShidWlsZF9kaXIpOgogICAgICAg
ICByZXR1cm4gYnVpbGRfZGlyCiAKLSAgICBidWlsZF9kaXIgPSB0b3BfbGV2ZWxfcGF0aCgpCisg
ICAgYnVpbGRfZGlyID0gamhidWlsZHJjX2NvbW1vbi50b3BfbGV2ZWxfcGF0aCgpCiAgICAgaWYg
aXNfdmFsaWRfYnVpbGRfZGlyZWN0b3J5KGJ1aWxkX2Rpcik6CiAgICAgICAgIHJldHVybiBidWls
ZF9kaXIKIAotICAgIGJ1aWxkX2RpciA9IHRvcF9sZXZlbF9wYXRoKCJXZWJLaXRCdWlsZCIpCisg
ICAgYnVpbGRfZGlyID0gamhidWlsZHJjX2NvbW1vbi50b3BfbGV2ZWxfcGF0aCgiV2ViS2l0QnVp
bGQiKQogICAgIGlmIGlzX3ZhbGlkX2J1aWxkX2RpcmVjdG9yeShidWlsZF9kaXIpOgogICAgICAg
ICByZXR1cm4gYnVpbGRfZGlyCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL2d0ay9maW5kLW1ha2UtZGlz
dC1lcnJvcnMgYi9Ub29scy9ndGsvZmluZC1tYWtlLWRpc3QtZXJyb3JzCmluZGV4IDg4MGM3ODAu
LjM1ZDhhNzQgMTAwNzU1Ci0tLSBhL1Rvb2xzL2d0ay9maW5kLW1ha2UtZGlzdC1lcnJvcnMKKysr
IGIvVG9vbHMvZ3RrL2ZpbmQtbWFrZS1kaXN0LWVycm9ycwpAQCAtMjAsNiArMjAsOSBAQCBpbXBv
cnQgb3MKIGltcG9ydCBzdWJwcm9jZXNzCiBpbXBvcnQgc3lzCiAKK3N5cy5wYXRoLmluc2VydCgw
LCBvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSwgIi4uL2poYnVpbGQiKSkK
K2ltcG9ydCBqaGJ1aWxkcmNfY29tbW9uCisKIGRlZiBpc19zb3VyY2VfZmlsZV9saXN0aW5nKGxp
bmUpOgogICAgIHJldHVybiBsaW5lLnN0cmlwKCkuc3RhcnRzd2l0aCgnU291cmNlJykKIApAQCAt
ODYsNyArODksNyBAQCBkZWYgZ2V0X3VubGlzdGVkX2hlYWRlcnMobGlzdGVkX21ha2VmaWxlX2hl
YWRlcnMpOgogZGVmIGdldF9taXNzaW5nX2hlYWRlcnMobGlzdGVkX21ha2VmaWxlX2hlYWRlcnMp
OgogICAgIG1pc3NpbmcgPSBzZXQoKQogICAgIGZvciBoZWFkZXIgaW4gbGlzdGVkX21ha2VmaWxl
X2hlYWRlcnM6Ci0gICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhjb21tb24udG9wX2xldmVs
X3BhdGgoaGVhZGVyKSk6CisgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhqaGJ1aWxkcmNf
Y29tbW9uLnRvcF9sZXZlbF9wYXRoKGhlYWRlcikpOgogICAgICAgICAgICAgbWlzc2luZy5hZGQo
aGVhZGVyKQogICAgIHJldHVybiBtaXNzaW5nCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL2d0ay9nZW5l
cmF0ZS1ndGtkb2MgYi9Ub29scy9ndGsvZ2VuZXJhdGUtZ3RrZG9jCmluZGV4IGNlMjIwYTYuLmQ3
ODk4OWQgMTAwNzU1Ci0tLSBhL1Rvb2xzL2d0ay9nZW5lcmF0ZS1ndGtkb2MKKysrIGIvVG9vbHMv
Z3RrL2dlbmVyYXRlLWd0a2RvYwpAQCAtMjIsNiArMjIsOSBAQCBpbXBvcnQgbG9nZ2luZwogaW1w
b3J0IG9zLnBhdGgKIGltcG9ydCBzeXMKIAorc3lzLnBhdGguaW5zZXJ0KDAsIG9zLnBhdGguam9p
bihvcy5wYXRoLmRpcm5hbWUoX19maWxlX18pLCAiLi4vamhidWlsZCIpKQoraW1wb3J0IGpoYnVp
bGRyY19jb21tb24KKwogZGVmIGNvbmZpZ3VyZV9sb2dnaW5nKCk6CiAgICAgbGV2ZWwgPSBsb2dn
aW5nLkRFQlVHIGlmICctdicgaW4gc3lzLmFyZ3YgZWxzZSBsb2dnaW5nLklORk8KICAgICBsb2dn
ZXIgPSBsb2dnaW5nLmdldExvZ2dlcignZ3RrZG9jJykKQEAgLTc2LDggKzc5LDggQEAgZGVmIHdl
YmtpdGRvbV9kb2NzX2h0bWxfcGF0aCgpOgogICAgIHJldHVybiBjb21tb24uYnVpbGRfcGF0aCgn
RG9jdW1lbnRhdGlvbicsICd3ZWJraXRkb21ndGsnLCAnaHRtbCcpCiAKIGRlZiBnZXRfd2Via2l0
Ml9vcHRpb25zKCk6Ci0gICAgYXBpX3BhdGggPSBjb21tb24udG9wX2xldmVsX3BhdGgoJ1NvdXJj
ZScsICdXZWJLaXQyJywgJ1VJUHJvY2VzcycsICdBUEknLCAnZ3RrJykKLSAgICBpbmplY3RlZF9i
dW5kbGVfYXBpX3BhdGggPSBjb21tb24udG9wX2xldmVsX3BhdGgoJ1NvdXJjZScsICdXZWJLaXQy
JywgJ1dlYlByb2Nlc3MnLCAnSW5qZWN0ZWRCdW5kbGUnLCAnQVBJJywgJ2d0aycpCisgICAgYXBp
X3BhdGggPSBqaGJ1aWxkcmNfY29tbW9uLnRvcF9sZXZlbF9wYXRoKCdTb3VyY2UnLCAnV2ViS2l0
MicsICdVSVByb2Nlc3MnLCAnQVBJJywgJ2d0aycpCisgICAgaW5qZWN0ZWRfYnVuZGxlX2FwaV9w
YXRoID0gamhidWlsZHJjX2NvbW1vbi50b3BfbGV2ZWxfcGF0aCgnU291cmNlJywgJ1dlYktpdDIn
LCAnV2ViUHJvY2VzcycsICdJbmplY3RlZEJ1bmRsZScsICdBUEknLCAnZ3RrJykgCiAKICAgICBp
ZiBjb21tb24uaXNfY21ha2VfYnVpbGQoKToKICAgICAgICAgZ2VuZXJhdGVkX2FwaV9wYXRoID0g
Y29tbW9uLmJ1aWxkX3BhdGgoJ0Rlcml2ZWRTb3VyY2VzJywgJ3dlYmtpdDJndGsnLCAnd2Via2l0
MicpCkBAIC0xMDEsNyArMTA0LDcgQEAgZGVmIGdldF93ZWJraXQyX29wdGlvbnMoKToKICAgICAg
ICAgJ3NvdXJjZV9kaXJzJyA6IFtzcmNfcGF0aCgpLCBnZW5lcmF0ZWRfYXBpX3BhdGgsIGluamVj
dGVkX2J1bmRsZV9hcGlfcGF0aF0sCiAgICAgICAgICdjZmxhZ3MnIDoKICAgICAgICAgICAgICMg
Q29tbW9uIHBhdGhzCi0gICAgICAgICAgICAnIC1JJyArIGNvbW1vbi50b3BfbGV2ZWxfcGF0aCgn
U291cmNlJykgKyBcCisgICAgICAgICAgICAnIC1JJyArIGpoYnVpbGRyY19jb21tb24udG9wX2xl
dmVsX3BhdGgoJ1NvdXJjZScpICsgXAogICAgICAgICAgICAgJyAtSScgKyBhcGlfcGF0aCArIFwK
ICAgICAgICAgICAgICMgQXV0b3Rvb2xzIHBhdGhzCiAgICAgICAgICAgICAnIC1JJyArIGNvbW1v
bi5idWlsZF9wYXRoKCdEZXJpdmVkU291cmNlcycsICd3ZWJraXQyZ3RrJywgJ2luY2x1ZGUnKSAr
IFwKQEAgLTEyNyw3ICsxMzAsNyBAQCBkZWYgZ2V0X3dlYmtpdDJfb3B0aW9ucygpOgogCiBkZWYg
Z2V0X3dlYmtpdDFfb3B0aW9ucyhndGtfdmVyc2lvbik6CiAgICAgZGVmIHNyY19wYXRoKCphcmdz
KToKLSAgICAgICAgcmV0dXJuIGNvbW1vbi50b3BfbGV2ZWxfcGF0aCgqKCgnU291cmNlJywgJ1dl
YktpdCcsICdndGsnKSArIGFyZ3MpKQorICAgICAgICByZXR1cm4gamhidWlsZHJjX2NvbW1vbi50
b3BfbGV2ZWxfcGF0aCgqKCgnU291cmNlJywgJ1dlYktpdCcsICdndGsnKSArIGFyZ3MpKQogCiAg
ICAgZGVmIHdlYmtpdHZlcnNpb25oX3BhdGgoKToKICAgICAgICAgaWYgY29tbW9uLmlzX2NtYWtl
X2J1aWxkKCk6CkBAIC0xNTUsOCArMTU4LDggQEAgZGVmIGdldF93ZWJraXQxX29wdGlvbnMoZ3Rr
X3ZlcnNpb24pOgogICAgICAgICAnY2ZsYWdzJyA6ICcgLUknICsgY29tbW9uLmJ1aWxkX3BhdGgo
J1dlYktpdCcsICdndGsnKSArIFwKICAgICAgICAgICAgICAgICAgICAnIC1JJyArIGNvbW1vbi5i
dWlsZF9wYXRoKCdEZXJpdmVkU291cmNlcycpICsgXAogICAgICAgICAgICAgICAgICAgICcgLUkn
ICsgc3JjX3BhdGgoKSArIFwKLSAgICAgICAgICAgICAgICAgICAnIC1JJyArIGNvbW1vbi50b3Bf
bGV2ZWxfcGF0aCgnU291cmNlJykgKyBcCi0gICAgICAgICAgICAgICAgICAgJyAtSScgKyBjb21t
b24udG9wX2xldmVsX3BhdGgoJ1NvdXJjZScsICdKYXZhU2NyaXB0Q29yZScsICdGb3J3YXJkaW5n
SGVhZGVycycpLAorICAgICAgICAgICAgICAgICAgICcgLUknICsgamhidWlsZHJjX2NvbW1vbi50
b3BfbGV2ZWxfcGF0aCgnU291cmNlJykgKyBcCisgICAgICAgICAgICAgICAgICAgJyAtSScgKyBq
aGJ1aWxkcmNfY29tbW9uLnRvcF9sZXZlbF9wYXRoKCdTb3VyY2UnLCAnSmF2YVNjcmlwdENvcmUn
LCAnRm9yd2FyZGluZ0hlYWRlcnMnKSwKICAgICAgICAgJ2Nyb3NzX3JlZmVyZW5jZV9kZXBzJyA6
IGdldF9ndGtkb2NfbW9kdWxlX3BhdGhzKHhyZWZfZGVwcykgKyBbd2Via2l0ZG9tX2RvY3NfaHRt
bF9wYXRoKCldLAogICAgICAgICAnaWdub3JlZF9maWxlcyc6IGdsb2IuZ2xvYihzcmNfcGF0aCgn
d2Via2l0JywgJypwcml2YXRlLionKSkgKyBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgZ2xv
Yi5nbG9iKHNyY19wYXRoKCd3ZWJraXQnLCAnd2Via2l0YXV0aGVudGljYXRpb25kaWFsb2cuKicp
KSArIFwKQEAgLTE2OCw3ICsxNzEsNyBAQCBkZWYgZ2V0X3dlYmtpdGRvbV9vcHRpb25zKCk6CiAg
ICAgZGVmIGRlcml2ZWRfc291cmNlc19wYXRoKCphcmdzKToKICAgICAgICAgcmV0dXJuIGNvbW1v
bi5idWlsZF9wYXRoKCooKCdEZXJpdmVkU291cmNlcycsICd3ZWJraXRkb20nKSArIGFyZ3MpKQog
ICAgIGRlZiBzcmNfcGF0aCgqYXJncyk6Ci0gICAgICAgIHJldHVybiBjb21tb24udG9wX2xldmVs
X3BhdGgoKigoJ1NvdXJjZScsICdXZWJDb3JlJywgJ2JpbmRpbmdzJywgJ2dvYmplY3QnKSArIGFy
Z3MpKQorICAgICAgICByZXR1cm4gamhidWlsZHJjX2NvbW1vbi50b3BfbGV2ZWxfcGF0aCgqKCgn
U291cmNlJywgJ1dlYkNvcmUnLCAnYmluZGluZ3MnLCAnZ29iamVjdCcpICsgYXJncykpCiAKICAg
ICB4cmVmX2RlcHMgPSB7ICdnbGliLTIuMCcgOiBbJ2dsaWInLCAnZ29iamVjdCcsICdnaW8nXSB9
CiAKQEAgLTE4MSw3ICsxODQsNyBAQCBkZWYgZ2V0X3dlYmtpdGRvbV9vcHRpb25zKCk6CiAgICAg
ICAgICdzb3VyY2VfZGlycycgOiBbZGVyaXZlZF9zb3VyY2VzX3BhdGgoKV0sCiAgICAgICAgICdj
ZmxhZ3MnIDogJyAtSScgKyBkZXJpdmVkX3NvdXJjZXNfcGF0aCgpICsgXAogICAgICAgICAgICAg
ICAgICAgICcgLUknICsgc3JjX3BhdGgoKSArIFwKLSAgICAgICAgICAgICAgICAgICAnIC1JJyAr
IGNvbW1vbi50b3BfbGV2ZWxfcGF0aCgnU291cmNlJyksCisgICAgICAgICAgICAgICAgICAgJyAt
SScgKyBqaGJ1aWxkcmNfY29tbW9uLnRvcF9sZXZlbF9wYXRoKCdTb3VyY2UnKSwKICAgICAgICAg
J2Nyb3NzX3JlZmVyZW5jZV9kZXBzJyA6IGdldF9ndGtkb2NfbW9kdWxlX3BhdGhzKHhyZWZfZGVw
cyksCiAgICAgICAgICdpZ25vcmVkX2ZpbGVzJzogZ2xvYi5nbG9iKGRlcml2ZWRfc291cmNlc19w
YXRoKCcqUHJpdmF0ZS5oJykpCiAgICAgfSkKZGlmZiAtLWdpdCBhL1Rvb2xzL2d0ay9nZW5lcmF0
ZS1pbnNwZWN0b3ItZ3Jlc291cmNlLW1hbmlmZXN0LnB5IGIvVG9vbHMvZ3RrL2dlbmVyYXRlLWlu
c3BlY3Rvci1ncmVzb3VyY2UtbWFuaWZlc3QucHkKaW5kZXggNThhMWRmMS4uMGJkNjM5NCAxMDA3
NTUKLS0tIGEvVG9vbHMvZ3RrL2dlbmVyYXRlLWluc3BlY3Rvci1ncmVzb3VyY2UtbWFuaWZlc3Qu
cHkKKysrIGIvVG9vbHMvZ3RrL2dlbmVyYXRlLWluc3BlY3Rvci1ncmVzb3VyY2UtbWFuaWZlc3Qu
cHkKQEAgLTIwLDcgKzIwLDEwIEBAIGltcG9ydCBnbG9iCiBpbXBvcnQgb3MKIGltcG9ydCBzeXMK
IAotcmVzb3VyY2VzX3BhdGggPSBjb21tb24udG9wX2xldmVsX3BhdGgoKSArICIvU291cmNlL1dl
Ykluc3BlY3RvclVJLyIKK3N5cy5wYXRoLmluc2VydCgwLCBvcy5wYXRoLmpvaW4ob3MucGF0aC5k
aXJuYW1lKF9fZmlsZV9fKSwgIi4uL2poYnVpbGQiKSkKK2ltcG9ydCBqaGJ1aWxkcmNfY29tbW9u
CisKK3Jlc291cmNlc19wYXRoID0gamhidWlsZHJjX2NvbW1vbi50b3BfbGV2ZWxfcGF0aCgpICsg
Ii9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvIgogaW5zcGVjdG9yX2ZpbGVzID0gXAogICAgIGdsb2Iu
Z2xvYihyZXNvdXJjZXNfcGF0aCArICdVc2VySW50ZXJmYWNlLyouaHRtbCcpICsgXAogICAgIGds
b2IuZ2xvYihyZXNvdXJjZXNfcGF0aCArICdVc2VySW50ZXJmYWNlLyouanMnKSArIFwKZGlmZiAt
LWdpdCBhL1Rvb2xzL2d0ay9qaGJ1aWxkcmMgYi9Ub29scy9ndGsvamhidWlsZHJjCmluZGV4IDY5
Zjk0NTcuLmFjZWM2NzUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL2d0ay9qaGJ1aWxkcmMKKysrIGIvVG9v
bHMvZ3RrL2poYnVpbGRyYwpAQCAtMTUsMzYgKzE1LDE2IEBACiAjIExpY2Vuc2UgYWxvbmcgd2l0
aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKICMgRm91
bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBN
QSAgMDIxMTAtMTMwMSAgVVNBCiAKLWltcG9ydCBtdWx0aXByb2Nlc3NpbmcKIGltcG9ydCBzeXMK
IAorc3lzLnBhdGguaW5zZXJ0KDAsIG9zLnBhdGguam9pbihvcy5wYXRoLmRpcm5hbWUoX19maWxl
X18pLCAiLi4vamhidWlsZCIpICkKK2ltcG9ydCBqaGJ1aWxkcmNfY29tbW9uCitqaGJ1aWxkcmNf
Y29tbW9uLmluaXQoZ2xvYmFscygpLCAiZ3RrIikKKwogX19ndGtfdG9vbHNfZGlyZWN0b3J5ID0g
b3MucGF0aC5hYnNwYXRoKG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXykpCiBzeXMucGF0aCA9IFtf
X2d0a190b29sc19kaXJlY3RvcnldICsgc3lzLnBhdGgKIGltcG9ydCBjb21tb24KIAotYnVpbGRf
cG9saWN5ID0gJ3VwZGF0ZWQnCi0KLV9fbW9kdWxlc2V0X2ZpbGVfdXJpID0gJ2ZpbGU6Ly8nICsg
b3MucGF0aC5qb2luKF9fZ3RrX3Rvb2xzX2RpcmVjdG9yeSwgJ2poYnVpbGQubW9kdWxlcycpCi1f
X2V4dHJhX21vZHVsZXNldHMgPSBvcy5lbnZpcm9uLmdldCgiV0VCS0lUX0VYVFJBX01PRFVMRVNF
VFMiLCAiIikuc3BsaXQoIiwiKQotbW9kdWxlc2V0ID0gWyBfX21vZHVsZXNldF9maWxlX3VyaSwg
XQotaWYgX19leHRyYV9tb2R1bGVzZXRzICE9IFsnJ106Ci0gICAgbW9kdWxlc2V0LmV4dGVuZChf
X2V4dHJhX21vZHVsZXNldHMpCi0KLV9fZXh0cmFfbW9kdWxlcyA9IG9zLmVudmlyb24uZ2V0KCJX
RUJLSVRfRVhUUkFfTU9EVUxFUyIsICIiKS5zcGxpdCgiLCIpCi1tb2R1bGVzID0gWyAnd2Via2l0
Z3RrLXRlc3RpbmctZGVwZW5kZW5jaWVzJywgXQotaWYgX19leHRyYV9tb2R1bGVzICE9IFsnJ106
Ci0gICAgbW9kdWxlcy5leHRlbmQoX19leHRyYV9tb2R1bGVzKQotCi1pZiBvcy5lbnZpcm9uLmhh
c19rZXkoJ1dFQktJVF9PVVRQVVRESVInKToKLSAgICBjaGVja291dHJvb3QgPSBvcy5wYXRoLmFi
c3BhdGgob3MucGF0aC5qb2luKG9zLmVudmlyb25bJ1dFQktJVF9PVVRQVVRESVInXSwgJ0RlcGVu
ZGVuY2llcycsICdTb3VyY2UnKSkKLSAgICBwcmVmaXggPSBvcy5wYXRoLmFic3BhdGgob3MucGF0
aC5qb2luKG9zLmVudmlyb25bJ1dFQktJVF9PVVRQVVRESVInXSwgJ0RlcGVuZGVuY2llcycsICdS
b290JykpCi1lbHNlOgotICAgIGNoZWNrb3V0cm9vdCA9IG9zLnBhdGguYWJzcGF0aChjb21tb24u
dG9wX2xldmVsX3BhdGgoJ1dlYktpdEJ1aWxkJywnRGVwZW5kZW5jaWVzJywgJ1NvdXJjZScpKQot
ICAgIHByZWZpeCA9IG9zLnBhdGguYWJzcGF0aChjb21tb24udG9wX2xldmVsX3BhdGgoJ1dlYktp
dEJ1aWxkJywnRGVwZW5kZW5jaWVzJywgJ1Jvb3QnKSkKLQotbm9ub3RpZnkgPSBUcnVlCi1ub3Ry
YXlpY29uID0gVHJ1ZQotCiBpZiAnTlVNQkVSX09GX1BST0NFU1NPUlMnIGluIG9zLmVudmlyb246
CiAgICAgam9icyA9IG9zLmVudmlyb25bJ05VTUJFUl9PRl9QUk9DRVNTT1JTJ10KIApkaWZmIC0t
Z2l0IGEvVG9vbHMvamhidWlsZC9qaGJ1aWxkcmNfY29tbW9uLnB5IGIvVG9vbHMvamhidWlsZC9q
aGJ1aWxkcmNfY29tbW9uLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVm
MGMzZWMKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9qaGJ1aWxkL2poYnVpbGRyY19jb21tb24u
cHkKQEAgLTAsMCArMSw2NCBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisjIENvcHlyaWdodCAo
QykgMjAxMSBJZ2FsaWEgUy5MLgorIyBDb3B5cmlnaHQgKEMpIDIwMTIgSW50ZWwgQ29ycG9yYXRp
b24KKyMKKyMgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli
dXRlIGl0IGFuZC9vcgorIyBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVz
c2VyIEdlbmVyYWwgUHVibGljCisjIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorIyB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9y
IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisjCisjIFRoaXMgbGlicmFyeSBp
cyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorIyBidXQg
V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv
ZgorIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu
ICBTZWUgdGhlIEdOVQorIyBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBk
ZXRhaWxzLgorIworIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg
TGVzc2VyIEdlbmVyYWwgUHVibGljCisjIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7
IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyMgRm91bmRhdGlvbiwgSW5jLiwg
NTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAg
VVNBCisKK2ltcG9ydCBtdWx0aXByb2Nlc3NpbmcKK2ltcG9ydCBzeXMKK2ltcG9ydCBvcworCisK
K3NjcmlwdF9kaXIgPSBOb25lCisKKworZGVmIHNjcmlwdF9wYXRoKCphcmdzKToKKyAgICBnbG9i
YWwgc2NyaXB0X2RpcgorICAgIGlmIG5vdCBzY3JpcHRfZGlyOgorICAgICAgICBzY3JpcHRfZGly
ID0gb3MucGF0aC5qb2luKG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXyksICcuLicsICdTY3JpcHRz
JykKKyAgICByZXR1cm4gb3MucGF0aC5qb2luKCooc2NyaXB0X2RpciwpICsgYXJncykKKworCitk
ZWYgdG9wX2xldmVsX3BhdGgoKmFyZ3MpOgorICAgIHJldHVybiBvcy5wYXRoLmpvaW4oKigob3Mu
cGF0aC5qb2luKG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXyksICcuLicsICcuLicpLCkgKyBhcmdz
KSkKKworCitkZWYgaW5pdChqaGJ1aWxkcmNfZ2xvYmFscywgcGxhdGZvcm0pOgorCisgICAgX190
b29sc19kaXJlY3RvcnkgPSBvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSwg
Ii4uLyIsIHBsYXRmb3JtKQorICAgIHN5cy5wYXRoLmluc2VydCgwLCBfX3Rvb2xzX2RpcmVjdG9y
eSkKKworICAgIGpoYnVpbGRyY19nbG9iYWxzWyJidWlsZF9wb2xpY3kiXSA9ICd1cGRhdGVkJwor
CisgICAgX19tb2R1bGVzZXRfZmlsZV91cmkgPSAnZmlsZTovLycgKyBvcy5wYXRoLmpvaW4oX190
b29sc19kaXJlY3RvcnksICdqaGJ1aWxkLm1vZHVsZXMnKQorICAgIF9fZXh0cmFfbW9kdWxlc2V0
cyA9IG9zLmVudmlyb24uZ2V0KCJXRUJLSVRfRVhUUkFfTU9EVUxFU0VUUyIsICIiKS5zcGxpdCgi
LCIpCisgICAgamhidWlsZHJjX2dsb2JhbHNbIm1vZHVsZXNldCJdID0gW19fbW9kdWxlc2V0X2Zp
bGVfdXJpLCBdCisgICAgaWYgX19leHRyYV9tb2R1bGVzZXRzICE9IFsnJ106CisgICAgICAgIGpo
YnVpbGRyY19nbG9iYWxzWyJtb2R1bGVzZXQiXS5leHRlbmQoX19leHRyYV9tb2R1bGVzZXRzKQor
CisgICAgX19leHRyYV9tb2R1bGVzID0gb3MuZW52aXJvbi5nZXQoIldFQktJVF9FWFRSQV9NT0RV
TEVTIiwgIiIpLnNwbGl0KCIsIikKKyAgICBqaGJ1aWxkcmNfZ2xvYmFsc1sibW9kdWxlcyJdID0g
Wyd3ZWJraXQnICsgcGxhdGZvcm0gKyAnLXRlc3RpbmctZGVwZW5kZW5jaWVzJywgXQorICAgIGlm
IF9fZXh0cmFfbW9kdWxlcyAhPSBbJyddOgorICAgICAgICBqaGJ1aWxkcmNfZ2xvYmFsc1sibW9k
dWxlcyJdLmV4dGVuZChfX2V4dHJhX21vZHVsZXMpCisKKyAgICBpZiAnV0VCS0lUX09VVFBVVERJ
UicgaW4gb3MuZW52aXJvbjoKKyAgICAgICAgamhidWlsZHJjX2dsb2JhbHNbImNoZWNrb3V0cm9v
dCJdID0gY2hlY2tvdXRyb290ID0gb3MucGF0aC5hYnNwYXRoKG9zLnBhdGguam9pbihvcy5lbnZp
cm9uWydXRUJLSVRfT1VUUFVURElSJ10sICdEZXBlbmRlbmNpZXMnLCAnU291cmNlJykpCisgICAg
ICAgIGpoYnVpbGRyY19nbG9iYWxzWyJwcmVmaXgiXSA9IG9zLnBhdGguYWJzcGF0aChvcy5wYXRo
LmpvaW4ob3MuZW52aXJvblsnV0VCS0lUX09VVFBVVERJUiddLCAnRGVwZW5kZW5jaWVzJywgJ1Jv
b3QnKSkKKyAgICBlbHNlOgorICAgICAgICBqaGJ1aWxkcmNfZ2xvYmFsc1siY2hlY2tvdXRyb290
Il0gPSBjaGVja291dHJvb3QgPSBvcy5wYXRoLmFic3BhdGgodG9wX2xldmVsX3BhdGgoJ1dlYktp
dEJ1aWxkJywgJ0RlcGVuZGVuY2llcycsICdTb3VyY2UnKSkKKyAgICAgICAgamhidWlsZHJjX2ds
b2JhbHNbInByZWZpeCJdID0gb3MucGF0aC5hYnNwYXRoKHRvcF9sZXZlbF9wYXRoKCdXZWJLaXRC
dWlsZCcsICdEZXBlbmRlbmNpZXMnLCAnUm9vdCcpKQorCisgICAgamhidWlsZHJjX2dsb2JhbHNb
Im5vbm90aWZ5Il0gPSBUcnVlCisgICAgamhidWlsZHJjX2dsb2JhbHNbIm5vdHJheWljb24iXSA9
IFRydWUKZGlmZiAtLWdpdCBhL1Rvb2xzL25peC9jb21tb24ucHkgYi9Ub29scy9uaXgvY29tbW9u
LnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwYjhiNjYyLi4wMDAwMDAwCi0tLSBh
L1Rvb2xzL25peC9jb21tb24ucHkKKysrIC9kZXYvbnVsbApAQCAtMSwzMiArMCwwIEBACi0jIS91
c3IvYmluL2VudiBweXRob24KLSMgQ29weXJpZ2h0IChDKSAyMDExIElnYWxpYSBTLkwuCi0jIENv
cHlyaWdodCAoQykgMjAxMiwgMjAxMyBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNp
ZGlhcnkoLWllcykuCi0jCi0jIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu
IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSMgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0
aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotIyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSMgdmVyc2lvbiAyIG9mIHRoZSBM
aWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotIwotIyBUaGlz
IGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1
bCwKLSMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg
d2FycmFudHkgb2YKLSMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSMgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug
Zm9yIG1vcmUgZGV0YWlscy4KLSMKLSMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBv
ZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotIyBMaWNlbnNlIGFsb25nIHdpdGggdGhp
cyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0jIEZvdW5kYXRp
b24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAy
MTEwLTEzMDEgIFVTQQotCi1pbXBvcnQgb3MKLQotc2NyaXB0X2RpciA9IE5vbmUKLQotCi1kZWYg
c2NyaXB0X3BhdGgoKmFyZ3MpOgotICAgIGdsb2JhbCBzY3JpcHRfZGlyCi0gICAgaWYgbm90IHNj
cmlwdF9kaXI6Ci0gICAgICAgIHNjcmlwdF9kaXIgPSBvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJu
YW1lKF9fZmlsZV9fKSwgJy4uJywgJ1NjcmlwdHMnKQotICAgIHJldHVybiBvcy5wYXRoLmpvaW4o
KihzY3JpcHRfZGlyLCkgKyBhcmdzKQotCi0KLWRlZiB0b3BfbGV2ZWxfcGF0aCgqYXJncyk6Ci0g
ICAgcmV0dXJuIG9zLnBhdGguam9pbigqKChzY3JpcHRfcGF0aCgnLi4nLCAnLi4nKSwpICsgYXJn
cykpCmRpZmYgLS1naXQgYS9Ub29scy9uaXgvamhidWlsZHJjIGIvVG9vbHMvbml4L2poYnVpbGRy
YwppbmRleCAzNTU1MmNhLi5jMDUyYTY4IDEwMDY0NAotLS0gYS9Ub29scy9uaXgvamhidWlsZHJj
CisrKyBiL1Rvb2xzL25peC9qaGJ1aWxkcmMKQEAgLTE3LDM4ICsxNywxMiBAQAogIyBMaWNlbnNl
IGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3
YXJlCiAjIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3Is
IEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQogCi1pbXBvcnQgbXVsdGlwcm9jZXNzaW5nCiBp
bXBvcnQgc3lzCi1pbXBvcnQgb3MKIAotX19uaXhfdG9vbHNfZGlyZWN0b3J5ID0gb3MucGF0aC5h
YnNwYXRoKG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXykpCi1zeXMucGF0aCA9IFtfX25peF90b29s
c19kaXJlY3RvcnldICsgc3lzLnBhdGgKLWltcG9ydCBjb21tb24KK3N5cy5wYXRoLmluc2VydCgw
LCBvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSwgIi4uL2poYnVpbGQiKSAp
CitpbXBvcnQgamhidWlsZHJjX2NvbW1vbgoramhidWlsZHJjX2NvbW1vbi5pbml0KGdsb2JhbHMo
KSwgIm5peCIpIAogCi1idWlsZF9wb2xpY3kgPSAndXBkYXRlZCcKLQotIyBGSVhNRTogbW92ZSBz
aGFyZWQgcGFydHMgaW50byAuLi9qaGJ1aWxkIGZvbGRlci4KLQotX19tb2R1bGVzZXRfZmlsZV91
cmkgPSAnZmlsZTovLycgKyBvcy5wYXRoLmpvaW4oX19uaXhfdG9vbHNfZGlyZWN0b3J5LCAnamhi
dWlsZC5tb2R1bGVzJykKLV9fZXh0cmFfbW9kdWxlc2V0cyA9IG9zLmVudmlyb24uZ2V0KCJXRUJL
SVRfRVhUUkFfTU9EVUxFU0VUUyIsICIiKS5zcGxpdCgiLCIpCi1tb2R1bGVzZXQgPSBbIF9fbW9k
dWxlc2V0X2ZpbGVfdXJpLCBdCi1pZiBfX2V4dHJhX21vZHVsZXNldHMgIT0gWycnXToKLSAgICBt
b2R1bGVzZXQuZXh0ZW5kKF9fZXh0cmFfbW9kdWxlc2V0cykKLQotX19leHRyYV9tb2R1bGVzID0g
b3MuZW52aXJvbi5nZXQoIldFQktJVF9FWFRSQV9NT0RVTEVTIiwgIiIpLnNwbGl0KCIsIikKLW1v
ZHVsZXMgPSBbICd3ZWJraXRuaXgtdGVzdGluZy1kZXBlbmRlbmNpZXMnLCBdCi1pZiBfX2V4dHJh
X21vZHVsZXMgIT0gWycnXToKLSAgICBtb2R1bGVzLmV4dGVuZChfX2V4dHJhX21vZHVsZXMpCi0K
LWlmIG9zLmVudmlyb24uaGFzX2tleSgnV0VCS0lUX09VVFBVVERJUicpOgotICAgIGNoZWNrb3V0
cm9vdCA9IG9zLnBhdGguYWJzcGF0aChvcy5wYXRoLmpvaW4ob3MuZW52aXJvblsnV0VCS0lUX09V
VFBVVERJUiddLCAnRGVwZW5kZW5jaWVzJywgJ1NvdXJjZScpKQotICAgIHByZWZpeCA9IG9zLnBh
dGguYWJzcGF0aChvcy5wYXRoLmpvaW4ob3MuZW52aXJvblsnV0VCS0lUX09VVFBVVERJUiddLCAn
RGVwZW5kZW5jaWVzJywgJ1Jvb3QnKSkKLWVsc2U6Ci0gICAgY2hlY2tvdXRyb290ID0gb3MucGF0
aC5hYnNwYXRoKGNvbW1vbi50b3BfbGV2ZWxfcGF0aCgnV2ViS2l0QnVpbGQnLCdEZXBlbmRlbmNp
ZXMnLCAnU291cmNlJykpCi0gICAgcHJlZml4ID0gb3MucGF0aC5hYnNwYXRoKGNvbW1vbi50b3Bf
bGV2ZWxfcGF0aCgnV2ViS2l0QnVpbGQnLCdEZXBlbmRlbmNpZXMnLCAnUm9vdCcpKQotCi1ub25v
dGlmeSA9IFRydWUKLW5vdHJheWljb24gPSBUcnVlCiBpZiAnTUFLRUZMQUdTJyBub3QgaW4gb3Mu
ZW52aXJvbjoKICAgICBvcy5lbnZpcm9uWydNQUtFRkxBR1MnXSA9ICctaiVkJyAlIG11bHRpcHJv
Y2Vzc2luZy5jcHVfY291bnQoKQogCg==
</data>
<flag name="review"
          id="248595"
          type_id="1"
          status="-"
          setter="ossy"
    />
    <flag name="commit-queue"
          id="248596"
          type_id="3"
          status="-"
          setter="ossy"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>224872</attachid>
            <date>2014-02-21 08:44:28 -0800</date>
            <delta_ts>2014-02-24 04:48:02 -0800</delta_ts>
            <desc>Patch v10</desc>
            <filename>extract_v4.patch</filename>
            <type>text/plain</type>
            <size>18917</size>
            <attacher name="Tibor Mészáros">mtiborinf</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA0ZGZk
OWZmLi40OWRlMmQ5IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzMgQEAKKzIwMTQtMDItMjEgIFRpYm9yIE1lc3phcm9zICA8dG1l
c3phcm9zLnUtc3plZ2VkQHBhcnRuZXIuc2Ftc3VuZy5jb20+CisKKyAgICAgICAgRXh0cmFjdCBj
b21tb24gcGFydHMgZnJvbSBqaGJ1aWxkcmMgZmlsZXMuCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjU5ODYKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNjcmlwdHMvcnVuLWd0ay10ZXN0czoKKyAgICAg
ICAgKFRlc3RSdW5uZXIuX3NldHVwX3Rlc3RpbmdfZW52aXJvbm1lbnQpOgorICAgICAgICAqIGVm
bC9jb21tb24ucHk6IFJlbW92ZWQuCisgICAgICAgICogZWZsL2poYnVpbGRyYzoKKyAgICAgICAg
KiBndGsvY2hlY2stZ2RvbS1zeW1ib2xzOgorICAgICAgICAqIGd0ay9jb21tb24ucHk6CisgICAg
ICAgIChiaW5hcnlfYnVpbGRfcGF0aCk6CisgICAgICAgIChnZXRfYnVpbGRfcGF0aCk6CisgICAg
ICAgICogZ3RrL2ZpbmQtbWFrZS1kaXN0LWVycm9yczoKKyAgICAgICAgKGdldF9taXNzaW5nX2hl
YWRlcnMpOgorICAgICAgICAqIGd0ay9nZW5lcmF0ZS1ndGtkb2M6CisgICAgICAgIChnZXRfd2Vi
a2l0Ml9vcHRpb25zKToKKyAgICAgICAgKGdldF93ZWJraXQxX29wdGlvbnMuc3JjX3BhdGgpOgor
ICAgICAgICAoZ2V0X3dlYmtpdDFfb3B0aW9ucyk6CisgICAgICAgIChnZXRfd2Via2l0ZG9tX29w
dGlvbnMuc3JjX3BhdGgpOgorICAgICAgICAoZ2V0X3dlYmtpdGRvbV9vcHRpb25zKToKKyAgICAg
ICAgKiBndGsvZ2VuZXJhdGUtaW5zcGVjdG9yLWdyZXNvdXJjZS1tYW5pZmVzdC5weToKKyAgICAg
ICAgKiBndGsvamhidWlsZHJjOgorICAgICAgICAqIGpoYnVpbGQvamhidWlsZHJjX2NvbW1vbi5w
eTogQWRkZWQuCisgICAgICAgIChzY3JpcHRfcGF0aCk6CisgICAgICAgICh0b3BfbGV2ZWxfcGF0
aCk6CisgICAgICAgIChpbml0KToKKwogMjAxNC0wMi0xNSAgUnl1YW4gQ2hvaSAgPHJ5dWFuLmNo
b2lAc2Ftc3VuZy5jb20+CiAKICAgICAgICAgQnVpbGQgYnJlYWsgd2hlbiBkaXNhYmxlZCBBQ0NF
U1NJQklMSVRZIHNpbmNlIHIxNjI5ODYKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvcnVuLWd0
ay10ZXN0cyBiL1Rvb2xzL1NjcmlwdHMvcnVuLWd0ay10ZXN0cwppbmRleCBlOTgwODYwLi40YmI0
NjNjIDEwMDc1NQotLS0gYS9Ub29scy9TY3JpcHRzL3J1bi1ndGstdGVzdHMKKysrIGIvVG9vbHMv
U2NyaXB0cy9ydW4tZ3RrLXRlc3RzCkBAIC0zMSw2ICszMSw5IEBAIHN5cy5wYXRoLmFwcGVuZChv
cy5wYXRoLmpvaW4odG9wX2xldmVsX2RpcmVjdG9yeSwgIlRvb2xzIiwgImd0ayIpKQogaW1wb3J0
IGNvbW1vbgogaW1wb3J0IGpoYnVpbGR1dGlscwogCitzeXMucGF0aC5pbnNlcnQoMCwgb3MucGF0
aC5qb2luKG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXyksICIuLi9qaGJ1aWxkIikpCitpbXBvcnQg
amhidWlsZHJjX2NvbW1vbgorCiBjbGFzcyBTa2lwcGVkVGVzdDoKICAgICBFTlRJUkVfU1VJVEUg
PSBOb25lCiAKQEAgLTE5NSw3ICsxOTgsNyBAQCBjbGFzcyBUZXN0UnVubmVyOgogICAgIGRlZiBf
c2V0dXBfdGVzdGluZ19lbnZpcm9ubWVudChzZWxmKToKICAgICAgICAgc2VsZi5fdGVzdF9lbnYg
PSBvcy5lbnZpcm9uCiAgICAgICAgIHNlbGYuX3Rlc3RfZW52WydHU0VUVElOR1NfQkFDS0VORCdd
ID0gJ21lbW9yeScKLSAgICAgICAgc2VsZi5fdGVzdF9lbnZbIlRFU1RfV0VCS0lUX0FQSV9XRUJL
SVQyX1JFU09VUkNFU19QQVRIIl0gPSBjb21tb24udG9wX2xldmVsX3BhdGgoIlRvb2xzIiwgIlRl
c3RXZWJLaXRBUEkiLCAiVGVzdHMiLCAiV2ViS2l0MiIpCisgICAgICAgIHNlbGYuX3Rlc3RfZW52
WyJURVNUX1dFQktJVF9BUElfV0VCS0lUMl9SRVNPVVJDRVNfUEFUSCJdID0gamhidWlsZHJjX2Nv
bW1vbi50b3BfbGV2ZWxfcGF0aCgiVG9vbHMiLCAiVGVzdFdlYktpdEFQSSIsICJUZXN0cyIsICJX
ZWJLaXQyIikKICAgICAgICAgc2VsZi5fdGVzdF9lbnZbIlRFU1RfV0VCS0lUX0FQSV9XRUJLSVQy
X0lOSkVDVEVEX0JVTkRMRV9QQVRIIl0gPSBjb21tb24udGVzdHNfbGlicmFyeV9idWlsZF9wYXRo
KCkKICAgICAgICAgc2VsZi5fdGVzdF9lbnZbIldFQktJVF9FWEVDX1BBVEgiXSA9IHNlbGYuX3By
b2dyYW1zX3BhdGgKIApkaWZmIC0tZ2l0IGEvVG9vbHMvZWZsL2NvbW1vbi5weSBiL1Rvb2xzL2Vm
bC9jb21tb24ucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc3NjU3YjMuLjAwMDAw
MDAKLS0tIGEvVG9vbHMvZWZsL2NvbW1vbi5weQorKysgL2Rldi9udWxsCkBAIC0xLDMxICswLDAg
QEAKLSMhL3Vzci9iaW4vZW52IHB5dGhvbgotIyBDb3B5cmlnaHQgKEMpIDIwMTEgSWdhbGlhIFMu
TC4KLSMKLSMgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli
dXRlIGl0IGFuZC9vcgotIyBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVz
c2VyIEdlbmVyYWwgUHVibGljCi0jIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotIyB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9y
IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0jCi0jIFRoaXMgbGlicmFyeSBp
cyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotIyBidXQg
V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv
ZgotIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu
ICBTZWUgdGhlIEdOVQotIyBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBk
ZXRhaWxzLgotIwotIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg
TGVzc2VyIEdlbmVyYWwgUHVibGljCi0jIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7
IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSMgRm91bmRhdGlvbiwgSW5jLiwg
NTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAg
VVNBCi0KLWltcG9ydCBvcwotCi1zY3JpcHRfZGlyID0gTm9uZQotCi0KLWRlZiBzY3JpcHRfcGF0
aCgqYXJncyk6Ci0gICAgZ2xvYmFsIHNjcmlwdF9kaXIKLSAgICBpZiBub3Qgc2NyaXB0X2RpcjoK
LSAgICAgICAgc2NyaXB0X2RpciA9IG9zLnBhdGguam9pbihvcy5wYXRoLmRpcm5hbWUoX19maWxl
X18pLCAnLi4nLCAnU2NyaXB0cycpCi0gICAgcmV0dXJuIG9zLnBhdGguam9pbigqKHNjcmlwdF9k
aXIsKSArIGFyZ3MpCi0KLQotZGVmIHRvcF9sZXZlbF9wYXRoKCphcmdzKToKLSAgICByZXR1cm4g
b3MucGF0aC5qb2luKCooKHNjcmlwdF9wYXRoKCcuLicsICcuLicpLCkgKyBhcmdzKSkKZGlmZiAt
LWdpdCBhL1Rvb2xzL2VmbC9qaGJ1aWxkcmMgYi9Ub29scy9lZmwvamhidWlsZHJjCmluZGV4IDc3
ZGFhZTkuLjY1ZGY2YjMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL2VmbC9qaGJ1aWxkcmMKKysrIGIvVG9v
bHMvZWZsL2poYnVpbGRyYwpAQCAtMTYsNDAgKzE2LDExIEBACiAjIExpY2Vuc2UgYWxvbmcgd2l0
aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKICMgRm91
bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBN
QSAgMDIxMTAtMTMwMSAgVVNBCiAKLWltcG9ydCBtdWx0aXByb2Nlc3NpbmcKIGltcG9ydCBzeXMK
IAotX19lZmxfdG9vbHNfZGlyZWN0b3J5ID0gb3MucGF0aC5hYnNwYXRoKG9zLnBhdGguZGlybmFt
ZShfX2ZpbGVfXykpCi1zeXMucGF0aCA9IFtfX2VmbF90b29sc19kaXJlY3RvcnldICsgc3lzLnBh
dGgKLWltcG9ydCBjb21tb24KLQotYnVpbGRfcG9saWN5ID0gJ3VwZGF0ZWQnCi0KLSMgRklYTUU6
IG1vdmUgc2hhcmVkIHBhcnRzIGludG8gLi4vamhidWlsZCBmb2xkZXIuCi0KLV9fbW9kdWxlc2V0
X2ZpbGVfdXJpID0gJ2ZpbGU6Ly8nICsgb3MucGF0aC5qb2luKF9fZWZsX3Rvb2xzX2RpcmVjdG9y
eSwgJ2poYnVpbGQubW9kdWxlcycpCi1fX2V4dHJhX21vZHVsZXNldHMgPSBvcy5lbnZpcm9uLmdl
dCgiV0VCS0lUX0VYVFJBX01PRFVMRVNFVFMiLCAiIikuc3BsaXQoIiwiKQotbW9kdWxlc2V0ID0g
WyBfX21vZHVsZXNldF9maWxlX3VyaSwgXQotaWYgX19leHRyYV9tb2R1bGVzZXRzICE9IFsnJ106
Ci0gICAgbW9kdWxlc2V0LmV4dGVuZChfX2V4dHJhX21vZHVsZXNldHMpCi0KLV9fZXh0cmFfbW9k
dWxlcyA9IG9zLmVudmlyb24uZ2V0KCJXRUJLSVRfRVhUUkFfTU9EVUxFUyIsICIiKS5zcGxpdCgi
LCIpCi1tb2R1bGVzID0gWyAnd2Via2l0ZWZsLXRlc3RpbmctZGVwZW5kZW5jaWVzJywgXQotaWYg
X19leHRyYV9tb2R1bGVzICE9IFsnJ106Ci0gICAgbW9kdWxlcy5leHRlbmQoX19leHRyYV9tb2R1
bGVzKQotCi1pZiBvcy5lbnZpcm9uLmhhc19rZXkoJ1dFQktJVF9PVVRQVVRESVInKToKLSAgICBj
aGVja291dHJvb3QgPSBvcy5wYXRoLmFic3BhdGgob3MucGF0aC5qb2luKG9zLmVudmlyb25bJ1dF
QktJVF9PVVRQVVRESVInXSwgJ0RlcGVuZGVuY2llcycsICdTb3VyY2UnKSkKLSAgICBwcmVmaXgg
PSBvcy5wYXRoLmFic3BhdGgob3MucGF0aC5qb2luKG9zLmVudmlyb25bJ1dFQktJVF9PVVRQVVRE
SVInXSwgJ0RlcGVuZGVuY2llcycsICdSb290JykpCi1lbHNlOgotICAgIGNoZWNrb3V0cm9vdCA9
IG9zLnBhdGguYWJzcGF0aChjb21tb24udG9wX2xldmVsX3BhdGgoJ1dlYktpdEJ1aWxkJywnRGVw
ZW5kZW5jaWVzJywgJ1NvdXJjZScpKQotICAgIHByZWZpeCA9IG9zLnBhdGguYWJzcGF0aChjb21t
b24udG9wX2xldmVsX3BhdGgoJ1dlYktpdEJ1aWxkJywnRGVwZW5kZW5jaWVzJywgJ1Jvb3QnKSkK
LQotbm9ub3RpZnkgPSBUcnVlCi1ub3RyYXlpY29uID0gVHJ1ZQotCi1pZiAnTlVNQkVSX09GX1BS
T0NFU1NPUlMnIGluIG9zLmVudmlyb246Ci0gICAgam9icyA9IG9zLmVudmlyb25bJ05VTUJFUl9P
Rl9QUk9DRVNTT1JTJ10KK3N5cy5wYXRoLmluc2VydCgwLCBvcy5wYXRoLmpvaW4ob3MucGF0aC5k
aXJuYW1lKF9fZmlsZV9fKSwgIi4uL2poYnVpbGQiKSApCitpbXBvcnQgamhidWlsZHJjX2NvbW1v
bgoramhidWlsZHJjX2NvbW1vbi5pbml0KGdsb2JhbHMoKSwgImVmbCIpIAogCiAjIFVzZSBzeXN0
ZW0gbGlicmFyaWVzIHdoaWxlIGJ1aWxkaW5nLgogaWYgdXNlX2xpYjY0OgpkaWZmIC0tZ2l0IGEv
VG9vbHMvZ3RrL2NoZWNrLWdkb20tc3ltYm9scyBiL1Rvb2xzL2d0ay9jaGVjay1nZG9tLXN5bWJv
bHMKaW5kZXggZjExMDhiNy4uYjdhM2E0YyAxMDA3NTUKLS0tIGEvVG9vbHMvZ3RrL2NoZWNrLWdk
b20tc3ltYm9scworKysgYi9Ub29scy9ndGsvY2hlY2stZ2RvbS1zeW1ib2xzCkBAIC0yMiw2ICsy
Miw4IEBAIGltcG9ydCBzdWJwcm9jZXNzCiBpbXBvcnQgc3lzCiBpbXBvcnQgdGVtcGZpbGUKIAor
c3lzLnBhdGguaW5zZXJ0KDAsIG9zLnBhdGguam9pbihvcy5wYXRoLmRpcm5hbWUoX19maWxlX18p
LCAiLi4vamhidWlsZCIpKQoraW1wb3J0IGpoYnVpbGRyY19jb21tb24KIAogZGVmIHNob3VsZF91
cGRhdGVfc3ltYm9sc19maWxlKG5ldywgb2xkKToKICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMo
b2xkKToKQEAgLTUwLDcgKzUyLDcgQEAgaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKICAgICAg
ICAgICAgICAgICB0bXAud3JpdGUoZmlsZV9oYW5kbGUucmVhZCgpKQogICAgICAgICB0bXAuZmx1
c2goKQogCi0gICAgICAgIGdkb21fc291cmNlX3BhdGggPSBjb21tb24udG9wX2xldmVsX3BhdGgo
J1NvdXJjZScsICdXZWJDb3JlJywgJ2JpbmRpbmdzJykKKyAgICAgICAgZ2RvbV9zb3VyY2VfcGF0
aCA9IGpoYnVpbGRyY19jb21tb24udG9wX2xldmVsX3BhdGgoJ1NvdXJjZScsICdXZWJDb3JlJywg
J2JpbmRpbmdzJykKICAgICAgICAgYXBpX2JyZWFrX3Rlc3RfcGF0aCA9IG9zLnBhdGguam9pbihn
ZG9tX3NvdXJjZV9wYXRoLCAnc2NyaXB0cycsICdnb2JqZWN0LXJ1bi1hcGktYnJlYWstdGVzdCcp
CiAgICAgICAgIHN1YnByb2Nlc3MuY2FsbChbc3lzLmV4ZWN1dGFibGUsIGFwaV9icmVha190ZXN0
X3BhdGgsIG9zLnBhdGguam9pbihnZG9tX3NvdXJjZV9wYXRoLCAnZ29iamVjdCcsICAnd2Via2l0
ZG9tLnN5bWJvbHMnKSwgdG1wLm5hbWVdKQogCmRpZmYgLS1naXQgYS9Ub29scy9ndGsvY29tbW9u
LnB5IGIvVG9vbHMvZ3RrL2NvbW1vbi5weQppbmRleCAwMmRiOTMyLi42ZTUxYWY1IDEwMDY0NAot
LS0gYS9Ub29scy9ndGsvY29tbW9uLnB5CisrKyBiL1Rvb2xzL2d0ay9jb21tb24ucHkKQEAgLTIx
LDcgKzIxLDkgQEAgaW1wb3J0IHNlbGVjdAogaW1wb3J0IHN1YnByb2Nlc3MKIGltcG9ydCBzeXMK
IAotc2NyaXB0X2RpciA9IE5vbmUKK3N5cy5wYXRoLmluc2VydCgwLCBvcy5wYXRoLmpvaW4ob3Mu
cGF0aC5kaXJuYW1lKF9fZmlsZV9fKSwgIi4uL2poYnVpbGQiKSkKK2ltcG9ydCBqaGJ1aWxkcmNf
Y29tbW9uCisKIGJ1aWxkX2RpciA9IE5vbmUKIGxpYnJhcnlfYnVpbGRfZGlyID0gTm9uZQogdGVz
dHNfbGlicmFyeV9idWlsZF9kaXIgPSBOb25lCkBAIC03MSwxNyArNzMsNiBAQCBkZWYgYmluYXJ5
X2J1aWxkX3BhdGgoKmFyZ3MpOgogICAgIHJldHVybiBsaWJyYXJ5X2J1aWxkX2RpcgogCiAKLWRl
ZiBzY3JpcHRfcGF0aCgqYXJncyk6Ci0gICAgZ2xvYmFsIHNjcmlwdF9kaXIKLSAgICBpZiBub3Qg
c2NyaXB0X2RpcjoKLSAgICAgICAgc2NyaXB0X2RpciA9IG9zLnBhdGguam9pbihvcy5wYXRoLmRp
cm5hbWUoX19maWxlX18pLCAnLi4nLCAnU2NyaXB0cycpCi0gICAgcmV0dXJuIG9zLnBhdGguam9p
bigqKHNjcmlwdF9kaXIsKSArIGFyZ3MpCi0KLQotZGVmIHRvcF9sZXZlbF9wYXRoKCphcmdzKToK
LSAgICByZXR1cm4gb3MucGF0aC5qb2luKCooKG9zLnBhdGguam9pbihvcy5wYXRoLmRpcm5hbWUo
X19maWxlX18pLCAnLi4nLCAnLi4nKSwpICsgYXJncykpCi0KLQogZGVmIGdldF9idWlsZF9wYXRo
KGZhdGFsPVRydWUpOgogICAgIGdsb2JhbCBidWlsZF9kaXIKICAgICBpZiBidWlsZF9kaXI6CkBA
IC0xMDksMjAgKzEwMCwyMCBAQCBkZWYgZ2V0X2J1aWxkX3BhdGgoZmF0YWw9VHJ1ZSk6CiAKICAg
ICBnbG9iYWwgYnVpbGRfdHlwZXMKICAgICBmb3IgYnVpbGRfdHlwZSBpbiBidWlsZF90eXBlczoK
LSAgICAgICAgYnVpbGRfZGlyID0gdG9wX2xldmVsX3BhdGgoJ1dlYktpdEJ1aWxkJywgYnVpbGRf
dHlwZSkKKyAgICAgICAgYnVpbGRfZGlyID0gamhidWlsZHJjX2NvbW1vbi50b3BfbGV2ZWxfcGF0
aCgnV2ViS2l0QnVpbGQnLCBidWlsZF90eXBlKQogICAgICAgICBpZiBpc192YWxpZF9idWlsZF9k
aXJlY3RvcnkoYnVpbGRfZGlyKToKICAgICAgICAgICAgIHJldHVybiBidWlsZF9kaXIKIAogICAg
ICMgZGlzdGNoZWNrIGJ1aWxkcyBpbiBhIGRpcmVjdG9yeSBuYW1lZCBfYnVpbGQgaW4gdGhlIHRv
cC1sZXZlbCBwYXRoLgotICAgIGJ1aWxkX2RpciA9IHRvcF9sZXZlbF9wYXRoKCJfYnVpbGQiKQor
ICAgIGJ1aWxkX2RpciA9IGpoYnVpbGRyY19jb21tb24udG9wX2xldmVsX3BhdGgoIl9idWlsZCIp
CiAgICAgaWYgaXNfdmFsaWRfYnVpbGRfZGlyZWN0b3J5KGJ1aWxkX2Rpcik6CiAgICAgICAgIHJl
dHVybiBidWlsZF9kaXIKIAotICAgIGJ1aWxkX2RpciA9IHRvcF9sZXZlbF9wYXRoKCkKKyAgICBi
dWlsZF9kaXIgPSBqaGJ1aWxkcmNfY29tbW9uLnRvcF9sZXZlbF9wYXRoKCkKICAgICBpZiBpc192
YWxpZF9idWlsZF9kaXJlY3RvcnkoYnVpbGRfZGlyKToKICAgICAgICAgcmV0dXJuIGJ1aWxkX2Rp
cgogCi0gICAgYnVpbGRfZGlyID0gdG9wX2xldmVsX3BhdGgoIldlYktpdEJ1aWxkIikKKyAgICBi
dWlsZF9kaXIgPSBqaGJ1aWxkcmNfY29tbW9uLnRvcF9sZXZlbF9wYXRoKCJXZWJLaXRCdWlsZCIp
CiAgICAgaWYgaXNfdmFsaWRfYnVpbGRfZGlyZWN0b3J5KGJ1aWxkX2Rpcik6CiAgICAgICAgIHJl
dHVybiBidWlsZF9kaXIKIApkaWZmIC0tZ2l0IGEvVG9vbHMvZ3RrL2ZpbmQtbWFrZS1kaXN0LWVy
cm9ycyBiL1Rvb2xzL2d0ay9maW5kLW1ha2UtZGlzdC1lcnJvcnMKaW5kZXggODgwYzc4MC4uMzVk
OGE3NCAxMDA3NTUKLS0tIGEvVG9vbHMvZ3RrL2ZpbmQtbWFrZS1kaXN0LWVycm9ycworKysgYi9U
b29scy9ndGsvZmluZC1tYWtlLWRpc3QtZXJyb3JzCkBAIC0yMCw2ICsyMCw5IEBAIGltcG9ydCBv
cwogaW1wb3J0IHN1YnByb2Nlc3MKIGltcG9ydCBzeXMKIAorc3lzLnBhdGguaW5zZXJ0KDAsIG9z
LnBhdGguam9pbihvcy5wYXRoLmRpcm5hbWUoX19maWxlX18pLCAiLi4vamhidWlsZCIpKQoraW1w
b3J0IGpoYnVpbGRyY19jb21tb24KKwogZGVmIGlzX3NvdXJjZV9maWxlX2xpc3RpbmcobGluZSk6
CiAgICAgcmV0dXJuIGxpbmUuc3RyaXAoKS5zdGFydHN3aXRoKCdTb3VyY2UnKQogCkBAIC04Niw3
ICs4OSw3IEBAIGRlZiBnZXRfdW5saXN0ZWRfaGVhZGVycyhsaXN0ZWRfbWFrZWZpbGVfaGVhZGVy
cyk6CiBkZWYgZ2V0X21pc3NpbmdfaGVhZGVycyhsaXN0ZWRfbWFrZWZpbGVfaGVhZGVycyk6CiAg
ICAgbWlzc2luZyA9IHNldCgpCiAgICAgZm9yIGhlYWRlciBpbiBsaXN0ZWRfbWFrZWZpbGVfaGVh
ZGVyczoKLSAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKGNvbW1vbi50b3BfbGV2ZWxfcGF0
aChoZWFkZXIpKToKKyAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKGpoYnVpbGRyY19jb21t
b24udG9wX2xldmVsX3BhdGgoaGVhZGVyKSk6CiAgICAgICAgICAgICBtaXNzaW5nLmFkZChoZWFk
ZXIpCiAgICAgcmV0dXJuIG1pc3NpbmcKIApkaWZmIC0tZ2l0IGEvVG9vbHMvZ3RrL2dlbmVyYXRl
LWd0a2RvYyBiL1Rvb2xzL2d0ay9nZW5lcmF0ZS1ndGtkb2MKaW5kZXggY2UyMjBhNi4uZDc4OTg5
ZCAxMDA3NTUKLS0tIGEvVG9vbHMvZ3RrL2dlbmVyYXRlLWd0a2RvYworKysgYi9Ub29scy9ndGsv
Z2VuZXJhdGUtZ3RrZG9jCkBAIC0yMiw2ICsyMiw5IEBAIGltcG9ydCBsb2dnaW5nCiBpbXBvcnQg
b3MucGF0aAogaW1wb3J0IHN5cwogCitzeXMucGF0aC5pbnNlcnQoMCwgb3MucGF0aC5qb2luKG9z
LnBhdGguZGlybmFtZShfX2ZpbGVfXyksICIuLi9qaGJ1aWxkIikpCitpbXBvcnQgamhidWlsZHJj
X2NvbW1vbgorCiBkZWYgY29uZmlndXJlX2xvZ2dpbmcoKToKICAgICBsZXZlbCA9IGxvZ2dpbmcu
REVCVUcgaWYgJy12JyBpbiBzeXMuYXJndiBlbHNlIGxvZ2dpbmcuSU5GTwogICAgIGxvZ2dlciA9
IGxvZ2dpbmcuZ2V0TG9nZ2VyKCdndGtkb2MnKQpAQCAtNzYsOCArNzksOCBAQCBkZWYgd2Via2l0
ZG9tX2RvY3NfaHRtbF9wYXRoKCk6CiAgICAgcmV0dXJuIGNvbW1vbi5idWlsZF9wYXRoKCdEb2N1
bWVudGF0aW9uJywgJ3dlYmtpdGRvbWd0aycsICdodG1sJykKIAogZGVmIGdldF93ZWJraXQyX29w
dGlvbnMoKToKLSAgICBhcGlfcGF0aCA9IGNvbW1vbi50b3BfbGV2ZWxfcGF0aCgnU291cmNlJywg
J1dlYktpdDInLCAnVUlQcm9jZXNzJywgJ0FQSScsICdndGsnKQotICAgIGluamVjdGVkX2J1bmRs
ZV9hcGlfcGF0aCA9IGNvbW1vbi50b3BfbGV2ZWxfcGF0aCgnU291cmNlJywgJ1dlYktpdDInLCAn
V2ViUHJvY2VzcycsICdJbmplY3RlZEJ1bmRsZScsICdBUEknLCAnZ3RrJykKKyAgICBhcGlfcGF0
aCA9IGpoYnVpbGRyY19jb21tb24udG9wX2xldmVsX3BhdGgoJ1NvdXJjZScsICdXZWJLaXQyJywg
J1VJUHJvY2VzcycsICdBUEknLCAnZ3RrJykKKyAgICBpbmplY3RlZF9idW5kbGVfYXBpX3BhdGgg
PSBqaGJ1aWxkcmNfY29tbW9uLnRvcF9sZXZlbF9wYXRoKCdTb3VyY2UnLCAnV2ViS2l0MicsICdX
ZWJQcm9jZXNzJywgJ0luamVjdGVkQnVuZGxlJywgJ0FQSScsICdndGsnKSAKIAogICAgIGlmIGNv
bW1vbi5pc19jbWFrZV9idWlsZCgpOgogICAgICAgICBnZW5lcmF0ZWRfYXBpX3BhdGggPSBjb21t
b24uYnVpbGRfcGF0aCgnRGVyaXZlZFNvdXJjZXMnLCAnd2Via2l0Mmd0aycsICd3ZWJraXQyJykK
QEAgLTEwMSw3ICsxMDQsNyBAQCBkZWYgZ2V0X3dlYmtpdDJfb3B0aW9ucygpOgogICAgICAgICAn
c291cmNlX2RpcnMnIDogW3NyY19wYXRoKCksIGdlbmVyYXRlZF9hcGlfcGF0aCwgaW5qZWN0ZWRf
YnVuZGxlX2FwaV9wYXRoXSwKICAgICAgICAgJ2NmbGFncycgOgogICAgICAgICAgICAgIyBDb21t
b24gcGF0aHMKLSAgICAgICAgICAgICcgLUknICsgY29tbW9uLnRvcF9sZXZlbF9wYXRoKCdTb3Vy
Y2UnKSArIFwKKyAgICAgICAgICAgICcgLUknICsgamhidWlsZHJjX2NvbW1vbi50b3BfbGV2ZWxf
cGF0aCgnU291cmNlJykgKyBcCiAgICAgICAgICAgICAnIC1JJyArIGFwaV9wYXRoICsgXAogICAg
ICAgICAgICAgIyBBdXRvdG9vbHMgcGF0aHMKICAgICAgICAgICAgICcgLUknICsgY29tbW9uLmJ1
aWxkX3BhdGgoJ0Rlcml2ZWRTb3VyY2VzJywgJ3dlYmtpdDJndGsnLCAnaW5jbHVkZScpICsgXApA
QCAtMTI3LDcgKzEzMCw3IEBAIGRlZiBnZXRfd2Via2l0Ml9vcHRpb25zKCk6CiAKIGRlZiBnZXRf
d2Via2l0MV9vcHRpb25zKGd0a192ZXJzaW9uKToKICAgICBkZWYgc3JjX3BhdGgoKmFyZ3MpOgot
ICAgICAgICByZXR1cm4gY29tbW9uLnRvcF9sZXZlbF9wYXRoKCooKCdTb3VyY2UnLCAnV2ViS2l0
JywgJ2d0aycpICsgYXJncykpCisgICAgICAgIHJldHVybiBqaGJ1aWxkcmNfY29tbW9uLnRvcF9s
ZXZlbF9wYXRoKCooKCdTb3VyY2UnLCAnV2ViS2l0JywgJ2d0aycpICsgYXJncykpCiAKICAgICBk
ZWYgd2Via2l0dmVyc2lvbmhfcGF0aCgpOgogICAgICAgICBpZiBjb21tb24uaXNfY21ha2VfYnVp
bGQoKToKQEAgLTE1NSw4ICsxNTgsOCBAQCBkZWYgZ2V0X3dlYmtpdDFfb3B0aW9ucyhndGtfdmVy
c2lvbik6CiAgICAgICAgICdjZmxhZ3MnIDogJyAtSScgKyBjb21tb24uYnVpbGRfcGF0aCgnV2Vi
S2l0JywgJ2d0aycpICsgXAogICAgICAgICAgICAgICAgICAgICcgLUknICsgY29tbW9uLmJ1aWxk
X3BhdGgoJ0Rlcml2ZWRTb3VyY2VzJykgKyBcCiAgICAgICAgICAgICAgICAgICAgJyAtSScgKyBz
cmNfcGF0aCgpICsgXAotICAgICAgICAgICAgICAgICAgICcgLUknICsgY29tbW9uLnRvcF9sZXZl
bF9wYXRoKCdTb3VyY2UnKSArIFwKLSAgICAgICAgICAgICAgICAgICAnIC1JJyArIGNvbW1vbi50
b3BfbGV2ZWxfcGF0aCgnU291cmNlJywgJ0phdmFTY3JpcHRDb3JlJywgJ0ZvcndhcmRpbmdIZWFk
ZXJzJyksCisgICAgICAgICAgICAgICAgICAgJyAtSScgKyBqaGJ1aWxkcmNfY29tbW9uLnRvcF9s
ZXZlbF9wYXRoKCdTb3VyY2UnKSArIFwKKyAgICAgICAgICAgICAgICAgICAnIC1JJyArIGpoYnVp
bGRyY19jb21tb24udG9wX2xldmVsX3BhdGgoJ1NvdXJjZScsICdKYXZhU2NyaXB0Q29yZScsICdG
b3J3YXJkaW5nSGVhZGVycycpLAogICAgICAgICAnY3Jvc3NfcmVmZXJlbmNlX2RlcHMnIDogZ2V0
X2d0a2RvY19tb2R1bGVfcGF0aHMoeHJlZl9kZXBzKSArIFt3ZWJraXRkb21fZG9jc19odG1sX3Bh
dGgoKV0sCiAgICAgICAgICdpZ25vcmVkX2ZpbGVzJzogZ2xvYi5nbG9iKHNyY19wYXRoKCd3ZWJr
aXQnLCAnKnByaXZhdGUuKicpKSArIFwKICAgICAgICAgICAgICAgICAgICAgICAgICBnbG9iLmds
b2Ioc3JjX3BhdGgoJ3dlYmtpdCcsICd3ZWJraXRhdXRoZW50aWNhdGlvbmRpYWxvZy4qJykpICsg
XApAQCAtMTY4LDcgKzE3MSw3IEBAIGRlZiBnZXRfd2Via2l0ZG9tX29wdGlvbnMoKToKICAgICBk
ZWYgZGVyaXZlZF9zb3VyY2VzX3BhdGgoKmFyZ3MpOgogICAgICAgICByZXR1cm4gY29tbW9uLmJ1
aWxkX3BhdGgoKigoJ0Rlcml2ZWRTb3VyY2VzJywgJ3dlYmtpdGRvbScpICsgYXJncykpCiAgICAg
ZGVmIHNyY19wYXRoKCphcmdzKToKLSAgICAgICAgcmV0dXJuIGNvbW1vbi50b3BfbGV2ZWxfcGF0
aCgqKCgnU291cmNlJywgJ1dlYkNvcmUnLCAnYmluZGluZ3MnLCAnZ29iamVjdCcpICsgYXJncykp
CisgICAgICAgIHJldHVybiBqaGJ1aWxkcmNfY29tbW9uLnRvcF9sZXZlbF9wYXRoKCooKCdTb3Vy
Y2UnLCAnV2ViQ29yZScsICdiaW5kaW5ncycsICdnb2JqZWN0JykgKyBhcmdzKSkKIAogICAgIHhy
ZWZfZGVwcyA9IHsgJ2dsaWItMi4wJyA6IFsnZ2xpYicsICdnb2JqZWN0JywgJ2dpbyddIH0KIApA
QCAtMTgxLDcgKzE4NCw3IEBAIGRlZiBnZXRfd2Via2l0ZG9tX29wdGlvbnMoKToKICAgICAgICAg
J3NvdXJjZV9kaXJzJyA6IFtkZXJpdmVkX3NvdXJjZXNfcGF0aCgpXSwKICAgICAgICAgJ2NmbGFn
cycgOiAnIC1JJyArIGRlcml2ZWRfc291cmNlc19wYXRoKCkgKyBcCiAgICAgICAgICAgICAgICAg
ICAgJyAtSScgKyBzcmNfcGF0aCgpICsgXAotICAgICAgICAgICAgICAgICAgICcgLUknICsgY29t
bW9uLnRvcF9sZXZlbF9wYXRoKCdTb3VyY2UnKSwKKyAgICAgICAgICAgICAgICAgICAnIC1JJyAr
IGpoYnVpbGRyY19jb21tb24udG9wX2xldmVsX3BhdGgoJ1NvdXJjZScpLAogICAgICAgICAnY3Jv
c3NfcmVmZXJlbmNlX2RlcHMnIDogZ2V0X2d0a2RvY19tb2R1bGVfcGF0aHMoeHJlZl9kZXBzKSwK
ICAgICAgICAgJ2lnbm9yZWRfZmlsZXMnOiBnbG9iLmdsb2IoZGVyaXZlZF9zb3VyY2VzX3BhdGgo
JypQcml2YXRlLmgnKSkKICAgICB9KQpkaWZmIC0tZ2l0IGEvVG9vbHMvZ3RrL2dlbmVyYXRlLWlu
c3BlY3Rvci1ncmVzb3VyY2UtbWFuaWZlc3QucHkgYi9Ub29scy9ndGsvZ2VuZXJhdGUtaW5zcGVj
dG9yLWdyZXNvdXJjZS1tYW5pZmVzdC5weQppbmRleCA1OGExZGYxLi4wYmQ2Mzk0IDEwMDc1NQot
LS0gYS9Ub29scy9ndGsvZ2VuZXJhdGUtaW5zcGVjdG9yLWdyZXNvdXJjZS1tYW5pZmVzdC5weQor
KysgYi9Ub29scy9ndGsvZ2VuZXJhdGUtaW5zcGVjdG9yLWdyZXNvdXJjZS1tYW5pZmVzdC5weQpA
QCAtMjAsNyArMjAsMTAgQEAgaW1wb3J0IGdsb2IKIGltcG9ydCBvcwogaW1wb3J0IHN5cwogCi1y
ZXNvdXJjZXNfcGF0aCA9IGNvbW1vbi50b3BfbGV2ZWxfcGF0aCgpICsgIi9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvIgorc3lzLnBhdGguaW5zZXJ0KDAsIG9zLnBhdGguam9pbihvcy5wYXRoLmRpcm5h
bWUoX19maWxlX18pLCAiLi4vamhidWlsZCIpKQoraW1wb3J0IGpoYnVpbGRyY19jb21tb24KKwor
cmVzb3VyY2VzX3BhdGggPSBqaGJ1aWxkcmNfY29tbW9uLnRvcF9sZXZlbF9wYXRoKCkgKyAiL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS8iCiBpbnNwZWN0b3JfZmlsZXMgPSBcCiAgICAgZ2xvYi5nbG9i
KHJlc291cmNlc19wYXRoICsgJ1VzZXJJbnRlcmZhY2UvKi5odG1sJykgKyBcCiAgICAgZ2xvYi5n
bG9iKHJlc291cmNlc19wYXRoICsgJ1VzZXJJbnRlcmZhY2UvKi5qcycpICsgXApkaWZmIC0tZ2l0
IGEvVG9vbHMvZ3RrL2poYnVpbGRyYyBiL1Rvb2xzL2d0ay9qaGJ1aWxkcmMKaW5kZXggNjlmOTQ1
Ny4uYWNlYzY3NSAxMDA2NDQKLS0tIGEvVG9vbHMvZ3RrL2poYnVpbGRyYworKysgYi9Ub29scy9n
dGsvamhidWlsZHJjCkBAIC0xNSwzNiArMTUsMTYgQEAKICMgTGljZW5zZSBhbG9uZyB3aXRoIHRo
aXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQogIyBGb3VuZGF0
aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAw
MjExMC0xMzAxICBVU0EKIAotaW1wb3J0IG11bHRpcHJvY2Vzc2luZwogaW1wb3J0IHN5cwogCitz
eXMucGF0aC5pbnNlcnQoMCwgb3MucGF0aC5qb2luKG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXyks
ICIuLi9qaGJ1aWxkIikgKQoraW1wb3J0IGpoYnVpbGRyY19jb21tb24KK2poYnVpbGRyY19jb21t
b24uaW5pdChnbG9iYWxzKCksICJndGsiKQorCiBfX2d0a190b29sc19kaXJlY3RvcnkgPSBvcy5w
YXRoLmFic3BhdGgob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSkKIHN5cy5wYXRoID0gW19fZ3Rr
X3Rvb2xzX2RpcmVjdG9yeV0gKyBzeXMucGF0aAogaW1wb3J0IGNvbW1vbgogCi1idWlsZF9wb2xp
Y3kgPSAndXBkYXRlZCcKLQotX19tb2R1bGVzZXRfZmlsZV91cmkgPSAnZmlsZTovLycgKyBvcy5w
YXRoLmpvaW4oX19ndGtfdG9vbHNfZGlyZWN0b3J5LCAnamhidWlsZC5tb2R1bGVzJykKLV9fZXh0
cmFfbW9kdWxlc2V0cyA9IG9zLmVudmlyb24uZ2V0KCJXRUJLSVRfRVhUUkFfTU9EVUxFU0VUUyIs
ICIiKS5zcGxpdCgiLCIpCi1tb2R1bGVzZXQgPSBbIF9fbW9kdWxlc2V0X2ZpbGVfdXJpLCBdCi1p
ZiBfX2V4dHJhX21vZHVsZXNldHMgIT0gWycnXToKLSAgICBtb2R1bGVzZXQuZXh0ZW5kKF9fZXh0
cmFfbW9kdWxlc2V0cykKLQotX19leHRyYV9tb2R1bGVzID0gb3MuZW52aXJvbi5nZXQoIldFQktJ
VF9FWFRSQV9NT0RVTEVTIiwgIiIpLnNwbGl0KCIsIikKLW1vZHVsZXMgPSBbICd3ZWJraXRndGst
dGVzdGluZy1kZXBlbmRlbmNpZXMnLCBdCi1pZiBfX2V4dHJhX21vZHVsZXMgIT0gWycnXToKLSAg
ICBtb2R1bGVzLmV4dGVuZChfX2V4dHJhX21vZHVsZXMpCi0KLWlmIG9zLmVudmlyb24uaGFzX2tl
eSgnV0VCS0lUX09VVFBVVERJUicpOgotICAgIGNoZWNrb3V0cm9vdCA9IG9zLnBhdGguYWJzcGF0
aChvcy5wYXRoLmpvaW4ob3MuZW52aXJvblsnV0VCS0lUX09VVFBVVERJUiddLCAnRGVwZW5kZW5j
aWVzJywgJ1NvdXJjZScpKQotICAgIHByZWZpeCA9IG9zLnBhdGguYWJzcGF0aChvcy5wYXRoLmpv
aW4ob3MuZW52aXJvblsnV0VCS0lUX09VVFBVVERJUiddLCAnRGVwZW5kZW5jaWVzJywgJ1Jvb3Qn
KSkKLWVsc2U6Ci0gICAgY2hlY2tvdXRyb290ID0gb3MucGF0aC5hYnNwYXRoKGNvbW1vbi50b3Bf
bGV2ZWxfcGF0aCgnV2ViS2l0QnVpbGQnLCdEZXBlbmRlbmNpZXMnLCAnU291cmNlJykpCi0gICAg
cHJlZml4ID0gb3MucGF0aC5hYnNwYXRoKGNvbW1vbi50b3BfbGV2ZWxfcGF0aCgnV2ViS2l0QnVp
bGQnLCdEZXBlbmRlbmNpZXMnLCAnUm9vdCcpKQotCi1ub25vdGlmeSA9IFRydWUKLW5vdHJheWlj
b24gPSBUcnVlCi0KIGlmICdOVU1CRVJfT0ZfUFJPQ0VTU09SUycgaW4gb3MuZW52aXJvbjoKICAg
ICBqb2JzID0gb3MuZW52aXJvblsnTlVNQkVSX09GX1BST0NFU1NPUlMnXQogCmRpZmYgLS1naXQg
YS9Ub29scy9qaGJ1aWxkL2poYnVpbGRyY19jb21tb24ucHkgYi9Ub29scy9qaGJ1aWxkL2poYnVp
bGRyY19jb21tb24ucHkKaW5kZXggZWU4NzU2Mi4uZWYwYzNlYyAxMDA2NDQKLS0tIGEvVG9vbHMv
amhidWlsZC9qaGJ1aWxkcmNfY29tbW9uLnB5CisrKyBiL1Rvb2xzL2poYnVpbGQvamhidWlsZHJj
X2NvbW1vbi5weQpAQCAtMTgsNDMgKzE4LDQ3IEBACiAKIGltcG9ydCBtdWx0aXByb2Nlc3NpbmcK
IGltcG9ydCBzeXMKLWltcG9ydCBvcyAKK2ltcG9ydCBvcworCiAKIHNjcmlwdF9kaXIgPSBOb25l
CiAKKwogZGVmIHNjcmlwdF9wYXRoKCphcmdzKToKLSBnbG9iYWwgc2NyaXB0X2RpcgotIGlmIG5v
dCBzY3JpcHRfZGlyOgotICAgIHNjcmlwdF9kaXIgPSBvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJu
YW1lKF9fZmlsZV9fKSwgJy4uJywgJ1NjcmlwdHMnKQotIHJldHVybiBvcy5wYXRoLmpvaW4oKihz
Y3JpcHRfZGlyLCkgKyBhcmdzKQorICAgIGdsb2JhbCBzY3JpcHRfZGlyCisgICAgaWYgbm90IHNj
cmlwdF9kaXI6CisgICAgICAgIHNjcmlwdF9kaXIgPSBvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJu
YW1lKF9fZmlsZV9fKSwgJy4uJywgJ1NjcmlwdHMnKQorICAgIHJldHVybiBvcy5wYXRoLmpvaW4o
KihzY3JpcHRfZGlyLCkgKyBhcmdzKQorCiAKIGRlZiB0b3BfbGV2ZWxfcGF0aCgqYXJncyk6Ci0g
cmV0dXJuIG9zLnBhdGguam9pbigqKChvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1lKF9fZmls
ZV9fKSwgJy4uJywgJy4uJyksKSArIGFyZ3MpKQorICAgIHJldHVybiBvcy5wYXRoLmpvaW4oKigo
b3MucGF0aC5qb2luKG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXyksICcuLicsICcuLicpLCkgKyBh
cmdzKSkKKwogCiBkZWYgaW5pdChqaGJ1aWxkcmNfZ2xvYmFscywgcGxhdGZvcm0pOgotICBfX3Rv
b2xzX2RpcmVjdG9yeSA9IG9zLnBhdGguam9pbihvcy5wYXRoLmRpcm5hbWUoX19maWxlX18pLCAi
Li4vIiwgcGxhdGZvcm0pCi0gIHN5cy5wYXRoLmluc2VydCgwLCBfX3Rvb2xzX2RpcmVjdG9yeSkK
LSAKLSAgamhidWlsZHJjX2dsb2JhbHNbImJ1aWxkX3BvbGljeSJdID0gJ3VwZGF0ZWQnCi0gCi0g
IF9fbW9kdWxlc2V0X2ZpbGVfdXJpID0gJ2ZpbGU6Ly8nICsgb3MucGF0aC5qb2luKF9fdG9vbHNf
ZGlyZWN0b3J5LCAnamhidWlsZC5tb2R1bGVzJykKLSAgX19leHRyYV9tb2R1bGVzZXRzID0gb3Mu
ZW52aXJvbi5nZXQoIldFQktJVF9FWFRSQV9NT0RVTEVTRVRTIiwgIiIpLnNwbGl0KCIsIikKLSAg
amhidWlsZHJjX2dsb2JhbHNbIm1vZHVsZXNldCJdID0gW19fbW9kdWxlc2V0X2ZpbGVfdXJpLCBd
Ci0gIGlmIF9fZXh0cmFfbW9kdWxlc2V0cyAhPSBbJyddOgotICAgICAgamhidWlsZHJjX2dsb2Jh
bHNbIm1vZHVsZXNldCJdLmV4dGVuZChfX2V4dHJhX21vZHVsZXNldHMpCi0gCi0gIF9fZXh0cmFf
bW9kdWxlcyA9IG9zLmVudmlyb24uZ2V0KCJXRUJLSVRfRVhUUkFfTU9EVUxFUyIsICIiKS5zcGxp
dCgiLCIpCi0gIGpoYnVpbGRyY19nbG9iYWxzWyJtb2R1bGVzIl0gPSBbJ3dlYmtpdCcgKyBwbGF0
Zm9ybSArICctdGVzdGluZy1kZXBlbmRlbmNpZXMnLCBdCi0gIGlmIF9fZXh0cmFfbW9kdWxlcyAh
PSBbJyddOgotICAgICAgamhidWlsZHJjX2dsb2JhbHNbIm1vZHVsZXMiXS5leHRlbmQoX19leHRy
YV9tb2R1bGVzKQotIAotICBpZiAnV0VCS0lUX09VVFBVVERJUicgaW4gb3MuZW52aXJvbjoKLSAg
ICAgIGpoYnVpbGRyY19nbG9iYWxzWyJjaGVja291dHJvb3QiXSA9IGNoZWNrb3V0cm9vdCA9IG9z
LnBhdGguYWJzcGF0aChvcy5wYXRoLmpvaW4ob3MuZW52aXJvblsnV0VCS0lUX09VVFBVVERJUidd
LCAnRGVwZW5kZW5jaWVzJywgJ1NvdXJjZScpKQotICAgICAgamhidWlsZHJjX2dsb2JhbHNbInBy
ZWZpeCJdID0gb3MucGF0aC5hYnNwYXRoKG9zLnBhdGguam9pbihvcy5lbnZpcm9uWydXRUJLSVRf
T1VUUFVURElSJ10sICdEZXBlbmRlbmNpZXMnLCAnUm9vdCcpKQotICBlbHNlOgotICAgICAgamhi
dWlsZHJjX2dsb2JhbHNbImNoZWNrb3V0cm9vdCJdID0gY2hlY2tvdXRyb290ID0gb3MucGF0aC5h
YnNwYXRoKHRvcF9sZXZlbF9wYXRoKCdXZWJLaXRCdWlsZCcsICdEZXBlbmRlbmNpZXMnLCAnU291
cmNlJykpCi0gICAgICBqaGJ1aWxkcmNfZ2xvYmFsc1sicHJlZml4Il0gPSBvcy5wYXRoLmFic3Bh
dGgodG9wX2xldmVsX3BhdGgoJ1dlYktpdEJ1aWxkJywgJ0RlcGVuZGVuY2llcycsICdSb290Jykp
Ci0gCi0gIGpoYnVpbGRyY19nbG9iYWxzWyJub25vdGlmeSJdID0gVHJ1ZQotICBqaGJ1aWxkcmNf
Z2xvYmFsc1sibm90cmF5aWNvbiJdID0gVHJ1ZQotICAgCisKKyAgICBfX3Rvb2xzX2RpcmVjdG9y
eSA9IG9zLnBhdGguam9pbihvcy5wYXRoLmRpcm5hbWUoX19maWxlX18pLCAiLi4vIiwgcGxhdGZv
cm0pCisgICAgc3lzLnBhdGguaW5zZXJ0KDAsIF9fdG9vbHNfZGlyZWN0b3J5KQorCisgICAgamhi
dWlsZHJjX2dsb2JhbHNbImJ1aWxkX3BvbGljeSJdID0gJ3VwZGF0ZWQnCisKKyAgICBfX21vZHVs
ZXNldF9maWxlX3VyaSA9ICdmaWxlOi8vJyArIG9zLnBhdGguam9pbihfX3Rvb2xzX2RpcmVjdG9y
eSwgJ2poYnVpbGQubW9kdWxlcycpCisgICAgX19leHRyYV9tb2R1bGVzZXRzID0gb3MuZW52aXJv
bi5nZXQoIldFQktJVF9FWFRSQV9NT0RVTEVTRVRTIiwgIiIpLnNwbGl0KCIsIikKKyAgICBqaGJ1
aWxkcmNfZ2xvYmFsc1sibW9kdWxlc2V0Il0gPSBbX19tb2R1bGVzZXRfZmlsZV91cmksIF0KKyAg
ICBpZiBfX2V4dHJhX21vZHVsZXNldHMgIT0gWycnXToKKyAgICAgICAgamhidWlsZHJjX2dsb2Jh
bHNbIm1vZHVsZXNldCJdLmV4dGVuZChfX2V4dHJhX21vZHVsZXNldHMpCisKKyAgICBfX2V4dHJh
X21vZHVsZXMgPSBvcy5lbnZpcm9uLmdldCgiV0VCS0lUX0VYVFJBX01PRFVMRVMiLCAiIikuc3Bs
aXQoIiwiKQorICAgIGpoYnVpbGRyY19nbG9iYWxzWyJtb2R1bGVzIl0gPSBbJ3dlYmtpdCcgKyBw
bGF0Zm9ybSArICctdGVzdGluZy1kZXBlbmRlbmNpZXMnLCBdCisgICAgaWYgX19leHRyYV9tb2R1
bGVzICE9IFsnJ106CisgICAgICAgIGpoYnVpbGRyY19nbG9iYWxzWyJtb2R1bGVzIl0uZXh0ZW5k
KF9fZXh0cmFfbW9kdWxlcykKKworICAgIGlmICdXRUJLSVRfT1VUUFVURElSJyBpbiBvcy5lbnZp
cm9uOgorICAgICAgICBqaGJ1aWxkcmNfZ2xvYmFsc1siY2hlY2tvdXRyb290Il0gPSBjaGVja291
dHJvb3QgPSBvcy5wYXRoLmFic3BhdGgob3MucGF0aC5qb2luKG9zLmVudmlyb25bJ1dFQktJVF9P
VVRQVVRESVInXSwgJ0RlcGVuZGVuY2llcycsICdTb3VyY2UnKSkKKyAgICAgICAgamhidWlsZHJj
X2dsb2JhbHNbInByZWZpeCJdID0gb3MucGF0aC5hYnNwYXRoKG9zLnBhdGguam9pbihvcy5lbnZp
cm9uWydXRUJLSVRfT1VUUFVURElSJ10sICdEZXBlbmRlbmNpZXMnLCAnUm9vdCcpKQorICAgIGVs
c2U6CisgICAgICAgIGpoYnVpbGRyY19nbG9iYWxzWyJjaGVja291dHJvb3QiXSA9IGNoZWNrb3V0
cm9vdCA9IG9zLnBhdGguYWJzcGF0aCh0b3BfbGV2ZWxfcGF0aCgnV2ViS2l0QnVpbGQnLCAnRGVw
ZW5kZW5jaWVzJywgJ1NvdXJjZScpKQorICAgICAgICBqaGJ1aWxkcmNfZ2xvYmFsc1sicHJlZml4
Il0gPSBvcy5wYXRoLmFic3BhdGgodG9wX2xldmVsX3BhdGgoJ1dlYktpdEJ1aWxkJywgJ0RlcGVu
ZGVuY2llcycsICdSb290JykpCisKKyAgICBqaGJ1aWxkcmNfZ2xvYmFsc1sibm9ub3RpZnkiXSA9
IFRydWUKKyAgICBqaGJ1aWxkcmNfZ2xvYmFsc1sibm90cmF5aWNvbiJdID0gVHJ1ZQo=
</data>
<flag name="review"
          id="248983"
          type_id="1"
          status="-"
          setter="ossy"
    />
    <flag name="commit-queue"
          id="248984"
          type_id="3"
          status="-"
          setter="ossy"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>225053</attachid>
            <date>2014-02-24 04:48:02 -0800</date>
            <delta_ts>2014-02-24 05:09:02 -0800</delta_ts>
            <desc>Patch v11</desc>
            <filename>extract_v5.patch</filename>
            <type>text/plain</type>
            <size>18008</size>
            <attacher name="Tibor Mészáros">mtiborinf</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCAzMmZj
NDIyLi4xMWYzYTZhIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hh
bmdlTG9nCkBAIC0xICsxLDMzIEBACisyMDE0LTAyLTI0ICBUaWJvciBNZXN6YXJvcyAgPHRtZXN6
YXJvcy51LXN6ZWdlZEBwYXJ0bmVyLnNhbXN1bmcuY29tPgorCisgICAgICAgIEV4dHJhY3QgY29t
bW9uIHBhcnRzIGZyb20gamhidWlsZHJjIGZpbGVzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI1OTg2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgQ28tYXV0aG9yZWQgd2l0aCBQZXRlciBTemFua2EgIDxo
ODY4MDY0QHN0dWQudS1zemVnZWQuaHU+LgorCisgICAgICAgICogU2NyaXB0cy9ydW4tZ3RrLXRl
c3RzOgorICAgICAgICAoVGVzdFJ1bm5lci5fc2V0dXBfdGVzdGluZ19lbnZpcm9ubWVudCk6Cisg
ICAgICAgICogZWZsL2NvbW1vbi5weTogUmVtb3ZlZC4KKyAgICAgICAgKiBlZmwvamhidWlsZHJj
OgorICAgICAgICAqIGd0ay9jaGVjay1nZG9tLXN5bWJvbHM6CisgICAgICAgICogZ3RrL2NvbW1v
bi5weToKKyAgICAgICAgKGJpbmFyeV9idWlsZF9wYXRoKToKKyAgICAgICAgKGdldF9idWlsZF9w
YXRoKToKKyAgICAgICAgKiBndGsvZmluZC1tYWtlLWRpc3QtZXJyb3JzOgorICAgICAgICAoZ2V0
X21pc3NpbmdfaGVhZGVycyk6CisgICAgICAgICogZ3RrL2dlbmVyYXRlLWd0a2RvYzoKKyAgICAg
ICAgKGdldF93ZWJraXQyX29wdGlvbnMpOgorICAgICAgICAoZ2V0X3dlYmtpdDFfb3B0aW9ucy5z
cmNfcGF0aCk6CisgICAgICAgIChnZXRfd2Via2l0MV9vcHRpb25zKToKKyAgICAgICAgKGdldF93
ZWJraXRkb21fb3B0aW9ucy5zcmNfcGF0aCk6CisgICAgICAgIChnZXRfd2Via2l0ZG9tX29wdGlv
bnMpOgorICAgICAgICAqIGd0ay9nZW5lcmF0ZS1pbnNwZWN0b3ItZ3Jlc291cmNlLW1hbmlmZXN0
LnB5OgorICAgICAgICAqIGd0ay9qaGJ1aWxkcmM6CisgICAgICAgICogamhidWlsZC9qaGJ1aWxk
cmNfY29tbW9uLnB5OiBBZGRlZC4KKyAgICAgICAgKHNjcmlwdF9wYXRoKToKKyAgICAgICAgKHRv
cF9sZXZlbF9wYXRoKToKKyAgICAgICAgKGluaXQpOgorCiA9PSBSb2xsZWQgb3ZlciB0byBDaGFu
Z2VMb2ctMjAxNC0wMi0yMCA9PQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy9ydW4tZ3RrLXRl
c3RzIGIvVG9vbHMvU2NyaXB0cy9ydW4tZ3RrLXRlc3RzCmluZGV4IGU5ODA4NjAuLjRiYjQ2M2Mg
MTAwNzU1Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvcnVuLWd0ay10ZXN0cworKysgYi9Ub29scy9TY3Jp
cHRzL3J1bi1ndGstdGVzdHMKQEAgLTMxLDYgKzMxLDkgQEAgc3lzLnBhdGguYXBwZW5kKG9zLnBh
dGguam9pbih0b3BfbGV2ZWxfZGlyZWN0b3J5LCAiVG9vbHMiLCAiZ3RrIikpCiBpbXBvcnQgY29t
bW9uCiBpbXBvcnQgamhidWlsZHV0aWxzCiAKK3N5cy5wYXRoLmluc2VydCgwLCBvcy5wYXRoLmpv
aW4ob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSwgIi4uL2poYnVpbGQiKSkKK2ltcG9ydCBqaGJ1
aWxkcmNfY29tbW9uCisKIGNsYXNzIFNraXBwZWRUZXN0OgogICAgIEVOVElSRV9TVUlURSA9IE5v
bmUKIApAQCAtMTk1LDcgKzE5OCw3IEBAIGNsYXNzIFRlc3RSdW5uZXI6CiAgICAgZGVmIF9zZXR1
cF90ZXN0aW5nX2Vudmlyb25tZW50KHNlbGYpOgogICAgICAgICBzZWxmLl90ZXN0X2VudiA9IG9z
LmVudmlyb24KICAgICAgICAgc2VsZi5fdGVzdF9lbnZbJ0dTRVRUSU5HU19CQUNLRU5EJ10gPSAn
bWVtb3J5JwotICAgICAgICBzZWxmLl90ZXN0X2VudlsiVEVTVF9XRUJLSVRfQVBJX1dFQktJVDJf
UkVTT1VSQ0VTX1BBVEgiXSA9IGNvbW1vbi50b3BfbGV2ZWxfcGF0aCgiVG9vbHMiLCAiVGVzdFdl
YktpdEFQSSIsICJUZXN0cyIsICJXZWJLaXQyIikKKyAgICAgICAgc2VsZi5fdGVzdF9lbnZbIlRF
U1RfV0VCS0lUX0FQSV9XRUJLSVQyX1JFU09VUkNFU19QQVRIIl0gPSBqaGJ1aWxkcmNfY29tbW9u
LnRvcF9sZXZlbF9wYXRoKCJUb29scyIsICJUZXN0V2ViS2l0QVBJIiwgIlRlc3RzIiwgIldlYktp
dDIiKQogICAgICAgICBzZWxmLl90ZXN0X2VudlsiVEVTVF9XRUJLSVRfQVBJX1dFQktJVDJfSU5K
RUNURURfQlVORExFX1BBVEgiXSA9IGNvbW1vbi50ZXN0c19saWJyYXJ5X2J1aWxkX3BhdGgoKQog
ICAgICAgICBzZWxmLl90ZXN0X2VudlsiV0VCS0lUX0VYRUNfUEFUSCJdID0gc2VsZi5fcHJvZ3Jh
bXNfcGF0aAogCmRpZmYgLS1naXQgYS9Ub29scy9lZmwvY29tbW9uLnB5IGIvVG9vbHMvZWZsL2Nv
bW1vbi5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzc2NTdiMy4uMDAwMDAwMAot
LS0gYS9Ub29scy9lZmwvY29tbW9uLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMzEgKzAsMCBAQAot
IyEvdXNyL2Jpbi9lbnYgcHl0aG9uCi0jIENvcHlyaWdodCAoQykgMjAxMSBJZ2FsaWEgUy5MLgot
IwotIyBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg
aXQgYW5kL29yCi0jIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIg
R2VuZXJhbCBQdWJsaWMKLSMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbjsgZWl0aGVyCi0jIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0
IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSMKLSMgVGhpcyBsaWJyYXJ5IGlzIGRp
c3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0jIGJ1dCBXSVRI
T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0j
IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl
ZSB0aGUgR05VCi0jIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp
bHMuCi0jCi0jIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNz
ZXIgR2VuZXJhbCBQdWJsaWMKLSMgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYg
bm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotIyBGb3VuZGF0aW9uLCBJbmMuLCA1MSBG
cmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxICBVU0EK
LQotaW1wb3J0IG9zCi0KLXNjcmlwdF9kaXIgPSBOb25lCi0KLQotZGVmIHNjcmlwdF9wYXRoKCph
cmdzKToKLSAgICBnbG9iYWwgc2NyaXB0X2RpcgotICAgIGlmIG5vdCBzY3JpcHRfZGlyOgotICAg
ICAgICBzY3JpcHRfZGlyID0gb3MucGF0aC5qb2luKG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXyks
ICcuLicsICdTY3JpcHRzJykKLSAgICByZXR1cm4gb3MucGF0aC5qb2luKCooc2NyaXB0X2Rpciwp
ICsgYXJncykKLQotCi1kZWYgdG9wX2xldmVsX3BhdGgoKmFyZ3MpOgotICAgIHJldHVybiBvcy5w
YXRoLmpvaW4oKigoc2NyaXB0X3BhdGgoJy4uJywgJy4uJyksKSArIGFyZ3MpKQpkaWZmIC0tZ2l0
IGEvVG9vbHMvZWZsL2poYnVpbGRyYyBiL1Rvb2xzL2VmbC9qaGJ1aWxkcmMKaW5kZXggNzdkYWFl
OS4uYzEyOTU3ZCAxMDA2NDQKLS0tIGEvVG9vbHMvZWZsL2poYnVpbGRyYworKysgYi9Ub29scy9l
ZmwvamhidWlsZHJjCkBAIC0xNiwzNyArMTYsMTEgQEAKICMgTGljZW5zZSBhbG9uZyB3aXRoIHRo
aXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQogIyBGb3VuZGF0
aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAw
MjExMC0xMzAxICBVU0EKIAotaW1wb3J0IG11bHRpcHJvY2Vzc2luZwogaW1wb3J0IHN5cwogCi1f
X2VmbF90b29sc19kaXJlY3RvcnkgPSBvcy5wYXRoLmFic3BhdGgob3MucGF0aC5kaXJuYW1lKF9f
ZmlsZV9fKSkKLXN5cy5wYXRoID0gW19fZWZsX3Rvb2xzX2RpcmVjdG9yeV0gKyBzeXMucGF0aAot
aW1wb3J0IGNvbW1vbgotCi1idWlsZF9wb2xpY3kgPSAndXBkYXRlZCcKLQotIyBGSVhNRTogbW92
ZSBzaGFyZWQgcGFydHMgaW50byAuLi9qaGJ1aWxkIGZvbGRlci4KLQotX19tb2R1bGVzZXRfZmls
ZV91cmkgPSAnZmlsZTovLycgKyBvcy5wYXRoLmpvaW4oX19lZmxfdG9vbHNfZGlyZWN0b3J5LCAn
amhidWlsZC5tb2R1bGVzJykKLV9fZXh0cmFfbW9kdWxlc2V0cyA9IG9zLmVudmlyb24uZ2V0KCJX
RUJLSVRfRVhUUkFfTU9EVUxFU0VUUyIsICIiKS5zcGxpdCgiLCIpCi1tb2R1bGVzZXQgPSBbIF9f
bW9kdWxlc2V0X2ZpbGVfdXJpLCBdCi1pZiBfX2V4dHJhX21vZHVsZXNldHMgIT0gWycnXToKLSAg
ICBtb2R1bGVzZXQuZXh0ZW5kKF9fZXh0cmFfbW9kdWxlc2V0cykKLQotX19leHRyYV9tb2R1bGVz
ID0gb3MuZW52aXJvbi5nZXQoIldFQktJVF9FWFRSQV9NT0RVTEVTIiwgIiIpLnNwbGl0KCIsIikK
LW1vZHVsZXMgPSBbICd3ZWJraXRlZmwtdGVzdGluZy1kZXBlbmRlbmNpZXMnLCBdCi1pZiBfX2V4
dHJhX21vZHVsZXMgIT0gWycnXToKLSAgICBtb2R1bGVzLmV4dGVuZChfX2V4dHJhX21vZHVsZXMp
Ci0KLWlmIG9zLmVudmlyb24uaGFzX2tleSgnV0VCS0lUX09VVFBVVERJUicpOgotICAgIGNoZWNr
b3V0cm9vdCA9IG9zLnBhdGguYWJzcGF0aChvcy5wYXRoLmpvaW4ob3MuZW52aXJvblsnV0VCS0lU
X09VVFBVVERJUiddLCAnRGVwZW5kZW5jaWVzJywgJ1NvdXJjZScpKQotICAgIHByZWZpeCA9IG9z
LnBhdGguYWJzcGF0aChvcy5wYXRoLmpvaW4ob3MuZW52aXJvblsnV0VCS0lUX09VVFBVVERJUidd
LCAnRGVwZW5kZW5jaWVzJywgJ1Jvb3QnKSkKLWVsc2U6Ci0gICAgY2hlY2tvdXRyb290ID0gb3Mu
cGF0aC5hYnNwYXRoKGNvbW1vbi50b3BfbGV2ZWxfcGF0aCgnV2ViS2l0QnVpbGQnLCdEZXBlbmRl
bmNpZXMnLCAnU291cmNlJykpCi0gICAgcHJlZml4ID0gb3MucGF0aC5hYnNwYXRoKGNvbW1vbi50
b3BfbGV2ZWxfcGF0aCgnV2ViS2l0QnVpbGQnLCdEZXBlbmRlbmNpZXMnLCAnUm9vdCcpKQotCi1u
b25vdGlmeSA9IFRydWUKLW5vdHJheWljb24gPSBUcnVlCitzeXMucGF0aC5pbnNlcnQoMCwgb3Mu
cGF0aC5qb2luKG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXyksICIuLi9qaGJ1aWxkIikgKQoraW1w
b3J0IGpoYnVpbGRyY19jb21tb24KK2poYnVpbGRyY19jb21tb24uaW5pdChnbG9iYWxzKCksICJl
ZmwiKQogCiBpZiAnTlVNQkVSX09GX1BST0NFU1NPUlMnIGluIG9zLmVudmlyb246CiAgICAgam9i
cyA9IG9zLmVudmlyb25bJ05VTUJFUl9PRl9QUk9DRVNTT1JTJ10KZGlmZiAtLWdpdCBhL1Rvb2xz
L2d0ay9jaGVjay1nZG9tLXN5bWJvbHMgYi9Ub29scy9ndGsvY2hlY2stZ2RvbS1zeW1ib2xzCmlu
ZGV4IGYxMTA4YjcuLmI3YTNhNGMgMTAwNzU1Ci0tLSBhL1Rvb2xzL2d0ay9jaGVjay1nZG9tLXN5
bWJvbHMKKysrIGIvVG9vbHMvZ3RrL2NoZWNrLWdkb20tc3ltYm9scwpAQCAtMjIsNiArMjIsOCBA
QCBpbXBvcnQgc3VicHJvY2VzcwogaW1wb3J0IHN5cwogaW1wb3J0IHRlbXBmaWxlCiAKK3N5cy5w
YXRoLmluc2VydCgwLCBvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSwgIi4u
L2poYnVpbGQiKSkKK2ltcG9ydCBqaGJ1aWxkcmNfY29tbW9uCiAKIGRlZiBzaG91bGRfdXBkYXRl
X3N5bWJvbHNfZmlsZShuZXcsIG9sZCk6CiAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKG9sZCk6
CkBAIC01MCw3ICs1Miw3IEBAIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CiAgICAgICAgICAg
ICAgICAgdG1wLndyaXRlKGZpbGVfaGFuZGxlLnJlYWQoKSkKICAgICAgICAgdG1wLmZsdXNoKCkK
IAotICAgICAgICBnZG9tX3NvdXJjZV9wYXRoID0gY29tbW9uLnRvcF9sZXZlbF9wYXRoKCdTb3Vy
Y2UnLCAnV2ViQ29yZScsICdiaW5kaW5ncycpCisgICAgICAgIGdkb21fc291cmNlX3BhdGggPSBq
aGJ1aWxkcmNfY29tbW9uLnRvcF9sZXZlbF9wYXRoKCdTb3VyY2UnLCAnV2ViQ29yZScsICdiaW5k
aW5ncycpCiAgICAgICAgIGFwaV9icmVha190ZXN0X3BhdGggPSBvcy5wYXRoLmpvaW4oZ2RvbV9z
b3VyY2VfcGF0aCwgJ3NjcmlwdHMnLCAnZ29iamVjdC1ydW4tYXBpLWJyZWFrLXRlc3QnKQogICAg
ICAgICBzdWJwcm9jZXNzLmNhbGwoW3N5cy5leGVjdXRhYmxlLCBhcGlfYnJlYWtfdGVzdF9wYXRo
LCBvcy5wYXRoLmpvaW4oZ2RvbV9zb3VyY2VfcGF0aCwgJ2dvYmplY3QnLCAgJ3dlYmtpdGRvbS5z
eW1ib2xzJyksIHRtcC5uYW1lXSkKIApkaWZmIC0tZ2l0IGEvVG9vbHMvZ3RrL2NvbW1vbi5weSBi
L1Rvb2xzL2d0ay9jb21tb24ucHkKaW5kZXggMDJkYjkzMi4uNmU1MWFmNSAxMDA2NDQKLS0tIGEv
VG9vbHMvZ3RrL2NvbW1vbi5weQorKysgYi9Ub29scy9ndGsvY29tbW9uLnB5CkBAIC0yMSw3ICsy
MSw5IEBAIGltcG9ydCBzZWxlY3QKIGltcG9ydCBzdWJwcm9jZXNzCiBpbXBvcnQgc3lzCiAKLXNj
cmlwdF9kaXIgPSBOb25lCitzeXMucGF0aC5pbnNlcnQoMCwgb3MucGF0aC5qb2luKG9zLnBhdGgu
ZGlybmFtZShfX2ZpbGVfXyksICIuLi9qaGJ1aWxkIikpCitpbXBvcnQgamhidWlsZHJjX2NvbW1v
bgorCiBidWlsZF9kaXIgPSBOb25lCiBsaWJyYXJ5X2J1aWxkX2RpciA9IE5vbmUKIHRlc3RzX2xp
YnJhcnlfYnVpbGRfZGlyID0gTm9uZQpAQCAtNzEsMTcgKzczLDYgQEAgZGVmIGJpbmFyeV9idWls
ZF9wYXRoKCphcmdzKToKICAgICByZXR1cm4gbGlicmFyeV9idWlsZF9kaXIKIAogCi1kZWYgc2Ny
aXB0X3BhdGgoKmFyZ3MpOgotICAgIGdsb2JhbCBzY3JpcHRfZGlyCi0gICAgaWYgbm90IHNjcmlw
dF9kaXI6Ci0gICAgICAgIHNjcmlwdF9kaXIgPSBvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1l
KF9fZmlsZV9fKSwgJy4uJywgJ1NjcmlwdHMnKQotICAgIHJldHVybiBvcy5wYXRoLmpvaW4oKihz
Y3JpcHRfZGlyLCkgKyBhcmdzKQotCi0KLWRlZiB0b3BfbGV2ZWxfcGF0aCgqYXJncyk6Ci0gICAg
cmV0dXJuIG9zLnBhdGguam9pbigqKChvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1lKF9fZmls
ZV9fKSwgJy4uJywgJy4uJyksKSArIGFyZ3MpKQotCi0KIGRlZiBnZXRfYnVpbGRfcGF0aChmYXRh
bD1UcnVlKToKICAgICBnbG9iYWwgYnVpbGRfZGlyCiAgICAgaWYgYnVpbGRfZGlyOgpAQCAtMTA5
LDIwICsxMDAsMjAgQEAgZGVmIGdldF9idWlsZF9wYXRoKGZhdGFsPVRydWUpOgogCiAgICAgZ2xv
YmFsIGJ1aWxkX3R5cGVzCiAgICAgZm9yIGJ1aWxkX3R5cGUgaW4gYnVpbGRfdHlwZXM6Ci0gICAg
ICAgIGJ1aWxkX2RpciA9IHRvcF9sZXZlbF9wYXRoKCdXZWJLaXRCdWlsZCcsIGJ1aWxkX3R5cGUp
CisgICAgICAgIGJ1aWxkX2RpciA9IGpoYnVpbGRyY19jb21tb24udG9wX2xldmVsX3BhdGgoJ1dl
YktpdEJ1aWxkJywgYnVpbGRfdHlwZSkKICAgICAgICAgaWYgaXNfdmFsaWRfYnVpbGRfZGlyZWN0
b3J5KGJ1aWxkX2Rpcik6CiAgICAgICAgICAgICByZXR1cm4gYnVpbGRfZGlyCiAKICAgICAjIGRp
c3RjaGVjayBidWlsZHMgaW4gYSBkaXJlY3RvcnkgbmFtZWQgX2J1aWxkIGluIHRoZSB0b3AtbGV2
ZWwgcGF0aC4KLSAgICBidWlsZF9kaXIgPSB0b3BfbGV2ZWxfcGF0aCgiX2J1aWxkIikKKyAgICBi
dWlsZF9kaXIgPSBqaGJ1aWxkcmNfY29tbW9uLnRvcF9sZXZlbF9wYXRoKCJfYnVpbGQiKQogICAg
IGlmIGlzX3ZhbGlkX2J1aWxkX2RpcmVjdG9yeShidWlsZF9kaXIpOgogICAgICAgICByZXR1cm4g
YnVpbGRfZGlyCiAKLSAgICBidWlsZF9kaXIgPSB0b3BfbGV2ZWxfcGF0aCgpCisgICAgYnVpbGRf
ZGlyID0gamhidWlsZHJjX2NvbW1vbi50b3BfbGV2ZWxfcGF0aCgpCiAgICAgaWYgaXNfdmFsaWRf
YnVpbGRfZGlyZWN0b3J5KGJ1aWxkX2Rpcik6CiAgICAgICAgIHJldHVybiBidWlsZF9kaXIKIAot
ICAgIGJ1aWxkX2RpciA9IHRvcF9sZXZlbF9wYXRoKCJXZWJLaXRCdWlsZCIpCisgICAgYnVpbGRf
ZGlyID0gamhidWlsZHJjX2NvbW1vbi50b3BfbGV2ZWxfcGF0aCgiV2ViS2l0QnVpbGQiKQogICAg
IGlmIGlzX3ZhbGlkX2J1aWxkX2RpcmVjdG9yeShidWlsZF9kaXIpOgogICAgICAgICByZXR1cm4g
YnVpbGRfZGlyCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL2d0ay9maW5kLW1ha2UtZGlzdC1lcnJvcnMg
Yi9Ub29scy9ndGsvZmluZC1tYWtlLWRpc3QtZXJyb3JzCmluZGV4IDg4MGM3ODAuLjM1ZDhhNzQg
MTAwNzU1Ci0tLSBhL1Rvb2xzL2d0ay9maW5kLW1ha2UtZGlzdC1lcnJvcnMKKysrIGIvVG9vbHMv
Z3RrL2ZpbmQtbWFrZS1kaXN0LWVycm9ycwpAQCAtMjAsNiArMjAsOSBAQCBpbXBvcnQgb3MKIGlt
cG9ydCBzdWJwcm9jZXNzCiBpbXBvcnQgc3lzCiAKK3N5cy5wYXRoLmluc2VydCgwLCBvcy5wYXRo
LmpvaW4ob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSwgIi4uL2poYnVpbGQiKSkKK2ltcG9ydCBq
aGJ1aWxkcmNfY29tbW9uCisKIGRlZiBpc19zb3VyY2VfZmlsZV9saXN0aW5nKGxpbmUpOgogICAg
IHJldHVybiBsaW5lLnN0cmlwKCkuc3RhcnRzd2l0aCgnU291cmNlJykKIApAQCAtODYsNyArODks
NyBAQCBkZWYgZ2V0X3VubGlzdGVkX2hlYWRlcnMobGlzdGVkX21ha2VmaWxlX2hlYWRlcnMpOgog
ZGVmIGdldF9taXNzaW5nX2hlYWRlcnMobGlzdGVkX21ha2VmaWxlX2hlYWRlcnMpOgogICAgIG1p
c3NpbmcgPSBzZXQoKQogICAgIGZvciBoZWFkZXIgaW4gbGlzdGVkX21ha2VmaWxlX2hlYWRlcnM6
Ci0gICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhjb21tb24udG9wX2xldmVsX3BhdGgoaGVh
ZGVyKSk6CisgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhqaGJ1aWxkcmNfY29tbW9uLnRv
cF9sZXZlbF9wYXRoKGhlYWRlcikpOgogICAgICAgICAgICAgbWlzc2luZy5hZGQoaGVhZGVyKQog
ICAgIHJldHVybiBtaXNzaW5nCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL2d0ay9nZW5lcmF0ZS1ndGtk
b2MgYi9Ub29scy9ndGsvZ2VuZXJhdGUtZ3RrZG9jCmluZGV4IGNlMjIwYTYuLjUzMzY5MGYgMTAw
NzU1Ci0tLSBhL1Rvb2xzL2d0ay9nZW5lcmF0ZS1ndGtkb2MKKysrIGIvVG9vbHMvZ3RrL2dlbmVy
YXRlLWd0a2RvYwpAQCAtMjIsNiArMjIsOSBAQCBpbXBvcnQgbG9nZ2luZwogaW1wb3J0IG9zLnBh
dGgKIGltcG9ydCBzeXMKIAorc3lzLnBhdGguaW5zZXJ0KDAsIG9zLnBhdGguam9pbihvcy5wYXRo
LmRpcm5hbWUoX19maWxlX18pLCAiLi4vamhidWlsZCIpKQoraW1wb3J0IGpoYnVpbGRyY19jb21t
b24KKwogZGVmIGNvbmZpZ3VyZV9sb2dnaW5nKCk6CiAgICAgbGV2ZWwgPSBsb2dnaW5nLkRFQlVH
IGlmICctdicgaW4gc3lzLmFyZ3YgZWxzZSBsb2dnaW5nLklORk8KICAgICBsb2dnZXIgPSBsb2dn
aW5nLmdldExvZ2dlcignZ3RrZG9jJykKQEAgLTc2LDggKzc5LDggQEAgZGVmIHdlYmtpdGRvbV9k
b2NzX2h0bWxfcGF0aCgpOgogICAgIHJldHVybiBjb21tb24uYnVpbGRfcGF0aCgnRG9jdW1lbnRh
dGlvbicsICd3ZWJraXRkb21ndGsnLCAnaHRtbCcpCiAKIGRlZiBnZXRfd2Via2l0Ml9vcHRpb25z
KCk6Ci0gICAgYXBpX3BhdGggPSBjb21tb24udG9wX2xldmVsX3BhdGgoJ1NvdXJjZScsICdXZWJL
aXQyJywgJ1VJUHJvY2VzcycsICdBUEknLCAnZ3RrJykKLSAgICBpbmplY3RlZF9idW5kbGVfYXBp
X3BhdGggPSBjb21tb24udG9wX2xldmVsX3BhdGgoJ1NvdXJjZScsICdXZWJLaXQyJywgJ1dlYlBy
b2Nlc3MnLCAnSW5qZWN0ZWRCdW5kbGUnLCAnQVBJJywgJ2d0aycpCisgICAgYXBpX3BhdGggPSBq
aGJ1aWxkcmNfY29tbW9uLnRvcF9sZXZlbF9wYXRoKCdTb3VyY2UnLCAnV2ViS2l0MicsICdVSVBy
b2Nlc3MnLCAnQVBJJywgJ2d0aycpCisgICAgaW5qZWN0ZWRfYnVuZGxlX2FwaV9wYXRoID0gamhi
dWlsZHJjX2NvbW1vbi50b3BfbGV2ZWxfcGF0aCgnU291cmNlJywgJ1dlYktpdDInLCAnV2ViUHJv
Y2VzcycsICdJbmplY3RlZEJ1bmRsZScsICdBUEknLCAnZ3RrJykKIAogICAgIGlmIGNvbW1vbi5p
c19jbWFrZV9idWlsZCgpOgogICAgICAgICBnZW5lcmF0ZWRfYXBpX3BhdGggPSBjb21tb24uYnVp
bGRfcGF0aCgnRGVyaXZlZFNvdXJjZXMnLCAnd2Via2l0Mmd0aycsICd3ZWJraXQyJykKQEAgLTEw
MSw3ICsxMDQsNyBAQCBkZWYgZ2V0X3dlYmtpdDJfb3B0aW9ucygpOgogICAgICAgICAnc291cmNl
X2RpcnMnIDogW3NyY19wYXRoKCksIGdlbmVyYXRlZF9hcGlfcGF0aCwgaW5qZWN0ZWRfYnVuZGxl
X2FwaV9wYXRoXSwKICAgICAgICAgJ2NmbGFncycgOgogICAgICAgICAgICAgIyBDb21tb24gcGF0
aHMKLSAgICAgICAgICAgICcgLUknICsgY29tbW9uLnRvcF9sZXZlbF9wYXRoKCdTb3VyY2UnKSAr
IFwKKyAgICAgICAgICAgICcgLUknICsgamhidWlsZHJjX2NvbW1vbi50b3BfbGV2ZWxfcGF0aCgn
U291cmNlJykgKyBcCiAgICAgICAgICAgICAnIC1JJyArIGFwaV9wYXRoICsgXAogICAgICAgICAg
ICAgIyBBdXRvdG9vbHMgcGF0aHMKICAgICAgICAgICAgICcgLUknICsgY29tbW9uLmJ1aWxkX3Bh
dGgoJ0Rlcml2ZWRTb3VyY2VzJywgJ3dlYmtpdDJndGsnLCAnaW5jbHVkZScpICsgXApAQCAtMTI3
LDcgKzEzMCw3IEBAIGRlZiBnZXRfd2Via2l0Ml9vcHRpb25zKCk6CiAKIGRlZiBnZXRfd2Via2l0
MV9vcHRpb25zKGd0a192ZXJzaW9uKToKICAgICBkZWYgc3JjX3BhdGgoKmFyZ3MpOgotICAgICAg
ICByZXR1cm4gY29tbW9uLnRvcF9sZXZlbF9wYXRoKCooKCdTb3VyY2UnLCAnV2ViS2l0JywgJ2d0
aycpICsgYXJncykpCisgICAgICAgIHJldHVybiBqaGJ1aWxkcmNfY29tbW9uLnRvcF9sZXZlbF9w
YXRoKCooKCdTb3VyY2UnLCAnV2ViS2l0JywgJ2d0aycpICsgYXJncykpCiAKICAgICBkZWYgd2Vi
a2l0dmVyc2lvbmhfcGF0aCgpOgogICAgICAgICBpZiBjb21tb24uaXNfY21ha2VfYnVpbGQoKToK
QEAgLTE1NSw4ICsxNTgsOCBAQCBkZWYgZ2V0X3dlYmtpdDFfb3B0aW9ucyhndGtfdmVyc2lvbik6
CiAgICAgICAgICdjZmxhZ3MnIDogJyAtSScgKyBjb21tb24uYnVpbGRfcGF0aCgnV2ViS2l0Jywg
J2d0aycpICsgXAogICAgICAgICAgICAgICAgICAgICcgLUknICsgY29tbW9uLmJ1aWxkX3BhdGgo
J0Rlcml2ZWRTb3VyY2VzJykgKyBcCiAgICAgICAgICAgICAgICAgICAgJyAtSScgKyBzcmNfcGF0
aCgpICsgXAotICAgICAgICAgICAgICAgICAgICcgLUknICsgY29tbW9uLnRvcF9sZXZlbF9wYXRo
KCdTb3VyY2UnKSArIFwKLSAgICAgICAgICAgICAgICAgICAnIC1JJyArIGNvbW1vbi50b3BfbGV2
ZWxfcGF0aCgnU291cmNlJywgJ0phdmFTY3JpcHRDb3JlJywgJ0ZvcndhcmRpbmdIZWFkZXJzJyks
CisgICAgICAgICAgICAgICAgICAgJyAtSScgKyBqaGJ1aWxkcmNfY29tbW9uLnRvcF9sZXZlbF9w
YXRoKCdTb3VyY2UnKSArIFwKKyAgICAgICAgICAgICAgICAgICAnIC1JJyArIGpoYnVpbGRyY19j
b21tb24udG9wX2xldmVsX3BhdGgoJ1NvdXJjZScsICdKYXZhU2NyaXB0Q29yZScsICdGb3J3YXJk
aW5nSGVhZGVycycpLAogICAgICAgICAnY3Jvc3NfcmVmZXJlbmNlX2RlcHMnIDogZ2V0X2d0a2Rv
Y19tb2R1bGVfcGF0aHMoeHJlZl9kZXBzKSArIFt3ZWJraXRkb21fZG9jc19odG1sX3BhdGgoKV0s
CiAgICAgICAgICdpZ25vcmVkX2ZpbGVzJzogZ2xvYi5nbG9iKHNyY19wYXRoKCd3ZWJraXQnLCAn
KnByaXZhdGUuKicpKSArIFwKICAgICAgICAgICAgICAgICAgICAgICAgICBnbG9iLmdsb2Ioc3Jj
X3BhdGgoJ3dlYmtpdCcsICd3ZWJraXRhdXRoZW50aWNhdGlvbmRpYWxvZy4qJykpICsgXApAQCAt
MTY4LDcgKzE3MSw3IEBAIGRlZiBnZXRfd2Via2l0ZG9tX29wdGlvbnMoKToKICAgICBkZWYgZGVy
aXZlZF9zb3VyY2VzX3BhdGgoKmFyZ3MpOgogICAgICAgICByZXR1cm4gY29tbW9uLmJ1aWxkX3Bh
dGgoKigoJ0Rlcml2ZWRTb3VyY2VzJywgJ3dlYmtpdGRvbScpICsgYXJncykpCiAgICAgZGVmIHNy
Y19wYXRoKCphcmdzKToKLSAgICAgICAgcmV0dXJuIGNvbW1vbi50b3BfbGV2ZWxfcGF0aCgqKCgn
U291cmNlJywgJ1dlYkNvcmUnLCAnYmluZGluZ3MnLCAnZ29iamVjdCcpICsgYXJncykpCisgICAg
ICAgIHJldHVybiBqaGJ1aWxkcmNfY29tbW9uLnRvcF9sZXZlbF9wYXRoKCooKCdTb3VyY2UnLCAn
V2ViQ29yZScsICdiaW5kaW5ncycsICdnb2JqZWN0JykgKyBhcmdzKSkKIAogICAgIHhyZWZfZGVw
cyA9IHsgJ2dsaWItMi4wJyA6IFsnZ2xpYicsICdnb2JqZWN0JywgJ2dpbyddIH0KIApAQCAtMTgx
LDcgKzE4NCw3IEBAIGRlZiBnZXRfd2Via2l0ZG9tX29wdGlvbnMoKToKICAgICAgICAgJ3NvdXJj
ZV9kaXJzJyA6IFtkZXJpdmVkX3NvdXJjZXNfcGF0aCgpXSwKICAgICAgICAgJ2NmbGFncycgOiAn
IC1JJyArIGRlcml2ZWRfc291cmNlc19wYXRoKCkgKyBcCiAgICAgICAgICAgICAgICAgICAgJyAt
SScgKyBzcmNfcGF0aCgpICsgXAotICAgICAgICAgICAgICAgICAgICcgLUknICsgY29tbW9uLnRv
cF9sZXZlbF9wYXRoKCdTb3VyY2UnKSwKKyAgICAgICAgICAgICAgICAgICAnIC1JJyArIGpoYnVp
bGRyY19jb21tb24udG9wX2xldmVsX3BhdGgoJ1NvdXJjZScpLAogICAgICAgICAnY3Jvc3NfcmVm
ZXJlbmNlX2RlcHMnIDogZ2V0X2d0a2RvY19tb2R1bGVfcGF0aHMoeHJlZl9kZXBzKSwKICAgICAg
ICAgJ2lnbm9yZWRfZmlsZXMnOiBnbG9iLmdsb2IoZGVyaXZlZF9zb3VyY2VzX3BhdGgoJypQcml2
YXRlLmgnKSkKICAgICB9KQpkaWZmIC0tZ2l0IGEvVG9vbHMvZ3RrL2dlbmVyYXRlLWluc3BlY3Rv
ci1ncmVzb3VyY2UtbWFuaWZlc3QucHkgYi9Ub29scy9ndGsvZ2VuZXJhdGUtaW5zcGVjdG9yLWdy
ZXNvdXJjZS1tYW5pZmVzdC5weQppbmRleCA1OGExZGYxLi4wYmQ2Mzk0IDEwMDc1NQotLS0gYS9U
b29scy9ndGsvZ2VuZXJhdGUtaW5zcGVjdG9yLWdyZXNvdXJjZS1tYW5pZmVzdC5weQorKysgYi9U
b29scy9ndGsvZ2VuZXJhdGUtaW5zcGVjdG9yLWdyZXNvdXJjZS1tYW5pZmVzdC5weQpAQCAtMjAs
NyArMjAsMTAgQEAgaW1wb3J0IGdsb2IKIGltcG9ydCBvcwogaW1wb3J0IHN5cwogCi1yZXNvdXJj
ZXNfcGF0aCA9IGNvbW1vbi50b3BfbGV2ZWxfcGF0aCgpICsgIi9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvIgorc3lzLnBhdGguaW5zZXJ0KDAsIG9zLnBhdGguam9pbihvcy5wYXRoLmRpcm5hbWUoX19m
aWxlX18pLCAiLi4vamhidWlsZCIpKQoraW1wb3J0IGpoYnVpbGRyY19jb21tb24KKworcmVzb3Vy
Y2VzX3BhdGggPSBqaGJ1aWxkcmNfY29tbW9uLnRvcF9sZXZlbF9wYXRoKCkgKyAiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS8iCiBpbnNwZWN0b3JfZmlsZXMgPSBcCiAgICAgZ2xvYi5nbG9iKHJlc291
cmNlc19wYXRoICsgJ1VzZXJJbnRlcmZhY2UvKi5odG1sJykgKyBcCiAgICAgZ2xvYi5nbG9iKHJl
c291cmNlc19wYXRoICsgJ1VzZXJJbnRlcmZhY2UvKi5qcycpICsgXApkaWZmIC0tZ2l0IGEvVG9v
bHMvZ3RrL2poYnVpbGRyYyBiL1Rvb2xzL2d0ay9qaGJ1aWxkcmMKaW5kZXggNjlmOTQ1Ny4uYWNl
YzY3NSAxMDA2NDQKLS0tIGEvVG9vbHMvZ3RrL2poYnVpbGRyYworKysgYi9Ub29scy9ndGsvamhi
dWlsZHJjCkBAIC0xNSwzNiArMTUsMTYgQEAKICMgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGli
cmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQogIyBGb3VuZGF0aW9uLCBJ
bmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0x
MzAxICBVU0EKIAotaW1wb3J0IG11bHRpcHJvY2Vzc2luZwogaW1wb3J0IHN5cwogCitzeXMucGF0
aC5pbnNlcnQoMCwgb3MucGF0aC5qb2luKG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXyksICIuLi9q
aGJ1aWxkIikgKQoraW1wb3J0IGpoYnVpbGRyY19jb21tb24KK2poYnVpbGRyY19jb21tb24uaW5p
dChnbG9iYWxzKCksICJndGsiKQorCiBfX2d0a190b29sc19kaXJlY3RvcnkgPSBvcy5wYXRoLmFi
c3BhdGgob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSkKIHN5cy5wYXRoID0gW19fZ3RrX3Rvb2xz
X2RpcmVjdG9yeV0gKyBzeXMucGF0aAogaW1wb3J0IGNvbW1vbgogCi1idWlsZF9wb2xpY3kgPSAn
dXBkYXRlZCcKLQotX19tb2R1bGVzZXRfZmlsZV91cmkgPSAnZmlsZTovLycgKyBvcy5wYXRoLmpv
aW4oX19ndGtfdG9vbHNfZGlyZWN0b3J5LCAnamhidWlsZC5tb2R1bGVzJykKLV9fZXh0cmFfbW9k
dWxlc2V0cyA9IG9zLmVudmlyb24uZ2V0KCJXRUJLSVRfRVhUUkFfTU9EVUxFU0VUUyIsICIiKS5z
cGxpdCgiLCIpCi1tb2R1bGVzZXQgPSBbIF9fbW9kdWxlc2V0X2ZpbGVfdXJpLCBdCi1pZiBfX2V4
dHJhX21vZHVsZXNldHMgIT0gWycnXToKLSAgICBtb2R1bGVzZXQuZXh0ZW5kKF9fZXh0cmFfbW9k
dWxlc2V0cykKLQotX19leHRyYV9tb2R1bGVzID0gb3MuZW52aXJvbi5nZXQoIldFQktJVF9FWFRS
QV9NT0RVTEVTIiwgIiIpLnNwbGl0KCIsIikKLW1vZHVsZXMgPSBbICd3ZWJraXRndGstdGVzdGlu
Zy1kZXBlbmRlbmNpZXMnLCBdCi1pZiBfX2V4dHJhX21vZHVsZXMgIT0gWycnXToKLSAgICBtb2R1
bGVzLmV4dGVuZChfX2V4dHJhX21vZHVsZXMpCi0KLWlmIG9zLmVudmlyb24uaGFzX2tleSgnV0VC
S0lUX09VVFBVVERJUicpOgotICAgIGNoZWNrb3V0cm9vdCA9IG9zLnBhdGguYWJzcGF0aChvcy5w
YXRoLmpvaW4ob3MuZW52aXJvblsnV0VCS0lUX09VVFBVVERJUiddLCAnRGVwZW5kZW5jaWVzJywg
J1NvdXJjZScpKQotICAgIHByZWZpeCA9IG9zLnBhdGguYWJzcGF0aChvcy5wYXRoLmpvaW4ob3Mu
ZW52aXJvblsnV0VCS0lUX09VVFBVVERJUiddLCAnRGVwZW5kZW5jaWVzJywgJ1Jvb3QnKSkKLWVs
c2U6Ci0gICAgY2hlY2tvdXRyb290ID0gb3MucGF0aC5hYnNwYXRoKGNvbW1vbi50b3BfbGV2ZWxf
cGF0aCgnV2ViS2l0QnVpbGQnLCdEZXBlbmRlbmNpZXMnLCAnU291cmNlJykpCi0gICAgcHJlZml4
ID0gb3MucGF0aC5hYnNwYXRoKGNvbW1vbi50b3BfbGV2ZWxfcGF0aCgnV2ViS2l0QnVpbGQnLCdE
ZXBlbmRlbmNpZXMnLCAnUm9vdCcpKQotCi1ub25vdGlmeSA9IFRydWUKLW5vdHJheWljb24gPSBU
cnVlCi0KIGlmICdOVU1CRVJfT0ZfUFJPQ0VTU09SUycgaW4gb3MuZW52aXJvbjoKICAgICBqb2Jz
ID0gb3MuZW52aXJvblsnTlVNQkVSX09GX1BST0NFU1NPUlMnXQogCmRpZmYgLS1naXQgYS9Ub29s
cy9qaGJ1aWxkL2poYnVpbGRyY19jb21tb24ucHkgYi9Ub29scy9qaGJ1aWxkL2poYnVpbGRyY19j
b21tb24ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWYwYzNlYwotLS0g
L2Rldi9udWxsCisrKyBiL1Rvb2xzL2poYnVpbGQvamhidWlsZHJjX2NvbW1vbi5weQpAQCAtMCww
ICsxLDY0IEBACisjIS91c3IvYmluL2VudiBweXRob24KKyMgQ29weXJpZ2h0IChDKSAyMDExIEln
YWxpYSBTLkwuCisjIENvcHlyaWdodCAoQykgMjAxMiBJbnRlbCBDb3Jwb3JhdGlvbgorIworIyBU
aGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k
L29yCisjIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJh
bCBQdWJsaWMKKyMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbjsgZWl0aGVyCisjIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIg
b3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyMKKyMgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1
dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisjIGJ1dCBXSVRIT1VUIEFO
WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisjIE1FUkNI
QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUg
R05VCisjIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisj
CisjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2Vu
ZXJhbCBQdWJsaWMKKyMgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3
cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorIyBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xp
biBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxICBVU0EKKworaW1w
b3J0IG11bHRpcHJvY2Vzc2luZworaW1wb3J0IHN5cworaW1wb3J0IG9zCisKKworc2NyaXB0X2Rp
ciA9IE5vbmUKKworCitkZWYgc2NyaXB0X3BhdGgoKmFyZ3MpOgorICAgIGdsb2JhbCBzY3JpcHRf
ZGlyCisgICAgaWYgbm90IHNjcmlwdF9kaXI6CisgICAgICAgIHNjcmlwdF9kaXIgPSBvcy5wYXRo
LmpvaW4ob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSwgJy4uJywgJ1NjcmlwdHMnKQorICAgIHJl
dHVybiBvcy5wYXRoLmpvaW4oKihzY3JpcHRfZGlyLCkgKyBhcmdzKQorCisKK2RlZiB0b3BfbGV2
ZWxfcGF0aCgqYXJncyk6CisgICAgcmV0dXJuIG9zLnBhdGguam9pbigqKChvcy5wYXRoLmpvaW4o
b3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSwgJy4uJywgJy4uJyksKSArIGFyZ3MpKQorCisKK2Rl
ZiBpbml0KGpoYnVpbGRyY19nbG9iYWxzLCBwbGF0Zm9ybSk6CisKKyAgICBfX3Rvb2xzX2RpcmVj
dG9yeSA9IG9zLnBhdGguam9pbihvcy5wYXRoLmRpcm5hbWUoX19maWxlX18pLCAiLi4vIiwgcGxh
dGZvcm0pCisgICAgc3lzLnBhdGguaW5zZXJ0KDAsIF9fdG9vbHNfZGlyZWN0b3J5KQorCisgICAg
amhidWlsZHJjX2dsb2JhbHNbImJ1aWxkX3BvbGljeSJdID0gJ3VwZGF0ZWQnCisKKyAgICBfX21v
ZHVsZXNldF9maWxlX3VyaSA9ICdmaWxlOi8vJyArIG9zLnBhdGguam9pbihfX3Rvb2xzX2RpcmVj
dG9yeSwgJ2poYnVpbGQubW9kdWxlcycpCisgICAgX19leHRyYV9tb2R1bGVzZXRzID0gb3MuZW52
aXJvbi5nZXQoIldFQktJVF9FWFRSQV9NT0RVTEVTRVRTIiwgIiIpLnNwbGl0KCIsIikKKyAgICBq
aGJ1aWxkcmNfZ2xvYmFsc1sibW9kdWxlc2V0Il0gPSBbX19tb2R1bGVzZXRfZmlsZV91cmksIF0K
KyAgICBpZiBfX2V4dHJhX21vZHVsZXNldHMgIT0gWycnXToKKyAgICAgICAgamhidWlsZHJjX2ds
b2JhbHNbIm1vZHVsZXNldCJdLmV4dGVuZChfX2V4dHJhX21vZHVsZXNldHMpCisKKyAgICBfX2V4
dHJhX21vZHVsZXMgPSBvcy5lbnZpcm9uLmdldCgiV0VCS0lUX0VYVFJBX01PRFVMRVMiLCAiIiku
c3BsaXQoIiwiKQorICAgIGpoYnVpbGRyY19nbG9iYWxzWyJtb2R1bGVzIl0gPSBbJ3dlYmtpdCcg
KyBwbGF0Zm9ybSArICctdGVzdGluZy1kZXBlbmRlbmNpZXMnLCBdCisgICAgaWYgX19leHRyYV9t
b2R1bGVzICE9IFsnJ106CisgICAgICAgIGpoYnVpbGRyY19nbG9iYWxzWyJtb2R1bGVzIl0uZXh0
ZW5kKF9fZXh0cmFfbW9kdWxlcykKKworICAgIGlmICdXRUJLSVRfT1VUUFVURElSJyBpbiBvcy5l
bnZpcm9uOgorICAgICAgICBqaGJ1aWxkcmNfZ2xvYmFsc1siY2hlY2tvdXRyb290Il0gPSBjaGVj
a291dHJvb3QgPSBvcy5wYXRoLmFic3BhdGgob3MucGF0aC5qb2luKG9zLmVudmlyb25bJ1dFQktJ
VF9PVVRQVVRESVInXSwgJ0RlcGVuZGVuY2llcycsICdTb3VyY2UnKSkKKyAgICAgICAgamhidWls
ZHJjX2dsb2JhbHNbInByZWZpeCJdID0gb3MucGF0aC5hYnNwYXRoKG9zLnBhdGguam9pbihvcy5l
bnZpcm9uWydXRUJLSVRfT1VUUFVURElSJ10sICdEZXBlbmRlbmNpZXMnLCAnUm9vdCcpKQorICAg
IGVsc2U6CisgICAgICAgIGpoYnVpbGRyY19nbG9iYWxzWyJjaGVja291dHJvb3QiXSA9IGNoZWNr
b3V0cm9vdCA9IG9zLnBhdGguYWJzcGF0aCh0b3BfbGV2ZWxfcGF0aCgnV2ViS2l0QnVpbGQnLCAn
RGVwZW5kZW5jaWVzJywgJ1NvdXJjZScpKQorICAgICAgICBqaGJ1aWxkcmNfZ2xvYmFsc1sicHJl
Zml4Il0gPSBvcy5wYXRoLmFic3BhdGgodG9wX2xldmVsX3BhdGgoJ1dlYktpdEJ1aWxkJywgJ0Rl
cGVuZGVuY2llcycsICdSb290JykpCisKKyAgICBqaGJ1aWxkcmNfZ2xvYmFsc1sibm9ub3RpZnki
XSA9IFRydWUKKyAgICBqaGJ1aWxkcmNfZ2xvYmFsc1sibm90cmF5aWNvbiJdID0gVHJ1ZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>225054</attachid>
            <date>2014-02-24 05:09:02 -0800</date>
            <delta_ts>2014-02-24 06:01:23 -0800</delta_ts>
            <desc>Patch v12</desc>
            <filename>extract_v6.patch</filename>
            <type>text/plain</type>
            <size>18008</size>
            <attacher name="Tibor Mészáros">mtiborinf</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCAzMmZj
NDIyLi4xMWYzYTZhIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hh
bmdlTG9nCkBAIC0xICsxLDMzIEBACisyMDE0LTAyLTI0ICBUaWJvciBNZXN6YXJvcyAgPHRtZXN6
YXJvcy51LXN6ZWdlZEBwYXJ0bmVyLnNhbXN1bmcuY29tPgorCisgICAgICAgIEV4dHJhY3QgY29t
bW9uIHBhcnRzIGZyb20gamhidWlsZHJjIGZpbGVzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI1OTg2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgQ28tYXV0aG9yZWQgd2l0aCBQZXRlciBTemFua2EgIDxo
ODY4MDY0QHN0dWQudS1zemVnZWQuaHU+LgorCisgICAgICAgICogU2NyaXB0cy9ydW4tZ3RrLXRl
c3RzOgorICAgICAgICAoVGVzdFJ1bm5lci5fc2V0dXBfdGVzdGluZ19lbnZpcm9ubWVudCk6Cisg
ICAgICAgICogZWZsL2NvbW1vbi5weTogUmVtb3ZlZC4KKyAgICAgICAgKiBlZmwvamhidWlsZHJj
OgorICAgICAgICAqIGd0ay9jaGVjay1nZG9tLXN5bWJvbHM6CisgICAgICAgICogZ3RrL2NvbW1v
bi5weToKKyAgICAgICAgKGJpbmFyeV9idWlsZF9wYXRoKToKKyAgICAgICAgKGdldF9idWlsZF9w
YXRoKToKKyAgICAgICAgKiBndGsvZmluZC1tYWtlLWRpc3QtZXJyb3JzOgorICAgICAgICAoZ2V0
X21pc3NpbmdfaGVhZGVycyk6CisgICAgICAgICogZ3RrL2dlbmVyYXRlLWd0a2RvYzoKKyAgICAg
ICAgKGdldF93ZWJraXQyX29wdGlvbnMpOgorICAgICAgICAoZ2V0X3dlYmtpdDFfb3B0aW9ucy5z
cmNfcGF0aCk6CisgICAgICAgIChnZXRfd2Via2l0MV9vcHRpb25zKToKKyAgICAgICAgKGdldF93
ZWJraXRkb21fb3B0aW9ucy5zcmNfcGF0aCk6CisgICAgICAgIChnZXRfd2Via2l0ZG9tX29wdGlv
bnMpOgorICAgICAgICAqIGd0ay9nZW5lcmF0ZS1pbnNwZWN0b3ItZ3Jlc291cmNlLW1hbmlmZXN0
LnB5OgorICAgICAgICAqIGd0ay9qaGJ1aWxkcmM6CisgICAgICAgICogamhidWlsZC9qaGJ1aWxk
cmNfY29tbW9uLnB5OiBBZGRlZC4KKyAgICAgICAgKHNjcmlwdF9wYXRoKToKKyAgICAgICAgKHRv
cF9sZXZlbF9wYXRoKToKKyAgICAgICAgKGluaXQpOgorCiA9PSBSb2xsZWQgb3ZlciB0byBDaGFu
Z2VMb2ctMjAxNC0wMi0yMCA9PQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy9ydW4tZ3RrLXRl
c3RzIGIvVG9vbHMvU2NyaXB0cy9ydW4tZ3RrLXRlc3RzCmluZGV4IGU5ODA4NjAuLjRiYjQ2M2Mg
MTAwNzU1Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvcnVuLWd0ay10ZXN0cworKysgYi9Ub29scy9TY3Jp
cHRzL3J1bi1ndGstdGVzdHMKQEAgLTMxLDYgKzMxLDkgQEAgc3lzLnBhdGguYXBwZW5kKG9zLnBh
dGguam9pbih0b3BfbGV2ZWxfZGlyZWN0b3J5LCAiVG9vbHMiLCAiZ3RrIikpCiBpbXBvcnQgY29t
bW9uCiBpbXBvcnQgamhidWlsZHV0aWxzCiAKK3N5cy5wYXRoLmluc2VydCgwLCBvcy5wYXRoLmpv
aW4ob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSwgIi4uL2poYnVpbGQiKSkKK2ltcG9ydCBqaGJ1
aWxkcmNfY29tbW9uCisKIGNsYXNzIFNraXBwZWRUZXN0OgogICAgIEVOVElSRV9TVUlURSA9IE5v
bmUKIApAQCAtMTk1LDcgKzE5OCw3IEBAIGNsYXNzIFRlc3RSdW5uZXI6CiAgICAgZGVmIF9zZXR1
cF90ZXN0aW5nX2Vudmlyb25tZW50KHNlbGYpOgogICAgICAgICBzZWxmLl90ZXN0X2VudiA9IG9z
LmVudmlyb24KICAgICAgICAgc2VsZi5fdGVzdF9lbnZbJ0dTRVRUSU5HU19CQUNLRU5EJ10gPSAn
bWVtb3J5JwotICAgICAgICBzZWxmLl90ZXN0X2VudlsiVEVTVF9XRUJLSVRfQVBJX1dFQktJVDJf
UkVTT1VSQ0VTX1BBVEgiXSA9IGNvbW1vbi50b3BfbGV2ZWxfcGF0aCgiVG9vbHMiLCAiVGVzdFdl
YktpdEFQSSIsICJUZXN0cyIsICJXZWJLaXQyIikKKyAgICAgICAgc2VsZi5fdGVzdF9lbnZbIlRF
U1RfV0VCS0lUX0FQSV9XRUJLSVQyX1JFU09VUkNFU19QQVRIIl0gPSBqaGJ1aWxkcmNfY29tbW9u
LnRvcF9sZXZlbF9wYXRoKCJUb29scyIsICJUZXN0V2ViS2l0QVBJIiwgIlRlc3RzIiwgIldlYktp
dDIiKQogICAgICAgICBzZWxmLl90ZXN0X2VudlsiVEVTVF9XRUJLSVRfQVBJX1dFQktJVDJfSU5K
RUNURURfQlVORExFX1BBVEgiXSA9IGNvbW1vbi50ZXN0c19saWJyYXJ5X2J1aWxkX3BhdGgoKQog
ICAgICAgICBzZWxmLl90ZXN0X2VudlsiV0VCS0lUX0VYRUNfUEFUSCJdID0gc2VsZi5fcHJvZ3Jh
bXNfcGF0aAogCmRpZmYgLS1naXQgYS9Ub29scy9lZmwvY29tbW9uLnB5IGIvVG9vbHMvZWZsL2Nv
bW1vbi5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzc2NTdiMy4uMDAwMDAwMAot
LS0gYS9Ub29scy9lZmwvY29tbW9uLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMzEgKzAsMCBAQAot
IyEvdXNyL2Jpbi9lbnYgcHl0aG9uCi0jIENvcHlyaWdodCAoQykgMjAxMSBJZ2FsaWEgUy5MLgot
IwotIyBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg
aXQgYW5kL29yCi0jIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIg
R2VuZXJhbCBQdWJsaWMKLSMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbjsgZWl0aGVyCi0jIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0
IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSMKLSMgVGhpcyBsaWJyYXJ5IGlzIGRp
c3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0jIGJ1dCBXSVRI
T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0j
IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl
ZSB0aGUgR05VCi0jIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp
bHMuCi0jCi0jIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNz
ZXIgR2VuZXJhbCBQdWJsaWMKLSMgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYg
bm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotIyBGb3VuZGF0aW9uLCBJbmMuLCA1MSBG
cmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxICBVU0EK
LQotaW1wb3J0IG9zCi0KLXNjcmlwdF9kaXIgPSBOb25lCi0KLQotZGVmIHNjcmlwdF9wYXRoKCph
cmdzKToKLSAgICBnbG9iYWwgc2NyaXB0X2RpcgotICAgIGlmIG5vdCBzY3JpcHRfZGlyOgotICAg
ICAgICBzY3JpcHRfZGlyID0gb3MucGF0aC5qb2luKG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXyks
ICcuLicsICdTY3JpcHRzJykKLSAgICByZXR1cm4gb3MucGF0aC5qb2luKCooc2NyaXB0X2Rpciwp
ICsgYXJncykKLQotCi1kZWYgdG9wX2xldmVsX3BhdGgoKmFyZ3MpOgotICAgIHJldHVybiBvcy5w
YXRoLmpvaW4oKigoc2NyaXB0X3BhdGgoJy4uJywgJy4uJyksKSArIGFyZ3MpKQpkaWZmIC0tZ2l0
IGEvVG9vbHMvZWZsL2poYnVpbGRyYyBiL1Rvb2xzL2VmbC9qaGJ1aWxkcmMKaW5kZXggNzdkYWFl
OS4uYzEyOTU3ZCAxMDA2NDQKLS0tIGEvVG9vbHMvZWZsL2poYnVpbGRyYworKysgYi9Ub29scy9l
ZmwvamhidWlsZHJjCkBAIC0xNiwzNyArMTYsMTEgQEAKICMgTGljZW5zZSBhbG9uZyB3aXRoIHRo
aXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQogIyBGb3VuZGF0
aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAw
MjExMC0xMzAxICBVU0EKIAotaW1wb3J0IG11bHRpcHJvY2Vzc2luZwogaW1wb3J0IHN5cwogCi1f
X2VmbF90b29sc19kaXJlY3RvcnkgPSBvcy5wYXRoLmFic3BhdGgob3MucGF0aC5kaXJuYW1lKF9f
ZmlsZV9fKSkKLXN5cy5wYXRoID0gW19fZWZsX3Rvb2xzX2RpcmVjdG9yeV0gKyBzeXMucGF0aAot
aW1wb3J0IGNvbW1vbgotCi1idWlsZF9wb2xpY3kgPSAndXBkYXRlZCcKLQotIyBGSVhNRTogbW92
ZSBzaGFyZWQgcGFydHMgaW50byAuLi9qaGJ1aWxkIGZvbGRlci4KLQotX19tb2R1bGVzZXRfZmls
ZV91cmkgPSAnZmlsZTovLycgKyBvcy5wYXRoLmpvaW4oX19lZmxfdG9vbHNfZGlyZWN0b3J5LCAn
amhidWlsZC5tb2R1bGVzJykKLV9fZXh0cmFfbW9kdWxlc2V0cyA9IG9zLmVudmlyb24uZ2V0KCJX
RUJLSVRfRVhUUkFfTU9EVUxFU0VUUyIsICIiKS5zcGxpdCgiLCIpCi1tb2R1bGVzZXQgPSBbIF9f
bW9kdWxlc2V0X2ZpbGVfdXJpLCBdCi1pZiBfX2V4dHJhX21vZHVsZXNldHMgIT0gWycnXToKLSAg
ICBtb2R1bGVzZXQuZXh0ZW5kKF9fZXh0cmFfbW9kdWxlc2V0cykKLQotX19leHRyYV9tb2R1bGVz
ID0gb3MuZW52aXJvbi5nZXQoIldFQktJVF9FWFRSQV9NT0RVTEVTIiwgIiIpLnNwbGl0KCIsIikK
LW1vZHVsZXMgPSBbICd3ZWJraXRlZmwtdGVzdGluZy1kZXBlbmRlbmNpZXMnLCBdCi1pZiBfX2V4
dHJhX21vZHVsZXMgIT0gWycnXToKLSAgICBtb2R1bGVzLmV4dGVuZChfX2V4dHJhX21vZHVsZXMp
Ci0KLWlmIG9zLmVudmlyb24uaGFzX2tleSgnV0VCS0lUX09VVFBVVERJUicpOgotICAgIGNoZWNr
b3V0cm9vdCA9IG9zLnBhdGguYWJzcGF0aChvcy5wYXRoLmpvaW4ob3MuZW52aXJvblsnV0VCS0lU
X09VVFBVVERJUiddLCAnRGVwZW5kZW5jaWVzJywgJ1NvdXJjZScpKQotICAgIHByZWZpeCA9IG9z
LnBhdGguYWJzcGF0aChvcy5wYXRoLmpvaW4ob3MuZW52aXJvblsnV0VCS0lUX09VVFBVVERJUidd
LCAnRGVwZW5kZW5jaWVzJywgJ1Jvb3QnKSkKLWVsc2U6Ci0gICAgY2hlY2tvdXRyb290ID0gb3Mu
cGF0aC5hYnNwYXRoKGNvbW1vbi50b3BfbGV2ZWxfcGF0aCgnV2ViS2l0QnVpbGQnLCdEZXBlbmRl
bmNpZXMnLCAnU291cmNlJykpCi0gICAgcHJlZml4ID0gb3MucGF0aC5hYnNwYXRoKGNvbW1vbi50
b3BfbGV2ZWxfcGF0aCgnV2ViS2l0QnVpbGQnLCdEZXBlbmRlbmNpZXMnLCAnUm9vdCcpKQotCi1u
b25vdGlmeSA9IFRydWUKLW5vdHJheWljb24gPSBUcnVlCitzeXMucGF0aC5pbnNlcnQoMCwgb3Mu
cGF0aC5qb2luKG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXyksICIuLi9qaGJ1aWxkIikgKQoraW1w
b3J0IGpoYnVpbGRyY19jb21tb24KK2poYnVpbGRyY19jb21tb24uaW5pdChnbG9iYWxzKCksICJl
ZmwiKQogCiBpZiAnTlVNQkVSX09GX1BST0NFU1NPUlMnIGluIG9zLmVudmlyb246CiAgICAgam9i
cyA9IG9zLmVudmlyb25bJ05VTUJFUl9PRl9QUk9DRVNTT1JTJ10KZGlmZiAtLWdpdCBhL1Rvb2xz
L2d0ay9jaGVjay1nZG9tLXN5bWJvbHMgYi9Ub29scy9ndGsvY2hlY2stZ2RvbS1zeW1ib2xzCmlu
ZGV4IGYxMTA4YjcuLmI3YTNhNGMgMTAwNzU1Ci0tLSBhL1Rvb2xzL2d0ay9jaGVjay1nZG9tLXN5
bWJvbHMKKysrIGIvVG9vbHMvZ3RrL2NoZWNrLWdkb20tc3ltYm9scwpAQCAtMjIsNiArMjIsOCBA
QCBpbXBvcnQgc3VicHJvY2VzcwogaW1wb3J0IHN5cwogaW1wb3J0IHRlbXBmaWxlCiAKK3N5cy5w
YXRoLmluc2VydCgwLCBvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSwgIi4u
L2poYnVpbGQiKSkKK2ltcG9ydCBqaGJ1aWxkcmNfY29tbW9uCiAKIGRlZiBzaG91bGRfdXBkYXRl
X3N5bWJvbHNfZmlsZShuZXcsIG9sZCk6CiAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKG9sZCk6
CkBAIC01MCw3ICs1Miw3IEBAIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CiAgICAgICAgICAg
ICAgICAgdG1wLndyaXRlKGZpbGVfaGFuZGxlLnJlYWQoKSkKICAgICAgICAgdG1wLmZsdXNoKCkK
IAotICAgICAgICBnZG9tX3NvdXJjZV9wYXRoID0gY29tbW9uLnRvcF9sZXZlbF9wYXRoKCdTb3Vy
Y2UnLCAnV2ViQ29yZScsICdiaW5kaW5ncycpCisgICAgICAgIGdkb21fc291cmNlX3BhdGggPSBq
aGJ1aWxkcmNfY29tbW9uLnRvcF9sZXZlbF9wYXRoKCdTb3VyY2UnLCAnV2ViQ29yZScsICdiaW5k
aW5ncycpCiAgICAgICAgIGFwaV9icmVha190ZXN0X3BhdGggPSBvcy5wYXRoLmpvaW4oZ2RvbV9z
b3VyY2VfcGF0aCwgJ3NjcmlwdHMnLCAnZ29iamVjdC1ydW4tYXBpLWJyZWFrLXRlc3QnKQogICAg
ICAgICBzdWJwcm9jZXNzLmNhbGwoW3N5cy5leGVjdXRhYmxlLCBhcGlfYnJlYWtfdGVzdF9wYXRo
LCBvcy5wYXRoLmpvaW4oZ2RvbV9zb3VyY2VfcGF0aCwgJ2dvYmplY3QnLCAgJ3dlYmtpdGRvbS5z
eW1ib2xzJyksIHRtcC5uYW1lXSkKIApkaWZmIC0tZ2l0IGEvVG9vbHMvZ3RrL2NvbW1vbi5weSBi
L1Rvb2xzL2d0ay9jb21tb24ucHkKaW5kZXggMDJkYjkzMi4uNmU1MWFmNSAxMDA2NDQKLS0tIGEv
VG9vbHMvZ3RrL2NvbW1vbi5weQorKysgYi9Ub29scy9ndGsvY29tbW9uLnB5CkBAIC0yMSw3ICsy
MSw5IEBAIGltcG9ydCBzZWxlY3QKIGltcG9ydCBzdWJwcm9jZXNzCiBpbXBvcnQgc3lzCiAKLXNj
cmlwdF9kaXIgPSBOb25lCitzeXMucGF0aC5pbnNlcnQoMCwgb3MucGF0aC5qb2luKG9zLnBhdGgu
ZGlybmFtZShfX2ZpbGVfXyksICIuLi9qaGJ1aWxkIikpCitpbXBvcnQgamhidWlsZHJjX2NvbW1v
bgorCiBidWlsZF9kaXIgPSBOb25lCiBsaWJyYXJ5X2J1aWxkX2RpciA9IE5vbmUKIHRlc3RzX2xp
YnJhcnlfYnVpbGRfZGlyID0gTm9uZQpAQCAtNzEsMTcgKzczLDYgQEAgZGVmIGJpbmFyeV9idWls
ZF9wYXRoKCphcmdzKToKICAgICByZXR1cm4gbGlicmFyeV9idWlsZF9kaXIKIAogCi1kZWYgc2Ny
aXB0X3BhdGgoKmFyZ3MpOgotICAgIGdsb2JhbCBzY3JpcHRfZGlyCi0gICAgaWYgbm90IHNjcmlw
dF9kaXI6Ci0gICAgICAgIHNjcmlwdF9kaXIgPSBvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1l
KF9fZmlsZV9fKSwgJy4uJywgJ1NjcmlwdHMnKQotICAgIHJldHVybiBvcy5wYXRoLmpvaW4oKihz
Y3JpcHRfZGlyLCkgKyBhcmdzKQotCi0KLWRlZiB0b3BfbGV2ZWxfcGF0aCgqYXJncyk6Ci0gICAg
cmV0dXJuIG9zLnBhdGguam9pbigqKChvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1lKF9fZmls
ZV9fKSwgJy4uJywgJy4uJyksKSArIGFyZ3MpKQotCi0KIGRlZiBnZXRfYnVpbGRfcGF0aChmYXRh
bD1UcnVlKToKICAgICBnbG9iYWwgYnVpbGRfZGlyCiAgICAgaWYgYnVpbGRfZGlyOgpAQCAtMTA5
LDIwICsxMDAsMjAgQEAgZGVmIGdldF9idWlsZF9wYXRoKGZhdGFsPVRydWUpOgogCiAgICAgZ2xv
YmFsIGJ1aWxkX3R5cGVzCiAgICAgZm9yIGJ1aWxkX3R5cGUgaW4gYnVpbGRfdHlwZXM6Ci0gICAg
ICAgIGJ1aWxkX2RpciA9IHRvcF9sZXZlbF9wYXRoKCdXZWJLaXRCdWlsZCcsIGJ1aWxkX3R5cGUp
CisgICAgICAgIGJ1aWxkX2RpciA9IGpoYnVpbGRyY19jb21tb24udG9wX2xldmVsX3BhdGgoJ1dl
YktpdEJ1aWxkJywgYnVpbGRfdHlwZSkKICAgICAgICAgaWYgaXNfdmFsaWRfYnVpbGRfZGlyZWN0
b3J5KGJ1aWxkX2Rpcik6CiAgICAgICAgICAgICByZXR1cm4gYnVpbGRfZGlyCiAKICAgICAjIGRp
c3RjaGVjayBidWlsZHMgaW4gYSBkaXJlY3RvcnkgbmFtZWQgX2J1aWxkIGluIHRoZSB0b3AtbGV2
ZWwgcGF0aC4KLSAgICBidWlsZF9kaXIgPSB0b3BfbGV2ZWxfcGF0aCgiX2J1aWxkIikKKyAgICBi
dWlsZF9kaXIgPSBqaGJ1aWxkcmNfY29tbW9uLnRvcF9sZXZlbF9wYXRoKCJfYnVpbGQiKQogICAg
IGlmIGlzX3ZhbGlkX2J1aWxkX2RpcmVjdG9yeShidWlsZF9kaXIpOgogICAgICAgICByZXR1cm4g
YnVpbGRfZGlyCiAKLSAgICBidWlsZF9kaXIgPSB0b3BfbGV2ZWxfcGF0aCgpCisgICAgYnVpbGRf
ZGlyID0gamhidWlsZHJjX2NvbW1vbi50b3BfbGV2ZWxfcGF0aCgpCiAgICAgaWYgaXNfdmFsaWRf
YnVpbGRfZGlyZWN0b3J5KGJ1aWxkX2Rpcik6CiAgICAgICAgIHJldHVybiBidWlsZF9kaXIKIAot
ICAgIGJ1aWxkX2RpciA9IHRvcF9sZXZlbF9wYXRoKCJXZWJLaXRCdWlsZCIpCisgICAgYnVpbGRf
ZGlyID0gamhidWlsZHJjX2NvbW1vbi50b3BfbGV2ZWxfcGF0aCgiV2ViS2l0QnVpbGQiKQogICAg
IGlmIGlzX3ZhbGlkX2J1aWxkX2RpcmVjdG9yeShidWlsZF9kaXIpOgogICAgICAgICByZXR1cm4g
YnVpbGRfZGlyCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL2d0ay9maW5kLW1ha2UtZGlzdC1lcnJvcnMg
Yi9Ub29scy9ndGsvZmluZC1tYWtlLWRpc3QtZXJyb3JzCmluZGV4IDg4MGM3ODAuLjM1ZDhhNzQg
MTAwNzU1Ci0tLSBhL1Rvb2xzL2d0ay9maW5kLW1ha2UtZGlzdC1lcnJvcnMKKysrIGIvVG9vbHMv
Z3RrL2ZpbmQtbWFrZS1kaXN0LWVycm9ycwpAQCAtMjAsNiArMjAsOSBAQCBpbXBvcnQgb3MKIGlt
cG9ydCBzdWJwcm9jZXNzCiBpbXBvcnQgc3lzCiAKK3N5cy5wYXRoLmluc2VydCgwLCBvcy5wYXRo
LmpvaW4ob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSwgIi4uL2poYnVpbGQiKSkKK2ltcG9ydCBq
aGJ1aWxkcmNfY29tbW9uCisKIGRlZiBpc19zb3VyY2VfZmlsZV9saXN0aW5nKGxpbmUpOgogICAg
IHJldHVybiBsaW5lLnN0cmlwKCkuc3RhcnRzd2l0aCgnU291cmNlJykKIApAQCAtODYsNyArODks
NyBAQCBkZWYgZ2V0X3VubGlzdGVkX2hlYWRlcnMobGlzdGVkX21ha2VmaWxlX2hlYWRlcnMpOgog
ZGVmIGdldF9taXNzaW5nX2hlYWRlcnMobGlzdGVkX21ha2VmaWxlX2hlYWRlcnMpOgogICAgIG1p
c3NpbmcgPSBzZXQoKQogICAgIGZvciBoZWFkZXIgaW4gbGlzdGVkX21ha2VmaWxlX2hlYWRlcnM6
Ci0gICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhjb21tb24udG9wX2xldmVsX3BhdGgoaGVh
ZGVyKSk6CisgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhqaGJ1aWxkcmNfY29tbW9uLnRv
cF9sZXZlbF9wYXRoKGhlYWRlcikpOgogICAgICAgICAgICAgbWlzc2luZy5hZGQoaGVhZGVyKQog
ICAgIHJldHVybiBtaXNzaW5nCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL2d0ay9nZW5lcmF0ZS1ndGtk
b2MgYi9Ub29scy9ndGsvZ2VuZXJhdGUtZ3RrZG9jCmluZGV4IGNlMjIwYTYuLjUzMzY5MGYgMTAw
NzU1Ci0tLSBhL1Rvb2xzL2d0ay9nZW5lcmF0ZS1ndGtkb2MKKysrIGIvVG9vbHMvZ3RrL2dlbmVy
YXRlLWd0a2RvYwpAQCAtMjIsNiArMjIsOSBAQCBpbXBvcnQgbG9nZ2luZwogaW1wb3J0IG9zLnBh
dGgKIGltcG9ydCBzeXMKIAorc3lzLnBhdGguaW5zZXJ0KDAsIG9zLnBhdGguam9pbihvcy5wYXRo
LmRpcm5hbWUoX19maWxlX18pLCAiLi4vamhidWlsZCIpKQoraW1wb3J0IGpoYnVpbGRyY19jb21t
b24KKwogZGVmIGNvbmZpZ3VyZV9sb2dnaW5nKCk6CiAgICAgbGV2ZWwgPSBsb2dnaW5nLkRFQlVH
IGlmICctdicgaW4gc3lzLmFyZ3YgZWxzZSBsb2dnaW5nLklORk8KICAgICBsb2dnZXIgPSBsb2dn
aW5nLmdldExvZ2dlcignZ3RrZG9jJykKQEAgLTc2LDggKzc5LDggQEAgZGVmIHdlYmtpdGRvbV9k
b2NzX2h0bWxfcGF0aCgpOgogICAgIHJldHVybiBjb21tb24uYnVpbGRfcGF0aCgnRG9jdW1lbnRh
dGlvbicsICd3ZWJraXRkb21ndGsnLCAnaHRtbCcpCiAKIGRlZiBnZXRfd2Via2l0Ml9vcHRpb25z
KCk6Ci0gICAgYXBpX3BhdGggPSBjb21tb24udG9wX2xldmVsX3BhdGgoJ1NvdXJjZScsICdXZWJL
aXQyJywgJ1VJUHJvY2VzcycsICdBUEknLCAnZ3RrJykKLSAgICBpbmplY3RlZF9idW5kbGVfYXBp
X3BhdGggPSBjb21tb24udG9wX2xldmVsX3BhdGgoJ1NvdXJjZScsICdXZWJLaXQyJywgJ1dlYlBy
b2Nlc3MnLCAnSW5qZWN0ZWRCdW5kbGUnLCAnQVBJJywgJ2d0aycpCisgICAgYXBpX3BhdGggPSBq
aGJ1aWxkcmNfY29tbW9uLnRvcF9sZXZlbF9wYXRoKCdTb3VyY2UnLCAnV2ViS2l0MicsICdVSVBy
b2Nlc3MnLCAnQVBJJywgJ2d0aycpCisgICAgaW5qZWN0ZWRfYnVuZGxlX2FwaV9wYXRoID0gamhi
dWlsZHJjX2NvbW1vbi50b3BfbGV2ZWxfcGF0aCgnU291cmNlJywgJ1dlYktpdDInLCAnV2ViUHJv
Y2VzcycsICdJbmplY3RlZEJ1bmRsZScsICdBUEknLCAnZ3RrJykKIAogICAgIGlmIGNvbW1vbi5p
c19jbWFrZV9idWlsZCgpOgogICAgICAgICBnZW5lcmF0ZWRfYXBpX3BhdGggPSBjb21tb24uYnVp
bGRfcGF0aCgnRGVyaXZlZFNvdXJjZXMnLCAnd2Via2l0Mmd0aycsICd3ZWJraXQyJykKQEAgLTEw
MSw3ICsxMDQsNyBAQCBkZWYgZ2V0X3dlYmtpdDJfb3B0aW9ucygpOgogICAgICAgICAnc291cmNl
X2RpcnMnIDogW3NyY19wYXRoKCksIGdlbmVyYXRlZF9hcGlfcGF0aCwgaW5qZWN0ZWRfYnVuZGxl
X2FwaV9wYXRoXSwKICAgICAgICAgJ2NmbGFncycgOgogICAgICAgICAgICAgIyBDb21tb24gcGF0
aHMKLSAgICAgICAgICAgICcgLUknICsgY29tbW9uLnRvcF9sZXZlbF9wYXRoKCdTb3VyY2UnKSAr
IFwKKyAgICAgICAgICAgICcgLUknICsgamhidWlsZHJjX2NvbW1vbi50b3BfbGV2ZWxfcGF0aCgn
U291cmNlJykgKyBcCiAgICAgICAgICAgICAnIC1JJyArIGFwaV9wYXRoICsgXAogICAgICAgICAg
ICAgIyBBdXRvdG9vbHMgcGF0aHMKICAgICAgICAgICAgICcgLUknICsgY29tbW9uLmJ1aWxkX3Bh
dGgoJ0Rlcml2ZWRTb3VyY2VzJywgJ3dlYmtpdDJndGsnLCAnaW5jbHVkZScpICsgXApAQCAtMTI3
LDcgKzEzMCw3IEBAIGRlZiBnZXRfd2Via2l0Ml9vcHRpb25zKCk6CiAKIGRlZiBnZXRfd2Via2l0
MV9vcHRpb25zKGd0a192ZXJzaW9uKToKICAgICBkZWYgc3JjX3BhdGgoKmFyZ3MpOgotICAgICAg
ICByZXR1cm4gY29tbW9uLnRvcF9sZXZlbF9wYXRoKCooKCdTb3VyY2UnLCAnV2ViS2l0JywgJ2d0
aycpICsgYXJncykpCisgICAgICAgIHJldHVybiBqaGJ1aWxkcmNfY29tbW9uLnRvcF9sZXZlbF9w
YXRoKCooKCdTb3VyY2UnLCAnV2ViS2l0JywgJ2d0aycpICsgYXJncykpCiAKICAgICBkZWYgd2Vi
a2l0dmVyc2lvbmhfcGF0aCgpOgogICAgICAgICBpZiBjb21tb24uaXNfY21ha2VfYnVpbGQoKToK
QEAgLTE1NSw4ICsxNTgsOCBAQCBkZWYgZ2V0X3dlYmtpdDFfb3B0aW9ucyhndGtfdmVyc2lvbik6
CiAgICAgICAgICdjZmxhZ3MnIDogJyAtSScgKyBjb21tb24uYnVpbGRfcGF0aCgnV2ViS2l0Jywg
J2d0aycpICsgXAogICAgICAgICAgICAgICAgICAgICcgLUknICsgY29tbW9uLmJ1aWxkX3BhdGgo
J0Rlcml2ZWRTb3VyY2VzJykgKyBcCiAgICAgICAgICAgICAgICAgICAgJyAtSScgKyBzcmNfcGF0
aCgpICsgXAotICAgICAgICAgICAgICAgICAgICcgLUknICsgY29tbW9uLnRvcF9sZXZlbF9wYXRo
KCdTb3VyY2UnKSArIFwKLSAgICAgICAgICAgICAgICAgICAnIC1JJyArIGNvbW1vbi50b3BfbGV2
ZWxfcGF0aCgnU291cmNlJywgJ0phdmFTY3JpcHRDb3JlJywgJ0ZvcndhcmRpbmdIZWFkZXJzJyks
CisgICAgICAgICAgICAgICAgICAgJyAtSScgKyBqaGJ1aWxkcmNfY29tbW9uLnRvcF9sZXZlbF9w
YXRoKCdTb3VyY2UnKSArIFwKKyAgICAgICAgICAgICAgICAgICAnIC1JJyArIGpoYnVpbGRyY19j
b21tb24udG9wX2xldmVsX3BhdGgoJ1NvdXJjZScsICdKYXZhU2NyaXB0Q29yZScsICdGb3J3YXJk
aW5nSGVhZGVycycpLAogICAgICAgICAnY3Jvc3NfcmVmZXJlbmNlX2RlcHMnIDogZ2V0X2d0a2Rv
Y19tb2R1bGVfcGF0aHMoeHJlZl9kZXBzKSArIFt3ZWJraXRkb21fZG9jc19odG1sX3BhdGgoKV0s
CiAgICAgICAgICdpZ25vcmVkX2ZpbGVzJzogZ2xvYi5nbG9iKHNyY19wYXRoKCd3ZWJraXQnLCAn
KnByaXZhdGUuKicpKSArIFwKICAgICAgICAgICAgICAgICAgICAgICAgICBnbG9iLmdsb2Ioc3Jj
X3BhdGgoJ3dlYmtpdCcsICd3ZWJraXRhdXRoZW50aWNhdGlvbmRpYWxvZy4qJykpICsgXApAQCAt
MTY4LDcgKzE3MSw3IEBAIGRlZiBnZXRfd2Via2l0ZG9tX29wdGlvbnMoKToKICAgICBkZWYgZGVy
aXZlZF9zb3VyY2VzX3BhdGgoKmFyZ3MpOgogICAgICAgICByZXR1cm4gY29tbW9uLmJ1aWxkX3Bh
dGgoKigoJ0Rlcml2ZWRTb3VyY2VzJywgJ3dlYmtpdGRvbScpICsgYXJncykpCiAgICAgZGVmIHNy
Y19wYXRoKCphcmdzKToKLSAgICAgICAgcmV0dXJuIGNvbW1vbi50b3BfbGV2ZWxfcGF0aCgqKCgn
U291cmNlJywgJ1dlYkNvcmUnLCAnYmluZGluZ3MnLCAnZ29iamVjdCcpICsgYXJncykpCisgICAg
ICAgIHJldHVybiBqaGJ1aWxkcmNfY29tbW9uLnRvcF9sZXZlbF9wYXRoKCooKCdTb3VyY2UnLCAn
V2ViQ29yZScsICdiaW5kaW5ncycsICdnb2JqZWN0JykgKyBhcmdzKSkKIAogICAgIHhyZWZfZGVw
cyA9IHsgJ2dsaWItMi4wJyA6IFsnZ2xpYicsICdnb2JqZWN0JywgJ2dpbyddIH0KIApAQCAtMTgx
LDcgKzE4NCw3IEBAIGRlZiBnZXRfd2Via2l0ZG9tX29wdGlvbnMoKToKICAgICAgICAgJ3NvdXJj
ZV9kaXJzJyA6IFtkZXJpdmVkX3NvdXJjZXNfcGF0aCgpXSwKICAgICAgICAgJ2NmbGFncycgOiAn
IC1JJyArIGRlcml2ZWRfc291cmNlc19wYXRoKCkgKyBcCiAgICAgICAgICAgICAgICAgICAgJyAt
SScgKyBzcmNfcGF0aCgpICsgXAotICAgICAgICAgICAgICAgICAgICcgLUknICsgY29tbW9uLnRv
cF9sZXZlbF9wYXRoKCdTb3VyY2UnKSwKKyAgICAgICAgICAgICAgICAgICAnIC1JJyArIGpoYnVp
bGRyY19jb21tb24udG9wX2xldmVsX3BhdGgoJ1NvdXJjZScpLAogICAgICAgICAnY3Jvc3NfcmVm
ZXJlbmNlX2RlcHMnIDogZ2V0X2d0a2RvY19tb2R1bGVfcGF0aHMoeHJlZl9kZXBzKSwKICAgICAg
ICAgJ2lnbm9yZWRfZmlsZXMnOiBnbG9iLmdsb2IoZGVyaXZlZF9zb3VyY2VzX3BhdGgoJypQcml2
YXRlLmgnKSkKICAgICB9KQpkaWZmIC0tZ2l0IGEvVG9vbHMvZ3RrL2dlbmVyYXRlLWluc3BlY3Rv
ci1ncmVzb3VyY2UtbWFuaWZlc3QucHkgYi9Ub29scy9ndGsvZ2VuZXJhdGUtaW5zcGVjdG9yLWdy
ZXNvdXJjZS1tYW5pZmVzdC5weQppbmRleCA1OGExZGYxLi4wYmQ2Mzk0IDEwMDc1NQotLS0gYS9U
b29scy9ndGsvZ2VuZXJhdGUtaW5zcGVjdG9yLWdyZXNvdXJjZS1tYW5pZmVzdC5weQorKysgYi9U
b29scy9ndGsvZ2VuZXJhdGUtaW5zcGVjdG9yLWdyZXNvdXJjZS1tYW5pZmVzdC5weQpAQCAtMjAs
NyArMjAsMTAgQEAgaW1wb3J0IGdsb2IKIGltcG9ydCBvcwogaW1wb3J0IHN5cwogCi1yZXNvdXJj
ZXNfcGF0aCA9IGNvbW1vbi50b3BfbGV2ZWxfcGF0aCgpICsgIi9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvIgorc3lzLnBhdGguaW5zZXJ0KDAsIG9zLnBhdGguam9pbihvcy5wYXRoLmRpcm5hbWUoX19m
aWxlX18pLCAiLi4vamhidWlsZCIpKQoraW1wb3J0IGpoYnVpbGRyY19jb21tb24KKworcmVzb3Vy
Y2VzX3BhdGggPSBqaGJ1aWxkcmNfY29tbW9uLnRvcF9sZXZlbF9wYXRoKCkgKyAiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS8iCiBpbnNwZWN0b3JfZmlsZXMgPSBcCiAgICAgZ2xvYi5nbG9iKHJlc291
cmNlc19wYXRoICsgJ1VzZXJJbnRlcmZhY2UvKi5odG1sJykgKyBcCiAgICAgZ2xvYi5nbG9iKHJl
c291cmNlc19wYXRoICsgJ1VzZXJJbnRlcmZhY2UvKi5qcycpICsgXApkaWZmIC0tZ2l0IGEvVG9v
bHMvZ3RrL2poYnVpbGRyYyBiL1Rvb2xzL2d0ay9qaGJ1aWxkcmMKaW5kZXggNjlmOTQ1Ny4uYWNl
YzY3NSAxMDA2NDQKLS0tIGEvVG9vbHMvZ3RrL2poYnVpbGRyYworKysgYi9Ub29scy9ndGsvamhi
dWlsZHJjCkBAIC0xNSwzNiArMTUsMTYgQEAKICMgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGli
cmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQogIyBGb3VuZGF0aW9uLCBJ
bmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0x
MzAxICBVU0EKIAotaW1wb3J0IG11bHRpcHJvY2Vzc2luZwogaW1wb3J0IHN5cwogCitzeXMucGF0
aC5pbnNlcnQoMCwgb3MucGF0aC5qb2luKG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXyksICIuLi9q
aGJ1aWxkIikgKQoraW1wb3J0IGpoYnVpbGRyY19jb21tb24KK2poYnVpbGRyY19jb21tb24uaW5p
dChnbG9iYWxzKCksICJndGsiKQorCiBfX2d0a190b29sc19kaXJlY3RvcnkgPSBvcy5wYXRoLmFi
c3BhdGgob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSkKIHN5cy5wYXRoID0gW19fZ3RrX3Rvb2xz
X2RpcmVjdG9yeV0gKyBzeXMucGF0aAogaW1wb3J0IGNvbW1vbgogCi1idWlsZF9wb2xpY3kgPSAn
dXBkYXRlZCcKLQotX19tb2R1bGVzZXRfZmlsZV91cmkgPSAnZmlsZTovLycgKyBvcy5wYXRoLmpv
aW4oX19ndGtfdG9vbHNfZGlyZWN0b3J5LCAnamhidWlsZC5tb2R1bGVzJykKLV9fZXh0cmFfbW9k
dWxlc2V0cyA9IG9zLmVudmlyb24uZ2V0KCJXRUJLSVRfRVhUUkFfTU9EVUxFU0VUUyIsICIiKS5z
cGxpdCgiLCIpCi1tb2R1bGVzZXQgPSBbIF9fbW9kdWxlc2V0X2ZpbGVfdXJpLCBdCi1pZiBfX2V4
dHJhX21vZHVsZXNldHMgIT0gWycnXToKLSAgICBtb2R1bGVzZXQuZXh0ZW5kKF9fZXh0cmFfbW9k
dWxlc2V0cykKLQotX19leHRyYV9tb2R1bGVzID0gb3MuZW52aXJvbi5nZXQoIldFQktJVF9FWFRS
QV9NT0RVTEVTIiwgIiIpLnNwbGl0KCIsIikKLW1vZHVsZXMgPSBbICd3ZWJraXRndGstdGVzdGlu
Zy1kZXBlbmRlbmNpZXMnLCBdCi1pZiBfX2V4dHJhX21vZHVsZXMgIT0gWycnXToKLSAgICBtb2R1
bGVzLmV4dGVuZChfX2V4dHJhX21vZHVsZXMpCi0KLWlmIG9zLmVudmlyb24uaGFzX2tleSgnV0VC
S0lUX09VVFBVVERJUicpOgotICAgIGNoZWNrb3V0cm9vdCA9IG9zLnBhdGguYWJzcGF0aChvcy5w
YXRoLmpvaW4ob3MuZW52aXJvblsnV0VCS0lUX09VVFBVVERJUiddLCAnRGVwZW5kZW5jaWVzJywg
J1NvdXJjZScpKQotICAgIHByZWZpeCA9IG9zLnBhdGguYWJzcGF0aChvcy5wYXRoLmpvaW4ob3Mu
ZW52aXJvblsnV0VCS0lUX09VVFBVVERJUiddLCAnRGVwZW5kZW5jaWVzJywgJ1Jvb3QnKSkKLWVs
c2U6Ci0gICAgY2hlY2tvdXRyb290ID0gb3MucGF0aC5hYnNwYXRoKGNvbW1vbi50b3BfbGV2ZWxf
cGF0aCgnV2ViS2l0QnVpbGQnLCdEZXBlbmRlbmNpZXMnLCAnU291cmNlJykpCi0gICAgcHJlZml4
ID0gb3MucGF0aC5hYnNwYXRoKGNvbW1vbi50b3BfbGV2ZWxfcGF0aCgnV2ViS2l0QnVpbGQnLCdE
ZXBlbmRlbmNpZXMnLCAnUm9vdCcpKQotCi1ub25vdGlmeSA9IFRydWUKLW5vdHJheWljb24gPSBU
cnVlCi0KIGlmICdOVU1CRVJfT0ZfUFJPQ0VTU09SUycgaW4gb3MuZW52aXJvbjoKICAgICBqb2Jz
ID0gb3MuZW52aXJvblsnTlVNQkVSX09GX1BST0NFU1NPUlMnXQogCmRpZmYgLS1naXQgYS9Ub29s
cy9qaGJ1aWxkL2poYnVpbGRyY19jb21tb24ucHkgYi9Ub29scy9qaGJ1aWxkL2poYnVpbGRyY19j
b21tb24ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWYwYzNlYwotLS0g
L2Rldi9udWxsCisrKyBiL1Rvb2xzL2poYnVpbGQvamhidWlsZHJjX2NvbW1vbi5weQpAQCAtMCww
ICsxLDY0IEBACisjIS91c3IvYmluL2VudiBweXRob24KKyMgQ29weXJpZ2h0IChDKSAyMDExIEln
YWxpYSBTLkwuCisjIENvcHlyaWdodCAoQykgMjAxMiBJbnRlbCBDb3Jwb3JhdGlvbgorIworIyBU
aGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k
L29yCisjIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJh
bCBQdWJsaWMKKyMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbjsgZWl0aGVyCisjIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIg
b3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyMKKyMgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1
dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisjIGJ1dCBXSVRIT1VUIEFO
WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisjIE1FUkNI
QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUg
R05VCisjIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisj
CisjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2Vu
ZXJhbCBQdWJsaWMKKyMgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3
cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorIyBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xp
biBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxICBVU0EKKworaW1w
b3J0IG11bHRpcHJvY2Vzc2luZworaW1wb3J0IHN5cworaW1wb3J0IG9zCisKKworc2NyaXB0X2Rp
ciA9IE5vbmUKKworCitkZWYgc2NyaXB0X3BhdGgoKmFyZ3MpOgorICAgIGdsb2JhbCBzY3JpcHRf
ZGlyCisgICAgaWYgbm90IHNjcmlwdF9kaXI6CisgICAgICAgIHNjcmlwdF9kaXIgPSBvcy5wYXRo
LmpvaW4ob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSwgJy4uJywgJ1NjcmlwdHMnKQorICAgIHJl
dHVybiBvcy5wYXRoLmpvaW4oKihzY3JpcHRfZGlyLCkgKyBhcmdzKQorCisKK2RlZiB0b3BfbGV2
ZWxfcGF0aCgqYXJncyk6CisgICAgcmV0dXJuIG9zLnBhdGguam9pbigqKChvcy5wYXRoLmpvaW4o
b3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSwgJy4uJywgJy4uJyksKSArIGFyZ3MpKQorCisKK2Rl
ZiBpbml0KGpoYnVpbGRyY19nbG9iYWxzLCBwbGF0Zm9ybSk6CisKKyAgICBfX3Rvb2xzX2RpcmVj
dG9yeSA9IG9zLnBhdGguam9pbihvcy5wYXRoLmRpcm5hbWUoX19maWxlX18pLCAiLi4vIiwgcGxh
dGZvcm0pCisgICAgc3lzLnBhdGguaW5zZXJ0KDAsIF9fdG9vbHNfZGlyZWN0b3J5KQorCisgICAg
amhidWlsZHJjX2dsb2JhbHNbImJ1aWxkX3BvbGljeSJdID0gJ3VwZGF0ZWQnCisKKyAgICBfX21v
ZHVsZXNldF9maWxlX3VyaSA9ICdmaWxlOi8vJyArIG9zLnBhdGguam9pbihfX3Rvb2xzX2RpcmVj
dG9yeSwgJ2poYnVpbGQubW9kdWxlcycpCisgICAgX19leHRyYV9tb2R1bGVzZXRzID0gb3MuZW52
aXJvbi5nZXQoIldFQktJVF9FWFRSQV9NT0RVTEVTRVRTIiwgIiIpLnNwbGl0KCIsIikKKyAgICBq
aGJ1aWxkcmNfZ2xvYmFsc1sibW9kdWxlc2V0Il0gPSBbX19tb2R1bGVzZXRfZmlsZV91cmksIF0K
KyAgICBpZiBfX2V4dHJhX21vZHVsZXNldHMgIT0gWycnXToKKyAgICAgICAgamhidWlsZHJjX2ds
b2JhbHNbIm1vZHVsZXNldCJdLmV4dGVuZChfX2V4dHJhX21vZHVsZXNldHMpCisKKyAgICBfX2V4
dHJhX21vZHVsZXMgPSBvcy5lbnZpcm9uLmdldCgiV0VCS0lUX0VYVFJBX01PRFVMRVMiLCAiIiku
c3BsaXQoIiwiKQorICAgIGpoYnVpbGRyY19nbG9iYWxzWyJtb2R1bGVzIl0gPSBbJ3dlYmtpdCcg
KyBwbGF0Zm9ybSArICctdGVzdGluZy1kZXBlbmRlbmNpZXMnLCBdCisgICAgaWYgX19leHRyYV9t
b2R1bGVzICE9IFsnJ106CisgICAgICAgIGpoYnVpbGRyY19nbG9iYWxzWyJtb2R1bGVzIl0uZXh0
ZW5kKF9fZXh0cmFfbW9kdWxlcykKKworICAgIGlmICdXRUJLSVRfT1VUUFVURElSJyBpbiBvcy5l
bnZpcm9uOgorICAgICAgICBqaGJ1aWxkcmNfZ2xvYmFsc1siY2hlY2tvdXRyb290Il0gPSBjaGVj
a291dHJvb3QgPSBvcy5wYXRoLmFic3BhdGgob3MucGF0aC5qb2luKG9zLmVudmlyb25bJ1dFQktJ
VF9PVVRQVVRESVInXSwgJ0RlcGVuZGVuY2llcycsICdTb3VyY2UnKSkKKyAgICAgICAgamhidWls
ZHJjX2dsb2JhbHNbInByZWZpeCJdID0gb3MucGF0aC5hYnNwYXRoKG9zLnBhdGguam9pbihvcy5l
bnZpcm9uWydXRUJLSVRfT1VUUFVURElSJ10sICdEZXBlbmRlbmNpZXMnLCAnUm9vdCcpKQorICAg
IGVsc2U6CisgICAgICAgIGpoYnVpbGRyY19nbG9iYWxzWyJjaGVja291dHJvb3QiXSA9IGNoZWNr
b3V0cm9vdCA9IG9zLnBhdGguYWJzcGF0aCh0b3BfbGV2ZWxfcGF0aCgnV2ViS2l0QnVpbGQnLCAn
RGVwZW5kZW5jaWVzJywgJ1NvdXJjZScpKQorICAgICAgICBqaGJ1aWxkcmNfZ2xvYmFsc1sicHJl
Zml4Il0gPSBvcy5wYXRoLmFic3BhdGgodG9wX2xldmVsX3BhdGgoJ1dlYktpdEJ1aWxkJywgJ0Rl
cGVuZGVuY2llcycsICdSb290JykpCisKKyAgICBqaGJ1aWxkcmNfZ2xvYmFsc1sibm9ub3RpZnki
XSA9IFRydWUKKyAgICBqaGJ1aWxkcmNfZ2xvYmFsc1sibm90cmF5aWNvbiJdID0gVHJ1ZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>225057</attachid>
            <date>2014-02-24 06:01:23 -0800</date>
            <delta_ts>2014-02-24 06:11:56 -0800</delta_ts>
            <desc>Patch v13</desc>
            <filename>extract_v7.patch</filename>
            <type>text/plain</type>
            <size>18165</size>
            <attacher name="Tibor Mészáros">mtiborinf</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBlYzI3
Yzg2Li42ZGJlNDQ4IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzUgQEAKKzIwMTQtMDItMjQgIFRpYm9yIE1lc3phcm9zICA8dG1l
c3phcm9zLnUtc3plZ2VkQHBhcnRuZXIuc2Ftc3VuZy5jb20+CisKKyAgICAgICAgRXh0cmFjdCBj
b21tb24gcGFydHMgZnJvbSBqaGJ1aWxkcmMgZmlsZXMuCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjU5ODYKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDby1hdXRob3JlZCB3aXRoIFBldGVyIFN6YW5rYSA8
aDg2ODA2NEBzdHVkLnUtc3plZ2VkLmh1Pi4KKworICAgICAgICAqIFNjcmlwdHMvcnVuLWd0ay10
ZXN0czoKKyAgICAgICAgKFRlc3RSdW5uZXIuX3NldHVwX3Rlc3RpbmdfZW52aXJvbm1lbnQpOgor
ICAgICAgICAqIGVmbC9jb21tb24ucHk6IFJlbW92ZWQuCisgICAgICAgICogZWZsL2poYnVpbGRy
YzoKKyAgICAgICAgKiBndGsvY2hlY2stZ2RvbS1zeW1ib2xzOgorICAgICAgICAqIGd0ay9jb21t
b24ucHk6CisgICAgICAgIChiaW5hcnlfYnVpbGRfcGF0aCk6CisgICAgICAgIChnZXRfYnVpbGRf
cGF0aCk6CisgICAgICAgICogZ3RrL2ZpbmQtbWFrZS1kaXN0LWVycm9yczoKKyAgICAgICAgKGdl
dF9taXNzaW5nX2hlYWRlcnMpOgorICAgICAgICAqIGd0ay9nZW5lcmF0ZS1ndGtkb2M6CisgICAg
ICAgIChnZXRfd2Via2l0Ml9vcHRpb25zKToKKyAgICAgICAgKGdldF93ZWJraXQxX29wdGlvbnMu
c3JjX3BhdGgpOgorICAgICAgICAoZ2V0X3dlYmtpdDFfb3B0aW9ucyk6CisgICAgICAgIChnZXRf
d2Via2l0ZG9tX29wdGlvbnMuc3JjX3BhdGgpOgorICAgICAgICAoZ2V0X3dlYmtpdGRvbV9vcHRp
b25zKToKKyAgICAgICAgKiBndGsvZ2VuZXJhdGUtaW5zcGVjdG9yLWdyZXNvdXJjZS1tYW5pZmVz
dC5weToKKyAgICAgICAgKiBndGsvamhidWlsZHJjOgorICAgICAgICAqIGpoYnVpbGQvamhidWls
ZHJjX2NvbW1vbi5weTogQWRkZWQuCisgICAgICAgIChzY3JpcHRfcGF0aCk6CisgICAgICAgICh0
b3BfbGV2ZWxfcGF0aCk6CisgICAgICAgIChpbml0KToKKwogMjAxNC0wMi0yNCAgRGllZ28gUGlu
byBHYXJjaWEgIDxkcGlub0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQuIEZpeCBj
b2RlIGluZGVudGF0aW9uIGFuZCBzcGFjaW5nLgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy9y
dW4tZ3RrLXRlc3RzIGIvVG9vbHMvU2NyaXB0cy9ydW4tZ3RrLXRlc3RzCmluZGV4IGU5ODA4NjAu
LjUwODg0NDcgMTAwNzU1Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvcnVuLWd0ay10ZXN0cworKysgYi9U
b29scy9TY3JpcHRzL3J1bi1ndGstdGVzdHMKQEAgLTMxLDYgKzMxLDkgQEAgc3lzLnBhdGguYXBw
ZW5kKG9zLnBhdGguam9pbih0b3BfbGV2ZWxfZGlyZWN0b3J5LCAiVG9vbHMiLCAiZ3RrIikpCiBp
bXBvcnQgY29tbW9uCiBpbXBvcnQgamhidWlsZHV0aWxzCiAKK3N5cy5wYXRoLmluc2VydCgwLCBv
cy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSwgIi4uL2poYnVpbGQiKSkKK2lt
cG9ydCBqaGJ1aWxkcmNfY29tbW9uIAorCiBjbGFzcyBTa2lwcGVkVGVzdDoKICAgICBFTlRJUkVf
U1VJVEUgPSBOb25lCiAKQEAgLTE5NSw3ICsxOTgsNyBAQCBjbGFzcyBUZXN0UnVubmVyOgogICAg
IGRlZiBfc2V0dXBfdGVzdGluZ19lbnZpcm9ubWVudChzZWxmKToKICAgICAgICAgc2VsZi5fdGVz
dF9lbnYgPSBvcy5lbnZpcm9uCiAgICAgICAgIHNlbGYuX3Rlc3RfZW52WydHU0VUVElOR1NfQkFD
S0VORCddID0gJ21lbW9yeScKLSAgICAgICAgc2VsZi5fdGVzdF9lbnZbIlRFU1RfV0VCS0lUX0FQ
SV9XRUJLSVQyX1JFU09VUkNFU19QQVRIIl0gPSBjb21tb24udG9wX2xldmVsX3BhdGgoIlRvb2xz
IiwgIlRlc3RXZWJLaXRBUEkiLCAiVGVzdHMiLCAiV2ViS2l0MiIpCisgICAgICAgIHNlbGYuX3Rl
c3RfZW52WyJURVNUX1dFQktJVF9BUElfV0VCS0lUMl9SRVNPVVJDRVNfUEFUSCJdID0gamhidWls
ZHJjX2NvbW1vbi50b3BfbGV2ZWxfcGF0aCgiVG9vbHMiLCAiVGVzdFdlYktpdEFQSSIsICJUZXN0
cyIsICJXZWJLaXQyIikKICAgICAgICAgc2VsZi5fdGVzdF9lbnZbIlRFU1RfV0VCS0lUX0FQSV9X
RUJLSVQyX0lOSkVDVEVEX0JVTkRMRV9QQVRIIl0gPSBjb21tb24udGVzdHNfbGlicmFyeV9idWls
ZF9wYXRoKCkKICAgICAgICAgc2VsZi5fdGVzdF9lbnZbIldFQktJVF9FWEVDX1BBVEgiXSA9IHNl
bGYuX3Byb2dyYW1zX3BhdGgKIApkaWZmIC0tZ2l0IGEvVG9vbHMvZWZsL2NvbW1vbi5weSBiL1Rv
b2xzL2VmbC9jb21tb24ucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc3NjU3YjMu
LjAwMDAwMDAKLS0tIGEvVG9vbHMvZWZsL2NvbW1vbi5weQorKysgL2Rldi9udWxsCkBAIC0xLDMx
ICswLDAgQEAKLSMhL3Vzci9iaW4vZW52IHB5dGhvbgotIyBDb3B5cmlnaHQgKEMpIDIwMTEgSWdh
bGlhIFMuTC4KLSMKLSMgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk
aXN0cmlidXRlIGl0IGFuZC9vcgotIyBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH
TlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi0jIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotIyB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vu
c2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0jCi0jIFRoaXMgbGli
cmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAot
IyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy
YW50eSBvZgotIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UuICBTZWUgdGhlIEdOVQotIyBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3Ig
bW9yZSBkZXRhaWxzLgotIwotIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo
ZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi0jIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxp
YnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSMgRm91bmRhdGlvbiwg
SW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAt
MTMwMSAgVVNBCi0KLWltcG9ydCBvcwotCi1zY3JpcHRfZGlyID0gTm9uZQotCi0KLWRlZiBzY3Jp
cHRfcGF0aCgqYXJncyk6Ci0gICAgZ2xvYmFsIHNjcmlwdF9kaXIKLSAgICBpZiBub3Qgc2NyaXB0
X2RpcjoKLSAgICAgICAgc2NyaXB0X2RpciA9IG9zLnBhdGguam9pbihvcy5wYXRoLmRpcm5hbWUo
X19maWxlX18pLCAnLi4nLCAnU2NyaXB0cycpCi0gICAgcmV0dXJuIG9zLnBhdGguam9pbigqKHNj
cmlwdF9kaXIsKSArIGFyZ3MpCi0KLQotZGVmIHRvcF9sZXZlbF9wYXRoKCphcmdzKToKLSAgICBy
ZXR1cm4gb3MucGF0aC5qb2luKCooKHNjcmlwdF9wYXRoKCcuLicsICcuLicpLCkgKyBhcmdzKSkK
ZGlmZiAtLWdpdCBhL1Rvb2xzL2VmbC9qaGJ1aWxkcmMgYi9Ub29scy9lZmwvamhidWlsZHJjCmlu
ZGV4IDc3ZGFhZTkuLjc4MjU5NTEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL2VmbC9qaGJ1aWxkcmMKKysr
IGIvVG9vbHMvZWZsL2poYnVpbGRyYwpAQCAtMTYsMzcgKzE2LDExIEBACiAjIExpY2Vuc2UgYWxv
bmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUK
ICMgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9z
dG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCiAKLWltcG9ydCBtdWx0aXByb2Nlc3NpbmcKIGltcG9y
dCBzeXMKIAotX19lZmxfdG9vbHNfZGlyZWN0b3J5ID0gb3MucGF0aC5hYnNwYXRoKG9zLnBhdGgu
ZGlybmFtZShfX2ZpbGVfXykpCi1zeXMucGF0aCA9IFtfX2VmbF90b29sc19kaXJlY3RvcnldICsg
c3lzLnBhdGgKLWltcG9ydCBjb21tb24KLQotYnVpbGRfcG9saWN5ID0gJ3VwZGF0ZWQnCi0KLSMg
RklYTUU6IG1vdmUgc2hhcmVkIHBhcnRzIGludG8gLi4vamhidWlsZCBmb2xkZXIuCi0KLV9fbW9k
dWxlc2V0X2ZpbGVfdXJpID0gJ2ZpbGU6Ly8nICsgb3MucGF0aC5qb2luKF9fZWZsX3Rvb2xzX2Rp
cmVjdG9yeSwgJ2poYnVpbGQubW9kdWxlcycpCi1fX2V4dHJhX21vZHVsZXNldHMgPSBvcy5lbnZp
cm9uLmdldCgiV0VCS0lUX0VYVFJBX01PRFVMRVNFVFMiLCAiIikuc3BsaXQoIiwiKQotbW9kdWxl
c2V0ID0gWyBfX21vZHVsZXNldF9maWxlX3VyaSwgXQotaWYgX19leHRyYV9tb2R1bGVzZXRzICE9
IFsnJ106Ci0gICAgbW9kdWxlc2V0LmV4dGVuZChfX2V4dHJhX21vZHVsZXNldHMpCi0KLV9fZXh0
cmFfbW9kdWxlcyA9IG9zLmVudmlyb24uZ2V0KCJXRUJLSVRfRVhUUkFfTU9EVUxFUyIsICIiKS5z
cGxpdCgiLCIpCi1tb2R1bGVzID0gWyAnd2Via2l0ZWZsLXRlc3RpbmctZGVwZW5kZW5jaWVzJywg
XQotaWYgX19leHRyYV9tb2R1bGVzICE9IFsnJ106Ci0gICAgbW9kdWxlcy5leHRlbmQoX19leHRy
YV9tb2R1bGVzKQotCi1pZiBvcy5lbnZpcm9uLmhhc19rZXkoJ1dFQktJVF9PVVRQVVRESVInKToK
LSAgICBjaGVja291dHJvb3QgPSBvcy5wYXRoLmFic3BhdGgob3MucGF0aC5qb2luKG9zLmVudmly
b25bJ1dFQktJVF9PVVRQVVRESVInXSwgJ0RlcGVuZGVuY2llcycsICdTb3VyY2UnKSkKLSAgICBw
cmVmaXggPSBvcy5wYXRoLmFic3BhdGgob3MucGF0aC5qb2luKG9zLmVudmlyb25bJ1dFQktJVF9P
VVRQVVRESVInXSwgJ0RlcGVuZGVuY2llcycsICdSb290JykpCi1lbHNlOgotICAgIGNoZWNrb3V0
cm9vdCA9IG9zLnBhdGguYWJzcGF0aChjb21tb24udG9wX2xldmVsX3BhdGgoJ1dlYktpdEJ1aWxk
JywnRGVwZW5kZW5jaWVzJywgJ1NvdXJjZScpKQotICAgIHByZWZpeCA9IG9zLnBhdGguYWJzcGF0
aChjb21tb24udG9wX2xldmVsX3BhdGgoJ1dlYktpdEJ1aWxkJywnRGVwZW5kZW5jaWVzJywgJ1Jv
b3QnKSkKLQotbm9ub3RpZnkgPSBUcnVlCi1ub3RyYXlpY29uID0gVHJ1ZQorc3lzLnBhdGguaW5z
ZXJ0KDAsIG9zLnBhdGguam9pbihvcy5wYXRoLmRpcm5hbWUoX19maWxlX18pLCAiLi4vamhidWls
ZCIpICkKK2ltcG9ydCBqaGJ1aWxkcmNfY29tbW9uCitqaGJ1aWxkcmNfY29tbW9uLmluaXQoZ2xv
YmFscygpLCAiZWZsIikgCiAKIGlmICdOVU1CRVJfT0ZfUFJPQ0VTU09SUycgaW4gb3MuZW52aXJv
bjoKICAgICBqb2JzID0gb3MuZW52aXJvblsnTlVNQkVSX09GX1BST0NFU1NPUlMnXQpkaWZmIC0t
Z2l0IGEvVG9vbHMvZ3RrL2NoZWNrLWdkb20tc3ltYm9scyBiL1Rvb2xzL2d0ay9jaGVjay1nZG9t
LXN5bWJvbHMKaW5kZXggZjExMDhiNy4uNTg4YjdlOCAxMDA3NTUKLS0tIGEvVG9vbHMvZ3RrL2No
ZWNrLWdkb20tc3ltYm9scworKysgYi9Ub29scy9ndGsvY2hlY2stZ2RvbS1zeW1ib2xzCkBAIC0y
Miw2ICsyMiw4IEBAIGltcG9ydCBzdWJwcm9jZXNzCiBpbXBvcnQgc3lzCiBpbXBvcnQgdGVtcGZp
bGUKIAorc3lzLnBhdGguaW5zZXJ0KDAsIG9zLnBhdGguam9pbihvcy5wYXRoLmRpcm5hbWUoX19m
aWxlX18pLCAiLi4vamhidWlsZCIpKQoraW1wb3J0IGpoYnVpbGRyY19jb21tb24gCiAKIGRlZiBz
aG91bGRfdXBkYXRlX3N5bWJvbHNfZmlsZShuZXcsIG9sZCk6CiAgICAgaWYgbm90IG9zLnBhdGgu
ZXhpc3RzKG9sZCk6CkBAIC01MCw3ICs1Miw3IEBAIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6
CiAgICAgICAgICAgICAgICAgdG1wLndyaXRlKGZpbGVfaGFuZGxlLnJlYWQoKSkKICAgICAgICAg
dG1wLmZsdXNoKCkKIAotICAgICAgICBnZG9tX3NvdXJjZV9wYXRoID0gY29tbW9uLnRvcF9sZXZl
bF9wYXRoKCdTb3VyY2UnLCAnV2ViQ29yZScsICdiaW5kaW5ncycpCisgICAgICAgIGdkb21fc291
cmNlX3BhdGggPSBqaGJ1aWxkcmNfY29tbW9uLnRvcF9sZXZlbF9wYXRoKCdTb3VyY2UnLCAnV2Vi
Q29yZScsICdiaW5kaW5ncycpCiAgICAgICAgIGFwaV9icmVha190ZXN0X3BhdGggPSBvcy5wYXRo
LmpvaW4oZ2RvbV9zb3VyY2VfcGF0aCwgJ3NjcmlwdHMnLCAnZ29iamVjdC1ydW4tYXBpLWJyZWFr
LXRlc3QnKQogICAgICAgICBzdWJwcm9jZXNzLmNhbGwoW3N5cy5leGVjdXRhYmxlLCBhcGlfYnJl
YWtfdGVzdF9wYXRoLCBvcy5wYXRoLmpvaW4oZ2RvbV9zb3VyY2VfcGF0aCwgJ2dvYmplY3QnLCAg
J3dlYmtpdGRvbS5zeW1ib2xzJyksIHRtcC5uYW1lXSkKIApkaWZmIC0tZ2l0IGEvVG9vbHMvZ3Rr
L2NvbW1vbi5weSBiL1Rvb2xzL2d0ay9jb21tb24ucHkKaW5kZXggMDJkYjkzMi4uNmU1MWFmNSAx
MDA2NDQKLS0tIGEvVG9vbHMvZ3RrL2NvbW1vbi5weQorKysgYi9Ub29scy9ndGsvY29tbW9uLnB5
CkBAIC0yMSw3ICsyMSw5IEBAIGltcG9ydCBzZWxlY3QKIGltcG9ydCBzdWJwcm9jZXNzCiBpbXBv
cnQgc3lzCiAKLXNjcmlwdF9kaXIgPSBOb25lCitzeXMucGF0aC5pbnNlcnQoMCwgb3MucGF0aC5q
b2luKG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXyksICIuLi9qaGJ1aWxkIikpCitpbXBvcnQgamhi
dWlsZHJjX2NvbW1vbgorCiBidWlsZF9kaXIgPSBOb25lCiBsaWJyYXJ5X2J1aWxkX2RpciA9IE5v
bmUKIHRlc3RzX2xpYnJhcnlfYnVpbGRfZGlyID0gTm9uZQpAQCAtNzEsMTcgKzczLDYgQEAgZGVm
IGJpbmFyeV9idWlsZF9wYXRoKCphcmdzKToKICAgICByZXR1cm4gbGlicmFyeV9idWlsZF9kaXIK
IAogCi1kZWYgc2NyaXB0X3BhdGgoKmFyZ3MpOgotICAgIGdsb2JhbCBzY3JpcHRfZGlyCi0gICAg
aWYgbm90IHNjcmlwdF9kaXI6Ci0gICAgICAgIHNjcmlwdF9kaXIgPSBvcy5wYXRoLmpvaW4ob3Mu
cGF0aC5kaXJuYW1lKF9fZmlsZV9fKSwgJy4uJywgJ1NjcmlwdHMnKQotICAgIHJldHVybiBvcy5w
YXRoLmpvaW4oKihzY3JpcHRfZGlyLCkgKyBhcmdzKQotCi0KLWRlZiB0b3BfbGV2ZWxfcGF0aCgq
YXJncyk6Ci0gICAgcmV0dXJuIG9zLnBhdGguam9pbigqKChvcy5wYXRoLmpvaW4ob3MucGF0aC5k
aXJuYW1lKF9fZmlsZV9fKSwgJy4uJywgJy4uJyksKSArIGFyZ3MpKQotCi0KIGRlZiBnZXRfYnVp
bGRfcGF0aChmYXRhbD1UcnVlKToKICAgICBnbG9iYWwgYnVpbGRfZGlyCiAgICAgaWYgYnVpbGRf
ZGlyOgpAQCAtMTA5LDIwICsxMDAsMjAgQEAgZGVmIGdldF9idWlsZF9wYXRoKGZhdGFsPVRydWUp
OgogCiAgICAgZ2xvYmFsIGJ1aWxkX3R5cGVzCiAgICAgZm9yIGJ1aWxkX3R5cGUgaW4gYnVpbGRf
dHlwZXM6Ci0gICAgICAgIGJ1aWxkX2RpciA9IHRvcF9sZXZlbF9wYXRoKCdXZWJLaXRCdWlsZCcs
IGJ1aWxkX3R5cGUpCisgICAgICAgIGJ1aWxkX2RpciA9IGpoYnVpbGRyY19jb21tb24udG9wX2xl
dmVsX3BhdGgoJ1dlYktpdEJ1aWxkJywgYnVpbGRfdHlwZSkKICAgICAgICAgaWYgaXNfdmFsaWRf
YnVpbGRfZGlyZWN0b3J5KGJ1aWxkX2Rpcik6CiAgICAgICAgICAgICByZXR1cm4gYnVpbGRfZGly
CiAKICAgICAjIGRpc3RjaGVjayBidWlsZHMgaW4gYSBkaXJlY3RvcnkgbmFtZWQgX2J1aWxkIGlu
IHRoZSB0b3AtbGV2ZWwgcGF0aC4KLSAgICBidWlsZF9kaXIgPSB0b3BfbGV2ZWxfcGF0aCgiX2J1
aWxkIikKKyAgICBidWlsZF9kaXIgPSBqaGJ1aWxkcmNfY29tbW9uLnRvcF9sZXZlbF9wYXRoKCJf
YnVpbGQiKQogICAgIGlmIGlzX3ZhbGlkX2J1aWxkX2RpcmVjdG9yeShidWlsZF9kaXIpOgogICAg
ICAgICByZXR1cm4gYnVpbGRfZGlyCiAKLSAgICBidWlsZF9kaXIgPSB0b3BfbGV2ZWxfcGF0aCgp
CisgICAgYnVpbGRfZGlyID0gamhidWlsZHJjX2NvbW1vbi50b3BfbGV2ZWxfcGF0aCgpCiAgICAg
aWYgaXNfdmFsaWRfYnVpbGRfZGlyZWN0b3J5KGJ1aWxkX2Rpcik6CiAgICAgICAgIHJldHVybiBi
dWlsZF9kaXIKIAotICAgIGJ1aWxkX2RpciA9IHRvcF9sZXZlbF9wYXRoKCJXZWJLaXRCdWlsZCIp
CisgICAgYnVpbGRfZGlyID0gamhidWlsZHJjX2NvbW1vbi50b3BfbGV2ZWxfcGF0aCgiV2ViS2l0
QnVpbGQiKQogICAgIGlmIGlzX3ZhbGlkX2J1aWxkX2RpcmVjdG9yeShidWlsZF9kaXIpOgogICAg
ICAgICByZXR1cm4gYnVpbGRfZGlyCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL2d0ay9maW5kLW1ha2Ut
ZGlzdC1lcnJvcnMgYi9Ub29scy9ndGsvZmluZC1tYWtlLWRpc3QtZXJyb3JzCmluZGV4IDg4MGM3
ODAuLmEwYzQxNTAgMTAwNzU1Ci0tLSBhL1Rvb2xzL2d0ay9maW5kLW1ha2UtZGlzdC1lcnJvcnMK
KysrIGIvVG9vbHMvZ3RrL2ZpbmQtbWFrZS1kaXN0LWVycm9ycwpAQCAtMjAsNiArMjAsOSBAQCBp
bXBvcnQgb3MKIGltcG9ydCBzdWJwcm9jZXNzCiBpbXBvcnQgc3lzCiAKK3N5cy5wYXRoLmluc2Vy
dCgwLCBvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSwgIi4uL2poYnVpbGQi
KSkKK2ltcG9ydCBqaGJ1aWxkcmNfY29tbW9uIAorCiBkZWYgaXNfc291cmNlX2ZpbGVfbGlzdGlu
ZyhsaW5lKToKICAgICByZXR1cm4gbGluZS5zdHJpcCgpLnN0YXJ0c3dpdGgoJ1NvdXJjZScpCiAK
QEAgLTg2LDcgKzg5LDcgQEAgZGVmIGdldF91bmxpc3RlZF9oZWFkZXJzKGxpc3RlZF9tYWtlZmls
ZV9oZWFkZXJzKToKIGRlZiBnZXRfbWlzc2luZ19oZWFkZXJzKGxpc3RlZF9tYWtlZmlsZV9oZWFk
ZXJzKToKICAgICBtaXNzaW5nID0gc2V0KCkKICAgICBmb3IgaGVhZGVyIGluIGxpc3RlZF9tYWtl
ZmlsZV9oZWFkZXJzOgotICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMoY29tbW9uLnRvcF9s
ZXZlbF9wYXRoKGhlYWRlcikpOgorICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMoamhidWls
ZHJjX2NvbW1vbi50b3BfbGV2ZWxfcGF0aChoZWFkZXIpKToKICAgICAgICAgICAgIG1pc3Npbmcu
YWRkKGhlYWRlcikKICAgICByZXR1cm4gbWlzc2luZwogCmRpZmYgLS1naXQgYS9Ub29scy9ndGsv
Z2VuZXJhdGUtZ3RrZG9jIGIvVG9vbHMvZ3RrL2dlbmVyYXRlLWd0a2RvYwppbmRleCAxYTNiZThi
Li44M2YxMjAxIDEwMDc1NQotLS0gYS9Ub29scy9ndGsvZ2VuZXJhdGUtZ3RrZG9jCisrKyBiL1Rv
b2xzL2d0ay9nZW5lcmF0ZS1ndGtkb2MKQEAgLTIzLDYgKzIzLDkgQEAgaW1wb3J0IGxvZ2dpbmcK
IGltcG9ydCBvcy5wYXRoCiBpbXBvcnQgc3lzCiAKK3N5cy5wYXRoLmluc2VydCgwLCBvcy5wYXRo
LmpvaW4ob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSwgIi4uL2poYnVpbGQiKSkKK2ltcG9ydCBq
aGJ1aWxkcmNfY29tbW9uCisKIGRlZiBjb25maWd1cmVfbG9nZ2luZyh2ZXJib3NlKToKICAgICBs
ZXZlbCA9IGxvZ2dpbmcuREVCVUcgaWYgdmVyYm9zZSBlbHNlIGxvZ2dpbmcuSU5GTwogICAgIGxv
Z2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCdndGtkb2MnKQpAQCAtNjEsOCArNjQsOCBAQCBkZWYg
d2Via2l0ZG9tX2RvY3NfaHRtbF9wYXRoKCk6CiAgICAgcmV0dXJuIGNvbW1vbi5idWlsZF9wYXRo
KCdEb2N1bWVudGF0aW9uJywgJ3dlYmtpdGRvbWd0aycsICdodG1sJykKIAogZGVmIGdldF93ZWJr
aXQyX29wdGlvbnModmlydHVhbF9yb290KToKLSAgICBhcGlfcGF0aCA9IGNvbW1vbi50b3BfbGV2
ZWxfcGF0aCgnU291cmNlJywgJ1dlYktpdDInLCAnVUlQcm9jZXNzJywgJ0FQSScsICdndGsnKQot
ICAgIGluamVjdGVkX2J1bmRsZV9hcGlfcGF0aCA9IGNvbW1vbi50b3BfbGV2ZWxfcGF0aCgnU291
cmNlJywgJ1dlYktpdDInLCAnV2ViUHJvY2VzcycsICdJbmplY3RlZEJ1bmRsZScsICdBUEknLCAn
Z3RrJykKKyAgICBhcGlfcGF0aCA9IGpoYnVpbGRyY19jb21tb24udG9wX2xldmVsX3BhdGgoJ1Nv
dXJjZScsICdXZWJLaXQyJywgJ1VJUHJvY2VzcycsICdBUEknLCAnZ3RrJykKKyAgICBpbmplY3Rl
ZF9idW5kbGVfYXBpX3BhdGggPSBqaGJ1aWxkcmNfY29tbW9uLnRvcF9sZXZlbF9wYXRoKCdTb3Vy
Y2UnLCAnV2ViS2l0MicsICdXZWJQcm9jZXNzJywgJ0luamVjdGVkQnVuZGxlJywgJ0FQSScsICdn
dGsnKQogCiAgICAgaWYgY29tbW9uLmlzX2NtYWtlX2J1aWxkKCk6CiAgICAgICAgIGdlbmVyYXRl
ZF9hcGlfcGF0aCA9IGNvbW1vbi5idWlsZF9wYXRoKCdEZXJpdmVkU291cmNlcycsICd3ZWJraXQy
Z3RrJywgJ3dlYmtpdDInKQpAQCAtODksNyArOTIsNyBAQCBkZWYgZ2V0X3dlYmtpdDJfb3B0aW9u
cyh2aXJ0dWFsX3Jvb3QpOgogICAgICAgICAnc291cmNlX2RpcnMnIDogW3NyY19wYXRoKCksIGdl
bmVyYXRlZF9hcGlfcGF0aCwgaW5qZWN0ZWRfYnVuZGxlX2FwaV9wYXRoXSwKICAgICAgICAgJ2Nm
bGFncycgOgogICAgICAgICAgICAgIyBDb21tb24gcGF0aHMKLSAgICAgICAgICAgICcgLUknICsg
Y29tbW9uLnRvcF9sZXZlbF9wYXRoKCdTb3VyY2UnKSArIFwKKyAgICAgICAgICAgICcgLUknICsg
amhidWlsZHJjX2NvbW1vbi50b3BfbGV2ZWxfcGF0aCgnU291cmNlJykgKyBcCiAgICAgICAgICAg
ICAnIC1JJyArIGFwaV9wYXRoICsgXAogICAgICAgICAgICAgIyBBdXRvdG9vbHMgcGF0aHMKICAg
ICAgICAgICAgICcgLUknICsgY29tbW9uLmJ1aWxkX3BhdGgoJ0Rlcml2ZWRTb3VyY2VzJywgJ3dl
YmtpdDJndGsnLCAnaW5jbHVkZScpICsgXApAQCAtMTE1LDcgKzExOCw3IEBAIGRlZiBnZXRfd2Vi
a2l0Ml9vcHRpb25zKHZpcnR1YWxfcm9vdCk6CiAKIGRlZiBnZXRfd2Via2l0MV9vcHRpb25zKGd0
a192ZXJzaW9uLCB2aXJ0dWFsX3Jvb3QpOgogICAgIGRlZiBzcmNfcGF0aCgqYXJncyk6Ci0gICAg
ICAgIHJldHVybiBjb21tb24udG9wX2xldmVsX3BhdGgoKigoJ1NvdXJjZScsICdXZWJLaXQnLCAn
Z3RrJykgKyBhcmdzKSkKKyAgICAgICAgcmV0dXJuIGpoYnVpbGRyY19jb21tb24udG9wX2xldmVs
X3BhdGgoKigoJ1NvdXJjZScsICdXZWJLaXQnLCAnZ3RrJykgKyBhcmdzKSkKIAogICAgIGRlZiB3
ZWJraXR2ZXJzaW9uaF9wYXRoKCk6CiAgICAgICAgIGlmIGNvbW1vbi5pc19jbWFrZV9idWlsZCgp
OgpAQCAtMTQ2LDggKzE0OSw4IEBAIGRlZiBnZXRfd2Via2l0MV9vcHRpb25zKGd0a192ZXJzaW9u
LCB2aXJ0dWFsX3Jvb3QpOgogICAgICAgICAnY2ZsYWdzJyA6ICcgLUknICsgY29tbW9uLmJ1aWxk
X3BhdGgoJ1dlYktpdCcsICdndGsnKSArIFwKICAgICAgICAgICAgICAgICAgICAnIC1JJyArIGNv
bW1vbi5idWlsZF9wYXRoKCdEZXJpdmVkU291cmNlcycpICsgXAogICAgICAgICAgICAgICAgICAg
ICcgLUknICsgc3JjX3BhdGgoKSArIFwKLSAgICAgICAgICAgICAgICAgICAnIC1JJyArIGNvbW1v
bi50b3BfbGV2ZWxfcGF0aCgnU291cmNlJykgKyBcCi0gICAgICAgICAgICAgICAgICAgJyAtSScg
KyBjb21tb24udG9wX2xldmVsX3BhdGgoJ1NvdXJjZScsICdKYXZhU2NyaXB0Q29yZScsICdGb3J3
YXJkaW5nSGVhZGVycycpLAorICAgICAgICAgICAgICAgICAgICcgLUknICsgamhidWlsZHJjX2Nv
bW1vbi50b3BfbGV2ZWxfcGF0aCgnU291cmNlJykgKyBcCisgICAgICAgICAgICAgICAgICAgJyAt
SScgKyBqaGJ1aWxkcmNfY29tbW9uLnRvcF9sZXZlbF9wYXRoKCdTb3VyY2UnLCAnSmF2YVNjcmlw
dENvcmUnLCAnRm9yd2FyZGluZ0hlYWRlcnMnKSwKICAgICAgICAgJ2Nyb3NzX3JlZmVyZW5jZV9k
ZXBzJyA6IGdldF9ndGtkb2NfbW9kdWxlX3BhdGhzKHhyZWZfZGVwcykgKyBbd2Via2l0ZG9tX2Rv
Y3NfaHRtbF9wYXRoKCldLAogICAgICAgICAnaWdub3JlZF9maWxlcyc6IGdsb2IuZ2xvYihzcmNf
cGF0aCgnd2Via2l0JywgJypwcml2YXRlLionKSkgKyBcCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgZ2xvYi5nbG9iKHNyY19wYXRoKCd3ZWJraXQnLCAnd2Via2l0YXV0aGVudGljYXRpb25kaWFs
b2cuKicpKSArIFwKQEAgLTE1OSw3ICsxNjIsNyBAQCBkZWYgZ2V0X3dlYmtpdGRvbV9vcHRpb25z
KHZpcnR1YWxfcm9vdCk6CiAgICAgZGVmIGRlcml2ZWRfc291cmNlc19wYXRoKCphcmdzKToKICAg
ICAgICAgcmV0dXJuIGNvbW1vbi5idWlsZF9wYXRoKCooKCdEZXJpdmVkU291cmNlcycsICd3ZWJr
aXRkb20nKSArIGFyZ3MpKQogICAgIGRlZiBzcmNfcGF0aCgqYXJncyk6Ci0gICAgICAgIHJldHVy
biBjb21tb24udG9wX2xldmVsX3BhdGgoKigoJ1NvdXJjZScsICdXZWJDb3JlJywgJ2JpbmRpbmdz
JywgJ2dvYmplY3QnKSArIGFyZ3MpKQorICAgICAgICByZXR1cm4gamhidWlsZHJjX2NvbW1vbi50
b3BfbGV2ZWxfcGF0aCgqKCgnU291cmNlJywgJ1dlYkNvcmUnLCAnYmluZGluZ3MnLCAnZ29iamVj
dCcpICsgYXJncykpCiAKICAgICB4cmVmX2RlcHMgPSB7ICdnbGliLTIuMCcgOiBbJ2dsaWInLCAn
Z29iamVjdCcsICdnaW8nXSB9CiAKQEAgLTE3NSw3ICsxNzgsNyBAQCBkZWYgZ2V0X3dlYmtpdGRv
bV9vcHRpb25zKHZpcnR1YWxfcm9vdCk6CiAgICAgICAgICdzb3VyY2VfZGlycycgOiBbZGVyaXZl
ZF9zb3VyY2VzX3BhdGgoKV0sCiAgICAgICAgICdjZmxhZ3MnIDogJyAtSScgKyBkZXJpdmVkX3Nv
dXJjZXNfcGF0aCgpICsgXAogICAgICAgICAgICAgICAgICAgICcgLUknICsgc3JjX3BhdGgoKSAr
IFwKLSAgICAgICAgICAgICAgICAgICAnIC1JJyArIGNvbW1vbi50b3BfbGV2ZWxfcGF0aCgnU291
cmNlJyksCisgICAgICAgICAgICAgICAgICAgJyAtSScgKyBqaGJ1aWxkcmNfY29tbW9uLnRvcF9s
ZXZlbF9wYXRoKCdTb3VyY2UnKSwKICAgICAgICAgJ2Nyb3NzX3JlZmVyZW5jZV9kZXBzJyA6IGdl
dF9ndGtkb2NfbW9kdWxlX3BhdGhzKHhyZWZfZGVwcyksCiAgICAgICAgICdpZ25vcmVkX2ZpbGVz
JzogZ2xvYi5nbG9iKGRlcml2ZWRfc291cmNlc19wYXRoKCcqUHJpdmF0ZS5oJykpCiAgICAgfQpk
aWZmIC0tZ2l0IGEvVG9vbHMvZ3RrL2dlbmVyYXRlLWluc3BlY3Rvci1ncmVzb3VyY2UtbWFuaWZl
c3QucHkgYi9Ub29scy9ndGsvZ2VuZXJhdGUtaW5zcGVjdG9yLWdyZXNvdXJjZS1tYW5pZmVzdC5w
eQppbmRleCBhZGY0ZjUyLi44NTgwMzM3IDEwMDc1NQotLS0gYS9Ub29scy9ndGsvZ2VuZXJhdGUt
aW5zcGVjdG9yLWdyZXNvdXJjZS1tYW5pZmVzdC5weQorKysgYi9Ub29scy9ndGsvZ2VuZXJhdGUt
aW5zcGVjdG9yLWdyZXNvdXJjZS1tYW5pZmVzdC5weQpAQCAtMjAsNyArMjAsMTAgQEAgaW1wb3J0
IGdsb2IKIGltcG9ydCBvcwogaW1wb3J0IHN5cwogCi1yZXNvdXJjZXNfcGF0aCA9IGNvbW1vbi50
b3BfbGV2ZWxfcGF0aCgpICsgIi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvIgorc3lzLnBhdGguaW5z
ZXJ0KDAsIG9zLnBhdGguam9pbihvcy5wYXRoLmRpcm5hbWUoX19maWxlX18pLCAiLi4vamhidWls
ZCIpKQoraW1wb3J0IGpoYnVpbGRyY19jb21tb24KKworcmVzb3VyY2VzX3BhdGggPSBqaGJ1aWxk
cmNfY29tbW9uLnRvcF9sZXZlbF9wYXRoKCkgKyAiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS8iCiBp
bnNwZWN0b3JfZmlsZXMgPSBcCiAgICAgZ2xvYi5nbG9iKHJlc291cmNlc19wYXRoICsgJ1VzZXJJ
bnRlcmZhY2UvKi5odG1sJykgKyBcCiAgICAgZ2xvYi5nbG9iKHJlc291cmNlc19wYXRoICsgJ1Vz
ZXJJbnRlcmZhY2UvQmFzZS8qLmpzJykgKyBcCmRpZmYgLS1naXQgYS9Ub29scy9ndGsvamhidWls
ZHJjIGIvVG9vbHMvZ3RrL2poYnVpbGRyYwppbmRleCA2OWY5NDU3Li4xZTBiZjRiIDEwMDY0NAot
LS0gYS9Ub29scy9ndGsvamhidWlsZHJjCisrKyBiL1Rvb2xzL2d0ay9qaGJ1aWxkcmMKQEAgLTE1
LDM2ICsxNSwxNiBAQAogIyBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3Qs
IHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiAjIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5r
bGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQogCi1p
bXBvcnQgbXVsdGlwcm9jZXNzaW5nCiBpbXBvcnQgc3lzCiAKK3N5cy5wYXRoLmluc2VydCgwLCBv
cy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSwgIi4uL2poYnVpbGQiKSApCitp
bXBvcnQgamhidWlsZHJjX2NvbW1vbgoramhidWlsZHJjX2NvbW1vbi5pbml0KGdsb2JhbHMoKSwg
Imd0ayIpIAorCiBfX2d0a190b29sc19kaXJlY3RvcnkgPSBvcy5wYXRoLmFic3BhdGgob3MucGF0
aC5kaXJuYW1lKF9fZmlsZV9fKSkKIHN5cy5wYXRoID0gW19fZ3RrX3Rvb2xzX2RpcmVjdG9yeV0g
KyBzeXMucGF0aAogaW1wb3J0IGNvbW1vbgogCi1idWlsZF9wb2xpY3kgPSAndXBkYXRlZCcKLQot
X19tb2R1bGVzZXRfZmlsZV91cmkgPSAnZmlsZTovLycgKyBvcy5wYXRoLmpvaW4oX19ndGtfdG9v
bHNfZGlyZWN0b3J5LCAnamhidWlsZC5tb2R1bGVzJykKLV9fZXh0cmFfbW9kdWxlc2V0cyA9IG9z
LmVudmlyb24uZ2V0KCJXRUJLSVRfRVhUUkFfTU9EVUxFU0VUUyIsICIiKS5zcGxpdCgiLCIpCi1t
b2R1bGVzZXQgPSBbIF9fbW9kdWxlc2V0X2ZpbGVfdXJpLCBdCi1pZiBfX2V4dHJhX21vZHVsZXNl
dHMgIT0gWycnXToKLSAgICBtb2R1bGVzZXQuZXh0ZW5kKF9fZXh0cmFfbW9kdWxlc2V0cykKLQot
X19leHRyYV9tb2R1bGVzID0gb3MuZW52aXJvbi5nZXQoIldFQktJVF9FWFRSQV9NT0RVTEVTIiwg
IiIpLnNwbGl0KCIsIikKLW1vZHVsZXMgPSBbICd3ZWJraXRndGstdGVzdGluZy1kZXBlbmRlbmNp
ZXMnLCBdCi1pZiBfX2V4dHJhX21vZHVsZXMgIT0gWycnXToKLSAgICBtb2R1bGVzLmV4dGVuZChf
X2V4dHJhX21vZHVsZXMpCi0KLWlmIG9zLmVudmlyb24uaGFzX2tleSgnV0VCS0lUX09VVFBVVERJ
UicpOgotICAgIGNoZWNrb3V0cm9vdCA9IG9zLnBhdGguYWJzcGF0aChvcy5wYXRoLmpvaW4ob3Mu
ZW52aXJvblsnV0VCS0lUX09VVFBVVERJUiddLCAnRGVwZW5kZW5jaWVzJywgJ1NvdXJjZScpKQot
ICAgIHByZWZpeCA9IG9zLnBhdGguYWJzcGF0aChvcy5wYXRoLmpvaW4ob3MuZW52aXJvblsnV0VC
S0lUX09VVFBVVERJUiddLCAnRGVwZW5kZW5jaWVzJywgJ1Jvb3QnKSkKLWVsc2U6Ci0gICAgY2hl
Y2tvdXRyb290ID0gb3MucGF0aC5hYnNwYXRoKGNvbW1vbi50b3BfbGV2ZWxfcGF0aCgnV2ViS2l0
QnVpbGQnLCdEZXBlbmRlbmNpZXMnLCAnU291cmNlJykpCi0gICAgcHJlZml4ID0gb3MucGF0aC5h
YnNwYXRoKGNvbW1vbi50b3BfbGV2ZWxfcGF0aCgnV2ViS2l0QnVpbGQnLCdEZXBlbmRlbmNpZXMn
LCAnUm9vdCcpKQotCi1ub25vdGlmeSA9IFRydWUKLW5vdHJheWljb24gPSBUcnVlCi0KIGlmICdO
VU1CRVJfT0ZfUFJPQ0VTU09SUycgaW4gb3MuZW52aXJvbjoKICAgICBqb2JzID0gb3MuZW52aXJv
blsnTlVNQkVSX09GX1BST0NFU1NPUlMnXQogCmRpZmYgLS1naXQgYS9Ub29scy9qaGJ1aWxkL2po
YnVpbGRyY19jb21tb24ucHkgYi9Ub29scy9qaGJ1aWxkL2poYnVpbGRyY19jb21tb24ucHkKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWZhNDk0NgotLS0gL2Rldi9udWxsCisr
KyBiL1Rvb2xzL2poYnVpbGQvamhidWlsZHJjX2NvbW1vbi5weQpAQCAtMCwwICsxLDY0IEBACisj
IS91c3IvYmluL2VudiBweXRob24KKyMgQ29weXJpZ2h0IChDKSAyMDExIElnYWxpYSBTLkwuCisj
IENvcHlyaWdodCAoQykgMjAxMiBJbnRlbCBDb3Jwb3JhdGlvbgorIworIyBUaGlzIGxpYnJhcnkg
aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisjIG1vZGlm
eSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyMg
TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0
aGVyCisjIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkg
bGF0ZXIgdmVyc2lvbi4KKyMKKyMgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo
b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsg
d2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisjIE1FUkNIQU5UQUJJTElUWSBv
ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUKKyMgTGVzc2Vy
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyMKKyMgWW91IHNob3Vs
ZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwor
IyBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBG
cmVlIFNvZnR3YXJlCisjIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlm
dGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0EKKworaW1wb3J0IG11bHRpcHJvY2Vz
c2luZworaW1wb3J0IHN5cworaW1wb3J0IG9zCisKKworc2NyaXB0X2RpciA9IE5vbmUKKworCitk
ZWYgc2NyaXB0X3BhdGgoKmFyZ3MpOgorICAgIGdsb2JhbCBzY3JpcHRfZGlyCisgICAgaWYgbm90
IHNjcmlwdF9kaXI6CisgICAgICAgIHNjcmlwdF9kaXIgPSBvcy5wYXRoLmpvaW4ob3MucGF0aC5k
aXJuYW1lKF9fZmlsZV9fKSwgJy4uJywgJ1NjcmlwdHMnKQorICAgIHJldHVybiBvcy5wYXRoLmpv
aW4oKihzY3JpcHRfZGlyLCkgKyBhcmdzKQorCisKK2RlZiB0b3BfbGV2ZWxfcGF0aCgqYXJncyk6
CisgICAgcmV0dXJuIG9zLnBhdGguam9pbigqKChvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1l
KF9fZmlsZV9fKSwgJy4uJywgJy4uJyksKSArIGFyZ3MpKQorCisKK2RlZiBpbml0KGpoYnVpbGRy
Y19nbG9iYWxzLCBwbGF0Zm9ybSk6CisKKyAgICBfX3Rvb2xzX2RpcmVjdG9yeSA9IG9zLnBhdGgu
am9pbihvcy5wYXRoLmRpcm5hbWUoX19maWxlX18pLCAiLi4vIiwgcGxhdGZvcm0pCisgICAgc3lz
LnBhdGguaW5zZXJ0KDAsIF9fdG9vbHNfZGlyZWN0b3J5KQorCisgICAgamhidWlsZHJjX2dsb2Jh
bHNbImJ1aWxkX3BvbGljeSJdID0gJ3VwZGF0ZWQnCisKKyAgICBfX21vZHVsZXNldF9maWxlX3Vy
aSA9ICdmaWxlOi8vJyArIG9zLnBhdGguam9pbihfX3Rvb2xzX2RpcmVjdG9yeSwgJ2poYnVpbGQu
bW9kdWxlcycpCisgICAgX19leHRyYV9tb2R1bGVzZXRzID0gb3MuZW52aXJvbi5nZXQoIldFQktJ
VF9FWFRSQV9NT0RVTEVTRVRTIiwgIiIpLnNwbGl0KCIsIikKKyAgICBqaGJ1aWxkcmNfZ2xvYmFs
c1sibW9kdWxlc2V0Il0gPSBbX19tb2R1bGVzZXRfZmlsZV91cmksIF0KKyAgICBpZiBfX2V4dHJh
X21vZHVsZXNldHMgIT0gWycnXToKKyAgICAgICAgamhidWlsZHJjX2dsb2JhbHNbIm1vZHVsZXNl
dCJdLmV4dGVuZChfX2V4dHJhX21vZHVsZXNldHMpCisKKyAgICBfX2V4dHJhX21vZHVsZXMgPSBv
cy5lbnZpcm9uLmdldCgiV0VCS0lUX0VYVFJBX01PRFVMRVMiLCAiIikuc3BsaXQoIiwiKQorICAg
IGpoYnVpbGRyY19nbG9iYWxzWyJtb2R1bGVzIl0gPSBbJ3dlYmtpdCcgKyBwbGF0Zm9ybSArICct
dGVzdGluZy1kZXBlbmRlbmNpZXMnLCBdCisgICAgaWYgX19leHRyYV9tb2R1bGVzICE9IFsnJ106
CisgICAgICAgIGpoYnVpbGRyY19nbG9iYWxzWyJtb2R1bGVzIl0uZXh0ZW5kKF9fZXh0cmFfbW9k
dWxlcykKKworICAgIGlmICdXRUJLSVRfT1VUUFVURElSJyBpbiBvcy5lbnZpcm9uOgorICAgICAg
ICBqaGJ1aWxkcmNfZ2xvYmFsc1siY2hlY2tvdXRyb290Il0gPSBjaGVja291dHJvb3QgPSBvcy5w
YXRoLmFic3BhdGgob3MucGF0aC5qb2luKG9zLmVudmlyb25bJ1dFQktJVF9PVVRQVVRESVInXSwg
J0RlcGVuZGVuY2llcycsICdTb3VyY2UnKSkKKyAgICAgICAgamhidWlsZHJjX2dsb2JhbHNbInBy
ZWZpeCJdID0gb3MucGF0aC5hYnNwYXRoKG9zLnBhdGguam9pbihvcy5lbnZpcm9uWydXRUJLSVRf
T1VUUFVURElSJ10sICdEZXBlbmRlbmNpZXMnLCAnUm9vdCcpKQorICAgIGVsc2U6CisgICAgICAg
IGpoYnVpbGRyY19nbG9iYWxzWyJjaGVja291dHJvb3QiXSA9IGNoZWNrb3V0cm9vdCA9IG9zLnBh
dGguYWJzcGF0aCh0b3BfbGV2ZWxfcGF0aCgnV2ViS2l0QnVpbGQnLCAnRGVwZW5kZW5jaWVzJywg
J1NvdXJjZScpKQorICAgICAgICBqaGJ1aWxkcmNfZ2xvYmFsc1sicHJlZml4Il0gPSBvcy5wYXRo
LmFic3BhdGgodG9wX2xldmVsX3BhdGgoJ1dlYktpdEJ1aWxkJywgJ0RlcGVuZGVuY2llcycsICdS
b290JykpCisKKyAgICBqaGJ1aWxkcmNfZ2xvYmFsc1sibm9ub3RpZnkiXSA9IFRydWUKKyAgICBq
aGJ1aWxkcmNfZ2xvYmFsc1sibm90cmF5aWNvbiJdID0gVHJ1ZSAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>225059</attachid>
            <date>2014-02-24 06:11:56 -0800</date>
            <delta_ts>2014-02-24 06:27:48 -0800</delta_ts>
            <desc>Patch v14</desc>
            <filename>extract_v7.patch</filename>
            <type>text/plain</type>
            <size>18163</size>
            <attacher name="Tibor Mészáros">mtiborinf</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBlYzI3
Yzg2Li42ZGJlNDQ4IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzUgQEAKKzIwMTQtMDItMjQgIFRpYm9yIE1lc3phcm9zICA8dG1l
c3phcm9zLnUtc3plZ2VkQHBhcnRuZXIuc2Ftc3VuZy5jb20+CisKKyAgICAgICAgRXh0cmFjdCBj
b21tb24gcGFydHMgZnJvbSBqaGJ1aWxkcmMgZmlsZXMuCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjU5ODYKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDby1hdXRob3JlZCB3aXRoIFBldGVyIFN6YW5rYSA8
aDg2ODA2NEBzdHVkLnUtc3plZ2VkLmh1Pi4KKworICAgICAgICAqIFNjcmlwdHMvcnVuLWd0ay10
ZXN0czoKKyAgICAgICAgKFRlc3RSdW5uZXIuX3NldHVwX3Rlc3RpbmdfZW52aXJvbm1lbnQpOgor
ICAgICAgICAqIGVmbC9jb21tb24ucHk6IFJlbW92ZWQuCisgICAgICAgICogZWZsL2poYnVpbGRy
YzoKKyAgICAgICAgKiBndGsvY2hlY2stZ2RvbS1zeW1ib2xzOgorICAgICAgICAqIGd0ay9jb21t
b24ucHk6CisgICAgICAgIChiaW5hcnlfYnVpbGRfcGF0aCk6CisgICAgICAgIChnZXRfYnVpbGRf
cGF0aCk6CisgICAgICAgICogZ3RrL2ZpbmQtbWFrZS1kaXN0LWVycm9yczoKKyAgICAgICAgKGdl
dF9taXNzaW5nX2hlYWRlcnMpOgorICAgICAgICAqIGd0ay9nZW5lcmF0ZS1ndGtkb2M6CisgICAg
ICAgIChnZXRfd2Via2l0Ml9vcHRpb25zKToKKyAgICAgICAgKGdldF93ZWJraXQxX29wdGlvbnMu
c3JjX3BhdGgpOgorICAgICAgICAoZ2V0X3dlYmtpdDFfb3B0aW9ucyk6CisgICAgICAgIChnZXRf
d2Via2l0ZG9tX29wdGlvbnMuc3JjX3BhdGgpOgorICAgICAgICAoZ2V0X3dlYmtpdGRvbV9vcHRp
b25zKToKKyAgICAgICAgKiBndGsvZ2VuZXJhdGUtaW5zcGVjdG9yLWdyZXNvdXJjZS1tYW5pZmVz
dC5weToKKyAgICAgICAgKiBndGsvamhidWlsZHJjOgorICAgICAgICAqIGpoYnVpbGQvamhidWls
ZHJjX2NvbW1vbi5weTogQWRkZWQuCisgICAgICAgIChzY3JpcHRfcGF0aCk6CisgICAgICAgICh0
b3BfbGV2ZWxfcGF0aCk6CisgICAgICAgIChpbml0KToKKwogMjAxNC0wMi0yNCAgRGllZ28gUGlu
byBHYXJjaWEgIDxkcGlub0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQuIEZpeCBj
b2RlIGluZGVudGF0aW9uIGFuZCBzcGFjaW5nLgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy9y
dW4tZ3RrLXRlc3RzIGIvVG9vbHMvU2NyaXB0cy9ydW4tZ3RrLXRlc3RzCmluZGV4IGU5ODA4NjAu
LjUwODg0NDcgMTAwNzU1Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvcnVuLWd0ay10ZXN0cworKysgYi9U
b29scy9TY3JpcHRzL3J1bi1ndGstdGVzdHMKQEAgLTMxLDYgKzMxLDkgQEAgc3lzLnBhdGguYXBw
ZW5kKG9zLnBhdGguam9pbih0b3BfbGV2ZWxfZGlyZWN0b3J5LCAiVG9vbHMiLCAiZ3RrIikpCiBp
bXBvcnQgY29tbW9uCiBpbXBvcnQgamhidWlsZHV0aWxzCiAKK3N5cy5wYXRoLmluc2VydCgwLCBv
cy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSwgIi4uL2poYnVpbGQiKSkKK2lt
cG9ydCBqaGJ1aWxkcmNfY29tbW9uIAorCiBjbGFzcyBTa2lwcGVkVGVzdDoKICAgICBFTlRJUkVf
U1VJVEUgPSBOb25lCiAKQEAgLTE5NSw3ICsxOTgsNyBAQCBjbGFzcyBUZXN0UnVubmVyOgogICAg
IGRlZiBfc2V0dXBfdGVzdGluZ19lbnZpcm9ubWVudChzZWxmKToKICAgICAgICAgc2VsZi5fdGVz
dF9lbnYgPSBvcy5lbnZpcm9uCiAgICAgICAgIHNlbGYuX3Rlc3RfZW52WydHU0VUVElOR1NfQkFD
S0VORCddID0gJ21lbW9yeScKLSAgICAgICAgc2VsZi5fdGVzdF9lbnZbIlRFU1RfV0VCS0lUX0FQ
SV9XRUJLSVQyX1JFU09VUkNFU19QQVRIIl0gPSBjb21tb24udG9wX2xldmVsX3BhdGgoIlRvb2xz
IiwgIlRlc3RXZWJLaXRBUEkiLCAiVGVzdHMiLCAiV2ViS2l0MiIpCisgICAgICAgIHNlbGYuX3Rl
c3RfZW52WyJURVNUX1dFQktJVF9BUElfV0VCS0lUMl9SRVNPVVJDRVNfUEFUSCJdID0gamhidWls
ZHJjX2NvbW1vbi50b3BfbGV2ZWxfcGF0aCgiVG9vbHMiLCAiVGVzdFdlYktpdEFQSSIsICJUZXN0
cyIsICJXZWJLaXQyIikKICAgICAgICAgc2VsZi5fdGVzdF9lbnZbIlRFU1RfV0VCS0lUX0FQSV9X
RUJLSVQyX0lOSkVDVEVEX0JVTkRMRV9QQVRIIl0gPSBjb21tb24udGVzdHNfbGlicmFyeV9idWls
ZF9wYXRoKCkKICAgICAgICAgc2VsZi5fdGVzdF9lbnZbIldFQktJVF9FWEVDX1BBVEgiXSA9IHNl
bGYuX3Byb2dyYW1zX3BhdGgKIApkaWZmIC0tZ2l0IGEvVG9vbHMvZWZsL2NvbW1vbi5weSBiL1Rv
b2xzL2VmbC9jb21tb24ucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc3NjU3YjMu
LjAwMDAwMDAKLS0tIGEvVG9vbHMvZWZsL2NvbW1vbi5weQorKysgL2Rldi9udWxsCkBAIC0xLDMx
ICswLDAgQEAKLSMhL3Vzci9iaW4vZW52IHB5dGhvbgotIyBDb3B5cmlnaHQgKEMpIDIwMTEgSWdh
bGlhIFMuTC4KLSMKLSMgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk
aXN0cmlidXRlIGl0IGFuZC9vcgotIyBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH
TlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi0jIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotIyB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vu
c2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0jCi0jIFRoaXMgbGli
cmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAot
IyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy
YW50eSBvZgotIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UuICBTZWUgdGhlIEdOVQotIyBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3Ig
bW9yZSBkZXRhaWxzLgotIwotIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo
ZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi0jIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxp
YnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSMgRm91bmRhdGlvbiwg
SW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAt
MTMwMSAgVVNBCi0KLWltcG9ydCBvcwotCi1zY3JpcHRfZGlyID0gTm9uZQotCi0KLWRlZiBzY3Jp
cHRfcGF0aCgqYXJncyk6Ci0gICAgZ2xvYmFsIHNjcmlwdF9kaXIKLSAgICBpZiBub3Qgc2NyaXB0
X2RpcjoKLSAgICAgICAgc2NyaXB0X2RpciA9IG9zLnBhdGguam9pbihvcy5wYXRoLmRpcm5hbWUo
X19maWxlX18pLCAnLi4nLCAnU2NyaXB0cycpCi0gICAgcmV0dXJuIG9zLnBhdGguam9pbigqKHNj
cmlwdF9kaXIsKSArIGFyZ3MpCi0KLQotZGVmIHRvcF9sZXZlbF9wYXRoKCphcmdzKToKLSAgICBy
ZXR1cm4gb3MucGF0aC5qb2luKCooKHNjcmlwdF9wYXRoKCcuLicsICcuLicpLCkgKyBhcmdzKSkK
ZGlmZiAtLWdpdCBhL1Rvb2xzL2VmbC9qaGJ1aWxkcmMgYi9Ub29scy9lZmwvamhidWlsZHJjCmlu
ZGV4IDc3ZGFhZTkuLjc4MjU5NTEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL2VmbC9qaGJ1aWxkcmMKKysr
IGIvVG9vbHMvZWZsL2poYnVpbGRyYwpAQCAtMTYsMzcgKzE2LDExIEBACiAjIExpY2Vuc2UgYWxv
bmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUK
ICMgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9z
dG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCiAKLWltcG9ydCBtdWx0aXByb2Nlc3NpbmcKIGltcG9y
dCBzeXMKIAotX19lZmxfdG9vbHNfZGlyZWN0b3J5ID0gb3MucGF0aC5hYnNwYXRoKG9zLnBhdGgu
ZGlybmFtZShfX2ZpbGVfXykpCi1zeXMucGF0aCA9IFtfX2VmbF90b29sc19kaXJlY3RvcnldICsg
c3lzLnBhdGgKLWltcG9ydCBjb21tb24KLQotYnVpbGRfcG9saWN5ID0gJ3VwZGF0ZWQnCi0KLSMg
RklYTUU6IG1vdmUgc2hhcmVkIHBhcnRzIGludG8gLi4vamhidWlsZCBmb2xkZXIuCi0KLV9fbW9k
dWxlc2V0X2ZpbGVfdXJpID0gJ2ZpbGU6Ly8nICsgb3MucGF0aC5qb2luKF9fZWZsX3Rvb2xzX2Rp
cmVjdG9yeSwgJ2poYnVpbGQubW9kdWxlcycpCi1fX2V4dHJhX21vZHVsZXNldHMgPSBvcy5lbnZp
cm9uLmdldCgiV0VCS0lUX0VYVFJBX01PRFVMRVNFVFMiLCAiIikuc3BsaXQoIiwiKQotbW9kdWxl
c2V0ID0gWyBfX21vZHVsZXNldF9maWxlX3VyaSwgXQotaWYgX19leHRyYV9tb2R1bGVzZXRzICE9
IFsnJ106Ci0gICAgbW9kdWxlc2V0LmV4dGVuZChfX2V4dHJhX21vZHVsZXNldHMpCi0KLV9fZXh0
cmFfbW9kdWxlcyA9IG9zLmVudmlyb24uZ2V0KCJXRUJLSVRfRVhUUkFfTU9EVUxFUyIsICIiKS5z
cGxpdCgiLCIpCi1tb2R1bGVzID0gWyAnd2Via2l0ZWZsLXRlc3RpbmctZGVwZW5kZW5jaWVzJywg
XQotaWYgX19leHRyYV9tb2R1bGVzICE9IFsnJ106Ci0gICAgbW9kdWxlcy5leHRlbmQoX19leHRy
YV9tb2R1bGVzKQotCi1pZiBvcy5lbnZpcm9uLmhhc19rZXkoJ1dFQktJVF9PVVRQVVRESVInKToK
LSAgICBjaGVja291dHJvb3QgPSBvcy5wYXRoLmFic3BhdGgob3MucGF0aC5qb2luKG9zLmVudmly
b25bJ1dFQktJVF9PVVRQVVRESVInXSwgJ0RlcGVuZGVuY2llcycsICdTb3VyY2UnKSkKLSAgICBw
cmVmaXggPSBvcy5wYXRoLmFic3BhdGgob3MucGF0aC5qb2luKG9zLmVudmlyb25bJ1dFQktJVF9P
VVRQVVRESVInXSwgJ0RlcGVuZGVuY2llcycsICdSb290JykpCi1lbHNlOgotICAgIGNoZWNrb3V0
cm9vdCA9IG9zLnBhdGguYWJzcGF0aChjb21tb24udG9wX2xldmVsX3BhdGgoJ1dlYktpdEJ1aWxk
JywnRGVwZW5kZW5jaWVzJywgJ1NvdXJjZScpKQotICAgIHByZWZpeCA9IG9zLnBhdGguYWJzcGF0
aChjb21tb24udG9wX2xldmVsX3BhdGgoJ1dlYktpdEJ1aWxkJywnRGVwZW5kZW5jaWVzJywgJ1Jv
b3QnKSkKLQotbm9ub3RpZnkgPSBUcnVlCi1ub3RyYXlpY29uID0gVHJ1ZQorc3lzLnBhdGguaW5z
ZXJ0KDAsIG9zLnBhdGguam9pbihvcy5wYXRoLmRpcm5hbWUoX19maWxlX18pLCAiLi4vamhidWls
ZCIpICkKK2ltcG9ydCBqaGJ1aWxkcmNfY29tbW9uCitqaGJ1aWxkcmNfY29tbW9uLmluaXQoZ2xv
YmFscygpLCAiZWZsIikgCiAKIGlmICdOVU1CRVJfT0ZfUFJPQ0VTU09SUycgaW4gb3MuZW52aXJv
bjoKICAgICBqb2JzID0gb3MuZW52aXJvblsnTlVNQkVSX09GX1BST0NFU1NPUlMnXQpkaWZmIC0t
Z2l0IGEvVG9vbHMvZ3RrL2NoZWNrLWdkb20tc3ltYm9scyBiL1Rvb2xzL2d0ay9jaGVjay1nZG9t
LXN5bWJvbHMKaW5kZXggZjExMDhiNy4uNTg4YjdlOCAxMDA3NTUKLS0tIGEvVG9vbHMvZ3RrL2No
ZWNrLWdkb20tc3ltYm9scworKysgYi9Ub29scy9ndGsvY2hlY2stZ2RvbS1zeW1ib2xzCkBAIC0y
Miw2ICsyMiw4IEBAIGltcG9ydCBzdWJwcm9jZXNzCiBpbXBvcnQgc3lzCiBpbXBvcnQgdGVtcGZp
bGUKIAorc3lzLnBhdGguaW5zZXJ0KDAsIG9zLnBhdGguam9pbihvcy5wYXRoLmRpcm5hbWUoX19m
aWxlX18pLCAiLi4vamhidWlsZCIpKQoraW1wb3J0IGpoYnVpbGRyY19jb21tb24gCiAKIGRlZiBz
aG91bGRfdXBkYXRlX3N5bWJvbHNfZmlsZShuZXcsIG9sZCk6CiAgICAgaWYgbm90IG9zLnBhdGgu
ZXhpc3RzKG9sZCk6CkBAIC01MCw3ICs1Miw3IEBAIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6
CiAgICAgICAgICAgICAgICAgdG1wLndyaXRlKGZpbGVfaGFuZGxlLnJlYWQoKSkKICAgICAgICAg
dG1wLmZsdXNoKCkKIAotICAgICAgICBnZG9tX3NvdXJjZV9wYXRoID0gY29tbW9uLnRvcF9sZXZl
bF9wYXRoKCdTb3VyY2UnLCAnV2ViQ29yZScsICdiaW5kaW5ncycpCisgICAgICAgIGdkb21fc291
cmNlX3BhdGggPSBqaGJ1aWxkcmNfY29tbW9uLnRvcF9sZXZlbF9wYXRoKCdTb3VyY2UnLCAnV2Vi
Q29yZScsICdiaW5kaW5ncycpCiAgICAgICAgIGFwaV9icmVha190ZXN0X3BhdGggPSBvcy5wYXRo
LmpvaW4oZ2RvbV9zb3VyY2VfcGF0aCwgJ3NjcmlwdHMnLCAnZ29iamVjdC1ydW4tYXBpLWJyZWFr
LXRlc3QnKQogICAgICAgICBzdWJwcm9jZXNzLmNhbGwoW3N5cy5leGVjdXRhYmxlLCBhcGlfYnJl
YWtfdGVzdF9wYXRoLCBvcy5wYXRoLmpvaW4oZ2RvbV9zb3VyY2VfcGF0aCwgJ2dvYmplY3QnLCAg
J3dlYmtpdGRvbS5zeW1ib2xzJyksIHRtcC5uYW1lXSkKIApkaWZmIC0tZ2l0IGEvVG9vbHMvZ3Rr
L2NvbW1vbi5weSBiL1Rvb2xzL2d0ay9jb21tb24ucHkKaW5kZXggMDJkYjkzMi4uNmU1MWFmNSAx
MDA2NDQKLS0tIGEvVG9vbHMvZ3RrL2NvbW1vbi5weQorKysgYi9Ub29scy9ndGsvY29tbW9uLnB5
CkBAIC0yMSw3ICsyMSw5IEBAIGltcG9ydCBzZWxlY3QKIGltcG9ydCBzdWJwcm9jZXNzCiBpbXBv
cnQgc3lzCiAKLXNjcmlwdF9kaXIgPSBOb25lCitzeXMucGF0aC5pbnNlcnQoMCwgb3MucGF0aC5q
b2luKG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXyksICIuLi9qaGJ1aWxkIikpCitpbXBvcnQgamhi
dWlsZHJjX2NvbW1vbgorCiBidWlsZF9kaXIgPSBOb25lCiBsaWJyYXJ5X2J1aWxkX2RpciA9IE5v
bmUKIHRlc3RzX2xpYnJhcnlfYnVpbGRfZGlyID0gTm9uZQpAQCAtNzEsMTcgKzczLDYgQEAgZGVm
IGJpbmFyeV9idWlsZF9wYXRoKCphcmdzKToKICAgICByZXR1cm4gbGlicmFyeV9idWlsZF9kaXIK
IAogCi1kZWYgc2NyaXB0X3BhdGgoKmFyZ3MpOgotICAgIGdsb2JhbCBzY3JpcHRfZGlyCi0gICAg
aWYgbm90IHNjcmlwdF9kaXI6Ci0gICAgICAgIHNjcmlwdF9kaXIgPSBvcy5wYXRoLmpvaW4ob3Mu
cGF0aC5kaXJuYW1lKF9fZmlsZV9fKSwgJy4uJywgJ1NjcmlwdHMnKQotICAgIHJldHVybiBvcy5w
YXRoLmpvaW4oKihzY3JpcHRfZGlyLCkgKyBhcmdzKQotCi0KLWRlZiB0b3BfbGV2ZWxfcGF0aCgq
YXJncyk6Ci0gICAgcmV0dXJuIG9zLnBhdGguam9pbigqKChvcy5wYXRoLmpvaW4ob3MucGF0aC5k
aXJuYW1lKF9fZmlsZV9fKSwgJy4uJywgJy4uJyksKSArIGFyZ3MpKQotCi0KIGRlZiBnZXRfYnVp
bGRfcGF0aChmYXRhbD1UcnVlKToKICAgICBnbG9iYWwgYnVpbGRfZGlyCiAgICAgaWYgYnVpbGRf
ZGlyOgpAQCAtMTA5LDIwICsxMDAsMjAgQEAgZGVmIGdldF9idWlsZF9wYXRoKGZhdGFsPVRydWUp
OgogCiAgICAgZ2xvYmFsIGJ1aWxkX3R5cGVzCiAgICAgZm9yIGJ1aWxkX3R5cGUgaW4gYnVpbGRf
dHlwZXM6Ci0gICAgICAgIGJ1aWxkX2RpciA9IHRvcF9sZXZlbF9wYXRoKCdXZWJLaXRCdWlsZCcs
IGJ1aWxkX3R5cGUpCisgICAgICAgIGJ1aWxkX2RpciA9IGpoYnVpbGRyY19jb21tb24udG9wX2xl
dmVsX3BhdGgoJ1dlYktpdEJ1aWxkJywgYnVpbGRfdHlwZSkKICAgICAgICAgaWYgaXNfdmFsaWRf
YnVpbGRfZGlyZWN0b3J5KGJ1aWxkX2Rpcik6CiAgICAgICAgICAgICByZXR1cm4gYnVpbGRfZGly
CiAKICAgICAjIGRpc3RjaGVjayBidWlsZHMgaW4gYSBkaXJlY3RvcnkgbmFtZWQgX2J1aWxkIGlu
IHRoZSB0b3AtbGV2ZWwgcGF0aC4KLSAgICBidWlsZF9kaXIgPSB0b3BfbGV2ZWxfcGF0aCgiX2J1
aWxkIikKKyAgICBidWlsZF9kaXIgPSBqaGJ1aWxkcmNfY29tbW9uLnRvcF9sZXZlbF9wYXRoKCJf
YnVpbGQiKQogICAgIGlmIGlzX3ZhbGlkX2J1aWxkX2RpcmVjdG9yeShidWlsZF9kaXIpOgogICAg
ICAgICByZXR1cm4gYnVpbGRfZGlyCiAKLSAgICBidWlsZF9kaXIgPSB0b3BfbGV2ZWxfcGF0aCgp
CisgICAgYnVpbGRfZGlyID0gamhidWlsZHJjX2NvbW1vbi50b3BfbGV2ZWxfcGF0aCgpCiAgICAg
aWYgaXNfdmFsaWRfYnVpbGRfZGlyZWN0b3J5KGJ1aWxkX2Rpcik6CiAgICAgICAgIHJldHVybiBi
dWlsZF9kaXIKIAotICAgIGJ1aWxkX2RpciA9IHRvcF9sZXZlbF9wYXRoKCJXZWJLaXRCdWlsZCIp
CisgICAgYnVpbGRfZGlyID0gamhidWlsZHJjX2NvbW1vbi50b3BfbGV2ZWxfcGF0aCgiV2ViS2l0
QnVpbGQiKQogICAgIGlmIGlzX3ZhbGlkX2J1aWxkX2RpcmVjdG9yeShidWlsZF9kaXIpOgogICAg
ICAgICByZXR1cm4gYnVpbGRfZGlyCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL2d0ay9maW5kLW1ha2Ut
ZGlzdC1lcnJvcnMgYi9Ub29scy9ndGsvZmluZC1tYWtlLWRpc3QtZXJyb3JzCmluZGV4IDg4MGM3
ODAuLmEwYzQxNTAgMTAwNzU1Ci0tLSBhL1Rvb2xzL2d0ay9maW5kLW1ha2UtZGlzdC1lcnJvcnMK
KysrIGIvVG9vbHMvZ3RrL2ZpbmQtbWFrZS1kaXN0LWVycm9ycwpAQCAtMjAsNiArMjAsOSBAQCBp
bXBvcnQgb3MKIGltcG9ydCBzdWJwcm9jZXNzCiBpbXBvcnQgc3lzCiAKK3N5cy5wYXRoLmluc2Vy
dCgwLCBvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSwgIi4uL2poYnVpbGQi
KSkKK2ltcG9ydCBqaGJ1aWxkcmNfY29tbW9uIAorCiBkZWYgaXNfc291cmNlX2ZpbGVfbGlzdGlu
ZyhsaW5lKToKICAgICByZXR1cm4gbGluZS5zdHJpcCgpLnN0YXJ0c3dpdGgoJ1NvdXJjZScpCiAK
QEAgLTg2LDcgKzg5LDcgQEAgZGVmIGdldF91bmxpc3RlZF9oZWFkZXJzKGxpc3RlZF9tYWtlZmls
ZV9oZWFkZXJzKToKIGRlZiBnZXRfbWlzc2luZ19oZWFkZXJzKGxpc3RlZF9tYWtlZmlsZV9oZWFk
ZXJzKToKICAgICBtaXNzaW5nID0gc2V0KCkKICAgICBmb3IgaGVhZGVyIGluIGxpc3RlZF9tYWtl
ZmlsZV9oZWFkZXJzOgotICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMoY29tbW9uLnRvcF9s
ZXZlbF9wYXRoKGhlYWRlcikpOgorICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMoamhidWls
ZHJjX2NvbW1vbi50b3BfbGV2ZWxfcGF0aChoZWFkZXIpKToKICAgICAgICAgICAgIG1pc3Npbmcu
YWRkKGhlYWRlcikKICAgICByZXR1cm4gbWlzc2luZwogCmRpZmYgLS1naXQgYS9Ub29scy9ndGsv
Z2VuZXJhdGUtZ3RrZG9jIGIvVG9vbHMvZ3RrL2dlbmVyYXRlLWd0a2RvYwppbmRleCAxYTNiZThi
Li44M2YxMjAxIDEwMDc1NQotLS0gYS9Ub29scy9ndGsvZ2VuZXJhdGUtZ3RrZG9jCisrKyBiL1Rv
b2xzL2d0ay9nZW5lcmF0ZS1ndGtkb2MKQEAgLTIzLDYgKzIzLDkgQEAgaW1wb3J0IGxvZ2dpbmcK
IGltcG9ydCBvcy5wYXRoCiBpbXBvcnQgc3lzCiAKK3N5cy5wYXRoLmluc2VydCgwLCBvcy5wYXRo
LmpvaW4ob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSwgIi4uL2poYnVpbGQiKSkKK2ltcG9ydCBq
aGJ1aWxkcmNfY29tbW9uCisKIGRlZiBjb25maWd1cmVfbG9nZ2luZyh2ZXJib3NlKToKICAgICBs
ZXZlbCA9IGxvZ2dpbmcuREVCVUcgaWYgdmVyYm9zZSBlbHNlIGxvZ2dpbmcuSU5GTwogICAgIGxv
Z2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCdndGtkb2MnKQpAQCAtNjEsOCArNjQsOCBAQCBkZWYg
d2Via2l0ZG9tX2RvY3NfaHRtbF9wYXRoKCk6CiAgICAgcmV0dXJuIGNvbW1vbi5idWlsZF9wYXRo
KCdEb2N1bWVudGF0aW9uJywgJ3dlYmtpdGRvbWd0aycsICdodG1sJykKIAogZGVmIGdldF93ZWJr
aXQyX29wdGlvbnModmlydHVhbF9yb290KToKLSAgICBhcGlfcGF0aCA9IGNvbW1vbi50b3BfbGV2
ZWxfcGF0aCgnU291cmNlJywgJ1dlYktpdDInLCAnVUlQcm9jZXNzJywgJ0FQSScsICdndGsnKQot
ICAgIGluamVjdGVkX2J1bmRsZV9hcGlfcGF0aCA9IGNvbW1vbi50b3BfbGV2ZWxfcGF0aCgnU291
cmNlJywgJ1dlYktpdDInLCAnV2ViUHJvY2VzcycsICdJbmplY3RlZEJ1bmRsZScsICdBUEknLCAn
Z3RrJykKKyAgICBhcGlfcGF0aCA9IGpoYnVpbGRyY19jb21tb24udG9wX2xldmVsX3BhdGgoJ1Nv
dXJjZScsICdXZWJLaXQyJywgJ1VJUHJvY2VzcycsICdBUEknLCAnZ3RrJykKKyAgICBpbmplY3Rl
ZF9idW5kbGVfYXBpX3BhdGggPSBqaGJ1aWxkcmNfY29tbW9uLnRvcF9sZXZlbF9wYXRoKCdTb3Vy
Y2UnLCAnV2ViS2l0MicsICdXZWJQcm9jZXNzJywgJ0luamVjdGVkQnVuZGxlJywgJ0FQSScsICdn
dGsnKQogCiAgICAgaWYgY29tbW9uLmlzX2NtYWtlX2J1aWxkKCk6CiAgICAgICAgIGdlbmVyYXRl
ZF9hcGlfcGF0aCA9IGNvbW1vbi5idWlsZF9wYXRoKCdEZXJpdmVkU291cmNlcycsICd3ZWJraXQy
Z3RrJywgJ3dlYmtpdDInKQpAQCAtODksNyArOTIsNyBAQCBkZWYgZ2V0X3dlYmtpdDJfb3B0aW9u
cyh2aXJ0dWFsX3Jvb3QpOgogICAgICAgICAnc291cmNlX2RpcnMnIDogW3NyY19wYXRoKCksIGdl
bmVyYXRlZF9hcGlfcGF0aCwgaW5qZWN0ZWRfYnVuZGxlX2FwaV9wYXRoXSwKICAgICAgICAgJ2Nm
bGFncycgOgogICAgICAgICAgICAgIyBDb21tb24gcGF0aHMKLSAgICAgICAgICAgICcgLUknICsg
Y29tbW9uLnRvcF9sZXZlbF9wYXRoKCdTb3VyY2UnKSArIFwKKyAgICAgICAgICAgICcgLUknICsg
amhidWlsZHJjX2NvbW1vbi50b3BfbGV2ZWxfcGF0aCgnU291cmNlJykgKyBcCiAgICAgICAgICAg
ICAnIC1JJyArIGFwaV9wYXRoICsgXAogICAgICAgICAgICAgIyBBdXRvdG9vbHMgcGF0aHMKICAg
ICAgICAgICAgICcgLUknICsgY29tbW9uLmJ1aWxkX3BhdGgoJ0Rlcml2ZWRTb3VyY2VzJywgJ3dl
YmtpdDJndGsnLCAnaW5jbHVkZScpICsgXApAQCAtMTE1LDcgKzExOCw3IEBAIGRlZiBnZXRfd2Vi
a2l0Ml9vcHRpb25zKHZpcnR1YWxfcm9vdCk6CiAKIGRlZiBnZXRfd2Via2l0MV9vcHRpb25zKGd0
a192ZXJzaW9uLCB2aXJ0dWFsX3Jvb3QpOgogICAgIGRlZiBzcmNfcGF0aCgqYXJncyk6Ci0gICAg
ICAgIHJldHVybiBjb21tb24udG9wX2xldmVsX3BhdGgoKigoJ1NvdXJjZScsICdXZWJLaXQnLCAn
Z3RrJykgKyBhcmdzKSkKKyAgICAgICAgcmV0dXJuIGpoYnVpbGRyY19jb21tb24udG9wX2xldmVs
X3BhdGgoKigoJ1NvdXJjZScsICdXZWJLaXQnLCAnZ3RrJykgKyBhcmdzKSkKIAogICAgIGRlZiB3
ZWJraXR2ZXJzaW9uaF9wYXRoKCk6CiAgICAgICAgIGlmIGNvbW1vbi5pc19jbWFrZV9idWlsZCgp
OgpAQCAtMTQ2LDggKzE0OSw4IEBAIGRlZiBnZXRfd2Via2l0MV9vcHRpb25zKGd0a192ZXJzaW9u
LCB2aXJ0dWFsX3Jvb3QpOgogICAgICAgICAnY2ZsYWdzJyA6ICcgLUknICsgY29tbW9uLmJ1aWxk
X3BhdGgoJ1dlYktpdCcsICdndGsnKSArIFwKICAgICAgICAgICAgICAgICAgICAnIC1JJyArIGNv
bW1vbi5idWlsZF9wYXRoKCdEZXJpdmVkU291cmNlcycpICsgXAogICAgICAgICAgICAgICAgICAg
ICcgLUknICsgc3JjX3BhdGgoKSArIFwKLSAgICAgICAgICAgICAgICAgICAnIC1JJyArIGNvbW1v
bi50b3BfbGV2ZWxfcGF0aCgnU291cmNlJykgKyBcCi0gICAgICAgICAgICAgICAgICAgJyAtSScg
KyBjb21tb24udG9wX2xldmVsX3BhdGgoJ1NvdXJjZScsICdKYXZhU2NyaXB0Q29yZScsICdGb3J3
YXJkaW5nSGVhZGVycycpLAorICAgICAgICAgICAgICAgICAgICcgLUknICsgamhidWlsZHJjX2Nv
bW1vbi50b3BfbGV2ZWxfcGF0aCgnU291cmNlJykgKyBcCisgICAgICAgICAgICAgICAgICAgJyAt
SScgKyBqaGJ1aWxkcmNfY29tbW9uLnRvcF9sZXZlbF9wYXRoKCdTb3VyY2UnLCAnSmF2YVNjcmlw
dENvcmUnLCAnRm9yd2FyZGluZ0hlYWRlcnMnKSwKICAgICAgICAgJ2Nyb3NzX3JlZmVyZW5jZV9k
ZXBzJyA6IGdldF9ndGtkb2NfbW9kdWxlX3BhdGhzKHhyZWZfZGVwcykgKyBbd2Via2l0ZG9tX2Rv
Y3NfaHRtbF9wYXRoKCldLAogICAgICAgICAnaWdub3JlZF9maWxlcyc6IGdsb2IuZ2xvYihzcmNf
cGF0aCgnd2Via2l0JywgJypwcml2YXRlLionKSkgKyBcCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgZ2xvYi5nbG9iKHNyY19wYXRoKCd3ZWJraXQnLCAnd2Via2l0YXV0aGVudGljYXRpb25kaWFs
b2cuKicpKSArIFwKQEAgLTE1OSw3ICsxNjIsNyBAQCBkZWYgZ2V0X3dlYmtpdGRvbV9vcHRpb25z
KHZpcnR1YWxfcm9vdCk6CiAgICAgZGVmIGRlcml2ZWRfc291cmNlc19wYXRoKCphcmdzKToKICAg
ICAgICAgcmV0dXJuIGNvbW1vbi5idWlsZF9wYXRoKCooKCdEZXJpdmVkU291cmNlcycsICd3ZWJr
aXRkb20nKSArIGFyZ3MpKQogICAgIGRlZiBzcmNfcGF0aCgqYXJncyk6Ci0gICAgICAgIHJldHVy
biBjb21tb24udG9wX2xldmVsX3BhdGgoKigoJ1NvdXJjZScsICdXZWJDb3JlJywgJ2JpbmRpbmdz
JywgJ2dvYmplY3QnKSArIGFyZ3MpKQorICAgICAgICByZXR1cm4gamhidWlsZHJjX2NvbW1vbi50
b3BfbGV2ZWxfcGF0aCgqKCgnU291cmNlJywgJ1dlYkNvcmUnLCAnYmluZGluZ3MnLCAnZ29iamVj
dCcpICsgYXJncykpCiAKICAgICB4cmVmX2RlcHMgPSB7ICdnbGliLTIuMCcgOiBbJ2dsaWInLCAn
Z29iamVjdCcsICdnaW8nXSB9CiAKQEAgLTE3NSw3ICsxNzgsNyBAQCBkZWYgZ2V0X3dlYmtpdGRv
bV9vcHRpb25zKHZpcnR1YWxfcm9vdCk6CiAgICAgICAgICdzb3VyY2VfZGlycycgOiBbZGVyaXZl
ZF9zb3VyY2VzX3BhdGgoKV0sCiAgICAgICAgICdjZmxhZ3MnIDogJyAtSScgKyBkZXJpdmVkX3Nv
dXJjZXNfcGF0aCgpICsgXAogICAgICAgICAgICAgICAgICAgICcgLUknICsgc3JjX3BhdGgoKSAr
IFwKLSAgICAgICAgICAgICAgICAgICAnIC1JJyArIGNvbW1vbi50b3BfbGV2ZWxfcGF0aCgnU291
cmNlJyksCisgICAgICAgICAgICAgICAgICAgJyAtSScgKyBqaGJ1aWxkcmNfY29tbW9uLnRvcF9s
ZXZlbF9wYXRoKCdTb3VyY2UnKSwKICAgICAgICAgJ2Nyb3NzX3JlZmVyZW5jZV9kZXBzJyA6IGdl
dF9ndGtkb2NfbW9kdWxlX3BhdGhzKHhyZWZfZGVwcyksCiAgICAgICAgICdpZ25vcmVkX2ZpbGVz
JzogZ2xvYi5nbG9iKGRlcml2ZWRfc291cmNlc19wYXRoKCcqUHJpdmF0ZS5oJykpCiAgICAgfQpk
aWZmIC0tZ2l0IGEvVG9vbHMvZ3RrL2dlbmVyYXRlLWluc3BlY3Rvci1ncmVzb3VyY2UtbWFuaWZl
c3QucHkgYi9Ub29scy9ndGsvZ2VuZXJhdGUtaW5zcGVjdG9yLWdyZXNvdXJjZS1tYW5pZmVzdC5w
eQppbmRleCBhZGY0ZjUyLi44NTgwMzM3IDEwMDc1NQotLS0gYS9Ub29scy9ndGsvZ2VuZXJhdGUt
aW5zcGVjdG9yLWdyZXNvdXJjZS1tYW5pZmVzdC5weQorKysgYi9Ub29scy9ndGsvZ2VuZXJhdGUt
aW5zcGVjdG9yLWdyZXNvdXJjZS1tYW5pZmVzdC5weQpAQCAtMjAsNyArMjAsMTAgQEAgaW1wb3J0
IGdsb2IKIGltcG9ydCBvcwogaW1wb3J0IHN5cwogCi1yZXNvdXJjZXNfcGF0aCA9IGNvbW1vbi50
b3BfbGV2ZWxfcGF0aCgpICsgIi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvIgorc3lzLnBhdGguaW5z
ZXJ0KDAsIG9zLnBhdGguam9pbihvcy5wYXRoLmRpcm5hbWUoX19maWxlX18pLCAiLi4vamhidWls
ZCIpKQoraW1wb3J0IGpoYnVpbGRyY19jb21tb24KKworcmVzb3VyY2VzX3BhdGggPSBqaGJ1aWxk
cmNfY29tbW9uLnRvcF9sZXZlbF9wYXRoKCkgKyAiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS8iCiBp
bnNwZWN0b3JfZmlsZXMgPSBcCiAgICAgZ2xvYi5nbG9iKHJlc291cmNlc19wYXRoICsgJ1VzZXJJ
bnRlcmZhY2UvKi5odG1sJykgKyBcCiAgICAgZ2xvYi5nbG9iKHJlc291cmNlc19wYXRoICsgJ1Vz
ZXJJbnRlcmZhY2UvQmFzZS8qLmpzJykgKyBcCmRpZmYgLS1naXQgYS9Ub29scy9ndGsvamhidWls
ZHJjIGIvVG9vbHMvZ3RrL2poYnVpbGRyYwppbmRleCA2OWY5NDU3Li4xZTBiZjRiIDEwMDY0NAot
LS0gYS9Ub29scy9ndGsvamhidWlsZHJjCisrKyBiL1Rvb2xzL2d0ay9qaGJ1aWxkcmMKQEAgLTE1
LDM2ICsxNSwxNiBAQAogIyBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3Qs
IHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiAjIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5r
bGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQogCi1p
bXBvcnQgbXVsdGlwcm9jZXNzaW5nCiBpbXBvcnQgc3lzCiAKK3N5cy5wYXRoLmluc2VydCgwLCBv
cy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSwgIi4uL2poYnVpbGQiKSApCitp
bXBvcnQgamhidWlsZHJjX2NvbW1vbgoramhidWlsZHJjX2NvbW1vbi5pbml0KGdsb2JhbHMoKSwg
Imd0ayIpIAorCiBfX2d0a190b29sc19kaXJlY3RvcnkgPSBvcy5wYXRoLmFic3BhdGgob3MucGF0
aC5kaXJuYW1lKF9fZmlsZV9fKSkKIHN5cy5wYXRoID0gW19fZ3RrX3Rvb2xzX2RpcmVjdG9yeV0g
KyBzeXMucGF0aAogaW1wb3J0IGNvbW1vbgogCi1idWlsZF9wb2xpY3kgPSAndXBkYXRlZCcKLQot
X19tb2R1bGVzZXRfZmlsZV91cmkgPSAnZmlsZTovLycgKyBvcy5wYXRoLmpvaW4oX19ndGtfdG9v
bHNfZGlyZWN0b3J5LCAnamhidWlsZC5tb2R1bGVzJykKLV9fZXh0cmFfbW9kdWxlc2V0cyA9IG9z
LmVudmlyb24uZ2V0KCJXRUJLSVRfRVhUUkFfTU9EVUxFU0VUUyIsICIiKS5zcGxpdCgiLCIpCi1t
b2R1bGVzZXQgPSBbIF9fbW9kdWxlc2V0X2ZpbGVfdXJpLCBdCi1pZiBfX2V4dHJhX21vZHVsZXNl
dHMgIT0gWycnXToKLSAgICBtb2R1bGVzZXQuZXh0ZW5kKF9fZXh0cmFfbW9kdWxlc2V0cykKLQot
X19leHRyYV9tb2R1bGVzID0gb3MuZW52aXJvbi5nZXQoIldFQktJVF9FWFRSQV9NT0RVTEVTIiwg
IiIpLnNwbGl0KCIsIikKLW1vZHVsZXMgPSBbICd3ZWJraXRndGstdGVzdGluZy1kZXBlbmRlbmNp
ZXMnLCBdCi1pZiBfX2V4dHJhX21vZHVsZXMgIT0gWycnXToKLSAgICBtb2R1bGVzLmV4dGVuZChf
X2V4dHJhX21vZHVsZXMpCi0KLWlmIG9zLmVudmlyb24uaGFzX2tleSgnV0VCS0lUX09VVFBVVERJ
UicpOgotICAgIGNoZWNrb3V0cm9vdCA9IG9zLnBhdGguYWJzcGF0aChvcy5wYXRoLmpvaW4ob3Mu
ZW52aXJvblsnV0VCS0lUX09VVFBVVERJUiddLCAnRGVwZW5kZW5jaWVzJywgJ1NvdXJjZScpKQot
ICAgIHByZWZpeCA9IG9zLnBhdGguYWJzcGF0aChvcy5wYXRoLmpvaW4ob3MuZW52aXJvblsnV0VC
S0lUX09VVFBVVERJUiddLCAnRGVwZW5kZW5jaWVzJywgJ1Jvb3QnKSkKLWVsc2U6Ci0gICAgY2hl
Y2tvdXRyb290ID0gb3MucGF0aC5hYnNwYXRoKGNvbW1vbi50b3BfbGV2ZWxfcGF0aCgnV2ViS2l0
QnVpbGQnLCdEZXBlbmRlbmNpZXMnLCAnU291cmNlJykpCi0gICAgcHJlZml4ID0gb3MucGF0aC5h
YnNwYXRoKGNvbW1vbi50b3BfbGV2ZWxfcGF0aCgnV2ViS2l0QnVpbGQnLCdEZXBlbmRlbmNpZXMn
LCAnUm9vdCcpKQotCi1ub25vdGlmeSA9IFRydWUKLW5vdHJheWljb24gPSBUcnVlCi0KIGlmICdO
VU1CRVJfT0ZfUFJPQ0VTU09SUycgaW4gb3MuZW52aXJvbjoKICAgICBqb2JzID0gb3MuZW52aXJv
blsnTlVNQkVSX09GX1BST0NFU1NPUlMnXQogCmRpZmYgLS1naXQgYS9Ub29scy9qaGJ1aWxkL2po
YnVpbGRyY19jb21tb24ucHkgYi9Ub29scy9qaGJ1aWxkL2poYnVpbGRyY19jb21tb24ucHkKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjBlOTliMwotLS0gL2Rldi9udWxsCisr
KyBiL1Rvb2xzL2poYnVpbGQvamhidWlsZHJjX2NvbW1vbi5weQpAQCAtMCwwICsxLDY0IEBACisj
IS91c3IvYmluL2VudiBweXRob24KKyMgQ29weXJpZ2h0IChDKSAyMDExIElnYWxpYSBTLkwuCisj
IENvcHlyaWdodCAoQykgMjAxMiBJbnRlbCBDb3Jwb3JhdGlvbgorIworIyBUaGlzIGxpYnJhcnkg
aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisjIG1vZGlm
eSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyMg
TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0
aGVyCisjIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkg
bGF0ZXIgdmVyc2lvbi4KKyMKKyMgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo
b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsg
d2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisjIE1FUkNIQU5UQUJJTElUWSBv
ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUKKyMgTGVzc2Vy
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyMKKyMgWW91IHNob3Vs
ZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwor
IyBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBG
cmVlIFNvZnR3YXJlCisjIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlm
dGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0EKKworaW1wb3J0IG11bHRpcHJvY2Vz
c2luZworaW1wb3J0IHN5cworaW1wb3J0IG9zCisKKworc2NyaXB0X2RpciA9IE5vbmUKKworCitk
ZWYgc2NyaXB0X3BhdGgoKmFyZ3MpOgorICAgIGdsb2JhbCBzY3JpcHRfZGlyCisgICAgaWYgbm90
IHNjcmlwdF9kaXI6CisgICAgICAgIHNjcmlwdF9kaXIgPSBvcy5wYXRoLmpvaW4ob3MucGF0aC5k
aXJuYW1lKF9fZmlsZV9fKSwgJy4uJywgJ1NjcmlwdHMnKQorICAgIHJldHVybiBvcy5wYXRoLmpv
aW4oKihzY3JpcHRfZGlyLCkgKyBhcmdzKQorCisKK2RlZiB0b3BfbGV2ZWxfcGF0aCgqYXJncyk6
CisgICAgcmV0dXJuIG9zLnBhdGguam9pbigqKChvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1l
KF9fZmlsZV9fKSwgJy4uJywgJy4uJyksKSArIGFyZ3MpKQorCisKK2RlZiBpbml0KGpoYnVpbGRy
Y19nbG9iYWxzLCBwbGF0Zm9ybSk6CisKKyAgICBfX3Rvb2xzX2RpcmVjdG9yeSA9IG9zLnBhdGgu
am9pbihvcy5wYXRoLmRpcm5hbWUoX19maWxlX18pLCAiLi4vIiwgcGxhdGZvcm0pCisgICAgc3lz
LnBhdGguaW5zZXJ0KDAsIF9fdG9vbHNfZGlyZWN0b3J5KQorCisgICAgamhidWlsZHJjX2dsb2Jh
bHNbImJ1aWxkX3BvbGljeSJdID0gJ3VwZGF0ZWQnCisKKyAgICBfX21vZHVsZXNldF9maWxlX3Vy
aSA9ICdmaWxlOi8vJyArIG9zLnBhdGguam9pbihfX3Rvb2xzX2RpcmVjdG9yeSwgJ2poYnVpbGQu
bW9kdWxlcycpCisgICAgX19leHRyYV9tb2R1bGVzZXRzID0gb3MuZW52aXJvbi5nZXQoIldFQktJ
VF9FWFRSQV9NT0RVTEVTRVRTIiwgIiIpLnNwbGl0KCIsIikKKyAgICBqaGJ1aWxkcmNfZ2xvYmFs
c1sibW9kdWxlc2V0Il0gPSBbX19tb2R1bGVzZXRfZmlsZV91cmksIF0KKyAgICBpZiBfX2V4dHJh
X21vZHVsZXNldHMgIT0gWycnXToKKyAgICAgICAgamhidWlsZHJjX2dsb2JhbHNbIm1vZHVsZXNl
dCJdLmV4dGVuZChfX2V4dHJhX21vZHVsZXNldHMpCisKKyAgICBfX2V4dHJhX21vZHVsZXMgPSBv
cy5lbnZpcm9uLmdldCgiV0VCS0lUX0VYVFJBX01PRFVMRVMiLCAiIikuc3BsaXQoIiwiKQorICAg
IGpoYnVpbGRyY19nbG9iYWxzWyJtb2R1bGVzIl0gPSBbJ3dlYmtpdCcgKyBwbGF0Zm9ybSArICct
dGVzdGluZy1kZXBlbmRlbmNpZXMnLCBdCisgICAgaWYgX19leHRyYV9tb2R1bGVzICE9IFsnJ106
CisgICAgICAgIGpoYnVpbGRyY19nbG9iYWxzWyJtb2R1bGVzIl0uZXh0ZW5kKF9fZXh0cmFfbW9k
dWxlcykKKworICAgIGlmICdXRUJLSVRfT1VUUFVURElSJyBpbiBvcy5lbnZpcm9uOgorICAgICAg
ICBqaGJ1aWxkcmNfZ2xvYmFsc1siY2hlY2tvdXRyb290Il0gPSBjaGVja291dHJvb3QgPSBvcy5w
YXRoLmFic3BhdGgob3MucGF0aC5qb2luKG9zLmVudmlyb25bJ1dFQktJVF9PVVRQVVRESVInXSwg
J0RlcGVuZGVuY2llcycsICdTb3VyY2UnKSkKKyAgICAgICAgamhidWlsZHJjX2dsb2JhbHNbInBy
ZWZpeCJdID0gb3MucGF0aC5hYnNwYXRoKG9zLnBhdGguam9pbihvcy5lbnZpcm9uWydXRUJLSVRf
T1VUUFVURElSJ10sICdEZXBlbmRlbmNpZXMnLCAnUm9vdCcpKQorICAgIGVsc2U6CisgICAgICAg
IGpoYnVpbGRyY19nbG9iYWxzWyJjaGVja291dHJvb3QiXSA9IGNoZWNrb3V0cm9vdCA9IG9zLnBh
dGguYWJzcGF0aCh0b3BfbGV2ZWxfcGF0aCgnV2ViS2l0QnVpbGQnLCAnRGVwZW5kZW5jaWVzJywg
J1NvdXJjZScpKQorICAgICAgICBqaGJ1aWxkcmNfZ2xvYmFsc1sicHJlZml4Il0gPSBvcy5wYXRo
LmFic3BhdGgodG9wX2xldmVsX3BhdGgoJ1dlYktpdEJ1aWxkJywgJ0RlcGVuZGVuY2llcycsICdS
b290JykpCisKKyAgICBqaGJ1aWxkcmNfZ2xvYmFsc1sibm9ub3RpZnkiXSA9IFRydWUKKyAgICBq
aGJ1aWxkcmNfZ2xvYmFsc1sibm90cmF5aWNvbiJdID0gVHJ1ZQ==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>225061</attachid>
            <date>2014-02-24 06:27:48 -0800</date>
            <delta_ts>2014-02-24 07:40:02 -0800</delta_ts>
            <desc>Patch v15</desc>
            <filename>extract_v7.patch</filename>
            <type>text/plain</type>
            <size>18164</size>
            <attacher name="Tibor Mészáros">mtiborinf</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBlYzI3
Yzg2Li42ZGJlNDQ4IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzUgQEAKKzIwMTQtMDItMjQgIFRpYm9yIE1lc3phcm9zICA8dG1l
c3phcm9zLnUtc3plZ2VkQHBhcnRuZXIuc2Ftc3VuZy5jb20+CisKKyAgICAgICAgRXh0cmFjdCBj
b21tb24gcGFydHMgZnJvbSBqaGJ1aWxkcmMgZmlsZXMuCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjU5ODYKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDby1hdXRob3JlZCB3aXRoIFBldGVyIFN6YW5rYSA8
aDg2ODA2NEBzdHVkLnUtc3plZ2VkLmh1Pi4KKworICAgICAgICAqIFNjcmlwdHMvcnVuLWd0ay10
ZXN0czoKKyAgICAgICAgKFRlc3RSdW5uZXIuX3NldHVwX3Rlc3RpbmdfZW52aXJvbm1lbnQpOgor
ICAgICAgICAqIGVmbC9jb21tb24ucHk6IFJlbW92ZWQuCisgICAgICAgICogZWZsL2poYnVpbGRy
YzoKKyAgICAgICAgKiBndGsvY2hlY2stZ2RvbS1zeW1ib2xzOgorICAgICAgICAqIGd0ay9jb21t
b24ucHk6CisgICAgICAgIChiaW5hcnlfYnVpbGRfcGF0aCk6CisgICAgICAgIChnZXRfYnVpbGRf
cGF0aCk6CisgICAgICAgICogZ3RrL2ZpbmQtbWFrZS1kaXN0LWVycm9yczoKKyAgICAgICAgKGdl
dF9taXNzaW5nX2hlYWRlcnMpOgorICAgICAgICAqIGd0ay9nZW5lcmF0ZS1ndGtkb2M6CisgICAg
ICAgIChnZXRfd2Via2l0Ml9vcHRpb25zKToKKyAgICAgICAgKGdldF93ZWJraXQxX29wdGlvbnMu
c3JjX3BhdGgpOgorICAgICAgICAoZ2V0X3dlYmtpdDFfb3B0aW9ucyk6CisgICAgICAgIChnZXRf
d2Via2l0ZG9tX29wdGlvbnMuc3JjX3BhdGgpOgorICAgICAgICAoZ2V0X3dlYmtpdGRvbV9vcHRp
b25zKToKKyAgICAgICAgKiBndGsvZ2VuZXJhdGUtaW5zcGVjdG9yLWdyZXNvdXJjZS1tYW5pZmVz
dC5weToKKyAgICAgICAgKiBndGsvamhidWlsZHJjOgorICAgICAgICAqIGpoYnVpbGQvamhidWls
ZHJjX2NvbW1vbi5weTogQWRkZWQuCisgICAgICAgIChzY3JpcHRfcGF0aCk6CisgICAgICAgICh0
b3BfbGV2ZWxfcGF0aCk6CisgICAgICAgIChpbml0KToKKwogMjAxNC0wMi0yNCAgRGllZ28gUGlu
byBHYXJjaWEgIDxkcGlub0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQuIEZpeCBj
b2RlIGluZGVudGF0aW9uIGFuZCBzcGFjaW5nLgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy9y
dW4tZ3RrLXRlc3RzIGIvVG9vbHMvU2NyaXB0cy9ydW4tZ3RrLXRlc3RzCmluZGV4IGU5ODA4NjAu
LjUwODg0NDcgMTAwNzU1Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvcnVuLWd0ay10ZXN0cworKysgYi9U
b29scy9TY3JpcHRzL3J1bi1ndGstdGVzdHMKQEAgLTMxLDYgKzMxLDkgQEAgc3lzLnBhdGguYXBw
ZW5kKG9zLnBhdGguam9pbih0b3BfbGV2ZWxfZGlyZWN0b3J5LCAiVG9vbHMiLCAiZ3RrIikpCiBp
bXBvcnQgY29tbW9uCiBpbXBvcnQgamhidWlsZHV0aWxzCiAKK3N5cy5wYXRoLmluc2VydCgwLCBv
cy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSwgIi4uL2poYnVpbGQiKSkKK2lt
cG9ydCBqaGJ1aWxkcmNfY29tbW9uIAorCiBjbGFzcyBTa2lwcGVkVGVzdDoKICAgICBFTlRJUkVf
U1VJVEUgPSBOb25lCiAKQEAgLTE5NSw3ICsxOTgsNyBAQCBjbGFzcyBUZXN0UnVubmVyOgogICAg
IGRlZiBfc2V0dXBfdGVzdGluZ19lbnZpcm9ubWVudChzZWxmKToKICAgICAgICAgc2VsZi5fdGVz
dF9lbnYgPSBvcy5lbnZpcm9uCiAgICAgICAgIHNlbGYuX3Rlc3RfZW52WydHU0VUVElOR1NfQkFD
S0VORCddID0gJ21lbW9yeScKLSAgICAgICAgc2VsZi5fdGVzdF9lbnZbIlRFU1RfV0VCS0lUX0FQ
SV9XRUJLSVQyX1JFU09VUkNFU19QQVRIIl0gPSBjb21tb24udG9wX2xldmVsX3BhdGgoIlRvb2xz
IiwgIlRlc3RXZWJLaXRBUEkiLCAiVGVzdHMiLCAiV2ViS2l0MiIpCisgICAgICAgIHNlbGYuX3Rl
c3RfZW52WyJURVNUX1dFQktJVF9BUElfV0VCS0lUMl9SRVNPVVJDRVNfUEFUSCJdID0gamhidWls
ZHJjX2NvbW1vbi50b3BfbGV2ZWxfcGF0aCgiVG9vbHMiLCAiVGVzdFdlYktpdEFQSSIsICJUZXN0
cyIsICJXZWJLaXQyIikKICAgICAgICAgc2VsZi5fdGVzdF9lbnZbIlRFU1RfV0VCS0lUX0FQSV9X
RUJLSVQyX0lOSkVDVEVEX0JVTkRMRV9QQVRIIl0gPSBjb21tb24udGVzdHNfbGlicmFyeV9idWls
ZF9wYXRoKCkKICAgICAgICAgc2VsZi5fdGVzdF9lbnZbIldFQktJVF9FWEVDX1BBVEgiXSA9IHNl
bGYuX3Byb2dyYW1zX3BhdGgKIApkaWZmIC0tZ2l0IGEvVG9vbHMvZWZsL2NvbW1vbi5weSBiL1Rv
b2xzL2VmbC9jb21tb24ucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc3NjU3YjMu
LjAwMDAwMDAKLS0tIGEvVG9vbHMvZWZsL2NvbW1vbi5weQorKysgL2Rldi9udWxsCkBAIC0xLDMx
ICswLDAgQEAKLSMhL3Vzci9iaW4vZW52IHB5dGhvbgotIyBDb3B5cmlnaHQgKEMpIDIwMTEgSWdh
bGlhIFMuTC4KLSMKLSMgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk
aXN0cmlidXRlIGl0IGFuZC9vcgotIyBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH
TlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi0jIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotIyB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vu
c2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0jCi0jIFRoaXMgbGli
cmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAot
IyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy
YW50eSBvZgotIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UuICBTZWUgdGhlIEdOVQotIyBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3Ig
bW9yZSBkZXRhaWxzLgotIwotIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo
ZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi0jIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxp
YnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSMgRm91bmRhdGlvbiwg
SW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAt
MTMwMSAgVVNBCi0KLWltcG9ydCBvcwotCi1zY3JpcHRfZGlyID0gTm9uZQotCi0KLWRlZiBzY3Jp
cHRfcGF0aCgqYXJncyk6Ci0gICAgZ2xvYmFsIHNjcmlwdF9kaXIKLSAgICBpZiBub3Qgc2NyaXB0
X2RpcjoKLSAgICAgICAgc2NyaXB0X2RpciA9IG9zLnBhdGguam9pbihvcy5wYXRoLmRpcm5hbWUo
X19maWxlX18pLCAnLi4nLCAnU2NyaXB0cycpCi0gICAgcmV0dXJuIG9zLnBhdGguam9pbigqKHNj
cmlwdF9kaXIsKSArIGFyZ3MpCi0KLQotZGVmIHRvcF9sZXZlbF9wYXRoKCphcmdzKToKLSAgICBy
ZXR1cm4gb3MucGF0aC5qb2luKCooKHNjcmlwdF9wYXRoKCcuLicsICcuLicpLCkgKyBhcmdzKSkK
ZGlmZiAtLWdpdCBhL1Rvb2xzL2VmbC9qaGJ1aWxkcmMgYi9Ub29scy9lZmwvamhidWlsZHJjCmlu
ZGV4IDc3ZGFhZTkuLjc4MjU5NTEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL2VmbC9qaGJ1aWxkcmMKKysr
IGIvVG9vbHMvZWZsL2poYnVpbGRyYwpAQCAtMTYsMzcgKzE2LDExIEBACiAjIExpY2Vuc2UgYWxv
bmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUK
ICMgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9z
dG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCiAKLWltcG9ydCBtdWx0aXByb2Nlc3NpbmcKIGltcG9y
dCBzeXMKIAotX19lZmxfdG9vbHNfZGlyZWN0b3J5ID0gb3MucGF0aC5hYnNwYXRoKG9zLnBhdGgu
ZGlybmFtZShfX2ZpbGVfXykpCi1zeXMucGF0aCA9IFtfX2VmbF90b29sc19kaXJlY3RvcnldICsg
c3lzLnBhdGgKLWltcG9ydCBjb21tb24KLQotYnVpbGRfcG9saWN5ID0gJ3VwZGF0ZWQnCi0KLSMg
RklYTUU6IG1vdmUgc2hhcmVkIHBhcnRzIGludG8gLi4vamhidWlsZCBmb2xkZXIuCi0KLV9fbW9k
dWxlc2V0X2ZpbGVfdXJpID0gJ2ZpbGU6Ly8nICsgb3MucGF0aC5qb2luKF9fZWZsX3Rvb2xzX2Rp
cmVjdG9yeSwgJ2poYnVpbGQubW9kdWxlcycpCi1fX2V4dHJhX21vZHVsZXNldHMgPSBvcy5lbnZp
cm9uLmdldCgiV0VCS0lUX0VYVFJBX01PRFVMRVNFVFMiLCAiIikuc3BsaXQoIiwiKQotbW9kdWxl
c2V0ID0gWyBfX21vZHVsZXNldF9maWxlX3VyaSwgXQotaWYgX19leHRyYV9tb2R1bGVzZXRzICE9
IFsnJ106Ci0gICAgbW9kdWxlc2V0LmV4dGVuZChfX2V4dHJhX21vZHVsZXNldHMpCi0KLV9fZXh0
cmFfbW9kdWxlcyA9IG9zLmVudmlyb24uZ2V0KCJXRUJLSVRfRVhUUkFfTU9EVUxFUyIsICIiKS5z
cGxpdCgiLCIpCi1tb2R1bGVzID0gWyAnd2Via2l0ZWZsLXRlc3RpbmctZGVwZW5kZW5jaWVzJywg
XQotaWYgX19leHRyYV9tb2R1bGVzICE9IFsnJ106Ci0gICAgbW9kdWxlcy5leHRlbmQoX19leHRy
YV9tb2R1bGVzKQotCi1pZiBvcy5lbnZpcm9uLmhhc19rZXkoJ1dFQktJVF9PVVRQVVRESVInKToK
LSAgICBjaGVja291dHJvb3QgPSBvcy5wYXRoLmFic3BhdGgob3MucGF0aC5qb2luKG9zLmVudmly
b25bJ1dFQktJVF9PVVRQVVRESVInXSwgJ0RlcGVuZGVuY2llcycsICdTb3VyY2UnKSkKLSAgICBw
cmVmaXggPSBvcy5wYXRoLmFic3BhdGgob3MucGF0aC5qb2luKG9zLmVudmlyb25bJ1dFQktJVF9P
VVRQVVRESVInXSwgJ0RlcGVuZGVuY2llcycsICdSb290JykpCi1lbHNlOgotICAgIGNoZWNrb3V0
cm9vdCA9IG9zLnBhdGguYWJzcGF0aChjb21tb24udG9wX2xldmVsX3BhdGgoJ1dlYktpdEJ1aWxk
JywnRGVwZW5kZW5jaWVzJywgJ1NvdXJjZScpKQotICAgIHByZWZpeCA9IG9zLnBhdGguYWJzcGF0
aChjb21tb24udG9wX2xldmVsX3BhdGgoJ1dlYktpdEJ1aWxkJywnRGVwZW5kZW5jaWVzJywgJ1Jv
b3QnKSkKLQotbm9ub3RpZnkgPSBUcnVlCi1ub3RyYXlpY29uID0gVHJ1ZQorc3lzLnBhdGguaW5z
ZXJ0KDAsIG9zLnBhdGguam9pbihvcy5wYXRoLmRpcm5hbWUoX19maWxlX18pLCAiLi4vamhidWls
ZCIpICkKK2ltcG9ydCBqaGJ1aWxkcmNfY29tbW9uCitqaGJ1aWxkcmNfY29tbW9uLmluaXQoZ2xv
YmFscygpLCAiZWZsIikgCiAKIGlmICdOVU1CRVJfT0ZfUFJPQ0VTU09SUycgaW4gb3MuZW52aXJv
bjoKICAgICBqb2JzID0gb3MuZW52aXJvblsnTlVNQkVSX09GX1BST0NFU1NPUlMnXQpkaWZmIC0t
Z2l0IGEvVG9vbHMvZ3RrL2NoZWNrLWdkb20tc3ltYm9scyBiL1Rvb2xzL2d0ay9jaGVjay1nZG9t
LXN5bWJvbHMKaW5kZXggZjExMDhiNy4uNTg4YjdlOCAxMDA3NTUKLS0tIGEvVG9vbHMvZ3RrL2No
ZWNrLWdkb20tc3ltYm9scworKysgYi9Ub29scy9ndGsvY2hlY2stZ2RvbS1zeW1ib2xzCkBAIC0y
Miw2ICsyMiw4IEBAIGltcG9ydCBzdWJwcm9jZXNzCiBpbXBvcnQgc3lzCiBpbXBvcnQgdGVtcGZp
bGUKIAorc3lzLnBhdGguaW5zZXJ0KDAsIG9zLnBhdGguam9pbihvcy5wYXRoLmRpcm5hbWUoX19m
aWxlX18pLCAiLi4vamhidWlsZCIpKQoraW1wb3J0IGpoYnVpbGRyY19jb21tb24gCiAKIGRlZiBz
aG91bGRfdXBkYXRlX3N5bWJvbHNfZmlsZShuZXcsIG9sZCk6CiAgICAgaWYgbm90IG9zLnBhdGgu
ZXhpc3RzKG9sZCk6CkBAIC01MCw3ICs1Miw3IEBAIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6
CiAgICAgICAgICAgICAgICAgdG1wLndyaXRlKGZpbGVfaGFuZGxlLnJlYWQoKSkKICAgICAgICAg
dG1wLmZsdXNoKCkKIAotICAgICAgICBnZG9tX3NvdXJjZV9wYXRoID0gY29tbW9uLnRvcF9sZXZl
bF9wYXRoKCdTb3VyY2UnLCAnV2ViQ29yZScsICdiaW5kaW5ncycpCisgICAgICAgIGdkb21fc291
cmNlX3BhdGggPSBqaGJ1aWxkcmNfY29tbW9uLnRvcF9sZXZlbF9wYXRoKCdTb3VyY2UnLCAnV2Vi
Q29yZScsICdiaW5kaW5ncycpCiAgICAgICAgIGFwaV9icmVha190ZXN0X3BhdGggPSBvcy5wYXRo
LmpvaW4oZ2RvbV9zb3VyY2VfcGF0aCwgJ3NjcmlwdHMnLCAnZ29iamVjdC1ydW4tYXBpLWJyZWFr
LXRlc3QnKQogICAgICAgICBzdWJwcm9jZXNzLmNhbGwoW3N5cy5leGVjdXRhYmxlLCBhcGlfYnJl
YWtfdGVzdF9wYXRoLCBvcy5wYXRoLmpvaW4oZ2RvbV9zb3VyY2VfcGF0aCwgJ2dvYmplY3QnLCAg
J3dlYmtpdGRvbS5zeW1ib2xzJyksIHRtcC5uYW1lXSkKIApkaWZmIC0tZ2l0IGEvVG9vbHMvZ3Rr
L2NvbW1vbi5weSBiL1Rvb2xzL2d0ay9jb21tb24ucHkKaW5kZXggMDJkYjkzMi4uNmU1MWFmNSAx
MDA2NDQKLS0tIGEvVG9vbHMvZ3RrL2NvbW1vbi5weQorKysgYi9Ub29scy9ndGsvY29tbW9uLnB5
CkBAIC0yMSw3ICsyMSw5IEBAIGltcG9ydCBzZWxlY3QKIGltcG9ydCBzdWJwcm9jZXNzCiBpbXBv
cnQgc3lzCiAKLXNjcmlwdF9kaXIgPSBOb25lCitzeXMucGF0aC5pbnNlcnQoMCwgb3MucGF0aC5q
b2luKG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXyksICIuLi9qaGJ1aWxkIikpCitpbXBvcnQgamhi
dWlsZHJjX2NvbW1vbgorCiBidWlsZF9kaXIgPSBOb25lCiBsaWJyYXJ5X2J1aWxkX2RpciA9IE5v
bmUKIHRlc3RzX2xpYnJhcnlfYnVpbGRfZGlyID0gTm9uZQpAQCAtNzEsMTcgKzczLDYgQEAgZGVm
IGJpbmFyeV9idWlsZF9wYXRoKCphcmdzKToKICAgICByZXR1cm4gbGlicmFyeV9idWlsZF9kaXIK
IAogCi1kZWYgc2NyaXB0X3BhdGgoKmFyZ3MpOgotICAgIGdsb2JhbCBzY3JpcHRfZGlyCi0gICAg
aWYgbm90IHNjcmlwdF9kaXI6Ci0gICAgICAgIHNjcmlwdF9kaXIgPSBvcy5wYXRoLmpvaW4ob3Mu
cGF0aC5kaXJuYW1lKF9fZmlsZV9fKSwgJy4uJywgJ1NjcmlwdHMnKQotICAgIHJldHVybiBvcy5w
YXRoLmpvaW4oKihzY3JpcHRfZGlyLCkgKyBhcmdzKQotCi0KLWRlZiB0b3BfbGV2ZWxfcGF0aCgq
YXJncyk6Ci0gICAgcmV0dXJuIG9zLnBhdGguam9pbigqKChvcy5wYXRoLmpvaW4ob3MucGF0aC5k
aXJuYW1lKF9fZmlsZV9fKSwgJy4uJywgJy4uJyksKSArIGFyZ3MpKQotCi0KIGRlZiBnZXRfYnVp
bGRfcGF0aChmYXRhbD1UcnVlKToKICAgICBnbG9iYWwgYnVpbGRfZGlyCiAgICAgaWYgYnVpbGRf
ZGlyOgpAQCAtMTA5LDIwICsxMDAsMjAgQEAgZGVmIGdldF9idWlsZF9wYXRoKGZhdGFsPVRydWUp
OgogCiAgICAgZ2xvYmFsIGJ1aWxkX3R5cGVzCiAgICAgZm9yIGJ1aWxkX3R5cGUgaW4gYnVpbGRf
dHlwZXM6Ci0gICAgICAgIGJ1aWxkX2RpciA9IHRvcF9sZXZlbF9wYXRoKCdXZWJLaXRCdWlsZCcs
IGJ1aWxkX3R5cGUpCisgICAgICAgIGJ1aWxkX2RpciA9IGpoYnVpbGRyY19jb21tb24udG9wX2xl
dmVsX3BhdGgoJ1dlYktpdEJ1aWxkJywgYnVpbGRfdHlwZSkKICAgICAgICAgaWYgaXNfdmFsaWRf
YnVpbGRfZGlyZWN0b3J5KGJ1aWxkX2Rpcik6CiAgICAgICAgICAgICByZXR1cm4gYnVpbGRfZGly
CiAKICAgICAjIGRpc3RjaGVjayBidWlsZHMgaW4gYSBkaXJlY3RvcnkgbmFtZWQgX2J1aWxkIGlu
IHRoZSB0b3AtbGV2ZWwgcGF0aC4KLSAgICBidWlsZF9kaXIgPSB0b3BfbGV2ZWxfcGF0aCgiX2J1
aWxkIikKKyAgICBidWlsZF9kaXIgPSBqaGJ1aWxkcmNfY29tbW9uLnRvcF9sZXZlbF9wYXRoKCJf
YnVpbGQiKQogICAgIGlmIGlzX3ZhbGlkX2J1aWxkX2RpcmVjdG9yeShidWlsZF9kaXIpOgogICAg
ICAgICByZXR1cm4gYnVpbGRfZGlyCiAKLSAgICBidWlsZF9kaXIgPSB0b3BfbGV2ZWxfcGF0aCgp
CisgICAgYnVpbGRfZGlyID0gamhidWlsZHJjX2NvbW1vbi50b3BfbGV2ZWxfcGF0aCgpCiAgICAg
aWYgaXNfdmFsaWRfYnVpbGRfZGlyZWN0b3J5KGJ1aWxkX2Rpcik6CiAgICAgICAgIHJldHVybiBi
dWlsZF9kaXIKIAotICAgIGJ1aWxkX2RpciA9IHRvcF9sZXZlbF9wYXRoKCJXZWJLaXRCdWlsZCIp
CisgICAgYnVpbGRfZGlyID0gamhidWlsZHJjX2NvbW1vbi50b3BfbGV2ZWxfcGF0aCgiV2ViS2l0
QnVpbGQiKQogICAgIGlmIGlzX3ZhbGlkX2J1aWxkX2RpcmVjdG9yeShidWlsZF9kaXIpOgogICAg
ICAgICByZXR1cm4gYnVpbGRfZGlyCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL2d0ay9maW5kLW1ha2Ut
ZGlzdC1lcnJvcnMgYi9Ub29scy9ndGsvZmluZC1tYWtlLWRpc3QtZXJyb3JzCmluZGV4IDg4MGM3
ODAuLmEwYzQxNTAgMTAwNzU1Ci0tLSBhL1Rvb2xzL2d0ay9maW5kLW1ha2UtZGlzdC1lcnJvcnMK
KysrIGIvVG9vbHMvZ3RrL2ZpbmQtbWFrZS1kaXN0LWVycm9ycwpAQCAtMjAsNiArMjAsOSBAQCBp
bXBvcnQgb3MKIGltcG9ydCBzdWJwcm9jZXNzCiBpbXBvcnQgc3lzCiAKK3N5cy5wYXRoLmluc2Vy
dCgwLCBvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSwgIi4uL2poYnVpbGQi
KSkKK2ltcG9ydCBqaGJ1aWxkcmNfY29tbW9uIAorCiBkZWYgaXNfc291cmNlX2ZpbGVfbGlzdGlu
ZyhsaW5lKToKICAgICByZXR1cm4gbGluZS5zdHJpcCgpLnN0YXJ0c3dpdGgoJ1NvdXJjZScpCiAK
QEAgLTg2LDcgKzg5LDcgQEAgZGVmIGdldF91bmxpc3RlZF9oZWFkZXJzKGxpc3RlZF9tYWtlZmls
ZV9oZWFkZXJzKToKIGRlZiBnZXRfbWlzc2luZ19oZWFkZXJzKGxpc3RlZF9tYWtlZmlsZV9oZWFk
ZXJzKToKICAgICBtaXNzaW5nID0gc2V0KCkKICAgICBmb3IgaGVhZGVyIGluIGxpc3RlZF9tYWtl
ZmlsZV9oZWFkZXJzOgotICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMoY29tbW9uLnRvcF9s
ZXZlbF9wYXRoKGhlYWRlcikpOgorICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMoamhidWls
ZHJjX2NvbW1vbi50b3BfbGV2ZWxfcGF0aChoZWFkZXIpKToKICAgICAgICAgICAgIG1pc3Npbmcu
YWRkKGhlYWRlcikKICAgICByZXR1cm4gbWlzc2luZwogCmRpZmYgLS1naXQgYS9Ub29scy9ndGsv
Z2VuZXJhdGUtZ3RrZG9jIGIvVG9vbHMvZ3RrL2dlbmVyYXRlLWd0a2RvYwppbmRleCAxYTNiZThi
Li44M2YxMjAxIDEwMDc1NQotLS0gYS9Ub29scy9ndGsvZ2VuZXJhdGUtZ3RrZG9jCisrKyBiL1Rv
b2xzL2d0ay9nZW5lcmF0ZS1ndGtkb2MKQEAgLTIzLDYgKzIzLDkgQEAgaW1wb3J0IGxvZ2dpbmcK
IGltcG9ydCBvcy5wYXRoCiBpbXBvcnQgc3lzCiAKK3N5cy5wYXRoLmluc2VydCgwLCBvcy5wYXRo
LmpvaW4ob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSwgIi4uL2poYnVpbGQiKSkKK2ltcG9ydCBq
aGJ1aWxkcmNfY29tbW9uCisKIGRlZiBjb25maWd1cmVfbG9nZ2luZyh2ZXJib3NlKToKICAgICBs
ZXZlbCA9IGxvZ2dpbmcuREVCVUcgaWYgdmVyYm9zZSBlbHNlIGxvZ2dpbmcuSU5GTwogICAgIGxv
Z2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCdndGtkb2MnKQpAQCAtNjEsOCArNjQsOCBAQCBkZWYg
d2Via2l0ZG9tX2RvY3NfaHRtbF9wYXRoKCk6CiAgICAgcmV0dXJuIGNvbW1vbi5idWlsZF9wYXRo
KCdEb2N1bWVudGF0aW9uJywgJ3dlYmtpdGRvbWd0aycsICdodG1sJykKIAogZGVmIGdldF93ZWJr
aXQyX29wdGlvbnModmlydHVhbF9yb290KToKLSAgICBhcGlfcGF0aCA9IGNvbW1vbi50b3BfbGV2
ZWxfcGF0aCgnU291cmNlJywgJ1dlYktpdDInLCAnVUlQcm9jZXNzJywgJ0FQSScsICdndGsnKQot
ICAgIGluamVjdGVkX2J1bmRsZV9hcGlfcGF0aCA9IGNvbW1vbi50b3BfbGV2ZWxfcGF0aCgnU291
cmNlJywgJ1dlYktpdDInLCAnV2ViUHJvY2VzcycsICdJbmplY3RlZEJ1bmRsZScsICdBUEknLCAn
Z3RrJykKKyAgICBhcGlfcGF0aCA9IGpoYnVpbGRyY19jb21tb24udG9wX2xldmVsX3BhdGgoJ1Nv
dXJjZScsICdXZWJLaXQyJywgJ1VJUHJvY2VzcycsICdBUEknLCAnZ3RrJykKKyAgICBpbmplY3Rl
ZF9idW5kbGVfYXBpX3BhdGggPSBqaGJ1aWxkcmNfY29tbW9uLnRvcF9sZXZlbF9wYXRoKCdTb3Vy
Y2UnLCAnV2ViS2l0MicsICdXZWJQcm9jZXNzJywgJ0luamVjdGVkQnVuZGxlJywgJ0FQSScsICdn
dGsnKQogCiAgICAgaWYgY29tbW9uLmlzX2NtYWtlX2J1aWxkKCk6CiAgICAgICAgIGdlbmVyYXRl
ZF9hcGlfcGF0aCA9IGNvbW1vbi5idWlsZF9wYXRoKCdEZXJpdmVkU291cmNlcycsICd3ZWJraXQy
Z3RrJywgJ3dlYmtpdDInKQpAQCAtODksNyArOTIsNyBAQCBkZWYgZ2V0X3dlYmtpdDJfb3B0aW9u
cyh2aXJ0dWFsX3Jvb3QpOgogICAgICAgICAnc291cmNlX2RpcnMnIDogW3NyY19wYXRoKCksIGdl
bmVyYXRlZF9hcGlfcGF0aCwgaW5qZWN0ZWRfYnVuZGxlX2FwaV9wYXRoXSwKICAgICAgICAgJ2Nm
bGFncycgOgogICAgICAgICAgICAgIyBDb21tb24gcGF0aHMKLSAgICAgICAgICAgICcgLUknICsg
Y29tbW9uLnRvcF9sZXZlbF9wYXRoKCdTb3VyY2UnKSArIFwKKyAgICAgICAgICAgICcgLUknICsg
amhidWlsZHJjX2NvbW1vbi50b3BfbGV2ZWxfcGF0aCgnU291cmNlJykgKyBcCiAgICAgICAgICAg
ICAnIC1JJyArIGFwaV9wYXRoICsgXAogICAgICAgICAgICAgIyBBdXRvdG9vbHMgcGF0aHMKICAg
ICAgICAgICAgICcgLUknICsgY29tbW9uLmJ1aWxkX3BhdGgoJ0Rlcml2ZWRTb3VyY2VzJywgJ3dl
YmtpdDJndGsnLCAnaW5jbHVkZScpICsgXApAQCAtMTE1LDcgKzExOCw3IEBAIGRlZiBnZXRfd2Vi
a2l0Ml9vcHRpb25zKHZpcnR1YWxfcm9vdCk6CiAKIGRlZiBnZXRfd2Via2l0MV9vcHRpb25zKGd0
a192ZXJzaW9uLCB2aXJ0dWFsX3Jvb3QpOgogICAgIGRlZiBzcmNfcGF0aCgqYXJncyk6Ci0gICAg
ICAgIHJldHVybiBjb21tb24udG9wX2xldmVsX3BhdGgoKigoJ1NvdXJjZScsICdXZWJLaXQnLCAn
Z3RrJykgKyBhcmdzKSkKKyAgICAgICAgcmV0dXJuIGpoYnVpbGRyY19jb21tb24udG9wX2xldmVs
X3BhdGgoKigoJ1NvdXJjZScsICdXZWJLaXQnLCAnZ3RrJykgKyBhcmdzKSkKIAogICAgIGRlZiB3
ZWJraXR2ZXJzaW9uaF9wYXRoKCk6CiAgICAgICAgIGlmIGNvbW1vbi5pc19jbWFrZV9idWlsZCgp
OgpAQCAtMTQ2LDggKzE0OSw4IEBAIGRlZiBnZXRfd2Via2l0MV9vcHRpb25zKGd0a192ZXJzaW9u
LCB2aXJ0dWFsX3Jvb3QpOgogICAgICAgICAnY2ZsYWdzJyA6ICcgLUknICsgY29tbW9uLmJ1aWxk
X3BhdGgoJ1dlYktpdCcsICdndGsnKSArIFwKICAgICAgICAgICAgICAgICAgICAnIC1JJyArIGNv
bW1vbi5idWlsZF9wYXRoKCdEZXJpdmVkU291cmNlcycpICsgXAogICAgICAgICAgICAgICAgICAg
ICcgLUknICsgc3JjX3BhdGgoKSArIFwKLSAgICAgICAgICAgICAgICAgICAnIC1JJyArIGNvbW1v
bi50b3BfbGV2ZWxfcGF0aCgnU291cmNlJykgKyBcCi0gICAgICAgICAgICAgICAgICAgJyAtSScg
KyBjb21tb24udG9wX2xldmVsX3BhdGgoJ1NvdXJjZScsICdKYXZhU2NyaXB0Q29yZScsICdGb3J3
YXJkaW5nSGVhZGVycycpLAorICAgICAgICAgICAgICAgICAgICcgLUknICsgamhidWlsZHJjX2Nv
bW1vbi50b3BfbGV2ZWxfcGF0aCgnU291cmNlJykgKyBcCisgICAgICAgICAgICAgICAgICAgJyAt
SScgKyBqaGJ1aWxkcmNfY29tbW9uLnRvcF9sZXZlbF9wYXRoKCdTb3VyY2UnLCAnSmF2YVNjcmlw
dENvcmUnLCAnRm9yd2FyZGluZ0hlYWRlcnMnKSwKICAgICAgICAgJ2Nyb3NzX3JlZmVyZW5jZV9k
ZXBzJyA6IGdldF9ndGtkb2NfbW9kdWxlX3BhdGhzKHhyZWZfZGVwcykgKyBbd2Via2l0ZG9tX2Rv
Y3NfaHRtbF9wYXRoKCldLAogICAgICAgICAnaWdub3JlZF9maWxlcyc6IGdsb2IuZ2xvYihzcmNf
cGF0aCgnd2Via2l0JywgJypwcml2YXRlLionKSkgKyBcCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgZ2xvYi5nbG9iKHNyY19wYXRoKCd3ZWJraXQnLCAnd2Via2l0YXV0aGVudGljYXRpb25kaWFs
b2cuKicpKSArIFwKQEAgLTE1OSw3ICsxNjIsNyBAQCBkZWYgZ2V0X3dlYmtpdGRvbV9vcHRpb25z
KHZpcnR1YWxfcm9vdCk6CiAgICAgZGVmIGRlcml2ZWRfc291cmNlc19wYXRoKCphcmdzKToKICAg
ICAgICAgcmV0dXJuIGNvbW1vbi5idWlsZF9wYXRoKCooKCdEZXJpdmVkU291cmNlcycsICd3ZWJr
aXRkb20nKSArIGFyZ3MpKQogICAgIGRlZiBzcmNfcGF0aCgqYXJncyk6Ci0gICAgICAgIHJldHVy
biBjb21tb24udG9wX2xldmVsX3BhdGgoKigoJ1NvdXJjZScsICdXZWJDb3JlJywgJ2JpbmRpbmdz
JywgJ2dvYmplY3QnKSArIGFyZ3MpKQorICAgICAgICByZXR1cm4gamhidWlsZHJjX2NvbW1vbi50
b3BfbGV2ZWxfcGF0aCgqKCgnU291cmNlJywgJ1dlYkNvcmUnLCAnYmluZGluZ3MnLCAnZ29iamVj
dCcpICsgYXJncykpCiAKICAgICB4cmVmX2RlcHMgPSB7ICdnbGliLTIuMCcgOiBbJ2dsaWInLCAn
Z29iamVjdCcsICdnaW8nXSB9CiAKQEAgLTE3NSw3ICsxNzgsNyBAQCBkZWYgZ2V0X3dlYmtpdGRv
bV9vcHRpb25zKHZpcnR1YWxfcm9vdCk6CiAgICAgICAgICdzb3VyY2VfZGlycycgOiBbZGVyaXZl
ZF9zb3VyY2VzX3BhdGgoKV0sCiAgICAgICAgICdjZmxhZ3MnIDogJyAtSScgKyBkZXJpdmVkX3Nv
dXJjZXNfcGF0aCgpICsgXAogICAgICAgICAgICAgICAgICAgICcgLUknICsgc3JjX3BhdGgoKSAr
IFwKLSAgICAgICAgICAgICAgICAgICAnIC1JJyArIGNvbW1vbi50b3BfbGV2ZWxfcGF0aCgnU291
cmNlJyksCisgICAgICAgICAgICAgICAgICAgJyAtSScgKyBqaGJ1aWxkcmNfY29tbW9uLnRvcF9s
ZXZlbF9wYXRoKCdTb3VyY2UnKSwKICAgICAgICAgJ2Nyb3NzX3JlZmVyZW5jZV9kZXBzJyA6IGdl
dF9ndGtkb2NfbW9kdWxlX3BhdGhzKHhyZWZfZGVwcyksCiAgICAgICAgICdpZ25vcmVkX2ZpbGVz
JzogZ2xvYi5nbG9iKGRlcml2ZWRfc291cmNlc19wYXRoKCcqUHJpdmF0ZS5oJykpCiAgICAgfQpk
aWZmIC0tZ2l0IGEvVG9vbHMvZ3RrL2dlbmVyYXRlLWluc3BlY3Rvci1ncmVzb3VyY2UtbWFuaWZl
c3QucHkgYi9Ub29scy9ndGsvZ2VuZXJhdGUtaW5zcGVjdG9yLWdyZXNvdXJjZS1tYW5pZmVzdC5w
eQppbmRleCBhZGY0ZjUyLi44NTgwMzM3IDEwMDc1NQotLS0gYS9Ub29scy9ndGsvZ2VuZXJhdGUt
aW5zcGVjdG9yLWdyZXNvdXJjZS1tYW5pZmVzdC5weQorKysgYi9Ub29scy9ndGsvZ2VuZXJhdGUt
aW5zcGVjdG9yLWdyZXNvdXJjZS1tYW5pZmVzdC5weQpAQCAtMjAsNyArMjAsMTAgQEAgaW1wb3J0
IGdsb2IKIGltcG9ydCBvcwogaW1wb3J0IHN5cwogCi1yZXNvdXJjZXNfcGF0aCA9IGNvbW1vbi50
b3BfbGV2ZWxfcGF0aCgpICsgIi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvIgorc3lzLnBhdGguaW5z
ZXJ0KDAsIG9zLnBhdGguam9pbihvcy5wYXRoLmRpcm5hbWUoX19maWxlX18pLCAiLi4vamhidWls
ZCIpKQoraW1wb3J0IGpoYnVpbGRyY19jb21tb24KKworcmVzb3VyY2VzX3BhdGggPSBqaGJ1aWxk
cmNfY29tbW9uLnRvcF9sZXZlbF9wYXRoKCkgKyAiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS8iCiBp
bnNwZWN0b3JfZmlsZXMgPSBcCiAgICAgZ2xvYi5nbG9iKHJlc291cmNlc19wYXRoICsgJ1VzZXJJ
bnRlcmZhY2UvKi5odG1sJykgKyBcCiAgICAgZ2xvYi5nbG9iKHJlc291cmNlc19wYXRoICsgJ1Vz
ZXJJbnRlcmZhY2UvQmFzZS8qLmpzJykgKyBcCmRpZmYgLS1naXQgYS9Ub29scy9ndGsvamhidWls
ZHJjIGIvVG9vbHMvZ3RrL2poYnVpbGRyYwppbmRleCA2OWY5NDU3Li4xZTBiZjRiIDEwMDY0NAot
LS0gYS9Ub29scy9ndGsvamhidWlsZHJjCisrKyBiL1Rvb2xzL2d0ay9qaGJ1aWxkcmMKQEAgLTE1
LDM2ICsxNSwxNiBAQAogIyBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3Qs
IHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiAjIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5r
bGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQogCi1p
bXBvcnQgbXVsdGlwcm9jZXNzaW5nCiBpbXBvcnQgc3lzCiAKK3N5cy5wYXRoLmluc2VydCgwLCBv
cy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSwgIi4uL2poYnVpbGQiKSApCitp
bXBvcnQgamhidWlsZHJjX2NvbW1vbgoramhidWlsZHJjX2NvbW1vbi5pbml0KGdsb2JhbHMoKSwg
Imd0ayIpIAorCiBfX2d0a190b29sc19kaXJlY3RvcnkgPSBvcy5wYXRoLmFic3BhdGgob3MucGF0
aC5kaXJuYW1lKF9fZmlsZV9fKSkKIHN5cy5wYXRoID0gW19fZ3RrX3Rvb2xzX2RpcmVjdG9yeV0g
KyBzeXMucGF0aAogaW1wb3J0IGNvbW1vbgogCi1idWlsZF9wb2xpY3kgPSAndXBkYXRlZCcKLQot
X19tb2R1bGVzZXRfZmlsZV91cmkgPSAnZmlsZTovLycgKyBvcy5wYXRoLmpvaW4oX19ndGtfdG9v
bHNfZGlyZWN0b3J5LCAnamhidWlsZC5tb2R1bGVzJykKLV9fZXh0cmFfbW9kdWxlc2V0cyA9IG9z
LmVudmlyb24uZ2V0KCJXRUJLSVRfRVhUUkFfTU9EVUxFU0VUUyIsICIiKS5zcGxpdCgiLCIpCi1t
b2R1bGVzZXQgPSBbIF9fbW9kdWxlc2V0X2ZpbGVfdXJpLCBdCi1pZiBfX2V4dHJhX21vZHVsZXNl
dHMgIT0gWycnXToKLSAgICBtb2R1bGVzZXQuZXh0ZW5kKF9fZXh0cmFfbW9kdWxlc2V0cykKLQot
X19leHRyYV9tb2R1bGVzID0gb3MuZW52aXJvbi5nZXQoIldFQktJVF9FWFRSQV9NT0RVTEVTIiwg
IiIpLnNwbGl0KCIsIikKLW1vZHVsZXMgPSBbICd3ZWJraXRndGstdGVzdGluZy1kZXBlbmRlbmNp
ZXMnLCBdCi1pZiBfX2V4dHJhX21vZHVsZXMgIT0gWycnXToKLSAgICBtb2R1bGVzLmV4dGVuZChf
X2V4dHJhX21vZHVsZXMpCi0KLWlmIG9zLmVudmlyb24uaGFzX2tleSgnV0VCS0lUX09VVFBVVERJ
UicpOgotICAgIGNoZWNrb3V0cm9vdCA9IG9zLnBhdGguYWJzcGF0aChvcy5wYXRoLmpvaW4ob3Mu
ZW52aXJvblsnV0VCS0lUX09VVFBVVERJUiddLCAnRGVwZW5kZW5jaWVzJywgJ1NvdXJjZScpKQot
ICAgIHByZWZpeCA9IG9zLnBhdGguYWJzcGF0aChvcy5wYXRoLmpvaW4ob3MuZW52aXJvblsnV0VC
S0lUX09VVFBVVERJUiddLCAnRGVwZW5kZW5jaWVzJywgJ1Jvb3QnKSkKLWVsc2U6Ci0gICAgY2hl
Y2tvdXRyb290ID0gb3MucGF0aC5hYnNwYXRoKGNvbW1vbi50b3BfbGV2ZWxfcGF0aCgnV2ViS2l0
QnVpbGQnLCdEZXBlbmRlbmNpZXMnLCAnU291cmNlJykpCi0gICAgcHJlZml4ID0gb3MucGF0aC5h
YnNwYXRoKGNvbW1vbi50b3BfbGV2ZWxfcGF0aCgnV2ViS2l0QnVpbGQnLCdEZXBlbmRlbmNpZXMn
LCAnUm9vdCcpKQotCi1ub25vdGlmeSA9IFRydWUKLW5vdHJheWljb24gPSBUcnVlCi0KIGlmICdO
VU1CRVJfT0ZfUFJPQ0VTU09SUycgaW4gb3MuZW52aXJvbjoKICAgICBqb2JzID0gb3MuZW52aXJv
blsnTlVNQkVSX09GX1BST0NFU1NPUlMnXQogCmRpZmYgLS1naXQgYS9Ub29scy9qaGJ1aWxkL2po
YnVpbGRyY19jb21tb24ucHkgYi9Ub29scy9qaGJ1aWxkL2poYnVpbGRyY19jb21tb24ucHkKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjBlOTliMwotLS0gL2Rldi9udWxsCisr
KyBiL1Rvb2xzL2poYnVpbGQvamhidWlsZHJjX2NvbW1vbi5weQpAQCAtMCwwICsxLDY0IEBACisj
IS91c3IvYmluL2VudiBweXRob24KKyMgQ29weXJpZ2h0IChDKSAyMDExIElnYWxpYSBTLkwuCisj
IENvcHlyaWdodCAoQykgMjAxMiBJbnRlbCBDb3Jwb3JhdGlvbgorIworIyBUaGlzIGxpYnJhcnkg
aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisjIG1vZGlm
eSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyMg
TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0
aGVyCisjIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkg
bGF0ZXIgdmVyc2lvbi4KKyMKKyMgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo
b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsg
d2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisjIE1FUkNIQU5UQUJJTElUWSBv
ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUKKyMgTGVzc2Vy
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyMKKyMgWW91IHNob3Vs
ZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwor
IyBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBG
cmVlIFNvZnR3YXJlCisjIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlm
dGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0EKKworaW1wb3J0IG11bHRpcHJvY2Vz
c2luZworaW1wb3J0IHN5cworaW1wb3J0IG9zCisKKworc2NyaXB0X2RpciA9IE5vbmUKKworCitk
ZWYgc2NyaXB0X3BhdGgoKmFyZ3MpOgorICAgIGdsb2JhbCBzY3JpcHRfZGlyCisgICAgaWYgbm90
IHNjcmlwdF9kaXI6CisgICAgICAgIHNjcmlwdF9kaXIgPSBvcy5wYXRoLmpvaW4ob3MucGF0aC5k
aXJuYW1lKF9fZmlsZV9fKSwgJy4uJywgJ1NjcmlwdHMnKQorICAgIHJldHVybiBvcy5wYXRoLmpv
aW4oKihzY3JpcHRfZGlyLCkgKyBhcmdzKQorCisKK2RlZiB0b3BfbGV2ZWxfcGF0aCgqYXJncyk6
CisgICAgcmV0dXJuIG9zLnBhdGguam9pbigqKChvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1l
KF9fZmlsZV9fKSwgJy4uJywgJy4uJyksKSArIGFyZ3MpKQorCisKK2RlZiBpbml0KGpoYnVpbGRy
Y19nbG9iYWxzLCBwbGF0Zm9ybSk6CisKKyAgICBfX3Rvb2xzX2RpcmVjdG9yeSA9IG9zLnBhdGgu
am9pbihvcy5wYXRoLmRpcm5hbWUoX19maWxlX18pLCAiLi4vIiwgcGxhdGZvcm0pCisgICAgc3lz
LnBhdGguaW5zZXJ0KDAsIF9fdG9vbHNfZGlyZWN0b3J5KQorCisgICAgamhidWlsZHJjX2dsb2Jh
bHNbImJ1aWxkX3BvbGljeSJdID0gJ3VwZGF0ZWQnCisKKyAgICBfX21vZHVsZXNldF9maWxlX3Vy
aSA9ICdmaWxlOi8vJyArIG9zLnBhdGguam9pbihfX3Rvb2xzX2RpcmVjdG9yeSwgJ2poYnVpbGQu
bW9kdWxlcycpCisgICAgX19leHRyYV9tb2R1bGVzZXRzID0gb3MuZW52aXJvbi5nZXQoIldFQktJ
VF9FWFRSQV9NT0RVTEVTRVRTIiwgIiIpLnNwbGl0KCIsIikKKyAgICBqaGJ1aWxkcmNfZ2xvYmFs
c1sibW9kdWxlc2V0Il0gPSBbX19tb2R1bGVzZXRfZmlsZV91cmksIF0KKyAgICBpZiBfX2V4dHJh
X21vZHVsZXNldHMgIT0gWycnXToKKyAgICAgICAgamhidWlsZHJjX2dsb2JhbHNbIm1vZHVsZXNl
dCJdLmV4dGVuZChfX2V4dHJhX21vZHVsZXNldHMpCisKKyAgICBfX2V4dHJhX21vZHVsZXMgPSBv
cy5lbnZpcm9uLmdldCgiV0VCS0lUX0VYVFJBX01PRFVMRVMiLCAiIikuc3BsaXQoIiwiKQorICAg
IGpoYnVpbGRyY19nbG9iYWxzWyJtb2R1bGVzIl0gPSBbJ3dlYmtpdCcgKyBwbGF0Zm9ybSArICct
dGVzdGluZy1kZXBlbmRlbmNpZXMnLCBdCisgICAgaWYgX19leHRyYV9tb2R1bGVzICE9IFsnJ106
CisgICAgICAgIGpoYnVpbGRyY19nbG9iYWxzWyJtb2R1bGVzIl0uZXh0ZW5kKF9fZXh0cmFfbW9k
dWxlcykKKworICAgIGlmICdXRUJLSVRfT1VUUFVURElSJyBpbiBvcy5lbnZpcm9uOgorICAgICAg
ICBqaGJ1aWxkcmNfZ2xvYmFsc1siY2hlY2tvdXRyb290Il0gPSBjaGVja291dHJvb3QgPSBvcy5w
YXRoLmFic3BhdGgob3MucGF0aC5qb2luKG9zLmVudmlyb25bJ1dFQktJVF9PVVRQVVRESVInXSwg
J0RlcGVuZGVuY2llcycsICdTb3VyY2UnKSkKKyAgICAgICAgamhidWlsZHJjX2dsb2JhbHNbInBy
ZWZpeCJdID0gb3MucGF0aC5hYnNwYXRoKG9zLnBhdGguam9pbihvcy5lbnZpcm9uWydXRUJLSVRf
T1VUUFVURElSJ10sICdEZXBlbmRlbmNpZXMnLCAnUm9vdCcpKQorICAgIGVsc2U6CisgICAgICAg
IGpoYnVpbGRyY19nbG9iYWxzWyJjaGVja291dHJvb3QiXSA9IGNoZWNrb3V0cm9vdCA9IG9zLnBh
dGguYWJzcGF0aCh0b3BfbGV2ZWxfcGF0aCgnV2ViS2l0QnVpbGQnLCAnRGVwZW5kZW5jaWVzJywg
J1NvdXJjZScpKQorICAgICAgICBqaGJ1aWxkcmNfZ2xvYmFsc1sicHJlZml4Il0gPSBvcy5wYXRo
LmFic3BhdGgodG9wX2xldmVsX3BhdGgoJ1dlYktpdEJ1aWxkJywgJ0RlcGVuZGVuY2llcycsICdS
b290JykpCisKKyAgICBqaGJ1aWxkcmNfZ2xvYmFsc1sibm9ub3RpZnkiXSA9IFRydWUKKyAgICBq
aGJ1aWxkcmNfZ2xvYmFsc1sibm90cmF5aWNvbiJdID0gVHJ1ZQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>