<?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>154512</bug_id>
          
          <creation_ts>2016-02-21 01:57:06 -0800</creation_ts>
          <short_desc>Added new port JSCOnly.</short_desc>
          <delta_ts>2016-03-13 19:35:09 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Local Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Konstantin Tokarev">annulen</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>ewmailing</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>kling</cc>
    
    <cc>lforschler</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>ossy</cc>
    
    <cc>saam</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1166822</commentid>
    <comment_count>0</comment_count>
    <who name="Konstantin Tokarev">annulen</who>
    <bug_when>2016-02-21 01:57:06 -0800</bug_when>
    <thetext>This port allows to build JavaScriptCore engine with minimal dependencies (right now only ICU is required).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1166823</commentid>
    <comment_count>1</comment_count>
      <attachid>271880</attachid>
    <who name="Konstantin Tokarev">annulen</who>
    <bug_when>2016-02-21 02:23:38 -0800</bug_when>
    <thetext>Created attachment 271880
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1166825</commentid>
    <comment_count>2</comment_count>
      <attachid>271880</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2016-02-21 06:31:12 -0800</bug_when>
    <thetext>Comment on attachment 271880
Patch

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

I think we should do this, it can only make it easier to contribute to JSC.

I&apos;m concerned by the missing implementations of MainThread, RunLoop, and WorkQueue, though. Are those really not needed by JSC? I&apos;d drop some ASSERT_NOT_REACHED() calls into WorkQueue::dispatch and WorkQueue::dispatchAfter, and RunLoop::dispatch in RunLoop.cpp (in an #ifdef). Maybe you&apos;ll find something important is not being run....

&gt; Source/cmake/OptionsJSCOnly.cmake:22
&gt; +if (CMAKE_MAJOR_VERSION LESS 3)

Nowadays I think everyone will have CMake 3 or higher... since this is only a convenience for developers (makes the build stop on error) we can probably get rid of it from OptionsGTK.cmake, and probably don&apos;t need it for this new port either.

&gt; Source/cmake/OptionsJSCOnly.cmake:43
&gt; +# You can build JavaScriptCore as a static library if you specify it as STATIC

Did you consider making this a public build option?

WEBKIT_OPTION_BEGIN()
WEBKIT_OPTION_DEFINE(ENABLE_STATIC_JSC &quot;Whether to build JavaScriptCore as a static library.&quot; PUBLIC OFF)
WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_FTL_JIT PUBLIC ON)
WEBKIT_OPTION_END()

if (ENABLE_STATIC_JSC)
    set(JavaScriptCore_LIBRARY_TYPE STATIC)
endif ()

