<?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>144404</bug_id>
          
          <creation_ts>2015-04-29 12:15:55 -0700</creation_ts>
          <short_desc>Web Inspector: Split Storage from Resources tab</short_desc>
          <delta_ts>2015-04-29 15:03:25 -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</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>DoNotImportToRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Timothy Hatcher">timothy</reporter>
          <assigned_to name="Timothy Hatcher">timothy</assigned_to>
          <cc>graouts</cc>
    
    <cc>joepeck</cc>
    
    <cc>jonowells</cc>
    
    <cc>mattbaker</cc>
    
    <cc>nvasilyev</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1090107</commentid>
    <comment_count>0</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2015-04-29 12:15:55 -0700</bug_when>
    <thetext>Add a Storage tab.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1090109</commentid>
    <comment_count>1</comment_count>
      <attachid>251976</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2015-04-29 12:16:52 -0700</bug_when>
    <thetext>Created attachment 251976
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1090115</commentid>
    <comment_count>2</comment_count>
      <attachid>251976</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2015-04-29 12:25:31 -0700</bug_when>
    <thetext>Comment on attachment 251976
Patch

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

I think this patch is actually missing WebInspector.StorageTabContentView, so StorageTabContentView.js.

&gt; Source/WebInspectorUI/UserInterface/Controllers/ApplicationCacheManager.js:59
&gt; +    get applicationCacheObjects()
&gt; +    {
&gt; +        var applicationCacheObjects = [];
&gt; +        for (var id in this._applicationCacheObjects)
&gt; +            applicationCacheObjects.push(this._applicationCacheObjects[id]);
&gt; +        return applicationCacheObjects;
&gt; +    }

This code looks weird because this._applicationCacheObjects is initialized to an array up above. Should it be an object? Or better yet a Map (no `delete`, and this would be [...map.values()]).

&gt; Source/WebInspectorUI/UserInterface/Views/DatabaseTableContentView.js:93
&gt; +            this._dataGrid = undefined;

What is this for? (Unfortunately the patch review tool is not giving me context).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1090116</commentid>
    <comment_count>3</comment_count>
      <attachid>251976</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2015-04-29 12:32:11 -0700</bug_when>
    <thetext>Comment on attachment 251976
Patch

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

&gt;&gt; Source/WebInspectorUI/UserInterface/Controllers/ApplicationCacheManager.js:59
&gt;&gt; +    }
&gt; 
&gt; This code looks weird because this._applicationCacheObjects is initialized to an array up above. Should it be an object? Or better yet a Map (no `delete`, and this would be [...map.values()]).

_applicationCacheObjects is treated as a map object below! I&apos;ll fix the _applicationCacheObjects = [] to be _applicationCacheObjects = {}. I save converting it to Map until later.

&gt;&gt; Source/WebInspectorUI/UserInterface/Views/DatabaseTableContentView.js:93
&gt;&gt; +            this._dataGrid = undefined;
&gt; 
&gt; What is this for? (Unfortunately the patch review tool is not giving me context).

Sorry. It fixes an exception. Seems this._dataGrid can be allocated but this._dataGrid.element is null/undefined.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1090119</commentid>
    <comment_count>4</comment_count>
      <attachid>251977</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2015-04-29 12:36:00 -0700</bug_when>
    <thetext>Created attachment 251977
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1090158</commentid>
    <comment_count>5</comment_count>
      <attachid>251977</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2015-04-29 14:37:19 -0700</bug_when>
    <thetext>Comment on attachment 251977
Patch

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

r=me, commit-queue won&apos;t work at the moment, patch is not applying.

&gt; Source/WebInspectorUI/UserInterface/Views/StorageSidebarPanel.js:290
&gt; +        this._localStorageRootTreeElement = null;
&gt; +        this._sessionStorageRootTreeElement = null;
&gt; +        this._databaseRootTreeElement = null;
&gt; +        this._databaseHostTreeElementMap = {};
&gt; +        this._indexedDatabaseRootTreeElement = null;
&gt; +        this._indexedDatabaseHostTreeElementMap = {};
&gt; +        this._cookieStorageRootTreeElement = null;
&gt; +        this._applicationCacheRootTreeElement = null;
&gt; +        this._applicationCacheURLTreeElementMap = {};

This is repeated in the constructor. I wonder if it should be a helper, like _reset.

&gt; Source/WebInspectorUI/UserInterface/Views/StorageTabContentView.js:50
&gt; +        return representedObject instanceof WebInspector.DOMStorageObject || representedObject instanceof WebInspector.CookieStorageObject ||
&gt; +            representedObject instanceof WebInspector.DatabaseTableObject || representedObject instanceof WebInspector.DatabaseObject ||
&gt; +            representedObject instanceof WebInspector.ApplicationCacheFrame || representedObject instanceof WebInspector.IndexedDatabaseObjectStore ||
&gt; +            representedObject instanceof WebInspector.IndexedDatabaseObjectStoreIndex;

Style: I think we normally put the &quot;||&quot; on the start of the next line instead of at the end of the previous.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1090167</commentid>
    <comment_count>6</comment_count>
      <attachid>251977</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2015-04-29 15:03:18 -0700</bug_when>
    <thetext>Comment on attachment 251977
Patch

https://trac.webkit.org/r183580</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>251976</attachid>
            <date>2015-04-29 12:16:52 -0700</date>
            <delta_ts>2015-04-29 12:35:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-144404-20150429121541.patch</filename>
            <type>text/plain</type>
            <size>31236</size>
            <attacher name="Timothy Hatcher">timothy</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgzNTIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCBm
