<?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>72691</bug_id>
          
          <creation_ts>2011-11-17 22:38:26 -0800</creation_ts>
          <short_desc>[Inspector][FileSystem] Add FileSystem item to storage tree</short_desc>
          <delta_ts>2012-06-08 02:50:51 -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>Web Inspector (Deprecated)</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>
          <dependson>72456</dependson>
    
    <dependson>86818</dependson>
          <blocked>68203</blocked>
    
    <blocked>73301</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Taiju Tsuiki">tzik</reporter>
          <assigned_to name="Taiju Tsuiki">tzik</assigned_to>
          <cc>apavlov</cc>
    
    <cc>bweinstein</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>kinuko</cc>
    
    <cc>loislo</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rik</cc>
    
    <cc>timothy</cc>
    
    <cc>vsevik</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>505511</commentid>
    <comment_count>0</comment_count>
    <who name="Taiju Tsuiki">tzik</who>
    <bug_when>2011-11-17 22:38:26 -0800</bug_when>
    <thetext>This is a splitted patch of https://bugs.webkit.org/show_bug.cgi?id=68203, part2.
- Adding notification to Inspector front-end on FileSystem creation and invalidation,
- Adding FileSystem item to storage tree on Resources panel.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>505514</commentid>
    <comment_count>1</comment_count>
      <attachid>115742</attachid>
    <who name="Taiju Tsuiki">tzik</who>
    <bug_when>2011-11-17 22:47:23 -0800</bug_when>
    <thetext>Created attachment 115742
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>509871</commentid>
    <comment_count>2</comment_count>
      <attachid>116767</attachid>
    <who name="Taiju Tsuiki">tzik</who>
    <bug_when>2011-11-28 09:06:37 -0800</bug_when>
    <thetext>Created attachment 116767
Patch (not ready)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>510475</commentid>
    <comment_count>3</comment_count>
      <attachid>116887</attachid>
    <who name="Taiju Tsuiki">tzik</who>
    <bug_when>2011-11-28 21:46:10 -0800</bug_when>
    <thetext>Created attachment 116887
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>511192</commentid>
    <comment_count>4</comment_count>
      <attachid>116887</attachid>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2011-11-29 16:20:17 -0800</bug_when>
    <thetext>Comment on attachment 116887
Patch

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

&gt; Source/WebCore/ChangeLog:45
&gt; +        * inspector/front-end/Images/fileSystem.png: Added.

I don&apos;t like this icon, I think it&apos;s too bright.
I suggest we go the &quot;cookies way&quot; - we can take the icon used for storage/application cache, change its color (something calm, please) and add a small folder icon in the bottom right corner.

&gt; Source/WebCore/fileapi/DOMFileSystem.cpp:57
&gt;  PassRefPtr&lt;DOMFileSystem&gt; DOMFileSystem::create(ScriptExecutionContext* context, const String&amp; name, PassOwnPtr&lt;AsyncFileSystem&gt; asyncFileSystem)

First of all could you please clarify:
As I see if I do something like 

var fs; webkitRequestFileSystem(TEMPORARY, 1024*1024, (function(a){fs = a}).bind(this));
var fs2; webkitRequestFileSystem(TEMPORARY, 1024*1024, (function(a){fs2 = a}).bind(this));

from inspector&apos;s console, then two DOMFileSystem objects are created but they are actually referring to the same file system.
Is that always true? Can there be more than one TEMPORARY file system for a given origin? And what about PERSISTENT?

&gt; Source/WebCore/fileapi/DOMFileSystem.cpp:60
&gt; +    fileSystem-&gt;m_agentProvider = InspectorInstrumentation::didOpenFileSystem(fileSystem.get());

I have a strong concern about making that call from DOMFileSystem constructor/factory.
Looks like DOMFileSystem is some WebCore handle for the file system stored in the browser.
It is usually created when user does &quot;requestWebkitFileSystem&quot;, but not only there, see http://codesearch.google.com/codesearch#search/&amp;exact_package=chromium&amp;q=DOMFileSystem::create%5C(&amp;type=cs
So there is no direct correlation between having file system for the given origin in the storage and creating DOMFileSystem object. (We can have a file system in the storage but never request it yet or we can have several DOMFileSystem handles for the same file system). 
I don&apos;t see why do you need to store pointers to all DOMFileSystem objects in inspector when all you really need is name, origin, and type.

As I understand your patch will show file systems in resources panel once web page calls &quot;requestWebkitFileSystem()&quot;.
It will not even show anything if inspector is opened after they were requested.

I would expect, that upon opening of resources panel, all file systems available for page frame origins were shown no matter if web page already requested them or not.
And by file system I mean here a simple name-origin-type structure.


Also you should not store inspector related state here. I don&apos;t think you need that.
You can do something like
InspectorInstrumentation::didOpenFileSystem(fileSystem.get());
InspectorInstrumentation::didcloseFileSystem(fileSystem.get());
and these calls will go to the same InspectorFileSystemAgent.
You should get rid of all the BackPtr stuff and inspector related logic in DOMFileSystem.cpp

&gt; LayoutTests/ChangeLog:1062
&gt; +2011-11-28  Taiju TSUIKI  &lt;tzik@chromium.org&gt;

Looks like you have a duplicate change log entry.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>512482</commentid>
    <comment_count>5</comment_count>
      <attachid>116887</attachid>
    <who name="Taiju Tsuiki">tzik</who>
    <bug_when>2011-11-30 22:25:08 -0800</bug_when>
    <thetext>Comment on attachment 116887
Patch

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

&gt;&gt; Source/WebCore/ChangeLog:45
&gt;&gt; +        * inspector/front-end/Images/fileSystem.png: Added.
&gt; 
&gt; I don&apos;t like this icon, I think it&apos;s too bright.
&gt; I suggest we go the &quot;cookies way&quot; - we can take the icon used for storage/application cache, change its color (something calm, please) and add a small folder icon in the bottom right corner.

OK, so how about attached icon?

&gt;&gt; Source/WebCore/fileapi/DOMFileSystem.cpp:57
&gt;&gt;  PassRefPtr&lt;DOMFileSystem&gt; DOMFileSystem::create(ScriptExecutionContext* context, const String&amp; name, PassOwnPtr&lt;AsyncFileSystem&gt; asyncFileSystem)
&gt; 
&gt; First of all could you please clarify:
&gt; As I see if I do something like 
&gt; 
&gt; var fs; webkitRequestFileSystem(TEMPORARY, 1024*1024, (function(a){fs = a}).bind(this));
&gt; var fs2; webkitRequestFileSystem(TEMPORARY, 1024*1024, (function(a){fs2 = a}).bind(this));
&gt; 
&gt; from inspector&apos;s console, then two DOMFileSystem objects are created but they are actually referring to the same file system.
&gt; Is that always true? Can there be more than one TEMPORARY file system for a given origin? And what about PERSISTENT?

Yes, both of DOMFileSystem instance always refer same browser-side filesystem for each TEMPORARY and PERSISTENT.

&gt;&gt; Source/WebCore/fileapi/DOMFileSystem.cpp:60
&gt;&gt; +    fileSystem-&gt;m_agentProvider = InspectorInstrumentation::didOpenFileSystem(fileSystem.get());
&gt; 
&gt; I have a strong concern about making that call from DOMFileSystem constructor/factory.
&gt; Looks like DOMFileSystem is some WebCore handle for the file system stored in the browser.
&gt; It is usually created when user does &quot;requestWebkitFileSystem&quot;, but not only there, see http://codesearch.google.com/codesearch#search/&amp;exact_package=chromium&amp;q=DOMFileSystem::create%5C(&amp;type=cs
&gt; So there is no direct correlation between having file system for the given origin in the storage and creating DOMFileSystem object. (We can have a file system in the storage but never request it yet or we can have several DOMFileSystem handles for the same file system). 
&gt; I don&apos;t see why do you need to store pointers to all DOMFileSystem objects in inspector when all you really need is name, origin, and type.
&gt; 
&gt; As I understand your patch will show file systems in resources panel once web page calls &quot;requestWebkitFileSystem()&quot;.
&gt; It will not even show anything if inspector is opened after they were requested.
&gt; 
&gt; I would expect, that upon opening of resources panel, all file systems available for page frame origins were shown no matter if web page already requested them or not.
&gt; And by file system I mean here a simple name-origin-type structure.
&gt; 
&gt; 
&gt; Also you should not store inspector related state here. I don&apos;t think you need that.
&gt; You can do something like
&gt; InspectorInstrumentation::didOpenFileSystem(fileSystem.get());
&gt; InspectorInstrumentation::didcloseFileSystem(fileSystem.get());
&gt; and these calls will go to the same InspectorFileSystemAgent.
&gt; You should get rid of all the BackPtr stuff and inspector related logic in DOMFileSystem.cpp

For storing DOMFileSystem object vs. origin and type:
Currently, DOMFileSystem is created only in the call chain of webkitRequestFileSystem and webkitResolveLocalFileSystemURL.
Though in planning of further extension of API, we&apos;ll probabily make filesystem without requestFileSystem and can&apos;t re-make it with origin and time.
If we don&apos;t need to support them ever, origin and type (and ScriptExecutionContext) are enough, as you said.

For filesystem request before inspector disabled:
Even when Agent is disabled or Frontend detached, we&apos;ll store DOMFileSystem objects in Agent after this patch.
So inspector captures requests even before it opened.

Should we show a filesystem for a page which doesn&apos;t touch filesystem at all?
IMO, when we develop a site, it is enough that we can see the filesystem being used.

For InspectorInstrumentation::didCloseFileSystem:
I can&apos;t make it. InspectorInstrumentation dispatches the event to InstrumentingAgent using ScriptExecutionContext.
But when DOMFileSystem::OnContextDestroyed, ScriptExecutionContext is dying. So we can&apos;t reach InstrumentingAgent through it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>512486</commentid>
    <comment_count>6</comment_count>
      <attachid>117345</attachid>
    <who name="Taiju Tsuiki">tzik</who>
    <bug_when>2011-11-30 22:25:58 -0800</bug_when>
    <thetext>Created attachment 117345
storage tree icon</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>518900</commentid>
    <comment_count>7</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-12-11 09:40:29 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; Created an attachment (id=117345) [details]
&gt; storage tree icon

Vsevolod, could you please ping me when all of your comments / concerns are addressed so that I could proceed with the formal review?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>518901</commentid>
    <comment_count>8</comment_count>
      <attachid>116887</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-12-11 09:41:00 -0800</bug_when>
    <thetext>Comment on attachment 116887
Patch

Clearing r- as per Vsevolod&apos;s comments. It sounds like there is work to be done on the change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>522154</commentid>
    <comment_count>9</comment_count>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2011-12-15 12:43:49 -0800</bug_when>
    <thetext>&gt; OK, so how about attached icon?
I think it&apos;s much better.

&gt; &gt;&gt; Source/WebCore/fileapi/DOMFileSystem.cpp:60
&gt; &gt;&gt; +    fileSystem-&gt;m_agentProvider = InspectorInstrumentation::didOpenFileSystem(fileSystem.get());
&gt; &gt; 
&gt; &gt; I have a strong concern about making that call from DOMFileSystem constructor/factory.
&gt; &gt; Looks like DOMFileSystem is some WebCore handle for the file system stored in the browser.
&gt; &gt; It is usually created when user does &quot;requestWebkitFileSystem&quot;, but not only there, see http://codesearch.google.com/codesearch#search/&amp;exact_package=chromium&amp;q=DOMFileSystem::create%5C(&amp;type=cs
&gt; &gt; So there is no direct correlation between having file system for the given origin in the storage and creating DOMFileSystem object. (We can have a file system in the storage but never request it yet or we can have several DOMFileSystem handles for the same file system). 
&gt; &gt; I don&apos;t see why do you need to store pointers to all DOMFileSystem objects in inspector when all you really need is name, origin, and type.
&gt; &gt; 
&gt; &gt; As I understand your patch will show file systems in resources panel once web page calls &quot;requestWebkitFileSystem()&quot;.
&gt; &gt; It will not even show anything if inspector is opened after they were requested.
&gt; &gt; 
&gt; &gt; I would expect, that upon opening of resources panel, all file systems available for page frame origins were shown no matter if web page already requested them or not.
&gt; &gt; And by file system I mean here a simple name-origin-type structure.
&gt; &gt; 
&gt; &gt; 
&gt; &gt; Also you should not store inspector related state here. I don&apos;t think you need that.
&gt; &gt; You can do something like
&gt; &gt; InspectorInstrumentation::didOpenFileSystem(fileSystem.get());
&gt; &gt; InspectorInstrumentation::didcloseFileSystem(fileSystem.get());
&gt; &gt; and these calls will go to the same InspectorFileSystemAgent.
&gt; &gt; You should get rid of all the BackPtr stuff and inspector related logic in DOMFileSystem.cpp
&gt; 
&gt; For storing DOMFileSystem object vs. origin and type:
&gt; Currently, DOMFileSystem is created only in the call chain of webkitRequestFileSystem and webkitResolveLocalFileSystemURL.
&gt; Though in planning of further extension of API, we&apos;ll probabily make filesystem without requestFileSystem and can&apos;t re-make it with origin and time.
&gt; If we don&apos;t need to support them ever, origin and type (and ScriptExecutionContext) are enough, as you said.
I don&apos;t get it. I think name is enough to identify file system when you make requests from inspector and file system origin and type are the only information that we are going to show to developer before he opens FileSystemView. How will potential API changes affect that?

&gt; For filesystem request before inspector disabled:
&gt; Even when Agent is disabled or Frontend detached, we&apos;ll store DOMFileSystem objects in Agent after this patch.
&gt; So inspector captures requests even before it opened.
I see. This is not correct. Inspector should not capture any information before it is opened. You should do 
  m_instrumentingAgents-&gt;setInspectorFileSystemAgent(this);
instead in InspectorFileSystemAgent::enable() which should be called explicitly from the frontend.
 
&gt; Should we show a filesystem for a page which doesn&apos;t touch filesystem at all?
&gt; IMO, when we develop a site, it is enough that we can see the filesystem being used.
I don&apos;t think so. Imagine we have a site and some pages already use file system, while others don&apos;t. When developer opens some new page he might want to see which file systems are already available for him.

&gt; For InspectorInstrumentation::didCloseFileSystem:
&gt; I can&apos;t make it. InspectorInstrumentation dispatches the event to InstrumentingAgent using ScriptExecutionContext.
&gt; But when DOMFileSystem::OnContextDestroyed, ScriptExecutionContext is dying. So we can&apos;t reach InstrumentingAgent through it.
Looks like file system is only closed when the document is destroyed, so we can remove file system from inspector once the last frame with matching origin is detached / navigated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>559998</commentid>
    <comment_count>10</comment_count>
      <attachid>127753</attachid>
    <who name="Taiju Tsuiki">tzik</who>
    <bug_when>2012-02-19 20:35:29 -0800</bug_when>
    <thetext>Created attachment 127753
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>560835</commentid>
    <comment_count>11</comment_count>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2012-02-21 06:24:26 -0800</bug_when>
    <thetext>Is this patch ready for review?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>560989</commentid>
    <comment_count>12</comment_count>
    <who name="Taiju Tsuiki">tzik</who>
    <bug_when>2012-02-21 10:18:47 -0800</bug_when>
    <thetext>No, it needs some refinement, including WebCore.xcodeproj update.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>627323</commentid>
    <comment_count>13</comment_count>
      <attachid>142628</attachid>
    <who name="Taiju Tsuiki">tzik</who>
    <bug_when>2012-05-17 21:50:58 -0700</bug_when>
    <thetext>Created attachment 142628
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>627324</commentid>
    <comment_count>14</comment_count>
    <who name="Taiju Tsuiki">tzik</who>
    <bug_when>2012-05-17 21:56:18 -0700</bug_when>
    <thetext>Sorry for very very slow update for it. I&apos;d like to resume to work on it.
I&apos;ll upload splitted version of this patch soon later.

Could you help me with reviewing these patches?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>627462</commentid>
    <comment_count>15</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-05-18 01:28:57 -0700</bug_when>
    <thetext>Making a step back to sync up on the plans. Is there a screenshot or a mock for this feature anywhere? Also, is filesystem implementation mature enough for inspection to be added?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>627514</commentid>
    <comment_count>16</comment_count>
    <who name="Taiju Tsuiki">tzik</who>
    <bug_when>2012-05-18 02:35:00 -0700</bug_when>
    <thetext>&gt; screenshot
Yes, a screen shot of previous version is available here:
https://bug-68203-attachments.webkit.org/attachment.cgi?id=116454


&gt; matuarity of filesystem
I think it is enough mature, at least TEMPORARY and PERSISTENT FileSystem, which I put in scope.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>629928</commentid>
    <comment_count>17</comment_count>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2012-05-21 21:42:00 -0700</bug_when>
    <thetext>(In reply to comment #16)
&gt; &gt; screenshot
&gt; Yes, a screen shot of previous version is available here:
&gt; https://bug-68203-attachments.webkit.org/attachment.cgi?id=116454

Pavel, how does this screenshot look to you?  This has been a long desired feature and we want to move this forward.

&gt; &gt; matuarity of filesystem
&gt; I think it is enough mature, at least TEMPORARY and PERSISTENT FileSystem, which I put in scope.

Yes, it&apos;s been around for nearly 2 years, a lot of applications are using the API and I think we can safely assume it&apos;s mature enough now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>629931</commentid>
    <comment_count>18</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-05-21 22:22:36 -0700</bug_when>
    <thetext>(In reply to comment #17)
&gt; (In reply to comment #16)
&gt; &gt; &gt; screenshot
&gt; &gt; Yes, a screen shot of previous version is available here:
&gt; &gt; https://bug-68203-attachments.webkit.org/attachment.cgi?id=116454
&gt; 
&gt; Pavel, how does this screenshot look to you?  This has been a long desired feature and we want to move this forward.
&gt; 

Could you remind me if there was reason you don&apos;t grow files tree under the filesystem node itself? Do you anticipate deep trees and lack of scrollbar in the sidebar concerns you?

Glad to hear you are willing to move this forward. Having this initial code hanging in the source tree for so long concerned me a bit.

&gt; &gt; &gt; matuarity of filesystem
&gt; &gt; I think it is enough mature, at least TEMPORARY and PERSISTENT FileSystem, which I put in scope.
&gt; 
&gt; Yes, it&apos;s been around for nearly 2 years, a lot of applications are using the API and I think we can safely assume it&apos;s mature enough now.

Ok, looking at the patch now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>629938</commentid>
    <comment_count>19</comment_count>
      <attachid>142628</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-05-21 22:41:41 -0700</bug_when>
    <thetext>Comment on attachment 142628
Patch

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

&gt; Source/WebCore/inspector/front-end/FileSystemModel.js:42
&gt; +    WebInspector.resourceTreeModel.addEventListener(WebInspector.ResourceTreeModel.EventTypes.FrameNavigated, this._frameNavigated, this);

You should traverse existing frames here. I&apos;m interested to learn why you would like to track frames. If you are only interested in origins, you could maintain listeners for FrameAdded, Navigated and Detached and every time event comes, model would traverse all frames recursively and collect remaining origins. That would be 10 lines of code in total and you would be operating only filesystems in the model. r- for while we are discussing it.

&gt; Source/WebCore/inspector/front-end/FileSystemModel.js:107
&gt; +    _isEmpty: function(obj)

This should go to the utilities.js and be declared on Object (i.e. Object.isEmpty(obj)).

&gt; Source/WebCore/inspector/front-end/FileSystemModel.js:212
&gt; + * @param {Page.Frame} frame

This is WebInspector.ResourceTreeFrame according to the call site. Try compiling this code using Source/WebCore/inspector/compile-frontend.sh with the recent closure compiler. Ignore the __proto__ assignment errors that started popping up in the latest compiler version.

&gt; Source/WebCore/inspector/front-end/FileSystemModel.js:222
&gt; +    this._filesystemModel.addFrameForOrigin(this, this._securityOrigin);

Why do you need to keep track of frames at all? Could you track only origins instead?

&gt; Source/WebCore/inspector/front-end/ResourcesPanel.js:70
&gt; +    if (Capabilities.filesystemInspection) {

I&apos;d call it Capabilities.filesystem

&gt; Source/WebCore/inspector/front-end/ResourcesPanel.js:1647
&gt; +        this._filesystemModel = new WebInspector.FileSystemModel();

Since you create filesystem model lazily (which is good), you should traverse all existing frames in the tree in FileSystemModel constructor. Although I&apos;d remove tracking of frames and left origins only.

&gt; Source/WebCore/inspector/front-end/ResourcesPanel.js:1672
&gt; +            if(this.children[i].filesystemName == filesystemName)

Space before ( is missing. We also use === for comparison.

&gt; Source/WebCore/inspector/front-end/ResourcesPanel.js:2098
&gt; +    var displayName = filesystem.type + &quot; - &quot; + filesystem.origin;

This should be WebInspector.UIString(&quot;%s - $s&quot;, filesystem.type, filesystem.origin);
You should also be consistent with naming: filesystem vs fileSystem.

&gt; Source/WebKit/chromium/src/js/DevTools.js:47
&gt; +    Capabilities.filesystemInspection = false;

Preferences are about enabling / disabling features when they are not yet ready.
Capabilities are for querying whether backend supports this feature or not. See other capabilities usages.

You start with Preferences when it is not ready at all. When it is already somewhat useful, you migrate to Capabilities and query backend for filesystem existence. You can then add &quot;experiment&quot; (see Settings.js) so that you could enable it at runtime.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>631125</commentid>
    <comment_count>20</comment_count>
      <attachid>143443</attachid>
    <who name="Taiju Tsuiki">tzik</who>
    <bug_when>2012-05-22 20:30:52 -0700</bug_when>
    <thetext>Created attachment 143443
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>631126</commentid>
    <comment_count>21</comment_count>
      <attachid>143444</attachid>
    <who name="Taiju Tsuiki">tzik</who>
    <bug_when>2012-05-22 20:32:51 -0700</bug_when>
    <thetext>Created attachment 143444
Screenshot

Screenshot on Preferences.exposeFileSystemInspection = true</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>631129</commentid>
    <comment_count>22</comment_count>
      <attachid>142628</attachid>
    <who name="Taiju Tsuiki">tzik</who>
    <bug_when>2012-05-22 20:39:46 -0700</bug_when>
    <thetext>Comment on attachment 142628
Patch

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

&gt;&gt; Source/WebCore/inspector/front-end/FileSystemModel.js:42
&gt;&gt; +    WebInspector.resourceTreeModel.addEventListener(WebInspector.ResourceTreeModel.EventTypes.FrameNavigated, this._frameNavigated, this);
&gt; 
&gt; You should traverse existing frames here. I&apos;m interested to learn why you would like to track frames. If you are only interested in origins, you could maintain listeners for FrameAdded, Navigated and Detached and every time event comes, model would traverse all frames recursively and collect remaining origins. That would be 10 lines of code in total and you would be operating only filesystems in the model. r- for while we are discussing it.

I&apos;m tracking frame to associate requests with frame, and to migrate in-flight requests to another frame when a frame is detached.
Traversing frames seems to work well. Should I rewrite like that?

&gt;&gt; Source/WebCore/inspector/front-end/FileSystemModel.js:107
&gt;&gt; +    _isEmpty: function(obj)
&gt; 
&gt; This should go to the utilities.js and be declared on Object (i.e. Object.isEmpty(obj)).

Done

&gt;&gt; Source/WebCore/inspector/front-end/FileSystemModel.js:212
&gt;&gt; + * @param {Page.Frame} frame
&gt; 
&gt; This is WebInspector.ResourceTreeFrame according to the call site. Try compiling this code using Source/WebCore/inspector/compile-frontend.sh with the recent closure compiler. Ignore the __proto__ assignment errors that started popping up in the latest compiler version.

Done

&gt;&gt; Source/WebCore/inspector/front-end/FileSystemModel.js:222
&gt;&gt; +    this._filesystemModel.addFrameForOrigin(this, this._securityOrigin);
&gt; 
&gt; Why do you need to keep track of frames at all? Could you track only origins instead?

Pending

&gt;&gt; Source/WebCore/inspector/front-end/ResourcesPanel.js:70
&gt;&gt; +    if (Capabilities.filesystemInspection) {
&gt; 
&gt; I&apos;d call it Capabilities.filesystem

I moved it to Preferences and exposeFileSystemInspection referring other variable name.
If it was still not suitable, notice me.

&gt;&gt; Source/WebCore/inspector/front-end/ResourcesPanel.js:1647
&gt;&gt; +        this._filesystemModel = new WebInspector.FileSystemModel();
&gt; 
&gt; Since you create filesystem model lazily (which is good), you should traverse all existing frames in the tree in FileSystemModel constructor. Although I&apos;d remove tracking of frames and left origins only.

Pending

&gt;&gt; Source/WebCore/inspector/front-end/ResourcesPanel.js:1672
&gt;&gt; +            if(this.children[i].filesystemName == filesystemName)
&gt; 
&gt; Space before ( is missing. We also use === for comparison.

Done

&gt;&gt; Source/WebCore/inspector/front-end/ResourcesPanel.js:2098
&gt;&gt; +    var displayName = filesystem.type + &quot; - &quot; + filesystem.origin;
&gt; 
&gt; This should be WebInspector.UIString(&quot;%s - $s&quot;, filesystem.type, filesystem.origin);
&gt; You should also be consistent with naming: filesystem vs fileSystem.

Done
I renamed filesystem to fileSystem.

&gt;&gt; Source/WebKit/chromium/src/js/DevTools.js:47
&gt;&gt; +    Capabilities.filesystemInspection = false;
&gt; 
&gt; Preferences are about enabling / disabling features when they are not yet ready.
&gt; Capabilities are for querying whether backend supports this feature or not. See other capabilities usages.
&gt; 
&gt; You start with Preferences when it is not ready at all. When it is already somewhat useful, you migrate to Capabilities and query backend for filesystem existence. You can then add &quot;experiment&quot; (see Settings.js) so that you could enable it at runtime.

Make sence. I&apos;ll move it to Preferences this time.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>631394</commentid>
    <comment_count>23</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-05-23 01:53:05 -0700</bug_when>
    <thetext>&gt; I&apos;m tracking frame to associate requests with frame, and to migrate in-flight requests to another frame when a frame is detached.

Could you elaborate on this? What requests and why you want to associate them? Also, I thought that we no longer support detached frame use cases.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>631412</commentid>
    <comment_count>24</comment_count>
      <attachid>143443</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-05-23 02:15:28 -0700</bug_when>
    <thetext>Comment on attachment 143443
Patch

Clearing r? while pending question in comment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>632325</commentid>
    <comment_count>25</comment_count>
    <who name="Taiju Tsuiki">tzik</who>
    <bug_when>2012-05-23 19:30:17 -0700</bug_when>
    <thetext>(In reply to comment #18)
&gt; Could you remind me if there was reason you don&apos;t grow files tree under the filesystem node itself? Do you anticipate deep trees and lack of scrollbar in the sidebar concerns you?

Yes, I&apos;d like to avoid deep tree in sidebar, as your suggestion.

(In reply to comment #23)
&gt; &gt; I&apos;m tracking frame to associate requests with frame, and to migrate in-flight requests to another frame when a frame is detached.
&gt; 
&gt; Could you elaborate on this? What requests and why you want to associate them? Also, I thought that we no longer support detached frame use cases.

I tried to handle that: I&apos;m going to post a request (e.g. readDirectory, readFile, getMetadata) through a frame.
The request is processed in the context of the frame. Howeven, the lifetime of a frame is up to the page,
 so the frame can be removed even if there are pending requests.
We can continue to process the request in another frame, if there is another frame with same origin.
So, I want to repost all pending request that posted through the removed frame.

Anyway, my frame tracking can be omitted if we don&apos;t care to remove frame or handle it in other layer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>632343</commentid>
    <comment_count>26</comment_count>
      <attachid>143709</attachid>
    <who name="Taiju Tsuiki">tzik</who>
    <bug_when>2012-05-23 19:47:06 -0700</bug_when>
    <thetext>Created attachment 143709
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>632359</commentid>
    <comment_count>27</comment_count>
      <attachid>142628</attachid>
    <who name="Taiju Tsuiki">tzik</who>
    <bug_when>2012-05-23 20:15:56 -0700</bug_when>
    <thetext>Comment on attachment 142628
Patch

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

&gt;&gt;&gt; Source/WebCore/inspector/front-end/FileSystemModel.js:222
&gt;&gt;&gt; +    this._filesystemModel.addFrameForOrigin(this, this._securityOrigin);
&gt;&gt; 
&gt;&gt; Why do you need to keep track of frames at all? Could you track only origins instead?
&gt; 
&gt; Pending

Done

&gt;&gt;&gt; Source/WebCore/inspector/front-end/ResourcesPanel.js:1647
&gt;&gt;&gt; +        this._filesystemModel = new WebInspector.FileSystemModel();
&gt;&gt; 
&gt;&gt; Since you create filesystem model lazily (which is good), you should traverse all existing frames in the tree in FileSystemModel constructor. Although I&apos;d remove tracking of frames and left origins only.
&gt; 
&gt; Pending

Done</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>632892</commentid>
    <comment_count>28</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-05-24 10:00:03 -0700</bug_when>
    <thetext>(In reply to comment #25)
&gt; (In reply to comment #18)
&gt; &gt; Could you remind me if there was reason you don&apos;t grow files tree under the filesystem node itself? Do you anticipate deep trees and lack of scrollbar in the sidebar concerns you?
&gt; 
&gt; Yes, I&apos;d like to avoid deep tree in sidebar, as your suggestion.
&gt; 

Ok!

&gt; (In reply to comment #23)
&gt; &gt; &gt; I&apos;m tracking frame to associate requests with frame, and to migrate in-flight requests to another frame when a frame is detached.
&gt; &gt; 
&gt; &gt; Could you elaborate on this? What requests and why you want to associate them? Also, I thought that we no longer support detached frame use cases.
&gt; 
&gt; I tried to handle that: I&apos;m going to post a request (e.g. readDirectory, readFile, getMetadata) through a frame.

What do you mean through a frame? Don&apos;t you do that natively?

&gt; The request is processed in the context of the frame. Howeven, the lifetime of a frame is up to the page,
&gt;  so the frame can be removed even if there are pending requests.
&gt; We can continue to process the request in another frame, if there is another frame with same origin.
&gt; So, I want to repost all pending request that posted through the removed frame.
&gt; 

I think this adds unnecessary complexity to the code. I&apos;d rather start with no frames collection.

&gt; Anyway, my frame tracking can be omitted if we don&apos;t care to remove frame or handle it in other layer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>633532</commentid>
    <comment_count>29</comment_count>
    <who name="Taiju Tsuiki">tzik</who>
    <bug_when>2012-05-24 21:49:21 -0700</bug_when>
    <thetext>(In reply to comment #28)
&gt; 
&gt; &gt; (In reply to comment #23)
&gt; &gt; &gt; &gt; I&apos;m tracking frame to associate requests with frame, and to migrate in-flight requests to another frame when a frame is detached.
&gt; &gt; &gt; 
&gt; &gt; &gt; Could you elaborate on this? What requests and why you want to associate them? Also, I thought that we no longer support detached frame use cases.
&gt; &gt; 
&gt; &gt; I tried to handle that: I&apos;m going to post a request (e.g. readDirectory, readFile, getMetadata) through a frame.
&gt; 
&gt; What do you mean through a frame? Don&apos;t you do that natively?

I mean &quot;using its Document as ScriptExecutionContext for DOMFileSystem&quot;.
OK, I droped it from frontend and will put it in backend if needed in future.

&gt; 
&gt; &gt; The request is processed in the context of the frame. Howeven, the lifetime of a frame is up to the page,
&gt; &gt;  so the frame can be removed even if there are pending requests.
&gt; &gt; We can continue to process the request in another frame, if there is another frame with same origin.
&gt; &gt; So, I want to repost all pending request that posted through the removed frame.
&gt; &gt; 
&gt; 
&gt; I think this adds unnecessary complexity to the code. I&apos;d rather start with no frames collection.

OK, I removed it in #26 patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>640456</commentid>
    <comment_count>30</comment_count>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2012-06-04 03:51:49 -0700</bug_when>
    <thetext>The patch seems ready for another review.  Pavel, would you be able to take a look at it or CC a person who could review?  Thanks,</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>642196</commentid>
    <comment_count>31</comment_count>
    <who name="Taiju Tsuiki">tzik</who>
    <bug_when>2012-06-05 22:53:03 -0700</bug_when>
    <thetext>*** Bug 86818 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>642419</commentid>
    <comment_count>32</comment_count>
      <attachid>143709</attachid>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2012-06-06 06:39:13 -0700</bug_when>
    <thetext>Comment on attachment 143709
Patch

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

Please add new files to WebCore.xcodeproj/project.pbxproj as well.
Could you please upload a patch with a ChangeLog next time?

&gt; Source/WebCore/inspector/front-end/FileSystemModel.js:44
&gt; +    this._pendingReadDirectoryRequests = {};

Unused, please remove.

&gt; Source/WebCore/inspector/front-end/FileSystemModel.js:93
&gt; +        if (frame.securityOrigin == &quot;null&quot;)

Please use ===.

&gt; Source/WebCore/inspector/front-end/FileSystemModel.js:98
&gt; +        var new_origin = false;

newOrigin

&gt; Source/WebCore/inspector/front-end/FileSystemModel.js:129
&gt; +        var last_origin = this._frameIdsForOrigin[origin].isEmpty();

lastOrigin

&gt; Source/WebCore/inspector/front-end/FileSystemModel.js:151
&gt; +        if (!this._fileSystemsForOrigin[origin])

How can this._fileSystemsForOrigin[origin] be already defined here?
This origin was either never added or already removed.

&gt; Source/WebCore/inspector/front-end/FileSystemModel.js:156
&gt; +            if (!this._fileSystemsForOrigin[origin][types[i]]) {

Again, how can this._fileSystemsForOrigin[origin][types[i]] be already defined here?

&gt; Source/WebCore/inspector/front-end/FileSystemModel.js:205
&gt; +    readDirectory: function(directory, callback)

Let&apos;s move this method and Entry, Directory and File classes to another patch, they are not really related to adding file system item to storage tree.

&gt; Source/WebCore/inspector/front-end/FileSystemModel.js:216
&gt; +WebInspector.FileSystemModel.nextRequestId = 1;

Unused, please remove.

&gt; Source/WebCore/inspector/front-end/ResourcesPanel.js:70
&gt; +    if (Preferences.exposeFileSystemInspection) {

While this feature is not implemented yet it should be hidden behind experimental flag.
See WebInspector.ExperimentsSettings constructor in Settings.js for usage examples.
You should then run chromium with --enable-devtools-experiments flag and enable experiment in settings pane.

&gt; Source/WebCore/inspector/front-end/ResourcesPanel.js:1512
&gt; +        if (this.expanded)

This should be removed since TreeOutline will call onexpand after attaching an expanded node.

&gt; Source/WebCore/inspector/front-end/ResourcesPanel.js:1550
&gt; +    refreshFileSystem: function()

Looks like this method is not used outside of this class, please make it private.

&gt; Source/WebCore/inspector/front-end/ResourcesPanel.js:2004
&gt; +        if (!this._fileSystemView)

if (this._fileSystemView)

&gt; Source/WebCore/inspector/front-end/ResourcesPanel.js:2012
&gt; +            if (!WebInspector.FileSystemView) {

How is that possible? Seems redundant.

&gt; Source/WebCore/inspector/front-end/ResourcesPanel.js:2023
&gt; +        if (this.fileSystemView &amp;&amp; this._storagePanel.visibleView == this.fileSystemView)

You should not need this. When file system node is removed another node will be selected and its view shown automatically.
You might need to let fileSystemView clear some of its state here later though.

&gt; Source/WebCore/inspector/front-end/Settings.js:48
&gt; +    exposeFileSystemInspection: true

Preferences.exposeFileSystemInspection should be false by default.
You should also enable it for chromium port in Source/Webkit/chromium/src/js/DevTools.js

&gt; Source/WebCore/inspector/front-end/utilities.js:680
&gt; +(function() {

I don&apos;t think you need a function expression here.
Just define a property on Object.prototype (e.g. like keySet is defined on Array.prototype above)

&gt; Source/WebCore/inspector/front-end/utilities.js:681
&gt; +var objectPrototype = /** @type {!Object} */ Object.prototype;

Please inline.

&gt; Source/WebCore/inspector/front-end/utilities.js:693
&gt; +Object.defineProperty(objectPrototype, &quot;anyOf&quot;,

I don&apos;t think this is used, please remove.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>642423</commentid>
    <comment_count>33</comment_count>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2012-06-06 06:48:05 -0700</bug_when>
    <thetext>One more thing: I see that you unconditionally add two file systems for each security origin. This could clutter FileSystem node. 

Is there a way to detect and skip &quot;null&quot; file systems meaning file systems that were never used for certain security origins?
I am not saying empty because even an attempt to read from filesystem makes it valuable to show it to developer, but what about filesystems that nobody even tried to read?
This is not something that is needed for the first version but we should do it at some point if possible.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>643205</commentid>
    <comment_count>34</comment_count>
      <attachid>146196</attachid>
    <who name="Taiju Tsuiki">tzik</who>
    <bug_when>2012-06-06 21:58:50 -0700</bug_when>
    <thetext>Created attachment 146196
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>643218</commentid>
    <comment_count>35</comment_count>
      <attachid>143709</attachid>
    <who name="Taiju Tsuiki">tzik</who>
    <bug_when>2012-06-06 22:28:01 -0700</bug_when>
    <thetext>Comment on attachment 143709
Patch

Thank you for reviewing!
Sorry, I put too much in previous patch.

I packed necessary part to add storage tree item in this patch.
Could you take another look?

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

&gt;&gt; Source/WebCore/inspector/front-end/FileSystemModel.js:44
&gt;&gt; +    this._pendingReadDirectoryRequests = {};
&gt; 
&gt; Unused, please remove.

Done

&gt;&gt; Source/WebCore/inspector/front-end/FileSystemModel.js:93
&gt;&gt; +        if (frame.securityOrigin == &quot;null&quot;)
&gt; 
&gt; Please use ===.

Done, thanks!

&gt;&gt; Source/WebCore/inspector/front-end/FileSystemModel.js:98
&gt;&gt; +        var new_origin = false;
&gt; 
&gt; newOrigin

Done

&gt;&gt; Source/WebCore/inspector/front-end/FileSystemModel.js:129
&gt;&gt; +        var last_origin = this._frameIdsForOrigin[origin].isEmpty();
&gt; 
&gt; lastOrigin

Done

&gt;&gt; Source/WebCore/inspector/front-end/FileSystemModel.js:151
&gt;&gt; +        if (!this._fileSystemsForOrigin[origin])
&gt; 
&gt; How can this._fileSystemsForOrigin[origin] be already defined here?
&gt; This origin was either never added or already removed.

It&apos;s from old code. Removed.

&gt;&gt; Source/WebCore/inspector/front-end/FileSystemModel.js:156
&gt;&gt; +            if (!this._fileSystemsForOrigin[origin][types[i]]) {
&gt; 
&gt; Again, how can this._fileSystemsForOrigin[origin][types[i]] be already defined here?

Done

&gt;&gt; Source/WebCore/inspector/front-end/FileSystemModel.js:205
&gt;&gt; +    readDirectory: function(directory, callback)
&gt; 
&gt; Let&apos;s move this method and Entry, Directory and File classes to another patch, they are not really related to adding file system item to storage tree.

Done

&gt;&gt; Source/WebCore/inspector/front-end/FileSystemModel.js:216
&gt;&gt; +WebInspector.FileSystemModel.nextRequestId = 1;
&gt; 
&gt; Unused, please remove.

Done

&gt;&gt; Source/WebCore/inspector/front-end/ResourcesPanel.js:70
&gt;&gt; +    if (Preferences.exposeFileSystemInspection) {
&gt; 
&gt; While this feature is not implemented yet it should be hidden behind experimental flag.
&gt; See WebInspector.ExperimentsSettings constructor in Settings.js for usage examples.
&gt; You should then run chromium with --enable-devtools-experiments flag and enable experiment in settings pane.

Done

&gt;&gt; Source/WebCore/inspector/front-end/ResourcesPanel.js:1512
&gt;&gt; +        if (this.expanded)
&gt; 
&gt; This should be removed since TreeOutline will call onexpand after attaching an expanded node.

Done

&gt;&gt; Source/WebCore/inspector/front-end/ResourcesPanel.js:1550
&gt;&gt; +    refreshFileSystem: function()
&gt; 
&gt; Looks like this method is not used outside of this class, please make it private.

Done

&gt;&gt; Source/WebCore/inspector/front-end/ResourcesPanel.js:2004
&gt;&gt; +        if (!this._fileSystemView)
&gt; 
&gt; if (this._fileSystemView)

Done

&gt;&gt; Source/WebCore/inspector/front-end/ResourcesPanel.js:2012
&gt;&gt; +            if (!WebInspector.FileSystemView) {
&gt; 
&gt; How is that possible? Seems redundant.

Removed

&gt;&gt; Source/WebCore/inspector/front-end/ResourcesPanel.js:2023
&gt;&gt; +        if (this.fileSystemView &amp;&amp; this._storagePanel.visibleView == this.fileSystemView)
&gt; 
&gt; You should not need this. When file system node is removed another node will be selected and its view shown automatically.
&gt; You might need to let fileSystemView clear some of its state here later though.

OK, I removed this time.

&gt;&gt; Source/WebCore/inspector/front-end/Settings.js:48
&gt;&gt; +    exposeFileSystemInspection: true
&gt; 
&gt; Preferences.exposeFileSystemInspection should be false by default.
&gt; You should also enable it for chromium port in Source/Webkit/chromium/src/js/DevTools.js

Thanks. Done.

&gt;&gt; Source/WebCore/inspector/front-end/utilities.js:680
&gt;&gt; +(function() {
&gt; 
&gt; I don&apos;t think you need a function expression here.
&gt; Just define a property on Object.prototype (e.g. like keySet is defined on Array.prototype above)

Done

&gt;&gt; Source/WebCore/inspector/front-end/utilities.js:681
&gt;&gt; +var objectPrototype = /** @type {!Object} */ Object.prototype;
&gt; 
&gt; Please inline.

Closure compiler can&apos;t recognize Object.prototype as an Object. Should I add new class for it? or ignore its warning?

&gt;&gt; Source/WebCore/inspector/front-end/utilities.js:693
&gt;&gt; +Object.defineProperty(objectPrototype, &quot;anyOf&quot;,
&gt; 
&gt; I don&apos;t think this is used, please remove.

Done</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>643345</commentid>
    <comment_count>36</comment_count>
    <who name="Taiju Tsuiki">tzik</who>
    <bug_when>2012-06-07 02:19:32 -0700</bug_when>
    <thetext>(In reply to comment #33)
&gt; One more thing: I see that you unconditionally add two file systems for each security origin. This could clutter FileSystem node. 
&gt; 
&gt; Is there a way to detect and skip &quot;null&quot; file systems meaning file systems that were never used for certain security origins?
Yes, we can detect it at least in chrome.

&gt; I am not saying empty because even an attempt to read from filesystem makes it valuable to show it to developer, but what about filesystems that nobody even tried to read?
&gt; This is not something that is needed for the first version but we should do it at some point if possible.

I agree. I&apos;m showing too many unused FS on the tree, 2 for tweet button, 2 for like button, 2 for +1 button.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>643370</commentid>
    <comment_count>37</comment_count>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2012-06-07 03:13:34 -0700</bug_when>
    <thetext>WebCore.xcodeproj/project.pbxproj change is still missing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>643374</commentid>
    <comment_count>38</comment_count>
      <attachid>146196</attachid>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2012-06-07 03:18:58 -0700</bug_when>
    <thetext>Comment on attachment 146196
Patch

Please add new files to WebCore.xccodeproj and rename filesystem.png to fileSystem.png. Other than that looks good.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>643376</commentid>
    <comment_count>39</comment_count>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2012-06-07 03:20:19 -0700</bug_when>
    <thetext>(In reply to comment #36)
&gt; (In reply to comment #33)
&gt; &gt; One more thing: I see that you unconditionally add two file systems for each security origin. This could clutter FileSystem node. 
&gt; &gt; 
&gt; &gt; Is there a way to detect and skip &quot;null&quot; file systems meaning file systems that were never used for certain security origins?
&gt; Yes, we can detect it at least in chrome.
Please file a bug for that and add a FIXME with its number to the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>644193</commentid>
    <comment_count>40</comment_count>
      <attachid>146446</attachid>
    <who name="Taiju Tsuiki">tzik</who>
    <bug_when>2012-06-07 18:42:40 -0700</bug_when>
    <thetext>Created attachment 146446
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>644208</commentid>
    <comment_count>41</comment_count>
    <who name="Taiju Tsuiki">tzik</who>
    <bug_when>2012-06-07 18:59:58 -0700</bug_when>
    <thetext>(In reply to comment #37)
&gt; WebCore.xcodeproj/project.pbxproj change is still missing.

WebCore.xcodeproj/project.pbxproj seems not to contain other resources like applicationCache.png.
I think .png is managed automatically.

(In reply to comment #39)
&gt; (In reply to comment #36)
&gt; &gt; (In reply to comment #33)
&gt; &gt; &gt; One more thing: I see that you unconditionally add two file systems for each security origin. This could clutter FileSystem node. 
&gt; &gt; &gt; 
&gt; &gt; &gt; Is there a way to detect and skip &quot;null&quot; file systems meaning file systems that were never used for certain security origins?
&gt; &gt; Yes, we can detect it at least in chrome.
&gt; Please file a bug for that and add a FIXME with its number to the patch.

OK, I filed it as http://webkit.org/b/88602 .</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>644485</commentid>
    <comment_count>42</comment_count>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2012-06-08 01:56:28 -0700</bug_when>
    <thetext>(In reply to comment #41)
&gt; (In reply to comment #37)
&gt; &gt; WebCore.xcodeproj/project.pbxproj change is still missing.
&gt; 
&gt; WebCore.xcodeproj/project.pbxproj seems not to contain other resources like applicationCache.png.
&gt; I think .png is managed automatically.
Sorry for that, you don&apos;t need to update xcode project file here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>644526</commentid>
    <comment_count>43</comment_count>
      <attachid>146446</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-08 02:50:43 -0700</bug_when>
    <thetext>Comment on attachment 146446
Patch

Clearing flags on attachment: 146446

Committed r119815: &lt;http://trac.webkit.org/changeset/119815&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>644527</commentid>
    <comment_count>44</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-08 02:50:51 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>115742</attachid>
            <date>2011-11-17 22:47:23 -0800</date>
            <delta_ts>2011-11-28 09:06:29 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-72691-20111118154721.patch</filename>
            <type>text/plain</type>
            <size>37997</size>
            <attacher name="Taiju Tsuiki">tzik</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAwNzAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTM2NDgwZDZhNmFmMTEy
OGM5MmYwOTdjMTliOTVjMDJkNmMzMTJmZi4uNjUwODgyZDQ0OGE5MzZiZGZjOTViNmRkMzJmNDAz
ZTRhMzUxOGZkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY5IEBACisyMDExLTExLTE3ICBUYWlq
dSBUU1VJS0kgIDx0emlrQGNocm9taXVtLm9yZz4KKworICAgICAgICBbSW5zcGVjdG9yXVtGaWxl
U3lzdGVtXSBBZGQgRmlsZVN5c3RlbSBpdGVtIHRvIHN0b3JhZ2UgdHJlZQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzI2OTEKKworICAgICAgICBBZGRp
bmcgRmlsZVN5c3RlbSBpdGVtIHRvIHN0b3JhZ2UgdHJlZSBvbiBSZXNvdXJjZXMgcGFuZWwuCisg
ICAgICAgIEFkZGluZyBOb3RpZmljYXRpb24gb24gRmlsZVN5c3RlbSBjcmVhdGlvbiBhbmQgaW52
YWxpZGF0aW9uLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIE5vIG5ldyB0ZXN0cy4KKworICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBX
ZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajoKKyAgICAgICAgKiBmaWxlYXBpL0RPTUZpbGVT
eXN0ZW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NRmlsZVN5c3RlbTo6Y29udGV4dERlc3Ry
b3llZCk6CisgICAgICAgICogZmlsZWFwaS9ET01GaWxlU3lzdGVtLmg6CisgICAgICAgICogaW5z
cGVjdG9yL0luc3BlY3Rvci5qc29uOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDb250
cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6Okluc3Bl
Y3RvckNvbnRyb2xsZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6
Y29ubmVjdEZyb250ZW5kKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6
OmRpc2Nvbm5lY3RGcm9udGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9s
bGVyOjpyZXN0b3JlSW5zcGVjdG9yU3RhdGVGcm9tQ29va2llKToKKyAgICAgICAgKiBpbnNwZWN0
b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JG
aWxlU3lzdGVtQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRmlsZVN5c3Rl
bUFnZW50OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRmlsZVN5c3RlbUFn
ZW50Ojp+SW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvckZpbGVTeXN0ZW1BZ2VudDo6ZGlkT3BlbkZpbGVTeXN0ZW0pOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50OjppbnZhbGlkYXRlRmlsZVN5c3RlbSk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQ6OmVuYWJsZSk6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQ6OmRpc2FibGUpOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50OjpyZXN0b3JlKToKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvckZpbGVTeXN0ZW1BZ2VudDo6SW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50
KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50Lmg6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnRQcm94eTo6Y3JlYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckZpbGVTeXN0ZW1BZ2VudFByb3h5OjpnZXQpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50UHJveHk6OmNsZWFyKToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckZpbGVTeXN0ZW1BZ2VudFByb3h5Ojp+SW5zcGVjdG9y
RmlsZVN5c3RlbUFnZW50UHJveHkpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRmlsZVN5
c3RlbUFnZW50UHJveHk6Okluc3BlY3RvckZpbGVTeXN0ZW1BZ2VudFByb3h5KToKKyAgICAgICAg
KiBpbnNwZWN0b3IvSW5zcGVjdG9yRmlsZVN5c3RlbUluc3RydW1lbnRhdGlvbi5oOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRPcGVuRmlsZVN5c3RlbSk6
CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZE9wZW5GaWxlU3lzdGVt
SW1wbCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oOgor
ICAgICAgICAqIGluc3BlY3Rvci9jb21waWxlLWZyb250LWVuZC5zaDoKKyAgICAgICAgKiBpbnNw
ZWN0b3IvZnJvbnQtZW5kL0VtcHR5Vmlldy5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5FbXB0
eVZpZXcucHJvdG90eXBlLndhc1Nob3duKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5k
L0ZpbGVTeXN0ZW0uanM6IEFkZGVkLgorICAgICAgICAoV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1E
aXNwYXRjaGVyKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtRGlzcGF0Y2hlci5w
cm90b3R5cGUuZmlsZVN5c3RlbUFkZGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5GaWxlU3lz
dGVtRGlzcGF0Y2hlci5wcm90b3R5cGUuaW52YWxpZGF0ZUZpbGVTeXN0ZW0pOgorICAgICAgICAq
IGluc3BlY3Rvci9mcm9udC1lbmQvRmlsZVN5c3RlbVZpZXcuanM6IEFkZGVkLgorICAgICAgICAo
V2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1WaWV3KToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQt
ZW5kL0ltYWdlcy9maWxlU3lzdGVtLnBuZzogQWRkZWQuCisgICAgICAgICogaW5zcGVjdG9yL2Zy
b250LWVuZC9SZXNvdXJjZXNQYW5lbC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SZXNvdXJj
ZXNQYW5lbC5wcm90b3R5cGUucmVzZXQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNl
c1BhbmVsLnByb3RvdHlwZS5hZGRGaWxlU3lzdGVtKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5S
ZXNvdXJjZXNQYW5lbC5wcm90b3R5cGUuaW52YWxpZGF0ZUZpbGVTeXN0ZW0pOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLlJlc291cmNlc1BhbmVsLnByb3RvdHlwZS5zaG93RmlsZVN5c3RlbSk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbVRyZWVFbGVtZW50KToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5GaWxlU3lzdGVtVHJlZUVsZW1lbnQucHJvdG90eXBlLm9uc2VsZWN0KToKKyAg
ICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1dlYktpdC5xcmM6CisgICAgICAgICogaW5zcGVj
dG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuaHRtbDoKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQt
ZW5kL3Jlc291cmNlc1BhbmVsLmNzczoKKyAgICAgICAgKC5maWxlc3lzdGVtLXN0b3JhZ2UtdHJl
ZS1pdGVtIC5pY29uKToKKwogMjAxMS0xMS0xNyAgRGF2aWQgUmV2ZW1hbiAgPHJldmVtYW5AY2hy
b21pdW0ub3JnPgogCiAgICAgICAgIFtDaHJvbWl1bV0gQ2FsbHMgdG8gcGFpbnRDb250ZW50c0lm
RGlydHkoKSBhbmQgdXBkYXRlQ29tcG9zaXRvclJlc291cmNlcygpIHNob3VsZCBiZSBiYWxhbmNl
ZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUuZ3lwaQppbmRleCA3YmEyNWE5YjZiYTYxYjE3MTI5MjljZjE2MmM3MThjODM0
MmY3ZjdhLi4xMDBmNmViZWJmYTRjMmYyOTJhOTYxOTBmMjQ4YWM1ZWY2MmRlY2VjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5neXBpCkBAIC02MzM4LDYgKzYzMzgsOCBAQAogICAgICAgICAgICAgJ2luc3BlY3Rvci9m
cm9udC1lbmQvRXh0ZW5zaW9uUGFuZWwuanMnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9u
dC1lbmQvRXh0ZW5zaW9uUmVnaXN0cnlTdHViLmpzJywKICAgICAgICAgICAgICdpbnNwZWN0b3Iv
ZnJvbnQtZW5kL0V4dGVuc2lvblNlcnZlci5qcycsCisgICAgICAgICAgICAnaW5zcGVjdG9yL2Zy
b250LWVuZC9GaWxlU3lzdGVtLmpzJywKKyAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5k
L0ZpbGVTeXN0ZW1WaWV3LmpzJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0Zv
bnRWaWV3LmpzJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0dvVG9MaW5lRGlh
bG9nLmpzJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0hBUkVudHJ5LmpzJywK
QEAgLTY0OTYsNiArNjQ5OCw3IEBACiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9J
bWFnZXMvZXJyb3JSZWREb3QucG5nJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5k
L0ltYWdlcy9mb3J3YXJkLnBuZycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9J
bWFnZXMvZnJhbWUucG5nJywKKyAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0ltYWdl
cy9maWxlU3lzdGVtLnBuZycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9JbWFn
ZXMvZ2xvc3N5SGVhZGVyLnBuZycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9J
bWFnZXMvZ2xvc3N5SGVhZGVyUHJlc3NlZC5wbmcnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9m
cm9udC1lbmQvSW1hZ2VzL2dsb3NzeUhlYWRlclNlbGVjdGVkLnBuZycsCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvaiBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCmluZGV4IDhkNzRiYTZjN2VmYzk1MzAw
M2RhMjU5NWRhZjZjZjg1MTgwMTEzOWIuLjI1MzIyNDNhMmJiZjczMjlhM2E3NGJmZTk5OTE2Mzgx
NTBmN2U4MDkgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNv
cmUudmNwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNw
cm9qCkBAIC02ODg3Nyw2ICs2ODg3NywxNCBAQAogCQkJCQk+CiAJCQkJPC9GaWxlPgogCQkJCTxG
aWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5caW5zcGVjdG9yXGZyb250LWVuZFxGaWxlU3lzdGVt
LmpzIgorCQkJCQk+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0i
Li5caW5zcGVjdG9yXGZyb250LWVuZFxGaWxlU3lzdGVtVmlldy5qcyIKKwkJCQkJPgorCQkJCTwv
RmlsZT4KKwkJCQk8RmlsZQogCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGluc3BlY3Rvclxmcm9udC1l
bmRcRm9udFZpZXcuanMiCiAJCQkJCT4KIAkJCQk8L0ZpbGU+CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9maWxlYXBpL0RPTUZpbGVTeXN0ZW0uY3BwIGIvU291cmNlL1dlYkNvcmUvZmlsZWFw
aS9ET01GaWxlU3lzdGVtLmNwcAppbmRleCBhYzM4NjkwM2IxOGZiYmNiMWM1MGVhNDc4MjIyMDE5
MTFlNzY3MjIwLi40NjI5MjdkMjg4ZGQzNTk5OTM3ZWUzMzk0MWIyNWNhZWExOGVlODgxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0RPTUZpbGVTeXN0ZW0uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2ZpbGVhcGkvRE9NRmlsZVN5c3RlbS5jcHAKQEAgLTQ1LDYgKzQ1LDcgQEAK
ICNpbmNsdWRlICJGaWxlV3JpdGVyLmgiCiAjaW5jbHVkZSAiRmlsZVdyaXRlckJhc2VDYWxsYmFj
ay5oIgogI2luY2x1ZGUgIkZpbGVXcml0ZXJDYWxsYmFjay5oIgorI2luY2x1ZGUgIkluc3BlY3Rv
ckZpbGVTeXN0ZW1BZ2VudC5oIgogI2luY2x1ZGUgIkluc3BlY3RvckZpbGVTeXN0ZW1JbnN0cnVt
ZW50YXRpb24uaCIKICNpbmNsdWRlICJNZXRhZGF0YUNhbGxiYWNrLmgiCiAjaW5jbHVkZSAiU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dC5oIgpAQCAtODMsNiArODQsMTEgQEAgYm9vbCBET01GaWxlU3lz
dGVtOjpoYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdAogCiB2b2lkIERPTUZpbGVTeXN0ZW06OmNv
bnRleHREZXN0cm95ZWQoKQogeworICAgIFJlZlB0cjxET01GaWxlU3lzdGVtPiBmaWxlU3lzdGVt
KHRoaXMpOworICAgIGlmIChJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQqIGFnZW50ID0gbV9hZ2Vu
dFByb3h5LmdldCgpID8gbV9hZ2VudFByb3h5LT5nZXQoKSA6IDApIHsKKyAgICAgICAgbV9hZ2Vu
dFByb3h5ID0gMDsKKyAgICAgICAgYWdlbnQtPmludmFsaWRhdGVGaWxlU3lzdGVtKHRoaXMpOwor
ICAgIH0KICAgICBtX2FzeW5jRmlsZVN5c3RlbS0+c3RvcCgpOwogICAgIEFjdGl2ZURPTU9iamVj
dDo6Y29udGV4dERlc3Ryb3llZCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmls
ZWFwaS9ET01GaWxlU3lzdGVtLmggYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0RPTUZpbGVTeXN0
ZW0uaAppbmRleCA3NGZhOWFjMTgxNWZkNWVjZjE1ZTFjNTBiNWUwMjkwY2FlYjY4YTg3Li5mYmUz
OGFiYjRiMmM5NmE5NDJmYmRkMmYzOGE5YWQxMjVlMGMxZWQ5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9maWxlYXBpL0RPTUZpbGVTeXN0ZW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxl
YXBpL0RPTUZpbGVTeXN0ZW0uaApAQCAtNDQsNiArNDQsNyBAQCBjbGFzcyBGaWxlOwogY2xhc3Mg
RmlsZUNhbGxiYWNrOwogY2xhc3MgRmlsZUVudHJ5OwogY2xhc3MgRmlsZVdyaXRlckNhbGxiYWNr
OworY2xhc3MgSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50UHJveHk7CiAKIGNsYXNzIERPTUZpbGVT
eXN0ZW0gOiBwdWJsaWMgRE9NRmlsZVN5c3RlbUJhc2UsIHB1YmxpYyBBY3RpdmVET01PYmplY3Qg
ewogcHVibGljOgpAQCAtOTIsNiArOTMsOCBAQCBwcml2YXRlOgogICAgICAgICBSZWZQdHI8Q0I+
IG1fY2FsbGJhY2s7CiAgICAgICAgIFJlZlB0cjxDQkFyZz4gbV9jYWxsYmFja0FyZzsKICAgICB9
OworCisgICAgUmVmUHRyPEluc3BlY3RvckZpbGVTeXN0ZW1BZ2VudFByb3h5PiBtX2FnZW50UHJv
eHk7CiB9OwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ0IsIHR5cGVuYW1lIENCQXJnPgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uCmluZGV4IGUzNTNkNmUzZTdlNDBhMWU5OWEy
N2Q1NmMxYTZjMjJlYmU5ZjdhZTkuLjA5YzA2Y2MxYTI2NTc5NGUxNTk5NTE4ZTljZjI2OWRjMjdi
NzMyZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNv
bgorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24KQEAgLTEwMTQs
MTQgKzEwMTQsNDYgQEAKICAgICAgICAgImNvbW1hbmRzIjogWwogICAgICAgICAgICAgewogICAg
ICAgICAgICAgICAgICJuYW1lIjogImVuYWJsZSIsCi0gICAgICAgICAgICAgICAgImRlc2NyaXB0
aW9uIjogIkVuYWJsZXMgZmlsZVN5c3RlbUFkZGVkIG5vdGlmaWNhdGlvbi4iCisgICAgICAgICAg
ICAgICAgImRlc2NyaXB0aW9uIjogIkVuYWJsZXMgZXZlbnRzIGZyb20gYmFja2VuZC4iCiAgICAg
ICAgICAgICB9LAogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICJuYW1lIjogImRpc2Fi
bGUiLAotICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJEaXNhYmxlcyBmaWxlU3lzdGVt
QWRkZWQgbm90aWZpY2F0aW9uLiIKKyAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiRGlz
YWJsZXMgZXZlbnRzIGZyb20gYmFja2VuZC4uIgogICAgICAgICAgICAgfQogICAgICAgICBdLAog
ICAgICAgICAiZXZlbnRzIjogWworICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICJuYW1l
IjogImZpbGVTeXN0ZW1BZGRlZCIsCisgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIk5v
dGlmaWVzIGZyb250ZW5kIG9mIG5ldyBGaWxlU3lzdGVtLiIsCisgICAgICAgICAgICAgICAgInBh
cmFtZXRlcnMiOiBbCisgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICJuYW1lIjogImZpbGVTeXN0ZW1OYW1lIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICJk
ZXNjcmlwdGlvbiI6ICJVbmlxdWUgaWRlbnRpZmllZCBmb3IgdGhlIEZpbGVTeXN0ZW0uIiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICJ0eXBlIjogInN0cmluZyIKKyAgICAgICAgICAgICAgICAg
ICAgfSwKKyAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgIm5h
bWUiOiAib3JpZ2luIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJT
ZWN1cml0eSBvcmlnaW4uIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlIjogInN0cmlu
ZyIKKyAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgICAgICAgICAgIm5hbWUiOiAidHlwZSIsCisgICAgICAgICAgICAgICAgICAgICAg
ICAiZGVzY3JpcHRpb24iOiAiRmlsZVN5c3RlbSB0eXBlLCBvbmUgb2YgdGVtcG9yYXJ5LCBwZXJz
aXN0ZW50IG9yIGV4dGVybmFsLiIsCisgICAgICAgICAgICAgICAgICAgICAgICAidHlwZSI6ICJz
dHJpbmciCisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBdCisgICAgICAg
ICAgICB9LAorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICJuYW1lIjogImZpbGVTeXN0
ZW1JbnZhbGlkYXRlZCIsCisgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIk5vdGlmaWVz
IGZyb250ZW5kIG9mIGZpbGVzeXN0ZW0gaW52YWxpZGF0aW9uLiIsCisgICAgICAgICAgICAgICAg
InBhcmFtZXRlcnMiOiBbCisgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICJuYW1lIjogImZpbGVTeXN0ZW1OYW1lIiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICJkZXNjcmlwdGlvbiI6ICJGaWxlU3lzdGVtIG5hbWUgdG8gYmUgaW52YWxpZGF0ZWQuIiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICJ0eXBlIjogInN0cmluZyIKKyAgICAgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgIH0KICAgICAgICAgXQogICAgIH0s
CiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNv
bnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xs
ZXIuY3BwCmluZGV4IDU3OGE5ZDNkNTllNDhkOGI3NWQyNWRlYWEyMjljZmJkZmE0MTE4ZDYuLjI0
ZGZjNTE2M2Q0ZTFjMjBlMTQ5MmY5ZTNiMzMxYmI5OTJiZjhmNWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKQEAgLTEwNiw3ICsxMDYs
NyBAQCBJbnNwZWN0b3JDb250cm9sbGVyOjpJbnNwZWN0b3JDb250cm9sbGVyKFBhZ2UqIHBhZ2Us
IEluc3BlY3RvckNsaWVudCogaW5zcGVjdG9yQwogICAgICwgbV9kYXRhYmFzZUFnZW50KEluc3Bl
Y3RvckRhdGFiYXNlQWdlbnQ6OmNyZWF0ZShtX2luc3RydW1lbnRpbmdBZ2VudHMuZ2V0KCksIG1f
c3RhdGUuZ2V0KCkpKQogI2VuZGlmCiAjaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQotICAgICwgbV9m
aWxlc3lzdGVtQWdlbnQoSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50OjpjcmVhdGUobV9pbnN0cnVt
ZW50aW5nQWdlbnRzLmdldCgpKSkKKyAgICAsIG1fZmlsZVN5c3RlbUFnZW50KEluc3BlY3RvckZp
bGVTeXN0ZW1BZ2VudDo6Y3JlYXRlKG1faW5zdHJ1bWVudGluZ0FnZW50cy5nZXQoKSwgbV9zdGF0
ZS5nZXQoKSkpCiAjZW5kaWYKICAgICAsIG1fZG9tU3RvcmFnZUFnZW50KEluc3BlY3RvckRPTVN0
b3JhZ2VBZ2VudDo6Y3JlYXRlKG1faW5zdHJ1bWVudGluZ0FnZW50cy5nZXQoKSwgbV9zdGF0ZS5n
ZXQoKSkpCiAgICAgLCBtX3RpbWVsaW5lQWdlbnQoSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6Y3Jl
YXRlKG1faW5zdHJ1bWVudGluZ0FnZW50cy5nZXQoKSwgbV9zdGF0ZS5nZXQoKSkpCkBAIC0yMTQs
NyArMjE0LDcgQEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpjb25uZWN0RnJvbnRlbmQoKQog
ICAgIG1fZGF0YWJhc2VBZ2VudC0+c2V0RnJvbnRlbmQobV9pbnNwZWN0b3JGcm9udGVuZC5nZXQo
KSk7CiAjZW5kaWYKICNpZiBFTkFCTEUoRklMRV9TWVNURU0pCi0gICAgbV9maWxlc3lzdGVtQWdl
bnQtPnNldEZyb250ZW5kKG1faW5zcGVjdG9yRnJvbnRlbmQuZ2V0KCkpOworICAgIG1fZmlsZVN5
c3RlbUFnZW50LT5zZXRGcm9udGVuZChtX2luc3BlY3RvckZyb250ZW5kLmdldCgpKTsKICNlbmRp
ZgogICAgIG1fZG9tU3RvcmFnZUFnZW50LT5zZXRGcm9udGVuZChtX2luc3BlY3RvckZyb250ZW5k
LmdldCgpKTsKICNpZiBFTkFCTEUoV09SS0VSUykKQEAgLTI0NCw3ICsyNDQsNyBAQCB2b2lkIElu
c3BlY3RvckNvbnRyb2xsZXI6OmNvbm5lY3RGcm9udGVuZCgpCiAgICAgICAgIG1fZGVidWdnZXJB
Z2VudC5nZXQoKSwKICNlbmRpZgogI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKLSAgICAgICAgbV9m
aWxlc3lzdGVtQWdlbnQuZ2V0KCksCisgICAgICAgIG1fZmlsZVN5c3RlbUFnZW50LmdldCgpLAog
I2VuZGlmCiAgICAgICAgIG1fcmVzb3VyY2VBZ2VudC5nZXQoKSwKICAgICAgICAgbV9wYWdlQWdl
bnQuZ2V0KCksCkBAIC0yOTEsNyArMjkxLDcgQEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpk
aXNjb25uZWN0RnJvbnRlbmQoKQogICAgIG1fZGF0YWJhc2VBZ2VudC0+Y2xlYXJGcm9udGVuZCgp
OwogI2VuZGlmCiAjaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQotICAgIG1fZmlsZXN5c3RlbUFnZW50
LT5jbGVhckZyb250ZW5kKCk7CisgICAgbV9maWxlU3lzdGVtQWdlbnQtPmNsZWFyRnJvbnRlbmQo
KTsKICNlbmRpZgogICAgIG1fZG9tU3RvcmFnZUFnZW50LT5jbGVhckZyb250ZW5kKCk7CiAgICAg
bV9wYWdlQWdlbnQtPmNsZWFyRnJvbnRlbmQoKTsKQEAgLTM0Niw2ICszNDYsOSBAQCB2b2lkIElu
c3BlY3RvckNvbnRyb2xsZXI6OnJlc3RvcmVJbnNwZWN0b3JTdGF0ZUZyb21Db29raWUoY29uc3Qg
U3RyaW5nJiBpbnNwZWN0bwogI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCiAgICAgbV9kYXRhYmFz
ZUFnZW50LT5yZXN0b3JlKCk7CiAjZW5kaWYKKyNpZiBFTkFCTEUoRklMRV9TWVNURU0pCisgICAg
bV9maWxlU3lzdGVtQWdlbnQtPnJlc3RvcmUoKTsKKyNlbmRpZgogICAgIG1fZG9tU3RvcmFnZUFn
ZW50LT5yZXN0b3JlKCk7CiAjaWYgRU5BQkxFKFdPUktFUlMpCiAgICAgbV93b3JrZXJBZ2VudC0+
cmVzdG9yZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9s
bGVyLmgKaW5kZXggMmJhOTJjOTIzZjJiMmM4ODI5ZDc0ZDA5ZmUwZmM0MTUyNTEzNGFmOC4uZjE1
OTM5OTc2ZTNkNWE3MmVmZjQ4NGIwMTcyYzEzOWM0Njk2ODY1OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oCkBAIC0xMzksNyArMTM5LDcgQEAg
cHJpdmF0ZToKICAgICBPd25QdHI8SW5zcGVjdG9yRGF0YWJhc2VBZ2VudD4gbV9kYXRhYmFzZUFn
ZW50OwogI2VuZGlmCiAjaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQotICAgIE93blB0cjxJbnNwZWN0
b3JGaWxlU3lzdGVtQWdlbnQ+IG1fZmlsZXN5c3RlbUFnZW50OworICAgIE93blB0cjxJbnNwZWN0
b3JGaWxlU3lzdGVtQWdlbnQ+IG1fZmlsZVN5c3RlbUFnZW50OwogI2VuZGlmCiAgICAgT3duUHRy
PEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudD4gbV9kb21TdG9yYWdlQWdlbnQ7CiAgICAgT3duUHRy
PEluc3BlY3RvclRpbWVsaW5lQWdlbnQ+IG1fdGltZWxpbmVBZ2VudDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZpbGVTeXN0ZW1BZ2VudC5jcHAKaW5kZXgg
NDEwNTFlMTllM2JlZTJjNTYwOWEzMGQ2NGZmNzdmZjFhMGI2YjNlYS4uNGRiNzI3OWRkMGU2MjMz
YzEwNTc4MWFiZjZhMzM0MzNkYzg0NjdhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckZpbGVTeXN0ZW1BZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckZpbGVTeXN0ZW1BZ2VudC5jcHAKQEAgLTMxLDI5ICszMSw3OSBA
QAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkluc3BlY3RvckZpbGVTeXN0ZW1BZ2Vu
dC5oIgogCisjaWYgRU5BQkxFKElOU1BFQ1RPUikgJiYgRU5BQkxFKEZJTEVfU1lTVEVNKQorCisj
aW5jbHVkZSAiRE9NRmlsZVN5c3RlbS5oIgorI2luY2x1ZGUgIkluc3BlY3RvclN0YXRlLmgiCiAj
aW5jbHVkZSAiSW5zdHJ1bWVudGluZ0FnZW50cy5oIgorI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2lu
LmgiCiAKLSNpZiBFTkFCTEUoSU5TUEVDVE9SKSAmJiBFTkFCTEUoRklMRV9TWVNURU0pCituYW1l
c3BhY2UgeworCitTdHJpbmcgdHlwZVRvU3RyaW5nKFdlYkNvcmU6OkFzeW5jRmlsZVN5c3RlbTo6
VHlwZSB0eXBlKQoreworICAgIHVzaW5nIFdlYkNvcmU6OkFzeW5jRmlsZVN5c3RlbTsKKyAgICBz
d2l0Y2ggKHR5cGUpIHsKKyAgICBjYXNlIEFzeW5jRmlsZVN5c3RlbTo6RXh0ZXJuYWw6CisgICAg
ICAgIHJldHVybiAiZXh0ZXJuYWwiOworICAgIGNhc2UgQXN5bmNGaWxlU3lzdGVtOjpQZXJzaXN0
ZW50OgorICAgICAgICByZXR1cm4gInBlcnNpc3RlbnQiOworICAgIGNhc2UgQXN5bmNGaWxlU3lz
dGVtOjpUZW1wb3Jhcnk6CisgICAgICAgIHJldHVybiAidGVtcG9yYXJ5IjsKKyAgICBkZWZhdWx0
OgorICAgICAgICByZXR1cm4gInVua25vd24iOworICAgIH0KK30KKworfSAvLyBhbm9ueW1vdXMg
bmFtZXNwYWNlCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorbmFtZXNwYWNlIEZpbGVTeXN0ZW1B
Z2VudFN0YXRlIHsKK3N0YXRpYyBjb25zdCBjaGFyIGZpbGVTeXN0ZW1BZ2VudEVuYWJsZWRbXSA9
ICJmaWxlU3lzdGVtQWdlbnRFbmFibGVkIjsKK30KKwogLy8gc3RhdGljCi1QYXNzT3duUHRyPElu
c3BlY3RvckZpbGVTeXN0ZW1BZ2VudD4gSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50OjpjcmVhdGUo
SW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cykKK1Bhc3NPd25QdHI8SW5z
cGVjdG9yRmlsZVN5c3RlbUFnZW50PiBJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQ6OmNyZWF0ZShJ
bnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBJbnNwZWN0b3JTdGF0ZSog
c3RhdGUpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBJbnNwZWN0b3JGaWxlU3lzdGVtQWdl
bnQoaW5zdHJ1bWVudGluZ0FnZW50cykpOworICAgIHJldHVybiBhZG9wdFB0cihuZXcgSW5zcGVj
dG9yRmlsZVN5c3RlbUFnZW50KGluc3RydW1lbnRpbmdBZ2VudHMsIHN0YXRlKSk7CiB9CiAKIElu
c3BlY3RvckZpbGVTeXN0ZW1BZ2VudDo6fkluc3BlY3RvckZpbGVTeXN0ZW1BZ2VudCgpCiB7Cisg
ICAgaWYgKG1fYWdlbnRQcm94eS0+Z2V0KCkpCisgICAgICAgIG1fYWdlbnRQcm94eS0+Y2xlYXIo
KTsKICAgICBtX2luc3RydW1lbnRpbmdBZ2VudHMtPnNldEluc3BlY3RvckZpbGVTeXN0ZW1BZ2Vu
dCgwKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQ6OmRpZE9wZW5GaWxlU3lz
dGVtKFBhc3NSZWZQdHI8RE9NRmlsZVN5c3RlbT4gZmlsZVN5c3RlbSkKK1Bhc3NSZWZQdHI8SW5z
cGVjdG9yRmlsZVN5c3RlbUFnZW50UHJveHk+IEluc3BlY3RvckZpbGVTeXN0ZW1BZ2VudDo6ZGlk
T3BlbkZpbGVTeXN0ZW0oUGFzc1JlZlB0cjxET01GaWxlU3lzdGVtPiBmaWxlU3lzdGVtKQogewor
ICAgIERPTUZpbGVTeXN0ZW0qIGZpbGVTeXN0ZW1QdHIgPSBmaWxlU3lzdGVtLmdldCgpOworICAg
IFN0cmluZyBmaWxlU3lzdGVtTmFtZSA9IGZpbGVTeXN0ZW0tPm5hbWUoKTsKKyAgICBOYW1lZEZp
bGVTeXN0ZW1zOjppdGVyYXRvciBpdHIgPSBtX2ZpbGVTeXN0ZW1zLmFkZChmaWxlU3lzdGVtLT5u
YW1lKCksIEZpbGVTeXN0ZW1zKCkpLmZpcnN0OworICAgIGl0ci0+c2Vjb25kLmFkZChmaWxlU3lz
dGVtKTsKKworICAgIGlmIChtX2Zyb250ZW5kICYmIG1fZW5hYmxlZCkgeworICAgICAgICBtX2Zy
b250ZW5kLT5maWxlU3lzdGVtQWRkZWQoCisgICAgICAgICAgICBmaWxlU3lzdGVtTmFtZSwKKyAg
ICAgICAgICAgIGZpbGVTeXN0ZW1QdHItPnNlY3VyaXR5T3JpZ2luKCktPnRvU3RyaW5nKCksCisg
ICAgICAgICAgICB0eXBlVG9TdHJpbmcoZmlsZVN5c3RlbVB0ci0+YXN5bmNGaWxlU3lzdGVtKCkt
PnR5cGUoKSkpOworICAgIH0KKyAgICByZXR1cm4gbV9hZ2VudFByb3h5OwogfQogCiB2b2lkIElu
c3BlY3RvckZpbGVTeXN0ZW1BZ2VudDo6aW52YWxpZGF0ZUZpbGVTeXN0ZW0oUGFzc1JlZlB0cjxE
T01GaWxlU3lzdGVtPiBmaWxlU3lzdGVtKQogeworICAgIFN0cmluZyBuYW1lID0gZmlsZVN5c3Rl
bS0+bmFtZSgpOworICAgIE5hbWVkRmlsZVN5c3RlbXM6Oml0ZXJhdG9yIGl0ciA9IG1fZmlsZVN5
c3RlbXMuZmluZChuYW1lKTsKKyAgICBpZiAoaXRyID09IG1fZmlsZVN5c3RlbXMuZW5kKCkpCisg
ICAgICAgIHJldHVybjsKKyAgICBpdHItPnNlY29uZC5yZW1vdmUoZmlsZVN5c3RlbSk7CisgICAg
aWYgKGl0ci0+c2Vjb25kLmlzRW1wdHkoKSkgeworICAgICAgICBtX2ZpbGVTeXN0ZW1zLnJlbW92
ZShpdHIpOworICAgICAgICBpZiAobV9mcm9udGVuZCAmJiBtX2VuYWJsZWQpCisgICAgICAgICAg
ICBtX2Zyb250ZW5kLT5maWxlU3lzdGVtSW52YWxpZGF0ZWQobmFtZSk7CisgICAgfQogfQogCiB2
b2lkIEluc3BlY3RvckZpbGVTeXN0ZW1BZ2VudDo6ZW5hYmxlKEVycm9yU3RyaW5nKikKQEAgLTYx
LDExICsxMTEsMjYgQEAgdm9pZCBJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQ6OmVuYWJsZShFcnJv
clN0cmluZyopCiAgICAgaWYgKG1fZW5hYmxlZCkKICAgICAgICAgcmV0dXJuOwogICAgIG1fZW5h
YmxlZCA9IHRydWU7CisgICAgbV9zdGF0ZS0+c2V0Qm9vbGVhbihGaWxlU3lzdGVtQWdlbnRTdGF0
ZTo6ZmlsZVN5c3RlbUFnZW50RW5hYmxlZCwgbV9lbmFibGVkKTsKKworICAgIGZvciAoTmFtZWRG
aWxlU3lzdGVtczo6aXRlcmF0b3IgaXRyID0gbV9maWxlU3lzdGVtcy5iZWdpbigpOworICAgICAg
ICAgaXRyICE9IG1fZmlsZVN5c3RlbXMuZW5kKCk7ICsraXRyKSB7CisgICAgICAgIEFTU0VSVCgh
aXRyLT5zZWNvbmQuaXNFbXB0eSgpKTsKKyAgICAgICAgRE9NRmlsZVN5c3RlbSogZmlsZVN5c3Rl
bSA9IGl0ci0+c2Vjb25kLmJlZ2luKCktPmdldCgpOworICAgICAgICBpZiAobV9mcm9udGVuZCkg
eworICAgICAgICAgICAgbV9mcm9udGVuZC0+ZmlsZVN5c3RlbUFkZGVkKAorICAgICAgICAgICAg
ICAgIGZpbGVTeXN0ZW0tPm5hbWUoKSwKKyAgICAgICAgICAgICAgICBmaWxlU3lzdGVtLT5zZWN1
cml0eU9yaWdpbigpLT50b1N0cmluZygpLAorICAgICAgICAgICAgICAgIHR5cGVUb1N0cmluZyhm
aWxlU3lzdGVtLT5hc3luY0ZpbGVTeXN0ZW0oKS0+dHlwZSgpKSk7CisgICAgICAgIH0KKyAgICB9
CiB9CiAKIHZvaWQgSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50OjpkaXNhYmxlKEVycm9yU3RyaW5n
KikKIHsKKyAgICBpZiAoIW1fZW5hYmxlZCkKICAgICBtX2VuYWJsZWQgPSBmYWxzZTsKKyAgICBt
X3N0YXRlLT5zZXRCb29sZWFuKEZpbGVTeXN0ZW1BZ2VudFN0YXRlOjpmaWxlU3lzdGVtQWdlbnRF
bmFibGVkLCBtX2VuYWJsZWQpOwogfQogCiB2b2lkIEluc3BlY3RvckZpbGVTeXN0ZW1BZ2VudDo6
c2V0RnJvbnRlbmQoSW5zcGVjdG9yRnJvbnRlbmQqIGZyb250ZW5kKQpAQCAtNzgsOCArMTQzLDE1
IEBAIHZvaWQgSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50OjpjbGVhckZyb250ZW5kKCkKICAgICBt
X2Zyb250ZW5kID0gMDsKIH0KIAotSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50OjpJbnNwZWN0b3JG
aWxlU3lzdGVtQWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cykK
LSAgICA6IG1faW5zdHJ1bWVudGluZ0FnZW50cyhpbnN0cnVtZW50aW5nQWdlbnRzKSwKK3ZvaWQg
SW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50OjpyZXN0b3JlKCkKK3sKKyAgICBtX2VuYWJsZWQgPSBt
X3N0YXRlLT5nZXRCb29sZWFuKEZpbGVTeXN0ZW1BZ2VudFN0YXRlOjpmaWxlU3lzdGVtQWdlbnRF
bmFibGVkKTsKK30KKworSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50OjpJbnNwZWN0b3JGaWxlU3lz
dGVtQWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgSW5zcGVj
dG9yU3RhdGUqIHN0YXRlKQorICAgIDogbV9hZ2VudFByb3h5KEluc3BlY3RvckZpbGVTeXN0ZW1B
Z2VudFByb3h5OjpjcmVhdGUodGhpcykpLAorICAgICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzKGlu
c3RydW1lbnRpbmdBZ2VudHMpLAorICAgICAgbV9zdGF0ZShzdGF0ZSksCiAgICAgICBtX2Zyb250
ZW5kKDApLAogICAgICAgbV9lbmFibGVkKGZhbHNlKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZpbGVTeXN0ZW1BZ2VudC5oIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckZpbGVTeXN0ZW1BZ2VudC5oCmluZGV4IGZkNDZmODZmMzhh
MGU0NGVhMTZkZDBjMTdkNDEwZmUyNmU4NTg0Y2EuLjdjMTI3ODA5N2M1YjhhZDI2OGRjMzVhYWY0
ODQ1ZTNkZWZkMGU2NjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JGaWxlU3lzdGVtQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yRmlsZVN5c3RlbUFnZW50LmgKQEAgLTM0LDIwICszNCw1MSBAQAogCiAjaW5jbHVkZSAi
SW5zcGVjdG9yRnJvbnRlbmQuaCIKIAorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVk
ZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUg
PHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogY2xhc3MgRE9NRmlsZVN5c3RlbTsKK2NsYXNzIEluc3BlY3RvckZpbGVT
eXN0ZW1BZ2VudDsKIGNsYXNzIEluc3BlY3RvckZyb250ZW5kOworY2xhc3MgSW5zcGVjdG9yU3Rh
dGU7CiBjbGFzcyBJbnN0cnVtZW50aW5nQWdlbnRzOwogCitjbGFzcyBJbnNwZWN0b3JGaWxlU3lz
dGVtQWdlbnRQcm94eSA6IHB1YmxpYyBSZWZDb3VudGVkPEluc3BlY3RvckZpbGVTeXN0ZW1BZ2Vu
dFByb3h5PiB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yRmlsZVN5
c3RlbUFnZW50UHJveHk+IGNyZWF0ZShJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQqIGFnZW50KQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJbnNwZWN0b3JGaWxlU3lzdGVtQWdl
bnRQcm94eShhZ2VudCkpOworICAgIH0KKworICAgIEluc3BlY3RvckZpbGVTeXN0ZW1BZ2VudCog
Z2V0KCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2FnZW50OworICAgIH0KKworICAg
IHZvaWQgY2xlYXIoKQorICAgIHsKKyAgICAgICAgbV9hZ2VudCA9IDA7CisgICAgfQorCisgICAg
dmlydHVhbCB+SW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50UHJveHkoKSB7IH0KKworICAgIGV4cGxp
Y2l0IEluc3BlY3RvckZpbGVTeXN0ZW1BZ2VudFByb3h5KEluc3BlY3RvckZpbGVTeXN0ZW1BZ2Vu
dCogYWdlbnQpCisgICAgICAgIDogbV9hZ2VudChhZ2VudCkgeyB9CisKK3ByaXZhdGU6CisgICAg
SW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50KiBtX2FnZW50OworfTsKKwogY2xhc3MgSW5zcGVjdG9y
RmlsZVN5c3RlbUFnZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxJbnNwZWN0
b3JGaWxlU3lzdGVtQWdlbnQ+IGNyZWF0ZShJbnN0cnVtZW50aW5nQWdlbnRzKik7CisgICAgc3Rh
dGljIFBhc3NPd25QdHI8SW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50PiBjcmVhdGUoSW5zdHJ1bWVu
dGluZ0FnZW50cyosIEluc3BlY3RvclN0YXRlKik7CiAgICAgdmlydHVhbCB+SW5zcGVjdG9yRmls
ZVN5c3RlbUFnZW50KCk7CiAKLSAgICB2b2lkIGRpZE9wZW5GaWxlU3lzdGVtKFBhc3NSZWZQdHI8
RE9NRmlsZVN5c3RlbT4pOworICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50
UHJveHk+IGRpZE9wZW5GaWxlU3lzdGVtKFBhc3NSZWZQdHI8RE9NRmlsZVN5c3RlbT4pOwogICAg
IHZvaWQgaW52YWxpZGF0ZUZpbGVTeXN0ZW0oUGFzc1JlZlB0cjxET01GaWxlU3lzdGVtPik7CiAK
ICAgICB2b2lkIGVuYWJsZShFcnJvclN0cmluZyopOwpAQCAtNTUsMTEgKzg2LDE3IEBAIHB1Ymxp
YzoKIAogICAgIHZvaWQgc2V0RnJvbnRlbmQoSW5zcGVjdG9yRnJvbnRlbmQqKTsKICAgICB2b2lk
IGNsZWFyRnJvbnRlbmQoKTsKLQorICAgIHZvaWQgcmVzdG9yZSgpOwogcHJpdmF0ZToKLSAgICBJ
bnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyopOworICAgIEluc3Bl
Y3RvckZpbGVTeXN0ZW1BZ2VudChJbnN0cnVtZW50aW5nQWdlbnRzKiwgSW5zcGVjdG9yU3RhdGUq
KTsKKworICAgIHR5cGVkZWYgSGFzaFNldDxSZWZQdHI8RE9NRmlsZVN5c3RlbT4gPiBGaWxlU3lz
dGVtczsKKyAgICB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBGaWxlU3lzdGVtcz4gTmFtZWRGaWxl
U3lzdGVtczsKKyAgICBOYW1lZEZpbGVTeXN0ZW1zIG1fZmlsZVN5c3RlbXM7CiAKKyAgICBSZWZQ
dHI8SW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50UHJveHk+IG1fYWdlbnRQcm94eTsKICAgICBJbnN0
cnVtZW50aW5nQWdlbnRzKiBtX2luc3RydW1lbnRpbmdBZ2VudHM7CisgICAgSW5zcGVjdG9yU3Rh
dGUqIG1fc3RhdGU7CiAgICAgSW5zcGVjdG9yRnJvbnRlbmQ6OkZpbGVTeXN0ZW0qIG1fZnJvbnRl
bmQ7CiAgICAgYm9vbCBtX2VuYWJsZWQ7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckZpbGVTeXN0ZW1JbnN0cnVtZW50YXRpb24uaCBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGaWxlU3lzdGVtSW5zdHJ1bWVudGF0aW9uLmgKaW5k
ZXggNzM4N2FjYmFjYTE1NTUzMThiODg5NDNmZDE5YjhmNjM5MmExMDFhYi4uOTE4NTUyM2RjZGQ2
ZjY3ODRhOGVhNWU3MzcyMjgxYjUwZTJlZTFiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckZpbGVTeXN0ZW1JbnN0cnVtZW50YXRpb24uaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRmlsZVN5c3RlbUluc3RydW1lbnRhdGlvbi5o
CkBAIC0zOCwxMiArMzgsMTMgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogI2lmIEVOQUJMRShG
SUxFX1NZU1RFTSkKLWlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkT3Bl
bkZpbGVTeXN0ZW0oUGFzc1JlZlB0cjxET01GaWxlU3lzdGVtPiBmaWxlU3lzdGVtKQoraW5saW5l
IFBhc3NSZWZQdHI8SW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50UHJveHk+IEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6ZGlkT3BlbkZpbGVTeXN0ZW0oUGFzc1JlZlB0cjxET01GaWxlU3lzdGVtPiBm
aWxlU3lzdGVtKQogewogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAgICAgaWYgKEluc3RydW1lbnRp
bmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMgPSBpbnN0cnVtZW50aW5nQWdlbnRzRm9yQ29u
dGV4dChmaWxlU3lzdGVtLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpKQotICAgICAgICBkaWRP
cGVuRmlsZVN5c3RlbUltcGwoaW5zdHJ1bWVudGluZ0FnZW50cywgZmlsZVN5c3RlbSk7CisgICAg
ICAgIHJldHVybiBkaWRPcGVuRmlsZVN5c3RlbUltcGwoaW5zdHJ1bWVudGluZ0FnZW50cywgZmls
ZVN5c3RlbSk7CiAjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUikKKyAgICByZXR1cm4gMDsKIH0K
ICNlbmRpZiAvLyBFTkFCTEUoRklMRV9TWVNURU0pCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKaW5kZXggNGVjNjczMTcz
YWM5NDY1MzBiM2UyY2E2NGEyZGJlNDBlOGI1YTU1OS4uNWRjZGM0MDZlMWM2YmZjMWEyYWQxYjY4
NjAwNTE5NjRhYWYxMjUwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKQEAgLTc3MywxMCArNzczLDExIEBAIHZvaWQg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRPcGVuRGF0YWJhc2VJbXBsKEluc3RydW1lbnRp
bmdBZ2VudHMqIGluc3RydW1lCiAjZW5kaWYKIAogI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKLXZv
aWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRPcGVuRmlsZVN5c3RlbUltcGwoSW5zdHJ1
bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgUGFzc1JlZlB0cjxET01GaWxlU3lz
dGVtPiBmaWxlU3lzdGVtKQorUGFzc1JlZlB0cjxJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnRQcm94
eT4gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRPcGVuRmlsZVN5c3RlbUltcGwoSW5zdHJ1
bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgUGFzc1JlZlB0cjxET01GaWxlU3lz
dGVtPiBmaWxlU3lzdGVtKQogewogICAgIGlmIChJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQqIGZp
bGVTeXN0ZW1BZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMtPmluc3BlY3RvckZpbGVTeXN0ZW1B
Z2VudCgpKQotICAgICAgICBmaWxlU3lzdGVtQWdlbnQtPmRpZE9wZW5GaWxlU3lzdGVtKGZpbGVT
eXN0ZW0pOworICAgICAgICByZXR1cm4gZmlsZVN5c3RlbUFnZW50LT5kaWRPcGVuRmlsZVN5c3Rl
bShmaWxlU3lzdGVtKTsKKyAgICByZXR1cm4gMDsKIH0KICNlbmRpZiAvLyBFTkFCTEUoRklMRV9T
WVNURU0pCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0
cnVtZW50YXRpb24uaAppbmRleCA1NjkzNDM0ZmQzZDE1NDYxYmJkYmQyMzJmZDA4OGEyMzVmNGEz
ZWI0Li44NWY0NjQ0NDc3ODE5YWExZDk3MWY1MGVmNGE2MDljZGJjM2NkZTdlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oCkBA
IC01MCw2ICs1MCw3IEBAIGNsYXNzIEVsZW1lbnQ7CiBjbGFzcyBFdmVudENvbnRleHQ7CiBjbGFz
cyBEb2N1bWVudExvYWRlcjsKIGNsYXNzIEhpdFRlc3RSZXN1bHQ7CitjbGFzcyBJbnNwZWN0b3JG
aWxlU3lzdGVtQWdlbnRQcm94eTsKIGNsYXNzIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ7CiBjbGFz
cyBJbnN0cnVtZW50aW5nQWdlbnRzOwogY2xhc3MgS1VSTDsKQEAgLTE3NCw3ICsxNzUsNyBAQCBw
dWJsaWM6CiAjZW5kaWYKIAogI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKLSAgICBzdGF0aWMgdm9p
ZCBkaWRPcGVuRmlsZVN5c3RlbShQYXNzUmVmUHRyPERPTUZpbGVTeXN0ZW0+KTsKKyAgICBzdGF0
aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnRQcm94eT4gZGlkT3BlbkZpbGVT
eXN0ZW0oUGFzc1JlZlB0cjxET01GaWxlU3lzdGVtPik7CiAjZW5kaWYKIAogICAgIHN0YXRpYyB2
b2lkIGRpZFVzZURPTVN0b3JhZ2UoUGFnZSosIFN0b3JhZ2VBcmVhKiwgYm9vbCBpc0xvY2FsU3Rv
cmFnZSwgRnJhbWUqKTsKQEAgLTMxMCw3ICszMTEsNyBAQCBwcml2YXRlOgogI2VuZGlmCiAKICNp
ZiBFTkFCTEUoRklMRV9TWVNURU0pCi0gICAgc3RhdGljIHZvaWQgZGlkT3BlbkZpbGVTeXN0ZW1J
bXBsKEluc3RydW1lbnRpbmdBZ2VudHMqLCBQYXNzUmVmUHRyPERPTUZpbGVTeXN0ZW0+KTsKKyAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnRQcm94eT4gZGlkT3Bl
bkZpbGVTeXN0ZW1JbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqLCBQYXNzUmVmUHRyPERPTUZpbGVT
eXN0ZW0+KTsKICNlbmRpZgogCiAgICAgc3RhdGljIHZvaWQgZGlkVXNlRE9NU3RvcmFnZUltcGwo
SW5zdHJ1bWVudGluZ0FnZW50cyosIFN0b3JhZ2VBcmVhKiwgYm9vbCBpc0xvY2FsU3RvcmFnZSwg
RnJhbWUqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9jb21waWxlLWZy
b250LWVuZC5zaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9jb21waWxlLWZyb250LWVuZC5z
aAppbmRleCAzNzA1Y2YxMzE4MTc3MzkyZDAwMTMyZGE1ZTFjOThmOTUxMWI5OWUyLi43MWVhOWM2
MzFjYWU1MWY5MDRhMmI4YjdkNWQ4MDFlMmFjYmU2NDFiIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvY29tcGlsZS1mcm9udC1lbmQuc2gKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2NvbXBpbGUtZnJvbnQtZW5kLnNoCkBAIC02MCw2ICs2MCw3IEBAIGphdmEgLWph
ciB+L2Nsb3N1cmUvY29tcGlsZXIuamFyIC0tc3VtbWFyeV9kZXRhaWxfbGV2ZWwgMyAtLWNvbXBp
bGF0aW9uX2xldmVsIFNJCiAgICAgICAgIC0tanMgU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9ET01TdG9yYWdlLmpzIFwKICAgICAgICAgLS1qcyBTb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL0RlYnVnZ2VyTW9kZWwuanMgXAogICAgICAgICAtLWpzIFNvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5qcyBc
CisgICAgICAgIC0tanMgU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9GaWxlU3lz
dGVtLmpzIFwKICAgICAgICAgLS1qcyBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L0hBUkVudHJ5LmpzIFwKICAgICAgICAgLS1qcyBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL05ldHdvcmtMb2cuanMgXAogICAgICAgICAtLWpzIFNvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvU2NyaXB0LmpzIFwKQEAgLTE0Nyw2ICsxNDgsNyBAQCBqYXZhIC1qYXIg
fi9jbG9zdXJlL2NvbXBpbGVyLmphciAtLXN1bW1hcnlfZGV0YWlsX2xldmVsIDMgLS1jb21waWxh
dGlvbl9sZXZlbCBTSQogICAgICAgICAtLWpzIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvRGF0YWJhc2VRdWVyeVZpZXcuanMgXAogICAgICAgICAtLWpzIFNvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvRGF0YWJhc2VUYWJsZVZpZXcuanMgXAogICAgICAgICAtLWpz
IFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRE9NU3RvcmFnZUl0ZW1zVmlldy5q
cyBcCisgICAgICAgIC0tanMgU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9GaWxl
U3lzdGVtVmlldy5qcyBcCiAgICAgICAgIC0tanMgU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9SZXNvdXJjZXNQYW5lbC5qcyBcCiAgICAgLS1tb2R1bGUganNtb2R1bGVfc2NyaXB0
czo4OmpzbW9kdWxlX2NvbXBvbmVudHMgXAogICAgICAgICAtLWpzIFNvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvQ2FsbFN0YWNrU2lkZWJhclBhbmUuanMgXApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9FbXB0eVZpZXcuanMgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0VtcHR5Vmlldy5qcwppbmRleCAxZDQ0YzhhYzQw
YmM4MzU0NmIwNmRkYTVjNTBhNTJhNThlZjU5YTUyLi4zYTRhMjFhMzA5MGZhYTE2MDNiNzQ3NTZh
NjdlYzcyYzA5NTdiMTA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL0VtcHR5Vmlldy5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL0VtcHR5Vmlldy5qcwpAQCAtNDEsNyArNDEsNyBAQCBXZWJJbnNwZWN0b3IuRW1wdHlWaWV3
ID0gZnVuY3Rpb24odGV4dCkKIFdlYkluc3BlY3Rvci5FbXB0eVZpZXcucHJvdG90eXBlID0gewog
ICAgIHdhc1Nob3duOiBmdW5jdGlvbigpCiAgICAgewotICAgICAgICB0aGlzLmVsZW1lbnQuY2xh
c3NOYW1lID0gInN0b3JhZ2UtZW1wdHktdmlldyI7CisgICAgICAgIHRoaXMuZWxlbWVudC5hZGRT
dHlsZUNsYXNzKCJzdG9yYWdlLWVtcHR5LXZpZXciKTsKICAgICAgICAgdGhpcy5lbGVtZW50LnRl
eHRDb250ZW50ID0gdGhpcy5fdGV4dDsKICAgICB9LAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0ZpbGVTeXN0ZW0uanMgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL0ZpbGVTeXN0ZW0uanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzcyNmY4NjA0MTMz
M2I4OWI1NWMwMDRjNzQwOTRjZTE3ZTRmMWM3NwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRmlsZVN5c3RlbS5qcwpAQCAtMCwwICsxLDQ3IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICog
ICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRo
ZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUK
KyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIElu
Yy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklC
VVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBP
V05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
CisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
V2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1EaXNwYXRjaGVyID0gZnVuY3Rpb24oKQoreworfTsKKwor
V2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1EaXNwYXRjaGVyLnByb3RvdHlwZSA9IHsKKyAgICBmaWxl
U3lzdGVtQWRkZWQ6IGZ1bmN0aW9uKG5hbWUsIG9yaWdpbiwgdHlwZSkKKyAgICB7CisgICAgICAg
IFdlYkluc3BlY3Rvci5wYW5lbHMucmVzb3VyY2VzLmFkZEZpbGVTeXN0ZW0obmFtZSwgb3JpZ2lu
LCB0eXBlKTsKKyAgICB9LAorCisgICAgaW52YWxpZGF0ZUZpbGVTeXN0ZW06IGZ1bmN0aW9uKG5h
bWUpCisgICAgeworICAgICAgICBXZWJJbnNwZWN0b3IucGFuZWxzLnJlc291cmNlcy5pbnZhbGlk
YXRlRmlsZVN5c3RlbShuYW1lKTsKKyAgICB9Cit9OworCitJbnNwZWN0b3JCYWNrZW5kLnJlZ2lz
dGVyRmlsZVN5c3RlbURpc3BhdGNoZXIobmV3IFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtRGlzcGF0
Y2hlcigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
RmlsZVN5c3RlbVZpZXcuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0Zp
bGVTeXN0ZW1WaWV3LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRkOTMzNWM3MWM4ZDcwM2JlMGQzZTI3YjkxMTI2
MmI0NDA4M2NhMDIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL0ZpbGVTeXN0ZW1WaWV3LmpzCkBAIC0wLDAgKzEsNDUgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
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
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisvKioKKyAqIEBjb25z
dHJ1Y3RvcgorICogQGV4dGVuZHMge1dlYkluc3BlY3Rvci5WaWV3fQorICovCitXZWJJbnNwZWN0
b3IuRmlsZVN5c3RlbVZpZXcgPSBmdW5jdGlvbihmaWxlU3lzdGVtTmFtZSkKK3sKKyAgICBXZWJJ
bnNwZWN0b3IuVmlldy5jYWxsKHRoaXMpOworICAgIHRoaXMuZWxlbWVudC5hZGRTdHlsZUNsYXNz
KCJzdG9yYWdlLXZpZXciKTsKKyAgICB0aGlzLmVsZW1lbnQuYWRkU3R5bGVDbGFzcygiZmlsZXN5
c3RlbS12aWV3Iik7Cit9OworCitXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbVZpZXcucHJvdG90eXBl
ID0geworfTsKKworV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1WaWV3LnByb3RvdHlwZS5fX3Byb3Rv
X18gPSBXZWJJbnNwZWN0b3IuVmlldy5wcm90b3R5cGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0ltYWdlcy9maWxlU3lzdGVtLnBuZyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSW1hZ2VzL2ZpbGVTeXN0ZW0ucG5nCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjFkYjEyMjE1OTI2ZTcxYzQzY2E3OWEyZTc4Yjk0NDc4ZDJjMWY4MjkKR0lUIGJpbmFyeSBw
YXRjaApsaXRlcmFsIDQ0OQp6Y21WO3kwWTNoVFApPGg7M0t8TGswMDBlMU5KTFRxMDAwbUcwMDBt
TzFeQHM2QU1eaVYwMDAwMWI1Y2hfMEl0cCkKej0+UHgjMjRZSmBMOyhLKXt7YTc+eXtENF4wMDBT
YU5MaDBMMDFGY1UwMUZjVjBHZ1pfMDAwMDdiVipHYDJpcHIwCnoxdjRIb0xVUW97MDBCV3NMX3Qo
SSVjWVkpT0c3YWYjZVhTSjFVb3I2eTE5dnlpKDN+NXprKkJZKUgqbWdJSmxNMAp6YihlSWlBYyhr
JFUhYzF+S0BpKiYzTFR0RVpSelZ2P3NkcCh0SXxJSUchUFEqJXtrfWhCb34kKDJCMSk/bD5ze14K
elV1aVh+alZ5dkZVRzIlKUYjITJ8OSlRUV43dyljWkVSYWNIM1orX2tZamVZe0A5WTV9I3NEeXE5
RyYoOXk+NGRfCnp3JGZAPTh4ZGZPciQ/Wm0wSURJYXAhP2ZRTCNvciU+KVYqaWBuZ3JyZWlSTlVQ
N0RmJjhibT1QPzdmMVE1YzNpVQp6cDFTY2o0K05ZTGZHT0IzNDR1S0hJaUpTbm55OUtJZXhoTytJ
JWRGQlNycCNtTUZkX01keElBa0I7WWl5TkkrNSMKemBsRjB6Nmo4PHdgcEhhSENsZVVOS20zREcw
Z1BNIz0lPjQ4ZmRPKk1lJnE8QHpUSVBHYj93KW5CcCFZdHNJK2V7CnI+fGQzTzJmTVJvUXF7d01i
KXFyWCVVWncoRGlYQnBYNkxJVTAwMDAwTmt2WFh1MG1qZkxHYGk4CgpsaXRlcmFsIDAKSGNtVj9k
MDAwMDEKCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jl
c291cmNlc1BhbmVsLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNv
dXJjZXNQYW5lbC5qcwppbmRleCA0ODkwZTM3ODkwNWRhNzlkNWJiNWM2ODZmNDI2MTg1MzE5YzRj
OTY0Li44MDAxYTg1ZmYyOTQ0Njc0MDIzMDQ1Y2YwYjI4MzVmNDJlZmViNTAwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlc1BhbmVsLmpzCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VzUGFuZWwuanMK
QEAgLTYzLDYgKzYzLDkgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlc1BhbmVsID0gZnVuY3Rpb24o
ZGF0YWJhc2UpCiAgICAgdGhpcy5hcHBsaWNhdGlvbkNhY2hlTGlzdFRyZWVFbGVtZW50ID0gbmV3
IFdlYkluc3BlY3Rvci5TdG9yYWdlQ2F0ZWdvcnlUcmVlRWxlbWVudCh0aGlzLCBXZWJJbnNwZWN0
b3IuVUlTdHJpbmcoIkFwcGxpY2F0aW9uIENhY2hlIiksICJBcHBsaWNhdGlvbkNhY2hlIiwgWyJh
cHBsaWNhdGlvbi1jYWNoZS1zdG9yYWdlLXRyZWUtaXRlbSJdKTsKICAgICB0aGlzLnNpZGViYXJU
cmVlLmFwcGVuZENoaWxkKHRoaXMuYXBwbGljYXRpb25DYWNoZUxpc3RUcmVlRWxlbWVudCk7CiAK
KyAgICB0aGlzLmZpbGVTeXN0ZW1MaXN0VHJlZUVsZW1lbnQgPSBuZXcgV2ViSW5zcGVjdG9yLlN0
b3JhZ2VDYXRlZ29yeVRyZWVFbGVtZW50KHRoaXMsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiRmls
ZVN5c3RlbSIpLCAiRmlsZVN5c3RlbSIsIFsiZmlsZXN5c3RlbS1zdG9yYWdlLXRyZWUtaXRlbSIs
ICJmaWxlc3lzdGVtIl0pOworICAgIHRoaXMuc2lkZWJhclRyZWUuYXBwZW5kQ2hpbGQodGhpcy5m
aWxlU3lzdGVtTGlzdFRyZWVFbGVtZW50KTsKKwogICAgIHRoaXMuc3RvcmFnZVZpZXdzID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CiAgICAgdGhpcy5zdG9yYWdlVmlld3MuaWQgPSAi
c3RvcmFnZS12aWV3cyI7CiAgICAgdGhpcy5zdG9yYWdlVmlld3MuY2xhc3NOYW1lID0gImRpZmYt
Y29udGFpbmVyIjsKQEAgLTc2LDcgKzc5LDggQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlc1BhbmVs
ID0gZnVuY3Rpb24oZGF0YWJhc2UpCiAgICAgdGhpcy5fY29va2llVmlld3MgPSB7fTsKICAgICB0
aGlzLl9vcmlnaW5zID0ge307CiAgICAgdGhpcy5fZG9tYWlucyA9IHt9OwotCisgICAgdGhpcy5f
ZmlsZVN5c3RlbXMgPSB7fTsKKyAgICB0aGlzLl9maWxlU3lzdGVtVmlld3MgPSB7fTsKIAogICAg
IHRoaXMuc2lkZWJhckVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vtb3ZlIiwgdGhpcy5f
b25tb3VzZW1vdmUuYmluZCh0aGlzKSwgZmFsc2UpOwogICAgIHRoaXMuc2lkZWJhckVsZW1lbnQu
YWRkRXZlbnRMaXN0ZW5lcigibW91c2VvdXQiLCB0aGlzLl9vbm1vdXNlb3V0LmJpbmQodGhpcyks
IGZhbHNlKTsKQEAgLTE2Nyw3ICsxNzEsMTEgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlc1BhbmVs
LnByb3RvdHlwZSA9IHsKIAogICAgICAgICB0aGlzLl9jb29raWVWaWV3cyA9IHt9OwogCisgICAg
ICAgIHRoaXMuX2ZpbGVTeXN0ZW1zID0ge307CisgICAgICAgIHRoaXMuX2ZpbGVTeXN0ZW1WaWV3
cyA9IHt9OworIAogICAgICAgICB0aGlzLmRhdGFiYXNlc0xpc3RUcmVlRWxlbWVudC5yZW1vdmVD
aGlsZHJlbigpOworICAgICAgICB0aGlzLmZpbGVTeXN0ZW1MaXN0VHJlZUVsZW1lbnQucmVtb3Zl
Q2hpbGRyZW4oKTsKICAgICAgICAgdGhpcy5sb2NhbFN0b3JhZ2VMaXN0VHJlZUVsZW1lbnQucmVt
b3ZlQ2hpbGRyZW4oKTsKICAgICAgICAgdGhpcy5zZXNzaW9uU3RvcmFnZUxpc3RUcmVlRWxlbWVu
dC5yZW1vdmVDaGlsZHJlbigpOwogICAgICAgICB0aGlzLmNvb2tpZUxpc3RUcmVlRWxlbWVudC5y
ZW1vdmVDaGlsZHJlbigpOwpAQCAtMzA0LDYgKzMxMiwyOCBAQCBXZWJJbnNwZWN0b3IuUmVzb3Vy
Y2VzUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICAgICAgdGhpcy5zZXNzaW9uU3RvcmFnZUxp
c3RUcmVlRWxlbWVudC5hcHBlbmRDaGlsZChkb21TdG9yYWdlVHJlZUVsZW1lbnQpOwogICAgIH0s
CiAKKyAgICBhZGRGaWxlU3lzdGVtOiBmdW5jdGlvbihuYW1lLCBvcmlnaW4sIHR5cGUpCisgICAg
eworICAgICAgICBpZiAodGhpcy5fZmlsZVN5c3RlbXNbbmFtZV0pCisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIHZhciBmaWxlU3lzdGVtVHJlZUVsZW1lbnQgPSBuZXcgV2ViSW5zcGVjdG9y
LkZpbGVTeXN0ZW1UcmVlRWxlbWVudCh0aGlzLCBuYW1lLCBvcmlnaW4sIHR5cGUpOworICAgICAg
ICB0aGlzLl9maWxlU3lzdGVtc1tuYW1lXSA9IGZpbGVTeXN0ZW1UcmVlRWxlbWVudDsKKyAgICAg
ICAgdGhpcy5maWxlU3lzdGVtTGlzdFRyZWVFbGVtZW50LmFwcGVuZENoaWxkKGZpbGVTeXN0ZW1U
cmVlRWxlbWVudCk7CisgICAgfSwKKworICAgIGludmFsaWRhdGVGaWxlU3lzdGVtOiBmdW5jdGlv
bihuYW1lKQorICAgIHsKKyAgICAgICAgaWYgKHRoaXMuX2ZpbGVTeXN0ZW1zW25hbWVdKSB7Cisg
ICAgICAgICAgICB0aGlzLmZpbGVTeXN0ZW1MaXN0VHJlZUVsZW1lbnQucmVtb3ZlQ2hpbGQodGhp
cy5fZmlsZVN5c3RlbXNbbmFtZV0pOworICAgICAgICAgICAgZGVsZXRlIHRoaXMuX2ZpbGVTeXN0
ZW1zW25hbWVdOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHRoaXMuX2ZpbGVTeXN0ZW1WaWV3
c1tuYW1lXSkgeworICAgICAgICAgICAgdGhpcy5fZmlsZVN5c3RlbVZpZXdzW25hbWVdLmRldGFj
aCgpOworICAgICAgICAgICAgZGVsZXRlIHRoaXMuX2ZpbGVTeXN0ZW1WaWV3c1tuYW1lXTsKKyAg
ICAgICAgfQorICAgIH0sCisKICAgICBzZWxlY3REYXRhYmFzZTogZnVuY3Rpb24oZGF0YWJhc2VJ
ZCkKICAgICB7CiAgICAgICAgIHZhciBkYXRhYmFzZTsKQEAgLTQ5Miw2ICs1MjIsMTggQEAgV2Vi
SW5zcGVjdG9yLlJlc291cmNlc1BhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5faW5u
ZXJTaG93Vmlldyh0aGlzLl9hcHBsaWNhdGlvbkNhY2hlVmlld3NbZnJhbWVJZF0pOwogICAgIH0s
CiAKKyAgICBzaG93RmlsZVN5c3RlbTogZnVuY3Rpb24oZmlsZVN5c3RlbU5hbWUpCisgICAgewor
ICAgICAgICBpZiAoIWZpbGVTeXN0ZW1OYW1lKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICB2YXIgdmlldyA9IHRoaXMuX2ZpbGVTeXN0ZW1WaWV3c1tmaWxlU3lzdGVtTmFtZV07CisgICAg
ICAgIGlmICghdmlldykgeworICAgICAgICAgICAgdmlldyA9IG5ldyBXZWJJbnNwZWN0b3IuRmls
ZVN5c3RlbVZpZXcoZmlsZVN5c3RlbU5hbWUpOworICAgICAgICAgICAgdGhpcy5fZmlsZVN5c3Rl
bVZpZXdzW2ZpbGVTeXN0ZW1OYW1lXSA9IHZpZXc7CisgICAgICAgIH0KKyAgICAgICAgdGhpcy5f
aW5uZXJTaG93Vmlldyh2aWV3KTsKKyAgICB9LAorCiAgICAgc2hvd0NhdGVnb3J5VmlldzogZnVu
Y3Rpb24oY2F0ZWdvcnlOYW1lKQogICAgIHsKICAgICAgICAgaWYgKCF0aGlzLl9jYXRlZ29yeVZp
ZXcpCkBAIC0xNjMxLDYgKzE2NzMsMjkgQEAgV2ViSW5zcGVjdG9yLkFwcGxpY2F0aW9uQ2FjaGVG
cmFtZVRyZWVFbGVtZW50LnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IKICAqIEBj
b25zdHJ1Y3RvcgogICogQGV4dGVuZHMge1dlYkluc3BlY3Rvci5CYXNlU3RvcmFnZVRyZWVFbGVt
ZW50fQogICovCitXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbVRyZWVFbGVtZW50ID0gZnVuY3Rpb24o
c3RvcmFnZVBhbmVsLCBmaWxlU3lzdGVtTmFtZSwgb3JpZ2luLCB0eXBlKQoreworICAgIFdlYklu
c3BlY3Rvci5CYXNlU3RvcmFnZVRyZWVFbGVtZW50LmNhbGwodGhpcywgc3RvcmFnZVBhbmVsLCBu
dWxsLCBvcmlnaW4gKyAnLycgKyB0eXBlLCBbImZpbGVzeXN0ZW0tc3RvcmFnZS10cmVlLWl0ZW0i
XSk7CisgICAgdGhpcy5fZmlsZVN5c3RlbU5hbWUgPSBmaWxlU3lzdGVtTmFtZTsKKyAgICB0aGlz
Ll9vcmlnaW4gPSBvcmlnaW47CisgICAgdGhpcy5fdHlwZSA9IHR5cGU7CisgICAgdGhpcy5oYXND
aGlsZHJlbiA9IGZhbHNlOworfTsKKworV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1UcmVlRWxlbWVu
dC5wcm90b3R5cGUgPSB7CisgICAgb25zZWxlY3Q6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICBX
ZWJJbnNwZWN0b3IuQmFzZVN0b3JhZ2VUcmVlRWxlbWVudC5wcm90b3R5cGUub25zZWxlY3QuY2Fs
bCh0aGlzKTsKKyAgICAgIHRoaXMuX3N0b3JhZ2VQYW5lbC5zaG93RmlsZVN5c3RlbSh0aGlzLl9m
aWxlU3lzdGVtTmFtZSk7CisgICAgfQorfTsKKworV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1UcmVl
RWxlbWVudC5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLkJhc2VTdG9yYWdlVHJl
ZUVsZW1lbnQucHJvdG90eXBlOworCisvKioKKyAqIEBjb25zdHJ1Y3RvcgorICogQGV4dGVuZHMg
e1dlYkluc3BlY3Rvci5CYXNlU3RvcmFnZVRyZWVFbGVtZW50fQorICovCiBXZWJJbnNwZWN0b3Iu
UmVzb3VyY2VSZXZpc2lvblRyZWVFbGVtZW50ID0gZnVuY3Rpb24oc3RvcmFnZVBhbmVsLCByZXZp
c2lvbikKIHsKICAgICB2YXIgdGl0bGUgPSByZXZpc2lvbi50aW1lc3RhbXAgPyByZXZpc2lvbi50
aW1lc3RhbXAudG9Mb2NhbGVUaW1lU3RyaW5nKCkgOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIihv
cmlnaW5hbCkiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvV2ViS2l0LnFyYyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvV2ViS2l0
LnFyYwppbmRleCA3NmZhNDMyOGI1MDFlMWVhZjdkMDU4YjA4MmJiZTE1NTczOWNjYzIwLi5jNzNl
YzgzZDRkMTc1ZmM5ZGRmNmVlNDdmNGM3ZTIyZmExM2VhYTkxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1dlYktpdC5xcmMKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9XZWJLaXQucXJjCkBAIC01NCw2ICs1NCw4IEBACiAgICAg
PGZpbGU+RXh0ZW5zaW9uUGFuZWwuanM8L2ZpbGU+CiAgICAgPGZpbGU+RXh0ZW5zaW9uUmVnaXN0
cnlTdHViLmpzPC9maWxlPgogICAgIDxmaWxlPkV4dGVuc2lvblNlcnZlci5qczwvZmlsZT4KKyAg
ICA8ZmlsZT5GaWxlU3lzdGVtLmpzPC9maWxlPgorICAgIDxmaWxlPkZpbGVTeXN0ZW1WaWV3Lmpz
PC9maWxlPgogICAgIDxmaWxlPkZvbnRWaWV3LmpzPC9maWxlPgogICAgIDxmaWxlPkdvVG9MaW5l
RGlhbG9nLmpzPC9maWxlPgogICAgIDxmaWxlPkhBUkVudHJ5LmpzPC9maWxlPgpAQCAtMjAyLDYg
KzIwNCw3IEBACiAgICAgPGZpbGU+SW1hZ2VzL2Vycm9yUmVkRG90LnBuZzwvZmlsZT4KICAgICA8
ZmlsZT5JbWFnZXMvZm9yd2FyZC5wbmc8L2ZpbGU+CiAgICAgPGZpbGU+SW1hZ2VzL2ZyYW1lLnBu
ZzwvZmlsZT4KKyAgICA8ZmlsZT5JbWFnZXMvZmlsZVN5c3RlbS5wbmc8L2ZpbGU+CiAgICAgPGZp
bGU+SW1hZ2VzL2dsb3NzeUhlYWRlci5wbmc8L2ZpbGU+CiAgICAgPGZpbGU+SW1hZ2VzL2dsb3Nz
eUhlYWRlclByZXNzZWQucG5nPC9maWxlPgogICAgIDxmaWxlPkltYWdlcy9nbG9zc3lIZWFkZXJT
ZWxlY3RlZC5wbmc8L2ZpbGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL2luc3BlY3Rvci5odG1sIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9pbnNwZWN0b3IuaHRtbAppbmRleCA3NmEyMWI5YTY4MDg5M2FhM2ZiNzFlZThiMzY4ZTlk
MzRlMjA4YTdkLi5mMTc4ZTk1OGRhZTU3NGMxZDkyMTM4N2E3ZDMyZjRhODE0MTYwNGY1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5odG1s
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmh0bWwK
QEAgLTc0LDYgKzc0LDcgQEAgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNj
cmlwdCIgc3JjPSJET01TdG9yYWdlLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHR5cGU9InRl
eHQvamF2YXNjcmlwdCIgc3JjPSJET01TdG9yYWdlSXRlbXNWaWV3LmpzIj48L3NjcmlwdD4KICAg
ICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJEYXRhR3JpZC5qcyI+PC9zY3Jp
cHQ+CisgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iRmlsZVN5c3RlbS5q
cyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iU2hv
d01vcmVEYXRhR3JpZE5vZGUuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9q
YXZhc2NyaXB0IiBzcmM9IkNvb2tpZXNUYWJsZS5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCB0
eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iQ29va2llSXRlbXNWaWV3LmpzIj48L3NjcmlwdD4K
QEAgLTE0Nyw2ICsxNDgsNyBAQCBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZh
c2NyaXB0IiBzcmM9IkltYWdlVmlldy5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCB0eXBlPSJ0
ZXh0L2phdmFzY3JpcHQiIHNyYz0iRGF0YWJhc2VUYWJsZVZpZXcuanMiPjwvc2NyaXB0PgogICAg
IDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IkRhdGFiYXNlUXVlcnlWaWV3Lmpz
Ij48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJGaWxl
U3lzdGVtVmlldy5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3Jp
cHQiIHNyYz0iUHJvZmlsZURhdGFHcmlkVHJlZS5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCB0
eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iQm90dG9tVXBQcm9maWxlRGF0YUdyaWRUcmVlLmpz
Ij48L3NjcmlwdD4KICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJUb3BE
b3duUHJvZmlsZURhdGFHcmlkVHJlZS5qcyI+PC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL3Jlc291cmNlc1BhbmVsLmNzcyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvcmVzb3VyY2VzUGFuZWwuY3NzCmluZGV4IGFiODUy
MmQxNTI0OTNjMzRkZmY4ODg3NDQ1ZTc3NTVkYmVlNDVkMzIuLjVhY2VlMzcwMDJiMTMyMDcyZjIx
NjA5YzFkYTE2ZGRjY2NmODcyMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvcmVzb3VyY2VzUGFuZWwuY3NzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvcmVzb3VyY2VzUGFuZWwuY3NzCkBAIC0zMzMsNyArMzMzLDYgQEAgbGku
c2VsZWN0ZWQgLmJhc2Utc3RvcmFnZS10cmVlLWVsZW1lbnQtc3VidGl0bGUgewogICAgIGNvbnRl
bnQ6IHVybChJbWFnZXMvYXBwbGljYXRpb25DYWNoZS5wbmcpOwogfQogCi0vKiBGSVhNRTogTWFr
ZSBzZXBhcmF0ZSBwbmcgZm9yIGZpbGUtc3lzdGVtICovCi0uZmlsZS1zeXN0ZW0tc3RvcmFnZS10
cmVlLWl0ZW0gLmljb24gewotICAgIGNvbnRlbnQ6IHVybChJbWFnZXMvYXBwbGljYXRpb25DYWNo
ZS5wbmcpOworLmZpbGVzeXN0ZW0tc3RvcmFnZS10cmVlLWl0ZW0gLmljb24geworICAgIGNvbnRl
bnQ6IHVybChJbWFnZXMvZmlsZVN5c3RlbS5wbmcpOwogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>116767</attachid>
            <date>2011-11-28 09:06:37 -0800</date>
            <delta_ts>2011-11-28 21:46:00 -0800</delta_ts>
            <desc>Patch (not ready)</desc>
            <filename>bug-72691-20111129020635.patch</filename>
            <type>text/plain</type>
            <size>50796</size>
            <attacher name="Taiju Tsuiki">tzik</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAxMjYzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmUwYjdmNGUxM2M0NmE0
ODlkMTE0MGIzNjkzYjYxZWYyNzMyNzU2Ni4uMmMwYjFiOTM3MTg0ZjVlNWE0YzVjZmZkZDFmNzUy
YTE0NWQwMjg2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYwIEBACisyMDExLTExLTI4ICBUYWlq
dSBUU1VJS0kgIDx0emlrQGNocm9taXVtLm9yZz4KKworICAgICAgICBBZGRpbmcgRmlsZVN5c3Rl
bSBzdXBwb3J0IHRvIEluc3BlY3RvcjogcGFydCAyLiBTdG9yYWdlIHRyZWUKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcyNjkxCisKKyAgICAgICAgTmVl
ZCBhIHNob3J0IGRlc2NyaXB0aW9uIGFuZCBidWcgVVJMIChPT1BTISkKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0OiBodHRwL3Rlc3RzL2luc3Bl
Y3Rvci9maWxlc3lzdGVtL2ZpbGVzeXN0ZW0tY2FwdHVyZS5odG1sCisKKyAgICAgICAgKiBXZWJD
b3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAg
ICAgICogZmlsZWFwaS9ET01GaWxlU3lzdGVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTUZp
bGVTeXN0ZW06OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpET01GaWxlU3lzdGVtOjpjb250
ZXh0RGVzdHJveWVkKToKKyAgICAgICAgKiBmaWxlYXBpL0RPTUZpbGVTeXN0ZW0uaDoKKyAgICAg
ICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yLmpzb246CisgICAgICAgICogaW5zcGVjdG9yL0luc3Bl
Y3RvckZpbGVTeXN0ZW1BZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JGaWxl
U3lzdGVtQWdlbnQ6On5JbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50OjpkaWRPcGVuRmlsZVN5c3RlbSk6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQ6OmZpbGVTeXN0ZW1JbnZhbGlkYXRl
ZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQ6OmVuYWJsZSk6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQ6OnNldEZyb250ZW5k
KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckZpbGVTeXN0ZW1BZ2VudDo6Y2xlYXJGcm9u
dGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQ6OmdldEZp
bGVTeXN0ZW0pOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50OjpJ
bnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JG
aWxlU3lzdGVtQWdlbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkJhY2tQdHI6OmNyZWF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpCYWNrUHRyOjpnZXQpOgorICAgICAgICAoV2ViQ29yZTo6QmFja1B0
cjo6Y2xlYXIpOgorICAgICAgICAoV2ViQ29yZTo6QmFja1B0cjo6QmFja1B0cik6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQ6OmdldEZyb250ZW5kKToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRmlsZVN5c3RlbUluc3RydW1lbnRhdGlvbi5oOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRPcGVuRmlsZVN5c3Rl
bSk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZE9wZW5GaWxlU3lz
dGVtSW1wbCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5o
OgorICAgICAgICAqIGluc3BlY3Rvci9jb21waWxlLWZyb250LWVuZC5zaDoKKyAgICAgICAgKiBp
bnNwZWN0b3IvZnJvbnQtZW5kL0VtcHR5Vmlldy5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5F
bXB0eVZpZXcucHJvdG90eXBlLndhc1Nob3duKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQt
ZW5kL0ZpbGVTeXN0ZW0uanM6IEFkZGVkLgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQv
RmlsZVN5c3RlbVZpZXcuanM6IEFkZGVkLgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQv
SW1hZ2VzL2ZpbGVTeXN0ZW0ucG5nOiBBZGRlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQt
ZW5kL1Jlc291cmNlc1BhbmVsLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNlc1Bh
bmVsLnByb3RvdHlwZS5fcmVzZXQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNlc1Bh
bmVsLnByb3RvdHlwZS5hZGRGaWxlU3lzdGVtKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SZXNv
dXJjZXNQYW5lbC5wcm90b3R5cGUuaW52YWxpZGF0ZUZpbGVTeXN0ZW0pOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLlJlc291cmNlc1BhbmVsLnByb3RvdHlwZS5zaG93RmlsZVN5c3RlbSk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbVRyZWVFbGVtZW50KToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5GaWxlU3lzdGVtVHJlZUVsZW1lbnQucHJvdG90eXBlLm9uc2VsZWN0KToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1dlYktpdC5xcmM6CisgICAgICAgICogaW5zcGVjdG9y
L2Zyb250LWVuZC9pbnNwZWN0b3IuaHRtbDoKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5k
L2luc3BlY3Rvci5qczoKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL3Jlc291cmNlc1Bh
bmVsLmNzczoKKyAgICAgICAgKC5maWxlc3lzdGVtLXN0b3JhZ2UtdHJlZS1pdGVtIC5pY29uKToK
KwogMjAxMS0xMS0yOCAgQW5kcmVhcyBLbGluZyAgPGtsaW5nQHdlYmtpdC5vcmc+CiAKICAgICAg
ICAgSW5zcGVjdG9yQ1NTQWdlbnQ6IFJlbW92ZSB1bnVzZWQgZnVuY3Rpb24gaW5saW5lU3R5bGVF
bGVtZW50KCkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggM2QxMmE3OGJkMWUwOWVkNmQ2NmMzZjMwNTAy
ZjgzMjkwOTAwMjhhYS4uNjE2NjdlYjE3M2RiYzU5ZmE0M2FmZTU4ZGYwMjgwMTc1YmY3YTUwMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUuZ3lwaQpAQCAtNjM1OCw2ICs2MzU4LDggQEAKICAgICAgICAgICAgICdpbnNw
ZWN0b3IvZnJvbnQtZW5kL0V4dGVuc2lvblBhbmVsLmpzJywKICAgICAgICAgICAgICdpbnNwZWN0
b3IvZnJvbnQtZW5kL0V4dGVuc2lvblJlZ2lzdHJ5U3R1Yi5qcycsCiAgICAgICAgICAgICAnaW5z
cGVjdG9yL2Zyb250LWVuZC9FeHRlbnNpb25TZXJ2ZXIuanMnLAorICAgICAgICAgICAgJ2luc3Bl
Y3Rvci9mcm9udC1lbmQvRmlsZVN5c3RlbS5qcycsCisgICAgICAgICAgICAnaW5zcGVjdG9yL2Zy
b250LWVuZC9GaWxlU3lzdGVtVmlldy5qcycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250
LWVuZC9Gb250Vmlldy5qcycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9Hb1Rv
TGluZURpYWxvZy5qcycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9IQVJFbnRy
eS5qcycsCkBAIC02NTE5LDYgKzY1MjEsNyBAQAogICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9u
dC1lbmQvSW1hZ2VzL2Vycm9yUmVkRG90LnBuZycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zy
b250LWVuZC9JbWFnZXMvZm9yd2FyZC5wbmcnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9u
dC1lbmQvSW1hZ2VzL2ZyYW1lLnBuZycsCisgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVu
ZC9JbWFnZXMvZmlsZVN5c3RlbS5wbmcnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1l
bmQvSW1hZ2VzL2dsb3NzeUhlYWRlci5wbmcnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9u
dC1lbmQvSW1hZ2VzL2dsb3NzeUhlYWRlclByZXNzZWQucG5nJywKICAgICAgICAgICAgICdpbnNw
ZWN0b3IvZnJvbnQtZW5kL0ltYWdlcy9nbG9zc3lIZWFkZXJTZWxlY3RlZC5wbmcnLApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2ogYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagppbmRleCA0Y2MwZThiN2Q2
MjY4NmI5NTlmNWJjZDE3MDNkN2IxZDhkZDgwZWM0Li45MGQ4Nzk0NGRiMTM5ZWFmMTU1Y2NjMmQy
ZGUyYTViYTYwMGY2NGNlIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJv
ai9XZWJDb3JlLnZjcHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJD
b3JlLnZjcHJvagpAQCAtNjg5ODUsNiArNjg5ODUsMTQgQEAKIAkJCQkJPgogCQkJCTwvRmlsZT4K
IAkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGluc3BlY3Rvclxmcm9udC1lbmRcRmls
ZVN5c3RlbS5qcyIKKwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQorCQkJCQlSZWxhdGl2
ZVBhdGg9Ii4uXGluc3BlY3Rvclxmcm9udC1lbmRcRmlsZVN5c3RlbVZpZXcuanMiCisJCQkJCT4K
KwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKIAkJCQkJUmVsYXRpdmVQYXRoPSIuLlxpbnNwZWN0b3Jc
ZnJvbnQtZW5kXEZvbnRWaWV3LmpzIgogCQkJCQk+CiAJCQkJPC9GaWxlPgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZmlsZWFwaS9ET01GaWxlU3lzdGVtLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2ZpbGVhcGkvRE9NRmlsZVN5c3RlbS5jcHAKaW5kZXggYWMzODY5MDNiMThmYmJjYjFjNTBlYTQ3
ODIyMjAxOTExZTc2NzIyMC4uMTE0MzFmNzdhNTc2NzYxZGYwNGFmYTM2OWE5ZGFjNjFiMWQzZWE3
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9ET01GaWxlU3lzdGVtLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0RPTUZpbGVTeXN0ZW0uY3BwCkBAIC00NSw2ICs0
NSw3IEBACiAjaW5jbHVkZSAiRmlsZVdyaXRlci5oIgogI2luY2x1ZGUgIkZpbGVXcml0ZXJCYXNl
Q2FsbGJhY2suaCIKICNpbmNsdWRlICJGaWxlV3JpdGVyQ2FsbGJhY2suaCIKKyNpbmNsdWRlICJJ
bnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JGaWxlU3lzdGVt
SW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiTWV0YWRhdGFDYWxsYmFjay5oIgogI2luY2x1
ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKQEAgLTU2LDcgKzU3LDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogUGFzc1JlZlB0cjxET01GaWxlU3lzdGVtPiBET01GaWxlU3lzdGVtOjpjcmVh
dGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5nJiBuYW1lLCBQ
YXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbT4gYXN5bmNGaWxlU3lzdGVtKQogewogICAgIFJlZlB0
cjxET01GaWxlU3lzdGVtPiBmaWxlU3lzdGVtKGFkb3B0UmVmKG5ldyBET01GaWxlU3lzdGVtKGNv
bnRleHQsIG5hbWUsIGFzeW5jRmlsZVN5c3RlbSkpKTsKLSAgICBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OmRpZE9wZW5GaWxlU3lzdGVtKGZpbGVTeXN0ZW0uZ2V0KCkpOworICAgIGZpbGVTeXN0
ZW0tPm1fYWdlbnRQcm92aWRlciA9IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkT3BlbkZp
bGVTeXN0ZW0oZmlsZVN5c3RlbS5nZXQoKSk7CiAgICAgcmV0dXJuIGZpbGVTeXN0ZW07CiB9CiAK
QEAgLTgzLDYgKzg0LDExIEBAIGJvb2wgRE9NRmlsZVN5c3RlbTo6aGFzUGVuZGluZ0FjdGl2aXR5
KCkgY29uc3QKIAogdm9pZCBET01GaWxlU3lzdGVtOjpjb250ZXh0RGVzdHJveWVkKCkKIHsKKyAg
ICBSZWZQdHI8RE9NRmlsZVN5c3RlbT4gZmlsZVN5c3RlbSh0aGlzKTsKKyAgICBpZiAoSW5zcGVj
dG9yRmlsZVN5c3RlbUFnZW50KiBhZ2VudCA9IG1fYWdlbnRQcm92aWRlci5nZXQoKSA/IG1fYWdl
bnRQcm92aWRlci0+Z2V0KCkgOiAwKSB7CisgICAgICAgIG1fYWdlbnRQcm92aWRlciA9IDA7Cisg
ICAgICAgIGFnZW50LT5maWxlU3lzdGVtSW52YWxpZGF0ZWQodGhpcyk7CisgICAgfQogICAgIG1f
YXN5bmNGaWxlU3lzdGVtLT5zdG9wKCk7CiAgICAgQWN0aXZlRE9NT2JqZWN0Ojpjb250ZXh0RGVz
dHJveWVkKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0RPTUZpbGVT
eXN0ZW0uaCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRE9NRmlsZVN5c3RlbS5oCmluZGV4IDc0
ZmE5YWMxODE1ZmQ1ZWNmMTVlMWM1MGI1ZTAyOTBjYWViNjhhODcuLmE3ZmRhODhmYzhkZTQzZWUx
ZDkyYmMxMTIzZGZlZTIxNTQ1ZjhkMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVh
cGkvRE9NRmlsZVN5c3RlbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRE9NRmlsZVN5
c3RlbS5oCkBAIC00NCw2ICs0NCw4IEBAIGNsYXNzIEZpbGU7CiBjbGFzcyBGaWxlQ2FsbGJhY2s7
CiBjbGFzcyBGaWxlRW50cnk7CiBjbGFzcyBGaWxlV3JpdGVyQ2FsbGJhY2s7CitjbGFzcyBJbnNw
ZWN0b3JGaWxlU3lzdGVtQWdlbnQ7Cit0ZW1wbGF0ZTx0eXBlbmFtZT4gY2xhc3MgQmFja1B0cjsK
IAogY2xhc3MgRE9NRmlsZVN5c3RlbSA6IHB1YmxpYyBET01GaWxlU3lzdGVtQmFzZSwgcHVibGlj
IEFjdGl2ZURPTU9iamVjdCB7CiBwdWJsaWM6CkBAIC05Miw2ICs5NCw4IEBAIHByaXZhdGU6CiAg
ICAgICAgIFJlZlB0cjxDQj4gbV9jYWxsYmFjazsKICAgICAgICAgUmVmUHRyPENCQXJnPiBtX2Nh
bGxiYWNrQXJnOwogICAgIH07CisKKyAgICBSZWZQdHI8QmFja1B0cjxJbnNwZWN0b3JGaWxlU3lz
dGVtQWdlbnQ+ID4gbV9hZ2VudFByb3ZpZGVyOwogfTsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIENC
LCB0eXBlbmFtZSBDQkFyZz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3IuanNvbiBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbgpp
bmRleCA2MTVjZjBmYWY1NzE4NWEyNDVmZTQzNzQ1ZTRmN2Q2NzIwYTczMjhmLi5mZjJmNTY3Nzk4
NjYyNmZiZjYzNzc3NTkyOTczMDRmY2M3MzUxOTU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24KKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3Rvci5qc29uCkBAIC0xMDA3LDEwICsxMDA3LDQyIEBACiAgICAgICAgICAgICB9LAog
ICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICJuYW1lIjogImRpc2FibGUiLAotICAgICAg
ICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJEaXNhYmxlcyBldmVudHMgZnJvbSBiYWNrZW5kLi4i
CisgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkRpc2FibGVzIGV2ZW50cyBmcm9tIGJh
Y2tlbmQuIgogICAgICAgICAgICAgfQogICAgICAgICBdLAogICAgICAgICAiZXZlbnRzIjogWwor
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICJuYW1lIjogImZpbGVTeXN0ZW1BZGRlZCIs
CisgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIk5vdGlmaWVzIGZyb250ZW5kIG9mIG5l
dyBGaWxlU3lzdGVtLiIsCisgICAgICAgICAgICAgICAgInBhcmFtZXRlcnMiOiBbCisgICAgICAg
ICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICJuYW1lIjogImZpbGVTeXN0
ZW1OYW1lIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJVbmlxdWUg
aWRlbnRpZmllZCBmb3IgdGhlIEZpbGVTeXN0ZW0uIiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICJ0eXBlIjogInN0cmluZyIKKyAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAib3JpZ2luIiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJTZWN1cml0eSBvcmlnaW4uIiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICJ0eXBlIjogInN0cmluZyIKKyAgICAgICAgICAgICAgICAg
ICAgfSwKKyAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgIm5h
bWUiOiAidHlwZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiRmls
ZVN5c3RlbSB0eXBlLCBvbmUgb2YgdGVtcG9yYXJ5LCBwZXJzaXN0ZW50IG9yIGV4dGVybmFsLiIs
CisgICAgICAgICAgICAgICAgICAgICAgICAidHlwZSI6ICJzdHJpbmciCisgICAgICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICBdCisgICAgICAgICAgICB9LAorICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgICJuYW1lIjogImZpbGVTeXN0ZW1JbnZhbGlkYXRlZCIsCisgICAg
ICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIk5vdGlmaWVzIGZyb250ZW5kIG9mIGZpbGVzeXN0
ZW0gaW52YWxpZGF0aW9uLiIsCisgICAgICAgICAgICAgICAgInBhcmFtZXRlcnMiOiBbCisgICAg
ICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICJuYW1lIjogImZpbGVT
eXN0ZW1OYW1lIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJGaWxl
U3lzdGVtIG5hbWUgdG8gYmUgaW52YWxpZGF0ZWQuIiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICJ0eXBlIjogInN0cmluZyIKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
IF0KKyAgICAgICAgICAgIH0KICAgICAgICAgXQogICAgIH0sCiAgICAgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZpbGVTeXN0ZW1BZ2VudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50LmNwcAppbmRl
eCBhNjRhMWIzMzEwYWY5YzA2YjI1YjhmYjJjMDJmYjI5OGVhNDY3NGMyLi4xZmRiYzNlZGM4MGZh
N2Y5OTI0ZjIwMzZlMzc5OTY3N2UzZDZhYmE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50LmNwcApAQCAtMzYsNiArMzYsMzUg
QEAKICNpbmNsdWRlICJET01GaWxlU3lzdGVtLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yU3RhdGUu
aCIKICNpbmNsdWRlICJJbnN0cnVtZW50aW5nQWdlbnRzLmgiCisjaW5jbHVkZSAiU2VjdXJpdHlP
cmlnaW4uaCIKKworbmFtZXNwYWNlIHsKKworU3RyaW5nIHR5cGVUb1N0cmluZyhXZWJDb3JlOjpB
c3luY0ZpbGVTeXN0ZW06OlR5cGUgdHlwZSkKK3sKKyAgICB1c2luZyBXZWJDb3JlOjpBc3luY0Zp
bGVTeXN0ZW07CisgICAgc3dpdGNoICh0eXBlKSB7CisgICAgY2FzZSBBc3luY0ZpbGVTeXN0ZW06
OkV4dGVybmFsOgorICAgICAgICByZXR1cm4gImV4dGVybmFsIjsKKyAgICBjYXNlIEFzeW5jRmls
ZVN5c3RlbTo6UGVyc2lzdGVudDoKKyAgICAgICAgcmV0dXJuICJwZXJzaXN0ZW50IjsKKyAgICBj
YXNlIEFzeW5jRmlsZVN5c3RlbTo6VGVtcG9yYXJ5OgorICAgICAgICByZXR1cm4gInRlbXBvcmFy
eSI7CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuICJ1bmtub3duIjsKKyAgICB9Cit9CisK
K3R5cGVkZWYgV2ViQ29yZTo6QmFja1B0cjxXZWJDb3JlOjpJbnNwZWN0b3JGaWxlU3lzdGVtQWdl
bnQ+IEFnZW50UHJvdmlkZXI7Cit0eXBlZGVmIFdlYkNvcmU6OkJhY2tQdHI8V2ViQ29yZTo6SW5z
cGVjdG9yRnJvbnRlbmQ6OkZpbGVTeXN0ZW0+IEZyb250ZW5kUHJvdmlkZXI7CisKK3RlbXBsYXRl
PHR5cGVuYW1lIFQ+CitQYXNzUmVmUHRyPFdlYkNvcmU6OkJhY2tQdHI8VD4gPiBtYWtlQmFja1B0
cihUKiBwdHIpCit7CisgICAgcmV0dXJuIFdlYkNvcmU6OkJhY2tQdHI8VD46OmNyZWF0ZShwdHIp
OworfQorCit9IC8vIGFub255bW91cyBuYW1lc3BhY2UKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CkBAIC01MSwzMyArODAsNjEgQEAgUGFzc093blB0cjxJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQ+
IEluc3BlY3RvckZpbGVTeXN0ZW1BZ2VudDo6Y3JlYXRlKEluc3RydW1lbnQKIAogSW5zcGVjdG9y
RmlsZVN5c3RlbUFnZW50Ojp+SW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50KCkKIHsKKyAgICBpZiAo
bV9hZ2VudFByb3ZpZGVyLmdldCgpICYmIG1fYWdlbnRQcm92aWRlci0+Z2V0KCkpCisgICAgICAg
IG1fYWdlbnRQcm92aWRlci0+Y2xlYXIoKTsKKyAgICBpZiAobV9mcm9udGVuZFByb3ZpZGVyLmdl
dCgpICYmIG1fZnJvbnRlbmRQcm92aWRlci0+Z2V0KCkpCisgICAgICAgIG1fZnJvbnRlbmRQcm92
aWRlci0+Y2xlYXIoKTsKICAgICBtX2luc3RydW1lbnRpbmdBZ2VudHMtPnNldEluc3BlY3RvckZp
bGVTeXN0ZW1BZ2VudCgwKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQ6OmRp
ZE9wZW5GaWxlU3lzdGVtKFBhc3NSZWZQdHI8RE9NRmlsZVN5c3RlbT4gZmlsZVN5c3RlbSkKK1Bh
c3NSZWZQdHI8QmFja1B0cjxJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQ+ID4gSW5zcGVjdG9yRmls
ZVN5c3RlbUFnZW50OjpkaWRPcGVuRmlsZVN5c3RlbShQYXNzUmVmUHRyPERPTUZpbGVTeXN0ZW0+
IGZpbGVTeXN0ZW0pCiB7Ci0gICAgLy8gVE9ETyh0emlrKToKLSAgICAvLyBTdG9yZSBmaWxlU3lz
dGVtIGFuZCBub3RpZnkgdGhlIGZyb250ZW5kIHVzaW5nIGZpbGVTeXN0ZW1BZGRlZCBldmVudC4K
LSAgICAvLyBmaWxlU3lzdGVtIHNob3VsZCBiZSBhc3NvY2lhdGVkIHdpdGggaXRzIG5hbWUuCisg
ICAgRE9NRmlsZVN5c3RlbSogZmlsZVN5c3RlbVB0ciA9IGZpbGVTeXN0ZW0uZ2V0KCk7CisgICAg
U3RyaW5nIGZpbGVTeXN0ZW1OYW1lID0gZmlsZVN5c3RlbS0+bmFtZSgpOworICAgIE5hbWVkRmls
ZVN5c3RlbXM6Oml0ZXJhdG9yIGl0ciA9IG1fZmlsZVN5c3RlbXMuYWRkKGZpbGVTeXN0ZW0tPm5h
bWUoKSwgRmlsZVN5c3RlbXMoKSkuZmlyc3Q7CisgICAgaXRyLT5zZWNvbmQuYWRkKGZpbGVTeXN0
ZW0pOworCisgICAgaWYgKGdldEZyb250ZW5kKCkgJiYgbV9lbmFibGVkKSB7CisgICAgICAgIGdl
dEZyb250ZW5kKCktPmZpbGVTeXN0ZW1BZGRlZCgKKyAgICAgICAgICAgIGZpbGVTeXN0ZW1OYW1l
LAorICAgICAgICAgICAgZmlsZVN5c3RlbVB0ci0+c2VjdXJpdHlPcmlnaW4oKS0+dG9TdHJpbmco
KSwKKyAgICAgICAgICAgIHR5cGVUb1N0cmluZyhmaWxlU3lzdGVtUHRyLT5hc3luY0ZpbGVTeXN0
ZW0oKS0+dHlwZSgpKSk7CisgICAgfQorICAgIHJldHVybiBtX2FnZW50UHJvdmlkZXI7CiB9CiAK
IHZvaWQgSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50OjpmaWxlU3lzdGVtSW52YWxpZGF0ZWQoUGFz
c1JlZlB0cjxET01GaWxlU3lzdGVtPiBmaWxlU3lzdGVtKQogewotICAgIC8vIFRPRE8odHppayk6
Ci0gICAgLy8gRGlzY2FyZCBmaWxlU3lzdGVtIGlmIHdlIGhhdmUuCi0gICAgLy8gSWYgdGhlcmUg
aXMgbm8gb3RoZXIgZmlsZVN5c3RlbSB3aG8gaGFzIHNhbWUgbmFtZSB3aXRoIGZpbGVTeXN0ZW0s
Ci0gICAgLy8gbm90aWZ5IHRoZSBmcm9udGVuZCB1c2luZyBmaWxlU3lzdGVtSW52YWxpZGF0ZWQg
ZXZlbnQuCisgICAgU3RyaW5nIG5hbWUgPSBmaWxlU3lzdGVtLT5uYW1lKCk7CisgICAgTmFtZWRG
aWxlU3lzdGVtczo6aXRlcmF0b3IgaXRyID0gbV9maWxlU3lzdGVtcy5maW5kKG5hbWUpOworICAg
IGlmIChpdHIgPT0gbV9maWxlU3lzdGVtcy5lbmQoKSkKKyAgICAgICAgcmV0dXJuOworICAgIGl0
ci0+c2Vjb25kLnJlbW92ZShmaWxlU3lzdGVtKTsKKyAgICBpZiAoaXRyLT5zZWNvbmQuaXNFbXB0
eSgpKSB7CisgICAgICAgIG1fZmlsZVN5c3RlbXMucmVtb3ZlKGl0cik7CisgICAgICAgIGlmIChn
ZXRGcm9udGVuZCgpICYmIG1fZW5hYmxlZCkKKyAgICAgICAgICAgIGdldEZyb250ZW5kKCktPmZp
bGVTeXN0ZW1JbnZhbGlkYXRlZChuYW1lKTsKKyAgICB9CiB9CiAKIHZvaWQgSW5zcGVjdG9yRmls
ZVN5c3RlbUFnZW50OjplbmFibGUoRXJyb3JTdHJpbmcqKQogeworICAgIGlmIChJbnNwZWN0b3JG
cm9udGVuZDo6RmlsZVN5c3RlbSogZnJvbnRlbmQgPSBnZXRGcm9udGVuZCgpKSB7CisgICAgICAg
IGZvciAoTmFtZWRGaWxlU3lzdGVtczo6aXRlcmF0b3IgaXRyID0gbV9maWxlU3lzdGVtcy5iZWdp
bigpOworICAgICAgICAgICAgIGl0ciAhPSBtX2ZpbGVTeXN0ZW1zLmVuZCgpOyArK2l0cikgewor
ICAgICAgICAgICAgQVNTRVJUKCFpdHItPnNlY29uZC5pc0VtcHR5KCkpOworICAgICAgICAgICAg
RE9NRmlsZVN5c3RlbSogZmlsZVN5c3RlbSA9IGl0ci0+c2Vjb25kLmJlZ2luKCktPmdldCgpOwor
ICAgICAgICAgICAgZnJvbnRlbmQtPmZpbGVTeXN0ZW1BZGRlZCgKKyAgICAgICAgICAgICAgICBm
aWxlU3lzdGVtLT5uYW1lKCksCisgICAgICAgICAgICAgICAgZmlsZVN5c3RlbS0+c2VjdXJpdHlP
cmlnaW4oKS0+dG9TdHJpbmcoKSwKKyAgICAgICAgICAgICAgICB0eXBlVG9TdHJpbmcoZmlsZVN5
c3RlbS0+YXN5bmNGaWxlU3lzdGVtKCktPnR5cGUoKSkpOworICAgICAgICB9CisgICAgfQorCiAg
ICAgaWYgKG1fZW5hYmxlZCkKICAgICAgICAgcmV0dXJuOwogICAgIG1fZW5hYmxlZCA9IHRydWU7
CiAgICAgbV9zdGF0ZS0+c2V0Qm9vbGVhbihGaWxlU3lzdGVtQWdlbnRTdGF0ZTo6ZmlsZVN5c3Rl
bUFnZW50RW5hYmxlZCwgbV9lbmFibGVkKTsKLQotICAgIC8vIFRPRE8odHppayk6Ci0gICAgLy8g
UGFzcyBhbGwgYXZhaWxhYmxlIEZpbGVTeXN0ZW0gdG8gdGhlIGZyb250ZW5kLCB1c2luZyBmaWxl
U3lzdGVtQWRkZWQgZXZlbnQuCiB9CiAKIHZvaWQgSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50Ojpk
aXNhYmxlKEVycm9yU3RyaW5nKikKQEAgLTkxLDEyICsxNDgsMTYgQEAgdm9pZCBJbnNwZWN0b3JG
aWxlU3lzdGVtQWdlbnQ6OmRpc2FibGUoRXJyb3JTdHJpbmcqKQogdm9pZCBJbnNwZWN0b3JGaWxl
U3lzdGVtQWdlbnQ6OnNldEZyb250ZW5kKEluc3BlY3RvckZyb250ZW5kKiBmcm9udGVuZCkKIHsK
ICAgICBBU1NFUlQoZnJvbnRlbmQpOwotICAgIG1fZnJvbnRlbmQgPSBmcm9udGVuZC0+ZmlsZXN5
c3RlbSgpOworICAgIGlmIChtX2Zyb250ZW5kUHJvdmlkZXIuZ2V0KCkpCisgICAgICAgIG1fZnJv
bnRlbmRQcm92aWRlci0+Y2xlYXIoKTsKKyAgICBtX2Zyb250ZW5kUHJvdmlkZXIgPSBtYWtlQmFj
a1B0cihmcm9udGVuZC0+ZmlsZXN5c3RlbSgpKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JGaWxlU3lz
dGVtQWdlbnQ6OmNsZWFyRnJvbnRlbmQoKQogewotICAgIG1fZnJvbnRlbmQgPSAwOworICAgIGlm
IChtX2Zyb250ZW5kUHJvdmlkZXIuZ2V0KCkpCisgICAgICAgIG1fZnJvbnRlbmRQcm92aWRlci0+
Y2xlYXIoKTsKKyAgICBtX2Zyb250ZW5kUHJvdmlkZXIgPSAwOwogICAgIG1fZW5hYmxlZCA9IGZh
bHNlOwogICAgIG1fc3RhdGUtPnNldEJvb2xlYW4oRmlsZVN5c3RlbUFnZW50U3RhdGU6OmZpbGVT
eXN0ZW1BZ2VudEVuYWJsZWQsIG1fZW5hYmxlZCk7CiB9CkBAIC0xMDYsOSArMTY3LDE2IEBAIHZv
aWQgSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50OjpyZXN0b3JlKCkKICAgICBtX2VuYWJsZWQgPSBt
X3N0YXRlLT5nZXRCb29sZWFuKEZpbGVTeXN0ZW1BZ2VudFN0YXRlOjpmaWxlU3lzdGVtQWdlbnRF
bmFibGVkKTsKIH0KIAorRE9NRmlsZVN5c3RlbSogSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50Ojpn
ZXRGaWxlU3lzdGVtKGNvbnN0IFN0cmluZyYgZmlsZVN5c3RlbU5hbWUpCit7CisgICAgTmFtZWRG
aWxlU3lzdGVtczo6aXRlcmF0b3IgaXRyID0gbV9maWxlU3lzdGVtcy5maW5kKGZpbGVTeXN0ZW1O
YW1lKTsKKyAgICByZXR1cm4gaXRyICE9IG1fZmlsZVN5c3RlbXMuZW5kKCkgPyBpdHItPnNlY29u
ZC5iZWdpbigpLT5nZXQoKSA6IDA7Cit9CisKIEluc3BlY3RvckZpbGVTeXN0ZW1BZ2VudDo6SW5z
cGVjdG9yRmlsZVN5c3RlbUFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdB
Z2VudHMsIEluc3BlY3RvclN0YXRlKiBzdGF0ZSkKICAgICA6IEluc3BlY3RvckJhc2VBZ2VudChp
bnN0cnVtZW50aW5nQWdlbnRzLCBzdGF0ZSksCi0gICAgICBtX2Zyb250ZW5kKDApLAorICAgICAg
bV9hZ2VudFByb3ZpZGVyKG1ha2VCYWNrUHRyKHRoaXMpKSwKKyAgICAgIG1fZnJvbnRlbmRQcm92
aWRlcigwKSwKICAgICAgIG1fZW5hYmxlZChmYWxzZSkKIHsKICAgICBBU1NFUlQoaW5zdHJ1bWVu
dGluZ0FnZW50cyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yRmlsZVN5c3RlbUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
RmlsZVN5c3RlbUFnZW50LmgKaW5kZXggZWZhNTU4M2UwZjVhZWVhMjM3YjJkMmQ4ZjA4NGI2NDkx
NGJkNDQ5Ni4uYjgwNWVkODQ2OTdlMDUxYWQ5MzkxMjUwNTI3NWM2NjcwODNjZWU5MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZpbGVTeXN0ZW1BZ2VudC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQu
aApAQCAtMzYsMjEgKzM2LDM3IEBACiAjaW5jbHVkZSAiSW5zcGVjdG9yQmFzZUFnZW50LmgiCiAj
aW5jbHVkZSAiSW5zcGVjdG9yRnJvbnRlbmQuaCIKIAorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+
CisjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgog
I2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgRE9NRmlsZVN5c3RlbTsKK2NsYXNzIEluc3Bl
Y3RvckZpbGVTeXN0ZW1BZ2VudDsKIGNsYXNzIEluc3BlY3RvckZyb250ZW5kOwogY2xhc3MgSW5z
cGVjdG9yU3RhdGU7CiBjbGFzcyBJbnN0cnVtZW50aW5nQWdlbnRzOwogCit0ZW1wbGF0ZTx0eXBl
bmFtZSBUPgorY2xhc3MgQmFja1B0ciA6IHB1YmxpYyBSZWZDb3VudGVkPEJhY2tQdHI8VD4gPiB7
CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQmFja1B0cjxUPik7CitwdWJsaWM6CisgICAgc3Rh
dGljIFBhc3NSZWZQdHI8QmFja1B0cjxUPiA+IGNyZWF0ZShUKiBwdHIpIHtyZXR1cm4gYWRvcHRS
ZWYobmV3IEJhY2tQdHIocHRyKSk7fQorICAgIFQqIGdldCgpIGNvbnN0IHtyZXR1cm4gbV9wdHI7
fQorICAgIHZvaWQgY2xlYXIoKSB7bV9wdHIgPSAwO30KK3ByaXZhdGU6CisgICAgZXhwbGljaXQg
QmFja1B0cihUKiBwdHIpIDogbV9wdHIocHRyKSB7IH0KKyAgICBUKiBtX3B0cjsKK307CisKIGNs
YXNzIEluc3BlY3RvckZpbGVTeXN0ZW1BZ2VudCA6IHB1YmxpYyBJbnNwZWN0b3JCYXNlQWdlbnQg
ewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzT3duUHRyPEluc3BlY3RvckZpbGVTeXN0ZW1BZ2Vu
dD4gY3JlYXRlKEluc3RydW1lbnRpbmdBZ2VudHMqLCBJbnNwZWN0b3JTdGF0ZSopOwogICAgIHZp
cnR1YWwgfkluc3BlY3RvckZpbGVTeXN0ZW1BZ2VudCgpOwogCi0gICAgdm9pZCBkaWRPcGVuRmls
ZVN5c3RlbShQYXNzUmVmUHRyPERPTUZpbGVTeXN0ZW0+KTsKKyAgICBQYXNzUmVmUHRyPEJhY2tQ
dHI8SW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50PiA+IGRpZE9wZW5GaWxlU3lzdGVtKFBhc3NSZWZQ
dHI8RE9NRmlsZVN5c3RlbT4pOwogICAgIHZvaWQgZmlsZVN5c3RlbUludmFsaWRhdGVkKFBhc3NS
ZWZQdHI8RE9NRmlsZVN5c3RlbT4pOwogCiAgICAgdm9pZCBlbmFibGUoRXJyb3JTdHJpbmcqKTsK
QEAgLTU5LDEwICs3NSwyMyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldEZyb250ZW5k
KEluc3BlY3RvckZyb250ZW5kKik7CiAgICAgdmlydHVhbCB2b2lkIGNsZWFyRnJvbnRlbmQoKTsK
ICAgICB2aXJ0dWFsIHZvaWQgcmVzdG9yZSgpOworCisgICAgRE9NRmlsZVN5c3RlbSogZ2V0Rmls
ZVN5c3RlbShjb25zdCBTdHJpbmcmIGZpbGVTeXN0ZW1OYW1lKTsKKworICAgIEluc3BlY3RvckZy
b250ZW5kOjpGaWxlU3lzdGVtKiBnZXRGcm9udGVuZCgpCisgICAgeworICAgICAgICByZXR1cm4g
bV9mcm9udGVuZFByb3ZpZGVyLmdldCgpID8gbV9mcm9udGVuZFByb3ZpZGVyLT5nZXQoKSA6IDA7
CisgICAgfQorCiBwcml2YXRlOgogICAgIEluc3BlY3RvckZpbGVTeXN0ZW1BZ2VudChJbnN0cnVt
ZW50aW5nQWdlbnRzKiwgSW5zcGVjdG9yU3RhdGUqKTsKIAotICAgIEluc3BlY3RvckZyb250ZW5k
OjpGaWxlU3lzdGVtKiBtX2Zyb250ZW5kOworICAgIHR5cGVkZWYgSGFzaFNldDxSZWZQdHI8RE9N
RmlsZVN5c3RlbT4gPiBGaWxlU3lzdGVtczsKKyAgICB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBG
aWxlU3lzdGVtcz4gTmFtZWRGaWxlU3lzdGVtczsKKyAgICBOYW1lZEZpbGVTeXN0ZW1zIG1fZmls
ZVN5c3RlbXM7CisKKyAgICBSZWZQdHI8QmFja1B0cjxJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQ+
ID4gbV9hZ2VudFByb3ZpZGVyOworICAgIFJlZlB0cjxCYWNrUHRyPEluc3BlY3RvckZyb250ZW5k
OjpGaWxlU3lzdGVtPiA+IG1fZnJvbnRlbmRQcm92aWRlcjsKICAgICBib29sIG1fZW5hYmxlZDsK
IH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGaWxl
U3lzdGVtSW5zdHJ1bWVudGF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yRmlsZVN5c3RlbUluc3RydW1lbnRhdGlvbi5oCmluZGV4IDczODdhY2JhY2ExNTU1MzE4Yjg4
OTQzZmQxOWI4ZjYzOTJhMTAxYWIuLmRhNDllY2RiMGY0YjhiMjY4ZDQ4YmRiOGFlZTUyZmY2NjQx
MmYxMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGaWxl
U3lzdGVtSW5zdHJ1bWVudGF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckZpbGVTeXN0ZW1JbnN0cnVtZW50YXRpb24uaApAQCAtMzgsMTIgKzM4LDEzIEBACiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKICNpZiBFTkFCTEUoRklMRV9TWVNURU0pCi1pbmxpbmUgdm9p
ZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZE9wZW5GaWxlU3lzdGVtKFBhc3NSZWZQdHI8
RE9NRmlsZVN5c3RlbT4gZmlsZVN5c3RlbSkKK2lubGluZSBQYXNzUmVmUHRyPEJhY2tQdHI8SW5z
cGVjdG9yRmlsZVN5c3RlbUFnZW50PiA+IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkT3Bl
bkZpbGVTeXN0ZW0oUGFzc1JlZlB0cjxET01GaWxlU3lzdGVtPiBmaWxlU3lzdGVtKQogewogI2lm
IEVOQUJMRShJTlNQRUNUT1IpCiAgICAgaWYgKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1l
bnRpbmdBZ2VudHMgPSBpbnN0cnVtZW50aW5nQWdlbnRzRm9yQ29udGV4dChmaWxlU3lzdGVtLT5z
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCkpKQotICAgICAgICBkaWRPcGVuRmlsZVN5c3RlbUltcGwo
aW5zdHJ1bWVudGluZ0FnZW50cywgZmlsZVN5c3RlbSk7CisgICAgICAgIHJldHVybiBkaWRPcGVu
RmlsZVN5c3RlbUltcGwoaW5zdHJ1bWVudGluZ0FnZW50cywgZmlsZVN5c3RlbSk7CiAjZW5kaWYg
Ly8gRU5BQkxFKElOU1BFQ1RPUikKKyAgICByZXR1cm4gMDsKIH0KICNlbmRpZiAvLyBFTkFCTEUo
RklMRV9TWVNURU0pCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbi5jcHAKaW5kZXggZTNlNTg2OWY2ODhhMWI0N2ZkZGNmMGJkYzZi
ZjE4MzA1MmY5ZDhiZS4uOTRmZjAyNGUyOTI2ZDYyOGYzNWZkMjAzODYxN2MzNTQ4OTFlZjYyMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRh
dGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1l
bnRhdGlvbi5jcHAKQEAgLTc3MSwxMCArNzcxLDExIEBAIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uOjpkaWRPcGVuRGF0YWJhc2VJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1l
CiAjZW5kaWYKIAogI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKLXZvaWQgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjpkaWRPcGVuRmlsZVN5c3RlbUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5z
dHJ1bWVudGluZ0FnZW50cywgUGFzc1JlZlB0cjxET01GaWxlU3lzdGVtPiBmaWxlU3lzdGVtKQor
UGFzc1JlZlB0cjxCYWNrUHRyPEluc3BlY3RvckZpbGVTeXN0ZW1BZ2VudD4gPiBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OmRpZE9wZW5GaWxlU3lzdGVtSW1wbChJbnN0cnVtZW50aW5nQWdlbnRz
KiBpbnN0cnVtZW50aW5nQWdlbnRzLCBQYXNzUmVmUHRyPERPTUZpbGVTeXN0ZW0+IGZpbGVTeXN0
ZW0pCiB7CiAgICAgaWYgKEluc3BlY3RvckZpbGVTeXN0ZW1BZ2VudCogZmlsZVN5c3RlbUFnZW50
ID0gaW5zdHJ1bWVudGluZ0FnZW50cy0+aW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50KCkpCi0gICAg
ICAgIGZpbGVTeXN0ZW1BZ2VudC0+ZGlkT3BlbkZpbGVTeXN0ZW0oZmlsZVN5c3RlbSk7CisgICAg
ICAgIHJldHVybiBmaWxlU3lzdGVtQWdlbnQtPmRpZE9wZW5GaWxlU3lzdGVtKGZpbGVTeXN0ZW0p
OworICAgIHJldHVybiAwOwogfQogI2VuZGlmIC8vIEVOQUJMRShGSUxFX1NZU1RFTSkKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlv
bi5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5o
CmluZGV4IGQ5NjZiNzVhMGJjZjZjMDEwZjI5ODNkMTIwMzNjNGNkMDcwYTQ1YTQuLmNjMjI4OWFl
NzQwMzg5YmE4OGY2ZmU5NDUzMmJlOGU2YjQ0YmVjZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgKQEAgLTUwLDYgKzUwLDcg
QEAgY2xhc3MgRWxlbWVudDsKIGNsYXNzIEV2ZW50Q29udGV4dDsKIGNsYXNzIERvY3VtZW50TG9h
ZGVyOwogY2xhc3MgSGl0VGVzdFJlc3VsdDsKK2NsYXNzIEluc3BlY3RvckZpbGVTeXN0ZW1BZ2Vu
dDsKIGNsYXNzIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ7CiBjbGFzcyBJbnN0cnVtZW50aW5nQWdl
bnRzOwogY2xhc3MgS1VSTDsKQEAgLTY0LDYgKzY1LDcgQEAgY2xhc3MgU3RvcmFnZUFyZWE7CiBj
bGFzcyBXb3JrZXJDb250ZXh0OwogY2xhc3MgV29ya2VyQ29udGV4dFByb3h5OwogY2xhc3MgWE1M
SHR0cFJlcXVlc3Q7Cit0ZW1wbGF0ZTx0eXBlbmFtZT4gY2xhc3MgQmFja1B0cjsKIAogI2lmIEVO
QUJMRShXRUJfU09DS0VUUykKIGNsYXNzIFdlYlNvY2tldEhhbmRzaGFrZVJlcXVlc3Q7CkBAIC0x
NzgsNyArMTgwLDcgQEAgcHVibGljOgogI2VuZGlmCiAKICNpZiBFTkFCTEUoRklMRV9TWVNURU0p
Ci0gICAgc3RhdGljIHZvaWQgZGlkT3BlbkZpbGVTeXN0ZW0oUGFzc1JlZlB0cjxET01GaWxlU3lz
dGVtPik7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8QmFja1B0cjxJbnNwZWN0b3JGaWxlU3lzdGVt
QWdlbnQ+ID4gZGlkT3BlbkZpbGVTeXN0ZW0oUGFzc1JlZlB0cjxET01GaWxlU3lzdGVtPik7CiAj
ZW5kaWYKIAogICAgIHN0YXRpYyB2b2lkIGRpZFVzZURPTVN0b3JhZ2UoUGFnZSosIFN0b3JhZ2VB
cmVhKiwgYm9vbCBpc0xvY2FsU3RvcmFnZSwgRnJhbWUqKTsKQEAgLTMxNCw3ICszMTYsNyBAQCBw
cml2YXRlOgogI2VuZGlmCiAKICNpZiBFTkFCTEUoRklMRV9TWVNURU0pCi0gICAgc3RhdGljIHZv
aWQgZGlkT3BlbkZpbGVTeXN0ZW1JbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqLCBQYXNzUmVmUHRy
PERPTUZpbGVTeXN0ZW0+KTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxCYWNrUHRyPEluc3BlY3Rv
ckZpbGVTeXN0ZW1BZ2VudD4gPiBkaWRPcGVuRmlsZVN5c3RlbUltcGwoSW5zdHJ1bWVudGluZ0Fn
ZW50cyosIFBhc3NSZWZQdHI8RE9NRmlsZVN5c3RlbT4pOwogI2VuZGlmCiAKICAgICBzdGF0aWMg
dm9pZCBkaWRVc2VET01TdG9yYWdlSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiwgU3RvcmFnZUFy
ZWEqLCBib29sIGlzTG9jYWxTdG9yYWdlLCBGcmFtZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2NvbXBpbGUtZnJvbnQtZW5kLnNoIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2NvbXBpbGUtZnJvbnQtZW5kLnNoCmluZGV4IDhhMTM1NmU4OGI4NzRlNTUzYzQ3ZmMw
Njk1ZmQyMjBjNTkxNDU4OTQuLmE1NTdjNjdlY2ZkMTZjYjBkMzU3ZjUxZGJhYTg4NmEyM2FiNWQ2
ZjIgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9jb21waWxlLWZyb250LWVu
ZC5zaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvY29tcGlsZS1mcm9udC1lbmQuc2gK
QEAgLTYwLDYgKzYwLDcgQEAgamF2YSAtamFyIH4vY2xvc3VyZS9jb21waWxlci5qYXIgLS1zdW1t
YXJ5X2RldGFpbF9sZXZlbCAzIC0tY29tcGlsYXRpb25fbGV2ZWwgU0kKICAgICAgICAgLS1qcyBT
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RPTVN0b3JhZ2UuanMgXAogICAgICAg
ICAtLWpzIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRGVidWdnZXJNb2RlbC5q
cyBcCiAgICAgICAgIC0tanMgU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9EZWJ1
Z2dlclByZXNlbnRhdGlvbk1vZGVsLmpzIFwKKyAgICAgICAgLS1qcyBTb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL0ZpbGVTeXN0ZW0uanMgXAogICAgICAgICAtLWpzIFNvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSEFSRW50cnkuanMgXAogICAgICAgICAtLWpzIFNv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvTmV0d29ya0xvZy5qcyBcCiAgICAgICAg
IC0tanMgU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TY3JpcHQuanMgXApAQCAt
MTQ4LDYgKzE0OSw3IEBAIGphdmEgLWphciB+L2Nsb3N1cmUvY29tcGlsZXIuamFyIC0tc3VtbWFy
eV9kZXRhaWxfbGV2ZWwgMyAtLWNvbXBpbGF0aW9uX2xldmVsIFNJCiAgICAgICAgIC0tanMgU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9EYXRhYmFzZVF1ZXJ5Vmlldy5qcyBcCiAg
ICAgICAgIC0tanMgU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9EYXRhYmFzZVRh
YmxlVmlldy5qcyBcCiAgICAgICAgIC0tanMgU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9ET01TdG9yYWdlSXRlbXNWaWV3LmpzIFwKKyAgICAgICAgLS1qcyBTb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0ZpbGVTeXN0ZW1WaWV3LmpzIFwKICAgICAgICAgLS1qcyBT
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlc1BhbmVsLmpzIFwKICAg
ICAtLW1vZHVsZSBqc21vZHVsZV9zY3JpcHRzOjg6anNtb2R1bGVfY29tcG9uZW50cyBcCiAgICAg
ICAgIC0tanMgU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9DYWxsU3RhY2tTaWRl
YmFyUGFuZS5qcyBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL0VtcHR5Vmlldy5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRW1w
dHlWaWV3LmpzCmluZGV4IDFkNDRjOGFjNDBiYzgzNTQ2YjA2ZGRhNWM1MGE1MmE1OGVmNTlhNTIu
LjNhNGEyMWEzMDkwZmFhMTYwM2I3NDc1NmE2N2VjNzJjMDk1N2IxMDQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRW1wdHlWaWV3LmpzCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRW1wdHlWaWV3LmpzCkBAIC00MSw3ICs0MSw3
IEBAIFdlYkluc3BlY3Rvci5FbXB0eVZpZXcgPSBmdW5jdGlvbih0ZXh0KQogV2ViSW5zcGVjdG9y
LkVtcHR5Vmlldy5wcm90b3R5cGUgPSB7CiAgICAgd2FzU2hvd246IGZ1bmN0aW9uKCkKICAgICB7
Ci0gICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc05hbWUgPSAic3RvcmFnZS1lbXB0eS12aWV3IjsK
KyAgICAgICAgdGhpcy5lbGVtZW50LmFkZFN0eWxlQ2xhc3MoInN0b3JhZ2UtZW1wdHktdmlldyIp
OwogICAgICAgICB0aGlzLmVsZW1lbnQudGV4dENvbnRlbnQgPSB0aGlzLl90ZXh0OwogICAgIH0s
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRmlsZVN5
c3RlbS5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRmlsZVN5c3RlbS5q
cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi44ODU0Y2JmOWFmMmM1NmE1N2E5YmY4MzQyODhkN2YxZWI0ZjdhYzAxCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9GaWxl
U3lzdGVtLmpzCkBAIC0wLDAgKzEsNDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICog
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQor
ICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVp
dGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbURpc3BhdGNo
ZXIgPSBmdW5jdGlvbigpCit7Cit9OworCitXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbURpc3BhdGNo
ZXIucHJvdG90eXBlID0geworICAgIGZpbGVTeXN0ZW1BZGRlZDogZnVuY3Rpb24obmFtZSwgb3Jp
Z2luLCB0eXBlKQorICAgIHsKKyAgICAgICAgV2ViSW5zcGVjdG9yLnBhbmVscy5yZXNvdXJjZXMu
YWRkRmlsZVN5c3RlbShuYW1lLCBvcmlnaW4sIHR5cGUpOworICAgIH0sCisKKyAgICBmaWxlU3lz
dGVtSW52YWxpZGF0ZWQ6IGZ1bmN0aW9uKG5hbWUpCisgICAgeworICAgICAgICBXZWJJbnNwZWN0
b3IucGFuZWxzLnJlc291cmNlcy5pbnZhbGlkYXRlRmlsZVN5c3RlbShuYW1lKTsKKyAgICB9Cit9
OworCitJbnNwZWN0b3JCYWNrZW5kLnJlZ2lzdGVyRmlsZVN5c3RlbURpc3BhdGNoZXIobmV3IFdl
Ykluc3BlY3Rvci5GaWxlU3lzdGVtRGlzcGF0Y2hlcigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRmlsZVN5c3RlbVZpZXcuanMgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0ZpbGVTeXN0ZW1WaWV3LmpzCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJk
NDY3NTNiY2E2MGIzMzgwNWQ2OGY3NjJiZTY0ZTRmODFkZmY5ZTEKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0ZpbGVTeXN0ZW1WaWV3LmpzCkBA
IC0wLDAgKzEsNDUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAq
IG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFt
ZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAq
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisg
KiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisvKioKKyAqIEBjb25zdHJ1Y3RvcgorICogQGV4dGVuZHMge1dlYkluc3Bl
Y3Rvci5WaWV3fQorICovCitXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbVZpZXcgPSBmdW5jdGlvbihm
aWxlU3lzdGVtTmFtZSkKK3sKKyAgICBXZWJJbnNwZWN0b3IuRW1wdHlWaWV3LmNhbGwodGhpcywg
ZmlsZVN5c3RlbU5hbWUpOworICAgIHRoaXMuZWxlbWVudC5hZGRTdHlsZUNsYXNzKCJzdG9yYWdl
LXZpZXciKTsKKyAgICB0aGlzLmVsZW1lbnQuYWRkU3R5bGVDbGFzcygiZmlsZXN5c3RlbS12aWV3
Iik7Cit9OworCitXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbVZpZXcucHJvdG90eXBlID0geworfTsK
KworV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1WaWV3LnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJ
bnNwZWN0b3IuRW1wdHlWaWV3LnByb3RvdHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvSW1hZ2VzL2ZpbGVTeXN0ZW0ucG5nIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9JbWFnZXMvZmlsZVN5c3RlbS5wbmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MWRiMTIyMTU5MjZlNzFjNDNjYTc5YTJlNzhiOTQ0NzhkMmMxZjgyOQpHSVQgYmluYXJ5IHBhdGNo
CmxpdGVyYWwgNDQ5CnpjbVY7eTBZM2hUUCk8aDszS3xMazAwMGUxTkpMVHEwMDBtRzAwMG1PMV5A
czZBTV5pVjAwMDAxYjVjaF8wSXRwKQp6PT5QeCMyNFlKYEw7KEspe3thNz55e0Q0XjAwMFNhTkxo
MEwwMUZjVTAxRmNWMEdnWl8wMDAwN2JWKkdgMmlwcjAKejF2NEhvTFVRb3swMEJXc0xfdChJJWNZ
WSlPRzdhZiNlWFNKMVVvcjZ5MTl2eWkoM341emsqQlkpSCptZ0lKbE0wCnpiKGVJaUFjKGskVSFj
MX5LQGkqJjNMVHRFWlJ6VnY/c2RwKHRJfElJRyFQUSole2t9aEJvfiQoMkIxKT9sPnN7Xgp6VXVp
WH5qVnl2RlVHMiUpRiMhMnw5KVFRXjd3KWNaRVJhY0gzWitfa1lqZVl7QDlZNX0jc0R5cTlHJig5
eT40ZF8KenckZkA9OHhkZk9yJD9abTBJRElhcCE/ZlFMI29yJT4pVippYG5ncnJlaVJOVVA3RGYm
OGJtPVA/N2YxUTVjM2lVCnpwMVNjajQrTllMZkdPQjM0NHVLSElpSlNubnk5S0lleGhPK0klZEZC
U3JwI21NRmRfTWR4SUFrQjtZaXlOSSs1Iwp6YGxGMHo2ajg8d2BwSGFIQ2xlVU5LbTNERzBnUE0j
PSU+NDhmZE8qTWUmcTxAelRJUEdiP3cpbkJwIVl0c0krZXsKcj58ZDNPMmZNUm9RcXt3TWIpcXJY
JVVadyhEaVhCcFg2TElVMDAwMDBOa3ZYWHUwbWpmTEdgaTgKCmxpdGVyYWwgMApIY21WP2QwMDAw
MQoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3Vy
Y2VzUGFuZWwuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNl
c1BhbmVsLmpzCmluZGV4IDUyNDUwODVkODQ2MWM3OGM4MDhiMjhkNzg2YWRlYzc5MTdkYmFhMmYu
LmYwZjUwZTljMThkNTgwMDc0NmFjNzc4MGFiYjZiMTgyMGFkNmM3ZjYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VzUGFuZWwuanMKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZXNQYW5lbC5qcwpAQCAt
NjQsNiArNjQsOSBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2VzUGFuZWwgPSBmdW5jdGlvbihkYXRh
YmFzZSkKICAgICB0aGlzLmFwcGxpY2F0aW9uQ2FjaGVMaXN0VHJlZUVsZW1lbnQgPSBuZXcgV2Vi
SW5zcGVjdG9yLlN0b3JhZ2VDYXRlZ29yeVRyZWVFbGVtZW50KHRoaXMsIFdlYkluc3BlY3Rvci5V
SVN0cmluZygiQXBwbGljYXRpb24gQ2FjaGUiKSwgIkFwcGxpY2F0aW9uQ2FjaGUiLCBbImFwcGxp
Y2F0aW9uLWNhY2hlLXN0b3JhZ2UtdHJlZS1pdGVtIl0pOwogICAgIHRoaXMuc2lkZWJhclRyZWUu
YXBwZW5kQ2hpbGQodGhpcy5hcHBsaWNhdGlvbkNhY2hlTGlzdFRyZWVFbGVtZW50KTsKIAorICAg
IHRoaXMuZmlsZVN5c3RlbUxpc3RUcmVlRWxlbWVudCA9IG5ldyBXZWJJbnNwZWN0b3IuU3RvcmFn
ZUNhdGVnb3J5VHJlZUVsZW1lbnQodGhpcywgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJGaWxlU3lz
dGVtIiksICJGaWxlU3lzdGVtIiwgWyJmaWxlc3lzdGVtLXN0b3JhZ2UtdHJlZS1pdGVtIiwgImZp
bGVzeXN0ZW0iXSk7CisgICAgdGhpcy5zaWRlYmFyVHJlZS5hcHBlbmRDaGlsZCh0aGlzLmZpbGVT
eXN0ZW1MaXN0VHJlZUVsZW1lbnQpOworCiAgICAgdGhpcy5zdG9yYWdlVmlld3MgPSB0aGlzLnNw
bGl0Vmlldy5tYWluRWxlbWVudDsKICAgICB0aGlzLnN0b3JhZ2VWaWV3cy5hZGRTdHlsZUNsYXNz
KCJkaWZmLWNvbnRhaW5lciIpOwogCkBAIC03NSw2ICs3OCw4IEBAIFdlYkluc3BlY3Rvci5SZXNv
dXJjZXNQYW5lbCA9IGZ1bmN0aW9uKGRhdGFiYXNlKQogICAgIHRoaXMuX2Nvb2tpZVZpZXdzID0g
e307CiAgICAgdGhpcy5fb3JpZ2lucyA9IHt9OwogICAgIHRoaXMuX2RvbWFpbnMgPSB7fTsKKyAg
ICB0aGlzLl9maWxlU3lzdGVtcyA9IHt9OworICAgIHRoaXMuX2ZpbGVTeXN0ZW1WaWV3cyA9IHt9
OwogCiAgICAgdGhpcy5zaWRlYmFyRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZW1vdmUi
LCB0aGlzLl9vbm1vdXNlbW92ZS5iaW5kKHRoaXMpLCBmYWxzZSk7CiAgICAgdGhpcy5zaWRlYmFy
RWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZW91dCIsIHRoaXMuX29ubW91c2VvdXQuYmlu
ZCh0aGlzKSwgZmFsc2UpOwpAQCAtMTcxLDcgKzE3NiwxMSBAQCBXZWJJbnNwZWN0b3IuUmVzb3Vy
Y2VzUGFuZWwucHJvdG90eXBlID0gewogCiAgICAgICAgIHRoaXMuX2Nvb2tpZVZpZXdzID0ge307
CiAKKyAgICAgICAgdGhpcy5fZmlsZVN5c3RlbXMgPSB7fTsKKyAgICAgICAgdGhpcy5fZmlsZVN5
c3RlbVZpZXdzID0ge307CisgCiAgICAgICAgIHRoaXMuZGF0YWJhc2VzTGlzdFRyZWVFbGVtZW50
LnJlbW92ZUNoaWxkcmVuKCk7CisgICAgICAgIHRoaXMuZmlsZVN5c3RlbUxpc3RUcmVlRWxlbWVu
dC5yZW1vdmVDaGlsZHJlbigpOwogICAgICAgICB0aGlzLmxvY2FsU3RvcmFnZUxpc3RUcmVlRWxl
bWVudC5yZW1vdmVDaGlsZHJlbigpOwogICAgICAgICB0aGlzLnNlc3Npb25TdG9yYWdlTGlzdFRy
ZWVFbGVtZW50LnJlbW92ZUNoaWxkcmVuKCk7CiAgICAgICAgIHRoaXMuY29va2llTGlzdFRyZWVF
bGVtZW50LnJlbW92ZUNoaWxkcmVuKCk7CkBAIC0zMTAsNiArMzE5LDI4IEBAIFdlYkluc3BlY3Rv
ci5SZXNvdXJjZXNQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB0aGlzLnNlc3Npb25T
dG9yYWdlTGlzdFRyZWVFbGVtZW50LmFwcGVuZENoaWxkKGRvbVN0b3JhZ2VUcmVlRWxlbWVudCk7
CiAgICAgfSwKIAorICAgIGFkZEZpbGVTeXN0ZW06IGZ1bmN0aW9uKG5hbWUsIG9yaWdpbiwgdHlw
ZSkKKyAgICB7CisgICAgICAgIGlmICh0aGlzLl9maWxlU3lzdGVtc1tuYW1lXSkKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgdmFyIGZpbGVTeXN0ZW1UcmVlRWxlbWVudCA9IG5ldyBXZWJJ
bnNwZWN0b3IuRmlsZVN5c3RlbVRyZWVFbGVtZW50KHRoaXMsIG5hbWUsIG9yaWdpbiwgdHlwZSk7
CisgICAgICAgIHRoaXMuX2ZpbGVTeXN0ZW1zW25hbWVdID0gZmlsZVN5c3RlbVRyZWVFbGVtZW50
OworICAgICAgICB0aGlzLmZpbGVTeXN0ZW1MaXN0VHJlZUVsZW1lbnQuYXBwZW5kQ2hpbGQoZmls
ZVN5c3RlbVRyZWVFbGVtZW50KTsKKyAgICB9LAorCisgICAgaW52YWxpZGF0ZUZpbGVTeXN0ZW06
IGZ1bmN0aW9uKG5hbWUpCisgICAgeworICAgICAgICBpZiAodGhpcy5fZmlsZVN5c3RlbXNbbmFt
ZV0pIHsKKyAgICAgICAgICAgIHRoaXMuZmlsZVN5c3RlbUxpc3RUcmVlRWxlbWVudC5yZW1vdmVD
aGlsZCh0aGlzLl9maWxlU3lzdGVtc1tuYW1lXSk7CisgICAgICAgICAgICBkZWxldGUgdGhpcy5f
ZmlsZVN5c3RlbXNbbmFtZV07CisgICAgICAgIH0KKworICAgICAgICBpZiAodGhpcy5fZmlsZVN5
c3RlbVZpZXdzW25hbWVdKSB7CisgICAgICAgICAgICB0aGlzLl9maWxlU3lzdGVtVmlld3NbbmFt
ZV0uZGV0YWNoKCk7CisgICAgICAgICAgICBkZWxldGUgdGhpcy5fZmlsZVN5c3RlbVZpZXdzW25h
bWVdOworICAgICAgICB9CisgICAgfSwKKwogICAgIHNlbGVjdERhdGFiYXNlOiBmdW5jdGlvbihk
YXRhYmFzZUlkKQogICAgIHsKICAgICAgICAgdmFyIGRhdGFiYXNlOwpAQCAtNDkxLDYgKzUyMiwx
OCBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2VzUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICB0
aGlzLl9pbm5lclNob3dWaWV3KHRoaXMuX2FwcGxpY2F0aW9uQ2FjaGVWaWV3c1tmcmFtZUlkXSk7
CiAgICAgfSwKIAorICAgIHNob3dGaWxlU3lzdGVtOiBmdW5jdGlvbihmaWxlU3lzdGVtTmFtZSkK
KyAgICB7CisgICAgICAgIGlmICghZmlsZVN5c3RlbU5hbWUpCisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIHZhciB2aWV3ID0gdGhpcy5fZmlsZVN5c3RlbVZpZXdzW2ZpbGVTeXN0ZW1OYW1l
XTsKKyAgICAgICAgaWYgKCF2aWV3KSB7CisgICAgICAgICAgICB2aWV3ID0gbmV3IFdlYkluc3Bl
Y3Rvci5GaWxlU3lzdGVtVmlldyhmaWxlU3lzdGVtTmFtZSk7CisgICAgICAgICAgICB0aGlzLl9m
aWxlU3lzdGVtVmlld3NbZmlsZVN5c3RlbU5hbWVdID0gdmlldzsKKyAgICAgICAgfQorICAgICAg
ICB0aGlzLl9pbm5lclNob3dWaWV3KHZpZXcpOworICAgIH0sCisKICAgICBzaG93Q2F0ZWdvcnlW
aWV3OiBmdW5jdGlvbihjYXRlZ29yeU5hbWUpCiAgICAgewogICAgICAgICBpZiAoIXRoaXMuX2Nh
dGVnb3J5VmlldykKQEAgLTE2MzAsNiArMTY3MywyOSBAQCBXZWJJbnNwZWN0b3IuQXBwbGljYXRp
b25DYWNoZUZyYW1lVHJlZUVsZW1lbnQucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rv
cgogICogQGNvbnN0cnVjdG9yCiAgKiBAZXh0ZW5kcyB7V2ViSW5zcGVjdG9yLkJhc2VTdG9yYWdl
VHJlZUVsZW1lbnR9CiAgKi8KK1dlYkluc3BlY3Rvci5GaWxlU3lzdGVtVHJlZUVsZW1lbnQgPSBm
dW5jdGlvbihzdG9yYWdlUGFuZWwsIGZpbGVTeXN0ZW1OYW1lLCBvcmlnaW4sIHR5cGUpCit7Cisg
ICAgV2ViSW5zcGVjdG9yLkJhc2VTdG9yYWdlVHJlZUVsZW1lbnQuY2FsbCh0aGlzLCBzdG9yYWdl
UGFuZWwsIG51bGwsIG9yaWdpbiArICcvJyArIHR5cGUsIFsiZmlsZXN5c3RlbS1zdG9yYWdlLXRy
ZWUtaXRlbSJdKTsKKyAgICB0aGlzLl9maWxlU3lzdGVtTmFtZSA9IGZpbGVTeXN0ZW1OYW1lOwor
ICAgIHRoaXMuX29yaWdpbiA9IG9yaWdpbjsKKyAgICB0aGlzLl90eXBlID0gdHlwZTsKKyAgICB0
aGlzLmhhc0NoaWxkcmVuID0gZmFsc2U7Cit9OworCitXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbVRy
ZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKKyAgICBvbnNlbGVjdDogZnVuY3Rpb24oKQorICAgIHsK
KyAgICAgIFdlYkluc3BlY3Rvci5CYXNlU3RvcmFnZVRyZWVFbGVtZW50LnByb3RvdHlwZS5vbnNl
bGVjdC5jYWxsKHRoaXMpOworICAgICAgdGhpcy5fc3RvcmFnZVBhbmVsLnNob3dGaWxlU3lzdGVt
KHRoaXMuX2ZpbGVTeXN0ZW1OYW1lKTsKKyAgICB9Cit9OworCitXZWJJbnNwZWN0b3IuRmlsZVN5
c3RlbVRyZWVFbGVtZW50LnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuQmFzZVN0
b3JhZ2VUcmVlRWxlbWVudC5wcm90b3R5cGU7CisKKy8qKgorICogQGNvbnN0cnVjdG9yCisgKiBA
ZXh0ZW5kcyB7V2ViSW5zcGVjdG9yLkJhc2VTdG9yYWdlVHJlZUVsZW1lbnR9CisgKi8KIFdlYklu
c3BlY3Rvci5SZXNvdXJjZVJldmlzaW9uVHJlZUVsZW1lbnQgPSBmdW5jdGlvbihzdG9yYWdlUGFu
ZWwsIHJldmlzaW9uKQogewogICAgIHZhciB0aXRsZSA9IHJldmlzaW9uLnRpbWVzdGFtcCA/IHJl
dmlzaW9uLnRpbWVzdGFtcC50b0xvY2FsZVRpbWVTdHJpbmcoKSA6IFdlYkluc3BlY3Rvci5VSVN0
cmluZygiKG9yaWdpbmFsKSIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9XZWJLaXQucXJjIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9XZWJLaXQucXJjCmluZGV4IDYxNDJhZjMxNzcxZGZlZDc1MzAxOWY3ZDgzYzBhNWI2ZDJlNjk2
MWQuLmNmNjgzMTZhYTdlNzM4ZDc3OTY5NmUwNDRjZGU2MTNmZDg4MTdjYWYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvV2ViS2l0LnFyYworKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1dlYktpdC5xcmMKQEAgLTU0LDYgKzU0LDgg
QEAKICAgICA8ZmlsZT5FeHRlbnNpb25QYW5lbC5qczwvZmlsZT4KICAgICA8ZmlsZT5FeHRlbnNp
b25SZWdpc3RyeVN0dWIuanM8L2ZpbGU+CiAgICAgPGZpbGU+RXh0ZW5zaW9uU2VydmVyLmpzPC9m
aWxlPgorICAgIDxmaWxlPkZpbGVTeXN0ZW0uanM8L2ZpbGU+CisgICAgPGZpbGU+RmlsZVN5c3Rl
bVZpZXcuanM8L2ZpbGU+CiAgICAgPGZpbGU+Rm9udFZpZXcuanM8L2ZpbGU+CiAgICAgPGZpbGU+
R29Ub0xpbmVEaWFsb2cuanM8L2ZpbGU+CiAgICAgPGZpbGU+SEFSRW50cnkuanM8L2ZpbGU+CkBA
IC0yMDUsNiArMjA3LDcgQEAKICAgICA8ZmlsZT5JbWFnZXMvZXJyb3JSZWREb3QucG5nPC9maWxl
PgogICAgIDxmaWxlPkltYWdlcy9mb3J3YXJkLnBuZzwvZmlsZT4KICAgICA8ZmlsZT5JbWFnZXMv
ZnJhbWUucG5nPC9maWxlPgorICAgIDxmaWxlPkltYWdlcy9maWxlU3lzdGVtLnBuZzwvZmlsZT4K
ICAgICA8ZmlsZT5JbWFnZXMvZ2xvc3N5SGVhZGVyLnBuZzwvZmlsZT4KICAgICA8ZmlsZT5JbWFn
ZXMvZ2xvc3N5SGVhZGVyUHJlc3NlZC5wbmc8L2ZpbGU+CiAgICAgPGZpbGU+SW1hZ2VzL2dsb3Nz
eUhlYWRlclNlbGVjdGVkLnBuZzwvZmlsZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmh0bWwgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5odG1sCmluZGV4IDc3MGY0MDIyMWEzYzAwOGU1OTU3Zjgz
MTRhN2M2YzFlZjYxODA3NjAuLmJhYzY5NjIyZjE3NGNhMzc5ODFiNzJlMTNkYTQ0ZmZiMDgwNmNk
MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVj
dG9yLmh0bWwKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0
b3IuaHRtbApAQCAtNzUsNiArNzUsNyBAQCBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICAgIDxzY3JpcHQgdHlwZT0idGV4
dC9qYXZhc2NyaXB0IiBzcmM9IkRPTVN0b3JhZ2UuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQg
dHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IkRPTVN0b3JhZ2VJdGVtc1ZpZXcuanMiPjwvc2Ny
aXB0PgogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IkRhdGFHcmlkLmpz
Ij48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJGaWxl
U3lzdGVtLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIg
c3JjPSJTaG93TW9yZURhdGFHcmlkTm9kZS5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCB0eXBl
PSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iQ29va2llc1RhYmxlLmpzIj48L3NjcmlwdD4KICAgICA8
c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJDb29raWVJdGVtc1ZpZXcuanMiPjwv
c2NyaXB0PgpAQCAtMTQ5LDYgKzE1MCw3IEBAIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgICAgPHNjcmlwdCB0eXBlPSJ0
ZXh0L2phdmFzY3JpcHQiIHNyYz0iSW1hZ2VWaWV3LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0
IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJEYXRhYmFzZVRhYmxlVmlldy5qcyI+PC9zY3Jp
cHQ+CiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iRGF0YWJhc2VRdWVy
eVZpZXcuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBz
cmM9IkZpbGVTeXN0ZW1WaWV3LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHR5cGU9InRleHQv
amF2YXNjcmlwdCIgc3JjPSJQcm9maWxlRGF0YUdyaWRUcmVlLmpzIj48L3NjcmlwdD4KICAgICA8
c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJCb3R0b21VcFByb2ZpbGVEYXRhR3Jp
ZFRyZWUuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBz
cmM9IlRvcERvd25Qcm9maWxlRGF0YUdyaWRUcmVlLmpzIj48L3NjcmlwdD4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmpzIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuanMKaW5kZXggMTAzZmNjY2Y0
Zjg2M2U0NzZkOTc4NzBkNzBlY2Q2Zjk3MTVhMTI5Zi4uYzY4ZjA2M2Y5YzZjMTc3ZTMxZjQ2OTc0
MDgxYWQzYzQzY2U2NjY4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9pbnNwZWN0b3IuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9pbnNwZWN0b3IuanMKQEAgLTM4OCw2ICszODgsNyBAQCBXZWJJbnNwZWN0b3IuZG9Mb2Fk
ZWREb25lID0gZnVuY3Rpb24oKQogICAgIHRoaXMuY29uc29sZS5lbmFibGVBZ2VudCgpOwogICAg
IERhdGFiYXNlQWdlbnQuZW5hYmxlKCk7CiAgICAgRE9NU3RvcmFnZUFnZW50LmVuYWJsZSgpOwor
ICAgIEZpbGVTeXN0ZW1BZ2VudC5lbmFibGUoKTsKIAogICAgIFdlYkluc3BlY3Rvci5zaG93UGFu
ZWwoV2ViSW5zcGVjdG9yLnNldHRpbmdzLmxhc3RBY3RpdmVQYW5lbC5nZXQoKSk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvcmVzb3VyY2VzUGFuZWwu
Y3NzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9yZXNvdXJjZXNQYW5lbC5j
c3MKaW5kZXggMThjNzZhZTIxNzM5ODQyZDc5NDgwMjUyYzY3MWM3M2FkMDI5ZGVjOC4uMTMzNzI5
OGU2MmM1ZDcxMDVhNTNjZGZkNTU5NDYyNGExZDc3ODdlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9yZXNvdXJjZXNQYW5lbC5jc3MKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9yZXNvdXJjZXNQYW5lbC5jc3MKQEAgLTMyNSw3
ICszMjUsNiBAQCBsaS5zZWxlY3RlZCAuYmFzZS1zdG9yYWdlLXRyZWUtZWxlbWVudC1zdWJ0aXRs
ZSB7CiAgICAgY29udGVudDogdXJsKEltYWdlcy9hcHBsaWNhdGlvbkNhY2hlLnBuZyk7CiB9CiAK
LS8qIEZJWE1FOiBNYWtlIHNlcGFyYXRlIHBuZyBmb3IgZmlsZS1zeXN0ZW0gKi8KLS5maWxlLXN5
c3RlbS1zdG9yYWdlLXRyZWUtaXRlbSAuaWNvbiB7Ci0gICAgY29udGVudDogdXJsKEltYWdlcy9h
cHBsaWNhdGlvbkNhY2hlLnBuZyk7CisuZmlsZXN5c3RlbS1zdG9yYWdlLXRyZWUtaXRlbSAuaWNv
biB7CisgICAgY29udGVudDogdXJsKEltYWdlcy9maWxlU3lzdGVtLnBuZyk7CiB9CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXgg
ZDQ3MmNhMmRkMjYxYWYyYzY5OWNlNzhlZTc3M2Y3N2IyMWMwNjVjYS4uYjljNTk2ODFmODE3NjNh
ZjAxYmM1YjA4MjY4YTM5OTBlODg1NzQwMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDExLTEx
LTI4ICBUYWlqdSBUU1VJS0kgIDx0emlrQGNocm9taXVtLm9yZz4KKworICAgICAgICBBZGRpbmcg
RmlsZVN5c3RlbSBzdXBwb3J0IHRvIEluc3BlY3RvcjogcGFydCAyLiBTdG9yYWdlIHRyZWUKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcyNjkxCisKKyAg
ICAgICAgTmVlZCBhIHNob3J0IGRlc2NyaXB0aW9uIGFuZCBidWcgVVJMIChPT1BTISkKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGh0dHAvdGVzdHMv
aW5zcGVjdG9yL2ZpbGVzeXN0ZW0vZmlsZXN5c3RlbS1jYXB0dXJlLWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvZmlsZXN5c3RlbS9maWxlc3lzdGVt
LWNhcHR1cmUuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvZmls
ZXN5c3RlbS9maWxlc3lzdGVtLXRlc3QuanM6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2Vm
bC9Ta2lwcGVkOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9Ta2lwcGVkOgorICAgICAgICAqIHBs
YXRmb3JtL21hYy9Ta2lwcGVkOgorICAgICAgICAqIHBsYXRmb3JtL3F0L1NraXBwZWQ6CisgICAg
ICAgICogcGxhdGZvcm0vd2luL1NraXBwZWQ6CisgICAgICAgICogcGxhdGZvcm0vd2luY2Fpcm8v
U2tpcHBlZDoKKwogMjAxMS0xMS0yOCAgUGF2ZWwgRmVsZG1hbiAgPHBmZWxkbWFuQGdvb2dsZS5j
b20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogY29uc29sZSBldmFsdWF0aW9uIGRvZXNuJ3Qg
d29yayB3aGVuIG5hdmlnYXRpbmcgZnJvbSBhIHBhZ2Ugd2l0aCBzZXZlcmFsIGZyYW1lcyB0byBh
bm90aGVyIG9uZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3Iv
ZmlsZXN5c3RlbS9maWxlc3lzdGVtLWNhcHR1cmUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9pbnNwZWN0b3IvZmlsZXN5c3RlbS9maWxlc3lzdGVtLWNhcHR1cmUtZXhwZWN0
ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmM0Njg4M2JiNTJhNGU1ODgxMTEwZmZiNGFjYmI0NjQyNGEzYmQ5
NDEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9m
aWxlc3lzdGVtL2ZpbGVzeXN0ZW0tY2FwdHVyZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzNSBA
QAorV2ViSW5zcGVjdG9yIHRlc3QgZm9yIGNhcHR1cmluZyBGaWxlU3lzdGVtIG9iamVjdC4gVGhp
cyB0ZXN0IGNoZWNrcyBpZiBJbnNwZWN0b3IgY2FuIGNhcHR1cmUgRE9NRmlsZVN5c3RlbSBvYmpl
Y3QgYW5kIGNhbiBkZXRlY3QgaW52YWxpZGF0aW9uIG9mIERPTUZpbGVTeXN0ZW0gY29ycmVjdGx5
LgorCitPbiBzdWNjZXNzLCB3ZSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMs
IGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworU3RhcnRpbmcgdGVzdC4KKyAgRHVtcGlu
ZyBGaWxlU3lzdGVtIHRyZWU6CisgICAgKGVtcHR5KQorCitPcGVuaW5nIEZpbGVTeXN0ZW0uCitQ
QVNTCisgIER1bXBpbmcgRmlsZVN5c3RlbSB0cmVlOgorICAgIEZpbGVTeXN0ZW0gTmFtZTogaHR0
cF8xMjcuMC4wLjFfODAwMDpUZW1wb3JhcnkKKworT3BlbmluZyBhbm90aGVyIEZpbGVTeXN0ZW0g
d2l0aCBzYW1lIG5hbWUuCitQQVNTCisgIER1bXBpbmcgRmlsZVN5c3RlbSB0cmVlOgorICAgIEZp
bGVTeXN0ZW0gTmFtZTogaHR0cF8xMjcuMC4wLjFfODAwMDpUZW1wb3JhcnkKKworRGlzY2FyZGlu
ZyBhIGluc3RhbmNlLgorUEFTUworICBEdW1waW5nIEZpbGVTeXN0ZW0gdHJlZToKKyAgICBGaWxl
U3lzdGVtIE5hbWU6IGh0dHBfMTI3LjAuMC4xXzgwMDA6VGVtcG9yYXJ5CisKK0Rpc2NhcmRpbmcg
YW5vdGhlciBpbnN0YW5jZS4KK1BBU1MKKyAgRHVtcGluZyBGaWxlU3lzdGVtIHRyZWU6CisgICAg
KGVtcHR5KQorCitSZW9wZW5pbmcgRmlsZVN5c3RlbS4KK1BBU1MKKyAgRHVtcGluZyBGaWxlU3lz
dGVtIHRyZWU6CisgICAgRmlsZVN5c3RlbSBOYW1lOiBodHRwXzEyNy4wLjAuMV84MDAwOlRlbXBv
cmFyeQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvaW5zcGVjdG9yL2ZpbGVzeXN0ZW0vZmlsZXN5c3RlbS1jYXB0dXJlLmh0bWwgYi9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9maWxlc3lzdGVtL2ZpbGVzeXN0ZW0tY2FwdHVyZS5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmExNzc2ZmZjM2E3NDVjMThiMGY1MTExM2ZiMzI0NDU4MmM2ZGE2MGMK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9maWxl
c3lzdGVtL2ZpbGVzeXN0ZW0tY2FwdHVyZS5odG1sCkBAIC0wLDAgKzEsMTMwIEBACis8IURPQ1RZ
UEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJVVEYtOCI+Cis8c2NyaXB0
IHNyYz0iLi4vaW5zcGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9ImZpbGVz
eXN0ZW0tdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorZnVuY3Rpb24gdGVzdCgpCit7Cisg
ICAgaWYgKCF3aW5kb3cud2Via2l0UmVxdWVzdEZpbGVTeXN0ZW0pIHsKKyAgICAgICAgSW5zcGVj
dG9yVGVzdC5hZGRSZXN1bHQoIlRoaXMgdGVzdCByZXF1aXJlcyB3ZWJraXRSZXF1ZXN0RmlsZVN5
c3RlbS4iKTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5jb21wbGV0ZVRlc3QoKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKworICAgIGZ1bmN0aW9uIFJlcXVlc3RUZW1wRlMoKQorICAgIHsKKyAg
ICAgICAgd2Via2l0UmVxdWVzdEZpbGVTeXN0ZW0oVEVNUE9SQVJZLCAxMDI0LCBmdW5jdGlvbihm
cykgeworICAgICAgICAgICAgd2luZG93LmZpbGVTeXN0ZW0gPSBmczsKKyAgICAgICAgfSk7Cisg
ICAgfQorCisgICAgdmFyIGZyYW1lMSwgZnJhbWUyOworICAgIHZhciB0bXBGU0ludmFsaWRhdGVk
ID0gdHJ1ZTsKKworICAgIFdlYkluc3BlY3Rvci5zaG93UGFuZWwoInJlc291cmNlcyIpOworICAg
IHZhciBzdGVwID0gWworICAgICAgICBmdW5jdGlvbigpCisgICAgICAgIHsKKyAgICAgICAgICAg
IEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJTdGFydGluZyB0ZXN0LiIpOworICAgICAgICAgICAg
SW5zcGVjdG9yVGVzdC5kdW1wRmlsZVN5c3RlbSgpOworICAgICAgICAgICAgSW5zcGVjdG9yVGVz
dC5hZGRSZXN1bHQoIiIpOworCisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmNyZWF0ZUlGcmFt
ZShzdGVwLnNoaWZ0KCkpOworICAgICAgICB9LAorICAgICAgICBmdW5jdGlvbihpZCkKKyAgICAg
ICAgeworICAgICAgICAgICAgZnJhbWUxID0gaWQ7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0
LmNyZWF0ZUlGcmFtZShzdGVwLnNoaWZ0KCkpOworICAgICAgICB9LAorICAgICAgICBmdW5jdGlv
bihpZCkKKyAgICAgICAgeworICAgICAgICAgICAgZnJhbWUyID0gaWQ7CisgICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiT3BlbmluZyBGaWxlU3lzdGVtLiIpOworICAgICAgICAg
ICAgSW5zcGVjdG9yVGVzdC5hZGRTbmlmZmVyKFdlYkluc3BlY3Rvci5SZXNvdXJjZXNQYW5lbC5w
cm90b3R5cGUsICJhZGRGaWxlU3lzdGVtIiwgc3RlcC5zaGlmdCgpKTsKKyAgICAgICAgICAgIElu
c3BlY3RvclRlc3QuZXZhbHVhdGVJbklGcmFtZShmcmFtZTEsIFJlcXVlc3RUZW1wRlMpOworICAg
ICAgICB9LAorICAgICAgICBmdW5jdGlvbigpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChX
ZWJJbnNwZWN0b3IucGFuZWxzLnJlc291cmNlcy5maWxlU3lzdGVtTGlzdFRyZWVFbGVtZW50LmNo
aWxkcmVuLmxlbmd0aCA9PSAxKQorICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVz
dWx0KCJQQVNTIik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgSW5zcGVjdG9y
VGVzdC5hZGRSZXN1bHQoIkZBSUwiKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZHVtcEZp
bGVTeXN0ZW0oKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCIiKTsKKwor
ICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIk9wZW5pbmcgYW5vdGhlciBGaWxl
U3lzdGVtIHdpdGggc2FtZSBuYW1lLiIpOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRT
bmlmZmVyKFdlYkluc3BlY3Rvci5SZXNvdXJjZXNQYW5lbC5wcm90b3R5cGUsICJhZGRGaWxlU3lz
dGVtIiwgc3RlcC5zaGlmdCgpKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXZhbHVhdGVJ
bklGcmFtZShmcmFtZTIsIFJlcXVlc3RUZW1wRlMpOworICAgICAgICB9LAorICAgICAgICBmdW5j
dGlvbigpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChXZWJJbnNwZWN0b3IucGFuZWxzLnJl
c291cmNlcy5maWxlU3lzdGVtTGlzdFRyZWVFbGVtZW50LmNoaWxkcmVuLmxlbmd0aCA9PSAxKQor
ICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJQQVNTIik7CisgICAgICAg
ICAgICBlbHNlCisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIkZBSUwi
KTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZHVtcEZpbGVTeXN0ZW0oKTsKKyAgICAgICAg
ICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCIiKTsKKworICAgICAgICAgICAgSW5zcGVjdG9y
VGVzdC5hZGRSZXN1bHQoIkRpc2NhcmRpbmcgYSBpbnN0YW5jZS4iKTsKKyAgICAgICAgICAgIElu
c3BlY3RvclRlc3QucmVtb3ZlSUZyYW1lKGZyYW1lMSwgc3RlcC5zaGlmdCgpKTsKKyAgICAgICAg
fSwKKyAgICAgICAgZnVuY3Rpb24oKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaGFzUGVu
ZGluZyA9IHRydWU7CisgICAgICAgICAgICBpZiAoV2ViSW5zcGVjdG9yLnBhbmVscy5yZXNvdXJj
ZXMuZmlsZVN5c3RlbUxpc3RUcmVlRWxlbWVudC5jaGlsZHJlbi5sZW5ndGggPT0gMSkKKyAgICAg
ICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiUEFTUyIpOworICAgICAgICAgICAg
ZWxzZQorICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJGQUlMIik7Cisg
ICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmR1bXBGaWxlU3lzdGVtKCk7CisgICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiIik7CisKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3Qu
YWRkUmVzdWx0KCJEaXNjYXJkaW5nIGFub3RoZXIgaW5zdGFuY2UuIik7CisgICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0LmFkZFNuaWZmZXIoV2ViSW5zcGVjdG9yLlJlc291cmNlc1BhbmVsLnByb3Rv
dHlwZSwgImludmFsaWRhdGVGaWxlU3lzdGVtIiwgcnVuTmV4dCk7CisgICAgICAgICAgICBJbnNw
ZWN0b3JUZXN0LmNsZWFySUZyYW1lKGZyYW1lMiwgZnVuY3Rpb24oaWQpIHsKKyAgICAgICAgICAg
ICAgICBmcmFtZTIgPSBpZDsKKyAgICAgICAgICAgICAgICBydW5OZXh0KCk7CisgICAgICAgICAg
ICB9KTsKKworICAgICAgICAgICAgZnVuY3Rpb24gcnVuTmV4dCgpCisgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgaWYgKGhhc1BlbmRpbmcpCisgICAgICAgICAgICAgICAgICAgIGhhc1Bl
bmRpbmcgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAg
IHN0ZXAuc2hpZnQoKSgpOworICAgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICBmdW5j
dGlvbigpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChXZWJJbnNwZWN0b3IucGFuZWxzLnJl
c291cmNlcy5maWxlU3lzdGVtTGlzdFRyZWVFbGVtZW50LmNoaWxkcmVuLmxlbmd0aCA9PSAwKQor
ICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJQQVNTIik7CisgICAgICAg
ICAgICBlbHNlCisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIkZBSUwi
KTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZHVtcEZpbGVTeXN0ZW0oKTsKKyAgICAgICAg
ICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCIiKTsKKworICAgICAgICAgICAgSW5zcGVjdG9y
VGVzdC5hZGRSZXN1bHQoIlJlb3BlbmluZyBGaWxlU3lzdGVtLiIpOworICAgICAgICAgICAgSW5z
cGVjdG9yVGVzdC5hZGRTbmlmZmVyKFdlYkluc3BlY3Rvci5SZXNvdXJjZXNQYW5lbC5wcm90b3R5
cGUsICJhZGRGaWxlU3lzdGVtIiwgc3RlcC5zaGlmdCgpKTsKKyAgICAgICAgICAgIEluc3BlY3Rv
clRlc3QuZXZhbHVhdGVJbklGcmFtZShmcmFtZTIsIFJlcXVlc3RUZW1wRlMpOworICAgICAgICB9
LAorICAgICAgICBmdW5jdGlvbigpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChXZWJJbnNw
ZWN0b3IucGFuZWxzLnJlc291cmNlcy5maWxlU3lzdGVtTGlzdFRyZWVFbGVtZW50LmNoaWxkcmVu
Lmxlbmd0aCA9PSAxKQorICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJQ
QVNTIik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5h
ZGRSZXN1bHQoIkZBSUwiKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZHVtcEZpbGVTeXN0
ZW0oKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCIiKTsKKyAgICAgICAg
ICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJURVNUIENPTVBMRVRFIik7CisgICAgICAgICAg
ICBJbnNwZWN0b3JUZXN0LmNvbXBsZXRlVGVzdCgpOworICAgICAgICB9XTsKKyAgICBzdGVwLnNo
aWZ0KCkoKTsKK30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJydW5UZXN0KCk7
Ij4KKzxwPldlYkluc3BlY3RvciB0ZXN0IGZvciBjYXB0dXJpbmcgRmlsZVN5c3RlbSBvYmplY3Qu
ICBUaGlzIHRlc3QgY2hlY2tzIGlmIEluc3BlY3RvciBjYW4gY2FwdHVyZSBET01GaWxlU3lzdGVt
IG9iamVjdCBhbmQgY2FuIGRldGVjdCBpbnZhbGlkYXRpb24gb2YgRE9NRmlsZVN5c3RlbSBjb3Jy
ZWN0bHkuPC9wPgorPHA+T24gc3VjY2Vzcywgd2Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1Mi
IG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuPC9wPgorPC9ib2R5PgorPC9o
dG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvZmlsZXN5
c3RlbS9maWxlc3lzdGVtLXRlc3QuanMgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rv
ci9maWxlc3lzdGVtL2ZpbGVzeXN0ZW0tdGVzdC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNzc0NzY2ZjJjZmRi
YWFiN2JmMmI0MjM1MTFhZjZhZjZlMTk1NTZjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvZmlsZXN5c3RlbS9maWxlc3lzdGVtLXRlc3QuanMKQEAg
LTAsMCArMSwxMDIgQEAKKwordmFyIG5leHRJRnJhbWVJZCA9IDA7CisKK2Z1bmN0aW9uIGNyZWF0
ZUlGcmFtZSgpCit7CisgICAgdmFyIGJ1aWxkZXIgPSBuZXcgV2ViS2l0QmxvYkJ1aWxkZXIoKTsK
KyAgICBidWlsZGVyLmFwcGVuZCgiPCFET0NUWVBFIGh0bWw+PG1ldGEgY2hhcnNldD1cIlVURi04
XCI+Iik7CisKKyAgICB2YXIgZnJhbWUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpZnJhbWUi
KTsKKyAgICBmcmFtZS5uYW1lID0gImZyYW1lIiArIG5leHRJRnJhbWVJZCsrOworICAgIGZyYW1l
LmlkID0gZnJhbWUubmFtZTsKKyAgICBmcmFtZS5zcmMgPSB3ZWJraXRVUkwuY3JlYXRlT2JqZWN0
VVJMKGJ1aWxkZXIuZ2V0QmxvYigidGV4dC9odG1sIikpOworICAgIGRvY3VtZW50LmJvZHkuYXBw
ZW5kQ2hpbGQoZnJhbWUpOworfQorCitmdW5jdGlvbiBldmFsdWF0ZUluSUZyYW1lKGlkLCBzY3Jp
cHQpCit7CisgICAgdmFyIGRvYyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkKS5jb250ZW50
RG9jdW1lbnQ7CisgICAgdmFyIHNjcmlwdFRhZyA9IGRvYy5jcmVhdGVFbGVtZW50KCJzY3JpcHQi
KTsKKyAgICBzY3JpcHRUYWcuaW5uZXJIVE1MID0gc2NyaXB0OworICAgIGRvYy5ib2R5LmFwcGVu
ZENoaWxkKHNjcmlwdFRhZyk7Cit9CisKK2Z1bmN0aW9uIGNsZWFySUZyYW1lKGlkKQoreworICAg
IHZhciBidWlsZGVyID0gbmV3IFdlYktpdEJsb2JCdWlsZGVyKCk7CisgICAgYnVpbGRlci5hcHBl
bmQoIjwhRE9DVFlQRSBodG1sPjxtZXRhIGNoYXJzZXQ9XCJVVEYtOFwiPiIpOworICAgIHZhciBm
cmFtZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkKTsKKyAgICBmcmFtZS5zcmMgPSB3ZWJr
aXRVUkwuY3JlYXRlT2JqZWN0VVJMKGJ1aWxkZXIuZ2V0QmxvYigidGV4dC9odG1sIikpOworfQor
CitmdW5jdGlvbiByZW1vdmVJRnJhbWUoaWQpCit7CisgICAgdmFyIGlmcmFtZSA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKGlkKTsKKyAgICBpZnJhbWUucGFyZW50RWxlbWVudC5yZW1vdmVDaGls
ZChpZnJhbWUpOworfQorCit2YXIgaW5pdGlhbGl6ZV9GaWxlU3lzdGVtVGVzdCA9IGZ1bmN0aW9u
KCkgeworCitJbnNwZWN0b3JUZXN0LmNyZWF0ZUlGcmFtZSA9IGZ1bmN0aW9uKGNhbGxiYWNrX29w
dCkgeworICAgIEluc3BlY3RvclRlc3QuYWRkU25pZmZlcihXZWJJbnNwZWN0b3IuUmVzb3VyY2VU
cmVlTW9kZWwucHJvdG90eXBlLCAiX2ZyYW1lTmF2aWdhdGVkIiwgZnJhbWVOYXZpZ2F0ZWQpOwor
ICAgIEluc3BlY3RvclRlc3QuZXZhbHVhdGVJblBhZ2UoImNyZWF0ZUlGcmFtZSgpOyIpOworICAg
IGZ1bmN0aW9uIGZyYW1lTmF2aWdhdGVkKGZyYW1lKQorICAgIHsKKyAgICAgICAgaWYgKGNhbGxi
YWNrX29wdCkKKyAgICAgICAgICAgIGNhbGxiYWNrX29wdChmcmFtZS5pZCk7CisgICAgfQorfTsK
KworSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluSUZyYW1lID0gZnVuY3Rpb24oZnJhbWVJZCwgc2Ny
aXB0KQoreworICAgIGlmICh0eXBlb2Ygc2NyaXB0ID09ICJmdW5jdGlvbiIpCisgICAgICAgIHNj
cmlwdCA9ICIoIiArIHNjcmlwdCArICIpKCkiOworICAgIHZhciBmcmFtZSA9IFdlYkluc3BlY3Rv
ci5yZXNvdXJjZVRyZWVNb2RlbC5mcmFtZUZvcklkKGZyYW1lSWQpOworICAgIGlmICghZnJhbWUp
CisgICAgICAgIGFkZFJlc3VsdChmcmFtZUlkICsgIiBub3QgZm91bmQiKTsKKyAgICBJbnNwZWN0
b3JUZXN0LmV2YWx1YXRlSW5QYWdlKCJldmFsdWF0ZUluSUZyYW1lKHVuZXNjYXBlKCciICsgZXNj
YXBlKGZyYW1lLm5hbWUpICsiJyksIHVuZXNjYXBlKCciICsgZXNjYXBlKHNjcmlwdCkgKyAiJykp
OyIpOworfTsKKworSW5zcGVjdG9yVGVzdC5yZW1vdmVJRnJhbWUgPSBmdW5jdGlvbihmcmFtZUlk
LCBjYWxsYmFja19vcHQpCit7CisgICAgdmFyIGZyYW1lID0gV2ViSW5zcGVjdG9yLnJlc291cmNl
VHJlZU1vZGVsLmZyYW1lRm9ySWQoZnJhbWVJZCk7CisgICAgSW5zcGVjdG9yVGVzdC5hZGRTbmlm
ZmVyKFdlYkluc3BlY3Rvci5SZXNvdXJjZVRyZWVNb2RlbC5wcm90b3R5cGUsICJfZnJhbWVEZXRh
Y2hlZCIsIGZyYW1lRGV0YWNoZWQpOworICAgIEluc3BlY3RvclRlc3QuZXZhbHVhdGVJblBhZ2Uo
InJlbW92ZUlGcmFtZSh1bmVzY2FwZSgnIiArIGVzY2FwZShmcmFtZS5uYW1lKSArICInKSk7Iik7
CisKKyAgICBmdW5jdGlvbiBmcmFtZURldGFjaGVkKGZyYW1lKQorICAgIHsKKyAgICAgICAgR0ND
b250cm9sbGVyLmNvbGxlY3QoKTsKKyAgICAgICAgaWYgKGNhbGxiYWNrX29wdCkKKyAgICAgICAg
ICAgIGNhbGxiYWNrX29wdCgpOworICAgIH0KK307CisKK0luc3BlY3RvclRlc3QuY2xlYXJJRnJh
bWUgPSBmdW5jdGlvbihmcmFtZUlkLCBjYWxsYmFja19vcHQpCit7CisgICAgdmFyIGZyYW1lID0g
V2ViSW5zcGVjdG9yLnJlc291cmNlVHJlZU1vZGVsLmZyYW1lRm9ySWQoZnJhbWVJZCk7CisgICAg
SW5zcGVjdG9yVGVzdC5hZGRTbmlmZmVyKFdlYkluc3BlY3Rvci5SZXNvdXJjZVRyZWVNb2RlbC5w
cm90b3R5cGUsICJfZnJhbWVOYXZpZ2F0ZWQiLCBmcmFtZU5hdmlnYXRlZCk7CisgICAgSW5zcGVj
dG9yVGVzdC5ldmFsdWF0ZUluUGFnZSgiY2xlYXJJRnJhbWUodW5lc2NhcGUoJyIgKyBlc2NhcGUo
ZnJhbWUubmFtZSkgKyAiJykpOyIpOworICAgIGZ1bmN0aW9uIGZyYW1lTmF2aWdhdGVkKGZyYW1l
KQorICAgIHsKKyAgICAgICAgR0NDb250cm9sbGVyLmNvbGxlY3QoKTsKKyAgICAgICAgaWYgKGNh
bGxiYWNrX29wdCkKKyAgICAgICAgICAgIGNhbGxiYWNrX29wdChmcmFtZS5pZCk7CisgICAgfQor
fTsKKworSW5zcGVjdG9yVGVzdC5kdW1wRmlsZVN5c3RlbSA9IGZ1bmN0aW9uKCkKK3sKKyAgICBJ
bnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiICBEdW1waW5nIEZpbGVTeXN0ZW0gdHJlZToiKTsKKyAg
ICB2YXIgZmlsZVN5c3RlbVN0b3JhZ2VUcmVlRWxlbWVudCA9IFdlYkluc3BlY3Rvci5wYW5lbHMu
cmVzb3VyY2VzLmZpbGVTeXN0ZW1MaXN0VHJlZUVsZW1lbnQ7CisgICAgaWYgKCFmaWxlU3lzdGVt
U3RvcmFnZVRyZWVFbGVtZW50LmNoaWxkcmVuLmxlbmd0aCkgeworICAgICAgICBJbnNwZWN0b3JU
ZXN0LmFkZFJlc3VsdCgiICAgIChlbXB0eSkiKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAg
ICBmb3IgKHZhciBpID0gMDsgaSA8IGZpbGVTeXN0ZW1TdG9yYWdlVHJlZUVsZW1lbnQuY2hpbGRy
ZW4ubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgdmFyIGZpbGVTeXN0ZW1UcmVlRWxlbWVudCA9IGZp
bGVTeXN0ZW1TdG9yYWdlVHJlZUVsZW1lbnQuY2hpbGRyZW5baV07CisgICAgICAgIEluc3BlY3Rv
clRlc3QuYWRkUmVzdWx0KCIgICAgRmlsZVN5c3RlbSBOYW1lOiAiICsgZmlsZVN5c3RlbVRyZWVF
bGVtZW50Ll9maWxlU3lzdGVtTmFtZSk7CisgICAgfQorfTsKKworfTsKKwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZsL1NraXBwZWQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9l
ZmwvU2tpcHBlZAppbmRleCAwNTEwM2JkNmEzZmUxOWZjNjk1NWE2MzQ0NjVlNjMwNjZlYzgxNWU1
Li5lYTMyNzllZTdkMTNkZThlYmMyNTk5MTAyMmI1NWNhMzMyN2NiZmU3IDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9lZmwvU2tpcHBlZAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9lZmwvU2tpcHBlZApAQCAtMTAwMSw2ICsxMDAxLDcgQEAgZmFzdC9hbmltYXRpb24KICMgVGhl
IEVGTCBwb3J0IGhhcyBubyBzdXBwb3J0IGZvciB0aGUgRmlsZVN5c3RlbSBBUEkKIGZhc3QvZmls
ZXN5c3RlbQogaHR0cC90ZXN0cy9maWxlc3lzdGVtCitodHRwL3Rlc3RzL2luc3BlY3Rvci9maWxl
c3lzdGVtCiBodHRwL3Rlc3RzL3NlY3VyaXR5L2ZpbGVzeXN0ZW0taWZyYW1lLWZyb20tcmVtb3Rl
Lmh0bWwKIAogIyBUaGUgRUZMIHBvcnQgaGFzIG5vIHN1cHBvcnQgZm9yIEdlb2xvY2F0aW9uCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvU2tpcHBlZCBiL0xheW91dFRlc3Rz
L3BsYXRmb3JtL2d0ay9Ta2lwcGVkCmluZGV4IDI3OWYxYzVhZGNkOTMwMmM3OTM0ZmVhYmE2MWZk
ZGU2MjNmOTIyNjkuLjFkMmQzYWUyYWZlYzkzMGM3MjlmNGQxMmRmNjdmMmNlNDMwMTdhZjkgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9Ta2lwcGVkCisrKyBiL0xheW91dFRl
c3RzL3BsYXRmb3JtL2d0ay9Ta2lwcGVkCkBAIC0yODIsNiArMjgyLDcgQEAgaHR0cC90ZXN0cy9t
aXNjL3dlYnRpbWluZy10d28tcmVkaXJlY3RzLnBocAogIyBGaWxlU3lzdGVtIEFQSSBpcyBub3Qg
c3VwcG9ydGVkLgogZmFzdC9maWxlc3lzdGVtCiBodHRwL3Rlc3RzL2ZpbGVzeXN0ZW0KK2h0dHAv
dGVzdHMvaW5zcGVjdG9yL2ZpbGVzeXN0ZW0KIGh0dHAvdGVzdHMvc2VjdXJpdHkvZmlsZXN5c3Rl
bS1pZnJhbWUtZnJvbS1yZW1vdGUuaHRtbAogaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHli
aS9zZW5kLWZpbGUtYmxvYi5odG1sCiBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3Nl
bmQtZmlsZS1ibG9iLWZhaWwuaHRtbApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
bWFjL1NraXBwZWQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvU2tpcHBlZAppbmRleCA2Njhi
OTY2Y2QwNTgyNzQ3MDNkMTYxNGY0NGVlZmVkOGNmMDVjOWFmLi4wYjU2MDBiZDY3MGNlMzQ1YzM5
NThlMWVhYjdhOGFmZTZiOWRmMWUwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9t
YWMvU2tpcHBlZAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvU2tpcHBlZApAQCAtMzA4
LDYgKzMwOCw3IEBAIGh0dHAvdGVzdHMvbWVkaWEvdmlkZW8tYnVmZmVyZWQuaHRtbAogIyBGaWxl
U3lzdGVtIEFQSSBpcyBub3Qgc3VwcG9ydGVkLgogZmFzdC9maWxlc3lzdGVtCiBodHRwL3Rlc3Rz
L2ZpbGVzeXN0ZW0KK2h0dHAvdGVzdHMvaW5zcGVjdG9yL2ZpbGVzeXN0ZW0KIGh0dHAvdGVzdHMv
c2VjdXJpdHkvZmlsZXN5c3RlbS1pZnJhbWUtZnJvbS1yZW1vdGUuaHRtbAogaHR0cC90ZXN0cy93
ZWJzb2NrZXQvdGVzdHMvaHliaS9zZW5kLWZpbGUtYmxvYi5odG1sCiBodHRwL3Rlc3RzL3dlYnNv
Y2tldC90ZXN0cy9oeWJpL3NlbmQtZmlsZS1ibG9iLWZhaWwuaHRtbApkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vcXQvU2tpcHBlZCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L1Nr
aXBwZWQKaW5kZXggMjZhZTQ3ODFkYzk3ZjE3M2Q1MTM4ZWUxZWMxNTQ1NGQzYjI2NDVmNC4uMDRj
Y2I0MDY2ZDY5MGM5ODQxZDlkZjg4MmYzOWRiYWNhZjZhYTAzMSAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vcXQvU2tpcHBlZAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9T
a2lwcGVkCkBAIC0xMTksNiArMTE5LDcgQEAgc3ZnL3dlYmFyY2hpdmUKICMgRU5BQkxFKEZJTEVf
U1lTVEVNKSBpcyBkaXNhYmxlZC4KIGZhc3QvZmlsZXN5c3RlbQogaHR0cC90ZXN0cy9maWxlc3lz
dGVtCitodHRwL3Rlc3RzL2luc3BlY3Rvci9maWxlc3lzdGVtCiBodHRwL3Rlc3RzL3NlY3VyaXR5
L2ZpbGVzeXN0ZW0taWZyYW1lLWZyb20tcmVtb3RlLmh0bWwKIGh0dHAvdGVzdHMvd2Vic29ja2V0
L3Rlc3RzL2h5Ymkvc2VuZC1maWxlLWJsb2IuaHRtbAogaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVz
dHMvaHliaS9zZW5kLWZpbGUtYmxvYi1mYWlsLmh0bWwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3BsYXRmb3JtL3dpbi9Ta2lwcGVkIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1NraXBwZWQK
aW5kZXggNTA3NjIxMTkxNzBhZTkwOWMxZWY4OTMxOGE4M2EzMjdjYjc1NmI4OC4uMGE4MjVjZGMy
Yzg3ZjdiMTUzMzIxNmU1YmZiOGUwNzdkYWVkMTRjYiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vd2luL1NraXBwZWQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1NraXBw
ZWQKQEAgLTEyMjMsNiArMTIyMyw3IEBAIGZhc3QvcGFyc2VyL3ByZS1odG1sNS1wYXJzZXItcXVp
cmtzLmh0bWwKIGZhc3QvZmlsZXN5c3RlbQogaHR0cC90ZXN0cy9maWxlc3lzdGVtCiBodHRwL3Rl
c3RzL3NlY3VyaXR5L2ZpbGVzeXN0ZW0taWZyYW1lLWZyb20tcmVtb3RlLmh0bWwKK2h0dHAvdGVz
dHMvaW5zcGVjdG9yL2ZpbGVzeXN0ZW0KIGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkv
c2VuZC1maWxlLWJsb2IuaHRtbAogaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9zZW5k
LWZpbGUtYmxvYi1mYWlsLmh0bWwKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
d2luY2Fpcm8vU2tpcHBlZCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbmNhaXJvL1NraXBwZWQK
aW5kZXggM2MwM2UwMzM3YjE2NzU5N2QxYTU1Y2EwNzhlMjI4OTI1ZDEyN2I5OC4uZmMyY2IzYjc4
YTBhYzQ4YWEwNDU5ODE3YjIxY2Q5Y2M4NjZiMTgxZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vd2luY2Fpcm8vU2tpcHBlZAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW5j
YWlyby9Ta2lwcGVkCkBAIC0xNzQyLDYgKzE3NDIsNyBAQCBodHRwL3Rlc3RzL2ZpbGVzeXN0ZW0K
IGh0dHAvdGVzdHMvc2VjdXJpdHkvZmlsZXN5c3RlbS1pZnJhbWUtZnJvbS1yZW1vdGUuaHRtbAog
aHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9zZW5kLWZpbGUtYmxvYi5odG1sCiBodHRw
L3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3NlbmQtZmlsZS1ibG9iLWZhaWwuaHRtbAoraHR0
cC90ZXN0cy9pbnNwZWN0b3IvZmlsZXN5c3RlbQogCiAjIExheW91dFRlc3RDb250cm9sbGVyOjpu
b2Rlc0Zyb21SZWN0IGlzIG5vdCBzdXBwb3J0ZWQuCiBmYXN0L2RvbS9ub2Rlc0Zyb21SZWN0LWJh
c2ljLmh0bWwK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>116887</attachid>
            <date>2011-11-28 21:46:10 -0800</date>
            <delta_ts>2012-02-19 20:35:22 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-72691-20111129144608.patch</filename>
            <type>text/plain</type>
            <size>53974</size>
            <attacher name="Taiju Tsuiki">tzik</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAxMzExCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzNmZTliMTAzZjI5MzFm
YmU5MjBiMGJhYTU5MTBjOWIzNGRkNjg1My4uNjQ2OWU4YmJlY2ZhZDY3Nzc3ZGFiZTQ0OTM3Y2Zi
MzdhYmI1YmQ0OCAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYyIEBACisyMDExLTExLTI4ICBUYWlq
dSBUU1VJS0kgIDx0emlrQGNocm9taXVtLm9yZz4KKworICAgICAgICBbSW5zcGVjdG9yXVtGaWxl
U3lzdGVtXSBBZGQgRmlsZVN5c3RlbSBpdGVtIHRvIHN0b3JhZ2UgdHJlZS4KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcyNjkxCisKKyAgICAgICAgQWRk
aW5nIEZpbGVTeXN0ZW0gaXRlbSB0byBzdG9yYWdlIHRyZWUgYW5kIHB1dHRpbmcgZWFjaCBET01G
aWxlU3lzdGVtCisgICAgICAgIG9iamVjdCBhcyBhbiBpdGVtLgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3Q6IGh0dHAvdGVzdHMvaW5zcGVjdG9y
L2ZpbGVzeXN0ZW0vZmlsZXN5c3RlbS1jYXB0dXJlLmh0bWwKKworICAgICAgICAqIFdlYkNvcmUu
Z3lwaToKKyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajoKKyAgICAgICAg
KiBmaWxlYXBpL0RPTUZpbGVTeXN0ZW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NRmlsZVN5
c3RlbTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTUZpbGVTeXN0ZW06OmNvbnRleHRE
ZXN0cm95ZWQpOgorICAgICAgICAqIGZpbGVhcGkvRE9NRmlsZVN5c3RlbS5oOgorICAgICAgICAq
IGluc3BlY3Rvci9JbnNwZWN0b3IuanNvbjoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9y
RmlsZVN5c3RlbUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckZpbGVTeXN0
ZW1BZ2VudDo6fkluc3BlY3RvckZpbGVTeXN0ZW1BZ2VudCk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQ6OmRpZE9wZW5GaWxlU3lzdGVtKToKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvckZpbGVTeXN0ZW1BZ2VudDo6ZmlsZVN5c3RlbUludmFsaWRhdGVkKToK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckZpbGVTeXN0ZW1BZ2VudDo6ZW5hYmxlKToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckZpbGVTeXN0ZW1BZ2VudDo6c2V0RnJvbnRlbmQpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50OjpjbGVhckZyb250ZW5k
KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckZpbGVTeXN0ZW1BZ2VudDo6Z2V0RmlsZVN5
c3RlbSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQ6Okluc3Bl
Y3RvckZpbGVTeXN0ZW1BZ2VudCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckZpbGVT
eXN0ZW1BZ2VudC5oOgorICAgICAgICAoV2ViQ29yZTo6QmFja1B0cjo6Y3JlYXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkJhY2tQdHI6OmdldCk6CisgICAgICAgIChXZWJDb3JlOjpCYWNrUHRyOjpj
bGVhcik6CisgICAgICAgIChXZWJDb3JlOjpCYWNrUHRyOjpCYWNrUHRyKToKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvckZpbGVTeXN0ZW1BZ2VudDo6Z2V0RnJvbnRlbmQpOgorICAgICAgICAq
IGluc3BlY3Rvci9JbnNwZWN0b3JGaWxlU3lzdGVtSW5zdHJ1bWVudGF0aW9uLmg6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZE9wZW5GaWxlU3lzdGVtKToK
KyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkT3BlbkZpbGVTeXN0ZW1J
bXBsKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmg6Cisg
ICAgICAgICogaW5zcGVjdG9yL2NvbXBpbGUtZnJvbnQtZW5kLnNoOgorICAgICAgICAqIGluc3Bl
Y3Rvci9mcm9udC1lbmQvRW1wdHlWaWV3LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkVtcHR5
Vmlldy5wcm90b3R5cGUud2FzU2hvd24pOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQv
RmlsZVN5c3RlbS5qczogQWRkZWQuCisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9GaWxl
U3lzdGVtVmlldy5qczogQWRkZWQuCisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9JbWFn
ZXMvZmlsZVN5c3RlbS5wbmc6IEFkZGVkLgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQv
UmVzb3VyY2VzUGFuZWwuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVzb3VyY2VzUGFuZWwu
cHJvdG90eXBlLl9yZXNldCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVzb3VyY2VzUGFuZWwu
cHJvdG90eXBlLmFkZEZpbGVTeXN0ZW0pOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNl
c1BhbmVsLnByb3RvdHlwZS5pbnZhbGlkYXRlRmlsZVN5c3RlbSk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuUmVzb3VyY2VzUGFuZWwucHJvdG90eXBlLnNob3dGaWxlU3lzdGVtKToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtVHJlZUVsZW1lbnQpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLkZpbGVTeXN0ZW1UcmVlRWxlbWVudC5wcm90b3R5cGUub25zZWxlY3QpOgorICAgICAgICAq
IGluc3BlY3Rvci9mcm9udC1lbmQvU2V0dGluZ3MuanM6CisgICAgICAgICogaW5zcGVjdG9yL2Zy
b250LWVuZC9XZWJLaXQucXJjOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVj
dG9yLmh0bWw6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuanM6Cisg
ICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9yZXNvdXJjZXNQYW5lbC5jc3M6CisgICAgICAg
ICguZmlsZXN5c3RlbS1zdG9yYWdlLXRyZWUtaXRlbSAuaWNvbik6CisKIDIwMTEtMTEtMjggIERh
bmEgSmFuc2VucyAgPGRhbmFrakBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgU3luY2hyb25pemF0
aW9uIHByb2JsZW0gaW4gQ2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dCB3aGVuIGxpc3RlbmVy
IGFza3MgZm9yIGltYWdlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDM0ZmM2ZDU4ZmM4
M2M0Mzg4MWQ1NzFhNDk5YWNkMzRmZGM2MjczN2IuLjJjNDExZTQxNzQyYjMxNzg2MDBlMzcxZGJi
YjkyYjdmMWY1MzFjZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQg
QEAKKzIwMTEtMTEtMjggIFRhaWp1IFRTVUlLSSAgPHR6aWtAY2hyb21pdW0ub3JnPgorCisgICAg
ICAgIFtJbnNwZWN0b3JdW0ZpbGVTeXN0ZW1dIEFkZCBGaWxlU3lzdGVtIGl0ZW0gdG8gc3RvcmFn
ZSB0cmVlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03
MjY5MQorCisgICAgICAgIEVuYWJsZSBGaWxlU3lzdGVtIHN1cHBvcnQgaW4gRGV2VG9vbHMgUHJl
ZmVyZW5jZS4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIHNyYy9qcy9EZXZUb29scy5qczoKKwogMjAxMS0xMS0yOCAgSm9uIExlZSAgPGpvbmxlZUBh
cHBsZS5jb20+CiAKICAgICAgICAgQ3JlYXRlIHNrZWxldG9uIGZyYW1ld29yayBmb3Igbm90aWZp
Y2F0aW9ucyBzdXBwb3J0IGluIFdLMgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IDYyZGU5ZGY1ZDgzMTdi
ZGUyNTQ1ZTUzYTU0N2ZlODUyYTdhYzMyZDAuLjEzYzMxYWFjODczMDhiZTE1ZTc0MjRhNTVhNDA4
OWE4ODAzMTdmMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTYzNDMsNiArNjM0Myw4IEBACiAgICAg
ICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9FeHRlbnNpb25QYW5lbC5qcycsCiAgICAgICAg
ICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9FeHRlbnNpb25SZWdpc3RyeVN0dWIuanMnLAogICAg
ICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvRXh0ZW5zaW9uU2VydmVyLmpzJywKKyAgICAg
ICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0ZpbGVTeXN0ZW0uanMnLAorICAgICAgICAgICAg
J2luc3BlY3Rvci9mcm9udC1lbmQvRmlsZVN5c3RlbVZpZXcuanMnLAogICAgICAgICAgICAgJ2lu
c3BlY3Rvci9mcm9udC1lbmQvRm9udFZpZXcuanMnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9m
cm9udC1lbmQvR29Ub0xpbmVEaWFsb2cuanMnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9u
dC1lbmQvSEFSRW50cnkuanMnLApAQCAtNjUwNCw2ICs2NTA2LDcgQEAKICAgICAgICAgICAgICdp
bnNwZWN0b3IvZnJvbnQtZW5kL0ltYWdlcy9lcnJvclJlZERvdC5wbmcnLAogICAgICAgICAgICAg
J2luc3BlY3Rvci9mcm9udC1lbmQvSW1hZ2VzL2ZvcndhcmQucG5nJywKICAgICAgICAgICAgICdp
bnNwZWN0b3IvZnJvbnQtZW5kL0ltYWdlcy9mcmFtZS5wbmcnLAorICAgICAgICAgICAgJ2luc3Bl
Y3Rvci9mcm9udC1lbmQvSW1hZ2VzL2ZpbGVTeXN0ZW0ucG5nJywKICAgICAgICAgICAgICdpbnNw
ZWN0b3IvZnJvbnQtZW5kL0ltYWdlcy9nbG9zc3lIZWFkZXIucG5nJywKICAgICAgICAgICAgICdp
bnNwZWN0b3IvZnJvbnQtZW5kL0ltYWdlcy9nbG9zc3lIZWFkZXJQcmVzc2VkLnBuZycsCiAgICAg
ICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9JbWFnZXMvZ2xvc3N5SGVhZGVyU2VsZWN0ZWQu
cG5nJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUu
dmNwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKaW5k
ZXggMDJkYjIzMWYwOTEzOTBiYWEzYjRhYTY5MWM1ODI2YWY4NzA3NmUyOC4uZjhiMDMwMzllNzc5
OTczM2E3M2ZhODZkNWE2YTE0YmVlY2M0ZGMzNCAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKQEAgLTY4OTYxLDYgKzY4OTYxLDE0IEBACiAJCQkJCT4K
IAkJCQk8L0ZpbGU+CiAJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxpbnNwZWN0b3Jc
ZnJvbnQtZW5kXEZpbGVTeXN0ZW0uanMiCisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUK
KwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxpbnNwZWN0b3JcZnJvbnQtZW5kXEZpbGVTeXN0ZW1WaWV3
LmpzIgorCQkJCQk+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCiAJCQkJCVJlbGF0aXZlUGF0aD0i
Li5caW5zcGVjdG9yXGZyb250LWVuZFxGb250Vmlldy5qcyIKIAkJCQkJPgogCQkJCTwvRmlsZT4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRE9NRmlsZVN5c3RlbS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9maWxlYXBpL0RPTUZpbGVTeXN0ZW0uY3BwCmluZGV4IGFjMzg2OTAzYjE4
ZmJiY2IxYzUwZWE0NzgyMjIwMTkxMWU3NjcyMjAuLjExNDMxZjc3YTU3Njc2MWRmMDRhZmEzNjlh
OWRhYzYxYjFkM2VhNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRE9NRmls
ZVN5c3RlbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9ET01GaWxlU3lzdGVtLmNw
cApAQCAtNDUsNiArNDUsNyBAQAogI2luY2x1ZGUgIkZpbGVXcml0ZXIuaCIKICNpbmNsdWRlICJG
aWxlV3JpdGVyQmFzZUNhbGxiYWNrLmgiCiAjaW5jbHVkZSAiRmlsZVdyaXRlckNhbGxiYWNrLmgi
CisjaW5jbHVkZSAiSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50LmgiCiAjaW5jbHVkZSAiSW5zcGVj
dG9yRmlsZVN5c3RlbUluc3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIk1ldGFkYXRhQ2FsbGJh
Y2suaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCkBAIC01Niw3ICs1Nyw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIFBhc3NSZWZQdHI8RE9NRmlsZVN5c3RlbT4gRE9NRmls
ZVN5c3RlbTo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0
cmluZyYgbmFtZSwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW0+IGFzeW5jRmlsZVN5c3RlbSkK
IHsKICAgICBSZWZQdHI8RE9NRmlsZVN5c3RlbT4gZmlsZVN5c3RlbShhZG9wdFJlZihuZXcgRE9N
RmlsZVN5c3RlbShjb250ZXh0LCBuYW1lLCBhc3luY0ZpbGVTeXN0ZW0pKSk7Ci0gICAgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRPcGVuRmlsZVN5c3RlbShmaWxlU3lzdGVtLmdldCgpKTsK
KyAgICBmaWxlU3lzdGVtLT5tX2FnZW50UHJvdmlkZXIgPSBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OmRpZE9wZW5GaWxlU3lzdGVtKGZpbGVTeXN0ZW0uZ2V0KCkpOwogICAgIHJldHVybiBmaWxl
U3lzdGVtOwogfQogCkBAIC04Myw2ICs4NCwxMSBAQCBib29sIERPTUZpbGVTeXN0ZW06Omhhc1Bl
bmRpbmdBY3Rpdml0eSgpIGNvbnN0CiAKIHZvaWQgRE9NRmlsZVN5c3RlbTo6Y29udGV4dERlc3Ry
b3llZCgpCiB7CisgICAgUmVmUHRyPERPTUZpbGVTeXN0ZW0+IGZpbGVTeXN0ZW0odGhpcyk7Cisg
ICAgaWYgKEluc3BlY3RvckZpbGVTeXN0ZW1BZ2VudCogYWdlbnQgPSBtX2FnZW50UHJvdmlkZXIu
Z2V0KCkgPyBtX2FnZW50UHJvdmlkZXItPmdldCgpIDogMCkgeworICAgICAgICBtX2FnZW50UHJv
dmlkZXIgPSAwOworICAgICAgICBhZ2VudC0+ZmlsZVN5c3RlbUludmFsaWRhdGVkKHRoaXMpOwor
ICAgIH0KICAgICBtX2FzeW5jRmlsZVN5c3RlbS0+c3RvcCgpOwogICAgIEFjdGl2ZURPTU9iamVj
dDo6Y29udGV4dERlc3Ryb3llZCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmls
ZWFwaS9ET01GaWxlU3lzdGVtLmggYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0RPTUZpbGVTeXN0
ZW0uaAppbmRleCA3NGZhOWFjMTgxNWZkNWVjZjE1ZTFjNTBiNWUwMjkwY2FlYjY4YTg3Li5hN2Zk
YTg4ZmM4ZGU0M2VlMWQ5MmJjMTEyM2RmZWUyMTU0NWY4ZDE5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9maWxlYXBpL0RPTUZpbGVTeXN0ZW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxl
YXBpL0RPTUZpbGVTeXN0ZW0uaApAQCAtNDQsNiArNDQsOCBAQCBjbGFzcyBGaWxlOwogY2xhc3Mg
RmlsZUNhbGxiYWNrOwogY2xhc3MgRmlsZUVudHJ5OwogY2xhc3MgRmlsZVdyaXRlckNhbGxiYWNr
OworY2xhc3MgSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50OwordGVtcGxhdGU8dHlwZW5hbWU+IGNs
YXNzIEJhY2tQdHI7CiAKIGNsYXNzIERPTUZpbGVTeXN0ZW0gOiBwdWJsaWMgRE9NRmlsZVN5c3Rl
bUJhc2UsIHB1YmxpYyBBY3RpdmVET01PYmplY3QgewogcHVibGljOgpAQCAtOTIsNiArOTQsOCBA
QCBwcml2YXRlOgogICAgICAgICBSZWZQdHI8Q0I+IG1fY2FsbGJhY2s7CiAgICAgICAgIFJlZlB0
cjxDQkFyZz4gbV9jYWxsYmFja0FyZzsKICAgICB9OworCisgICAgUmVmUHRyPEJhY2tQdHI8SW5z
cGVjdG9yRmlsZVN5c3RlbUFnZW50PiA+IG1fYWdlbnRQcm92aWRlcjsKIH07CiAKIHRlbXBsYXRl
IDx0eXBlbmFtZSBDQiwgdHlwZW5hbWUgQ0JBcmc+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24gYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yLmpzb24KaW5kZXggNjE1Y2YwZmFmNTcxODVhMjQ1ZmU0Mzc0NWU0ZjdkNjcyMGE3MzI4
Zi4uZmYyZjU2Nzc5ODY2MjZmYmY2Mzc3NzU5Mjk3MzA0ZmNjNzM1MTk1NSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbgpAQCAtMTAwNywxMCArMTAwNyw0MiBAQAogICAg
ICAgICAgICAgfSwKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAibmFtZSI6ICJkaXNh
YmxlIiwKLSAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiRGlzYWJsZXMgZXZlbnRzIGZy
b20gYmFja2VuZC4uIgorICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJEaXNhYmxlcyBl
dmVudHMgZnJvbSBiYWNrZW5kLiIKICAgICAgICAgICAgIH0KICAgICAgICAgXSwKICAgICAgICAg
ImV2ZW50cyI6IFsKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAibmFtZSI6ICJmaWxl
U3lzdGVtQWRkZWQiLAorICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJOb3RpZmllcyBm
cm9udGVuZCBvZiBuZXcgRmlsZVN5c3RlbS4iLAorICAgICAgICAgICAgICAgICJwYXJhbWV0ZXJz
IjogWworICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAibmFt
ZSI6ICJmaWxlU3lzdGVtTmFtZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAiZGVzY3JpcHRp
b24iOiAiVW5pcXVlIGlkZW50aWZpZWQgZm9yIHRoZSBGaWxlU3lzdGVtLiIsCisgICAgICAgICAg
ICAgICAgICAgICAgICAidHlwZSI6ICJzdHJpbmciCisgICAgICAgICAgICAgICAgICAgIH0sCisg
ICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICJuYW1lIjogIm9y
aWdpbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiU2VjdXJpdHkg
b3JpZ2luLiIsCisgICAgICAgICAgICAgICAgICAgICAgICAidHlwZSI6ICJzdHJpbmciCisgICAg
ICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICJuYW1lIjogInR5cGUiLAorICAgICAgICAgICAgICAgICAgICAgICAgImRlc2Ny
aXB0aW9uIjogIkZpbGVTeXN0ZW0gdHlwZSwgb25lIG9mIHRlbXBvcmFyeSwgcGVyc2lzdGVudCBv
ciBleHRlcm5hbC4iLAorICAgICAgICAgICAgICAgICAgICAgICAgInR5cGUiOiAic3RyaW5nIgor
ICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgfSwK
KyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAibmFtZSI6ICJmaWxlU3lzdGVtSW52YWxp
ZGF0ZWQiLAorICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJOb3RpZmllcyBmcm9udGVu
ZCBvZiBmaWxlc3lzdGVtIGludmFsaWRhdGlvbi4iLAorICAgICAgICAgICAgICAgICJwYXJhbWV0
ZXJzIjogWworICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAi
bmFtZSI6ICJmaWxlU3lzdGVtTmFtZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAiZGVzY3Jp
cHRpb24iOiAiRmlsZVN5c3RlbSBuYW1lIHRvIGJlIGludmFsaWRhdGVkLiIsCisgICAgICAgICAg
ICAgICAgICAgICAgICAidHlwZSI6ICJzdHJpbmciCisgICAgICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICBdCisgICAgICAgICAgICB9CiAgICAgICAgIF0KICAgICB9LAogICAgIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGaWxlU3lzdGVt
QWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZpbGVTeXN0ZW1B
Z2VudC5jcHAKaW5kZXggYTY0YTFiMzMxMGFmOWMwNmIyNWI4ZmIyYzAyZmIyOThlYTQ2NzRjMi4u
MWZkYmMzZWRjODBmYTdmOTkyNGYyMDM2ZTM3OTk2NzdlM2Q2YWJhOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZpbGVTeXN0ZW1BZ2VudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZpbGVTeXN0ZW1BZ2VudC5jcHAKQEAg
LTM2LDYgKzM2LDM1IEBACiAjaW5jbHVkZSAiRE9NRmlsZVN5c3RlbS5oIgogI2luY2x1ZGUgIklu
c3BlY3RvclN0YXRlLmgiCiAjaW5jbHVkZSAiSW5zdHJ1bWVudGluZ0FnZW50cy5oIgorI2luY2x1
ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCisKK25hbWVzcGFjZSB7CisKK1N0cmluZyB0eXBlVG9TdHJp
bmcoV2ViQ29yZTo6QXN5bmNGaWxlU3lzdGVtOjpUeXBlIHR5cGUpCit7CisgICAgdXNpbmcgV2Vi
Q29yZTo6QXN5bmNGaWxlU3lzdGVtOworICAgIHN3aXRjaCAodHlwZSkgeworICAgIGNhc2UgQXN5
bmNGaWxlU3lzdGVtOjpFeHRlcm5hbDoKKyAgICAgICAgcmV0dXJuICJleHRlcm5hbCI7CisgICAg
Y2FzZSBBc3luY0ZpbGVTeXN0ZW06OlBlcnNpc3RlbnQ6CisgICAgICAgIHJldHVybiAicGVyc2lz
dGVudCI7CisgICAgY2FzZSBBc3luY0ZpbGVTeXN0ZW06OlRlbXBvcmFyeToKKyAgICAgICAgcmV0
dXJuICJ0ZW1wb3JhcnkiOworICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiAidW5rbm93biI7
CisgICAgfQorfQorCit0eXBlZGVmIFdlYkNvcmU6OkJhY2tQdHI8V2ViQ29yZTo6SW5zcGVjdG9y
RmlsZVN5c3RlbUFnZW50PiBBZ2VudFByb3ZpZGVyOwordHlwZWRlZiBXZWJDb3JlOjpCYWNrUHRy
PFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kOjpGaWxlU3lzdGVtPiBGcm9udGVuZFByb3ZpZGVy
OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorUGFzc1JlZlB0cjxXZWJDb3JlOjpCYWNrUHRyPFQ+
ID4gbWFrZUJhY2tQdHIoVCogcHRyKQoreworICAgIHJldHVybiBXZWJDb3JlOjpCYWNrUHRyPFQ+
OjpjcmVhdGUocHRyKTsKK30KKworfSAvLyBhbm9ueW1vdXMgbmFtZXNwYWNlCiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIApAQCAtNTEsMzMgKzgwLDYxIEBAIFBhc3NPd25QdHI8SW5zcGVjdG9yRmls
ZVN5c3RlbUFnZW50PiBJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQ6OmNyZWF0ZShJbnN0cnVtZW50
CiAKIEluc3BlY3RvckZpbGVTeXN0ZW1BZ2VudDo6fkluc3BlY3RvckZpbGVTeXN0ZW1BZ2VudCgp
CiB7CisgICAgaWYgKG1fYWdlbnRQcm92aWRlci5nZXQoKSAmJiBtX2FnZW50UHJvdmlkZXItPmdl
dCgpKQorICAgICAgICBtX2FnZW50UHJvdmlkZXItPmNsZWFyKCk7CisgICAgaWYgKG1fZnJvbnRl
bmRQcm92aWRlci5nZXQoKSAmJiBtX2Zyb250ZW5kUHJvdmlkZXItPmdldCgpKQorICAgICAgICBt
X2Zyb250ZW5kUHJvdmlkZXItPmNsZWFyKCk7CiAgICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLT5z
ZXRJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQoMCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yRmlsZVN5
c3RlbUFnZW50OjpkaWRPcGVuRmlsZVN5c3RlbShQYXNzUmVmUHRyPERPTUZpbGVTeXN0ZW0+IGZp
bGVTeXN0ZW0pCitQYXNzUmVmUHRyPEJhY2tQdHI8SW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50PiA+
IEluc3BlY3RvckZpbGVTeXN0ZW1BZ2VudDo6ZGlkT3BlbkZpbGVTeXN0ZW0oUGFzc1JlZlB0cjxE
T01GaWxlU3lzdGVtPiBmaWxlU3lzdGVtKQogewotICAgIC8vIFRPRE8odHppayk6Ci0gICAgLy8g
U3RvcmUgZmlsZVN5c3RlbSBhbmQgbm90aWZ5IHRoZSBmcm9udGVuZCB1c2luZyBmaWxlU3lzdGVt
QWRkZWQgZXZlbnQuCi0gICAgLy8gZmlsZVN5c3RlbSBzaG91bGQgYmUgYXNzb2NpYXRlZCB3aXRo
IGl0cyBuYW1lLgorICAgIERPTUZpbGVTeXN0ZW0qIGZpbGVTeXN0ZW1QdHIgPSBmaWxlU3lzdGVt
LmdldCgpOworICAgIFN0cmluZyBmaWxlU3lzdGVtTmFtZSA9IGZpbGVTeXN0ZW0tPm5hbWUoKTsK
KyAgICBOYW1lZEZpbGVTeXN0ZW1zOjppdGVyYXRvciBpdHIgPSBtX2ZpbGVTeXN0ZW1zLmFkZChm
aWxlU3lzdGVtLT5uYW1lKCksIEZpbGVTeXN0ZW1zKCkpLmZpcnN0OworICAgIGl0ci0+c2Vjb25k
LmFkZChmaWxlU3lzdGVtKTsKKworICAgIGlmIChnZXRGcm9udGVuZCgpICYmIG1fZW5hYmxlZCkg
eworICAgICAgICBnZXRGcm9udGVuZCgpLT5maWxlU3lzdGVtQWRkZWQoCisgICAgICAgICAgICBm
aWxlU3lzdGVtTmFtZSwKKyAgICAgICAgICAgIGZpbGVTeXN0ZW1QdHItPnNlY3VyaXR5T3JpZ2lu
KCktPnRvU3RyaW5nKCksCisgICAgICAgICAgICB0eXBlVG9TdHJpbmcoZmlsZVN5c3RlbVB0ci0+
YXN5bmNGaWxlU3lzdGVtKCktPnR5cGUoKSkpOworICAgIH0KKyAgICByZXR1cm4gbV9hZ2VudFBy
b3ZpZGVyOwogfQogCiB2b2lkIEluc3BlY3RvckZpbGVTeXN0ZW1BZ2VudDo6ZmlsZVN5c3RlbUlu
dmFsaWRhdGVkKFBhc3NSZWZQdHI8RE9NRmlsZVN5c3RlbT4gZmlsZVN5c3RlbSkKIHsKLSAgICAv
LyBUT0RPKHR6aWspOgotICAgIC8vIERpc2NhcmQgZmlsZVN5c3RlbSBpZiB3ZSBoYXZlLgotICAg
IC8vIElmIHRoZXJlIGlzIG5vIG90aGVyIGZpbGVTeXN0ZW0gd2hvIGhhcyBzYW1lIG5hbWUgd2l0
aCBmaWxlU3lzdGVtLAotICAgIC8vIG5vdGlmeSB0aGUgZnJvbnRlbmQgdXNpbmcgZmlsZVN5c3Rl
bUludmFsaWRhdGVkIGV2ZW50LgorICAgIFN0cmluZyBuYW1lID0gZmlsZVN5c3RlbS0+bmFtZSgp
OworICAgIE5hbWVkRmlsZVN5c3RlbXM6Oml0ZXJhdG9yIGl0ciA9IG1fZmlsZVN5c3RlbXMuZmlu
ZChuYW1lKTsKKyAgICBpZiAoaXRyID09IG1fZmlsZVN5c3RlbXMuZW5kKCkpCisgICAgICAgIHJl
dHVybjsKKyAgICBpdHItPnNlY29uZC5yZW1vdmUoZmlsZVN5c3RlbSk7CisgICAgaWYgKGl0ci0+
c2Vjb25kLmlzRW1wdHkoKSkgeworICAgICAgICBtX2ZpbGVTeXN0ZW1zLnJlbW92ZShpdHIpOwor
ICAgICAgICBpZiAoZ2V0RnJvbnRlbmQoKSAmJiBtX2VuYWJsZWQpCisgICAgICAgICAgICBnZXRG
cm9udGVuZCgpLT5maWxlU3lzdGVtSW52YWxpZGF0ZWQobmFtZSk7CisgICAgfQogfQogCiB2b2lk
IEluc3BlY3RvckZpbGVTeXN0ZW1BZ2VudDo6ZW5hYmxlKEVycm9yU3RyaW5nKikKIHsKKyAgICBp
ZiAoSW5zcGVjdG9yRnJvbnRlbmQ6OkZpbGVTeXN0ZW0qIGZyb250ZW5kID0gZ2V0RnJvbnRlbmQo
KSkgeworICAgICAgICBmb3IgKE5hbWVkRmlsZVN5c3RlbXM6Oml0ZXJhdG9yIGl0ciA9IG1fZmls
ZVN5c3RlbXMuYmVnaW4oKTsKKyAgICAgICAgICAgICBpdHIgIT0gbV9maWxlU3lzdGVtcy5lbmQo
KTsgKytpdHIpIHsKKyAgICAgICAgICAgIEFTU0VSVCghaXRyLT5zZWNvbmQuaXNFbXB0eSgpKTsK
KyAgICAgICAgICAgIERPTUZpbGVTeXN0ZW0qIGZpbGVTeXN0ZW0gPSBpdHItPnNlY29uZC5iZWdp
bigpLT5nZXQoKTsKKyAgICAgICAgICAgIGZyb250ZW5kLT5maWxlU3lzdGVtQWRkZWQoCisgICAg
ICAgICAgICAgICAgZmlsZVN5c3RlbS0+bmFtZSgpLAorICAgICAgICAgICAgICAgIGZpbGVTeXN0
ZW0tPnNlY3VyaXR5T3JpZ2luKCktPnRvU3RyaW5nKCksCisgICAgICAgICAgICAgICAgdHlwZVRv
U3RyaW5nKGZpbGVTeXN0ZW0tPmFzeW5jRmlsZVN5c3RlbSgpLT50eXBlKCkpKTsKKyAgICAgICAg
fQorICAgIH0KKwogICAgIGlmIChtX2VuYWJsZWQpCiAgICAgICAgIHJldHVybjsKICAgICBtX2Vu
YWJsZWQgPSB0cnVlOwogICAgIG1fc3RhdGUtPnNldEJvb2xlYW4oRmlsZVN5c3RlbUFnZW50U3Rh
dGU6OmZpbGVTeXN0ZW1BZ2VudEVuYWJsZWQsIG1fZW5hYmxlZCk7Ci0KLSAgICAvLyBUT0RPKHR6
aWspOgotICAgIC8vIFBhc3MgYWxsIGF2YWlsYWJsZSBGaWxlU3lzdGVtIHRvIHRoZSBmcm9udGVu
ZCwgdXNpbmcgZmlsZVN5c3RlbUFkZGVkIGV2ZW50LgogfQogCiB2b2lkIEluc3BlY3RvckZpbGVT
eXN0ZW1BZ2VudDo6ZGlzYWJsZShFcnJvclN0cmluZyopCkBAIC05MSwxMiArMTQ4LDE2IEBAIHZv
aWQgSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50OjpkaXNhYmxlKEVycm9yU3RyaW5nKikKIHZvaWQg
SW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50OjpzZXRGcm9udGVuZChJbnNwZWN0b3JGcm9udGVuZCog
ZnJvbnRlbmQpCiB7CiAgICAgQVNTRVJUKGZyb250ZW5kKTsKLSAgICBtX2Zyb250ZW5kID0gZnJv
bnRlbmQtPmZpbGVzeXN0ZW0oKTsKKyAgICBpZiAobV9mcm9udGVuZFByb3ZpZGVyLmdldCgpKQor
ICAgICAgICBtX2Zyb250ZW5kUHJvdmlkZXItPmNsZWFyKCk7CisgICAgbV9mcm9udGVuZFByb3Zp
ZGVyID0gbWFrZUJhY2tQdHIoZnJvbnRlbmQtPmZpbGVzeXN0ZW0oKSk7CiB9CiAKIHZvaWQgSW5z
cGVjdG9yRmlsZVN5c3RlbUFnZW50OjpjbGVhckZyb250ZW5kKCkKIHsKLSAgICBtX2Zyb250ZW5k
ID0gMDsKKyAgICBpZiAobV9mcm9udGVuZFByb3ZpZGVyLmdldCgpKQorICAgICAgICBtX2Zyb250
ZW5kUHJvdmlkZXItPmNsZWFyKCk7CisgICAgbV9mcm9udGVuZFByb3ZpZGVyID0gMDsKICAgICBt
X2VuYWJsZWQgPSBmYWxzZTsKICAgICBtX3N0YXRlLT5zZXRCb29sZWFuKEZpbGVTeXN0ZW1BZ2Vu
dFN0YXRlOjpmaWxlU3lzdGVtQWdlbnRFbmFibGVkLCBtX2VuYWJsZWQpOwogfQpAQCAtMTA2LDkg
KzE2NywxNiBAQCB2b2lkIEluc3BlY3RvckZpbGVTeXN0ZW1BZ2VudDo6cmVzdG9yZSgpCiAgICAg
bV9lbmFibGVkID0gbV9zdGF0ZS0+Z2V0Qm9vbGVhbihGaWxlU3lzdGVtQWdlbnRTdGF0ZTo6Zmls
ZVN5c3RlbUFnZW50RW5hYmxlZCk7CiB9CiAKK0RPTUZpbGVTeXN0ZW0qIEluc3BlY3RvckZpbGVT
eXN0ZW1BZ2VudDo6Z2V0RmlsZVN5c3RlbShjb25zdCBTdHJpbmcmIGZpbGVTeXN0ZW1OYW1lKQor
eworICAgIE5hbWVkRmlsZVN5c3RlbXM6Oml0ZXJhdG9yIGl0ciA9IG1fZmlsZVN5c3RlbXMuZmlu
ZChmaWxlU3lzdGVtTmFtZSk7CisgICAgcmV0dXJuIGl0ciAhPSBtX2ZpbGVTeXN0ZW1zLmVuZCgp
ID8gaXRyLT5zZWNvbmQuYmVnaW4oKS0+Z2V0KCkgOiAwOworfQorCiBJbnNwZWN0b3JGaWxlU3lz
dGVtQWdlbnQ6Okluc3BlY3RvckZpbGVTeXN0ZW1BZ2VudChJbnN0cnVtZW50aW5nQWdlbnRzKiBp
bnN0cnVtZW50aW5nQWdlbnRzLCBJbnNwZWN0b3JTdGF0ZSogc3RhdGUpCiAgICAgOiBJbnNwZWN0
b3JCYXNlQWdlbnQoaW5zdHJ1bWVudGluZ0FnZW50cywgc3RhdGUpLAotICAgICAgbV9mcm9udGVu
ZCgwKSwKKyAgICAgIG1fYWdlbnRQcm92aWRlcihtYWtlQmFja1B0cih0aGlzKSksCisgICAgICBt
X2Zyb250ZW5kUHJvdmlkZXIoMCksCiAgICAgICBtX2VuYWJsZWQoZmFsc2UpCiB7CiAgICAgQVNT
RVJUKGluc3RydW1lbnRpbmdBZ2VudHMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckZpbGVTeXN0ZW1BZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckZpbGVTeXN0ZW1BZ2VudC5oCmluZGV4IGVmYTU1ODNlMGY1YWVlYTIzN2Iy
ZDJkOGYwODRiNjQ5MTRiZDQ0OTYuLmI4MDVlZDg0Njk3ZTA1MWFkOTM5MTI1MDUyNzVjNjY3MDgz
Y2VlOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGaWxl
U3lzdGVtQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRmls
ZVN5c3RlbUFnZW50LmgKQEAgLTM2LDIxICszNiwzNyBAQAogI2luY2x1ZGUgIkluc3BlY3RvckJh
c2VBZ2VudC5oIgogI2luY2x1ZGUgIkluc3BlY3RvckZyb250ZW5kLmgiCiAKKyNpbmNsdWRlIDx3
dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1Bh
c3NPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9S
ZWZDb3VudGVkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIERPTUZpbGVTeXN0ZW07
CitjbGFzcyBJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQ7CiBjbGFzcyBJbnNwZWN0b3JGcm9udGVu
ZDsKIGNsYXNzIEluc3BlY3RvclN0YXRlOwogY2xhc3MgSW5zdHJ1bWVudGluZ0FnZW50czsKIAor
dGVtcGxhdGU8dHlwZW5hbWUgVD4KK2NsYXNzIEJhY2tQdHIgOiBwdWJsaWMgUmVmQ291bnRlZDxC
YWNrUHRyPFQ+ID4geworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEJhY2tQdHI8VD4pOworcHVi
bGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPEJhY2tQdHI8VD4gPiBjcmVhdGUoVCogcHRyKSB7
cmV0dXJuIGFkb3B0UmVmKG5ldyBCYWNrUHRyKHB0cikpO30KKyAgICBUKiBnZXQoKSBjb25zdCB7
cmV0dXJuIG1fcHRyO30KKyAgICB2b2lkIGNsZWFyKCkge21fcHRyID0gMDt9Citwcml2YXRlOgor
ICAgIGV4cGxpY2l0IEJhY2tQdHIoVCogcHRyKSA6IG1fcHRyKHB0cikgeyB9CisgICAgVCogbV9w
dHI7Cit9OworCiBjbGFzcyBJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQgOiBwdWJsaWMgSW5zcGVj
dG9yQmFzZUFnZW50IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc093blB0cjxJbnNwZWN0b3JG
aWxlU3lzdGVtQWdlbnQ+IGNyZWF0ZShJbnN0cnVtZW50aW5nQWdlbnRzKiwgSW5zcGVjdG9yU3Rh
dGUqKTsKICAgICB2aXJ0dWFsIH5JbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQoKTsKIAotICAgIHZv
aWQgZGlkT3BlbkZpbGVTeXN0ZW0oUGFzc1JlZlB0cjxET01GaWxlU3lzdGVtPik7CisgICAgUGFz
c1JlZlB0cjxCYWNrUHRyPEluc3BlY3RvckZpbGVTeXN0ZW1BZ2VudD4gPiBkaWRPcGVuRmlsZVN5
c3RlbShQYXNzUmVmUHRyPERPTUZpbGVTeXN0ZW0+KTsKICAgICB2b2lkIGZpbGVTeXN0ZW1JbnZh
bGlkYXRlZChQYXNzUmVmUHRyPERPTUZpbGVTeXN0ZW0+KTsKIAogICAgIHZvaWQgZW5hYmxlKEVy
cm9yU3RyaW5nKik7CkBAIC01OSwxMCArNzUsMjMgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9p
ZCBzZXRGcm9udGVuZChJbnNwZWN0b3JGcm9udGVuZCopOwogICAgIHZpcnR1YWwgdm9pZCBjbGVh
ckZyb250ZW5kKCk7CiAgICAgdmlydHVhbCB2b2lkIHJlc3RvcmUoKTsKKworICAgIERPTUZpbGVT
eXN0ZW0qIGdldEZpbGVTeXN0ZW0oY29uc3QgU3RyaW5nJiBmaWxlU3lzdGVtTmFtZSk7CisKKyAg
ICBJbnNwZWN0b3JGcm9udGVuZDo6RmlsZVN5c3RlbSogZ2V0RnJvbnRlbmQoKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIG1fZnJvbnRlbmRQcm92aWRlci5nZXQoKSA/IG1fZnJvbnRlbmRQcm92aWRl
ci0+Z2V0KCkgOiAwOworICAgIH0KKwogcHJpdmF0ZToKICAgICBJbnNwZWN0b3JGaWxlU3lzdGVt
QWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyosIEluc3BlY3RvclN0YXRlKik7CiAKLSAgICBJbnNw
ZWN0b3JGcm9udGVuZDo6RmlsZVN5c3RlbSogbV9mcm9udGVuZDsKKyAgICB0eXBlZGVmIEhhc2hT
ZXQ8UmVmUHRyPERPTUZpbGVTeXN0ZW0+ID4gRmlsZVN5c3RlbXM7CisgICAgdHlwZWRlZiBIYXNo
TWFwPFN0cmluZywgRmlsZVN5c3RlbXM+IE5hbWVkRmlsZVN5c3RlbXM7CisgICAgTmFtZWRGaWxl
U3lzdGVtcyBtX2ZpbGVTeXN0ZW1zOworCisgICAgUmVmUHRyPEJhY2tQdHI8SW5zcGVjdG9yRmls
ZVN5c3RlbUFnZW50PiA+IG1fYWdlbnRQcm92aWRlcjsKKyAgICBSZWZQdHI8QmFja1B0cjxJbnNw
ZWN0b3JGcm9udGVuZDo6RmlsZVN5c3RlbT4gPiBtX2Zyb250ZW5kUHJvdmlkZXI7CiAgICAgYm9v
bCBtX2VuYWJsZWQ7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yRmlsZVN5c3RlbUluc3RydW1lbnRhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckZpbGVTeXN0ZW1JbnN0cnVtZW50YXRpb24uaAppbmRleCA3Mzg3YWNi
YWNhMTU1NTMxOGI4ODk0M2ZkMTliOGY2MzkyYTEwMWFiLi5kYTQ5ZWNkYjBmNGI4YjI2OGQ0OGJk
YjhhZWU1MmZmNjY0MTJmMTFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yRmlsZVN5c3RlbUluc3RydW1lbnRhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JGaWxlU3lzdGVtSW5zdHJ1bWVudGF0aW9uLmgKQEAgLTM4LDEy
ICszOCwxMyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiAjaWYgRU5BQkxFKEZJTEVfU1lTVEVN
KQotaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRPcGVuRmlsZVN5c3Rl
bShQYXNzUmVmUHRyPERPTUZpbGVTeXN0ZW0+IGZpbGVTeXN0ZW0pCitpbmxpbmUgUGFzc1JlZlB0
cjxCYWNrUHRyPEluc3BlY3RvckZpbGVTeXN0ZW1BZ2VudD4gPiBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OmRpZE9wZW5GaWxlU3lzdGVtKFBhc3NSZWZQdHI8RE9NRmlsZVN5c3RlbT4gZmlsZVN5
c3RlbSkKIHsKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogICAgIGlmIChJbnN0cnVtZW50aW5nQWdl
bnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzID0gaW5zdHJ1bWVudGluZ0FnZW50c0ZvckNvbnRleHQo
ZmlsZVN5c3RlbS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKSkKLSAgICAgICAgZGlkT3BlbkZp
bGVTeXN0ZW1JbXBsKGluc3RydW1lbnRpbmdBZ2VudHMsIGZpbGVTeXN0ZW0pOworICAgICAgICBy
ZXR1cm4gZGlkT3BlbkZpbGVTeXN0ZW1JbXBsKGluc3RydW1lbnRpbmdBZ2VudHMsIGZpbGVTeXN0
ZW0pOwogI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNUT1IpCisgICAgcmV0dXJuIDA7CiB9CiAjZW5k
aWYgLy8gRU5BQkxFKEZJTEVfU1lTVEVNKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCmluZGV4IGUzZTU4NjlmNjg4YTFi
NDdmZGRjZjBiZGM2YmYxODMwNTJmOWQ4YmUuLjk0ZmYwMjRlMjkyNmQ2MjhmMzVmZDIwMzg2MTdj
MzU0ODkxZWY2MjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JJbnN0cnVtZW50YXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCkBAIC03NzEsMTAgKzc3MSwxMSBAQCB2b2lkIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkT3BlbkRhdGFiYXNlSW1wbChJbnN0cnVtZW50aW5nQWdl
bnRzKiBpbnN0cnVtZQogI2VuZGlmCiAKICNpZiBFTkFCTEUoRklMRV9TWVNURU0pCi12b2lkIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkT3BlbkZpbGVTeXN0ZW1JbXBsKEluc3RydW1lbnRp
bmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIFBhc3NSZWZQdHI8RE9NRmlsZVN5c3RlbT4g
ZmlsZVN5c3RlbSkKK1Bhc3NSZWZQdHI8QmFja1B0cjxJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQ+
ID4gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRPcGVuRmlsZVN5c3RlbUltcGwoSW5zdHJ1
bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgUGFzc1JlZlB0cjxET01GaWxlU3lz
dGVtPiBmaWxlU3lzdGVtKQogewogICAgIGlmIChJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQqIGZp
bGVTeXN0ZW1BZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMtPmluc3BlY3RvckZpbGVTeXN0ZW1B
Z2VudCgpKQotICAgICAgICBmaWxlU3lzdGVtQWdlbnQtPmRpZE9wZW5GaWxlU3lzdGVtKGZpbGVT
eXN0ZW0pOworICAgICAgICByZXR1cm4gZmlsZVN5c3RlbUFnZW50LT5kaWRPcGVuRmlsZVN5c3Rl
bShmaWxlU3lzdGVtKTsKKyAgICByZXR1cm4gMDsKIH0KICNlbmRpZiAvLyBFTkFCTEUoRklMRV9T
WVNURU0pCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0
cnVtZW50YXRpb24uaAppbmRleCBkOTY2Yjc1YTBiY2Y2YzAxMGYyOTgzZDEyMDMzYzRjZDA3MGE0
NWE0Li5jYzIyODlhZTc0MDM4OWJhODhmNmZlOTQ1MzJiZThlNmI0NGJlY2VkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oCkBA
IC01MCw2ICs1MCw3IEBAIGNsYXNzIEVsZW1lbnQ7CiBjbGFzcyBFdmVudENvbnRleHQ7CiBjbGFz
cyBEb2N1bWVudExvYWRlcjsKIGNsYXNzIEhpdFRlc3RSZXN1bHQ7CitjbGFzcyBJbnNwZWN0b3JG
aWxlU3lzdGVtQWdlbnQ7CiBjbGFzcyBJbnNwZWN0b3JUaW1lbGluZUFnZW50OwogY2xhc3MgSW5z
dHJ1bWVudGluZ0FnZW50czsKIGNsYXNzIEtVUkw7CkBAIC02NCw2ICs2NSw3IEBAIGNsYXNzIFN0
b3JhZ2VBcmVhOwogY2xhc3MgV29ya2VyQ29udGV4dDsKIGNsYXNzIFdvcmtlckNvbnRleHRQcm94
eTsKIGNsYXNzIFhNTEh0dHBSZXF1ZXN0OwordGVtcGxhdGU8dHlwZW5hbWU+IGNsYXNzIEJhY2tQ
dHI7CiAKICNpZiBFTkFCTEUoV0VCX1NPQ0tFVFMpCiBjbGFzcyBXZWJTb2NrZXRIYW5kc2hha2VS
ZXF1ZXN0OwpAQCAtMTc4LDcgKzE4MCw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiAjaWYgRU5BQkxF
KEZJTEVfU1lTVEVNKQotICAgIHN0YXRpYyB2b2lkIGRpZE9wZW5GaWxlU3lzdGVtKFBhc3NSZWZQ
dHI8RE9NRmlsZVN5c3RlbT4pOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPEJhY2tQdHI8SW5zcGVj
dG9yRmlsZVN5c3RlbUFnZW50PiA+IGRpZE9wZW5GaWxlU3lzdGVtKFBhc3NSZWZQdHI8RE9NRmls
ZVN5c3RlbT4pOwogI2VuZGlmCiAKICAgICBzdGF0aWMgdm9pZCBkaWRVc2VET01TdG9yYWdlKFBh
Z2UqLCBTdG9yYWdlQXJlYSosIGJvb2wgaXNMb2NhbFN0b3JhZ2UsIEZyYW1lKik7CkBAIC0zMTQs
NyArMzE2LDcgQEAgcHJpdmF0ZToKICNlbmRpZgogCiAjaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQot
ICAgIHN0YXRpYyB2b2lkIGRpZE9wZW5GaWxlU3lzdGVtSW1wbChJbnN0cnVtZW50aW5nQWdlbnRz
KiwgUGFzc1JlZlB0cjxET01GaWxlU3lzdGVtPik7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8QmFj
a1B0cjxJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQ+ID4gZGlkT3BlbkZpbGVTeXN0ZW1JbXBsKElu
c3RydW1lbnRpbmdBZ2VudHMqLCBQYXNzUmVmUHRyPERPTUZpbGVTeXN0ZW0+KTsKICNlbmRpZgog
CiAgICAgc3RhdGljIHZvaWQgZGlkVXNlRE9NU3RvcmFnZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50
cyosIFN0b3JhZ2VBcmVhKiwgYm9vbCBpc0xvY2FsU3RvcmFnZSwgRnJhbWUqKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9jb21waWxlLWZyb250LWVuZC5zaCBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9jb21waWxlLWZyb250LWVuZC5zaAppbmRleCA4YTEzNTZlODhi
ODc0ZTU1M2M0N2ZjMDY5NWZkMjIwYzU5MTQ1ODk0Li5hNTU3YzY3ZWNmZDE2Y2IwZDM1N2Y1MWRi
YWE4ODZhMjNhYjVkNmYyIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvY29t
cGlsZS1mcm9udC1lbmQuc2gKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2NvbXBpbGUt
ZnJvbnQtZW5kLnNoCkBAIC02MCw2ICs2MCw3IEBAIGphdmEgLWphciB+L2Nsb3N1cmUvY29tcGls
ZXIuamFyIC0tc3VtbWFyeV9kZXRhaWxfbGV2ZWwgMyAtLWNvbXBpbGF0aW9uX2xldmVsIFNJCiAg
ICAgICAgIC0tanMgU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9ET01TdG9yYWdl
LmpzIFwKICAgICAgICAgLS1qcyBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0Rl
YnVnZ2VyTW9kZWwuanMgXAogICAgICAgICAtLWpzIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5qcyBcCisgICAgICAgIC0tanMgU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9GaWxlU3lzdGVtLmpzIFwKICAgICAgICAg
LS1qcyBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0hBUkVudHJ5LmpzIFwKICAg
ICAgICAgLS1qcyBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL05ldHdvcmtMb2cu
anMgXAogICAgICAgICAtLWpzIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2Ny
aXB0LmpzIFwKQEAgLTE0OCw2ICsxNDksNyBAQCBqYXZhIC1qYXIgfi9jbG9zdXJlL2NvbXBpbGVy
LmphciAtLXN1bW1hcnlfZGV0YWlsX2xldmVsIDMgLS1jb21waWxhdGlvbl9sZXZlbCBTSQogICAg
ICAgICAtLWpzIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRGF0YWJhc2VRdWVy
eVZpZXcuanMgXAogICAgICAgICAtLWpzIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvRGF0YWJhc2VUYWJsZVZpZXcuanMgXAogICAgICAgICAtLWpzIFNvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvRE9NU3RvcmFnZUl0ZW1zVmlldy5qcyBcCisgICAgICAgIC0tanMg
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9GaWxlU3lzdGVtVmlldy5qcyBcCiAg
ICAgICAgIC0tanMgU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZXNQ
YW5lbC5qcyBcCiAgICAgLS1tb2R1bGUganNtb2R1bGVfc2NyaXB0czo4OmpzbW9kdWxlX2NvbXBv
bmVudHMgXAogICAgICAgICAtLWpzIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
Q2FsbFN0YWNrU2lkZWJhclBhbmUuanMgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9FbXB0eVZpZXcuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL0VtcHR5Vmlldy5qcwppbmRleCAxZDQ0YzhhYzQwYmM4MzU0NmIwNmRkYTVjNTBh
NTJhNThlZjU5YTUyLi4zYTRhMjFhMzA5MGZhYTE2MDNiNzQ3NTZhNjdlYzcyYzA5NTdiMTA0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0VtcHR5Vmlldy5q
cworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0VtcHR5Vmlldy5qcwpA
QCAtNDEsNyArNDEsNyBAQCBXZWJJbnNwZWN0b3IuRW1wdHlWaWV3ID0gZnVuY3Rpb24odGV4dCkK
IFdlYkluc3BlY3Rvci5FbXB0eVZpZXcucHJvdG90eXBlID0gewogICAgIHdhc1Nob3duOiBmdW5j
dGlvbigpCiAgICAgewotICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NOYW1lID0gInN0b3JhZ2Ut
ZW1wdHktdmlldyI7CisgICAgICAgIHRoaXMuZWxlbWVudC5hZGRTdHlsZUNsYXNzKCJzdG9yYWdl
LWVtcHR5LXZpZXciKTsKICAgICAgICAgdGhpcy5lbGVtZW50LnRleHRDb250ZW50ID0gdGhpcy5f
dGV4dDsKICAgICB9LAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL0ZpbGVTeXN0ZW0uanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L0ZpbGVTeXN0ZW0uanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODg1NGNiZjlhZjJjNTZhNTdhOWJmODM0Mjg4ZDdm
MWViNGY3YWMwMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvRmlsZVN5c3RlbS5qcwpAQCAtMCwwICsxLDQ3IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4K
KyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBv
ZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
CisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworV2ViSW5zcGVjdG9yLkZpbGVT
eXN0ZW1EaXNwYXRjaGVyID0gZnVuY3Rpb24oKQoreworfTsKKworV2ViSW5zcGVjdG9yLkZpbGVT
eXN0ZW1EaXNwYXRjaGVyLnByb3RvdHlwZSA9IHsKKyAgICBmaWxlU3lzdGVtQWRkZWQ6IGZ1bmN0
aW9uKG5hbWUsIG9yaWdpbiwgdHlwZSkKKyAgICB7CisgICAgICAgIFdlYkluc3BlY3Rvci5wYW5l
bHMucmVzb3VyY2VzLmFkZEZpbGVTeXN0ZW0obmFtZSwgb3JpZ2luLCB0eXBlKTsKKyAgICB9LAor
CisgICAgZmlsZVN5c3RlbUludmFsaWRhdGVkOiBmdW5jdGlvbihuYW1lKQorICAgIHsKKyAgICAg
ICAgV2ViSW5zcGVjdG9yLnBhbmVscy5yZXNvdXJjZXMuaW52YWxpZGF0ZUZpbGVTeXN0ZW0obmFt
ZSk7CisgICAgfQorfTsKKworSW5zcGVjdG9yQmFja2VuZC5yZWdpc3RlckZpbGVTeXN0ZW1EaXNw
YXRjaGVyKG5ldyBXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbURpc3BhdGNoZXIoKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0ZpbGVTeXN0ZW1WaWV3Lmpz
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9GaWxlU3lzdGVtVmlldy5qcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5iZDQ2NzUzYmNhNjBiMzM4MDVkNjhmNzYyYmU2NGU0ZjgxZGZmOWUxCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9GaWxlU3lz
dGVtVmlldy5qcwpAQCAtMCwwICsxLDQ1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUK
KyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5l
aXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworLyoqCisgKiBAY29uc3RydWN0b3IKKyAqIEBleHRl
bmRzIHtXZWJJbnNwZWN0b3IuVmlld30KKyAqLworV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1WaWV3
ID0gZnVuY3Rpb24oZmlsZVN5c3RlbU5hbWUpCit7CisgICAgV2ViSW5zcGVjdG9yLkVtcHR5Vmll
dy5jYWxsKHRoaXMsIGZpbGVTeXN0ZW1OYW1lKTsKKyAgICB0aGlzLmVsZW1lbnQuYWRkU3R5bGVD
bGFzcygic3RvcmFnZS12aWV3Iik7CisgICAgdGhpcy5lbGVtZW50LmFkZFN0eWxlQ2xhc3MoImZp
bGVzeXN0ZW0tdmlldyIpOworfTsKKworV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1WaWV3LnByb3Rv
dHlwZSA9IHsKK307CisKK1dlYkluc3BlY3Rvci5GaWxlU3lzdGVtVmlldy5wcm90b3R5cGUuX19w
cm90b19fID0gV2ViSW5zcGVjdG9yLkVtcHR5Vmlldy5wcm90b3R5cGU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0ltYWdlcy9maWxlU3lzdGVtLnBuZyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSW1hZ2VzL2ZpbGVTeXN0ZW0ucG5n
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjFkYjEyMjE1OTI2ZTcxYzQzY2E3OWEyZTc4Yjk0NDc4ZDJjMWY4MjkKR0lU
IGJpbmFyeSBwYXRjaApsaXRlcmFsIDQ0OQp6Y21WO3kwWTNoVFApPGg7M0t8TGswMDBlMU5KTFRx
MDAwbUcwMDBtTzFeQHM2QU1eaVYwMDAwMWI1Y2hfMEl0cCkKej0+UHgjMjRZSmBMOyhLKXt7YTc+
eXtENF4wMDBTYU5MaDBMMDFGY1UwMUZjVjBHZ1pfMDAwMDdiVipHYDJpcHIwCnoxdjRIb0xVUW97
MDBCV3NMX3QoSSVjWVkpT0c3YWYjZVhTSjFVb3I2eTE5dnlpKDN+NXprKkJZKUgqbWdJSmxNMAp6
YihlSWlBYyhrJFUhYzF+S0BpKiYzTFR0RVpSelZ2P3NkcCh0SXxJSUchUFEqJXtrfWhCb34kKDJC
MSk/bD5ze14KelV1aVh+alZ5dkZVRzIlKUYjITJ8OSlRUV43dyljWkVSYWNIM1orX2tZamVZe0A5
WTV9I3NEeXE5RyYoOXk+NGRfCnp3JGZAPTh4ZGZPciQ/Wm0wSURJYXAhP2ZRTCNvciU+KVYqaWBu
Z3JyZWlSTlVQN0RmJjhibT1QPzdmMVE1YzNpVQp6cDFTY2o0K05ZTGZHT0IzNDR1S0hJaUpTbm55
OUtJZXhoTytJJWRGQlNycCNtTUZkX01keElBa0I7WWl5TkkrNSMKemBsRjB6Nmo4PHdgcEhhSENs
ZVVOS20zREcwZ1BNIz0lPjQ4ZmRPKk1lJnE8QHpUSVBHYj93KW5CcCFZdHNJK2V7CnI+fGQzTzJm
TVJvUXF7d01iKXFyWCVVWncoRGlYQnBYNkxJVTAwMDAwTmt2WFh1MG1qZkxHYGk4CgpsaXRlcmFs
IDAKSGNtVj9kMDAwMDEKCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL1Jlc291cmNlc1BhbmVsLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9SZXNvdXJjZXNQYW5lbC5qcwppbmRleCA1MjQ1MDg1ZDg0NjFjNzhjODA4YjI4ZDc4NmFk
ZWM3OTE3ZGJhYTJmLi4xM2VhMmQxY2ZlMWM0NGFmMmZmNmU1NmMwZDQ5OWEyNmRmYThmNjNhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlc1Bh
bmVsLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2Vz
UGFuZWwuanMKQEAgLTY0LDYgKzY0LDExIEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZXNQYW5lbCA9
IGZ1bmN0aW9uKGRhdGFiYXNlKQogICAgIHRoaXMuYXBwbGljYXRpb25DYWNoZUxpc3RUcmVlRWxl
bWVudCA9IG5ldyBXZWJJbnNwZWN0b3IuU3RvcmFnZUNhdGVnb3J5VHJlZUVsZW1lbnQodGhpcywg
V2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJBcHBsaWNhdGlvbiBDYWNoZSIpLCAiQXBwbGljYXRpb25D
YWNoZSIsIFsiYXBwbGljYXRpb24tY2FjaGUtc3RvcmFnZS10cmVlLWl0ZW0iXSk7CiAgICAgdGhp
cy5zaWRlYmFyVHJlZS5hcHBlbmRDaGlsZCh0aGlzLmFwcGxpY2F0aW9uQ2FjaGVMaXN0VHJlZUVs
ZW1lbnQpOwogCisgICAgaWYgKFByZWZlcmVuY2VzLmZpbGVTeXN0ZW1FbmFibGVkKSB7CisgICAg
ICAgIHRoaXMuZmlsZVN5c3RlbUxpc3RUcmVlRWxlbWVudCA9IG5ldyBXZWJJbnNwZWN0b3IuU3Rv
cmFnZUNhdGVnb3J5VHJlZUVsZW1lbnQodGhpcywgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJGaWxl
U3lzdGVtIiksICJGaWxlU3lzdGVtIiwgWyJmaWxlc3lzdGVtLXN0b3JhZ2UtdHJlZS1pdGVtIiwg
ImZpbGVzeXN0ZW0iXSk7CisgICAgICAgIHRoaXMuc2lkZWJhclRyZWUuYXBwZW5kQ2hpbGQodGhp
cy5maWxlU3lzdGVtTGlzdFRyZWVFbGVtZW50KTsKKyAgICB9CisKICAgICB0aGlzLnN0b3JhZ2VW
aWV3cyA9IHRoaXMuc3BsaXRWaWV3Lm1haW5FbGVtZW50OwogICAgIHRoaXMuc3RvcmFnZVZpZXdz
LmFkZFN0eWxlQ2xhc3MoImRpZmYtY29udGFpbmVyIik7CiAKQEAgLTc1LDYgKzgwLDggQEAgV2Vi
SW5zcGVjdG9yLlJlc291cmNlc1BhbmVsID0gZnVuY3Rpb24oZGF0YWJhc2UpCiAgICAgdGhpcy5f
Y29va2llVmlld3MgPSB7fTsKICAgICB0aGlzLl9vcmlnaW5zID0ge307CiAgICAgdGhpcy5fZG9t
YWlucyA9IHt9OworICAgIHRoaXMuX2ZpbGVTeXN0ZW1zID0ge307CisgICAgdGhpcy5fZmlsZVN5
c3RlbVZpZXdzID0ge307CiAKICAgICB0aGlzLnNpZGViYXJFbGVtZW50LmFkZEV2ZW50TGlzdGVu
ZXIoIm1vdXNlbW92ZSIsIHRoaXMuX29ubW91c2Vtb3ZlLmJpbmQodGhpcyksIGZhbHNlKTsKICAg
ICB0aGlzLnNpZGViYXJFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlb3V0IiwgdGhpcy5f
b25tb3VzZW91dC5iaW5kKHRoaXMpLCBmYWxzZSk7CkBAIC0xNzEsNyArMTc4LDEyIEBAIFdlYklu
c3BlY3Rvci5SZXNvdXJjZXNQYW5lbC5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgdGhpcy5fY29v
a2llVmlld3MgPSB7fTsKIAorICAgICAgICB0aGlzLl9maWxlU3lzdGVtcyA9IHt9OworICAgICAg
ICB0aGlzLl9maWxlU3lzdGVtVmlld3MgPSB7fTsKKwogICAgICAgICB0aGlzLmRhdGFiYXNlc0xp
c3RUcmVlRWxlbWVudC5yZW1vdmVDaGlsZHJlbigpOworICAgICAgICBpZiAoUHJlZmVyZW5jZXMu
ZmlsZVN5c3RlbUVuYWJsZWQpCisgICAgICAgICAgICB0aGlzLmZpbGVTeXN0ZW1MaXN0VHJlZUVs
ZW1lbnQucmVtb3ZlQ2hpbGRyZW4oKTsKICAgICAgICAgdGhpcy5sb2NhbFN0b3JhZ2VMaXN0VHJl
ZUVsZW1lbnQucmVtb3ZlQ2hpbGRyZW4oKTsKICAgICAgICAgdGhpcy5zZXNzaW9uU3RvcmFnZUxp
c3RUcmVlRWxlbWVudC5yZW1vdmVDaGlsZHJlbigpOwogICAgICAgICB0aGlzLmNvb2tpZUxpc3RU
cmVlRWxlbWVudC5yZW1vdmVDaGlsZHJlbigpOwpAQCAtMzEwLDYgKzMyMiwyOCBAQCBXZWJJbnNw
ZWN0b3IuUmVzb3VyY2VzUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICAgICAgdGhpcy5zZXNz
aW9uU3RvcmFnZUxpc3RUcmVlRWxlbWVudC5hcHBlbmRDaGlsZChkb21TdG9yYWdlVHJlZUVsZW1l
bnQpOwogICAgIH0sCiAKKyAgICBhZGRGaWxlU3lzdGVtOiBmdW5jdGlvbihuYW1lLCBvcmlnaW4s
IHR5cGUpCisgICAgeworICAgICAgICBpZiAodGhpcy5fZmlsZVN5c3RlbXNbbmFtZV0pCisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIHZhciBmaWxlU3lzdGVtVHJlZUVsZW1lbnQgPSBuZXcg
V2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1UcmVlRWxlbWVudCh0aGlzLCBuYW1lLCBvcmlnaW4sIHR5
cGUpOworICAgICAgICB0aGlzLl9maWxlU3lzdGVtc1tuYW1lXSA9IGZpbGVTeXN0ZW1UcmVlRWxl
bWVudDsKKyAgICAgICAgdGhpcy5maWxlU3lzdGVtTGlzdFRyZWVFbGVtZW50LmFwcGVuZENoaWxk
KGZpbGVTeXN0ZW1UcmVlRWxlbWVudCk7CisgICAgfSwKKworICAgIGludmFsaWRhdGVGaWxlU3lz
dGVtOiBmdW5jdGlvbihuYW1lKQorICAgIHsKKyAgICAgICAgaWYgKHRoaXMuX2ZpbGVTeXN0ZW1z
W25hbWVdKSB7CisgICAgICAgICAgICB0aGlzLmZpbGVTeXN0ZW1MaXN0VHJlZUVsZW1lbnQucmVt
b3ZlQ2hpbGQodGhpcy5fZmlsZVN5c3RlbXNbbmFtZV0pOworICAgICAgICAgICAgZGVsZXRlIHRo
aXMuX2ZpbGVTeXN0ZW1zW25hbWVdOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHRoaXMuX2Zp
bGVTeXN0ZW1WaWV3c1tuYW1lXSkgeworICAgICAgICAgICAgdGhpcy5fZmlsZVN5c3RlbVZpZXdz
W25hbWVdLmRldGFjaCgpOworICAgICAgICAgICAgZGVsZXRlIHRoaXMuX2ZpbGVTeXN0ZW1WaWV3
c1tuYW1lXTsKKyAgICAgICAgfQorICAgIH0sCisKICAgICBzZWxlY3REYXRhYmFzZTogZnVuY3Rp
b24oZGF0YWJhc2VJZCkKICAgICB7CiAgICAgICAgIHZhciBkYXRhYmFzZTsKQEAgLTQ5MSw2ICs1
MjUsMTggQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlc1BhbmVsLnByb3RvdHlwZSA9IHsKICAgICAg
ICAgdGhpcy5faW5uZXJTaG93Vmlldyh0aGlzLl9hcHBsaWNhdGlvbkNhY2hlVmlld3NbZnJhbWVJ
ZF0pOwogICAgIH0sCiAKKyAgICBzaG93RmlsZVN5c3RlbTogZnVuY3Rpb24oZmlsZVN5c3RlbU5h
bWUpCisgICAgeworICAgICAgICBpZiAoIWZpbGVTeXN0ZW1OYW1lKQorICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICB2YXIgdmlldyA9IHRoaXMuX2ZpbGVTeXN0ZW1WaWV3c1tmaWxlU3lzdGVt
TmFtZV07CisgICAgICAgIGlmICghdmlldykgeworICAgICAgICAgICAgdmlldyA9IG5ldyBXZWJJ
bnNwZWN0b3IuRmlsZVN5c3RlbVZpZXcoZmlsZVN5c3RlbU5hbWUpOworICAgICAgICAgICAgdGhp
cy5fZmlsZVN5c3RlbVZpZXdzW2ZpbGVTeXN0ZW1OYW1lXSA9IHZpZXc7CisgICAgICAgIH0KKyAg
ICAgICAgdGhpcy5faW5uZXJTaG93Vmlldyh2aWV3KTsKKyAgICB9LAorCiAgICAgc2hvd0NhdGVn
b3J5VmlldzogZnVuY3Rpb24oY2F0ZWdvcnlOYW1lKQogICAgIHsKICAgICAgICAgaWYgKCF0aGlz
Ll9jYXRlZ29yeVZpZXcpCkBAIC0xNjMwLDYgKzE2NzYsMjkgQEAgV2ViSW5zcGVjdG9yLkFwcGxp
Y2F0aW9uQ2FjaGVGcmFtZVRyZWVFbGVtZW50LnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNw
ZWN0b3IKICAqIEBjb25zdHJ1Y3RvcgogICogQGV4dGVuZHMge1dlYkluc3BlY3Rvci5CYXNlU3Rv
cmFnZVRyZWVFbGVtZW50fQogICovCitXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbVRyZWVFbGVtZW50
ID0gZnVuY3Rpb24oc3RvcmFnZVBhbmVsLCBmaWxlU3lzdGVtTmFtZSwgb3JpZ2luLCB0eXBlKQor
eworICAgIFdlYkluc3BlY3Rvci5CYXNlU3RvcmFnZVRyZWVFbGVtZW50LmNhbGwodGhpcywgc3Rv
cmFnZVBhbmVsLCBudWxsLCBvcmlnaW4gKyAnLycgKyB0eXBlLCBbImZpbGVzeXN0ZW0tc3RvcmFn
ZS10cmVlLWl0ZW0iXSk7CisgICAgdGhpcy5fZmlsZVN5c3RlbU5hbWUgPSBmaWxlU3lzdGVtTmFt
ZTsKKyAgICB0aGlzLl9vcmlnaW4gPSBvcmlnaW47CisgICAgdGhpcy5fdHlwZSA9IHR5cGU7Cisg
ICAgdGhpcy5oYXNDaGlsZHJlbiA9IGZhbHNlOworfTsKKworV2ViSW5zcGVjdG9yLkZpbGVTeXN0
ZW1UcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CisgICAgb25zZWxlY3Q6IGZ1bmN0aW9uKCkKKyAg
ICB7CisgICAgICBXZWJJbnNwZWN0b3IuQmFzZVN0b3JhZ2VUcmVlRWxlbWVudC5wcm90b3R5cGUu
b25zZWxlY3QuY2FsbCh0aGlzKTsKKyAgICAgIHRoaXMuX3N0b3JhZ2VQYW5lbC5zaG93RmlsZVN5
c3RlbSh0aGlzLl9maWxlU3lzdGVtTmFtZSk7CisgICAgfQorfTsKKworV2ViSW5zcGVjdG9yLkZp
bGVTeXN0ZW1UcmVlRWxlbWVudC5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLkJh
c2VTdG9yYWdlVHJlZUVsZW1lbnQucHJvdG90eXBlOworCisvKioKKyAqIEBjb25zdHJ1Y3Rvcgor
ICogQGV4dGVuZHMge1dlYkluc3BlY3Rvci5CYXNlU3RvcmFnZVRyZWVFbGVtZW50fQorICovCiBX
ZWJJbnNwZWN0b3IuUmVzb3VyY2VSZXZpc2lvblRyZWVFbGVtZW50ID0gZnVuY3Rpb24oc3RvcmFn
ZVBhbmVsLCByZXZpc2lvbikKIHsKICAgICB2YXIgdGl0bGUgPSByZXZpc2lvbi50aW1lc3RhbXAg
PyByZXZpc2lvbi50aW1lc3RhbXAudG9Mb2NhbGVUaW1lU3RyaW5nKCkgOiBXZWJJbnNwZWN0b3Iu
VUlTdHJpbmcoIihvcmlnaW5hbCkiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvU2V0dGluZ3MuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL1NldHRpbmdzLmpzCmluZGV4IGMyMWFjNjQ5ZjJlNDk0YWEyZTMzNDJhNzZmMmI3MTZm
MjE2YjEwMmMuLjg5ZmRjMTc5MTVmY2NiYTBiNjNlNWQyZmNlZjBhZTdkZTE3NjQ0MTEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2V0dGluZ3MuanMKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TZXR0aW5ncy5qcwpAQCAtNDIs
NiArNDIsNyBAQCB2YXIgUHJlZmVyZW5jZXMgPSB7CiAgICAgZGVidWdnZXJBbHdheXNFbmFibGVk
OiBmYWxzZSwKICAgICBwcm9maWxlckFsd2F5c0VuYWJsZWQ6IGZhbHNlLAogICAgIG5hdGl2ZUlu
c3RydW1lbnRhdGlvbkVuYWJsZWQ6IGZhbHNlLAorICAgIGZpbGVTeXN0ZW1FbmFibGVkOiBmYWxz
ZSwKICAgICB1c2VEYXRhVVJMRm9yUmVzb3VyY2VJbWFnZUljb25zOiB0cnVlLAogICAgIHNob3dU
aW1pbmdUYWI6IGZhbHNlLAogICAgIHNob3dDb29raWVzVGFiOiBmYWxzZSwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvV2ViS2l0LnFyYyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvV2ViS2l0LnFyYwppbmRleCA2MTQyYWYzMTc3MWRm
ZWQ3NTMwMTlmN2Q4M2MwYTViNmQyZTY5NjFkLi5jZjY4MzE2YWE3ZTczOGQ3Nzk2OTZlMDQ0Y2Rl
NjEzZmQ4ODE3Y2FmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL1dlYktpdC5xcmMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9X
ZWJLaXQucXJjCkBAIC01NCw2ICs1NCw4IEBACiAgICAgPGZpbGU+RXh0ZW5zaW9uUGFuZWwuanM8
L2ZpbGU+CiAgICAgPGZpbGU+RXh0ZW5zaW9uUmVnaXN0cnlTdHViLmpzPC9maWxlPgogICAgIDxm
aWxlPkV4dGVuc2lvblNlcnZlci5qczwvZmlsZT4KKyAgICA8ZmlsZT5GaWxlU3lzdGVtLmpzPC9m
aWxlPgorICAgIDxmaWxlPkZpbGVTeXN0ZW1WaWV3LmpzPC9maWxlPgogICAgIDxmaWxlPkZvbnRW
aWV3LmpzPC9maWxlPgogICAgIDxmaWxlPkdvVG9MaW5lRGlhbG9nLmpzPC9maWxlPgogICAgIDxm
aWxlPkhBUkVudHJ5LmpzPC9maWxlPgpAQCAtMjA1LDYgKzIwNyw3IEBACiAgICAgPGZpbGU+SW1h
Z2VzL2Vycm9yUmVkRG90LnBuZzwvZmlsZT4KICAgICA8ZmlsZT5JbWFnZXMvZm9yd2FyZC5wbmc8
L2ZpbGU+CiAgICAgPGZpbGU+SW1hZ2VzL2ZyYW1lLnBuZzwvZmlsZT4KKyAgICA8ZmlsZT5JbWFn
ZXMvZmlsZVN5c3RlbS5wbmc8L2ZpbGU+CiAgICAgPGZpbGU+SW1hZ2VzL2dsb3NzeUhlYWRlci5w
bmc8L2ZpbGU+CiAgICAgPGZpbGU+SW1hZ2VzL2dsb3NzeUhlYWRlclByZXNzZWQucG5nPC9maWxl
PgogICAgIDxmaWxlPkltYWdlcy9nbG9zc3lIZWFkZXJTZWxlY3RlZC5wbmc8L2ZpbGU+CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5odG1s
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuaHRtbAppbmRl
eCA3NzBmNDAyMjFhM2MwMDhlNTk1N2Y4MzE0YTdjNmMxZWY2MTgwNzYwLi5iYWM2OTYyMmYxNzRj
YTM3OTgxYjcyZTEzZGE0NGZmYjA4MDZjZDE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5odG1sCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmh0bWwKQEAgLTc1LDYgKzc1LDcgQEAgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJET01TdG9yYWdlLmpz
Ij48L3NjcmlwdD4KICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJET01T
dG9yYWdlSXRlbXNWaWV3LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2
YXNjcmlwdCIgc3JjPSJEYXRhR3JpZC5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCB0eXBlPSJ0
ZXh0L2phdmFzY3JpcHQiIHNyYz0iRmlsZVN5c3RlbS5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlw
dCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iU2hvd01vcmVEYXRhR3JpZE5vZGUuanMiPjwv
c2NyaXB0PgogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IkNvb2tpZXNU
YWJsZS5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNy
Yz0iQ29va2llSXRlbXNWaWV3LmpzIj48L3NjcmlwdD4KQEAgLTE0OSw2ICsxNTAsNyBAQCBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IkltYWdlVmlldy5q
cyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iRGF0
YWJhc2VUYWJsZVZpZXcuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZh
c2NyaXB0IiBzcmM9IkRhdGFiYXNlUXVlcnlWaWV3LmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0
IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJGaWxlU3lzdGVtVmlldy5qcyI+PC9zY3JpcHQ+
CiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iUHJvZmlsZURhdGFHcmlk
VHJlZS5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNy
Yz0iQm90dG9tVXBQcm9maWxlRGF0YUdyaWRUcmVlLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0
IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJUb3BEb3duUHJvZmlsZURhdGFHcmlkVHJlZS5q
cyI+PC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL2luc3BlY3Rvci5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5z
cGVjdG9yLmpzCmluZGV4IDEwM2ZjY2NmNGY4NjNlNDc2ZDk3ODcwZDcwZWNkNmY5NzE1YTEyOWYu
LmVjZWZkZGE0NjZjZWIxNWY3OWU5NTI1OWZmNDkyOWNkMmY3NzgwNzAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmpzCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmpzCkBAIC0zODgsNiArMzg4
LDggQEAgV2ViSW5zcGVjdG9yLmRvTG9hZGVkRG9uZSA9IGZ1bmN0aW9uKCkKICAgICB0aGlzLmNv
bnNvbGUuZW5hYmxlQWdlbnQoKTsKICAgICBEYXRhYmFzZUFnZW50LmVuYWJsZSgpOwogICAgIERP
TVN0b3JhZ2VBZ2VudC5lbmFibGUoKTsKKyAgICBpZiAoUHJlZmVyZW5jZXMuZmlsZVN5c3RlbUVu
YWJsZWQpCisgICAgICAgIEZpbGVTeXN0ZW1BZ2VudC5lbmFibGUoKTsKIAogICAgIFdlYkluc3Bl
Y3Rvci5zaG93UGFuZWwoV2ViSW5zcGVjdG9yLnNldHRpbmdzLmxhc3RBY3RpdmVQYW5lbC5nZXQo
KSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvcmVz
b3VyY2VzUGFuZWwuY3NzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9yZXNv
dXJjZXNQYW5lbC5jc3MKaW5kZXggMThjNzZhZTIxNzM5ODQyZDc5NDgwMjUyYzY3MWM3M2FkMDI5
ZGVjOC4uMTMzNzI5OGU2MmM1ZDcxMDVhNTNjZGZkNTU5NDYyNGExZDc3ODdlYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9yZXNvdXJjZXNQYW5lbC5jc3MK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9yZXNvdXJjZXNQYW5lbC5j
c3MKQEAgLTMyNSw3ICszMjUsNiBAQCBsaS5zZWxlY3RlZCAuYmFzZS1zdG9yYWdlLXRyZWUtZWxl
bWVudC1zdWJ0aXRsZSB7CiAgICAgY29udGVudDogdXJsKEltYWdlcy9hcHBsaWNhdGlvbkNhY2hl
LnBuZyk7CiB9CiAKLS8qIEZJWE1FOiBNYWtlIHNlcGFyYXRlIHBuZyBmb3IgZmlsZS1zeXN0ZW0g
Ki8KLS5maWxlLXN5c3RlbS1zdG9yYWdlLXRyZWUtaXRlbSAuaWNvbiB7Ci0gICAgY29udGVudDog
dXJsKEltYWdlcy9hcHBsaWNhdGlvbkNhY2hlLnBuZyk7CisuZmlsZXN5c3RlbS1zdG9yYWdlLXRy
ZWUtaXRlbSAuaWNvbiB7CisgICAgY29udGVudDogdXJsKEltYWdlcy9maWxlU3lzdGVtLnBuZyk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9qcy9EZXZUb29scy5q
cyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL2pzL0RldlRvb2xzLmpzCmluZGV4IGY2MjUy
YmQ0YmIzZDZkYzQyYzk5OThkMmE2OWNhNDYwYzhmZmMzZTIuLmVhNDdjYjY3MzI3YzNjYTVhYzdi
MmZlODhkMmQwYzJlMGQ1YThjMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL2pzL0RldlRvb2xzLmpzCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL2pzL0Rl
dlRvb2xzLmpzCkBAIC00MSw3ICs0MSw3IEBACiAgICAgUHJlZmVyZW5jZXMuZGVidWdnZXJBbHdh
eXNFbmFibGVkID0gdHJ1ZTsKICAgICBQcmVmZXJlbmNlcy5wcm9maWxlckFsd2F5c0VuYWJsZWQg
PSB0cnVlOwogICAgIFByZWZlcmVuY2VzLm5hdGl2ZUluc3RydW1lbnRhdGlvbkVuYWJsZWQgPSB0
cnVlOwotICAgIFByZWZlcmVuY2VzLmZpbGVTeXN0ZW1FbmFibGVkID0gZmFsc2U7CisgICAgUHJl
ZmVyZW5jZXMuZmlsZVN5c3RlbUVuYWJsZWQgPSB0cnVlOwogICAgIFByZWZlcmVuY2VzLnNob3dU
aW1pbmdUYWIgPSB0cnVlOwogICAgIFByZWZlcmVuY2VzLnNob3dDb29raWVzVGFiID0gdHJ1ZTsK
ICAgICBQcmVmZXJlbmNlcy5zYXZlQXNBdmFpbGFibGUgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDg1Mjc4MTg0
YWUzNmQ5NWJhZDRlNzExZTU5OTc1YWM3YzNlMmE2NmQuLjEzZWFjZDlhODUxZGM1NGMxM2NjN2Rk
NmMwYjBlM2IyMWVhMGExYzIgMTAwNzU1Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysg
Yi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMiBAQAorMjAxMS0xMS0yOCAgVGFp
anUgVFNVSUtJICA8dHppa0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW0luc3BlY3Rvcl1bRmls
ZVN5c3RlbV0gQWRkIEZpbGVTeXN0ZW0gaXRlbSB0byBzdG9yYWdlIHRyZWUuCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MjY5MQorCisgICAgICAgIEFk
ZGluZyB0ZXN0IGZvciBGaWxlU3lzdGVtIHN1cHBvcnQgb2YgSW5zcGVjdG9yLgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogaHR0cC90ZXN0cy9pbnNw
ZWN0b3IvZmlsZXN5c3RlbS9maWxlc3lzdGVtLWNhcHR1cmUtZXhwZWN0ZWQudHh0OiBBZGRlZC4K
KyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9maWxlc3lzdGVtL2ZpbGVzeXN0ZW0tY2Fw
dHVyZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9maWxlc3lz
dGVtL2ZpbGVzeXN0ZW0tdGVzdC5qczogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vZWZsL1Nr
aXBwZWQ6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL1NraXBwZWQ6CisgICAgICAgICogcGxhdGZv
cm0vbWFjL1NraXBwZWQ6CisgICAgICAgICogcGxhdGZvcm0vcXQvU2tpcHBlZDoKKyAgICAgICAg
KiBwbGF0Zm9ybS93aW4vU2tpcHBlZDoKKyAgICAgICAgKiBwbGF0Zm9ybS93aW5jYWlyby9Ta2lw
cGVkOgorCiAyMDExLTExLTI4ICBKZWZmIFRpbWFudXMgIDx0d2l6QGNocm9taXVtLm9yZz4KIAog
ICAgICAgICBTdXBwcmVzc2luZyBhIGZhaWxpbmcgd2ViZ2wgY29uZm9ybWFuY2UgdGVzdCBvbiBN
YWMuCkBAIC0xMDQwLDYgKzEwNTksMjUgQEAKICAgICAgICAgKiBmYXN0L2Nzcy9kZWZhdWx0LWJp
ZGktY3NzLXJ1bGVzLWV4cGVjdGVkLnR4dDogQWRkZWQuCiAgICAgICAgICogZmFzdC9jc3MvZGVm
YXVsdC1iaWRpLWNzcy1ydWxlcy5odG1sOiBBZGRlZC4KIAorMjAxMS0xMS0yOCAgVGFpanUgVFNV
SUtJICA8dHppa0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgQWRkaW5nIEZpbGVTeXN0ZW0gc3Vw
cG9ydCB0byBJbnNwZWN0b3I6IHBhcnQgMi4gU3RvcmFnZSB0cmVlCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MjY5MQorCisgICAgICAgIE5lZWQgYSBz
aG9ydCBkZXNjcmlwdGlvbiBhbmQgYnVnIFVSTCAoT09QUyEpCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9maWxl
c3lzdGVtL2ZpbGVzeXN0ZW0tY2FwdHVyZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAq
IGh0dHAvdGVzdHMvaW5zcGVjdG9yL2ZpbGVzeXN0ZW0vZmlsZXN5c3RlbS1jYXB0dXJlLmh0bWw6
IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL2ZpbGVzeXN0ZW0vZmlsZXN5
c3RlbS10ZXN0LmpzOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9lZmwvU2tpcHBlZDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ndGsvU2tpcHBlZDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvU2tp
cHBlZDoKKyAgICAgICAgKiBwbGF0Zm9ybS9xdC9Ta2lwcGVkOgorICAgICAgICAqIHBsYXRmb3Jt
L3dpbi9Ta2lwcGVkOgorICAgICAgICAqIHBsYXRmb3JtL3dpbmNhaXJvL1NraXBwZWQ6CisKIDIw
MTEtMTEtMjggIFBhdmVsIEZlbGRtYW4gIDxwZmVsZG1hbkBnb29nbGUuY29tPgogCiAgICAgICAg
IFdlYiBJbnNwZWN0b3I6IGNvbnNvbGUgZXZhbHVhdGlvbiBkb2Vzbid0IHdvcmsgd2hlbiBuYXZp
Z2F0aW5nIGZyb20gYSBwYWdlIHdpdGggc2V2ZXJhbCBmcmFtZXMgdG8gYW5vdGhlciBvbmUKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2ZpbGVzeXN0ZW0vZmls
ZXN5c3RlbS1jYXB0dXJlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5z
cGVjdG9yL2ZpbGVzeXN0ZW0vZmlsZXN5c3RlbS1jYXB0dXJlLWV4cGVjdGVkLnR4dApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5jNDY4ODNiYjUyYTRlNTg4MTExMGZmYjRhY2JiNDY0MjRhM2JkOTQxCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvZmlsZXN5c3RlbS9maWxl
c3lzdGVtLWNhcHR1cmUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMzUgQEAKK1dlYkluc3BlY3Rv
ciB0ZXN0IGZvciBjYXB0dXJpbmcgRmlsZVN5c3RlbSBvYmplY3QuIFRoaXMgdGVzdCBjaGVja3Mg
aWYgSW5zcGVjdG9yIGNhbiBjYXB0dXJlIERPTUZpbGVTeXN0ZW0gb2JqZWN0IGFuZCBjYW4gZGV0
ZWN0IGludmFsaWRhdGlvbiBvZiBET01GaWxlU3lzdGVtIGNvcnJlY3RseS4KKworT24gc3VjY2Vz
cywgd2Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAi
VEVTVCBDT01QTEVURSIuCisKK1N0YXJ0aW5nIHRlc3QuCisgIER1bXBpbmcgRmlsZVN5c3RlbSB0
cmVlOgorICAgIChlbXB0eSkKKworT3BlbmluZyBGaWxlU3lzdGVtLgorUEFTUworICBEdW1waW5n
IEZpbGVTeXN0ZW0gdHJlZToKKyAgICBGaWxlU3lzdGVtIE5hbWU6IGh0dHBfMTI3LjAuMC4xXzgw
MDA6VGVtcG9yYXJ5CisKK09wZW5pbmcgYW5vdGhlciBGaWxlU3lzdGVtIHdpdGggc2FtZSBuYW1l
LgorUEFTUworICBEdW1waW5nIEZpbGVTeXN0ZW0gdHJlZToKKyAgICBGaWxlU3lzdGVtIE5hbWU6
IGh0dHBfMTI3LjAuMC4xXzgwMDA6VGVtcG9yYXJ5CisKK0Rpc2NhcmRpbmcgYSBpbnN0YW5jZS4K
K1BBU1MKKyAgRHVtcGluZyBGaWxlU3lzdGVtIHRyZWU6CisgICAgRmlsZVN5c3RlbSBOYW1lOiBo
dHRwXzEyNy4wLjAuMV84MDAwOlRlbXBvcmFyeQorCitEaXNjYXJkaW5nIGFub3RoZXIgaW5zdGFu
Y2UuCitQQVNTCisgIER1bXBpbmcgRmlsZVN5c3RlbSB0cmVlOgorICAgIChlbXB0eSkKKworUmVv
cGVuaW5nIEZpbGVTeXN0ZW0uCitQQVNTCisgIER1bXBpbmcgRmlsZVN5c3RlbSB0cmVlOgorICAg
IEZpbGVTeXN0ZW0gTmFtZTogaHR0cF8xMjcuMC4wLjFfODAwMDpUZW1wb3JhcnkKKworVEVTVCBD
T01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9m
aWxlc3lzdGVtL2ZpbGVzeXN0ZW0tY2FwdHVyZS5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9pbnNwZWN0b3IvZmlsZXN5c3RlbS9maWxlc3lzdGVtLWNhcHR1cmUuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5hMTc3NmZmYzNhNzQ1YzE4YjBmNTExMTNmYjMyNDQ1ODJjNmRhNjBjCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvZmlsZXN5c3RlbS9maWxlc3lz
dGVtLWNhcHR1cmUuaHRtbApAQCAtMCwwICsxLDEzMCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRt
bD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0iVVRGLTgiPgorPHNjcmlwdCBzcmM9Ii4uL2luc3Bl
Y3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJmaWxlc3lzdGVtLXRlc3QuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdD4KK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIGlmICghd2luZG93
LndlYmtpdFJlcXVlc3RGaWxlU3lzdGVtKSB7CisgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVz
dWx0KCJUaGlzIHRlc3QgcmVxdWlyZXMgd2Via2l0UmVxdWVzdEZpbGVTeXN0ZW0uIik7CisgICAg
ICAgIEluc3BlY3RvclRlc3QuY29tcGxldGVUZXN0KCk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKKyAgICBmdW5jdGlvbiBSZXF1ZXN0VGVtcEZTKCkKKyAgICB7CisgICAgICAgIHdlYmtpdFJl
cXVlc3RGaWxlU3lzdGVtKFRFTVBPUkFSWSwgMTAyNCwgZnVuY3Rpb24oZnMpIHsKKyAgICAgICAg
ICAgIHdpbmRvdy5maWxlU3lzdGVtID0gZnM7CisgICAgICAgIH0pOworICAgIH0KKworICAgIHZh
ciBmcmFtZTEsIGZyYW1lMjsKKyAgICB2YXIgdG1wRlNJbnZhbGlkYXRlZCA9IHRydWU7CisKKyAg
ICBXZWJJbnNwZWN0b3Iuc2hvd1BhbmVsKCJyZXNvdXJjZXMiKTsKKyAgICB2YXIgc3RlcCA9IFsK
KyAgICAgICAgZnVuY3Rpb24oKQorICAgICAgICB7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0
LmFkZFJlc3VsdCgiU3RhcnRpbmcgdGVzdC4iKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3Qu
ZHVtcEZpbGVTeXN0ZW0oKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCIi
KTsKKworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5jcmVhdGVJRnJhbWUoc3RlcC5zaGlmdCgp
KTsKKyAgICAgICAgfSwKKyAgICAgICAgZnVuY3Rpb24oaWQpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIGZyYW1lMSA9IGlkOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5jcmVhdGVJRnJhbWUo
c3RlcC5zaGlmdCgpKTsKKyAgICAgICAgfSwKKyAgICAgICAgZnVuY3Rpb24oaWQpCisgICAgICAg
IHsKKyAgICAgICAgICAgIGZyYW1lMiA9IGlkOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5h
ZGRSZXN1bHQoIk9wZW5pbmcgRmlsZVN5c3RlbS4iKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRl
c3QuYWRkU25pZmZlcihXZWJJbnNwZWN0b3IuUmVzb3VyY2VzUGFuZWwucHJvdG90eXBlLCAiYWRk
RmlsZVN5c3RlbSIsIHN0ZXAuc2hpZnQoKSk7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV2
YWx1YXRlSW5JRnJhbWUoZnJhbWUxLCBSZXF1ZXN0VGVtcEZTKTsKKyAgICAgICAgfSwKKyAgICAg
ICAgZnVuY3Rpb24oKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoV2ViSW5zcGVjdG9yLnBh
bmVscy5yZXNvdXJjZXMuZmlsZVN5c3RlbUxpc3RUcmVlRWxlbWVudC5jaGlsZHJlbi5sZW5ndGgg
PT0gMSkKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiUEFTUyIpOwor
ICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0
KCJGQUlMIik7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmR1bXBGaWxlU3lzdGVtKCk7Cisg
ICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiIik7CisKKyAgICAgICAgICAgIElu
c3BlY3RvclRlc3QuYWRkUmVzdWx0KCJPcGVuaW5nIGFub3RoZXIgRmlsZVN5c3RlbSB3aXRoIHNh
bWUgbmFtZS4iKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkU25pZmZlcihXZWJJbnNw
ZWN0b3IuUmVzb3VyY2VzUGFuZWwucHJvdG90eXBlLCAiYWRkRmlsZVN5c3RlbSIsIHN0ZXAuc2hp
ZnQoKSk7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5JRnJhbWUoZnJhbWUy
LCBSZXF1ZXN0VGVtcEZTKTsKKyAgICAgICAgfSwKKyAgICAgICAgZnVuY3Rpb24oKQorICAgICAg
ICB7CisgICAgICAgICAgICBpZiAoV2ViSW5zcGVjdG9yLnBhbmVscy5yZXNvdXJjZXMuZmlsZVN5
c3RlbUxpc3RUcmVlRWxlbWVudC5jaGlsZHJlbi5sZW5ndGggPT0gMSkKKyAgICAgICAgICAgICAg
ICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiUEFTUyIpOworICAgICAgICAgICAgZWxzZQorICAg
ICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJGQUlMIik7CisgICAgICAgICAg
ICBJbnNwZWN0b3JUZXN0LmR1bXBGaWxlU3lzdGVtKCk7CisgICAgICAgICAgICBJbnNwZWN0b3JU
ZXN0LmFkZFJlc3VsdCgiIik7CisKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0
KCJEaXNjYXJkaW5nIGEgaW5zdGFuY2UuIik7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LnJl
bW92ZUlGcmFtZShmcmFtZTEsIHN0ZXAuc2hpZnQoKSk7CisgICAgICAgIH0sCisgICAgICAgIGZ1
bmN0aW9uKCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGhhc1BlbmRpbmcgPSB0cnVlOwor
ICAgICAgICAgICAgaWYgKFdlYkluc3BlY3Rvci5wYW5lbHMucmVzb3VyY2VzLmZpbGVTeXN0ZW1M
aXN0VHJlZUVsZW1lbnQuY2hpbGRyZW4ubGVuZ3RoID09IDEpCisgICAgICAgICAgICAgICAgSW5z
cGVjdG9yVGVzdC5hZGRSZXN1bHQoIlBBU1MiKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiRkFJTCIpOworICAgICAgICAgICAgSW5z
cGVjdG9yVGVzdC5kdW1wRmlsZVN5c3RlbSgpOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5h
ZGRSZXN1bHQoIiIpOworCisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiRGlz
Y2FyZGluZyBhbm90aGVyIGluc3RhbmNlLiIpOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5h
ZGRTbmlmZmVyKFdlYkluc3BlY3Rvci5SZXNvdXJjZXNQYW5lbC5wcm90b3R5cGUsICJpbnZhbGlk
YXRlRmlsZVN5c3RlbSIsIHJ1bk5leHQpOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5jbGVh
cklGcmFtZShmcmFtZTIsIGZ1bmN0aW9uKGlkKSB7CisgICAgICAgICAgICAgICAgZnJhbWUyID0g
aWQ7CisgICAgICAgICAgICAgICAgcnVuTmV4dCgpOworICAgICAgICAgICAgfSk7CisKKyAgICAg
ICAgICAgIGZ1bmN0aW9uIHJ1bk5leHQoKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
IGlmIChoYXNQZW5kaW5nKQorICAgICAgICAgICAgICAgICAgICBoYXNQZW5kaW5nID0gZmFsc2U7
CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBzdGVwLnNoaWZ0KCko
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgZnVuY3Rpb24oKQorICAgICAg
ICB7CisgICAgICAgICAgICBpZiAoV2ViSW5zcGVjdG9yLnBhbmVscy5yZXNvdXJjZXMuZmlsZVN5
c3RlbUxpc3RUcmVlRWxlbWVudC5jaGlsZHJlbi5sZW5ndGggPT0gMCkKKyAgICAgICAgICAgICAg
ICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiUEFTUyIpOworICAgICAgICAgICAgZWxzZQorICAg
ICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJGQUlMIik7CisgICAgICAgICAg
ICBJbnNwZWN0b3JUZXN0LmR1bXBGaWxlU3lzdGVtKCk7CisgICAgICAgICAgICBJbnNwZWN0b3JU
ZXN0LmFkZFJlc3VsdCgiIik7CisKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0
KCJSZW9wZW5pbmcgRmlsZVN5c3RlbS4iKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRk
U25pZmZlcihXZWJJbnNwZWN0b3IuUmVzb3VyY2VzUGFuZWwucHJvdG90eXBlLCAiYWRkRmlsZVN5
c3RlbSIsIHN0ZXAuc2hpZnQoKSk7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV2YWx1YXRl
SW5JRnJhbWUoZnJhbWUyLCBSZXF1ZXN0VGVtcEZTKTsKKyAgICAgICAgfSwKKyAgICAgICAgZnVu
Y3Rpb24oKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoV2ViSW5zcGVjdG9yLnBhbmVscy5y
ZXNvdXJjZXMuZmlsZVN5c3RlbUxpc3RUcmVlRWxlbWVudC5jaGlsZHJlbi5sZW5ndGggPT0gMSkK
KyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiUEFTUyIpOworICAgICAg
ICAgICAgZWxzZQorICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJGQUlM
Iik7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmR1bXBGaWxlU3lzdGVtKCk7CisgICAgICAg
ICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiIik7CisgICAgICAgICAgICBJbnNwZWN0b3JU
ZXN0LmFkZFJlc3VsdCgiVEVTVCBDT01QTEVURSIpOworICAgICAgICAgICAgSW5zcGVjdG9yVGVz
dC5jb21wbGV0ZVRlc3QoKTsKKyAgICAgICAgfV07CisgICAgc3RlcC5zaGlmdCgpKCk7Cit9Cis8
L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0icnVuVGVzdCgpOyI+Cis8cD5XZWJJbnNw
ZWN0b3IgdGVzdCBmb3IgY2FwdHVyaW5nIEZpbGVTeXN0ZW0gb2JqZWN0LiAgVGhpcyB0ZXN0IGNo
ZWNrcyBpZiBJbnNwZWN0b3IgY2FuIGNhcHR1cmUgRE9NRmlsZVN5c3RlbSBvYmplY3QgYW5kIGNh
biBkZXRlY3QgaW52YWxpZGF0aW9uIG9mIERPTUZpbGVTeXN0ZW0gY29ycmVjdGx5LjwvcD4KKzxw
Pk9uIHN1Y2Nlc3MsIHdlIHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9s
bG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLjwvcD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2ZpbGVzeXN0ZW0vZmlsZXN5c3Rl
bS10ZXN0LmpzIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvZmlsZXN5c3RlbS9m
aWxlc3lzdGVtLXRlc3QuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDc3NDc2NmYyY2ZkYmFhYjdiZjJiNDIzNTEx
YWY2YWY2ZTE5NTU2YwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
aW5zcGVjdG9yL2ZpbGVzeXN0ZW0vZmlsZXN5c3RlbS10ZXN0LmpzCkBAIC0wLDAgKzEsMTAyIEBA
CisKK3ZhciBuZXh0SUZyYW1lSWQgPSAwOworCitmdW5jdGlvbiBjcmVhdGVJRnJhbWUoKQorewor
ICAgIHZhciBidWlsZGVyID0gbmV3IFdlYktpdEJsb2JCdWlsZGVyKCk7CisgICAgYnVpbGRlci5h
cHBlbmQoIjwhRE9DVFlQRSBodG1sPjxtZXRhIGNoYXJzZXQ9XCJVVEYtOFwiPiIpOworCisgICAg
dmFyIGZyYW1lID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaWZyYW1lIik7CisgICAgZnJhbWUu
bmFtZSA9ICJmcmFtZSIgKyBuZXh0SUZyYW1lSWQrKzsKKyAgICBmcmFtZS5pZCA9IGZyYW1lLm5h
bWU7CisgICAgZnJhbWUuc3JjID0gd2Via2l0VVJMLmNyZWF0ZU9iamVjdFVSTChidWlsZGVyLmdl
dEJsb2IoInRleHQvaHRtbCIpKTsKKyAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGZyYW1l
KTsKK30KKworZnVuY3Rpb24gZXZhbHVhdGVJbklGcmFtZShpZCwgc2NyaXB0KQoreworICAgIHZh
ciBkb2MgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChpZCkuY29udGVudERvY3VtZW50OworICAg
IHZhciBzY3JpcHRUYWcgPSBkb2MuY3JlYXRlRWxlbWVudCgic2NyaXB0Iik7CisgICAgc2NyaXB0
VGFnLmlubmVySFRNTCA9IHNjcmlwdDsKKyAgICBkb2MuYm9keS5hcHBlbmRDaGlsZChzY3JpcHRU
YWcpOworfQorCitmdW5jdGlvbiBjbGVhcklGcmFtZShpZCkKK3sKKyAgICB2YXIgYnVpbGRlciA9
IG5ldyBXZWJLaXRCbG9iQnVpbGRlcigpOworICAgIGJ1aWxkZXIuYXBwZW5kKCI8IURPQ1RZUEUg
aHRtbD48bWV0YSBjaGFyc2V0PVwiVVRGLThcIj4iKTsKKyAgICB2YXIgZnJhbWUgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZChpZCk7CisgICAgZnJhbWUuc3JjID0gd2Via2l0VVJMLmNyZWF0ZU9i
amVjdFVSTChidWlsZGVyLmdldEJsb2IoInRleHQvaHRtbCIpKTsKK30KKworZnVuY3Rpb24gcmVt
b3ZlSUZyYW1lKGlkKQoreworICAgIHZhciBpZnJhbWUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZChpZCk7CisgICAgaWZyYW1lLnBhcmVudEVsZW1lbnQucmVtb3ZlQ2hpbGQoaWZyYW1lKTsKK30K
KwordmFyIGluaXRpYWxpemVfRmlsZVN5c3RlbVRlc3QgPSBmdW5jdGlvbigpIHsKKworSW5zcGVj
dG9yVGVzdC5jcmVhdGVJRnJhbWUgPSBmdW5jdGlvbihjYWxsYmFja19vcHQpIHsKKyAgICBJbnNw
ZWN0b3JUZXN0LmFkZFNuaWZmZXIoV2ViSW5zcGVjdG9yLlJlc291cmNlVHJlZU1vZGVsLnByb3Rv
dHlwZSwgIl9mcmFtZU5hdmlnYXRlZCIsIGZyYW1lTmF2aWdhdGVkKTsKKyAgICBJbnNwZWN0b3JU
ZXN0LmV2YWx1YXRlSW5QYWdlKCJjcmVhdGVJRnJhbWUoKTsiKTsKKyAgICBmdW5jdGlvbiBmcmFt
ZU5hdmlnYXRlZChmcmFtZSkKKyAgICB7CisgICAgICAgIGlmIChjYWxsYmFja19vcHQpCisgICAg
ICAgICAgICBjYWxsYmFja19vcHQoZnJhbWUuaWQpOworICAgIH0KK307CisKK0luc3BlY3RvclRl
c3QuZXZhbHVhdGVJbklGcmFtZSA9IGZ1bmN0aW9uKGZyYW1lSWQsIHNjcmlwdCkKK3sKKyAgICBp
ZiAodHlwZW9mIHNjcmlwdCA9PSAiZnVuY3Rpb24iKQorICAgICAgICBzY3JpcHQgPSAiKCIgKyBz
Y3JpcHQgKyAiKSgpIjsKKyAgICB2YXIgZnJhbWUgPSBXZWJJbnNwZWN0b3IucmVzb3VyY2VUcmVl
TW9kZWwuZnJhbWVGb3JJZChmcmFtZUlkKTsKKyAgICBpZiAoIWZyYW1lKQorICAgICAgICBhZGRS
ZXN1bHQoZnJhbWVJZCArICIgbm90IGZvdW5kIik7CisgICAgSW5zcGVjdG9yVGVzdC5ldmFsdWF0
ZUluUGFnZSgiZXZhbHVhdGVJbklGcmFtZSh1bmVzY2FwZSgnIiArIGVzY2FwZShmcmFtZS5uYW1l
KSArIicpLCB1bmVzY2FwZSgnIiArIGVzY2FwZShzY3JpcHQpICsgIicpKTsiKTsKK307CisKK0lu
c3BlY3RvclRlc3QucmVtb3ZlSUZyYW1lID0gZnVuY3Rpb24oZnJhbWVJZCwgY2FsbGJhY2tfb3B0
KQoreworICAgIHZhciBmcmFtZSA9IFdlYkluc3BlY3Rvci5yZXNvdXJjZVRyZWVNb2RlbC5mcmFt
ZUZvcklkKGZyYW1lSWQpOworICAgIEluc3BlY3RvclRlc3QuYWRkU25pZmZlcihXZWJJbnNwZWN0
b3IuUmVzb3VyY2VUcmVlTW9kZWwucHJvdG90eXBlLCAiX2ZyYW1lRGV0YWNoZWQiLCBmcmFtZURl
dGFjaGVkKTsKKyAgICBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlKCJyZW1vdmVJRnJhbWUo
dW5lc2NhcGUoJyIgKyBlc2NhcGUoZnJhbWUubmFtZSkgKyAiJykpOyIpOworCisgICAgZnVuY3Rp
b24gZnJhbWVEZXRhY2hlZChmcmFtZSkKKyAgICB7CisgICAgICAgIEdDQ29udHJvbGxlci5jb2xs
ZWN0KCk7CisgICAgICAgIGlmIChjYWxsYmFja19vcHQpCisgICAgICAgICAgICBjYWxsYmFja19v
cHQoKTsKKyAgICB9Cit9OworCitJbnNwZWN0b3JUZXN0LmNsZWFySUZyYW1lID0gZnVuY3Rpb24o
ZnJhbWVJZCwgY2FsbGJhY2tfb3B0KQoreworICAgIHZhciBmcmFtZSA9IFdlYkluc3BlY3Rvci5y
ZXNvdXJjZVRyZWVNb2RlbC5mcmFtZUZvcklkKGZyYW1lSWQpOworICAgIEluc3BlY3RvclRlc3Qu
YWRkU25pZmZlcihXZWJJbnNwZWN0b3IuUmVzb3VyY2VUcmVlTW9kZWwucHJvdG90eXBlLCAiX2Zy
YW1lTmF2aWdhdGVkIiwgZnJhbWVOYXZpZ2F0ZWQpOworICAgIEluc3BlY3RvclRlc3QuZXZhbHVh
dGVJblBhZ2UoImNsZWFySUZyYW1lKHVuZXNjYXBlKCciICsgZXNjYXBlKGZyYW1lLm5hbWUpICsg
IicpKTsiKTsKKyAgICBmdW5jdGlvbiBmcmFtZU5hdmlnYXRlZChmcmFtZSkKKyAgICB7CisgICAg
ICAgIEdDQ29udHJvbGxlci5jb2xsZWN0KCk7CisgICAgICAgIGlmIChjYWxsYmFja19vcHQpCisg
ICAgICAgICAgICBjYWxsYmFja19vcHQoZnJhbWUuaWQpOworICAgIH0KK307CisKK0luc3BlY3Rv
clRlc3QuZHVtcEZpbGVTeXN0ZW0gPSBmdW5jdGlvbigpCit7CisgICAgSW5zcGVjdG9yVGVzdC5h
ZGRSZXN1bHQoIiAgRHVtcGluZyBGaWxlU3lzdGVtIHRyZWU6Iik7CisgICAgdmFyIGZpbGVTeXN0
ZW1TdG9yYWdlVHJlZUVsZW1lbnQgPSBXZWJJbnNwZWN0b3IucGFuZWxzLnJlc291cmNlcy5maWxl
U3lzdGVtTGlzdFRyZWVFbGVtZW50OworICAgIGlmICghZmlsZVN5c3RlbVN0b3JhZ2VUcmVlRWxl
bWVudC5jaGlsZHJlbi5sZW5ndGgpIHsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQo
IiAgICAoZW1wdHkpIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgZm9yICh2YXIgaSA9
IDA7IGkgPCBmaWxlU3lzdGVtU3RvcmFnZVRyZWVFbGVtZW50LmNoaWxkcmVuLmxlbmd0aDsgKytp
KSB7CisgICAgICAgIHZhciBmaWxlU3lzdGVtVHJlZUVsZW1lbnQgPSBmaWxlU3lzdGVtU3RvcmFn
ZVRyZWVFbGVtZW50LmNoaWxkcmVuW2ldOworICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3Vs
dCgiICAgIEZpbGVTeXN0ZW0gTmFtZTogIiArIGZpbGVTeXN0ZW1UcmVlRWxlbWVudC5fZmlsZVN5
c3RlbU5hbWUpOworICAgIH0KK307CisKK307CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3Bs
YXRmb3JtL2VmbC9Ta2lwcGVkIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZsL1NraXBwZWQKaW5k
ZXggMDUxMDNiZDZhM2ZlMTlmYzY5NTVhNjM0NDY1ZTYzMDY2ZWM4MTVlNS4uZWEzMjc5ZWU3ZDEz
ZGU4ZWJjMjU5OTEwMjJiNTVjYTMzMjdjYmZlNyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vZWZsL1NraXBwZWQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZsL1NraXBwZWQK
QEAgLTEwMDEsNiArMTAwMSw3IEBAIGZhc3QvYW5pbWF0aW9uCiAjIFRoZSBFRkwgcG9ydCBoYXMg
bm8gc3VwcG9ydCBmb3IgdGhlIEZpbGVTeXN0ZW0gQVBJCiBmYXN0L2ZpbGVzeXN0ZW0KIGh0dHAv
dGVzdHMvZmlsZXN5c3RlbQoraHR0cC90ZXN0cy9pbnNwZWN0b3IvZmlsZXN5c3RlbQogaHR0cC90
ZXN0cy9zZWN1cml0eS9maWxlc3lzdGVtLWlmcmFtZS1mcm9tLXJlbW90ZS5odG1sCiAKICMgVGhl
IEVGTCBwb3J0IGhhcyBubyBzdXBwb3J0IGZvciBHZW9sb2NhdGlvbgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1NraXBwZWQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsv
U2tpcHBlZAppbmRleCAyNzlmMWM1YWRjZDkzMDJjNzkzNGZlYWJhNjFmZGRlNjIzZjkyMjY5Li4x
ZDJkM2FlMmFmZWM5MzBjNzI5ZjRkMTJkZjY3ZjJjZTQzMDE3YWY5IDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9ndGsvU2tpcHBlZAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9n
dGsvU2tpcHBlZApAQCAtMjgyLDYgKzI4Miw3IEBAIGh0dHAvdGVzdHMvbWlzYy93ZWJ0aW1pbmct
dHdvLXJlZGlyZWN0cy5waHAKICMgRmlsZVN5c3RlbSBBUEkgaXMgbm90IHN1cHBvcnRlZC4KIGZh
c3QvZmlsZXN5c3RlbQogaHR0cC90ZXN0cy9maWxlc3lzdGVtCitodHRwL3Rlc3RzL2luc3BlY3Rv
ci9maWxlc3lzdGVtCiBodHRwL3Rlc3RzL3NlY3VyaXR5L2ZpbGVzeXN0ZW0taWZyYW1lLWZyb20t
cmVtb3RlLmh0bWwKIGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvc2VuZC1maWxlLWJs
b2IuaHRtbAogaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9zZW5kLWZpbGUtYmxvYi1m
YWlsLmh0bWwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9Ta2lwcGVkIGIv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1NraXBwZWQKaW5kZXggNTljZGE4YWEyODMxMTE4ZGNm
NzdjNzdiYTFkZTcyMTEwNDc1N2I0Zi4uZGViMzliMTFkNWQwYmQ2MDBiMWE2ZThlNjNiMGQ2ZDUy
OGU4YjI5NSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1NraXBwZWQKKysr
IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1NraXBwZWQKQEAgLTMwOCw2ICszMDgsNyBAQCBo
dHRwL3Rlc3RzL21lZGlhL3ZpZGVvLWJ1ZmZlcmVkLmh0bWwKICMgRmlsZVN5c3RlbSBBUEkgaXMg
bm90IHN1cHBvcnRlZC4KIGZhc3QvZmlsZXN5c3RlbQogaHR0cC90ZXN0cy9maWxlc3lzdGVtCito
dHRwL3Rlc3RzL2luc3BlY3Rvci9maWxlc3lzdGVtCiBodHRwL3Rlc3RzL3NlY3VyaXR5L2ZpbGVz
eXN0ZW0taWZyYW1lLWZyb20tcmVtb3RlLmh0bWwKIGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3Rz
L2h5Ymkvc2VuZC1maWxlLWJsb2IuaHRtbAogaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHli
aS9zZW5kLWZpbGUtYmxvYi1mYWlsLmh0bWwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRm
b3JtL3F0L1NraXBwZWQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9Ta2lwcGVkCmluZGV4IDI2
YWU0NzgxZGM5N2YxNzNkNTEzOGVlMWVjMTU0NTRkM2IyNjQ1ZjQuLjA0Y2NiNDA2NmQ2OTBjOTg0
MWQ5ZGY4ODJmMzlkYmFjYWY2YWEwMzEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3Jt
L3F0L1NraXBwZWQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvU2tpcHBlZApAQCAtMTE5
LDYgKzExOSw3IEBAIHN2Zy93ZWJhcmNoaXZlCiAjIEVOQUJMRShGSUxFX1NZU1RFTSkgaXMgZGlz
YWJsZWQuCiBmYXN0L2ZpbGVzeXN0ZW0KIGh0dHAvdGVzdHMvZmlsZXN5c3RlbQoraHR0cC90ZXN0
cy9pbnNwZWN0b3IvZmlsZXN5c3RlbQogaHR0cC90ZXN0cy9zZWN1cml0eS9maWxlc3lzdGVtLWlm
cmFtZS1mcm9tLXJlbW90ZS5odG1sCiBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3Nl
bmQtZmlsZS1ibG9iLmh0bWwKIGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvc2VuZC1m
aWxlLWJsb2ItZmFpbC5odG1sCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4v
U2tpcHBlZCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9Ta2lwcGVkCmluZGV4IDUwNzYyMTE5
MTcwYWU5MDljMWVmODkzMThhODNhMzI3Y2I3NTZiODguLjBhODI1Y2RjMmM4N2Y3YjE1MzMyMTZl
NWJmYjhlMDc3ZGFlZDE0Y2IgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9T
a2lwcGVkCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9Ta2lwcGVkCkBAIC0xMjIzLDYg
KzEyMjMsNyBAQCBmYXN0L3BhcnNlci9wcmUtaHRtbDUtcGFyc2VyLXF1aXJrcy5odG1sCiBmYXN0
L2ZpbGVzeXN0ZW0KIGh0dHAvdGVzdHMvZmlsZXN5c3RlbQogaHR0cC90ZXN0cy9zZWN1cml0eS9m
aWxlc3lzdGVtLWlmcmFtZS1mcm9tLXJlbW90ZS5odG1sCitodHRwL3Rlc3RzL2luc3BlY3Rvci9m
aWxlc3lzdGVtCiBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3NlbmQtZmlsZS1ibG9i
Lmh0bWwKIGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvc2VuZC1maWxlLWJsb2ItZmFp
bC5odG1sCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbmNhaXJvL1NraXBw
ZWQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW5jYWlyby9Ta2lwcGVkCmluZGV4IDNjMDNlMDMz
N2IxNjc1OTdkMWE1NWNhMDc4ZTIyODkyNWQxMjdiOTguLmZjMmNiM2I3OGEwYWM0OGFhMDQ1OTgx
N2IyMWNkOWNjODY2YjE4MWQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbmNh
aXJvL1NraXBwZWQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luY2Fpcm8vU2tpcHBlZApA
QCAtMTc0Miw2ICsxNzQyLDcgQEAgaHR0cC90ZXN0cy9maWxlc3lzdGVtCiBodHRwL3Rlc3RzL3Nl
Y3VyaXR5L2ZpbGVzeXN0ZW0taWZyYW1lLWZyb20tcmVtb3RlLmh0bWwKIGh0dHAvdGVzdHMvd2Vi
c29ja2V0L3Rlc3RzL2h5Ymkvc2VuZC1maWxlLWJsb2IuaHRtbAogaHR0cC90ZXN0cy93ZWJzb2Nr
ZXQvdGVzdHMvaHliaS9zZW5kLWZpbGUtYmxvYi1mYWlsLmh0bWwKK2h0dHAvdGVzdHMvaW5zcGVj
dG9yL2ZpbGVzeXN0ZW0KIAogIyBMYXlvdXRUZXN0Q29udHJvbGxlcjo6bm9kZXNGcm9tUmVjdCBp
cyBub3Qgc3VwcG9ydGVkLgogZmFzdC9kb20vbm9kZXNGcm9tUmVjdC1iYXNpYy5odG1sCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>117345</attachid>
            <date>2011-11-30 22:25:58 -0800</date>
            <delta_ts>2011-11-30 22:25:58 -0800</delta_ts>
            <desc>storage tree icon</desc>
            <filename>fileSystem.png</filename>
            <type>image/png</type>
            <size>1226</size>
            <attacher name="Taiju Tsuiki">tzik</attacher>
            
              <data encoding="base64">iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A
/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9sMAQYKHCMCBF8AAARKSURBVFjD
7ZfNjxRFGMZ/1d0zu8qaXTCrMTEBTRYRIokfBwWz0YNKCERPevEfkOPGxAPxRuLBIzHGo3IjejAx
EkQRFWUNQjC4IGvwA9iwBDe77Of0dNX7eqjumemd7t7ZeNRKJlPprqrneT/qed+G//ow2eTdg6+/
A7wBDPa6OQwMTnR9gMa8/+ahIweKCMzt3/P8YBjVKg9Q9YDimoyP/8gzu3avi8DxE6ewVobGDh25
AxBlLyS1RMStRlwFLikBl/4noNITeBD1dT2LSszMWdsekpuraiG4aqn7us6MujblFklpCLI93WBF
3ghKyUWrN2cLtMiMDmtVBKdtQNWqZHSla6KqROsC1U4LtdClaw1RJU5cMYFvvjuz7nt8+sy5f6UD
UafVe/a+3NMmVUGc5cQXx3hxz76ewYKwxicfHy1PwuU7N1GVtltz7s272tkEVWVp9nqPimcI63ch
VUnoszpLbS28WwvzC1y9cpWpazdYXG5wfHoaBVSUwU1DPLJ9hI2bhjCB6UAPUJSwKgRWUpFRyYsP
HZqgwm+XJnFi2PnUk4gTarUaJghpLC9we/oWly9eYddzT7eOMCafyNZKMQHnpGWpqLQ2tbkISTNh
+uYM23aMsOvZJ2jGCf39fQRhxPL8DBMXHKdOnuP6H9eo99URkU61J6jN4poxjaWlu4G8FDtRvv3+
LIktl9Xl2Tk2bLyPMIC/Jn7COsUYvz4KhLpZYfOW+5n4+TLOqbd+dRhNQJjYUVU9aozRXBK+VJDR
2uG+Dw8f5pXX9rF1xzZs3PCxV01TDMQJO0W95Z2Cpj4WUTzHV8e+5sLE1FvAEvBZLgmX56ZwtpG6
rpuAs5Z6vYb214nEtsSo9R+aNOjGh1DSfFKBIEAXZwib8xBEA0B/9y1Acc5WXifnFOMsapspsKSK
KBhxIAmo83N17aQODGZpBmnGYIzLJDVqNwrtEotUlFdN34tFUYwKSAZoMS6GFFxFMJqSMoHfHASt
2tBdC9SCSM7thbVWHIjFpHPjGh5EHJpabdIfLoFkJbMwdyu6CHx5+mLlLWjVJnEYl3i3Jyug3u3e
8nbTQhJD0vDgJUUrR2D/3hcqq9tH733g3zsB20jdnaDqvLWq3ismBXdJR9xMNQFjDIuzN3DNlTUK
kfcArgl2xYPSoZ6qYBMPrkq3GPTSkqHVjbSSZrjLr8/AXOKfdYKnc1NJQMRfxoIkNCbw212C2hgj
gooUV82soHXip4Kkq9a3CASGtBRLaQ9gTEDj2nlscO+qbqjXrkhx4nKddzQ6OtoHDGWdY9Q3UPJB
ETDy6EP8cP5Pxs//jsGUw5aEXWxCbdPDPLb78YGFhYWBzAN9wPb5peTzT09O7AM2lPK3CYP3PEi9
VvfWm4oWvIiAsww+sPX2wPDms5OTk5czAjFw6dyvfx8E3l7rkAMHXt0yPDy80a2l2WWfc2EYxXF8
c2xs7Bf+H8A/OyHImq3+yeYAAAAASUVORK5CYII=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>127753</attachid>
            <date>2012-02-19 20:35:29 -0800</date>
            <delta_ts>2012-05-17 21:50:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-72691-20120220133527.patch</filename>
            <type>text/plain</type>
            <size>63752</size>
            <attacher name="Taiju Tsuiki">tzik</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA4MjA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDA0OTJkZTBmYWE1MTQ1
ZGM0ZTAwMjM0YTk5MjI2NTYzOGMxYmM4Yi4uZjJjNmEzZmMxNTQ5ZTA5MzIwNjY0YzkzZjMxODAy
NTM5OWJkOWZlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUyIEBACisyMDEyLTAyLTE5ICBUYWlq
dSBUU1VJS0kgIDx0emlrQGNocm9taXVtLm9yZz4KKworICAgICAgICBbSW5zcGVjdG9yXVtGaWxl
U3lzdGVtXSBBZGQgRmlsZVN5c3RlbSBpdGVtIHRvIHN0b3JhZ2UgdHJlZQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzI2OTEKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAg
ICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajoKKyAgICAgICAgKiBXZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogZmlsZWFwaS9ET01GaWxlU3lzdGVt
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTUZpbGVTeXN0ZW06OmNyZWF0ZSk6IFJlbW92ZWQg
aW5zdHJ1bWVudGF0aW9uLgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3IuanNvbjoKKyAg
ICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQmFzZUFnZW50Lmg6CisgICAgICAgIChJbnNwZWN0
b3JBZ2VudFByb3ZpZGVyKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckFnZW50UHJvdmlk
ZXI6OmFnZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckFnZW50UHJvdmlkZXI6On5J
bnNwZWN0b3JBZ2VudFByb3ZpZGVyKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckFnZW50
UHJvdmlkZXI6Okluc3BlY3RvckFnZW50UHJvdmlkZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yQWdlbnRQcm92aWRlcjo6Y2xlYXIpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
QmFzZUFnZW50Ojp+SW5zcGVjdG9yQmFzZUFnZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvckJhc2VBZ2VudDo6YWdlbnRQcm92aWRlcik6CisgICAgICAgIChJbnNwZWN0b3JCYXNlQWdl
bnQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQuY3BwOgor
ICAgICAgICAoSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50OjpSZWFkRGlyZWN0b3J5VGFzayk6Cisg
ICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckZpbGVTeXN0ZW1BZ2VudC5oOgorICAgICAgICAo
V2ViQ29yZSk6CisgICAgICAgIChJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQpOgorICAgICAgICAq
IGluc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwOgorICAgICAgICAoV2ViQ29y
ZSk6CisgICAgICAgICogaW5zcGVjdG9yL2NvbXBpbGUtZnJvbnQtZW5kLnNoOgorICAgICAgICAq
IGluc3BlY3Rvci9mcm9udC1lbmQvRmlsZUNvbnRlbnRWaWV3LmpzOiBBZGRlZAorICAgICAgICAq
IGluc3BlY3Rvci9mcm9udC1lbmQvRmlsZVN5c3RlbS5qczogQWRkZWQuCisgICAgICAgICogaW5z
cGVjdG9yL2Zyb250LWVuZC9GaWxlU3lzdGVtVmlldy5qczogQWRkZWQuCisgICAgICAgICogaW5z
cGVjdG9yL2Zyb250LWVuZC9JbWFnZXMvZmlsZXN5c3RlbS5wbmc6IEFkZGVkLgorICAgICAgICAq
IGluc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VzUGFuZWwuanM6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuUmVzb3VyY2VzUGFuZWwucHJvdG90eXBlLl9pbml0aWFsaXplKToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5SZXNvdXJjZXNQYW5lbC5wcm90b3R5cGUuYWRkRmlsZVN5c3RlbSk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuUmVzb3VyY2VzUGFuZWwucHJvdG90eXBlLnJlbW92ZUZpbGVTeXN0
ZW0pOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNlc1BhbmVsLnByb3RvdHlwZS5zaG93
RmlsZVN5c3RlbSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVzb3VyY2VzUGFuZWwucHJvdG90
eXBlLl9wb3B1bGF0ZUZpbGVTeXN0ZW1UcmVlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5GaWxl
U3lzdGVtVHJlZUVsZW1lbnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1UcmVl
RWxlbWVudC5wcm90b3R5cGUub25zZWxlY3QpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1l
bmQvV2ViS2l0LnFyYzoKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5o
dG1sOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvcmVzb3VyY2VzUGFuZWwuY3NzOgor
ICAgICAgICAoLmZpbGVzeXN0ZW0tc3RvcmFnZS10cmVlLWl0ZW0gLmljb24pOgorICAgICAgICAo
LmZpbGVzeXN0ZW0tZGlyZWN0b3J5LXRyZWUgbGkpOgorICAgICAgICAoLmZpbGUtY29udGVudC12
aWV3KToKKwogMjAxMi0wMi0xOSAgSmFtZXMgUm9iaW5zb24gIDxqYW1lc3JAY2hyb21pdW0ub3Jn
PgogCiAgICAgICAgIE1vdmUgc3R1YiBpbXBsZW1lbnRhdGlvbnMgb2YgU2Nyb2xsaW5nQ29vcmRp
bmF0b3IgZnVuY3Rpb25zIGludG8gU2Nyb2xsaW5nQ29vcmRpbmF0b3JOb25lLmNwcApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5neXBpCmluZGV4IDZkMWQyODhkZWJiOGZiMjg0Njg3NzZjZTEzNjE5YmNjZTU4OTA3MzQuLmEw
NDI4YzBkMzIxOTNlNzg1YWUwYWFmODBhM2E4OTA2MDMyZDYyZmEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkK
QEAgLTIzODQsNyArMjM4NCw2IEBACiAgICAgICAgICAgICAnaW5zcGVjdG9yL0luc3BlY3RvckRl
YnVnZ2VyQWdlbnQuaCcsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL0luc3BlY3RvckZpbGVTeXN0
ZW1BZ2VudC5jcHAnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9JbnNwZWN0b3JGaWxlU3lzdGVt
QWdlbnQuaCcsCi0gICAgICAgICAgICAnaW5zcGVjdG9yL0luc3BlY3RvckZpbGVTeXN0ZW1JbnN0
cnVtZW50YXRpb24uaCcsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5k
Q2hhbm5lbC5oJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGll
bnRMb2NhbC5jcHAnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhv
c3QuY3BwJywKQEAgLTYxMjYsNiArNjEyNSw5IEBACiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zy
b250LWVuZC9FeHRlbnNpb25QYW5lbC5qcycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250
LWVuZC9FeHRlbnNpb25SZWdpc3RyeVN0dWIuanMnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9m
cm9udC1lbmQvRXh0ZW5zaW9uU2VydmVyLmpzJywKKyAgICAgICAgICAgICdpbnNwZWN0b3IvZnJv
bnQtZW5kL0ZpbGVDb250ZW50Vmlldy5qcycsCisgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250
LWVuZC9GaWxlU3lzdGVtLmpzJywKKyAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0Zp
bGVTeXN0ZW1WaWV3LmpzJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0ZpbHRl
cmVkSXRlbVNlbGVjdGlvbkRpYWxvZy5qcycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250
LWVuZC9Gb250Vmlldy5qcycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9Hb1Rv
TGluZURpYWxvZy5qcycsCkBAIC02MjkzLDYgKzYyOTUsNyBAQAogICAgICAgICAgICAgJ2luc3Bl
Y3Rvci9mcm9udC1lbmQvSW1hZ2VzL2Vycm9yTWVkaXVtSWNvbi5wbmcnLAogICAgICAgICAgICAg
J2luc3BlY3Rvci9mcm9udC1lbmQvSW1hZ2VzL2Vycm9yUmVkRG90LnBuZycsCiAgICAgICAgICAg
ICAnaW5zcGVjdG9yL2Zyb250LWVuZC9JbWFnZXMvZm9yd2FyZC5wbmcnLAorICAgICAgICAgICAg
J2luc3BlY3Rvci9mcm9udC1lbmQvSW1hZ2VzL2ZpbGVzeXN0ZW0ucG5nJywKICAgICAgICAgICAg
ICdpbnNwZWN0b3IvZnJvbnQtZW5kL0ltYWdlcy9mcmFtZS5wbmcnLAogICAgICAgICAgICAgJ2lu
c3BlY3Rvci9mcm9udC1lbmQvSW1hZ2VzL2dsb3NzeUhlYWRlci5wbmcnLAogICAgICAgICAgICAg
J2luc3BlY3Rvci9mcm9udC1lbmQvSW1hZ2VzL2dsb3NzeUhlYWRlclByZXNzZWQucG5nJywKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKaW5kZXggODBkYzM2
YTE5OWI4YTA2YWZiODA2NmI0MzljNzQ3ZjVjMGNlM2E5Yi4uZGMwOGQzNmNlMjk3YTBmZWUyYjQ1
MjRiMDUwNmJlZmE1ZTc0OTgwYiAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52
Y3Byb2ovV2ViQ29yZS52Y3Byb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ov
V2ViQ29yZS52Y3Byb2oKQEAgLTcxOTE4LDEwICs3MTkxOCw2IEBACiAJCQkJPgogCQkJPC9GaWxl
PgogCQkJPEZpbGUKLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGluc3BlY3RvclxJbnNwZWN0b3JGaWxl
U3lzdGVtSW5zdHJ1bWVudGF0aW9uLmgiCi0JCQkJPgotCQkJPC9GaWxlPgotCQkJPEZpbGUKIAkJ
CQlSZWxhdGl2ZVBhdGg9Ii4uXGluc3BlY3RvclxJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwuaCIK
IAkJCQk+CiAJCQk8L0ZpbGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKaW5kZXggNjJjM2JlM2ViY2JlMDc4NTMwM2Q2N2RjMTU1ZmZiYTg1
OTIwMjQ0Yi4uOGEyZTEyYmNmZTdlYmE5N2U2NWUyYmQ1MDM3NWIwZDIwNDc2YTVmYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisr
KyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAt
MzQzLDcgKzM0Myw2IEBACiAJCTE1Qzc3MEE2MTAwRDQxQ0QwMDVCQTI2NyAvKiBET01WYWxpZGl0
eVN0YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAx
NUM3NzBBNDEwMEQ0MUNEMDA1QkEyNjcgLyogRE9NVmFsaWRpdHlTdGF0ZS5oICovOyB9OwogCQkx
NUQxN0QyMTE0NzIzMUVCMDA1RUJDQTYgLyogSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50LmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE1RDE3RDFFMTQ3
MjMxRUIwMDVFQkNBNiAvKiBJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQuY3BwICovOyB9OwogCQkx
NUQxN0QyMjE0NzIzMUVCMDA1RUJDQTYgLyogSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNUQxN0QxRjE0NzIz
MUVCMDA1RUJDQTYgLyogSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50LmggKi87IH07Ci0JCTE1RDE3
RDIzMTQ3MjMxRUIwMDVFQkNBNiAvKiBJbnNwZWN0b3JGaWxlU3lzdGVtSW5zdHJ1bWVudGF0aW9u
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNUQxN0Qy
MDE0NzIzMUVCMDA1RUJDQTYgLyogSW5zcGVjdG9yRmlsZVN5c3RlbUluc3RydW1lbnRhdGlvbi5o
ICovOyB9OwogCQkxNjNFODhGNzExOEEzOUQyMDBFRDkyMzEgLyogU2ltcGxlRm9udERhdGFDb3Jl
VGV4dC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAx
NjNFODhGNTExOEEzOUQyMDBFRDkyMzEgLyogU2ltcGxlRm9udERhdGFDb3JlVGV4dC5jcHAgKi87
IH07CiAJCTE2M0U4QjEzMTE4QjNBREQwMEVEOTIzMSAvKiBTaW1wbGVGb250RGF0YUFUU1VJLm1t
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTYzRThCMTIx
MThCM0FERDAwRUQ5MjMxIC8qIFNpbXBsZUZvbnREYXRhQVRTVUkubW0gKi87IH07CiAJCTE4NUJD
RjI4MEYzMjc5Q0UwMDBFQTI2MiAvKiBUaHJlYWRUaW1lcnMuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTg1QkNGMjYwRjMyNzlDRTAwMEVBMjYyIC8q
IFRocmVhZFRpbWVycy5jcHAgKi87IH07CkBAIC03MDc5LDcgKzcwNzgsNiBAQAogCQkxNUM3NzBB
NDEwMEQ0MUNEMDA1QkEyNjcgLyogRE9NVmFsaWRpdHlTdGF0ZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBET01WYWxpZGl0eVN0YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTE1RDE3RDFFMTQ3MjMxRUIwMDVFQkNBNiAvKiBJbnNwZWN0b3JGaWxlU3lzdGVt
QWdlbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5zcGVjdG9y
RmlsZVN5c3RlbUFnZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTVEMTdE
MUYxNDcyMzFFQjAwNUVCQ0E2IC8qIEluc3BlY3RvckZpbGVTeXN0ZW1BZ2VudC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMTVEMTdEMjAxNDcyMzFFQjAwNUVCQ0E2IC8qIElu
c3BlY3RvckZpbGVTeXN0ZW1JbnN0cnVtZW50YXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSW5zcGVjdG9yRmlsZVN5c3RlbUluc3RydW1lbnRhdGlvbi5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkxNjNFODhGNTExOEEzOUQyMDBFRDkyMzEgLyogU2ltcGxl
Rm9udERhdGFDb3JlVGV4dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBTaW1wbGVGb250RGF0YUNvcmVUZXh0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMTYzRThCMTIxMThCM0FERDAwRUQ5MjMxIC8qIFNpbXBsZUZvbnREYXRhQVRTVUkubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBTaW1wbGVGb250RGF0YUFUU1VJ
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxODVCQ0YyNjBGMzI3OUNFMDAwRUEy
NjIgLyogVGhyZWFkVGltZXJzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFRocmVhZFRpbWVycy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNDEz
MSw3ICsxNDEyOSw2IEBACiAJCQkJNDFGMDYxNzIwRjVGMDBBQzAwQTA3RUFDIC8qIEluc3BlY3Rv
ckRPTVN0b3JhZ2VSZXNvdXJjZS5oICovLAogCQkJCTE1RDE3RDFFMTQ3MjMxRUIwMDVFQkNBNiAv
KiBJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQuY3BwICovLAogCQkJCTE1RDE3RDFGMTQ3MjMxRUIw
MDVFQkNBNiAvKiBJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQuaCAqLywKLQkJCQkxNUQxN0QyMDE0
NzIzMUVCMDA1RUJDQTYgLyogSW5zcGVjdG9yRmlsZVN5c3RlbUluc3RydW1lbnRhdGlvbi5oICov
LAogCQkJCTIyNzc3NzVGMTM0NURFQTkwMDhFQTQ1NSAvKiBJbnNwZWN0b3JGcm9udGVuZENoYW5u
ZWwuaCAqLywKIAkJCQlGMzQ0QzcxMjExMjVCODJDMDBGMjZFRUUgLyogSW5zcGVjdG9yRnJvbnRl
bmRDbGllbnQuaCAqLywKIAkJCQlGMzQ0Qzc1NzExMjk0RkY2MDBGMjZFRUUgLyogSW5zcGVjdG9y
RnJvbnRlbmRDbGllbnRMb2NhbC5jcHAgKi8sCkBAIC0yMjU5MSw3ICsyMjU4OCw2IEBACiAJCQkJ
N0E3NEVDQkIxMDE4MzlBNjAwQkY5MzlFIC8qIEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNDFGMDYxNzQwRjVGMDBBQzAwQTA3RUFDIC8qIEluc3BlY3RvckRP
TVN0b3JhZ2VSZXNvdXJjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTVEMTdEMjIxNDcyMzFFQjAw
NUVCQ0E2IC8qIEluc3BlY3RvckZpbGVTeXN0ZW1BZ2VudC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJ
MTVEMTdEMjMxNDcyMzFFQjAwNUVCQ0E2IC8qIEluc3BlY3RvckZpbGVTeXN0ZW1JbnN0cnVtZW50
YXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTIyNzc3NzYwMTM0NURFQTkwMDhFQTQ1NSAvKiBJ
bnNwZWN0b3JGcm9udGVuZENoYW5uZWwuaCBpbiBIZWFkZXJzICovLAogCQkJCUYzNDRDNzE0MTEy
NUI4MkMwMEYyNkVFRSAvKiBJbnNwZWN0b3JGcm9udGVuZENsaWVudC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJRjM0NEM3NTMxMTI5NEQ5RDAwRjI2RUVFIC8qIEluc3BlY3RvckZyb250ZW5kQ2xpZW50
TG9jYWwuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFw
aS9ET01GaWxlU3lzdGVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRE9NRmlsZVN5c3Rl
bS5jcHAKaW5kZXggOTc5OWUxMjA3OWU4YWVkNDIzNTdhODE2ZmJjNjE1YmQ5YmJhMGI0NC4uODlj
NGJlMzg4MzQ5ZjlhMGE4YzY5Y2FhYWJhMTYyNGQ0NTRkYTU5MCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZmlsZWFwaS9ET01GaWxlU3lzdGVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9m
aWxlYXBpL0RPTUZpbGVTeXN0ZW0uY3BwCkBAIC00NSw3ICs0NSw2IEBACiAjaW5jbHVkZSAiRmls
ZVdyaXRlci5oIgogI2luY2x1ZGUgIkZpbGVXcml0ZXJCYXNlQ2FsbGJhY2suaCIKICNpbmNsdWRl
ICJGaWxlV3JpdGVyQ2FsbGJhY2suaCIKLSNpbmNsdWRlICJJbnNwZWN0b3JGaWxlU3lzdGVtSW5z
dHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiTWV0YWRhdGFDYWxsYmFjay5oIgogI2luY2x1ZGUg
IlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CkBAIC01
Nyw3ICs1Niw2IEBAIFBhc3NSZWZQdHI8RE9NRmlsZVN5c3RlbT4gRE9NRmlsZVN5c3RlbTo6Y3Jl
YXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsCiB7CiAgICAgUmVmUHRyPERPTUZp
bGVTeXN0ZW0+IGZpbGVTeXN0ZW0oYWRvcHRSZWYobmV3IERPTUZpbGVTeXN0ZW0oY29udGV4dCwg
bmFtZSwgYXN5bmNGaWxlU3lzdGVtKSkpOwogICAgIGZpbGVTeXN0ZW0tPnN1c3BlbmRJZk5lZWRl
ZCgpOwotICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkT3BlbkZpbGVTeXN0ZW0oZmls
ZVN5c3RlbS5nZXQoKSk7CiAgICAgcmV0dXJuIGZpbGVTeXN0ZW0ucmVsZWFzZSgpOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24gYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24KaW5kZXggYzJjNGZlZWI0ZWM3M2Zj
OWMxZjNjZmI2OGQ2ZWY2ODA5NmJkOTM0NC4uY2JjN2MxYTNkMWFiN2JkODk0NDRkYjgyMTczNDgz
OGQ4NmM0MDkyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ci5qc29uCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbgpAQCAt
MTI0OSw2ICsxMjQ5LDE5IEBACiAgICAgewogICAgICAgICAiZG9tYWluIjogIkZpbGVTeXN0ZW0i
LAogICAgICAgICAiaGlkZGVuIjogdHJ1ZSwKKyAgICAgICAgInR5cGVzIjogWworICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgICJpZCI6ICJFbnRyeSIsCisgICAgICAgICAgICAgICAgImRl
c2NyaXB0aW9uIjogIkRpcmVjdG9yeSBlbnRyeSBvciBmaWxlIGVudHJ5IG9iamVjdC4iLAorICAg
ICAgICAgICAgICAgICJ0eXBlIjogIm9iamVjdCIsCisgICAgICAgICAgICAgICAgInByb2VydGll
cyI6IFsKKyAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJ1cmwiLCAidHlwZSI6ICJzdHJp
bmciIH0sCisgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAibmFtZSIsICJ0eXBlIjogInN0
cmluZyIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJwYXRoIiwgInR5cGUiOiAi
c3RyaW5nIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImlzRGlyZWN0b3J5Iiwg
InR5cGUiOiAiYm9vbGVhbiIgfQorICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgIH0KKyAg
ICAgICAgXSwKICAgICAgICAgImNvbW1hbmRzIjogWwogICAgICAgICAgICAgewogICAgICAgICAg
ICAgICAgICJuYW1lIjogImVuYWJsZSIsCkBAIC0xMjU2LDEwICsxMjY5LDUyIEBACiAgICAgICAg
ICAgICB9LAogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICJuYW1lIjogImRpc2FibGUi
LAotICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJEaXNhYmxlcyBldmVudHMgZnJvbSBi
YWNrZW5kLi4iCisgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkRpc2FibGVzIGV2ZW50
cyBmcm9tIGJhY2tlbmQuIgorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICAibmFtZSI6ICJnZXRSb290IiwKKyAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24i
OiAiUG9zdHMgYSByZXF1ZXN0IHRvIGdldCByb290IGRpcmVjdG9yeSBlbnRyeSBvZiB0aGUgZmls
ZXN5c3RlbS4iLAorICAgICAgICAgICAgICAgICJwYXJhbWV0ZXJzIjogWworICAgICAgICAgICAg
ICAgICAgICB7ICJuYW1lIjogImZyYW1lSWQiLCAidHlwZSI6ICJzdHJpbmciIH0sCisgICAgICAg
ICAgICAgICAgICAgIHsgIm5hbWUiOiAib3JpZ2luIiwgInR5cGUiOiAic3RyaW5nIiB9LAorICAg
ICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImZpbGVzeXN0ZW1UeXBlIiwgInR5cGUiOiAic3Ry
aW5nIiB9CisgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICAibmFtZSI6ICJyZWFkRGlyZWN0b3J5IiwKKyAgICAgICAgICAgICAg
ICAiZGVzY3JpcHRpb24iOiAiUG9zdHMgYSByZXF1ZXN0IHRvIHJlYWQgY29udGVudCBvZiB0aGUg
ZGlyZWN0b3J5LiIsCisgICAgICAgICAgICAgICAgInBhcmFtZXRlcnMiOiBbCisgICAgICAgICAg
ICAgICAgICAgIHsgIm5hbWUiOiAiZnJhbWVJZCIsICJ0eXBlIjogInN0cmluZyIgfSwKKyAgICAg
ICAgICAgICAgICAgICAgeyAibmFtZSI6ICJ1cmwiLCAidHlwZSI6ICJzdHJpbmciIH0KKyAgICAg
ICAgICAgICAgICBdCiAgICAgICAgICAgICB9CiAgICAgICAgIF0sCiAgICAgICAgICJldmVudHMi
OiBbCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgIm5hbWUiOiAiZGlkR2V0Um9vdCIs
CisgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkNvbXBsZXRpb24gZXZlbnQgb2YgZ2V0
Um9vdCByZXF1ZXN0LiAgSWYgdGhlIHJlcXVlc3QgY29tcGxldGVkIHN1Y2Nlc3NmdWxseSwgZXJy
b3JDb2RlIGlzIHNldCBhcyAwIGFuZCByb290IGNvbnRhaW5zIGRpcmVjdG9yeSBlbnRyeSBvZiB0
aGUgcm9vdCBkaXJlY3RvcnkuIiwKKyAgICAgICAgICAgICAgICAicGFyYW1ldGVycyI6IFsKKyAg
ICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJmcmFtZUlkIiwgInR5cGUiOiAic3RyaW5nIiB9
LAorICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogIm9yaWdpbiIsICJ0eXBlIjogInN0cmlu
ZyIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJmaWxlc3lzdGVtVHlwZSIsICJ0
eXBlIjogInN0cmluZyIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJlcnJvckNv
ZGUiLCAidHlwZSI6ICJpbnRlZ2VyIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjog
InJvb3QiLCAiJHJlZiI6ICJGaWxlU3lzdGVtLkVudHJ5IiB9CisgICAgICAgICAgICAgICAgXQor
ICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAibmFtZSI6ICJk
aWRSZWFkRGlyZWN0b3J5IiwKKyAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiQ29tcGxl
dGlvbiBldmVudCBvZiByZWFkRGlyZWN0b3J5IHJlcXVlc3QuICBJZiB0aGUgcmVxdWVzdCBjb21w
bGV0ZWQgc3VjY2Vzc2Z1bGx5LCBlcnJvckNvZGUgaXMgc2V0IGFzIDAgYW5kIGVudHJpZXMgY29u
dGFpbnMgZGlyZWN0b3J5IGNvbnRlbnRzLiIsCisgICAgICAgICAgICAgICAgInBhcmFtZXRlcnMi
OiBbCisgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiZnJhbWVJZCIsICJ0eXBlIjogInN0
cmluZyIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJvcmlnaW4iLCAidHlwZSI6
ICJzdHJpbmciIH0sCisgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiZXJyb3JDb2RlIiwg
InR5cGUiOiAiaW50ZWdlciIgfSwKKyAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgICAgICAgICAgIm5hbWUiOiAiZW50cmllcyIsCisgICAgICAgICAgICAgICAgICAgICAgICAi
dHlwZSI6ICJhcnJheSIsCisgICAgICAgICAgICAgICAgICAgICAgICAiaXRlbXMiIDogeyAiJHJl
ZiI6ICJGaWxlU3lzdGVtLkVudHJ5IiB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICBdCisgICAgICAgICAgICB9CiAgICAgICAgIF0KICAgICB9LAogICAgIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYXNlQWdlbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYXNlQWdlbnQuaAppbmRleCA4MDBmOTY3
MzZhOGY4NjhiNzQyMmRlNWNmMDAwOWI0MGEyYzEwMmYxLi5jODUyYzJiNjFkYzczYWJiNWYwNGRk
ZGJkZjBkOTQxNzY3N2EyNzNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yQmFzZUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckJhc2VBZ2VudC5oCkBAIC01NywxMCArNTcsMzIgQEAgcHJpdmF0ZToKICAgICBTdHJpbmcg
bV9uYW1lOwogfTsKIAordGVtcGxhdGU8dHlwZW5hbWU+CitjbGFzcyBJbnNwZWN0b3JCYXNlQWdl
bnQ7CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+CitjbGFzcyBJbnNwZWN0b3JBZ2VudFByb3ZpZGVy
IDogcHVibGljIFJlZkNvdW50ZWQ8SW5zcGVjdG9yQWdlbnRQcm92aWRlcjxUPiA+IHsKKyAgICBX
VEZfTUFLRV9OT05DT1BZQUJMRShJbnNwZWN0b3JBZ2VudFByb3ZpZGVyPFQ+KTsKK3B1YmxpYzoK
KyAgICBUKiBhZ2VudCgpIHsgcmV0dXJuIG1fYWdlbnQ7IH0KKyAgICB2aXJ0dWFsIH5JbnNwZWN0
b3JBZ2VudFByb3ZpZGVyKCkgeyB9CisKK3ByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIEluc3Bl
Y3RvckJhc2VBZ2VudDxUPjsKKyAgICBleHBsaWNpdCBJbnNwZWN0b3JBZ2VudFByb3ZpZGVyKFQq
IGFnZW50KSA6IG1fYWdlbnQoYWdlbnQpIHsgfQorICAgIHZvaWQgY2xlYXIoKSB7IG1fYWdlbnQg
PSAwOyB9CisKKyAgICBUKiBtX2FnZW50OworfTsKKwogdGVtcGxhdGU8dHlwZW5hbWUgVD4KIGNs
YXNzIEluc3BlY3RvckJhc2VBZ2VudCA6IHB1YmxpYyBJbnNwZWN0b3JCYXNlQWdlbnRJbnRlcmZh
Y2UgewogcHVibGljOgotICAgIHZpcnR1YWwgfkluc3BlY3RvckJhc2VBZ2VudCgpIHsgfQorICAg
IHZpcnR1YWwgfkluc3BlY3RvckJhc2VBZ2VudCgpCisgICAgeworICAgICAgICBpZiAobV9hZ2Vu
dFByb3ZpZGVyKQorICAgICAgICAgICAgbV9hZ2VudFByb3ZpZGVyLT5jbGVhcigpOworICAgIH0K
IAogICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckluRGlzcGF0Y2hlcihJbnNwZWN0b3JCYWNrZW5k
RGlzcGF0Y2hlciogZGlzcGF0Y2hlcikKICAgICB7CkBAIC03NSw4ICs5NywxNyBAQCBwcm90ZWN0
ZWQ6CiAgICAgewogICAgIH0KIAorICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9yQWdlbnRQcm92aWRl
cjxUPiA+IGFnZW50UHJvdmlkZXIoKQorICAgIHsKKyAgICAgICAgaWYgKCFtX2FnZW50UHJvdmlk
ZXIpCisgICAgICAgICAgICBtX2FnZW50UHJvdmlkZXIgPSBhZG9wdFJlZihuZXcgSW5zcGVjdG9y
QWdlbnRQcm92aWRlcjxUPihzdGF0aWNfY2FzdDxUKj4odGhpcykpKTsKKyAgICAgICAgcmV0dXJu
IG1fYWdlbnRQcm92aWRlcjsKKyAgICB9CisKICAgICBJbnN0cnVtZW50aW5nQWdlbnRzKiBtX2lu
c3RydW1lbnRpbmdBZ2VudHM7CiAgICAgSW5zcGVjdG9yU3RhdGUqIG1fc3RhdGU7Citwcml2YXRl
OgorICAgIFJlZlB0cjxJbnNwZWN0b3JBZ2VudFByb3ZpZGVyPFQ+ID4gbV9hZ2VudFByb3ZpZGVy
OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckZpbGVTeXN0ZW1BZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50LmNwcAppbmRleCA3MjUwMTY2Y2Iz
ZDUyZDUzNzYzMzk5YjVkMDgzNmU3MzQ4YWZkMTZhLi4xMjE5NWE0NmRlMDdjNGI1MjM0OTcyMzM4
NDYwNGU2NDc4YTY0ZWVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yRmlsZVN5c3RlbUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50LmNwcApAQCAtMzMsMTYgKzMzLDEyNSBAQAogCiAjaWYg
RU5BQkxFKElOU1BFQ1RPUikgJiYgRU5BQkxFKEZJTEVfU1lTVEVNKQogCisjaW5jbHVkZSAiQXN5
bmNGaWxlU3lzdGVtLmgiCiAjaW5jbHVkZSAiRE9NRmlsZVN5c3RlbS5oIgorI2luY2x1ZGUgIkRp
cmVjdG9yeVJlYWRlci5oIgorI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiRW50cmll
c0NhbGxiYWNrLmgiCisjaW5jbHVkZSAiRW50cnlBcnJheS5oIgorI2luY2x1ZGUgIkVycm9yQ2Fs
bGJhY2suaCIKKyNpbmNsdWRlICJGaWxlU3lzdGVtQ2FsbGJhY2suaCIKKyNpbmNsdWRlICJGaWxl
U3lzdGVtQ2FsbGJhY2tzLmgiCisjaW5jbHVkZSAiRnJhbWUuaCIKKyNpbmNsdWRlICJJbnNwZWN0
b3JQYWdlQWdlbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JTdGF0ZS5oIgogI2luY2x1ZGUgIklu
c3RydW1lbnRpbmdBZ2VudHMuaCIKKyNpbmNsdWRlICJMb2NhbEZpbGVTeXN0ZW0uaCIKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCit0eXBlZGVmIEluc3BlY3RvckFnZW50UHJvdmlkZXI8SW5zcGVj
dG9yRmlsZVN5c3RlbUFnZW50PiBGaWxlU3lzdGVtQWdlbnRQcm92aWRlcjsKKwogbmFtZXNwYWNl
IEZpbGVTeXN0ZW1BZ2VudFN0YXRlIHsKIHN0YXRpYyBjb25zdCBjaGFyIGZpbGVTeXN0ZW1BZ2Vu
dEVuYWJsZWRbXSA9ICJmaWxlU3lzdGVtQWdlbnRFbmFibGVkIjsKIH0KIAorY2xhc3MgSW5zcGVj
dG9yRmlsZVN5c3RlbUFnZW50OjpSZWFkRGlyZWN0b3J5VGFzayA6IHB1YmxpYyBGaWxlU3lzdGVt
Q2FsbGJhY2sgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFJlYWREaXJlY3RvcnlUYXNrKTsK
K3B1YmxpYzoKKyAgICBjbGFzcyBSZWFkRGlyZWN0b3J5RW50cnlUYXNrIDogcHVibGljIEVudHJp
ZXNDYWxsYmFjayB7CisgICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFJlYWREaXJlY3RvcnlF
bnRyeVRhc2spOworICAgIHB1YmxpYzoKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8UmVhZERp
cmVjdG9yeUVudHJ5VGFzaz4gY3JlYXRlKFBhc3NSZWZQdHI8UmVhZERpcmVjdG9yeVRhc2s+IHRh
c2spCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgUmVhZERpcmVj
dG9yeUVudHJ5VGFzayh0YXNrKSk7CisgICAgICAgIH0KKworICAgICAgICB2aXJ0dWFsIGJvb2wg
aGFuZGxlRXZlbnQoRW50cnlBcnJheSogZW50cmllcykKKyAgICAgICAgeworICAgICAgICAgICAg
bV90YXNrLT5kaWRSZWFkRGlyZWN0b3J5KEZpbGVFcnJvcjo6T0ssIGVudHJpZXMpOworICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKworICAgIHByaXZhdGU6CisgICAgICAgIFJl
YWREaXJlY3RvcnlFbnRyeVRhc2soUGFzc1JlZlB0cjxSZWFkRGlyZWN0b3J5VGFzaz4gdGFzaykg
OiBtX3Rhc2sodGFzaykgeyB9CisgICAgICAgIHZpcnR1YWwgflJlYWREaXJlY3RvcnlFbnRyeVRh
c2soKSB7IH0KKyAgICAgICAgUmVmUHRyPFJlYWREaXJlY3RvcnlUYXNrPiBtX3Rhc2s7CisgICAg
fTsKKworICAgIGNsYXNzIEVycm9ySGFuZGxlciA6IHB1YmxpYyBFcnJvckNhbGxiYWNrIHsKKyAg
ICAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRXJyb3JIYW5kbGVyKTsKKyAgICBwdWJsaWM6Cisg
ICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEVycm9ySGFuZGxlcj4gY3JlYXRlKFBhc3NSZWZQdHI8
UmVhZERpcmVjdG9yeVRhc2s+IHRhc2spCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgRXJyb3JIYW5kbGVyKHRhc2spKTsKKyAgICAgICAgfQorCisgICAgICAgIHZp
cnR1YWwgYm9vbCBoYW5kbGVFdmVudChGaWxlRXJyb3IqIGVycm9yKQorICAgICAgICB7CisgICAg
ICAgICAgICBtX3Rhc2stPmRpZFJlYWREaXJlY3RvcnkoZXJyb3ItPmNvZGUoKSwgMCk7CisgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgIHByaXZhdGU6CisgICAgICAgIEVy
cm9ySGFuZGxlcihQYXNzUmVmUHRyPFJlYWREaXJlY3RvcnlUYXNrPiB0YXNrKSA6IG1fdGFzayh0
YXNrKSB7IH0KKyAgICAgICAgdmlydHVhbCB+RXJyb3JIYW5kbGVyKCkgeyB9CisgICAgICAgIFJl
ZlB0cjxSZWFkRGlyZWN0b3J5VGFzaz4gbV90YXNrOworICAgIH07CisKKyAgICBzdGF0aWMgUGFz
c1JlZlB0cjxSZWFkRGlyZWN0b3J5VGFzaz4gY3JlYXRlKEluc3BlY3RvckZpbGVTeXN0ZW1BZ2Vu
dCogYWdlbnQsIGNvbnN0IFN0cmluZyYgZnJhbWVJZCwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0
IFN0cmluZyYgcGF0aCkgeyByZXR1cm4gYWRvcHRSZWYobmV3IFJlYWREaXJlY3RvcnlUYXNrKGFn
ZW50LCBmcmFtZUlkLCB1cmwsIHBhdGgpKTsgfQorICAgIHZpcnR1YWwgYm9vbCBoYW5kbGVFdmVu
dChET01GaWxlU3lzdGVtKiBmaWxlc3lzdGVtKQorICAgIHsKKyAgICAgICAgUmVmUHRyPERpcmVj
dG9yeVJlYWRlcj4gcmVhZGVyID0gRGlyZWN0b3J5UmVhZGVyOjpjcmVhdGUoZmlsZXN5c3RlbSwg
bV9wYXRoKTsKKyAgICAgICAgUmVmUHRyPFJlYWREaXJlY3RvcnlFbnRyeVRhc2s+IGVudHJ5UmVh
ZGVyID0gUmVhZERpcmVjdG9yeUVudHJ5VGFzazo6Y3JlYXRlKHRoaXMpOworCisgICAgICAgIG1f
cmVhZGVyID0gcmVhZGVyLmdldCgpOworICAgICAgICBtX2VudHJ5UmVhZGVyID0gZW50cnlSZWFk
ZXIuZ2V0KCk7CisgICAgICAgIG1fcmVhZGVyLT5yZWFkRW50cmllcyhtX2VudHJ5UmVhZGVyKTsK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHZpcnR1YWwgflJlYWREaXJlY3Rv
cnlUYXNrKCkgeyB9CisKK3ByaXZhdGU6CisgICAgUmVhZERpcmVjdG9yeVRhc2soSW5zcGVjdG9y
RmlsZVN5c3RlbUFnZW50KiBhZ2VudCwgY29uc3QgU3RyaW5nJiBmcmFtZUlkLCBjb25zdCBTdHJp
bmcmIHVybCwgY29uc3QgU3RyaW5nJiBwYXRoKSA6IG1fYWdlbnRQcm92aWRlcihhZ2VudC0+YWdl
bnRQcm92aWRlcigpKSwgbV9mcmFtZUlkKGZyYW1lSWQpLCBtX3VybCh1cmwpLCBtX3BhdGgocGF0
aCkKKyAgICB7CisgICAgfQorCisgICAgdm9pZCBkaWRSZWFkRGlyZWN0b3J5KEZpbGVFcnJvcjo6
RXJyb3JDb2RlIGNvZGUsIEVudHJ5QXJyYXkqIGVudHJpZXMpCisgICAgeworICAgICAgICBpZiAo
IW1fZW50cmllcykKKyAgICAgICAgICAgIG1fZW50cmllcyA9IEluc3BlY3RvckFycmF5OjpjcmVh
dGUoKTsKKworICAgICAgICBpZiAoY29kZSAhPSBGaWxlRXJyb3I6Ok9LIHx8ICFlbnRyaWVzLT5s
ZW5ndGgoKSkgeworICAgICAgICAgICAgaWYgKEluc3BlY3RvckZpbGVTeXN0ZW1BZ2VudCogYWdl
bnQgPSBtX2FnZW50UHJvdmlkZXItPmFnZW50KCkpCisgICAgICAgICAgICAgICAgYWdlbnQtPmRp
ZFJlYWREaXJlY3RvcnkobV9mcmFtZUlkLCBtX3VybCwgY29kZSwgbV9lbnRyaWVzKTsKKyAgICAg
ICAgICAgIG1fcmVhZGVyID0gMDsKKyAgICAgICAgICAgIG1fZW50cnlSZWFkZXIgPSAwOworICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGVudHJp
ZXMtPmxlbmd0aCgpOyArK2kpIHsKKyAgICAgICAgICAgICAgICBFbnRyeSogZW50cnkgPSBlbnRy
aWVzLT5pdGVtKGkpOworICAgICAgICAgICAgICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IHdy
YXBwZWRFbnRyeSA9IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7CisgICAgICAgICAgICAgICAg
d3JhcHBlZEVudHJ5LT5zZXRTdHJpbmcoInVybCIsIGVudHJ5LT50b1VSTCgpKTsKKyAgICAgICAg
ICAgICAgICB3cmFwcGVkRW50cnktPnNldFN0cmluZygibmFtZSIsIGVudHJ5LT5uYW1lKCkpOwor
ICAgICAgICAgICAgICAgIHdyYXBwZWRFbnRyeS0+c2V0U3RyaW5nKCJwYXRoIiwgZW50cnktPmZ1
bGxQYXRoKCkpOworICAgICAgICAgICAgICAgIHdyYXBwZWRFbnRyeS0+c2V0Qm9vbGVhbigiaXNE
aXJlY3RvcnkiLCBlbnRyeS0+aXNEaXJlY3RvcnkoKSk7CisgICAgICAgICAgICAgICAgbV9lbnRy
aWVzLT5wdXNoT2JqZWN0KHdyYXBwZWRFbnRyeSk7CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICBtX3JlYWRlci0+cmVhZEVudHJpZXMobV9lbnRyeVJlYWRlcik7CisgICAgICAgIH0KKyAgICB9
CisKKyAgICBSZWZQdHI8RmlsZVN5c3RlbUFnZW50UHJvdmlkZXI+IG1fYWdlbnRQcm92aWRlcjsK
KyAgICBEaXJlY3RvcnlSZWFkZXIqIG1fcmVhZGVyOworICAgIFJlYWREaXJlY3RvcnlFbnRyeVRh
c2sqIG1fZW50cnlSZWFkZXI7CisKKyAgICBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IG1fZW50cmll
czsKKworICAgIFN0cmluZyBtX2ZyYW1lSWQ7CisgICAgU3RyaW5nIG1fdXJsOworICAgIFN0cmlu
ZyBtX3BhdGg7Cit9OworCiAvLyBzdGF0aWMKIFBhc3NPd25QdHI8SW5zcGVjdG9yRmlsZVN5c3Rl
bUFnZW50PiBJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQ6OmNyZWF0ZShJbnN0cnVtZW50aW5nQWdl
bnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBJbnNwZWN0b3JTdGF0ZSogc3RhdGUpCiB7CkBAIC01
NCwzMCArMTYzLDEyIEBAIEluc3BlY3RvckZpbGVTeXN0ZW1BZ2VudDo6fkluc3BlY3RvckZpbGVT
eXN0ZW1BZ2VudCgpCiAgICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLT5zZXRJbnNwZWN0b3JGaWxl
U3lzdGVtQWdlbnQoMCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50OjpkaWRP
cGVuRmlsZVN5c3RlbShQYXNzUmVmUHRyPERPTUZpbGVTeXN0ZW0+IGZpbGVTeXN0ZW0pCi17Ci0g
ICAgLy8gVE9ETyh0emlrKToKLSAgICAvLyBTdG9yZSBmaWxlU3lzdGVtIGFuZCBub3RpZnkgdGhl
IGZyb250ZW5kIHVzaW5nIGZpbGVTeXN0ZW1BZGRlZCBldmVudC4KLSAgICAvLyBmaWxlU3lzdGVt
IHNob3VsZCBiZSBhc3NvY2lhdGVkIHdpdGggaXRzIG5hbWUuCi19Ci0KLXZvaWQgSW5zcGVjdG9y
RmlsZVN5c3RlbUFnZW50OjpmaWxlU3lzdGVtSW52YWxpZGF0ZWQoUGFzc1JlZlB0cjxET01GaWxl
U3lzdGVtPiBmaWxlU3lzdGVtKQotewotICAgIC8vIFRPRE8odHppayk6Ci0gICAgLy8gRGlzY2Fy
ZCBmaWxlU3lzdGVtIGlmIHdlIGhhdmUuCi0gICAgLy8gSWYgdGhlcmUgaXMgbm8gb3RoZXIgZmls
ZVN5c3RlbSB3aG8gaGFzIHNhbWUgbmFtZSB3aXRoIGZpbGVTeXN0ZW0sCi0gICAgLy8gbm90aWZ5
IHRoZSBmcm9udGVuZCB1c2luZyBmaWxlU3lzdGVtSW52YWxpZGF0ZWQgZXZlbnQuCi19Ci0KIHZv
aWQgSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50OjplbmFibGUoRXJyb3JTdHJpbmcqKQogewogICAg
IGlmIChtX2VuYWJsZWQpCiAgICAgICAgIHJldHVybjsKICAgICBtX2VuYWJsZWQgPSB0cnVlOwog
ICAgIG1fc3RhdGUtPnNldEJvb2xlYW4oRmlsZVN5c3RlbUFnZW50U3RhdGU6OmZpbGVTeXN0ZW1B
Z2VudEVuYWJsZWQsIG1fZW5hYmxlZCk7Ci0KLSAgICAvLyBUT0RPKHR6aWspOgotICAgIC8vIFBh
c3MgYWxsIGF2YWlsYWJsZSBGaWxlU3lzdGVtIHRvIHRoZSBmcm9udGVuZCwgdXNpbmcgZmlsZVN5
c3RlbUFkZGVkIGV2ZW50LgogfQogCiB2b2lkIEluc3BlY3RvckZpbGVTeXN0ZW1BZ2VudDo6ZGlz
YWJsZShFcnJvclN0cmluZyopCkBAIC04OCw2ICsxNzksMzYgQEAgdm9pZCBJbnNwZWN0b3JGaWxl
U3lzdGVtQWdlbnQ6OmRpc2FibGUoRXJyb3JTdHJpbmcqKQogICAgIG1fc3RhdGUtPnNldEJvb2xl
YW4oRmlsZVN5c3RlbUFnZW50U3RhdGU6OmZpbGVTeXN0ZW1BZ2VudEVuYWJsZWQsIG1fZW5hYmxl
ZCk7CiB9CiAKK3ZvaWQgSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50OjpnZXRSb290KEVycm9yU3Ry
aW5nKiwgY29uc3QgU3RyaW5nJiBmcmFtZUlkLCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgY29uc3Qg
U3RyaW5nJiBmaWxlc3lzdGVtVHlwZSkKK3sKKyAgICBpZiAoIW1fZW5hYmxlZCB8fCAhbV9mcm9u
dGVuZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gVE9ETyh0emlrKTogQ2FsbCBMb2NhbEZp
bGVTeXN0ZW06OnJlYWRGaWxlIGFuZCB2ZXJpZnkgdGhlIGV4aXN0YW5jZSBvZiB0aGUgZGlyZWN0
b3J5LgorICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGVudHJ5ID0gSW5zcGVjdG9yT2JqZWN0
OjpjcmVhdGUoKTsKKyAgICBlbnRyeS0+c2V0U3RyaW5nKCJ1cmwiLCAiZmlsZXN5c3RlbToiICsg
b3JpZ2luICsgIi8iICsgZmlsZXN5c3RlbVR5cGUgKyAiLyIpOworICAgIGVudHJ5LT5zZXRTdHJp
bmcoIm5hbWUiLCAiIik7CisgICAgZW50cnktPnNldFN0cmluZygicGF0aCIsICIvIik7CisgICAg
ZW50cnktPnNldEJvb2xlYW4oImlzRGlyZWN0b3J5IiwgdHJ1ZSk7CisKKyAgICBtX2Zyb250ZW5k
LT5kaWRHZXRSb290KGZyYW1lSWQsIG9yaWdpbiwgZmlsZXN5c3RlbVR5cGUsIDAsIGVudHJ5KTsK
K30KKwordm9pZCBJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQ6OnJlYWREaXJlY3RvcnkoRXJyb3JT
dHJpbmcqLCBjb25zdCBTdHJpbmcmIGZyYW1lSWQsIGNvbnN0IFN0cmluZyYgdXJsKQoreworICAg
IEZyYW1lKiBmcmFtZSA9IG1faW5zdHJ1bWVudGluZ0FnZW50cy0+aW5zcGVjdG9yUGFnZUFnZW50
KCktPmZyYW1lRm9ySWQoZnJhbWVJZCk7CisgICAgaWYgKCFmcmFtZSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCA9IGZyYW1lLT5kb2N1bWVu
dCgpOworCisgICAgQXN5bmNGaWxlU3lzdGVtOjpUeXBlIGZpbGVzeXN0ZW1UeXBlOworICAgIFN0
cmluZyBwYXRoOworICAgIEFzeW5jRmlsZVN5c3RlbTo6Y3JhY2tGaWxlU3lzdGVtVVJMKEtVUkwo
S1VSTCgpLCB1cmwpLCBmaWxlc3lzdGVtVHlwZSwgcGF0aCk7CisKKyAgICBMb2NhbEZpbGVTeXN0
ZW06OmxvY2FsRmlsZVN5c3RlbSgpLnJlYWRGaWxlU3lzdGVtKGNvbnRleHQsIGZpbGVzeXN0ZW1U
eXBlLCBGaWxlU3lzdGVtQ2FsbGJhY2tzOjpjcmVhdGUoUmVhZERpcmVjdG9yeVRhc2s6OmNyZWF0
ZSh0aGlzLCBmcmFtZUlkLCB1cmwsIHBhdGgpLCAwLCBjb250ZXh0KSk7Cit9CisKIHZvaWQgSW5z
cGVjdG9yRmlsZVN5c3RlbUFnZW50OjpzZXRGcm9udGVuZChJbnNwZWN0b3JGcm9udGVuZCogZnJv
bnRlbmQpCiB7CiAgICAgQVNTRVJUKGZyb250ZW5kKTsKQEAgLTExNiw2ICsyMzcsMTIgQEAgSW5z
cGVjdG9yRmlsZVN5c3RlbUFnZW50OjpJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQoSW5zdHJ1bWVu
dGluZ0FnZW50cyogaW5zdHJ1bWUKICAgICBtX2luc3RydW1lbnRpbmdBZ2VudHMtPnNldEluc3Bl
Y3RvckZpbGVTeXN0ZW1BZ2VudCh0aGlzKTsKIH0KIAordm9pZCBJbnNwZWN0b3JGaWxlU3lzdGVt
QWdlbnQ6OmRpZFJlYWREaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBmcmFtZUlkLCBjb25zdCBTdHJp
bmcmIHVybCwgRmlsZUVycm9yOjpFcnJvckNvZGUgZXJyb3JDb2RlLCBQYXNzUmVmUHRyPEluc3Bl
Y3RvckFycmF5PiBlbnRyaWVzKQoreworICAgIGlmIChtX2VuYWJsZWQgJiYgbV9mcm9udGVuZCkK
KyAgICAgICAgbV9mcm9udGVuZC0+ZGlkUmVhZERpcmVjdG9yeShmcmFtZUlkLCB1cmwsIGVycm9y
Q29kZSwgZW50cmllcyk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8v
IEVOQUJMRShJTlNQRUNUT1IpICYmIEVOQUJMRShGSUxFX1NZU1RFTSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQuaAppbmRleCBkNTM2
NDNjNGYzZTM2MDA3Y2RhNTU3MDYyODMyZWQ0MDg3MzRmMjM1Li4xNmFmNDVlMmIwOGMyY2FmMjM1
ZmNhOGQ5YTE4YWMzOGFkYzI4Mjc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckZpbGVTeXN0ZW1BZ2VudC5oCkBAIC0zMyw2ICszMyw3IEBACiAKICNpZiBF
TkFCTEUoSU5TUEVDVE9SKSAmJiBFTkFCTEUoRklMRV9TWVNURU0pCiAKKyNpbmNsdWRlICJGaWxl
RXJyb3IuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JCYXNlQWdlbnQuaCIKICNpbmNsdWRlICJJbnNw
ZWN0b3JGcm9udGVuZC5oIgogCkBAIC00NCwyNCArNDUsMzIgQEAgY2xhc3MgRE9NRmlsZVN5c3Rl
bTsKIGNsYXNzIEluc3BlY3RvckZyb250ZW5kOwogY2xhc3MgSW5zcGVjdG9yU3RhdGU7CiBjbGFz
cyBJbnN0cnVtZW50aW5nQWdlbnRzOworY2xhc3MgSW5zcGVjdG9yQXJyYXk7CiAKIGNsYXNzIElu
c3BlY3RvckZpbGVTeXN0ZW1BZ2VudCA6IHB1YmxpYyBJbnNwZWN0b3JCYXNlQWdlbnQ8SW5zcGVj
dG9yRmlsZVN5c3RlbUFnZW50PiwgcHVibGljIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpG
aWxlU3lzdGVtQ29tbWFuZEhhbmRsZXIgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEluc3Bl
Y3RvckZpbGVTeXN0ZW1BZ2VudCk7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NPd25QdHI8SW5z
cGVjdG9yRmlsZVN5c3RlbUFnZW50PiBjcmVhdGUoSW5zdHJ1bWVudGluZ0FnZW50cyosIEluc3Bl
Y3RvclN0YXRlKik7CiAgICAgdmlydHVhbCB+SW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50KCk7CiAK
LSAgICB2b2lkIGRpZE9wZW5GaWxlU3lzdGVtKFBhc3NSZWZQdHI8RE9NRmlsZVN5c3RlbT4pOwot
ICAgIHZvaWQgZmlsZVN5c3RlbUludmFsaWRhdGVkKFBhc3NSZWZQdHI8RE9NRmlsZVN5c3RlbT4p
OwotCiAgICAgdmlydHVhbCB2b2lkIGVuYWJsZShFcnJvclN0cmluZyopOwogICAgIHZpcnR1YWwg
dm9pZCBkaXNhYmxlKEVycm9yU3RyaW5nKik7CiAKKyAgICB2b2lkIGdldFJvb3QoRXJyb3JTdHJp
bmcqLCBjb25zdCBTdHJpbmcmIGZyYW1lSWQsIGNvbnN0IFN0cmluZyYgb3JpZ2luLCBjb25zdCBT
dHJpbmcmIGZpbGVzeXN0ZW1UeXBlKTsKKyAgICB2b2lkIHJlYWREaXJlY3RvcnkoRXJyb3JTdHJp
bmcqLCBjb25zdCBTdHJpbmcmIGZyYW1lSWQsIGNvbnN0IFN0cmluZyYgdXJsKTsKKwogICAgIHZp
cnR1YWwgdm9pZCBzZXRGcm9udGVuZChJbnNwZWN0b3JGcm9udGVuZCopOwogICAgIHZpcnR1YWwg
dm9pZCBjbGVhckZyb250ZW5kKCk7CiAgICAgdmlydHVhbCB2b2lkIHJlc3RvcmUoKTsKIHByaXZh
dGU6CisgICAgY2xhc3MgUmVhZERpcmVjdG9yeVRhc2s7CisgICAgY2xhc3MgUmVhZEZpbGVUYXNr
OworCiAgICAgSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMqLCBJ
bnNwZWN0b3JTdGF0ZSopOwogCisgICAgdm9pZCBkaWRSZWFkRGlyZWN0b3J5KGNvbnN0IFN0cmlu
ZyYgZnJhbWVJZCwgY29uc3QgU3RyaW5nJiB1cmwsIEZpbGVFcnJvcjo6RXJyb3JDb2RlLCBQYXNz
UmVmUHRyPEluc3BlY3RvckFycmF5PiBlbnRyaWVzKTsKKyAgICAvLyB2b2lkIGRpZFJlYWRGaWxl
KCk7CisKICAgICBJbnNwZWN0b3JGcm9udGVuZDo6RmlsZVN5c3RlbSogbV9mcm9udGVuZDsKICAg
ICBib29sIG1fZW5hYmxlZDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yRmlsZVN5c3RlbUluc3RydW1lbnRhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckZpbGVTeXN0ZW1JbnN0cnVtZW50YXRpb24uaApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggNzM4N2FjYmFjYTE1NTUzMThiODg5NDNmZDE5YjhmNjM5MmEx
MDFhYi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRmlsZVN5c3RlbUluc3RydW1lbnRhdGlvbi5o
CisrKyAvZGV2L251bGwKQEAgLTEsNTIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
MSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAg
KiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0g
KiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElN
SVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0g
KiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgSW5zcGVjdG9yRmlsZVN5c3Rl
bUluc3RydW1lbnRhdGlvbl9oCi0jZGVmaW5lIEluc3BlY3RvckZpbGVTeXN0ZW1JbnN0cnVtZW50
YXRpb25faAotCi0jaW5jbHVkZSAiRE9NRmlsZVN5c3RlbS5oIgotI2luY2x1ZGUgIkluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbi5oIgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+Ci0KLW5hbWVz
cGFjZSBXZWJDb3JlIHsKLQotI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKLWlubGluZSB2b2lkIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkT3BlbkZpbGVTeXN0ZW0oUGFzc1JlZlB0cjxET01G
aWxlU3lzdGVtPiBmaWxlU3lzdGVtKQotewotI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0gICAgaWYg
KEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMgPSBpbnN0cnVtZW50aW5n
QWdlbnRzRm9yQ29udGV4dChmaWxlU3lzdGVtLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpKQot
ICAgICAgICBkaWRPcGVuRmlsZVN5c3RlbUltcGwoaW5zdHJ1bWVudGluZ0FnZW50cywgZmlsZVN5
c3RlbSk7Ci0jZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUikKLX0KLSNlbmRpZiAvLyBFTkFCTEUo
RklMRV9TWVNURU0pCi0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEluc3Bl
Y3RvckZpbGVTeXN0ZW1JbnN0cnVtZW50YXRpb25faApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcAppbmRleCA5NWQ2ZjMwYzY3
MDgyOWIyYmNmNDM3M2JlZjc2MzYzYTU0ODI4NTgwLi45YmM5ZDgwN2NlZjU5OWIwN2IwNzRkMTkx
NTFhYTQyY2FmYzQzNmEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcApAQCAtMzUsNyArMzUsNiBAQAogCiAjaW5jbHVk
ZSAiQ1NTUnVsZS5oIgogI2luY2x1ZGUgIkNTU1N0eWxlUnVsZS5oIgotI2luY2x1ZGUgIkRPTUZp
bGVTeXN0ZW0uaCIKICNpbmNsdWRlICJET01XaW5kb3cuaCIKICNpbmNsdWRlICJEYXRhYmFzZS5o
IgogI2luY2x1ZGUgIkRvY3VtZW50TG9hZGVyLmgiCkBAIC01Miw3ICs1MSw2IEBACiAjaW5jbHVk
ZSAiSW5zcGVjdG9yRE9NQWdlbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JET01TdG9yYWdlQWdl
bnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmgiCi0jaW5jbHVkZSAiSW5z
cGVjdG9yRmlsZVN5c3RlbUFnZW50LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yUGFnZUFnZW50Lmgi
CiAjaW5jbHVkZSAiSW5zcGVjdG9yUHJvZmlsZXJBZ2VudC5oIgogI2luY2x1ZGUgIkluc3BlY3Rv
clJlc291cmNlQWdlbnQuaCIKQEAgLTgzNywxNCArODM1LDYgQEAgdm9pZCBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OmRpZE9wZW5EYXRhYmFzZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5z
dHJ1bWUKIH0KICNlbmRpZgogCi0jaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQotdm9pZCBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246OmRpZE9wZW5GaWxlU3lzdGVtSW1wbChJbnN0cnVtZW50aW5nQWdl
bnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBQYXNzUmVmUHRyPERPTUZpbGVTeXN0ZW0+IGZpbGVT
eXN0ZW0pCi17Ci0gICAgaWYgKEluc3BlY3RvckZpbGVTeXN0ZW1BZ2VudCogZmlsZVN5c3RlbUFn
ZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy0+aW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50KCkpCi0g
ICAgICAgIGZpbGVTeXN0ZW1BZ2VudC0+ZGlkT3BlbkZpbGVTeXN0ZW0oZmlsZVN5c3RlbSk7Ci19
Ci0jZW5kaWYgLy8gRU5BQkxFKEZJTEVfU1lTVEVNKQotCiB2b2lkIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6ZGlkVXNlRE9NU3RvcmFnZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1
bWVudGluZ0FnZW50cywgU3RvcmFnZUFyZWEqIHN0b3JhZ2VBcmVhLCBib29sIGlzTG9jYWxTdG9y
YWdlLCBGcmFtZSogZnJhbWUpCiB7CiAgICAgSW5zcGVjdG9yQWdlbnQqIGluc3BlY3RvckFnZW50
ID0gaW5zdHJ1bWVudGluZ0FnZW50cy0+aW5zcGVjdG9yQWdlbnQoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9jb21waWxlLWZyb250LWVuZC5zaCBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9jb21waWxlLWZyb250LWVuZC5zaAppbmRleCBhNzFjMGEyY2ZlMTczNGZi
YWRjNGQyZTJjY2M3OGJhODY1MDM1YTQwLi5lY2Y3MzE4NDQzOGVmMDI3ZWQ2MjNjMjY1YzIxMDQ5
OTQyMDdlMWVjIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvY29tcGlsZS1m
cm9udC1lbmQuc2gKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2NvbXBpbGUtZnJvbnQt
ZW5kLnNoCkBAIC00NSw3ICs0NSw3IEBAIGphdmEgLWphciB+L2Nsb3N1cmUvY29tcGlsZXIuamFy
IC0tc3VtbWFyeV9kZXRhaWxfbGV2ZWwgMyAtLWNvbXBpbGF0aW9uX2xldmVsIFNJCiAgICAgICAg
IC0tanMgU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Vc2VyTWV0cmljcy5qcyBc
CiAgICAgICAgIC0tanMgU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9IYW5kbGVy
UmVnaXN0cnkuanMgXAogICAgICAgICAtLWpzIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvSW5zcGVjdG9yRnJvbnRlbmRIb3N0U3R1Yi5qcyBcCi0gICAgLS1tb2R1bGUganNtb2R1
bGVfc2RrOjMwOmpzbW9kdWxlX2NvbW1vbiBcCisgICAgLS1tb2R1bGUganNtb2R1bGVfc2RrOjMx
OmpzbW9kdWxlX2NvbW1vbiBcCiAgICAgICAgIC0tanMgU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9JbnNwZWN0b3JCYWNrZW5kLmpzIFwKICAgICAgICAgLS1qcyBTb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0FwcGxpY2F0aW9uQ2FjaGVNb2RlbC5qcyBcCiAgICAg
ICAgIC0tanMgU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Db2xvci5qcyBcCkBA
IC02Miw2ICs2Miw3IEBAIGphdmEgLWphciB+L2Nsb3N1cmUvY29tcGlsZXIuamFyIC0tc3VtbWFy
eV9kZXRhaWxfbGV2ZWwgMyAtLWNvbXBpbGF0aW9uX2xldmVsIFNJCiAgICAgICAgIC0tanMgU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9ET01TdG9yYWdlLmpzIFwKICAgICAgICAg
LS1qcyBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RlYnVnZ2VyTW9kZWwuanMg
XAogICAgICAgICAtLWpzIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRGVidWdn
ZXJQcmVzZW50YXRpb25Nb2RlbC5qcyBcCisgICAgICAgIC0tanMgU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9GaWxlU3lzdGVtLmpzIFwKICAgICAgICAgLS1qcyBTb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0hBUkVudHJ5LmpzIFwKICAgICAgICAgLS1qcyBTb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0luZGV4ZWREQk1vZGVsLmpzIFwKICAgICAg
ICAgLS1qcyBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL05ldHdvcmtMb2cuanMg
XApAQCAtMTQ3LDEyICsxNDgsMTQgQEAgamF2YSAtamFyIH4vY2xvc3VyZS9jb21waWxlci5qYXIg
LS1zdW1tYXJ5X2RldGFpbF9sZXZlbCAzIC0tY29tcGlsYXRpb25fbGV2ZWwgU0kKICAgICAgICAg
LS1qcyBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlVGltaW5nVmll
dy5qcyBcCiAgICAgICAgIC0tanMgU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9S
ZXNvdXJjZVZpZXcuanMgXAogICAgICAgICAtLWpzIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvTmV0d29ya1BhbmVsLmpzIFwKLSAgICAtLW1vZHVsZSBqc21vZHVsZV9yZXNvdXJj
ZXM6Njpqc21vZHVsZV9jb21wb25lbnRzIFwKKyAgICAtLW1vZHVsZSBqc21vZHVsZV9yZXNvdXJj
ZXM6ODpqc21vZHVsZV9jb21wb25lbnRzIFwKICAgICAgICAgLS1qcyBTb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL0FwcGxpY2F0aW9uQ2FjaGVJdGVtc1ZpZXcuanMgXAogICAgICAg
ICAtLWpzIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ29va2llSXRlbXNWaWV3
LmpzIFwKICAgICAgICAgLS1qcyBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0Rh
dGFiYXNlUXVlcnlWaWV3LmpzIFwKICAgICAgICAgLS1qcyBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL0RhdGFiYXNlVGFibGVWaWV3LmpzIFwKICAgICAgICAgLS1qcyBTb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RPTVN0b3JhZ2VJdGVtc1ZpZXcuanMgXAorICAg
ICAgICAtLWpzIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRmlsZUNvbnRlbnRW
aWV3LmpzIFwKKyAgICAgICAgLS1qcyBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L0ZpbGVTeXN0ZW1WaWV3LmpzIFwKICAgICAgICAgLS1qcyBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL1Jlc291cmNlc1BhbmVsLmpzIFwKICAgICAtLW1vZHVsZSBqc21vZHVsZV9z
Y3JpcHRzOjEwOmpzbW9kdWxlX2NvbXBvbmVudHMgXAogICAgICAgICAtLWpzIFNvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ2FsbFN0YWNrU2lkZWJhclBhbmUuanMgXApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9GaWxlQ29udGVudFZpZXcu
anMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0ZpbGVDb250ZW50Vmlldy5q
cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5kMWQxYTNkZDcyYjgyYmYwZTE0MzU1ZTZjMjVjZTM3ZmY2NWU5ZGMwCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9GaWxl
Q29udGVudFZpZXcuanMKQEAgLTAsMCArMSwzOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAg
KiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisg
KiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElN
SVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisg
KiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK1dlYkluc3BlY3Rvci5GaWxlQ29udGVudFZp
ZXcgPSBmdW5jdGlvbihmaWxlKQoreworICAgIFdlYkluc3BlY3Rvci5FbXB0eVZpZXcuY2FsbCh0
aGlzLCBmaWxlLnVybCk7Cit9OworCitXZWJJbnNwZWN0b3IuRmlsZUNvbnRlbnRWaWV3LnByb3Rv
dHlwZSA9IHsKK307CisKK1dlYkluc3BlY3Rvci5GaWxlQ29udGVudFZpZXcucHJvdG90eXBlLl9f
cHJvdG9fXyA9IFdlYkluc3BlY3Rvci5FbXB0eVZpZXcucHJvdG90eXBlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9GaWxlU3lzdGVtLmpzIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9GaWxlU3lzdGVtLmpzCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE3
NDgzNzNhZDFiNzExMThkNzZhYmZkMjNhZTYyNTBlN2MwYzgwNjUKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0ZpbGVTeXN0ZW0uanMKQEAgLTAs
MCArMSw0NTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1l
dDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
cgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBv
ZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisvKioKKyAqIEBjb25zdHJ1Y3RvcgorICovCitXZWJJbnNwZWN0b3IuRmlsZVN5
c3RlbU1hbmFnZXIgPSBmdW5jdGlvbigpCit7CisgICAgRmlsZVN5c3RlbUFnZW50LmVuYWJsZSgp
OworICAgIEluc3BlY3RvckJhY2tlbmQucmVnaXN0ZXJGaWxlU3lzdGVtRGlzcGF0Y2hlcih0aGlz
KTsKKworICAgIHRoaXMuX2Rpc3BhdGNoZXIgPSB7fTsKKyAgICB0aGlzLl9kaXNwYXRjaGVyc0Zv
ck9yaWdpbiA9IHt9OworICAgIHRoaXMuX2ZpbGVzeXN0ZW1zID0ge307CisKKyAgICBXZWJJbnNw
ZWN0b3IucmVzb3VyY2VUcmVlTW9kZWwuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuUmVz
b3VyY2VUcmVlTW9kZWwuRXZlbnRUeXBlcy5GcmFtZU5hdmlnYXRlZCwgdGhpcy5fZnJhbWVOYXZp
Z2F0ZWQsIHRoaXMpOworICAgIFdlYkluc3BlY3Rvci5yZXNvdXJjZVRyZWVNb2RlbC5hZGRFdmVu
dExpc3RlbmVyKFdlYkluc3BlY3Rvci5SZXNvdXJjZVRyZWVNb2RlbC5FdmVudFR5cGVzLkZyYW1l
RGV0YWNoZWQsIHRoaXMuX2ZyYW1lRGV0YWNoZWQsIHRoaXMpOworCisgICAgdGhpcy5vbkZpbGVT
eXN0ZW1BZGRlZCA9IG51bGw7CisgICAgdGhpcy5vbkZpbGVTeXN0ZW1SZW1vdmVkID0gbnVsbDsK
K307CisKK1dlYkluc3BlY3Rvci5GaWxlU3lzdGVtTWFuYWdlci5wcm90b3R5cGUgPSB7CisgICAg
cmVmcmVzaDogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgdGhpcy5fYXR0YWNoRnJhbWVSZWN1
cnNpdmVseShXZWJJbnNwZWN0b3IucmVzb3VyY2VUcmVlTW9kZWwubWFpbkZyYW1lKTsKKyAgICB9
LAorCisgICAgLyoqCisgICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuRXZlbnR9IGV2ZW50Cisg
ICAgICovCisgICAgX2ZyYW1lTmF2aWdhdGVkOiBmdW5jdGlvbihldmVudCkKKyAgICB7CisgICAg
ICAgIHRoaXMuX2F0dGFjaEZyYW1lKGV2ZW50LmRhdGEpOworICAgIH0sCisKKyAgICAvKioKKyAg
ICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5FdmVudH0gZXZlbnQKKyAgICAgKi8KKyAgICBfZnJh
bWVEZXRhY2hlZDogZnVuY3Rpb24oZXZlbnQpCisgICAgeworICAgICAgICB0aGlzLl9kZXRhY2hG
cmFtZShldmVudC5kYXRhKTsKKyAgICB9LAorCisgICAgLyoqCisgICAgICogQHBhcmFtIHtQYWdl
LkZyYW1lfSBmcmFtZQorICAgICAqLworICAgIF9hdHRhY2hGcmFtZTogZnVuY3Rpb24oZnJhbWUp
CisgICAgeworICAgICAgICBpZiAodGhpcy5fZGlzcGF0Y2hlcltmcmFtZS5pZF0pCisgICAgICAg
ICAgICB0aGlzLl9kZXRhY2hGcmFtZShmcmFtZSk7CisgICAgICAgIGlmIChmcmFtZS5zZWN1cml0
eU9yaWdpbiA9PSAnbnVsbCcpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgdmFyIGRp
c3BhdGNoZXIgPSBuZXcgV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1EaXNwYXRjaGVyKHRoaXMsIGZy
YW1lKTsKKyAgICAgICAgdGhpcy5fZGlzcGF0Y2hlcltmcmFtZS5pZF0gPSBkaXNwYXRjaGVyOwor
CisgICAgICAgIHZhciBtYXAgPSB0aGlzLl9kaXNwYXRjaGVyc0Zvck9yaWdpbltkaXNwYXRjaGVy
Lm9yaWdpbl07CisgICAgICAgIGlmICghbWFwKSB7CisgICAgICAgICAgICBtYXAgPSB7fTsKKyAg
ICAgICAgICAgIHRoaXMuX2Rpc3BhdGNoZXJzRm9yT3JpZ2luW2Rpc3BhdGNoZXIub3JpZ2luXSA9
IG1hcDsKKyAgICAgICAgfQorICAgICAgICBtYXBbZnJhbWUuaWRdID0gZGlzcGF0Y2hlcjsKKwor
ICAgICAgICB0aGlzLl9hZGREaXNwYXRjaGVyRm9yKGRpc3BhdGNoZXIub3JpZ2luLCAndGVtcG9y
YXJ5Jyk7CisgICAgICAgIHRoaXMuX2FkZERpc3BhdGNoZXJGb3IoZGlzcGF0Y2hlci5vcmlnaW4s
ICdwZXJzaXN0ZW50Jyk7CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7UGFnZS5G
cmFtZX0gZnJhbWUKKyAgICAgKi8KKyAgICBfZGV0YWNoRnJhbWU6IGZ1bmN0aW9uKGZyYW1lKQor
ICAgIHsKKyAgICAgICAgdmFyIGRpc3BhdGNoZXIgPSB0aGlzLl9kaXNwYXRjaGVyW2ZyYW1lLmlk
XTsKKyAgICAgICAgaWYgKCFkaXNwYXRjaGVyKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICBkZWxldGUgdGhpcy5fZGlzcGF0Y2hlcltmcmFtZS5pZF07CisKKyAgICAgICAgdmFyIG1hcCA9
IHRoaXMuX2Rpc3BhdGNoZXJzRm9yT3JpZ2luW2Rpc3BhdGNoZXIub3JpZ2luXTsKKyAgICAgICAg
ZGVsZXRlIG1hcFtmcmFtZS5pZF07CisgICAgICAgIGlmICh0aGlzLl9pc0VtcHR5TWFwKG1hcCkp
CisgICAgICAgICAgICBkZWxldGUgdGhpcy5fZGlzcGF0Y2hlcnNGb3JPcmlnaW5bZGlzcGF0Y2hl
ci5vcmlnaW5dOworCisgICAgICAgIHRoaXMuX3JlbW92ZURpc3BhdGNoZXJGb3IoZGlzcGF0Y2hl
ci5vcmlnaW4sICd0ZW1wb3JhcnknKTsKKyAgICAgICAgdGhpcy5fcmVtb3ZlRGlzcGF0Y2hlckZv
cihkaXNwYXRjaGVyLm9yaWdpbiwgJ3BlcnNpc3RlbnQnKTsKKyAgICAgICAgLy8gVE9ETyh0emlr
KTogcmV0cnkgcGVuZGluZyB0YXNrIGluIGRpc3BhdGNoZXIgdXNpbmcgb3RoZXIgZGlzcGF0Y2hl
cnMgaWYgcG9zc2libGUuCisgICAgfSwKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7c3RyaW5n
fSBvcmlnaW4KKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gZmlsZXN5c3RlbVR5cGUKKyAgICAgKi8K
KyAgICBfYWRkRGlzcGF0Y2hlckZvcjogZnVuY3Rpb24ob3JpZ2luLCBmaWxlc3lzdGVtVHlwZSkK
KyAgICB7CisgICAgICAgIHZhciBuYW1lID0gb3JpZ2luICsgJy8nICsgZmlsZXN5c3RlbVR5cGU7
CisgICAgICAgIHZhciBmaWxlc3lzdGVtID0gdGhpcy5fZmlsZXN5c3RlbXNbbmFtZV07CisgICAg
ICAgIGlmICghZmlsZXN5c3RlbSkgeworICAgICAgICAgICAgZmlsZXN5c3RlbSA9IG5ldyBXZWJJ
bnNwZWN0b3IuRmlsZVN5c3RlbSh0aGlzLCBvcmlnaW4sIGZpbGVzeXN0ZW1UeXBlKTsKKyAgICAg
ICAgICAgIHRoaXMuX2ZpbGVzeXN0ZW1zW25hbWVdID0gZmlsZXN5c3RlbTsKKworICAgICAgICAg
ICAgaWYgKHRoaXMub25GaWxlU3lzdGVtQWRkZWQpCisgICAgICAgICAgICAgICAgdGhpcy5vbkZp
bGVTeXN0ZW1BZGRlZChmaWxlc3lzdGVtKTsKKyAgICAgICAgfQorICAgIH0sCisKKyAgICAvKioK
KyAgICAgKiBAcGFyYW0ge3N0cmluZ30gb3JpZ2luCisgICAgICogQHBhcmFtIHtzdHJpbmd9IGZp
bGVzeXN0ZW1UeXBlCisgICAgICovCisgICAgX3JlbW92ZURpc3BhdGNoZXJGb3I6IGZ1bmN0aW9u
KG9yaWdpbiwgZmlsZXN5c3RlbVR5cGUpCisgICAgeworICAgICAgICB2YXIgbmFtZSA9IG9yaWdp
biArICcvJyArIGZpbGVzeXN0ZW1UeXBlOworICAgICAgICB2YXIgZmlsZXN5c3RlbSA9IHRoaXMu
X2ZpbGVzeXN0ZW1zW25hbWVdOworICAgICAgICBpZiAoIWZpbGVzeXN0ZW0pCisgICAgICAgICAg
ICByZXR1cm47CisKKyAgICAgICAgaWYgKCF0aGlzLl9kaXNwYXRjaGVyc0Zvck9yaWdpbltvcmln
aW5dKSB7CisgICAgICAgICAgICBkZWxldGUgdGhpcy5fZmlsZXN5c3RlbXNbbmFtZV07CisgICAg
ICAgICAgICBpZiAodGhpcy5vbkZpbGVTeXN0ZW1SZW1vdmVkKQorICAgICAgICAgICAgICAgIHRo
aXMub25GaWxlU3lzdGVtUmVtb3ZlZChmaWxlc3lzdGVtKTsKKyAgICAgICAgfQorICAgIH0sCisK
KyAgICAvKioKKyAgICAgKiBAcGFyYW0ge1BhZ2UuRnJhbWV9IGZyYW1lCisgICAgICovCisgICAg
X2F0dGFjaEZyYW1lUmVjdXJzaXZlbHk6IGZ1bmN0aW9uKGZyYW1lKQorICAgIHsKKyAgICAgICAg
aWYgKCF0aGlzLl9kaXNwYXRjaGVyW2ZyYW1lLmlkXSkKKyAgICAgICAgICAgIHRoaXMuX2F0dGFj
aEZyYW1lKGZyYW1lKTsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBmcmFtZS5jaGlsZEZy
YW1lcy5sZW5ndGg7ICsraSkKKyAgICAgICAgICAgIHRoaXMuX2F0dGFjaEZyYW1lUmVjdXJzaXZl
bHkoZnJhbWUuY2hpbGRGcmFtZXNbaV0pOworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFy
YW0ge1BhZ2UuRnJhbWV9IGZyYW1lCisgICAgICovCisgICAgX2RldGFjaEZyYW1lUmVjdXJzaXZl
bHk6IGZ1bmN0aW9uKGZyYW1lKQorICAgIHsKKyAgICAgICAgaWYgKHRoaXMuX2Rpc3BhdGNoZXJb
ZnJhbWUuaWRdKQorICAgICAgICAgICAgdGhpcy5fZGV0YWNoRnJhbWUoZnJhbWUpOworICAgICAg
ICBmb3IgKHZhciBpID0gMDsgaSA8IGZyYW1lLmNoaWxkRnJhbWVzLmxlbmd0aDsgKytpKQorICAg
ICAgICAgICAgdGhpcy5fZGV0YWNoRnJhbWVSZWN1cnNpdmVseShmcmFtZS5jaGlsZEZyYW1lc1tp
XSk7CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBvcmlnaW4KKyAg
ICAgKiBAcGFyYW0ge3N0cmluZ30gZmlsZXN5c3RlbVR5cGUKKyAgICAgKiBAcGFyYW0ge2Z1bmN0
aW9uKG51bWJlciwgRmlsZVN5c3RlbS5FbnRyeSl9IGNhbGxiYWNrCisgICAgICovCisgICAgZ2V0
Um9vdDogZnVuY3Rpb24ob3JpZ2luLCBmaWxlc3lzdGVtVHlwZSwgY2FsbGJhY2spCisgICAgewor
ICAgICAgICB2YXIgZGlzcGF0Y2hlciA9IHRoaXMuX2FueU9mKHRoaXMuX2Rpc3BhdGNoZXJzRm9y
T3JpZ2luW29yaWdpbl0pOworICAgICAgICBpZiAoIWRpc3BhdGNoZXIpCisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIGRpc3BhdGNoZXIuZ2V0Um9vdChmaWxlc3lzdGVtVHlwZSwgY2FsbGJh
Y2spOworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gZnJhbWVJZAor
ICAgICAqIEBwYXJhbSB7c3RyaW5nfSBvcmlnaW4KKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gZmls
ZXN5c3RlbVR5cGUKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gZXJyb3JDb2RlCisgICAgICogQHBh
cmFtIHtGaWxlU3lzdGVtLkVudHJ5fSBlbnRyeQorICAgICAqLworICAgIGRpZEdldFJvb3Q6IGZ1
bmN0aW9uKGZyYW1lSWQsIG9yaWdpbiwgZmlsZXN5c3RlbVR5cGUsIGVycm9yQ29kZSwgZW50cnkp
CisgICAgeworICAgICAgICB2YXIgZGlzcGF0Y2hlciA9IHRoaXMuX2Rpc3BhdGNoZXJbZnJhbWVJ
ZF07CisgICAgICAgIGlmIChkaXNwYXRjaGVyLm9yaWdpbiAhPSBvcmlnaW4pCisgICAgICAgICAg
ICByZXR1cm47CisKKyAgICAgICAgZGlzcGF0Y2hlci5kaWRHZXRSb290KGZpbGVzeXN0ZW1UeXBl
LCBlcnJvckNvZGUsIGVudHJ5KTsKKyAgICB9LAorCisgICAgLyoqCisgICAgICogQHBhcmFtIHtz
dHJpbmd9IHVybAorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBvcmlnaW4KKyAgICAgKiBAcGFyYW0g
e3N0cmluZ30gZmlsZXN5c3RlbVR5cGUKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gcGF0aAorICAg
ICAqIEBwYXJhbSB7ZnVuY3Rpb24obnVtYmVyLCBGaWxlU3lzdGVtLkVudHJ5KX0gY2FsbGJhY2sK
KyAgICAgKi8KKyAgICByZWFkRGlyZWN0b3J5OiBmdW5jdGlvbih1cmwsIG9yaWdpbiwgZmlsZXN5
c3RlbVR5cGUsIHBhdGgsIGNhbGxiYWNrKQorICAgIHsKKyAgICAgICAgdmFyIGRpc3BhdGNoZXIg
PSB0aGlzLl9hbnlPZih0aGlzLl9kaXNwYXRjaGVyc0Zvck9yaWdpbltvcmlnaW5dKTsKKyAgICAg
ICAgaWYgKCFkaXNwYXRjaGVyKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBkaXNwYXRj
aGVyLnJlYWREaXJlY3RvcnkodXJsLCBjYWxsYmFjayk7CisgICAgfSwKKworICAgIC8qKgorICAg
ICAqIEBwYXJhbSB7c3RyaW5nfSBmcmFtZUlkCisgICAgICogQHBhcmFtIHtzdHJpbmd9IHVybAor
ICAgICAqIEBwYXJhbSB7bnVtYmVyfSBlcnJvckNvZGUKKyAgICAgKiBAcGFyYW0ge0FycmF5LjxG
aWxlU3lzdGVtLkVudHJ5Pn0gZW50cmllcworICAgICAqLworICAgIGRpZFJlYWREaXJlY3Rvcnk6
IGZ1bmN0aW9uKGZyYW1lSWQsIHVybCwgZXJyb3JDb2RlLCBlbnRyaWVzKQorICAgIHsKKyAgICAg
ICAgdmFyIGRpc3BhdGNoZXIgPSB0aGlzLl9kaXNwYXRjaGVyW2ZyYW1lSWRdOworICAgICAgICBk
aXNwYXRjaGVyLmRpZFJlYWREaXJlY3RvcnkodXJsLCBlcnJvckNvZGUsIGVudHJpZXMpOworICAg
IH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge09iamVjdH0gbWFwCisgICAgICogQHJldHVy
biB7T2JqZWN0fQorICAgICAqLworICAgIF9hbnlPZjogZnVuY3Rpb24obWFwKQorICAgIHsKKyAg
ICAgICAgZm9yICh2YXIgaSBpbiBtYXApCisgICAgICAgICAgICByZXR1cm4gbWFwW2ldOworICAg
ICAgICByZXR1cm4gbnVsbDsKKyAgICB9LAorCisgICAgLyoqCisgICAgICogQHBhcmFtIHtPYmpl
Y3R9IG1hcAorICAgICAqIEByZXR1cm4ge2Jvb2xlYW59CisgICAgICovCisgICAgX2lzRW1wdHlN
YXA6IGZ1bmN0aW9uKG1hcCkKKyAgICB7CisgICAgICAgIGZvciAodmFyIGkgaW4gbWFwKQorICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9Cit9Owor
CisvKioKKyAqIEBjb25zdHJ1Y3RvcgorICovCitXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbSA9IGZ1
bmN0aW9uKGZpbGVzeXN0ZW1NYW5hZ2VyLCBvcmlnaW4sIGZpbGVzeXN0ZW1UeXBlKQoreworICAg
IHRoaXMuX2ZpbGVzeXN0ZW1NYW5hZ2VyID0gZmlsZXN5c3RlbU1hbmFnZXI7CisgICAgdGhpcy5v
cmlnaW4gPSBvcmlnaW47CisgICAgdGhpcy50eXBlID0gZmlsZXN5c3RlbVR5cGU7Cit9OworCitX
ZWJJbnNwZWN0b3IuRmlsZVN5c3RlbS5wcm90b3R5cGUgPSB7CisgICAgZ2V0IG5hbWUoKSB7Cisg
ICAgICAgIHJldHVybiB0aGlzLm9yaWdpbiArICcvJyArIHRoaXMudHlwZTsKKyAgICB9LAorCisg
ICAgLyoqCisgICAgICogQHBhcmFtIHtmdW5jdGlvbihudW1iZXIsIFdlYkluc3BlY3Rvci5GaWxl
U3lzdGVtRGlyZWN0b3J5RW50cnkpfSBjYWxsYmFjaworICAgICAqLworICAgIGdldFJvb3Q6IGZ1
bmN0aW9uKGNhbGxiYWNrKQorICAgIHsKKyAgICAgICAgdGhpcy5fZmlsZXN5c3RlbU1hbmFnZXIu
Z2V0Um9vdCgKKyAgICAgICAgICAgIHRoaXMub3JpZ2luLCB0aGlzLnR5cGUsCisgICAgICAgICAg
ICBmdW5jdGlvbihlcnJvckNvZGUsIHJhd19lbnRyeSkgeworICAgICAgICAgICAgICAgIGNhbGxi
YWNrKGVycm9yQ29kZSwgdGhpcy5fd3JhcEVudHJ5KHJhd19lbnRyeSkpOworICAgICAgICAgICAg
fS5iaW5kKHRoaXMpKTsKKyAgICB9LAorCisgICAgLyoqCisgICAgICogQHBhcmFtIHtzdHJpbmd9
IHVybAorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBwYXRoCisgICAgICogQHBhcmFtIHtmdW5jdGlv
bihudW1iZXIsIEFycmF5LjxXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbUVudHJ5Pil9IGNhbGxiYWNr
CisgICAgICovCisgICAgcmVhZERpcmVjdG9yeTogZnVuY3Rpb24odXJsLCBwYXRoLCBjYWxsYmFj
aykKKyAgICB7CisgICAgICAgIHRoaXMuX2ZpbGVzeXN0ZW1NYW5hZ2VyLnJlYWREaXJlY3Rvcnko
CisgICAgICAgICAgICB1cmwsIHRoaXMub3JpZ2luLCB0aGlzLnR5cGUsIHBhdGgsCisgICAgICAg
ICAgICBmdW5jdGlvbihlcnJvckNvZGUsIHJhd19lbnRyaWVzKSB7CisgICAgICAgICAgICAgICAg
dmFyIHdyYXBwZWRfZW50cmllcyA9IFtdOworICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAw
OyBpIDwgcmF3X2VudHJpZXMubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgICAgICAgICAgd3Jh
cHBlZF9lbnRyaWVzLnB1c2godGhpcy5fd3JhcEVudHJ5KHJhd19lbnRyaWVzW2ldKSk7CisgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGNhbGxiYWNrKGVycm9yQ29kZSwgd3JhcHBl
ZF9lbnRyaWVzKTsKKyAgICAgICAgICAgIH0uYmluZCh0aGlzKSk7CisgICAgfSwKKworICAgIF93
cmFwRW50cnk6IGZ1bmN0aW9uKGVudHJ5KQorICAgIHsKKyAgICAgICAgaWYgKGVudHJ5LmlzRGly
ZWN0b3J5KQorICAgICAgICAgICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbURp
cmVjdG9yeUVudHJ5KHRoaXMsIGVudHJ5LnVybCwgZW50cnkubmFtZSwgZW50cnkucGF0aCk7Cisg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLkZpbGVTeXN0
ZW1GaWxlRW50cnkodGhpcywgZW50cnkudXJsLCBlbnRyeS5uYW1lLCBlbnRyeS5wYXRoKTsKKyAg
ICB9Cit9OworCisvKioKKyAqIEBjb25zdHJ1Y3RvcgorICovCitXZWJJbnNwZWN0b3IuRmlsZVN5
c3RlbUVudHJ5ID0gZnVuY3Rpb24oZmlsZXN5c3RlbSwgdXJsLCBuYW1lLCBwYXRoLCBpc0RpcmVj
dG9yeSkKK3sKKyAgICB0aGlzLm9ubW9kaWZpZWQgPSBudWxsOworCisgICAgdGhpcy5maWxlc3lz
dGVtID0gZmlsZXN5c3RlbTsKKworICAgIHRoaXMubmFtZSA9IG5hbWU7CisgICAgdGhpcy51cmwg
PSB1cmw7CisgICAgdGhpcy5wYXRoID0gcGF0aDsKKyAgICB0aGlzLmlzRGlyZWN0b3J5ID0gaXNE
aXJlY3Rvcnk7Cit9OworCitXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbUVudHJ5LnByb3RvdHlwZSA9
IHsKKyAgICBvbm1vZGlmaWVkOiBudWxsLAorCisgICAgLyoqCisgICAgICogQHBhcmFtIHtmdW5j
dGlvbigpfSBjYWxsYmFjaworICAgICAqIEByZXR1cm4ge251bWJlcn0KKyAgICAgKi8KKyAgICBy
ZWdpc3Rlck9ic2VydmVyOiBmdW5jdGlvbihjYWxsYmFjaykKKyAgICB7CisgICAgICAgIC8vIFRP
RE8odHppayk6IEltcGxlbWVudCB0aGlzIGZ1bmN0aW9uLiBUaGlzIGZ1bmN0aW9uIHNob3VsZCBy
ZWdpc3RlciBtb2RpZmljYXRpb24gaGFuZGxlcgorICAgICAgICAvLyBmb3IgdGhlIGVudHJ5LiAg
V2hlbiB0aGUgbW9kaWZpY2F0aW9uIHRpbWUgb2YgdGhlIGVudHJ5IHdhcyBjaGFuZ2VkLCB0aGUg
Y2FsbGJhY2sgc2hvdWxkCisgICAgICAgIC8vIGJlIGludm9rZWQuCisgICAgICAgIHJldHVybiAx
OworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gb2JzZXJ2ZXJJZAor
ICAgICAqLworICAgIHVucmVnaXN0ZXJPYnNlcnZlcjogZnVuY3Rpb24ob2JzZXJ2ZXJJZCkKKyAg
ICB7CisgICAgICAgIC8vIFRPRE8odHppayk6IEltcGxlbWVudCB0aGlzIGZ1bmN0aW9uLiBBZnRl
ciB0aGlzIGZ1bmN0aW9uIHdhcyBjYWxsZWQgd2l0aCBvYnNlcnZlcklkLAorICAgICAgICAvLyBt
b2RpZmljYXRpb24gY2FsbGJhY2sgc2hvdWxkIG5vIGxvbmdlciBiZSBpbnZva2VkLgorICAgIH0K
K307CisKKy8qKgorICogQGNvbnN0cnVjdG9yCisgKiBAZXh0ZW5kcyB7V2ViSW5zcGVjdG9yLkZp
bGVTeXN0ZW1FbnRyeX0KKyAqLworV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1EaXJlY3RvcnlFbnRy
eSA9IGZ1bmN0aW9uKGZpbGVzeXN0ZW0sIHVybCwgbmFtZSwgcGF0aCkKK3sKKyAgICBXZWJJbnNw
ZWN0b3IuRmlsZVN5c3RlbUVudHJ5LmNhbGwodGhpcywgZmlsZXN5c3RlbSwgdXJsLCBuYW1lLCBw
YXRoLCB0cnVlKTsKK307CisKK1dlYkluc3BlY3Rvci5GaWxlU3lzdGVtRGlyZWN0b3J5RW50cnku
cHJvdG90eXBlID0geworICAgIC8qKgorICAgICAqIEBwYXJhbSB7ZnVuY3Rpb24obnVtYmVyLCBB
cnJheS48V2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1FbnRyeT4pfQorICAgICAqLworICAgIHJlYWRE
aXJlY3Rvcnk6IGZ1bmN0aW9uKGNhbGxiYWNrKQorICAgIHsKKyAgICAgICAgdGhpcy5maWxlc3lz
dGVtLnJlYWREaXJlY3RvcnkodGhpcy51cmwsIHRoaXMucGF0aCwgY2FsbGJhY2spOworICAgIH0K
K307CisKK1dlYkluc3BlY3Rvci5GaWxlU3lzdGVtRGlyZWN0b3J5RW50cnkucHJvdG90eXBlLl9f
cHJvdG9fXyA9IFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtRW50cnkucHJvdG90eXBlOworCisvKioK
KyAqIEBjb25zdHJ1Y3RvcgorICogQGV4dGVuZHMge1dlYkluc3BlY3Rvci5GaWxlU3lzdGVtRW50
cnl9CisgKi8KK1dlYkluc3BlY3Rvci5GaWxlU3lzdGVtRmlsZUVudHJ5ID0gZnVuY3Rpb24oZmls
ZXN5c3RlbSwgdXJsLCBuYW1lLCBwYXRoKQoreworICAgIFdlYkluc3BlY3Rvci5GaWxlU3lzdGVt
RW50cnkuY2FsbCh0aGlzLCBmaWxlc3lzdGVtLCB1cmwsIG5hbWUsIHBhdGgsIGZhbHNlKTsKK307
CisKK1dlYkluc3BlY3Rvci5GaWxlU3lzdGVtRmlsZUVudHJ5LnByb3RvdHlwZSA9IHsKK307CisK
K1dlYkluc3BlY3Rvci5GaWxlU3lzdGVtRmlsZUVudHJ5LnByb3RvdHlwZS5fX3Byb3RvX18gPSBX
ZWJJbnNwZWN0b3IuRmlsZVN5c3RlbUVudHJ5LnByb3RvdHlwZTsKKworLyoqCisgKiBAY29uc3Ry
dWN0b3IKKyAqLworV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1EaXNwYXRjaGVyID0gZnVuY3Rpb24o
ZmlsZXN5c3RlbU1hbmFnZXIsIGZyYW1lKQoreworICAgIHRoaXMuX2ZpbGVzeXN0ZW1NYW5hZ2Vy
ID0gZmlsZXN5c3RlbU1hbmFnZXI7CisgICAgdGhpcy5mcmFtZUlkID0gZnJhbWUuaWQ7CisgICAg
dGhpcy5vcmlnaW4gPSBmcmFtZS5zZWN1cml0eU9yaWdpbjsKKworICAgIHRoaXMuX2ZpbGVzeXN0
ZW1zID0gW107CisKKyAgICB0aGlzLl9nZXRSb290SGFuZGxlciA9IHsKKyAgICAgICAgdGVtcG9y
YXJ5OiBbXSwKKyAgICAgICAgcGVyc2lzdGVudDogW10KKyAgICB9OworCisgICAgdGhpcy5fcmVh
ZERpcmVjdG9yeUhhbmRsZXIgPSB7fTsKK307CisKK1dlYkluc3BlY3Rvci5GaWxlU3lzdGVtRGlz
cGF0Y2hlci5wcm90b3R5cGUgPSB7CisgICAgZ2V0Um9vdDogZnVuY3Rpb24oZmlsZXN5c3RlbVR5
cGUsIGNhbGxiYWNrKQorICAgIHsKKyAgICAgICAgdmFyIGNhbGxiYWNrcyA9IHRoaXMuX2dldFJv
b3RIYW5kbGVyW2ZpbGVzeXN0ZW1UeXBlXTsKKyAgICAgICAgaWYgKCFjYWxsYmFja3MpCisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIGNhbGxiYWNrcy5wdXNoKGNhbGxiYWNrKTsKKworICAg
ICAgICBpZiAoY2FsbGJhY2tzLmxlbmd0aCA9PSAxKQorICAgICAgICAgICAgRmlsZVN5c3RlbUFn
ZW50LmdldFJvb3QodGhpcy5mcmFtZUlkLCB0aGlzLm9yaWdpbiwgZmlsZXN5c3RlbVR5cGUpOwor
ICAgIH0sCisKKyAgICBkaWRHZXRSb290OiBmdW5jdGlvbihmaWxlc3lzdGVtVHlwZSwgZXJyb3JD
b2RlLCBlbnRyeSkKKyAgICB7CisgICAgICAgIHZhciBjYWxsYmFja3MgPSB0aGlzLl9nZXRSb290
SGFuZGxlcltmaWxlc3lzdGVtVHlwZV07CisgICAgICAgIGlmICghY2FsbGJhY2tzKQorICAgICAg
ICAgICAgcmV0dXJuOworCisgICAgICAgIHRoaXMuX2dldFJvb3RIYW5kbGVyW2ZpbGVzeXN0ZW1U
eXBlXSA9IFtdOworICAgICAgICB0aGlzLl9kaXNwYXRjaENhbGxiYWNrcyhjYWxsYmFja3MsIFtl
cnJvckNvZGUsIGVudHJ5XSk7CisgICAgfSwKKworICAgIHJlYWREaXJlY3Rvcnk6IGZ1bmN0aW9u
KHVybCwgY2FsbGJhY2spCisgICAgeworICAgICAgICB2YXIgY2FsbGJhY2tzID0gdGhpcy5fcmVh
ZERpcmVjdG9yeUhhbmRsZXJbdXJsXTsKKyAgICAgICAgaWYgKCFjYWxsYmFja3MpIHsKKyAgICAg
ICAgICAgIGNhbGxiYWNrcyA9IFtdOworICAgICAgICAgICAgdGhpcy5fcmVhZERpcmVjdG9yeUhh
bmRsZXJbdXJsXSA9IGNhbGxiYWNrczsKKyAgICAgICAgfQorICAgICAgICBjYWxsYmFja3MucHVz
aChjYWxsYmFjayk7CisKKyAgICAgICAgaWYgKGNhbGxiYWNrcy5sZW5ndGggPT0gMSkKKyAgICAg
ICAgICAgIEZpbGVTeXN0ZW1BZ2VudC5yZWFkRGlyZWN0b3J5KHRoaXMuZnJhbWVJZCwgdXJsKTsK
KyAgICB9LAorCisgICAgZGlkUmVhZERpcmVjdG9yeTogZnVuY3Rpb24odXJsLCBlcnJvckNvZGUs
IGVudHJpZXMpCisgICAgeworICAgICAgICB2YXIgY2FsbGJhY2tzID0gdGhpcy5fcmVhZERpcmVj
dG9yeUhhbmRsZXJbdXJsXTsKKyAgICAgICAgaWYgKCFjYWxsYmFja3MpCisgICAgICAgICAgICBy
ZXR1cm47CisKKyAgICAgICAgdGhpcy5fcmVhZERpcmVjdG9yeUhhbmRsZXJbdXJsXSA9IFtdOwor
ICAgICAgICB0aGlzLl9kaXNwYXRjaENhbGxiYWNrcyhjYWxsYmFja3MsIFtlcnJvckNvZGUsIGVu
dHJpZXNdKTsKKyAgICB9LAorCisgICAgX2Rpc3BhdGNoQ2FsbGJhY2tzOiBmdW5jdGlvbihjYWxs
YmFja3MsIGFyZ3MpCisgICAgeworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNhbGxiYWNr
cy5sZW5ndGg7ICsraSkKKyAgICAgICAgICAgIGNhbGxiYWNrc1tpXS5hcHBseShudWxsICwgYXJn
cyk7CisgICAgfQorfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvRmlsZVN5c3RlbVZpZXcuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL0ZpbGVTeXN0ZW1WaWV3LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc4YTg3MjU2ZjU1MDIxZmEyMDZjM2E4
NGVhYjExYTE1ZjkxYTYyNzQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL0ZpbGVTeXN0ZW1WaWV3LmpzCkBAIC0wLDAgKzEsMjAzIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICog
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRp
c3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9y
IHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNl
IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMK
KyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBP
UiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworLyoqCisg
KiBAY29uc3RydWN0b3IKKyAqIEBleHRlbmRzIHtXZWJJbnNwZWN0b3IuUGFuZWx9CisgKi8KK1dl
Ykluc3BlY3Rvci5GaWxlU3lzdGVtVmlldyA9IGZ1bmN0aW9uKGZpbGVzeXN0ZW0pIHsKKyAgICBX
ZWJJbnNwZWN0b3IuUGFuZWwuY2FsbCh0aGlzLCAiZmlsZXN5c3RlbS12aWV3Iik7CisgICAgdGhp
cy5lbGVtZW50LmFkZFN0eWxlQ2xhc3MoImZpbGVzeXN0ZW0tdmlldyIpOworCisgICAgdGhpcy5f
ZmlsZXN5c3RlbSA9IGZpbGVzeXN0ZW07CisKKyAgICB0aGlzLl9yZWZyZXNoQnV0dG9uID0gbmV3
IFdlYkluc3BlY3Rvci5TdGF0dXNCYXJCdXR0b24oV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJSZWZy
ZXNoIiksICJyZWZyZXNoLXN0b3JhZ2Utc3RhdHVzLWJhci1pdGVtIik7CisgICAgdGhpcy5fcmVm
cmVzaEJ1dHRvbi5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIHRoaXMuX3JlZnJlc2gsIHRoaXMp
OworCisgICAgdGhpcy5jcmVhdGVTcGxpdFZpZXdXaXRoU2lkZWJhclRyZWUoKTsKKyAgICB0aGlz
LnNpZGViYXJFbGVtZW50LmFkZFN0eWxlQ2xhc3MoImZpbGVzeXN0ZW0tZGlyZWN0b3J5LXRyZWUi
KTsKKyAgICB0aGlzLnNpZGViYXJFbGVtZW50LmFkZFN0eWxlQ2xhc3MoIm91dGxpbmUtZGlzY2xv
c3VyZSIpOworICAgIHRoaXMuc2lkZWJhclRyZWVFbGVtZW50LnJlbW92ZVN0eWxlQ2xhc3MoInNp
ZGViYXItdHJlZSIpOworCisgICAgdGhpcy52aXNpYmxlVmlldyA9IG51bGw7CisgICAgdGhpcy5f
ZmlsZVZpZXdzID0ge307CisKKyAgICBmaWxlc3lzdGVtLmdldFJvb3QodGhpcy5fZGlkR2V0Um9v
dC5iaW5kKHRoaXMpKTsKK307CisKK1dlYkluc3BlY3Rvci5GaWxlU3lzdGVtVmlldy5wcm90b3R5
cGUgPSB7CisgICAgZ2V0IHN0YXR1c0Jhckl0ZW1zKCkKKyAgICB7CisgICAgICAgIHJldHVybiBb
dGhpcy5fcmVmcmVzaEJ1dHRvbi5lbGVtZW50XTsKKyAgICB9LAorCisgICAgc2hvdzogZnVuY3Rp
b24ocGFyZW50RWxlbWVudCwgaW5zZXJ0QmVmb3JlKQorICAgIHsKKyAgICAgICAgV2ViSW5zcGVj
dG9yLlZpZXcucHJvdG90eXBlLnNob3cuY2FsbCh0aGlzLCBwYXJlbnRFbGVtZW50LCBpbnNlcnRC
ZWZvcmUpOworICAgIH0sCisKKyAgICB3YXNTaG93bjogZnVuY3Rpb24oKQorICAgIHsKKyAgICAg
ICAgdGhpcy5zaG93biA9IHRydWU7CisgICAgICAgIHRoaXMuX3JlZnJlc2goKTsKKyAgICAgICAg
aWYgKHRoaXMuX3Jvb3QpCisgICAgICAgICAgICB0aGlzLl9yb290LnVwZGF0ZU5vdGlmaWNhdGlv
bih0cnVlKTsKKyAgICB9LAorCisgICAgd2lsbEhpZGU6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAg
ICAgIHRoaXMuc2hvd24gPSBmYWxzZTsKKyAgICAgICAgaWYgKHRoaXMuX3Jvb3QpCisgICAgICAg
ICAgICB0aGlzLl9yb290LnVwZGF0ZU5vdGlmaWNhdGlvbihmYWxzZSk7CisgICAgfSwKKworICAg
IF9yZWZyZXNoOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICBpZiAodGhpcy5fcm9vdCkKKyAg
ICAgICAgICAgIHRoaXMuX3Jvb3QuX3JlZnJlc2goKTsKKyAgICB9LAorCisgICAgX2RpZEdldFJv
b3Q6IGZ1bmN0aW9uKGVycm9yQ29kZSwgZW50cnkpCisgICAgeworICAgICAgICBpZiAoZXJyb3JD
b2RlKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHRoaXMuX3Jvb3QgPSBuZXcgV2Vi
SW5zcGVjdG9yLkZpbGVTeXN0ZW1EaXJlY3RvcnlUcmVlRWxlbWVudCh0aGlzLCBlbnRyeSk7Cisg
ICAgICAgIHRoaXMuc2lkZWJhclRyZWUuYXBwZW5kQ2hpbGQodGhpcy5fcm9vdCk7CisgICAgfSwK
KworICAgIHNob3dGaWxlOiBmdW5jdGlvbihlbnRyeSkKKyAgICB7CisgICAgICAgIHZhciB2aWV3
ID0gdGhpcy5fZmlsZVZpZXdzW2VudHJ5LnVybF07CisgICAgICAgIGlmICghdmlldykgeworICAg
ICAgICAgICAgdmlldyA9IG5ldyBXZWJJbnNwZWN0b3IuRmlsZUNvbnRlbnRWaWV3KGVudHJ5KTsK
KyAgICAgICAgICAgIHRoaXMuX2ZpbGVWaWV3c1tlbnRyeS51cmxdID0gdmlldzsKKyAgICAgICAg
fQorCisgICAgICAgIHRoaXMuX3Nob3dWaWV3KHZpZXcpOworICAgIH0sCisKKyAgICBfc2hvd1Zp
ZXc6IGZ1bmN0aW9uKHZpZXcpCisgICAgeworICAgICAgICBpZiAodGhpcy52aXNpYmxlVmlldykK
KyAgICAgICAgICAgIHRoaXMudmlzaWJsZVZpZXcuZGV0YWNoKCk7CisKKyAgICAgICAgdmlldy5z
aG93KHRoaXMuc3BsaXRWaWV3Lm1haW5FbGVtZW50KTsKKyAgICAgICAgdGhpcy52aXNpYmxlVmll
dyA9IHZpZXc7CisgICAgfQorfTsKKworV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1WaWV3LnByb3Rv
dHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuUGFuZWwucHJvdG90eXBlOworCisvKioKKyAq
IEBjb25zdHJ1Y3RvcgorICogQGV4dGVuZHMge1RyZWVFbGVtZW50fQorICovCitXZWJJbnNwZWN0
b3IuRmlsZVN5c3RlbURpcmVjdG9yeVRyZWVFbGVtZW50ID0gZnVuY3Rpb24oZmlsZXN5c3RlbVZp
ZXcsIGVudHJ5KQoreworICAgIFRyZWVFbGVtZW50LmNhbGwodGhpcywgZW50cnkubmFtZSA9PSAi
IiA/ICIvIiA6IGVudHJ5Lm5hbWUsIG51bGwsIGVudHJ5LmlzRGlyZWN0b3J5KTsKKyAgICB0aGlz
Ll9lbnRyeSA9IGVudHJ5OworICAgIHRoaXMuX2ZpbGVzeXN0ZW1WaWV3ID0gZmlsZXN5c3RlbVZp
ZXc7Cit9OworCitXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbURpcmVjdG9yeVRyZWVFbGVtZW50LnBy
b3RvdHlwZSA9IHsKKyAgICBvbmF0dGFjaDogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgdmFy
IHNlbGVjdGlvbkVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICAg
ICAgc2VsZWN0aW9uRWxlbWVudC5jbGFzc05hbWUgPSAic2VsZWN0aW9uIjsKKyAgICAgICAgdGhp
cy5saXN0SXRlbUVsZW1lbnQuaW5zZXJ0QmVmb3JlKHNlbGVjdGlvbkVsZW1lbnQsIHRoaXMubGlz
dEl0ZW1FbGVtZW50LmZpcnN0Q2hpbGQpOworICAgIH0sCisKKyAgICBvbnNlbGVjdDogZnVuY3Rp
b24oKQorICAgIHsKKyAgICAgICAgaWYgKCF0aGlzLl9lbnRyeS5pc0RpcmVjdG9yeSkKKyAgICAg
ICAgICAgIHRoaXMuX2ZpbGVzeXN0ZW1WaWV3LnNob3dGaWxlKHRoaXMuX2VudHJ5KTsKKyAgICB9
LAorCisgICAgb25leHBhbmQ6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHRoaXMuX3JlZnJl
c2goKTsKKyAgICAgICAgdGhpcy51cGRhdGVOb3RpZmljYXRpb24oKTsKKyAgICB9LAorCisgICAg
b25jb2xsYXBzZTogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgdGhpcy51cGRhdGVOb3RpZmlj
YXRpb24oKTsKKyAgICB9LAorCisgICAgdXBkYXRlTm90aWZpY2F0aW9uOiBmdW5jdGlvbih2aXNp
YmxlX3BhcmVudCkKKyAgICB7CisgICAgICAgIGlmICh2aXNpYmxlX3BhcmVudCAmJiB0aGlzLmV4
cGFuZGVkICYmIHRoaXMuX2ZpbGVzeXN0ZW1WaWV3LnZpc2libGUpIHsKKyAgICAgICAgICAgIGlm
ICghdGhpcy5fb2JzZXJ2ZXJJZCkgeworICAgICAgICAgICAgICAgIHRoaXMuX29ic2VydmVySWQg
PSB0aGlzLl9lbnRyeS5yZWdpc3Rlck9ic2VydmVyKHRoaXMuX3JlZnJlc2guYmluZCh0aGlzKSk7
CisgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmNoaWxkcmVuLmxlbmd0
aDsgKytpKQorICAgICAgICAgICAgICAgICAgICB0aGlzLmNoaWxkcmVuW2ldLnVwZGF0ZU5vdGlm
aWNhdGlvbih0cnVlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgIGlmICh0aGlzLl9vYnNlcnZlcklkKSB7CisgICAgICAgICAgICAgICAgdGhpcy5fZW50cnku
dW5yZWdpc3Rlck9ic2VydmVyKHRoaXMuX29ic2VydmVySWQpOworICAgICAgICAgICAgICAgIHRo
aXMuX29ic2VydmVySWQgPSBudWxsOworICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBp
IDwgdGhpcy5jaGlsZHJlbi5sZW5ndGg7ICsraSkKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5j
aGlsZHJlbltpXS51cGRhdGVOb3RpZmljYXRpb24oZmFsc2UpOworICAgICAgICAgICAgfQorICAg
ICAgICB9CisgICAgfSwKKworICAgIF9yZWZyZXNoOiBmdW5jdGlvbigpCisgICAgeworICAgICAg
ICB0aGlzLl9lbnRyeS5yZWFkRGlyZWN0b3J5KHRoaXMuX2RpZFJlYWREaXJlY3RvcnkuYmluZCh0
aGlzKSk7CisgICAgfSwKKworICAgIF9kaWRSZWFkRGlyZWN0b3J5OiBmdW5jdGlvbihlcnJvckNv
ZGUsIGVudHJpZXMpCisgICAgeworICAgICAgICBpZiAoZXJyb3JDb2RlKQorICAgICAgICAgICAg
cmV0dXJuOworCisgICAgICAgIHZhciB0cmFzaCA9IHt9OworICAgICAgICBmb3IgKHZhciBpID0g
MDsgaSA8IHRoaXMuY2hpbGRyZW4ubGVuZ3RoOyArK2kpCisgICAgICAgICAgICB0cmFzaFt0aGlz
LmNoaWxkcmVuW2ldLl9lbnRyeS51cmxdID0gdGhpcy5jaGlsZHJlbltpXTsKKworICAgICAgICBm
b3IgKHZhciBqID0gMDsgaiA8IGVudHJpZXMubGVuZ3RoOyArK2opIHsKKyAgICAgICAgICAgIGlm
ICghdHJhc2hbZW50cmllc1tqXS51cmxdKSB7CisgICAgICAgICAgICAgICAgdmFyIGNoaWxkID0g
bmV3IFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtRGlyZWN0b3J5VHJlZUVsZW1lbnQodGhpcy5fZmls
ZXN5c3RlbVZpZXcsIGVudHJpZXNbal0pOworICAgICAgICAgICAgICAgIHRoaXMuYXBwZW5kQ2hp
bGQoY2hpbGQpOworICAgICAgICAgICAgICAgIGNoaWxkLnVwZGF0ZU5vdGlmaWNhdGlvbighIXRo
aXMuX29ic2VydmVySWQpOworICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgZGVs
ZXRlIHRyYXNoW2VudHJpZXNbal0udXJsXTsKKyAgICAgICAgfQorCisgICAgICAgIGZvciAodmFy
IGsgaW4gdHJhc2gpIHsKKyAgICAgICAgICAgIHRyYXNoW2tdLnVwZGF0ZU5vdGlmaWNhdGlvbihm
YWxzZSk7CisgICAgICAgICAgICB0aGlzLnJlbW92ZUNoaWxkKHRyYXNoW2tdKTsKKyAgICAgICAg
fQorICAgIH0KK307CisKK1dlYkluc3BlY3Rvci5GaWxlU3lzdGVtRGlyZWN0b3J5VHJlZUVsZW1l
bnQucHJvdG90eXBlLl9fcHJvdG9fXyA9IFRyZWVFbGVtZW50LnByb3RvdHlwZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSW1hZ2VzL2ZpbGVzeXN0ZW0u
cG5nIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9JbWFnZXMvZmlsZXN5c3Rl
bS5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uOTI2Mzg5ZGFkMjI1ZGM3NzFiMmI5NjBjMDI3NjI1ZWJmMTg1MWZi
YgpHSVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwgMTIyNgp6Y21WOyoxVTM3S1ApPGg7M0t8TGswMDBl
MU5KTFRxMDAxQlcwMDFCZTFeQHM2YjkjRjgwMDAwMWI1Y2hfMEl0cCkKej0+UHgjMjRZSmBMOyhL
KXt7YTc+eXtENF4wMDBTYU5MaDBMMDFGY1UwMUZjVjBHZ1pfMDAwMDdiVipHYDJpcHQqCnoxX35T
XzB0ODxHMDBjQCZMX3QobyF8aipOan0lMjEjKCZrX0dyUCl+VGA7UkxGIyR+JDVoOTVuMkwtZHln
R3ZaUQp6UGtRa21rbUpWMDFNeD1VITZQeG9xakRwOUZma0hENWZ4PChMTktAPll3IWN1dW1tQHw/
QzExISklJHY9P3dSU0cKej8ldnNXKUppNSg+OGA1aGN8WW9ULS1pR0NGeGxrWWdSajI+eWE1ZE14
O1lGQ1BJUF5NIz1RVUxwKDYqMTIrWnhACnpeWlp+SyloWjhBXj8+NDxqRjExd0dyTS1MaUBAO3ty
PzZJciN0dDMxMH15MnxCKCs0dXR3dmwwRS0zKyp7d0pXKQp6Nkw9OHlidj10cCUqPEthOStJMUBZ
OVk5NHNyJE9sakpoYEU3RDtJY3ZPVjJrTWN4UVgkd2pMLVhBODgqajFGczYKejFnQzk0KXY5RTRy
RTgrOU1DJF84UDdBZnJyRTNqUUJ+RHkxZnA1TSR2K2pGKmBwbWgxcjJ8bz8pcUQyNyt8d3BpCnpM
N2U1cDdzcSZVJiVVMClnMFJMWEEwSTdHIXNSPFJRSSluXmJNRFElK1N2cUVXb2g8JGtCVm1xPnZ0
aGxOJDlnVwp6T0ttTkBUTVAzR1QpbEZZc2NTYl9UeUFpRGRLdnsobCkrNnlKaEZYK2pobHVyZiQy
YUdQP1dHTDFYZmEhUU9TIUIKejloI3VSWjxpKTxWJVlpQWxaWD4pd0hoVn1YKUdecmQtQGlhRko1
OFNiNUZPOUZlYWJLKT1EdH09Y0h3K3NJKWU8Cnp4ZD0lIVZmeTlfK2pma3c+KTl1MCN0SHJYZUZS
fnxeODVARjdhWFRmcDV5dS0qUW9jXjVzXi17QyNjUWhubFgpfgp6ck1yUT02Z3lHQXtyKVY4RXRs
MmgqKlB8QnlwSiR8emIxYWRJPml7akpfPn1vU3orXipgPGVMcEdSfj5EZXN2ZzQKekskekgzUlh1
OHEoT2VSflJGS2l5O2wyK0tBTGY8VV9PVyV4SGYtR1J1fiR0fjQ4I2RMTVpNKm5mfkd6ZVE5UT8y
CnokRyt5bSNNRTJCNjdYM3IzNzYtbGFKR0BVdUE2fGZtVV9MMF9TY0VUdyMyQ1FBRFQ0aSMpbllT
ZHtUaVJLb0A1Uwp6b0FWR3YxMy1XR0VrSlMzUiRlRlA2eXEjdm48PW9RaVlPUnlBUEsxUmI5TD5j
NGgmeyMyNUg3JWpMUmY3WUJ2aCkKejV7cCFuUzU0b0dNTnkwak5DcyN6RWB9NmJNS0dGQEdKKVM1
MWcrWjhUP15FTE5ZM3Fyd05ATzYjaVZvTjhYaU8oCnpucCRuckExO0FwQzleUGhFNG0xTGRIUTFJ
RW9qdnlhVHUzKXc8ankwLXRGRzxjR0UlPEwoPWZ6Qn1GU29WRV43MQp6RHkhUV4/fHRDa0l8MThC
LUpQSzd5dFMme0Q8JWJaTmtgbUZIMzRHYGk/Y1V5JjZQQ0BrQG88dTMza1BVKHhJTkoKelU9dDZu
TzFCdkYodnFSb2prSjx4eFhaODR6K0I+PWIlTGpKUSVPTD9VJmV3WUckISFkVTRxJmVCWjcoKVNJ
dy1UCnpiPmdSanFeczdxMm4yPy02aWFDalVgIztjK0llaG5AMllPNypSRHUkOyZQcExHJih4azJN
bEdNVzdJY0xAPDk8Vwp6XjV7ZVNhUTt1bSY7TzNXbCo1KlVVMkg7YSk1QVFyYHwqSz1nQHU5NDFB
Vn51YEs5RlpQZnQkbDEyJlpNdytWeXkKekpWP0QoX3R1Kz03UUJkbnZrWDQ0XzRkSDw9Q2hOTmxi
MTZCRj52WUp1WVZyfC1kXmpGMHwjRStHQ1Z4SShYRk1+Cm9XdUozbDd7emdYYjhLd3Y3eWNpPktS
WTRGbnl2b0g8XlRXeTA3KnFvTTZOPCRmPlNMKkM7JEtlCgpsaXRlcmFsIDAKSGNtVj9kMDAwMDEK
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNl
c1BhbmVsLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZXNQ
YW5lbC5qcwppbmRleCA3ZjlkZGEyOGJiNzBlMjE3NmI5ZjgwOGJiN2QyMjY3ZDE1ZjhkOTYxLi44
YWE4ZGY0MTIyOTg3OGVjODkxMzhhMjZkMWViMTZlNzRkY2QwMDU4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlc1BhbmVsLmpzCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VzUGFuZWwuanMKQEAgLTY5
LDYgKzY5LDExIEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZXNQYW5lbCA9IGZ1bmN0aW9uKGRhdGFi
YXNlKQogICAgIHRoaXMuYXBwbGljYXRpb25DYWNoZUxpc3RUcmVlRWxlbWVudCA9IG5ldyBXZWJJ
bnNwZWN0b3IuU3RvcmFnZUNhdGVnb3J5VHJlZUVsZW1lbnQodGhpcywgV2ViSW5zcGVjdG9yLlVJ
U3RyaW5nKCJBcHBsaWNhdGlvbiBDYWNoZSIpLCAiQXBwbGljYXRpb25DYWNoZSIsIFsiYXBwbGlj
YXRpb24tY2FjaGUtc3RvcmFnZS10cmVlLWl0ZW0iXSk7CiAgICAgdGhpcy5zaWRlYmFyVHJlZS5h
cHBlbmRDaGlsZCh0aGlzLmFwcGxpY2F0aW9uQ2FjaGVMaXN0VHJlZUVsZW1lbnQpOwogCisgICAg
dGhpcy5maWxlc3lzdGVtTGlzdFRyZWVFbGVtZW50ID0gbmV3IFdlYkluc3BlY3Rvci5TdG9yYWdl
Q2F0ZWdvcnlUcmVlRWxlbWVudCh0aGlzLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkZpbGVTeXN0
ZW0iKSwgIkZpbGVTeXN0ZW0iLCBbImZpbGVzeXN0ZW0tc3RvcmFnZS10cmVlLWl0ZW0iXSk7Cisg
ICAgdGhpcy5zaWRlYmFyVHJlZS5hcHBlbmRDaGlsZCh0aGlzLmZpbGVzeXN0ZW1MaXN0VHJlZUVs
ZW1lbnQpOworICAgIHRoaXMuX2ZpbGVzeXN0ZW1UcmVlRWxlbWVudHMgPSB7fTsKKyAgICB0aGlz
Ll9maWxlc3lzdGVtVmlld3MgPSB7fTsKKwogICAgIHRoaXMuc3RvcmFnZVZpZXdzID0gdGhpcy5z
cGxpdFZpZXcubWFpbkVsZW1lbnQ7CiAgICAgdGhpcy5zdG9yYWdlVmlld3MuYWRkU3R5bGVDbGFz
cygiZGlmZi1jb250YWluZXIiKTsKIApAQCAtMTE3LDYgKzEyMiw3IEBAIFdlYkluc3BlY3Rvci5S
ZXNvdXJjZXNQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIGlmICghdGhpcy5faW5pdGlhbGl6
ZWQgJiYgdGhpcy5pc1Nob3dpbmcoKSAmJiB0aGlzLl9jYWNoZWRSZXNvdXJjZXNXZXJlTG9hZGVk
KSB7CiAgICAgICAgICAgICB0aGlzLl9wb3B1bGF0ZVJlc291cmNlVHJlZSgpOwogICAgICAgICAg
ICAgdGhpcy5fcG9wdWxhdGVBcHBsaWNhdGlvbkNhY2hlVHJlZSgpOworICAgICAgICAgICAgdGhp
cy5fcG9wdWxhdGVGaWxlU3lzdGVtVHJlZSgpOwogICAgICAgICAgICAgdGhpcy5faW5pdERlZmF1
bHRTZWxlY3Rpb24oKTsKICAgICAgICAgICAgIHRoaXMuX2luaXRpYWxpemVkID0gdHJ1ZTsKICAg
ICAgICAgfQpAQCAtMzE1LDYgKzMyMSwyNiBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2VzUGFuZWwu
cHJvdG90eXBlID0gewogICAgICAgICAgICAgdGhpcy5zZXNzaW9uU3RvcmFnZUxpc3RUcmVlRWxl
bWVudC5hcHBlbmRDaGlsZChkb21TdG9yYWdlVHJlZUVsZW1lbnQpOwogICAgIH0sCiAKKyAgICBh
ZGRGaWxlU3lzdGVtOiBmdW5jdGlvbihmaWxlc3lzdGVtKQorICAgIHsKKyAgICAgICAgdmFyIGZp
bGVzeXN0ZW1UcmVlRWxlbWVudCA9IG5ldyBXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbVRyZWVFbGVt
ZW50KHRoaXMsIGZpbGVzeXN0ZW0pOworICAgICAgICB0aGlzLl9maWxlc3lzdGVtVHJlZUVsZW1l
bnRzW2ZpbGVzeXN0ZW0ubmFtZV0gPSBmaWxlc3lzdGVtVHJlZUVsZW1lbnQ7CisgICAgICAgIHRo
aXMuZmlsZXN5c3RlbUxpc3RUcmVlRWxlbWVudC5hcHBlbmRDaGlsZChmaWxlc3lzdGVtVHJlZUVs
ZW1lbnQpOworICAgIH0sCisKKyAgICByZW1vdmVGaWxlU3lzdGVtOiBmdW5jdGlvbihmaWxlc3lz
dGVtKQorICAgIHsKKyAgICAgICAgdGhpcy5maWxlc3lzdGVtTGlzdFRyZWVFbGVtZW50LnJlbW92
ZUNoaWxkKHRoaXMuX2ZpbGVzeXN0ZW1UcmVlRWxlbWVudHNbZmlsZXN5c3RlbS5uYW1lXSk7Cisg
ICAgICAgIGRlbGV0ZSB0aGlzLl9maWxlc3lzdGVtVHJlZUVsZW1lbnRzW2ZpbGVzeXN0ZW0ubmFt
ZV07CisKKyAgICAgICAgdmFyIHZpZXcgPSB0aGlzLl9maWxlc3lzdGVtVmlld3NbZmlsZXN5c3Rl
bS5uYW1lXTsKKyAgICAgICAgaWYgKHZpZXcpIHsKKyAgICAgICAgICAgIGlmICh0aGlzLnZpc2li
bGVWaWV3ID09IHZpZXcpCisgICAgICAgICAgICAgICAgdGhpcy5jbG9zZVZpc2libGVWaWV3KCk7
CisgICAgICAgICAgICBkZWxldGUgdGhpcy5fZmlsZXN5c3RlbVZpZXdzW2ZpbGVzeXN0ZW0ubmFt
ZV07CisgICAgICAgIH0KKyAgICB9LAorCiAgICAgc2VsZWN0RGF0YWJhc2U6IGZ1bmN0aW9uKGRh
dGFiYXNlSWQpCiAgICAgewogICAgICAgICB2YXIgZGF0YWJhc2U7CkBAIC00OTUsNiArNTIxLDEz
IEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZXNQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRo
aXMuX2lubmVyU2hvd1ZpZXcodGhpcy5fYXBwbGljYXRpb25DYWNoZVZpZXdzW2ZyYW1lSWRdKTsK
ICAgICB9LAogCisgICAgc2hvd0ZpbGVTeXN0ZW06IGZ1bmN0aW9uKGZpbGVzeXN0ZW0pCisgICAg
eworICAgICAgICBpZiAoIXRoaXMuX2ZpbGVzeXN0ZW1WaWV3c1tmaWxlc3lzdGVtLm5hbWVdKQor
ICAgICAgICAgICAgdGhpcy5fZmlsZXN5c3RlbVZpZXdzW2ZpbGVzeXN0ZW0ubmFtZV0gPSBuZXcg
V2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1WaWV3KGZpbGVzeXN0ZW0pOworICAgICAgICB0aGlzLl9p
bm5lclNob3dWaWV3KHRoaXMuX2ZpbGVzeXN0ZW1WaWV3c1tmaWxlc3lzdGVtLm5hbWVdKTsKKyAg
ICB9LAorCiAgICAgc2hvd0NhdGVnb3J5VmlldzogZnVuY3Rpb24oY2F0ZWdvcnlOYW1lKQogICAg
IHsKICAgICAgICAgaWYgKCF0aGlzLl9jYXRlZ29yeVZpZXcpCkBAIC01ODIsNiArNjE1LDE0IEBA
IFdlYkluc3BlY3Rvci5SZXNvdXJjZXNQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMu
X2FwcGxpY2F0aW9uQ2FjaGVNb2RlbC5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5BcHBs
aWNhdGlvbkNhY2hlTW9kZWwuRXZlbnRUeXBlcy5OZXR3b3JrU3RhdGVDaGFuZ2VkLCB0aGlzLl9h
cHBsaWNhdGlvbkNhY2hlTmV0d29ya1N0YXRlQ2hhbmdlZCwgdGhpcyk7CiAgICAgfSwKIAorICAg
IF9wb3B1bGF0ZUZpbGVTeXN0ZW1UcmVlOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICB0aGlz
Ll9maWxlc3lzdGVtTWFuYWdlciA9IG5ldyBXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1hbmFnZXIo
KTsKKyAgICAgICAgdGhpcy5fZmlsZXN5c3RlbU1hbmFnZXIub25GaWxlU3lzdGVtQWRkZWQgPSB0
aGlzLmFkZEZpbGVTeXN0ZW0uYmluZCh0aGlzKTsKKyAgICAgICAgdGhpcy5fZmlsZXN5c3RlbU1h
bmFnZXIub25GaWxlU3lzdGVtUmVtb3ZlZCA9IHRoaXMucmVtb3ZlRmlsZVN5c3RlbS5iaW5kKHRo
aXMpOworICAgICAgICB0aGlzLl9maWxlc3lzdGVtTWFuYWdlci5yZWZyZXNoKCk7CisgICAgfSwK
KwogICAgIF9hcHBsaWNhdGlvbkNhY2hlRnJhbWVNYW5pZmVzdEFkZGVkOiBmdW5jdGlvbihldmVu
dCkKICAgICB7CiAgICAgICAgIHZhciBmcmFtZUlkID0gZXZlbnQuZGF0YTsKQEAgLTE4NDAsNiAr
MTg4MSwyOSBAQCBXZWJJbnNwZWN0b3IuQXBwbGljYXRpb25DYWNoZUZyYW1lVHJlZUVsZW1lbnQu
cHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3RvcgogICogQGNvbnN0cnVjdG9yCiAgKiBA
ZXh0ZW5kcyB7V2ViSW5zcGVjdG9yLkJhc2VTdG9yYWdlVHJlZUVsZW1lbnR9CiAgKi8KK1dlYklu
c3BlY3Rvci5GaWxlU3lzdGVtVHJlZUVsZW1lbnQgPSBmdW5jdGlvbihzdG9yYWdlUGFuZWwsIGZp
bGVzeXN0ZW0pCit7CisgICAgdGhpcy5fc3RvcmFnZVBhbmVsID0gc3RvcmFnZVBhbmVsOworICAg
IHRoaXMuX2ZpbGVzeXN0ZW0gPSBmaWxlc3lzdGVtOworCisgICAgdmFyIHRpdGxlID0gZmlsZXN5
c3RlbS50eXBlICsgIiwgIiArIGZpbGVzeXN0ZW0ub3JpZ2luLmFzUGFyc2VkVVJMKCkuaG9zdDsK
KyAgICBXZWJJbnNwZWN0b3IuQmFzZVN0b3JhZ2VUcmVlRWxlbWVudC5jYWxsKHRoaXMsIHN0b3Jh
Z2VQYW5lbCwgbnVsbCwgdGl0bGUsIFsiZmlsZXN5c3RlbS1zdG9yYWdlLXRyZWUtaXRlbSJdKTsK
K307CisKK1dlYkluc3BlY3Rvci5GaWxlU3lzdGVtVHJlZUVsZW1lbnQucHJvdG90eXBlID0gewor
ICAgIG9uc2VsZWN0OiBmdW5jdGlvbigpCisgICAgeworICAgICAgICBXZWJJbnNwZWN0b3IuQmFz
ZVN0b3JhZ2VUcmVlRWxlbWVudC5wcm90b3R5cGUub25zZWxlY3QuY2FsbCh0aGlzKTsKKyAgICAg
ICAgdGhpcy5fc3RvcmFnZVBhbmVsLnNob3dGaWxlU3lzdGVtKHRoaXMuX2ZpbGVzeXN0ZW0pOwor
ICAgIH0KK307CisKK1dlYkluc3BlY3Rvci5GaWxlU3lzdGVtVHJlZUVsZW1lbnQucHJvdG90eXBl
Ll9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5CYXNlU3RvcmFnZVRyZWVFbGVtZW50LnByb3RvdHlw
ZTsKKworLyoqCisgKiBAY29uc3RydWN0b3IKKyAqIEBleHRlbmRzIHtXZWJJbnNwZWN0b3IuQmFz
ZVN0b3JhZ2VUcmVlRWxlbWVudH0KKyAqLwogV2ViSW5zcGVjdG9yLlJlc291cmNlUmV2aXNpb25U
cmVlRWxlbWVudCA9IGZ1bmN0aW9uKHN0b3JhZ2VQYW5lbCwgcmV2aXNpb24pCiB7CiAgICAgdmFy
IHRpdGxlID0gcmV2aXNpb24udGltZXN0YW1wID8gcmV2aXNpb24udGltZXN0YW1wLnRvTG9jYWxl
VGltZVN0cmluZygpIDogV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCIob3JpZ2luYWwpIik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1dlYktpdC5xcmMgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1dlYktpdC5xcmMKaW5kZXggMDVmMTA3
MjczMzA3N2M2YjY5ZmQ4NGM2NjliNTBjNmI5YWI0YWU3YS4uODZmYjlkYzMxOGYxYjFlMGU5ODU0
YTRjYWE1NGU1ZDY0ODMxMjQ4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9XZWJLaXQucXJjCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvV2ViS2l0LnFyYwpAQCAtNTYsNiArNTYsNyBAQAogICAgIDxmaWxlPkV4dGVuc2lvblBh
bmVsLmpzPC9maWxlPgogICAgIDxmaWxlPkV4dGVuc2lvblJlZ2lzdHJ5U3R1Yi5qczwvZmlsZT4K
ICAgICA8ZmlsZT5FeHRlbnNpb25TZXJ2ZXIuanM8L2ZpbGU+CisgICAgPGZpbGU+RmlsZVN5c3Rl
bS5qczwvZmlsZT4KICAgICA8ZmlsZT5GaWx0ZXJlZEl0ZW1TZWxlY3Rpb25EaWFsb2cuanM8L2Zp
bGU+CiAgICAgPGZpbGU+Rm9udFZpZXcuanM8L2ZpbGU+CiAgICAgPGZpbGU+R29Ub0xpbmVEaWFs
b2cuanM8L2ZpbGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL2luc3BlY3Rvci5odG1sIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9p
bnNwZWN0b3IuaHRtbAppbmRleCA5NGY3YzgwODFkNjBjMDExYTcxZWRlMjQwZWVmMmYzNWExYjNj
NmNlLi45ZDU0MzJhYjliY2E0ZmM2Y2U2OWI4Njk1MDE4ZWRkYTFkMjU5YTA2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5odG1sCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmh0bWwKQEAgLTgy
LDYgKzgyLDcgQEAgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIg
c3JjPSJBcHBsaWNhdGlvbkNhY2hlTW9kZWwuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgdHlw
ZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IkFwcGxpY2F0aW9uQ2FjaGVJdGVtc1ZpZXcuanMiPjwv
c2NyaXB0PgogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IkluZGV4ZWRE
Qk1vZGVsLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIg
c3JjPSJGaWxlU3lzdGVtLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2
YXNjcmlwdCIgc3JjPSJTY3JpcHQuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgdHlwZT0idGV4
dC9qYXZhc2NyaXB0IiBzcmM9IlNwZWN0cnVtLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHR5
cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJTaWRlYmFyUGFuZS5qcyI+PC9zY3JpcHQ+CkBAIC0x
NDksNiArMTUwLDggQEAgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlw
dCIgc3JjPSJTb3VyY2VDU1NUb2tlbml6ZXIuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgdHlw
ZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IlNvdXJjZUhUTUxUb2tlbml6ZXIuanMiPjwvc2NyaXB0
PgogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IlNvdXJjZUphdmFTY3Jp
cHRUb2tlbml6ZXIuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2Ny
aXB0IiBzcmM9IkZpbGVDb250ZW50Vmlldy5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCB0eXBl
PSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iRmlsZVN5c3RlbVZpZXcuanMiPjwvc2NyaXB0PgogICAg
IDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IkZvbnRWaWV3LmpzIj48L3Njcmlw
dD4KICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJJbWFnZVZpZXcuanMi
Pjwvc2NyaXB0PgogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IkRhdGFi
YXNlVGFibGVWaWV3LmpzIj48L3NjcmlwdD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvcmVzb3VyY2VzUGFuZWwuY3NzIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9yZXNvdXJjZXNQYW5lbC5jc3MKaW5kZXggYTJiM2FkM2I1YmY0NDI3
MzVjYWY2Zjg5YmYyNjQwZDE0ODZiYzMxNi4uZmZiZjA0ZDEwZWMwMzU4MjAyZGY4YzVkOThkMGY5
ZTlmZDM4NWM0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9yZXNvdXJjZXNQYW5lbC5jc3MKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9yZXNvdXJjZXNQYW5lbC5jc3MKQEAgLTMyNiw3ICszMjYsMTYgQEAgbGkuc2VsZWN0ZWQg
LmJhc2Utc3RvcmFnZS10cmVlLWVsZW1lbnQtc3VidGl0bGUgewogICAgIGNvbnRlbnQ6IHVybChJ
bWFnZXMvYXBwbGljYXRpb25DYWNoZS5wbmcpOwogfQogCi0vKiBGSVhNRTogTWFrZSBzZXBhcmF0
ZSBwbmcgZm9yIGZpbGUtc3lzdGVtICovCi0uZmlsZS1zeXN0ZW0tc3RvcmFnZS10cmVlLWl0ZW0g
Lmljb24gewotICAgIGNvbnRlbnQ6IHVybChJbWFnZXMvYXBwbGljYXRpb25DYWNoZS5wbmcpOwor
LmZpbGVzeXN0ZW0tc3RvcmFnZS10cmVlLWl0ZW0gLmljb24geworICAgIGNvbnRlbnQ6IHVybChJ
bWFnZXMvZmlsZXN5c3RlbS5wbmcpOworfQorCisuZmlsZXN5c3RlbS1kaXJlY3RvcnktdHJlZSBs
aSB7CisgICAgb3ZlcmZsb3c6IGhpZGRlbjsKKyAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsK
K30KKworLmZpbGUtY29udGVudC12aWV3IHsKKyAgICBvdmVyZmxvdzogaGlkZGVuOworICAgIHRl
eHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>142628</attachid>
            <date>2012-05-17 21:50:58 -0700</date>
            <delta_ts>2012-05-23 20:15:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-72691-20120518135057.patch</filename>
            <type>text/plain</type>
            <size>28228</size>
            <attacher name="Taiju Tsuiki">tzik</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE3NTI1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2ZpbGVzeXN0ZW0vRE9NRmlsZVN5c3RlbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2ZpbGVzeXN0ZW0vRE9NRmlsZVN5c3RlbS5jcHAKaW5kZXggN2JiMGE2NzU3NjdkNWVkZWJm
Y2NkYzdlZTNmZGMwODIyOWVlNDkwNC4uZTI1NWYwMDkxZTVmZjZhZTY2NTMxN2ZlMDY2MjQwNWRh
MzI5Y2YxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0RP
TUZpbGVTeXN0ZW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9E
T01GaWxlU3lzdGVtLmNwcApAQCAtNDUsNyArNDUsNiBAQAogI2luY2x1ZGUgIkZpbGVXcml0ZXIu
aCIKICNpbmNsdWRlICJGaWxlV3JpdGVyQmFzZUNhbGxiYWNrLmgiCiAjaW5jbHVkZSAiRmlsZVdy
aXRlckNhbGxiYWNrLmgiCi0jaW5jbHVkZSAiSW5zcGVjdG9yRmlsZVN5c3RlbUluc3RydW1lbnRh
dGlvbi5oIgogI2luY2x1ZGUgIk1ldGFkYXRhQ2FsbGJhY2suaCIKICNpbmNsdWRlICJTY3JpcHRF
eGVjdXRpb25Db250ZXh0LmgiCiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgpAQCAtNTcsNyArNTYs
NiBAQCBQYXNzUmVmUHRyPERPTUZpbGVTeXN0ZW0+IERPTUZpbGVTeXN0ZW06OmNyZWF0ZShTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LAogewogICAgIFJlZlB0cjxET01GaWxlU3lzdGVt
PiBmaWxlU3lzdGVtKGFkb3B0UmVmKG5ldyBET01GaWxlU3lzdGVtKGNvbnRleHQsIG5hbWUsIHR5
cGUsIHJvb3RVUkwsIGFzeW5jRmlsZVN5c3RlbSkpKTsKICAgICBmaWxlU3lzdGVtLT5zdXNwZW5k
SWZOZWVkZWQoKTsKLSAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZE9wZW5GaWxlU3lz
dGVtKGZpbGVTeXN0ZW0uZ2V0KCkpOwogICAgIHJldHVybiBmaWxlU3lzdGVtLnJlbGVhc2UoKTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IDFiNzBkMGI0Y2ZiMmRkNWQ3OWExYTY2MDRjNDE4ZGUx
M2MzMGVkNDAuLjRmN2E5ZTA3MzFkZTQzNTE2YTM1OTkzYWJlOGM4ODY3MDQzYWI4YmUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLmd5cGkKQEAgLTI3ODAsNyArMjc4MCw2IEBACiAgICAgICAgICAgICAnaW5zcGVjdG9y
L0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuaCcsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL0luc3Bl
Y3RvckZpbGVTeXN0ZW1BZ2VudC5jcHAnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9JbnNwZWN0
b3JGaWxlU3lzdGVtQWdlbnQuaCcsCi0gICAgICAgICAgICAnaW5zcGVjdG9yL0luc3BlY3RvckZp
bGVTeXN0ZW1JbnN0cnVtZW50YXRpb24uaCcsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL0luc3Bl
Y3RvckZyb250ZW5kQ2hhbm5lbC5oJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvSW5zcGVjdG9y
RnJvbnRlbmRDbGllbnRMb2NhbC5jcHAnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9JbnNwZWN0
b3JGcm9udGVuZEhvc3QuY3BwJywKQEAgLTYzOTQsNiArNjM5Myw4IEBACiAgICAgICAgICAgICAn
aW5zcGVjdG9yL2Zyb250LWVuZC9FeHRlbnNpb25SZWdpc3RyeVN0dWIuanMnLAogICAgICAgICAg
ICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvRXh0ZW5zaW9uU2VydmVyLmpzJywKICAgICAgICAgICAg
ICdpbnNwZWN0b3IvZnJvbnQtZW5kL0ZpbGVNYW5hZ2VyLmpzJywKKyAgICAgICAgICAgICdpbnNw
ZWN0b3IvZnJvbnQtZW5kL0ZpbGVTeXN0ZW1Nb2RlbC5qcycsCisgICAgICAgICAgICAnaW5zcGVj
dG9yL2Zyb250LWVuZC9GaWxlU3lzdGVtVmlldy5qcycsCiAgICAgICAgICAgICAnaW5zcGVjdG9y
L2Zyb250LWVuZC9GaWx0ZXJlZEl0ZW1TZWxlY3Rpb25EaWFsb2cuanMnLAogICAgICAgICAgICAg
J2luc3BlY3Rvci9mcm9udC1lbmQvRm9udFZpZXcuanMnLAogICAgICAgICAgICAgJ2luc3BlY3Rv
ci9mcm9udC1lbmQvR29Ub0xpbmVEaWFsb2cuanMnLApAQCAtNjU4Myw2ICs2NTg0LDcgQEAKICAg
ICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0ltYWdlcy9lcnJvck1lZGl1bUljb24ucG5n
JywKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0ltYWdlcy9lcnJvclJlZERvdC5w
bmcnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvSW1hZ2VzL2ZvcndhcmQucG5n
JywKKyAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0ltYWdlcy9maWxlc3lzdGVtLnBu
ZycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9JbWFnZXMvZnJhbWUucG5nJywK
ICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0ltYWdlcy9nbG9zc3lIZWFkZXIucG5n
JywKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0ltYWdlcy9nbG9zc3lIZWFkZXJQ
cmVzc2VkLnBuZycsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9X
ZWJDb3JlLnZjcHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNw
cm9qCmluZGV4IDIxM2Q5M2JmYWEzNmY4YzZjMDI3OTg5MWZlM2RkYmRlNjY4MTJiMGEuLmQyNzM0
NjU4YTE0YTM2MTYxN2FjN2FlNTQ3YmU2OTYyYTc2NDIzYWYgMTAwNzU1Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCkBAIC03NDMxNyw2ICs3NDMxNywxNCBAQAog
CQkJCQk+CiAJCQkJPC9GaWxlPgogCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5caW5z
cGVjdG9yXGZyb250LWVuZFxGaWxlU3lzdGVtTW9kZWwuanMiCisJCQkJCT4KKwkJCQk8L0ZpbGU+
CisJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxpbnNwZWN0b3JcZnJvbnQtZW5kXEZp
bGVTeXN0ZW1WaWV3LmpzIgorCQkJCQk+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCiAJCQkJCVJl
bGF0aXZlUGF0aD0iLi5caW5zcGVjdG9yXGZyb250LWVuZFxmaWx0ZXJlZEl0ZW1TZWxlY3Rpb25E
aWFsb2cuY3NzIgogCQkJCQk+CiAJCQkJPC9GaWxlPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2NvbXBpbGUtZnJvbnQtZW5kLnB5IGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2NvbXBpbGUtZnJvbnQtZW5kLnB5CmluZGV4IDBhMDQzZGNmMGVkYTZjYzJhM2U2MmJmNDA5
YmI2NTc0ZWJkZWRiY2UuLjQ5OWM4OTY4MDNiNTgzMWMwMDBiYTE0MWJjZGZmNTQ3ODM5MGRhNDUg
MTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9jb21waWxlLWZyb250LWVuZC5w
eQorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvY29tcGlsZS1mcm9udC1lbmQucHkKQEAg
LTc2LDYgKzc2LDcgQEAgbW9kdWxlcyA9IFsKICAgICAgICAgICAgICJEZWJ1Z2dlclJlc291cmNl
QmluZGluZy5qcyIsCiAgICAgICAgICAgICAiRGVidWdnZXJTY3JpcHRNYXBwaW5nLmpzIiwKICAg
ICAgICAgICAgICJGaWxlTWFuYWdlci5qcyIsCisgICAgICAgICAgICAiRmlsZVN5c3RlbU1vZGVs
LmpzIiwKICAgICAgICAgICAgICJIQVJFbnRyeS5qcyIsCiAgICAgICAgICAgICAiSW5kZXhlZERC
TW9kZWwuanMiLAogICAgICAgICAgICAgIkxpbmtpZmllci5qcyIsCkBAIC0yMDQsNiArMjA1LDcg
QEAgbW9kdWxlcyA9IFsKICAgICAgICAgICAgICJEYXRhYmFzZVF1ZXJ5Vmlldy5qcyIsCiAgICAg
ICAgICAgICAiRGF0YWJhc2VUYWJsZVZpZXcuanMiLAogICAgICAgICAgICAgIkRPTVN0b3JhZ2VJ
dGVtc1ZpZXcuanMiLAorICAgICAgICAgICAgIkZpbGVTeXN0ZW1WaWV3LmpzIiwKICAgICAgICAg
ICAgICJJbmRleGVkREJWaWV3cy5qcyIsCiAgICAgICAgICAgICAiUmVzb3VyY2VzUGFuZWwuanMi
LAogICAgICAgICBdCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL0ZpbGVTeXN0ZW1Nb2RlbC5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvRmlsZVN5c3RlbU1vZGVsLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZlZmU3MWI3ODIwYjJiNDQzZGE4YzY1
MWI0Y2UyZTNiZGU0NWM1YWUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL0ZpbGVTeXN0ZW1Nb2RlbC5qcwpAQCAtMCwwICsxLDMwMyBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBk
aXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5v
ciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3Jz
ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRo
b3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JT
CisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIg
T1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICog
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKy8qKgor
ICogQGNvbnN0cnVjdG9yCisgKi8KK1dlYkluc3BlY3Rvci5GaWxlU3lzdGVtTW9kZWwgPSBmdW5j
dGlvbigpCit7CisgICAgV2ViSW5zcGVjdG9yLk9iamVjdC5jYWxsKHRoaXMpOworCisgICAgdGhp
cy5fZnJhbWVzID0ge307CisgICAgdGhpcy5fZnJhbWVzRm9yT3JpZ2luID0ge307CisgICAgdGhp
cy5fZmlsZXN5c3RlbUZvck9yaWdpbiA9IHt9OworCisgICAgV2ViSW5zcGVjdG9yLnJlc291cmNl
VHJlZU1vZGVsLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlJlc291cmNlVHJlZU1vZGVs
LkV2ZW50VHlwZXMuRnJhbWVOYXZpZ2F0ZWQsIHRoaXMuX2ZyYW1lTmF2aWdhdGVkLCB0aGlzKTsK
KyAgICBXZWJJbnNwZWN0b3IucmVzb3VyY2VUcmVlTW9kZWwuYWRkRXZlbnRMaXN0ZW5lcihXZWJJ
bnNwZWN0b3IuUmVzb3VyY2VUcmVlTW9kZWwuRXZlbnRUeXBlcy5GcmFtZURldGFjaGVkLCB0aGlz
Ll9mcmFtZURldGFjaGVkLCB0aGlzKTsKK30KKworV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2Rl
bC5wcm90b3R5cGUgPSB7CisgICAgLyoqCisgICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuRXZl
bnR9IGV2ZW50CisgICAgICovCisgICAgX2ZyYW1lTmF2aWdhdGVkOiBmdW5jdGlvbihldmVudCkK
KyAgICB7CisgICAgICAgIHRoaXMuX2F0dGFjaEZyYW1lUmVjdXJzaXZlKGV2ZW50LmRhdGEpOwor
ICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5FdmVudH0gZXZl
bnQKKyAgICAgKi8KKyAgICBfZnJhbWVEZXRhY2hlZDogZnVuY3Rpb24oZXZlbnQpCisgICAgewor
ICAgICAgICB0aGlzLl9kZXRhY2hGcmFtZVJlY3Vyc2l2ZShldmVudC5kYXRhKTsKKyAgICB9LAor
CisgICAgLyoqCisgICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuUmVzb3VyY2VUcmVlRnJhbWV9
IGZyYW1lCisgICAgICovCisgICAgX2F0dGFjaEZyYW1lOiBmdW5jdGlvbihmcmFtZSkKKyAgICB7
CisgICAgICAgIGlmICh0aGlzLl9mcmFtZXNbZnJhbWUuaWRdKQorICAgICAgICAgICAgdGhpcy5f
ZGV0YWNoRnJhbWVSZWN1cnNpdmUoZnJhbWUpOworICAgICAgICBpZiAoZnJhbWUuc2VjdXJpdHlP
cmlnaW4gPT0gIm51bGwiKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB0aGlzLl9mcmFt
ZXNbZnJhbWUuaWRdID0gbmV3IFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtTW9kZWwuRnJhbWUodGhp
cywgZnJhbWUpOworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rv
ci5SZXNvdXJjZVRyZWVGcmFtZX0gZnJhbWUKKyAgICAgKi8KKyAgICBfYXR0YWNoRnJhbWVSZWN1
cnNpdmU6IGZ1bmN0aW9uKGZyYW1lKQorICAgIHsKKyAgICAgICAgdGhpcy5fYXR0YWNoRnJhbWUo
ZnJhbWUpOworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGZyYW1lLmNoaWxkRnJhbWVzLmxl
bmd0aDsgKytpKQorICAgICAgICAgICAgdGhpcy5fYXR0YWNoRnJhbWVSZWN1cnNpdmUoZnJhbWUu
Y2hpbGRGcmFtZXNbaV0pOworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge1dlYklu
c3BlY3Rvci5SZXNvdXJjZVRyZWVGcmFtZX0gZnJhbWUKKyAgICAgKi8KKyAgICBfZGV0YWNoRnJh
bWU6IGZ1bmN0aW9uKGZyYW1lKQorICAgIHsKKyAgICAgICAgaWYgKCF0aGlzLl9mcmFtZXNbZnJh
bWUuaWRdIHx8IGZyYW1lLnNlY3VyaXR5T3JpZ2luID09ICJudWxsIikKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgdmFyIGZpbGVzeXN0ZW1GcmFtZSA9IC8qKiBAdHlwZSB7V2ViSW5zcGVj
dG9yLkZpbGVTeXRzZW1Nb2RlbC5GcmFtZX0gKi8gdGhpcy5fZnJhbWVzW2ZyYW1lLmlkXTsKKyAg
ICAgICAgZGVsZXRlIHRoaXMuX2ZyYW1lc1tmcmFtZS5pZF07CisgICAgICAgIGZpbGVzeXN0ZW1G
cmFtZS5jbGVhcigpOworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge1dlYkluc3Bl
Y3Rvci5SZXNvdXJjZVRyZWVGcmFtZX0gZnJhbWUKKyAgICAgKi8KKyAgICBfZGV0YWNoRnJhbWVS
ZWN1cnNpdmU6IGZ1bmN0aW9uKGZyYW1lKQorICAgIHsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7
IGkgPCBmcmFtZS5jaGlsZEZyYW1lcy5sZW5ndGg7ICsraSkKKyAgICAgICAgICAgIHRoaXMuX2Rl
dGFjaEZyYW1lUmVjdXJzaXZlKGZyYW1lLmNoaWxkRnJhbWVzW2ldKTsKKyAgICAgICAgdGhpcy5f
ZGV0YWNoRnJhbWUoZnJhbWUpOworICAgIH0sCisKKyAgICBfaXNFbXB0eTogZnVuY3Rpb24ob2Jq
KQorICAgIHsKKyAgICAgICAgZm9yICh2YXIgaSBpbiBvYmopCisgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBA
cGFyYW0ge1dlYkluc3BlY3Rvci5GaWxlU3lzdGVtTW9kZWwuRnJhbWV9IGZyYW1lCisgICAgICog
QHBhcmFtIHtzdHJpbmd9IG9yaWdpbgorICAgICAqLworICAgIGFkZEZyYW1lRm9yT3JpZ2luOiBm
dW5jdGlvbihmcmFtZSwgb3JpZ2luKQorICAgIHsKKyAgICAgICAgaWYgKG9yaWdpbiA9PSAibnVs
bCIpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgdmFyIG5ld19vcmlnaW4gPSBmYWxz
ZTsKKyAgICAgICAgaWYgKCF0aGlzLl9mcmFtZXNGb3JPcmlnaW5bb3JpZ2luXSkgeworICAgICAg
ICAgICAgdGhpcy5fZnJhbWVzRm9yT3JpZ2luW29yaWdpbl0gPSB7fTsKKyAgICAgICAgICAgIG5l
d19vcmlnaW4gPSB0cnVlOworICAgICAgICB9CisgICAgICAgIHRoaXMuX2ZyYW1lc0Zvck9yaWdp
bltvcmlnaW5dW2ZyYW1lLmlkXSA9IGZyYW1lOworCisgICAgICAgIGlmIChuZXdfb3JpZ2luKQor
ICAgICAgICAgICAgdGhpcy5fb3JpZ2luQWRkZWQob3JpZ2luKTsKKyAgICB9LAorCisgICAgLyoq
CisgICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1vZGVsLkZyYW1lfSBmcmFt
ZQorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBvcmlnaW4KKyAgICAgKi8KKyAgICByZW1vdmVGcmFt
ZUZvck9yaWdpbjogZnVuY3Rpb24oZnJhbWUsIG9yaWdpbikKKyAgICB7CisgICAgICAgIGlmIChv
cmlnaW4gPT0gIm51bGwiIHx8ICF0aGlzLl9mcmFtZXNGb3JPcmlnaW5bb3JpZ2luXSB8fCAhdGhp
cy5fZnJhbWVzRm9yT3JpZ2luW29yaWdpbl1bZnJhbWUuaWRdKQorICAgICAgICAgICAgcmV0dXJu
OworCisgICAgICAgIGRlbGV0ZSB0aGlzLl9mcmFtZXNGb3JPcmlnaW5bb3JpZ2luXVtmcmFtZS5p
ZF07CisKKyAgICAgICAgaWYgKHRoaXMuX2lzRW1wdHkodGhpcy5fZnJhbWVzRm9yT3JpZ2luW29y
aWdpbl0pKSB7CisgICAgICAgICAgICBkZWxldGUgdGhpcy5fZnJhbWVzRm9yT3JpZ2luW29yaWdp
bl07CisgICAgICAgICAgICB0aGlzLl9vcmlnaW5SZW1vdmVkKG9yaWdpbik7CisgICAgICAgIH0K
KyAgICB9LAorCisgICAgLyoqCisgICAgICogQHBhcmFtIHtzdHJpbmd9IG9yaWdpbgorICAgICAq
LworICAgIF9vcmlnaW5BZGRlZDogZnVuY3Rpb24ob3JpZ2luKQorICAgIHsKKyAgICAgICAgaWYg
KCF0aGlzLl9maWxlc3lzdGVtRm9yT3JpZ2luW29yaWdpbl0pCisgICAgICAgICAgICB0aGlzLl9m
aWxlc3lzdGVtRm9yT3JpZ2luW29yaWdpbl0gPSB7fTsKKworICAgICAgICB2YXIgdHlwZXMgPSBb
InBlcnNpc3RlbnQiLCAidGVtcG9yYXJ5Il07CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwg
dHlwZXMubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgIGlmICghdGhpcy5fZmlsZXN5c3RlbUZv
ck9yaWdpbltvcmlnaW5dW3R5cGVzW2ldXSkgeworICAgICAgICAgICAgICAgIHZhciBmaWxlc3lz
dGVtID0gbmV3IFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtTW9kZWwuRmlsZVN5c3RlbShvcmlnaW4s
IHR5cGVzW2ldKTsKKyAgICAgICAgICAgICAgICB0aGlzLl9maWxlc3lzdGVtRm9yT3JpZ2luW29y
aWdpbl1bdHlwZXNbaV1dID0gZmlsZXN5c3RlbTsKKyAgICAgICAgICAgICAgICB0aGlzLl9maWxl
c3lzdGVtQWRkZWQoZmlsZXN5c3RlbSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9
LAorCisgICAgLyoqCisgICAgICogQHBhcmFtIHtzdHJpbmd9IG9yaWdpbgorICAgICAqLworICAg
IF9vcmlnaW5SZW1vdmVkOiBmdW5jdGlvbihvcmlnaW4pCisgICAgeworICAgICAgICBmb3IgKHZh
ciB0eXBlIGluIHRoaXMuX2ZpbGVzeXN0ZW1Gb3JPcmlnaW5bb3JpZ2luXSkgeworICAgICAgICAg
ICAgdmFyIGZpbGVzeXN0ZW0gPSB0aGlzLl9maWxlc3lzdGVtRm9yT3JpZ2luW29yaWdpbl1bdHlw
ZV07CisgICAgICAgICAgICBkZWxldGUgdGhpcy5fZmlsZXN5c3RlbUZvck9yaWdpbltvcmlnaW5d
W3R5cGVdOworICAgICAgICAgICAgdGhpcy5fZmlsZXN5c3RlbVJlbW92ZWQoZmlsZXN5c3RlbSk7
CisgICAgICAgIH0KKyAgICAgICAgZGVsZXRlIHRoaXMuX2ZpbGVzeXN0ZW1Gb3JPcmlnaW5bb3Jp
Z2luXTsKKyAgICB9LAorCisgICAgLyoqCisgICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuRmls
ZVN5c3RlbU1vZGVsLkZpbGVTeXN0ZW19IGZpbGVzeXN0ZW0KKyAgICAgKi8KKyAgICBfZmlsZXN5
c3RlbUFkZGVkOiBmdW5jdGlvbihmaWxlc3lzdGVtKQorICAgIHsKKyAgICAgICAgdGhpcy5kaXNw
YXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbC5FdmVudFR5
cGVzLkZpbGVTeXN0ZW1BZGRlZCwgZmlsZXN5c3RlbSk7CisgICAgfSwKKworICAgIF9maWxlc3lz
dGVtUmVtb3ZlZDogZnVuY3Rpb24oZmlsZXN5c3RlbSkKKyAgICB7CisgICAgICAgIHRoaXMuZGlz
cGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtTW9kZWwuRXZlbnRU
eXBlcy5GaWxlU3lzdGVtUmVtb3ZlZCwgZmlsZXN5c3RlbSk7CisgICAgfSwKKworICAgIHJlZnJl
c2hGaWxlU3lzdGVtTGlzdDogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgdGhpcy5fZGV0YWNo
RnJhbWVSZWN1cnNpdmUoKFdlYkluc3BlY3Rvci5yZXNvdXJjZVRyZWVNb2RlbC5tYWluRnJhbWUp
KTsKKyAgICAgICAgdGhpcy5fYXR0YWNoRnJhbWVSZWN1cnNpdmUoKFdlYkluc3BlY3Rvci5yZXNv
dXJjZVRyZWVNb2RlbC5tYWluRnJhbWUpKTsKKyAgICB9Cit9CisKK1dlYkluc3BlY3Rvci5GaWxl
U3lzdGVtTW9kZWwuRXZlbnRUeXBlcyA9IHsKKyAgICBGaWxlU3lzdGVtQWRkZWQ6ICJGaWxlU3lz
dGVtQWRkZWQiLAorICAgIEZpbGVTeXN0ZW1SZW1vdmVkOiAiRmlsZVN5c3RlbVJlbW92ZWQiCit9
CisKK1dlYkluc3BlY3Rvci5GaWxlU3lzdGVtTW9kZWwucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdl
Ykluc3BlY3Rvci5PYmplY3QucHJvdG90eXBlOworCisvKioKKyAqIEBjb25zdHJ1Y3RvcgorICog
QHBhcmFtIHtXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1vZGVsfSBmaWxlc3lzdGVtTW9kZWwKKyAq
IEBwYXJhbSB7UGFnZS5GcmFtZX0gZnJhbWUKKyAqLworV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1N
b2RlbC5GcmFtZSA9IGZ1bmN0aW9uKGZpbGVzeXN0ZW1Nb2RlbCwgZnJhbWUpCit7CisgICAgdGhp
cy5fZnJhbWUgPSBmcmFtZTsKKyAgICB0aGlzLl9zZWN1cml0eU9yaWdpbiA9IGZyYW1lLnNlY3Vy
aXR5T3JpZ2luOworCisgICAgdGhpcy5wZW5kaW5nUmVhZERpcmVjdG9yeVJlcXVlc3QgPSB7fTsK
KworICAgIHRoaXMuX2ZpbGVzeXN0ZW1Nb2RlbCA9IGZpbGVzeXN0ZW1Nb2RlbDsKKyAgICB0aGlz
Ll9maWxlc3lzdGVtTW9kZWwuYWRkRnJhbWVGb3JPcmlnaW4odGhpcywgdGhpcy5fc2VjdXJpdHlP
cmlnaW4pOworfQorCitXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1vZGVsLkZyYW1lLnByb3RvdHlw
ZSA9IHsKKyAgICBnZXQgdW5kZXJseWluZ0ZyYW1lKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0
aGlzLl9mcmFtZTsKKyAgICB9LAorCisgICAgY2xlYXI6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAg
ICAgIHRoaXMuX2ZpbGVzeXN0ZW1Nb2RlbC5yZW1vdmVGcmFtZUZvck9yaWdpbih0aGlzLCB0aGlz
Ll9zZWN1cml0eU9yaWdpbik7CisgICAgICAgIGZvciAodmFyIGkgaW4gdGhpcy5wZW5kaW5nUmVh
ZERpcmVjdG9yeVJlcXVlc3QpCisgICAgICAgICAgICB0aGlzLnBlbmRpbmdSZWFkRGlyZWN0b3J5
UmVxdWVzdFtpXS5hYm9ydCgpOworICAgIH0KK30KKworV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1N
b2RlbC5GcmFtZS5uZXh0UmVxdWVzdElkID0gMTsKKworLyoqCisgKiBAY29uc3RydWN0b3IKKyAq
LworV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1EaXNwYXRjaGVyID0gZnVuY3Rpb24oKQoreworfQor
CisvKioKKyAqIEBjb25zdHJ1Y3RvcgorICogQHBhcmFtIHtzdHJpbmd9IG9yaWdpbgorICogQHBh
cmFtIHtzdHJpbmd9IHR5cGUKKyAqLworV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbC5GaWxl
U3lzdGVtID0gZnVuY3Rpb24ob3JpZ2luLCB0eXBlKQoreworICAgIHRoaXMuX29yaWdpbiA9IG9y
aWdpbjsKKyAgICB0aGlzLl90eXBlID0gdHlwZTsKK30KKworV2ViSW5zcGVjdG9yLkZpbGVTeXN0
ZW1Nb2RlbC5GaWxlU3lzdGVtLnByb3RvdHlwZSA9IHsKKyAgICBnZXQgbmFtZSgpCisgICAgewor
ICAgICAgICByZXR1cm4gImZpbGVzeXN0ZW06IiArIHRoaXMuX29yaWdpbiArICIvIiArIHRoaXMu
X3R5cGUgKyAiLyI7CisgICAgfSwKKworICAgIGdldCBvcmlnaW4oKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIHRoaXMuX29yaWdpbjsKKyAgICB9LAorCisgICAgZ2V0IHR5cGUoKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIHRoaXMuX3R5cGU7CisgICAgfQorfQorCisvKioKKyAqIEBjb25zdHJ1Y3Rv
cgorICovCitXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1vZGVsLkVudHJ5ID0gZnVuY3Rpb24oKQor
eworfQorCisvKioKKyAqIEBjb25zdHJ1Y3RvcgorICogQGV4dGVuZHMge1dlYkluc3BlY3Rvci5G
aWxlU3lzdGVtTW9kZWwuRW50cnl9CisgKi8KK1dlYkluc3BlY3Rvci5GaWxlU3lzdGVtTW9kZWwu
RmlsZSA9IGZ1bmN0aW9uKCkKK3sKKyAgICBXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1vZGVsLkVu
dHJ5LmNhbGwodGhpcyk7Cit9CisKK1dlYkluc3BlY3Rvci5GaWxlU3lzdGVtTW9kZWwuRmlsZS5w
cm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbC5FbnRyeS5w
cm90b3R5cGU7CisKKy8qKgorICogQGNvbnN0cnVjdG9yCisgKiBAZXh0ZW5kcyB7V2ViSW5zcGVj
dG9yLkZpbGVTeXN0ZW1Nb2RlbC5FbnRyeX0KKyAqLworV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1N
b2RlbC5EaXJlY3RvcnkgPSBmdW5jdGlvbigpCit7CisgICAgV2ViSW5zcGVjdG9yLkZpbGVTeXN0
ZW1Nb2RlbC5FbnRyeS5jYWxsKHRoaXMpOworfQorCitXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1v
ZGVsLkRpcmVjdG9yeS5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLkZpbGVTeXN0
ZW1Nb2RlbC5FbnRyeS5wcm90b3R5cGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL0ZpbGVTeXN0ZW1WaWV3LmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9GaWxlU3lzdGVtVmlldy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lYjJkMWQ1M2Q5NzEy
MjZlZDIzNzk4MjEwNGY1ZGYwNzcxYjAyZTdlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9GaWxlU3lzdGVtVmlldy5qcwpAQCAtMCwwICsxLDUw
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgor
ICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGlu
IHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xl
IEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05U
UklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisg
KiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworLyoqCisgKiBAY29uc3RydWN0b3IKKyAqIEBleHRlbmRzIHtXZWJJbnNwZWN0b3IuVmlld30K
KyAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbC5GaWxlU3lzdGVtfSAgZmls
ZXN5c3RlbQorICovCitXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbVZpZXcgPSBmdW5jdGlvbihmaWxl
c3lzdGVtKQoreworICAgIFdlYkluc3BlY3Rvci5WaWV3LmNhbGwodGhpcyk7CisgICAgdGhpcy5f
ZmlsZXN5c3RlbSA9IGZpbGVzeXN0ZW07Cit9CisKK1dlYkluc3BlY3Rvci5GaWxlU3lzdGVtVmll
dy5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLlZpZXcucHJvdG90eXBlOworCitX
ZWJJbnNwZWN0b3IuRmlsZVN5c3RlbURpcmVjdG9yeVZpZXcgPSBmdW5jdGlvbigpCit7Cit9CisK
K1dlYkluc3BlY3Rvci5GaWxlQ29udGVudFZpZXcgPSBmdW5jdGlvbigpCit7Cit9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0ltYWdlcy9maWxlc3lzdGVt
LnBuZyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSW1hZ2VzL2ZpbGVzeXN0
ZW0ucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjkyNjM4OWRhZDIyNWRjNzcxYjJiOTYwYzAyNzYyNWViZjE4NTFm
YmIKR0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDEyMjYKemNtVjsqMVUzN0tQKTxoOzNLfExrMDAw
ZTFOSkxUcTAwMUJXMDAxQmUxXkBzNmI5I0Y4MDAwMDFiNWNoXzBJdHApCno9PlB4IzI0WUpgTDso
Syl7e2E3Pnl7RDReMDAwU2FOTGgwTDAxRmNVMDFGY1YwR2daXzAwMDA3YlYqR2AyaXB0Kgp6MV9+
U18wdDg8RzAwY0AmTF90KG8hfGoqTmp9JTIxIygma19HclApflRgO1JMRiMkfiQ1aDk1bjJMLWR5
Z0d2WlEKelBrUWtta21KVjAxTXg9VSE2UHhvcWpEcDlGZmtIRDVmeDwoTE5LQD5ZdyFjdXVtbUB8
P0MxMSEpJSR2PT93UlNHCno/JXZzVylKaTUoPjhgNWhjfFlvVC0taUdDRnhsa1lnUmoyPnlhNWRN
eDtZRkNQSVBeTSM9UVVMcCg2KjEyK1p4QAp6XlpafkspaFo4QV4/PjQ8akYxMXdHck0tTGlAQDt7
cj82SXIjdHQzMTB9eTJ8QigrNHV0d3ZsMEUtMysqe3dKVykKejZMPTh5YnY9dHAlKjxLYTkrSTFA
WTlZOTRzciRPbGpKaGBFN0Q7SWN2T1Yya01jeFFYJHdqTC1YQTg4KmoxRnM2CnoxZ0M5NCl2OUU0
ckU4KzlNQyRfOFA3QWZyckUzalFCfkR5MWZwNU0kditqRipgcG1oMXIyfG8/KXFEMjcrfHdwaQp6
TDdlNXA3c3EmVSYlVTApZzBSTFhBMEk3RyFzUjxSUUkpbl5iTURRJStTdnFFV29oPCRrQlZtcT52
dGhsTiQ5Z1cKek9LbU5AVE1QM0dUKWxGWXNjU2JfVHlBaURkS3Z7KGwpKzZ5SmhGWCtqaGx1cmYk
MmFHUD9XR0wxWGZhIVFPUyFCCno5aCN1Ulo8aSk8ViVZaUFsWlg+KXdIaFZ9WClHXnJkLUBpYUZK
NThTYjVGTzlGZWFiSyk9RHR9PWNIdytzSSllPAp6eGQ9JSFWZnk5XytqZmt3Pik5dTAjdEhyWGVG
Un58Xjg1QEY3YVhUZnA1eXUtKlFvY141c14te0MjY1FobmxYKX4KenJNclE9Nmd5R0F7cilWOEV0
bDJoKipQfEJ5cEokfHpiMWFkST5pe2pKXz59b1N6K14qYDxlTHBHUn4+RGVzdmc0CnpLJHpIM1JY
dThxKE9lUn5SRktpeTtsMitLQUxmPFVfT1cleEhmLUdSdX4kdH40OCNkTE1aTSpuZn5HemVROVE/
Mgp6JEcreW0jTUUyQjY3WDNyMzc2LWxhSkdAVXVBNnxmbVVfTDBfU2NFVHcjMkNRQURUNGkjKW5Z
U2R7VGlSS29ANVMKem9BVkd2MTMtV0dFa0pTM1IkZUZQNnlxI3ZuPD1vUWlZT1J5QVBLMVJiOUw+
YzRoJnsjMjVINyVqTFJmN1lCdmgpCno1e3AhblM1NG9HTU55MGpOQ3MjekVgfTZiTUtHRkBHSilT
NTFnK1o4VD9eRUxOWTNxcndOQE82I2lWb044WGlPKAp6bnAkbnJBMTtBcEM5XlBoRTRtMUxkSFEx
SUVvanZ5YVR1Myl3PGp5MC10Rkc8Y0dFJTxMKD1mekJ9RlNvVkVeNzEKekR5IVFeP3x0Q2tJfDE4
Qi1KUEs3eXRTJntEPCViWk5rYG1GSDM0R2BpP2NVeSY2UENAa0BvPHUzM2tQVSh4SU5KCnpVPXQ2
bk8xQnZGKHZxUm9qa0o8eHhYWjg0eitCPj1iJUxqSlElT0w/VSZld1lHJCEhZFU0cSZlQlo3KClT
SXctVAp6Yj5nUmpxXnM3cTJuMj8tNmlhQ2pVYCM7YytJZWhuQDJZTzcqUkR1JDsmUHBMRyYoeGsy
TWxHTVc3SWNMQDw5PFcKel41e2VTYVE7dW0mO08zV2wqNSpVVTJIO2EpNUFRcmB8Kks9Z0B1OTQx
QVZ+dWBLOUZaUGZ0JGwxMiZaTXcrVnl5CnpKVj9EKF90dSs9N1FCZG52a1g0NF80ZEg8PUNoTk5s
YjE2QkY+dllKdVlWcnwtZF5qRjB8I0UrR0NWeEkoWEZNfgpvV3VKM2w3e3pnWGI4S3d2N3ljaT5L
Ulk0Rm55dm9IPF5UV3kwNypxb002TjwkZj5TTCpDOyRLZQoKbGl0ZXJhbCAwCkhjbVY/ZDAwMDAx
CgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJj
ZXNQYW5lbC5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2Vz
UGFuZWwuanMKaW5kZXggMjJlNTUyMDQyMmM5N2IxYWVjM2M0ZmUzN2VjM2JjNzg0MjRkNDkyNC4u
ZmIzMjY4NzJhMGRlMWJmMWU4NWRmNGJmYWI1NmQzZDU2NzRmM2JmYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZXNQYW5lbC5qcworKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlc1BhbmVsLmpzCkBAIC02
Nyw2ICs2NywxMSBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2VzUGFuZWwgPSBmdW5jdGlvbihkYXRh
YmFzZSkKICAgICB0aGlzLmFwcGxpY2F0aW9uQ2FjaGVMaXN0VHJlZUVsZW1lbnQgPSBuZXcgV2Vi
SW5zcGVjdG9yLlN0b3JhZ2VDYXRlZ29yeVRyZWVFbGVtZW50KHRoaXMsIFdlYkluc3BlY3Rvci5V
SVN0cmluZygiQXBwbGljYXRpb24gQ2FjaGUiKSwgIkFwcGxpY2F0aW9uQ2FjaGUiLCBbImFwcGxp
Y2F0aW9uLWNhY2hlLXN0b3JhZ2UtdHJlZS1pdGVtIl0pOwogICAgIHRoaXMuc2lkZWJhclRyZWUu
YXBwZW5kQ2hpbGQodGhpcy5hcHBsaWNhdGlvbkNhY2hlTGlzdFRyZWVFbGVtZW50KTsKIAorICAg
IGlmIChDYXBhYmlsaXRpZXMuZmlsZXN5c3RlbUluc3BlY3Rpb24pIHsKKyAgICAgICAgdGhpcy5m
aWxlc3lzdGVtTGlzdFRyZWVFbGVtZW50ID0gbmV3IFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtTGlz
dFRyZWVFbGVtZW50KHRoaXMpOworICAgICAgICB0aGlzLnNpZGViYXJUcmVlLmFwcGVuZENoaWxk
KHRoaXMuZmlsZXN5c3RlbUxpc3RUcmVlRWxlbWVudCk7CisgICAgfQorCiAgICAgdGhpcy5zdG9y
YWdlVmlld3MgPSB0aGlzLnNwbGl0Vmlldy5tYWluRWxlbWVudDsKICAgICB0aGlzLnN0b3JhZ2VW
aWV3cy5hZGRTdHlsZUNsYXNzKCJkaWZmLWNvbnRhaW5lciIpOwogCkBAIC01MDEsNiArNTA2LDE0
IEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZXNQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRo
aXMuX2lubmVyU2hvd1ZpZXcodGhpcy5fYXBwbGljYXRpb25DYWNoZVZpZXdzW2ZyYW1lSWRdKTsK
ICAgICB9LAogCisgICAgLyoqCisgICAgICogIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlZpZXd9IHZp
ZXcKKyAgICAgKi8KKyAgICBzaG93RmlsZVN5c3RlbTogZnVuY3Rpb24odmlldykKKyAgICB7Cisg
ICAgICAgIHRoaXMuX2lubmVyU2hvd1ZpZXcodmlldyk7CisgICAgfSwKKwogICAgIHNob3dDYXRl
Z29yeVZpZXc6IGZ1bmN0aW9uKGNhdGVnb3J5TmFtZSkKICAgICB7CiAgICAgICAgIGlmICghdGhp
cy5fY2F0ZWdvcnlWaWV3KQpAQCAtMTYwMCw2ICsxNjEzLDgxIEBAIFdlYkluc3BlY3Rvci5JbmRl
eGVkREJUcmVlRWxlbWVudC5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLlN0b3Jh
Z2VDYXRlCiAKIC8qKgogICogQGNvbnN0cnVjdG9yCisgKiBAZXh0ZW5kcyB7V2ViSW5zcGVjdG9y
LlN0b3JhZ2VDYXRlZ29yeUxpc3RUcmVlRWxlbWVudH0KKyAqIEBwYXJhbSB7V2ViSW5zcGVjdG9y
LlJlc291cmNlc1BhbmVsfSBzdG9yYWdlUGFuZWwKKyAqLworV2ViSW5zcGVjdG9yLkZpbGVTeXN0
ZW1MaXN0VHJlZUVsZW1lbnQgPSBmdW5jdGlvbihzdG9yYWdlUGFuZWwpCit7CisgICAgV2ViSW5z
cGVjdG9yLlN0b3JhZ2VDYXRlZ29yeVRyZWVFbGVtZW50LmNhbGwodGhpcywgc3RvcmFnZVBhbmVs
LCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkZpbGVTeXN0ZW0iKSwgIkZpbGVTeXN0ZW0iLCBbImZp
bGVzeXN0ZW0tc3RvcmFnZS10cmVlLWl0ZW0iXSk7Cit9CisKK1dlYkluc3BlY3Rvci5GaWxlU3lz
dGVtTGlzdFRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKKyAgICBvbmV4cGFuZDogZnVuY3Rpb24o
KQorICAgIHsKKyAgICAgICAgV2ViSW5zcGVjdG9yLlN0b3JhZ2VDYXRlZ29yeVRyZWVFbGVtZW50
LnByb3RvdHlwZS5vbmV4cGFuZC5jYWxsKHRoaXMpOworICAgICAgICBpZiAoIXRoaXMuX2ZpbGVz
eXN0ZW1Nb2RlbCkKKyAgICAgICAgICAgIHRoaXMuX2NyZWF0ZUZpbGVTeXN0ZW1Nb2RlbCgpOwor
ICAgIH0sCisKKyAgICBvbmF0dGFjaDogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgV2ViSW5z
cGVjdG9yLlN0b3JhZ2VDYXRlZ29yeVRyZWVFbGVtZW50LnByb3RvdHlwZS5vbmF0dGFjaC5jYWxs
KHRoaXMpOworICAgICAgICB0aGlzLmxpc3RJdGVtRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJj
b250ZXh0bWVudSIsIHRoaXMuX2hhbmRsZUNvbnRleHRNZW51RXZlbnQuYmluZCh0aGlzKSwgdHJ1
ZSk7CisgICAgfSwKKworICAgIF9oYW5kbGVDb250ZXh0TWVudUV2ZW50OiBmdW5jdGlvbihldmVu
dCkKKyAgICB7CisgICAgICAgIHZhciBjb250ZXh0TWVudSA9IG5ldyBXZWJJbnNwZWN0b3IuQ29u
dGV4dE1lbnUoKTsKKyAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kSXRlbShXZWJJbnNwZWN0b3Iu
VUlTdHJpbmcoIlJlZnJlc2ggRmlsZVN5c3RlbSIpLCB0aGlzLnJlZnJlc2hGaWxlU3lzdGVtLmJp
bmQodGhpcykpOworICAgICAgICBjb250ZXh0TWVudS5zaG93KGV2ZW50KTsKKyAgICB9LAorCisg
ICAgX2NyZWF0ZUZpbGVTeXN0ZW1Nb2RlbDogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgdGhp
cy5fZmlsZXN5c3RlbU1vZGVsID0gbmV3IFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtTW9kZWwoKTsK
KyAgICAgICAgdGhpcy5fZmlsZXN5c3RlbU1vZGVsLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVj
dG9yLkZpbGVTeXN0ZW1Nb2RlbC5FdmVudFR5cGVzLkZpbGVTeXN0ZW1BZGRlZCwgdGhpcy5fZmls
ZXN5c3RlbUFkZGVkLCB0aGlzKTsKKyAgICAgICAgdGhpcy5fZmlsZXN5c3RlbU1vZGVsLmFkZEV2
ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbC5FdmVudFR5cGVzLkZpbGVT
eXN0ZW1SZW1vdmVkLCB0aGlzLl9maWxlc3lzdGVtUmVtb3ZlZCwgdGhpcyk7CisgICAgfSwKKwor
ICAgIF9maWxlc3lzdGVtQWRkZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIHsKKyAgICAgICAgdmFy
IGZpbGVzeXN0ZW0gPSAvKiogQHR5cGUge1dlYkluc3BlY3Rvci5GaWxlU3lzdGVtTW9kZWwuRmls
ZVN5c3RlbX0gKi8gZXZlbnQuZGF0YTsKKyAgICAgICAgdmFyIGZpbGVzeXN0ZW1UcmVlRWxlbWVu
dCA9IG5ldyBXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbVRyZWVFbGVtZW50KHRoaXMuX3N0b3JhZ2VQ
YW5lbCwgZmlsZXN5c3RlbSk7CisgICAgICAgIHRoaXMuYXBwZW5kQ2hpbGQoZmlsZXN5c3RlbVRy
ZWVFbGVtZW50KTsKKyAgICB9LAorCisgICAgX2ZpbGVzeXN0ZW1SZW1vdmVkOiBmdW5jdGlvbihl
dmVudCkKKyAgICB7CisgICAgICAgIHZhciBmaWxlc3lzdGVtID0gLyoqIEB0eXBlIHtXZWJJbnNw
ZWN0b3IuRmlsZVN5c3RlbU1vZGVsLkZpbGVTeXN0ZW19ICovIGV2ZW50LmRhdGE7CisgICAgICAg
IHZhciBmaWxlc3lzdGVtVHJlZUVsZW1lbnQgPSB0aGlzLl9maWxlc3lzdGVtVHJlZUVsZW1lbnRC
eU5hbWUoZmlsZXN5c3RlbS5uYW1lKTsKKyAgICAgICAgaWYgKCFmaWxlc3lzdGVtVHJlZUVsZW1l
bnQpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGZpbGVzeXN0ZW1UcmVlRWxlbWVudC5j
bGVhcigpOworICAgICAgICB0aGlzLnJlbW92ZUNoaWxkKGZpbGVzeXN0ZW1UcmVlRWxlbWVudCk7
CisgICAgfSwKKworICAgIF9maWxlc3lzdGVtVHJlZUVsZW1lbnRCeU5hbWU6IGZ1bmN0aW9uKGZp
bGVzeXN0ZW1OYW1lKQorICAgIHsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmNo
aWxkcmVuLmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICBpZih0aGlzLmNoaWxkcmVuW2ldLmZp
bGVzeXN0ZW1OYW1lID09IGZpbGVzeXN0ZW1OYW1lKQorICAgICAgICAgICAgICAgIHJldHVybiB0
aGlzLmNoaWxkcmVuW2ldOworICAgICAgICB9CisgICAgICAgIHJldHVybiBudWxsOworICAgIH0s
CisKKyAgICByZWZyZXNoRmlsZVN5c3RlbTogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgaWYg
KCF0aGlzLl9maWxlc3lzdGVtTW9kZWwpCisgICAgICAgICAgICB0aGlzLl9maWxlc3lzdGVtTW9k
ZWwgPSBuZXcgV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbCgpOworICAgICAgICBlbHNlCisg
ICAgICAgICAgICB0aGlzLl9maWxlc3lzdGVtTW9kZWwucmVmcmVzaEZpbGVTeXN0ZW1MaXN0KCk7
CisgICAgfQorfQorCitXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbUxpc3RUcmVlRWxlbWVudC5wcm90
b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLlN0b3JhZ2VDYXRlZ29yeVRyZWVFbGVtZW50
LnByb3RvdHlwZTsKKworLyoqCisgKiBAY29uc3RydWN0b3IKICAqIEBleHRlbmRzIHtXZWJJbnNw
ZWN0b3IuQmFzZVN0b3JhZ2VUcmVlRWxlbWVudH0KICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlJl
c291cmNlc1BhbmVsfSBzdG9yYWdlUGFuZWwKICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLkluZGV4
ZWREQk1vZGVsfSBtb2RlbApAQCAtMjAwMiw2ICsyMDkwLDY2IEBAIFdlYkluc3BlY3Rvci5BcHBs
aWNhdGlvbkNhY2hlRnJhbWVUcmVlRWxlbWVudC5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5z
cGVjdG9yCiAvKioKICAqIEBjb25zdHJ1Y3RvcgogICogQGV4dGVuZHMge1dlYkluc3BlY3Rvci5C
YXNlU3RvcmFnZVRyZWVFbGVtZW50fQorICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuUmVzb3VyY2Vz
UGFuZWx9IHN0b3JhZ2VQYW5lbAorICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1v
ZGVsLkZpbGVTeXN0ZW19IGZpbGVzeXN0ZW0KKyAqLworV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1U
cmVlRWxlbWVudCA9IGZ1bmN0aW9uKHN0b3JhZ2VQYW5lbCwgZmlsZXN5c3RlbSkKK3sKKyAgICB2
YXIgZGlzcGxheU5hbWUgPSBmaWxlc3lzdGVtLnR5cGUgKyAiIC0gIiArIGZpbGVzeXN0ZW0ub3Jp
Z2luOworICAgIFdlYkluc3BlY3Rvci5CYXNlU3RvcmFnZVRyZWVFbGVtZW50LmNhbGwodGhpcywg
c3RvcmFnZVBhbmVsLCBudWxsLCBkaXNwbGF5TmFtZSwgWyJmaWxlc3lzdGVtLXN0b3JhZ2UtdHJl
ZS1pdGVtIl0pOworICAgIHRoaXMuX2ZpbGVzeXN0ZW0gPSBmaWxlc3lzdGVtOworfQorCitXZWJJ
bnNwZWN0b3IuRmlsZVN5c3RlbVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKKyAgICBnZXQgZmls
ZXN5c3RlbU5hbWUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX2ZpbGVzeXN0ZW0ubmFt
ZTsKKyAgICB9LAorCisgICAgZ2V0IGl0ZW1VUkwoKQorICAgIHsKKyAgICAgICAgcmV0dXJuICJm
aWxlc3lzdGVtOi8vIiArIHRoaXMuX2ZpbGVzeXN0ZW0ubmFtZTsKKyAgICB9LAorCisgICAgb25h
dHRhY2g6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIFdlYkluc3BlY3Rvci5CYXNlU3RvcmFn
ZVRyZWVFbGVtZW50LnByb3RvdHlwZS5vbmF0dGFjaC5jYWxsKHRoaXMpOworICAgICAgICB0aGlz
Lmxpc3RJdGVtRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJjb250ZXh0bWVudSIsIHRoaXMuX2hh
bmRsZUNvbnRleHRNZW51RXZlbnQuYmluZCh0aGlzKSwgdHJ1ZSk7CisgICAgfSwKKworICAgIF9o
YW5kbGVDb250ZXh0TWVudUV2ZW50OiBmdW5jdGlvbihldmVuKQorICAgIHsKKyAgICAgICAgdmFy
IGNvbnRleHRNZW51ID0gbmV3IFdlYkluc3BlY3Rvci5Db250ZXh0TWVudSgpOworICAgICAgICBj
b250ZXh0TWVudS5hcHBlbmRJdGVtKFdlYkluc3BlY3Rvci5VSVN0cmluZygiUmVmcmVzaCBGaWxl
U3lzdGVtIFZpZXciKSwgdGhpcy5fcmVmcmVzaEZpbGVTeXN0ZW0uYmluZCh0aGlzKSk7CisgICAg
ICAgIGNvbnRleHRNZW51LnNob3coZXZlbnQpOworICAgIH0sCisKKyAgICBfcmVmcmVzaEZpbGVT
eXN0ZW06IGZ1bmN0aW9uKGV2ZW50KQorICAgIHsKKyAgICAgICAgaWYgKCF0aGlzLl9maWxlc3lz
dGVtVmlldykKKyAgICAgICAgICAgIHRoaXMuX2ZpbGVzeXN0ZW1WaWV3LnJlZnJlc2goKTsKKyAg
ICB9LAorCisgICAgb25zZWxlY3Q6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIFdlYkluc3Bl
Y3Rvci5CYXNlU3RvcmFnZVRyZWVFbGVtZW50LnByb3RvdHlwZS5vbnNlbGVjdC5jYWxsKHRoaXMp
OworICAgICAgICBpZiAoIXRoaXMuX2ZpbGVzeXN0ZW1WaWV3KQorICAgICAgICAgICAgdGhpcy5f
ZmlsZXN5c3RlbVZpZXcgPSBuZXcgV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1WaWV3KHRoaXMuX2Zp
bGVzeXN0ZW0pOworICAgICAgICB0aGlzLl9zdG9yYWdlUGFuZWwuc2hvd0ZpbGVTeXN0ZW0odGhp
cy5fZmlsZXN5c3RlbVZpZXcpOworICAgIH0sCisKKyAgICBjbGVhcjogZnVuY3Rpb24oKQorICAg
IHsKKyAgICAgICAgaWYgKHRoaXMuZmlsZXN5c3RlbVZpZXcgJiYgdGhpcy5fc3RvcmFnZVBhbmVs
LnZpc2libGVWaWV3ID09IHRoaXMuZmlsZXN5c3RlbVZpZXcpCisgICAgICAgICAgICB0aGlzLl9z
dG9yYWdlUGFuZWwuY2xvc2VWaXNpYmxlVmlldygpOworICAgIH0KK30KKworV2ViSW5zcGVjdG9y
LkZpbGVTeXN0ZW1UcmVlRWxlbWVudC5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9y
LkJhc2VTdG9yYWdlVHJlZUVsZW1lbnQucHJvdG90eXBlOworCisvKioKKyAqIEBjb25zdHJ1Y3Rv
cgorICogQGV4dGVuZHMge1dlYkluc3BlY3Rvci5CYXNlU3RvcmFnZVRyZWVFbGVtZW50fQogICov
CiBXZWJJbnNwZWN0b3IuUmVzb3VyY2VSZXZpc2lvblRyZWVFbGVtZW50ID0gZnVuY3Rpb24oc3Rv
cmFnZVBhbmVsLCByZXZpc2lvbikKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvU2V0dGluZ3MuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL1NldHRpbmdzLmpzCmluZGV4IDgzNmZiYTBiYjcyMzBkNWY4MjVmNjFmZTY3ZDE1NzZm
YzdkZTY4ODYuLjA0MzkzMzg5YzYwNzY4NDNkZmZlNmYxOGM2MDk4M2EyOWQ5ODkxYjcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2V0dGluZ3MuanMKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TZXR0aW5ncy5qcwpAQCAtNTUs
NiArNTUsNyBAQCB2YXIgQ2FwYWJpbGl0aWVzID0gewogICAgIGhlYXBQcm9maWxlclByZXNlbnQ6
IGZhbHNlLAogICAgIGNhbk92ZXJyaWRlRGV2aWNlTWV0cmljczogZmFsc2UsCiAgICAgdGltZWxp
bmVTdXBwb3J0c0ZyYW1lSW5zdHJ1bWVudGF0aW9uOiBmYWxzZSwKKyAgICBmaWxlc3lzdGVtSW5z
cGVjdGlvbjogZmFsc2UKIH0KIAogLyoqCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL1dlYktpdC5xcmMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL1dlYktpdC5xcmMKaW5kZXggMTlmOWNhNmJkZWE1NjBiYzBlMDNiZWE0OGZhMjgzY2E3
M2Q2ZDk1OS4uOGJhODRmZmFiYmZkMDdkZDM1NmNmYmJlOTI3MDdlN2E4NjRlZDY4NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9XZWJLaXQucXJjCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvV2ViS2l0LnFyYwpAQCAtNTgsNiAr
NTgsOCBAQAogICAgIDxmaWxlPkV4dGVuc2lvblJlZ2lzdHJ5U3R1Yi5qczwvZmlsZT4KICAgICA8
ZmlsZT5FeHRlbnNpb25TZXJ2ZXIuanM8L2ZpbGU+CiAgICAgPGZpbGU+RmlsZU1hbmFnZXIuanM8
L2ZpbGU+CisgICAgPGZpbGU+RmlsZVN5c3RlbU1vZGVsLmpzPC9maWxlPgorICAgIDxmaWxlPkZp
bGVTeXN0ZW1WaWV3LmpzPC9maWxlPgogICAgIDxmaWxlPkZpbHRlcmVkSXRlbVNlbGVjdGlvbkRp
YWxvZy5qczwvZmlsZT4KICAgICA8ZmlsZT5Gb250Vmlldy5qczwvZmlsZT4KICAgICA8ZmlsZT5H
b1RvTGluZURpYWxvZy5qczwvZmlsZT4KQEAgLTIzOSw2ICsyNDEsNyBAQAogICAgIDxmaWxlPklt
YWdlcy9lcnJvckljb24ucG5nPC9maWxlPgogICAgIDxmaWxlPkltYWdlcy9lcnJvck1lZGl1bUlj
b24ucG5nPC9maWxlPgogICAgIDxmaWxlPkltYWdlcy9lcnJvclJlZERvdC5wbmc8L2ZpbGU+Cisg
ICAgPGZpbGU+SW1hZ2VzL2ZpbGVzeXN0ZW0ucG5nPC9maWxlPgogICAgIDxmaWxlPkltYWdlcy9m
b3J3YXJkLnBuZzwvZmlsZT4KICAgICA8ZmlsZT5JbWFnZXMvZnJhbWUucG5nPC9maWxlPgogICAg
IDxmaWxlPkltYWdlcy9nbG9zc3lIZWFkZXIucG5nPC9maWxlPgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuaHRtbCBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmh0bWwKaW5kZXggNTI1MWI5ZThkYmMy
OGQzNGI1MmVlNmUzNGI0MjJkNmVlYjFmZjNhMy4uZjZlZDJkOTQ2NzQyODQ1ZWVmOGEzNjM3Y2Ez
MjBjYzIyNWVhNTEzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9pbnNwZWN0b3IuaHRtbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL2luc3BlY3Rvci5odG1sCkBAIC0xNTksNiArMTU5LDggQEAgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAgICA8c2Ny
aXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJTb3VyY2VDU1NUb2tlbml6ZXIuanMiPjwv
c2NyaXB0PgogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IlNvdXJjZUhU
TUxUb2tlbml6ZXIuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2Ny
aXB0IiBzcmM9IlNvdXJjZUphdmFTY3JpcHRUb2tlbml6ZXIuanMiPjwvc2NyaXB0PgorICAgIDxz
Y3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IkZpbGVTeXN0ZW1Nb2RlbC5qcyI+PC9z
Y3JpcHQ+CisgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iRmlsZVN5c3Rl
bVZpZXcuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBz
cmM9IkZvbnRWaWV3LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNj
cmlwdCIgc3JjPSJJbWFnZVZpZXcuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgdHlwZT0idGV4
dC9qYXZhc2NyaXB0IiBzcmM9IkRhdGFiYXNlVGFibGVWaWV3LmpzIj48L3NjcmlwdD4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvcmVzb3VyY2VzUGFuZWwu
Y3NzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9yZXNvdXJjZXNQYW5lbC5j
c3MKaW5kZXggNGQ2Y2EyYjEyOWQ1M2Y2NTI0ZDViYmY2ZmRiZDA5YWMxMmFjMGJkNC4uYmZiZjkz
MDZhNTYwNGMwNGJkMDQyYmM1YWY1ZDFiNDUxYzUwNDhkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9yZXNvdXJjZXNQYW5lbC5jc3MKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9yZXNvdXJjZXNQYW5lbC5jc3MKQEAgLTMyNiw3
ICszMjYsMTYgQEAgbGkuc2VsZWN0ZWQgLmJhc2Utc3RvcmFnZS10cmVlLWVsZW1lbnQtc3VidGl0
bGUgewogICAgIGNvbnRlbnQ6IHVybChJbWFnZXMvYXBwbGljYXRpb25DYWNoZS5wbmcpOwogfQog
Ci0vKiBGSVhNRTogTWFrZSBzZXBhcmF0ZSBwbmcgZm9yIGZpbGUtc3lzdGVtICovCi0uZmlsZS1z
eXN0ZW0tc3RvcmFnZS10cmVlLWl0ZW0gLmljb24gewotICAgIGNvbnRlbnQ6IHVybChJbWFnZXMv
YXBwbGljYXRpb25DYWNoZS5wbmcpOworLmZpbGVzeXN0ZW0tc3RvcmFnZS10cmVlLWl0ZW0gLmlj
b24geworICAgIGNvbnRlbnQ6IHVybChJbWFnZXMvZmlsZXN5c3RlbS5wbmcpOworfQorCisuZmls
ZXN5c3RlbS1kaXJlY3RvcnktdHJlZSBsaSB7CisgICAgb3ZlcmZsb3c6IGhpZGRlbjsKKyAgICB0
ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKK30KKworLmZpbGUtY29udGVudC12aWV3IHsKKyAgICBv
dmVyZmxvdzogaGlkZGVuOworICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvanMvRGV2VG9vbHMuanMgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9qcy9EZXZUb29scy5qcwppbmRleCBjNGQ1NDIzOGRiZDZiODQ0
MDdlZDQzMTZhNmIwYzI3ZjM0ZTA1ZGZkLi44YTI5N2U0ZTlmNjIxZDViMzhhN2QyNjBlOTM3ZDQ3
ZDVkMzg1MjAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9qcy9EZXZU
b29scy5qcworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9qcy9EZXZUb29scy5qcwpA
QCAtNDEsNiArNDEsMTAgQEAKICAgICBQcmVmZXJlbmNlcy5leHBvc2VEaXNhYmxlQ2FjaGUgPSB0
cnVlOwogICAgIFByZWZlcmVuY2VzLmV4cG9zZVdvcmtlcnNJbnNwZWN0aW9uID0gdHJ1ZTsKICAg
ICBQcmVmZXJlbmNlcy5zaG93RG9ja1RvUmlnaHQgPSB0cnVlOworCisgICAgLy8gVE9ETyh0emlr
KTogRW5hYmxlIEZpbGVTeXN0ZW0gc3VwcG9ydCBhZnRlciB3ZSBjb21wbGV0ZSBpdHMKKyAgICAv
LyBpbXBsZW1lbnRhdGlvbi4KKyAgICBDYXBhYmlsaXRpZXMuZmlsZXN5c3RlbUluc3BlY3Rpb24g
PSBmYWxzZTsKIH0pKCk7fQogCiBmdW5jdGlvbiBidWlsZFBsYXRmb3JtRXh0ZW5zaW9uQVBJKGV4
dGVuc2lvbkluZm8pCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>143443</attachid>
            <date>2012-05-22 20:30:52 -0700</date>
            <delta_ts>2012-05-23 19:47:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-72691-20120523123051.patch</filename>
            <type>text/plain</type>
            <size>30286</size>
            <attacher name="Taiju Tsuiki">tzik</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE4MDEyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggYzg5YjYyMjk2
ZTI3ZjhiNjUyNzVhNGQyMGNkNDE0YWZjNTY4ZTM3Ny4uNGQ0ZDU2MzUzN2MyZTQ4OGFlYmI0ZWU1
NjczMTg1YmVjMzQ0YTJiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBp
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtNjM5Myw2ICs2MzkzLDggQEAK
ICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0V4dGVuc2lvblJlZ2lzdHJ5U3R1Yi5q
cycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9FeHRlbnNpb25TZXJ2ZXIuanMn
LAogICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvRmlsZU1hbmFnZXIuanMnLAorICAg
ICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvRmlsZVN5c3RlbU1vZGVsLmpzJywKKyAgICAg
ICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0ZpbGVTeXN0ZW1WaWV3LmpzJywKICAgICAgICAg
ICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0ZpbHRlcmVkSXRlbVNlbGVjdGlvbkRpYWxvZy5qcycs
CiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9Gb250Vmlldy5qcycsCiAgICAgICAg
ICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9Hb1RvTGluZURpYWxvZy5qcycsCkBAIC02NTg0LDYg
KzY1ODYsNyBAQAogICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvSW1hZ2VzL2Vycm9y
TWVkaXVtSWNvbi5wbmcnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvSW1hZ2Vz
L2Vycm9yUmVkRG90LnBuZycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9JbWFn
ZXMvZm9yd2FyZC5wbmcnLAorICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvSW1hZ2Vz
L2ZpbGVzeXN0ZW0ucG5nJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0ltYWdl
cy9mcmFtZS5wbmcnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvSW1hZ2VzL2ds
b3NzeUhlYWRlci5wbmcnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvSW1hZ2Vz
L2dsb3NzeUhlYWRlclByZXNzZWQucG5nJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3By
b2ovV2ViQ29yZS52Y3Byb2oKaW5kZXggZDYwMmZiN2Q5NzFiOGE1M2VkYjU5OTI0Mzc0ZmZlNjc4
MzkzYzg4Mi4uOTEyYmQ4N2U1ODQ5ZDFhNjIxZmZlNDAwYjliNTY1YjRjM2Q5OTNhMiAxMDA3NTUK
LS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKKysrIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKQEAgLTc0MjczLDYg
Kzc0MjczLDE0IEBACiAJCQkJCT4KIAkJCQk8L0ZpbGU+CiAJCQkJPEZpbGUKKwkJCQkJUmVsYXRp
dmVQYXRoPSIuLlxpbnNwZWN0b3JcZnJvbnQtZW5kXEZpbGVTeXN0ZW1Nb2RlbC5qcyIKKwkJCQkJ
PgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGluc3BlY3Rv
clxmcm9udC1lbmRcRmlsZVN5c3RlbVZpZXcuanMiCisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJCQkJ
PEZpbGUKIAkJCQkJUmVsYXRpdmVQYXRoPSIuLlxpbnNwZWN0b3JcZnJvbnQtZW5kXGZpbHRlcmVk
SXRlbVNlbGVjdGlvbkRpYWxvZy5jc3MiCiAJCQkJCT4KIAkJCQk8L0ZpbGU+CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvY29tcGlsZS1mcm9udC1lbmQucHkgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvY29tcGlsZS1mcm9udC1lbmQucHkKaW5kZXggNGE3YTkzYjgwZDAz
ZTM0NmUwNGY3NDZhZDBmNGNhZTc1M2Y5MWZjMC4uYWZlOTlhMGZmNDBjZjMwOGZiOGVlMGQwNTFh
NmJjMDBjNTAxMWEyZSAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2NvbXBp
bGUtZnJvbnQtZW5kLnB5CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9jb21waWxlLWZy
b250LWVuZC5weQpAQCAtNzYsNiArNzYsNyBAQCBtb2R1bGVzID0gWwogICAgICAgICAgICAgIkRl
YnVnZ2VyUmVzb3VyY2VCaW5kaW5nLmpzIiwKICAgICAgICAgICAgICJEZWJ1Z2dlclNjcmlwdE1h
cHBpbmcuanMiLAogICAgICAgICAgICAgIkZpbGVNYW5hZ2VyLmpzIiwKKyAgICAgICAgICAgICJG
aWxlU3lzdGVtTW9kZWwuanMiLAogICAgICAgICAgICAgIkhBUkVudHJ5LmpzIiwKICAgICAgICAg
ICAgICJJbmRleGVkREJNb2RlbC5qcyIsCiAgICAgICAgICAgICAiTGlua2lmaWVyLmpzIiwKQEAg
LTIwNCw2ICsyMDUsNyBAQCBtb2R1bGVzID0gWwogICAgICAgICAgICAgIkRhdGFiYXNlUXVlcnlW
aWV3LmpzIiwKICAgICAgICAgICAgICJEYXRhYmFzZVRhYmxlVmlldy5qcyIsCiAgICAgICAgICAg
ICAiRE9NU3RvcmFnZUl0ZW1zVmlldy5qcyIsCisgICAgICAgICAgICAiRmlsZVN5c3RlbVZpZXcu
anMiLAogICAgICAgICAgICAgIkluZGV4ZWREQlZpZXdzLmpzIiwKICAgICAgICAgICAgICJSZXNv
dXJjZXNQYW5lbC5qcyIsCiAgICAgICAgIF0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvRmlsZVN5c3RlbU1vZGVsLmpzIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9GaWxlU3lzdGVtTW9kZWwuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjEwYWJhY2U5
NDc1NTdhOTMwZjBmZTMyMTU2YzJhYzQ3OGM4MzU5MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRmlsZVN5c3RlbU1vZGVsLmpzCkBAIC0wLDAg
KzEsMzU1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6
CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIK
KyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2Yg
R29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworLyoqCisgKiBAY29uc3RydWN0b3IKKyAqIEBleHRlbmRzIHtXZWJJbnNwZWN0b3Iu
T2JqZWN0fQorICogQGltcGxlbWVudHMge0ZpbGVTeXN0ZW1BZ2VudC5EaXNwYXRjaGVyfQorICov
CitXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1vZGVsID0gZnVuY3Rpb24oKQoreworICAgIFdlYklu
c3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsKKworICAgIHRoaXMuX2ZyYW1lc0ZvckZyYW1lSWQg
PSB7fTsKKyAgICB0aGlzLl9mcmFtZXNGb3JPcmlnaW4gPSB7fTsKKyAgICB0aGlzLl9maWxlU3lz
dGVtc0Zvck9yaWdpbiA9IHt9OworCisgICAgV2ViSW5zcGVjdG9yLnJlc291cmNlVHJlZU1vZGVs
LmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlJlc291cmNlVHJlZU1vZGVsLkV2ZW50VHlw
ZXMuRnJhbWVBZGRlZCwgdGhpcy5fZnJhbWVBZGRlZCwgdGhpcyk7CisgICAgV2ViSW5zcGVjdG9y
LnJlc291cmNlVHJlZU1vZGVsLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlJlc291cmNl
VHJlZU1vZGVsLkV2ZW50VHlwZXMuRnJhbWVOYXZpZ2F0ZWQsIHRoaXMuX2ZyYW1lTmF2aWdhdGVk
LCB0aGlzKTsKKyAgICBXZWJJbnNwZWN0b3IucmVzb3VyY2VUcmVlTW9kZWwuYWRkRXZlbnRMaXN0
ZW5lcihXZWJJbnNwZWN0b3IuUmVzb3VyY2VUcmVlTW9kZWwuRXZlbnRUeXBlcy5GcmFtZURldGFj
aGVkLCB0aGlzLl9mcmFtZURldGFjaGVkLCB0aGlzKTsKKworICAgIEluc3BlY3RvckJhY2tlbmQu
cmVnaXN0ZXJGaWxlU3lzdGVtRGlzcGF0Y2hlcih0aGlzKTsKKyAgICBGaWxlU3lzdGVtQWdlbnQu
ZW5hYmxlKCk7Cit9CisKK1dlYkluc3BlY3Rvci5GaWxlU3lzdGVtTW9kZWwucHJvdG90eXBlID0g
eworICAgIC8qKgorICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLkV2ZW50fSBldmVudAorICAg
ICAqLworICAgIF9mcmFtZUFkZGVkOiBmdW5jdGlvbihldmVudCkKKyAgICB7CisgICAgICAgIHZh
ciBmcmFtZSA9IC8qKiBAdHlwZSB7V2ViSW5zcGVjdG9yLlJlc291cmNlVHJlZUZyYW1lfSAqLyBl
dmVudC5kYXRhOworICAgICAgICB0aGlzLl9hdHRhY2hGcmFtZVJlY3Vyc2l2ZShmcmFtZSk7Cisg
ICAgfSwKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLkV2ZW50fSBldmVu
dAorICAgICAqLworICAgIF9mcmFtZU5hdmlnYXRlZDogZnVuY3Rpb24oZXZlbnQpCisgICAgewor
ICAgICAgICB2YXIgZnJhbWUgPSAvKiogQHR5cGUge1dlYkluc3BlY3Rvci5SZXNvdXJjZVRyZWVG
cmFtZX0gKi8gZXZlbnQuZGF0YTsKKyAgICAgICAgdGhpcy5fYXR0YWNoRnJhbWVSZWN1cnNpdmUo
ZnJhbWUpOworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5F
dmVudH0gZXZlbnQKKyAgICAgKi8KKyAgICBfZnJhbWVEZXRhY2hlZDogZnVuY3Rpb24oZXZlbnQp
CisgICAgeworICAgICAgICB2YXIgZnJhbWUgPSAvKiogQHR5cGUge1dlYkluc3BlY3Rvci5SZXNv
dXJjZVRyZWVGcmFtZX0gKi8gZXZlbnQuZGF0YTsKKyAgICAgICAgdGhpcy5fZGV0YWNoRnJhbWVS
ZWN1cnNpdmUoZnJhbWUpOworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge1dlYklu
c3BlY3Rvci5SZXNvdXJjZVRyZWVGcmFtZX0gZnJhbWUKKyAgICAgKi8KKyAgICBfYXR0YWNoRnJh
bWU6IGZ1bmN0aW9uKGZyYW1lKQorICAgIHsKKyAgICAgICAgaWYgKHRoaXMuX2ZyYW1lc0ZvckZy
YW1lSWRbZnJhbWUuaWRdKQorICAgICAgICAgICAgdGhpcy5fZGV0YWNoRnJhbWVSZWN1cnNpdmUo
ZnJhbWUpOworICAgICAgICBpZiAoZnJhbWUuc2VjdXJpdHlPcmlnaW4gPT0gIm51bGwiKQorICAg
ICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHZhciBmcmFtZVdyYXBwZXIgPSB7CisgICAgICAg
ICAgICBmcmFtZUlkOiBmcmFtZS5pZCwKKyAgICAgICAgICAgIGZyYW1lOiBmcmFtZSwKKyAgICAg
ICAgICAgIG9yaWdpbjogZnJhbWUuc2VjdXJpdHlPcmlnaW4sCisgICAgICAgICAgICBkaWRSZWFk
RGlyZWN0b3J5UmVxdWVzdDoge30KKyAgICAgICAgfTsKKyAgICAgICAgdGhpcy5fZnJhbWVzRm9y
RnJhbWVJZFtmcmFtZS5pZF0gPSBmcmFtZVdyYXBwZXI7CisKKyAgICAgICAgdmFyIG5ld19vcmln
aW4gPSBmYWxzZTsKKyAgICAgICAgaWYgKCF0aGlzLl9mcmFtZXNGb3JPcmlnaW5bZnJhbWUuc2Vj
dXJpdHlPcmlnaW5dKSB7CisgICAgICAgICAgICB0aGlzLl9mcmFtZXNGb3JPcmlnaW5bZnJhbWUu
c2VjdXJpdHlPcmlnaW5dID0ge307CisgICAgICAgICAgICBuZXdfb3JpZ2luID0gdHJ1ZTsKKyAg
ICAgICAgfQorICAgICAgICB0aGlzLl9mcmFtZXNGb3JPcmlnaW5bZnJhbWUuc2VjdXJpdHlPcmln
aW5dW2ZyYW1lLmlkXSA9IGZyYW1lV3JhcHBlcjsKKyAgICAgICAgaWYgKG5ld19vcmlnaW4pCisg
ICAgICAgICAgICB0aGlzLl9vcmlnaW5BZGRlZChmcmFtZS5zZWN1cml0eU9yaWdpbik7CisKKyAg
ICB9LAorCisgICAgLyoqCisgICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuUmVzb3VyY2VUcmVl
RnJhbWV9IGZyYW1lCisgICAgICovCisgICAgX2F0dGFjaEZyYW1lUmVjdXJzaXZlOiBmdW5jdGlv
bihmcmFtZSkKKyAgICB7CisgICAgICAgIHRoaXMuX2F0dGFjaEZyYW1lKGZyYW1lKTsKKyAgICAg
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCBmcmFtZS5jaGlsZEZyYW1lcy5sZW5ndGg7ICsraSkKKyAg
ICAgICAgICAgIHRoaXMuX2F0dGFjaEZyYW1lUmVjdXJzaXZlKGZyYW1lLmNoaWxkRnJhbWVzW2ld
KTsKKyAgICB9LAorCisgICAgLyoqCisgICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuUmVzb3Vy
Y2VUcmVlRnJhbWV9IGZyYW1lCisgICAgICovCisgICAgX2RldGFjaEZyYW1lOiBmdW5jdGlvbihm
cmFtZSkKKyAgICB7CisgICAgICAgIGlmICghdGhpcy5fZnJhbWVzRm9yRnJhbWVJZFtmcmFtZS5p
ZF0pCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIHZhciBmcmFtZVdyYXBwZXIgPSB0aGlz
Ll9mcmFtZXNGb3JGcmFtZUlkW2ZyYW1lLmlkXTsKKyAgICAgICAgZGVsZXRlIHRoaXMuX2ZyYW1l
c0ZvckZyYW1lSWRbZnJhbWVXcmFwcGVyLmZyYW1lSWRdOworICAgICAgICBkZWxldGUgdGhpcy5f
ZnJhbWVzRm9yT3JpZ2luW2ZyYW1lV3JhcHBlci5vcmlnaW5dW2ZyYW1lV3JhcHBlci5mcmFtZUlk
XTsKKworICAgICAgICB2YXIgbGFzdF9vcmlnaW4gPSB0aGlzLl9mcmFtZXNGb3JPcmlnaW5bZnJh
bWVXcmFwcGVyLm9yaWdpbl0uaXNFbXB0eSgpOworICAgICAgICBpZiAobGFzdF9vcmlnaW4pCisg
ICAgICAgICAgICBkZWxldGUgdGhpcy5fZnJhbWVzRm9yT3JpZ2luW2ZyYW1lV3JhcHBlci5vcmln
aW5dOworCisgICAgICAgIC8vIFRPRE8odHppayk6IE1pZ3JhdGUgcGVuZGluZyByZXF1ZXN0IG9u
IHRoaXMgZnJhbWUgdG8gYW5vdGhlciBmcmFtZS4KKworICAgICAgICBpZiAobGFzdF9vcmlnaW4p
CisgICAgICAgICAgICB0aGlzLl9vcmlnaW5SZW1vdmVkKGZyYW1lV3JhcHBlci5vcmlnaW4pOwor
CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlJlc291cmNl
VHJlZUZyYW1lfSBmcmFtZQorICAgICAqLworICAgIF9kZXRhY2hGcmFtZVJlY3Vyc2l2ZTogZnVu
Y3Rpb24oZnJhbWUpCisgICAgeworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGZyYW1lLmNo
aWxkRnJhbWVzLmxlbmd0aDsgKytpKQorICAgICAgICAgICAgdGhpcy5fZGV0YWNoRnJhbWVSZWN1
cnNpdmUoZnJhbWUuY2hpbGRGcmFtZXNbaV0pOworICAgICAgICB0aGlzLl9kZXRhY2hGcmFtZShm
cmFtZSk7CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBvcmlnaW4K
KyAgICAgKiBAcGFyYW0ge3N0cmluZ30gdHlwZQorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBwYXRo
CisgICAgICovCisgICAgX2NvbXBvc2VGaWxlU3lzdGVtVVJMOiBmdW5jdGlvbihvcmlnaW4sIHR5
cGUsIHBhdGgpCisgICAgeworICAgICAgICByZXR1cm4gImZpbGVzeXN0ZW06IiArIG9yaWdpbiAr
ICIvIiArIHR5cGUgKyBwYXRoOworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge3N0
cmluZ30gb3JpZ2luCisgICAgICovCisgICAgX29yaWdpbkFkZGVkOiBmdW5jdGlvbihvcmlnaW4p
CisgICAgeworICAgICAgICBpZiAoIXRoaXMuX2ZpbGVTeXN0ZW1zRm9yT3JpZ2luW29yaWdpbl0p
CisgICAgICAgICAgICB0aGlzLl9maWxlU3lzdGVtc0Zvck9yaWdpbltvcmlnaW5dID0ge307CisK
KyAgICAgICAgdmFyIHR5cGVzID0gWyJwZXJzaXN0ZW50IiwgInRlbXBvcmFyeSJdOworICAgICAg
ICBmb3IgKHZhciBpID0gMDsgaSA8IHR5cGVzLmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICBp
ZiAoIXRoaXMuX2ZpbGVTeXN0ZW1zRm9yT3JpZ2luW29yaWdpbl1bdHlwZXNbaV1dKSB7CisgICAg
ICAgICAgICAgICAgdmFyIGZpbGVTeXN0ZW0gPSBuZXcgV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1N
b2RlbC5GaWxlU3lzdGVtKHRoaXMsIG9yaWdpbiwgdHlwZXNbaV0pOworICAgICAgICAgICAgICAg
IHRoaXMuX2ZpbGVTeXN0ZW1zRm9yT3JpZ2luW29yaWdpbl1bdHlwZXNbaV1dID0gZmlsZVN5c3Rl
bTsKKyAgICAgICAgICAgICAgICB0aGlzLl9maWxlU3lzdGVtQWRkZWQoZmlsZVN5c3RlbSk7Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9LAorCisgICAgLyoqCisgICAgICogQHBhcmFt
IHtzdHJpbmd9IG9yaWdpbgorICAgICAqLworICAgIF9vcmlnaW5SZW1vdmVkOiBmdW5jdGlvbihv
cmlnaW4pCisgICAgeworICAgICAgICBmb3IgKHZhciB0eXBlIGluIHRoaXMuX2ZpbGVTeXN0ZW1z
Rm9yT3JpZ2luW29yaWdpbl0pIHsKKyAgICAgICAgICAgIHZhciBmaWxlU3lzdGVtID0gdGhpcy5f
ZmlsZVN5c3RlbXNGb3JPcmlnaW5bb3JpZ2luXVt0eXBlXTsKKyAgICAgICAgICAgIGRlbGV0ZSB0
aGlzLl9maWxlU3lzdGVtc0Zvck9yaWdpbltvcmlnaW5dW3R5cGVdOworICAgICAgICAgICAgdGhp
cy5fZmlsZVN5c3RlbVJlbW92ZWQoZmlsZVN5c3RlbSk7CisgICAgICAgIH0KKyAgICAgICAgZGVs
ZXRlIHRoaXMuX2ZpbGVTeXN0ZW1zRm9yT3JpZ2luW29yaWdpbl07CisgICAgfSwKKworICAgIC8q
KgorICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbC5GaWxlU3lzdGVt
fSBmaWxlU3lzdGVtCisgICAgICovCisgICAgX2ZpbGVTeXN0ZW1BZGRlZDogZnVuY3Rpb24oZmls
ZVN5c3RlbSkKKyAgICB7CisgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdl
Ykluc3BlY3Rvci5GaWxlU3lzdGVtTW9kZWwuRXZlbnRUeXBlcy5GaWxlU3lzdGVtQWRkZWQsIGZp
bGVTeXN0ZW0pOworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rv
ci5GaWxlU3lzdGVtTW9kZWwuRmlsZVN5c3RlbX0gZmlsZVN5c3RlbQorICAgICAqLworICAgIF9m
aWxlU3lzdGVtUmVtb3ZlZDogZnVuY3Rpb24oZmlsZVN5c3RlbSkKKyAgICB7CisgICAgICAgIHRo
aXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtTW9kZWwu
RXZlbnRUeXBlcy5GaWxlU3lzdGVtUmVtb3ZlZCwgZmlsZVN5c3RlbSk7CisgICAgfSwKKworICAg
IHJlZnJlc2hGaWxlU3lzdGVtTGlzdDogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgaWYgKFdl
Ykluc3BlY3Rvci5yZXNvdXJjZVRyZWVNb2RlbC5tYWluRnJhbWUpIHsKKyAgICAgICAgICAgIHRo
aXMuX2RldGFjaEZyYW1lUmVjdXJzaXZlKChXZWJJbnNwZWN0b3IucmVzb3VyY2VUcmVlTW9kZWwu
bWFpbkZyYW1lKSk7CisgICAgICAgICAgICB0aGlzLl9hdHRhY2hGcmFtZVJlY3Vyc2l2ZSgoV2Vi
SW5zcGVjdG9yLnJlc291cmNlVHJlZU1vZGVsLm1haW5GcmFtZSkpOworICAgICAgICB9CisgICAg
fSwKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2Rl
bC5EaXJlY3Rvcnl9IGRpcmVjdG9yeQorICAgICAqIEBwYXJhbSB7ZnVuY3Rpb24obnVtYmVyLCBB
cnJheS48V2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbC5EaXJlY3Rvcnk+KX0gY2FsbGJhY2sK
KyAgICAgKi8KKyAgICByZWFkRGlyZWN0b3J5OiBmdW5jdGlvbihkaXJlY3RvcnksIGNhbGxiYWNr
KQorICAgIHsKKyAgICAgICAgLy8gVE9ETyh0emlrKTogSW1wbGVtZW50IG1lLgorICAgIH0KK30K
KworV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbC5FdmVudFR5cGVzID0geworICAgIEZpbGVT
eXN0ZW1BZGRlZDogIkZpbGVTeXN0ZW1BZGRlZCIsCisgICAgRmlsZVN5c3RlbVJlbW92ZWQ6ICJG
aWxlU3lzdGVtUmVtb3ZlZCIKK30KKworV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbC5uZXh0
UmVxdWVzdElkID0gMTsKKworV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbC5wcm90b3R5cGUu
X19wcm90b19fID0gV2ViSW5zcGVjdG9yLk9iamVjdC5wcm90b3R5cGU7CisKKy8qKgorICogQGNv
bnN0cnVjdG9yCisgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5GaWxlU3lzdGVtTW9kZWx9IGZpbGVT
eXN0ZW1Nb2RlbAorICogQHBhcmFtIHtzdHJpbmd9IG9yaWdpbgorICogQHBhcmFtIHtzdHJpbmd9
IHR5cGUKKyAqLworV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbC5GaWxlU3lzdGVtID0gZnVu
Y3Rpb24oZmlsZVN5c3RlbU1vZGVsLCBvcmlnaW4sIHR5cGUpCit7CisgICAgdGhpcy5vcmlnaW4g
PSBvcmlnaW47CisgICAgdGhpcy50eXBlID0gdHlwZTsKKyAgICB0aGlzLnJvb3QgPSBuZXcgV2Vi
SW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbC5EaXJlY3RvcnkoZmlsZVN5c3RlbU1vZGVsLCB0aGlz
LCBudWxsLCAiIik7Cit9CisKK1dlYkluc3BlY3Rvci5GaWxlU3lzdGVtTW9kZWwuRmlsZVN5c3Rl
bS5wcm90b3R5cGUgPSB7CisgICAgZ2V0IG5hbWUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuICJm
aWxlc3lzdGVtOiIgKyB0aGlzLm9yaWdpbiArICIvIiArIHRoaXMudHlwZTsKKyAgICB9Cit9CisK
Ky8qKgorICogQGNvbnN0cnVjdG9yCisgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5GaWxlU3lzdGVt
TW9kZWx9IGZpbGVTeXN0ZW1Nb2RlbAorICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuRmlsZVN5c3Rl
bU1vZGVsLkZpbGVTeXN0ZW19IGZpbGVTeXN0ZW0KKyAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLkZp
bGVTeXN0ZW1Nb2RlbC5EaXJlY3Rvcnl9IHBhcmVudERpcmVjdG9yeQorICogQHBhcmFtIHtzdHJp
bmd9IG5hbWUKKyAqLworV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbC5FbnRyeSA9IGZ1bmN0
aW9uKGZpbGVTeXN0ZW1Nb2RlbCwgZmlsZVN5c3RlbSwgcGFyZW50RGlyZWN0b3J5LCBuYW1lKQor
eworICAgIHRoaXMuZmlsZVN5c3RlbU1vZGVsID0gZmlsZVN5c3RlbU1vZGVsOworICAgIHRoaXMu
ZmlsZVN5c3RlbSA9IGZpbGVTeXN0ZW07CisgICAgdGhpcy5wYXJlbnREaXJlY3RvcnkgPSBwYXJl
bnREaXJlY3Rvcnk7CisgICAgdGhpcy5uYW1lID0gbmFtZTsKK30KKworV2ViSW5zcGVjdG9yLkZp
bGVTeXN0ZW1Nb2RlbC5FbnRyeS5wcm90b3R5cGUgPSB7CisgICAgZ2V0IHVybCgpCisgICAgewor
ICAgICAgICB2YXIgdXJsOworICAgICAgICBpZiAodGhpcy5wYXJlbnREaXJlY3RvcnkpCisgICAg
ICAgICAgICB1cmwgPSB0aGlzLnBhcmVudERpcmVjdG9yeS51cmwgKyB0aGlzLm5hbWU7CisgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgIHVybCA9IHRoaXMuZmlsZVN5c3RlbS5uYW1lOworCisgICAg
ICAgIGlmICh0aGlzLmlzRGlyZWN0b3J5KQorICAgICAgICAgICAgcmV0dXJuIHVybCArICIvIjsK
KyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmV0dXJuIHVybDsKKyAgICB9Cit9CisKKy8qKgor
ICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1vZGVsLkRpcmVjdG9yeX0gcGFyZW50
RGlyZWN0b3J5CisgKiBAcGFyYW0ge3N0cmluZ30gdXJsCisgKiBAcmV0dXJuIHtXZWJJbnNwZWN0
b3IuRmlsZVN5c3RlbU1vZGVsLkRpcmVjdG9yeXxXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1vZGVs
LkZpbGV9CisgKi8KK1dlYkluc3BlY3Rvci5GaWxlU3lzdGVtTW9kZWwuRW50cnkuQ3JlYXRlRW50
cnkgPSBmdW5jdGlvbihwYXJlbnREaXJlY3RvcnksIHVybCkKK3sKKyAgICB2YXIgcGFyZW50VVJM
ID0gcGFyZW50RGlyZWN0b3J5LnVybDsKKyAgICBpZiAoIXVybC5zdGFydHNXaXRoKHBhcmVudFVS
TCkpCisgICAgICAgIHJldHVybiBudWxsOworICAgIGlmICh1cmxbdXJsLmxlbmd0aC0xXSA9PSAn
LycpIHsKKyAgICAgICAgdmFyIG5hbWUgPSB1cmwuc2xpY2UocGFyZW50VVJMLmxlbmd0aCwgLTEp
OworICAgICAgICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtTW9kZWwuRGlyZWN0
b3J5KHBhcmVudERpcmVjdG9yeS5maWxlU3lzdGVtTW9kZWwsIHBhcmVudERpcmVjdG9yeS5maWxl
U3lzdGVtLCBwYXJlbnREaXJlY3RvcnksIG5hbWUpOworICAgIH0gZWxzZSB7CisgICAgICAgIHZh
ciBuYW1lID0gdXJsLnNsaWNlKHBhcmVudFVSTC5sZW5ndGgpOworICAgICAgICByZXR1cm4gbmV3
IFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtTW9kZWwuRmlsZShwYXJlbnREaXJlY3RvcnkuZmlsZVN5
c3RlbU1vZGVsLCBwYXJlbnREaXJlY3RvcnkuZmlsZVN5c3RlbSwgcGFyZW50RGlyZWN0b3J5LCBu
YW1lKTsKKyAgICB9Cit9CisKKy8qKgorICogQGNvbnN0cnVjdG9yCisgKiBAZXh0ZW5kcyB7V2Vi
SW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbC5FbnRyeX0KKyAqIEBwYXJhbSB7V2ViSW5zcGVjdG9y
LkZpbGVTeXN0ZW1Nb2RlbH0gZmlsZVN5c3RlbU1vZGVsCisgKiBAcGFyYW0ge1dlYkluc3BlY3Rv
ci5GaWxlU3lzdGVtTW9kZWwuRmlsZVN5c3RlbX0gZmlsZVN5c3RlbQorICogQHBhcmFtIHtXZWJJ
bnNwZWN0b3IuRmlsZVN5c3RlbU1vZGVsLkRpcmVjdG9yeX0gcGFyZW50RGlyZWN0b3J5CisgKiBA
cGFyYW0ge3N0cmluZ30gbmFtZQorICovCitXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1vZGVsLkZp
bGUgPSBmdW5jdGlvbihmaWxlU3lzdGVtTW9kZWwsIGZpbGVTeXN0ZW0sIHBhcmVudERpcmVjdG9y
eSwgbmFtZSkKK3sKKyAgICBXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1vZGVsLkVudHJ5LmNhbGwo
dGhpcywgZmlsZVN5c3RlbU1vZGVsLCBmaWxlU3lzdGVtLCBwYXJlbnREaXJlY3RvcnksIG5hbWUp
OworfQorCitXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1vZGVsLkZpbGUucHJvdG90eXBlID0gewor
ICAgIGdldCBpc0RpcmVjdG9yeSgpCisgICAgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
fQorfQorCitXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1vZGVsLkZpbGUucHJvdG90eXBlLl9fcHJv
dG9fXyA9IFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtTW9kZWwuRW50cnkucHJvdG90eXBlOworCisv
KioKKyAqIEBjb25zdHJ1Y3RvcgorICogQGV4dGVuZHMge1dlYkluc3BlY3Rvci5GaWxlU3lzdGVt
TW9kZWwuRW50cnl9CisgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5GaWxlU3lzdGVtTW9kZWx9IGZp
bGVTeXN0ZW1Nb2RlbAorICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1vZGVsLkZp
bGVTeXN0ZW19IGZpbGVTeXN0ZW0KKyAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1N
b2RlbC5EaXJlY3Rvcnl9IHBhcmVudERpcmVjdG9yeQorICogQHBhcmFtIHtzdHJpbmd9IG5hbWUK
KyAqLworV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbC5EaXJlY3RvcnkgPSBmdW5jdGlvbihm
aWxlU3lzdGVtTW9kZWwsIGZpbGVTeXN0ZW0sIHBhcmVudERpcmVjdG9yeSwgbmFtZSkKK3sKKyAg
ICBXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1vZGVsLkVudHJ5LmNhbGwodGhpcywgZmlsZVN5c3Rl
bU1vZGVsLCBmaWxlU3lzdGVtLCBwYXJlbnREaXJlY3RvcnksIG5hbWUpOworfQorCitXZWJJbnNw
ZWN0b3IuRmlsZVN5c3RlbU1vZGVsLkRpcmVjdG9yeS5wcm90b3R5cGUgPSB7CisgICAgZ2V0IGlz
RGlyZWN0b3J5KCkKKyAgICB7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0sCisKKyAgICAv
KioKKyAgICAgKiBAcGFyYW0ge2Z1bmN0aW9uKG51bWJlciwgQXJyYXkuPFdlYkluc3BlY3Rvci5G
aWxlU3lzdGVtTW9kZWwuRGlyZWN0b3J5Pil9IGNhbGxiYWNrCisgICAgICovCisgICAgcmVhZERp
cmVjdG9yeTogZnVuY3Rpb24oY2FsbGJhY2spCisgICAgeworICAgICAgICB0aGlzLmZpbGVTeXN0
ZW1Nb2RlbC5yZWFkRGlyZWN0b3J5KHRoaXMsIGNhbGxiYWNrKTsKKyAgICB9Cit9CisKK1dlYklu
c3BlY3Rvci5GaWxlU3lzdGVtTW9kZWwuRGlyZWN0b3J5LnByb3RvdHlwZS5fX3Byb3RvX18gPSBX
ZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1vZGVsLkVudHJ5LnByb3RvdHlwZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRmlsZVN5c3RlbVZpZXcuanMgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0ZpbGVTeXN0ZW1WaWV3LmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjM4NjAyMzcwYTZlZmNhN2ZjN2YzZjJlMDdmNmU5Yjg5ODFiNzEzOTgKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0ZpbGVTeXN0ZW1W
aWV3LmpzCkBAIC0wLDAgKzEsNTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICog
Y29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhl
ciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
IGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisvKioKKyAqIEBjb25zdHJ1Y3RvcgorICogQGV4dGVuZHMg
e1dlYkluc3BlY3Rvci5WaWV3fQorICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1v
ZGVsLkZpbGVTeXN0ZW19ICBmaWxlU3lzdGVtCisgKi8KK1dlYkluc3BlY3Rvci5GaWxlU3lzdGVt
VmlldyA9IGZ1bmN0aW9uKGZpbGVTeXN0ZW0pCit7CisgICAgV2ViSW5zcGVjdG9yLlZpZXcuY2Fs
bCh0aGlzKTsKKyAgICB0aGlzLl9maWxlU3lzdGVtID0gZmlsZVN5c3RlbTsKK30KKworV2ViSW5z
cGVjdG9yLkZpbGVTeXN0ZW1WaWV3LnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3Iu
Vmlldy5wcm90b3R5cGU7CisKK1dlYkluc3BlY3Rvci5GaWxlU3lzdGVtRGlyZWN0b3J5VmlldyA9
IGZ1bmN0aW9uKCkKK3sKK30KKworV2ViSW5zcGVjdG9yLkZpbGVDb250ZW50VmlldyA9IGZ1bmN0
aW9uKCkKK3sKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvSW1hZ2VzL2ZpbGVzeXN0ZW0ucG5nIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9JbWFnZXMvZmlsZXN5c3RlbS5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTI2Mzg5ZGFkMjI1ZGM3NzFi
MmI5NjBjMDI3NjI1ZWJmMTg1MWZiYgpHSVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwgMTIyNgp6Y21W
OyoxVTM3S1ApPGg7M0t8TGswMDBlMU5KTFRxMDAxQlcwMDFCZTFeQHM2YjkjRjgwMDAwMWI1Y2hf
MEl0cCkKej0+UHgjMjRZSmBMOyhLKXt7YTc+eXtENF4wMDBTYU5MaDBMMDFGY1UwMUZjVjBHZ1pf
MDAwMDdiVipHYDJpcHQqCnoxX35TXzB0ODxHMDBjQCZMX3QobyF8aipOan0lMjEjKCZrX0dyUCl+
VGA7UkxGIyR+JDVoOTVuMkwtZHlnR3ZaUQp6UGtRa21rbUpWMDFNeD1VITZQeG9xakRwOUZma0hE
NWZ4PChMTktAPll3IWN1dW1tQHw/QzExISklJHY9P3dSU0cKej8ldnNXKUppNSg+OGA1aGN8WW9U
LS1pR0NGeGxrWWdSajI+eWE1ZE14O1lGQ1BJUF5NIz1RVUxwKDYqMTIrWnhACnpeWlp+SyloWjhB
Xj8+NDxqRjExd0dyTS1MaUBAO3tyPzZJciN0dDMxMH15MnxCKCs0dXR3dmwwRS0zKyp7d0pXKQp6
Nkw9OHlidj10cCUqPEthOStJMUBZOVk5NHNyJE9sakpoYEU3RDtJY3ZPVjJrTWN4UVgkd2pMLVhB
ODgqajFGczYKejFnQzk0KXY5RTRyRTgrOU1DJF84UDdBZnJyRTNqUUJ+RHkxZnA1TSR2K2pGKmBw
bWgxcjJ8bz8pcUQyNyt8d3BpCnpMN2U1cDdzcSZVJiVVMClnMFJMWEEwSTdHIXNSPFJRSSluXmJN
RFElK1N2cUVXb2g8JGtCVm1xPnZ0aGxOJDlnVwp6T0ttTkBUTVAzR1QpbEZZc2NTYl9UeUFpRGRL
dnsobCkrNnlKaEZYK2pobHVyZiQyYUdQP1dHTDFYZmEhUU9TIUIKejloI3VSWjxpKTxWJVlpQWxa
WD4pd0hoVn1YKUdecmQtQGlhRko1OFNiNUZPOUZlYWJLKT1EdH09Y0h3K3NJKWU8Cnp4ZD0lIVZm
eTlfK2pma3c+KTl1MCN0SHJYZUZSfnxeODVARjdhWFRmcDV5dS0qUW9jXjVzXi17QyNjUWhubFgp
fgp6ck1yUT02Z3lHQXtyKVY4RXRsMmgqKlB8QnlwSiR8emIxYWRJPml7akpfPn1vU3orXipgPGVM
cEdSfj5EZXN2ZzQKekskekgzUlh1OHEoT2VSflJGS2l5O2wyK0tBTGY8VV9PVyV4SGYtR1J1fiR0
fjQ4I2RMTVpNKm5mfkd6ZVE5UT8yCnokRyt5bSNNRTJCNjdYM3IzNzYtbGFKR0BVdUE2fGZtVV9M
MF9TY0VUdyMyQ1FBRFQ0aSMpbllTZHtUaVJLb0A1Uwp6b0FWR3YxMy1XR0VrSlMzUiRlRlA2eXEj
dm48PW9RaVlPUnlBUEsxUmI5TD5jNGgmeyMyNUg3JWpMUmY3WUJ2aCkKejV7cCFuUzU0b0dNTnkw
ak5DcyN6RWB9NmJNS0dGQEdKKVM1MWcrWjhUP15FTE5ZM3Fyd05ATzYjaVZvTjhYaU8oCnpucCRu
ckExO0FwQzleUGhFNG0xTGRIUTFJRW9qdnlhVHUzKXc8ankwLXRGRzxjR0UlPEwoPWZ6Qn1GU29W
RV43MQp6RHkhUV4/fHRDa0l8MThCLUpQSzd5dFMme0Q8JWJaTmtgbUZIMzRHYGk/Y1V5JjZQQ0Br
QG88dTMza1BVKHhJTkoKelU9dDZuTzFCdkYodnFSb2prSjx4eFhaODR6K0I+PWIlTGpKUSVPTD9V
JmV3WUckISFkVTRxJmVCWjcoKVNJdy1UCnpiPmdSanFeczdxMm4yPy02aWFDalVgIztjK0llaG5A
MllPNypSRHUkOyZQcExHJih4azJNbEdNVzdJY0xAPDk8Vwp6XjV7ZVNhUTt1bSY7TzNXbCo1KlVV
Mkg7YSk1QVFyYHwqSz1nQHU5NDFBVn51YEs5RlpQZnQkbDEyJlpNdytWeXkKekpWP0QoX3R1Kz03
UUJkbnZrWDQ0XzRkSDw9Q2hOTmxiMTZCRj52WUp1WVZyfC1kXmpGMHwjRStHQ1Z4SShYRk1+Cm9X
dUozbDd7emdYYjhLd3Y3eWNpPktSWTRGbnl2b0g8XlRXeTA3KnFvTTZOPCRmPlNMKkM7JEtlCgps
aXRlcmFsIDAKSGNtVj9kMDAwMDEKCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL1Jlc291cmNlc1BhbmVsLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9SZXNvdXJjZXNQYW5lbC5qcwppbmRleCA4YTRjNzcxM2RmZTBkMmMyOTRiMTc0
YzU1NDllMGM3NTUzMWU0YTIxLi45NDhlMjcxYjAzM2QxOWViZDIyNzMwYWQ0YzBlZjEzOTAyODY0
YjVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291
cmNlc1BhbmVsLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVz
b3VyY2VzUGFuZWwuanMKQEAgLTY3LDYgKzY3LDExIEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZXNQ
YW5lbCA9IGZ1bmN0aW9uKGRhdGFiYXNlKQogICAgIHRoaXMuYXBwbGljYXRpb25DYWNoZUxpc3RU
cmVlRWxlbWVudCA9IG5ldyBXZWJJbnNwZWN0b3IuU3RvcmFnZUNhdGVnb3J5VHJlZUVsZW1lbnQo
dGhpcywgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJBcHBsaWNhdGlvbiBDYWNoZSIpLCAiQXBwbGlj
YXRpb25DYWNoZSIsIFsiYXBwbGljYXRpb24tY2FjaGUtc3RvcmFnZS10cmVlLWl0ZW0iXSk7CiAg
ICAgdGhpcy5zaWRlYmFyVHJlZS5hcHBlbmRDaGlsZCh0aGlzLmFwcGxpY2F0aW9uQ2FjaGVMaXN0
VHJlZUVsZW1lbnQpOwogCisgICAgaWYgKFByZWZlcmVuY2VzLmV4cG9zZUZpbGVTeXN0ZW1JbnNw
ZWN0aW9uKSB7CisgICAgICAgIHRoaXMuZmlsZVN5c3RlbUxpc3RUcmVlRWxlbWVudCA9IG5ldyBX
ZWJJbnNwZWN0b3IuRmlsZVN5c3RlbUxpc3RUcmVlRWxlbWVudCh0aGlzKTsKKyAgICAgICAgdGhp
cy5zaWRlYmFyVHJlZS5hcHBlbmRDaGlsZCh0aGlzLmZpbGVTeXN0ZW1MaXN0VHJlZUVsZW1lbnQp
OworICAgIH0KKwogICAgIHRoaXMuc3RvcmFnZVZpZXdzID0gdGhpcy5zcGxpdFZpZXcubWFpbkVs
ZW1lbnQ7CiAgICAgdGhpcy5zdG9yYWdlVmlld3MuYWRkU3R5bGVDbGFzcygiZGlmZi1jb250YWlu
ZXIiKTsKIApAQCAtNDU3LDYgKzQ2MiwxNCBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2VzUGFuZWwu
cHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl9pbm5lclNob3dWaWV3KHRoaXMuX2FwcGxpY2F0
aW9uQ2FjaGVWaWV3c1tmcmFtZUlkXSk7CiAgICAgfSwKIAorICAgIC8qKgorICAgICAqICBAcGFy
YW0ge1dlYkluc3BlY3Rvci5WaWV3fSB2aWV3CisgICAgICovCisgICAgc2hvd0ZpbGVTeXN0ZW06
IGZ1bmN0aW9uKHZpZXcpCisgICAgeworICAgICAgICB0aGlzLl9pbm5lclNob3dWaWV3KHZpZXcp
OworICAgIH0sCisKICAgICBzaG93Q2F0ZWdvcnlWaWV3OiBmdW5jdGlvbihjYXRlZ29yeU5hbWUp
CiAgICAgewogICAgICAgICBpZiAoIXRoaXMuX2NhdGVnb3J5VmlldykKQEAgLTE0NzcsNiArMTQ5
MCw3OSBAQCBXZWJJbnNwZWN0b3IuSW5kZXhlZERCVHJlZUVsZW1lbnQucHJvdG90eXBlLl9fcHJv
dG9fXyA9IFdlYkluc3BlY3Rvci5TdG9yYWdlQ2F0ZQogCiAvKioKICAqIEBjb25zdHJ1Y3Rvcgor
ICogQGV4dGVuZHMge1dlYkluc3BlY3Rvci5TdG9yYWdlQ2F0ZWdvcnlUcmVlRWxlbWVudH0KKyAq
IEBwYXJhbSB7V2ViSW5zcGVjdG9yLlJlc291cmNlc1BhbmVsfSBzdG9yYWdlUGFuZWwKKyAqLwor
V2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1MaXN0VHJlZUVsZW1lbnQgPSBmdW5jdGlvbihzdG9yYWdl
UGFuZWwpCit7CisgICAgV2ViSW5zcGVjdG9yLlN0b3JhZ2VDYXRlZ29yeVRyZWVFbGVtZW50LmNh
bGwodGhpcywgc3RvcmFnZVBhbmVsLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkZpbGVTeXN0ZW0i
KSwgIkZpbGVTeXN0ZW0iLCBbImZpbGVzeXN0ZW0tc3RvcmFnZS10cmVlLWl0ZW0iXSk7Cit9CisK
K1dlYkluc3BlY3Rvci5GaWxlU3lzdGVtTGlzdFRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKKyAg
ICBvbmV4cGFuZDogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgV2ViSW5zcGVjdG9yLlN0b3Jh
Z2VDYXRlZ29yeVRyZWVFbGVtZW50LnByb3RvdHlwZS5vbmV4cGFuZC5jYWxsKHRoaXMpOworICAg
ICAgICB0aGlzLnJlZnJlc2hGaWxlU3lzdGVtKCk7CisgICAgfSwKKworICAgIG9uYXR0YWNoOiBm
dW5jdGlvbigpCisgICAgeworICAgICAgICBXZWJJbnNwZWN0b3IuU3RvcmFnZUNhdGVnb3J5VHJl
ZUVsZW1lbnQucHJvdG90eXBlLm9uYXR0YWNoLmNhbGwodGhpcyk7CisgICAgICAgIHRoaXMubGlz
dEl0ZW1FbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImNvbnRleHRtZW51IiwgdGhpcy5faGFuZGxl
Q29udGV4dE1lbnVFdmVudC5iaW5kKHRoaXMpLCB0cnVlKTsKKyAgICAgICAgaWYgKHRoaXMuZXhw
YW5kZWQpCisgICAgICAgICAgICB0aGlzLnJlZnJlc2hGaWxlU3lzdGVtKCk7CisgICAgfSwKKwor
ICAgIF9oYW5kbGVDb250ZXh0TWVudUV2ZW50OiBmdW5jdGlvbihldmVudCkKKyAgICB7CisgICAg
ICAgIHZhciBjb250ZXh0TWVudSA9IG5ldyBXZWJJbnNwZWN0b3IuQ29udGV4dE1lbnUoKTsKKyAg
ICAgICAgY29udGV4dE1lbnUuYXBwZW5kSXRlbShXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlJlZnJl
c2ggRmlsZVN5c3RlbSBMaXN0IiksIHRoaXMucmVmcmVzaEZpbGVTeXN0ZW0uYmluZCh0aGlzKSk7
CisgICAgICAgIGNvbnRleHRNZW51LnNob3coZXZlbnQpOworICAgIH0sCisKKyAgICBfZmlsZVN5
c3RlbUFkZGVkOiBmdW5jdGlvbihldmVudCkKKyAgICB7CisgICAgICAgIHZhciBmaWxlU3lzdGVt
ID0gLyoqIEB0eXBlIHtXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1vZGVsLkZpbGVTeXN0ZW19ICov
IGV2ZW50LmRhdGE7CisgICAgICAgIHZhciBmaWxlU3lzdGVtVHJlZUVsZW1lbnQgPSBuZXcgV2Vi
SW5zcGVjdG9yLkZpbGVTeXN0ZW1UcmVlRWxlbWVudCh0aGlzLl9zdG9yYWdlUGFuZWwsIGZpbGVT
eXN0ZW0pOworICAgICAgICB0aGlzLmFwcGVuZENoaWxkKGZpbGVTeXN0ZW1UcmVlRWxlbWVudCk7
CisgICAgfSwKKworICAgIF9maWxlU3lzdGVtUmVtb3ZlZDogZnVuY3Rpb24oZXZlbnQpCisgICAg
eworICAgICAgICB2YXIgZmlsZVN5c3RlbSA9IC8qKiBAdHlwZSB7V2ViSW5zcGVjdG9yLkZpbGVT
eXN0ZW1Nb2RlbC5GaWxlU3lzdGVtfSAqLyBldmVudC5kYXRhOworICAgICAgICB2YXIgZmlsZVN5
c3RlbVRyZWVFbGVtZW50ID0gdGhpcy5fZmlsZVN5c3RlbVRyZWVFbGVtZW50QnlOYW1lKGZpbGVT
eXN0ZW0ubmFtZSk7CisgICAgICAgIGlmICghZmlsZVN5c3RlbVRyZWVFbGVtZW50KQorICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICBmaWxlU3lzdGVtVHJlZUVsZW1lbnQuY2xlYXIoKTsKKyAg
ICAgICAgdGhpcy5yZW1vdmVDaGlsZChmaWxlU3lzdGVtVHJlZUVsZW1lbnQpOworICAgIH0sCisK
KyAgICBfZmlsZVN5c3RlbVRyZWVFbGVtZW50QnlOYW1lOiBmdW5jdGlvbihmaWxlU3lzdGVtTmFt
ZSkKKyAgICB7CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5jaGlsZHJlbi5sZW5n
dGg7ICsraSkgeworICAgICAgICAgICAgdmFyIGNoaWxkID0gLyoqIEB0eXBlIHtXZWJJbnNwZWN0
b3IuRmlsZVN5c3RlbVRyZWVFbGVtZW50fSAqLyB0aGlzLmNoaWxkcmVuW2ldOworICAgICAgICAg
ICAgaWYgKGNoaWxkLmZpbGVTeXN0ZW1OYW1lID09PSBmaWxlU3lzdGVtTmFtZSkKKyAgICAgICAg
ICAgICAgICByZXR1cm4gdGhpcy5jaGlsZHJlbltpXTsKKyAgICAgICAgfQorICAgICAgICByZXR1
cm4gbnVsbDsKKyAgICB9LAorCisgICAgcmVmcmVzaEZpbGVTeXN0ZW06IGZ1bmN0aW9uKCkKKyAg
ICB7CisgICAgICAgIGlmICghdGhpcy5fZmlsZVN5c3RlbU1vZGVsKSB7CisgICAgICAgICAgICB0
aGlzLl9maWxlU3lzdGVtTW9kZWwgPSBuZXcgV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbCgp
OworICAgICAgICAgICAgdGhpcy5fZmlsZVN5c3RlbU1vZGVsLmFkZEV2ZW50TGlzdGVuZXIoV2Vi
SW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbC5FdmVudFR5cGVzLkZpbGVTeXN0ZW1BZGRlZCwgdGhp
cy5fZmlsZVN5c3RlbUFkZGVkLCB0aGlzKTsKKyAgICAgICAgICAgIHRoaXMuX2ZpbGVTeXN0ZW1N
b2RlbC5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtTW9kZWwuRXZlbnRU
eXBlcy5GaWxlU3lzdGVtUmVtb3ZlZCwgdGhpcy5fZmlsZVN5c3RlbVJlbW92ZWQsIHRoaXMpOwor
ICAgICAgICB9CisKKyAgICAgICAgdGhpcy5fZmlsZVN5c3RlbU1vZGVsLnJlZnJlc2hGaWxlU3lz
dGVtTGlzdCgpOworICAgIH0KK30KKworV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1MaXN0VHJlZUVs
ZW1lbnQucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5TdG9yYWdlQ2F0ZWdvcnlU
cmVlRWxlbWVudC5wcm90b3R5cGU7CisKKy8qKgorICogQGNvbnN0cnVjdG9yCiAgKiBAZXh0ZW5k
cyB7V2ViSW5zcGVjdG9yLkJhc2VTdG9yYWdlVHJlZUVsZW1lbnR9CiAgKiBAcGFyYW0ge1dlYklu
c3BlY3Rvci5SZXNvdXJjZXNQYW5lbH0gc3RvcmFnZVBhbmVsCiAgKiBAcGFyYW0ge1dlYkluc3Bl
Y3Rvci5JbmRleGVkREJNb2RlbH0gbW9kZWwKQEAgLTE4NzgsNiArMTk2NCw3MSBAQCBXZWJJbnNw
ZWN0b3IuQXBwbGljYXRpb25DYWNoZUZyYW1lVHJlZUVsZW1lbnQucHJvdG90eXBlLl9fcHJvdG9f
XyA9IFdlYkluc3BlY3RvcgogCiAvKioKICAqIEBjb25zdHJ1Y3RvcgorICogQGV4dGVuZHMge1dl
Ykluc3BlY3Rvci5CYXNlU3RvcmFnZVRyZWVFbGVtZW50fQorICogQHBhcmFtIHtXZWJJbnNwZWN0
b3IuUmVzb3VyY2VzUGFuZWx9IHN0b3JhZ2VQYW5lbAorICogQHBhcmFtIHtXZWJJbnNwZWN0b3Iu
RmlsZVN5c3RlbU1vZGVsLkZpbGVTeXN0ZW19IGZpbGVTeXN0ZW0KKyAqLworV2ViSW5zcGVjdG9y
LkZpbGVTeXN0ZW1UcmVlRWxlbWVudCA9IGZ1bmN0aW9uKHN0b3JhZ2VQYW5lbCwgZmlsZVN5c3Rl
bSkKK3sKKyAgICB2YXIgZGlzcGxheU5hbWUgPSBmaWxlU3lzdGVtLnR5cGUgKyAiIC0gIiArIGZp
bGVTeXN0ZW0ub3JpZ2luOworICAgIFdlYkluc3BlY3Rvci5CYXNlU3RvcmFnZVRyZWVFbGVtZW50
LmNhbGwodGhpcywgc3RvcmFnZVBhbmVsLCBudWxsLCBkaXNwbGF5TmFtZSwgWyJmaWxlc3lzdGVt
LXN0b3JhZ2UtdHJlZS1pdGVtIl0pOworICAgIHRoaXMuX2ZpbGVTeXN0ZW0gPSBmaWxlU3lzdGVt
OworfQorCitXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsK
KyAgICBnZXQgZmlsZVN5c3RlbU5hbWUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX2Zp
bGVTeXN0ZW0ubmFtZTsKKyAgICB9LAorCisgICAgZ2V0IGl0ZW1VUkwoKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuICJmaWxlc3lzdGVtOi8vIiArIHRoaXMuX2ZpbGVTeXN0ZW0ubmFtZTsKKyAgICB9
LAorCisgICAgb25hdHRhY2g6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIFdlYkluc3BlY3Rv
ci5CYXNlU3RvcmFnZVRyZWVFbGVtZW50LnByb3RvdHlwZS5vbmF0dGFjaC5jYWxsKHRoaXMpOwor
ICAgICAgICB0aGlzLmxpc3RJdGVtRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJjb250ZXh0bWVu
dSIsIHRoaXMuX2hhbmRsZUNvbnRleHRNZW51RXZlbnQuYmluZCh0aGlzKSwgdHJ1ZSk7CisgICAg
fSwKKworICAgIF9oYW5kbGVDb250ZXh0TWVudUV2ZW50OiBmdW5jdGlvbihldmVudCkKKyAgICB7
CisgICAgICAgIHZhciBjb250ZXh0TWVudSA9IG5ldyBXZWJJbnNwZWN0b3IuQ29udGV4dE1lbnUo
KTsKKyAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kSXRlbShXZWJJbnNwZWN0b3IuVUlTdHJpbmco
IlJlZnJlc2ggRmlsZVN5c3RlbSBWaWV3IiksIHRoaXMuX3JlZnJlc2hGaWxlU3lzdGVtLmJpbmQo
dGhpcykpOworICAgICAgICBjb250ZXh0TWVudS5zaG93KGV2ZW50KTsKKyAgICB9LAorCisgICAg
X3JlZnJlc2hGaWxlU3lzdGVtOiBmdW5jdGlvbihldmVudCkKKyAgICB7CisgICAgICAgIGlmICgh
dGhpcy5fZmlsZVN5c3RlbVZpZXcpCisgICAgICAgICAgICB0aGlzLl9maWxlU3lzdGVtVmlldy5y
ZWZyZXNoKCk7CisgICAgfSwKKworICAgIG9uc2VsZWN0OiBmdW5jdGlvbigpCisgICAgeworICAg
ICAgICBXZWJJbnNwZWN0b3IuQmFzZVN0b3JhZ2VUcmVlRWxlbWVudC5wcm90b3R5cGUub25zZWxl
Y3QuY2FsbCh0aGlzKTsKKyAgICAgICAgaWYgKCF0aGlzLl9maWxlU3lzdGVtVmlldykgeworICAg
ICAgICAgICAgaWYgKCFXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbVZpZXcpIHsKKyAgICAgICAgICAg
ICAgICBjb25zb2xlLndhcm4oIkZpbGVTeXN0ZW1WaWV3IGlzIG5vdCBhdmFpbGFibGUuIik7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICAgdGhpcy5f
ZmlsZVN5c3RlbVZpZXcgPSBuZXcgV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1WaWV3KHRoaXMuX2Zp
bGVTeXN0ZW0pOworICAgICAgICB9CisgICAgICAgIHRoaXMuX3N0b3JhZ2VQYW5lbC5zaG93Rmls
ZVN5c3RlbSh0aGlzLl9maWxlU3lzdGVtVmlldyk7CisgICAgfSwKKworICAgIGNsZWFyOiBmdW5j
dGlvbigpCisgICAgeworICAgICAgICBpZiAodGhpcy5maWxlU3lzdGVtVmlldyAmJiB0aGlzLl9z
dG9yYWdlUGFuZWwudmlzaWJsZVZpZXcgPT0gdGhpcy5maWxlU3lzdGVtVmlldykKKyAgICAgICAg
ICAgIHRoaXMuX3N0b3JhZ2VQYW5lbC5jbG9zZVZpc2libGVWaWV3KCk7CisgICAgfQorfQorCitX
ZWJJbnNwZWN0b3IuRmlsZVN5c3RlbVRyZWVFbGVtZW50LnByb3RvdHlwZS5fX3Byb3RvX18gPSBX
ZWJJbnNwZWN0b3IuQmFzZVN0b3JhZ2VUcmVlRWxlbWVudC5wcm90b3R5cGU7CisKKy8qKgorICog
QGNvbnN0cnVjdG9yCiAgKiBAZXh0ZW5kcyB7V2ViSW5zcGVjdG9yLlZpZXd9CiAgKi8KIFdlYklu
c3BlY3Rvci5TdG9yYWdlQ2F0ZWdvcnlWaWV3ID0gZnVuY3Rpb24oKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TZXR0aW5ncy5qcyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2V0dGluZ3MuanMKaW5kZXggNGUzYTIyNzMxZDA5ODJh
Njc4Njk4OGNmZWU4MzkwMTYwMzU4NDAwMS4uNGIzMGYwNGNhZjE0ZWIwNzBlNGE1YmFkMzA3YTFi
MzNmYjZjMDg1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9TZXR0aW5ncy5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Nl
dHRpbmdzLmpzCkBAIC00NCw3ICs0NCw4IEBAIHZhciBQcmVmZXJlbmNlcyA9IHsKICAgICBleHBv
c2VXb3JrZXJzSW5zcGVjdGlvbjogZmFsc2UsCiAgICAgYXBwbGljYXRpb25UaXRsZTogIldlYiBJ
bnNwZWN0b3IgLSAlcyIsCiAgICAgc2hvd0hlYXBTbmFwc2hvdE9iamVjdHNIaWRkZW5Qcm9wZXJ0
aWVzOiBmYWxzZSwKLSAgICBzaG93RG9ja1RvUmlnaHQ6IGZhbHNlCisgICAgc2hvd0RvY2tUb1Jp
Z2h0OiBmYWxzZSwKKyAgICBleHBvc2VGaWxlU3lzdGVtSW5zcGVjdGlvbjogZmFsc2UKIH0KIAog
dmFyIENhcGFiaWxpdGllcyA9IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvV2ViS2l0LnFyYyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvV2ViS2l0LnFyYwppbmRleCA1NDg4OTdlMzEzODYyMGZkMmQ5ZjhjMjMyN2NjNmEyODJmYzdl
MWQ4Li5jNzI4ZTg1ZjRiZmViMjUwNjcyMGJkNjViZDZhNjk3MDBjYzY5MTUyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1dlYktpdC5xcmMKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9XZWJLaXQucXJjCkBAIC01OCw2ICs1OCw4
IEBACiAgICAgPGZpbGU+RXh0ZW5zaW9uUmVnaXN0cnlTdHViLmpzPC9maWxlPgogICAgIDxmaWxl
PkV4dGVuc2lvblNlcnZlci5qczwvZmlsZT4KICAgICA8ZmlsZT5GaWxlTWFuYWdlci5qczwvZmls
ZT4KKyAgICA8ZmlsZT5GaWxlU3lzdGVtTW9kZWwuanM8L2ZpbGU+CisgICAgPGZpbGU+RmlsZVN5
c3RlbVZpZXcuanM8L2ZpbGU+CiAgICAgPGZpbGU+RmlsdGVyZWRJdGVtU2VsZWN0aW9uRGlhbG9n
LmpzPC9maWxlPgogICAgIDxmaWxlPkZvbnRWaWV3LmpzPC9maWxlPgogICAgIDxmaWxlPkdvVG9M
aW5lRGlhbG9nLmpzPC9maWxlPgpAQCAtMjQxLDYgKzI0Myw3IEBACiAgICAgPGZpbGU+SW1hZ2Vz
L2Vycm9ySWNvbi5wbmc8L2ZpbGU+CiAgICAgPGZpbGU+SW1hZ2VzL2Vycm9yTWVkaXVtSWNvbi5w
bmc8L2ZpbGU+CiAgICAgPGZpbGU+SW1hZ2VzL2Vycm9yUmVkRG90LnBuZzwvZmlsZT4KKyAgICA8
ZmlsZT5JbWFnZXMvZmlsZXN5c3RlbS5wbmc8L2ZpbGU+CiAgICAgPGZpbGU+SW1hZ2VzL2Zvcndh
cmQucG5nPC9maWxlPgogICAgIDxmaWxlPkltYWdlcy9mcmFtZS5wbmc8L2ZpbGU+CiAgICAgPGZp
bGU+SW1hZ2VzL2dsb3NzeUhlYWRlci5wbmc8L2ZpbGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5odG1sIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuaHRtbAppbmRleCBhYzUxNmY3NWYzODI2MGU3
ZmY5ZjNlM2QzYjhjMjNlNWU0OTUzY2FmLi5jNTIzOGYzYTBmYWRhNTQzMGY5N2JiMDQxNzYyM2Uz
MmU3Y2VmNzVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L2luc3BlY3Rvci5odG1sCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
aW5zcGVjdG9yLmh0bWwKQEAgLTE2MCw2ICsxNjAsOCBAQCBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICAgIDxzY3JpcHQg
dHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IlNvdXJjZUNTU1Rva2VuaXplci5qcyI+PC9zY3Jp
cHQ+CiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iU291cmNlSFRNTFRv
a2VuaXplci5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQi
IHNyYz0iU291cmNlSmF2YVNjcmlwdFRva2VuaXplci5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlw
dCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iRmlsZVN5c3RlbU1vZGVsLmpzIj48L3Njcmlw
dD4KKyAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJGaWxlU3lzdGVtVmll
dy5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0i
Rm9udFZpZXcuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0
IiBzcmM9IkltYWdlVmlldy5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2ph
dmFzY3JpcHQiIHNyYz0iRGF0YWJhc2VUYWJsZVZpZXcuanMiPjwvc2NyaXB0PgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9yZXNvdXJjZXNQYW5lbC5jc3Mg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL3Jlc291cmNlc1BhbmVsLmNzcwpp
bmRleCA0ZDZjYTJiMTI5ZDUzZjY1MjRkNWJiZjZmZGJkMDlhYzEyYWMwYmQ0Li5iZmJmOTMwNmE1
NjA0YzA0YmQwNDJiYzVhZjVkMWI0NTFjNTA0OGQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL3Jlc291cmNlc1BhbmVsLmNzcworKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL3Jlc291cmNlc1BhbmVsLmNzcwpAQCAtMzI2LDcgKzMy
NiwxNiBAQCBsaS5zZWxlY3RlZCAuYmFzZS1zdG9yYWdlLXRyZWUtZWxlbWVudC1zdWJ0aXRsZSB7
CiAgICAgY29udGVudDogdXJsKEltYWdlcy9hcHBsaWNhdGlvbkNhY2hlLnBuZyk7CiB9CiAKLS8q
IEZJWE1FOiBNYWtlIHNlcGFyYXRlIHBuZyBmb3IgZmlsZS1zeXN0ZW0gKi8KLS5maWxlLXN5c3Rl
bS1zdG9yYWdlLXRyZWUtaXRlbSAuaWNvbiB7Ci0gICAgY29udGVudDogdXJsKEltYWdlcy9hcHBs
aWNhdGlvbkNhY2hlLnBuZyk7CisuZmlsZXN5c3RlbS1zdG9yYWdlLXRyZWUtaXRlbSAuaWNvbiB7
CisgICAgY29udGVudDogdXJsKEltYWdlcy9maWxlc3lzdGVtLnBuZyk7Cit9CisKKy5maWxlc3lz
dGVtLWRpcmVjdG9yeS10cmVlIGxpIHsKKyAgICBvdmVyZmxvdzogaGlkZGVuOworICAgIHRleHQt
b3ZlcmZsb3c6IGVsbGlwc2lzOworfQorCisuZmlsZS1jb250ZW50LXZpZXcgeworICAgIG92ZXJm
bG93OiBoaWRkZW47CisgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL3V0aWxpdGllcy5qcyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvdXRpbGl0aWVzLmpzCmluZGV4IDFkNzIyNWIy
NmY4YmViZTNjOTBkYzllNGY1ZTg1YmQwMGJlZThkZjcuLmI1OWRhYWMzOTJiYzc0OGEwYWRiMzc5
YzAzZDI2NWY2MDVjMWVmMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvdXRpbGl0aWVzLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvdXRpbGl0aWVzLmpzCkBAIC02NzUsNCArNjc1LDM1IEBAIE1hcC5wcm90b3R5cGUgPSB7
CiAgICAgewogICAgICAgICB0aGlzLl9tYXAgPSB7fTsKICAgICB9Ci19Cit9OworCisoZnVuY3Rp
b24oKSB7Cit2YXIgb2JqZWN0UHJvdG90eXBlID0gLyoqIEB0eXBlIHshT2JqZWN0fSAqLyBPYmpl
Y3QucHJvdG90eXBlOworCitPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqZWN0UHJvdG90eXBlLCAi
aXNFbXB0eSIsCit7CisgICAgLyoqCisgICAgICogQHRoaXMgeyp9CisgICAgICogQHJldHVybnMg
e2Jvb2xlYW59CisgICAgICovCisgICAgdmFsdWU6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAg
IGZvciAodmFyIGkgaW4gdGhpcykKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgfQorfSk7CisKK09iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmplY3RQ
cm90b3R5cGUsICJhbnlPZiIsCit7CisgICAgLyoqCisgICAgICogQHRoaXMgeyp9CisgICAgICov
CisgICAgdmFsdWU6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIGZvciAodmFyIGkgaW4gdGhp
cykKKyAgICAgICAgICAgIHJldHVybiB0aGlzW2ldOworICAgICAgICByZXR1cm4gdGhpc1tpXTsK
KyAgICB9Cit9KTsKK30pKCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>143444</attachid>
            <date>2012-05-22 20:32:51 -0700</date>
            <delta_ts>2012-05-22 20:32:51 -0700</delta_ts>
            <desc>Screenshot</desc>
            <filename>Screenshot.png</filename>
            <type>image/png</type>
            <size>59182</size>
            <attacher name="Taiju Tsuiki">tzik</attacher>
            
              <data encoding="base64">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
gGc6TVFhATffdB19igpJpVL76+ytPwMyMkJkZIRIpVIkEkkcpyNYB+B2HidgGJ0/DwwDj9mxxd3r
9RxwxothmL2u74LBAMHgsV2uk0wmidt2x+pb04Pf/9lYjfzhdvOeVsAXFORzwdTp+3+m9RSIS6XS
OI6Dz+fF5/N1/i7qnd+vIiIiInKQ94kn6o/+D7fTaNtg1z/25cQ6kjc/pmliWRaWZZEViajzjoHH
46FPURF9iorUGccwd/1+P37/4ef/8Ofsx29M1s/dj/2S83oVDPlf4PP5PtPz8HD+oeZg//Dg92uO
iIiIiMhhvOdTF4iIiIiIiIiIiJxcFLQTERERERERERE5yShoJyIiIiIiIiIicpLpctDPN675tnpF
RERERERERETkf8mAosyuQbuKe5aoZ0Q+o1a/+mfmzJmjjhARERERERE5id00f662x4qIiIiIiIiI
iJxsFLQTERERERERERE5yShoJyIiIiIiIiIicpLxnsjKt61exZo/PtglffRFV1M2Zop6X0RERERE
REREpBsnNGi35o8PcsOCfwMgIyMDgA+2vsNjv3lQQTsREREREREREZEenLCg3bbVqyjoP4Qdb/8d
AMNwADCdOCV9s3jijtndltMqPBERERERERER6e2OOGj3xO9+w9rVb3X72qx/uYLRZ44FOlbZ3f6z
H4IL4OK6nZlcGHF+5yduZ3rni4m6Hdx914Occe4Moq3tHXnqnuOrkxZQX1ZCBIAA/crv5f/OG6LR
ExERERERERGRz6QjDtpdMO1i1q9djeM4B6SHMjIYecaYA9Jc18VwUoCL4TrgOuA4nR+nMZx0Z1oa
AHvPpu4fWnI59z21mGGWBkxERERERERERD77jjhol52dw7izz+G1v79yQPrlX5uLx+M5MLMDOKmO
wFxnwA43jZFq60h3Uh0BOzd95C3fVsFlt5fwzUkv8fCKOoZ+/wl+UPYSC29awnYbsJth1GKW/mgy
kW0VXHxTLWeV1rFlcy2l868hvPI5tlTtwpr9KEtn9wdqeeWOm3lgO1h2FEbdxt23TiBib+RX8xew
yo4QwcY/aTH3zB+B4ociIiIiIiIiInKiHNWZdpPPv5B/vPkGyWQC6AjkDTnltC75XNfFSCfBdTpW
1X08WOemOwN2DtitB39g1eN8d/YawgBEGPn9B7ktAtG1S1g1+0keWtG/M4g2jYrl0zoL7eJXM27m
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
AnsVxgAAAABJRU5ErkJggg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>143709</attachid>
            <date>2012-05-23 19:47:06 -0700</date>
            <delta_ts>2012-06-06 22:28:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-72691-20120524114705.patch</filename>
            <type>text/plain</type>
            <size>29513</size>
            <attacher name="Taiju Tsuiki">tzik</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE4Mjg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggZGFlNDFhZjdm
ZTYwMWEyZjg4YmU2Mjg4MzNiNDU0NWQ4Y2EzY2UyZS4uNjZhNGI5ODY3MTU4MGEwNTA2NTI1NmY1
ZTZmYTMzMGFmNzI5NWJlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBp
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtNjM5Nyw2ICs2Mzk3LDggQEAK
ICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0V4dGVuc2lvblJlZ2lzdHJ5U3R1Yi5q
cycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9FeHRlbnNpb25TZXJ2ZXIuanMn
LAogICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvRmlsZU1hbmFnZXIuanMnLAorICAg
ICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvRmlsZVN5c3RlbU1vZGVsLmpzJywKKyAgICAg
ICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0ZpbGVTeXN0ZW1WaWV3LmpzJywKICAgICAgICAg
ICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0ZpbHRlcmVkSXRlbVNlbGVjdGlvbkRpYWxvZy5qcycs
CiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9Gb250Vmlldy5qcycsCiAgICAgICAg
ICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9Hb1RvTGluZURpYWxvZy5qcycsCkBAIC02NTg4LDYg
KzY1OTAsNyBAQAogICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvSW1hZ2VzL2Vycm9y
TWVkaXVtSWNvbi5wbmcnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvSW1hZ2Vz
L2Vycm9yUmVkRG90LnBuZycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9JbWFn
ZXMvZm9yd2FyZC5wbmcnLAorICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvSW1hZ2Vz
L2ZpbGVzeXN0ZW0ucG5nJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0ltYWdl
cy9mcmFtZS5wbmcnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvSW1hZ2VzL2ds
b3NzeUhlYWRlci5wbmcnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvSW1hZ2Vz
L2dsb3NzeUhlYWRlclByZXNzZWQucG5nJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3By
b2ovV2ViQ29yZS52Y3Byb2oKaW5kZXggZWZjZTRhMDdhYmY5N2EwYmE4YTZlN2RlOTI5MWM4NjEz
YzdhNzhlZC4uMzk3YjA1ZDkxNjA0NWY3OTFlZGJhMzhlMmU1NDQ3ODExMjE0NDMyZSAxMDA3NTUK
LS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKKysrIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKQEAgLTc0MzkzLDYg
Kzc0MzkzLDE0IEBACiAJCQkJCT4KIAkJCQk8L0ZpbGU+CiAJCQkJPEZpbGUKKwkJCQkJUmVsYXRp
dmVQYXRoPSIuLlxpbnNwZWN0b3JcZnJvbnQtZW5kXEZpbGVTeXN0ZW1Nb2RlbC5qcyIKKwkJCQkJ
PgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGluc3BlY3Rv
clxmcm9udC1lbmRcRmlsZVN5c3RlbVZpZXcuanMiCisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJCQkJ
PEZpbGUKIAkJCQkJUmVsYXRpdmVQYXRoPSIuLlxpbnNwZWN0b3JcZnJvbnQtZW5kXGZpbHRlcmVk
SXRlbVNlbGVjdGlvbkRpYWxvZy5jc3MiCiAJCQkJCT4KIAkJCQk8L0ZpbGU+CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvY29tcGlsZS1mcm9udC1lbmQucHkgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvY29tcGlsZS1mcm9udC1lbmQucHkKaW5kZXggNGE3YTkzYjgwZDAz
ZTM0NmUwNGY3NDZhZDBmNGNhZTc1M2Y5MWZjMC4uYWZlOTlhMGZmNDBjZjMwOGZiOGVlMGQwNTFh
NmJjMDBjNTAxMWEyZSAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2NvbXBp
bGUtZnJvbnQtZW5kLnB5CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9jb21waWxlLWZy
b250LWVuZC5weQpAQCAtNzYsNiArNzYsNyBAQCBtb2R1bGVzID0gWwogICAgICAgICAgICAgIkRl
YnVnZ2VyUmVzb3VyY2VCaW5kaW5nLmpzIiwKICAgICAgICAgICAgICJEZWJ1Z2dlclNjcmlwdE1h
cHBpbmcuanMiLAogICAgICAgICAgICAgIkZpbGVNYW5hZ2VyLmpzIiwKKyAgICAgICAgICAgICJG
aWxlU3lzdGVtTW9kZWwuanMiLAogICAgICAgICAgICAgIkhBUkVudHJ5LmpzIiwKICAgICAgICAg
ICAgICJJbmRleGVkREJNb2RlbC5qcyIsCiAgICAgICAgICAgICAiTGlua2lmaWVyLmpzIiwKQEAg
LTIwNCw2ICsyMDUsNyBAQCBtb2R1bGVzID0gWwogICAgICAgICAgICAgIkRhdGFiYXNlUXVlcnlW
aWV3LmpzIiwKICAgICAgICAgICAgICJEYXRhYmFzZVRhYmxlVmlldy5qcyIsCiAgICAgICAgICAg
ICAiRE9NU3RvcmFnZUl0ZW1zVmlldy5qcyIsCisgICAgICAgICAgICAiRmlsZVN5c3RlbVZpZXcu
anMiLAogICAgICAgICAgICAgIkluZGV4ZWREQlZpZXdzLmpzIiwKICAgICAgICAgICAgICJSZXNv
dXJjZXNQYW5lbC5qcyIsCiAgICAgICAgIF0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvRmlsZVN5c3RlbU1vZGVsLmpzIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9GaWxlU3lzdGVtTW9kZWwuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmQyNDhiOGQ1
OTI1MTA0Yjc3OTJkN2E5ZWFjYTU0NjBjNTUyNGQ1ZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRmlsZVN5c3RlbU1vZGVsLmpzCkBAIC0wLDAg
KzEsMzQwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6
CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIK
KyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2Yg
R29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworLyoqCisgKiBAY29uc3RydWN0b3IKKyAqIEBleHRlbmRzIHtXZWJJbnNwZWN0b3Iu
T2JqZWN0fQorICogQGltcGxlbWVudHMge0ZpbGVTeXN0ZW1BZ2VudC5EaXNwYXRjaGVyfQorICov
CitXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1vZGVsID0gZnVuY3Rpb24oKQoreworICAgIFdlYklu
c3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsKKworICAgIHRoaXMuX29yaWdpbkZvckZyYW1lSWQg
PSB7fTsKKyAgICB0aGlzLl9mcmFtZUlkc0Zvck9yaWdpbiA9IHt9OworICAgIHRoaXMuX2ZpbGVT
eXN0ZW1zRm9yT3JpZ2luID0ge307CisKKyAgICB0aGlzLl9wZW5kaW5nUmVhZERpcmVjdG9yeVJl
cXVlc3RzID0ge307CisKKyAgICBXZWJJbnNwZWN0b3IucmVzb3VyY2VUcmVlTW9kZWwuYWRkRXZl
bnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuUmVzb3VyY2VUcmVlTW9kZWwuRXZlbnRUeXBlcy5GcmFt
ZUFkZGVkLCB0aGlzLl9mcmFtZUFkZGVkLCB0aGlzKTsKKyAgICBXZWJJbnNwZWN0b3IucmVzb3Vy
Y2VUcmVlTW9kZWwuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuUmVzb3VyY2VUcmVlTW9k
ZWwuRXZlbnRUeXBlcy5GcmFtZU5hdmlnYXRlZCwgdGhpcy5fZnJhbWVOYXZpZ2F0ZWQsIHRoaXMp
OworICAgIFdlYkluc3BlY3Rvci5yZXNvdXJjZVRyZWVNb2RlbC5hZGRFdmVudExpc3RlbmVyKFdl
Ykluc3BlY3Rvci5SZXNvdXJjZVRyZWVNb2RlbC5FdmVudFR5cGVzLkZyYW1lRGV0YWNoZWQsIHRo
aXMuX2ZyYW1lRGV0YWNoZWQsIHRoaXMpOworCisgICAgSW5zcGVjdG9yQmFja2VuZC5yZWdpc3Rl
ckZpbGVTeXN0ZW1EaXNwYXRjaGVyKHRoaXMpOworICAgIEZpbGVTeXN0ZW1BZ2VudC5lbmFibGUo
KTsKKworICAgIGlmIChXZWJJbnNwZWN0b3IucmVzb3VyY2VUcmVlTW9kZWwubWFpbkZyYW1lKQor
ICAgICAgICB0aGlzLl9hdHRhY2hGcmFtZVJlY3Vyc2l2ZWx5KFdlYkluc3BlY3Rvci5yZXNvdXJj
ZVRyZWVNb2RlbC5tYWluRnJhbWUpOworfQorCitXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1vZGVs
LnByb3RvdHlwZSA9IHsKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5FdmVu
dH0gZXZlbnQKKyAgICAgKi8KKyAgICBfZnJhbWVBZGRlZDogZnVuY3Rpb24oZXZlbnQpCisgICAg
eworICAgICAgICB2YXIgZnJhbWUgPSAvKiogQHR5cGUge1dlYkluc3BlY3Rvci5SZXNvdXJjZVRy
ZWVGcmFtZX0gKi8gZXZlbnQuZGF0YTsKKyAgICAgICAgdGhpcy5fYXR0YWNoRnJhbWVSZWN1cnNp
dmVseShmcmFtZSk7CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7V2ViSW5zcGVj
dG9yLkV2ZW50fSBldmVudAorICAgICAqLworICAgIF9mcmFtZU5hdmlnYXRlZDogZnVuY3Rpb24o
ZXZlbnQpCisgICAgeworICAgICAgICB2YXIgZnJhbWUgPSAvKiogQHR5cGUge1dlYkluc3BlY3Rv
ci5SZXNvdXJjZVRyZWVGcmFtZX0gKi8gZXZlbnQuZGF0YTsKKyAgICAgICAgdGhpcy5fYXR0YWNo
RnJhbWVSZWN1cnNpdmVseShmcmFtZSk7CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEBwYXJh
bSB7V2ViSW5zcGVjdG9yLkV2ZW50fSBldmVudAorICAgICAqLworICAgIF9mcmFtZURldGFjaGVk
OiBmdW5jdGlvbihldmVudCkKKyAgICB7CisgICAgICAgIHZhciBmcmFtZSA9IC8qKiBAdHlwZSB7
V2ViSW5zcGVjdG9yLlJlc291cmNlVHJlZUZyYW1lfSAqLyBldmVudC5kYXRhOworICAgICAgICB0
aGlzLl9kZXRhY2hGcmFtZVJlY3Vyc2l2ZWx5KGZyYW1lKTsKKyAgICB9LAorCisgICAgLyoqCisg
ICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuUmVzb3VyY2VUcmVlRnJhbWV9IGZyYW1lCisgICAg
ICovCisgICAgX2F0dGFjaEZyYW1lOiBmdW5jdGlvbihmcmFtZSkKKyAgICB7CisgICAgICAgIGlm
ICh0aGlzLl9vcmlnaW5Gb3JGcmFtZUlkW2ZyYW1lLmlkXSkKKyAgICAgICAgICAgIHRoaXMuX2Rl
dGFjaEZyYW1lUmVjdXJzaXZlbHkoZnJhbWUpOworCisgICAgICAgIGlmIChmcmFtZS5zZWN1cml0
eU9yaWdpbiA9PSAibnVsbCIpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgdGhpcy5f
b3JpZ2luRm9yRnJhbWVJZFtmcmFtZS5pZF0gPSBmcmFtZS5zZWN1cml0eU9yaWdpbjsKKworICAg
ICAgICB2YXIgbmV3X29yaWdpbiA9IGZhbHNlOworICAgICAgICBpZiAoIXRoaXMuX2ZyYW1lSWRz
Rm9yT3JpZ2luW2ZyYW1lLnNlY3VyaXR5T3JpZ2luXSkgeworICAgICAgICAgICAgdGhpcy5fZnJh
bWVJZHNGb3JPcmlnaW5bZnJhbWUuc2VjdXJpdHlPcmlnaW5dID0ge307CisgICAgICAgICAgICBu
ZXdfb3JpZ2luID0gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICB0aGlzLl9mcmFtZUlkc0Zvck9y
aWdpbltmcmFtZS5zZWN1cml0eU9yaWdpbl1bZnJhbWUuaWRdID0gZnJhbWUuaWQ7CisgICAgICAg
IGlmIChuZXdfb3JpZ2luKQorICAgICAgICAgICAgdGhpcy5fb3JpZ2luQWRkZWQoZnJhbWUuc2Vj
dXJpdHlPcmlnaW4pOworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge1dlYkluc3Bl
Y3Rvci5SZXNvdXJjZVRyZWVGcmFtZX0gZnJhbWUKKyAgICAgKi8KKyAgICBfYXR0YWNoRnJhbWVS
ZWN1cnNpdmVseTogZnVuY3Rpb24oZnJhbWUpCisgICAgeworICAgICAgICB0aGlzLl9hdHRhY2hG
cmFtZShmcmFtZSk7CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZnJhbWUuY2hpbGRGcmFt
ZXMubGVuZ3RoOyArK2kpCisgICAgICAgICAgICB0aGlzLl9hdHRhY2hGcmFtZVJlY3Vyc2l2ZWx5
KGZyYW1lLmNoaWxkRnJhbWVzW2ldKTsKKyAgICB9LAorCisgICAgLyoqCisgICAgICogQHBhcmFt
IHtXZWJJbnNwZWN0b3IuUmVzb3VyY2VUcmVlRnJhbWV9IGZyYW1lCisgICAgICovCisgICAgX2Rl
dGFjaEZyYW1lOiBmdW5jdGlvbihmcmFtZSkKKyAgICB7CisgICAgICAgIGlmICghdGhpcy5fb3Jp
Z2luRm9yRnJhbWVJZFtmcmFtZS5pZF0pCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIHZh
ciBvcmlnaW4gPSB0aGlzLl9vcmlnaW5Gb3JGcmFtZUlkW2ZyYW1lLmlkXTsKKyAgICAgICAgZGVs
ZXRlIHRoaXMuX29yaWdpbkZvckZyYW1lSWRbZnJhbWUuaWRdOworICAgICAgICBkZWxldGUgdGhp
cy5fZnJhbWVJZHNGb3JPcmlnaW5bb3JpZ2luXVtmcmFtZS5pZF07CisKKyAgICAgICAgdmFyIGxh
c3Rfb3JpZ2luID0gdGhpcy5fZnJhbWVJZHNGb3JPcmlnaW5bb3JpZ2luXS5pc0VtcHR5KCk7Cisg
ICAgICAgIGlmIChsYXN0X29yaWdpbikgeworICAgICAgICAgICAgZGVsZXRlIHRoaXMuX2ZyYW1l
SWRzRm9yT3JpZ2luW29yaWdpbl07CisgICAgICAgICAgICB0aGlzLl9vcmlnaW5SZW1vdmVkKG9y
aWdpbik7CisgICAgICAgIH0KKyAgICB9LAorCisgICAgLyoqCisgICAgICogQHBhcmFtIHtXZWJJ
bnNwZWN0b3IuUmVzb3VyY2VUcmVlRnJhbWV9IGZyYW1lCisgICAgICovCisgICAgX2RldGFjaEZy
YW1lUmVjdXJzaXZlbHk6IGZ1bmN0aW9uKGZyYW1lKQorICAgIHsKKyAgICAgICAgZm9yICh2YXIg
aSA9IDA7IGkgPCBmcmFtZS5jaGlsZEZyYW1lcy5sZW5ndGg7ICsraSkKKyAgICAgICAgICAgIHRo
aXMuX2RldGFjaEZyYW1lUmVjdXJzaXZlbHkoZnJhbWUuY2hpbGRGcmFtZXNbaV0pOworICAgICAg
ICB0aGlzLl9kZXRhY2hGcmFtZShmcmFtZSk7CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEBw
YXJhbSB7c3RyaW5nfSBvcmlnaW4KKyAgICAgKi8KKyAgICBfb3JpZ2luQWRkZWQ6IGZ1bmN0aW9u
KG9yaWdpbikKKyAgICB7CisgICAgICAgIGlmICghdGhpcy5fZmlsZVN5c3RlbXNGb3JPcmlnaW5b
b3JpZ2luXSkKKyAgICAgICAgICAgIHRoaXMuX2ZpbGVTeXN0ZW1zRm9yT3JpZ2luW29yaWdpbl0g
PSB7fTsKKworICAgICAgICB2YXIgdHlwZXMgPSBbInBlcnNpc3RlbnQiLCAidGVtcG9yYXJ5Il07
CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdHlwZXMubGVuZ3RoOyArK2kpIHsKKyAgICAg
ICAgICAgIGlmICghdGhpcy5fZmlsZVN5c3RlbXNGb3JPcmlnaW5bb3JpZ2luXVt0eXBlc1tpXV0p
IHsKKyAgICAgICAgICAgICAgICB2YXIgZmlsZVN5c3RlbSA9IG5ldyBXZWJJbnNwZWN0b3IuRmls
ZVN5c3RlbU1vZGVsLkZpbGVTeXN0ZW0odGhpcywgb3JpZ2luLCB0eXBlc1tpXSk7CisgICAgICAg
ICAgICAgICAgdGhpcy5fZmlsZVN5c3RlbXNGb3JPcmlnaW5bb3JpZ2luXVt0eXBlc1tpXV0gPSBm
aWxlU3lzdGVtOworICAgICAgICAgICAgICAgIHRoaXMuX2ZpbGVTeXN0ZW1BZGRlZChmaWxlU3lz
dGVtKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0sCisKKyAgICAvKioKKyAgICAg
KiBAcGFyYW0ge3N0cmluZ30gb3JpZ2luCisgICAgICovCisgICAgX29yaWdpblJlbW92ZWQ6IGZ1
bmN0aW9uKG9yaWdpbikKKyAgICB7CisgICAgICAgIGZvciAodmFyIHR5cGUgaW4gdGhpcy5fZmls
ZVN5c3RlbXNGb3JPcmlnaW5bb3JpZ2luXSkgeworICAgICAgICAgICAgdmFyIGZpbGVTeXN0ZW0g
PSB0aGlzLl9maWxlU3lzdGVtc0Zvck9yaWdpbltvcmlnaW5dW3R5cGVdOworICAgICAgICAgICAg
ZGVsZXRlIHRoaXMuX2ZpbGVTeXN0ZW1zRm9yT3JpZ2luW29yaWdpbl1bdHlwZV07CisgICAgICAg
ICAgICB0aGlzLl9maWxlU3lzdGVtUmVtb3ZlZChmaWxlU3lzdGVtKTsKKyAgICAgICAgfQorICAg
ICAgICBkZWxldGUgdGhpcy5fZmlsZVN5c3RlbXNGb3JPcmlnaW5bb3JpZ2luXTsKKyAgICB9LAor
CisgICAgLyoqCisgICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1vZGVsLkZp
bGVTeXN0ZW19IGZpbGVTeXN0ZW0KKyAgICAgKi8KKyAgICBfZmlsZVN5c3RlbUFkZGVkOiBmdW5j
dGlvbihmaWxlU3lzdGVtKQorICAgIHsKKyAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0
ZW5lcnMoV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbC5FdmVudFR5cGVzLkZpbGVTeXN0ZW1B
ZGRlZCwgZmlsZVN5c3RlbSk7CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7V2Vi
SW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbC5GaWxlU3lzdGVtfSBmaWxlU3lzdGVtCisgICAgICov
CisgICAgX2ZpbGVTeXN0ZW1SZW1vdmVkOiBmdW5jdGlvbihmaWxlU3lzdGVtKQorICAgIHsKKyAg
ICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLkZpbGVTeXN0
ZW1Nb2RlbC5FdmVudFR5cGVzLkZpbGVTeXN0ZW1SZW1vdmVkLCBmaWxlU3lzdGVtKTsKKyAgICB9
LAorCisgICAgcmVmcmVzaEZpbGVTeXN0ZW1MaXN0OiBmdW5jdGlvbigpCisgICAgeworICAgICAg
ICBpZiAoV2ViSW5zcGVjdG9yLnJlc291cmNlVHJlZU1vZGVsLm1haW5GcmFtZSkgeworICAgICAg
ICAgICAgdGhpcy5fZGV0YWNoRnJhbWVSZWN1cnNpdmVseSgoV2ViSW5zcGVjdG9yLnJlc291cmNl
VHJlZU1vZGVsLm1haW5GcmFtZSkpOworICAgICAgICAgICAgdGhpcy5fYXR0YWNoRnJhbWVSZWN1
cnNpdmVseSgoV2ViSW5zcGVjdG9yLnJlc291cmNlVHJlZU1vZGVsLm1haW5GcmFtZSkpOworICAg
ICAgICB9CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLkZp
bGVTeXN0ZW1Nb2RlbC5EaXJlY3Rvcnl9IGRpcmVjdG9yeQorICAgICAqIEBwYXJhbSB7ZnVuY3Rp
b24obnVtYmVyLCBBcnJheS48V2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbC5EaXJlY3Rvcnk+
KX0gY2FsbGJhY2sKKyAgICAgKi8KKyAgICByZWFkRGlyZWN0b3J5OiBmdW5jdGlvbihkaXJlY3Rv
cnksIGNhbGxiYWNrKQorICAgIHsKKyAgICAgICAgLy8gVE9ETyh0emlrKTogSW1wbGVtZW50IG1l
LgorICAgIH0KK30KKworV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbC5FdmVudFR5cGVzID0g
eworICAgIEZpbGVTeXN0ZW1BZGRlZDogIkZpbGVTeXN0ZW1BZGRlZCIsCisgICAgRmlsZVN5c3Rl
bVJlbW92ZWQ6ICJGaWxlU3lzdGVtUmVtb3ZlZCIKK30KKworV2ViSW5zcGVjdG9yLkZpbGVTeXN0
ZW1Nb2RlbC5uZXh0UmVxdWVzdElkID0gMTsKKworV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2Rl
bC5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLk9iamVjdC5wcm90b3R5cGU7CisK
Ky8qKgorICogQGNvbnN0cnVjdG9yCisgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5GaWxlU3lzdGVt
TW9kZWx9IGZpbGVTeXN0ZW1Nb2RlbAorICogQHBhcmFtIHtzdHJpbmd9IG9yaWdpbgorICogQHBh
cmFtIHtzdHJpbmd9IHR5cGUKKyAqLworV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbC5GaWxl
U3lzdGVtID0gZnVuY3Rpb24oZmlsZVN5c3RlbU1vZGVsLCBvcmlnaW4sIHR5cGUpCit7CisgICAg
dGhpcy5vcmlnaW4gPSBvcmlnaW47CisgICAgdGhpcy50eXBlID0gdHlwZTsKKyAgICB0aGlzLnJv
b3QgPSBuZXcgV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbC5EaXJlY3RvcnkoZmlsZVN5c3Rl
bU1vZGVsLCB0aGlzLCBudWxsLCAiIik7Cit9CisKK1dlYkluc3BlY3Rvci5GaWxlU3lzdGVtTW9k
ZWwuRmlsZVN5c3RlbS5wcm90b3R5cGUgPSB7CisgICAgZ2V0IG5hbWUoKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuICJmaWxlc3lzdGVtOiIgKyB0aGlzLm9yaWdpbiArICIvIiArIHRoaXMudHlwZTsK
KyAgICB9Cit9CisKKy8qKgorICogQGNvbnN0cnVjdG9yCisgKiBAcGFyYW0ge1dlYkluc3BlY3Rv
ci5GaWxlU3lzdGVtTW9kZWx9IGZpbGVTeXN0ZW1Nb2RlbAorICogQHBhcmFtIHtXZWJJbnNwZWN0
b3IuRmlsZVN5c3RlbU1vZGVsLkZpbGVTeXN0ZW19IGZpbGVTeXN0ZW0KKyAqIEBwYXJhbSB7V2Vi
SW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbC5EaXJlY3Rvcnl9IHBhcmVudERpcmVjdG9yeQorICog
QHBhcmFtIHtzdHJpbmd9IG5hbWUKKyAqLworV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbC5F
bnRyeSA9IGZ1bmN0aW9uKGZpbGVTeXN0ZW1Nb2RlbCwgZmlsZVN5c3RlbSwgcGFyZW50RGlyZWN0
b3J5LCBuYW1lKQoreworICAgIHRoaXMuZmlsZVN5c3RlbU1vZGVsID0gZmlsZVN5c3RlbU1vZGVs
OworICAgIHRoaXMuZmlsZVN5c3RlbSA9IGZpbGVTeXN0ZW07CisgICAgdGhpcy5wYXJlbnREaXJl
Y3RvcnkgPSBwYXJlbnREaXJlY3Rvcnk7CisgICAgdGhpcy5uYW1lID0gbmFtZTsKK30KKworV2Vi
SW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbC5FbnRyeS5wcm90b3R5cGUgPSB7CisgICAgZ2V0IHVy
bCgpCisgICAgeworICAgICAgICB2YXIgdXJsOworICAgICAgICBpZiAodGhpcy5wYXJlbnREaXJl
Y3RvcnkpCisgICAgICAgICAgICB1cmwgPSB0aGlzLnBhcmVudERpcmVjdG9yeS51cmwgKyB0aGlz
Lm5hbWU7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHVybCA9IHRoaXMuZmlsZVN5c3RlbS5u
YW1lOworCisgICAgICAgIGlmICh0aGlzLmlzRGlyZWN0b3J5KQorICAgICAgICAgICAgcmV0dXJu
IHVybCArICIvIjsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmV0dXJuIHVybDsKKyAgICB9
Cit9CisKKy8qKgorICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1vZGVsLkRpcmVj
dG9yeX0gcGFyZW50RGlyZWN0b3J5CisgKiBAcGFyYW0ge3N0cmluZ30gdXJsCisgKiBAcmV0dXJu
IHtXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1vZGVsLkRpcmVjdG9yeXxXZWJJbnNwZWN0b3IuRmls
ZVN5c3RlbU1vZGVsLkZpbGV9CisgKi8KK1dlYkluc3BlY3Rvci5GaWxlU3lzdGVtTW9kZWwuRW50
cnkuQ3JlYXRlRW50cnkgPSBmdW5jdGlvbihwYXJlbnREaXJlY3RvcnksIHVybCkKK3sKKyAgICB2
YXIgcGFyZW50VVJMID0gcGFyZW50RGlyZWN0b3J5LnVybDsKKyAgICBpZiAoIXVybC5zdGFydHNX
aXRoKHBhcmVudFVSTCkpCisgICAgICAgIHJldHVybiBudWxsOworICAgIGlmICh1cmxbdXJsLmxl
bmd0aC0xXSA9PSAnLycpIHsKKyAgICAgICAgdmFyIG5hbWUgPSB1cmwuc2xpY2UocGFyZW50VVJM
Lmxlbmd0aCwgLTEpOworICAgICAgICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5GaWxlU3lzdGVt
TW9kZWwuRGlyZWN0b3J5KHBhcmVudERpcmVjdG9yeS5maWxlU3lzdGVtTW9kZWwsIHBhcmVudERp
cmVjdG9yeS5maWxlU3lzdGVtLCBwYXJlbnREaXJlY3RvcnksIG5hbWUpOworICAgIH0gZWxzZSB7
CisgICAgICAgIHZhciBuYW1lID0gdXJsLnNsaWNlKHBhcmVudFVSTC5sZW5ndGgpOworICAgICAg
ICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtTW9kZWwuRmlsZShwYXJlbnREaXJl
Y3RvcnkuZmlsZVN5c3RlbU1vZGVsLCBwYXJlbnREaXJlY3RvcnkuZmlsZVN5c3RlbSwgcGFyZW50
RGlyZWN0b3J5LCBuYW1lKTsKKyAgICB9Cit9CisKKy8qKgorICogQGNvbnN0cnVjdG9yCisgKiBA
ZXh0ZW5kcyB7V2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbC5FbnRyeX0KKyAqIEBwYXJhbSB7
V2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbH0gZmlsZVN5c3RlbU1vZGVsCisgKiBAcGFyYW0g
e1dlYkluc3BlY3Rvci5GaWxlU3lzdGVtTW9kZWwuRmlsZVN5c3RlbX0gZmlsZVN5c3RlbQorICog
QHBhcmFtIHtXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1vZGVsLkRpcmVjdG9yeX0gcGFyZW50RGly
ZWN0b3J5CisgKiBAcGFyYW0ge3N0cmluZ30gbmFtZQorICovCitXZWJJbnNwZWN0b3IuRmlsZVN5
c3RlbU1vZGVsLkZpbGUgPSBmdW5jdGlvbihmaWxlU3lzdGVtTW9kZWwsIGZpbGVTeXN0ZW0sIHBh
cmVudERpcmVjdG9yeSwgbmFtZSkKK3sKKyAgICBXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1vZGVs
LkVudHJ5LmNhbGwodGhpcywgZmlsZVN5c3RlbU1vZGVsLCBmaWxlU3lzdGVtLCBwYXJlbnREaXJl
Y3RvcnksIG5hbWUpOworfQorCitXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1vZGVsLkZpbGUucHJv
dG90eXBlID0geworICAgIGdldCBpc0RpcmVjdG9yeSgpCisgICAgeworICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgfQorfQorCitXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1vZGVsLkZpbGUucHJv
dG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtTW9kZWwuRW50cnkucHJv
dG90eXBlOworCisvKioKKyAqIEBjb25zdHJ1Y3RvcgorICogQGV4dGVuZHMge1dlYkluc3BlY3Rv
ci5GaWxlU3lzdGVtTW9kZWwuRW50cnl9CisgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5GaWxlU3lz
dGVtTW9kZWx9IGZpbGVTeXN0ZW1Nb2RlbAorICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuRmlsZVN5
c3RlbU1vZGVsLkZpbGVTeXN0ZW19IGZpbGVTeXN0ZW0KKyAqIEBwYXJhbSB7V2ViSW5zcGVjdG9y
LkZpbGVTeXN0ZW1Nb2RlbC5EaXJlY3Rvcnl9IHBhcmVudERpcmVjdG9yeQorICogQHBhcmFtIHtz
dHJpbmd9IG5hbWUKKyAqLworV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbC5EaXJlY3Rvcnkg
PSBmdW5jdGlvbihmaWxlU3lzdGVtTW9kZWwsIGZpbGVTeXN0ZW0sIHBhcmVudERpcmVjdG9yeSwg
bmFtZSkKK3sKKyAgICBXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1vZGVsLkVudHJ5LmNhbGwodGhp
cywgZmlsZVN5c3RlbU1vZGVsLCBmaWxlU3lzdGVtLCBwYXJlbnREaXJlY3RvcnksIG5hbWUpOwor
fQorCitXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1vZGVsLkRpcmVjdG9yeS5wcm90b3R5cGUgPSB7
CisgICAgZ2V0IGlzRGlyZWN0b3J5KCkKKyAgICB7CisgICAgICAgIHJldHVybiB0cnVlOworICAg
IH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge2Z1bmN0aW9uKG51bWJlciwgQXJyYXkuPFdl
Ykluc3BlY3Rvci5GaWxlU3lzdGVtTW9kZWwuRGlyZWN0b3J5Pil9IGNhbGxiYWNrCisgICAgICov
CisgICAgcmVhZERpcmVjdG9yeTogZnVuY3Rpb24oY2FsbGJhY2spCisgICAgeworICAgICAgICB0
aGlzLmZpbGVTeXN0ZW1Nb2RlbC5yZWFkRGlyZWN0b3J5KHRoaXMsIGNhbGxiYWNrKTsKKyAgICB9
Cit9CisKK1dlYkluc3BlY3Rvci5GaWxlU3lzdGVtTW9kZWwuRGlyZWN0b3J5LnByb3RvdHlwZS5f
X3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1vZGVsLkVudHJ5LnByb3RvdHlwZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRmlsZVN5c3Rl
bVZpZXcuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0ZpbGVTeXN0ZW1W
aWV3LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjgzNjVkZmY1MDk5ZmI2Mzk5N2NkNjk1MGUyZjY0MTYxOWJlMTA3
ODcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L0ZpbGVTeXN0ZW1WaWV3LmpzCkBAIC0wLDAgKzEsNDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICog
ICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0
cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAq
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisvKioKKyAqIEBjb25zdHJ1Y3Rvcgor
ICogQGV4dGVuZHMge1dlYkluc3BlY3Rvci5WaWV3fQorICogQHBhcmFtIHtXZWJJbnNwZWN0b3Iu
RmlsZVN5c3RlbU1vZGVsLkZpbGVTeXN0ZW19IGZpbGVTeXN0ZW0KKyAqLworV2ViSW5zcGVjdG9y
LkZpbGVTeXN0ZW1WaWV3ID0gZnVuY3Rpb24oZmlsZVN5c3RlbSkKK3sKKyAgICBXZWJJbnNwZWN0
b3IuVmlldy5jYWxsKHRoaXMpOworICAgIHRoaXMuX2ZpbGVTeXN0ZW0gPSBmaWxlU3lzdGVtOwor
fQorCitXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbVZpZXcucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdl
Ykluc3BlY3Rvci5WaWV3LnByb3RvdHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvSW1hZ2VzL2ZpbGVzeXN0ZW0ucG5nIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9JbWFnZXMvZmlsZXN5c3RlbS5wbmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTI2
Mzg5ZGFkMjI1ZGM3NzFiMmI5NjBjMDI3NjI1ZWJmMTg1MWZiYgpHSVQgYmluYXJ5IHBhdGNoCmxp
dGVyYWwgMTIyNgp6Y21WOyoxVTM3S1ApPGg7M0t8TGswMDBlMU5KTFRxMDAxQlcwMDFCZTFeQHM2
YjkjRjgwMDAwMWI1Y2hfMEl0cCkKej0+UHgjMjRZSmBMOyhLKXt7YTc+eXtENF4wMDBTYU5MaDBM
MDFGY1UwMUZjVjBHZ1pfMDAwMDdiVipHYDJpcHQqCnoxX35TXzB0ODxHMDBjQCZMX3QobyF8aipO
an0lMjEjKCZrX0dyUCl+VGA7UkxGIyR+JDVoOTVuMkwtZHlnR3ZaUQp6UGtRa21rbUpWMDFNeD1V
ITZQeG9xakRwOUZma0hENWZ4PChMTktAPll3IWN1dW1tQHw/QzExISklJHY9P3dSU0cKej8ldnNX
KUppNSg+OGA1aGN8WW9ULS1pR0NGeGxrWWdSajI+eWE1ZE14O1lGQ1BJUF5NIz1RVUxwKDYqMTIr
WnhACnpeWlp+SyloWjhBXj8+NDxqRjExd0dyTS1MaUBAO3tyPzZJciN0dDMxMH15MnxCKCs0dXR3
dmwwRS0zKyp7d0pXKQp6Nkw9OHlidj10cCUqPEthOStJMUBZOVk5NHNyJE9sakpoYEU3RDtJY3ZP
VjJrTWN4UVgkd2pMLVhBODgqajFGczYKejFnQzk0KXY5RTRyRTgrOU1DJF84UDdBZnJyRTNqUUJ+
RHkxZnA1TSR2K2pGKmBwbWgxcjJ8bz8pcUQyNyt8d3BpCnpMN2U1cDdzcSZVJiVVMClnMFJMWEEw
STdHIXNSPFJRSSluXmJNRFElK1N2cUVXb2g8JGtCVm1xPnZ0aGxOJDlnVwp6T0ttTkBUTVAzR1Qp
bEZZc2NTYl9UeUFpRGRLdnsobCkrNnlKaEZYK2pobHVyZiQyYUdQP1dHTDFYZmEhUU9TIUIKejlo
I3VSWjxpKTxWJVlpQWxaWD4pd0hoVn1YKUdecmQtQGlhRko1OFNiNUZPOUZlYWJLKT1EdH09Y0h3
K3NJKWU8Cnp4ZD0lIVZmeTlfK2pma3c+KTl1MCN0SHJYZUZSfnxeODVARjdhWFRmcDV5dS0qUW9j
XjVzXi17QyNjUWhubFgpfgp6ck1yUT02Z3lHQXtyKVY4RXRsMmgqKlB8QnlwSiR8emIxYWRJPml7
akpfPn1vU3orXipgPGVMcEdSfj5EZXN2ZzQKekskekgzUlh1OHEoT2VSflJGS2l5O2wyK0tBTGY8
VV9PVyV4SGYtR1J1fiR0fjQ4I2RMTVpNKm5mfkd6ZVE5UT8yCnokRyt5bSNNRTJCNjdYM3IzNzYt
bGFKR0BVdUE2fGZtVV9MMF9TY0VUdyMyQ1FBRFQ0aSMpbllTZHtUaVJLb0A1Uwp6b0FWR3YxMy1X
R0VrSlMzUiRlRlA2eXEjdm48PW9RaVlPUnlBUEsxUmI5TD5jNGgmeyMyNUg3JWpMUmY3WUJ2aCkK
ejV7cCFuUzU0b0dNTnkwak5DcyN6RWB9NmJNS0dGQEdKKVM1MWcrWjhUP15FTE5ZM3Fyd05ATzYj
aVZvTjhYaU8oCnpucCRuckExO0FwQzleUGhFNG0xTGRIUTFJRW9qdnlhVHUzKXc8ankwLXRGRzxj
R0UlPEwoPWZ6Qn1GU29WRV43MQp6RHkhUV4/fHRDa0l8MThCLUpQSzd5dFMme0Q8JWJaTmtgbUZI
MzRHYGk/Y1V5JjZQQ0BrQG88dTMza1BVKHhJTkoKelU9dDZuTzFCdkYodnFSb2prSjx4eFhaODR6
K0I+PWIlTGpKUSVPTD9VJmV3WUckISFkVTRxJmVCWjcoKVNJdy1UCnpiPmdSanFeczdxMm4yPy02
aWFDalVgIztjK0llaG5AMllPNypSRHUkOyZQcExHJih4azJNbEdNVzdJY0xAPDk8Vwp6XjV7ZVNh
UTt1bSY7TzNXbCo1KlVVMkg7YSk1QVFyYHwqSz1nQHU5NDFBVn51YEs5RlpQZnQkbDEyJlpNdytW
eXkKekpWP0QoX3R1Kz03UUJkbnZrWDQ0XzRkSDw9Q2hOTmxiMTZCRj52WUp1WVZyfC1kXmpGMHwj
RStHQ1Z4SShYRk1+Cm9XdUozbDd7emdYYjhLd3Y3eWNpPktSWTRGbnl2b0g8XlRXeTA3KnFvTTZO
PCRmPlNMKkM7JEtlCgpsaXRlcmFsIDAKSGNtVj9kMDAwMDEKCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlc1BhbmVsLmpzIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZXNQYW5lbC5qcwppbmRleCA4YTRjNzcx
M2RmZTBkMmMyOTRiMTc0YzU1NDllMGM3NTUzMWU0YTIxLi45NDhlMjcxYjAzM2QxOWViZDIyNzMw
YWQ0YzBlZjEzOTAyODY0YjVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL1Jlc291cmNlc1BhbmVsLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvUmVzb3VyY2VzUGFuZWwuanMKQEAgLTY3LDYgKzY3LDExIEBAIFdlYkluc3Bl
Y3Rvci5SZXNvdXJjZXNQYW5lbCA9IGZ1bmN0aW9uKGRhdGFiYXNlKQogICAgIHRoaXMuYXBwbGlj
YXRpb25DYWNoZUxpc3RUcmVlRWxlbWVudCA9IG5ldyBXZWJJbnNwZWN0b3IuU3RvcmFnZUNhdGVn
b3J5VHJlZUVsZW1lbnQodGhpcywgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJBcHBsaWNhdGlvbiBD
YWNoZSIpLCAiQXBwbGljYXRpb25DYWNoZSIsIFsiYXBwbGljYXRpb24tY2FjaGUtc3RvcmFnZS10
cmVlLWl0ZW0iXSk7CiAgICAgdGhpcy5zaWRlYmFyVHJlZS5hcHBlbmRDaGlsZCh0aGlzLmFwcGxp
Y2F0aW9uQ2FjaGVMaXN0VHJlZUVsZW1lbnQpOwogCisgICAgaWYgKFByZWZlcmVuY2VzLmV4cG9z
ZUZpbGVTeXN0ZW1JbnNwZWN0aW9uKSB7CisgICAgICAgIHRoaXMuZmlsZVN5c3RlbUxpc3RUcmVl
RWxlbWVudCA9IG5ldyBXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbUxpc3RUcmVlRWxlbWVudCh0aGlz
KTsKKyAgICAgICAgdGhpcy5zaWRlYmFyVHJlZS5hcHBlbmRDaGlsZCh0aGlzLmZpbGVTeXN0ZW1M
aXN0VHJlZUVsZW1lbnQpOworICAgIH0KKwogICAgIHRoaXMuc3RvcmFnZVZpZXdzID0gdGhpcy5z
cGxpdFZpZXcubWFpbkVsZW1lbnQ7CiAgICAgdGhpcy5zdG9yYWdlVmlld3MuYWRkU3R5bGVDbGFz
cygiZGlmZi1jb250YWluZXIiKTsKIApAQCAtNDU3LDYgKzQ2MiwxNCBAQCBXZWJJbnNwZWN0b3Iu
UmVzb3VyY2VzUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl9pbm5lclNob3dWaWV3
KHRoaXMuX2FwcGxpY2F0aW9uQ2FjaGVWaWV3c1tmcmFtZUlkXSk7CiAgICAgfSwKIAorICAgIC8q
KgorICAgICAqICBAcGFyYW0ge1dlYkluc3BlY3Rvci5WaWV3fSB2aWV3CisgICAgICovCisgICAg
c2hvd0ZpbGVTeXN0ZW06IGZ1bmN0aW9uKHZpZXcpCisgICAgeworICAgICAgICB0aGlzLl9pbm5l
clNob3dWaWV3KHZpZXcpOworICAgIH0sCisKICAgICBzaG93Q2F0ZWdvcnlWaWV3OiBmdW5jdGlv
bihjYXRlZ29yeU5hbWUpCiAgICAgewogICAgICAgICBpZiAoIXRoaXMuX2NhdGVnb3J5VmlldykK
QEAgLTE0NzcsNiArMTQ5MCw3OSBAQCBXZWJJbnNwZWN0b3IuSW5kZXhlZERCVHJlZUVsZW1lbnQu
cHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5TdG9yYWdlQ2F0ZQogCiAvKioKICAq
IEBjb25zdHJ1Y3RvcgorICogQGV4dGVuZHMge1dlYkluc3BlY3Rvci5TdG9yYWdlQ2F0ZWdvcnlU
cmVlRWxlbWVudH0KKyAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlJlc291cmNlc1BhbmVsfSBzdG9y
YWdlUGFuZWwKKyAqLworV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1MaXN0VHJlZUVsZW1lbnQgPSBm
dW5jdGlvbihzdG9yYWdlUGFuZWwpCit7CisgICAgV2ViSW5zcGVjdG9yLlN0b3JhZ2VDYXRlZ29y
eVRyZWVFbGVtZW50LmNhbGwodGhpcywgc3RvcmFnZVBhbmVsLCBXZWJJbnNwZWN0b3IuVUlTdHJp
bmcoIkZpbGVTeXN0ZW0iKSwgIkZpbGVTeXN0ZW0iLCBbImZpbGVzeXN0ZW0tc3RvcmFnZS10cmVl
LWl0ZW0iXSk7Cit9CisKK1dlYkluc3BlY3Rvci5GaWxlU3lzdGVtTGlzdFRyZWVFbGVtZW50LnBy
b3RvdHlwZSA9IHsKKyAgICBvbmV4cGFuZDogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgV2Vi
SW5zcGVjdG9yLlN0b3JhZ2VDYXRlZ29yeVRyZWVFbGVtZW50LnByb3RvdHlwZS5vbmV4cGFuZC5j
YWxsKHRoaXMpOworICAgICAgICB0aGlzLnJlZnJlc2hGaWxlU3lzdGVtKCk7CisgICAgfSwKKwor
ICAgIG9uYXR0YWNoOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICBXZWJJbnNwZWN0b3IuU3Rv
cmFnZUNhdGVnb3J5VHJlZUVsZW1lbnQucHJvdG90eXBlLm9uYXR0YWNoLmNhbGwodGhpcyk7Cisg
ICAgICAgIHRoaXMubGlzdEl0ZW1FbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImNvbnRleHRtZW51
IiwgdGhpcy5faGFuZGxlQ29udGV4dE1lbnVFdmVudC5iaW5kKHRoaXMpLCB0cnVlKTsKKyAgICAg
ICAgaWYgKHRoaXMuZXhwYW5kZWQpCisgICAgICAgICAgICB0aGlzLnJlZnJlc2hGaWxlU3lzdGVt
KCk7CisgICAgfSwKKworICAgIF9oYW5kbGVDb250ZXh0TWVudUV2ZW50OiBmdW5jdGlvbihldmVu
dCkKKyAgICB7CisgICAgICAgIHZhciBjb250ZXh0TWVudSA9IG5ldyBXZWJJbnNwZWN0b3IuQ29u
dGV4dE1lbnUoKTsKKyAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kSXRlbShXZWJJbnNwZWN0b3Iu
VUlTdHJpbmcoIlJlZnJlc2ggRmlsZVN5c3RlbSBMaXN0IiksIHRoaXMucmVmcmVzaEZpbGVTeXN0
ZW0uYmluZCh0aGlzKSk7CisgICAgICAgIGNvbnRleHRNZW51LnNob3coZXZlbnQpOworICAgIH0s
CisKKyAgICBfZmlsZVN5c3RlbUFkZGVkOiBmdW5jdGlvbihldmVudCkKKyAgICB7CisgICAgICAg
IHZhciBmaWxlU3lzdGVtID0gLyoqIEB0eXBlIHtXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1vZGVs
LkZpbGVTeXN0ZW19ICovIGV2ZW50LmRhdGE7CisgICAgICAgIHZhciBmaWxlU3lzdGVtVHJlZUVs
ZW1lbnQgPSBuZXcgV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1UcmVlRWxlbWVudCh0aGlzLl9zdG9y
YWdlUGFuZWwsIGZpbGVTeXN0ZW0pOworICAgICAgICB0aGlzLmFwcGVuZENoaWxkKGZpbGVTeXN0
ZW1UcmVlRWxlbWVudCk7CisgICAgfSwKKworICAgIF9maWxlU3lzdGVtUmVtb3ZlZDogZnVuY3Rp
b24oZXZlbnQpCisgICAgeworICAgICAgICB2YXIgZmlsZVN5c3RlbSA9IC8qKiBAdHlwZSB7V2Vi
SW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbC5GaWxlU3lzdGVtfSAqLyBldmVudC5kYXRhOworICAg
ICAgICB2YXIgZmlsZVN5c3RlbVRyZWVFbGVtZW50ID0gdGhpcy5fZmlsZVN5c3RlbVRyZWVFbGVt
ZW50QnlOYW1lKGZpbGVTeXN0ZW0ubmFtZSk7CisgICAgICAgIGlmICghZmlsZVN5c3RlbVRyZWVF
bGVtZW50KQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBmaWxlU3lzdGVtVHJlZUVsZW1l
bnQuY2xlYXIoKTsKKyAgICAgICAgdGhpcy5yZW1vdmVDaGlsZChmaWxlU3lzdGVtVHJlZUVsZW1l
bnQpOworICAgIH0sCisKKyAgICBfZmlsZVN5c3RlbVRyZWVFbGVtZW50QnlOYW1lOiBmdW5jdGlv
bihmaWxlU3lzdGVtTmFtZSkKKyAgICB7CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhp
cy5jaGlsZHJlbi5sZW5ndGg7ICsraSkgeworICAgICAgICAgICAgdmFyIGNoaWxkID0gLyoqIEB0
eXBlIHtXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbVRyZWVFbGVtZW50fSAqLyB0aGlzLmNoaWxkcmVu
W2ldOworICAgICAgICAgICAgaWYgKGNoaWxkLmZpbGVTeXN0ZW1OYW1lID09PSBmaWxlU3lzdGVt
TmFtZSkKKyAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5jaGlsZHJlbltpXTsKKyAgICAgICAg
fQorICAgICAgICByZXR1cm4gbnVsbDsKKyAgICB9LAorCisgICAgcmVmcmVzaEZpbGVTeXN0ZW06
IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIGlmICghdGhpcy5fZmlsZVN5c3RlbU1vZGVsKSB7
CisgICAgICAgICAgICB0aGlzLl9maWxlU3lzdGVtTW9kZWwgPSBuZXcgV2ViSW5zcGVjdG9yLkZp
bGVTeXN0ZW1Nb2RlbCgpOworICAgICAgICAgICAgdGhpcy5fZmlsZVN5c3RlbU1vZGVsLmFkZEV2
ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbC5FdmVudFR5cGVzLkZpbGVT
eXN0ZW1BZGRlZCwgdGhpcy5fZmlsZVN5c3RlbUFkZGVkLCB0aGlzKTsKKyAgICAgICAgICAgIHRo
aXMuX2ZpbGVTeXN0ZW1Nb2RlbC5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5GaWxlU3lz
dGVtTW9kZWwuRXZlbnRUeXBlcy5GaWxlU3lzdGVtUmVtb3ZlZCwgdGhpcy5fZmlsZVN5c3RlbVJl
bW92ZWQsIHRoaXMpOworICAgICAgICB9CisKKyAgICAgICAgdGhpcy5fZmlsZVN5c3RlbU1vZGVs
LnJlZnJlc2hGaWxlU3lzdGVtTGlzdCgpOworICAgIH0KK30KKworV2ViSW5zcGVjdG9yLkZpbGVT
eXN0ZW1MaXN0VHJlZUVsZW1lbnQucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5T
dG9yYWdlQ2F0ZWdvcnlUcmVlRWxlbWVudC5wcm90b3R5cGU7CisKKy8qKgorICogQGNvbnN0cnVj
dG9yCiAgKiBAZXh0ZW5kcyB7V2ViSW5zcGVjdG9yLkJhc2VTdG9yYWdlVHJlZUVsZW1lbnR9CiAg
KiBAcGFyYW0ge1dlYkluc3BlY3Rvci5SZXNvdXJjZXNQYW5lbH0gc3RvcmFnZVBhbmVsCiAgKiBA
cGFyYW0ge1dlYkluc3BlY3Rvci5JbmRleGVkREJNb2RlbH0gbW9kZWwKQEAgLTE4NzgsNiArMTk2
NCw3MSBAQCBXZWJJbnNwZWN0b3IuQXBwbGljYXRpb25DYWNoZUZyYW1lVHJlZUVsZW1lbnQucHJv
dG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3RvcgogCiAvKioKICAqIEBjb25zdHJ1Y3Rvcgor
ICogQGV4dGVuZHMge1dlYkluc3BlY3Rvci5CYXNlU3RvcmFnZVRyZWVFbGVtZW50fQorICogQHBh
cmFtIHtXZWJJbnNwZWN0b3IuUmVzb3VyY2VzUGFuZWx9IHN0b3JhZ2VQYW5lbAorICogQHBhcmFt
IHtXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1vZGVsLkZpbGVTeXN0ZW19IGZpbGVTeXN0ZW0KKyAq
LworV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1UcmVlRWxlbWVudCA9IGZ1bmN0aW9uKHN0b3JhZ2VQ
YW5lbCwgZmlsZVN5c3RlbSkKK3sKKyAgICB2YXIgZGlzcGxheU5hbWUgPSBmaWxlU3lzdGVtLnR5
cGUgKyAiIC0gIiArIGZpbGVTeXN0ZW0ub3JpZ2luOworICAgIFdlYkluc3BlY3Rvci5CYXNlU3Rv
cmFnZVRyZWVFbGVtZW50LmNhbGwodGhpcywgc3RvcmFnZVBhbmVsLCBudWxsLCBkaXNwbGF5TmFt
ZSwgWyJmaWxlc3lzdGVtLXN0b3JhZ2UtdHJlZS1pdGVtIl0pOworICAgIHRoaXMuX2ZpbGVTeXN0
ZW0gPSBmaWxlU3lzdGVtOworfQorCitXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbVRyZWVFbGVtZW50
LnByb3RvdHlwZSA9IHsKKyAgICBnZXQgZmlsZVN5c3RlbU5hbWUoKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIHRoaXMuX2ZpbGVTeXN0ZW0ubmFtZTsKKyAgICB9LAorCisgICAgZ2V0IGl0ZW1VUkwo
KQorICAgIHsKKyAgICAgICAgcmV0dXJuICJmaWxlc3lzdGVtOi8vIiArIHRoaXMuX2ZpbGVTeXN0
ZW0ubmFtZTsKKyAgICB9LAorCisgICAgb25hdHRhY2g6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAg
ICAgIFdlYkluc3BlY3Rvci5CYXNlU3RvcmFnZVRyZWVFbGVtZW50LnByb3RvdHlwZS5vbmF0dGFj
aC5jYWxsKHRoaXMpOworICAgICAgICB0aGlzLmxpc3RJdGVtRWxlbWVudC5hZGRFdmVudExpc3Rl
bmVyKCJjb250ZXh0bWVudSIsIHRoaXMuX2hhbmRsZUNvbnRleHRNZW51RXZlbnQuYmluZCh0aGlz
KSwgdHJ1ZSk7CisgICAgfSwKKworICAgIF9oYW5kbGVDb250ZXh0TWVudUV2ZW50OiBmdW5jdGlv
bihldmVudCkKKyAgICB7CisgICAgICAgIHZhciBjb250ZXh0TWVudSA9IG5ldyBXZWJJbnNwZWN0
b3IuQ29udGV4dE1lbnUoKTsKKyAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kSXRlbShXZWJJbnNw
ZWN0b3IuVUlTdHJpbmcoIlJlZnJlc2ggRmlsZVN5c3RlbSBWaWV3IiksIHRoaXMuX3JlZnJlc2hG
aWxlU3lzdGVtLmJpbmQodGhpcykpOworICAgICAgICBjb250ZXh0TWVudS5zaG93KGV2ZW50KTsK
KyAgICB9LAorCisgICAgX3JlZnJlc2hGaWxlU3lzdGVtOiBmdW5jdGlvbihldmVudCkKKyAgICB7
CisgICAgICAgIGlmICghdGhpcy5fZmlsZVN5c3RlbVZpZXcpCisgICAgICAgICAgICB0aGlzLl9m
aWxlU3lzdGVtVmlldy5yZWZyZXNoKCk7CisgICAgfSwKKworICAgIG9uc2VsZWN0OiBmdW5jdGlv
bigpCisgICAgeworICAgICAgICBXZWJJbnNwZWN0b3IuQmFzZVN0b3JhZ2VUcmVlRWxlbWVudC5w
cm90b3R5cGUub25zZWxlY3QuY2FsbCh0aGlzKTsKKyAgICAgICAgaWYgKCF0aGlzLl9maWxlU3lz
dGVtVmlldykgeworICAgICAgICAgICAgaWYgKCFXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbVZpZXcp
IHsKKyAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oIkZpbGVTeXN0ZW1WaWV3IGlzIG5vdCBh
dmFpbGFibGUuIik7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAg
ICAgICAgICAgdGhpcy5fZmlsZVN5c3RlbVZpZXcgPSBuZXcgV2ViSW5zcGVjdG9yLkZpbGVTeXN0
ZW1WaWV3KHRoaXMuX2ZpbGVTeXN0ZW0pOworICAgICAgICB9CisgICAgICAgIHRoaXMuX3N0b3Jh
Z2VQYW5lbC5zaG93RmlsZVN5c3RlbSh0aGlzLl9maWxlU3lzdGVtVmlldyk7CisgICAgfSwKKwor
ICAgIGNsZWFyOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICBpZiAodGhpcy5maWxlU3lzdGVt
VmlldyAmJiB0aGlzLl9zdG9yYWdlUGFuZWwudmlzaWJsZVZpZXcgPT0gdGhpcy5maWxlU3lzdGVt
VmlldykKKyAgICAgICAgICAgIHRoaXMuX3N0b3JhZ2VQYW5lbC5jbG9zZVZpc2libGVWaWV3KCk7
CisgICAgfQorfQorCitXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbVRyZWVFbGVtZW50LnByb3RvdHlw
ZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuQmFzZVN0b3JhZ2VUcmVlRWxlbWVudC5wcm90b3R5
cGU7CisKKy8qKgorICogQGNvbnN0cnVjdG9yCiAgKiBAZXh0ZW5kcyB7V2ViSW5zcGVjdG9yLlZp
ZXd9CiAgKi8KIFdlYkluc3BlY3Rvci5TdG9yYWdlQ2F0ZWdvcnlWaWV3ID0gZnVuY3Rpb24oKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TZXR0aW5ncy5q
cyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2V0dGluZ3MuanMKaW5kZXgg
NGUzYTIyNzMxZDA5ODJhNjc4Njk4OGNmZWU4MzkwMTYwMzU4NDAwMS4uMWNjOTZjMzI4OTk2MDE3
ZGZlNDgxODA1NTc1ODFlNWFlNThjZGI5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9TZXR0aW5ncy5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL1NldHRpbmdzLmpzCkBAIC00NCw3ICs0NCw4IEBAIHZhciBQcmVmZXJlbmNl
cyA9IHsKICAgICBleHBvc2VXb3JrZXJzSW5zcGVjdGlvbjogZmFsc2UsCiAgICAgYXBwbGljYXRp
b25UaXRsZTogIldlYiBJbnNwZWN0b3IgLSAlcyIsCiAgICAgc2hvd0hlYXBTbmFwc2hvdE9iamVj
dHNIaWRkZW5Qcm9wZXJ0aWVzOiBmYWxzZSwKLSAgICBzaG93RG9ja1RvUmlnaHQ6IGZhbHNlCisg
ICAgc2hvd0RvY2tUb1JpZ2h0OiBmYWxzZSwKKyAgICBleHBvc2VGaWxlU3lzdGVtSW5zcGVjdGlv
bjogdHJ1ZQogfQogCiB2YXIgQ2FwYWJpbGl0aWVzID0gewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9XZWJLaXQucXJjIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9XZWJLaXQucXJjCmluZGV4IDU0ODg5N2UzMTM4NjIwZmQyZDlmOGMy
MzI3Y2M2YTI4MmZjN2UxZDguLmM3MjhlODVmNGJmZWIyNTA2NzIwYmQ2NWJkNmE2OTcwMGNjNjkx
NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvV2ViS2l0
LnFyYworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1dlYktpdC5xcmMK
QEAgLTU4LDYgKzU4LDggQEAKICAgICA8ZmlsZT5FeHRlbnNpb25SZWdpc3RyeVN0dWIuanM8L2Zp
bGU+CiAgICAgPGZpbGU+RXh0ZW5zaW9uU2VydmVyLmpzPC9maWxlPgogICAgIDxmaWxlPkZpbGVN
YW5hZ2VyLmpzPC9maWxlPgorICAgIDxmaWxlPkZpbGVTeXN0ZW1Nb2RlbC5qczwvZmlsZT4KKyAg
ICA8ZmlsZT5GaWxlU3lzdGVtVmlldy5qczwvZmlsZT4KICAgICA8ZmlsZT5GaWx0ZXJlZEl0ZW1T
ZWxlY3Rpb25EaWFsb2cuanM8L2ZpbGU+CiAgICAgPGZpbGU+Rm9udFZpZXcuanM8L2ZpbGU+CiAg
ICAgPGZpbGU+R29Ub0xpbmVEaWFsb2cuanM8L2ZpbGU+CkBAIC0yNDEsNiArMjQzLDcgQEAKICAg
ICA8ZmlsZT5JbWFnZXMvZXJyb3JJY29uLnBuZzwvZmlsZT4KICAgICA8ZmlsZT5JbWFnZXMvZXJy
b3JNZWRpdW1JY29uLnBuZzwvZmlsZT4KICAgICA8ZmlsZT5JbWFnZXMvZXJyb3JSZWREb3QucG5n
PC9maWxlPgorICAgIDxmaWxlPkltYWdlcy9maWxlc3lzdGVtLnBuZzwvZmlsZT4KICAgICA8Zmls
ZT5JbWFnZXMvZm9yd2FyZC5wbmc8L2ZpbGU+CiAgICAgPGZpbGU+SW1hZ2VzL2ZyYW1lLnBuZzwv
ZmlsZT4KICAgICA8ZmlsZT5JbWFnZXMvZ2xvc3N5SGVhZGVyLnBuZzwvZmlsZT4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmh0bWwgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5odG1sCmluZGV4IGFj
NTE2Zjc1ZjM4MjYwZTdmZjlmM2UzZDNiOGMyM2U1ZTQ5NTNjYWYuLmM1MjM4ZjNhMGZhZGE1NDMw
Zjk3YmIwNDE3NjIzZTMyZTdjZWY3NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmh0bWwKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuaHRtbApAQCAtMTYwLDYgKzE2MCw4IEBAIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iU291cmNlQ1NTVG9rZW5p
emVyLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3Jj
PSJTb3VyY2VIVE1MVG9rZW5pemVyLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHR5cGU9InRl
eHQvamF2YXNjcmlwdCIgc3JjPSJTb3VyY2VKYXZhU2NyaXB0VG9rZW5pemVyLmpzIj48L3Njcmlw
dD4KKyAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJGaWxlU3lzdGVtTW9k
ZWwuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9
IkZpbGVTeXN0ZW1WaWV3LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2
YXNjcmlwdCIgc3JjPSJGb250Vmlldy5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCB0eXBlPSJ0
ZXh0L2phdmFzY3JpcHQiIHNyYz0iSW1hZ2VWaWV3LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0
IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJEYXRhYmFzZVRhYmxlVmlldy5qcyI+PC9zY3Jp
cHQ+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL3Jlc291
cmNlc1BhbmVsLmNzcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvcmVzb3Vy
Y2VzUGFuZWwuY3NzCmluZGV4IDRkNmNhMmIxMjlkNTNmNjUyNGQ1YmJmNmZkYmQwOWFjMTJhYzBi
ZDQuLjliZTg3NjI2MDFiMDFmNzQ5ZWI4NTMwOTVlNDQyZDFmZTliNDI1ODcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvcmVzb3VyY2VzUGFuZWwuY3NzCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvcmVzb3VyY2VzUGFuZWwuY3Nz
CkBAIC0zMjYsNyArMzI2LDYgQEAgbGkuc2VsZWN0ZWQgLmJhc2Utc3RvcmFnZS10cmVlLWVsZW1l
bnQtc3VidGl0bGUgewogICAgIGNvbnRlbnQ6IHVybChJbWFnZXMvYXBwbGljYXRpb25DYWNoZS5w
bmcpOwogfQogCi0vKiBGSVhNRTogTWFrZSBzZXBhcmF0ZSBwbmcgZm9yIGZpbGUtc3lzdGVtICov
Ci0uZmlsZS1zeXN0ZW0tc3RvcmFnZS10cmVlLWl0ZW0gLmljb24gewotICAgIGNvbnRlbnQ6IHVy
bChJbWFnZXMvYXBwbGljYXRpb25DYWNoZS5wbmcpOworLmZpbGVzeXN0ZW0tc3RvcmFnZS10cmVl
LWl0ZW0gLmljb24geworICAgIGNvbnRlbnQ6IHVybChJbWFnZXMvZmlsZXN5c3RlbS5wbmcpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC91dGlsaXRp
ZXMuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL3V0aWxpdGllcy5qcwpp
bmRleCAxZDcyMjViMjZmOGJlYmUzYzkwZGM5ZTRmNWU4NWJkMDBiZWU4ZGY3Li5lMTVlZWUyODk2
N2ZjYThhOTQwMWU4YTVhMzAwYzJlMzZjYTRlYzgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL3V0aWxpdGllcy5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL3V0aWxpdGllcy5qcwpAQCAtNjc1LDQgKzY3NSwyOCBAQCBNYXAu
cHJvdG90eXBlID0gewogICAgIHsKICAgICAgICAgdGhpcy5fbWFwID0ge307CiAgICAgfQotfQor
fTsKKworKGZ1bmN0aW9uKCkgewordmFyIG9iamVjdFByb3RvdHlwZSA9IC8qKiBAdHlwZSB7IU9i
amVjdH0gKi8gT2JqZWN0LnByb3RvdHlwZTsKKworT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iamVj
dFByb3RvdHlwZSwgImlzRW1wdHkiLAoreworICAgIHZhbHVlOiBmdW5jdGlvbigpCisgICAgewor
ICAgICAgICBmb3IgKHZhciBpIGluIHRoaXMpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgICAgIHJldHVybiB0cnVlOworICAgIH0KK30pOworCitPYmplY3QuZGVmaW5lUHJvcGVydHko
b2JqZWN0UHJvdG90eXBlLCAiYW55T2YiLAoreworICAgIHZhbHVlOiBmdW5jdGlvbigpCisgICAg
eworICAgICAgICBmb3IgKHZhciBpIGluIHRoaXMpCisgICAgICAgICAgICByZXR1cm4gdGhpc1tp
XTsKKyAgICAgICAgcmV0dXJuIG51bGw7CisgICAgfQorfSk7Cit9KSgpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>146196</attachid>
            <date>2012-06-06 21:58:50 -0700</date>
            <delta_ts>2012-06-07 18:42:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-72691-20120607135849.patch</filename>
            <type>text/plain</type>
            <size>24702</size>
            <attacher name="Taiju Tsuiki">tzik</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE5NjU3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGVmOTQwMGVhM2UwNmNh
NmMzZWY4NDUwM2IwM2VhMDkyMDBiYTJhYS4uOGRmNzQzZTk1MmUzZDZhZjJlNDBjZTYwY2ZlMzll
NjIyZmIyMThiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDEyLTA2LTA2ICBUYWlq
dSBUc3Vpa2kgIDx0emlrQGNocm9taXVtLm9yZz4KKworICAgICAgICBBZGQgRmlsZVN5c3RlbSBp
dGVtIHRvIHN0b3JhZ2UgdHJlZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTcyNjkxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2Vi
Q29yZS52Y3Byb2o6CisgICAgICAgICogaW5zcGVjdG9yL2NvbXBpbGUtZnJvbnQtZW5kLnB5Ogor
ICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvRmlsZVN5c3RlbU1vZGVsLmpzOiBBZGRlZC4K
KyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0ltYWdlcy9maWxlc3lzdGVtLnBuZzogQWRk
ZWQuCisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZXNQYW5lbC5qczoKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtTGlzdFRyZWVFbGVtZW50KToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtTGlzdFRyZWVFbGVtZW50LnByb3RvdHlwZS5vbmV4cGFu
ZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbUxpc3RUcmVlRWxlbWVudC5wcm90
b3R5cGUub25hdHRhY2gpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1MaXN0VHJl
ZUVsZW1lbnQucHJvdG90eXBlLl9oYW5kbGVDb250ZXh0TWVudUV2ZW50KToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5GaWxlU3lzdGVtTGlzdFRyZWVFbGVtZW50LnByb3RvdHlwZS5fZmlsZVN5c3Rl
bUFkZGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtTGlzdFRyZWVFbGVtZW50
LnByb3RvdHlwZS5fZmlsZVN5c3RlbVJlbW92ZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkZp
bGVTeXN0ZW1MaXN0VHJlZUVsZW1lbnQucHJvdG90eXBlLl9maWxlU3lzdGVtVHJlZUVsZW1lbnRC
eU5hbWUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1MaXN0VHJlZUVsZW1lbnQu
cHJvdG90eXBlLl9yZWZyZXNoRmlsZVN5c3RlbSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRmls
ZVN5c3RlbVRyZWVFbGVtZW50KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtVHJl
ZUVsZW1lbnQucHJvdG90eXBlLmdldCBmaWxlU3lzdGVtTmFtZSk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuRmlsZVN5c3RlbVRyZWVFbGVtZW50LnByb3RvdHlwZS5nZXQgaXRlbVVSTCk6CisgICAg
ICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9TZXR0aW5ncy5qczoKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5FeHBlcmltZW50c1NldHRpbmdzKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5k
L1dlYktpdC5xcmM6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuaHRt
bDoKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL3Jlc291cmNlc1BhbmVsLmNzczoKKyAg
ICAgICAgKC5maWxlc3lzdGVtLXN0b3JhZ2UtdHJlZS1pdGVtIC5pY29uKToKKyAgICAgICAgKiBp
bnNwZWN0b3IvZnJvbnQtZW5kL3V0aWxpdGllcy5qczoKKwogMjAxMi0wNi0wNiAgRmlsaXAgUGl6
bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAgIEdsb2JhbCBvYmplY3QgdmFyaWFibGUg
YWNjZXNzZXMgc2hvdWxkIG5vdCByZXF1aXJlIGFuIGV4dHJhIGxvYWQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9D
aGFuZ2VMb2cKaW5kZXggYjg2MjlmOTIyMjUyZDdkZThiMTFkODYzMjc3MGY4ZGM2MDFiNjE1Yi4u
OGE2MmEwMjNiMWMzNjI4YjRiM2FjMzZkNTJiYWRiZmU4YjA4YTVhMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxMi0wNi0wNiAgVGFpanUgVHN1aWtpICA8
dHppa0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgQWRkIEZpbGVTeXN0ZW0gaXRlbSB0byBzdG9y
YWdlIHRyZWUuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD03MjY5MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogc3JjL2pzL0RldlRvb2xzLmpzOgorCiAyMDEyLTA2LTA2ICBKYW1lcyBSb2JpbnNvbiAgPGph
bWVzckBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW2Nocm9taXVtXSBNb3ZlIGltcGxlbWVudGF0
aW9uIG9mIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEIGFuZCByZWxhdGVkIGZyb20gV2ViS2l0
L2Nocm9taXVtL3NyYyB0byBXZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUuZ3lwaQppbmRleCA0YTljODU3OGY0MDBkMjg3MTAxYmFhZjE2NmJlMWRhMDQwMjFmZGM2Li43
ZTg4YWZiOTNjN2JkMDM0MWNjN2EyMmVmYTI1NjEwNWJiNmIyZTBiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBp
CkBAIC02NDA4LDYgKzY0MDgsNyBAQAogICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQv
RXh0ZW5zaW9uUmVnaXN0cnlTdHViLmpzJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQt
ZW5kL0V4dGVuc2lvblNlcnZlci5qcycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVu
ZC9GaWxlTWFuYWdlci5qcycsCisgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9GaWxl
U3lzdGVtTW9kZWwuanMnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvRmlsdGVy
ZWRJdGVtU2VsZWN0aW9uRGlhbG9nLmpzJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQt
ZW5kL0ZvbnRWaWV3LmpzJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0dvVG9M
aW5lRGlhbG9nLmpzJywKQEAgLTY2MDEsNiArNjYwMiw3IEBACiAgICAgICAgICAgICAnaW5zcGVj
dG9yL2Zyb250LWVuZC9JbWFnZXMvZXJyb3JNZWRpdW1JY29uLnBuZycsCiAgICAgICAgICAgICAn
aW5zcGVjdG9yL2Zyb250LWVuZC9JbWFnZXMvZXJyb3JSZWREb3QucG5nJywKICAgICAgICAgICAg
ICdpbnNwZWN0b3IvZnJvbnQtZW5kL0ltYWdlcy9mb3J3YXJkLnBuZycsCisgICAgICAgICAgICAn
aW5zcGVjdG9yL2Zyb250LWVuZC9JbWFnZXMvZmlsZXN5c3RlbS5wbmcnLAogICAgICAgICAgICAg
J2luc3BlY3Rvci9mcm9udC1lbmQvSW1hZ2VzL2ZyYW1lLnBuZycsCiAgICAgICAgICAgICAnaW5z
cGVjdG9yL2Zyb250LWVuZC9JbWFnZXMvZ2xvc3N5SGVhZGVyLnBuZycsCiAgICAgICAgICAgICAn
aW5zcGVjdG9yL2Zyb250LWVuZC9JbWFnZXMvZ2xvc3N5SGVhZGVyUHJlc3NlZC5wbmcnLApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2ogYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagppbmRleCA0ZmRhN2Fk
MThjZjgyNjg3MTdhNjJlYWU1ZTYzMWI3NmRlODk2MTMzLi40NGY5MjlmNTk1NGIzZDMzYjg4ZDQy
NDY3NzBjZWNkZWNlZTlkZmU1IDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZj
cHJvai9XZWJDb3JlLnZjcHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9X
ZWJDb3JlLnZjcHJvagpAQCAtNzQ2MjIsNiArNzQ2MjIsMTAgQEAKIAkJCQkJPgogCQkJCTwvRmls
ZT4KIAkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGluc3BlY3Rvclxmcm9udC1lbmRc
RmlsZVN5c3RlbU1vZGVsLmpzIgorCQkJCQk+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCiAJCQkJ
CVJlbGF0aXZlUGF0aD0iLi5caW5zcGVjdG9yXGZyb250LWVuZFxmaWx0ZXJlZEl0ZW1TZWxlY3Rp
b25EaWFsb2cuY3NzIgogCQkJCQk+CiAJCQkJPC9GaWxlPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2NvbXBpbGUtZnJvbnQtZW5kLnB5IGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2NvbXBpbGUtZnJvbnQtZW5kLnB5CmluZGV4IGEzYjIxZjQ5MjY4YjMxODFmYWQ3YjNj
ZjM2OWI5ZDczYzMyZTVjZTYuLmMzMjgxNWJlN2JhNWEwMDhlMzU3M2IyYTJmMTYwZDFlOGI3ZjUx
NzEgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9jb21waWxlLWZyb250LWVu
ZC5weQorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvY29tcGlsZS1mcm9udC1lbmQucHkK
QEAgLTgyLDYgKzgyLDcgQEAgbW9kdWxlcyA9IFsKICAgICAgICAgICAgICJEZWJ1Z2dlclJlc291
cmNlQmluZGluZy5qcyIsCiAgICAgICAgICAgICAiRGVidWdnZXJTY3JpcHRNYXBwaW5nLmpzIiwK
ICAgICAgICAgICAgICJGaWxlTWFuYWdlci5qcyIsCisgICAgICAgICAgICAiRmlsZVN5c3RlbU1v
ZGVsLmpzIiwKICAgICAgICAgICAgICJIQVJFbnRyeS5qcyIsCiAgICAgICAgICAgICAiSW5kZXhl
ZERCTW9kZWwuanMiLAogICAgICAgICAgICAgIkxpbmtpZmllci5qcyIsCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0ZpbGVTeXN0ZW1Nb2RlbC5qcyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRmlsZVN5c3RlbU1vZGVsLmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjM2NmM5OTllOTRhMjA3OTMyOWZjNjZkZjk2ODI0NzI2MjNhZTc5ZTUKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0ZpbGVTeXN0ZW1N
b2RlbC5qcwpAQCAtMCwwICsxLDIyNCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29n
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
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKy8qKgorICogQGNvbnN0cnVjdG9yCisgKiBAZXh0ZW5k
cyB7V2ViSW5zcGVjdG9yLk9iamVjdH0KKyAqIEBpbXBsZW1lbnRzIHtGaWxlU3lzdGVtQWdlbnQu
RGlzcGF0Y2hlcn0KKyAqLworV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbCA9IGZ1bmN0aW9u
KCkKK3sKKyAgICBXZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwodGhpcyk7CisKKyAgICB0aGlzLl9v
cmlnaW5Gb3JGcmFtZUlkID0ge307CisgICAgdGhpcy5fZnJhbWVJZHNGb3JPcmlnaW4gPSB7fTsK
KyAgICB0aGlzLl9maWxlU3lzdGVtc0Zvck9yaWdpbiA9IHt9OworCisgICAgV2ViSW5zcGVjdG9y
LnJlc291cmNlVHJlZU1vZGVsLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlJlc291cmNl
VHJlZU1vZGVsLkV2ZW50VHlwZXMuRnJhbWVBZGRlZCwgdGhpcy5fZnJhbWVBZGRlZCwgdGhpcyk7
CisgICAgV2ViSW5zcGVjdG9yLnJlc291cmNlVHJlZU1vZGVsLmFkZEV2ZW50TGlzdGVuZXIoV2Vi
SW5zcGVjdG9yLlJlc291cmNlVHJlZU1vZGVsLkV2ZW50VHlwZXMuRnJhbWVOYXZpZ2F0ZWQsIHRo
aXMuX2ZyYW1lTmF2aWdhdGVkLCB0aGlzKTsKKyAgICBXZWJJbnNwZWN0b3IucmVzb3VyY2VUcmVl
TW9kZWwuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuUmVzb3VyY2VUcmVlTW9kZWwuRXZl
bnRUeXBlcy5GcmFtZURldGFjaGVkLCB0aGlzLl9mcmFtZURldGFjaGVkLCB0aGlzKTsKKworICAg
IEluc3BlY3RvckJhY2tlbmQucmVnaXN0ZXJGaWxlU3lzdGVtRGlzcGF0Y2hlcih0aGlzKTsKKyAg
ICBGaWxlU3lzdGVtQWdlbnQuZW5hYmxlKCk7CisKKyAgICBpZiAoV2ViSW5zcGVjdG9yLnJlc291
cmNlVHJlZU1vZGVsLm1haW5GcmFtZSkKKyAgICAgICAgdGhpcy5fYXR0YWNoRnJhbWVSZWN1cnNp
dmVseShXZWJJbnNwZWN0b3IucmVzb3VyY2VUcmVlTW9kZWwubWFpbkZyYW1lKTsKK30KKworV2Vi
SW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbC5wcm90b3R5cGUgPSB7CisgICAgLyoqCisgICAgICog
QHBhcmFtIHtXZWJJbnNwZWN0b3IuRXZlbnR9IGV2ZW50CisgICAgICovCisgICAgX2ZyYW1lQWRk
ZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIHsKKyAgICAgICAgdmFyIGZyYW1lID0gLyoqIEB0eXBl
IHtXZWJJbnNwZWN0b3IuUmVzb3VyY2VUcmVlRnJhbWV9ICovIGV2ZW50LmRhdGE7CisgICAgICAg
IHRoaXMuX2F0dGFjaEZyYW1lUmVjdXJzaXZlbHkoZnJhbWUpOworICAgIH0sCisKKyAgICAvKioK
KyAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5FdmVudH0gZXZlbnQKKyAgICAgKi8KKyAgICBf
ZnJhbWVOYXZpZ2F0ZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIHsKKyAgICAgICAgdmFyIGZyYW1l
ID0gLyoqIEB0eXBlIHtXZWJJbnNwZWN0b3IuUmVzb3VyY2VUcmVlRnJhbWV9ICovIGV2ZW50LmRh
dGE7CisgICAgICAgIHRoaXMuX2F0dGFjaEZyYW1lUmVjdXJzaXZlbHkoZnJhbWUpOworICAgIH0s
CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5FdmVudH0gZXZlbnQKKyAg
ICAgKi8KKyAgICBfZnJhbWVEZXRhY2hlZDogZnVuY3Rpb24oZXZlbnQpCisgICAgeworICAgICAg
ICB2YXIgZnJhbWUgPSAvKiogQHR5cGUge1dlYkluc3BlY3Rvci5SZXNvdXJjZVRyZWVGcmFtZX0g
Ki8gZXZlbnQuZGF0YTsKKyAgICAgICAgdGhpcy5fZGV0YWNoRnJhbWVSZWN1cnNpdmVseShmcmFt
ZSk7CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlJlc291
cmNlVHJlZUZyYW1lfSBmcmFtZQorICAgICAqLworICAgIF9hdHRhY2hGcmFtZTogZnVuY3Rpb24o
ZnJhbWUpCisgICAgeworICAgICAgICBpZiAodGhpcy5fb3JpZ2luRm9yRnJhbWVJZFtmcmFtZS5p
ZF0pCisgICAgICAgICAgICB0aGlzLl9kZXRhY2hGcmFtZVJlY3Vyc2l2ZWx5KGZyYW1lKTsKKwor
ICAgICAgICBpZiAoZnJhbWUuc2VjdXJpdHlPcmlnaW4gPT09ICJudWxsIikKKyAgICAgICAgICAg
IHJldHVybjsKKworICAgICAgICB0aGlzLl9vcmlnaW5Gb3JGcmFtZUlkW2ZyYW1lLmlkXSA9IGZy
YW1lLnNlY3VyaXR5T3JpZ2luOworCisgICAgICAgIHZhciBuZXdPcmlnaW4gPSBmYWxzZTsKKyAg
ICAgICAgaWYgKCF0aGlzLl9mcmFtZUlkc0Zvck9yaWdpbltmcmFtZS5zZWN1cml0eU9yaWdpbl0p
IHsKKyAgICAgICAgICAgIHRoaXMuX2ZyYW1lSWRzRm9yT3JpZ2luW2ZyYW1lLnNlY3VyaXR5T3Jp
Z2luXSA9IHt9OworICAgICAgICAgICAgbmV3T3JpZ2luID0gdHJ1ZTsKKyAgICAgICAgfQorICAg
ICAgICB0aGlzLl9mcmFtZUlkc0Zvck9yaWdpbltmcmFtZS5zZWN1cml0eU9yaWdpbl1bZnJhbWUu
aWRdID0gZnJhbWUuaWQ7CisgICAgICAgIGlmIChuZXdPcmlnaW4pCisgICAgICAgICAgICB0aGlz
Ll9vcmlnaW5BZGRlZChmcmFtZS5zZWN1cml0eU9yaWdpbik7CisgICAgfSwKKworICAgIC8qKgor
ICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlJlc291cmNlVHJlZUZyYW1lfSBmcmFtZQorICAg
ICAqLworICAgIF9hdHRhY2hGcmFtZVJlY3Vyc2l2ZWx5OiBmdW5jdGlvbihmcmFtZSkKKyAgICB7
CisgICAgICAgIHRoaXMuX2F0dGFjaEZyYW1lKGZyYW1lKTsKKyAgICAgICAgZm9yICh2YXIgaSA9
IDA7IGkgPCBmcmFtZS5jaGlsZEZyYW1lcy5sZW5ndGg7ICsraSkKKyAgICAgICAgICAgIHRoaXMu
X2F0dGFjaEZyYW1lUmVjdXJzaXZlbHkoZnJhbWUuY2hpbGRGcmFtZXNbaV0pOworICAgIH0sCisK
KyAgICAvKioKKyAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5SZXNvdXJjZVRyZWVGcmFtZX0g
ZnJhbWUKKyAgICAgKi8KKyAgICBfZGV0YWNoRnJhbWU6IGZ1bmN0aW9uKGZyYW1lKQorICAgIHsK
KyAgICAgICAgaWYgKCF0aGlzLl9vcmlnaW5Gb3JGcmFtZUlkW2ZyYW1lLmlkXSkKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgdmFyIG9yaWdpbiA9IHRoaXMuX29yaWdpbkZvckZyYW1lSWRb
ZnJhbWUuaWRdOworICAgICAgICBkZWxldGUgdGhpcy5fb3JpZ2luRm9yRnJhbWVJZFtmcmFtZS5p
ZF07CisgICAgICAgIGRlbGV0ZSB0aGlzLl9mcmFtZUlkc0Zvck9yaWdpbltvcmlnaW5dW2ZyYW1l
LmlkXTsKKworICAgICAgICB2YXIgbGFzdE9yaWdpbiA9IHRoaXMuX2ZyYW1lSWRzRm9yT3JpZ2lu
W29yaWdpbl0uaXNFbXB0eSgpOworICAgICAgICBpZiAobGFzdE9yaWdpbikgeworICAgICAgICAg
ICAgZGVsZXRlIHRoaXMuX2ZyYW1lSWRzRm9yT3JpZ2luW29yaWdpbl07CisgICAgICAgICAgICB0
aGlzLl9vcmlnaW5SZW1vdmVkKG9yaWdpbik7CisgICAgICAgIH0KKyAgICB9LAorCisgICAgLyoq
CisgICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuUmVzb3VyY2VUcmVlRnJhbWV9IGZyYW1lCisg
ICAgICovCisgICAgX2RldGFjaEZyYW1lUmVjdXJzaXZlbHk6IGZ1bmN0aW9uKGZyYW1lKQorICAg
IHsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBmcmFtZS5jaGlsZEZyYW1lcy5sZW5ndGg7
ICsraSkKKyAgICAgICAgICAgIHRoaXMuX2RldGFjaEZyYW1lUmVjdXJzaXZlbHkoZnJhbWUuY2hp
bGRGcmFtZXNbaV0pOworICAgICAgICB0aGlzLl9kZXRhY2hGcmFtZShmcmFtZSk7CisgICAgfSwK
KworICAgIC8qKgorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBvcmlnaW4KKyAgICAgKi8KKyAgICBf
b3JpZ2luQWRkZWQ6IGZ1bmN0aW9uKG9yaWdpbikKKyAgICB7CisgICAgICAgIHRoaXMuX2ZpbGVT
eXN0ZW1zRm9yT3JpZ2luW29yaWdpbl0gPSB7fTsKKworICAgICAgICB2YXIgdHlwZXMgPSBbInBl
cnNpc3RlbnQiLCAidGVtcG9yYXJ5Il07CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdHlw
ZXMubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgIHZhciBmaWxlU3lzdGVtID0gbmV3IFdlYklu
c3BlY3Rvci5GaWxlU3lzdGVtTW9kZWwuRmlsZVN5c3RlbSh0aGlzLCBvcmlnaW4sIHR5cGVzW2ld
KTsKKyAgICAgICAgICAgIHRoaXMuX2ZpbGVTeXN0ZW1zRm9yT3JpZ2luW29yaWdpbl1bdHlwZXNb
aV1dID0gZmlsZVN5c3RlbTsKKyAgICAgICAgICAgIHRoaXMuX2ZpbGVTeXN0ZW1BZGRlZChmaWxl
U3lzdGVtKTsKKyAgICAgICAgfQorICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge3N0
cmluZ30gb3JpZ2luCisgICAgICovCisgICAgX29yaWdpblJlbW92ZWQ6IGZ1bmN0aW9uKG9yaWdp
bikKKyAgICB7CisgICAgICAgIGZvciAodmFyIHR5cGUgaW4gdGhpcy5fZmlsZVN5c3RlbXNGb3JP
cmlnaW5bb3JpZ2luXSkgeworICAgICAgICAgICAgdmFyIGZpbGVTeXN0ZW0gPSB0aGlzLl9maWxl
U3lzdGVtc0Zvck9yaWdpbltvcmlnaW5dW3R5cGVdOworICAgICAgICAgICAgZGVsZXRlIHRoaXMu
X2ZpbGVTeXN0ZW1zRm9yT3JpZ2luW29yaWdpbl1bdHlwZV07CisgICAgICAgICAgICB0aGlzLl9m
aWxlU3lzdGVtUmVtb3ZlZChmaWxlU3lzdGVtKTsKKyAgICAgICAgfQorICAgICAgICBkZWxldGUg
dGhpcy5fZmlsZVN5c3RlbXNGb3JPcmlnaW5bb3JpZ2luXTsKKyAgICB9LAorCisgICAgLyoqCisg
ICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1vZGVsLkZpbGVTeXN0ZW19IGZp
bGVTeXN0ZW0KKyAgICAgKi8KKyAgICBfZmlsZVN5c3RlbUFkZGVkOiBmdW5jdGlvbihmaWxlU3lz
dGVtKQorICAgIHsKKyAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5z
cGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbC5FdmVudFR5cGVzLkZpbGVTeXN0ZW1BZGRlZCwgZmlsZVN5
c3RlbSk7CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLkZp
bGVTeXN0ZW1Nb2RlbC5GaWxlU3lzdGVtfSBmaWxlU3lzdGVtCisgICAgICovCisgICAgX2ZpbGVT
eXN0ZW1SZW1vdmVkOiBmdW5jdGlvbihmaWxlU3lzdGVtKQorICAgIHsKKyAgICAgICAgdGhpcy5k
aXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbC5FdmVu
dFR5cGVzLkZpbGVTeXN0ZW1SZW1vdmVkLCBmaWxlU3lzdGVtKTsKKyAgICB9LAorCisgICAgcmVm
cmVzaEZpbGVTeXN0ZW1MaXN0OiBmdW5jdGlvbigpCisgICAgeworICAgICAgICBmb3IgKHZhciBv
cmlnaW4gaW4gdGhpcy5fZmlsZVN5c3RlbXNGb3JPcmlnaW4pCisgICAgICAgICAgICBmb3IgKHZh
ciB0eXBlIGluIHRoaXMuX2ZpbGVTeXN0ZW1zRm9yT3JpZ2luW29yaWdpbl0pCisgICAgICAgICAg
ICAgICAgdGhpcy5fZmlsZVN5c3RlbVJlbW92ZWQodGhpcy5fZmlsZVN5c3RlbXNGb3JPcmlnaW5b
b3JpZ2luXVt0eXBlXSk7CisKKyAgICAgICAgZm9yICh2YXIgb3JpZ2luIGluIHRoaXMuX2ZpbGVT
eXN0ZW1zRm9yT3JpZ2luKQorICAgICAgICAgICAgZm9yICh2YXIgdHlwZSBpbiB0aGlzLl9maWxl
U3lzdGVtc0Zvck9yaWdpbltvcmlnaW5dKQorICAgICAgICAgICAgICAgIHRoaXMuX2ZpbGVTeXN0
ZW1BZGRlZCh0aGlzLl9maWxlU3lzdGVtc0Zvck9yaWdpbltvcmlnaW5dW3R5cGVdKTsKKyAgICB9
Cit9CisKK1dlYkluc3BlY3Rvci5GaWxlU3lzdGVtTW9kZWwuRXZlbnRUeXBlcyA9IHsKKyAgICBG
aWxlU3lzdGVtQWRkZWQ6ICJGaWxlU3lzdGVtQWRkZWQiLAorICAgIEZpbGVTeXN0ZW1SZW1vdmVk
OiAiRmlsZVN5c3RlbVJlbW92ZWQiCit9CisKK1dlYkluc3BlY3Rvci5GaWxlU3lzdGVtTW9kZWwu
cHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5PYmplY3QucHJvdG90eXBlOworCisv
KioKKyAqIEBjb25zdHJ1Y3RvcgorICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1v
ZGVsfSBmaWxlU3lzdGVtTW9kZWwKKyAqIEBwYXJhbSB7c3RyaW5nfSBvcmlnaW4KKyAqIEBwYXJh
bSB7c3RyaW5nfSB0eXBlCisgKi8KK1dlYkluc3BlY3Rvci5GaWxlU3lzdGVtTW9kZWwuRmlsZVN5
c3RlbSA9IGZ1bmN0aW9uKGZpbGVTeXN0ZW1Nb2RlbCwgb3JpZ2luLCB0eXBlKQoreworICAgIHRo
aXMub3JpZ2luID0gb3JpZ2luOworICAgIHRoaXMudHlwZSA9IHR5cGU7Cit9CisKK1dlYkluc3Bl
Y3Rvci5GaWxlU3lzdGVtTW9kZWwuRmlsZVN5c3RlbS5wcm90b3R5cGUgPSB7CisgICAgZ2V0IG5h
bWUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuICJmaWxlc3lzdGVtOiIgKyB0aGlzLm9yaWdpbiAr
ICIvIiArIHRoaXMudHlwZTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL0ltYWdlcy9maWxlc3lzdGVtLnBuZyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvSW1hZ2VzL2ZpbGVzeXN0ZW0ucG5nCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjky
NjM4OWRhZDIyNWRjNzcxYjJiOTYwYzAyNzYyNWViZjE4NTFmYmIKR0lUIGJpbmFyeSBwYXRjaAps
aXRlcmFsIDEyMjYKemNtVjsqMVUzN0tQKTxoOzNLfExrMDAwZTFOSkxUcTAwMUJXMDAxQmUxXkBz
NmI5I0Y4MDAwMDFiNWNoXzBJdHApCno9PlB4IzI0WUpgTDsoSyl7e2E3Pnl7RDReMDAwU2FOTGgw
TDAxRmNVMDFGY1YwR2daXzAwMDA3YlYqR2AyaXB0Kgp6MV9+U18wdDg8RzAwY0AmTF90KG8hfGoq
Tmp9JTIxIygma19HclApflRgO1JMRiMkfiQ1aDk1bjJMLWR5Z0d2WlEKelBrUWtta21KVjAxTXg9
VSE2UHhvcWpEcDlGZmtIRDVmeDwoTE5LQD5ZdyFjdXVtbUB8P0MxMSEpJSR2PT93UlNHCno/JXZz
VylKaTUoPjhgNWhjfFlvVC0taUdDRnhsa1lnUmoyPnlhNWRNeDtZRkNQSVBeTSM9UVVMcCg2KjEy
K1p4QAp6XlpafkspaFo4QV4/PjQ8akYxMXdHck0tTGlAQDt7cj82SXIjdHQzMTB9eTJ8QigrNHV0
d3ZsMEUtMysqe3dKVykKejZMPTh5YnY9dHAlKjxLYTkrSTFAWTlZOTRzciRPbGpKaGBFN0Q7SWN2
T1Yya01jeFFYJHdqTC1YQTg4KmoxRnM2CnoxZ0M5NCl2OUU0ckU4KzlNQyRfOFA3QWZyckUzalFC
fkR5MWZwNU0kditqRipgcG1oMXIyfG8/KXFEMjcrfHdwaQp6TDdlNXA3c3EmVSYlVTApZzBSTFhB
MEk3RyFzUjxSUUkpbl5iTURRJStTdnFFV29oPCRrQlZtcT52dGhsTiQ5Z1cKek9LbU5AVE1QM0dU
KWxGWXNjU2JfVHlBaURkS3Z7KGwpKzZ5SmhGWCtqaGx1cmYkMmFHUD9XR0wxWGZhIVFPUyFCCno5
aCN1Ulo8aSk8ViVZaUFsWlg+KXdIaFZ9WClHXnJkLUBpYUZKNThTYjVGTzlGZWFiSyk9RHR9PWNI
dytzSSllPAp6eGQ9JSFWZnk5XytqZmt3Pik5dTAjdEhyWGVGUn58Xjg1QEY3YVhUZnA1eXUtKlFv
Y141c14te0MjY1FobmxYKX4KenJNclE9Nmd5R0F7cilWOEV0bDJoKipQfEJ5cEokfHpiMWFkST5p
e2pKXz59b1N6K14qYDxlTHBHUn4+RGVzdmc0CnpLJHpIM1JYdThxKE9lUn5SRktpeTtsMitLQUxm
PFVfT1cleEhmLUdSdX4kdH40OCNkTE1aTSpuZn5HemVROVE/Mgp6JEcreW0jTUUyQjY3WDNyMzc2
LWxhSkdAVXVBNnxmbVVfTDBfU2NFVHcjMkNRQURUNGkjKW5ZU2R7VGlSS29ANVMKem9BVkd2MTMt
V0dFa0pTM1IkZUZQNnlxI3ZuPD1vUWlZT1J5QVBLMVJiOUw+YzRoJnsjMjVINyVqTFJmN1lCdmgp
Cno1e3AhblM1NG9HTU55MGpOQ3MjekVgfTZiTUtHRkBHSilTNTFnK1o4VD9eRUxOWTNxcndOQE82
I2lWb044WGlPKAp6bnAkbnJBMTtBcEM5XlBoRTRtMUxkSFExSUVvanZ5YVR1Myl3PGp5MC10Rkc8
Y0dFJTxMKD1mekJ9RlNvVkVeNzEKekR5IVFeP3x0Q2tJfDE4Qi1KUEs3eXRTJntEPCViWk5rYG1G
SDM0R2BpP2NVeSY2UENAa0BvPHUzM2tQVSh4SU5KCnpVPXQ2bk8xQnZGKHZxUm9qa0o8eHhYWjg0
eitCPj1iJUxqSlElT0w/VSZld1lHJCEhZFU0cSZlQlo3KClTSXctVAp6Yj5nUmpxXnM3cTJuMj8t
NmlhQ2pVYCM7YytJZWhuQDJZTzcqUkR1JDsmUHBMRyYoeGsyTWxHTVc3SWNMQDw5PFcKel41e2VT
YVE7dW0mO08zV2wqNSpVVTJIO2EpNUFRcmB8Kks9Z0B1OTQxQVZ+dWBLOUZaUGZ0JGwxMiZaTXcr
Vnl5CnpKVj9EKF90dSs9N1FCZG52a1g0NF80ZEg8PUNoTk5sYjE2QkY+dllKdVlWcnwtZF5qRjB8
I0UrR0NWeEkoWEZNfgpvV3VKM2w3e3pnWGI4S3d2N3ljaT5LUlk0Rm55dm9IPF5UV3kwNypxb002
TjwkZj5TTCpDOyRLZQoKbGl0ZXJhbCAwCkhjbVY/ZDAwMDAxCgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZXNQYW5lbC5qcyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VzUGFuZWwuanMKaW5kZXggNzlmOWJm
Y2Y0YTcwYzAwYTk4Y2NkZWUyMWNlYWY3NDc5Y2FmZGFmOC4uY2I3YTVjM2Y0OGY1ZjhkMTQyMTFm
ODlkNWMwNjdhNmVhYTE1NTBiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9SZXNvdXJjZXNQYW5lbC5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL1Jlc291cmNlc1BhbmVsLmpzCkBAIC02Nyw2ICs2NywxMSBAQCBXZWJJbnNw
ZWN0b3IuUmVzb3VyY2VzUGFuZWwgPSBmdW5jdGlvbihkYXRhYmFzZSkKICAgICB0aGlzLmFwcGxp
Y2F0aW9uQ2FjaGVMaXN0VHJlZUVsZW1lbnQgPSBuZXcgV2ViSW5zcGVjdG9yLlN0b3JhZ2VDYXRl
Z29yeVRyZWVFbGVtZW50KHRoaXMsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiQXBwbGljYXRpb24g
Q2FjaGUiKSwgIkFwcGxpY2F0aW9uQ2FjaGUiLCBbImFwcGxpY2F0aW9uLWNhY2hlLXN0b3JhZ2Ut
dHJlZS1pdGVtIl0pOwogICAgIHRoaXMuc2lkZWJhclRyZWUuYXBwZW5kQ2hpbGQodGhpcy5hcHBs
aWNhdGlvbkNhY2hlTGlzdFRyZWVFbGVtZW50KTsKIAorICAgIGlmIChQcmVmZXJlbmNlcy5leHBv
c2VGaWxlU3lzdGVtSW5zcGVjdGlvbiAmJiBXZWJJbnNwZWN0b3IuZXhwZXJpbWVudHNTZXR0aW5n
cy5maWxlU3lzdGVtSW5zcGVjdGlvbi5pc0VuYWJsZWQoKSkgeworICAgICAgICB0aGlzLmZpbGVT
eXN0ZW1MaXN0VHJlZUVsZW1lbnQgPSBuZXcgV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1MaXN0VHJl
ZUVsZW1lbnQodGhpcyk7CisgICAgICAgIHRoaXMuc2lkZWJhclRyZWUuYXBwZW5kQ2hpbGQodGhp
cy5maWxlU3lzdGVtTGlzdFRyZWVFbGVtZW50KTsKKyAgICB9CisKICAgICB0aGlzLnN0b3JhZ2VW
aWV3cyA9IHRoaXMuc3BsaXRWaWV3Lm1haW5FbGVtZW50OwogICAgIHRoaXMuc3RvcmFnZVZpZXdz
LmFkZFN0eWxlQ2xhc3MoImRpZmYtY29udGFpbmVyIik7CiAKQEAgLTE0NzksNiArMTQ4NCw3NyBA
QCBXZWJJbnNwZWN0b3IuSW5kZXhlZERCVHJlZUVsZW1lbnQucHJvdG90eXBlLl9fcHJvdG9fXyA9
IFdlYkluc3BlY3Rvci5TdG9yYWdlQ2F0ZQogCiAvKioKICAqIEBjb25zdHJ1Y3RvcgorICogQGV4
dGVuZHMge1dlYkluc3BlY3Rvci5TdG9yYWdlQ2F0ZWdvcnlUcmVlRWxlbWVudH0KKyAqIEBwYXJh
bSB7V2ViSW5zcGVjdG9yLlJlc291cmNlc1BhbmVsfSBzdG9yYWdlUGFuZWwKKyAqLworV2ViSW5z
cGVjdG9yLkZpbGVTeXN0ZW1MaXN0VHJlZUVsZW1lbnQgPSBmdW5jdGlvbihzdG9yYWdlUGFuZWwp
Cit7CisgICAgV2ViSW5zcGVjdG9yLlN0b3JhZ2VDYXRlZ29yeVRyZWVFbGVtZW50LmNhbGwodGhp
cywgc3RvcmFnZVBhbmVsLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkZpbGVTeXN0ZW0iKSwgIkZp
bGVTeXN0ZW0iLCBbImZpbGVzeXN0ZW0tc3RvcmFnZS10cmVlLWl0ZW0iXSk7Cit9CisKK1dlYklu
c3BlY3Rvci5GaWxlU3lzdGVtTGlzdFRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKKyAgICBvbmV4
cGFuZDogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgV2ViSW5zcGVjdG9yLlN0b3JhZ2VDYXRl
Z29yeVRyZWVFbGVtZW50LnByb3RvdHlwZS5vbmV4cGFuZC5jYWxsKHRoaXMpOworICAgICAgICB0
aGlzLl9yZWZyZXNoRmlsZVN5c3RlbSgpOworICAgIH0sCisKKyAgICBvbmF0dGFjaDogZnVuY3Rp
b24oKQorICAgIHsKKyAgICAgICAgV2ViSW5zcGVjdG9yLlN0b3JhZ2VDYXRlZ29yeVRyZWVFbGVt
ZW50LnByb3RvdHlwZS5vbmF0dGFjaC5jYWxsKHRoaXMpOworICAgICAgICB0aGlzLmxpc3RJdGVt
RWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJjb250ZXh0bWVudSIsIHRoaXMuX2hhbmRsZUNvbnRl
eHRNZW51RXZlbnQuYmluZCh0aGlzKSwgdHJ1ZSk7CisgICAgfSwKKworICAgIF9oYW5kbGVDb250
ZXh0TWVudUV2ZW50OiBmdW5jdGlvbihldmVudCkKKyAgICB7CisgICAgICAgIHZhciBjb250ZXh0
TWVudSA9IG5ldyBXZWJJbnNwZWN0b3IuQ29udGV4dE1lbnUoKTsKKyAgICAgICAgY29udGV4dE1l
bnUuYXBwZW5kSXRlbShXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlJlZnJlc2ggRmlsZVN5c3RlbSBM
aXN0IiksIHRoaXMuX3JlZnJlc2hGaWxlU3lzdGVtLmJpbmQodGhpcykpOworICAgICAgICBjb250
ZXh0TWVudS5zaG93KGV2ZW50KTsKKyAgICB9LAorCisgICAgX2ZpbGVTeXN0ZW1BZGRlZDogZnVu
Y3Rpb24oZXZlbnQpCisgICAgeworICAgICAgICB2YXIgZmlsZVN5c3RlbSA9IC8qKiBAdHlwZSB7
V2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbC5GaWxlU3lzdGVtfSAqLyBldmVudC5kYXRhOwor
ICAgICAgICB2YXIgZmlsZVN5c3RlbVRyZWVFbGVtZW50ID0gbmV3IFdlYkluc3BlY3Rvci5GaWxl
U3lzdGVtVHJlZUVsZW1lbnQodGhpcy5fc3RvcmFnZVBhbmVsLCBmaWxlU3lzdGVtKTsKKyAgICAg
ICAgdGhpcy5hcHBlbmRDaGlsZChmaWxlU3lzdGVtVHJlZUVsZW1lbnQpOworICAgIH0sCisKKyAg
ICBfZmlsZVN5c3RlbVJlbW92ZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIHsKKyAgICAgICAgdmFy
IGZpbGVTeXN0ZW0gPSAvKiogQHR5cGUge1dlYkluc3BlY3Rvci5GaWxlU3lzdGVtTW9kZWwuRmls
ZVN5c3RlbX0gKi8gZXZlbnQuZGF0YTsKKyAgICAgICAgdmFyIGZpbGVTeXN0ZW1UcmVlRWxlbWVu
dCA9IHRoaXMuX2ZpbGVTeXN0ZW1UcmVlRWxlbWVudEJ5TmFtZShmaWxlU3lzdGVtLm5hbWUpOwor
ICAgICAgICBpZiAoIWZpbGVTeXN0ZW1UcmVlRWxlbWVudCkKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgZmlsZVN5c3RlbVRyZWVFbGVtZW50LmNsZWFyKCk7CisgICAgICAgIHRoaXMucmVt
b3ZlQ2hpbGQoZmlsZVN5c3RlbVRyZWVFbGVtZW50KTsKKyAgICB9LAorCisgICAgX2ZpbGVTeXN0
ZW1UcmVlRWxlbWVudEJ5TmFtZTogZnVuY3Rpb24oZmlsZVN5c3RlbU5hbWUpCisgICAgeworICAg
ICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuY2hpbGRyZW4ubGVuZ3RoOyArK2kpIHsKKyAg
ICAgICAgICAgIHZhciBjaGlsZCA9IC8qKiBAdHlwZSB7V2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1U
cmVlRWxlbWVudH0gKi8gdGhpcy5jaGlsZHJlbltpXTsKKyAgICAgICAgICAgIGlmIChjaGlsZC5m
aWxlU3lzdGVtTmFtZSA9PT0gZmlsZVN5c3RlbU5hbWUpCisgICAgICAgICAgICAgICAgcmV0dXJu
IHRoaXMuY2hpbGRyZW5baV07CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIG51bGw7CisgICAg
fSwKKworICAgIF9yZWZyZXNoRmlsZVN5c3RlbTogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAg
aWYgKCF0aGlzLl9maWxlU3lzdGVtTW9kZWwpIHsKKyAgICAgICAgICAgIHRoaXMuX2ZpbGVTeXN0
ZW1Nb2RlbCA9IG5ldyBXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1vZGVsKCk7CisgICAgICAgICAg
ICB0aGlzLl9maWxlU3lzdGVtTW9kZWwuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRmls
ZVN5c3RlbU1vZGVsLkV2ZW50VHlwZXMuRmlsZVN5c3RlbUFkZGVkLCB0aGlzLl9maWxlU3lzdGVt
QWRkZWQsIHRoaXMpOworICAgICAgICAgICAgdGhpcy5fZmlsZVN5c3RlbU1vZGVsLmFkZEV2ZW50
TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbC5FdmVudFR5cGVzLkZpbGVTeXN0
ZW1SZW1vdmVkLCB0aGlzLl9maWxlU3lzdGVtUmVtb3ZlZCwgdGhpcyk7CisgICAgICAgIH0KKwor
ICAgICAgICB0aGlzLl9maWxlU3lzdGVtTW9kZWwucmVmcmVzaEZpbGVTeXN0ZW1MaXN0KCk7Cisg
ICAgfQorfQorCitXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbUxpc3RUcmVlRWxlbWVudC5wcm90b3R5
cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLlN0b3JhZ2VDYXRlZ29yeVRyZWVFbGVtZW50LnBy
b3RvdHlwZTsKKworLyoqCisgKiBAY29uc3RydWN0b3IKICAqIEBleHRlbmRzIHtXZWJJbnNwZWN0
b3IuQmFzZVN0b3JhZ2VUcmVlRWxlbWVudH0KICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlJlc291
cmNlc1BhbmVsfSBzdG9yYWdlUGFuZWwKICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLkluZGV4ZWRE
Qk1vZGVsfSBtb2RlbApAQCAtMTg4MCw2ICsxOTU2LDMzIEBAIFdlYkluc3BlY3Rvci5BcHBsaWNh
dGlvbkNhY2hlRnJhbWVUcmVlRWxlbWVudC5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVj
dG9yCiAKIC8qKgogICogQGNvbnN0cnVjdG9yCisgKiBAZXh0ZW5kcyB7V2ViSW5zcGVjdG9yLkJh
c2VTdG9yYWdlVHJlZUVsZW1lbnR9CisgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5SZXNvdXJjZXNQ
YW5lbH0gc3RvcmFnZVBhbmVsCisgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5GaWxlU3lzdGVtTW9k
ZWwuRmlsZVN5c3RlbX0gZmlsZVN5c3RlbQorICovCitXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbVRy
ZWVFbGVtZW50ID0gZnVuY3Rpb24oc3RvcmFnZVBhbmVsLCBmaWxlU3lzdGVtKQoreworICAgIHZh
ciBkaXNwbGF5TmFtZSA9IGZpbGVTeXN0ZW0udHlwZSArICIgLSAiICsgZmlsZVN5c3RlbS5vcmln
aW47CisgICAgV2ViSW5zcGVjdG9yLkJhc2VTdG9yYWdlVHJlZUVsZW1lbnQuY2FsbCh0aGlzLCBz
dG9yYWdlUGFuZWwsIG51bGwsIGRpc3BsYXlOYW1lLCBbImZpbGVzeXN0ZW0tc3RvcmFnZS10cmVl
LWl0ZW0iXSk7CisgICAgdGhpcy5fZmlsZVN5c3RlbSA9IGZpbGVTeXN0ZW07Cit9CisKK1dlYklu
c3BlY3Rvci5GaWxlU3lzdGVtVHJlZUVsZW1lbnQucHJvdG90eXBlID0geworICAgIGdldCBmaWxl
U3lzdGVtTmFtZSgpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5fZmlsZVN5c3RlbS5uYW1l
OworICAgIH0sCisKKyAgICBnZXQgaXRlbVVSTCgpCisgICAgeworICAgICAgICByZXR1cm4gImZp
bGVzeXN0ZW06Ly8iICsgdGhpcy5fZmlsZVN5c3RlbS5uYW1lOworICAgIH0KK30KKworV2ViSW5z
cGVjdG9yLkZpbGVTeXN0ZW1UcmVlRWxlbWVudC5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5z
cGVjdG9yLkJhc2VTdG9yYWdlVHJlZUVsZW1lbnQucHJvdG90eXBlOworCisvKioKKyAqIEBjb25z
dHJ1Y3RvcgogICogQGV4dGVuZHMge1dlYkluc3BlY3Rvci5WaWV3fQogICovCiBXZWJJbnNwZWN0
b3IuU3RvcmFnZUNhdGVnb3J5VmlldyA9IGZ1bmN0aW9uKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2V0dGluZ3MuanMgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL1NldHRpbmdzLmpzCmluZGV4IGFkZGEwMmM3OGNiMTA0YWM1ZWE3
NjFiMjdiYmYyZTI2ZjRhYjlkMGIuLjIyNTU0NzBkYzY1YThlOWRlNmMxZGQwYjZkMmI2MWVlNDg0
NjRkOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2V0
dGluZ3MuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TZXR0aW5n
cy5qcwpAQCAtNDQsNyArNDQsOCBAQCB2YXIgUHJlZmVyZW5jZXMgPSB7CiAgICAgZXhwb3NlV29y
a2Vyc0luc3BlY3Rpb246IGZhbHNlLAogICAgIGFwcGxpY2F0aW9uVGl0bGU6ICJXZWIgSW5zcGVj
dG9yIC0gJXMiLAogICAgIHNob3dIZWFwU25hcHNob3RPYmplY3RzSGlkZGVuUHJvcGVydGllczog
ZmFsc2UsCi0gICAgc2hvd0RvY2tUb1JpZ2h0OiBmYWxzZQorICAgIHNob3dEb2NrVG9SaWdodDog
ZmFsc2UsCisgICAgZXhwb3NlRmlsZVN5c3RlbUluc3BlY3Rpb246IGZhbHNlCiB9CiAKIHZhciBD
YXBhYmlsaXRpZXMgPSB7CkBAIC0xODMsNiArMTg0LDcgQEAgV2ViSW5zcGVjdG9yLkV4cGVyaW1l
bnRzU2V0dGluZ3MgPSBmdW5jdGlvbigpCiAgICAgdGhpcy5zaG93U2hhZG93RE9NID0gdGhpcy5f
Y3JlYXRlRXhwZXJpbWVudCgic2hvd1NoYWRvd0RPTSIsICJTaG93IHNoYWRvdyBET00iKTsKICAg
ICB0aGlzLnNuaXBwZXRzU3VwcG9ydCA9IHRoaXMuX2NyZWF0ZUV4cGVyaW1lbnQoInNuaXBwZXRz
U3VwcG9ydCIsICJTbmlwcGV0cyBzdXBwb3J0Iik7CiAgICAgdGhpcy5uYXRpdmVNZW1vcnlTbmFw
c2hvdHMgPSB0aGlzLl9jcmVhdGVFeHBlcmltZW50KCJuYXRpdmVNZW1vcnlTbmFwc2hvdHMiLCAi
TmF0aXZlIG1lbW9yeSBwcm9maWxpbmciKTsKKyAgICB0aGlzLmZpbGVTeXN0ZW1JbnNwZWN0aW9u
ID0gdGhpcy5fY3JlYXRlRXhwZXJpbWVudCgiZmlsZVN5c3RlbUluc3BlY3Rpb24iLCAiRmlsZVN5
c3RlbSBpbnNwZWN0aW9uIik7CiAKICAgICB0aGlzLl9jbGVhblVwU2V0dGluZygpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9XZWJLaXQucXJjIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9XZWJLaXQucXJjCmluZGV4IDI1N2Ey
YTkyMmViZjg5NjAzMDNmMjI2YWYwOTAwOThkMzI1YTZkMTAuLmI2YjJhZGU4NDU2YmYxYTIwYTY4
YTIxN2NmMTg1Njg1MDVhZjE2NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvV2ViS2l0LnFyYworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL1dlYktpdC5xcmMKQEAgLTU4LDYgKzU4LDcgQEAKICAgICA8ZmlsZT5FeHRlbnNpb25S
ZWdpc3RyeVN0dWIuanM8L2ZpbGU+CiAgICAgPGZpbGU+RXh0ZW5zaW9uU2VydmVyLmpzPC9maWxl
PgogICAgIDxmaWxlPkZpbGVNYW5hZ2VyLmpzPC9maWxlPgorICAgIDxmaWxlPkZpbGVTeXN0ZW1N
b2RlbC5qczwvZmlsZT4KICAgICA8ZmlsZT5GaWx0ZXJlZEl0ZW1TZWxlY3Rpb25EaWFsb2cuanM8
L2ZpbGU+CiAgICAgPGZpbGU+Rm9udFZpZXcuanM8L2ZpbGU+CiAgICAgPGZpbGU+R29Ub0xpbmVE
aWFsb2cuanM8L2ZpbGU+CkBAIC0yNDMsNiArMjQ0LDcgQEAKICAgICA8ZmlsZT5JbWFnZXMvZXJy
b3JJY29uLnBuZzwvZmlsZT4KICAgICA8ZmlsZT5JbWFnZXMvZXJyb3JNZWRpdW1JY29uLnBuZzwv
ZmlsZT4KICAgICA8ZmlsZT5JbWFnZXMvZXJyb3JSZWREb3QucG5nPC9maWxlPgorICAgIDxmaWxl
PkltYWdlcy9maWxlc3lzdGVtLnBuZzwvZmlsZT4KICAgICA8ZmlsZT5JbWFnZXMvZm9yd2FyZC5w
bmc8L2ZpbGU+CiAgICAgPGZpbGU+SW1hZ2VzL2ZyYW1lLnBuZzwvZmlsZT4KICAgICA8ZmlsZT5J
bWFnZXMvZ2xvc3N5SGVhZGVyLnBuZzwvZmlsZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmh0bWwgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5odG1sCmluZGV4IGFkOTAzZjg3Mjk2MzFlMDk1ZTE0
MTI3MDRiOTA1MDcwYjczZjhjMmMuLjU2ZDFkZDQ0NjY0M2M0ZDFlOGE5NjU1ZTJlYTI3ZjM2YmZh
Zjc1NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5z
cGVjdG9yLmh0bWwKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNw
ZWN0b3IuaHRtbApAQCAtMTYwLDYgKzE2MCw3IEBAIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgICAgPHNjcmlwdCB0eXBl
PSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iU291cmNlQ1NTVG9rZW5pemVyLmpzIj48L3NjcmlwdD4K
ICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJTb3VyY2VIVE1MVG9rZW5p
emVyLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3Jj
PSJTb3VyY2VKYXZhU2NyaXB0VG9rZW5pemVyLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHR5
cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJGaWxlU3lzdGVtTW9kZWwuanMiPjwvc2NyaXB0Pgog
ICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IkZvbnRWaWV3LmpzIj48L3Nj
cmlwdD4KICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJJbWFnZVZpZXcu
anMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IkRh
dGFiYXNlVGFibGVWaWV3LmpzIj48L3NjcmlwdD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvcmVzb3VyY2VzUGFuZWwuY3NzIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9yZXNvdXJjZXNQYW5lbC5jc3MKaW5kZXggNGQ2Y2EyYjEyOWQ1
M2Y2NTI0ZDViYmY2ZmRiZDA5YWMxMmFjMGJkNC4uOWJlODc2MjYwMWIwMWY3NDllYjg1MzA5NWU0
NDJkMWZlOWI0MjU4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9yZXNvdXJjZXNQYW5lbC5jc3MKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9yZXNvdXJjZXNQYW5lbC5jc3MKQEAgLTMyNiw3ICszMjYsNiBAQCBsaS5zZWxlY3Rl
ZCAuYmFzZS1zdG9yYWdlLXRyZWUtZWxlbWVudC1zdWJ0aXRsZSB7CiAgICAgY29udGVudDogdXJs
KEltYWdlcy9hcHBsaWNhdGlvbkNhY2hlLnBuZyk7CiB9CiAKLS8qIEZJWE1FOiBNYWtlIHNlcGFy
YXRlIHBuZyBmb3IgZmlsZS1zeXN0ZW0gKi8KLS5maWxlLXN5c3RlbS1zdG9yYWdlLXRyZWUtaXRl
bSAuaWNvbiB7Ci0gICAgY29udGVudDogdXJsKEltYWdlcy9hcHBsaWNhdGlvbkNhY2hlLnBuZyk7
CisuZmlsZXN5c3RlbS1zdG9yYWdlLXRyZWUtaXRlbSAuaWNvbiB7CisgICAgY29udGVudDogdXJs
KEltYWdlcy9maWxlc3lzdGVtLnBuZyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL3V0aWxpdGllcy5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvdXRpbGl0aWVzLmpzCmluZGV4IDFkNzIyNWIyNmY4YmViZTNjOTBkYzllNGY1
ZTg1YmQwMGJlZThkZjcuLjhkZTE0M2I0ZTE1NGVmMzA3YzczYTI2NmM3MDExNGEwYmE4NTNlYmIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvdXRpbGl0aWVz
LmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvdXRpbGl0aWVzLmpz
CkBAIC02NzUsNCArNjc1LDE0IEBAIE1hcC5wcm90b3R5cGUgPSB7CiAgICAgewogICAgICAgICB0
aGlzLl9tYXAgPSB7fTsKICAgICB9Ci19Cit9OworCitPYmplY3QuZGVmaW5lUHJvcGVydHkoT2Jq
ZWN0LnByb3RvdHlwZSwgImlzRW1wdHkiLAoreworICAgIHZhbHVlOiBmdW5jdGlvbigpCisgICAg
eworICAgICAgICBmb3IgKHZhciBpIGluIHRoaXMpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KK30pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvanMvRGV2VG9vbHMuanMgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9qcy9EZXZUb29scy5qcwppbmRleCBjNGQ1NDIzOGRiZDZiODQ0MDdlZDQzMTZhNmIwYzI3
ZjM0ZTA1ZGZkLi4xMjI5M2Y1YjE4MWI2NGY4YmY0NDdlNzc0ODFmMmEzMDY4YWIyZWRhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9qcy9EZXZUb29scy5qcworKysgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9qcy9EZXZUb29scy5qcwpAQCAtNDEsNiArNDEsNyBA
QAogICAgIFByZWZlcmVuY2VzLmV4cG9zZURpc2FibGVDYWNoZSA9IHRydWU7CiAgICAgUHJlZmVy
ZW5jZXMuZXhwb3NlV29ya2Vyc0luc3BlY3Rpb24gPSB0cnVlOwogICAgIFByZWZlcmVuY2VzLnNo
b3dEb2NrVG9SaWdodCA9IHRydWU7CisgICAgUHJlZmVyZW5jZXMuZXhwb3NlRmlsZVN5c3RlbUlu
c3BlY3Rpb24gPSB0cnVlOwogfSkoKTt9CiAKIGZ1bmN0aW9uIGJ1aWxkUGxhdGZvcm1FeHRlbnNp
b25BUEkoZXh0ZW5zaW9uSW5mbykK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>146446</attachid>
            <date>2012-06-07 18:42:40 -0700</date>
            <delta_ts>2012-06-08 02:50:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-72691-20120608104239.patch</filename>
            <type>text/plain</type>
            <size>24764</size>
            <attacher name="Taiju Tsuiki">tzik</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE5NjU3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGVmOTQwMGVhM2UwNmNh
NmMzZWY4NDUwM2IwM2VhMDkyMDBiYTJhYS4uMTI2YmNkYWY1NThmOTU3ZWZhYzBjNzg4MzllOTU4
Nzk0YTkzZWM4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDEyLTA2LTA2ICBUYWlq
dSBUc3Vpa2kgIDx0emlrQGNocm9taXVtLm9yZz4KKworICAgICAgICBBZGQgRmlsZVN5c3RlbSBp
dGVtIHRvIHN0b3JhZ2UgdHJlZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTcyNjkxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2Vi
Q29yZS52Y3Byb2o6CisgICAgICAgICogaW5zcGVjdG9yL2NvbXBpbGUtZnJvbnQtZW5kLnB5Ogor
ICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvRmlsZVN5c3RlbU1vZGVsLmpzOiBBZGRlZC4K
KyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0ltYWdlcy9maWxlU3lzdGVtLnBuZzogQWRk
ZWQuCisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZXNQYW5lbC5qczoKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtTGlzdFRyZWVFbGVtZW50KToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtTGlzdFRyZWVFbGVtZW50LnByb3RvdHlwZS5vbmV4cGFu
ZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbUxpc3RUcmVlRWxlbWVudC5wcm90
b3R5cGUub25hdHRhY2gpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1MaXN0VHJl
ZUVsZW1lbnQucHJvdG90eXBlLl9oYW5kbGVDb250ZXh0TWVudUV2ZW50KToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5GaWxlU3lzdGVtTGlzdFRyZWVFbGVtZW50LnByb3RvdHlwZS5fZmlsZVN5c3Rl
bUFkZGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtTGlzdFRyZWVFbGVtZW50
LnByb3RvdHlwZS5fZmlsZVN5c3RlbVJlbW92ZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkZp
bGVTeXN0ZW1MaXN0VHJlZUVsZW1lbnQucHJvdG90eXBlLl9maWxlU3lzdGVtVHJlZUVsZW1lbnRC
eU5hbWUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1MaXN0VHJlZUVsZW1lbnQu
cHJvdG90eXBlLl9yZWZyZXNoRmlsZVN5c3RlbSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRmls
ZVN5c3RlbVRyZWVFbGVtZW50KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtVHJl
ZUVsZW1lbnQucHJvdG90eXBlLmdldCBmaWxlU3lzdGVtTmFtZSk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuRmlsZVN5c3RlbVRyZWVFbGVtZW50LnByb3RvdHlwZS5nZXQgaXRlbVVSTCk6CisgICAg
ICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9TZXR0aW5ncy5qczoKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5FeHBlcmltZW50c1NldHRpbmdzKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5k
L1dlYktpdC5xcmM6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuaHRt
bDoKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL3Jlc291cmNlc1BhbmVsLmNzczoKKyAg
ICAgICAgKC5maWxlLXN5c3RlbS1zdG9yYWdlLXRyZWUtaXRlbSAuaWNvbik6CisgICAgICAgICog
aW5zcGVjdG9yL2Zyb250LWVuZC91dGlsaXRpZXMuanM6CisKIDIwMTItMDYtMDYgIEZpbGlwIFBp
emxvICA8ZnBpemxvQGFwcGxlLmNvbT4KIAogICAgICAgICBHbG9iYWwgb2JqZWN0IHZhcmlhYmxl
IGFjY2Vzc2VzIHNob3VsZCBub3QgcmVxdWlyZSBhbiBleHRyYSBsb2FkCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCmluZGV4IGI4NjI5ZjkyMjI1MmQ3ZGU4YjExZDg2MzI3NzBmOGRjNjAxYjYxNWIu
LjhhNjJhMDIzYjFjMzYyOGI0YjNhYzM2ZDUyYmFkYmZlOGIwOGE1YTMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTItMDYtMDYgIFRhaWp1IFRzdWlraSAg
PHR6aWtAY2hyb21pdW0ub3JnPgorCisgICAgICAgIEFkZCBGaWxlU3lzdGVtIGl0ZW0gdG8gc3Rv
cmFnZSB0cmVlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NzI2OTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIHNyYy9qcy9EZXZUb29scy5qczoKKwogMjAxMi0wNi0wNiAgSmFtZXMgUm9iaW5zb24gIDxq
YW1lc3JAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0gTW92ZSBpbXBsZW1lbnRh
dGlvbiBvZiBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRCBhbmQgcmVsYXRlZCBmcm9tIFdlYktp
dC9jaHJvbWl1bS9zcmMgdG8gV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLmd5cGkKaW5kZXggNGE5Yzg1NzhmNDAwZDI4NzEwMWJhYWYxNjZiZTFkYTA0MDIxZmRjNi4u
M2YwZTEyNjQ3ODQzMjdiYzkxOGYxMDkxYjJhODNmYTRhMWZlYjg3MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lw
aQpAQCAtNjQwOCw2ICs2NDA4LDcgQEAKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5k
L0V4dGVuc2lvblJlZ2lzdHJ5U3R1Yi5qcycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250
LWVuZC9FeHRlbnNpb25TZXJ2ZXIuanMnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1l
bmQvRmlsZU1hbmFnZXIuanMnLAorICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvRmls
ZVN5c3RlbU1vZGVsLmpzJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0ZpbHRl
cmVkSXRlbVNlbGVjdGlvbkRpYWxvZy5qcycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250
LWVuZC9Gb250Vmlldy5qcycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9Hb1Rv
TGluZURpYWxvZy5qcycsCkBAIC02NjAxLDYgKzY2MDIsNyBAQAogICAgICAgICAgICAgJ2luc3Bl
Y3Rvci9mcm9udC1lbmQvSW1hZ2VzL2Vycm9yTWVkaXVtSWNvbi5wbmcnLAogICAgICAgICAgICAg
J2luc3BlY3Rvci9mcm9udC1lbmQvSW1hZ2VzL2Vycm9yUmVkRG90LnBuZycsCiAgICAgICAgICAg
ICAnaW5zcGVjdG9yL2Zyb250LWVuZC9JbWFnZXMvZm9yd2FyZC5wbmcnLAorICAgICAgICAgICAg
J2luc3BlY3Rvci9mcm9udC1lbmQvSW1hZ2VzL2ZpbGVTeXN0ZW0ucG5nJywKICAgICAgICAgICAg
ICdpbnNwZWN0b3IvZnJvbnQtZW5kL0ltYWdlcy9mcmFtZS5wbmcnLAogICAgICAgICAgICAgJ2lu
c3BlY3Rvci9mcm9udC1lbmQvSW1hZ2VzL2dsb3NzeUhlYWRlci5wbmcnLAogICAgICAgICAgICAg
J2luc3BlY3Rvci9mcm9udC1lbmQvSW1hZ2VzL2dsb3NzeUhlYWRlclByZXNzZWQucG5nJywKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKaW5kZXggNGZkYTdh
ZDE4Y2Y4MjY4NzE3YTYyZWFlNWU2MzFiNzZkZTg5NjEzMy4uNDRmOTI5ZjU5NTRiM2QzM2I4OGQ0
MjQ2NzcwY2VjZGVjZWU5ZGZlNSAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52
Y3Byb2ovV2ViQ29yZS52Y3Byb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ov
V2ViQ29yZS52Y3Byb2oKQEAgLTc0NjIyLDYgKzc0NjIyLDEwIEBACiAJCQkJCT4KIAkJCQk8L0Zp
bGU+CiAJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxpbnNwZWN0b3JcZnJvbnQtZW5k
XEZpbGVTeXN0ZW1Nb2RlbC5qcyIKKwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQogCQkJ
CQlSZWxhdGl2ZVBhdGg9Ii4uXGluc3BlY3Rvclxmcm9udC1lbmRcZmlsdGVyZWRJdGVtU2VsZWN0
aW9uRGlhbG9nLmNzcyIKIAkJCQkJPgogCQkJCTwvRmlsZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9jb21waWxlLWZyb250LWVuZC5weSBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9jb21waWxlLWZyb250LWVuZC5weQppbmRleCBhM2IyMWY0OTI2OGIzMTgxZmFkN2Iz
Y2YzNjliOWQ3M2MzMmU1Y2U2Li5jMzI4MTViZTdiYTVhMDA4ZTM1NzNiMmEyZjE2MGQxZThiN2Y1
MTcxIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvY29tcGlsZS1mcm9udC1l
bmQucHkKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2NvbXBpbGUtZnJvbnQtZW5kLnB5
CkBAIC04Miw2ICs4Miw3IEBAIG1vZHVsZXMgPSBbCiAgICAgICAgICAgICAiRGVidWdnZXJSZXNv
dXJjZUJpbmRpbmcuanMiLAogICAgICAgICAgICAgIkRlYnVnZ2VyU2NyaXB0TWFwcGluZy5qcyIs
CiAgICAgICAgICAgICAiRmlsZU1hbmFnZXIuanMiLAorICAgICAgICAgICAgIkZpbGVTeXN0ZW1N
b2RlbC5qcyIsCiAgICAgICAgICAgICAiSEFSRW50cnkuanMiLAogICAgICAgICAgICAgIkluZGV4
ZWREQk1vZGVsLmpzIiwKICAgICAgICAgICAgICJMaW5raWZpZXIuanMiLApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9GaWxlU3lzdGVtTW9kZWwuanMgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0ZpbGVTeXN0ZW1Nb2RlbC5qcwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4xZTc5Yzc1Y2U3MzBkMDU1MjFjZDYzOWJjMzJhNzE2MDU5ODMyZjM5Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9GaWxlU3lzdGVt
TW9kZWwuanMKQEAgLTAsMCArMSwyMjUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICog
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQor
ICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVp
dGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisvKioKKyAqIEBjb25zdHJ1Y3RvcgorICogQGV4dGVu
ZHMge1dlYkluc3BlY3Rvci5PYmplY3R9CisgKiBAaW1wbGVtZW50cyB7RmlsZVN5c3RlbUFnZW50
LkRpc3BhdGNoZXJ9CisgKi8KK1dlYkluc3BlY3Rvci5GaWxlU3lzdGVtTW9kZWwgPSBmdW5jdGlv
bigpCit7CisgICAgV2ViSW5zcGVjdG9yLk9iamVjdC5jYWxsKHRoaXMpOworCisgICAgdGhpcy5f
b3JpZ2luRm9yRnJhbWVJZCA9IHt9OworICAgIHRoaXMuX2ZyYW1lSWRzRm9yT3JpZ2luID0ge307
CisgICAgdGhpcy5fZmlsZVN5c3RlbXNGb3JPcmlnaW4gPSB7fTsKKworICAgIFdlYkluc3BlY3Rv
ci5yZXNvdXJjZVRyZWVNb2RlbC5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5SZXNvdXJj
ZVRyZWVNb2RlbC5FdmVudFR5cGVzLkZyYW1lQWRkZWQsIHRoaXMuX2ZyYW1lQWRkZWQsIHRoaXMp
OworICAgIFdlYkluc3BlY3Rvci5yZXNvdXJjZVRyZWVNb2RlbC5hZGRFdmVudExpc3RlbmVyKFdl
Ykluc3BlY3Rvci5SZXNvdXJjZVRyZWVNb2RlbC5FdmVudFR5cGVzLkZyYW1lTmF2aWdhdGVkLCB0
aGlzLl9mcmFtZU5hdmlnYXRlZCwgdGhpcyk7CisgICAgV2ViSW5zcGVjdG9yLnJlc291cmNlVHJl
ZU1vZGVsLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlJlc291cmNlVHJlZU1vZGVsLkV2
ZW50VHlwZXMuRnJhbWVEZXRhY2hlZCwgdGhpcy5fZnJhbWVEZXRhY2hlZCwgdGhpcyk7CisKKyAg
ICBJbnNwZWN0b3JCYWNrZW5kLnJlZ2lzdGVyRmlsZVN5c3RlbURpc3BhdGNoZXIodGhpcyk7Cisg
ICAgRmlsZVN5c3RlbUFnZW50LmVuYWJsZSgpOworCisgICAgaWYgKFdlYkluc3BlY3Rvci5yZXNv
dXJjZVRyZWVNb2RlbC5tYWluRnJhbWUpCisgICAgICAgIHRoaXMuX2F0dGFjaEZyYW1lUmVjdXJz
aXZlbHkoV2ViSW5zcGVjdG9yLnJlc291cmNlVHJlZU1vZGVsLm1haW5GcmFtZSk7Cit9CisKK1dl
Ykluc3BlY3Rvci5GaWxlU3lzdGVtTW9kZWwucHJvdG90eXBlID0geworICAgIC8qKgorICAgICAq
IEBwYXJhbSB7V2ViSW5zcGVjdG9yLkV2ZW50fSBldmVudAorICAgICAqLworICAgIF9mcmFtZUFk
ZGVkOiBmdW5jdGlvbihldmVudCkKKyAgICB7CisgICAgICAgIHZhciBmcmFtZSA9IC8qKiBAdHlw
ZSB7V2ViSW5zcGVjdG9yLlJlc291cmNlVHJlZUZyYW1lfSAqLyBldmVudC5kYXRhOworICAgICAg
ICB0aGlzLl9hdHRhY2hGcmFtZVJlY3Vyc2l2ZWx5KGZyYW1lKTsKKyAgICB9LAorCisgICAgLyoq
CisgICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuRXZlbnR9IGV2ZW50CisgICAgICovCisgICAg
X2ZyYW1lTmF2aWdhdGVkOiBmdW5jdGlvbihldmVudCkKKyAgICB7CisgICAgICAgIHZhciBmcmFt
ZSA9IC8qKiBAdHlwZSB7V2ViSW5zcGVjdG9yLlJlc291cmNlVHJlZUZyYW1lfSAqLyBldmVudC5k
YXRhOworICAgICAgICB0aGlzLl9hdHRhY2hGcmFtZVJlY3Vyc2l2ZWx5KGZyYW1lKTsKKyAgICB9
LAorCisgICAgLyoqCisgICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuRXZlbnR9IGV2ZW50Cisg
ICAgICovCisgICAgX2ZyYW1lRGV0YWNoZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIHsKKyAgICAg
ICAgdmFyIGZyYW1lID0gLyoqIEB0eXBlIHtXZWJJbnNwZWN0b3IuUmVzb3VyY2VUcmVlRnJhbWV9
ICovIGV2ZW50LmRhdGE7CisgICAgICAgIHRoaXMuX2RldGFjaEZyYW1lUmVjdXJzaXZlbHkoZnJh
bWUpOworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5SZXNv
dXJjZVRyZWVGcmFtZX0gZnJhbWUKKyAgICAgKi8KKyAgICBfYXR0YWNoRnJhbWU6IGZ1bmN0aW9u
KGZyYW1lKQorICAgIHsKKyAgICAgICAgaWYgKHRoaXMuX29yaWdpbkZvckZyYW1lSWRbZnJhbWUu
aWRdKQorICAgICAgICAgICAgdGhpcy5fZGV0YWNoRnJhbWVSZWN1cnNpdmVseShmcmFtZSk7CisK
KyAgICAgICAgaWYgKGZyYW1lLnNlY3VyaXR5T3JpZ2luID09PSAibnVsbCIpCisgICAgICAgICAg
ICByZXR1cm47CisKKyAgICAgICAgdGhpcy5fb3JpZ2luRm9yRnJhbWVJZFtmcmFtZS5pZF0gPSBm
cmFtZS5zZWN1cml0eU9yaWdpbjsKKworICAgICAgICB2YXIgbmV3T3JpZ2luID0gZmFsc2U7Cisg
ICAgICAgIGlmICghdGhpcy5fZnJhbWVJZHNGb3JPcmlnaW5bZnJhbWUuc2VjdXJpdHlPcmlnaW5d
KSB7CisgICAgICAgICAgICB0aGlzLl9mcmFtZUlkc0Zvck9yaWdpbltmcmFtZS5zZWN1cml0eU9y
aWdpbl0gPSB7fTsKKyAgICAgICAgICAgIG5ld09yaWdpbiA9IHRydWU7CisgICAgICAgIH0KKyAg
ICAgICAgdGhpcy5fZnJhbWVJZHNGb3JPcmlnaW5bZnJhbWUuc2VjdXJpdHlPcmlnaW5dW2ZyYW1l
LmlkXSA9IGZyYW1lLmlkOworICAgICAgICBpZiAobmV3T3JpZ2luKQorICAgICAgICAgICAgdGhp
cy5fb3JpZ2luQWRkZWQoZnJhbWUuc2VjdXJpdHlPcmlnaW4pOworICAgIH0sCisKKyAgICAvKioK
KyAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5SZXNvdXJjZVRyZWVGcmFtZX0gZnJhbWUKKyAg
ICAgKi8KKyAgICBfYXR0YWNoRnJhbWVSZWN1cnNpdmVseTogZnVuY3Rpb24oZnJhbWUpCisgICAg
eworICAgICAgICB0aGlzLl9hdHRhY2hGcmFtZShmcmFtZSk7CisgICAgICAgIGZvciAodmFyIGkg
PSAwOyBpIDwgZnJhbWUuY2hpbGRGcmFtZXMubGVuZ3RoOyArK2kpCisgICAgICAgICAgICB0aGlz
Ll9hdHRhY2hGcmFtZVJlY3Vyc2l2ZWx5KGZyYW1lLmNoaWxkRnJhbWVzW2ldKTsKKyAgICB9LAor
CisgICAgLyoqCisgICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuUmVzb3VyY2VUcmVlRnJhbWV9
IGZyYW1lCisgICAgICovCisgICAgX2RldGFjaEZyYW1lOiBmdW5jdGlvbihmcmFtZSkKKyAgICB7
CisgICAgICAgIGlmICghdGhpcy5fb3JpZ2luRm9yRnJhbWVJZFtmcmFtZS5pZF0pCisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIHZhciBvcmlnaW4gPSB0aGlzLl9vcmlnaW5Gb3JGcmFtZUlk
W2ZyYW1lLmlkXTsKKyAgICAgICAgZGVsZXRlIHRoaXMuX29yaWdpbkZvckZyYW1lSWRbZnJhbWUu
aWRdOworICAgICAgICBkZWxldGUgdGhpcy5fZnJhbWVJZHNGb3JPcmlnaW5bb3JpZ2luXVtmcmFt
ZS5pZF07CisKKyAgICAgICAgdmFyIGxhc3RPcmlnaW4gPSB0aGlzLl9mcmFtZUlkc0Zvck9yaWdp
bltvcmlnaW5dLmlzRW1wdHkoKTsKKyAgICAgICAgaWYgKGxhc3RPcmlnaW4pIHsKKyAgICAgICAg
ICAgIGRlbGV0ZSB0aGlzLl9mcmFtZUlkc0Zvck9yaWdpbltvcmlnaW5dOworICAgICAgICAgICAg
dGhpcy5fb3JpZ2luUmVtb3ZlZChvcmlnaW4pOworICAgICAgICB9CisgICAgfSwKKworICAgIC8q
KgorICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlJlc291cmNlVHJlZUZyYW1lfSBmcmFtZQor
ICAgICAqLworICAgIF9kZXRhY2hGcmFtZVJlY3Vyc2l2ZWx5OiBmdW5jdGlvbihmcmFtZSkKKyAg
ICB7CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZnJhbWUuY2hpbGRGcmFtZXMubGVuZ3Ro
OyArK2kpCisgICAgICAgICAgICB0aGlzLl9kZXRhY2hGcmFtZVJlY3Vyc2l2ZWx5KGZyYW1lLmNo
aWxkRnJhbWVzW2ldKTsKKyAgICAgICAgdGhpcy5fZGV0YWNoRnJhbWUoZnJhbWUpOworICAgIH0s
CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gb3JpZ2luCisgICAgICovCisgICAg
X29yaWdpbkFkZGVkOiBmdW5jdGlvbihvcmlnaW4pCisgICAgeworICAgICAgICB0aGlzLl9maWxl
U3lzdGVtc0Zvck9yaWdpbltvcmlnaW5dID0ge307CisKKyAgICAgICAgdmFyIHR5cGVzID0gWyJw
ZXJzaXN0ZW50IiwgInRlbXBvcmFyeSJdOworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHR5
cGVzLmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICAvLyBGSVhNRSg4ODYwMik6IENoZWNrIGlm
IHRoZSBmaWxlc3lzdGVtIGlzIGluaXRpYWxpemVkLCBhbmQgc2hvdyBpdCBvbmx5IGlmIGl0IHdh
cy4KKyAgICAgICAgICAgIHZhciBmaWxlU3lzdGVtID0gbmV3IFdlYkluc3BlY3Rvci5GaWxlU3lz
dGVtTW9kZWwuRmlsZVN5c3RlbSh0aGlzLCBvcmlnaW4sIHR5cGVzW2ldKTsKKyAgICAgICAgICAg
IHRoaXMuX2ZpbGVTeXN0ZW1zRm9yT3JpZ2luW29yaWdpbl1bdHlwZXNbaV1dID0gZmlsZVN5c3Rl
bTsKKyAgICAgICAgICAgIHRoaXMuX2ZpbGVTeXN0ZW1BZGRlZChmaWxlU3lzdGVtKTsKKyAgICAg
ICAgfQorICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gb3JpZ2luCisg
ICAgICovCisgICAgX29yaWdpblJlbW92ZWQ6IGZ1bmN0aW9uKG9yaWdpbikKKyAgICB7CisgICAg
ICAgIGZvciAodmFyIHR5cGUgaW4gdGhpcy5fZmlsZVN5c3RlbXNGb3JPcmlnaW5bb3JpZ2luXSkg
eworICAgICAgICAgICAgdmFyIGZpbGVTeXN0ZW0gPSB0aGlzLl9maWxlU3lzdGVtc0Zvck9yaWdp
bltvcmlnaW5dW3R5cGVdOworICAgICAgICAgICAgZGVsZXRlIHRoaXMuX2ZpbGVTeXN0ZW1zRm9y
T3JpZ2luW29yaWdpbl1bdHlwZV07CisgICAgICAgICAgICB0aGlzLl9maWxlU3lzdGVtUmVtb3Zl
ZChmaWxlU3lzdGVtKTsKKyAgICAgICAgfQorICAgICAgICBkZWxldGUgdGhpcy5fZmlsZVN5c3Rl
bXNGb3JPcmlnaW5bb3JpZ2luXTsKKyAgICB9LAorCisgICAgLyoqCisgICAgICogQHBhcmFtIHtX
ZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1vZGVsLkZpbGVTeXN0ZW19IGZpbGVTeXN0ZW0KKyAgICAg
Ki8KKyAgICBfZmlsZVN5c3RlbUFkZGVkOiBmdW5jdGlvbihmaWxlU3lzdGVtKQorICAgIHsKKyAg
ICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLkZpbGVTeXN0
ZW1Nb2RlbC5FdmVudFR5cGVzLkZpbGVTeXN0ZW1BZGRlZCwgZmlsZVN5c3RlbSk7CisgICAgfSwK
KworICAgIC8qKgorICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbC5G
aWxlU3lzdGVtfSBmaWxlU3lzdGVtCisgICAgICovCisgICAgX2ZpbGVTeXN0ZW1SZW1vdmVkOiBm
dW5jdGlvbihmaWxlU3lzdGVtKQorICAgIHsKKyAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9M
aXN0ZW5lcnMoV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbC5FdmVudFR5cGVzLkZpbGVTeXN0
ZW1SZW1vdmVkLCBmaWxlU3lzdGVtKTsKKyAgICB9LAorCisgICAgcmVmcmVzaEZpbGVTeXN0ZW1M
aXN0OiBmdW5jdGlvbigpCisgICAgeworICAgICAgICBmb3IgKHZhciBvcmlnaW4gaW4gdGhpcy5f
ZmlsZVN5c3RlbXNGb3JPcmlnaW4pCisgICAgICAgICAgICBmb3IgKHZhciB0eXBlIGluIHRoaXMu
X2ZpbGVTeXN0ZW1zRm9yT3JpZ2luW29yaWdpbl0pCisgICAgICAgICAgICAgICAgdGhpcy5fZmls
ZVN5c3RlbVJlbW92ZWQodGhpcy5fZmlsZVN5c3RlbXNGb3JPcmlnaW5bb3JpZ2luXVt0eXBlXSk7
CisKKyAgICAgICAgZm9yICh2YXIgb3JpZ2luIGluIHRoaXMuX2ZpbGVTeXN0ZW1zRm9yT3JpZ2lu
KQorICAgICAgICAgICAgZm9yICh2YXIgdHlwZSBpbiB0aGlzLl9maWxlU3lzdGVtc0Zvck9yaWdp
bltvcmlnaW5dKQorICAgICAgICAgICAgICAgIHRoaXMuX2ZpbGVTeXN0ZW1BZGRlZCh0aGlzLl9m
aWxlU3lzdGVtc0Zvck9yaWdpbltvcmlnaW5dW3R5cGVdKTsKKyAgICB9Cit9CisKK1dlYkluc3Bl
Y3Rvci5GaWxlU3lzdGVtTW9kZWwuRXZlbnRUeXBlcyA9IHsKKyAgICBGaWxlU3lzdGVtQWRkZWQ6
ICJGaWxlU3lzdGVtQWRkZWQiLAorICAgIEZpbGVTeXN0ZW1SZW1vdmVkOiAiRmlsZVN5c3RlbVJl
bW92ZWQiCit9CisKK1dlYkluc3BlY3Rvci5GaWxlU3lzdGVtTW9kZWwucHJvdG90eXBlLl9fcHJv
dG9fXyA9IFdlYkluc3BlY3Rvci5PYmplY3QucHJvdG90eXBlOworCisvKioKKyAqIEBjb25zdHJ1
Y3RvcgorICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1vZGVsfSBmaWxlU3lzdGVt
TW9kZWwKKyAqIEBwYXJhbSB7c3RyaW5nfSBvcmlnaW4KKyAqIEBwYXJhbSB7c3RyaW5nfSB0eXBl
CisgKi8KK1dlYkluc3BlY3Rvci5GaWxlU3lzdGVtTW9kZWwuRmlsZVN5c3RlbSA9IGZ1bmN0aW9u
KGZpbGVTeXN0ZW1Nb2RlbCwgb3JpZ2luLCB0eXBlKQoreworICAgIHRoaXMub3JpZ2luID0gb3Jp
Z2luOworICAgIHRoaXMudHlwZSA9IHR5cGU7Cit9CisKK1dlYkluc3BlY3Rvci5GaWxlU3lzdGVt
TW9kZWwuRmlsZVN5c3RlbS5wcm90b3R5cGUgPSB7CisgICAgZ2V0IG5hbWUoKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuICJmaWxlc3lzdGVtOiIgKyB0aGlzLm9yaWdpbiArICIvIiArIHRoaXMudHlw
ZTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL0ltYWdlcy9maWxlU3lzdGVtLnBuZyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvSW1hZ2VzL2ZpbGVTeXN0ZW0ucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkyNjM4OWRhZDIyNWRjNzcx
YjJiOTYwYzAyNzYyNWViZjE4NTFmYmIKR0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDEyMjYKemNt
VjsqMVUzN0tQKTxoOzNLfExrMDAwZTFOSkxUcTAwMUJXMDAxQmUxXkBzNmI5I0Y4MDAwMDFiNWNo
XzBJdHApCno9PlB4IzI0WUpgTDsoSyl7e2E3Pnl7RDReMDAwU2FOTGgwTDAxRmNVMDFGY1YwR2da
XzAwMDA3YlYqR2AyaXB0Kgp6MV9+U18wdDg8RzAwY0AmTF90KG8hfGoqTmp9JTIxIygma19HclAp
flRgO1JMRiMkfiQ1aDk1bjJMLWR5Z0d2WlEKelBrUWtta21KVjAxTXg9VSE2UHhvcWpEcDlGZmtI
RDVmeDwoTE5LQD5ZdyFjdXVtbUB8P0MxMSEpJSR2PT93UlNHCno/JXZzVylKaTUoPjhgNWhjfFlv
VC0taUdDRnhsa1lnUmoyPnlhNWRNeDtZRkNQSVBeTSM9UVVMcCg2KjEyK1p4QAp6XlpafkspaFo4
QV4/PjQ8akYxMXdHck0tTGlAQDt7cj82SXIjdHQzMTB9eTJ8QigrNHV0d3ZsMEUtMysqe3dKVykK
ejZMPTh5YnY9dHAlKjxLYTkrSTFAWTlZOTRzciRPbGpKaGBFN0Q7SWN2T1Yya01jeFFYJHdqTC1Y
QTg4KmoxRnM2CnoxZ0M5NCl2OUU0ckU4KzlNQyRfOFA3QWZyckUzalFCfkR5MWZwNU0kditqRipg
cG1oMXIyfG8/KXFEMjcrfHdwaQp6TDdlNXA3c3EmVSYlVTApZzBSTFhBMEk3RyFzUjxSUUkpbl5i
TURRJStTdnFFV29oPCRrQlZtcT52dGhsTiQ5Z1cKek9LbU5AVE1QM0dUKWxGWXNjU2JfVHlBaURk
S3Z7KGwpKzZ5SmhGWCtqaGx1cmYkMmFHUD9XR0wxWGZhIVFPUyFCCno5aCN1Ulo8aSk8ViVZaUFs
Wlg+KXdIaFZ9WClHXnJkLUBpYUZKNThTYjVGTzlGZWFiSyk9RHR9PWNIdytzSSllPAp6eGQ9JSFW
Znk5XytqZmt3Pik5dTAjdEhyWGVGUn58Xjg1QEY3YVhUZnA1eXUtKlFvY141c14te0MjY1FobmxY
KX4KenJNclE9Nmd5R0F7cilWOEV0bDJoKipQfEJ5cEokfHpiMWFkST5pe2pKXz59b1N6K14qYDxl
THBHUn4+RGVzdmc0CnpLJHpIM1JYdThxKE9lUn5SRktpeTtsMitLQUxmPFVfT1cleEhmLUdSdX4k
dH40OCNkTE1aTSpuZn5HemVROVE/Mgp6JEcreW0jTUUyQjY3WDNyMzc2LWxhSkdAVXVBNnxmbVVf
TDBfU2NFVHcjMkNRQURUNGkjKW5ZU2R7VGlSS29ANVMKem9BVkd2MTMtV0dFa0pTM1IkZUZQNnlx
I3ZuPD1vUWlZT1J5QVBLMVJiOUw+YzRoJnsjMjVINyVqTFJmN1lCdmgpCno1e3AhblM1NG9HTU55
MGpOQ3MjekVgfTZiTUtHRkBHSilTNTFnK1o4VD9eRUxOWTNxcndOQE82I2lWb044WGlPKAp6bnAk
bnJBMTtBcEM5XlBoRTRtMUxkSFExSUVvanZ5YVR1Myl3PGp5MC10Rkc8Y0dFJTxMKD1mekJ9RlNv
VkVeNzEKekR5IVFeP3x0Q2tJfDE4Qi1KUEs3eXRTJntEPCViWk5rYG1GSDM0R2BpP2NVeSY2UENA
a0BvPHUzM2tQVSh4SU5KCnpVPXQ2bk8xQnZGKHZxUm9qa0o8eHhYWjg0eitCPj1iJUxqSlElT0w/
VSZld1lHJCEhZFU0cSZlQlo3KClTSXctVAp6Yj5nUmpxXnM3cTJuMj8tNmlhQ2pVYCM7YytJZWhu
QDJZTzcqUkR1JDsmUHBMRyYoeGsyTWxHTVc3SWNMQDw5PFcKel41e2VTYVE7dW0mO08zV2wqNSpV
VTJIO2EpNUFRcmB8Kks9Z0B1OTQxQVZ+dWBLOUZaUGZ0JGwxMiZaTXcrVnl5CnpKVj9EKF90dSs9
N1FCZG52a1g0NF80ZEg8PUNoTk5sYjE2QkY+dllKdVlWcnwtZF5qRjB8I0UrR0NWeEkoWEZNfgpv
V3VKM2w3e3pnWGI4S3d2N3ljaT5LUlk0Rm55dm9IPF5UV3kwNypxb002TjwkZj5TTCpDOyRLZQoK
bGl0ZXJhbCAwCkhjbVY/ZDAwMDAxCgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9SZXNvdXJjZXNQYW5lbC5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvUmVzb3VyY2VzUGFuZWwuanMKaW5kZXggNzlmOWJmY2Y0YTcwYzAwYTk4Y2Nk
ZWUyMWNlYWY3NDc5Y2FmZGFmOC4uNjQxYjg1MzUyYmFiZWUwN2YyOGQ0ZDQxY2QyZmFlYzhiYjUy
YThhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNv
dXJjZXNQYW5lbC5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jl
c291cmNlc1BhbmVsLmpzCkBAIC02Nyw2ICs2NywxMSBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2Vz
UGFuZWwgPSBmdW5jdGlvbihkYXRhYmFzZSkKICAgICB0aGlzLmFwcGxpY2F0aW9uQ2FjaGVMaXN0
VHJlZUVsZW1lbnQgPSBuZXcgV2ViSW5zcGVjdG9yLlN0b3JhZ2VDYXRlZ29yeVRyZWVFbGVtZW50
KHRoaXMsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiQXBwbGljYXRpb24gQ2FjaGUiKSwgIkFwcGxp
Y2F0aW9uQ2FjaGUiLCBbImFwcGxpY2F0aW9uLWNhY2hlLXN0b3JhZ2UtdHJlZS1pdGVtIl0pOwog
ICAgIHRoaXMuc2lkZWJhclRyZWUuYXBwZW5kQ2hpbGQodGhpcy5hcHBsaWNhdGlvbkNhY2hlTGlz
dFRyZWVFbGVtZW50KTsKIAorICAgIGlmIChQcmVmZXJlbmNlcy5leHBvc2VGaWxlU3lzdGVtSW5z
cGVjdGlvbiAmJiBXZWJJbnNwZWN0b3IuZXhwZXJpbWVudHNTZXR0aW5ncy5maWxlU3lzdGVtSW5z
cGVjdGlvbi5pc0VuYWJsZWQoKSkgeworICAgICAgICB0aGlzLmZpbGVTeXN0ZW1MaXN0VHJlZUVs
ZW1lbnQgPSBuZXcgV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1MaXN0VHJlZUVsZW1lbnQodGhpcyk7
CisgICAgICAgIHRoaXMuc2lkZWJhclRyZWUuYXBwZW5kQ2hpbGQodGhpcy5maWxlU3lzdGVtTGlz
dFRyZWVFbGVtZW50KTsKKyAgICB9CisKICAgICB0aGlzLnN0b3JhZ2VWaWV3cyA9IHRoaXMuc3Bs
aXRWaWV3Lm1haW5FbGVtZW50OwogICAgIHRoaXMuc3RvcmFnZVZpZXdzLmFkZFN0eWxlQ2xhc3Mo
ImRpZmYtY29udGFpbmVyIik7CiAKQEAgLTE0NzksNiArMTQ4NCw3NyBAQCBXZWJJbnNwZWN0b3Iu
SW5kZXhlZERCVHJlZUVsZW1lbnQucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5T
dG9yYWdlQ2F0ZQogCiAvKioKICAqIEBjb25zdHJ1Y3RvcgorICogQGV4dGVuZHMge1dlYkluc3Bl
Y3Rvci5TdG9yYWdlQ2F0ZWdvcnlUcmVlRWxlbWVudH0KKyAqIEBwYXJhbSB7V2ViSW5zcGVjdG9y
LlJlc291cmNlc1BhbmVsfSBzdG9yYWdlUGFuZWwKKyAqLworV2ViSW5zcGVjdG9yLkZpbGVTeXN0
ZW1MaXN0VHJlZUVsZW1lbnQgPSBmdW5jdGlvbihzdG9yYWdlUGFuZWwpCit7CisgICAgV2ViSW5z
cGVjdG9yLlN0b3JhZ2VDYXRlZ29yeVRyZWVFbGVtZW50LmNhbGwodGhpcywgc3RvcmFnZVBhbmVs
LCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkZpbGVTeXN0ZW0iKSwgIkZpbGVTeXN0ZW0iLCBbImZp
bGUtc3lzdGVtLXN0b3JhZ2UtdHJlZS1pdGVtIl0pOworfQorCitXZWJJbnNwZWN0b3IuRmlsZVN5
c3RlbUxpc3RUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CisgICAgb25leHBhbmQ6IGZ1bmN0aW9u
KCkKKyAgICB7CisgICAgICAgIFdlYkluc3BlY3Rvci5TdG9yYWdlQ2F0ZWdvcnlUcmVlRWxlbWVu
dC5wcm90b3R5cGUub25leHBhbmQuY2FsbCh0aGlzKTsKKyAgICAgICAgdGhpcy5fcmVmcmVzaEZp
bGVTeXN0ZW0oKTsKKyAgICB9LAorCisgICAgb25hdHRhY2g6IGZ1bmN0aW9uKCkKKyAgICB7Cisg
ICAgICAgIFdlYkluc3BlY3Rvci5TdG9yYWdlQ2F0ZWdvcnlUcmVlRWxlbWVudC5wcm90b3R5cGUu
b25hdHRhY2guY2FsbCh0aGlzKTsKKyAgICAgICAgdGhpcy5saXN0SXRlbUVsZW1lbnQuYWRkRXZl
bnRMaXN0ZW5lcigiY29udGV4dG1lbnUiLCB0aGlzLl9oYW5kbGVDb250ZXh0TWVudUV2ZW50LmJp
bmQodGhpcyksIHRydWUpOworICAgIH0sCisKKyAgICBfaGFuZGxlQ29udGV4dE1lbnVFdmVudDog
ZnVuY3Rpb24oZXZlbnQpCisgICAgeworICAgICAgICB2YXIgY29udGV4dE1lbnUgPSBuZXcgV2Vi
SW5zcGVjdG9yLkNvbnRleHRNZW51KCk7CisgICAgICAgIGNvbnRleHRNZW51LmFwcGVuZEl0ZW0o
V2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJSZWZyZXNoIEZpbGVTeXN0ZW0gTGlzdCIpLCB0aGlzLl9y
ZWZyZXNoRmlsZVN5c3RlbS5iaW5kKHRoaXMpKTsKKyAgICAgICAgY29udGV4dE1lbnUuc2hvdyhl
dmVudCk7CisgICAgfSwKKworICAgIF9maWxlU3lzdGVtQWRkZWQ6IGZ1bmN0aW9uKGV2ZW50KQor
ICAgIHsKKyAgICAgICAgdmFyIGZpbGVTeXN0ZW0gPSAvKiogQHR5cGUge1dlYkluc3BlY3Rvci5G
aWxlU3lzdGVtTW9kZWwuRmlsZVN5c3RlbX0gKi8gZXZlbnQuZGF0YTsKKyAgICAgICAgdmFyIGZp
bGVTeXN0ZW1UcmVlRWxlbWVudCA9IG5ldyBXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbVRyZWVFbGVt
ZW50KHRoaXMuX3N0b3JhZ2VQYW5lbCwgZmlsZVN5c3RlbSk7CisgICAgICAgIHRoaXMuYXBwZW5k
Q2hpbGQoZmlsZVN5c3RlbVRyZWVFbGVtZW50KTsKKyAgICB9LAorCisgICAgX2ZpbGVTeXN0ZW1S
ZW1vdmVkOiBmdW5jdGlvbihldmVudCkKKyAgICB7CisgICAgICAgIHZhciBmaWxlU3lzdGVtID0g
LyoqIEB0eXBlIHtXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1vZGVsLkZpbGVTeXN0ZW19ICovIGV2
ZW50LmRhdGE7CisgICAgICAgIHZhciBmaWxlU3lzdGVtVHJlZUVsZW1lbnQgPSB0aGlzLl9maWxl
U3lzdGVtVHJlZUVsZW1lbnRCeU5hbWUoZmlsZVN5c3RlbS5uYW1lKTsKKyAgICAgICAgaWYgKCFm
aWxlU3lzdGVtVHJlZUVsZW1lbnQpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGZpbGVT
eXN0ZW1UcmVlRWxlbWVudC5jbGVhcigpOworICAgICAgICB0aGlzLnJlbW92ZUNoaWxkKGZpbGVT
eXN0ZW1UcmVlRWxlbWVudCk7CisgICAgfSwKKworICAgIF9maWxlU3lzdGVtVHJlZUVsZW1lbnRC
eU5hbWU6IGZ1bmN0aW9uKGZpbGVTeXN0ZW1OYW1lKQorICAgIHsKKyAgICAgICAgZm9yICh2YXIg
aSA9IDA7IGkgPCB0aGlzLmNoaWxkcmVuLmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICB2YXIg
Y2hpbGQgPSAvKiogQHR5cGUge1dlYkluc3BlY3Rvci5GaWxlU3lzdGVtVHJlZUVsZW1lbnR9ICov
IHRoaXMuY2hpbGRyZW5baV07CisgICAgICAgICAgICBpZiAoY2hpbGQuZmlsZVN5c3RlbU5hbWUg
PT09IGZpbGVTeXN0ZW1OYW1lKQorICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmNoaWxkcmVu
W2ldOworICAgICAgICB9CisgICAgICAgIHJldHVybiBudWxsOworICAgIH0sCisKKyAgICBfcmVm
cmVzaEZpbGVTeXN0ZW06IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIGlmICghdGhpcy5fZmls
ZVN5c3RlbU1vZGVsKSB7CisgICAgICAgICAgICB0aGlzLl9maWxlU3lzdGVtTW9kZWwgPSBuZXcg
V2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbCgpOworICAgICAgICAgICAgdGhpcy5fZmlsZVN5
c3RlbU1vZGVsLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbC5F
dmVudFR5cGVzLkZpbGVTeXN0ZW1BZGRlZCwgdGhpcy5fZmlsZVN5c3RlbUFkZGVkLCB0aGlzKTsK
KyAgICAgICAgICAgIHRoaXMuX2ZpbGVTeXN0ZW1Nb2RlbC5hZGRFdmVudExpc3RlbmVyKFdlYklu
c3BlY3Rvci5GaWxlU3lzdGVtTW9kZWwuRXZlbnRUeXBlcy5GaWxlU3lzdGVtUmVtb3ZlZCwgdGhp
cy5fZmlsZVN5c3RlbVJlbW92ZWQsIHRoaXMpOworICAgICAgICB9CisKKyAgICAgICAgdGhpcy5f
ZmlsZVN5c3RlbU1vZGVsLnJlZnJlc2hGaWxlU3lzdGVtTGlzdCgpOworICAgIH0KK30KKworV2Vi
SW5zcGVjdG9yLkZpbGVTeXN0ZW1MaXN0VHJlZUVsZW1lbnQucHJvdG90eXBlLl9fcHJvdG9fXyA9
IFdlYkluc3BlY3Rvci5TdG9yYWdlQ2F0ZWdvcnlUcmVlRWxlbWVudC5wcm90b3R5cGU7CisKKy8q
KgorICogQGNvbnN0cnVjdG9yCiAgKiBAZXh0ZW5kcyB7V2ViSW5zcGVjdG9yLkJhc2VTdG9yYWdl
VHJlZUVsZW1lbnR9CiAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5SZXNvdXJjZXNQYW5lbH0gc3Rv
cmFnZVBhbmVsCiAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5JbmRleGVkREJNb2RlbH0gbW9kZWwK
QEAgLTE4ODAsNiArMTk1NiwzMyBAQCBXZWJJbnNwZWN0b3IuQXBwbGljYXRpb25DYWNoZUZyYW1l
VHJlZUVsZW1lbnQucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3RvcgogCiAvKioKICAq
IEBjb25zdHJ1Y3RvcgorICogQGV4dGVuZHMge1dlYkluc3BlY3Rvci5CYXNlU3RvcmFnZVRyZWVF
bGVtZW50fQorICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuUmVzb3VyY2VzUGFuZWx9IHN0b3JhZ2VQ
YW5lbAorICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1vZGVsLkZpbGVTeXN0ZW19
IGZpbGVTeXN0ZW0KKyAqLworV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1UcmVlRWxlbWVudCA9IGZ1
bmN0aW9uKHN0b3JhZ2VQYW5lbCwgZmlsZVN5c3RlbSkKK3sKKyAgICB2YXIgZGlzcGxheU5hbWUg
PSBmaWxlU3lzdGVtLnR5cGUgKyAiIC0gIiArIGZpbGVTeXN0ZW0ub3JpZ2luOworICAgIFdlYklu
c3BlY3Rvci5CYXNlU3RvcmFnZVRyZWVFbGVtZW50LmNhbGwodGhpcywgc3RvcmFnZVBhbmVsLCBu
dWxsLCBkaXNwbGF5TmFtZSwgWyJmaWxlLXN5c3RlbS1zdG9yYWdlLXRyZWUtaXRlbSJdKTsKKyAg
ICB0aGlzLl9maWxlU3lzdGVtID0gZmlsZVN5c3RlbTsKK30KKworV2ViSW5zcGVjdG9yLkZpbGVT
eXN0ZW1UcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CisgICAgZ2V0IGZpbGVTeXN0ZW1OYW1lKCkK
KyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9maWxlU3lzdGVtLm5hbWU7CisgICAgfSwKKwor
ICAgIGdldCBpdGVtVVJMKCkKKyAgICB7CisgICAgICAgIHJldHVybiAiZmlsZXN5c3RlbTovLyIg
KyB0aGlzLl9maWxlU3lzdGVtLm5hbWU7CisgICAgfQorfQorCitXZWJJbnNwZWN0b3IuRmlsZVN5
c3RlbVRyZWVFbGVtZW50LnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuQmFzZVN0
b3JhZ2VUcmVlRWxlbWVudC5wcm90b3R5cGU7CisKKy8qKgorICogQGNvbnN0cnVjdG9yCiAgKiBA
ZXh0ZW5kcyB7V2ViSW5zcGVjdG9yLlZpZXd9CiAgKi8KIFdlYkluc3BlY3Rvci5TdG9yYWdlQ2F0
ZWdvcnlWaWV3ID0gZnVuY3Rpb24oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9TZXR0aW5ncy5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvU2V0dGluZ3MuanMKaW5kZXggYWRkYTAyYzc4Y2IxMDRhYzVlYTc2MWIyN2JiZjJlMjZm
NGFiOWQwYi4uMjI1NTQ3MGRjNjVhOGU5ZGU2YzFkZDBiNmQyYjYxZWU0ODQ2NGQ4ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TZXR0aW5ncy5qcworKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NldHRpbmdzLmpzCkBAIC00NCw3
ICs0NCw4IEBAIHZhciBQcmVmZXJlbmNlcyA9IHsKICAgICBleHBvc2VXb3JrZXJzSW5zcGVjdGlv
bjogZmFsc2UsCiAgICAgYXBwbGljYXRpb25UaXRsZTogIldlYiBJbnNwZWN0b3IgLSAlcyIsCiAg
ICAgc2hvd0hlYXBTbmFwc2hvdE9iamVjdHNIaWRkZW5Qcm9wZXJ0aWVzOiBmYWxzZSwKLSAgICBz
aG93RG9ja1RvUmlnaHQ6IGZhbHNlCisgICAgc2hvd0RvY2tUb1JpZ2h0OiBmYWxzZSwKKyAgICBl
eHBvc2VGaWxlU3lzdGVtSW5zcGVjdGlvbjogZmFsc2UKIH0KIAogdmFyIENhcGFiaWxpdGllcyA9
IHsKQEAgLTE4Myw2ICsxODQsNyBAQCBXZWJJbnNwZWN0b3IuRXhwZXJpbWVudHNTZXR0aW5ncyA9
IGZ1bmN0aW9uKCkKICAgICB0aGlzLnNob3dTaGFkb3dET00gPSB0aGlzLl9jcmVhdGVFeHBlcmlt
ZW50KCJzaG93U2hhZG93RE9NIiwgIlNob3cgc2hhZG93IERPTSIpOwogICAgIHRoaXMuc25pcHBl
dHNTdXBwb3J0ID0gdGhpcy5fY3JlYXRlRXhwZXJpbWVudCgic25pcHBldHNTdXBwb3J0IiwgIlNu
aXBwZXRzIHN1cHBvcnQiKTsKICAgICB0aGlzLm5hdGl2ZU1lbW9yeVNuYXBzaG90cyA9IHRoaXMu
X2NyZWF0ZUV4cGVyaW1lbnQoIm5hdGl2ZU1lbW9yeVNuYXBzaG90cyIsICJOYXRpdmUgbWVtb3J5
IHByb2ZpbGluZyIpOworICAgIHRoaXMuZmlsZVN5c3RlbUluc3BlY3Rpb24gPSB0aGlzLl9jcmVh
dGVFeHBlcmltZW50KCJmaWxlU3lzdGVtSW5zcGVjdGlvbiIsICJGaWxlU3lzdGVtIGluc3BlY3Rp
b24iKTsKIAogICAgIHRoaXMuX2NsZWFuVXBTZXR0aW5nKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1dlYktpdC5xcmMgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1dlYktpdC5xcmMKaW5kZXggMjU3YTJhOTIyZWJmODk2MDMw
M2YyMjZhZjA5MDA5OGQzMjVhNmQxMC4uMWRiODA2MzA4NDM4MDJmYzE0YzgwMTZlYzg2YmQwOWE2
NjIzNWEzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9X
ZWJLaXQucXJjCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvV2ViS2l0
LnFyYwpAQCAtNTgsNiArNTgsNyBAQAogICAgIDxmaWxlPkV4dGVuc2lvblJlZ2lzdHJ5U3R1Yi5q
czwvZmlsZT4KICAgICA8ZmlsZT5FeHRlbnNpb25TZXJ2ZXIuanM8L2ZpbGU+CiAgICAgPGZpbGU+
RmlsZU1hbmFnZXIuanM8L2ZpbGU+CisgICAgPGZpbGU+RmlsZVN5c3RlbU1vZGVsLmpzPC9maWxl
PgogICAgIDxmaWxlPkZpbHRlcmVkSXRlbVNlbGVjdGlvbkRpYWxvZy5qczwvZmlsZT4KICAgICA8
ZmlsZT5Gb250Vmlldy5qczwvZmlsZT4KICAgICA8ZmlsZT5Hb1RvTGluZURpYWxvZy5qczwvZmls
ZT4KQEAgLTI0Myw2ICsyNDQsNyBAQAogICAgIDxmaWxlPkltYWdlcy9lcnJvckljb24ucG5nPC9m
aWxlPgogICAgIDxmaWxlPkltYWdlcy9lcnJvck1lZGl1bUljb24ucG5nPC9maWxlPgogICAgIDxm
aWxlPkltYWdlcy9lcnJvclJlZERvdC5wbmc8L2ZpbGU+CisgICAgPGZpbGU+SW1hZ2VzL2ZpbGVT
eXN0ZW0ucG5nPC9maWxlPgogICAgIDxmaWxlPkltYWdlcy9mb3J3YXJkLnBuZzwvZmlsZT4KICAg
ICA8ZmlsZT5JbWFnZXMvZnJhbWUucG5nPC9maWxlPgogICAgIDxmaWxlPkltYWdlcy9nbG9zc3lI
ZWFkZXIucG5nPC9maWxlPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9pbnNwZWN0b3IuaHRtbCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvaW5zcGVjdG9yLmh0bWwKaW5kZXggYWQ5MDNmODcyOTYzMWUwOTVlMTQxMjcwNGI5MDUwNzBi
NzNmOGMyYy4uNTZkMWRkNDQ2NjQzYzRkMWU4YTk2NTVlMmVhMjdmMzZiZmFmNzU1YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuaHRtbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5odG1sCkBA
IC0xNjAsNiArMTYwLDcgQEAgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNj
cmlwdCIgc3JjPSJTb3VyY2VDU1NUb2tlbml6ZXIuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQg
dHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IlNvdXJjZUhUTUxUb2tlbml6ZXIuanMiPjwvc2Ny
aXB0PgogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IlNvdXJjZUphdmFT
Y3JpcHRUb2tlbml6ZXIuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZh
c2NyaXB0IiBzcmM9IkZpbGVTeXN0ZW1Nb2RlbC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCB0
eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iRm9udFZpZXcuanMiPjwvc2NyaXB0PgogICAgIDxz
Y3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IkltYWdlVmlldy5qcyI+PC9zY3JpcHQ+
CiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iRGF0YWJhc2VUYWJsZVZp
ZXcuanMiPjwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9yZXNvdXJjZXNQYW5lbC5jc3MgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL3Jlc291cmNlc1BhbmVsLmNzcwppbmRleCA0ZDZjYTJiMTI5ZDUzZjY1MjRkNWJiZjZm
ZGJkMDlhYzEyYWMwYmQ0Li4xOTE2YTNhZDM4Y2NiYTliODA2OWE4MjZjNjRlYTcwYmVhZDMxNzM4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL3Jlc291cmNl
c1BhbmVsLmNzcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL3Jlc291
cmNlc1BhbmVsLmNzcwpAQCAtMzI2LDcgKzMyNiw2IEBAIGxpLnNlbGVjdGVkIC5iYXNlLXN0b3Jh
Z2UtdHJlZS1lbGVtZW50LXN1YnRpdGxlIHsKICAgICBjb250ZW50OiB1cmwoSW1hZ2VzL2FwcGxp
Y2F0aW9uQ2FjaGUucG5nKTsKIH0KIAotLyogRklYTUU6IE1ha2Ugc2VwYXJhdGUgcG5nIGZvciBm
aWxlLXN5c3RlbSAqLwogLmZpbGUtc3lzdGVtLXN0b3JhZ2UtdHJlZS1pdGVtIC5pY29uIHsKLSAg
ICBjb250ZW50OiB1cmwoSW1hZ2VzL2FwcGxpY2F0aW9uQ2FjaGUucG5nKTsKKyAgICBjb250ZW50
OiB1cmwoSW1hZ2VzL2ZpbGVTeXN0ZW0ucG5nKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvdXRpbGl0aWVzLmpzIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC91dGlsaXRpZXMuanMKaW5kZXggMWQ3MjI1YjI2ZjhiZWJlM2M5MGRj
OWU0ZjVlODViZDAwYmVlOGRmNy4uOGRlMTQzYjRlMTU0ZWYzMDdjNzNhMjY2YzcwMTE0YTBiYTg1
M2ViYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC91dGls
aXRpZXMuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC91dGlsaXRp
ZXMuanMKQEAgLTY3NSw0ICs2NzUsMTQgQEAgTWFwLnByb3RvdHlwZSA9IHsKICAgICB7CiAgICAg
ICAgIHRoaXMuX21hcCA9IHt9OwogICAgIH0KLX0KK307CisKK09iamVjdC5kZWZpbmVQcm9wZXJ0
eShPYmplY3QucHJvdG90eXBlLCAiaXNFbXB0eSIsCit7CisgICAgdmFsdWU6IGZ1bmN0aW9uKCkK
KyAgICB7CisgICAgICAgIGZvciAodmFyIGkgaW4gdGhpcykKKyAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorfSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9qcy9EZXZUb29scy5qcyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL2pzL0RldlRvb2xzLmpzCmluZGV4IGM0ZDU0MjM4ZGJkNmI4NDQwN2VkNDMxNmE2
YjBjMjdmMzRlMDVkZmQuLjEyMjkzZjViMTgxYjY0ZjhiZjQ0N2U3NzQ4MWYyYTMwNjhhYjJlZGEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL2pzL0RldlRvb2xzLmpzCisr
KyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL2pzL0RldlRvb2xzLmpzCkBAIC00MSw2ICs0
MSw3IEBACiAgICAgUHJlZmVyZW5jZXMuZXhwb3NlRGlzYWJsZUNhY2hlID0gdHJ1ZTsKICAgICBQ
cmVmZXJlbmNlcy5leHBvc2VXb3JrZXJzSW5zcGVjdGlvbiA9IHRydWU7CiAgICAgUHJlZmVyZW5j
ZXMuc2hvd0RvY2tUb1JpZ2h0ID0gdHJ1ZTsKKyAgICBQcmVmZXJlbmNlcy5leHBvc2VGaWxlU3lz
dGVtSW5zcGVjdGlvbiA9IHRydWU7CiB9KSgpO30KIAogZnVuY3Rpb24gYnVpbGRQbGF0Zm9ybUV4
dGVuc2lvbkFQSShleHRlbnNpb25JbmZvKQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>