&gt; Tools/Scripts/webkitdirs.pm:2038
&gt; +    if ((isGtk() || isJSCOnly()) &amp;&amp; -e &quot;$buildPath/build.sh&quot;) {

(We could get rid of this code too. In a different patch, of course.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1166826</commentid>
    <comment_count>3</comment_count>
      <attachid>271880</attachid>
    <who name="Konstantin Tokarev">annulen</who>
    <bug_when>2016-02-21 06:39:05 -0800</bug_when>
    <thetext>Comment on attachment 271880
Patch

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

&gt;&gt; Source/cmake/OptionsJSCOnly.cmake:22
&gt;&gt; +if (CMAKE_MAJOR_VERSION LESS 3)
&gt; 
&gt; Nowadays I think everyone will have CMake 3 or higher... since this is only a convenience for developers (makes the build stop on error) we can probably get rid of it from OptionsGTK.cmake, and probably don&apos;t need it for this new port either.

FWIW, I&apos;m routinely using 2.8.12.2, but it won&apos;t be a dealbreaker if 3.0 becomes required.
Another option is to split cmake &lt; 3 support into separate file and include it into both places.

&gt;&gt; Source/cmake/OptionsJSCOnly.cmake:43
&gt;&gt; +# You can build JavaScriptCore as a static library if you specify it as STATIC
&gt; 
&gt; Did you consider making this a public build option?
&gt; 
&gt; WEBKIT_OPTION_BEGIN()
&gt; WEBKIT_OPTION_DEFINE(ENABLE_STATIC_JSC &quot;Whether to build JavaScriptCore as a static library.&quot; PUBLIC OFF)
&gt; WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_FTL_JIT PUBLIC ON)
&gt; WEBKIT_OPTION_END()
&gt; 
&gt; if (ENABLE_STATIC_JSC)
&gt;     set(JavaScriptCore_LIBRARY_TYPE STATIC)
&gt; endif ()

Will do it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1166827</commentid>
    <comment_count>4</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2016-02-21 06:55:40 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; FWIW, I&apos;m routinely using 2.8.12.2, but it won&apos;t be a dealbreaker if 3.0
&gt; becomes required.

Well it wouldn&apos;t be required, but you&apos;d lose colors and pretty-printing, according to the comment.

But I see 2.8.12.2 is used by Ubuntu 14.04; makes sense to keep the current support a while longer, I think.

&gt; Another option is to split cmake &lt; 3 support into separate file and include
&gt; it into both places.

Probably easiest to leave it be, since I plan to remove it eventually.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1166828</commentid>
    <comment_count>5</comment_count>
    <who name="Konstantin Tokarev">annulen</who>
    <bug_when>2016-02-21 07:00:43 -0800</bug_when>
    <thetext>Noot sure what &quot;pretty-printing&quot; is meant here; as for colors it&apos;s possible to get colored diagnostics by re-running ninja manually</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1166833</commentid>
    <comment_count>6</comment_count>
      <attachid>271881</attachid>
    <who name="Konstantin Tokarev">annulen</who>
    <bug_when>2016-02-21 09:21:16 -0800</bug_when>
    <thetext>Created attachment 271881
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1166980</commentid>
    <comment_count>7</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2016-02-22 03:04:48 -0800</bug_when>
    <thetext>(In reply to comment #4)
[snip]
&gt; But I see 2.8.12.2 is used by Ubuntu 14.04; makes sense to keep the current
&gt; support a while longer, I think.
[snip]

Ubuntu 14.04 is shipped with GCC 4.8 and this GCC isn&apos;t supported long time ago.
For example https://trac.webkit.org/changeset/196873 removed the GCC 4.8
workaround from bmalloc.

I tried this patch on r196872 and got another build error:
../../Source/JavaScriptCore/ftl/FTLLazySlowPathCall.h:51:1: warning: control reaches end of non-void function [-Wreturn-type]

FTLLazySlowPathCall.h was added by https://trac.webkit.org/changeset/190860
4 months ago and wasn&apos;t touched ever since then.

It seems GCC 4.8 build is completely broken and many workarounds should
be added to make it work again. Is there anybody who is interested to
do it?

I would say we should go ahead and try to forget GCC 4.8.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1166983</commentid>
    <comment_count>8</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-02-22 03:20:25 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; (In reply to comment #4)
&gt; [snip]
&gt; &gt; But I see 2.8.12.2 is used by Ubuntu 14.04; makes sense to keep the current
&gt; &gt; support a while longer, I think.
&gt; [snip]
&gt; 
&gt; Ubuntu 14.04 is shipped with GCC 4.8 and this GCC isn&apos;t supported long time
&gt; ago.
&gt; For example https://trac.webkit.org/changeset/196873 removed the GCC 4.8
&gt; workaround from bmalloc.
&gt; 
&gt; I tried this patch on r196872 and got another build error:
&gt; ../../Source/JavaScriptCore/ftl/FTLLazySlowPathCall.h:51:1: warning: control
&gt; reaches end of non-void function [-Wreturn-type]
&gt; 
&gt; FTLLazySlowPathCall.h was added by https://trac.webkit.org/changeset/190860
&gt; 4 months ago and wasn&apos;t touched ever since then.
&gt; 
&gt; It seems GCC 4.8 build is completely broken and many workarounds should
&gt; be added to make it work again. Is there anybody who is interested to
&gt; do it?
&gt; 
&gt; I would say we should go ahead and try to forget GCC 4.8.

Yeah. Fortunately, in Ubuntu, we can introduce newer GCC (4.9) by using PPA. So throwing GCC 4.8 away does not block building the WebKit on Ubuntu 14.04 :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1166991</commentid>
    <comment_count>9</comment_count>
    <who name="Konstantin Tokarev">annulen</who>
    <bug_when>2016-02-22 04:44:10 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; (In reply to comment #4)
&gt; [snip]
&gt; &gt; But I see 2.8.12.2 is used by Ubuntu 14.04; makes sense to keep the current
&gt; &gt; support a while longer, I think.
&gt; [snip]
&gt; 
&gt; Ubuntu 14.04 is shipped with GCC 4.8 and this GCC isn&apos;t supported long time
&gt; ago.
&gt; For example https://trac.webkit.org/changeset/196873 removed the GCC 4.8
&gt; workaround from bmalloc.

I haven&apos;t tried building with r196873, but until yesterday GCC 4.8 worked fine for me for Linux/MIPS (no FTL). I cannot upgrade yet because Broadcom does not provide toolchains with newer GCC yet. My plan was to set up JSCOnly build slave for MIPS based using this GCC 4.8 toolchain to ensure that compilation with 4.8 is not broken.

I can try to fix FTL issues if it is required to officially allow building with 4.8.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1167358</commentid>
    <comment_count>10</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2016-02-23 03:35:52 -0800</bug_when>
    <thetext>It seems sampling profiler tests fail on JSCOnly port:
stress/sampling-profiler-anonymous-function.js
stress/sampling-profiler-basic.js
stress/sampling-profiler-bound-function-name.js
stress/sampling-profiler-deep-stack.js
stress/sampling-profiler-display-name.js
stress/sampling-profiler-internal-function-name.js

I don&apos;t think if it is a blocker issue, but it would
be great to investigate this bug in the near future.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1167359</commentid>
    <comment_count>11</comment_count>
    <who name="Konstantin Tokarev">annulen</who>
    <bug_when>2016-02-23 03:46:45 -0800</bug_when>
    <thetext>(In reply to comment #10)
&gt; It seems sampling profiler tests fail on JSCOnly port:
&gt; stress/sampling-profiler-anonymous-function.js
&gt; stress/sampling-profiler-basic.js
&gt; stress/sampling-profiler-bound-function-name.js
&gt; stress/sampling-profiler-deep-stack.js
&gt; stress/sampling-profiler-display-name.js
&gt; stress/sampling-profiler-internal-function-name.js
&gt; 
&gt; I don&apos;t think if it is a blocker issue, but it would
&gt; be great to investigate this bug in the near future.

I guess it is a result of using fake event loop. My current plan is to allow switching event loop via build option, as I would prefer to keep ability to use fake event loop.

I&apos;m also considering writing loop using select(2) or poll(2), but I&apos;m not sure how complex such code would become.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1167361</commentid>
    <comment_count>12</comment_count>
      <attachid>271881</attachid>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2016-02-23 03:48:34 -0800</bug_when>
    <thetext>Comment on attachment 271881
Patch

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

&gt; Source/WTF/wtf/none/MainThreadNone.cpp:1
&gt; +#include &quot;config.h&quot;

Could you add copyright and license header to this new file?

&gt; Source/WTF/wtf/none/RunLoopNone.cpp:1
&gt; +#include &quot;config.h&quot;

ditto

&gt; Source/WTF/wtf/none/WorkQueueNone.cpp:1
&gt; +#include &quot;config.h&quot;

ditto</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1168744</commentid>
    <comment_count>13</comment_count>
      <attachid>271881</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2016-02-26 16:52:04 -0800</bug_when>
    <thetext>Comment on attachment 271881
Patch

I think it&apos;s better to take the time to get this right and land it with a working event loop.  (And copyright headers!)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1169000</commentid>
    <comment_count>14</comment_count>
      <attachid>272458</attachid>
    <who name="Konstantin Tokarev">annulen</who>
    <bug_when>2016-02-28 09:58:20 -0800</bug_when>
    <thetext>Created attachment 272458
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1169005</commentid>
    <comment_count>15</comment_count>
    <who name="Konstantin Tokarev">annulen</who>
    <bug_when>2016-02-28 10:24:06 -0800</bug_when>
    <thetext>I&apos;ve added optional dependency on glib: if it is found, glib event loop code is used. Other event loop variants (Mac, Win, Efl) may be added later.

I&apos;ve replaced PLATFORM(GTK) with USE(GLIB) in WorkQueue.h, but I&apos;m not completely satisfied with this solution. Efl also defines USE(GLIB), but it does not use glib event loop (and Qt port does the same when GStreamer is used), so result depends heavily on #if clause ordering. 

I think it would make sense to introduce special conditions for event loop code choice, e.g. USE(EVENTLOOP_GLIB), USE(EVENTLOOP_EFL), etc. What do you think?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1169008</commentid>
    <comment_count>16</comment_count>
      <attachid>272458</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2016-02-28 11:19:11 -0800</bug_when>
    <thetext>Comment on attachment 272458
Patch

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

&gt; Source/WTF/wtf/WorkQueue.h:43
&gt; +#elif USE(GLIB)

Honestly, I think the way you have it here is best: use DispatchQueueEfl for EFL, otherwise use the GLib stuff. This isn&apos;t the only place we have such conditionals. I think it&apos;s nicer this way than introducing new USE(EVENTLOOP_GLIB) USE(EVENTLOOP_EFL) flags.

Anyway, changing from PLATFORM(GTK) to USE(GLIB) is definitely correct.

&gt; Source/cmake/OptionsJSCOnly.cmake:28
&gt; +    SET_AND_EXPOSE_TO_BUILD(USE_GLIB 1)

But I&apos;m uncomfortable with autodetecting GLib support and silently disabling it if not present. This means some users will have a broken JSC due to the missing RunLoop/WorkQueue implementations, and others will not, even while building in exactly the same way, based on the presence of development files for some seemingly-random library.

One solution is to make this a public option, on by default, with a descriptive error message (without GLib, this and this will break) so users have to explicitly pass -DUSE_GLIB=OFF to CMake to build without it. I would r+ such a patch.

But even so, it seems like a broken vs. not broken option to me. Perhaps best to just require GLib for now, and work on a new WorkQueue implementation to remove the dependency later. GLib has very few dependencies and it&apos;s available everywhere; it would be nice to have no dependency on GLib, but I don&apos;t think it&apos;s so horrible.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1169009</commentid>
    <comment_count>17</comment_count>
    <who name="Konstantin Tokarev">annulen</who>
    <bug_when>2016-02-28 11:37:19 -0800</bug_when>
    <thetext>(In reply to comment #16)
&gt; Comment on attachment 272458 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=272458&amp;action=review
&gt; 
&gt; &gt; Source/WTF/wtf/WorkQueue.h:43
&gt; &gt; +#elif USE(GLIB)
&gt; 
&gt; Honestly, I think the way you have it here is best: use DispatchQueueEfl for
&gt; EFL, otherwise use the GLib stuff. This isn&apos;t the only place we have such
&gt; conditionals. I think it&apos;s nicer this way than introducing new
&gt; USE(EVENTLOOP_GLIB) USE(EVENTLOOP_EFL) flags.

My concerns rehashed:

1. It is possible to make JSCOnly building with EFL loop, but it doesn&apos;t seem to be a good idea to define PLATFORM(EFL) in this case. Same goes for DARWIN and WINDOWS cases.

2. USE(GLIB) does not mean &quot;Use GLib enent loop&quot; in generic case

&gt; 
&gt; Anyway, changing from PLATFORM(GTK) to USE(GLIB) is definitely correct.
&gt; 
&gt; &gt; Source/cmake/OptionsJSCOnly.cmake:28
&gt; &gt; +    SET_AND_EXPOSE_TO_BUILD(USE_GLIB 1)
&gt; 
&gt; But I&apos;m uncomfortable with autodetecting GLib support and silently disabling
&gt; it if not present. This means some users will have a broken JSC due to the
&gt; missing RunLoop/WorkQueue implementations, and others will not, even while
&gt; building in exactly the same way, based on the presence of development files
&gt; for some seemingly-random library.
&gt; 
&gt; One solution is to make this a public option, on by default, with a
&gt; descriptive error message (without GLib, this and this will break) so users
&gt; have to explicitly pass -DUSE_GLIB=OFF to CMake to build without it. I would
&gt; r+ such a patch.

I&apos;ll add option to choose event loop type by name, with GLib being default for now (later default should depend on OS).

&gt; 
&gt; But even so, it seems like a broken vs. not broken option to me. Perhaps
&gt; best to just require GLib for now, and work on a new WorkQueue
&gt; implementation to remove the dependency later. GLib has very few
&gt; dependencies and it&apos;s available everywhere; it would be nice to have no
&gt; dependency on GLib, but I don&apos;t think it&apos;s so horrible.

I don&apos;t agree with &quot;broken vs. not broken&quot; part. &quot;None&quot; is not broken, it is just not feature complete, e.g. all tests from run-layout-jsc pass.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1169044</commentid>
    <comment_count>18</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2016-02-28 15:40:58 -0800</bug_when>
    <thetext>&gt; I&apos;ll add option to choose event loop type by name, with GLib being default
&gt; for now (later default should depend on OS).

OK, in this case it makes sense to have USE(EVENTLOOP_GLIB) and USE(EVENTLOOP_EFL).

&gt; I don&apos;t agree with &quot;broken vs. not broken&quot; part. &quot;None&quot; is not broken, it is
&gt; just not feature complete, e.g. all tests from run-layout-jsc pass.

OK.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1172008</commentid>
    <comment_count>19</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2016-03-08 03:58:54 -0800</bug_when>
    <thetext>Konstantin, is there any chance to push JSCOnly port to trunk soon?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1172009</commentid>
    <comment_count>20</comment_count>
    <who name="Konstantin Tokarev">annulen</who>
    <bug_when>2016-03-08 04:06:15 -0800</bug_when>
    <thetext>Yes, I&apos;m going to finish it today</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1172010</commentid>
    <comment_count>21</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2016-03-08 04:19:19 -0800</bug_when>
    <thetext>(In reply to comment #20)
&gt; Yes, I&apos;m going to finish it today

Cool, good news. ;)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1174223</commentid>
    <comment_count>22</comment_count>
      <attachid>273903</attachid>
    <who name="Konstantin Tokarev">annulen</who>
    <bug_when>2016-03-13 14:16:34 -0700</bug_when>
    <thetext>Created attachment 273903
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1174237</commentid>
    <comment_count>23</comment_count>
      <attachid>273903</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-03-13 15:30:01 -0700</bug_when>
    <thetext>Comment on attachment 273903
Patch

Clearing flags on attachment: 273903

Committed r198086: &lt;http://trac.webkit.org/changeset/198086&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1174238</commentid>
    <comment_count>24</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-03-13 15:30:07 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1174284</commentid>
    <comment_count>25</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-03-13 19:35:09 -0700</bug_when>
    <thetext>Nice!</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>271880</attachid>
            <date>2016-02-21 02:23:38 -0800</date>
            <delta_ts>2016-02-21 09:21:07 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-154512-20160221132319.patch</filename>
            <type>text/plain</type>
            <size>12164</size>
            <attacher name="Konstantin Tokarev">annulen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk2ODY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
NjYzMGM0NGIwN2NiYWJlZDZlODZkMjViOWMwNjExNjlhODNkZWJjLi5iYmJkZWIwNzgwMDEyNGIx
ZDQ1MTY2ZjRlODhiNzIwNWY1MzY3Y2I4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNSBAQAorMjAxNi0wMi0yMSAgS29uc3RhbnRpbiBUb2thcmV2ICA8YW5udWxlbkB5YW5k
ZXgucnU+CisKKyAgICAgICAgQWRkZWQgbmV3IHBvcnQgSlNDT25seS4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NDUxMgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcG9ydCBhbGxvd3MgdG8gYnVp
bGQgSmF2YVNjcmlwdENvcmUgZW5naW5lIHdpdGggbWluaW1hbAorICAgICAgICBkZXBlbmRlbmNp
ZXMuCisKKyAgICAgICAgKiBQbGF0Zm9ybUpTQ09ubHkuY21ha2U6IEFkZGVkLgorCiAyMDE2LTAy
LTE5ICBTdWtvbHNhayBTYWtzaHV3b25nICA8c3Vrb2xzYWtAZ21haWwuY29tPgogCiAgICAgICAg
IFtJTlRMXSBJbXBsZW1lbnQgTnVtYmVyIEZvcm1hdCBGdW5jdGlvbnMKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggZTAwNTMyYTYz
YWE3NDkyZDhhMzEwYzE4OGE3NDE0ZjI0MjJjMTRiMy4uNzEwNzY1OTdiZDg2ZGY3MTY2OGRiMTBi
ZWMwMGMwMTU5MDM2ZWZkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAxNi0wMi0yMSAgS29uc3Rh
bnRpbiBUb2thcmV2ICA8YW5udWxlbkB5YW5kZXgucnU+CisKKyAgICAgICAgQWRkZWQgbmV3IHBv
cnQgSlNDT25seS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE1NDUxMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFRoaXMgcG9ydCBhbGxvd3MgdG8gYnVpbGQgSmF2YVNjcmlwdENvcmUgZW5naW5lIHdpdGgg
bWluaW1hbAorICAgICAgICBkZXBlbmRlbmNpZXMuCisKKyAgICAgICAgKiB3dGYvUGxhdGZvcm1K
U0NPbmx5LmNtYWtlOiBBZGRlZC4KKyAgICAgICAgKiB3dGYvbm9uZS9NYWluVGhyZWFkTm9uZS5j
cHA6IEFkZGVkLgorICAgICAgICAqIHd0Zi9ub25lL1J1bkxvb3BOb25lLmNwcDogQWRkZWQuCisg
ICAgICAgICogd3RmL25vbmUvV29ya1F1ZXVlTm9uZS5jcHA6IEFkZGVkLgorCiAyMDE2LTAyLTE4
ICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgogCiAgICAgICAgIEV4dGVuZCBI
YXNoQ291bnRlZFNldCB3aXRoIGEgbWV0aG9kIHRvIGVmZmljaWVudGx5IHNldCB0aGUgY291bnQg
b2YgYW4gZW50cnkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9QbGF0Zm9ybUpT
Q09ubHkuY21ha2UgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvUGxhdGZvcm1KU0NPbmx5LmNtYWtl
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjgzODBiNjU5YmM3MjU1OWNiN2IyYzBkZDRlYjM5OWE5MWJjMTI2YmEKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvUGxhdGZvcm1KU0NPbmx5LmNt
YWtlCkBAIC0wLDAgKzEsNiBAQAorYWRkX2RlZmluaXRpb25zKC1EU1RBVElDQUxMWV9MSU5LRURf
V0lUSF9XVEYpCisKK2xpc3QoQVBQRU5EIEphdmFTY3JpcHRDb3JlX0lOQ0xVREVfRElSRUNUT1JJ
RVMKKyAgICAiJHtXVEZfRElSfSIKKykKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUGxh
dGZvcm1KU0NPbmx5LmNtYWtlIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm1KU0NPbmx5LmNtYWtl
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmQyNWUyMTgxNmVjM2ViYTRjNjg1YjMzOGY1NDY4MDRjNTgyY2U0YmQKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUpTQ09ubHkuY21ha2UKQEAg
LTAsMCArMSw5IEBACitsaXN0KEFQUEVORCBXVEZfU09VUkNFUworICAgIG5vbmUvTWFpblRocmVh
ZE5vbmUuY3BwCisgICAgbm9uZS9SdW5Mb29wTm9uZS5jcHAKKyAgICBub25lL1dvcmtRdWV1ZU5v
bmUuY3BwCispCisKK2xpc3QoQVBQRU5EIFdURl9MSUJSQVJJRVMKKyAgICAke0NNQUtFX1RIUkVB
RF9MSUJTX0lOSVR9CispCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9ub25lL01haW5UaHJl
YWROb25lLmNwcCBiL1NvdXJjZS9XVEYvd3RmL25vbmUvTWFpblRocmVhZE5vbmUuY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjU2MTk5NDZlOTAwNmMwZWMyNjZkMjI5ZmZhNWFjODE5MWYzMzQ4ZWUKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9ub25lL01haW5UaHJlYWROb25lLmNwcApAQCAtMCww
ICsxLDE0IEBACisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTWFpblRocmVhZC5oIgor
CituYW1lc3BhY2UgV1RGIHsKKwordm9pZCBpbml0aWFsaXplTWFpblRocmVhZFBsYXRmb3JtKCkK
K3sKK30KKwordm9pZCBzY2hlZHVsZURpc3BhdGNoRnVuY3Rpb25zT25NYWluVGhyZWFkKCkKK3sK
K30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvbm9uZS9SdW5Mb29wTm9uZS5jcHAg
Yi9Tb3VyY2UvV1RGL3d0Zi9ub25lL1J1bkxvb3BOb25lLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lMjU5Yzkx
MmRmNGM1MWRhZjZkZjEzNDZhNzI4MWI5YzFlZmI4ZjE0Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dURi93dGYvbm9uZS9SdW5Mb29wTm9uZS5jcHAKQEAgLTAsMCArMSw0OSBAQAorI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlJ1bkxvb3AuaCIKKworbmFtZXNwYWNlIFdURiB7CisK
K1J1bkxvb3A6OlJ1bkxvb3AoKQoreworfQorCitSdW5Mb29wOjp+UnVuTG9vcCgpCit7Cit9CisK
K3ZvaWQgUnVuTG9vcDo6cnVuKCkKK3sKK30KKwordm9pZCBSdW5Mb29wOjpzdG9wKCkKK3sKK30K
Kwordm9pZCBSdW5Mb29wOjp3YWtlVXAoKQoreworfQorCitSdW5Mb29wOjpUaW1lckJhc2U6OlRp
bWVyQmFzZShSdW5Mb29wJiBydW5Mb29wKQorICAgIDogbV9ydW5Mb29wKHJ1bkxvb3ApCit7Cit9
CisKK1J1bkxvb3A6OlRpbWVyQmFzZTo6flRpbWVyQmFzZSgpCit7CisgICAgc3RvcCgpOworfQor
Cit2b2lkIFJ1bkxvb3A6OlRpbWVyQmFzZTo6c3RhcnQoZG91YmxlLCBib29sKQoreworfQorCit2
b2lkIFJ1bkxvb3A6OlRpbWVyQmFzZTo6c3RvcCgpCit7Cit9CisKK2Jvb2wgUnVuTG9vcDo6VGlt
ZXJCYXNlOjppc0FjdGl2ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGZhbHNlOworfQorCit9IC8v
IG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL25vbmUvV29ya1F1ZXVl
Tm9uZS5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9ub25lL1dvcmtRdWV1ZU5vbmUuY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmNlZjMzM2Q4NTVjYWRmODkzZWMyZWI3NjA2ZjgxZDEyOTZlZjQxZDIKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9ub25lL1dvcmtRdWV1ZU5vbmUuY3BwCkBAIC0wLDAgKzEs
MTggQEAKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXb3JrUXVldWUuaCIKKwordm9p
ZCBXb3JrUXVldWU6OnBsYXRmb3JtSW5pdGlhbGl6ZShjb25zdCBjaGFyKiwgVHlwZSwgUU9TKQor
eworfQorCit2b2lkIFdvcmtRdWV1ZTo6cGxhdGZvcm1JbnZhbGlkYXRlKCkKK3sKK30KKwordm9p
ZCBXb3JrUXVldWU6OmRpc3BhdGNoKHN0ZDo6ZnVuY3Rpb248dm9pZCgpPikKK3sKK30KKwordm9p
ZCBXb3JrUXVldWU6OmRpc3BhdGNoQWZ0ZXIoc3RkOjpjaHJvbm86Om5hbm9zZWNvbmRzLCBzdGQ6
OmZ1bmN0aW9uPHZvaWQoKT4pCit7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvY21ha2UvT3B0aW9u
c0pTQ09ubHkuY21ha2UgYi9Tb3VyY2UvY21ha2UvT3B0aW9uc0pTQ09ubHkuY21ha2UKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGY4ZDM1YTI0N2Q0ZGE5NGRkNmU3MTVlZjhmMThhMDhlOTM4NWNiOQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9jbWFrZS9PcHRpb25zSlNDT25seS5jbWFrZQpAQCAtMCwwICsxLDQ0
IEBACitmaW5kX3BhY2thZ2UoSUNVIFJFUVVJUkVEKQorZmluZF9wYWNrYWdlKFRocmVhZHMgUkVR
VUlSRUQpCisKK3NldChQUk9KRUNUX1ZFUlNJT05fTUFKT1IgMSkKK3NldChQUk9KRUNUX1ZFUlNJ
T05fTUlOT1IgMCkKK3NldChQUk9KRUNUX1ZFUlNJT05fTUlDUk8gMCkKK3NldChQUk9KRUNUX1ZF
UlNJT04gJHtQUk9KRUNUX1ZFUlNJT05fTUFKT1J9LiR7UFJPSkVDVF9WRVJTSU9OX01JTk9SfS4k
e1BST0pFQ1RfVkVSU0lPTl9NSUNST30pCisKK1dFQktJVF9PUFRJT05fQkVHSU4oKQorV0VCS0lU
X09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX0ZUTF9KSVQgUFVCTElDIE9OKQorV0VC
S0lUX09QVElPTl9FTkQoKQorCitzZXQoRU5BQkxFX1dFQktJVCBPRkYpCitzZXQoRU5BQkxFX1dF
QktJVDIgT0ZGKQorc2V0KEVOQUJMRV9BUElfVEVTVFMgT0ZGKQorCitpZiAoV1RGX0NQVV9YODYg
T1IgV1RGX0NQVV9YODZfNjQpCisgICAgc2V0KFdURl9VU0VfVURJUzg2IDEpCitlbmRpZiAoKQor
CisjIEZyb20gT3B0aW9uc0dUSy5jbWFrZQoraWYgKENNQUtFX01BSk9SX1ZFUlNJT04gTEVTUyAz
KQorICAgICMgQmVmb3JlIENNYWtlIDMgaXQgd2FzIG5lY2Vzc2FyeSB0byB1c2UgYSBidWlsZCBz
Y3JpcHQgaW5zdGVhZCBvZiB1c2luZyBjbWFrZSAtLWJ1aWxkIGRpcmVjdGx5CisgICAgIyB0byBw
cmVzZXJ2ZSBjb2xvcnMgYW5kIHByZXR0eS1wcmludGluZy4KKworICAgIGJ1aWxkX2NvbW1hbmQo
Q09NTUFORF9MSU5FX1RPX0JVSUxEKQorICAgICMgYnVpbGRfY29tbWFuZCB1bmNvbmRpdGlvbmFs
bHkgYWRkcyAtaSAoaWdub3JlIGVycm9ycykgZm9yIG1ha2UsIGFuZCB0aGVyZSdzCisgICAgIyBu
byByZWFzb25hYmxlIHdheSB0byB0dXJuIHRoYXQgb2ZmLCBzbyB3ZSBqdXN0IHJlcGxhY2UgaXQg
d2l0aCAtaywgd2hpY2ggaGFzCisgICAgIyB0aGUgc2FtZSBlZmZlY3QsIGV4Y2VwdCB0aGF0IHRo
ZSByZXR1cm4gY29kZSB3aWxsIGluZGljYXRlIHRoYXQgYW4gZXJyb3Igb2NjdXJyZWQuCisgICAg
IyBTZWU6IGh0dHA6Ly93d3cuY21ha2Uub3JnL2NtYWtlL2hlbHAvdjMuMC9jb21tYW5kL2J1aWxk
X2NvbW1hbmQuaHRtbAorICAgIHN0cmluZyhSRVBMQUNFICIgLWkiICIgLWsiIENPTU1BTkRfTElO
RV9UT19CVUlMRCAke0NPTU1BTkRfTElORV9UT19CVUlMRH0pCisgICAgZmlsZShXUklURQorICAg
ICAgICAke0NNQUtFX0JJTkFSWV9ESVJ9JHtDTUFLRV9GSUxFU19ESVJFQ1RPUll9L2J1aWxkLnNo
CisgICAgICAgICIjIS9iaW4vc2hcbiIKKyAgICAgICAgIiR7Q09NTUFORF9MSU5FX1RPX0JVSUxE
fSAkQCIKKyAgICApCisgICAgZmlsZShDT1BZICR7Q01BS0VfQklOQVJZX0RJUn0ke0NNQUtFX0ZJ
TEVTX0RJUkVDVE9SWX0vYnVpbGQuc2gKKyAgICAgICAgREVTVElOQVRJT04gJHtDTUFLRV9CSU5B
UllfRElSfQorICAgICAgICBGSUxFX1BFUk1JU1NJT05TIE9XTkVSX1JFQUQgT1dORVJfV1JJVEUg
T1dORVJfRVhFQ1VURSBHUk9VUF9SRUFEIEdST1VQX0VYRUNVVEUKKyAgICApCitlbmRpZiAoKQor
CisjIFlvdSBjYW4gYnVpbGQgSmF2YVNjcmlwdENvcmUgYXMgYSBzdGF0aWMgbGlicmFyeSBpZiB5
b3Ugc3BlY2lmeSBpdCBhcyBTVEFUSUMKKyMgc2V0KEphdmFTY3JpcHRDb3JlX0xJQlJBUllfVFlQ
RSBTVEFUSUMpCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cK
aW5kZXggOTMxZTE3N2VmZTM0MGY3NDliZDY3NDQyOWEwM2JiYzRlY2YyYzdjOC4uYTY5MWQxMTJm
M2QyMjUyN2U4YzM3Yzc4Y2VkODFkMTMyM2RhYmZkZiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdl
TG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDE2LTAyLTIxICBL
b25zdGFudGluIFRva2FyZXYgIDxhbm51bGVuQHlhbmRleC5ydT4KKworICAgICAgICBBZGRlZCBu
ZXcgcG9ydCBKU0NPbmx5LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTU0NTEyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgVGhpcyBwb3J0IGFsbG93cyB0byBidWlsZCBKYXZhU2NyaXB0Q29yZSBlbmdpbmUg
d2l0aCBtaW5pbWFsCisgICAgICAgIGRlcGVuZGVuY2llcy4KKworICAgICAgICAqIFNjcmlwdHMv
YnVpbGQtanNjOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0ZGlycy5wbToKKyAgICAgICAgKGFy
Z3VtZW50c0ZvckNvbmZpZ3VyYXRpb24pOgorICAgICAgICAoZXhlY3V0YWJsZVByb2R1Y3REaXIp
OgorICAgICAgICAoZGV0ZXJtaW5lUG9ydE5hbWUpOgorICAgICAgICAoaXNKU0NPbmx5KToKKyAg
ICAgICAgKHdyYXBwZXJQcmVmaXhJZk5lZWRlZCk6CisgICAgICAgIChnZW5lcmF0ZUJ1aWxkU3lz
dGVtRnJvbUNNYWtlUHJvamVjdCk6CisgICAgICAgIChidWlsZENNYWtlR2VuZXJhdGVkUHJvamVj
dCk6CisKIDIwMTYtMDItMjAgIE9saXZpZXIgQmxpbiAgPG9saXZpZXIuYmxpbkBzb2Z0YXRob21l
LmNvbT4KIAogICAgICAgICBbY21ha2VdIFVzZSBJQ1UgaW5jbHVkZSBkaXJzIGluIFdlYktpdDIg
YW5kIFdlYktpdFRlc3RSdW5uZXIKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvYnVpbGQtanNj
IGIvVG9vbHMvU2NyaXB0cy9idWlsZC1qc2MKaW5kZXggMGI1NTAwYWJmMjk2YzAzMDQwN2I0M2My
ZTlmNGQ2NDBmOWMzZjBjMy4uOTNlYjZmYjUyNDY4YTM2MGVkMDQ2NjE2Mjg1YWYzM2EzMDA4ZjA1
MiAxMDA3NTUKLS0tIGEvVG9vbHMvU2NyaXB0cy9idWlsZC1qc2MKKysrIGIvVG9vbHMvU2NyaXB0
cy9idWlsZC1qc2MKQEAgLTQyLDcgKzQyLDcgQEAgcHJvaGliaXRVbmtub3duUG9ydCgpOwogbXkg
JHNob3VsZFJ1blN0YXRpY0FuYWx5emVyID0gMDsKIG15ICRjb3ZlcmFnZVN1cHBvcnQgPSAwOwog
bXkgJHNob3dIZWxwID0gMDsKLW15ICRmdGxKSVQgPSBpbnQoaXNBcHBsZU1hY1dlYktpdCgpICYm
ICF3aWxsVXNlSU9TU2ltdWxhdG9yU0RLKCkgfHwgaXNYODZfNjQoKSAmJiAoaXNHdGsoKSB8fCBp
c0VmbCgpKSk7CitteSAkZnRsSklUID0gaW50KGlzQXBwbGVNYWNXZWJLaXQoKSAmJiAhd2lsbFVz
ZUlPU1NpbXVsYXRvclNESygpIHx8IGlzWDg2XzY0KCkgJiYgKGlzR3RrKCkgfHwgaXNFZmwoKSB8
fCBpc0pTQ09ubHkoKSkpOwogbXkgJGZvcmNlQ0xvb3AgPSAwOwogbXkgJGNsaSA9IDA7CiBteSAk
bWFrZUFyZ3MgPSAiIjsKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0ZGlycy5wbSBi
L1Rvb2xzL1NjcmlwdHMvd2Via2l0ZGlycy5wbQppbmRleCAxNzk3NjQ0MDc4NjZjYmQ4ZDljYmQ2
MWY1MGU3M2U1NzAzZDZkM2NhLi4xZmQ5ODk5MjE4Njc1OWNmNWJkZjc1MjY0Mjk4NjQ1MWQ2MzFl
Nzk0IDEwMDc1NQotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdGRpcnMucG0KKysrIGIvVG9vbHMv
U2NyaXB0cy93ZWJraXRkaXJzLnBtCkBAIC0xMDEsNiArMTAxLDcgQEAgdXNlIGNvbnN0YW50IHsK
ICAgICBFZmwgICAgICA9PiAiRWZsIiwKICAgICBpT1MgICAgICA9PiAiaU9TIiwKICAgICBNYWMg
ICAgICA9PiAiTWFjIiwKKyAgICBKU0NPbmx5ICA9PiAiSlNDT25seSIsCiAgICAgV2luQ2Fpcm8g
PT4gIldpbkNhaXJvIiwKICAgICBVbmtub3duICA9PiAiVW5rbm93biIKIH07CkBAIC00NDgsNiAr
NDQ5LDcgQEAgc3ViIGFyZ3VtZW50c0ZvckNvbmZpZ3VyYXRpb24oKQogICAgIHB1c2goQGFyZ3Ms
ICctLTY0LWJpdCcpIGlmIChpc1dpbjY0KCkpOwogICAgIHB1c2goQGFyZ3MsICctLWd0aycpIGlm
IGlzR3RrKCk7CiAgICAgcHVzaChAYXJncywgJy0tZWZsJykgaWYgaXNFZmwoKTsKKyAgICBwdXNo
KEBhcmdzLCAnLS1qc2Mtb25seScpIGlmIGlzSlNDT25seSgpOwogICAgIHB1c2goQGFyZ3MsICct
LXdpbmNhaXJvJykgaWYgaXNXaW5DYWlybygpOwogICAgIHB1c2goQGFyZ3MsICctLWluc3BlY3Rv
ci1mcm9udGVuZCcpIGlmIGlzSW5zcGVjdG9yRnJvbnRlbmQoKTsKICAgICByZXR1cm4gQGFyZ3M7
CkBAIC02NDQsNyArNjQ2LDcgQEAgc3ViIGV4ZWN1dGFibGVQcm9kdWN0RGlyCiAgICAgbXkgJHBy
b2R1Y3REaXJlY3RvcnkgPSBwcm9kdWN0RGlyKCk7CiAKICAgICBteSAkYmluYXJ5RGlyZWN0b3J5
OwotICAgIGlmIChpc0VmbCgpIHx8IGlzR3RrKCkpIHsKKyAgICBpZiAoaXNFZmwoKSB8fCBpc0d0
aygpIHx8IGlzSlNDT25seSgpKSB7CiAgICAgICAgICRiaW5hcnlEaXJlY3RvcnkgPSAiYmluIjsK
ICAgICB9IGVsc2lmIChpc0FueVdpbmRvd3MoKSkgewogICAgICAgICAkYmluYXJ5RGlyZWN0b3J5
ID0gaXNXaW42NCgpID8gImJpbjY0IiA6ICJiaW4zMiI7CkBAIC0xMDQ1LDYgKzEwNDcsNyBAQCBz
dWIgZGV0ZXJtaW5lUG9ydE5hbWUoKQogICAgIG15ICVhcmdUb1BvcnROYW1lID0gKAogICAgICAg
ICBlZmwgPT4gRWZsLAogICAgICAgICBndGsgPT4gR1RLLAorICAgICAgICAnanNjLW9ubHknID0+
IEpTQ09ubHksCiAgICAgICAgIHdpbmNhaXJvID0+IFdpbkNhaXJvCiAgICAgKTsKIApAQCAtMTA3
NSw2ICsxMDc4LDcgQEAgc3ViIGRldGVybWluZVBvcnROYW1lKCkKICAgICAgICAgICAgIG15ICRw
b3J0c0Nob2ljZSA9IGpvaW4gIlxuXHQiLCBxdygKICAgICAgICAgICAgICAgICAtLWVmbAogICAg
ICAgICAgICAgICAgIC0tZ3RrCisgICAgICAgICAgICAgICAgLS1qc2Mtb25seQogICAgICAgICAg
ICAgKTsKICAgICAgICAgICAgIGRpZSAiUGxlYXNlIHNwZWNpZnkgd2hpY2ggV2ViS2l0IHBvcnQg
dG8gYnVpbGQgdXNpbmcgb25lIG9mIHRoZSBmb2xsb3dpbmcgb3B0aW9uczoiCiAgICAgICAgICAg
ICAgICAgLiAiXG5cdCRwb3J0c0Nob2ljZVxuIjsKQEAgLTExMDIsNiArMTEwNiwxMSBAQCBzdWIg
aXNHdGsoKQogICAgIHJldHVybiBwb3J0TmFtZSgpIGVxIEdUSzsKIH0KIAorc3ViIGlzSlNDT25s
eSgpCit7CisgICAgcmV0dXJuIHBvcnROYW1lKCkgZXEgSlNDT25seTsKK30KKwogIyBEZXRlcm1p
bmUgaWYgdGhpcyBpcyBkZWJpYW4sIHVidW50dSwgbGluc3BpcmUsIG9yIHNvbWV0aGluZyBzaW1p
bGFyLgogc3ViIGlzRGViaWFuQmFzZWQoKQogewpAQCAtMTgzMyw3ICsxODQyLDcgQEAgc3ViIGlz
Q2FjaGVkQXJndW1lbnRmaWxlT3V0T2ZEYXRlKCRAKQogCiBzdWIgd3JhcHBlclByZWZpeElmTmVl
ZGVkKCkKIHsKLSAgICBpZiAoaXNBbnlXaW5kb3dzKCkpIHsKKyAgICBpZiAoaXNBbnlXaW5kb3dz
KCkgfHwgaXNKU0NPbmx5KCkpIHsKICAgICAgICAgcmV0dXJuICgpOwogICAgIH0KICAgICBpZiAo
aXNBcHBsZU1hY1dlYktpdCgpKSB7CkBAIC0xOTg2LDggKzE5OTUsOCBAQCBzdWIgZ2VuZXJhdGVC
dWlsZFN5c3RlbUZyb21DTWFrZVByb2plY3QKICAgICAgICAgcHVzaCBAYXJncywgJy1HICJWaXN1
YWwgU3R1ZGlvIDE0IDIwMTUgV2luNjQiJzsKICAgICB9CiAKLSAgICAjIEdUSysgaGFzIGEgcHJv
ZHVjdGlvbiBtb2RlLCBidXQgYnVpbGQtd2Via2l0IHNob3VsZCBhbHdheXMgdXNlIGRldmVsb3Bl
ciBtb2RlLgotICAgIHB1c2ggQGFyZ3MsICItRERFVkVMT1BFUl9NT0RFPU9OIiBpZiBpc0VmbCgp
IHx8IGlzR3RrKCk7CisgICAgIyBTb21lIHBvcnRzIGhhdmUgcHJvZHVjdGlvbiBtb2RlLCBidXQg
YnVpbGQtd2Via2l0IHNob3VsZCBhbHdheXMgdXNlIGRldmVsb3BlciBtb2RlLgorICAgIHB1c2gg
QGFyZ3MsICItRERFVkVMT1BFUl9NT0RFPU9OIiBpZiBpc0VmbCgpIHx8IGlzR3RrKCkgfHwgaXNK
U0NPbmx5KCk7CiAKICAgICAjIERvbid0IHdhcm4gdmFyaWFibGVzIHdoaWNoIGFyZW4ndCB1c2Vk
IGJ5IGNtYWtlIHBvcnRzLgogICAgIHB1c2ggQGFyZ3MsICItLW5vLXdhcm4tdW51c2VkLWNsaSI7
CkBAIC0yMDI1LDggKzIwMzQsOCBAQCBzdWIgYnVpbGRDTWFrZUdlbmVyYXRlZFByb2plY3QoJCkK
ICAgICBteSBAYXJncyA9ICgiLS1idWlsZCIsICRidWlsZFBhdGgsICItLWNvbmZpZyIsICRjb25m
aWcpOwogICAgIHB1c2ggQGFyZ3MsICgiLS0iLCAkbWFrZUFyZ3MpIGlmICRtYWtlQXJnczsKIAot
ICAgICMgR1RLIGNhbiB1c2UgYSBidWlsZCBzY3JpcHQgdG8gcHJlc2VydmUgY29sb3JzIGFuZCBw
cmV0dHktcHJpbnRpbmcuCi0gICAgaWYgKGlzR3RrKCkgJiYgLWUgIiRidWlsZFBhdGgvYnVpbGQu
c2giKSB7CisgICAgIyBHVEsgYW5kIEpTQ09ubHkgY2FuIHVzZSBhIGJ1aWxkIHNjcmlwdCB0byBw
cmVzZXJ2ZSBjb2xvcnMgYW5kIHByZXR0eS1wcmludGluZy4KKyAgICBpZiAoKGlzR3RrKCkgfHwg
aXNKU0NPbmx5KCkpICYmIC1lICIkYnVpbGRQYXRoL2J1aWxkLnNoIikgewogICAgICAgICBjaGRp
ciAiJGJ1aWxkUGF0aCIgb3IgZGllOwogICAgICAgICAkY29tbWFuZCA9ICIkYnVpbGRQYXRoL2J1
aWxkLnNoIjsKICAgICAgICAgQGFyZ3MgPSAoJG1ha2VBcmdzKTsKZGlmZiAtLWdpdCBhL0NNYWtl
TGlzdHMudHh0IGIvQ01ha2VMaXN0cy50eHQKaW5kZXggMGUwZWEyMzA5OWIyNzI1ZGJkN2E5OGVj
YTM2NTlkZGYyMmM4N2FkZS4uNDFiOTUzZDViYzAyYzg2YTFkNWU3Y2U5M2EyMjA5ZWJiNjdiYjI2
YyAxMDA2NDQKLS0tIGEvQ01ha2VMaXN0cy50eHQKKysrIGIvQ01ha2VMaXN0cy50eHQKQEAgLTE5
LDcgKzE5LDcgQEAgZW5kaWYgKCkKICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICMgRGV0ZXJtaW5l
IHdoaWNoIHBvcnQgd2lsbCBiZSBidWlsdAogIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotc2V0KEFM
TF9QT1JUUyBFZmwgR1RLIEFwcGxlV2luIFdpbkNhaXJvIE1hYykKK3NldChBTExfUE9SVFMgRWZs
IEdUSyBBcHBsZVdpbiBXaW5DYWlybyBNYWMgSlNDT25seSkKIHNldChQT1JUICJOT1BPUlQiIENB
Q0hFIFNUUklORyAiY2hvb3NlIHdoaWNoIFdlYktpdCBwb3J0IHRvIGJ1aWxkIChvbmUgb2YgJHtB
TExfUE9SVFN9KSIpCiAKIGxpc3QoRklORCBBTExfUE9SVFMgJHtQT1JUfSBSRVQpCmRpZmYgLS1n
aXQgYS9DaGFuZ2VMb2cgYi9DaGFuZ2VMb2cKaW5kZXggMjQ4YThmOTIzYjE2NjczNWFjMDlkZTNk
MDc3NmZkZDQ0MmEzZWIwMi4uMzlhNjliZGZlYjZmYzBhNTkwODA0YzBiNmVmZWFkYTBjMTMyZmQ5
NCAxMDA2NDQKLS0tIGEvQ2hhbmdlTG9nCisrKyBiL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBA
CisyMDE2LTAyLTIxICBLb25zdGFudGluIFRva2FyZXYgIDxhbm51bGVuQHlhbmRleC5ydT4KKwor
ICAgICAgICBBZGRlZCBuZXcgcG9ydCBKU0NPbmx5LgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU0NTEyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwb3J0IGFsbG93cyB0byBidWlsZCBKYXZhU2Ny
aXB0Q29yZSBlbmdpbmUgd2l0aCBtaW5pbWFsCisgICAgICAgIGRlcGVuZGVuY2llcy4KKworICAg
ICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIFNvdXJjZS9jbWFrZS9PcHRpb25zSlND
T25seS5jbWFrZTogQWRkZWQuCisKIDIwMTYtMDItMTggIFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9y
bWFuZEBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHU3RyZWFtZXJdIEJ1bXAgaW50ZXJuYWwgamhi
dWlsZCB2ZXJzaW9ucyB0byAxLjYuMwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>271881</attachid>
            <date>2016-02-21 09:21:16 -0800</date>
            <delta_ts>2016-02-28 09:58:11 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-154512-20160221202056.patch</filename>
            <type>text/plain</type>
            <size>12308</size>
            <attacher name="Konstantin Tokarev">annulen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk2ODY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
NjYzMGM0NGIwN2NiYWJlZDZlODZkMjViOWMwNjExNjlhODNkZWJjLi5iYmJkZWIwNzgwMDEyNGIx
ZDQ1MTY2ZjRlODhiNzIwNWY1MzY3Y2I4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNSBAQAorMjAxNi0wMi0yMSAgS29uc3RhbnRpbiBUb2thcmV2ICA8YW5udWxlbkB5YW5k
ZXgucnU+CisKKyAgICAgICAgQWRkZWQgbmV3IHBvcnQgSlNDT25seS4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NDUxMgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcG9ydCBhbGxvd3MgdG8gYnVp
bGQgSmF2YVNjcmlwdENvcmUgZW5naW5lIHdpdGggbWluaW1hbAorICAgICAgICBkZXBlbmRlbmNp
ZXMuCisKKyAgICAgICAgKiBQbGF0Zm9ybUpTQ09ubHkuY21ha2U6IEFkZGVkLgorCiAyMDE2LTAy
LTE5ICBTdWtvbHNhayBTYWtzaHV3b25nICA8c3Vrb2xzYWtAZ21haWwuY29tPgogCiAgICAgICAg
IFtJTlRMXSBJbXBsZW1lbnQgTnVtYmVyIEZvcm1hdCBGdW5jdGlvbnMKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggZTAwNTMyYTYz
YWE3NDkyZDhhMzEwYzE4OGE3NDE0ZjI0MjJjMTRiMy4uNzEwNzY1OTdiZDg2ZGY3MTY2OGRiMTBi
ZWMwMGMwMTU5MDM2ZWZkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAxNi0wMi0yMSAgS29uc3Rh
bnRpbiBUb2thcmV2ICA8YW5udWxlbkB5YW5kZXgucnU+CisKKyAgICAgICAgQWRkZWQgbmV3IHBv
cnQgSlNDT25seS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE1NDUxMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFRoaXMgcG9ydCBhbGxvd3MgdG8gYnVpbGQgSmF2YVNjcmlwdENvcmUgZW5naW5lIHdpdGgg
bWluaW1hbAorICAgICAgICBkZXBlbmRlbmNpZXMuCisKKyAgICAgICAgKiB3dGYvUGxhdGZvcm1K
U0NPbmx5LmNtYWtlOiBBZGRlZC4KKyAgICAgICAgKiB3dGYvbm9uZS9NYWluVGhyZWFkTm9uZS5j
cHA6IEFkZGVkLgorICAgICAgICAqIHd0Zi9ub25lL1J1bkxvb3BOb25lLmNwcDogQWRkZWQuCisg
ICAgICAgICogd3RmL25vbmUvV29ya1F1ZXVlTm9uZS5jcHA6IEFkZGVkLgorCiAyMDE2LTAyLTE4
ICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgogCiAgICAgICAgIEV4dGVuZCBI
YXNoQ291bnRlZFNldCB3aXRoIGEgbWV0aG9kIHRvIGVmZmljaWVudGx5IHNldCB0aGUgY291bnQg
b2YgYW4gZW50cnkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9QbGF0Zm9ybUpT
Q09ubHkuY21ha2UgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvUGxhdGZvcm1KU0NPbmx5LmNtYWtl
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjgzODBiNjU5YmM3MjU1OWNiN2IyYzBkZDRlYjM5OWE5MWJjMTI2YmEKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvUGxhdGZvcm1KU0NPbmx5LmNt
YWtlCkBAIC0wLDAgKzEsNiBAQAorYWRkX2RlZmluaXRpb25zKC1EU1RBVElDQUxMWV9MSU5LRURf
V0lUSF9XVEYpCisKK2xpc3QoQVBQRU5EIEphdmFTY3JpcHRDb3JlX0lOQ0xVREVfRElSRUNUT1JJ
RVMKKyAgICAiJHtXVEZfRElSfSIKKykKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUGxh
dGZvcm1KU0NPbmx5LmNtYWtlIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm1KU0NPbmx5LmNtYWtl
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmQyNWUyMTgxNmVjM2ViYTRjNjg1YjMzOGY1NDY4MDRjNTgyY2U0YmQKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUpTQ09ubHkuY21ha2UKQEAg
LTAsMCArMSw5IEBACitsaXN0KEFQUEVORCBXVEZfU09VUkNFUworICAgIG5vbmUvTWFpblRocmVh
ZE5vbmUuY3BwCisgICAgbm9uZS9SdW5Mb29wTm9uZS5jcHAKKyAgICBub25lL1dvcmtRdWV1ZU5v
bmUuY3BwCispCisKK2xpc3QoQVBQRU5EIFdURl9MSUJSQVJJRVMKKyAgICAke0NNQUtFX1RIUkVB
RF9MSUJTX0lOSVR9CispCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9ub25lL01haW5UaHJl
YWROb25lLmNwcCBiL1NvdXJjZS9XVEYvd3RmL25vbmUvTWFpblRocmVhZE5vbmUuY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjU2MTk5NDZlOTAwNmMwZWMyNjZkMjI5ZmZhNWFjODE5MWYzMzQ4ZWUKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9ub25lL01haW5UaHJlYWROb25lLmNwcApAQCAtMCww
ICsxLDE0IEBACisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTWFpblRocmVhZC5oIgor
CituYW1lc3BhY2UgV1RGIHsKKwordm9pZCBpbml0aWFsaXplTWFpblRocmVhZFBsYXRmb3JtKCkK
K3sKK30KKwordm9pZCBzY2hlZHVsZURpc3BhdGNoRnVuY3Rpb25zT25NYWluVGhyZWFkKCkKK3sK
K30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvbm9uZS9SdW5Mb29wTm9uZS5jcHAg
Yi9Tb3VyY2UvV1RGL3d0Zi9ub25lL1J1bkxvb3BOb25lLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41MTI3Njdi
MmFlOWNiMTA2YjY1ZDZiNjY3OGY3NjRkYThkNDg2MmVmCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dURi93dGYvbm9uZS9SdW5Mb29wTm9uZS5jcHAKQEAgLTAsMCArMSw1MCBAQAorI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlJ1bkxvb3AuaCIKKworbmFtZXNwYWNlIFdURiB7CisK
K1J1bkxvb3A6OlJ1bkxvb3AoKQoreworfQorCitSdW5Mb29wOjp+UnVuTG9vcCgpCit7Cit9CisK
K3ZvaWQgUnVuTG9vcDo6cnVuKCkKK3sKK30KKwordm9pZCBSdW5Mb29wOjpzdG9wKCkKK3sKK30K
Kwordm9pZCBSdW5Mb29wOjp3YWtlVXAoKQoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
fQorCitSdW5Mb29wOjpUaW1lckJhc2U6OlRpbWVyQmFzZShSdW5Mb29wJiBydW5Mb29wKQorICAg
IDogbV9ydW5Mb29wKHJ1bkxvb3ApCit7Cit9CisKK1J1bkxvb3A6OlRpbWVyQmFzZTo6flRpbWVy
QmFzZSgpCit7CisgICAgc3RvcCgpOworfQorCit2b2lkIFJ1bkxvb3A6OlRpbWVyQmFzZTo6c3Rh
cnQoZG91YmxlLCBib29sKQoreworfQorCit2b2lkIFJ1bkxvb3A6OlRpbWVyQmFzZTo6c3RvcCgp
Cit7Cit9CisKK2Jvb2wgUnVuTG9vcDo6VGltZXJCYXNlOjppc0FjdGl2ZSgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIGZhbHNlOworfQorCit9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvd3RmL25vbmUvV29ya1F1ZXVlTm9uZS5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9ub25l
L1dvcmtRdWV1ZU5vbmUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJlMjYxYzU2ZjNiOGE4ZGVhNTIzMGRmZWVh
YmI1NTBkMTE3ZmNmYmMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9ub25lL1dv
cmtRdWV1ZU5vbmUuY3BwCkBAIC0wLDAgKzEsMjAgQEAKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJXb3JrUXVldWUuaCIKKwordm9pZCBXb3JrUXVldWU6OnBsYXRmb3JtSW5pdGlhbGl6
ZShjb25zdCBjaGFyKiwgVHlwZSwgUU9TKQoreworfQorCit2b2lkIFdvcmtRdWV1ZTo6cGxhdGZv
cm1JbnZhbGlkYXRlKCkKK3sKK30KKwordm9pZCBXb3JrUXVldWU6OmRpc3BhdGNoKHN0ZDo6ZnVu
Y3Rpb248dm9pZCgpPikKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKwordm9pZCBX
b3JrUXVldWU6OmRpc3BhdGNoQWZ0ZXIoc3RkOjpjaHJvbm86Om5hbm9zZWNvbmRzLCBzdGQ6OmZ1
bmN0aW9uPHZvaWQoKT4pCit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvY21ha2UvT3B0aW9uc0pTQ09ubHkuY21ha2UgYi9Tb3VyY2UvY21ha2UvT3B0
aW9uc0pTQ09ubHkuY21ha2UKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmI0YjliNTNmMGU3ODYzZDI4ZDFhNjZhODEy
NGExMDhjMWViN2MwYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9jbWFrZS9PcHRpb25zSlND
T25seS5jbWFrZQpAQCAtMCwwICsxLDQ2IEBACitmaW5kX3BhY2thZ2UoSUNVIFJFUVVJUkVEKQor
ZmluZF9wYWNrYWdlKFRocmVhZHMgUkVRVUlSRUQpCisKK3NldChQUk9KRUNUX1ZFUlNJT05fTUFK
T1IgMSkKK3NldChQUk9KRUNUX1ZFUlNJT05fTUlOT1IgMCkKK3NldChQUk9KRUNUX1ZFUlNJT05f
TUlDUk8gMCkKK3NldChQUk9KRUNUX1ZFUlNJT04gJHtQUk9KRUNUX1ZFUlNJT05fTUFKT1J9LiR7
UFJPSkVDVF9WRVJTSU9OX01JTk9SfS4ke1BST0pFQ1RfVkVSU0lPTl9NSUNST30pCisKK1dFQktJ
VF9PUFRJT05fQkVHSU4oKQorV0VCS0lUX09QVElPTl9ERUZJTkUoRU5BQkxFX1NUQVRJQ19KU0Mg
IldoZXRoZXIgdG8gYnVpbGQgSmF2YVNjcmlwdENvcmUgYXMgYSBzdGF0aWMgbGlicmFyeS4iIFBV
QkxJQyBPRkYpCitXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfRlRMX0pJ
VCBQVUJMSUMgT04pCitXRUJLSVRfT1BUSU9OX0VORCgpCisKK3NldChFTkFCTEVfV0VCS0lUIE9G
RikKK3NldChFTkFCTEVfV0VCS0lUMiBPRkYpCitzZXQoRU5BQkxFX0FQSV9URVNUUyBPRkYpCisK
K2lmIChXVEZfQ1BVX1g4NiBPUiBXVEZfQ1BVX1g4Nl82NCkKKyAgICBzZXQoV1RGX1VTRV9VRElT
ODYgMSkKK2VuZGlmICgpCisKK2lmIChFTkFCTEVfU1RBVElDX0pTQykKKyAgICBzZXQoSmF2YVNj
cmlwdENvcmVfTElCUkFSWV9UWVBFIFNUQVRJQykKK2VuZGlmICgpCisKKyMgRnJvbSBPcHRpb25z
R1RLLmNtYWtlCitpZiAoQ01BS0VfTUFKT1JfVkVSU0lPTiBMRVNTIDMpCisgICAgIyBCZWZvcmUg
Q01ha2UgMyBpdCB3YXMgbmVjZXNzYXJ5IHRvIHVzZSBhIGJ1aWxkIHNjcmlwdCBpbnN0ZWFkIG9m
IHVzaW5nIGNtYWtlIC0tYnVpbGQgZGlyZWN0bHkKKyAgICAjIHRvIHByZXNlcnZlIGNvbG9ycyBh
bmQgcHJldHR5LXByaW50aW5nLgorCisgICAgYnVpbGRfY29tbWFuZChDT01NQU5EX0xJTkVfVE9f
QlVJTEQpCisgICAgIyBidWlsZF9jb21tYW5kIHVuY29uZGl0aW9uYWxseSBhZGRzIC1pIChpZ25v
cmUgZXJyb3JzKSBmb3IgbWFrZSwgYW5kIHRoZXJlJ3MKKyAgICAjIG5vIHJlYXNvbmFibGUgd2F5
IHRvIHR1cm4gdGhhdCBvZmYsIHNvIHdlIGp1c3QgcmVwbGFjZSBpdCB3aXRoIC1rLCB3aGljaCBo
YXMKKyAgICAjIHRoZSBzYW1lIGVmZmVjdCwgZXhjZXB0IHRoYXQgdGhlIHJldHVybiBjb2RlIHdp
bGwgaW5kaWNhdGUgdGhhdCBhbiBlcnJvciBvY2N1cnJlZC4KKyAgICAjIFNlZTogaHR0cDovL3d3
dy5jbWFrZS5vcmcvY21ha2UvaGVscC92My4wL2NvbW1hbmQvYnVpbGRfY29tbWFuZC5odG1sCisg
ICAgc3RyaW5nKFJFUExBQ0UgIiAtaSIgIiAtayIgQ09NTUFORF9MSU5FX1RPX0JVSUxEICR7Q09N
TUFORF9MSU5FX1RPX0JVSUxEfSkKKyAgICBmaWxlKFdSSVRFCisgICAgICAgICR7Q01BS0VfQklO
QVJZX0RJUn0ke0NNQUtFX0ZJTEVTX0RJUkVDVE9SWX0vYnVpbGQuc2gKKyAgICAgICAgIiMhL2Jp
bi9zaFxuIgorICAgICAgICAiJHtDT01NQU5EX0xJTkVfVE9fQlVJTER9ICRAIgorICAgICkKKyAg
ICBmaWxlKENPUFkgJHtDTUFLRV9CSU5BUllfRElSfSR7Q01BS0VfRklMRVNfRElSRUNUT1JZfS9i
dWlsZC5zaAorICAgICAgICBERVNUSU5BVElPTiAke0NNQUtFX0JJTkFSWV9ESVJ9CisgICAgICAg
IEZJTEVfUEVSTUlTU0lPTlMgT1dORVJfUkVBRCBPV05FUl9XUklURSBPV05FUl9FWEVDVVRFIEdS
T1VQX1JFQUQgR1JPVVBfRVhFQ1VURQorICAgICkKK2VuZGlmICgpCmRpZmYgLS1naXQgYS9Ub29s
cy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggOTMxZTE3N2VmZTM0MGY3NDliZDY3
NDQyOWEwM2JiYzRlY2YyYzdjOC4uYTY5MWQxMTJmM2QyMjUyN2U4YzM3Yzc4Y2VkODFkMTMyM2Rh
YmZkZiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDIzIEBACisyMDE2LTAyLTIxICBLb25zdGFudGluIFRva2FyZXYgIDxhbm51bGVu
QHlhbmRleC5ydT4KKworICAgICAgICBBZGRlZCBuZXcgcG9ydCBKU0NPbmx5LgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU0NTEyCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwb3J0IGFsbG93cyB0
byBidWlsZCBKYXZhU2NyaXB0Q29yZSBlbmdpbmUgd2l0aCBtaW5pbWFsCisgICAgICAgIGRlcGVu
ZGVuY2llcy4KKworICAgICAgICAqIFNjcmlwdHMvYnVpbGQtanNjOgorICAgICAgICAqIFNjcmlw
dHMvd2Via2l0ZGlycy5wbToKKyAgICAgICAgKGFyZ3VtZW50c0ZvckNvbmZpZ3VyYXRpb24pOgor
ICAgICAgICAoZXhlY3V0YWJsZVByb2R1Y3REaXIpOgorICAgICAgICAoZGV0ZXJtaW5lUG9ydE5h
bWUpOgorICAgICAgICAoaXNKU0NPbmx5KToKKyAgICAgICAgKHdyYXBwZXJQcmVmaXhJZk5lZWRl
ZCk6CisgICAgICAgIChnZW5lcmF0ZUJ1aWxkU3lzdGVtRnJvbUNNYWtlUHJvamVjdCk6CisgICAg
ICAgIChidWlsZENNYWtlR2VuZXJhdGVkUHJvamVjdCk6CisKIDIwMTYtMDItMjAgIE9saXZpZXIg
QmxpbiAgPG9saXZpZXIuYmxpbkBzb2Z0YXRob21lLmNvbT4KIAogICAgICAgICBbY21ha2VdIFVz
ZSBJQ1UgaW5jbHVkZSBkaXJzIGluIFdlYktpdDIgYW5kIFdlYktpdFRlc3RSdW5uZXIKZGlmZiAt
LWdpdCBhL1Rvb2xzL1NjcmlwdHMvYnVpbGQtanNjIGIvVG9vbHMvU2NyaXB0cy9idWlsZC1qc2MK
aW5kZXggMGI1NTAwYWJmMjk2YzAzMDQwN2I0M2MyZTlmNGQ2NDBmOWMzZjBjMy4uOTNlYjZmYjUy
NDY4YTM2MGVkMDQ2NjE2Mjg1YWYzM2EzMDA4ZjA1MiAxMDA3NTUKLS0tIGEvVG9vbHMvU2NyaXB0
cy9idWlsZC1qc2MKKysrIGIvVG9vbHMvU2NyaXB0cy9idWlsZC1qc2MKQEAgLTQyLDcgKzQyLDcg
QEAgcHJvaGliaXRVbmtub3duUG9ydCgpOwogbXkgJHNob3VsZFJ1blN0YXRpY0FuYWx5emVyID0g
MDsKIG15ICRjb3ZlcmFnZVN1cHBvcnQgPSAwOwogbXkgJHNob3dIZWxwID0gMDsKLW15ICRmdGxK
SVQgPSBpbnQoaXNBcHBsZU1hY1dlYktpdCgpICYmICF3aWxsVXNlSU9TU2ltdWxhdG9yU0RLKCkg
fHwgaXNYODZfNjQoKSAmJiAoaXNHdGsoKSB8fCBpc0VmbCgpKSk7CitteSAkZnRsSklUID0gaW50
KGlzQXBwbGVNYWNXZWJLaXQoKSAmJiAhd2lsbFVzZUlPU1NpbXVsYXRvclNESygpIHx8IGlzWDg2
XzY0KCkgJiYgKGlzR3RrKCkgfHwgaXNFZmwoKSB8fCBpc0pTQ09ubHkoKSkpOwogbXkgJGZvcmNl
Q0xvb3AgPSAwOwogbXkgJGNsaSA9IDA7CiBteSAkbWFrZUFyZ3MgPSAiIjsKZGlmZiAtLWdpdCBh
L1Rvb2xzL1NjcmlwdHMvd2Via2l0ZGlycy5wbSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0ZGlycy5w
bQppbmRleCAxNzk3NjQ0MDc4NjZjYmQ4ZDljYmQ2MWY1MGU3M2U1NzAzZDZkM2NhLi4xZmQ5ODk5
MjE4Njc1OWNmNWJkZjc1MjY0Mjk4NjQ1MWQ2MzFlNzk0IDEwMDc1NQotLS0gYS9Ub29scy9TY3Jp
cHRzL3dlYmtpdGRpcnMucG0KKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRkaXJzLnBtCkBAIC0x
MDEsNiArMTAxLDcgQEAgdXNlIGNvbnN0YW50IHsKICAgICBFZmwgICAgICA9PiAiRWZsIiwKICAg
ICBpT1MgICAgICA9PiAiaU9TIiwKICAgICBNYWMgICAgICA9PiAiTWFjIiwKKyAgICBKU0NPbmx5
ICA9PiAiSlNDT25seSIsCiAgICAgV2luQ2Fpcm8gPT4gIldpbkNhaXJvIiwKICAgICBVbmtub3du
ICA9PiAiVW5rbm93biIKIH07CkBAIC00NDgsNiArNDQ5LDcgQEAgc3ViIGFyZ3VtZW50c0ZvckNv
bmZpZ3VyYXRpb24oKQogICAgIHB1c2goQGFyZ3MsICctLTY0LWJpdCcpIGlmIChpc1dpbjY0KCkp
OwogICAgIHB1c2goQGFyZ3MsICctLWd0aycpIGlmIGlzR3RrKCk7CiAgICAgcHVzaChAYXJncywg
Jy0tZWZsJykgaWYgaXNFZmwoKTsKKyAgICBwdXNoKEBhcmdzLCAnLS1qc2Mtb25seScpIGlmIGlz
SlNDT25seSgpOwogICAgIHB1c2goQGFyZ3MsICctLXdpbmNhaXJvJykgaWYgaXNXaW5DYWlybygp
OwogICAgIHB1c2goQGFyZ3MsICctLWluc3BlY3Rvci1mcm9udGVuZCcpIGlmIGlzSW5zcGVjdG9y
RnJvbnRlbmQoKTsKICAgICByZXR1cm4gQGFyZ3M7CkBAIC02NDQsNyArNjQ2LDcgQEAgc3ViIGV4
ZWN1dGFibGVQcm9kdWN0RGlyCiAgICAgbXkgJHByb2R1Y3REaXJlY3RvcnkgPSBwcm9kdWN0RGly
KCk7CiAKICAgICBteSAkYmluYXJ5RGlyZWN0b3J5OwotICAgIGlmIChpc0VmbCgpIHx8IGlzR3Rr
KCkpIHsKKyAgICBpZiAoaXNFZmwoKSB8fCBpc0d0aygpIHx8IGlzSlNDT25seSgpKSB7CiAgICAg
ICAgICRiaW5hcnlEaXJlY3RvcnkgPSAiYmluIjsKICAgICB9IGVsc2lmIChpc0FueVdpbmRvd3Mo
KSkgewogICAgICAgICAkYmluYXJ5RGlyZWN0b3J5ID0gaXNXaW42NCgpID8gImJpbjY0IiA6ICJi
aW4zMiI7CkBAIC0xMDQ1LDYgKzEwNDcsNyBAQCBzdWIgZGV0ZXJtaW5lUG9ydE5hbWUoKQogICAg
IG15ICVhcmdUb1BvcnROYW1lID0gKAogICAgICAgICBlZmwgPT4gRWZsLAogICAgICAgICBndGsg
PT4gR1RLLAorICAgICAgICAnanNjLW9ubHknID0+IEpTQ09ubHksCiAgICAgICAgIHdpbmNhaXJv
ID0+IFdpbkNhaXJvCiAgICAgKTsKIApAQCAtMTA3NSw2ICsxMDc4LDcgQEAgc3ViIGRldGVybWlu
ZVBvcnROYW1lKCkKICAgICAgICAgICAgIG15ICRwb3J0c0Nob2ljZSA9IGpvaW4gIlxuXHQiLCBx
dygKICAgICAgICAgICAgICAgICAtLWVmbAogICAgICAgICAgICAgICAgIC0tZ3RrCisgICAgICAg
ICAgICAgICAgLS1qc2Mtb25seQogICAgICAgICAgICAgKTsKICAgICAgICAgICAgIGRpZSAiUGxl
YXNlIHNwZWNpZnkgd2hpY2ggV2ViS2l0IHBvcnQgdG8gYnVpbGQgdXNpbmcgb25lIG9mIHRoZSBm
b2xsb3dpbmcgb3B0aW9uczoiCiAgICAgICAgICAgICAgICAgLiAiXG5cdCRwb3J0c0Nob2ljZVxu
IjsKQEAgLTExMDIsNiArMTEwNiwxMSBAQCBzdWIgaXNHdGsoKQogICAgIHJldHVybiBwb3J0TmFt
ZSgpIGVxIEdUSzsKIH0KIAorc3ViIGlzSlNDT25seSgpCit7CisgICAgcmV0dXJuIHBvcnROYW1l
KCkgZXEgSlNDT25seTsKK30KKwogIyBEZXRlcm1pbmUgaWYgdGhpcyBpcyBkZWJpYW4sIHVidW50
dSwgbGluc3BpcmUsIG9yIHNvbWV0aGluZyBzaW1pbGFyLgogc3ViIGlzRGViaWFuQmFzZWQoKQog
ewpAQCAtMTgzMyw3ICsxODQyLDcgQEAgc3ViIGlzQ2FjaGVkQXJndW1lbnRmaWxlT3V0T2ZEYXRl
KCRAKQogCiBzdWIgd3JhcHBlclByZWZpeElmTmVlZGVkKCkKIHsKLSAgICBpZiAoaXNBbnlXaW5k
b3dzKCkpIHsKKyAgICBpZiAoaXNBbnlXaW5kb3dzKCkgfHwgaXNKU0NPbmx5KCkpIHsKICAgICAg
ICAgcmV0dXJuICgpOwogICAgIH0KICAgICBpZiAoaXNBcHBsZU1hY1dlYktpdCgpKSB7CkBAIC0x
OTg2LDggKzE5OTUsOCBAQCBzdWIgZ2VuZXJhdGVCdWlsZFN5c3RlbUZyb21DTWFrZVByb2plY3QK
ICAgICAgICAgcHVzaCBAYXJncywgJy1HICJWaXN1YWwgU3R1ZGlvIDE0IDIwMTUgV2luNjQiJzsK
ICAgICB9CiAKLSAgICAjIEdUSysgaGFzIGEgcHJvZHVjdGlvbiBtb2RlLCBidXQgYnVpbGQtd2Vi
a2l0IHNob3VsZCBhbHdheXMgdXNlIGRldmVsb3BlciBtb2RlLgotICAgIHB1c2ggQGFyZ3MsICIt
RERFVkVMT1BFUl9NT0RFPU9OIiBpZiBpc0VmbCgpIHx8IGlzR3RrKCk7CisgICAgIyBTb21lIHBv
cnRzIGhhdmUgcHJvZHVjdGlvbiBtb2RlLCBidXQgYnVpbGQtd2Via2l0IHNob3VsZCBhbHdheXMg
dXNlIGRldmVsb3BlciBtb2RlLgorICAgIHB1c2ggQGFyZ3MsICItRERFVkVMT1BFUl9NT0RFPU9O
IiBpZiBpc0VmbCgpIHx8IGlzR3RrKCkgfHwgaXNKU0NPbmx5KCk7CiAKICAgICAjIERvbid0IHdh
cm4gdmFyaWFibGVzIHdoaWNoIGFyZW4ndCB1c2VkIGJ5IGNtYWtlIHBvcnRzLgogICAgIHB1c2gg
QGFyZ3MsICItLW5vLXdhcm4tdW51c2VkLWNsaSI7CkBAIC0yMDI1LDggKzIwMzQsOCBAQCBzdWIg
YnVpbGRDTWFrZUdlbmVyYXRlZFByb2plY3QoJCkKICAgICBteSBAYXJncyA9ICgiLS1idWlsZCIs
ICRidWlsZFBhdGgsICItLWNvbmZpZyIsICRjb25maWcpOwogICAgIHB1c2ggQGFyZ3MsICgiLS0i
LCAkbWFrZUFyZ3MpIGlmICRtYWtlQXJnczsKIAotICAgICMgR1RLIGNhbiB1c2UgYSBidWlsZCBz
Y3JpcHQgdG8gcHJlc2VydmUgY29sb3JzIGFuZCBwcmV0dHktcHJpbnRpbmcuCi0gICAgaWYgKGlz
R3RrKCkgJiYgLWUgIiRidWlsZFBhdGgvYnVpbGQuc2giKSB7CisgICAgIyBHVEsgYW5kIEpTQ09u
bHkgY2FuIHVzZSBhIGJ1aWxkIHNjcmlwdCB0byBwcmVzZXJ2ZSBjb2xvcnMgYW5kIHByZXR0eS1w
cmludGluZy4KKyAgICBpZiAoKGlzR3RrKCkgfHwgaXNKU0NPbmx5KCkpICYmIC1lICIkYnVpbGRQ
YXRoL2J1aWxkLnNoIikgewogICAgICAgICBjaGRpciAiJGJ1aWxkUGF0aCIgb3IgZGllOwogICAg
ICAgICAkY29tbWFuZCA9ICIkYnVpbGRQYXRoL2J1aWxkLnNoIjsKICAgICAgICAgQGFyZ3MgPSAo
JG1ha2VBcmdzKTsKZGlmZiAtLWdpdCBhL0NNYWtlTGlzdHMudHh0IGIvQ01ha2VMaXN0cy50eHQK
aW5kZXggMGUwZWEyMzA5OWIyNzI1ZGJkN2E5OGVjYTM2NTlkZGYyMmM4N2FkZS4uNDFiOTUzZDVi
YzAyYzg2YTFkNWU3Y2U5M2EyMjA5ZWJiNjdiYjI2YyAxMDA2NDQKLS0tIGEvQ01ha2VMaXN0cy50
eHQKKysrIGIvQ01ha2VMaXN0cy50eHQKQEAgLTE5LDcgKzE5LDcgQEAgZW5kaWYgKCkKICMgLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KICMgRGV0ZXJtaW5lIHdoaWNoIHBvcnQgd2lsbCBiZSBidWlsdAog
IyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotc2V0KEFMTF9QT1JUUyBFZmwgR1RLIEFwcGxlV2luIFdp
bkNhaXJvIE1hYykKK3NldChBTExfUE9SVFMgRWZsIEdUSyBBcHBsZVdpbiBXaW5DYWlybyBNYWMg
SlNDT25seSkKIHNldChQT1JUICJOT1BPUlQiIENBQ0hFIFNUUklORyAiY2hvb3NlIHdoaWNoIFdl
YktpdCBwb3J0IHRvIGJ1aWxkIChvbmUgb2YgJHtBTExfUE9SVFN9KSIpCiAKIGxpc3QoRklORCBB
TExfUE9SVFMgJHtQT1JUfSBSRVQpCmRpZmYgLS1naXQgYS9DaGFuZ2VMb2cgYi9DaGFuZ2VMb2cK
aW5kZXggMjQ4YThmOTIzYjE2NjczNWFjMDlkZTNkMDc3NmZkZDQ0MmEzZWIwMi4uMzlhNjliZGZl
YjZmYzBhNTkwODA0YzBiNmVmZWFkYTBjMTMyZmQ5NCAxMDA2NDQKLS0tIGEvQ2hhbmdlTG9nCisr
KyBiL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDE2LTAyLTIxICBLb25zdGFudGluIFRv
a2FyZXYgIDxhbm51bGVuQHlhbmRleC5ydT4KKworICAgICAgICBBZGRlZCBuZXcgcG9ydCBKU0NP
bmx5LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU0
NTEyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhp
cyBwb3J0IGFsbG93cyB0byBidWlsZCBKYXZhU2NyaXB0Q29yZSBlbmdpbmUgd2l0aCBtaW5pbWFs
CisgICAgICAgIGRlcGVuZGVuY2llcy4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAg
ICAgICAqIFNvdXJjZS9jbWFrZS9PcHRpb25zSlNDT25seS5jbWFrZTogQWRkZWQuCisKIDIwMTYt
MDItMTggIFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29tPgogCiAgICAgICAg
IFtHU3RyZWFtZXJdIEJ1bXAgaW50ZXJuYWwgamhidWlsZCB2ZXJzaW9ucyB0byAxLjYuMwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>272458</attachid>
            <date>2016-02-28 09:58:20 -0800</date>
            <delta_ts>2016-03-13 14:16:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-154512-20160228205803.patch</filename>
            <type>text/plain</type>
            <size>19010</size>
            <attacher name="Konstantin Tokarev">annulen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk3MjY1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
OWViOGM5Njg4M2FhNzVjNzIzZDFjOTk1NDY3YjFlNTJkNmRmOWFjLi43ZGRkNmYzZjAxNjkyMDU3
NjIzMzE1NzI0MGExNTRmMmIzMDE1ODU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNSBAQAorMjAxNi0wMi0yMSAgS29uc3RhbnRpbiBUb2thcmV2ICA8YW5udWxlbkB5YW5k
ZXgucnU+CisKKyAgICAgICAgQWRkZWQgbmV3IHBvcnQgSlNDT25seS4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NDUxMgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcG9ydCBhbGxvd3MgdG8gYnVp
bGQgSmF2YVNjcmlwdENvcmUgZW5naW5lIHdpdGggbWluaW1hbAorICAgICAgICBkZXBlbmRlbmNp
ZXMuCisKKyAgICAgICAgKiBQbGF0Zm9ybUpTQ09ubHkuY21ha2U6IEFkZGVkLgorCiAyMDE2LTAy
LTI3ICBBbmR5IFZhbldhZ29uZXIgIDx0aGV0YWxlY3JhZnRlckBnbWFpbC5jb20+CiAKICAgICAg
ICAgSW50bC5Db2xsYXRvciB1c2VzIFBPU0lYIGxvY2FsZSAoZGV0ZWN0ZWQgYnkganMvaW50bC1j
b2xsYXRvci5odG1sIG9uIGlPUyBTaW11bGF0b3IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0No
YW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGMyMWUzOWJhNmFiZGE3ZTM1ZmI3
MWVlNjBhY2I0NTU0YjgyNmNkNTcuLjUwMDkwOWU1ZmRhMTgyYmJhOWE2ZjYzYmQ5NmE1Y2Y3NDE2
ZDFkMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTYtMDItMjEgIEtvbnN0YW50aW4gVG9rYXJl
diAgPGFubnVsZW5AeWFuZGV4LnJ1PgorCisgICAgICAgIEFkZGVkIG5ldyBwb3J0IEpTQ09ubHku
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTQ1MTIK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBv
cnQgYWxsb3dzIHRvIGJ1aWxkIEphdmFTY3JpcHRDb3JlIGVuZ2luZSB3aXRoIG1pbmltYWwKKyAg
ICAgICAgZGVwZW5kZW5jaWVzLgorCisgICAgICAgICogd3RmL1BsYXRmb3JtSlNDT25seS5jbWFr
ZTogQWRkZWQuCisgICAgICAgICogd3RmL25vbmUvTWFpblRocmVhZE5vbmUuY3BwOiBBZGRlZC4K
KyAgICAgICAgKiB3dGYvbm9uZS9SdW5Mb29wTm9uZS5jcHA6IEFkZGVkLgorICAgICAgICAqIHd0
Zi9ub25lL1dvcmtRdWV1ZU5vbmUuY3BwOiBBZGRlZC4KKyAgICAgICAgKiB3dGYvV29ya1F1ZXVl
Lmg6IENvbXBpbGUgZ2xpYiBldmVudCBsb29wIG5vdCBvbmx5IGZvciBQTEFURk9STShHVEspLgor
CiAyMDE2LTAyLTI2ICBPbGl2ZXIgSHVudCAgPG9saXZlckBhcHBsZS5jb20+CiAKICAgICAgICAg
UmVtb3ZlIHRoZSBvbiBkZW1hbmQgZXhlY3V0YWJsZSBhbGxvY2F0b3IKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9QbGF0Zm9ybUpTQ09ubHkuY21ha2UgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvUGxhdGZvcm1KU0NPbmx5LmNtYWtlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjliY2EwN2IxNGQwZDRi
OTQ4NDhjMmE1M2U4NWFmMzg3MmMyMTkwMjkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvUGxhdGZvcm1KU0NPbmx5LmNtYWtlCkBAIC0wLDAgKzEsMTQgQEAKK2FkZF9k
ZWZpbml0aW9ucygtRFNUQVRJQ0FMTFlfTElOS0VEX1dJVEhfV1RGKQorCitsaXN0KEFQUEVORCBK
YXZhU2NyaXB0Q29yZV9JTkNMVURFX0RJUkVDVE9SSUVTCisgICAgIiR7V1RGX0RJUn0iCispCisK
K2lmIChVU0VfR0xJQikKKyAgICBsaXN0KEFQUEVORCBKYXZhU2NyaXB0Q29yZV9TWVNURU1fSU5D
TFVERV9ESVJFQ1RPUklFUworICAgICAgICAke0dMSUJfSU5DTFVERV9ESVJTfQorICAgICkKKyAg
ICBsaXN0KEFQUEVORCBKYXZhU2NyaXB0Q29yZV9MSUJSQVJJRVMKKyAgICAgICAgJHtHTElCX0xJ
QlJBUklFU30KKyAgICApCitlbmRpZiAoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUGxh
dGZvcm1KU0NPbmx5LmNtYWtlIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm1KU0NPbmx5LmNtYWtl
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjg5MmRmZWIyYjg3MjNkMTI3NjY1MjE2ZjlhOTBkNjE0ODVhMzc2NTEKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUpTQ09ubHkuY21ha2UKQEAg
LTAsMCArMSwyNiBAQAoraWYgKFVTRV9HTElCKQorICAgIGxpc3QoQVBQRU5EIFdURl9TT1VSQ0VT
CisgICAgICAgIGdsaWIvR1JlZlB0ci5jcHAKKyAgICAgICAgZ2xpYi9NYWluVGhyZWFkR0xpYi5j
cHAKKyAgICAgICAgZ2xpYi9SdW5Mb29wR0xpYi5jcHAKKyAgICAgICAgZ2xpYi9Xb3JrUXVldWVH
TGliLmNwcAorICAgICkKKyAgICBsaXN0KEFQUEVORCBXVEZfU1lTVEVNX0lOQ0xVREVfRElSRUNU
T1JJRVMKKyAgICAgICAgJHtHTElCX0lOQ0xVREVfRElSU30KKyAgICApCisgICAgbGlzdChBUFBF
TkQgV1RGX0xJQlJBUklFUworICAgICAgICAke0dMSUJfR0lPX0xJQlJBUklFU30KKyAgICAgICAg
JHtHTElCX0dPQkpFQ1RfTElCUkFSSUVTfQorICAgICAgICAke0dMSUJfTElCUkFSSUVTfQorICAg
ICkKK2Vsc2UgKCkKKyAgICBsaXN0KEFQUEVORCBXVEZfU09VUkNFUworICAgICAgICBub25lL01h
aW5UaHJlYWROb25lLmNwcAorICAgICAgICBub25lL1J1bkxvb3BOb25lLmNwcAorICAgICAgICBu
b25lL1dvcmtRdWV1ZU5vbmUuY3BwCisgICAgKQorZW5kaWYgKCkKKworbGlzdChBUFBFTkQgV1RG
X0xJQlJBUklFUworICAgICR7Q01BS0VfVEhSRUFEX0xJQlNfSU5JVH0KKykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XVEYvd3RmL1dvcmtRdWV1ZS5oIGIvU291cmNlL1dURi93dGYvV29ya1F1ZXVlLmgK
aW5kZXggZGRhM2NmZGQwMWNmYzEyZjk0NTk5MzVlZTQxOThlOTUyYWFhNDI1Zi4uNmUwMzA0NTQ5
ZDBjZWQyYzc5Mzc5NjQ5ZjU1ZWMzYjI3NDQ4ZTZjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93
dGYvV29ya1F1ZXVlLmgKKysrIGIvU291cmNlL1dURi93dGYvV29ya1F1ZXVlLmgKQEAgLTM4LDEy
ICszOCwxMiBAQAogI2luY2x1ZGUgPGRpc3BhdGNoL2Rpc3BhdGNoLmg+CiAjZW5kaWYKIAotI2lm
IFBMQVRGT1JNKEdUSykKKyNpZiBQTEFURk9STShFRkwpCisjaW5jbHVkZSA8RGlzcGF0Y2hRdWV1
ZUVmbC5oPgorI2VsaWYgVVNFKEdMSUIpCiAjaW5jbHVkZSA8d3RmL0NvbmRpdGlvbi5oPgogI2lu
Y2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CiAjaW5jbHVkZSA8d3RmL2dsaWIvR1JlZlB0ci5oPgotI2Vs
aWYgUExBVEZPUk0oRUZMKQotI2luY2x1ZGUgPERpc3BhdGNoUXVldWVFZmwuaD4KICNlbGlmIE9T
KFdJTkRPV1MpCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9y
Lmg+CkBAIC03NCwxMSArNzQsMTEgQEAgcHVibGljOgogCiAgICAgV1RGX0VYUE9SVF9QUklWQVRF
IHN0YXRpYyB2b2lkIGNvbmN1cnJlbnRBcHBseShzaXplX3QgaXRlcmF0aW9ucywgY29uc3Qgc3Rk
OjpmdW5jdGlvbjx2b2lkIChzaXplX3QgaW5kZXgpPiYpOwogCi0jaWYgUExBVEZPUk0oR1RLKQot
ICAgIFJ1bkxvb3AmIHJ1bkxvb3AoKSBjb25zdCB7IHJldHVybiAqbV9ydW5Mb29wOyB9Ci0jZWxp
ZiBQTEFURk9STShFRkwpCisjaWYgUExBVEZPUk0oRUZMKQogICAgIHZvaWQgcmVnaXN0ZXJTb2Nr
ZXRFdmVudEhhbmRsZXIoaW50LCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+KTsKICAgICB2b2lkIHVu
cmVnaXN0ZXJTb2NrZXRFdmVudEhhbmRsZXIoaW50KTsKKyNlbGlmIFVTRShHTElCKQorICAgIFJ1
bkxvb3AmIHJ1bkxvb3AoKSBjb25zdCB7IHJldHVybiAqbV9ydW5Mb29wOyB9CiAjZWxpZiBPUyhE
QVJXSU4pCiAgICAgZGlzcGF0Y2hfcXVldWVfdCBkaXNwYXRjaFF1ZXVlKCkgY29uc3QgeyByZXR1
cm4gbV9kaXNwYXRjaFF1ZXVlOyB9CiAjZW5kaWYKQEAgLTEwMiwxNSArMTAyLDE1IEBAIHByaXZh
dGU6CiAgICAgc3RhdGljIERXT1JEIFdJTkFQSSB1bnJlZ2lzdGVyV2FpdEFuZERlc3Ryb3lJdGVt
Q2FsbGJhY2sodm9pZCogY29udGV4dCk7CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKEdUSykKKyNp
ZiBQTEFURk9STShFRkwpCisgICAgUmVmUHRyPERpc3BhdGNoUXVldWU+IG1fZGlzcGF0Y2hRdWV1
ZTsKKyNlbGlmIFVTRShHTElCKQogICAgIFRocmVhZElkZW50aWZpZXIgbV93b3JrUXVldWVUaHJl
YWQ7CiAgICAgTG9jayBtX2luaXRpYWxpemVSdW5Mb29wQ29uZGl0aW9uTXV0ZXg7CiAgICAgQ29u
ZGl0aW9uIG1faW5pdGlhbGl6ZVJ1bkxvb3BDb25kaXRpb247CiAgICAgUnVuTG9vcCogbV9ydW5M
b29wOwogICAgIExvY2sgbV90ZXJtaW5hdGVSdW5Mb29wQ29uZGl0aW9uTXV0ZXg7CiAgICAgQ29u
ZGl0aW9uIG1fdGVybWluYXRlUnVuTG9vcENvbmRpdGlvbjsKLSNlbGlmIFBMQVRGT1JNKEVGTCkK
LSAgICBSZWZQdHI8RGlzcGF0Y2hRdWV1ZT4gbV9kaXNwYXRjaFF1ZXVlOwogI2VsaWYgT1MoREFS
V0lOKQogICAgIHN0YXRpYyB2b2lkIGV4ZWN1dGVGdW5jdGlvbih2b2lkKik7CiAgICAgZGlzcGF0
Y2hfcXVldWVfdCBtX2Rpc3BhdGNoUXVldWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9u
b25lL01haW5UaHJlYWROb25lLmNwcCBiL1NvdXJjZS9XVEYvd3RmL25vbmUvTWFpblRocmVhZE5v
bmUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmUzY2I2YmE2NTMyMmQ2MGY4MTI0ODI2OGY1NmNlNjIzOWI0YTJk
NDEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9ub25lL01haW5UaHJlYWROb25l
LmNwcApAQCAtMCwwICsxLDM5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEtvbnN0YW50
aW4gVG9rYXZldiA8YW5udWxlbkB5YW5kZXgucnU+CisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJNYWluVGhy
ZWFkLmgiCisKK25hbWVzcGFjZSBXVEYgeworCit2b2lkIGluaXRpYWxpemVNYWluVGhyZWFkUGxh
dGZvcm0oKQoreworfQorCit2b2lkIHNjaGVkdWxlRGlzcGF0Y2hGdW5jdGlvbnNPbk1haW5UaHJl
YWQoKQoreworfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9ub25lL1J1bkxvb3BO
b25lLmNwcCBiL1NvdXJjZS9XVEYvd3RmL25vbmUvUnVuTG9vcE5vbmUuY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjAyNTVjZmQ1NmU1OTVjMGJlYTAxMmZhNTlmYTk1M2ZlNzhlNTYzNmYKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV1RGL3d0Zi9ub25lL1J1bkxvb3BOb25lLmNwcApAQCAtMCwwICsxLDc1IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEtvbnN0YW50aW4gVG9rYXZldiA8YW5udWxlbkB5
YW5kZXgucnU+CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJSdW5Mb29wLmgiCisKK25hbWVzcGFjZSBXVEYg
eworCitSdW5Mb29wOjpSdW5Mb29wKCkKK3sKK30KKworUnVuTG9vcDo6flJ1bkxvb3AoKQorewor
fQorCit2b2lkIFJ1bkxvb3A6OnJ1bigpCit7Cit9CisKK3ZvaWQgUnVuTG9vcDo6c3RvcCgpCit7
Cit9CisKK3ZvaWQgUnVuTG9vcDo6d2FrZVVwKCkKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKK30KKworUnVuTG9vcDo6VGltZXJCYXNlOjpUaW1lckJhc2UoUnVuTG9vcCYgcnVuTG9vcCkK
KyAgICA6IG1fcnVuTG9vcChydW5Mb29wKQoreworfQorCitSdW5Mb29wOjpUaW1lckJhc2U6On5U
aW1lckJhc2UoKQoreworICAgIHN0b3AoKTsKK30KKwordm9pZCBSdW5Mb29wOjpUaW1lckJhc2U6
OnN0YXJ0KGRvdWJsZSwgYm9vbCkKK3sKK30KKwordm9pZCBSdW5Mb29wOjpUaW1lckJhc2U6OnN0
b3AoKQoreworfQorCitib29sIFJ1bkxvb3A6OlRpbWVyQmFzZTo6aXNBY3RpdmUoKSBjb25zdAor
eworICAgIHJldHVybiBmYWxzZTsKK30KKworfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV1RGL3d0Zi9ub25lL1dvcmtRdWV1ZU5vbmUuY3BwIGIvU291cmNlL1dURi93dGYv
bm9uZS9Xb3JrUXVldWVOb25lLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yYTZkNjc1OGQ3OTY3YjM2NTY3NDVj
ZjgzN2U3MzBlMTA2NjA4M2Y2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dURi93dGYvbm9u
ZS9Xb3JrUXVldWVOb25lLmNwcApAQCAtMCwwICsxLDQ1IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE2IEtvbnN0YW50aW4gVG9rYXZldiA8YW5udWxlbkB5YW5kZXgucnU+CisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJXb3JrUXVldWUuaCIKKwordm9pZCBXb3JrUXVldWU6OnBsYXRmb3JtSW5pdGlhbGl6
ZShjb25zdCBjaGFyKiwgVHlwZSwgUU9TKQoreworfQorCit2b2lkIFdvcmtRdWV1ZTo6cGxhdGZv
cm1JbnZhbGlkYXRlKCkKK3sKK30KKwordm9pZCBXb3JrUXVldWU6OmRpc3BhdGNoKHN0ZDo6ZnVu
Y3Rpb248dm9pZCgpPikKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKwordm9pZCBX
b3JrUXVldWU6OmRpc3BhdGNoQWZ0ZXIoc3RkOjpjaHJvbm86Om5hbm9zZWNvbmRzLCBzdGQ6OmZ1
bmN0aW9uPHZvaWQoKT4pCit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvY21ha2UvT3B0aW9uc0pTQ09ubHkuY21ha2UgYi9Tb3VyY2UvY21ha2UvT3B0
aW9uc0pTQ09ubHkuY21ha2UKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODY5YTNkMmFhNGY0NjkzNWE3NjJjNDI1YjIz
ZTExYWExNmNjMWZiYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9jbWFrZS9PcHRpb25zSlND
T25seS5jbWFrZQpAQCAtMCwwICsxLDUxIEBACitmaW5kX3BhY2thZ2UoSUNVIFJFUVVJUkVEKQor
ZmluZF9wYWNrYWdlKFRocmVhZHMgUkVRVUlSRUQpCisKK3NldChQUk9KRUNUX1ZFUlNJT05fTUFK
T1IgMSkKK3NldChQUk9KRUNUX1ZFUlNJT05fTUlOT1IgMCkKK3NldChQUk9KRUNUX1ZFUlNJT05f
TUlDUk8gMCkKK3NldChQUk9KRUNUX1ZFUlNJT04gJHtQUk9KRUNUX1ZFUlNJT05fTUFKT1J9LiR7
UFJPSkVDVF9WRVJTSU9OX01JTk9SfS4ke1BST0pFQ1RfVkVSU0lPTl9NSUNST30pCisKK1dFQktJ
VF9PUFRJT05fQkVHSU4oKQorV0VCS0lUX09QVElPTl9ERUZJTkUoRU5BQkxFX1NUQVRJQ19KU0Mg
IldoZXRoZXIgdG8gYnVpbGQgSmF2YVNjcmlwdENvcmUgYXMgYSBzdGF0aWMgbGlicmFyeS4iIFBV
QkxJQyBPRkYpCitXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfRlRMX0pJ
VCBQVUJMSUMgT04pCitXRUJLSVRfT1BUSU9OX0VORCgpCisKK3NldChFTkFCTEVfV0VCS0lUIE9G
RikKK3NldChFTkFCTEVfV0VCS0lUMiBPRkYpCitzZXQoRU5BQkxFX0FQSV9URVNUUyBPRkYpCisK
K2lmIChXVEZfQ1BVX1g4NiBPUiBXVEZfQ1BVX1g4Nl82NCkKKyAgICBzZXQoV1RGX1VTRV9VRElT
ODYgMSkKK2VuZGlmICgpCisKK2lmIChFTkFCTEVfU1RBVElDX0pTQykKKyAgICBzZXQoSmF2YVNj
cmlwdENvcmVfTElCUkFSWV9UWVBFIFNUQVRJQykKK2VuZGlmICgpCisKK2ZpbmRfcGFja2FnZShH
TElCIDIuMzYgQ09NUE9ORU5UUyBnaW8gZ29iamVjdCkKK2lmIChHTElCX0ZPVU5EKQorICAgIFNF
VF9BTkRfRVhQT1NFX1RPX0JVSUxEKFVTRV9HTElCIDEpCitlbmRpZiAoKQorCisjIEZyb20gT3B0
aW9uc0dUSy5jbWFrZQoraWYgKENNQUtFX01BSk9SX1ZFUlNJT04gTEVTUyAzKQorICAgICMgQmVm
b3JlIENNYWtlIDMgaXQgd2FzIG5lY2Vzc2FyeSB0byB1c2UgYSBidWlsZCBzY3JpcHQgaW5zdGVh
ZCBvZiB1c2luZyBjbWFrZSAtLWJ1aWxkIGRpcmVjdGx5CisgICAgIyB0byBwcmVzZXJ2ZSBjb2xv
cnMgYW5kIHByZXR0eS1wcmludGluZy4KKworICAgIGJ1aWxkX2NvbW1hbmQoQ09NTUFORF9MSU5F
X1RPX0JVSUxEKQorICAgICMgYnVpbGRfY29tbWFuZCB1bmNvbmRpdGlvbmFsbHkgYWRkcyAtaSAo
aWdub3JlIGVycm9ycykgZm9yIG1ha2UsIGFuZCB0aGVyZSdzCisgICAgIyBubyByZWFzb25hYmxl
IHdheSB0byB0dXJuIHRoYXQgb2ZmLCBzbyB3ZSBqdXN0IHJlcGxhY2UgaXQgd2l0aCAtaywgd2hp
Y2ggaGFzCisgICAgIyB0aGUgc2FtZSBlZmZlY3QsIGV4Y2VwdCB0aGF0IHRoZSByZXR1cm4gY29k
ZSB3aWxsIGluZGljYXRlIHRoYXQgYW4gZXJyb3Igb2NjdXJyZWQuCisgICAgIyBTZWU6IGh0dHA6
Ly93d3cuY21ha2Uub3JnL2NtYWtlL2hlbHAvdjMuMC9jb21tYW5kL2J1aWxkX2NvbW1hbmQuaHRt
bAorICAgIHN0cmluZyhSRVBMQUNFICIgLWkiICIgLWsiIENPTU1BTkRfTElORV9UT19CVUlMRCAk
e0NPTU1BTkRfTElORV9UT19CVUlMRH0pCisgICAgZmlsZShXUklURQorICAgICAgICAke0NNQUtF
X0JJTkFSWV9ESVJ9JHtDTUFLRV9GSUxFU19ESVJFQ1RPUll9L2J1aWxkLnNoCisgICAgICAgICIj
IS9iaW4vc2hcbiIKKyAgICAgICAgIiR7Q09NTUFORF9MSU5FX1RPX0JVSUxEfSAkQCIKKyAgICAp
CisgICAgZmlsZShDT1BZICR7Q01BS0VfQklOQVJZX0RJUn0ke0NNQUtFX0ZJTEVTX0RJUkVDVE9S
WX0vYnVpbGQuc2gKKyAgICAgICAgREVTVElOQVRJT04gJHtDTUFLRV9CSU5BUllfRElSfQorICAg
ICAgICBGSUxFX1BFUk1JU1NJT05TIE9XTkVSX1JFQUQgT1dORVJfV1JJVEUgT1dORVJfRVhFQ1VU
RSBHUk9VUF9SRUFEIEdST1VQX0VYRUNVVEUKKyAgICApCitlbmRpZiAoKQpkaWZmIC0tZ2l0IGEv
VG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDIxMTJlY2YwMWU5OTI0NTRl
NDk5NTUyMzdhNmU5NTEyNTczM2U1YWYuLjJjMzRmMTYzZjZhMmViOTU3Y2U5MGEyNDQ5NjYzNDk4
NDEyOTFlM2IgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwyMyBAQAorMjAxNi0wMi0yMSAgS29uc3RhbnRpbiBUb2thcmV2ICA8YW5u
dWxlbkB5YW5kZXgucnU+CisKKyAgICAgICAgQWRkZWQgbmV3IHBvcnQgSlNDT25seS4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NDUxMgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcG9ydCBhbGxv
d3MgdG8gYnVpbGQgSmF2YVNjcmlwdENvcmUgZW5naW5lIHdpdGggbWluaW1hbAorICAgICAgICBk
ZXBlbmRlbmNpZXMuCisKKyAgICAgICAgKiBTY3JpcHRzL2J1aWxkLWpzYzoKKyAgICAgICAgKiBT
Y3JpcHRzL3dlYmtpdGRpcnMucG06CisgICAgICAgIChhcmd1bWVudHNGb3JDb25maWd1cmF0aW9u
KToKKyAgICAgICAgKGV4ZWN1dGFibGVQcm9kdWN0RGlyKToKKyAgICAgICAgKGRldGVybWluZVBv
cnROYW1lKToKKyAgICAgICAgKGlzSlNDT25seSk6CisgICAgICAgICh3cmFwcGVyUHJlZml4SWZO
ZWVkZWQpOgorICAgICAgICAoZ2VuZXJhdGVCdWlsZFN5c3RlbUZyb21DTWFrZVByb2plY3QpOgor
ICAgICAgICAoYnVpbGRDTWFrZUdlbmVyYXRlZFByb2plY3QpOgorCiAyMDE2LTAyLTI3ICBBbGV4
ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgogCiAgICAgICAgIFNpbGVuY2UgbGVha3Mg
dW5kZXIgVGV4dENvZGVjSUNVOjpyZWdpc3RlckNvZGVjcwpkaWZmIC0tZ2l0IGEvVG9vbHMvU2Ny
aXB0cy9idWlsZC1qc2MgYi9Ub29scy9TY3JpcHRzL2J1aWxkLWpzYwppbmRleCAwYjU1MDBhYmYy
OTZjMDMwNDA3YjQzYzJlOWY0ZDY0MGY5YzNmMGMzLi45M2ViNmZiNTI0NjhhMzYwZWQwNDY2MTYy
ODVhZjMzYTMwMDhmMDUyIDEwMDc1NQotLS0gYS9Ub29scy9TY3JpcHRzL2J1aWxkLWpzYworKysg
Yi9Ub29scy9TY3JpcHRzL2J1aWxkLWpzYwpAQCAtNDIsNyArNDIsNyBAQCBwcm9oaWJpdFVua25v
d25Qb3J0KCk7CiBteSAkc2hvdWxkUnVuU3RhdGljQW5hbHl6ZXIgPSAwOwogbXkgJGNvdmVyYWdl
U3VwcG9ydCA9IDA7CiBteSAkc2hvd0hlbHAgPSAwOwotbXkgJGZ0bEpJVCA9IGludChpc0FwcGxl
TWFjV2ViS2l0KCkgJiYgIXdpbGxVc2VJT1NTaW11bGF0b3JTREsoKSB8fCBpc1g4Nl82NCgpICYm
IChpc0d0aygpIHx8IGlzRWZsKCkpKTsKK215ICRmdGxKSVQgPSBpbnQoaXNBcHBsZU1hY1dlYktp
dCgpICYmICF3aWxsVXNlSU9TU2ltdWxhdG9yU0RLKCkgfHwgaXNYODZfNjQoKSAmJiAoaXNHdGso
KSB8fCBpc0VmbCgpIHx8IGlzSlNDT25seSgpKSk7CiBteSAkZm9yY2VDTG9vcCA9IDA7CiBteSAk
Y2xpID0gMDsKIG15ICRtYWtlQXJncyA9ICIiOwpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93
ZWJraXRkaXJzLnBtIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRkaXJzLnBtCmluZGV4IDE3OTc2NDQw
Nzg2NmNiZDhkOWNiZDYxZjUwZTczZTU3MDNkNmQzY2EuLjFmZDk4OTkyMTg2NzU5Y2Y1YmRmNzUy
NjQyOTg2NDUxZDYzMWU3OTQgMTAwNzU1Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0ZGlycy5w
bQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdGRpcnMucG0KQEAgLTEwMSw2ICsxMDEsNyBAQCB1
c2UgY29uc3RhbnQgewogICAgIEVmbCAgICAgID0+ICJFZmwiLAogICAgIGlPUyAgICAgID0+ICJp
T1MiLAogICAgIE1hYyAgICAgID0+ICJNYWMiLAorICAgIEpTQ09ubHkgID0+ICJKU0NPbmx5IiwK
ICAgICBXaW5DYWlybyA9PiAiV2luQ2Fpcm8iLAogICAgIFVua25vd24gID0+ICJVbmtub3duIgog
fTsKQEAgLTQ0OCw2ICs0NDksNyBAQCBzdWIgYXJndW1lbnRzRm9yQ29uZmlndXJhdGlvbigpCiAg
ICAgcHVzaChAYXJncywgJy0tNjQtYml0JykgaWYgKGlzV2luNjQoKSk7CiAgICAgcHVzaChAYXJn
cywgJy0tZ3RrJykgaWYgaXNHdGsoKTsKICAgICBwdXNoKEBhcmdzLCAnLS1lZmwnKSBpZiBpc0Vm
bCgpOworICAgIHB1c2goQGFyZ3MsICctLWpzYy1vbmx5JykgaWYgaXNKU0NPbmx5KCk7CiAgICAg
cHVzaChAYXJncywgJy0td2luY2Fpcm8nKSBpZiBpc1dpbkNhaXJvKCk7CiAgICAgcHVzaChAYXJn
cywgJy0taW5zcGVjdG9yLWZyb250ZW5kJykgaWYgaXNJbnNwZWN0b3JGcm9udGVuZCgpOwogICAg
IHJldHVybiBAYXJnczsKQEAgLTY0NCw3ICs2NDYsNyBAQCBzdWIgZXhlY3V0YWJsZVByb2R1Y3RE
aXIKICAgICBteSAkcHJvZHVjdERpcmVjdG9yeSA9IHByb2R1Y3REaXIoKTsKIAogICAgIG15ICRi
aW5hcnlEaXJlY3Rvcnk7Ci0gICAgaWYgKGlzRWZsKCkgfHwgaXNHdGsoKSkgeworICAgIGlmIChp
c0VmbCgpIHx8IGlzR3RrKCkgfHwgaXNKU0NPbmx5KCkpIHsKICAgICAgICAgJGJpbmFyeURpcmVj
dG9yeSA9ICJiaW4iOwogICAgIH0gZWxzaWYgKGlzQW55V2luZG93cygpKSB7CiAgICAgICAgICRi
aW5hcnlEaXJlY3RvcnkgPSBpc1dpbjY0KCkgPyAiYmluNjQiIDogImJpbjMyIjsKQEAgLTEwNDUs
NiArMTA0Nyw3IEBAIHN1YiBkZXRlcm1pbmVQb3J0TmFtZSgpCiAgICAgbXkgJWFyZ1RvUG9ydE5h
bWUgPSAoCiAgICAgICAgIGVmbCA9PiBFZmwsCiAgICAgICAgIGd0ayA9PiBHVEssCisgICAgICAg
ICdqc2Mtb25seScgPT4gSlNDT25seSwKICAgICAgICAgd2luY2Fpcm8gPT4gV2luQ2Fpcm8KICAg
ICApOwogCkBAIC0xMDc1LDYgKzEwNzgsNyBAQCBzdWIgZGV0ZXJtaW5lUG9ydE5hbWUoKQogICAg
ICAgICAgICAgbXkgJHBvcnRzQ2hvaWNlID0gam9pbiAiXG5cdCIsIHF3KAogICAgICAgICAgICAg
ICAgIC0tZWZsCiAgICAgICAgICAgICAgICAgLS1ndGsKKyAgICAgICAgICAgICAgICAtLWpzYy1v
bmx5CiAgICAgICAgICAgICApOwogICAgICAgICAgICAgZGllICJQbGVhc2Ugc3BlY2lmeSB3aGlj
aCBXZWJLaXQgcG9ydCB0byBidWlsZCB1c2luZyBvbmUgb2YgdGhlIGZvbGxvd2luZyBvcHRpb25z
OiIKICAgICAgICAgICAgICAgICAuICJcblx0JHBvcnRzQ2hvaWNlXG4iOwpAQCAtMTEwMiw2ICsx
MTA2LDExIEBAIHN1YiBpc0d0aygpCiAgICAgcmV0dXJuIHBvcnROYW1lKCkgZXEgR1RLOwogfQog
CitzdWIgaXNKU0NPbmx5KCkKK3sKKyAgICByZXR1cm4gcG9ydE5hbWUoKSBlcSBKU0NPbmx5Owor
fQorCiAjIERldGVybWluZSBpZiB0aGlzIGlzIGRlYmlhbiwgdWJ1bnR1LCBsaW5zcGlyZSwgb3Ig
c29tZXRoaW5nIHNpbWlsYXIuCiBzdWIgaXNEZWJpYW5CYXNlZCgpCiB7CkBAIC0xODMzLDcgKzE4
NDIsNyBAQCBzdWIgaXNDYWNoZWRBcmd1bWVudGZpbGVPdXRPZkRhdGUoJEApCiAKIHN1YiB3cmFw
cGVyUHJlZml4SWZOZWVkZWQoKQogewotICAgIGlmIChpc0FueVdpbmRvd3MoKSkgeworICAgIGlm
IChpc0FueVdpbmRvd3MoKSB8fCBpc0pTQ09ubHkoKSkgewogICAgICAgICByZXR1cm4gKCk7CiAg
ICAgfQogICAgIGlmIChpc0FwcGxlTWFjV2ViS2l0KCkpIHsKQEAgLTE5ODYsOCArMTk5NSw4IEBA
IHN1YiBnZW5lcmF0ZUJ1aWxkU3lzdGVtRnJvbUNNYWtlUHJvamVjdAogICAgICAgICBwdXNoIEBh
cmdzLCAnLUcgIlZpc3VhbCBTdHVkaW8gMTQgMjAxNSBXaW42NCInOwogICAgIH0KIAotICAgICMg
R1RLKyBoYXMgYSBwcm9kdWN0aW9uIG1vZGUsIGJ1dCBidWlsZC13ZWJraXQgc2hvdWxkIGFsd2F5
cyB1c2UgZGV2ZWxvcGVyIG1vZGUuCi0gICAgcHVzaCBAYXJncywgIi1EREVWRUxPUEVSX01PREU9
T04iIGlmIGlzRWZsKCkgfHwgaXNHdGsoKTsKKyAgICAjIFNvbWUgcG9ydHMgaGF2ZSBwcm9kdWN0
aW9uIG1vZGUsIGJ1dCBidWlsZC13ZWJraXQgc2hvdWxkIGFsd2F5cyB1c2UgZGV2ZWxvcGVyIG1v
ZGUuCisgICAgcHVzaCBAYXJncywgIi1EREVWRUxPUEVSX01PREU9T04iIGlmIGlzRWZsKCkgfHwg
aXNHdGsoKSB8fCBpc0pTQ09ubHkoKTsKIAogICAgICMgRG9uJ3Qgd2FybiB2YXJpYWJsZXMgd2hp
Y2ggYXJlbid0IHVzZWQgYnkgY21ha2UgcG9ydHMuCiAgICAgcHVzaCBAYXJncywgIi0tbm8td2Fy
bi11bnVzZWQtY2xpIjsKQEAgLTIwMjUsOCArMjAzNCw4IEBAIHN1YiBidWlsZENNYWtlR2VuZXJh
dGVkUHJvamVjdCgkKQogICAgIG15IEBhcmdzID0gKCItLWJ1aWxkIiwgJGJ1aWxkUGF0aCwgIi0t
Y29uZmlnIiwgJGNvbmZpZyk7CiAgICAgcHVzaCBAYXJncywgKCItLSIsICRtYWtlQXJncykgaWYg
JG1ha2VBcmdzOwogCi0gICAgIyBHVEsgY2FuIHVzZSBhIGJ1aWxkIHNjcmlwdCB0byBwcmVzZXJ2
ZSBjb2xvcnMgYW5kIHByZXR0eS1wcmludGluZy4KLSAgICBpZiAoaXNHdGsoKSAmJiAtZSAiJGJ1
aWxkUGF0aC9idWlsZC5zaCIpIHsKKyAgICAjIEdUSyBhbmQgSlNDT25seSBjYW4gdXNlIGEgYnVp
bGQgc2NyaXB0IHRvIHByZXNlcnZlIGNvbG9ycyBhbmQgcHJldHR5LXByaW50aW5nLgorICAgIGlm
ICgoaXNHdGsoKSB8fCBpc0pTQ09ubHkoKSkgJiYgLWUgIiRidWlsZFBhdGgvYnVpbGQuc2giKSB7
CiAgICAgICAgIGNoZGlyICIkYnVpbGRQYXRoIiBvciBkaWU7CiAgICAgICAgICRjb21tYW5kID0g
IiRidWlsZFBhdGgvYnVpbGQuc2giOwogICAgICAgICBAYXJncyA9ICgkbWFrZUFyZ3MpOwpkaWZm
IC0tZ2l0IGEvQ01ha2VMaXN0cy50eHQgYi9DTWFrZUxpc3RzLnR4dAppbmRleCAwZTBlYTIzMDk5
YjI3MjVkYmQ3YTk4ZWNhMzY1OWRkZjIyYzg3YWRlLi5hYmMwMWY1ZmQ3MmIwOWM2NTEzMWIwM2I2
OWUwNGJkZjIzMGM2MzZiIDEwMDY0NAotLS0gYS9DTWFrZUxpc3RzLnR4dAorKysgYi9DTWFrZUxp
c3RzLnR4dApAQCAtMTksNyArMTksMTQgQEAgZW5kaWYgKCkKICMgLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KICMgRGV0ZXJtaW5lIHdoaWNoIHBvcnQgd2lsbCBiZSBidWlsdAogIyAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQotc2V0KEFMTF9QT1JUUyBFZmwgR1RLIEFwcGxlV2luIFdpbkNhaXJvIE1hYykKK3Nl
dChBTExfUE9SVFMKKyAgICBBcHBsZVdpbgorICAgIEVmbAorICAgIEdUSworICAgIEpTQ09ubHkK
KyAgICBNYWMKKyAgICBXaW5DYWlybworKQogc2V0KFBPUlQgIk5PUE9SVCIgQ0FDSEUgU1RSSU5H
ICJjaG9vc2Ugd2hpY2ggV2ViS2l0IHBvcnQgdG8gYnVpbGQgKG9uZSBvZiAke0FMTF9QT1JUU30p
IikKIAogbGlzdChGSU5EIEFMTF9QT1JUUyAke1BPUlR9IFJFVCkKZGlmZiAtLWdpdCBhL0NoYW5n
ZUxvZyBiL0NoYW5nZUxvZwppbmRleCBhNWFlYTYwZTA1M2Q0NmI1OWM2YjY0YjhlOTg3M2IyNDQy
ZTUwMDQ0Li40ZWVjZGZjMzVmMmU1OTlhNTFhMzc3YWQ5YTliZGIxNDc1OWRmMWNhIDEwMDY0NAot
LS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTYtMDIt
MjEgIEtvbnN0YW50aW4gVG9rYXJldiAgPGFubnVsZW5AeWFuZGV4LnJ1PgorCisgICAgICAgIEFk
ZGVkIG5ldyBwb3J0IEpTQ09ubHkuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNTQ1MTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBUaGlzIHBvcnQgYWxsb3dzIHRvIGJ1aWxkIEphdmFTY3JpcHRDb3JlIGVu
Z2luZSB3aXRoIG1pbmltYWwKKyAgICAgICAgZGVwZW5kZW5jaWVzLgorCisgICAgICAgICogQ01h
a2VMaXN0cy50eHQ6CisgICAgICAgICogU291cmNlL2NtYWtlL09wdGlvbnNKU0NPbmx5LmNtYWtl
OiBBZGRlZC4KKwogMjAxNi0wMi0yNSAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBw
bGUuY29tPgogCiAgICAgICAgIFtXaW5dIFtTVkcgLT4gT1RGIENvbnZlcnRlcl0gU3VwcG9ydCB0
aGUgU1ZHIC0+IE9URiBGb250IENvbnZlcnRlcgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>273903</attachid>
            <date>2016-03-13 14:16:34 -0700</date>
            <delta_ts>2016-03-13 15:30:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-154512-20160314001621.patch</filename>
            <type>text/plain</type>
            <size>19438</size>
            <attacher name="Konstantin Tokarev">annulen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk4MDgzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
ZDgwMWYwYzJjNDMyMzIzNWFhMTE5NmQ5ZGYxNzYyYmRmMGQwYjMzLi43OWQwOTA5YjczZTUzZWI2
OTZlZDMzZThlOTEwNWEwZjlhYTdjZTMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNSBAQAorMjAxNi0wMi0yMSAgS29uc3RhbnRpbiBUb2thcmV2ICA8YW5udWxlbkB5YW5k
ZXgucnU+CisKKyAgICAgICAgQWRkZWQgbmV3IHBvcnQgSlNDT25seS4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NDUxMgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcG9ydCBhbGxvd3MgdG8gYnVp
bGQgSmF2YVNjcmlwdENvcmUgZW5naW5lIHdpdGggbWluaW1hbAorICAgICAgICBkZXBlbmRlbmNp
ZXMuCisKKyAgICAgICAgKiBQbGF0Zm9ybUpTQ09ubHkuY21ha2U6IEFkZGVkLgorCiAyMDE2LTAz
LTEyICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBodHRwOi8va2Fu
Z2F4LmdpdGh1Yi5pby9jb21wYXQtdGFibGUvZXNuZXh0LyBjcmFzaGVzIHJlbGlhYmx5LgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwppbmRl
eCAxNGJhNWJhNWMwYTMwOGNiY2I2M2VkMmI0NzkxN2YzNWNmNTQ0MTY3Li5mZWMzMzgxMWY1NTk2
YzkzMjhjYjQzOTJlNTdjMTNiOWI1NDFiNzg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDE2LTAy
LTIxICBLb25zdGFudGluIFRva2FyZXYgIDxhbm51bGVuQHlhbmRleC5ydT4KKworICAgICAgICBB
ZGRlZCBuZXcgcG9ydCBKU0NPbmx5LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTU0NTEyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgVGhpcyBwb3J0IGFsbG93cyB0byBidWlsZCBKYXZhU2NyaXB0Q29yZSBl
bmdpbmUgd2l0aCBtaW5pbWFsCisgICAgICAgIGRlcGVuZGVuY2llcy4KKworICAgICAgICAqIHd0
Zi9QbGF0Zm9ybUpTQ09ubHkuY21ha2U6IEFkZGVkLgorICAgICAgICAqIHd0Zi9ub25lL01haW5U
aHJlYWROb25lLmNwcDogQWRkZWQuCisgICAgICAgICogd3RmL25vbmUvUnVuTG9vcE5vbmUuY3Bw
OiBBZGRlZC4KKyAgICAgICAgKiB3dGYvbm9uZS9Xb3JrUXVldWVOb25lLmNwcDogQWRkZWQuCisK
IDIwMTYtMDMtMTMgIERhdmlkIEtpbHplciAgPGRka2lsemVyQGFwcGxlLmNvbT4KIAogICAgICAg
ICBSRUdSRVNTSU9OIChyMTk4MDc5KTogV2luZG93cyBidWlsZCBicm9rZSBiZWNhdXNlIG9mICIl
UFJJZDY0IiBmb3JtYXQgc3BlY2lmaWVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvUGxhdGZvcm1KU0NPbmx5LmNtYWtlIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1BsYXRmb3Jt
SlNDT25seS5jbWFrZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45YmNhMDdiMTRkMGQ0Yjk0ODQ4YzJhNTNlODVhZjM4
NzJjMjE5MDI5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1BsYXRm
b3JtSlNDT25seS5jbWFrZQpAQCAtMCwwICsxLDE0IEBACithZGRfZGVmaW5pdGlvbnMoLURTVEFU
SUNBTExZX0xJTktFRF9XSVRIX1dURikKKworbGlzdChBUFBFTkQgSmF2YVNjcmlwdENvcmVfSU5D
TFVERV9ESVJFQ1RPUklFUworICAgICIke1dURl9ESVJ9IgorKQorCitpZiAoVVNFX0dMSUIpCisg
ICAgbGlzdChBUFBFTkQgSmF2YVNjcmlwdENvcmVfU1lTVEVNX0lOQ0xVREVfRElSRUNUT1JJRVMK
KyAgICAgICAgJHtHTElCX0lOQ0xVREVfRElSU30KKyAgICApCisgICAgbGlzdChBUFBFTkQgSmF2
YVNjcmlwdENvcmVfTElCUkFSSUVTCisgICAgICAgICR7R0xJQl9MSUJSQVJJRVN9CisgICAgKQor
ZW5kaWYgKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtSlNDT25seS5jbWFr
ZSBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtSlNDT25seS5jbWFrZQpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xYWFl
NDZlMDE5YTI0ZGM3MTEyNzgzNjgxMDljZWNhNDZhNDI1YzY5Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dURi93dGYvUGxhdGZvcm1KU0NPbmx5LmNtYWtlCkBAIC0wLDAgKzEsMjYgQEAKK2lm
IChMT1dFUkNBU0VfRVZFTlRMT09QX1RZUEUgU1RSRVFVQUwgImdsaWIiKQorICAgIGxpc3QoQVBQ
RU5EIFdURl9TT1VSQ0VTCisgICAgICAgIGdsaWIvR1JlZlB0ci5jcHAKKyAgICAgICAgZ2xpYi9N
YWluVGhyZWFkR0xpYi5jcHAKKyAgICAgICAgZ2xpYi9SdW5Mb29wR0xpYi5jcHAKKyAgICAgICAg
Z2xpYi9Xb3JrUXVldWVHTGliLmNwcAorICAgICkKKyAgICBsaXN0KEFQUEVORCBXVEZfU1lTVEVN
X0lOQ0xVREVfRElSRUNUT1JJRVMKKyAgICAgICAgJHtHTElCX0lOQ0xVREVfRElSU30KKyAgICAp
CisgICAgbGlzdChBUFBFTkQgV1RGX0xJQlJBUklFUworICAgICAgICAke0dMSUJfR0lPX0xJQlJB
UklFU30KKyAgICAgICAgJHtHTElCX0dPQkpFQ1RfTElCUkFSSUVTfQorICAgICAgICAke0dMSUJf
TElCUkFSSUVTfQorICAgICkKK2Vsc2UgKCkKKyAgICBsaXN0KEFQUEVORCBXVEZfU09VUkNFUwor
ICAgICAgICBub25lL01haW5UaHJlYWROb25lLmNwcAorICAgICAgICBub25lL1J1bkxvb3BOb25l
LmNwcAorICAgICAgICBub25lL1dvcmtRdWV1ZU5vbmUuY3BwCisgICAgKQorZW5kaWYgKCkKKwor
bGlzdChBUFBFTkQgV1RGX0xJQlJBUklFUworICAgICR7Q01BS0VfVEhSRUFEX0xJQlNfSU5JVH0K
KykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1dvcmtRdWV1ZS5oIGIvU291cmNlL1dURi93
dGYvV29ya1F1ZXVlLmgKaW5kZXggYmVjODAxMmM0OTY0NjU3MDU4ODQ1YzVhNmNiYWVlZjFmYzBm
MTE5NC4uZDI2NzVjMWVkZTAwOWM5NWY0NTY4NDI0NTc5ZWM3YjU0OTcyYTg5ZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi93dGYvV29ya1F1ZXVlLmgKKysrIGIvU291cmNlL1dURi93dGYvV29ya1F1
ZXVlLmgKQEAgLTM4LDEyICszOCwxMiBAQAogI2luY2x1ZGUgPGRpc3BhdGNoL2Rpc3BhdGNoLmg+
CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKEdUSykKKyNpZiBQTEFURk9STShFRkwpCisjaW5jbHVk
ZSA8RGlzcGF0Y2hRdWV1ZUVmbC5oPgorI2VsaWYgVVNFKEdMSUIpCiAjaW5jbHVkZSA8d3RmL0Nv
bmRpdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CiAjaW5jbHVkZSA8d3RmL2dsaWIv
R1JlZlB0ci5oPgotI2VsaWYgUExBVEZPUk0oRUZMKQotI2luY2x1ZGUgPERpc3BhdGNoUXVldWVF
ZmwuaD4KICNlbGlmIE9TKFdJTkRPV1MpCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNs
dWRlIDx3dGYvVmVjdG9yLmg+CkBAIC03NCwxMSArNzQsMTEgQEAgcHVibGljOgogCiAgICAgV1RG
X0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIGNvbmN1cnJlbnRBcHBseShzaXplX3QgaXRlcmF0
aW9ucywgY29uc3Qgc3RkOjpmdW5jdGlvbjx2b2lkIChzaXplX3QgaW5kZXgpPiYpOwogCi0jaWYg
UExBVEZPUk0oR1RLKQotICAgIFJ1bkxvb3AmIHJ1bkxvb3AoKSBjb25zdCB7IHJldHVybiAqbV9y
dW5Mb29wOyB9Ci0jZWxpZiBQTEFURk9STShFRkwpCisjaWYgUExBVEZPUk0oRUZMKQogICAgIHZv
aWQgcmVnaXN0ZXJTb2NrZXRFdmVudEhhbmRsZXIoaW50LCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+
KTsKICAgICB2b2lkIHVucmVnaXN0ZXJTb2NrZXRFdmVudEhhbmRsZXIoaW50KTsKKyNlbGlmIFVT
RShHTElCKQorICAgIFJ1bkxvb3AmIHJ1bkxvb3AoKSBjb25zdCB7IHJldHVybiAqbV9ydW5Mb29w
OyB9CiAjZWxpZiBPUyhEQVJXSU4pCiAgICAgZGlzcGF0Y2hfcXVldWVfdCBkaXNwYXRjaFF1ZXVl
KCkgY29uc3QgeyByZXR1cm4gbV9kaXNwYXRjaFF1ZXVlOyB9CiAjZW5kaWYKQEAgLTEwMiwxNSAr
MTAyLDE1IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIERXT1JEIFdJTkFQSSB1bnJlZ2lzdGVyV2Fp
dEFuZERlc3Ryb3lJdGVtQ2FsbGJhY2sodm9pZCogY29udGV4dCk7CiAjZW5kaWYKIAotI2lmIFBM
QVRGT1JNKEdUSykKKyNpZiBQTEFURk9STShFRkwpCisgICAgUmVmUHRyPERpc3BhdGNoUXVldWU+
IG1fZGlzcGF0Y2hRdWV1ZTsKKyNlbGlmIFVTRShHTElCKQogICAgIFRocmVhZElkZW50aWZpZXIg
bV93b3JrUXVldWVUaHJlYWQ7CiAgICAgTG9jayBtX2luaXRpYWxpemVSdW5Mb29wQ29uZGl0aW9u
TXV0ZXg7CiAgICAgQ29uZGl0aW9uIG1faW5pdGlhbGl6ZVJ1bkxvb3BDb25kaXRpb247CiAgICAg
UnVuTG9vcCogbV9ydW5Mb29wOwogICAgIExvY2sgbV90ZXJtaW5hdGVSdW5Mb29wQ29uZGl0aW9u
TXV0ZXg7CiAgICAgQ29uZGl0aW9uIG1fdGVybWluYXRlUnVuTG9vcENvbmRpdGlvbjsKLSNlbGlm
IFBMQVRGT1JNKEVGTCkKLSAgICBSZWZQdHI8RGlzcGF0Y2hRdWV1ZT4gbV9kaXNwYXRjaFF1ZXVl
OwogI2VsaWYgT1MoREFSV0lOKQogICAgIHN0YXRpYyB2b2lkIGV4ZWN1dGVGdW5jdGlvbih2b2lk
Kik7CiAgICAgZGlzcGF0Y2hfcXVldWVfdCBtX2Rpc3BhdGNoUXVldWU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV1RGL3d0Zi9ub25lL01haW5UaHJlYWROb25lLmNwcCBiL1NvdXJjZS9XVEYvd3RmL25v
bmUvTWFpblRocmVhZE5vbmUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmUzY2I2YmE2NTMyMmQ2MGY4MTI0ODI2
OGY1NmNlNjIzOWI0YTJkNDEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9ub25l
L01haW5UaHJlYWROb25lLmNwcApAQCAtMCwwICsxLDM5IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE2IEtvbnN0YW50aW4gVG9rYXZldiA8YW5udWxlbkB5YW5kZXgucnU+CisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJNYWluVGhyZWFkLmgiCisKK25hbWVzcGFjZSBXVEYgeworCit2b2lkIGluaXRpYWxp
emVNYWluVGhyZWFkUGxhdGZvcm0oKQoreworfQorCit2b2lkIHNjaGVkdWxlRGlzcGF0Y2hGdW5j
dGlvbnNPbk1haW5UaHJlYWQoKQoreworfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0
Zi9ub25lL1J1bkxvb3BOb25lLmNwcCBiL1NvdXJjZS9XVEYvd3RmL25vbmUvUnVuTG9vcE5vbmUu
Y3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjAyNTVjZmQ1NmU1OTVjMGJlYTAxMmZhNTlmYTk1M2ZlNzhlNTYzNmYK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9ub25lL1J1bkxvb3BOb25lLmNwcApA
QCAtMCwwICsxLDc1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEtvbnN0YW50aW4gVG9r
YXZldiA8YW5udWxlbkB5YW5kZXgucnU+CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJSdW5Mb29wLmgiCisK
K25hbWVzcGFjZSBXVEYgeworCitSdW5Mb29wOjpSdW5Mb29wKCkKK3sKK30KKworUnVuTG9vcDo6
flJ1bkxvb3AoKQoreworfQorCit2b2lkIFJ1bkxvb3A6OnJ1bigpCit7Cit9CisKK3ZvaWQgUnVu
TG9vcDo6c3RvcCgpCit7Cit9CisKK3ZvaWQgUnVuTG9vcDo6d2FrZVVwKCkKK3sKKyAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKK30KKworUnVuTG9vcDo6VGltZXJCYXNlOjpUaW1lckJhc2UoUnVu
TG9vcCYgcnVuTG9vcCkKKyAgICA6IG1fcnVuTG9vcChydW5Mb29wKQoreworfQorCitSdW5Mb29w
OjpUaW1lckJhc2U6On5UaW1lckJhc2UoKQoreworICAgIHN0b3AoKTsKK30KKwordm9pZCBSdW5M
b29wOjpUaW1lckJhc2U6OnN0YXJ0KGRvdWJsZSwgYm9vbCkKK3sKK30KKwordm9pZCBSdW5Mb29w
OjpUaW1lckJhc2U6OnN0b3AoKQoreworfQorCitib29sIFJ1bkxvb3A6OlRpbWVyQmFzZTo6aXNB
Y3RpdmUoKSBjb25zdAoreworICAgIHJldHVybiBmYWxzZTsKK30KKworfSAvLyBuYW1lc3BhY2Ug
V1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9ub25lL1dvcmtRdWV1ZU5vbmUuY3BwIGIv
U291cmNlL1dURi93dGYvbm9uZS9Xb3JrUXVldWVOb25lLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yYTZkNjc1
OGQ3OTY3YjM2NTY3NDVjZjgzN2U3MzBlMTA2NjA4M2Y2Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dURi93dGYvbm9uZS9Xb3JrUXVldWVOb25lLmNwcApAQCAtMCwwICsxLDQ1IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE2IEtvbnN0YW50aW4gVG9rYXZldiA8YW5udWxlbkB5YW5kZXgu
cnU+CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJXb3JrUXVldWUuaCIKKwordm9pZCBXb3JrUXVldWU6OnBs
YXRmb3JtSW5pdGlhbGl6ZShjb25zdCBjaGFyKiwgVHlwZSwgUU9TKQoreworfQorCit2b2lkIFdv
cmtRdWV1ZTo6cGxhdGZvcm1JbnZhbGlkYXRlKCkKK3sKK30KKwordm9pZCBXb3JrUXVldWU6OmRp
c3BhdGNoKHN0ZDo6ZnVuY3Rpb248dm9pZCgpPikKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKK30KKwordm9pZCBXb3JrUXVldWU6OmRpc3BhdGNoQWZ0ZXIoc3RkOjpjaHJvbm86Om5hbm9z
ZWNvbmRzLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4pCit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvY21ha2UvT3B0aW9uc0pTQ09ubHkuY21ha2UgYi9T
b3VyY2UvY21ha2UvT3B0aW9uc0pTQ09ubHkuY21ha2UKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjgxZGIyNThmZjdk
OGRjMDc4NGI1ZDU3MjAzNmVlNTQ4MmNhMDM2NAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9j
bWFrZS9PcHRpb25zSlNDT25seS5jbWFrZQpAQCAtMCwwICsxLDY2IEBACitmaW5kX3BhY2thZ2Uo
SUNVIFJFUVVJUkVEKQorZmluZF9wYWNrYWdlKFRocmVhZHMgUkVRVUlSRUQpCisKK3NldChQUk9K
RUNUX1ZFUlNJT05fTUFKT1IgMSkKK3NldChQUk9KRUNUX1ZFUlNJT05fTUlOT1IgMCkKK3NldChQ
Uk9KRUNUX1ZFUlNJT05fTUlDUk8gMCkKK3NldChQUk9KRUNUX1ZFUlNJT04gJHtQUk9KRUNUX1ZF
UlNJT05fTUFKT1J9LiR7UFJPSkVDVF9WRVJTSU9OX01JTk9SfS4ke1BST0pFQ1RfVkVSU0lPTl9N
SUNST30pCisKK1dFQktJVF9PUFRJT05fQkVHSU4oKQorV0VCS0lUX09QVElPTl9ERUZJTkUoRU5B
QkxFX1NUQVRJQ19KU0MgIldoZXRoZXIgdG8gYnVpbGQgSmF2YVNjcmlwdENvcmUgYXMgYSBzdGF0
aWMgbGlicmFyeS4iIFBVQkxJQyBPRkYpCitXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxV
RShFTkFCTEVfRlRMX0pJVCBQVUJMSUMgT04pCitXRUJLSVRfT1BUSU9OX0VORCgpCisKK3NldChB
TExfRVZFTlRMT09QX1RZUEVTCisgICAgR0xpYgorICAgIE5vbmUKKykKKworaWYgKFVOSVggQU5E
IE5PVCBBUFBMRSkKKyAgICBzZXQoREVGQVVMVF9FVkVOVExPT1BfVFlQRSAiR0xpYiIpCitlbHNl
ICgpCisgICAgIyBUT0RPOiBVc2UgbmF0aXZlIE1hYyBhbmQgV2luIGltcGxlbWVudGF0aW9ucwor
ICAgIHNldChERUZBVUxUX0VWRU5UTE9PUF9UWVBFICJOb25lIikKK2VuZGlmICgpCisKK3NldChF
VkVOVExPT1BfVFlQRSAke0RFRkFVTFRfRVZFTlRMT09QX1RZUEV9IENBQ0hFIFNUUklORyAiSW1w
bGVtZW50YXRpb24gb2YgZXZlbnQgbG9vcCB0byBiZSB1c2VkIGluIEphdmFTY3JpcHRDb3JlIChv
bmUgb2YgJHtBTExfRVZFTlRMT09QX1RZUEVTfSkiKQorCitzZXQoRU5BQkxFX1dFQktJVCBPRkYp
CitzZXQoRU5BQkxFX1dFQktJVDIgT0ZGKQorc2V0KEVOQUJMRV9BUElfVEVTVFMgT0ZGKQorCitp
ZiAoV1RGX0NQVV9YODYgT1IgV1RGX0NQVV9YODZfNjQpCisgICAgc2V0KFdURl9VU0VfVURJUzg2
IDEpCitlbmRpZiAoKQorCitpZiAoRU5BQkxFX1NUQVRJQ19KU0MpCisgICAgc2V0KEphdmFTY3Jp
cHRDb3JlX0xJQlJBUllfVFlQRSBTVEFUSUMpCitlbmRpZiAoKQorCitzdHJpbmcoVE9MT1dFUiAk
e0VWRU5UTE9PUF9UWVBFfSBMT1dFUkNBU0VfRVZFTlRMT09QX1RZUEUpCitpZiAoTE9XRVJDQVNF
X0VWRU5UTE9PUF9UWVBFIFNUUkVRVUFMICJnbGliIikKKyAgICBmaW5kX3BhY2thZ2UoR0xJQiAy
LjM2IFJFUVVJUkVEIENPTVBPTkVOVFMgZ2lvIGdvYmplY3QpCisgICAgU0VUX0FORF9FWFBPU0Vf
VE9fQlVJTEQoVVNFX0dMSUIgMSkKK2VuZGlmICgpCisKKyMgRnJvbSBPcHRpb25zR1RLLmNtYWtl
CitpZiAoQ01BS0VfTUFKT1JfVkVSU0lPTiBMRVNTIDMpCisgICAgIyBCZWZvcmUgQ01ha2UgMyBp
dCB3YXMgbmVjZXNzYXJ5IHRvIHVzZSBhIGJ1aWxkIHNjcmlwdCBpbnN0ZWFkIG9mIHVzaW5nIGNt
YWtlIC0tYnVpbGQgZGlyZWN0bHkKKyAgICAjIHRvIHByZXNlcnZlIGNvbG9ycyBhbmQgcHJldHR5
LXByaW50aW5nLgorCisgICAgYnVpbGRfY29tbWFuZChDT01NQU5EX0xJTkVfVE9fQlVJTEQpCisg
ICAgIyBidWlsZF9jb21tYW5kIHVuY29uZGl0aW9uYWxseSBhZGRzIC1pIChpZ25vcmUgZXJyb3Jz
KSBmb3IgbWFrZSwgYW5kIHRoZXJlJ3MKKyAgICAjIG5vIHJlYXNvbmFibGUgd2F5IHRvIHR1cm4g
dGhhdCBvZmYsIHNvIHdlIGp1c3QgcmVwbGFjZSBpdCB3aXRoIC1rLCB3aGljaCBoYXMKKyAgICAj
IHRoZSBzYW1lIGVmZmVjdCwgZXhjZXB0IHRoYXQgdGhlIHJldHVybiBjb2RlIHdpbGwgaW5kaWNh
dGUgdGhhdCBhbiBlcnJvciBvY2N1cnJlZC4KKyAgICAjIFNlZTogaHR0cDovL3d3dy5jbWFrZS5v
cmcvY21ha2UvaGVscC92My4wL2NvbW1hbmQvYnVpbGRfY29tbWFuZC5odG1sCisgICAgc3RyaW5n
KFJFUExBQ0UgIiAtaSIgIiAtayIgQ09NTUFORF9MSU5FX1RPX0JVSUxEICR7Q09NTUFORF9MSU5F
X1RPX0JVSUxEfSkKKyAgICBmaWxlKFdSSVRFCisgICAgICAgICR7Q01BS0VfQklOQVJZX0RJUn0k
e0NNQUtFX0ZJTEVTX0RJUkVDVE9SWX0vYnVpbGQuc2gKKyAgICAgICAgIiMhL2Jpbi9zaFxuIgor
ICAgICAgICAiJHtDT01NQU5EX0xJTkVfVE9fQlVJTER9ICRAIgorICAgICkKKyAgICBmaWxlKENP
UFkgJHtDTUFLRV9CSU5BUllfRElSfSR7Q01BS0VfRklMRVNfRElSRUNUT1JZfS9idWlsZC5zaAor
ICAgICAgICBERVNUSU5BVElPTiAke0NNQUtFX0JJTkFSWV9ESVJ9CisgICAgICAgIEZJTEVfUEVS
TUlTU0lPTlMgT1dORVJfUkVBRCBPV05FUl9XUklURSBPV05FUl9FWEVDVVRFIEdST1VQX1JFQUQg
R1JPVVBfRVhFQ1VURQorICAgICkKK2VuZGlmICgpCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VM
b2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZGU3NDBkMDY4ZTNkZjIyMWIxYzUzNmZlZjAzYWM2
ZDFmNTU1ZjM0NC4uMjcwZjg2OTRlMTY2OGZiYTM1NDI3MTYxNzllYWE5MWVmNWQwM2RlYSAxMDA2
NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDIzIEBACisyMDE2LTAyLTIxICBLb25zdGFudGluIFRva2FyZXYgIDxhbm51bGVuQHlhbmRleC5y
dT4KKworICAgICAgICBBZGRlZCBuZXcgcG9ydCBKU0NPbmx5LgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU0NTEyCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwb3J0IGFsbG93cyB0byBidWlsZCBK
YXZhU2NyaXB0Q29yZSBlbmdpbmUgd2l0aCBtaW5pbWFsCisgICAgICAgIGRlcGVuZGVuY2llcy4K
KworICAgICAgICAqIFNjcmlwdHMvYnVpbGQtanNjOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0
ZGlycy5wbToKKyAgICAgICAgKGFyZ3VtZW50c0ZvckNvbmZpZ3VyYXRpb24pOgorICAgICAgICAo
ZXhlY3V0YWJsZVByb2R1Y3REaXIpOgorICAgICAgICAoZGV0ZXJtaW5lUG9ydE5hbWUpOgorICAg
ICAgICAoaXNKU0NPbmx5KToKKyAgICAgICAgKHdyYXBwZXJQcmVmaXhJZk5lZWRlZCk6CisgICAg
ICAgIChnZW5lcmF0ZUJ1aWxkU3lzdGVtRnJvbUNNYWtlUHJvamVjdCk6CisgICAgICAgIChidWls
ZENNYWtlR2VuZXJhdGVkUHJvamVjdCk6CisKIDIwMTYtMDMtMTIgIERhdmlkIEtpbHplciAgPGRk
a2lsemVyQGFwcGxlLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OIChyMTc4NjE1KTogRml4IGlu
Y29ycmVjdCBjYXNlIGluIGluY2x1ZGVkIGhlYWRlciBmb3IgV2Vha1B0ci5jcHAKZGlmZiAtLWdp
dCBhL1Rvb2xzL1NjcmlwdHMvYnVpbGQtanNjIGIvVG9vbHMvU2NyaXB0cy9idWlsZC1qc2MKaW5k
ZXggZTQ0M2M3NDc2MmRjNTFhNzgyZjgxYmIwODRiYjQ0NGM2YzhmNmI4Yi4uMzFmNjBlZmM2OTEz
ODA0YzgyMDdlMjMyMjZiNWI1YjRhNjNkNTcwMyAxMDA3NTUKLS0tIGEvVG9vbHMvU2NyaXB0cy9i
dWlsZC1qc2MKKysrIGIvVG9vbHMvU2NyaXB0cy9idWlsZC1qc2MKQEAgLTQyLDcgKzQyLDcgQEAg
cHJvaGliaXRVbmtub3duUG9ydCgpOwogbXkgJHNob3VsZFJ1blN0YXRpY0FuYWx5emVyID0gMDsK
IG15ICRjb3ZlcmFnZVN1cHBvcnQgPSAwOwogbXkgJHNob3dIZWxwID0gMDsKLW15ICRmdGxKSVQg
PSBpbnQoaXNBcHBsZU1hY1dlYktpdCgpICYmICF3aWxsVXNlSU9TU2ltdWxhdG9yU0RLKCkgfHwg
aXNYODZfNjQoKSAmJiAoaXNHdGsoKSB8fCBpc0VmbCgpKSk7CitteSAkZnRsSklUID0gaW50KGlz
QXBwbGVNYWNXZWJLaXQoKSAmJiAhd2lsbFVzZUlPU1NpbXVsYXRvclNESygpIHx8IGlzWDg2XzY0
KCkgJiYgKGlzR3RrKCkgfHwgaXNFZmwoKSB8fCBpc0pTQ09ubHkoKSkpOwogbXkgJGZvcmNlQ0xv
b3AgPSAwOwogbXkgJGNsaSA9IDA7CiBteSAkbWFrZUFyZ3MgPSAiIjsKZGlmZiAtLWdpdCBhL1Rv
b2xzL1NjcmlwdHMvd2Via2l0ZGlycy5wbSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0ZGlycy5wbQpp
bmRleCAwNzk4YTI1ODJhOTI5N2ZiNjI5M2Y5NGE2ZWNkMTlmNWQ4ZDg3MzBmLi5mNzY2YTc1MzE1
OTc3NWRmZjNiZWEzZTg3ZDM1YzJhN2EwZGVmYmU4IDEwMDc1NQotLS0gYS9Ub29scy9TY3JpcHRz
L3dlYmtpdGRpcnMucG0KKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRkaXJzLnBtCkBAIC0xMDEs
NiArMTAxLDcgQEAgdXNlIGNvbnN0YW50IHsKICAgICBFZmwgICAgICA9PiAiRWZsIiwKICAgICBp
T1MgICAgICA9PiAiaU9TIiwKICAgICBNYWMgICAgICA9PiAiTWFjIiwKKyAgICBKU0NPbmx5ICA9
PiAiSlNDT25seSIsCiAgICAgV2luQ2Fpcm8gPT4gIldpbkNhaXJvIiwKICAgICBVbmtub3duICA9
PiAiVW5rbm93biIKIH07CkBAIC00NDgsNiArNDQ5LDcgQEAgc3ViIGFyZ3VtZW50c0ZvckNvbmZp
Z3VyYXRpb24oKQogICAgIHB1c2goQGFyZ3MsICctLTY0LWJpdCcpIGlmIChpc1dpbjY0KCkpOwog
ICAgIHB1c2goQGFyZ3MsICctLWd0aycpIGlmIGlzR3RrKCk7CiAgICAgcHVzaChAYXJncywgJy0t
ZWZsJykgaWYgaXNFZmwoKTsKKyAgICBwdXNoKEBhcmdzLCAnLS1qc2Mtb25seScpIGlmIGlzSlND
T25seSgpOwogICAgIHB1c2goQGFyZ3MsICctLXdpbmNhaXJvJykgaWYgaXNXaW5DYWlybygpOwog
ICAgIHB1c2goQGFyZ3MsICctLWluc3BlY3Rvci1mcm9udGVuZCcpIGlmIGlzSW5zcGVjdG9yRnJv
bnRlbmQoKTsKICAgICByZXR1cm4gQGFyZ3M7CkBAIC02NDQsNyArNjQ2LDcgQEAgc3ViIGV4ZWN1
dGFibGVQcm9kdWN0RGlyCiAgICAgbXkgJHByb2R1Y3REaXJlY3RvcnkgPSBwcm9kdWN0RGlyKCk7
CiAKICAgICBteSAkYmluYXJ5RGlyZWN0b3J5OwotICAgIGlmIChpc0VmbCgpIHx8IGlzR3RrKCkp
IHsKKyAgICBpZiAoaXNFZmwoKSB8fCBpc0d0aygpIHx8IGlzSlNDT25seSgpKSB7CiAgICAgICAg
ICRiaW5hcnlEaXJlY3RvcnkgPSAiYmluIjsKICAgICB9IGVsc2lmIChpc0FueVdpbmRvd3MoKSkg
ewogICAgICAgICAkYmluYXJ5RGlyZWN0b3J5ID0gaXNXaW42NCgpID8gImJpbjY0IiA6ICJiaW4z
MiI7CkBAIC0xMDQ1LDYgKzEwNDcsNyBAQCBzdWIgZGV0ZXJtaW5lUG9ydE5hbWUoKQogICAgIG15
ICVhcmdUb1BvcnROYW1lID0gKAogICAgICAgICBlZmwgPT4gRWZsLAogICAgICAgICBndGsgPT4g
R1RLLAorICAgICAgICAnanNjLW9ubHknID0+IEpTQ09ubHksCiAgICAgICAgIHdpbmNhaXJvID0+
IFdpbkNhaXJvCiAgICAgKTsKIApAQCAtMTA3NSw2ICsxMDc4LDcgQEAgc3ViIGRldGVybWluZVBv
cnROYW1lKCkKICAgICAgICAgICAgIG15ICRwb3J0c0Nob2ljZSA9IGpvaW4gIlxuXHQiLCBxdygK
ICAgICAgICAgICAgICAgICAtLWVmbAogICAgICAgICAgICAgICAgIC0tZ3RrCisgICAgICAgICAg
ICAgICAgLS1qc2Mtb25seQogICAgICAgICAgICAgKTsKICAgICAgICAgICAgIGRpZSAiUGxlYXNl
IHNwZWNpZnkgd2hpY2ggV2ViS2l0IHBvcnQgdG8gYnVpbGQgdXNpbmcgb25lIG9mIHRoZSBmb2xs
b3dpbmcgb3B0aW9uczoiCiAgICAgICAgICAgICAgICAgLiAiXG5cdCRwb3J0c0Nob2ljZVxuIjsK
QEAgLTExMDIsNiArMTEwNiwxMSBAQCBzdWIgaXNHdGsoKQogICAgIHJldHVybiBwb3J0TmFtZSgp
IGVxIEdUSzsKIH0KIAorc3ViIGlzSlNDT25seSgpCit7CisgICAgcmV0dXJuIHBvcnROYW1lKCkg
ZXEgSlNDT25seTsKK30KKwogIyBEZXRlcm1pbmUgaWYgdGhpcyBpcyBkZWJpYW4sIHVidW50dSwg
bGluc3BpcmUsIG9yIHNvbWV0aGluZyBzaW1pbGFyLgogc3ViIGlzRGViaWFuQmFzZWQoKQogewpA
QCAtMTgzMSw3ICsxODQwLDcgQEAgc3ViIGlzQ2FjaGVkQXJndW1lbnRmaWxlT3V0T2ZEYXRlKCRA
KQogCiBzdWIgd3JhcHBlclByZWZpeElmTmVlZGVkKCkKIHsKLSAgICBpZiAoaXNBbnlXaW5kb3dz
KCkpIHsKKyAgICBpZiAoaXNBbnlXaW5kb3dzKCkgfHwgaXNKU0NPbmx5KCkpIHsKICAgICAgICAg
cmV0dXJuICgpOwogICAgIH0KICAgICBpZiAoaXNBcHBsZU1hY1dlYktpdCgpKSB7CkBAIC0xOTg0
LDggKzE5OTMsOCBAQCBzdWIgZ2VuZXJhdGVCdWlsZFN5c3RlbUZyb21DTWFrZVByb2plY3QKICAg
ICAgICAgcHVzaCBAYXJncywgJy1HICJWaXN1YWwgU3R1ZGlvIDE0IDIwMTUgV2luNjQiJzsKICAg
ICB9CiAKLSAgICAjIEdUSysgaGFzIGEgcHJvZHVjdGlvbiBtb2RlLCBidXQgYnVpbGQtd2Via2l0
IHNob3VsZCBhbHdheXMgdXNlIGRldmVsb3BlciBtb2RlLgotICAgIHB1c2ggQGFyZ3MsICItRERF
VkVMT1BFUl9NT0RFPU9OIiBpZiBpc0VmbCgpIHx8IGlzR3RrKCk7CisgICAgIyBTb21lIHBvcnRz
IGhhdmUgcHJvZHVjdGlvbiBtb2RlLCBidXQgYnVpbGQtd2Via2l0IHNob3VsZCBhbHdheXMgdXNl
IGRldmVsb3BlciBtb2RlLgorICAgIHB1c2ggQGFyZ3MsICItRERFVkVMT1BFUl9NT0RFPU9OIiBp
ZiBpc0VmbCgpIHx8IGlzR3RrKCkgfHwgaXNKU0NPbmx5KCk7CiAKICAgICAjIERvbid0IHdhcm4g
dmFyaWFibGVzIHdoaWNoIGFyZW4ndCB1c2VkIGJ5IGNtYWtlIHBvcnRzLgogICAgIHB1c2ggQGFy
Z3MsICItLW5vLXdhcm4tdW51c2VkLWNsaSI7CkBAIC0yMDIzLDggKzIwMzIsOCBAQCBzdWIgYnVp
bGRDTWFrZUdlbmVyYXRlZFByb2plY3QoJCkKICAgICBteSBAYXJncyA9ICgiLS1idWlsZCIsICRi
dWlsZFBhdGgsICItLWNvbmZpZyIsICRjb25maWcpOwogICAgIHB1c2ggQGFyZ3MsICgiLS0iLCAk
bWFrZUFyZ3MpIGlmICRtYWtlQXJnczsKIAotICAgICMgR1RLIGNhbiB1c2UgYSBidWlsZCBzY3Jp
cHQgdG8gcHJlc2VydmUgY29sb3JzIGFuZCBwcmV0dHktcHJpbnRpbmcuCi0gICAgaWYgKGlzR3Rr
KCkgJiYgLWUgIiRidWlsZFBhdGgvYnVpbGQuc2giKSB7CisgICAgIyBHVEsgYW5kIEpTQ09ubHkg
Y2FuIHVzZSBhIGJ1aWxkIHNjcmlwdCB0byBwcmVzZXJ2ZSBjb2xvcnMgYW5kIHByZXR0eS1wcmlu
dGluZy4KKyAgICBpZiAoKGlzR3RrKCkgfHwgaXNKU0NPbmx5KCkpICYmIC1lICIkYnVpbGRQYXRo
L2J1aWxkLnNoIikgewogICAgICAgICBjaGRpciAiJGJ1aWxkUGF0aCIgb3IgZGllOwogICAgICAg
ICAkY29tbWFuZCA9ICIkYnVpbGRQYXRoL2J1aWxkLnNoIjsKICAgICAgICAgQGFyZ3MgPSAoJG1h
a2VBcmdzKTsKZGlmZiAtLWdpdCBhL0NNYWtlTGlzdHMudHh0IGIvQ01ha2VMaXN0cy50eHQKaW5k
ZXggMGUwZWEyMzA5OWIyNzI1ZGJkN2E5OGVjYTM2NTlkZGYyMmM4N2FkZS4uYWJjMDFmNWZkNzJi
MDljNjUxMzFiMDNiNjllMDRiZGYyMzBjNjM2YiAxMDA2NDQKLS0tIGEvQ01ha2VMaXN0cy50eHQK
KysrIGIvQ01ha2VMaXN0cy50eHQKQEAgLTE5LDcgKzE5LDE0IEBAIGVuZGlmICgpCiAjIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCiAjIERldGVybWluZSB3aGljaCBwb3J0IHdpbGwgYmUgYnVpbHQKICMg
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KLXNldChBTExfUE9SVFMgRWZsIEdUSyBBcHBsZVdpbiBXaW5D
YWlybyBNYWMpCitzZXQoQUxMX1BPUlRTCisgICAgQXBwbGVXaW4KKyAgICBFZmwKKyAgICBHVEsK
KyAgICBKU0NPbmx5CisgICAgTWFjCisgICAgV2luQ2Fpcm8KKykKIHNldChQT1JUICJOT1BPUlQi
IENBQ0hFIFNUUklORyAiY2hvb3NlIHdoaWNoIFdlYktpdCBwb3J0IHRvIGJ1aWxkIChvbmUgb2Yg
JHtBTExfUE9SVFN9KSIpCiAKIGxpc3QoRklORCBBTExfUE9SVFMgJHtQT1JUfSBSRVQpCmRpZmYg
LS1naXQgYS9DaGFuZ2VMb2cgYi9DaGFuZ2VMb2cKaW5kZXggYzhkY2RmY2ZlNmQyMTJhNWZjNGMx
MTMwMWM3NDY0NjA4YjU5YWUyZC4uMjk4NWMyMjY1MGY1OWUxNDdlMjAwMWM5NmIyOTQzMjZlMWNj
NTc3ZSAxMDA2NDQKLS0tIGEvQ2hhbmdlTG9nCisrKyBiL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2
IEBACisyMDE2LTAyLTIxICBLb25zdGFudGluIFRva2FyZXYgIDxhbm51bGVuQHlhbmRleC5ydT4K
KworICAgICAgICBBZGRlZCBuZXcgcG9ydCBKU0NPbmx5LgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU0NTEyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwb3J0IGFsbG93cyB0byBidWlsZCBKYXZh
U2NyaXB0Q29yZSBlbmdpbmUgd2l0aCBtaW5pbWFsCisgICAgICAgIGRlcGVuZGVuY2llcy4KKwor
ICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIFNvdXJjZS9jbWFrZS9PcHRpb25z
SlNDT25seS5jbWFrZTogQWRkZWQuCisKIDIwMTYtMDMtMTIgIE15bGVzIEMuIE1heGZpZWxkICA8
bW1heGZpZWxkQGFwcGxlLmNvbT4KIAogICAgICAgICBEZWxldGUgZGVhZCBTVkcgRm9udCBjb2Rl
Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>