<?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>36375</bug_id>
          
          <creation_ts>2010-03-19 10:29:54 -0700</creation_ts>
          <short_desc>Worker&apos;s onerror handler should accept ErrorEvent as only argument instead of three arguments</short_desc>
          <delta_ts>2010-04-06 04:22:55 -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>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Yury Semikhatsky">yurys</reporter>
          <assigned_to name="Yury Semikhatsky">yurys</assigned_to>
          <cc>abarth</cc>
    
    <cc>atwilson</cc>
    
    <cc>caseq</cc>
    
    <cc>dglazkov</cc>
    
    <cc>dimich</cc>
    
    <cc>eric</cc>
    
    <cc>fishd</cc>
    
    <cc>jianli</cc>
    
    <cc>levin</cc>
    
    <cc>ossy</cc>
    
    <cc>pfeldman</cc>
    
    <cc>sam</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>201917</commentid>
    <comment_count>0</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2010-03-19 10:29:54 -0700</bug_when>
    <thetext>According to the spec (http://www.whatwg.org/specs/web-workers/current-work/#runtime-script-errors):
WorkerGlobalScope object&apos;s onerror attribute is an EventListener that is supposed to be invoked with ErrorEvent instance. In the current implementation onerror attribute is supposed to be a function that accepts three params(matching fields of ErrorEvent). Once this is fixed we could try and use EventListener::handleEvent for reporting the error and get rid of EventListener::reportError.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>203025</commentid>
    <comment_count>1</comment_count>
      <attachid>51418</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2010-03-23 06:51:15 -0700</bug_when>
    <thetext>Created attachment 51418
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>203026</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-03-23 06:53:28 -0700</bug_when>
    <thetext>Attachment 51418 did not pass style-queue:

Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
WebCore/workers/WorkerContext.cpp:39:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 1 in 13 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>203027</commentid>
    <comment_count>3</comment_count>
      <attachid>51419</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2010-03-23 06:53:31 -0700</bug_when>
    <thetext>Created attachment 51419
patch

Removed commented code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>203030</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-03-23 06:58:54 -0700</bug_when>
    <thetext>Attachment 51419 did not pass style-queue:

Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
WebCore/workers/WorkerContext.cpp:39:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 1 in 13 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>203040</commentid>
    <comment_count>5</comment_count>
      <attachid>51425</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2010-03-23 07:29:21 -0700</bug_when>
    <thetext>Created attachment 51425
patch

Fixed style errors.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>203137</commentid>
    <comment_count>6</comment_count>
    <who name="Jian Li">jianli</who>
    <bug_when>2010-03-23 12:03:44 -0700</bug_when>
    <thetext>I have talked with Hixie about WorkerGlobalScope.onerror and he pointed me to the following link as the reference for dealing with non-handled error:
  http://www.whatwg.org/specs/web-apps/current-work/#concept-error-nothandled

The link to the HTML 5 Web App spec says the following:

&quot;This section only applies to user agents that support scripting in general and JavaScript in particular.

Whenever an uncaught runtime script error occurs in one of the scripts associated with a Document, the user agent must report the error using the onerror event handler attribute of the script&apos;s global object. If the error is still not handled after this, then the error should be reported to the user.

When the user agent is required to report an error error using the event handler attribute onerror, it must run these steps, after which the error is either handled or not handled:

If the value of onerror is a Function
The function must be invoked with three arguments. The three arguments passed to the function are all DOMStrings; the first must give the message that the UA is considering reporting, the second must give the absolute URL of the resource in which the error occurred, and the third must give the line number in that resource on which the error occurred.

If the function returns false, then the error is handled. Otherwise, the error is not handled.

Any uncaught exceptions thrown or errors caused by this function must be reported to the user immediately after the error that the function was called for, without using the report an error algorithm again.

Otherwise
The error is not handled.&quot;

Per my understanding, we want to treat onerror handling in WorkerGlobalScope same as in Document. If onerror is set to a function, we need to invoke it with 3 arguments.

Would you please ping Hixie to see if this is still true nowadays.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>203142</commentid>
    <comment_count>7</comment_count>
    <who name="Jian Li">jianli</who>
    <bug_when>2010-03-23 12:08:25 -0700</bug_when>
    <thetext>ErrorEvent interface defined in &quot;4.6 Runtime script errors&quot; is used to report the exception back to the worker object.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>203195</commentid>
    <comment_count>8</comment_count>
      <attachid>51425</attachid>
    <who name="Dmitry Titov">dimich</who>
    <bug_when>2010-03-23 13:57:24 -0700</bug_when>
    <thetext>Comment on attachment 51425
patch

Good catch Jian! I didn&apos;t realize as well the Workers simply &apos;borrow&apos; the onerror attribute semantics from &apos;window&apos;, for consistency. The spec could have been more explicit on this. Indeed, it seems the spec still implies the 3-argument function should be a value of the onerror attribute of a global scope object.
Yury, could you please clarify this? I&apos;m removing r? from the patch for now..</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>205918</commentid>
    <comment_count>9</comment_count>
      <attachid>52016</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2010-03-30 02:43:27 -0700</bug_when>
    <thetext>Created attachment 52016
patch

According to Hixie WorkerGlobalScope.onerror should be a 3-argument function for consistency with window.onerror API. I changed the code. Now it provides custom binding for onerror event listener in worker context(probably I should change this bug title or submit this patch in a new bug then).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>205921</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-03-30 02:49:36 -0700</bug_when>
    <thetext>Attachment 52016 did not pass style-queue:

Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
WebCore/bindings/js/JSWorkerContextErrorHandler.cpp:35:  Alphabetical sorting problem.  [build/include_order] [4]
WebCore/bindings/v8/V8WorkerContextErrorHandler.h:42:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
File not a recognized type to check. Skipping: &quot;WebCore/WebCore.pro&quot;
WebCore/bindings/js/JSWorkerContextErrorHandler.h:38:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
File not a recognized type to check. Skipping: &quot;WebCore/WebCore.gypi&quot;
File not a recognized type to check. Skipping: &quot;WebCore/WebCore.xcodeproj/project.pbxproj&quot;
Total errors found: 3 in 20 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>205923</commentid>
    <comment_count>11</comment_count>
      <attachid>52018</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2010-03-30 03:04:09 -0700</bug_when>
    <thetext>Created attachment 52018
patch

Fixed errors found by style checker, added new files to some other build files.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>206574</commentid>
    <comment_count>12</comment_count>
    <who name="Jian Li">jianli</who>
    <bug_when>2010-03-31 10:39:18 -0700</bug_when>
    <thetext>Introducing a new subclass V8WorkerContextErrorHandler that derives from V8WorkerContextEventListener is quite confusing and more complicated. Can we merge the logic in V8WorkerContextErrorHandler::callListenerFunction into V8WorkerContextEventListener::callListenerFunction? We can check if event is ErrrorEvent or not and then dispatch the function with right parameters accordingly. For example,
    if (event-&gt;isErrorEvent()) {
        ...
    } else {
        ...
    }

We need to do the similar thing for JSC bindings. In this way, we do not need to change the code generator scripts.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>207052</commentid>
    <comment_count>13</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2010-04-01 01:25:58 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; Introducing a new subclass V8WorkerContextErrorHandler that derives from
&gt; V8WorkerContextEventListener is quite confusing and more complicated. Can we
&gt; merge the logic in V8WorkerContextErrorHandler::callListenerFunction into
&gt; V8WorkerContextEventListener::callListenerFunction? We can check if event is
&gt; ErrrorEvent or not and then dispatch the function with right parameters
&gt; accordingly. For example,
&gt;     if (event-&gt;isErrorEvent()) {
&gt;         ...
&gt;     } else {
&gt;         ...
&gt;     }
&gt; 
According to http://www.whatwg.org/specs/web-apps/current-work/#event-handler-attributes:

Parameter list FormalParameterList
If the attribute is the onerror attribute of the Window object
Let the function have three arguments, named event, source, and fileno.
Otherwise
Let the function have a single argument called event.

so always treating onerror handler as ternary function would break other onerror handlers(e.g. Worker.onerror) which are regular EventListeners accepting single ErrorEvent argument.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>207840</commentid>
    <comment_count>14</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2010-04-02 06:09:27 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; (In reply to comment #12)
&gt; &gt; Introducing a new subclass V8WorkerContextErrorHandler that derives from
&gt; &gt; V8WorkerContextEventListener is quite confusing and more complicated. Can we
&gt; &gt; merge the logic in V8WorkerContextErrorHandler::callListenerFunction into
&gt; &gt; V8WorkerContextEventListener::callListenerFunction? We can check if event is
&gt; &gt; ErrrorEvent or not and then dispatch the function with right parameters
&gt; &gt; accordingly. For example,
&gt; &gt;     if (event-&gt;isErrorEvent()) {
&gt; &gt;         ...
&gt; &gt;     } else {
&gt; &gt;         ...
&gt; &gt;     }
&gt; &gt; 
&gt; According to
&gt; http://www.whatwg.org/specs/web-apps/current-work/#event-handler-attributes:
&gt; 
&gt; Parameter list FormalParameterList
&gt; If the attribute is the onerror attribute of the Window object
&gt; Let the function have three arguments, named event, source, and fileno.
&gt; Otherwise
&gt; Let the function have a single argument called event.
&gt; 
&gt; so always treating onerror handler as ternary function would break other
&gt; onerror handlers(e.g. Worker.onerror) which are regular EventListeners
&gt; accepting single ErrorEvent argument.
ping</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>207983</commentid>
    <comment_count>15</comment_count>
      <attachid>52018</attachid>
    <who name="Andrew Wilson">atwilson</who>
    <bug_when>2010-04-02 11:55:30 -0700</bug_when>
    <thetext>Comment on attachment 52018
patch

So I&apos;m a little foggy on exactly why we&apos;re adding a custom WorkerContextErrorHandler class, especially since the functionality in this class doesn&apos;t seem to be exercised by the tests currently. This patch seems to fix two completely distinct problems: throwing an error in the onerror handler, and some other problem related to parameters passed to an onerror handler.

Can you add a test that fails under current WebKit, but which passes with your new error handler support included? I think that would make it clear exactly what case this patch is addressing. My main concern is that I think the intent of the spec is that error reporting from WorkerContext should be identical to error reporting from window context, and yet I don&apos;t see any special-case code like this being invoked for DOMWindow errors, so either we&apos;re reading the spec incorrectly (or the spec is wrong) or we need to make a similar change to DOMWindow.

&gt; +++ b/WebCore/bindings/scripts/CodeGeneratorJS.pm
&gt; @@ -1484,7 +1484,12 @@ sub GenerateImplementation
&gt; +                            if ($interfaceName eq &quot;WorkerContext&quot; and $name eq &quot;onerror&quot;) {
&gt; +                                $implIncludes{&quot;JSWorkerContextErrorHandler.h&quot;} = 1;
&gt; +                                push(@implContent, &quot;    imp-&gt;set$implSetterFunctionName(createJSWorkerContextErrorHandler(exec, value, thisObject));\n&quot;);

Does this (and the V8 code generator change) do the right thing for SharedWorkers also? You should add a test for this case for SharedWorkers to verify.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>207993</commentid>
    <comment_count>16</comment_count>
    <who name="Andrew Wilson">atwilson</who>
    <bug_when>2010-04-02 12:16:37 -0700</bug_when>
    <thetext>Jian explained to me that this patch has morphed to be primarily code cleanup with no functionality change (other than the fix for throwing exceptions from an onerror handler). If so, then shared-worker-script-error.html is probably sufficient for testing this change.

I would update the ChangeLog to make it clear that we&apos;re just cleaning up the code by moving reportError() out of the general EventListener class since it&apos;s only used from Worker context (I guess - I spent a few minutes trying to figure out how window reports its errors but failed) but that no other functionality changes are happening.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>208061</commentid>
    <comment_count>17</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2010-04-02 14:07:54 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; (From update of attachment 52018 [details])
&gt; So I&apos;m a little foggy on exactly why we&apos;re adding a custom
&gt; WorkerContextErrorHandler class, especially since the functionality in this
&gt; class doesn&apos;t seem to be exercised by the tests currently. This patch seems to
&gt; fix two completely distinct problems: throwing an error in the onerror handler,
&gt; and some other problem related to parameters passed to an onerror handler.
&gt; 
The change to the parameters passing I was going to make at the beginning turned out to contradict to the spec so I rolled it out.

&gt; Can you add a test that fails under current WebKit, but which passes with your
&gt; new error handler support included?
fast/workers/resources/worker-script-error.html should test this. I modified it so that it expects exception in onerror handler to be reported to the Worker object(it&apos;s already implemented in Chromium). Tell me if that is not enough.

&gt; My main concern is that I think the intent
&gt; of the spec is that error reporting from WorkerContext should be identical to
&gt; error reporting from window context, and yet I don&apos;t see any special-case code
&gt; like this being invoked for DOMWindow errors, so either we&apos;re reading the spec
&gt; incorrectly (or the spec is wrong) or we need to make a similar change to
&gt; DOMWindow.
&gt; 
You don&apos;t see any specific code for DOMWindow onerror listeners because onerror is not implemented for DOMWindow object in WebKit. Approach with V8WorkerContextErrorHandler can be easily extended to support same binding for DOMWindow once it supports onerror listeners.


&gt; &gt; +++ b/WebCore/bindings/scripts/CodeGeneratorJS.pm
&gt; &gt; @@ -1484,7 +1484,12 @@ sub GenerateImplementation
&gt; &gt; +                            if ($interfaceName eq &quot;WorkerContext&quot; and $name eq &quot;onerror&quot;) {
&gt; &gt; +                                $implIncludes{&quot;JSWorkerContextErrorHandler.h&quot;} = 1;
&gt; &gt; +                                push(@implContent, &quot;    imp-&gt;set$implSetterFunctionName(createJSWorkerContextErrorHandler(exec, value, thisObject));\n&quot;);
&gt; 
&gt; Does this (and the V8 code generator change) do the right thing for
&gt; SharedWorkers also? You should add a test for this case for SharedWorkers to
&gt; verify.
Yes, it does work for shared workers too. fast/workers/resources/shared-worker-script-error.js should cover this case.

(In reply to comment #16)
&gt; Jian explained to me that this patch has morphed to be primarily code cleanup
&gt; with no functionality change (other than the fix for throwing exceptions from
&gt; an onerror handler). 
That&apos;s right.

&gt; I would update the ChangeLog to make it clear that we&apos;re just cleaning up the
&gt; code by moving reportError() out of the general EventListener class since it&apos;s
&gt; only used from Worker context (I guess - I spent a few minutes trying to figure
&gt; out how window reports its errors but failed) but that no other functionality
&gt; changes are happening.
Ok, I tried to put this information into WebCore/ChangeLog but it must be rephrased in a more clear way. I&apos;ll update ChangeLogs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>208453</commentid>
    <comment_count>18</comment_count>
      <attachid>52529</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2010-04-05 06:08:23 -0700</bug_when>
    <thetext>Created attachment 52529
patch

Changed ChangeLog entry.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>208515</commentid>
    <comment_count>19</comment_count>
    <who name="Andrew Wilson">atwilson</who>
    <bug_when>2010-04-05 09:44:37 -0700</bug_when>
    <thetext>One small nit: It looks like people are trying to keep the changelog entries &lt; 150 characters wide, so you might want to do the same with your new changelog entry. I don&apos;t know if there&apos;s an explicit style rule about this, though, so I&apos;m not sure if it&apos;s worth changing.

I think this change looks good otherwise. It&apos;ll be great to have the error reporting working properly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>208516</commentid>
    <comment_count>20</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2010-04-05 09:47:16 -0700</bug_when>
    <thetext>(In reply to comment #19)
&gt; One small nit: It looks like people are trying to keep the changelog entries &lt;
&gt; 150 characters wide, so you might want to do the same with your new changelog
&gt; entry. I don&apos;t know if there&apos;s an explicit style rule about this, though, so
&gt; I&apos;m not sure if it&apos;s worth changing.
&gt; 
&gt; I think this change looks good otherwise. It&apos;ll be great to have the error
&gt; reporting working properly.
So, is it r+?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>208518</commentid>
    <comment_count>21</comment_count>
    <who name="Andrew Wilson">atwilson</who>
    <bug_when>2010-04-05 09:50:00 -0700</bug_when>
    <thetext>I don&apos;t have the reviewer bit yet, so I can&apos;t r+. We&apos;ll have to wait for dimich to chime in.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>208519</commentid>
    <comment_count>22</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2010-04-05 09:51:23 -0700</bug_when>
    <thetext>(In reply to comment #21)
&gt; I don&apos;t have the reviewer bit yet, so I can&apos;t r+. We&apos;ll have to wait for dimich
&gt; to chime in.
Oh, that&apos;s not a problem, I&apos;ll ask pfeldman to look at it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>208520</commentid>
    <comment_count>23</comment_count>
      <attachid>52529</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2010-04-05 09:56:00 -0700</bug_when>
    <thetext>Comment on attachment 52529
patch

Looks sane.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>208523</commentid>
    <comment_count>24</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2010-04-05 10:00:32 -0700</bug_when>
    <thetext>Committing to http://svn.webkit.org/repository/webkit/trunk ...
	C	WebCore/bindings/v8/V8WorkerContextEventListener.h =&gt; WebCore/bindings/js/JSWorkerContextErrorHandler.h
	C	WebCore/bindings/v8/V8WorkerContextEventListener.h =&gt; WebCore/bindings/v8/V8WorkerContextErrorHandler.cpp
	C	WebCore/bindings/v8/V8WorkerContextEventListener.h =&gt; WebCore/bindings/v8/V8WorkerContextErrorHandler.h
	M	LayoutTests/ChangeLog
	M	LayoutTests/fast/workers/worker-script-error-expected.txt
	M	LayoutTests/fast/workers/worker-script-error.html
	M	WebCore/Android.jscbindings.mk
	M	WebCore/ChangeLog
	M	WebCore/GNUmakefile.am
	M	WebCore/WebCore.gypi
	M	WebCore/WebCore.pro
	M	WebCore/WebCore.vcproj/WebCore.vcproj
	M	WebCore/WebCore.xcodeproj/project.pbxproj
	M	WebCore/bindings/js/JSEventListener.cpp
	M	WebCore/bindings/js/JSEventListener.h
	A	WebCore/bindings/js/JSWorkerContextErrorHandler.cpp
	M	WebCore/bindings/scripts/CodeGeneratorJS.pm
	M	WebCore/bindings/scripts/CodeGeneratorV8.pm
	M	WebCore/bindings/v8/V8WorkerContextEventListener.cpp
	M	WebCore/bindings/v8/V8WorkerContextEventListener.h
	M	WebCore/dom/EventListener.h
	M	WebCore/workers/WorkerContext.cpp
	M	WebCore/workers/WorkerContext.h
Committed r57078</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>208537</commentid>
    <comment_count>25</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2010-04-05 10:19:21 -0700</bug_when>
    <thetext>Rolling out the change since it broke WebKit Windows build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>208561</commentid>
    <comment_count>26</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-04-05 10:43:14 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/57078 might have broken Leopard Intel Release (Tests), Leopard Intel Debug (Tests), and SnowLeopard Intel Release (Tests)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>208567</commentid>
    <comment_count>27</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-04-05 10:55:15 -0700</bug_when>
    <thetext>I do not understand why this broke all the builds like this.  I suspect that our build system is somehow broken such that earlier changes to HTMLProgressElement did not get re-built until just now?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>208579</commentid>
    <comment_count>28</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2010-04-05 11:05:51 -0700</bug_when>
    <thetext>(In reply to comment #27)
&gt; I do not understand why this broke all the builds like this.  I suspect that
&gt; our build system is somehow broken such that earlier changes to
&gt; HTMLProgressElement did not get re-built until just now?

That might be the case, I don&apos;t see how this change could  broke fast/dom/prototype-inheritance-2.html.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>208582</commentid>
    <comment_count>29</comment_count>
      <attachid>52529</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-04-05 11:10:45 -0700</bug_when>
    <thetext>Comment on attachment 52529
patch

The &quot;break&quot; i&apos;m referring to is the 5 layout tests.  The compile failures were definitely caused by this bug

Marking r- since this was rolled out.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>208587</commentid>
    <comment_count>30</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-04-05 11:16:18 -0700</bug_when>
    <thetext>HTMLProgressElement was added 3 weeks ago:
http://trac.webkit.org/changeset/55980/trunk/WebCore/page/DOMWindow.idl

Why it&apos;s just now showing up in builds after this change I do not understand.  CCing Sam Weinig who is a JS bindings expert.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>208596</commentid>
    <comment_count>31</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-04-05 11:31:24 -0700</bug_when>
    <thetext>&gt; Why it&apos;s just now showing up in builds after this change I do not understand. 
&gt; CCing Sam Weinig who is a JS bindings expert.

The define changed recently.  I&apos;ve update the expectations, but we still need to fix the dependencies.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>208607</commentid>
    <comment_count>32</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-04-05 11:47:58 -0700</bug_when>
    <thetext>Filed bug 37102 about the build system failure.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>208945</commentid>
    <comment_count>33</comment_count>
      <attachid>52616</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2010-04-06 01:40:48 -0700</bug_when>
    <thetext>Created attachment 52616
patch

Added JSWorkerContextErrorHandler.cpp to JSBindingsAllInOne.cpp to fix WebKit Windows build. Layout test failures detected by build bots turned unrelated to this patch so it&apos;s the only modification to the previous patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>208949</commentid>
    <comment_count>34</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2010-04-06 02:20:10 -0700</bug_when>
    <thetext>Committing to http://svn.webkit.org/repository/webkit/trunk ...
	C	WebCore/bindings/v8/V8WorkerContextEventListener.h =&gt; WebCore/bindings/js/JSWorkerContextErrorHandler.h
	C	WebCore/bindings/v8/V8WorkerContextEventListener.h =&gt; WebCore/bindings/v8/V8WorkerContextErrorHandler.cpp
	C	WebCore/bindings/v8/V8WorkerContextEventListener.h =&gt; WebCore/bindings/v8/V8WorkerContextErrorHandler.h
	M	LayoutTests/ChangeLog
	M	LayoutTests/fast/workers/worker-script-error-expected.txt
	M	LayoutTests/fast/workers/worker-script-error.html
	M	WebCore/Android.jscbindings.mk
	M	WebCore/ChangeLog
	M	WebCore/GNUmakefile.am
	M	WebCore/WebCore.gypi
	M	WebCore/WebCore.pro
	M	WebCore/WebCore.vcproj/WebCore.vcproj
	M	WebCore/WebCore.xcodeproj/project.pbxproj
	M	WebCore/bindings/js/JSBindingsAllInOne.cpp
	M	WebCore/bindings/js/JSEventListener.cpp
	M	WebCore/bindings/js/JSEventListener.h
	A	WebCore/bindings/js/JSWorkerContextErrorHandler.cpp
	M	WebCore/bindings/scripts/CodeGeneratorJS.pm
	M	WebCore/bindings/scripts/CodeGeneratorV8.pm
	M	WebCore/bindings/v8/V8WorkerContextEventListener.cpp
	M	WebCore/bindings/v8/V8WorkerContextEventListener.h
	M	WebCore/dom/EventListener.h
	M	WebCore/workers/WorkerContext.cpp
	M	WebCore/workers/WorkerContext.h
Committed r57134</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>208980</commentid>
    <comment_count>35</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2010-04-06 03:49:08 -0700</bug_when>
    <thetext>Buildfix for --minimal build landed: http://trac.webkit.org/changeset/57141</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>208984</commentid>
    <comment_count>36</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-04-06 04:22:55 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/57141 might have broken SnowLeopard Intel Release (Tests)</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>51418</attachid>
            <date>2010-03-23 06:51:15 -0700</date>
            <delta_ts>2010-03-23 06:53:31 -0700</delta_ts>
            <desc>patch</desc>
            <filename>worker-report-error.patch</filename>
            <type>text/plain</type>
            <size>13834</size>
            <attacher name="Yury Semikhatsky">yurys</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBmMGY0ZTM3Li4wMzY3ZjU4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTAtMDMt
MjMgIFl1cnkgU2VtaWtoYXRza3kgIDx5dXJ5c0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWFrZSBvbmVycm9yIGhhbmRsZXIg
aW4gd29ya2VyIGNvbnRleHQgYWNjZXB0IHNpbmdsZSBFcnJvckV2ZW50IGFyZ3VtZW50IHJhdGhl
ciB0aGFuIHRocmVlIHNlcGFyYXRlIGFyZ3VtZW50cy4KKworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzYzNzUKKworICAgICAgICAqIGZhc3Qvd29ya2Vy
cy9yZXNvdXJjZXMvc2hhcmVkLXdvcmtlci1zY3JpcHQtZXJyb3IuanM6CisgICAgICAgIChoYW5k
bGVNZXNzYWdlLmVsc2Uub25lcnJvcik6CisgICAgICAgICogZmFzdC93b3JrZXJzL3Jlc291cmNl
cy93b3JrZXItc2NyaXB0LWVycm9yLWhhbmRsZWQuanM6CisgICAgICAgIChvbmVycm9yKToKKyAg
ICAgICAgKiBmYXN0L3dvcmtlcnMvd29ya2VyLXNjcmlwdC1lcnJvci1leHBlY3RlZC50eHQ6IEV4
Y2VwdGlvbiBpbiBvbmVycm9yIGhhbmRsZXIgaXMgbm93IHJlcG9ydGVkIHRvIHRoZSB1c2VyLgor
ICAgICAgICAqIGZhc3Qvd29ya2Vycy93b3JrZXItc2NyaXB0LWVycm9yLmh0bWw6CisKIDIwMTAt
MDMtMjMgIEZ1bWl0b3NoaSBVa2FpICA8dWthaUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVW5y
ZXZpZXdlZCwgcmVtb3ZlIGZsYWt5IHRhZyBpbiB3ZWJzb2NrZXQgdGVzdHMuCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvcmVzb3VyY2VzL3NoYXJlZC13b3JrZXItc2NyaXB0
LWVycm9yLmpzIGIvTGF5b3V0VGVzdHMvZmFzdC93b3JrZXJzL3Jlc291cmNlcy9zaGFyZWQtd29y
a2VyLXNjcmlwdC1lcnJvci5qcwppbmRleCA3YTRhNzBmLi4yMDRhNmYyIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvcmVzb3VyY2VzL3NoYXJlZC13b3JrZXItc2NyaXB0LWVy
cm9yLmpzCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy9yZXNvdXJjZXMvc2hhcmVkLXdv
cmtlci1zY3JpcHQtZXJyb3IuanMKQEAgLTExLDkgKzExLDkgQEAgZnVuY3Rpb24gaGFuZGxlTWVz
c2FnZShldmVudCwgcG9ydCkgewogICAgICAgICB9LCAxMDApOwogICAgICAgICBnZW5lcmF0ZUVy
cm9yKCk7ICAvLyBVbmRlZmluZWQgZnVuY3Rpb24gY2FsbAogICAgIH0gZWxzZSBpZiAoZXZlbnQu
ZGF0YSA9PSAiaGFuZGxlZEVycm9yIikgewotICAgICAgICBvbmVycm9yID0gZnVuY3Rpb24obWVz
c2FnZSwgdXJsLCBsaW5lbm8pIHsKLSAgICAgICAgICAgIHBvcnQucG9zdE1lc3NhZ2UoIlNVQ0NF
U1M6IGVycm9yIGhhbmRsZWQgdmlhIG9uZXJyb3I6ICIgKyBtZXNzYWdlKTsKLSAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgICAgb25lcnJvciA9IGZ1bmN0aW9uKGV2dCkgeworICAgICAg
ICAgICAgcG9ydC5wb3N0TWVzc2FnZSgiU1VDQ0VTUzogZXJyb3IgaGFuZGxlZCB2aWEgb25lcnJv
cjogIiArIGV2dC5tZXNzYWdlKTsKKyAgICAgICAgICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpOwog
ICAgICAgICB9OwogICAgICAgICBnZW5lcmF0ZUVycm9yKCk7ICAvLyBVbmRlZmluZWQgZnVuY3Rp
b24gY2FsbAogICAgIH0gZWxzZSB7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3dvcmtl
cnMvcmVzb3VyY2VzL3dvcmtlci1zY3JpcHQtZXJyb3ItaGFuZGxlZC5qcyBiL0xheW91dFRlc3Rz
L2Zhc3Qvd29ya2Vycy9yZXNvdXJjZXMvd29ya2VyLXNjcmlwdC1lcnJvci1oYW5kbGVkLmpzCmlu
ZGV4IDUwZDkwNzcuLmEyNmRjNTIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3Qvd29ya2Vy
cy9yZXNvdXJjZXMvd29ya2VyLXNjcmlwdC1lcnJvci1oYW5kbGVkLmpzCisrKyBiL0xheW91dFRl
c3RzL2Zhc3Qvd29ya2Vycy9yZXNvdXJjZXMvd29ya2VyLXNjcmlwdC1lcnJvci1oYW5kbGVkLmpz
CkBAIC0xLDcgKzEsNyBAQAotb25lcnJvciA9IGZ1bmN0aW9uKG1lc3NhZ2UsIHVybCwgbGluZW5v
KQorb25lcnJvciA9IGZ1bmN0aW9uKGV2dCkKIHsKLSAgICBwb3N0TWVzc2FnZSgib25lcnJvciBp
bnZva2VkIGZvciBhIHNjcmlwdCB0aGF0IGhhcyBzY3JpcHQgZXJyb3IgJyIgKyBtZXNzYWdlICsg
IicgYXQgbGluZSAiICsgbGluZW5vKTsKLSAgICByZXR1cm4gZmFsc2U7CisgICAgcG9zdE1lc3Nh
Z2UoIm9uZXJyb3IgaW52b2tlZCBmb3IgYSBzY3JpcHQgdGhhdCBoYXMgc2NyaXB0IGVycm9yICci
ICsgZXZ0Lm1lc3NhZ2UgKyAiJyBhdCBsaW5lICIgKyBldnQubGluZW5vKTsKKyAgICBldnQucHJl
dmVudERlZmF1bHQoKTsgLy8gICAgcmV0dXJuIGZhbHNlOwogfQogCiBmb28uYmFyID0gMDsKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy93b3JrZXItc2NyaXB0LWVycm9yLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy93b3JrZXItc2NyaXB0LWVycm9y
LWV4cGVjdGVkLnR4dAppbmRleCBkNTM1ZTdkLi4xMGFiMDQ5IDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9mYXN0L3dvcmtlcnMvd29ya2VyLXNjcmlwdC1lcnJvci1leHBlY3RlZC50eHQKKysrIGIv
TGF5b3V0VGVzdHMvZmFzdC93b3JrZXJzL3dvcmtlci1zY3JpcHQtZXJyb3ItZXhwZWN0ZWQudHh0
CkBAIC00LDYgKzQsNyBAQCBUZXN0IFdvcmtlciBzY3JpcHQgZXJyb3IgaGFuZGxpbmcgZnVuY3Rp
b25hbGl0eS4gU2hvdWxkIHByaW50IGEgc2VyaWVzIG9mIFBBU1MgbQogUEFTUzogb25lcnJvciBp
bnZva2VkIGZvciBhIHNjcmlwdCB0aGF0IGhhcyBpbnZhbGlkIHN5bnRheC4KIFBBU1M6IG9uZXJy
b3IgaW52b2tlZCBmb3IgYSBzY3JpcHQgdGhhdCBoYXMgc2NyaXB0IGVycm9yICdSZWZlcmVuY2VF
cnJvcjogQ2FuJ3QgZmluZCB2YXJpYWJsZTogZm9vJyBhdCBsaW5lIDEuCiBQQVNTOiBldmVudCBs
aXN0ZW5lciBpbnZva2VkIGZvciBhIHNjcmlwdCB0aGF0IGhhcyBzY3JpcHQgZXJyb3IgJ1JlZmVy
ZW5jZUVycm9yOiBDYW4ndCBmaW5kIHZhcmlhYmxlOiBmb28nIGF0IGxpbmUgMS4KK1BBU1M6IG9u
ZXJyb3IgaW52b2tlZCBmb3IgYSBzY3JpcHQgdGhhdCBoYXMgc2NyaXB0IGVycm9yICdSZWZlcmVu
Y2VFcnJvcjogQ2FuJ3QgZmluZCB2YXJpYWJsZTogYmFyJyBhdCBsaW5lIDMuCiBQQVNTOiBvbmVy
cm9yIGludm9rZWQgZm9yIGEgc2NyaXB0IHRoYXQgaGFzIHNjcmlwdCBlcnJvciAnUmVmZXJlbmNl
RXJyb3I6IENhbid0IGZpbmQgdmFyaWFibGU6IGZvbycgYXQgbGluZSA3LgogUEFTUzogb25lcnJv
ciBpbnZva2VkIGZvciBhIHNjcmlwdCB0aGF0IGhhcyBzY3JpcHQgZXJyb3IgJ1JlZmVyZW5jZUVy
cm9yOiBDYW4ndCBmaW5kIHZhcmlhYmxlOiBmb28nIGF0IGxpbmUgNy4KIFBBU1M6IG9uZXJyb3Ig
aW52b2tlZCBmb3IgYSBzY3JpcHQgdGhhdCBoYXMgc2NyaXB0IGVycm9yICdSZWZlcmVuY2VFcnJv
cjogQ2FuJ3QgZmluZCB2YXJpYWJsZTogZm9vJyBhdCBsaW5lIDcuCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9mYXN0L3dvcmtlcnMvd29ya2VyLXNjcmlwdC1lcnJvci5odG1sIGIvTGF5b3V0VGVz
dHMvZmFzdC93b3JrZXJzL3dvcmtlci1zY3JpcHQtZXJyb3IuaHRtbAppbmRleCBhZDk2Zjc2Li43
MTM5OWVmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvd29ya2VyLXNjcmlw
dC1lcnJvci5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy93b3JrZXItc2NyaXB0
LWVycm9yLmh0bWwKQEAgLTgxLDggKzgxLDEwIEBAIGZ1bmN0aW9uIHRlc3RFcnJvckluSGFuZGxp
bmdTY3JpcHRFcnJvcigpCiB7CiAgICAgdHJ5IHsKICAgICAgICAgdmFyIHdvcmtlciA9IG5ldyBX
b3JrZXIoInJlc291cmNlcy93b3JrZXItZXJyb3ItaW4taGFuZGxpbmctc2NyaXB0LWVycm9yLmpz
Iik7CisgICAgICAgIHZhciBjb3VudCA9IDA7CiAgICAgICAgIHdvcmtlci5vbmVycm9yID0gZnVu
Y3Rpb24oZXZ0KSB7CiAgICAgICAgICAgICBsb2coIlBBU1M6IG9uZXJyb3IgaW52b2tlZCBmb3Ig
YSBzY3JpcHQgdGhhdCBoYXMgc2NyaXB0IGVycm9yICciICsgZXZ0Lm1lc3NhZ2UgKyAiJyBhdCBs
aW5lICIgKyBldnQubGluZW5vICsgIi4iKTsKKyAgICAgICAgICAgIGlmICgrK2NvdW50ID09IDIp
CiAgICAgICAgICAgICBydW5OZXh0VGVzdCgpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgICAgICB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdl
TG9nCmluZGV4IDNkNzM2NjUuLmZhYjA3N2YgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9n
CisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTAtMDMtMjMgIFl1
cnkgU2VtaWtoYXRza3kgIDx5dXJ5c0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVHJlYXQgd29ya2VyJ3Mgb25lcnJvciBoYW5k
bGVyIGFzIGFuIEV2ZW50TGlzdGVuZXIoYXMgaXQgZGVzY3JpYmVkIGluIHRoZSBzcGVjKSBhbmQg
aW52b2tlIGl0IHdpdGggYSBzaW5nbGUgRXJyb3JFdmVudCBwYXJhbWV0ZXIgaW5zdGVhZCBvZiB0
aHJlZSBzZXBhcmF0ZSBhcmd1bWVudHMuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTM2Mzc1CisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0V2ZW50
TGlzdGVuZXIuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5oOgor
ICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4V29ya2VyQ29udGV4dEV2ZW50TGlzdGVuZXIuY3BwOgor
ICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4V29ya2VyQ29udGV4dEV2ZW50TGlzdGVuZXIuaDoKKyAg
ICAgICAgKiBkb20vRXZlbnRMaXN0ZW5lci5oOiBSZW1vdmUgRXZlbnRMaXN0ZW5lcjo6cmVwb3J0
RXJyb3Igd2hpY2ggaXMgb25seSB1c2VkIGZvciByZXBvcnRpbmcgd29ya2VyIGVycm9ycy4KKyAg
ICAgICAgKiB3b3JrZXJzL1dvcmtlckNvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29y
a2VyQ29udGV4dDo6V29ya2VyQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJDb250
ZXh0OjpyZXBvcnRFeGNlcHRpb24pOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyQ29udGV4dC5o
OgorCiAyMDEwLTAzLTIyICBQYXZlbCBGZWxkbWFuICA8cGZlbGRtYW5AY2hyb21pdW0ub3JnPgog
CiAgICAgICAgIFJldmlld2VkIGJ5IERhdmUgSHlhdHQuCmRpZmYgLS1naXQgYS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZl
bnRMaXN0ZW5lci5jcHAKaW5kZXggYmUwNDlkYi4uYjAwZDY1NCAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0V2ZW50TGlzdGVuZXIuY3BwCisrKyBiL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNFdmVudExpc3RlbmVyLmNwcApAQCAtMTMzLDQ3ICsxMzMsNiBAQCB2b2lkIEpTRXZlbnRM
aXN0ZW5lcjo6aGFuZGxlRXZlbnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0
aW9uQ29udGV4dAogICAgIH0KIH0KIAotYm9vbCBKU0V2ZW50TGlzdGVuZXI6OnJlcG9ydEVycm9y
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwg
Y29uc3QgU3RyaW5nJiB1cmwsIGludCBsaW5lTnVtYmVyKQotewotICAgIEpTTG9jayBsb2NrKFNp
bGVuY2VBc3NlcnRpb25zT25seSk7Ci0KLSAgICBKU09iamVjdCoganNGdW5jdGlvbiA9IHRoaXMt
PmpzRnVuY3Rpb24oY29udGV4dCk7Ci0gICAgaWYgKCFqc0Z1bmN0aW9uKQotICAgICAgICByZXR1
cm4gZmFsc2U7Ci0KLSAgICBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gdG9KU0RP
TUdsb2JhbE9iamVjdChjb250ZXh0LCBtX2lzb2xhdGVkV29ybGQuZ2V0KCkpOwotICAgIEV4ZWNT
dGF0ZSogZXhlYyA9IGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpOwotCi0gICAgQ2FsbERhdGEg
Y2FsbERhdGE7Ci0gICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBqc0Z1bmN0aW9uLT5nZXRDYWxsRGF0
YShjYWxsRGF0YSk7Ci0KLSAgICBpZiAoY2FsbFR5cGUgPT0gQ2FsbFR5cGVOb25lKQotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0KLSAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmdzOwotICAgIGFy
Z3MuYXBwZW5kKGpzU3RyaW5nKGV4ZWMsIG1lc3NhZ2UpKTsKLSAgICBhcmdzLmFwcGVuZChqc1N0
cmluZyhleGVjLCB1cmwpKTsKLSAgICBhcmdzLmFwcGVuZChqc051bWJlcihleGVjLCBsaW5lTnVt
YmVyKSk7Ci0KLSAgICBKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEgPSBnbG9iYWxPYmplY3QtPmds
b2JhbERhdGEoKTsKLSAgICBEeW5hbWljR2xvYmFsT2JqZWN0U2NvcGUgZ2xvYmFsT2JqZWN0U2Nv
cGUoZXhlYywgZ2xvYmFsRGF0YS0+ZHluYW1pY0dsb2JhbE9iamVjdCA/IGdsb2JhbERhdGEtPmR5
bmFtaWNHbG9iYWxPYmplY3QgOiBnbG9iYWxPYmplY3QpOyAgICAKLQotICAgIEpTVmFsdWUgdGhp
c1ZhbHVlID0gZ2xvYmFsT2JqZWN0LT50b1RoaXNPYmplY3QoZXhlYyk7Ci0KLSAgICBnbG9iYWxE
YXRhLT50aW1lb3V0Q2hlY2tlci5zdGFydCgpOwotICAgIEpTVmFsdWUgcmV0dXJuVmFsdWUgPSBK
U0M6OmNhbGwoZXhlYywganNGdW5jdGlvbiwgY2FsbFR5cGUsIGNhbGxEYXRhLCB0aGlzVmFsdWUs
IGFyZ3MpOwotICAgIGdsb2JhbERhdGEtPnRpbWVvdXRDaGVja2VyLnN0b3AoKTsKLQotICAgIC8v
IElmIGFuIGVycm9yIG9jY3VycyB3aGlsZSBoYW5kbGluZyB0aGUgc2NyaXB0IGVycm9yLCBpdCBz
aG91bGQgYmUgYnViYmxlZCB1cC4KLSAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpIHsKLSAg
ICAgICAgZXhlYy0+Y2xlYXJFeGNlcHRpb24oKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
IH0KLSAgICAKLSAgICBib29sIGJ1YmJsZUV2ZW50OwotICAgIHJldHVybiByZXR1cm5WYWx1ZS5n
ZXRCb29sZWFuKGJ1YmJsZUV2ZW50KSAmJiAhYnViYmxlRXZlbnQ7Ci19Ci0KIGJvb2wgSlNFdmVu
dExpc3RlbmVyOjp2aXJ0dWFsaXNBdHRyaWJ1dGUoKSBjb25zdAogewogICAgIHJldHVybiBtX2lz
QXR0cmlidXRlOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50TGlzdGVu
ZXIuaCBiL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudExpc3RlbmVyLmgKaW5kZXggNTY5YzE5
Mi4uYjE1YzU4OSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50TGlzdGVu
ZXIuaAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5oCkBAIC02MCw3
ICs2MCw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCB2b2lkIG1hcmtK
U0Z1bmN0aW9uKEpTQzo6TWFya1N0YWNrJik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlk
YXRlSlNGdW5jdGlvbihKU0M6OkpTT2JqZWN0Kik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBoYW5k
bGVFdmVudChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgRXZlbnQqKTsKLSAgICAgICAgdmlydHVh
bCBib29sIHJlcG9ydEVycm9yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcm
IG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgdXJsLCBpbnQgbGluZU51bWJlcik7CiAgICAgICAgIHZp
cnR1YWwgYm9vbCB2aXJ0dWFsaXNBdHRyaWJ1dGUoKSBjb25zdDsKIAogICAgIHByb3RlY3RlZDoK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhXb3JrZXJDb250ZXh0RXZlbnRMaXN0
ZW5lci5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4V29ya2VyQ29udGV4dEV2ZW50TGlzdGVu
ZXIuY3BwCmluZGV4IGZhODlhZTYuLjMwYjk4NjUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGlu
Z3MvdjgvVjhXb3JrZXJDb250ZXh0RXZlbnRMaXN0ZW5lci5jcHAKKysrIGIvV2ViQ29yZS9iaW5k
aW5ncy92OC9WOFdvcmtlckNvbnRleHRFdmVudExpc3RlbmVyLmNwcApAQCAtODIsNTYgKzgyLDYg
QEAgdm9pZCBWOFdvcmtlckNvbnRleHRFdmVudExpc3RlbmVyOjpoYW5kbGVFdmVudChTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBjb250ZXh0LAogICAgIGludm9rZUV2ZW50SGFuZGxlcihjb250ZXh0
LCBldmVudCwganNFdmVudCk7CiB9CiAKLWJvb2wgVjhXb3JrZXJDb250ZXh0RXZlbnRMaXN0ZW5l
cjo6cmVwb3J0RXJyb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU3Ry
aW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIHVybCwgaW50IGxpbmVOdW1iZXIpCi17Ci0gICAg
aWYgKCFjb250ZXh0KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAvLyBUaGUgY2FsbGJh
Y2sgZnVuY3Rpb24gY2FuIGNsZWFyIHRoZSBldmVudCBsaXN0ZW5lciBhbmQgZGVzdHJveSAndGhp
cycgb2JqZWN0LiBLZWVwIGEgbG9jYWwgcmVmZXJlbmNlIHRvIGl0LgotICAgIFJlZlB0cjxWOEFi
c3RyYWN0RXZlbnRMaXN0ZW5lcj4gcHJvdGVjdCh0aGlzKTsKLQotICAgIHY4OjpIYW5kbGVTY29w
ZSBoYW5kbGVTY29wZTsKLQotICAgIFdvcmtlckNvbnRleHRFeGVjdXRpb25Qcm94eSogcHJveHkg
PSB3b3JrZXJQcm94eShjb250ZXh0KTsKLSAgICBpZiAoIXByb3h5KQotICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0KLSAgICB2ODo6SGFuZGxlPHY4OjpDb250ZXh0PiB2OENvbnRleHQgPSBwcm94eS0+
Y29udGV4dCgpOwotICAgIGlmICh2OENvbnRleHQuSXNFbXB0eSgpKQotICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0KLSAgICAvLyBFbnRlciB0aGUgVjggY29udGV4dCBpbiB3aGljaCB0byBwZXJmb3Jt
IHRoZSBldmVudCBoYW5kbGluZy4KLSAgICB2ODo6Q29udGV4dDo6U2NvcGUgc2NvcGUodjhDb250
ZXh0KTsKLQotICAgIHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBsaXN0ZW5lciA9IGdldExpc3RlbmVy
T2JqZWN0KGNvbnRleHQpOwotICAgIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHJldHVyblZhbHVlOwot
ICAgIHsKLSAgICAgICAgLy8gQ2F0Y2ggZXhjZXB0aW9ucyB0aHJvd24gaW4gY2FsbGluZyB0aGUg
ZnVuY3Rpb24gc28gdGhleSBkbyBub3QgcHJvcGFnYXRlIHRvIGphdmFzY3JpcHQgY29kZSB0aGF0
IGNhdXNlZCB0aGUgZXZlbnQgdG8gZmlyZS4KLSAgICAgICAgdjg6OlRyeUNhdGNoIHRyeUNhdGNo
OwotICAgICAgICB0cnlDYXRjaC5TZXRWZXJib3NlKHRydWUpOwotCi0gICAgICAgIC8vIENhbGwg
dGhlIGZ1bmN0aW9uLgotICAgICAgICBpZiAoIWxpc3RlbmVyLklzRW1wdHkoKSAmJiBsaXN0ZW5l
ci0+SXNGdW5jdGlvbigpKSB7Ci0gICAgICAgICAgICB2ODo6TG9jYWw8djg6OkZ1bmN0aW9uPiBj
YWxsRnVuY3Rpb24gPSB2ODo6TG9jYWw8djg6OkZ1bmN0aW9uPjo6Q2FzdChsaXN0ZW5lcik7Ci0g
ICAgICAgICAgICB2ODo6TG9jYWw8djg6Ok9iamVjdD4gdGhpc1ZhbHVlID0gdjg6OkNvbnRleHQ6
OkdldEN1cnJlbnQoKS0+R2xvYmFsKCk7Ci0KLSAgICAgICAgICAgIHY4OjpIYW5kbGU8djg6OlZh
bHVlPiBwYXJhbWV0ZXJzWzNdID0geyB2OFN0cmluZyhtZXNzYWdlKSwgdjhTdHJpbmcodXJsKSwg
djg6OkludGVnZXI6Ok5ldyhsaW5lTnVtYmVyKSB9OwotICAgICAgICAgICAgcmV0dXJuVmFsdWUg
PSBjYWxsRnVuY3Rpb24tPkNhbGwodGhpc1ZhbHVlLCAzLCBwYXJhbWV0ZXJzKTsKLSAgICAgICAg
fQotCi0gICAgICAgIC8vIElmIGFuIGVycm9yIG9jY3VycyB3aGlsZSBoYW5kbGluZyB0aGUgc2Ny
aXB0IGVycm9yLCBpdCBzaG91bGQgYmUgYnViYmxlZCB1cC4KLSAgICAgICAgaWYgKHRyeUNhdGNo
Lkhhc0NhdWdodCgpKSB7Ci0gICAgICAgICAgICB0cnlDYXRjaC5SZXNldCgpOwotICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgLy8gSWYgdGhlIGZ1bmN0
aW9uIHJldHVybnMgZmFsc2UsIHRoZW4gdGhlIGVycm9yIGlzIGhhbmRsZWQuIE90aGVyd2lzZSwg
dGhlIGVycm9yIGlzIG5vdCBoYW5kbGVkLgotICAgIGJvb2wgZXJyb3JIYW5kbGVkID0gcmV0dXJu
VmFsdWUtPklzQm9vbGVhbigpICYmICFyZXR1cm5WYWx1ZS0+Qm9vbGVhblZhbHVlKCk7Ci0KLSAg
ICByZXR1cm4gZXJyb3JIYW5kbGVkOwotfQotCiB2ODo6TG9jYWw8djg6OlZhbHVlPiBWOFdvcmtl
ckNvbnRleHRFdmVudExpc3RlbmVyOjpjYWxsTGlzdGVuZXJGdW5jdGlvbihTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBjb250ZXh0LCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4ganNFdmVudCwgRXZlbnQq
IGV2ZW50KQogewogICAgIHY4OjpMb2NhbDx2ODo6RnVuY3Rpb24+IGhhbmRsZXJGdW5jdGlvbiA9
IGdldExpc3RlbmVyRnVuY3Rpb24oY29udGV4dCk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L1Y4V29ya2VyQ29udGV4dEV2ZW50TGlzdGVuZXIuaCBiL1dlYkNvcmUvYmluZGluZ3Mv
djgvVjhXb3JrZXJDb250ZXh0RXZlbnRMaXN0ZW5lci5oCmluZGV4IDQ0ODc0OTcuLjhiYjAyMjcg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhXb3JrZXJDb250ZXh0RXZlbnRMaXN0
ZW5lci5oCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhXb3JrZXJDb250ZXh0RXZlbnRMaXN0
ZW5lci5oCkBAIC01MCw3ICs1MCw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgfQog
CiAgICAgICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVFdmVudChTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiwgRXZlbnQqKTsKLSAgICAgICAgdmlydHVhbCBib29sIHJlcG9ydEVycm9yKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgdXJsLCBp
bnQgbGluZU51bWJlcik7CiAKICAgICBwcml2YXRlOgogICAgICAgICBWOFdvcmtlckNvbnRleHRF
dmVudExpc3RlbmVyKHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBsaXN0ZW5lciwgYm9vbCBpc0lubGlu
ZSwgY29uc3QgV29ybGRDb250ZXh0SGFuZGxlJiB3b3JsZENvbnRleHQpOwpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9kb20vRXZlbnRMaXN0ZW5lci5oIGIvV2ViQ29yZS9kb20vRXZlbnRMaXN0ZW5lci5o
CmluZGV4IDhhMzU5MjIuLmQ3Yzk1MGYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL0V2ZW50TGlz
dGVuZXIuaAorKysgYi9XZWJDb3JlL2RvbS9FdmVudExpc3RlbmVyLmgKQEAgLTQ2LDggKzQ2LDYg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFsIH5FdmVudExpc3RlbmVyKCkg
eyB9CiAgICAgICAgIHZpcnR1YWwgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEV2ZW50TGlzdGVuZXIm
KSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVFdmVudChTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiwgRXZlbnQqKSA9IDA7Ci0gICAgICAgIC8vIFJldHVybiB0cnVlIHRvIGluZGljYXRl
IHRoYXQgdGhlIGVycm9yIGlzIGhhbmRsZWQuCi0gICAgICAgIHZpcnR1YWwgYm9vbCByZXBvcnRF
cnJvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiAvKm1lc3NhZ2UqLywg
Y29uc3QgU3RyaW5nJiAvKnVybCovLCBpbnQgLypsaW5lTnVtYmVyKi8pIHsgcmV0dXJuIGZhbHNl
OyB9CiAgICAgICAgIHZpcnR1YWwgYm9vbCB3YXNDcmVhdGVkRnJvbU1hcmt1cCgpIGNvbnN0IHsg
cmV0dXJuIGZhbHNlOyB9CiAKICNpZiBVU0UoSlNDKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS93b3Jr
ZXJzL1dvcmtlckNvbnRleHQuY3BwIGIvV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRleHQuY3Bw
CmluZGV4IDdiNGYyOTMuLjJkNDcxNDcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvd29ya2Vycy9Xb3Jr
ZXJDb250ZXh0LmNwcAorKysgYi9XZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29udGV4dC5jcHAKQEAg
LTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJET01UaW1lci5oIgogI2luY2x1ZGUgIkRPTVdpbmRv
dy5oIgogI2luY2x1ZGUgIkV2ZW50LmgiCisjaW5jbHVkZSAiRXJyb3JFdmVudC5oIgogI2luY2x1
ZGUgIkV2ZW50RXhjZXB0aW9uLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVBvcnQuaCIKICNpbmNsdWRl
ICJOb3RJbXBsZW1lbnRlZC5oIgpAQCAtNjQsNiArNjUsNyBAQCBXb3JrZXJDb250ZXh0OjpXb3Jr
ZXJDb250ZXh0KGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIFdvcmtl
clRocgogICAgICwgbV9zY3JpcHQobmV3IFdvcmtlclNjcmlwdENvbnRyb2xsZXIodGhpcykpCiAg
ICAgLCBtX3RocmVhZCh0aHJlYWQpCiAgICAgLCBtX2Nsb3NpbmcoZmFsc2UpCisgICAgLCBtX3Jl
cG9ydGluZ0V4Y2VwdGlvbihmYWxzZSkKIHsKICAgICBzZXRTZWN1cml0eU9yaWdpbihTZWN1cml0
eU9yaWdpbjo6Y3JlYXRlKHVybCkpOwogfQpAQCAtMjM0LDkgKzIzNiwxNiBAQCB2b2lkIFdvcmtl
ckNvbnRleHQ6OmltcG9ydFNjcmlwdHMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHVybHMsIGNvbnN0
IFN0cmluZyYgY2FsbAogdm9pZCBXb3JrZXJDb250ZXh0OjpyZXBvcnRFeGNlcHRpb24oY29uc3Qg
U3RyaW5nJiBlcnJvck1lc3NhZ2UsIGludCBsaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJj
ZVVSTCkKIHsKICAgICBib29sIGVycm9ySGFuZGxlZCA9IGZhbHNlOwotICAgIGlmIChvbmVycm9y
KCkpCi0gICAgICAgIGVycm9ySGFuZGxlZCA9IG9uZXJyb3IoKS0+cmVwb3J0RXJyb3IodGhpcywg
ZXJyb3JNZXNzYWdlLCBzb3VyY2VVUkwsIGxpbmVOdW1iZXIpOwotCisgICAgaWYgKCFtX3JlcG9y
dGluZ0V4Y2VwdGlvbikgeworICAgICAgICBpZiAob25lcnJvcigpKSB7CisgICAgICAgICAgICBt
X3JlcG9ydGluZ0V4Y2VwdGlvbiA9IHRydWU7CisgICAgICAgICAgICBSZWZQdHI8RXJyb3JFdmVu
dD4gZXJyb3JFdmVudChFcnJvckV2ZW50OjpjcmVhdGUoZXJyb3JNZXNzYWdlLCBzb3VyY2VVUkws
IGxpbmVOdW1iZXIpKTsKKyAgICAgICAgICAgIG9uZXJyb3IoKS0+aGFuZGxlRXZlbnQodGhpcywg
ZXJyb3JFdmVudC5nZXQoKSk7CisvLyAgICAgICAgICAgIGVycm9ySGFuZGxlZCA9IG9uZXJyb3Io
KS0+cmVwb3J0RXJyb3IodGhpcywgZXJyb3JNZXNzYWdlLCBzb3VyY2VVUkwsIGxpbmVOdW1iZXIp
OworICAgICAgICAgICAgZXJyb3JIYW5kbGVkID0gZXJyb3JFdmVudC0+ZGVmYXVsdFByZXZlbnRl
ZCgpOworICAgICAgICAgICAgbV9yZXBvcnRpbmdFeGNlcHRpb24gPSBmYWxzZTsKKyAgICAgICAg
fQorICAgIH0KICAgICBpZiAoIWVycm9ySGFuZGxlZCkKICAgICAgICAgdGhyZWFkKCktPndvcmtl
clJlcG9ydGluZ1Byb3h5KCkucG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0KGVycm9yTWVzc2Fn
ZSwgbGluZU51bWJlciwgc291cmNlVVJMKTsKIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvd29ya2Vy
cy9Xb3JrZXJDb250ZXh0LmggYi9XZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29udGV4dC5oCmluZGV4
IGZiNGEyNmQuLjFlNjZhNjUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250
ZXh0LmgKKysrIGIvV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRleHQuaApAQCAtMTU0LDYgKzE1
NCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgbXV0YWJsZSBSZWZQdHI8Tm90aWZp
Y2F0aW9uQ2VudGVyPiBtX25vdGlmaWNhdGlvbnM7CiAjZW5kaWYKICAgICAgICAgYm9vbCBtX2Ns
b3Npbmc7CisgICAgICAgIGJvb2wgbV9yZXBvcnRpbmdFeGNlcHRpb247CiAgICAgICAgIEV2ZW50
VGFyZ2V0RGF0YSBtX2V2ZW50VGFyZ2V0RGF0YTsKICAgICB9OwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>51419</attachid>
            <date>2010-03-23 06:53:31 -0700</date>
            <delta_ts>2010-03-23 07:29:21 -0700</delta_ts>
            <desc>patch</desc>
            <filename>worker-report-error2.patch</filename>
            <type>text/plain</type>
            <size>13717</size>
            <attacher name="Yury Semikhatsky">yurys</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBmMGY0ZTM3Li4wMzY3ZjU4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTAtMDMt
MjMgIFl1cnkgU2VtaWtoYXRza3kgIDx5dXJ5c0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWFrZSBvbmVycm9yIGhhbmRsZXIg
aW4gd29ya2VyIGNvbnRleHQgYWNjZXB0IHNpbmdsZSBFcnJvckV2ZW50IGFyZ3VtZW50IHJhdGhl
ciB0aGFuIHRocmVlIHNlcGFyYXRlIGFyZ3VtZW50cy4KKworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzYzNzUKKworICAgICAgICAqIGZhc3Qvd29ya2Vy
cy9yZXNvdXJjZXMvc2hhcmVkLXdvcmtlci1zY3JpcHQtZXJyb3IuanM6CisgICAgICAgIChoYW5k
bGVNZXNzYWdlLmVsc2Uub25lcnJvcik6CisgICAgICAgICogZmFzdC93b3JrZXJzL3Jlc291cmNl
cy93b3JrZXItc2NyaXB0LWVycm9yLWhhbmRsZWQuanM6CisgICAgICAgIChvbmVycm9yKToKKyAg
ICAgICAgKiBmYXN0L3dvcmtlcnMvd29ya2VyLXNjcmlwdC1lcnJvci1leHBlY3RlZC50eHQ6IEV4
Y2VwdGlvbiBpbiBvbmVycm9yIGhhbmRsZXIgaXMgbm93IHJlcG9ydGVkIHRvIHRoZSB1c2VyLgor
ICAgICAgICAqIGZhc3Qvd29ya2Vycy93b3JrZXItc2NyaXB0LWVycm9yLmh0bWw6CisKIDIwMTAt
MDMtMjMgIEZ1bWl0b3NoaSBVa2FpICA8dWthaUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVW5y
ZXZpZXdlZCwgcmVtb3ZlIGZsYWt5IHRhZyBpbiB3ZWJzb2NrZXQgdGVzdHMuCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvcmVzb3VyY2VzL3NoYXJlZC13b3JrZXItc2NyaXB0
LWVycm9yLmpzIGIvTGF5b3V0VGVzdHMvZmFzdC93b3JrZXJzL3Jlc291cmNlcy9zaGFyZWQtd29y
a2VyLXNjcmlwdC1lcnJvci5qcwppbmRleCA3YTRhNzBmLi4yMDRhNmYyIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvcmVzb3VyY2VzL3NoYXJlZC13b3JrZXItc2NyaXB0LWVy
cm9yLmpzCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy9yZXNvdXJjZXMvc2hhcmVkLXdv
cmtlci1zY3JpcHQtZXJyb3IuanMKQEAgLTExLDkgKzExLDkgQEAgZnVuY3Rpb24gaGFuZGxlTWVz
c2FnZShldmVudCwgcG9ydCkgewogICAgICAgICB9LCAxMDApOwogICAgICAgICBnZW5lcmF0ZUVy
cm9yKCk7ICAvLyBVbmRlZmluZWQgZnVuY3Rpb24gY2FsbAogICAgIH0gZWxzZSBpZiAoZXZlbnQu
ZGF0YSA9PSAiaGFuZGxlZEVycm9yIikgewotICAgICAgICBvbmVycm9yID0gZnVuY3Rpb24obWVz
c2FnZSwgdXJsLCBsaW5lbm8pIHsKLSAgICAgICAgICAgIHBvcnQucG9zdE1lc3NhZ2UoIlNVQ0NF
U1M6IGVycm9yIGhhbmRsZWQgdmlhIG9uZXJyb3I6ICIgKyBtZXNzYWdlKTsKLSAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgICAgb25lcnJvciA9IGZ1bmN0aW9uKGV2dCkgeworICAgICAg
ICAgICAgcG9ydC5wb3N0TWVzc2FnZSgiU1VDQ0VTUzogZXJyb3IgaGFuZGxlZCB2aWEgb25lcnJv
cjogIiArIGV2dC5tZXNzYWdlKTsKKyAgICAgICAgICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpOwog
ICAgICAgICB9OwogICAgICAgICBnZW5lcmF0ZUVycm9yKCk7ICAvLyBVbmRlZmluZWQgZnVuY3Rp
b24gY2FsbAogICAgIH0gZWxzZSB7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3dvcmtl
cnMvcmVzb3VyY2VzL3dvcmtlci1zY3JpcHQtZXJyb3ItaGFuZGxlZC5qcyBiL0xheW91dFRlc3Rz
L2Zhc3Qvd29ya2Vycy9yZXNvdXJjZXMvd29ya2VyLXNjcmlwdC1lcnJvci1oYW5kbGVkLmpzCmlu
ZGV4IDUwZDkwNzcuLjFjZjAwMjYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3Qvd29ya2Vy
cy9yZXNvdXJjZXMvd29ya2VyLXNjcmlwdC1lcnJvci1oYW5kbGVkLmpzCisrKyBiL0xheW91dFRl
c3RzL2Zhc3Qvd29ya2Vycy9yZXNvdXJjZXMvd29ya2VyLXNjcmlwdC1lcnJvci1oYW5kbGVkLmpz
CkBAIC0xLDcgKzEsNyBAQAotb25lcnJvciA9IGZ1bmN0aW9uKG1lc3NhZ2UsIHVybCwgbGluZW5v
KQorb25lcnJvciA9IGZ1bmN0aW9uKGV2dCkKIHsKLSAgICBwb3N0TWVzc2FnZSgib25lcnJvciBp
bnZva2VkIGZvciBhIHNjcmlwdCB0aGF0IGhhcyBzY3JpcHQgZXJyb3IgJyIgKyBtZXNzYWdlICsg
IicgYXQgbGluZSAiICsgbGluZW5vKTsKLSAgICByZXR1cm4gZmFsc2U7CisgICAgcG9zdE1lc3Nh
Z2UoIm9uZXJyb3IgaW52b2tlZCBmb3IgYSBzY3JpcHQgdGhhdCBoYXMgc2NyaXB0IGVycm9yICci
ICsgZXZ0Lm1lc3NhZ2UgKyAiJyBhdCBsaW5lICIgKyBldnQubGluZW5vKTsKKyAgICBldnQucHJl
dmVudERlZmF1bHQoKTsKIH0KIAogZm9vLmJhciA9IDA7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L3dvcmtlcnMvd29ya2VyLXNjcmlwdC1lcnJvci1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9mYXN0L3dvcmtlcnMvd29ya2VyLXNjcmlwdC1lcnJvci1leHBlY3RlZC50eHQKaW5kZXgg
ZDUzNWU3ZC4uMTBhYjA0OSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC93b3JrZXJzL3dv
cmtlci1zY3JpcHQtZXJyb3ItZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvd29y
a2Vycy93b3JrZXItc2NyaXB0LWVycm9yLWV4cGVjdGVkLnR4dApAQCAtNCw2ICs0LDcgQEAgVGVz
dCBXb3JrZXIgc2NyaXB0IGVycm9yIGhhbmRsaW5nIGZ1bmN0aW9uYWxpdHkuIFNob3VsZCBwcmlu
dCBhIHNlcmllcyBvZiBQQVNTIG0KIFBBU1M6IG9uZXJyb3IgaW52b2tlZCBmb3IgYSBzY3JpcHQg
dGhhdCBoYXMgaW52YWxpZCBzeW50YXguCiBQQVNTOiBvbmVycm9yIGludm9rZWQgZm9yIGEgc2Ny
aXB0IHRoYXQgaGFzIHNjcmlwdCBlcnJvciAnUmVmZXJlbmNlRXJyb3I6IENhbid0IGZpbmQgdmFy
aWFibGU6IGZvbycgYXQgbGluZSAxLgogUEFTUzogZXZlbnQgbGlzdGVuZXIgaW52b2tlZCBmb3Ig
YSBzY3JpcHQgdGhhdCBoYXMgc2NyaXB0IGVycm9yICdSZWZlcmVuY2VFcnJvcjogQ2FuJ3QgZmlu
ZCB2YXJpYWJsZTogZm9vJyBhdCBsaW5lIDEuCitQQVNTOiBvbmVycm9yIGludm9rZWQgZm9yIGEg
c2NyaXB0IHRoYXQgaGFzIHNjcmlwdCBlcnJvciAnUmVmZXJlbmNlRXJyb3I6IENhbid0IGZpbmQg
dmFyaWFibGU6IGJhcicgYXQgbGluZSAzLgogUEFTUzogb25lcnJvciBpbnZva2VkIGZvciBhIHNj
cmlwdCB0aGF0IGhhcyBzY3JpcHQgZXJyb3IgJ1JlZmVyZW5jZUVycm9yOiBDYW4ndCBmaW5kIHZh
cmlhYmxlOiBmb28nIGF0IGxpbmUgNy4KIFBBU1M6IG9uZXJyb3IgaW52b2tlZCBmb3IgYSBzY3Jp
cHQgdGhhdCBoYXMgc2NyaXB0IGVycm9yICdSZWZlcmVuY2VFcnJvcjogQ2FuJ3QgZmluZCB2YXJp
YWJsZTogZm9vJyBhdCBsaW5lIDcuCiBQQVNTOiBvbmVycm9yIGludm9rZWQgZm9yIGEgc2NyaXB0
IHRoYXQgaGFzIHNjcmlwdCBlcnJvciAnUmVmZXJlbmNlRXJyb3I6IENhbid0IGZpbmQgdmFyaWFi
bGU6IGZvbycgYXQgbGluZSA3LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC93b3JrZXJz
L3dvcmtlci1zY3JpcHQtZXJyb3IuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy93b3Jr
ZXItc2NyaXB0LWVycm9yLmh0bWwKaW5kZXggYWQ5NmY3Ni4uNzEzOTllZiAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvZmFzdC93b3JrZXJzL3dvcmtlci1zY3JpcHQtZXJyb3IuaHRtbAorKysgYi9M
YXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvd29ya2VyLXNjcmlwdC1lcnJvci5odG1sCkBAIC04MSw4
ICs4MSwxMCBAQCBmdW5jdGlvbiB0ZXN0RXJyb3JJbkhhbmRsaW5nU2NyaXB0RXJyb3IoKQogewog
ICAgIHRyeSB7CiAgICAgICAgIHZhciB3b3JrZXIgPSBuZXcgV29ya2VyKCJyZXNvdXJjZXMvd29y
a2VyLWVycm9yLWluLWhhbmRsaW5nLXNjcmlwdC1lcnJvci5qcyIpOworICAgICAgICB2YXIgY291
bnQgPSAwOwogICAgICAgICB3b3JrZXIub25lcnJvciA9IGZ1bmN0aW9uKGV2dCkgewogICAgICAg
ICAgICAgbG9nKCJQQVNTOiBvbmVycm9yIGludm9rZWQgZm9yIGEgc2NyaXB0IHRoYXQgaGFzIHNj
cmlwdCBlcnJvciAnIiArIGV2dC5tZXNzYWdlICsgIicgYXQgbGluZSAiICsgZXZ0LmxpbmVubyAr
ICIuIik7CisgICAgICAgICAgICBpZiAoKytjb3VudCA9PSAyKQogICAgICAgICAgICAgcnVuTmV4
dFRlc3QoKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAzZDczNjY1Li5m
YWIwNzdmIDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDEwLTAzLTIzICBZdXJ5IFNlbWlraGF0c2t5ICA8eXVy
eXNAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFRyZWF0IHdvcmtlcidzIG9uZXJyb3IgaGFuZGxlciBhcyBhbiBFdmVudExpc3Rl
bmVyKGFzIGl0IGRlc2NyaWJlZCBpbiB0aGUgc3BlYykgYW5kIGludm9rZSBpdCB3aXRoIGEgc2lu
Z2xlIEVycm9yRXZlbnQgcGFyYW1ldGVyIGluc3RlYWQgb2YgdGhyZWUgc2VwYXJhdGUgYXJndW1l
bnRzLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0z
NjM3NQorCisgICAgICAgICogYmluZGluZ3MvanMvSlNFdmVudExpc3RlbmVyLmNwcDoKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9KU0V2ZW50TGlzdGVuZXIuaDoKKyAgICAgICAgKiBiaW5kaW5ncy92
OC9WOFdvcmtlckNvbnRleHRFdmVudExpc3RlbmVyLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy92
OC9WOFdvcmtlckNvbnRleHRFdmVudExpc3RlbmVyLmg6CisgICAgICAgICogZG9tL0V2ZW50TGlz
dGVuZXIuaDogUmVtb3ZlIEV2ZW50TGlzdGVuZXI6OnJlcG9ydEVycm9yIHdoaWNoIGlzIG9ubHkg
dXNlZCBmb3IgcmVwb3J0aW5nIHdvcmtlciBlcnJvcnMuCisgICAgICAgICogd29ya2Vycy9Xb3Jr
ZXJDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckNvbnRleHQ6OldvcmtlckNv
bnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyQ29udGV4dDo6cmVwb3J0RXhjZXB0aW9u
KToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckNvbnRleHQuaDoKKwogMjAxMC0wMy0yMiAgUGF2
ZWwgRmVsZG1hbiAgPHBmZWxkbWFuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBi
eSBEYXZlIEh5YXR0LgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50TGlz
dGVuZXIuY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50TGlzdGVuZXIuY3BwCmluZGV4
IGJlMDQ5ZGIuLmIwMGQ2NTQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVu
dExpc3RlbmVyLmNwcAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5j
cHAKQEAgLTEzMyw0NyArMTMzLDYgQEAgdm9pZCBKU0V2ZW50TGlzdGVuZXI6OmhhbmRsZUV2ZW50
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQKICAgICB9CiB9
CiAKLWJvb2wgSlNFdmVudExpc3RlbmVyOjpyZXBvcnRFcnJvcihTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgdXJsLCBp
bnQgbGluZU51bWJlcikKLXsKLSAgICBKU0xvY2sgbG9jayhTaWxlbmNlQXNzZXJ0aW9uc09ubHkp
OwotCi0gICAgSlNPYmplY3QqIGpzRnVuY3Rpb24gPSB0aGlzLT5qc0Z1bmN0aW9uKGNvbnRleHQp
OwotICAgIGlmICghanNGdW5jdGlvbikKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgSlNE
T01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IHRvSlNET01HbG9iYWxPYmplY3QoY29udGV4
dCwgbV9pc29sYXRlZFdvcmxkLmdldCgpKTsKLSAgICBFeGVjU3RhdGUqIGV4ZWMgPSBnbG9iYWxP
YmplY3QtPmdsb2JhbEV4ZWMoKTsKLQotICAgIENhbGxEYXRhIGNhbGxEYXRhOwotICAgIENhbGxU
eXBlIGNhbGxUeXBlID0ganNGdW5jdGlvbi0+Z2V0Q2FsbERhdGEoY2FsbERhdGEpOwotCi0gICAg
aWYgKGNhbGxUeXBlID09IENhbGxUeXBlTm9uZSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0g
ICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJnczsKLSAgICBhcmdzLmFwcGVuZChqc1N0cmluZyhl
eGVjLCBtZXNzYWdlKSk7Ci0gICAgYXJncy5hcHBlbmQoanNTdHJpbmcoZXhlYywgdXJsKSk7Ci0g
ICAgYXJncy5hcHBlbmQoanNOdW1iZXIoZXhlYywgbGluZU51bWJlcikpOwotCi0gICAgSlNHbG9i
YWxEYXRhKiBnbG9iYWxEYXRhID0gZ2xvYmFsT2JqZWN0LT5nbG9iYWxEYXRhKCk7Ci0gICAgRHlu
YW1pY0dsb2JhbE9iamVjdFNjb3BlIGdsb2JhbE9iamVjdFNjb3BlKGV4ZWMsIGdsb2JhbERhdGEt
PmR5bmFtaWNHbG9iYWxPYmplY3QgPyBnbG9iYWxEYXRhLT5keW5hbWljR2xvYmFsT2JqZWN0IDog
Z2xvYmFsT2JqZWN0KTsgICAgCi0KLSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGdsb2JhbE9iamVj
dC0+dG9UaGlzT2JqZWN0KGV4ZWMpOwotCi0gICAgZ2xvYmFsRGF0YS0+dGltZW91dENoZWNrZXIu
c3RhcnQoKTsKLSAgICBKU1ZhbHVlIHJldHVyblZhbHVlID0gSlNDOjpjYWxsKGV4ZWMsIGpzRnVu
Y3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0YSwgdGhpc1ZhbHVlLCBhcmdzKTsKLSAgICBnbG9iYWxE
YXRhLT50aW1lb3V0Q2hlY2tlci5zdG9wKCk7Ci0KLSAgICAvLyBJZiBhbiBlcnJvciBvY2N1cnMg
d2hpbGUgaGFuZGxpbmcgdGhlIHNjcmlwdCBlcnJvciwgaXQgc2hvdWxkIGJlIGJ1YmJsZWQgdXAu
Ci0gICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKSB7Ci0gICAgICAgIGV4ZWMtPmNsZWFyRXhj
ZXB0aW9uKCk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgCi0gICAgYm9vbCBi
dWJibGVFdmVudDsKLSAgICByZXR1cm4gcmV0dXJuVmFsdWUuZ2V0Qm9vbGVhbihidWJibGVFdmVu
dCkgJiYgIWJ1YmJsZUV2ZW50OwotfQotCiBib29sIEpTRXZlbnRMaXN0ZW5lcjo6dmlydHVhbGlz
QXR0cmlidXRlKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9pc0F0dHJpYnV0ZTsKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudExpc3RlbmVyLmggYi9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5oCmluZGV4IDU2OWMxOTIuLmIxNWM1ODkgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudExpc3RlbmVyLmgKKysrIGIvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0V2ZW50TGlzdGVuZXIuaApAQCAtNjAsNyArNjAsNiBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBtYXJrSlNGdW5jdGlvbihKU0M6Ok1hcmtT
dGFjayYpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZUpTRnVuY3Rpb24oSlNDOjpK
U09iamVjdCopOwogICAgICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlRXZlbnQoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCosIEV2ZW50Kik7Ci0gICAgICAgIHZpcnR1YWwgYm9vbCByZXBvcnRFcnJvcihT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJp
bmcmIHVybCwgaW50IGxpbmVOdW1iZXIpOwogICAgICAgICB2aXJ0dWFsIGJvb2wgdmlydHVhbGlz
QXR0cmlidXRlKCkgY29uc3Q7CiAKICAgICBwcm90ZWN0ZWQ6CmRpZmYgLS1naXQgYS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L1Y4V29ya2VyQ29udGV4dEV2ZW50TGlzdGVuZXIuY3BwIGIvV2ViQ29yZS9i
aW5kaW5ncy92OC9WOFdvcmtlckNvbnRleHRFdmVudExpc3RlbmVyLmNwcAppbmRleCBmYTg5YWU2
Li4zMGI5ODY1IDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4V29ya2VyQ29udGV4
dEV2ZW50TGlzdGVuZXIuY3BwCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhXb3JrZXJDb250
ZXh0RXZlbnRMaXN0ZW5lci5jcHAKQEAgLTgyLDU2ICs4Miw2IEBAIHZvaWQgVjhXb3JrZXJDb250
ZXh0RXZlbnRMaXN0ZW5lcjo6aGFuZGxlRXZlbnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29u
dGV4dCwKICAgICBpbnZva2VFdmVudEhhbmRsZXIoY29udGV4dCwgZXZlbnQsIGpzRXZlbnQpOwog
fQogCi1ib29sIFY4V29ya2VyQ29udGV4dEV2ZW50TGlzdGVuZXI6OnJlcG9ydEVycm9yKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3Qg
U3RyaW5nJiB1cmwsIGludCBsaW5lTnVtYmVyKQotewotICAgIGlmICghY29udGV4dCkKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOwotCi0gICAgLy8gVGhlIGNhbGxiYWNrIGZ1bmN0aW9uIGNhbiBjbGVh
ciB0aGUgZXZlbnQgbGlzdGVuZXIgYW5kIGRlc3Ryb3kgJ3RoaXMnIG9iamVjdC4gS2VlcCBhIGxv
Y2FsIHJlZmVyZW5jZSB0byBpdC4KLSAgICBSZWZQdHI8VjhBYnN0cmFjdEV2ZW50TGlzdGVuZXI+
IHByb3RlY3QodGhpcyk7Ci0KLSAgICB2ODo6SGFuZGxlU2NvcGUgaGFuZGxlU2NvcGU7Ci0KLSAg
ICBXb3JrZXJDb250ZXh0RXhlY3V0aW9uUHJveHkqIHByb3h5ID0gd29ya2VyUHJveHkoY29udGV4
dCk7Ci0gICAgaWYgKCFwcm94eSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgdjg6Okhh
bmRsZTx2ODo6Q29udGV4dD4gdjhDb250ZXh0ID0gcHJveHktPmNvbnRleHQoKTsKLSAgICBpZiAo
djhDb250ZXh0LklzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgLy8gRW50
ZXIgdGhlIFY4IGNvbnRleHQgaW4gd2hpY2ggdG8gcGVyZm9ybSB0aGUgZXZlbnQgaGFuZGxpbmcu
Ci0gICAgdjg6OkNvbnRleHQ6OlNjb3BlIHNjb3BlKHY4Q29udGV4dCk7Ci0KLSAgICB2ODo6TG9j
YWw8djg6Ok9iamVjdD4gbGlzdGVuZXIgPSBnZXRMaXN0ZW5lck9iamVjdChjb250ZXh0KTsKLSAg
ICB2ODo6TG9jYWw8djg6OlZhbHVlPiByZXR1cm5WYWx1ZTsKLSAgICB7Ci0gICAgICAgIC8vIENh
dGNoIGV4Y2VwdGlvbnMgdGhyb3duIGluIGNhbGxpbmcgdGhlIGZ1bmN0aW9uIHNvIHRoZXkgZG8g
bm90IHByb3BhZ2F0ZSB0byBqYXZhc2NyaXB0IGNvZGUgdGhhdCBjYXVzZWQgdGhlIGV2ZW50IHRv
IGZpcmUuCi0gICAgICAgIHY4OjpUcnlDYXRjaCB0cnlDYXRjaDsKLSAgICAgICAgdHJ5Q2F0Y2gu
U2V0VmVyYm9zZSh0cnVlKTsKLQotICAgICAgICAvLyBDYWxsIHRoZSBmdW5jdGlvbi4KLSAgICAg
ICAgaWYgKCFsaXN0ZW5lci5Jc0VtcHR5KCkgJiYgbGlzdGVuZXItPklzRnVuY3Rpb24oKSkgewot
ICAgICAgICAgICAgdjg6OkxvY2FsPHY4OjpGdW5jdGlvbj4gY2FsbEZ1bmN0aW9uID0gdjg6Okxv
Y2FsPHY4OjpGdW5jdGlvbj46OkNhc3QobGlzdGVuZXIpOwotICAgICAgICAgICAgdjg6OkxvY2Fs
PHY4OjpPYmplY3Q+IHRoaXNWYWx1ZSA9IHY4OjpDb250ZXh0OjpHZXRDdXJyZW50KCktPkdsb2Jh
bCgpOwotCi0gICAgICAgICAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gcGFyYW1ldGVyc1szXSA9
IHsgdjhTdHJpbmcobWVzc2FnZSksIHY4U3RyaW5nKHVybCksIHY4OjpJbnRlZ2VyOjpOZXcobGlu
ZU51bWJlcikgfTsKLSAgICAgICAgICAgIHJldHVyblZhbHVlID0gY2FsbEZ1bmN0aW9uLT5DYWxs
KHRoaXNWYWx1ZSwgMywgcGFyYW1ldGVycyk7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBJZiBh
biBlcnJvciBvY2N1cnMgd2hpbGUgaGFuZGxpbmcgdGhlIHNjcmlwdCBlcnJvciwgaXQgc2hvdWxk
IGJlIGJ1YmJsZWQgdXAuCi0gICAgICAgIGlmICh0cnlDYXRjaC5IYXNDYXVnaHQoKSkgewotICAg
ICAgICAgICAgdHJ5Q2F0Y2guUmVzZXQoKTsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICAgICAgfQotICAgIH0KLQotICAgIC8vIElmIHRoZSBmdW5jdGlvbiByZXR1cm5zIGZhbHNlLCB0
aGVuIHRoZSBlcnJvciBpcyBoYW5kbGVkLiBPdGhlcndpc2UsIHRoZSBlcnJvciBpcyBub3QgaGFu
ZGxlZC4KLSAgICBib29sIGVycm9ySGFuZGxlZCA9IHJldHVyblZhbHVlLT5Jc0Jvb2xlYW4oKSAm
JiAhcmV0dXJuVmFsdWUtPkJvb2xlYW5WYWx1ZSgpOwotCi0gICAgcmV0dXJuIGVycm9ySGFuZGxl
ZDsKLX0KLQogdjg6OkxvY2FsPHY4OjpWYWx1ZT4gVjhXb3JrZXJDb250ZXh0RXZlbnRMaXN0ZW5l
cjo6Y2FsbExpc3RlbmVyRnVuY3Rpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwg
djg6OkhhbmRsZTx2ODo6VmFsdWU+IGpzRXZlbnQsIEV2ZW50KiBldmVudCkKIHsKICAgICB2ODo6
TG9jYWw8djg6OkZ1bmN0aW9uPiBoYW5kbGVyRnVuY3Rpb24gPSBnZXRMaXN0ZW5lckZ1bmN0aW9u
KGNvbnRleHQpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFdvcmtlckNvbnRl
eHRFdmVudExpc3RlbmVyLmggYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4V29ya2VyQ29udGV4dEV2
ZW50TGlzdGVuZXIuaAppbmRleCA0NDg3NDk3Li44YmIwMjI3IDEwMDY0NAotLS0gYS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L1Y4V29ya2VyQ29udGV4dEV2ZW50TGlzdGVuZXIuaAorKysgYi9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L1Y4V29ya2VyQ29udGV4dEV2ZW50TGlzdGVuZXIuaApAQCAtNTAsNyArNTAs
NiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIH0KIAogICAgICAgICB2aXJ0dWFsIHZv
aWQgaGFuZGxlRXZlbnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEV2ZW50Kik7Ci0gICAgICAg
IHZpcnR1YWwgYm9vbCByZXBvcnRFcnJvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3Qg
U3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIHVybCwgaW50IGxpbmVOdW1iZXIpOwogCiAg
ICAgcHJpdmF0ZToKICAgICAgICAgVjhXb3JrZXJDb250ZXh0RXZlbnRMaXN0ZW5lcih2ODo6TG9j
YWw8djg6Ok9iamVjdD4gbGlzdGVuZXIsIGJvb2wgaXNJbmxpbmUsIGNvbnN0IFdvcmxkQ29udGV4
dEhhbmRsZSYgd29ybGRDb250ZXh0KTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL0V2ZW50TGlz
dGVuZXIuaCBiL1dlYkNvcmUvZG9tL0V2ZW50TGlzdGVuZXIuaAppbmRleCA4YTM1OTIyLi5kN2M5
NTBmIDEwMDY0NAotLS0gYS9XZWJDb3JlL2RvbS9FdmVudExpc3RlbmVyLmgKKysrIGIvV2ViQ29y
ZS9kb20vRXZlbnRMaXN0ZW5lci5oCkBAIC00Niw4ICs0Niw2IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICAgICAgICAgdmlydHVhbCB+RXZlbnRMaXN0ZW5lcigpIHsgfQogICAgICAgICB2aXJ0dWFs
IGJvb2wgb3BlcmF0b3I9PShjb25zdCBFdmVudExpc3RlbmVyJikgPSAwOwogICAgICAgICB2aXJ0
dWFsIHZvaWQgaGFuZGxlRXZlbnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEV2ZW50KikgPSAw
OwotICAgICAgICAvLyBSZXR1cm4gdHJ1ZSB0byBpbmRpY2F0ZSB0aGF0IHRoZSBlcnJvciBpcyBo
YW5kbGVkLgotICAgICAgICB2aXJ0dWFsIGJvb2wgcmVwb3J0RXJyb3IoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCosIGNvbnN0IFN0cmluZyYgLyptZXNzYWdlKi8sIGNvbnN0IFN0cmluZyYgLyp1cmwq
LywgaW50IC8qbGluZU51bWJlciovKSB7IHJldHVybiBmYWxzZTsgfQogICAgICAgICB2aXJ0dWFs
IGJvb2wgd2FzQ3JlYXRlZEZyb21NYXJrdXAoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCiAj
aWYgVVNFKEpTQykKZGlmZiAtLWdpdCBhL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0LmNw
cCBiL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0LmNwcAppbmRleCA3YjRmMjkzLi5iZDM5
MTljIDEwMDY0NAotLS0gYS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29udGV4dC5jcHAKKysrIGIv
V2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRleHQuY3BwCkBAIC0zNiw2ICszNiw3IEBACiAjaW5j
bHVkZSAiRE9NVGltZXIuaCIKICNpbmNsdWRlICJET01XaW5kb3cuaCIKICNpbmNsdWRlICJFdmVu
dC5oIgorI2luY2x1ZGUgIkVycm9yRXZlbnQuaCIKICNpbmNsdWRlICJFdmVudEV4Y2VwdGlvbi5o
IgogI2luY2x1ZGUgIk1lc3NhZ2VQb3J0LmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIK
QEAgLTY0LDYgKzY1LDcgQEAgV29ya2VyQ29udGV4dDo6V29ya2VyQ29udGV4dChjb25zdCBLVVJM
JiB1cmwsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50LCBXb3JrZXJUaHIKICAgICAsIG1fc2NyaXB0
KG5ldyBXb3JrZXJTY3JpcHRDb250cm9sbGVyKHRoaXMpKQogICAgICwgbV90aHJlYWQodGhyZWFk
KQogICAgICwgbV9jbG9zaW5nKGZhbHNlKQorICAgICwgbV9yZXBvcnRpbmdFeGNlcHRpb24oZmFs
c2UpCiB7CiAgICAgc2V0U2VjdXJpdHlPcmlnaW4oU2VjdXJpdHlPcmlnaW46OmNyZWF0ZSh1cmwp
KTsKIH0KQEAgLTIzNCw5ICsyMzYsMTUgQEAgdm9pZCBXb3JrZXJDb250ZXh0OjppbXBvcnRTY3Jp
cHRzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB1cmxzLCBjb25zdCBTdHJpbmcmIGNhbGwKIHZvaWQg
V29ya2VyQ29udGV4dDo6cmVwb3J0RXhjZXB0aW9uKGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdl
LCBpbnQgbGluZU51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpCiB7CiAgICAgYm9vbCBl
cnJvckhhbmRsZWQgPSBmYWxzZTsKLSAgICBpZiAob25lcnJvcigpKQotICAgICAgICBlcnJvckhh
bmRsZWQgPSBvbmVycm9yKCktPnJlcG9ydEVycm9yKHRoaXMsIGVycm9yTWVzc2FnZSwgc291cmNl
VVJMLCBsaW5lTnVtYmVyKTsKLQorICAgIGlmICghbV9yZXBvcnRpbmdFeGNlcHRpb24pIHsKKyAg
ICAgICAgaWYgKG9uZXJyb3IoKSkgeworICAgICAgICAgICAgbV9yZXBvcnRpbmdFeGNlcHRpb24g
PSB0cnVlOworICAgICAgICAgICAgUmVmUHRyPEVycm9yRXZlbnQ+IGVycm9yRXZlbnQoRXJyb3JF
dmVudDo6Y3JlYXRlKGVycm9yTWVzc2FnZSwgc291cmNlVVJMLCBsaW5lTnVtYmVyKSk7CisgICAg
ICAgICAgICBvbmVycm9yKCktPmhhbmRsZUV2ZW50KHRoaXMsIGVycm9yRXZlbnQuZ2V0KCkpOwor
ICAgICAgICAgICAgZXJyb3JIYW5kbGVkID0gZXJyb3JFdmVudC0+ZGVmYXVsdFByZXZlbnRlZCgp
OworICAgICAgICAgICAgbV9yZXBvcnRpbmdFeGNlcHRpb24gPSBmYWxzZTsKKyAgICAgICAgfQor
ICAgIH0KICAgICBpZiAoIWVycm9ySGFuZGxlZCkKICAgICAgICAgdGhyZWFkKCktPndvcmtlclJl
cG9ydGluZ1Byb3h5KCkucG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0KGVycm9yTWVzc2FnZSwg
bGluZU51bWJlciwgc291cmNlVVJMKTsKIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvd29ya2Vycy9X
b3JrZXJDb250ZXh0LmggYi9XZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29udGV4dC5oCmluZGV4IGZi
NGEyNmQuLjFlNjZhNjUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0
LmgKKysrIGIvV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRleHQuaApAQCAtMTU0LDYgKzE1NCw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgbXV0YWJsZSBSZWZQdHI8Tm90aWZpY2F0
aW9uQ2VudGVyPiBtX25vdGlmaWNhdGlvbnM7CiAjZW5kaWYKICAgICAgICAgYm9vbCBtX2Nsb3Np
bmc7CisgICAgICAgIGJvb2wgbV9yZXBvcnRpbmdFeGNlcHRpb247CiAgICAgICAgIEV2ZW50VGFy
Z2V0RGF0YSBtX2V2ZW50VGFyZ2V0RGF0YTsKICAgICB9OwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>51425</attachid>
            <date>2010-03-23 07:29:21 -0700</date>
            <delta_ts>2010-03-30 02:43:27 -0700</delta_ts>
            <desc>patch</desc>
            <filename>worker-report-error3.patch</filename>
            <type>text/plain</type>
            <size>13984</size>
            <attacher name="Yury Semikhatsky">yurys</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA3ZTQ3OTA4Li41NjQzMDc3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTAtMDMt
MjMgIFl1cnkgU2VtaWtoYXRza3kgIDx5dXJ5c0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWFrZSBvbmVycm9yIGhhbmRsZXIg
aW4gd29ya2VyIGNvbnRleHQgYWNjZXB0IHNpbmdsZSBFcnJvckV2ZW50IGFyZ3VtZW50IHJhdGhl
ciB0aGFuIHRocmVlIHNlcGFyYXRlIGFyZ3VtZW50cy4KKworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzYzNzUKKworICAgICAgICAqIGZhc3Qvd29ya2Vy
cy9yZXNvdXJjZXMvc2hhcmVkLXdvcmtlci1zY3JpcHQtZXJyb3IuanM6CisgICAgICAgIChoYW5k
bGVNZXNzYWdlLmVsc2Uub25lcnJvcik6CisgICAgICAgICogZmFzdC93b3JrZXJzL3Jlc291cmNl
cy93b3JrZXItc2NyaXB0LWVycm9yLWhhbmRsZWQuanM6CisgICAgICAgIChvbmVycm9yKToKKyAg
ICAgICAgKiBmYXN0L3dvcmtlcnMvd29ya2VyLXNjcmlwdC1lcnJvci1leHBlY3RlZC50eHQ6IEV4
Y2VwdGlvbiBpbiBvbmVycm9yIGhhbmRsZXIgaXMgbm93IHJlcG9ydGVkIHRvIHRoZSB1c2VyLgor
ICAgICAgICAqIGZhc3Qvd29ya2Vycy93b3JrZXItc2NyaXB0LWVycm9yLmh0bWw6CisKIDIwMTAt
MDMtMjMgIEFsZXggTWlsb3dza2kgIDxhbGV4QG1pbG93c2tpLmNvbT4KIAogICAgICAgICBSZXZp
ZXdlZCBieSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbi4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2Zhc3Qvd29ya2Vycy9yZXNvdXJjZXMvc2hhcmVkLXdvcmtlci1zY3JpcHQtZXJyb3IuanMg
Yi9MYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvcmVzb3VyY2VzL3NoYXJlZC13b3JrZXItc2NyaXB0
LWVycm9yLmpzCmluZGV4IDdhNGE3MGYuLjIwNGE2ZjIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2Zhc3Qvd29ya2Vycy9yZXNvdXJjZXMvc2hhcmVkLXdvcmtlci1zY3JpcHQtZXJyb3IuanMKKysr
IGIvTGF5b3V0VGVzdHMvZmFzdC93b3JrZXJzL3Jlc291cmNlcy9zaGFyZWQtd29ya2VyLXNjcmlw
dC1lcnJvci5qcwpAQCAtMTEsOSArMTEsOSBAQCBmdW5jdGlvbiBoYW5kbGVNZXNzYWdlKGV2ZW50
LCBwb3J0KSB7CiAgICAgICAgIH0sIDEwMCk7CiAgICAgICAgIGdlbmVyYXRlRXJyb3IoKTsgIC8v
IFVuZGVmaW5lZCBmdW5jdGlvbiBjYWxsCiAgICAgfSBlbHNlIGlmIChldmVudC5kYXRhID09ICJo
YW5kbGVkRXJyb3IiKSB7Ci0gICAgICAgIG9uZXJyb3IgPSBmdW5jdGlvbihtZXNzYWdlLCB1cmws
IGxpbmVubykgewotICAgICAgICAgICAgcG9ydC5wb3N0TWVzc2FnZSgiU1VDQ0VTUzogZXJyb3Ig
aGFuZGxlZCB2aWEgb25lcnJvcjogIiArIG1lc3NhZ2UpOwotICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgICAgICBvbmVycm9yID0gZnVuY3Rpb24oZXZ0KSB7CisgICAgICAgICAgICBwb3J0
LnBvc3RNZXNzYWdlKCJTVUNDRVNTOiBlcnJvciBoYW5kbGVkIHZpYSBvbmVycm9yOiAiICsgZXZ0
Lm1lc3NhZ2UpOworICAgICAgICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgIH07
CiAgICAgICAgIGdlbmVyYXRlRXJyb3IoKTsgIC8vIFVuZGVmaW5lZCBmdW5jdGlvbiBjYWxsCiAg
ICAgfSBlbHNlIHsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy9yZXNvdXJj
ZXMvd29ya2VyLXNjcmlwdC1lcnJvci1oYW5kbGVkLmpzIGIvTGF5b3V0VGVzdHMvZmFzdC93b3Jr
ZXJzL3Jlc291cmNlcy93b3JrZXItc2NyaXB0LWVycm9yLWhhbmRsZWQuanMKaW5kZXggNTBkOTA3
Ny4uMWNmMDAyNiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC93b3JrZXJzL3Jlc291cmNl
cy93b3JrZXItc2NyaXB0LWVycm9yLWhhbmRsZWQuanMKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC93
b3JrZXJzL3Jlc291cmNlcy93b3JrZXItc2NyaXB0LWVycm9yLWhhbmRsZWQuanMKQEAgLTEsNyAr
MSw3IEBACi1vbmVycm9yID0gZnVuY3Rpb24obWVzc2FnZSwgdXJsLCBsaW5lbm8pCitvbmVycm9y
ID0gZnVuY3Rpb24oZXZ0KQogewotICAgIHBvc3RNZXNzYWdlKCJvbmVycm9yIGludm9rZWQgZm9y
IGEgc2NyaXB0IHRoYXQgaGFzIHNjcmlwdCBlcnJvciAnIiArIG1lc3NhZ2UgKyAiJyBhdCBsaW5l
ICIgKyBsaW5lbm8pOwotICAgIHJldHVybiBmYWxzZTsKKyAgICBwb3N0TWVzc2FnZSgib25lcnJv
ciBpbnZva2VkIGZvciBhIHNjcmlwdCB0aGF0IGhhcyBzY3JpcHQgZXJyb3IgJyIgKyBldnQubWVz
c2FnZSArICInIGF0IGxpbmUgIiArIGV2dC5saW5lbm8pOworICAgIGV2dC5wcmV2ZW50RGVmYXVs
dCgpOwogfQogCiBmb28uYmFyID0gMDsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvd29y
a2Vycy93b3JrZXItc2NyaXB0LWVycm9yLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3Qv
d29ya2Vycy93b3JrZXItc2NyaXB0LWVycm9yLWV4cGVjdGVkLnR4dAppbmRleCBkNTM1ZTdkLi4x
MGFiMDQ5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvd29ya2VyLXNjcmlw
dC1lcnJvci1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC93b3JrZXJzL3dvcmtl
ci1zY3JpcHQtZXJyb3ItZXhwZWN0ZWQudHh0CkBAIC00LDYgKzQsNyBAQCBUZXN0IFdvcmtlciBz
Y3JpcHQgZXJyb3IgaGFuZGxpbmcgZnVuY3Rpb25hbGl0eS4gU2hvdWxkIHByaW50IGEgc2VyaWVz
IG9mIFBBU1MgbQogUEFTUzogb25lcnJvciBpbnZva2VkIGZvciBhIHNjcmlwdCB0aGF0IGhhcyBp
bnZhbGlkIHN5bnRheC4KIFBBU1M6IG9uZXJyb3IgaW52b2tlZCBmb3IgYSBzY3JpcHQgdGhhdCBo
YXMgc2NyaXB0IGVycm9yICdSZWZlcmVuY2VFcnJvcjogQ2FuJ3QgZmluZCB2YXJpYWJsZTogZm9v
JyBhdCBsaW5lIDEuCiBQQVNTOiBldmVudCBsaXN0ZW5lciBpbnZva2VkIGZvciBhIHNjcmlwdCB0
aGF0IGhhcyBzY3JpcHQgZXJyb3IgJ1JlZmVyZW5jZUVycm9yOiBDYW4ndCBmaW5kIHZhcmlhYmxl
OiBmb28nIGF0IGxpbmUgMS4KK1BBU1M6IG9uZXJyb3IgaW52b2tlZCBmb3IgYSBzY3JpcHQgdGhh
dCBoYXMgc2NyaXB0IGVycm9yICdSZWZlcmVuY2VFcnJvcjogQ2FuJ3QgZmluZCB2YXJpYWJsZTog
YmFyJyBhdCBsaW5lIDMuCiBQQVNTOiBvbmVycm9yIGludm9rZWQgZm9yIGEgc2NyaXB0IHRoYXQg
aGFzIHNjcmlwdCBlcnJvciAnUmVmZXJlbmNlRXJyb3I6IENhbid0IGZpbmQgdmFyaWFibGU6IGZv
bycgYXQgbGluZSA3LgogUEFTUzogb25lcnJvciBpbnZva2VkIGZvciBhIHNjcmlwdCB0aGF0IGhh
cyBzY3JpcHQgZXJyb3IgJ1JlZmVyZW5jZUVycm9yOiBDYW4ndCBmaW5kIHZhcmlhYmxlOiBmb28n
IGF0IGxpbmUgNy4KIFBBU1M6IG9uZXJyb3IgaW52b2tlZCBmb3IgYSBzY3JpcHQgdGhhdCBoYXMg
c2NyaXB0IGVycm9yICdSZWZlcmVuY2VFcnJvcjogQ2FuJ3QgZmluZCB2YXJpYWJsZTogZm9vJyBh
dCBsaW5lIDcuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvd29ya2VyLXNj
cmlwdC1lcnJvci5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC93b3JrZXJzL3dvcmtlci1zY3JpcHQt
ZXJyb3IuaHRtbAppbmRleCBhZDk2Zjc2Li4yYmEyZWFiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9mYXN0L3dvcmtlcnMvd29ya2VyLXNjcmlwdC1lcnJvci5odG1sCisrKyBiL0xheW91dFRlc3Rz
L2Zhc3Qvd29ya2Vycy93b3JrZXItc2NyaXB0LWVycm9yLmh0bWwKQEAgLTgxLDkgKzgxLDEzIEBA
IGZ1bmN0aW9uIHRlc3RFcnJvckluSGFuZGxpbmdTY3JpcHRFcnJvcigpCiB7CiAgICAgdHJ5IHsK
ICAgICAgICAgdmFyIHdvcmtlciA9IG5ldyBXb3JrZXIoInJlc291cmNlcy93b3JrZXItZXJyb3It
aW4taGFuZGxpbmctc2NyaXB0LWVycm9yLmpzIik7CisgICAgICAgIHZhciBlcnJvckNvdW50ID0g
MDsKICAgICAgICAgd29ya2VyLm9uZXJyb3IgPSBmdW5jdGlvbihldnQpIHsKICAgICAgICAgICAg
IGxvZygiUEFTUzogb25lcnJvciBpbnZva2VkIGZvciBhIHNjcmlwdCB0aGF0IGhhcyBzY3JpcHQg
ZXJyb3IgJyIgKyBldnQubWVzc2FnZSArICInIGF0IGxpbmUgIiArIGV2dC5saW5lbm8gKyAiLiIp
OwotICAgICAgICAgICAgcnVuTmV4dFRlc3QoKTsKKyAgICAgICAgICAgICsrZXJyb3JDb3VudDsK
KyAgICAgICAgICAgIC8vIFNlY29uZCBlcnJvciBoYXBwZW5zIGluIHRoZSBvbmVycm9yIGhhbmRs
ZXIuIFJ1biBuZXh0IHRlc3Qgb25seSB3aGVuIGl0J3MgcmVwb3J0ZWQuCisgICAgICAgICAgICBp
ZiAoZXJyb3JDb3VudCA9PSAyKQorICAgICAgICAgICAgICAgIHJ1bk5leHRUZXN0KCk7CiAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICB9IGNhdGNoIChleCkgewpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBlMDlm
ZjdhLi4xMjBjMjNhIDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3Jl
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDEwLTAzLTIzICBZdXJ5IFNlbWlraGF0c2t5
ICA8eXVyeXNAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFRyZWF0IHdvcmtlcidzIG9uZXJyb3IgaGFuZGxlciBhcyBhbiBFdmVu
dExpc3RlbmVyKGFzIGl0IGRlc2NyaWJlZCBpbiB0aGUgc3BlYykgYW5kIGludm9rZSBpdCB3aXRo
IGEgc2luZ2xlIEVycm9yRXZlbnQgcGFyYW1ldGVyIGluc3RlYWQgb2YgdGhyZWUgc2VwYXJhdGUg
YXJndW1lbnRzLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0zNjM3NQorCisgICAgICAgICogYmluZGluZ3MvanMvSlNFdmVudExpc3RlbmVyLmNwcDoK
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0V2ZW50TGlzdGVuZXIuaDoKKyAgICAgICAgKiBiaW5k
aW5ncy92OC9WOFdvcmtlckNvbnRleHRFdmVudExpc3RlbmVyLmNwcDoKKyAgICAgICAgKiBiaW5k
aW5ncy92OC9WOFdvcmtlckNvbnRleHRFdmVudExpc3RlbmVyLmg6CisgICAgICAgICogZG9tL0V2
ZW50TGlzdGVuZXIuaDogUmVtb3ZlIEV2ZW50TGlzdGVuZXI6OnJlcG9ydEVycm9yIHdoaWNoIGlz
IG9ubHkgdXNlZCBmb3IgcmVwb3J0aW5nIHdvcmtlciBlcnJvcnMuCisgICAgICAgICogd29ya2Vy
cy9Xb3JrZXJDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckNvbnRleHQ6Oldv
cmtlckNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyQ29udGV4dDo6cmVwb3J0RXhj
ZXB0aW9uKToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckNvbnRleHQuaDoKKwogMjAxMC0wMy0y
MyAgQWxleCBNaWxvd3NraSAgPGFsZXhAbWlsb3dza2kuY29tPgogCiAgICAgICAgIFJldmlld2Vk
IGJ5IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0V2ZW50TGlzdGVuZXIuY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50
TGlzdGVuZXIuY3BwCmluZGV4IGJlMDQ5ZGIuLmIwMGQ2NTQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNFdmVudExpc3RlbmVyLmNwcAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRXZlbnRMaXN0ZW5lci5jcHAKQEAgLTEzMyw0NyArMTMzLDYgQEAgdm9pZCBKU0V2ZW50TGlz
dGVuZXI6OmhhbmRsZUV2ZW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQKICAgICB9CiB9CiAKLWJvb2wgSlNFdmVudExpc3RlbmVyOjpyZXBvcnRFcnJvcihT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNv
bnN0IFN0cmluZyYgdXJsLCBpbnQgbGluZU51bWJlcikKLXsKLSAgICBKU0xvY2sgbG9jayhTaWxl
bmNlQXNzZXJ0aW9uc09ubHkpOwotCi0gICAgSlNPYmplY3QqIGpzRnVuY3Rpb24gPSB0aGlzLT5q
c0Z1bmN0aW9uKGNvbnRleHQpOwotICAgIGlmICghanNGdW5jdGlvbikKLSAgICAgICAgcmV0dXJu
IGZhbHNlOwotCi0gICAgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IHRvSlNET01H
bG9iYWxPYmplY3QoY29udGV4dCwgbV9pc29sYXRlZFdvcmxkLmdldCgpKTsKLSAgICBFeGVjU3Rh
dGUqIGV4ZWMgPSBnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKTsKLQotICAgIENhbGxEYXRhIGNh
bGxEYXRhOwotICAgIENhbGxUeXBlIGNhbGxUeXBlID0ganNGdW5jdGlvbi0+Z2V0Q2FsbERhdGEo
Y2FsbERhdGEpOwotCi0gICAgaWYgKGNhbGxUeXBlID09IENhbGxUeXBlTm9uZSkKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotCi0gICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJnczsKLSAgICBhcmdz
LmFwcGVuZChqc1N0cmluZyhleGVjLCBtZXNzYWdlKSk7Ci0gICAgYXJncy5hcHBlbmQoanNTdHJp
bmcoZXhlYywgdXJsKSk7Ci0gICAgYXJncy5hcHBlbmQoanNOdW1iZXIoZXhlYywgbGluZU51bWJl
cikpOwotCi0gICAgSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhID0gZ2xvYmFsT2JqZWN0LT5nbG9i
YWxEYXRhKCk7Ci0gICAgRHluYW1pY0dsb2JhbE9iamVjdFNjb3BlIGdsb2JhbE9iamVjdFNjb3Bl
KGV4ZWMsIGdsb2JhbERhdGEtPmR5bmFtaWNHbG9iYWxPYmplY3QgPyBnbG9iYWxEYXRhLT5keW5h
bWljR2xvYmFsT2JqZWN0IDogZ2xvYmFsT2JqZWN0KTsgICAgCi0KLSAgICBKU1ZhbHVlIHRoaXNW
YWx1ZSA9IGdsb2JhbE9iamVjdC0+dG9UaGlzT2JqZWN0KGV4ZWMpOwotCi0gICAgZ2xvYmFsRGF0
YS0+dGltZW91dENoZWNrZXIuc3RhcnQoKTsKLSAgICBKU1ZhbHVlIHJldHVyblZhbHVlID0gSlND
OjpjYWxsKGV4ZWMsIGpzRnVuY3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0YSwgdGhpc1ZhbHVlLCBh
cmdzKTsKLSAgICBnbG9iYWxEYXRhLT50aW1lb3V0Q2hlY2tlci5zdG9wKCk7Ci0KLSAgICAvLyBJ
ZiBhbiBlcnJvciBvY2N1cnMgd2hpbGUgaGFuZGxpbmcgdGhlIHNjcmlwdCBlcnJvciwgaXQgc2hv
dWxkIGJlIGJ1YmJsZWQgdXAuCi0gICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKSB7Ci0gICAg
ICAgIGV4ZWMtPmNsZWFyRXhjZXB0aW9uKCk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9
Ci0gICAgCi0gICAgYm9vbCBidWJibGVFdmVudDsKLSAgICByZXR1cm4gcmV0dXJuVmFsdWUuZ2V0
Qm9vbGVhbihidWJibGVFdmVudCkgJiYgIWJ1YmJsZUV2ZW50OwotfQotCiBib29sIEpTRXZlbnRM
aXN0ZW5lcjo6dmlydHVhbGlzQXR0cmlidXRlKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9pc0F0
dHJpYnV0ZTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudExpc3RlbmVy
LmggYi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5oCmluZGV4IDU2OWMxOTIu
LmIxNWM1ODkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudExpc3RlbmVy
LmgKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50TGlzdGVuZXIuaApAQCAtNjAsNyAr
NjAsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBtYXJrSlNG
dW5jdGlvbihKU0M6Ok1hcmtTdGFjayYpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0
ZUpTRnVuY3Rpb24oSlNDOjpKU09iamVjdCopOwogICAgICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxl
RXZlbnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEV2ZW50Kik7Ci0gICAgICAgIHZpcnR1YWwg
Ym9vbCByZXBvcnRFcnJvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiBt
ZXNzYWdlLCBjb25zdCBTdHJpbmcmIHVybCwgaW50IGxpbmVOdW1iZXIpOwogICAgICAgICB2aXJ0
dWFsIGJvb2wgdmlydHVhbGlzQXR0cmlidXRlKCkgY29uc3Q7CiAKICAgICBwcm90ZWN0ZWQ6CmRp
ZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4V29ya2VyQ29udGV4dEV2ZW50TGlzdGVu
ZXIuY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFdvcmtlckNvbnRleHRFdmVudExpc3RlbmVy
LmNwcAppbmRleCBmYTg5YWU2Li4zMGI5ODY1IDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L1Y4V29ya2VyQ29udGV4dEV2ZW50TGlzdGVuZXIuY3BwCisrKyBiL1dlYkNvcmUvYmluZGlu
Z3MvdjgvVjhXb3JrZXJDb250ZXh0RXZlbnRMaXN0ZW5lci5jcHAKQEAgLTgyLDU2ICs4Miw2IEBA
IHZvaWQgVjhXb3JrZXJDb250ZXh0RXZlbnRMaXN0ZW5lcjo6aGFuZGxlRXZlbnQoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogY29udGV4dCwKICAgICBpbnZva2VFdmVudEhhbmRsZXIoY29udGV4dCwg
ZXZlbnQsIGpzRXZlbnQpOwogfQogCi1ib29sIFY4V29ya2VyQ29udGV4dEV2ZW50TGlzdGVuZXI6
OnJlcG9ydEVycm9yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmlu
ZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiB1cmwsIGludCBsaW5lTnVtYmVyKQotewotICAgIGlm
ICghY29udGV4dCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgLy8gVGhlIGNhbGxiYWNr
IGZ1bmN0aW9uIGNhbiBjbGVhciB0aGUgZXZlbnQgbGlzdGVuZXIgYW5kIGRlc3Ryb3kgJ3RoaXMn
IG9iamVjdC4gS2VlcCBhIGxvY2FsIHJlZmVyZW5jZSB0byBpdC4KLSAgICBSZWZQdHI8VjhBYnN0
cmFjdEV2ZW50TGlzdGVuZXI+IHByb3RlY3QodGhpcyk7Ci0KLSAgICB2ODo6SGFuZGxlU2NvcGUg
aGFuZGxlU2NvcGU7Ci0KLSAgICBXb3JrZXJDb250ZXh0RXhlY3V0aW9uUHJveHkqIHByb3h5ID0g
d29ya2VyUHJveHkoY29udGV4dCk7Ci0gICAgaWYgKCFwcm94eSkKLSAgICAgICAgcmV0dXJuIGZh
bHNlOwotCi0gICAgdjg6OkhhbmRsZTx2ODo6Q29udGV4dD4gdjhDb250ZXh0ID0gcHJveHktPmNv
bnRleHQoKTsKLSAgICBpZiAodjhDb250ZXh0LklzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIGZh
bHNlOwotCi0gICAgLy8gRW50ZXIgdGhlIFY4IGNvbnRleHQgaW4gd2hpY2ggdG8gcGVyZm9ybSB0
aGUgZXZlbnQgaGFuZGxpbmcuCi0gICAgdjg6OkNvbnRleHQ6OlNjb3BlIHNjb3BlKHY4Q29udGV4
dCk7Ci0KLSAgICB2ODo6TG9jYWw8djg6Ok9iamVjdD4gbGlzdGVuZXIgPSBnZXRMaXN0ZW5lck9i
amVjdChjb250ZXh0KTsKLSAgICB2ODo6TG9jYWw8djg6OlZhbHVlPiByZXR1cm5WYWx1ZTsKLSAg
ICB7Ci0gICAgICAgIC8vIENhdGNoIGV4Y2VwdGlvbnMgdGhyb3duIGluIGNhbGxpbmcgdGhlIGZ1
bmN0aW9uIHNvIHRoZXkgZG8gbm90IHByb3BhZ2F0ZSB0byBqYXZhc2NyaXB0IGNvZGUgdGhhdCBj
YXVzZWQgdGhlIGV2ZW50IHRvIGZpcmUuCi0gICAgICAgIHY4OjpUcnlDYXRjaCB0cnlDYXRjaDsK
LSAgICAgICAgdHJ5Q2F0Y2guU2V0VmVyYm9zZSh0cnVlKTsKLQotICAgICAgICAvLyBDYWxsIHRo
ZSBmdW5jdGlvbi4KLSAgICAgICAgaWYgKCFsaXN0ZW5lci5Jc0VtcHR5KCkgJiYgbGlzdGVuZXIt
PklzRnVuY3Rpb24oKSkgewotICAgICAgICAgICAgdjg6OkxvY2FsPHY4OjpGdW5jdGlvbj4gY2Fs
bEZ1bmN0aW9uID0gdjg6OkxvY2FsPHY4OjpGdW5jdGlvbj46OkNhc3QobGlzdGVuZXIpOwotICAg
ICAgICAgICAgdjg6OkxvY2FsPHY4OjpPYmplY3Q+IHRoaXNWYWx1ZSA9IHY4OjpDb250ZXh0OjpH
ZXRDdXJyZW50KCktPkdsb2JhbCgpOwotCi0gICAgICAgICAgICB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gcGFyYW1ldGVyc1szXSA9IHsgdjhTdHJpbmcobWVzc2FnZSksIHY4U3RyaW5nKHVybCksIHY4
OjpJbnRlZ2VyOjpOZXcobGluZU51bWJlcikgfTsKLSAgICAgICAgICAgIHJldHVyblZhbHVlID0g
Y2FsbEZ1bmN0aW9uLT5DYWxsKHRoaXNWYWx1ZSwgMywgcGFyYW1ldGVycyk7Ci0gICAgICAgIH0K
LQotICAgICAgICAvLyBJZiBhbiBlcnJvciBvY2N1cnMgd2hpbGUgaGFuZGxpbmcgdGhlIHNjcmlw
dCBlcnJvciwgaXQgc2hvdWxkIGJlIGJ1YmJsZWQgdXAuCi0gICAgICAgIGlmICh0cnlDYXRjaC5I
YXNDYXVnaHQoKSkgewotICAgICAgICAgICAgdHJ5Q2F0Y2guUmVzZXQoKTsKLSAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIC8vIElmIHRoZSBmdW5jdGlv
biByZXR1cm5zIGZhbHNlLCB0aGVuIHRoZSBlcnJvciBpcyBoYW5kbGVkLiBPdGhlcndpc2UsIHRo
ZSBlcnJvciBpcyBub3QgaGFuZGxlZC4KLSAgICBib29sIGVycm9ySGFuZGxlZCA9IHJldHVyblZh
bHVlLT5Jc0Jvb2xlYW4oKSAmJiAhcmV0dXJuVmFsdWUtPkJvb2xlYW5WYWx1ZSgpOwotCi0gICAg
cmV0dXJuIGVycm9ySGFuZGxlZDsKLX0KLQogdjg6OkxvY2FsPHY4OjpWYWx1ZT4gVjhXb3JrZXJD
b250ZXh0RXZlbnRMaXN0ZW5lcjo6Y2FsbExpc3RlbmVyRnVuY3Rpb24oU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogY29udGV4dCwgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGpzRXZlbnQsIEV2ZW50KiBl
dmVudCkKIHsKICAgICB2ODo6TG9jYWw8djg6OkZ1bmN0aW9uPiBoYW5kbGVyRnVuY3Rpb24gPSBn
ZXRMaXN0ZW5lckZ1bmN0aW9uKGNvbnRleHQpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5n
cy92OC9WOFdvcmtlckNvbnRleHRFdmVudExpc3RlbmVyLmggYi9XZWJDb3JlL2JpbmRpbmdzL3Y4
L1Y4V29ya2VyQ29udGV4dEV2ZW50TGlzdGVuZXIuaAppbmRleCA0NDg3NDk3Li44YmIwMjI3IDEw
MDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4V29ya2VyQ29udGV4dEV2ZW50TGlzdGVu
ZXIuaAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4V29ya2VyQ29udGV4dEV2ZW50TGlzdGVu
ZXIuaApAQCAtNTAsNyArNTAsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIH0KIAog
ICAgICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlRXZlbnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCos
IEV2ZW50Kik7Ci0gICAgICAgIHZpcnR1YWwgYm9vbCByZXBvcnRFcnJvcihTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIHVybCwgaW50
IGxpbmVOdW1iZXIpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgVjhXb3JrZXJDb250ZXh0RXZl
bnRMaXN0ZW5lcih2ODo6TG9jYWw8djg6Ok9iamVjdD4gbGlzdGVuZXIsIGJvb2wgaXNJbmxpbmUs
IGNvbnN0IFdvcmxkQ29udGV4dEhhbmRsZSYgd29ybGRDb250ZXh0KTsKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvZG9tL0V2ZW50TGlzdGVuZXIuaCBiL1dlYkNvcmUvZG9tL0V2ZW50TGlzdGVuZXIuaApp
bmRleCA4YTM1OTIyLi5kN2M5NTBmIDEwMDY0NAotLS0gYS9XZWJDb3JlL2RvbS9FdmVudExpc3Rl
bmVyLmgKKysrIGIvV2ViQ29yZS9kb20vRXZlbnRMaXN0ZW5lci5oCkBAIC00Niw4ICs0Niw2IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCB+RXZlbnRMaXN0ZW5lcigpIHsg
fQogICAgICAgICB2aXJ0dWFsIGJvb2wgb3BlcmF0b3I9PShjb25zdCBFdmVudExpc3RlbmVyJikg
PSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlRXZlbnQoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCosIEV2ZW50KikgPSAwOwotICAgICAgICAvLyBSZXR1cm4gdHJ1ZSB0byBpbmRpY2F0ZSB0
aGF0IHRoZSBlcnJvciBpcyBoYW5kbGVkLgotICAgICAgICB2aXJ0dWFsIGJvb2wgcmVwb3J0RXJy
b3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYgLyptZXNzYWdlKi8sIGNv
bnN0IFN0cmluZyYgLyp1cmwqLywgaW50IC8qbGluZU51bWJlciovKSB7IHJldHVybiBmYWxzZTsg
fQogICAgICAgICB2aXJ0dWFsIGJvb2wgd2FzQ3JlYXRlZEZyb21NYXJrdXAoKSBjb25zdCB7IHJl
dHVybiBmYWxzZTsgfQogCiAjaWYgVVNFKEpTQykKZGlmZiAtLWdpdCBhL1dlYkNvcmUvd29ya2Vy
cy9Xb3JrZXJDb250ZXh0LmNwcCBiL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0LmNwcApp
bmRleCA3YjRmMjkzLi4xYTg2MTI3IDEwMDY0NAotLS0gYS9XZWJDb3JlL3dvcmtlcnMvV29ya2Vy
Q29udGV4dC5jcHAKKysrIGIvV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRleHQuY3BwCkBAIC0z
Miw5ICszMiwxMCBAQAogI2luY2x1ZGUgIldvcmtlckNvbnRleHQuaCIKIAogI2luY2x1ZGUgIkFj
dGl2ZURPTU9iamVjdC5oIgotI2luY2x1ZGUgIkRhdGFiYXNlLmgiCiAjaW5jbHVkZSAiRE9NVGlt
ZXIuaCIKICNpbmNsdWRlICJET01XaW5kb3cuaCIKKyNpbmNsdWRlICJEYXRhYmFzZS5oIgorI2lu
Y2x1ZGUgIkVycm9yRXZlbnQuaCIKICNpbmNsdWRlICJFdmVudC5oIgogI2luY2x1ZGUgIkV2ZW50
RXhjZXB0aW9uLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVBvcnQuaCIKQEAgLTY0LDYgKzY1LDcgQEAg
V29ya2VyQ29udGV4dDo6V29ya2VyQ29udGV4dChjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmlu
ZyYgdXNlckFnZW50LCBXb3JrZXJUaHIKICAgICAsIG1fc2NyaXB0KG5ldyBXb3JrZXJTY3JpcHRD
b250cm9sbGVyKHRoaXMpKQogICAgICwgbV90aHJlYWQodGhyZWFkKQogICAgICwgbV9jbG9zaW5n
KGZhbHNlKQorICAgICwgbV9yZXBvcnRpbmdFeGNlcHRpb24oZmFsc2UpCiB7CiAgICAgc2V0U2Vj
dXJpdHlPcmlnaW4oU2VjdXJpdHlPcmlnaW46OmNyZWF0ZSh1cmwpKTsKIH0KQEAgLTIzNCw5ICsy
MzYsMTUgQEAgdm9pZCBXb3JrZXJDb250ZXh0OjppbXBvcnRTY3JpcHRzKGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiB1cmxzLCBjb25zdCBTdHJpbmcmIGNhbGwKIHZvaWQgV29ya2VyQ29udGV4dDo6cmVw
b3J0RXhjZXB0aW9uKGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlLCBpbnQgbGluZU51bWJlciwg
Y29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpCiB7CiAgICAgYm9vbCBlcnJvckhhbmRsZWQgPSBmYWxz
ZTsKLSAgICBpZiAob25lcnJvcigpKQotICAgICAgICBlcnJvckhhbmRsZWQgPSBvbmVycm9yKCkt
PnJlcG9ydEVycm9yKHRoaXMsIGVycm9yTWVzc2FnZSwgc291cmNlVVJMLCBsaW5lTnVtYmVyKTsK
LQorICAgIGlmICghbV9yZXBvcnRpbmdFeGNlcHRpb24pIHsKKyAgICAgICAgaWYgKG9uZXJyb3Io
KSkgeworICAgICAgICAgICAgbV9yZXBvcnRpbmdFeGNlcHRpb24gPSB0cnVlOworICAgICAgICAg
ICAgUmVmUHRyPEVycm9yRXZlbnQ+IGVycm9yRXZlbnQoRXJyb3JFdmVudDo6Y3JlYXRlKGVycm9y
TWVzc2FnZSwgc291cmNlVVJMLCBsaW5lTnVtYmVyKSk7CisgICAgICAgICAgICBvbmVycm9yKCkt
PmhhbmRsZUV2ZW50KHRoaXMsIGVycm9yRXZlbnQuZ2V0KCkpOworICAgICAgICAgICAgZXJyb3JI
YW5kbGVkID0gZXJyb3JFdmVudC0+ZGVmYXVsdFByZXZlbnRlZCgpOworICAgICAgICAgICAgbV9y
ZXBvcnRpbmdFeGNlcHRpb24gPSBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KICAgICBpZiAoIWVy
cm9ySGFuZGxlZCkKICAgICAgICAgdGhyZWFkKCktPndvcmtlclJlcG9ydGluZ1Byb3h5KCkucG9z
dEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0KGVycm9yTWVzc2FnZSwgbGluZU51bWJlciwgc291cmNl
VVJMKTsKIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0LmggYi9X
ZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29udGV4dC5oCmluZGV4IGZiNGEyNmQuLjFlNjZhNjUgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0LmgKKysrIGIvV2ViQ29yZS93
b3JrZXJzL1dvcmtlckNvbnRleHQuaApAQCAtMTU0LDYgKzE1NCw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICAgICAgbXV0YWJsZSBSZWZQdHI8Tm90aWZpY2F0aW9uQ2VudGVyPiBtX25vdGlm
aWNhdGlvbnM7CiAjZW5kaWYKICAgICAgICAgYm9vbCBtX2Nsb3Npbmc7CisgICAgICAgIGJvb2wg
bV9yZXBvcnRpbmdFeGNlcHRpb247CiAgICAgICAgIEV2ZW50VGFyZ2V0RGF0YSBtX2V2ZW50VGFy
Z2V0RGF0YTsKICAgICB9OwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>52016</attachid>
            <date>2010-03-30 02:43:27 -0700</date>
            <delta_ts>2010-03-30 03:04:09 -0700</delta_ts>
            <desc>patch</desc>
            <filename>worker-report-error4.patch</filename>
            <type>text/plain</type>
            <size>36170</size>
            <attacher name="Yury Semikhatsky">yurys</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBiZTRkMmU3Li40ZDAxOTZkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMTYgQEAKIDIwMTAtMDMt
MzAgIFl1cnkgU2VtaWtoYXRza3kgIDx5dXJ5c0BjaHJvbWl1bS5vcmc+CiAKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdCB0aGF0IGV4Y2VwdGlvbiB3
aGljaCBvY2N1cnMgaW4gb25lcnJvciBoYW5kbGVyIGlzIHJlcG9ydGVkIHRvIHRoZSBXb3JrZXIg
b2JqZWN0LgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0zNjM3NQorCisgICAgICAgICogZmFzdC93b3JrZXJzL3dvcmtlci1zY3JpcHQtZXJyb3ItZXhw
ZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3Qvd29ya2Vycy93b3JrZXItc2NyaXB0LWVycm9yLmh0
bWw6CisKKzIwMTAtMDMtMzAgIFl1cnkgU2VtaWtoYXRza3kgIDx5dXJ5c0BjaHJvbWl1bS5vcmc+
CisKICAgICAgICAgUmV2aWV3ZWQgYnkgUGF2ZWwgRmVsZG1hbi4KIAogICAgICAgICBTa2lwIGh0
dHAvdGVzdHMvaW5zcGVjdG9yLWVuYWJsZWQgb24gTGludXggYW5kIE1hYyB3aGVyZSBMYXlvdXRU
ZXN0Q29udG9sbGVyIGRvZXNuJ3Qgc3VwcG9ydCBpbnNwZWN0b3IgbWV0aG9kcyB5ZXQuCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvd29ya2VyLXNjcmlwdC1lcnJvci1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvd29ya2VyLXNjcmlwdC1lcnJvci1l
eHBlY3RlZC50eHQKaW5kZXggZDUzNWU3ZC4uMTBhYjA0OSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvZmFzdC93b3JrZXJzL3dvcmtlci1zY3JpcHQtZXJyb3ItZXhwZWN0ZWQudHh0CisrKyBiL0xh
eW91dFRlc3RzL2Zhc3Qvd29ya2Vycy93b3JrZXItc2NyaXB0LWVycm9yLWV4cGVjdGVkLnR4dApA
QCAtNCw2ICs0LDcgQEAgVGVzdCBXb3JrZXIgc2NyaXB0IGVycm9yIGhhbmRsaW5nIGZ1bmN0aW9u
YWxpdHkuIFNob3VsZCBwcmludCBhIHNlcmllcyBvZiBQQVNTIG0KIFBBU1M6IG9uZXJyb3IgaW52
b2tlZCBmb3IgYSBzY3JpcHQgdGhhdCBoYXMgaW52YWxpZCBzeW50YXguCiBQQVNTOiBvbmVycm9y
IGludm9rZWQgZm9yIGEgc2NyaXB0IHRoYXQgaGFzIHNjcmlwdCBlcnJvciAnUmVmZXJlbmNlRXJy
b3I6IENhbid0IGZpbmQgdmFyaWFibGU6IGZvbycgYXQgbGluZSAxLgogUEFTUzogZXZlbnQgbGlz
dGVuZXIgaW52b2tlZCBmb3IgYSBzY3JpcHQgdGhhdCBoYXMgc2NyaXB0IGVycm9yICdSZWZlcmVu
Y2VFcnJvcjogQ2FuJ3QgZmluZCB2YXJpYWJsZTogZm9vJyBhdCBsaW5lIDEuCitQQVNTOiBvbmVy
cm9yIGludm9rZWQgZm9yIGEgc2NyaXB0IHRoYXQgaGFzIHNjcmlwdCBlcnJvciAnUmVmZXJlbmNl
RXJyb3I6IENhbid0IGZpbmQgdmFyaWFibGU6IGJhcicgYXQgbGluZSAzLgogUEFTUzogb25lcnJv
ciBpbnZva2VkIGZvciBhIHNjcmlwdCB0aGF0IGhhcyBzY3JpcHQgZXJyb3IgJ1JlZmVyZW5jZUVy
cm9yOiBDYW4ndCBmaW5kIHZhcmlhYmxlOiBmb28nIGF0IGxpbmUgNy4KIFBBU1M6IG9uZXJyb3Ig
aW52b2tlZCBmb3IgYSBzY3JpcHQgdGhhdCBoYXMgc2NyaXB0IGVycm9yICdSZWZlcmVuY2VFcnJv
cjogQ2FuJ3QgZmluZCB2YXJpYWJsZTogZm9vJyBhdCBsaW5lIDcuCiBQQVNTOiBvbmVycm9yIGlu
dm9rZWQgZm9yIGEgc2NyaXB0IHRoYXQgaGFzIHNjcmlwdCBlcnJvciAnUmVmZXJlbmNlRXJyb3I6
IENhbid0IGZpbmQgdmFyaWFibGU6IGZvbycgYXQgbGluZSA3LgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZmFzdC93b3JrZXJzL3dvcmtlci1zY3JpcHQtZXJyb3IuaHRtbCBiL0xheW91dFRlc3Rz
L2Zhc3Qvd29ya2Vycy93b3JrZXItc2NyaXB0LWVycm9yLmh0bWwKaW5kZXggYWQ5NmY3Ni4uMmJh
MmVhYiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC93b3JrZXJzL3dvcmtlci1zY3JpcHQt
ZXJyb3IuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvd29ya2VyLXNjcmlwdC1l
cnJvci5odG1sCkBAIC04MSw5ICs4MSwxMyBAQCBmdW5jdGlvbiB0ZXN0RXJyb3JJbkhhbmRsaW5n
U2NyaXB0RXJyb3IoKQogewogICAgIHRyeSB7CiAgICAgICAgIHZhciB3b3JrZXIgPSBuZXcgV29y
a2VyKCJyZXNvdXJjZXMvd29ya2VyLWVycm9yLWluLWhhbmRsaW5nLXNjcmlwdC1lcnJvci5qcyIp
OworICAgICAgICB2YXIgZXJyb3JDb3VudCA9IDA7CiAgICAgICAgIHdvcmtlci5vbmVycm9yID0g
ZnVuY3Rpb24oZXZ0KSB7CiAgICAgICAgICAgICBsb2coIlBBU1M6IG9uZXJyb3IgaW52b2tlZCBm
b3IgYSBzY3JpcHQgdGhhdCBoYXMgc2NyaXB0IGVycm9yICciICsgZXZ0Lm1lc3NhZ2UgKyAiJyBh
dCBsaW5lICIgKyBldnQubGluZW5vICsgIi4iKTsKLSAgICAgICAgICAgIHJ1bk5leHRUZXN0KCk7
CisgICAgICAgICAgICArK2Vycm9yQ291bnQ7CisgICAgICAgICAgICAvLyBTZWNvbmQgZXJyb3Ig
aGFwcGVucyBpbiB0aGUgb25lcnJvciBoYW5kbGVyLiBSdW4gbmV4dCB0ZXN0IG9ubHkgd2hlbiBp
dCdzIHJlcG9ydGVkLgorICAgICAgICAgICAgaWYgKGVycm9yQ291bnQgPT0gMikKKyAgICAgICAg
ICAgICAgICBydW5OZXh0VGVzdCgpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAg
ICB9CiAgICAgfSBjYXRjaCAoZXgpIHsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIv
V2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDI2NTgyNy4uNjM4NWZmNCAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MCBAQAor
MjAxMC0wMy0zMCAgWXVyeSBTZW1pa2hhdHNreSAgPHl1cnlzQGNocm9taXVtLm9yZz4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVbmNhdWdodCBXb3Jr
ZXIgZXhjZXB0aW9ucyB0aGF0IGhhcHBlbiBub3QgaW4gZXZlbnQgbGlzdGVuZXJzIHdpbGwgYmUg
cmVwb3J0ZWQgdG8gdGhlIHVzZXIuCisKKyAgICAgICAgUHJvdmlkZWQgY3VzdG9tIGJpbmRpbmcg
Zm9yIG9uZXJyb3IgZXZlbnQgaGFuZGxlciBpbiBXb3JrZXJDb250ZXh0IGFuZCBtb3ZlZCBFdmVu
dExpc3RlbmVyOjpyZXBvcnRFcnJvciBpbXBsbWVudGF0aW9uIHRoZXJlLiBPbmVycm9yIGhhbmRs
ZXIgbmVlZHMgY3VzdG9tIGltcGxlbWVudGF0aW9uIGJlY2F1c2UgYWNjb3JkaW5nIHRvIHRoZSBz
cGVjaWZpY2F0aW9uIGl0IG11c3QgYmUgYSBmdW5jdGlvbiB0aGF0IGFjY2VwdHMgdGhyZWUgcGFy
YW1ldGVycyByYXRoZXIgdGhhbiBzaW5nbGUgRXJyb3JFdmVudCBvYmplY3QuCisKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM2Mzc1CisKKyAgICAgICAg
KiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS5wcm86CisgICAgICAgICogV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRXZl
bnRMaXN0ZW5lci5jcHA6CisgICAgICAgICogYmluZGluZ3MvanMvSlNFdmVudExpc3RlbmVyLmg6
CisgICAgICAgICogYmluZGluZ3MvanMvSlNXb3JrZXJDb250ZXh0RXJyb3JIYW5kbGVyLmNwcDog
QWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpKU1dvcmtlckNvbnRleHRFcnJvckhhbmRsZXI6OkpT
V29ya2VyQ29udGV4dEVycm9ySGFuZGxlcik6CisgICAgICAgIChXZWJDb3JlOjpKU1dvcmtlckNv
bnRleHRFcnJvckhhbmRsZXI6On5KU1dvcmtlckNvbnRleHRFcnJvckhhbmRsZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6SlNXb3JrZXJDb250ZXh0RXJyb3JIYW5kbGVyOjpoYW5kbGVFdmVudCk6Cisg
ICAgICAgICogYmluZGluZ3MvanMvSlNXb3JrZXJDb250ZXh0RXJyb3JIYW5kbGVyLmg6IEFkZGVk
LgorICAgICAgICAoV2ViQ29yZTo6SlNXb3JrZXJDb250ZXh0RXJyb3JIYW5kbGVyOjpjcmVhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlSlNXb3JrZXJDb250ZXh0RXJyb3JIYW5kbGVyKToK
KyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbToKKyAgICAgICAg
KiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbToKKyAgICAgICAgKiBiaW5kaW5n
cy92OC9WOFdvcmtlckNvbnRleHRFcnJvckhhbmRsZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OlY4V29ya2VyQ29udGV4dEVycm9ySGFuZGxlcjo6VjhXb3JrZXJDb250ZXh0RXJyb3JI
YW5kbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlY4V29ya2VyQ29udGV4dEVycm9ySGFuZGxlcjo6
Y2FsbExpc3RlbmVyRnVuY3Rpb24pOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4V29ya2VyQ29u
dGV4dEVycm9ySGFuZGxlci5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlY4V29ya2VyQ29u
dGV4dEVycm9ySGFuZGxlcjo6Y3JlYXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOFdvcmtl
ckNvbnRleHRFdmVudExpc3RlbmVyLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOFdvcmtl
ckNvbnRleHRFdmVudExpc3RlbmVyLmg6CisgICAgICAgICogZG9tL0V2ZW50TGlzdGVuZXIuaDog
UmVtb3ZlZCByZXBvcnRFcnJvciBtZXRob2QgdGhhdCB3YXMgdXNlZCBvbmx5IGZvciByZXBvcnRp
bmcgd29ya2VyIGVycm9ycy4KKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckNvbnRleHQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6V29ya2VyQ29udGV4dDo6V29ya2VyQ29udGV4dCk6CisgICAgICAg
IChXZWJDb3JlOjpXb3JrZXJDb250ZXh0OjpyZXBvcnRFeGNlcHRpb24pOgorICAgICAgICAqIHdv
cmtlcnMvV29ya2VyQ29udGV4dC5oOgorCiAyMDEwLTAzLTMwICBJbHlhIFRpa2hvbm92c2t5ICA8
bG9pc2xvQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBQYXZlbCBGZWxkbWFu
LgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9XZWJDb3JlL1dlYkNvcmUuZ3lw
aQppbmRleCBkZWJlMjFmLi45ZGE0ZTYwIDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUuZ3lw
aQorKysgYi9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtODkyLDYgKzg5Miw4IEBACiAgICAgICAg
ICAgICAnYmluZGluZ3MvdjgvVjhTVkdQT0RUeXBlV3JhcHBlci5oJywKICAgICAgICAgICAgICdi
aW5kaW5ncy92OC9WOFV0aWxpdGllcy5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L1Y4
VXRpbGl0aWVzLmgnLAorICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L1Y4V29ya2VyQ29udGV4dEVy
cm9ySGFuZGxlci5jcHAnLAorICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L1Y4V29ya2VyQ29udGV4
dEVycm9ySGFuZGxlci5oJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9WOFdvcmtlckNvbnRl
eHRFdmVudExpc3RlbmVyLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvVjhXb3JrZXJD
b250ZXh0RXZlbnRMaXN0ZW5lci5oJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9Xb3JrZXJD
b250ZXh0RXhlY3V0aW9uUHJveHkuaCcsCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUucHJv
IGIvV2ViQ29yZS9XZWJDb3JlLnBybwppbmRleCBmMTVlOWM3Li40MzJiOTFjIDEwMDY0NAotLS0g
YS9XZWJDb3JlL1dlYkNvcmUucHJvCisrKyBiL1dlYkNvcmUvV2ViQ29yZS5wcm8KQEAgLTM2MCw2
ICszNjAsNyBAQCBTT1VSQ0VTICs9IFwKICAgICBiaW5kaW5ncy9qcy9KU0xhenlFdmVudExpc3Rl
bmVyLmNwcCBcCiAgICAgYmluZGluZ3MvanMvSlNQbHVnaW5FbGVtZW50RnVuY3Rpb25zLmNwcCBc
CiAgICAgYmluZGluZ3MvanMvSlNQb3BTdGF0ZUV2ZW50Q3VzdG9tLmNwcCBcCisgICAgYmluZGlu
Z3MvanMvSlNXb3JrZXJDb250ZXh0RXJyb3JIYW5kbGVyLmNwcCBcCiAgICAgYmluZGluZ3MvanMv
SmF2YVNjcmlwdFByb2ZpbGUuaCBcCiAgICAgYmluZGluZ3MvanMvSmF2YVNjcmlwdFByb2ZpbGVO
b2RlLmggXAogICAgIGJpbmRpbmdzL2pzL0phdmFTY3JpcHRQcm9maWxlLmNwcCBcCkBAIC0xMDY2
LDcgKzEwNjcsNyBAQCBIRUFERVJTICs9IFwKICAgICBiaW5kaW5ncy9qcy9KU1dlYktpdFBvaW50
Q29uc3RydWN0b3IuaCBcCiAgICAgYmluZGluZ3MvanMvSlNXb3JrZXJDb25zdHJ1Y3Rvci5oIFwK
ICAgICBiaW5kaW5ncy9qcy9KU1dvcmtlckNvbnRleHRCYXNlLmggXAotICAgIGJpbmRpbmdzL2pz
L0pTV29ya2VyQ29udGV4dEJhc2UuaCBcCisgICAgYmluZGluZ3MvanMvSlNXb3JrZXJDb250ZXh0
RXJyb3JIYW5kbGVyLmggXAogICAgIGJpbmRpbmdzL2pzL0pTWE1MSHR0cFJlcXVlc3RDb25zdHJ1
Y3Rvci5oIFwKICAgICBiaW5kaW5ncy9qcy9KU1hTTFRQcm9jZXNzb3JDb25zdHJ1Y3Rvci5oIFwK
ICAgICBiaW5kaW5ncy9qcy9TY2hlZHVsZWRBY3Rpb24uaCBcCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGU4MGE2ZmIuLjg3ZWQ1MGMgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC00ODgyLDYgKzQ4ODIsOCBAQAog
CQlGMzY0NEFGRjExMTk4MDU5MDBFMEQ1MzcgLyogSW5qZWN0ZWRTY3JpcHQuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjM2NDRBRkQxMTE5ODA1OTAw
RTBENTM3IC8qIEluamVjdGVkU2NyaXB0LmNwcCAqLzsgfTsKIAkJRjM2NDRCMDAxMTE5ODA1OTAw
RTBENTM3IC8qIEluamVjdGVkU2NyaXB0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBGMzY0NEFGRTExMTk4MDU5MDBFMEQ1MzcgLyogSW5qZWN0ZWRTY3Jp
cHQuaCAqLzsgfTsKIAkJRjM3NUNDMDcxMTUwRDMwMDAwOEREQjgxIC8qIEluc3BlY3Rvcldvcmtl
clJlc291cmNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBGMzc1Q0MwNjExNTBEMzAwMDA4RERCODEgLyogSW5zcGVjdG9yV29ya2VyUmVzb3VyY2UuaCAq
LzsgfTsKKwkJRjNENDYxNDgxMTYxRDUzMjAwQ0EwRDA5IC8qIEpTV29ya2VyQ29udGV4dEVycm9y
SGFuZGxlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBGM0Q0NjE0NjExNjFENTMyMDBDQTBEMDkgLyogSlNXb3JrZXJDb250ZXh0RXJyb3JIYW5kbGVy
LmNwcCAqLzsgfTsKKwkJRjNENDYxNDkxMTYxRDUzMjAwQ0EwRDA5IC8qIEpTV29ya2VyQ29udGV4
dEVycm9ySGFuZGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRjNENDYxNDcxMTYxRDUzMjAwQ0EwRDA5IC8qIEpTV29ya2VyQ29udGV4dEVycm9ySGFu
ZGxlci5oICovOyB9OwogCQlGNEVBRjRBRTEwQzc0MkIxMDA5MTAwRDMgLyogT3BlblR5cGVTYW5p
dGl6ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RjRFQUY0QUMxMEM3NDJCMTAwOTEwMEQzIC8qIE9wZW5UeXBlU2FuaXRpemVyLmNwcCAqLzsgfTsK
IAkJRjRFQUY0QUYxMEM3NDJCMTAwOTEwMEQzIC8qIE9wZW5UeXBlU2FuaXRpemVyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNEVBRjRBRDEwQzc0MkIx
MDA5MTAwRDMgLyogT3BlblR5cGVTYW5pdGl6ZXIuaCAqLzsgfTsKIAkJRjVDMDQxREEwRkZDQTdD
RTAwODM5RDRBIC8qIEhUTUxEYXRhTGlzdEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjVDMDQxRDcwRkZDQTdDRTAwODM5RDRBIC8qIEhU
TUxEYXRhTGlzdEVsZW1lbnQuY3BwICovOyB9OwpAQCAtMTAyNDIsNiArMTAyNDQsOCBAQAogCQlG
MzY0NEFGRDExMTk4MDU5MDBFMEQ1MzcgLyogSW5qZWN0ZWRTY3JpcHQuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5qZWN0ZWRTY3JpcHQuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlGMzY0NEFGRTExMTk4MDU5MDBFMEQ1MzcgLyogSW5qZWN0ZWRT
Y3JpcHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5qZWN0ZWRTY3JpcHQu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjM3NUNDMDYxMTUwRDMwMDAwOEREQjgx
IC8qIEluc3BlY3RvcldvcmtlclJlc291cmNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEluc3BlY3RvcldvcmtlclJlc291cmNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUYzRDQ2MTQ2MTE2MUQ1MzIwMENBMEQwOSAvKiBKU1dvcmtlckNvbnRleHRFcnJvckhh
bmRsZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNXb3JrZXJD
b250ZXh0RXJyb3JIYW5kbGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRjNE
NDYxNDcxMTYxRDUzMjAwQ0EwRDA5IC8qIEpTV29ya2VyQ29udGV4dEVycm9ySGFuZGxlci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1dvcmtlckNvbnRleHRFcnJvckhhbmRs
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjRFQUY0QUMxMEM3NDJCMTAwOTEw
MEQzIC8qIE9wZW5UeXBlU2FuaXRpemVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgbmFtZSA9IE9wZW5UeXBlU2FuaXRpemVyLmNwcDsgcGF0aCA9IG9wZW50eXBlL09wZW5UeXBl
U2FuaXRpemVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjRFQUY0QUQxMEM3
NDJCMTAwOTEwMEQzIC8qIE9wZW5UeXBlU2FuaXRpemVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgbmFtZSA9IE9wZW5UeXBlU2FuaXRpemVyLmg7IHBhdGggPSBvcGVudHlwZS9PcGVuVHlw
ZVNhbml0aXplci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNTIzRDIzQjAyREU0
Mzk2MDE4NjM1Q0EgLyogSFRNTERvY3VtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEhUTUxEb2N1bWVudC5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9OwpAQCAtMTQ4MjQs
NiArMTQ4MjgsOCBAQAogCQkJCUIyMTEyN0E1MEIzMTg2NzcwMDA5QkU1MyAvKiBKU1NWR1BPRFR5
cGVXcmFwcGVyLmggKi8sCiAJCQkJRTFDMzZEMzIwRUIwQTA5NDAwNzQxMEJDIC8qIEpTV29ya2Vy
Q29udGV4dEJhc2UuY3BwICovLAogCQkJCUUxQzM2RDMzMEVCMEEwOTQwMDc0MTBCQyAvKiBKU1dv
cmtlckNvbnRleHRCYXNlLmggKi8sCisJCQkJRjNENDYxNDYxMTYxRDUzMjAwQ0EwRDA5IC8qIEpT
V29ya2VyQ29udGV4dEVycm9ySGFuZGxlci5jcHAgKi8sCisJCQkJRjNENDYxNDcxMTYxRDUzMjAw
Q0EwRDA5IC8qIEpTV29ya2VyQ29udGV4dEVycm9ySGFuZGxlci5oICovLAogCQkJCUJDQTM3OEJB
MEQxNUY2NDIwMEI3OTNENiAvKiBTY2hlZHVsZWRBY3Rpb24uY3BwICovLAogCQkJCUJDQTM3OEJC
MEQxNUY2NDIwMEI3OTNENiAvKiBTY2hlZHVsZWRBY3Rpb24uaCAqLywKIAkJCQk3QTFFODhGMzEw
MUNDMzg0MDAwQzRERjUgLyogU2NyaXB0QXJyYXkuY3BwICovLApAQCAtMTg3NjgsNiArMTg3NzQs
NyBAQAogCQkJCUU0Nzc4QjgwMTE1QTU4MUEwMEI1RDM3MiAvKiBKU0N1c3RvbUV2ZW50LmggaW4g
SGVhZGVycyAqLywKIAkJCQlFMUUxQkYwMDExNUZGNkZCMDA2RjUyQ0EgLyogV2luZG93c0tleWJv
YXJkQ29kZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTg0OTlBNTE1MTE1RkIzMzAwMEY1NjZFMyAv
KiBSZW5kZXJTVkdSZXNvdXJjZU1hcmtlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJRjNENDYxNDkx
MTYxRDUzMjAwQ0EwRDA5IC8qIEpTV29ya2VyQ29udGV4dEVycm9ySGFuZGxlci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7
CiAJCX07CkBAIC0yMDk4Miw2ICsyMDk4OSw3IEBACiAJCQkJNjJDRDMyNTkxMTU3RTU3QzAwNjNC
MEE3IC8qIEN1c3RvbUV2ZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUU0Nzc4QjdGMTE1QTU4
MUEwMEI1RDM3MiAvKiBKU0N1c3RvbUV2ZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg0OTlB
NTE0MTE1RkIzMzAwMEY1NjZFMyAvKiBSZW5kZXJTVkdSZXNvdXJjZU1hcmtlci5jcHAgaW4gU291
cmNlcyAqLywKKwkJCQlGM0Q0NjE0ODExNjFENTMyMDBDQTBEMDkgLyogSlNXb3JrZXJDb250ZXh0
RXJyb3JIYW5kbGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBs
b3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0V2ZW50TGlzdGVuZXIuY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50
TGlzdGVuZXIuY3BwCmluZGV4IGJlMDQ5ZGIuLmIwMGQ2NTQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNFdmVudExpc3RlbmVyLmNwcAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRXZlbnRMaXN0ZW5lci5jcHAKQEAgLTEzMyw0NyArMTMzLDYgQEAgdm9pZCBKU0V2ZW50TGlz
dGVuZXI6OmhhbmRsZUV2ZW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQKICAgICB9CiB9CiAKLWJvb2wgSlNFdmVudExpc3RlbmVyOjpyZXBvcnRFcnJvcihT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNv
bnN0IFN0cmluZyYgdXJsLCBpbnQgbGluZU51bWJlcikKLXsKLSAgICBKU0xvY2sgbG9jayhTaWxl
bmNlQXNzZXJ0aW9uc09ubHkpOwotCi0gICAgSlNPYmplY3QqIGpzRnVuY3Rpb24gPSB0aGlzLT5q
c0Z1bmN0aW9uKGNvbnRleHQpOwotICAgIGlmICghanNGdW5jdGlvbikKLSAgICAgICAgcmV0dXJu
IGZhbHNlOwotCi0gICAgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IHRvSlNET01H
bG9iYWxPYmplY3QoY29udGV4dCwgbV9pc29sYXRlZFdvcmxkLmdldCgpKTsKLSAgICBFeGVjU3Rh
dGUqIGV4ZWMgPSBnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKTsKLQotICAgIENhbGxEYXRhIGNh
bGxEYXRhOwotICAgIENhbGxUeXBlIGNhbGxUeXBlID0ganNGdW5jdGlvbi0+Z2V0Q2FsbERhdGEo
Y2FsbERhdGEpOwotCi0gICAgaWYgKGNhbGxUeXBlID09IENhbGxUeXBlTm9uZSkKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotCi0gICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJnczsKLSAgICBhcmdz
LmFwcGVuZChqc1N0cmluZyhleGVjLCBtZXNzYWdlKSk7Ci0gICAgYXJncy5hcHBlbmQoanNTdHJp
bmcoZXhlYywgdXJsKSk7Ci0gICAgYXJncy5hcHBlbmQoanNOdW1iZXIoZXhlYywgbGluZU51bWJl
cikpOwotCi0gICAgSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhID0gZ2xvYmFsT2JqZWN0LT5nbG9i
YWxEYXRhKCk7Ci0gICAgRHluYW1pY0dsb2JhbE9iamVjdFNjb3BlIGdsb2JhbE9iamVjdFNjb3Bl
KGV4ZWMsIGdsb2JhbERhdGEtPmR5bmFtaWNHbG9iYWxPYmplY3QgPyBnbG9iYWxEYXRhLT5keW5h
bWljR2xvYmFsT2JqZWN0IDogZ2xvYmFsT2JqZWN0KTsgICAgCi0KLSAgICBKU1ZhbHVlIHRoaXNW
YWx1ZSA9IGdsb2JhbE9iamVjdC0+dG9UaGlzT2JqZWN0KGV4ZWMpOwotCi0gICAgZ2xvYmFsRGF0
YS0+dGltZW91dENoZWNrZXIuc3RhcnQoKTsKLSAgICBKU1ZhbHVlIHJldHVyblZhbHVlID0gSlND
OjpjYWxsKGV4ZWMsIGpzRnVuY3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0YSwgdGhpc1ZhbHVlLCBh
cmdzKTsKLSAgICBnbG9iYWxEYXRhLT50aW1lb3V0Q2hlY2tlci5zdG9wKCk7Ci0KLSAgICAvLyBJ
ZiBhbiBlcnJvciBvY2N1cnMgd2hpbGUgaGFuZGxpbmcgdGhlIHNjcmlwdCBlcnJvciwgaXQgc2hv
dWxkIGJlIGJ1YmJsZWQgdXAuCi0gICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKSB7Ci0gICAg
ICAgIGV4ZWMtPmNsZWFyRXhjZXB0aW9uKCk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9
Ci0gICAgCi0gICAgYm9vbCBidWJibGVFdmVudDsKLSAgICByZXR1cm4gcmV0dXJuVmFsdWUuZ2V0
Qm9vbGVhbihidWJibGVFdmVudCkgJiYgIWJ1YmJsZUV2ZW50OwotfQotCiBib29sIEpTRXZlbnRM
aXN0ZW5lcjo6dmlydHVhbGlzQXR0cmlidXRlKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9pc0F0
dHJpYnV0ZTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudExpc3RlbmVy
LmggYi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5oCmluZGV4IDU2OWMxOTIu
LmIxNWM1ODkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudExpc3RlbmVy
LmgKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50TGlzdGVuZXIuaApAQCAtNjAsNyAr
NjAsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBtYXJrSlNG
dW5jdGlvbihKU0M6Ok1hcmtTdGFjayYpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0
ZUpTRnVuY3Rpb24oSlNDOjpKU09iamVjdCopOwogICAgICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxl
RXZlbnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEV2ZW50Kik7Ci0gICAgICAgIHZpcnR1YWwg
Ym9vbCByZXBvcnRFcnJvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiBt
ZXNzYWdlLCBjb25zdCBTdHJpbmcmIHVybCwgaW50IGxpbmVOdW1iZXIpOwogICAgICAgICB2aXJ0
dWFsIGJvb2wgdmlydHVhbGlzQXR0cmlidXRlKCkgY29uc3Q7CiAKICAgICBwcm90ZWN0ZWQ6CmRp
ZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyQ29udGV4dEVycm9ySGFuZGxl
ci5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyQ29udGV4dEVycm9ySGFuZGxlci5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWExNDNhMQotLS0gL2Rldi9u
dWxsCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJDb250ZXh0RXJyb3JIYW5kbGVy
LmNwcApAQCAtMCwwICsxLDExMSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
IGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBj
b3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVy
IHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmli
dXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQg
ZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
CisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJKU1dv
cmtlckNvbnRleHRFcnJvckhhbmRsZXIuaCIKKworI2luY2x1ZGUgIkV2ZW50LmgiCisjaW5jbHVk
ZSAiRXJyb3JFdmVudC5oIgorI2luY2x1ZGUgIkpTRXZlbnQuaCIKKyNpbmNsdWRlIDxydW50aW1l
L0pTTG9jay5oPgorCit1c2luZyBuYW1lc3BhY2UgSlNDOworCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK0pTV29ya2VyQ29udGV4dEVycm9ySGFuZGxlcjo6SlNXb3JrZXJDb250ZXh0RXJyb3JIYW5k
bGVyKEpTT2JqZWN0KiBmdW5jdGlvbiwgSlNPYmplY3QqIHdyYXBwZXIsIGJvb2wgaXNBdHRyaWJ1
dGUsIERPTVdyYXBwZXJXb3JsZCogaXNvbGF0ZWRXb3JsZCkKKyAgICA6IEpTRXZlbnRMaXN0ZW5l
cihmdW5jdGlvbiwgd3JhcHBlciwgaXNBdHRyaWJ1dGUsIGlzb2xhdGVkV29ybGQpCit7Cit9CisK
K0pTV29ya2VyQ29udGV4dEVycm9ySGFuZGxlcjo6fkpTV29ya2VyQ29udGV4dEVycm9ySGFuZGxl
cigpCit7Cit9CisKK3ZvaWQgSlNXb3JrZXJDb250ZXh0RXJyb3JIYW5kbGVyOjpoYW5kbGVFdmVu
dChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBFdmVudCog
ZXZlbnQpCit7CisgICAgQVNTRVJUKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOworICAgIGlmICgh
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCkKKyAgICAgICAgcmV0dXJuOworCisgICAgSlNMb2NrIGxv
Y2soU2lsZW5jZUFzc2VydGlvbnNPbmx5KTsKKworICAgIEpTT2JqZWN0KiBqc0Z1bmN0aW9uID0g
dGhpcy0+anNGdW5jdGlvbihzY3JpcHRFeGVjdXRpb25Db250ZXh0KTsKKyAgICBpZiAoIWpzRnVu
Y3Rpb24pCisgICAgICAgIHJldHVybjsKKworICAgIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QgPSB0b0pTRE9NR2xvYmFsT2JqZWN0KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIGlzb2xh
dGVkV29ybGQoKSk7CisgICAgaWYgKCFnbG9iYWxPYmplY3QpCisgICAgICAgIHJldHVybjsKKwor
ICAgIEV4ZWNTdGF0ZSogZXhlYyA9IGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpOworCisgICAg
Q2FsbERhdGEgY2FsbERhdGE7CisgICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBqc0Z1bmN0aW9uLT5n
ZXRDYWxsRGF0YShjYWxsRGF0YSk7CisKKyAgICBpZiAoY2FsbFR5cGUgIT0gQ2FsbFR5cGVOb25l
KSB7CisKKyAgICAgICAgcmVmKCk7CisKKyAgICAgICAgRXZlbnQqIHNhdmVkRXZlbnQgPSBnbG9i
YWxPYmplY3QtPmN1cnJlbnRFdmVudCgpOworICAgICAgICBnbG9iYWxPYmplY3QtPnNldEN1cnJl
bnRFdmVudChldmVudCk7CisKKyAgICAgICAgQVNTRVJUKGV2ZW50LT5pc0Vycm9yRXZlbnQoKSk7
CisgICAgICAgIEVycm9yRXZlbnQqIGVycm9yRXZlbnQgPSBzdGF0aWNfY2FzdDxFcnJvckV2ZW50
Kj4oZXZlbnQpOworCisgICAgICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3M7CisgICAgICAg
IGFyZ3MuYXBwZW5kKGpzU3RyaW5nKGV4ZWMsIGVycm9yRXZlbnQtPm1lc3NhZ2UoKSkpOworICAg
ICAgICBhcmdzLmFwcGVuZChqc1N0cmluZyhleGVjLCBlcnJvckV2ZW50LT5maWxlbmFtZSgpKSk7
CisgICAgICAgIGFyZ3MuYXBwZW5kKGpzTnVtYmVyKGV4ZWMsIGVycm9yRXZlbnQtPmxpbmVubygp
KSk7CisKKyAgICAgICAgSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhID0gZ2xvYmFsT2JqZWN0LT5n
bG9iYWxEYXRhKCk7CisgICAgICAgIER5bmFtaWNHbG9iYWxPYmplY3RTY29wZSBnbG9iYWxPYmpl
Y3RTY29wZShleGVjLCBnbG9iYWxEYXRhLT5keW5hbWljR2xvYmFsT2JqZWN0ID8gZ2xvYmFsRGF0
YS0+ZHluYW1pY0dsb2JhbE9iamVjdCA6IGdsb2JhbE9iamVjdCk7ICAgIAorCisgICAgICAgIEpT
VmFsdWUgdGhpc1ZhbHVlID0gZ2xvYmFsT2JqZWN0LT50b1RoaXNPYmplY3QoZXhlYyk7CisKKyAg
ICAgICAgZ2xvYmFsRGF0YS0+dGltZW91dENoZWNrZXIuc3RhcnQoKTsKKyAgICAgICAgSlNWYWx1
ZSByZXR1cm5WYWx1ZSA9IEpTQzo6Y2FsbChleGVjLCBqc0Z1bmN0aW9uLCBjYWxsVHlwZSwgY2Fs
bERhdGEsIHRoaXNWYWx1ZSwgYXJncyk7CisgICAgICAgIGdsb2JhbERhdGEtPnRpbWVvdXRDaGVj
a2VyLnN0b3AoKTsKKworICAgICAgICBnbG9iYWxPYmplY3QtPnNldEN1cnJlbnRFdmVudChzYXZl
ZEV2ZW50KTsKKworICAgICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisgICAgICAgICAg
ICByZXBvcnRDdXJyZW50RXhjZXB0aW9uKGV4ZWMpOworICAgICAgICBlbHNlIHsKKyAgICAgICAg
ICAgIGJvb2wgcmV0dmFsYm9vbDsKKyAgICAgICAgICAgIGlmIChyZXR1cm5WYWx1ZS5nZXRCb29s
ZWFuKHJldHZhbGJvb2wpICYmICFyZXR2YWxib29sKQorICAgICAgICAgICAgICAgIGV2ZW50LT5w
cmV2ZW50RGVmYXVsdCgpOworICAgICAgICB9CisKKyAgICAgICAgZGVyZWYoKTsKKyAgICB9Cit9
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNXb3JrZXJDb250ZXh0RXJyb3JIYW5kbGVyLmggYi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
V29ya2VyQ29udGV4dEVycm9ySGFuZGxlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLjUxNDM3ZDAKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
V29ya2VyQ29udGV4dEVycm9ySGFuZGxlci5oCkBAIC0wLDAgKzEsNjkgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0
aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5h
bWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVj
aWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFT
IElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAor
ICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEpTV29y
a2VyQ29udGV4dEVycm9ySGFuZGxlcl9oCisjZGVmaW5lIEpTV29ya2VyQ29udGV4dEVycm9ySGFu
ZGxlcl9oCisKKyNpbmNsdWRlICJKU0V2ZW50TGlzdGVuZXIuaCIKKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCisgICAgY2xhc3MgSlNET01HbG9iYWxPYmplY3Q7CisKKyAgICBjbGFzcyBKU1dvcmtl
ckNvbnRleHRFcnJvckhhbmRsZXIgOiBwdWJsaWMgSlNFdmVudExpc3RlbmVyIHsKKyAgICBwdWJs
aWM6CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEpTV29ya2VyQ29udGV4dEVycm9ySGFuZGxl
cj4gY3JlYXRlKEpTQzo6SlNPYmplY3QqIGxpc3RlbmVyLCBKU0M6OkpTT2JqZWN0KiB3cmFwcGVy
LCBib29sIGlzQXR0cmlidXRlLCBET01XcmFwcGVyV29ybGQqIGlzb2xhdGVkV29ybGQpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgSlNXb3JrZXJDb250ZXh0RXJy
b3JIYW5kbGVyKGxpc3RlbmVyLCB3cmFwcGVyLCBpc0F0dHJpYnV0ZSwgaXNvbGF0ZWRXb3JsZCkp
OworICAgICAgICB9CisKKyAgICAgICAgdmlydHVhbCB+SlNXb3JrZXJDb250ZXh0RXJyb3JIYW5k
bGVyKCk7CisKKyAgICBwcm90ZWN0ZWQ6CisgICAgICAgIEpTV29ya2VyQ29udGV4dEVycm9ySGFu
ZGxlcihKU0M6OkpTT2JqZWN0KiBmdW5jdGlvbiwgSlNDOjpKU09iamVjdCogd3JhcHBlciwgYm9v
bCBpc0F0dHJpYnV0ZSwgRE9NV3JhcHBlcldvcmxkKiBpc29sYXRlZFdvcmxkKTsKKyAgICBwcml2
YXRlOgorICAgICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlRXZlbnQoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCosIEV2ZW50Kik7CisgICAgfTsKKworCisgICAgLy8gQ3JlYXRlcyBhIEpTIEV2ZW50TGlz
dGVuZXIgZm9yICJvbmVycm9yIiBldmVudCBoYW5kbGVyIGluIHdvcmtlciBjb250ZXh0LiBJdCBo
YXMgY3VzdG9tIGltcGxlbWVudGF0aW9uIGJlY2F1c2UKKyAgICAvLyB1bmxpa2Ugb3RoZXIgZXZl
bnQgbGlzdGVuZXJzIGl0IGFjY2VwdHMgdGhyZWUgcGFyYW1ldGVycy4KKyAgICBpbmxpbmUgUGFz
c1JlZlB0cjxKU1dvcmtlckNvbnRleHRFcnJvckhhbmRsZXI+IGNyZWF0ZUpTV29ya2VyQ29udGV4
dEVycm9ySGFuZGxlcihKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNDOjpKU1ZhbHVlIGxpc3RlbmVy
LCBKU0M6OkpTT2JqZWN0KiB3cmFwcGVyKQorICAgIHsKKyAgICAgICAgaWYgKCFsaXN0ZW5lci5p
c09iamVjdCgpKQorICAgICAgICAgICAgcmV0dXJuIDA7CisKKyAgICAgICAgcmV0dXJuIEpTV29y
a2VyQ29udGV4dEVycm9ySGFuZGxlcjo6Y3JlYXRlKGFzT2JqZWN0KGxpc3RlbmVyKSwgd3JhcHBl
ciwgdHJ1ZSwgY3VycmVudFdvcmxkKGV4ZWMpKTsKKyAgICB9CisKKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQorCisjZW5kaWYgLy8gSlNXb3JrZXJDb250ZXh0RXJyb3JIYW5kbGVyX2gKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0gYi9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCmluZGV4IDFhZWQxMWQuLjgz
ZWFlZDQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9y
SlMucG0KKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQpA
QCAtMTQ4NCw3ICsxNDg0LDEyIEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJGltcGxJbmNsdWRlc3siSlNFdmVudExpc3RlbmVyLmgifSA9
IDE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
VU5VU0VEX1BBUkFNKGV4ZWMpO1xuIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICIgICAgJGltcGxDbGFzc05hbWUqIGltcCA9IHN0YXRpY19jYXN0PCRp
bXBsQ2xhc3NOYW1lKj4oc3RhdGljX2Nhc3Q8JGNsYXNzTmFtZSo+KHRoaXNPYmplY3QpLT5pbXBs
KCkpO1xuIik7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICIgICAgaW1wLT5zZXQkaW1wbFNldHRlckZ1bmN0aW9uTmFtZShjcmVhdGVKU0F0dHJpYnV0ZUV2
ZW50TGlzdGVuZXIoZXhlYywgdmFsdWUsIHRoaXNPYmplY3QpKTtcbiIpOworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGlmICgkaW50ZXJmYWNlTmFtZSBlcSAiV29ya2VyQ29udGV4dCIgYW5k
ICRuYW1lIGVxICJvbmVycm9yIikgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAk
aW1wbEluY2x1ZGVzeyJKU1dvcmtlckNvbnRleHRFcnJvckhhbmRsZXIuaCJ9ID0gMTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaW1wLT5z
ZXQkaW1wbFNldHRlckZ1bmN0aW9uTmFtZShjcmVhdGVKU1dvcmtlckNvbnRleHRFcnJvckhhbmRs
ZXIoZXhlYywgdmFsdWUsIHRoaXNPYmplY3QpKTtcbiIpOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAiICAgIGltcC0+c2V0JGltcGxTZXR0ZXJGdW5jdGlvbk5hbWUoY3JlYXRlSlNB
dHRyaWJ1dGVFdmVudExpc3RlbmVyKGV4ZWMsIHZhbHVlLCB0aGlzT2JqZWN0KSk7XG4iKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICB9IGVs
c2lmICgkYXR0cmlidXRlLT5zaWduYXR1cmUtPnR5cGUgPX4gL0NvbnN0cnVjdG9yJC8pIHsKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBteSAkY29uc3RydWN0b3JUeXBlID0gJGF0dHJpYnV0
ZS0+c2lnbmF0dXJlLT50eXBlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICRjb25zdHJ1
Y3RvclR5cGUgPX4gcy9Db25zdHJ1Y3RvciQvLzsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0gYi9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
Q29kZUdlbmVyYXRvclY4LnBtCmluZGV4IDY4MDA3ZTIuLmJiMzAyOTQgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0KKysrIGIvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQpAQCAtODkxLDcgKzg5MSwxMyBAQCBF
TkQKICAgICAgICAgfSBlbHNpZiAoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT50eXBlIGVxICJFdmVu
dExpc3RlbmVyIikgewogICAgICAgICAgICAgJGltcGxJbmNsdWRlc3siVjhBYnN0cmFjdEV2ZW50
TGlzdGVuZXIuaCJ9ID0gMTsKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsICIg
ICAgdHJhbnNmZXJIaWRkZW5EZXBlbmRlbmN5KGluZm8uSG9sZGVyKCksIGltcC0+JGF0dHJOYW1l
KCksIHZhbHVlLCBWOCR7aW50ZXJmYWNlTmFtZX06OmV2ZW50TGlzdGVuZXJDYWNoZUluZGV4KTtc
biIpOwotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgIiAgICBpbXAtPnNldCRp
bXBsU2V0dGVyRnVuY3Rpb25OYW1lKFY4RE9NV3JhcHBlcjo6Z2V0RXZlbnRMaXN0ZW5lcih2YWx1
ZSwgdHJ1ZSwgTGlzdGVuZXJGaW5kT3JDcmVhdGUpIik7CisgICAgICAgICAgICBpZiAoJGludGVy
ZmFjZU5hbWUgZXEgIldvcmtlckNvbnRleHQiIGFuZCAkYXR0cmlidXRlLT5zaWduYXR1cmUtPm5h
bWUgZXEgIm9uZXJyb3IiKSB7CisgICAgICAgICAgICAgICAgJGltcGxJbmNsdWRlc3siVjhFdmVu
dExpc3RlbmVyTGlzdC5oIn0gPSAxOworICAgICAgICAgICAgICAgICRpbXBsSW5jbHVkZXN7IlY4
V29ya2VyQ29udGV4dEVycm9ySGFuZGxlci5oIn0gPSAxOworICAgICAgICAgICAgICAgIHB1c2go
QGltcGxDb250ZW50RGVjbHMsICIgICAgaW1wLT5zZXQkaW1wbFNldHRlckZ1bmN0aW9uTmFtZShW
OEV2ZW50TGlzdGVuZXJMaXN0OjpmaW5kT3JDcmVhdGVXcmFwcGVyPFY4V29ya2VyQ29udGV4dEVy
cm9ySGFuZGxlcj4odmFsdWUsIHRydWUpIik7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsICIgICAgaW1wLT5zZXQkaW1wbFNldHRl
ckZ1bmN0aW9uTmFtZShWOERPTVdyYXBwZXI6OmdldEV2ZW50TGlzdGVuZXIodmFsdWUsIHRydWUs
IExpc3RlbmVyRmluZE9yQ3JlYXRlKSIpOworICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2Ug
ewogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgIiAgICBpbXAtPnNldCRpbXBs
U2V0dGVyRnVuY3Rpb25OYW1lKCRyZXN1bHQiKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9iaW5kaW5ncy92OC9WOFdvcmtlckNvbnRleHRFcnJvckhhbmRsZXIuY3BwIGIvV2ViQ29y
ZS9iaW5kaW5ncy92OC9WOFdvcmtlckNvbnRleHRFcnJvckhhbmRsZXIuY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVhNzVhNDAKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJD
b3JlL2JpbmRpbmdzL3Y4L1Y4V29ya2VyQ29udGV4dEVycm9ySGFuZGxlci5jcHAKQEAgLTAsMCAr
MSw2NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0Ogor
ICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisg
KiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdv
b2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
Q09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShXT1JLRVJTKQorCisjaW5j
bHVkZSAiVjhXb3JrZXJDb250ZXh0RXJyb3JIYW5kbGVyLmgiCisKKyNpbmNsdWRlICJFcnJvckV2
ZW50LmgiCisjaW5jbHVkZSAiVjhCaW5kaW5nLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
VjhXb3JrZXJDb250ZXh0RXJyb3JIYW5kbGVyOjpWOFdvcmtlckNvbnRleHRFcnJvckhhbmRsZXIo
djg6OkxvY2FsPHY4OjpPYmplY3Q+IGxpc3RlbmVyLCBib29sIGlzSW5saW5lLCBjb25zdCBXb3Js
ZENvbnRleHRIYW5kbGUmIHdvcmxkQ29udGV4dCkKKyAgICA6IFY4V29ya2VyQ29udGV4dEV2ZW50
TGlzdGVuZXIobGlzdGVuZXIsIGlzSW5saW5lLCB3b3JsZENvbnRleHQpCit7Cit9CisKK3Y4OjpM
b2NhbDx2ODo6VmFsdWU+IFY4V29ya2VyQ29udGV4dEVycm9ySGFuZGxlcjo6Y2FsbExpc3RlbmVy
RnVuY3Rpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgdjg6OkhhbmRsZTx2ODo6
VmFsdWU+IGpzRXZlbnQsIEV2ZW50KiBldmVudCkKK3sKKyAgICBBU1NFUlQoZXZlbnQtPmlzRXJy
b3JFdmVudCgpKTsKKyAgICB2ODo6TG9jYWw8djg6Ok9iamVjdD4gbGlzdGVuZXIgPSBnZXRMaXN0
ZW5lck9iamVjdChjb250ZXh0KTsKKyAgICB2ODo6TG9jYWw8djg6OlZhbHVlPiByZXR1cm5WYWx1
ZTsKKyAgICBpZiAoIWxpc3RlbmVyLklzRW1wdHkoKSAmJiBsaXN0ZW5lci0+SXNGdW5jdGlvbigp
KSB7CisgICAgICAgIEVycm9yRXZlbnQqIGVycm9yRXZlbnQgPSBzdGF0aWNfY2FzdDxFcnJvckV2
ZW50Kj4oZXZlbnQpOworICAgICAgICB2ODo6TG9jYWw8djg6OkZ1bmN0aW9uPiBjYWxsRnVuY3Rp
b24gPSB2ODo6TG9jYWw8djg6OkZ1bmN0aW9uPjo6Q2FzdChsaXN0ZW5lcik7CisgICAgICAgIHY4
OjpMb2NhbDx2ODo6T2JqZWN0PiB0aGlzVmFsdWUgPSB2ODo6Q29udGV4dDo6R2V0Q3VycmVudCgp
LT5HbG9iYWwoKTsKKyAgICAgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHBhcmFtZXRlcnNbM10g
PSB7IHY4U3RyaW5nKGVycm9yRXZlbnQtPm1lc3NhZ2UoKSksIHY4U3RyaW5nKGVycm9yRXZlbnQt
PmZpbGVuYW1lKCkpLCB2ODo6SW50ZWdlcjo6TmV3KGVycm9yRXZlbnQtPmxpbmVubygpKSB9Owor
ICAgICAgICByZXR1cm5WYWx1ZSA9IGNhbGxGdW5jdGlvbi0+Q2FsbCh0aGlzVmFsdWUsIDMsIHBh
cmFtZXRlcnMpOworICAgICAgICBpZiAoIXJldHVyblZhbHVlLklzRW1wdHkoKSAmJiByZXR1cm5W
YWx1ZS0+SXNCb29sZWFuKCkgJiYgIXJldHVyblZhbHVlLT5Cb29sZWFuVmFsdWUoKSkKKyAgICAg
ICAgICAgIGV2ZW50LT5wcmV2ZW50RGVmYXVsdCgpOworICAgIH0KKyAgICByZXR1cm4gcmV0dXJu
VmFsdWU7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFdPUktFUlMK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhXb3JrZXJDb250ZXh0RXJyb3JIYW5k
bGVyLmggYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4V29ya2VyQ29udGV4dEVycm9ySGFuZGxlci5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEyOGJkNWYKLS0tIC9kZXYvbnVs
bAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4V29ya2VyQ29udGV4dEVycm9ySGFuZGxlci5o
CkBAIC0wLDAgKzEsNTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
KyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUg
bmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20K
KyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICog
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
CisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaWZuZGVmIFY4V29ya2VyQ29udGV4dEVycm9ySGFuZGxlcl9oCisj
ZGVmaW5lIFY4V29ya2VyQ29udGV4dEVycm9ySGFuZGxlcl9oCisKKyNpZiBFTkFCTEUoV09SS0VS
UykKKworI2luY2x1ZGUgIlY4V29ya2VyQ29udGV4dEV2ZW50TGlzdGVuZXIuaCIKKyNpbmNsdWRl
IDx2OC5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworICAgIGNsYXNzIFY4V29ya2VyQ29udGV4dEVycm9ySGFuZGxlciA6IHB1YmxpYyBWOFdv
cmtlckNvbnRleHRFdmVudExpc3RlbmVyIHsKKyAgICBwdWJsaWM6CisgICAgICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPFY4V29ya2VyQ29udGV4dEVycm9ySGFuZGxlcj4gY3JlYXRlKHY4OjpMb2NhbDx2
ODo6T2JqZWN0PiBsaXN0ZW5lciwgYm9vbCBpc0lubGluZSwgY29uc3QgV29ybGRDb250ZXh0SGFu
ZGxlJiB3b3JsZENvbnRleHQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgVjhXb3JrZXJDb250ZXh0RXJyb3JIYW5kbGVyKGxpc3RlbmVyLCBpc0lubGluZSwgd29y
bGRDb250ZXh0KSk7CisgICAgICAgIH0KKworICAgIHByaXZhdGU6CisgICAgICAgIFY4V29ya2Vy
Q29udGV4dEVycm9ySGFuZGxlcih2ODo6TG9jYWw8djg6Ok9iamVjdD4gbGlzdGVuZXIsIGJvb2wg
aXNJbmxpbmUsIGNvbnN0IFdvcmxkQ29udGV4dEhhbmRsZSYgd29ybGRDb250ZXh0KTsKKworICAg
ICAgICB2aXJ0dWFsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IGNhbGxMaXN0ZW5lckZ1bmN0aW9uKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqLCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4ganNFdmVudCwgRXZl
bnQqKTsKKyAgICB9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBXT1JL
RVJTCisKKyNlbmRpZiAvLyBWOFdvcmtlckNvbnRleHRFcnJvckhhbmRsZXJfaApkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFdvcmtlckNvbnRleHRFdmVudExpc3RlbmVyLmNwcCBi
L1dlYkNvcmUvYmluZGluZ3MvdjgvVjhXb3JrZXJDb250ZXh0RXZlbnRMaXN0ZW5lci5jcHAKaW5k
ZXggZmE4OWFlNi4uMzBiOTg2NSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFdv
cmtlckNvbnRleHRFdmVudExpc3RlbmVyLmNwcAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4
V29ya2VyQ29udGV4dEV2ZW50TGlzdGVuZXIuY3BwCkBAIC04Miw1NiArODIsNiBAQCB2b2lkIFY4
V29ya2VyQ29udGV4dEV2ZW50TGlzdGVuZXI6OmhhbmRsZUV2ZW50KFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIGNvbnRleHQsCiAgICAgaW52b2tlRXZlbnRIYW5kbGVyKGNvbnRleHQsIGV2ZW50LCBq
c0V2ZW50KTsKIH0KIAotYm9vbCBWOFdvcmtlckNvbnRleHRFdmVudExpc3RlbmVyOjpyZXBvcnRF
cnJvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIG1lc3Nh
Z2UsIGNvbnN0IFN0cmluZyYgdXJsLCBpbnQgbGluZU51bWJlcikKLXsKLSAgICBpZiAoIWNvbnRl
eHQpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIC8vIFRoZSBjYWxsYmFjayBmdW5jdGlv
biBjYW4gY2xlYXIgdGhlIGV2ZW50IGxpc3RlbmVyIGFuZCBkZXN0cm95ICd0aGlzJyBvYmplY3Qu
IEtlZXAgYSBsb2NhbCByZWZlcmVuY2UgdG8gaXQuCi0gICAgUmVmUHRyPFY4QWJzdHJhY3RFdmVu
dExpc3RlbmVyPiBwcm90ZWN0KHRoaXMpOwotCi0gICAgdjg6OkhhbmRsZVNjb3BlIGhhbmRsZVNj
b3BlOwotCi0gICAgV29ya2VyQ29udGV4dEV4ZWN1dGlvblByb3h5KiBwcm94eSA9IHdvcmtlclBy
b3h5KGNvbnRleHQpOwotICAgIGlmICghcHJveHkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQot
ICAgIHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+IHY4Q29udGV4dCA9IHByb3h5LT5jb250ZXh0KCk7
Ci0gICAgaWYgKHY4Q29udGV4dC5Jc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQot
ICAgIC8vIEVudGVyIHRoZSBWOCBjb250ZXh0IGluIHdoaWNoIHRvIHBlcmZvcm0gdGhlIGV2ZW50
IGhhbmRsaW5nLgotICAgIHY4OjpDb250ZXh0OjpTY29wZSBzY29wZSh2OENvbnRleHQpOwotCi0g
ICAgdjg6OkxvY2FsPHY4OjpPYmplY3Q+IGxpc3RlbmVyID0gZ2V0TGlzdGVuZXJPYmplY3QoY29u
dGV4dCk7Ci0gICAgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gcmV0dXJuVmFsdWU7Ci0gICAgewotICAg
ICAgICAvLyBDYXRjaCBleGNlcHRpb25zIHRocm93biBpbiBjYWxsaW5nIHRoZSBmdW5jdGlvbiBz
byB0aGV5IGRvIG5vdCBwcm9wYWdhdGUgdG8gamF2YXNjcmlwdCBjb2RlIHRoYXQgY2F1c2VkIHRo
ZSBldmVudCB0byBmaXJlLgotICAgICAgICB2ODo6VHJ5Q2F0Y2ggdHJ5Q2F0Y2g7Ci0gICAgICAg
IHRyeUNhdGNoLlNldFZlcmJvc2UodHJ1ZSk7Ci0KLSAgICAgICAgLy8gQ2FsbCB0aGUgZnVuY3Rp
b24uCi0gICAgICAgIGlmICghbGlzdGVuZXIuSXNFbXB0eSgpICYmIGxpc3RlbmVyLT5Jc0Z1bmN0
aW9uKCkpIHsKLSAgICAgICAgICAgIHY4OjpMb2NhbDx2ODo6RnVuY3Rpb24+IGNhbGxGdW5jdGlv
biA9IHY4OjpMb2NhbDx2ODo6RnVuY3Rpb24+OjpDYXN0KGxpc3RlbmVyKTsKLSAgICAgICAgICAg
IHY4OjpMb2NhbDx2ODo6T2JqZWN0PiB0aGlzVmFsdWUgPSB2ODo6Q29udGV4dDo6R2V0Q3VycmVu
dCgpLT5HbG9iYWwoKTsKLQotICAgICAgICAgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHBhcmFt
ZXRlcnNbM10gPSB7IHY4U3RyaW5nKG1lc3NhZ2UpLCB2OFN0cmluZyh1cmwpLCB2ODo6SW50ZWdl
cjo6TmV3KGxpbmVOdW1iZXIpIH07Ci0gICAgICAgICAgICByZXR1cm5WYWx1ZSA9IGNhbGxGdW5j
dGlvbi0+Q2FsbCh0aGlzVmFsdWUsIDMsIHBhcmFtZXRlcnMpOwotICAgICAgICB9Ci0KLSAgICAg
ICAgLy8gSWYgYW4gZXJyb3Igb2NjdXJzIHdoaWxlIGhhbmRsaW5nIHRoZSBzY3JpcHQgZXJyb3Is
IGl0IHNob3VsZCBiZSBidWJibGVkIHVwLgotICAgICAgICBpZiAodHJ5Q2F0Y2guSGFzQ2F1Z2h0
KCkpIHsKLSAgICAgICAgICAgIHRyeUNhdGNoLlJlc2V0KCk7Ci0gICAgICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICAvLyBJZiB0aGUgZnVuY3Rpb24gcmV0dXJu
cyBmYWxzZSwgdGhlbiB0aGUgZXJyb3IgaXMgaGFuZGxlZC4gT3RoZXJ3aXNlLCB0aGUgZXJyb3Ig
aXMgbm90IGhhbmRsZWQuCi0gICAgYm9vbCBlcnJvckhhbmRsZWQgPSByZXR1cm5WYWx1ZS0+SXNC
b29sZWFuKCkgJiYgIXJldHVyblZhbHVlLT5Cb29sZWFuVmFsdWUoKTsKLQotICAgIHJldHVybiBl
cnJvckhhbmRsZWQ7Ci19Ci0KIHY4OjpMb2NhbDx2ODo6VmFsdWU+IFY4V29ya2VyQ29udGV4dEV2
ZW50TGlzdGVuZXI6OmNhbGxMaXN0ZW5lckZ1bmN0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IGNvbnRleHQsIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBqc0V2ZW50LCBFdmVudCogZXZlbnQpCiB7
CiAgICAgdjg6OkxvY2FsPHY4OjpGdW5jdGlvbj4gaGFuZGxlckZ1bmN0aW9uID0gZ2V0TGlzdGVu
ZXJGdW5jdGlvbihjb250ZXh0KTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhX
b3JrZXJDb250ZXh0RXZlbnRMaXN0ZW5lci5oIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFdvcmtl
ckNvbnRleHRFdmVudExpc3RlbmVyLmgKaW5kZXggNDQ4NzQ5Ny4uMWQwYmZjOCAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFdvcmtlckNvbnRleHRFdmVudExpc3RlbmVyLmgKKysr
IGIvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFdvcmtlckNvbnRleHRFdmVudExpc3RlbmVyLmgKQEAg
LTUwLDExICs1MCwxMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIH0KIAogICAgICAg
ICB2aXJ0dWFsIHZvaWQgaGFuZGxlRXZlbnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEV2ZW50
Kik7Ci0gICAgICAgIHZpcnR1YWwgYm9vbCByZXBvcnRFcnJvcihTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIHVybCwgaW50IGxpbmVO
dW1iZXIpOwogCi0gICAgcHJpdmF0ZToKKyAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIFY4V29ya2Vy
Q29udGV4dEV2ZW50TGlzdGVuZXIodjg6OkxvY2FsPHY4OjpPYmplY3Q+IGxpc3RlbmVyLCBib29s
IGlzSW5saW5lLCBjb25zdCBXb3JsZENvbnRleHRIYW5kbGUmIHdvcmxkQ29udGV4dCk7CiAKKyAg
ICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IGNhbGxMaXN0
ZW5lckZ1bmN0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4ganNFdmVudCwgRXZlbnQqKTsKICAgICAgICAgdjg6OkxvY2FsPHY4OjpPYmplY3Q+IGdldFJl
Y2VpdmVyT2JqZWN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBFdmVudCopOwogICAgIH07CmRp
ZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9FdmVudExpc3RlbmVyLmggYi9XZWJDb3JlL2RvbS9FdmVu
dExpc3RlbmVyLmgKaW5kZXggOGEzNTkyMi4uZDdjOTUwZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9k
b20vRXZlbnRMaXN0ZW5lci5oCisrKyBiL1dlYkNvcmUvZG9tL0V2ZW50TGlzdGVuZXIuaApAQCAt
NDYsOCArNDYsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgfkV2ZW50
TGlzdGVuZXIoKSB7IH0KICAgICAgICAgdmlydHVhbCBib29sIG9wZXJhdG9yPT0oY29uc3QgRXZl
bnRMaXN0ZW5lciYpID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lkIGhhbmRsZUV2ZW50KFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqLCBFdmVudCopID0gMDsKLSAgICAgICAgLy8gUmV0dXJuIHRydWUg
dG8gaW5kaWNhdGUgdGhhdCB0aGUgZXJyb3IgaXMgaGFuZGxlZC4KLSAgICAgICAgdmlydHVhbCBi
b29sIHJlcG9ydEVycm9yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcmIC8q
bWVzc2FnZSovLCBjb25zdCBTdHJpbmcmIC8qdXJsKi8sIGludCAvKmxpbmVOdW1iZXIqLykgeyBy
ZXR1cm4gZmFsc2U7IH0KICAgICAgICAgdmlydHVhbCBib29sIHdhc0NyZWF0ZWRGcm9tTWFya3Vw
KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIAogI2lmIFVTRShKU0MpCmRpZmYgLS1naXQgYS9X
ZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29udGV4dC5jcHAgYi9XZWJDb3JlL3dvcmtlcnMvV29ya2Vy
Q29udGV4dC5jcHAKaW5kZXggN2I0ZjI5My4uMWE4NjEyNyAxMDA2NDQKLS0tIGEvV2ViQ29yZS93
b3JrZXJzL1dvcmtlckNvbnRleHQuY3BwCisrKyBiL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250
ZXh0LmNwcApAQCAtMzIsOSArMzIsMTAgQEAKICNpbmNsdWRlICJXb3JrZXJDb250ZXh0LmgiCiAK
ICNpbmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIKLSNpbmNsdWRlICJEYXRhYmFzZS5oIgogI2lu
Y2x1ZGUgIkRPTVRpbWVyLmgiCiAjaW5jbHVkZSAiRE9NV2luZG93LmgiCisjaW5jbHVkZSAiRGF0
YWJhc2UuaCIKKyNpbmNsdWRlICJFcnJvckV2ZW50LmgiCiAjaW5jbHVkZSAiRXZlbnQuaCIKICNp
bmNsdWRlICJFdmVudEV4Y2VwdGlvbi5oIgogI2luY2x1ZGUgIk1lc3NhZ2VQb3J0LmgiCkBAIC02
NCw2ICs2NSw3IEBAIFdvcmtlckNvbnRleHQ6OldvcmtlckNvbnRleHQoY29uc3QgS1VSTCYgdXJs
LCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgV29ya2VyVGhyCiAgICAgLCBtX3NjcmlwdChuZXcg
V29ya2VyU2NyaXB0Q29udHJvbGxlcih0aGlzKSkKICAgICAsIG1fdGhyZWFkKHRocmVhZCkKICAg
ICAsIG1fY2xvc2luZyhmYWxzZSkKKyAgICAsIG1fcmVwb3J0aW5nRXhjZXB0aW9uKGZhbHNlKQog
ewogICAgIHNldFNlY3VyaXR5T3JpZ2luKFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUodXJsKSk7CiB9
CkBAIC0yMzQsOSArMjM2LDE1IEBAIHZvaWQgV29ya2VyQ29udGV4dDo6aW1wb3J0U2NyaXB0cyhj
b25zdCBWZWN0b3I8U3RyaW5nPiYgdXJscywgY29uc3QgU3RyaW5nJiBjYWxsCiB2b2lkIFdvcmtl
ckNvbnRleHQ6OnJlcG9ydEV4Y2VwdGlvbihjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSwgaW50
IGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKQogewogICAgIGJvb2wgZXJyb3JI
YW5kbGVkID0gZmFsc2U7Ci0gICAgaWYgKG9uZXJyb3IoKSkKLSAgICAgICAgZXJyb3JIYW5kbGVk
ID0gb25lcnJvcigpLT5yZXBvcnRFcnJvcih0aGlzLCBlcnJvck1lc3NhZ2UsIHNvdXJjZVVSTCwg
bGluZU51bWJlcik7Ci0KKyAgICBpZiAoIW1fcmVwb3J0aW5nRXhjZXB0aW9uKSB7CisgICAgICAg
IGlmIChvbmVycm9yKCkpIHsKKyAgICAgICAgICAgIG1fcmVwb3J0aW5nRXhjZXB0aW9uID0gdHJ1
ZTsKKyAgICAgICAgICAgIFJlZlB0cjxFcnJvckV2ZW50PiBlcnJvckV2ZW50KEVycm9yRXZlbnQ6
OmNyZWF0ZShlcnJvck1lc3NhZ2UsIHNvdXJjZVVSTCwgbGluZU51bWJlcikpOworICAgICAgICAg
ICAgb25lcnJvcigpLT5oYW5kbGVFdmVudCh0aGlzLCBlcnJvckV2ZW50LmdldCgpKTsKKyAgICAg
ICAgICAgIGVycm9ySGFuZGxlZCA9IGVycm9yRXZlbnQtPmRlZmF1bHRQcmV2ZW50ZWQoKTsKKyAg
ICAgICAgICAgIG1fcmVwb3J0aW5nRXhjZXB0aW9uID0gZmFsc2U7CisgICAgICAgIH0KKyAgICB9
CiAgICAgaWYgKCFlcnJvckhhbmRsZWQpCiAgICAgICAgIHRocmVhZCgpLT53b3JrZXJSZXBvcnRp
bmdQcm94eSgpLnBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdChlcnJvck1lc3NhZ2UsIGxpbmVO
dW1iZXIsIHNvdXJjZVVSTCk7CiB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL3dvcmtlcnMvV29ya2Vy
Q29udGV4dC5oIGIvV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRleHQuaAppbmRleCBmYjRhMjZk
Li4xZTY2YTY1IDEwMDY0NAotLS0gYS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29udGV4dC5oCisr
KyBiL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0LmgKQEAgLTE1NCw2ICsxNTQsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIG11dGFibGUgUmVmUHRyPE5vdGlmaWNhdGlvbkNl
bnRlcj4gbV9ub3RpZmljYXRpb25zOwogI2VuZGlmCiAgICAgICAgIGJvb2wgbV9jbG9zaW5nOwor
ICAgICAgICBib29sIG1fcmVwb3J0aW5nRXhjZXB0aW9uOwogICAgICAgICBFdmVudFRhcmdldERh
dGEgbV9ldmVudFRhcmdldERhdGE7CiAgICAgfTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>52018</attachid>
            <date>2010-03-30 03:04:09 -0700</date>
            <delta_ts>2010-04-05 06:08:23 -0700</delta_ts>
            <desc>patch</desc>
            <filename>worker-report-error5.patch</filename>
            <type>text/plain</type>
            <size>39311</size>
            <attacher name="Yury Semikhatsky">yurys</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBiZTRkMmU3Li40ZDAxOTZkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMTYgQEAKIDIwMTAtMDMt
MzAgIFl1cnkgU2VtaWtoYXRza3kgIDx5dXJ5c0BjaHJvbWl1bS5vcmc+CiAKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdCB0aGF0IGV4Y2VwdGlvbiB3
aGljaCBvY2N1cnMgaW4gb25lcnJvciBoYW5kbGVyIGlzIHJlcG9ydGVkIHRvIHRoZSBXb3JrZXIg
b2JqZWN0LgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0zNjM3NQorCisgICAgICAgICogZmFzdC93b3JrZXJzL3dvcmtlci1zY3JpcHQtZXJyb3ItZXhw
ZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3Qvd29ya2Vycy93b3JrZXItc2NyaXB0LWVycm9yLmh0
bWw6CisKKzIwMTAtMDMtMzAgIFl1cnkgU2VtaWtoYXRza3kgIDx5dXJ5c0BjaHJvbWl1bS5vcmc+
CisKICAgICAgICAgUmV2aWV3ZWQgYnkgUGF2ZWwgRmVsZG1hbi4KIAogICAgICAgICBTa2lwIGh0
dHAvdGVzdHMvaW5zcGVjdG9yLWVuYWJsZWQgb24gTGludXggYW5kIE1hYyB3aGVyZSBMYXlvdXRU
ZXN0Q29udG9sbGVyIGRvZXNuJ3Qgc3VwcG9ydCBpbnNwZWN0b3IgbWV0aG9kcyB5ZXQuCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvd29ya2VyLXNjcmlwdC1lcnJvci1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvd29ya2VyLXNjcmlwdC1lcnJvci1l
eHBlY3RlZC50eHQKaW5kZXggZDUzNWU3ZC4uMTBhYjA0OSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvZmFzdC93b3JrZXJzL3dvcmtlci1zY3JpcHQtZXJyb3ItZXhwZWN0ZWQudHh0CisrKyBiL0xh
eW91dFRlc3RzL2Zhc3Qvd29ya2Vycy93b3JrZXItc2NyaXB0LWVycm9yLWV4cGVjdGVkLnR4dApA
QCAtNCw2ICs0LDcgQEAgVGVzdCBXb3JrZXIgc2NyaXB0IGVycm9yIGhhbmRsaW5nIGZ1bmN0aW9u
YWxpdHkuIFNob3VsZCBwcmludCBhIHNlcmllcyBvZiBQQVNTIG0KIFBBU1M6IG9uZXJyb3IgaW52
b2tlZCBmb3IgYSBzY3JpcHQgdGhhdCBoYXMgaW52YWxpZCBzeW50YXguCiBQQVNTOiBvbmVycm9y
IGludm9rZWQgZm9yIGEgc2NyaXB0IHRoYXQgaGFzIHNjcmlwdCBlcnJvciAnUmVmZXJlbmNlRXJy
b3I6IENhbid0IGZpbmQgdmFyaWFibGU6IGZvbycgYXQgbGluZSAxLgogUEFTUzogZXZlbnQgbGlz
dGVuZXIgaW52b2tlZCBmb3IgYSBzY3JpcHQgdGhhdCBoYXMgc2NyaXB0IGVycm9yICdSZWZlcmVu
Y2VFcnJvcjogQ2FuJ3QgZmluZCB2YXJpYWJsZTogZm9vJyBhdCBsaW5lIDEuCitQQVNTOiBvbmVy
cm9yIGludm9rZWQgZm9yIGEgc2NyaXB0IHRoYXQgaGFzIHNjcmlwdCBlcnJvciAnUmVmZXJlbmNl
RXJyb3I6IENhbid0IGZpbmQgdmFyaWFibGU6IGJhcicgYXQgbGluZSAzLgogUEFTUzogb25lcnJv
ciBpbnZva2VkIGZvciBhIHNjcmlwdCB0aGF0IGhhcyBzY3JpcHQgZXJyb3IgJ1JlZmVyZW5jZUVy
cm9yOiBDYW4ndCBmaW5kIHZhcmlhYmxlOiBmb28nIGF0IGxpbmUgNy4KIFBBU1M6IG9uZXJyb3Ig
aW52b2tlZCBmb3IgYSBzY3JpcHQgdGhhdCBoYXMgc2NyaXB0IGVycm9yICdSZWZlcmVuY2VFcnJv
cjogQ2FuJ3QgZmluZCB2YXJpYWJsZTogZm9vJyBhdCBsaW5lIDcuCiBQQVNTOiBvbmVycm9yIGlu
dm9rZWQgZm9yIGEgc2NyaXB0IHRoYXQgaGFzIHNjcmlwdCBlcnJvciAnUmVmZXJlbmNlRXJyb3I6
IENhbid0IGZpbmQgdmFyaWFibGU6IGZvbycgYXQgbGluZSA3LgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZmFzdC93b3JrZXJzL3dvcmtlci1zY3JpcHQtZXJyb3IuaHRtbCBiL0xheW91dFRlc3Rz
L2Zhc3Qvd29ya2Vycy93b3JrZXItc2NyaXB0LWVycm9yLmh0bWwKaW5kZXggYWQ5NmY3Ni4uMmJh
MmVhYiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC93b3JrZXJzL3dvcmtlci1zY3JpcHQt
ZXJyb3IuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvd29ya2VyLXNjcmlwdC1l
cnJvci5odG1sCkBAIC04MSw5ICs4MSwxMyBAQCBmdW5jdGlvbiB0ZXN0RXJyb3JJbkhhbmRsaW5n
U2NyaXB0RXJyb3IoKQogewogICAgIHRyeSB7CiAgICAgICAgIHZhciB3b3JrZXIgPSBuZXcgV29y
a2VyKCJyZXNvdXJjZXMvd29ya2VyLWVycm9yLWluLWhhbmRsaW5nLXNjcmlwdC1lcnJvci5qcyIp
OworICAgICAgICB2YXIgZXJyb3JDb3VudCA9IDA7CiAgICAgICAgIHdvcmtlci5vbmVycm9yID0g
ZnVuY3Rpb24oZXZ0KSB7CiAgICAgICAgICAgICBsb2coIlBBU1M6IG9uZXJyb3IgaW52b2tlZCBm
b3IgYSBzY3JpcHQgdGhhdCBoYXMgc2NyaXB0IGVycm9yICciICsgZXZ0Lm1lc3NhZ2UgKyAiJyBh
dCBsaW5lICIgKyBldnQubGluZW5vICsgIi4iKTsKLSAgICAgICAgICAgIHJ1bk5leHRUZXN0KCk7
CisgICAgICAgICAgICArK2Vycm9yQ291bnQ7CisgICAgICAgICAgICAvLyBTZWNvbmQgZXJyb3Ig
aGFwcGVucyBpbiB0aGUgb25lcnJvciBoYW5kbGVyLiBSdW4gbmV4dCB0ZXN0IG9ubHkgd2hlbiBp
dCdzIHJlcG9ydGVkLgorICAgICAgICAgICAgaWYgKGVycm9yQ291bnQgPT0gMikKKyAgICAgICAg
ICAgICAgICBydW5OZXh0VGVzdCgpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAg
ICB9CiAgICAgfSBjYXRjaCAoZXgpIHsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvQW5kcm9pZC5qc2Ni
aW5kaW5ncy5tayBiL1dlYkNvcmUvQW5kcm9pZC5qc2NiaW5kaW5ncy5tawppbmRleCBlNTY0MTBh
Li4zZDkxNTQ3IDEwMDY0NAotLS0gYS9XZWJDb3JlL0FuZHJvaWQuanNjYmluZGluZ3MubWsKKysr
IGIvV2ViQ29yZS9BbmRyb2lkLmpzY2JpbmRpbmdzLm1rCkBAIC0xNTcsNiArMTU3LDcgQEAgTE9D
QUxfU1JDX0ZJTEVTICs9IFwKIAliaW5kaW5ncy9qcy9KU1dvcmtlckNvbnN0cnVjdG9yLmNwcCBc
CiAJYmluZGluZ3MvanMvSlNXb3JrZXJDb250ZXh0QmFzZS5jcHAgXAogCWJpbmRpbmdzL2pzL0pT
V29ya2VyQ29udGV4dEN1c3RvbS5jcHAgXAorCWJpbmRpbmdzL2pzL0pTV29ya2VyQ29udGV4dEVy
cm9ySGFuZGxlci5jcHAgXAogCWJpbmRpbmdzL2pzL0pTV29ya2VyQ3VzdG9tLmNwcCBcCiAJYmlu
ZGluZ3MvanMvSlNYTUxIdHRwUmVxdWVzdENvbnN0cnVjdG9yLmNwcCBcCiAJYmluZGluZ3MvanMv
SlNYTUxIdHRwUmVxdWVzdEN1c3RvbS5jcHAgXApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VM
b2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBkMjY1ODI3Li42Mzg1ZmY0IDEwMDY0NAotLS0g
YS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQw
IEBACisyMDEwLTAzLTMwICBZdXJ5IFNlbWlraGF0c2t5ICA8eXVyeXNAY2hyb21pdW0ub3JnPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVuY2F1Z2h0
IFdvcmtlciBleGNlcHRpb25zIHRoYXQgaGFwcGVuIG5vdCBpbiBldmVudCBsaXN0ZW5lcnMgd2ls
bCBiZSByZXBvcnRlZCB0byB0aGUgdXNlci4KKworICAgICAgICBQcm92aWRlZCBjdXN0b20gYmlu
ZGluZyBmb3Igb25lcnJvciBldmVudCBoYW5kbGVyIGluIFdvcmtlckNvbnRleHQgYW5kIG1vdmVk
IEV2ZW50TGlzdGVuZXI6OnJlcG9ydEVycm9yIGltcGxtZW50YXRpb24gdGhlcmUuIE9uZXJyb3Ig
aGFuZGxlciBuZWVkcyBjdXN0b20gaW1wbGVtZW50YXRpb24gYmVjYXVzZSBhY2NvcmRpbmcgdG8g
dGhlIHNwZWNpZmljYXRpb24gaXQgbXVzdCBiZSBhIGZ1bmN0aW9uIHRoYXQgYWNjZXB0cyB0aHJl
ZSBwYXJhbWV0ZXJzIHJhdGhlciB0aGFuIHNpbmdsZSBFcnJvckV2ZW50IG9iamVjdC4KKworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzYzNzUKKworICAg
ICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBXZWJDb3JlLnBybzoKKyAgICAgICAgKiBX
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYmluZGluZ3MvanMv
SlNFdmVudExpc3RlbmVyLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0V2ZW50TGlzdGVu
ZXIuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1dvcmtlckNvbnRleHRFcnJvckhhbmRsZXIu
Y3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkpTV29ya2VyQ29udGV4dEVycm9ySGFuZGxl
cjo6SlNXb3JrZXJDb250ZXh0RXJyb3JIYW5kbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkpTV29y
a2VyQ29udGV4dEVycm9ySGFuZGxlcjo6fkpTV29ya2VyQ29udGV4dEVycm9ySGFuZGxlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpKU1dvcmtlckNvbnRleHRFcnJvckhhbmRsZXI6OmhhbmRsZUV2ZW50
KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1dvcmtlckNvbnRleHRFcnJvckhhbmRsZXIuaDog
QWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpKU1dvcmtlckNvbnRleHRFcnJvckhhbmRsZXI6OmNy
ZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVKU1dvcmtlckNvbnRleHRFcnJvckhhbmRs
ZXIpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOgorICAg
ICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtOgorICAgICAgICAqIGJp
bmRpbmdzL3Y4L1Y4V29ya2VyQ29udGV4dEVycm9ySGFuZGxlci5jcHA6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZTo6VjhXb3JrZXJDb250ZXh0RXJyb3JIYW5kbGVyOjpWOFdvcmtlckNvbnRleHRF
cnJvckhhbmRsZXIpOgorICAgICAgICAoV2ViQ29yZTo6VjhXb3JrZXJDb250ZXh0RXJyb3JIYW5k
bGVyOjpjYWxsTGlzdGVuZXJGdW5jdGlvbik6CisgICAgICAgICogYmluZGluZ3MvdjgvVjhXb3Jr
ZXJDb250ZXh0RXJyb3JIYW5kbGVyLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6VjhXb3Jr
ZXJDb250ZXh0RXJyb3JIYW5kbGVyOjpjcmVhdGUpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4
V29ya2VyQ29udGV4dEV2ZW50TGlzdGVuZXIuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4
V29ya2VyQ29udGV4dEV2ZW50TGlzdGVuZXIuaDoKKyAgICAgICAgKiBkb20vRXZlbnRMaXN0ZW5l
ci5oOiBSZW1vdmVkIHJlcG9ydEVycm9yIG1ldGhvZCB0aGF0IHdhcyB1c2VkIG9ubHkgZm9yIHJl
cG9ydGluZyB3b3JrZXIgZXJyb3JzLgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyQ29udGV4dC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJDb250ZXh0OjpXb3JrZXJDb250ZXh0KToKKyAg
ICAgICAgKFdlYkNvcmU6OldvcmtlckNvbnRleHQ6OnJlcG9ydEV4Y2VwdGlvbik6CisgICAgICAg
ICogd29ya2Vycy9Xb3JrZXJDb250ZXh0Lmg6CisKIDIwMTAtMDMtMzAgIElseWEgVGlraG9ub3Zz
a3kgIDxsb2lzbG9AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFBhdmVsIEZl
bGRtYW4uCmRpZmYgLS1naXQgYS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtIGIvV2ViQ29yZS9HTlVt
YWtlZmlsZS5hbQppbmRleCA5ZWUyYTc2Li40Njc5YWQxIDEwMDY0NAotLS0gYS9XZWJDb3JlL0dO
VW1ha2VmaWxlLmFtCisrKyBiL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KQEAgLTQ3Myw2ICs0NzMs
OCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVdlYkNvcmUvYmluZGluZ3MvanMvSlNXZWJLaXRD
U1NNYXRyaXhDb25zdHJ1Y3Rvci5oIFwKIAlXZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViS2l0UG9p
bnRDb25zdHJ1Y3Rvci5jcHAgXAogCVdlYkNvcmUvYmluZGluZ3MvanMvSlNXZWJLaXRQb2ludENv
bnN0cnVjdG9yLmggXAorCVdlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJDb250ZXh0RXJyb3JI
YW5kbGVyLmNwcCBcCisJV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckNvbnRleHRFcnJvckhh
bmRsZXIuaCBcCiAJV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1hNTEh0dHBSZXF1ZXN0Q29uc3RydWN0
b3IuY3BwIFwKIAlXZWJDb3JlL2JpbmRpbmdzL2pzL0pTWE1MSHR0cFJlcXVlc3RDb25zdHJ1Y3Rv
ci5oIFwKIAlXZWJDb3JlL2JpbmRpbmdzL2pzL0pTWE1MSHR0cFJlcXVlc3RDdXN0b20uY3BwIFwK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvV2ViQ29yZS9XZWJDb3JlLmd5cGkK
aW5kZXggZGViZTIxZi4uZWNjYTM5YiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLmd5cGkK
KysrIGIvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTYyNSw2ICs2MjUsOCBAQAogICAgICAgICAg
ICAgJ2JpbmRpbmdzL2pzL0pTV29ya2VyQ29udGV4dEJhc2UuY3BwJywKICAgICAgICAgICAgICdi
aW5kaW5ncy9qcy9KU1dvcmtlckNvbnRleHRCYXNlLmgnLAogICAgICAgICAgICAgJ2JpbmRpbmdz
L2pzL0pTV29ya2VyQ29udGV4dEN1c3RvbS5jcHAnLAorICAgICAgICAgICAgJ2JpbmRpbmdzL2pz
L0pTV29ya2VyQ29udGV4dEVycm9ySGFuZGxlci5jcHAnLAorICAgICAgICAgICAgJ2JpbmRpbmdz
L2pzL0pTV29ya2VyQ29udGV4dEVycm9ySGFuZGxlci5oJywKICAgICAgICAgICAgICdiaW5kaW5n
cy9qcy9KU1dvcmtlckN1c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTWE1M
SHR0cFJlcXVlc3RDb25zdHJ1Y3Rvci5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pT
WE1MSHR0cFJlcXVlc3RDb25zdHJ1Y3Rvci5oJywKQEAgLTg5Miw2ICs4OTQsOCBAQAogICAgICAg
ICAgICAgJ2JpbmRpbmdzL3Y4L1Y4U1ZHUE9EVHlwZVdyYXBwZXIuaCcsCiAgICAgICAgICAgICAn
YmluZGluZ3MvdjgvVjhVdGlsaXRpZXMuY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9W
OFV0aWxpdGllcy5oJywKKyAgICAgICAgICAgICdiaW5kaW5ncy92OC9WOFdvcmtlckNvbnRleHRF
cnJvckhhbmRsZXIuY3BwJywKKyAgICAgICAgICAgICdiaW5kaW5ncy92OC9WOFdvcmtlckNvbnRl
eHRFcnJvckhhbmRsZXIuaCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvVjhXb3JrZXJDb250
ZXh0RXZlbnRMaXN0ZW5lci5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L1Y4V29ya2Vy
Q29udGV4dEV2ZW50TGlzdGVuZXIuaCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvV29ya2Vy
Q29udGV4dEV4ZWN1dGlvblByb3h5LmgnLApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLnBy
byBiL1dlYkNvcmUvV2ViQ29yZS5wcm8KaW5kZXggZjE1ZTljNy4uNDMyYjkxYyAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9XZWJDb3JlLnBybworKysgYi9XZWJDb3JlL1dlYkNvcmUucHJvCkBAIC0zNjAs
NiArMzYwLDcgQEAgU09VUkNFUyArPSBcCiAgICAgYmluZGluZ3MvanMvSlNMYXp5RXZlbnRMaXN0
ZW5lci5jcHAgXAogICAgIGJpbmRpbmdzL2pzL0pTUGx1Z2luRWxlbWVudEZ1bmN0aW9ucy5jcHAg
XAogICAgIGJpbmRpbmdzL2pzL0pTUG9wU3RhdGVFdmVudEN1c3RvbS5jcHAgXAorICAgIGJpbmRp
bmdzL2pzL0pTV29ya2VyQ29udGV4dEVycm9ySGFuZGxlci5jcHAgXAogICAgIGJpbmRpbmdzL2pz
L0phdmFTY3JpcHRQcm9maWxlLmggXAogICAgIGJpbmRpbmdzL2pzL0phdmFTY3JpcHRQcm9maWxl
Tm9kZS5oIFwKICAgICBiaW5kaW5ncy9qcy9KYXZhU2NyaXB0UHJvZmlsZS5jcHAgXApAQCAtMTA2
Niw3ICsxMDY3LDcgQEAgSEVBREVSUyArPSBcCiAgICAgYmluZGluZ3MvanMvSlNXZWJLaXRQb2lu
dENvbnN0cnVjdG9yLmggXAogICAgIGJpbmRpbmdzL2pzL0pTV29ya2VyQ29uc3RydWN0b3IuaCBc
CiAgICAgYmluZGluZ3MvanMvSlNXb3JrZXJDb250ZXh0QmFzZS5oIFwKLSAgICBiaW5kaW5ncy9q
cy9KU1dvcmtlckNvbnRleHRCYXNlLmggXAorICAgIGJpbmRpbmdzL2pzL0pTV29ya2VyQ29udGV4
dEVycm9ySGFuZGxlci5oIFwKICAgICBiaW5kaW5ncy9qcy9KU1hNTEh0dHBSZXF1ZXN0Q29uc3Ry
dWN0b3IuaCBcCiAgICAgYmluZGluZ3MvanMvSlNYU0xUUHJvY2Vzc29yQ29uc3RydWN0b3IuaCBc
CiAgICAgYmluZGluZ3MvanMvU2NoZWR1bGVkQWN0aW9uLmggXApkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvaiBiL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ov
V2ViQ29yZS52Y3Byb2oKaW5kZXggOTQ5NjdkNS4uNjM1ZGQ1OSAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagorKysgYi9XZWJDb3JlL1dlYkNvcmUudmNw
cm9qL1dlYkNvcmUudmNwcm9qCkBAIC00MDA0NCw2ICs0MDA0NCw2MSBAQAogCQkJCQk8L0ZpbGVD
b25maWd1cmF0aW9uPg0KIAkJCQk8L0ZpbGU+DQogCQkJCTxGaWxlDQorCQkJCQlSZWxhdGl2ZVBh
dGg9Ii4uXGJpbmRpbmdzXGpzXEpTV29ya2VyQ29udGV4dEVycm9ySGFuZGxlci5jcHAiID4NCisJ
CQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IkRlYnVnfFdpbjMyIg0KKwkJCQkJ
CUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJ
CQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1
cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iUmVsZWFzZXxX
aW4zMiINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJ
PFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJ
PC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5h
bWU9IkRlYnVnX0ludGVybmFsfFdpbjMyIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVl
Ig0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29s
Ig0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25m
aWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iRGVidWdfQ2Fpcm98V2luMzIiDQorCQkJCQkJRXhjbHVk
ZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9
IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+
DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJSZWxlYXNlX0NhaXJvfFdp
bjMyIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8
VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8
L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFt
ZT0iRGVidWdfQWxsfFdpbjMyIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJ
CQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJ
CQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8L0ZpbGU+DQorCQkJCTxG
aWxlDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGJpbmRpbmdzXGpzXEpTV29ya2VyQ29udGV4dEVy
cm9ySGFuZGxlci5oIg0KKwkJCQkJPg0KKwkJCQk8L0ZpbGU+DQorCQkJCTxGaWxlDQogCQkJCQlS
ZWxhdGl2ZVBhdGg9Ii4uXGJpbmRpbmdzXGpzXEpTWE1MSHR0cFJlcXVlc3RDb25zdHJ1Y3Rvci5j
cHAiDQogCQkJCQk+DQogCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCmRpZmYgLS1naXQgYS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGU4MGE2ZmIuLjg3ZWQ1MGMgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC00ODgyLDYgKzQ4ODIsOCBA
QAogCQlGMzY0NEFGRjExMTk4MDU5MDBFMEQ1MzcgLyogSW5qZWN0ZWRTY3JpcHQuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjM2NDRBRkQxMTE5ODA1
OTAwRTBENTM3IC8qIEluamVjdGVkU2NyaXB0LmNwcCAqLzsgfTsKIAkJRjM2NDRCMDAxMTE5ODA1
OTAwRTBENTM3IC8qIEluamVjdGVkU2NyaXB0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBGMzY0NEFGRTExMTk4MDU5MDBFMEQ1MzcgLyogSW5qZWN0ZWRT
Y3JpcHQuaCAqLzsgfTsKIAkJRjM3NUNDMDcxMTUwRDMwMDAwOEREQjgxIC8qIEluc3BlY3Rvcldv
cmtlclJlc291cmNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBGMzc1Q0MwNjExNTBEMzAwMDA4RERCODEgLyogSW5zcGVjdG9yV29ya2VyUmVzb3VyY2Uu
aCAqLzsgfTsKKwkJRjNENDYxNDgxMTYxRDUzMjAwQ0EwRDA5IC8qIEpTV29ya2VyQ29udGV4dEVy
cm9ySGFuZGxlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBGM0Q0NjE0NjExNjFENTMyMDBDQTBEMDkgLyogSlNXb3JrZXJDb250ZXh0RXJyb3JIYW5k
bGVyLmNwcCAqLzsgfTsKKwkJRjNENDYxNDkxMTYxRDUzMjAwQ0EwRDA5IC8qIEpTV29ya2VyQ29u
dGV4dEVycm9ySGFuZGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRjNENDYxNDcxMTYxRDUzMjAwQ0EwRDA5IC8qIEpTV29ya2VyQ29udGV4dEVycm9y
SGFuZGxlci5oICovOyB9OwogCQlGNEVBRjRBRTEwQzc0MkIxMDA5MTAwRDMgLyogT3BlblR5cGVT
YW5pdGl6ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRjRFQUY0QUMxMEM3NDJCMTAwOTEwMEQzIC8qIE9wZW5UeXBlU2FuaXRpemVyLmNwcCAqLzsg
fTsKIAkJRjRFQUY0QUYxMEM3NDJCMTAwOTEwMEQzIC8qIE9wZW5UeXBlU2FuaXRpemVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNEVBRjRBRDEwQzc0
MkIxMDA5MTAwRDMgLyogT3BlblR5cGVTYW5pdGl6ZXIuaCAqLzsgfTsKIAkJRjVDMDQxREEwRkZD
QTdDRTAwODM5RDRBIC8qIEhUTUxEYXRhTGlzdEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjVDMDQxRDcwRkZDQTdDRTAwODM5RDRBIC8q
IEhUTUxEYXRhTGlzdEVsZW1lbnQuY3BwICovOyB9OwpAQCAtMTAyNDIsNiArMTAyNDQsOCBAQAog
CQlGMzY0NEFGRDExMTk4MDU5MDBFMEQ1MzcgLyogSW5qZWN0ZWRTY3JpcHQuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5qZWN0ZWRTY3JpcHQuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlGMzY0NEFGRTExMTk4MDU5MDBFMEQ1MzcgLyogSW5qZWN0
ZWRTY3JpcHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5qZWN0ZWRTY3Jp
cHQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjM3NUNDMDYxMTUwRDMwMDAwOERE
QjgxIC8qIEluc3BlY3RvcldvcmtlclJlc291cmNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEluc3BlY3RvcldvcmtlclJlc291cmNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUYzRDQ2MTQ2MTE2MUQ1MzIwMENBMEQwOSAvKiBKU1dvcmtlckNvbnRleHRFcnJv
ckhhbmRsZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNXb3Jr
ZXJDb250ZXh0RXJyb3JIYW5kbGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
RjNENDYxNDcxMTYxRDUzMjAwQ0EwRDA5IC8qIEpTV29ya2VyQ29udGV4dEVycm9ySGFuZGxlci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1dvcmtlckNvbnRleHRFcnJvckhh
bmRsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjRFQUY0QUMxMEM3NDJCMTAw
OTEwMEQzIC8qIE9wZW5UeXBlU2FuaXRpemVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgbmFtZSA9IE9wZW5UeXBlU2FuaXRpemVyLmNwcDsgcGF0aCA9IG9wZW50eXBlL09wZW5U
eXBlU2FuaXRpemVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjRFQUY0QUQx
MEM3NDJCMTAwOTEwMEQzIC8qIE9wZW5UeXBlU2FuaXRpemVyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgbmFtZSA9IE9wZW5UeXBlU2FuaXRpemVyLmg7IHBhdGggPSBvcGVudHlwZS9PcGVu
VHlwZVNhbml0aXplci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNTIzRDIzQjAy
REU0Mzk2MDE4NjM1Q0EgLyogSFRNTERvY3VtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEhUTUxEb2N1bWVudC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9OwpAQCAtMTQ4
MjQsNiArMTQ4MjgsOCBAQAogCQkJCUIyMTEyN0E1MEIzMTg2NzcwMDA5QkU1MyAvKiBKU1NWR1BP
RFR5cGVXcmFwcGVyLmggKi8sCiAJCQkJRTFDMzZEMzIwRUIwQTA5NDAwNzQxMEJDIC8qIEpTV29y
a2VyQ29udGV4dEJhc2UuY3BwICovLAogCQkJCUUxQzM2RDMzMEVCMEEwOTQwMDc0MTBCQyAvKiBK
U1dvcmtlckNvbnRleHRCYXNlLmggKi8sCisJCQkJRjNENDYxNDYxMTYxRDUzMjAwQ0EwRDA5IC8q
IEpTV29ya2VyQ29udGV4dEVycm9ySGFuZGxlci5jcHAgKi8sCisJCQkJRjNENDYxNDcxMTYxRDUz
MjAwQ0EwRDA5IC8qIEpTV29ya2VyQ29udGV4dEVycm9ySGFuZGxlci5oICovLAogCQkJCUJDQTM3
OEJBMEQxNUY2NDIwMEI3OTNENiAvKiBTY2hlZHVsZWRBY3Rpb24uY3BwICovLAogCQkJCUJDQTM3
OEJCMEQxNUY2NDIwMEI3OTNENiAvKiBTY2hlZHVsZWRBY3Rpb24uaCAqLywKIAkJCQk3QTFFODhG
MzEwMUNDMzg0MDAwQzRERjUgLyogU2NyaXB0QXJyYXkuY3BwICovLApAQCAtMTg3NjgsNiArMTg3
NzQsNyBAQAogCQkJCUU0Nzc4QjgwMTE1QTU4MUEwMEI1RDM3MiAvKiBKU0N1c3RvbUV2ZW50Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQlFMUUxQkYwMDExNUZGNkZCMDA2RjUyQ0EgLyogV2luZG93c0tl
eWJvYXJkQ29kZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTg0OTlBNTE1MTE1RkIzMzAwMEY1NjZF
MyAvKiBSZW5kZXJTVkdSZXNvdXJjZU1hcmtlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJRjNENDYx
NDkxMTYxRDUzMjAwQ0EwRDA5IC8qIEpTV29ya2VyQ29udGV4dEVycm9ySGFuZGxlci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9
IDA7CiAJCX07CkBAIC0yMDk4Miw2ICsyMDk4OSw3IEBACiAJCQkJNjJDRDMyNTkxMTU3RTU3QzAw
NjNCMEE3IC8qIEN1c3RvbUV2ZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUU0Nzc4QjdGMTE1
QTU4MUEwMEI1RDM3MiAvKiBKU0N1c3RvbUV2ZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg0
OTlBNTE0MTE1RkIzMzAwMEY1NjZFMyAvKiBSZW5kZXJTVkdSZXNvdXJjZU1hcmtlci5jcHAgaW4g
U291cmNlcyAqLywKKwkJCQlGM0Q0NjE0ODExNjFENTMyMDBDQTBEMDkgLyogSlNXb3JrZXJDb250
ZXh0RXJyb3JIYW5kbGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JE
ZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0V2ZW50TGlzdGVuZXIuY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2
ZW50TGlzdGVuZXIuY3BwCmluZGV4IGJlMDQ5ZGIuLmIwMGQ2NTQgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNFdmVudExpc3RlbmVyLmNwcAorKysgYi9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRXZlbnRMaXN0ZW5lci5jcHAKQEAgLTEzMyw0NyArMTMzLDYgQEAgdm9pZCBKU0V2ZW50
TGlzdGVuZXI6OmhhbmRsZUV2ZW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQKICAgICB9CiB9CiAKLWJvb2wgSlNFdmVudExpc3RlbmVyOjpyZXBvcnRFcnJv
cihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIG1lc3NhZ2Us
IGNvbnN0IFN0cmluZyYgdXJsLCBpbnQgbGluZU51bWJlcikKLXsKLSAgICBKU0xvY2sgbG9jayhT
aWxlbmNlQXNzZXJ0aW9uc09ubHkpOwotCi0gICAgSlNPYmplY3QqIGpzRnVuY3Rpb24gPSB0aGlz
LT5qc0Z1bmN0aW9uKGNvbnRleHQpOwotICAgIGlmICghanNGdW5jdGlvbikKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotCi0gICAgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IHRvSlNE
T01HbG9iYWxPYmplY3QoY29udGV4dCwgbV9pc29sYXRlZFdvcmxkLmdldCgpKTsKLSAgICBFeGVj
U3RhdGUqIGV4ZWMgPSBnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKTsKLQotICAgIENhbGxEYXRh
IGNhbGxEYXRhOwotICAgIENhbGxUeXBlIGNhbGxUeXBlID0ganNGdW5jdGlvbi0+Z2V0Q2FsbERh
dGEoY2FsbERhdGEpOwotCi0gICAgaWYgKGNhbGxUeXBlID09IENhbGxUeXBlTm9uZSkKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOwotCi0gICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJnczsKLSAgICBh
cmdzLmFwcGVuZChqc1N0cmluZyhleGVjLCBtZXNzYWdlKSk7Ci0gICAgYXJncy5hcHBlbmQoanNT
dHJpbmcoZXhlYywgdXJsKSk7Ci0gICAgYXJncy5hcHBlbmQoanNOdW1iZXIoZXhlYywgbGluZU51
bWJlcikpOwotCi0gICAgSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhID0gZ2xvYmFsT2JqZWN0LT5n
bG9iYWxEYXRhKCk7Ci0gICAgRHluYW1pY0dsb2JhbE9iamVjdFNjb3BlIGdsb2JhbE9iamVjdFNj
b3BlKGV4ZWMsIGdsb2JhbERhdGEtPmR5bmFtaWNHbG9iYWxPYmplY3QgPyBnbG9iYWxEYXRhLT5k
eW5hbWljR2xvYmFsT2JqZWN0IDogZ2xvYmFsT2JqZWN0KTsgICAgCi0KLSAgICBKU1ZhbHVlIHRo
aXNWYWx1ZSA9IGdsb2JhbE9iamVjdC0+dG9UaGlzT2JqZWN0KGV4ZWMpOwotCi0gICAgZ2xvYmFs
RGF0YS0+dGltZW91dENoZWNrZXIuc3RhcnQoKTsKLSAgICBKU1ZhbHVlIHJldHVyblZhbHVlID0g
SlNDOjpjYWxsKGV4ZWMsIGpzRnVuY3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0YSwgdGhpc1ZhbHVl
LCBhcmdzKTsKLSAgICBnbG9iYWxEYXRhLT50aW1lb3V0Q2hlY2tlci5zdG9wKCk7Ci0KLSAgICAv
LyBJZiBhbiBlcnJvciBvY2N1cnMgd2hpbGUgaGFuZGxpbmcgdGhlIHNjcmlwdCBlcnJvciwgaXQg
c2hvdWxkIGJlIGJ1YmJsZWQgdXAuCi0gICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKSB7Ci0g
ICAgICAgIGV4ZWMtPmNsZWFyRXhjZXB0aW9uKCk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICB9Ci0gICAgCi0gICAgYm9vbCBidWJibGVFdmVudDsKLSAgICByZXR1cm4gcmV0dXJuVmFsdWUu
Z2V0Qm9vbGVhbihidWJibGVFdmVudCkgJiYgIWJ1YmJsZUV2ZW50OwotfQotCiBib29sIEpTRXZl
bnRMaXN0ZW5lcjo6dmlydHVhbGlzQXR0cmlidXRlKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9p
c0F0dHJpYnV0ZTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudExpc3Rl
bmVyLmggYi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5oCmluZGV4IDU2OWMx
OTIuLmIxNWM1ODkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudExpc3Rl
bmVyLmgKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50TGlzdGVuZXIuaApAQCAtNjAs
NyArNjAsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBtYXJr
SlNGdW5jdGlvbihKU0M6Ok1hcmtTdGFjayYpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgaW52YWxp
ZGF0ZUpTRnVuY3Rpb24oSlNDOjpKU09iamVjdCopOwogICAgICAgICB2aXJ0dWFsIHZvaWQgaGFu
ZGxlRXZlbnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEV2ZW50Kik7Ci0gICAgICAgIHZpcnR1
YWwgYm9vbCByZXBvcnRFcnJvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5n
JiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIHVybCwgaW50IGxpbmVOdW1iZXIpOwogICAgICAgICB2
aXJ0dWFsIGJvb2wgdmlydHVhbGlzQXR0cmlidXRlKCkgY29uc3Q7CiAKICAgICBwcm90ZWN0ZWQ6
CmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyQ29udGV4dEVycm9ySGFu
ZGxlci5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyQ29udGV4dEVycm9ySGFuZGxl
ci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDNkZjhmMgotLS0gL2Rl
di9udWxsCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJDb250ZXh0RXJyb3JIYW5k
bGVyLmNwcApAQCAtMCwwICsxLDExMSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisg
KiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0
aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJK
U1dvcmtlckNvbnRleHRFcnJvckhhbmRsZXIuaCIKKworI2luY2x1ZGUgIkVycm9yRXZlbnQuaCIK
KyNpbmNsdWRlICJFdmVudC5oIgorI2luY2x1ZGUgIkpTRXZlbnQuaCIKKyNpbmNsdWRlIDxydW50
aW1lL0pTTG9jay5oPgorCit1c2luZyBuYW1lc3BhY2UgSlNDOworCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK0pTV29ya2VyQ29udGV4dEVycm9ySGFuZGxlcjo6SlNXb3JrZXJDb250ZXh0RXJyb3JI
YW5kbGVyKEpTT2JqZWN0KiBmdW5jdGlvbiwgSlNPYmplY3QqIHdyYXBwZXIsIGJvb2wgaXNBdHRy
aWJ1dGUsIERPTVdyYXBwZXJXb3JsZCogaXNvbGF0ZWRXb3JsZCkKKyAgICA6IEpTRXZlbnRMaXN0
ZW5lcihmdW5jdGlvbiwgd3JhcHBlciwgaXNBdHRyaWJ1dGUsIGlzb2xhdGVkV29ybGQpCit7Cit9
CisKK0pTV29ya2VyQ29udGV4dEVycm9ySGFuZGxlcjo6fkpTV29ya2VyQ29udGV4dEVycm9ySGFu
ZGxlcigpCit7Cit9CisKK3ZvaWQgSlNXb3JrZXJDb250ZXh0RXJyb3JIYW5kbGVyOjpoYW5kbGVF
dmVudChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBFdmVu
dCogZXZlbnQpCit7CisgICAgQVNTRVJUKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOworICAgIGlm
ICghc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkKKyAgICAgICAgcmV0dXJuOworCisgICAgSlNMb2Nr
IGxvY2soU2lsZW5jZUFzc2VydGlvbnNPbmx5KTsKKworICAgIEpTT2JqZWN0KiBqc0Z1bmN0aW9u
ID0gdGhpcy0+anNGdW5jdGlvbihzY3JpcHRFeGVjdXRpb25Db250ZXh0KTsKKyAgICBpZiAoIWpz
RnVuY3Rpb24pCisgICAgICAgIHJldHVybjsKKworICAgIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QgPSB0b0pTRE9NR2xvYmFsT2JqZWN0KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIGlz
b2xhdGVkV29ybGQoKSk7CisgICAgaWYgKCFnbG9iYWxPYmplY3QpCisgICAgICAgIHJldHVybjsK
KworICAgIEV4ZWNTdGF0ZSogZXhlYyA9IGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpOworCisg
ICAgQ2FsbERhdGEgY2FsbERhdGE7CisgICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBqc0Z1bmN0aW9u
LT5nZXRDYWxsRGF0YShjYWxsRGF0YSk7CisKKyAgICBpZiAoY2FsbFR5cGUgIT0gQ2FsbFR5cGVO
b25lKSB7CisKKyAgICAgICAgcmVmKCk7CisKKyAgICAgICAgRXZlbnQqIHNhdmVkRXZlbnQgPSBn
bG9iYWxPYmplY3QtPmN1cnJlbnRFdmVudCgpOworICAgICAgICBnbG9iYWxPYmplY3QtPnNldEN1
cnJlbnRFdmVudChldmVudCk7CisKKyAgICAgICAgQVNTRVJUKGV2ZW50LT5pc0Vycm9yRXZlbnQo
KSk7CisgICAgICAgIEVycm9yRXZlbnQqIGVycm9yRXZlbnQgPSBzdGF0aWNfY2FzdDxFcnJvckV2
ZW50Kj4oZXZlbnQpOworCisgICAgICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3M7CisgICAg
ICAgIGFyZ3MuYXBwZW5kKGpzU3RyaW5nKGV4ZWMsIGVycm9yRXZlbnQtPm1lc3NhZ2UoKSkpOwor
ICAgICAgICBhcmdzLmFwcGVuZChqc1N0cmluZyhleGVjLCBlcnJvckV2ZW50LT5maWxlbmFtZSgp
KSk7CisgICAgICAgIGFyZ3MuYXBwZW5kKGpzTnVtYmVyKGV4ZWMsIGVycm9yRXZlbnQtPmxpbmVu
bygpKSk7CisKKyAgICAgICAgSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhID0gZ2xvYmFsT2JqZWN0
LT5nbG9iYWxEYXRhKCk7CisgICAgICAgIER5bmFtaWNHbG9iYWxPYmplY3RTY29wZSBnbG9iYWxP
YmplY3RTY29wZShleGVjLCBnbG9iYWxEYXRhLT5keW5hbWljR2xvYmFsT2JqZWN0ID8gZ2xvYmFs
RGF0YS0+ZHluYW1pY0dsb2JhbE9iamVjdCA6IGdsb2JhbE9iamVjdCk7ICAgIAorCisgICAgICAg
IEpTVmFsdWUgdGhpc1ZhbHVlID0gZ2xvYmFsT2JqZWN0LT50b1RoaXNPYmplY3QoZXhlYyk7CisK
KyAgICAgICAgZ2xvYmFsRGF0YS0+dGltZW91dENoZWNrZXIuc3RhcnQoKTsKKyAgICAgICAgSlNW
YWx1ZSByZXR1cm5WYWx1ZSA9IEpTQzo6Y2FsbChleGVjLCBqc0Z1bmN0aW9uLCBjYWxsVHlwZSwg
Y2FsbERhdGEsIHRoaXNWYWx1ZSwgYXJncyk7CisgICAgICAgIGdsb2JhbERhdGEtPnRpbWVvdXRD
aGVja2VyLnN0b3AoKTsKKworICAgICAgICBnbG9iYWxPYmplY3QtPnNldEN1cnJlbnRFdmVudChz
YXZlZEV2ZW50KTsKKworICAgICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisgICAgICAg
ICAgICByZXBvcnRDdXJyZW50RXhjZXB0aW9uKGV4ZWMpOworICAgICAgICBlbHNlIHsKKyAgICAg
ICAgICAgIGJvb2wgcmV0dmFsYm9vbDsKKyAgICAgICAgICAgIGlmIChyZXR1cm5WYWx1ZS5nZXRC
b29sZWFuKHJldHZhbGJvb2wpICYmICFyZXR2YWxib29sKQorICAgICAgICAgICAgICAgIGV2ZW50
LT5wcmV2ZW50RGVmYXVsdCgpOworICAgICAgICB9CisKKyAgICAgICAgZGVyZWYoKTsKKyAgICB9
Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNXb3JrZXJDb250ZXh0RXJyb3JIYW5kbGVyLmggYi9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTV29ya2VyQ29udGV4dEVycm9ySGFuZGxlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAuLmExODgyOTkKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTV29ya2VyQ29udGV4dEVycm9ySGFuZGxlci5oCkBAIC0wLDAgKzEsNjQgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJp
YnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICog
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEpT
V29ya2VyQ29udGV4dEVycm9ySGFuZGxlcl9oCisjZGVmaW5lIEpTV29ya2VyQ29udGV4dEVycm9y
SGFuZGxlcl9oCisKKyNpbmNsdWRlICJKU0V2ZW50TGlzdGVuZXIuaCIKKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitjbGFzcyBKU1dvcmtlckNvbnRleHRFcnJvckhhbmRsZXIgOiBwdWJsaWMgSlNF
dmVudExpc3RlbmVyIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxKU1dvcmtlckNv
bnRleHRFcnJvckhhbmRsZXI+IGNyZWF0ZShKU0M6OkpTT2JqZWN0KiBsaXN0ZW5lciwgSlNDOjpK
U09iamVjdCogd3JhcHBlciwgYm9vbCBpc0F0dHJpYnV0ZSwgRE9NV3JhcHBlcldvcmxkKiBpc29s
YXRlZFdvcmxkKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBKU1dvcmtlckNv
bnRleHRFcnJvckhhbmRsZXIobGlzdGVuZXIsIHdyYXBwZXIsIGlzQXR0cmlidXRlLCBpc29sYXRl
ZFdvcmxkKSk7CisgICAgfQorCisgICAgdmlydHVhbCB+SlNXb3JrZXJDb250ZXh0RXJyb3JIYW5k
bGVyKCk7CisKK3ByaXZhdGU6CisgICAgSlNXb3JrZXJDb250ZXh0RXJyb3JIYW5kbGVyKEpTQzo6
SlNPYmplY3QqIGZ1bmN0aW9uLCBKU0M6OkpTT2JqZWN0KiB3cmFwcGVyLCBib29sIGlzQXR0cmli
dXRlLCBET01XcmFwcGVyV29ybGQqIGlzb2xhdGVkV29ybGQpOworICAgIHZpcnR1YWwgdm9pZCBo
YW5kbGVFdmVudChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgRXZlbnQqKTsKK307CisKKy8vIENy
ZWF0ZXMgYSBKUyBFdmVudExpc3RlbmVyIGZvciAib25lcnJvciIgZXZlbnQgaGFuZGxlciBpbiB3
b3JrZXIgY29udGV4dC4gSXQgaGFzIGN1c3RvbSBpbXBsZW1lbnRhdGlvbiBiZWNhdXNlCisvLyB1
bmxpa2Ugb3RoZXIgZXZlbnQgbGlzdGVuZXJzIGl0IGFjY2VwdHMgdGhyZWUgcGFyYW1ldGVycy4K
K2lubGluZSBQYXNzUmVmUHRyPEpTV29ya2VyQ29udGV4dEVycm9ySGFuZGxlcj4gY3JlYXRlSlNX
b3JrZXJDb250ZXh0RXJyb3JIYW5kbGVyKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0M6OkpTVmFs
dWUgbGlzdGVuZXIsIEpTQzo6SlNPYmplY3QqIHdyYXBwZXIpCit7CisgICAgaWYgKCFsaXN0ZW5l
ci5pc09iamVjdCgpKQorICAgICAgICByZXR1cm4gMDsKKworICAgIHJldHVybiBKU1dvcmtlckNv
bnRleHRFcnJvckhhbmRsZXI6OmNyZWF0ZShhc09iamVjdChsaXN0ZW5lciksIHdyYXBwZXIsIHRy
dWUsIGN1cnJlbnRXb3JsZChleGVjKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwor
I2VuZGlmIC8vIEpTV29ya2VyQ29udGV4dEVycm9ySGFuZGxlcl9oCmRpZmYgLS1naXQgYS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtIGIvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQppbmRleCAxYWVkMTFkLi44M2VhZWQ0IDEwMDY0
NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCisrKyBi
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KQEAgLTE0ODQsNyAr
MTQ4NCwxMiBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICRpbXBsSW5jbHVkZXN7IkpTRXZlbnRMaXN0ZW5lci5oIn0gPSAxOwogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIFVOVVNFRF9QQVJB
TShleGVjKTtcbiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAiICAgICRpbXBsQ2xhc3NOYW1lKiBpbXAgPSBzdGF0aWNfY2FzdDwkaW1wbENsYXNzTmFt
ZSo+KHN0YXRpY19jYXN0PCRjbGFzc05hbWUqPih0aGlzT2JqZWN0KS0+aW1wbCgpKTtcbiIpOwot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGltcC0+
c2V0JGltcGxTZXR0ZXJGdW5jdGlvbk5hbWUoY3JlYXRlSlNBdHRyaWJ1dGVFdmVudExpc3RlbmVy
KGV4ZWMsIHZhbHVlLCB0aGlzT2JqZWN0KSk7XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpZiAoJGludGVyZmFjZU5hbWUgZXEgIldvcmtlckNvbnRleHQiIGFuZCAkbmFtZSBlcSAi
b25lcnJvciIpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGltcGxJbmNsdWRl
c3siSlNXb3JrZXJDb250ZXh0RXJyb3JIYW5kbGVyLmgifSA9IDE7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGltcC0+c2V0JGltcGxTZXR0
ZXJGdW5jdGlvbk5hbWUoY3JlYXRlSlNXb3JrZXJDb250ZXh0RXJyb3JIYW5kbGVyKGV4ZWMsIHZh
bHVlLCB0aGlzT2JqZWN0KSk7XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
IiAgICBpbXAtPnNldCRpbXBsU2V0dGVyRnVuY3Rpb25OYW1lKGNyZWF0ZUpTQXR0cmlidXRlRXZl
bnRMaXN0ZW5lcihleGVjLCB2YWx1ZSwgdGhpc09iamVjdCkpO1xuIik7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNpZiAoJGF0dHJp
YnV0ZS0+c2lnbmF0dXJlLT50eXBlID1+IC9Db25zdHJ1Y3RvciQvKSB7CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbXkgJGNvbnN0cnVjdG9yVHlwZSA9ICRhdHRyaWJ1dGUtPnNpZ25hdHVy
ZS0+dHlwZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkY29uc3RydWN0b3JUeXBlID1+
IHMvQ29uc3RydWN0b3IkLy87CmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
Q29kZUdlbmVyYXRvclY4LnBtIGIvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0
b3JWOC5wbQppbmRleCA2ODAwN2UyLi5iYjMwMjk0IDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCisrKyBiL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy9Db2RlR2VuZXJhdG9yVjgucG0KQEAgLTg5MSw3ICs4OTEsMTMgQEAgRU5ECiAgICAgICAg
IH0gZWxzaWYgKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+dHlwZSBlcSAiRXZlbnRMaXN0ZW5lciIp
IHsKICAgICAgICAgICAgICRpbXBsSW5jbHVkZXN7IlY4QWJzdHJhY3RFdmVudExpc3RlbmVyLmgi
fSA9IDE7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCAiICAgIHRyYW5zZmVy
SGlkZGVuRGVwZW5kZW5jeShpbmZvLkhvbGRlcigpLCBpbXAtPiRhdHRyTmFtZSgpLCB2YWx1ZSwg
Vjgke2ludGVyZmFjZU5hbWV9OjpldmVudExpc3RlbmVyQ2FjaGVJbmRleCk7XG4iKTsKLSAgICAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsICIgICAgaW1wLT5zZXQkaW1wbFNldHRlckZ1
bmN0aW9uTmFtZShWOERPTVdyYXBwZXI6OmdldEV2ZW50TGlzdGVuZXIodmFsdWUsIHRydWUsIExp
c3RlbmVyRmluZE9yQ3JlYXRlKSIpOworICAgICAgICAgICAgaWYgKCRpbnRlcmZhY2VOYW1lIGVx
ICJXb3JrZXJDb250ZXh0IiBhbmQgJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5uYW1lIGVxICJvbmVy
cm9yIikgeworICAgICAgICAgICAgICAgICRpbXBsSW5jbHVkZXN7IlY4RXZlbnRMaXN0ZW5lckxp
c3QuaCJ9ID0gMTsKKyAgICAgICAgICAgICAgICAkaW1wbEluY2x1ZGVzeyJWOFdvcmtlckNvbnRl
eHRFcnJvckhhbmRsZXIuaCJ9ID0gMTsKKyAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dERlY2xzLCAiICAgIGltcC0+c2V0JGltcGxTZXR0ZXJGdW5jdGlvbk5hbWUoVjhFdmVudExpc3Rl
bmVyTGlzdDo6ZmluZE9yQ3JlYXRlV3JhcHBlcjxWOFdvcmtlckNvbnRleHRFcnJvckhhbmRsZXI+
KHZhbHVlLCB0cnVlKSIpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBw
dXNoKEBpbXBsQ29udGVudERlY2xzLCAiICAgIGltcC0+c2V0JGltcGxTZXR0ZXJGdW5jdGlvbk5h
bWUoVjhET01XcmFwcGVyOjpnZXRFdmVudExpc3RlbmVyKHZhbHVlLCB0cnVlLCBMaXN0ZW5lckZp
bmRPckNyZWF0ZSkiKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIHsKICAgICAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsICIgICAgaW1wLT5zZXQkaW1wbFNldHRlckZ1bmN0
aW9uTmFtZSgkcmVzdWx0Iik7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGlu
Z3MvdjgvVjhXb3JrZXJDb250ZXh0RXJyb3JIYW5kbGVyLmNwcCBiL1dlYkNvcmUvYmluZGluZ3Mv
djgvVjhXb3JrZXJDb250ZXh0RXJyb3JIYW5kbGVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi41YTc1YTQwCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9iaW5kaW5n
cy92OC9WOFdvcmtlckNvbnRleHRFcnJvckhhbmRsZXIuY3BwCkBAIC0wLDAgKzEsNjYgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICog
ZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBu
b3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S
UworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVS
IE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAq
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoV09SS0VSUykKKworI2luY2x1ZGUgIlY4V29y
a2VyQ29udGV4dEVycm9ySGFuZGxlci5oIgorCisjaW5jbHVkZSAiRXJyb3JFdmVudC5oIgorI2lu
Y2x1ZGUgIlY4QmluZGluZy5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1Y4V29ya2VyQ29u
dGV4dEVycm9ySGFuZGxlcjo6VjhXb3JrZXJDb250ZXh0RXJyb3JIYW5kbGVyKHY4OjpMb2NhbDx2
ODo6T2JqZWN0PiBsaXN0ZW5lciwgYm9vbCBpc0lubGluZSwgY29uc3QgV29ybGRDb250ZXh0SGFu
ZGxlJiB3b3JsZENvbnRleHQpCisgICAgOiBWOFdvcmtlckNvbnRleHRFdmVudExpc3RlbmVyKGxp
c3RlbmVyLCBpc0lubGluZSwgd29ybGRDb250ZXh0KQoreworfQorCit2ODo6TG9jYWw8djg6OlZh
bHVlPiBWOFdvcmtlckNvbnRleHRFcnJvckhhbmRsZXI6OmNhbGxMaXN0ZW5lckZ1bmN0aW9uKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBqc0V2
ZW50LCBFdmVudCogZXZlbnQpCit7CisgICAgQVNTRVJUKGV2ZW50LT5pc0Vycm9yRXZlbnQoKSk7
CisgICAgdjg6OkxvY2FsPHY4OjpPYmplY3Q+IGxpc3RlbmVyID0gZ2V0TGlzdGVuZXJPYmplY3Qo
Y29udGV4dCk7CisgICAgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gcmV0dXJuVmFsdWU7CisgICAgaWYg
KCFsaXN0ZW5lci5Jc0VtcHR5KCkgJiYgbGlzdGVuZXItPklzRnVuY3Rpb24oKSkgeworICAgICAg
ICBFcnJvckV2ZW50KiBlcnJvckV2ZW50ID0gc3RhdGljX2Nhc3Q8RXJyb3JFdmVudCo+KGV2ZW50
KTsKKyAgICAgICAgdjg6OkxvY2FsPHY4OjpGdW5jdGlvbj4gY2FsbEZ1bmN0aW9uID0gdjg6Okxv
Y2FsPHY4OjpGdW5jdGlvbj46OkNhc3QobGlzdGVuZXIpOworICAgICAgICB2ODo6TG9jYWw8djg6
Ok9iamVjdD4gdGhpc1ZhbHVlID0gdjg6OkNvbnRleHQ6OkdldEN1cnJlbnQoKS0+R2xvYmFsKCk7
CisgICAgICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBwYXJhbWV0ZXJzWzNdID0geyB2OFN0cmlu
ZyhlcnJvckV2ZW50LT5tZXNzYWdlKCkpLCB2OFN0cmluZyhlcnJvckV2ZW50LT5maWxlbmFtZSgp
KSwgdjg6OkludGVnZXI6Ok5ldyhlcnJvckV2ZW50LT5saW5lbm8oKSkgfTsKKyAgICAgICAgcmV0
dXJuVmFsdWUgPSBjYWxsRnVuY3Rpb24tPkNhbGwodGhpc1ZhbHVlLCAzLCBwYXJhbWV0ZXJzKTsK
KyAgICAgICAgaWYgKCFyZXR1cm5WYWx1ZS5Jc0VtcHR5KCkgJiYgcmV0dXJuVmFsdWUtPklzQm9v
bGVhbigpICYmICFyZXR1cm5WYWx1ZS0+Qm9vbGVhblZhbHVlKCkpCisgICAgICAgICAgICBldmVu
dC0+cHJldmVudERlZmF1bHQoKTsKKyAgICB9CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQor
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBXT1JLRVJTCmRpZmYgLS1naXQg
YS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4V29ya2VyQ29udGV4dEVycm9ySGFuZGxlci5oIGIvV2Vi
Q29yZS9iaW5kaW5ncy92OC9WOFdvcmtlckNvbnRleHRFcnJvckhhbmRsZXIuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZDFlMGU2Ci0tLSAvZGV2L251bGwKKysrIGIvV2Vi
Q29yZS9iaW5kaW5ncy92OC9WOFdvcmtlckNvbnRleHRFcnJvckhhbmRsZXIuaApAQCAtMCwwICsx
LDU5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6Cisg
KgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAq
IGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29v
Z2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNl
ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNv
ZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBD
T05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hU
CisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2lmbmRlZiBWOFdvcmtlckNvbnRleHRFcnJvckhhbmRsZXJfaAorI2RlZmluZSBWOFdv
cmtlckNvbnRleHRFcnJvckhhbmRsZXJfaAorCisjaWYgRU5BQkxFKFdPUktFUlMpCisKKyNpbmNs
dWRlICJWOFdvcmtlckNvbnRleHRFdmVudExpc3RlbmVyLmgiCisjaW5jbHVkZSA8djguaD4KKyNp
bmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNz
IFY4V29ya2VyQ29udGV4dEVycm9ySGFuZGxlciA6IHB1YmxpYyBWOFdvcmtlckNvbnRleHRFdmVu
dExpc3RlbmVyIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxWOFdvcmtlckNvbnRl
eHRFcnJvckhhbmRsZXI+IGNyZWF0ZSh2ODo6TG9jYWw8djg6Ok9iamVjdD4gbGlzdGVuZXIsIGJv
b2wgaXNJbmxpbmUsIGNvbnN0IFdvcmxkQ29udGV4dEhhbmRsZSYgd29ybGRDb250ZXh0KQorICAg
IHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBWOFdvcmtlckNvbnRleHRFcnJvckhhbmRs
ZXIobGlzdGVuZXIsIGlzSW5saW5lLCB3b3JsZENvbnRleHQpKTsKKyAgICB9CisKK3ByaXZhdGU6
CisgICAgVjhXb3JrZXJDb250ZXh0RXJyb3JIYW5kbGVyKHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBs
aXN0ZW5lciwgYm9vbCBpc0lubGluZSwgY29uc3QgV29ybGRDb250ZXh0SGFuZGxlJiB3b3JsZENv
bnRleHQpOworCisgICAgdmlydHVhbCB2ODo6TG9jYWw8djg6OlZhbHVlPiBjYWxsTGlzdGVuZXJG
dW5jdGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0Kiwgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGpz
RXZlbnQsIEV2ZW50Kik7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAv
LyBXT1JLRVJTCisKKyNlbmRpZiAvLyBWOFdvcmtlckNvbnRleHRFcnJvckhhbmRsZXJfaApkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFdvcmtlckNvbnRleHRFdmVudExpc3RlbmVy
LmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhXb3JrZXJDb250ZXh0RXZlbnRMaXN0ZW5lci5j
cHAKaW5kZXggZmE4OWFlNi4uMzBiOTg2NSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy92
OC9WOFdvcmtlckNvbnRleHRFdmVudExpc3RlbmVyLmNwcAorKysgYi9XZWJDb3JlL2JpbmRpbmdz
L3Y4L1Y4V29ya2VyQ29udGV4dEV2ZW50TGlzdGVuZXIuY3BwCkBAIC04Miw1NiArODIsNiBAQCB2
b2lkIFY4V29ya2VyQ29udGV4dEV2ZW50TGlzdGVuZXI6OmhhbmRsZUV2ZW50KFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIGNvbnRleHQsCiAgICAgaW52b2tlRXZlbnRIYW5kbGVyKGNvbnRleHQsIGV2
ZW50LCBqc0V2ZW50KTsKIH0KIAotYm9vbCBWOFdvcmtlckNvbnRleHRFdmVudExpc3RlbmVyOjpy
ZXBvcnRFcnJvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcm
IG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgdXJsLCBpbnQgbGluZU51bWJlcikKLXsKLSAgICBpZiAo
IWNvbnRleHQpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIC8vIFRoZSBjYWxsYmFjayBm
dW5jdGlvbiBjYW4gY2xlYXIgdGhlIGV2ZW50IGxpc3RlbmVyIGFuZCBkZXN0cm95ICd0aGlzJyBv
YmplY3QuIEtlZXAgYSBsb2NhbCByZWZlcmVuY2UgdG8gaXQuCi0gICAgUmVmUHRyPFY4QWJzdHJh
Y3RFdmVudExpc3RlbmVyPiBwcm90ZWN0KHRoaXMpOwotCi0gICAgdjg6OkhhbmRsZVNjb3BlIGhh
bmRsZVNjb3BlOwotCi0gICAgV29ya2VyQ29udGV4dEV4ZWN1dGlvblByb3h5KiBwcm94eSA9IHdv
cmtlclByb3h5KGNvbnRleHQpOwotICAgIGlmICghcHJveHkpCi0gICAgICAgIHJldHVybiBmYWxz
ZTsKLQotICAgIHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+IHY4Q29udGV4dCA9IHByb3h5LT5jb250
ZXh0KCk7Ci0gICAgaWYgKHY4Q29udGV4dC5Jc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBmYWxz
ZTsKLQotICAgIC8vIEVudGVyIHRoZSBWOCBjb250ZXh0IGluIHdoaWNoIHRvIHBlcmZvcm0gdGhl
IGV2ZW50IGhhbmRsaW5nLgotICAgIHY4OjpDb250ZXh0OjpTY29wZSBzY29wZSh2OENvbnRleHQp
OwotCi0gICAgdjg6OkxvY2FsPHY4OjpPYmplY3Q+IGxpc3RlbmVyID0gZ2V0TGlzdGVuZXJPYmpl
Y3QoY29udGV4dCk7Ci0gICAgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gcmV0dXJuVmFsdWU7Ci0gICAg
ewotICAgICAgICAvLyBDYXRjaCBleGNlcHRpb25zIHRocm93biBpbiBjYWxsaW5nIHRoZSBmdW5j
dGlvbiBzbyB0aGV5IGRvIG5vdCBwcm9wYWdhdGUgdG8gamF2YXNjcmlwdCBjb2RlIHRoYXQgY2F1
c2VkIHRoZSBldmVudCB0byBmaXJlLgotICAgICAgICB2ODo6VHJ5Q2F0Y2ggdHJ5Q2F0Y2g7Ci0g
ICAgICAgIHRyeUNhdGNoLlNldFZlcmJvc2UodHJ1ZSk7Ci0KLSAgICAgICAgLy8gQ2FsbCB0aGUg
ZnVuY3Rpb24uCi0gICAgICAgIGlmICghbGlzdGVuZXIuSXNFbXB0eSgpICYmIGxpc3RlbmVyLT5J
c0Z1bmN0aW9uKCkpIHsKLSAgICAgICAgICAgIHY4OjpMb2NhbDx2ODo6RnVuY3Rpb24+IGNhbGxG
dW5jdGlvbiA9IHY4OjpMb2NhbDx2ODo6RnVuY3Rpb24+OjpDYXN0KGxpc3RlbmVyKTsKLSAgICAg
ICAgICAgIHY4OjpMb2NhbDx2ODo6T2JqZWN0PiB0aGlzVmFsdWUgPSB2ODo6Q29udGV4dDo6R2V0
Q3VycmVudCgpLT5HbG9iYWwoKTsKLQotICAgICAgICAgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+
IHBhcmFtZXRlcnNbM10gPSB7IHY4U3RyaW5nKG1lc3NhZ2UpLCB2OFN0cmluZyh1cmwpLCB2ODo6
SW50ZWdlcjo6TmV3KGxpbmVOdW1iZXIpIH07Ci0gICAgICAgICAgICByZXR1cm5WYWx1ZSA9IGNh
bGxGdW5jdGlvbi0+Q2FsbCh0aGlzVmFsdWUsIDMsIHBhcmFtZXRlcnMpOwotICAgICAgICB9Ci0K
LSAgICAgICAgLy8gSWYgYW4gZXJyb3Igb2NjdXJzIHdoaWxlIGhhbmRsaW5nIHRoZSBzY3JpcHQg
ZXJyb3IsIGl0IHNob3VsZCBiZSBidWJibGVkIHVwLgotICAgICAgICBpZiAodHJ5Q2F0Y2guSGFz
Q2F1Z2h0KCkpIHsKLSAgICAgICAgICAgIHRyeUNhdGNoLlJlc2V0KCk7Ci0gICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICAvLyBJZiB0aGUgZnVuY3Rpb24g
cmV0dXJucyBmYWxzZSwgdGhlbiB0aGUgZXJyb3IgaXMgaGFuZGxlZC4gT3RoZXJ3aXNlLCB0aGUg
ZXJyb3IgaXMgbm90IGhhbmRsZWQuCi0gICAgYm9vbCBlcnJvckhhbmRsZWQgPSByZXR1cm5WYWx1
ZS0+SXNCb29sZWFuKCkgJiYgIXJldHVyblZhbHVlLT5Cb29sZWFuVmFsdWUoKTsKLQotICAgIHJl
dHVybiBlcnJvckhhbmRsZWQ7Ci19Ci0KIHY4OjpMb2NhbDx2ODo6VmFsdWU+IFY4V29ya2VyQ29u
dGV4dEV2ZW50TGlzdGVuZXI6OmNhbGxMaXN0ZW5lckZ1bmN0aW9uKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIGNvbnRleHQsIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBqc0V2ZW50LCBFdmVudCogZXZl
bnQpCiB7CiAgICAgdjg6OkxvY2FsPHY4OjpGdW5jdGlvbj4gaGFuZGxlckZ1bmN0aW9uID0gZ2V0
TGlzdGVuZXJGdW5jdGlvbihjb250ZXh0KTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3Mv
djgvVjhXb3JrZXJDb250ZXh0RXZlbnRMaXN0ZW5lci5oIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9W
OFdvcmtlckNvbnRleHRFdmVudExpc3RlbmVyLmgKaW5kZXggNDQ4NzQ5Ny4uMWQwYmZjOCAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFdvcmtlckNvbnRleHRFdmVudExpc3RlbmVy
LmgKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFdvcmtlckNvbnRleHRFdmVudExpc3RlbmVy
LmgKQEAgLTUwLDExICs1MCwxMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIH0KIAog
ICAgICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlRXZlbnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCos
IEV2ZW50Kik7Ci0gICAgICAgIHZpcnR1YWwgYm9vbCByZXBvcnRFcnJvcihTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIHVybCwgaW50
IGxpbmVOdW1iZXIpOwogCi0gICAgcHJpdmF0ZToKKyAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIFY4
V29ya2VyQ29udGV4dEV2ZW50TGlzdGVuZXIodjg6OkxvY2FsPHY4OjpPYmplY3Q+IGxpc3RlbmVy
LCBib29sIGlzSW5saW5lLCBjb25zdCBXb3JsZENvbnRleHRIYW5kbGUmIHdvcmxkQ29udGV4dCk7
CiAKKyAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IGNh
bGxMaXN0ZW5lckZ1bmN0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCB2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4ganNFdmVudCwgRXZlbnQqKTsKICAgICAgICAgdjg6OkxvY2FsPHY4OjpPYmplY3Q+
IGdldFJlY2VpdmVyT2JqZWN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBFdmVudCopOwogICAg
IH07CmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9FdmVudExpc3RlbmVyLmggYi9XZWJDb3JlL2Rv
bS9FdmVudExpc3RlbmVyLmgKaW5kZXggOGEzNTkyMi4uZDdjOTUwZiAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9kb20vRXZlbnRMaXN0ZW5lci5oCisrKyBiL1dlYkNvcmUvZG9tL0V2ZW50TGlzdGVuZXIu
aApAQCAtNDYsOCArNDYsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwg
fkV2ZW50TGlzdGVuZXIoKSB7IH0KICAgICAgICAgdmlydHVhbCBib29sIG9wZXJhdG9yPT0oY29u
c3QgRXZlbnRMaXN0ZW5lciYpID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lkIGhhbmRsZUV2ZW50
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBFdmVudCopID0gMDsKLSAgICAgICAgLy8gUmV0dXJu
IHRydWUgdG8gaW5kaWNhdGUgdGhhdCB0aGUgZXJyb3IgaXMgaGFuZGxlZC4KLSAgICAgICAgdmly
dHVhbCBib29sIHJlcG9ydEVycm9yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJp
bmcmIC8qbWVzc2FnZSovLCBjb25zdCBTdHJpbmcmIC8qdXJsKi8sIGludCAvKmxpbmVOdW1iZXIq
LykgeyByZXR1cm4gZmFsc2U7IH0KICAgICAgICAgdmlydHVhbCBib29sIHdhc0NyZWF0ZWRGcm9t
TWFya3VwKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIAogI2lmIFVTRShKU0MpCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29udGV4dC5jcHAgYi9XZWJDb3JlL3dvcmtlcnMv
V29ya2VyQ29udGV4dC5jcHAKaW5kZXggN2I0ZjI5My4uMWE4NjEyNyAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS93b3JrZXJzL1dvcmtlckNvbnRleHQuY3BwCisrKyBiL1dlYkNvcmUvd29ya2Vycy9Xb3Jr
ZXJDb250ZXh0LmNwcApAQCAtMzIsOSArMzIsMTAgQEAKICNpbmNsdWRlICJXb3JrZXJDb250ZXh0
LmgiCiAKICNpbmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIKLSNpbmNsdWRlICJEYXRhYmFzZS5o
IgogI2luY2x1ZGUgIkRPTVRpbWVyLmgiCiAjaW5jbHVkZSAiRE9NV2luZG93LmgiCisjaW5jbHVk
ZSAiRGF0YWJhc2UuaCIKKyNpbmNsdWRlICJFcnJvckV2ZW50LmgiCiAjaW5jbHVkZSAiRXZlbnQu
aCIKICNpbmNsdWRlICJFdmVudEV4Y2VwdGlvbi5oIgogI2luY2x1ZGUgIk1lc3NhZ2VQb3J0Lmgi
CkBAIC02NCw2ICs2NSw3IEBAIFdvcmtlckNvbnRleHQ6OldvcmtlckNvbnRleHQoY29uc3QgS1VS
TCYgdXJsLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgV29ya2VyVGhyCiAgICAgLCBtX3Njcmlw
dChuZXcgV29ya2VyU2NyaXB0Q29udHJvbGxlcih0aGlzKSkKICAgICAsIG1fdGhyZWFkKHRocmVh
ZCkKICAgICAsIG1fY2xvc2luZyhmYWxzZSkKKyAgICAsIG1fcmVwb3J0aW5nRXhjZXB0aW9uKGZh
bHNlKQogewogICAgIHNldFNlY3VyaXR5T3JpZ2luKFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUodXJs
KSk7CiB9CkBAIC0yMzQsOSArMjM2LDE1IEBAIHZvaWQgV29ya2VyQ29udGV4dDo6aW1wb3J0U2Ny
aXB0cyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgdXJscywgY29uc3QgU3RyaW5nJiBjYWxsCiB2b2lk
IFdvcmtlckNvbnRleHQ6OnJlcG9ydEV4Y2VwdGlvbihjb25zdCBTdHJpbmcmIGVycm9yTWVzc2Fn
ZSwgaW50IGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKQogewogICAgIGJvb2wg
ZXJyb3JIYW5kbGVkID0gZmFsc2U7Ci0gICAgaWYgKG9uZXJyb3IoKSkKLSAgICAgICAgZXJyb3JI
YW5kbGVkID0gb25lcnJvcigpLT5yZXBvcnRFcnJvcih0aGlzLCBlcnJvck1lc3NhZ2UsIHNvdXJj
ZVVSTCwgbGluZU51bWJlcik7Ci0KKyAgICBpZiAoIW1fcmVwb3J0aW5nRXhjZXB0aW9uKSB7Cisg
ICAgICAgIGlmIChvbmVycm9yKCkpIHsKKyAgICAgICAgICAgIG1fcmVwb3J0aW5nRXhjZXB0aW9u
ID0gdHJ1ZTsKKyAgICAgICAgICAgIFJlZlB0cjxFcnJvckV2ZW50PiBlcnJvckV2ZW50KEVycm9y
RXZlbnQ6OmNyZWF0ZShlcnJvck1lc3NhZ2UsIHNvdXJjZVVSTCwgbGluZU51bWJlcikpOworICAg
ICAgICAgICAgb25lcnJvcigpLT5oYW5kbGVFdmVudCh0aGlzLCBlcnJvckV2ZW50LmdldCgpKTsK
KyAgICAgICAgICAgIGVycm9ySGFuZGxlZCA9IGVycm9yRXZlbnQtPmRlZmF1bHRQcmV2ZW50ZWQo
KTsKKyAgICAgICAgICAgIG1fcmVwb3J0aW5nRXhjZXB0aW9uID0gZmFsc2U7CisgICAgICAgIH0K
KyAgICB9CiAgICAgaWYgKCFlcnJvckhhbmRsZWQpCiAgICAgICAgIHRocmVhZCgpLT53b3JrZXJS
ZXBvcnRpbmdQcm94eSgpLnBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdChlcnJvck1lc3NhZ2Us
IGxpbmVOdW1iZXIsIHNvdXJjZVVSTCk7CiB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL3dvcmtlcnMv
V29ya2VyQ29udGV4dC5oIGIvV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRleHQuaAppbmRleCBm
YjRhMjZkLi4xZTY2YTY1IDEwMDY0NAotLS0gYS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29udGV4
dC5oCisrKyBiL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0LmgKQEAgLTE1NCw2ICsxNTQs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIG11dGFibGUgUmVmUHRyPE5vdGlmaWNh
dGlvbkNlbnRlcj4gbV9ub3RpZmljYXRpb25zOwogI2VuZGlmCiAgICAgICAgIGJvb2wgbV9jbG9z
aW5nOworICAgICAgICBib29sIG1fcmVwb3J0aW5nRXhjZXB0aW9uOwogICAgICAgICBFdmVudFRh
cmdldERhdGEgbV9ldmVudFRhcmdldERhdGE7CiAgICAgfTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>52529</attachid>
            <date>2010-04-05 06:08:23 -0700</date>
            <delta_ts>2010-04-06 01:40:48 -0700</delta_ts>
            <desc>patch</desc>
            <filename>workerr-onerror.patch</filename>
            <type>text/plain</type>
            <size>39811</size>
            <attacher name="Yury Semikhatsky">yurys</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBlYjMyYTk4Li4zNTc3ZDI0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTAtMDMt
MzAgIFl1cnkgU2VtaWtoYXRza3kgIDx5dXJ5c0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdCB0aGF0IGV4Y2VwdGlvbiB3
aGljaCBvY2N1cnMgaW4gb25lcnJvciBoYW5kbGVyIGlzIHJlcG9ydGVkIHRvIHRoZSBXb3JrZXIg
b2JqZWN0LgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0zNjM3NQorCisgICAgICAgICogZmFzdC93b3JrZXJzL3dvcmtlci1zY3JpcHQtZXJyb3ItZXhw
ZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3Qvd29ya2Vycy93b3JrZXItc2NyaXB0LWVycm9yLmh0
bWw6CisKIDIwMTAtMDQtMDMgIEFudG9uaW8gR29tZXMgIDx0b25pa2l0b29Ad2Via2l0Lm9yZz4K
IAogICAgICAgICBVbnJldmlld2VkIGV4cGVjdGVkIHJlc3VsdHMgZml4LgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZmFzdC93b3JrZXJzL3dvcmtlci1zY3JpcHQtZXJyb3ItZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvZmFzdC93b3JrZXJzL3dvcmtlci1zY3JpcHQtZXJyb3ItZXhwZWN0ZWQu
dHh0CmluZGV4IGQ1MzVlN2QuLjEwYWIwNDkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3Qv
d29ya2Vycy93b3JrZXItc2NyaXB0LWVycm9yLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0
cy9mYXN0L3dvcmtlcnMvd29ya2VyLXNjcmlwdC1lcnJvci1leHBlY3RlZC50eHQKQEAgLTQsNiAr
NCw3IEBAIFRlc3QgV29ya2VyIHNjcmlwdCBlcnJvciBoYW5kbGluZyBmdW5jdGlvbmFsaXR5LiBT
aG91bGQgcHJpbnQgYSBzZXJpZXMgb2YgUEFTUyBtCiBQQVNTOiBvbmVycm9yIGludm9rZWQgZm9y
IGEgc2NyaXB0IHRoYXQgaGFzIGludmFsaWQgc3ludGF4LgogUEFTUzogb25lcnJvciBpbnZva2Vk
IGZvciBhIHNjcmlwdCB0aGF0IGhhcyBzY3JpcHQgZXJyb3IgJ1JlZmVyZW5jZUVycm9yOiBDYW4n
dCBmaW5kIHZhcmlhYmxlOiBmb28nIGF0IGxpbmUgMS4KIFBBU1M6IGV2ZW50IGxpc3RlbmVyIGlu
dm9rZWQgZm9yIGEgc2NyaXB0IHRoYXQgaGFzIHNjcmlwdCBlcnJvciAnUmVmZXJlbmNlRXJyb3I6
IENhbid0IGZpbmQgdmFyaWFibGU6IGZvbycgYXQgbGluZSAxLgorUEFTUzogb25lcnJvciBpbnZv
a2VkIGZvciBhIHNjcmlwdCB0aGF0IGhhcyBzY3JpcHQgZXJyb3IgJ1JlZmVyZW5jZUVycm9yOiBD
YW4ndCBmaW5kIHZhcmlhYmxlOiBiYXInIGF0IGxpbmUgMy4KIFBBU1M6IG9uZXJyb3IgaW52b2tl
ZCBmb3IgYSBzY3JpcHQgdGhhdCBoYXMgc2NyaXB0IGVycm9yICdSZWZlcmVuY2VFcnJvcjogQ2Fu
J3QgZmluZCB2YXJpYWJsZTogZm9vJyBhdCBsaW5lIDcuCiBQQVNTOiBvbmVycm9yIGludm9rZWQg
Zm9yIGEgc2NyaXB0IHRoYXQgaGFzIHNjcmlwdCBlcnJvciAnUmVmZXJlbmNlRXJyb3I6IENhbid0
IGZpbmQgdmFyaWFibGU6IGZvbycgYXQgbGluZSA3LgogUEFTUzogb25lcnJvciBpbnZva2VkIGZv
ciBhIHNjcmlwdCB0aGF0IGhhcyBzY3JpcHQgZXJyb3IgJ1JlZmVyZW5jZUVycm9yOiBDYW4ndCBm
aW5kIHZhcmlhYmxlOiBmb28nIGF0IGxpbmUgNy4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zh
c3Qvd29ya2Vycy93b3JrZXItc2NyaXB0LWVycm9yLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3dv
cmtlcnMvd29ya2VyLXNjcmlwdC1lcnJvci5odG1sCmluZGV4IGFkOTZmNzYuLjJiYTJlYWIgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy93b3JrZXItc2NyaXB0LWVycm9yLmh0
bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC93b3JrZXJzL3dvcmtlci1zY3JpcHQtZXJyb3IuaHRt
bApAQCAtODEsOSArODEsMTMgQEAgZnVuY3Rpb24gdGVzdEVycm9ySW5IYW5kbGluZ1NjcmlwdEVy
cm9yKCkKIHsKICAgICB0cnkgewogICAgICAgICB2YXIgd29ya2VyID0gbmV3IFdvcmtlcigicmVz
b3VyY2VzL3dvcmtlci1lcnJvci1pbi1oYW5kbGluZy1zY3JpcHQtZXJyb3IuanMiKTsKKyAgICAg
ICAgdmFyIGVycm9yQ291bnQgPSAwOwogICAgICAgICB3b3JrZXIub25lcnJvciA9IGZ1bmN0aW9u
KGV2dCkgewogICAgICAgICAgICAgbG9nKCJQQVNTOiBvbmVycm9yIGludm9rZWQgZm9yIGEgc2Ny
aXB0IHRoYXQgaGFzIHNjcmlwdCBlcnJvciAnIiArIGV2dC5tZXNzYWdlICsgIicgYXQgbGluZSAi
ICsgZXZ0LmxpbmVubyArICIuIik7Ci0gICAgICAgICAgICBydW5OZXh0VGVzdCgpOworICAgICAg
ICAgICAgKytlcnJvckNvdW50OworICAgICAgICAgICAgLy8gU2Vjb25kIGVycm9yIGhhcHBlbnMg
aW4gdGhlIG9uZXJyb3IgaGFuZGxlci4gUnVuIG5leHQgdGVzdCBvbmx5IHdoZW4gaXQncyByZXBv
cnRlZC4KKyAgICAgICAgICAgIGlmIChlcnJvckNvdW50ID09IDIpCisgICAgICAgICAgICAgICAg
cnVuTmV4dFRlc3QoKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogICAg
IH0gY2F0Y2ggKGV4KSB7CmRpZmYgLS1naXQgYS9XZWJDb3JlL0FuZHJvaWQuanNjYmluZGluZ3Mu
bWsgYi9XZWJDb3JlL0FuZHJvaWQuanNjYmluZGluZ3MubWsKaW5kZXggZTU2NDEwYS4uM2Q5MTU0
NyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9BbmRyb2lkLmpzY2JpbmRpbmdzLm1rCisrKyBiL1dlYkNv
cmUvQW5kcm9pZC5qc2NiaW5kaW5ncy5tawpAQCAtMTU3LDYgKzE1Nyw3IEBAIExPQ0FMX1NSQ19G
SUxFUyArPSBcCiAJYmluZGluZ3MvanMvSlNXb3JrZXJDb25zdHJ1Y3Rvci5jcHAgXAogCWJpbmRp
bmdzL2pzL0pTV29ya2VyQ29udGV4dEJhc2UuY3BwIFwKIAliaW5kaW5ncy9qcy9KU1dvcmtlckNv
bnRleHRDdXN0b20uY3BwIFwKKwliaW5kaW5ncy9qcy9KU1dvcmtlckNvbnRleHRFcnJvckhhbmRs
ZXIuY3BwIFwKIAliaW5kaW5ncy9qcy9KU1dvcmtlckN1c3RvbS5jcHAgXAogCWJpbmRpbmdzL2pz
L0pTWE1MSHR0cFJlcXVlc3RDb25zdHJ1Y3Rvci5jcHAgXAogCWJpbmRpbmdzL2pzL0pTWE1MSHR0
cFJlcXVlc3RDdXN0b20uY3BwIFwKZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKaW5kZXggMzYwMzg2MC4uZmM1Mjc0NyAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MCBAQAorMjAx
MC0wMy0zMCAgWXVyeSBTZW1pa2hhdHNreSAgPHl1cnlzQGNocm9taXVtLm9yZz4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZWZhY3RvcmVkIGVycm9y
IHJlcG9ydGluZyBtZWNoYW5pem0gb24gV29ya2VyIEdsb2JhbCBPYmplY3RzLiBVbmxpa2Ugb3Ro
ZXIgZXZlbnQgbGlzdGVuZXJzIHdoaWNoIGFjY2VwdCBzaW5nbGUgYXJndW1lbnQoRXZlbnQpIG9u
ZXJyb3IgaGFuZGxlciBvbiB3b3JrZXIgZ2xvYmFsIG9iamVjdCBzaG91bGQgYmUgYSBmdW5jdGlv
biBhY2NlcHRpbmcgdGhyZWUgYXJndW1lbnRzLiBUaGlzIGVycm9yIHJlcG9ydGluZyB3YXMgaW1w
bGVtZW50ZWRhcyBFdmVudExpc3RlbmVyOjpyZXBvcnRFcnJvciBtZXRob2Qgd2hpY2ggaGFkIGN1
c3RvbSBpbXBsZW1lbnRhdGlvbnMgZm9yIHY4IGFuZCBKU0MuIFRoaXMgcGF0Y2ggcmVtb3ZlcyBF
dmVudExpc3RlbmVyOjpyZXBvcnRFcnJvciBhbmQgbW92ZXMgaXRzIGZ1bmN0aW9uYWxpdHkgaW50
byBjdXN0b20gYmluZGluZ3MoVjhXb3JrZXJDb250ZXh0RXJyb3JIYW5kbGVyIGFuZCBKU1dvcmtl
ckNvbnRleHRFcnJvckhhbmRsZXIpIHRoYXQgaW1wbGVtZW50IEV2ZW50TGlzdGVuZXIgaW5lcmZh
Y2UgZm9yIHRoZSBvbmVycm9yIGhhbmRsZXIuCisKKyAgICAgICAgVGhpcyBwYXRjaCBhbHNvIG1h
a2VzIHVuY2F1Z2h0IGV4Y2VwdGlvbnMgdGhhdCBoYXBwZW4gaW4gdGhlIG9uZXJyb3IgbGlzdGVu
ZXIgYmUgcmVwb3J0ZWQgdG8gdGhlIFdvcmtlcidzIG9uZXJyb3IgaGFuZGxlci4KKworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzYzNzUKKworICAgICAg
ICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBXZWJDb3JlLnBybzoKKyAgICAgICAgKiBXZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYmluZGluZ3MvanMvSlNF
dmVudExpc3RlbmVyLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0V2ZW50TGlzdGVuZXIu
aDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1dvcmtlckNvbnRleHRFcnJvckhhbmRsZXIuY3Bw
OiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkpTV29ya2VyQ29udGV4dEVycm9ySGFuZGxlcjo6
SlNXb3JrZXJDb250ZXh0RXJyb3JIYW5kbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkpTV29ya2Vy
Q29udGV4dEVycm9ySGFuZGxlcjo6fkpTV29ya2VyQ29udGV4dEVycm9ySGFuZGxlcik6CisgICAg
ICAgIChXZWJDb3JlOjpKU1dvcmtlckNvbnRleHRFcnJvckhhbmRsZXI6OmhhbmRsZUV2ZW50KToK
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1dvcmtlckNvbnRleHRFcnJvckhhbmRsZXIuaDogQWRk
ZWQuCisgICAgICAgIChXZWJDb3JlOjpKU1dvcmtlckNvbnRleHRFcnJvckhhbmRsZXI6OmNyZWF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVKU1dvcmtlckNvbnRleHRFcnJvckhhbmRsZXIp
OgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOgorICAgICAg
ICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtOgorICAgICAgICAqIGJpbmRp
bmdzL3Y4L1Y4V29ya2VyQ29udGV4dEVycm9ySGFuZGxlci5jcHA6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZTo6VjhXb3JrZXJDb250ZXh0RXJyb3JIYW5kbGVyOjpWOFdvcmtlckNvbnRleHRFcnJv
ckhhbmRsZXIpOgorICAgICAgICAoV2ViQ29yZTo6VjhXb3JrZXJDb250ZXh0RXJyb3JIYW5kbGVy
OjpjYWxsTGlzdGVuZXJGdW5jdGlvbik6CisgICAgICAgICogYmluZGluZ3MvdjgvVjhXb3JrZXJD
b250ZXh0RXJyb3JIYW5kbGVyLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6VjhXb3JrZXJD
b250ZXh0RXJyb3JIYW5kbGVyOjpjcmVhdGUpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4V29y
a2VyQ29udGV4dEV2ZW50TGlzdGVuZXIuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4V29y
a2VyQ29udGV4dEV2ZW50TGlzdGVuZXIuaDoKKyAgICAgICAgKiBkb20vRXZlbnRMaXN0ZW5lci5o
OiBSZW1vdmVkIHJlcG9ydEVycm9yIG1ldGhvZCB0aGF0IHdhcyB1c2VkIG9ubHkgZm9yIHJlcG9y
dGluZyB3b3JrZXIgZXJyb3JzLgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyQ29udGV4dC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJDb250ZXh0OjpXb3JrZXJDb250ZXh0KToKKyAgICAg
ICAgKFdlYkNvcmU6OldvcmtlckNvbnRleHQ6OnJlcG9ydEV4Y2VwdGlvbik6CisgICAgICAgICog
d29ya2Vycy9Xb3JrZXJDb250ZXh0Lmg6CisKIDIwMTAtMDQtMDQgIFBhdmVsIEZlbGRtYW4gIDxw
ZmVsZG1hbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgTm90IHJldmlld2VkLiBSb2xsaW5nIG91
dCBjaHJvbWl1bSBjaGFuZ2VzIHI1NzAyOCBhbmQgcjU3MDMyCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L0dOVW1ha2VmaWxlLmFtIGIvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQppbmRleCBkNjc5M2VhLi4y
ZmM1ZjhjIDEwMDY0NAotLS0gYS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCisrKyBiL1dlYkNvcmUv
R05VbWFrZWZpbGUuYW0KQEAgLTQ3Myw2ICs0NzMsOCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAog
CVdlYkNvcmUvYmluZGluZ3MvanMvSlNXZWJLaXRDU1NNYXRyaXhDb25zdHJ1Y3Rvci5oIFwKIAlX
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViS2l0UG9pbnRDb25zdHJ1Y3Rvci5jcHAgXAogCVdlYkNv
cmUvYmluZGluZ3MvanMvSlNXZWJLaXRQb2ludENvbnN0cnVjdG9yLmggXAorCVdlYkNvcmUvYmlu
ZGluZ3MvanMvSlNXb3JrZXJDb250ZXh0RXJyb3JIYW5kbGVyLmNwcCBcCisJV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU1dvcmtlckNvbnRleHRFcnJvckhhbmRsZXIuaCBcCiAJV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU1hNTEh0dHBSZXF1ZXN0Q29uc3RydWN0b3IuY3BwIFwKIAlXZWJDb3JlL2JpbmRpbmdz
L2pzL0pTWE1MSHR0cFJlcXVlc3RDb25zdHJ1Y3Rvci5oIFwKIAlXZWJDb3JlL2JpbmRpbmdzL2pz
L0pTWE1MSHR0cFJlcXVlc3RDdXN0b20uY3BwIFwKZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29y
ZS5neXBpIGIvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggZTZkNDI2YS4uNWJjZDUyYiAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvV2ViQ29yZS9XZWJDb3JlLmd5cGkK
QEAgLTYyNCw2ICs2MjQsOCBAQAogICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTV29ya2VyQ29u
dGV4dEJhc2UuY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KU1dvcmtlckNvbnRleHRC
YXNlLmgnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTV29ya2VyQ29udGV4dEN1c3RvbS5j
cHAnLAorICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTV29ya2VyQ29udGV4dEVycm9ySGFuZGxl
ci5jcHAnLAorICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTV29ya2VyQ29udGV4dEVycm9ySGFu
ZGxlci5oJywKICAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KU1dvcmtlckN1c3RvbS5jcHAnLAog
ICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTWE1MSHR0cFJlcXVlc3RDb25zdHJ1Y3Rvci5jcHAn
LAogICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTWE1MSHR0cFJlcXVlc3RDb25zdHJ1Y3Rvci5o
JywKQEAgLTg4Niw2ICs4ODgsOCBAQAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L1Y4U1ZHUE9E
VHlwZVdyYXBwZXIuaCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvVjhVdGlsaXRpZXMuY3Bw
JywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9WOFV0aWxpdGllcy5oJywKKyAgICAgICAgICAg
ICdiaW5kaW5ncy92OC9WOFdvcmtlckNvbnRleHRFcnJvckhhbmRsZXIuY3BwJywKKyAgICAgICAg
ICAgICdiaW5kaW5ncy92OC9WOFdvcmtlckNvbnRleHRFcnJvckhhbmRsZXIuaCcsCiAgICAgICAg
ICAgICAnYmluZGluZ3MvdjgvVjhXb3JrZXJDb250ZXh0RXZlbnRMaXN0ZW5lci5jcHAnLAogICAg
ICAgICAgICAgJ2JpbmRpbmdzL3Y4L1Y4V29ya2VyQ29udGV4dEV2ZW50TGlzdGVuZXIuaCcsCiAg
ICAgICAgICAgICAnYmluZGluZ3MvdjgvV29ya2VyQ29udGV4dEV4ZWN1dGlvblByb3h5LmgnLApk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLnBybyBiL1dlYkNvcmUvV2ViQ29yZS5wcm8KaW5k
ZXggZDNhZmY5MS4uZTE1ZjJiMyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLnBybworKysg
Yi9XZWJDb3JlL1dlYkNvcmUucHJvCkBAIC0zNjMsNiArMzYzLDcgQEAgU09VUkNFUyArPSBcCiAg
ICAgYmluZGluZ3MvanMvSlNMYXp5RXZlbnRMaXN0ZW5lci5jcHAgXAogICAgIGJpbmRpbmdzL2pz
L0pTUGx1Z2luRWxlbWVudEZ1bmN0aW9ucy5jcHAgXAogICAgIGJpbmRpbmdzL2pzL0pTUG9wU3Rh
dGVFdmVudEN1c3RvbS5jcHAgXAorICAgIGJpbmRpbmdzL2pzL0pTV29ya2VyQ29udGV4dEVycm9y
SGFuZGxlci5jcHAgXAogICAgIGJpbmRpbmdzL2pzL0phdmFTY3JpcHRQcm9maWxlLmggXAogICAg
IGJpbmRpbmdzL2pzL0phdmFTY3JpcHRQcm9maWxlTm9kZS5oIFwKICAgICBiaW5kaW5ncy9qcy9K
YXZhU2NyaXB0UHJvZmlsZS5jcHAgXApAQCAtMTA3MSw3ICsxMDcyLDcgQEAgSEVBREVSUyArPSBc
CiAgICAgYmluZGluZ3MvanMvSlNXZWJLaXRQb2ludENvbnN0cnVjdG9yLmggXAogICAgIGJpbmRp
bmdzL2pzL0pTV29ya2VyQ29uc3RydWN0b3IuaCBcCiAgICAgYmluZGluZ3MvanMvSlNXb3JrZXJD
b250ZXh0QmFzZS5oIFwKLSAgICBiaW5kaW5ncy9qcy9KU1dvcmtlckNvbnRleHRCYXNlLmggXAor
ICAgIGJpbmRpbmdzL2pzL0pTV29ya2VyQ29udGV4dEVycm9ySGFuZGxlci5oIFwKICAgICBiaW5k
aW5ncy9qcy9KU1hNTEh0dHBSZXF1ZXN0Q29uc3RydWN0b3IuaCBcCiAgICAgYmluZGluZ3MvanMv
SlNYU0xUUHJvY2Vzc29yQ29uc3RydWN0b3IuaCBcCiAgICAgYmluZGluZ3MvanMvU2NoZWR1bGVk
QWN0aW9uLmggXApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZj
cHJvaiBiL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKaW5kZXggOTI1Mjc2
YS4uOGFjMWU3MCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZj
cHJvagorKysgYi9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCkBAIC00MDA2
NCw2ICs0MDA2NCw2MSBAQAogCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KIAkJCQk8L0ZpbGU+
DQogCQkJCTxGaWxlDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGJpbmRpbmdzXGpzXEpTV29ya2Vy
Q29udGV4dEVycm9ySGFuZGxlci5jcHAiID4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJ
CQkJCU5hbWU9IkRlYnVnfFdpbjMyIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0K
KwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0K
KwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1
cmF0aW9uDQorCQkJCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiINCisJCQkJCQlFeGNsdWRlZEZyb21C
dWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENv
bXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJ
CTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IkRlYnVnX0ludGVybmFsfFdpbjMyIg0K
KwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0K
KwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVD
b25maWd1cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iRGVi
dWdfQ2Fpcm98V2luMzIiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJ
Pg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJ
Lz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24N
CisJCQkJCQlOYW1lPSJSZWxlYXNlX0NhaXJvfFdpbjMyIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1
aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29t
cGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJ
PEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iRGVidWdfQWxsfFdpbjMyIg0KKwkJCQkJ
CUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJ
CQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1
cmF0aW9uPg0KKwkJCQk8L0ZpbGU+DQorCQkJCTxGaWxlDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4u
XGJpbmRpbmdzXGpzXEpTV29ya2VyQ29udGV4dEVycm9ySGFuZGxlci5oIg0KKwkJCQkJPg0KKwkJ
CQk8L0ZpbGU+DQorCQkJCTxGaWxlDQogCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGJpbmRpbmdzXGpz
XEpTWE1MSHR0cFJlcXVlc3RDb25zdHJ1Y3Rvci5jcHAiDQogCQkJCQk+DQogCQkJCQk8RmlsZUNv
bmZpZ3VyYXRpb24NCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvaiBiL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmlu
ZGV4IGQzNWU0MGIuLmRhMTg0NDcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCkBAIC00ODkzLDYgKzQ4OTMsOCBAQAogCQlGMzY0NEFGRjExMTk4MDU5MDBFMEQ1
MzcgLyogSW5qZWN0ZWRTY3JpcHQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRjM2NDRBRkQxMTE5ODA1OTAwRTBENTM3IC8qIEluamVjdGVkU2NyaXB0
LmNwcCAqLzsgfTsKIAkJRjM2NDRCMDAxMTE5ODA1OTAwRTBENTM3IC8qIEluamVjdGVkU2NyaXB0
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGMzY0NEFG
RTExMTk4MDU5MDBFMEQ1MzcgLyogSW5qZWN0ZWRTY3JpcHQuaCAqLzsgfTsKIAkJRjM3NUNDMDcx
MTUwRDMwMDAwOEREQjgxIC8qIEluc3BlY3RvcldvcmtlclJlc291cmNlLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGMzc1Q0MwNjExNTBEMzAwMDA4RERC
ODEgLyogSW5zcGVjdG9yV29ya2VyUmVzb3VyY2UuaCAqLzsgfTsKKwkJRjNENDYxNDgxMTYxRDUz
MjAwQ0EwRDA5IC8qIEpTV29ya2VyQ29udGV4dEVycm9ySGFuZGxlci5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGM0Q0NjE0NjExNjFENTMyMDBDQTBE
MDkgLyogSlNXb3JrZXJDb250ZXh0RXJyb3JIYW5kbGVyLmNwcCAqLzsgfTsKKwkJRjNENDYxNDkx
MTYxRDUzMjAwQ0EwRDA5IC8qIEpTV29ya2VyQ29udGV4dEVycm9ySGFuZGxlci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjNENDYxNDcxMTYxRDUzMjAw
Q0EwRDA5IC8qIEpTV29ya2VyQ29udGV4dEVycm9ySGFuZGxlci5oICovOyB9OwogCQlGNEVBRjRB
RTEwQzc0MkIxMDA5MTAwRDMgLyogT3BlblR5cGVTYW5pdGl6ZXIuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjRFQUY0QUMxMEM3NDJCMTAwOTEwMEQz
IC8qIE9wZW5UeXBlU2FuaXRpemVyLmNwcCAqLzsgfTsKIAkJRjRFQUY0QUYxMEM3NDJCMTAwOTEw
MEQzIC8qIE9wZW5UeXBlU2FuaXRpemVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBGNEVBRjRBRDEwQzc0MkIxMDA5MTAwRDMgLyogT3BlblR5cGVTYW5p
dGl6ZXIuaCAqLzsgfTsKIAkJRjVDMDQxREEwRkZDQTdDRTAwODM5RDRBIC8qIEhUTUxEYXRhTGlz
dEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRjVDMDQxRDcwRkZDQTdDRTAwODM5RDRBIC8qIEhUTUxEYXRhTGlzdEVsZW1lbnQuY3BwICov
OyB9OwpAQCAtMTAyNjQsNiArMTAyNjYsOCBAQAogCQlGMzY0NEFGRDExMTk4MDU5MDBFMEQ1Mzcg
LyogSW5qZWN0ZWRTY3JpcHQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gSW5qZWN0ZWRTY3JpcHQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGMzY0
NEFGRTExMTk4MDU5MDBFMEQ1MzcgLyogSW5qZWN0ZWRTY3JpcHQuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gSW5qZWN0ZWRTY3JpcHQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJRjM3NUNDMDYxMTUwRDMwMDAwOEREQjgxIC8qIEluc3BlY3RvcldvcmtlclJlc291
cmNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluc3BlY3RvcldvcmtlclJl
c291cmNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUYzRDQ2MTQ2MTE2MUQ1MzIw
MENBMEQwOSAvKiBKU1dvcmtlckNvbnRleHRFcnJvckhhbmRsZXIuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNXb3JrZXJDb250ZXh0RXJyb3JIYW5kbGVyLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRjNENDYxNDcxMTYxRDUzMjAwQ0EwRDA5IC8q
IEpTV29ya2VyQ29udGV4dEVycm9ySGFuZGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBKU1dvcmtlckNvbnRleHRFcnJvckhhbmRsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRjRFQUY0QUMxMEM3NDJCMTAwOTEwMEQzIC8qIE9wZW5UeXBlU2FuaXRpemVy
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IE9wZW5UeXBlU2FuaXRp
emVyLmNwcDsgcGF0aCA9IG9wZW50eXBlL09wZW5UeXBlU2FuaXRpemVyLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjRFQUY0QUQxMEM3NDJCMTAwOTEwMEQzIC8qIE9wZW5UeXBl
U2FuaXRpemVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IE9wZW5UeXBlU2Fu
aXRpemVyLmg7IHBhdGggPSBvcGVudHlwZS9PcGVuVHlwZVNhbml0aXplci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlGNTIzRDIzQjAyREU0Mzk2MDE4NjM1Q0EgLyogSFRNTERvY3Vt
ZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsg
aW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEhUTUxEb2N1bWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRo
ID0gODsgdXNlc1RhYnMgPSAwOyB9OwpAQCAtMTQ4NTMsNiArMTQ4NTcsOCBAQAogCQkJCUIyMTEy
N0E1MEIzMTg2NzcwMDA5QkU1MyAvKiBKU1NWR1BPRFR5cGVXcmFwcGVyLmggKi8sCiAJCQkJRTFD
MzZEMzIwRUIwQTA5NDAwNzQxMEJDIC8qIEpTV29ya2VyQ29udGV4dEJhc2UuY3BwICovLAogCQkJ
CUUxQzM2RDMzMEVCMEEwOTQwMDc0MTBCQyAvKiBKU1dvcmtlckNvbnRleHRCYXNlLmggKi8sCisJ
CQkJRjNENDYxNDYxMTYxRDUzMjAwQ0EwRDA5IC8qIEpTV29ya2VyQ29udGV4dEVycm9ySGFuZGxl
ci5jcHAgKi8sCisJCQkJRjNENDYxNDcxMTYxRDUzMjAwQ0EwRDA5IC8qIEpTV29ya2VyQ29udGV4
dEVycm9ySGFuZGxlci5oICovLAogCQkJCUJDQTM3OEJBMEQxNUY2NDIwMEI3OTNENiAvKiBTY2hl
ZHVsZWRBY3Rpb24uY3BwICovLAogCQkJCUJDQTM3OEJCMEQxNUY2NDIwMEI3OTNENiAvKiBTY2hl
ZHVsZWRBY3Rpb24uaCAqLywKIAkJCQk3QTFFODhGMzEwMUNDMzg0MDAwQzRERjUgLyogU2NyaXB0
QXJyYXkuY3BwICovLApAQCAtMTc5NTUsNiArMTc5NjEsNyBAQAogCQkJCUUxQ0E1Q0QzMEU4Q0RF
ODAwMEU4RUY5MCAvKiBKU1dvcmtlckNvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlF
MTgyNTY5MDBFRjJCMDJEMDA5MzMyNDIgLyogSlNXb3JrZXJDb250ZXh0LmggaW4gSGVhZGVycyAq
LywKIAkJCQlFMUMzNkQzNTBFQjBBMDk0MDA3NDEwQkMgLyogSlNXb3JrZXJDb250ZXh0QmFzZS5o
IGluIEhlYWRlcnMgKi8sCisJCQkJRjNENDYxNDkxMTYxRDUzMjAwQ0EwRDA5IC8qIEpTV29ya2Vy
Q29udGV4dEVycm9ySGFuZGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTFDMzYyRUYwRUFGMkFB
OTAwNzQxMEJDIC8qIEpTV29ya2VyTG9jYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUUxMjcx
QTU4MEVFRUNERTQwMEY2MTIxMyAvKiBKU1dvcmtlck5hdmlnYXRvci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQkMzNDhCRDQwREI3RjgwNDAwNEFCQUI5IC8qIEpTWE1MSHR0cFJlcXVlc3QuaCBpbiBI
ZWFkZXJzICovLApAQCAtMjAyNzAsNiArMjAyNzcsNyBAQAogCQkJCUUxODI1NjhGMEVGMkIwMkQw
MDkzMzI0MiAvKiBKU1dvcmtlckNvbnRleHQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTFDMzZE
MzQwRUIwQTA5NDAwNzQxMEJDIC8qIEpTV29ya2VyQ29udGV4dEJhc2UuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJRTE4MjU4QUMwRUYzQ0Q3MDAwOTMzMjQyIC8qIEpTV29ya2VyQ29udGV4dEN1c3Rv
bS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlGM0Q0NjE0ODExNjFENTMyMDBDQTBEMDkgLyogSlNX
b3JrZXJDb250ZXh0RXJyb3JIYW5kbGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxQ0E1Q0JD
MEU4Q0RDQUYwMEU4RUY5MCAvKiBKU1dvcmtlckN1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlFMUMzNjJGMDBFQUYyQUE5MDA3NDEwQkMgLyogSlNXb3JrZXJMb2NhdGlvbi5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlFMTI3MUE1OTBFRUVDREU0MDBGNjEyMTMgLyogSlNXb3JrZXJOYXZpZ2F0
b3IuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RXZlbnRMaXN0ZW5lci5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5j
cHAKaW5kZXggYmUwNDlkYi4uYjAwZDY1NCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0V2ZW50TGlzdGVuZXIuY3BwCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudExp
c3RlbmVyLmNwcApAQCAtMTMzLDQ3ICsxMzMsNiBAQCB2b2lkIEpTRXZlbnRMaXN0ZW5lcjo6aGFu
ZGxlRXZlbnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dAog
ICAgIH0KIH0KIAotYm9vbCBKU0V2ZW50TGlzdGVuZXI6OnJlcG9ydEVycm9yKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5n
JiB1cmwsIGludCBsaW5lTnVtYmVyKQotewotICAgIEpTTG9jayBsb2NrKFNpbGVuY2VBc3NlcnRp
b25zT25seSk7Ci0KLSAgICBKU09iamVjdCoganNGdW5jdGlvbiA9IHRoaXMtPmpzRnVuY3Rpb24o
Y29udGV4dCk7Ci0gICAgaWYgKCFqc0Z1bmN0aW9uKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0K
LSAgICBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gdG9KU0RPTUdsb2JhbE9iamVj
dChjb250ZXh0LCBtX2lzb2xhdGVkV29ybGQuZ2V0KCkpOwotICAgIEV4ZWNTdGF0ZSogZXhlYyA9
IGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpOwotCi0gICAgQ2FsbERhdGEgY2FsbERhdGE7Ci0g
ICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBqc0Z1bmN0aW9uLT5nZXRDYWxsRGF0YShjYWxsRGF0YSk7
Ci0KLSAgICBpZiAoY2FsbFR5cGUgPT0gQ2FsbFR5cGVOb25lKQotICAgICAgICByZXR1cm4gZmFs
c2U7Ci0KLSAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmdzOwotICAgIGFyZ3MuYXBwZW5kKGpz
U3RyaW5nKGV4ZWMsIG1lc3NhZ2UpKTsKLSAgICBhcmdzLmFwcGVuZChqc1N0cmluZyhleGVjLCB1
cmwpKTsKLSAgICBhcmdzLmFwcGVuZChqc051bWJlcihleGVjLCBsaW5lTnVtYmVyKSk7Ci0KLSAg
ICBKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEgPSBnbG9iYWxPYmplY3QtPmdsb2JhbERhdGEoKTsK
LSAgICBEeW5hbWljR2xvYmFsT2JqZWN0U2NvcGUgZ2xvYmFsT2JqZWN0U2NvcGUoZXhlYywgZ2xv
YmFsRGF0YS0+ZHluYW1pY0dsb2JhbE9iamVjdCA/IGdsb2JhbERhdGEtPmR5bmFtaWNHbG9iYWxP
YmplY3QgOiBnbG9iYWxPYmplY3QpOyAgICAKLQotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZ2xv
YmFsT2JqZWN0LT50b1RoaXNPYmplY3QoZXhlYyk7Ci0KLSAgICBnbG9iYWxEYXRhLT50aW1lb3V0
Q2hlY2tlci5zdGFydCgpOwotICAgIEpTVmFsdWUgcmV0dXJuVmFsdWUgPSBKU0M6OmNhbGwoZXhl
YywganNGdW5jdGlvbiwgY2FsbFR5cGUsIGNhbGxEYXRhLCB0aGlzVmFsdWUsIGFyZ3MpOwotICAg
IGdsb2JhbERhdGEtPnRpbWVvdXRDaGVja2VyLnN0b3AoKTsKLQotICAgIC8vIElmIGFuIGVycm9y
IG9jY3VycyB3aGlsZSBoYW5kbGluZyB0aGUgc2NyaXB0IGVycm9yLCBpdCBzaG91bGQgYmUgYnVi
YmxlZCB1cC4KLSAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpIHsKLSAgICAgICAgZXhlYy0+
Y2xlYXJFeGNlcHRpb24oKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICAKLSAg
ICBib29sIGJ1YmJsZUV2ZW50OwotICAgIHJldHVybiByZXR1cm5WYWx1ZS5nZXRCb29sZWFuKGJ1
YmJsZUV2ZW50KSAmJiAhYnViYmxlRXZlbnQ7Ci19Ci0KIGJvb2wgSlNFdmVudExpc3RlbmVyOjp2
aXJ0dWFsaXNBdHRyaWJ1dGUoKSBjb25zdAogewogICAgIHJldHVybiBtX2lzQXR0cmlidXRlOwpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50TGlzdGVuZXIuaCBiL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNFdmVudExpc3RlbmVyLmgKaW5kZXggNTY5YzE5Mi4uYjE1YzU4OSAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50TGlzdGVuZXIuaAorKysgYi9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5oCkBAIC02MCw3ICs2MCw2IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCB2b2lkIG1hcmtKU0Z1bmN0aW9uKEpT
Qzo6TWFya1N0YWNrJik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRlSlNGdW5jdGlv
bihKU0M6OkpTT2JqZWN0Kik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVFdmVudChTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiwgRXZlbnQqKTsKLSAgICAgICAgdmlydHVhbCBib29sIHJlcG9y
dEVycm9yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNv
bnN0IFN0cmluZyYgdXJsLCBpbnQgbGluZU51bWJlcik7CiAgICAgICAgIHZpcnR1YWwgYm9vbCB2
aXJ0dWFsaXNBdHRyaWJ1dGUoKSBjb25zdDsKIAogICAgIHByb3RlY3RlZDoKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJDb250ZXh0RXJyb3JIYW5kbGVyLmNwcCBiL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJDb250ZXh0RXJyb3JIYW5kbGVyLmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wM2RmOGYyCi0tLSAvZGV2L251bGwKKysrIGIv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckNvbnRleHRFcnJvckhhbmRsZXIuY3BwCkBAIC0w
LDAgKzEsMTExIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBt
ZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUg
b2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJT
IEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICog
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkpTV29ya2VyQ29udGV4
dEVycm9ySGFuZGxlci5oIgorCisjaW5jbHVkZSAiRXJyb3JFdmVudC5oIgorI2luY2x1ZGUgIkV2
ZW50LmgiCisjaW5jbHVkZSAiSlNFdmVudC5oIgorI2luY2x1ZGUgPHJ1bnRpbWUvSlNMb2NrLmg+
CisKK3VzaW5nIG5hbWVzcGFjZSBKU0M7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworSlNXb3Jr
ZXJDb250ZXh0RXJyb3JIYW5kbGVyOjpKU1dvcmtlckNvbnRleHRFcnJvckhhbmRsZXIoSlNPYmpl
Y3QqIGZ1bmN0aW9uLCBKU09iamVjdCogd3JhcHBlciwgYm9vbCBpc0F0dHJpYnV0ZSwgRE9NV3Jh
cHBlcldvcmxkKiBpc29sYXRlZFdvcmxkKQorICAgIDogSlNFdmVudExpc3RlbmVyKGZ1bmN0aW9u
LCB3cmFwcGVyLCBpc0F0dHJpYnV0ZSwgaXNvbGF0ZWRXb3JsZCkKK3sKK30KKworSlNXb3JrZXJD
b250ZXh0RXJyb3JIYW5kbGVyOjp+SlNXb3JrZXJDb250ZXh0RXJyb3JIYW5kbGVyKCkKK3sKK30K
Kwordm9pZCBKU1dvcmtlckNvbnRleHRFcnJvckhhbmRsZXI6OmhhbmRsZUV2ZW50KFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIEV2ZW50KiBldmVudCkKK3sK
KyAgICBBU1NFUlQoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7CisgICAgaWYgKCFzY3JpcHRFeGVj
dXRpb25Db250ZXh0KQorICAgICAgICByZXR1cm47CisKKyAgICBKU0xvY2sgbG9jayhTaWxlbmNl
QXNzZXJ0aW9uc09ubHkpOworCisgICAgSlNPYmplY3QqIGpzRnVuY3Rpb24gPSB0aGlzLT5qc0Z1
bmN0aW9uKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOworICAgIGlmICghanNGdW5jdGlvbikKKyAg
ICAgICAgcmV0dXJuOworCisgICAgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IHRv
SlNET01HbG9iYWxPYmplY3Qoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgaXNvbGF0ZWRXb3JsZCgp
KTsKKyAgICBpZiAoIWdsb2JhbE9iamVjdCkKKyAgICAgICAgcmV0dXJuOworCisgICAgRXhlY1N0
YXRlKiBleGVjID0gZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCk7CisKKyAgICBDYWxsRGF0YSBj
YWxsRGF0YTsKKyAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IGpzRnVuY3Rpb24tPmdldENhbGxEYXRh
KGNhbGxEYXRhKTsKKworICAgIGlmIChjYWxsVHlwZSAhPSBDYWxsVHlwZU5vbmUpIHsKKworICAg
ICAgICByZWYoKTsKKworICAgICAgICBFdmVudCogc2F2ZWRFdmVudCA9IGdsb2JhbE9iamVjdC0+
Y3VycmVudEV2ZW50KCk7CisgICAgICAgIGdsb2JhbE9iamVjdC0+c2V0Q3VycmVudEV2ZW50KGV2
ZW50KTsKKworICAgICAgICBBU1NFUlQoZXZlbnQtPmlzRXJyb3JFdmVudCgpKTsKKyAgICAgICAg
RXJyb3JFdmVudCogZXJyb3JFdmVudCA9IHN0YXRpY19jYXN0PEVycm9yRXZlbnQqPihldmVudCk7
CisKKyAgICAgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJnczsKKyAgICAgICAgYXJncy5hcHBl
bmQoanNTdHJpbmcoZXhlYywgZXJyb3JFdmVudC0+bWVzc2FnZSgpKSk7CisgICAgICAgIGFyZ3Mu
YXBwZW5kKGpzU3RyaW5nKGV4ZWMsIGVycm9yRXZlbnQtPmZpbGVuYW1lKCkpKTsKKyAgICAgICAg
YXJncy5hcHBlbmQoanNOdW1iZXIoZXhlYywgZXJyb3JFdmVudC0+bGluZW5vKCkpKTsKKworICAg
ICAgICBKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEgPSBnbG9iYWxPYmplY3QtPmdsb2JhbERhdGEo
KTsKKyAgICAgICAgRHluYW1pY0dsb2JhbE9iamVjdFNjb3BlIGdsb2JhbE9iamVjdFNjb3BlKGV4
ZWMsIGdsb2JhbERhdGEtPmR5bmFtaWNHbG9iYWxPYmplY3QgPyBnbG9iYWxEYXRhLT5keW5hbWlj
R2xvYmFsT2JqZWN0IDogZ2xvYmFsT2JqZWN0KTsgICAgCisKKyAgICAgICAgSlNWYWx1ZSB0aGlz
VmFsdWUgPSBnbG9iYWxPYmplY3QtPnRvVGhpc09iamVjdChleGVjKTsKKworICAgICAgICBnbG9i
YWxEYXRhLT50aW1lb3V0Q2hlY2tlci5zdGFydCgpOworICAgICAgICBKU1ZhbHVlIHJldHVyblZh
bHVlID0gSlNDOjpjYWxsKGV4ZWMsIGpzRnVuY3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0YSwgdGhp
c1ZhbHVlLCBhcmdzKTsKKyAgICAgICAgZ2xvYmFsRGF0YS0+dGltZW91dENoZWNrZXIuc3RvcCgp
OworCisgICAgICAgIGdsb2JhbE9iamVjdC0+c2V0Q3VycmVudEV2ZW50KHNhdmVkRXZlbnQpOwor
CisgICAgICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgICAgIHJlcG9ydEN1
cnJlbnRFeGNlcHRpb24oZXhlYyk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgYm9vbCBy
ZXR2YWxib29sOworICAgICAgICAgICAgaWYgKHJldHVyblZhbHVlLmdldEJvb2xlYW4ocmV0dmFs
Ym9vbCkgJiYgIXJldHZhbGJvb2wpCisgICAgICAgICAgICAgICAgZXZlbnQtPnByZXZlbnREZWZh
dWx0KCk7CisgICAgICAgIH0KKworICAgICAgICBkZXJlZigpOworICAgIH0KK30KKworfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtl
ckNvbnRleHRFcnJvckhhbmRsZXIuaCBiL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJDb250
ZXh0RXJyb3JIYW5kbGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTE4
ODI5OQotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJDb250
ZXh0RXJyb3JIYW5kbGVyLmgKQEAgLTAsMCArMSw2NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAg
ICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRz
CisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICog
TElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
CisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgSlNXb3JrZXJDb250ZXh0
RXJyb3JIYW5kbGVyX2gKKyNkZWZpbmUgSlNXb3JrZXJDb250ZXh0RXJyb3JIYW5kbGVyX2gKKwor
I2luY2x1ZGUgIkpTRXZlbnRMaXN0ZW5lci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2Ns
YXNzIEpTV29ya2VyQ29udGV4dEVycm9ySGFuZGxlciA6IHB1YmxpYyBKU0V2ZW50TGlzdGVuZXIg
eworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPEpTV29ya2VyQ29udGV4dEVycm9ySGFu
ZGxlcj4gY3JlYXRlKEpTQzo6SlNPYmplY3QqIGxpc3RlbmVyLCBKU0M6OkpTT2JqZWN0KiB3cmFw
cGVyLCBib29sIGlzQXR0cmlidXRlLCBET01XcmFwcGVyV29ybGQqIGlzb2xhdGVkV29ybGQpCisg
ICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEpTV29ya2VyQ29udGV4dEVycm9ySGFu
ZGxlcihsaXN0ZW5lciwgd3JhcHBlciwgaXNBdHRyaWJ1dGUsIGlzb2xhdGVkV29ybGQpKTsKKyAg
ICB9CisKKyAgICB2aXJ0dWFsIH5KU1dvcmtlckNvbnRleHRFcnJvckhhbmRsZXIoKTsKKworcHJp
dmF0ZToKKyAgICBKU1dvcmtlckNvbnRleHRFcnJvckhhbmRsZXIoSlNDOjpKU09iamVjdCogZnVu
Y3Rpb24sIEpTQzo6SlNPYmplY3QqIHdyYXBwZXIsIGJvb2wgaXNBdHRyaWJ1dGUsIERPTVdyYXBw
ZXJXb3JsZCogaXNvbGF0ZWRXb3JsZCk7CisgICAgdmlydHVhbCB2b2lkIGhhbmRsZUV2ZW50KFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBFdmVudCopOworfTsKKworLy8gQ3JlYXRlcyBhIEpTIEV2
ZW50TGlzdGVuZXIgZm9yICJvbmVycm9yIiBldmVudCBoYW5kbGVyIGluIHdvcmtlciBjb250ZXh0
LiBJdCBoYXMgY3VzdG9tIGltcGxlbWVudGF0aW9uIGJlY2F1c2UKKy8vIHVubGlrZSBvdGhlciBl
dmVudCBsaXN0ZW5lcnMgaXQgYWNjZXB0cyB0aHJlZSBwYXJhbWV0ZXJzLgoraW5saW5lIFBhc3NS
ZWZQdHI8SlNXb3JrZXJDb250ZXh0RXJyb3JIYW5kbGVyPiBjcmVhdGVKU1dvcmtlckNvbnRleHRF
cnJvckhhbmRsZXIoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTQzo6SlNWYWx1ZSBsaXN0ZW5lciwg
SlNDOjpKU09iamVjdCogd3JhcHBlcikKK3sKKyAgICBpZiAoIWxpc3RlbmVyLmlzT2JqZWN0KCkp
CisgICAgICAgIHJldHVybiAwOworCisgICAgcmV0dXJuIEpTV29ya2VyQ29udGV4dEVycm9ySGFu
ZGxlcjo6Y3JlYXRlKGFzT2JqZWN0KGxpc3RlbmVyKSwgd3JhcHBlciwgdHJ1ZSwgY3VycmVudFdv
cmxkKGV4ZWMpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gSlNX
b3JrZXJDb250ZXh0RXJyb3JIYW5kbGVyX2gKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0gYi9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29k
ZUdlbmVyYXRvckpTLnBtCmluZGV4IDFhZWQxMWQuLjgzZWFlZDQgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KKysrIGIvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQpAQCAtMTQ4NCw3ICsxNDg0LDEyIEBAIHN1
YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGlt
cGxJbmNsdWRlc3siSlNFdmVudExpc3RlbmVyLmgifSA9IDE7CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgVU5VU0VEX1BBUkFNKGV4ZWMpO1xuIik7
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgJGlt
cGxDbGFzc05hbWUqIGltcCA9IHN0YXRpY19jYXN0PCRpbXBsQ2xhc3NOYW1lKj4oc3RhdGljX2Nh
c3Q8JGNsYXNzTmFtZSo+KHRoaXNPYmplY3QpLT5pbXBsKCkpO1xuIik7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaW1wLT5zZXQkaW1wbFNldHRl
ckZ1bmN0aW9uTmFtZShjcmVhdGVKU0F0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXhlYywgdmFsdWUs
IHRoaXNPYmplY3QpKTtcbiIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkaW50
ZXJmYWNlTmFtZSBlcSAiV29ya2VyQ29udGV4dCIgYW5kICRuYW1lIGVxICJvbmVycm9yIikgewor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkaW1wbEluY2x1ZGVzeyJKU1dvcmtlckNv
bnRleHRFcnJvckhhbmRsZXIuaCJ9ID0gMTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaW1wLT5zZXQkaW1wbFNldHRlckZ1bmN0aW9uTmFt
ZShjcmVhdGVKU1dvcmtlckNvbnRleHRFcnJvckhhbmRsZXIoZXhlYywgdmFsdWUsIHRoaXNPYmpl
Y3QpKTtcbiIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGltcC0+c2V0
JGltcGxTZXR0ZXJGdW5jdGlvbk5hbWUoY3JlYXRlSlNBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGV4
ZWMsIHZhbHVlLCB0aGlzT2JqZWN0KSk7XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2lmICgkYXR0cmlidXRlLT5zaWduYXR1
cmUtPnR5cGUgPX4gL0NvbnN0cnVjdG9yJC8pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBteSAkY29uc3RydWN0b3JUeXBlID0gJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT50eXBlOwogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICRjb25zdHJ1Y3RvclR5cGUgPX4gcy9Db25zdHJ1Y3Rv
ciQvLzsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9y
VjgucG0gYi9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCmluZGV4
IDdjNzJkYjQuLmQxZTc3NGQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9D
b2RlR2VuZXJhdG9yVjgucG0KKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5l
cmF0b3JWOC5wbQpAQCAtOTExLDcgKzkxMSwxMyBAQCBFTkQKICAgICAgICAgfSBlbHNpZiAoJGF0
dHJpYnV0ZS0+c2lnbmF0dXJlLT50eXBlIGVxICJFdmVudExpc3RlbmVyIikgewogICAgICAgICAg
ICAgJGltcGxJbmNsdWRlc3siVjhBYnN0cmFjdEV2ZW50TGlzdGVuZXIuaCJ9ID0gMTsKICAgICAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsICIgICAgdHJhbnNmZXJIaWRkZW5EZXBlbmRl
bmN5KGluZm8uSG9sZGVyKCksIGltcC0+JGF0dHJOYW1lKCksIHZhbHVlLCBWOCR7aW50ZXJmYWNl
TmFtZX06OmV2ZW50TGlzdGVuZXJDYWNoZUluZGV4KTtcbiIpOwotICAgICAgICAgICAgcHVzaChA
aW1wbENvbnRlbnREZWNscywgIiAgICBpbXAtPnNldCRpbXBsU2V0dGVyRnVuY3Rpb25OYW1lKFY4
RE9NV3JhcHBlcjo6Z2V0RXZlbnRMaXN0ZW5lcih2YWx1ZSwgdHJ1ZSwgTGlzdGVuZXJGaW5kT3JD
cmVhdGUpIik7CisgICAgICAgICAgICBpZiAoJGludGVyZmFjZU5hbWUgZXEgIldvcmtlckNvbnRl
eHQiIGFuZCAkYXR0cmlidXRlLT5zaWduYXR1cmUtPm5hbWUgZXEgIm9uZXJyb3IiKSB7CisgICAg
ICAgICAgICAgICAgJGltcGxJbmNsdWRlc3siVjhFdmVudExpc3RlbmVyTGlzdC5oIn0gPSAxOwor
ICAgICAgICAgICAgICAgICRpbXBsSW5jbHVkZXN7IlY4V29ya2VyQ29udGV4dEVycm9ySGFuZGxl
ci5oIn0gPSAxOworICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsICIgICAg
aW1wLT5zZXQkaW1wbFNldHRlckZ1bmN0aW9uTmFtZShWOEV2ZW50TGlzdGVuZXJMaXN0OjpmaW5k
T3JDcmVhdGVXcmFwcGVyPFY4V29ya2VyQ29udGV4dEVycm9ySGFuZGxlcj4odmFsdWUsIHRydWUp
Iik7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250
ZW50RGVjbHMsICIgICAgaW1wLT5zZXQkaW1wbFNldHRlckZ1bmN0aW9uTmFtZShWOERPTVdyYXBw
ZXI6OmdldEV2ZW50TGlzdGVuZXIodmFsdWUsIHRydWUsIExpc3RlbmVyRmluZE9yQ3JlYXRlKSIp
OworICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnREZWNscywgIiAgICBpbXAtPnNldCRpbXBsU2V0dGVyRnVuY3Rpb25OYW1lKCRyZXN1
bHQiKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFdvcmtl
ckNvbnRleHRFcnJvckhhbmRsZXIuY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFdvcmtlckNv
bnRleHRFcnJvckhhbmRsZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu
LjVhNzVhNDAKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4V29ya2Vy
Q29udGV4dEVycm9ySGFuZGxlci5jcHAKQEAgLTAsMCArMSw2NiBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24u
CisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMg
b2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMi
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKworI2lmIEVOQUJMRShXT1JLRVJTKQorCisjaW5jbHVkZSAiVjhXb3JrZXJDb250ZXh0RXJy
b3JIYW5kbGVyLmgiCisKKyNpbmNsdWRlICJFcnJvckV2ZW50LmgiCisjaW5jbHVkZSAiVjhCaW5k
aW5nLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworVjhXb3JrZXJDb250ZXh0RXJyb3JIYW5k
bGVyOjpWOFdvcmtlckNvbnRleHRFcnJvckhhbmRsZXIodjg6OkxvY2FsPHY4OjpPYmplY3Q+IGxp
c3RlbmVyLCBib29sIGlzSW5saW5lLCBjb25zdCBXb3JsZENvbnRleHRIYW5kbGUmIHdvcmxkQ29u
dGV4dCkKKyAgICA6IFY4V29ya2VyQ29udGV4dEV2ZW50TGlzdGVuZXIobGlzdGVuZXIsIGlzSW5s
aW5lLCB3b3JsZENvbnRleHQpCit7Cit9CisKK3Y4OjpMb2NhbDx2ODo6VmFsdWU+IFY4V29ya2Vy
Q29udGV4dEVycm9ySGFuZGxlcjo6Y2FsbExpc3RlbmVyRnVuY3Rpb24oU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogY29udGV4dCwgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGpzRXZlbnQsIEV2ZW50KiBl
dmVudCkKK3sKKyAgICBBU1NFUlQoZXZlbnQtPmlzRXJyb3JFdmVudCgpKTsKKyAgICB2ODo6TG9j
YWw8djg6Ok9iamVjdD4gbGlzdGVuZXIgPSBnZXRMaXN0ZW5lck9iamVjdChjb250ZXh0KTsKKyAg
ICB2ODo6TG9jYWw8djg6OlZhbHVlPiByZXR1cm5WYWx1ZTsKKyAgICBpZiAoIWxpc3RlbmVyLklz
RW1wdHkoKSAmJiBsaXN0ZW5lci0+SXNGdW5jdGlvbigpKSB7CisgICAgICAgIEVycm9yRXZlbnQq
IGVycm9yRXZlbnQgPSBzdGF0aWNfY2FzdDxFcnJvckV2ZW50Kj4oZXZlbnQpOworICAgICAgICB2
ODo6TG9jYWw8djg6OkZ1bmN0aW9uPiBjYWxsRnVuY3Rpb24gPSB2ODo6TG9jYWw8djg6OkZ1bmN0
aW9uPjo6Q2FzdChsaXN0ZW5lcik7CisgICAgICAgIHY4OjpMb2NhbDx2ODo6T2JqZWN0PiB0aGlz
VmFsdWUgPSB2ODo6Q29udGV4dDo6R2V0Q3VycmVudCgpLT5HbG9iYWwoKTsKKyAgICAgICAgdjg6
OkhhbmRsZTx2ODo6VmFsdWU+IHBhcmFtZXRlcnNbM10gPSB7IHY4U3RyaW5nKGVycm9yRXZlbnQt
Pm1lc3NhZ2UoKSksIHY4U3RyaW5nKGVycm9yRXZlbnQtPmZpbGVuYW1lKCkpLCB2ODo6SW50ZWdl
cjo6TmV3KGVycm9yRXZlbnQtPmxpbmVubygpKSB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IGNh
bGxGdW5jdGlvbi0+Q2FsbCh0aGlzVmFsdWUsIDMsIHBhcmFtZXRlcnMpOworICAgICAgICBpZiAo
IXJldHVyblZhbHVlLklzRW1wdHkoKSAmJiByZXR1cm5WYWx1ZS0+SXNCb29sZWFuKCkgJiYgIXJl
dHVyblZhbHVlLT5Cb29sZWFuVmFsdWUoKSkKKyAgICAgICAgICAgIGV2ZW50LT5wcmV2ZW50RGVm
YXVsdCgpOworICAgIH0KKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFdPUktFUlMKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvVjhXb3JrZXJDb250ZXh0RXJyb3JIYW5kbGVyLmggYi9XZWJDb3JlL2JpbmRpbmdz
L3Y4L1Y4V29ya2VyQ29udGV4dEVycm9ySGFuZGxlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLmNkMWUwZTYKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL2JpbmRpbmdz
L3Y4L1Y4V29ya2VyQ29udGV4dEVycm9ySGFuZGxlci5oCkBAIC0wLDAgKzEsNTkgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlz
dHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3Ig
dGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwor
ICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9S
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVm
IFY4V29ya2VyQ29udGV4dEVycm9ySGFuZGxlcl9oCisjZGVmaW5lIFY4V29ya2VyQ29udGV4dEVy
cm9ySGFuZGxlcl9oCisKKyNpZiBFTkFCTEUoV09SS0VSUykKKworI2luY2x1ZGUgIlY4V29ya2Vy
Q29udGV4dEV2ZW50TGlzdGVuZXIuaCIKKyNpbmNsdWRlIDx2OC5oPgorI2luY2x1ZGUgPHd0Zi9Q
YXNzUmVmUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgVjhXb3JrZXJDb250
ZXh0RXJyb3JIYW5kbGVyIDogcHVibGljIFY4V29ya2VyQ29udGV4dEV2ZW50TGlzdGVuZXIgewor
cHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFY4V29ya2VyQ29udGV4dEVycm9ySGFuZGxl
cj4gY3JlYXRlKHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBsaXN0ZW5lciwgYm9vbCBpc0lubGluZSwg
Y29uc3QgV29ybGRDb250ZXh0SGFuZGxlJiB3b3JsZENvbnRleHQpCisgICAgeworICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IFY4V29ya2VyQ29udGV4dEVycm9ySGFuZGxlcihsaXN0ZW5lciwg
aXNJbmxpbmUsIHdvcmxkQ29udGV4dCkpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBWOFdvcmtl
ckNvbnRleHRFcnJvckhhbmRsZXIodjg6OkxvY2FsPHY4OjpPYmplY3Q+IGxpc3RlbmVyLCBib29s
IGlzSW5saW5lLCBjb25zdCBXb3JsZENvbnRleHRIYW5kbGUmIHdvcmxkQ29udGV4dCk7CisKKyAg
ICB2aXJ0dWFsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IGNhbGxMaXN0ZW5lckZ1bmN0aW9uKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqLCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4ganNFdmVudCwgRXZlbnQq
KTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFdPUktFUlMKKwor
I2VuZGlmIC8vIFY4V29ya2VyQ29udGV4dEVycm9ySGFuZGxlcl9oCmRpZmYgLS1naXQgYS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L1Y4V29ya2VyQ29udGV4dEV2ZW50TGlzdGVuZXIuY3BwIGIvV2ViQ29y
ZS9iaW5kaW5ncy92OC9WOFdvcmtlckNvbnRleHRFdmVudExpc3RlbmVyLmNwcAppbmRleCBmYTg5
YWU2Li4zMGI5ODY1IDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4V29ya2VyQ29u
dGV4dEV2ZW50TGlzdGVuZXIuY3BwCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhXb3JrZXJD
b250ZXh0RXZlbnRMaXN0ZW5lci5jcHAKQEAgLTgyLDU2ICs4Miw2IEBAIHZvaWQgVjhXb3JrZXJD
b250ZXh0RXZlbnRMaXN0ZW5lcjo6aGFuZGxlRXZlbnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
Y29udGV4dCwKICAgICBpbnZva2VFdmVudEhhbmRsZXIoY29udGV4dCwgZXZlbnQsIGpzRXZlbnQp
OwogfQogCi1ib29sIFY4V29ya2VyQ29udGV4dEV2ZW50TGlzdGVuZXI6OnJlcG9ydEVycm9yKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29u
c3QgU3RyaW5nJiB1cmwsIGludCBsaW5lTnVtYmVyKQotewotICAgIGlmICghY29udGV4dCkKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgLy8gVGhlIGNhbGxiYWNrIGZ1bmN0aW9uIGNhbiBj
bGVhciB0aGUgZXZlbnQgbGlzdGVuZXIgYW5kIGRlc3Ryb3kgJ3RoaXMnIG9iamVjdC4gS2VlcCBh
IGxvY2FsIHJlZmVyZW5jZSB0byBpdC4KLSAgICBSZWZQdHI8VjhBYnN0cmFjdEV2ZW50TGlzdGVu
ZXI+IHByb3RlY3QodGhpcyk7Ci0KLSAgICB2ODo6SGFuZGxlU2NvcGUgaGFuZGxlU2NvcGU7Ci0K
LSAgICBXb3JrZXJDb250ZXh0RXhlY3V0aW9uUHJveHkqIHByb3h5ID0gd29ya2VyUHJveHkoY29u
dGV4dCk7Ci0gICAgaWYgKCFwcm94eSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgdjg6
OkhhbmRsZTx2ODo6Q29udGV4dD4gdjhDb250ZXh0ID0gcHJveHktPmNvbnRleHQoKTsKLSAgICBp
ZiAodjhDb250ZXh0LklzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgLy8g
RW50ZXIgdGhlIFY4IGNvbnRleHQgaW4gd2hpY2ggdG8gcGVyZm9ybSB0aGUgZXZlbnQgaGFuZGxp
bmcuCi0gICAgdjg6OkNvbnRleHQ6OlNjb3BlIHNjb3BlKHY4Q29udGV4dCk7Ci0KLSAgICB2ODo6
TG9jYWw8djg6Ok9iamVjdD4gbGlzdGVuZXIgPSBnZXRMaXN0ZW5lck9iamVjdChjb250ZXh0KTsK
LSAgICB2ODo6TG9jYWw8djg6OlZhbHVlPiByZXR1cm5WYWx1ZTsKLSAgICB7Ci0gICAgICAgIC8v
IENhdGNoIGV4Y2VwdGlvbnMgdGhyb3duIGluIGNhbGxpbmcgdGhlIGZ1bmN0aW9uIHNvIHRoZXkg
ZG8gbm90IHByb3BhZ2F0ZSB0byBqYXZhc2NyaXB0IGNvZGUgdGhhdCBjYXVzZWQgdGhlIGV2ZW50
IHRvIGZpcmUuCi0gICAgICAgIHY4OjpUcnlDYXRjaCB0cnlDYXRjaDsKLSAgICAgICAgdHJ5Q2F0
Y2guU2V0VmVyYm9zZSh0cnVlKTsKLQotICAgICAgICAvLyBDYWxsIHRoZSBmdW5jdGlvbi4KLSAg
ICAgICAgaWYgKCFsaXN0ZW5lci5Jc0VtcHR5KCkgJiYgbGlzdGVuZXItPklzRnVuY3Rpb24oKSkg
ewotICAgICAgICAgICAgdjg6OkxvY2FsPHY4OjpGdW5jdGlvbj4gY2FsbEZ1bmN0aW9uID0gdjg6
OkxvY2FsPHY4OjpGdW5jdGlvbj46OkNhc3QobGlzdGVuZXIpOwotICAgICAgICAgICAgdjg6Okxv
Y2FsPHY4OjpPYmplY3Q+IHRoaXNWYWx1ZSA9IHY4OjpDb250ZXh0OjpHZXRDdXJyZW50KCktPkds
b2JhbCgpOwotCi0gICAgICAgICAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gcGFyYW1ldGVyc1sz
XSA9IHsgdjhTdHJpbmcobWVzc2FnZSksIHY4U3RyaW5nKHVybCksIHY4OjpJbnRlZ2VyOjpOZXco
bGluZU51bWJlcikgfTsKLSAgICAgICAgICAgIHJldHVyblZhbHVlID0gY2FsbEZ1bmN0aW9uLT5D
YWxsKHRoaXNWYWx1ZSwgMywgcGFyYW1ldGVycyk7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBJ
ZiBhbiBlcnJvciBvY2N1cnMgd2hpbGUgaGFuZGxpbmcgdGhlIHNjcmlwdCBlcnJvciwgaXQgc2hv
dWxkIGJlIGJ1YmJsZWQgdXAuCi0gICAgICAgIGlmICh0cnlDYXRjaC5IYXNDYXVnaHQoKSkgewot
ICAgICAgICAgICAgdHJ5Q2F0Y2guUmVzZXQoKTsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICAgICAgfQotICAgIH0KLQotICAgIC8vIElmIHRoZSBmdW5jdGlvbiByZXR1cm5zIGZhbHNl
LCB0aGVuIHRoZSBlcnJvciBpcyBoYW5kbGVkLiBPdGhlcndpc2UsIHRoZSBlcnJvciBpcyBub3Qg
aGFuZGxlZC4KLSAgICBib29sIGVycm9ySGFuZGxlZCA9IHJldHVyblZhbHVlLT5Jc0Jvb2xlYW4o
KSAmJiAhcmV0dXJuVmFsdWUtPkJvb2xlYW5WYWx1ZSgpOwotCi0gICAgcmV0dXJuIGVycm9ySGFu
ZGxlZDsKLX0KLQogdjg6OkxvY2FsPHY4OjpWYWx1ZT4gVjhXb3JrZXJDb250ZXh0RXZlbnRMaXN0
ZW5lcjo6Y2FsbExpc3RlbmVyRnVuY3Rpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4
dCwgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGpzRXZlbnQsIEV2ZW50KiBldmVudCkKIHsKICAgICB2
ODo6TG9jYWw8djg6OkZ1bmN0aW9uPiBoYW5kbGVyRnVuY3Rpb24gPSBnZXRMaXN0ZW5lckZ1bmN0
aW9uKGNvbnRleHQpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFdvcmtlckNv
bnRleHRFdmVudExpc3RlbmVyLmggYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4V29ya2VyQ29udGV4
dEV2ZW50TGlzdGVuZXIuaAppbmRleCA0NDg3NDk3Li4xZDBiZmM4IDEwMDY0NAotLS0gYS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L1Y4V29ya2VyQ29udGV4dEV2ZW50TGlzdGVuZXIuaAorKysgYi9XZWJD
b3JlL2JpbmRpbmdzL3Y4L1Y4V29ya2VyQ29udGV4dEV2ZW50TGlzdGVuZXIuaApAQCAtNTAsMTEg
KzUwLDExIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgfQogCiAgICAgICAgIHZpcnR1
YWwgdm9pZCBoYW5kbGVFdmVudChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgRXZlbnQqKTsKLSAg
ICAgICAgdmlydHVhbCBib29sIHJlcG9ydEVycm9yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBj
b25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgdXJsLCBpbnQgbGluZU51bWJlcik7
CiAKLSAgICBwcml2YXRlOgorICAgIHByb3RlY3RlZDoKICAgICAgICAgVjhXb3JrZXJDb250ZXh0
RXZlbnRMaXN0ZW5lcih2ODo6TG9jYWw8djg6Ok9iamVjdD4gbGlzdGVuZXIsIGJvb2wgaXNJbmxp
bmUsIGNvbnN0IFdvcmxkQ29udGV4dEhhbmRsZSYgd29ybGRDb250ZXh0KTsKIAorICAgIHByaXZh
dGU6CiAgICAgICAgIHZpcnR1YWwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gY2FsbExpc3RlbmVyRnVu
Y3Rpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBqc0V2
ZW50LCBFdmVudCopOwogICAgICAgICB2ODo6TG9jYWw8djg6Ok9iamVjdD4gZ2V0UmVjZWl2ZXJP
YmplY3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEV2ZW50Kik7CiAgICAgfTsKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvZG9tL0V2ZW50TGlzdGVuZXIuaCBiL1dlYkNvcmUvZG9tL0V2ZW50TGlzdGVu
ZXIuaAppbmRleCA4YTM1OTIyLi5kN2M5NTBmIDEwMDY0NAotLS0gYS9XZWJDb3JlL2RvbS9FdmVu
dExpc3RlbmVyLmgKKysrIGIvV2ViQ29yZS9kb20vRXZlbnRMaXN0ZW5lci5oCkBAIC00Niw4ICs0
Niw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCB+RXZlbnRMaXN0ZW5l
cigpIHsgfQogICAgICAgICB2aXJ0dWFsIGJvb2wgb3BlcmF0b3I9PShjb25zdCBFdmVudExpc3Rl
bmVyJikgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlRXZlbnQoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCosIEV2ZW50KikgPSAwOwotICAgICAgICAvLyBSZXR1cm4gdHJ1ZSB0byBpbmRp
Y2F0ZSB0aGF0IHRoZSBlcnJvciBpcyBoYW5kbGVkLgotICAgICAgICB2aXJ0dWFsIGJvb2wgcmVw
b3J0RXJyb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYgLyptZXNzYWdl
Ki8sIGNvbnN0IFN0cmluZyYgLyp1cmwqLywgaW50IC8qbGluZU51bWJlciovKSB7IHJldHVybiBm
YWxzZTsgfQogICAgICAgICB2aXJ0dWFsIGJvb2wgd2FzQ3JlYXRlZEZyb21NYXJrdXAoKSBjb25z
dCB7IHJldHVybiBmYWxzZTsgfQogCiAjaWYgVVNFKEpTQykKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
d29ya2Vycy9Xb3JrZXJDb250ZXh0LmNwcCBiL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0
LmNwcAppbmRleCA3YjRmMjkzLi4xYTg2MTI3IDEwMDY0NAotLS0gYS9XZWJDb3JlL3dvcmtlcnMv
V29ya2VyQ29udGV4dC5jcHAKKysrIGIvV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRleHQuY3Bw
CkBAIC0zMiw5ICszMiwxMCBAQAogI2luY2x1ZGUgIldvcmtlckNvbnRleHQuaCIKIAogI2luY2x1
ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgotI2luY2x1ZGUgIkRhdGFiYXNlLmgiCiAjaW5jbHVkZSAi
RE9NVGltZXIuaCIKICNpbmNsdWRlICJET01XaW5kb3cuaCIKKyNpbmNsdWRlICJEYXRhYmFzZS5o
IgorI2luY2x1ZGUgIkVycm9yRXZlbnQuaCIKICNpbmNsdWRlICJFdmVudC5oIgogI2luY2x1ZGUg
IkV2ZW50RXhjZXB0aW9uLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVBvcnQuaCIKQEAgLTY0LDYgKzY1
LDcgQEAgV29ya2VyQ29udGV4dDo6V29ya2VyQ29udGV4dChjb25zdCBLVVJMJiB1cmwsIGNvbnN0
IFN0cmluZyYgdXNlckFnZW50LCBXb3JrZXJUaHIKICAgICAsIG1fc2NyaXB0KG5ldyBXb3JrZXJT
Y3JpcHRDb250cm9sbGVyKHRoaXMpKQogICAgICwgbV90aHJlYWQodGhyZWFkKQogICAgICwgbV9j
bG9zaW5nKGZhbHNlKQorICAgICwgbV9yZXBvcnRpbmdFeGNlcHRpb24oZmFsc2UpCiB7CiAgICAg
c2V0U2VjdXJpdHlPcmlnaW4oU2VjdXJpdHlPcmlnaW46OmNyZWF0ZSh1cmwpKTsKIH0KQEAgLTIz
NCw5ICsyMzYsMTUgQEAgdm9pZCBXb3JrZXJDb250ZXh0OjppbXBvcnRTY3JpcHRzKGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiB1cmxzLCBjb25zdCBTdHJpbmcmIGNhbGwKIHZvaWQgV29ya2VyQ29udGV4
dDo6cmVwb3J0RXhjZXB0aW9uKGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlLCBpbnQgbGluZU51
bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpCiB7CiAgICAgYm9vbCBlcnJvckhhbmRsZWQg
PSBmYWxzZTsKLSAgICBpZiAob25lcnJvcigpKQotICAgICAgICBlcnJvckhhbmRsZWQgPSBvbmVy
cm9yKCktPnJlcG9ydEVycm9yKHRoaXMsIGVycm9yTWVzc2FnZSwgc291cmNlVVJMLCBsaW5lTnVt
YmVyKTsKLQorICAgIGlmICghbV9yZXBvcnRpbmdFeGNlcHRpb24pIHsKKyAgICAgICAgaWYgKG9u
ZXJyb3IoKSkgeworICAgICAgICAgICAgbV9yZXBvcnRpbmdFeGNlcHRpb24gPSB0cnVlOworICAg
ICAgICAgICAgUmVmUHRyPEVycm9yRXZlbnQ+IGVycm9yRXZlbnQoRXJyb3JFdmVudDo6Y3JlYXRl
KGVycm9yTWVzc2FnZSwgc291cmNlVVJMLCBsaW5lTnVtYmVyKSk7CisgICAgICAgICAgICBvbmVy
cm9yKCktPmhhbmRsZUV2ZW50KHRoaXMsIGVycm9yRXZlbnQuZ2V0KCkpOworICAgICAgICAgICAg
ZXJyb3JIYW5kbGVkID0gZXJyb3JFdmVudC0+ZGVmYXVsdFByZXZlbnRlZCgpOworICAgICAgICAg
ICAgbV9yZXBvcnRpbmdFeGNlcHRpb24gPSBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KICAgICBp
ZiAoIWVycm9ySGFuZGxlZCkKICAgICAgICAgdGhyZWFkKCktPndvcmtlclJlcG9ydGluZ1Byb3h5
KCkucG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0KGVycm9yTWVzc2FnZSwgbGluZU51bWJlciwg
c291cmNlVVJMKTsKIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0
LmggYi9XZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29udGV4dC5oCmluZGV4IGZiNGEyNmQuLjFlNjZh
NjUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0LmgKKysrIGIvV2Vi
Q29yZS93b3JrZXJzL1dvcmtlckNvbnRleHQuaApAQCAtMTU0LDYgKzE1NCw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICAgICAgbXV0YWJsZSBSZWZQdHI8Tm90aWZpY2F0aW9uQ2VudGVyPiBt
X25vdGlmaWNhdGlvbnM7CiAjZW5kaWYKICAgICAgICAgYm9vbCBtX2Nsb3Npbmc7CisgICAgICAg
IGJvb2wgbV9yZXBvcnRpbmdFeGNlcHRpb247CiAgICAgICAgIEV2ZW50VGFyZ2V0RGF0YSBtX2V2
ZW50VGFyZ2V0RGF0YTsKICAgICB9OwogCg==
</data>
<flag name="review"
          id="36029"
          type_id="1"
          status="-"
          setter="eric"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>52616</attachid>
            <date>2010-04-06 01:40:48 -0700</date>
            <delta_ts>2010-04-06 02:20:27 -0700</delta_ts>
            <desc>patch</desc>
            <filename>worker-error-handler.patch</filename>
            <type>text/plain</type>
            <size>40438</size>
            <attacher name="Yury Semikhatsky">yurys</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBjYzVmYTljLi5jZTI4N2YwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTAtMDQt
MDYgIFl1cnkgU2VtaWtoYXRza3kgIDx5dXJ5c0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgUGF2ZWwgRmVsZG1hbi4KKworICAgICAgICBUZXN0IHRoYXQgZXhjZXB0aW9uIHdo
aWNoIG9jY3VycyBpbiBvbmVycm9yIGhhbmRsZXIgaXMgcmVwb3J0ZWQgdG8gdGhlIFdvcmtlciBv
YmplY3QuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTM2Mzc1CisKKyAgICAgICAgKiBmYXN0L3dvcmtlcnMvd29ya2VyLXNjcmlwdC1lcnJvci1leHBl
Y3RlZC50eHQ6CisgICAgICAgICogZmFzdC93b3JrZXJzL3dvcmtlci1zY3JpcHQtZXJyb3IuaHRt
bDoKKwogMjAxMC0wNC0wNSAgRGltaXRyaSBHbGF6a292ICA8ZGdsYXprb3ZAY2hyb21pdW0ub3Jn
PgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9mYXN0L3dvcmtlcnMvd29ya2VyLXNjcmlwdC1lcnJvci1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9mYXN0L3dvcmtlcnMvd29ya2VyLXNjcmlwdC1lcnJvci1leHBlY3RlZC50eHQKaW5k
ZXggZDUzNWU3ZC4uMTBhYjA0OSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC93b3JrZXJz
L3dvcmtlci1zY3JpcHQtZXJyb3ItZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2Zhc3Qv
d29ya2Vycy93b3JrZXItc2NyaXB0LWVycm9yLWV4cGVjdGVkLnR4dApAQCAtNCw2ICs0LDcgQEAg
VGVzdCBXb3JrZXIgc2NyaXB0IGVycm9yIGhhbmRsaW5nIGZ1bmN0aW9uYWxpdHkuIFNob3VsZCBw
cmludCBhIHNlcmllcyBvZiBQQVNTIG0KIFBBU1M6IG9uZXJyb3IgaW52b2tlZCBmb3IgYSBzY3Jp
cHQgdGhhdCBoYXMgaW52YWxpZCBzeW50YXguCiBQQVNTOiBvbmVycm9yIGludm9rZWQgZm9yIGEg
c2NyaXB0IHRoYXQgaGFzIHNjcmlwdCBlcnJvciAnUmVmZXJlbmNlRXJyb3I6IENhbid0IGZpbmQg
dmFyaWFibGU6IGZvbycgYXQgbGluZSAxLgogUEFTUzogZXZlbnQgbGlzdGVuZXIgaW52b2tlZCBm
b3IgYSBzY3JpcHQgdGhhdCBoYXMgc2NyaXB0IGVycm9yICdSZWZlcmVuY2VFcnJvcjogQ2FuJ3Qg
ZmluZCB2YXJpYWJsZTogZm9vJyBhdCBsaW5lIDEuCitQQVNTOiBvbmVycm9yIGludm9rZWQgZm9y
IGEgc2NyaXB0IHRoYXQgaGFzIHNjcmlwdCBlcnJvciAnUmVmZXJlbmNlRXJyb3I6IENhbid0IGZp
bmQgdmFyaWFibGU6IGJhcicgYXQgbGluZSAzLgogUEFTUzogb25lcnJvciBpbnZva2VkIGZvciBh
IHNjcmlwdCB0aGF0IGhhcyBzY3JpcHQgZXJyb3IgJ1JlZmVyZW5jZUVycm9yOiBDYW4ndCBmaW5k
IHZhcmlhYmxlOiBmb28nIGF0IGxpbmUgNy4KIFBBU1M6IG9uZXJyb3IgaW52b2tlZCBmb3IgYSBz
Y3JpcHQgdGhhdCBoYXMgc2NyaXB0IGVycm9yICdSZWZlcmVuY2VFcnJvcjogQ2FuJ3QgZmluZCB2
YXJpYWJsZTogZm9vJyBhdCBsaW5lIDcuCiBQQVNTOiBvbmVycm9yIGludm9rZWQgZm9yIGEgc2Ny
aXB0IHRoYXQgaGFzIHNjcmlwdCBlcnJvciAnUmVmZXJlbmNlRXJyb3I6IENhbid0IGZpbmQgdmFy
aWFibGU6IGZvbycgYXQgbGluZSA3LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC93b3Jr
ZXJzL3dvcmtlci1zY3JpcHQtZXJyb3IuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy93
b3JrZXItc2NyaXB0LWVycm9yLmh0bWwKaW5kZXggYWQ5NmY3Ni4uMmJhMmVhYiAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvZmFzdC93b3JrZXJzL3dvcmtlci1zY3JpcHQtZXJyb3IuaHRtbAorKysg
Yi9MYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvd29ya2VyLXNjcmlwdC1lcnJvci5odG1sCkBAIC04
MSw5ICs4MSwxMyBAQCBmdW5jdGlvbiB0ZXN0RXJyb3JJbkhhbmRsaW5nU2NyaXB0RXJyb3IoKQog
ewogICAgIHRyeSB7CiAgICAgICAgIHZhciB3b3JrZXIgPSBuZXcgV29ya2VyKCJyZXNvdXJjZXMv
d29ya2VyLWVycm9yLWluLWhhbmRsaW5nLXNjcmlwdC1lcnJvci5qcyIpOworICAgICAgICB2YXIg
ZXJyb3JDb3VudCA9IDA7CiAgICAgICAgIHdvcmtlci5vbmVycm9yID0gZnVuY3Rpb24oZXZ0KSB7
CiAgICAgICAgICAgICBsb2coIlBBU1M6IG9uZXJyb3IgaW52b2tlZCBmb3IgYSBzY3JpcHQgdGhh
dCBoYXMgc2NyaXB0IGVycm9yICciICsgZXZ0Lm1lc3NhZ2UgKyAiJyBhdCBsaW5lICIgKyBldnQu
bGluZW5vICsgIi4iKTsKLSAgICAgICAgICAgIHJ1bk5leHRUZXN0KCk7CisgICAgICAgICAgICAr
K2Vycm9yQ291bnQ7CisgICAgICAgICAgICAvLyBTZWNvbmQgZXJyb3IgaGFwcGVucyBpbiB0aGUg
b25lcnJvciBoYW5kbGVyLiBSdW4gbmV4dCB0ZXN0IG9ubHkgd2hlbiBpdCdzIHJlcG9ydGVkLgor
ICAgICAgICAgICAgaWYgKGVycm9yQ291bnQgPT0gMikKKyAgICAgICAgICAgICAgICBydW5OZXh0
VGVzdCgpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAgfSBjYXRj
aCAoZXgpIHsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvQW5kcm9pZC5qc2NiaW5kaW5ncy5tayBiL1dl
YkNvcmUvQW5kcm9pZC5qc2NiaW5kaW5ncy5tawppbmRleCBlNTY0MTBhLi4zZDkxNTQ3IDEwMDY0
NAotLS0gYS9XZWJDb3JlL0FuZHJvaWQuanNjYmluZGluZ3MubWsKKysrIGIvV2ViQ29yZS9BbmRy
b2lkLmpzY2JpbmRpbmdzLm1rCkBAIC0xNTcsNiArMTU3LDcgQEAgTE9DQUxfU1JDX0ZJTEVTICs9
IFwKIAliaW5kaW5ncy9qcy9KU1dvcmtlckNvbnN0cnVjdG9yLmNwcCBcCiAJYmluZGluZ3MvanMv
SlNXb3JrZXJDb250ZXh0QmFzZS5jcHAgXAogCWJpbmRpbmdzL2pzL0pTV29ya2VyQ29udGV4dEN1
c3RvbS5jcHAgXAorCWJpbmRpbmdzL2pzL0pTV29ya2VyQ29udGV4dEVycm9ySGFuZGxlci5jcHAg
XAogCWJpbmRpbmdzL2pzL0pTV29ya2VyQ3VzdG9tLmNwcCBcCiAJYmluZGluZ3MvanMvSlNYTUxI
dHRwUmVxdWVzdENvbnN0cnVjdG9yLmNwcCBcCiAJYmluZGluZ3MvanMvSlNYTUxIdHRwUmVxdWVz
dEN1c3RvbS5jcHAgXApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBjMzE0ZTI5Li43NDI3MzQ2IDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5n
ZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUzIEBACisyMDEwLTA0LTA2
ICBZdXJ5IFNlbWlraGF0c2t5ICA8eXVyeXNAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmll
d2VkIGJ5IFBhdmVsIEZlbGRtYW4uCisKKyAgICAgICAgUmVmYWN0b3JlZCBlcnJvciByZXBvcnRp
bmcgbWVjaGFuaXptIG9uIFdvcmtlciBHbG9iYWwgT2JqZWN0cy4KKyAgICAgICAgVW5saWtlIG90
aGVyIGV2ZW50IGxpc3RlbmVycyB3aGljaCBhY2NlcHQgc2luZ2xlIGFyZ3VtZW50KEV2ZW50KQor
ICAgICAgICBvbmVycm9yIGhhbmRsZXIgb24gd29ya2VyIGdsb2JhbCBvYmplY3Qgc2hvdWxkIGJl
IGEgZnVuY3Rpb24KKyAgICAgICAgYWNjZXB0aW5nIHRocmVlIGFyZ3VtZW50cy4gVGhpcyBlcnJv
ciByZXBvcnRpbmcgd2FzIGltcGxlbWVudGVkYXMKKyAgICAgICAgRXZlbnRMaXN0ZW5lcjo6cmVw
b3J0RXJyb3IgbWV0aG9kIHdoaWNoIGhhZCBjdXN0b20gaW1wbGVtZW50YXRpb25zCisgICAgICAg
IGZvciB2OCBhbmQgSlNDLiBUaGlzIHBhdGNoIHJlbW92ZXMgRXZlbnRMaXN0ZW5lcjo6cmVwb3J0
RXJyb3IgYW5kCisgICAgICAgIG1vdmVzIGl0cyBmdW5jdGlvbmFsaXR5IGludG8gY3VzdG9tIGJp
bmRpbmdzKFY4V29ya2VyQ29udGV4dEVycm9ySGFuZGxlcgorICAgICAgICBhbmQgSlNXb3JrZXJD
b250ZXh0RXJyb3JIYW5kbGVyKSB0aGF0IGltcGxlbWVudCBFdmVudExpc3RlbmVyIGluZXJmYWNl
CisgICAgICAgIGZvciB0aGUgb25lcnJvciBoYW5kbGVyLgorCisgICAgICAgIFRoaXMgcGF0Y2gg
YWxzbyBtYWtlcyB1bmNhdWdodCBleGNlcHRpb25zIHRoYXQgaGFwcGVuIGluIHRoZSBvbmVycm9y
CisgICAgICAgIGxpc3RlbmVyIGJlIHJlcG9ydGVkIHRvIHRoZSBXb3JrZXIncyBvbmVycm9yIGhh
bmRsZXIuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTM2Mzc1CisKKyAgICAgICAgKiBBbmRyb2lkLmpzY2JpbmRpbmdzLm1rOgorICAgICAgICAqIEdO
VW1ha2VmaWxlLmFtOgorICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBXZWJDb3Jl
LnBybzoKKyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajoKKyAgICAgICAg
KiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYmluZGluZ3Mv
anMvSlNCaW5kaW5nc0FsbEluT25lLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0V2ZW50
TGlzdGVuZXIuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5oOgor
ICAgICAgICAqIGJpbmRpbmdzL2pzL0pTV29ya2VyQ29udGV4dEVycm9ySGFuZGxlci5jcHA6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZTo6SlNXb3JrZXJDb250ZXh0RXJyb3JIYW5kbGVyOjpKU1dv
cmtlckNvbnRleHRFcnJvckhhbmRsZXIpOgorICAgICAgICAoV2ViQ29yZTo6SlNXb3JrZXJDb250
ZXh0RXJyb3JIYW5kbGVyOjp+SlNXb3JrZXJDb250ZXh0RXJyb3JIYW5kbGVyKToKKyAgICAgICAg
KFdlYkNvcmU6OkpTV29ya2VyQ29udGV4dEVycm9ySGFuZGxlcjo6aGFuZGxlRXZlbnQpOgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL0pTV29ya2VyQ29udGV4dEVycm9ySGFuZGxlci5oOiBBZGRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkpTV29ya2VyQ29udGV4dEVycm9ySGFuZGxlcjo6Y3JlYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUpTV29ya2VyQ29udGV4dEVycm9ySGFuZGxlcik6Cisg
ICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG06CisgICAgICAgICog
YmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG06CisgICAgICAgICogYmluZGluZ3Mv
djgvVjhXb3JrZXJDb250ZXh0RXJyb3JIYW5kbGVyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJD
b3JlOjpWOFdvcmtlckNvbnRleHRFcnJvckhhbmRsZXI6OlY4V29ya2VyQ29udGV4dEVycm9ySGFu
ZGxlcik6CisgICAgICAgIChXZWJDb3JlOjpWOFdvcmtlckNvbnRleHRFcnJvckhhbmRsZXI6OmNh
bGxMaXN0ZW5lckZ1bmN0aW9uKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOFdvcmtlckNvbnRl
eHRFcnJvckhhbmRsZXIuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpWOFdvcmtlckNvbnRl
eHRFcnJvckhhbmRsZXI6OmNyZWF0ZSk6CisgICAgICAgICogYmluZGluZ3MvdjgvVjhXb3JrZXJD
b250ZXh0RXZlbnRMaXN0ZW5lci5jcHA6CisgICAgICAgICogYmluZGluZ3MvdjgvVjhXb3JrZXJD
b250ZXh0RXZlbnRMaXN0ZW5lci5oOgorICAgICAgICAqIGRvbS9FdmVudExpc3RlbmVyLmg6Cisg
ICAgICAgICogd29ya2Vycy9Xb3JrZXJDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldv
cmtlckNvbnRleHQ6OldvcmtlckNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyQ29u
dGV4dDo6cmVwb3J0RXhjZXB0aW9uKToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckNvbnRleHQu
aDoKKwogMjAxMC0wNC0wNSAgRXJpYyBVaHJoYW5lICA8ZXJpY3VAY2hyb21pdW0ub3JnPgogCiAg
ICAgICAgIFJldmlld2VkIGJ5IEJyYWR5IEVpZHNvbi4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvR05V
bWFrZWZpbGUuYW0gYi9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCmluZGV4IGQ2NzkzZWEuLjJmYzVm
OGMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KKysrIGIvV2ViQ29yZS9HTlVt
YWtlZmlsZS5hbQpAQCAtNDczLDYgKzQ3Myw4IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU1dlYktpdENTU01hdHJpeENvbnN0cnVjdG9yLmggXAogCVdlYkNv
cmUvYmluZGluZ3MvanMvSlNXZWJLaXRQb2ludENvbnN0cnVjdG9yLmNwcCBcCiAJV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU1dlYktpdFBvaW50Q29uc3RydWN0b3IuaCBcCisJV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU1dvcmtlckNvbnRleHRFcnJvckhhbmRsZXIuY3BwIFwKKwlXZWJDb3JlL2JpbmRpbmdz
L2pzL0pTV29ya2VyQ29udGV4dEVycm9ySGFuZGxlci5oIFwKIAlXZWJDb3JlL2JpbmRpbmdzL2pz
L0pTWE1MSHR0cFJlcXVlc3RDb25zdHJ1Y3Rvci5jcHAgXAogCVdlYkNvcmUvYmluZGluZ3MvanMv
SlNYTUxIdHRwUmVxdWVzdENvbnN0cnVjdG9yLmggXAogCVdlYkNvcmUvYmluZGluZ3MvanMvSlNY
TUxIdHRwUmVxdWVzdEN1c3RvbS5jcHAgXApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLmd5
cGkgYi9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCBlNmQ0MjZhLi41YmNkNTJiIDEwMDY0NAot
LS0gYS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAt
NjI0LDYgKzYyNCw4IEBACiAgICAgICAgICAgICAnYmluZGluZ3MvanMvSlNXb3JrZXJDb250ZXh0
QmFzZS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTV29ya2VyQ29udGV4dEJhc2Uu
aCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvanMvSlNXb3JrZXJDb250ZXh0Q3VzdG9tLmNwcCcs
CisgICAgICAgICAgICAnYmluZGluZ3MvanMvSlNXb3JrZXJDb250ZXh0RXJyb3JIYW5kbGVyLmNw
cCcsCisgICAgICAgICAgICAnYmluZGluZ3MvanMvSlNXb3JrZXJDb250ZXh0RXJyb3JIYW5kbGVy
LmgnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTV29ya2VyQ3VzdG9tLmNwcCcsCiAgICAg
ICAgICAgICAnYmluZGluZ3MvanMvSlNYTUxIdHRwUmVxdWVzdENvbnN0cnVjdG9yLmNwcCcsCiAg
ICAgICAgICAgICAnYmluZGluZ3MvanMvSlNYTUxIdHRwUmVxdWVzdENvbnN0cnVjdG9yLmgnLApA
QCAtODg2LDYgKzg4OCw4IEBACiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvVjhTVkdQT0RUeXBl
V3JhcHBlci5oJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9WOFV0aWxpdGllcy5jcHAnLAog
ICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L1Y4VXRpbGl0aWVzLmgnLAorICAgICAgICAgICAgJ2Jp
bmRpbmdzL3Y4L1Y4V29ya2VyQ29udGV4dEVycm9ySGFuZGxlci5jcHAnLAorICAgICAgICAgICAg
J2JpbmRpbmdzL3Y4L1Y4V29ya2VyQ29udGV4dEVycm9ySGFuZGxlci5oJywKICAgICAgICAgICAg
ICdiaW5kaW5ncy92OC9WOFdvcmtlckNvbnRleHRFdmVudExpc3RlbmVyLmNwcCcsCiAgICAgICAg
ICAgICAnYmluZGluZ3MvdjgvVjhXb3JrZXJDb250ZXh0RXZlbnRMaXN0ZW5lci5oJywKICAgICAg
ICAgICAgICdiaW5kaW5ncy92OC9Xb3JrZXJDb250ZXh0RXhlY3V0aW9uUHJveHkuaCcsCmRpZmYg
LS1naXQgYS9XZWJDb3JlL1dlYkNvcmUucHJvIGIvV2ViQ29yZS9XZWJDb3JlLnBybwppbmRleCBk
M2FmZjkxLi5lMTVmMmIzIDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUucHJvCisrKyBiL1dl
YkNvcmUvV2ViQ29yZS5wcm8KQEAgLTM2Myw2ICszNjMsNyBAQCBTT1VSQ0VTICs9IFwKICAgICBi
aW5kaW5ncy9qcy9KU0xhenlFdmVudExpc3RlbmVyLmNwcCBcCiAgICAgYmluZGluZ3MvanMvSlNQ
bHVnaW5FbGVtZW50RnVuY3Rpb25zLmNwcCBcCiAgICAgYmluZGluZ3MvanMvSlNQb3BTdGF0ZUV2
ZW50Q3VzdG9tLmNwcCBcCisgICAgYmluZGluZ3MvanMvSlNXb3JrZXJDb250ZXh0RXJyb3JIYW5k
bGVyLmNwcCBcCiAgICAgYmluZGluZ3MvanMvSmF2YVNjcmlwdFByb2ZpbGUuaCBcCiAgICAgYmlu
ZGluZ3MvanMvSmF2YVNjcmlwdFByb2ZpbGVOb2RlLmggXAogICAgIGJpbmRpbmdzL2pzL0phdmFT
Y3JpcHRQcm9maWxlLmNwcCBcCkBAIC0xMDcxLDcgKzEwNzIsNyBAQCBIRUFERVJTICs9IFwKICAg
ICBiaW5kaW5ncy9qcy9KU1dlYktpdFBvaW50Q29uc3RydWN0b3IuaCBcCiAgICAgYmluZGluZ3Mv
anMvSlNXb3JrZXJDb25zdHJ1Y3Rvci5oIFwKICAgICBiaW5kaW5ncy9qcy9KU1dvcmtlckNvbnRl
eHRCYXNlLmggXAotICAgIGJpbmRpbmdzL2pzL0pTV29ya2VyQ29udGV4dEJhc2UuaCBcCisgICAg
YmluZGluZ3MvanMvSlNXb3JrZXJDb250ZXh0RXJyb3JIYW5kbGVyLmggXAogICAgIGJpbmRpbmdz
L2pzL0pTWE1MSHR0cFJlcXVlc3RDb25zdHJ1Y3Rvci5oIFwKICAgICBiaW5kaW5ncy9qcy9KU1hT
TFRQcm9jZXNzb3JDb25zdHJ1Y3Rvci5oIFwKICAgICBiaW5kaW5ncy9qcy9TY2hlZHVsZWRBY3Rp
b24uaCBcCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9q
IGIvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagppbmRleCA5MjUyNzZhLi44
YWMxZTcwIDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9q
CisrKyBiL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKQEAgLTQwMDY0LDYg
KzQwMDY0LDYxIEBACiAJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQogCQkJCTwvRmlsZT4NCiAJ
CQkJPEZpbGUNCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cYmluZGluZ3NcanNcSlNXb3JrZXJDb250
ZXh0RXJyb3JIYW5kbGVyLmNwcCIgPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJ
TmFtZT0iRGVidWd8V2luMzIiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJ
CQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJ
CQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRp
b24NCisJCQkJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxk
PSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGls
ZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPEZp
bGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iRGVidWdfSW50ZXJuYWx8V2luMzIiDQorCQkJ
CQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJ
CQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZp
Z3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJEZWJ1Z19D
YWlyb3xXaW4zMiINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQor
CQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0K
KwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJ
CQkJCU5hbWU9IlJlbGVhc2VfQ2Fpcm98V2luMzIiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9
InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxl
clRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8Rmls
ZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJEZWJ1Z19BbGx8V2luMzIiDQorCQkJCQkJRXhj
bHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5h
bWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRp
b24+DQorCQkJCTwvRmlsZT4NCisJCQkJPEZpbGUNCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cYmlu
ZGluZ3NcanNcSlNXb3JrZXJDb250ZXh0RXJyb3JIYW5kbGVyLmgiDQorCQkJCQk+DQorCQkJCTwv
RmlsZT4NCisJCQkJPEZpbGUNCiAJCQkJCVJlbGF0aXZlUGF0aD0iLi5cYmluZGluZ3NcanNcSlNY
TUxIdHRwUmVxdWVzdENvbnN0cnVjdG9yLmNwcCINCiAJCQkJCT4NCiAJCQkJCTxGaWxlQ29uZmln
dXJhdGlvbg0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qIGIvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXgg
MDI4YzZmYi4uYmUwMWZiOCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKKysrIGIvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKQEAgLTQ4OTMsNiArNDg5Myw4IEBACiAJCUYzNjQ0QUZGMTExOTgwNTkwMEUwRDUzNyAv
KiBJbmplY3RlZFNjcmlwdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBGMzY0NEFGRDExMTk4MDU5MDBFMEQ1MzcgLyogSW5qZWN0ZWRTY3JpcHQuY3Bw
ICovOyB9OwogCQlGMzY0NEIwMDExMTk4MDU5MDBFMEQ1MzcgLyogSW5qZWN0ZWRTY3JpcHQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEYzNjQ0QUZFMTEx
OTgwNTkwMEUwRDUzNyAvKiBJbmplY3RlZFNjcmlwdC5oICovOyB9OwogCQlGMzc1Q0MwNzExNTBE
MzAwMDA4RERCODEgLyogSW5zcGVjdG9yV29ya2VyUmVzb3VyY2UuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEYzNzVDQzA2MTE1MEQzMDAwMDhEREI4MSAv
KiBJbnNwZWN0b3JXb3JrZXJSZXNvdXJjZS5oICovOyB9OworCQlGM0Q0NjE0ODExNjFENTMyMDBD
QTBEMDkgLyogSlNXb3JrZXJDb250ZXh0RXJyb3JIYW5kbGVyLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEYzRDQ2MTQ2MTE2MUQ1MzIwMENBMEQwOSAv
KiBKU1dvcmtlckNvbnRleHRFcnJvckhhbmRsZXIuY3BwICovOyB9OworCQlGM0Q0NjE0OTExNjFE
NTMyMDBDQTBEMDkgLyogSlNXb3JrZXJDb250ZXh0RXJyb3JIYW5kbGVyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGM0Q0NjE0NzExNjFENTMyMDBDQTBE
MDkgLyogSlNXb3JrZXJDb250ZXh0RXJyb3JIYW5kbGVyLmggKi87IH07CiAJCUY0RUFGNEFFMTBD
NzQyQjEwMDkxMDBEMyAvKiBPcGVuVHlwZVNhbml0aXplci5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNEVBRjRBQzEwQzc0MkIxMDA5MTAwRDMgLyog
T3BlblR5cGVTYW5pdGl6ZXIuY3BwICovOyB9OwogCQlGNEVBRjRBRjEwQzc0MkIxMDA5MTAwRDMg
LyogT3BlblR5cGVTYW5pdGl6ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEY0RUFGNEFEMTBDNzQyQjEwMDkxMDBEMyAvKiBPcGVuVHlwZVNhbml0aXpl
ci5oICovOyB9OwogCQlGNUMwNDFEQTBGRkNBN0NFMDA4MzlENEEgLyogSFRNTERhdGFMaXN0RWxl
bWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBG
NUMwNDFENzBGRkNBN0NFMDA4MzlENEEgLyogSFRNTERhdGFMaXN0RWxlbWVudC5jcHAgKi87IH07
CkBAIC0xMDI2NCw2ICsxMDI2Niw4IEBACiAJCUYzNjQ0QUZEMTExOTgwNTkwMEUwRDUzNyAvKiBJ
bmplY3RlZFNjcmlwdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJ
bmplY3RlZFNjcmlwdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUYzNjQ0QUZF
MTExOTgwNTkwMEUwRDUzNyAvKiBJbmplY3RlZFNjcmlwdC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBJbmplY3RlZFNjcmlwdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlGMzc1Q0MwNjExNTBEMzAwMDA4RERCODEgLyogSW5zcGVjdG9yV29ya2VyUmVzb3VyY2Uu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5zcGVjdG9yV29ya2VyUmVzb3Vy
Y2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRjNENDYxNDYxMTYxRDUzMjAwQ0Ew
RDA5IC8qIEpTV29ya2VyQ29udGV4dEVycm9ySGFuZGxlci5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBKU1dvcmtlckNvbnRleHRFcnJvckhhbmRsZXIuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGM0Q0NjE0NzExNjFENTMyMDBDQTBEMDkgLyogSlNX
b3JrZXJDb250ZXh0RXJyb3JIYW5kbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEpTV29ya2VyQ29udGV4dEVycm9ySGFuZGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlGNEVBRjRBQzEwQzc0MkIxMDA5MTAwRDMgLyogT3BlblR5cGVTYW5pdGl6ZXIuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gT3BlblR5cGVTYW5pdGl6ZXIu
Y3BwOyBwYXRoID0gb3BlbnR5cGUvT3BlblR5cGVTYW5pdGl6ZXIuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlGNEVBRjRBRDEwQzc0MkIxMDA5MTAwRDMgLyogT3BlblR5cGVTYW5p
dGl6ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gT3BlblR5cGVTYW5pdGl6
ZXIuaDsgcGF0aCA9IG9wZW50eXBlL09wZW5UeXBlU2FuaXRpemVyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUY1MjNEMjNCMDJERTQzOTYwMTg2MzVDQSAvKiBIVE1MRG9jdW1lbnQu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRl
bnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gSFRNTERvY3VtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4
OyB1c2VzVGFicyA9IDA7IH07CkBAIC0xNDg1Myw2ICsxNDg1Nyw4IEBACiAJCQkJQjIxMTI3QTUw
QjMxODY3NzAwMDlCRTUzIC8qIEpTU1ZHUE9EVHlwZVdyYXBwZXIuaCAqLywKIAkJCQlFMUMzNkQz
MjBFQjBBMDk0MDA3NDEwQkMgLyogSlNXb3JrZXJDb250ZXh0QmFzZS5jcHAgKi8sCiAJCQkJRTFD
MzZEMzMwRUIwQTA5NDAwNzQxMEJDIC8qIEpTV29ya2VyQ29udGV4dEJhc2UuaCAqLywKKwkJCQlG
M0Q0NjE0NjExNjFENTMyMDBDQTBEMDkgLyogSlNXb3JrZXJDb250ZXh0RXJyb3JIYW5kbGVyLmNw
cCAqLywKKwkJCQlGM0Q0NjE0NzExNjFENTMyMDBDQTBEMDkgLyogSlNXb3JrZXJDb250ZXh0RXJy
b3JIYW5kbGVyLmggKi8sCiAJCQkJQkNBMzc4QkEwRDE1RjY0MjAwQjc5M0Q2IC8qIFNjaGVkdWxl
ZEFjdGlvbi5jcHAgKi8sCiAJCQkJQkNBMzc4QkIwRDE1RjY0MjAwQjc5M0Q2IC8qIFNjaGVkdWxl
ZEFjdGlvbi5oICovLAogCQkJCTdBMUU4OEYzMTAxQ0MzODQwMDBDNERGNSAvKiBTY3JpcHRBcnJh
eS5jcHAgKi8sCkBAIC0xNzk1NSw2ICsxNzk2MSw3IEBACiAJCQkJRTFDQTVDRDMwRThDREU4MDAw
RThFRjkwIC8qIEpTV29ya2VyQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUUxODI1
NjkwMEVGMkIwMkQwMDkzMzI0MiAvKiBKU1dvcmtlckNvbnRleHQuaCBpbiBIZWFkZXJzICovLAog
CQkJCUUxQzM2RDM1MEVCMEEwOTQwMDc0MTBCQyAvKiBKU1dvcmtlckNvbnRleHRCYXNlLmggaW4g
SGVhZGVycyAqLywKKwkJCQlGM0Q0NjE0OTExNjFENTMyMDBDQTBEMDkgLyogSlNXb3JrZXJDb250
ZXh0RXJyb3JIYW5kbGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMUMzNjJFRjBFQUYyQUE5MDA3
NDEwQkMgLyogSlNXb3JrZXJMb2NhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTEyNzFBNTgw
RUVFQ0RFNDAwRjYxMjEzIC8qIEpTV29ya2VyTmF2aWdhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlCQzM0OEJENDBEQjdGODA0MDA0QUJBQjkgLyogSlNYTUxIdHRwUmVxdWVzdC5oIGluIEhlYWRl
cnMgKi8sCkBAIC0yMDI3MCw2ICsyMDI3Nyw3IEBACiAJCQkJRTE4MjU2OEYwRUYyQjAyRDAwOTMz
MjQyIC8qIEpTV29ya2VyQ29udGV4dC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFMUMzNkQzNDBF
QjBBMDk0MDA3NDEwQkMgLyogSlNXb3JrZXJDb250ZXh0QmFzZS5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlFMTgyNThBQzBFRjNDRDcwMDA5MzMyNDIgLyogSlNXb3JrZXJDb250ZXh0Q3VzdG9tLmNw
cCBpbiBTb3VyY2VzICovLAorCQkJCUYzRDQ2MTQ4MTE2MUQ1MzIwMENBMEQwOSAvKiBKU1dvcmtl
ckNvbnRleHRFcnJvckhhbmRsZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTFDQTVDQkMwRThD
RENBRjAwRThFRjkwIC8qIEpTV29ya2VyQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUx
QzM2MkYwMEVBRjJBQTkwMDc0MTBCQyAvKiBKU1dvcmtlckxvY2F0aW9uLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUUxMjcxQTU5MEVFRUNERTQwMEY2MTIxMyAvKiBKU1dvcmtlck5hdmlnYXRvci5j
cHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvanMvSlNCaW5k
aW5nc0FsbEluT25lLmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvanMvSlNCaW5kaW5nc0FsbEluT25l
LmNwcAppbmRleCA1YTA4MjBiLi5hMWQ5YjE5IDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTQmluZGluZ3NBbGxJbk9uZS5jcHAKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0Jp
bmRpbmdzQWxsSW5PbmUuY3BwCkBAIC0xMjcsNiArMTI3LDcgQEAKICNpbmNsdWRlICJKU1dvcmtl
ckNvbnN0cnVjdG9yLmNwcCIKICNpbmNsdWRlICJKU1dvcmtlckNvbnRleHRCYXNlLmNwcCIKICNp
bmNsdWRlICJKU1dvcmtlckNvbnRleHRDdXN0b20uY3BwIgorI2luY2x1ZGUgIkpTV29ya2VyQ29u
dGV4dEVycm9ySGFuZGxlci5jcHAiCiAjaW5jbHVkZSAiSlNXb3JrZXJDdXN0b20uY3BwIgogI2lu
Y2x1ZGUgIkpTWE1MSHR0cFJlcXVlc3RDb25zdHJ1Y3Rvci5jcHAiCiAjaW5jbHVkZSAiSlNYTUxI
dHRwUmVxdWVzdEN1c3RvbS5jcHAiCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RXZlbnRMaXN0ZW5lci5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5j
cHAKaW5kZXggYmUwNDlkYi4uYjAwZDY1NCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0V2ZW50TGlzdGVuZXIuY3BwCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudExp
c3RlbmVyLmNwcApAQCAtMTMzLDQ3ICsxMzMsNiBAQCB2b2lkIEpTRXZlbnRMaXN0ZW5lcjo6aGFu
ZGxlRXZlbnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dAog
ICAgIH0KIH0KIAotYm9vbCBKU0V2ZW50TGlzdGVuZXI6OnJlcG9ydEVycm9yKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5n
JiB1cmwsIGludCBsaW5lTnVtYmVyKQotewotICAgIEpTTG9jayBsb2NrKFNpbGVuY2VBc3NlcnRp
b25zT25seSk7Ci0KLSAgICBKU09iamVjdCoganNGdW5jdGlvbiA9IHRoaXMtPmpzRnVuY3Rpb24o
Y29udGV4dCk7Ci0gICAgaWYgKCFqc0Z1bmN0aW9uKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0K
LSAgICBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gdG9KU0RPTUdsb2JhbE9iamVj
dChjb250ZXh0LCBtX2lzb2xhdGVkV29ybGQuZ2V0KCkpOwotICAgIEV4ZWNTdGF0ZSogZXhlYyA9
IGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpOwotCi0gICAgQ2FsbERhdGEgY2FsbERhdGE7Ci0g
ICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBqc0Z1bmN0aW9uLT5nZXRDYWxsRGF0YShjYWxsRGF0YSk7
Ci0KLSAgICBpZiAoY2FsbFR5cGUgPT0gQ2FsbFR5cGVOb25lKQotICAgICAgICByZXR1cm4gZmFs
c2U7Ci0KLSAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmdzOwotICAgIGFyZ3MuYXBwZW5kKGpz
U3RyaW5nKGV4ZWMsIG1lc3NhZ2UpKTsKLSAgICBhcmdzLmFwcGVuZChqc1N0cmluZyhleGVjLCB1
cmwpKTsKLSAgICBhcmdzLmFwcGVuZChqc051bWJlcihleGVjLCBsaW5lTnVtYmVyKSk7Ci0KLSAg
ICBKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEgPSBnbG9iYWxPYmplY3QtPmdsb2JhbERhdGEoKTsK
LSAgICBEeW5hbWljR2xvYmFsT2JqZWN0U2NvcGUgZ2xvYmFsT2JqZWN0U2NvcGUoZXhlYywgZ2xv
YmFsRGF0YS0+ZHluYW1pY0dsb2JhbE9iamVjdCA/IGdsb2JhbERhdGEtPmR5bmFtaWNHbG9iYWxP
YmplY3QgOiBnbG9iYWxPYmplY3QpOyAgICAKLQotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZ2xv
YmFsT2JqZWN0LT50b1RoaXNPYmplY3QoZXhlYyk7Ci0KLSAgICBnbG9iYWxEYXRhLT50aW1lb3V0
Q2hlY2tlci5zdGFydCgpOwotICAgIEpTVmFsdWUgcmV0dXJuVmFsdWUgPSBKU0M6OmNhbGwoZXhl
YywganNGdW5jdGlvbiwgY2FsbFR5cGUsIGNhbGxEYXRhLCB0aGlzVmFsdWUsIGFyZ3MpOwotICAg
IGdsb2JhbERhdGEtPnRpbWVvdXRDaGVja2VyLnN0b3AoKTsKLQotICAgIC8vIElmIGFuIGVycm9y
IG9jY3VycyB3aGlsZSBoYW5kbGluZyB0aGUgc2NyaXB0IGVycm9yLCBpdCBzaG91bGQgYmUgYnVi
YmxlZCB1cC4KLSAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpIHsKLSAgICAgICAgZXhlYy0+
Y2xlYXJFeGNlcHRpb24oKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICAKLSAg
ICBib29sIGJ1YmJsZUV2ZW50OwotICAgIHJldHVybiByZXR1cm5WYWx1ZS5nZXRCb29sZWFuKGJ1
YmJsZUV2ZW50KSAmJiAhYnViYmxlRXZlbnQ7Ci19Ci0KIGJvb2wgSlNFdmVudExpc3RlbmVyOjp2
aXJ0dWFsaXNBdHRyaWJ1dGUoKSBjb25zdAogewogICAgIHJldHVybiBtX2lzQXR0cmlidXRlOwpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50TGlzdGVuZXIuaCBiL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNFdmVudExpc3RlbmVyLmgKaW5kZXggNTY5YzE5Mi4uYjE1YzU4OSAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50TGlzdGVuZXIuaAorKysgYi9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5oCkBAIC02MCw3ICs2MCw2IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCB2b2lkIG1hcmtKU0Z1bmN0aW9uKEpT
Qzo6TWFya1N0YWNrJik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRlSlNGdW5jdGlv
bihKU0M6OkpTT2JqZWN0Kik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVFdmVudChTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiwgRXZlbnQqKTsKLSAgICAgICAgdmlydHVhbCBib29sIHJlcG9y
dEVycm9yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNv
bnN0IFN0cmluZyYgdXJsLCBpbnQgbGluZU51bWJlcik7CiAgICAgICAgIHZpcnR1YWwgYm9vbCB2
aXJ0dWFsaXNBdHRyaWJ1dGUoKSBjb25zdDsKIAogICAgIHByb3RlY3RlZDoKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJDb250ZXh0RXJyb3JIYW5kbGVyLmNwcCBiL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJDb250ZXh0RXJyb3JIYW5kbGVyLmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wM2RmOGYyCi0tLSAvZGV2L251bGwKKysrIGIv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckNvbnRleHRFcnJvckhhbmRsZXIuY3BwCkBAIC0w
LDAgKzEsMTExIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBt
ZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUg
b2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJT
IEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICog
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkpTV29ya2VyQ29udGV4
dEVycm9ySGFuZGxlci5oIgorCisjaW5jbHVkZSAiRXJyb3JFdmVudC5oIgorI2luY2x1ZGUgIkV2
ZW50LmgiCisjaW5jbHVkZSAiSlNFdmVudC5oIgorI2luY2x1ZGUgPHJ1bnRpbWUvSlNMb2NrLmg+
CisKK3VzaW5nIG5hbWVzcGFjZSBKU0M7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworSlNXb3Jr
ZXJDb250ZXh0RXJyb3JIYW5kbGVyOjpKU1dvcmtlckNvbnRleHRFcnJvckhhbmRsZXIoSlNPYmpl
Y3QqIGZ1bmN0aW9uLCBKU09iamVjdCogd3JhcHBlciwgYm9vbCBpc0F0dHJpYnV0ZSwgRE9NV3Jh
cHBlcldvcmxkKiBpc29sYXRlZFdvcmxkKQorICAgIDogSlNFdmVudExpc3RlbmVyKGZ1bmN0aW9u
LCB3cmFwcGVyLCBpc0F0dHJpYnV0ZSwgaXNvbGF0ZWRXb3JsZCkKK3sKK30KKworSlNXb3JrZXJD
b250ZXh0RXJyb3JIYW5kbGVyOjp+SlNXb3JrZXJDb250ZXh0RXJyb3JIYW5kbGVyKCkKK3sKK30K
Kwordm9pZCBKU1dvcmtlckNvbnRleHRFcnJvckhhbmRsZXI6OmhhbmRsZUV2ZW50KFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIEV2ZW50KiBldmVudCkKK3sK
KyAgICBBU1NFUlQoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7CisgICAgaWYgKCFzY3JpcHRFeGVj
dXRpb25Db250ZXh0KQorICAgICAgICByZXR1cm47CisKKyAgICBKU0xvY2sgbG9jayhTaWxlbmNl
QXNzZXJ0aW9uc09ubHkpOworCisgICAgSlNPYmplY3QqIGpzRnVuY3Rpb24gPSB0aGlzLT5qc0Z1
bmN0aW9uKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOworICAgIGlmICghanNGdW5jdGlvbikKKyAg
ICAgICAgcmV0dXJuOworCisgICAgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IHRv
SlNET01HbG9iYWxPYmplY3Qoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgaXNvbGF0ZWRXb3JsZCgp
KTsKKyAgICBpZiAoIWdsb2JhbE9iamVjdCkKKyAgICAgICAgcmV0dXJuOworCisgICAgRXhlY1N0
YXRlKiBleGVjID0gZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCk7CisKKyAgICBDYWxsRGF0YSBj
YWxsRGF0YTsKKyAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IGpzRnVuY3Rpb24tPmdldENhbGxEYXRh
KGNhbGxEYXRhKTsKKworICAgIGlmIChjYWxsVHlwZSAhPSBDYWxsVHlwZU5vbmUpIHsKKworICAg
ICAgICByZWYoKTsKKworICAgICAgICBFdmVudCogc2F2ZWRFdmVudCA9IGdsb2JhbE9iamVjdC0+
Y3VycmVudEV2ZW50KCk7CisgICAgICAgIGdsb2JhbE9iamVjdC0+c2V0Q3VycmVudEV2ZW50KGV2
ZW50KTsKKworICAgICAgICBBU1NFUlQoZXZlbnQtPmlzRXJyb3JFdmVudCgpKTsKKyAgICAgICAg
RXJyb3JFdmVudCogZXJyb3JFdmVudCA9IHN0YXRpY19jYXN0PEVycm9yRXZlbnQqPihldmVudCk7
CisKKyAgICAgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJnczsKKyAgICAgICAgYXJncy5hcHBl
bmQoanNTdHJpbmcoZXhlYywgZXJyb3JFdmVudC0+bWVzc2FnZSgpKSk7CisgICAgICAgIGFyZ3Mu
YXBwZW5kKGpzU3RyaW5nKGV4ZWMsIGVycm9yRXZlbnQtPmZpbGVuYW1lKCkpKTsKKyAgICAgICAg
YXJncy5hcHBlbmQoanNOdW1iZXIoZXhlYywgZXJyb3JFdmVudC0+bGluZW5vKCkpKTsKKworICAg
ICAgICBKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEgPSBnbG9iYWxPYmplY3QtPmdsb2JhbERhdGEo
KTsKKyAgICAgICAgRHluYW1pY0dsb2JhbE9iamVjdFNjb3BlIGdsb2JhbE9iamVjdFNjb3BlKGV4
ZWMsIGdsb2JhbERhdGEtPmR5bmFtaWNHbG9iYWxPYmplY3QgPyBnbG9iYWxEYXRhLT5keW5hbWlj
R2xvYmFsT2JqZWN0IDogZ2xvYmFsT2JqZWN0KTsgICAgCisKKyAgICAgICAgSlNWYWx1ZSB0aGlz
VmFsdWUgPSBnbG9iYWxPYmplY3QtPnRvVGhpc09iamVjdChleGVjKTsKKworICAgICAgICBnbG9i
YWxEYXRhLT50aW1lb3V0Q2hlY2tlci5zdGFydCgpOworICAgICAgICBKU1ZhbHVlIHJldHVyblZh
bHVlID0gSlNDOjpjYWxsKGV4ZWMsIGpzRnVuY3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0YSwgdGhp
c1ZhbHVlLCBhcmdzKTsKKyAgICAgICAgZ2xvYmFsRGF0YS0+dGltZW91dENoZWNrZXIuc3RvcCgp
OworCisgICAgICAgIGdsb2JhbE9iamVjdC0+c2V0Q3VycmVudEV2ZW50KHNhdmVkRXZlbnQpOwor
CisgICAgICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgICAgIHJlcG9ydEN1
cnJlbnRFeGNlcHRpb24oZXhlYyk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgYm9vbCBy
ZXR2YWxib29sOworICAgICAgICAgICAgaWYgKHJldHVyblZhbHVlLmdldEJvb2xlYW4ocmV0dmFs
Ym9vbCkgJiYgIXJldHZhbGJvb2wpCisgICAgICAgICAgICAgICAgZXZlbnQtPnByZXZlbnREZWZh
dWx0KCk7CisgICAgICAgIH0KKworICAgICAgICBkZXJlZigpOworICAgIH0KK30KKworfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtl
ckNvbnRleHRFcnJvckhhbmRsZXIuaCBiL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJDb250
ZXh0RXJyb3JIYW5kbGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTE4
ODI5OQotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJDb250
ZXh0RXJyb3JIYW5kbGVyLmgKQEAgLTAsMCArMSw2NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAg
ICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRz
CisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICog
TElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
CisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgSlNXb3JrZXJDb250ZXh0
RXJyb3JIYW5kbGVyX2gKKyNkZWZpbmUgSlNXb3JrZXJDb250ZXh0RXJyb3JIYW5kbGVyX2gKKwor
I2luY2x1ZGUgIkpTRXZlbnRMaXN0ZW5lci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2Ns
YXNzIEpTV29ya2VyQ29udGV4dEVycm9ySGFuZGxlciA6IHB1YmxpYyBKU0V2ZW50TGlzdGVuZXIg
eworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPEpTV29ya2VyQ29udGV4dEVycm9ySGFu
ZGxlcj4gY3JlYXRlKEpTQzo6SlNPYmplY3QqIGxpc3RlbmVyLCBKU0M6OkpTT2JqZWN0KiB3cmFw
cGVyLCBib29sIGlzQXR0cmlidXRlLCBET01XcmFwcGVyV29ybGQqIGlzb2xhdGVkV29ybGQpCisg
ICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEpTV29ya2VyQ29udGV4dEVycm9ySGFu
ZGxlcihsaXN0ZW5lciwgd3JhcHBlciwgaXNBdHRyaWJ1dGUsIGlzb2xhdGVkV29ybGQpKTsKKyAg
ICB9CisKKyAgICB2aXJ0dWFsIH5KU1dvcmtlckNvbnRleHRFcnJvckhhbmRsZXIoKTsKKworcHJp
dmF0ZToKKyAgICBKU1dvcmtlckNvbnRleHRFcnJvckhhbmRsZXIoSlNDOjpKU09iamVjdCogZnVu
Y3Rpb24sIEpTQzo6SlNPYmplY3QqIHdyYXBwZXIsIGJvb2wgaXNBdHRyaWJ1dGUsIERPTVdyYXBw
ZXJXb3JsZCogaXNvbGF0ZWRXb3JsZCk7CisgICAgdmlydHVhbCB2b2lkIGhhbmRsZUV2ZW50KFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBFdmVudCopOworfTsKKworLy8gQ3JlYXRlcyBhIEpTIEV2
ZW50TGlzdGVuZXIgZm9yICJvbmVycm9yIiBldmVudCBoYW5kbGVyIGluIHdvcmtlciBjb250ZXh0
LiBJdCBoYXMgY3VzdG9tIGltcGxlbWVudGF0aW9uIGJlY2F1c2UKKy8vIHVubGlrZSBvdGhlciBl
dmVudCBsaXN0ZW5lcnMgaXQgYWNjZXB0cyB0aHJlZSBwYXJhbWV0ZXJzLgoraW5saW5lIFBhc3NS
ZWZQdHI8SlNXb3JrZXJDb250ZXh0RXJyb3JIYW5kbGVyPiBjcmVhdGVKU1dvcmtlckNvbnRleHRF
cnJvckhhbmRsZXIoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTQzo6SlNWYWx1ZSBsaXN0ZW5lciwg
SlNDOjpKU09iamVjdCogd3JhcHBlcikKK3sKKyAgICBpZiAoIWxpc3RlbmVyLmlzT2JqZWN0KCkp
CisgICAgICAgIHJldHVybiAwOworCisgICAgcmV0dXJuIEpTV29ya2VyQ29udGV4dEVycm9ySGFu
ZGxlcjo6Y3JlYXRlKGFzT2JqZWN0KGxpc3RlbmVyKSwgd3JhcHBlciwgdHJ1ZSwgY3VycmVudFdv
cmxkKGV4ZWMpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gSlNX
b3JrZXJDb250ZXh0RXJyb3JIYW5kbGVyX2gKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0gYi9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29k
ZUdlbmVyYXRvckpTLnBtCmluZGV4IDFhZWQxMWQuLjgzZWFlZDQgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KKysrIGIvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQpAQCAtMTQ4NCw3ICsxNDg0LDEyIEBAIHN1
YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGlt
cGxJbmNsdWRlc3siSlNFdmVudExpc3RlbmVyLmgifSA9IDE7CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgVU5VU0VEX1BBUkFNKGV4ZWMpO1xuIik7
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgJGlt
cGxDbGFzc05hbWUqIGltcCA9IHN0YXRpY19jYXN0PCRpbXBsQ2xhc3NOYW1lKj4oc3RhdGljX2Nh
c3Q8JGNsYXNzTmFtZSo+KHRoaXNPYmplY3QpLT5pbXBsKCkpO1xuIik7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaW1wLT5zZXQkaW1wbFNldHRl
ckZ1bmN0aW9uTmFtZShjcmVhdGVKU0F0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXhlYywgdmFsdWUs
IHRoaXNPYmplY3QpKTtcbiIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkaW50
ZXJmYWNlTmFtZSBlcSAiV29ya2VyQ29udGV4dCIgYW5kICRuYW1lIGVxICJvbmVycm9yIikgewor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkaW1wbEluY2x1ZGVzeyJKU1dvcmtlckNv
bnRleHRFcnJvckhhbmRsZXIuaCJ9ID0gMTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaW1wLT5zZXQkaW1wbFNldHRlckZ1bmN0aW9uTmFt
ZShjcmVhdGVKU1dvcmtlckNvbnRleHRFcnJvckhhbmRsZXIoZXhlYywgdmFsdWUsIHRoaXNPYmpl
Y3QpKTtcbiIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGltcC0+c2V0
JGltcGxTZXR0ZXJGdW5jdGlvbk5hbWUoY3JlYXRlSlNBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGV4
ZWMsIHZhbHVlLCB0aGlzT2JqZWN0KSk7XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2lmICgkYXR0cmlidXRlLT5zaWduYXR1
cmUtPnR5cGUgPX4gL0NvbnN0cnVjdG9yJC8pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBteSAkY29uc3RydWN0b3JUeXBlID0gJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT50eXBlOwogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICRjb25zdHJ1Y3RvclR5cGUgPX4gcy9Db25zdHJ1Y3Rv
ciQvLzsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9y
VjgucG0gYi9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCmluZGV4
IDdjNzJkYjQuLmQxZTc3NGQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9D
b2RlR2VuZXJhdG9yVjgucG0KKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5l
cmF0b3JWOC5wbQpAQCAtOTExLDcgKzkxMSwxMyBAQCBFTkQKICAgICAgICAgfSBlbHNpZiAoJGF0
dHJpYnV0ZS0+c2lnbmF0dXJlLT50eXBlIGVxICJFdmVudExpc3RlbmVyIikgewogICAgICAgICAg
ICAgJGltcGxJbmNsdWRlc3siVjhBYnN0cmFjdEV2ZW50TGlzdGVuZXIuaCJ9ID0gMTsKICAgICAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsICIgICAgdHJhbnNmZXJIaWRkZW5EZXBlbmRl
bmN5KGluZm8uSG9sZGVyKCksIGltcC0+JGF0dHJOYW1lKCksIHZhbHVlLCBWOCR7aW50ZXJmYWNl
TmFtZX06OmV2ZW50TGlzdGVuZXJDYWNoZUluZGV4KTtcbiIpOwotICAgICAgICAgICAgcHVzaChA
aW1wbENvbnRlbnREZWNscywgIiAgICBpbXAtPnNldCRpbXBsU2V0dGVyRnVuY3Rpb25OYW1lKFY4
RE9NV3JhcHBlcjo6Z2V0RXZlbnRMaXN0ZW5lcih2YWx1ZSwgdHJ1ZSwgTGlzdGVuZXJGaW5kT3JD
cmVhdGUpIik7CisgICAgICAgICAgICBpZiAoJGludGVyZmFjZU5hbWUgZXEgIldvcmtlckNvbnRl
eHQiIGFuZCAkYXR0cmlidXRlLT5zaWduYXR1cmUtPm5hbWUgZXEgIm9uZXJyb3IiKSB7CisgICAg
ICAgICAgICAgICAgJGltcGxJbmNsdWRlc3siVjhFdmVudExpc3RlbmVyTGlzdC5oIn0gPSAxOwor
ICAgICAgICAgICAgICAgICRpbXBsSW5jbHVkZXN7IlY4V29ya2VyQ29udGV4dEVycm9ySGFuZGxl
ci5oIn0gPSAxOworICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsICIgICAg
aW1wLT5zZXQkaW1wbFNldHRlckZ1bmN0aW9uTmFtZShWOEV2ZW50TGlzdGVuZXJMaXN0OjpmaW5k
T3JDcmVhdGVXcmFwcGVyPFY4V29ya2VyQ29udGV4dEVycm9ySGFuZGxlcj4odmFsdWUsIHRydWUp
Iik7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250
ZW50RGVjbHMsICIgICAgaW1wLT5zZXQkaW1wbFNldHRlckZ1bmN0aW9uTmFtZShWOERPTVdyYXBw
ZXI6OmdldEV2ZW50TGlzdGVuZXIodmFsdWUsIHRydWUsIExpc3RlbmVyRmluZE9yQ3JlYXRlKSIp
OworICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnREZWNscywgIiAgICBpbXAtPnNldCRpbXBsU2V0dGVyRnVuY3Rpb25OYW1lKCRyZXN1
bHQiKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFdvcmtl
ckNvbnRleHRFcnJvckhhbmRsZXIuY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFdvcmtlckNv
bnRleHRFcnJvckhhbmRsZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu
LjVhNzVhNDAKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4V29ya2Vy
Q29udGV4dEVycm9ySGFuZGxlci5jcHAKQEAgLTAsMCArMSw2NiBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24u
CisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMg
b2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMi
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKworI2lmIEVOQUJMRShXT1JLRVJTKQorCisjaW5jbHVkZSAiVjhXb3JrZXJDb250ZXh0RXJy
b3JIYW5kbGVyLmgiCisKKyNpbmNsdWRlICJFcnJvckV2ZW50LmgiCisjaW5jbHVkZSAiVjhCaW5k
aW5nLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworVjhXb3JrZXJDb250ZXh0RXJyb3JIYW5k
bGVyOjpWOFdvcmtlckNvbnRleHRFcnJvckhhbmRsZXIodjg6OkxvY2FsPHY4OjpPYmplY3Q+IGxp
c3RlbmVyLCBib29sIGlzSW5saW5lLCBjb25zdCBXb3JsZENvbnRleHRIYW5kbGUmIHdvcmxkQ29u
dGV4dCkKKyAgICA6IFY4V29ya2VyQ29udGV4dEV2ZW50TGlzdGVuZXIobGlzdGVuZXIsIGlzSW5s
aW5lLCB3b3JsZENvbnRleHQpCit7Cit9CisKK3Y4OjpMb2NhbDx2ODo6VmFsdWU+IFY4V29ya2Vy
Q29udGV4dEVycm9ySGFuZGxlcjo6Y2FsbExpc3RlbmVyRnVuY3Rpb24oU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogY29udGV4dCwgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGpzRXZlbnQsIEV2ZW50KiBl
dmVudCkKK3sKKyAgICBBU1NFUlQoZXZlbnQtPmlzRXJyb3JFdmVudCgpKTsKKyAgICB2ODo6TG9j
YWw8djg6Ok9iamVjdD4gbGlzdGVuZXIgPSBnZXRMaXN0ZW5lck9iamVjdChjb250ZXh0KTsKKyAg
ICB2ODo6TG9jYWw8djg6OlZhbHVlPiByZXR1cm5WYWx1ZTsKKyAgICBpZiAoIWxpc3RlbmVyLklz
RW1wdHkoKSAmJiBsaXN0ZW5lci0+SXNGdW5jdGlvbigpKSB7CisgICAgICAgIEVycm9yRXZlbnQq
IGVycm9yRXZlbnQgPSBzdGF0aWNfY2FzdDxFcnJvckV2ZW50Kj4oZXZlbnQpOworICAgICAgICB2
ODo6TG9jYWw8djg6OkZ1bmN0aW9uPiBjYWxsRnVuY3Rpb24gPSB2ODo6TG9jYWw8djg6OkZ1bmN0
aW9uPjo6Q2FzdChsaXN0ZW5lcik7CisgICAgICAgIHY4OjpMb2NhbDx2ODo6T2JqZWN0PiB0aGlz
VmFsdWUgPSB2ODo6Q29udGV4dDo6R2V0Q3VycmVudCgpLT5HbG9iYWwoKTsKKyAgICAgICAgdjg6
OkhhbmRsZTx2ODo6VmFsdWU+IHBhcmFtZXRlcnNbM10gPSB7IHY4U3RyaW5nKGVycm9yRXZlbnQt
Pm1lc3NhZ2UoKSksIHY4U3RyaW5nKGVycm9yRXZlbnQtPmZpbGVuYW1lKCkpLCB2ODo6SW50ZWdl
cjo6TmV3KGVycm9yRXZlbnQtPmxpbmVubygpKSB9OworICAgICAgICByZXR1cm5WYWx1ZSA9IGNh
bGxGdW5jdGlvbi0+Q2FsbCh0aGlzVmFsdWUsIDMsIHBhcmFtZXRlcnMpOworICAgICAgICBpZiAo
IXJldHVyblZhbHVlLklzRW1wdHkoKSAmJiByZXR1cm5WYWx1ZS0+SXNCb29sZWFuKCkgJiYgIXJl
dHVyblZhbHVlLT5Cb29sZWFuVmFsdWUoKSkKKyAgICAgICAgICAgIGV2ZW50LT5wcmV2ZW50RGVm
YXVsdCgpOworICAgIH0KKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFdPUktFUlMKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvVjhXb3JrZXJDb250ZXh0RXJyb3JIYW5kbGVyLmggYi9XZWJDb3JlL2JpbmRpbmdz
L3Y4L1Y4V29ya2VyQ29udGV4dEVycm9ySGFuZGxlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLmNkMWUwZTYKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL2JpbmRpbmdz
L3Y4L1Y4V29ya2VyQ29udGV4dEVycm9ySGFuZGxlci5oCkBAIC0wLDAgKzEsNTkgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlz
dHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3Ig
dGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwor
ICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9S
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVm
IFY4V29ya2VyQ29udGV4dEVycm9ySGFuZGxlcl9oCisjZGVmaW5lIFY4V29ya2VyQ29udGV4dEVy
cm9ySGFuZGxlcl9oCisKKyNpZiBFTkFCTEUoV09SS0VSUykKKworI2luY2x1ZGUgIlY4V29ya2Vy
Q29udGV4dEV2ZW50TGlzdGVuZXIuaCIKKyNpbmNsdWRlIDx2OC5oPgorI2luY2x1ZGUgPHd0Zi9Q
YXNzUmVmUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgVjhXb3JrZXJDb250
ZXh0RXJyb3JIYW5kbGVyIDogcHVibGljIFY4V29ya2VyQ29udGV4dEV2ZW50TGlzdGVuZXIgewor
cHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFY4V29ya2VyQ29udGV4dEVycm9ySGFuZGxl
cj4gY3JlYXRlKHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBsaXN0ZW5lciwgYm9vbCBpc0lubGluZSwg
Y29uc3QgV29ybGRDb250ZXh0SGFuZGxlJiB3b3JsZENvbnRleHQpCisgICAgeworICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IFY4V29ya2VyQ29udGV4dEVycm9ySGFuZGxlcihsaXN0ZW5lciwg
aXNJbmxpbmUsIHdvcmxkQ29udGV4dCkpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBWOFdvcmtl
ckNvbnRleHRFcnJvckhhbmRsZXIodjg6OkxvY2FsPHY4OjpPYmplY3Q+IGxpc3RlbmVyLCBib29s
IGlzSW5saW5lLCBjb25zdCBXb3JsZENvbnRleHRIYW5kbGUmIHdvcmxkQ29udGV4dCk7CisKKyAg
ICB2aXJ0dWFsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IGNhbGxMaXN0ZW5lckZ1bmN0aW9uKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqLCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4ganNFdmVudCwgRXZlbnQq
KTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFdPUktFUlMKKwor
I2VuZGlmIC8vIFY4V29ya2VyQ29udGV4dEVycm9ySGFuZGxlcl9oCmRpZmYgLS1naXQgYS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L1Y4V29ya2VyQ29udGV4dEV2ZW50TGlzdGVuZXIuY3BwIGIvV2ViQ29y
ZS9iaW5kaW5ncy92OC9WOFdvcmtlckNvbnRleHRFdmVudExpc3RlbmVyLmNwcAppbmRleCBmYTg5
YWU2Li4zMGI5ODY1IDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4V29ya2VyQ29u
dGV4dEV2ZW50TGlzdGVuZXIuY3BwCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhXb3JrZXJD
b250ZXh0RXZlbnRMaXN0ZW5lci5jcHAKQEAgLTgyLDU2ICs4Miw2IEBAIHZvaWQgVjhXb3JrZXJD
b250ZXh0RXZlbnRMaXN0ZW5lcjo6aGFuZGxlRXZlbnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
Y29udGV4dCwKICAgICBpbnZva2VFdmVudEhhbmRsZXIoY29udGV4dCwgZXZlbnQsIGpzRXZlbnQp
OwogfQogCi1ib29sIFY4V29ya2VyQ29udGV4dEV2ZW50TGlzdGVuZXI6OnJlcG9ydEVycm9yKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29u
c3QgU3RyaW5nJiB1cmwsIGludCBsaW5lTnVtYmVyKQotewotICAgIGlmICghY29udGV4dCkKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgLy8gVGhlIGNhbGxiYWNrIGZ1bmN0aW9uIGNhbiBj
bGVhciB0aGUgZXZlbnQgbGlzdGVuZXIgYW5kIGRlc3Ryb3kgJ3RoaXMnIG9iamVjdC4gS2VlcCBh
IGxvY2FsIHJlZmVyZW5jZSB0byBpdC4KLSAgICBSZWZQdHI8VjhBYnN0cmFjdEV2ZW50TGlzdGVu
ZXI+IHByb3RlY3QodGhpcyk7Ci0KLSAgICB2ODo6SGFuZGxlU2NvcGUgaGFuZGxlU2NvcGU7Ci0K
LSAgICBXb3JrZXJDb250ZXh0RXhlY3V0aW9uUHJveHkqIHByb3h5ID0gd29ya2VyUHJveHkoY29u
dGV4dCk7Ci0gICAgaWYgKCFwcm94eSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgdjg6
OkhhbmRsZTx2ODo6Q29udGV4dD4gdjhDb250ZXh0ID0gcHJveHktPmNvbnRleHQoKTsKLSAgICBp
ZiAodjhDb250ZXh0LklzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgLy8g
RW50ZXIgdGhlIFY4IGNvbnRleHQgaW4gd2hpY2ggdG8gcGVyZm9ybSB0aGUgZXZlbnQgaGFuZGxp
bmcuCi0gICAgdjg6OkNvbnRleHQ6OlNjb3BlIHNjb3BlKHY4Q29udGV4dCk7Ci0KLSAgICB2ODo6
TG9jYWw8djg6Ok9iamVjdD4gbGlzdGVuZXIgPSBnZXRMaXN0ZW5lck9iamVjdChjb250ZXh0KTsK
LSAgICB2ODo6TG9jYWw8djg6OlZhbHVlPiByZXR1cm5WYWx1ZTsKLSAgICB7Ci0gICAgICAgIC8v
IENhdGNoIGV4Y2VwdGlvbnMgdGhyb3duIGluIGNhbGxpbmcgdGhlIGZ1bmN0aW9uIHNvIHRoZXkg
ZG8gbm90IHByb3BhZ2F0ZSB0byBqYXZhc2NyaXB0IGNvZGUgdGhhdCBjYXVzZWQgdGhlIGV2ZW50
IHRvIGZpcmUuCi0gICAgICAgIHY4OjpUcnlDYXRjaCB0cnlDYXRjaDsKLSAgICAgICAgdHJ5Q2F0
Y2guU2V0VmVyYm9zZSh0cnVlKTsKLQotICAgICAgICAvLyBDYWxsIHRoZSBmdW5jdGlvbi4KLSAg
ICAgICAgaWYgKCFsaXN0ZW5lci5Jc0VtcHR5KCkgJiYgbGlzdGVuZXItPklzRnVuY3Rpb24oKSkg
ewotICAgICAgICAgICAgdjg6OkxvY2FsPHY4OjpGdW5jdGlvbj4gY2FsbEZ1bmN0aW9uID0gdjg6
OkxvY2FsPHY4OjpGdW5jdGlvbj46OkNhc3QobGlzdGVuZXIpOwotICAgICAgICAgICAgdjg6Okxv
Y2FsPHY4OjpPYmplY3Q+IHRoaXNWYWx1ZSA9IHY4OjpDb250ZXh0OjpHZXRDdXJyZW50KCktPkds
b2JhbCgpOwotCi0gICAgICAgICAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gcGFyYW1ldGVyc1sz
XSA9IHsgdjhTdHJpbmcobWVzc2FnZSksIHY4U3RyaW5nKHVybCksIHY4OjpJbnRlZ2VyOjpOZXco
bGluZU51bWJlcikgfTsKLSAgICAgICAgICAgIHJldHVyblZhbHVlID0gY2FsbEZ1bmN0aW9uLT5D
YWxsKHRoaXNWYWx1ZSwgMywgcGFyYW1ldGVycyk7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBJ
ZiBhbiBlcnJvciBvY2N1cnMgd2hpbGUgaGFuZGxpbmcgdGhlIHNjcmlwdCBlcnJvciwgaXQgc2hv
dWxkIGJlIGJ1YmJsZWQgdXAuCi0gICAgICAgIGlmICh0cnlDYXRjaC5IYXNDYXVnaHQoKSkgewot
ICAgICAgICAgICAgdHJ5Q2F0Y2guUmVzZXQoKTsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICAgICAgfQotICAgIH0KLQotICAgIC8vIElmIHRoZSBmdW5jdGlvbiByZXR1cm5zIGZhbHNl
LCB0aGVuIHRoZSBlcnJvciBpcyBoYW5kbGVkLiBPdGhlcndpc2UsIHRoZSBlcnJvciBpcyBub3Qg
aGFuZGxlZC4KLSAgICBib29sIGVycm9ySGFuZGxlZCA9IHJldHVyblZhbHVlLT5Jc0Jvb2xlYW4o
KSAmJiAhcmV0dXJuVmFsdWUtPkJvb2xlYW5WYWx1ZSgpOwotCi0gICAgcmV0dXJuIGVycm9ySGFu
ZGxlZDsKLX0KLQogdjg6OkxvY2FsPHY4OjpWYWx1ZT4gVjhXb3JrZXJDb250ZXh0RXZlbnRMaXN0
ZW5lcjo6Y2FsbExpc3RlbmVyRnVuY3Rpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4
dCwgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGpzRXZlbnQsIEV2ZW50KiBldmVudCkKIHsKICAgICB2
ODo6TG9jYWw8djg6OkZ1bmN0aW9uPiBoYW5kbGVyRnVuY3Rpb24gPSBnZXRMaXN0ZW5lckZ1bmN0
aW9uKGNvbnRleHQpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFdvcmtlckNv
bnRleHRFdmVudExpc3RlbmVyLmggYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4V29ya2VyQ29udGV4
dEV2ZW50TGlzdGVuZXIuaAppbmRleCA0NDg3NDk3Li4xZDBiZmM4IDEwMDY0NAotLS0gYS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L1Y4V29ya2VyQ29udGV4dEV2ZW50TGlzdGVuZXIuaAorKysgYi9XZWJD
b3JlL2JpbmRpbmdzL3Y4L1Y4V29ya2VyQ29udGV4dEV2ZW50TGlzdGVuZXIuaApAQCAtNTAsMTEg
KzUwLDExIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgfQogCiAgICAgICAgIHZpcnR1
YWwgdm9pZCBoYW5kbGVFdmVudChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgRXZlbnQqKTsKLSAg
ICAgICAgdmlydHVhbCBib29sIHJlcG9ydEVycm9yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBj
b25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgdXJsLCBpbnQgbGluZU51bWJlcik7
CiAKLSAgICBwcml2YXRlOgorICAgIHByb3RlY3RlZDoKICAgICAgICAgVjhXb3JrZXJDb250ZXh0
RXZlbnRMaXN0ZW5lcih2ODo6TG9jYWw8djg6Ok9iamVjdD4gbGlzdGVuZXIsIGJvb2wgaXNJbmxp
bmUsIGNvbnN0IFdvcmxkQ29udGV4dEhhbmRsZSYgd29ybGRDb250ZXh0KTsKIAorICAgIHByaXZh
dGU6CiAgICAgICAgIHZpcnR1YWwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gY2FsbExpc3RlbmVyRnVu
Y3Rpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBqc0V2
ZW50LCBFdmVudCopOwogICAgICAgICB2ODo6TG9jYWw8djg6Ok9iamVjdD4gZ2V0UmVjZWl2ZXJP
YmplY3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEV2ZW50Kik7CiAgICAgfTsKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvZG9tL0V2ZW50TGlzdGVuZXIuaCBiL1dlYkNvcmUvZG9tL0V2ZW50TGlzdGVu
ZXIuaAppbmRleCA4YTM1OTIyLi5kN2M5NTBmIDEwMDY0NAotLS0gYS9XZWJDb3JlL2RvbS9FdmVu
dExpc3RlbmVyLmgKKysrIGIvV2ViQ29yZS9kb20vRXZlbnRMaXN0ZW5lci5oCkBAIC00Niw4ICs0
Niw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCB+RXZlbnRMaXN0ZW5l
cigpIHsgfQogICAgICAgICB2aXJ0dWFsIGJvb2wgb3BlcmF0b3I9PShjb25zdCBFdmVudExpc3Rl
bmVyJikgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlRXZlbnQoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCosIEV2ZW50KikgPSAwOwotICAgICAgICAvLyBSZXR1cm4gdHJ1ZSB0byBpbmRp
Y2F0ZSB0aGF0IHRoZSBlcnJvciBpcyBoYW5kbGVkLgotICAgICAgICB2aXJ0dWFsIGJvb2wgcmVw
b3J0RXJyb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYgLyptZXNzYWdl
Ki8sIGNvbnN0IFN0cmluZyYgLyp1cmwqLywgaW50IC8qbGluZU51bWJlciovKSB7IHJldHVybiBm
YWxzZTsgfQogICAgICAgICB2aXJ0dWFsIGJvb2wgd2FzQ3JlYXRlZEZyb21NYXJrdXAoKSBjb25z
dCB7IHJldHVybiBmYWxzZTsgfQogCiAjaWYgVVNFKEpTQykKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
d29ya2Vycy9Xb3JrZXJDb250ZXh0LmNwcCBiL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0
LmNwcAppbmRleCBlYjkzNGQ0Li5hZjM3YzZhIDEwMDY0NAotLS0gYS9XZWJDb3JlL3dvcmtlcnMv
V29ya2VyQ29udGV4dC5jcHAKKysrIGIvV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRleHQuY3Bw
CkBAIC0zMiw5ICszMiwxMCBAQAogI2luY2x1ZGUgIldvcmtlckNvbnRleHQuaCIKIAogI2luY2x1
ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgotI2luY2x1ZGUgIkRhdGFiYXNlLmgiCiAjaW5jbHVkZSAi
RE9NVGltZXIuaCIKICNpbmNsdWRlICJET01XaW5kb3cuaCIKKyNpbmNsdWRlICJEYXRhYmFzZS5o
IgorI2luY2x1ZGUgIkVycm9yRXZlbnQuaCIKICNpbmNsdWRlICJFdmVudC5oIgogI2luY2x1ZGUg
IkV2ZW50RXhjZXB0aW9uLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVBvcnQuaCIKQEAgLTY0LDYgKzY1
LDcgQEAgV29ya2VyQ29udGV4dDo6V29ya2VyQ29udGV4dChjb25zdCBLVVJMJiB1cmwsIGNvbnN0
IFN0cmluZyYgdXNlckFnZW50LCBXb3JrZXJUaHIKICAgICAsIG1fc2NyaXB0KG5ldyBXb3JrZXJT
Y3JpcHRDb250cm9sbGVyKHRoaXMpKQogICAgICwgbV90aHJlYWQodGhyZWFkKQogICAgICwgbV9j
bG9zaW5nKGZhbHNlKQorICAgICwgbV9yZXBvcnRpbmdFeGNlcHRpb24oZmFsc2UpCiB7CiAgICAg
c2V0U2VjdXJpdHlPcmlnaW4oU2VjdXJpdHlPcmlnaW46OmNyZWF0ZSh1cmwpKTsKIH0KQEAgLTIy
Nyw5ICsyMjksMTUgQEAgdm9pZCBXb3JrZXJDb250ZXh0OjppbXBvcnRTY3JpcHRzKGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiB1cmxzLCBFeGNlcHRpb25Db2RlJiBlYykKIHZvaWQgV29ya2VyQ29udGV4
dDo6cmVwb3J0RXhjZXB0aW9uKGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlLCBpbnQgbGluZU51
bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpCiB7CiAgICAgYm9vbCBlcnJvckhhbmRsZWQg
PSBmYWxzZTsKLSAgICBpZiAob25lcnJvcigpKQotICAgICAgICBlcnJvckhhbmRsZWQgPSBvbmVy
cm9yKCktPnJlcG9ydEVycm9yKHRoaXMsIGVycm9yTWVzc2FnZSwgc291cmNlVVJMLCBsaW5lTnVt
YmVyKTsKLQorICAgIGlmICghbV9yZXBvcnRpbmdFeGNlcHRpb24pIHsKKyAgICAgICAgaWYgKG9u
ZXJyb3IoKSkgeworICAgICAgICAgICAgbV9yZXBvcnRpbmdFeGNlcHRpb24gPSB0cnVlOworICAg
ICAgICAgICAgUmVmUHRyPEVycm9yRXZlbnQ+IGVycm9yRXZlbnQoRXJyb3JFdmVudDo6Y3JlYXRl
KGVycm9yTWVzc2FnZSwgc291cmNlVVJMLCBsaW5lTnVtYmVyKSk7CisgICAgICAgICAgICBvbmVy
cm9yKCktPmhhbmRsZUV2ZW50KHRoaXMsIGVycm9yRXZlbnQuZ2V0KCkpOworICAgICAgICAgICAg
ZXJyb3JIYW5kbGVkID0gZXJyb3JFdmVudC0+ZGVmYXVsdFByZXZlbnRlZCgpOworICAgICAgICAg
ICAgbV9yZXBvcnRpbmdFeGNlcHRpb24gPSBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KICAgICBp
ZiAoIWVycm9ySGFuZGxlZCkKICAgICAgICAgdGhyZWFkKCktPndvcmtlclJlcG9ydGluZ1Byb3h5
KCkucG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0KGVycm9yTWVzc2FnZSwgbGluZU51bWJlciwg
c291cmNlVVJMKTsKIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0
LmggYi9XZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29udGV4dC5oCmluZGV4IGQ4ZDY4NzMuLjM1YjM2
ZWYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0LmgKKysrIGIvV2Vi
Q29yZS93b3JrZXJzL1dvcmtlckNvbnRleHQuaApAQCAtMTU0LDYgKzE1NCw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICAgICAgbXV0YWJsZSBSZWZQdHI8Tm90aWZpY2F0aW9uQ2VudGVyPiBt
X25vdGlmaWNhdGlvbnM7CiAjZW5kaWYKICAgICAgICAgYm9vbCBtX2Nsb3Npbmc7CisgICAgICAg
IGJvb2wgbV9yZXBvcnRpbmdFeGNlcHRpb247CiAgICAgICAgIEV2ZW50VGFyZ2V0RGF0YSBtX2V2
ZW50VGFyZ2V0RGF0YTsKICAgICB9OwogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>