MjgzZDZlZGEzOGI5MGUyNGQxNmM5ZTUyYzU0ZGNjZTlhMGJhZTliLi5jYzdjMjViNDFjMDZjNzJm
YjZiM2MzMzIyOWFlOGNkZmI5YWU3MDMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEs
NSArMSw1MCBAQAogMjAxNS0wNC0yOSAgVGltb3RoeSBIYXRjaGVyICA8dGltb3RoeUBhcHBsZS5j
b20+CiAKKyAgICAgICAgV2ViIEluc3BlY3RvcjogU3BsaXQgU3RvcmFnZSBmcm9tIFJlc291cmNl
cyB0YWIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0
NDQwNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
TG9jYWxpemF0aW9ucy9lbi5scHJvai9sb2NhbGl6ZWRTdHJpbmdzLmpzOgorICAgICAgICAqIFVz
ZXJJbnRlcmZhY2UvQmFzZS9NYWluLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLmxvYWRlZCk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuaXNUYWJUeXBlQWxsb3dlZCk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuX3RhYkNvbnRlbnRWaWV3Rm9yVHlwZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
X3VwZGF0ZU5ld1RhYkJ1dHRvblN0YXRlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5zaG93U3Rv
cmFnZVRhYik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuX3N0b3JhZ2VXYXNJbnNwZWN0ZWQpOgor
ICAgICAgICAqIFVzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvQXBwbGljYXRpb25DYWNoZU1hbmFn
ZXIuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQXBwbGljYXRpb25DYWNoZU1hbmFnZXIucHJv
dG90eXBlLmdldCBhcHBsaWNhdGlvbkNhY2hlT2JqZWN0cyk6CisgICAgICAgICogVXNlckludGVy
ZmFjZS9Db250cm9sbGVycy9TdG9yYWdlTWFuYWdlci5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5TdG9yYWdlTWFuYWdlci5wcm90b3R5cGUuZ2V0IGRvbVN0b3JhZ2VPYmplY3RzKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5TdG9yYWdlTWFuYWdlci5wcm90b3R5cGUuZ2V0IGRhdGFiYXNlcyk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuU3RvcmFnZU1hbmFnZXIucHJvdG90eXBlLmdldCBpbmRl
eGVkRGF0YWJhc2VzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TdG9yYWdlTWFuYWdlci5wcm90
b3R5cGUuZ2V0IGNvb2tpZVN0b3JhZ2VPYmplY3RzKToKKyAgICAgICAgKiBVc2VySW50ZXJmYWNl
L0ltYWdlcy9TdG9yYWdlLnN2ZzogQWRkZWQuCisgICAgICAgICogVXNlckludGVyZmFjZS9NYWlu
Lmh0bWw6CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9EYXRhYmFzZVRhYmxlQ29udGVu
dFZpZXcuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGF0YWJhc2VUYWJsZUNvbnRlbnRWaWV3
LnByb3RvdHlwZS5fcXVlcnlGaW5pc2hlZCk6CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3
cy9OZXdUYWJDb250ZW50Vmlldy5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5OZXdUYWJDb250
ZW50Vmlldyk6CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9SZXNvdXJjZVNpZGViYXJQ
YW5lbC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SZXNvdXJjZVNpZGViYXJQYW5lbCk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuUmVzb3VyY2VTaWRlYmFyUGFuZWwucHJvdG90eXBlLl90cmVl
RWxlbWVudFNlbGVjdGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SZXNvdXJjZVNpZGViYXJQ
YW5lbC5wcm90b3R5cGUuX2RvbVN0b3JhZ2VPYmplY3RXYXNBZGRlZCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJJbnNwZWN0b3IuUmVzb3VyY2VTaWRlYmFyUGFuZWwucHJvdG90eXBlLl9kb21TdG9y
YWdlT2JqZWN0V2FzSW5zcGVjdGVkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5S
ZXNvdXJjZVNpZGViYXJQYW5lbC5wcm90b3R5cGUuX2RhdGFiYXNlV2FzQWRkZWQpOiBEZWxldGVk
LgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNlU2lkZWJhclBhbmVsLnByb3RvdHlwZS5f
ZGF0YWJhc2VXYXNJbnNwZWN0ZWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJl
c291cmNlU2lkZWJhclBhbmVsLnByb3RvdHlwZS5faW5kZXhlZERhdGFiYXNlV2FzQWRkZWQpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNlU2lkZWJhclBhbmVsLnByb3Rv
dHlwZS5fY29va2llU3RvcmFnZU9iamVjdFdhc0FkZGVkKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5SZXNvdXJjZVNpZGViYXJQYW5lbC5wcm90b3R5cGUuX2ZyYW1lTWFuaWZlc3RB
ZGRlZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVzb3VyY2VTaWRlYmFyUGFu
ZWwucHJvdG90eXBlLl9mcmFtZU1hbmlmZXN0UmVtb3ZlZCk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJJbnNwZWN0b3IuUmVzb3VyY2VTaWRlYmFyUGFuZWwucHJvdG90eXBlLl9hZGRTdG9yYWdlQ2hp
bGQpOiBEZWxldGVkLgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNlU2lkZWJhclBhbmVs
LnByb3RvdHlwZS5fc3RvcmFnZUNsZWFyZWQpOiBEZWxldGVkLgorICAgICAgICAqIFVzZXJJbnRl
cmZhY2UvVmlld3MvUmVzb3VyY2VzVGFiQ29udGVudFZpZXcuanM6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuUmVzb3VyY2VzVGFiQ29udGVudFZpZXcpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJl
c291cmNlc1RhYkNvbnRlbnRWaWV3LnByb3RvdHlwZS5jYW5TaG93UmVwcmVzZW50ZWRPYmplY3Qp
OgorCisyMDE1LTA0LTI5ICBUaW1vdGh5IEhhdGNoZXIgIDx0aW1vdGh5QGFwcGxlLmNvbT4KKwog
ICAgICAgICBXZWIgSW5zcGVjdG9yOiBSZW1vdmUgTGVnYWN5IGltYWdlcyBhbmQgc3R5bGVzCiAg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDQzOTAKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL0xvY2FsaXphdGlvbnMvZW4ubHByb2ov
bG9jYWxpemVkU3RyaW5ncy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Mb2NhbGl6YXRpb25z
L2VuLmxwcm9qL2xvY2FsaXplZFN0cmluZ3MuanMKaW5kZXggYzg1MzUzYjQzYjVlYzExMjFiYzFh
NTViMmY5ZjQ2YTRmZGJlM2Y1ZC4uZTM1ODBjMjcwZmY4MWY5OTEwZWIwM2Q2NTlmMGIyNTM3ZTY2
OGU0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL0xvY2FsaXphdGlvbnMvZW4u
bHByb2ovbG9jYWxpemVkU3RyaW5ncy5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvTG9j
YWxpemF0aW9ucy9lbi5scHJvai9sb2NhbGl6ZWRTdHJpbmdzLmpzCkBAIC0yMjQsNiArMjI0LDcg
QEAgbG9jYWxpemVkU3RyaW5nc1siRmlsdGVyIEJyZWFrcG9pbnQgTGlzdCJdID0gIkZpbHRlciBC
cmVha3BvaW50IExpc3QiOwogbG9jYWxpemVkU3RyaW5nc1siRmlsdGVyIENvbnNvbGUgTG9nIl0g
PSAiRmlsdGVyIENvbnNvbGUgTG9nIjsKIGxvY2FsaXplZFN0cmluZ3NbIkZpbHRlciBSZXNvdXJj
ZSBMaXN0Il0gPSAiRmlsdGVyIFJlc291cmNlIExpc3QiOwogbG9jYWxpemVkU3RyaW5nc1siRmls
dGVyIFNlYXJjaCBSZXN1bHRzIl0gPSAiRmlsdGVyIFNlYXJjaCBSZXN1bHRzIjsKK2xvY2FsaXpl
ZFN0cmluZ3NbIkZpbHRlciBTdG9yYWdlIExpc3QiXSA9ICJGaWx0ZXIgU3RvcmFnZSBMaXN0IjsK
IGxvY2FsaXplZFN0cmluZ3NbIkZsb3dzIl0gPSAiRmxvd3MiOwogbG9jYWxpemVkU3RyaW5nc1si
Rm9jdXNlZCJdID0gIkZvY3VzZWQiOwogbG9jYWxpemVkU3RyaW5nc1siRm9udCJdID0gIkZvbnQi
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQmFzZS9N
YWluLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQmFzZS9NYWluLmpz
CmluZGV4IDA3ZjJjMGI2Njg0ZGYzZDNiMWZjZjMwNGM0M2MyMTk5OGU2YjQ1ZWMuLjc3MTZjODNl
MGMxM2YwMjZiYzA1ZWM5ZTQyMDMwNDJhYmU0ZTVmOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2UvTWFpbi5qcworKysgYi9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9CYXNlL01haW4uanMKQEAgLTE0MCw3ICsxNDAsNyBAQCBX
ZWJJbnNwZWN0b3IubG9hZGVkID0gZnVuY3Rpb24oKQogICAgIHRoaXMuX3Nob3dpbmdTcGxpdENv
bnNvbGVTZXR0aW5nID0gbmV3IFdlYkluc3BlY3Rvci5TZXR0aW5nKCJzaG93aW5nLXNwbGl0LWNv
bnNvbGUiLCBmYWxzZSk7CiAgICAgdGhpcy5fc3BsaXRDb25zb2xlSGVpZ2h0U2V0dGluZyA9IG5l
dyBXZWJJbnNwZWN0b3IuU2V0dGluZygic3BsaXQtY29uc29sZS1oZWlnaHQiLCAxNTApOwogCi0g
ICAgdGhpcy5fb3BlblRhYnNTZXR0aW5nID0gbmV3IFdlYkluc3BlY3Rvci5TZXR0aW5nKCJvcGVu
LXRhYnMiLCBbImVsZW1lbnRzIiwgInJlc291cmNlcyIsICJ0aW1lbGluZSIsICJkZWJ1Z2dlciIs
ICJjb25zb2xlIl0pOworICAgIHRoaXMuX29wZW5UYWJzU2V0dGluZyA9IG5ldyBXZWJJbnNwZWN0
b3IuU2V0dGluZygib3Blbi10YWJzIiwgWyJlbGVtZW50cyIsICJyZXNvdXJjZXMiLCAidGltZWxp
bmUiLCAiZGVidWdnZXIiLCAic3RvcmFnZSIsICJjb25zb2xlIl0pOwogICAgIHRoaXMuX3NlbGVj
dGVkVGFiSW5kZXhTZXR0aW5nID0gbmV3IFdlYkluc3BlY3Rvci5TZXR0aW5nKCJzZWxlY3RlZC10
YWItaW5kZXgiLCAwKTsKIAogICAgIHRoaXMuc2hvd1NoYWRvd0RPTVNldHRpbmcgPSBuZXcgV2Vi
SW5zcGVjdG9yLlNldHRpbmcoInNob3ctc2hhZG93LWRvbSIsIGZhbHNlKTsKQEAgLTM3Niw2ICsz
NzYsOCBAQCBXZWJJbnNwZWN0b3IuaXNUYWJUeXBlQWxsb3dlZCA9IGZ1bmN0aW9uKHRhYlR5cGUp
CiAgICAgc3dpdGNoICh0YWJUeXBlKSB7CiAgICAgY2FzZSBXZWJJbnNwZWN0b3IuRWxlbWVudHNU
YWJDb250ZW50Vmlldy5UeXBlOgogICAgICAgICByZXR1cm4gISF3aW5kb3cuRE9NQWdlbnQ7Cisg
ICAgY2FzZSBXZWJJbnNwZWN0b3IuU3RvcmFnZVRhYkNvbnRlbnRWaWV3LlR5cGU6CisgICAgICAg
IHJldHVybiAhIXdpbmRvdy5ET01TdG9yYWdlQWdlbnQgfHwgISF3aW5kb3cuRGF0YWJhc2VBZ2Vu
dCB8fCAhIXdpbmRvdy5JbmRleGVkREJBZ2VudDsKICAgICBjYXNlIFdlYkluc3BlY3Rvci5UaW1l
bGluZVRhYkNvbnRlbnRWaWV3LlR5cGU6CiAgICAgICAgIHJldHVybiAhIXdpbmRvdy5UaW1lbGlu
ZUFnZW50OwogICAgIH0KQEAgLTM4NiwyMCArMzg4LDIyIEBAIFdlYkluc3BlY3Rvci5pc1RhYlR5
cGVBbGxvd2VkID0gZnVuY3Rpb24odGFiVHlwZSkKIFdlYkluc3BlY3Rvci5fdGFiQ29udGVudFZp
ZXdGb3JUeXBlID0gZnVuY3Rpb24odGFiVHlwZSkKIHsKICAgICBzd2l0Y2ggKHRhYlR5cGUpIHsK
KyAgICBjYXNlIFdlYkluc3BlY3Rvci5Db25zb2xlVGFiQ29udGVudFZpZXcuVHlwZToKKyAgICAg
ICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuQ29uc29sZVRhYkNvbnRlbnRWaWV3OworICAgIGNh
c2UgV2ViSW5zcGVjdG9yLkRlYnVnZ2VyVGFiQ29udGVudFZpZXcuVHlwZToKKyAgICAgICAgcmV0
dXJuIG5ldyBXZWJJbnNwZWN0b3IuRGVidWdnZXJUYWJDb250ZW50VmlldzsKICAgICBjYXNlIFdl
Ykluc3BlY3Rvci5FbGVtZW50c1RhYkNvbnRlbnRWaWV3LlR5cGU6CiAgICAgICAgIHJldHVybiBu
ZXcgV2ViSW5zcGVjdG9yLkVsZW1lbnRzVGFiQ29udGVudFZpZXc7CisgICAgY2FzZSBXZWJJbnNw
ZWN0b3IuTmV3VGFiQ29udGVudFZpZXcuVHlwZToKKyAgICAgICAgcmV0dXJuIG5ldyBXZWJJbnNw
ZWN0b3IuTmV3VGFiQ29udGVudFZpZXc7CiAgICAgY2FzZSBXZWJJbnNwZWN0b3IuUmVzb3VyY2Vz
VGFiQ29udGVudFZpZXcuVHlwZToKICAgICAgICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuUmVz
b3VyY2VzVGFiQ29udGVudFZpZXc7Ci0gICAgY2FzZSBXZWJJbnNwZWN0b3IuVGltZWxpbmVUYWJD
b250ZW50Vmlldy5UeXBlOgotICAgICAgICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5UaW1lbGlu
ZVRhYkNvbnRlbnRWaWV3OwotICAgIGNhc2UgV2ViSW5zcGVjdG9yLkRlYnVnZ2VyVGFiQ29udGVu
dFZpZXcuVHlwZToKLSAgICAgICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuRGVidWdnZXJUYWJD
b250ZW50VmlldzsKLSAgICBjYXNlIFdlYkluc3BlY3Rvci5Db25zb2xlVGFiQ29udGVudFZpZXcu
VHlwZToKLSAgICAgICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuQ29uc29sZVRhYkNvbnRlbnRW
aWV3OwogICAgIGNhc2UgV2ViSW5zcGVjdG9yLlNlYXJjaFRhYkNvbnRlbnRWaWV3LlR5cGU6CiAg
ICAgICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLlNlYXJjaFRhYkNvbnRlbnRWaWV3OwotICAg
IGNhc2UgV2ViSW5zcGVjdG9yLk5ld1RhYlRhYkNvbnRlbnRWaWV3LlR5cGU6Ci0gICAgICAgIHJl
dHVybiBuZXcgV2ViSW5zcGVjdG9yLk5ld1RhYlRhYkNvbnRlbnRWaWV3OworICAgIGNhc2UgV2Vi
SW5zcGVjdG9yLlN0b3JhZ2VUYWJDb250ZW50Vmlldy5UeXBlOgorICAgICAgICByZXR1cm4gbmV3
IFdlYkluc3BlY3Rvci5TdG9yYWdlVGFiQ29udGVudFZpZXc7CisgICAgY2FzZSBXZWJJbnNwZWN0
b3IuVGltZWxpbmVUYWJDb250ZW50Vmlldy5UeXBlOgorICAgICAgICByZXR1cm4gbmV3IFdlYklu
c3BlY3Rvci5UaW1lbGluZVRhYkNvbnRlbnRWaWV3OwogICAgIGRlZmF1bHQ6CiAgICAgICAgIGNv
bnNvbGUuZXJyb3IoIlVua25vd24gdGFiIHR5cGUiLCB0YWJUeXBlKTsKICAgICB9CkBAIC00MjYs
NyArNDMwLDggQEAgV2ViSW5zcGVjdG9yLl9yZW1lbWJlck9wZW5UYWJzID0gZnVuY3Rpb24oKQog
CiBXZWJJbnNwZWN0b3IuX3VwZGF0ZU5ld1RhYkJ1dHRvblN0YXRlID0gZnVuY3Rpb24oZXZlbnQp
CiB7Ci0gICAgdmFyIG5ld1RhYkFsbG93ZWQgPSB0aGlzLmlzTmV3VGFiV2l0aFR5cGVBbGxvd2Vk
KFdlYkluc3BlY3Rvci5Db25zb2xlVGFiQ29udGVudFZpZXcuVHlwZSkgfHwgdGhpcy5pc05ld1Rh
YldpdGhUeXBlQWxsb3dlZChXZWJJbnNwZWN0b3IuRWxlbWVudHNUYWJDb250ZW50Vmlldy5UeXBl
KTsKKyAgICB2YXIgbmV3VGFiQWxsb3dlZCA9IHRoaXMuaXNOZXdUYWJXaXRoVHlwZUFsbG93ZWQo
V2ViSW5zcGVjdG9yLkNvbnNvbGVUYWJDb250ZW50Vmlldy5UeXBlKSB8fCB0aGlzLmlzTmV3VGFi
V2l0aFR5cGVBbGxvd2VkKFdlYkluc3BlY3Rvci5FbGVtZW50c1RhYkNvbnRlbnRWaWV3LlR5cGUp
CisgICAgICAgICB8fCB0aGlzLmlzTmV3VGFiV2l0aFR5cGVBbGxvd2VkKFdlYkluc3BlY3Rvci5T
dG9yYWdlVGFiQ29udGVudFZpZXcuVHlwZSk7CiAgICAgdGhpcy50YWJCYXIubmV3VGFiSXRlbS5k
aXNhYmxlZCA9ICFuZXdUYWJBbGxvd2VkOwogfTsKIApAQCAtNzUzLDYgKzc1OCwxNCBAQCBXZWJJ
bnNwZWN0b3Iuc2hvd1Jlc291cmNlc1RhYiA9IGZ1bmN0aW9uKCkKICAgICB0aGlzLnRhYkJyb3dz
ZXIuc2hvd1RhYkZvckNvbnRlbnRWaWV3KHRhYkNvbnRlbnRWaWV3KTsKIH07CiAKK1dlYkluc3Bl
Y3Rvci5zaG93U3RvcmFnZVRhYiA9IGZ1bmN0aW9uKCkKK3sKKyAgICB2YXIgdGFiQ29udGVudFZp
ZXcgPSB0aGlzLnRhYkJyb3dzZXIuYmVzdFRhYkNvbnRlbnRWaWV3Rm9yQ2xhc3MoV2ViSW5zcGVj
dG9yLlN0b3JhZ2VUYWJDb250ZW50Vmlldyk7CisgICAgaWYgKCF0YWJDb250ZW50VmlldykKKyAg
ICAgICAgdGFiQ29udGVudFZpZXcgPSBuZXcgV2ViSW5zcGVjdG9yLlN0b3JhZ2VUYWJDb250ZW50
VmlldzsKKyAgICB0aGlzLnRhYkJyb3dzZXIuc2hvd1RhYkZvckNvbnRlbnRWaWV3KHRhYkNvbnRl
bnRWaWV3KTsKK307CisKIFdlYkluc3BlY3Rvci5zaG93VGltZWxpbmVUYWIgPSBmdW5jdGlvbigp
CiB7CiAgICAgdmFyIHRhYkNvbnRlbnRWaWV3ID0gdGhpcy50YWJCcm93c2VyLmJlc3RUYWJDb250
ZW50Vmlld0ZvckNsYXNzKFdlYkluc3BlY3Rvci5UaW1lbGluZVRhYkNvbnRlbnRWaWV3KTsKQEAg
LTE0NDAsOCArMTQ1Myw3IEBAIFdlYkluc3BlY3Rvci5fbW92ZVdpbmRvd01vdXNlRG93biA9IGZ1
bmN0aW9uKGV2ZW50KQogCiBXZWJJbnNwZWN0b3IuX3N0b3JhZ2VXYXNJbnNwZWN0ZWQgPSBmdW5j
dGlvbihldmVudCkKIHsKLSAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgc2hvdyBhIFN0b3JhZ2Ug
dGFiIHdoZW4gd2UgaGF2ZSBvbmUuCi0gICAgdGhpcy5zaG93UmVzb3VyY2VzVGFiKCk7CisgICAg
dGhpcy5zaG93U3RvcmFnZVRhYigpOwogfTsKIAogV2ViSW5zcGVjdG9yLl9kb21Ob2RlV2FzSW5z
cGVjdGVkID0gZnVuY3Rpb24oZXZlbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9BcHBsaWNhdGlvbkNhY2hlTWFuYWdlci5qcyBi
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0FwcGxpY2F0
aW9uQ2FjaGVNYW5hZ2VyLmpzCmluZGV4IDc5ODY2YTJiOWI4M2RlNGU5OGE5MTI4ODY3ZWZiYzk2
NjVjMzU3ZGIuLmNlZWZmZWFiNjJjZmU0NzY0OTZmN2U0YTYzODdmZThlZmRkYjYyZDEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0Fw
cGxpY2F0aW9uQ2FjaGVNYW5hZ2VyLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL0NvbnRyb2xsZXJzL0FwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyLmpzCkBAIC01MCw2
ICs1MCwxNCBAQCBXZWJJbnNwZWN0b3IuQXBwbGljYXRpb25DYWNoZU1hbmFnZXIgPSBjbGFzcyBB
cHBsaWNhdGlvbkNhY2hlTWFuYWdlciBleHRlbmRzIFdlYgogICAgICAgICAgICAgQXBwbGljYXRp
b25DYWNoZUFnZW50LmdldEZyYW1lc1dpdGhNYW5pZmVzdHModGhpcy5fZnJhbWVzV2l0aE1hbmlm
ZXN0c0xvYWRlZC5iaW5kKHRoaXMpKTsKICAgICB9CiAKKyAgICBnZXQgYXBwbGljYXRpb25DYWNo
ZU9iamVjdHMoKQorICAgIHsKKyAgICAgICAgdmFyIGFwcGxpY2F0aW9uQ2FjaGVPYmplY3RzID0g
W107CisgICAgICAgIGZvciAodmFyIGlkIGluIHRoaXMuX2FwcGxpY2F0aW9uQ2FjaGVPYmplY3Rz
KQorICAgICAgICAgICAgYXBwbGljYXRpb25DYWNoZU9iamVjdHMucHVzaCh0aGlzLl9hcHBsaWNh
dGlvbkNhY2hlT2JqZWN0c1tpZF0pOworICAgICAgICByZXR1cm4gYXBwbGljYXRpb25DYWNoZU9i
amVjdHM7CisgICAgfQorCiAgICAgbmV0d29ya1N0YXRlVXBkYXRlZChpc05vd09ubGluZSkKICAg
ICB7CiAgICAgICAgIHRoaXMuX29ubGluZSA9IGlzTm93T25saW5lOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvU3RvcmFnZU1hbmFn
ZXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9T
dG9yYWdlTWFuYWdlci5qcwppbmRleCBlYmE2ODliZjY0YTYxNzMxYzNkYWI1MDc4NmIzNDgwNTA5
ZWQyNmY0Li42NTVhMGEzMDFhNTcyYjJkOTgxNDk4MDg0YWVkNDY4ZmMzOGZkNzUwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9TdG9y
YWdlTWFuYWdlci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9D
b250cm9sbGVycy9TdG9yYWdlTWFuYWdlci5qcwpAQCAtNjAsNiArNjAsMjkgQEAgV2ViSW5zcGVj
dG9yLlN0b3JhZ2VNYW5hZ2VyID0gY2xhc3MgU3RvcmFnZU1hbmFnZXIgZXh0ZW5kcyBXZWJJbnNw
ZWN0b3IuT2JqZWN0CiAgICAgICAgIHRoaXMuX2Nvb2tpZVN0b3JhZ2VPYmplY3RzID0ge307CiAg
ICAgfQogCisgICAgZ2V0IGRvbVN0b3JhZ2VPYmplY3RzKCkKKyAgICB7CisgICAgICAgIHJldHVy
biB0aGlzLl9kb21TdG9yYWdlT2JqZWN0czsKKyAgICB9CisKKyAgICBnZXQgZGF0YWJhc2VzKCkK
KyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9kYXRhYmFzZU9iamVjdHM7CisgICAgfQorCisg
ICAgZ2V0IGluZGV4ZWREYXRhYmFzZXMoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX2lu
ZGV4ZWREYXRhYmFzZXM7CisgICAgfQorCisgICAgZ2V0IGNvb2tpZVN0b3JhZ2VPYmplY3RzKCkK
KyAgICB7CisgICAgICAgIHZhciBjb29raWVTdG9yYWdlT2JqZWN0cyA9IFtdOworICAgICAgICBm
b3IgKHZhciBob3N0IGluIHRoaXMuX2Nvb2tpZVN0b3JhZ2VPYmplY3RzKQorICAgICAgICAgICAg
Y29va2llU3RvcmFnZU9iamVjdHMucHVzaCh0aGlzLl9jb29raWVTdG9yYWdlT2JqZWN0c1tob3N0
XSk7CisgICAgICAgIHJldHVybiBjb29raWVTdG9yYWdlT2JqZWN0czsKKyAgICB9CisKICAgICBk
b21TdG9yYWdlV2FzQWRkZWQoaWQsIGhvc3QsIGlzTG9jYWxTdG9yYWdlKQogICAgIHsKICAgICAg
ICAgdmFyIGRvbVN0b3JhZ2UgPSBuZXcgV2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2VPYmplY3QoaWQs
IGhvc3QsIGlzTG9jYWxTdG9yYWdlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL0ltYWdlcy9TdG9yYWdlLnN2ZyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL0ltYWdlcy9TdG9yYWdlLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zY2U0MzE4OTg1
ZWRlODI1NjZhNjFlZDZhYTBmZjZiMTEzMTJiNjg1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvSW1hZ2VzL1N0b3JhZ2Uuc3ZnCkBAIC0wLDAg
KzEsNyBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzwhLS0gQ29w
eXJpZ2h0IMKpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLiAtLT4KKzxzdmcg
dmlld0JveD0iMCAwIDE2IDE2IiB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyI+CisgICAgPHBhdGggZD0iTSAxMy40NDc1NjQ1IDYuNTcwMTAzOCBDIDE0LjEx
MzExMDEgNi45NTkxNTk5NCAxNC41IDcuNDQyNDM1NjIgMTQuNSA4IEMgMTQuNSA5LjUyOTUyMDE1
IDExLjU4ODU2MDQgMTAuNSA4IDEwLjUgQyA0LjQxMTQzOTU2IDEwLjUgMS41IDkuNTI5NTIwMTUg
MS41IDggQyAxLjUgNy40NDI0MzU2MiAxLjg4Njg4OTkyIDYuOTU5MTU5OTQgMi41NTI0MzU1NCA2
LjU3MDEwMzggQyAyLjk1OTg0NTY2IDYuNzUwMTc1MzQgMy40MzU4MzA1NyA2LjkwOTYzNzYzIDMu
OTY2MjA5ODIgNy4wNDM0MjYyMSBDIDMuOTQ5MTk5MzkgNy4wNDg5NTYxNiAzLjkzMjI4Njc4IDcu
MDU0NTIzNTIgMy45MTU0NzMxMyA3LjA2MDEyODA3IEMgMi45ODMwMzA5NyA3LjM3MDk0MjEyIDIu
NSA3Ljc1MTYxMzMgMi41IDggQyAyLjUgOC4yNDgzODY3IDIuOTgzMDMwOTcgOC42MjkwNTc4OCAz
LjkxNTQ3MzEzIDguOTM5ODcxOTMgQyA0Ljk3ODczMzYzIDkuMjk0MjkyMSA2LjQzNzc3ODAyIDku
NSA4IDkuNSBDIDkuNTYyMjIxOTggOS41IDExLjAyMTI2NjQgOS4yOTQyOTIxIDEyLjA4NDUyNjkg
OC45Mzk4NzE5MyBDIDEzLjAxNjk2OSA4LjYyOTA1Nzg4IDEzLjUgOC4yNDgzODY3IDEzLjUgOCBD
IDEzLjUgNy43NTE2MTMzIDEzLjAxNjk2OSA3LjM3MDk0MjEyIDEyLjA4NDUyNjkgNy4wNjAxMjgw
NyBDIDEyLjA2NzcxMzIgNy4wNTQ1MjM1MiAxMi4wNTA4MDA2IDcuMDQ4OTU2MTYgMTIuMDMzNzkw
MiA3LjA0MzQyNjIxIEMgMTIuNTY0MTY5NCA2LjkwOTYzNzYzIDEzLjA0MDE1NDMgNi43NTAxNzUz
NCAxMy40NDc1NjQ1IDYuNTcwMTAzOCBaIiBjbGFzcz0iZmlsbGVkIiBmaWxsPSJibGFjayIvPgor
ICAgIDxwYXRoIGQ9Ik0gMTMuNDQ3NTY0NSAxMC41NzAxMDM4IEMgMTQuMTEzMTEwMSAxMC45NTkx
NTk5IDE0LjUgMTEuNDQyNDM1NiAxNC41IDEyIEMgMTQuNSAxMy41Mjk1MjAxIDExLjU4ODU2MDQg
MTQuNSA4IDE0LjUgQyA0LjQxMTQzOTU2IDE0LjUgMS41IDEzLjUyOTUyMDEgMS41IDEyIEMgMS41
IDExLjQ0MjQzNTYgMS44ODY4ODk5MiAxMC45NTkxNTk5IDIuNTUyNDM1NTQgMTAuNTcwMTAzOCBD
IDIuOTU5ODQ1NjYgMTAuNzUwMTc1MyAzLjQzNTgzMDU3IDEwLjkwOTYzNzYgMy45NjYyMDk4MiAx
MS4wNDM0MjYyIEMgMy45NDkxOTkzOSAxMS4wNDg5NTYyIDMuOTMyMjg2NzggMTEuMDU0NTIzNSAz
LjkxNTQ3MzEzIDExLjA2MDEyODEgQyAyLjk4MzAzMDk3IDExLjM3MDk0MjEgMi41IDExLjc1MTYx
MzMgMi41IDEyIEMgMi41IDEyLjI0ODM4NjcgMi45ODMwMzA5NyAxMi42MjkwNTc5IDMuOTE1NDcz
MTMgMTIuOTM5ODcxOSBDIDQuOTc4NzMzNjMgMTMuMjk0MjkyMSA2LjQzNzc3ODAyIDEzLjUgOCAx
My41IEMgOS41NjIyMjE5OCAxMy41IDExLjAyMTI2NjQgMTMuMjk0MjkyMSAxMi4wODQ1MjY5IDEy
LjkzOTg3MTkgQyAxMy4wMTY5NjkgMTIuNjI5MDU3OSAxMy41IDEyLjI0ODM4NjcgMTMuNSAxMiBD
IDEzLjUgMTEuNzUxNjEzMyAxMy4wMTY5NjkgMTEuMzcwOTQyMSAxMi4wODQ1MjY5IDExLjA2MDEy
ODEgQyAxMi4wNjc3MTMyIDExLjA1NDUyMzUgMTIuMDUwODAwNiAxMS4wNDg5NTYyIDEyLjAzMzc5
MDIgMTEuMDQzNDI2MiBDIDEyLjU2NDE2OTQgMTAuOTA5NjM3NiAxMy4wNDAxNTQzIDEwLjc1MDE3
NTMgMTMuNDQ3NTY0NSAxMC41NzAxMDM4IFoiIGNsYXNzPSJmaWxsZWQiIGZpbGw9ImJsYWNrIi8+
CisgICAgPHBhdGggZD0iTSAxNC41IDQgQyAxNC41IDIuNDcwNDc5ODUgMTEuNTg4NTYwNCAxLjUg
OCAxLjUgQyA0LjQxMTQzOTU2IDEuNSAxLjUgMi40NzA0Nzk4NSAxLjUgNCBDIDEuNSA1LjUyOTUy
MDE1IDQuNDExNDM5NTYgNi41IDggNi41IEMgMTEuNTg4NTYwNCA2LjUgMTQuNSA1LjUyOTUyMDE1
IDE0LjUgNCBaIE0gMy45MTU0NzMxMyA0LjkzOTg3MTkzIEMgMi45ODMwMzA5NyA0LjYyOTA1Nzg4
IDIuNSA0LjI0ODM4NjcgMi41IDQgQyAyLjUgMy43NTE2MTMzIDIuOTgzMDMwOTcgMy4zNzA5NDIx
MiAzLjkxNTQ3MzEzIDMuMDYwMTI4MDcgQyA0Ljk3ODczMzYzIDIuNzA1NzA3OSA2LjQzNzc3ODAy
IDIuNSA4IDIuNSBDIDkuNTYyMjIxOTggMi41IDExLjAyMTI2NjQgMi43MDU3MDc5IDEyLjA4NDUy
NjkgMy4wNjAxMjgwNyBDIDEzLjAxNjk2OSAzLjM3MDk0MjEyIDEzLjUgMy43NTE2MTMzIDEzLjUg
NCBDIDEzLjUgNC4yNDgzODY3IDEzLjAxNjk2OSA0LjYyOTA1Nzg4IDEyLjA4NDUyNjkgNC45Mzk4
NzE5MyBDIDExLjAyMTI2NjQgNS4yOTQyOTIxIDkuNTYyMjIxOTggNS41IDggNS41IEMgNi40Mzc3
NzgwMiA1LjUgNC45Nzg3MzM2MyA1LjI5NDI5MjEgMy45MTU0NzMxMyA0LjkzOTg3MTkzIFoiIGNs
YXNzPSJmaWxsZWQiIGZpbGw9ImJsYWNrIi8+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01haW4uaHRtbCBiL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL01haW4uaHRtbAppbmRleCAzNDc0Njc2YTBiMjc4ZTZmYmEzMWQy
MmM4YjllYWNiMmZlODIyOGExLi4yNTBkMmQ0YTA2YWY1MTAwNGQ2OTFlOGE4NzA4NGI4MjgwZmI5
MWE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9NYWlu
Lmh0bWwKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTWFpbi5odG1s
CkBAIC0zNTMsNiArMzUzLDcgQEAKICAgICA8c2NyaXB0IHNyYz0iVmlld3MvUmVzb3VyY2VzVGFi
Q29udGVudFZpZXcuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9TZWFyY2hU
YWJDb250ZW50Vmlldy5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IlZpZXdzL1NldHRp
bmdzVGFiQ29udGVudFZpZXcuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9T
dG9yYWdlVGFiQ29udGVudFZpZXcuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJWaWV3
cy9UaW1lbGluZVRhYkNvbnRlbnRWaWV3LmpzIj48L3NjcmlwdD4KIAogICAgIDxzY3JpcHQgc3Jj
PSJWaWV3cy9EZXRhaWxzU2VjdGlvbi5qcyI+PC9zY3JpcHQ+CkBAIC01MDQsNiArNTA1LDcgQEAK
ICAgICA8c2NyaXB0IHNyYz0iVmlld3MvU291cmNlQ29kZVRpbWVsaW5lVGltZWxpbmVEYXRhR3Jp
ZE5vZGUuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9Tb3VyY2VDb2RlVGlt
ZWxpbmVUcmVlRWxlbWVudC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IlZpZXdzL1Nv
dXJjZU1hcFJlc291cmNlVHJlZUVsZW1lbnQuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3Jj
PSJWaWV3cy9TdG9yYWdlU2lkZWJhclBhbmVsLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNy
Yz0iVmlld3MvU3ludGF4SGlnaGxpZ2h0aW5nU3VwcG9ydC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNj
cmlwdCBzcmM9IlZpZXdzL1RleHRDb250ZW50Vmlldy5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlw
dCBzcmM9IlZpZXdzL1RleHRSZXNvdXJjZUNvbnRlbnRWaWV3LmpzIj48L3NjcmlwdD4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RhdGFiYXNl
VGFibGVDb250ZW50Vmlldy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1ZpZXdzL0RhdGFiYXNlVGFibGVDb250ZW50Vmlldy5qcwppbmRleCA5NTBiNmQ3MTZiMzk1NDI0
Mzg2YTAxMWMyZThmYzJlZGY3MWQ3OGZiLi5mZGFhZGQ3YTg1YzcwZmM3ZGMwM2ZkYzBkZWU2MDg1
YWJlZmI4ZDJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9WaWV3cy9EYXRhYmFzZVRhYmxlQ29udGVudFZpZXcuanMKKysrIGIvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRGF0YWJhc2VUYWJsZUNvbnRlbnRWaWV3LmpzCkBA
IC05MCw2ICs5MCw4IEBAIFdlYkluc3BlY3Rvci5EYXRhYmFzZVRhYmxlQ29udGVudFZpZXcucHJv
dG90eXBlID0gewogCiAgICAgICAgIHRoaXMuX2RhdGFHcmlkID0gbmV3IFdlYkluc3BlY3Rvci5E
YXRhR3JpZC5jcmVhdGVTb3J0YWJsZURhdGFHcmlkKGNvbHVtbk5hbWVzLCB2YWx1ZXMpOwogICAg
ICAgICBpZiAoIXRoaXMuX2RhdGFHcmlkIHx8ICF0aGlzLl9kYXRhR3JpZC5lbGVtZW50KSB7Cisg
ICAgICAgICAgICB0aGlzLl9kYXRhR3JpZCA9IHVuZGVmaW5lZDsKKwogICAgICAgICAgICAgLy8g
SWYgdGhlIERhdGFHcmlkIGlzIGVtcHR5LCB0aGVuIHdlIHdlcmUgcmV0dXJuZWQgYSB0YWJsZSB3
aXRoIG5vIGNvbHVtbnMuIFRoaXMgY2FuIGhhcHBlbiB3aGVuIGEgdGFibGUgaGFzCiAgICAgICAg
ICAgICAvLyBubyBkYXRhLCB0aGUgU0VMRUNUIHF1ZXJ5IG9ubHkgcmV0dXJucyBjb2x1bW4gbmFt
ZXMgd2hlbiB0aGVyZSBpcyBkYXRhLgogICAgICAgICAgICAgdGhpcy5lbGVtZW50LnJlbW92ZUNo
aWxkcmVuKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9WaWV3cy9OZXdUYWJDb250ZW50Vmlldy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL05ld1RhYkNvbnRlbnRWaWV3LmpzCmluZGV4IGNjODg4NWRlYWMwNWY2
ZWQ4ZDI5ZmM0YWU0NWRiZjEzOTIwYjMzYTcuLjI4NmRkMGNmN2IzZjAzMGZlMjY4M2NiMjY3ZTI2
NDQ0NjRkZmE2MmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1ZpZXdzL05ld1RhYkNvbnRlbnRWaWV3LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL05ld1RhYkNvbnRlbnRWaWV3LmpzCkBAIC0zMSw2ICszMSw3
IEBAIFdlYkluc3BlY3Rvci5OZXdUYWJDb250ZW50VmlldyA9IGZ1bmN0aW9uKGlkZW50aWZpZXIp
CiAKICAgICB2YXIgYWxsb3dlZE5ld1RhYnMgPSBbCiAgICAgICAgIHtpbWFnZTogIkltYWdlcy9F
bGVtZW50cy5zdmciLCB0aXRsZTogV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJFbGVtZW50cyIpLCB0
eXBlOiBXZWJJbnNwZWN0b3IuRWxlbWVudHNUYWJDb250ZW50Vmlldy5UeXBlfSwKKyAgICAgICAg
e2ltYWdlOiAiSW1hZ2VzL1N0b3JhZ2Uuc3ZnIiwgdGl0bGU6IFdlYkluc3BlY3Rvci5VSVN0cmlu
ZygiU3RvcmFnZSIpLCB0eXBlOiBXZWJJbnNwZWN0b3IuU3RvcmFnZVRhYkNvbnRlbnRWaWV3LlR5
cGV9LAogICAgICAgICB7aW1hZ2U6ICJJbWFnZXMvQ29uc29sZS5zdmciLCB0aXRsZTogV2ViSW5z
cGVjdG9yLlVJU3RyaW5nKCJDb25zb2xlIiksIHR5cGU6IFdlYkluc3BlY3Rvci5Db25zb2xlVGFi
Q29udGVudFZpZXcuVHlwZX0KICAgICBdOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9SZXNvdXJjZVNpZGViYXJQYW5lbC5qcyBiL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Jlc291cmNlU2lkZWJhclBhbmVs
LmpzCmluZGV4IGQxOTQ3ODdkODc2NTg4N2IyZDNmNGVkYjYxYmZlMDVjZWFhYTAyMGEuLjg0MTYz
Mjk2YTQxZWQ3MzE2MTgwNmNjYzA5N2Q1YjM2NTI4NTZhY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Jlc291cmNlU2lkZWJhclBhbmVsLmpz
CisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Jlc291cmNl
U2lkZWJhclBhbmVsLmpzCkBAIC0zNSwzMSArMzUsNiBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2VT
aWRlYmFyUGFuZWwgPSBjbGFzcyBSZXNvdXJjZVNpZGViYXJQYW5lbCBleHRlbmRzIFdlYkluc3Bl
YwogCiAgICAgICAgIHRoaXMuX3dhaXRpbmdGb3JJbml0aWFsTWFpbkZyYW1lID0gdHJ1ZTsKIAot
ICAgICAgICB0aGlzLl9sb2NhbFN0b3JhZ2VSb290VHJlZUVsZW1lbnQgPSBudWxsOwotICAgICAg
ICB0aGlzLl9zZXNzaW9uU3RvcmFnZVJvb3RUcmVlRWxlbWVudCA9IG51bGw7Ci0KLSAgICAgICAg
dGhpcy5fZGF0YWJhc2VSb290VHJlZUVsZW1lbnQgPSBudWxsOwotICAgICAgICB0aGlzLl9kYXRh
YmFzZUhvc3RUcmVlRWxlbWVudE1hcCA9IHt9OwotCi0gICAgICAgIHRoaXMuX2luZGV4ZWREYXRh
YmFzZVJvb3RUcmVlRWxlbWVudCA9IG51bGw7Ci0gICAgICAgIHRoaXMuX2luZGV4ZWREYXRhYmFz
ZUhvc3RUcmVlRWxlbWVudE1hcCA9IHt9OwotCi0gICAgICAgIHRoaXMuX2Nvb2tpZVN0b3JhZ2VS
b290VHJlZUVsZW1lbnQgPSBudWxsOwotCi0gICAgICAgIHRoaXMuX2FwcGxpY2F0aW9uQ2FjaGVS
b290VHJlZUVsZW1lbnQgPSBudWxsOwotICAgICAgICB0aGlzLl9hcHBsaWNhdGlvbkNhY2hlVVJM
VHJlZUVsZW1lbnRNYXAgPSB7fTsKLQotICAgICAgICBXZWJJbnNwZWN0b3Iuc3RvcmFnZU1hbmFn
ZXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuU3RvcmFnZU1hbmFnZXIuRXZlbnQuQ29v
a2llU3RvcmFnZU9iamVjdFdhc0FkZGVkLCB0aGlzLl9jb29raWVTdG9yYWdlT2JqZWN0V2FzQWRk
ZWQsIHRoaXMpOwotICAgICAgICBXZWJJbnNwZWN0b3Iuc3RvcmFnZU1hbmFnZXIuYWRkRXZlbnRM
aXN0ZW5lcihXZWJJbnNwZWN0b3IuU3RvcmFnZU1hbmFnZXIuRXZlbnQuRE9NU3RvcmFnZU9iamVj
dFdhc0FkZGVkLCB0aGlzLl9kb21TdG9yYWdlT2JqZWN0V2FzQWRkZWQsIHRoaXMpOwotICAgICAg
ICBXZWJJbnNwZWN0b3Iuc3RvcmFnZU1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0
b3IuU3RvcmFnZU1hbmFnZXIuRXZlbnQuRE9NU3RvcmFnZU9iamVjdFdhc0luc3BlY3RlZCwgdGhp
cy5fZG9tU3RvcmFnZU9iamVjdFdhc0luc3BlY3RlZCwgdGhpcyk7Ci0gICAgICAgIFdlYkluc3Bl
Y3Rvci5zdG9yYWdlTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5TdG9yYWdl
TWFuYWdlci5FdmVudC5EYXRhYmFzZVdhc0FkZGVkLCB0aGlzLl9kYXRhYmFzZVdhc0FkZGVkLCB0
aGlzKTsKLSAgICAgICAgV2ViSW5zcGVjdG9yLnN0b3JhZ2VNYW5hZ2VyLmFkZEV2ZW50TGlzdGVu
ZXIoV2ViSW5zcGVjdG9yLlN0b3JhZ2VNYW5hZ2VyLkV2ZW50LkRhdGFiYXNlV2FzSW5zcGVjdGVk
LCB0aGlzLl9kYXRhYmFzZVdhc0luc3BlY3RlZCwgdGhpcyk7Ci0gICAgICAgIFdlYkluc3BlY3Rv
ci5zdG9yYWdlTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5TdG9yYWdlTWFu
YWdlci5FdmVudC5JbmRleGVkRGF0YWJhc2VXYXNBZGRlZCwgdGhpcy5faW5kZXhlZERhdGFiYXNl
V2FzQWRkZWQsIHRoaXMpOwotICAgICAgICBXZWJJbnNwZWN0b3Iuc3RvcmFnZU1hbmFnZXIuYWRk
RXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuU3RvcmFnZU1hbmFnZXIuRXZlbnQuQ2xlYXJlZCwg
dGhpcy5fc3RvcmFnZUNsZWFyZWQsIHRoaXMpOwotCi0gICAgICAgIFdlYkluc3BlY3Rvci5hcHBs
aWNhdGlvbkNhY2hlTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5BcHBsaWNh
dGlvbkNhY2hlTWFuYWdlci5FdmVudC5GcmFtZU1hbmlmZXN0QWRkZWQsIHRoaXMuX2ZyYW1lTWFu
aWZlc3RBZGRlZCwgdGhpcyk7Ci0gICAgICAgIFdlYkluc3BlY3Rvci5hcHBsaWNhdGlvbkNhY2hl
TWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5BcHBsaWNhdGlvbkNhY2hlTWFu
YWdlci5FdmVudC5GcmFtZU1hbmlmZXN0UmVtb3ZlZCwgdGhpcy5fZnJhbWVNYW5pZmVzdFJlbW92
ZWQsIHRoaXMpOwotCiAgICAgICAgIFdlYkluc3BlY3Rvci5mcmFtZVJlc291cmNlTWFuYWdlci5h
ZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5GcmFtZVJlc291cmNlTWFuYWdlci5FdmVudC5N
YWluRnJhbWVEaWRDaGFuZ2UsIHRoaXMuX21haW5GcmFtZURpZENoYW5nZSwgdGhpcyk7CiAKICAg
ICAgICAgV2ViSW5zcGVjdG9yLmRlYnVnZ2VyTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdlYklu
c3BlY3Rvci5EZWJ1Z2dlck1hbmFnZXIuRXZlbnQuU2NyaXB0QWRkZWQsIHRoaXMuX3NjcmlwdFdh
c0FkZGVkLCB0aGlzKTsKQEAgLTMwMCwxNSArMjc1LDEwIEBAIFdlYkluc3BlY3Rvci5SZXNvdXJj
ZVNpZGViYXJQYW5lbCA9IGNsYXNzIFJlc291cmNlU2lkZWJhclBhbmVsIGV4dGVuZHMgV2ViSW5z
cGVjCiAKICAgICBfdHJlZUVsZW1lbnRTZWxlY3RlZCh0cmVlRWxlbWVudCwgc2VsZWN0ZWRCeVVz
ZXIpCiAgICAgewotICAgICAgICBpZiAodHJlZUVsZW1lbnQgaW5zdGFuY2VvZiBXZWJJbnNwZWN0
b3IuRm9sZGVyVHJlZUVsZW1lbnQgfHwgdHJlZUVsZW1lbnQgaW5zdGFuY2VvZiBXZWJJbnNwZWN0
b3IuRGF0YWJhc2VIb3N0VHJlZUVsZW1lbnQgfHwKLSAgICAgICAgICAgIHRyZWVFbGVtZW50IGlu
c3RhbmNlb2YgV2ViSW5zcGVjdG9yLkluZGV4ZWREYXRhYmFzZUhvc3RUcmVlRWxlbWVudCB8fCB0
cmVlRWxlbWVudCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5JbmRleGVkRGF0YWJhc2VUcmVlRWxl
bWVudCkKKyAgICAgICAgaWYgKHRyZWVFbGVtZW50IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkZv
bGRlclRyZWVFbGVtZW50KQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIGlmICh0cmVl
RWxlbWVudCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5SZXNvdXJjZVRyZWVFbGVtZW50IHx8IHRy
ZWVFbGVtZW50IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlNjcmlwdFRyZWVFbGVtZW50IHx8Ci0g
ICAgICAgICAgICB0cmVlRWxlbWVudCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5TdG9yYWdlVHJl
ZUVsZW1lbnQgfHwgdHJlZUVsZW1lbnQgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuRGF0YWJhc2VU
YWJsZVRyZWVFbGVtZW50IHx8Ci0gICAgICAgICAgICB0cmVlRWxlbWVudCBpbnN0YW5jZW9mIFdl
Ykluc3BlY3Rvci5EYXRhYmFzZVRyZWVFbGVtZW50IHx8IHRyZWVFbGVtZW50IGluc3RhbmNlb2Yg
V2ViSW5zcGVjdG9yLkFwcGxpY2F0aW9uQ2FjaGVGcmFtZVRyZWVFbGVtZW50IHx8Ci0gICAgICAg
ICAgICB0cmVlRWxlbWVudCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5Db250ZW50Rmxvd1RyZWVF
bGVtZW50IHx8IHRyZWVFbGVtZW50IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkluZGV4ZWREYXRh
YmFzZU9iamVjdFN0b3JlVHJlZUVsZW1lbnQgfHwKLSAgICAgICAgICAgIHRyZWVFbGVtZW50IGlu
c3RhbmNlb2YgV2ViSW5zcGVjdG9yLkluZGV4ZWREYXRhYmFzZU9iamVjdFN0b3JlSW5kZXhUcmVl
RWxlbWVudCkgeworICAgICAgICBpZiAodHJlZUVsZW1lbnQgaW5zdGFuY2VvZiBXZWJJbnNwZWN0
b3IuUmVzb3VyY2VUcmVlRWxlbWVudCB8fCB0cmVlRWxlbWVudCBpbnN0YW5jZW9mIFdlYkluc3Bl
Y3Rvci5TY3JpcHRUcmVlRWxlbWVudCkgewogICAgICAgICAgICAgV2ViSW5zcGVjdG9yLnNob3dS
ZXByZXNlbnRlZE9iamVjdCh0cmVlRWxlbWVudC5yZXByZXNlbnRlZE9iamVjdCk7CiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTMxNiw5MCArMjg2LDYgQEAgV2ViSW5zcGVjdG9y
LlJlc291cmNlU2lkZWJhclBhbmVsID0gY2xhc3MgUmVzb3VyY2VTaWRlYmFyUGFuZWwgZXh0ZW5k
cyBXZWJJbnNwZWMKICAgICAgICAgY29uc29sZS5lcnJvcigiVW5rbm93biB0cmVlIGVsZW1lbnQi
LCB0cmVlRWxlbWVudCk7CiAgICAgfQogCi0gICAgX2RvbVN0b3JhZ2VPYmplY3RXYXNBZGRlZChl
dmVudCkKLSAgICB7Ci0gICAgICAgIHZhciBkb21TdG9yYWdlID0gZXZlbnQuZGF0YS5kb21TdG9y
YWdlOwotICAgICAgICB2YXIgc3RvcmFnZUVsZW1lbnQgPSBuZXcgV2ViSW5zcGVjdG9yLkRPTVN0
b3JhZ2VUcmVlRWxlbWVudChkb21TdG9yYWdlKTsKLQotICAgICAgICBpZiAoZG9tU3RvcmFnZS5p
c0xvY2FsU3RvcmFnZSgpKQotICAgICAgICAgICAgdGhpcy5fbG9jYWxTdG9yYWdlUm9vdFRyZWVF
bGVtZW50ID0gdGhpcy5fYWRkU3RvcmFnZUNoaWxkKHN0b3JhZ2VFbGVtZW50LCB0aGlzLl9sb2Nh
bFN0b3JhZ2VSb290VHJlZUVsZW1lbnQsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiTG9jYWwgU3Rv
cmFnZSIpKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgdGhpcy5fc2Vzc2lvblN0b3JhZ2VS
b290VHJlZUVsZW1lbnQgPSB0aGlzLl9hZGRTdG9yYWdlQ2hpbGQoc3RvcmFnZUVsZW1lbnQsIHRo
aXMuX3Nlc3Npb25TdG9yYWdlUm9vdFRyZWVFbGVtZW50LCBXZWJJbnNwZWN0b3IuVUlTdHJpbmco
IlNlc3Npb24gU3RvcmFnZSIpKTsKLSAgICB9Ci0KLSAgICBfZG9tU3RvcmFnZU9iamVjdFdhc0lu
c3BlY3RlZChldmVudCkKLSAgICB7Ci0gICAgICAgIHZhciBkb21TdG9yYWdlID0gZXZlbnQuZGF0
YS5kb21TdG9yYWdlOwotICAgICAgICB2YXIgdHJlZUVsZW1lbnQgPSB0aGlzLnRyZWVFbGVtZW50
Rm9yUmVwcmVzZW50ZWRPYmplY3QoZG9tU3RvcmFnZSk7Ci0gICAgICAgIHRyZWVFbGVtZW50LnJl
dmVhbEFuZFNlbGVjdCh0cnVlKTsKLSAgICB9Ci0KLSAgICBfZGF0YWJhc2VXYXNBZGRlZChldmVu
dCkKLSAgICB7Ci0gICAgICAgIHZhciBkYXRhYmFzZSA9IGV2ZW50LmRhdGEuZGF0YWJhc2U7Ci0K
LSAgICAgICAgY29uc29sZS5hc3NlcnQoZGF0YWJhc2UgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3Iu
RGF0YWJhc2VPYmplY3QpOwotCi0gICAgICAgIGlmICghdGhpcy5fZGF0YWJhc2VIb3N0VHJlZUVs
ZW1lbnRNYXBbZGF0YWJhc2UuaG9zdF0pIHsKLSAgICAgICAgICAgIHRoaXMuX2RhdGFiYXNlSG9z
dFRyZWVFbGVtZW50TWFwW2RhdGFiYXNlLmhvc3RdID0gbmV3IFdlYkluc3BlY3Rvci5EYXRhYmFz
ZUhvc3RUcmVlRWxlbWVudChkYXRhYmFzZS5ob3N0KTsKLSAgICAgICAgICAgIHRoaXMuX2RhdGFi
YXNlUm9vdFRyZWVFbGVtZW50ID0gdGhpcy5fYWRkU3RvcmFnZUNoaWxkKHRoaXMuX2RhdGFiYXNl
SG9zdFRyZWVFbGVtZW50TWFwW2RhdGFiYXNlLmhvc3RdLCB0aGlzLl9kYXRhYmFzZVJvb3RUcmVl
RWxlbWVudCwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJEYXRhYmFzZXMiKSk7Ci0gICAgICAgIH0K
LQotICAgICAgICB2YXIgZGF0YWJhc2VFbGVtZW50ID0gbmV3IFdlYkluc3BlY3Rvci5EYXRhYmFz
ZVRyZWVFbGVtZW50KGRhdGFiYXNlKTsKLSAgICAgICAgdGhpcy5fZGF0YWJhc2VIb3N0VHJlZUVs
ZW1lbnRNYXBbZGF0YWJhc2UuaG9zdF0uYXBwZW5kQ2hpbGQoZGF0YWJhc2VFbGVtZW50KTsKLSAg
ICB9Ci0KLSAgICBfZGF0YWJhc2VXYXNJbnNwZWN0ZWQoZXZlbnQpCi0gICAgewotICAgICAgICB2
YXIgZGF0YWJhc2UgPSBldmVudC5kYXRhLmRhdGFiYXNlOwotICAgICAgICB2YXIgdHJlZUVsZW1l
bnQgPSB0aGlzLnRyZWVFbGVtZW50Rm9yUmVwcmVzZW50ZWRPYmplY3QoZGF0YWJhc2UpOwotICAg
ICAgICB0cmVlRWxlbWVudC5yZXZlYWxBbmRTZWxlY3QodHJ1ZSk7Ci0gICAgfQotCi0gICAgX2lu
ZGV4ZWREYXRhYmFzZVdhc0FkZGVkKGV2ZW50KQotICAgIHsKLSAgICAgICAgdmFyIGluZGV4ZWRE
YXRhYmFzZSA9IGV2ZW50LmRhdGEuaW5kZXhlZERhdGFiYXNlOwotCi0gICAgICAgIGNvbnNvbGUu
YXNzZXJ0KGluZGV4ZWREYXRhYmFzZSBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5JbmRleGVkRGF0
YWJhc2UpOwotCi0gICAgICAgIGlmICghdGhpcy5faW5kZXhlZERhdGFiYXNlSG9zdFRyZWVFbGVt
ZW50TWFwW2luZGV4ZWREYXRhYmFzZS5ob3N0XSkgewotICAgICAgICAgICAgdGhpcy5faW5kZXhl
ZERhdGFiYXNlSG9zdFRyZWVFbGVtZW50TWFwW2luZGV4ZWREYXRhYmFzZS5ob3N0XSA9IG5ldyBX
ZWJJbnNwZWN0b3IuSW5kZXhlZERhdGFiYXNlSG9zdFRyZWVFbGVtZW50KGluZGV4ZWREYXRhYmFz
ZS5ob3N0KTsKLSAgICAgICAgICAgIHRoaXMuX2luZGV4ZWREYXRhYmFzZVJvb3RUcmVlRWxlbWVu
dCA9IHRoaXMuX2FkZFN0b3JhZ2VDaGlsZCh0aGlzLl9pbmRleGVkRGF0YWJhc2VIb3N0VHJlZUVs
ZW1lbnRNYXBbaW5kZXhlZERhdGFiYXNlLmhvc3RdLCB0aGlzLl9pbmRleGVkRGF0YWJhc2VSb290
VHJlZUVsZW1lbnQsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiSW5kZXhlZCBEYXRhYmFzZXMiKSk7
Ci0gICAgICAgIH0KLQotICAgICAgICB2YXIgaW5kZXhlZERhdGFiYXNlRWxlbWVudCA9IG5ldyBX
ZWJJbnNwZWN0b3IuSW5kZXhlZERhdGFiYXNlVHJlZUVsZW1lbnQoaW5kZXhlZERhdGFiYXNlKTsK
LSAgICAgICAgdGhpcy5faW5kZXhlZERhdGFiYXNlSG9zdFRyZWVFbGVtZW50TWFwW2luZGV4ZWRE
YXRhYmFzZS5ob3N0XS5hcHBlbmRDaGlsZChpbmRleGVkRGF0YWJhc2VFbGVtZW50KTsKLSAgICB9
Ci0KLSAgICBfY29va2llU3RvcmFnZU9iamVjdFdhc0FkZGVkKGV2ZW50KQotICAgIHsKLSAgICAg
ICAgY29uc29sZS5hc3NlcnQoZXZlbnQuZGF0YS5jb29raWVTdG9yYWdlIGluc3RhbmNlb2YgV2Vi
SW5zcGVjdG9yLkNvb2tpZVN0b3JhZ2VPYmplY3QpOwotCi0gICAgICAgIHZhciBjb29raWVFbGVt
ZW50ID0gbmV3IFdlYkluc3BlY3Rvci5Db29raWVTdG9yYWdlVHJlZUVsZW1lbnQoZXZlbnQuZGF0
YS5jb29raWVTdG9yYWdlKTsKLSAgICAgICAgdGhpcy5fY29va2llU3RvcmFnZVJvb3RUcmVlRWxl
bWVudCA9IHRoaXMuX2FkZFN0b3JhZ2VDaGlsZChjb29raWVFbGVtZW50LCB0aGlzLl9jb29raWVT
dG9yYWdlUm9vdFRyZWVFbGVtZW50LCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkNvb2tpZXMiKSk7
Ci0gICAgfQotCi0gICAgX2ZyYW1lTWFuaWZlc3RBZGRlZChldmVudCkKLSAgICB7Ci0gICAgICAg
IHZhciBmcmFtZU1hbmlmZXN0ID0gZXZlbnQuZGF0YS5mcmFtZU1hbmlmZXN0OwotICAgICAgICBj
b25zb2xlLmFzc2VydChmcmFtZU1hbmlmZXN0IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkFwcGxp
Y2F0aW9uQ2FjaGVGcmFtZSk7Ci0KLSAgICAgICAgdmFyIG1hbmlmZXN0ID0gZnJhbWVNYW5pZmVz
dC5tYW5pZmVzdDsKLSAgICAgICAgdmFyIG1hbmlmZXN0VVJMID0gbWFuaWZlc3QubWFuaWZlc3RV
Ukw7Ci0gICAgICAgIGlmICghdGhpcy5fYXBwbGljYXRpb25DYWNoZVVSTFRyZWVFbGVtZW50TWFw
W21hbmlmZXN0VVJMXSkgewotICAgICAgICAgICAgdGhpcy5fYXBwbGljYXRpb25DYWNoZVVSTFRy
ZWVFbGVtZW50TWFwW21hbmlmZXN0VVJMXSA9IG5ldyBXZWJJbnNwZWN0b3IuQXBwbGljYXRpb25D
YWNoZU1hbmlmZXN0VHJlZUVsZW1lbnQobWFuaWZlc3QpOwotICAgICAgICAgICAgdGhpcy5fYXBw
bGljYXRpb25DYWNoZVJvb3RUcmVlRWxlbWVudCA9IHRoaXMuX2FkZFN0b3JhZ2VDaGlsZCh0aGlz
Ll9hcHBsaWNhdGlvbkNhY2hlVVJMVHJlZUVsZW1lbnRNYXBbbWFuaWZlc3RVUkxdLCB0aGlzLl9h
cHBsaWNhdGlvbkNhY2hlUm9vdFRyZWVFbGVtZW50LCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkFw
cGxpY2F0aW9uIENhY2hlIikpOwotICAgICAgICB9Ci0KLSAgICAgICAgdmFyIGZyYW1lQ2FjaGVF
bGVtZW50ID0gbmV3IFdlYkluc3BlY3Rvci5BcHBsaWNhdGlvbkNhY2hlRnJhbWVUcmVlRWxlbWVu
dChmcmFtZU1hbmlmZXN0KTsKLSAgICAgICAgdGhpcy5fYXBwbGljYXRpb25DYWNoZVVSTFRyZWVF
bGVtZW50TWFwW21hbmlmZXN0VVJMXS5hcHBlbmRDaGlsZChmcmFtZUNhY2hlRWxlbWVudCk7Ci0g
ICAgfQotCi0gICAgX2ZyYW1lTWFuaWZlc3RSZW1vdmVkKGV2ZW50KQotICAgIHsKLSAgICAgICAg
IC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcy4KLSAgICB9Ci0KICAgICBfY29tcGFyZVRyZWVFbGVt
ZW50cyhhLCBiKQogICAgIHsKICAgICAgICAgLy8gQWx3YXlzIHNvcnQgdGhlIG1haW4gZnJhbWUg
ZWxlbWVudCBmaXJzdC4KQEAgLTQxNCw3NiArMzAwLDYgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNl
U2lkZWJhclBhbmVsID0gY2xhc3MgUmVzb3VyY2VTaWRlYmFyUGFuZWwgZXh0ZW5kcyBXZWJJbnNw
ZWMKICAgICAgICAgcmV0dXJuIChhLm1haW5UaXRsZSB8fCAiIikubG9jYWxlQ29tcGFyZShiLm1h
aW5UaXRsZSB8fCAiIik7CiAgICAgfQogCi0gICAgX2FkZFN0b3JhZ2VDaGlsZChjaGlsZEVsZW1l
bnQsIHBhcmVudEVsZW1lbnQsIGZvbGRlck5hbWUpCi0gICAgewotICAgICAgICBpZiAoIXBhcmVu
dEVsZW1lbnQpIHsKLSAgICAgICAgICAgIGNoaWxkRWxlbWVudC5mbGF0dGVuZWQgPSB0cnVlOwot
Ci0gICAgICAgICAgICB0aGlzLmNvbnRlbnRUcmVlT3V0bGluZS5pbnNlcnRDaGlsZChjaGlsZEVs
ZW1lbnQsIGluc2VydGlvbkluZGV4Rm9yT2JqZWN0SW5MaXN0U29ydGVkQnlGdW5jdGlvbihjaGls
ZEVsZW1lbnQsIHRoaXMuY29udGVudFRyZWVPdXRsaW5lLmNoaWxkcmVuLCB0aGlzLl9jb21wYXJl
VHJlZUVsZW1lbnRzKSk7Ci0KLSAgICAgICAgICAgIHJldHVybiBjaGlsZEVsZW1lbnQ7Ci0gICAg
ICAgIH0KLQotICAgICAgICBpZiAocGFyZW50RWxlbWVudCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rv
ci5TdG9yYWdlVHJlZUVsZW1lbnQpIHsKLSAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHBhcmVu
dEVsZW1lbnQuZmxhdHRlbmVkKTsKLQotICAgICAgICAgICAgdmFyIHByZXZpb3VzT25seUNoaWxk
ID0gcGFyZW50RWxlbWVudDsKLSAgICAgICAgICAgIHByZXZpb3VzT25seUNoaWxkLmZsYXR0ZW5l
ZCA9IGZhbHNlOwotICAgICAgICAgICAgdGhpcy5jb250ZW50VHJlZU91dGxpbmUucmVtb3ZlQ2hp
bGQocHJldmlvdXNPbmx5Q2hpbGQpOwotCi0gICAgICAgICAgICB2YXIgZm9sZGVyRWxlbWVudCA9
IG5ldyBXZWJJbnNwZWN0b3IuRm9sZGVyVHJlZUVsZW1lbnQoZm9sZGVyTmFtZSk7Ci0gICAgICAg
ICAgICB0aGlzLmNvbnRlbnRUcmVlT3V0bGluZS5pbnNlcnRDaGlsZChmb2xkZXJFbGVtZW50LCBp
bnNlcnRpb25JbmRleEZvck9iamVjdEluTGlzdFNvcnRlZEJ5RnVuY3Rpb24oZm9sZGVyRWxlbWVu
dCwgdGhpcy5jb250ZW50VHJlZU91dGxpbmUuY2hpbGRyZW4sIHRoaXMuX2NvbXBhcmVUcmVlRWxl
bWVudHMpKTsKLQotICAgICAgICAgICAgZm9sZGVyRWxlbWVudC5hcHBlbmRDaGlsZChwcmV2aW91
c09ubHlDaGlsZCk7Ci0gICAgICAgICAgICBmb2xkZXJFbGVtZW50Lmluc2VydENoaWxkKGNoaWxk
RWxlbWVudCwgaW5zZXJ0aW9uSW5kZXhGb3JPYmplY3RJbkxpc3RTb3J0ZWRCeUZ1bmN0aW9uKGNo
aWxkRWxlbWVudCwgZm9sZGVyRWxlbWVudC5jaGlsZHJlbiwgdGhpcy5fY29tcGFyZVRyZWVFbGVt
ZW50cykpOwotCi0gICAgICAgICAgICByZXR1cm4gZm9sZGVyRWxlbWVudDsKLSAgICAgICAgfQot
Ci0gICAgICAgIGNvbnNvbGUuYXNzZXJ0KHBhcmVudEVsZW1lbnQgaW5zdGFuY2VvZiBXZWJJbnNw
ZWN0b3IuRm9sZGVyVHJlZUVsZW1lbnQpOwotICAgICAgICBwYXJlbnRFbGVtZW50Lmluc2VydENo
aWxkKGNoaWxkRWxlbWVudCwgaW5zZXJ0aW9uSW5kZXhGb3JPYmplY3RJbkxpc3RTb3J0ZWRCeUZ1
bmN0aW9uKGNoaWxkRWxlbWVudCwgcGFyZW50RWxlbWVudC5jaGlsZHJlbiwgdGhpcy5fY29tcGFy
ZVRyZWVFbGVtZW50cykpOwotCi0gICAgICAgIHJldHVybiBwYXJlbnRFbGVtZW50OwotICAgIH0K
LQotICAgIF9zdG9yYWdlQ2xlYXJlZChldmVudCkKLSAgICB7Ci0gICAgICAgIC8vIENsb3NlIGFs
bCBET00gYW5kIGNvb2tpZSBzdG9yYWdlIGNvbnRlbnQgdmlld3Mgc2luY2UgdGhlIG1haW4gZnJh
bWUgaGFzIG5hdmlnYXRlZCBhbmQgYWxsIHN0b3JhZ2VzIGFyZSBjbGVhcmVkLgotICAgICAgICB0
aGlzLmNvbnRlbnRCcm93c2VyLmNvbnRlbnRWaWV3Q29udGFpbmVyLmNsb3NlQWxsQ29udGVudFZp
ZXdzT2ZQcm90b3R5cGUoV2ViSW5zcGVjdG9yLkNvb2tpZVN0b3JhZ2VDb250ZW50Vmlldyk7Ci0g
ICAgICAgIHRoaXMuY29udGVudEJyb3dzZXIuY29udGVudFZpZXdDb250YWluZXIuY2xvc2VBbGxD
b250ZW50Vmlld3NPZlByb3RvdHlwZShXZWJJbnNwZWN0b3IuRE9NU3RvcmFnZUNvbnRlbnRWaWV3
KTsKLSAgICAgICAgdGhpcy5jb250ZW50QnJvd3Nlci5jb250ZW50Vmlld0NvbnRhaW5lci5jbG9z
ZUFsbENvbnRlbnRWaWV3c09mUHJvdG90eXBlKFdlYkluc3BlY3Rvci5EYXRhYmFzZVRhYmxlQ29u
dGVudFZpZXcpOwotICAgICAgICB0aGlzLmNvbnRlbnRCcm93c2VyLmNvbnRlbnRWaWV3Q29udGFp
bmVyLmNsb3NlQWxsQ29udGVudFZpZXdzT2ZQcm90b3R5cGUoV2ViSW5zcGVjdG9yLkRhdGFiYXNl
Q29udGVudFZpZXcpOwotICAgICAgICB0aGlzLmNvbnRlbnRCcm93c2VyLmNvbnRlbnRWaWV3Q29u
dGFpbmVyLmNsb3NlQWxsQ29udGVudFZpZXdzT2ZQcm90b3R5cGUoV2ViSW5zcGVjdG9yLkFwcGxp
Y2F0aW9uQ2FjaGVGcmFtZUNvbnRlbnRWaWV3KTsKLQotICAgICAgICBpZiAodGhpcy5fbG9jYWxT
dG9yYWdlUm9vdFRyZWVFbGVtZW50ICYmIHRoaXMuX2xvY2FsU3RvcmFnZVJvb3RUcmVlRWxlbWVu
dC5wYXJlbnQpCi0gICAgICAgICAgICB0aGlzLl9sb2NhbFN0b3JhZ2VSb290VHJlZUVsZW1lbnQu
cGFyZW50LnJlbW92ZUNoaWxkKHRoaXMuX2xvY2FsU3RvcmFnZVJvb3RUcmVlRWxlbWVudCk7Ci0K
LSAgICAgICAgaWYgKHRoaXMuX3Nlc3Npb25TdG9yYWdlUm9vdFRyZWVFbGVtZW50ICYmIHRoaXMu
X3Nlc3Npb25TdG9yYWdlUm9vdFRyZWVFbGVtZW50LnBhcmVudCkKLSAgICAgICAgICAgIHRoaXMu
X3Nlc3Npb25TdG9yYWdlUm9vdFRyZWVFbGVtZW50LnBhcmVudC5yZW1vdmVDaGlsZCh0aGlzLl9z
ZXNzaW9uU3RvcmFnZVJvb3RUcmVlRWxlbWVudCk7Ci0KLSAgICAgICAgaWYgKHRoaXMuX2RhdGFi
YXNlUm9vdFRyZWVFbGVtZW50ICYmIHRoaXMuX2RhdGFiYXNlUm9vdFRyZWVFbGVtZW50LnBhcmVu
dCkKLSAgICAgICAgICAgIHRoaXMuX2RhdGFiYXNlUm9vdFRyZWVFbGVtZW50LnBhcmVudC5yZW1v
dmVDaGlsZCh0aGlzLl9kYXRhYmFzZVJvb3RUcmVlRWxlbWVudCk7Ci0KLSAgICAgICAgaWYgKHRo
aXMuX2luZGV4ZWREYXRhYmFzZVJvb3RUcmVlRWxlbWVudCAmJiB0aGlzLl9pbmRleGVkRGF0YWJh
c2VSb290VHJlZUVsZW1lbnQucGFyZW50KQotICAgICAgICAgICAgdGhpcy5faW5kZXhlZERhdGFi
YXNlUm9vdFRyZWVFbGVtZW50LnBhcmVudC5yZW1vdmVDaGlsZCh0aGlzLl9pbmRleGVkRGF0YWJh
c2VSb290VHJlZUVsZW1lbnQpOwotCi0gICAgICAgIGlmICh0aGlzLl9jb29raWVTdG9yYWdlUm9v
dFRyZWVFbGVtZW50ICYmIHRoaXMuX2Nvb2tpZVN0b3JhZ2VSb290VHJlZUVsZW1lbnQucGFyZW50
KQotICAgICAgICAgICAgdGhpcy5fY29va2llU3RvcmFnZVJvb3RUcmVlRWxlbWVudC5wYXJlbnQu
cmVtb3ZlQ2hpbGQodGhpcy5fY29va2llU3RvcmFnZVJvb3RUcmVlRWxlbWVudCk7Ci0KLSAgICAg
ICAgaWYgKHRoaXMuX2FwcGxpY2F0aW9uQ2FjaGVSb290VHJlZUVsZW1lbnQgJiYgdGhpcy5fYXBw
bGljYXRpb25DYWNoZVJvb3RUcmVlRWxlbWVudC5wYXJlbnQpCi0gICAgICAgICAgICB0aGlzLl9h
cHBsaWNhdGlvbkNhY2hlUm9vdFRyZWVFbGVtZW50LnBhcmVudC5yZW1vdmVDaGlsZCh0aGlzLl9h
cHBsaWNhdGlvbkNhY2hlUm9vdFRyZWVFbGVtZW50KTsKLQotICAgICAgICB0aGlzLl9sb2NhbFN0
b3JhZ2VSb290VHJlZUVsZW1lbnQgPSBudWxsOwotICAgICAgICB0aGlzLl9zZXNzaW9uU3RvcmFn
ZVJvb3RUcmVlRWxlbWVudCA9IG51bGw7Ci0gICAgICAgIHRoaXMuX2RhdGFiYXNlUm9vdFRyZWVF
bGVtZW50ID0gbnVsbDsKLSAgICAgICAgdGhpcy5fZGF0YWJhc2VIb3N0VHJlZUVsZW1lbnRNYXAg
PSB7fTsKLSAgICAgICAgdGhpcy5faW5kZXhlZERhdGFiYXNlUm9vdFRyZWVFbGVtZW50ID0gbnVs
bDsKLSAgICAgICAgdGhpcy5faW5kZXhlZERhdGFiYXNlSG9zdFRyZWVFbGVtZW50TWFwID0ge307
Ci0gICAgICAgIHRoaXMuX2Nvb2tpZVN0b3JhZ2VSb290VHJlZUVsZW1lbnQgPSBudWxsOwotICAg
ICAgICB0aGlzLl9hcHBsaWNhdGlvbkNhY2hlUm9vdFRyZWVFbGVtZW50ID0gbnVsbDsKLSAgICAg
ICAgdGhpcy5fYXBwbGljYXRpb25DYWNoZVVSTFRyZWVFbGVtZW50TWFwID0ge307Ci0gICAgfQot
CiAgICAgX2V4dHJhRG9tYWluc0FjdGl2YXRlZCgpCiAgICAgewogICAgICAgICBpZiAoV2ViSW5z
cGVjdG9yLmRlYnVnZ2FibGVUeXBlID09PSBXZWJJbnNwZWN0b3IuRGVidWdnYWJsZVR5cGUuSmF2
YVNjcmlwdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1ZpZXdzL1Jlc291cmNlc1RhYkNvbnRlbnRWaWV3LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvUmVzb3VyY2VzVGFiQ29udGVudFZpZXcuanMKaW5kZXggNjM5
YmM1YzU5Y2FiYmI2ZjlhYTU4M2RjODdkNmU5MmVlYzI5NjMwMy4uZWI0YTIyNzZlYzYzNzQyMTA4
MDhjM2M1MmI1YmFkOTc4NWQwODExZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvUmVzb3VyY2VzVGFiQ29udGVudFZpZXcuanMKKysrIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvUmVzb3VyY2VzVGFiQ29udGVu
dFZpZXcuanMKQEAgLTI2LDcgKzI2LDcgQEAKIFdlYkluc3BlY3Rvci5SZXNvdXJjZXNUYWJDb250
ZW50VmlldyA9IGZ1bmN0aW9uKGlkZW50aWZpZXIpCiB7CiAgICAgdmFyIHRhYkJhckl0ZW0gPSBu
ZXcgV2ViSW5zcGVjdG9yLlRhYkJhckl0ZW0oIkltYWdlcy9SZXNvdXJjZXMuc3ZnIiwgV2ViSW5z
cGVjdG9yLlVJU3RyaW5nKCJSZXNvdXJjZXMiKSk7Ci0gICAgdmFyIGRldGFpbHNTaWRlYmFyUGFu
ZWxzID0gW1dlYkluc3BlY3Rvci5yZXNvdXJjZURldGFpbHNTaWRlYmFyUGFuZWwsIFdlYkluc3Bl
Y3Rvci5hcHBsaWNhdGlvbkNhY2hlRGV0YWlsc1NpZGViYXJQYW5lbCwgV2ViSW5zcGVjdG9yLnBy
b2JlRGV0YWlsc1NpZGViYXJQYW5lbF07CisgICAgdmFyIGRldGFpbHNTaWRlYmFyUGFuZWxzID0g
W1dlYkluc3BlY3Rvci5yZXNvdXJjZURldGFpbHNTaWRlYmFyUGFuZWwsIFdlYkluc3BlY3Rvci5w
cm9iZURldGFpbHNTaWRlYmFyUGFuZWxdOwogCiAgICAgLy8gRklYTUU6IFVudGlsIENvbnRlbnRG
bG93cyBhcmUgbW92ZWQgdG8gdGhlIEVsZW1lbnRzIHRhYiwgdGhlc2UgZGV0YWlscyBzaWRlYmFy
IHBhbmVscyBuZWVkIHRvIGJlIGluY2x1ZGVkLgogICAgIGRldGFpbHNTaWRlYmFyUGFuZWxzID0g
ZGV0YWlsc1NpZGViYXJQYW5lbHMuY29uY2F0KFtXZWJJbnNwZWN0b3IuZG9tTm9kZURldGFpbHNT
aWRlYmFyUGFuZWwsIFdlYkluc3BlY3Rvci5jc3NTdHlsZURldGFpbHNTaWRlYmFyUGFuZWxdKTsK
QEAgLTUyLDEyICs1Miw3IEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZXNUYWJDb250ZW50Vmlldy5w
cm90b3R5cGUgPSB7CiAKICAgICBjYW5TaG93UmVwcmVzZW50ZWRPYmplY3Q6IGZ1bmN0aW9uKHJl
cHJlc2VudGVkT2JqZWN0KQogICAgIHsKLSAgICAgICAgcmV0dXJuIHJlcHJlc2VudGVkT2JqZWN0
IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkZyYW1lIHx8IHJlcHJlc2VudGVkT2JqZWN0IGluc3Rh
bmNlb2YgV2ViSW5zcGVjdG9yLlJlc291cmNlIHx8Ci0gICAgICAgICAgICByZXByZXNlbnRlZE9i
amVjdCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5TY3JpcHQgfHwgcmVwcmVzZW50ZWRPYmplY3Qg
aW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuQ29udGVudEZsb3cgfHwKLSAgICAgICAgICAgIHJlcHJl
c2VudGVkT2JqZWN0IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2VPYmplY3QgfHwg
cmVwcmVzZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuQ29va2llU3RvcmFnZU9i
amVjdCB8fAotICAgICAgICAgICAgcmVwcmVzZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBXZWJJbnNw
ZWN0b3IuRGF0YWJhc2VUYWJsZU9iamVjdCB8fCByZXByZXNlbnRlZE9iamVjdCBpbnN0YW5jZW9m
IFdlYkluc3BlY3Rvci5EYXRhYmFzZU9iamVjdCB8fAotICAgICAgICAgICAgcmVwcmVzZW50ZWRP
YmplY3QgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuQXBwbGljYXRpb25DYWNoZUZyYW1lIHx8IHJl
cHJlc2VudGVkT2JqZWN0IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkluZGV4ZWREYXRhYmFzZU9i
amVjdFN0b3JlIHx8Ci0gICAgICAgICAgICByZXByZXNlbnRlZE9iamVjdCBpbnN0YW5jZW9mIFdl
Ykluc3BlY3Rvci5JbmRleGVkRGF0YWJhc2VPYmplY3RTdG9yZUluZGV4OworICAgICAgICByZXR1
cm4gcmVwcmVzZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuRnJhbWUgfHwgcmVw
cmVzZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuUmVzb3VyY2UgfHwgcmVwcmVz
ZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuU2NyaXB0OwogICAgIH0KIH07CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>251977</attachid>
            <date>2015-04-29 12:36:00 -0700</date>
            <delta_ts>2015-04-29 15:03:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-144404-20150429123450.patch</filename>
            <type>text/plain</type>
            <size>51315</size>
            <attacher name="Timothy Hatcher">timothy</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgzNTIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCBm
MjgzZDZlZGEzOGI5MGUyNGQxNmM5ZTUyYzU0ZGNjZTlhMGJhZTliLi5jYWQ5NDhlMmFkNTYzMjlm
YmM4OGIyOGYzOTA5ZDc5NTczMTk2ZTIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEs
NSArMSw3OCBAQAogMjAxNS0wNC0yOSAgVGltb3RoeSBIYXRjaGVyICA8dGltb3RoeUBhcHBsZS5j
b20+CiAKKyAgICAgICAgV2ViIEluc3BlY3RvcjogU3BsaXQgU3RvcmFnZSBmcm9tIFJlc291cmNl
cyB0YWIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0
NDQwNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
TG9jYWxpemF0aW9ucy9lbi5scHJvai9sb2NhbGl6ZWRTdHJpbmdzLmpzOgorICAgICAgICAqIFVz
ZXJJbnRlcmZhY2UvQmFzZS9NYWluLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLmxvYWRlZCk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuaXNUYWJUeXBlQWxsb3dlZCk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuX3RhYkNvbnRlbnRWaWV3Rm9yVHlwZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
X3VwZGF0ZU5ld1RhYkJ1dHRvblN0YXRlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5zaG93U3Rv
cmFnZVRhYik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuX3N0b3JhZ2VXYXNJbnNwZWN0ZWQpOgor
ICAgICAgICAqIFVzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvQXBwbGljYXRpb25DYWNoZU1hbmFn
ZXIuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQXBwbGljYXRpb25DYWNoZU1hbmFnZXIucHJv
dG90eXBlLmluaXRpYWxpemUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkFwcGxpY2F0aW9uQ2Fj
aGVNYW5hZ2VyLnByb3RvdHlwZS5nZXQgYXBwbGljYXRpb25DYWNoZU9iamVjdHMpOgorICAgICAg
ICAqIFVzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvU3RvcmFnZU1hbmFnZXIuanM6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuU3RvcmFnZU1hbmFnZXIucHJvdG90eXBlLmdldCBkb21TdG9yYWdlT2Jq
ZWN0cyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU3RvcmFnZU1hbmFnZXIucHJvdG90eXBlLmdl
dCBkYXRhYmFzZXMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlN0b3JhZ2VNYW5hZ2VyLnByb3Rv
dHlwZS5nZXQgaW5kZXhlZERhdGFiYXNlcyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU3RvcmFn
ZU1hbmFnZXIucHJvdG90eXBlLmdldCBjb29raWVTdG9yYWdlT2JqZWN0cyk6CisgICAgICAgICog
VXNlckludGVyZmFjZS9JbWFnZXMvU3RvcmFnZS5zdmc6IEFkZGVkLgorICAgICAgICAqIFVzZXJJ
bnRlcmZhY2UvTWFpbi5odG1sOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvRGF0YWJh
c2VUYWJsZUNvbnRlbnRWaWV3LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRhdGFiYXNlVGFi
bGVDb250ZW50Vmlldy5wcm90b3R5cGUuX3F1ZXJ5RmluaXNoZWQpOiBDbGVhciBfZGF0YUdyaWQs
CisgICAgICAgIHNpbmNlIGl0IG1pZ2h0IGhhdmUgYmVlbiBhbGxvY2F0ZWQgYnV0IHN0aWxsIGJl
IGVtcHR5LiBUaGlzIGF2b2lkcyBhbiBleGNlcHRpb24gaW4KKyAgICAgICAgdXBkYXRlTGF5b3V0
IG5leHQgdGltZSBsYXlvdXQgaXMgdXBkYXRlZC4KKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1Zp
ZXdzL05ld1RhYkNvbnRlbnRWaWV3LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk5ld1RhYkNv
bnRlbnRWaWV3KToKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL1Jlc291cmNlU2lkZWJh
clBhbmVsLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNlU2lkZWJhclBhbmVsKToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5SZXNvdXJjZVNpZGViYXJQYW5lbC5wcm90b3R5cGUuX3Ry
ZWVFbGVtZW50U2VsZWN0ZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNlU2lkZWJh
clBhbmVsLnByb3RvdHlwZS5fZG9tU3RvcmFnZU9iamVjdFdhc0FkZGVkKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5SZXNvdXJjZVNpZGViYXJQYW5lbC5wcm90b3R5cGUuX2RvbVN0
b3JhZ2VPYmplY3RXYXNJbnNwZWN0ZWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViSW5zcGVjdG9y
LlJlc291cmNlU2lkZWJhclBhbmVsLnByb3RvdHlwZS5fZGF0YWJhc2VXYXNBZGRlZCk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVzb3VyY2VTaWRlYmFyUGFuZWwucHJvdG90eXBl
Ll9kYXRhYmFzZVdhc0luc3BlY3RlZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJJbnNwZWN0b3Iu
UmVzb3VyY2VTaWRlYmFyUGFuZWwucHJvdG90eXBlLl9pbmRleGVkRGF0YWJhc2VXYXNBZGRlZCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVzb3VyY2VTaWRlYmFyUGFuZWwucHJv
dG90eXBlLl9jb29raWVTdG9yYWdlT2JqZWN0V2FzQWRkZWQpOiBEZWxldGVkLgorICAgICAgICAo
V2ViSW5zcGVjdG9yLlJlc291cmNlU2lkZWJhclBhbmVsLnByb3RvdHlwZS5fZnJhbWVNYW5pZmVz
dEFkZGVkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5SZXNvdXJjZVNpZGViYXJQ
YW5lbC5wcm90b3R5cGUuX2ZyYW1lTWFuaWZlc3RSZW1vdmVkKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkluc3BlY3Rvci5SZXNvdXJjZVNpZGViYXJQYW5lbC5wcm90b3R5cGUuX2FkZFN0b3JhZ2VD
aGlsZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVzb3VyY2VTaWRlYmFyUGFu
ZWwucHJvdG90eXBlLl9zdG9yYWdlQ2xlYXJlZCk6IERlbGV0ZWQuCisgICAgICAgICogVXNlcklu
dGVyZmFjZS9WaWV3cy9SZXNvdXJjZXNUYWJDb250ZW50Vmlldy5qczoKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5SZXNvdXJjZXNUYWJDb250ZW50Vmlldyk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
UmVzb3VyY2VzVGFiQ29udGVudFZpZXcucHJvdG90eXBlLmNhblNob3dSZXByZXNlbnRlZE9iamVj
dCk6CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9TdG9yYWdlU2lkZWJhclBhbmVsLmpz
OiBBZGRlZC4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5TdG9yYWdlU2lkZWJhclBhbmVsKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5TdG9yYWdlU2lkZWJhclBhbmVsLnByb3RvdHlwZS5zaG93RGVm
YXVsdENvbnRlbnRWaWV3KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TdG9yYWdlU2lkZWJhclBh
bmVsLnByb3RvdHlwZS5jbG9zZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlN0b3JhZ2VTaWRl
YmFyUGFuZWwucHJvdG90eXBlLl90cmVlRWxlbWVudFNlbGVjdGVkKToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5TdG9yYWdlU2lkZWJhclBhbmVsLnByb3RvdHlwZS5fZG9tU3RvcmFnZU9iamVjdFdh
c0FkZGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TdG9yYWdlU2lkZWJhclBhbmVsLnByb3Rv
dHlwZS5fYWRkRE9NU3RvcmFnZU9iamVjdCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU3RvcmFn
ZVNpZGViYXJQYW5lbC5wcm90b3R5cGUuX2RvbVN0b3JhZ2VPYmplY3RXYXNJbnNwZWN0ZWQpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLlN0b3JhZ2VTaWRlYmFyUGFuZWwucHJvdG90eXBlLl9kYXRh
YmFzZVdhc0FkZGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TdG9yYWdlU2lkZWJhclBhbmVs
LnByb3RvdHlwZS5fYWRkRGF0YWJhc2UpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlN0b3JhZ2VT
aWRlYmFyUGFuZWwucHJvdG90eXBlLl9kYXRhYmFzZVdhc0luc3BlY3RlZCk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuU3RvcmFnZVNpZGViYXJQYW5lbC5wcm90b3R5cGUuX2luZGV4ZWREYXRhYmFz
ZVdhc0FkZGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TdG9yYWdlU2lkZWJhclBhbmVsLnBy
b3RvdHlwZS5fYWRkSW5kZXhlZERhdGFiYXNlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TdG9y
YWdlU2lkZWJhclBhbmVsLnByb3RvdHlwZS5fY29va2llU3RvcmFnZU9iamVjdFdhc0FkZGVkKToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5TdG9yYWdlU2lkZWJhclBhbmVsLnByb3RvdHlwZS5fYWRk
Q29va2llU3RvcmFnZU9iamVjdCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU3RvcmFnZVNpZGVi
YXJQYW5lbC5wcm90b3R5cGUuX2ZyYW1lTWFuaWZlc3RBZGRlZCk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuU3RvcmFnZVNpZGViYXJQYW5lbC5wcm90b3R5cGUuX2FkZEZyYW1lTWFuaWZlc3QpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLlN0b3JhZ2VTaWRlYmFyUGFuZWwucHJvdG90eXBlLl9mcmFt
ZU1hbmlmZXN0UmVtb3ZlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU3RvcmFnZVNpZGViYXJQ
YW5lbC5wcm90b3R5cGUuX2NvbXBhcmVUcmVlRWxlbWVudHMpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLlN0b3JhZ2VTaWRlYmFyUGFuZWwucHJvdG90eXBlLl9hZGRTdG9yYWdlQ2hpbGQpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLlN0b3JhZ2VTaWRlYmFyUGFuZWwucHJvdG90eXBlLl9zdG9yYWdl
Q2xlYXJlZCk6CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9TdG9yYWdlVGFiQ29udGVu
dFZpZXcuanM6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1ZpZXdzL1Jlc291cmNlc1RhYkNvbnRlbnRWaWV3LmpzLgorICAgICAgICAoV2ViSW5zcGVjdG9y
LlN0b3JhZ2VUYWJDb250ZW50Vmlldyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU3RvcmFnZVRh
YkNvbnRlbnRWaWV3LnByb3RvdHlwZS5nZXQgdHlwZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
U3RvcmFnZVRhYkNvbnRlbnRWaWV3LnByb3RvdHlwZS5jYW5TaG93UmVwcmVzZW50ZWRPYmplY3Qp
OgorCisyMDE1LTA0LTI5ICBUaW1vdGh5IEhhdGNoZXIgIDx0aW1vdGh5QGFwcGxlLmNvbT4KKwog
ICAgICAgICBXZWIgSW5zcGVjdG9yOiBSZW1vdmUgTGVnYWN5IGltYWdlcyBhbmQgc3R5bGVzCiAg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDQzOTAKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL0xvY2FsaXphdGlvbnMvZW4ubHByb2ov
bG9jYWxpemVkU3RyaW5ncy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Mb2NhbGl6YXRpb25z
L2VuLmxwcm9qL2xvY2FsaXplZFN0cmluZ3MuanMKaW5kZXggYzg1MzUzYjQzYjVlYzExMjFiYzFh
NTViMmY5ZjQ2YTRmZGJlM2Y1ZC4uZTM1ODBjMjcwZmY4MWY5OTEwZWIwM2Q2NTlmMGIyNTM3ZTY2
OGU0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL0xvY2FsaXphdGlvbnMvZW4u
bHByb2ovbG9jYWxpemVkU3RyaW5ncy5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvTG9j
YWxpemF0aW9ucy9lbi5scHJvai9sb2NhbGl6ZWRTdHJpbmdzLmpzCkBAIC0yMjQsNiArMjI0LDcg
QEAgbG9jYWxpemVkU3RyaW5nc1siRmlsdGVyIEJyZWFrcG9pbnQgTGlzdCJdID0gIkZpbHRlciBC
cmVha3BvaW50IExpc3QiOwogbG9jYWxpemVkU3RyaW5nc1siRmlsdGVyIENvbnNvbGUgTG9nIl0g
PSAiRmlsdGVyIENvbnNvbGUgTG9nIjsKIGxvY2FsaXplZFN0cmluZ3NbIkZpbHRlciBSZXNvdXJj
ZSBMaXN0Il0gPSAiRmlsdGVyIFJlc291cmNlIExpc3QiOwogbG9jYWxpemVkU3RyaW5nc1siRmls
dGVyIFNlYXJjaCBSZXN1bHRzIl0gPSAiRmlsdGVyIFNlYXJjaCBSZXN1bHRzIjsKK2xvY2FsaXpl
ZFN0cmluZ3NbIkZpbHRlciBTdG9yYWdlIExpc3QiXSA9ICJGaWx0ZXIgU3RvcmFnZSBMaXN0IjsK
IGxvY2FsaXplZFN0cmluZ3NbIkZsb3dzIl0gPSAiRmxvd3MiOwogbG9jYWxpemVkU3RyaW5nc1si
Rm9jdXNlZCJdID0gIkZvY3VzZWQiOwogbG9jYWxpemVkU3RyaW5nc1siRm9udCJdID0gIkZvbnQi
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQmFzZS9N
YWluLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQmFzZS9NYWluLmpz
CmluZGV4IDA3ZjJjMGI2Njg0ZGYzZDNiMWZjZjMwNGM0M2MyMTk5OGU2YjQ1ZWMuLjc3MTZjODNl
MGMxM2YwMjZiYzA1ZWM5ZTQyMDMwNDJhYmU0ZTVmOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2UvTWFpbi5qcworKysgYi9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9CYXNlL01haW4uanMKQEAgLTE0MCw3ICsxNDAsNyBAQCBX
ZWJJbnNwZWN0b3IubG9hZGVkID0gZnVuY3Rpb24oKQogICAgIHRoaXMuX3Nob3dpbmdTcGxpdENv
bnNvbGVTZXR0aW5nID0gbmV3IFdlYkluc3BlY3Rvci5TZXR0aW5nKCJzaG93aW5nLXNwbGl0LWNv
bnNvbGUiLCBmYWxzZSk7CiAgICAgdGhpcy5fc3BsaXRDb25zb2xlSGVpZ2h0U2V0dGluZyA9IG5l
dyBXZWJJbnNwZWN0b3IuU2V0dGluZygic3BsaXQtY29uc29sZS1oZWlnaHQiLCAxNTApOwogCi0g
ICAgdGhpcy5fb3BlblRhYnNTZXR0aW5nID0gbmV3IFdlYkluc3BlY3Rvci5TZXR0aW5nKCJvcGVu
LXRhYnMiLCBbImVsZW1lbnRzIiwgInJlc291cmNlcyIsICJ0aW1lbGluZSIsICJkZWJ1Z2dlciIs
ICJjb25zb2xlIl0pOworICAgIHRoaXMuX29wZW5UYWJzU2V0dGluZyA9IG5ldyBXZWJJbnNwZWN0
b3IuU2V0dGluZygib3Blbi10YWJzIiwgWyJlbGVtZW50cyIsICJyZXNvdXJjZXMiLCAidGltZWxp
bmUiLCAiZGVidWdnZXIiLCAic3RvcmFnZSIsICJjb25zb2xlIl0pOwogICAgIHRoaXMuX3NlbGVj
dGVkVGFiSW5kZXhTZXR0aW5nID0gbmV3IFdlYkluc3BlY3Rvci5TZXR0aW5nKCJzZWxlY3RlZC10
YWItaW5kZXgiLCAwKTsKIAogICAgIHRoaXMuc2hvd1NoYWRvd0RPTVNldHRpbmcgPSBuZXcgV2Vi
SW5zcGVjdG9yLlNldHRpbmcoInNob3ctc2hhZG93LWRvbSIsIGZhbHNlKTsKQEAgLTM3Niw2ICsz
NzYsOCBAQCBXZWJJbnNwZWN0b3IuaXNUYWJUeXBlQWxsb3dlZCA9IGZ1bmN0aW9uKHRhYlR5cGUp
CiAgICAgc3dpdGNoICh0YWJUeXBlKSB7CiAgICAgY2FzZSBXZWJJbnNwZWN0b3IuRWxlbWVudHNU
YWJDb250ZW50Vmlldy5UeXBlOgogICAgICAgICByZXR1cm4gISF3aW5kb3cuRE9NQWdlbnQ7Cisg
ICAgY2FzZSBXZWJJbnNwZWN0b3IuU3RvcmFnZVRhYkNvbnRlbnRWaWV3LlR5cGU6CisgICAgICAg
IHJldHVybiAhIXdpbmRvdy5ET01TdG9yYWdlQWdlbnQgfHwgISF3aW5kb3cuRGF0YWJhc2VBZ2Vu
dCB8fCAhIXdpbmRvdy5JbmRleGVkREJBZ2VudDsKICAgICBjYXNlIFdlYkluc3BlY3Rvci5UaW1l
bGluZVRhYkNvbnRlbnRWaWV3LlR5cGU6CiAgICAgICAgIHJldHVybiAhIXdpbmRvdy5UaW1lbGlu
ZUFnZW50OwogICAgIH0KQEAgLTM4NiwyMCArMzg4LDIyIEBAIFdlYkluc3BlY3Rvci5pc1RhYlR5
cGVBbGxvd2VkID0gZnVuY3Rpb24odGFiVHlwZSkKIFdlYkluc3BlY3Rvci5fdGFiQ29udGVudFZp
ZXdGb3JUeXBlID0gZnVuY3Rpb24odGFiVHlwZSkKIHsKICAgICBzd2l0Y2ggKHRhYlR5cGUpIHsK
KyAgICBjYXNlIFdlYkluc3BlY3Rvci5Db25zb2xlVGFiQ29udGVudFZpZXcuVHlwZToKKyAgICAg
ICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuQ29uc29sZVRhYkNvbnRlbnRWaWV3OworICAgIGNh
c2UgV2ViSW5zcGVjdG9yLkRlYnVnZ2VyVGFiQ29udGVudFZpZXcuVHlwZToKKyAgICAgICAgcmV0
dXJuIG5ldyBXZWJJbnNwZWN0b3IuRGVidWdnZXJUYWJDb250ZW50VmlldzsKICAgICBjYXNlIFdl
Ykluc3BlY3Rvci5FbGVtZW50c1RhYkNvbnRlbnRWaWV3LlR5cGU6CiAgICAgICAgIHJldHVybiBu
ZXcgV2ViSW5zcGVjdG9yLkVsZW1lbnRzVGFiQ29udGVudFZpZXc7CisgICAgY2FzZSBXZWJJbnNw
ZWN0b3IuTmV3VGFiQ29udGVudFZpZXcuVHlwZToKKyAgICAgICAgcmV0dXJuIG5ldyBXZWJJbnNw
ZWN0b3IuTmV3VGFiQ29udGVudFZpZXc7CiAgICAgY2FzZSBXZWJJbnNwZWN0b3IuUmVzb3VyY2Vz
VGFiQ29udGVudFZpZXcuVHlwZToKICAgICAgICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuUmVz
b3VyY2VzVGFiQ29udGVudFZpZXc7Ci0gICAgY2FzZSBXZWJJbnNwZWN0b3IuVGltZWxpbmVUYWJD
b250ZW50Vmlldy5UeXBlOgotICAgICAgICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5UaW1lbGlu
ZVRhYkNvbnRlbnRWaWV3OwotICAgIGNhc2UgV2ViSW5zcGVjdG9yLkRlYnVnZ2VyVGFiQ29udGVu
dFZpZXcuVHlwZToKLSAgICAgICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuRGVidWdnZXJUYWJD
b250ZW50VmlldzsKLSAgICBjYXNlIFdlYkluc3BlY3Rvci5Db25zb2xlVGFiQ29udGVudFZpZXcu
VHlwZToKLSAgICAgICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuQ29uc29sZVRhYkNvbnRlbnRW
aWV3OwogICAgIGNhc2UgV2ViSW5zcGVjdG9yLlNlYXJjaFRhYkNvbnRlbnRWaWV3LlR5cGU6CiAg
ICAgICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLlNlYXJjaFRhYkNvbnRlbnRWaWV3OwotICAg
IGNhc2UgV2ViSW5zcGVjdG9yLk5ld1RhYlRhYkNvbnRlbnRWaWV3LlR5cGU6Ci0gICAgICAgIHJl
dHVybiBuZXcgV2ViSW5zcGVjdG9yLk5ld1RhYlRhYkNvbnRlbnRWaWV3OworICAgIGNhc2UgV2Vi
SW5zcGVjdG9yLlN0b3JhZ2VUYWJDb250ZW50Vmlldy5UeXBlOgorICAgICAgICByZXR1cm4gbmV3
IFdlYkluc3BlY3Rvci5TdG9yYWdlVGFiQ29udGVudFZpZXc7CisgICAgY2FzZSBXZWJJbnNwZWN0
b3IuVGltZWxpbmVUYWJDb250ZW50Vmlldy5UeXBlOgorICAgICAgICByZXR1cm4gbmV3IFdlYklu
c3BlY3Rvci5UaW1lbGluZVRhYkNvbnRlbnRWaWV3OwogICAgIGRlZmF1bHQ6CiAgICAgICAgIGNv
bnNvbGUuZXJyb3IoIlVua25vd24gdGFiIHR5cGUiLCB0YWJUeXBlKTsKICAgICB9CkBAIC00MjYs
NyArNDMwLDggQEAgV2ViSW5zcGVjdG9yLl9yZW1lbWJlck9wZW5UYWJzID0gZnVuY3Rpb24oKQog
CiBXZWJJbnNwZWN0b3IuX3VwZGF0ZU5ld1RhYkJ1dHRvblN0YXRlID0gZnVuY3Rpb24oZXZlbnQp
CiB7Ci0gICAgdmFyIG5ld1RhYkFsbG93ZWQgPSB0aGlzLmlzTmV3VGFiV2l0aFR5cGVBbGxvd2Vk
KFdlYkluc3BlY3Rvci5Db25zb2xlVGFiQ29udGVudFZpZXcuVHlwZSkgfHwgdGhpcy5pc05ld1Rh
YldpdGhUeXBlQWxsb3dlZChXZWJJbnNwZWN0b3IuRWxlbWVudHNUYWJDb250ZW50Vmlldy5UeXBl
KTsKKyAgICB2YXIgbmV3VGFiQWxsb3dlZCA9IHRoaXMuaXNOZXdUYWJXaXRoVHlwZUFsbG93ZWQo
V2ViSW5zcGVjdG9yLkNvbnNvbGVUYWJDb250ZW50Vmlldy5UeXBlKSB8fCB0aGlzLmlzTmV3VGFi
V2l0aFR5cGVBbGxvd2VkKFdlYkluc3BlY3Rvci5FbGVtZW50c1RhYkNvbnRlbnRWaWV3LlR5cGUp
CisgICAgICAgICB8fCB0aGlzLmlzTmV3VGFiV2l0aFR5cGVBbGxvd2VkKFdlYkluc3BlY3Rvci5T
dG9yYWdlVGFiQ29udGVudFZpZXcuVHlwZSk7CiAgICAgdGhpcy50YWJCYXIubmV3VGFiSXRlbS5k
aXNhYmxlZCA9ICFuZXdUYWJBbGxvd2VkOwogfTsKIApAQCAtNzUzLDYgKzc1OCwxNCBAQCBXZWJJ
bnNwZWN0b3Iuc2hvd1Jlc291cmNlc1RhYiA9IGZ1bmN0aW9uKCkKICAgICB0aGlzLnRhYkJyb3dz
ZXIuc2hvd1RhYkZvckNvbnRlbnRWaWV3KHRhYkNvbnRlbnRWaWV3KTsKIH07CiAKK1dlYkluc3Bl
Y3Rvci5zaG93U3RvcmFnZVRhYiA9IGZ1bmN0aW9uKCkKK3sKKyAgICB2YXIgdGFiQ29udGVudFZp
ZXcgPSB0aGlzLnRhYkJyb3dzZXIuYmVzdFRhYkNvbnRlbnRWaWV3Rm9yQ2xhc3MoV2ViSW5zcGVj
dG9yLlN0b3JhZ2VUYWJDb250ZW50Vmlldyk7CisgICAgaWYgKCF0YWJDb250ZW50VmlldykKKyAg
ICAgICAgdGFiQ29udGVudFZpZXcgPSBuZXcgV2ViSW5zcGVjdG9yLlN0b3JhZ2VUYWJDb250ZW50
VmlldzsKKyAgICB0aGlzLnRhYkJyb3dzZXIuc2hvd1RhYkZvckNvbnRlbnRWaWV3KHRhYkNvbnRl
bnRWaWV3KTsKK307CisKIFdlYkluc3BlY3Rvci5zaG93VGltZWxpbmVUYWIgPSBmdW5jdGlvbigp
CiB7CiAgICAgdmFyIHRhYkNvbnRlbnRWaWV3ID0gdGhpcy50YWJCcm93c2VyLmJlc3RUYWJDb250
ZW50Vmlld0ZvckNsYXNzKFdlYkluc3BlY3Rvci5UaW1lbGluZVRhYkNvbnRlbnRWaWV3KTsKQEAg
LTE0NDAsOCArMTQ1Myw3IEBAIFdlYkluc3BlY3Rvci5fbW92ZVdpbmRvd01vdXNlRG93biA9IGZ1
bmN0aW9uKGV2ZW50KQogCiBXZWJJbnNwZWN0b3IuX3N0b3JhZ2VXYXNJbnNwZWN0ZWQgPSBmdW5j
dGlvbihldmVudCkKIHsKLSAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgc2hvdyBhIFN0b3JhZ2Ug
dGFiIHdoZW4gd2UgaGF2ZSBvbmUuCi0gICAgdGhpcy5zaG93UmVzb3VyY2VzVGFiKCk7CisgICAg
dGhpcy5zaG93U3RvcmFnZVRhYigpOwogfTsKIAogV2ViSW5zcGVjdG9yLl9kb21Ob2RlV2FzSW5z
cGVjdGVkID0gZnVuY3Rpb24oZXZlbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9BcHBsaWNhdGlvbkNhY2hlTWFuYWdlci5qcyBi
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0FwcGxpY2F0
aW9uQ2FjaGVNYW5hZ2VyLmpzCmluZGV4IDc5ODY2YTJiOWI4M2RlNGU5OGE5MTI4ODY3ZWZiYzk2
NjVjMzU3ZGIuLjYxYTU1YTlmNzgxYjY3ZmM5ZTI4YzU5ZDk0OTk5OWI1ZTc5YWIwODcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0Fw
cGxpY2F0aW9uQ2FjaGVNYW5hZ2VyLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL0NvbnRyb2xsZXJzL0FwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyLmpzCkBAIC00NCwx
MiArNDQsMjAgQEAgV2ViSW5zcGVjdG9yLkFwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyID0gY2xhc3Mg
QXBwbGljYXRpb25DYWNoZU1hbmFnZXIgZXh0ZW5kcyBXZWIKIAogICAgIGluaXRpYWxpemUoKQog
ICAgIHsKLSAgICAgICAgdGhpcy5fYXBwbGljYXRpb25DYWNoZU9iamVjdHMgPSBbXTsKKyAgICAg
ICAgdGhpcy5fYXBwbGljYXRpb25DYWNoZU9iamVjdHMgPSB7fTsKIAogICAgICAgICBpZiAod2lu
ZG93LkFwcGxpY2F0aW9uQ2FjaGVBZ2VudCkKICAgICAgICAgICAgIEFwcGxpY2F0aW9uQ2FjaGVB
Z2VudC5nZXRGcmFtZXNXaXRoTWFuaWZlc3RzKHRoaXMuX2ZyYW1lc1dpdGhNYW5pZmVzdHNMb2Fk
ZWQuYmluZCh0aGlzKSk7CiAgICAgfQogCisgICAgZ2V0IGFwcGxpY2F0aW9uQ2FjaGVPYmplY3Rz
KCkKKyAgICB7CisgICAgICAgIHZhciBhcHBsaWNhdGlvbkNhY2hlT2JqZWN0cyA9IFtdOworICAg
ICAgICBmb3IgKHZhciBpZCBpbiB0aGlzLl9hcHBsaWNhdGlvbkNhY2hlT2JqZWN0cykKKyAgICAg
ICAgICAgIGFwcGxpY2F0aW9uQ2FjaGVPYmplY3RzLnB1c2godGhpcy5fYXBwbGljYXRpb25DYWNo
ZU9iamVjdHNbaWRdKTsKKyAgICAgICAgcmV0dXJuIGFwcGxpY2F0aW9uQ2FjaGVPYmplY3RzOwor
ICAgIH0KKwogICAgIG5ldHdvcmtTdGF0ZVVwZGF0ZWQoaXNOb3dPbmxpbmUpCiAgICAgewogICAg
ICAgICB0aGlzLl9vbmxpbmUgPSBpc05vd09ubGluZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL1N0b3JhZ2VNYW5hZ2VyLmpzIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvU3RvcmFnZU1h
bmFnZXIuanMKaW5kZXggZWJhNjg5YmY2NGE2MTczMWMzZGFiNTA3ODZiMzQ4MDUwOWVkMjZmNC4u
NjU1YTBhMzAxYTU3MmIyZDk4MTQ5ODA4NGFlZDQ2OGZjMzhmZDc1MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvU3RvcmFnZU1hbmFn
ZXIuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxl
cnMvU3RvcmFnZU1hbmFnZXIuanMKQEAgLTYwLDYgKzYwLDI5IEBAIFdlYkluc3BlY3Rvci5TdG9y
YWdlTWFuYWdlciA9IGNsYXNzIFN0b3JhZ2VNYW5hZ2VyIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9i
amVjdAogICAgICAgICB0aGlzLl9jb29raWVTdG9yYWdlT2JqZWN0cyA9IHt9OwogICAgIH0KIAor
ICAgIGdldCBkb21TdG9yYWdlT2JqZWN0cygpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5f
ZG9tU3RvcmFnZU9iamVjdHM7CisgICAgfQorCisgICAgZ2V0IGRhdGFiYXNlcygpCisgICAgewor
ICAgICAgICByZXR1cm4gdGhpcy5fZGF0YWJhc2VPYmplY3RzOworICAgIH0KKworICAgIGdldCBp
bmRleGVkRGF0YWJhc2VzKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9pbmRleGVkRGF0
YWJhc2VzOworICAgIH0KKworICAgIGdldCBjb29raWVTdG9yYWdlT2JqZWN0cygpCisgICAgewor
ICAgICAgICB2YXIgY29va2llU3RvcmFnZU9iamVjdHMgPSBbXTsKKyAgICAgICAgZm9yICh2YXIg
aG9zdCBpbiB0aGlzLl9jb29raWVTdG9yYWdlT2JqZWN0cykKKyAgICAgICAgICAgIGNvb2tpZVN0
b3JhZ2VPYmplY3RzLnB1c2godGhpcy5fY29va2llU3RvcmFnZU9iamVjdHNbaG9zdF0pOworICAg
ICAgICByZXR1cm4gY29va2llU3RvcmFnZU9iamVjdHM7CisgICAgfQorCiAgICAgZG9tU3RvcmFn
ZVdhc0FkZGVkKGlkLCBob3N0LCBpc0xvY2FsU3RvcmFnZSkKICAgICB7CiAgICAgICAgIHZhciBk
b21TdG9yYWdlID0gbmV3IFdlYkluc3BlY3Rvci5ET01TdG9yYWdlT2JqZWN0KGlkLCBob3N0LCBp
c0xvY2FsU3RvcmFnZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9JbWFnZXMvU3RvcmFnZS5zdmcgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9JbWFnZXMvU3RvcmFnZS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2NlNDMxODk4NWVkZTgyNTY2
YTYxZWQ2YWEwZmY2YjExMzEyYjY4NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0ltYWdlcy9TdG9yYWdlLnN2ZwpAQCAtMCwwICsxLDcgQEAK
Kzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8IS0tIENvcHlyaWdodCDC
qSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gLS0+Cis8c3ZnIHZpZXdCb3g9
IjAgMCAxNiAxNiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciPgorICAgIDxwYXRoIGQ9Ik0gMTMuNDQ3NTY0NSA2LjU3MDEwMzggQyAxNC4xMTMxMTAxIDYu
OTU5MTU5OTQgMTQuNSA3LjQ0MjQzNTYyIDE0LjUgOCBDIDE0LjUgOS41Mjk1MjAxNSAxMS41ODg1
NjA0IDEwLjUgOCAxMC41IEMgNC40MTE0Mzk1NiAxMC41IDEuNSA5LjUyOTUyMDE1IDEuNSA4IEMg
MS41IDcuNDQyNDM1NjIgMS44ODY4ODk5MiA2Ljk1OTE1OTk0IDIuNTUyNDM1NTQgNi41NzAxMDM4
IEMgMi45NTk4NDU2NiA2Ljc1MDE3NTM0IDMuNDM1ODMwNTcgNi45MDk2Mzc2MyAzLjk2NjIwOTgy
IDcuMDQzNDI2MjEgQyAzLjk0OTE5OTM5IDcuMDQ4OTU2MTYgMy45MzIyODY3OCA3LjA1NDUyMzUy
IDMuOTE1NDczMTMgNy4wNjAxMjgwNyBDIDIuOTgzMDMwOTcgNy4zNzA5NDIxMiAyLjUgNy43NTE2
MTMzIDIuNSA4IEMgMi41IDguMjQ4Mzg2NyAyLjk4MzAzMDk3IDguNjI5MDU3ODggMy45MTU0NzMx
MyA4LjkzOTg3MTkzIEMgNC45Nzg3MzM2MyA5LjI5NDI5MjEgNi40Mzc3NzgwMiA5LjUgOCA5LjUg
QyA5LjU2MjIyMTk4IDkuNSAxMS4wMjEyNjY0IDkuMjk0MjkyMSAxMi4wODQ1MjY5IDguOTM5ODcx
OTMgQyAxMy4wMTY5NjkgOC42MjkwNTc4OCAxMy41IDguMjQ4Mzg2NyAxMy41IDggQyAxMy41IDcu
NzUxNjEzMyAxMy4wMTY5NjkgNy4zNzA5NDIxMiAxMi4wODQ1MjY5IDcuMDYwMTI4MDcgQyAxMi4w
Njc3MTMyIDcuMDU0NTIzNTIgMTIuMDUwODAwNiA3LjA0ODk1NjE2IDEyLjAzMzc5MDIgNy4wNDM0
MjYyMSBDIDEyLjU2NDE2OTQgNi45MDk2Mzc2MyAxMy4wNDAxNTQzIDYuNzUwMTc1MzQgMTMuNDQ3
NTY0NSA2LjU3MDEwMzggWiIgY2xhc3M9ImZpbGxlZCIgZmlsbD0iYmxhY2siLz4KKyAgICA8cGF0
aCBkPSJNIDEzLjQ0NzU2NDUgMTAuNTcwMTAzOCBDIDE0LjExMzExMDEgMTAuOTU5MTU5OSAxNC41
IDExLjQ0MjQzNTYgMTQuNSAxMiBDIDE0LjUgMTMuNTI5NTIwMSAxMS41ODg1NjA0IDE0LjUgOCAx
NC41IEMgNC40MTE0Mzk1NiAxNC41IDEuNSAxMy41Mjk1MjAxIDEuNSAxMiBDIDEuNSAxMS40NDI0
MzU2IDEuODg2ODg5OTIgMTAuOTU5MTU5OSAyLjU1MjQzNTU0IDEwLjU3MDEwMzggQyAyLjk1OTg0
NTY2IDEwLjc1MDE3NTMgMy40MzU4MzA1NyAxMC45MDk2Mzc2IDMuOTY2MjA5ODIgMTEuMDQzNDI2
MiBDIDMuOTQ5MTk5MzkgMTEuMDQ4OTU2MiAzLjkzMjI4Njc4IDExLjA1NDUyMzUgMy45MTU0NzMx
MyAxMS4wNjAxMjgxIEMgMi45ODMwMzA5NyAxMS4zNzA5NDIxIDIuNSAxMS43NTE2MTMzIDIuNSAx
MiBDIDIuNSAxMi4yNDgzODY3IDIuOTgzMDMwOTcgMTIuNjI5MDU3OSAzLjkxNTQ3MzEzIDEyLjkz
OTg3MTkgQyA0Ljk3ODczMzYzIDEzLjI5NDI5MjEgNi40Mzc3NzgwMiAxMy41IDggMTMuNSBDIDku
NTYyMjIxOTggMTMuNSAxMS4wMjEyNjY0IDEzLjI5NDI5MjEgMTIuMDg0NTI2OSAxMi45Mzk4NzE5
IEMgMTMuMDE2OTY5IDEyLjYyOTA1NzkgMTMuNSAxMi4yNDgzODY3IDEzLjUgMTIgQyAxMy41IDEx
Ljc1MTYxMzMgMTMuMDE2OTY5IDExLjM3MDk0MjEgMTIuMDg0NTI2OSAxMS4wNjAxMjgxIEMgMTIu
MDY3NzEzMiAxMS4wNTQ1MjM1IDEyLjA1MDgwMDYgMTEuMDQ4OTU2MiAxMi4wMzM3OTAyIDExLjA0
MzQyNjIgQyAxMi41NjQxNjk0IDEwLjkwOTYzNzYgMTMuMDQwMTU0MyAxMC43NTAxNzUzIDEzLjQ0
NzU2NDUgMTAuNTcwMTAzOCBaIiBjbGFzcz0iZmlsbGVkIiBmaWxsPSJibGFjayIvPgorICAgIDxw
YXRoIGQ9Ik0gMTQuNSA0IEMgMTQuNSAyLjQ3MDQ3OTg1IDExLjU4ODU2MDQgMS41IDggMS41IEMg
NC40MTE0Mzk1NiAxLjUgMS41IDIuNDcwNDc5ODUgMS41IDQgQyAxLjUgNS41Mjk1MjAxNSA0LjQx
MTQzOTU2IDYuNSA4IDYuNSBDIDExLjU4ODU2MDQgNi41IDE0LjUgNS41Mjk1MjAxNSAxNC41IDQg
WiBNIDMuOTE1NDczMTMgNC45Mzk4NzE5MyBDIDIuOTgzMDMwOTcgNC42MjkwNTc4OCAyLjUgNC4y
NDgzODY3IDIuNSA0IEMgMi41IDMuNzUxNjEzMyAyLjk4MzAzMDk3IDMuMzcwOTQyMTIgMy45MTU0
NzMxMyAzLjA2MDEyODA3IEMgNC45Nzg3MzM2MyAyLjcwNTcwNzkgNi40Mzc3NzgwMiAyLjUgOCAy
LjUgQyA5LjU2MjIyMTk4IDIuNSAxMS4wMjEyNjY0IDIuNzA1NzA3OSAxMi4wODQ1MjY5IDMuMDYw
MTI4MDcgQyAxMy4wMTY5NjkgMy4zNzA5NDIxMiAxMy41IDMuNzUxNjEzMyAxMy41IDQgQyAxMy41
IDQuMjQ4Mzg2NyAxMy4wMTY5NjkgNC42MjkwNTc4OCAxMi4wODQ1MjY5IDQuOTM5ODcxOTMgQyAx
MS4wMjEyNjY0IDUuMjk0MjkyMSA5LjU2MjIyMTk4IDUuNSA4IDUuNSBDIDYuNDM3Nzc4MDIgNS41
IDQuOTc4NzMzNjMgNS4yOTQyOTIxIDMuOTE1NDczMTMgNC45Mzk4NzE5MyBaIiBjbGFzcz0iZmls
bGVkIiBmaWxsPSJibGFjayIvPgorPC9zdmc+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9NYWluLmh0bWwgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9NYWluLmh0bWwKaW5kZXggMzQ3NDY3NmEwYjI3OGU2ZmJhMzFkMjJjOGI5ZWFj
YjJmZTgyMjhhMS4uMjUwZDJkNGEwNmFmNTEwMDRkNjkxZThhODcwODRiODI4MGZiOTFhNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTWFpbi5odG1sCisr
KyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01haW4uaHRtbApAQCAtMzUz
LDYgKzM1Myw3IEBACiAgICAgPHNjcmlwdCBzcmM9IlZpZXdzL1Jlc291cmNlc1RhYkNvbnRlbnRW
aWV3LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iVmlld3MvU2VhcmNoVGFiQ29udGVu
dFZpZXcuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9TZXR0aW5nc1RhYkNv
bnRlbnRWaWV3LmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iVmlld3MvU3RvcmFnZVRh
YkNvbnRlbnRWaWV3LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iVmlld3MvVGltZWxp
bmVUYWJDb250ZW50Vmlldy5qcyI+PC9zY3JpcHQ+CiAKICAgICA8c2NyaXB0IHNyYz0iVmlld3Mv
RGV0YWlsc1NlY3Rpb24uanMiPjwvc2NyaXB0PgpAQCAtNTA0LDYgKzUwNSw3IEBACiAgICAgPHNj
cmlwdCBzcmM9IlZpZXdzL1NvdXJjZUNvZGVUaW1lbGluZVRpbWVsaW5lRGF0YUdyaWROb2RlLmpz
Ij48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iVmlld3MvU291cmNlQ29kZVRpbWVsaW5lVHJl
ZUVsZW1lbnQuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9Tb3VyY2VNYXBS
ZXNvdXJjZVRyZWVFbGVtZW50LmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iVmlld3Mv
U3RvcmFnZVNpZGViYXJQYW5lbC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IlZpZXdz
L1N5bnRheEhpZ2hsaWdodGluZ1N1cHBvcnQuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3Jj
PSJWaWV3cy9UZXh0Q29udGVudFZpZXcuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJW
aWV3cy9UZXh0UmVzb3VyY2VDb250ZW50Vmlldy5qcyI+PC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9EYXRhYmFzZVRhYmxlQ29u
dGVudFZpZXcuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9E
YXRhYmFzZVRhYmxlQ29udGVudFZpZXcuanMKaW5kZXggOTUwYjZkNzE2YjM5NTQyNDM4NmEwMTFj
MmU4ZmMyZWRmNzFkNzhmYi4uZmRhYWRkN2E4NWM3MGZjN2RjMDNmZGMwZGVlNjA4NWFiZWZiOGQy
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3Mv
RGF0YWJhc2VUYWJsZUNvbnRlbnRWaWV3LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL0RhdGFiYXNlVGFibGVDb250ZW50Vmlldy5qcwpAQCAtOTAsNiAr
OTAsOCBAQCBXZWJJbnNwZWN0b3IuRGF0YWJhc2VUYWJsZUNvbnRlbnRWaWV3LnByb3RvdHlwZSA9
IHsKIAogICAgICAgICB0aGlzLl9kYXRhR3JpZCA9IG5ldyBXZWJJbnNwZWN0b3IuRGF0YUdyaWQu
Y3JlYXRlU29ydGFibGVEYXRhR3JpZChjb2x1bW5OYW1lcywgdmFsdWVzKTsKICAgICAgICAgaWYg
KCF0aGlzLl9kYXRhR3JpZCB8fCAhdGhpcy5fZGF0YUdyaWQuZWxlbWVudCkgeworICAgICAgICAg
ICAgdGhpcy5fZGF0YUdyaWQgPSB1bmRlZmluZWQ7CisKICAgICAgICAgICAgIC8vIElmIHRoZSBE
YXRhR3JpZCBpcyBlbXB0eSwgdGhlbiB3ZSB3ZXJlIHJldHVybmVkIGEgdGFibGUgd2l0aCBubyBj
b2x1bW5zLiBUaGlzIGNhbiBoYXBwZW4gd2hlbiBhIHRhYmxlIGhhcwogICAgICAgICAgICAgLy8g
bm8gZGF0YSwgdGhlIFNFTEVDVCBxdWVyeSBvbmx5IHJldHVybnMgY29sdW1uIG5hbWVzIHdoZW4g
dGhlcmUgaXMgZGF0YS4KICAgICAgICAgICAgIHRoaXMuZWxlbWVudC5yZW1vdmVDaGlsZHJlbigp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3Mv
TmV3VGFiQ29udGVudFZpZXcuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9WaWV3cy9OZXdUYWJDb250ZW50Vmlldy5qcwppbmRleCBjYzg4ODVkZWFjMDVmNmVkOGQyOWZj
NGFlNDVkYmYxMzkyMGIzM2E3Li4yODZkZDBjZjdiM2YwMzBmZTI2ODNjYjI2N2UyNjQ0NDY0ZGZh
NjJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9OZXdUYWJDb250ZW50Vmlldy5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9WaWV3cy9OZXdUYWJDb250ZW50Vmlldy5qcwpAQCAtMzEsNiArMzEsNyBAQCBXZWJJ
bnNwZWN0b3IuTmV3VGFiQ29udGVudFZpZXcgPSBmdW5jdGlvbihpZGVudGlmaWVyKQogCiAgICAg
dmFyIGFsbG93ZWROZXdUYWJzID0gWwogICAgICAgICB7aW1hZ2U6ICJJbWFnZXMvRWxlbWVudHMu
c3ZnIiwgdGl0bGU6IFdlYkluc3BlY3Rvci5VSVN0cmluZygiRWxlbWVudHMiKSwgdHlwZTogV2Vi
SW5zcGVjdG9yLkVsZW1lbnRzVGFiQ29udGVudFZpZXcuVHlwZX0sCisgICAgICAgIHtpbWFnZTog
IkltYWdlcy9TdG9yYWdlLnN2ZyIsIHRpdGxlOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlN0b3Jh
Z2UiKSwgdHlwZTogV2ViSW5zcGVjdG9yLlN0b3JhZ2VUYWJDb250ZW50Vmlldy5UeXBlfSwKICAg
ICAgICAge2ltYWdlOiAiSW1hZ2VzL0NvbnNvbGUuc3ZnIiwgdGl0bGU6IFdlYkluc3BlY3Rvci5V
SVN0cmluZygiQ29uc29sZSIpLCB0eXBlOiBXZWJJbnNwZWN0b3IuQ29uc29sZVRhYkNvbnRlbnRW
aWV3LlR5cGV9CiAgICAgXTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvUmVzb3VyY2VTaWRlYmFyUGFuZWwuanMgYi9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9SZXNvdXJjZVNpZGViYXJQYW5lbC5qcwppbmRl
eCBkMTk0Nzg3ZDg3NjU4ODdiMmQzZjRlZGI2MWJmZTA1Y2VhYWEwMjBhLi44NDE2MzI5NmE0MWVk
NzMxNjE4MDZjY2MwOTdkNWIzNjUyODU2YWNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9SZXNvdXJjZVNpZGViYXJQYW5lbC5qcworKysgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9SZXNvdXJjZVNpZGViYXJQ
YW5lbC5qcwpAQCAtMzUsMzEgKzM1LDYgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlU2lkZWJhclBh
bmVsID0gY2xhc3MgUmVzb3VyY2VTaWRlYmFyUGFuZWwgZXh0ZW5kcyBXZWJJbnNwZWMKIAogICAg
ICAgICB0aGlzLl93YWl0aW5nRm9ySW5pdGlhbE1haW5GcmFtZSA9IHRydWU7CiAKLSAgICAgICAg
dGhpcy5fbG9jYWxTdG9yYWdlUm9vdFRyZWVFbGVtZW50ID0gbnVsbDsKLSAgICAgICAgdGhpcy5f
c2Vzc2lvblN0b3JhZ2VSb290VHJlZUVsZW1lbnQgPSBudWxsOwotCi0gICAgICAgIHRoaXMuX2Rh
dGFiYXNlUm9vdFRyZWVFbGVtZW50ID0gbnVsbDsKLSAgICAgICAgdGhpcy5fZGF0YWJhc2VIb3N0
VHJlZUVsZW1lbnRNYXAgPSB7fTsKLQotICAgICAgICB0aGlzLl9pbmRleGVkRGF0YWJhc2VSb290
VHJlZUVsZW1lbnQgPSBudWxsOwotICAgICAgICB0aGlzLl9pbmRleGVkRGF0YWJhc2VIb3N0VHJl
ZUVsZW1lbnRNYXAgPSB7fTsKLQotICAgICAgICB0aGlzLl9jb29raWVTdG9yYWdlUm9vdFRyZWVF
bGVtZW50ID0gbnVsbDsKLQotICAgICAgICB0aGlzLl9hcHBsaWNhdGlvbkNhY2hlUm9vdFRyZWVF
bGVtZW50ID0gbnVsbDsKLSAgICAgICAgdGhpcy5fYXBwbGljYXRpb25DYWNoZVVSTFRyZWVFbGVt
ZW50TWFwID0ge307Ci0KLSAgICAgICAgV2ViSW5zcGVjdG9yLnN0b3JhZ2VNYW5hZ2VyLmFkZEV2
ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlN0b3JhZ2VNYW5hZ2VyLkV2ZW50LkNvb2tpZVN0b3Jh
Z2VPYmplY3RXYXNBZGRlZCwgdGhpcy5fY29va2llU3RvcmFnZU9iamVjdFdhc0FkZGVkLCB0aGlz
KTsKLSAgICAgICAgV2ViSW5zcGVjdG9yLnN0b3JhZ2VNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIo
V2ViSW5zcGVjdG9yLlN0b3JhZ2VNYW5hZ2VyLkV2ZW50LkRPTVN0b3JhZ2VPYmplY3RXYXNBZGRl
ZCwgdGhpcy5fZG9tU3RvcmFnZU9iamVjdFdhc0FkZGVkLCB0aGlzKTsKLSAgICAgICAgV2ViSW5z
cGVjdG9yLnN0b3JhZ2VNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlN0b3Jh
Z2VNYW5hZ2VyLkV2ZW50LkRPTVN0b3JhZ2VPYmplY3RXYXNJbnNwZWN0ZWQsIHRoaXMuX2RvbVN0
b3JhZ2VPYmplY3RXYXNJbnNwZWN0ZWQsIHRoaXMpOwotICAgICAgICBXZWJJbnNwZWN0b3Iuc3Rv
cmFnZU1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuU3RvcmFnZU1hbmFnZXIu
RXZlbnQuRGF0YWJhc2VXYXNBZGRlZCwgdGhpcy5fZGF0YWJhc2VXYXNBZGRlZCwgdGhpcyk7Ci0g
ICAgICAgIFdlYkluc3BlY3Rvci5zdG9yYWdlTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdlYklu
c3BlY3Rvci5TdG9yYWdlTWFuYWdlci5FdmVudC5EYXRhYmFzZVdhc0luc3BlY3RlZCwgdGhpcy5f
ZGF0YWJhc2VXYXNJbnNwZWN0ZWQsIHRoaXMpOwotICAgICAgICBXZWJJbnNwZWN0b3Iuc3RvcmFn
ZU1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuU3RvcmFnZU1hbmFnZXIuRXZl
bnQuSW5kZXhlZERhdGFiYXNlV2FzQWRkZWQsIHRoaXMuX2luZGV4ZWREYXRhYmFzZVdhc0FkZGVk
LCB0aGlzKTsKLSAgICAgICAgV2ViSW5zcGVjdG9yLnN0b3JhZ2VNYW5hZ2VyLmFkZEV2ZW50TGlz
dGVuZXIoV2ViSW5zcGVjdG9yLlN0b3JhZ2VNYW5hZ2VyLkV2ZW50LkNsZWFyZWQsIHRoaXMuX3N0
b3JhZ2VDbGVhcmVkLCB0aGlzKTsKLQotICAgICAgICBXZWJJbnNwZWN0b3IuYXBwbGljYXRpb25D
YWNoZU1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuQXBwbGljYXRpb25DYWNo
ZU1hbmFnZXIuRXZlbnQuRnJhbWVNYW5pZmVzdEFkZGVkLCB0aGlzLl9mcmFtZU1hbmlmZXN0QWRk
ZWQsIHRoaXMpOwotICAgICAgICBXZWJJbnNwZWN0b3IuYXBwbGljYXRpb25DYWNoZU1hbmFnZXIu
YWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuQXBwbGljYXRpb25DYWNoZU1hbmFnZXIuRXZl
bnQuRnJhbWVNYW5pZmVzdFJlbW92ZWQsIHRoaXMuX2ZyYW1lTWFuaWZlc3RSZW1vdmVkLCB0aGlz
KTsKLQogICAgICAgICBXZWJJbnNwZWN0b3IuZnJhbWVSZXNvdXJjZU1hbmFnZXIuYWRkRXZlbnRM
aXN0ZW5lcihXZWJJbnNwZWN0b3IuRnJhbWVSZXNvdXJjZU1hbmFnZXIuRXZlbnQuTWFpbkZyYW1l
RGlkQ2hhbmdlLCB0aGlzLl9tYWluRnJhbWVEaWRDaGFuZ2UsIHRoaXMpOwogCiAgICAgICAgIFdl
Ykluc3BlY3Rvci5kZWJ1Z2dlck1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3Iu
RGVidWdnZXJNYW5hZ2VyLkV2ZW50LlNjcmlwdEFkZGVkLCB0aGlzLl9zY3JpcHRXYXNBZGRlZCwg
dGhpcyk7CkBAIC0zMDAsMTUgKzI3NSwxMCBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2VTaWRlYmFy
UGFuZWwgPSBjbGFzcyBSZXNvdXJjZVNpZGViYXJQYW5lbCBleHRlbmRzIFdlYkluc3BlYwogCiAg
ICAgX3RyZWVFbGVtZW50U2VsZWN0ZWQodHJlZUVsZW1lbnQsIHNlbGVjdGVkQnlVc2VyKQogICAg
IHsKLSAgICAgICAgaWYgKHRyZWVFbGVtZW50IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkZvbGRl
clRyZWVFbGVtZW50IHx8IHRyZWVFbGVtZW50IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkRhdGFi
YXNlSG9zdFRyZWVFbGVtZW50IHx8Ci0gICAgICAgICAgICB0cmVlRWxlbWVudCBpbnN0YW5jZW9m
IFdlYkluc3BlY3Rvci5JbmRleGVkRGF0YWJhc2VIb3N0VHJlZUVsZW1lbnQgfHwgdHJlZUVsZW1l
bnQgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuSW5kZXhlZERhdGFiYXNlVHJlZUVsZW1lbnQpCisg
ICAgICAgIGlmICh0cmVlRWxlbWVudCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5Gb2xkZXJUcmVl
RWxlbWVudCkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBpZiAodHJlZUVsZW1lbnQg
aW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuUmVzb3VyY2VUcmVlRWxlbWVudCB8fCB0cmVlRWxlbWVu
dCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5TY3JpcHRUcmVlRWxlbWVudCB8fAotICAgICAgICAg
ICAgdHJlZUVsZW1lbnQgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuU3RvcmFnZVRyZWVFbGVtZW50
IHx8IHRyZWVFbGVtZW50IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkRhdGFiYXNlVGFibGVUcmVl
RWxlbWVudCB8fAotICAgICAgICAgICAgdHJlZUVsZW1lbnQgaW5zdGFuY2VvZiBXZWJJbnNwZWN0
b3IuRGF0YWJhc2VUcmVlRWxlbWVudCB8fCB0cmVlRWxlbWVudCBpbnN0YW5jZW9mIFdlYkluc3Bl
Y3Rvci5BcHBsaWNhdGlvbkNhY2hlRnJhbWVUcmVlRWxlbWVudCB8fAotICAgICAgICAgICAgdHJl
ZUVsZW1lbnQgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuQ29udGVudEZsb3dUcmVlRWxlbWVudCB8
fCB0cmVlRWxlbWVudCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5JbmRleGVkRGF0YWJhc2VPYmpl
Y3RTdG9yZVRyZWVFbGVtZW50IHx8Ci0gICAgICAgICAgICB0cmVlRWxlbWVudCBpbnN0YW5jZW9m
IFdlYkluc3BlY3Rvci5JbmRleGVkRGF0YWJhc2VPYmplY3RTdG9yZUluZGV4VHJlZUVsZW1lbnQp
IHsKKyAgICAgICAgaWYgKHRyZWVFbGVtZW50IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlJlc291
cmNlVHJlZUVsZW1lbnQgfHwgdHJlZUVsZW1lbnQgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuU2Ny
aXB0VHJlZUVsZW1lbnQpIHsKICAgICAgICAgICAgIFdlYkluc3BlY3Rvci5zaG93UmVwcmVzZW50
ZWRPYmplY3QodHJlZUVsZW1lbnQucmVwcmVzZW50ZWRPYmplY3QpOwogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICB9CkBAIC0zMTYsOTAgKzI4Niw2IEBAIFdlYkluc3BlY3Rvci5SZXNvdXJj
ZVNpZGViYXJQYW5lbCA9IGNsYXNzIFJlc291cmNlU2lkZWJhclBhbmVsIGV4dGVuZHMgV2ViSW5z
cGVjCiAgICAgICAgIGNvbnNvbGUuZXJyb3IoIlVua25vd24gdHJlZSBlbGVtZW50IiwgdHJlZUVs
ZW1lbnQpOwogICAgIH0KIAotICAgIF9kb21TdG9yYWdlT2JqZWN0V2FzQWRkZWQoZXZlbnQpCi0g
ICAgewotICAgICAgICB2YXIgZG9tU3RvcmFnZSA9IGV2ZW50LmRhdGEuZG9tU3RvcmFnZTsKLSAg
ICAgICAgdmFyIHN0b3JhZ2VFbGVtZW50ID0gbmV3IFdlYkluc3BlY3Rvci5ET01TdG9yYWdlVHJl
ZUVsZW1lbnQoZG9tU3RvcmFnZSk7Ci0KLSAgICAgICAgaWYgKGRvbVN0b3JhZ2UuaXNMb2NhbFN0
b3JhZ2UoKSkKLSAgICAgICAgICAgIHRoaXMuX2xvY2FsU3RvcmFnZVJvb3RUcmVlRWxlbWVudCA9
IHRoaXMuX2FkZFN0b3JhZ2VDaGlsZChzdG9yYWdlRWxlbWVudCwgdGhpcy5fbG9jYWxTdG9yYWdl
Um9vdFRyZWVFbGVtZW50LCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkxvY2FsIFN0b3JhZ2UiKSk7
Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHRoaXMuX3Nlc3Npb25TdG9yYWdlUm9vdFRyZWVF
bGVtZW50ID0gdGhpcy5fYWRkU3RvcmFnZUNoaWxkKHN0b3JhZ2VFbGVtZW50LCB0aGlzLl9zZXNz
aW9uU3RvcmFnZVJvb3RUcmVlRWxlbWVudCwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTZXNzaW9u
IFN0b3JhZ2UiKSk7Ci0gICAgfQotCi0gICAgX2RvbVN0b3JhZ2VPYmplY3RXYXNJbnNwZWN0ZWQo
ZXZlbnQpCi0gICAgewotICAgICAgICB2YXIgZG9tU3RvcmFnZSA9IGV2ZW50LmRhdGEuZG9tU3Rv
cmFnZTsKLSAgICAgICAgdmFyIHRyZWVFbGVtZW50ID0gdGhpcy50cmVlRWxlbWVudEZvclJlcHJl
c2VudGVkT2JqZWN0KGRvbVN0b3JhZ2UpOwotICAgICAgICB0cmVlRWxlbWVudC5yZXZlYWxBbmRT
ZWxlY3QodHJ1ZSk7Ci0gICAgfQotCi0gICAgX2RhdGFiYXNlV2FzQWRkZWQoZXZlbnQpCi0gICAg
ewotICAgICAgICB2YXIgZGF0YWJhc2UgPSBldmVudC5kYXRhLmRhdGFiYXNlOwotCi0gICAgICAg
IGNvbnNvbGUuYXNzZXJ0KGRhdGFiYXNlIGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkRhdGFiYXNl
T2JqZWN0KTsKLQotICAgICAgICBpZiAoIXRoaXMuX2RhdGFiYXNlSG9zdFRyZWVFbGVtZW50TWFw
W2RhdGFiYXNlLmhvc3RdKSB7Ci0gICAgICAgICAgICB0aGlzLl9kYXRhYmFzZUhvc3RUcmVlRWxl
bWVudE1hcFtkYXRhYmFzZS5ob3N0XSA9IG5ldyBXZWJJbnNwZWN0b3IuRGF0YWJhc2VIb3N0VHJl
ZUVsZW1lbnQoZGF0YWJhc2UuaG9zdCk7Ci0gICAgICAgICAgICB0aGlzLl9kYXRhYmFzZVJvb3RU
cmVlRWxlbWVudCA9IHRoaXMuX2FkZFN0b3JhZ2VDaGlsZCh0aGlzLl9kYXRhYmFzZUhvc3RUcmVl
RWxlbWVudE1hcFtkYXRhYmFzZS5ob3N0XSwgdGhpcy5fZGF0YWJhc2VSb290VHJlZUVsZW1lbnQs
IFdlYkluc3BlY3Rvci5VSVN0cmluZygiRGF0YWJhc2VzIikpOwotICAgICAgICB9Ci0KLSAgICAg
ICAgdmFyIGRhdGFiYXNlRWxlbWVudCA9IG5ldyBXZWJJbnNwZWN0b3IuRGF0YWJhc2VUcmVlRWxl
bWVudChkYXRhYmFzZSk7Ci0gICAgICAgIHRoaXMuX2RhdGFiYXNlSG9zdFRyZWVFbGVtZW50TWFw
W2RhdGFiYXNlLmhvc3RdLmFwcGVuZENoaWxkKGRhdGFiYXNlRWxlbWVudCk7Ci0gICAgfQotCi0g
ICAgX2RhdGFiYXNlV2FzSW5zcGVjdGVkKGV2ZW50KQotICAgIHsKLSAgICAgICAgdmFyIGRhdGFi
YXNlID0gZXZlbnQuZGF0YS5kYXRhYmFzZTsKLSAgICAgICAgdmFyIHRyZWVFbGVtZW50ID0gdGhp
cy50cmVlRWxlbWVudEZvclJlcHJlc2VudGVkT2JqZWN0KGRhdGFiYXNlKTsKLSAgICAgICAgdHJl
ZUVsZW1lbnQucmV2ZWFsQW5kU2VsZWN0KHRydWUpOwotICAgIH0KLQotICAgIF9pbmRleGVkRGF0
YWJhc2VXYXNBZGRlZChldmVudCkKLSAgICB7Ci0gICAgICAgIHZhciBpbmRleGVkRGF0YWJhc2Ug
PSBldmVudC5kYXRhLmluZGV4ZWREYXRhYmFzZTsKLQotICAgICAgICBjb25zb2xlLmFzc2VydChp
bmRleGVkRGF0YWJhc2UgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuSW5kZXhlZERhdGFiYXNlKTsK
LQotICAgICAgICBpZiAoIXRoaXMuX2luZGV4ZWREYXRhYmFzZUhvc3RUcmVlRWxlbWVudE1hcFtp
bmRleGVkRGF0YWJhc2UuaG9zdF0pIHsKLSAgICAgICAgICAgIHRoaXMuX2luZGV4ZWREYXRhYmFz
ZUhvc3RUcmVlRWxlbWVudE1hcFtpbmRleGVkRGF0YWJhc2UuaG9zdF0gPSBuZXcgV2ViSW5zcGVj
dG9yLkluZGV4ZWREYXRhYmFzZUhvc3RUcmVlRWxlbWVudChpbmRleGVkRGF0YWJhc2UuaG9zdCk7
Ci0gICAgICAgICAgICB0aGlzLl9pbmRleGVkRGF0YWJhc2VSb290VHJlZUVsZW1lbnQgPSB0aGlz
Ll9hZGRTdG9yYWdlQ2hpbGQodGhpcy5faW5kZXhlZERhdGFiYXNlSG9zdFRyZWVFbGVtZW50TWFw
W2luZGV4ZWREYXRhYmFzZS5ob3N0XSwgdGhpcy5faW5kZXhlZERhdGFiYXNlUm9vdFRyZWVFbGVt
ZW50LCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkluZGV4ZWQgRGF0YWJhc2VzIikpOwotICAgICAg
ICB9Ci0KLSAgICAgICAgdmFyIGluZGV4ZWREYXRhYmFzZUVsZW1lbnQgPSBuZXcgV2ViSW5zcGVj
dG9yLkluZGV4ZWREYXRhYmFzZVRyZWVFbGVtZW50KGluZGV4ZWREYXRhYmFzZSk7Ci0gICAgICAg
IHRoaXMuX2luZGV4ZWREYXRhYmFzZUhvc3RUcmVlRWxlbWVudE1hcFtpbmRleGVkRGF0YWJhc2Uu
aG9zdF0uYXBwZW5kQ2hpbGQoaW5kZXhlZERhdGFiYXNlRWxlbWVudCk7Ci0gICAgfQotCi0gICAg
X2Nvb2tpZVN0b3JhZ2VPYmplY3RXYXNBZGRlZChldmVudCkKLSAgICB7Ci0gICAgICAgIGNvbnNv
bGUuYXNzZXJ0KGV2ZW50LmRhdGEuY29va2llU3RvcmFnZSBpbnN0YW5jZW9mIFdlYkluc3BlY3Rv
ci5Db29raWVTdG9yYWdlT2JqZWN0KTsKLQotICAgICAgICB2YXIgY29va2llRWxlbWVudCA9IG5l
dyBXZWJJbnNwZWN0b3IuQ29va2llU3RvcmFnZVRyZWVFbGVtZW50KGV2ZW50LmRhdGEuY29va2ll
U3RvcmFnZSk7Ci0gICAgICAgIHRoaXMuX2Nvb2tpZVN0b3JhZ2VSb290VHJlZUVsZW1lbnQgPSB0
aGlzLl9hZGRTdG9yYWdlQ2hpbGQoY29va2llRWxlbWVudCwgdGhpcy5fY29va2llU3RvcmFnZVJv
b3RUcmVlRWxlbWVudCwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJDb29raWVzIikpOwotICAgIH0K
LQotICAgIF9mcmFtZU1hbmlmZXN0QWRkZWQoZXZlbnQpCi0gICAgewotICAgICAgICB2YXIgZnJh
bWVNYW5pZmVzdCA9IGV2ZW50LmRhdGEuZnJhbWVNYW5pZmVzdDsKLSAgICAgICAgY29uc29sZS5h
c3NlcnQoZnJhbWVNYW5pZmVzdCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5BcHBsaWNhdGlvbkNh
Y2hlRnJhbWUpOwotCi0gICAgICAgIHZhciBtYW5pZmVzdCA9IGZyYW1lTWFuaWZlc3QubWFuaWZl
c3Q7Ci0gICAgICAgIHZhciBtYW5pZmVzdFVSTCA9IG1hbmlmZXN0Lm1hbmlmZXN0VVJMOwotICAg
ICAgICBpZiAoIXRoaXMuX2FwcGxpY2F0aW9uQ2FjaGVVUkxUcmVlRWxlbWVudE1hcFttYW5pZmVz
dFVSTF0pIHsKLSAgICAgICAgICAgIHRoaXMuX2FwcGxpY2F0aW9uQ2FjaGVVUkxUcmVlRWxlbWVu
dE1hcFttYW5pZmVzdFVSTF0gPSBuZXcgV2ViSW5zcGVjdG9yLkFwcGxpY2F0aW9uQ2FjaGVNYW5p
ZmVzdFRyZWVFbGVtZW50KG1hbmlmZXN0KTsKLSAgICAgICAgICAgIHRoaXMuX2FwcGxpY2F0aW9u
Q2FjaGVSb290VHJlZUVsZW1lbnQgPSB0aGlzLl9hZGRTdG9yYWdlQ2hpbGQodGhpcy5fYXBwbGlj
YXRpb25DYWNoZVVSTFRyZWVFbGVtZW50TWFwW21hbmlmZXN0VVJMXSwgdGhpcy5fYXBwbGljYXRp
b25DYWNoZVJvb3RUcmVlRWxlbWVudCwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJBcHBsaWNhdGlv
biBDYWNoZSIpKTsKLSAgICAgICAgfQotCi0gICAgICAgIHZhciBmcmFtZUNhY2hlRWxlbWVudCA9
IG5ldyBXZWJJbnNwZWN0b3IuQXBwbGljYXRpb25DYWNoZUZyYW1lVHJlZUVsZW1lbnQoZnJhbWVN
YW5pZmVzdCk7Ci0gICAgICAgIHRoaXMuX2FwcGxpY2F0aW9uQ2FjaGVVUkxUcmVlRWxlbWVudE1h
cFttYW5pZmVzdFVSTF0uYXBwZW5kQ2hpbGQoZnJhbWVDYWNoZUVsZW1lbnQpOwotICAgIH0KLQot
ICAgIF9mcmFtZU1hbmlmZXN0UmVtb3ZlZChldmVudCkKLSAgICB7Ci0gICAgICAgICAvLyBGSVhN
RTogSW1wbGVtZW50IHRoaXMuCi0gICAgfQotCiAgICAgX2NvbXBhcmVUcmVlRWxlbWVudHMoYSwg
YikKICAgICB7CiAgICAgICAgIC8vIEFsd2F5cyBzb3J0IHRoZSBtYWluIGZyYW1lIGVsZW1lbnQg
Zmlyc3QuCkBAIC00MTQsNzYgKzMwMCw2IEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZVNpZGViYXJQ
YW5lbCA9IGNsYXNzIFJlc291cmNlU2lkZWJhclBhbmVsIGV4dGVuZHMgV2ViSW5zcGVjCiAgICAg
ICAgIHJldHVybiAoYS5tYWluVGl0bGUgfHwgIiIpLmxvY2FsZUNvbXBhcmUoYi5tYWluVGl0bGUg
fHwgIiIpOwogICAgIH0KIAotICAgIF9hZGRTdG9yYWdlQ2hpbGQoY2hpbGRFbGVtZW50LCBwYXJl
bnRFbGVtZW50LCBmb2xkZXJOYW1lKQotICAgIHsKLSAgICAgICAgaWYgKCFwYXJlbnRFbGVtZW50
KSB7Ci0gICAgICAgICAgICBjaGlsZEVsZW1lbnQuZmxhdHRlbmVkID0gdHJ1ZTsKLQotICAgICAg
ICAgICAgdGhpcy5jb250ZW50VHJlZU91dGxpbmUuaW5zZXJ0Q2hpbGQoY2hpbGRFbGVtZW50LCBp
bnNlcnRpb25JbmRleEZvck9iamVjdEluTGlzdFNvcnRlZEJ5RnVuY3Rpb24oY2hpbGRFbGVtZW50
LCB0aGlzLmNvbnRlbnRUcmVlT3V0bGluZS5jaGlsZHJlbiwgdGhpcy5fY29tcGFyZVRyZWVFbGVt
ZW50cykpOwotCi0gICAgICAgICAgICByZXR1cm4gY2hpbGRFbGVtZW50OwotICAgICAgICB9Ci0K
LSAgICAgICAgaWYgKHBhcmVudEVsZW1lbnQgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuU3RvcmFn
ZVRyZWVFbGVtZW50KSB7Ci0gICAgICAgICAgICBjb25zb2xlLmFzc2VydChwYXJlbnRFbGVtZW50
LmZsYXR0ZW5lZCk7Ci0KLSAgICAgICAgICAgIHZhciBwcmV2aW91c09ubHlDaGlsZCA9IHBhcmVu
dEVsZW1lbnQ7Ci0gICAgICAgICAgICBwcmV2aW91c09ubHlDaGlsZC5mbGF0dGVuZWQgPSBmYWxz
ZTsKLSAgICAgICAgICAgIHRoaXMuY29udGVudFRyZWVPdXRsaW5lLnJlbW92ZUNoaWxkKHByZXZp
b3VzT25seUNoaWxkKTsKLQotICAgICAgICAgICAgdmFyIGZvbGRlckVsZW1lbnQgPSBuZXcgV2Vi
SW5zcGVjdG9yLkZvbGRlclRyZWVFbGVtZW50KGZvbGRlck5hbWUpOwotICAgICAgICAgICAgdGhp
cy5jb250ZW50VHJlZU91dGxpbmUuaW5zZXJ0Q2hpbGQoZm9sZGVyRWxlbWVudCwgaW5zZXJ0aW9u
SW5kZXhGb3JPYmplY3RJbkxpc3RTb3J0ZWRCeUZ1bmN0aW9uKGZvbGRlckVsZW1lbnQsIHRoaXMu
Y29udGVudFRyZWVPdXRsaW5lLmNoaWxkcmVuLCB0aGlzLl9jb21wYXJlVHJlZUVsZW1lbnRzKSk7
Ci0KLSAgICAgICAgICAgIGZvbGRlckVsZW1lbnQuYXBwZW5kQ2hpbGQocHJldmlvdXNPbmx5Q2hp
bGQpOwotICAgICAgICAgICAgZm9sZGVyRWxlbWVudC5pbnNlcnRDaGlsZChjaGlsZEVsZW1lbnQs
IGluc2VydGlvbkluZGV4Rm9yT2JqZWN0SW5MaXN0U29ydGVkQnlGdW5jdGlvbihjaGlsZEVsZW1l
bnQsIGZvbGRlckVsZW1lbnQuY2hpbGRyZW4sIHRoaXMuX2NvbXBhcmVUcmVlRWxlbWVudHMpKTsK
LQotICAgICAgICAgICAgcmV0dXJuIGZvbGRlckVsZW1lbnQ7Ci0gICAgICAgIH0KLQotICAgICAg
ICBjb25zb2xlLmFzc2VydChwYXJlbnRFbGVtZW50IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkZv
bGRlclRyZWVFbGVtZW50KTsKLSAgICAgICAgcGFyZW50RWxlbWVudC5pbnNlcnRDaGlsZChjaGls
ZEVsZW1lbnQsIGluc2VydGlvbkluZGV4Rm9yT2JqZWN0SW5MaXN0U29ydGVkQnlGdW5jdGlvbihj
aGlsZEVsZW1lbnQsIHBhcmVudEVsZW1lbnQuY2hpbGRyZW4sIHRoaXMuX2NvbXBhcmVUcmVlRWxl
bWVudHMpKTsKLQotICAgICAgICByZXR1cm4gcGFyZW50RWxlbWVudDsKLSAgICB9Ci0KLSAgICBf
c3RvcmFnZUNsZWFyZWQoZXZlbnQpCi0gICAgewotICAgICAgICAvLyBDbG9zZSBhbGwgRE9NIGFu
ZCBjb29raWUgc3RvcmFnZSBjb250ZW50IHZpZXdzIHNpbmNlIHRoZSBtYWluIGZyYW1lIGhhcyBu
YXZpZ2F0ZWQgYW5kIGFsbCBzdG9yYWdlcyBhcmUgY2xlYXJlZC4KLSAgICAgICAgdGhpcy5jb250
ZW50QnJvd3Nlci5jb250ZW50Vmlld0NvbnRhaW5lci5jbG9zZUFsbENvbnRlbnRWaWV3c09mUHJv
dG90eXBlKFdlYkluc3BlY3Rvci5Db29raWVTdG9yYWdlQ29udGVudFZpZXcpOwotICAgICAgICB0
aGlzLmNvbnRlbnRCcm93c2VyLmNvbnRlbnRWaWV3Q29udGFpbmVyLmNsb3NlQWxsQ29udGVudFZp
ZXdzT2ZQcm90b3R5cGUoV2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2VDb250ZW50Vmlldyk7Ci0gICAg
ICAgIHRoaXMuY29udGVudEJyb3dzZXIuY29udGVudFZpZXdDb250YWluZXIuY2xvc2VBbGxDb250
ZW50Vmlld3NPZlByb3RvdHlwZShXZWJJbnNwZWN0b3IuRGF0YWJhc2VUYWJsZUNvbnRlbnRWaWV3
KTsKLSAgICAgICAgdGhpcy5jb250ZW50QnJvd3Nlci5jb250ZW50Vmlld0NvbnRhaW5lci5jbG9z
ZUFsbENvbnRlbnRWaWV3c09mUHJvdG90eXBlKFdlYkluc3BlY3Rvci5EYXRhYmFzZUNvbnRlbnRW
aWV3KTsKLSAgICAgICAgdGhpcy5jb250ZW50QnJvd3Nlci5jb250ZW50Vmlld0NvbnRhaW5lci5j
bG9zZUFsbENvbnRlbnRWaWV3c09mUHJvdG90eXBlKFdlYkluc3BlY3Rvci5BcHBsaWNhdGlvbkNh
Y2hlRnJhbWVDb250ZW50Vmlldyk7Ci0KLSAgICAgICAgaWYgKHRoaXMuX2xvY2FsU3RvcmFnZVJv
b3RUcmVlRWxlbWVudCAmJiB0aGlzLl9sb2NhbFN0b3JhZ2VSb290VHJlZUVsZW1lbnQucGFyZW50
KQotICAgICAgICAgICAgdGhpcy5fbG9jYWxTdG9yYWdlUm9vdFRyZWVFbGVtZW50LnBhcmVudC5y
ZW1vdmVDaGlsZCh0aGlzLl9sb2NhbFN0b3JhZ2VSb290VHJlZUVsZW1lbnQpOwotCi0gICAgICAg
IGlmICh0aGlzLl9zZXNzaW9uU3RvcmFnZVJvb3RUcmVlRWxlbWVudCAmJiB0aGlzLl9zZXNzaW9u
U3RvcmFnZVJvb3RUcmVlRWxlbWVudC5wYXJlbnQpCi0gICAgICAgICAgICB0aGlzLl9zZXNzaW9u
U3RvcmFnZVJvb3RUcmVlRWxlbWVudC5wYXJlbnQucmVtb3ZlQ2hpbGQodGhpcy5fc2Vzc2lvblN0
b3JhZ2VSb290VHJlZUVsZW1lbnQpOwotCi0gICAgICAgIGlmICh0aGlzLl9kYXRhYmFzZVJvb3RU
cmVlRWxlbWVudCAmJiB0aGlzLl9kYXRhYmFzZVJvb3RUcmVlRWxlbWVudC5wYXJlbnQpCi0gICAg
ICAgICAgICB0aGlzLl9kYXRhYmFzZVJvb3RUcmVlRWxlbWVudC5wYXJlbnQucmVtb3ZlQ2hpbGQo
dGhpcy5fZGF0YWJhc2VSb290VHJlZUVsZW1lbnQpOwotCi0gICAgICAgIGlmICh0aGlzLl9pbmRl
eGVkRGF0YWJhc2VSb290VHJlZUVsZW1lbnQgJiYgdGhpcy5faW5kZXhlZERhdGFiYXNlUm9vdFRy
ZWVFbGVtZW50LnBhcmVudCkKLSAgICAgICAgICAgIHRoaXMuX2luZGV4ZWREYXRhYmFzZVJvb3RU
cmVlRWxlbWVudC5wYXJlbnQucmVtb3ZlQ2hpbGQodGhpcy5faW5kZXhlZERhdGFiYXNlUm9vdFRy
ZWVFbGVtZW50KTsKLQotICAgICAgICBpZiAodGhpcy5fY29va2llU3RvcmFnZVJvb3RUcmVlRWxl
bWVudCAmJiB0aGlzLl9jb29raWVTdG9yYWdlUm9vdFRyZWVFbGVtZW50LnBhcmVudCkKLSAgICAg
ICAgICAgIHRoaXMuX2Nvb2tpZVN0b3JhZ2VSb290VHJlZUVsZW1lbnQucGFyZW50LnJlbW92ZUNo
aWxkKHRoaXMuX2Nvb2tpZVN0b3JhZ2VSb290VHJlZUVsZW1lbnQpOwotCi0gICAgICAgIGlmICh0
aGlzLl9hcHBsaWNhdGlvbkNhY2hlUm9vdFRyZWVFbGVtZW50ICYmIHRoaXMuX2FwcGxpY2F0aW9u
Q2FjaGVSb290VHJlZUVsZW1lbnQucGFyZW50KQotICAgICAgICAgICAgdGhpcy5fYXBwbGljYXRp
b25DYWNoZVJvb3RUcmVlRWxlbWVudC5wYXJlbnQucmVtb3ZlQ2hpbGQodGhpcy5fYXBwbGljYXRp
b25DYWNoZVJvb3RUcmVlRWxlbWVudCk7Ci0KLSAgICAgICAgdGhpcy5fbG9jYWxTdG9yYWdlUm9v
dFRyZWVFbGVtZW50ID0gbnVsbDsKLSAgICAgICAgdGhpcy5fc2Vzc2lvblN0b3JhZ2VSb290VHJl
ZUVsZW1lbnQgPSBudWxsOwotICAgICAgICB0aGlzLl9kYXRhYmFzZVJvb3RUcmVlRWxlbWVudCA9
IG51bGw7Ci0gICAgICAgIHRoaXMuX2RhdGFiYXNlSG9zdFRyZWVFbGVtZW50TWFwID0ge307Ci0g
ICAgICAgIHRoaXMuX2luZGV4ZWREYXRhYmFzZVJvb3RUcmVlRWxlbWVudCA9IG51bGw7Ci0gICAg
ICAgIHRoaXMuX2luZGV4ZWREYXRhYmFzZUhvc3RUcmVlRWxlbWVudE1hcCA9IHt9OwotICAgICAg
ICB0aGlzLl9jb29raWVTdG9yYWdlUm9vdFRyZWVFbGVtZW50ID0gbnVsbDsKLSAgICAgICAgdGhp
cy5fYXBwbGljYXRpb25DYWNoZVJvb3RUcmVlRWxlbWVudCA9IG51bGw7Ci0gICAgICAgIHRoaXMu
X2FwcGxpY2F0aW9uQ2FjaGVVUkxUcmVlRWxlbWVudE1hcCA9IHt9OwotICAgIH0KLQogICAgIF9l
eHRyYURvbWFpbnNBY3RpdmF0ZWQoKQogICAgIHsKICAgICAgICAgaWYgKFdlYkluc3BlY3Rvci5k
ZWJ1Z2dhYmxlVHlwZSA9PT0gV2ViSW5zcGVjdG9yLkRlYnVnZ2FibGVUeXBlLkphdmFTY3JpcHQp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9S
ZXNvdXJjZXNUYWJDb250ZW50Vmlldy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL1Jlc291cmNlc1RhYkNvbnRlbnRWaWV3LmpzCmluZGV4IDYzOWJjNWM1OWNh
YmJiNmY5YWE1ODNkYzg3ZDZlOTJlZWMyOTYzMDMuLmViNGEyMjc2ZWM2Mzc0MjEwODA4YzNjNTJi
NWJhZDk3ODVkMDgxMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL1Jlc291cmNlc1RhYkNvbnRlbnRWaWV3LmpzCisrKyBiL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Jlc291cmNlc1RhYkNvbnRlbnRWaWV3Lmpz
CkBAIC0yNiw3ICsyNiw3IEBACiBXZWJJbnNwZWN0b3IuUmVzb3VyY2VzVGFiQ29udGVudFZpZXcg
PSBmdW5jdGlvbihpZGVudGlmaWVyKQogewogICAgIHZhciB0YWJCYXJJdGVtID0gbmV3IFdlYklu
c3BlY3Rvci5UYWJCYXJJdGVtKCJJbWFnZXMvUmVzb3VyY2VzLnN2ZyIsIFdlYkluc3BlY3Rvci5V
SVN0cmluZygiUmVzb3VyY2VzIikpOwotICAgIHZhciBkZXRhaWxzU2lkZWJhclBhbmVscyA9IFtX
ZWJJbnNwZWN0b3IucmVzb3VyY2VEZXRhaWxzU2lkZWJhclBhbmVsLCBXZWJJbnNwZWN0b3IuYXBw
bGljYXRpb25DYWNoZURldGFpbHNTaWRlYmFyUGFuZWwsIFdlYkluc3BlY3Rvci5wcm9iZURldGFp
bHNTaWRlYmFyUGFuZWxdOworICAgIHZhciBkZXRhaWxzU2lkZWJhclBhbmVscyA9IFtXZWJJbnNw
ZWN0b3IucmVzb3VyY2VEZXRhaWxzU2lkZWJhclBhbmVsLCBXZWJJbnNwZWN0b3IucHJvYmVEZXRh
aWxzU2lkZWJhclBhbmVsXTsKIAogICAgIC8vIEZJWE1FOiBVbnRpbCBDb250ZW50Rmxvd3MgYXJl
IG1vdmVkIHRvIHRoZSBFbGVtZW50cyB0YWIsIHRoZXNlIGRldGFpbHMgc2lkZWJhciBwYW5lbHMg
bmVlZCB0byBiZSBpbmNsdWRlZC4KICAgICBkZXRhaWxzU2lkZWJhclBhbmVscyA9IGRldGFpbHNT
aWRlYmFyUGFuZWxzLmNvbmNhdChbV2ViSW5zcGVjdG9yLmRvbU5vZGVEZXRhaWxzU2lkZWJhclBh
bmVsLCBXZWJJbnNwZWN0b3IuY3NzU3R5bGVEZXRhaWxzU2lkZWJhclBhbmVsXSk7CkBAIC01Miwx
MiArNTIsNyBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2VzVGFiQ29udGVudFZpZXcucHJvdG90eXBl
ID0gewogCiAgICAgY2FuU2hvd1JlcHJlc2VudGVkT2JqZWN0OiBmdW5jdGlvbihyZXByZXNlbnRl
ZE9iamVjdCkKICAgICB7Ci0gICAgICAgIHJldHVybiByZXByZXNlbnRlZE9iamVjdCBpbnN0YW5j
ZW9mIFdlYkluc3BlY3Rvci5GcmFtZSB8fCByZXByZXNlbnRlZE9iamVjdCBpbnN0YW5jZW9mIFdl
Ykluc3BlY3Rvci5SZXNvdXJjZSB8fAotICAgICAgICAgICAgcmVwcmVzZW50ZWRPYmplY3QgaW5z
dGFuY2VvZiBXZWJJbnNwZWN0b3IuU2NyaXB0IHx8IHJlcHJlc2VudGVkT2JqZWN0IGluc3RhbmNl
b2YgV2ViSW5zcGVjdG9yLkNvbnRlbnRGbG93IHx8Ci0gICAgICAgICAgICByZXByZXNlbnRlZE9i
amVjdCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5ET01TdG9yYWdlT2JqZWN0IHx8IHJlcHJlc2Vu
dGVkT2JqZWN0IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkNvb2tpZVN0b3JhZ2VPYmplY3QgfHwK
LSAgICAgICAgICAgIHJlcHJlc2VudGVkT2JqZWN0IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkRh
dGFiYXNlVGFibGVPYmplY3QgfHwgcmVwcmVzZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBXZWJJbnNw
ZWN0b3IuRGF0YWJhc2VPYmplY3QgfHwKLSAgICAgICAgICAgIHJlcHJlc2VudGVkT2JqZWN0IGlu
c3RhbmNlb2YgV2ViSW5zcGVjdG9yLkFwcGxpY2F0aW9uQ2FjaGVGcmFtZSB8fCByZXByZXNlbnRl
ZE9iamVjdCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5JbmRleGVkRGF0YWJhc2VPYmplY3RTdG9y
ZSB8fAotICAgICAgICAgICAgcmVwcmVzZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBXZWJJbnNwZWN0
b3IuSW5kZXhlZERhdGFiYXNlT2JqZWN0U3RvcmVJbmRleDsKKyAgICAgICAgcmV0dXJuIHJlcHJl
c2VudGVkT2JqZWN0IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkZyYW1lIHx8IHJlcHJlc2VudGVk
T2JqZWN0IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlJlc291cmNlIHx8IHJlcHJlc2VudGVkT2Jq
ZWN0IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlNjcmlwdDsKICAgICB9CiB9OwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9TdG9yYWdlU2lk
ZWJhclBhbmVsLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3Mv
U3RvcmFnZVNpZGViYXJQYW5lbC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43MzhlNzc1ZTAxMTcwZTFkZDM5MzMw
ZTVhYTlmOWQ4ZDA5MDIzN2Q5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU3RvcmFnZVNpZGViYXJQYW5lbC5qcwpAQCAtMCwwICsx
LDI5MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK1dlYkluc3BlY3Rvci5TdG9yYWdlU2lkZWJhclBh
bmVsID0gY2xhc3MgU3RvcmFnZVNpZGViYXJQYW5lbCBleHRlbmRzIFdlYkluc3BlY3Rvci5OYXZp
Z2F0aW9uU2lkZWJhclBhbmVsCit7CisgICAgY29uc3RydWN0b3IoY29udGVudEJyb3dzZXIpCisg
ICAgeworICAgICAgICBzdXBlcigic3RvcmFnZSIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiU3Rv
cmFnZSIpKTsKKworICAgICAgICB0aGlzLmNvbnRlbnRCcm93c2VyID0gY29udGVudEJyb3dzZXI7
CisKKyAgICAgICAgdGhpcy5maWx0ZXJCYXIucGxhY2Vob2xkZXIgPSBXZWJJbnNwZWN0b3IuVUlT
dHJpbmcoIkZpbHRlciBTdG9yYWdlIExpc3QiKTsKKworICAgICAgICB0aGlzLl9sb2NhbFN0b3Jh
Z2VSb290VHJlZUVsZW1lbnQgPSBudWxsOworICAgICAgICB0aGlzLl9zZXNzaW9uU3RvcmFnZVJv
b3RUcmVlRWxlbWVudCA9IG51bGw7CisKKyAgICAgICAgdGhpcy5fZGF0YWJhc2VSb290VHJlZUVs
ZW1lbnQgPSBudWxsOworICAgICAgICB0aGlzLl9kYXRhYmFzZUhvc3RUcmVlRWxlbWVudE1hcCA9
IHt9OworCisgICAgICAgIHRoaXMuX2luZGV4ZWREYXRhYmFzZVJvb3RUcmVlRWxlbWVudCA9IG51
bGw7CisgICAgICAgIHRoaXMuX2luZGV4ZWREYXRhYmFzZUhvc3RUcmVlRWxlbWVudE1hcCA9IHt9
OworCisgICAgICAgIHRoaXMuX2Nvb2tpZVN0b3JhZ2VSb290VHJlZUVsZW1lbnQgPSBudWxsOwor
CisgICAgICAgIHRoaXMuX2FwcGxpY2F0aW9uQ2FjaGVSb290VHJlZUVsZW1lbnQgPSBudWxsOwor
ICAgICAgICB0aGlzLl9hcHBsaWNhdGlvbkNhY2hlVVJMVHJlZUVsZW1lbnRNYXAgPSB7fTsKKwor
ICAgICAgICBXZWJJbnNwZWN0b3Iuc3RvcmFnZU1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJ
bnNwZWN0b3IuU3RvcmFnZU1hbmFnZXIuRXZlbnQuQ29va2llU3RvcmFnZU9iamVjdFdhc0FkZGVk
LCB0aGlzLl9jb29raWVTdG9yYWdlT2JqZWN0V2FzQWRkZWQsIHRoaXMpOworICAgICAgICBXZWJJ
bnNwZWN0b3Iuc3RvcmFnZU1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuU3Rv
cmFnZU1hbmFnZXIuRXZlbnQuRE9NU3RvcmFnZU9iamVjdFdhc0FkZGVkLCB0aGlzLl9kb21TdG9y
YWdlT2JqZWN0V2FzQWRkZWQsIHRoaXMpOworICAgICAgICBXZWJJbnNwZWN0b3Iuc3RvcmFnZU1h
bmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuU3RvcmFnZU1hbmFnZXIuRXZlbnQu
RE9NU3RvcmFnZU9iamVjdFdhc0luc3BlY3RlZCwgdGhpcy5fZG9tU3RvcmFnZU9iamVjdFdhc0lu
c3BlY3RlZCwgdGhpcyk7CisgICAgICAgIFdlYkluc3BlY3Rvci5zdG9yYWdlTWFuYWdlci5hZGRF
dmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5TdG9yYWdlTWFuYWdlci5FdmVudC5EYXRhYmFzZVdh
c0FkZGVkLCB0aGlzLl9kYXRhYmFzZVdhc0FkZGVkLCB0aGlzKTsKKyAgICAgICAgV2ViSW5zcGVj
dG9yLnN0b3JhZ2VNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlN0b3JhZ2VN
YW5hZ2VyLkV2ZW50LkRhdGFiYXNlV2FzSW5zcGVjdGVkLCB0aGlzLl9kYXRhYmFzZVdhc0luc3Bl
Y3RlZCwgdGhpcyk7CisgICAgICAgIFdlYkluc3BlY3Rvci5zdG9yYWdlTWFuYWdlci5hZGRFdmVu
dExpc3RlbmVyKFdlYkluc3BlY3Rvci5TdG9yYWdlTWFuYWdlci5FdmVudC5JbmRleGVkRGF0YWJh
c2VXYXNBZGRlZCwgdGhpcy5faW5kZXhlZERhdGFiYXNlV2FzQWRkZWQsIHRoaXMpOworICAgICAg
ICBXZWJJbnNwZWN0b3Iuc3RvcmFnZU1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0
b3IuU3RvcmFnZU1hbmFnZXIuRXZlbnQuQ2xlYXJlZCwgdGhpcy5fc3RvcmFnZUNsZWFyZWQsIHRo
aXMpOworCisgICAgICAgIFdlYkluc3BlY3Rvci5hcHBsaWNhdGlvbkNhY2hlTWFuYWdlci5hZGRF
dmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5BcHBsaWNhdGlvbkNhY2hlTWFuYWdlci5FdmVudC5G
cmFtZU1hbmlmZXN0QWRkZWQsIHRoaXMuX2ZyYW1lTWFuaWZlc3RBZGRlZCwgdGhpcyk7CisgICAg
ICAgIFdlYkluc3BlY3Rvci5hcHBsaWNhdGlvbkNhY2hlTWFuYWdlci5hZGRFdmVudExpc3RlbmVy
KFdlYkluc3BlY3Rvci5BcHBsaWNhdGlvbkNhY2hlTWFuYWdlci5FdmVudC5GcmFtZU1hbmlmZXN0
UmVtb3ZlZCwgdGhpcy5fZnJhbWVNYW5pZmVzdFJlbW92ZWQsIHRoaXMpOworCisgICAgICAgIHRo
aXMuY29udGVudFRyZWVPdXRsaW5lLm9uc2VsZWN0ID0gdGhpcy5fdHJlZUVsZW1lbnRTZWxlY3Rl
ZC5iaW5kKHRoaXMpOworCisgICAgICAgIGZvciAodmFyIGRvbVN0b3JhZ2VPYmplY3Qgb2YgV2Vi
SW5zcGVjdG9yLnN0b3JhZ2VNYW5hZ2VyLmRvbVN0b3JhZ2VPYmplY3RzKQorICAgICAgICAgICAg
dGhpcy5fYWRkRE9NU3RvcmFnZU9iamVjdChkb21TdG9yYWdlT2JqZWN0KTsKKworICAgICAgICBm
b3IgKHZhciBjb29raWVTdG9yYWdlT2JqZWN0IG9mIFdlYkluc3BlY3Rvci5zdG9yYWdlTWFuYWdl
ci5jb29raWVTdG9yYWdlT2JqZWN0cykKKyAgICAgICAgICAgIHRoaXMuX2FkZENvb2tpZVN0b3Jh
Z2VPYmplY3QoY29va2llU3RvcmFnZU9iamVjdCk7CisKKyAgICAgICAgZm9yICh2YXIgZGF0YWJh
c2Ugb2YgV2ViSW5zcGVjdG9yLnN0b3JhZ2VNYW5hZ2VyLmRhdGFiYXNlcykKKyAgICAgICAgICAg
IHRoaXMuX2FkZERhdGFiYXNlKGRhdGFiYXNlKTsKKworICAgICAgICBmb3IgKHZhciBpbmRleGVk
RGF0YWJhc2Ugb2YgV2ViSW5zcGVjdG9yLnN0b3JhZ2VNYW5hZ2VyLmluZGV4ZWREYXRhYmFzZXMp
CisgICAgICAgICAgICB0aGlzLl9hZGRJbmRleGVkRGF0YWJhc2UoaW5kZXhlZERhdGFiYXNlKTsK
KworICAgICAgICBmb3IgKHZhciBhcHBsaWNhdGlvbkNhY2hlT2JqZWN0IG9mIFdlYkluc3BlY3Rv
ci5hcHBsaWNhdGlvbkNhY2hlTWFuYWdlci5hcHBsaWNhdGlvbkNhY2hlT2JqZWN0cykKKyAgICAg
ICAgICAgIHRoaXMuX2FkZEZyYW1lTWFuaWZlc3QoYXBwbGljYXRpb25DYWNoZU9iamVjdCk7Cisg
ICAgfQorCisgICAgLy8gUHVibGljCisKKyAgICBzaG93RGVmYXVsdENvbnRlbnRWaWV3KCkKKyAg
ICB7CisgICAgICAgIC8vIERvbid0IHNob3cgYW55dGhpbmcgYnkgZGVmYXVsdC4gSXQgZG9lc24n
dCBtYWtlIGEgd2hvbGUgbG90IG9mIHNlbnNlIGhlcmUuCisgICAgfQorCisgICAgY2xvc2VkKCkK
KyAgICB7CisgICAgICAgIFdlYkluc3BlY3Rvci5zdG9yYWdlTWFuYWdlci5yZW1vdmVFdmVudExp
c3RlbmVyKG51bGwsIG51bGwsIHRoaXMpOworICAgICAgICBXZWJJbnNwZWN0b3IuYXBwbGljYXRp
b25DYWNoZU1hbmFnZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcihudWxsLCBudWxsLCB0aGlzKTsKKyAg
ICB9CisKKyAgICAvLyBQcml2YXRlCisKKyAgICBfdHJlZUVsZW1lbnRTZWxlY3RlZCh0cmVlRWxl
bWVudCwgc2VsZWN0ZWRCeVVzZXIpCisgICAgeworICAgICAgICBpZiAodHJlZUVsZW1lbnQgaW5z
dGFuY2VvZiBXZWJJbnNwZWN0b3IuRm9sZGVyVHJlZUVsZW1lbnQgfHwgdHJlZUVsZW1lbnQgaW5z
dGFuY2VvZiBXZWJJbnNwZWN0b3IuRGF0YWJhc2VIb3N0VHJlZUVsZW1lbnQgfHwKKyAgICAgICAg
ICAgIHRyZWVFbGVtZW50IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkluZGV4ZWREYXRhYmFzZUhv
c3RUcmVlRWxlbWVudCB8fCB0cmVlRWxlbWVudCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5JbmRl
eGVkRGF0YWJhc2VUcmVlRWxlbWVudCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBp
ZiAodHJlZUVsZW1lbnQgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuU3RvcmFnZVRyZWVFbGVtZW50
IHx8IHRyZWVFbGVtZW50IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkRhdGFiYXNlVGFibGVUcmVl
RWxlbWVudCB8fAorICAgICAgICAgICAgdHJlZUVsZW1lbnQgaW5zdGFuY2VvZiBXZWJJbnNwZWN0
b3IuRGF0YWJhc2VUcmVlRWxlbWVudCB8fCB0cmVlRWxlbWVudCBpbnN0YW5jZW9mIFdlYkluc3Bl
Y3Rvci5BcHBsaWNhdGlvbkNhY2hlRnJhbWVUcmVlRWxlbWVudCB8fAorICAgICAgICAgICAgdHJl
ZUVsZW1lbnQgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuSW5kZXhlZERhdGFiYXNlT2JqZWN0U3Rv
cmVUcmVlRWxlbWVudCB8fCB0cmVlRWxlbWVudCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5JbmRl
eGVkRGF0YWJhc2VPYmplY3RTdG9yZUluZGV4VHJlZUVsZW1lbnQpIHsKKyAgICAgICAgICAgIFdl
Ykluc3BlY3Rvci5zaG93UmVwcmVzZW50ZWRPYmplY3QodHJlZUVsZW1lbnQucmVwcmVzZW50ZWRP
YmplY3QpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgY29uc29s
ZS5lcnJvcigiVW5rbm93biB0cmVlIGVsZW1lbnQiLCB0cmVlRWxlbWVudCk7CisgICAgfQorCisg
ICAgX2RvbVN0b3JhZ2VPYmplY3RXYXNBZGRlZChldmVudCkKKyAgICB7CisgICAgICAgIHZhciBk
b21TdG9yYWdlID0gZXZlbnQuZGF0YS5kb21TdG9yYWdlOworICAgICAgICB0aGlzLl9hZGRET01T
dG9yYWdlT2JqZWN0KGV2ZW50LmRhdGEuZG9tU3RvcmFnZSk7CisgICAgfQorCisgICAgX2FkZERP
TVN0b3JhZ2VPYmplY3QoZG9tU3RvcmFnZSkKKyAgICB7CisgICAgICAgIHZhciBzdG9yYWdlRWxl
bWVudCA9IG5ldyBXZWJJbnNwZWN0b3IuRE9NU3RvcmFnZVRyZWVFbGVtZW50KGRvbVN0b3JhZ2Up
OworCisgICAgICAgIGlmIChkb21TdG9yYWdlLmlzTG9jYWxTdG9yYWdlKCkpCisgICAgICAgICAg
ICB0aGlzLl9sb2NhbFN0b3JhZ2VSb290VHJlZUVsZW1lbnQgPSB0aGlzLl9hZGRTdG9yYWdlQ2hp
bGQoc3RvcmFnZUVsZW1lbnQsIHRoaXMuX2xvY2FsU3RvcmFnZVJvb3RUcmVlRWxlbWVudCwgV2Vi
SW5zcGVjdG9yLlVJU3RyaW5nKCJMb2NhbCBTdG9yYWdlIikpOworICAgICAgICBlbHNlCisgICAg
ICAgICAgICB0aGlzLl9zZXNzaW9uU3RvcmFnZVJvb3RUcmVlRWxlbWVudCA9IHRoaXMuX2FkZFN0
b3JhZ2VDaGlsZChzdG9yYWdlRWxlbWVudCwgdGhpcy5fc2Vzc2lvblN0b3JhZ2VSb290VHJlZUVs
ZW1lbnQsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiU2Vzc2lvbiBTdG9yYWdlIikpOworICAgIH0K
KworICAgIF9kb21TdG9yYWdlT2JqZWN0V2FzSW5zcGVjdGVkKGV2ZW50KQorICAgIHsKKyAgICAg
ICAgdmFyIGRvbVN0b3JhZ2UgPSBldmVudC5kYXRhLmRvbVN0b3JhZ2U7CisgICAgICAgIHZhciB0
cmVlRWxlbWVudCA9IHRoaXMudHJlZUVsZW1lbnRGb3JSZXByZXNlbnRlZE9iamVjdChkb21TdG9y
YWdlKTsKKyAgICAgICAgdHJlZUVsZW1lbnQucmV2ZWFsQW5kU2VsZWN0KHRydWUpOworICAgIH0K
KworICAgIF9kYXRhYmFzZVdhc0FkZGVkKGV2ZW50KQorICAgIHsKKyAgICAgICAgdmFyIGRhdGFi
YXNlID0gZXZlbnQuZGF0YS5kYXRhYmFzZTsKKyAgICAgICAgdGhpcy5fYWRkRGF0YWJhc2UoZXZl
bnQuZGF0YS5kYXRhYmFzZSk7CisgICAgfQorCisgICAgX2FkZERhdGFiYXNlKGRhdGFiYXNlKQor
ICAgIHsKKyAgICAgICAgY29uc29sZS5hc3NlcnQoZGF0YWJhc2UgaW5zdGFuY2VvZiBXZWJJbnNw
ZWN0b3IuRGF0YWJhc2VPYmplY3QpOworCisgICAgICAgIGlmICghdGhpcy5fZGF0YWJhc2VIb3N0
VHJlZUVsZW1lbnRNYXBbZGF0YWJhc2UuaG9zdF0pIHsKKyAgICAgICAgICAgIHRoaXMuX2RhdGFi
YXNlSG9zdFRyZWVFbGVtZW50TWFwW2RhdGFiYXNlLmhvc3RdID0gbmV3IFdlYkluc3BlY3Rvci5E
YXRhYmFzZUhvc3RUcmVlRWxlbWVudChkYXRhYmFzZS5ob3N0KTsKKyAgICAgICAgICAgIHRoaXMu
X2RhdGFiYXNlUm9vdFRyZWVFbGVtZW50ID0gdGhpcy5fYWRkU3RvcmFnZUNoaWxkKHRoaXMuX2Rh
dGFiYXNlSG9zdFRyZWVFbGVtZW50TWFwW2RhdGFiYXNlLmhvc3RdLCB0aGlzLl9kYXRhYmFzZVJv
b3RUcmVlRWxlbWVudCwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJEYXRhYmFzZXMiKSk7CisgICAg
ICAgIH0KKworICAgICAgICB2YXIgZGF0YWJhc2VFbGVtZW50ID0gbmV3IFdlYkluc3BlY3Rvci5E
YXRhYmFzZVRyZWVFbGVtZW50KGRhdGFiYXNlKTsKKyAgICAgICAgdGhpcy5fZGF0YWJhc2VIb3N0
VHJlZUVsZW1lbnRNYXBbZGF0YWJhc2UuaG9zdF0uYXBwZW5kQ2hpbGQoZGF0YWJhc2VFbGVtZW50
KTsKKyAgICB9CisKKyAgICBfZGF0YWJhc2VXYXNJbnNwZWN0ZWQoZXZlbnQpCisgICAgeworICAg
ICAgICB2YXIgZGF0YWJhc2UgPSBldmVudC5kYXRhLmRhdGFiYXNlOworICAgICAgICB2YXIgdHJl
ZUVsZW1lbnQgPSB0aGlzLnRyZWVFbGVtZW50Rm9yUmVwcmVzZW50ZWRPYmplY3QoZGF0YWJhc2Up
OworICAgICAgICB0cmVlRWxlbWVudC5yZXZlYWxBbmRTZWxlY3QodHJ1ZSk7CisgICAgfQorCisg
ICAgX2luZGV4ZWREYXRhYmFzZVdhc0FkZGVkKGV2ZW50KQorICAgIHsKKyAgICAgICAgdGhpcy5f
YWRkSW5kZXhlZERhdGFiYXNlV2FzQWRkZWQoZXZlbnQuZGF0YS5pbmRleGVkRGF0YWJhc2UpOwor
ICAgIH0KKworICAgIF9hZGRJbmRleGVkRGF0YWJhc2UoaW5kZXhlZERhdGFiYXNlKQorICAgIHsK
KyAgICAgICAgY29uc29sZS5hc3NlcnQoaW5kZXhlZERhdGFiYXNlIGluc3RhbmNlb2YgV2ViSW5z
cGVjdG9yLkluZGV4ZWREYXRhYmFzZSk7CisKKyAgICAgICAgaWYgKCF0aGlzLl9pbmRleGVkRGF0
YWJhc2VIb3N0VHJlZUVsZW1lbnRNYXBbaW5kZXhlZERhdGFiYXNlLmhvc3RdKSB7CisgICAgICAg
ICAgICB0aGlzLl9pbmRleGVkRGF0YWJhc2VIb3N0VHJlZUVsZW1lbnRNYXBbaW5kZXhlZERhdGFi
YXNlLmhvc3RdID0gbmV3IFdlYkluc3BlY3Rvci5JbmRleGVkRGF0YWJhc2VIb3N0VHJlZUVsZW1l
bnQoaW5kZXhlZERhdGFiYXNlLmhvc3QpOworICAgICAgICAgICAgdGhpcy5faW5kZXhlZERhdGFi
YXNlUm9vdFRyZWVFbGVtZW50ID0gdGhpcy5fYWRkU3RvcmFnZUNoaWxkKHRoaXMuX2luZGV4ZWRE
YXRhYmFzZUhvc3RUcmVlRWxlbWVudE1hcFtpbmRleGVkRGF0YWJhc2UuaG9zdF0sIHRoaXMuX2lu
ZGV4ZWREYXRhYmFzZVJvb3RUcmVlRWxlbWVudCwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJJbmRl
eGVkIERhdGFiYXNlcyIpKTsKKyAgICAgICAgfQorCisgICAgICAgIHZhciBpbmRleGVkRGF0YWJh
c2VFbGVtZW50ID0gbmV3IFdlYkluc3BlY3Rvci5JbmRleGVkRGF0YWJhc2VUcmVlRWxlbWVudChp
bmRleGVkRGF0YWJhc2UpOworICAgICAgICB0aGlzLl9pbmRleGVkRGF0YWJhc2VIb3N0VHJlZUVs
ZW1lbnRNYXBbaW5kZXhlZERhdGFiYXNlLmhvc3RdLmFwcGVuZENoaWxkKGluZGV4ZWREYXRhYmFz
ZUVsZW1lbnQpOworICAgIH0KKworICAgIF9jb29raWVTdG9yYWdlT2JqZWN0V2FzQWRkZWQoZXZl
bnQpCisgICAgeworICAgICAgICB0aGlzLl9hZGRDb29raWVTdG9yYWdlT2JqZWN0KGV2ZW50LmRh
dGEuY29va2llU3RvcmFnZSk7CisgICAgfQorCisgICAgX2FkZENvb2tpZVN0b3JhZ2VPYmplY3Qo
Y29va2llU3RvcmFnZSkKKyAgICB7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGNvb2tpZVN0b3Jh
Z2UgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuQ29va2llU3RvcmFnZU9iamVjdCk7CisKKyAgICAg
ICAgdmFyIGNvb2tpZUVsZW1lbnQgPSBuZXcgV2ViSW5zcGVjdG9yLkNvb2tpZVN0b3JhZ2VUcmVl
RWxlbWVudChjb29raWVTdG9yYWdlKTsKKyAgICAgICAgdGhpcy5fY29va2llU3RvcmFnZVJvb3RU
cmVlRWxlbWVudCA9IHRoaXMuX2FkZFN0b3JhZ2VDaGlsZChjb29raWVFbGVtZW50LCB0aGlzLl9j
b29raWVTdG9yYWdlUm9vdFRyZWVFbGVtZW50LCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkNvb2tp
ZXMiKSk7CisgICAgfQorCisgICAgX2ZyYW1lTWFuaWZlc3RBZGRlZChldmVudCkKKyAgICB7Cisg
ICAgICAgIHRoaXMuX2FkZEZyYW1lTWFuaWZlc3QoZXZlbnQuZGF0YS5mcmFtZU1hbmlmZXN0KTsK
KyAgICB9CisKKyAgICBfYWRkRnJhbWVNYW5pZmVzdChmcmFtZU1hbmlmZXN0KQorICAgIHsKKyAg
ICAgICAgY29uc29sZS5hc3NlcnQoZnJhbWVNYW5pZmVzdCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rv
ci5BcHBsaWNhdGlvbkNhY2hlRnJhbWUpOworCisgICAgICAgIHZhciBtYW5pZmVzdCA9IGZyYW1l
TWFuaWZlc3QubWFuaWZlc3Q7CisgICAgICAgIHZhciBtYW5pZmVzdFVSTCA9IG1hbmlmZXN0Lm1h
bmlmZXN0VVJMOworICAgICAgICBpZiAoIXRoaXMuX2FwcGxpY2F0aW9uQ2FjaGVVUkxUcmVlRWxl
bWVudE1hcFttYW5pZmVzdFVSTF0pIHsKKyAgICAgICAgICAgIHRoaXMuX2FwcGxpY2F0aW9uQ2Fj
aGVVUkxUcmVlRWxlbWVudE1hcFttYW5pZmVzdFVSTF0gPSBuZXcgV2ViSW5zcGVjdG9yLkFwcGxp
Y2F0aW9uQ2FjaGVNYW5pZmVzdFRyZWVFbGVtZW50KG1hbmlmZXN0KTsKKyAgICAgICAgICAgIHRo
aXMuX2FwcGxpY2F0aW9uQ2FjaGVSb290VHJlZUVsZW1lbnQgPSB0aGlzLl9hZGRTdG9yYWdlQ2hp
bGQodGhpcy5fYXBwbGljYXRpb25DYWNoZVVSTFRyZWVFbGVtZW50TWFwW21hbmlmZXN0VVJMXSwg
dGhpcy5fYXBwbGljYXRpb25DYWNoZVJvb3RUcmVlRWxlbWVudCwgV2ViSW5zcGVjdG9yLlVJU3Ry
aW5nKCJBcHBsaWNhdGlvbiBDYWNoZSIpKTsKKyAgICAgICAgfQorCisgICAgICAgIHZhciBmcmFt
ZUNhY2hlRWxlbWVudCA9IG5ldyBXZWJJbnNwZWN0b3IuQXBwbGljYXRpb25DYWNoZUZyYW1lVHJl
ZUVsZW1lbnQoZnJhbWVNYW5pZmVzdCk7CisgICAgICAgIHRoaXMuX2FwcGxpY2F0aW9uQ2FjaGVV
UkxUcmVlRWxlbWVudE1hcFttYW5pZmVzdFVSTF0uYXBwZW5kQ2hpbGQoZnJhbWVDYWNoZUVsZW1l
bnQpOworICAgIH0KKworICAgIF9mcmFtZU1hbmlmZXN0UmVtb3ZlZChldmVudCkKKyAgICB7Cisg
ICAgICAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRoaXMuCisgICAgfQorCisgICAgX2NvbXBhcmVU
cmVlRWxlbWVudHMoYSwgYikKKyAgICB7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGEubWFpblRp
dGxlKTsKKyAgICAgICAgY29uc29sZS5hc3NlcnQoYi5tYWluVGl0bGUpOworCisgICAgICAgIHJl
dHVybiAoYS5tYWluVGl0bGUgfHwgIiIpLmxvY2FsZUNvbXBhcmUoYi5tYWluVGl0bGUgfHwgIiIp
OworICAgIH0KKworICAgIF9hZGRTdG9yYWdlQ2hpbGQoY2hpbGRFbGVtZW50LCBwYXJlbnRFbGVt
ZW50LCBmb2xkZXJOYW1lKQorICAgIHsKKyAgICAgICAgaWYgKCFwYXJlbnRFbGVtZW50KSB7Cisg
ICAgICAgICAgICBjaGlsZEVsZW1lbnQuZmxhdHRlbmVkID0gdHJ1ZTsKKworICAgICAgICAgICAg
dGhpcy5jb250ZW50VHJlZU91dGxpbmUuaW5zZXJ0Q2hpbGQoY2hpbGRFbGVtZW50LCBpbnNlcnRp
b25JbmRleEZvck9iamVjdEluTGlzdFNvcnRlZEJ5RnVuY3Rpb24oY2hpbGRFbGVtZW50LCB0aGlz
LmNvbnRlbnRUcmVlT3V0bGluZS5jaGlsZHJlbiwgdGhpcy5fY29tcGFyZVRyZWVFbGVtZW50cykp
OworCisgICAgICAgICAgICByZXR1cm4gY2hpbGRFbGVtZW50OworICAgICAgICB9CisKKyAgICAg
ICAgaWYgKHBhcmVudEVsZW1lbnQgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuU3RvcmFnZVRyZWVF
bGVtZW50KSB7CisgICAgICAgICAgICBjb25zb2xlLmFzc2VydChwYXJlbnRFbGVtZW50LmZsYXR0
ZW5lZCk7CisKKyAgICAgICAgICAgIHZhciBwcmV2aW91c09ubHlDaGlsZCA9IHBhcmVudEVsZW1l
bnQ7CisgICAgICAgICAgICBwcmV2aW91c09ubHlDaGlsZC5mbGF0dGVuZWQgPSBmYWxzZTsKKyAg
ICAgICAgICAgIHRoaXMuY29udGVudFRyZWVPdXRsaW5lLnJlbW92ZUNoaWxkKHByZXZpb3VzT25s
eUNoaWxkKTsKKworICAgICAgICAgICAgdmFyIGZvbGRlckVsZW1lbnQgPSBuZXcgV2ViSW5zcGVj
dG9yLkZvbGRlclRyZWVFbGVtZW50KGZvbGRlck5hbWUpOworICAgICAgICAgICAgdGhpcy5jb250
ZW50VHJlZU91dGxpbmUuaW5zZXJ0Q2hpbGQoZm9sZGVyRWxlbWVudCwgaW5zZXJ0aW9uSW5kZXhG
b3JPYmplY3RJbkxpc3RTb3J0ZWRCeUZ1bmN0aW9uKGZvbGRlckVsZW1lbnQsIHRoaXMuY29udGVu
dFRyZWVPdXRsaW5lLmNoaWxkcmVuLCB0aGlzLl9jb21wYXJlVHJlZUVsZW1lbnRzKSk7CisKKyAg
ICAgICAgICAgIGZvbGRlckVsZW1lbnQuYXBwZW5kQ2hpbGQocHJldmlvdXNPbmx5Q2hpbGQpOwor
ICAgICAgICAgICAgZm9sZGVyRWxlbWVudC5pbnNlcnRDaGlsZChjaGlsZEVsZW1lbnQsIGluc2Vy
dGlvbkluZGV4Rm9yT2JqZWN0SW5MaXN0U29ydGVkQnlGdW5jdGlvbihjaGlsZEVsZW1lbnQsIGZv
bGRlckVsZW1lbnQuY2hpbGRyZW4sIHRoaXMuX2NvbXBhcmVUcmVlRWxlbWVudHMpKTsKKworICAg
ICAgICAgICAgcmV0dXJuIGZvbGRlckVsZW1lbnQ7CisgICAgICAgIH0KKworICAgICAgICBjb25z
b2xlLmFzc2VydChwYXJlbnRFbGVtZW50IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkZvbGRlclRy
ZWVFbGVtZW50KTsKKyAgICAgICAgcGFyZW50RWxlbWVudC5pbnNlcnRDaGlsZChjaGlsZEVsZW1l
bnQsIGluc2VydGlvbkluZGV4Rm9yT2JqZWN0SW5MaXN0U29ydGVkQnlGdW5jdGlvbihjaGlsZEVs
ZW1lbnQsIHBhcmVudEVsZW1lbnQuY2hpbGRyZW4sIHRoaXMuX2NvbXBhcmVUcmVlRWxlbWVudHMp
KTsKKworICAgICAgICByZXR1cm4gcGFyZW50RWxlbWVudDsKKyAgICB9CisKKyAgICBfc3RvcmFn
ZUNsZWFyZWQoZXZlbnQpCisgICAgeworICAgICAgICAvLyBDbG9zZSBhbGwgRE9NIGFuZCBjb29r
aWUgc3RvcmFnZSBjb250ZW50IHZpZXdzIHNpbmNlIHRoZSBtYWluIGZyYW1lIGhhcyBuYXZpZ2F0
ZWQgYW5kIGFsbCBzdG9yYWdlcyBhcmUgY2xlYXJlZC4KKyAgICAgICAgdGhpcy5jb250ZW50QnJv
d3Nlci5jb250ZW50Vmlld0NvbnRhaW5lci5jbG9zZUFsbENvbnRlbnRWaWV3c09mUHJvdG90eXBl
KFdlYkluc3BlY3Rvci5Db29raWVTdG9yYWdlQ29udGVudFZpZXcpOworICAgICAgICB0aGlzLmNv
bnRlbnRCcm93c2VyLmNvbnRlbnRWaWV3Q29udGFpbmVyLmNsb3NlQWxsQ29udGVudFZpZXdzT2ZQ
cm90b3R5cGUoV2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2VDb250ZW50Vmlldyk7CisgICAgICAgIHRo
aXMuY29udGVudEJyb3dzZXIuY29udGVudFZpZXdDb250YWluZXIuY2xvc2VBbGxDb250ZW50Vmll
d3NPZlByb3RvdHlwZShXZWJJbnNwZWN0b3IuRGF0YWJhc2VUYWJsZUNvbnRlbnRWaWV3KTsKKyAg
ICAgICAgdGhpcy5jb250ZW50QnJvd3Nlci5jb250ZW50Vmlld0NvbnRhaW5lci5jbG9zZUFsbENv
bnRlbnRWaWV3c09mUHJvdG90eXBlKFdlYkluc3BlY3Rvci5EYXRhYmFzZUNvbnRlbnRWaWV3KTsK
KyAgICAgICAgdGhpcy5jb250ZW50QnJvd3Nlci5jb250ZW50Vmlld0NvbnRhaW5lci5jbG9zZUFs
bENvbnRlbnRWaWV3c09mUHJvdG90eXBlKFdlYkluc3BlY3Rvci5BcHBsaWNhdGlvbkNhY2hlRnJh
bWVDb250ZW50Vmlldyk7CisKKyAgICAgICAgaWYgKHRoaXMuX2xvY2FsU3RvcmFnZVJvb3RUcmVl
RWxlbWVudCAmJiB0aGlzLl9sb2NhbFN0b3JhZ2VSb290VHJlZUVsZW1lbnQucGFyZW50KQorICAg
ICAgICAgICAgdGhpcy5fbG9jYWxTdG9yYWdlUm9vdFRyZWVFbGVtZW50LnBhcmVudC5yZW1vdmVD
aGlsZCh0aGlzLl9sb2NhbFN0b3JhZ2VSb290VHJlZUVsZW1lbnQpOworCisgICAgICAgIGlmICh0
aGlzLl9zZXNzaW9uU3RvcmFnZVJvb3RUcmVlRWxlbWVudCAmJiB0aGlzLl9zZXNzaW9uU3RvcmFn
ZVJvb3RUcmVlRWxlbWVudC5wYXJlbnQpCisgICAgICAgICAgICB0aGlzLl9zZXNzaW9uU3RvcmFn
ZVJvb3RUcmVlRWxlbWVudC5wYXJlbnQucmVtb3ZlQ2hpbGQodGhpcy5fc2Vzc2lvblN0b3JhZ2VS
b290VHJlZUVsZW1lbnQpOworCisgICAgICAgIGlmICh0aGlzLl9kYXRhYmFzZVJvb3RUcmVlRWxl
bWVudCAmJiB0aGlzLl9kYXRhYmFzZVJvb3RUcmVlRWxlbWVudC5wYXJlbnQpCisgICAgICAgICAg
ICB0aGlzLl9kYXRhYmFzZVJvb3RUcmVlRWxlbWVudC5wYXJlbnQucmVtb3ZlQ2hpbGQodGhpcy5f
ZGF0YWJhc2VSb290VHJlZUVsZW1lbnQpOworCisgICAgICAgIGlmICh0aGlzLl9pbmRleGVkRGF0
YWJhc2VSb290VHJlZUVsZW1lbnQgJiYgdGhpcy5faW5kZXhlZERhdGFiYXNlUm9vdFRyZWVFbGVt
ZW50LnBhcmVudCkKKyAgICAgICAgICAgIHRoaXMuX2luZGV4ZWREYXRhYmFzZVJvb3RUcmVlRWxl
bWVudC5wYXJlbnQucmVtb3ZlQ2hpbGQodGhpcy5faW5kZXhlZERhdGFiYXNlUm9vdFRyZWVFbGVt
ZW50KTsKKworICAgICAgICBpZiAodGhpcy5fY29va2llU3RvcmFnZVJvb3RUcmVlRWxlbWVudCAm
JiB0aGlzLl9jb29raWVTdG9yYWdlUm9vdFRyZWVFbGVtZW50LnBhcmVudCkKKyAgICAgICAgICAg
IHRoaXMuX2Nvb2tpZVN0b3JhZ2VSb290VHJlZUVsZW1lbnQucGFyZW50LnJlbW92ZUNoaWxkKHRo
aXMuX2Nvb2tpZVN0b3JhZ2VSb290VHJlZUVsZW1lbnQpOworCisgICAgICAgIGlmICh0aGlzLl9h
cHBsaWNhdGlvbkNhY2hlUm9vdFRyZWVFbGVtZW50ICYmIHRoaXMuX2FwcGxpY2F0aW9uQ2FjaGVS
b290VHJlZUVsZW1lbnQucGFyZW50KQorICAgICAgICAgICAgdGhpcy5fYXBwbGljYXRpb25DYWNo
ZVJvb3RUcmVlRWxlbWVudC5wYXJlbnQucmVtb3ZlQ2hpbGQodGhpcy5fYXBwbGljYXRpb25DYWNo
ZVJvb3RUcmVlRWxlbWVudCk7CisKKyAgICAgICAgdGhpcy5fbG9jYWxTdG9yYWdlUm9vdFRyZWVF
bGVtZW50ID0gbnVsbDsKKyAgICAgICAgdGhpcy5fc2Vzc2lvblN0b3JhZ2VSb290VHJlZUVsZW1l
bnQgPSBudWxsOworICAgICAgICB0aGlzLl9kYXRhYmFzZVJvb3RUcmVlRWxlbWVudCA9IG51bGw7
CisgICAgICAgIHRoaXMuX2RhdGFiYXNlSG9zdFRyZWVFbGVtZW50TWFwID0ge307CisgICAgICAg
IHRoaXMuX2luZGV4ZWREYXRhYmFzZVJvb3RUcmVlRWxlbWVudCA9IG51bGw7CisgICAgICAgIHRo
aXMuX2luZGV4ZWREYXRhYmFzZUhvc3RUcmVlRWxlbWVudE1hcCA9IHt9OworICAgICAgICB0aGlz
Ll9jb29raWVTdG9yYWdlUm9vdFRyZWVFbGVtZW50ID0gbnVsbDsKKyAgICAgICAgdGhpcy5fYXBw
bGljYXRpb25DYWNoZVJvb3RUcmVlRWxlbWVudCA9IG51bGw7CisgICAgICAgIHRoaXMuX2FwcGxp
Y2F0aW9uQ2FjaGVVUkxUcmVlRWxlbWVudE1hcCA9IHt9OworICAgIH0KK307CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9TdG9yYWdlVGFiQ29u
dGVudFZpZXcuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9T
dG9yYWdlVGFiQ29udGVudFZpZXcuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjE2MmZlZjk0M2NkM2I2YTc0YjE5
NDY4NDlmZTdjNzFhNWIxOWUwZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1N0b3JhZ2VUYWJDb250ZW50Vmlldy5qcwpAQCAtMCww
ICsxLDU0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworV2ViSW5zcGVjdG9yLlN0b3JhZ2VUYWJDb250ZW50Vmll
dyA9IGZ1bmN0aW9uKGlkZW50aWZpZXIpCit7CisgICAgdmFyIHRhYkJhckl0ZW0gPSBuZXcgV2Vi
SW5zcGVjdG9yLlRhYkJhckl0ZW0oIkltYWdlcy9TdG9yYWdlLnN2ZyIsIFdlYkluc3BlY3Rvci5V
SVN0cmluZygiU3RvcmFnZSIpKTsKKyAgICB2YXIgZGV0YWlsc1NpZGViYXJQYW5lbHMgPSBbV2Vi
SW5zcGVjdG9yLmFwcGxpY2F0aW9uQ2FjaGVEZXRhaWxzU2lkZWJhclBhbmVsXTsKKworICAgIFdl
Ykluc3BlY3Rvci5Db250ZW50QnJvd3NlclRhYkNvbnRlbnRWaWV3LmNhbGwodGhpcywgaWRlbnRp
ZmllciB8fCAic3RvcmFnZSIsICJzdG9yYWdlIiwgdGFiQmFySXRlbSwgV2ViSW5zcGVjdG9yLlN0
b3JhZ2VTaWRlYmFyUGFuZWwsIGRldGFpbHNTaWRlYmFyUGFuZWxzKTsKK307CisKK1dlYkluc3Bl
Y3Rvci5TdG9yYWdlVGFiQ29udGVudFZpZXcucHJvdG90eXBlID0geworICAgIGNvbnN0cnVjdG9y
OiBXZWJJbnNwZWN0b3IuU3RvcmFnZVRhYkNvbnRlbnRWaWV3LAorICAgIF9fcHJvdG9fXzogV2Vi
SW5zcGVjdG9yLkNvbnRlbnRCcm93c2VyVGFiQ29udGVudFZpZXcucHJvdG90eXBlLAorCisgICAg
Ly8gUHVibGljCisKKyAgICBnZXQgdHlwZSgpCisgICAgeworICAgICAgICByZXR1cm4gV2ViSW5z
cGVjdG9yLlN0b3JhZ2VUYWJDb250ZW50Vmlldy5UeXBlOworICAgIH0sCisKKyAgICBjYW5TaG93
UmVwcmVzZW50ZWRPYmplY3Q6IGZ1bmN0aW9uKHJlcHJlc2VudGVkT2JqZWN0KQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIHJlcHJlc2VudGVkT2JqZWN0IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkRP
TVN0b3JhZ2VPYmplY3QgfHwgcmVwcmVzZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBXZWJJbnNwZWN0
b3IuQ29va2llU3RvcmFnZU9iamVjdCB8fAorICAgICAgICAgICAgcmVwcmVzZW50ZWRPYmplY3Qg
aW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuRGF0YWJhc2VUYWJsZU9iamVjdCB8fCByZXByZXNlbnRl
ZE9iamVjdCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5EYXRhYmFzZU9iamVjdCB8fAorICAgICAg
ICAgICAgcmVwcmVzZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuQXBwbGljYXRp
b25DYWNoZUZyYW1lIHx8IHJlcHJlc2VudGVkT2JqZWN0IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9y
LkluZGV4ZWREYXRhYmFzZU9iamVjdFN0b3JlIHx8CisgICAgICAgICAgICByZXByZXNlbnRlZE9i
amVjdCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5JbmRleGVkRGF0YWJhc2VPYmplY3RTdG9yZUlu
ZGV4OworICAgIH0KK307CisKK1dlYkluc3BlY3Rvci5TdG9yYWdlVGFiQ29udGVudFZpZXcuVHlw
ZSA9ICJzdG9yYWdlIjsK
</data>
<flag name="review"
          id="276791"
          type_id="1"
          status="+"
          setter="joepeck"
    />
    <flag name="commit-queue"
          id="276792"
          type_id="3"
          status="-"
          setter="timothy"
    />
          </attachment>
      

    </bug>

</bugzilla>