<?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>51334</bug_id>
          
          <creation_ts>2010-12-20 07:48:04 -0800</creation_ts>
          <short_desc>Web Inspector: Protocol cleanup task. Introduce Network, DOMStorage and Database domains.</short_desc>
          <delta_ts>2010-12-28 09:05:39 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Ilya Tikhonovsky">loislo</reporter>
          <assigned_to name="Ilya Tikhonovsky">loislo</assigned_to>
          <cc>abarth</cc>
    
    <cc>apavlov</cc>
    
    <cc>bweinstein</cc>
    
    <cc>eric</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rik</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>324391</commentid>
    <comment_count>0</comment_count>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2010-12-20 07:48:04 -0800</bug_when>
    <thetext>%subj% and other cleanup activities like:

Domain was changed for FileSystem related methods.
ResourcesManager was renamed to NetworkManager.
ResourceTreeModel was extracted as separate file.
FileSystem, Database, DOMStorage and ApplicationCache methods were removed from NetworkManager and added to corresponding classes.

Patch to follow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>324393</commentid>
    <comment_count>1</comment_count>
      <attachid>77000</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2010-12-20 07:52:29 -0800</bug_when>
    <thetext>Created attachment 77000
[patch] initial version</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>324496</commentid>
    <comment_count>2</comment_count>
      <attachid>77023</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2010-12-20 12:17:36 -0800</bug_when>
    <thetext>Created attachment 77023
[patch] initial version. rebaselined.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>324943</commentid>
    <comment_count>3</comment_count>
      <attachid>77000</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2010-12-21 04:44:13 -0800</bug_when>
    <thetext>Comment on attachment 77000
[patch] initial version

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

&gt; LayoutTests/platform/chromium/test_expectations.txt:-630
&gt; -BUG_DRT WIN DEBUG SLOW : inspector = PASS

I don&apos;t undertand how protocol clean up could affect these expectations.

&gt; WebCore/inspector/front-end/Database.js:128
&gt; +    delete WebInspector.Database.successCallbacks[transactionId];

Please remove both success and error callbacks when result is received.

&gt; WebCore/inspector/front-end/Database.js:137
&gt; +    delete WebInspector.Database.errorCallbacks[transactionId];

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>324963</commentid>
    <comment_count>4</comment_count>
      <attachid>77106</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2010-12-21 05:34:52 -0800</bug_when>
    <thetext>Created attachment 77106
[patch] second iteration

Problem with callbacks in WebInspector.Database was fixed.
Unnecessary changes were removed from test_expectations.txt</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>324967</commentid>
    <comment_count>5</comment_count>
      <attachid>77106</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2010-12-21 05:44:11 -0800</bug_when>
    <thetext>Comment on attachment 77106
[patch] second iteration

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

I don&apos;t think that ResourceManager -&gt; NetworkManager rename is thought through. There are two things that do not play well with it: 1) frames aspect and 2) direct calls from network to various panels (something resource manager was created with). I think we should leave it as is unless there is a good separation of network resources and resource panel resources. I am fine with moving view factories into ResourceView.

&gt; WebCore/inspector/front-end/NetworkManager.js:254
&gt; +    frameDetachedFromParent: function(frameId)

&quot;Network&quot; manager should not be involved with frames.

&gt; WebCore/inspector/front-end/NetworkManager.js:312
&gt; +    _addFramesRecursively: function(framePayload)

Also, does not look good as a part of &apos;network&apos;.

&gt; WebCore/inspector/front-end/NetworkManager.js:352
&gt; +        var resource = this.resourceForURL(msg.url);

What does console message have to do with network?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>324996</commentid>
    <comment_count>6</comment_count>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2010-12-21 07:28:29 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 77106 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=77106&amp;action=review
&gt; 
&gt; I don&apos;t think that ResourceManager -&gt; NetworkManager rename is thought through. There are two things that do not play well with it: 1) frames aspect and 2) direct calls from network to various panels (something resource manager was created with). I think we should leave it as is unless there is a good separation of network resources and resource panel resources. I am fine with moving view factories into ResourceView.

I&apos;m not sure that ResourceManager is a good name for Network domain handler.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>325067</commentid>
    <comment_count>7</comment_count>
      <attachid>77132</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2010-12-21 10:41:47 -0800</bug_when>
    <thetext>Created attachment 77132
[patch] third iteration

Looks like old ResourceManager has two parts. 
The first one is NetworkManager which is the handler for Network domain messages.
The second is ResourceTreeModel which keeps control over resources.

As result console messages related functions were moved from NetworkManager to ResourceTreeModel.
resourceForURL method and _resourcesByURL map were moved to ResourceTreeModel too.
cachedResources related methods also moved to ResourceTreeModel.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>327219</commentid>
    <comment_count>8</comment_count>
      <attachid>77132</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2010-12-28 05:32:33 -0800</bug_when>
    <thetext>Comment on attachment 77132
[patch] third iteration

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

r+ with comment. Please fix it before landing.

&gt; WebCore/inspector/front-end/ResourceTreeModel.js:245
&gt; +    frameDetachedFromParent: function(frameId)

This is a bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>327225</commentid>
    <comment_count>9</comment_count>
      <attachid>77132</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2010-12-28 07:12:24 -0800</bug_when>
    <thetext>Comment on attachment 77132
[patch] third iteration

Committed r74709
	M	WebCore/ChangeLog
	M	WebCore/WebCore.vcproj/WebCore.vcproj
	M	WebCore/WebCore.gypi
	M	WebCore/inspector/CodeGeneratorInspector.pm
	M	WebCore/inspector/Inspector.idl
	D	WebCore/inspector/front-end/ResourceManager.js
	M	WebCore/inspector/front-end/ConsoleView.js
	M	WebCore/inspector/front-end/ScriptsPanel.js
	M	WebCore/inspector/front-end/FileSystemView.js
	M	WebCore/inspector/front-end/DOMAgent.js
	M	WebCore/inspector/front-end/NetworkItemView.js
	M	WebCore/inspector/front-end/inspector.js
	M	WebCore/inspector/front-end/CSSStyleModel.js
	M	WebCore/inspector/front-end/Database.js
	M	WebCore/inspector/front-end/DOMStorage.js
	M	WebCore/inspector/front-end/NetworkPanel.js
	A	WebCore/inspector/front-end/NetworkManager.js
	M	WebCore/inspector/front-end/ResourceView.js
	M	WebCore/inspector/front-end/ResourcesPanel.js
	M	WebCore/inspector/front-end/Resource.js
	M	WebCore/inspector/front-end/inspector.html
	M	WebCore/inspector/front-end/AuditRules.js
	A	WebCore/inspector/front-end/ResourceTreeModel.js
	M	WebCore/inspector/front-end/WebKit.qrc
W: -empty_dir: trunk/WebCore/inspector/front-end/ResourceManager.js
r74709 = ccc4092102558078160dc04d059eaae108a49e51 (refs/remotes/trunk)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>327242</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-12-28 09:05:39 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/74709 might have broken Qt Linux Release
The following tests are not passing:
http/tests/inspector-enabled/console-log-before-frame-navigation.html
http/tests/inspector/change-iframe-src.html
http/tests/inspector/console-resource-errors.html
http/tests/inspector/console-xhr-logging.html
http/tests/inspector/extensions-headers.html
http/tests/inspector/inspect-iframe-from-different-domain.html
http/tests/inspector/resource-parameters.html
inspector/console-assert.html
inspector/console-clear.html
inspector/console-command-clear.html
inspector/console-dir-global.html
inspector/console-dir.html
inspector/console-dirxml.html
inspector/console-eval-global.html
inspector/console-eval.html
inspector/console-format-collections.html
inspector/console-format.html
inspector/console-log-before-inspector-open.html
inspector/console-log-syntax-error.html
inspector/console-object-constructor-name.html
inspector/console-tests.html
inspector/console-trace-in-eval.html
inspector/console-trace.html
inspector/console-uncaught-exception-in-eval.html
inspector/console-uncaught-exception.html
inspector/cookie-parser.html
inspector/cookie-resource-match.html
inspector/debugger-autocontinue-on-syntax-error.html
inspector/debugger-suspend-active-dom-objects.html
inspector/elements-delete-inline-style.html
inspector/elements-img-tooltip.html
inspector/elements-panel-limited-children.html
inspector/elements-panel-rewrite-href.html
inspector/elements-panel-search.html
inspector/elements-panel-selection-on-refresh.html
inspector/elements-panel-styles.html
inspector/elements-panel-xhtml-structure.xhtml
inspector/evaluate-in-frontend.html
inspector/extensions-api.html
inspector/extensions-audits-api.html
inspector/extensions-audits.html
inspector/extensions-eval.html
inspector/extensions-events.html
inspector/extensions-resources.html
inspector/inspected-objects-not-overriden.html
inspector/report-API-errors.html
inspector/report-protocol-errors.html
inspector/storage-panel-dom-storage.html
inspector/styles-add-blank-property.html
inspector/styles-computed-trace.html
inspector/styles-disable-inherited.html
inspector/styles-disable-then-delete.html
inspector/styles-disable-then-enable.html
inspector/styles-iframe.html
inspector/styles-new-API.html
inspector/styles-source-lines-inline.html
inspector/styles-source-lines.html
inspector/styles-source-offsets.html
inspector/syntax-highlight-css.html
inspector/syntax-highlight-html.html
inspector/syntax-highlight-javascript.html
inspector/timeline-enum-stability.html
inspector/timeline-event-dispatch.html
inspector/timeline-mark-timeline.html
inspector/timeline-network-resource.html
inspector/timeline-script-tag-1.html
inspector/timeline-script-tag-2.html
inspector/timeline-trivial.html</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>77000</attachid>
            <date>2010-12-20 07:52:29 -0800</date>
            <delta_ts>2010-12-21 05:34:52 -0800</delta_ts>
            <desc>[patch] initial version</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>90804</size>
            <attacher name="Ilya Tikhonovsky">loislo</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBmYmM1NjY1Li4yNjgwMjc1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTAtMTIt
MjAgIElseWEgVGlraG9ub3Zza3kgIDxsb2lzbG9AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IFByb3Rv
Y29sIGNsZWFudXAgdGFzay4gSW50cm9kdWNlIE5ldHdvcmssIERPTVN0b3JhZ2UgYW5kIERhdGFi
YXNlIGRvbWFpbnMuCisKKyAgICAgICAgRG9tYWluIHdhcyBjaGFuZ2VkIGZvciBSZXNvdXJjZXMs
IEZpbGVTeXN0ZW0gZXRjLiByZWxhdGVkIG1ldGhvZHMuCisgICAgICAgIFJlc291cmNlc01hbmFn
ZXIgd2FzIHJlbmFtZWQgdG8gTmV0d29ya01hbmFnZXIuCisgICAgICAgIFJlc291cmNlVHJlZU1v
ZGVsIHdhcyBleHRyYWN0ZWQgYXMgc2VwYXJhdGUgZmlsZS4KKyAgICAgICAgRmlsZVN5c3RlbSwg
RGF0YWJhc2UsIERPTVN0b3JhZ2UgYW5kIEFwcGxpY2F0aW9uQ2FjaGUgbWV0aG9kcyB3ZXJlCisg
ICAgICAgIHJlbW92ZWQgZnJvbSBOZXR3b3JrTWFuYWdlciBhbmQgYWRkZWQgdG8gY29ycmVzcG9u
ZGluZyBjbGFzc2VzLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD01MTMzNAorCisKKyAgICAgICAgKiBpbnNwZWN0b3IvcmVwb3J0LXByb3RvY29sLWVy
cm9ycy1leHBlY3RlZC50eHQ6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBl
Y3RhdGlvbnMudHh0OgorCiAyMDEwLTEyLTIwICBDc2FiYSBPc3p0cm9nb27DoWMgIDxvc3N5QHdl
YmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZC4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2luc3BlY3Rvci9yZXBvcnQtcHJvdG9jb2wtZXJyb3JzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL2luc3BlY3Rvci9yZXBvcnQtcHJvdG9jb2wtZXJyb3JzLWV4cGVjdGVkLnR4dAppbmRleCAy
MjIxYzg0Li4wOTc5YTNjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcmVwb3J0
LXByb3RvY29sLWVycm9ycy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9y
L3JlcG9ydC1wcm90b2NvbC1lcnJvcnMtZXhwZWN0ZWQudHh0CkBAIC00NCw3ICs0NCw3IEBAIFRl
c3RzIHRoYXQgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIgaXMgY2F0Y2hpbmcgaW5jb3JyZWN0
IG1lc3NhZ2VzLgogfQogewogICAgIHNlcSA6IDIKLSAgICBkb21haW4gOiAiUmVzb3VyY2VzIgor
ICAgIGRvbWFpbiA6ICJOZXR3b3JrIgogICAgIHN1Y2Nlc3MgOiBmYWxzZQogICAgIGVycm9ycyA6
IHsKICAgICAgICAgMCA6ICJQcm90b2NvbCBFcnJvcjogJ2FyZ3VtZW50cycgcHJvcGVydHkgd2l0
aCB0eXBlICdvYmplY3QnIHdhcyBub3QgZm91bmQuIgpAQCAtNTIsNyArNTIsNyBAQCBUZXN0cyB0
aGF0IEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyIGlzIGNhdGNoaW5nIGluY29ycmVjdCBtZXNz
YWdlcy4KIH0KIHsKICAgICBzZXEgOiAzCi0gICAgZG9tYWluIDogIlJlc291cmNlcyIKKyAgICBk
b21haW4gOiAiTmV0d29yayIKICAgICBzdWNjZXNzIDogZmFsc2UKICAgICBlcnJvcnMgOiB7CiAg
ICAgICAgIDAgOiAiUHJvdG9jb2wgRXJyb3I6ICdhcmd1bWVudHMnIHByb3BlcnR5IHdpdGggdHlw
ZSAnb2JqZWN0JyB3YXMgbm90IGZvdW5kLiIKQEAgLTYwLDcgKzYwLDcgQEAgVGVzdHMgdGhhdCBJ
bnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciBpcyBjYXRjaGluZyBpbmNvcnJlY3QgbWVzc2FnZXMu
CiB9CiB7CiAgICAgc2VxIDogNAotICAgIGRvbWFpbiA6ICJSZXNvdXJjZXMiCisgICAgZG9tYWlu
IDogIk5ldHdvcmsiCiAgICAgc3VjY2VzcyA6IGZhbHNlCiAgICAgZXJyb3JzIDogewogICAgICAg
ICAwIDogIlByb3RvY29sIEVycm9yOiBBcmd1bWVudCAnZnJhbWVJZCcgd2l0aCB0eXBlICdOdW1i
ZXInIHdhcyBub3QgZm91bmQuIgpAQCAtNzAsNyArNzAsNyBAQCBUZXN0cyB0aGF0IEluc3BlY3Rv
ckJhY2tlbmREaXNwYXRjaGVyIGlzIGNhdGNoaW5nIGluY29ycmVjdCBtZXNzYWdlcy4KIH0KIHsK
ICAgICBzZXEgOiA1Ci0gICAgZG9tYWluIDogIlJlc291cmNlcyIKKyAgICBkb21haW4gOiAiTmV0
d29yayIKICAgICBzdWNjZXNzIDogZmFsc2UKICAgICBlcnJvcnMgOiB7CiAgICAgICAgIDAgOiAi
UHJvdG9jb2wgRXJyb3I6IEFyZ3VtZW50ICdmcmFtZUlkJyB3aXRoIHR5cGUgJ051bWJlcicgd2Fz
IG5vdCBmb3VuZC4iCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS90
ZXN0X2V4cGVjdGF0aW9ucy50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS90ZXN0
X2V4cGVjdGF0aW9ucy50eHQKaW5kZXggNGVjNGM0OS4uN2M4MzRkYSAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0CisrKyBiL0xh
eW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dApAQCAtNjI1
LDI4ICs2MjUsNiBAQCBXT05URklYIFNLSVAgOiBpbnNwZWN0b3IvZXh0ZW5zaW9ucy1ldmFsLmh0
bWwgPSBGQUlMCiBXT05URklYIFNLSVAgOiBpbnNwZWN0b3IvZXh0ZW5zaW9ucy1yZXNvdXJjZXMu
aHRtbCA9IFRJTUVPVVQgQ1JBU0gKIFdPTlRGSVggU0tJUCA6IGh0dHAvdGVzdHMvaW5zcGVjdG9y
L2V4dGVuc2lvbnMtaGVhZGVycy5odG1sID0gRkFJTAogCi0vLyBJbnNwZWN0b3IgdGVzdHMgaW4g
RGVidWcgYnVpbGQgYXJlIHZlcnkgc2xvdy4gIElmIHdlIHJlbW92ZSBTTE9XLCB3ZSdsbCBzZWUK
LS8vIHJhbmRvbSBUSU1FT1VUcy4gIElzIHRoaXMgaXNzdWUgRFJULXNwZWNpZmljPwotQlVHX0RS
VCBXSU4gREVCVUcgU0xPVyA6IGluc3BlY3RvciA9IFBBU1MKLUJVR19EUlQgV0lOIERFQlVHIFNM
T1cgOiBodHRwL3Rlc3RzL2luc3BlY3RvciA9IFBBU1MKLUJVR19EUlQgV0lOIERFQlVHIFNMT1cg
OiBodHRwL3Rlc3RzL2luc3BlY3Rvci1lbmFibGVkID0gUEFTUwotCi0vLyBBZGQgc3VwcG9ydCBm
b3IgaW5zcGVjdG9yIGxheW91dCB0ZXN0cyBvbiBub24tV2luZG93cy4KLUJVR0NSMjY3MzQgTElO
VVggTUFDIFNLSVAgOiBpbnNwZWN0b3IgPSBQQVNTCi1CVUdDUjI2NzM0IExJTlVYIE1BQyBTS0lQ
IDogaHR0cC90ZXN0cy9pbnNwZWN0b3IgPSBQQVNTCi1CVUdDUjI2NzM0IExJTlVYIE1BQyBTS0lQ
IDogaHR0cC90ZXN0cy9pbnNwZWN0b3ItZW5hYmxlZCA9IFBBU1MKLQotQlVHQ1I2NjA4NyBXSU4g
U0xPVyA6IGluc3BlY3Rvci9zdHlsZXMtZGlzYWJsZS10aGVuLWVuYWJsZS5odG1sID0gUEFTUyBU
RVhUCi1CVUdDUjY2MDg3IFdJTiA6IGluc3BlY3Rvci90aW1lbGluZS1sYXlvdXQuaHRtbCA9IFBB
U1MgVEVYVAotQlVHQ1I2NjA4NyBXSU4gOiBpbnNwZWN0b3IvdGltZWxpbmUtcGFyc2UtaHRtbC5o
dG1sID0gQ1JBU0ggVElNRU9VVCBQQVNTIFRFWFQKLQotQlVHX0RSVCBXSU4gOiBodHRwL3Rlc3Rz
L2luc3BlY3Rvci1lbmFibGVkL2NvbnNvbGUtbG9nLWJlZm9yZS1mcmFtZS1uYXZpZ2F0aW9uLmh0
bWwgPSBURVhUCi1CVUdfRFJUIFdJTiA6IGh0dHAvdGVzdHMvaW5zcGVjdG9yL2NoYW5nZS1pZnJh
bWUtc3JjLmh0bWwgPSBDUkFTSAotCi0vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLy8gT3RoZXIKLS8vIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
Ci0KIC8vIE1hYyBTYWZhcmkgdW5kZXIgY2VydGFpbiBjaXJjdW1zdGFuY2VzIGF1dG9tYXRpY2Fs
bHkgcGxhY2VzCiAvLyBhIGNhcmV0IGluIGVkaXRhYmxlIGRvY3VtZW50IGV2ZW4gd2hlbiBub25l
IHdhcyByZXF1ZXN0ZWQgcHJvZ3JhbWF0aWNhbGx5LgogLy8gV2UgZG9uJ3QgaW50ZW5kIHRvIGNv
cHkgdGhpcyBmZWF0dXJlIChhdCBsZWFzdCBub3QgZm9yIEJldGEpLgpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBjMThmZTkwLi4zNzA3Yjk1
IDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDExOCBAQAorMjAxMC0xMi0yMCAgSWx5YSBUaWtob25vdnNreSAgPGxvaXNsb0Bj
aHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgV2ViIEluc3BlY3RvcjogUHJvdG9jb2wgY2xlYW51cCB0YXNrLiBJbnRyb2R1Y2UgTmV0
d29yaywgRE9NU3RvcmFnZSBhbmQgRGF0YWJhc2UgZG9tYWlucy4KKworICAgICAgICBEb21haW4g
d2FzIGNoYW5nZWQgZm9yIFJlc291cmNlcywgRmlsZVN5c3RlbSBldGMuIHJlbGF0ZWQgbWV0aG9k
cy4KKyAgICAgICAgUmVzb3VyY2VzTWFuYWdlciB3YXMgcmVuYW1lZCB0byBOZXR3b3JrTWFuYWdl
ci4KKyAgICAgICAgUmVzb3VyY2VUcmVlTW9kZWwgd2FzIGV4dHJhY3RlZCBhcyBzZXBhcmF0ZSBm
aWxlLgorICAgICAgICBGaWxlU3lzdGVtLCBEYXRhYmFzZSwgRE9NU3RvcmFnZSBhbmQgQXBwbGlj
YXRpb25DYWNoZSBtZXRob2RzIHdlcmUKKyAgICAgICAgcmVtb3ZlZCBmcm9tIE5ldHdvcmtNYW5h
Z2VyIGFuZCBhZGRlZCB0byBjb3JyZXNwb25kaW5nIGNsYXNzZXMuCisKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUxMzM0CisKKyAgICAgICAgKiBXZWJD
b3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAg
ICAgICogaW5zcGVjdG9yL0NvZGVHZW5lcmF0b3JJbnNwZWN0b3IucG06CisgICAgICAgICogaW5z
cGVjdG9yL0luc3BlY3Rvci5pZGw6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9BdWRp
dFJ1bGVzLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkF1ZGl0UnVsZXMuVW51c2VkQ3NzUnVs
ZS5wcm90b3R5cGUuZG9SdW4uZXZhbENhbGxiYWNrLnNlbGVjdG9yc0NhbGxiYWNrKToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0NTU1N0eWxlTW9kZWwuanM6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuQ1NTU3R5bGVNb2RlbC5wcm90b3R5cGUuX3N0eWxlU2hlZXRDaGFuZ2VkLmNhbGxi
YWNrKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NTdHlsZU1vZGVsLnByb3RvdHlwZS5fc3R5
bGVTaGVldENoYW5nZWQpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvQ29uc29sZVZp
ZXcuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29uc29sZVZpZXcucHJvdG90eXBlLmFkZE1l
c3NhZ2UpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvbnNvbGVWaWV3LnByb3RvdHlwZS5jbGVh
ck1lc3NhZ2VzKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0RPTUFnZW50LmpzOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLkFwcGxpY2F0aW9uQ2FjaGUudXBkYXRlQXBwbGljYXRpb25D
YWNoZVN0YXR1cyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQXBwbGljYXRpb25DYWNoZS51cGRh
dGVOZXR3b3JrU3RhdGUpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvRE9NU3RvcmFn
ZS5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5ET01TdG9yYWdlLmFkZERPTVN0b3JhZ2UpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2Uuc2VsZWN0RE9NU3RvcmFnZSk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuRE9NU3RvcmFnZS51cGRhdGVET01TdG9yYWdlKToKKyAgICAgICAg
KiBpbnNwZWN0b3IvZnJvbnQtZW5kL0RhdGFiYXNlLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LkRhdGFiYXNlLmFkZERhdGFiYXNlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EYXRhYmFzZS5z
ZWxlY3REYXRhYmFzZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGF0YWJhc2Uuc3FsVHJhbnNh
Y3Rpb25TdWNjZWVkZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRhdGFiYXNlLnNxbFRyYW5z
YWN0aW9uRmFpbGVkKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0ZpbGVTeXN0ZW1W
aWV3LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW0uZGlkR2V0RmlsZVN5c3Rl
bVBhdGgpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW0uZGlkR2V0RmlsZVN5c3Rl
bUVycm9yKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtLmRpZEdldEZpbGVTeXN0
ZW1EaXNhYmxlZCk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9OZXR3b3JrSXRlbVZp
ZXcuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTmV0d29ya0l0ZW1WaWV3KToKKyAgICAgICAg
KiBpbnNwZWN0b3IvZnJvbnQtZW5kL05ldHdvcmtNYW5hZ2VyLmpzOiBBZGRlZC4KKyAgICAgICAg
KFdlYkluc3BlY3Rvci5OZXR3b3JrTWFuYWdlcik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTmV0
d29ya01hbmFnZXIucHJvdG90eXBlLmlkZW50aWZpZXJGb3JJbml0aWFsUmVxdWVzdCk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuTmV0d29ya01hbmFnZXIucHJvdG90eXBlLl9jcmVhdGVSZXNvdXJj
ZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTmV0d29ya01hbmFnZXIucHJvdG90eXBlLndpbGxT
ZW5kUmVxdWVzdCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTmV0d29ya01hbmFnZXIucHJvdG90
eXBlLl91cGRhdGVSZXNvdXJjZVdpdGhSZXF1ZXN0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5O
ZXR3b3JrTWFuYWdlci5wcm90b3R5cGUuX2FwcGVuZFJlZGlyZWN0KToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5OZXR3b3JrTWFuYWdlci5wcm90b3R5cGUubWFya1Jlc291cmNlQXNDYWNoZWQpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLk5ldHdvcmtNYW5hZ2VyLnByb3RvdHlwZS5kaWRSZWNlaXZl
UmVzcG9uc2UpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk5ldHdvcmtNYW5hZ2VyLnByb3RvdHlw
ZS5fdXBkYXRlUmVzb3VyY2VXaXRoUmVzcG9uc2UpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk5l
dHdvcmtNYW5hZ2VyLnByb3RvdHlwZS5kaWRSZWNlaXZlQ29udGVudExlbmd0aCk6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuTmV0d29ya01hbmFnZXIucHJvdG90eXBlLmRpZEZpbmlzaExvYWRpbmcp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLk5ldHdvcmtNYW5hZ2VyLnByb3RvdHlwZS5kaWRGYWls
TG9hZGluZyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTmV0d29ya01hbmFnZXIucHJvdG90eXBl
LmRpZExvYWRSZXNvdXJjZUZyb21NZW1vcnlDYWNoZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
TmV0d29ya01hbmFnZXIucHJvdG90eXBlLl91cGRhdGVSZXNvdXJjZVdpdGhDYWNoZWRSZXNvdXJj
ZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTmV0d29ya01hbmFnZXIucHJvdG90eXBlLnNldElu
aXRpYWxDb250ZW50KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5OZXR3b3JrTWFuYWdlci5wcm90
b3R5cGUuZGlkQ29tbWl0TG9hZEZvckZyYW1lKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5OZXR3
b3JrTWFuYWdlci5wcm90b3R5cGUuZnJhbWVEZXRhY2hlZEZyb21QYXJlbnQpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLk5ldHdvcmtNYW5hZ2VyLnByb3RvdHlwZS5kaWRDcmVhdGVXZWJTb2NrZXQp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLk5ldHdvcmtNYW5hZ2VyLnByb3RvdHlwZS53aWxsU2Vu
ZFdlYlNvY2tldEhhbmRzaGFrZVJlcXVlc3QpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk5ldHdv
cmtNYW5hZ2VyLnByb3RvdHlwZS5kaWRSZWNlaXZlV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2Up
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLk5ldHdvcmtNYW5hZ2VyLnByb3RvdHlwZS5kaWRDbG9z
ZVdlYlNvY2tldCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTmV0d29ya01hbmFnZXIucHJvdG90
eXBlLl9wcm9jZXNzQ2FjaGVkUmVzb3VyY2VzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5OZXR3
b3JrTWFuYWdlci5wcm90b3R5cGUuX2FkZEZyYW1lc1JlY3Vyc2l2ZWx5KToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5OZXR3b3JrTWFuYWdlci5wcm90b3R5cGUucmVzb3VyY2VGb3JVUkwpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLk5ldHdvcmtNYW5hZ2VyLnByb3RvdHlwZS5hZGRDb25zb2xlTWVz
c2FnZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTmV0d29ya01hbmFnZXIucHJvdG90eXBlLmNs
ZWFyQ29uc29sZU1lc3NhZ2VzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5OZXR3b3JrTWFuYWdl
ci5wcm90b3R5cGUuZm9yQWxsUmVzb3VyY2VzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5OZXR3
b3JrTWFuYWdlci5wcm90b3R5cGUuX2JpbmRSZXNvdXJjZVVSTCk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuTmV0d29ya01hbmFnZXIucHJvdG90eXBlLnVuYmluZFJlc291cmNlVVJMKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5OZXR3b3JrTWFuYWdlci5yZXF1ZXN0Q29udGVudCk6CisgICAgICAg
ICogaW5zcGVjdG9yL2Zyb250LWVuZC9OZXR3b3JrUGFuZWwuanM6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuTmV0d29ya1BhbmVsLnByb3RvdHlwZS5yZWZyZXNoUmVzb3VyY2UpOgorICAgICAgICAq
IGluc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2UuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
UmVzb3VyY2UucHJvdG90eXBlLl9pbm5lclJlcXVlc3RDb250ZW50KToKKyAgICAgICAgKiBpbnNw
ZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlTWFuYWdlci5qczogUmVtb3ZlZC4KKyAgICAgICAgKiBp
bnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlVHJlZU1vZGVsLmpzOiBBZGRlZC4KKyAgICAgICAg
KFdlYkluc3BlY3Rvci5SZXNvdXJjZVRyZWVNb2RlbCk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
UmVzb3VyY2VUcmVlTW9kZWwucHJvdG90eXBlLmFkZE9yVXBkYXRlRnJhbWUpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLlJlc291cmNlVHJlZU1vZGVsLnByb3RvdHlwZS5kaWRDb21taXRMb2FkRm9y
RnJhbWUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNlVHJlZU1vZGVsLnByb3RvdHlw
ZS5mcmFtZURldGFjaGVkRnJvbVBhcmVudCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVzb3Vy
Y2VUcmVlTW9kZWwucHJvdG90eXBlLl9jbGVhckNoaWxkRnJhbWVzQW5kUmVzb3VyY2VzKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5SZXNvdXJjZVRyZWVNb2RlbC5wcm90b3R5cGUuYWRkUmVzb3Vy
Y2VUb0ZyYW1lKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SZXNvdXJjZVRyZWVNb2RlbC5wcm90
b3R5cGUuX2NsZWFyUmVzb3VyY2VzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SZXNvdXJjZVRy
ZWVNb2RlbC5wcm90b3R5cGUuZm9yQWxsUmVzb3VyY2VzKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5SZXNvdXJjZVRyZWVNb2RlbC5wcm90b3R5cGUuX2NhbGxGb3JGcmFtZVJlc291cmNlcyk6Cisg
ICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZVZpZXcuanM6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuUmVzb3VyY2VWaWV3LmNyZWF0ZVJlc291cmNlVmlldyk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuUmVzb3VyY2VWaWV3LnJlc291cmNlVmlld1R5cGVNYXRjaGVzUmVzb3VyY2Up
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNlVmlldy5yZXNvdXJjZVZpZXdGb3JSZXNv
dXJjZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVzb3VyY2VWaWV3LnJlY3JlYXRlUmVzb3Vy
Y2VWaWV3KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SZXNvdXJjZVZpZXcuZXhpc3RpbmdSZXNv
dXJjZVZpZXdGb3JSZXNvdXJjZSk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNv
dXJjZXNQYW5lbC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SZXNvdXJjZXNQYW5lbC5wcm90
b3R5cGUuY2FuU2hvd1NvdXJjZUxpbmUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNl
c1BhbmVsLnByb3RvdHlwZS5zaG93U291cmNlTGluZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
UmVzb3VyY2VzUGFuZWwucHJvdG90eXBlLnNob3dSZXNvdXJjZSk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuUmVzb3VyY2VzUGFuZWwucHJvdG90eXBlLmdldCBzZWFyY2hhYmxlVmlld3MuY2FsbGJh
Y2spOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNlc1BhbmVsLnByb3RvdHlwZS5nZXQg
c2VhcmNoYWJsZVZpZXdzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5GcmFtZVJlc291cmNlVHJl
ZUVsZW1lbnQucHJvdG90eXBlLl9lcnJvcnNXYXJuaW5nc1VwZGF0ZWQpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLkZyYW1lUmVzb3VyY2VUcmVlRWxlbWVudC5wcm90b3R5cGUuX2NvbnRlbnRDaGFu
Z2VkKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1NjcmlwdHNQYW5lbC5qczoKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5TY3JpcHRzUGFuZWwucHJvdG90eXBlLl9hZGRTY3JpcHQpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5lbC5wcm90b3R5cGUucmVzZXQpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5lbC5wcm90b3R5cGUuX3NvdXJjZUZyYW1lRm9y
UmVzb3VyY2UpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5lbC5wcm90b3R5cGUu
X3Nob3dTY3JpcHRPclJlc291cmNlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1dl
YktpdC5xcmM6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuaHRtbDoK
KyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5qczoKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5mb3JBbGxSZXNvdXJjZXMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLnJlc291
cmNlRm9yVVJMKToKKwogMjAxMC0xMi0yMCAgWXVyeSBTZW1pa2hhdHNreSAgPHl1cnlzQGNocm9t
aXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBQYXZlbCBGZWxkbWFuLgpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCBmY2E4
Y2ZjLi40NjZkNDg5IDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9XZWJD
b3JlL1dlYkNvcmUuZ3lwaQpAQCAtNDY0Nyw2ICs0NjQ3LDcgQEAKICAgICAgICAgICAgICdpbnNw
ZWN0b3IvZnJvbnQtZW5kL0tleWJvYXJkU2hvcnRjdXQuanMnLAogICAgICAgICAgICAgJ2luc3Bl
Y3Rvci9mcm9udC1lbmQvTWV0cmljc1NpZGViYXJQYW5lLmpzJywKICAgICAgICAgICAgICdpbnNw
ZWN0b3IvZnJvbnQtZW5kL05ldHdvcmtJdGVtVmlldy5qcycsCisgICAgICAgICAgICAnaW5zcGVj
dG9yL2Zyb250LWVuZC9OZXR3b3JrTWFuYWdlci5qcycsCiAgICAgICAgICAgICAnaW5zcGVjdG9y
L2Zyb250LWVuZC9OZXR3b3JrUGFuZWwuanMnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9u
dC1lbmQvT2JqZWN0LmpzJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL09iamVj
dFByb3BlcnRpZXNTZWN0aW9uLmpzJywKQEAgLTQ2NjMsOSArNDY2NCw5IEBACiAgICAgICAgICAg
ICAnaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZS5qcycsCiAgICAgICAgICAgICAnaW5zcGVj
dG9yL2Zyb250LWVuZC9SZXNvdXJjZUNhdGVnb3J5LmpzJywKICAgICAgICAgICAgICdpbnNwZWN0
b3IvZnJvbnQtZW5kL1Jlc291cmNlQ29va2llc1ZpZXcuanMnLAotICAgICAgICAgICAgJ2luc3Bl
Y3Rvci9mcm9udC1lbmQvUmVzb3VyY2VNYW5hZ2VyLmpzJywKICAgICAgICAgICAgICdpbnNwZWN0
b3IvZnJvbnQtZW5kL1Jlc291cmNlSGVhZGVyc1ZpZXcuanMnLAogICAgICAgICAgICAgJ2luc3Bl
Y3Rvci9mcm9udC1lbmQvUmVzb3VyY2VUaW1pbmdWaWV3LmpzJywKKyAgICAgICAgICAgICdpbnNw
ZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlVHJlZU1vZGVsLmpzJywKICAgICAgICAgICAgICdpbnNw
ZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlVmlldy5qcycsCiAgICAgICAgICAgICAnaW5zcGVjdG9y
L2Zyb250LWVuZC9SZXNvdXJjZXNQYW5lbC5qcycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zy
b250LWVuZC9TY29wZUNoYWluU2lkZWJhclBhbmUuanMnLApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9X
ZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvaiBiL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2Vi
Q29yZS52Y3Byb2oKaW5kZXggMzIzZTUyNi4uZWRlMTRiMiAxMDA3NTUKLS0tIGEvV2ViQ29yZS9X
ZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagorKysgYi9XZWJDb3JlL1dlYkNvcmUudmNwcm9q
L1dlYkNvcmUudmNwcm9qCkBAIC02NTU0OSw2ICs2NTU0OSwxMCBAQAogCQkJCQk+CiAJCQkJPC9G
aWxlPgogCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5caW5zcGVjdG9yXGZyb250LWVu
ZFxOZXR3b3JrTWFuYWdlci5qcyIKKwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQogCQkJ
CQlSZWxhdGl2ZVBhdGg9Ii4uXGluc3BlY3Rvclxmcm9udC1lbmRcbmV0d29ya1BhbmVsLmNzcyIK
IAkJCQkJPgogCQkJCTwvRmlsZT4KQEAgLTY1NjI1LDE1ICs2NTYyOSwxNSBAQAogCQkJCQk+CiAJ
CQkJPC9GaWxlPgogCQkJCTxGaWxlCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5caW5zcGVjdG9yXGZy
b250LWVuZFxSZXNvdXJjZU1hbmFnZXIuanMiCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5caW5zcGVj
dG9yXGZyb250LWVuZFxSZXNvdXJjZXNQYW5lbC5qcyIKIAkJCQkJPgogCQkJCTwvRmlsZT4KIAkJ
CQk8RmlsZQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGluc3BlY3Rvclxmcm9udC1lbmRcUmVzb3Vy
Y2VzUGFuZWwuanMiCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5caW5zcGVjdG9yXGZyb250LWVuZFxS
ZXNvdXJjZVRpbWluZ1ZpZXcuanMiCiAJCQkJCT4KIAkJCQk8L0ZpbGU+CiAJCQkJPEZpbGUKLQkJ
CQkJUmVsYXRpdmVQYXRoPSIuLlxpbnNwZWN0b3JcZnJvbnQtZW5kXFJlc291cmNlVGltaW5nVmll
dy5qcyIKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxpbnNwZWN0b3JcZnJvbnQtZW5kXFJlc291cmNl
VHJlZU1vZGVsLmpzIgogCQkJCQk+CiAJCQkJPC9GaWxlPgogCQkJCTxGaWxlCmRpZmYgLS1naXQg
YS9XZWJDb3JlL2luc3BlY3Rvci9Db2RlR2VuZXJhdG9ySW5zcGVjdG9yLnBtIGIvV2ViQ29yZS9p
bnNwZWN0b3IvQ29kZUdlbmVyYXRvckluc3BlY3Rvci5wbQppbmRleCBlOTYwZWQ2Li45NWY3ZThm
IDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9Db2RlR2VuZXJhdG9ySW5zcGVjdG9yLnBt
CisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL0NvZGVHZW5lcmF0b3JJbnNwZWN0b3IucG0KQEAgLTMz
LDYgKzMzLDIwIEBAICR0eXBlVHJhbnNmb3JteyJSZXNvdXJjZXMifSA9IHsKICAgICAiaGVhZGVy
IiA9PiAiSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5oIiwKICAgICAiZG9tYWluQWNjZXNzb3IiID0+
ICJtX2luc3BlY3RvckNvbnRyb2xsZXItPm1fcmVzb3VyY2VBZ2VudCIsCiB9OworJHR5cGVUcmFu
c2Zvcm17Ik5ldHdvcmsifSA9IHsKKyAgICAiZm9yd2FyZCIgPT4gIkluc3BlY3RvclJlc291cmNl
QWdlbnQiLAorICAgICJoZWFkZXIiID0+ICJJbnNwZWN0b3JSZXNvdXJjZUFnZW50LmgiLAorICAg
ICJkb21haW5BY2Nlc3NvciIgPT4gIm1faW5zcGVjdG9yQ29udHJvbGxlci0+bV9yZXNvdXJjZUFn
ZW50IiwKK307CiskdHlwZVRyYW5zZm9ybXsiRE9NU3RvcmFnZSJ9ID0geworICAgICJmb3J3YXJk
SGVhZGVyIiA9PiAiSW5zcGVjdG9yQ29udHJvbGxlci5oIiwKKyAgICAiZG9tYWluQWNjZXNzb3Ii
ID0+ICJtX2luc3BlY3RvckNvbnRyb2xsZXIiLAorfTsKKyR0eXBlVHJhbnNmb3JteyJEYXRhYmFz
ZSJ9ID0geworICAgICJmb3J3YXJkIiA9PiAiSW5zcGVjdG9yQmFja2VuZCIsCisgICAgImhlYWRl
ciIgPT4gIkluc3BlY3RvckJhY2tlbmQuaCIsCisgICAgImRvbWFpbkFjY2Vzc29yIiA9PiAibV9p
bnNwZWN0b3JDb250cm9sbGVyLT5pbnNwZWN0b3JCYWNrZW5kKCkiLAorfTsKICR0eXBlVHJhbnNm
b3JteyJET00ifSA9IHsKICAgICAiZm9yd2FyZCIgPT4gIkluc3BlY3RvckRPTUFnZW50IiwKICAg
ICAiaGVhZGVyIiA9PiAiSW5zcGVjdG9yRE9NQWdlbnQuaCIsCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3IuaWRsIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmlk
bAppbmRleCAxMmU3MjNkLi5iZmY1NzQ0IDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3IuaWRsCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5pZGwKQEAgLTY3
LDYgKzY3LDggQEAgbW9kdWxlIGNvcmUgewogICAgICAgICBbZG9tYWluPUluc3BlY3Rvcl0gdm9p
ZCBoaWRlRnJhbWVIaWdobGlnaHQoKTsKICAgICAgICAgW25vdGlmeSwgZG9tYWluPUluc3BlY3Rv
cl0gdm9pZCB1cGRhdGVGb2N1c2VkTm9kZShvdXQgbG9uZyBub2RlSWQpOwogCisgICAgICAgIFtk
b21haW49SW5zcGVjdG9yXSB2b2lkIHNldEV4dHJhSGVhZGVycyhpbiBPYmplY3QgaGVhZGVycyk7
CisKICAgICAgICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KICAgICAgICAgLy8gQ29uc29sZSBBUEkKICAgICAg
ICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8KQEAgLTgyLDY0ICs4NCw1NyBAQCBtb2R1bGUgY29yZSB7CiAgICAg
ICAgIC8vIFJlc291cmNlcyBBUEkKICAgICAgICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KIAotICAgICAgICAv
LyBGSVhNRTogTmV0d29yayBkb21haW4KLSAgICAgICAgW25vdGlmeSwgZG9tYWluPVJlc291cmNl
c10gdm9pZCBpZGVudGlmaWVyRm9ySW5pdGlhbFJlcXVlc3Qob3V0IGxvbmcgaWRlbnRpZmllciwg
b3V0IFN0cmluZyB1cmwsIG91dCBPYmplY3QgbG9hZGVyLCBvdXQgVmFsdWUgY2FsbFN0YWNrKTsK
LSAgICAgICAgW25vdGlmeSwgZG9tYWluPVJlc291cmNlc10gdm9pZCB3aWxsU2VuZFJlcXVlc3Qo
b3V0IGxvbmcgaWRlbnRpZmllciwgb3V0IGRvdWJsZSB0aW1lLCBvdXQgT2JqZWN0IHJlcXVlc3Qs
IG91dCBPYmplY3QgcmVkaXJlY3RSZXNwb25zZSk7Ci0gICAgICAgIFtub3RpZnksIGRvbWFpbj1S
ZXNvdXJjZXNdIHZvaWQgbWFya1Jlc291cmNlQXNDYWNoZWQob3V0IGxvbmcgaWRlbnRpZmllcik7
Ci0gICAgICAgIFtub3RpZnksIGRvbWFpbj1SZXNvdXJjZXNdIHZvaWQgZGlkUmVjZWl2ZVJlc3Bv
bnNlKG91dCBsb25nIGlkZW50aWZpZXIsIG91dCBkb3VibGUgdGltZSwgb3V0IFN0cmluZyByZXNv
dXJjZVR5cGUsIG91dCBPYmplY3QgcmVzcG9uc2UpOwotICAgICAgICBbbm90aWZ5LCBkb21haW49
UmVzb3VyY2VzXSB2b2lkIGRpZFJlY2VpdmVDb250ZW50TGVuZ3RoKG91dCBsb25nIGlkZW50aWZp
ZXIsIG91dCBkb3VibGUgdGltZSwgb3V0IGxvbmcgbGVuZ3RoUmVjZWl2ZWQpOwotICAgICAgICBb
bm90aWZ5LCBkb21haW49UmVzb3VyY2VzXSB2b2lkIGRpZEZpbmlzaExvYWRpbmcob3V0IGxvbmcg
aWRlbnRpZmllciwgb3V0IGRvdWJsZSBmaW5pc2hUaW1lKTsKLSAgICAgICAgW25vdGlmeSwgZG9t
YWluPVJlc291cmNlc10gdm9pZCBkaWRGYWlsTG9hZGluZyhvdXQgbG9uZyBpZGVudGlmaWVyLCBv
dXQgZG91YmxlIHRpbWUsIG91dCBTdHJpbmcgbG9jYWxpemVkRGVzY3JpcHRpb24pOwotICAgICAg
ICBbbm90aWZ5LCBkb21haW49UmVzb3VyY2VzXSB2b2lkIGRpZExvYWRSZXNvdXJjZUZyb21NZW1v
cnlDYWNoZShvdXQgZG91YmxlIHRpbWUsIG91dCBPYmplY3QgcmVzb3VyY2UpOwotICAgICAgICBb
bm90aWZ5LCBkb21haW49UmVzb3VyY2VzXSB2b2lkIHNldEluaXRpYWxDb250ZW50KG91dCBsb25n
IGlkZW50aWZpZXIsIG91dCBTdHJpbmcgc291cmNlU3RyaW5nLCBvdXQgU3RyaW5nIHR5cGUpOwot
ICAgICAgICBbbm90aWZ5LCBkb21haW49UmVzb3VyY2VzXSB2b2lkIGRpZENvbW1pdExvYWRGb3JG
cmFtZShvdXQgT2JqZWN0IGZyYW1lLCBvdXQgT2JqZWN0IGxvYWRlcik7Ci0gICAgICAgIFtub3Rp
ZnksIGRvbWFpbj1SZXNvdXJjZXNdIHZvaWQgZnJhbWVEZXRhY2hlZEZyb21QYXJlbnQob3V0IHVu
c2lnbmVkIGxvbmcgZnJhbWVJZCk7CisgICAgICAgIFtub3RpZnksIGRvbWFpbj1OZXR3b3JrXSB2
b2lkIGlkZW50aWZpZXJGb3JJbml0aWFsUmVxdWVzdChvdXQgbG9uZyBpZGVudGlmaWVyLCBvdXQg
U3RyaW5nIHVybCwgb3V0IE9iamVjdCBsb2FkZXIsIG91dCBWYWx1ZSBjYWxsU3RhY2spOworICAg
ICAgICBbbm90aWZ5LCBkb21haW49TmV0d29ya10gdm9pZCB3aWxsU2VuZFJlcXVlc3Qob3V0IGxv
bmcgaWRlbnRpZmllciwgb3V0IGRvdWJsZSB0aW1lLCBvdXQgT2JqZWN0IHJlcXVlc3QsIG91dCBP
YmplY3QgcmVkaXJlY3RSZXNwb25zZSk7CisgICAgICAgIFtub3RpZnksIGRvbWFpbj1OZXR3b3Jr
XSB2b2lkIG1hcmtSZXNvdXJjZUFzQ2FjaGVkKG91dCBsb25nIGlkZW50aWZpZXIpOworICAgICAg
ICBbbm90aWZ5LCBkb21haW49TmV0d29ya10gdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2Uob3V0IGxv
bmcgaWRlbnRpZmllciwgb3V0IGRvdWJsZSB0aW1lLCBvdXQgU3RyaW5nIHJlc291cmNlVHlwZSwg
b3V0IE9iamVjdCByZXNwb25zZSk7CisgICAgICAgIFtub3RpZnksIGRvbWFpbj1OZXR3b3JrXSB2
b2lkIGRpZFJlY2VpdmVDb250ZW50TGVuZ3RoKG91dCBsb25nIGlkZW50aWZpZXIsIG91dCBkb3Vi
bGUgdGltZSwgb3V0IGxvbmcgbGVuZ3RoUmVjZWl2ZWQpOworICAgICAgICBbbm90aWZ5LCBkb21h
aW49TmV0d29ya10gdm9pZCBkaWRGaW5pc2hMb2FkaW5nKG91dCBsb25nIGlkZW50aWZpZXIsIG91
dCBkb3VibGUgZmluaXNoVGltZSk7CisgICAgICAgIFtub3RpZnksIGRvbWFpbj1OZXR3b3JrXSB2
b2lkIGRpZEZhaWxMb2FkaW5nKG91dCBsb25nIGlkZW50aWZpZXIsIG91dCBkb3VibGUgdGltZSwg
b3V0IFN0cmluZyBsb2NhbGl6ZWREZXNjcmlwdGlvbik7CisgICAgICAgIFtub3RpZnksIGRvbWFp
bj1OZXR3b3JrXSB2b2lkIGRpZExvYWRSZXNvdXJjZUZyb21NZW1vcnlDYWNoZShvdXQgZG91Ymxl
IHRpbWUsIG91dCBPYmplY3QgcmVzb3VyY2UpOworICAgICAgICBbbm90aWZ5LCBkb21haW49TmV0
d29ya10gdm9pZCBzZXRJbml0aWFsQ29udGVudChvdXQgbG9uZyBpZGVudGlmaWVyLCBvdXQgU3Ry
aW5nIHNvdXJjZVN0cmluZywgb3V0IFN0cmluZyB0eXBlKTsKKyAgICAgICAgW25vdGlmeSwgZG9t
YWluPU5ldHdvcmtdIHZvaWQgZGlkQ29tbWl0TG9hZEZvckZyYW1lKG91dCBPYmplY3QgZnJhbWUs
IG91dCBPYmplY3QgbG9hZGVyKTsKKyAgICAgICAgW25vdGlmeSwgZG9tYWluPU5ldHdvcmtdIHZv
aWQgZnJhbWVEZXRhY2hlZEZyb21QYXJlbnQob3V0IHVuc2lnbmVkIGxvbmcgZnJhbWVJZCk7CiAg
ICAgICAgCi0gICAgICAgIFtkb21haW49SW5zcGVjdG9yXSB2b2lkIHNldEV4dHJhSGVhZGVycyhp
biBPYmplY3QgaGVhZGVycyk7CisgICAgICAgIFtkb21haW49TmV0d29ya10gdm9pZCBjYWNoZWRS
ZXNvdXJjZXMob3V0IE9iamVjdCByZXNvdXJjZXMpOworICAgICAgICBbZG9tYWluPU5ldHdvcmtd
IHZvaWQgcmVzb3VyY2VDb250ZW50KGluIHVuc2lnbmVkIGxvbmcgZnJhbWVJZCwgaW4gU3RyaW5n
IHVybCwgaW4gYm9vbGVhbiBiYXNlNjRFbmNvZGUsIG91dCBTdHJpbmcgY29udGVudCk7CiAKLSAg
ICAgICAgW2RvbWFpbj1SZXNvdXJjZXNdIHZvaWQgY2FjaGVkUmVzb3VyY2VzKG91dCBPYmplY3Qg
cmVzb3VyY2VzKTsKLSAgICAgICAgW2RvbWFpbj1SZXNvdXJjZXNdIHZvaWQgcmVzb3VyY2VDb250
ZW50KGluIHVuc2lnbmVkIGxvbmcgZnJhbWVJZCwgaW4gU3RyaW5nIHVybCwgaW4gYm9vbGVhbiBi
YXNlNjRFbmNvZGUsIG91dCBTdHJpbmcgY29udGVudCk7Ci0KLSAgICAgICAgW25vdGlmeSwgZG9t
YWluPVJlc291cmNlc10gdm9pZCBkaWRDcmVhdGVXZWJTb2NrZXQob3V0IHVuc2lnbmVkIGxvbmcg
aWRlbnRpZmllciwgb3V0IFN0cmluZyByZXF1ZXN0VVJMKTsKLSAgICAgICAgW25vdGlmeSwgZG9t
YWluPVJlc291cmNlc10gdm9pZCB3aWxsU2VuZFdlYlNvY2tldEhhbmRzaGFrZVJlcXVlc3Qob3V0
IHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgb3V0IGRvdWJsZSB0aW1lLCBvdXQgT2JqZWN0IHJl
cXVlc3QpOwotICAgICAgICBbbm90aWZ5LCBkb21haW49UmVzb3VyY2VzXSB2b2lkIGRpZFJlY2Vp
dmVXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZShvdXQgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVy
LCBvdXQgZG91YmxlIHRpbWUsIG91dCBPYmplY3QgcmVzcG9uc2UpOwotICAgICAgICBbbm90aWZ5
LCBkb21haW49UmVzb3VyY2VzXSB2b2lkIGRpZENsb3NlV2ViU29ja2V0KG91dCB1bnNpZ25lZCBs
b25nIGlkZW50aWZpZXIsIG91dCBkb3VibGUgdGltZSk7CisgICAgICAgIFtub3RpZnksIGRvbWFp
bj1OZXR3b3JrXSB2b2lkIGRpZENyZWF0ZVdlYlNvY2tldChvdXQgdW5zaWduZWQgbG9uZyBpZGVu
dGlmaWVyLCBvdXQgU3RyaW5nIHJlcXVlc3RVUkwpOworICAgICAgICBbbm90aWZ5LCBkb21haW49
TmV0d29ya10gdm9pZCB3aWxsU2VuZFdlYlNvY2tldEhhbmRzaGFrZVJlcXVlc3Qob3V0IHVuc2ln
bmVkIGxvbmcgaWRlbnRpZmllciwgb3V0IGRvdWJsZSB0aW1lLCBvdXQgT2JqZWN0IHJlcXVlc3Qp
OworICAgICAgICBbbm90aWZ5LCBkb21haW49TmV0d29ya10gdm9pZCBkaWRSZWNlaXZlV2ViU29j
a2V0SGFuZHNoYWtlUmVzcG9uc2Uob3V0IHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgb3V0IGRv
dWJsZSB0aW1lLCBvdXQgT2JqZWN0IHJlc3BvbnNlKTsKKyAgICAgICAgW25vdGlmeSwgZG9tYWlu
PU5ldHdvcmtdIHZvaWQgZGlkQ2xvc2VXZWJTb2NrZXQob3V0IHVuc2lnbmVkIGxvbmcgaWRlbnRp
Zmllciwgb3V0IGRvdWJsZSB0aW1lKTsKIAogICAgICAgICAvLyBGSVhNRTogSW50cm9kdWNlIG5l
dyBTdG9yYWdlRG9tYWluLgogICAgICAgICBbZG9tYWluPUluc3BlY3Rvcl0gdm9pZCBnZXRDb29r
aWVzKG91dCBBcnJheSBjb29raWVzLCBvdXQgU3RyaW5nIGNvb2tpZXNTdHJpbmcpOwogICAgICAg
ICBbZG9tYWluPUluc3BlY3Rvcl0gdm9pZCBkZWxldGVDb29raWUoaW4gU3RyaW5nIGNvb2tpZU5h
bWUsIGluIFN0cmluZyBkb21haW4pOwogI2lmIGRlZmluZWQoRU5BQkxFX0RBVEFCQVNFKSAmJiBF
TkFCTEVfREFUQUJBU0UKLSAgICAgICAgW25vdGlmeSwgZG9tYWluPVJlc291cmNlc10gdm9pZCBh
ZGREYXRhYmFzZShvdXQgT2JqZWN0IGRhdGFiYXNlKTsKLSAgICAgICAgW25vdGlmeSwgZG9tYWlu
PVJlc291cmNlc10gdm9pZCBzZWxlY3REYXRhYmFzZShvdXQgaW50IGRhdGFiYXNlSWQpOwotICAg
ICAgICBbZG9tYWluPUJhY2tlbmRdIHZvaWQgZ2V0RGF0YWJhc2VUYWJsZU5hbWVzKGluIGxvbmcg
ZGF0YWJhc2VJZCwgb3V0IEFycmF5IHRhYmxlTmFtZXMpOwotICAgICAgICBbZG9tYWluPUJhY2tl
bmRdIHZvaWQgZXhlY3V0ZVNRTChpbiBsb25nIGRhdGFiYXNlSWQsIGluIFN0cmluZyBxdWVyeSwg
b3V0IGJvb2xlYW4gc3VjY2Vzcywgb3V0IGxvbmcgdHJhbnNhY3Rpb25JZCk7Ci0gICAgICAgIFtu
b3RpZnksIGRvbWFpbj1SZXNvdXJjZXNdIHZvaWQgc3FsVHJhbnNhY3Rpb25TdWNjZWVkZWQob3V0
IGxvbmcgdHJhbnNhY3Rpb25JZCwgb3V0IFZhbHVlIGNvbHVtbk5hbWVzLCBvdXQgVmFsdWUgdmFs
dWVzKTsKLSAgICAgICAgW25vdGlmeSwgZG9tYWluPVJlc291cmNlc10gdm9pZCBzcWxUcmFuc2Fj
dGlvbkZhaWxlZChvdXQgbG9uZyB0cmFuc2FjdGlvbklkLCBvdXQgVmFsdWUgc3FsRXJyb3IpOwor
ICAgICAgICBbbm90aWZ5LCBkb21haW49RGF0YWJhc2VdIHZvaWQgYWRkRGF0YWJhc2Uob3V0IE9i
amVjdCBkYXRhYmFzZSk7CisgICAgICAgIFtub3RpZnksIGRvbWFpbj1EYXRhYmFzZV0gdm9pZCBz
ZWxlY3REYXRhYmFzZShvdXQgaW50IGRhdGFiYXNlSWQpOworICAgICAgICBbZG9tYWluPURhdGFi
YXNlXSB2b2lkIGdldERhdGFiYXNlVGFibGVOYW1lcyhpbiBsb25nIGRhdGFiYXNlSWQsIG91dCBB
cnJheSB0YWJsZU5hbWVzKTsKKyAgICAgICAgW2RvbWFpbj1EYXRhYmFzZV0gdm9pZCBleGVjdXRl
U1FMKGluIGxvbmcgZGF0YWJhc2VJZCwgaW4gU3RyaW5nIHF1ZXJ5LCBvdXQgYm9vbGVhbiBzdWNj
ZXNzLCBvdXQgbG9uZyB0cmFuc2FjdGlvbklkKTsKKyAgICAgICAgW25vdGlmeSwgZG9tYWluPURh
dGFiYXNlXSB2b2lkIHNxbFRyYW5zYWN0aW9uU3VjY2VlZGVkKG91dCBsb25nIHRyYW5zYWN0aW9u
SWQsIG91dCBWYWx1ZSBjb2x1bW5OYW1lcywgb3V0IFZhbHVlIHZhbHVlcyk7CisgICAgICAgIFtu
b3RpZnksIGRvbWFpbj1EYXRhYmFzZV0gdm9pZCBzcWxUcmFuc2FjdGlvbkZhaWxlZChvdXQgbG9u
ZyB0cmFuc2FjdGlvbklkLCBvdXQgVmFsdWUgc3FsRXJyb3IpOwogI2VuZGlmCiAjaWYgZGVmaW5l
ZChFTkFCTEVfRE9NX1NUT1JBR0UpICYmIEVOQUJMRV9ET01fU1RPUkFHRQotICAgICAgICBbZG9t
YWluPUluc3BlY3Rvcl0gdm9pZCBnZXRET01TdG9yYWdlRW50cmllcyhpbiBsb25nIHN0b3JhZ2VJ
ZCwgb3V0IEFycmF5IGVudHJpZXMpOwotICAgICAgICBbZG9tYWluPUluc3BlY3Rvcl0gdm9pZCBz
ZXRET01TdG9yYWdlSXRlbShpbiBsb25nIHN0b3JhZ2VJZCwgaW4gU3RyaW5nIGtleSwgaW4gU3Ry
aW5nIHZhbHVlLCBvdXQgYm9vbGVhbiBzdWNjZXNzKTsKLSAgICAgICAgW2RvbWFpbj1JbnNwZWN0
b3JdIHZvaWQgcmVtb3ZlRE9NU3RvcmFnZUl0ZW0oaW4gbG9uZyBzdG9yYWdlSWQsIGluIFN0cmlu
ZyBrZXksIG91dCBib29sZWFuIHN1Y2Nlc3MpOwotICAgICAgICAvLyBGSVhNRTogbnVrZSB0aGVz
ZSBmcm9tIHJlc291cmNlIG1hbmFnZXIgYXNhcCwgZGlzcGF0Y2ggb24gU3RvcmFnZURvbWFpbi4K
LSAgICAgICAgW25vdGlmeSwgZG9tYWluPVJlc291cmNlc10gdm9pZCBhZGRET01TdG9yYWdlKG91
dCBPYmplY3Qgc3RvcmFnZSk7Ci0gICAgICAgIFtub3RpZnksIGRvbWFpbj1SZXNvdXJjZXNdIHZv
aWQgdXBkYXRlRE9NU3RvcmFnZShvdXQgaW50IHN0b3JhZ2VJZCk7Ci0gICAgICAgIFtub3RpZnks
IGRvbWFpbj1SZXNvdXJjZXNdIHZvaWQgc2VsZWN0RE9NU3RvcmFnZShvdXQgaW50IHN0b3JhZ2VJ
ZCk7Ci0jZW5kaWYKLSNpZiBkZWZpbmVkKEVOQUJMRV9PRkZMSU5FX1dFQl9BUFBMSUNBVElPTlMp
ICYmIEVOQUJMRV9PRkZMSU5FX1dFQl9BUFBMSUNBVElPTlMKLSAgICAgICAgW25vdGlmeSwgZG9t
YWluPVJlc291cmNlc10gdm9pZCB1cGRhdGVBcHBsaWNhdGlvbkNhY2hlU3RhdHVzKG91dCBpbnQg
c3RhdHVzKTsKLSAgICAgICAgW25vdGlmeSwgZG9tYWluPVJlc291cmNlc10gdm9pZCB1cGRhdGVO
ZXR3b3JrU3RhdGUob3V0IGJvb2xlYW4gaXNOb3dPbmxpbmUpOworICAgICAgICBbZG9tYWluPURP
TVN0b3JhZ2VdIHZvaWQgZ2V0RE9NU3RvcmFnZUVudHJpZXMoaW4gbG9uZyBzdG9yYWdlSWQsIG91
dCBBcnJheSBlbnRyaWVzKTsKKyAgICAgICAgW2RvbWFpbj1ET01TdG9yYWdlXSB2b2lkIHNldERP
TVN0b3JhZ2VJdGVtKGluIGxvbmcgc3RvcmFnZUlkLCBpbiBTdHJpbmcga2V5LCBpbiBTdHJpbmcg
dmFsdWUsIG91dCBib29sZWFuIHN1Y2Nlc3MpOworICAgICAgICBbZG9tYWluPURPTVN0b3JhZ2Vd
IHZvaWQgcmVtb3ZlRE9NU3RvcmFnZUl0ZW0oaW4gbG9uZyBzdG9yYWdlSWQsIGluIFN0cmluZyBr
ZXksIG91dCBib29sZWFuIHN1Y2Nlc3MpOworICAgICAgICBbbm90aWZ5LCBkb21haW49RE9NU3Rv
cmFnZV0gdm9pZCBhZGRET01TdG9yYWdlKG91dCBPYmplY3Qgc3RvcmFnZSk7CisgICAgICAgIFtu
b3RpZnksIGRvbWFpbj1ET01TdG9yYWdlXSB2b2lkIHVwZGF0ZURPTVN0b3JhZ2Uob3V0IGludCBz
dG9yYWdlSWQpOworICAgICAgICBbbm90aWZ5LCBkb21haW49RE9NU3RvcmFnZV0gdm9pZCBzZWxl
Y3RET01TdG9yYWdlKG91dCBpbnQgc3RvcmFnZUlkKTsKICNlbmRpZgogI2lmIGRlZmluZWQoRU5B
QkxFX09GRkxJTkVfV0VCX0FQUExJQ0FUSU9OUykgJiYgRU5BQkxFX09GRkxJTkVfV0VCX0FQUExJ
Q0FUSU9OUwogICAgICAgICBbZG9tYWluPUFwcGxpY2F0aW9uQ2FjaGVdIHZvaWQgZ2V0QXBwbGlj
YXRpb25DYWNoZXMob3V0IFZhbHVlIGFwcGxpY2F0aW9uQ2FjaGVzKTsKKyAgICAgICAgW25vdGlm
eSwgZG9tYWluPUFwcGxpY2F0aW9uQ2FjaGVdIHZvaWQgdXBkYXRlQXBwbGljYXRpb25DYWNoZVN0
YXR1cyhvdXQgaW50IHN0YXR1cyk7CisgICAgICAgIFtub3RpZnksIGRvbWFpbj1BcHBsaWNhdGlv
bkNhY2hlXSB2b2lkIHVwZGF0ZU5ldHdvcmtTdGF0ZShvdXQgYm9vbGVhbiBpc05vd09ubGluZSk7
CiAjZW5kaWYKICNpZiBkZWZpbmVkKEVOQUJMRV9GSUxFX1NZU1RFTSkgJiYgRU5BQkxFX0ZJTEVf
U1lTVEVNCiAgICAgICAgIFtkb21haW49RmlsZVN5c3RlbV0gdm9pZCBnZXRGaWxlU3lzdGVtUGF0
aEFzeW5jKGluIHVuc2lnbmVkIGludCB0eXBlLCBpbiBTdHJpbmcgb3JpZ2luKTsKICAgICAgICAg
W2RvbWFpbj1GaWxlU3lzdGVtXSB2b2lkIHJldmVhbEZvbGRlckluT1MoaW4gU3RyaW5nIHBhdGgp
OwogCi0gICAgICAgIC8vIEZJWE1FOiBudWtlIHRoZXNlIGZyb20gcmVzb3VyY2UgbWFuYWdlciBh
c2FwLCBkaXNwYXRjaCBvbiBGaWxlU3lzdGVtLgotICAgICAgICBbbm90aWZ5LCBkb21haW49UmVz
b3VyY2VzXSB2b2lkIGRpZEdldEZpbGVTeXN0ZW1QYXRoKG91dCBTdHJpbmcgcm9vdCwgb3V0IGlu
dCB0eXBlLCBvdXQgU3RyaW5nIG9yaWdpbik7Ci0gICAgICAgIFtub3RpZnksIGRvbWFpbj1SZXNv
dXJjZXNdIHZvaWQgZGlkR2V0RmlsZVN5c3RlbUVycm9yKG91dCBpbnQgdHlwZSwgb3V0IFN0cmlu
ZyBvcmlnaW4pOwotICAgICAgICBbbm90aWZ5LCBkb21haW49UmVzb3VyY2VzXSB2b2lkIGRpZEdl
dEZpbGVTeXN0ZW1EaXNhYmxlZCgpOworICAgICAgICBbbm90aWZ5LCBkb21haW49RmlsZVN5c3Rl
bV0gdm9pZCBkaWRHZXRGaWxlU3lzdGVtUGF0aChvdXQgU3RyaW5nIHJvb3QsIG91dCBpbnQgdHlw
ZSwgb3V0IFN0cmluZyBvcmlnaW4pOworICAgICAgICBbbm90aWZ5LCBkb21haW49RmlsZVN5c3Rl
bV0gdm9pZCBkaWRHZXRGaWxlU3lzdGVtRXJyb3Iob3V0IGludCB0eXBlLCBvdXQgU3RyaW5nIG9y
aWdpbik7CisgICAgICAgIFtub3RpZnksIGRvbWFpbj1GaWxlU3lzdGVtXSB2b2lkIGRpZEdldEZp
bGVTeXN0ZW1EaXNhYmxlZCgpOwogI2VuZGlmCiAKICAgICAgICAgLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9BdWRpdFJ1bGVzLmpzIGIvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0F1ZGl0UnVsZXMuanMKaW5kZXggY2QxYjM0Zi4uNDU0
NDQwNSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0F1ZGl0UnVsZXMu
anMKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0F1ZGl0UnVsZXMuanMKQEAgLTMy
Niw3ICszMjYsNyBAQCBXZWJJbnNwZWN0b3IuQXVkaXRSdWxlcy5VbnVzZWRDc3NSdWxlLnByb3Rv
dHlwZSA9IHsKICAgICAgICAgICAgICAgICAgICAgaWYgKCF1bnVzZWRSdWxlcy5sZW5ndGgpCiAg
ICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICAgICAgICAgICAgICB2
YXIgcmVzb3VyY2UgPSBXZWJJbnNwZWN0b3IucmVzb3VyY2VNYW5hZ2VyLnJlc291cmNlRm9yVVJM
KHN0eWxlU2hlZXQuc291cmNlVVJMKTsKKyAgICAgICAgICAgICAgICAgICAgdmFyIHJlc291cmNl
ID0gV2ViSW5zcGVjdG9yLm5ldHdvcmtNYW5hZ2VyLnJlc291cmNlRm9yVVJMKHN0eWxlU2hlZXQu
c291cmNlVVJMKTsKICAgICAgICAgICAgICAgICAgICAgdmFyIGlzSW5saW5lQmxvY2sgPSByZXNv
dXJjZSAmJiByZXNvdXJjZS50eXBlID09IFdlYkluc3BlY3Rvci5SZXNvdXJjZS5UeXBlLkRvY3Vt
ZW50OwogICAgICAgICAgICAgICAgICAgICB2YXIgdXJsID0gIWlzSW5saW5lQmxvY2sgPyBXZWJJ
bnNwZWN0b3IuQXVkaXRSdWxlUmVzdWx0LmxpbmtpZnlEaXNwbGF5TmFtZShzdHlsZVNoZWV0LnNv
dXJjZVVSTCkgOiBTdHJpbmcuc3ByaW50ZigiSW5saW5lIGJsb2NrICMlZCIsICsraW5saW5lQmxv
Y2tPcmRpbmFsKTsKICAgICAgICAgICAgICAgICAgICAgdmFyIHBjdFVudXNlZCA9IE1hdGgucm91
bmQoMTAwICogdW51c2VkU3R5bGVzaGVldFNpemUgLyBzdHlsZXNoZWV0U2l6ZSk7CmRpZmYgLS1n
aXQgYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ1NTU3R5bGVNb2RlbC5qcyBiL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9DU1NTdHlsZU1vZGVsLmpzCmluZGV4IDJkMTU1ODIuLmU0
YTdhMjYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9DU1NTdHlsZU1v
ZGVsLmpzCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9DU1NTdHlsZU1vZGVsLmpz
CkBAIC0xNjIsNyArMTYyLDcgQEAgV2ViSW5zcGVjdG9yLkNTU1N0eWxlTW9kZWwucHJvdG90eXBl
ID0gewogCiAgICAgICAgIGZ1bmN0aW9uIGNhbGxiYWNrKGhyZWYsIGNvbnRlbnQpCiAgICAgICAg
IHsKLSAgICAgICAgICAgIHZhciByZXNvdXJjZSA9IFdlYkluc3BlY3Rvci5yZXNvdXJjZU1hbmFn
ZXIucmVzb3VyY2VGb3JVUkwoaHJlZik7CisgICAgICAgICAgICB2YXIgcmVzb3VyY2UgPSBXZWJJ
bnNwZWN0b3IubmV0d29ya01hbmFnZXIucmVzb3VyY2VGb3JVUkwoaHJlZik7CiAgICAgICAgICAg
ICBpZiAocmVzb3VyY2UgJiYgcmVzb3VyY2UudHlwZSA9PT0gV2ViSW5zcGVjdG9yLlJlc291cmNl
LlR5cGUuU3R5bGVzaGVldCkKICAgICAgICAgICAgICAgICByZXNvdXJjZS5zZXRDb250ZW50KGNv
bnRlbnQsIHRoaXMuX29uUmV2ZXJ0LmJpbmQodGhpcywgc3R5bGVTaGVldElkKSk7CiAgICAgICAg
IH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Db25zb2xlVmlldy5q
cyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Db25zb2xlVmlldy5qcwppbmRleCA5ZTcz
N2JjLi40NmQzNGJmIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ29u
c29sZVZpZXcuanMKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NvbnNvbGVWaWV3
LmpzCkBAIC0yMTgsNyArMjE4LDcgQEAgV2ViSW5zcGVjdG9yLkNvbnNvbGVWaWV3LnByb3RvdHlw
ZSA9IHsKIAogICAgICAgICBpZiAobXNnIGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkNvbnNvbGVN
ZXNzYWdlICYmICEobXNnIGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkNvbnNvbGVDb21tYW5kUmVz
dWx0KSkgewogICAgICAgICAgICAgdGhpcy5faW5jcmVtZW50RXJyb3JXYXJuaW5nQ291bnQobXNn
KTsKLSAgICAgICAgICAgIFdlYkluc3BlY3Rvci5yZXNvdXJjZU1hbmFnZXIuYWRkQ29uc29sZU1l
c3NhZ2UobXNnKTsKKyAgICAgICAgICAgIFdlYkluc3BlY3Rvci5uZXR3b3JrTWFuYWdlci5hZGRD
b25zb2xlTWVzc2FnZShtc2cpOwogICAgICAgICAgICAgdGhpcy5jb21tYW5kU2luY2VQcmV2aW91
c01lc3NhZ2UgPSBmYWxzZTsKICAgICAgICAgICAgIHRoaXMucHJldmlvdXNNZXNzYWdlID0gbXNn
OwogICAgICAgICB9IGVsc2UgaWYgKG1zZyBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5Db25zb2xl
Q29tbWFuZCkgewpAQCAtMjg1LDcgKzI4NSw3IEBAIFdlYkluc3BlY3Rvci5Db25zb2xlVmlldy5w
cm90b3R5cGUgPSB7CiAKICAgICBjbGVhck1lc3NhZ2VzOiBmdW5jdGlvbigpCiAgICAgewotICAg
ICAgICBXZWJJbnNwZWN0b3IucmVzb3VyY2VNYW5hZ2VyLmNsZWFyQ29uc29sZU1lc3NhZ2VzKCk7
CisgICAgICAgIFdlYkluc3BlY3Rvci5uZXR3b3JrTWFuYWdlci5jbGVhckNvbnNvbGVNZXNzYWdl
cygpOwogCiAgICAgICAgIHRoaXMubWVzc2FnZXMgPSBbXTsKIApkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RPTUFnZW50LmpzIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL0RPTUFnZW50LmpzCmluZGV4IDQzMmFjM2YuLjg5ODIyYTMgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9ET01BZ2VudC5qcworKysgYi9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvRE9NQWdlbnQuanMKQEAgLTQ3MSw2ICs0NzEsMTggQEAgV2ViSW5zcGVj
dG9yLkFwcGxpY2F0aW9uQ2FjaGUuZ2V0QXBwbGljYXRpb25DYWNoZXNBc3luYyA9IGZ1bmN0aW9u
KGNhbGxiYWNrKQogICAgIEluc3BlY3RvckJhY2tlbmQuZ2V0QXBwbGljYXRpb25DYWNoZXMobXlj
YWxsYmFjayk7CiB9CiAKK1dlYkluc3BlY3Rvci5BcHBsaWNhdGlvbkNhY2hlLnVwZGF0ZUFwcGxp
Y2F0aW9uQ2FjaGVTdGF0dXMgPSBmdW5jdGlvbihzdGF0dXMpCit7CisgICAgV2ViSW5zcGVjdG9y
LnBhbmVscy5yZXNvdXJjZXMudXBkYXRlQXBwbGljYXRpb25DYWNoZVN0YXR1cyhzdGF0dXMpOwor
fQorCitXZWJJbnNwZWN0b3IuQXBwbGljYXRpb25DYWNoZS51cGRhdGVOZXR3b3JrU3RhdGUgPSBm
dW5jdGlvbihpc05vd09ubGluZSkKK3sKKyAgICBXZWJJbnNwZWN0b3IucGFuZWxzLnJlc291cmNl
cy51cGRhdGVOZXR3b3JrU3RhdGUoaXNOb3dPbmxpbmUpOworfQorCitJbnNwZWN0b3JCYWNrZW5k
LnJlZ2lzdGVyRG9tYWluRGlzcGF0Y2hlcigiQXBwbGljYXRpb25DYWNoZSIsIFdlYkluc3BlY3Rv
ci5BcHBsaWNhdGlvbkNhY2hlKTsKKwogV2ViSW5zcGVjdG9yLkNvb2tpZXMgPSB7fQogCiBXZWJJ
bnNwZWN0b3IuQ29va2llcy5nZXRDb29raWVzQXN5bmMgPSBmdW5jdGlvbihjYWxsYmFjaykKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9ET01TdG9yYWdlLmpzIGIvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RPTVN0b3JhZ2UuanMKaW5kZXggMzdiZThmNi4uYWEx
NGE5YyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RPTVN0b3JhZ2Uu
anMKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RPTVN0b3JhZ2UuanMKQEAgLTcw
LDMgKzcwLDI2IEBAIFdlYkluc3BlY3Rvci5ET01TdG9yYWdlLnByb3RvdHlwZSA9IHsKICAgICB9
CiB9CiAKK1dlYkluc3BlY3Rvci5ET01TdG9yYWdlLmFkZERPTVN0b3JhZ2UgPSBmdW5jdGlvbihw
YXlsb2FkKQoreworICAgIGlmICghV2ViSW5zcGVjdG9yLnBhbmVscy5yZXNvdXJjZXMpCisgICAg
ICAgIHJldHVybjsKKyAgICB2YXIgZG9tU3RvcmFnZSA9IG5ldyBXZWJJbnNwZWN0b3IuRE9NU3Rv
cmFnZSgKKyAgICAgICAgcGF5bG9hZC5pZCwKKyAgICAgICAgcGF5bG9hZC5ob3N0LAorICAgICAg
ICBwYXlsb2FkLmlzTG9jYWxTdG9yYWdlKTsKKyAgICBXZWJJbnNwZWN0b3IucGFuZWxzLnJlc291
cmNlcy5hZGRET01TdG9yYWdlKGRvbVN0b3JhZ2UpOworfQorCitXZWJJbnNwZWN0b3IuRE9NU3Rv
cmFnZS5zZWxlY3RET01TdG9yYWdlID0gZnVuY3Rpb24obykKK3sKKyAgICBXZWJJbnNwZWN0b3Iu
c2hvd1BhbmVsKCJyZXNvdXJjZXMiKTsKKyAgICBXZWJJbnNwZWN0b3IucGFuZWxzLnJlc291cmNl
cy5zZWxlY3RET01TdG9yYWdlKG8pOworfQorCitXZWJJbnNwZWN0b3IuRE9NU3RvcmFnZS51cGRh
dGVET01TdG9yYWdlID0gZnVuY3Rpb24oc3RvcmFnZUlkKQoreworICAgIFdlYkluc3BlY3Rvci5w
YW5lbHMucmVzb3VyY2VzLnVwZGF0ZURPTVN0b3JhZ2Uoc3RvcmFnZUlkKTsKK30KKworSW5zcGVj
dG9yQmFja2VuZC5yZWdpc3RlckRvbWFpbkRpc3BhdGNoZXIoIkRPTVN0b3JhZ2UiLCBXZWJJbnNw
ZWN0b3IuRE9NU3RvcmFnZSk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvRGF0YWJhc2UuanMgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRGF0YWJhc2UuanMK
aW5kZXggN2FhYzdkMS4uMWJiZWU0NSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL0RhdGFiYXNlLmpzCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9EYXRh
YmFzZS5qcwpAQCAtMTAxLDMgKzEwMSw0MSBAQCBXZWJJbnNwZWN0b3IuRGF0YWJhc2UucHJvdG90
eXBlID0gewogICAgICAgICBJbnNwZWN0b3JCYWNrZW5kLmV4ZWN1dGVTUUwodGhpcy5faWQsIHF1
ZXJ5LCBjYWxsYmFjayk7CiAgICAgfQogfQorCitXZWJJbnNwZWN0b3IuRGF0YWJhc2UuYWRkRGF0
YWJhc2UgPSBmdW5jdGlvbihwYXlsb2FkKQoreworICAgIGlmICghV2ViSW5zcGVjdG9yLnBhbmVs
cy5yZXNvdXJjZXMpCisgICAgICAgIHJldHVybjsKKyAgICB2YXIgZGF0YWJhc2UgPSBuZXcgV2Vi
SW5zcGVjdG9yLkRhdGFiYXNlKAorICAgICAgICBwYXlsb2FkLmlkLAorICAgICAgICBwYXlsb2Fk
LmRvbWFpbiwKKyAgICAgICAgcGF5bG9hZC5uYW1lLAorICAgICAgICBwYXlsb2FkLnZlcnNpb24p
OworICAgIFdlYkluc3BlY3Rvci5wYW5lbHMucmVzb3VyY2VzLmFkZERhdGFiYXNlKGRhdGFiYXNl
KTsKK30KKworV2ViSW5zcGVjdG9yLkRhdGFiYXNlLnNlbGVjdERhdGFiYXNlID0gZnVuY3Rpb24o
bykKK3sKKyAgICBXZWJJbnNwZWN0b3Iuc2hvd1BhbmVsKCJyZXNvdXJjZXMiKTsKKyAgICBXZWJJ
bnNwZWN0b3IucGFuZWxzLnJlc291cmNlcy5zZWxlY3REYXRhYmFzZShvKTsKK30KKworV2ViSW5z
cGVjdG9yLkRhdGFiYXNlLnNxbFRyYW5zYWN0aW9uU3VjY2VlZGVkID0gZnVuY3Rpb24odHJhbnNh
Y3Rpb25JZCwgY29sdW1uTmFtZXMsIHZhbHVlcykKK3sKKyAgICB2YXIgY2FsbGJhY2sgPSBXZWJJ
bnNwZWN0b3IuRGF0YWJhc2Uuc3VjY2Vzc0NhbGxiYWNrc1t0cmFuc2FjdGlvbklkXTsKKyAgICBp
ZiAoIWNhbGxiYWNrKQorICAgICAgICByZXR1cm47CisgICAgZGVsZXRlIFdlYkluc3BlY3Rvci5E
YXRhYmFzZS5zdWNjZXNzQ2FsbGJhY2tzW3RyYW5zYWN0aW9uSWRdOworICAgIGNhbGxiYWNrKGNv
bHVtbk5hbWVzLCB2YWx1ZXMpOworfQorCitXZWJJbnNwZWN0b3IuRGF0YWJhc2Uuc3FsVHJhbnNh
Y3Rpb25GYWlsZWQgPSBmdW5jdGlvbih0cmFuc2FjdGlvbklkLCBlcnJvck9iaikKK3sKKyAgICB2
YXIgY2FsbGJhY2sgPSBXZWJJbnNwZWN0b3IuRGF0YWJhc2UuZXJyb3JDYWxsYmFja3NbdHJhbnNh
Y3Rpb25JZF07CisgICAgaWYgKCFjYWxsYmFjaykKKyAgICAgICAgcmV0dXJuOworICAgIGRlbGV0
ZSBXZWJJbnNwZWN0b3IuRGF0YWJhc2UuZXJyb3JDYWxsYmFja3NbdHJhbnNhY3Rpb25JZF07Cisg
ICAgY2FsbGJhY2soZXJyb3JPYmopOworfQorCitJbnNwZWN0b3JCYWNrZW5kLnJlZ2lzdGVyRG9t
YWluRGlzcGF0Y2hlcigiRGF0YWJhc2UiLCBXZWJJbnNwZWN0b3IuRGF0YWJhc2UpOwpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0ZpbGVTeXN0ZW1WaWV3LmpzIGIvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0ZpbGVTeXN0ZW1WaWV3LmpzCmluZGV4IDhjZDAxMDcu
LjE0ZWNmNDYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9GaWxlU3lz
dGVtVmlldy5qcworKysgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRmlsZVN5c3RlbVZp
ZXcuanMKQEAgLTQwLDYgKzQwLDIzIEBAIFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtLmdldEZpbGVT
eXN0ZW1QYXRoc0FzeW5jID0gZnVuY3Rpb24ob3JpZ2luKQogICAgIEluc3BlY3RvckJhY2tlbmQu
Z2V0RmlsZVN5c3RlbVBhdGhBc3luYyhXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbS5URU1QT1JBUlks
IG9yaWdpbik7CiB9CiAKK1dlYkluc3BlY3Rvci5GaWxlU3lzdGVtLmRpZEdldEZpbGVTeXN0ZW1Q
YXRoID0gZnVuY3Rpb24ocm9vdCwgdHlwZSwgb3JpZ2luKQoreworICAgIFdlYkluc3BlY3Rvci5w
YW5lbHMucmVzb3VyY2VzLnVwZGF0ZUZpbGVTeXN0ZW1QYXRoKHJvb3QsIHR5cGUsIG9yaWdpbik7
Cit9CisKK1dlYkluc3BlY3Rvci5GaWxlU3lzdGVtLmRpZEdldEZpbGVTeXN0ZW1FcnJvciA9IGZ1
bmN0aW9uKHR5cGUsIG9yaWdpbikKK3sKKyAgICBXZWJJbnNwZWN0b3IucGFuZWxzLnJlc291cmNl
cy51cGRhdGVGaWxlU3lzdGVtRXJyb3IodHlwZSwgb3JpZ2luKTsKK30KKworV2ViSW5zcGVjdG9y
LkZpbGVTeXN0ZW0uZGlkR2V0RmlsZVN5c3RlbURpc2FibGVkID0gZnVuY3Rpb24oKQoreworICAg
IFdlYkluc3BlY3Rvci5wYW5lbHMucmVzb3VyY2VzLnNldEZpbGVTeXN0ZW1EaXNhYmxlZCgpOwor
fQorCitJbnNwZWN0b3JCYWNrZW5kLnJlZ2lzdGVyRG9tYWluRGlzcGF0Y2hlcigiRmlsZVN5c3Rl
bSIsIFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtKTsKKwogV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1W
aWV3ID0gZnVuY3Rpb24odHJlZUVsZW1lbnQsIGZpbGVTeXN0ZW1PcmlnaW4pCiB7CiAgICAgV2Vi
SW5zcGVjdG9yLlZpZXcuY2FsbCh0aGlzKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9OZXR3b3JrSXRlbVZpZXcuanMgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvTmV0d29ya0l0ZW1WaWV3LmpzCmluZGV4IDQ4ZTNiMTkuLjQxOGY1NTkgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9OZXR3b3JrSXRlbVZpZXcuanMKKysrIGIvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL05ldHdvcmtJdGVtVmlldy5qcwpAQCAtMzYsNyArMzYs
NyBAQCBXZWJJbnNwZWN0b3IuTmV0d29ya0l0ZW1WaWV3ID0gZnVuY3Rpb24ocmVzb3VyY2UpCiAK
ICAgICB0aGlzLl9oZWFkZXJzVmlldyA9IG5ldyBXZWJJbnNwZWN0b3IuUmVzb3VyY2VIZWFkZXJz
VmlldyhyZXNvdXJjZSk7CiAgICAgLy8gRG8gbm90IHN0b3JlIHJlZmVyZW5jZSB0byBjb250ZW50
IHZpZXcgLSBpdCBjYW4gYmUgcmVjcmVhdGVkLgotICAgIHZhciBjb250ZW50VmlldyA9IFdlYklu
c3BlY3Rvci5SZXNvdXJjZU1hbmFnZXIucmVzb3VyY2VWaWV3Rm9yUmVzb3VyY2UocmVzb3VyY2Up
OworICAgIHZhciBjb250ZW50VmlldyA9IFdlYkluc3BlY3Rvci5SZXNvdXJjZVZpZXcucmVzb3Vy
Y2VWaWV3Rm9yUmVzb3VyY2UocmVzb3VyY2UpOwogCiAgICAgdGhpcy5fdGFiYmVkUGFuZSA9IG5l
dyBXZWJJbnNwZWN0b3IuVGFiYmVkUGFuZSh0aGlzLmVsZW1lbnQpOwogICAgIHRoaXMuX3RhYmJl
ZFBhbmUuYXBwZW5kVGFiKCJoZWFkZXJzIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJIZWFkZXJz
IiksIHRoaXMuX2hlYWRlcnNWaWV3KTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9OZXR3b3JrTWFuYWdlci5qcyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9O
ZXR3b3JrTWFuYWdlci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYTg1
YzI2Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL05ldHdv
cmtNYW5hZ2VyLmpzCkBAIC0wLDAgKzEsNDE2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5
LCAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAq
ICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBp
dHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisg
KiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworV2ViSW5zcGVjdG9yLk5ldHdvcmtN
YW5hZ2VyID0gZnVuY3Rpb24oKQoreworICAgIHRoaXMuX3Jlc291cmNlc0J5SWQgPSB7fTsKKyAg
ICB0aGlzLl9yZXNvdXJjZXNCeVVSTCA9IHt9OworICAgIHRoaXMuX3Jlc291cmNlVHJlZU1vZGVs
ID0gbmV3IFdlYkluc3BlY3Rvci5SZXNvdXJjZVRyZWVNb2RlbCgpOworICAgIEluc3BlY3RvckJh
Y2tlbmQuY2FjaGVkUmVzb3VyY2VzKHRoaXMuX3Byb2Nlc3NDYWNoZWRSZXNvdXJjZXMuYmluZCh0
aGlzKSk7CisgICAgSW5zcGVjdG9yQmFja2VuZC5yZWdpc3RlckRvbWFpbkRpc3BhdGNoZXIoIk5l
dHdvcmsiLCB0aGlzKTsKK30KKworV2ViSW5zcGVjdG9yLk5ldHdvcmtNYW5hZ2VyLnByb3RvdHlw
ZSA9IHsKKyAgICBpZGVudGlmaWVyRm9ySW5pdGlhbFJlcXVlc3Q6IGZ1bmN0aW9uKGlkZW50aWZp
ZXIsIHVybCwgbG9hZGVyLCBjYWxsU3RhY2spCisgICAgeworICAgICAgICB2YXIgcmVzb3VyY2Ug
PSB0aGlzLl9jcmVhdGVSZXNvdXJjZShpZGVudGlmaWVyLCB1cmwsIGxvYWRlciwgY2FsbFN0YWNr
KTsKKworICAgICAgICAvLyBJdCBpcyBpbXBvcnRhbnQgdG8gYmluZCByZXNvdXJjZSB1cmwgZWFy
bHkgKGJlZm9yZSBzY3JpcHRzIGNvbXBpbGUpLgorICAgICAgICB0aGlzLl9iaW5kUmVzb3VyY2VV
UkwocmVzb3VyY2UpOworCisgICAgICAgIFdlYkluc3BlY3Rvci5wYW5lbHMubmV0d29yay5yZWZy
ZXNoUmVzb3VyY2UocmVzb3VyY2UpOworICAgICAgICBXZWJJbnNwZWN0b3IucGFuZWxzLmF1ZGl0
cy5yZXNvdXJjZVN0YXJ0ZWQocmVzb3VyY2UpOworICAgIH0sCisKKyAgICBfY3JlYXRlUmVzb3Vy
Y2U6IGZ1bmN0aW9uKGlkZW50aWZpZXIsIHVybCwgbG9hZGVyLCBzdGFja1RyYWNlKQorICAgIHsK
KyAgICAgICAgdmFyIHJlc291cmNlID0gbmV3IFdlYkluc3BlY3Rvci5SZXNvdXJjZShpZGVudGlm
aWVyLCB1cmwpOworICAgICAgICByZXNvdXJjZS5sb2FkZXIgPSBsb2FkZXI7CisgICAgICAgIGlm
IChsb2FkZXIpCisgICAgICAgICAgICByZXNvdXJjZS5kb2N1bWVudFVSTCA9IGxvYWRlci51cmw7
CisgICAgICAgIHJlc291cmNlLnN0YWNrVHJhY2UgPSBzdGFja1RyYWNlOworCisgICAgICAgIHRo
aXMuX3Jlc291cmNlc0J5SWRbaWRlbnRpZmllcl0gPSByZXNvdXJjZTsKKyAgICAgICAgcmV0dXJu
IHJlc291cmNlOworICAgIH0sCisKKyAgICB3aWxsU2VuZFJlcXVlc3Q6IGZ1bmN0aW9uKGlkZW50
aWZpZXIsIHRpbWUsIHJlcXVlc3QsIHJlZGlyZWN0UmVzcG9uc2UpCisgICAgeworICAgICAgICB2
YXIgcmVzb3VyY2UgPSB0aGlzLl9yZXNvdXJjZXNCeUlkW2lkZW50aWZpZXJdOworICAgICAgICBp
ZiAoIXJlc291cmNlKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIC8vIFJlZGlyZWN0
IG1heSBoYXZlIGVtcHR5IFVSTCBhbmQgd2UnZCBsaWtlIHRvIG5vdCBjcmFzaCB3aXRoIGludmFs
aWQgSGFzaE1hcCBlbnRyeS4KKyAgICAgICAgLy8gU2VlIGh0dHAvdGVzdHMvbWlzYy93aWxsLXNl
bmQtcmVxdWVzdC1yZXR1cm5zLW51bGwtb24tcmVkaXJlY3QuaHRtbAorICAgICAgICB2YXIgaXNS
ZWRpcmVjdCA9ICFyZWRpcmVjdFJlc3BvbnNlLmlzTnVsbCAmJiByZXF1ZXN0LnVybC5sZW5ndGg7
CisgICAgICAgIGlmIChpc1JlZGlyZWN0KSB7CisgICAgICAgICAgICByZXNvdXJjZS5lbmRUaW1l
ID0gdGltZTsKKyAgICAgICAgICAgIHRoaXMuZGlkUmVjZWl2ZVJlc3BvbnNlKGlkZW50aWZpZXIs
IHRpbWUsICJPdGhlciIsIHJlZGlyZWN0UmVzcG9uc2UpOworICAgICAgICAgICAgcmVzb3VyY2Ug
PSB0aGlzLl9hcHBlbmRSZWRpcmVjdChyZXNvdXJjZS5pZGVudGlmaWVyLCByZXF1ZXN0LnVybCk7
CisgICAgICAgIH0KKworICAgICAgICB0aGlzLl91cGRhdGVSZXNvdXJjZVdpdGhSZXF1ZXN0KHJl
c291cmNlLCByZXF1ZXN0KTsKKyAgICAgICAgcmVzb3VyY2Uuc3RhcnRUaW1lID0gdGltZTsKKwor
ICAgICAgICBpZiAoaXNSZWRpcmVjdCkgeworICAgICAgICAgICAgV2ViSW5zcGVjdG9yLnBhbmVs
cy5uZXR3b3JrLnJlZnJlc2hSZXNvdXJjZShyZXNvdXJjZSk7CisgICAgICAgICAgICBXZWJJbnNw
ZWN0b3IucGFuZWxzLmF1ZGl0cy5yZXNvdXJjZVN0YXJ0ZWQocmVzb3VyY2UpOworICAgICAgICB9
IGVsc2UKKyAgICAgICAgICAgIFdlYkluc3BlY3Rvci5wYW5lbHMubmV0d29yay5yZWZyZXNoUmVz
b3VyY2UocmVzb3VyY2UpOworICAgIH0sCisKKyAgICBfdXBkYXRlUmVzb3VyY2VXaXRoUmVxdWVz
dDogZnVuY3Rpb24ocmVzb3VyY2UsIHJlcXVlc3QpCisgICAgeworICAgICAgICByZXNvdXJjZS5y
ZXF1ZXN0TWV0aG9kID0gcmVxdWVzdC5odHRwTWV0aG9kOworICAgICAgICByZXNvdXJjZS5yZXF1
ZXN0SGVhZGVycyA9IHJlcXVlc3QuaHR0cEhlYWRlckZpZWxkczsKKyAgICAgICAgcmVzb3VyY2Uu
cmVxdWVzdEZvcm1EYXRhID0gcmVxdWVzdC5yZXF1ZXN0Rm9ybURhdGE7CisgICAgfSwKKworICAg
IF9hcHBlbmRSZWRpcmVjdDogZnVuY3Rpb24oaWRlbnRpZmllciwgcmVkaXJlY3RVUkwpCisgICAg
eworICAgICAgICB2YXIgb3JpZ2luYWxSZXNvdXJjZSA9IHRoaXMuX3Jlc291cmNlc0J5SWRbaWRl
bnRpZmllcl07CisgICAgICAgIG9yaWdpbmFsUmVzb3VyY2UuaWRlbnRpZmllciA9IG51bGw7CisK
KyAgICAgICAgdmFyIG5ld1Jlc291cmNlID0gdGhpcy5fY3JlYXRlUmVzb3VyY2UoaWRlbnRpZmll
ciwgcmVkaXJlY3RVUkwsIG9yaWdpbmFsUmVzb3VyY2UubG9hZGVyLCBvcmlnaW5hbFJlc291cmNl
LnN0YWNrVHJhY2UpOworICAgICAgICBuZXdSZXNvdXJjZS5yZWRpcmVjdHMgPSBvcmlnaW5hbFJl
c291cmNlLnJlZGlyZWN0cyB8fCBbXTsKKyAgICAgICAgZGVsZXRlIG9yaWdpbmFsUmVzb3VyY2Uu
cmVkaXJlY3RzOworICAgICAgICBuZXdSZXNvdXJjZS5yZWRpcmVjdHMucHVzaChvcmlnaW5hbFJl
c291cmNlKTsKKyAgICAgICAgcmV0dXJuIG5ld1Jlc291cmNlOworICAgIH0sCisKKyAgICBtYXJr
UmVzb3VyY2VBc0NhY2hlZDogZnVuY3Rpb24oaWRlbnRpZmllcikKKyAgICB7CisgICAgICAgIHZh
ciByZXNvdXJjZSA9IHRoaXMuX3Jlc291cmNlc0J5SWRbaWRlbnRpZmllcl07CisgICAgICAgIGlm
ICghcmVzb3VyY2UpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgcmVzb3VyY2UuY2Fj
aGVkID0gdHJ1ZTsKKyAgICAgICAgV2ViSW5zcGVjdG9yLnBhbmVscy5uZXR3b3JrLnJlZnJlc2hS
ZXNvdXJjZShyZXNvdXJjZSk7CisgICAgfSwKKworICAgIGRpZFJlY2VpdmVSZXNwb25zZTogZnVu
Y3Rpb24oaWRlbnRpZmllciwgdGltZSwgcmVzb3VyY2VUeXBlLCByZXNwb25zZSkKKyAgICB7Cisg
ICAgICAgIHZhciByZXNvdXJjZSA9IHRoaXMuX3Jlc291cmNlc0J5SWRbaWRlbnRpZmllcl07Cisg
ICAgICAgIGlmICghcmVzb3VyY2UpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgcmVz
b3VyY2UucmVzcG9uc2VSZWNlaXZlZFRpbWUgPSB0aW1lOworICAgICAgICByZXNvdXJjZS50eXBl
ID0gV2ViSW5zcGVjdG9yLlJlc291cmNlLlR5cGVbcmVzb3VyY2VUeXBlXTsKKworICAgICAgICB0
aGlzLl91cGRhdGVSZXNvdXJjZVdpdGhSZXNwb25zZShyZXNvdXJjZSwgcmVzcG9uc2UpOworCisg
ICAgICAgIFdlYkluc3BlY3Rvci5wYW5lbHMubmV0d29yay5yZWZyZXNoUmVzb3VyY2UocmVzb3Vy
Y2UpOworICAgICAgICB0aGlzLl9yZXNvdXJjZVRyZWVNb2RlbC5hZGRSZXNvdXJjZVRvRnJhbWUo
cmVzb3VyY2UubG9hZGVyLmZyYW1lSWQsIHJlc291cmNlKTsKKyAgICB9LAorCisgICAgX3VwZGF0
ZVJlc291cmNlV2l0aFJlc3BvbnNlOiBmdW5jdGlvbihyZXNvdXJjZSwgcmVzcG9uc2UpCisgICAg
eworICAgICAgICBpZiAocmVzb3VyY2UuaXNOdWxsKQorICAgICAgICAgICAgcmV0dXJuOworCisg
ICAgICAgIHJlc291cmNlLm1pbWVUeXBlID0gcmVzcG9uc2UubWltZVR5cGU7CisgICAgICAgIHJl
c291cmNlLmV4cGVjdGVkQ29udGVudExlbmd0aCA9IHJlc3BvbnNlLmV4cGVjdGVkQ29udGVudExl
bmd0aDsKKyAgICAgICAgcmVzb3VyY2UudGV4dEVuY29kaW5nTmFtZSA9IHJlc3BvbnNlLnRleHRF
bmNvZGluZ05hbWU7CisgICAgICAgIHJlc291cmNlLnN1Z2dlc3RlZEZpbGVuYW1lID0gcmVzcG9u
c2Uuc3VnZ2VzdGVkRmlsZW5hbWU7CisgICAgICAgIHJlc291cmNlLnN0YXR1c0NvZGUgPSByZXNw
b25zZS5odHRwU3RhdHVzQ29kZTsKKyAgICAgICAgcmVzb3VyY2Uuc3RhdHVzVGV4dCA9IHJlc3Bv
bnNlLmh0dHBTdGF0dXNUZXh0OworCisgICAgICAgIHJlc291cmNlLnJlc3BvbnNlSGVhZGVycyA9
IHJlc3BvbnNlLmh0dHBIZWFkZXJGaWVsZHM7CisgICAgICAgIHJlc291cmNlLmNvbm5lY3Rpb25S
ZXVzZWQgPSByZXNwb25zZS5jb25uZWN0aW9uUmV1c2VkOworICAgICAgICByZXNvdXJjZS5jb25u
ZWN0aW9uSUQgPSByZXNwb25zZS5jb25uZWN0aW9uSUQ7CisKKyAgICAgICAgaWYgKHJlc3BvbnNl
Lndhc0NhY2hlZCkKKyAgICAgICAgICAgIHJlc291cmNlLmNhY2hlZCA9IHRydWU7CisgICAgICAg
IGVsc2UKKyAgICAgICAgICAgIHJlc291cmNlLnRpbWluZyA9IHJlc3BvbnNlLnRpbWluZzsKKwor
ICAgICAgICBpZiAocmVzcG9uc2UubG9hZEluZm8pIHsKKyAgICAgICAgICAgIGlmIChyZXNwb25z
ZS5sb2FkSW5mby5odHRwU3RhdHVzQ29kZSkKKyAgICAgICAgICAgICAgICByZXNvdXJjZS5zdGF0
dXNDb2RlID0gcmVzcG9uc2UubG9hZEluZm8uaHR0cFN0YXR1c0NvZGU7CisgICAgICAgICAgICBp
ZiAocmVzcG9uc2UubG9hZEluZm8uaHR0cFN0YXR1c1RleHQpCisgICAgICAgICAgICAgICAgcmVz
b3VyY2Uuc3RhdHVzVGV4dCA9IHJlc3BvbnNlLmxvYWRJbmZvLmh0dHBTdGF0dXNUZXh0OworICAg
ICAgICAgICAgcmVzb3VyY2UucmVxdWVzdEhlYWRlcnMgPSByZXNwb25zZS5sb2FkSW5mby5yZXF1
ZXN0SGVhZGVyczsKKyAgICAgICAgICAgIHJlc291cmNlLnJlc3BvbnNlSGVhZGVycyA9IHJlc3Bv
bnNlLmxvYWRJbmZvLnJlc3BvbnNlSGVhZGVyczsKKyAgICAgICAgfQorICAgIH0sCisKKyAgICBk
aWRSZWNlaXZlQ29udGVudExlbmd0aDogZnVuY3Rpb24oaWRlbnRpZmllciwgdGltZSwgbGVuZ3Ro
UmVjZWl2ZWQpCisgICAgeworICAgICAgICB2YXIgcmVzb3VyY2UgPSB0aGlzLl9yZXNvdXJjZXNC
eUlkW2lkZW50aWZpZXJdOworICAgICAgICBpZiAoIXJlc291cmNlKQorICAgICAgICAgICAgcmV0
dXJuOworCisgICAgICAgIHJlc291cmNlLnJlc291cmNlU2l6ZSArPSBsZW5ndGhSZWNlaXZlZDsK
KyAgICAgICAgcmVzb3VyY2UuZW5kVGltZSA9IHRpbWU7CisKKyAgICAgICAgV2ViSW5zcGVjdG9y
LnBhbmVscy5uZXR3b3JrLnJlZnJlc2hSZXNvdXJjZShyZXNvdXJjZSk7CisgICAgfSwKKworICAg
IGRpZEZpbmlzaExvYWRpbmc6IGZ1bmN0aW9uKGlkZW50aWZpZXIsIGZpbmlzaFRpbWUpCisgICAg
eworICAgICAgICB2YXIgcmVzb3VyY2UgPSB0aGlzLl9yZXNvdXJjZXNCeUlkW2lkZW50aWZpZXJd
OworICAgICAgICBpZiAoIXJlc291cmNlKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAg
IHJlc291cmNlLmVuZFRpbWUgPSBmaW5pc2hUaW1lOworICAgICAgICByZXNvdXJjZS5maW5pc2hl
ZCA9IHRydWU7CisKKyAgICAgICAgV2ViSW5zcGVjdG9yLnBhbmVscy5uZXR3b3JrLnJlZnJlc2hS
ZXNvdXJjZShyZXNvdXJjZSk7CisgICAgICAgIFdlYkluc3BlY3Rvci5wYW5lbHMuYXVkaXRzLnJl
c291cmNlRmluaXNoZWQocmVzb3VyY2UpOworICAgICAgICBXZWJJbnNwZWN0b3IuZXh0ZW5zaW9u
U2VydmVyLm5vdGlmeVJlc291cmNlRmluaXNoZWQocmVzb3VyY2UpOworICAgICAgICBkZWxldGUg
dGhpcy5fcmVzb3VyY2VzQnlJZFtpZGVudGlmaWVyXTsKKyAgICB9LAorCisgICAgZGlkRmFpbExv
YWRpbmc6IGZ1bmN0aW9uKGlkZW50aWZpZXIsIHRpbWUsIGxvY2FsaXplZERlc2NyaXB0aW9uKQor
ICAgIHsKKyAgICAgICAgdmFyIHJlc291cmNlID0gdGhpcy5fcmVzb3VyY2VzQnlJZFtpZGVudGlm
aWVyXTsKKyAgICAgICAgaWYgKCFyZXNvdXJjZSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAg
ICAgICByZXNvdXJjZS5mYWlsZWQgPSB0cnVlOworICAgICAgICByZXNvdXJjZS5sb2NhbGl6ZWRG
YWlsRGVzY3JpcHRpb24gPSBsb2NhbGl6ZWREZXNjcmlwdGlvbjsKKyAgICAgICAgcmVzb3VyY2Uu
ZmluaXNoZWQgPSB0cnVlOworICAgICAgICByZXNvdXJjZS5lbmRUaW1lID0gdGltZTsKKworICAg
ICAgICBXZWJJbnNwZWN0b3IucGFuZWxzLm5ldHdvcmsucmVmcmVzaFJlc291cmNlKHJlc291cmNl
KTsKKyAgICAgICAgV2ViSW5zcGVjdG9yLnBhbmVscy5hdWRpdHMucmVzb3VyY2VGaW5pc2hlZChy
ZXNvdXJjZSk7CisgICAgICAgIFdlYkluc3BlY3Rvci5leHRlbnNpb25TZXJ2ZXIubm90aWZ5UmVz
b3VyY2VGaW5pc2hlZChyZXNvdXJjZSk7CisgICAgICAgIGRlbGV0ZSB0aGlzLl9yZXNvdXJjZXNC
eUlkW2lkZW50aWZpZXJdOworICAgIH0sCisKKyAgICBkaWRMb2FkUmVzb3VyY2VGcm9tTWVtb3J5
Q2FjaGU6IGZ1bmN0aW9uKHRpbWUsIGNhY2hlZFJlc291cmNlKQorICAgIHsKKyAgICAgICAgdmFy
IHJlc291cmNlID0gdGhpcy5fY3JlYXRlUmVzb3VyY2UobnVsbCwgY2FjaGVkUmVzb3VyY2UudXJs
LCBjYWNoZWRSZXNvdXJjZS5sb2FkZXIpOworICAgICAgICB0aGlzLl91cGRhdGVSZXNvdXJjZVdp
dGhDYWNoZWRSZXNvdXJjZShyZXNvdXJjZSwgY2FjaGVkUmVzb3VyY2UpOworICAgICAgICByZXNv
dXJjZS5jYWNoZWQgPSB0cnVlOworICAgICAgICByZXNvdXJjZS5yZXF1ZXN0TWV0aG9kID0gIkdF
VCI7CisgICAgICAgIHJlc291cmNlLnN0YXJ0VGltZSA9IHJlc291cmNlLnJlc3BvbnNlUmVjZWl2
ZWRUaW1lID0gcmVzb3VyY2UuZW5kVGltZSA9IHRpbWU7CisgICAgICAgIHJlc291cmNlLmZpbmlz
aGVkID0gdHJ1ZTsKKworICAgICAgICBXZWJJbnNwZWN0b3IucGFuZWxzLm5ldHdvcmsucmVmcmVz
aFJlc291cmNlKHJlc291cmNlKTsKKyAgICAgICAgV2ViSW5zcGVjdG9yLnBhbmVscy5hdWRpdHMu
cmVzb3VyY2VTdGFydGVkKHJlc291cmNlKTsKKyAgICAgICAgV2ViSW5zcGVjdG9yLnBhbmVscy5h
dWRpdHMucmVzb3VyY2VGaW5pc2hlZChyZXNvdXJjZSk7CisgICAgICAgIHRoaXMuX3Jlc291cmNl
VHJlZU1vZGVsLmFkZFJlc291cmNlVG9GcmFtZShyZXNvdXJjZS5sb2FkZXIuZnJhbWVJZCwgcmVz
b3VyY2UpOworICAgIH0sCisKKyAgICBfdXBkYXRlUmVzb3VyY2VXaXRoQ2FjaGVkUmVzb3VyY2U6
IGZ1bmN0aW9uKHJlc291cmNlLCBjYWNoZWRSZXNvdXJjZSkKKyAgICB7CisgICAgICAgIHJlc291
cmNlLnR5cGUgPSBXZWJJbnNwZWN0b3IuUmVzb3VyY2UuVHlwZVtjYWNoZWRSZXNvdXJjZS50eXBl
XTsKKyAgICAgICAgcmVzb3VyY2UucmVzb3VyY2VTaXplID0gY2FjaGVkUmVzb3VyY2UuZW5jb2Rl
ZFNpemU7CisgICAgICAgIHRoaXMuX3VwZGF0ZVJlc291cmNlV2l0aFJlc3BvbnNlKHJlc291cmNl
LCBjYWNoZWRSZXNvdXJjZS5yZXNwb25zZSk7CisgICAgfSwKKworICAgIHNldEluaXRpYWxDb250
ZW50OiBmdW5jdGlvbihpZGVudGlmaWVyLCBzb3VyY2VTdHJpbmcsIHR5cGUpCisgICAgeworICAg
ICAgICB2YXIgcmVzb3VyY2UgPSBXZWJJbnNwZWN0b3IucGFuZWxzLm5ldHdvcmsucmVzb3VyY2Vz
W2lkZW50aWZpZXJdOworICAgICAgICBpZiAoIXJlc291cmNlKQorICAgICAgICAgICAgcmV0dXJu
OworCisgICAgICAgIHJlc291cmNlLnR5cGUgPSBXZWJJbnNwZWN0b3IuUmVzb3VyY2UuVHlwZVt0
eXBlXTsKKyAgICAgICAgcmVzb3VyY2Uuc2V0SW5pdGlhbENvbnRlbnQoc291cmNlU3RyaW5nKTsK
KyAgICAgICAgV2ViSW5zcGVjdG9yLnBhbmVscy5yZXNvdXJjZXMucmVmcmVzaFJlc291cmNlKHJl
c291cmNlKTsKKyAgICAgICAgV2ViSW5zcGVjdG9yLnBhbmVscy5uZXR3b3JrLnJlZnJlc2hSZXNv
dXJjZShyZXNvdXJjZSk7CisgICAgfSwKKworICAgIGRpZENvbW1pdExvYWRGb3JGcmFtZTogZnVu
Y3Rpb24oZnJhbWUsIGxvYWRlcikKKyAgICB7CisgICAgICAgIHRoaXMuX3Jlc291cmNlVHJlZU1v
ZGVsLmRpZENvbW1pdExvYWRGb3JGcmFtZShmcmFtZSwgbG9hZGVyKTsKKyAgICAgICAgaWYgKCFm
cmFtZS5wYXJlbnRJZCkgeworICAgICAgICAgICAgdmFyIG1haW5SZXNvdXJjZSA9IHRoaXMucmVz
b3VyY2VGb3JVUkwoZnJhbWUudXJsKTsKKyAgICAgICAgICAgIGlmIChtYWluUmVzb3VyY2UpIHsK
KyAgICAgICAgICAgICAgICBXZWJJbnNwZWN0b3IubWFpblJlc291cmNlID0gbWFpblJlc291cmNl
OworICAgICAgICAgICAgICAgIG1haW5SZXNvdXJjZS5pc01haW5SZXNvdXJjZSA9IHRydWU7Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9LAorCisgICAgZnJhbWVEZXRhY2hlZEZyb21Q
YXJlbnQ6IGZ1bmN0aW9uKGZyYW1lSWQpCisgICAgeworICAgICAgICB0aGlzLl9yZXNvdXJjZVRy
ZWVNb2RlbC5mcmFtZURldGFjaGVkRnJvbVBhcmVudChmcmFtZUlkKTsKKyAgICB9LAorCisgICAg
ZGlkQ3JlYXRlV2ViU29ja2V0OiBmdW5jdGlvbihpZGVudGlmaWVyLCByZXF1ZXN0VVJMKQorICAg
IHsKKyAgICAgICAgdmFyIHJlc291cmNlID0gdGhpcy5fY3JlYXRlUmVzb3VyY2UoaWRlbnRpZmll
ciwgcmVxdWVzdFVSTCk7CisgICAgICAgIHJlc291cmNlLnR5cGUgPSBXZWJJbnNwZWN0b3IuUmVz
b3VyY2UuVHlwZS5XZWJTb2NrZXQ7CisgICAgICAgIFdlYkluc3BlY3Rvci5wYW5lbHMubmV0d29y
ay5yZWZyZXNoUmVzb3VyY2UocmVzb3VyY2UpOworICAgIH0sCisKKyAgICB3aWxsU2VuZFdlYlNv
Y2tldEhhbmRzaGFrZVJlcXVlc3Q6IGZ1bmN0aW9uKGlkZW50aWZpZXIsIHRpbWUsIHJlcXVlc3Qp
CisgICAgeworICAgICAgICB2YXIgcmVzb3VyY2UgPSB0aGlzLl9yZXNvdXJjZXNCeUlkW2lkZW50
aWZpZXJdOworICAgICAgICBpZiAoIXJlc291cmNlKQorICAgICAgICAgICAgcmV0dXJuOworCisg
ICAgICAgIHJlc291cmNlLnJlcXVlc3RNZXRob2QgPSAiR0VUIjsKKyAgICAgICAgcmVzb3VyY2Uu
cmVxdWVzdEhlYWRlcnMgPSByZXF1ZXN0LndlYlNvY2tldEhlYWRlckZpZWxkczsKKyAgICAgICAg
cmVzb3VyY2Uud2ViU29ja2V0UmVxdWVzdEtleTMgPSByZXF1ZXN0LndlYlNvY2tldFJlcXVlc3RL
ZXkzOworICAgICAgICByZXNvdXJjZS5zdGFydFRpbWUgPSB0aW1lOworCisgICAgICAgIFdlYklu
c3BlY3Rvci5wYW5lbHMubmV0d29yay5yZWZyZXNoUmVzb3VyY2UocmVzb3VyY2UpOworICAgIH0s
CisKKyAgICBkaWRSZWNlaXZlV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2U6IGZ1bmN0aW9uKGlk
ZW50aWZpZXIsIHRpbWUsIHJlc3BvbnNlKQorICAgIHsKKyAgICAgICAgdmFyIHJlc291cmNlID0g
dGhpcy5fcmVzb3VyY2VzQnlJZFtpZGVudGlmaWVyXTsKKyAgICAgICAgaWYgKCFyZXNvdXJjZSkK
KyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICByZXNvdXJjZS5zdGF0dXNDb2RlID0gcmVz
cG9uc2Uuc3RhdHVzQ29kZTsKKyAgICAgICAgcmVzb3VyY2Uuc3RhdHVzVGV4dCA9IHJlc3BvbnNl
LnN0YXR1c1RleHQ7CisgICAgICAgIHJlc291cmNlLnJlc3BvbnNlSGVhZGVycyA9IHJlc3BvbnNl
LndlYlNvY2tldEhlYWRlckZpZWxkczsKKyAgICAgICAgcmVzb3VyY2Uud2ViU29ja2V0Q2hhbGxl
bmdlUmVzcG9uc2UgPSByZXNwb25zZS53ZWJTb2NrZXRDaGFsbGVuZ2VSZXNwb25zZTsKKyAgICAg
ICAgcmVzb3VyY2UucmVzcG9uc2VSZWNlaXZlZFRpbWUgPSB0aW1lOworCisgICAgICAgIFdlYklu
c3BlY3Rvci5wYW5lbHMubmV0d29yay5yZWZyZXNoUmVzb3VyY2UocmVzb3VyY2UpOworICAgIH0s
CisKKyAgICBkaWRDbG9zZVdlYlNvY2tldDogZnVuY3Rpb24oaWRlbnRpZmllciwgdGltZSkKKyAg
ICB7CisgICAgICAgIHZhciByZXNvdXJjZSA9IHRoaXMuX3Jlc291cmNlc0J5SWRbaWRlbnRpZmll
cl07CisgICAgICAgIGlmICghcmVzb3VyY2UpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IHJlc291cmNlLmVuZFRpbWUgPSB0aW1lOworCisgICAgICAgIFdlYkluc3BlY3Rvci5wYW5lbHMu
bmV0d29yay5yZWZyZXNoUmVzb3VyY2UocmVzb3VyY2UpOworICAgIH0sCisKKyAgICBfcHJvY2Vz
c0NhY2hlZFJlc291cmNlczogZnVuY3Rpb24obWFpbkZyYW1lUGF5bG9hZCkKKyAgICB7CisgICAg
ICAgIHZhciBtYWluUmVzb3VyY2UgPSB0aGlzLl9hZGRGcmFtZXNSZWN1cnNpdmVseShtYWluRnJh
bWVQYXlsb2FkKTsKKyAgICAgICAgV2ViSW5zcGVjdG9yLm1haW5SZXNvdXJjZSA9IG1haW5SZXNv
dXJjZTsKKyAgICAgICAgbWFpblJlc291cmNlLmlzTWFpblJlc291cmNlID0gdHJ1ZTsKKyAgICB9
LAorCisgICAgX2FkZEZyYW1lc1JlY3Vyc2l2ZWx5OiBmdW5jdGlvbihmcmFtZVBheWxvYWQpCisg
ICAgeworICAgICAgICB2YXIgZnJhbWVSZXNvdXJjZSA9IHRoaXMuX2NyZWF0ZVJlc291cmNlKG51
bGwsIGZyYW1lUGF5bG9hZC5yZXNvdXJjZS51cmwsIGZyYW1lUGF5bG9hZC5yZXNvdXJjZS5sb2Fk
ZXIpOworICAgICAgICB0aGlzLl91cGRhdGVSZXNvdXJjZVdpdGhSZXF1ZXN0KGZyYW1lUmVzb3Vy
Y2UsIGZyYW1lUGF5bG9hZC5yZXNvdXJjZS5yZXF1ZXN0KTsKKyAgICAgICAgdGhpcy5fdXBkYXRl
UmVzb3VyY2VXaXRoUmVzcG9uc2UoZnJhbWVSZXNvdXJjZSwgZnJhbWVQYXlsb2FkLnJlc291cmNl
LnJlc3BvbnNlKTsKKyAgICAgICAgZnJhbWVSZXNvdXJjZS50eXBlID0gV2ViSW5zcGVjdG9yLlJl
c291cmNlLlR5cGVbIkRvY3VtZW50Il07CisgICAgICAgIGZyYW1lUmVzb3VyY2UuZmluaXNoZWQg
PSB0cnVlOworICAgICAgICB0aGlzLl9iaW5kUmVzb3VyY2VVUkwoZnJhbWVSZXNvdXJjZSk7CisK
KyAgICAgICAgdGhpcy5fcmVzb3VyY2VUcmVlTW9kZWwuYWRkT3JVcGRhdGVGcmFtZShmcmFtZVBh
eWxvYWQpOworICAgICAgICB0aGlzLl9yZXNvdXJjZVRyZWVNb2RlbC5hZGRSZXNvdXJjZVRvRnJh
bWUoZnJhbWVQYXlsb2FkLmlkLCBmcmFtZVJlc291cmNlKTsKKworICAgICAgICBmb3IgKHZhciBp
ID0gMDsgZnJhbWVQYXlsb2FkLmNoaWxkcmVuICYmIGkgPCBmcmFtZVBheWxvYWQuY2hpbGRyZW4u
bGVuZ3RoOyArK2kpCisgICAgICAgICAgICB0aGlzLl9hZGRGcmFtZXNSZWN1cnNpdmVseShmcmFt
ZVBheWxvYWQuY2hpbGRyZW5baV0pOworCisgICAgICAgIGlmICghZnJhbWVQYXlsb2FkLnN1YnJl
c291cmNlcykKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBmb3IgKHZhciBpID0gMDsg
aSA8IGZyYW1lUGF5bG9hZC5zdWJyZXNvdXJjZXMubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAg
IHZhciBjYWNoZWRSZXNvdXJjZSA9IGZyYW1lUGF5bG9hZC5zdWJyZXNvdXJjZXNbaV07CisgICAg
ICAgICAgICB2YXIgcmVzb3VyY2UgPSB0aGlzLl9jcmVhdGVSZXNvdXJjZShudWxsLCBjYWNoZWRS
ZXNvdXJjZS51cmwsIGNhY2hlZFJlc291cmNlLmxvYWRlcik7CisgICAgICAgICAgICB0aGlzLl91
cGRhdGVSZXNvdXJjZVdpdGhDYWNoZWRSZXNvdXJjZShyZXNvdXJjZSwgY2FjaGVkUmVzb3VyY2Up
OworICAgICAgICAgICAgcmVzb3VyY2UuZmluaXNoZWQgPSB0cnVlOworICAgICAgICAgICAgdGhp
cy5fYmluZFJlc291cmNlVVJMKHJlc291cmNlKTsKKyAgICAgICAgICAgIHRoaXMuX3Jlc291cmNl
VHJlZU1vZGVsLmFkZFJlc291cmNlVG9GcmFtZShmcmFtZVBheWxvYWQuaWQsIHJlc291cmNlKTsK
KyAgICAgICAgfQorICAgICAgICByZXR1cm4gZnJhbWVSZXNvdXJjZTsKKyAgICB9LAorCisgICAg
cmVzb3VyY2VGb3JVUkw6IGZ1bmN0aW9uKHVybCkKKyAgICB7CisgICAgICAgIC8vIEZJWE1FOiBy
ZWNlaXZlIGZyYW1lSWQgaGVyZS4KKyAgICAgICAgdmFyIGVudHJ5ID0gdGhpcy5fcmVzb3VyY2Vz
QnlVUkxbdXJsXTsKKyAgICAgICAgaWYgKGVudHJ5IGluc3RhbmNlb2YgQXJyYXkpCisgICAgICAg
ICAgICByZXR1cm4gZW50cnlbMF07CisgICAgICAgIHJldHVybiBlbnRyeTsKKyAgICB9LAorCisg
ICAgYWRkQ29uc29sZU1lc3NhZ2U6IGZ1bmN0aW9uKG1zZykKKyAgICB7CisgICAgICAgIHZhciBy
ZXNvdXJjZSA9IHRoaXMucmVzb3VyY2VGb3JVUkwobXNnLnVybCk7CisgICAgICAgIGlmICghcmVz
b3VyY2UpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgc3dpdGNoIChtc2cubGV2ZWwp
IHsKKyAgICAgICAgY2FzZSBXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2UuTWVzc2FnZUxldmVs
Lldhcm5pbmc6CisgICAgICAgICAgICByZXNvdXJjZS53YXJuaW5ncyArPSBtc2cucmVwZWF0RGVs
dGE7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBXZWJJbnNwZWN0b3IuQ29uc29s
ZU1lc3NhZ2UuTWVzc2FnZUxldmVsLkVycm9yOgorICAgICAgICAgICAgcmVzb3VyY2UuZXJyb3Jz
ICs9IG1zZy5yZXBlYXREZWx0YTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAg
ICAgICAgdmFyIHZpZXcgPSBXZWJJbnNwZWN0b3IuUmVzb3VyY2VWaWV3LnJlc291cmNlVmlld0Zv
clJlc291cmNlKHJlc291cmNlKTsKKyAgICAgICAgaWYgKHZpZXcuYWRkTWVzc2FnZSkKKyAgICAg
ICAgICAgIHZpZXcuYWRkTWVzc2FnZShtc2cpOworICAgIH0sCisKKyAgICBjbGVhckNvbnNvbGVN
ZXNzYWdlczogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgZnVuY3Rpb24gY2FsbGJhY2socmVz
b3VyY2UpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJlc291cmNlLmNsZWFyRXJyb3JzQW5kV2Fy
bmluZ3MoKTsKKyAgICAgICAgfQorICAgICAgICB0aGlzLl9yZXNvdXJjZVRyZWVNb2RlbC5mb3JB
bGxSZXNvdXJjZXMoY2FsbGJhY2spOworICAgIH0sCisKKyAgICBmb3JBbGxSZXNvdXJjZXM6IGZ1
bmN0aW9uKGNhbGxiYWNrKQorICAgIHsKKyAgICAgICAgdGhpcy5fcmVzb3VyY2VUcmVlTW9kZWwu
Zm9yQWxsUmVzb3VyY2VzKGNhbGxiYWNrKTsKKyAgICB9LAorCisgICAgX2JpbmRSZXNvdXJjZVVS
TDogZnVuY3Rpb24ocmVzb3VyY2UpCisgICAgeworICAgICAgICB2YXIgcmVzb3VyY2VGb3JVUkwg
PSB0aGlzLl9yZXNvdXJjZXNCeVVSTFtyZXNvdXJjZS51cmxdOworICAgICAgICBpZiAoIXJlc291
cmNlRm9yVVJMKQorICAgICAgICAgICAgdGhpcy5fcmVzb3VyY2VzQnlVUkxbcmVzb3VyY2UudXJs
XSA9IHJlc291cmNlOworICAgICAgICBlbHNlIGlmIChyZXNvdXJjZUZvclVSTCBpbnN0YW5jZW9m
IEFycmF5KQorICAgICAgICAgICAgcmVzb3VyY2VGb3JVUkwucHVzaChyZXNvdXJjZSk7CisgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgIHRoaXMuX3Jlc291cmNlc0J5VVJMW3Jlc291cmNlLnVybF0g
PSBbcmVzb3VyY2VGb3JVUkwsIHJlc291cmNlXTsKKyAgICB9LAorCisgICAgdW5iaW5kUmVzb3Vy
Y2VVUkw6IGZ1bmN0aW9uKHJlc291cmNlKQorICAgIHsKKyAgICAgICAgdmFyIHJlc291cmNlRm9y
VVJMID0gdGhpcy5fcmVzb3VyY2VzQnlVUkxbcmVzb3VyY2UudXJsXTsKKyAgICAgICAgaWYgKCFy
ZXNvdXJjZUZvclVSTCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBpZiAocmVzb3Vy
Y2VGb3JVUkwgaW5zdGFuY2VvZiBBcnJheSkgeworICAgICAgICAgICAgcmVzb3VyY2VGb3JVUkwu
cmVtb3ZlKHJlc291cmNlLCB0cnVlKTsKKyAgICAgICAgICAgIGlmIChyZXNvdXJjZUZvclVSTC5s
ZW5ndGggPT09IDEpCisgICAgICAgICAgICAgICAgdGhpcy5fcmVzb3VyY2VzQnlVUkxbcmVzb3Vy
Y2UudXJsXSA9IHJlc291cmNlRm9yVVJMWzBdOworICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICB9CisKKyAgICAgICAgZGVsZXRlIHRoaXMuX3Jlc291cmNlc0J5VVJMW3Jlc291cmNlLnVybF07
CisgICAgfQorfQorCitXZWJJbnNwZWN0b3IuTmV0d29ya01hbmFnZXIucmVxdWVzdENvbnRlbnQg
PSBmdW5jdGlvbihyZXNvdXJjZSwgYmFzZTY0RW5jb2RlLCBjYWxsYmFjaykKK3sKKyAgICBJbnNw
ZWN0b3JCYWNrZW5kLnJlc291cmNlQ29udGVudChyZXNvdXJjZS5sb2FkZXIuZnJhbWVJZCwgcmVz
b3VyY2UudXJsLCBiYXNlNjRFbmNvZGUsIGNhbGxiYWNrKTsKK30KKwpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL05ldHdvcmtQYW5lbC5qcyBiL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9OZXR3b3JrUGFuZWwuanMKaW5kZXggOTk0MWRiZi4uN2I2ZGY4YiAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL05ldHdvcmtQYW5lbC5qcworKysg
Yi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvTmV0d29ya1BhbmVsLmpzCkBAIC03OTcsMTQg
Kzc5NywxNCBAQCBXZWJJbnNwZWN0b3IuTmV0d29ya1BhbmVsLnByb3RvdHlwZSA9IHsKICAgICAg
ICAgaWYgKCFyZXNvdXJjZSkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICB2YXIgb2xk
VmlldyA9IFdlYkluc3BlY3Rvci5SZXNvdXJjZU1hbmFnZXIuZXhpc3RpbmdSZXNvdXJjZVZpZXdG
b3JSZXNvdXJjZShyZXNvdXJjZSk7CisgICAgICAgIHZhciBvbGRWaWV3ID0gV2ViSW5zcGVjdG9y
LlJlc291cmNlVmlldy5leGlzdGluZ1Jlc291cmNlVmlld0ZvclJlc291cmNlKHJlc291cmNlKTsK
ICAgICAgICAgaWYgKCFvbGRWaWV3KQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIGlm
IChXZWJJbnNwZWN0b3IuUmVzb3VyY2VNYW5hZ2VyLnJlc291cmNlVmlld1R5cGVNYXRjaGVzUmVz
b3VyY2UocmVzb3VyY2UpKQorICAgICAgICBpZiAoV2ViSW5zcGVjdG9yLlJlc291cmNlVmlldy5y
ZXNvdXJjZVZpZXdUeXBlTWF0Y2hlc1Jlc291cmNlKHJlc291cmNlKSkKICAgICAgICAgICAgIHJl
dHVybjsKIAotICAgICAgICB2YXIgbmV3VmlldyA9IFdlYkluc3BlY3Rvci5SZXNvdXJjZU1hbmFn
ZXIucmVjcmVhdGVSZXNvdXJjZVZpZXcocmVzb3VyY2UpOworICAgICAgICB2YXIgbmV3VmlldyA9
IFdlYkluc3BlY3Rvci5SZXNvdXJjZVZpZXcucmVjcmVhdGVSZXNvdXJjZVZpZXcocmVzb3VyY2Up
OwogICAgICAgICBpZiAodGhpcy52aXNpYmxlVmlldyA9PT0gb2xkVmlldykKICAgICAgICAgICAg
IHRoaXMudmlzaWJsZVZpZXcgPSBuZXdWaWV3OwogICAgIH0sCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2UuanMgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvUmVzb3VyY2UuanMKaW5kZXggZGEyMTA5Mi4uMDYzY2E0MyAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlLmpzCisrKyBiL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9SZXNvdXJjZS5qcwpAQCAtNjg0LDcgKzY4NCw3IEBAIFdlYkluc3BlY3Rv
ci5SZXNvdXJjZS5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB0aGlzLl9wZW5kaW5nQ29udGVu
dENhbGxiYWNrcy5sZW5ndGggPSAwOwogICAgICAgICAgICAgZGVsZXRlIHRoaXMuX2NvbnRlbnRS
ZXF1ZXN0ZWQ7CiAgICAgICAgIH0KLSAgICAgICAgV2ViSW5zcGVjdG9yLlJlc291cmNlTWFuYWdl
ci5yZXF1ZXN0Q29udGVudCh0aGlzLCB0aGlzLl9jb250ZW50RW5jb2RlZCwgb25SZXNvdXJjZUNv
bnRlbnQuYmluZCh0aGlzKSk7CisgICAgICAgIFdlYkluc3BlY3Rvci5OZXR3b3JrTWFuYWdlci5y
ZXF1ZXN0Q29udGVudCh0aGlzLCB0aGlzLl9jb250ZW50RW5jb2RlZCwgb25SZXNvdXJjZUNvbnRl
bnQuYmluZCh0aGlzKSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvUmVzb3VyY2VNYW5hZ2VyLmpzIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL1Jlc291cmNlTWFuYWdlci5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2Yx
YzU3NC4uMDAwMDAwMAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VN
YW5hZ2VyLmpzCisrKyAvZGV2L251bGwKQEAgLTEsNjgxICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMDksIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJp
YnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICog
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi1XZWJJbnNwZWN0
b3IuUmVzb3VyY2VNYW5hZ2VyID0gZnVuY3Rpb24oKQotewotICAgIHRoaXMuX3Jlc291cmNlc0J5
SWQgPSB7fTsKLSAgICB0aGlzLl9yZXNvdXJjZXNCeVVSTCA9IHt9OwotICAgIHRoaXMuX3Jlc291
cmNlVHJlZU1vZGVsID0gbmV3IFdlYkluc3BlY3Rvci5SZXNvdXJjZVRyZWVNb2RlbCgpOwotICAg
IEluc3BlY3RvckJhY2tlbmQuY2FjaGVkUmVzb3VyY2VzKHRoaXMuX3Byb2Nlc3NDYWNoZWRSZXNv
dXJjZXMuYmluZCh0aGlzKSk7Ci0gICAgSW5zcGVjdG9yQmFja2VuZC5yZWdpc3RlckRvbWFpbkRp
c3BhdGNoZXIoIlJlc291cmNlcyIsIHRoaXMpOwotfQotCi1XZWJJbnNwZWN0b3IuUmVzb3VyY2VN
YW5hZ2VyLnByb3RvdHlwZSA9IHsKLSAgICBpZGVudGlmaWVyRm9ySW5pdGlhbFJlcXVlc3Q6IGZ1
bmN0aW9uKGlkZW50aWZpZXIsIHVybCwgbG9hZGVyLCBjYWxsU3RhY2spCi0gICAgewotICAgICAg
ICB2YXIgcmVzb3VyY2UgPSB0aGlzLl9jcmVhdGVSZXNvdXJjZShpZGVudGlmaWVyLCB1cmwsIGxv
YWRlciwgY2FsbFN0YWNrKTsKLQotICAgICAgICAvLyBJdCBpcyBpbXBvcnRhbnQgdG8gYmluZCBy
ZXNvdXJjZSB1cmwgZWFybHkgKGJlZm9yZSBzY3JpcHRzIGNvbXBpbGUpLgotICAgICAgICB0aGlz
Ll9iaW5kUmVzb3VyY2VVUkwocmVzb3VyY2UpOwotCi0gICAgICAgIFdlYkluc3BlY3Rvci5wYW5l
bHMubmV0d29yay5yZWZyZXNoUmVzb3VyY2UocmVzb3VyY2UpOwotICAgICAgICBXZWJJbnNwZWN0
b3IucGFuZWxzLmF1ZGl0cy5yZXNvdXJjZVN0YXJ0ZWQocmVzb3VyY2UpOwotICAgIH0sCi0KLSAg
ICBfY3JlYXRlUmVzb3VyY2U6IGZ1bmN0aW9uKGlkZW50aWZpZXIsIHVybCwgbG9hZGVyLCBzdGFj
a1RyYWNlKQotICAgIHsKLSAgICAgICAgdmFyIHJlc291cmNlID0gbmV3IFdlYkluc3BlY3Rvci5S
ZXNvdXJjZShpZGVudGlmaWVyLCB1cmwpOwotICAgICAgICByZXNvdXJjZS5sb2FkZXIgPSBsb2Fk
ZXI7Ci0gICAgICAgIGlmIChsb2FkZXIpCi0gICAgICAgICAgICByZXNvdXJjZS5kb2N1bWVudFVS
TCA9IGxvYWRlci51cmw7Ci0gICAgICAgIHJlc291cmNlLnN0YWNrVHJhY2UgPSBzdGFja1RyYWNl
OwotCi0gICAgICAgIHRoaXMuX3Jlc291cmNlc0J5SWRbaWRlbnRpZmllcl0gPSByZXNvdXJjZTsK
LSAgICAgICAgcmV0dXJuIHJlc291cmNlOwotICAgIH0sCi0KLSAgICB3aWxsU2VuZFJlcXVlc3Q6
IGZ1bmN0aW9uKGlkZW50aWZpZXIsIHRpbWUsIHJlcXVlc3QsIHJlZGlyZWN0UmVzcG9uc2UpCi0g
ICAgewotICAgICAgICB2YXIgcmVzb3VyY2UgPSB0aGlzLl9yZXNvdXJjZXNCeUlkW2lkZW50aWZp
ZXJdOwotICAgICAgICBpZiAoIXJlc291cmNlKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAg
ICAgIC8vIFJlZGlyZWN0IG1heSBoYXZlIGVtcHR5IFVSTCBhbmQgd2UnZCBsaWtlIHRvIG5vdCBj
cmFzaCB3aXRoIGludmFsaWQgSGFzaE1hcCBlbnRyeS4KLSAgICAgICAgLy8gU2VlIGh0dHAvdGVz
dHMvbWlzYy93aWxsLXNlbmQtcmVxdWVzdC1yZXR1cm5zLW51bGwtb24tcmVkaXJlY3QuaHRtbAot
ICAgICAgICB2YXIgaXNSZWRpcmVjdCA9ICFyZWRpcmVjdFJlc3BvbnNlLmlzTnVsbCAmJiByZXF1
ZXN0LnVybC5sZW5ndGg7Ci0gICAgICAgIGlmIChpc1JlZGlyZWN0KSB7Ci0gICAgICAgICAgICBy
ZXNvdXJjZS5lbmRUaW1lID0gdGltZTsKLSAgICAgICAgICAgIHRoaXMuZGlkUmVjZWl2ZVJlc3Bv
bnNlKGlkZW50aWZpZXIsIHRpbWUsICJPdGhlciIsIHJlZGlyZWN0UmVzcG9uc2UpOwotICAgICAg
ICAgICAgcmVzb3VyY2UgPSB0aGlzLl9hcHBlbmRSZWRpcmVjdChyZXNvdXJjZS5pZGVudGlmaWVy
LCByZXF1ZXN0LnVybCk7Ci0gICAgICAgIH0KLQotICAgICAgICB0aGlzLl91cGRhdGVSZXNvdXJj
ZVdpdGhSZXF1ZXN0KHJlc291cmNlLCByZXF1ZXN0KTsKLSAgICAgICAgcmVzb3VyY2Uuc3RhcnRU
aW1lID0gdGltZTsKLQotICAgICAgICBpZiAoaXNSZWRpcmVjdCkgewotICAgICAgICAgICAgV2Vi
SW5zcGVjdG9yLnBhbmVscy5uZXR3b3JrLnJlZnJlc2hSZXNvdXJjZShyZXNvdXJjZSk7Ci0gICAg
ICAgICAgICBXZWJJbnNwZWN0b3IucGFuZWxzLmF1ZGl0cy5yZXNvdXJjZVN0YXJ0ZWQocmVzb3Vy
Y2UpOwotICAgICAgICB9IGVsc2UgCi0gICAgICAgICAgICBXZWJJbnNwZWN0b3IucGFuZWxzLm5l
dHdvcmsucmVmcmVzaFJlc291cmNlKHJlc291cmNlKTsKLSAgICB9LAotCi0gICAgX3VwZGF0ZVJl
c291cmNlV2l0aFJlcXVlc3Q6IGZ1bmN0aW9uKHJlc291cmNlLCByZXF1ZXN0KQotICAgIHsKLSAg
ICAgICAgcmVzb3VyY2UucmVxdWVzdE1ldGhvZCA9IHJlcXVlc3QuaHR0cE1ldGhvZDsKLSAgICAg
ICAgcmVzb3VyY2UucmVxdWVzdEhlYWRlcnMgPSByZXF1ZXN0Lmh0dHBIZWFkZXJGaWVsZHM7Ci0g
ICAgICAgIHJlc291cmNlLnJlcXVlc3RGb3JtRGF0YSA9IHJlcXVlc3QucmVxdWVzdEZvcm1EYXRh
OwotICAgIH0sCi0KLSAgICBfYXBwZW5kUmVkaXJlY3Q6IGZ1bmN0aW9uKGlkZW50aWZpZXIsIHJl
ZGlyZWN0VVJMKQotICAgIHsKLSAgICAgICAgdmFyIG9yaWdpbmFsUmVzb3VyY2UgPSB0aGlzLl9y
ZXNvdXJjZXNCeUlkW2lkZW50aWZpZXJdOwotICAgICAgICBvcmlnaW5hbFJlc291cmNlLmlkZW50
aWZpZXIgPSBudWxsOwotCi0gICAgICAgIHZhciBuZXdSZXNvdXJjZSA9IHRoaXMuX2NyZWF0ZVJl
c291cmNlKGlkZW50aWZpZXIsIHJlZGlyZWN0VVJMLCBvcmlnaW5hbFJlc291cmNlLmxvYWRlciwg
b3JpZ2luYWxSZXNvdXJjZS5zdGFja1RyYWNlKTsKLSAgICAgICAgbmV3UmVzb3VyY2UucmVkaXJl
Y3RzID0gb3JpZ2luYWxSZXNvdXJjZS5yZWRpcmVjdHMgfHwgW107Ci0gICAgICAgIGRlbGV0ZSBv
cmlnaW5hbFJlc291cmNlLnJlZGlyZWN0czsKLSAgICAgICAgbmV3UmVzb3VyY2UucmVkaXJlY3Rz
LnB1c2gob3JpZ2luYWxSZXNvdXJjZSk7Ci0gICAgICAgIHJldHVybiBuZXdSZXNvdXJjZTsKLSAg
ICB9LAotCi0gICAgbWFya1Jlc291cmNlQXNDYWNoZWQ6IGZ1bmN0aW9uKGlkZW50aWZpZXIpCi0g
ICAgewotICAgICAgICB2YXIgcmVzb3VyY2UgPSB0aGlzLl9yZXNvdXJjZXNCeUlkW2lkZW50aWZp
ZXJdOwotICAgICAgICBpZiAoIXJlc291cmNlKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAg
ICAgIHJlc291cmNlLmNhY2hlZCA9IHRydWU7Ci0gICAgICAgIFdlYkluc3BlY3Rvci5wYW5lbHMu
bmV0d29yay5yZWZyZXNoUmVzb3VyY2UocmVzb3VyY2UpOwotICAgIH0sCi0KLSAgICBkaWRSZWNl
aXZlUmVzcG9uc2U6IGZ1bmN0aW9uKGlkZW50aWZpZXIsIHRpbWUsIHJlc291cmNlVHlwZSwgcmVz
cG9uc2UpCi0gICAgewotICAgICAgICB2YXIgcmVzb3VyY2UgPSB0aGlzLl9yZXNvdXJjZXNCeUlk
W2lkZW50aWZpZXJdOwotICAgICAgICBpZiAoIXJlc291cmNlKQotICAgICAgICAgICAgcmV0dXJu
OwotCi0gICAgICAgIHJlc291cmNlLnJlc3BvbnNlUmVjZWl2ZWRUaW1lID0gdGltZTsKLSAgICAg
ICAgcmVzb3VyY2UudHlwZSA9IFdlYkluc3BlY3Rvci5SZXNvdXJjZS5UeXBlW3Jlc291cmNlVHlw
ZV07Ci0KLSAgICAgICAgdGhpcy5fdXBkYXRlUmVzb3VyY2VXaXRoUmVzcG9uc2UocmVzb3VyY2Us
IHJlc3BvbnNlKTsKLQotICAgICAgICBXZWJJbnNwZWN0b3IucGFuZWxzLm5ldHdvcmsucmVmcmVz
aFJlc291cmNlKHJlc291cmNlKTsKLSAgICAgICAgdGhpcy5fcmVzb3VyY2VUcmVlTW9kZWwuYWRk
UmVzb3VyY2VUb0ZyYW1lKHJlc291cmNlLmxvYWRlci5mcmFtZUlkLCByZXNvdXJjZSk7Ci0gICAg
fSwKLQotICAgIF91cGRhdGVSZXNvdXJjZVdpdGhSZXNwb25zZTogZnVuY3Rpb24ocmVzb3VyY2Us
IHJlc3BvbnNlKQotICAgIHsKLSAgICAgICAgaWYgKHJlc291cmNlLmlzTnVsbCkKLSAgICAgICAg
ICAgIHJldHVybjsKLQotICAgICAgICByZXNvdXJjZS5taW1lVHlwZSA9IHJlc3BvbnNlLm1pbWVU
eXBlOwotICAgICAgICByZXNvdXJjZS5leHBlY3RlZENvbnRlbnRMZW5ndGggPSByZXNwb25zZS5l
eHBlY3RlZENvbnRlbnRMZW5ndGg7Ci0gICAgICAgIHJlc291cmNlLnRleHRFbmNvZGluZ05hbWUg
PSByZXNwb25zZS50ZXh0RW5jb2RpbmdOYW1lOwotICAgICAgICByZXNvdXJjZS5zdWdnZXN0ZWRG
aWxlbmFtZSA9IHJlc3BvbnNlLnN1Z2dlc3RlZEZpbGVuYW1lOwotICAgICAgICByZXNvdXJjZS5z
dGF0dXNDb2RlID0gcmVzcG9uc2UuaHR0cFN0YXR1c0NvZGU7Ci0gICAgICAgIHJlc291cmNlLnN0
YXR1c1RleHQgPSByZXNwb25zZS5odHRwU3RhdHVzVGV4dDsKLQotICAgICAgICByZXNvdXJjZS5y
ZXNwb25zZUhlYWRlcnMgPSByZXNwb25zZS5odHRwSGVhZGVyRmllbGRzOwotICAgICAgICByZXNv
dXJjZS5jb25uZWN0aW9uUmV1c2VkID0gcmVzcG9uc2UuY29ubmVjdGlvblJldXNlZDsKLSAgICAg
ICAgcmVzb3VyY2UuY29ubmVjdGlvbklEID0gcmVzcG9uc2UuY29ubmVjdGlvbklEOwotCi0gICAg
ICAgIGlmIChyZXNwb25zZS53YXNDYWNoZWQpCi0gICAgICAgICAgICByZXNvdXJjZS5jYWNoZWQg
PSB0cnVlOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICByZXNvdXJjZS50aW1pbmcgPSByZXNw
b25zZS50aW1pbmc7Ci0KLSAgICAgICAgaWYgKHJlc3BvbnNlLmxvYWRJbmZvKSB7Ci0gICAgICAg
ICAgICBpZiAocmVzcG9uc2UubG9hZEluZm8uaHR0cFN0YXR1c0NvZGUpCi0gICAgICAgICAgICAg
ICAgcmVzb3VyY2Uuc3RhdHVzQ29kZSA9IHJlc3BvbnNlLmxvYWRJbmZvLmh0dHBTdGF0dXNDb2Rl
OwotICAgICAgICAgICAgaWYgKHJlc3BvbnNlLmxvYWRJbmZvLmh0dHBTdGF0dXNUZXh0KQotICAg
ICAgICAgICAgICAgIHJlc291cmNlLnN0YXR1c1RleHQgPSByZXNwb25zZS5sb2FkSW5mby5odHRw
U3RhdHVzVGV4dDsKLSAgICAgICAgICAgIHJlc291cmNlLnJlcXVlc3RIZWFkZXJzID0gcmVzcG9u
c2UubG9hZEluZm8ucmVxdWVzdEhlYWRlcnM7Ci0gICAgICAgICAgICByZXNvdXJjZS5yZXNwb25z
ZUhlYWRlcnMgPSByZXNwb25zZS5sb2FkSW5mby5yZXNwb25zZUhlYWRlcnM7Ci0gICAgICAgIH0K
LSAgICB9LAotCi0gICAgZGlkUmVjZWl2ZUNvbnRlbnRMZW5ndGg6IGZ1bmN0aW9uKGlkZW50aWZp
ZXIsIHRpbWUsIGxlbmd0aFJlY2VpdmVkKQotICAgIHsKLSAgICAgICAgdmFyIHJlc291cmNlID0g
dGhpcy5fcmVzb3VyY2VzQnlJZFtpZGVudGlmaWVyXTsKLSAgICAgICAgaWYgKCFyZXNvdXJjZSkK
LSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICByZXNvdXJjZS5yZXNvdXJjZVNpemUgKz0g
bGVuZ3RoUmVjZWl2ZWQ7Ci0gICAgICAgIHJlc291cmNlLmVuZFRpbWUgPSB0aW1lOwotCi0gICAg
ICAgIFdlYkluc3BlY3Rvci5wYW5lbHMubmV0d29yay5yZWZyZXNoUmVzb3VyY2UocmVzb3VyY2Up
OwotICAgIH0sCi0KLSAgICBkaWRGaW5pc2hMb2FkaW5nOiBmdW5jdGlvbihpZGVudGlmaWVyLCBm
aW5pc2hUaW1lKQotICAgIHsKLSAgICAgICAgdmFyIHJlc291cmNlID0gdGhpcy5fcmVzb3VyY2Vz
QnlJZFtpZGVudGlmaWVyXTsKLSAgICAgICAgaWYgKCFyZXNvdXJjZSkKLSAgICAgICAgICAgIHJl
dHVybjsKLQotICAgICAgICByZXNvdXJjZS5lbmRUaW1lID0gZmluaXNoVGltZTsKLSAgICAgICAg
cmVzb3VyY2UuZmluaXNoZWQgPSB0cnVlOwotCi0gICAgICAgIFdlYkluc3BlY3Rvci5wYW5lbHMu
bmV0d29yay5yZWZyZXNoUmVzb3VyY2UocmVzb3VyY2UpOwotICAgICAgICBXZWJJbnNwZWN0b3Iu
cGFuZWxzLmF1ZGl0cy5yZXNvdXJjZUZpbmlzaGVkKHJlc291cmNlKTsKLSAgICAgICAgV2ViSW5z
cGVjdG9yLmV4dGVuc2lvblNlcnZlci5ub3RpZnlSZXNvdXJjZUZpbmlzaGVkKHJlc291cmNlKTsK
LSAgICAgICAgZGVsZXRlIHRoaXMuX3Jlc291cmNlc0J5SWRbaWRlbnRpZmllcl07Ci0gICAgfSwK
LQotICAgIGRpZEZhaWxMb2FkaW5nOiBmdW5jdGlvbihpZGVudGlmaWVyLCB0aW1lLCBsb2NhbGl6
ZWREZXNjcmlwdGlvbikKLSAgICB7Ci0gICAgICAgIHZhciByZXNvdXJjZSA9IHRoaXMuX3Jlc291
cmNlc0J5SWRbaWRlbnRpZmllcl07Ci0gICAgICAgIGlmICghcmVzb3VyY2UpCi0gICAgICAgICAg
ICByZXR1cm47Ci0KLSAgICAgICAgcmVzb3VyY2UuZmFpbGVkID0gdHJ1ZTsKLSAgICAgICAgcmVz
b3VyY2UubG9jYWxpemVkRmFpbERlc2NyaXB0aW9uID0gbG9jYWxpemVkRGVzY3JpcHRpb247Ci0g
ICAgICAgIHJlc291cmNlLmZpbmlzaGVkID0gdHJ1ZTsKLSAgICAgICAgcmVzb3VyY2UuZW5kVGlt
ZSA9IHRpbWU7Ci0KLSAgICAgICAgV2ViSW5zcGVjdG9yLnBhbmVscy5uZXR3b3JrLnJlZnJlc2hS
ZXNvdXJjZShyZXNvdXJjZSk7Ci0gICAgICAgIFdlYkluc3BlY3Rvci5wYW5lbHMuYXVkaXRzLnJl
c291cmNlRmluaXNoZWQocmVzb3VyY2UpOwotICAgICAgICBXZWJJbnNwZWN0b3IuZXh0ZW5zaW9u
U2VydmVyLm5vdGlmeVJlc291cmNlRmluaXNoZWQocmVzb3VyY2UpOwotICAgICAgICBkZWxldGUg
dGhpcy5fcmVzb3VyY2VzQnlJZFtpZGVudGlmaWVyXTsKLSAgICB9LAotCi0gICAgZGlkTG9hZFJl
c291cmNlRnJvbU1lbW9yeUNhY2hlOiBmdW5jdGlvbih0aW1lLCBjYWNoZWRSZXNvdXJjZSkKLSAg
ICB7Ci0gICAgICAgIHZhciByZXNvdXJjZSA9IHRoaXMuX2NyZWF0ZVJlc291cmNlKG51bGwsIGNh
Y2hlZFJlc291cmNlLnVybCwgY2FjaGVkUmVzb3VyY2UubG9hZGVyKTsKLSAgICAgICAgdGhpcy5f
dXBkYXRlUmVzb3VyY2VXaXRoQ2FjaGVkUmVzb3VyY2UocmVzb3VyY2UsIGNhY2hlZFJlc291cmNl
KTsKLSAgICAgICAgcmVzb3VyY2UuY2FjaGVkID0gdHJ1ZTsKLSAgICAgICAgcmVzb3VyY2UucmVx
dWVzdE1ldGhvZCA9ICJHRVQiOwotICAgICAgICByZXNvdXJjZS5zdGFydFRpbWUgPSByZXNvdXJj
ZS5yZXNwb25zZVJlY2VpdmVkVGltZSA9IHJlc291cmNlLmVuZFRpbWUgPSB0aW1lOwotICAgICAg
ICByZXNvdXJjZS5maW5pc2hlZCA9IHRydWU7Ci0KLSAgICAgICAgV2ViSW5zcGVjdG9yLnBhbmVs
cy5uZXR3b3JrLnJlZnJlc2hSZXNvdXJjZShyZXNvdXJjZSk7Ci0gICAgICAgIFdlYkluc3BlY3Rv
ci5wYW5lbHMuYXVkaXRzLnJlc291cmNlU3RhcnRlZChyZXNvdXJjZSk7Ci0gICAgICAgIFdlYklu
c3BlY3Rvci5wYW5lbHMuYXVkaXRzLnJlc291cmNlRmluaXNoZWQocmVzb3VyY2UpOwotICAgICAg
ICB0aGlzLl9yZXNvdXJjZVRyZWVNb2RlbC5hZGRSZXNvdXJjZVRvRnJhbWUocmVzb3VyY2UubG9h
ZGVyLmZyYW1lSWQsIHJlc291cmNlKTsKLSAgICB9LAotCi0gICAgX3VwZGF0ZVJlc291cmNlV2l0
aENhY2hlZFJlc291cmNlOiBmdW5jdGlvbihyZXNvdXJjZSwgY2FjaGVkUmVzb3VyY2UpCi0gICAg
ewotICAgICAgICByZXNvdXJjZS50eXBlID0gV2ViSW5zcGVjdG9yLlJlc291cmNlLlR5cGVbY2Fj
aGVkUmVzb3VyY2UudHlwZV07Ci0gICAgICAgIHJlc291cmNlLnJlc291cmNlU2l6ZSA9IGNhY2hl
ZFJlc291cmNlLmVuY29kZWRTaXplOwotICAgICAgICB0aGlzLl91cGRhdGVSZXNvdXJjZVdpdGhS
ZXNwb25zZShyZXNvdXJjZSwgY2FjaGVkUmVzb3VyY2UucmVzcG9uc2UpOwotICAgIH0sCi0KLSAg
ICBzZXRJbml0aWFsQ29udGVudDogZnVuY3Rpb24oaWRlbnRpZmllciwgc291cmNlU3RyaW5nLCB0
eXBlKQotICAgIHsKLSAgICAgICAgdmFyIHJlc291cmNlID0gV2ViSW5zcGVjdG9yLnBhbmVscy5u
ZXR3b3JrLnJlc291cmNlc1tpZGVudGlmaWVyXTsKLSAgICAgICAgaWYgKCFyZXNvdXJjZSkKLSAg
ICAgICAgICAgIHJldHVybjsKLQotICAgICAgICByZXNvdXJjZS50eXBlID0gV2ViSW5zcGVjdG9y
LlJlc291cmNlLlR5cGVbdHlwZV07Ci0gICAgICAgIHJlc291cmNlLnNldEluaXRpYWxDb250ZW50
KHNvdXJjZVN0cmluZyk7Ci0gICAgICAgIFdlYkluc3BlY3Rvci5wYW5lbHMucmVzb3VyY2VzLnJl
ZnJlc2hSZXNvdXJjZShyZXNvdXJjZSk7Ci0gICAgICAgIFdlYkluc3BlY3Rvci5wYW5lbHMubmV0
d29yay5yZWZyZXNoUmVzb3VyY2UocmVzb3VyY2UpOwotICAgIH0sCi0KLSAgICBkaWRDb21taXRM
b2FkRm9yRnJhbWU6IGZ1bmN0aW9uKGZyYW1lLCBsb2FkZXIpCi0gICAgewotICAgICAgICB0aGlz
Ll9yZXNvdXJjZVRyZWVNb2RlbC5kaWRDb21taXRMb2FkRm9yRnJhbWUoZnJhbWUsIGxvYWRlcik7
Ci0gICAgICAgIGlmICghZnJhbWUucGFyZW50SWQpIHsKLSAgICAgICAgICAgIHZhciBtYWluUmVz
b3VyY2UgPSB0aGlzLnJlc291cmNlRm9yVVJMKGZyYW1lLnVybCk7Ci0gICAgICAgICAgICBpZiAo
bWFpblJlc291cmNlKSB7Ci0gICAgICAgICAgICAgICAgV2ViSW5zcGVjdG9yLm1haW5SZXNvdXJj
ZSA9IG1haW5SZXNvdXJjZTsKLSAgICAgICAgICAgICAgICBtYWluUmVzb3VyY2UuaXNNYWluUmVz
b3VyY2UgPSB0cnVlOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfSwKLQotICAgIGZy
YW1lRGV0YWNoZWRGcm9tUGFyZW50OiBmdW5jdGlvbihmcmFtZUlkKQotICAgIHsKLSAgICAgICAg
dGhpcy5fcmVzb3VyY2VUcmVlTW9kZWwuZnJhbWVEZXRhY2hlZEZyb21QYXJlbnQoZnJhbWVJZCk7
Ci0gICAgfSwKLQotICAgIGRpZENyZWF0ZVdlYlNvY2tldDogZnVuY3Rpb24oaWRlbnRpZmllciwg
cmVxdWVzdFVSTCkKLSAgICB7Ci0gICAgICAgIHZhciByZXNvdXJjZSA9IHRoaXMuX2NyZWF0ZVJl
c291cmNlKGlkZW50aWZpZXIsIHJlcXVlc3RVUkwpOwotICAgICAgICByZXNvdXJjZS50eXBlID0g
V2ViSW5zcGVjdG9yLlJlc291cmNlLlR5cGUuV2ViU29ja2V0OwotICAgICAgICBXZWJJbnNwZWN0
b3IucGFuZWxzLm5ldHdvcmsucmVmcmVzaFJlc291cmNlKHJlc291cmNlKTsKLSAgICB9LAotCi0g
ICAgd2lsbFNlbmRXZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0OiBmdW5jdGlvbihpZGVudGlmaWVy
LCB0aW1lLCByZXF1ZXN0KQotICAgIHsKLSAgICAgICAgdmFyIHJlc291cmNlID0gdGhpcy5fcmVz
b3VyY2VzQnlJZFtpZGVudGlmaWVyXTsKLSAgICAgICAgaWYgKCFyZXNvdXJjZSkKLSAgICAgICAg
ICAgIHJldHVybjsKLQotICAgICAgICByZXNvdXJjZS5yZXF1ZXN0TWV0aG9kID0gIkdFVCI7Ci0g
ICAgICAgIHJlc291cmNlLnJlcXVlc3RIZWFkZXJzID0gcmVxdWVzdC53ZWJTb2NrZXRIZWFkZXJG
aWVsZHM7Ci0gICAgICAgIHJlc291cmNlLndlYlNvY2tldFJlcXVlc3RLZXkzID0gcmVxdWVzdC53
ZWJTb2NrZXRSZXF1ZXN0S2V5MzsKLSAgICAgICAgcmVzb3VyY2Uuc3RhcnRUaW1lID0gdGltZTsK
LQotICAgICAgICBXZWJJbnNwZWN0b3IucGFuZWxzLm5ldHdvcmsucmVmcmVzaFJlc291cmNlKHJl
c291cmNlKTsKLSAgICB9LAotCi0gICAgZGlkUmVjZWl2ZVdlYlNvY2tldEhhbmRzaGFrZVJlc3Bv
bnNlOiBmdW5jdGlvbihpZGVudGlmaWVyLCB0aW1lLCByZXNwb25zZSkKLSAgICB7Ci0gICAgICAg
IHZhciByZXNvdXJjZSA9IHRoaXMuX3Jlc291cmNlc0J5SWRbaWRlbnRpZmllcl07Ci0gICAgICAg
IGlmICghcmVzb3VyY2UpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgcmVzb3VyY2Uu
c3RhdHVzQ29kZSA9IHJlc3BvbnNlLnN0YXR1c0NvZGU7Ci0gICAgICAgIHJlc291cmNlLnN0YXR1
c1RleHQgPSByZXNwb25zZS5zdGF0dXNUZXh0OwotICAgICAgICByZXNvdXJjZS5yZXNwb25zZUhl
YWRlcnMgPSByZXNwb25zZS53ZWJTb2NrZXRIZWFkZXJGaWVsZHM7Ci0gICAgICAgIHJlc291cmNl
LndlYlNvY2tldENoYWxsZW5nZVJlc3BvbnNlID0gcmVzcG9uc2Uud2ViU29ja2V0Q2hhbGxlbmdl
UmVzcG9uc2U7Ci0gICAgICAgIHJlc291cmNlLnJlc3BvbnNlUmVjZWl2ZWRUaW1lID0gdGltZTsK
LQotICAgICAgICBXZWJJbnNwZWN0b3IucGFuZWxzLm5ldHdvcmsucmVmcmVzaFJlc291cmNlKHJl
c291cmNlKTsKLSAgICB9LAotCi0gICAgZGlkQ2xvc2VXZWJTb2NrZXQ6IGZ1bmN0aW9uKGlkZW50
aWZpZXIsIHRpbWUpCi0gICAgewotICAgICAgICB2YXIgcmVzb3VyY2UgPSB0aGlzLl9yZXNvdXJj
ZXNCeUlkW2lkZW50aWZpZXJdOwotICAgICAgICBpZiAoIXJlc291cmNlKQotICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICByZXNvdXJjZS5lbmRUaW1lID0gdGltZTsKLQotICAgICAgICBXZWJJ
bnNwZWN0b3IucGFuZWxzLm5ldHdvcmsucmVmcmVzaFJlc291cmNlKHJlc291cmNlKTsKLSAgICB9
LAotCi0gICAgX3Byb2Nlc3NDYWNoZWRSZXNvdXJjZXM6IGZ1bmN0aW9uKG1haW5GcmFtZVBheWxv
YWQpCi0gICAgewotICAgICAgICB2YXIgbWFpblJlc291cmNlID0gdGhpcy5fYWRkRnJhbWVzUmVj
dXJzaXZlbHkobWFpbkZyYW1lUGF5bG9hZCk7Ci0gICAgICAgIFdlYkluc3BlY3Rvci5tYWluUmVz
b3VyY2UgPSBtYWluUmVzb3VyY2U7Ci0gICAgICAgIG1haW5SZXNvdXJjZS5pc01haW5SZXNvdXJj
ZSA9IHRydWU7Ci0gICAgfSwKLQotICAgIF9hZGRGcmFtZXNSZWN1cnNpdmVseTogZnVuY3Rpb24o
ZnJhbWVQYXlsb2FkKQotICAgIHsKLSAgICAgICAgdmFyIGZyYW1lUmVzb3VyY2UgPSB0aGlzLl9j
cmVhdGVSZXNvdXJjZShudWxsLCBmcmFtZVBheWxvYWQucmVzb3VyY2UudXJsLCBmcmFtZVBheWxv
YWQucmVzb3VyY2UubG9hZGVyKTsKLSAgICAgICAgdGhpcy5fdXBkYXRlUmVzb3VyY2VXaXRoUmVx
dWVzdChmcmFtZVJlc291cmNlLCBmcmFtZVBheWxvYWQucmVzb3VyY2UucmVxdWVzdCk7Ci0gICAg
ICAgIHRoaXMuX3VwZGF0ZVJlc291cmNlV2l0aFJlc3BvbnNlKGZyYW1lUmVzb3VyY2UsIGZyYW1l
UGF5bG9hZC5yZXNvdXJjZS5yZXNwb25zZSk7Ci0gICAgICAgIGZyYW1lUmVzb3VyY2UudHlwZSA9
IFdlYkluc3BlY3Rvci5SZXNvdXJjZS5UeXBlWyJEb2N1bWVudCJdOwotICAgICAgICBmcmFtZVJl
c291cmNlLmZpbmlzaGVkID0gdHJ1ZTsKLSAgICAgICAgdGhpcy5fYmluZFJlc291cmNlVVJMKGZy
YW1lUmVzb3VyY2UpOwotCi0gICAgICAgIHRoaXMuX3Jlc291cmNlVHJlZU1vZGVsLmFkZE9yVXBk
YXRlRnJhbWUoZnJhbWVQYXlsb2FkKTsKLSAgICAgICAgdGhpcy5fcmVzb3VyY2VUcmVlTW9kZWwu
YWRkUmVzb3VyY2VUb0ZyYW1lKGZyYW1lUGF5bG9hZC5pZCwgZnJhbWVSZXNvdXJjZSk7Ci0KLSAg
ICAgICAgZm9yICh2YXIgaSA9IDA7IGZyYW1lUGF5bG9hZC5jaGlsZHJlbiAmJiBpIDwgZnJhbWVQ
YXlsb2FkLmNoaWxkcmVuLmxlbmd0aDsgKytpKQotICAgICAgICAgICAgdGhpcy5fYWRkRnJhbWVz
UmVjdXJzaXZlbHkoZnJhbWVQYXlsb2FkLmNoaWxkcmVuW2ldKTsKLQotICAgICAgICBpZiAoIWZy
YW1lUGF5bG9hZC5zdWJyZXNvdXJjZXMpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAg
Zm9yICh2YXIgaSA9IDA7IGkgPCBmcmFtZVBheWxvYWQuc3VicmVzb3VyY2VzLmxlbmd0aDsgKytp
KSB7Ci0gICAgICAgICAgICB2YXIgY2FjaGVkUmVzb3VyY2UgPSBmcmFtZVBheWxvYWQuc3VicmVz
b3VyY2VzW2ldOwotICAgICAgICAgICAgdmFyIHJlc291cmNlID0gdGhpcy5fY3JlYXRlUmVzb3Vy
Y2UobnVsbCwgY2FjaGVkUmVzb3VyY2UudXJsLCBjYWNoZWRSZXNvdXJjZS5sb2FkZXIpOwotICAg
ICAgICAgICAgdGhpcy5fdXBkYXRlUmVzb3VyY2VXaXRoQ2FjaGVkUmVzb3VyY2UocmVzb3VyY2Us
IGNhY2hlZFJlc291cmNlKTsKLSAgICAgICAgICAgIHJlc291cmNlLmZpbmlzaGVkID0gdHJ1ZTsK
LSAgICAgICAgICAgIHRoaXMuX2JpbmRSZXNvdXJjZVVSTChyZXNvdXJjZSk7Ci0gICAgICAgICAg
ICB0aGlzLl9yZXNvdXJjZVRyZWVNb2RlbC5hZGRSZXNvdXJjZVRvRnJhbWUoZnJhbWVQYXlsb2Fk
LmlkLCByZXNvdXJjZSk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIGZyYW1lUmVzb3VyY2U7
Ci0gICAgfSwKLQotICAgIHJlc291cmNlRm9yVVJMOiBmdW5jdGlvbih1cmwpCi0gICAgewotICAg
ICAgICAvLyBGSVhNRTogcmVjZWl2ZSBmcmFtZUlkIGhlcmUuCi0gICAgICAgIHZhciBlbnRyeSA9
IHRoaXMuX3Jlc291cmNlc0J5VVJMW3VybF07Ci0gICAgICAgIGlmIChlbnRyeSBpbnN0YW5jZW9m
IEFycmF5KQotICAgICAgICAgICAgcmV0dXJuIGVudHJ5WzBdOwotICAgICAgICByZXR1cm4gZW50
cnk7Ci0gICAgfSwKLQotICAgIGFkZENvbnNvbGVNZXNzYWdlOiBmdW5jdGlvbihtc2cpCi0gICAg
ewotICAgICAgICB2YXIgcmVzb3VyY2UgPSB0aGlzLnJlc291cmNlRm9yVVJMKG1zZy51cmwpOwot
ICAgICAgICBpZiAoIXJlc291cmNlKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIHN3
aXRjaCAobXNnLmxldmVsKSB7Ci0gICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNz
YWdlLk1lc3NhZ2VMZXZlbC5XYXJuaW5nOgotICAgICAgICAgICAgcmVzb3VyY2Uud2FybmluZ3Mg
Kz0gbXNnLnJlcGVhdERlbHRhOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgV2Vi
SW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlLk1lc3NhZ2VMZXZlbC5FcnJvcjoKLSAgICAgICAgICAg
IHJlc291cmNlLmVycm9ycyArPSBtc2cucmVwZWF0RGVsdGE7Ci0gICAgICAgICAgICBicmVhazsK
LSAgICAgICAgfQotCi0gICAgICAgIHZhciB2aWV3ID0gV2ViSW5zcGVjdG9yLlJlc291cmNlTWFu
YWdlci5yZXNvdXJjZVZpZXdGb3JSZXNvdXJjZShyZXNvdXJjZSk7Ci0gICAgICAgIGlmICh2aWV3
LmFkZE1lc3NhZ2UpCi0gICAgICAgICAgICB2aWV3LmFkZE1lc3NhZ2UobXNnKTsKLSAgICB9LAot
Ci0gICAgY2xlYXJDb25zb2xlTWVzc2FnZXM6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIGZ1
bmN0aW9uIGNhbGxiYWNrKHJlc291cmNlKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXNvdXJj
ZS5jbGVhckVycm9yc0FuZFdhcm5pbmdzKCk7Ci0gICAgICAgIH0KLSAgICAgICAgdGhpcy5fcmVz
b3VyY2VUcmVlTW9kZWwuZm9yQWxsUmVzb3VyY2VzKGNhbGxiYWNrKTsKLSAgICB9LAotCi0gICAg
Zm9yQWxsUmVzb3VyY2VzOiBmdW5jdGlvbihjYWxsYmFjaykKLSAgICB7Ci0gICAgICAgIHRoaXMu
X3Jlc291cmNlVHJlZU1vZGVsLmZvckFsbFJlc291cmNlcyhjYWxsYmFjayk7Ci0gICAgfSwKLQot
ICAgIF9iaW5kUmVzb3VyY2VVUkw6IGZ1bmN0aW9uKHJlc291cmNlKQotICAgIHsKLSAgICAgICAg
dmFyIHJlc291cmNlRm9yVVJMID0gdGhpcy5fcmVzb3VyY2VzQnlVUkxbcmVzb3VyY2UudXJsXTsK
LSAgICAgICAgaWYgKCFyZXNvdXJjZUZvclVSTCkKLSAgICAgICAgICAgIHRoaXMuX3Jlc291cmNl
c0J5VVJMW3Jlc291cmNlLnVybF0gPSByZXNvdXJjZTsKLSAgICAgICAgZWxzZSBpZiAocmVzb3Vy
Y2VGb3JVUkwgaW5zdGFuY2VvZiBBcnJheSkKLSAgICAgICAgICAgIHJlc291cmNlRm9yVVJMLnB1
c2gocmVzb3VyY2UpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICB0aGlzLl9yZXNvdXJjZXNC
eVVSTFtyZXNvdXJjZS51cmxdID0gW3Jlc291cmNlRm9yVVJMLCByZXNvdXJjZV07Ci0gICAgfSwK
LQotICAgIF91bmJpbmRSZXNvdXJjZVVSTDogZnVuY3Rpb24ocmVzb3VyY2UpCi0gICAgewotICAg
ICAgICB2YXIgcmVzb3VyY2VGb3JVUkwgPSB0aGlzLl9yZXNvdXJjZXNCeVVSTFtyZXNvdXJjZS51
cmxdOwotICAgICAgICBpZiAoIXJlc291cmNlRm9yVVJMKQotICAgICAgICAgICAgcmV0dXJuOwot
Ci0gICAgICAgIGlmIChyZXNvdXJjZUZvclVSTCBpbnN0YW5jZW9mIEFycmF5KSB7Ci0gICAgICAg
ICAgICByZXNvdXJjZUZvclVSTC5yZW1vdmUocmVzb3VyY2UsIHRydWUpOwotICAgICAgICAgICAg
aWYgKHJlc291cmNlRm9yVVJMLmxlbmd0aCA9PT0gMSkKLSAgICAgICAgICAgICAgICB0aGlzLl9y
ZXNvdXJjZXNCeVVSTFtyZXNvdXJjZS51cmxdID0gcmVzb3VyY2VGb3JVUkxbMF07Ci0gICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBkZWxldGUgdGhpcy5fcmVzb3VyY2Vz
QnlVUkxbcmVzb3VyY2UudXJsXTsKLSAgICB9LAotCi0gICAgdXBkYXRlRE9NU3RvcmFnZTogZnVu
Y3Rpb24oc3RvcmFnZUlkKQotICAgIHsKLSAgICAgICAgV2ViSW5zcGVjdG9yLnBhbmVscy5yZXNv
dXJjZXMudXBkYXRlRE9NU3RvcmFnZShzdG9yYWdlSWQpOwotICAgIH0sCi0KLSAgICB1cGRhdGVB
cHBsaWNhdGlvbkNhY2hlU3RhdHVzOiBmdW5jdGlvbihzdGF0dXMpCi0gICAgewotICAgICAgICBX
ZWJJbnNwZWN0b3IucGFuZWxzLnJlc291cmNlcy51cGRhdGVBcHBsaWNhdGlvbkNhY2hlU3RhdHVz
KHN0YXR1cyk7Ci0gICAgfSwKLQotICAgIGRpZEdldEZpbGVTeXN0ZW1QYXRoOiBmdW5jdGlvbihy
b290LCB0eXBlLCBvcmlnaW4pCi0gICAgewotICAgICAgICBXZWJJbnNwZWN0b3IucGFuZWxzLnJl
c291cmNlcy51cGRhdGVGaWxlU3lzdGVtUGF0aChyb290LCB0eXBlLCBvcmlnaW4pOwotICAgIH0s
Ci0KLSAgICBkaWRHZXRGaWxlU3lzdGVtRXJyb3I6IGZ1bmN0aW9uKHR5cGUsIG9yaWdpbikKLSAg
ICB7Ci0gICAgICAgIFdlYkluc3BlY3Rvci5wYW5lbHMucmVzb3VyY2VzLnVwZGF0ZUZpbGVTeXN0
ZW1FcnJvcih0eXBlLCBvcmlnaW4pOwotICAgIH0sCi0KLSAgICBkaWRHZXRGaWxlU3lzdGVtRGlz
YWJsZWQ6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIFdlYkluc3BlY3Rvci5wYW5lbHMucmVz
b3VyY2VzLnNldEZpbGVTeXN0ZW1EaXNhYmxlZCgpOwotICAgIH0sCi0KLSAgICB1cGRhdGVOZXR3
b3JrU3RhdGU6IGZ1bmN0aW9uKGlzTm93T25saW5lKQotICAgIHsKLSAgICAgICAgV2ViSW5zcGVj
dG9yLnBhbmVscy5yZXNvdXJjZXMudXBkYXRlTmV0d29ya1N0YXRlKGlzTm93T25saW5lKTsKLSAg
ICB9LAotCi0gICAgYWRkRE9NU3RvcmFnZTogZnVuY3Rpb24ocGF5bG9hZCkKLSAgICB7Ci0gICAg
ICAgIGlmICghV2ViSW5zcGVjdG9yLnBhbmVscy5yZXNvdXJjZXMpCi0gICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgIHZhciBkb21TdG9yYWdlID0gbmV3IFdlYkluc3BlY3Rvci5ET01TdG9yYWdl
KAotICAgICAgICAgICAgcGF5bG9hZC5pZCwKLSAgICAgICAgICAgIHBheWxvYWQuaG9zdCwKLSAg
ICAgICAgICAgIHBheWxvYWQuaXNMb2NhbFN0b3JhZ2UpOwotICAgICAgICBXZWJJbnNwZWN0b3Iu
cGFuZWxzLnJlc291cmNlcy5hZGRET01TdG9yYWdlKGRvbVN0b3JhZ2UpOwotICAgIH0sCi0KLSAg
ICBzZWxlY3RET01TdG9yYWdlOiBmdW5jdGlvbihvKQotICAgIHsKLSAgICAgICAgV2ViSW5zcGVj
dG9yLnNob3dQYW5lbCgicmVzb3VyY2VzIik7Ci0gICAgICAgIFdlYkluc3BlY3Rvci5wYW5lbHMu
cmVzb3VyY2VzLnNlbGVjdERPTVN0b3JhZ2Uobyk7Ci0gICAgfSwKLQotICAgIGFkZERhdGFiYXNl
OiBmdW5jdGlvbihwYXlsb2FkKQotICAgIHsKLSAgICAgICAgaWYgKCFXZWJJbnNwZWN0b3IucGFu
ZWxzLnJlc291cmNlcykKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgdmFyIGRhdGFiYXNl
ID0gbmV3IFdlYkluc3BlY3Rvci5EYXRhYmFzZSgKLSAgICAgICAgICAgIHBheWxvYWQuaWQsCi0g
ICAgICAgICAgICBwYXlsb2FkLmRvbWFpbiwKLSAgICAgICAgICAgIHBheWxvYWQubmFtZSwKLSAg
ICAgICAgICAgIHBheWxvYWQudmVyc2lvbik7Ci0gICAgICAgIFdlYkluc3BlY3Rvci5wYW5lbHMu
cmVzb3VyY2VzLmFkZERhdGFiYXNlKGRhdGFiYXNlKTsKLSAgICB9LAotCi0gICAgc2VsZWN0RGF0
YWJhc2U6IGZ1bmN0aW9uKG8pCi0gICAgewotICAgICAgICBXZWJJbnNwZWN0b3Iuc2hvd1BhbmVs
KCJyZXNvdXJjZXMiKTsKLSAgICAgICAgV2ViSW5zcGVjdG9yLnBhbmVscy5yZXNvdXJjZXMuc2Vs
ZWN0RGF0YWJhc2Uobyk7Ci0gICAgfSwKLQotICAgIHNxbFRyYW5zYWN0aW9uU3VjY2VlZGVkOiBm
dW5jdGlvbih0cmFuc2FjdGlvbklkLCBjb2x1bW5OYW1lcywgdmFsdWVzKQotICAgIHsKLSAgICAg
ICAgdmFyIGNhbGxiYWNrID0gV2ViSW5zcGVjdG9yLkRhdGFiYXNlLnN1Y2Nlc3NDYWxsYmFja3Nb
dHJhbnNhY3Rpb25JZF07Ci0gICAgICAgIGlmICghY2FsbGJhY2spCi0gICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgIGRlbGV0ZSBXZWJJbnNwZWN0b3IuRGF0YWJhc2Uuc3VjY2Vzc0NhbGxiYWNr
c1t0cmFuc2FjdGlvbklkXTsKLSAgICAgICAgY2FsbGJhY2soY29sdW1uTmFtZXMsIHZhbHVlcyk7
Ci0gICAgfSwKLQotICAgIHNxbFRyYW5zYWN0aW9uRmFpbGVkOiBmdW5jdGlvbih0cmFuc2FjdGlv
bklkLCBlcnJvck9iaikKLSAgICB7Ci0gICAgICAgIHZhciBjYWxsYmFjayA9IFdlYkluc3BlY3Rv
ci5EYXRhYmFzZS5lcnJvckNhbGxiYWNrc1t0cmFuc2FjdGlvbklkXTsKLSAgICAgICAgaWYgKCFj
YWxsYmFjaykKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgZGVsZXRlIFdlYkluc3BlY3Rv
ci5EYXRhYmFzZS5lcnJvckNhbGxiYWNrc1t0cmFuc2FjdGlvbklkXTsKLSAgICAgICAgY2FsbGJh
Y2soZXJyb3JPYmopOwotICAgIH0KLX0KLQotV2ViSW5zcGVjdG9yLlJlc291cmNlTWFuYWdlci5j
cmVhdGVSZXNvdXJjZVZpZXcgPSBmdW5jdGlvbihyZXNvdXJjZSkKLXsKLSAgICBzd2l0Y2ggKHJl
c291cmNlLmNhdGVnb3J5KSB7Ci0gICAgY2FzZSBXZWJJbnNwZWN0b3IucmVzb3VyY2VDYXRlZ29y
aWVzLmRvY3VtZW50czoKLSAgICBjYXNlIFdlYkluc3BlY3Rvci5yZXNvdXJjZUNhdGVnb3JpZXMu
c3R5bGVzaGVldHM6Ci0gICAgY2FzZSBXZWJJbnNwZWN0b3IucmVzb3VyY2VDYXRlZ29yaWVzLnNj
cmlwdHM6Ci0gICAgY2FzZSBXZWJJbnNwZWN0b3IucmVzb3VyY2VDYXRlZ29yaWVzLnhocjoKLSAg
ICAgICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuU291cmNlVmlldyhyZXNvdXJjZSk7Ci0gICAg
Y2FzZSBXZWJJbnNwZWN0b3IucmVzb3VyY2VDYXRlZ29yaWVzLmltYWdlczoKLSAgICAgICAgcmV0
dXJuIG5ldyBXZWJJbnNwZWN0b3IuSW1hZ2VWaWV3KHJlc291cmNlKTsKLSAgICBjYXNlIFdlYklu
c3BlY3Rvci5yZXNvdXJjZUNhdGVnb3JpZXMuZm9udHM6Ci0gICAgICAgIHJldHVybiBuZXcgV2Vi
SW5zcGVjdG9yLkZvbnRWaWV3KHJlc291cmNlKTsKLSAgICBkZWZhdWx0OgotICAgICAgICByZXR1
cm4gbmV3IFdlYkluc3BlY3Rvci5SZXNvdXJjZVZpZXcocmVzb3VyY2UpOwotICAgIH0KLX0KLQot
V2ViSW5zcGVjdG9yLlJlc291cmNlTWFuYWdlci5yZXNvdXJjZVZpZXdUeXBlTWF0Y2hlc1Jlc291
cmNlID0gZnVuY3Rpb24ocmVzb3VyY2UpCi17Ci0gICAgdmFyIHJlc291cmNlVmlldyA9IHJlc291
cmNlLl9yZXNvdXJjZXNWaWV3OwotICAgIHN3aXRjaCAocmVzb3VyY2UuY2F0ZWdvcnkpIHsKLSAg
ICBjYXNlIFdlYkluc3BlY3Rvci5yZXNvdXJjZUNhdGVnb3JpZXMuZG9jdW1lbnRzOgotICAgIGNh
c2UgV2ViSW5zcGVjdG9yLnJlc291cmNlQ2F0ZWdvcmllcy5zdHlsZXNoZWV0czoKLSAgICBjYXNl
IFdlYkluc3BlY3Rvci5yZXNvdXJjZUNhdGVnb3JpZXMuc2NyaXB0czoKLSAgICBjYXNlIFdlYklu
c3BlY3Rvci5yZXNvdXJjZUNhdGVnb3JpZXMueGhyOgotICAgICAgICByZXR1cm4gcmVzb3VyY2VW
aWV3Ll9fcHJvdG9fXyA9PT0gV2ViSW5zcGVjdG9yLlNvdXJjZVZpZXcucHJvdG90eXBlOwotICAg
IGNhc2UgV2ViSW5zcGVjdG9yLnJlc291cmNlQ2F0ZWdvcmllcy5pbWFnZXM6Ci0gICAgICAgIHJl
dHVybiByZXNvdXJjZVZpZXcuX19wcm90b19fID09PSBXZWJJbnNwZWN0b3IuSW1hZ2VWaWV3LnBy
b3RvdHlwZTsKLSAgICBjYXNlIFdlYkluc3BlY3Rvci5yZXNvdXJjZUNhdGVnb3JpZXMuZm9udHM6
Ci0gICAgICAgIHJldHVybiByZXNvdXJjZVZpZXcuX19wcm90b19fID09PSBXZWJJbnNwZWN0b3Iu
Rm9udFZpZXcucHJvdG90eXBlOwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJldHVybiByZXNvdXJj
ZVZpZXcuX19wcm90b19fID09PSBXZWJJbnNwZWN0b3IuUmVzb3VyY2VWaWV3LnByb3RvdHlwZTsK
LSAgICB9Ci19Ci0KLVdlYkluc3BlY3Rvci5SZXNvdXJjZU1hbmFnZXIucmVzb3VyY2VWaWV3Rm9y
UmVzb3VyY2UgPSBmdW5jdGlvbihyZXNvdXJjZSkKLXsKLSAgICBpZiAoIXJlc291cmNlKQotICAg
ICAgICByZXR1cm4gbnVsbDsKLSAgICBpZiAoIXJlc291cmNlLl9yZXNvdXJjZXNWaWV3KQotICAg
ICAgICByZXNvdXJjZS5fcmVzb3VyY2VzVmlldyA9IFdlYkluc3BlY3Rvci5SZXNvdXJjZU1hbmFn
ZXIuY3JlYXRlUmVzb3VyY2VWaWV3KHJlc291cmNlKTsKLSAgICByZXR1cm4gcmVzb3VyY2UuX3Jl
c291cmNlc1ZpZXc7Ci19Ci0KLVdlYkluc3BlY3Rvci5SZXNvdXJjZU1hbmFnZXIucmVjcmVhdGVS
ZXNvdXJjZVZpZXcgPSBmdW5jdGlvbihyZXNvdXJjZSkKLXsKLSAgICB2YXIgbmV3VmlldyA9IFdl
Ykluc3BlY3Rvci5SZXNvdXJjZU1hbmFnZXIuY3JlYXRlUmVzb3VyY2VWaWV3KHJlc291cmNlKTsK
LQotICAgIHZhciBvbGRWaWV3ID0gcmVzb3VyY2UuX3Jlc291cmNlc1ZpZXc7Ci0gICAgdmFyIG9s
ZFZpZXdQYXJlbnROb2RlID0gb2xkVmlldy52aXNpYmxlID8gb2xkVmlldy5lbGVtZW50LnBhcmVu
dE5vZGUgOiBudWxsOwotICAgIHZhciBzY3JvbGxUb3AgPSBvbGRWaWV3LnNjcm9sbFRvcDsKLQot
ICAgIHJlc291cmNlLl9yZXNvdXJjZXNWaWV3LmRldGFjaCgpOwotICAgIGRlbGV0ZSByZXNvdXJj
ZS5fcmVzb3VyY2VzVmlldzsKLQotICAgIHJlc291cmNlLl9yZXNvdXJjZXNWaWV3ID0gbmV3Vmll
dzsKLQotICAgIGlmIChvbGRWaWV3UGFyZW50Tm9kZSkKLSAgICAgICAgbmV3Vmlldy5zaG93KG9s
ZFZpZXdQYXJlbnROb2RlKTsKLSAgICBpZiAoc2Nyb2xsVG9wKQotICAgICAgICBuZXdWaWV3LnNj
cm9sbFRvcCA9IHNjcm9sbFRvcDsKLQotICAgIFdlYkluc3BlY3Rvci5wYW5lbHMuc2NyaXB0cy52
aWV3UmVjcmVhdGVkKG9sZFZpZXcsIG5ld1ZpZXcpOwotICAgIHJldHVybiBuZXdWaWV3OwotfQot
Ci1XZWJJbnNwZWN0b3IuUmVzb3VyY2VNYW5hZ2VyLmV4aXN0aW5nUmVzb3VyY2VWaWV3Rm9yUmVz
b3VyY2UgPSBmdW5jdGlvbihyZXNvdXJjZSkKLXsKLSAgICBpZiAoIXJlc291cmNlKQotICAgICAg
ICByZXR1cm4gbnVsbDsKLSAgICByZXR1cm4gcmVzb3VyY2UuX3Jlc291cmNlc1ZpZXc7Ci19Ci0K
LVdlYkluc3BlY3Rvci5SZXNvdXJjZU1hbmFnZXIucmVxdWVzdENvbnRlbnQgPSBmdW5jdGlvbihy
ZXNvdXJjZSwgYmFzZTY0RW5jb2RlLCBjYWxsYmFjaykKLXsKLSAgICBJbnNwZWN0b3JCYWNrZW5k
LnJlc291cmNlQ29udGVudChyZXNvdXJjZS5sb2FkZXIuZnJhbWVJZCwgcmVzb3VyY2UudXJsLCBi
YXNlNjRFbmNvZGUsIGNhbGxiYWNrKTsKLX0KLQotV2ViSW5zcGVjdG9yLlJlc291cmNlVHJlZU1v
ZGVsID0gZnVuY3Rpb24oKQotewotICAgIHRoaXMuX3Jlc291cmNlc0J5RnJhbWVJZCA9IHt9Owot
ICAgIHRoaXMuX3N1YmZyYW1lcyA9IHt9OwotfQotCi1XZWJJbnNwZWN0b3IuUmVzb3VyY2VUcmVl
TW9kZWwucHJvdG90eXBlID0gewotICAgIGFkZE9yVXBkYXRlRnJhbWU6IGZ1bmN0aW9uKGZyYW1l
KQotICAgIHsKLSAgICAgICAgdmFyIHRtcFJlc291cmNlID0gbmV3IFdlYkluc3BlY3Rvci5SZXNv
dXJjZShudWxsLCBmcmFtZS51cmwpOwotICAgICAgICBXZWJJbnNwZWN0b3IucGFuZWxzLnJlc291
cmNlcy5hZGRPclVwZGF0ZUZyYW1lKGZyYW1lLnBhcmVudElkLCBmcmFtZS5pZCwgZnJhbWUubmFt
ZSwgdG1wUmVzb3VyY2UuZGlzcGxheU5hbWUpOwotICAgICAgICB2YXIgc3ViZnJhbWVzID0gdGhp
cy5fc3ViZnJhbWVzW2ZyYW1lLnBhcmVudElkXTsKLSAgICAgICAgaWYgKCFzdWJmcmFtZXMpIHsK
LSAgICAgICAgICAgIHN1YmZyYW1lcyA9IHt9OwotICAgICAgICAgICAgdGhpcy5fc3ViZnJhbWVz
W2ZyYW1lLnBhcmVudElkIHx8IDBdID0gc3ViZnJhbWVzOwotICAgICAgICB9Ci0gICAgICAgIHN1
YmZyYW1lc1tmcmFtZS5pZF0gPSB0cnVlOwotICAgIH0sCi0KLSAgICBkaWRDb21taXRMb2FkRm9y
RnJhbWU6IGZ1bmN0aW9uKGZyYW1lLCBsb2FkZXIpCi0gICAgewotICAgICAgICAvLyBmcmFtZS5w
YXJlbnRJZCA9PT0gMCBpcyB3aGVuIG1haW4gZnJhbWUgbmF2aWdhdGlvbiBoYXBwZW5zLgotICAg
ICAgICB0aGlzLl9jbGVhckNoaWxkRnJhbWVzQW5kUmVzb3VyY2VzKGZyYW1lLnBhcmVudElkID8g
ZnJhbWUuaWQgOiAwLCBsb2FkZXIubG9hZGVySWQpOwotCi0gICAgICAgIHRoaXMuYWRkT3JVcGRh
dGVGcmFtZShmcmFtZSk7Ci0KLSAgICAgICAgdmFyIHJlc291cmNlc0ZvckZyYW1lID0gdGhpcy5f
cmVzb3VyY2VzQnlGcmFtZUlkW2ZyYW1lLmlkXTsKLSAgICAgICAgZm9yICh2YXIgaSA9IDA7IHJl
c291cmNlc0ZvckZyYW1lICYmIGkgPCByZXNvdXJjZXNGb3JGcmFtZS5sZW5ndGg7ICsraSkKLSAg
ICAgICAgICAgIFdlYkluc3BlY3Rvci5wYW5lbHMucmVzb3VyY2VzLmFkZFJlc291cmNlVG9GcmFt
ZShmcmFtZS5pZCwgcmVzb3VyY2VzRm9yRnJhbWVbaV0pOwotICAgIH0sCi0KLSAgICBmcmFtZURl
dGFjaGVkRnJvbVBhcmVudDogZnVuY3Rpb24oZnJhbWVJZCkKLSAgICB7Ci0gICAgICAgIHRoaXMu
X2NsZWFyQ2hpbGRGcmFtZXNBbmRSZXNvdXJjZXMoZnJhbWVJZCwgMCk7Ci0gICAgICAgIFdlYklu
c3BlY3Rvci5wYW5lbHMucmVzb3VyY2VzLnJlbW92ZUZyYW1lKGZyYW1lSWQpOwotICAgIH0sCi0K
LSAgICBfY2xlYXJDaGlsZEZyYW1lc0FuZFJlc291cmNlczogZnVuY3Rpb24oZnJhbWVJZCwgbG9h
ZGVySWQpCi0gICAgewotICAgICAgICBXZWJJbnNwZWN0b3IucGFuZWxzLnJlc291cmNlcy5yZW1v
dmVSZXNvdXJjZXNGcm9tRnJhbWUoZnJhbWVJZCk7Ci0KLSAgICAgICAgdGhpcy5fY2xlYXJSZXNv
dXJjZXMoZnJhbWVJZCwgbG9hZGVySWQpOwotICAgICAgICB2YXIgc3ViZnJhbWVzID0gdGhpcy5f
c3ViZnJhbWVzW2ZyYW1lSWRdOwotICAgICAgICBpZiAoIXN1YmZyYW1lcykKLSAgICAgICAgICAg
IHJldHVybjsKLQotICAgICAgICBmb3IgKHZhciBjaGlsZEZyYW1lSWQgaW4gc3ViZnJhbWVzKSB7
Ci0gICAgICAgICAgICBXZWJJbnNwZWN0b3IucGFuZWxzLnJlc291cmNlcy5yZW1vdmVGcmFtZShj
aGlsZEZyYW1lSWQpOwotICAgICAgICAgICAgdGhpcy5fY2xlYXJDaGlsZEZyYW1lc0FuZFJlc291
cmNlcyhjaGlsZEZyYW1lSWQsIGxvYWRlcklkKTsKLSAgICAgICAgfQotICAgICAgICBkZWxldGUg
dGhpcy5fc3ViZnJhbWVzW2ZyYW1lSWRdOwotICAgIH0sCi0KLSAgICBhZGRSZXNvdXJjZVRvRnJh
bWU6IGZ1bmN0aW9uKGZyYW1lSWQsIHJlc291cmNlKQotICAgIHsKLSAgICAgICAgdmFyIHJlc291
cmNlc0ZvckZyYW1lID0gdGhpcy5fcmVzb3VyY2VzQnlGcmFtZUlkW2ZyYW1lSWRdOwotICAgICAg
ICBpZiAoIXJlc291cmNlc0ZvckZyYW1lKSB7Ci0gICAgICAgICAgICByZXNvdXJjZXNGb3JGcmFt
ZSA9IFtdOwotICAgICAgICAgICAgdGhpcy5fcmVzb3VyY2VzQnlGcmFtZUlkW2ZyYW1lSWRdID0g
cmVzb3VyY2VzRm9yRnJhbWU7Ci0gICAgICAgIH0KLSAgICAgICAgcmVzb3VyY2VzRm9yRnJhbWUu
cHVzaChyZXNvdXJjZSk7Ci0KLSAgICAgICAgV2ViSW5zcGVjdG9yLnBhbmVscy5yZXNvdXJjZXMu
YWRkUmVzb3VyY2VUb0ZyYW1lKGZyYW1lSWQsIHJlc291cmNlKTsKLSAgICB9LAotCi0gICAgX2Ns
ZWFyUmVzb3VyY2VzOiBmdW5jdGlvbihmcmFtZUlkLCBsb2FkZXJUb1ByZXNlcnZlSWQpCi0gICAg
ewotICAgICAgICB2YXIgcmVzb3VyY2VzRm9yRnJhbWUgPSB0aGlzLl9yZXNvdXJjZXNCeUZyYW1l
SWRbZnJhbWVJZF07Ci0gICAgICAgIGlmICghcmVzb3VyY2VzRm9yRnJhbWUpCi0gICAgICAgICAg
ICByZXR1cm47Ci0KLSAgICAgICAgdmFyIHByZXNlcnZlZFJlc291cmNlc0ZvckZyYW1lID0gW107
Ci0gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcmVzb3VyY2VzRm9yRnJhbWUubGVuZ3RoOyAr
K2kpIHsKLSAgICAgICAgICAgIHZhciByZXNvdXJjZSA9IHJlc291cmNlc0ZvckZyYW1lW2ldOwot
ICAgICAgICAgICAgaWYgKHJlc291cmNlLmxvYWRlci5sb2FkZXJJZCA9PT0gbG9hZGVyVG9QcmVz
ZXJ2ZUlkKSB7Ci0gICAgICAgICAgICAgICAgcHJlc2VydmVkUmVzb3VyY2VzRm9yRnJhbWUucHVz
aChyZXNvdXJjZSk7Ci0gICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgICAgICBXZWJJbnNwZWN0b3IucmVzb3VyY2VNYW5hZ2VyLl91bmJpbmRSZXNvdXJjZVVS
TChyZXNvdXJjZSk7Ci0gICAgICAgIH0KLQotICAgICAgICBkZWxldGUgdGhpcy5fcmVzb3VyY2Vz
QnlGcmFtZUlkW2ZyYW1lSWRdOwotICAgICAgICBpZiAocHJlc2VydmVkUmVzb3VyY2VzRm9yRnJh
bWUubGVuZ3RoKQotICAgICAgICAgICAgdGhpcy5fcmVzb3VyY2VzQnlGcmFtZUlkW2ZyYW1lSWRd
ID0gcHJlc2VydmVkUmVzb3VyY2VzRm9yRnJhbWU7Ci0gICAgfSwKLQotICAgIGZvckFsbFJlc291
cmNlczogZnVuY3Rpb24oY2FsbGJhY2spCi0gICAgewotICAgICAgICB0aGlzLl9jYWxsRm9yRnJh
bWVSZXNvdXJjZXMoMCwgY2FsbGJhY2spOwotICAgIH0sCi0KLSAgICBfY2FsbEZvckZyYW1lUmVz
b3VyY2VzOiBmdW5jdGlvbihmcmFtZUlkLCBjYWxsYmFjaykKLSAgICB7Ci0gICAgICAgIHZhciBy
ZXNvdXJjZXMgPSB0aGlzLl9yZXNvdXJjZXNCeUZyYW1lSWRbZnJhbWVJZF07Ci0gICAgICAgIGZv
ciAodmFyIGkgPSAwOyByZXNvdXJjZXMgJiYgaSA8IHJlc291cmNlcy5sZW5ndGg7ICsraSkgewot
ICAgICAgICAgICAgaWYgKGNhbGxiYWNrKHJlc291cmNlc1tpXSkpCi0gICAgICAgICAgICAgICAg
cmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIHZhciBmcmFtZXMgPSB0
aGlzLl9zdWJmcmFtZXNbZnJhbWVJZF07Ci0gICAgICAgIGlmIChmcmFtZXMpIHsKLSAgICAgICAg
ICAgIGZvciAodmFyIGlkIGluIGZyYW1lcykgewotICAgICAgICAgICAgICAgIGlmICh0aGlzLl9j
YWxsRm9yRnJhbWVSZXNvdXJjZXMoaWQsIGNhbGxiYWNrKSkKLSAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIHRydWU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgIH0KLX0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9S
ZXNvdXJjZVRyZWVNb2RlbC5qcyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJj
ZVRyZWVNb2RlbC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYzYwMGMz
Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNl
VHJlZU1vZGVsLmpzCkBAIC0wLDAgKzEsMTQwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEw
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAq
IE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAq
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp
dHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhF
IENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAq
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworCitXZWJJbnNwZWN0b3IuUmVzb3VyY2VUcmVl
TW9kZWwgPSBmdW5jdGlvbigpCit7CisgICAgdGhpcy5fcmVzb3VyY2VzQnlGcmFtZUlkID0ge307
CisgICAgdGhpcy5fc3ViZnJhbWVzID0ge307Cit9CisKK1dlYkluc3BlY3Rvci5SZXNvdXJjZVRy
ZWVNb2RlbC5wcm90b3R5cGUgPSB7CisgICAgYWRkT3JVcGRhdGVGcmFtZTogZnVuY3Rpb24oZnJh
bWUpCisgICAgeworICAgICAgICB2YXIgdG1wUmVzb3VyY2UgPSBuZXcgV2ViSW5zcGVjdG9yLlJl
c291cmNlKG51bGwsIGZyYW1lLnVybCk7CisgICAgICAgIFdlYkluc3BlY3Rvci5wYW5lbHMucmVz
b3VyY2VzLmFkZE9yVXBkYXRlRnJhbWUoZnJhbWUucGFyZW50SWQsIGZyYW1lLmlkLCBmcmFtZS5u
YW1lLCB0bXBSZXNvdXJjZS5kaXNwbGF5TmFtZSk7CisgICAgICAgIHZhciBzdWJmcmFtZXMgPSB0
aGlzLl9zdWJmcmFtZXNbZnJhbWUucGFyZW50SWRdOworICAgICAgICBpZiAoIXN1YmZyYW1lcykg
eworICAgICAgICAgICAgc3ViZnJhbWVzID0ge307CisgICAgICAgICAgICB0aGlzLl9zdWJmcmFt
ZXNbZnJhbWUucGFyZW50SWQgfHwgMF0gPSBzdWJmcmFtZXM7CisgICAgICAgIH0KKyAgICAgICAg
c3ViZnJhbWVzW2ZyYW1lLmlkXSA9IHRydWU7CisgICAgfSwKKworICAgIGRpZENvbW1pdExvYWRG
b3JGcmFtZTogZnVuY3Rpb24oZnJhbWUsIGxvYWRlcikKKyAgICB7CisgICAgICAgIC8vIGZyYW1l
LnBhcmVudElkID09PSAwIGlzIHdoZW4gbWFpbiBmcmFtZSBuYXZpZ2F0aW9uIGhhcHBlbnMuCisg
ICAgICAgIHRoaXMuX2NsZWFyQ2hpbGRGcmFtZXNBbmRSZXNvdXJjZXMoZnJhbWUucGFyZW50SWQg
PyBmcmFtZS5pZCA6IDAsIGxvYWRlci5sb2FkZXJJZCk7CisKKyAgICAgICAgdGhpcy5hZGRPclVw
ZGF0ZUZyYW1lKGZyYW1lKTsKKworICAgICAgICB2YXIgcmVzb3VyY2VzRm9yRnJhbWUgPSB0aGlz
Ll9yZXNvdXJjZXNCeUZyYW1lSWRbZnJhbWUuaWRdOworICAgICAgICBmb3IgKHZhciBpID0gMDsg
cmVzb3VyY2VzRm9yRnJhbWUgJiYgaSA8IHJlc291cmNlc0ZvckZyYW1lLmxlbmd0aDsgKytpKQor
ICAgICAgICAgICAgV2ViSW5zcGVjdG9yLnBhbmVscy5yZXNvdXJjZXMuYWRkUmVzb3VyY2VUb0Zy
YW1lKGZyYW1lLmlkLCByZXNvdXJjZXNGb3JGcmFtZVtpXSk7CisgICAgfSwKKworICAgIGZyYW1l
RGV0YWNoZWRGcm9tUGFyZW50OiBmdW5jdGlvbihmcmFtZUlkKQorICAgIHsKKyAgICAgICAgdGhp
cy5fY2xlYXJDaGlsZEZyYW1lc0FuZFJlc291cmNlcyhmcmFtZUlkLCAwKTsKKyAgICAgICAgV2Vi
SW5zcGVjdG9yLnBhbmVscy5yZXNvdXJjZXMucmVtb3ZlRnJhbWUoZnJhbWVJZCk7CisgICAgfSwK
KworICAgIF9jbGVhckNoaWxkRnJhbWVzQW5kUmVzb3VyY2VzOiBmdW5jdGlvbihmcmFtZUlkLCBs
b2FkZXJJZCkKKyAgICB7CisgICAgICAgIFdlYkluc3BlY3Rvci5wYW5lbHMucmVzb3VyY2VzLnJl
bW92ZVJlc291cmNlc0Zyb21GcmFtZShmcmFtZUlkKTsKKworICAgICAgICB0aGlzLl9jbGVhclJl
c291cmNlcyhmcmFtZUlkLCBsb2FkZXJJZCk7CisgICAgICAgIHZhciBzdWJmcmFtZXMgPSB0aGlz
Ll9zdWJmcmFtZXNbZnJhbWVJZF07CisgICAgICAgIGlmICghc3ViZnJhbWVzKQorICAgICAgICAg
ICAgcmV0dXJuOworCisgICAgICAgIGZvciAodmFyIGNoaWxkRnJhbWVJZCBpbiBzdWJmcmFtZXMp
IHsKKyAgICAgICAgICAgIFdlYkluc3BlY3Rvci5wYW5lbHMucmVzb3VyY2VzLnJlbW92ZUZyYW1l
KGNoaWxkRnJhbWVJZCk7CisgICAgICAgICAgICB0aGlzLl9jbGVhckNoaWxkRnJhbWVzQW5kUmVz
b3VyY2VzKGNoaWxkRnJhbWVJZCwgbG9hZGVySWQpOworICAgICAgICB9CisgICAgICAgIGRlbGV0
ZSB0aGlzLl9zdWJmcmFtZXNbZnJhbWVJZF07CisgICAgfSwKKworICAgIGFkZFJlc291cmNlVG9G
cmFtZTogZnVuY3Rpb24oZnJhbWVJZCwgcmVzb3VyY2UpCisgICAgeworICAgICAgICB2YXIgcmVz
b3VyY2VzRm9yRnJhbWUgPSB0aGlzLl9yZXNvdXJjZXNCeUZyYW1lSWRbZnJhbWVJZF07CisgICAg
ICAgIGlmICghcmVzb3VyY2VzRm9yRnJhbWUpIHsKKyAgICAgICAgICAgIHJlc291cmNlc0ZvckZy
YW1lID0gW107CisgICAgICAgICAgICB0aGlzLl9yZXNvdXJjZXNCeUZyYW1lSWRbZnJhbWVJZF0g
PSByZXNvdXJjZXNGb3JGcmFtZTsKKyAgICAgICAgfQorICAgICAgICByZXNvdXJjZXNGb3JGcmFt
ZS5wdXNoKHJlc291cmNlKTsKKworICAgICAgICBXZWJJbnNwZWN0b3IucGFuZWxzLnJlc291cmNl
cy5hZGRSZXNvdXJjZVRvRnJhbWUoZnJhbWVJZCwgcmVzb3VyY2UpOworICAgIH0sCisKKyAgICBf
Y2xlYXJSZXNvdXJjZXM6IGZ1bmN0aW9uKGZyYW1lSWQsIGxvYWRlclRvUHJlc2VydmVJZCkKKyAg
ICB7CisgICAgICAgIHZhciByZXNvdXJjZXNGb3JGcmFtZSA9IHRoaXMuX3Jlc291cmNlc0J5RnJh
bWVJZFtmcmFtZUlkXTsKKyAgICAgICAgaWYgKCFyZXNvdXJjZXNGb3JGcmFtZSkKKyAgICAgICAg
ICAgIHJldHVybjsKKworICAgICAgICB2YXIgcHJlc2VydmVkUmVzb3VyY2VzRm9yRnJhbWUgPSBb
XTsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCByZXNvdXJjZXNGb3JGcmFtZS5sZW5ndGg7
ICsraSkgeworICAgICAgICAgICAgdmFyIHJlc291cmNlID0gcmVzb3VyY2VzRm9yRnJhbWVbaV07
CisgICAgICAgICAgICBpZiAocmVzb3VyY2UubG9hZGVyLmxvYWRlcklkID09PSBsb2FkZXJUb1By
ZXNlcnZlSWQpIHsKKyAgICAgICAgICAgICAgICBwcmVzZXJ2ZWRSZXNvdXJjZXNGb3JGcmFtZS5w
dXNoKHJlc291cmNlKTsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIFdlYkluc3BlY3Rvci5uZXR3b3JrTWFuYWdlci51bmJpbmRSZXNvdXJjZVVS
TChyZXNvdXJjZSk7CisgICAgICAgIH0KKworICAgICAgICBkZWxldGUgdGhpcy5fcmVzb3VyY2Vz
QnlGcmFtZUlkW2ZyYW1lSWRdOworICAgICAgICBpZiAocHJlc2VydmVkUmVzb3VyY2VzRm9yRnJh
bWUubGVuZ3RoKQorICAgICAgICAgICAgdGhpcy5fcmVzb3VyY2VzQnlGcmFtZUlkW2ZyYW1lSWRd
ID0gcHJlc2VydmVkUmVzb3VyY2VzRm9yRnJhbWU7CisgICAgfSwKKworICAgIGZvckFsbFJlc291
cmNlczogZnVuY3Rpb24oY2FsbGJhY2spCisgICAgeworICAgICAgICB0aGlzLl9jYWxsRm9yRnJh
bWVSZXNvdXJjZXMoMCwgY2FsbGJhY2spOworICAgIH0sCisKKyAgICBfY2FsbEZvckZyYW1lUmVz
b3VyY2VzOiBmdW5jdGlvbihmcmFtZUlkLCBjYWxsYmFjaykKKyAgICB7CisgICAgICAgIHZhciBy
ZXNvdXJjZXMgPSB0aGlzLl9yZXNvdXJjZXNCeUZyYW1lSWRbZnJhbWVJZF07CisgICAgICAgIGZv
ciAodmFyIGkgPSAwOyByZXNvdXJjZXMgJiYgaSA8IHJlc291cmNlcy5sZW5ndGg7ICsraSkgewor
ICAgICAgICAgICAgaWYgKGNhbGxiYWNrKHJlc291cmNlc1tpXSkpCisgICAgICAgICAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHZhciBmcmFtZXMgPSB0
aGlzLl9zdWJmcmFtZXNbZnJhbWVJZF07CisgICAgICAgIGlmIChmcmFtZXMpIHsKKyAgICAgICAg
ICAgIGZvciAodmFyIGlkIGluIGZyYW1lcykgeworICAgICAgICAgICAgICAgIGlmICh0aGlzLl9j
YWxsRm9yRnJhbWVSZXNvdXJjZXMoaWQsIGNhbGxiYWNrKSkKKyAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIH0KK30KZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9S
ZXNvdXJjZVZpZXcuanMgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VWaWV3
LmpzCmluZGV4IGEyODRkYTEuLmI2OTA5N2QgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9SZXNvdXJjZVZpZXcuanMKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL1Jlc291cmNlVmlldy5qcwpAQCAtNDIsMyArNDIsNzYgQEAgV2ViSW5zcGVjdG9yLlJlc291
cmNlVmlldy5wcm90b3R5cGUgPSB7CiB9CiAKIFdlYkluc3BlY3Rvci5SZXNvdXJjZVZpZXcucHJv
dG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5WaWV3LnByb3RvdHlwZTsKKworV2ViSW5z
cGVjdG9yLlJlc291cmNlVmlldy5jcmVhdGVSZXNvdXJjZVZpZXcgPSBmdW5jdGlvbihyZXNvdXJj
ZSkKK3sKKyAgICBzd2l0Y2ggKHJlc291cmNlLmNhdGVnb3J5KSB7CisgICAgY2FzZSBXZWJJbnNw
ZWN0b3IucmVzb3VyY2VDYXRlZ29yaWVzLmRvY3VtZW50czoKKyAgICBjYXNlIFdlYkluc3BlY3Rv
ci5yZXNvdXJjZUNhdGVnb3JpZXMuc3R5bGVzaGVldHM6CisgICAgY2FzZSBXZWJJbnNwZWN0b3Iu
cmVzb3VyY2VDYXRlZ29yaWVzLnNjcmlwdHM6CisgICAgY2FzZSBXZWJJbnNwZWN0b3IucmVzb3Vy
Y2VDYXRlZ29yaWVzLnhocjoKKyAgICAgICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuU291cmNl
VmlldyhyZXNvdXJjZSk7CisgICAgY2FzZSBXZWJJbnNwZWN0b3IucmVzb3VyY2VDYXRlZ29yaWVz
LmltYWdlczoKKyAgICAgICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuSW1hZ2VWaWV3KHJlc291
cmNlKTsKKyAgICBjYXNlIFdlYkluc3BlY3Rvci5yZXNvdXJjZUNhdGVnb3JpZXMuZm9udHM6Cisg
ICAgICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLkZvbnRWaWV3KHJlc291cmNlKTsKKyAgICBk
ZWZhdWx0OgorICAgICAgICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5SZXNvdXJjZVZpZXcocmVz
b3VyY2UpOworICAgIH0KK30KKworV2ViSW5zcGVjdG9yLlJlc291cmNlVmlldy5yZXNvdXJjZVZp
ZXdUeXBlTWF0Y2hlc1Jlc291cmNlID0gZnVuY3Rpb24ocmVzb3VyY2UpCit7CisgICAgdmFyIHJl
c291cmNlVmlldyA9IHJlc291cmNlLl9yZXNvdXJjZXNWaWV3OworICAgIHN3aXRjaCAocmVzb3Vy
Y2UuY2F0ZWdvcnkpIHsKKyAgICBjYXNlIFdlYkluc3BlY3Rvci5yZXNvdXJjZUNhdGVnb3JpZXMu
ZG9jdW1lbnRzOgorICAgIGNhc2UgV2ViSW5zcGVjdG9yLnJlc291cmNlQ2F0ZWdvcmllcy5zdHls
ZXNoZWV0czoKKyAgICBjYXNlIFdlYkluc3BlY3Rvci5yZXNvdXJjZUNhdGVnb3JpZXMuc2NyaXB0
czoKKyAgICBjYXNlIFdlYkluc3BlY3Rvci5yZXNvdXJjZUNhdGVnb3JpZXMueGhyOgorICAgICAg
ICByZXR1cm4gcmVzb3VyY2VWaWV3Ll9fcHJvdG9fXyA9PT0gV2ViSW5zcGVjdG9yLlNvdXJjZVZp
ZXcucHJvdG90eXBlOworICAgIGNhc2UgV2ViSW5zcGVjdG9yLnJlc291cmNlQ2F0ZWdvcmllcy5p
bWFnZXM6CisgICAgICAgIHJldHVybiByZXNvdXJjZVZpZXcuX19wcm90b19fID09PSBXZWJJbnNw
ZWN0b3IuSW1hZ2VWaWV3LnByb3RvdHlwZTsKKyAgICBjYXNlIFdlYkluc3BlY3Rvci5yZXNvdXJj
ZUNhdGVnb3JpZXMuZm9udHM6CisgICAgICAgIHJldHVybiByZXNvdXJjZVZpZXcuX19wcm90b19f
ID09PSBXZWJJbnNwZWN0b3IuRm9udFZpZXcucHJvdG90eXBlOworICAgIGRlZmF1bHQ6CisgICAg
ICAgIHJldHVybiByZXNvdXJjZVZpZXcuX19wcm90b19fID09PSBXZWJJbnNwZWN0b3IuUmVzb3Vy
Y2VWaWV3LnByb3RvdHlwZTsKKyAgICB9Cit9CisKK1dlYkluc3BlY3Rvci5SZXNvdXJjZVZpZXcu
cmVzb3VyY2VWaWV3Rm9yUmVzb3VyY2UgPSBmdW5jdGlvbihyZXNvdXJjZSkKK3sKKyAgICBpZiAo
IXJlc291cmNlKQorICAgICAgICByZXR1cm4gbnVsbDsKKyAgICBpZiAoIXJlc291cmNlLl9yZXNv
dXJjZXNWaWV3KQorICAgICAgICByZXNvdXJjZS5fcmVzb3VyY2VzVmlldyA9IFdlYkluc3BlY3Rv
ci5SZXNvdXJjZVZpZXcuY3JlYXRlUmVzb3VyY2VWaWV3KHJlc291cmNlKTsKKyAgICByZXR1cm4g
cmVzb3VyY2UuX3Jlc291cmNlc1ZpZXc7Cit9CisKK1dlYkluc3BlY3Rvci5SZXNvdXJjZVZpZXcu
cmVjcmVhdGVSZXNvdXJjZVZpZXcgPSBmdW5jdGlvbihyZXNvdXJjZSkKK3sKKyAgICB2YXIgbmV3
VmlldyA9IFdlYkluc3BlY3Rvci5SZXNvdXJjZVZpZXcuY3JlYXRlUmVzb3VyY2VWaWV3KHJlc291
cmNlKTsKKworICAgIHZhciBvbGRWaWV3ID0gcmVzb3VyY2UuX3Jlc291cmNlc1ZpZXc7CisgICAg
dmFyIG9sZFZpZXdQYXJlbnROb2RlID0gb2xkVmlldy52aXNpYmxlID8gb2xkVmlldy5lbGVtZW50
LnBhcmVudE5vZGUgOiBudWxsOworICAgIHZhciBzY3JvbGxUb3AgPSBvbGRWaWV3LnNjcm9sbFRv
cDsKKworICAgIHJlc291cmNlLl9yZXNvdXJjZXNWaWV3LmRldGFjaCgpOworICAgIGRlbGV0ZSBy
ZXNvdXJjZS5fcmVzb3VyY2VzVmlldzsKKworICAgIHJlc291cmNlLl9yZXNvdXJjZXNWaWV3ID0g
bmV3VmlldzsKKworICAgIGlmIChvbGRWaWV3UGFyZW50Tm9kZSkKKyAgICAgICAgbmV3Vmlldy5z
aG93KG9sZFZpZXdQYXJlbnROb2RlKTsKKyAgICBpZiAoc2Nyb2xsVG9wKQorICAgICAgICBuZXdW
aWV3LnNjcm9sbFRvcCA9IHNjcm9sbFRvcDsKKworICAgIFdlYkluc3BlY3Rvci5wYW5lbHMuc2Ny
aXB0cy52aWV3UmVjcmVhdGVkKG9sZFZpZXcsIG5ld1ZpZXcpOworICAgIHJldHVybiBuZXdWaWV3
OworfQorCitXZWJJbnNwZWN0b3IuUmVzb3VyY2VWaWV3LmV4aXN0aW5nUmVzb3VyY2VWaWV3Rm9y
UmVzb3VyY2UgPSBmdW5jdGlvbihyZXNvdXJjZSkKK3sKKyAgICBpZiAoIXJlc291cmNlKQorICAg
ICAgICByZXR1cm4gbnVsbDsKKyAgICByZXR1cm4gcmVzb3VyY2UuX3Jlc291cmNlc1ZpZXc7Cit9
CmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VzUGFuZWwu
anMgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VzUGFuZWwuanMKaW5kZXgg
ZDZmNzE3Mi4uMzliMDMxNSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L1Jlc291cmNlc1BhbmVsLmpzCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNv
dXJjZXNQYW5lbC5qcwpAQCAtMzI5LDEyICszMjksMTIgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNl
c1BhbmVsLnByb3RvdHlwZSA9IHsKIAogICAgIGNhblNob3dTb3VyY2VMaW5lOiBmdW5jdGlvbih1
cmwsIGxpbmUpCiAgICAgewotICAgICAgICByZXR1cm4gISFXZWJJbnNwZWN0b3IucmVzb3VyY2VN
YW5hZ2VyLnJlc291cmNlRm9yVVJMKHVybCk7CisgICAgICAgIHJldHVybiAhIVdlYkluc3BlY3Rv
ci5yZXNvdXJjZVZpZXcucmVzb3VyY2VGb3JVUkwodXJsKTsKICAgICB9LAogCiAgICAgc2hvd1Nv
dXJjZUxpbmU6IGZ1bmN0aW9uKHVybCwgbGluZSkKICAgICB7Ci0gICAgICAgIHZhciByZXNvdXJj
ZSA9IFdlYkluc3BlY3Rvci5yZXNvdXJjZU1hbmFnZXIucmVzb3VyY2VGb3JVUkwodXJsKTsKKyAg
ICAgICAgdmFyIHJlc291cmNlID0gV2ViSW5zcGVjdG9yLm5ldHdvcmtNYW5hZ2VyLnJlc291cmNl
Rm9yVVJMKHVybCk7CiAgICAgICAgIGlmIChyZXNvdXJjZS50eXBlID09PSBXZWJJbnNwZWN0b3Iu
UmVzb3VyY2UuVHlwZS5YSFIpIHsKICAgICAgICAgICAgIC8vIFNob3cgWEhScyBpbiB0aGUgbmV0
d29yayBwYW5lbCBvbmx5LgogICAgICAgICAgICAgaWYgKFdlYkluc3BlY3Rvci5wYW5lbHMubmV0
d29yayAmJiBXZWJJbnNwZWN0b3IucGFuZWxzLm5ldHdvcmsuY2FuU2hvd1NvdXJjZUxpbmUodXJs
LCBsaW5lKSkgewpAQCAtMzQzLDcgKzM0Myw3IEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZXNQYW5l
bC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KLSAgICAgICAgdGhpcy5zaG93UmVzb3VyY2UoV2ViSW5zcGVjdG9yLnJlc291cmNlTWFu
YWdlci5yZXNvdXJjZUZvclVSTCh1cmwpLCBsaW5lKTsKKyAgICAgICAgdGhpcy5zaG93UmVzb3Vy
Y2UoV2ViSW5zcGVjdG9yLm5ldHdvcmtNYW5hZ2VyLnJlc291cmNlRm9yVVJMKHVybCksIGxpbmUp
OwogICAgIH0sCiAKICAgICBzaG93UmVzb3VyY2U6IGZ1bmN0aW9uKHJlc291cmNlLCBsaW5lKQpA
QCAtMzU1LDcgKzM1NSw3IEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZXNQYW5lbC5wcm90b3R5cGUg
PSB7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAobGluZSkgewotICAgICAgICAgICAgdmFyIHZp
ZXcgPSBXZWJJbnNwZWN0b3IuUmVzb3VyY2VNYW5hZ2VyLnJlc291cmNlVmlld0ZvclJlc291cmNl
KHJlc291cmNlKTsKKyAgICAgICAgICAgIHZhciB2aWV3ID0gV2ViSW5zcGVjdG9yLlJlc291cmNl
Vmlldy5yZXNvdXJjZVZpZXdGb3JSZXNvdXJjZShyZXNvdXJjZSk7CiAgICAgICAgICAgICBpZiAo
dmlldy5yZXZlYWxMaW5lKQogICAgICAgICAgICAgICAgIHZpZXcucmV2ZWFsTGluZShsaW5lKTsK
ICAgICAgICAgICAgIGlmICh2aWV3LmhpZ2hsaWdodExpbmUpCkBAIC0zNjYsNyArMzY2LDcgQEAg
V2ViSW5zcGVjdG9yLlJlc291cmNlc1BhbmVsLnByb3RvdHlwZSA9IHsKIAogICAgIF9zaG93UmVz
b3VyY2VWaWV3OiBmdW5jdGlvbihyZXNvdXJjZSkKICAgICB7Ci0gICAgICAgIHZhciB2aWV3ID0g
V2ViSW5zcGVjdG9yLlJlc291cmNlTWFuYWdlci5yZXNvdXJjZVZpZXdGb3JSZXNvdXJjZShyZXNv
dXJjZSk7CisgICAgICAgIHZhciB2aWV3ID0gV2ViSW5zcGVjdG9yLlJlc291cmNlVmlldy5yZXNv
dXJjZVZpZXdGb3JSZXNvdXJjZShyZXNvdXJjZSk7CiAKICAgICAgICAgLy8gQ29uc2lkZXIgcmVu
ZGVyaW5nIGRpZmYgbWFya3VwIGhlcmUuCiAgICAgICAgIGlmIChyZXNvdXJjZS5iYXNlUmV2aXNp
b24gJiYgdmlldyBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5Tb3VyY2VWaWV3KSB7CkBAIC02ODcs
NyArNjg3LDcgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlc1BhbmVsLnByb3RvdHlwZSA9IHsKICAg
ICAgICAgZnVuY3Rpb24gY2FsbGJhY2socmVzb3VyY2VUcmVlRWxlbWVudCkKICAgICAgICAgewog
ICAgICAgICAgICAgdmFyIHJlc291cmNlID0gcmVzb3VyY2VUcmVlRWxlbWVudC5fcmVzb3VyY2U7
Ci0gICAgICAgICAgICB2YXIgcmVzb3VyY2VWaWV3ID0gV2ViSW5zcGVjdG9yLlJlc291cmNlTWFu
YWdlci5yZXNvdXJjZVZpZXdGb3JSZXNvdXJjZShyZXNvdXJjZSk7CisgICAgICAgICAgICB2YXIg
cmVzb3VyY2VWaWV3ID0gV2ViSW5zcGVjdG9yLlJlc291cmNlVmlldy5yZXNvdXJjZVZpZXdGb3JS
ZXNvdXJjZShyZXNvdXJjZSk7CiAgICAgICAgICAgICBpZiAocmVzb3VyY2VWaWV3LnBlcmZvcm1T
ZWFyY2ggJiYgcmVzb3VyY2VWaWV3ICE9PSB2aXNpYmxlVmlldykKICAgICAgICAgICAgICAgICB2
aWV3cy5wdXNoKHJlc291cmNlVmlldyk7CiAgICAgICAgIH0KQEAgLTEwNjksNyArMTA2OSw3IEBA
IFdlYkluc3BlY3Rvci5GcmFtZVJlc291cmNlVHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogICAg
IHsKICAgICAgICAgLy8gRklYTUU6IG1vdmUgdG8gdGhlIFNjcmlwdC9Tb3VyY2VWaWV3LgogICAg
ICAgICBpZiAoIXRoaXMuX3Jlc291cmNlLndhcm5pbmdzICYmICF0aGlzLl9yZXNvdXJjZS5lcnJv
cnMpIHsKLSAgICAgICAgICAgIHZhciB2aWV3ID0gV2ViSW5zcGVjdG9yLlJlc291cmNlTWFuYWdl
ci5leGlzdGluZ1Jlc291cmNlVmlld0ZvclJlc291cmNlKHRoaXMuX3Jlc291cmNlKTsKKyAgICAg
ICAgICAgIHZhciB2aWV3ID0gV2ViSW5zcGVjdG9yLlJlc291cmNlVmlldy5leGlzdGluZ1Jlc291
cmNlVmlld0ZvclJlc291cmNlKHRoaXMuX3Jlc291cmNlKTsKICAgICAgICAgICAgIGlmICh2aWV3
ICYmIHZpZXcuY2xlYXJNZXNzYWdlcykKICAgICAgICAgICAgICAgICB2aWV3LmNsZWFyTWVzc2Fn
ZXMoKTsKICAgICAgICAgfQpAQCAtMTA5Miw5ICsxMDkyLDkgQEAgV2ViSW5zcGVjdG9yLkZyYW1l
UmVzb3VyY2VUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgX2NvbnRlbnRDaGFuZ2VkOiBm
dW5jdGlvbihldmVudCkKICAgICB7CiAgICAgICAgIHRoaXMuaW5zZXJ0Q2hpbGQobmV3IFdlYklu
c3BlY3Rvci5SZXNvdXJjZVJldmlzaW9uVHJlZUVsZW1lbnQodGhpcy5fc3RvcmFnZVBhbmVsLCBl
dmVudC5kYXRhLnJldmlzaW9uKSwgMCk7Ci0gICAgICAgIHZhciBvbGRWaWV3ID0gV2ViSW5zcGVj
dG9yLlJlc291cmNlTWFuYWdlci5leGlzdGluZ1Jlc291cmNlVmlld0ZvclJlc291cmNlKHRoaXMu
X3Jlc291cmNlKTsKKyAgICAgICAgdmFyIG9sZFZpZXcgPSBXZWJJbnNwZWN0b3IuUmVzb3VyY2VW
aWV3LmV4aXN0aW5nUmVzb3VyY2VWaWV3Rm9yUmVzb3VyY2UodGhpcy5fcmVzb3VyY2UpOwogICAg
ICAgICBpZiAob2xkVmlldykgewotICAgICAgICAgICAgdmFyIG5ld1ZpZXcgPSBXZWJJbnNwZWN0
b3IuUmVzb3VyY2VNYW5hZ2VyLnJlY3JlYXRlUmVzb3VyY2VWaWV3KHRoaXMuX3Jlc291cmNlKTsK
KyAgICAgICAgICAgIHZhciBuZXdWaWV3ID0gV2ViSW5zcGVjdG9yLlJlc291cmNlVmlldy5yZWNy
ZWF0ZVJlc291cmNlVmlldyh0aGlzLl9yZXNvdXJjZSk7CiAgICAgICAgICAgICBpZiAob2xkVmll
dyA9PT0gdGhpcy5fc3RvcmFnZVBhbmVsLnZpc2libGVWaWV3KQogICAgICAgICAgICAgICAgIHRo
aXMuX3N0b3JhZ2VQYW5lbC52aXNpYmxlVmlldyA9IG5ld1ZpZXc7CiAgICAgICAgIH0KZGlmZiAt
LWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TY3JpcHRzUGFuZWwuanMgYi9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0c1BhbmVsLmpzCmluZGV4IDczODc5NjQuLmJk
NjIzYTIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TY3JpcHRzUGFu
ZWwuanMKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NjcmlwdHNQYW5lbC5qcwpA
QCAtMjU2LDcgKzI1Niw3IEBAIFdlYkluc3BlY3Rvci5TY3JpcHRzUGFuZWwucHJvdG90eXBlID0g
ewogICAgICAgICAgICAgaWYgKHJlc291cmNlLmZpbmlzaGVkKSB7CiAgICAgICAgICAgICAgICAg
Ly8gUmVzb3VyY2UgaXMgZmluaXNoZWQsIGJpbmQgdGhlIHNjcmlwdCByaWdodCBhd2F5LgogICAg
ICAgICAgICAgICAgIHNjcmlwdC5yZXNvdXJjZSA9IHJlc291cmNlOwotICAgICAgICAgICAgICAg
IHZhciB2aWV3ID0gV2ViSW5zcGVjdG9yLlJlc291cmNlTWFuYWdlci5leGlzdGluZ1Jlc291cmNl
Vmlld0ZvclJlc291cmNlKHJlc291cmNlKTsKKyAgICAgICAgICAgICAgICB2YXIgdmlldyA9IFdl
Ykluc3BlY3Rvci5SZXNvdXJjZVZpZXcuZXhpc3RpbmdSZXNvdXJjZVZpZXdGb3JSZXNvdXJjZShy
ZXNvdXJjZSk7CiAgICAgICAgICAgICAgICAgaWYgKHZpZXcgJiYgdmlldy5zb3VyY2VGcmFtZSkK
ICAgICAgICAgICAgICAgICAgICAgdmlldy5zb3VyY2VGcmFtZS5hZGRTY3JpcHQoc2NyaXB0KTsK
ICAgICAgICAgICAgIH0gZWxzZSB7CkBAIC00NDIsMTAgKzQ0Miw2IEBAIFdlYkluc3BlY3Rvci5T
Y3JpcHRzUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLmZ1bmN0aW9uc1NlbGVjdEVs
ZW1lbnQucmVtb3ZlQ2hpbGRyZW4oKTsKICAgICAgICAgdGhpcy52aWV3c0NvbnRhaW5lckVsZW1l
bnQucmVtb3ZlQ2hpbGRyZW4oKTsKIAotICAgICAgICB2YXIgc2NyaXB0cyA9IFdlYkluc3BlY3Rv
ci5kZWJ1Z2dlck1vZGVsLnF1ZXJ5U2NyaXB0cyhmdW5jdGlvbihzKSB7IHJldHVybiAhIXMucmVz
b3VyY2U7IH0pOwotICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNjcmlwdHMubGVuZ3RoOyAr
K2kpCi0gICAgICAgICAgICBkZWxldGUgc2NyaXB0c1tpXS5yZXNvdXJjZS5fcmVzb3VyY2VzVmll
dzsKLQogICAgICAgICB0aGlzLnNpZGViYXJQYW5lcy53YXRjaEV4cHJlc3Npb25zLnJlZnJlc2hF
eHByZXNzaW9ucygpOwogICAgICAgICBpZiAoIXByZXNlcnZlSXRlbXMpCiAgICAgICAgICAgICB0
aGlzLnNpZGViYXJQYW5lcy53b3JrZXJzLnJlc2V0KCk7CkBAIC01NTMsNyArNTQ5LDcgQEAgV2Vi
SW5zcGVjdG9yLlNjcmlwdHNQYW5lbC5wcm90b3R5cGUgPSB7CiAKICAgICBfc291cmNlRnJhbWVG
b3JSZXNvdXJjZTogZnVuY3Rpb24ocmVzb3VyY2UpCiAgICAgewotICAgICAgICB2YXIgdmlldyA9
IFdlYkluc3BlY3Rvci5SZXNvdXJjZU1hbmFnZXIucmVzb3VyY2VWaWV3Rm9yUmVzb3VyY2UocmVz
b3VyY2UpOworICAgICAgICB2YXIgdmlldyA9IFdlYkluc3BlY3Rvci5SZXNvdXJjZVZpZXcucmVz
b3VyY2VWaWV3Rm9yUmVzb3VyY2UocmVzb3VyY2UpOwogICAgICAgICBpZiAoIXZpZXcpCiAgICAg
ICAgICAgICByZXR1cm4gbnVsbDsKIApAQCAtNTc0LDcgKzU3MCw3IEBAIFdlYkluc3BlY3Rvci5T
Y3JpcHRzUGFuZWwucHJvdG90eXBlID0gewogCiAgICAgICAgIHZhciB2aWV3OwogICAgICAgICBp
ZiAoc2NyaXB0T3JSZXNvdXJjZSBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5SZXNvdXJjZSkKLSAg
ICAgICAgICAgIHZpZXcgPSBXZWJJbnNwZWN0b3IuUmVzb3VyY2VNYW5hZ2VyLnJlc291cmNlVmll
d0ZvclJlc291cmNlKHNjcmlwdE9yUmVzb3VyY2UpOworICAgICAgICAgICAgdmlldyA9IFdlYklu
c3BlY3Rvci5SZXNvdXJjZVZpZXcucmVzb3VyY2VWaWV3Rm9yUmVzb3VyY2Uoc2NyaXB0T3JSZXNv
dXJjZSk7CiAgICAgICAgIGVsc2UgaWYgKHNjcmlwdE9yUmVzb3VyY2UgaW5zdGFuY2VvZiBXZWJJ
bnNwZWN0b3IuU2NyaXB0KQogICAgICAgICAgICAgdmlldyA9IHRoaXMuc2NyaXB0Vmlld0ZvclNj
cmlwdChzY3JpcHRPclJlc291cmNlKTsKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL1dlYktpdC5xcmMgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvV2ViS2l0
LnFyYwppbmRleCA5MGM0MzE3Li4yNDQ0OTEzIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvV2ViS2l0LnFyYworKysgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
V2ViS2l0LnFyYwpAQCAtNTgsNiArNTgsNyBAQAogICAgIDxmaWxlPktleWJvYXJkU2hvcnRjdXQu
anM8L2ZpbGU+CiAgICAgPGZpbGU+TWV0cmljc1NpZGViYXJQYW5lLmpzPC9maWxlPgogICAgIDxm
aWxlPk5ldHdvcmtJdGVtVmlldy5qczwvZmlsZT4KKyAgICA8ZmlsZT5OZXR3b3JrTWFuYWdlci5q
czwvZmlsZT4KICAgICA8ZmlsZT5OZXR3b3JrUGFuZWwuanM8L2ZpbGU+CiAgICAgPGZpbGU+T2Jq
ZWN0LmpzPC9maWxlPgogICAgIDxmaWxlPk9iamVjdFByb3BlcnRpZXNTZWN0aW9uLmpzPC9maWxl
PgpAQCAtNzUsNyArNzYsNiBAQAogICAgIDxmaWxlPlJlc291cmNlQ2F0ZWdvcnkuanM8L2ZpbGU+
CiAgICAgPGZpbGU+UmVzb3VyY2VDb29raWVzVmlldy5qczwvZmlsZT4KICAgICA8ZmlsZT5SZXNv
dXJjZUhlYWRlcnNWaWV3LmpzPC9maWxlPgotICAgIDxmaWxlPlJlc291cmNlTWFuYWdlci5qczwv
ZmlsZT4KICAgICA8ZmlsZT5SZXNvdXJjZVRpbWluZ1ZpZXcuanM8L2ZpbGU+CiAgICAgPGZpbGU+
UmVzb3VyY2VWaWV3LmpzPC9maWxlPgogICAgIDxmaWxlPlJlc291cmNlc1BhbmVsLmpzPC9maWxl
PgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5odG1s
IGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5odG1sCmluZGV4IDllZDUw
MTkuLmUxNTkwZjIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNw
ZWN0b3IuaHRtbAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmh0
bWwKQEAgLTYxLDcgKzYxLDggQEAgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2
YXNjcmlwdCIgc3JjPSJQYW5lbC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0
L2phdmFzY3JpcHQiIHNyYz0iVGltZWxpbmVHcmlkLmpzIj48L3NjcmlwdD4gICAgCiAgICAgPHNj
cmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iUmVzb3VyY2UuanMiPjwvc2NyaXB0Pgot
ICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IlJlc291cmNlTWFuYWdlci5q
cyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iTmV0
d29ya01hbmFnZXIuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2Ny
aXB0IiBzcmM9IlJlc291cmNlVHJlZU1vZGVsLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHR5
cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJSZXNvdXJjZUNhdGVnb3J5LmpzIj48L3NjcmlwdD4K
ICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJEYXRhYmFzZS5qcyI+PC9z
Y3JpcHQ+CiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iRE9NU3RvcmFn
ZS5qcyI+PC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
aW5zcGVjdG9yLmpzIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5qcwpp
bmRleCA4NDMyMWMxLi44ODZmZTQ2IDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvaW5zcGVjdG9yLmpzCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNw
ZWN0b3IuanMKQEAgLTQ0NSwxMiArNDQ1LDEyIEBAIHZhciBXZWJJbnNwZWN0b3IgPSB7CiAKICAg
ICBmb3JBbGxSZXNvdXJjZXM6IGZ1bmN0aW9uKGNhbGxiYWNrKQogICAgIHsKLSAgICAgICAgV2Vi
SW5zcGVjdG9yLnJlc291cmNlTWFuYWdlci5mb3JBbGxSZXNvdXJjZXMoY2FsbGJhY2spOworICAg
ICAgICBXZWJJbnNwZWN0b3IubmV0d29ya01hbmFnZXIuZm9yQWxsUmVzb3VyY2VzKGNhbGxiYWNr
KTsKICAgICB9LAogCiAgICAgcmVzb3VyY2VGb3JVUkw6IGZ1bmN0aW9uKHVybCkKICAgICB7Ci0g
ICAgICAgIHJldHVybiB0aGlzLnJlc291cmNlTWFuYWdlci5yZXNvdXJjZUZvclVSTCh1cmwpOwor
ICAgICAgICByZXR1cm4gdGhpcy5uZXR3b3JrTWFuYWdlci5yZXNvdXJjZUZvclVSTCh1cmwpOwog
ICAgIH0KIH0KIApAQCAtNTE3LDcgKzUxNyw3IEBAIFdlYkluc3BlY3Rvci5kb0xvYWRlZERvbmUg
PSBmdW5jdGlvbigpCiAgICAgLy8gdGhpcy5jaGFuZ2VzID0gbmV3IFdlYkluc3BlY3Rvci5DaGFu
Z2VzVmlldyh0aGlzLmRyYXdlcik7CiAgICAgLy8gVE9ETzogUmVtb3ZlIGNsYXNzPSJoaWRkZW4i
IGZyb20gaW5zcGVjdG9yLmh0bWwgb24gYnV0dG9uI2NoYW5nZXMtc3RhdHVzLWJhci1pdGVtCiAg
ICAgdGhpcy5kcmF3ZXIudmlzaWJsZVZpZXcgPSB0aGlzLmNvbnNvbGU7Ci0gICAgdGhpcy5yZXNv
dXJjZU1hbmFnZXIgPSBuZXcgV2ViSW5zcGVjdG9yLlJlc291cmNlTWFuYWdlcigpOworICAgIHRo
aXMubmV0d29ya01hbmFnZXIgPSBuZXcgV2ViSW5zcGVjdG9yLk5ldHdvcmtNYW5hZ2VyKCk7CiAg
ICAgdGhpcy5kb21BZ2VudCA9IG5ldyBXZWJJbnNwZWN0b3IuRE9NQWdlbnQoKTsKIAogICAgIElu
c3BlY3RvckJhY2tlbmQucmVnaXN0ZXJEb21haW5EaXNwYXRjaGVyKCJJbnNwZWN0b3IiLCB0aGlz
KTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>77023</attachid>
            <date>2010-12-20 12:17:36 -0800</date>
            <delta_ts>2010-12-21 05:34:52 -0800</delta_ts>
            <desc>[patch] initial version. rebaselined.</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>90893</size>
            <attacher name="Ilya Tikhonovsky">loislo</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA4NzlhYzZmLi5lMmJlZGFkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTAtMTIt
MjAgIElseWEgVGlraG9ub3Zza3kgIDxsb2lzbG9AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IFByb3Rv
Y29sIGNsZWFudXAgdGFzay4gSW50cm9kdWNlIE5ldHdvcmssIERPTVN0b3JhZ2UgYW5kIERhdGFi
YXNlIGRvbWFpbnMuCisKKyAgICAgICAgRG9tYWluIHdhcyBjaGFuZ2VkIGZvciBSZXNvdXJjZXMs
IEZpbGVTeXN0ZW0gZXRjLiByZWxhdGVkIG1ldGhvZHMuCisgICAgICAgIFJlc291cmNlc01hbmFn
ZXIgd2FzIHJlbmFtZWQgdG8gTmV0d29ya01hbmFnZXIuCisgICAgICAgIFJlc291cmNlVHJlZU1v
ZGVsIHdhcyBleHRyYWN0ZWQgYXMgc2VwYXJhdGUgZmlsZS4KKyAgICAgICAgRmlsZVN5c3RlbSwg
RGF0YWJhc2UsIERPTVN0b3JhZ2UgYW5kIEFwcGxpY2F0aW9uQ2FjaGUgbWV0aG9kcyB3ZXJlCisg
ICAgICAgIHJlbW92ZWQgZnJvbSBOZXR3b3JrTWFuYWdlciBhbmQgYWRkZWQgdG8gY29ycmVzcG9u
ZGluZyBjbGFzc2VzLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD01MTMzNAorCisKKyAgICAgICAgKiBpbnNwZWN0b3IvcmVwb3J0LXByb3RvY29sLWVy
cm9ycy1leHBlY3RlZC50eHQ6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBl
Y3RhdGlvbnMudHh0OgorCiAyMDEwLTEyLTIwICBBbmRyZXkgS29zeWFrb3YgIDxjYXNlcUBjaHJv
bWl1bS5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZC4gUmViYXNlZCBwbGF0Zm9ybS1zcGVjaWZp
YyB0ZXN0IGV4cGVjdGF0aW9ucyBmb2xsb3dpbmcgZGVmYXVsdCBleHBlY3RhdGlvbiBjaGFuZ2Ug
aW4gcjc0MjM0LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3JlcG9ydC1wcm90
b2NvbC1lcnJvcnMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3JlcG9ydC1w
cm90b2NvbC1lcnJvcnMtZXhwZWN0ZWQudHh0CmluZGV4IDIyMjFjODQuLjA5NzlhM2MgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9yZXBvcnQtcHJvdG9jb2wtZXJyb3JzLWV4cGVj
dGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcmVwb3J0LXByb3RvY29sLWVycm9y
cy1leHBlY3RlZC50eHQKQEAgLTQ0LDcgKzQ0LDcgQEAgVGVzdHMgdGhhdCBJbnNwZWN0b3JCYWNr
ZW5kRGlzcGF0Y2hlciBpcyBjYXRjaGluZyBpbmNvcnJlY3QgbWVzc2FnZXMuCiB9CiB7CiAgICAg
c2VxIDogMgotICAgIGRvbWFpbiA6ICJSZXNvdXJjZXMiCisgICAgZG9tYWluIDogIk5ldHdvcmsi
CiAgICAgc3VjY2VzcyA6IGZhbHNlCiAgICAgZXJyb3JzIDogewogICAgICAgICAwIDogIlByb3Rv
Y29sIEVycm9yOiAnYXJndW1lbnRzJyBwcm9wZXJ0eSB3aXRoIHR5cGUgJ29iamVjdCcgd2FzIG5v
dCBmb3VuZC4iCkBAIC01Miw3ICs1Miw3IEBAIFRlc3RzIHRoYXQgSW5zcGVjdG9yQmFja2VuZERp
c3BhdGNoZXIgaXMgY2F0Y2hpbmcgaW5jb3JyZWN0IG1lc3NhZ2VzLgogfQogewogICAgIHNlcSA6
IDMKLSAgICBkb21haW4gOiAiUmVzb3VyY2VzIgorICAgIGRvbWFpbiA6ICJOZXR3b3JrIgogICAg
IHN1Y2Nlc3MgOiBmYWxzZQogICAgIGVycm9ycyA6IHsKICAgICAgICAgMCA6ICJQcm90b2NvbCBF
cnJvcjogJ2FyZ3VtZW50cycgcHJvcGVydHkgd2l0aCB0eXBlICdvYmplY3QnIHdhcyBub3QgZm91
bmQuIgpAQCAtNjAsNyArNjAsNyBAQCBUZXN0cyB0aGF0IEluc3BlY3RvckJhY2tlbmREaXNwYXRj
aGVyIGlzIGNhdGNoaW5nIGluY29ycmVjdCBtZXNzYWdlcy4KIH0KIHsKICAgICBzZXEgOiA0Ci0g
ICAgZG9tYWluIDogIlJlc291cmNlcyIKKyAgICBkb21haW4gOiAiTmV0d29yayIKICAgICBzdWNj
ZXNzIDogZmFsc2UKICAgICBlcnJvcnMgOiB7CiAgICAgICAgIDAgOiAiUHJvdG9jb2wgRXJyb3I6
IEFyZ3VtZW50ICdmcmFtZUlkJyB3aXRoIHR5cGUgJ051bWJlcicgd2FzIG5vdCBmb3VuZC4iCkBA
IC03MCw3ICs3MCw3IEBAIFRlc3RzIHRoYXQgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIgaXMg
Y2F0Y2hpbmcgaW5jb3JyZWN0IG1lc3NhZ2VzLgogfQogewogICAgIHNlcSA6IDUKLSAgICBkb21h
aW4gOiAiUmVzb3VyY2VzIgorICAgIGRvbWFpbiA6ICJOZXR3b3JrIgogICAgIHN1Y2Nlc3MgOiBm
YWxzZQogICAgIGVycm9ycyA6IHsKICAgICAgICAgMCA6ICJQcm90b2NvbCBFcnJvcjogQXJndW1l
bnQgJ2ZyYW1lSWQnIHdpdGggdHlwZSAnTnVtYmVyJyB3YXMgbm90IGZvdW5kLiIKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dCBi
L0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dAppbmRl
eCA0ODc2ZGM4Li5jOTgzY2ZkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJv
bWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hy
b21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0CkBAIC02MjUsMjggKzYyNSw2IEBAIFdPTlRGSVgg
U0tJUCA6IGluc3BlY3Rvci9leHRlbnNpb25zLWV2YWwuaHRtbCA9IEZBSUwKIFdPTlRGSVggU0tJ
UCA6IGluc3BlY3Rvci9leHRlbnNpb25zLXJlc291cmNlcy5odG1sID0gVElNRU9VVCBDUkFTSAog
V09OVEZJWCBTS0lQIDogaHR0cC90ZXN0cy9pbnNwZWN0b3IvZXh0ZW5zaW9ucy1oZWFkZXJzLmh0
bWwgPSBGQUlMCiAKLS8vIEluc3BlY3RvciB0ZXN0cyBpbiBEZWJ1ZyBidWlsZCBhcmUgdmVyeSBz
bG93LiAgSWYgd2UgcmVtb3ZlIFNMT1csIHdlJ2xsIHNlZQotLy8gcmFuZG9tIFRJTUVPVVRzLiAg
SXMgdGhpcyBpc3N1ZSBEUlQtc3BlY2lmaWM/Ci1CVUdfRFJUIFdJTiBERUJVRyBTTE9XIDogaW5z
cGVjdG9yID0gUEFTUwotQlVHX0RSVCBXSU4gREVCVUcgU0xPVyA6IGh0dHAvdGVzdHMvaW5zcGVj
dG9yID0gUEFTUwotQlVHX0RSVCBXSU4gREVCVUcgU0xPVyA6IGh0dHAvdGVzdHMvaW5zcGVjdG9y
LWVuYWJsZWQgPSBQQVNTCi0KLS8vIEFkZCBzdXBwb3J0IGZvciBpbnNwZWN0b3IgbGF5b3V0IHRl
c3RzIG9uIG5vbi1XaW5kb3dzLgotQlVHQ1IyNjczNCBMSU5VWCBNQUMgU0tJUCA6IGluc3BlY3Rv
ciA9IFBBU1MKLUJVR0NSMjY3MzQgTElOVVggTUFDIFNLSVAgOiBodHRwL3Rlc3RzL2luc3BlY3Rv
ciA9IFBBU1MKLUJVR0NSMjY3MzQgTElOVVggTUFDIFNLSVAgOiBodHRwL3Rlc3RzL2luc3BlY3Rv
ci1lbmFibGVkID0gUEFTUwotCi1CVUdDUjY2MDg3IFdJTiBTTE9XIDogaW5zcGVjdG9yL3N0eWxl
cy1kaXNhYmxlLXRoZW4tZW5hYmxlLmh0bWwgPSBQQVNTIFRFWFQKLUJVR0NSNjYwODcgV0lOIDog
aW5zcGVjdG9yL3RpbWVsaW5lLWxheW91dC5odG1sID0gUEFTUyBURVhUCi1CVUdDUjY2MDg3IFdJ
TiA6IGluc3BlY3Rvci90aW1lbGluZS1wYXJzZS1odG1sLmh0bWwgPSBDUkFTSCBUSU1FT1VUIFBB
U1MgVEVYVAotCi1CVUdfRFJUIFdJTiA6IGh0dHAvdGVzdHMvaW5zcGVjdG9yLWVuYWJsZWQvY29u
c29sZS1sb2ctYmVmb3JlLWZyYW1lLW5hdmlnYXRpb24uaHRtbCA9IFRFWFQKLUJVR19EUlQgV0lO
IDogaHR0cC90ZXN0cy9pbnNwZWN0b3IvY2hhbmdlLWlmcmFtZS1zcmMuaHRtbCA9IENSQVNICi0K
LS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCi0vLyBPdGhlcgotLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQogLy8gTWFjIFNhZmFyaSB1bmRl
ciBjZXJ0YWluIGNpcmN1bXN0YW5jZXMgYXV0b21hdGljYWxseSBwbGFjZXMKIC8vIGEgY2FyZXQg
aW4gZWRpdGFibGUgZG9jdW1lbnQgZXZlbiB3aGVuIG5vbmUgd2FzIHJlcXVlc3RlZCBwcm9ncmFt
YXRpY2FsbHkuCiAvLyBXZSBkb24ndCBpbnRlbmQgdG8gY29weSB0aGlzIGZlYXR1cmUgKGF0IGxl
YXN0IG5vdCBmb3IgQmV0YSkuCmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNv
cmUvQ2hhbmdlTG9nCmluZGV4IDU2YWEyMTEuLjdhOTRmNjEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
Q2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTE4IEBACisyMDEw
LTEyLTIwICBJbHlhIFRpa2hvbm92c2t5ICA8bG9pc2xvQGNocm9taXVtLm9yZz4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBQ
cm90b2NvbCBjbGVhbnVwIHRhc2suIEludHJvZHVjZSBOZXR3b3JrLCBET01TdG9yYWdlIGFuZCBE
YXRhYmFzZSBkb21haW5zLgorCisgICAgICAgIERvbWFpbiB3YXMgY2hhbmdlZCBmb3IgUmVzb3Vy
Y2VzLCBGaWxlU3lzdGVtIGV0Yy4gcmVsYXRlZCBtZXRob2RzLgorICAgICAgICBSZXNvdXJjZXNN
YW5hZ2VyIHdhcyByZW5hbWVkIHRvIE5ldHdvcmtNYW5hZ2VyLgorICAgICAgICBSZXNvdXJjZVRy
ZWVNb2RlbCB3YXMgZXh0cmFjdGVkIGFzIHNlcGFyYXRlIGZpbGUuCisgICAgICAgIEZpbGVTeXN0
ZW0sIERhdGFiYXNlLCBET01TdG9yYWdlIGFuZCBBcHBsaWNhdGlvbkNhY2hlIG1ldGhvZHMgd2Vy
ZQorICAgICAgICByZW1vdmVkIGZyb20gTmV0d29ya01hbmFnZXIgYW5kIGFkZGVkIHRvIGNvcnJl
c3BvbmRpbmcgY2xhc3Nlcy4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NTEzMzQKKworICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBX
ZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajoKKyAgICAgICAgKiBpbnNwZWN0b3IvQ29kZUdl
bmVyYXRvckluc3BlY3Rvci5wbToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yLmlkbDoK
KyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0F1ZGl0UnVsZXMuanM6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuQXVkaXRSdWxlcy5VbnVzZWRDc3NSdWxlLnByb3RvdHlwZS5kb1J1bi5ldmFs
Q2FsbGJhY2suc2VsZWN0b3JzQ2FsbGJhY2spOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1l
bmQvQ1NTU3R5bGVNb2RlbC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NTdHlsZU1vZGVs
LnByb3RvdHlwZS5fc3R5bGVTaGVldENoYW5nZWQuY2FsbGJhY2spOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLkNTU1N0eWxlTW9kZWwucHJvdG90eXBlLl9zdHlsZVNoZWV0Q2hhbmdlZCk6CisgICAg
ICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9Db25zb2xlVmlldy5qczoKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5Db25zb2xlVmlldy5wcm90b3R5cGUuYWRkTWVzc2FnZSk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuQ29uc29sZVZpZXcucHJvdG90eXBlLmNsZWFyTWVzc2FnZXMpOgorICAgICAgICAq
IGluc3BlY3Rvci9mcm9udC1lbmQvRE9NQWdlbnQuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
QXBwbGljYXRpb25DYWNoZS51cGRhdGVBcHBsaWNhdGlvbkNhY2hlU3RhdHVzKToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5BcHBsaWNhdGlvbkNhY2hlLnVwZGF0ZU5ldHdvcmtTdGF0ZSk6CisgICAg
ICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9ET01TdG9yYWdlLmpzOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLkRPTVN0b3JhZ2UuYWRkRE9NU3RvcmFnZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
RE9NU3RvcmFnZS5zZWxlY3RET01TdG9yYWdlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5ET01T
dG9yYWdlLnVwZGF0ZURPTVN0b3JhZ2UpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQv
RGF0YWJhc2UuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGF0YWJhc2UuYWRkRGF0YWJhc2Up
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRhdGFiYXNlLnNlbGVjdERhdGFiYXNlKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5EYXRhYmFzZS5zcWxUcmFuc2FjdGlvblN1Y2NlZWRlZCk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuRGF0YWJhc2Uuc3FsVHJhbnNhY3Rpb25GYWlsZWQpOgorICAgICAg
ICAqIGluc3BlY3Rvci9mcm9udC1lbmQvRmlsZVN5c3RlbVZpZXcuanM6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuRmlsZVN5c3RlbS5kaWRHZXRGaWxlU3lzdGVtUGF0aCk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuRmlsZVN5c3RlbS5kaWRHZXRGaWxlU3lzdGVtRXJyb3IpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLkZpbGVTeXN0ZW0uZGlkR2V0RmlsZVN5c3RlbURpc2FibGVkKToKKyAgICAgICAg
KiBpbnNwZWN0b3IvZnJvbnQtZW5kL05ldHdvcmtJdGVtVmlldy5qczoKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5OZXR3b3JrSXRlbVZpZXcpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQv
TmV0d29ya01hbmFnZXIuanM6IEFkZGVkLgorICAgICAgICAoV2ViSW5zcGVjdG9yLk5ldHdvcmtN
YW5hZ2VyKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5OZXR3b3JrTWFuYWdlci5wcm90b3R5cGUu
aWRlbnRpZmllckZvckluaXRpYWxSZXF1ZXN0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5OZXR3
b3JrTWFuYWdlci5wcm90b3R5cGUuX2NyZWF0ZVJlc291cmNlKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5OZXR3b3JrTWFuYWdlci5wcm90b3R5cGUud2lsbFNlbmRSZXF1ZXN0KToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5OZXR3b3JrTWFuYWdlci5wcm90b3R5cGUuX3VwZGF0ZVJlc291cmNlV2l0
aFJlcXVlc3QpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk5ldHdvcmtNYW5hZ2VyLnByb3RvdHlw
ZS5fYXBwZW5kUmVkaXJlY3QpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk5ldHdvcmtNYW5hZ2Vy
LnByb3RvdHlwZS5tYXJrUmVzb3VyY2VBc0NhY2hlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
TmV0d29ya01hbmFnZXIucHJvdG90eXBlLmRpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuTmV0d29ya01hbmFnZXIucHJvdG90eXBlLl91cGRhdGVSZXNvdXJjZVdpdGhS
ZXNwb25zZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTmV0d29ya01hbmFnZXIucHJvdG90eXBl
LmRpZFJlY2VpdmVDb250ZW50TGVuZ3RoKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5OZXR3b3Jr
TWFuYWdlci5wcm90b3R5cGUuZGlkRmluaXNoTG9hZGluZyk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuTmV0d29ya01hbmFnZXIucHJvdG90eXBlLmRpZEZhaWxMb2FkaW5nKToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5OZXR3b3JrTWFuYWdlci5wcm90b3R5cGUuZGlkTG9hZFJlc291cmNlRnJvbU1l
bW9yeUNhY2hlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5OZXR3b3JrTWFuYWdlci5wcm90b3R5
cGUuX3VwZGF0ZVJlc291cmNlV2l0aENhY2hlZFJlc291cmNlKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5OZXR3b3JrTWFuYWdlci5wcm90b3R5cGUuc2V0SW5pdGlhbENvbnRlbnQpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLk5ldHdvcmtNYW5hZ2VyLnByb3RvdHlwZS5kaWRDb21taXRMb2FkRm9y
RnJhbWUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk5ldHdvcmtNYW5hZ2VyLnByb3RvdHlwZS5m
cmFtZURldGFjaGVkRnJvbVBhcmVudCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTmV0d29ya01h
bmFnZXIucHJvdG90eXBlLmRpZENyZWF0ZVdlYlNvY2tldCk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuTmV0d29ya01hbmFnZXIucHJvdG90eXBlLndpbGxTZW5kV2ViU29ja2V0SGFuZHNoYWtlUmVx
dWVzdCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTmV0d29ya01hbmFnZXIucHJvdG90eXBlLmRp
ZFJlY2VpdmVXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZSk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuTmV0d29ya01hbmFnZXIucHJvdG90eXBlLmRpZENsb3NlV2ViU29ja2V0KToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5OZXR3b3JrTWFuYWdlci5wcm90b3R5cGUuX3Byb2Nlc3NDYWNoZWRSZXNv
dXJjZXMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk5ldHdvcmtNYW5hZ2VyLnByb3RvdHlwZS5f
YWRkRnJhbWVzUmVjdXJzaXZlbHkpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk5ldHdvcmtNYW5h
Z2VyLnByb3RvdHlwZS5yZXNvdXJjZUZvclVSTCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTmV0
d29ya01hbmFnZXIucHJvdG90eXBlLmFkZENvbnNvbGVNZXNzYWdlKToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5OZXR3b3JrTWFuYWdlci5wcm90b3R5cGUuY2xlYXJDb25zb2xlTWVzc2FnZXMpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLk5ldHdvcmtNYW5hZ2VyLnByb3RvdHlwZS5mb3JBbGxSZXNv
dXJjZXMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk5ldHdvcmtNYW5hZ2VyLnByb3RvdHlwZS5f
YmluZFJlc291cmNlVVJMKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5OZXR3b3JrTWFuYWdlci5w
cm90b3R5cGUudW5iaW5kUmVzb3VyY2VVUkwpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk5ldHdv
cmtNYW5hZ2VyLnJlcXVlc3RDb250ZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5k
L05ldHdvcmtQYW5lbC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5OZXR3b3JrUGFuZWwucHJv
dG90eXBlLnJlZnJlc2hSZXNvdXJjZSk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9S
ZXNvdXJjZS5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SZXNvdXJjZS5wcm90b3R5cGUuX2lu
bmVyUmVxdWVzdENvbnRlbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvUmVzb3Vy
Y2VNYW5hZ2VyLmpzOiBSZW1vdmVkLgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvUmVz
b3VyY2VUcmVlTW9kZWwuanM6IEFkZGVkLgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNl
VHJlZU1vZGVsKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SZXNvdXJjZVRyZWVNb2RlbC5wcm90
b3R5cGUuYWRkT3JVcGRhdGVGcmFtZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVzb3VyY2VU
cmVlTW9kZWwucHJvdG90eXBlLmRpZENvbW1pdExvYWRGb3JGcmFtZSk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuUmVzb3VyY2VUcmVlTW9kZWwucHJvdG90eXBlLmZyYW1lRGV0YWNoZWRGcm9tUGFy
ZW50KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SZXNvdXJjZVRyZWVNb2RlbC5wcm90b3R5cGUu
X2NsZWFyQ2hpbGRGcmFtZXNBbmRSZXNvdXJjZXMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJl
c291cmNlVHJlZU1vZGVsLnByb3RvdHlwZS5hZGRSZXNvdXJjZVRvRnJhbWUpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLlJlc291cmNlVHJlZU1vZGVsLnByb3RvdHlwZS5fY2xlYXJSZXNvdXJjZXMp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNlVHJlZU1vZGVsLnByb3RvdHlwZS5mb3JB
bGxSZXNvdXJjZXMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNlVHJlZU1vZGVsLnBy
b3RvdHlwZS5fY2FsbEZvckZyYW1lUmVzb3VyY2VzKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJv
bnQtZW5kL1Jlc291cmNlVmlldy5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SZXNvdXJjZVZp
ZXcuY3JlYXRlUmVzb3VyY2VWaWV3KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SZXNvdXJjZVZp
ZXcucmVzb3VyY2VWaWV3VHlwZU1hdGNoZXNSZXNvdXJjZSk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuUmVzb3VyY2VWaWV3LnJlc291cmNlVmlld0ZvclJlc291cmNlKToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5SZXNvdXJjZVZpZXcucmVjcmVhdGVSZXNvdXJjZVZpZXcpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLlJlc291cmNlVmlldy5leGlzdGluZ1Jlc291cmNlVmlld0ZvclJlc291cmNlKToK
KyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlc1BhbmVsLmpzOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLlJlc291cmNlc1BhbmVsLnByb3RvdHlwZS5jYW5TaG93U291cmNlTGlu
ZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVzb3VyY2VzUGFuZWwucHJvdG90eXBlLnNob3dT
b3VyY2VMaW5lKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SZXNvdXJjZXNQYW5lbC5wcm90b3R5
cGUuc2hvd1Jlc291cmNlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SZXNvdXJjZXNQYW5lbC5w
cm90b3R5cGUuZ2V0IHNlYXJjaGFibGVWaWV3cy5jYWxsYmFjayk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuUmVzb3VyY2VzUGFuZWwucHJvdG90eXBlLmdldCBzZWFyY2hhYmxlVmlld3MpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLkZyYW1lUmVzb3VyY2VUcmVlRWxlbWVudC5wcm90b3R5cGUuX2Vy
cm9yc1dhcm5pbmdzVXBkYXRlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRnJhbWVSZXNvdXJj
ZVRyZWVFbGVtZW50LnByb3RvdHlwZS5fY29udGVudENoYW5nZWQpOgorICAgICAgICAqIGluc3Bl
Y3Rvci9mcm9udC1lbmQvU2NyaXB0c1BhbmVsLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNj
cmlwdHNQYW5lbC5wcm90b3R5cGUuX2FkZFNjcmlwdCk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
U2NyaXB0c1BhbmVsLnByb3RvdHlwZS5yZXNldCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2Ny
aXB0c1BhbmVsLnByb3RvdHlwZS5fc291cmNlRnJhbWVGb3JSZXNvdXJjZSk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuU2NyaXB0c1BhbmVsLnByb3RvdHlwZS5fc2hvd1NjcmlwdE9yUmVzb3VyY2Up
OgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvV2ViS2l0LnFyYzoKKyAgICAgICAgKiBp
bnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5odG1sOgorICAgICAgICAqIGluc3BlY3Rvci9m
cm9udC1lbmQvaW5zcGVjdG9yLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLmZvckFsbFJlc291
cmNlcyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IucmVzb3VyY2VGb3JVUkwpOgorCiAyMDEwLTEy
LTIwICBTdGV2ZSBCbG9jayAgPHN0ZXZlYmxvY2tAZ29vZ2xlLmNvbT4KIAogICAgICAgICBSZXZp
ZXdlZCBieSBKZXJlbXkgT3Jsb3cuCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBi
L1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IGZjYThjZmMuLjQ2NmQ0ODkgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC00NjQ3
LDYgKzQ2NDcsNyBAQAogICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvS2V5Ym9hcmRT
aG9ydGN1dC5qcycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9NZXRyaWNzU2lk
ZWJhclBhbmUuanMnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvTmV0d29ya0l0
ZW1WaWV3LmpzJywKKyAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL05ldHdvcmtNYW5h
Z2VyLmpzJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL05ldHdvcmtQYW5lbC5q
cycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9PYmplY3QuanMnLAogICAgICAg
ICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvT2JqZWN0UHJvcGVydGllc1NlY3Rpb24uanMnLApA
QCAtNDY2Myw5ICs0NjY0LDkgQEAKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL1Jl
c291cmNlLmpzJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlQ2F0
ZWdvcnkuanMnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VDb29r
aWVzVmlldy5qcycsCi0gICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZU1h
bmFnZXIuanMnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VIZWFk
ZXJzVmlldy5qcycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZVRp
bWluZ1ZpZXcuanMnLAorICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VU
cmVlTW9kZWwuanMnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VW
aWV3LmpzJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlc1BhbmVs
LmpzJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL1Njb3BlQ2hhaW5TaWRlYmFy
UGFuZS5qcycsCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNw
cm9qIGIvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagppbmRleCAzMjNlNTI2
Li5lZGUxNGIyIDEwMDc1NQotLS0gYS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNw
cm9qCisrKyBiL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKQEAgLTY1NTQ5
LDYgKzY1NTQ5LDEwIEBACiAJCQkJCT4KIAkJCQk8L0ZpbGU+CiAJCQkJPEZpbGUKKwkJCQkJUmVs
YXRpdmVQYXRoPSIuLlxpbnNwZWN0b3JcZnJvbnQtZW5kXE5ldHdvcmtNYW5hZ2VyLmpzIgorCQkJ
CQk+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCiAJCQkJCVJlbGF0aXZlUGF0aD0iLi5caW5zcGVj
dG9yXGZyb250LWVuZFxuZXR3b3JrUGFuZWwuY3NzIgogCQkJCQk+CiAJCQkJPC9GaWxlPgpAQCAt
NjU2MjUsMTUgKzY1NjI5LDE1IEBACiAJCQkJCT4KIAkJCQk8L0ZpbGU+CiAJCQkJPEZpbGUKLQkJ
CQkJUmVsYXRpdmVQYXRoPSIuLlxpbnNwZWN0b3JcZnJvbnQtZW5kXFJlc291cmNlTWFuYWdlci5q
cyIKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxpbnNwZWN0b3JcZnJvbnQtZW5kXFJlc291cmNlc1Bh
bmVsLmpzIgogCQkJCQk+CiAJCQkJPC9GaWxlPgogCQkJCTxGaWxlCi0JCQkJCVJlbGF0aXZlUGF0
aD0iLi5caW5zcGVjdG9yXGZyb250LWVuZFxSZXNvdXJjZXNQYW5lbC5qcyIKKwkJCQkJUmVsYXRp
dmVQYXRoPSIuLlxpbnNwZWN0b3JcZnJvbnQtZW5kXFJlc291cmNlVGltaW5nVmlldy5qcyIKIAkJ
CQkJPgogCQkJCTwvRmlsZT4KIAkJCQk8RmlsZQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGluc3Bl
Y3Rvclxmcm9udC1lbmRcUmVzb3VyY2VUaW1pbmdWaWV3LmpzIgorCQkJCQlSZWxhdGl2ZVBhdGg9
Ii4uXGluc3BlY3Rvclxmcm9udC1lbmRcUmVzb3VyY2VUcmVlTW9kZWwuanMiCiAJCQkJCT4KIAkJ
CQk8L0ZpbGU+CiAJCQkJPEZpbGUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL0NvZGVH
ZW5lcmF0b3JJbnNwZWN0b3IucG0gYi9XZWJDb3JlL2luc3BlY3Rvci9Db2RlR2VuZXJhdG9ySW5z
cGVjdG9yLnBtCmluZGV4IGU5NjBlZDYuLjk1ZjdlOGYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5z
cGVjdG9yL0NvZGVHZW5lcmF0b3JJbnNwZWN0b3IucG0KKysrIGIvV2ViQ29yZS9pbnNwZWN0b3Iv
Q29kZUdlbmVyYXRvckluc3BlY3Rvci5wbQpAQCAtMzMsNiArMzMsMjAgQEAgJHR5cGVUcmFuc2Zv
cm17IlJlc291cmNlcyJ9ID0gewogICAgICJoZWFkZXIiID0+ICJJbnNwZWN0b3JSZXNvdXJjZUFn
ZW50LmgiLAogICAgICJkb21haW5BY2Nlc3NvciIgPT4gIm1faW5zcGVjdG9yQ29udHJvbGxlci0+
bV9yZXNvdXJjZUFnZW50IiwKIH07CiskdHlwZVRyYW5zZm9ybXsiTmV0d29yayJ9ID0geworICAg
ICJmb3J3YXJkIiA9PiAiSW5zcGVjdG9yUmVzb3VyY2VBZ2VudCIsCisgICAgImhlYWRlciIgPT4g
Ikluc3BlY3RvclJlc291cmNlQWdlbnQuaCIsCisgICAgImRvbWFpbkFjY2Vzc29yIiA9PiAibV9p
bnNwZWN0b3JDb250cm9sbGVyLT5tX3Jlc291cmNlQWdlbnQiLAorfTsKKyR0eXBlVHJhbnNmb3Jt
eyJET01TdG9yYWdlIn0gPSB7CisgICAgImZvcndhcmRIZWFkZXIiID0+ICJJbnNwZWN0b3JDb250
cm9sbGVyLmgiLAorICAgICJkb21haW5BY2Nlc3NvciIgPT4gIm1faW5zcGVjdG9yQ29udHJvbGxl
ciIsCit9OworJHR5cGVUcmFuc2Zvcm17IkRhdGFiYXNlIn0gPSB7CisgICAgImZvcndhcmQiID0+
ICJJbnNwZWN0b3JCYWNrZW5kIiwKKyAgICAiaGVhZGVyIiA9PiAiSW5zcGVjdG9yQmFja2VuZC5o
IiwKKyAgICAiZG9tYWluQWNjZXNzb3IiID0+ICJtX2luc3BlY3RvckNvbnRyb2xsZXItPmluc3Bl
Y3RvckJhY2tlbmQoKSIsCit9OwogJHR5cGVUcmFuc2Zvcm17IkRPTSJ9ID0gewogICAgICJmb3J3
YXJkIiA9PiAiSW5zcGVjdG9yRE9NQWdlbnQiLAogICAgICJoZWFkZXIiID0+ICJJbnNwZWN0b3JE
T01BZ2VudC5oIiwKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5pZGwg
Yi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuaWRsCmluZGV4IDEyZTcyM2QuLmJmZjU3NDQg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5pZGwKKysrIGIvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmlkbApAQCAtNjcsNiArNjcsOCBAQCBtb2R1bGUgY29yZSB7
CiAgICAgICAgIFtkb21haW49SW5zcGVjdG9yXSB2b2lkIGhpZGVGcmFtZUhpZ2hsaWdodCgpOwog
ICAgICAgICBbbm90aWZ5LCBkb21haW49SW5zcGVjdG9yXSB2b2lkIHVwZGF0ZUZvY3VzZWROb2Rl
KG91dCBsb25nIG5vZGVJZCk7CiAKKyAgICAgICAgW2RvbWFpbj1JbnNwZWN0b3JdIHZvaWQgc2V0
RXh0cmFIZWFkZXJzKGluIE9iamVjdCBoZWFkZXJzKTsKKwogICAgICAgICAvLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
LwogICAgICAgICAvLyBDb25zb2xlIEFQSQogICAgICAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwpAQCAtODIs
NjQgKzg0LDU3IEBAIG1vZHVsZSBjb3JlIHsKICAgICAgICAgLy8gUmVzb3VyY2VzIEFQSQogICAg
ICAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLwogCi0gICAgICAgIC8vIEZJWE1FOiBOZXR3b3JrIGRvbWFpbgot
ICAgICAgICBbbm90aWZ5LCBkb21haW49UmVzb3VyY2VzXSB2b2lkIGlkZW50aWZpZXJGb3JJbml0
aWFsUmVxdWVzdChvdXQgbG9uZyBpZGVudGlmaWVyLCBvdXQgU3RyaW5nIHVybCwgb3V0IE9iamVj
dCBsb2FkZXIsIG91dCBWYWx1ZSBjYWxsU3RhY2spOwotICAgICAgICBbbm90aWZ5LCBkb21haW49
UmVzb3VyY2VzXSB2b2lkIHdpbGxTZW5kUmVxdWVzdChvdXQgbG9uZyBpZGVudGlmaWVyLCBvdXQg
ZG91YmxlIHRpbWUsIG91dCBPYmplY3QgcmVxdWVzdCwgb3V0IE9iamVjdCByZWRpcmVjdFJlc3Bv
bnNlKTsKLSAgICAgICAgW25vdGlmeSwgZG9tYWluPVJlc291cmNlc10gdm9pZCBtYXJrUmVzb3Vy
Y2VBc0NhY2hlZChvdXQgbG9uZyBpZGVudGlmaWVyKTsKLSAgICAgICAgW25vdGlmeSwgZG9tYWlu
PVJlc291cmNlc10gdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2Uob3V0IGxvbmcgaWRlbnRpZmllciwg
b3V0IGRvdWJsZSB0aW1lLCBvdXQgU3RyaW5nIHJlc291cmNlVHlwZSwgb3V0IE9iamVjdCByZXNw
b25zZSk7Ci0gICAgICAgIFtub3RpZnksIGRvbWFpbj1SZXNvdXJjZXNdIHZvaWQgZGlkUmVjZWl2
ZUNvbnRlbnRMZW5ndGgob3V0IGxvbmcgaWRlbnRpZmllciwgb3V0IGRvdWJsZSB0aW1lLCBvdXQg
bG9uZyBsZW5ndGhSZWNlaXZlZCk7Ci0gICAgICAgIFtub3RpZnksIGRvbWFpbj1SZXNvdXJjZXNd
IHZvaWQgZGlkRmluaXNoTG9hZGluZyhvdXQgbG9uZyBpZGVudGlmaWVyLCBvdXQgZG91YmxlIGZp
bmlzaFRpbWUpOwotICAgICAgICBbbm90aWZ5LCBkb21haW49UmVzb3VyY2VzXSB2b2lkIGRpZEZh
aWxMb2FkaW5nKG91dCBsb25nIGlkZW50aWZpZXIsIG91dCBkb3VibGUgdGltZSwgb3V0IFN0cmlu
ZyBsb2NhbGl6ZWREZXNjcmlwdGlvbik7Ci0gICAgICAgIFtub3RpZnksIGRvbWFpbj1SZXNvdXJj
ZXNdIHZvaWQgZGlkTG9hZFJlc291cmNlRnJvbU1lbW9yeUNhY2hlKG91dCBkb3VibGUgdGltZSwg
b3V0IE9iamVjdCByZXNvdXJjZSk7Ci0gICAgICAgIFtub3RpZnksIGRvbWFpbj1SZXNvdXJjZXNd
IHZvaWQgc2V0SW5pdGlhbENvbnRlbnQob3V0IGxvbmcgaWRlbnRpZmllciwgb3V0IFN0cmluZyBz
b3VyY2VTdHJpbmcsIG91dCBTdHJpbmcgdHlwZSk7Ci0gICAgICAgIFtub3RpZnksIGRvbWFpbj1S
ZXNvdXJjZXNdIHZvaWQgZGlkQ29tbWl0TG9hZEZvckZyYW1lKG91dCBPYmplY3QgZnJhbWUsIG91
dCBPYmplY3QgbG9hZGVyKTsKLSAgICAgICAgW25vdGlmeSwgZG9tYWluPVJlc291cmNlc10gdm9p
ZCBmcmFtZURldGFjaGVkRnJvbVBhcmVudChvdXQgdW5zaWduZWQgbG9uZyBmcmFtZUlkKTsKKyAg
ICAgICAgW25vdGlmeSwgZG9tYWluPU5ldHdvcmtdIHZvaWQgaWRlbnRpZmllckZvckluaXRpYWxS
ZXF1ZXN0KG91dCBsb25nIGlkZW50aWZpZXIsIG91dCBTdHJpbmcgdXJsLCBvdXQgT2JqZWN0IGxv
YWRlciwgb3V0IFZhbHVlIGNhbGxTdGFjayk7CisgICAgICAgIFtub3RpZnksIGRvbWFpbj1OZXR3
b3JrXSB2b2lkIHdpbGxTZW5kUmVxdWVzdChvdXQgbG9uZyBpZGVudGlmaWVyLCBvdXQgZG91Ymxl
IHRpbWUsIG91dCBPYmplY3QgcmVxdWVzdCwgb3V0IE9iamVjdCByZWRpcmVjdFJlc3BvbnNlKTsK
KyAgICAgICAgW25vdGlmeSwgZG9tYWluPU5ldHdvcmtdIHZvaWQgbWFya1Jlc291cmNlQXNDYWNo
ZWQob3V0IGxvbmcgaWRlbnRpZmllcik7CisgICAgICAgIFtub3RpZnksIGRvbWFpbj1OZXR3b3Jr
XSB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShvdXQgbG9uZyBpZGVudGlmaWVyLCBvdXQgZG91Ymxl
IHRpbWUsIG91dCBTdHJpbmcgcmVzb3VyY2VUeXBlLCBvdXQgT2JqZWN0IHJlc3BvbnNlKTsKKyAg
ICAgICAgW25vdGlmeSwgZG9tYWluPU5ldHdvcmtdIHZvaWQgZGlkUmVjZWl2ZUNvbnRlbnRMZW5n
dGgob3V0IGxvbmcgaWRlbnRpZmllciwgb3V0IGRvdWJsZSB0aW1lLCBvdXQgbG9uZyBsZW5ndGhS
ZWNlaXZlZCk7CisgICAgICAgIFtub3RpZnksIGRvbWFpbj1OZXR3b3JrXSB2b2lkIGRpZEZpbmlz
aExvYWRpbmcob3V0IGxvbmcgaWRlbnRpZmllciwgb3V0IGRvdWJsZSBmaW5pc2hUaW1lKTsKKyAg
ICAgICAgW25vdGlmeSwgZG9tYWluPU5ldHdvcmtdIHZvaWQgZGlkRmFpbExvYWRpbmcob3V0IGxv
bmcgaWRlbnRpZmllciwgb3V0IGRvdWJsZSB0aW1lLCBvdXQgU3RyaW5nIGxvY2FsaXplZERlc2Ny
aXB0aW9uKTsKKyAgICAgICAgW25vdGlmeSwgZG9tYWluPU5ldHdvcmtdIHZvaWQgZGlkTG9hZFJl
c291cmNlRnJvbU1lbW9yeUNhY2hlKG91dCBkb3VibGUgdGltZSwgb3V0IE9iamVjdCByZXNvdXJj
ZSk7CisgICAgICAgIFtub3RpZnksIGRvbWFpbj1OZXR3b3JrXSB2b2lkIHNldEluaXRpYWxDb250
ZW50KG91dCBsb25nIGlkZW50aWZpZXIsIG91dCBTdHJpbmcgc291cmNlU3RyaW5nLCBvdXQgU3Ry
aW5nIHR5cGUpOworICAgICAgICBbbm90aWZ5LCBkb21haW49TmV0d29ya10gdm9pZCBkaWRDb21t
aXRMb2FkRm9yRnJhbWUob3V0IE9iamVjdCBmcmFtZSwgb3V0IE9iamVjdCBsb2FkZXIpOworICAg
ICAgICBbbm90aWZ5LCBkb21haW49TmV0d29ya10gdm9pZCBmcmFtZURldGFjaGVkRnJvbVBhcmVu
dChvdXQgdW5zaWduZWQgbG9uZyBmcmFtZUlkKTsKICAgICAgICAKLSAgICAgICAgW2RvbWFpbj1J
bnNwZWN0b3JdIHZvaWQgc2V0RXh0cmFIZWFkZXJzKGluIE9iamVjdCBoZWFkZXJzKTsKKyAgICAg
ICAgW2RvbWFpbj1OZXR3b3JrXSB2b2lkIGNhY2hlZFJlc291cmNlcyhvdXQgT2JqZWN0IHJlc291
cmNlcyk7CisgICAgICAgIFtkb21haW49TmV0d29ya10gdm9pZCByZXNvdXJjZUNvbnRlbnQoaW4g
dW5zaWduZWQgbG9uZyBmcmFtZUlkLCBpbiBTdHJpbmcgdXJsLCBpbiBib29sZWFuIGJhc2U2NEVu
Y29kZSwgb3V0IFN0cmluZyBjb250ZW50KTsKIAotICAgICAgICBbZG9tYWluPVJlc291cmNlc10g
dm9pZCBjYWNoZWRSZXNvdXJjZXMob3V0IE9iamVjdCByZXNvdXJjZXMpOwotICAgICAgICBbZG9t
YWluPVJlc291cmNlc10gdm9pZCByZXNvdXJjZUNvbnRlbnQoaW4gdW5zaWduZWQgbG9uZyBmcmFt
ZUlkLCBpbiBTdHJpbmcgdXJsLCBpbiBib29sZWFuIGJhc2U2NEVuY29kZSwgb3V0IFN0cmluZyBj
b250ZW50KTsKLQotICAgICAgICBbbm90aWZ5LCBkb21haW49UmVzb3VyY2VzXSB2b2lkIGRpZENy
ZWF0ZVdlYlNvY2tldChvdXQgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBvdXQgU3RyaW5nIHJl
cXVlc3RVUkwpOwotICAgICAgICBbbm90aWZ5LCBkb21haW49UmVzb3VyY2VzXSB2b2lkIHdpbGxT
ZW5kV2ViU29ja2V0SGFuZHNoYWtlUmVxdWVzdChvdXQgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVy
LCBvdXQgZG91YmxlIHRpbWUsIG91dCBPYmplY3QgcmVxdWVzdCk7Ci0gICAgICAgIFtub3RpZnks
IGRvbWFpbj1SZXNvdXJjZXNdIHZvaWQgZGlkUmVjZWl2ZVdlYlNvY2tldEhhbmRzaGFrZVJlc3Bv
bnNlKG91dCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIG91dCBkb3VibGUgdGltZSwgb3V0IE9i
amVjdCByZXNwb25zZSk7Ci0gICAgICAgIFtub3RpZnksIGRvbWFpbj1SZXNvdXJjZXNdIHZvaWQg
ZGlkQ2xvc2VXZWJTb2NrZXQob3V0IHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgb3V0IGRvdWJs
ZSB0aW1lKTsKKyAgICAgICAgW25vdGlmeSwgZG9tYWluPU5ldHdvcmtdIHZvaWQgZGlkQ3JlYXRl
V2ViU29ja2V0KG91dCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIG91dCBTdHJpbmcgcmVxdWVz
dFVSTCk7CisgICAgICAgIFtub3RpZnksIGRvbWFpbj1OZXR3b3JrXSB2b2lkIHdpbGxTZW5kV2Vi
U29ja2V0SGFuZHNoYWtlUmVxdWVzdChvdXQgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBvdXQg
ZG91YmxlIHRpbWUsIG91dCBPYmplY3QgcmVxdWVzdCk7CisgICAgICAgIFtub3RpZnksIGRvbWFp
bj1OZXR3b3JrXSB2b2lkIGRpZFJlY2VpdmVXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZShvdXQg
dW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBvdXQgZG91YmxlIHRpbWUsIG91dCBPYmplY3QgcmVz
cG9uc2UpOworICAgICAgICBbbm90aWZ5LCBkb21haW49TmV0d29ya10gdm9pZCBkaWRDbG9zZVdl
YlNvY2tldChvdXQgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBvdXQgZG91YmxlIHRpbWUpOwog
CiAgICAgICAgIC8vIEZJWE1FOiBJbnRyb2R1Y2UgbmV3IFN0b3JhZ2VEb21haW4uCiAgICAgICAg
IFtkb21haW49SW5zcGVjdG9yXSB2b2lkIGdldENvb2tpZXMob3V0IEFycmF5IGNvb2tpZXMsIG91
dCBTdHJpbmcgY29va2llc1N0cmluZyk7CiAgICAgICAgIFtkb21haW49SW5zcGVjdG9yXSB2b2lk
IGRlbGV0ZUNvb2tpZShpbiBTdHJpbmcgY29va2llTmFtZSwgaW4gU3RyaW5nIGRvbWFpbik7CiAj
aWYgZGVmaW5lZChFTkFCTEVfREFUQUJBU0UpICYmIEVOQUJMRV9EQVRBQkFTRQotICAgICAgICBb
bm90aWZ5LCBkb21haW49UmVzb3VyY2VzXSB2b2lkIGFkZERhdGFiYXNlKG91dCBPYmplY3QgZGF0
YWJhc2UpOwotICAgICAgICBbbm90aWZ5LCBkb21haW49UmVzb3VyY2VzXSB2b2lkIHNlbGVjdERh
dGFiYXNlKG91dCBpbnQgZGF0YWJhc2VJZCk7Ci0gICAgICAgIFtkb21haW49QmFja2VuZF0gdm9p
ZCBnZXREYXRhYmFzZVRhYmxlTmFtZXMoaW4gbG9uZyBkYXRhYmFzZUlkLCBvdXQgQXJyYXkgdGFi
bGVOYW1lcyk7Ci0gICAgICAgIFtkb21haW49QmFja2VuZF0gdm9pZCBleGVjdXRlU1FMKGluIGxv
bmcgZGF0YWJhc2VJZCwgaW4gU3RyaW5nIHF1ZXJ5LCBvdXQgYm9vbGVhbiBzdWNjZXNzLCBvdXQg
bG9uZyB0cmFuc2FjdGlvbklkKTsKLSAgICAgICAgW25vdGlmeSwgZG9tYWluPVJlc291cmNlc10g
dm9pZCBzcWxUcmFuc2FjdGlvblN1Y2NlZWRlZChvdXQgbG9uZyB0cmFuc2FjdGlvbklkLCBvdXQg
VmFsdWUgY29sdW1uTmFtZXMsIG91dCBWYWx1ZSB2YWx1ZXMpOwotICAgICAgICBbbm90aWZ5LCBk
b21haW49UmVzb3VyY2VzXSB2b2lkIHNxbFRyYW5zYWN0aW9uRmFpbGVkKG91dCBsb25nIHRyYW5z
YWN0aW9uSWQsIG91dCBWYWx1ZSBzcWxFcnJvcik7CisgICAgICAgIFtub3RpZnksIGRvbWFpbj1E
YXRhYmFzZV0gdm9pZCBhZGREYXRhYmFzZShvdXQgT2JqZWN0IGRhdGFiYXNlKTsKKyAgICAgICAg
W25vdGlmeSwgZG9tYWluPURhdGFiYXNlXSB2b2lkIHNlbGVjdERhdGFiYXNlKG91dCBpbnQgZGF0
YWJhc2VJZCk7CisgICAgICAgIFtkb21haW49RGF0YWJhc2VdIHZvaWQgZ2V0RGF0YWJhc2VUYWJs
ZU5hbWVzKGluIGxvbmcgZGF0YWJhc2VJZCwgb3V0IEFycmF5IHRhYmxlTmFtZXMpOworICAgICAg
ICBbZG9tYWluPURhdGFiYXNlXSB2b2lkIGV4ZWN1dGVTUUwoaW4gbG9uZyBkYXRhYmFzZUlkLCBp
biBTdHJpbmcgcXVlcnksIG91dCBib29sZWFuIHN1Y2Nlc3MsIG91dCBsb25nIHRyYW5zYWN0aW9u
SWQpOworICAgICAgICBbbm90aWZ5LCBkb21haW49RGF0YWJhc2VdIHZvaWQgc3FsVHJhbnNhY3Rp
b25TdWNjZWVkZWQob3V0IGxvbmcgdHJhbnNhY3Rpb25JZCwgb3V0IFZhbHVlIGNvbHVtbk5hbWVz
LCBvdXQgVmFsdWUgdmFsdWVzKTsKKyAgICAgICAgW25vdGlmeSwgZG9tYWluPURhdGFiYXNlXSB2
b2lkIHNxbFRyYW5zYWN0aW9uRmFpbGVkKG91dCBsb25nIHRyYW5zYWN0aW9uSWQsIG91dCBWYWx1
ZSBzcWxFcnJvcik7CiAjZW5kaWYKICNpZiBkZWZpbmVkKEVOQUJMRV9ET01fU1RPUkFHRSkgJiYg
RU5BQkxFX0RPTV9TVE9SQUdFCi0gICAgICAgIFtkb21haW49SW5zcGVjdG9yXSB2b2lkIGdldERP
TVN0b3JhZ2VFbnRyaWVzKGluIGxvbmcgc3RvcmFnZUlkLCBvdXQgQXJyYXkgZW50cmllcyk7Ci0g
ICAgICAgIFtkb21haW49SW5zcGVjdG9yXSB2b2lkIHNldERPTVN0b3JhZ2VJdGVtKGluIGxvbmcg
c3RvcmFnZUlkLCBpbiBTdHJpbmcga2V5LCBpbiBTdHJpbmcgdmFsdWUsIG91dCBib29sZWFuIHN1
Y2Nlc3MpOwotICAgICAgICBbZG9tYWluPUluc3BlY3Rvcl0gdm9pZCByZW1vdmVET01TdG9yYWdl
SXRlbShpbiBsb25nIHN0b3JhZ2VJZCwgaW4gU3RyaW5nIGtleSwgb3V0IGJvb2xlYW4gc3VjY2Vz
cyk7Ci0gICAgICAgIC8vIEZJWE1FOiBudWtlIHRoZXNlIGZyb20gcmVzb3VyY2UgbWFuYWdlciBh
c2FwLCBkaXNwYXRjaCBvbiBTdG9yYWdlRG9tYWluLgotICAgICAgICBbbm90aWZ5LCBkb21haW49
UmVzb3VyY2VzXSB2b2lkIGFkZERPTVN0b3JhZ2Uob3V0IE9iamVjdCBzdG9yYWdlKTsKLSAgICAg
ICAgW25vdGlmeSwgZG9tYWluPVJlc291cmNlc10gdm9pZCB1cGRhdGVET01TdG9yYWdlKG91dCBp
bnQgc3RvcmFnZUlkKTsKLSAgICAgICAgW25vdGlmeSwgZG9tYWluPVJlc291cmNlc10gdm9pZCBz
ZWxlY3RET01TdG9yYWdlKG91dCBpbnQgc3RvcmFnZUlkKTsKLSNlbmRpZgotI2lmIGRlZmluZWQo
RU5BQkxFX09GRkxJTkVfV0VCX0FQUExJQ0FUSU9OUykgJiYgRU5BQkxFX09GRkxJTkVfV0VCX0FQ
UExJQ0FUSU9OUwotICAgICAgICBbbm90aWZ5LCBkb21haW49UmVzb3VyY2VzXSB2b2lkIHVwZGF0
ZUFwcGxpY2F0aW9uQ2FjaGVTdGF0dXMob3V0IGludCBzdGF0dXMpOwotICAgICAgICBbbm90aWZ5
LCBkb21haW49UmVzb3VyY2VzXSB2b2lkIHVwZGF0ZU5ldHdvcmtTdGF0ZShvdXQgYm9vbGVhbiBp
c05vd09ubGluZSk7CisgICAgICAgIFtkb21haW49RE9NU3RvcmFnZV0gdm9pZCBnZXRET01TdG9y
YWdlRW50cmllcyhpbiBsb25nIHN0b3JhZ2VJZCwgb3V0IEFycmF5IGVudHJpZXMpOworICAgICAg
ICBbZG9tYWluPURPTVN0b3JhZ2VdIHZvaWQgc2V0RE9NU3RvcmFnZUl0ZW0oaW4gbG9uZyBzdG9y
YWdlSWQsIGluIFN0cmluZyBrZXksIGluIFN0cmluZyB2YWx1ZSwgb3V0IGJvb2xlYW4gc3VjY2Vz
cyk7CisgICAgICAgIFtkb21haW49RE9NU3RvcmFnZV0gdm9pZCByZW1vdmVET01TdG9yYWdlSXRl
bShpbiBsb25nIHN0b3JhZ2VJZCwgaW4gU3RyaW5nIGtleSwgb3V0IGJvb2xlYW4gc3VjY2Vzcyk7
CisgICAgICAgIFtub3RpZnksIGRvbWFpbj1ET01TdG9yYWdlXSB2b2lkIGFkZERPTVN0b3JhZ2Uo
b3V0IE9iamVjdCBzdG9yYWdlKTsKKyAgICAgICAgW25vdGlmeSwgZG9tYWluPURPTVN0b3JhZ2Vd
IHZvaWQgdXBkYXRlRE9NU3RvcmFnZShvdXQgaW50IHN0b3JhZ2VJZCk7CisgICAgICAgIFtub3Rp
ZnksIGRvbWFpbj1ET01TdG9yYWdlXSB2b2lkIHNlbGVjdERPTVN0b3JhZ2Uob3V0IGludCBzdG9y
YWdlSWQpOwogI2VuZGlmCiAjaWYgZGVmaW5lZChFTkFCTEVfT0ZGTElORV9XRUJfQVBQTElDQVRJ
T05TKSAmJiBFTkFCTEVfT0ZGTElORV9XRUJfQVBQTElDQVRJT05TCiAgICAgICAgIFtkb21haW49
QXBwbGljYXRpb25DYWNoZV0gdm9pZCBnZXRBcHBsaWNhdGlvbkNhY2hlcyhvdXQgVmFsdWUgYXBw
bGljYXRpb25DYWNoZXMpOworICAgICAgICBbbm90aWZ5LCBkb21haW49QXBwbGljYXRpb25DYWNo
ZV0gdm9pZCB1cGRhdGVBcHBsaWNhdGlvbkNhY2hlU3RhdHVzKG91dCBpbnQgc3RhdHVzKTsKKyAg
ICAgICAgW25vdGlmeSwgZG9tYWluPUFwcGxpY2F0aW9uQ2FjaGVdIHZvaWQgdXBkYXRlTmV0d29y
a1N0YXRlKG91dCBib29sZWFuIGlzTm93T25saW5lKTsKICNlbmRpZgogI2lmIGRlZmluZWQoRU5B
QkxFX0ZJTEVfU1lTVEVNKSAmJiBFTkFCTEVfRklMRV9TWVNURU0KICAgICAgICAgW2RvbWFpbj1G
aWxlU3lzdGVtXSB2b2lkIGdldEZpbGVTeXN0ZW1QYXRoQXN5bmMoaW4gdW5zaWduZWQgaW50IHR5
cGUsIGluIFN0cmluZyBvcmlnaW4pOwogICAgICAgICBbZG9tYWluPUZpbGVTeXN0ZW1dIHZvaWQg
cmV2ZWFsRm9sZGVySW5PUyhpbiBTdHJpbmcgcGF0aCk7CiAKLSAgICAgICAgLy8gRklYTUU6IG51
a2UgdGhlc2UgZnJvbSByZXNvdXJjZSBtYW5hZ2VyIGFzYXAsIGRpc3BhdGNoIG9uIEZpbGVTeXN0
ZW0uCi0gICAgICAgIFtub3RpZnksIGRvbWFpbj1SZXNvdXJjZXNdIHZvaWQgZGlkR2V0RmlsZVN5
c3RlbVBhdGgob3V0IFN0cmluZyByb290LCBvdXQgaW50IHR5cGUsIG91dCBTdHJpbmcgb3JpZ2lu
KTsKLSAgICAgICAgW25vdGlmeSwgZG9tYWluPVJlc291cmNlc10gdm9pZCBkaWRHZXRGaWxlU3lz
dGVtRXJyb3Iob3V0IGludCB0eXBlLCBvdXQgU3RyaW5nIG9yaWdpbik7Ci0gICAgICAgIFtub3Rp
ZnksIGRvbWFpbj1SZXNvdXJjZXNdIHZvaWQgZGlkR2V0RmlsZVN5c3RlbURpc2FibGVkKCk7Cisg
ICAgICAgIFtub3RpZnksIGRvbWFpbj1GaWxlU3lzdGVtXSB2b2lkIGRpZEdldEZpbGVTeXN0ZW1Q
YXRoKG91dCBTdHJpbmcgcm9vdCwgb3V0IGludCB0eXBlLCBvdXQgU3RyaW5nIG9yaWdpbik7Cisg
ICAgICAgIFtub3RpZnksIGRvbWFpbj1GaWxlU3lzdGVtXSB2b2lkIGRpZEdldEZpbGVTeXN0ZW1F
cnJvcihvdXQgaW50IHR5cGUsIG91dCBTdHJpbmcgb3JpZ2luKTsKKyAgICAgICAgW25vdGlmeSwg
ZG9tYWluPUZpbGVTeXN0ZW1dIHZvaWQgZGlkR2V0RmlsZVN5c3RlbURpc2FibGVkKCk7CiAjZW5k
aWYKIAogICAgICAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL0F1ZGl0UnVsZXMuanMgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
QXVkaXRSdWxlcy5qcwppbmRleCBjZDFiMzRmLi40NTQ0NDA1IDEwMDY0NAotLS0gYS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvQXVkaXRSdWxlcy5qcworKysgYi9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvQXVkaXRSdWxlcy5qcwpAQCAtMzI2LDcgKzMyNiw3IEBAIFdlYkluc3BlY3Rv
ci5BdWRpdFJ1bGVzLlVudXNlZENzc1J1bGUucHJvdG90eXBlID0gewogICAgICAgICAgICAgICAg
ICAgICBpZiAoIXVudXNlZFJ1bGVzLmxlbmd0aCkKICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnRpbnVlOwogCi0gICAgICAgICAgICAgICAgICAgIHZhciByZXNvdXJjZSA9IFdlYkluc3BlY3Rv
ci5yZXNvdXJjZU1hbmFnZXIucmVzb3VyY2VGb3JVUkwoc3R5bGVTaGVldC5zb3VyY2VVUkwpOwor
ICAgICAgICAgICAgICAgICAgICB2YXIgcmVzb3VyY2UgPSBXZWJJbnNwZWN0b3IubmV0d29ya01h
bmFnZXIucmVzb3VyY2VGb3JVUkwoc3R5bGVTaGVldC5zb3VyY2VVUkwpOwogICAgICAgICAgICAg
ICAgICAgICB2YXIgaXNJbmxpbmVCbG9jayA9IHJlc291cmNlICYmIHJlc291cmNlLnR5cGUgPT0g
V2ViSW5zcGVjdG9yLlJlc291cmNlLlR5cGUuRG9jdW1lbnQ7CiAgICAgICAgICAgICAgICAgICAg
IHZhciB1cmwgPSAhaXNJbmxpbmVCbG9jayA/IFdlYkluc3BlY3Rvci5BdWRpdFJ1bGVSZXN1bHQu
bGlua2lmeURpc3BsYXlOYW1lKHN0eWxlU2hlZXQuc291cmNlVVJMKSA6IFN0cmluZy5zcHJpbnRm
KCJJbmxpbmUgYmxvY2sgIyVkIiwgKytpbmxpbmVCbG9ja09yZGluYWwpOwogICAgICAgICAgICAg
ICAgICAgICB2YXIgcGN0VW51c2VkID0gTWF0aC5yb3VuZCgxMDAgKiB1bnVzZWRTdHlsZXNoZWV0
U2l6ZSAvIHN0eWxlc2hlZXRTaXplKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9DU1NTdHlsZU1vZGVsLmpzIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NT
U1N0eWxlTW9kZWwuanMKaW5kZXggMmQxNTU4Mi4uZTRhN2EyNiAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NTU1N0eWxlTW9kZWwuanMKKysrIGIvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL0NTU1N0eWxlTW9kZWwuanMKQEAgLTE2Miw3ICsxNjIsNyBAQCBXZWJJ
bnNwZWN0b3IuQ1NTU3R5bGVNb2RlbC5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgZnVuY3Rpb24g
Y2FsbGJhY2soaHJlZiwgY29udGVudCkKICAgICAgICAgewotICAgICAgICAgICAgdmFyIHJlc291
cmNlID0gV2ViSW5zcGVjdG9yLnJlc291cmNlTWFuYWdlci5yZXNvdXJjZUZvclVSTChocmVmKTsK
KyAgICAgICAgICAgIHZhciByZXNvdXJjZSA9IFdlYkluc3BlY3Rvci5uZXR3b3JrTWFuYWdlci5y
ZXNvdXJjZUZvclVSTChocmVmKTsKICAgICAgICAgICAgIGlmIChyZXNvdXJjZSAmJiByZXNvdXJj
ZS50eXBlID09PSBXZWJJbnNwZWN0b3IuUmVzb3VyY2UuVHlwZS5TdHlsZXNoZWV0KQogICAgICAg
ICAgICAgICAgIHJlc291cmNlLnNldENvbnRlbnQoY29udGVudCwgdGhpcy5fb25SZXZlcnQuYmlu
ZCh0aGlzLCBzdHlsZVNoZWV0SWQpKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL0NvbnNvbGVWaWV3LmpzIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL0NvbnNvbGVWaWV3LmpzCmluZGV4IDllNzM3YmMuLjQ2ZDM0YmYgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Db25zb2xlVmlldy5qcworKysgYi9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvQ29uc29sZVZpZXcuanMKQEAgLTIxOCw3ICsyMTgsNyBAQCBX
ZWJJbnNwZWN0b3IuQ29uc29sZVZpZXcucHJvdG90eXBlID0gewogCiAgICAgICAgIGlmIChtc2cg
aW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2UgJiYgIShtc2cgaW5zdGFuY2Vv
ZiBXZWJJbnNwZWN0b3IuQ29uc29sZUNvbW1hbmRSZXN1bHQpKSB7CiAgICAgICAgICAgICB0aGlz
Ll9pbmNyZW1lbnRFcnJvcldhcm5pbmdDb3VudChtc2cpOwotICAgICAgICAgICAgV2ViSW5zcGVj
dG9yLnJlc291cmNlTWFuYWdlci5hZGRDb25zb2xlTWVzc2FnZShtc2cpOworICAgICAgICAgICAg
V2ViSW5zcGVjdG9yLm5ldHdvcmtNYW5hZ2VyLmFkZENvbnNvbGVNZXNzYWdlKG1zZyk7CiAgICAg
ICAgICAgICB0aGlzLmNvbW1hbmRTaW5jZVByZXZpb3VzTWVzc2FnZSA9IGZhbHNlOwogICAgICAg
ICAgICAgdGhpcy5wcmV2aW91c01lc3NhZ2UgPSBtc2c7CiAgICAgICAgIH0gZWxzZSBpZiAobXNn
IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkNvbnNvbGVDb21tYW5kKSB7CkBAIC0yODUsNyArMjg1
LDcgQEAgV2ViSW5zcGVjdG9yLkNvbnNvbGVWaWV3LnByb3RvdHlwZSA9IHsKIAogICAgIGNsZWFy
TWVzc2FnZXM6IGZ1bmN0aW9uKCkKICAgICB7Ci0gICAgICAgIFdlYkluc3BlY3Rvci5yZXNvdXJj
ZU1hbmFnZXIuY2xlYXJDb25zb2xlTWVzc2FnZXMoKTsKKyAgICAgICAgV2ViSW5zcGVjdG9yLm5l
dHdvcmtNYW5hZ2VyLmNsZWFyQ29uc29sZU1lc3NhZ2VzKCk7CiAKICAgICAgICAgdGhpcy5tZXNz
YWdlcyA9IFtdOwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRE9N
QWdlbnQuanMgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRE9NQWdlbnQuanMKaW5kZXgg
NDMyYWMzZi4uODk4MjJhMyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L0RPTUFnZW50LmpzCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9ET01BZ2VudC5q
cwpAQCAtNDcxLDYgKzQ3MSwxOCBAQCBXZWJJbnNwZWN0b3IuQXBwbGljYXRpb25DYWNoZS5nZXRB
cHBsaWNhdGlvbkNhY2hlc0FzeW5jID0gZnVuY3Rpb24oY2FsbGJhY2spCiAgICAgSW5zcGVjdG9y
QmFja2VuZC5nZXRBcHBsaWNhdGlvbkNhY2hlcyhteWNhbGxiYWNrKTsKIH0KIAorV2ViSW5zcGVj
dG9yLkFwcGxpY2F0aW9uQ2FjaGUudXBkYXRlQXBwbGljYXRpb25DYWNoZVN0YXR1cyA9IGZ1bmN0
aW9uKHN0YXR1cykKK3sKKyAgICBXZWJJbnNwZWN0b3IucGFuZWxzLnJlc291cmNlcy51cGRhdGVB
cHBsaWNhdGlvbkNhY2hlU3RhdHVzKHN0YXR1cyk7Cit9CisKK1dlYkluc3BlY3Rvci5BcHBsaWNh
dGlvbkNhY2hlLnVwZGF0ZU5ldHdvcmtTdGF0ZSA9IGZ1bmN0aW9uKGlzTm93T25saW5lKQorewor
ICAgIFdlYkluc3BlY3Rvci5wYW5lbHMucmVzb3VyY2VzLnVwZGF0ZU5ldHdvcmtTdGF0ZShpc05v
d09ubGluZSk7Cit9CisKK0luc3BlY3RvckJhY2tlbmQucmVnaXN0ZXJEb21haW5EaXNwYXRjaGVy
KCJBcHBsaWNhdGlvbkNhY2hlIiwgV2ViSW5zcGVjdG9yLkFwcGxpY2F0aW9uQ2FjaGUpOworCiBX
ZWJJbnNwZWN0b3IuQ29va2llcyA9IHt9CiAKIFdlYkluc3BlY3Rvci5Db29raWVzLmdldENvb2tp
ZXNBc3luYyA9IGZ1bmN0aW9uKGNhbGxiYWNrKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL0RPTVN0b3JhZ2UuanMgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
RE9NU3RvcmFnZS5qcwppbmRleCAzN2JlOGY2Li5hYTE0YTljIDEwMDY0NAotLS0gYS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvRE9NU3RvcmFnZS5qcworKysgYi9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvRE9NU3RvcmFnZS5qcwpAQCAtNzAsMyArNzAsMjYgQEAgV2ViSW5zcGVjdG9y
LkRPTVN0b3JhZ2UucHJvdG90eXBlID0gewogICAgIH0KIH0KIAorV2ViSW5zcGVjdG9yLkRPTVN0
b3JhZ2UuYWRkRE9NU3RvcmFnZSA9IGZ1bmN0aW9uKHBheWxvYWQpCit7CisgICAgaWYgKCFXZWJJ
bnNwZWN0b3IucGFuZWxzLnJlc291cmNlcykKKyAgICAgICAgcmV0dXJuOworICAgIHZhciBkb21T
dG9yYWdlID0gbmV3IFdlYkluc3BlY3Rvci5ET01TdG9yYWdlKAorICAgICAgICBwYXlsb2FkLmlk
LAorICAgICAgICBwYXlsb2FkLmhvc3QsCisgICAgICAgIHBheWxvYWQuaXNMb2NhbFN0b3JhZ2Up
OworICAgIFdlYkluc3BlY3Rvci5wYW5lbHMucmVzb3VyY2VzLmFkZERPTVN0b3JhZ2UoZG9tU3Rv
cmFnZSk7Cit9CisKK1dlYkluc3BlY3Rvci5ET01TdG9yYWdlLnNlbGVjdERPTVN0b3JhZ2UgPSBm
dW5jdGlvbihvKQoreworICAgIFdlYkluc3BlY3Rvci5zaG93UGFuZWwoInJlc291cmNlcyIpOwor
ICAgIFdlYkluc3BlY3Rvci5wYW5lbHMucmVzb3VyY2VzLnNlbGVjdERPTVN0b3JhZ2Uobyk7Cit9
CisKK1dlYkluc3BlY3Rvci5ET01TdG9yYWdlLnVwZGF0ZURPTVN0b3JhZ2UgPSBmdW5jdGlvbihz
dG9yYWdlSWQpCit7CisgICAgV2ViSW5zcGVjdG9yLnBhbmVscy5yZXNvdXJjZXMudXBkYXRlRE9N
U3RvcmFnZShzdG9yYWdlSWQpOworfQorCitJbnNwZWN0b3JCYWNrZW5kLnJlZ2lzdGVyRG9tYWlu
RGlzcGF0Y2hlcigiRE9NU3RvcmFnZSIsIFdlYkluc3BlY3Rvci5ET01TdG9yYWdlKTsKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9EYXRhYmFzZS5qcyBiL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9EYXRhYmFzZS5qcwppbmRleCA3YWFjN2QxLi4xYmJlZTQ1IDEw
MDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRGF0YWJhc2UuanMKKysrIGIv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RhdGFiYXNlLmpzCkBAIC0xMDEsMyArMTAxLDQx
IEBAIFdlYkluc3BlY3Rvci5EYXRhYmFzZS5wcm90b3R5cGUgPSB7CiAgICAgICAgIEluc3BlY3Rv
ckJhY2tlbmQuZXhlY3V0ZVNRTCh0aGlzLl9pZCwgcXVlcnksIGNhbGxiYWNrKTsKICAgICB9CiB9
CisKK1dlYkluc3BlY3Rvci5EYXRhYmFzZS5hZGREYXRhYmFzZSA9IGZ1bmN0aW9uKHBheWxvYWQp
Cit7CisgICAgaWYgKCFXZWJJbnNwZWN0b3IucGFuZWxzLnJlc291cmNlcykKKyAgICAgICAgcmV0
dXJuOworICAgIHZhciBkYXRhYmFzZSA9IG5ldyBXZWJJbnNwZWN0b3IuRGF0YWJhc2UoCisgICAg
ICAgIHBheWxvYWQuaWQsCisgICAgICAgIHBheWxvYWQuZG9tYWluLAorICAgICAgICBwYXlsb2Fk
Lm5hbWUsCisgICAgICAgIHBheWxvYWQudmVyc2lvbik7CisgICAgV2ViSW5zcGVjdG9yLnBhbmVs
cy5yZXNvdXJjZXMuYWRkRGF0YWJhc2UoZGF0YWJhc2UpOworfQorCitXZWJJbnNwZWN0b3IuRGF0
YWJhc2Uuc2VsZWN0RGF0YWJhc2UgPSBmdW5jdGlvbihvKQoreworICAgIFdlYkluc3BlY3Rvci5z
aG93UGFuZWwoInJlc291cmNlcyIpOworICAgIFdlYkluc3BlY3Rvci5wYW5lbHMucmVzb3VyY2Vz
LnNlbGVjdERhdGFiYXNlKG8pOworfQorCitXZWJJbnNwZWN0b3IuRGF0YWJhc2Uuc3FsVHJhbnNh
Y3Rpb25TdWNjZWVkZWQgPSBmdW5jdGlvbih0cmFuc2FjdGlvbklkLCBjb2x1bW5OYW1lcywgdmFs
dWVzKQoreworICAgIHZhciBjYWxsYmFjayA9IFdlYkluc3BlY3Rvci5EYXRhYmFzZS5zdWNjZXNz
Q2FsbGJhY2tzW3RyYW5zYWN0aW9uSWRdOworICAgIGlmICghY2FsbGJhY2spCisgICAgICAgIHJl
dHVybjsKKyAgICBkZWxldGUgV2ViSW5zcGVjdG9yLkRhdGFiYXNlLnN1Y2Nlc3NDYWxsYmFja3Nb
dHJhbnNhY3Rpb25JZF07CisgICAgY2FsbGJhY2soY29sdW1uTmFtZXMsIHZhbHVlcyk7Cit9CisK
K1dlYkluc3BlY3Rvci5EYXRhYmFzZS5zcWxUcmFuc2FjdGlvbkZhaWxlZCA9IGZ1bmN0aW9uKHRy
YW5zYWN0aW9uSWQsIGVycm9yT2JqKQoreworICAgIHZhciBjYWxsYmFjayA9IFdlYkluc3BlY3Rv
ci5EYXRhYmFzZS5lcnJvckNhbGxiYWNrc1t0cmFuc2FjdGlvbklkXTsKKyAgICBpZiAoIWNhbGxi
YWNrKQorICAgICAgICByZXR1cm47CisgICAgZGVsZXRlIFdlYkluc3BlY3Rvci5EYXRhYmFzZS5l
cnJvckNhbGxiYWNrc1t0cmFuc2FjdGlvbklkXTsKKyAgICBjYWxsYmFjayhlcnJvck9iaik7Cit9
CisKK0luc3BlY3RvckJhY2tlbmQucmVnaXN0ZXJEb21haW5EaXNwYXRjaGVyKCJEYXRhYmFzZSIs
IFdlYkluc3BlY3Rvci5EYXRhYmFzZSk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvRmlsZVN5c3RlbVZpZXcuanMgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
RmlsZVN5c3RlbVZpZXcuanMKaW5kZXggOGNkMDEwNy4uMTRlY2Y0NiAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0ZpbGVTeXN0ZW1WaWV3LmpzCisrKyBiL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9GaWxlU3lzdGVtVmlldy5qcwpAQCAtNDAsNiArNDAsMjMgQEAg
V2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW0uZ2V0RmlsZVN5c3RlbVBhdGhzQXN5bmMgPSBmdW5jdGlv
bihvcmlnaW4pCiAgICAgSW5zcGVjdG9yQmFja2VuZC5nZXRGaWxlU3lzdGVtUGF0aEFzeW5jKFdl
Ykluc3BlY3Rvci5GaWxlU3lzdGVtLlRFTVBPUkFSWSwgb3JpZ2luKTsKIH0KIAorV2ViSW5zcGVj
dG9yLkZpbGVTeXN0ZW0uZGlkR2V0RmlsZVN5c3RlbVBhdGggPSBmdW5jdGlvbihyb290LCB0eXBl
LCBvcmlnaW4pCit7CisgICAgV2ViSW5zcGVjdG9yLnBhbmVscy5yZXNvdXJjZXMudXBkYXRlRmls
ZVN5c3RlbVBhdGgocm9vdCwgdHlwZSwgb3JpZ2luKTsKK30KKworV2ViSW5zcGVjdG9yLkZpbGVT
eXN0ZW0uZGlkR2V0RmlsZVN5c3RlbUVycm9yID0gZnVuY3Rpb24odHlwZSwgb3JpZ2luKQorewor
ICAgIFdlYkluc3BlY3Rvci5wYW5lbHMucmVzb3VyY2VzLnVwZGF0ZUZpbGVTeXN0ZW1FcnJvcih0
eXBlLCBvcmlnaW4pOworfQorCitXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbS5kaWRHZXRGaWxlU3lz
dGVtRGlzYWJsZWQgPSBmdW5jdGlvbigpCit7CisgICAgV2ViSW5zcGVjdG9yLnBhbmVscy5yZXNv
dXJjZXMuc2V0RmlsZVN5c3RlbURpc2FibGVkKCk7Cit9CisKK0luc3BlY3RvckJhY2tlbmQucmVn
aXN0ZXJEb21haW5EaXNwYXRjaGVyKCJGaWxlU3lzdGVtIiwgV2ViSW5zcGVjdG9yLkZpbGVTeXN0
ZW0pOworCiBXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbVZpZXcgPSBmdW5jdGlvbih0cmVlRWxlbWVu
dCwgZmlsZVN5c3RlbU9yaWdpbikKIHsKICAgICBXZWJJbnNwZWN0b3IuVmlldy5jYWxsKHRoaXMp
OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL05ldHdvcmtJdGVtVmll
dy5qcyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9OZXR3b3JrSXRlbVZpZXcuanMKaW5k
ZXggNDhlM2IxOS4uNDE4ZjU1OSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL05ldHdvcmtJdGVtVmlldy5qcworKysgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
TmV0d29ya0l0ZW1WaWV3LmpzCkBAIC0zNiw3ICszNiw3IEBAIFdlYkluc3BlY3Rvci5OZXR3b3Jr
SXRlbVZpZXcgPSBmdW5jdGlvbihyZXNvdXJjZSkKIAogICAgIHRoaXMuX2hlYWRlcnNWaWV3ID0g
bmV3IFdlYkluc3BlY3Rvci5SZXNvdXJjZUhlYWRlcnNWaWV3KHJlc291cmNlKTsKICAgICAvLyBE
byBub3Qgc3RvcmUgcmVmZXJlbmNlIHRvIGNvbnRlbnQgdmlldyAtIGl0IGNhbiBiZSByZWNyZWF0
ZWQuCi0gICAgdmFyIGNvbnRlbnRWaWV3ID0gV2ViSW5zcGVjdG9yLlJlc291cmNlTWFuYWdlci5y
ZXNvdXJjZVZpZXdGb3JSZXNvdXJjZShyZXNvdXJjZSk7CisgICAgdmFyIGNvbnRlbnRWaWV3ID0g
V2ViSW5zcGVjdG9yLlJlc291cmNlVmlldy5yZXNvdXJjZVZpZXdGb3JSZXNvdXJjZShyZXNvdXJj
ZSk7CiAKICAgICB0aGlzLl90YWJiZWRQYW5lID0gbmV3IFdlYkluc3BlY3Rvci5UYWJiZWRQYW5l
KHRoaXMuZWxlbWVudCk7CiAgICAgdGhpcy5fdGFiYmVkUGFuZS5hcHBlbmRUYWIoImhlYWRlcnMi
LCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkhlYWRlcnMiKSwgdGhpcy5faGVhZGVyc1ZpZXcpOwpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL05ldHdvcmtNYW5hZ2VyLmpz
IGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL05ldHdvcmtNYW5hZ2VyLmpzCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVhODVjMjYKLS0tIC9kZXYvbnVsbAorKysgYi9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvTmV0d29ya01hbmFnZXIuanMKQEAgLTAsMCArMSw0
MTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDksIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1l
dDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
cgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBv
ZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCitXZWJJbnNwZWN0b3IuTmV0d29ya01hbmFnZXIgPSBmdW5jdGlvbigpCit7Cisg
ICAgdGhpcy5fcmVzb3VyY2VzQnlJZCA9IHt9OworICAgIHRoaXMuX3Jlc291cmNlc0J5VVJMID0g
e307CisgICAgdGhpcy5fcmVzb3VyY2VUcmVlTW9kZWwgPSBuZXcgV2ViSW5zcGVjdG9yLlJlc291
cmNlVHJlZU1vZGVsKCk7CisgICAgSW5zcGVjdG9yQmFja2VuZC5jYWNoZWRSZXNvdXJjZXModGhp
cy5fcHJvY2Vzc0NhY2hlZFJlc291cmNlcy5iaW5kKHRoaXMpKTsKKyAgICBJbnNwZWN0b3JCYWNr
ZW5kLnJlZ2lzdGVyRG9tYWluRGlzcGF0Y2hlcigiTmV0d29yayIsIHRoaXMpOworfQorCitXZWJJ
bnNwZWN0b3IuTmV0d29ya01hbmFnZXIucHJvdG90eXBlID0geworICAgIGlkZW50aWZpZXJGb3JJ
bml0aWFsUmVxdWVzdDogZnVuY3Rpb24oaWRlbnRpZmllciwgdXJsLCBsb2FkZXIsIGNhbGxTdGFj
aykKKyAgICB7CisgICAgICAgIHZhciByZXNvdXJjZSA9IHRoaXMuX2NyZWF0ZVJlc291cmNlKGlk
ZW50aWZpZXIsIHVybCwgbG9hZGVyLCBjYWxsU3RhY2spOworCisgICAgICAgIC8vIEl0IGlzIGlt
cG9ydGFudCB0byBiaW5kIHJlc291cmNlIHVybCBlYXJseSAoYmVmb3JlIHNjcmlwdHMgY29tcGls
ZSkuCisgICAgICAgIHRoaXMuX2JpbmRSZXNvdXJjZVVSTChyZXNvdXJjZSk7CisKKyAgICAgICAg
V2ViSW5zcGVjdG9yLnBhbmVscy5uZXR3b3JrLnJlZnJlc2hSZXNvdXJjZShyZXNvdXJjZSk7Cisg
ICAgICAgIFdlYkluc3BlY3Rvci5wYW5lbHMuYXVkaXRzLnJlc291cmNlU3RhcnRlZChyZXNvdXJj
ZSk7CisgICAgfSwKKworICAgIF9jcmVhdGVSZXNvdXJjZTogZnVuY3Rpb24oaWRlbnRpZmllciwg
dXJsLCBsb2FkZXIsIHN0YWNrVHJhY2UpCisgICAgeworICAgICAgICB2YXIgcmVzb3VyY2UgPSBu
ZXcgV2ViSW5zcGVjdG9yLlJlc291cmNlKGlkZW50aWZpZXIsIHVybCk7CisgICAgICAgIHJlc291
cmNlLmxvYWRlciA9IGxvYWRlcjsKKyAgICAgICAgaWYgKGxvYWRlcikKKyAgICAgICAgICAgIHJl
c291cmNlLmRvY3VtZW50VVJMID0gbG9hZGVyLnVybDsKKyAgICAgICAgcmVzb3VyY2Uuc3RhY2tU
cmFjZSA9IHN0YWNrVHJhY2U7CisKKyAgICAgICAgdGhpcy5fcmVzb3VyY2VzQnlJZFtpZGVudGlm
aWVyXSA9IHJlc291cmNlOworICAgICAgICByZXR1cm4gcmVzb3VyY2U7CisgICAgfSwKKworICAg
IHdpbGxTZW5kUmVxdWVzdDogZnVuY3Rpb24oaWRlbnRpZmllciwgdGltZSwgcmVxdWVzdCwgcmVk
aXJlY3RSZXNwb25zZSkKKyAgICB7CisgICAgICAgIHZhciByZXNvdXJjZSA9IHRoaXMuX3Jlc291
cmNlc0J5SWRbaWRlbnRpZmllcl07CisgICAgICAgIGlmICghcmVzb3VyY2UpCisgICAgICAgICAg
ICByZXR1cm47CisKKyAgICAgICAgLy8gUmVkaXJlY3QgbWF5IGhhdmUgZW1wdHkgVVJMIGFuZCB3
ZSdkIGxpa2UgdG8gbm90IGNyYXNoIHdpdGggaW52YWxpZCBIYXNoTWFwIGVudHJ5LgorICAgICAg
ICAvLyBTZWUgaHR0cC90ZXN0cy9taXNjL3dpbGwtc2VuZC1yZXF1ZXN0LXJldHVybnMtbnVsbC1v
bi1yZWRpcmVjdC5odG1sCisgICAgICAgIHZhciBpc1JlZGlyZWN0ID0gIXJlZGlyZWN0UmVzcG9u
c2UuaXNOdWxsICYmIHJlcXVlc3QudXJsLmxlbmd0aDsKKyAgICAgICAgaWYgKGlzUmVkaXJlY3Qp
IHsKKyAgICAgICAgICAgIHJlc291cmNlLmVuZFRpbWUgPSB0aW1lOworICAgICAgICAgICAgdGhp
cy5kaWRSZWNlaXZlUmVzcG9uc2UoaWRlbnRpZmllciwgdGltZSwgIk90aGVyIiwgcmVkaXJlY3RS
ZXNwb25zZSk7CisgICAgICAgICAgICByZXNvdXJjZSA9IHRoaXMuX2FwcGVuZFJlZGlyZWN0KHJl
c291cmNlLmlkZW50aWZpZXIsIHJlcXVlc3QudXJsKTsKKyAgICAgICAgfQorCisgICAgICAgIHRo
aXMuX3VwZGF0ZVJlc291cmNlV2l0aFJlcXVlc3QocmVzb3VyY2UsIHJlcXVlc3QpOworICAgICAg
ICByZXNvdXJjZS5zdGFydFRpbWUgPSB0aW1lOworCisgICAgICAgIGlmIChpc1JlZGlyZWN0KSB7
CisgICAgICAgICAgICBXZWJJbnNwZWN0b3IucGFuZWxzLm5ldHdvcmsucmVmcmVzaFJlc291cmNl
KHJlc291cmNlKTsKKyAgICAgICAgICAgIFdlYkluc3BlY3Rvci5wYW5lbHMuYXVkaXRzLnJlc291
cmNlU3RhcnRlZChyZXNvdXJjZSk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgV2ViSW5z
cGVjdG9yLnBhbmVscy5uZXR3b3JrLnJlZnJlc2hSZXNvdXJjZShyZXNvdXJjZSk7CisgICAgfSwK
KworICAgIF91cGRhdGVSZXNvdXJjZVdpdGhSZXF1ZXN0OiBmdW5jdGlvbihyZXNvdXJjZSwgcmVx
dWVzdCkKKyAgICB7CisgICAgICAgIHJlc291cmNlLnJlcXVlc3RNZXRob2QgPSByZXF1ZXN0Lmh0
dHBNZXRob2Q7CisgICAgICAgIHJlc291cmNlLnJlcXVlc3RIZWFkZXJzID0gcmVxdWVzdC5odHRw
SGVhZGVyRmllbGRzOworICAgICAgICByZXNvdXJjZS5yZXF1ZXN0Rm9ybURhdGEgPSByZXF1ZXN0
LnJlcXVlc3RGb3JtRGF0YTsKKyAgICB9LAorCisgICAgX2FwcGVuZFJlZGlyZWN0OiBmdW5jdGlv
bihpZGVudGlmaWVyLCByZWRpcmVjdFVSTCkKKyAgICB7CisgICAgICAgIHZhciBvcmlnaW5hbFJl
c291cmNlID0gdGhpcy5fcmVzb3VyY2VzQnlJZFtpZGVudGlmaWVyXTsKKyAgICAgICAgb3JpZ2lu
YWxSZXNvdXJjZS5pZGVudGlmaWVyID0gbnVsbDsKKworICAgICAgICB2YXIgbmV3UmVzb3VyY2Ug
PSB0aGlzLl9jcmVhdGVSZXNvdXJjZShpZGVudGlmaWVyLCByZWRpcmVjdFVSTCwgb3JpZ2luYWxS
ZXNvdXJjZS5sb2FkZXIsIG9yaWdpbmFsUmVzb3VyY2Uuc3RhY2tUcmFjZSk7CisgICAgICAgIG5l
d1Jlc291cmNlLnJlZGlyZWN0cyA9IG9yaWdpbmFsUmVzb3VyY2UucmVkaXJlY3RzIHx8IFtdOwor
ICAgICAgICBkZWxldGUgb3JpZ2luYWxSZXNvdXJjZS5yZWRpcmVjdHM7CisgICAgICAgIG5ld1Jl
c291cmNlLnJlZGlyZWN0cy5wdXNoKG9yaWdpbmFsUmVzb3VyY2UpOworICAgICAgICByZXR1cm4g
bmV3UmVzb3VyY2U7CisgICAgfSwKKworICAgIG1hcmtSZXNvdXJjZUFzQ2FjaGVkOiBmdW5jdGlv
bihpZGVudGlmaWVyKQorICAgIHsKKyAgICAgICAgdmFyIHJlc291cmNlID0gdGhpcy5fcmVzb3Vy
Y2VzQnlJZFtpZGVudGlmaWVyXTsKKyAgICAgICAgaWYgKCFyZXNvdXJjZSkKKyAgICAgICAgICAg
IHJldHVybjsKKworICAgICAgICByZXNvdXJjZS5jYWNoZWQgPSB0cnVlOworICAgICAgICBXZWJJ
bnNwZWN0b3IucGFuZWxzLm5ldHdvcmsucmVmcmVzaFJlc291cmNlKHJlc291cmNlKTsKKyAgICB9
LAorCisgICAgZGlkUmVjZWl2ZVJlc3BvbnNlOiBmdW5jdGlvbihpZGVudGlmaWVyLCB0aW1lLCBy
ZXNvdXJjZVR5cGUsIHJlc3BvbnNlKQorICAgIHsKKyAgICAgICAgdmFyIHJlc291cmNlID0gdGhp
cy5fcmVzb3VyY2VzQnlJZFtpZGVudGlmaWVyXTsKKyAgICAgICAgaWYgKCFyZXNvdXJjZSkKKyAg
ICAgICAgICAgIHJldHVybjsKKworICAgICAgICByZXNvdXJjZS5yZXNwb25zZVJlY2VpdmVkVGlt
ZSA9IHRpbWU7CisgICAgICAgIHJlc291cmNlLnR5cGUgPSBXZWJJbnNwZWN0b3IuUmVzb3VyY2Uu
VHlwZVtyZXNvdXJjZVR5cGVdOworCisgICAgICAgIHRoaXMuX3VwZGF0ZVJlc291cmNlV2l0aFJl
c3BvbnNlKHJlc291cmNlLCByZXNwb25zZSk7CisKKyAgICAgICAgV2ViSW5zcGVjdG9yLnBhbmVs
cy5uZXR3b3JrLnJlZnJlc2hSZXNvdXJjZShyZXNvdXJjZSk7CisgICAgICAgIHRoaXMuX3Jlc291
cmNlVHJlZU1vZGVsLmFkZFJlc291cmNlVG9GcmFtZShyZXNvdXJjZS5sb2FkZXIuZnJhbWVJZCwg
cmVzb3VyY2UpOworICAgIH0sCisKKyAgICBfdXBkYXRlUmVzb3VyY2VXaXRoUmVzcG9uc2U6IGZ1
bmN0aW9uKHJlc291cmNlLCByZXNwb25zZSkKKyAgICB7CisgICAgICAgIGlmIChyZXNvdXJjZS5p
c051bGwpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgcmVzb3VyY2UubWltZVR5cGUg
PSByZXNwb25zZS5taW1lVHlwZTsKKyAgICAgICAgcmVzb3VyY2UuZXhwZWN0ZWRDb250ZW50TGVu
Z3RoID0gcmVzcG9uc2UuZXhwZWN0ZWRDb250ZW50TGVuZ3RoOworICAgICAgICByZXNvdXJjZS50
ZXh0RW5jb2RpbmdOYW1lID0gcmVzcG9uc2UudGV4dEVuY29kaW5nTmFtZTsKKyAgICAgICAgcmVz
b3VyY2Uuc3VnZ2VzdGVkRmlsZW5hbWUgPSByZXNwb25zZS5zdWdnZXN0ZWRGaWxlbmFtZTsKKyAg
ICAgICAgcmVzb3VyY2Uuc3RhdHVzQ29kZSA9IHJlc3BvbnNlLmh0dHBTdGF0dXNDb2RlOworICAg
ICAgICByZXNvdXJjZS5zdGF0dXNUZXh0ID0gcmVzcG9uc2UuaHR0cFN0YXR1c1RleHQ7CisKKyAg
ICAgICAgcmVzb3VyY2UucmVzcG9uc2VIZWFkZXJzID0gcmVzcG9uc2UuaHR0cEhlYWRlckZpZWxk
czsKKyAgICAgICAgcmVzb3VyY2UuY29ubmVjdGlvblJldXNlZCA9IHJlc3BvbnNlLmNvbm5lY3Rp
b25SZXVzZWQ7CisgICAgICAgIHJlc291cmNlLmNvbm5lY3Rpb25JRCA9IHJlc3BvbnNlLmNvbm5l
Y3Rpb25JRDsKKworICAgICAgICBpZiAocmVzcG9uc2Uud2FzQ2FjaGVkKQorICAgICAgICAgICAg
cmVzb3VyY2UuY2FjaGVkID0gdHJ1ZTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmVzb3Vy
Y2UudGltaW5nID0gcmVzcG9uc2UudGltaW5nOworCisgICAgICAgIGlmIChyZXNwb25zZS5sb2Fk
SW5mbykgeworICAgICAgICAgICAgaWYgKHJlc3BvbnNlLmxvYWRJbmZvLmh0dHBTdGF0dXNDb2Rl
KQorICAgICAgICAgICAgICAgIHJlc291cmNlLnN0YXR1c0NvZGUgPSByZXNwb25zZS5sb2FkSW5m
by5odHRwU3RhdHVzQ29kZTsKKyAgICAgICAgICAgIGlmIChyZXNwb25zZS5sb2FkSW5mby5odHRw
U3RhdHVzVGV4dCkKKyAgICAgICAgICAgICAgICByZXNvdXJjZS5zdGF0dXNUZXh0ID0gcmVzcG9u
c2UubG9hZEluZm8uaHR0cFN0YXR1c1RleHQ7CisgICAgICAgICAgICByZXNvdXJjZS5yZXF1ZXN0
SGVhZGVycyA9IHJlc3BvbnNlLmxvYWRJbmZvLnJlcXVlc3RIZWFkZXJzOworICAgICAgICAgICAg
cmVzb3VyY2UucmVzcG9uc2VIZWFkZXJzID0gcmVzcG9uc2UubG9hZEluZm8ucmVzcG9uc2VIZWFk
ZXJzOworICAgICAgICB9CisgICAgfSwKKworICAgIGRpZFJlY2VpdmVDb250ZW50TGVuZ3RoOiBm
dW5jdGlvbihpZGVudGlmaWVyLCB0aW1lLCBsZW5ndGhSZWNlaXZlZCkKKyAgICB7CisgICAgICAg
IHZhciByZXNvdXJjZSA9IHRoaXMuX3Jlc291cmNlc0J5SWRbaWRlbnRpZmllcl07CisgICAgICAg
IGlmICghcmVzb3VyY2UpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgcmVzb3VyY2Uu
cmVzb3VyY2VTaXplICs9IGxlbmd0aFJlY2VpdmVkOworICAgICAgICByZXNvdXJjZS5lbmRUaW1l
ID0gdGltZTsKKworICAgICAgICBXZWJJbnNwZWN0b3IucGFuZWxzLm5ldHdvcmsucmVmcmVzaFJl
c291cmNlKHJlc291cmNlKTsKKyAgICB9LAorCisgICAgZGlkRmluaXNoTG9hZGluZzogZnVuY3Rp
b24oaWRlbnRpZmllciwgZmluaXNoVGltZSkKKyAgICB7CisgICAgICAgIHZhciByZXNvdXJjZSA9
IHRoaXMuX3Jlc291cmNlc0J5SWRbaWRlbnRpZmllcl07CisgICAgICAgIGlmICghcmVzb3VyY2Up
CisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgcmVzb3VyY2UuZW5kVGltZSA9IGZpbmlz
aFRpbWU7CisgICAgICAgIHJlc291cmNlLmZpbmlzaGVkID0gdHJ1ZTsKKworICAgICAgICBXZWJJ
bnNwZWN0b3IucGFuZWxzLm5ldHdvcmsucmVmcmVzaFJlc291cmNlKHJlc291cmNlKTsKKyAgICAg
ICAgV2ViSW5zcGVjdG9yLnBhbmVscy5hdWRpdHMucmVzb3VyY2VGaW5pc2hlZChyZXNvdXJjZSk7
CisgICAgICAgIFdlYkluc3BlY3Rvci5leHRlbnNpb25TZXJ2ZXIubm90aWZ5UmVzb3VyY2VGaW5p
c2hlZChyZXNvdXJjZSk7CisgICAgICAgIGRlbGV0ZSB0aGlzLl9yZXNvdXJjZXNCeUlkW2lkZW50
aWZpZXJdOworICAgIH0sCisKKyAgICBkaWRGYWlsTG9hZGluZzogZnVuY3Rpb24oaWRlbnRpZmll
ciwgdGltZSwgbG9jYWxpemVkRGVzY3JpcHRpb24pCisgICAgeworICAgICAgICB2YXIgcmVzb3Vy
Y2UgPSB0aGlzLl9yZXNvdXJjZXNCeUlkW2lkZW50aWZpZXJdOworICAgICAgICBpZiAoIXJlc291
cmNlKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHJlc291cmNlLmZhaWxlZCA9IHRy
dWU7CisgICAgICAgIHJlc291cmNlLmxvY2FsaXplZEZhaWxEZXNjcmlwdGlvbiA9IGxvY2FsaXpl
ZERlc2NyaXB0aW9uOworICAgICAgICByZXNvdXJjZS5maW5pc2hlZCA9IHRydWU7CisgICAgICAg
IHJlc291cmNlLmVuZFRpbWUgPSB0aW1lOworCisgICAgICAgIFdlYkluc3BlY3Rvci5wYW5lbHMu
bmV0d29yay5yZWZyZXNoUmVzb3VyY2UocmVzb3VyY2UpOworICAgICAgICBXZWJJbnNwZWN0b3Iu
cGFuZWxzLmF1ZGl0cy5yZXNvdXJjZUZpbmlzaGVkKHJlc291cmNlKTsKKyAgICAgICAgV2ViSW5z
cGVjdG9yLmV4dGVuc2lvblNlcnZlci5ub3RpZnlSZXNvdXJjZUZpbmlzaGVkKHJlc291cmNlKTsK
KyAgICAgICAgZGVsZXRlIHRoaXMuX3Jlc291cmNlc0J5SWRbaWRlbnRpZmllcl07CisgICAgfSwK
KworICAgIGRpZExvYWRSZXNvdXJjZUZyb21NZW1vcnlDYWNoZTogZnVuY3Rpb24odGltZSwgY2Fj
aGVkUmVzb3VyY2UpCisgICAgeworICAgICAgICB2YXIgcmVzb3VyY2UgPSB0aGlzLl9jcmVhdGVS
ZXNvdXJjZShudWxsLCBjYWNoZWRSZXNvdXJjZS51cmwsIGNhY2hlZFJlc291cmNlLmxvYWRlcik7
CisgICAgICAgIHRoaXMuX3VwZGF0ZVJlc291cmNlV2l0aENhY2hlZFJlc291cmNlKHJlc291cmNl
LCBjYWNoZWRSZXNvdXJjZSk7CisgICAgICAgIHJlc291cmNlLmNhY2hlZCA9IHRydWU7CisgICAg
ICAgIHJlc291cmNlLnJlcXVlc3RNZXRob2QgPSAiR0VUIjsKKyAgICAgICAgcmVzb3VyY2Uuc3Rh
cnRUaW1lID0gcmVzb3VyY2UucmVzcG9uc2VSZWNlaXZlZFRpbWUgPSByZXNvdXJjZS5lbmRUaW1l
ID0gdGltZTsKKyAgICAgICAgcmVzb3VyY2UuZmluaXNoZWQgPSB0cnVlOworCisgICAgICAgIFdl
Ykluc3BlY3Rvci5wYW5lbHMubmV0d29yay5yZWZyZXNoUmVzb3VyY2UocmVzb3VyY2UpOworICAg
ICAgICBXZWJJbnNwZWN0b3IucGFuZWxzLmF1ZGl0cy5yZXNvdXJjZVN0YXJ0ZWQocmVzb3VyY2Up
OworICAgICAgICBXZWJJbnNwZWN0b3IucGFuZWxzLmF1ZGl0cy5yZXNvdXJjZUZpbmlzaGVkKHJl
c291cmNlKTsKKyAgICAgICAgdGhpcy5fcmVzb3VyY2VUcmVlTW9kZWwuYWRkUmVzb3VyY2VUb0Zy
YW1lKHJlc291cmNlLmxvYWRlci5mcmFtZUlkLCByZXNvdXJjZSk7CisgICAgfSwKKworICAgIF91
cGRhdGVSZXNvdXJjZVdpdGhDYWNoZWRSZXNvdXJjZTogZnVuY3Rpb24ocmVzb3VyY2UsIGNhY2hl
ZFJlc291cmNlKQorICAgIHsKKyAgICAgICAgcmVzb3VyY2UudHlwZSA9IFdlYkluc3BlY3Rvci5S
ZXNvdXJjZS5UeXBlW2NhY2hlZFJlc291cmNlLnR5cGVdOworICAgICAgICByZXNvdXJjZS5yZXNv
dXJjZVNpemUgPSBjYWNoZWRSZXNvdXJjZS5lbmNvZGVkU2l6ZTsKKyAgICAgICAgdGhpcy5fdXBk
YXRlUmVzb3VyY2VXaXRoUmVzcG9uc2UocmVzb3VyY2UsIGNhY2hlZFJlc291cmNlLnJlc3BvbnNl
KTsKKyAgICB9LAorCisgICAgc2V0SW5pdGlhbENvbnRlbnQ6IGZ1bmN0aW9uKGlkZW50aWZpZXIs
IHNvdXJjZVN0cmluZywgdHlwZSkKKyAgICB7CisgICAgICAgIHZhciByZXNvdXJjZSA9IFdlYklu
c3BlY3Rvci5wYW5lbHMubmV0d29yay5yZXNvdXJjZXNbaWRlbnRpZmllcl07CisgICAgICAgIGlm
ICghcmVzb3VyY2UpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgcmVzb3VyY2UudHlw
ZSA9IFdlYkluc3BlY3Rvci5SZXNvdXJjZS5UeXBlW3R5cGVdOworICAgICAgICByZXNvdXJjZS5z
ZXRJbml0aWFsQ29udGVudChzb3VyY2VTdHJpbmcpOworICAgICAgICBXZWJJbnNwZWN0b3IucGFu
ZWxzLnJlc291cmNlcy5yZWZyZXNoUmVzb3VyY2UocmVzb3VyY2UpOworICAgICAgICBXZWJJbnNw
ZWN0b3IucGFuZWxzLm5ldHdvcmsucmVmcmVzaFJlc291cmNlKHJlc291cmNlKTsKKyAgICB9LAor
CisgICAgZGlkQ29tbWl0TG9hZEZvckZyYW1lOiBmdW5jdGlvbihmcmFtZSwgbG9hZGVyKQorICAg
IHsKKyAgICAgICAgdGhpcy5fcmVzb3VyY2VUcmVlTW9kZWwuZGlkQ29tbWl0TG9hZEZvckZyYW1l
KGZyYW1lLCBsb2FkZXIpOworICAgICAgICBpZiAoIWZyYW1lLnBhcmVudElkKSB7CisgICAgICAg
ICAgICB2YXIgbWFpblJlc291cmNlID0gdGhpcy5yZXNvdXJjZUZvclVSTChmcmFtZS51cmwpOwor
ICAgICAgICAgICAgaWYgKG1haW5SZXNvdXJjZSkgeworICAgICAgICAgICAgICAgIFdlYkluc3Bl
Y3Rvci5tYWluUmVzb3VyY2UgPSBtYWluUmVzb3VyY2U7CisgICAgICAgICAgICAgICAgbWFpblJl
c291cmNlLmlzTWFpblJlc291cmNlID0gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQor
ICAgIH0sCisKKyAgICBmcmFtZURldGFjaGVkRnJvbVBhcmVudDogZnVuY3Rpb24oZnJhbWVJZCkK
KyAgICB7CisgICAgICAgIHRoaXMuX3Jlc291cmNlVHJlZU1vZGVsLmZyYW1lRGV0YWNoZWRGcm9t
UGFyZW50KGZyYW1lSWQpOworICAgIH0sCisKKyAgICBkaWRDcmVhdGVXZWJTb2NrZXQ6IGZ1bmN0
aW9uKGlkZW50aWZpZXIsIHJlcXVlc3RVUkwpCisgICAgeworICAgICAgICB2YXIgcmVzb3VyY2Ug
PSB0aGlzLl9jcmVhdGVSZXNvdXJjZShpZGVudGlmaWVyLCByZXF1ZXN0VVJMKTsKKyAgICAgICAg
cmVzb3VyY2UudHlwZSA9IFdlYkluc3BlY3Rvci5SZXNvdXJjZS5UeXBlLldlYlNvY2tldDsKKyAg
ICAgICAgV2ViSW5zcGVjdG9yLnBhbmVscy5uZXR3b3JrLnJlZnJlc2hSZXNvdXJjZShyZXNvdXJj
ZSk7CisgICAgfSwKKworICAgIHdpbGxTZW5kV2ViU29ja2V0SGFuZHNoYWtlUmVxdWVzdDogZnVu
Y3Rpb24oaWRlbnRpZmllciwgdGltZSwgcmVxdWVzdCkKKyAgICB7CisgICAgICAgIHZhciByZXNv
dXJjZSA9IHRoaXMuX3Jlc291cmNlc0J5SWRbaWRlbnRpZmllcl07CisgICAgICAgIGlmICghcmVz
b3VyY2UpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgcmVzb3VyY2UucmVxdWVzdE1l
dGhvZCA9ICJHRVQiOworICAgICAgICByZXNvdXJjZS5yZXF1ZXN0SGVhZGVycyA9IHJlcXVlc3Qu
d2ViU29ja2V0SGVhZGVyRmllbGRzOworICAgICAgICByZXNvdXJjZS53ZWJTb2NrZXRSZXF1ZXN0
S2V5MyA9IHJlcXVlc3Qud2ViU29ja2V0UmVxdWVzdEtleTM7CisgICAgICAgIHJlc291cmNlLnN0
YXJ0VGltZSA9IHRpbWU7CisKKyAgICAgICAgV2ViSW5zcGVjdG9yLnBhbmVscy5uZXR3b3JrLnJl
ZnJlc2hSZXNvdXJjZShyZXNvdXJjZSk7CisgICAgfSwKKworICAgIGRpZFJlY2VpdmVXZWJTb2Nr
ZXRIYW5kc2hha2VSZXNwb25zZTogZnVuY3Rpb24oaWRlbnRpZmllciwgdGltZSwgcmVzcG9uc2Up
CisgICAgeworICAgICAgICB2YXIgcmVzb3VyY2UgPSB0aGlzLl9yZXNvdXJjZXNCeUlkW2lkZW50
aWZpZXJdOworICAgICAgICBpZiAoIXJlc291cmNlKQorICAgICAgICAgICAgcmV0dXJuOworCisg
ICAgICAgIHJlc291cmNlLnN0YXR1c0NvZGUgPSByZXNwb25zZS5zdGF0dXNDb2RlOworICAgICAg
ICByZXNvdXJjZS5zdGF0dXNUZXh0ID0gcmVzcG9uc2Uuc3RhdHVzVGV4dDsKKyAgICAgICAgcmVz
b3VyY2UucmVzcG9uc2VIZWFkZXJzID0gcmVzcG9uc2Uud2ViU29ja2V0SGVhZGVyRmllbGRzOwor
ICAgICAgICByZXNvdXJjZS53ZWJTb2NrZXRDaGFsbGVuZ2VSZXNwb25zZSA9IHJlc3BvbnNlLndl
YlNvY2tldENoYWxsZW5nZVJlc3BvbnNlOworICAgICAgICByZXNvdXJjZS5yZXNwb25zZVJlY2Vp
dmVkVGltZSA9IHRpbWU7CisKKyAgICAgICAgV2ViSW5zcGVjdG9yLnBhbmVscy5uZXR3b3JrLnJl
ZnJlc2hSZXNvdXJjZShyZXNvdXJjZSk7CisgICAgfSwKKworICAgIGRpZENsb3NlV2ViU29ja2V0
OiBmdW5jdGlvbihpZGVudGlmaWVyLCB0aW1lKQorICAgIHsKKyAgICAgICAgdmFyIHJlc291cmNl
ID0gdGhpcy5fcmVzb3VyY2VzQnlJZFtpZGVudGlmaWVyXTsKKyAgICAgICAgaWYgKCFyZXNvdXJj
ZSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgcmVzb3VyY2UuZW5kVGltZSA9IHRpbWU7
CisKKyAgICAgICAgV2ViSW5zcGVjdG9yLnBhbmVscy5uZXR3b3JrLnJlZnJlc2hSZXNvdXJjZShy
ZXNvdXJjZSk7CisgICAgfSwKKworICAgIF9wcm9jZXNzQ2FjaGVkUmVzb3VyY2VzOiBmdW5jdGlv
bihtYWluRnJhbWVQYXlsb2FkKQorICAgIHsKKyAgICAgICAgdmFyIG1haW5SZXNvdXJjZSA9IHRo
aXMuX2FkZEZyYW1lc1JlY3Vyc2l2ZWx5KG1haW5GcmFtZVBheWxvYWQpOworICAgICAgICBXZWJJ
bnNwZWN0b3IubWFpblJlc291cmNlID0gbWFpblJlc291cmNlOworICAgICAgICBtYWluUmVzb3Vy
Y2UuaXNNYWluUmVzb3VyY2UgPSB0cnVlOworICAgIH0sCisKKyAgICBfYWRkRnJhbWVzUmVjdXJz
aXZlbHk6IGZ1bmN0aW9uKGZyYW1lUGF5bG9hZCkKKyAgICB7CisgICAgICAgIHZhciBmcmFtZVJl
c291cmNlID0gdGhpcy5fY3JlYXRlUmVzb3VyY2UobnVsbCwgZnJhbWVQYXlsb2FkLnJlc291cmNl
LnVybCwgZnJhbWVQYXlsb2FkLnJlc291cmNlLmxvYWRlcik7CisgICAgICAgIHRoaXMuX3VwZGF0
ZVJlc291cmNlV2l0aFJlcXVlc3QoZnJhbWVSZXNvdXJjZSwgZnJhbWVQYXlsb2FkLnJlc291cmNl
LnJlcXVlc3QpOworICAgICAgICB0aGlzLl91cGRhdGVSZXNvdXJjZVdpdGhSZXNwb25zZShmcmFt
ZVJlc291cmNlLCBmcmFtZVBheWxvYWQucmVzb3VyY2UucmVzcG9uc2UpOworICAgICAgICBmcmFt
ZVJlc291cmNlLnR5cGUgPSBXZWJJbnNwZWN0b3IuUmVzb3VyY2UuVHlwZVsiRG9jdW1lbnQiXTsK
KyAgICAgICAgZnJhbWVSZXNvdXJjZS5maW5pc2hlZCA9IHRydWU7CisgICAgICAgIHRoaXMuX2Jp
bmRSZXNvdXJjZVVSTChmcmFtZVJlc291cmNlKTsKKworICAgICAgICB0aGlzLl9yZXNvdXJjZVRy
ZWVNb2RlbC5hZGRPclVwZGF0ZUZyYW1lKGZyYW1lUGF5bG9hZCk7CisgICAgICAgIHRoaXMuX3Jl
c291cmNlVHJlZU1vZGVsLmFkZFJlc291cmNlVG9GcmFtZShmcmFtZVBheWxvYWQuaWQsIGZyYW1l
UmVzb3VyY2UpOworCisgICAgICAgIGZvciAodmFyIGkgPSAwOyBmcmFtZVBheWxvYWQuY2hpbGRy
ZW4gJiYgaSA8IGZyYW1lUGF5bG9hZC5jaGlsZHJlbi5sZW5ndGg7ICsraSkKKyAgICAgICAgICAg
IHRoaXMuX2FkZEZyYW1lc1JlY3Vyc2l2ZWx5KGZyYW1lUGF5bG9hZC5jaGlsZHJlbltpXSk7CisK
KyAgICAgICAgaWYgKCFmcmFtZVBheWxvYWQuc3VicmVzb3VyY2VzKQorICAgICAgICAgICAgcmV0
dXJuOworCisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZnJhbWVQYXlsb2FkLnN1YnJlc291
cmNlcy5sZW5ndGg7ICsraSkgeworICAgICAgICAgICAgdmFyIGNhY2hlZFJlc291cmNlID0gZnJh
bWVQYXlsb2FkLnN1YnJlc291cmNlc1tpXTsKKyAgICAgICAgICAgIHZhciByZXNvdXJjZSA9IHRo
aXMuX2NyZWF0ZVJlc291cmNlKG51bGwsIGNhY2hlZFJlc291cmNlLnVybCwgY2FjaGVkUmVzb3Vy
Y2UubG9hZGVyKTsKKyAgICAgICAgICAgIHRoaXMuX3VwZGF0ZVJlc291cmNlV2l0aENhY2hlZFJl
c291cmNlKHJlc291cmNlLCBjYWNoZWRSZXNvdXJjZSk7CisgICAgICAgICAgICByZXNvdXJjZS5m
aW5pc2hlZCA9IHRydWU7CisgICAgICAgICAgICB0aGlzLl9iaW5kUmVzb3VyY2VVUkwocmVzb3Vy
Y2UpOworICAgICAgICAgICAgdGhpcy5fcmVzb3VyY2VUcmVlTW9kZWwuYWRkUmVzb3VyY2VUb0Zy
YW1lKGZyYW1lUGF5bG9hZC5pZCwgcmVzb3VyY2UpOworICAgICAgICB9CisgICAgICAgIHJldHVy
biBmcmFtZVJlc291cmNlOworICAgIH0sCisKKyAgICByZXNvdXJjZUZvclVSTDogZnVuY3Rpb24o
dXJsKQorICAgIHsKKyAgICAgICAgLy8gRklYTUU6IHJlY2VpdmUgZnJhbWVJZCBoZXJlLgorICAg
ICAgICB2YXIgZW50cnkgPSB0aGlzLl9yZXNvdXJjZXNCeVVSTFt1cmxdOworICAgICAgICBpZiAo
ZW50cnkgaW5zdGFuY2VvZiBBcnJheSkKKyAgICAgICAgICAgIHJldHVybiBlbnRyeVswXTsKKyAg
ICAgICAgcmV0dXJuIGVudHJ5OworICAgIH0sCisKKyAgICBhZGRDb25zb2xlTWVzc2FnZTogZnVu
Y3Rpb24obXNnKQorICAgIHsKKyAgICAgICAgdmFyIHJlc291cmNlID0gdGhpcy5yZXNvdXJjZUZv
clVSTChtc2cudXJsKTsKKyAgICAgICAgaWYgKCFyZXNvdXJjZSkKKyAgICAgICAgICAgIHJldHVy
bjsKKworICAgICAgICBzd2l0Y2ggKG1zZy5sZXZlbCkgeworICAgICAgICBjYXNlIFdlYkluc3Bl
Y3Rvci5Db25zb2xlTWVzc2FnZS5NZXNzYWdlTGV2ZWwuV2FybmluZzoKKyAgICAgICAgICAgIHJl
c291cmNlLndhcm5pbmdzICs9IG1zZy5yZXBlYXREZWx0YTsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICBjYXNlIFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZS5NZXNzYWdlTGV2ZWwuRXJy
b3I6CisgICAgICAgICAgICByZXNvdXJjZS5lcnJvcnMgKz0gbXNnLnJlcGVhdERlbHRhOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICB2YXIgdmlldyA9IFdlYkluc3Bl
Y3Rvci5SZXNvdXJjZVZpZXcucmVzb3VyY2VWaWV3Rm9yUmVzb3VyY2UocmVzb3VyY2UpOworICAg
ICAgICBpZiAodmlldy5hZGRNZXNzYWdlKQorICAgICAgICAgICAgdmlldy5hZGRNZXNzYWdlKG1z
Zyk7CisgICAgfSwKKworICAgIGNsZWFyQ29uc29sZU1lc3NhZ2VzOiBmdW5jdGlvbigpCisgICAg
eworICAgICAgICBmdW5jdGlvbiBjYWxsYmFjayhyZXNvdXJjZSkKKyAgICAgICAgeworICAgICAg
ICAgICAgcmVzb3VyY2UuY2xlYXJFcnJvcnNBbmRXYXJuaW5ncygpOworICAgICAgICB9CisgICAg
ICAgIHRoaXMuX3Jlc291cmNlVHJlZU1vZGVsLmZvckFsbFJlc291cmNlcyhjYWxsYmFjayk7Cisg
ICAgfSwKKworICAgIGZvckFsbFJlc291cmNlczogZnVuY3Rpb24oY2FsbGJhY2spCisgICAgewor
ICAgICAgICB0aGlzLl9yZXNvdXJjZVRyZWVNb2RlbC5mb3JBbGxSZXNvdXJjZXMoY2FsbGJhY2sp
OworICAgIH0sCisKKyAgICBfYmluZFJlc291cmNlVVJMOiBmdW5jdGlvbihyZXNvdXJjZSkKKyAg
ICB7CisgICAgICAgIHZhciByZXNvdXJjZUZvclVSTCA9IHRoaXMuX3Jlc291cmNlc0J5VVJMW3Jl
c291cmNlLnVybF07CisgICAgICAgIGlmICghcmVzb3VyY2VGb3JVUkwpCisgICAgICAgICAgICB0
aGlzLl9yZXNvdXJjZXNCeVVSTFtyZXNvdXJjZS51cmxdID0gcmVzb3VyY2U7CisgICAgICAgIGVs
c2UgaWYgKHJlc291cmNlRm9yVVJMIGluc3RhbmNlb2YgQXJyYXkpCisgICAgICAgICAgICByZXNv
dXJjZUZvclVSTC5wdXNoKHJlc291cmNlKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgdGhp
cy5fcmVzb3VyY2VzQnlVUkxbcmVzb3VyY2UudXJsXSA9IFtyZXNvdXJjZUZvclVSTCwgcmVzb3Vy
Y2VdOworICAgIH0sCisKKyAgICB1bmJpbmRSZXNvdXJjZVVSTDogZnVuY3Rpb24ocmVzb3VyY2Up
CisgICAgeworICAgICAgICB2YXIgcmVzb3VyY2VGb3JVUkwgPSB0aGlzLl9yZXNvdXJjZXNCeVVS
TFtyZXNvdXJjZS51cmxdOworICAgICAgICBpZiAoIXJlc291cmNlRm9yVVJMKQorICAgICAgICAg
ICAgcmV0dXJuOworCisgICAgICAgIGlmIChyZXNvdXJjZUZvclVSTCBpbnN0YW5jZW9mIEFycmF5
KSB7CisgICAgICAgICAgICByZXNvdXJjZUZvclVSTC5yZW1vdmUocmVzb3VyY2UsIHRydWUpOwor
ICAgICAgICAgICAgaWYgKHJlc291cmNlRm9yVVJMLmxlbmd0aCA9PT0gMSkKKyAgICAgICAgICAg
ICAgICB0aGlzLl9yZXNvdXJjZXNCeVVSTFtyZXNvdXJjZS51cmxdID0gcmVzb3VyY2VGb3JVUkxb
MF07CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBkZWxldGUgdGhp
cy5fcmVzb3VyY2VzQnlVUkxbcmVzb3VyY2UudXJsXTsKKyAgICB9Cit9CisKK1dlYkluc3BlY3Rv
ci5OZXR3b3JrTWFuYWdlci5yZXF1ZXN0Q29udGVudCA9IGZ1bmN0aW9uKHJlc291cmNlLCBiYXNl
NjRFbmNvZGUsIGNhbGxiYWNrKQoreworICAgIEluc3BlY3RvckJhY2tlbmQucmVzb3VyY2VDb250
ZW50KHJlc291cmNlLmxvYWRlci5mcmFtZUlkLCByZXNvdXJjZS51cmwsIGJhc2U2NEVuY29kZSwg
Y2FsbGJhY2spOworfQorCmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
TmV0d29ya1BhbmVsLmpzIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL05ldHdvcmtQYW5l
bC5qcwppbmRleCA5OTQxZGJmLi43YjZkZjhiIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvTmV0d29ya1BhbmVsLmpzCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9OZXR3b3JrUGFuZWwuanMKQEAgLTc5NywxNCArNzk3LDE0IEBAIFdlYkluc3BlY3Rvci5O
ZXR3b3JrUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICBpZiAoIXJlc291cmNlKQogICAgICAg
ICAgICAgcmV0dXJuOwogCi0gICAgICAgIHZhciBvbGRWaWV3ID0gV2ViSW5zcGVjdG9yLlJlc291
cmNlTWFuYWdlci5leGlzdGluZ1Jlc291cmNlVmlld0ZvclJlc291cmNlKHJlc291cmNlKTsKKyAg
ICAgICAgdmFyIG9sZFZpZXcgPSBXZWJJbnNwZWN0b3IuUmVzb3VyY2VWaWV3LmV4aXN0aW5nUmVz
b3VyY2VWaWV3Rm9yUmVzb3VyY2UocmVzb3VyY2UpOwogICAgICAgICBpZiAoIW9sZFZpZXcpCiAg
ICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgaWYgKFdlYkluc3BlY3Rvci5SZXNvdXJjZU1h
bmFnZXIucmVzb3VyY2VWaWV3VHlwZU1hdGNoZXNSZXNvdXJjZShyZXNvdXJjZSkpCisgICAgICAg
IGlmIChXZWJJbnNwZWN0b3IuUmVzb3VyY2VWaWV3LnJlc291cmNlVmlld1R5cGVNYXRjaGVzUmVz
b3VyY2UocmVzb3VyY2UpKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIHZhciBuZXdW
aWV3ID0gV2ViSW5zcGVjdG9yLlJlc291cmNlTWFuYWdlci5yZWNyZWF0ZVJlc291cmNlVmlldyhy
ZXNvdXJjZSk7CisgICAgICAgIHZhciBuZXdWaWV3ID0gV2ViSW5zcGVjdG9yLlJlc291cmNlVmll
dy5yZWNyZWF0ZVJlc291cmNlVmlldyhyZXNvdXJjZSk7CiAgICAgICAgIGlmICh0aGlzLnZpc2li
bGVWaWV3ID09PSBvbGRWaWV3KQogICAgICAgICAgICAgdGhpcy52aXNpYmxlVmlldyA9IG5ld1Zp
ZXc7CiAgICAgfSwKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNv
dXJjZS5qcyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZS5qcwppbmRleCBk
YTIxMDkyLi4wNjNjYTQzIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
UmVzb3VyY2UuanMKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlLmpz
CkBAIC02ODQsNyArNjg0LDcgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlLnByb3RvdHlwZSA9IHsK
ICAgICAgICAgICAgIHRoaXMuX3BlbmRpbmdDb250ZW50Q2FsbGJhY2tzLmxlbmd0aCA9IDA7CiAg
ICAgICAgICAgICBkZWxldGUgdGhpcy5fY29udGVudFJlcXVlc3RlZDsKICAgICAgICAgfQotICAg
ICAgICBXZWJJbnNwZWN0b3IuUmVzb3VyY2VNYW5hZ2VyLnJlcXVlc3RDb250ZW50KHRoaXMsIHRo
aXMuX2NvbnRlbnRFbmNvZGVkLCBvblJlc291cmNlQ29udGVudC5iaW5kKHRoaXMpKTsKKyAgICAg
ICAgV2ViSW5zcGVjdG9yLk5ldHdvcmtNYW5hZ2VyLnJlcXVlc3RDb250ZW50KHRoaXMsIHRoaXMu
X2NvbnRlbnRFbmNvZGVkLCBvblJlc291cmNlQ29udGVudC5iaW5kKHRoaXMpKTsKICAgICB9CiB9
CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZU1hbmFn
ZXIuanMgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VNYW5hZ2VyLmpzCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ZjFjNTc0Li4wMDAwMDAwCi0tLSBhL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZU1hbmFnZXIuanMKKysrIC9kZXYvbnVsbApA
QCAtMSw2ODEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOSwgMjAxMCBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
IGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBj
b3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVy
IHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmli
dXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQg
ZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
Ci0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0g
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0KLVdlYkluc3BlY3Rvci5SZXNvdXJjZU1hbmFnZXIgPSBmdW5j
dGlvbigpCi17Ci0gICAgdGhpcy5fcmVzb3VyY2VzQnlJZCA9IHt9OwotICAgIHRoaXMuX3Jlc291
cmNlc0J5VVJMID0ge307Ci0gICAgdGhpcy5fcmVzb3VyY2VUcmVlTW9kZWwgPSBuZXcgV2ViSW5z
cGVjdG9yLlJlc291cmNlVHJlZU1vZGVsKCk7Ci0gICAgSW5zcGVjdG9yQmFja2VuZC5jYWNoZWRS
ZXNvdXJjZXModGhpcy5fcHJvY2Vzc0NhY2hlZFJlc291cmNlcy5iaW5kKHRoaXMpKTsKLSAgICBJ
bnNwZWN0b3JCYWNrZW5kLnJlZ2lzdGVyRG9tYWluRGlzcGF0Y2hlcigiUmVzb3VyY2VzIiwgdGhp
cyk7Ci19Ci0KLVdlYkluc3BlY3Rvci5SZXNvdXJjZU1hbmFnZXIucHJvdG90eXBlID0gewotICAg
IGlkZW50aWZpZXJGb3JJbml0aWFsUmVxdWVzdDogZnVuY3Rpb24oaWRlbnRpZmllciwgdXJsLCBs
b2FkZXIsIGNhbGxTdGFjaykKLSAgICB7Ci0gICAgICAgIHZhciByZXNvdXJjZSA9IHRoaXMuX2Ny
ZWF0ZVJlc291cmNlKGlkZW50aWZpZXIsIHVybCwgbG9hZGVyLCBjYWxsU3RhY2spOwotCi0gICAg
ICAgIC8vIEl0IGlzIGltcG9ydGFudCB0byBiaW5kIHJlc291cmNlIHVybCBlYXJseSAoYmVmb3Jl
IHNjcmlwdHMgY29tcGlsZSkuCi0gICAgICAgIHRoaXMuX2JpbmRSZXNvdXJjZVVSTChyZXNvdXJj
ZSk7Ci0KLSAgICAgICAgV2ViSW5zcGVjdG9yLnBhbmVscy5uZXR3b3JrLnJlZnJlc2hSZXNvdXJj
ZShyZXNvdXJjZSk7Ci0gICAgICAgIFdlYkluc3BlY3Rvci5wYW5lbHMuYXVkaXRzLnJlc291cmNl
U3RhcnRlZChyZXNvdXJjZSk7Ci0gICAgfSwKLQotICAgIF9jcmVhdGVSZXNvdXJjZTogZnVuY3Rp
b24oaWRlbnRpZmllciwgdXJsLCBsb2FkZXIsIHN0YWNrVHJhY2UpCi0gICAgewotICAgICAgICB2
YXIgcmVzb3VyY2UgPSBuZXcgV2ViSW5zcGVjdG9yLlJlc291cmNlKGlkZW50aWZpZXIsIHVybCk7
Ci0gICAgICAgIHJlc291cmNlLmxvYWRlciA9IGxvYWRlcjsKLSAgICAgICAgaWYgKGxvYWRlcikK
LSAgICAgICAgICAgIHJlc291cmNlLmRvY3VtZW50VVJMID0gbG9hZGVyLnVybDsKLSAgICAgICAg
cmVzb3VyY2Uuc3RhY2tUcmFjZSA9IHN0YWNrVHJhY2U7Ci0KLSAgICAgICAgdGhpcy5fcmVzb3Vy
Y2VzQnlJZFtpZGVudGlmaWVyXSA9IHJlc291cmNlOwotICAgICAgICByZXR1cm4gcmVzb3VyY2U7
Ci0gICAgfSwKLQotICAgIHdpbGxTZW5kUmVxdWVzdDogZnVuY3Rpb24oaWRlbnRpZmllciwgdGlt
ZSwgcmVxdWVzdCwgcmVkaXJlY3RSZXNwb25zZSkKLSAgICB7Ci0gICAgICAgIHZhciByZXNvdXJj
ZSA9IHRoaXMuX3Jlc291cmNlc0J5SWRbaWRlbnRpZmllcl07Ci0gICAgICAgIGlmICghcmVzb3Vy
Y2UpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgLy8gUmVkaXJlY3QgbWF5IGhhdmUg
ZW1wdHkgVVJMIGFuZCB3ZSdkIGxpa2UgdG8gbm90IGNyYXNoIHdpdGggaW52YWxpZCBIYXNoTWFw
IGVudHJ5LgotICAgICAgICAvLyBTZWUgaHR0cC90ZXN0cy9taXNjL3dpbGwtc2VuZC1yZXF1ZXN0
LXJldHVybnMtbnVsbC1vbi1yZWRpcmVjdC5odG1sCi0gICAgICAgIHZhciBpc1JlZGlyZWN0ID0g
IXJlZGlyZWN0UmVzcG9uc2UuaXNOdWxsICYmIHJlcXVlc3QudXJsLmxlbmd0aDsKLSAgICAgICAg
aWYgKGlzUmVkaXJlY3QpIHsKLSAgICAgICAgICAgIHJlc291cmNlLmVuZFRpbWUgPSB0aW1lOwot
ICAgICAgICAgICAgdGhpcy5kaWRSZWNlaXZlUmVzcG9uc2UoaWRlbnRpZmllciwgdGltZSwgIk90
aGVyIiwgcmVkaXJlY3RSZXNwb25zZSk7Ci0gICAgICAgICAgICByZXNvdXJjZSA9IHRoaXMuX2Fw
cGVuZFJlZGlyZWN0KHJlc291cmNlLmlkZW50aWZpZXIsIHJlcXVlc3QudXJsKTsKLSAgICAgICAg
fQotCi0gICAgICAgIHRoaXMuX3VwZGF0ZVJlc291cmNlV2l0aFJlcXVlc3QocmVzb3VyY2UsIHJl
cXVlc3QpOwotICAgICAgICByZXNvdXJjZS5zdGFydFRpbWUgPSB0aW1lOwotCi0gICAgICAgIGlm
IChpc1JlZGlyZWN0KSB7Ci0gICAgICAgICAgICBXZWJJbnNwZWN0b3IucGFuZWxzLm5ldHdvcmsu
cmVmcmVzaFJlc291cmNlKHJlc291cmNlKTsKLSAgICAgICAgICAgIFdlYkluc3BlY3Rvci5wYW5l
bHMuYXVkaXRzLnJlc291cmNlU3RhcnRlZChyZXNvdXJjZSk7Ci0gICAgICAgIH0gZWxzZSAKLSAg
ICAgICAgICAgIFdlYkluc3BlY3Rvci5wYW5lbHMubmV0d29yay5yZWZyZXNoUmVzb3VyY2UocmVz
b3VyY2UpOwotICAgIH0sCi0KLSAgICBfdXBkYXRlUmVzb3VyY2VXaXRoUmVxdWVzdDogZnVuY3Rp
b24ocmVzb3VyY2UsIHJlcXVlc3QpCi0gICAgewotICAgICAgICByZXNvdXJjZS5yZXF1ZXN0TWV0
aG9kID0gcmVxdWVzdC5odHRwTWV0aG9kOwotICAgICAgICByZXNvdXJjZS5yZXF1ZXN0SGVhZGVy
cyA9IHJlcXVlc3QuaHR0cEhlYWRlckZpZWxkczsKLSAgICAgICAgcmVzb3VyY2UucmVxdWVzdEZv
cm1EYXRhID0gcmVxdWVzdC5yZXF1ZXN0Rm9ybURhdGE7Ci0gICAgfSwKLQotICAgIF9hcHBlbmRS
ZWRpcmVjdDogZnVuY3Rpb24oaWRlbnRpZmllciwgcmVkaXJlY3RVUkwpCi0gICAgewotICAgICAg
ICB2YXIgb3JpZ2luYWxSZXNvdXJjZSA9IHRoaXMuX3Jlc291cmNlc0J5SWRbaWRlbnRpZmllcl07
Ci0gICAgICAgIG9yaWdpbmFsUmVzb3VyY2UuaWRlbnRpZmllciA9IG51bGw7Ci0KLSAgICAgICAg
dmFyIG5ld1Jlc291cmNlID0gdGhpcy5fY3JlYXRlUmVzb3VyY2UoaWRlbnRpZmllciwgcmVkaXJl
Y3RVUkwsIG9yaWdpbmFsUmVzb3VyY2UubG9hZGVyLCBvcmlnaW5hbFJlc291cmNlLnN0YWNrVHJh
Y2UpOwotICAgICAgICBuZXdSZXNvdXJjZS5yZWRpcmVjdHMgPSBvcmlnaW5hbFJlc291cmNlLnJl
ZGlyZWN0cyB8fCBbXTsKLSAgICAgICAgZGVsZXRlIG9yaWdpbmFsUmVzb3VyY2UucmVkaXJlY3Rz
OwotICAgICAgICBuZXdSZXNvdXJjZS5yZWRpcmVjdHMucHVzaChvcmlnaW5hbFJlc291cmNlKTsK
LSAgICAgICAgcmV0dXJuIG5ld1Jlc291cmNlOwotICAgIH0sCi0KLSAgICBtYXJrUmVzb3VyY2VB
c0NhY2hlZDogZnVuY3Rpb24oaWRlbnRpZmllcikKLSAgICB7Ci0gICAgICAgIHZhciByZXNvdXJj
ZSA9IHRoaXMuX3Jlc291cmNlc0J5SWRbaWRlbnRpZmllcl07Ci0gICAgICAgIGlmICghcmVzb3Vy
Y2UpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgcmVzb3VyY2UuY2FjaGVkID0gdHJ1
ZTsKLSAgICAgICAgV2ViSW5zcGVjdG9yLnBhbmVscy5uZXR3b3JrLnJlZnJlc2hSZXNvdXJjZShy
ZXNvdXJjZSk7Ci0gICAgfSwKLQotICAgIGRpZFJlY2VpdmVSZXNwb25zZTogZnVuY3Rpb24oaWRl
bnRpZmllciwgdGltZSwgcmVzb3VyY2VUeXBlLCByZXNwb25zZSkKLSAgICB7Ci0gICAgICAgIHZh
ciByZXNvdXJjZSA9IHRoaXMuX3Jlc291cmNlc0J5SWRbaWRlbnRpZmllcl07Ci0gICAgICAgIGlm
ICghcmVzb3VyY2UpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgcmVzb3VyY2UucmVz
cG9uc2VSZWNlaXZlZFRpbWUgPSB0aW1lOwotICAgICAgICByZXNvdXJjZS50eXBlID0gV2ViSW5z
cGVjdG9yLlJlc291cmNlLlR5cGVbcmVzb3VyY2VUeXBlXTsKLQotICAgICAgICB0aGlzLl91cGRh
dGVSZXNvdXJjZVdpdGhSZXNwb25zZShyZXNvdXJjZSwgcmVzcG9uc2UpOwotCi0gICAgICAgIFdl
Ykluc3BlY3Rvci5wYW5lbHMubmV0d29yay5yZWZyZXNoUmVzb3VyY2UocmVzb3VyY2UpOwotICAg
ICAgICB0aGlzLl9yZXNvdXJjZVRyZWVNb2RlbC5hZGRSZXNvdXJjZVRvRnJhbWUocmVzb3VyY2Uu
bG9hZGVyLmZyYW1lSWQsIHJlc291cmNlKTsKLSAgICB9LAotCi0gICAgX3VwZGF0ZVJlc291cmNl
V2l0aFJlc3BvbnNlOiBmdW5jdGlvbihyZXNvdXJjZSwgcmVzcG9uc2UpCi0gICAgewotICAgICAg
ICBpZiAocmVzb3VyY2UuaXNOdWxsKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIHJl
c291cmNlLm1pbWVUeXBlID0gcmVzcG9uc2UubWltZVR5cGU7Ci0gICAgICAgIHJlc291cmNlLmV4
cGVjdGVkQ29udGVudExlbmd0aCA9IHJlc3BvbnNlLmV4cGVjdGVkQ29udGVudExlbmd0aDsKLSAg
ICAgICAgcmVzb3VyY2UudGV4dEVuY29kaW5nTmFtZSA9IHJlc3BvbnNlLnRleHRFbmNvZGluZ05h
bWU7Ci0gICAgICAgIHJlc291cmNlLnN1Z2dlc3RlZEZpbGVuYW1lID0gcmVzcG9uc2Uuc3VnZ2Vz
dGVkRmlsZW5hbWU7Ci0gICAgICAgIHJlc291cmNlLnN0YXR1c0NvZGUgPSByZXNwb25zZS5odHRw
U3RhdHVzQ29kZTsKLSAgICAgICAgcmVzb3VyY2Uuc3RhdHVzVGV4dCA9IHJlc3BvbnNlLmh0dHBT
dGF0dXNUZXh0OwotCi0gICAgICAgIHJlc291cmNlLnJlc3BvbnNlSGVhZGVycyA9IHJlc3BvbnNl
Lmh0dHBIZWFkZXJGaWVsZHM7Ci0gICAgICAgIHJlc291cmNlLmNvbm5lY3Rpb25SZXVzZWQgPSBy
ZXNwb25zZS5jb25uZWN0aW9uUmV1c2VkOwotICAgICAgICByZXNvdXJjZS5jb25uZWN0aW9uSUQg
PSByZXNwb25zZS5jb25uZWN0aW9uSUQ7Ci0KLSAgICAgICAgaWYgKHJlc3BvbnNlLndhc0NhY2hl
ZCkKLSAgICAgICAgICAgIHJlc291cmNlLmNhY2hlZCA9IHRydWU7Ci0gICAgICAgIGVsc2UKLSAg
ICAgICAgICAgIHJlc291cmNlLnRpbWluZyA9IHJlc3BvbnNlLnRpbWluZzsKLQotICAgICAgICBp
ZiAocmVzcG9uc2UubG9hZEluZm8pIHsKLSAgICAgICAgICAgIGlmIChyZXNwb25zZS5sb2FkSW5m
by5odHRwU3RhdHVzQ29kZSkKLSAgICAgICAgICAgICAgICByZXNvdXJjZS5zdGF0dXNDb2RlID0g
cmVzcG9uc2UubG9hZEluZm8uaHR0cFN0YXR1c0NvZGU7Ci0gICAgICAgICAgICBpZiAocmVzcG9u
c2UubG9hZEluZm8uaHR0cFN0YXR1c1RleHQpCi0gICAgICAgICAgICAgICAgcmVzb3VyY2Uuc3Rh
dHVzVGV4dCA9IHJlc3BvbnNlLmxvYWRJbmZvLmh0dHBTdGF0dXNUZXh0OwotICAgICAgICAgICAg
cmVzb3VyY2UucmVxdWVzdEhlYWRlcnMgPSByZXNwb25zZS5sb2FkSW5mby5yZXF1ZXN0SGVhZGVy
czsKLSAgICAgICAgICAgIHJlc291cmNlLnJlc3BvbnNlSGVhZGVycyA9IHJlc3BvbnNlLmxvYWRJ
bmZvLnJlc3BvbnNlSGVhZGVyczsKLSAgICAgICAgfQotICAgIH0sCi0KLSAgICBkaWRSZWNlaXZl
Q29udGVudExlbmd0aDogZnVuY3Rpb24oaWRlbnRpZmllciwgdGltZSwgbGVuZ3RoUmVjZWl2ZWQp
Ci0gICAgewotICAgICAgICB2YXIgcmVzb3VyY2UgPSB0aGlzLl9yZXNvdXJjZXNCeUlkW2lkZW50
aWZpZXJdOwotICAgICAgICBpZiAoIXJlc291cmNlKQotICAgICAgICAgICAgcmV0dXJuOwotCi0g
ICAgICAgIHJlc291cmNlLnJlc291cmNlU2l6ZSArPSBsZW5ndGhSZWNlaXZlZDsKLSAgICAgICAg
cmVzb3VyY2UuZW5kVGltZSA9IHRpbWU7Ci0KLSAgICAgICAgV2ViSW5zcGVjdG9yLnBhbmVscy5u
ZXR3b3JrLnJlZnJlc2hSZXNvdXJjZShyZXNvdXJjZSk7Ci0gICAgfSwKLQotICAgIGRpZEZpbmlz
aExvYWRpbmc6IGZ1bmN0aW9uKGlkZW50aWZpZXIsIGZpbmlzaFRpbWUpCi0gICAgewotICAgICAg
ICB2YXIgcmVzb3VyY2UgPSB0aGlzLl9yZXNvdXJjZXNCeUlkW2lkZW50aWZpZXJdOwotICAgICAg
ICBpZiAoIXJlc291cmNlKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIHJlc291cmNl
LmVuZFRpbWUgPSBmaW5pc2hUaW1lOwotICAgICAgICByZXNvdXJjZS5maW5pc2hlZCA9IHRydWU7
Ci0KLSAgICAgICAgV2ViSW5zcGVjdG9yLnBhbmVscy5uZXR3b3JrLnJlZnJlc2hSZXNvdXJjZShy
ZXNvdXJjZSk7Ci0gICAgICAgIFdlYkluc3BlY3Rvci5wYW5lbHMuYXVkaXRzLnJlc291cmNlRmlu
aXNoZWQocmVzb3VyY2UpOwotICAgICAgICBXZWJJbnNwZWN0b3IuZXh0ZW5zaW9uU2VydmVyLm5v
dGlmeVJlc291cmNlRmluaXNoZWQocmVzb3VyY2UpOwotICAgICAgICBkZWxldGUgdGhpcy5fcmVz
b3VyY2VzQnlJZFtpZGVudGlmaWVyXTsKLSAgICB9LAotCi0gICAgZGlkRmFpbExvYWRpbmc6IGZ1
bmN0aW9uKGlkZW50aWZpZXIsIHRpbWUsIGxvY2FsaXplZERlc2NyaXB0aW9uKQotICAgIHsKLSAg
ICAgICAgdmFyIHJlc291cmNlID0gdGhpcy5fcmVzb3VyY2VzQnlJZFtpZGVudGlmaWVyXTsKLSAg
ICAgICAgaWYgKCFyZXNvdXJjZSkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICByZXNv
dXJjZS5mYWlsZWQgPSB0cnVlOwotICAgICAgICByZXNvdXJjZS5sb2NhbGl6ZWRGYWlsRGVzY3Jp
cHRpb24gPSBsb2NhbGl6ZWREZXNjcmlwdGlvbjsKLSAgICAgICAgcmVzb3VyY2UuZmluaXNoZWQg
PSB0cnVlOwotICAgICAgICByZXNvdXJjZS5lbmRUaW1lID0gdGltZTsKLQotICAgICAgICBXZWJJ
bnNwZWN0b3IucGFuZWxzLm5ldHdvcmsucmVmcmVzaFJlc291cmNlKHJlc291cmNlKTsKLSAgICAg
ICAgV2ViSW5zcGVjdG9yLnBhbmVscy5hdWRpdHMucmVzb3VyY2VGaW5pc2hlZChyZXNvdXJjZSk7
Ci0gICAgICAgIFdlYkluc3BlY3Rvci5leHRlbnNpb25TZXJ2ZXIubm90aWZ5UmVzb3VyY2VGaW5p
c2hlZChyZXNvdXJjZSk7Ci0gICAgICAgIGRlbGV0ZSB0aGlzLl9yZXNvdXJjZXNCeUlkW2lkZW50
aWZpZXJdOwotICAgIH0sCi0KLSAgICBkaWRMb2FkUmVzb3VyY2VGcm9tTWVtb3J5Q2FjaGU6IGZ1
bmN0aW9uKHRpbWUsIGNhY2hlZFJlc291cmNlKQotICAgIHsKLSAgICAgICAgdmFyIHJlc291cmNl
ID0gdGhpcy5fY3JlYXRlUmVzb3VyY2UobnVsbCwgY2FjaGVkUmVzb3VyY2UudXJsLCBjYWNoZWRS
ZXNvdXJjZS5sb2FkZXIpOwotICAgICAgICB0aGlzLl91cGRhdGVSZXNvdXJjZVdpdGhDYWNoZWRS
ZXNvdXJjZShyZXNvdXJjZSwgY2FjaGVkUmVzb3VyY2UpOwotICAgICAgICByZXNvdXJjZS5jYWNo
ZWQgPSB0cnVlOwotICAgICAgICByZXNvdXJjZS5yZXF1ZXN0TWV0aG9kID0gIkdFVCI7Ci0gICAg
ICAgIHJlc291cmNlLnN0YXJ0VGltZSA9IHJlc291cmNlLnJlc3BvbnNlUmVjZWl2ZWRUaW1lID0g
cmVzb3VyY2UuZW5kVGltZSA9IHRpbWU7Ci0gICAgICAgIHJlc291cmNlLmZpbmlzaGVkID0gdHJ1
ZTsKLQotICAgICAgICBXZWJJbnNwZWN0b3IucGFuZWxzLm5ldHdvcmsucmVmcmVzaFJlc291cmNl
KHJlc291cmNlKTsKLSAgICAgICAgV2ViSW5zcGVjdG9yLnBhbmVscy5hdWRpdHMucmVzb3VyY2VT
dGFydGVkKHJlc291cmNlKTsKLSAgICAgICAgV2ViSW5zcGVjdG9yLnBhbmVscy5hdWRpdHMucmVz
b3VyY2VGaW5pc2hlZChyZXNvdXJjZSk7Ci0gICAgICAgIHRoaXMuX3Jlc291cmNlVHJlZU1vZGVs
LmFkZFJlc291cmNlVG9GcmFtZShyZXNvdXJjZS5sb2FkZXIuZnJhbWVJZCwgcmVzb3VyY2UpOwot
ICAgIH0sCi0KLSAgICBfdXBkYXRlUmVzb3VyY2VXaXRoQ2FjaGVkUmVzb3VyY2U6IGZ1bmN0aW9u
KHJlc291cmNlLCBjYWNoZWRSZXNvdXJjZSkKLSAgICB7Ci0gICAgICAgIHJlc291cmNlLnR5cGUg
PSBXZWJJbnNwZWN0b3IuUmVzb3VyY2UuVHlwZVtjYWNoZWRSZXNvdXJjZS50eXBlXTsKLSAgICAg
ICAgcmVzb3VyY2UucmVzb3VyY2VTaXplID0gY2FjaGVkUmVzb3VyY2UuZW5jb2RlZFNpemU7Ci0g
ICAgICAgIHRoaXMuX3VwZGF0ZVJlc291cmNlV2l0aFJlc3BvbnNlKHJlc291cmNlLCBjYWNoZWRS
ZXNvdXJjZS5yZXNwb25zZSk7Ci0gICAgfSwKLQotICAgIHNldEluaXRpYWxDb250ZW50OiBmdW5j
dGlvbihpZGVudGlmaWVyLCBzb3VyY2VTdHJpbmcsIHR5cGUpCi0gICAgewotICAgICAgICB2YXIg
cmVzb3VyY2UgPSBXZWJJbnNwZWN0b3IucGFuZWxzLm5ldHdvcmsucmVzb3VyY2VzW2lkZW50aWZp
ZXJdOwotICAgICAgICBpZiAoIXJlc291cmNlKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAg
ICAgIHJlc291cmNlLnR5cGUgPSBXZWJJbnNwZWN0b3IuUmVzb3VyY2UuVHlwZVt0eXBlXTsKLSAg
ICAgICAgcmVzb3VyY2Uuc2V0SW5pdGlhbENvbnRlbnQoc291cmNlU3RyaW5nKTsKLSAgICAgICAg
V2ViSW5zcGVjdG9yLnBhbmVscy5yZXNvdXJjZXMucmVmcmVzaFJlc291cmNlKHJlc291cmNlKTsK
LSAgICAgICAgV2ViSW5zcGVjdG9yLnBhbmVscy5uZXR3b3JrLnJlZnJlc2hSZXNvdXJjZShyZXNv
dXJjZSk7Ci0gICAgfSwKLQotICAgIGRpZENvbW1pdExvYWRGb3JGcmFtZTogZnVuY3Rpb24oZnJh
bWUsIGxvYWRlcikKLSAgICB7Ci0gICAgICAgIHRoaXMuX3Jlc291cmNlVHJlZU1vZGVsLmRpZENv
bW1pdExvYWRGb3JGcmFtZShmcmFtZSwgbG9hZGVyKTsKLSAgICAgICAgaWYgKCFmcmFtZS5wYXJl
bnRJZCkgewotICAgICAgICAgICAgdmFyIG1haW5SZXNvdXJjZSA9IHRoaXMucmVzb3VyY2VGb3JV
UkwoZnJhbWUudXJsKTsKLSAgICAgICAgICAgIGlmIChtYWluUmVzb3VyY2UpIHsKLSAgICAgICAg
ICAgICAgICBXZWJJbnNwZWN0b3IubWFpblJlc291cmNlID0gbWFpblJlc291cmNlOwotICAgICAg
ICAgICAgICAgIG1haW5SZXNvdXJjZS5pc01haW5SZXNvdXJjZSA9IHRydWU7Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgIH0KLSAgICB9LAotCi0gICAgZnJhbWVEZXRhY2hlZEZyb21QYXJlbnQ6IGZ1
bmN0aW9uKGZyYW1lSWQpCi0gICAgewotICAgICAgICB0aGlzLl9yZXNvdXJjZVRyZWVNb2RlbC5m
cmFtZURldGFjaGVkRnJvbVBhcmVudChmcmFtZUlkKTsKLSAgICB9LAotCi0gICAgZGlkQ3JlYXRl
V2ViU29ja2V0OiBmdW5jdGlvbihpZGVudGlmaWVyLCByZXF1ZXN0VVJMKQotICAgIHsKLSAgICAg
ICAgdmFyIHJlc291cmNlID0gdGhpcy5fY3JlYXRlUmVzb3VyY2UoaWRlbnRpZmllciwgcmVxdWVz
dFVSTCk7Ci0gICAgICAgIHJlc291cmNlLnR5cGUgPSBXZWJJbnNwZWN0b3IuUmVzb3VyY2UuVHlw
ZS5XZWJTb2NrZXQ7Ci0gICAgICAgIFdlYkluc3BlY3Rvci5wYW5lbHMubmV0d29yay5yZWZyZXNo
UmVzb3VyY2UocmVzb3VyY2UpOwotICAgIH0sCi0KLSAgICB3aWxsU2VuZFdlYlNvY2tldEhhbmRz
aGFrZVJlcXVlc3Q6IGZ1bmN0aW9uKGlkZW50aWZpZXIsIHRpbWUsIHJlcXVlc3QpCi0gICAgewot
ICAgICAgICB2YXIgcmVzb3VyY2UgPSB0aGlzLl9yZXNvdXJjZXNCeUlkW2lkZW50aWZpZXJdOwot
ICAgICAgICBpZiAoIXJlc291cmNlKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIHJl
c291cmNlLnJlcXVlc3RNZXRob2QgPSAiR0VUIjsKLSAgICAgICAgcmVzb3VyY2UucmVxdWVzdEhl
YWRlcnMgPSByZXF1ZXN0LndlYlNvY2tldEhlYWRlckZpZWxkczsKLSAgICAgICAgcmVzb3VyY2Uu
d2ViU29ja2V0UmVxdWVzdEtleTMgPSByZXF1ZXN0LndlYlNvY2tldFJlcXVlc3RLZXkzOwotICAg
ICAgICByZXNvdXJjZS5zdGFydFRpbWUgPSB0aW1lOwotCi0gICAgICAgIFdlYkluc3BlY3Rvci5w
YW5lbHMubmV0d29yay5yZWZyZXNoUmVzb3VyY2UocmVzb3VyY2UpOwotICAgIH0sCi0KLSAgICBk
aWRSZWNlaXZlV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2U6IGZ1bmN0aW9uKGlkZW50aWZpZXIs
IHRpbWUsIHJlc3BvbnNlKQotICAgIHsKLSAgICAgICAgdmFyIHJlc291cmNlID0gdGhpcy5fcmVz
b3VyY2VzQnlJZFtpZGVudGlmaWVyXTsKLSAgICAgICAgaWYgKCFyZXNvdXJjZSkKLSAgICAgICAg
ICAgIHJldHVybjsKLQotICAgICAgICByZXNvdXJjZS5zdGF0dXNDb2RlID0gcmVzcG9uc2Uuc3Rh
dHVzQ29kZTsKLSAgICAgICAgcmVzb3VyY2Uuc3RhdHVzVGV4dCA9IHJlc3BvbnNlLnN0YXR1c1Rl
eHQ7Ci0gICAgICAgIHJlc291cmNlLnJlc3BvbnNlSGVhZGVycyA9IHJlc3BvbnNlLndlYlNvY2tl
dEhlYWRlckZpZWxkczsKLSAgICAgICAgcmVzb3VyY2Uud2ViU29ja2V0Q2hhbGxlbmdlUmVzcG9u
c2UgPSByZXNwb25zZS53ZWJTb2NrZXRDaGFsbGVuZ2VSZXNwb25zZTsKLSAgICAgICAgcmVzb3Vy
Y2UucmVzcG9uc2VSZWNlaXZlZFRpbWUgPSB0aW1lOwotCi0gICAgICAgIFdlYkluc3BlY3Rvci5w
YW5lbHMubmV0d29yay5yZWZyZXNoUmVzb3VyY2UocmVzb3VyY2UpOwotICAgIH0sCi0KLSAgICBk
aWRDbG9zZVdlYlNvY2tldDogZnVuY3Rpb24oaWRlbnRpZmllciwgdGltZSkKLSAgICB7Ci0gICAg
ICAgIHZhciByZXNvdXJjZSA9IHRoaXMuX3Jlc291cmNlc0J5SWRbaWRlbnRpZmllcl07Ci0gICAg
ICAgIGlmICghcmVzb3VyY2UpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIHJlc291cmNl
LmVuZFRpbWUgPSB0aW1lOwotCi0gICAgICAgIFdlYkluc3BlY3Rvci5wYW5lbHMubmV0d29yay5y
ZWZyZXNoUmVzb3VyY2UocmVzb3VyY2UpOwotICAgIH0sCi0KLSAgICBfcHJvY2Vzc0NhY2hlZFJl
c291cmNlczogZnVuY3Rpb24obWFpbkZyYW1lUGF5bG9hZCkKLSAgICB7Ci0gICAgICAgIHZhciBt
YWluUmVzb3VyY2UgPSB0aGlzLl9hZGRGcmFtZXNSZWN1cnNpdmVseShtYWluRnJhbWVQYXlsb2Fk
KTsKLSAgICAgICAgV2ViSW5zcGVjdG9yLm1haW5SZXNvdXJjZSA9IG1haW5SZXNvdXJjZTsKLSAg
ICAgICAgbWFpblJlc291cmNlLmlzTWFpblJlc291cmNlID0gdHJ1ZTsKLSAgICB9LAotCi0gICAg
X2FkZEZyYW1lc1JlY3Vyc2l2ZWx5OiBmdW5jdGlvbihmcmFtZVBheWxvYWQpCi0gICAgewotICAg
ICAgICB2YXIgZnJhbWVSZXNvdXJjZSA9IHRoaXMuX2NyZWF0ZVJlc291cmNlKG51bGwsIGZyYW1l
UGF5bG9hZC5yZXNvdXJjZS51cmwsIGZyYW1lUGF5bG9hZC5yZXNvdXJjZS5sb2FkZXIpOwotICAg
ICAgICB0aGlzLl91cGRhdGVSZXNvdXJjZVdpdGhSZXF1ZXN0KGZyYW1lUmVzb3VyY2UsIGZyYW1l
UGF5bG9hZC5yZXNvdXJjZS5yZXF1ZXN0KTsKLSAgICAgICAgdGhpcy5fdXBkYXRlUmVzb3VyY2VX
aXRoUmVzcG9uc2UoZnJhbWVSZXNvdXJjZSwgZnJhbWVQYXlsb2FkLnJlc291cmNlLnJlc3BvbnNl
KTsKLSAgICAgICAgZnJhbWVSZXNvdXJjZS50eXBlID0gV2ViSW5zcGVjdG9yLlJlc291cmNlLlR5
cGVbIkRvY3VtZW50Il07Ci0gICAgICAgIGZyYW1lUmVzb3VyY2UuZmluaXNoZWQgPSB0cnVlOwot
ICAgICAgICB0aGlzLl9iaW5kUmVzb3VyY2VVUkwoZnJhbWVSZXNvdXJjZSk7Ci0KLSAgICAgICAg
dGhpcy5fcmVzb3VyY2VUcmVlTW9kZWwuYWRkT3JVcGRhdGVGcmFtZShmcmFtZVBheWxvYWQpOwot
ICAgICAgICB0aGlzLl9yZXNvdXJjZVRyZWVNb2RlbC5hZGRSZXNvdXJjZVRvRnJhbWUoZnJhbWVQ
YXlsb2FkLmlkLCBmcmFtZVJlc291cmNlKTsKLQotICAgICAgICBmb3IgKHZhciBpID0gMDsgZnJh
bWVQYXlsb2FkLmNoaWxkcmVuICYmIGkgPCBmcmFtZVBheWxvYWQuY2hpbGRyZW4ubGVuZ3RoOyAr
K2kpCi0gICAgICAgICAgICB0aGlzLl9hZGRGcmFtZXNSZWN1cnNpdmVseShmcmFtZVBheWxvYWQu
Y2hpbGRyZW5baV0pOwotCi0gICAgICAgIGlmICghZnJhbWVQYXlsb2FkLnN1YnJlc291cmNlcykK
LSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGZyYW1l
UGF5bG9hZC5zdWJyZXNvdXJjZXMubGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAgIHZhciBjYWNo
ZWRSZXNvdXJjZSA9IGZyYW1lUGF5bG9hZC5zdWJyZXNvdXJjZXNbaV07Ci0gICAgICAgICAgICB2
YXIgcmVzb3VyY2UgPSB0aGlzLl9jcmVhdGVSZXNvdXJjZShudWxsLCBjYWNoZWRSZXNvdXJjZS51
cmwsIGNhY2hlZFJlc291cmNlLmxvYWRlcik7Ci0gICAgICAgICAgICB0aGlzLl91cGRhdGVSZXNv
dXJjZVdpdGhDYWNoZWRSZXNvdXJjZShyZXNvdXJjZSwgY2FjaGVkUmVzb3VyY2UpOwotICAgICAg
ICAgICAgcmVzb3VyY2UuZmluaXNoZWQgPSB0cnVlOwotICAgICAgICAgICAgdGhpcy5fYmluZFJl
c291cmNlVVJMKHJlc291cmNlKTsKLSAgICAgICAgICAgIHRoaXMuX3Jlc291cmNlVHJlZU1vZGVs
LmFkZFJlc291cmNlVG9GcmFtZShmcmFtZVBheWxvYWQuaWQsIHJlc291cmNlKTsKLSAgICAgICAg
fQotICAgICAgICByZXR1cm4gZnJhbWVSZXNvdXJjZTsKLSAgICB9LAotCi0gICAgcmVzb3VyY2VG
b3JVUkw6IGZ1bmN0aW9uKHVybCkKLSAgICB7Ci0gICAgICAgIC8vIEZJWE1FOiByZWNlaXZlIGZy
YW1lSWQgaGVyZS4KLSAgICAgICAgdmFyIGVudHJ5ID0gdGhpcy5fcmVzb3VyY2VzQnlVUkxbdXJs
XTsKLSAgICAgICAgaWYgKGVudHJ5IGluc3RhbmNlb2YgQXJyYXkpCi0gICAgICAgICAgICByZXR1
cm4gZW50cnlbMF07Ci0gICAgICAgIHJldHVybiBlbnRyeTsKLSAgICB9LAotCi0gICAgYWRkQ29u
c29sZU1lc3NhZ2U6IGZ1bmN0aW9uKG1zZykKLSAgICB7Ci0gICAgICAgIHZhciByZXNvdXJjZSA9
IHRoaXMucmVzb3VyY2VGb3JVUkwobXNnLnVybCk7Ci0gICAgICAgIGlmICghcmVzb3VyY2UpCi0g
ICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgc3dpdGNoIChtc2cubGV2ZWwpIHsKLSAgICAg
ICAgY2FzZSBXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2UuTWVzc2FnZUxldmVsLldhcm5pbmc6
Ci0gICAgICAgICAgICByZXNvdXJjZS53YXJuaW5ncyArPSBtc2cucmVwZWF0RGVsdGE7Ci0gICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2Uu
TWVzc2FnZUxldmVsLkVycm9yOgotICAgICAgICAgICAgcmVzb3VyY2UuZXJyb3JzICs9IG1zZy5y
ZXBlYXREZWx0YTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0KLSAgICAgICAgdmFy
IHZpZXcgPSBXZWJJbnNwZWN0b3IuUmVzb3VyY2VNYW5hZ2VyLnJlc291cmNlVmlld0ZvclJlc291
cmNlKHJlc291cmNlKTsKLSAgICAgICAgaWYgKHZpZXcuYWRkTWVzc2FnZSkKLSAgICAgICAgICAg
IHZpZXcuYWRkTWVzc2FnZShtc2cpOwotICAgIH0sCi0KLSAgICBjbGVhckNvbnNvbGVNZXNzYWdl
czogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgZnVuY3Rpb24gY2FsbGJhY2socmVzb3VyY2Up
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJlc291cmNlLmNsZWFyRXJyb3JzQW5kV2FybmluZ3Mo
KTsKLSAgICAgICAgfQotICAgICAgICB0aGlzLl9yZXNvdXJjZVRyZWVNb2RlbC5mb3JBbGxSZXNv
dXJjZXMoY2FsbGJhY2spOwotICAgIH0sCi0KLSAgICBmb3JBbGxSZXNvdXJjZXM6IGZ1bmN0aW9u
KGNhbGxiYWNrKQotICAgIHsKLSAgICAgICAgdGhpcy5fcmVzb3VyY2VUcmVlTW9kZWwuZm9yQWxs
UmVzb3VyY2VzKGNhbGxiYWNrKTsKLSAgICB9LAotCi0gICAgX2JpbmRSZXNvdXJjZVVSTDogZnVu
Y3Rpb24ocmVzb3VyY2UpCi0gICAgewotICAgICAgICB2YXIgcmVzb3VyY2VGb3JVUkwgPSB0aGlz
Ll9yZXNvdXJjZXNCeVVSTFtyZXNvdXJjZS51cmxdOwotICAgICAgICBpZiAoIXJlc291cmNlRm9y
VVJMKQotICAgICAgICAgICAgdGhpcy5fcmVzb3VyY2VzQnlVUkxbcmVzb3VyY2UudXJsXSA9IHJl
c291cmNlOwotICAgICAgICBlbHNlIGlmIChyZXNvdXJjZUZvclVSTCBpbnN0YW5jZW9mIEFycmF5
KQotICAgICAgICAgICAgcmVzb3VyY2VGb3JVUkwucHVzaChyZXNvdXJjZSk7Ci0gICAgICAgIGVs
c2UKLSAgICAgICAgICAgIHRoaXMuX3Jlc291cmNlc0J5VVJMW3Jlc291cmNlLnVybF0gPSBbcmVz
b3VyY2VGb3JVUkwsIHJlc291cmNlXTsKLSAgICB9LAotCi0gICAgX3VuYmluZFJlc291cmNlVVJM
OiBmdW5jdGlvbihyZXNvdXJjZSkKLSAgICB7Ci0gICAgICAgIHZhciByZXNvdXJjZUZvclVSTCA9
IHRoaXMuX3Jlc291cmNlc0J5VVJMW3Jlc291cmNlLnVybF07Ci0gICAgICAgIGlmICghcmVzb3Vy
Y2VGb3JVUkwpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgaWYgKHJlc291cmNlRm9y
VVJMIGluc3RhbmNlb2YgQXJyYXkpIHsKLSAgICAgICAgICAgIHJlc291cmNlRm9yVVJMLnJlbW92
ZShyZXNvdXJjZSwgdHJ1ZSk7Ci0gICAgICAgICAgICBpZiAocmVzb3VyY2VGb3JVUkwubGVuZ3Ro
ID09PSAxKQotICAgICAgICAgICAgICAgIHRoaXMuX3Jlc291cmNlc0J5VVJMW3Jlc291cmNlLnVy
bF0gPSByZXNvdXJjZUZvclVSTFswXTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQot
Ci0gICAgICAgIGRlbGV0ZSB0aGlzLl9yZXNvdXJjZXNCeVVSTFtyZXNvdXJjZS51cmxdOwotICAg
IH0sCi0KLSAgICB1cGRhdGVET01TdG9yYWdlOiBmdW5jdGlvbihzdG9yYWdlSWQpCi0gICAgewot
ICAgICAgICBXZWJJbnNwZWN0b3IucGFuZWxzLnJlc291cmNlcy51cGRhdGVET01TdG9yYWdlKHN0
b3JhZ2VJZCk7Ci0gICAgfSwKLQotICAgIHVwZGF0ZUFwcGxpY2F0aW9uQ2FjaGVTdGF0dXM6IGZ1
bmN0aW9uKHN0YXR1cykKLSAgICB7Ci0gICAgICAgIFdlYkluc3BlY3Rvci5wYW5lbHMucmVzb3Vy
Y2VzLnVwZGF0ZUFwcGxpY2F0aW9uQ2FjaGVTdGF0dXMoc3RhdHVzKTsKLSAgICB9LAotCi0gICAg
ZGlkR2V0RmlsZVN5c3RlbVBhdGg6IGZ1bmN0aW9uKHJvb3QsIHR5cGUsIG9yaWdpbikKLSAgICB7
Ci0gICAgICAgIFdlYkluc3BlY3Rvci5wYW5lbHMucmVzb3VyY2VzLnVwZGF0ZUZpbGVTeXN0ZW1Q
YXRoKHJvb3QsIHR5cGUsIG9yaWdpbik7Ci0gICAgfSwKLQotICAgIGRpZEdldEZpbGVTeXN0ZW1F
cnJvcjogZnVuY3Rpb24odHlwZSwgb3JpZ2luKQotICAgIHsKLSAgICAgICAgV2ViSW5zcGVjdG9y
LnBhbmVscy5yZXNvdXJjZXMudXBkYXRlRmlsZVN5c3RlbUVycm9yKHR5cGUsIG9yaWdpbik7Ci0g
ICAgfSwKLQotICAgIGRpZEdldEZpbGVTeXN0ZW1EaXNhYmxlZDogZnVuY3Rpb24oKQotICAgIHsK
LSAgICAgICAgV2ViSW5zcGVjdG9yLnBhbmVscy5yZXNvdXJjZXMuc2V0RmlsZVN5c3RlbURpc2Fi
bGVkKCk7Ci0gICAgfSwKLQotICAgIHVwZGF0ZU5ldHdvcmtTdGF0ZTogZnVuY3Rpb24oaXNOb3dP
bmxpbmUpCi0gICAgewotICAgICAgICBXZWJJbnNwZWN0b3IucGFuZWxzLnJlc291cmNlcy51cGRh
dGVOZXR3b3JrU3RhdGUoaXNOb3dPbmxpbmUpOwotICAgIH0sCi0KLSAgICBhZGRET01TdG9yYWdl
OiBmdW5jdGlvbihwYXlsb2FkKQotICAgIHsKLSAgICAgICAgaWYgKCFXZWJJbnNwZWN0b3IucGFu
ZWxzLnJlc291cmNlcykKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgdmFyIGRvbVN0b3Jh
Z2UgPSBuZXcgV2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2UoCi0gICAgICAgICAgICBwYXlsb2FkLmlk
LAotICAgICAgICAgICAgcGF5bG9hZC5ob3N0LAotICAgICAgICAgICAgcGF5bG9hZC5pc0xvY2Fs
U3RvcmFnZSk7Ci0gICAgICAgIFdlYkluc3BlY3Rvci5wYW5lbHMucmVzb3VyY2VzLmFkZERPTVN0
b3JhZ2UoZG9tU3RvcmFnZSk7Ci0gICAgfSwKLQotICAgIHNlbGVjdERPTVN0b3JhZ2U6IGZ1bmN0
aW9uKG8pCi0gICAgewotICAgICAgICBXZWJJbnNwZWN0b3Iuc2hvd1BhbmVsKCJyZXNvdXJjZXMi
KTsKLSAgICAgICAgV2ViSW5zcGVjdG9yLnBhbmVscy5yZXNvdXJjZXMuc2VsZWN0RE9NU3RvcmFn
ZShvKTsKLSAgICB9LAotCi0gICAgYWRkRGF0YWJhc2U6IGZ1bmN0aW9uKHBheWxvYWQpCi0gICAg
ewotICAgICAgICBpZiAoIVdlYkluc3BlY3Rvci5wYW5lbHMucmVzb3VyY2VzKQotICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICB2YXIgZGF0YWJhc2UgPSBuZXcgV2ViSW5zcGVjdG9yLkRhdGFi
YXNlKAotICAgICAgICAgICAgcGF5bG9hZC5pZCwKLSAgICAgICAgICAgIHBheWxvYWQuZG9tYWlu
LAotICAgICAgICAgICAgcGF5bG9hZC5uYW1lLAotICAgICAgICAgICAgcGF5bG9hZC52ZXJzaW9u
KTsKLSAgICAgICAgV2ViSW5zcGVjdG9yLnBhbmVscy5yZXNvdXJjZXMuYWRkRGF0YWJhc2UoZGF0
YWJhc2UpOwotICAgIH0sCi0KLSAgICBzZWxlY3REYXRhYmFzZTogZnVuY3Rpb24obykKLSAgICB7
Ci0gICAgICAgIFdlYkluc3BlY3Rvci5zaG93UGFuZWwoInJlc291cmNlcyIpOwotICAgICAgICBX
ZWJJbnNwZWN0b3IucGFuZWxzLnJlc291cmNlcy5zZWxlY3REYXRhYmFzZShvKTsKLSAgICB9LAot
Ci0gICAgc3FsVHJhbnNhY3Rpb25TdWNjZWVkZWQ6IGZ1bmN0aW9uKHRyYW5zYWN0aW9uSWQsIGNv
bHVtbk5hbWVzLCB2YWx1ZXMpCi0gICAgewotICAgICAgICB2YXIgY2FsbGJhY2sgPSBXZWJJbnNw
ZWN0b3IuRGF0YWJhc2Uuc3VjY2Vzc0NhbGxiYWNrc1t0cmFuc2FjdGlvbklkXTsKLSAgICAgICAg
aWYgKCFjYWxsYmFjaykKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgZGVsZXRlIFdlYklu
c3BlY3Rvci5EYXRhYmFzZS5zdWNjZXNzQ2FsbGJhY2tzW3RyYW5zYWN0aW9uSWRdOwotICAgICAg
ICBjYWxsYmFjayhjb2x1bW5OYW1lcywgdmFsdWVzKTsKLSAgICB9LAotCi0gICAgc3FsVHJhbnNh
Y3Rpb25GYWlsZWQ6IGZ1bmN0aW9uKHRyYW5zYWN0aW9uSWQsIGVycm9yT2JqKQotICAgIHsKLSAg
ICAgICAgdmFyIGNhbGxiYWNrID0gV2ViSW5zcGVjdG9yLkRhdGFiYXNlLmVycm9yQ2FsbGJhY2tz
W3RyYW5zYWN0aW9uSWRdOwotICAgICAgICBpZiAoIWNhbGxiYWNrKQotICAgICAgICAgICAgcmV0
dXJuOwotICAgICAgICBkZWxldGUgV2ViSW5zcGVjdG9yLkRhdGFiYXNlLmVycm9yQ2FsbGJhY2tz
W3RyYW5zYWN0aW9uSWRdOwotICAgICAgICBjYWxsYmFjayhlcnJvck9iaik7Ci0gICAgfQotfQot
Ci1XZWJJbnNwZWN0b3IuUmVzb3VyY2VNYW5hZ2VyLmNyZWF0ZVJlc291cmNlVmlldyA9IGZ1bmN0
aW9uKHJlc291cmNlKQotewotICAgIHN3aXRjaCAocmVzb3VyY2UuY2F0ZWdvcnkpIHsKLSAgICBj
YXNlIFdlYkluc3BlY3Rvci5yZXNvdXJjZUNhdGVnb3JpZXMuZG9jdW1lbnRzOgotICAgIGNhc2Ug
V2ViSW5zcGVjdG9yLnJlc291cmNlQ2F0ZWdvcmllcy5zdHlsZXNoZWV0czoKLSAgICBjYXNlIFdl
Ykluc3BlY3Rvci5yZXNvdXJjZUNhdGVnb3JpZXMuc2NyaXB0czoKLSAgICBjYXNlIFdlYkluc3Bl
Y3Rvci5yZXNvdXJjZUNhdGVnb3JpZXMueGhyOgotICAgICAgICByZXR1cm4gbmV3IFdlYkluc3Bl
Y3Rvci5Tb3VyY2VWaWV3KHJlc291cmNlKTsKLSAgICBjYXNlIFdlYkluc3BlY3Rvci5yZXNvdXJj
ZUNhdGVnb3JpZXMuaW1hZ2VzOgotICAgICAgICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5JbWFn
ZVZpZXcocmVzb3VyY2UpOwotICAgIGNhc2UgV2ViSW5zcGVjdG9yLnJlc291cmNlQ2F0ZWdvcmll
cy5mb250czoKLSAgICAgICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuRm9udFZpZXcocmVzb3Vy
Y2UpOwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLlJlc291
cmNlVmlldyhyZXNvdXJjZSk7Ci0gICAgfQotfQotCi1XZWJJbnNwZWN0b3IuUmVzb3VyY2VNYW5h
Z2VyLnJlc291cmNlVmlld1R5cGVNYXRjaGVzUmVzb3VyY2UgPSBmdW5jdGlvbihyZXNvdXJjZSkK
LXsKLSAgICB2YXIgcmVzb3VyY2VWaWV3ID0gcmVzb3VyY2UuX3Jlc291cmNlc1ZpZXc7Ci0gICAg
c3dpdGNoIChyZXNvdXJjZS5jYXRlZ29yeSkgewotICAgIGNhc2UgV2ViSW5zcGVjdG9yLnJlc291
cmNlQ2F0ZWdvcmllcy5kb2N1bWVudHM6Ci0gICAgY2FzZSBXZWJJbnNwZWN0b3IucmVzb3VyY2VD
YXRlZ29yaWVzLnN0eWxlc2hlZXRzOgotICAgIGNhc2UgV2ViSW5zcGVjdG9yLnJlc291cmNlQ2F0
ZWdvcmllcy5zY3JpcHRzOgotICAgIGNhc2UgV2ViSW5zcGVjdG9yLnJlc291cmNlQ2F0ZWdvcmll
cy54aHI6Ci0gICAgICAgIHJldHVybiByZXNvdXJjZVZpZXcuX19wcm90b19fID09PSBXZWJJbnNw
ZWN0b3IuU291cmNlVmlldy5wcm90b3R5cGU7Ci0gICAgY2FzZSBXZWJJbnNwZWN0b3IucmVzb3Vy
Y2VDYXRlZ29yaWVzLmltYWdlczoKLSAgICAgICAgcmV0dXJuIHJlc291cmNlVmlldy5fX3Byb3Rv
X18gPT09IFdlYkluc3BlY3Rvci5JbWFnZVZpZXcucHJvdG90eXBlOwotICAgIGNhc2UgV2ViSW5z
cGVjdG9yLnJlc291cmNlQ2F0ZWdvcmllcy5mb250czoKLSAgICAgICAgcmV0dXJuIHJlc291cmNl
Vmlldy5fX3Byb3RvX18gPT09IFdlYkluc3BlY3Rvci5Gb250Vmlldy5wcm90b3R5cGU7Ci0gICAg
ZGVmYXVsdDoKLSAgICAgICAgcmV0dXJuIHJlc291cmNlVmlldy5fX3Byb3RvX18gPT09IFdlYklu
c3BlY3Rvci5SZXNvdXJjZVZpZXcucHJvdG90eXBlOwotICAgIH0KLX0KLQotV2ViSW5zcGVjdG9y
LlJlc291cmNlTWFuYWdlci5yZXNvdXJjZVZpZXdGb3JSZXNvdXJjZSA9IGZ1bmN0aW9uKHJlc291
cmNlKQotewotICAgIGlmICghcmVzb3VyY2UpCi0gICAgICAgIHJldHVybiBudWxsOwotICAgIGlm
ICghcmVzb3VyY2UuX3Jlc291cmNlc1ZpZXcpCi0gICAgICAgIHJlc291cmNlLl9yZXNvdXJjZXNW
aWV3ID0gV2ViSW5zcGVjdG9yLlJlc291cmNlTWFuYWdlci5jcmVhdGVSZXNvdXJjZVZpZXcocmVz
b3VyY2UpOwotICAgIHJldHVybiByZXNvdXJjZS5fcmVzb3VyY2VzVmlldzsKLX0KLQotV2ViSW5z
cGVjdG9yLlJlc291cmNlTWFuYWdlci5yZWNyZWF0ZVJlc291cmNlVmlldyA9IGZ1bmN0aW9uKHJl
c291cmNlKQotewotICAgIHZhciBuZXdWaWV3ID0gV2ViSW5zcGVjdG9yLlJlc291cmNlTWFuYWdl
ci5jcmVhdGVSZXNvdXJjZVZpZXcocmVzb3VyY2UpOwotCi0gICAgdmFyIG9sZFZpZXcgPSByZXNv
dXJjZS5fcmVzb3VyY2VzVmlldzsKLSAgICB2YXIgb2xkVmlld1BhcmVudE5vZGUgPSBvbGRWaWV3
LnZpc2libGUgPyBvbGRWaWV3LmVsZW1lbnQucGFyZW50Tm9kZSA6IG51bGw7Ci0gICAgdmFyIHNj
cm9sbFRvcCA9IG9sZFZpZXcuc2Nyb2xsVG9wOwotCi0gICAgcmVzb3VyY2UuX3Jlc291cmNlc1Zp
ZXcuZGV0YWNoKCk7Ci0gICAgZGVsZXRlIHJlc291cmNlLl9yZXNvdXJjZXNWaWV3OwotCi0gICAg
cmVzb3VyY2UuX3Jlc291cmNlc1ZpZXcgPSBuZXdWaWV3OwotCi0gICAgaWYgKG9sZFZpZXdQYXJl
bnROb2RlKQotICAgICAgICBuZXdWaWV3LnNob3cob2xkVmlld1BhcmVudE5vZGUpOwotICAgIGlm
IChzY3JvbGxUb3ApCi0gICAgICAgIG5ld1ZpZXcuc2Nyb2xsVG9wID0gc2Nyb2xsVG9wOwotCi0g
ICAgV2ViSW5zcGVjdG9yLnBhbmVscy5zY3JpcHRzLnZpZXdSZWNyZWF0ZWQob2xkVmlldywgbmV3
Vmlldyk7Ci0gICAgcmV0dXJuIG5ld1ZpZXc7Ci19Ci0KLVdlYkluc3BlY3Rvci5SZXNvdXJjZU1h
bmFnZXIuZXhpc3RpbmdSZXNvdXJjZVZpZXdGb3JSZXNvdXJjZSA9IGZ1bmN0aW9uKHJlc291cmNl
KQotewotICAgIGlmICghcmVzb3VyY2UpCi0gICAgICAgIHJldHVybiBudWxsOwotICAgIHJldHVy
biByZXNvdXJjZS5fcmVzb3VyY2VzVmlldzsKLX0KLQotV2ViSW5zcGVjdG9yLlJlc291cmNlTWFu
YWdlci5yZXF1ZXN0Q29udGVudCA9IGZ1bmN0aW9uKHJlc291cmNlLCBiYXNlNjRFbmNvZGUsIGNh
bGxiYWNrKQotewotICAgIEluc3BlY3RvckJhY2tlbmQucmVzb3VyY2VDb250ZW50KHJlc291cmNl
LmxvYWRlci5mcmFtZUlkLCByZXNvdXJjZS51cmwsIGJhc2U2NEVuY29kZSwgY2FsbGJhY2spOwot
fQotCi1XZWJJbnNwZWN0b3IuUmVzb3VyY2VUcmVlTW9kZWwgPSBmdW5jdGlvbigpCi17Ci0gICAg
dGhpcy5fcmVzb3VyY2VzQnlGcmFtZUlkID0ge307Ci0gICAgdGhpcy5fc3ViZnJhbWVzID0ge307
Ci19Ci0KLVdlYkluc3BlY3Rvci5SZXNvdXJjZVRyZWVNb2RlbC5wcm90b3R5cGUgPSB7Ci0gICAg
YWRkT3JVcGRhdGVGcmFtZTogZnVuY3Rpb24oZnJhbWUpCi0gICAgewotICAgICAgICB2YXIgdG1w
UmVzb3VyY2UgPSBuZXcgV2ViSW5zcGVjdG9yLlJlc291cmNlKG51bGwsIGZyYW1lLnVybCk7Ci0g
ICAgICAgIFdlYkluc3BlY3Rvci5wYW5lbHMucmVzb3VyY2VzLmFkZE9yVXBkYXRlRnJhbWUoZnJh
bWUucGFyZW50SWQsIGZyYW1lLmlkLCBmcmFtZS5uYW1lLCB0bXBSZXNvdXJjZS5kaXNwbGF5TmFt
ZSk7Ci0gICAgICAgIHZhciBzdWJmcmFtZXMgPSB0aGlzLl9zdWJmcmFtZXNbZnJhbWUucGFyZW50
SWRdOwotICAgICAgICBpZiAoIXN1YmZyYW1lcykgewotICAgICAgICAgICAgc3ViZnJhbWVzID0g
e307Ci0gICAgICAgICAgICB0aGlzLl9zdWJmcmFtZXNbZnJhbWUucGFyZW50SWQgfHwgMF0gPSBz
dWJmcmFtZXM7Ci0gICAgICAgIH0KLSAgICAgICAgc3ViZnJhbWVzW2ZyYW1lLmlkXSA9IHRydWU7
Ci0gICAgfSwKLQotICAgIGRpZENvbW1pdExvYWRGb3JGcmFtZTogZnVuY3Rpb24oZnJhbWUsIGxv
YWRlcikKLSAgICB7Ci0gICAgICAgIC8vIGZyYW1lLnBhcmVudElkID09PSAwIGlzIHdoZW4gbWFp
biBmcmFtZSBuYXZpZ2F0aW9uIGhhcHBlbnMuCi0gICAgICAgIHRoaXMuX2NsZWFyQ2hpbGRGcmFt
ZXNBbmRSZXNvdXJjZXMoZnJhbWUucGFyZW50SWQgPyBmcmFtZS5pZCA6IDAsIGxvYWRlci5sb2Fk
ZXJJZCk7Ci0KLSAgICAgICAgdGhpcy5hZGRPclVwZGF0ZUZyYW1lKGZyYW1lKTsKLQotICAgICAg
ICB2YXIgcmVzb3VyY2VzRm9yRnJhbWUgPSB0aGlzLl9yZXNvdXJjZXNCeUZyYW1lSWRbZnJhbWUu
aWRdOwotICAgICAgICBmb3IgKHZhciBpID0gMDsgcmVzb3VyY2VzRm9yRnJhbWUgJiYgaSA8IHJl
c291cmNlc0ZvckZyYW1lLmxlbmd0aDsgKytpKQotICAgICAgICAgICAgV2ViSW5zcGVjdG9yLnBh
bmVscy5yZXNvdXJjZXMuYWRkUmVzb3VyY2VUb0ZyYW1lKGZyYW1lLmlkLCByZXNvdXJjZXNGb3JG
cmFtZVtpXSk7Ci0gICAgfSwKLQotICAgIGZyYW1lRGV0YWNoZWRGcm9tUGFyZW50OiBmdW5jdGlv
bihmcmFtZUlkKQotICAgIHsKLSAgICAgICAgdGhpcy5fY2xlYXJDaGlsZEZyYW1lc0FuZFJlc291
cmNlcyhmcmFtZUlkLCAwKTsKLSAgICAgICAgV2ViSW5zcGVjdG9yLnBhbmVscy5yZXNvdXJjZXMu
cmVtb3ZlRnJhbWUoZnJhbWVJZCk7Ci0gICAgfSwKLQotICAgIF9jbGVhckNoaWxkRnJhbWVzQW5k
UmVzb3VyY2VzOiBmdW5jdGlvbihmcmFtZUlkLCBsb2FkZXJJZCkKLSAgICB7Ci0gICAgICAgIFdl
Ykluc3BlY3Rvci5wYW5lbHMucmVzb3VyY2VzLnJlbW92ZVJlc291cmNlc0Zyb21GcmFtZShmcmFt
ZUlkKTsKLQotICAgICAgICB0aGlzLl9jbGVhclJlc291cmNlcyhmcmFtZUlkLCBsb2FkZXJJZCk7
Ci0gICAgICAgIHZhciBzdWJmcmFtZXMgPSB0aGlzLl9zdWJmcmFtZXNbZnJhbWVJZF07Ci0gICAg
ICAgIGlmICghc3ViZnJhbWVzKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIGZvciAo
dmFyIGNoaWxkRnJhbWVJZCBpbiBzdWJmcmFtZXMpIHsKLSAgICAgICAgICAgIFdlYkluc3BlY3Rv
ci5wYW5lbHMucmVzb3VyY2VzLnJlbW92ZUZyYW1lKGNoaWxkRnJhbWVJZCk7Ci0gICAgICAgICAg
ICB0aGlzLl9jbGVhckNoaWxkRnJhbWVzQW5kUmVzb3VyY2VzKGNoaWxkRnJhbWVJZCwgbG9hZGVy
SWQpOwotICAgICAgICB9Ci0gICAgICAgIGRlbGV0ZSB0aGlzLl9zdWJmcmFtZXNbZnJhbWVJZF07
Ci0gICAgfSwKLQotICAgIGFkZFJlc291cmNlVG9GcmFtZTogZnVuY3Rpb24oZnJhbWVJZCwgcmVz
b3VyY2UpCi0gICAgewotICAgICAgICB2YXIgcmVzb3VyY2VzRm9yRnJhbWUgPSB0aGlzLl9yZXNv
dXJjZXNCeUZyYW1lSWRbZnJhbWVJZF07Ci0gICAgICAgIGlmICghcmVzb3VyY2VzRm9yRnJhbWUp
IHsKLSAgICAgICAgICAgIHJlc291cmNlc0ZvckZyYW1lID0gW107Ci0gICAgICAgICAgICB0aGlz
Ll9yZXNvdXJjZXNCeUZyYW1lSWRbZnJhbWVJZF0gPSByZXNvdXJjZXNGb3JGcmFtZTsKLSAgICAg
ICAgfQotICAgICAgICByZXNvdXJjZXNGb3JGcmFtZS5wdXNoKHJlc291cmNlKTsKLQotICAgICAg
ICBXZWJJbnNwZWN0b3IucGFuZWxzLnJlc291cmNlcy5hZGRSZXNvdXJjZVRvRnJhbWUoZnJhbWVJ
ZCwgcmVzb3VyY2UpOwotICAgIH0sCi0KLSAgICBfY2xlYXJSZXNvdXJjZXM6IGZ1bmN0aW9uKGZy
YW1lSWQsIGxvYWRlclRvUHJlc2VydmVJZCkKLSAgICB7Ci0gICAgICAgIHZhciByZXNvdXJjZXNG
b3JGcmFtZSA9IHRoaXMuX3Jlc291cmNlc0J5RnJhbWVJZFtmcmFtZUlkXTsKLSAgICAgICAgaWYg
KCFyZXNvdXJjZXNGb3JGcmFtZSkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICB2YXIg
cHJlc2VydmVkUmVzb3VyY2VzRm9yRnJhbWUgPSBbXTsKLSAgICAgICAgZm9yICh2YXIgaSA9IDA7
IGkgPCByZXNvdXJjZXNGb3JGcmFtZS5sZW5ndGg7ICsraSkgewotICAgICAgICAgICAgdmFyIHJl
c291cmNlID0gcmVzb3VyY2VzRm9yRnJhbWVbaV07Ci0gICAgICAgICAgICBpZiAocmVzb3VyY2Uu
bG9hZGVyLmxvYWRlcklkID09PSBsb2FkZXJUb1ByZXNlcnZlSWQpIHsKLSAgICAgICAgICAgICAg
ICBwcmVzZXJ2ZWRSZXNvdXJjZXNGb3JGcmFtZS5wdXNoKHJlc291cmNlKTsKLSAgICAgICAgICAg
ICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIFdlYkluc3BlY3Rvci5y
ZXNvdXJjZU1hbmFnZXIuX3VuYmluZFJlc291cmNlVVJMKHJlc291cmNlKTsKLSAgICAgICAgfQot
Ci0gICAgICAgIGRlbGV0ZSB0aGlzLl9yZXNvdXJjZXNCeUZyYW1lSWRbZnJhbWVJZF07Ci0gICAg
ICAgIGlmIChwcmVzZXJ2ZWRSZXNvdXJjZXNGb3JGcmFtZS5sZW5ndGgpCi0gICAgICAgICAgICB0
aGlzLl9yZXNvdXJjZXNCeUZyYW1lSWRbZnJhbWVJZF0gPSBwcmVzZXJ2ZWRSZXNvdXJjZXNGb3JG
cmFtZTsKLSAgICB9LAotCi0gICAgZm9yQWxsUmVzb3VyY2VzOiBmdW5jdGlvbihjYWxsYmFjaykK
LSAgICB7Ci0gICAgICAgIHRoaXMuX2NhbGxGb3JGcmFtZVJlc291cmNlcygwLCBjYWxsYmFjayk7
Ci0gICAgfSwKLQotICAgIF9jYWxsRm9yRnJhbWVSZXNvdXJjZXM6IGZ1bmN0aW9uKGZyYW1lSWQs
IGNhbGxiYWNrKQotICAgIHsKLSAgICAgICAgdmFyIHJlc291cmNlcyA9IHRoaXMuX3Jlc291cmNl
c0J5RnJhbWVJZFtmcmFtZUlkXTsKLSAgICAgICAgZm9yICh2YXIgaSA9IDA7IHJlc291cmNlcyAm
JiBpIDwgcmVzb3VyY2VzLmxlbmd0aDsgKytpKSB7Ci0gICAgICAgICAgICBpZiAoY2FsbGJhY2so
cmVzb3VyY2VzW2ldKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQot
ICAgICAgICAKLSAgICAgICAgdmFyIGZyYW1lcyA9IHRoaXMuX3N1YmZyYW1lc1tmcmFtZUlkXTsK
LSAgICAgICAgaWYgKGZyYW1lcykgewotICAgICAgICAgICAgZm9yICh2YXIgaWQgaW4gZnJhbWVz
KSB7Ci0gICAgICAgICAgICAgICAgaWYgKHRoaXMuX2NhbGxGb3JGcmFtZVJlc291cmNlcyhpZCwg
Y2FsbGJhY2spKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgfQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotfQpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlVHJlZU1vZGVsLmpzIGIvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlVHJlZU1vZGVsLmpzCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJjNjAwYzMKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VUcmVlTW9kZWwuanMKQEAgLTAsMCArMSwx
NDAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAq
CisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICog
aW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29n
bGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQK
KyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisKK1dlYkluc3BlY3Rvci5SZXNvdXJjZVRyZWVNb2RlbCA9IGZ1bmN0aW9uKCkKK3sKKyAg
ICB0aGlzLl9yZXNvdXJjZXNCeUZyYW1lSWQgPSB7fTsKKyAgICB0aGlzLl9zdWJmcmFtZXMgPSB7
fTsKK30KKworV2ViSW5zcGVjdG9yLlJlc291cmNlVHJlZU1vZGVsLnByb3RvdHlwZSA9IHsKKyAg
ICBhZGRPclVwZGF0ZUZyYW1lOiBmdW5jdGlvbihmcmFtZSkKKyAgICB7CisgICAgICAgIHZhciB0
bXBSZXNvdXJjZSA9IG5ldyBXZWJJbnNwZWN0b3IuUmVzb3VyY2UobnVsbCwgZnJhbWUudXJsKTsK
KyAgICAgICAgV2ViSW5zcGVjdG9yLnBhbmVscy5yZXNvdXJjZXMuYWRkT3JVcGRhdGVGcmFtZShm
cmFtZS5wYXJlbnRJZCwgZnJhbWUuaWQsIGZyYW1lLm5hbWUsIHRtcFJlc291cmNlLmRpc3BsYXlO
YW1lKTsKKyAgICAgICAgdmFyIHN1YmZyYW1lcyA9IHRoaXMuX3N1YmZyYW1lc1tmcmFtZS5wYXJl
bnRJZF07CisgICAgICAgIGlmICghc3ViZnJhbWVzKSB7CisgICAgICAgICAgICBzdWJmcmFtZXMg
PSB7fTsKKyAgICAgICAgICAgIHRoaXMuX3N1YmZyYW1lc1tmcmFtZS5wYXJlbnRJZCB8fCAwXSA9
IHN1YmZyYW1lczsKKyAgICAgICAgfQorICAgICAgICBzdWJmcmFtZXNbZnJhbWUuaWRdID0gdHJ1
ZTsKKyAgICB9LAorCisgICAgZGlkQ29tbWl0TG9hZEZvckZyYW1lOiBmdW5jdGlvbihmcmFtZSwg
bG9hZGVyKQorICAgIHsKKyAgICAgICAgLy8gZnJhbWUucGFyZW50SWQgPT09IDAgaXMgd2hlbiBt
YWluIGZyYW1lIG5hdmlnYXRpb24gaGFwcGVucy4KKyAgICAgICAgdGhpcy5fY2xlYXJDaGlsZEZy
YW1lc0FuZFJlc291cmNlcyhmcmFtZS5wYXJlbnRJZCA/IGZyYW1lLmlkIDogMCwgbG9hZGVyLmxv
YWRlcklkKTsKKworICAgICAgICB0aGlzLmFkZE9yVXBkYXRlRnJhbWUoZnJhbWUpOworCisgICAg
ICAgIHZhciByZXNvdXJjZXNGb3JGcmFtZSA9IHRoaXMuX3Jlc291cmNlc0J5RnJhbWVJZFtmcmFt
ZS5pZF07CisgICAgICAgIGZvciAodmFyIGkgPSAwOyByZXNvdXJjZXNGb3JGcmFtZSAmJiBpIDwg
cmVzb3VyY2VzRm9yRnJhbWUubGVuZ3RoOyArK2kpCisgICAgICAgICAgICBXZWJJbnNwZWN0b3Iu
cGFuZWxzLnJlc291cmNlcy5hZGRSZXNvdXJjZVRvRnJhbWUoZnJhbWUuaWQsIHJlc291cmNlc0Zv
ckZyYW1lW2ldKTsKKyAgICB9LAorCisgICAgZnJhbWVEZXRhY2hlZEZyb21QYXJlbnQ6IGZ1bmN0
aW9uKGZyYW1lSWQpCisgICAgeworICAgICAgICB0aGlzLl9jbGVhckNoaWxkRnJhbWVzQW5kUmVz
b3VyY2VzKGZyYW1lSWQsIDApOworICAgICAgICBXZWJJbnNwZWN0b3IucGFuZWxzLnJlc291cmNl
cy5yZW1vdmVGcmFtZShmcmFtZUlkKTsKKyAgICB9LAorCisgICAgX2NsZWFyQ2hpbGRGcmFtZXNB
bmRSZXNvdXJjZXM6IGZ1bmN0aW9uKGZyYW1lSWQsIGxvYWRlcklkKQorICAgIHsKKyAgICAgICAg
V2ViSW5zcGVjdG9yLnBhbmVscy5yZXNvdXJjZXMucmVtb3ZlUmVzb3VyY2VzRnJvbUZyYW1lKGZy
YW1lSWQpOworCisgICAgICAgIHRoaXMuX2NsZWFyUmVzb3VyY2VzKGZyYW1lSWQsIGxvYWRlcklk
KTsKKyAgICAgICAgdmFyIHN1YmZyYW1lcyA9IHRoaXMuX3N1YmZyYW1lc1tmcmFtZUlkXTsKKyAg
ICAgICAgaWYgKCFzdWJmcmFtZXMpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgZm9y
ICh2YXIgY2hpbGRGcmFtZUlkIGluIHN1YmZyYW1lcykgeworICAgICAgICAgICAgV2ViSW5zcGVj
dG9yLnBhbmVscy5yZXNvdXJjZXMucmVtb3ZlRnJhbWUoY2hpbGRGcmFtZUlkKTsKKyAgICAgICAg
ICAgIHRoaXMuX2NsZWFyQ2hpbGRGcmFtZXNBbmRSZXNvdXJjZXMoY2hpbGRGcmFtZUlkLCBsb2Fk
ZXJJZCk7CisgICAgICAgIH0KKyAgICAgICAgZGVsZXRlIHRoaXMuX3N1YmZyYW1lc1tmcmFtZUlk
XTsKKyAgICB9LAorCisgICAgYWRkUmVzb3VyY2VUb0ZyYW1lOiBmdW5jdGlvbihmcmFtZUlkLCBy
ZXNvdXJjZSkKKyAgICB7CisgICAgICAgIHZhciByZXNvdXJjZXNGb3JGcmFtZSA9IHRoaXMuX3Jl
c291cmNlc0J5RnJhbWVJZFtmcmFtZUlkXTsKKyAgICAgICAgaWYgKCFyZXNvdXJjZXNGb3JGcmFt
ZSkgeworICAgICAgICAgICAgcmVzb3VyY2VzRm9yRnJhbWUgPSBbXTsKKyAgICAgICAgICAgIHRo
aXMuX3Jlc291cmNlc0J5RnJhbWVJZFtmcmFtZUlkXSA9IHJlc291cmNlc0ZvckZyYW1lOworICAg
ICAgICB9CisgICAgICAgIHJlc291cmNlc0ZvckZyYW1lLnB1c2gocmVzb3VyY2UpOworCisgICAg
ICAgIFdlYkluc3BlY3Rvci5wYW5lbHMucmVzb3VyY2VzLmFkZFJlc291cmNlVG9GcmFtZShmcmFt
ZUlkLCByZXNvdXJjZSk7CisgICAgfSwKKworICAgIF9jbGVhclJlc291cmNlczogZnVuY3Rpb24o
ZnJhbWVJZCwgbG9hZGVyVG9QcmVzZXJ2ZUlkKQorICAgIHsKKyAgICAgICAgdmFyIHJlc291cmNl
c0ZvckZyYW1lID0gdGhpcy5fcmVzb3VyY2VzQnlGcmFtZUlkW2ZyYW1lSWRdOworICAgICAgICBp
ZiAoIXJlc291cmNlc0ZvckZyYW1lKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHZh
ciBwcmVzZXJ2ZWRSZXNvdXJjZXNGb3JGcmFtZSA9IFtdOworICAgICAgICBmb3IgKHZhciBpID0g
MDsgaSA8IHJlc291cmNlc0ZvckZyYW1lLmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICB2YXIg
cmVzb3VyY2UgPSByZXNvdXJjZXNGb3JGcmFtZVtpXTsKKyAgICAgICAgICAgIGlmIChyZXNvdXJj
ZS5sb2FkZXIubG9hZGVySWQgPT09IGxvYWRlclRvUHJlc2VydmVJZCkgeworICAgICAgICAgICAg
ICAgIHByZXNlcnZlZFJlc291cmNlc0ZvckZyYW1lLnB1c2gocmVzb3VyY2UpOworICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgV2ViSW5zcGVjdG9y
Lm5ldHdvcmtNYW5hZ2VyLnVuYmluZFJlc291cmNlVVJMKHJlc291cmNlKTsKKyAgICAgICAgfQor
CisgICAgICAgIGRlbGV0ZSB0aGlzLl9yZXNvdXJjZXNCeUZyYW1lSWRbZnJhbWVJZF07CisgICAg
ICAgIGlmIChwcmVzZXJ2ZWRSZXNvdXJjZXNGb3JGcmFtZS5sZW5ndGgpCisgICAgICAgICAgICB0
aGlzLl9yZXNvdXJjZXNCeUZyYW1lSWRbZnJhbWVJZF0gPSBwcmVzZXJ2ZWRSZXNvdXJjZXNGb3JG
cmFtZTsKKyAgICB9LAorCisgICAgZm9yQWxsUmVzb3VyY2VzOiBmdW5jdGlvbihjYWxsYmFjaykK
KyAgICB7CisgICAgICAgIHRoaXMuX2NhbGxGb3JGcmFtZVJlc291cmNlcygwLCBjYWxsYmFjayk7
CisgICAgfSwKKworICAgIF9jYWxsRm9yRnJhbWVSZXNvdXJjZXM6IGZ1bmN0aW9uKGZyYW1lSWQs
IGNhbGxiYWNrKQorICAgIHsKKyAgICAgICAgdmFyIHJlc291cmNlcyA9IHRoaXMuX3Jlc291cmNl
c0J5RnJhbWVJZFtmcmFtZUlkXTsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IHJlc291cmNlcyAm
JiBpIDwgcmVzb3VyY2VzLmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICBpZiAoY2FsbGJhY2so
cmVzb3VyY2VzW2ldKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQor
ICAgICAgICAKKyAgICAgICAgdmFyIGZyYW1lcyA9IHRoaXMuX3N1YmZyYW1lc1tmcmFtZUlkXTsK
KyAgICAgICAgaWYgKGZyYW1lcykgeworICAgICAgICAgICAgZm9yICh2YXIgaWQgaW4gZnJhbWVz
KSB7CisgICAgICAgICAgICAgICAgaWYgKHRoaXMuX2NhbGxGb3JGcmFtZVJlc291cmNlcyhpZCwg
Y2FsbGJhY2spKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorfQpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlVmlldy5qcyBiL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZVZpZXcuanMKaW5kZXggYTI4NGRhMS4uYjY5MDk3
ZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlVmlldy5q
cworKysgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VWaWV3LmpzCkBAIC00
MiwzICs0Miw3NiBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2VWaWV3LnByb3RvdHlwZSA9IHsKIH0K
IAogV2ViSW5zcGVjdG9yLlJlc291cmNlVmlldy5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5z
cGVjdG9yLlZpZXcucHJvdG90eXBlOworCitXZWJJbnNwZWN0b3IuUmVzb3VyY2VWaWV3LmNyZWF0
ZVJlc291cmNlVmlldyA9IGZ1bmN0aW9uKHJlc291cmNlKQoreworICAgIHN3aXRjaCAocmVzb3Vy
Y2UuY2F0ZWdvcnkpIHsKKyAgICBjYXNlIFdlYkluc3BlY3Rvci5yZXNvdXJjZUNhdGVnb3JpZXMu
ZG9jdW1lbnRzOgorICAgIGNhc2UgV2ViSW5zcGVjdG9yLnJlc291cmNlQ2F0ZWdvcmllcy5zdHls
ZXNoZWV0czoKKyAgICBjYXNlIFdlYkluc3BlY3Rvci5yZXNvdXJjZUNhdGVnb3JpZXMuc2NyaXB0
czoKKyAgICBjYXNlIFdlYkluc3BlY3Rvci5yZXNvdXJjZUNhdGVnb3JpZXMueGhyOgorICAgICAg
ICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5Tb3VyY2VWaWV3KHJlc291cmNlKTsKKyAgICBjYXNl
IFdlYkluc3BlY3Rvci5yZXNvdXJjZUNhdGVnb3JpZXMuaW1hZ2VzOgorICAgICAgICByZXR1cm4g
bmV3IFdlYkluc3BlY3Rvci5JbWFnZVZpZXcocmVzb3VyY2UpOworICAgIGNhc2UgV2ViSW5zcGVj
dG9yLnJlc291cmNlQ2F0ZWdvcmllcy5mb250czoKKyAgICAgICAgcmV0dXJuIG5ldyBXZWJJbnNw
ZWN0b3IuRm9udFZpZXcocmVzb3VyY2UpOworICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiBu
ZXcgV2ViSW5zcGVjdG9yLlJlc291cmNlVmlldyhyZXNvdXJjZSk7CisgICAgfQorfQorCitXZWJJ
bnNwZWN0b3IuUmVzb3VyY2VWaWV3LnJlc291cmNlVmlld1R5cGVNYXRjaGVzUmVzb3VyY2UgPSBm
dW5jdGlvbihyZXNvdXJjZSkKK3sKKyAgICB2YXIgcmVzb3VyY2VWaWV3ID0gcmVzb3VyY2UuX3Jl
c291cmNlc1ZpZXc7CisgICAgc3dpdGNoIChyZXNvdXJjZS5jYXRlZ29yeSkgeworICAgIGNhc2Ug
V2ViSW5zcGVjdG9yLnJlc291cmNlQ2F0ZWdvcmllcy5kb2N1bWVudHM6CisgICAgY2FzZSBXZWJJ
bnNwZWN0b3IucmVzb3VyY2VDYXRlZ29yaWVzLnN0eWxlc2hlZXRzOgorICAgIGNhc2UgV2ViSW5z
cGVjdG9yLnJlc291cmNlQ2F0ZWdvcmllcy5zY3JpcHRzOgorICAgIGNhc2UgV2ViSW5zcGVjdG9y
LnJlc291cmNlQ2F0ZWdvcmllcy54aHI6CisgICAgICAgIHJldHVybiByZXNvdXJjZVZpZXcuX19w
cm90b19fID09PSBXZWJJbnNwZWN0b3IuU291cmNlVmlldy5wcm90b3R5cGU7CisgICAgY2FzZSBX
ZWJJbnNwZWN0b3IucmVzb3VyY2VDYXRlZ29yaWVzLmltYWdlczoKKyAgICAgICAgcmV0dXJuIHJl
c291cmNlVmlldy5fX3Byb3RvX18gPT09IFdlYkluc3BlY3Rvci5JbWFnZVZpZXcucHJvdG90eXBl
OworICAgIGNhc2UgV2ViSW5zcGVjdG9yLnJlc291cmNlQ2F0ZWdvcmllcy5mb250czoKKyAgICAg
ICAgcmV0dXJuIHJlc291cmNlVmlldy5fX3Byb3RvX18gPT09IFdlYkluc3BlY3Rvci5Gb250Vmll
dy5wcm90b3R5cGU7CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIHJlc291cmNlVmlldy5f
X3Byb3RvX18gPT09IFdlYkluc3BlY3Rvci5SZXNvdXJjZVZpZXcucHJvdG90eXBlOworICAgIH0K
K30KKworV2ViSW5zcGVjdG9yLlJlc291cmNlVmlldy5yZXNvdXJjZVZpZXdGb3JSZXNvdXJjZSA9
IGZ1bmN0aW9uKHJlc291cmNlKQoreworICAgIGlmICghcmVzb3VyY2UpCisgICAgICAgIHJldHVy
biBudWxsOworICAgIGlmICghcmVzb3VyY2UuX3Jlc291cmNlc1ZpZXcpCisgICAgICAgIHJlc291
cmNlLl9yZXNvdXJjZXNWaWV3ID0gV2ViSW5zcGVjdG9yLlJlc291cmNlVmlldy5jcmVhdGVSZXNv
dXJjZVZpZXcocmVzb3VyY2UpOworICAgIHJldHVybiByZXNvdXJjZS5fcmVzb3VyY2VzVmlldzsK
K30KKworV2ViSW5zcGVjdG9yLlJlc291cmNlVmlldy5yZWNyZWF0ZVJlc291cmNlVmlldyA9IGZ1
bmN0aW9uKHJlc291cmNlKQoreworICAgIHZhciBuZXdWaWV3ID0gV2ViSW5zcGVjdG9yLlJlc291
cmNlVmlldy5jcmVhdGVSZXNvdXJjZVZpZXcocmVzb3VyY2UpOworCisgICAgdmFyIG9sZFZpZXcg
PSByZXNvdXJjZS5fcmVzb3VyY2VzVmlldzsKKyAgICB2YXIgb2xkVmlld1BhcmVudE5vZGUgPSBv
bGRWaWV3LnZpc2libGUgPyBvbGRWaWV3LmVsZW1lbnQucGFyZW50Tm9kZSA6IG51bGw7CisgICAg
dmFyIHNjcm9sbFRvcCA9IG9sZFZpZXcuc2Nyb2xsVG9wOworCisgICAgcmVzb3VyY2UuX3Jlc291
cmNlc1ZpZXcuZGV0YWNoKCk7CisgICAgZGVsZXRlIHJlc291cmNlLl9yZXNvdXJjZXNWaWV3Owor
CisgICAgcmVzb3VyY2UuX3Jlc291cmNlc1ZpZXcgPSBuZXdWaWV3OworCisgICAgaWYgKG9sZFZp
ZXdQYXJlbnROb2RlKQorICAgICAgICBuZXdWaWV3LnNob3cob2xkVmlld1BhcmVudE5vZGUpOwor
ICAgIGlmIChzY3JvbGxUb3ApCisgICAgICAgIG5ld1ZpZXcuc2Nyb2xsVG9wID0gc2Nyb2xsVG9w
OworCisgICAgV2ViSW5zcGVjdG9yLnBhbmVscy5zY3JpcHRzLnZpZXdSZWNyZWF0ZWQob2xkVmll
dywgbmV3Vmlldyk7CisgICAgcmV0dXJuIG5ld1ZpZXc7Cit9CisKK1dlYkluc3BlY3Rvci5SZXNv
dXJjZVZpZXcuZXhpc3RpbmdSZXNvdXJjZVZpZXdGb3JSZXNvdXJjZSA9IGZ1bmN0aW9uKHJlc291
cmNlKQoreworICAgIGlmICghcmVzb3VyY2UpCisgICAgICAgIHJldHVybiBudWxsOworICAgIHJl
dHVybiByZXNvdXJjZS5fcmVzb3VyY2VzVmlldzsKK30KZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZXNQYW5lbC5qcyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9SZXNvdXJjZXNQYW5lbC5qcwppbmRleCBkNmY3MTcyLi4zOWIwMzE1IDEwMDY0NAot
LS0gYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VzUGFuZWwuanMKKysrIGIv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlc1BhbmVsLmpzCkBAIC0zMjksMTIg
KzMyOSwxMiBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2VzUGFuZWwucHJvdG90eXBlID0gewogCiAg
ICAgY2FuU2hvd1NvdXJjZUxpbmU6IGZ1bmN0aW9uKHVybCwgbGluZSkKICAgICB7Ci0gICAgICAg
IHJldHVybiAhIVdlYkluc3BlY3Rvci5yZXNvdXJjZU1hbmFnZXIucmVzb3VyY2VGb3JVUkwodXJs
KTsKKyAgICAgICAgcmV0dXJuICEhV2ViSW5zcGVjdG9yLnJlc291cmNlVmlldy5yZXNvdXJjZUZv
clVSTCh1cmwpOwogICAgIH0sCiAKICAgICBzaG93U291cmNlTGluZTogZnVuY3Rpb24odXJsLCBs
aW5lKQogICAgIHsKLSAgICAgICAgdmFyIHJlc291cmNlID0gV2ViSW5zcGVjdG9yLnJlc291cmNl
TWFuYWdlci5yZXNvdXJjZUZvclVSTCh1cmwpOworICAgICAgICB2YXIgcmVzb3VyY2UgPSBXZWJJ
bnNwZWN0b3IubmV0d29ya01hbmFnZXIucmVzb3VyY2VGb3JVUkwodXJsKTsKICAgICAgICAgaWYg
KHJlc291cmNlLnR5cGUgPT09IFdlYkluc3BlY3Rvci5SZXNvdXJjZS5UeXBlLlhIUikgewogICAg
ICAgICAgICAgLy8gU2hvdyBYSFJzIGluIHRoZSBuZXR3b3JrIHBhbmVsIG9ubHkuCiAgICAgICAg
ICAgICBpZiAoV2ViSW5zcGVjdG9yLnBhbmVscy5uZXR3b3JrICYmIFdlYkluc3BlY3Rvci5wYW5l
bHMubmV0d29yay5jYW5TaG93U291cmNlTGluZSh1cmwsIGxpbmUpKSB7CkBAIC0zNDMsNyArMzQz
LDcgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlc1BhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAgICAgICB0aGlzLnNob3dS
ZXNvdXJjZShXZWJJbnNwZWN0b3IucmVzb3VyY2VNYW5hZ2VyLnJlc291cmNlRm9yVVJMKHVybCks
IGxpbmUpOworICAgICAgICB0aGlzLnNob3dSZXNvdXJjZShXZWJJbnNwZWN0b3IubmV0d29ya01h
bmFnZXIucmVzb3VyY2VGb3JVUkwodXJsKSwgbGluZSk7CiAgICAgfSwKIAogICAgIHNob3dSZXNv
dXJjZTogZnVuY3Rpb24ocmVzb3VyY2UsIGxpbmUpCkBAIC0zNTUsNyArMzU1LDcgQEAgV2ViSW5z
cGVjdG9yLlJlc291cmNlc1BhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgfQogCiAgICAgICAg
IGlmIChsaW5lKSB7Ci0gICAgICAgICAgICB2YXIgdmlldyA9IFdlYkluc3BlY3Rvci5SZXNvdXJj
ZU1hbmFnZXIucmVzb3VyY2VWaWV3Rm9yUmVzb3VyY2UocmVzb3VyY2UpOworICAgICAgICAgICAg
dmFyIHZpZXcgPSBXZWJJbnNwZWN0b3IuUmVzb3VyY2VWaWV3LnJlc291cmNlVmlld0ZvclJlc291
cmNlKHJlc291cmNlKTsKICAgICAgICAgICAgIGlmICh2aWV3LnJldmVhbExpbmUpCiAgICAgICAg
ICAgICAgICAgdmlldy5yZXZlYWxMaW5lKGxpbmUpOwogICAgICAgICAgICAgaWYgKHZpZXcuaGln
aGxpZ2h0TGluZSkKQEAgLTM2Niw3ICszNjYsNyBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2VzUGFu
ZWwucHJvdG90eXBlID0gewogCiAgICAgX3Nob3dSZXNvdXJjZVZpZXc6IGZ1bmN0aW9uKHJlc291
cmNlKQogICAgIHsKLSAgICAgICAgdmFyIHZpZXcgPSBXZWJJbnNwZWN0b3IuUmVzb3VyY2VNYW5h
Z2VyLnJlc291cmNlVmlld0ZvclJlc291cmNlKHJlc291cmNlKTsKKyAgICAgICAgdmFyIHZpZXcg
PSBXZWJJbnNwZWN0b3IuUmVzb3VyY2VWaWV3LnJlc291cmNlVmlld0ZvclJlc291cmNlKHJlc291
cmNlKTsKIAogICAgICAgICAvLyBDb25zaWRlciByZW5kZXJpbmcgZGlmZiBtYXJrdXAgaGVyZS4K
ICAgICAgICAgaWYgKHJlc291cmNlLmJhc2VSZXZpc2lvbiAmJiB2aWV3IGluc3RhbmNlb2YgV2Vi
SW5zcGVjdG9yLlNvdXJjZVZpZXcpIHsKQEAgLTY4Nyw3ICs2ODcsNyBAQCBXZWJJbnNwZWN0b3Iu
UmVzb3VyY2VzUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICBmdW5jdGlvbiBjYWxsYmFjayhy
ZXNvdXJjZVRyZWVFbGVtZW50KQogICAgICAgICB7CiAgICAgICAgICAgICB2YXIgcmVzb3VyY2Ug
PSByZXNvdXJjZVRyZWVFbGVtZW50Ll9yZXNvdXJjZTsKLSAgICAgICAgICAgIHZhciByZXNvdXJj
ZVZpZXcgPSBXZWJJbnNwZWN0b3IuUmVzb3VyY2VNYW5hZ2VyLnJlc291cmNlVmlld0ZvclJlc291
cmNlKHJlc291cmNlKTsKKyAgICAgICAgICAgIHZhciByZXNvdXJjZVZpZXcgPSBXZWJJbnNwZWN0
b3IuUmVzb3VyY2VWaWV3LnJlc291cmNlVmlld0ZvclJlc291cmNlKHJlc291cmNlKTsKICAgICAg
ICAgICAgIGlmIChyZXNvdXJjZVZpZXcucGVyZm9ybVNlYXJjaCAmJiByZXNvdXJjZVZpZXcgIT09
IHZpc2libGVWaWV3KQogICAgICAgICAgICAgICAgIHZpZXdzLnB1c2gocmVzb3VyY2VWaWV3KTsK
ICAgICAgICAgfQpAQCAtMTA2OSw3ICsxMDY5LDcgQEAgV2ViSW5zcGVjdG9yLkZyYW1lUmVzb3Vy
Y2VUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgewogICAgICAgICAvLyBGSVhNRTogbW92
ZSB0byB0aGUgU2NyaXB0L1NvdXJjZVZpZXcuCiAgICAgICAgIGlmICghdGhpcy5fcmVzb3VyY2Uu
d2FybmluZ3MgJiYgIXRoaXMuX3Jlc291cmNlLmVycm9ycykgewotICAgICAgICAgICAgdmFyIHZp
ZXcgPSBXZWJJbnNwZWN0b3IuUmVzb3VyY2VNYW5hZ2VyLmV4aXN0aW5nUmVzb3VyY2VWaWV3Rm9y
UmVzb3VyY2UodGhpcy5fcmVzb3VyY2UpOworICAgICAgICAgICAgdmFyIHZpZXcgPSBXZWJJbnNw
ZWN0b3IuUmVzb3VyY2VWaWV3LmV4aXN0aW5nUmVzb3VyY2VWaWV3Rm9yUmVzb3VyY2UodGhpcy5f
cmVzb3VyY2UpOwogICAgICAgICAgICAgaWYgKHZpZXcgJiYgdmlldy5jbGVhck1lc3NhZ2VzKQog
ICAgICAgICAgICAgICAgIHZpZXcuY2xlYXJNZXNzYWdlcygpOwogICAgICAgICB9CkBAIC0xMDky
LDkgKzEwOTIsOSBAQCBXZWJJbnNwZWN0b3IuRnJhbWVSZXNvdXJjZVRyZWVFbGVtZW50LnByb3Rv
dHlwZSA9IHsKICAgICBfY29udGVudENoYW5nZWQ6IGZ1bmN0aW9uKGV2ZW50KQogICAgIHsKICAg
ICAgICAgdGhpcy5pbnNlcnRDaGlsZChuZXcgV2ViSW5zcGVjdG9yLlJlc291cmNlUmV2aXNpb25U
cmVlRWxlbWVudCh0aGlzLl9zdG9yYWdlUGFuZWwsIGV2ZW50LmRhdGEucmV2aXNpb24pLCAwKTsK
LSAgICAgICAgdmFyIG9sZFZpZXcgPSBXZWJJbnNwZWN0b3IuUmVzb3VyY2VNYW5hZ2VyLmV4aXN0
aW5nUmVzb3VyY2VWaWV3Rm9yUmVzb3VyY2UodGhpcy5fcmVzb3VyY2UpOworICAgICAgICB2YXIg
b2xkVmlldyA9IFdlYkluc3BlY3Rvci5SZXNvdXJjZVZpZXcuZXhpc3RpbmdSZXNvdXJjZVZpZXdG
b3JSZXNvdXJjZSh0aGlzLl9yZXNvdXJjZSk7CiAgICAgICAgIGlmIChvbGRWaWV3KSB7Ci0gICAg
ICAgICAgICB2YXIgbmV3VmlldyA9IFdlYkluc3BlY3Rvci5SZXNvdXJjZU1hbmFnZXIucmVjcmVh
dGVSZXNvdXJjZVZpZXcodGhpcy5fcmVzb3VyY2UpOworICAgICAgICAgICAgdmFyIG5ld1ZpZXcg
PSBXZWJJbnNwZWN0b3IuUmVzb3VyY2VWaWV3LnJlY3JlYXRlUmVzb3VyY2VWaWV3KHRoaXMuX3Jl
c291cmNlKTsKICAgICAgICAgICAgIGlmIChvbGRWaWV3ID09PSB0aGlzLl9zdG9yYWdlUGFuZWwu
dmlzaWJsZVZpZXcpCiAgICAgICAgICAgICAgICAgdGhpcy5fc3RvcmFnZVBhbmVsLnZpc2libGVW
aWV3ID0gbmV3VmlldzsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL1NjcmlwdHNQYW5lbC5qcyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9T
Y3JpcHRzUGFuZWwuanMKaW5kZXggNzM4Nzk2NC4uYmQ2MjNhMiAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NjcmlwdHNQYW5lbC5qcworKysgYi9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvU2NyaXB0c1BhbmVsLmpzCkBAIC0yNTYsNyArMjU2LDcgQEAgV2ViSW5z
cGVjdG9yLlNjcmlwdHNQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICBpZiAocmVzb3Vy
Y2UuZmluaXNoZWQpIHsKICAgICAgICAgICAgICAgICAvLyBSZXNvdXJjZSBpcyBmaW5pc2hlZCwg
YmluZCB0aGUgc2NyaXB0IHJpZ2h0IGF3YXkuCiAgICAgICAgICAgICAgICAgc2NyaXB0LnJlc291
cmNlID0gcmVzb3VyY2U7Ci0gICAgICAgICAgICAgICAgdmFyIHZpZXcgPSBXZWJJbnNwZWN0b3Iu
UmVzb3VyY2VNYW5hZ2VyLmV4aXN0aW5nUmVzb3VyY2VWaWV3Rm9yUmVzb3VyY2UocmVzb3VyY2Up
OworICAgICAgICAgICAgICAgIHZhciB2aWV3ID0gV2ViSW5zcGVjdG9yLlJlc291cmNlVmlldy5l
eGlzdGluZ1Jlc291cmNlVmlld0ZvclJlc291cmNlKHJlc291cmNlKTsKICAgICAgICAgICAgICAg
ICBpZiAodmlldyAmJiB2aWV3LnNvdXJjZUZyYW1lKQogICAgICAgICAgICAgICAgICAgICB2aWV3
LnNvdXJjZUZyYW1lLmFkZFNjcmlwdChzY3JpcHQpOwogICAgICAgICAgICAgfSBlbHNlIHsKQEAg
LTQ0MiwxMCArNDQyLDYgQEAgV2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5lbC5wcm90b3R5cGUgPSB7
CiAgICAgICAgIHRoaXMuZnVuY3Rpb25zU2VsZWN0RWxlbWVudC5yZW1vdmVDaGlsZHJlbigpOwog
ICAgICAgICB0aGlzLnZpZXdzQ29udGFpbmVyRWxlbWVudC5yZW1vdmVDaGlsZHJlbigpOwogCi0g
ICAgICAgIHZhciBzY3JpcHRzID0gV2ViSW5zcGVjdG9yLmRlYnVnZ2VyTW9kZWwucXVlcnlTY3Jp
cHRzKGZ1bmN0aW9uKHMpIHsgcmV0dXJuICEhcy5yZXNvdXJjZTsgfSk7Ci0gICAgICAgIGZvciAo
dmFyIGkgPSAwOyBpIDwgc2NyaXB0cy5sZW5ndGg7ICsraSkKLSAgICAgICAgICAgIGRlbGV0ZSBz
Y3JpcHRzW2ldLnJlc291cmNlLl9yZXNvdXJjZXNWaWV3OwotCiAgICAgICAgIHRoaXMuc2lkZWJh
clBhbmVzLndhdGNoRXhwcmVzc2lvbnMucmVmcmVzaEV4cHJlc3Npb25zKCk7CiAgICAgICAgIGlm
ICghcHJlc2VydmVJdGVtcykKICAgICAgICAgICAgIHRoaXMuc2lkZWJhclBhbmVzLndvcmtlcnMu
cmVzZXQoKTsKQEAgLTU1Myw3ICs1NDksNyBAQCBXZWJJbnNwZWN0b3IuU2NyaXB0c1BhbmVsLnBy
b3RvdHlwZSA9IHsKIAogICAgIF9zb3VyY2VGcmFtZUZvclJlc291cmNlOiBmdW5jdGlvbihyZXNv
dXJjZSkKICAgICB7Ci0gICAgICAgIHZhciB2aWV3ID0gV2ViSW5zcGVjdG9yLlJlc291cmNlTWFu
YWdlci5yZXNvdXJjZVZpZXdGb3JSZXNvdXJjZShyZXNvdXJjZSk7CisgICAgICAgIHZhciB2aWV3
ID0gV2ViSW5zcGVjdG9yLlJlc291cmNlVmlldy5yZXNvdXJjZVZpZXdGb3JSZXNvdXJjZShyZXNv
dXJjZSk7CiAgICAgICAgIGlmICghdmlldykKICAgICAgICAgICAgIHJldHVybiBudWxsOwogCkBA
IC01NzQsNyArNTcwLDcgQEAgV2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5lbC5wcm90b3R5cGUgPSB7
CiAKICAgICAgICAgdmFyIHZpZXc7CiAgICAgICAgIGlmIChzY3JpcHRPclJlc291cmNlIGluc3Rh
bmNlb2YgV2ViSW5zcGVjdG9yLlJlc291cmNlKQotICAgICAgICAgICAgdmlldyA9IFdlYkluc3Bl
Y3Rvci5SZXNvdXJjZU1hbmFnZXIucmVzb3VyY2VWaWV3Rm9yUmVzb3VyY2Uoc2NyaXB0T3JSZXNv
dXJjZSk7CisgICAgICAgICAgICB2aWV3ID0gV2ViSW5zcGVjdG9yLlJlc291cmNlVmlldy5yZXNv
dXJjZVZpZXdGb3JSZXNvdXJjZShzY3JpcHRPclJlc291cmNlKTsKICAgICAgICAgZWxzZSBpZiAo
c2NyaXB0T3JSZXNvdXJjZSBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5TY3JpcHQpCiAgICAgICAg
ICAgICB2aWV3ID0gdGhpcy5zY3JpcHRWaWV3Rm9yU2NyaXB0KHNjcmlwdE9yUmVzb3VyY2UpOwog
CmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvV2ViS2l0LnFyYyBiL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9XZWJLaXQucXJjCmluZGV4IDkwYzQzMTcuLjI0NDQ5
MTMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9XZWJLaXQucXJjCisr
KyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9XZWJLaXQucXJjCkBAIC01OCw2ICs1OCw3
IEBACiAgICAgPGZpbGU+S2V5Ym9hcmRTaG9ydGN1dC5qczwvZmlsZT4KICAgICA8ZmlsZT5NZXRy
aWNzU2lkZWJhclBhbmUuanM8L2ZpbGU+CiAgICAgPGZpbGU+TmV0d29ya0l0ZW1WaWV3LmpzPC9m
aWxlPgorICAgIDxmaWxlPk5ldHdvcmtNYW5hZ2VyLmpzPC9maWxlPgogICAgIDxmaWxlPk5ldHdv
cmtQYW5lbC5qczwvZmlsZT4KICAgICA8ZmlsZT5PYmplY3QuanM8L2ZpbGU+CiAgICAgPGZpbGU+
T2JqZWN0UHJvcGVydGllc1NlY3Rpb24uanM8L2ZpbGU+CkBAIC03NSw3ICs3Niw2IEBACiAgICAg
PGZpbGU+UmVzb3VyY2VDYXRlZ29yeS5qczwvZmlsZT4KICAgICA8ZmlsZT5SZXNvdXJjZUNvb2tp
ZXNWaWV3LmpzPC9maWxlPgogICAgIDxmaWxlPlJlc291cmNlSGVhZGVyc1ZpZXcuanM8L2ZpbGU+
Ci0gICAgPGZpbGU+UmVzb3VyY2VNYW5hZ2VyLmpzPC9maWxlPgogICAgIDxmaWxlPlJlc291cmNl
VGltaW5nVmlldy5qczwvZmlsZT4KICAgICA8ZmlsZT5SZXNvdXJjZVZpZXcuanM8L2ZpbGU+CiAg
ICAgPGZpbGU+UmVzb3VyY2VzUGFuZWwuanM8L2ZpbGU+CmRpZmYgLS1naXQgYS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmh0bWwgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvaW5zcGVjdG9yLmh0bWwKaW5kZXggOWVkNTAxOS4uZTE1OTBmMiAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5odG1sCisrKyBiL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuaHRtbApAQCAtNjEsNyArNjEsOCBAQCBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IlBhbmVsLmpzIj48
L3NjcmlwdD4KICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJUaW1lbGlu
ZUdyaWQuanMiPjwvc2NyaXB0PiAgICAKICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlw
dCIgc3JjPSJSZXNvdXJjZS5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2ph
dmFzY3JpcHQiIHNyYz0iUmVzb3VyY2VNYW5hZ2VyLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0
IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJOZXR3b3JrTWFuYWdlci5qcyI+PC9zY3JpcHQ+
CisgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iUmVzb3VyY2VUcmVlTW9k
ZWwuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9
IlJlc291cmNlQ2F0ZWdvcnkuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9q
YXZhc2NyaXB0IiBzcmM9IkRhdGFiYXNlLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHR5cGU9
InRleHQvamF2YXNjcmlwdCIgc3JjPSJET01TdG9yYWdlLmpzIj48L3NjcmlwdD4KZGlmZiAtLWdp
dCBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuanMgYi9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmpzCmluZGV4IGE1N2YwZjQuLjI5MDI2M2YgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuanMKKysrIGIv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5qcwpAQCAtNDQ1LDEyICs0NDUs
MTIgQEAgdmFyIFdlYkluc3BlY3RvciA9IHsKIAogICAgIGZvckFsbFJlc291cmNlczogZnVuY3Rp
b24oY2FsbGJhY2spCiAgICAgewotICAgICAgICBXZWJJbnNwZWN0b3IucmVzb3VyY2VNYW5hZ2Vy
LmZvckFsbFJlc291cmNlcyhjYWxsYmFjayk7CisgICAgICAgIFdlYkluc3BlY3Rvci5uZXR3b3Jr
TWFuYWdlci5mb3JBbGxSZXNvdXJjZXMoY2FsbGJhY2spOwogICAgIH0sCiAKICAgICByZXNvdXJj
ZUZvclVSTDogZnVuY3Rpb24odXJsKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMucmVzb3Vy
Y2VNYW5hZ2VyLnJlc291cmNlRm9yVVJMKHVybCk7CisgICAgICAgIHJldHVybiB0aGlzLm5ldHdv
cmtNYW5hZ2VyLnJlc291cmNlRm9yVVJMKHVybCk7CiAgICAgfQogfQogCkBAIC01MTcsNyArNTE3
LDcgQEAgV2ViSW5zcGVjdG9yLmRvTG9hZGVkRG9uZSA9IGZ1bmN0aW9uKCkKICAgICAvLyB0aGlz
LmNoYW5nZXMgPSBuZXcgV2ViSW5zcGVjdG9yLkNoYW5nZXNWaWV3KHRoaXMuZHJhd2VyKTsKICAg
ICAvLyBUT0RPOiBSZW1vdmUgY2xhc3M9ImhpZGRlbiIgZnJvbSBpbnNwZWN0b3IuaHRtbCBvbiBi
dXR0b24jY2hhbmdlcy1zdGF0dXMtYmFyLWl0ZW0KICAgICB0aGlzLmRyYXdlci52aXNpYmxlVmll
dyA9IHRoaXMuY29uc29sZTsKLSAgICB0aGlzLnJlc291cmNlTWFuYWdlciA9IG5ldyBXZWJJbnNw
ZWN0b3IuUmVzb3VyY2VNYW5hZ2VyKCk7CisgICAgdGhpcy5uZXR3b3JrTWFuYWdlciA9IG5ldyBX
ZWJJbnNwZWN0b3IuTmV0d29ya01hbmFnZXIoKTsKICAgICB0aGlzLmRvbUFnZW50ID0gbmV3IFdl
Ykluc3BlY3Rvci5ET01BZ2VudCgpOwogCiAgICAgSW5zcGVjdG9yQmFja2VuZC5yZWdpc3RlckRv
bWFpbkRpc3BhdGNoZXIoIkluc3BlY3RvciIsIHRoaXMpOwo=
</data>
<flag name="review"
          id="68061"
          type_id="1"
          status="-"
          setter="yurys"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>77106</attachid>
            <date>2010-12-21 05:34:52 -0800</date>
            <delta_ts>2010-12-21 10:41:47 -0800</delta_ts>
            <desc>[patch] second iteration</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>89837</size>
            <attacher name="Ilya Tikhonovsky">loislo</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAwODU3MzA3Li41NzA5NTRhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTAtMTIt
MjAgIElseWEgVGlraG9ub3Zza3kgIDxsb2lzbG9AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IFByb3Rv
Y29sIGNsZWFudXAgdGFzay4gSW50cm9kdWNlIE5ldHdvcmssIERPTVN0b3JhZ2UgYW5kIERhdGFi
YXNlIGRvbWFpbnMuCisKKyAgICAgICAgRG9tYWluIHdhcyBjaGFuZ2VkIGZvciBSZXNvdXJjZXMs
IEZpbGVTeXN0ZW0gZXRjLiByZWxhdGVkIG1ldGhvZHMuCisgICAgICAgIFJlc291cmNlc01hbmFn
ZXIgd2FzIHJlbmFtZWQgdG8gTmV0d29ya01hbmFnZXIuCisgICAgICAgIFJlc291cmNlVHJlZU1v
ZGVsIHdhcyBleHRyYWN0ZWQgYXMgc2VwYXJhdGUgZmlsZS4KKyAgICAgICAgRmlsZVN5c3RlbSwg
RGF0YWJhc2UsIERPTVN0b3JhZ2UgYW5kIEFwcGxpY2F0aW9uQ2FjaGUgbWV0aG9kcyB3ZXJlCisg
ICAgICAgIHJlbW92ZWQgZnJvbSBOZXR3b3JrTWFuYWdlciBhbmQgYWRkZWQgdG8gY29ycmVzcG9u
ZGluZyBjbGFzc2VzLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD01MTMzNAorCisKKyAgICAgICAgKiBpbnNwZWN0b3IvcmVwb3J0LXByb3RvY29sLWVy
cm9ycy1leHBlY3RlZC50eHQ6CisKIDIwMTAtMTItMjEgIEFuZHJlaSBQb3Blc2N1ICA8YW5kcmVp
cEBnb29nbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQgYnVpbGQgZml4LgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3JlcG9ydC1wcm90b2NvbC1lcnJvcnMtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3JlcG9ydC1wcm90b2NvbC1lcnJvcnMtZXhwZWN0
ZWQudHh0CmluZGV4IDIyMjFjODQuLjA5NzlhM2MgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2lu
c3BlY3Rvci9yZXBvcnQtcHJvdG9jb2wtZXJyb3JzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRU
ZXN0cy9pbnNwZWN0b3IvcmVwb3J0LXByb3RvY29sLWVycm9ycy1leHBlY3RlZC50eHQKQEAgLTQ0
LDcgKzQ0LDcgQEAgVGVzdHMgdGhhdCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciBpcyBjYXRj
aGluZyBpbmNvcnJlY3QgbWVzc2FnZXMuCiB9CiB7CiAgICAgc2VxIDogMgotICAgIGRvbWFpbiA6
ICJSZXNvdXJjZXMiCisgICAgZG9tYWluIDogIk5ldHdvcmsiCiAgICAgc3VjY2VzcyA6IGZhbHNl
CiAgICAgZXJyb3JzIDogewogICAgICAgICAwIDogIlByb3RvY29sIEVycm9yOiAnYXJndW1lbnRz
JyBwcm9wZXJ0eSB3aXRoIHR5cGUgJ29iamVjdCcgd2FzIG5vdCBmb3VuZC4iCkBAIC01Miw3ICs1
Miw3IEBAIFRlc3RzIHRoYXQgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIgaXMgY2F0Y2hpbmcg
aW5jb3JyZWN0IG1lc3NhZ2VzLgogfQogewogICAgIHNlcSA6IDMKLSAgICBkb21haW4gOiAiUmVz
b3VyY2VzIgorICAgIGRvbWFpbiA6ICJOZXR3b3JrIgogICAgIHN1Y2Nlc3MgOiBmYWxzZQogICAg
IGVycm9ycyA6IHsKICAgICAgICAgMCA6ICJQcm90b2NvbCBFcnJvcjogJ2FyZ3VtZW50cycgcHJv
cGVydHkgd2l0aCB0eXBlICdvYmplY3QnIHdhcyBub3QgZm91bmQuIgpAQCAtNjAsNyArNjAsNyBA
QCBUZXN0cyB0aGF0IEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyIGlzIGNhdGNoaW5nIGluY29y
cmVjdCBtZXNzYWdlcy4KIH0KIHsKICAgICBzZXEgOiA0Ci0gICAgZG9tYWluIDogIlJlc291cmNl
cyIKKyAgICBkb21haW4gOiAiTmV0d29yayIKICAgICBzdWNjZXNzIDogZmFsc2UKICAgICBlcnJv
cnMgOiB7CiAgICAgICAgIDAgOiAiUHJvdG9jb2wgRXJyb3I6IEFyZ3VtZW50ICdmcmFtZUlkJyB3
aXRoIHR5cGUgJ051bWJlcicgd2FzIG5vdCBmb3VuZC4iCkBAIC03MCw3ICs3MCw3IEBAIFRlc3Rz
IHRoYXQgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIgaXMgY2F0Y2hpbmcgaW5jb3JyZWN0IG1l
c3NhZ2VzLgogfQogewogICAgIHNlcSA6IDUKLSAgICBkb21haW4gOiAiUmVzb3VyY2VzIgorICAg
IGRvbWFpbiA6ICJOZXR3b3JrIgogICAgIHN1Y2Nlc3MgOiBmYWxzZQogICAgIGVycm9ycyA6IHsK
ICAgICAgICAgMCA6ICJQcm90b2NvbCBFcnJvcjogQXJndW1lbnQgJ2ZyYW1lSWQnIHdpdGggdHlw
ZSAnTnVtYmVyJyB3YXMgbm90IGZvdW5kLiIKZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9n
IGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGJjMzBiZi4uYWJlOTUxNiAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMTgg
QEAKKzIwMTAtMTItMjAgIElseWEgVGlraG9ub3Zza3kgIDxsb2lzbG9AY2hyb21pdW0ub3JnPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlYiBJbnNw
ZWN0b3I6IFByb3RvY29sIGNsZWFudXAgdGFzay4gSW50cm9kdWNlIE5ldHdvcmssIERPTVN0b3Jh
Z2UgYW5kIERhdGFiYXNlIGRvbWFpbnMuCisKKyAgICAgICAgRG9tYWluIHdhcyBjaGFuZ2VkIGZv
ciBSZXNvdXJjZXMsIEZpbGVTeXN0ZW0gZXRjLiByZWxhdGVkIG1ldGhvZHMuCisgICAgICAgIFJl
c291cmNlc01hbmFnZXIgd2FzIHJlbmFtZWQgdG8gTmV0d29ya01hbmFnZXIuCisgICAgICAgIFJl
c291cmNlVHJlZU1vZGVsIHdhcyBleHRyYWN0ZWQgYXMgc2VwYXJhdGUgZmlsZS4KKyAgICAgICAg
RmlsZVN5c3RlbSwgRGF0YWJhc2UsIERPTVN0b3JhZ2UgYW5kIEFwcGxpY2F0aW9uQ2FjaGUgbWV0
aG9kcyB3ZXJlCisgICAgICAgIHJlbW92ZWQgZnJvbSBOZXR3b3JrTWFuYWdlciBhbmQgYWRkZWQg
dG8gY29ycmVzcG9uZGluZyBjbGFzc2VzLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD01MTMzNAorCisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAg
ICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAgICAqIGluc3BlY3Rv
ci9Db2RlR2VuZXJhdG9ySW5zcGVjdG9yLnBtOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0
b3IuaWRsOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvQXVkaXRSdWxlcy5qczoKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5BdWRpdFJ1bGVzLlVudXNlZENzc1J1bGUucHJvdG90eXBlLmRv
UnVuLmV2YWxDYWxsYmFjay5zZWxlY3RvcnNDYWxsYmFjayk6CisgICAgICAgICogaW5zcGVjdG9y
L2Zyb250LWVuZC9DU1NTdHlsZU1vZGVsLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNTU1N0
eWxlTW9kZWwucHJvdG90eXBlLl9zdHlsZVNoZWV0Q2hhbmdlZC5jYWxsYmFjayk6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuQ1NTU3R5bGVNb2RlbC5wcm90b3R5cGUuX3N0eWxlU2hlZXRDaGFuZ2Vk
KToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0NvbnNvbGVWaWV3LmpzOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLkNvbnNvbGVWaWV3LnByb3RvdHlwZS5hZGRNZXNzYWdlKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5Db25zb2xlVmlldy5wcm90b3R5cGUuY2xlYXJNZXNzYWdlcyk6Cisg
ICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9ET01BZ2VudC5qczoKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5BcHBsaWNhdGlvbkNhY2hlLnVwZGF0ZUFwcGxpY2F0aW9uQ2FjaGVTdGF0dXMpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLkFwcGxpY2F0aW9uQ2FjaGUudXBkYXRlTmV0d29ya1N0YXRl
KToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0RPTVN0b3JhZ2UuanM6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuRE9NU3RvcmFnZS5hZGRET01TdG9yYWdlKToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5ET01TdG9yYWdlLnNlbGVjdERPTVN0b3JhZ2UpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLkRPTVN0b3JhZ2UudXBkYXRlRE9NU3RvcmFnZSk6CisgICAgICAgICogaW5zcGVjdG9yL2Zy
b250LWVuZC9EYXRhYmFzZS5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EYXRhYmFzZS5hZGRE
YXRhYmFzZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGF0YWJhc2Uuc2VsZWN0RGF0YWJhc2Up
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRhdGFiYXNlLnNxbFRyYW5zYWN0aW9uU3VjY2VlZGVk
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EYXRhYmFzZS5zcWxUcmFuc2FjdGlvbkZhaWxlZCk6
CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9GaWxlU3lzdGVtVmlldy5qczoKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtLmRpZEdldEZpbGVTeXN0ZW1QYXRoKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtLmRpZEdldEZpbGVTeXN0ZW1FcnJvcik6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbS5kaWRHZXRGaWxlU3lzdGVtRGlzYWJsZWQpOgor
ICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvTmV0d29ya0l0ZW1WaWV3LmpzOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLk5ldHdvcmtJdGVtVmlldyk6CisgICAgICAgICogaW5zcGVjdG9yL2Zy
b250LWVuZC9OZXR3b3JrTWFuYWdlci5qczogQWRkZWQuCisgICAgICAgIChXZWJJbnNwZWN0b3Iu
TmV0d29ya01hbmFnZXIpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk5ldHdvcmtNYW5hZ2VyLnBy
b3RvdHlwZS5pZGVudGlmaWVyRm9ySW5pdGlhbFJlcXVlc3QpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLk5ldHdvcmtNYW5hZ2VyLnByb3RvdHlwZS5fY3JlYXRlUmVzb3VyY2UpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLk5ldHdvcmtNYW5hZ2VyLnByb3RvdHlwZS53aWxsU2VuZFJlcXVlc3QpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLk5ldHdvcmtNYW5hZ2VyLnByb3RvdHlwZS5fdXBkYXRlUmVz
b3VyY2VXaXRoUmVxdWVzdCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTmV0d29ya01hbmFnZXIu
cHJvdG90eXBlLl9hcHBlbmRSZWRpcmVjdCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTmV0d29y
a01hbmFnZXIucHJvdG90eXBlLm1hcmtSZXNvdXJjZUFzQ2FjaGVkKToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5OZXR3b3JrTWFuYWdlci5wcm90b3R5cGUuZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5OZXR3b3JrTWFuYWdlci5wcm90b3R5cGUuX3VwZGF0ZVJlc291
cmNlV2l0aFJlc3BvbnNlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5OZXR3b3JrTWFuYWdlci5w
cm90b3R5cGUuZGlkUmVjZWl2ZUNvbnRlbnRMZW5ndGgpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
Lk5ldHdvcmtNYW5hZ2VyLnByb3RvdHlwZS5kaWRGaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5OZXR3b3JrTWFuYWdlci5wcm90b3R5cGUuZGlkRmFpbExvYWRpbmcpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLk5ldHdvcmtNYW5hZ2VyLnByb3RvdHlwZS5kaWRMb2FkUmVzb3Vy
Y2VGcm9tTWVtb3J5Q2FjaGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk5ldHdvcmtNYW5hZ2Vy
LnByb3RvdHlwZS5fdXBkYXRlUmVzb3VyY2VXaXRoQ2FjaGVkUmVzb3VyY2UpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLk5ldHdvcmtNYW5hZ2VyLnByb3RvdHlwZS5zZXRJbml0aWFsQ29udGVudCk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuTmV0d29ya01hbmFnZXIucHJvdG90eXBlLmRpZENvbW1p
dExvYWRGb3JGcmFtZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTmV0d29ya01hbmFnZXIucHJv
dG90eXBlLmZyYW1lRGV0YWNoZWRGcm9tUGFyZW50KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5O
ZXR3b3JrTWFuYWdlci5wcm90b3R5cGUuZGlkQ3JlYXRlV2ViU29ja2V0KToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5OZXR3b3JrTWFuYWdlci5wcm90b3R5cGUud2lsbFNlbmRXZWJTb2NrZXRIYW5k
c2hha2VSZXF1ZXN0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5OZXR3b3JrTWFuYWdlci5wcm90
b3R5cGUuZGlkUmVjZWl2ZVdlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlKToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5OZXR3b3JrTWFuYWdlci5wcm90b3R5cGUuZGlkQ2xvc2VXZWJTb2NrZXQpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLk5ldHdvcmtNYW5hZ2VyLnByb3RvdHlwZS5fcHJvY2Vzc0Nh
Y2hlZFJlc291cmNlcyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTmV0d29ya01hbmFnZXIucHJv
dG90eXBlLl9hZGRGcmFtZXNSZWN1cnNpdmVseSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTmV0
d29ya01hbmFnZXIucHJvdG90eXBlLnJlc291cmNlRm9yVVJMKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5OZXR3b3JrTWFuYWdlci5wcm90b3R5cGUuYWRkQ29uc29sZU1lc3NhZ2UpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLk5ldHdvcmtNYW5hZ2VyLnByb3RvdHlwZS5jbGVhckNvbnNvbGVNZXNz
YWdlcyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTmV0d29ya01hbmFnZXIucHJvdG90eXBlLmZv
ckFsbFJlc291cmNlcyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTmV0d29ya01hbmFnZXIucHJv
dG90eXBlLl9iaW5kUmVzb3VyY2VVUkwpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk5ldHdvcmtN
YW5hZ2VyLnByb3RvdHlwZS51bmJpbmRSZXNvdXJjZVVSTCk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuTmV0d29ya01hbmFnZXIucmVxdWVzdENvbnRlbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9m
cm9udC1lbmQvTmV0d29ya1BhbmVsLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk5ldHdvcmtQ
YW5lbC5wcm90b3R5cGUucmVmcmVzaFJlc291cmNlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJv
bnQtZW5kL1Jlc291cmNlLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNlLnByb3Rv
dHlwZS5faW5uZXJSZXF1ZXN0Q29udGVudCk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVu
ZC9SZXNvdXJjZU1hbmFnZXIuanM6IFJlbW92ZWQuCisgICAgICAgICogaW5zcGVjdG9yL2Zyb250
LWVuZC9SZXNvdXJjZVRyZWVNb2RlbC5qczogQWRkZWQuCisgICAgICAgIChXZWJJbnNwZWN0b3Iu
UmVzb3VyY2VUcmVlTW9kZWwpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNlVHJlZU1v
ZGVsLnByb3RvdHlwZS5hZGRPclVwZGF0ZUZyYW1lKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5S
ZXNvdXJjZVRyZWVNb2RlbC5wcm90b3R5cGUuZGlkQ29tbWl0TG9hZEZvckZyYW1lKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5SZXNvdXJjZVRyZWVNb2RlbC5wcm90b3R5cGUuZnJhbWVEZXRhY2hl
ZEZyb21QYXJlbnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNlVHJlZU1vZGVsLnBy
b3RvdHlwZS5fY2xlYXJDaGlsZEZyYW1lc0FuZFJlc291cmNlcyk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuUmVzb3VyY2VUcmVlTW9kZWwucHJvdG90eXBlLmFkZFJlc291cmNlVG9GcmFtZSk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuUmVzb3VyY2VUcmVlTW9kZWwucHJvdG90eXBlLl9jbGVhclJl
c291cmNlcyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVzb3VyY2VUcmVlTW9kZWwucHJvdG90
eXBlLmZvckFsbFJlc291cmNlcyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVzb3VyY2VUcmVl
TW9kZWwucHJvdG90eXBlLl9jYWxsRm9yRnJhbWVSZXNvdXJjZXMpOgorICAgICAgICAqIGluc3Bl
Y3Rvci9mcm9udC1lbmQvUmVzb3VyY2VWaWV3LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJl
c291cmNlVmlldy5jcmVhdGVSZXNvdXJjZVZpZXcpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJl
c291cmNlVmlldy5yZXNvdXJjZVZpZXdUeXBlTWF0Y2hlc1Jlc291cmNlKToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5SZXNvdXJjZVZpZXcucmVzb3VyY2VWaWV3Rm9yUmVzb3VyY2UpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLlJlc291cmNlVmlldy5yZWNyZWF0ZVJlc291cmNlVmlldyk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuUmVzb3VyY2VWaWV3LmV4aXN0aW5nUmVzb3VyY2VWaWV3Rm9yUmVz
b3VyY2UpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VzUGFuZWwuanM6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVzb3VyY2VzUGFuZWwucHJvdG90eXBlLmNhblNob3dT
b3VyY2VMaW5lKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SZXNvdXJjZXNQYW5lbC5wcm90b3R5
cGUuc2hvd1NvdXJjZUxpbmUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNlc1BhbmVs
LnByb3RvdHlwZS5zaG93UmVzb3VyY2UpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNl
c1BhbmVsLnByb3RvdHlwZS5nZXQgc2VhcmNoYWJsZVZpZXdzLmNhbGxiYWNrKToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5SZXNvdXJjZXNQYW5lbC5wcm90b3R5cGUuZ2V0IHNlYXJjaGFibGVWaWV3
cyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRnJhbWVSZXNvdXJjZVRyZWVFbGVtZW50LnByb3Rv
dHlwZS5fZXJyb3JzV2FybmluZ3NVcGRhdGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5GcmFt
ZVJlc291cmNlVHJlZUVsZW1lbnQucHJvdG90eXBlLl9jb250ZW50Q2hhbmdlZCk6CisgICAgICAg
ICogaW5zcGVjdG9yL2Zyb250LWVuZC9TY3JpcHRzUGFuZWwuanM6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuU2NyaXB0c1BhbmVsLnByb3RvdHlwZS5fYWRkU2NyaXB0KToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5TY3JpcHRzUGFuZWwucHJvdG90eXBlLnJlc2V0KToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5TY3JpcHRzUGFuZWwucHJvdG90eXBlLl9zb3VyY2VGcmFtZUZvclJlc291cmNlKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5TY3JpcHRzUGFuZWwucHJvdG90eXBlLl9zaG93U2NyaXB0T3JS
ZXNvdXJjZSk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9XZWJLaXQucXJjOgorICAg
ICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmh0bWw6CisgICAgICAgICogaW5z
cGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuZm9y
QWxsUmVzb3VyY2VzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5yZXNvdXJjZUZvclVSTCk6CisK
IDIwMTAtMTItMjEgIE1haGVzaCBLdWxrYXJuaSAgPG1haGVzaC5rdWxrYXJuaUBub2tpYS5jb20+
CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQW5kcmVhcyBLbGluZy4KZGlmZiAtLWdpdCBhL1dlYkNv
cmUvV2ViQ29yZS5neXBpIGIvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggZmNhOGNmYy4uNDY2
ZDQ4OSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvV2ViQ29yZS9XZWJD
b3JlLmd5cGkKQEAgLTQ2NDcsNiArNDY0Nyw3IEBACiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zy
b250LWVuZC9LZXlib2FyZFNob3J0Y3V0LmpzJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJv
bnQtZW5kL01ldHJpY3NTaWRlYmFyUGFuZS5qcycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zy
b250LWVuZC9OZXR3b3JrSXRlbVZpZXcuanMnLAorICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9u
dC1lbmQvTmV0d29ya01hbmFnZXIuanMnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1l
bmQvTmV0d29ya1BhbmVsLmpzJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL09i
amVjdC5qcycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9PYmplY3RQcm9wZXJ0
aWVzU2VjdGlvbi5qcycsCkBAIC00NjYzLDkgKzQ2NjQsOSBAQAogICAgICAgICAgICAgJ2luc3Bl
Y3Rvci9mcm9udC1lbmQvUmVzb3VyY2UuanMnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9u
dC1lbmQvUmVzb3VyY2VDYXRlZ29yeS5qcycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250
LWVuZC9SZXNvdXJjZUNvb2tpZXNWaWV3LmpzJywKLSAgICAgICAgICAgICdpbnNwZWN0b3IvZnJv
bnQtZW5kL1Jlc291cmNlTWFuYWdlci5qcycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250
LWVuZC9SZXNvdXJjZUhlYWRlcnNWaWV3LmpzJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJv
bnQtZW5kL1Jlc291cmNlVGltaW5nVmlldy5qcycsCisgICAgICAgICAgICAnaW5zcGVjdG9yL2Zy
b250LWVuZC9SZXNvdXJjZVRyZWVNb2RlbC5qcycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zy
b250LWVuZC9SZXNvdXJjZVZpZXcuanMnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1l
bmQvUmVzb3VyY2VzUGFuZWwuanMnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQv
U2NvcGVDaGFpblNpZGViYXJQYW5lLmpzJywKZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS52
Y3Byb2ovV2ViQ29yZS52Y3Byb2ogYi9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNw
cm9qCmluZGV4IDMyM2U1MjYuLmVkZTE0YjIgMTAwNzU1Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS52
Y3Byb2ovV2ViQ29yZS52Y3Byb2oKKysrIGIvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3Jl
LnZjcHJvagpAQCAtNjU1NDksNiArNjU1NDksMTAgQEAKIAkJCQkJPgogCQkJCTwvRmlsZT4KIAkJ
CQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGluc3BlY3Rvclxmcm9udC1lbmRcTmV0d29y
a01hbmFnZXIuanMiCisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKIAkJCQkJUmVsYXRp
dmVQYXRoPSIuLlxpbnNwZWN0b3JcZnJvbnQtZW5kXG5ldHdvcmtQYW5lbC5jc3MiCiAJCQkJCT4K
IAkJCQk8L0ZpbGU+CkBAIC02NTYyNSwxNSArNjU2MjksMTUgQEAKIAkJCQkJPgogCQkJCTwvRmls
ZT4KIAkJCQk8RmlsZQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGluc3BlY3Rvclxmcm9udC1lbmRc
UmVzb3VyY2VNYW5hZ2VyLmpzIgorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGluc3BlY3Rvclxmcm9u
dC1lbmRcUmVzb3VyY2VzUGFuZWwuanMiCiAJCQkJCT4KIAkJCQk8L0ZpbGU+CiAJCQkJPEZpbGUK
LQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxpbnNwZWN0b3JcZnJvbnQtZW5kXFJlc291cmNlc1BhbmVs
LmpzIgorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGluc3BlY3Rvclxmcm9udC1lbmRcUmVzb3VyY2VU
aW1pbmdWaWV3LmpzIgogCQkJCQk+CiAJCQkJPC9GaWxlPgogCQkJCTxGaWxlCi0JCQkJCVJlbGF0
aXZlUGF0aD0iLi5caW5zcGVjdG9yXGZyb250LWVuZFxSZXNvdXJjZVRpbWluZ1ZpZXcuanMiCisJ
CQkJCVJlbGF0aXZlUGF0aD0iLi5caW5zcGVjdG9yXGZyb250LWVuZFxSZXNvdXJjZVRyZWVNb2Rl
bC5qcyIKIAkJCQkJPgogCQkJCTwvRmlsZT4KIAkJCQk8RmlsZQpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9pbnNwZWN0b3IvQ29kZUdlbmVyYXRvckluc3BlY3Rvci5wbSBiL1dlYkNvcmUvaW5zcGVjdG9y
L0NvZGVHZW5lcmF0b3JJbnNwZWN0b3IucG0KaW5kZXggZTk2MGVkNi4uOTVmN2U4ZiAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvQ29kZUdlbmVyYXRvckluc3BlY3Rvci5wbQorKysgYi9X
ZWJDb3JlL2luc3BlY3Rvci9Db2RlR2VuZXJhdG9ySW5zcGVjdG9yLnBtCkBAIC0zMyw2ICszMywy
MCBAQCAkdHlwZVRyYW5zZm9ybXsiUmVzb3VyY2VzIn0gPSB7CiAgICAgImhlYWRlciIgPT4gIklu
c3BlY3RvclJlc291cmNlQWdlbnQuaCIsCiAgICAgImRvbWFpbkFjY2Vzc29yIiA9PiAibV9pbnNw
ZWN0b3JDb250cm9sbGVyLT5tX3Jlc291cmNlQWdlbnQiLAogfTsKKyR0eXBlVHJhbnNmb3JteyJO
ZXR3b3JrIn0gPSB7CisgICAgImZvcndhcmQiID0+ICJJbnNwZWN0b3JSZXNvdXJjZUFnZW50IiwK
KyAgICAiaGVhZGVyIiA9PiAiSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5oIiwKKyAgICAiZG9tYWlu
QWNjZXNzb3IiID0+ICJtX2luc3BlY3RvckNvbnRyb2xsZXItPm1fcmVzb3VyY2VBZ2VudCIsCit9
OworJHR5cGVUcmFuc2Zvcm17IkRPTVN0b3JhZ2UifSA9IHsKKyAgICAiZm9yd2FyZEhlYWRlciIg
PT4gIkluc3BlY3RvckNvbnRyb2xsZXIuaCIsCisgICAgImRvbWFpbkFjY2Vzc29yIiA9PiAibV9p
bnNwZWN0b3JDb250cm9sbGVyIiwKK307CiskdHlwZVRyYW5zZm9ybXsiRGF0YWJhc2UifSA9IHsK
KyAgICAiZm9yd2FyZCIgPT4gIkluc3BlY3RvckJhY2tlbmQiLAorICAgICJoZWFkZXIiID0+ICJJ
bnNwZWN0b3JCYWNrZW5kLmgiLAorICAgICJkb21haW5BY2Nlc3NvciIgPT4gIm1faW5zcGVjdG9y
Q29udHJvbGxlci0+aW5zcGVjdG9yQmFja2VuZCgpIiwKK307CiAkdHlwZVRyYW5zZm9ybXsiRE9N
In0gPSB7CiAgICAgImZvcndhcmQiID0+ICJJbnNwZWN0b3JET01BZ2VudCIsCiAgICAgImhlYWRl
ciIgPT4gIkluc3BlY3RvckRPTUFnZW50LmgiLApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yLmlkbCBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5pZGwKaW5kZXgg
MTJlNzIzZC4uYmZmNTc0NCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
LmlkbAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuaWRsCkBAIC02Nyw2ICs2Nyw4
IEBAIG1vZHVsZSBjb3JlIHsKICAgICAgICAgW2RvbWFpbj1JbnNwZWN0b3JdIHZvaWQgaGlkZUZy
YW1lSGlnaGxpZ2h0KCk7CiAgICAgICAgIFtub3RpZnksIGRvbWFpbj1JbnNwZWN0b3JdIHZvaWQg
dXBkYXRlRm9jdXNlZE5vZGUob3V0IGxvbmcgbm9kZUlkKTsKIAorICAgICAgICBbZG9tYWluPUlu
c3BlY3Rvcl0gdm9pZCBzZXRFeHRyYUhlYWRlcnMoaW4gT2JqZWN0IGhlYWRlcnMpOworCiAgICAg
ICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vCiAgICAgICAgIC8vIENvbnNvbGUgQVBJCiAgICAgICAgIC8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vCkBAIC04Miw2NCArODQsNTcgQEAgbW9kdWxlIGNvcmUgewogICAgICAgICAvLyBS
ZXNvdXJjZXMgQVBJCiAgICAgICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCiAKLSAgICAgICAgLy8gRklYTUU6
IE5ldHdvcmsgZG9tYWluCi0gICAgICAgIFtub3RpZnksIGRvbWFpbj1SZXNvdXJjZXNdIHZvaWQg
aWRlbnRpZmllckZvckluaXRpYWxSZXF1ZXN0KG91dCBsb25nIGlkZW50aWZpZXIsIG91dCBTdHJp
bmcgdXJsLCBvdXQgT2JqZWN0IGxvYWRlciwgb3V0IFZhbHVlIGNhbGxTdGFjayk7Ci0gICAgICAg
IFtub3RpZnksIGRvbWFpbj1SZXNvdXJjZXNdIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KG91dCBsb25n
IGlkZW50aWZpZXIsIG91dCBkb3VibGUgdGltZSwgb3V0IE9iamVjdCByZXF1ZXN0LCBvdXQgT2Jq
ZWN0IHJlZGlyZWN0UmVzcG9uc2UpOwotICAgICAgICBbbm90aWZ5LCBkb21haW49UmVzb3VyY2Vz
XSB2b2lkIG1hcmtSZXNvdXJjZUFzQ2FjaGVkKG91dCBsb25nIGlkZW50aWZpZXIpOwotICAgICAg
ICBbbm90aWZ5LCBkb21haW49UmVzb3VyY2VzXSB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShvdXQg
bG9uZyBpZGVudGlmaWVyLCBvdXQgZG91YmxlIHRpbWUsIG91dCBTdHJpbmcgcmVzb3VyY2VUeXBl
LCBvdXQgT2JqZWN0IHJlc3BvbnNlKTsKLSAgICAgICAgW25vdGlmeSwgZG9tYWluPVJlc291cmNl
c10gdm9pZCBkaWRSZWNlaXZlQ29udGVudExlbmd0aChvdXQgbG9uZyBpZGVudGlmaWVyLCBvdXQg
ZG91YmxlIHRpbWUsIG91dCBsb25nIGxlbmd0aFJlY2VpdmVkKTsKLSAgICAgICAgW25vdGlmeSwg
ZG9tYWluPVJlc291cmNlc10gdm9pZCBkaWRGaW5pc2hMb2FkaW5nKG91dCBsb25nIGlkZW50aWZp
ZXIsIG91dCBkb3VibGUgZmluaXNoVGltZSk7Ci0gICAgICAgIFtub3RpZnksIGRvbWFpbj1SZXNv
dXJjZXNdIHZvaWQgZGlkRmFpbExvYWRpbmcob3V0IGxvbmcgaWRlbnRpZmllciwgb3V0IGRvdWJs
ZSB0aW1lLCBvdXQgU3RyaW5nIGxvY2FsaXplZERlc2NyaXB0aW9uKTsKLSAgICAgICAgW25vdGlm
eSwgZG9tYWluPVJlc291cmNlc10gdm9pZCBkaWRMb2FkUmVzb3VyY2VGcm9tTWVtb3J5Q2FjaGUo
b3V0IGRvdWJsZSB0aW1lLCBvdXQgT2JqZWN0IHJlc291cmNlKTsKLSAgICAgICAgW25vdGlmeSwg
ZG9tYWluPVJlc291cmNlc10gdm9pZCBzZXRJbml0aWFsQ29udGVudChvdXQgbG9uZyBpZGVudGlm
aWVyLCBvdXQgU3RyaW5nIHNvdXJjZVN0cmluZywgb3V0IFN0cmluZyB0eXBlKTsKLSAgICAgICAg
W25vdGlmeSwgZG9tYWluPVJlc291cmNlc10gdm9pZCBkaWRDb21taXRMb2FkRm9yRnJhbWUob3V0
IE9iamVjdCBmcmFtZSwgb3V0IE9iamVjdCBsb2FkZXIpOwotICAgICAgICBbbm90aWZ5LCBkb21h
aW49UmVzb3VyY2VzXSB2b2lkIGZyYW1lRGV0YWNoZWRGcm9tUGFyZW50KG91dCB1bnNpZ25lZCBs
b25nIGZyYW1lSWQpOworICAgICAgICBbbm90aWZ5LCBkb21haW49TmV0d29ya10gdm9pZCBpZGVu
dGlmaWVyRm9ySW5pdGlhbFJlcXVlc3Qob3V0IGxvbmcgaWRlbnRpZmllciwgb3V0IFN0cmluZyB1
cmwsIG91dCBPYmplY3QgbG9hZGVyLCBvdXQgVmFsdWUgY2FsbFN0YWNrKTsKKyAgICAgICAgW25v
dGlmeSwgZG9tYWluPU5ldHdvcmtdIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KG91dCBsb25nIGlkZW50
aWZpZXIsIG91dCBkb3VibGUgdGltZSwgb3V0IE9iamVjdCByZXF1ZXN0LCBvdXQgT2JqZWN0IHJl
ZGlyZWN0UmVzcG9uc2UpOworICAgICAgICBbbm90aWZ5LCBkb21haW49TmV0d29ya10gdm9pZCBt
YXJrUmVzb3VyY2VBc0NhY2hlZChvdXQgbG9uZyBpZGVudGlmaWVyKTsKKyAgICAgICAgW25vdGlm
eSwgZG9tYWluPU5ldHdvcmtdIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKG91dCBsb25nIGlkZW50
aWZpZXIsIG91dCBkb3VibGUgdGltZSwgb3V0IFN0cmluZyByZXNvdXJjZVR5cGUsIG91dCBPYmpl
Y3QgcmVzcG9uc2UpOworICAgICAgICBbbm90aWZ5LCBkb21haW49TmV0d29ya10gdm9pZCBkaWRS
ZWNlaXZlQ29udGVudExlbmd0aChvdXQgbG9uZyBpZGVudGlmaWVyLCBvdXQgZG91YmxlIHRpbWUs
IG91dCBsb25nIGxlbmd0aFJlY2VpdmVkKTsKKyAgICAgICAgW25vdGlmeSwgZG9tYWluPU5ldHdv
cmtdIHZvaWQgZGlkRmluaXNoTG9hZGluZyhvdXQgbG9uZyBpZGVudGlmaWVyLCBvdXQgZG91Ymxl
IGZpbmlzaFRpbWUpOworICAgICAgICBbbm90aWZ5LCBkb21haW49TmV0d29ya10gdm9pZCBkaWRG
YWlsTG9hZGluZyhvdXQgbG9uZyBpZGVudGlmaWVyLCBvdXQgZG91YmxlIHRpbWUsIG91dCBTdHJp
bmcgbG9jYWxpemVkRGVzY3JpcHRpb24pOworICAgICAgICBbbm90aWZ5LCBkb21haW49TmV0d29y
a10gdm9pZCBkaWRMb2FkUmVzb3VyY2VGcm9tTWVtb3J5Q2FjaGUob3V0IGRvdWJsZSB0aW1lLCBv
dXQgT2JqZWN0IHJlc291cmNlKTsKKyAgICAgICAgW25vdGlmeSwgZG9tYWluPU5ldHdvcmtdIHZv
aWQgc2V0SW5pdGlhbENvbnRlbnQob3V0IGxvbmcgaWRlbnRpZmllciwgb3V0IFN0cmluZyBzb3Vy
Y2VTdHJpbmcsIG91dCBTdHJpbmcgdHlwZSk7CisgICAgICAgIFtub3RpZnksIGRvbWFpbj1OZXR3
b3JrXSB2b2lkIGRpZENvbW1pdExvYWRGb3JGcmFtZShvdXQgT2JqZWN0IGZyYW1lLCBvdXQgT2Jq
ZWN0IGxvYWRlcik7CisgICAgICAgIFtub3RpZnksIGRvbWFpbj1OZXR3b3JrXSB2b2lkIGZyYW1l
RGV0YWNoZWRGcm9tUGFyZW50KG91dCB1bnNpZ25lZCBsb25nIGZyYW1lSWQpOwogICAgICAgIAot
ICAgICAgICBbZG9tYWluPUluc3BlY3Rvcl0gdm9pZCBzZXRFeHRyYUhlYWRlcnMoaW4gT2JqZWN0
IGhlYWRlcnMpOworICAgICAgICBbZG9tYWluPU5ldHdvcmtdIHZvaWQgY2FjaGVkUmVzb3VyY2Vz
KG91dCBPYmplY3QgcmVzb3VyY2VzKTsKKyAgICAgICAgW2RvbWFpbj1OZXR3b3JrXSB2b2lkIHJl
c291cmNlQ29udGVudChpbiB1bnNpZ25lZCBsb25nIGZyYW1lSWQsIGluIFN0cmluZyB1cmwsIGlu
IGJvb2xlYW4gYmFzZTY0RW5jb2RlLCBvdXQgU3RyaW5nIGNvbnRlbnQpOwogCi0gICAgICAgIFtk
b21haW49UmVzb3VyY2VzXSB2b2lkIGNhY2hlZFJlc291cmNlcyhvdXQgT2JqZWN0IHJlc291cmNl
cyk7Ci0gICAgICAgIFtkb21haW49UmVzb3VyY2VzXSB2b2lkIHJlc291cmNlQ29udGVudChpbiB1
bnNpZ25lZCBsb25nIGZyYW1lSWQsIGluIFN0cmluZyB1cmwsIGluIGJvb2xlYW4gYmFzZTY0RW5j
b2RlLCBvdXQgU3RyaW5nIGNvbnRlbnQpOwotCi0gICAgICAgIFtub3RpZnksIGRvbWFpbj1SZXNv
dXJjZXNdIHZvaWQgZGlkQ3JlYXRlV2ViU29ja2V0KG91dCB1bnNpZ25lZCBsb25nIGlkZW50aWZp
ZXIsIG91dCBTdHJpbmcgcmVxdWVzdFVSTCk7Ci0gICAgICAgIFtub3RpZnksIGRvbWFpbj1SZXNv
dXJjZXNdIHZvaWQgd2lsbFNlbmRXZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0KG91dCB1bnNpZ25l
ZCBsb25nIGlkZW50aWZpZXIsIG91dCBkb3VibGUgdGltZSwgb3V0IE9iamVjdCByZXF1ZXN0KTsK
LSAgICAgICAgW25vdGlmeSwgZG9tYWluPVJlc291cmNlc10gdm9pZCBkaWRSZWNlaXZlV2ViU29j
a2V0SGFuZHNoYWtlUmVzcG9uc2Uob3V0IHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgb3V0IGRv
dWJsZSB0aW1lLCBvdXQgT2JqZWN0IHJlc3BvbnNlKTsKLSAgICAgICAgW25vdGlmeSwgZG9tYWlu
PVJlc291cmNlc10gdm9pZCBkaWRDbG9zZVdlYlNvY2tldChvdXQgdW5zaWduZWQgbG9uZyBpZGVu
dGlmaWVyLCBvdXQgZG91YmxlIHRpbWUpOworICAgICAgICBbbm90aWZ5LCBkb21haW49TmV0d29y
a10gdm9pZCBkaWRDcmVhdGVXZWJTb2NrZXQob3V0IHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwg
b3V0IFN0cmluZyByZXF1ZXN0VVJMKTsKKyAgICAgICAgW25vdGlmeSwgZG9tYWluPU5ldHdvcmtd
IHZvaWQgd2lsbFNlbmRXZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0KG91dCB1bnNpZ25lZCBsb25n
IGlkZW50aWZpZXIsIG91dCBkb3VibGUgdGltZSwgb3V0IE9iamVjdCByZXF1ZXN0KTsKKyAgICAg
ICAgW25vdGlmeSwgZG9tYWluPU5ldHdvcmtdIHZvaWQgZGlkUmVjZWl2ZVdlYlNvY2tldEhhbmRz
aGFrZVJlc3BvbnNlKG91dCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIG91dCBkb3VibGUgdGlt
ZSwgb3V0IE9iamVjdCByZXNwb25zZSk7CisgICAgICAgIFtub3RpZnksIGRvbWFpbj1OZXR3b3Jr
XSB2b2lkIGRpZENsb3NlV2ViU29ja2V0KG91dCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIG91
dCBkb3VibGUgdGltZSk7CiAKICAgICAgICAgLy8gRklYTUU6IEludHJvZHVjZSBuZXcgU3RvcmFn
ZURvbWFpbi4KICAgICAgICAgW2RvbWFpbj1JbnNwZWN0b3JdIHZvaWQgZ2V0Q29va2llcyhvdXQg
QXJyYXkgY29va2llcywgb3V0IFN0cmluZyBjb29raWVzU3RyaW5nKTsKICAgICAgICAgW2RvbWFp
bj1JbnNwZWN0b3JdIHZvaWQgZGVsZXRlQ29va2llKGluIFN0cmluZyBjb29raWVOYW1lLCBpbiBT
dHJpbmcgZG9tYWluKTsKICNpZiBkZWZpbmVkKEVOQUJMRV9EQVRBQkFTRSkgJiYgRU5BQkxFX0RB
VEFCQVNFCi0gICAgICAgIFtub3RpZnksIGRvbWFpbj1SZXNvdXJjZXNdIHZvaWQgYWRkRGF0YWJh
c2Uob3V0IE9iamVjdCBkYXRhYmFzZSk7Ci0gICAgICAgIFtub3RpZnksIGRvbWFpbj1SZXNvdXJj
ZXNdIHZvaWQgc2VsZWN0RGF0YWJhc2Uob3V0IGludCBkYXRhYmFzZUlkKTsKLSAgICAgICAgW2Rv
bWFpbj1CYWNrZW5kXSB2b2lkIGdldERhdGFiYXNlVGFibGVOYW1lcyhpbiBsb25nIGRhdGFiYXNl
SWQsIG91dCBBcnJheSB0YWJsZU5hbWVzKTsKLSAgICAgICAgW2RvbWFpbj1CYWNrZW5kXSB2b2lk
IGV4ZWN1dGVTUUwoaW4gbG9uZyBkYXRhYmFzZUlkLCBpbiBTdHJpbmcgcXVlcnksIG91dCBib29s
ZWFuIHN1Y2Nlc3MsIG91dCBsb25nIHRyYW5zYWN0aW9uSWQpOwotICAgICAgICBbbm90aWZ5LCBk
b21haW49UmVzb3VyY2VzXSB2b2lkIHNxbFRyYW5zYWN0aW9uU3VjY2VlZGVkKG91dCBsb25nIHRy
YW5zYWN0aW9uSWQsIG91dCBWYWx1ZSBjb2x1bW5OYW1lcywgb3V0IFZhbHVlIHZhbHVlcyk7Ci0g
ICAgICAgIFtub3RpZnksIGRvbWFpbj1SZXNvdXJjZXNdIHZvaWQgc3FsVHJhbnNhY3Rpb25GYWls
ZWQob3V0IGxvbmcgdHJhbnNhY3Rpb25JZCwgb3V0IFZhbHVlIHNxbEVycm9yKTsKKyAgICAgICAg
W25vdGlmeSwgZG9tYWluPURhdGFiYXNlXSB2b2lkIGFkZERhdGFiYXNlKG91dCBPYmplY3QgZGF0
YWJhc2UpOworICAgICAgICBbbm90aWZ5LCBkb21haW49RGF0YWJhc2VdIHZvaWQgc2VsZWN0RGF0
YWJhc2Uob3V0IGludCBkYXRhYmFzZUlkKTsKKyAgICAgICAgW2RvbWFpbj1EYXRhYmFzZV0gdm9p
ZCBnZXREYXRhYmFzZVRhYmxlTmFtZXMoaW4gbG9uZyBkYXRhYmFzZUlkLCBvdXQgQXJyYXkgdGFi
bGVOYW1lcyk7CisgICAgICAgIFtkb21haW49RGF0YWJhc2VdIHZvaWQgZXhlY3V0ZVNRTChpbiBs
b25nIGRhdGFiYXNlSWQsIGluIFN0cmluZyBxdWVyeSwgb3V0IGJvb2xlYW4gc3VjY2Vzcywgb3V0
IGxvbmcgdHJhbnNhY3Rpb25JZCk7CisgICAgICAgIFtub3RpZnksIGRvbWFpbj1EYXRhYmFzZV0g
dm9pZCBzcWxUcmFuc2FjdGlvblN1Y2NlZWRlZChvdXQgbG9uZyB0cmFuc2FjdGlvbklkLCBvdXQg
VmFsdWUgY29sdW1uTmFtZXMsIG91dCBWYWx1ZSB2YWx1ZXMpOworICAgICAgICBbbm90aWZ5LCBk
b21haW49RGF0YWJhc2VdIHZvaWQgc3FsVHJhbnNhY3Rpb25GYWlsZWQob3V0IGxvbmcgdHJhbnNh
Y3Rpb25JZCwgb3V0IFZhbHVlIHNxbEVycm9yKTsKICNlbmRpZgogI2lmIGRlZmluZWQoRU5BQkxF
X0RPTV9TVE9SQUdFKSAmJiBFTkFCTEVfRE9NX1NUT1JBR0UKLSAgICAgICAgW2RvbWFpbj1JbnNw
ZWN0b3JdIHZvaWQgZ2V0RE9NU3RvcmFnZUVudHJpZXMoaW4gbG9uZyBzdG9yYWdlSWQsIG91dCBB
cnJheSBlbnRyaWVzKTsKLSAgICAgICAgW2RvbWFpbj1JbnNwZWN0b3JdIHZvaWQgc2V0RE9NU3Rv
cmFnZUl0ZW0oaW4gbG9uZyBzdG9yYWdlSWQsIGluIFN0cmluZyBrZXksIGluIFN0cmluZyB2YWx1
ZSwgb3V0IGJvb2xlYW4gc3VjY2Vzcyk7Ci0gICAgICAgIFtkb21haW49SW5zcGVjdG9yXSB2b2lk
IHJlbW92ZURPTVN0b3JhZ2VJdGVtKGluIGxvbmcgc3RvcmFnZUlkLCBpbiBTdHJpbmcga2V5LCBv
dXQgYm9vbGVhbiBzdWNjZXNzKTsKLSAgICAgICAgLy8gRklYTUU6IG51a2UgdGhlc2UgZnJvbSBy
ZXNvdXJjZSBtYW5hZ2VyIGFzYXAsIGRpc3BhdGNoIG9uIFN0b3JhZ2VEb21haW4uCi0gICAgICAg
IFtub3RpZnksIGRvbWFpbj1SZXNvdXJjZXNdIHZvaWQgYWRkRE9NU3RvcmFnZShvdXQgT2JqZWN0
IHN0b3JhZ2UpOwotICAgICAgICBbbm90aWZ5LCBkb21haW49UmVzb3VyY2VzXSB2b2lkIHVwZGF0
ZURPTVN0b3JhZ2Uob3V0IGludCBzdG9yYWdlSWQpOwotICAgICAgICBbbm90aWZ5LCBkb21haW49
UmVzb3VyY2VzXSB2b2lkIHNlbGVjdERPTVN0b3JhZ2Uob3V0IGludCBzdG9yYWdlSWQpOwotI2Vu
ZGlmCi0jaWYgZGVmaW5lZChFTkFCTEVfT0ZGTElORV9XRUJfQVBQTElDQVRJT05TKSAmJiBFTkFC
TEVfT0ZGTElORV9XRUJfQVBQTElDQVRJT05TCi0gICAgICAgIFtub3RpZnksIGRvbWFpbj1SZXNv
dXJjZXNdIHZvaWQgdXBkYXRlQXBwbGljYXRpb25DYWNoZVN0YXR1cyhvdXQgaW50IHN0YXR1cyk7
Ci0gICAgICAgIFtub3RpZnksIGRvbWFpbj1SZXNvdXJjZXNdIHZvaWQgdXBkYXRlTmV0d29ya1N0
YXRlKG91dCBib29sZWFuIGlzTm93T25saW5lKTsKKyAgICAgICAgW2RvbWFpbj1ET01TdG9yYWdl
XSB2b2lkIGdldERPTVN0b3JhZ2VFbnRyaWVzKGluIGxvbmcgc3RvcmFnZUlkLCBvdXQgQXJyYXkg
ZW50cmllcyk7CisgICAgICAgIFtkb21haW49RE9NU3RvcmFnZV0gdm9pZCBzZXRET01TdG9yYWdl
SXRlbShpbiBsb25nIHN0b3JhZ2VJZCwgaW4gU3RyaW5nIGtleSwgaW4gU3RyaW5nIHZhbHVlLCBv
dXQgYm9vbGVhbiBzdWNjZXNzKTsKKyAgICAgICAgW2RvbWFpbj1ET01TdG9yYWdlXSB2b2lkIHJl
bW92ZURPTVN0b3JhZ2VJdGVtKGluIGxvbmcgc3RvcmFnZUlkLCBpbiBTdHJpbmcga2V5LCBvdXQg
Ym9vbGVhbiBzdWNjZXNzKTsKKyAgICAgICAgW25vdGlmeSwgZG9tYWluPURPTVN0b3JhZ2VdIHZv
aWQgYWRkRE9NU3RvcmFnZShvdXQgT2JqZWN0IHN0b3JhZ2UpOworICAgICAgICBbbm90aWZ5LCBk
b21haW49RE9NU3RvcmFnZV0gdm9pZCB1cGRhdGVET01TdG9yYWdlKG91dCBpbnQgc3RvcmFnZUlk
KTsKKyAgICAgICAgW25vdGlmeSwgZG9tYWluPURPTVN0b3JhZ2VdIHZvaWQgc2VsZWN0RE9NU3Rv
cmFnZShvdXQgaW50IHN0b3JhZ2VJZCk7CiAjZW5kaWYKICNpZiBkZWZpbmVkKEVOQUJMRV9PRkZM
SU5FX1dFQl9BUFBMSUNBVElPTlMpICYmIEVOQUJMRV9PRkZMSU5FX1dFQl9BUFBMSUNBVElPTlMK
ICAgICAgICAgW2RvbWFpbj1BcHBsaWNhdGlvbkNhY2hlXSB2b2lkIGdldEFwcGxpY2F0aW9uQ2Fj
aGVzKG91dCBWYWx1ZSBhcHBsaWNhdGlvbkNhY2hlcyk7CisgICAgICAgIFtub3RpZnksIGRvbWFp
bj1BcHBsaWNhdGlvbkNhY2hlXSB2b2lkIHVwZGF0ZUFwcGxpY2F0aW9uQ2FjaGVTdGF0dXMob3V0
IGludCBzdGF0dXMpOworICAgICAgICBbbm90aWZ5LCBkb21haW49QXBwbGljYXRpb25DYWNoZV0g
dm9pZCB1cGRhdGVOZXR3b3JrU3RhdGUob3V0IGJvb2xlYW4gaXNOb3dPbmxpbmUpOwogI2VuZGlm
CiAjaWYgZGVmaW5lZChFTkFCTEVfRklMRV9TWVNURU0pICYmIEVOQUJMRV9GSUxFX1NZU1RFTQog
ICAgICAgICBbZG9tYWluPUZpbGVTeXN0ZW1dIHZvaWQgZ2V0RmlsZVN5c3RlbVBhdGhBc3luYyhp
biB1bnNpZ25lZCBpbnQgdHlwZSwgaW4gU3RyaW5nIG9yaWdpbik7CiAgICAgICAgIFtkb21haW49
RmlsZVN5c3RlbV0gdm9pZCByZXZlYWxGb2xkZXJJbk9TKGluIFN0cmluZyBwYXRoKTsKIAotICAg
ICAgICAvLyBGSVhNRTogbnVrZSB0aGVzZSBmcm9tIHJlc291cmNlIG1hbmFnZXIgYXNhcCwgZGlz
cGF0Y2ggb24gRmlsZVN5c3RlbS4KLSAgICAgICAgW25vdGlmeSwgZG9tYWluPVJlc291cmNlc10g
dm9pZCBkaWRHZXRGaWxlU3lzdGVtUGF0aChvdXQgU3RyaW5nIHJvb3QsIG91dCBpbnQgdHlwZSwg
b3V0IFN0cmluZyBvcmlnaW4pOwotICAgICAgICBbbm90aWZ5LCBkb21haW49UmVzb3VyY2VzXSB2
b2lkIGRpZEdldEZpbGVTeXN0ZW1FcnJvcihvdXQgaW50IHR5cGUsIG91dCBTdHJpbmcgb3JpZ2lu
KTsKLSAgICAgICAgW25vdGlmeSwgZG9tYWluPVJlc291cmNlc10gdm9pZCBkaWRHZXRGaWxlU3lz
dGVtRGlzYWJsZWQoKTsKKyAgICAgICAgW25vdGlmeSwgZG9tYWluPUZpbGVTeXN0ZW1dIHZvaWQg
ZGlkR2V0RmlsZVN5c3RlbVBhdGgob3V0IFN0cmluZyByb290LCBvdXQgaW50IHR5cGUsIG91dCBT
dHJpbmcgb3JpZ2luKTsKKyAgICAgICAgW25vdGlmeSwgZG9tYWluPUZpbGVTeXN0ZW1dIHZvaWQg
ZGlkR2V0RmlsZVN5c3RlbUVycm9yKG91dCBpbnQgdHlwZSwgb3V0IFN0cmluZyBvcmlnaW4pOwor
ICAgICAgICBbbm90aWZ5LCBkb21haW49RmlsZVN5c3RlbV0gdm9pZCBkaWRHZXRGaWxlU3lzdGVt
RGlzYWJsZWQoKTsKICNlbmRpZgogCiAgICAgICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCmRpZmYgLS1naXQg
YS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQXVkaXRSdWxlcy5qcyBiL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9BdWRpdFJ1bGVzLmpzCmluZGV4IGNkMWIzNGYuLjQ1NDQ0MDUgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9BdWRpdFJ1bGVzLmpzCisrKyBi
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9BdWRpdFJ1bGVzLmpzCkBAIC0zMjYsNyArMzI2
LDcgQEAgV2ViSW5zcGVjdG9yLkF1ZGl0UnVsZXMuVW51c2VkQ3NzUnVsZS5wcm90b3R5cGUgPSB7
CiAgICAgICAgICAgICAgICAgICAgIGlmICghdW51c2VkUnVsZXMubGVuZ3RoKQogICAgICAgICAg
ICAgICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgICAgICAgICAgICAgdmFyIHJlc291
cmNlID0gV2ViSW5zcGVjdG9yLnJlc291cmNlTWFuYWdlci5yZXNvdXJjZUZvclVSTChzdHlsZVNo
ZWV0LnNvdXJjZVVSTCk7CisgICAgICAgICAgICAgICAgICAgIHZhciByZXNvdXJjZSA9IFdlYklu
c3BlY3Rvci5uZXR3b3JrTWFuYWdlci5yZXNvdXJjZUZvclVSTChzdHlsZVNoZWV0LnNvdXJjZVVS
TCk7CiAgICAgICAgICAgICAgICAgICAgIHZhciBpc0lubGluZUJsb2NrID0gcmVzb3VyY2UgJiYg
cmVzb3VyY2UudHlwZSA9PSBXZWJJbnNwZWN0b3IuUmVzb3VyY2UuVHlwZS5Eb2N1bWVudDsKICAg
ICAgICAgICAgICAgICAgICAgdmFyIHVybCA9ICFpc0lubGluZUJsb2NrID8gV2ViSW5zcGVjdG9y
LkF1ZGl0UnVsZVJlc3VsdC5saW5raWZ5RGlzcGxheU5hbWUoc3R5bGVTaGVldC5zb3VyY2VVUkwp
IDogU3RyaW5nLnNwcmludGYoIklubGluZSBibG9jayAjJWQiLCArK2lubGluZUJsb2NrT3JkaW5h
bCk7CiAgICAgICAgICAgICAgICAgICAgIHZhciBwY3RVbnVzZWQgPSBNYXRoLnJvdW5kKDEwMCAq
IHVudXNlZFN0eWxlc2hlZXRTaXplIC8gc3R5bGVzaGVldFNpemUpOwpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NTU1N0eWxlTW9kZWwuanMgYi9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvQ1NTU3R5bGVNb2RlbC5qcwppbmRleCAyZDE1NTgyLi5lNGE3YTI2IDEw
MDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ1NTU3R5bGVNb2RlbC5qcwor
KysgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ1NTU3R5bGVNb2RlbC5qcwpAQCAtMTYy
LDcgKzE2Miw3IEBAIFdlYkluc3BlY3Rvci5DU1NTdHlsZU1vZGVsLnByb3RvdHlwZSA9IHsKIAog
ICAgICAgICBmdW5jdGlvbiBjYWxsYmFjayhocmVmLCBjb250ZW50KQogICAgICAgICB7Ci0gICAg
ICAgICAgICB2YXIgcmVzb3VyY2UgPSBXZWJJbnNwZWN0b3IucmVzb3VyY2VNYW5hZ2VyLnJlc291
cmNlRm9yVVJMKGhyZWYpOworICAgICAgICAgICAgdmFyIHJlc291cmNlID0gV2ViSW5zcGVjdG9y
Lm5ldHdvcmtNYW5hZ2VyLnJlc291cmNlRm9yVVJMKGhyZWYpOwogICAgICAgICAgICAgaWYgKHJl
c291cmNlICYmIHJlc291cmNlLnR5cGUgPT09IFdlYkluc3BlY3Rvci5SZXNvdXJjZS5UeXBlLlN0
eWxlc2hlZXQpCiAgICAgICAgICAgICAgICAgcmVzb3VyY2Uuc2V0Q29udGVudChjb250ZW50LCB0
aGlzLl9vblJldmVydC5iaW5kKHRoaXMsIHN0eWxlU2hlZXRJZCkpOwogICAgICAgICB9CmRpZmYg
LS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ29uc29sZVZpZXcuanMgYi9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ29uc29sZVZpZXcuanMKaW5kZXggMDNmZTE0YS4uZmRi
MDliZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NvbnNvbGVWaWV3
LmpzCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Db25zb2xlVmlldy5qcwpAQCAt
MjE4LDcgKzIxOCw3IEBAIFdlYkluc3BlY3Rvci5Db25zb2xlVmlldy5wcm90b3R5cGUgPSB7CiAK
ICAgICAgICAgaWYgKG1zZyBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZSAm
JiAhKG1zZyBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5Db25zb2xlQ29tbWFuZFJlc3VsdCkpIHsK
ICAgICAgICAgICAgIHRoaXMuX2luY3JlbWVudEVycm9yV2FybmluZ0NvdW50KG1zZyk7Ci0gICAg
ICAgICAgICBXZWJJbnNwZWN0b3IucmVzb3VyY2VNYW5hZ2VyLmFkZENvbnNvbGVNZXNzYWdlKG1z
Zyk7CisgICAgICAgICAgICBXZWJJbnNwZWN0b3IubmV0d29ya01hbmFnZXIuYWRkQ29uc29sZU1l
c3NhZ2UobXNnKTsKICAgICAgICAgICAgIHRoaXMuY29tbWFuZFNpbmNlUHJldmlvdXNNZXNzYWdl
ID0gZmFsc2U7CiAgICAgICAgICAgICB0aGlzLnByZXZpb3VzTWVzc2FnZSA9IG1zZzsKICAgICAg
ICAgfSBlbHNlIGlmIChtc2cgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuQ29uc29sZUNvbW1hbmQp
IHsKQEAgLTI4NSw3ICsyODUsNyBAQCBXZWJJbnNwZWN0b3IuQ29uc29sZVZpZXcucHJvdG90eXBl
ID0gewogCiAgICAgY2xlYXJNZXNzYWdlczogZnVuY3Rpb24oKQogICAgIHsKLSAgICAgICAgV2Vi
SW5zcGVjdG9yLnJlc291cmNlTWFuYWdlci5jbGVhckNvbnNvbGVNZXNzYWdlcygpOworICAgICAg
ICBXZWJJbnNwZWN0b3IubmV0d29ya01hbmFnZXIuY2xlYXJDb25zb2xlTWVzc2FnZXMoKTsKIAog
ICAgICAgICB0aGlzLm1lc3NhZ2VzID0gW107CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9ET01BZ2VudC5qcyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9E
T01BZ2VudC5qcwppbmRleCA0MzJhYzNmLi44OTgyMmEzIDEwMDY0NAotLS0gYS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvRE9NQWdlbnQuanMKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL0RPTUFnZW50LmpzCkBAIC00NzEsNiArNDcxLDE4IEBAIFdlYkluc3BlY3Rvci5BcHBs
aWNhdGlvbkNhY2hlLmdldEFwcGxpY2F0aW9uQ2FjaGVzQXN5bmMgPSBmdW5jdGlvbihjYWxsYmFj
aykKICAgICBJbnNwZWN0b3JCYWNrZW5kLmdldEFwcGxpY2F0aW9uQ2FjaGVzKG15Y2FsbGJhY2sp
OwogfQogCitXZWJJbnNwZWN0b3IuQXBwbGljYXRpb25DYWNoZS51cGRhdGVBcHBsaWNhdGlvbkNh
Y2hlU3RhdHVzID0gZnVuY3Rpb24oc3RhdHVzKQoreworICAgIFdlYkluc3BlY3Rvci5wYW5lbHMu
cmVzb3VyY2VzLnVwZGF0ZUFwcGxpY2F0aW9uQ2FjaGVTdGF0dXMoc3RhdHVzKTsKK30KKworV2Vi
SW5zcGVjdG9yLkFwcGxpY2F0aW9uQ2FjaGUudXBkYXRlTmV0d29ya1N0YXRlID0gZnVuY3Rpb24o
aXNOb3dPbmxpbmUpCit7CisgICAgV2ViSW5zcGVjdG9yLnBhbmVscy5yZXNvdXJjZXMudXBkYXRl
TmV0d29ya1N0YXRlKGlzTm93T25saW5lKTsKK30KKworSW5zcGVjdG9yQmFja2VuZC5yZWdpc3Rl
ckRvbWFpbkRpc3BhdGNoZXIoIkFwcGxpY2F0aW9uQ2FjaGUiLCBXZWJJbnNwZWN0b3IuQXBwbGlj
YXRpb25DYWNoZSk7CisKIFdlYkluc3BlY3Rvci5Db29raWVzID0ge30KIAogV2ViSW5zcGVjdG9y
LkNvb2tpZXMuZ2V0Q29va2llc0FzeW5jID0gZnVuY3Rpb24oY2FsbGJhY2spCmRpZmYgLS1naXQg
YS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRE9NU3RvcmFnZS5qcyBiL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9ET01TdG9yYWdlLmpzCmluZGV4IDM3YmU4ZjYuLmFhMTRhOWMgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9ET01TdG9yYWdlLmpzCisrKyBi
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9ET01TdG9yYWdlLmpzCkBAIC03MCwzICs3MCwy
NiBAQCBXZWJJbnNwZWN0b3IuRE9NU3RvcmFnZS5wcm90b3R5cGUgPSB7CiAgICAgfQogfQogCitX
ZWJJbnNwZWN0b3IuRE9NU3RvcmFnZS5hZGRET01TdG9yYWdlID0gZnVuY3Rpb24ocGF5bG9hZCkK
K3sKKyAgICBpZiAoIVdlYkluc3BlY3Rvci5wYW5lbHMucmVzb3VyY2VzKQorICAgICAgICByZXR1
cm47CisgICAgdmFyIGRvbVN0b3JhZ2UgPSBuZXcgV2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2UoCisg
ICAgICAgIHBheWxvYWQuaWQsCisgICAgICAgIHBheWxvYWQuaG9zdCwKKyAgICAgICAgcGF5bG9h
ZC5pc0xvY2FsU3RvcmFnZSk7CisgICAgV2ViSW5zcGVjdG9yLnBhbmVscy5yZXNvdXJjZXMuYWRk
RE9NU3RvcmFnZShkb21TdG9yYWdlKTsKK30KKworV2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2Uuc2Vs
ZWN0RE9NU3RvcmFnZSA9IGZ1bmN0aW9uKG8pCit7CisgICAgV2ViSW5zcGVjdG9yLnNob3dQYW5l
bCgicmVzb3VyY2VzIik7CisgICAgV2ViSW5zcGVjdG9yLnBhbmVscy5yZXNvdXJjZXMuc2VsZWN0
RE9NU3RvcmFnZShvKTsKK30KKworV2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2UudXBkYXRlRE9NU3Rv
cmFnZSA9IGZ1bmN0aW9uKHN0b3JhZ2VJZCkKK3sKKyAgICBXZWJJbnNwZWN0b3IucGFuZWxzLnJl
c291cmNlcy51cGRhdGVET01TdG9yYWdlKHN0b3JhZ2VJZCk7Cit9CisKK0luc3BlY3RvckJhY2tl
bmQucmVnaXN0ZXJEb21haW5EaXNwYXRjaGVyKCJET01TdG9yYWdlIiwgV2ViSW5zcGVjdG9yLkRP
TVN0b3JhZ2UpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RhdGFi
YXNlLmpzIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RhdGFiYXNlLmpzCmluZGV4IDdh
YWM3ZDEuLjBiMDAzMzAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9E
YXRhYmFzZS5qcworKysgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRGF0YWJhc2UuanMK
QEAgLTM0LDggKzM0LDcgQEAgV2ViSW5zcGVjdG9yLkRhdGFiYXNlID0gZnVuY3Rpb24oaWQsIGRv
bWFpbiwgbmFtZSwgdmVyc2lvbikKICAgICB0aGlzLl92ZXJzaW9uID0gdmVyc2lvbjsKIH0KIAot
V2ViSW5zcGVjdG9yLkRhdGFiYXNlLnN1Y2Nlc3NDYWxsYmFja3MgPSB7fTsKLVdlYkluc3BlY3Rv
ci5EYXRhYmFzZS5lcnJvckNhbGxiYWNrcyA9IHt9OworV2ViSW5zcGVjdG9yLkRhdGFiYXNlLl9j
YWxsYmFja3MgPSB7fTsKIAogV2ViSW5zcGVjdG9yLkRhdGFiYXNlLnByb3RvdHlwZSA9IHsKICAg
ICBnZXQgaWQoKQpAQCAtOTUsOSArOTQsNTAgQEAgV2ViSW5zcGVjdG9yLkRhdGFiYXNlLnByb3Rv
dHlwZSA9IHsKICAgICAgICAgICAgICAgICBvbkVycm9yKFdlYkluc3BlY3Rvci5VSVN0cmluZygi
RGF0YWJhc2Ugbm90IGZvdW5kLiIpKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICBXZWJJbnNwZWN0b3IuRGF0YWJhc2Uuc3VjY2Vzc0NhbGxiYWNr
c1t0cmFuc2FjdGlvbklkXSA9IG9uU3VjY2VzczsKLSAgICAgICAgICAgIFdlYkluc3BlY3Rvci5E
YXRhYmFzZS5lcnJvckNhbGxiYWNrc1t0cmFuc2FjdGlvbklkXSA9IG9uRXJyb3I7CisgICAgICAg
ICAgICBXZWJJbnNwZWN0b3IuRGF0YWJhc2UuX2NhbGxiYWNrc1t0cmFuc2FjdGlvbklkXSA9IHsi
b25TdWNjZXNzIjogb25TdWNjZXNzLCAib25FcnJvciI6IG9uRXJyb3J9OwogICAgICAgICB9CiAg
ICAgICAgIEluc3BlY3RvckJhY2tlbmQuZXhlY3V0ZVNRTCh0aGlzLl9pZCwgcXVlcnksIGNhbGxi
YWNrKTsKICAgICB9CiB9CisKK1dlYkluc3BlY3Rvci5EYXRhYmFzZS5hZGREYXRhYmFzZSA9IGZ1
bmN0aW9uKHBheWxvYWQpCit7CisgICAgaWYgKCFXZWJJbnNwZWN0b3IucGFuZWxzLnJlc291cmNl
cykKKyAgICAgICAgcmV0dXJuOworICAgIHZhciBkYXRhYmFzZSA9IG5ldyBXZWJJbnNwZWN0b3Iu
RGF0YWJhc2UoCisgICAgICAgIHBheWxvYWQuaWQsCisgICAgICAgIHBheWxvYWQuZG9tYWluLAor
ICAgICAgICBwYXlsb2FkLm5hbWUsCisgICAgICAgIHBheWxvYWQudmVyc2lvbik7CisgICAgV2Vi
SW5zcGVjdG9yLnBhbmVscy5yZXNvdXJjZXMuYWRkRGF0YWJhc2UoZGF0YWJhc2UpOworfQorCitX
ZWJJbnNwZWN0b3IuRGF0YWJhc2Uuc2VsZWN0RGF0YWJhc2UgPSBmdW5jdGlvbihvKQoreworICAg
IFdlYkluc3BlY3Rvci5zaG93UGFuZWwoInJlc291cmNlcyIpOworICAgIFdlYkluc3BlY3Rvci5w
YW5lbHMucmVzb3VyY2VzLnNlbGVjdERhdGFiYXNlKG8pOworfQorCitXZWJJbnNwZWN0b3IuRGF0
YWJhc2Uuc3FsVHJhbnNhY3Rpb25TdWNjZWVkZWQgPSBmdW5jdGlvbih0cmFuc2FjdGlvbklkLCBj
b2x1bW5OYW1lcywgdmFsdWVzKQoreworICAgIGlmICghV2ViSW5zcGVjdG9yLkRhdGFiYXNlLl9j
YWxsYmFja3NbdHJhbnNhY3Rpb25JZF0pCisgICAgICAgIHJldHVybjsKKworICAgIHZhciBjYWxs
YmFjayA9IFdlYkluc3BlY3Rvci5EYXRhYmFzZS5fY2FsbGJhY2tzW3RyYW5zYWN0aW9uSWRdLm9u
U3VjY2VzczsKKyAgICBkZWxldGUgV2ViSW5zcGVjdG9yLkRhdGFiYXNlLl9jYWxsYmFja3NbdHJh
bnNhY3Rpb25JZF07CisgICAgaWYgKGNhbGxiYWNrKQorICAgICAgICBjYWxsYmFjayhjb2x1bW5O
YW1lcywgdmFsdWVzKTsKK30KKworV2ViSW5zcGVjdG9yLkRhdGFiYXNlLnNxbFRyYW5zYWN0aW9u
RmFpbGVkID0gZnVuY3Rpb24odHJhbnNhY3Rpb25JZCwgZXJyb3JPYmopCit7CisgICAgaWYgKCFX
ZWJJbnNwZWN0b3IuRGF0YWJhc2UuX2NhbGxiYWNrc1t0cmFuc2FjdGlvbklkXSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgdmFyIGNhbGxiYWNrID0gV2ViSW5zcGVjdG9yLkRhdGFiYXNlLl9jYWxs
YmFja3NbdHJhbnNhY3Rpb25JZF0ub25FcnJvcjsKKyAgICBkZWxldGUgV2ViSW5zcGVjdG9yLkRh
dGFiYXNlLl9jYWxsYmFja3NbdHJhbnNhY3Rpb25JZF07CisgICAgaWYgKGNhbGxiYWNrKQorICAg
ICAgICBjYWxsYmFjayhlcnJvck9iaik7Cit9CisKK0luc3BlY3RvckJhY2tlbmQucmVnaXN0ZXJE
b21haW5EaXNwYXRjaGVyKCJEYXRhYmFzZSIsIFdlYkluc3BlY3Rvci5EYXRhYmFzZSk7CmRpZmYg
LS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRmlsZVN5c3RlbVZpZXcuanMgYi9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRmlsZVN5c3RlbVZpZXcuanMKaW5kZXggOGNkMDEw
Ny4uMTRlY2Y0NiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0ZpbGVT
eXN0ZW1WaWV3LmpzCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9GaWxlU3lzdGVt
Vmlldy5qcwpAQCAtNDAsNiArNDAsMjMgQEAgV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW0uZ2V0Rmls
ZVN5c3RlbVBhdGhzQXN5bmMgPSBmdW5jdGlvbihvcmlnaW4pCiAgICAgSW5zcGVjdG9yQmFja2Vu
ZC5nZXRGaWxlU3lzdGVtUGF0aEFzeW5jKFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtLlRFTVBPUkFS
WSwgb3JpZ2luKTsKIH0KIAorV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW0uZGlkR2V0RmlsZVN5c3Rl
bVBhdGggPSBmdW5jdGlvbihyb290LCB0eXBlLCBvcmlnaW4pCit7CisgICAgV2ViSW5zcGVjdG9y
LnBhbmVscy5yZXNvdXJjZXMudXBkYXRlRmlsZVN5c3RlbVBhdGgocm9vdCwgdHlwZSwgb3JpZ2lu
KTsKK30KKworV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW0uZGlkR2V0RmlsZVN5c3RlbUVycm9yID0g
ZnVuY3Rpb24odHlwZSwgb3JpZ2luKQoreworICAgIFdlYkluc3BlY3Rvci5wYW5lbHMucmVzb3Vy
Y2VzLnVwZGF0ZUZpbGVTeXN0ZW1FcnJvcih0eXBlLCBvcmlnaW4pOworfQorCitXZWJJbnNwZWN0
b3IuRmlsZVN5c3RlbS5kaWRHZXRGaWxlU3lzdGVtRGlzYWJsZWQgPSBmdW5jdGlvbigpCit7Cisg
ICAgV2ViSW5zcGVjdG9yLnBhbmVscy5yZXNvdXJjZXMuc2V0RmlsZVN5c3RlbURpc2FibGVkKCk7
Cit9CisKK0luc3BlY3RvckJhY2tlbmQucmVnaXN0ZXJEb21haW5EaXNwYXRjaGVyKCJGaWxlU3lz
dGVtIiwgV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW0pOworCiBXZWJJbnNwZWN0b3IuRmlsZVN5c3Rl
bVZpZXcgPSBmdW5jdGlvbih0cmVlRWxlbWVudCwgZmlsZVN5c3RlbU9yaWdpbikKIHsKICAgICBX
ZWJJbnNwZWN0b3IuVmlldy5jYWxsKHRoaXMpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL05ldHdvcmtJdGVtVmlldy5qcyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9OZXR3b3JrSXRlbVZpZXcuanMKaW5kZXggNDhlM2IxOS4uNDE4ZjU1OSAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL05ldHdvcmtJdGVtVmlldy5qcworKysgYi9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvTmV0d29ya0l0ZW1WaWV3LmpzCkBAIC0zNiw3ICsz
Niw3IEBAIFdlYkluc3BlY3Rvci5OZXR3b3JrSXRlbVZpZXcgPSBmdW5jdGlvbihyZXNvdXJjZSkK
IAogICAgIHRoaXMuX2hlYWRlcnNWaWV3ID0gbmV3IFdlYkluc3BlY3Rvci5SZXNvdXJjZUhlYWRl
cnNWaWV3KHJlc291cmNlKTsKICAgICAvLyBEbyBub3Qgc3RvcmUgcmVmZXJlbmNlIHRvIGNvbnRl
bnQgdmlldyAtIGl0IGNhbiBiZSByZWNyZWF0ZWQuCi0gICAgdmFyIGNvbnRlbnRWaWV3ID0gV2Vi
SW5zcGVjdG9yLlJlc291cmNlTWFuYWdlci5yZXNvdXJjZVZpZXdGb3JSZXNvdXJjZShyZXNvdXJj
ZSk7CisgICAgdmFyIGNvbnRlbnRWaWV3ID0gV2ViSW5zcGVjdG9yLlJlc291cmNlVmlldy5yZXNv
dXJjZVZpZXdGb3JSZXNvdXJjZShyZXNvdXJjZSk7CiAKICAgICB0aGlzLl90YWJiZWRQYW5lID0g
bmV3IFdlYkluc3BlY3Rvci5UYWJiZWRQYW5lKHRoaXMuZWxlbWVudCk7CiAgICAgdGhpcy5fdGFi
YmVkUGFuZS5hcHBlbmRUYWIoImhlYWRlcnMiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkhlYWRl
cnMiKSwgdGhpcy5faGVhZGVyc1ZpZXcpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL05ldHdvcmtNYW5hZ2VyLmpzIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L05ldHdvcmtNYW5hZ2VyLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVh
ODVjMjYKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvTmV0
d29ya01hbmFnZXIuanMKQEAgLTAsMCArMSw0MTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MDksIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgor
ICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9m
IGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBw
cm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QK
KyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitXZWJJbnNwZWN0b3IuTmV0d29y
a01hbmFnZXIgPSBmdW5jdGlvbigpCit7CisgICAgdGhpcy5fcmVzb3VyY2VzQnlJZCA9IHt9Owor
ICAgIHRoaXMuX3Jlc291cmNlc0J5VVJMID0ge307CisgICAgdGhpcy5fcmVzb3VyY2VUcmVlTW9k
ZWwgPSBuZXcgV2ViSW5zcGVjdG9yLlJlc291cmNlVHJlZU1vZGVsKCk7CisgICAgSW5zcGVjdG9y
QmFja2VuZC5jYWNoZWRSZXNvdXJjZXModGhpcy5fcHJvY2Vzc0NhY2hlZFJlc291cmNlcy5iaW5k
KHRoaXMpKTsKKyAgICBJbnNwZWN0b3JCYWNrZW5kLnJlZ2lzdGVyRG9tYWluRGlzcGF0Y2hlcigi
TmV0d29yayIsIHRoaXMpOworfQorCitXZWJJbnNwZWN0b3IuTmV0d29ya01hbmFnZXIucHJvdG90
eXBlID0geworICAgIGlkZW50aWZpZXJGb3JJbml0aWFsUmVxdWVzdDogZnVuY3Rpb24oaWRlbnRp
ZmllciwgdXJsLCBsb2FkZXIsIGNhbGxTdGFjaykKKyAgICB7CisgICAgICAgIHZhciByZXNvdXJj
ZSA9IHRoaXMuX2NyZWF0ZVJlc291cmNlKGlkZW50aWZpZXIsIHVybCwgbG9hZGVyLCBjYWxsU3Rh
Y2spOworCisgICAgICAgIC8vIEl0IGlzIGltcG9ydGFudCB0byBiaW5kIHJlc291cmNlIHVybCBl
YXJseSAoYmVmb3JlIHNjcmlwdHMgY29tcGlsZSkuCisgICAgICAgIHRoaXMuX2JpbmRSZXNvdXJj
ZVVSTChyZXNvdXJjZSk7CisKKyAgICAgICAgV2ViSW5zcGVjdG9yLnBhbmVscy5uZXR3b3JrLnJl
ZnJlc2hSZXNvdXJjZShyZXNvdXJjZSk7CisgICAgICAgIFdlYkluc3BlY3Rvci5wYW5lbHMuYXVk
aXRzLnJlc291cmNlU3RhcnRlZChyZXNvdXJjZSk7CisgICAgfSwKKworICAgIF9jcmVhdGVSZXNv
dXJjZTogZnVuY3Rpb24oaWRlbnRpZmllciwgdXJsLCBsb2FkZXIsIHN0YWNrVHJhY2UpCisgICAg
eworICAgICAgICB2YXIgcmVzb3VyY2UgPSBuZXcgV2ViSW5zcGVjdG9yLlJlc291cmNlKGlkZW50
aWZpZXIsIHVybCk7CisgICAgICAgIHJlc291cmNlLmxvYWRlciA9IGxvYWRlcjsKKyAgICAgICAg
aWYgKGxvYWRlcikKKyAgICAgICAgICAgIHJlc291cmNlLmRvY3VtZW50VVJMID0gbG9hZGVyLnVy
bDsKKyAgICAgICAgcmVzb3VyY2Uuc3RhY2tUcmFjZSA9IHN0YWNrVHJhY2U7CisKKyAgICAgICAg
dGhpcy5fcmVzb3VyY2VzQnlJZFtpZGVudGlmaWVyXSA9IHJlc291cmNlOworICAgICAgICByZXR1
cm4gcmVzb3VyY2U7CisgICAgfSwKKworICAgIHdpbGxTZW5kUmVxdWVzdDogZnVuY3Rpb24oaWRl
bnRpZmllciwgdGltZSwgcmVxdWVzdCwgcmVkaXJlY3RSZXNwb25zZSkKKyAgICB7CisgICAgICAg
IHZhciByZXNvdXJjZSA9IHRoaXMuX3Jlc291cmNlc0J5SWRbaWRlbnRpZmllcl07CisgICAgICAg
IGlmICghcmVzb3VyY2UpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgLy8gUmVkaXJl
Y3QgbWF5IGhhdmUgZW1wdHkgVVJMIGFuZCB3ZSdkIGxpa2UgdG8gbm90IGNyYXNoIHdpdGggaW52
YWxpZCBIYXNoTWFwIGVudHJ5LgorICAgICAgICAvLyBTZWUgaHR0cC90ZXN0cy9taXNjL3dpbGwt
c2VuZC1yZXF1ZXN0LXJldHVybnMtbnVsbC1vbi1yZWRpcmVjdC5odG1sCisgICAgICAgIHZhciBp
c1JlZGlyZWN0ID0gIXJlZGlyZWN0UmVzcG9uc2UuaXNOdWxsICYmIHJlcXVlc3QudXJsLmxlbmd0
aDsKKyAgICAgICAgaWYgKGlzUmVkaXJlY3QpIHsKKyAgICAgICAgICAgIHJlc291cmNlLmVuZFRp
bWUgPSB0aW1lOworICAgICAgICAgICAgdGhpcy5kaWRSZWNlaXZlUmVzcG9uc2UoaWRlbnRpZmll
ciwgdGltZSwgIk90aGVyIiwgcmVkaXJlY3RSZXNwb25zZSk7CisgICAgICAgICAgICByZXNvdXJj
ZSA9IHRoaXMuX2FwcGVuZFJlZGlyZWN0KHJlc291cmNlLmlkZW50aWZpZXIsIHJlcXVlc3QudXJs
KTsKKyAgICAgICAgfQorCisgICAgICAgIHRoaXMuX3VwZGF0ZVJlc291cmNlV2l0aFJlcXVlc3Qo
cmVzb3VyY2UsIHJlcXVlc3QpOworICAgICAgICByZXNvdXJjZS5zdGFydFRpbWUgPSB0aW1lOwor
CisgICAgICAgIGlmIChpc1JlZGlyZWN0KSB7CisgICAgICAgICAgICBXZWJJbnNwZWN0b3IucGFu
ZWxzLm5ldHdvcmsucmVmcmVzaFJlc291cmNlKHJlc291cmNlKTsKKyAgICAgICAgICAgIFdlYklu
c3BlY3Rvci5wYW5lbHMuYXVkaXRzLnJlc291cmNlU3RhcnRlZChyZXNvdXJjZSk7CisgICAgICAg
IH0gZWxzZQorICAgICAgICAgICAgV2ViSW5zcGVjdG9yLnBhbmVscy5uZXR3b3JrLnJlZnJlc2hS
ZXNvdXJjZShyZXNvdXJjZSk7CisgICAgfSwKKworICAgIF91cGRhdGVSZXNvdXJjZVdpdGhSZXF1
ZXN0OiBmdW5jdGlvbihyZXNvdXJjZSwgcmVxdWVzdCkKKyAgICB7CisgICAgICAgIHJlc291cmNl
LnJlcXVlc3RNZXRob2QgPSByZXF1ZXN0Lmh0dHBNZXRob2Q7CisgICAgICAgIHJlc291cmNlLnJl
cXVlc3RIZWFkZXJzID0gcmVxdWVzdC5odHRwSGVhZGVyRmllbGRzOworICAgICAgICByZXNvdXJj
ZS5yZXF1ZXN0Rm9ybURhdGEgPSByZXF1ZXN0LnJlcXVlc3RGb3JtRGF0YTsKKyAgICB9LAorCisg
ICAgX2FwcGVuZFJlZGlyZWN0OiBmdW5jdGlvbihpZGVudGlmaWVyLCByZWRpcmVjdFVSTCkKKyAg
ICB7CisgICAgICAgIHZhciBvcmlnaW5hbFJlc291cmNlID0gdGhpcy5fcmVzb3VyY2VzQnlJZFtp
ZGVudGlmaWVyXTsKKyAgICAgICAgb3JpZ2luYWxSZXNvdXJjZS5pZGVudGlmaWVyID0gbnVsbDsK
KworICAgICAgICB2YXIgbmV3UmVzb3VyY2UgPSB0aGlzLl9jcmVhdGVSZXNvdXJjZShpZGVudGlm
aWVyLCByZWRpcmVjdFVSTCwgb3JpZ2luYWxSZXNvdXJjZS5sb2FkZXIsIG9yaWdpbmFsUmVzb3Vy
Y2Uuc3RhY2tUcmFjZSk7CisgICAgICAgIG5ld1Jlc291cmNlLnJlZGlyZWN0cyA9IG9yaWdpbmFs
UmVzb3VyY2UucmVkaXJlY3RzIHx8IFtdOworICAgICAgICBkZWxldGUgb3JpZ2luYWxSZXNvdXJj
ZS5yZWRpcmVjdHM7CisgICAgICAgIG5ld1Jlc291cmNlLnJlZGlyZWN0cy5wdXNoKG9yaWdpbmFs
UmVzb3VyY2UpOworICAgICAgICByZXR1cm4gbmV3UmVzb3VyY2U7CisgICAgfSwKKworICAgIG1h
cmtSZXNvdXJjZUFzQ2FjaGVkOiBmdW5jdGlvbihpZGVudGlmaWVyKQorICAgIHsKKyAgICAgICAg
dmFyIHJlc291cmNlID0gdGhpcy5fcmVzb3VyY2VzQnlJZFtpZGVudGlmaWVyXTsKKyAgICAgICAg
aWYgKCFyZXNvdXJjZSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICByZXNvdXJjZS5j
YWNoZWQgPSB0cnVlOworICAgICAgICBXZWJJbnNwZWN0b3IucGFuZWxzLm5ldHdvcmsucmVmcmVz
aFJlc291cmNlKHJlc291cmNlKTsKKyAgICB9LAorCisgICAgZGlkUmVjZWl2ZVJlc3BvbnNlOiBm
dW5jdGlvbihpZGVudGlmaWVyLCB0aW1lLCByZXNvdXJjZVR5cGUsIHJlc3BvbnNlKQorICAgIHsK
KyAgICAgICAgdmFyIHJlc291cmNlID0gdGhpcy5fcmVzb3VyY2VzQnlJZFtpZGVudGlmaWVyXTsK
KyAgICAgICAgaWYgKCFyZXNvdXJjZSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBy
ZXNvdXJjZS5yZXNwb25zZVJlY2VpdmVkVGltZSA9IHRpbWU7CisgICAgICAgIHJlc291cmNlLnR5
cGUgPSBXZWJJbnNwZWN0b3IuUmVzb3VyY2UuVHlwZVtyZXNvdXJjZVR5cGVdOworCisgICAgICAg
IHRoaXMuX3VwZGF0ZVJlc291cmNlV2l0aFJlc3BvbnNlKHJlc291cmNlLCByZXNwb25zZSk7CisK
KyAgICAgICAgV2ViSW5zcGVjdG9yLnBhbmVscy5uZXR3b3JrLnJlZnJlc2hSZXNvdXJjZShyZXNv
dXJjZSk7CisgICAgICAgIHRoaXMuX3Jlc291cmNlVHJlZU1vZGVsLmFkZFJlc291cmNlVG9GcmFt
ZShyZXNvdXJjZS5sb2FkZXIuZnJhbWVJZCwgcmVzb3VyY2UpOworICAgIH0sCisKKyAgICBfdXBk
YXRlUmVzb3VyY2VXaXRoUmVzcG9uc2U6IGZ1bmN0aW9uKHJlc291cmNlLCByZXNwb25zZSkKKyAg
ICB7CisgICAgICAgIGlmIChyZXNvdXJjZS5pc051bGwpCisgICAgICAgICAgICByZXR1cm47CisK
KyAgICAgICAgcmVzb3VyY2UubWltZVR5cGUgPSByZXNwb25zZS5taW1lVHlwZTsKKyAgICAgICAg
cmVzb3VyY2UuZXhwZWN0ZWRDb250ZW50TGVuZ3RoID0gcmVzcG9uc2UuZXhwZWN0ZWRDb250ZW50
TGVuZ3RoOworICAgICAgICByZXNvdXJjZS50ZXh0RW5jb2RpbmdOYW1lID0gcmVzcG9uc2UudGV4
dEVuY29kaW5nTmFtZTsKKyAgICAgICAgcmVzb3VyY2Uuc3VnZ2VzdGVkRmlsZW5hbWUgPSByZXNw
b25zZS5zdWdnZXN0ZWRGaWxlbmFtZTsKKyAgICAgICAgcmVzb3VyY2Uuc3RhdHVzQ29kZSA9IHJl
c3BvbnNlLmh0dHBTdGF0dXNDb2RlOworICAgICAgICByZXNvdXJjZS5zdGF0dXNUZXh0ID0gcmVz
cG9uc2UuaHR0cFN0YXR1c1RleHQ7CisKKyAgICAgICAgcmVzb3VyY2UucmVzcG9uc2VIZWFkZXJz
ID0gcmVzcG9uc2UuaHR0cEhlYWRlckZpZWxkczsKKyAgICAgICAgcmVzb3VyY2UuY29ubmVjdGlv
blJldXNlZCA9IHJlc3BvbnNlLmNvbm5lY3Rpb25SZXVzZWQ7CisgICAgICAgIHJlc291cmNlLmNv
bm5lY3Rpb25JRCA9IHJlc3BvbnNlLmNvbm5lY3Rpb25JRDsKKworICAgICAgICBpZiAocmVzcG9u
c2Uud2FzQ2FjaGVkKQorICAgICAgICAgICAgcmVzb3VyY2UuY2FjaGVkID0gdHJ1ZTsKKyAgICAg
ICAgZWxzZQorICAgICAgICAgICAgcmVzb3VyY2UudGltaW5nID0gcmVzcG9uc2UudGltaW5nOwor
CisgICAgICAgIGlmIChyZXNwb25zZS5sb2FkSW5mbykgeworICAgICAgICAgICAgaWYgKHJlc3Bv
bnNlLmxvYWRJbmZvLmh0dHBTdGF0dXNDb2RlKQorICAgICAgICAgICAgICAgIHJlc291cmNlLnN0
YXR1c0NvZGUgPSByZXNwb25zZS5sb2FkSW5mby5odHRwU3RhdHVzQ29kZTsKKyAgICAgICAgICAg
IGlmIChyZXNwb25zZS5sb2FkSW5mby5odHRwU3RhdHVzVGV4dCkKKyAgICAgICAgICAgICAgICBy
ZXNvdXJjZS5zdGF0dXNUZXh0ID0gcmVzcG9uc2UubG9hZEluZm8uaHR0cFN0YXR1c1RleHQ7Cisg
ICAgICAgICAgICByZXNvdXJjZS5yZXF1ZXN0SGVhZGVycyA9IHJlc3BvbnNlLmxvYWRJbmZvLnJl
cXVlc3RIZWFkZXJzOworICAgICAgICAgICAgcmVzb3VyY2UucmVzcG9uc2VIZWFkZXJzID0gcmVz
cG9uc2UubG9hZEluZm8ucmVzcG9uc2VIZWFkZXJzOworICAgICAgICB9CisgICAgfSwKKworICAg
IGRpZFJlY2VpdmVDb250ZW50TGVuZ3RoOiBmdW5jdGlvbihpZGVudGlmaWVyLCB0aW1lLCBsZW5n
dGhSZWNlaXZlZCkKKyAgICB7CisgICAgICAgIHZhciByZXNvdXJjZSA9IHRoaXMuX3Jlc291cmNl
c0J5SWRbaWRlbnRpZmllcl07CisgICAgICAgIGlmICghcmVzb3VyY2UpCisgICAgICAgICAgICBy
ZXR1cm47CisKKyAgICAgICAgcmVzb3VyY2UucmVzb3VyY2VTaXplICs9IGxlbmd0aFJlY2VpdmVk
OworICAgICAgICByZXNvdXJjZS5lbmRUaW1lID0gdGltZTsKKworICAgICAgICBXZWJJbnNwZWN0
b3IucGFuZWxzLm5ldHdvcmsucmVmcmVzaFJlc291cmNlKHJlc291cmNlKTsKKyAgICB9LAorCisg
ICAgZGlkRmluaXNoTG9hZGluZzogZnVuY3Rpb24oaWRlbnRpZmllciwgZmluaXNoVGltZSkKKyAg
ICB7CisgICAgICAgIHZhciByZXNvdXJjZSA9IHRoaXMuX3Jlc291cmNlc0J5SWRbaWRlbnRpZmll
cl07CisgICAgICAgIGlmICghcmVzb3VyY2UpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAg
ICAgcmVzb3VyY2UuZW5kVGltZSA9IGZpbmlzaFRpbWU7CisgICAgICAgIHJlc291cmNlLmZpbmlz
aGVkID0gdHJ1ZTsKKworICAgICAgICBXZWJJbnNwZWN0b3IucGFuZWxzLm5ldHdvcmsucmVmcmVz
aFJlc291cmNlKHJlc291cmNlKTsKKyAgICAgICAgV2ViSW5zcGVjdG9yLnBhbmVscy5hdWRpdHMu
cmVzb3VyY2VGaW5pc2hlZChyZXNvdXJjZSk7CisgICAgICAgIFdlYkluc3BlY3Rvci5leHRlbnNp
b25TZXJ2ZXIubm90aWZ5UmVzb3VyY2VGaW5pc2hlZChyZXNvdXJjZSk7CisgICAgICAgIGRlbGV0
ZSB0aGlzLl9yZXNvdXJjZXNCeUlkW2lkZW50aWZpZXJdOworICAgIH0sCisKKyAgICBkaWRGYWls
TG9hZGluZzogZnVuY3Rpb24oaWRlbnRpZmllciwgdGltZSwgbG9jYWxpemVkRGVzY3JpcHRpb24p
CisgICAgeworICAgICAgICB2YXIgcmVzb3VyY2UgPSB0aGlzLl9yZXNvdXJjZXNCeUlkW2lkZW50
aWZpZXJdOworICAgICAgICBpZiAoIXJlc291cmNlKQorICAgICAgICAgICAgcmV0dXJuOworCisg
ICAgICAgIHJlc291cmNlLmZhaWxlZCA9IHRydWU7CisgICAgICAgIHJlc291cmNlLmxvY2FsaXpl
ZEZhaWxEZXNjcmlwdGlvbiA9IGxvY2FsaXplZERlc2NyaXB0aW9uOworICAgICAgICByZXNvdXJj
ZS5maW5pc2hlZCA9IHRydWU7CisgICAgICAgIHJlc291cmNlLmVuZFRpbWUgPSB0aW1lOworCisg
ICAgICAgIFdlYkluc3BlY3Rvci5wYW5lbHMubmV0d29yay5yZWZyZXNoUmVzb3VyY2UocmVzb3Vy
Y2UpOworICAgICAgICBXZWJJbnNwZWN0b3IucGFuZWxzLmF1ZGl0cy5yZXNvdXJjZUZpbmlzaGVk
KHJlc291cmNlKTsKKyAgICAgICAgV2ViSW5zcGVjdG9yLmV4dGVuc2lvblNlcnZlci5ub3RpZnlS
ZXNvdXJjZUZpbmlzaGVkKHJlc291cmNlKTsKKyAgICAgICAgZGVsZXRlIHRoaXMuX3Jlc291cmNl
c0J5SWRbaWRlbnRpZmllcl07CisgICAgfSwKKworICAgIGRpZExvYWRSZXNvdXJjZUZyb21NZW1v
cnlDYWNoZTogZnVuY3Rpb24odGltZSwgY2FjaGVkUmVzb3VyY2UpCisgICAgeworICAgICAgICB2
YXIgcmVzb3VyY2UgPSB0aGlzLl9jcmVhdGVSZXNvdXJjZShudWxsLCBjYWNoZWRSZXNvdXJjZS51
cmwsIGNhY2hlZFJlc291cmNlLmxvYWRlcik7CisgICAgICAgIHRoaXMuX3VwZGF0ZVJlc291cmNl
V2l0aENhY2hlZFJlc291cmNlKHJlc291cmNlLCBjYWNoZWRSZXNvdXJjZSk7CisgICAgICAgIHJl
c291cmNlLmNhY2hlZCA9IHRydWU7CisgICAgICAgIHJlc291cmNlLnJlcXVlc3RNZXRob2QgPSAi
R0VUIjsKKyAgICAgICAgcmVzb3VyY2Uuc3RhcnRUaW1lID0gcmVzb3VyY2UucmVzcG9uc2VSZWNl
aXZlZFRpbWUgPSByZXNvdXJjZS5lbmRUaW1lID0gdGltZTsKKyAgICAgICAgcmVzb3VyY2UuZmlu
aXNoZWQgPSB0cnVlOworCisgICAgICAgIFdlYkluc3BlY3Rvci5wYW5lbHMubmV0d29yay5yZWZy
ZXNoUmVzb3VyY2UocmVzb3VyY2UpOworICAgICAgICBXZWJJbnNwZWN0b3IucGFuZWxzLmF1ZGl0
cy5yZXNvdXJjZVN0YXJ0ZWQocmVzb3VyY2UpOworICAgICAgICBXZWJJbnNwZWN0b3IucGFuZWxz
LmF1ZGl0cy5yZXNvdXJjZUZpbmlzaGVkKHJlc291cmNlKTsKKyAgICAgICAgdGhpcy5fcmVzb3Vy
Y2VUcmVlTW9kZWwuYWRkUmVzb3VyY2VUb0ZyYW1lKHJlc291cmNlLmxvYWRlci5mcmFtZUlkLCBy
ZXNvdXJjZSk7CisgICAgfSwKKworICAgIF91cGRhdGVSZXNvdXJjZVdpdGhDYWNoZWRSZXNvdXJj
ZTogZnVuY3Rpb24ocmVzb3VyY2UsIGNhY2hlZFJlc291cmNlKQorICAgIHsKKyAgICAgICAgcmVz
b3VyY2UudHlwZSA9IFdlYkluc3BlY3Rvci5SZXNvdXJjZS5UeXBlW2NhY2hlZFJlc291cmNlLnR5
cGVdOworICAgICAgICByZXNvdXJjZS5yZXNvdXJjZVNpemUgPSBjYWNoZWRSZXNvdXJjZS5lbmNv
ZGVkU2l6ZTsKKyAgICAgICAgdGhpcy5fdXBkYXRlUmVzb3VyY2VXaXRoUmVzcG9uc2UocmVzb3Vy
Y2UsIGNhY2hlZFJlc291cmNlLnJlc3BvbnNlKTsKKyAgICB9LAorCisgICAgc2V0SW5pdGlhbENv
bnRlbnQ6IGZ1bmN0aW9uKGlkZW50aWZpZXIsIHNvdXJjZVN0cmluZywgdHlwZSkKKyAgICB7Cisg
ICAgICAgIHZhciByZXNvdXJjZSA9IFdlYkluc3BlY3Rvci5wYW5lbHMubmV0d29yay5yZXNvdXJj
ZXNbaWRlbnRpZmllcl07CisgICAgICAgIGlmICghcmVzb3VyY2UpCisgICAgICAgICAgICByZXR1
cm47CisKKyAgICAgICAgcmVzb3VyY2UudHlwZSA9IFdlYkluc3BlY3Rvci5SZXNvdXJjZS5UeXBl
W3R5cGVdOworICAgICAgICByZXNvdXJjZS5zZXRJbml0aWFsQ29udGVudChzb3VyY2VTdHJpbmcp
OworICAgICAgICBXZWJJbnNwZWN0b3IucGFuZWxzLnJlc291cmNlcy5yZWZyZXNoUmVzb3VyY2Uo
cmVzb3VyY2UpOworICAgICAgICBXZWJJbnNwZWN0b3IucGFuZWxzLm5ldHdvcmsucmVmcmVzaFJl
c291cmNlKHJlc291cmNlKTsKKyAgICB9LAorCisgICAgZGlkQ29tbWl0TG9hZEZvckZyYW1lOiBm
dW5jdGlvbihmcmFtZSwgbG9hZGVyKQorICAgIHsKKyAgICAgICAgdGhpcy5fcmVzb3VyY2VUcmVl
TW9kZWwuZGlkQ29tbWl0TG9hZEZvckZyYW1lKGZyYW1lLCBsb2FkZXIpOworICAgICAgICBpZiAo
IWZyYW1lLnBhcmVudElkKSB7CisgICAgICAgICAgICB2YXIgbWFpblJlc291cmNlID0gdGhpcy5y
ZXNvdXJjZUZvclVSTChmcmFtZS51cmwpOworICAgICAgICAgICAgaWYgKG1haW5SZXNvdXJjZSkg
eworICAgICAgICAgICAgICAgIFdlYkluc3BlY3Rvci5tYWluUmVzb3VyY2UgPSBtYWluUmVzb3Vy
Y2U7CisgICAgICAgICAgICAgICAgbWFpblJlc291cmNlLmlzTWFpblJlc291cmNlID0gdHJ1ZTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0sCisKKyAgICBmcmFtZURldGFjaGVkRnJv
bVBhcmVudDogZnVuY3Rpb24oZnJhbWVJZCkKKyAgICB7CisgICAgICAgIHRoaXMuX3Jlc291cmNl
VHJlZU1vZGVsLmZyYW1lRGV0YWNoZWRGcm9tUGFyZW50KGZyYW1lSWQpOworICAgIH0sCisKKyAg
ICBkaWRDcmVhdGVXZWJTb2NrZXQ6IGZ1bmN0aW9uKGlkZW50aWZpZXIsIHJlcXVlc3RVUkwpCisg
ICAgeworICAgICAgICB2YXIgcmVzb3VyY2UgPSB0aGlzLl9jcmVhdGVSZXNvdXJjZShpZGVudGlm
aWVyLCByZXF1ZXN0VVJMKTsKKyAgICAgICAgcmVzb3VyY2UudHlwZSA9IFdlYkluc3BlY3Rvci5S
ZXNvdXJjZS5UeXBlLldlYlNvY2tldDsKKyAgICAgICAgV2ViSW5zcGVjdG9yLnBhbmVscy5uZXR3
b3JrLnJlZnJlc2hSZXNvdXJjZShyZXNvdXJjZSk7CisgICAgfSwKKworICAgIHdpbGxTZW5kV2Vi
U29ja2V0SGFuZHNoYWtlUmVxdWVzdDogZnVuY3Rpb24oaWRlbnRpZmllciwgdGltZSwgcmVxdWVz
dCkKKyAgICB7CisgICAgICAgIHZhciByZXNvdXJjZSA9IHRoaXMuX3Jlc291cmNlc0J5SWRbaWRl
bnRpZmllcl07CisgICAgICAgIGlmICghcmVzb3VyY2UpCisgICAgICAgICAgICByZXR1cm47CisK
KyAgICAgICAgcmVzb3VyY2UucmVxdWVzdE1ldGhvZCA9ICJHRVQiOworICAgICAgICByZXNvdXJj
ZS5yZXF1ZXN0SGVhZGVycyA9IHJlcXVlc3Qud2ViU29ja2V0SGVhZGVyRmllbGRzOworICAgICAg
ICByZXNvdXJjZS53ZWJTb2NrZXRSZXF1ZXN0S2V5MyA9IHJlcXVlc3Qud2ViU29ja2V0UmVxdWVz
dEtleTM7CisgICAgICAgIHJlc291cmNlLnN0YXJ0VGltZSA9IHRpbWU7CisKKyAgICAgICAgV2Vi
SW5zcGVjdG9yLnBhbmVscy5uZXR3b3JrLnJlZnJlc2hSZXNvdXJjZShyZXNvdXJjZSk7CisgICAg
fSwKKworICAgIGRpZFJlY2VpdmVXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZTogZnVuY3Rpb24o
aWRlbnRpZmllciwgdGltZSwgcmVzcG9uc2UpCisgICAgeworICAgICAgICB2YXIgcmVzb3VyY2Ug
PSB0aGlzLl9yZXNvdXJjZXNCeUlkW2lkZW50aWZpZXJdOworICAgICAgICBpZiAoIXJlc291cmNl
KQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHJlc291cmNlLnN0YXR1c0NvZGUgPSBy
ZXNwb25zZS5zdGF0dXNDb2RlOworICAgICAgICByZXNvdXJjZS5zdGF0dXNUZXh0ID0gcmVzcG9u
c2Uuc3RhdHVzVGV4dDsKKyAgICAgICAgcmVzb3VyY2UucmVzcG9uc2VIZWFkZXJzID0gcmVzcG9u
c2Uud2ViU29ja2V0SGVhZGVyRmllbGRzOworICAgICAgICByZXNvdXJjZS53ZWJTb2NrZXRDaGFs
bGVuZ2VSZXNwb25zZSA9IHJlc3BvbnNlLndlYlNvY2tldENoYWxsZW5nZVJlc3BvbnNlOworICAg
ICAgICByZXNvdXJjZS5yZXNwb25zZVJlY2VpdmVkVGltZSA9IHRpbWU7CisKKyAgICAgICAgV2Vi
SW5zcGVjdG9yLnBhbmVscy5uZXR3b3JrLnJlZnJlc2hSZXNvdXJjZShyZXNvdXJjZSk7CisgICAg
fSwKKworICAgIGRpZENsb3NlV2ViU29ja2V0OiBmdW5jdGlvbihpZGVudGlmaWVyLCB0aW1lKQor
ICAgIHsKKyAgICAgICAgdmFyIHJlc291cmNlID0gdGhpcy5fcmVzb3VyY2VzQnlJZFtpZGVudGlm
aWVyXTsKKyAgICAgICAgaWYgKCFyZXNvdXJjZSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgcmVzb3VyY2UuZW5kVGltZSA9IHRpbWU7CisKKyAgICAgICAgV2ViSW5zcGVjdG9yLnBhbmVs
cy5uZXR3b3JrLnJlZnJlc2hSZXNvdXJjZShyZXNvdXJjZSk7CisgICAgfSwKKworICAgIF9wcm9j
ZXNzQ2FjaGVkUmVzb3VyY2VzOiBmdW5jdGlvbihtYWluRnJhbWVQYXlsb2FkKQorICAgIHsKKyAg
ICAgICAgdmFyIG1haW5SZXNvdXJjZSA9IHRoaXMuX2FkZEZyYW1lc1JlY3Vyc2l2ZWx5KG1haW5G
cmFtZVBheWxvYWQpOworICAgICAgICBXZWJJbnNwZWN0b3IubWFpblJlc291cmNlID0gbWFpblJl
c291cmNlOworICAgICAgICBtYWluUmVzb3VyY2UuaXNNYWluUmVzb3VyY2UgPSB0cnVlOworICAg
IH0sCisKKyAgICBfYWRkRnJhbWVzUmVjdXJzaXZlbHk6IGZ1bmN0aW9uKGZyYW1lUGF5bG9hZCkK
KyAgICB7CisgICAgICAgIHZhciBmcmFtZVJlc291cmNlID0gdGhpcy5fY3JlYXRlUmVzb3VyY2Uo
bnVsbCwgZnJhbWVQYXlsb2FkLnJlc291cmNlLnVybCwgZnJhbWVQYXlsb2FkLnJlc291cmNlLmxv
YWRlcik7CisgICAgICAgIHRoaXMuX3VwZGF0ZVJlc291cmNlV2l0aFJlcXVlc3QoZnJhbWVSZXNv
dXJjZSwgZnJhbWVQYXlsb2FkLnJlc291cmNlLnJlcXVlc3QpOworICAgICAgICB0aGlzLl91cGRh
dGVSZXNvdXJjZVdpdGhSZXNwb25zZShmcmFtZVJlc291cmNlLCBmcmFtZVBheWxvYWQucmVzb3Vy
Y2UucmVzcG9uc2UpOworICAgICAgICBmcmFtZVJlc291cmNlLnR5cGUgPSBXZWJJbnNwZWN0b3Iu
UmVzb3VyY2UuVHlwZVsiRG9jdW1lbnQiXTsKKyAgICAgICAgZnJhbWVSZXNvdXJjZS5maW5pc2hl
ZCA9IHRydWU7CisgICAgICAgIHRoaXMuX2JpbmRSZXNvdXJjZVVSTChmcmFtZVJlc291cmNlKTsK
KworICAgICAgICB0aGlzLl9yZXNvdXJjZVRyZWVNb2RlbC5hZGRPclVwZGF0ZUZyYW1lKGZyYW1l
UGF5bG9hZCk7CisgICAgICAgIHRoaXMuX3Jlc291cmNlVHJlZU1vZGVsLmFkZFJlc291cmNlVG9G
cmFtZShmcmFtZVBheWxvYWQuaWQsIGZyYW1lUmVzb3VyY2UpOworCisgICAgICAgIGZvciAodmFy
IGkgPSAwOyBmcmFtZVBheWxvYWQuY2hpbGRyZW4gJiYgaSA8IGZyYW1lUGF5bG9hZC5jaGlsZHJl
bi5sZW5ndGg7ICsraSkKKyAgICAgICAgICAgIHRoaXMuX2FkZEZyYW1lc1JlY3Vyc2l2ZWx5KGZy
YW1lUGF5bG9hZC5jaGlsZHJlbltpXSk7CisKKyAgICAgICAgaWYgKCFmcmFtZVBheWxvYWQuc3Vi
cmVzb3VyY2VzKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGZvciAodmFyIGkgPSAw
OyBpIDwgZnJhbWVQYXlsb2FkLnN1YnJlc291cmNlcy5sZW5ndGg7ICsraSkgeworICAgICAgICAg
ICAgdmFyIGNhY2hlZFJlc291cmNlID0gZnJhbWVQYXlsb2FkLnN1YnJlc291cmNlc1tpXTsKKyAg
ICAgICAgICAgIHZhciByZXNvdXJjZSA9IHRoaXMuX2NyZWF0ZVJlc291cmNlKG51bGwsIGNhY2hl
ZFJlc291cmNlLnVybCwgY2FjaGVkUmVzb3VyY2UubG9hZGVyKTsKKyAgICAgICAgICAgIHRoaXMu
X3VwZGF0ZVJlc291cmNlV2l0aENhY2hlZFJlc291cmNlKHJlc291cmNlLCBjYWNoZWRSZXNvdXJj
ZSk7CisgICAgICAgICAgICByZXNvdXJjZS5maW5pc2hlZCA9IHRydWU7CisgICAgICAgICAgICB0
aGlzLl9iaW5kUmVzb3VyY2VVUkwocmVzb3VyY2UpOworICAgICAgICAgICAgdGhpcy5fcmVzb3Vy
Y2VUcmVlTW9kZWwuYWRkUmVzb3VyY2VUb0ZyYW1lKGZyYW1lUGF5bG9hZC5pZCwgcmVzb3VyY2Up
OworICAgICAgICB9CisgICAgICAgIHJldHVybiBmcmFtZVJlc291cmNlOworICAgIH0sCisKKyAg
ICByZXNvdXJjZUZvclVSTDogZnVuY3Rpb24odXJsKQorICAgIHsKKyAgICAgICAgLy8gRklYTUU6
IHJlY2VpdmUgZnJhbWVJZCBoZXJlLgorICAgICAgICB2YXIgZW50cnkgPSB0aGlzLl9yZXNvdXJj
ZXNCeVVSTFt1cmxdOworICAgICAgICBpZiAoZW50cnkgaW5zdGFuY2VvZiBBcnJheSkKKyAgICAg
ICAgICAgIHJldHVybiBlbnRyeVswXTsKKyAgICAgICAgcmV0dXJuIGVudHJ5OworICAgIH0sCisK
KyAgICBhZGRDb25zb2xlTWVzc2FnZTogZnVuY3Rpb24obXNnKQorICAgIHsKKyAgICAgICAgdmFy
IHJlc291cmNlID0gdGhpcy5yZXNvdXJjZUZvclVSTChtc2cudXJsKTsKKyAgICAgICAgaWYgKCFy
ZXNvdXJjZSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBzd2l0Y2ggKG1zZy5sZXZl
bCkgeworICAgICAgICBjYXNlIFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZS5NZXNzYWdlTGV2
ZWwuV2FybmluZzoKKyAgICAgICAgICAgIHJlc291cmNlLndhcm5pbmdzICs9IG1zZy5yZXBlYXRE
ZWx0YTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFdlYkluc3BlY3Rvci5Db25z
b2xlTWVzc2FnZS5NZXNzYWdlTGV2ZWwuRXJyb3I6CisgICAgICAgICAgICByZXNvdXJjZS5lcnJv
cnMgKz0gbXNnLnJlcGVhdERlbHRhOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKwor
ICAgICAgICB2YXIgdmlldyA9IFdlYkluc3BlY3Rvci5SZXNvdXJjZVZpZXcucmVzb3VyY2VWaWV3
Rm9yUmVzb3VyY2UocmVzb3VyY2UpOworICAgICAgICBpZiAodmlldy5hZGRNZXNzYWdlKQorICAg
ICAgICAgICAgdmlldy5hZGRNZXNzYWdlKG1zZyk7CisgICAgfSwKKworICAgIGNsZWFyQ29uc29s
ZU1lc3NhZ2VzOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICBmdW5jdGlvbiBjYWxsYmFjayhy
ZXNvdXJjZSkKKyAgICAgICAgeworICAgICAgICAgICAgcmVzb3VyY2UuY2xlYXJFcnJvcnNBbmRX
YXJuaW5ncygpOworICAgICAgICB9CisgICAgICAgIHRoaXMuX3Jlc291cmNlVHJlZU1vZGVsLmZv
ckFsbFJlc291cmNlcyhjYWxsYmFjayk7CisgICAgfSwKKworICAgIGZvckFsbFJlc291cmNlczog
ZnVuY3Rpb24oY2FsbGJhY2spCisgICAgeworICAgICAgICB0aGlzLl9yZXNvdXJjZVRyZWVNb2Rl
bC5mb3JBbGxSZXNvdXJjZXMoY2FsbGJhY2spOworICAgIH0sCisKKyAgICBfYmluZFJlc291cmNl
VVJMOiBmdW5jdGlvbihyZXNvdXJjZSkKKyAgICB7CisgICAgICAgIHZhciByZXNvdXJjZUZvclVS
TCA9IHRoaXMuX3Jlc291cmNlc0J5VVJMW3Jlc291cmNlLnVybF07CisgICAgICAgIGlmICghcmVz
b3VyY2VGb3JVUkwpCisgICAgICAgICAgICB0aGlzLl9yZXNvdXJjZXNCeVVSTFtyZXNvdXJjZS51
cmxdID0gcmVzb3VyY2U7CisgICAgICAgIGVsc2UgaWYgKHJlc291cmNlRm9yVVJMIGluc3RhbmNl
b2YgQXJyYXkpCisgICAgICAgICAgICByZXNvdXJjZUZvclVSTC5wdXNoKHJlc291cmNlKTsKKyAg
ICAgICAgZWxzZQorICAgICAgICAgICAgdGhpcy5fcmVzb3VyY2VzQnlVUkxbcmVzb3VyY2UudXJs
XSA9IFtyZXNvdXJjZUZvclVSTCwgcmVzb3VyY2VdOworICAgIH0sCisKKyAgICB1bmJpbmRSZXNv
dXJjZVVSTDogZnVuY3Rpb24ocmVzb3VyY2UpCisgICAgeworICAgICAgICB2YXIgcmVzb3VyY2VG
b3JVUkwgPSB0aGlzLl9yZXNvdXJjZXNCeVVSTFtyZXNvdXJjZS51cmxdOworICAgICAgICBpZiAo
IXJlc291cmNlRm9yVVJMKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGlmIChyZXNv
dXJjZUZvclVSTCBpbnN0YW5jZW9mIEFycmF5KSB7CisgICAgICAgICAgICByZXNvdXJjZUZvclVS
TC5yZW1vdmUocmVzb3VyY2UsIHRydWUpOworICAgICAgICAgICAgaWYgKHJlc291cmNlRm9yVVJM
Lmxlbmd0aCA9PT0gMSkKKyAgICAgICAgICAgICAgICB0aGlzLl9yZXNvdXJjZXNCeVVSTFtyZXNv
dXJjZS51cmxdID0gcmVzb3VyY2VGb3JVUkxbMF07CisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIH0KKworICAgICAgICBkZWxldGUgdGhpcy5fcmVzb3VyY2VzQnlVUkxbcmVzb3VyY2UudXJs
XTsKKyAgICB9Cit9CisKK1dlYkluc3BlY3Rvci5OZXR3b3JrTWFuYWdlci5yZXF1ZXN0Q29udGVu
dCA9IGZ1bmN0aW9uKHJlc291cmNlLCBiYXNlNjRFbmNvZGUsIGNhbGxiYWNrKQoreworICAgIElu
c3BlY3RvckJhY2tlbmQucmVzb3VyY2VDb250ZW50KHJlc291cmNlLmxvYWRlci5mcmFtZUlkLCBy
ZXNvdXJjZS51cmwsIGJhc2U2NEVuY29kZSwgY2FsbGJhY2spOworfQorCmRpZmYgLS1naXQgYS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvTmV0d29ya1BhbmVsLmpzIGIvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL05ldHdvcmtQYW5lbC5qcwppbmRleCA5OTQxZGJmLi43YjZkZjhiIDEw
MDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvTmV0d29ya1BhbmVsLmpzCisr
KyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9OZXR3b3JrUGFuZWwuanMKQEAgLTc5Nywx
NCArNzk3LDE0IEBAIFdlYkluc3BlY3Rvci5OZXR3b3JrUGFuZWwucHJvdG90eXBlID0gewogICAg
ICAgICBpZiAoIXJlc291cmNlKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIHZhciBv
bGRWaWV3ID0gV2ViSW5zcGVjdG9yLlJlc291cmNlTWFuYWdlci5leGlzdGluZ1Jlc291cmNlVmll
d0ZvclJlc291cmNlKHJlc291cmNlKTsKKyAgICAgICAgdmFyIG9sZFZpZXcgPSBXZWJJbnNwZWN0
b3IuUmVzb3VyY2VWaWV3LmV4aXN0aW5nUmVzb3VyY2VWaWV3Rm9yUmVzb3VyY2UocmVzb3VyY2Up
OwogICAgICAgICBpZiAoIW9sZFZpZXcpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAg
aWYgKFdlYkluc3BlY3Rvci5SZXNvdXJjZU1hbmFnZXIucmVzb3VyY2VWaWV3VHlwZU1hdGNoZXNS
ZXNvdXJjZShyZXNvdXJjZSkpCisgICAgICAgIGlmIChXZWJJbnNwZWN0b3IuUmVzb3VyY2VWaWV3
LnJlc291cmNlVmlld1R5cGVNYXRjaGVzUmVzb3VyY2UocmVzb3VyY2UpKQogICAgICAgICAgICAg
cmV0dXJuOwogCi0gICAgICAgIHZhciBuZXdWaWV3ID0gV2ViSW5zcGVjdG9yLlJlc291cmNlTWFu
YWdlci5yZWNyZWF0ZVJlc291cmNlVmlldyhyZXNvdXJjZSk7CisgICAgICAgIHZhciBuZXdWaWV3
ID0gV2ViSW5zcGVjdG9yLlJlc291cmNlVmlldy5yZWNyZWF0ZVJlc291cmNlVmlldyhyZXNvdXJj
ZSk7CiAgICAgICAgIGlmICh0aGlzLnZpc2libGVWaWV3ID09PSBvbGRWaWV3KQogICAgICAgICAg
ICAgdGhpcy52aXNpYmxlVmlldyA9IG5ld1ZpZXc7CiAgICAgfSwKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZS5qcyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9SZXNvdXJjZS5qcwppbmRleCBkYTIxMDkyLi4wNjNjYTQzIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2UuanMKKysrIGIvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlLmpzCkBAIC02ODQsNyArNjg0LDcgQEAgV2ViSW5zcGVj
dG9yLlJlc291cmNlLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHRoaXMuX3BlbmRpbmdDb250
ZW50Q2FsbGJhY2tzLmxlbmd0aCA9IDA7CiAgICAgICAgICAgICBkZWxldGUgdGhpcy5fY29udGVu
dFJlcXVlc3RlZDsKICAgICAgICAgfQotICAgICAgICBXZWJJbnNwZWN0b3IuUmVzb3VyY2VNYW5h
Z2VyLnJlcXVlc3RDb250ZW50KHRoaXMsIHRoaXMuX2NvbnRlbnRFbmNvZGVkLCBvblJlc291cmNl
Q29udGVudC5iaW5kKHRoaXMpKTsKKyAgICAgICAgV2ViSW5zcGVjdG9yLk5ldHdvcmtNYW5hZ2Vy
LnJlcXVlc3RDb250ZW50KHRoaXMsIHRoaXMuX2NvbnRlbnRFbmNvZGVkLCBvblJlc291cmNlQ29u
dGVudC5iaW5kKHRoaXMpKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9SZXNvdXJjZU1hbmFnZXIuanMgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvUmVzb3VyY2VNYW5hZ2VyLmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3
ZjFjNTc0Li4wMDAwMDAwCi0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJj
ZU1hbmFnZXIuanMKKysrIC9kZXYvbnVsbApAQCAtMSw2ODEgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAwOSwgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0
cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0
aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBv
ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0g
KiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1Ig
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLVdlYkluc3Bl
Y3Rvci5SZXNvdXJjZU1hbmFnZXIgPSBmdW5jdGlvbigpCi17Ci0gICAgdGhpcy5fcmVzb3VyY2Vz
QnlJZCA9IHt9OwotICAgIHRoaXMuX3Jlc291cmNlc0J5VVJMID0ge307Ci0gICAgdGhpcy5fcmVz
b3VyY2VUcmVlTW9kZWwgPSBuZXcgV2ViSW5zcGVjdG9yLlJlc291cmNlVHJlZU1vZGVsKCk7Ci0g
ICAgSW5zcGVjdG9yQmFja2VuZC5jYWNoZWRSZXNvdXJjZXModGhpcy5fcHJvY2Vzc0NhY2hlZFJl
c291cmNlcy5iaW5kKHRoaXMpKTsKLSAgICBJbnNwZWN0b3JCYWNrZW5kLnJlZ2lzdGVyRG9tYWlu
RGlzcGF0Y2hlcigiUmVzb3VyY2VzIiwgdGhpcyk7Ci19Ci0KLVdlYkluc3BlY3Rvci5SZXNvdXJj
ZU1hbmFnZXIucHJvdG90eXBlID0gewotICAgIGlkZW50aWZpZXJGb3JJbml0aWFsUmVxdWVzdDog
ZnVuY3Rpb24oaWRlbnRpZmllciwgdXJsLCBsb2FkZXIsIGNhbGxTdGFjaykKLSAgICB7Ci0gICAg
ICAgIHZhciByZXNvdXJjZSA9IHRoaXMuX2NyZWF0ZVJlc291cmNlKGlkZW50aWZpZXIsIHVybCwg
bG9hZGVyLCBjYWxsU3RhY2spOwotCi0gICAgICAgIC8vIEl0IGlzIGltcG9ydGFudCB0byBiaW5k
IHJlc291cmNlIHVybCBlYXJseSAoYmVmb3JlIHNjcmlwdHMgY29tcGlsZSkuCi0gICAgICAgIHRo
aXMuX2JpbmRSZXNvdXJjZVVSTChyZXNvdXJjZSk7Ci0KLSAgICAgICAgV2ViSW5zcGVjdG9yLnBh
bmVscy5uZXR3b3JrLnJlZnJlc2hSZXNvdXJjZShyZXNvdXJjZSk7Ci0gICAgICAgIFdlYkluc3Bl
Y3Rvci5wYW5lbHMuYXVkaXRzLnJlc291cmNlU3RhcnRlZChyZXNvdXJjZSk7Ci0gICAgfSwKLQot
ICAgIF9jcmVhdGVSZXNvdXJjZTogZnVuY3Rpb24oaWRlbnRpZmllciwgdXJsLCBsb2FkZXIsIHN0
YWNrVHJhY2UpCi0gICAgewotICAgICAgICB2YXIgcmVzb3VyY2UgPSBuZXcgV2ViSW5zcGVjdG9y
LlJlc291cmNlKGlkZW50aWZpZXIsIHVybCk7Ci0gICAgICAgIHJlc291cmNlLmxvYWRlciA9IGxv
YWRlcjsKLSAgICAgICAgaWYgKGxvYWRlcikKLSAgICAgICAgICAgIHJlc291cmNlLmRvY3VtZW50
VVJMID0gbG9hZGVyLnVybDsKLSAgICAgICAgcmVzb3VyY2Uuc3RhY2tUcmFjZSA9IHN0YWNrVHJh
Y2U7Ci0KLSAgICAgICAgdGhpcy5fcmVzb3VyY2VzQnlJZFtpZGVudGlmaWVyXSA9IHJlc291cmNl
OwotICAgICAgICByZXR1cm4gcmVzb3VyY2U7Ci0gICAgfSwKLQotICAgIHdpbGxTZW5kUmVxdWVz
dDogZnVuY3Rpb24oaWRlbnRpZmllciwgdGltZSwgcmVxdWVzdCwgcmVkaXJlY3RSZXNwb25zZSkK
LSAgICB7Ci0gICAgICAgIHZhciByZXNvdXJjZSA9IHRoaXMuX3Jlc291cmNlc0J5SWRbaWRlbnRp
Zmllcl07Ci0gICAgICAgIGlmICghcmVzb3VyY2UpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAg
ICAgICAgLy8gUmVkaXJlY3QgbWF5IGhhdmUgZW1wdHkgVVJMIGFuZCB3ZSdkIGxpa2UgdG8gbm90
IGNyYXNoIHdpdGggaW52YWxpZCBIYXNoTWFwIGVudHJ5LgotICAgICAgICAvLyBTZWUgaHR0cC90
ZXN0cy9taXNjL3dpbGwtc2VuZC1yZXF1ZXN0LXJldHVybnMtbnVsbC1vbi1yZWRpcmVjdC5odG1s
Ci0gICAgICAgIHZhciBpc1JlZGlyZWN0ID0gIXJlZGlyZWN0UmVzcG9uc2UuaXNOdWxsICYmIHJl
cXVlc3QudXJsLmxlbmd0aDsKLSAgICAgICAgaWYgKGlzUmVkaXJlY3QpIHsKLSAgICAgICAgICAg
IHJlc291cmNlLmVuZFRpbWUgPSB0aW1lOwotICAgICAgICAgICAgdGhpcy5kaWRSZWNlaXZlUmVz
cG9uc2UoaWRlbnRpZmllciwgdGltZSwgIk90aGVyIiwgcmVkaXJlY3RSZXNwb25zZSk7Ci0gICAg
ICAgICAgICByZXNvdXJjZSA9IHRoaXMuX2FwcGVuZFJlZGlyZWN0KHJlc291cmNlLmlkZW50aWZp
ZXIsIHJlcXVlc3QudXJsKTsKLSAgICAgICAgfQotCi0gICAgICAgIHRoaXMuX3VwZGF0ZVJlc291
cmNlV2l0aFJlcXVlc3QocmVzb3VyY2UsIHJlcXVlc3QpOwotICAgICAgICByZXNvdXJjZS5zdGFy
dFRpbWUgPSB0aW1lOwotCi0gICAgICAgIGlmIChpc1JlZGlyZWN0KSB7Ci0gICAgICAgICAgICBX
ZWJJbnNwZWN0b3IucGFuZWxzLm5ldHdvcmsucmVmcmVzaFJlc291cmNlKHJlc291cmNlKTsKLSAg
ICAgICAgICAgIFdlYkluc3BlY3Rvci5wYW5lbHMuYXVkaXRzLnJlc291cmNlU3RhcnRlZChyZXNv
dXJjZSk7Ci0gICAgICAgIH0gZWxzZSAKLSAgICAgICAgICAgIFdlYkluc3BlY3Rvci5wYW5lbHMu
bmV0d29yay5yZWZyZXNoUmVzb3VyY2UocmVzb3VyY2UpOwotICAgIH0sCi0KLSAgICBfdXBkYXRl
UmVzb3VyY2VXaXRoUmVxdWVzdDogZnVuY3Rpb24ocmVzb3VyY2UsIHJlcXVlc3QpCi0gICAgewot
ICAgICAgICByZXNvdXJjZS5yZXF1ZXN0TWV0aG9kID0gcmVxdWVzdC5odHRwTWV0aG9kOwotICAg
ICAgICByZXNvdXJjZS5yZXF1ZXN0SGVhZGVycyA9IHJlcXVlc3QuaHR0cEhlYWRlckZpZWxkczsK
LSAgICAgICAgcmVzb3VyY2UucmVxdWVzdEZvcm1EYXRhID0gcmVxdWVzdC5yZXF1ZXN0Rm9ybURh
dGE7Ci0gICAgfSwKLQotICAgIF9hcHBlbmRSZWRpcmVjdDogZnVuY3Rpb24oaWRlbnRpZmllciwg
cmVkaXJlY3RVUkwpCi0gICAgewotICAgICAgICB2YXIgb3JpZ2luYWxSZXNvdXJjZSA9IHRoaXMu
X3Jlc291cmNlc0J5SWRbaWRlbnRpZmllcl07Ci0gICAgICAgIG9yaWdpbmFsUmVzb3VyY2UuaWRl
bnRpZmllciA9IG51bGw7Ci0KLSAgICAgICAgdmFyIG5ld1Jlc291cmNlID0gdGhpcy5fY3JlYXRl
UmVzb3VyY2UoaWRlbnRpZmllciwgcmVkaXJlY3RVUkwsIG9yaWdpbmFsUmVzb3VyY2UubG9hZGVy
LCBvcmlnaW5hbFJlc291cmNlLnN0YWNrVHJhY2UpOwotICAgICAgICBuZXdSZXNvdXJjZS5yZWRp
cmVjdHMgPSBvcmlnaW5hbFJlc291cmNlLnJlZGlyZWN0cyB8fCBbXTsKLSAgICAgICAgZGVsZXRl
IG9yaWdpbmFsUmVzb3VyY2UucmVkaXJlY3RzOwotICAgICAgICBuZXdSZXNvdXJjZS5yZWRpcmVj
dHMucHVzaChvcmlnaW5hbFJlc291cmNlKTsKLSAgICAgICAgcmV0dXJuIG5ld1Jlc291cmNlOwot
ICAgIH0sCi0KLSAgICBtYXJrUmVzb3VyY2VBc0NhY2hlZDogZnVuY3Rpb24oaWRlbnRpZmllcikK
LSAgICB7Ci0gICAgICAgIHZhciByZXNvdXJjZSA9IHRoaXMuX3Jlc291cmNlc0J5SWRbaWRlbnRp
Zmllcl07Ci0gICAgICAgIGlmICghcmVzb3VyY2UpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAg
ICAgICAgcmVzb3VyY2UuY2FjaGVkID0gdHJ1ZTsKLSAgICAgICAgV2ViSW5zcGVjdG9yLnBhbmVs
cy5uZXR3b3JrLnJlZnJlc2hSZXNvdXJjZShyZXNvdXJjZSk7Ci0gICAgfSwKLQotICAgIGRpZFJl
Y2VpdmVSZXNwb25zZTogZnVuY3Rpb24oaWRlbnRpZmllciwgdGltZSwgcmVzb3VyY2VUeXBlLCBy
ZXNwb25zZSkKLSAgICB7Ci0gICAgICAgIHZhciByZXNvdXJjZSA9IHRoaXMuX3Jlc291cmNlc0J5
SWRbaWRlbnRpZmllcl07Ci0gICAgICAgIGlmICghcmVzb3VyY2UpCi0gICAgICAgICAgICByZXR1
cm47Ci0KLSAgICAgICAgcmVzb3VyY2UucmVzcG9uc2VSZWNlaXZlZFRpbWUgPSB0aW1lOwotICAg
ICAgICByZXNvdXJjZS50eXBlID0gV2ViSW5zcGVjdG9yLlJlc291cmNlLlR5cGVbcmVzb3VyY2VU
eXBlXTsKLQotICAgICAgICB0aGlzLl91cGRhdGVSZXNvdXJjZVdpdGhSZXNwb25zZShyZXNvdXJj
ZSwgcmVzcG9uc2UpOwotCi0gICAgICAgIFdlYkluc3BlY3Rvci5wYW5lbHMubmV0d29yay5yZWZy
ZXNoUmVzb3VyY2UocmVzb3VyY2UpOwotICAgICAgICB0aGlzLl9yZXNvdXJjZVRyZWVNb2RlbC5h
ZGRSZXNvdXJjZVRvRnJhbWUocmVzb3VyY2UubG9hZGVyLmZyYW1lSWQsIHJlc291cmNlKTsKLSAg
ICB9LAotCi0gICAgX3VwZGF0ZVJlc291cmNlV2l0aFJlc3BvbnNlOiBmdW5jdGlvbihyZXNvdXJj
ZSwgcmVzcG9uc2UpCi0gICAgewotICAgICAgICBpZiAocmVzb3VyY2UuaXNOdWxsKQotICAgICAg
ICAgICAgcmV0dXJuOwotCi0gICAgICAgIHJlc291cmNlLm1pbWVUeXBlID0gcmVzcG9uc2UubWlt
ZVR5cGU7Ci0gICAgICAgIHJlc291cmNlLmV4cGVjdGVkQ29udGVudExlbmd0aCA9IHJlc3BvbnNl
LmV4cGVjdGVkQ29udGVudExlbmd0aDsKLSAgICAgICAgcmVzb3VyY2UudGV4dEVuY29kaW5nTmFt
ZSA9IHJlc3BvbnNlLnRleHRFbmNvZGluZ05hbWU7Ci0gICAgICAgIHJlc291cmNlLnN1Z2dlc3Rl
ZEZpbGVuYW1lID0gcmVzcG9uc2Uuc3VnZ2VzdGVkRmlsZW5hbWU7Ci0gICAgICAgIHJlc291cmNl
LnN0YXR1c0NvZGUgPSByZXNwb25zZS5odHRwU3RhdHVzQ29kZTsKLSAgICAgICAgcmVzb3VyY2Uu
c3RhdHVzVGV4dCA9IHJlc3BvbnNlLmh0dHBTdGF0dXNUZXh0OwotCi0gICAgICAgIHJlc291cmNl
LnJlc3BvbnNlSGVhZGVycyA9IHJlc3BvbnNlLmh0dHBIZWFkZXJGaWVsZHM7Ci0gICAgICAgIHJl
c291cmNlLmNvbm5lY3Rpb25SZXVzZWQgPSByZXNwb25zZS5jb25uZWN0aW9uUmV1c2VkOwotICAg
ICAgICByZXNvdXJjZS5jb25uZWN0aW9uSUQgPSByZXNwb25zZS5jb25uZWN0aW9uSUQ7Ci0KLSAg
ICAgICAgaWYgKHJlc3BvbnNlLndhc0NhY2hlZCkKLSAgICAgICAgICAgIHJlc291cmNlLmNhY2hl
ZCA9IHRydWU7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJlc291cmNlLnRpbWluZyA9IHJl
c3BvbnNlLnRpbWluZzsKLQotICAgICAgICBpZiAocmVzcG9uc2UubG9hZEluZm8pIHsKLSAgICAg
ICAgICAgIGlmIChyZXNwb25zZS5sb2FkSW5mby5odHRwU3RhdHVzQ29kZSkKLSAgICAgICAgICAg
ICAgICByZXNvdXJjZS5zdGF0dXNDb2RlID0gcmVzcG9uc2UubG9hZEluZm8uaHR0cFN0YXR1c0Nv
ZGU7Ci0gICAgICAgICAgICBpZiAocmVzcG9uc2UubG9hZEluZm8uaHR0cFN0YXR1c1RleHQpCi0g
ICAgICAgICAgICAgICAgcmVzb3VyY2Uuc3RhdHVzVGV4dCA9IHJlc3BvbnNlLmxvYWRJbmZvLmh0
dHBTdGF0dXNUZXh0OwotICAgICAgICAgICAgcmVzb3VyY2UucmVxdWVzdEhlYWRlcnMgPSByZXNw
b25zZS5sb2FkSW5mby5yZXF1ZXN0SGVhZGVyczsKLSAgICAgICAgICAgIHJlc291cmNlLnJlc3Bv
bnNlSGVhZGVycyA9IHJlc3BvbnNlLmxvYWRJbmZvLnJlc3BvbnNlSGVhZGVyczsKLSAgICAgICAg
fQotICAgIH0sCi0KLSAgICBkaWRSZWNlaXZlQ29udGVudExlbmd0aDogZnVuY3Rpb24oaWRlbnRp
ZmllciwgdGltZSwgbGVuZ3RoUmVjZWl2ZWQpCi0gICAgewotICAgICAgICB2YXIgcmVzb3VyY2Ug
PSB0aGlzLl9yZXNvdXJjZXNCeUlkW2lkZW50aWZpZXJdOwotICAgICAgICBpZiAoIXJlc291cmNl
KQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIHJlc291cmNlLnJlc291cmNlU2l6ZSAr
PSBsZW5ndGhSZWNlaXZlZDsKLSAgICAgICAgcmVzb3VyY2UuZW5kVGltZSA9IHRpbWU7Ci0KLSAg
ICAgICAgV2ViSW5zcGVjdG9yLnBhbmVscy5uZXR3b3JrLnJlZnJlc2hSZXNvdXJjZShyZXNvdXJj
ZSk7Ci0gICAgfSwKLQotICAgIGRpZEZpbmlzaExvYWRpbmc6IGZ1bmN0aW9uKGlkZW50aWZpZXIs
IGZpbmlzaFRpbWUpCi0gICAgewotICAgICAgICB2YXIgcmVzb3VyY2UgPSB0aGlzLl9yZXNvdXJj
ZXNCeUlkW2lkZW50aWZpZXJdOwotICAgICAgICBpZiAoIXJlc291cmNlKQotICAgICAgICAgICAg
cmV0dXJuOwotCi0gICAgICAgIHJlc291cmNlLmVuZFRpbWUgPSBmaW5pc2hUaW1lOwotICAgICAg
ICByZXNvdXJjZS5maW5pc2hlZCA9IHRydWU7Ci0KLSAgICAgICAgV2ViSW5zcGVjdG9yLnBhbmVs
cy5uZXR3b3JrLnJlZnJlc2hSZXNvdXJjZShyZXNvdXJjZSk7Ci0gICAgICAgIFdlYkluc3BlY3Rv
ci5wYW5lbHMuYXVkaXRzLnJlc291cmNlRmluaXNoZWQocmVzb3VyY2UpOwotICAgICAgICBXZWJJ
bnNwZWN0b3IuZXh0ZW5zaW9uU2VydmVyLm5vdGlmeVJlc291cmNlRmluaXNoZWQocmVzb3VyY2Up
OwotICAgICAgICBkZWxldGUgdGhpcy5fcmVzb3VyY2VzQnlJZFtpZGVudGlmaWVyXTsKLSAgICB9
LAotCi0gICAgZGlkRmFpbExvYWRpbmc6IGZ1bmN0aW9uKGlkZW50aWZpZXIsIHRpbWUsIGxvY2Fs
aXplZERlc2NyaXB0aW9uKQotICAgIHsKLSAgICAgICAgdmFyIHJlc291cmNlID0gdGhpcy5fcmVz
b3VyY2VzQnlJZFtpZGVudGlmaWVyXTsKLSAgICAgICAgaWYgKCFyZXNvdXJjZSkKLSAgICAgICAg
ICAgIHJldHVybjsKLQotICAgICAgICByZXNvdXJjZS5mYWlsZWQgPSB0cnVlOwotICAgICAgICBy
ZXNvdXJjZS5sb2NhbGl6ZWRGYWlsRGVzY3JpcHRpb24gPSBsb2NhbGl6ZWREZXNjcmlwdGlvbjsK
LSAgICAgICAgcmVzb3VyY2UuZmluaXNoZWQgPSB0cnVlOwotICAgICAgICByZXNvdXJjZS5lbmRU
aW1lID0gdGltZTsKLQotICAgICAgICBXZWJJbnNwZWN0b3IucGFuZWxzLm5ldHdvcmsucmVmcmVz
aFJlc291cmNlKHJlc291cmNlKTsKLSAgICAgICAgV2ViSW5zcGVjdG9yLnBhbmVscy5hdWRpdHMu
cmVzb3VyY2VGaW5pc2hlZChyZXNvdXJjZSk7Ci0gICAgICAgIFdlYkluc3BlY3Rvci5leHRlbnNp
b25TZXJ2ZXIubm90aWZ5UmVzb3VyY2VGaW5pc2hlZChyZXNvdXJjZSk7Ci0gICAgICAgIGRlbGV0
ZSB0aGlzLl9yZXNvdXJjZXNCeUlkW2lkZW50aWZpZXJdOwotICAgIH0sCi0KLSAgICBkaWRMb2Fk
UmVzb3VyY2VGcm9tTWVtb3J5Q2FjaGU6IGZ1bmN0aW9uKHRpbWUsIGNhY2hlZFJlc291cmNlKQot
ICAgIHsKLSAgICAgICAgdmFyIHJlc291cmNlID0gdGhpcy5fY3JlYXRlUmVzb3VyY2UobnVsbCwg
Y2FjaGVkUmVzb3VyY2UudXJsLCBjYWNoZWRSZXNvdXJjZS5sb2FkZXIpOwotICAgICAgICB0aGlz
Ll91cGRhdGVSZXNvdXJjZVdpdGhDYWNoZWRSZXNvdXJjZShyZXNvdXJjZSwgY2FjaGVkUmVzb3Vy
Y2UpOwotICAgICAgICByZXNvdXJjZS5jYWNoZWQgPSB0cnVlOwotICAgICAgICByZXNvdXJjZS5y
ZXF1ZXN0TWV0aG9kID0gIkdFVCI7Ci0gICAgICAgIHJlc291cmNlLnN0YXJ0VGltZSA9IHJlc291
cmNlLnJlc3BvbnNlUmVjZWl2ZWRUaW1lID0gcmVzb3VyY2UuZW5kVGltZSA9IHRpbWU7Ci0gICAg
ICAgIHJlc291cmNlLmZpbmlzaGVkID0gdHJ1ZTsKLQotICAgICAgICBXZWJJbnNwZWN0b3IucGFu
ZWxzLm5ldHdvcmsucmVmcmVzaFJlc291cmNlKHJlc291cmNlKTsKLSAgICAgICAgV2ViSW5zcGVj
dG9yLnBhbmVscy5hdWRpdHMucmVzb3VyY2VTdGFydGVkKHJlc291cmNlKTsKLSAgICAgICAgV2Vi
SW5zcGVjdG9yLnBhbmVscy5hdWRpdHMucmVzb3VyY2VGaW5pc2hlZChyZXNvdXJjZSk7Ci0gICAg
ICAgIHRoaXMuX3Jlc291cmNlVHJlZU1vZGVsLmFkZFJlc291cmNlVG9GcmFtZShyZXNvdXJjZS5s
b2FkZXIuZnJhbWVJZCwgcmVzb3VyY2UpOwotICAgIH0sCi0KLSAgICBfdXBkYXRlUmVzb3VyY2VX
aXRoQ2FjaGVkUmVzb3VyY2U6IGZ1bmN0aW9uKHJlc291cmNlLCBjYWNoZWRSZXNvdXJjZSkKLSAg
ICB7Ci0gICAgICAgIHJlc291cmNlLnR5cGUgPSBXZWJJbnNwZWN0b3IuUmVzb3VyY2UuVHlwZVtj
YWNoZWRSZXNvdXJjZS50eXBlXTsKLSAgICAgICAgcmVzb3VyY2UucmVzb3VyY2VTaXplID0gY2Fj
aGVkUmVzb3VyY2UuZW5jb2RlZFNpemU7Ci0gICAgICAgIHRoaXMuX3VwZGF0ZVJlc291cmNlV2l0
aFJlc3BvbnNlKHJlc291cmNlLCBjYWNoZWRSZXNvdXJjZS5yZXNwb25zZSk7Ci0gICAgfSwKLQot
ICAgIHNldEluaXRpYWxDb250ZW50OiBmdW5jdGlvbihpZGVudGlmaWVyLCBzb3VyY2VTdHJpbmcs
IHR5cGUpCi0gICAgewotICAgICAgICB2YXIgcmVzb3VyY2UgPSBXZWJJbnNwZWN0b3IucGFuZWxz
Lm5ldHdvcmsucmVzb3VyY2VzW2lkZW50aWZpZXJdOwotICAgICAgICBpZiAoIXJlc291cmNlKQot
ICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIHJlc291cmNlLnR5cGUgPSBXZWJJbnNwZWN0
b3IuUmVzb3VyY2UuVHlwZVt0eXBlXTsKLSAgICAgICAgcmVzb3VyY2Uuc2V0SW5pdGlhbENvbnRl
bnQoc291cmNlU3RyaW5nKTsKLSAgICAgICAgV2ViSW5zcGVjdG9yLnBhbmVscy5yZXNvdXJjZXMu
cmVmcmVzaFJlc291cmNlKHJlc291cmNlKTsKLSAgICAgICAgV2ViSW5zcGVjdG9yLnBhbmVscy5u
ZXR3b3JrLnJlZnJlc2hSZXNvdXJjZShyZXNvdXJjZSk7Ci0gICAgfSwKLQotICAgIGRpZENvbW1p
dExvYWRGb3JGcmFtZTogZnVuY3Rpb24oZnJhbWUsIGxvYWRlcikKLSAgICB7Ci0gICAgICAgIHRo
aXMuX3Jlc291cmNlVHJlZU1vZGVsLmRpZENvbW1pdExvYWRGb3JGcmFtZShmcmFtZSwgbG9hZGVy
KTsKLSAgICAgICAgaWYgKCFmcmFtZS5wYXJlbnRJZCkgewotICAgICAgICAgICAgdmFyIG1haW5S
ZXNvdXJjZSA9IHRoaXMucmVzb3VyY2VGb3JVUkwoZnJhbWUudXJsKTsKLSAgICAgICAgICAgIGlm
IChtYWluUmVzb3VyY2UpIHsKLSAgICAgICAgICAgICAgICBXZWJJbnNwZWN0b3IubWFpblJlc291
cmNlID0gbWFpblJlc291cmNlOwotICAgICAgICAgICAgICAgIG1haW5SZXNvdXJjZS5pc01haW5S
ZXNvdXJjZSA9IHRydWU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9LAotCi0gICAg
ZnJhbWVEZXRhY2hlZEZyb21QYXJlbnQ6IGZ1bmN0aW9uKGZyYW1lSWQpCi0gICAgewotICAgICAg
ICB0aGlzLl9yZXNvdXJjZVRyZWVNb2RlbC5mcmFtZURldGFjaGVkRnJvbVBhcmVudChmcmFtZUlk
KTsKLSAgICB9LAotCi0gICAgZGlkQ3JlYXRlV2ViU29ja2V0OiBmdW5jdGlvbihpZGVudGlmaWVy
LCByZXF1ZXN0VVJMKQotICAgIHsKLSAgICAgICAgdmFyIHJlc291cmNlID0gdGhpcy5fY3JlYXRl
UmVzb3VyY2UoaWRlbnRpZmllciwgcmVxdWVzdFVSTCk7Ci0gICAgICAgIHJlc291cmNlLnR5cGUg
PSBXZWJJbnNwZWN0b3IuUmVzb3VyY2UuVHlwZS5XZWJTb2NrZXQ7Ci0gICAgICAgIFdlYkluc3Bl
Y3Rvci5wYW5lbHMubmV0d29yay5yZWZyZXNoUmVzb3VyY2UocmVzb3VyY2UpOwotICAgIH0sCi0K
LSAgICB3aWxsU2VuZFdlYlNvY2tldEhhbmRzaGFrZVJlcXVlc3Q6IGZ1bmN0aW9uKGlkZW50aWZp
ZXIsIHRpbWUsIHJlcXVlc3QpCi0gICAgewotICAgICAgICB2YXIgcmVzb3VyY2UgPSB0aGlzLl9y
ZXNvdXJjZXNCeUlkW2lkZW50aWZpZXJdOwotICAgICAgICBpZiAoIXJlc291cmNlKQotICAgICAg
ICAgICAgcmV0dXJuOwotCi0gICAgICAgIHJlc291cmNlLnJlcXVlc3RNZXRob2QgPSAiR0VUIjsK
LSAgICAgICAgcmVzb3VyY2UucmVxdWVzdEhlYWRlcnMgPSByZXF1ZXN0LndlYlNvY2tldEhlYWRl
ckZpZWxkczsKLSAgICAgICAgcmVzb3VyY2Uud2ViU29ja2V0UmVxdWVzdEtleTMgPSByZXF1ZXN0
LndlYlNvY2tldFJlcXVlc3RLZXkzOwotICAgICAgICByZXNvdXJjZS5zdGFydFRpbWUgPSB0aW1l
OwotCi0gICAgICAgIFdlYkluc3BlY3Rvci5wYW5lbHMubmV0d29yay5yZWZyZXNoUmVzb3VyY2Uo
cmVzb3VyY2UpOwotICAgIH0sCi0KLSAgICBkaWRSZWNlaXZlV2ViU29ja2V0SGFuZHNoYWtlUmVz
cG9uc2U6IGZ1bmN0aW9uKGlkZW50aWZpZXIsIHRpbWUsIHJlc3BvbnNlKQotICAgIHsKLSAgICAg
ICAgdmFyIHJlc291cmNlID0gdGhpcy5fcmVzb3VyY2VzQnlJZFtpZGVudGlmaWVyXTsKLSAgICAg
ICAgaWYgKCFyZXNvdXJjZSkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICByZXNvdXJj
ZS5zdGF0dXNDb2RlID0gcmVzcG9uc2Uuc3RhdHVzQ29kZTsKLSAgICAgICAgcmVzb3VyY2Uuc3Rh
dHVzVGV4dCA9IHJlc3BvbnNlLnN0YXR1c1RleHQ7Ci0gICAgICAgIHJlc291cmNlLnJlc3BvbnNl
SGVhZGVycyA9IHJlc3BvbnNlLndlYlNvY2tldEhlYWRlckZpZWxkczsKLSAgICAgICAgcmVzb3Vy
Y2Uud2ViU29ja2V0Q2hhbGxlbmdlUmVzcG9uc2UgPSByZXNwb25zZS53ZWJTb2NrZXRDaGFsbGVu
Z2VSZXNwb25zZTsKLSAgICAgICAgcmVzb3VyY2UucmVzcG9uc2VSZWNlaXZlZFRpbWUgPSB0aW1l
OwotCi0gICAgICAgIFdlYkluc3BlY3Rvci5wYW5lbHMubmV0d29yay5yZWZyZXNoUmVzb3VyY2Uo
cmVzb3VyY2UpOwotICAgIH0sCi0KLSAgICBkaWRDbG9zZVdlYlNvY2tldDogZnVuY3Rpb24oaWRl
bnRpZmllciwgdGltZSkKLSAgICB7Ci0gICAgICAgIHZhciByZXNvdXJjZSA9IHRoaXMuX3Jlc291
cmNlc0J5SWRbaWRlbnRpZmllcl07Ci0gICAgICAgIGlmICghcmVzb3VyY2UpCi0gICAgICAgICAg
ICByZXR1cm47Ci0gICAgICAgIHJlc291cmNlLmVuZFRpbWUgPSB0aW1lOwotCi0gICAgICAgIFdl
Ykluc3BlY3Rvci5wYW5lbHMubmV0d29yay5yZWZyZXNoUmVzb3VyY2UocmVzb3VyY2UpOwotICAg
IH0sCi0KLSAgICBfcHJvY2Vzc0NhY2hlZFJlc291cmNlczogZnVuY3Rpb24obWFpbkZyYW1lUGF5
bG9hZCkKLSAgICB7Ci0gICAgICAgIHZhciBtYWluUmVzb3VyY2UgPSB0aGlzLl9hZGRGcmFtZXNS
ZWN1cnNpdmVseShtYWluRnJhbWVQYXlsb2FkKTsKLSAgICAgICAgV2ViSW5zcGVjdG9yLm1haW5S
ZXNvdXJjZSA9IG1haW5SZXNvdXJjZTsKLSAgICAgICAgbWFpblJlc291cmNlLmlzTWFpblJlc291
cmNlID0gdHJ1ZTsKLSAgICB9LAotCi0gICAgX2FkZEZyYW1lc1JlY3Vyc2l2ZWx5OiBmdW5jdGlv
bihmcmFtZVBheWxvYWQpCi0gICAgewotICAgICAgICB2YXIgZnJhbWVSZXNvdXJjZSA9IHRoaXMu
X2NyZWF0ZVJlc291cmNlKG51bGwsIGZyYW1lUGF5bG9hZC5yZXNvdXJjZS51cmwsIGZyYW1lUGF5
bG9hZC5yZXNvdXJjZS5sb2FkZXIpOwotICAgICAgICB0aGlzLl91cGRhdGVSZXNvdXJjZVdpdGhS
ZXF1ZXN0KGZyYW1lUmVzb3VyY2UsIGZyYW1lUGF5bG9hZC5yZXNvdXJjZS5yZXF1ZXN0KTsKLSAg
ICAgICAgdGhpcy5fdXBkYXRlUmVzb3VyY2VXaXRoUmVzcG9uc2UoZnJhbWVSZXNvdXJjZSwgZnJh
bWVQYXlsb2FkLnJlc291cmNlLnJlc3BvbnNlKTsKLSAgICAgICAgZnJhbWVSZXNvdXJjZS50eXBl
ID0gV2ViSW5zcGVjdG9yLlJlc291cmNlLlR5cGVbIkRvY3VtZW50Il07Ci0gICAgICAgIGZyYW1l
UmVzb3VyY2UuZmluaXNoZWQgPSB0cnVlOwotICAgICAgICB0aGlzLl9iaW5kUmVzb3VyY2VVUkwo
ZnJhbWVSZXNvdXJjZSk7Ci0KLSAgICAgICAgdGhpcy5fcmVzb3VyY2VUcmVlTW9kZWwuYWRkT3JV
cGRhdGVGcmFtZShmcmFtZVBheWxvYWQpOwotICAgICAgICB0aGlzLl9yZXNvdXJjZVRyZWVNb2Rl
bC5hZGRSZXNvdXJjZVRvRnJhbWUoZnJhbWVQYXlsb2FkLmlkLCBmcmFtZVJlc291cmNlKTsKLQot
ICAgICAgICBmb3IgKHZhciBpID0gMDsgZnJhbWVQYXlsb2FkLmNoaWxkcmVuICYmIGkgPCBmcmFt
ZVBheWxvYWQuY2hpbGRyZW4ubGVuZ3RoOyArK2kpCi0gICAgICAgICAgICB0aGlzLl9hZGRGcmFt
ZXNSZWN1cnNpdmVseShmcmFtZVBheWxvYWQuY2hpbGRyZW5baV0pOwotCi0gICAgICAgIGlmICgh
ZnJhbWVQYXlsb2FkLnN1YnJlc291cmNlcykKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAg
ICBmb3IgKHZhciBpID0gMDsgaSA8IGZyYW1lUGF5bG9hZC5zdWJyZXNvdXJjZXMubGVuZ3RoOyAr
K2kpIHsKLSAgICAgICAgICAgIHZhciBjYWNoZWRSZXNvdXJjZSA9IGZyYW1lUGF5bG9hZC5zdWJy
ZXNvdXJjZXNbaV07Ci0gICAgICAgICAgICB2YXIgcmVzb3VyY2UgPSB0aGlzLl9jcmVhdGVSZXNv
dXJjZShudWxsLCBjYWNoZWRSZXNvdXJjZS51cmwsIGNhY2hlZFJlc291cmNlLmxvYWRlcik7Ci0g
ICAgICAgICAgICB0aGlzLl91cGRhdGVSZXNvdXJjZVdpdGhDYWNoZWRSZXNvdXJjZShyZXNvdXJj
ZSwgY2FjaGVkUmVzb3VyY2UpOwotICAgICAgICAgICAgcmVzb3VyY2UuZmluaXNoZWQgPSB0cnVl
OwotICAgICAgICAgICAgdGhpcy5fYmluZFJlc291cmNlVVJMKHJlc291cmNlKTsKLSAgICAgICAg
ICAgIHRoaXMuX3Jlc291cmNlVHJlZU1vZGVsLmFkZFJlc291cmNlVG9GcmFtZShmcmFtZVBheWxv
YWQuaWQsIHJlc291cmNlKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gZnJhbWVSZXNvdXJj
ZTsKLSAgICB9LAotCi0gICAgcmVzb3VyY2VGb3JVUkw6IGZ1bmN0aW9uKHVybCkKLSAgICB7Ci0g
ICAgICAgIC8vIEZJWE1FOiByZWNlaXZlIGZyYW1lSWQgaGVyZS4KLSAgICAgICAgdmFyIGVudHJ5
ID0gdGhpcy5fcmVzb3VyY2VzQnlVUkxbdXJsXTsKLSAgICAgICAgaWYgKGVudHJ5IGluc3RhbmNl
b2YgQXJyYXkpCi0gICAgICAgICAgICByZXR1cm4gZW50cnlbMF07Ci0gICAgICAgIHJldHVybiBl
bnRyeTsKLSAgICB9LAotCi0gICAgYWRkQ29uc29sZU1lc3NhZ2U6IGZ1bmN0aW9uKG1zZykKLSAg
ICB7Ci0gICAgICAgIHZhciByZXNvdXJjZSA9IHRoaXMucmVzb3VyY2VGb3JVUkwobXNnLnVybCk7
Ci0gICAgICAgIGlmICghcmVzb3VyY2UpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAg
c3dpdGNoIChtc2cubGV2ZWwpIHsKLSAgICAgICAgY2FzZSBXZWJJbnNwZWN0b3IuQ29uc29sZU1l
c3NhZ2UuTWVzc2FnZUxldmVsLldhcm5pbmc6Ci0gICAgICAgICAgICByZXNvdXJjZS53YXJuaW5n
cyArPSBtc2cucmVwZWF0RGVsdGE7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBX
ZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2UuTWVzc2FnZUxldmVsLkVycm9yOgotICAgICAgICAg
ICAgcmVzb3VyY2UuZXJyb3JzICs9IG1zZy5yZXBlYXREZWx0YTsKLSAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICB9Ci0KLSAgICAgICAgdmFyIHZpZXcgPSBXZWJJbnNwZWN0b3IuUmVzb3VyY2VN
YW5hZ2VyLnJlc291cmNlVmlld0ZvclJlc291cmNlKHJlc291cmNlKTsKLSAgICAgICAgaWYgKHZp
ZXcuYWRkTWVzc2FnZSkKLSAgICAgICAgICAgIHZpZXcuYWRkTWVzc2FnZShtc2cpOwotICAgIH0s
Ci0KLSAgICBjbGVhckNvbnNvbGVNZXNzYWdlczogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAg
ZnVuY3Rpb24gY2FsbGJhY2socmVzb3VyY2UpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJlc291
cmNlLmNsZWFyRXJyb3JzQW5kV2FybmluZ3MoKTsKLSAgICAgICAgfQotICAgICAgICB0aGlzLl9y
ZXNvdXJjZVRyZWVNb2RlbC5mb3JBbGxSZXNvdXJjZXMoY2FsbGJhY2spOwotICAgIH0sCi0KLSAg
ICBmb3JBbGxSZXNvdXJjZXM6IGZ1bmN0aW9uKGNhbGxiYWNrKQotICAgIHsKLSAgICAgICAgdGhp
cy5fcmVzb3VyY2VUcmVlTW9kZWwuZm9yQWxsUmVzb3VyY2VzKGNhbGxiYWNrKTsKLSAgICB9LAot
Ci0gICAgX2JpbmRSZXNvdXJjZVVSTDogZnVuY3Rpb24ocmVzb3VyY2UpCi0gICAgewotICAgICAg
ICB2YXIgcmVzb3VyY2VGb3JVUkwgPSB0aGlzLl9yZXNvdXJjZXNCeVVSTFtyZXNvdXJjZS51cmxd
OwotICAgICAgICBpZiAoIXJlc291cmNlRm9yVVJMKQotICAgICAgICAgICAgdGhpcy5fcmVzb3Vy
Y2VzQnlVUkxbcmVzb3VyY2UudXJsXSA9IHJlc291cmNlOwotICAgICAgICBlbHNlIGlmIChyZXNv
dXJjZUZvclVSTCBpbnN0YW5jZW9mIEFycmF5KQotICAgICAgICAgICAgcmVzb3VyY2VGb3JVUkwu
cHVzaChyZXNvdXJjZSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHRoaXMuX3Jlc291cmNl
c0J5VVJMW3Jlc291cmNlLnVybF0gPSBbcmVzb3VyY2VGb3JVUkwsIHJlc291cmNlXTsKLSAgICB9
LAotCi0gICAgX3VuYmluZFJlc291cmNlVVJMOiBmdW5jdGlvbihyZXNvdXJjZSkKLSAgICB7Ci0g
ICAgICAgIHZhciByZXNvdXJjZUZvclVSTCA9IHRoaXMuX3Jlc291cmNlc0J5VVJMW3Jlc291cmNl
LnVybF07Ci0gICAgICAgIGlmICghcmVzb3VyY2VGb3JVUkwpCi0gICAgICAgICAgICByZXR1cm47
Ci0KLSAgICAgICAgaWYgKHJlc291cmNlRm9yVVJMIGluc3RhbmNlb2YgQXJyYXkpIHsKLSAgICAg
ICAgICAgIHJlc291cmNlRm9yVVJMLnJlbW92ZShyZXNvdXJjZSwgdHJ1ZSk7Ci0gICAgICAgICAg
ICBpZiAocmVzb3VyY2VGb3JVUkwubGVuZ3RoID09PSAxKQotICAgICAgICAgICAgICAgIHRoaXMu
X3Jlc291cmNlc0J5VVJMW3Jlc291cmNlLnVybF0gPSByZXNvdXJjZUZvclVSTFswXTsKLSAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIGRlbGV0ZSB0aGlzLl9yZXNvdXJj
ZXNCeVVSTFtyZXNvdXJjZS51cmxdOwotICAgIH0sCi0KLSAgICB1cGRhdGVET01TdG9yYWdlOiBm
dW5jdGlvbihzdG9yYWdlSWQpCi0gICAgewotICAgICAgICBXZWJJbnNwZWN0b3IucGFuZWxzLnJl
c291cmNlcy51cGRhdGVET01TdG9yYWdlKHN0b3JhZ2VJZCk7Ci0gICAgfSwKLQotICAgIHVwZGF0
ZUFwcGxpY2F0aW9uQ2FjaGVTdGF0dXM6IGZ1bmN0aW9uKHN0YXR1cykKLSAgICB7Ci0gICAgICAg
IFdlYkluc3BlY3Rvci5wYW5lbHMucmVzb3VyY2VzLnVwZGF0ZUFwcGxpY2F0aW9uQ2FjaGVTdGF0
dXMoc3RhdHVzKTsKLSAgICB9LAotCi0gICAgZGlkR2V0RmlsZVN5c3RlbVBhdGg6IGZ1bmN0aW9u
KHJvb3QsIHR5cGUsIG9yaWdpbikKLSAgICB7Ci0gICAgICAgIFdlYkluc3BlY3Rvci5wYW5lbHMu
cmVzb3VyY2VzLnVwZGF0ZUZpbGVTeXN0ZW1QYXRoKHJvb3QsIHR5cGUsIG9yaWdpbik7Ci0gICAg
fSwKLQotICAgIGRpZEdldEZpbGVTeXN0ZW1FcnJvcjogZnVuY3Rpb24odHlwZSwgb3JpZ2luKQot
ICAgIHsKLSAgICAgICAgV2ViSW5zcGVjdG9yLnBhbmVscy5yZXNvdXJjZXMudXBkYXRlRmlsZVN5
c3RlbUVycm9yKHR5cGUsIG9yaWdpbik7Ci0gICAgfSwKLQotICAgIGRpZEdldEZpbGVTeXN0ZW1E
aXNhYmxlZDogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgV2ViSW5zcGVjdG9yLnBhbmVscy5y
ZXNvdXJjZXMuc2V0RmlsZVN5c3RlbURpc2FibGVkKCk7Ci0gICAgfSwKLQotICAgIHVwZGF0ZU5l
dHdvcmtTdGF0ZTogZnVuY3Rpb24oaXNOb3dPbmxpbmUpCi0gICAgewotICAgICAgICBXZWJJbnNw
ZWN0b3IucGFuZWxzLnJlc291cmNlcy51cGRhdGVOZXR3b3JrU3RhdGUoaXNOb3dPbmxpbmUpOwot
ICAgIH0sCi0KLSAgICBhZGRET01TdG9yYWdlOiBmdW5jdGlvbihwYXlsb2FkKQotICAgIHsKLSAg
ICAgICAgaWYgKCFXZWJJbnNwZWN0b3IucGFuZWxzLnJlc291cmNlcykKLSAgICAgICAgICAgIHJl
dHVybjsKLSAgICAgICAgdmFyIGRvbVN0b3JhZ2UgPSBuZXcgV2ViSW5zcGVjdG9yLkRPTVN0b3Jh
Z2UoCi0gICAgICAgICAgICBwYXlsb2FkLmlkLAotICAgICAgICAgICAgcGF5bG9hZC5ob3N0LAot
ICAgICAgICAgICAgcGF5bG9hZC5pc0xvY2FsU3RvcmFnZSk7Ci0gICAgICAgIFdlYkluc3BlY3Rv
ci5wYW5lbHMucmVzb3VyY2VzLmFkZERPTVN0b3JhZ2UoZG9tU3RvcmFnZSk7Ci0gICAgfSwKLQot
ICAgIHNlbGVjdERPTVN0b3JhZ2U6IGZ1bmN0aW9uKG8pCi0gICAgewotICAgICAgICBXZWJJbnNw
ZWN0b3Iuc2hvd1BhbmVsKCJyZXNvdXJjZXMiKTsKLSAgICAgICAgV2ViSW5zcGVjdG9yLnBhbmVs
cy5yZXNvdXJjZXMuc2VsZWN0RE9NU3RvcmFnZShvKTsKLSAgICB9LAotCi0gICAgYWRkRGF0YWJh
c2U6IGZ1bmN0aW9uKHBheWxvYWQpCi0gICAgewotICAgICAgICBpZiAoIVdlYkluc3BlY3Rvci5w
YW5lbHMucmVzb3VyY2VzKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB2YXIgZGF0YWJh
c2UgPSBuZXcgV2ViSW5zcGVjdG9yLkRhdGFiYXNlKAotICAgICAgICAgICAgcGF5bG9hZC5pZCwK
LSAgICAgICAgICAgIHBheWxvYWQuZG9tYWluLAotICAgICAgICAgICAgcGF5bG9hZC5uYW1lLAot
ICAgICAgICAgICAgcGF5bG9hZC52ZXJzaW9uKTsKLSAgICAgICAgV2ViSW5zcGVjdG9yLnBhbmVs
cy5yZXNvdXJjZXMuYWRkRGF0YWJhc2UoZGF0YWJhc2UpOwotICAgIH0sCi0KLSAgICBzZWxlY3RE
YXRhYmFzZTogZnVuY3Rpb24obykKLSAgICB7Ci0gICAgICAgIFdlYkluc3BlY3Rvci5zaG93UGFu
ZWwoInJlc291cmNlcyIpOwotICAgICAgICBXZWJJbnNwZWN0b3IucGFuZWxzLnJlc291cmNlcy5z
ZWxlY3REYXRhYmFzZShvKTsKLSAgICB9LAotCi0gICAgc3FsVHJhbnNhY3Rpb25TdWNjZWVkZWQ6
IGZ1bmN0aW9uKHRyYW5zYWN0aW9uSWQsIGNvbHVtbk5hbWVzLCB2YWx1ZXMpCi0gICAgewotICAg
ICAgICB2YXIgY2FsbGJhY2sgPSBXZWJJbnNwZWN0b3IuRGF0YWJhc2Uuc3VjY2Vzc0NhbGxiYWNr
c1t0cmFuc2FjdGlvbklkXTsKLSAgICAgICAgaWYgKCFjYWxsYmFjaykKLSAgICAgICAgICAgIHJl
dHVybjsKLSAgICAgICAgZGVsZXRlIFdlYkluc3BlY3Rvci5EYXRhYmFzZS5zdWNjZXNzQ2FsbGJh
Y2tzW3RyYW5zYWN0aW9uSWRdOwotICAgICAgICBjYWxsYmFjayhjb2x1bW5OYW1lcywgdmFsdWVz
KTsKLSAgICB9LAotCi0gICAgc3FsVHJhbnNhY3Rpb25GYWlsZWQ6IGZ1bmN0aW9uKHRyYW5zYWN0
aW9uSWQsIGVycm9yT2JqKQotICAgIHsKLSAgICAgICAgdmFyIGNhbGxiYWNrID0gV2ViSW5zcGVj
dG9yLkRhdGFiYXNlLmVycm9yQ2FsbGJhY2tzW3RyYW5zYWN0aW9uSWRdOwotICAgICAgICBpZiAo
IWNhbGxiYWNrKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBkZWxldGUgV2ViSW5zcGVj
dG9yLkRhdGFiYXNlLmVycm9yQ2FsbGJhY2tzW3RyYW5zYWN0aW9uSWRdOwotICAgICAgICBjYWxs
YmFjayhlcnJvck9iaik7Ci0gICAgfQotfQotCi1XZWJJbnNwZWN0b3IuUmVzb3VyY2VNYW5hZ2Vy
LmNyZWF0ZVJlc291cmNlVmlldyA9IGZ1bmN0aW9uKHJlc291cmNlKQotewotICAgIHN3aXRjaCAo
cmVzb3VyY2UuY2F0ZWdvcnkpIHsKLSAgICBjYXNlIFdlYkluc3BlY3Rvci5yZXNvdXJjZUNhdGVn
b3JpZXMuZG9jdW1lbnRzOgotICAgIGNhc2UgV2ViSW5zcGVjdG9yLnJlc291cmNlQ2F0ZWdvcmll
cy5zdHlsZXNoZWV0czoKLSAgICBjYXNlIFdlYkluc3BlY3Rvci5yZXNvdXJjZUNhdGVnb3JpZXMu
c2NyaXB0czoKLSAgICBjYXNlIFdlYkluc3BlY3Rvci5yZXNvdXJjZUNhdGVnb3JpZXMueGhyOgot
ICAgICAgICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5Tb3VyY2VWaWV3KHJlc291cmNlKTsKLSAg
ICBjYXNlIFdlYkluc3BlY3Rvci5yZXNvdXJjZUNhdGVnb3JpZXMuaW1hZ2VzOgotICAgICAgICBy
ZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5JbWFnZVZpZXcocmVzb3VyY2UpOwotICAgIGNhc2UgV2Vi
SW5zcGVjdG9yLnJlc291cmNlQ2F0ZWdvcmllcy5mb250czoKLSAgICAgICAgcmV0dXJuIG5ldyBX
ZWJJbnNwZWN0b3IuRm9udFZpZXcocmVzb3VyY2UpOwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJl
dHVybiBuZXcgV2ViSW5zcGVjdG9yLlJlc291cmNlVmlldyhyZXNvdXJjZSk7Ci0gICAgfQotfQot
Ci1XZWJJbnNwZWN0b3IuUmVzb3VyY2VNYW5hZ2VyLnJlc291cmNlVmlld1R5cGVNYXRjaGVzUmVz
b3VyY2UgPSBmdW5jdGlvbihyZXNvdXJjZSkKLXsKLSAgICB2YXIgcmVzb3VyY2VWaWV3ID0gcmVz
b3VyY2UuX3Jlc291cmNlc1ZpZXc7Ci0gICAgc3dpdGNoIChyZXNvdXJjZS5jYXRlZ29yeSkgewot
ICAgIGNhc2UgV2ViSW5zcGVjdG9yLnJlc291cmNlQ2F0ZWdvcmllcy5kb2N1bWVudHM6Ci0gICAg
Y2FzZSBXZWJJbnNwZWN0b3IucmVzb3VyY2VDYXRlZ29yaWVzLnN0eWxlc2hlZXRzOgotICAgIGNh
c2UgV2ViSW5zcGVjdG9yLnJlc291cmNlQ2F0ZWdvcmllcy5zY3JpcHRzOgotICAgIGNhc2UgV2Vi
SW5zcGVjdG9yLnJlc291cmNlQ2F0ZWdvcmllcy54aHI6Ci0gICAgICAgIHJldHVybiByZXNvdXJj
ZVZpZXcuX19wcm90b19fID09PSBXZWJJbnNwZWN0b3IuU291cmNlVmlldy5wcm90b3R5cGU7Ci0g
ICAgY2FzZSBXZWJJbnNwZWN0b3IucmVzb3VyY2VDYXRlZ29yaWVzLmltYWdlczoKLSAgICAgICAg
cmV0dXJuIHJlc291cmNlVmlldy5fX3Byb3RvX18gPT09IFdlYkluc3BlY3Rvci5JbWFnZVZpZXcu
cHJvdG90eXBlOwotICAgIGNhc2UgV2ViSW5zcGVjdG9yLnJlc291cmNlQ2F0ZWdvcmllcy5mb250
czoKLSAgICAgICAgcmV0dXJuIHJlc291cmNlVmlldy5fX3Byb3RvX18gPT09IFdlYkluc3BlY3Rv
ci5Gb250Vmlldy5wcm90b3R5cGU7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgcmV0dXJuIHJlc291
cmNlVmlldy5fX3Byb3RvX18gPT09IFdlYkluc3BlY3Rvci5SZXNvdXJjZVZpZXcucHJvdG90eXBl
OwotICAgIH0KLX0KLQotV2ViSW5zcGVjdG9yLlJlc291cmNlTWFuYWdlci5yZXNvdXJjZVZpZXdG
b3JSZXNvdXJjZSA9IGZ1bmN0aW9uKHJlc291cmNlKQotewotICAgIGlmICghcmVzb3VyY2UpCi0g
ICAgICAgIHJldHVybiBudWxsOwotICAgIGlmICghcmVzb3VyY2UuX3Jlc291cmNlc1ZpZXcpCi0g
ICAgICAgIHJlc291cmNlLl9yZXNvdXJjZXNWaWV3ID0gV2ViSW5zcGVjdG9yLlJlc291cmNlTWFu
YWdlci5jcmVhdGVSZXNvdXJjZVZpZXcocmVzb3VyY2UpOwotICAgIHJldHVybiByZXNvdXJjZS5f
cmVzb3VyY2VzVmlldzsKLX0KLQotV2ViSW5zcGVjdG9yLlJlc291cmNlTWFuYWdlci5yZWNyZWF0
ZVJlc291cmNlVmlldyA9IGZ1bmN0aW9uKHJlc291cmNlKQotewotICAgIHZhciBuZXdWaWV3ID0g
V2ViSW5zcGVjdG9yLlJlc291cmNlTWFuYWdlci5jcmVhdGVSZXNvdXJjZVZpZXcocmVzb3VyY2Up
OwotCi0gICAgdmFyIG9sZFZpZXcgPSByZXNvdXJjZS5fcmVzb3VyY2VzVmlldzsKLSAgICB2YXIg
b2xkVmlld1BhcmVudE5vZGUgPSBvbGRWaWV3LnZpc2libGUgPyBvbGRWaWV3LmVsZW1lbnQucGFy
ZW50Tm9kZSA6IG51bGw7Ci0gICAgdmFyIHNjcm9sbFRvcCA9IG9sZFZpZXcuc2Nyb2xsVG9wOwot
Ci0gICAgcmVzb3VyY2UuX3Jlc291cmNlc1ZpZXcuZGV0YWNoKCk7Ci0gICAgZGVsZXRlIHJlc291
cmNlLl9yZXNvdXJjZXNWaWV3OwotCi0gICAgcmVzb3VyY2UuX3Jlc291cmNlc1ZpZXcgPSBuZXdW
aWV3OwotCi0gICAgaWYgKG9sZFZpZXdQYXJlbnROb2RlKQotICAgICAgICBuZXdWaWV3LnNob3co
b2xkVmlld1BhcmVudE5vZGUpOwotICAgIGlmIChzY3JvbGxUb3ApCi0gICAgICAgIG5ld1ZpZXcu
c2Nyb2xsVG9wID0gc2Nyb2xsVG9wOwotCi0gICAgV2ViSW5zcGVjdG9yLnBhbmVscy5zY3JpcHRz
LnZpZXdSZWNyZWF0ZWQob2xkVmlldywgbmV3Vmlldyk7Ci0gICAgcmV0dXJuIG5ld1ZpZXc7Ci19
Ci0KLVdlYkluc3BlY3Rvci5SZXNvdXJjZU1hbmFnZXIuZXhpc3RpbmdSZXNvdXJjZVZpZXdGb3JS
ZXNvdXJjZSA9IGZ1bmN0aW9uKHJlc291cmNlKQotewotICAgIGlmICghcmVzb3VyY2UpCi0gICAg
ICAgIHJldHVybiBudWxsOwotICAgIHJldHVybiByZXNvdXJjZS5fcmVzb3VyY2VzVmlldzsKLX0K
LQotV2ViSW5zcGVjdG9yLlJlc291cmNlTWFuYWdlci5yZXF1ZXN0Q29udGVudCA9IGZ1bmN0aW9u
KHJlc291cmNlLCBiYXNlNjRFbmNvZGUsIGNhbGxiYWNrKQotewotICAgIEluc3BlY3RvckJhY2tl
bmQucmVzb3VyY2VDb250ZW50KHJlc291cmNlLmxvYWRlci5mcmFtZUlkLCByZXNvdXJjZS51cmws
IGJhc2U2NEVuY29kZSwgY2FsbGJhY2spOwotfQotCi1XZWJJbnNwZWN0b3IuUmVzb3VyY2VUcmVl
TW9kZWwgPSBmdW5jdGlvbigpCi17Ci0gICAgdGhpcy5fcmVzb3VyY2VzQnlGcmFtZUlkID0ge307
Ci0gICAgdGhpcy5fc3ViZnJhbWVzID0ge307Ci19Ci0KLVdlYkluc3BlY3Rvci5SZXNvdXJjZVRy
ZWVNb2RlbC5wcm90b3R5cGUgPSB7Ci0gICAgYWRkT3JVcGRhdGVGcmFtZTogZnVuY3Rpb24oZnJh
bWUpCi0gICAgewotICAgICAgICB2YXIgdG1wUmVzb3VyY2UgPSBuZXcgV2ViSW5zcGVjdG9yLlJl
c291cmNlKG51bGwsIGZyYW1lLnVybCk7Ci0gICAgICAgIFdlYkluc3BlY3Rvci5wYW5lbHMucmVz
b3VyY2VzLmFkZE9yVXBkYXRlRnJhbWUoZnJhbWUucGFyZW50SWQsIGZyYW1lLmlkLCBmcmFtZS5u
YW1lLCB0bXBSZXNvdXJjZS5kaXNwbGF5TmFtZSk7Ci0gICAgICAgIHZhciBzdWJmcmFtZXMgPSB0
aGlzLl9zdWJmcmFtZXNbZnJhbWUucGFyZW50SWRdOwotICAgICAgICBpZiAoIXN1YmZyYW1lcykg
ewotICAgICAgICAgICAgc3ViZnJhbWVzID0ge307Ci0gICAgICAgICAgICB0aGlzLl9zdWJmcmFt
ZXNbZnJhbWUucGFyZW50SWQgfHwgMF0gPSBzdWJmcmFtZXM7Ci0gICAgICAgIH0KLSAgICAgICAg
c3ViZnJhbWVzW2ZyYW1lLmlkXSA9IHRydWU7Ci0gICAgfSwKLQotICAgIGRpZENvbW1pdExvYWRG
b3JGcmFtZTogZnVuY3Rpb24oZnJhbWUsIGxvYWRlcikKLSAgICB7Ci0gICAgICAgIC8vIGZyYW1l
LnBhcmVudElkID09PSAwIGlzIHdoZW4gbWFpbiBmcmFtZSBuYXZpZ2F0aW9uIGhhcHBlbnMuCi0g
ICAgICAgIHRoaXMuX2NsZWFyQ2hpbGRGcmFtZXNBbmRSZXNvdXJjZXMoZnJhbWUucGFyZW50SWQg
PyBmcmFtZS5pZCA6IDAsIGxvYWRlci5sb2FkZXJJZCk7Ci0KLSAgICAgICAgdGhpcy5hZGRPclVw
ZGF0ZUZyYW1lKGZyYW1lKTsKLQotICAgICAgICB2YXIgcmVzb3VyY2VzRm9yRnJhbWUgPSB0aGlz
Ll9yZXNvdXJjZXNCeUZyYW1lSWRbZnJhbWUuaWRdOwotICAgICAgICBmb3IgKHZhciBpID0gMDsg
cmVzb3VyY2VzRm9yRnJhbWUgJiYgaSA8IHJlc291cmNlc0ZvckZyYW1lLmxlbmd0aDsgKytpKQot
ICAgICAgICAgICAgV2ViSW5zcGVjdG9yLnBhbmVscy5yZXNvdXJjZXMuYWRkUmVzb3VyY2VUb0Zy
YW1lKGZyYW1lLmlkLCByZXNvdXJjZXNGb3JGcmFtZVtpXSk7Ci0gICAgfSwKLQotICAgIGZyYW1l
RGV0YWNoZWRGcm9tUGFyZW50OiBmdW5jdGlvbihmcmFtZUlkKQotICAgIHsKLSAgICAgICAgdGhp
cy5fY2xlYXJDaGlsZEZyYW1lc0FuZFJlc291cmNlcyhmcmFtZUlkLCAwKTsKLSAgICAgICAgV2Vi
SW5zcGVjdG9yLnBhbmVscy5yZXNvdXJjZXMucmVtb3ZlRnJhbWUoZnJhbWVJZCk7Ci0gICAgfSwK
LQotICAgIF9jbGVhckNoaWxkRnJhbWVzQW5kUmVzb3VyY2VzOiBmdW5jdGlvbihmcmFtZUlkLCBs
b2FkZXJJZCkKLSAgICB7Ci0gICAgICAgIFdlYkluc3BlY3Rvci5wYW5lbHMucmVzb3VyY2VzLnJl
bW92ZVJlc291cmNlc0Zyb21GcmFtZShmcmFtZUlkKTsKLQotICAgICAgICB0aGlzLl9jbGVhclJl
c291cmNlcyhmcmFtZUlkLCBsb2FkZXJJZCk7Ci0gICAgICAgIHZhciBzdWJmcmFtZXMgPSB0aGlz
Ll9zdWJmcmFtZXNbZnJhbWVJZF07Ci0gICAgICAgIGlmICghc3ViZnJhbWVzKQotICAgICAgICAg
ICAgcmV0dXJuOwotCi0gICAgICAgIGZvciAodmFyIGNoaWxkRnJhbWVJZCBpbiBzdWJmcmFtZXMp
IHsKLSAgICAgICAgICAgIFdlYkluc3BlY3Rvci5wYW5lbHMucmVzb3VyY2VzLnJlbW92ZUZyYW1l
KGNoaWxkRnJhbWVJZCk7Ci0gICAgICAgICAgICB0aGlzLl9jbGVhckNoaWxkRnJhbWVzQW5kUmVz
b3VyY2VzKGNoaWxkRnJhbWVJZCwgbG9hZGVySWQpOwotICAgICAgICB9Ci0gICAgICAgIGRlbGV0
ZSB0aGlzLl9zdWJmcmFtZXNbZnJhbWVJZF07Ci0gICAgfSwKLQotICAgIGFkZFJlc291cmNlVG9G
cmFtZTogZnVuY3Rpb24oZnJhbWVJZCwgcmVzb3VyY2UpCi0gICAgewotICAgICAgICB2YXIgcmVz
b3VyY2VzRm9yRnJhbWUgPSB0aGlzLl9yZXNvdXJjZXNCeUZyYW1lSWRbZnJhbWVJZF07Ci0gICAg
ICAgIGlmICghcmVzb3VyY2VzRm9yRnJhbWUpIHsKLSAgICAgICAgICAgIHJlc291cmNlc0ZvckZy
YW1lID0gW107Ci0gICAgICAgICAgICB0aGlzLl9yZXNvdXJjZXNCeUZyYW1lSWRbZnJhbWVJZF0g
PSByZXNvdXJjZXNGb3JGcmFtZTsKLSAgICAgICAgfQotICAgICAgICByZXNvdXJjZXNGb3JGcmFt
ZS5wdXNoKHJlc291cmNlKTsKLQotICAgICAgICBXZWJJbnNwZWN0b3IucGFuZWxzLnJlc291cmNl
cy5hZGRSZXNvdXJjZVRvRnJhbWUoZnJhbWVJZCwgcmVzb3VyY2UpOwotICAgIH0sCi0KLSAgICBf
Y2xlYXJSZXNvdXJjZXM6IGZ1bmN0aW9uKGZyYW1lSWQsIGxvYWRlclRvUHJlc2VydmVJZCkKLSAg
ICB7Ci0gICAgICAgIHZhciByZXNvdXJjZXNGb3JGcmFtZSA9IHRoaXMuX3Jlc291cmNlc0J5RnJh
bWVJZFtmcmFtZUlkXTsKLSAgICAgICAgaWYgKCFyZXNvdXJjZXNGb3JGcmFtZSkKLSAgICAgICAg
ICAgIHJldHVybjsKLQotICAgICAgICB2YXIgcHJlc2VydmVkUmVzb3VyY2VzRm9yRnJhbWUgPSBb
XTsKLSAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCByZXNvdXJjZXNGb3JGcmFtZS5sZW5ndGg7
ICsraSkgewotICAgICAgICAgICAgdmFyIHJlc291cmNlID0gcmVzb3VyY2VzRm9yRnJhbWVbaV07
Ci0gICAgICAgICAgICBpZiAocmVzb3VyY2UubG9hZGVyLmxvYWRlcklkID09PSBsb2FkZXJUb1By
ZXNlcnZlSWQpIHsKLSAgICAgICAgICAgICAgICBwcmVzZXJ2ZWRSZXNvdXJjZXNGb3JGcmFtZS5w
dXNoKHJlc291cmNlKTsKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIFdlYkluc3BlY3Rvci5yZXNvdXJjZU1hbmFnZXIuX3VuYmluZFJlc291cmNl
VVJMKHJlc291cmNlKTsKLSAgICAgICAgfQotCi0gICAgICAgIGRlbGV0ZSB0aGlzLl9yZXNvdXJj
ZXNCeUZyYW1lSWRbZnJhbWVJZF07Ci0gICAgICAgIGlmIChwcmVzZXJ2ZWRSZXNvdXJjZXNGb3JG
cmFtZS5sZW5ndGgpCi0gICAgICAgICAgICB0aGlzLl9yZXNvdXJjZXNCeUZyYW1lSWRbZnJhbWVJ
ZF0gPSBwcmVzZXJ2ZWRSZXNvdXJjZXNGb3JGcmFtZTsKLSAgICB9LAotCi0gICAgZm9yQWxsUmVz
b3VyY2VzOiBmdW5jdGlvbihjYWxsYmFjaykKLSAgICB7Ci0gICAgICAgIHRoaXMuX2NhbGxGb3JG
cmFtZVJlc291cmNlcygwLCBjYWxsYmFjayk7Ci0gICAgfSwKLQotICAgIF9jYWxsRm9yRnJhbWVS
ZXNvdXJjZXM6IGZ1bmN0aW9uKGZyYW1lSWQsIGNhbGxiYWNrKQotICAgIHsKLSAgICAgICAgdmFy
IHJlc291cmNlcyA9IHRoaXMuX3Jlc291cmNlc0J5RnJhbWVJZFtmcmFtZUlkXTsKLSAgICAgICAg
Zm9yICh2YXIgaSA9IDA7IHJlc291cmNlcyAmJiBpIDwgcmVzb3VyY2VzLmxlbmd0aDsgKytpKSB7
Ci0gICAgICAgICAgICBpZiAoY2FsbGJhY2socmVzb3VyY2VzW2ldKSkKLSAgICAgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgdmFyIGZyYW1lcyA9
IHRoaXMuX3N1YmZyYW1lc1tmcmFtZUlkXTsKLSAgICAgICAgaWYgKGZyYW1lcykgewotICAgICAg
ICAgICAgZm9yICh2YXIgaWQgaW4gZnJhbWVzKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHRoaXMu
X2NhbGxGb3JGcmFtZVJlc291cmNlcyhpZCwgY2FsbGJhY2spKQotICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgfQotfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L1Jlc291cmNlVHJlZU1vZGVsLmpzIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291
cmNlVHJlZU1vZGVsLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJjNjAw
YzMKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3Vy
Y2VUcmVlTW9kZWwuanMKQEAgLTAsMCArMSwxNDAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
ICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAg
ICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwor
ICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAor
ICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisKK1dlYkluc3BlY3Rvci5SZXNvdXJjZVRy
ZWVNb2RlbCA9IGZ1bmN0aW9uKCkKK3sKKyAgICB0aGlzLl9yZXNvdXJjZXNCeUZyYW1lSWQgPSB7
fTsKKyAgICB0aGlzLl9zdWJmcmFtZXMgPSB7fTsKK30KKworV2ViSW5zcGVjdG9yLlJlc291cmNl
VHJlZU1vZGVsLnByb3RvdHlwZSA9IHsKKyAgICBhZGRPclVwZGF0ZUZyYW1lOiBmdW5jdGlvbihm
cmFtZSkKKyAgICB7CisgICAgICAgIHZhciB0bXBSZXNvdXJjZSA9IG5ldyBXZWJJbnNwZWN0b3Iu
UmVzb3VyY2UobnVsbCwgZnJhbWUudXJsKTsKKyAgICAgICAgV2ViSW5zcGVjdG9yLnBhbmVscy5y
ZXNvdXJjZXMuYWRkT3JVcGRhdGVGcmFtZShmcmFtZS5wYXJlbnRJZCwgZnJhbWUuaWQsIGZyYW1l
Lm5hbWUsIHRtcFJlc291cmNlLmRpc3BsYXlOYW1lKTsKKyAgICAgICAgdmFyIHN1YmZyYW1lcyA9
IHRoaXMuX3N1YmZyYW1lc1tmcmFtZS5wYXJlbnRJZF07CisgICAgICAgIGlmICghc3ViZnJhbWVz
KSB7CisgICAgICAgICAgICBzdWJmcmFtZXMgPSB7fTsKKyAgICAgICAgICAgIHRoaXMuX3N1YmZy
YW1lc1tmcmFtZS5wYXJlbnRJZCB8fCAwXSA9IHN1YmZyYW1lczsKKyAgICAgICAgfQorICAgICAg
ICBzdWJmcmFtZXNbZnJhbWUuaWRdID0gdHJ1ZTsKKyAgICB9LAorCisgICAgZGlkQ29tbWl0TG9h
ZEZvckZyYW1lOiBmdW5jdGlvbihmcmFtZSwgbG9hZGVyKQorICAgIHsKKyAgICAgICAgLy8gZnJh
bWUucGFyZW50SWQgPT09IDAgaXMgd2hlbiBtYWluIGZyYW1lIG5hdmlnYXRpb24gaGFwcGVucy4K
KyAgICAgICAgdGhpcy5fY2xlYXJDaGlsZEZyYW1lc0FuZFJlc291cmNlcyhmcmFtZS5wYXJlbnRJ
ZCA/IGZyYW1lLmlkIDogMCwgbG9hZGVyLmxvYWRlcklkKTsKKworICAgICAgICB0aGlzLmFkZE9y
VXBkYXRlRnJhbWUoZnJhbWUpOworCisgICAgICAgIHZhciByZXNvdXJjZXNGb3JGcmFtZSA9IHRo
aXMuX3Jlc291cmNlc0J5RnJhbWVJZFtmcmFtZS5pZF07CisgICAgICAgIGZvciAodmFyIGkgPSAw
OyByZXNvdXJjZXNGb3JGcmFtZSAmJiBpIDwgcmVzb3VyY2VzRm9yRnJhbWUubGVuZ3RoOyArK2kp
CisgICAgICAgICAgICBXZWJJbnNwZWN0b3IucGFuZWxzLnJlc291cmNlcy5hZGRSZXNvdXJjZVRv
RnJhbWUoZnJhbWUuaWQsIHJlc291cmNlc0ZvckZyYW1lW2ldKTsKKyAgICB9LAorCisgICAgZnJh
bWVEZXRhY2hlZEZyb21QYXJlbnQ6IGZ1bmN0aW9uKGZyYW1lSWQpCisgICAgeworICAgICAgICB0
aGlzLl9jbGVhckNoaWxkRnJhbWVzQW5kUmVzb3VyY2VzKGZyYW1lSWQsIDApOworICAgICAgICBX
ZWJJbnNwZWN0b3IucGFuZWxzLnJlc291cmNlcy5yZW1vdmVGcmFtZShmcmFtZUlkKTsKKyAgICB9
LAorCisgICAgX2NsZWFyQ2hpbGRGcmFtZXNBbmRSZXNvdXJjZXM6IGZ1bmN0aW9uKGZyYW1lSWQs
IGxvYWRlcklkKQorICAgIHsKKyAgICAgICAgV2ViSW5zcGVjdG9yLnBhbmVscy5yZXNvdXJjZXMu
cmVtb3ZlUmVzb3VyY2VzRnJvbUZyYW1lKGZyYW1lSWQpOworCisgICAgICAgIHRoaXMuX2NsZWFy
UmVzb3VyY2VzKGZyYW1lSWQsIGxvYWRlcklkKTsKKyAgICAgICAgdmFyIHN1YmZyYW1lcyA9IHRo
aXMuX3N1YmZyYW1lc1tmcmFtZUlkXTsKKyAgICAgICAgaWYgKCFzdWJmcmFtZXMpCisgICAgICAg
ICAgICByZXR1cm47CisKKyAgICAgICAgZm9yICh2YXIgY2hpbGRGcmFtZUlkIGluIHN1YmZyYW1l
cykgeworICAgICAgICAgICAgV2ViSW5zcGVjdG9yLnBhbmVscy5yZXNvdXJjZXMucmVtb3ZlRnJh
bWUoY2hpbGRGcmFtZUlkKTsKKyAgICAgICAgICAgIHRoaXMuX2NsZWFyQ2hpbGRGcmFtZXNBbmRS
ZXNvdXJjZXMoY2hpbGRGcmFtZUlkLCBsb2FkZXJJZCk7CisgICAgICAgIH0KKyAgICAgICAgZGVs
ZXRlIHRoaXMuX3N1YmZyYW1lc1tmcmFtZUlkXTsKKyAgICB9LAorCisgICAgYWRkUmVzb3VyY2VU
b0ZyYW1lOiBmdW5jdGlvbihmcmFtZUlkLCByZXNvdXJjZSkKKyAgICB7CisgICAgICAgIHZhciBy
ZXNvdXJjZXNGb3JGcmFtZSA9IHRoaXMuX3Jlc291cmNlc0J5RnJhbWVJZFtmcmFtZUlkXTsKKyAg
ICAgICAgaWYgKCFyZXNvdXJjZXNGb3JGcmFtZSkgeworICAgICAgICAgICAgcmVzb3VyY2VzRm9y
RnJhbWUgPSBbXTsKKyAgICAgICAgICAgIHRoaXMuX3Jlc291cmNlc0J5RnJhbWVJZFtmcmFtZUlk
XSA9IHJlc291cmNlc0ZvckZyYW1lOworICAgICAgICB9CisgICAgICAgIHJlc291cmNlc0ZvckZy
YW1lLnB1c2gocmVzb3VyY2UpOworCisgICAgICAgIFdlYkluc3BlY3Rvci5wYW5lbHMucmVzb3Vy
Y2VzLmFkZFJlc291cmNlVG9GcmFtZShmcmFtZUlkLCByZXNvdXJjZSk7CisgICAgfSwKKworICAg
IF9jbGVhclJlc291cmNlczogZnVuY3Rpb24oZnJhbWVJZCwgbG9hZGVyVG9QcmVzZXJ2ZUlkKQor
ICAgIHsKKyAgICAgICAgdmFyIHJlc291cmNlc0ZvckZyYW1lID0gdGhpcy5fcmVzb3VyY2VzQnlG
cmFtZUlkW2ZyYW1lSWRdOworICAgICAgICBpZiAoIXJlc291cmNlc0ZvckZyYW1lKQorICAgICAg
ICAgICAgcmV0dXJuOworCisgICAgICAgIHZhciBwcmVzZXJ2ZWRSZXNvdXJjZXNGb3JGcmFtZSA9
IFtdOworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHJlc291cmNlc0ZvckZyYW1lLmxlbmd0
aDsgKytpKSB7CisgICAgICAgICAgICB2YXIgcmVzb3VyY2UgPSByZXNvdXJjZXNGb3JGcmFtZVtp
XTsKKyAgICAgICAgICAgIGlmIChyZXNvdXJjZS5sb2FkZXIubG9hZGVySWQgPT09IGxvYWRlclRv
UHJlc2VydmVJZCkgeworICAgICAgICAgICAgICAgIHByZXNlcnZlZFJlc291cmNlc0ZvckZyYW1l
LnB1c2gocmVzb3VyY2UpOworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAg
fQorICAgICAgICAgICAgV2ViSW5zcGVjdG9yLm5ldHdvcmtNYW5hZ2VyLnVuYmluZFJlc291cmNl
VVJMKHJlc291cmNlKTsKKyAgICAgICAgfQorCisgICAgICAgIGRlbGV0ZSB0aGlzLl9yZXNvdXJj
ZXNCeUZyYW1lSWRbZnJhbWVJZF07CisgICAgICAgIGlmIChwcmVzZXJ2ZWRSZXNvdXJjZXNGb3JG
cmFtZS5sZW5ndGgpCisgICAgICAgICAgICB0aGlzLl9yZXNvdXJjZXNCeUZyYW1lSWRbZnJhbWVJ
ZF0gPSBwcmVzZXJ2ZWRSZXNvdXJjZXNGb3JGcmFtZTsKKyAgICB9LAorCisgICAgZm9yQWxsUmVz
b3VyY2VzOiBmdW5jdGlvbihjYWxsYmFjaykKKyAgICB7CisgICAgICAgIHRoaXMuX2NhbGxGb3JG
cmFtZVJlc291cmNlcygwLCBjYWxsYmFjayk7CisgICAgfSwKKworICAgIF9jYWxsRm9yRnJhbWVS
ZXNvdXJjZXM6IGZ1bmN0aW9uKGZyYW1lSWQsIGNhbGxiYWNrKQorICAgIHsKKyAgICAgICAgdmFy
IHJlc291cmNlcyA9IHRoaXMuX3Jlc291cmNlc0J5RnJhbWVJZFtmcmFtZUlkXTsKKyAgICAgICAg
Zm9yICh2YXIgaSA9IDA7IHJlc291cmNlcyAmJiBpIDwgcmVzb3VyY2VzLmxlbmd0aDsgKytpKSB7
CisgICAgICAgICAgICBpZiAoY2FsbGJhY2socmVzb3VyY2VzW2ldKSkKKyAgICAgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgdmFyIGZyYW1lcyA9
IHRoaXMuX3N1YmZyYW1lc1tmcmFtZUlkXTsKKyAgICAgICAgaWYgKGZyYW1lcykgeworICAgICAg
ICAgICAgZm9yICh2YXIgaWQgaW4gZnJhbWVzKSB7CisgICAgICAgICAgICAgICAgaWYgKHRoaXMu
X2NhbGxGb3JGcmFtZVJlc291cmNlcyhpZCwgY2FsbGJhY2spKQorICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L1Jlc291cmNlVmlldy5qcyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZVZp
ZXcuanMKaW5kZXggYTI4NGRhMS4uYjY5MDk3ZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL1Jlc291cmNlVmlldy5qcworKysgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvUmVzb3VyY2VWaWV3LmpzCkBAIC00MiwzICs0Miw3NiBAQCBXZWJJbnNwZWN0b3IuUmVz
b3VyY2VWaWV3LnByb3RvdHlwZSA9IHsKIH0KIAogV2ViSW5zcGVjdG9yLlJlc291cmNlVmlldy5w
cm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLlZpZXcucHJvdG90eXBlOworCitXZWJJ
bnNwZWN0b3IuUmVzb3VyY2VWaWV3LmNyZWF0ZVJlc291cmNlVmlldyA9IGZ1bmN0aW9uKHJlc291
cmNlKQoreworICAgIHN3aXRjaCAocmVzb3VyY2UuY2F0ZWdvcnkpIHsKKyAgICBjYXNlIFdlYklu
c3BlY3Rvci5yZXNvdXJjZUNhdGVnb3JpZXMuZG9jdW1lbnRzOgorICAgIGNhc2UgV2ViSW5zcGVj
dG9yLnJlc291cmNlQ2F0ZWdvcmllcy5zdHlsZXNoZWV0czoKKyAgICBjYXNlIFdlYkluc3BlY3Rv
ci5yZXNvdXJjZUNhdGVnb3JpZXMuc2NyaXB0czoKKyAgICBjYXNlIFdlYkluc3BlY3Rvci5yZXNv
dXJjZUNhdGVnb3JpZXMueGhyOgorICAgICAgICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5Tb3Vy
Y2VWaWV3KHJlc291cmNlKTsKKyAgICBjYXNlIFdlYkluc3BlY3Rvci5yZXNvdXJjZUNhdGVnb3Jp
ZXMuaW1hZ2VzOgorICAgICAgICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5JbWFnZVZpZXcocmVz
b3VyY2UpOworICAgIGNhc2UgV2ViSW5zcGVjdG9yLnJlc291cmNlQ2F0ZWdvcmllcy5mb250czoK
KyAgICAgICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuRm9udFZpZXcocmVzb3VyY2UpOworICAg
IGRlZmF1bHQ6CisgICAgICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLlJlc291cmNlVmlldyhy
ZXNvdXJjZSk7CisgICAgfQorfQorCitXZWJJbnNwZWN0b3IuUmVzb3VyY2VWaWV3LnJlc291cmNl
Vmlld1R5cGVNYXRjaGVzUmVzb3VyY2UgPSBmdW5jdGlvbihyZXNvdXJjZSkKK3sKKyAgICB2YXIg
cmVzb3VyY2VWaWV3ID0gcmVzb3VyY2UuX3Jlc291cmNlc1ZpZXc7CisgICAgc3dpdGNoIChyZXNv
dXJjZS5jYXRlZ29yeSkgeworICAgIGNhc2UgV2ViSW5zcGVjdG9yLnJlc291cmNlQ2F0ZWdvcmll
cy5kb2N1bWVudHM6CisgICAgY2FzZSBXZWJJbnNwZWN0b3IucmVzb3VyY2VDYXRlZ29yaWVzLnN0
eWxlc2hlZXRzOgorICAgIGNhc2UgV2ViSW5zcGVjdG9yLnJlc291cmNlQ2F0ZWdvcmllcy5zY3Jp
cHRzOgorICAgIGNhc2UgV2ViSW5zcGVjdG9yLnJlc291cmNlQ2F0ZWdvcmllcy54aHI6CisgICAg
ICAgIHJldHVybiByZXNvdXJjZVZpZXcuX19wcm90b19fID09PSBXZWJJbnNwZWN0b3IuU291cmNl
Vmlldy5wcm90b3R5cGU7CisgICAgY2FzZSBXZWJJbnNwZWN0b3IucmVzb3VyY2VDYXRlZ29yaWVz
LmltYWdlczoKKyAgICAgICAgcmV0dXJuIHJlc291cmNlVmlldy5fX3Byb3RvX18gPT09IFdlYklu
c3BlY3Rvci5JbWFnZVZpZXcucHJvdG90eXBlOworICAgIGNhc2UgV2ViSW5zcGVjdG9yLnJlc291
cmNlQ2F0ZWdvcmllcy5mb250czoKKyAgICAgICAgcmV0dXJuIHJlc291cmNlVmlldy5fX3Byb3Rv
X18gPT09IFdlYkluc3BlY3Rvci5Gb250Vmlldy5wcm90b3R5cGU7CisgICAgZGVmYXVsdDoKKyAg
ICAgICAgcmV0dXJuIHJlc291cmNlVmlldy5fX3Byb3RvX18gPT09IFdlYkluc3BlY3Rvci5SZXNv
dXJjZVZpZXcucHJvdG90eXBlOworICAgIH0KK30KKworV2ViSW5zcGVjdG9yLlJlc291cmNlVmll
dy5yZXNvdXJjZVZpZXdGb3JSZXNvdXJjZSA9IGZ1bmN0aW9uKHJlc291cmNlKQoreworICAgIGlm
ICghcmVzb3VyY2UpCisgICAgICAgIHJldHVybiBudWxsOworICAgIGlmICghcmVzb3VyY2UuX3Jl
c291cmNlc1ZpZXcpCisgICAgICAgIHJlc291cmNlLl9yZXNvdXJjZXNWaWV3ID0gV2ViSW5zcGVj
dG9yLlJlc291cmNlVmlldy5jcmVhdGVSZXNvdXJjZVZpZXcocmVzb3VyY2UpOworICAgIHJldHVy
biByZXNvdXJjZS5fcmVzb3VyY2VzVmlldzsKK30KKworV2ViSW5zcGVjdG9yLlJlc291cmNlVmll
dy5yZWNyZWF0ZVJlc291cmNlVmlldyA9IGZ1bmN0aW9uKHJlc291cmNlKQoreworICAgIHZhciBu
ZXdWaWV3ID0gV2ViSW5zcGVjdG9yLlJlc291cmNlVmlldy5jcmVhdGVSZXNvdXJjZVZpZXcocmVz
b3VyY2UpOworCisgICAgdmFyIG9sZFZpZXcgPSByZXNvdXJjZS5fcmVzb3VyY2VzVmlldzsKKyAg
ICB2YXIgb2xkVmlld1BhcmVudE5vZGUgPSBvbGRWaWV3LnZpc2libGUgPyBvbGRWaWV3LmVsZW1l
bnQucGFyZW50Tm9kZSA6IG51bGw7CisgICAgdmFyIHNjcm9sbFRvcCA9IG9sZFZpZXcuc2Nyb2xs
VG9wOworCisgICAgcmVzb3VyY2UuX3Jlc291cmNlc1ZpZXcuZGV0YWNoKCk7CisgICAgZGVsZXRl
IHJlc291cmNlLl9yZXNvdXJjZXNWaWV3OworCisgICAgcmVzb3VyY2UuX3Jlc291cmNlc1ZpZXcg
PSBuZXdWaWV3OworCisgICAgaWYgKG9sZFZpZXdQYXJlbnROb2RlKQorICAgICAgICBuZXdWaWV3
LnNob3cob2xkVmlld1BhcmVudE5vZGUpOworICAgIGlmIChzY3JvbGxUb3ApCisgICAgICAgIG5l
d1ZpZXcuc2Nyb2xsVG9wID0gc2Nyb2xsVG9wOworCisgICAgV2ViSW5zcGVjdG9yLnBhbmVscy5z
Y3JpcHRzLnZpZXdSZWNyZWF0ZWQob2xkVmlldywgbmV3Vmlldyk7CisgICAgcmV0dXJuIG5ld1Zp
ZXc7Cit9CisKK1dlYkluc3BlY3Rvci5SZXNvdXJjZVZpZXcuZXhpc3RpbmdSZXNvdXJjZVZpZXdG
b3JSZXNvdXJjZSA9IGZ1bmN0aW9uKHJlc291cmNlKQoreworICAgIGlmICghcmVzb3VyY2UpCisg
ICAgICAgIHJldHVybiBudWxsOworICAgIHJldHVybiByZXNvdXJjZS5fcmVzb3VyY2VzVmlldzsK
K30KZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZXNQYW5l
bC5qcyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZXNQYW5lbC5qcwppbmRl
eCBkNmY3MTcyLi4zOWIwMzE1IDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvUmVzb3VyY2VzUGFuZWwuanMKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jl
c291cmNlc1BhbmVsLmpzCkBAIC0zMjksMTIgKzMyOSwxMiBAQCBXZWJJbnNwZWN0b3IuUmVzb3Vy
Y2VzUGFuZWwucHJvdG90eXBlID0gewogCiAgICAgY2FuU2hvd1NvdXJjZUxpbmU6IGZ1bmN0aW9u
KHVybCwgbGluZSkKICAgICB7Ci0gICAgICAgIHJldHVybiAhIVdlYkluc3BlY3Rvci5yZXNvdXJj
ZU1hbmFnZXIucmVzb3VyY2VGb3JVUkwodXJsKTsKKyAgICAgICAgcmV0dXJuICEhV2ViSW5zcGVj
dG9yLnJlc291cmNlVmlldy5yZXNvdXJjZUZvclVSTCh1cmwpOwogICAgIH0sCiAKICAgICBzaG93
U291cmNlTGluZTogZnVuY3Rpb24odXJsLCBsaW5lKQogICAgIHsKLSAgICAgICAgdmFyIHJlc291
cmNlID0gV2ViSW5zcGVjdG9yLnJlc291cmNlTWFuYWdlci5yZXNvdXJjZUZvclVSTCh1cmwpOwor
ICAgICAgICB2YXIgcmVzb3VyY2UgPSBXZWJJbnNwZWN0b3IubmV0d29ya01hbmFnZXIucmVzb3Vy
Y2VGb3JVUkwodXJsKTsKICAgICAgICAgaWYgKHJlc291cmNlLnR5cGUgPT09IFdlYkluc3BlY3Rv
ci5SZXNvdXJjZS5UeXBlLlhIUikgewogICAgICAgICAgICAgLy8gU2hvdyBYSFJzIGluIHRoZSBu
ZXR3b3JrIHBhbmVsIG9ubHkuCiAgICAgICAgICAgICBpZiAoV2ViSW5zcGVjdG9yLnBhbmVscy5u
ZXR3b3JrICYmIFdlYkluc3BlY3Rvci5wYW5lbHMubmV0d29yay5jYW5TaG93U291cmNlTGluZSh1
cmwsIGxpbmUpKSB7CkBAIC0zNDMsNyArMzQzLDcgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlc1Bh
bmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQotICAgICAgICB0aGlzLnNob3dSZXNvdXJjZShXZWJJbnNwZWN0b3IucmVzb3VyY2VN
YW5hZ2VyLnJlc291cmNlRm9yVVJMKHVybCksIGxpbmUpOworICAgICAgICB0aGlzLnNob3dSZXNv
dXJjZShXZWJJbnNwZWN0b3IubmV0d29ya01hbmFnZXIucmVzb3VyY2VGb3JVUkwodXJsKSwgbGlu
ZSk7CiAgICAgfSwKIAogICAgIHNob3dSZXNvdXJjZTogZnVuY3Rpb24ocmVzb3VyY2UsIGxpbmUp
CkBAIC0zNTUsNyArMzU1LDcgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlc1BhbmVsLnByb3RvdHlw
ZSA9IHsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChsaW5lKSB7Ci0gICAgICAgICAgICB2YXIg
dmlldyA9IFdlYkluc3BlY3Rvci5SZXNvdXJjZU1hbmFnZXIucmVzb3VyY2VWaWV3Rm9yUmVzb3Vy
Y2UocmVzb3VyY2UpOworICAgICAgICAgICAgdmFyIHZpZXcgPSBXZWJJbnNwZWN0b3IuUmVzb3Vy
Y2VWaWV3LnJlc291cmNlVmlld0ZvclJlc291cmNlKHJlc291cmNlKTsKICAgICAgICAgICAgIGlm
ICh2aWV3LnJldmVhbExpbmUpCiAgICAgICAgICAgICAgICAgdmlldy5yZXZlYWxMaW5lKGxpbmUp
OwogICAgICAgICAgICAgaWYgKHZpZXcuaGlnaGxpZ2h0TGluZSkKQEAgLTM2Niw3ICszNjYsNyBA
QCBXZWJJbnNwZWN0b3IuUmVzb3VyY2VzUGFuZWwucHJvdG90eXBlID0gewogCiAgICAgX3Nob3dS
ZXNvdXJjZVZpZXc6IGZ1bmN0aW9uKHJlc291cmNlKQogICAgIHsKLSAgICAgICAgdmFyIHZpZXcg
PSBXZWJJbnNwZWN0b3IuUmVzb3VyY2VNYW5hZ2VyLnJlc291cmNlVmlld0ZvclJlc291cmNlKHJl
c291cmNlKTsKKyAgICAgICAgdmFyIHZpZXcgPSBXZWJJbnNwZWN0b3IuUmVzb3VyY2VWaWV3LnJl
c291cmNlVmlld0ZvclJlc291cmNlKHJlc291cmNlKTsKIAogICAgICAgICAvLyBDb25zaWRlciBy
ZW5kZXJpbmcgZGlmZiBtYXJrdXAgaGVyZS4KICAgICAgICAgaWYgKHJlc291cmNlLmJhc2VSZXZp
c2lvbiAmJiB2aWV3IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlNvdXJjZVZpZXcpIHsKQEAgLTY4
Nyw3ICs2ODcsNyBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2VzUGFuZWwucHJvdG90eXBlID0gewog
ICAgICAgICBmdW5jdGlvbiBjYWxsYmFjayhyZXNvdXJjZVRyZWVFbGVtZW50KQogICAgICAgICB7
CiAgICAgICAgICAgICB2YXIgcmVzb3VyY2UgPSByZXNvdXJjZVRyZWVFbGVtZW50Ll9yZXNvdXJj
ZTsKLSAgICAgICAgICAgIHZhciByZXNvdXJjZVZpZXcgPSBXZWJJbnNwZWN0b3IuUmVzb3VyY2VN
YW5hZ2VyLnJlc291cmNlVmlld0ZvclJlc291cmNlKHJlc291cmNlKTsKKyAgICAgICAgICAgIHZh
ciByZXNvdXJjZVZpZXcgPSBXZWJJbnNwZWN0b3IuUmVzb3VyY2VWaWV3LnJlc291cmNlVmlld0Zv
clJlc291cmNlKHJlc291cmNlKTsKICAgICAgICAgICAgIGlmIChyZXNvdXJjZVZpZXcucGVyZm9y
bVNlYXJjaCAmJiByZXNvdXJjZVZpZXcgIT09IHZpc2libGVWaWV3KQogICAgICAgICAgICAgICAg
IHZpZXdzLnB1c2gocmVzb3VyY2VWaWV3KTsKICAgICAgICAgfQpAQCAtMTA2OSw3ICsxMDY5LDcg
QEAgV2ViSW5zcGVjdG9yLkZyYW1lUmVzb3VyY2VUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAg
ICAgewogICAgICAgICAvLyBGSVhNRTogbW92ZSB0byB0aGUgU2NyaXB0L1NvdXJjZVZpZXcuCiAg
ICAgICAgIGlmICghdGhpcy5fcmVzb3VyY2Uud2FybmluZ3MgJiYgIXRoaXMuX3Jlc291cmNlLmVy
cm9ycykgewotICAgICAgICAgICAgdmFyIHZpZXcgPSBXZWJJbnNwZWN0b3IuUmVzb3VyY2VNYW5h
Z2VyLmV4aXN0aW5nUmVzb3VyY2VWaWV3Rm9yUmVzb3VyY2UodGhpcy5fcmVzb3VyY2UpOworICAg
ICAgICAgICAgdmFyIHZpZXcgPSBXZWJJbnNwZWN0b3IuUmVzb3VyY2VWaWV3LmV4aXN0aW5nUmVz
b3VyY2VWaWV3Rm9yUmVzb3VyY2UodGhpcy5fcmVzb3VyY2UpOwogICAgICAgICAgICAgaWYgKHZp
ZXcgJiYgdmlldy5jbGVhck1lc3NhZ2VzKQogICAgICAgICAgICAgICAgIHZpZXcuY2xlYXJNZXNz
YWdlcygpOwogICAgICAgICB9CkBAIC0xMDkyLDkgKzEwOTIsOSBAQCBXZWJJbnNwZWN0b3IuRnJh
bWVSZXNvdXJjZVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICBfY29udGVudENoYW5nZWQ6
IGZ1bmN0aW9uKGV2ZW50KQogICAgIHsKICAgICAgICAgdGhpcy5pbnNlcnRDaGlsZChuZXcgV2Vi
SW5zcGVjdG9yLlJlc291cmNlUmV2aXNpb25UcmVlRWxlbWVudCh0aGlzLl9zdG9yYWdlUGFuZWws
IGV2ZW50LmRhdGEucmV2aXNpb24pLCAwKTsKLSAgICAgICAgdmFyIG9sZFZpZXcgPSBXZWJJbnNw
ZWN0b3IuUmVzb3VyY2VNYW5hZ2VyLmV4aXN0aW5nUmVzb3VyY2VWaWV3Rm9yUmVzb3VyY2UodGhp
cy5fcmVzb3VyY2UpOworICAgICAgICB2YXIgb2xkVmlldyA9IFdlYkluc3BlY3Rvci5SZXNvdXJj
ZVZpZXcuZXhpc3RpbmdSZXNvdXJjZVZpZXdGb3JSZXNvdXJjZSh0aGlzLl9yZXNvdXJjZSk7CiAg
ICAgICAgIGlmIChvbGRWaWV3KSB7Ci0gICAgICAgICAgICB2YXIgbmV3VmlldyA9IFdlYkluc3Bl
Y3Rvci5SZXNvdXJjZU1hbmFnZXIucmVjcmVhdGVSZXNvdXJjZVZpZXcodGhpcy5fcmVzb3VyY2Up
OworICAgICAgICAgICAgdmFyIG5ld1ZpZXcgPSBXZWJJbnNwZWN0b3IuUmVzb3VyY2VWaWV3LnJl
Y3JlYXRlUmVzb3VyY2VWaWV3KHRoaXMuX3Jlc291cmNlKTsKICAgICAgICAgICAgIGlmIChvbGRW
aWV3ID09PSB0aGlzLl9zdG9yYWdlUGFuZWwudmlzaWJsZVZpZXcpCiAgICAgICAgICAgICAgICAg
dGhpcy5fc3RvcmFnZVBhbmVsLnZpc2libGVWaWV3ID0gbmV3VmlldzsKICAgICAgICAgfQpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NjcmlwdHNQYW5lbC5qcyBiL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TY3JpcHRzUGFuZWwuanMKaW5kZXggNzM4Nzk2NC4u
YmQ2MjNhMiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NjcmlwdHNQ
YW5lbC5qcworKysgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0c1BhbmVsLmpz
CkBAIC0yNTYsNyArMjU2LDcgQEAgV2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5lbC5wcm90b3R5cGUg
PSB7CiAgICAgICAgICAgICBpZiAocmVzb3VyY2UuZmluaXNoZWQpIHsKICAgICAgICAgICAgICAg
ICAvLyBSZXNvdXJjZSBpcyBmaW5pc2hlZCwgYmluZCB0aGUgc2NyaXB0IHJpZ2h0IGF3YXkuCiAg
ICAgICAgICAgICAgICAgc2NyaXB0LnJlc291cmNlID0gcmVzb3VyY2U7Ci0gICAgICAgICAgICAg
ICAgdmFyIHZpZXcgPSBXZWJJbnNwZWN0b3IuUmVzb3VyY2VNYW5hZ2VyLmV4aXN0aW5nUmVzb3Vy
Y2VWaWV3Rm9yUmVzb3VyY2UocmVzb3VyY2UpOworICAgICAgICAgICAgICAgIHZhciB2aWV3ID0g
V2ViSW5zcGVjdG9yLlJlc291cmNlVmlldy5leGlzdGluZ1Jlc291cmNlVmlld0ZvclJlc291cmNl
KHJlc291cmNlKTsKICAgICAgICAgICAgICAgICBpZiAodmlldyAmJiB2aWV3LnNvdXJjZUZyYW1l
KQogICAgICAgICAgICAgICAgICAgICB2aWV3LnNvdXJjZUZyYW1lLmFkZFNjcmlwdChzY3JpcHQp
OwogICAgICAgICAgICAgfSBlbHNlIHsKQEAgLTQ0MiwxMCArNDQyLDYgQEAgV2ViSW5zcGVjdG9y
LlNjcmlwdHNQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuZnVuY3Rpb25zU2VsZWN0
RWxlbWVudC5yZW1vdmVDaGlsZHJlbigpOwogICAgICAgICB0aGlzLnZpZXdzQ29udGFpbmVyRWxl
bWVudC5yZW1vdmVDaGlsZHJlbigpOwogCi0gICAgICAgIHZhciBzY3JpcHRzID0gV2ViSW5zcGVj
dG9yLmRlYnVnZ2VyTW9kZWwucXVlcnlTY3JpcHRzKGZ1bmN0aW9uKHMpIHsgcmV0dXJuICEhcy5y
ZXNvdXJjZTsgfSk7Ci0gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc2NyaXB0cy5sZW5ndGg7
ICsraSkKLSAgICAgICAgICAgIGRlbGV0ZSBzY3JpcHRzW2ldLnJlc291cmNlLl9yZXNvdXJjZXNW
aWV3OwotCiAgICAgICAgIHRoaXMuc2lkZWJhclBhbmVzLndhdGNoRXhwcmVzc2lvbnMucmVmcmVz
aEV4cHJlc3Npb25zKCk7CiAgICAgICAgIGlmICghcHJlc2VydmVJdGVtcykKICAgICAgICAgICAg
IHRoaXMuc2lkZWJhclBhbmVzLndvcmtlcnMucmVzZXQoKTsKQEAgLTU1Myw3ICs1NDksNyBAQCBX
ZWJJbnNwZWN0b3IuU2NyaXB0c1BhbmVsLnByb3RvdHlwZSA9IHsKIAogICAgIF9zb3VyY2VGcmFt
ZUZvclJlc291cmNlOiBmdW5jdGlvbihyZXNvdXJjZSkKICAgICB7Ci0gICAgICAgIHZhciB2aWV3
ID0gV2ViSW5zcGVjdG9yLlJlc291cmNlTWFuYWdlci5yZXNvdXJjZVZpZXdGb3JSZXNvdXJjZShy
ZXNvdXJjZSk7CisgICAgICAgIHZhciB2aWV3ID0gV2ViSW5zcGVjdG9yLlJlc291cmNlVmlldy5y
ZXNvdXJjZVZpZXdGb3JSZXNvdXJjZShyZXNvdXJjZSk7CiAgICAgICAgIGlmICghdmlldykKICAg
ICAgICAgICAgIHJldHVybiBudWxsOwogCkBAIC01NzQsNyArNTcwLDcgQEAgV2ViSW5zcGVjdG9y
LlNjcmlwdHNQYW5lbC5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgdmFyIHZpZXc7CiAgICAgICAg
IGlmIChzY3JpcHRPclJlc291cmNlIGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlJlc291cmNlKQot
ICAgICAgICAgICAgdmlldyA9IFdlYkluc3BlY3Rvci5SZXNvdXJjZU1hbmFnZXIucmVzb3VyY2VW
aWV3Rm9yUmVzb3VyY2Uoc2NyaXB0T3JSZXNvdXJjZSk7CisgICAgICAgICAgICB2aWV3ID0gV2Vi
SW5zcGVjdG9yLlJlc291cmNlVmlldy5yZXNvdXJjZVZpZXdGb3JSZXNvdXJjZShzY3JpcHRPclJl
c291cmNlKTsKICAgICAgICAgZWxzZSBpZiAoc2NyaXB0T3JSZXNvdXJjZSBpbnN0YW5jZW9mIFdl
Ykluc3BlY3Rvci5TY3JpcHQpCiAgICAgICAgICAgICB2aWV3ID0gdGhpcy5zY3JpcHRWaWV3Rm9y
U2NyaXB0KHNjcmlwdE9yUmVzb3VyY2UpOwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvV2ViS2l0LnFyYyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9XZWJL
aXQucXJjCmluZGV4IDkwYzQzMTcuLjI0NDQ5MTMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9XZWJLaXQucXJjCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9XZWJLaXQucXJjCkBAIC01OCw2ICs1OCw3IEBACiAgICAgPGZpbGU+S2V5Ym9hcmRTaG9ydGN1
dC5qczwvZmlsZT4KICAgICA8ZmlsZT5NZXRyaWNzU2lkZWJhclBhbmUuanM8L2ZpbGU+CiAgICAg
PGZpbGU+TmV0d29ya0l0ZW1WaWV3LmpzPC9maWxlPgorICAgIDxmaWxlPk5ldHdvcmtNYW5hZ2Vy
LmpzPC9maWxlPgogICAgIDxmaWxlPk5ldHdvcmtQYW5lbC5qczwvZmlsZT4KICAgICA8ZmlsZT5P
YmplY3QuanM8L2ZpbGU+CiAgICAgPGZpbGU+T2JqZWN0UHJvcGVydGllc1NlY3Rpb24uanM8L2Zp
bGU+CkBAIC03NSw3ICs3Niw2IEBACiAgICAgPGZpbGU+UmVzb3VyY2VDYXRlZ29yeS5qczwvZmls
ZT4KICAgICA8ZmlsZT5SZXNvdXJjZUNvb2tpZXNWaWV3LmpzPC9maWxlPgogICAgIDxmaWxlPlJl
c291cmNlSGVhZGVyc1ZpZXcuanM8L2ZpbGU+Ci0gICAgPGZpbGU+UmVzb3VyY2VNYW5hZ2VyLmpz
PC9maWxlPgogICAgIDxmaWxlPlJlc291cmNlVGltaW5nVmlldy5qczwvZmlsZT4KICAgICA8Zmls
ZT5SZXNvdXJjZVZpZXcuanM8L2ZpbGU+CiAgICAgPGZpbGU+UmVzb3VyY2VzUGFuZWwuanM8L2Zp
bGU+CmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmh0
bWwgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmh0bWwKaW5kZXggOWVk
NTAxOS4uZTE1OTBmMiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2lu
c3BlY3Rvci5odG1sCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3Iu
aHRtbApAQCAtNjEsNyArNjEsOCBAQCBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9q
YXZhc2NyaXB0IiBzcmM9IlBhbmVsLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHR5cGU9InRl
eHQvamF2YXNjcmlwdCIgc3JjPSJUaW1lbGluZUdyaWQuanMiPjwvc2NyaXB0PiAgICAKICAgICA8
c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJSZXNvdXJjZS5qcyI+PC9zY3JpcHQ+
Ci0gICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iUmVzb3VyY2VNYW5hZ2Vy
LmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJO
ZXR3b3JrTWFuYWdlci5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFz
Y3JpcHQiIHNyYz0iUmVzb3VyY2VUcmVlTW9kZWwuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQg
dHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IlJlc291cmNlQ2F0ZWdvcnkuanMiPjwvc2NyaXB0
PgogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IkRhdGFiYXNlLmpzIj48
L3NjcmlwdD4KICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJET01TdG9y
YWdlLmpzIj48L3NjcmlwdD4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9pbnNwZWN0b3IuanMgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmpz
CmluZGV4IGE1N2YwZjQuLjI5MDI2M2YgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9pbnNwZWN0b3IuanMKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2lu
c3BlY3Rvci5qcwpAQCAtNDQ1LDEyICs0NDUsMTIgQEAgdmFyIFdlYkluc3BlY3RvciA9IHsKIAog
ICAgIGZvckFsbFJlc291cmNlczogZnVuY3Rpb24oY2FsbGJhY2spCiAgICAgewotICAgICAgICBX
ZWJJbnNwZWN0b3IucmVzb3VyY2VNYW5hZ2VyLmZvckFsbFJlc291cmNlcyhjYWxsYmFjayk7Cisg
ICAgICAgIFdlYkluc3BlY3Rvci5uZXR3b3JrTWFuYWdlci5mb3JBbGxSZXNvdXJjZXMoY2FsbGJh
Y2spOwogICAgIH0sCiAKICAgICByZXNvdXJjZUZvclVSTDogZnVuY3Rpb24odXJsKQogICAgIHsK
LSAgICAgICAgcmV0dXJuIHRoaXMucmVzb3VyY2VNYW5hZ2VyLnJlc291cmNlRm9yVVJMKHVybCk7
CisgICAgICAgIHJldHVybiB0aGlzLm5ldHdvcmtNYW5hZ2VyLnJlc291cmNlRm9yVVJMKHVybCk7
CiAgICAgfQogfQogCkBAIC01MTcsNyArNTE3LDcgQEAgV2ViSW5zcGVjdG9yLmRvTG9hZGVkRG9u
ZSA9IGZ1bmN0aW9uKCkKICAgICAvLyB0aGlzLmNoYW5nZXMgPSBuZXcgV2ViSW5zcGVjdG9yLkNo
YW5nZXNWaWV3KHRoaXMuZHJhd2VyKTsKICAgICAvLyBUT0RPOiBSZW1vdmUgY2xhc3M9ImhpZGRl
biIgZnJvbSBpbnNwZWN0b3IuaHRtbCBvbiBidXR0b24jY2hhbmdlcy1zdGF0dXMtYmFyLWl0ZW0K
ICAgICB0aGlzLmRyYXdlci52aXNpYmxlVmlldyA9IHRoaXMuY29uc29sZTsKLSAgICB0aGlzLnJl
c291cmNlTWFuYWdlciA9IG5ldyBXZWJJbnNwZWN0b3IuUmVzb3VyY2VNYW5hZ2VyKCk7CisgICAg
dGhpcy5uZXR3b3JrTWFuYWdlciA9IG5ldyBXZWJJbnNwZWN0b3IuTmV0d29ya01hbmFnZXIoKTsK
ICAgICB0aGlzLmRvbUFnZW50ID0gbmV3IFdlYkluc3BlY3Rvci5ET01BZ2VudCgpOwogCiAgICAg
SW5zcGVjdG9yQmFja2VuZC5yZWdpc3RlckRvbWFpbkRpc3BhdGNoZXIoIkluc3BlY3RvciIsIHRo
aXMpOwo=
</data>
<flag name="review"
          id="68151"
          type_id="1"
          status="-"
          setter="pfeldman"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>77132</attachid>
            <date>2010-12-21 10:41:47 -0800</date>
            <delta_ts>2010-12-28 07:12:24 -0800</delta_ts>
            <desc>[patch] third iteration</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>88098</size>
            <attacher name="Ilya Tikhonovsky">loislo</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ZGJjMzBiZi4uMTg3ODc5ZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMTkgQEAKKzIwMTAtMTItMjEgIElseWEgVGlraG9u
b3Zza3kgIDxsb2lzbG9AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IFByb3RvY29sIGNsZWFudXAgdGFz
ay4gSW50cm9kdWNlIE5ldHdvcmssIERPTVN0b3JhZ2UgYW5kIERhdGFiYXNlIGRvbWFpbnMuCisK
KyAgICAgICAgRG9tYWluIHdhcyBjaGFuZ2VkIGZvciBSZXNvdXJjZXMsIEZpbGVTeXN0ZW0gZXRj
LiByZWxhdGVkIG1ldGhvZHMuCisgICAgICAgIFJlc291cmNlc01hbmFnZXIgd2FzIHJlbmFtZWQg
dG8gTmV0d29ya01hbmFnZXIuCisgICAgICAgIFJlc291cmNlVHJlZU1vZGVsIHdhcyBleHRyYWN0
ZWQgYXMgc2VwYXJhdGUgZmlsZS4KKyAgICAgICAgRmlsZVN5c3RlbSwgRGF0YWJhc2UsIERPTVN0
b3JhZ2UgYW5kIEFwcGxpY2F0aW9uQ2FjaGUgbWV0aG9kcyB3ZXJlCisgICAgICAgIHJlbW92ZWQg
ZnJvbSBOZXR3b3JrTWFuYWdlciBhbmQgYWRkZWQgdG8gY29ycmVzcG9uZGluZyBjbGFzc2VzLgor
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MTMzNAor
CisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNv
cmUudmNwcm9qOgorICAgICAgICAqIGluc3BlY3Rvci9Db2RlR2VuZXJhdG9ySW5zcGVjdG9yLnBt
OgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3IuaWRsOgorICAgICAgICAqIGluc3BlY3Rv
ci9mcm9udC1lbmQvQXVkaXRSdWxlcy5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5BdWRpdFJ1
bGVzLlVudXNlZENzc1J1bGUucHJvdG90eXBlLmRvUnVuLmV2YWxDYWxsYmFjay5zZWxlY3RvcnND
YWxsYmFjayk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9DU1NTdHlsZU1vZGVsLmpz
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNTU1N0eWxlTW9kZWwucHJvdG90eXBlLl9zdHlsZVNo
ZWV0Q2hhbmdlZC5jYWxsYmFjayk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ1NTU3R5bGVNb2Rl
bC5wcm90b3R5cGUuX3N0eWxlU2hlZXRDaGFuZ2VkKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJv
bnQtZW5kL0NvbnNvbGVWaWV3LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvbnNvbGVWaWV3
LnByb3RvdHlwZS5hZGRNZXNzYWdlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db25zb2xlVmll
dy5wcm90b3R5cGUuY2xlYXJNZXNzYWdlcyk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVu
ZC9ET01BZ2VudC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5BcHBsaWNhdGlvbkNhY2hlLnVw
ZGF0ZUFwcGxpY2F0aW9uQ2FjaGVTdGF0dXMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkFwcGxp
Y2F0aW9uQ2FjaGUudXBkYXRlTmV0d29ya1N0YXRlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJv
bnQtZW5kL0RPTVN0b3JhZ2UuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRE9NU3RvcmFnZS5h
ZGRET01TdG9yYWdlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5ET01TdG9yYWdlLnNlbGVjdERP
TVN0b3JhZ2UpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2UudXBkYXRlRE9NU3Rv
cmFnZSk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9EYXRhYmFzZS5qczoKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5EYXRhYmFzZS5wcm90b3R5cGUuZXhlY3V0ZVNxbCk6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuRGF0YWJhc2UuYWRkRGF0YWJhc2UpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLkRhdGFiYXNlLnNlbGVjdERhdGFiYXNlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EYXRh
YmFzZS5zcWxUcmFuc2FjdGlvblN1Y2NlZWRlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGF0
YWJhc2Uuc3FsVHJhbnNhY3Rpb25GYWlsZWQpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1l
bmQvRmlsZVN5c3RlbVZpZXcuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbS5k
aWRHZXRGaWxlU3lzdGVtUGF0aCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbS5k
aWRHZXRGaWxlU3lzdGVtRXJyb3IpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW0u
ZGlkR2V0RmlsZVN5c3RlbURpc2FibGVkKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5k
L05ldHdvcmtJdGVtVmlldy5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5OZXR3b3JrSXRlbVZp
ZXcpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvTmV0d29ya01hbmFnZXIuanM6IEFk
ZGVkLgorICAgICAgICAoV2ViSW5zcGVjdG9yLk5ldHdvcmtNYW5hZ2VyKToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5OZXR3b3JrTWFuYWdlci5wcm90b3R5cGUuX2NyZWF0ZVJlc291cmNlKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5OZXR3b3JrTWFuYWdlci5wcm90b3R5cGUuaWRlbnRpZmllckZv
ckluaXRpYWxSZXF1ZXN0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5OZXR3b3JrTWFuYWdlci5w
cm90b3R5cGUud2lsbFNlbmRSZXF1ZXN0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5OZXR3b3Jr
TWFuYWdlci5wcm90b3R5cGUuX3VwZGF0ZVJlc291cmNlV2l0aFJlcXVlc3QpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLk5ldHdvcmtNYW5hZ2VyLnByb3RvdHlwZS5fYXBwZW5kUmVkaXJlY3QpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLk5ldHdvcmtNYW5hZ2VyLnByb3RvdHlwZS5tYXJrUmVzb3Vy
Y2VBc0NhY2hlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTmV0d29ya01hbmFnZXIucHJvdG90
eXBlLmRpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTmV0d29ya01h
bmFnZXIucHJvdG90eXBlLl91cGRhdGVSZXNvdXJjZVdpdGhSZXNwb25zZSk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuTmV0d29ya01hbmFnZXIucHJvdG90eXBlLmRpZFJlY2VpdmVDb250ZW50TGVu
Z3RoKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5OZXR3b3JrTWFuYWdlci5wcm90b3R5cGUuZGlk
RmluaXNoTG9hZGluZyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTmV0d29ya01hbmFnZXIucHJv
dG90eXBlLmRpZEZhaWxMb2FkaW5nKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5OZXR3b3JrTWFu
YWdlci5wcm90b3R5cGUuZGlkTG9hZFJlc291cmNlRnJvbU1lbW9yeUNhY2hlKToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5OZXR3b3JrTWFuYWdlci5wcm90b3R5cGUuX3VwZGF0ZVJlc291cmNlV2l0
aENhY2hlZFJlc291cmNlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5OZXR3b3JrTWFuYWdlci5w
cm90b3R5cGUuc2V0SW5pdGlhbENvbnRlbnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk5ldHdv
cmtNYW5hZ2VyLnByb3RvdHlwZS5kaWRDb21taXRMb2FkRm9yRnJhbWUpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLk5ldHdvcmtNYW5hZ2VyLnByb3RvdHlwZS5mcmFtZURldGFjaGVkRnJvbVBhcmVu
dCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTmV0d29ya01hbmFnZXIucHJvdG90eXBlLmRpZENy
ZWF0ZVdlYlNvY2tldCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTmV0d29ya01hbmFnZXIucHJv
dG90eXBlLndpbGxTZW5kV2ViU29ja2V0SGFuZHNoYWtlUmVxdWVzdCk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuTmV0d29ya01hbmFnZXIucHJvdG90eXBlLmRpZFJlY2VpdmVXZWJTb2NrZXRIYW5k
c2hha2VSZXNwb25zZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTmV0d29ya01hbmFnZXIucHJv
dG90eXBlLmRpZENsb3NlV2ViU29ja2V0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5OZXR3b3Jr
TWFuYWdlci5wcm90b3R5cGUuX3Byb2Nlc3NDYWNoZWRSZXNvdXJjZXMpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLk5ldHdvcmtNYW5hZ2VyLnByb3RvdHlwZS5fYWRkRnJhbWVzUmVjdXJzaXZlbHkp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLk5ldHdvcmtNYW5hZ2VyLnJlcXVlc3RDb250ZW50KToK
KyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL05ldHdvcmtQYW5lbC5qczoKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5OZXR3b3JrUGFuZWwucHJvdG90eXBlLnJlZnJlc2hSZXNvdXJjZSk6Cisg
ICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZS5qczoKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5SZXNvdXJjZS5wcm90b3R5cGUuX2lubmVyUmVxdWVzdENvbnRlbnQpOgorICAgICAg
ICAqIGluc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VNYW5hZ2VyLmpzOiBSZW1vdmVkLgorICAg
ICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VUcmVlTW9kZWwuanM6IEFkZGVkLgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNlVHJlZU1vZGVsKToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5SZXNvdXJjZVRyZWVNb2RlbC5wcm90b3R5cGUuYWRkT3JVcGRhdGVGcmFtZSk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuUmVzb3VyY2VUcmVlTW9kZWwucHJvdG90eXBlLmRpZENvbW1p
dExvYWRGb3JGcmFtZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVzb3VyY2VUcmVlTW9kZWwu
cHJvdG90eXBlLmZyYW1lRGV0YWNoZWRGcm9tUGFyZW50KToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5SZXNvdXJjZVRyZWVNb2RlbC5wcm90b3R5cGUuX2NsZWFyQ2hpbGRGcmFtZXNBbmRSZXNvdXJj
ZXMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNlVHJlZU1vZGVsLnByb3RvdHlwZS5h
ZGRSZXNvdXJjZVRvRnJhbWUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNlVHJlZU1v
ZGVsLnByb3RvdHlwZS5fY2xlYXJSZXNvdXJjZXMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJl
c291cmNlVHJlZU1vZGVsLnByb3RvdHlwZS5mb3JBbGxSZXNvdXJjZXMpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLlJlc291cmNlVHJlZU1vZGVsLnByb3RvdHlwZS5hZGRDb25zb2xlTWVzc2FnZSk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVzb3VyY2VUcmVlTW9kZWwucHJvdG90eXBlLmNsZWFy
Q29uc29sZU1lc3NhZ2VzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SZXNvdXJjZVRyZWVNb2Rl
bC5wcm90b3R5cGUuX2NhbGxGb3JGcmFtZVJlc291cmNlcyk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuUmVzb3VyY2VUcmVlTW9kZWwucHJvdG90eXBlLnJlc291cmNlRm9yVVJMKToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5SZXNvdXJjZVRyZWVNb2RlbC5wcm90b3R5cGUuYmluZFJlc291cmNlVVJM
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SZXNvdXJjZVRyZWVNb2RlbC5wcm90b3R5cGUuX3Vu
YmluZFJlc291cmNlVVJMKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SZXNvdXJjZVRyZWVNb2Rl
bC5jcmVhdGVSZXNvdXJjZSk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJj
ZVZpZXcuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVzb3VyY2VWaWV3LmNyZWF0ZVJlc291
cmNlVmlldyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVzb3VyY2VWaWV3LnJlc291cmNlVmll
d1R5cGVNYXRjaGVzUmVzb3VyY2UpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNlVmll
dy5yZXNvdXJjZVZpZXdGb3JSZXNvdXJjZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVzb3Vy
Y2VWaWV3LnJlY3JlYXRlUmVzb3VyY2VWaWV3KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SZXNv
dXJjZVZpZXcuZXhpc3RpbmdSZXNvdXJjZVZpZXdGb3JSZXNvdXJjZSk6CisgICAgICAgICogaW5z
cGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZXNQYW5lbC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5SZXNvdXJjZXNQYW5lbC5wcm90b3R5cGUuY2FuU2hvd1NvdXJjZUxpbmUpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLlJlc291cmNlc1BhbmVsLnByb3RvdHlwZS5zaG93U291cmNlTGluZSk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuUmVzb3VyY2VzUGFuZWwucHJvdG90eXBlLnNob3dSZXNvdXJj
ZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVzb3VyY2VzUGFuZWwucHJvdG90eXBlLmdldCBz
ZWFyY2hhYmxlVmlld3MuY2FsbGJhY2spOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNl
c1BhbmVsLnByb3RvdHlwZS5nZXQgc2VhcmNoYWJsZVZpZXdzKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5GcmFtZVJlc291cmNlVHJlZUVsZW1lbnQucHJvdG90eXBlLl9lcnJvcnNXYXJuaW5nc1Vw
ZGF0ZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkZyYW1lUmVzb3VyY2VUcmVlRWxlbWVudC5w
cm90b3R5cGUuX2NvbnRlbnRDaGFuZ2VkKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5k
L1NjcmlwdHNQYW5lbC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TY3JpcHRzUGFuZWwucHJv
dG90eXBlLl9hZGRTY3JpcHQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5lbC5w
cm90b3R5cGUucmVzZXQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5lbC5wcm90
b3R5cGUuX3NvdXJjZUZyYW1lRm9yUmVzb3VyY2UpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNj
cmlwdHNQYW5lbC5wcm90b3R5cGUuX3Nob3dTY3JpcHRPclJlc291cmNlKToKKyAgICAgICAgKiBp
bnNwZWN0b3IvZnJvbnQtZW5kL1dlYktpdC5xcmM6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250
LWVuZC9pbnNwZWN0b3IuaHRtbDoKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL2luc3Bl
Y3Rvci5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5mb3JBbGxSZXNvdXJjZXMpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLnJlc291cmNlRm9yVVJMKToKKwogMjAxMC0xMi0yMSAgTWFoZXNoIEt1
bGthcm5pICA8bWFoZXNoLmt1bGthcm5pQG5va2lhLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBi
eSBBbmRyZWFzIEtsaW5nLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9XZWJD
b3JlL1dlYkNvcmUuZ3lwaQppbmRleCBmY2E4Y2ZjLi40NjZkNDg5IDEwMDY0NAotLS0gYS9XZWJD
b3JlL1dlYkNvcmUuZ3lwaQorKysgYi9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtNDY0Nyw2ICs0
NjQ3LDcgQEAKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0tleWJvYXJkU2hvcnRj
dXQuanMnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvTWV0cmljc1NpZGViYXJQ
YW5lLmpzJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL05ldHdvcmtJdGVtVmll
dy5qcycsCisgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9OZXR3b3JrTWFuYWdlci5q
cycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9OZXR3b3JrUGFuZWwuanMnLAog
ICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvT2JqZWN0LmpzJywKICAgICAgICAgICAg
ICdpbnNwZWN0b3IvZnJvbnQtZW5kL09iamVjdFByb3BlcnRpZXNTZWN0aW9uLmpzJywKQEAgLTQ2
NjMsOSArNDY2NCw5IEBACiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJj
ZS5qcycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZUNhdGVnb3J5
LmpzJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlQ29va2llc1Zp
ZXcuanMnLAotICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VNYW5hZ2Vy
LmpzJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlSGVhZGVyc1Zp
ZXcuanMnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VUaW1pbmdW
aWV3LmpzJywKKyAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlVHJlZU1v
ZGVsLmpzJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlVmlldy5q
cycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZXNQYW5lbC5qcycs
CiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9TY29wZUNoYWluU2lkZWJhclBhbmUu
anMnLApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvaiBi
L1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKaW5kZXggMzIzZTUyNi4uZWRl
MTRiMiAxMDA3NTUKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagor
KysgYi9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCkBAIC02NTU0OSw2ICs2
NTU0OSwxMCBAQAogCQkJCQk+CiAJCQkJPC9GaWxlPgogCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZl
UGF0aD0iLi5caW5zcGVjdG9yXGZyb250LWVuZFxOZXR3b3JrTWFuYWdlci5qcyIKKwkJCQkJPgor
CQkJCTwvRmlsZT4KKwkJCQk8RmlsZQogCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGluc3BlY3Rvclxm
cm9udC1lbmRcbmV0d29ya1BhbmVsLmNzcyIKIAkJCQkJPgogCQkJCTwvRmlsZT4KQEAgLTY1NjI1
LDE1ICs2NTYyOSwxNSBAQAogCQkJCQk+CiAJCQkJPC9GaWxlPgogCQkJCTxGaWxlCi0JCQkJCVJl
bGF0aXZlUGF0aD0iLi5caW5zcGVjdG9yXGZyb250LWVuZFxSZXNvdXJjZU1hbmFnZXIuanMiCisJ
CQkJCVJlbGF0aXZlUGF0aD0iLi5caW5zcGVjdG9yXGZyb250LWVuZFxSZXNvdXJjZXNQYW5lbC5q
cyIKIAkJCQkJPgogCQkJCTwvRmlsZT4KIAkJCQk8RmlsZQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4u
XGluc3BlY3Rvclxmcm9udC1lbmRcUmVzb3VyY2VzUGFuZWwuanMiCisJCQkJCVJlbGF0aXZlUGF0
aD0iLi5caW5zcGVjdG9yXGZyb250LWVuZFxSZXNvdXJjZVRpbWluZ1ZpZXcuanMiCiAJCQkJCT4K
IAkJCQk8L0ZpbGU+CiAJCQkJPEZpbGUKLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxpbnNwZWN0b3Jc
ZnJvbnQtZW5kXFJlc291cmNlVGltaW5nVmlldy5qcyIKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxp
bnNwZWN0b3JcZnJvbnQtZW5kXFJlc291cmNlVHJlZU1vZGVsLmpzIgogCQkJCQk+CiAJCQkJPC9G
aWxlPgogCQkJCTxGaWxlCmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9Db2RlR2VuZXJh
dG9ySW5zcGVjdG9yLnBtIGIvV2ViQ29yZS9pbnNwZWN0b3IvQ29kZUdlbmVyYXRvckluc3BlY3Rv
ci5wbQppbmRleCBlOTYwZWQ2Li45NWY3ZThmIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rv
ci9Db2RlR2VuZXJhdG9ySW5zcGVjdG9yLnBtCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL0NvZGVH
ZW5lcmF0b3JJbnNwZWN0b3IucG0KQEAgLTMzLDYgKzMzLDIwIEBAICR0eXBlVHJhbnNmb3JteyJS
ZXNvdXJjZXMifSA9IHsKICAgICAiaGVhZGVyIiA9PiAiSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5o
IiwKICAgICAiZG9tYWluQWNjZXNzb3IiID0+ICJtX2luc3BlY3RvckNvbnRyb2xsZXItPm1fcmVz
b3VyY2VBZ2VudCIsCiB9OworJHR5cGVUcmFuc2Zvcm17Ik5ldHdvcmsifSA9IHsKKyAgICAiZm9y
d2FyZCIgPT4gIkluc3BlY3RvclJlc291cmNlQWdlbnQiLAorICAgICJoZWFkZXIiID0+ICJJbnNw
ZWN0b3JSZXNvdXJjZUFnZW50LmgiLAorICAgICJkb21haW5BY2Nlc3NvciIgPT4gIm1faW5zcGVj
dG9yQ29udHJvbGxlci0+bV9yZXNvdXJjZUFnZW50IiwKK307CiskdHlwZVRyYW5zZm9ybXsiRE9N
U3RvcmFnZSJ9ID0geworICAgICJmb3J3YXJkSGVhZGVyIiA9PiAiSW5zcGVjdG9yQ29udHJvbGxl
ci5oIiwKKyAgICAiZG9tYWluQWNjZXNzb3IiID0+ICJtX2luc3BlY3RvckNvbnRyb2xsZXIiLAor
fTsKKyR0eXBlVHJhbnNmb3JteyJEYXRhYmFzZSJ9ID0geworICAgICJmb3J3YXJkIiA9PiAiSW5z
cGVjdG9yQmFja2VuZCIsCisgICAgImhlYWRlciIgPT4gIkluc3BlY3RvckJhY2tlbmQuaCIsCisg
ICAgImRvbWFpbkFjY2Vzc29yIiA9PiAibV9pbnNwZWN0b3JDb250cm9sbGVyLT5pbnNwZWN0b3JC
YWNrZW5kKCkiLAorfTsKICR0eXBlVHJhbnNmb3JteyJET00ifSA9IHsKICAgICAiZm9yd2FyZCIg
PT4gIkluc3BlY3RvckRPTUFnZW50IiwKICAgICAiaGVhZGVyIiA9PiAiSW5zcGVjdG9yRE9NQWdl
bnQuaCIsCmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuaWRsIGIvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmlkbAppbmRleCAxMmU3MjNkLi4wZjlkNmExIDEwMDY0
NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuaWRsCisrKyBiL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3Rvci5pZGwKQEAgLTY3LDYgKzY3LDggQEAgbW9kdWxlIGNvcmUgewogICAg
ICAgICBbZG9tYWluPUluc3BlY3Rvcl0gdm9pZCBoaWRlRnJhbWVIaWdobGlnaHQoKTsKICAgICAg
ICAgW25vdGlmeSwgZG9tYWluPUluc3BlY3Rvcl0gdm9pZCB1cGRhdGVGb2N1c2VkTm9kZShvdXQg
bG9uZyBub2RlSWQpOwogCisgICAgICAgIFtkb21haW49SW5zcGVjdG9yXSB2b2lkIHNldEV4dHJh
SGVhZGVycyhpbiBPYmplY3QgaGVhZGVycyk7CisKICAgICAgICAgLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KICAg
ICAgICAgLy8gQ29uc29sZSBBUEkKICAgICAgICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KQEAgLTc5LDY3ICs4
MSw2MyBAQCBtb2R1bGUgY29yZSB7CiAgICAgICAgIFtub3RpZnksIGRvbWFpbj1JbnNwZWN0b3Jd
IHZvaWQgY29uc29sZU1lc3NhZ2VzQ2xlYXJlZCgpOwogCiAgICAgICAgIC8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ci0gICAgICAgIC8vIFJlc291cmNlcyBBUEkKKyAgICAgICAgLy8gTmV0d29yayBBUEkKICAgICAg
ICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8KIAotICAgICAgICAvLyBGSVhNRTogTmV0d29yayBkb21haW4KLSAg
ICAgICAgW25vdGlmeSwgZG9tYWluPVJlc291cmNlc10gdm9pZCBpZGVudGlmaWVyRm9ySW5pdGlh
bFJlcXVlc3Qob3V0IGxvbmcgaWRlbnRpZmllciwgb3V0IFN0cmluZyB1cmwsIG91dCBPYmplY3Qg
bG9hZGVyLCBvdXQgVmFsdWUgY2FsbFN0YWNrKTsKLSAgICAgICAgW25vdGlmeSwgZG9tYWluPVJl
c291cmNlc10gdm9pZCB3aWxsU2VuZFJlcXVlc3Qob3V0IGxvbmcgaWRlbnRpZmllciwgb3V0IGRv
dWJsZSB0aW1lLCBvdXQgT2JqZWN0IHJlcXVlc3QsIG91dCBPYmplY3QgcmVkaXJlY3RSZXNwb25z
ZSk7Ci0gICAgICAgIFtub3RpZnksIGRvbWFpbj1SZXNvdXJjZXNdIHZvaWQgbWFya1Jlc291cmNl
QXNDYWNoZWQob3V0IGxvbmcgaWRlbnRpZmllcik7Ci0gICAgICAgIFtub3RpZnksIGRvbWFpbj1S
ZXNvdXJjZXNdIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKG91dCBsb25nIGlkZW50aWZpZXIsIG91
dCBkb3VibGUgdGltZSwgb3V0IFN0cmluZyByZXNvdXJjZVR5cGUsIG91dCBPYmplY3QgcmVzcG9u
c2UpOwotICAgICAgICBbbm90aWZ5LCBkb21haW49UmVzb3VyY2VzXSB2b2lkIGRpZFJlY2VpdmVD
b250ZW50TGVuZ3RoKG91dCBsb25nIGlkZW50aWZpZXIsIG91dCBkb3VibGUgdGltZSwgb3V0IGxv
bmcgbGVuZ3RoUmVjZWl2ZWQpOwotICAgICAgICBbbm90aWZ5LCBkb21haW49UmVzb3VyY2VzXSB2
b2lkIGRpZEZpbmlzaExvYWRpbmcob3V0IGxvbmcgaWRlbnRpZmllciwgb3V0IGRvdWJsZSBmaW5p
c2hUaW1lKTsKLSAgICAgICAgW25vdGlmeSwgZG9tYWluPVJlc291cmNlc10gdm9pZCBkaWRGYWls
TG9hZGluZyhvdXQgbG9uZyBpZGVudGlmaWVyLCBvdXQgZG91YmxlIHRpbWUsIG91dCBTdHJpbmcg
bG9jYWxpemVkRGVzY3JpcHRpb24pOwotICAgICAgICBbbm90aWZ5LCBkb21haW49UmVzb3VyY2Vz
XSB2b2lkIGRpZExvYWRSZXNvdXJjZUZyb21NZW1vcnlDYWNoZShvdXQgZG91YmxlIHRpbWUsIG91
dCBPYmplY3QgcmVzb3VyY2UpOwotICAgICAgICBbbm90aWZ5LCBkb21haW49UmVzb3VyY2VzXSB2
b2lkIHNldEluaXRpYWxDb250ZW50KG91dCBsb25nIGlkZW50aWZpZXIsIG91dCBTdHJpbmcgc291
cmNlU3RyaW5nLCBvdXQgU3RyaW5nIHR5cGUpOwotICAgICAgICBbbm90aWZ5LCBkb21haW49UmVz
b3VyY2VzXSB2b2lkIGRpZENvbW1pdExvYWRGb3JGcmFtZShvdXQgT2JqZWN0IGZyYW1lLCBvdXQg
T2JqZWN0IGxvYWRlcik7Ci0gICAgICAgIFtub3RpZnksIGRvbWFpbj1SZXNvdXJjZXNdIHZvaWQg
ZnJhbWVEZXRhY2hlZEZyb21QYXJlbnQob3V0IHVuc2lnbmVkIGxvbmcgZnJhbWVJZCk7Ci0gICAg
ICAgCi0gICAgICAgIFtkb21haW49SW5zcGVjdG9yXSB2b2lkIHNldEV4dHJhSGVhZGVycyhpbiBP
YmplY3QgaGVhZGVycyk7CisgICAgICAgIFtub3RpZnksIGRvbWFpbj1OZXR3b3JrXSB2b2lkIGlk
ZW50aWZpZXJGb3JJbml0aWFsUmVxdWVzdChvdXQgbG9uZyBpZGVudGlmaWVyLCBvdXQgU3RyaW5n
IHVybCwgb3V0IE9iamVjdCBsb2FkZXIsIG91dCBWYWx1ZSBjYWxsU3RhY2spOworICAgICAgICBb
bm90aWZ5LCBkb21haW49TmV0d29ya10gdm9pZCB3aWxsU2VuZFJlcXVlc3Qob3V0IGxvbmcgaWRl
bnRpZmllciwgb3V0IGRvdWJsZSB0aW1lLCBvdXQgT2JqZWN0IHJlcXVlc3QsIG91dCBPYmplY3Qg
cmVkaXJlY3RSZXNwb25zZSk7CisgICAgICAgIFtub3RpZnksIGRvbWFpbj1OZXR3b3JrXSB2b2lk
IG1hcmtSZXNvdXJjZUFzQ2FjaGVkKG91dCBsb25nIGlkZW50aWZpZXIpOworICAgICAgICBbbm90
aWZ5LCBkb21haW49TmV0d29ya10gdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2Uob3V0IGxvbmcgaWRl
bnRpZmllciwgb3V0IGRvdWJsZSB0aW1lLCBvdXQgU3RyaW5nIHJlc291cmNlVHlwZSwgb3V0IE9i
amVjdCByZXNwb25zZSk7CisgICAgICAgIFtub3RpZnksIGRvbWFpbj1OZXR3b3JrXSB2b2lkIGRp
ZFJlY2VpdmVDb250ZW50TGVuZ3RoKG91dCBsb25nIGlkZW50aWZpZXIsIG91dCBkb3VibGUgdGlt
ZSwgb3V0IGxvbmcgbGVuZ3RoUmVjZWl2ZWQpOworICAgICAgICBbbm90aWZ5LCBkb21haW49TmV0
d29ya10gdm9pZCBkaWRGaW5pc2hMb2FkaW5nKG91dCBsb25nIGlkZW50aWZpZXIsIG91dCBkb3Vi
bGUgZmluaXNoVGltZSk7CisgICAgICAgIFtub3RpZnksIGRvbWFpbj1OZXR3b3JrXSB2b2lkIGRp
ZEZhaWxMb2FkaW5nKG91dCBsb25nIGlkZW50aWZpZXIsIG91dCBkb3VibGUgdGltZSwgb3V0IFN0
cmluZyBsb2NhbGl6ZWREZXNjcmlwdGlvbik7CisgICAgICAgIFtub3RpZnksIGRvbWFpbj1OZXR3
b3JrXSB2b2lkIGRpZExvYWRSZXNvdXJjZUZyb21NZW1vcnlDYWNoZShvdXQgZG91YmxlIHRpbWUs
IG91dCBPYmplY3QgcmVzb3VyY2UpOworICAgICAgICBbbm90aWZ5LCBkb21haW49TmV0d29ya10g
dm9pZCBzZXRJbml0aWFsQ29udGVudChvdXQgbG9uZyBpZGVudGlmaWVyLCBvdXQgU3RyaW5nIHNv
dXJjZVN0cmluZywgb3V0IFN0cmluZyB0eXBlKTsKKyAgICAgICAgW25vdGlmeSwgZG9tYWluPU5l
dHdvcmtdIHZvaWQgZGlkQ29tbWl0TG9hZEZvckZyYW1lKG91dCBPYmplY3QgZnJhbWUsIG91dCBP
YmplY3QgbG9hZGVyKTsKKyAgICAgICAgW25vdGlmeSwgZG9tYWluPU5ldHdvcmtdIHZvaWQgZGlk
Q3JlYXRlV2ViU29ja2V0KG91dCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIG91dCBTdHJpbmcg
cmVxdWVzdFVSTCk7CisgICAgICAgIFtub3RpZnksIGRvbWFpbj1OZXR3b3JrXSB2b2lkIHdpbGxT
ZW5kV2ViU29ja2V0SGFuZHNoYWtlUmVxdWVzdChvdXQgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVy
LCBvdXQgZG91YmxlIHRpbWUsIG91dCBPYmplY3QgcmVxdWVzdCk7CisgICAgICAgIFtub3RpZnks
IGRvbWFpbj1OZXR3b3JrXSB2b2lkIGRpZFJlY2VpdmVXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25z
ZShvdXQgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBvdXQgZG91YmxlIHRpbWUsIG91dCBPYmpl
Y3QgcmVzcG9uc2UpOworICAgICAgICBbbm90aWZ5LCBkb21haW49TmV0d29ya10gdm9pZCBkaWRD
bG9zZVdlYlNvY2tldChvdXQgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBvdXQgZG91YmxlIHRp
bWUpOworCisgICAgICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisgICAgICAgIC8vIFJlc291cmNlcyBBUEkK
KyAgICAgICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KIAogICAgICAgICBbZG9tYWluPVJlc291cmNlc10gdm9p
ZCBjYWNoZWRSZXNvdXJjZXMob3V0IE9iamVjdCByZXNvdXJjZXMpOwogICAgICAgICBbZG9tYWlu
PVJlc291cmNlc10gdm9pZCByZXNvdXJjZUNvbnRlbnQoaW4gdW5zaWduZWQgbG9uZyBmcmFtZUlk
LCBpbiBTdHJpbmcgdXJsLCBpbiBib29sZWFuIGJhc2U2NEVuY29kZSwgb3V0IFN0cmluZyBjb250
ZW50KTsKLQotICAgICAgICBbbm90aWZ5LCBkb21haW49UmVzb3VyY2VzXSB2b2lkIGRpZENyZWF0
ZVdlYlNvY2tldChvdXQgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBvdXQgU3RyaW5nIHJlcXVl
c3RVUkwpOwotICAgICAgICBbbm90aWZ5LCBkb21haW49UmVzb3VyY2VzXSB2b2lkIHdpbGxTZW5k
V2ViU29ja2V0SGFuZHNoYWtlUmVxdWVzdChvdXQgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBv
dXQgZG91YmxlIHRpbWUsIG91dCBPYmplY3QgcmVxdWVzdCk7Ci0gICAgICAgIFtub3RpZnksIGRv
bWFpbj1SZXNvdXJjZXNdIHZvaWQgZGlkUmVjZWl2ZVdlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNl
KG91dCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIG91dCBkb3VibGUgdGltZSwgb3V0IE9iamVj
dCByZXNwb25zZSk7Ci0gICAgICAgIFtub3RpZnksIGRvbWFpbj1SZXNvdXJjZXNdIHZvaWQgZGlk
Q2xvc2VXZWJTb2NrZXQob3V0IHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgb3V0IGRvdWJsZSB0
aW1lKTsKKyAgICAgICAgW25vdGlmeSwgZG9tYWluPVJlc291cmNlc10gdm9pZCBmcmFtZURldGFj
aGVkRnJvbVBhcmVudChvdXQgdW5zaWduZWQgbG9uZyBmcmFtZUlkKTsKIAogICAgICAgICAvLyBG
SVhNRTogSW50cm9kdWNlIG5ldyBTdG9yYWdlRG9tYWluLgogICAgICAgICBbZG9tYWluPUluc3Bl
Y3Rvcl0gdm9pZCBnZXRDb29raWVzKG91dCBBcnJheSBjb29raWVzLCBvdXQgU3RyaW5nIGNvb2tp
ZXNTdHJpbmcpOwogICAgICAgICBbZG9tYWluPUluc3BlY3Rvcl0gdm9pZCBkZWxldGVDb29raWUo
aW4gU3RyaW5nIGNvb2tpZU5hbWUsIGluIFN0cmluZyBkb21haW4pOwogI2lmIGRlZmluZWQoRU5B
QkxFX0RBVEFCQVNFKSAmJiBFTkFCTEVfREFUQUJBU0UKLSAgICAgICAgW25vdGlmeSwgZG9tYWlu
PVJlc291cmNlc10gdm9pZCBhZGREYXRhYmFzZShvdXQgT2JqZWN0IGRhdGFiYXNlKTsKLSAgICAg
ICAgW25vdGlmeSwgZG9tYWluPVJlc291cmNlc10gdm9pZCBzZWxlY3REYXRhYmFzZShvdXQgaW50
IGRhdGFiYXNlSWQpOwotICAgICAgICBbZG9tYWluPUJhY2tlbmRdIHZvaWQgZ2V0RGF0YWJhc2VU
YWJsZU5hbWVzKGluIGxvbmcgZGF0YWJhc2VJZCwgb3V0IEFycmF5IHRhYmxlTmFtZXMpOwotICAg
ICAgICBbZG9tYWluPUJhY2tlbmRdIHZvaWQgZXhlY3V0ZVNRTChpbiBsb25nIGRhdGFiYXNlSWQs
IGluIFN0cmluZyBxdWVyeSwgb3V0IGJvb2xlYW4gc3VjY2Vzcywgb3V0IGxvbmcgdHJhbnNhY3Rp
b25JZCk7Ci0gICAgICAgIFtub3RpZnksIGRvbWFpbj1SZXNvdXJjZXNdIHZvaWQgc3FsVHJhbnNh
Y3Rpb25TdWNjZWVkZWQob3V0IGxvbmcgdHJhbnNhY3Rpb25JZCwgb3V0IFZhbHVlIGNvbHVtbk5h
bWVzLCBvdXQgVmFsdWUgdmFsdWVzKTsKLSAgICAgICAgW25vdGlmeSwgZG9tYWluPVJlc291cmNl
c10gdm9pZCBzcWxUcmFuc2FjdGlvbkZhaWxlZChvdXQgbG9uZyB0cmFuc2FjdGlvbklkLCBvdXQg
VmFsdWUgc3FsRXJyb3IpOworICAgICAgICBbbm90aWZ5LCBkb21haW49RGF0YWJhc2VdIHZvaWQg
YWRkRGF0YWJhc2Uob3V0IE9iamVjdCBkYXRhYmFzZSk7CisgICAgICAgIFtub3RpZnksIGRvbWFp
bj1EYXRhYmFzZV0gdm9pZCBzZWxlY3REYXRhYmFzZShvdXQgaW50IGRhdGFiYXNlSWQpOworICAg
ICAgICBbZG9tYWluPURhdGFiYXNlXSB2b2lkIGdldERhdGFiYXNlVGFibGVOYW1lcyhpbiBsb25n
IGRhdGFiYXNlSWQsIG91dCBBcnJheSB0YWJsZU5hbWVzKTsKKyAgICAgICAgW2RvbWFpbj1EYXRh
YmFzZV0gdm9pZCBleGVjdXRlU1FMKGluIGxvbmcgZGF0YWJhc2VJZCwgaW4gU3RyaW5nIHF1ZXJ5
LCBvdXQgYm9vbGVhbiBzdWNjZXNzLCBvdXQgbG9uZyB0cmFuc2FjdGlvbklkKTsKKyAgICAgICAg
W25vdGlmeSwgZG9tYWluPURhdGFiYXNlXSB2b2lkIHNxbFRyYW5zYWN0aW9uU3VjY2VlZGVkKG91
dCBsb25nIHRyYW5zYWN0aW9uSWQsIG91dCBWYWx1ZSBjb2x1bW5OYW1lcywgb3V0IFZhbHVlIHZh
bHVlcyk7CisgICAgICAgIFtub3RpZnksIGRvbWFpbj1EYXRhYmFzZV0gdm9pZCBzcWxUcmFuc2Fj
dGlvbkZhaWxlZChvdXQgbG9uZyB0cmFuc2FjdGlvbklkLCBvdXQgVmFsdWUgc3FsRXJyb3IpOwog
I2VuZGlmCiAjaWYgZGVmaW5lZChFTkFCTEVfRE9NX1NUT1JBR0UpICYmIEVOQUJMRV9ET01fU1RP
UkFHRQotICAgICAgICBbZG9tYWluPUluc3BlY3Rvcl0gdm9pZCBnZXRET01TdG9yYWdlRW50cmll
cyhpbiBsb25nIHN0b3JhZ2VJZCwgb3V0IEFycmF5IGVudHJpZXMpOwotICAgICAgICBbZG9tYWlu
PUluc3BlY3Rvcl0gdm9pZCBzZXRET01TdG9yYWdlSXRlbShpbiBsb25nIHN0b3JhZ2VJZCwgaW4g
U3RyaW5nIGtleSwgaW4gU3RyaW5nIHZhbHVlLCBvdXQgYm9vbGVhbiBzdWNjZXNzKTsKLSAgICAg
ICAgW2RvbWFpbj1JbnNwZWN0b3JdIHZvaWQgcmVtb3ZlRE9NU3RvcmFnZUl0ZW0oaW4gbG9uZyBz
dG9yYWdlSWQsIGluIFN0cmluZyBrZXksIG91dCBib29sZWFuIHN1Y2Nlc3MpOwotICAgICAgICAv
LyBGSVhNRTogbnVrZSB0aGVzZSBmcm9tIHJlc291cmNlIG1hbmFnZXIgYXNhcCwgZGlzcGF0Y2gg
b24gU3RvcmFnZURvbWFpbi4KLSAgICAgICAgW25vdGlmeSwgZG9tYWluPVJlc291cmNlc10gdm9p
ZCBhZGRET01TdG9yYWdlKG91dCBPYmplY3Qgc3RvcmFnZSk7Ci0gICAgICAgIFtub3RpZnksIGRv
bWFpbj1SZXNvdXJjZXNdIHZvaWQgdXBkYXRlRE9NU3RvcmFnZShvdXQgaW50IHN0b3JhZ2VJZCk7
Ci0gICAgICAgIFtub3RpZnksIGRvbWFpbj1SZXNvdXJjZXNdIHZvaWQgc2VsZWN0RE9NU3RvcmFn
ZShvdXQgaW50IHN0b3JhZ2VJZCk7Ci0jZW5kaWYKLSNpZiBkZWZpbmVkKEVOQUJMRV9PRkZMSU5F
X1dFQl9BUFBMSUNBVElPTlMpICYmIEVOQUJMRV9PRkZMSU5FX1dFQl9BUFBMSUNBVElPTlMKLSAg
ICAgICAgW25vdGlmeSwgZG9tYWluPVJlc291cmNlc10gdm9pZCB1cGRhdGVBcHBsaWNhdGlvbkNh
Y2hlU3RhdHVzKG91dCBpbnQgc3RhdHVzKTsKLSAgICAgICAgW25vdGlmeSwgZG9tYWluPVJlc291
cmNlc10gdm9pZCB1cGRhdGVOZXR3b3JrU3RhdGUob3V0IGJvb2xlYW4gaXNOb3dPbmxpbmUpOwor
ICAgICAgICBbZG9tYWluPURPTVN0b3JhZ2VdIHZvaWQgZ2V0RE9NU3RvcmFnZUVudHJpZXMoaW4g
bG9uZyBzdG9yYWdlSWQsIG91dCBBcnJheSBlbnRyaWVzKTsKKyAgICAgICAgW2RvbWFpbj1ET01T
dG9yYWdlXSB2b2lkIHNldERPTVN0b3JhZ2VJdGVtKGluIGxvbmcgc3RvcmFnZUlkLCBpbiBTdHJp
bmcga2V5LCBpbiBTdHJpbmcgdmFsdWUsIG91dCBib29sZWFuIHN1Y2Nlc3MpOworICAgICAgICBb
ZG9tYWluPURPTVN0b3JhZ2VdIHZvaWQgcmVtb3ZlRE9NU3RvcmFnZUl0ZW0oaW4gbG9uZyBzdG9y
YWdlSWQsIGluIFN0cmluZyBrZXksIG91dCBib29sZWFuIHN1Y2Nlc3MpOworICAgICAgICBbbm90
aWZ5LCBkb21haW49RE9NU3RvcmFnZV0gdm9pZCBhZGRET01TdG9yYWdlKG91dCBPYmplY3Qgc3Rv
cmFnZSk7CisgICAgICAgIFtub3RpZnksIGRvbWFpbj1ET01TdG9yYWdlXSB2b2lkIHVwZGF0ZURP
TVN0b3JhZ2Uob3V0IGludCBzdG9yYWdlSWQpOworICAgICAgICBbbm90aWZ5LCBkb21haW49RE9N
U3RvcmFnZV0gdm9pZCBzZWxlY3RET01TdG9yYWdlKG91dCBpbnQgc3RvcmFnZUlkKTsKICNlbmRp
ZgogI2lmIGRlZmluZWQoRU5BQkxFX09GRkxJTkVfV0VCX0FQUExJQ0FUSU9OUykgJiYgRU5BQkxF
X09GRkxJTkVfV0VCX0FQUExJQ0FUSU9OUwogICAgICAgICBbZG9tYWluPUFwcGxpY2F0aW9uQ2Fj
aGVdIHZvaWQgZ2V0QXBwbGljYXRpb25DYWNoZXMob3V0IFZhbHVlIGFwcGxpY2F0aW9uQ2FjaGVz
KTsKKyAgICAgICAgW25vdGlmeSwgZG9tYWluPUFwcGxpY2F0aW9uQ2FjaGVdIHZvaWQgdXBkYXRl
QXBwbGljYXRpb25DYWNoZVN0YXR1cyhvdXQgaW50IHN0YXR1cyk7CisgICAgICAgIFtub3RpZnks
IGRvbWFpbj1BcHBsaWNhdGlvbkNhY2hlXSB2b2lkIHVwZGF0ZU5ldHdvcmtTdGF0ZShvdXQgYm9v
bGVhbiBpc05vd09ubGluZSk7CiAjZW5kaWYKICNpZiBkZWZpbmVkKEVOQUJMRV9GSUxFX1NZU1RF
TSkgJiYgRU5BQkxFX0ZJTEVfU1lTVEVNCiAgICAgICAgIFtkb21haW49RmlsZVN5c3RlbV0gdm9p
ZCBnZXRGaWxlU3lzdGVtUGF0aEFzeW5jKGluIHVuc2lnbmVkIGludCB0eXBlLCBpbiBTdHJpbmcg
b3JpZ2luKTsKICAgICAgICAgW2RvbWFpbj1GaWxlU3lzdGVtXSB2b2lkIHJldmVhbEZvbGRlcklu
T1MoaW4gU3RyaW5nIHBhdGgpOwogCi0gICAgICAgIC8vIEZJWE1FOiBudWtlIHRoZXNlIGZyb20g
cmVzb3VyY2UgbWFuYWdlciBhc2FwLCBkaXNwYXRjaCBvbiBGaWxlU3lzdGVtLgotICAgICAgICBb
bm90aWZ5LCBkb21haW49UmVzb3VyY2VzXSB2b2lkIGRpZEdldEZpbGVTeXN0ZW1QYXRoKG91dCBT
dHJpbmcgcm9vdCwgb3V0IGludCB0eXBlLCBvdXQgU3RyaW5nIG9yaWdpbik7Ci0gICAgICAgIFtu
b3RpZnksIGRvbWFpbj1SZXNvdXJjZXNdIHZvaWQgZGlkR2V0RmlsZVN5c3RlbUVycm9yKG91dCBp
bnQgdHlwZSwgb3V0IFN0cmluZyBvcmlnaW4pOwotICAgICAgICBbbm90aWZ5LCBkb21haW49UmVz
b3VyY2VzXSB2b2lkIGRpZEdldEZpbGVTeXN0ZW1EaXNhYmxlZCgpOworICAgICAgICBbbm90aWZ5
LCBkb21haW49RmlsZVN5c3RlbV0gdm9pZCBkaWRHZXRGaWxlU3lzdGVtUGF0aChvdXQgU3RyaW5n
IHJvb3QsIG91dCBpbnQgdHlwZSwgb3V0IFN0cmluZyBvcmlnaW4pOworICAgICAgICBbbm90aWZ5
LCBkb21haW49RmlsZVN5c3RlbV0gdm9pZCBkaWRHZXRGaWxlU3lzdGVtRXJyb3Iob3V0IGludCB0
eXBlLCBvdXQgU3RyaW5nIG9yaWdpbik7CisgICAgICAgIFtub3RpZnksIGRvbWFpbj1GaWxlU3lz
dGVtXSB2b2lkIGRpZEdldEZpbGVTeXN0ZW1EaXNhYmxlZCgpOwogI2VuZGlmCiAKICAgICAgICAg
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8KZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9B
dWRpdFJ1bGVzLmpzIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0F1ZGl0UnVsZXMuanMK
aW5kZXggY2QxYjM0Zi4uM2Y3OWMyNSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL0F1ZGl0UnVsZXMuanMKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0F1
ZGl0UnVsZXMuanMKQEAgLTMyNiw3ICszMjYsNyBAQCBXZWJJbnNwZWN0b3IuQXVkaXRSdWxlcy5V
bnVzZWRDc3NSdWxlLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgICAgICAgICAgaWYgKCF1bnVz
ZWRSdWxlcy5sZW5ndGgpCiAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKIAotICAg
ICAgICAgICAgICAgICAgICB2YXIgcmVzb3VyY2UgPSBXZWJJbnNwZWN0b3IucmVzb3VyY2VNYW5h
Z2VyLnJlc291cmNlRm9yVVJMKHN0eWxlU2hlZXQuc291cmNlVVJMKTsKKyAgICAgICAgICAgICAg
ICAgICAgdmFyIHJlc291cmNlID0gV2ViSW5zcGVjdG9yLnJlc291cmNlVHJlZU1vZGVsLnJlc291
cmNlRm9yVVJMKHN0eWxlU2hlZXQuc291cmNlVVJMKTsKICAgICAgICAgICAgICAgICAgICAgdmFy
IGlzSW5saW5lQmxvY2sgPSByZXNvdXJjZSAmJiByZXNvdXJjZS50eXBlID09IFdlYkluc3BlY3Rv
ci5SZXNvdXJjZS5UeXBlLkRvY3VtZW50OwogICAgICAgICAgICAgICAgICAgICB2YXIgdXJsID0g
IWlzSW5saW5lQmxvY2sgPyBXZWJJbnNwZWN0b3IuQXVkaXRSdWxlUmVzdWx0LmxpbmtpZnlEaXNw
bGF5TmFtZShzdHlsZVNoZWV0LnNvdXJjZVVSTCkgOiBTdHJpbmcuc3ByaW50ZigiSW5saW5lIGJs
b2NrICMlZCIsICsraW5saW5lQmxvY2tPcmRpbmFsKTsKICAgICAgICAgICAgICAgICAgICAgdmFy
IHBjdFVudXNlZCA9IE1hdGgucm91bmQoMTAwICogdW51c2VkU3R5bGVzaGVldFNpemUgLyBzdHls
ZXNoZWV0U2l6ZSk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ1NT
U3R5bGVNb2RlbC5qcyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9DU1NTdHlsZU1vZGVs
LmpzCmluZGV4IDJkMTU1ODIuLmU4ZDc1YjcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9DU1NTdHlsZU1vZGVsLmpzCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9DU1NTdHlsZU1vZGVsLmpzCkBAIC0xNjIsNyArMTYyLDcgQEAgV2ViSW5zcGVjdG9yLkNT
U1N0eWxlTW9kZWwucHJvdG90eXBlID0gewogCiAgICAgICAgIGZ1bmN0aW9uIGNhbGxiYWNrKGhy
ZWYsIGNvbnRlbnQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHZhciByZXNvdXJjZSA9IFdlYklu
c3BlY3Rvci5yZXNvdXJjZU1hbmFnZXIucmVzb3VyY2VGb3JVUkwoaHJlZik7CisgICAgICAgICAg
ICB2YXIgcmVzb3VyY2UgPSBXZWJJbnNwZWN0b3IucmVzb3VyY2VUcmVlTW9kZWwucmVzb3VyY2VG
b3JVUkwoaHJlZik7CiAgICAgICAgICAgICBpZiAocmVzb3VyY2UgJiYgcmVzb3VyY2UudHlwZSA9
PT0gV2ViSW5zcGVjdG9yLlJlc291cmNlLlR5cGUuU3R5bGVzaGVldCkKICAgICAgICAgICAgICAg
ICByZXNvdXJjZS5zZXRDb250ZW50KGNvbnRlbnQsIHRoaXMuX29uUmV2ZXJ0LmJpbmQodGhpcywg
c3R5bGVTaGVldElkKSk7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9Db25zb2xlVmlldy5qcyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9D
b25zb2xlVmlldy5qcwppbmRleCAwM2ZlMTRhLi5jOTg1NTJkIDEwMDY0NAotLS0gYS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvQ29uc29sZVZpZXcuanMKKysrIGIvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL0NvbnNvbGVWaWV3LmpzCkBAIC0yMTgsNyArMjE4LDcgQEAgV2ViSW5zcGVj
dG9yLkNvbnNvbGVWaWV3LnByb3RvdHlwZSA9IHsKIAogICAgICAgICBpZiAobXNnIGluc3RhbmNl
b2YgV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlICYmICEobXNnIGluc3RhbmNlb2YgV2ViSW5z
cGVjdG9yLkNvbnNvbGVDb21tYW5kUmVzdWx0KSkgewogICAgICAgICAgICAgdGhpcy5faW5jcmVt
ZW50RXJyb3JXYXJuaW5nQ291bnQobXNnKTsKLSAgICAgICAgICAgIFdlYkluc3BlY3Rvci5yZXNv
dXJjZU1hbmFnZXIuYWRkQ29uc29sZU1lc3NhZ2UobXNnKTsKKyAgICAgICAgICAgIFdlYkluc3Bl
Y3Rvci5yZXNvdXJjZVRyZWVNb2RlbC5hZGRDb25zb2xlTWVzc2FnZShtc2cpOwogICAgICAgICAg
ICAgdGhpcy5jb21tYW5kU2luY2VQcmV2aW91c01lc3NhZ2UgPSBmYWxzZTsKICAgICAgICAgICAg
IHRoaXMucHJldmlvdXNNZXNzYWdlID0gbXNnOwogICAgICAgICB9IGVsc2UgaWYgKG1zZyBpbnN0
YW5jZW9mIFdlYkluc3BlY3Rvci5Db25zb2xlQ29tbWFuZCkgewpAQCAtMjg1LDcgKzI4NSw3IEBA
IFdlYkluc3BlY3Rvci5Db25zb2xlVmlldy5wcm90b3R5cGUgPSB7CiAKICAgICBjbGVhck1lc3Nh
Z2VzOiBmdW5jdGlvbigpCiAgICAgewotICAgICAgICBXZWJJbnNwZWN0b3IucmVzb3VyY2VNYW5h
Z2VyLmNsZWFyQ29uc29sZU1lc3NhZ2VzKCk7CisgICAgICAgIFdlYkluc3BlY3Rvci5yZXNvdXJj
ZVRyZWVNb2RlbC5jbGVhckNvbnNvbGVNZXNzYWdlcygpOwogCiAgICAgICAgIHRoaXMubWVzc2Fn
ZXMgPSBbXTsKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RPTUFn
ZW50LmpzIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RPTUFnZW50LmpzCmluZGV4IDQz
MmFjM2YuLjg5ODIyYTMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9E
T01BZ2VudC5qcworKysgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRE9NQWdlbnQuanMK
QEAgLTQ3MSw2ICs0NzEsMTggQEAgV2ViSW5zcGVjdG9yLkFwcGxpY2F0aW9uQ2FjaGUuZ2V0QXBw
bGljYXRpb25DYWNoZXNBc3luYyA9IGZ1bmN0aW9uKGNhbGxiYWNrKQogICAgIEluc3BlY3RvckJh
Y2tlbmQuZ2V0QXBwbGljYXRpb25DYWNoZXMobXljYWxsYmFjayk7CiB9CiAKK1dlYkluc3BlY3Rv
ci5BcHBsaWNhdGlvbkNhY2hlLnVwZGF0ZUFwcGxpY2F0aW9uQ2FjaGVTdGF0dXMgPSBmdW5jdGlv
bihzdGF0dXMpCit7CisgICAgV2ViSW5zcGVjdG9yLnBhbmVscy5yZXNvdXJjZXMudXBkYXRlQXBw
bGljYXRpb25DYWNoZVN0YXR1cyhzdGF0dXMpOworfQorCitXZWJJbnNwZWN0b3IuQXBwbGljYXRp
b25DYWNoZS51cGRhdGVOZXR3b3JrU3RhdGUgPSBmdW5jdGlvbihpc05vd09ubGluZSkKK3sKKyAg
ICBXZWJJbnNwZWN0b3IucGFuZWxzLnJlc291cmNlcy51cGRhdGVOZXR3b3JrU3RhdGUoaXNOb3dP
bmxpbmUpOworfQorCitJbnNwZWN0b3JCYWNrZW5kLnJlZ2lzdGVyRG9tYWluRGlzcGF0Y2hlcigi
QXBwbGljYXRpb25DYWNoZSIsIFdlYkluc3BlY3Rvci5BcHBsaWNhdGlvbkNhY2hlKTsKKwogV2Vi
SW5zcGVjdG9yLkNvb2tpZXMgPSB7fQogCiBXZWJJbnNwZWN0b3IuQ29va2llcy5nZXRDb29raWVz
QXN5bmMgPSBmdW5jdGlvbihjYWxsYmFjaykKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9ET01TdG9yYWdlLmpzIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RP
TVN0b3JhZ2UuanMKaW5kZXggMzdiZThmNi4uYWExNGE5YyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL0RPTVN0b3JhZ2UuanMKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL0RPTVN0b3JhZ2UuanMKQEAgLTcwLDMgKzcwLDI2IEBAIFdlYkluc3BlY3Rvci5E
T01TdG9yYWdlLnByb3RvdHlwZSA9IHsKICAgICB9CiB9CiAKK1dlYkluc3BlY3Rvci5ET01TdG9y
YWdlLmFkZERPTVN0b3JhZ2UgPSBmdW5jdGlvbihwYXlsb2FkKQoreworICAgIGlmICghV2ViSW5z
cGVjdG9yLnBhbmVscy5yZXNvdXJjZXMpCisgICAgICAgIHJldHVybjsKKyAgICB2YXIgZG9tU3Rv
cmFnZSA9IG5ldyBXZWJJbnNwZWN0b3IuRE9NU3RvcmFnZSgKKyAgICAgICAgcGF5bG9hZC5pZCwK
KyAgICAgICAgcGF5bG9hZC5ob3N0LAorICAgICAgICBwYXlsb2FkLmlzTG9jYWxTdG9yYWdlKTsK
KyAgICBXZWJJbnNwZWN0b3IucGFuZWxzLnJlc291cmNlcy5hZGRET01TdG9yYWdlKGRvbVN0b3Jh
Z2UpOworfQorCitXZWJJbnNwZWN0b3IuRE9NU3RvcmFnZS5zZWxlY3RET01TdG9yYWdlID0gZnVu
Y3Rpb24obykKK3sKKyAgICBXZWJJbnNwZWN0b3Iuc2hvd1BhbmVsKCJyZXNvdXJjZXMiKTsKKyAg
ICBXZWJJbnNwZWN0b3IucGFuZWxzLnJlc291cmNlcy5zZWxlY3RET01TdG9yYWdlKG8pOworfQor
CitXZWJJbnNwZWN0b3IuRE9NU3RvcmFnZS51cGRhdGVET01TdG9yYWdlID0gZnVuY3Rpb24oc3Rv
cmFnZUlkKQoreworICAgIFdlYkluc3BlY3Rvci5wYW5lbHMucmVzb3VyY2VzLnVwZGF0ZURPTVN0
b3JhZ2Uoc3RvcmFnZUlkKTsKK30KKworSW5zcGVjdG9yQmFja2VuZC5yZWdpc3RlckRvbWFpbkRp
c3BhdGNoZXIoIkRPTVN0b3JhZ2UiLCBXZWJJbnNwZWN0b3IuRE9NU3RvcmFnZSk7CmRpZmYgLS1n
aXQgYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRGF0YWJhc2UuanMgYi9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvRGF0YWJhc2UuanMKaW5kZXggN2FhYzdkMS4uMGIwMDMzMCAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RhdGFiYXNlLmpzCisrKyBiL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9EYXRhYmFzZS5qcwpAQCAtMzQsOCArMzQsNyBAQCBX
ZWJJbnNwZWN0b3IuRGF0YWJhc2UgPSBmdW5jdGlvbihpZCwgZG9tYWluLCBuYW1lLCB2ZXJzaW9u
KQogICAgIHRoaXMuX3ZlcnNpb24gPSB2ZXJzaW9uOwogfQogCi1XZWJJbnNwZWN0b3IuRGF0YWJh
c2Uuc3VjY2Vzc0NhbGxiYWNrcyA9IHt9OwotV2ViSW5zcGVjdG9yLkRhdGFiYXNlLmVycm9yQ2Fs
bGJhY2tzID0ge307CitXZWJJbnNwZWN0b3IuRGF0YWJhc2UuX2NhbGxiYWNrcyA9IHt9OwogCiBX
ZWJJbnNwZWN0b3IuRGF0YWJhc2UucHJvdG90eXBlID0gewogICAgIGdldCBpZCgpCkBAIC05NSw5
ICs5NCw1MCBAQCBXZWJJbnNwZWN0b3IuRGF0YWJhc2UucHJvdG90eXBlID0gewogICAgICAgICAg
ICAgICAgIG9uRXJyb3IoV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJEYXRhYmFzZSBub3QgZm91bmQu
IikpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IFdlYkluc3BlY3Rvci5EYXRhYmFzZS5zdWNjZXNzQ2FsbGJhY2tzW3RyYW5zYWN0aW9uSWRdID0g
b25TdWNjZXNzOwotICAgICAgICAgICAgV2ViSW5zcGVjdG9yLkRhdGFiYXNlLmVycm9yQ2FsbGJh
Y2tzW3RyYW5zYWN0aW9uSWRdID0gb25FcnJvcjsKKyAgICAgICAgICAgIFdlYkluc3BlY3Rvci5E
YXRhYmFzZS5fY2FsbGJhY2tzW3RyYW5zYWN0aW9uSWRdID0geyJvblN1Y2Nlc3MiOiBvblN1Y2Nl
c3MsICJvbkVycm9yIjogb25FcnJvcn07CiAgICAgICAgIH0KICAgICAgICAgSW5zcGVjdG9yQmFj
a2VuZC5leGVjdXRlU1FMKHRoaXMuX2lkLCBxdWVyeSwgY2FsbGJhY2spOwogICAgIH0KIH0KKwor
V2ViSW5zcGVjdG9yLkRhdGFiYXNlLmFkZERhdGFiYXNlID0gZnVuY3Rpb24ocGF5bG9hZCkKK3sK
KyAgICBpZiAoIVdlYkluc3BlY3Rvci5wYW5lbHMucmVzb3VyY2VzKQorICAgICAgICByZXR1cm47
CisgICAgdmFyIGRhdGFiYXNlID0gbmV3IFdlYkluc3BlY3Rvci5EYXRhYmFzZSgKKyAgICAgICAg
cGF5bG9hZC5pZCwKKyAgICAgICAgcGF5bG9hZC5kb21haW4sCisgICAgICAgIHBheWxvYWQubmFt
ZSwKKyAgICAgICAgcGF5bG9hZC52ZXJzaW9uKTsKKyAgICBXZWJJbnNwZWN0b3IucGFuZWxzLnJl
c291cmNlcy5hZGREYXRhYmFzZShkYXRhYmFzZSk7Cit9CisKK1dlYkluc3BlY3Rvci5EYXRhYmFz
ZS5zZWxlY3REYXRhYmFzZSA9IGZ1bmN0aW9uKG8pCit7CisgICAgV2ViSW5zcGVjdG9yLnNob3dQ
YW5lbCgicmVzb3VyY2VzIik7CisgICAgV2ViSW5zcGVjdG9yLnBhbmVscy5yZXNvdXJjZXMuc2Vs
ZWN0RGF0YWJhc2Uobyk7Cit9CisKK1dlYkluc3BlY3Rvci5EYXRhYmFzZS5zcWxUcmFuc2FjdGlv
blN1Y2NlZWRlZCA9IGZ1bmN0aW9uKHRyYW5zYWN0aW9uSWQsIGNvbHVtbk5hbWVzLCB2YWx1ZXMp
Cit7CisgICAgaWYgKCFXZWJJbnNwZWN0b3IuRGF0YWJhc2UuX2NhbGxiYWNrc1t0cmFuc2FjdGlv
bklkXSkKKyAgICAgICAgcmV0dXJuOworCisgICAgdmFyIGNhbGxiYWNrID0gV2ViSW5zcGVjdG9y
LkRhdGFiYXNlLl9jYWxsYmFja3NbdHJhbnNhY3Rpb25JZF0ub25TdWNjZXNzOworICAgIGRlbGV0
ZSBXZWJJbnNwZWN0b3IuRGF0YWJhc2UuX2NhbGxiYWNrc1t0cmFuc2FjdGlvbklkXTsKKyAgICBp
ZiAoY2FsbGJhY2spCisgICAgICAgIGNhbGxiYWNrKGNvbHVtbk5hbWVzLCB2YWx1ZXMpOworfQor
CitXZWJJbnNwZWN0b3IuRGF0YWJhc2Uuc3FsVHJhbnNhY3Rpb25GYWlsZWQgPSBmdW5jdGlvbih0
cmFuc2FjdGlvbklkLCBlcnJvck9iaikKK3sKKyAgICBpZiAoIVdlYkluc3BlY3Rvci5EYXRhYmFz
ZS5fY2FsbGJhY2tzW3RyYW5zYWN0aW9uSWRdKQorICAgICAgICByZXR1cm47CisKKyAgICB2YXIg
Y2FsbGJhY2sgPSBXZWJJbnNwZWN0b3IuRGF0YWJhc2UuX2NhbGxiYWNrc1t0cmFuc2FjdGlvbklk
XS5vbkVycm9yOworICAgIGRlbGV0ZSBXZWJJbnNwZWN0b3IuRGF0YWJhc2UuX2NhbGxiYWNrc1t0
cmFuc2FjdGlvbklkXTsKKyAgICBpZiAoY2FsbGJhY2spCisgICAgICAgIGNhbGxiYWNrKGVycm9y
T2JqKTsKK30KKworSW5zcGVjdG9yQmFja2VuZC5yZWdpc3RlckRvbWFpbkRpc3BhdGNoZXIoIkRh
dGFiYXNlIiwgV2ViSW5zcGVjdG9yLkRhdGFiYXNlKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9GaWxlU3lzdGVtVmlldy5qcyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9GaWxlU3lzdGVtVmlldy5qcwppbmRleCA4Y2QwMTA3Li4xNGVjZjQ2IDEwMDY0NAot
LS0gYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRmlsZVN5c3RlbVZpZXcuanMKKysrIGIv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0ZpbGVTeXN0ZW1WaWV3LmpzCkBAIC00MCw2ICs0
MCwyMyBAQCBXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbS5nZXRGaWxlU3lzdGVtUGF0aHNBc3luYyA9
IGZ1bmN0aW9uKG9yaWdpbikKICAgICBJbnNwZWN0b3JCYWNrZW5kLmdldEZpbGVTeXN0ZW1QYXRo
QXN5bmMoV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW0uVEVNUE9SQVJZLCBvcmlnaW4pOwogfQogCitX
ZWJJbnNwZWN0b3IuRmlsZVN5c3RlbS5kaWRHZXRGaWxlU3lzdGVtUGF0aCA9IGZ1bmN0aW9uKHJv
b3QsIHR5cGUsIG9yaWdpbikKK3sKKyAgICBXZWJJbnNwZWN0b3IucGFuZWxzLnJlc291cmNlcy51
cGRhdGVGaWxlU3lzdGVtUGF0aChyb290LCB0eXBlLCBvcmlnaW4pOworfQorCitXZWJJbnNwZWN0
b3IuRmlsZVN5c3RlbS5kaWRHZXRGaWxlU3lzdGVtRXJyb3IgPSBmdW5jdGlvbih0eXBlLCBvcmln
aW4pCit7CisgICAgV2ViSW5zcGVjdG9yLnBhbmVscy5yZXNvdXJjZXMudXBkYXRlRmlsZVN5c3Rl
bUVycm9yKHR5cGUsIG9yaWdpbik7Cit9CisKK1dlYkluc3BlY3Rvci5GaWxlU3lzdGVtLmRpZEdl
dEZpbGVTeXN0ZW1EaXNhYmxlZCA9IGZ1bmN0aW9uKCkKK3sKKyAgICBXZWJJbnNwZWN0b3IucGFu
ZWxzLnJlc291cmNlcy5zZXRGaWxlU3lzdGVtRGlzYWJsZWQoKTsKK30KKworSW5zcGVjdG9yQmFj
a2VuZC5yZWdpc3RlckRvbWFpbkRpc3BhdGNoZXIoIkZpbGVTeXN0ZW0iLCBXZWJJbnNwZWN0b3Iu
RmlsZVN5c3RlbSk7CisKIFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtVmlldyA9IGZ1bmN0aW9uKHRy
ZWVFbGVtZW50LCBmaWxlU3lzdGVtT3JpZ2luKQogewogICAgIFdlYkluc3BlY3Rvci5WaWV3LmNh
bGwodGhpcyk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvTmV0d29y
a0l0ZW1WaWV3LmpzIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL05ldHdvcmtJdGVtVmll
dy5qcwppbmRleCA0OGUzYjE5Li40MThmNTU5IDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvTmV0d29ya0l0ZW1WaWV3LmpzCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9OZXR3b3JrSXRlbVZpZXcuanMKQEAgLTM2LDcgKzM2LDcgQEAgV2ViSW5zcGVjdG9y
Lk5ldHdvcmtJdGVtVmlldyA9IGZ1bmN0aW9uKHJlc291cmNlKQogCiAgICAgdGhpcy5faGVhZGVy
c1ZpZXcgPSBuZXcgV2ViSW5zcGVjdG9yLlJlc291cmNlSGVhZGVyc1ZpZXcocmVzb3VyY2UpOwog
ICAgIC8vIERvIG5vdCBzdG9yZSByZWZlcmVuY2UgdG8gY29udGVudCB2aWV3IC0gaXQgY2FuIGJl
IHJlY3JlYXRlZC4KLSAgICB2YXIgY29udGVudFZpZXcgPSBXZWJJbnNwZWN0b3IuUmVzb3VyY2VN
YW5hZ2VyLnJlc291cmNlVmlld0ZvclJlc291cmNlKHJlc291cmNlKTsKKyAgICB2YXIgY29udGVu
dFZpZXcgPSBXZWJJbnNwZWN0b3IuUmVzb3VyY2VWaWV3LnJlc291cmNlVmlld0ZvclJlc291cmNl
KHJlc291cmNlKTsKIAogICAgIHRoaXMuX3RhYmJlZFBhbmUgPSBuZXcgV2ViSW5zcGVjdG9yLlRh
YmJlZFBhbmUodGhpcy5lbGVtZW50KTsKICAgICB0aGlzLl90YWJiZWRQYW5lLmFwcGVuZFRhYigi
aGVhZGVycyIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiSGVhZGVycyIpLCB0aGlzLl9oZWFkZXJz
Vmlldyk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvTmV0d29ya01h
bmFnZXIuanMgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvTmV0d29ya01hbmFnZXIuanMK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGVlZDhiOWQKLS0tIC9kZXYvbnVs
bAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvTmV0d29ya01hbmFnZXIuanMKQEAg
LTAsMCArMSwyOTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDksIDIwMTAgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0
aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgor
ICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCitXZWJJbnNwZWN0b3IuTmV0d29ya01hbmFnZXIgPSBmdW5jdGlv
bihyZXNvdXJjZVRyZWVNb2RlbCkKK3sKKyAgICB0aGlzLl9yZXNvdXJjZXNCeUlkID0ge307Cisg
ICAgdGhpcy5fcmVzb3VyY2VUcmVlTW9kZWwgPSByZXNvdXJjZVRyZWVNb2RlbDsKKyAgICBJbnNw
ZWN0b3JCYWNrZW5kLnJlZ2lzdGVyRG9tYWluRGlzcGF0Y2hlcigiTmV0d29yayIsIHRoaXMpOwor
fQorCitXZWJJbnNwZWN0b3IuTmV0d29ya01hbmFnZXIucHJvdG90eXBlID0geworICAgIF9jcmVh
dGVSZXNvdXJjZTogZnVuY3Rpb24oaWRlbnRpZmllciwgdXJsLCBsb2FkZXIsIGNhbGxTdGFjaykK
KyAgICB7CisgICAgICAgIHZhciByZXNvdXJjZSA9IFdlYkluc3BlY3Rvci5SZXNvdXJjZVRyZWVN
b2RlbC5jcmVhdGVSZXNvdXJjZShpZGVudGlmaWVyLCB1cmwsIGxvYWRlciwgY2FsbFN0YWNrKTsK
KyAgICAgICAgdGhpcy5fcmVzb3VyY2VzQnlJZFtpZGVudGlmaWVyXSA9IHJlc291cmNlOworICAg
ICAgICByZXR1cm4gcmVzb3VyY2U7CisgICAgfSwKKworICAgIGlkZW50aWZpZXJGb3JJbml0aWFs
UmVxdWVzdDogZnVuY3Rpb24oaWRlbnRpZmllciwgdXJsLCBsb2FkZXIsIGNhbGxTdGFjaykKKyAg
ICB7CisgICAgICAgIHZhciByZXNvdXJjZSA9IHRoaXMuX2NyZWF0ZVJlc291cmNlKGlkZW50aWZp
ZXIsIHVybCwgbG9hZGVyLCBjYWxsU3RhY2spOworCisgICAgICAgIC8vIEl0IGlzIGltcG9ydGFu
dCB0byBiaW5kIHJlc291cmNlIHVybCBlYXJseSAoYmVmb3JlIHNjcmlwdHMgY29tcGlsZSkuCisg
ICAgICAgIHRoaXMuX3Jlc291cmNlVHJlZU1vZGVsLmJpbmRSZXNvdXJjZVVSTChyZXNvdXJjZSk7
CisKKyAgICAgICAgV2ViSW5zcGVjdG9yLnBhbmVscy5uZXR3b3JrLnJlZnJlc2hSZXNvdXJjZShy
ZXNvdXJjZSk7CisgICAgICAgIFdlYkluc3BlY3Rvci5wYW5lbHMuYXVkaXRzLnJlc291cmNlU3Rh
cnRlZChyZXNvdXJjZSk7CisgICAgfSwKKworICAgIHdpbGxTZW5kUmVxdWVzdDogZnVuY3Rpb24o
aWRlbnRpZmllciwgdGltZSwgcmVxdWVzdCwgcmVkaXJlY3RSZXNwb25zZSkKKyAgICB7CisgICAg
ICAgIHZhciByZXNvdXJjZSA9IHRoaXMuX3Jlc291cmNlc0J5SWRbaWRlbnRpZmllcl07CisgICAg
ICAgIGlmICghcmVzb3VyY2UpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgLy8gUmVk
aXJlY3QgbWF5IGhhdmUgZW1wdHkgVVJMIGFuZCB3ZSdkIGxpa2UgdG8gbm90IGNyYXNoIHdpdGgg
aW52YWxpZCBIYXNoTWFwIGVudHJ5LgorICAgICAgICAvLyBTZWUgaHR0cC90ZXN0cy9taXNjL3dp
bGwtc2VuZC1yZXF1ZXN0LXJldHVybnMtbnVsbC1vbi1yZWRpcmVjdC5odG1sCisgICAgICAgIHZh
ciBpc1JlZGlyZWN0ID0gIXJlZGlyZWN0UmVzcG9uc2UuaXNOdWxsICYmIHJlcXVlc3QudXJsLmxl
bmd0aDsKKyAgICAgICAgaWYgKGlzUmVkaXJlY3QpIHsKKyAgICAgICAgICAgIHJlc291cmNlLmVu
ZFRpbWUgPSB0aW1lOworICAgICAgICAgICAgdGhpcy5kaWRSZWNlaXZlUmVzcG9uc2UoaWRlbnRp
ZmllciwgdGltZSwgIk90aGVyIiwgcmVkaXJlY3RSZXNwb25zZSk7CisgICAgICAgICAgICByZXNv
dXJjZSA9IHRoaXMuX2FwcGVuZFJlZGlyZWN0KHJlc291cmNlLmlkZW50aWZpZXIsIHJlcXVlc3Qu
dXJsKTsKKyAgICAgICAgfQorCisgICAgICAgIFdlYkluc3BlY3Rvci5OZXR3b3JrTWFuYWdlci51
cGRhdGVSZXNvdXJjZVdpdGhSZXF1ZXN0KHJlc291cmNlLCByZXF1ZXN0KTsKKyAgICAgICAgcmVz
b3VyY2Uuc3RhcnRUaW1lID0gdGltZTsKKworICAgICAgICBpZiAoaXNSZWRpcmVjdCkgeworICAg
ICAgICAgICAgV2ViSW5zcGVjdG9yLnBhbmVscy5uZXR3b3JrLnJlZnJlc2hSZXNvdXJjZShyZXNv
dXJjZSk7CisgICAgICAgICAgICBXZWJJbnNwZWN0b3IucGFuZWxzLmF1ZGl0cy5yZXNvdXJjZVN0
YXJ0ZWQocmVzb3VyY2UpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIFdlYkluc3BlY3Rv
ci5wYW5lbHMubmV0d29yay5yZWZyZXNoUmVzb3VyY2UocmVzb3VyY2UpOworICAgIH0sCisKKyAg
ICBfYXBwZW5kUmVkaXJlY3Q6IGZ1bmN0aW9uKGlkZW50aWZpZXIsIHJlZGlyZWN0VVJMKQorICAg
IHsKKyAgICAgICAgdmFyIG9yaWdpbmFsUmVzb3VyY2UgPSB0aGlzLl9yZXNvdXJjZXNCeUlkW2lk
ZW50aWZpZXJdOworICAgICAgICBvcmlnaW5hbFJlc291cmNlLmlkZW50aWZpZXIgPSBudWxsOwor
CisgICAgICAgIHZhciBuZXdSZXNvdXJjZSA9IHRoaXMuX2NyZWF0ZVJlc291cmNlKGlkZW50aWZp
ZXIsIHJlZGlyZWN0VVJMLCBvcmlnaW5hbFJlc291cmNlLmxvYWRlciwgb3JpZ2luYWxSZXNvdXJj
ZS5zdGFja1RyYWNlKTsKKyAgICAgICAgbmV3UmVzb3VyY2UucmVkaXJlY3RzID0gb3JpZ2luYWxS
ZXNvdXJjZS5yZWRpcmVjdHMgfHwgW107CisgICAgICAgIGRlbGV0ZSBvcmlnaW5hbFJlc291cmNl
LnJlZGlyZWN0czsKKyAgICAgICAgbmV3UmVzb3VyY2UucmVkaXJlY3RzLnB1c2gob3JpZ2luYWxS
ZXNvdXJjZSk7CisgICAgICAgIHJldHVybiBuZXdSZXNvdXJjZTsKKyAgICB9LAorCisgICAgbWFy
a1Jlc291cmNlQXNDYWNoZWQ6IGZ1bmN0aW9uKGlkZW50aWZpZXIpCisgICAgeworICAgICAgICB2
YXIgcmVzb3VyY2UgPSB0aGlzLl9yZXNvdXJjZXNCeUlkW2lkZW50aWZpZXJdOworICAgICAgICBp
ZiAoIXJlc291cmNlKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHJlc291cmNlLmNh
Y2hlZCA9IHRydWU7CisgICAgICAgIFdlYkluc3BlY3Rvci5wYW5lbHMubmV0d29yay5yZWZyZXNo
UmVzb3VyY2UocmVzb3VyY2UpOworICAgIH0sCisKKyAgICBkaWRSZWNlaXZlUmVzcG9uc2U6IGZ1
bmN0aW9uKGlkZW50aWZpZXIsIHRpbWUsIHJlc291cmNlVHlwZSwgcmVzcG9uc2UpCisgICAgewor
ICAgICAgICB2YXIgcmVzb3VyY2UgPSB0aGlzLl9yZXNvdXJjZXNCeUlkW2lkZW50aWZpZXJdOwor
ICAgICAgICBpZiAoIXJlc291cmNlKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHJl
c291cmNlLnJlc3BvbnNlUmVjZWl2ZWRUaW1lID0gdGltZTsKKyAgICAgICAgcmVzb3VyY2UudHlw
ZSA9IFdlYkluc3BlY3Rvci5SZXNvdXJjZS5UeXBlW3Jlc291cmNlVHlwZV07CisKKyAgICAgICAg
V2ViSW5zcGVjdG9yLk5ldHdvcmtNYW5hZ2VyLnVwZGF0ZVJlc291cmNlV2l0aFJlc3BvbnNlKHJl
c291cmNlLCByZXNwb25zZSk7CisKKyAgICAgICAgV2ViSW5zcGVjdG9yLnBhbmVscy5uZXR3b3Jr
LnJlZnJlc2hSZXNvdXJjZShyZXNvdXJjZSk7CisgICAgICAgIHRoaXMuX3Jlc291cmNlVHJlZU1v
ZGVsLmFkZFJlc291cmNlVG9GcmFtZShyZXNvdXJjZS5sb2FkZXIuZnJhbWVJZCwgcmVzb3VyY2Up
OworICAgIH0sCisKKyAgICBkaWRSZWNlaXZlQ29udGVudExlbmd0aDogZnVuY3Rpb24oaWRlbnRp
ZmllciwgdGltZSwgbGVuZ3RoUmVjZWl2ZWQpCisgICAgeworICAgICAgICB2YXIgcmVzb3VyY2Ug
PSB0aGlzLl9yZXNvdXJjZXNCeUlkW2lkZW50aWZpZXJdOworICAgICAgICBpZiAoIXJlc291cmNl
KQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHJlc291cmNlLnJlc291cmNlU2l6ZSAr
PSBsZW5ndGhSZWNlaXZlZDsKKyAgICAgICAgcmVzb3VyY2UuZW5kVGltZSA9IHRpbWU7CisKKyAg
ICAgICAgV2ViSW5zcGVjdG9yLnBhbmVscy5uZXR3b3JrLnJlZnJlc2hSZXNvdXJjZShyZXNvdXJj
ZSk7CisgICAgfSwKKworICAgIGRpZEZpbmlzaExvYWRpbmc6IGZ1bmN0aW9uKGlkZW50aWZpZXIs
IGZpbmlzaFRpbWUpCisgICAgeworICAgICAgICB2YXIgcmVzb3VyY2UgPSB0aGlzLl9yZXNvdXJj
ZXNCeUlkW2lkZW50aWZpZXJdOworICAgICAgICBpZiAoIXJlc291cmNlKQorICAgICAgICAgICAg
cmV0dXJuOworCisgICAgICAgIHJlc291cmNlLmVuZFRpbWUgPSBmaW5pc2hUaW1lOworICAgICAg
ICByZXNvdXJjZS5maW5pc2hlZCA9IHRydWU7CisKKyAgICAgICAgV2ViSW5zcGVjdG9yLnBhbmVs
cy5uZXR3b3JrLnJlZnJlc2hSZXNvdXJjZShyZXNvdXJjZSk7CisgICAgICAgIFdlYkluc3BlY3Rv
ci5wYW5lbHMuYXVkaXRzLnJlc291cmNlRmluaXNoZWQocmVzb3VyY2UpOworICAgICAgICBXZWJJ
bnNwZWN0b3IuZXh0ZW5zaW9uU2VydmVyLm5vdGlmeVJlc291cmNlRmluaXNoZWQocmVzb3VyY2Up
OworICAgICAgICBkZWxldGUgdGhpcy5fcmVzb3VyY2VzQnlJZFtpZGVudGlmaWVyXTsKKyAgICB9
LAorCisgICAgZGlkRmFpbExvYWRpbmc6IGZ1bmN0aW9uKGlkZW50aWZpZXIsIHRpbWUsIGxvY2Fs
aXplZERlc2NyaXB0aW9uKQorICAgIHsKKyAgICAgICAgdmFyIHJlc291cmNlID0gdGhpcy5fcmVz
b3VyY2VzQnlJZFtpZGVudGlmaWVyXTsKKyAgICAgICAgaWYgKCFyZXNvdXJjZSkKKyAgICAgICAg
ICAgIHJldHVybjsKKworICAgICAgICByZXNvdXJjZS5mYWlsZWQgPSB0cnVlOworICAgICAgICBy
ZXNvdXJjZS5sb2NhbGl6ZWRGYWlsRGVzY3JpcHRpb24gPSBsb2NhbGl6ZWREZXNjcmlwdGlvbjsK
KyAgICAgICAgcmVzb3VyY2UuZmluaXNoZWQgPSB0cnVlOworICAgICAgICByZXNvdXJjZS5lbmRU
aW1lID0gdGltZTsKKworICAgICAgICBXZWJJbnNwZWN0b3IucGFuZWxzLm5ldHdvcmsucmVmcmVz
aFJlc291cmNlKHJlc291cmNlKTsKKyAgICAgICAgV2ViSW5zcGVjdG9yLnBhbmVscy5hdWRpdHMu
cmVzb3VyY2VGaW5pc2hlZChyZXNvdXJjZSk7CisgICAgICAgIFdlYkluc3BlY3Rvci5leHRlbnNp
b25TZXJ2ZXIubm90aWZ5UmVzb3VyY2VGaW5pc2hlZChyZXNvdXJjZSk7CisgICAgICAgIGRlbGV0
ZSB0aGlzLl9yZXNvdXJjZXNCeUlkW2lkZW50aWZpZXJdOworICAgIH0sCisKKyAgICBkaWRMb2Fk
UmVzb3VyY2VGcm9tTWVtb3J5Q2FjaGU6IGZ1bmN0aW9uKHRpbWUsIGNhY2hlZFJlc291cmNlKQor
ICAgIHsKKyAgICAgICAgdmFyIHJlc291cmNlID0gdGhpcy5fY3JlYXRlUmVzb3VyY2UobnVsbCwg
Y2FjaGVkUmVzb3VyY2UudXJsLCBjYWNoZWRSZXNvdXJjZS5sb2FkZXIpOworICAgICAgICBXZWJJ
bnNwZWN0b3IuTmV0d29ya01hbmFnZXIudXBkYXRlUmVzb3VyY2VXaXRoQ2FjaGVkUmVzb3VyY2Uo
cmVzb3VyY2UsIGNhY2hlZFJlc291cmNlKTsKKyAgICAgICAgcmVzb3VyY2UuY2FjaGVkID0gdHJ1
ZTsKKyAgICAgICAgcmVzb3VyY2UucmVxdWVzdE1ldGhvZCA9ICJHRVQiOworICAgICAgICByZXNv
dXJjZS5zdGFydFRpbWUgPSByZXNvdXJjZS5yZXNwb25zZVJlY2VpdmVkVGltZSA9IHJlc291cmNl
LmVuZFRpbWUgPSB0aW1lOworICAgICAgICByZXNvdXJjZS5maW5pc2hlZCA9IHRydWU7CisKKyAg
ICAgICAgV2ViSW5zcGVjdG9yLnBhbmVscy5uZXR3b3JrLnJlZnJlc2hSZXNvdXJjZShyZXNvdXJj
ZSk7CisgICAgICAgIFdlYkluc3BlY3Rvci5wYW5lbHMuYXVkaXRzLnJlc291cmNlU3RhcnRlZChy
ZXNvdXJjZSk7CisgICAgICAgIFdlYkluc3BlY3Rvci5wYW5lbHMuYXVkaXRzLnJlc291cmNlRmlu
aXNoZWQocmVzb3VyY2UpOworICAgICAgICB0aGlzLl9yZXNvdXJjZVRyZWVNb2RlbC5hZGRSZXNv
dXJjZVRvRnJhbWUocmVzb3VyY2UubG9hZGVyLmZyYW1lSWQsIHJlc291cmNlKTsKKyAgICB9LAor
CisgICAgc2V0SW5pdGlhbENvbnRlbnQ6IGZ1bmN0aW9uKGlkZW50aWZpZXIsIHNvdXJjZVN0cmlu
ZywgdHlwZSkKKyAgICB7CisgICAgICAgIHZhciByZXNvdXJjZSA9IFdlYkluc3BlY3Rvci5wYW5l
bHMubmV0d29yay5yZXNvdXJjZXNbaWRlbnRpZmllcl07CisgICAgICAgIGlmICghcmVzb3VyY2Up
CisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgcmVzb3VyY2UudHlwZSA9IFdlYkluc3Bl
Y3Rvci5SZXNvdXJjZS5UeXBlW3R5cGVdOworICAgICAgICByZXNvdXJjZS5zZXRJbml0aWFsQ29u
dGVudChzb3VyY2VTdHJpbmcpOworICAgICAgICBXZWJJbnNwZWN0b3IucGFuZWxzLnJlc291cmNl
cy5yZWZyZXNoUmVzb3VyY2UocmVzb3VyY2UpOworICAgICAgICBXZWJJbnNwZWN0b3IucGFuZWxz
Lm5ldHdvcmsucmVmcmVzaFJlc291cmNlKHJlc291cmNlKTsKKyAgICB9LAorCisgICAgZGlkQ29t
bWl0TG9hZEZvckZyYW1lOiBmdW5jdGlvbihmcmFtZSwgbG9hZGVyKQorICAgIHsKKyAgICAgICAg
dGhpcy5fcmVzb3VyY2VUcmVlTW9kZWwuZGlkQ29tbWl0TG9hZEZvckZyYW1lKGZyYW1lLCBsb2Fk
ZXIpOworICAgICAgICBpZiAoIWZyYW1lLnBhcmVudElkKSB7CisgICAgICAgICAgICB2YXIgbWFp
blJlc291cmNlID0gdGhpcy5fcmVzb3VyY2VUcmVlTW9kZWwucmVzb3VyY2VGb3JVUkwoZnJhbWUu
dXJsKTsKKyAgICAgICAgICAgIGlmIChtYWluUmVzb3VyY2UpIHsKKyAgICAgICAgICAgICAgICBX
ZWJJbnNwZWN0b3IubWFpblJlc291cmNlID0gbWFpblJlc291cmNlOworICAgICAgICAgICAgICAg
IG1haW5SZXNvdXJjZS5pc01haW5SZXNvdXJjZSA9IHRydWU7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0KKyAgICB9LAorCisgICAgZGlkQ3JlYXRlV2ViU29ja2V0OiBmdW5jdGlvbihpZGVudGlm
aWVyLCByZXF1ZXN0VVJMKQorICAgIHsKKyAgICAgICAgdmFyIHJlc291cmNlID0gdGhpcy5fY3Jl
YXRlUmVzb3VyY2UoaWRlbnRpZmllciwgcmVxdWVzdFVSTCk7CisgICAgICAgIHJlc291cmNlLnR5
cGUgPSBXZWJJbnNwZWN0b3IuUmVzb3VyY2UuVHlwZS5XZWJTb2NrZXQ7CisgICAgICAgIFdlYklu
c3BlY3Rvci5wYW5lbHMubmV0d29yay5yZWZyZXNoUmVzb3VyY2UocmVzb3VyY2UpOworICAgIH0s
CisKKyAgICB3aWxsU2VuZFdlYlNvY2tldEhhbmRzaGFrZVJlcXVlc3Q6IGZ1bmN0aW9uKGlkZW50
aWZpZXIsIHRpbWUsIHJlcXVlc3QpCisgICAgeworICAgICAgICB2YXIgcmVzb3VyY2UgPSB0aGlz
Ll9yZXNvdXJjZXNCeUlkW2lkZW50aWZpZXJdOworICAgICAgICBpZiAoIXJlc291cmNlKQorICAg
ICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHJlc291cmNlLnJlcXVlc3RNZXRob2QgPSAiR0VU
IjsKKyAgICAgICAgcmVzb3VyY2UucmVxdWVzdEhlYWRlcnMgPSByZXF1ZXN0LndlYlNvY2tldEhl
YWRlckZpZWxkczsKKyAgICAgICAgcmVzb3VyY2Uud2ViU29ja2V0UmVxdWVzdEtleTMgPSByZXF1
ZXN0LndlYlNvY2tldFJlcXVlc3RLZXkzOworICAgICAgICByZXNvdXJjZS5zdGFydFRpbWUgPSB0
aW1lOworCisgICAgICAgIFdlYkluc3BlY3Rvci5wYW5lbHMubmV0d29yay5yZWZyZXNoUmVzb3Vy
Y2UocmVzb3VyY2UpOworICAgIH0sCisKKyAgICBkaWRSZWNlaXZlV2ViU29ja2V0SGFuZHNoYWtl
UmVzcG9uc2U6IGZ1bmN0aW9uKGlkZW50aWZpZXIsIHRpbWUsIHJlc3BvbnNlKQorICAgIHsKKyAg
ICAgICAgdmFyIHJlc291cmNlID0gdGhpcy5fcmVzb3VyY2VzQnlJZFtpZGVudGlmaWVyXTsKKyAg
ICAgICAgaWYgKCFyZXNvdXJjZSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICByZXNv
dXJjZS5zdGF0dXNDb2RlID0gcmVzcG9uc2Uuc3RhdHVzQ29kZTsKKyAgICAgICAgcmVzb3VyY2Uu
c3RhdHVzVGV4dCA9IHJlc3BvbnNlLnN0YXR1c1RleHQ7CisgICAgICAgIHJlc291cmNlLnJlc3Bv
bnNlSGVhZGVycyA9IHJlc3BvbnNlLndlYlNvY2tldEhlYWRlckZpZWxkczsKKyAgICAgICAgcmVz
b3VyY2Uud2ViU29ja2V0Q2hhbGxlbmdlUmVzcG9uc2UgPSByZXNwb25zZS53ZWJTb2NrZXRDaGFs
bGVuZ2VSZXNwb25zZTsKKyAgICAgICAgcmVzb3VyY2UucmVzcG9uc2VSZWNlaXZlZFRpbWUgPSB0
aW1lOworCisgICAgICAgIFdlYkluc3BlY3Rvci5wYW5lbHMubmV0d29yay5yZWZyZXNoUmVzb3Vy
Y2UocmVzb3VyY2UpOworICAgIH0sCisKKyAgICBkaWRDbG9zZVdlYlNvY2tldDogZnVuY3Rpb24o
aWRlbnRpZmllciwgdGltZSkKKyAgICB7CisgICAgICAgIHZhciByZXNvdXJjZSA9IHRoaXMuX3Jl
c291cmNlc0J5SWRbaWRlbnRpZmllcl07CisgICAgICAgIGlmICghcmVzb3VyY2UpCisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIHJlc291cmNlLmVuZFRpbWUgPSB0aW1lOworCisgICAgICAg
IFdlYkluc3BlY3Rvci5wYW5lbHMubmV0d29yay5yZWZyZXNoUmVzb3VyY2UocmVzb3VyY2UpOwor
ICAgIH0KK30KKworV2ViSW5zcGVjdG9yLk5ldHdvcmtNYW5hZ2VyLnJlcXVlc3RDb250ZW50ID0g
ZnVuY3Rpb24ocmVzb3VyY2UsIGJhc2U2NEVuY29kZSwgY2FsbGJhY2spCit7CisgICAgSW5zcGVj
dG9yQmFja2VuZC5yZXNvdXJjZUNvbnRlbnQocmVzb3VyY2UubG9hZGVyLmZyYW1lSWQsIHJlc291
cmNlLnVybCwgYmFzZTY0RW5jb2RlLCBjYWxsYmFjayk7Cit9CisKK1dlYkluc3BlY3Rvci5OZXR3
b3JrTWFuYWdlci51cGRhdGVSZXNvdXJjZVdpdGhSZXF1ZXN0ID0gZnVuY3Rpb24ocmVzb3VyY2Us
IHJlcXVlc3QpCit7CisgICAgcmVzb3VyY2UucmVxdWVzdE1ldGhvZCA9IHJlcXVlc3QuaHR0cE1l
dGhvZDsKKyAgICByZXNvdXJjZS5yZXF1ZXN0SGVhZGVycyA9IHJlcXVlc3QuaHR0cEhlYWRlckZp
ZWxkczsKKyAgICByZXNvdXJjZS5yZXF1ZXN0Rm9ybURhdGEgPSByZXF1ZXN0LnJlcXVlc3RGb3Jt
RGF0YTsKK30KKworV2ViSW5zcGVjdG9yLk5ldHdvcmtNYW5hZ2VyLnVwZGF0ZVJlc291cmNlV2l0
aFJlc3BvbnNlID0gZnVuY3Rpb24ocmVzb3VyY2UsIHJlc3BvbnNlKQoreworICAgIGlmIChyZXNv
dXJjZS5pc051bGwpCisgICAgICAgIHJldHVybjsKKworICAgIHJlc291cmNlLm1pbWVUeXBlID0g
cmVzcG9uc2UubWltZVR5cGU7CisgICAgcmVzb3VyY2UuZXhwZWN0ZWRDb250ZW50TGVuZ3RoID0g
cmVzcG9uc2UuZXhwZWN0ZWRDb250ZW50TGVuZ3RoOworICAgIHJlc291cmNlLnRleHRFbmNvZGlu
Z05hbWUgPSByZXNwb25zZS50ZXh0RW5jb2RpbmdOYW1lOworICAgIHJlc291cmNlLnN1Z2dlc3Rl
ZEZpbGVuYW1lID0gcmVzcG9uc2Uuc3VnZ2VzdGVkRmlsZW5hbWU7CisgICAgcmVzb3VyY2Uuc3Rh
dHVzQ29kZSA9IHJlc3BvbnNlLmh0dHBTdGF0dXNDb2RlOworICAgIHJlc291cmNlLnN0YXR1c1Rl
eHQgPSByZXNwb25zZS5odHRwU3RhdHVzVGV4dDsKKworICAgIHJlc291cmNlLnJlc3BvbnNlSGVh
ZGVycyA9IHJlc3BvbnNlLmh0dHBIZWFkZXJGaWVsZHM7CisgICAgcmVzb3VyY2UuY29ubmVjdGlv
blJldXNlZCA9IHJlc3BvbnNlLmNvbm5lY3Rpb25SZXVzZWQ7CisgICAgcmVzb3VyY2UuY29ubmVj
dGlvbklEID0gcmVzcG9uc2UuY29ubmVjdGlvbklEOworCisgICAgaWYgKHJlc3BvbnNlLndhc0Nh
Y2hlZCkKKyAgICAgICAgcmVzb3VyY2UuY2FjaGVkID0gdHJ1ZTsKKyAgICBlbHNlCisgICAgICAg
IHJlc291cmNlLnRpbWluZyA9IHJlc3BvbnNlLnRpbWluZzsKKworICAgIGlmIChyZXNwb25zZS5s
b2FkSW5mbykgeworICAgICAgICBpZiAocmVzcG9uc2UubG9hZEluZm8uaHR0cFN0YXR1c0NvZGUp
CisgICAgICAgICAgICByZXNvdXJjZS5zdGF0dXNDb2RlID0gcmVzcG9uc2UubG9hZEluZm8uaHR0
cFN0YXR1c0NvZGU7CisgICAgICAgIGlmIChyZXNwb25zZS5sb2FkSW5mby5odHRwU3RhdHVzVGV4
dCkKKyAgICAgICAgICAgIHJlc291cmNlLnN0YXR1c1RleHQgPSByZXNwb25zZS5sb2FkSW5mby5o
dHRwU3RhdHVzVGV4dDsKKyAgICAgICAgcmVzb3VyY2UucmVxdWVzdEhlYWRlcnMgPSByZXNwb25z
ZS5sb2FkSW5mby5yZXF1ZXN0SGVhZGVyczsKKyAgICAgICAgcmVzb3VyY2UucmVzcG9uc2VIZWFk
ZXJzID0gcmVzcG9uc2UubG9hZEluZm8ucmVzcG9uc2VIZWFkZXJzOworICAgIH0KK30KKworV2Vi
SW5zcGVjdG9yLk5ldHdvcmtNYW5hZ2VyLnVwZGF0ZVJlc291cmNlV2l0aENhY2hlZFJlc291cmNl
ID0gZnVuY3Rpb24ocmVzb3VyY2UsIGNhY2hlZFJlc291cmNlKQoreworICAgIHJlc291cmNlLnR5
cGUgPSBXZWJJbnNwZWN0b3IuUmVzb3VyY2UuVHlwZVtjYWNoZWRSZXNvdXJjZS50eXBlXTsKKyAg
ICByZXNvdXJjZS5yZXNvdXJjZVNpemUgPSBjYWNoZWRSZXNvdXJjZS5lbmNvZGVkU2l6ZTsKKyAg
ICBXZWJJbnNwZWN0b3IuTmV0d29ya01hbmFnZXIudXBkYXRlUmVzb3VyY2VXaXRoUmVzcG9uc2Uo
cmVzb3VyY2UsIGNhY2hlZFJlc291cmNlLnJlc3BvbnNlKTsKK30KKwpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL05ldHdvcmtQYW5lbC5qcyBiL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9OZXR3b3JrUGFuZWwuanMKaW5kZXggOTk0MWRiZi4uN2I2ZGY4YiAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL05ldHdvcmtQYW5lbC5qcworKysg
Yi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvTmV0d29ya1BhbmVsLmpzCkBAIC03OTcsMTQg
Kzc5NywxNCBAQCBXZWJJbnNwZWN0b3IuTmV0d29ya1BhbmVsLnByb3RvdHlwZSA9IHsKICAgICAg
ICAgaWYgKCFyZXNvdXJjZSkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICB2YXIgb2xk
VmlldyA9IFdlYkluc3BlY3Rvci5SZXNvdXJjZU1hbmFnZXIuZXhpc3RpbmdSZXNvdXJjZVZpZXdG
b3JSZXNvdXJjZShyZXNvdXJjZSk7CisgICAgICAgIHZhciBvbGRWaWV3ID0gV2ViSW5zcGVjdG9y
LlJlc291cmNlVmlldy5leGlzdGluZ1Jlc291cmNlVmlld0ZvclJlc291cmNlKHJlc291cmNlKTsK
ICAgICAgICAgaWYgKCFvbGRWaWV3KQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIGlm
IChXZWJJbnNwZWN0b3IuUmVzb3VyY2VNYW5hZ2VyLnJlc291cmNlVmlld1R5cGVNYXRjaGVzUmVz
b3VyY2UocmVzb3VyY2UpKQorICAgICAgICBpZiAoV2ViSW5zcGVjdG9yLlJlc291cmNlVmlldy5y
ZXNvdXJjZVZpZXdUeXBlTWF0Y2hlc1Jlc291cmNlKHJlc291cmNlKSkKICAgICAgICAgICAgIHJl
dHVybjsKIAotICAgICAgICB2YXIgbmV3VmlldyA9IFdlYkluc3BlY3Rvci5SZXNvdXJjZU1hbmFn
ZXIucmVjcmVhdGVSZXNvdXJjZVZpZXcocmVzb3VyY2UpOworICAgICAgICB2YXIgbmV3VmlldyA9
IFdlYkluc3BlY3Rvci5SZXNvdXJjZVZpZXcucmVjcmVhdGVSZXNvdXJjZVZpZXcocmVzb3VyY2Up
OwogICAgICAgICBpZiAodGhpcy52aXNpYmxlVmlldyA9PT0gb2xkVmlldykKICAgICAgICAgICAg
IHRoaXMudmlzaWJsZVZpZXcgPSBuZXdWaWV3OwogICAgIH0sCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2UuanMgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvUmVzb3VyY2UuanMKaW5kZXggZGEyMTA5Mi4uMDYzY2E0MyAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlLmpzCisrKyBiL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9SZXNvdXJjZS5qcwpAQCAtNjg0LDcgKzY4NCw3IEBAIFdlYkluc3BlY3Rv
ci5SZXNvdXJjZS5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB0aGlzLl9wZW5kaW5nQ29udGVu
dENhbGxiYWNrcy5sZW5ndGggPSAwOwogICAgICAgICAgICAgZGVsZXRlIHRoaXMuX2NvbnRlbnRS
ZXF1ZXN0ZWQ7CiAgICAgICAgIH0KLSAgICAgICAgV2ViSW5zcGVjdG9yLlJlc291cmNlTWFuYWdl
ci5yZXF1ZXN0Q29udGVudCh0aGlzLCB0aGlzLl9jb250ZW50RW5jb2RlZCwgb25SZXNvdXJjZUNv
bnRlbnQuYmluZCh0aGlzKSk7CisgICAgICAgIFdlYkluc3BlY3Rvci5OZXR3b3JrTWFuYWdlci5y
ZXF1ZXN0Q29udGVudCh0aGlzLCB0aGlzLl9jb250ZW50RW5jb2RlZCwgb25SZXNvdXJjZUNvbnRl
bnQuYmluZCh0aGlzKSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvUmVzb3VyY2VNYW5hZ2VyLmpzIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL1Jlc291cmNlTWFuYWdlci5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2Yx
YzU3NC4uMDAwMDAwMAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VN
YW5hZ2VyLmpzCisrKyAvZGV2L251bGwKQEAgLTEsNjgxICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMDksIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJp
YnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICog
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi1XZWJJbnNwZWN0
b3IuUmVzb3VyY2VNYW5hZ2VyID0gZnVuY3Rpb24oKQotewotICAgIHRoaXMuX3Jlc291cmNlc0J5
SWQgPSB7fTsKLSAgICB0aGlzLl9yZXNvdXJjZXNCeVVSTCA9IHt9OwotICAgIHRoaXMuX3Jlc291
cmNlVHJlZU1vZGVsID0gbmV3IFdlYkluc3BlY3Rvci5SZXNvdXJjZVRyZWVNb2RlbCgpOwotICAg
IEluc3BlY3RvckJhY2tlbmQuY2FjaGVkUmVzb3VyY2VzKHRoaXMuX3Byb2Nlc3NDYWNoZWRSZXNv
dXJjZXMuYmluZCh0aGlzKSk7Ci0gICAgSW5zcGVjdG9yQmFja2VuZC5yZWdpc3RlckRvbWFpbkRp
c3BhdGNoZXIoIlJlc291cmNlcyIsIHRoaXMpOwotfQotCi1XZWJJbnNwZWN0b3IuUmVzb3VyY2VN
YW5hZ2VyLnByb3RvdHlwZSA9IHsKLSAgICBpZGVudGlmaWVyRm9ySW5pdGlhbFJlcXVlc3Q6IGZ1
bmN0aW9uKGlkZW50aWZpZXIsIHVybCwgbG9hZGVyLCBjYWxsU3RhY2spCi0gICAgewotICAgICAg
ICB2YXIgcmVzb3VyY2UgPSB0aGlzLl9jcmVhdGVSZXNvdXJjZShpZGVudGlmaWVyLCB1cmwsIGxv
YWRlciwgY2FsbFN0YWNrKTsKLQotICAgICAgICAvLyBJdCBpcyBpbXBvcnRhbnQgdG8gYmluZCBy
ZXNvdXJjZSB1cmwgZWFybHkgKGJlZm9yZSBzY3JpcHRzIGNvbXBpbGUpLgotICAgICAgICB0aGlz
Ll9iaW5kUmVzb3VyY2VVUkwocmVzb3VyY2UpOwotCi0gICAgICAgIFdlYkluc3BlY3Rvci5wYW5l
bHMubmV0d29yay5yZWZyZXNoUmVzb3VyY2UocmVzb3VyY2UpOwotICAgICAgICBXZWJJbnNwZWN0
b3IucGFuZWxzLmF1ZGl0cy5yZXNvdXJjZVN0YXJ0ZWQocmVzb3VyY2UpOwotICAgIH0sCi0KLSAg
ICBfY3JlYXRlUmVzb3VyY2U6IGZ1bmN0aW9uKGlkZW50aWZpZXIsIHVybCwgbG9hZGVyLCBzdGFj
a1RyYWNlKQotICAgIHsKLSAgICAgICAgdmFyIHJlc291cmNlID0gbmV3IFdlYkluc3BlY3Rvci5S
ZXNvdXJjZShpZGVudGlmaWVyLCB1cmwpOwotICAgICAgICByZXNvdXJjZS5sb2FkZXIgPSBsb2Fk
ZXI7Ci0gICAgICAgIGlmIChsb2FkZXIpCi0gICAgICAgICAgICByZXNvdXJjZS5kb2N1bWVudFVS
TCA9IGxvYWRlci51cmw7Ci0gICAgICAgIHJlc291cmNlLnN0YWNrVHJhY2UgPSBzdGFja1RyYWNl
OwotCi0gICAgICAgIHRoaXMuX3Jlc291cmNlc0J5SWRbaWRlbnRpZmllcl0gPSByZXNvdXJjZTsK
LSAgICAgICAgcmV0dXJuIHJlc291cmNlOwotICAgIH0sCi0KLSAgICB3aWxsU2VuZFJlcXVlc3Q6
IGZ1bmN0aW9uKGlkZW50aWZpZXIsIHRpbWUsIHJlcXVlc3QsIHJlZGlyZWN0UmVzcG9uc2UpCi0g
ICAgewotICAgICAgICB2YXIgcmVzb3VyY2UgPSB0aGlzLl9yZXNvdXJjZXNCeUlkW2lkZW50aWZp
ZXJdOwotICAgICAgICBpZiAoIXJlc291cmNlKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAg
ICAgIC8vIFJlZGlyZWN0IG1heSBoYXZlIGVtcHR5IFVSTCBhbmQgd2UnZCBsaWtlIHRvIG5vdCBj
cmFzaCB3aXRoIGludmFsaWQgSGFzaE1hcCBlbnRyeS4KLSAgICAgICAgLy8gU2VlIGh0dHAvdGVz
dHMvbWlzYy93aWxsLXNlbmQtcmVxdWVzdC1yZXR1cm5zLW51bGwtb24tcmVkaXJlY3QuaHRtbAot
ICAgICAgICB2YXIgaXNSZWRpcmVjdCA9ICFyZWRpcmVjdFJlc3BvbnNlLmlzTnVsbCAmJiByZXF1
ZXN0LnVybC5sZW5ndGg7Ci0gICAgICAgIGlmIChpc1JlZGlyZWN0KSB7Ci0gICAgICAgICAgICBy
ZXNvdXJjZS5lbmRUaW1lID0gdGltZTsKLSAgICAgICAgICAgIHRoaXMuZGlkUmVjZWl2ZVJlc3Bv
bnNlKGlkZW50aWZpZXIsIHRpbWUsICJPdGhlciIsIHJlZGlyZWN0UmVzcG9uc2UpOwotICAgICAg
ICAgICAgcmVzb3VyY2UgPSB0aGlzLl9hcHBlbmRSZWRpcmVjdChyZXNvdXJjZS5pZGVudGlmaWVy
LCByZXF1ZXN0LnVybCk7Ci0gICAgICAgIH0KLQotICAgICAgICB0aGlzLl91cGRhdGVSZXNvdXJj
ZVdpdGhSZXF1ZXN0KHJlc291cmNlLCByZXF1ZXN0KTsKLSAgICAgICAgcmVzb3VyY2Uuc3RhcnRU
aW1lID0gdGltZTsKLQotICAgICAgICBpZiAoaXNSZWRpcmVjdCkgewotICAgICAgICAgICAgV2Vi
SW5zcGVjdG9yLnBhbmVscy5uZXR3b3JrLnJlZnJlc2hSZXNvdXJjZShyZXNvdXJjZSk7Ci0gICAg
ICAgICAgICBXZWJJbnNwZWN0b3IucGFuZWxzLmF1ZGl0cy5yZXNvdXJjZVN0YXJ0ZWQocmVzb3Vy
Y2UpOwotICAgICAgICB9IGVsc2UgCi0gICAgICAgICAgICBXZWJJbnNwZWN0b3IucGFuZWxzLm5l
dHdvcmsucmVmcmVzaFJlc291cmNlKHJlc291cmNlKTsKLSAgICB9LAotCi0gICAgX3VwZGF0ZVJl
c291cmNlV2l0aFJlcXVlc3Q6IGZ1bmN0aW9uKHJlc291cmNlLCByZXF1ZXN0KQotICAgIHsKLSAg
ICAgICAgcmVzb3VyY2UucmVxdWVzdE1ldGhvZCA9IHJlcXVlc3QuaHR0cE1ldGhvZDsKLSAgICAg
ICAgcmVzb3VyY2UucmVxdWVzdEhlYWRlcnMgPSByZXF1ZXN0Lmh0dHBIZWFkZXJGaWVsZHM7Ci0g
ICAgICAgIHJlc291cmNlLnJlcXVlc3RGb3JtRGF0YSA9IHJlcXVlc3QucmVxdWVzdEZvcm1EYXRh
OwotICAgIH0sCi0KLSAgICBfYXBwZW5kUmVkaXJlY3Q6IGZ1bmN0aW9uKGlkZW50aWZpZXIsIHJl
ZGlyZWN0VVJMKQotICAgIHsKLSAgICAgICAgdmFyIG9yaWdpbmFsUmVzb3VyY2UgPSB0aGlzLl9y
ZXNvdXJjZXNCeUlkW2lkZW50aWZpZXJdOwotICAgICAgICBvcmlnaW5hbFJlc291cmNlLmlkZW50
aWZpZXIgPSBudWxsOwotCi0gICAgICAgIHZhciBuZXdSZXNvdXJjZSA9IHRoaXMuX2NyZWF0ZVJl
c291cmNlKGlkZW50aWZpZXIsIHJlZGlyZWN0VVJMLCBvcmlnaW5hbFJlc291cmNlLmxvYWRlciwg
b3JpZ2luYWxSZXNvdXJjZS5zdGFja1RyYWNlKTsKLSAgICAgICAgbmV3UmVzb3VyY2UucmVkaXJl
Y3RzID0gb3JpZ2luYWxSZXNvdXJjZS5yZWRpcmVjdHMgfHwgW107Ci0gICAgICAgIGRlbGV0ZSBv
cmlnaW5hbFJlc291cmNlLnJlZGlyZWN0czsKLSAgICAgICAgbmV3UmVzb3VyY2UucmVkaXJlY3Rz
LnB1c2gob3JpZ2luYWxSZXNvdXJjZSk7Ci0gICAgICAgIHJldHVybiBuZXdSZXNvdXJjZTsKLSAg
ICB9LAotCi0gICAgbWFya1Jlc291cmNlQXNDYWNoZWQ6IGZ1bmN0aW9uKGlkZW50aWZpZXIpCi0g
ICAgewotICAgICAgICB2YXIgcmVzb3VyY2UgPSB0aGlzLl9yZXNvdXJjZXNCeUlkW2lkZW50aWZp
ZXJdOwotICAgICAgICBpZiAoIXJlc291cmNlKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAg
ICAgIHJlc291cmNlLmNhY2hlZCA9IHRydWU7Ci0gICAgICAgIFdlYkluc3BlY3Rvci5wYW5lbHMu
bmV0d29yay5yZWZyZXNoUmVzb3VyY2UocmVzb3VyY2UpOwotICAgIH0sCi0KLSAgICBkaWRSZWNl
aXZlUmVzcG9uc2U6IGZ1bmN0aW9uKGlkZW50aWZpZXIsIHRpbWUsIHJlc291cmNlVHlwZSwgcmVz
cG9uc2UpCi0gICAgewotICAgICAgICB2YXIgcmVzb3VyY2UgPSB0aGlzLl9yZXNvdXJjZXNCeUlk
W2lkZW50aWZpZXJdOwotICAgICAgICBpZiAoIXJlc291cmNlKQotICAgICAgICAgICAgcmV0dXJu
OwotCi0gICAgICAgIHJlc291cmNlLnJlc3BvbnNlUmVjZWl2ZWRUaW1lID0gdGltZTsKLSAgICAg
ICAgcmVzb3VyY2UudHlwZSA9IFdlYkluc3BlY3Rvci5SZXNvdXJjZS5UeXBlW3Jlc291cmNlVHlw
ZV07Ci0KLSAgICAgICAgdGhpcy5fdXBkYXRlUmVzb3VyY2VXaXRoUmVzcG9uc2UocmVzb3VyY2Us
IHJlc3BvbnNlKTsKLQotICAgICAgICBXZWJJbnNwZWN0b3IucGFuZWxzLm5ldHdvcmsucmVmcmVz
aFJlc291cmNlKHJlc291cmNlKTsKLSAgICAgICAgdGhpcy5fcmVzb3VyY2VUcmVlTW9kZWwuYWRk
UmVzb3VyY2VUb0ZyYW1lKHJlc291cmNlLmxvYWRlci5mcmFtZUlkLCByZXNvdXJjZSk7Ci0gICAg
fSwKLQotICAgIF91cGRhdGVSZXNvdXJjZVdpdGhSZXNwb25zZTogZnVuY3Rpb24ocmVzb3VyY2Us
IHJlc3BvbnNlKQotICAgIHsKLSAgICAgICAgaWYgKHJlc291cmNlLmlzTnVsbCkKLSAgICAgICAg
ICAgIHJldHVybjsKLQotICAgICAgICByZXNvdXJjZS5taW1lVHlwZSA9IHJlc3BvbnNlLm1pbWVU
eXBlOwotICAgICAgICByZXNvdXJjZS5leHBlY3RlZENvbnRlbnRMZW5ndGggPSByZXNwb25zZS5l
eHBlY3RlZENvbnRlbnRMZW5ndGg7Ci0gICAgICAgIHJlc291cmNlLnRleHRFbmNvZGluZ05hbWUg
PSByZXNwb25zZS50ZXh0RW5jb2RpbmdOYW1lOwotICAgICAgICByZXNvdXJjZS5zdWdnZXN0ZWRG
aWxlbmFtZSA9IHJlc3BvbnNlLnN1Z2dlc3RlZEZpbGVuYW1lOwotICAgICAgICByZXNvdXJjZS5z
dGF0dXNDb2RlID0gcmVzcG9uc2UuaHR0cFN0YXR1c0NvZGU7Ci0gICAgICAgIHJlc291cmNlLnN0
YXR1c1RleHQgPSByZXNwb25zZS5odHRwU3RhdHVzVGV4dDsKLQotICAgICAgICByZXNvdXJjZS5y
ZXNwb25zZUhlYWRlcnMgPSByZXNwb25zZS5odHRwSGVhZGVyRmllbGRzOwotICAgICAgICByZXNv
dXJjZS5jb25uZWN0aW9uUmV1c2VkID0gcmVzcG9uc2UuY29ubmVjdGlvblJldXNlZDsKLSAgICAg
ICAgcmVzb3VyY2UuY29ubmVjdGlvbklEID0gcmVzcG9uc2UuY29ubmVjdGlvbklEOwotCi0gICAg
ICAgIGlmIChyZXNwb25zZS53YXNDYWNoZWQpCi0gICAgICAgICAgICByZXNvdXJjZS5jYWNoZWQg
PSB0cnVlOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICByZXNvdXJjZS50aW1pbmcgPSByZXNw
b25zZS50aW1pbmc7Ci0KLSAgICAgICAgaWYgKHJlc3BvbnNlLmxvYWRJbmZvKSB7Ci0gICAgICAg
ICAgICBpZiAocmVzcG9uc2UubG9hZEluZm8uaHR0cFN0YXR1c0NvZGUpCi0gICAgICAgICAgICAg
ICAgcmVzb3VyY2Uuc3RhdHVzQ29kZSA9IHJlc3BvbnNlLmxvYWRJbmZvLmh0dHBTdGF0dXNDb2Rl
OwotICAgICAgICAgICAgaWYgKHJlc3BvbnNlLmxvYWRJbmZvLmh0dHBTdGF0dXNUZXh0KQotICAg
ICAgICAgICAgICAgIHJlc291cmNlLnN0YXR1c1RleHQgPSByZXNwb25zZS5sb2FkSW5mby5odHRw
U3RhdHVzVGV4dDsKLSAgICAgICAgICAgIHJlc291cmNlLnJlcXVlc3RIZWFkZXJzID0gcmVzcG9u
c2UubG9hZEluZm8ucmVxdWVzdEhlYWRlcnM7Ci0gICAgICAgICAgICByZXNvdXJjZS5yZXNwb25z
ZUhlYWRlcnMgPSByZXNwb25zZS5sb2FkSW5mby5yZXNwb25zZUhlYWRlcnM7Ci0gICAgICAgIH0K
LSAgICB9LAotCi0gICAgZGlkUmVjZWl2ZUNvbnRlbnRMZW5ndGg6IGZ1bmN0aW9uKGlkZW50aWZp
ZXIsIHRpbWUsIGxlbmd0aFJlY2VpdmVkKQotICAgIHsKLSAgICAgICAgdmFyIHJlc291cmNlID0g
dGhpcy5fcmVzb3VyY2VzQnlJZFtpZGVudGlmaWVyXTsKLSAgICAgICAgaWYgKCFyZXNvdXJjZSkK
LSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICByZXNvdXJjZS5yZXNvdXJjZVNpemUgKz0g
bGVuZ3RoUmVjZWl2ZWQ7Ci0gICAgICAgIHJlc291cmNlLmVuZFRpbWUgPSB0aW1lOwotCi0gICAg
ICAgIFdlYkluc3BlY3Rvci5wYW5lbHMubmV0d29yay5yZWZyZXNoUmVzb3VyY2UocmVzb3VyY2Up
OwotICAgIH0sCi0KLSAgICBkaWRGaW5pc2hMb2FkaW5nOiBmdW5jdGlvbihpZGVudGlmaWVyLCBm
aW5pc2hUaW1lKQotICAgIHsKLSAgICAgICAgdmFyIHJlc291cmNlID0gdGhpcy5fcmVzb3VyY2Vz
QnlJZFtpZGVudGlmaWVyXTsKLSAgICAgICAgaWYgKCFyZXNvdXJjZSkKLSAgICAgICAgICAgIHJl
dHVybjsKLQotICAgICAgICByZXNvdXJjZS5lbmRUaW1lID0gZmluaXNoVGltZTsKLSAgICAgICAg
cmVzb3VyY2UuZmluaXNoZWQgPSB0cnVlOwotCi0gICAgICAgIFdlYkluc3BlY3Rvci5wYW5lbHMu
bmV0d29yay5yZWZyZXNoUmVzb3VyY2UocmVzb3VyY2UpOwotICAgICAgICBXZWJJbnNwZWN0b3Iu
cGFuZWxzLmF1ZGl0cy5yZXNvdXJjZUZpbmlzaGVkKHJlc291cmNlKTsKLSAgICAgICAgV2ViSW5z
cGVjdG9yLmV4dGVuc2lvblNlcnZlci5ub3RpZnlSZXNvdXJjZUZpbmlzaGVkKHJlc291cmNlKTsK
LSAgICAgICAgZGVsZXRlIHRoaXMuX3Jlc291cmNlc0J5SWRbaWRlbnRpZmllcl07Ci0gICAgfSwK
LQotICAgIGRpZEZhaWxMb2FkaW5nOiBmdW5jdGlvbihpZGVudGlmaWVyLCB0aW1lLCBsb2NhbGl6
ZWREZXNjcmlwdGlvbikKLSAgICB7Ci0gICAgICAgIHZhciByZXNvdXJjZSA9IHRoaXMuX3Jlc291
cmNlc0J5SWRbaWRlbnRpZmllcl07Ci0gICAgICAgIGlmICghcmVzb3VyY2UpCi0gICAgICAgICAg
ICByZXR1cm47Ci0KLSAgICAgICAgcmVzb3VyY2UuZmFpbGVkID0gdHJ1ZTsKLSAgICAgICAgcmVz
b3VyY2UubG9jYWxpemVkRmFpbERlc2NyaXB0aW9uID0gbG9jYWxpemVkRGVzY3JpcHRpb247Ci0g
ICAgICAgIHJlc291cmNlLmZpbmlzaGVkID0gdHJ1ZTsKLSAgICAgICAgcmVzb3VyY2UuZW5kVGlt
ZSA9IHRpbWU7Ci0KLSAgICAgICAgV2ViSW5zcGVjdG9yLnBhbmVscy5uZXR3b3JrLnJlZnJlc2hS
ZXNvdXJjZShyZXNvdXJjZSk7Ci0gICAgICAgIFdlYkluc3BlY3Rvci5wYW5lbHMuYXVkaXRzLnJl
c291cmNlRmluaXNoZWQocmVzb3VyY2UpOwotICAgICAgICBXZWJJbnNwZWN0b3IuZXh0ZW5zaW9u
U2VydmVyLm5vdGlmeVJlc291cmNlRmluaXNoZWQocmVzb3VyY2UpOwotICAgICAgICBkZWxldGUg
dGhpcy5fcmVzb3VyY2VzQnlJZFtpZGVudGlmaWVyXTsKLSAgICB9LAotCi0gICAgZGlkTG9hZFJl
c291cmNlRnJvbU1lbW9yeUNhY2hlOiBmdW5jdGlvbih0aW1lLCBjYWNoZWRSZXNvdXJjZSkKLSAg
ICB7Ci0gICAgICAgIHZhciByZXNvdXJjZSA9IHRoaXMuX2NyZWF0ZVJlc291cmNlKG51bGwsIGNh
Y2hlZFJlc291cmNlLnVybCwgY2FjaGVkUmVzb3VyY2UubG9hZGVyKTsKLSAgICAgICAgdGhpcy5f
dXBkYXRlUmVzb3VyY2VXaXRoQ2FjaGVkUmVzb3VyY2UocmVzb3VyY2UsIGNhY2hlZFJlc291cmNl
KTsKLSAgICAgICAgcmVzb3VyY2UuY2FjaGVkID0gdHJ1ZTsKLSAgICAgICAgcmVzb3VyY2UucmVx
dWVzdE1ldGhvZCA9ICJHRVQiOwotICAgICAgICByZXNvdXJjZS5zdGFydFRpbWUgPSByZXNvdXJj
ZS5yZXNwb25zZVJlY2VpdmVkVGltZSA9IHJlc291cmNlLmVuZFRpbWUgPSB0aW1lOwotICAgICAg
ICByZXNvdXJjZS5maW5pc2hlZCA9IHRydWU7Ci0KLSAgICAgICAgV2ViSW5zcGVjdG9yLnBhbmVs
cy5uZXR3b3JrLnJlZnJlc2hSZXNvdXJjZShyZXNvdXJjZSk7Ci0gICAgICAgIFdlYkluc3BlY3Rv
ci5wYW5lbHMuYXVkaXRzLnJlc291cmNlU3RhcnRlZChyZXNvdXJjZSk7Ci0gICAgICAgIFdlYklu
c3BlY3Rvci5wYW5lbHMuYXVkaXRzLnJlc291cmNlRmluaXNoZWQocmVzb3VyY2UpOwotICAgICAg
ICB0aGlzLl9yZXNvdXJjZVRyZWVNb2RlbC5hZGRSZXNvdXJjZVRvRnJhbWUocmVzb3VyY2UubG9h
ZGVyLmZyYW1lSWQsIHJlc291cmNlKTsKLSAgICB9LAotCi0gICAgX3VwZGF0ZVJlc291cmNlV2l0
aENhY2hlZFJlc291cmNlOiBmdW5jdGlvbihyZXNvdXJjZSwgY2FjaGVkUmVzb3VyY2UpCi0gICAg
ewotICAgICAgICByZXNvdXJjZS50eXBlID0gV2ViSW5zcGVjdG9yLlJlc291cmNlLlR5cGVbY2Fj
aGVkUmVzb3VyY2UudHlwZV07Ci0gICAgICAgIHJlc291cmNlLnJlc291cmNlU2l6ZSA9IGNhY2hl
ZFJlc291cmNlLmVuY29kZWRTaXplOwotICAgICAgICB0aGlzLl91cGRhdGVSZXNvdXJjZVdpdGhS
ZXNwb25zZShyZXNvdXJjZSwgY2FjaGVkUmVzb3VyY2UucmVzcG9uc2UpOwotICAgIH0sCi0KLSAg
ICBzZXRJbml0aWFsQ29udGVudDogZnVuY3Rpb24oaWRlbnRpZmllciwgc291cmNlU3RyaW5nLCB0
eXBlKQotICAgIHsKLSAgICAgICAgdmFyIHJlc291cmNlID0gV2ViSW5zcGVjdG9yLnBhbmVscy5u
ZXR3b3JrLnJlc291cmNlc1tpZGVudGlmaWVyXTsKLSAgICAgICAgaWYgKCFyZXNvdXJjZSkKLSAg
ICAgICAgICAgIHJldHVybjsKLQotICAgICAgICByZXNvdXJjZS50eXBlID0gV2ViSW5zcGVjdG9y
LlJlc291cmNlLlR5cGVbdHlwZV07Ci0gICAgICAgIHJlc291cmNlLnNldEluaXRpYWxDb250ZW50
KHNvdXJjZVN0cmluZyk7Ci0gICAgICAgIFdlYkluc3BlY3Rvci5wYW5lbHMucmVzb3VyY2VzLnJl
ZnJlc2hSZXNvdXJjZShyZXNvdXJjZSk7Ci0gICAgICAgIFdlYkluc3BlY3Rvci5wYW5lbHMubmV0
d29yay5yZWZyZXNoUmVzb3VyY2UocmVzb3VyY2UpOwotICAgIH0sCi0KLSAgICBkaWRDb21taXRM
b2FkRm9yRnJhbWU6IGZ1bmN0aW9uKGZyYW1lLCBsb2FkZXIpCi0gICAgewotICAgICAgICB0aGlz
Ll9yZXNvdXJjZVRyZWVNb2RlbC5kaWRDb21taXRMb2FkRm9yRnJhbWUoZnJhbWUsIGxvYWRlcik7
Ci0gICAgICAgIGlmICghZnJhbWUucGFyZW50SWQpIHsKLSAgICAgICAgICAgIHZhciBtYWluUmVz
b3VyY2UgPSB0aGlzLnJlc291cmNlRm9yVVJMKGZyYW1lLnVybCk7Ci0gICAgICAgICAgICBpZiAo
bWFpblJlc291cmNlKSB7Ci0gICAgICAgICAgICAgICAgV2ViSW5zcGVjdG9yLm1haW5SZXNvdXJj
ZSA9IG1haW5SZXNvdXJjZTsKLSAgICAgICAgICAgICAgICBtYWluUmVzb3VyY2UuaXNNYWluUmVz
b3VyY2UgPSB0cnVlOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfSwKLQotICAgIGZy
YW1lRGV0YWNoZWRGcm9tUGFyZW50OiBmdW5jdGlvbihmcmFtZUlkKQotICAgIHsKLSAgICAgICAg
dGhpcy5fcmVzb3VyY2VUcmVlTW9kZWwuZnJhbWVEZXRhY2hlZEZyb21QYXJlbnQoZnJhbWVJZCk7
Ci0gICAgfSwKLQotICAgIGRpZENyZWF0ZVdlYlNvY2tldDogZnVuY3Rpb24oaWRlbnRpZmllciwg
cmVxdWVzdFVSTCkKLSAgICB7Ci0gICAgICAgIHZhciByZXNvdXJjZSA9IHRoaXMuX2NyZWF0ZVJl
c291cmNlKGlkZW50aWZpZXIsIHJlcXVlc3RVUkwpOwotICAgICAgICByZXNvdXJjZS50eXBlID0g
V2ViSW5zcGVjdG9yLlJlc291cmNlLlR5cGUuV2ViU29ja2V0OwotICAgICAgICBXZWJJbnNwZWN0
b3IucGFuZWxzLm5ldHdvcmsucmVmcmVzaFJlc291cmNlKHJlc291cmNlKTsKLSAgICB9LAotCi0g
ICAgd2lsbFNlbmRXZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0OiBmdW5jdGlvbihpZGVudGlmaWVy
LCB0aW1lLCByZXF1ZXN0KQotICAgIHsKLSAgICAgICAgdmFyIHJlc291cmNlID0gdGhpcy5fcmVz
b3VyY2VzQnlJZFtpZGVudGlmaWVyXTsKLSAgICAgICAgaWYgKCFyZXNvdXJjZSkKLSAgICAgICAg
ICAgIHJldHVybjsKLQotICAgICAgICByZXNvdXJjZS5yZXF1ZXN0TWV0aG9kID0gIkdFVCI7Ci0g
ICAgICAgIHJlc291cmNlLnJlcXVlc3RIZWFkZXJzID0gcmVxdWVzdC53ZWJTb2NrZXRIZWFkZXJG
aWVsZHM7Ci0gICAgICAgIHJlc291cmNlLndlYlNvY2tldFJlcXVlc3RLZXkzID0gcmVxdWVzdC53
ZWJTb2NrZXRSZXF1ZXN0S2V5MzsKLSAgICAgICAgcmVzb3VyY2Uuc3RhcnRUaW1lID0gdGltZTsK
LQotICAgICAgICBXZWJJbnNwZWN0b3IucGFuZWxzLm5ldHdvcmsucmVmcmVzaFJlc291cmNlKHJl
c291cmNlKTsKLSAgICB9LAotCi0gICAgZGlkUmVjZWl2ZVdlYlNvY2tldEhhbmRzaGFrZVJlc3Bv
bnNlOiBmdW5jdGlvbihpZGVudGlmaWVyLCB0aW1lLCByZXNwb25zZSkKLSAgICB7Ci0gICAgICAg
IHZhciByZXNvdXJjZSA9IHRoaXMuX3Jlc291cmNlc0J5SWRbaWRlbnRpZmllcl07Ci0gICAgICAg
IGlmICghcmVzb3VyY2UpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgcmVzb3VyY2Uu
c3RhdHVzQ29kZSA9IHJlc3BvbnNlLnN0YXR1c0NvZGU7Ci0gICAgICAgIHJlc291cmNlLnN0YXR1
c1RleHQgPSByZXNwb25zZS5zdGF0dXNUZXh0OwotICAgICAgICByZXNvdXJjZS5yZXNwb25zZUhl
YWRlcnMgPSByZXNwb25zZS53ZWJTb2NrZXRIZWFkZXJGaWVsZHM7Ci0gICAgICAgIHJlc291cmNl
LndlYlNvY2tldENoYWxsZW5nZVJlc3BvbnNlID0gcmVzcG9uc2Uud2ViU29ja2V0Q2hhbGxlbmdl
UmVzcG9uc2U7Ci0gICAgICAgIHJlc291cmNlLnJlc3BvbnNlUmVjZWl2ZWRUaW1lID0gdGltZTsK
LQotICAgICAgICBXZWJJbnNwZWN0b3IucGFuZWxzLm5ldHdvcmsucmVmcmVzaFJlc291cmNlKHJl
c291cmNlKTsKLSAgICB9LAotCi0gICAgZGlkQ2xvc2VXZWJTb2NrZXQ6IGZ1bmN0aW9uKGlkZW50
aWZpZXIsIHRpbWUpCi0gICAgewotICAgICAgICB2YXIgcmVzb3VyY2UgPSB0aGlzLl9yZXNvdXJj
ZXNCeUlkW2lkZW50aWZpZXJdOwotICAgICAgICBpZiAoIXJlc291cmNlKQotICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICByZXNvdXJjZS5lbmRUaW1lID0gdGltZTsKLQotICAgICAgICBXZWJJ
bnNwZWN0b3IucGFuZWxzLm5ldHdvcmsucmVmcmVzaFJlc291cmNlKHJlc291cmNlKTsKLSAgICB9
LAotCi0gICAgX3Byb2Nlc3NDYWNoZWRSZXNvdXJjZXM6IGZ1bmN0aW9uKG1haW5GcmFtZVBheWxv
YWQpCi0gICAgewotICAgICAgICB2YXIgbWFpblJlc291cmNlID0gdGhpcy5fYWRkRnJhbWVzUmVj
dXJzaXZlbHkobWFpbkZyYW1lUGF5bG9hZCk7Ci0gICAgICAgIFdlYkluc3BlY3Rvci5tYWluUmVz
b3VyY2UgPSBtYWluUmVzb3VyY2U7Ci0gICAgICAgIG1haW5SZXNvdXJjZS5pc01haW5SZXNvdXJj
ZSA9IHRydWU7Ci0gICAgfSwKLQotICAgIF9hZGRGcmFtZXNSZWN1cnNpdmVseTogZnVuY3Rpb24o
ZnJhbWVQYXlsb2FkKQotICAgIHsKLSAgICAgICAgdmFyIGZyYW1lUmVzb3VyY2UgPSB0aGlzLl9j
cmVhdGVSZXNvdXJjZShudWxsLCBmcmFtZVBheWxvYWQucmVzb3VyY2UudXJsLCBmcmFtZVBheWxv
YWQucmVzb3VyY2UubG9hZGVyKTsKLSAgICAgICAgdGhpcy5fdXBkYXRlUmVzb3VyY2VXaXRoUmVx
dWVzdChmcmFtZVJlc291cmNlLCBmcmFtZVBheWxvYWQucmVzb3VyY2UucmVxdWVzdCk7Ci0gICAg
ICAgIHRoaXMuX3VwZGF0ZVJlc291cmNlV2l0aFJlc3BvbnNlKGZyYW1lUmVzb3VyY2UsIGZyYW1l
UGF5bG9hZC5yZXNvdXJjZS5yZXNwb25zZSk7Ci0gICAgICAgIGZyYW1lUmVzb3VyY2UudHlwZSA9
IFdlYkluc3BlY3Rvci5SZXNvdXJjZS5UeXBlWyJEb2N1bWVudCJdOwotICAgICAgICBmcmFtZVJl
c291cmNlLmZpbmlzaGVkID0gdHJ1ZTsKLSAgICAgICAgdGhpcy5fYmluZFJlc291cmNlVVJMKGZy
YW1lUmVzb3VyY2UpOwotCi0gICAgICAgIHRoaXMuX3Jlc291cmNlVHJlZU1vZGVsLmFkZE9yVXBk
YXRlRnJhbWUoZnJhbWVQYXlsb2FkKTsKLSAgICAgICAgdGhpcy5fcmVzb3VyY2VUcmVlTW9kZWwu
YWRkUmVzb3VyY2VUb0ZyYW1lKGZyYW1lUGF5bG9hZC5pZCwgZnJhbWVSZXNvdXJjZSk7Ci0KLSAg
ICAgICAgZm9yICh2YXIgaSA9IDA7IGZyYW1lUGF5bG9hZC5jaGlsZHJlbiAmJiBpIDwgZnJhbWVQ
YXlsb2FkLmNoaWxkcmVuLmxlbmd0aDsgKytpKQotICAgICAgICAgICAgdGhpcy5fYWRkRnJhbWVz
UmVjdXJzaXZlbHkoZnJhbWVQYXlsb2FkLmNoaWxkcmVuW2ldKTsKLQotICAgICAgICBpZiAoIWZy
YW1lUGF5bG9hZC5zdWJyZXNvdXJjZXMpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAg
Zm9yICh2YXIgaSA9IDA7IGkgPCBmcmFtZVBheWxvYWQuc3VicmVzb3VyY2VzLmxlbmd0aDsgKytp
KSB7Ci0gICAgICAgICAgICB2YXIgY2FjaGVkUmVzb3VyY2UgPSBmcmFtZVBheWxvYWQuc3VicmVz
b3VyY2VzW2ldOwotICAgICAgICAgICAgdmFyIHJlc291cmNlID0gdGhpcy5fY3JlYXRlUmVzb3Vy
Y2UobnVsbCwgY2FjaGVkUmVzb3VyY2UudXJsLCBjYWNoZWRSZXNvdXJjZS5sb2FkZXIpOwotICAg
ICAgICAgICAgdGhpcy5fdXBkYXRlUmVzb3VyY2VXaXRoQ2FjaGVkUmVzb3VyY2UocmVzb3VyY2Us
IGNhY2hlZFJlc291cmNlKTsKLSAgICAgICAgICAgIHJlc291cmNlLmZpbmlzaGVkID0gdHJ1ZTsK
LSAgICAgICAgICAgIHRoaXMuX2JpbmRSZXNvdXJjZVVSTChyZXNvdXJjZSk7Ci0gICAgICAgICAg
ICB0aGlzLl9yZXNvdXJjZVRyZWVNb2RlbC5hZGRSZXNvdXJjZVRvRnJhbWUoZnJhbWVQYXlsb2Fk
LmlkLCByZXNvdXJjZSk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIGZyYW1lUmVzb3VyY2U7
Ci0gICAgfSwKLQotICAgIHJlc291cmNlRm9yVVJMOiBmdW5jdGlvbih1cmwpCi0gICAgewotICAg
ICAgICAvLyBGSVhNRTogcmVjZWl2ZSBmcmFtZUlkIGhlcmUuCi0gICAgICAgIHZhciBlbnRyeSA9
IHRoaXMuX3Jlc291cmNlc0J5VVJMW3VybF07Ci0gICAgICAgIGlmIChlbnRyeSBpbnN0YW5jZW9m
IEFycmF5KQotICAgICAgICAgICAgcmV0dXJuIGVudHJ5WzBdOwotICAgICAgICByZXR1cm4gZW50
cnk7Ci0gICAgfSwKLQotICAgIGFkZENvbnNvbGVNZXNzYWdlOiBmdW5jdGlvbihtc2cpCi0gICAg
ewotICAgICAgICB2YXIgcmVzb3VyY2UgPSB0aGlzLnJlc291cmNlRm9yVVJMKG1zZy51cmwpOwot
ICAgICAgICBpZiAoIXJlc291cmNlKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIHN3
aXRjaCAobXNnLmxldmVsKSB7Ci0gICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNz
YWdlLk1lc3NhZ2VMZXZlbC5XYXJuaW5nOgotICAgICAgICAgICAgcmVzb3VyY2Uud2FybmluZ3Mg
Kz0gbXNnLnJlcGVhdERlbHRhOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgV2Vi
SW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlLk1lc3NhZ2VMZXZlbC5FcnJvcjoKLSAgICAgICAgICAg
IHJlc291cmNlLmVycm9ycyArPSBtc2cucmVwZWF0RGVsdGE7Ci0gICAgICAgICAgICBicmVhazsK
LSAgICAgICAgfQotCi0gICAgICAgIHZhciB2aWV3ID0gV2ViSW5zcGVjdG9yLlJlc291cmNlTWFu
YWdlci5yZXNvdXJjZVZpZXdGb3JSZXNvdXJjZShyZXNvdXJjZSk7Ci0gICAgICAgIGlmICh2aWV3
LmFkZE1lc3NhZ2UpCi0gICAgICAgICAgICB2aWV3LmFkZE1lc3NhZ2UobXNnKTsKLSAgICB9LAot
Ci0gICAgY2xlYXJDb25zb2xlTWVzc2FnZXM6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIGZ1
bmN0aW9uIGNhbGxiYWNrKHJlc291cmNlKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXNvdXJj
ZS5jbGVhckVycm9yc0FuZFdhcm5pbmdzKCk7Ci0gICAgICAgIH0KLSAgICAgICAgdGhpcy5fcmVz
b3VyY2VUcmVlTW9kZWwuZm9yQWxsUmVzb3VyY2VzKGNhbGxiYWNrKTsKLSAgICB9LAotCi0gICAg
Zm9yQWxsUmVzb3VyY2VzOiBmdW5jdGlvbihjYWxsYmFjaykKLSAgICB7Ci0gICAgICAgIHRoaXMu
X3Jlc291cmNlVHJlZU1vZGVsLmZvckFsbFJlc291cmNlcyhjYWxsYmFjayk7Ci0gICAgfSwKLQot
ICAgIF9iaW5kUmVzb3VyY2VVUkw6IGZ1bmN0aW9uKHJlc291cmNlKQotICAgIHsKLSAgICAgICAg
dmFyIHJlc291cmNlRm9yVVJMID0gdGhpcy5fcmVzb3VyY2VzQnlVUkxbcmVzb3VyY2UudXJsXTsK
LSAgICAgICAgaWYgKCFyZXNvdXJjZUZvclVSTCkKLSAgICAgICAgICAgIHRoaXMuX3Jlc291cmNl
c0J5VVJMW3Jlc291cmNlLnVybF0gPSByZXNvdXJjZTsKLSAgICAgICAgZWxzZSBpZiAocmVzb3Vy
Y2VGb3JVUkwgaW5zdGFuY2VvZiBBcnJheSkKLSAgICAgICAgICAgIHJlc291cmNlRm9yVVJMLnB1
c2gocmVzb3VyY2UpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICB0aGlzLl9yZXNvdXJjZXNC
eVVSTFtyZXNvdXJjZS51cmxdID0gW3Jlc291cmNlRm9yVVJMLCByZXNvdXJjZV07Ci0gICAgfSwK
LQotICAgIF91bmJpbmRSZXNvdXJjZVVSTDogZnVuY3Rpb24ocmVzb3VyY2UpCi0gICAgewotICAg
ICAgICB2YXIgcmVzb3VyY2VGb3JVUkwgPSB0aGlzLl9yZXNvdXJjZXNCeVVSTFtyZXNvdXJjZS51
cmxdOwotICAgICAgICBpZiAoIXJlc291cmNlRm9yVVJMKQotICAgICAgICAgICAgcmV0dXJuOwot
Ci0gICAgICAgIGlmIChyZXNvdXJjZUZvclVSTCBpbnN0YW5jZW9mIEFycmF5KSB7Ci0gICAgICAg
ICAgICByZXNvdXJjZUZvclVSTC5yZW1vdmUocmVzb3VyY2UsIHRydWUpOwotICAgICAgICAgICAg
aWYgKHJlc291cmNlRm9yVVJMLmxlbmd0aCA9PT0gMSkKLSAgICAgICAgICAgICAgICB0aGlzLl9y
ZXNvdXJjZXNCeVVSTFtyZXNvdXJjZS51cmxdID0gcmVzb3VyY2VGb3JVUkxbMF07Ci0gICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBkZWxldGUgdGhpcy5fcmVzb3VyY2Vz
QnlVUkxbcmVzb3VyY2UudXJsXTsKLSAgICB9LAotCi0gICAgdXBkYXRlRE9NU3RvcmFnZTogZnVu
Y3Rpb24oc3RvcmFnZUlkKQotICAgIHsKLSAgICAgICAgV2ViSW5zcGVjdG9yLnBhbmVscy5yZXNv
dXJjZXMudXBkYXRlRE9NU3RvcmFnZShzdG9yYWdlSWQpOwotICAgIH0sCi0KLSAgICB1cGRhdGVB
cHBsaWNhdGlvbkNhY2hlU3RhdHVzOiBmdW5jdGlvbihzdGF0dXMpCi0gICAgewotICAgICAgICBX
ZWJJbnNwZWN0b3IucGFuZWxzLnJlc291cmNlcy51cGRhdGVBcHBsaWNhdGlvbkNhY2hlU3RhdHVz
KHN0YXR1cyk7Ci0gICAgfSwKLQotICAgIGRpZEdldEZpbGVTeXN0ZW1QYXRoOiBmdW5jdGlvbihy
b290LCB0eXBlLCBvcmlnaW4pCi0gICAgewotICAgICAgICBXZWJJbnNwZWN0b3IucGFuZWxzLnJl
c291cmNlcy51cGRhdGVGaWxlU3lzdGVtUGF0aChyb290LCB0eXBlLCBvcmlnaW4pOwotICAgIH0s
Ci0KLSAgICBkaWRHZXRGaWxlU3lzdGVtRXJyb3I6IGZ1bmN0aW9uKHR5cGUsIG9yaWdpbikKLSAg
ICB7Ci0gICAgICAgIFdlYkluc3BlY3Rvci5wYW5lbHMucmVzb3VyY2VzLnVwZGF0ZUZpbGVTeXN0
ZW1FcnJvcih0eXBlLCBvcmlnaW4pOwotICAgIH0sCi0KLSAgICBkaWRHZXRGaWxlU3lzdGVtRGlz
YWJsZWQ6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIFdlYkluc3BlY3Rvci5wYW5lbHMucmVz
b3VyY2VzLnNldEZpbGVTeXN0ZW1EaXNhYmxlZCgpOwotICAgIH0sCi0KLSAgICB1cGRhdGVOZXR3
b3JrU3RhdGU6IGZ1bmN0aW9uKGlzTm93T25saW5lKQotICAgIHsKLSAgICAgICAgV2ViSW5zcGVj
dG9yLnBhbmVscy5yZXNvdXJjZXMudXBkYXRlTmV0d29ya1N0YXRlKGlzTm93T25saW5lKTsKLSAg
ICB9LAotCi0gICAgYWRkRE9NU3RvcmFnZTogZnVuY3Rpb24ocGF5bG9hZCkKLSAgICB7Ci0gICAg
ICAgIGlmICghV2ViSW5zcGVjdG9yLnBhbmVscy5yZXNvdXJjZXMpCi0gICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgIHZhciBkb21TdG9yYWdlID0gbmV3IFdlYkluc3BlY3Rvci5ET01TdG9yYWdl
KAotICAgICAgICAgICAgcGF5bG9hZC5pZCwKLSAgICAgICAgICAgIHBheWxvYWQuaG9zdCwKLSAg
ICAgICAgICAgIHBheWxvYWQuaXNMb2NhbFN0b3JhZ2UpOwotICAgICAgICBXZWJJbnNwZWN0b3Iu
cGFuZWxzLnJlc291cmNlcy5hZGRET01TdG9yYWdlKGRvbVN0b3JhZ2UpOwotICAgIH0sCi0KLSAg
ICBzZWxlY3RET01TdG9yYWdlOiBmdW5jdGlvbihvKQotICAgIHsKLSAgICAgICAgV2ViSW5zcGVj
dG9yLnNob3dQYW5lbCgicmVzb3VyY2VzIik7Ci0gICAgICAgIFdlYkluc3BlY3Rvci5wYW5lbHMu
cmVzb3VyY2VzLnNlbGVjdERPTVN0b3JhZ2Uobyk7Ci0gICAgfSwKLQotICAgIGFkZERhdGFiYXNl
OiBmdW5jdGlvbihwYXlsb2FkKQotICAgIHsKLSAgICAgICAgaWYgKCFXZWJJbnNwZWN0b3IucGFu
ZWxzLnJlc291cmNlcykKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgdmFyIGRhdGFiYXNl
ID0gbmV3IFdlYkluc3BlY3Rvci5EYXRhYmFzZSgKLSAgICAgICAgICAgIHBheWxvYWQuaWQsCi0g
ICAgICAgICAgICBwYXlsb2FkLmRvbWFpbiwKLSAgICAgICAgICAgIHBheWxvYWQubmFtZSwKLSAg
ICAgICAgICAgIHBheWxvYWQudmVyc2lvbik7Ci0gICAgICAgIFdlYkluc3BlY3Rvci5wYW5lbHMu
cmVzb3VyY2VzLmFkZERhdGFiYXNlKGRhdGFiYXNlKTsKLSAgICB9LAotCi0gICAgc2VsZWN0RGF0
YWJhc2U6IGZ1bmN0aW9uKG8pCi0gICAgewotICAgICAgICBXZWJJbnNwZWN0b3Iuc2hvd1BhbmVs
KCJyZXNvdXJjZXMiKTsKLSAgICAgICAgV2ViSW5zcGVjdG9yLnBhbmVscy5yZXNvdXJjZXMuc2Vs
ZWN0RGF0YWJhc2Uobyk7Ci0gICAgfSwKLQotICAgIHNxbFRyYW5zYWN0aW9uU3VjY2VlZGVkOiBm
dW5jdGlvbih0cmFuc2FjdGlvbklkLCBjb2x1bW5OYW1lcywgdmFsdWVzKQotICAgIHsKLSAgICAg
ICAgdmFyIGNhbGxiYWNrID0gV2ViSW5zcGVjdG9yLkRhdGFiYXNlLnN1Y2Nlc3NDYWxsYmFja3Nb
dHJhbnNhY3Rpb25JZF07Ci0gICAgICAgIGlmICghY2FsbGJhY2spCi0gICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgIGRlbGV0ZSBXZWJJbnNwZWN0b3IuRGF0YWJhc2Uuc3VjY2Vzc0NhbGxiYWNr
c1t0cmFuc2FjdGlvbklkXTsKLSAgICAgICAgY2FsbGJhY2soY29sdW1uTmFtZXMsIHZhbHVlcyk7
Ci0gICAgfSwKLQotICAgIHNxbFRyYW5zYWN0aW9uRmFpbGVkOiBmdW5jdGlvbih0cmFuc2FjdGlv
bklkLCBlcnJvck9iaikKLSAgICB7Ci0gICAgICAgIHZhciBjYWxsYmFjayA9IFdlYkluc3BlY3Rv
ci5EYXRhYmFzZS5lcnJvckNhbGxiYWNrc1t0cmFuc2FjdGlvbklkXTsKLSAgICAgICAgaWYgKCFj
YWxsYmFjaykKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgZGVsZXRlIFdlYkluc3BlY3Rv
ci5EYXRhYmFzZS5lcnJvckNhbGxiYWNrc1t0cmFuc2FjdGlvbklkXTsKLSAgICAgICAgY2FsbGJh
Y2soZXJyb3JPYmopOwotICAgIH0KLX0KLQotV2ViSW5zcGVjdG9yLlJlc291cmNlTWFuYWdlci5j
cmVhdGVSZXNvdXJjZVZpZXcgPSBmdW5jdGlvbihyZXNvdXJjZSkKLXsKLSAgICBzd2l0Y2ggKHJl
c291cmNlLmNhdGVnb3J5KSB7Ci0gICAgY2FzZSBXZWJJbnNwZWN0b3IucmVzb3VyY2VDYXRlZ29y
aWVzLmRvY3VtZW50czoKLSAgICBjYXNlIFdlYkluc3BlY3Rvci5yZXNvdXJjZUNhdGVnb3JpZXMu
c3R5bGVzaGVldHM6Ci0gICAgY2FzZSBXZWJJbnNwZWN0b3IucmVzb3VyY2VDYXRlZ29yaWVzLnNj
cmlwdHM6Ci0gICAgY2FzZSBXZWJJbnNwZWN0b3IucmVzb3VyY2VDYXRlZ29yaWVzLnhocjoKLSAg
ICAgICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuU291cmNlVmlldyhyZXNvdXJjZSk7Ci0gICAg
Y2FzZSBXZWJJbnNwZWN0b3IucmVzb3VyY2VDYXRlZ29yaWVzLmltYWdlczoKLSAgICAgICAgcmV0
dXJuIG5ldyBXZWJJbnNwZWN0b3IuSW1hZ2VWaWV3KHJlc291cmNlKTsKLSAgICBjYXNlIFdlYklu
c3BlY3Rvci5yZXNvdXJjZUNhdGVnb3JpZXMuZm9udHM6Ci0gICAgICAgIHJldHVybiBuZXcgV2Vi
SW5zcGVjdG9yLkZvbnRWaWV3KHJlc291cmNlKTsKLSAgICBkZWZhdWx0OgotICAgICAgICByZXR1
cm4gbmV3IFdlYkluc3BlY3Rvci5SZXNvdXJjZVZpZXcocmVzb3VyY2UpOwotICAgIH0KLX0KLQot
V2ViSW5zcGVjdG9yLlJlc291cmNlTWFuYWdlci5yZXNvdXJjZVZpZXdUeXBlTWF0Y2hlc1Jlc291
cmNlID0gZnVuY3Rpb24ocmVzb3VyY2UpCi17Ci0gICAgdmFyIHJlc291cmNlVmlldyA9IHJlc291
cmNlLl9yZXNvdXJjZXNWaWV3OwotICAgIHN3aXRjaCAocmVzb3VyY2UuY2F0ZWdvcnkpIHsKLSAg
ICBjYXNlIFdlYkluc3BlY3Rvci5yZXNvdXJjZUNhdGVnb3JpZXMuZG9jdW1lbnRzOgotICAgIGNh
c2UgV2ViSW5zcGVjdG9yLnJlc291cmNlQ2F0ZWdvcmllcy5zdHlsZXNoZWV0czoKLSAgICBjYXNl
IFdlYkluc3BlY3Rvci5yZXNvdXJjZUNhdGVnb3JpZXMuc2NyaXB0czoKLSAgICBjYXNlIFdlYklu
c3BlY3Rvci5yZXNvdXJjZUNhdGVnb3JpZXMueGhyOgotICAgICAgICByZXR1cm4gcmVzb3VyY2VW
aWV3Ll9fcHJvdG9fXyA9PT0gV2ViSW5zcGVjdG9yLlNvdXJjZVZpZXcucHJvdG90eXBlOwotICAg
IGNhc2UgV2ViSW5zcGVjdG9yLnJlc291cmNlQ2F0ZWdvcmllcy5pbWFnZXM6Ci0gICAgICAgIHJl
dHVybiByZXNvdXJjZVZpZXcuX19wcm90b19fID09PSBXZWJJbnNwZWN0b3IuSW1hZ2VWaWV3LnBy
b3RvdHlwZTsKLSAgICBjYXNlIFdlYkluc3BlY3Rvci5yZXNvdXJjZUNhdGVnb3JpZXMuZm9udHM6
Ci0gICAgICAgIHJldHVybiByZXNvdXJjZVZpZXcuX19wcm90b19fID09PSBXZWJJbnNwZWN0b3Iu
Rm9udFZpZXcucHJvdG90eXBlOwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJldHVybiByZXNvdXJj
ZVZpZXcuX19wcm90b19fID09PSBXZWJJbnNwZWN0b3IuUmVzb3VyY2VWaWV3LnByb3RvdHlwZTsK
LSAgICB9Ci19Ci0KLVdlYkluc3BlY3Rvci5SZXNvdXJjZU1hbmFnZXIucmVzb3VyY2VWaWV3Rm9y
UmVzb3VyY2UgPSBmdW5jdGlvbihyZXNvdXJjZSkKLXsKLSAgICBpZiAoIXJlc291cmNlKQotICAg
ICAgICByZXR1cm4gbnVsbDsKLSAgICBpZiAoIXJlc291cmNlLl9yZXNvdXJjZXNWaWV3KQotICAg
ICAgICByZXNvdXJjZS5fcmVzb3VyY2VzVmlldyA9IFdlYkluc3BlY3Rvci5SZXNvdXJjZU1hbmFn
ZXIuY3JlYXRlUmVzb3VyY2VWaWV3KHJlc291cmNlKTsKLSAgICByZXR1cm4gcmVzb3VyY2UuX3Jl
c291cmNlc1ZpZXc7Ci19Ci0KLVdlYkluc3BlY3Rvci5SZXNvdXJjZU1hbmFnZXIucmVjcmVhdGVS
ZXNvdXJjZVZpZXcgPSBmdW5jdGlvbihyZXNvdXJjZSkKLXsKLSAgICB2YXIgbmV3VmlldyA9IFdl
Ykluc3BlY3Rvci5SZXNvdXJjZU1hbmFnZXIuY3JlYXRlUmVzb3VyY2VWaWV3KHJlc291cmNlKTsK
LQotICAgIHZhciBvbGRWaWV3ID0gcmVzb3VyY2UuX3Jlc291cmNlc1ZpZXc7Ci0gICAgdmFyIG9s
ZFZpZXdQYXJlbnROb2RlID0gb2xkVmlldy52aXNpYmxlID8gb2xkVmlldy5lbGVtZW50LnBhcmVu
dE5vZGUgOiBudWxsOwotICAgIHZhciBzY3JvbGxUb3AgPSBvbGRWaWV3LnNjcm9sbFRvcDsKLQot
ICAgIHJlc291cmNlLl9yZXNvdXJjZXNWaWV3LmRldGFjaCgpOwotICAgIGRlbGV0ZSByZXNvdXJj
ZS5fcmVzb3VyY2VzVmlldzsKLQotICAgIHJlc291cmNlLl9yZXNvdXJjZXNWaWV3ID0gbmV3Vmll
dzsKLQotICAgIGlmIChvbGRWaWV3UGFyZW50Tm9kZSkKLSAgICAgICAgbmV3Vmlldy5zaG93KG9s
ZFZpZXdQYXJlbnROb2RlKTsKLSAgICBpZiAoc2Nyb2xsVG9wKQotICAgICAgICBuZXdWaWV3LnNj
cm9sbFRvcCA9IHNjcm9sbFRvcDsKLQotICAgIFdlYkluc3BlY3Rvci5wYW5lbHMuc2NyaXB0cy52
aWV3UmVjcmVhdGVkKG9sZFZpZXcsIG5ld1ZpZXcpOwotICAgIHJldHVybiBuZXdWaWV3OwotfQot
Ci1XZWJJbnNwZWN0b3IuUmVzb3VyY2VNYW5hZ2VyLmV4aXN0aW5nUmVzb3VyY2VWaWV3Rm9yUmVz
b3VyY2UgPSBmdW5jdGlvbihyZXNvdXJjZSkKLXsKLSAgICBpZiAoIXJlc291cmNlKQotICAgICAg
ICByZXR1cm4gbnVsbDsKLSAgICByZXR1cm4gcmVzb3VyY2UuX3Jlc291cmNlc1ZpZXc7Ci19Ci0K
LVdlYkluc3BlY3Rvci5SZXNvdXJjZU1hbmFnZXIucmVxdWVzdENvbnRlbnQgPSBmdW5jdGlvbihy
ZXNvdXJjZSwgYmFzZTY0RW5jb2RlLCBjYWxsYmFjaykKLXsKLSAgICBJbnNwZWN0b3JCYWNrZW5k
LnJlc291cmNlQ29udGVudChyZXNvdXJjZS5sb2FkZXIuZnJhbWVJZCwgcmVzb3VyY2UudXJsLCBi
YXNlNjRFbmNvZGUsIGNhbGxiYWNrKTsKLX0KLQotV2ViSW5zcGVjdG9yLlJlc291cmNlVHJlZU1v
ZGVsID0gZnVuY3Rpb24oKQotewotICAgIHRoaXMuX3Jlc291cmNlc0J5RnJhbWVJZCA9IHt9Owot
ICAgIHRoaXMuX3N1YmZyYW1lcyA9IHt9OwotfQotCi1XZWJJbnNwZWN0b3IuUmVzb3VyY2VUcmVl
TW9kZWwucHJvdG90eXBlID0gewotICAgIGFkZE9yVXBkYXRlRnJhbWU6IGZ1bmN0aW9uKGZyYW1l
KQotICAgIHsKLSAgICAgICAgdmFyIHRtcFJlc291cmNlID0gbmV3IFdlYkluc3BlY3Rvci5SZXNv
dXJjZShudWxsLCBmcmFtZS51cmwpOwotICAgICAgICBXZWJJbnNwZWN0b3IucGFuZWxzLnJlc291
cmNlcy5hZGRPclVwZGF0ZUZyYW1lKGZyYW1lLnBhcmVudElkLCBmcmFtZS5pZCwgZnJhbWUubmFt
ZSwgdG1wUmVzb3VyY2UuZGlzcGxheU5hbWUpOwotICAgICAgICB2YXIgc3ViZnJhbWVzID0gdGhp
cy5fc3ViZnJhbWVzW2ZyYW1lLnBhcmVudElkXTsKLSAgICAgICAgaWYgKCFzdWJmcmFtZXMpIHsK
LSAgICAgICAgICAgIHN1YmZyYW1lcyA9IHt9OwotICAgICAgICAgICAgdGhpcy5fc3ViZnJhbWVz
W2ZyYW1lLnBhcmVudElkIHx8IDBdID0gc3ViZnJhbWVzOwotICAgICAgICB9Ci0gICAgICAgIHN1
YmZyYW1lc1tmcmFtZS5pZF0gPSB0cnVlOwotICAgIH0sCi0KLSAgICBkaWRDb21taXRMb2FkRm9y
RnJhbWU6IGZ1bmN0aW9uKGZyYW1lLCBsb2FkZXIpCi0gICAgewotICAgICAgICAvLyBmcmFtZS5w
YXJlbnRJZCA9PT0gMCBpcyB3aGVuIG1haW4gZnJhbWUgbmF2aWdhdGlvbiBoYXBwZW5zLgotICAg
ICAgICB0aGlzLl9jbGVhckNoaWxkRnJhbWVzQW5kUmVzb3VyY2VzKGZyYW1lLnBhcmVudElkID8g
ZnJhbWUuaWQgOiAwLCBsb2FkZXIubG9hZGVySWQpOwotCi0gICAgICAgIHRoaXMuYWRkT3JVcGRh
dGVGcmFtZShmcmFtZSk7Ci0KLSAgICAgICAgdmFyIHJlc291cmNlc0ZvckZyYW1lID0gdGhpcy5f
cmVzb3VyY2VzQnlGcmFtZUlkW2ZyYW1lLmlkXTsKLSAgICAgICAgZm9yICh2YXIgaSA9IDA7IHJl
c291cmNlc0ZvckZyYW1lICYmIGkgPCByZXNvdXJjZXNGb3JGcmFtZS5sZW5ndGg7ICsraSkKLSAg
ICAgICAgICAgIFdlYkluc3BlY3Rvci5wYW5lbHMucmVzb3VyY2VzLmFkZFJlc291cmNlVG9GcmFt
ZShmcmFtZS5pZCwgcmVzb3VyY2VzRm9yRnJhbWVbaV0pOwotICAgIH0sCi0KLSAgICBmcmFtZURl
dGFjaGVkRnJvbVBhcmVudDogZnVuY3Rpb24oZnJhbWVJZCkKLSAgICB7Ci0gICAgICAgIHRoaXMu
X2NsZWFyQ2hpbGRGcmFtZXNBbmRSZXNvdXJjZXMoZnJhbWVJZCwgMCk7Ci0gICAgICAgIFdlYklu
c3BlY3Rvci5wYW5lbHMucmVzb3VyY2VzLnJlbW92ZUZyYW1lKGZyYW1lSWQpOwotICAgIH0sCi0K
LSAgICBfY2xlYXJDaGlsZEZyYW1lc0FuZFJlc291cmNlczogZnVuY3Rpb24oZnJhbWVJZCwgbG9h
ZGVySWQpCi0gICAgewotICAgICAgICBXZWJJbnNwZWN0b3IucGFuZWxzLnJlc291cmNlcy5yZW1v
dmVSZXNvdXJjZXNGcm9tRnJhbWUoZnJhbWVJZCk7Ci0KLSAgICAgICAgdGhpcy5fY2xlYXJSZXNv
dXJjZXMoZnJhbWVJZCwgbG9hZGVySWQpOwotICAgICAgICB2YXIgc3ViZnJhbWVzID0gdGhpcy5f
c3ViZnJhbWVzW2ZyYW1lSWRdOwotICAgICAgICBpZiAoIXN1YmZyYW1lcykKLSAgICAgICAgICAg
IHJldHVybjsKLQotICAgICAgICBmb3IgKHZhciBjaGlsZEZyYW1lSWQgaW4gc3ViZnJhbWVzKSB7
Ci0gICAgICAgICAgICBXZWJJbnNwZWN0b3IucGFuZWxzLnJlc291cmNlcy5yZW1vdmVGcmFtZShj
aGlsZEZyYW1lSWQpOwotICAgICAgICAgICAgdGhpcy5fY2xlYXJDaGlsZEZyYW1lc0FuZFJlc291
cmNlcyhjaGlsZEZyYW1lSWQsIGxvYWRlcklkKTsKLSAgICAgICAgfQotICAgICAgICBkZWxldGUg
dGhpcy5fc3ViZnJhbWVzW2ZyYW1lSWRdOwotICAgIH0sCi0KLSAgICBhZGRSZXNvdXJjZVRvRnJh
bWU6IGZ1bmN0aW9uKGZyYW1lSWQsIHJlc291cmNlKQotICAgIHsKLSAgICAgICAgdmFyIHJlc291
cmNlc0ZvckZyYW1lID0gdGhpcy5fcmVzb3VyY2VzQnlGcmFtZUlkW2ZyYW1lSWRdOwotICAgICAg
ICBpZiAoIXJlc291cmNlc0ZvckZyYW1lKSB7Ci0gICAgICAgICAgICByZXNvdXJjZXNGb3JGcmFt
ZSA9IFtdOwotICAgICAgICAgICAgdGhpcy5fcmVzb3VyY2VzQnlGcmFtZUlkW2ZyYW1lSWRdID0g
cmVzb3VyY2VzRm9yRnJhbWU7Ci0gICAgICAgIH0KLSAgICAgICAgcmVzb3VyY2VzRm9yRnJhbWUu
cHVzaChyZXNvdXJjZSk7Ci0KLSAgICAgICAgV2ViSW5zcGVjdG9yLnBhbmVscy5yZXNvdXJjZXMu
YWRkUmVzb3VyY2VUb0ZyYW1lKGZyYW1lSWQsIHJlc291cmNlKTsKLSAgICB9LAotCi0gICAgX2Ns
ZWFyUmVzb3VyY2VzOiBmdW5jdGlvbihmcmFtZUlkLCBsb2FkZXJUb1ByZXNlcnZlSWQpCi0gICAg
ewotICAgICAgICB2YXIgcmVzb3VyY2VzRm9yRnJhbWUgPSB0aGlzLl9yZXNvdXJjZXNCeUZyYW1l
SWRbZnJhbWVJZF07Ci0gICAgICAgIGlmICghcmVzb3VyY2VzRm9yRnJhbWUpCi0gICAgICAgICAg
ICByZXR1cm47Ci0KLSAgICAgICAgdmFyIHByZXNlcnZlZFJlc291cmNlc0ZvckZyYW1lID0gW107
Ci0gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcmVzb3VyY2VzRm9yRnJhbWUubGVuZ3RoOyAr
K2kpIHsKLSAgICAgICAgICAgIHZhciByZXNvdXJjZSA9IHJlc291cmNlc0ZvckZyYW1lW2ldOwot
ICAgICAgICAgICAgaWYgKHJlc291cmNlLmxvYWRlci5sb2FkZXJJZCA9PT0gbG9hZGVyVG9QcmVz
ZXJ2ZUlkKSB7Ci0gICAgICAgICAgICAgICAgcHJlc2VydmVkUmVzb3VyY2VzRm9yRnJhbWUucHVz
aChyZXNvdXJjZSk7Ci0gICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgICAgICBXZWJJbnNwZWN0b3IucmVzb3VyY2VNYW5hZ2VyLl91bmJpbmRSZXNvdXJjZVVS
TChyZXNvdXJjZSk7Ci0gICAgICAgIH0KLQotICAgICAgICBkZWxldGUgdGhpcy5fcmVzb3VyY2Vz
QnlGcmFtZUlkW2ZyYW1lSWRdOwotICAgICAgICBpZiAocHJlc2VydmVkUmVzb3VyY2VzRm9yRnJh
bWUubGVuZ3RoKQotICAgICAgICAgICAgdGhpcy5fcmVzb3VyY2VzQnlGcmFtZUlkW2ZyYW1lSWRd
ID0gcHJlc2VydmVkUmVzb3VyY2VzRm9yRnJhbWU7Ci0gICAgfSwKLQotICAgIGZvckFsbFJlc291
cmNlczogZnVuY3Rpb24oY2FsbGJhY2spCi0gICAgewotICAgICAgICB0aGlzLl9jYWxsRm9yRnJh
bWVSZXNvdXJjZXMoMCwgY2FsbGJhY2spOwotICAgIH0sCi0KLSAgICBfY2FsbEZvckZyYW1lUmVz
b3VyY2VzOiBmdW5jdGlvbihmcmFtZUlkLCBjYWxsYmFjaykKLSAgICB7Ci0gICAgICAgIHZhciBy
ZXNvdXJjZXMgPSB0aGlzLl9yZXNvdXJjZXNCeUZyYW1lSWRbZnJhbWVJZF07Ci0gICAgICAgIGZv
ciAodmFyIGkgPSAwOyByZXNvdXJjZXMgJiYgaSA8IHJlc291cmNlcy5sZW5ndGg7ICsraSkgewot
ICAgICAgICAgICAgaWYgKGNhbGxiYWNrKHJlc291cmNlc1tpXSkpCi0gICAgICAgICAgICAgICAg
cmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIHZhciBmcmFtZXMgPSB0
aGlzLl9zdWJmcmFtZXNbZnJhbWVJZF07Ci0gICAgICAgIGlmIChmcmFtZXMpIHsKLSAgICAgICAg
ICAgIGZvciAodmFyIGlkIGluIGZyYW1lcykgewotICAgICAgICAgICAgICAgIGlmICh0aGlzLl9j
YWxsRm9yRnJhbWVSZXNvdXJjZXMoaWQsIGNhbGxiYWNrKSkKLSAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIHRydWU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgIH0KLX0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9S
ZXNvdXJjZVRyZWVNb2RlbC5qcyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJj
ZVRyZWVNb2RlbC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMjQ1OGY4
Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNl
VHJlZU1vZGVsLmpzCkBAIC0wLDAgKzEsMjYwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEw
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAq
IE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAq
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp
dHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhF
IENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAq
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworCitXZWJJbnNwZWN0b3IuUmVzb3VyY2VUcmVl
TW9kZWwgPSBmdW5jdGlvbigpCit7CisgICAgdGhpcy5fcmVzb3VyY2VzQnlVUkwgPSB7fTsKKyAg
ICB0aGlzLl9yZXNvdXJjZXNCeUZyYW1lSWQgPSB7fTsKKyAgICB0aGlzLl9zdWJmcmFtZXMgPSB7
fTsKKyAgICBJbnNwZWN0b3JCYWNrZW5kLnJlZ2lzdGVyRG9tYWluRGlzcGF0Y2hlcigiUmVzb3Vy
Y2VzIiwgdGhpcyk7CisgICAgSW5zcGVjdG9yQmFja2VuZC5jYWNoZWRSZXNvdXJjZXModGhpcy5f
cHJvY2Vzc0NhY2hlZFJlc291cmNlcy5iaW5kKHRoaXMpKTsKK30KKworV2ViSW5zcGVjdG9yLlJl
c291cmNlVHJlZU1vZGVsLnByb3RvdHlwZSA9IHsKKyAgICBhZGRPclVwZGF0ZUZyYW1lOiBmdW5j
dGlvbihmcmFtZSkKKyAgICB7CisgICAgICAgIHZhciB0bXBSZXNvdXJjZSA9IG5ldyBXZWJJbnNw
ZWN0b3IuUmVzb3VyY2UobnVsbCwgZnJhbWUudXJsKTsKKyAgICAgICAgV2ViSW5zcGVjdG9yLnBh
bmVscy5yZXNvdXJjZXMuYWRkT3JVcGRhdGVGcmFtZShmcmFtZS5wYXJlbnRJZCwgZnJhbWUuaWQs
IGZyYW1lLm5hbWUsIHRtcFJlc291cmNlLmRpc3BsYXlOYW1lKTsKKyAgICAgICAgdmFyIHN1YmZy
YW1lcyA9IHRoaXMuX3N1YmZyYW1lc1tmcmFtZS5wYXJlbnRJZF07CisgICAgICAgIGlmICghc3Vi
ZnJhbWVzKSB7CisgICAgICAgICAgICBzdWJmcmFtZXMgPSB7fTsKKyAgICAgICAgICAgIHRoaXMu
X3N1YmZyYW1lc1tmcmFtZS5wYXJlbnRJZCB8fCAwXSA9IHN1YmZyYW1lczsKKyAgICAgICAgfQor
ICAgICAgICBzdWJmcmFtZXNbZnJhbWUuaWRdID0gdHJ1ZTsKKyAgICB9LAorCisgICAgZGlkQ29t
bWl0TG9hZEZvckZyYW1lOiBmdW5jdGlvbihmcmFtZSwgbG9hZGVyKQorICAgIHsKKyAgICAgICAg
Ly8gZnJhbWUucGFyZW50SWQgPT09IDAgaXMgd2hlbiBtYWluIGZyYW1lIG5hdmlnYXRpb24gaGFw
cGVucy4KKyAgICAgICAgdGhpcy5fY2xlYXJDaGlsZEZyYW1lc0FuZFJlc291cmNlcyhmcmFtZS5w
YXJlbnRJZCA/IGZyYW1lLmlkIDogMCwgbG9hZGVyLmxvYWRlcklkKTsKKworICAgICAgICB0aGlz
LmFkZE9yVXBkYXRlRnJhbWUoZnJhbWUpOworCisgICAgICAgIHZhciByZXNvdXJjZXNGb3JGcmFt
ZSA9IHRoaXMuX3Jlc291cmNlc0J5RnJhbWVJZFtmcmFtZS5pZF07CisgICAgICAgIGZvciAodmFy
IGkgPSAwOyByZXNvdXJjZXNGb3JGcmFtZSAmJiBpIDwgcmVzb3VyY2VzRm9yRnJhbWUubGVuZ3Ro
OyArK2kpCisgICAgICAgICAgICBXZWJJbnNwZWN0b3IucGFuZWxzLnJlc291cmNlcy5hZGRSZXNv
dXJjZVRvRnJhbWUoZnJhbWUuaWQsIHJlc291cmNlc0ZvckZyYW1lW2ldKTsKKyAgICB9LAorCisg
ICAgZnJhbWVEZXRhY2hlZEZyb21QYXJlbnQ6IGZ1bmN0aW9uKGZyYW1lSWQpCisgICAgeworICAg
ICAgICB0aGlzLl9jbGVhckNoaWxkRnJhbWVzQW5kUmVzb3VyY2VzKGZyYW1lSWQsIDApOworICAg
ICAgICBXZWJJbnNwZWN0b3IucGFuZWxzLnJlc291cmNlcy5yZW1vdmVGcmFtZShmcmFtZUlkKTsK
KyAgICB9LAorCisgICAgX2NsZWFyQ2hpbGRGcmFtZXNBbmRSZXNvdXJjZXM6IGZ1bmN0aW9uKGZy
YW1lSWQsIGxvYWRlcklkKQorICAgIHsKKyAgICAgICAgV2ViSW5zcGVjdG9yLnBhbmVscy5yZXNv
dXJjZXMucmVtb3ZlUmVzb3VyY2VzRnJvbUZyYW1lKGZyYW1lSWQpOworCisgICAgICAgIHRoaXMu
X2NsZWFyUmVzb3VyY2VzKGZyYW1lSWQsIGxvYWRlcklkKTsKKyAgICAgICAgdmFyIHN1YmZyYW1l
cyA9IHRoaXMuX3N1YmZyYW1lc1tmcmFtZUlkXTsKKyAgICAgICAgaWYgKCFzdWJmcmFtZXMpCisg
ICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgZm9yICh2YXIgY2hpbGRGcmFtZUlkIGluIHN1
YmZyYW1lcykgeworICAgICAgICAgICAgV2ViSW5zcGVjdG9yLnBhbmVscy5yZXNvdXJjZXMucmVt
b3ZlRnJhbWUoY2hpbGRGcmFtZUlkKTsKKyAgICAgICAgICAgIHRoaXMuX2NsZWFyQ2hpbGRGcmFt
ZXNBbmRSZXNvdXJjZXMoY2hpbGRGcmFtZUlkLCBsb2FkZXJJZCk7CisgICAgICAgIH0KKyAgICAg
ICAgZGVsZXRlIHRoaXMuX3N1YmZyYW1lc1tmcmFtZUlkXTsKKyAgICB9LAorCisgICAgYWRkUmVz
b3VyY2VUb0ZyYW1lOiBmdW5jdGlvbihmcmFtZUlkLCByZXNvdXJjZSkKKyAgICB7CisgICAgICAg
IHZhciByZXNvdXJjZXNGb3JGcmFtZSA9IHRoaXMuX3Jlc291cmNlc0J5RnJhbWVJZFtmcmFtZUlk
XTsKKyAgICAgICAgaWYgKCFyZXNvdXJjZXNGb3JGcmFtZSkgeworICAgICAgICAgICAgcmVzb3Vy
Y2VzRm9yRnJhbWUgPSBbXTsKKyAgICAgICAgICAgIHRoaXMuX3Jlc291cmNlc0J5RnJhbWVJZFtm
cmFtZUlkXSA9IHJlc291cmNlc0ZvckZyYW1lOworICAgICAgICB9CisgICAgICAgIHJlc291cmNl
c0ZvckZyYW1lLnB1c2gocmVzb3VyY2UpOworCisgICAgICAgIFdlYkluc3BlY3Rvci5wYW5lbHMu
cmVzb3VyY2VzLmFkZFJlc291cmNlVG9GcmFtZShmcmFtZUlkLCByZXNvdXJjZSk7CisgICAgfSwK
KworICAgIF9jbGVhclJlc291cmNlczogZnVuY3Rpb24oZnJhbWVJZCwgbG9hZGVyVG9QcmVzZXJ2
ZUlkKQorICAgIHsKKyAgICAgICAgdmFyIHJlc291cmNlc0ZvckZyYW1lID0gdGhpcy5fcmVzb3Vy
Y2VzQnlGcmFtZUlkW2ZyYW1lSWRdOworICAgICAgICBpZiAoIXJlc291cmNlc0ZvckZyYW1lKQor
ICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHZhciBwcmVzZXJ2ZWRSZXNvdXJjZXNGb3JG
cmFtZSA9IFtdOworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHJlc291cmNlc0ZvckZyYW1l
Lmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICB2YXIgcmVzb3VyY2UgPSByZXNvdXJjZXNGb3JG
cmFtZVtpXTsKKyAgICAgICAgICAgIGlmIChyZXNvdXJjZS5sb2FkZXIubG9hZGVySWQgPT09IGxv
YWRlclRvUHJlc2VydmVJZCkgeworICAgICAgICAgICAgICAgIHByZXNlcnZlZFJlc291cmNlc0Zv
ckZyYW1lLnB1c2gocmVzb3VyY2UpOworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgdGhpcy5fdW5iaW5kUmVzb3VyY2VVUkwocmVzb3VyY2UpOwor
ICAgICAgICB9CisKKyAgICAgICAgZGVsZXRlIHRoaXMuX3Jlc291cmNlc0J5RnJhbWVJZFtmcmFt
ZUlkXTsKKyAgICAgICAgaWYgKHByZXNlcnZlZFJlc291cmNlc0ZvckZyYW1lLmxlbmd0aCkKKyAg
ICAgICAgICAgIHRoaXMuX3Jlc291cmNlc0J5RnJhbWVJZFtmcmFtZUlkXSA9IHByZXNlcnZlZFJl
c291cmNlc0ZvckZyYW1lOworICAgIH0sCisKKyAgICBmb3JBbGxSZXNvdXJjZXM6IGZ1bmN0aW9u
KGNhbGxiYWNrKQorICAgIHsKKyAgICAgICAgdGhpcy5fY2FsbEZvckZyYW1lUmVzb3VyY2VzKDAs
IGNhbGxiYWNrKTsKKyAgICB9LAorCisgICAgYWRkQ29uc29sZU1lc3NhZ2U6IGZ1bmN0aW9uKG1z
ZykKKyAgICB7CisgICAgICAgIHZhciByZXNvdXJjZSA9IHRoaXMucmVzb3VyY2VGb3JVUkwobXNn
LnVybCk7CisgICAgICAgIGlmICghcmVzb3VyY2UpCisgICAgICAgICAgICByZXR1cm47CisKKyAg
ICAgICAgc3dpdGNoIChtc2cubGV2ZWwpIHsKKyAgICAgICAgY2FzZSBXZWJJbnNwZWN0b3IuQ29u
c29sZU1lc3NhZ2UuTWVzc2FnZUxldmVsLldhcm5pbmc6CisgICAgICAgICAgICByZXNvdXJjZS53
YXJuaW5ncyArPSBtc2cucmVwZWF0RGVsdGE7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
Y2FzZSBXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2UuTWVzc2FnZUxldmVsLkVycm9yOgorICAg
ICAgICAgICAgcmVzb3VyY2UuZXJyb3JzICs9IG1zZy5yZXBlYXREZWx0YTsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgdmFyIHZpZXcgPSBXZWJJbnNwZWN0b3IuUmVz
b3VyY2VWaWV3LnJlc291cmNlVmlld0ZvclJlc291cmNlKHJlc291cmNlKTsKKyAgICAgICAgaWYg
KHZpZXcuYWRkTWVzc2FnZSkKKyAgICAgICAgICAgIHZpZXcuYWRkTWVzc2FnZShtc2cpOworICAg
IH0sCisKKyAgICBjbGVhckNvbnNvbGVNZXNzYWdlczogZnVuY3Rpb24oKQorICAgIHsKKyAgICAg
ICAgZnVuY3Rpb24gY2FsbGJhY2socmVzb3VyY2UpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJl
c291cmNlLmNsZWFyRXJyb3JzQW5kV2FybmluZ3MoKTsKKyAgICAgICAgfQorICAgICAgICB0aGlz
LmZvckFsbFJlc291cmNlcyhjYWxsYmFjayk7CisgICAgfSwKKworICAgIF9jYWxsRm9yRnJhbWVS
ZXNvdXJjZXM6IGZ1bmN0aW9uKGZyYW1lSWQsIGNhbGxiYWNrKQorICAgIHsKKyAgICAgICAgdmFy
IHJlc291cmNlcyA9IHRoaXMuX3Jlc291cmNlc0J5RnJhbWVJZFtmcmFtZUlkXTsKKyAgICAgICAg
Zm9yICh2YXIgaSA9IDA7IHJlc291cmNlcyAmJiBpIDwgcmVzb3VyY2VzLmxlbmd0aDsgKytpKSB7
CisgICAgICAgICAgICBpZiAoY2FsbGJhY2socmVzb3VyY2VzW2ldKSkKKyAgICAgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgdmFyIGZyYW1lcyA9
IHRoaXMuX3N1YmZyYW1lc1tmcmFtZUlkXTsKKyAgICAgICAgaWYgKGZyYW1lcykgeworICAgICAg
ICAgICAgZm9yICh2YXIgaWQgaW4gZnJhbWVzKSB7CisgICAgICAgICAgICAgICAgaWYgKHRoaXMu
X2NhbGxGb3JGcmFtZVJlc291cmNlcyhpZCwgY2FsbGJhY2spKQorICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgfSwKKworICAgIHJlc291cmNlRm9yVVJMOiBmdW5jdGlvbih1cmwpCisgICAg
eworICAgICAgICAvLyBGSVhNRTogcmVjZWl2ZSBmcmFtZUlkIGhlcmUuCisgICAgICAgIHZhciBl
bnRyeSA9IHRoaXMuX3Jlc291cmNlc0J5VVJMW3VybF07CisgICAgICAgIGlmIChlbnRyeSBpbnN0
YW5jZW9mIEFycmF5KQorICAgICAgICAgICAgcmV0dXJuIGVudHJ5WzBdOworICAgICAgICByZXR1
cm4gZW50cnk7CisgICAgfSwKKworICAgIGJpbmRSZXNvdXJjZVVSTDogZnVuY3Rpb24ocmVzb3Vy
Y2UpCisgICAgeworICAgICAgICB2YXIgcmVzb3VyY2VGb3JVUkwgPSB0aGlzLl9yZXNvdXJjZXNC
eVVSTFtyZXNvdXJjZS51cmxdOworICAgICAgICBpZiAoIXJlc291cmNlRm9yVVJMKQorICAgICAg
ICAgICAgdGhpcy5fcmVzb3VyY2VzQnlVUkxbcmVzb3VyY2UudXJsXSA9IHJlc291cmNlOworICAg
ICAgICBlbHNlIGlmIChyZXNvdXJjZUZvclVSTCBpbnN0YW5jZW9mIEFycmF5KQorICAgICAgICAg
ICAgcmVzb3VyY2VGb3JVUkwucHVzaChyZXNvdXJjZSk7CisgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgIHRoaXMuX3Jlc291cmNlc0J5VVJMW3Jlc291cmNlLnVybF0gPSBbcmVzb3VyY2VGb3JVUkws
IHJlc291cmNlXTsKKyAgICB9LAorCisgICAgX3VuYmluZFJlc291cmNlVVJMOiBmdW5jdGlvbihy
ZXNvdXJjZSkKKyAgICB7CisgICAgICAgIHZhciByZXNvdXJjZUZvclVSTCA9IHRoaXMuX3Jlc291
cmNlc0J5VVJMW3Jlc291cmNlLnVybF07CisgICAgICAgIGlmICghcmVzb3VyY2VGb3JVUkwpCisg
ICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgaWYgKHJlc291cmNlRm9yVVJMIGluc3RhbmNl
b2YgQXJyYXkpIHsKKyAgICAgICAgICAgIHJlc291cmNlRm9yVVJMLnJlbW92ZShyZXNvdXJjZSwg
dHJ1ZSk7CisgICAgICAgICAgICBpZiAocmVzb3VyY2VGb3JVUkwubGVuZ3RoID09PSAxKQorICAg
ICAgICAgICAgICAgIHRoaXMuX3Jlc291cmNlc0J5VVJMW3Jlc291cmNlLnVybF0gPSByZXNvdXJj
ZUZvclVSTFswXTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGRl
bGV0ZSB0aGlzLl9yZXNvdXJjZXNCeVVSTFtyZXNvdXJjZS51cmxdOworICAgIH0sCisKKyAgICBf
cHJvY2Vzc0NhY2hlZFJlc291cmNlczogZnVuY3Rpb24obWFpbkZyYW1lUGF5bG9hZCkKKyAgICB7
CisgICAgICAgIHZhciBtYWluUmVzb3VyY2UgPSB0aGlzLl9hZGRGcmFtZXNSZWN1cnNpdmVseSht
YWluRnJhbWVQYXlsb2FkKTsKKyAgICAgICAgV2ViSW5zcGVjdG9yLm1haW5SZXNvdXJjZSA9IG1h
aW5SZXNvdXJjZTsKKyAgICAgICAgbWFpblJlc291cmNlLmlzTWFpblJlc291cmNlID0gdHJ1ZTsK
KyAgICB9LAorCisgICAgX2FkZEZyYW1lc1JlY3Vyc2l2ZWx5OiBmdW5jdGlvbihmcmFtZVBheWxv
YWQpCisgICAgeworICAgICAgICB2YXIgZnJhbWVSZXNvdXJjZSA9IFdlYkluc3BlY3Rvci5SZXNv
dXJjZVRyZWVNb2RlbC5jcmVhdGVSZXNvdXJjZShudWxsLCBmcmFtZVBheWxvYWQucmVzb3VyY2Uu
dXJsLCBmcmFtZVBheWxvYWQucmVzb3VyY2UubG9hZGVyKTsKKyAgICAgICAgV2ViSW5zcGVjdG9y
Lk5ldHdvcmtNYW5hZ2VyLnVwZGF0ZVJlc291cmNlV2l0aFJlcXVlc3QoZnJhbWVSZXNvdXJjZSwg
ZnJhbWVQYXlsb2FkLnJlc291cmNlLnJlcXVlc3QpOworICAgICAgICBXZWJJbnNwZWN0b3IuTmV0
d29ya01hbmFnZXIudXBkYXRlUmVzb3VyY2VXaXRoUmVzcG9uc2UoZnJhbWVSZXNvdXJjZSwgZnJh
bWVQYXlsb2FkLnJlc291cmNlLnJlc3BvbnNlKTsKKyAgICAgICAgZnJhbWVSZXNvdXJjZS50eXBl
ID0gV2ViSW5zcGVjdG9yLlJlc291cmNlLlR5cGVbIkRvY3VtZW50Il07CisgICAgICAgIGZyYW1l
UmVzb3VyY2UuZmluaXNoZWQgPSB0cnVlOworCisgICAgICAgIHRoaXMuYmluZFJlc291cmNlVVJM
KGZyYW1lUmVzb3VyY2UpOworICAgICAgICB0aGlzLmFkZE9yVXBkYXRlRnJhbWUoZnJhbWVQYXls
b2FkKTsKKyAgICAgICAgdGhpcy5hZGRSZXNvdXJjZVRvRnJhbWUoZnJhbWVQYXlsb2FkLmlkLCBm
cmFtZVJlc291cmNlKTsKKworICAgICAgICBmb3IgKHZhciBpID0gMDsgZnJhbWVQYXlsb2FkLmNo
aWxkcmVuICYmIGkgPCBmcmFtZVBheWxvYWQuY2hpbGRyZW4ubGVuZ3RoOyArK2kpCisgICAgICAg
ICAgICB0aGlzLl9hZGRGcmFtZXNSZWN1cnNpdmVseShmcmFtZVBheWxvYWQuY2hpbGRyZW5baV0p
OworCisgICAgICAgIGlmICghZnJhbWVQYXlsb2FkLnN1YnJlc291cmNlcykKKyAgICAgICAgICAg
IHJldHVybjsKKworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGZyYW1lUGF5bG9hZC5zdWJy
ZXNvdXJjZXMubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgIHZhciBjYWNoZWRSZXNvdXJjZSA9
IGZyYW1lUGF5bG9hZC5zdWJyZXNvdXJjZXNbaV07CisgICAgICAgICAgICB2YXIgcmVzb3VyY2Ug
PSBXZWJJbnNwZWN0b3IuUmVzb3VyY2VUcmVlTW9kZWwuY3JlYXRlUmVzb3VyY2UobnVsbCwgY2Fj
aGVkUmVzb3VyY2UudXJsLCBjYWNoZWRSZXNvdXJjZS5sb2FkZXIpOworICAgICAgICAgICAgV2Vi
SW5zcGVjdG9yLk5ldHdvcmtNYW5hZ2VyLnVwZGF0ZVJlc291cmNlV2l0aENhY2hlZFJlc291cmNl
KHJlc291cmNlLCBjYWNoZWRSZXNvdXJjZSk7CisgICAgICAgICAgICByZXNvdXJjZS5maW5pc2hl
ZCA9IHRydWU7CisgICAgICAgICAgICB0aGlzLmJpbmRSZXNvdXJjZVVSTChyZXNvdXJjZSk7Cisg
ICAgICAgICAgICB0aGlzLmFkZFJlc291cmNlVG9GcmFtZShmcmFtZVBheWxvYWQuaWQsIHJlc291
cmNlKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gZnJhbWVSZXNvdXJjZTsKKyAgICB9LAor
CisgICAgZnJhbWVEZXRhY2hlZEZyb21QYXJlbnQ6IGZ1bmN0aW9uKGZyYW1lSWQpCisgICAgewor
ICAgICAgICB0aGlzLl9yZXNvdXJjZVRyZWVNb2RlbC5mcmFtZURldGFjaGVkRnJvbVBhcmVudChm
cmFtZUlkKTsKKyAgICB9Cit9CisKK1dlYkluc3BlY3Rvci5SZXNvdXJjZVRyZWVNb2RlbC5jcmVh
dGVSZXNvdXJjZSA9IGZ1bmN0aW9uKGlkZW50aWZpZXIsIHVybCwgbG9hZGVyLCBzdGFja1RyYWNl
KQoreworICAgIHZhciByZXNvdXJjZSA9IG5ldyBXZWJJbnNwZWN0b3IuUmVzb3VyY2UoaWRlbnRp
ZmllciwgdXJsKTsKKyAgICByZXNvdXJjZS5sb2FkZXIgPSBsb2FkZXI7CisgICAgaWYgKGxvYWRl
cikKKyAgICAgICAgcmVzb3VyY2UuZG9jdW1lbnRVUkwgPSBsb2FkZXIudXJsOworICAgIHJlc291
cmNlLnN0YWNrVHJhY2UgPSBzdGFja1RyYWNlOworCisgICAgcmV0dXJuIHJlc291cmNlOworfSwK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZVZpZXcuanMg
Yi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VWaWV3LmpzCmluZGV4IGEyODRk
YTEuLmI2OTA5N2QgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNv
dXJjZVZpZXcuanMKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlVmll
dy5qcwpAQCAtNDIsMyArNDIsNzYgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlVmlldy5wcm90b3R5
cGUgPSB7CiB9CiAKIFdlYkluc3BlY3Rvci5SZXNvdXJjZVZpZXcucHJvdG90eXBlLl9fcHJvdG9f
XyA9IFdlYkluc3BlY3Rvci5WaWV3LnByb3RvdHlwZTsKKworV2ViSW5zcGVjdG9yLlJlc291cmNl
Vmlldy5jcmVhdGVSZXNvdXJjZVZpZXcgPSBmdW5jdGlvbihyZXNvdXJjZSkKK3sKKyAgICBzd2l0
Y2ggKHJlc291cmNlLmNhdGVnb3J5KSB7CisgICAgY2FzZSBXZWJJbnNwZWN0b3IucmVzb3VyY2VD
YXRlZ29yaWVzLmRvY3VtZW50czoKKyAgICBjYXNlIFdlYkluc3BlY3Rvci5yZXNvdXJjZUNhdGVn
b3JpZXMuc3R5bGVzaGVldHM6CisgICAgY2FzZSBXZWJJbnNwZWN0b3IucmVzb3VyY2VDYXRlZ29y
aWVzLnNjcmlwdHM6CisgICAgY2FzZSBXZWJJbnNwZWN0b3IucmVzb3VyY2VDYXRlZ29yaWVzLnho
cjoKKyAgICAgICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuU291cmNlVmlldyhyZXNvdXJjZSk7
CisgICAgY2FzZSBXZWJJbnNwZWN0b3IucmVzb3VyY2VDYXRlZ29yaWVzLmltYWdlczoKKyAgICAg
ICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuSW1hZ2VWaWV3KHJlc291cmNlKTsKKyAgICBjYXNl
IFdlYkluc3BlY3Rvci5yZXNvdXJjZUNhdGVnb3JpZXMuZm9udHM6CisgICAgICAgIHJldHVybiBu
ZXcgV2ViSW5zcGVjdG9yLkZvbnRWaWV3KHJlc291cmNlKTsKKyAgICBkZWZhdWx0OgorICAgICAg
ICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5SZXNvdXJjZVZpZXcocmVzb3VyY2UpOworICAgIH0K
K30KKworV2ViSW5zcGVjdG9yLlJlc291cmNlVmlldy5yZXNvdXJjZVZpZXdUeXBlTWF0Y2hlc1Jl
c291cmNlID0gZnVuY3Rpb24ocmVzb3VyY2UpCit7CisgICAgdmFyIHJlc291cmNlVmlldyA9IHJl
c291cmNlLl9yZXNvdXJjZXNWaWV3OworICAgIHN3aXRjaCAocmVzb3VyY2UuY2F0ZWdvcnkpIHsK
KyAgICBjYXNlIFdlYkluc3BlY3Rvci5yZXNvdXJjZUNhdGVnb3JpZXMuZG9jdW1lbnRzOgorICAg
IGNhc2UgV2ViSW5zcGVjdG9yLnJlc291cmNlQ2F0ZWdvcmllcy5zdHlsZXNoZWV0czoKKyAgICBj
YXNlIFdlYkluc3BlY3Rvci5yZXNvdXJjZUNhdGVnb3JpZXMuc2NyaXB0czoKKyAgICBjYXNlIFdl
Ykluc3BlY3Rvci5yZXNvdXJjZUNhdGVnb3JpZXMueGhyOgorICAgICAgICByZXR1cm4gcmVzb3Vy
Y2VWaWV3Ll9fcHJvdG9fXyA9PT0gV2ViSW5zcGVjdG9yLlNvdXJjZVZpZXcucHJvdG90eXBlOwor
ICAgIGNhc2UgV2ViSW5zcGVjdG9yLnJlc291cmNlQ2F0ZWdvcmllcy5pbWFnZXM6CisgICAgICAg
IHJldHVybiByZXNvdXJjZVZpZXcuX19wcm90b19fID09PSBXZWJJbnNwZWN0b3IuSW1hZ2VWaWV3
LnByb3RvdHlwZTsKKyAgICBjYXNlIFdlYkluc3BlY3Rvci5yZXNvdXJjZUNhdGVnb3JpZXMuZm9u
dHM6CisgICAgICAgIHJldHVybiByZXNvdXJjZVZpZXcuX19wcm90b19fID09PSBXZWJJbnNwZWN0
b3IuRm9udFZpZXcucHJvdG90eXBlOworICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiByZXNv
dXJjZVZpZXcuX19wcm90b19fID09PSBXZWJJbnNwZWN0b3IuUmVzb3VyY2VWaWV3LnByb3RvdHlw
ZTsKKyAgICB9Cit9CisKK1dlYkluc3BlY3Rvci5SZXNvdXJjZVZpZXcucmVzb3VyY2VWaWV3Rm9y
UmVzb3VyY2UgPSBmdW5jdGlvbihyZXNvdXJjZSkKK3sKKyAgICBpZiAoIXJlc291cmNlKQorICAg
ICAgICByZXR1cm4gbnVsbDsKKyAgICBpZiAoIXJlc291cmNlLl9yZXNvdXJjZXNWaWV3KQorICAg
ICAgICByZXNvdXJjZS5fcmVzb3VyY2VzVmlldyA9IFdlYkluc3BlY3Rvci5SZXNvdXJjZVZpZXcu
Y3JlYXRlUmVzb3VyY2VWaWV3KHJlc291cmNlKTsKKyAgICByZXR1cm4gcmVzb3VyY2UuX3Jlc291
cmNlc1ZpZXc7Cit9CisKK1dlYkluc3BlY3Rvci5SZXNvdXJjZVZpZXcucmVjcmVhdGVSZXNvdXJj
ZVZpZXcgPSBmdW5jdGlvbihyZXNvdXJjZSkKK3sKKyAgICB2YXIgbmV3VmlldyA9IFdlYkluc3Bl
Y3Rvci5SZXNvdXJjZVZpZXcuY3JlYXRlUmVzb3VyY2VWaWV3KHJlc291cmNlKTsKKworICAgIHZh
ciBvbGRWaWV3ID0gcmVzb3VyY2UuX3Jlc291cmNlc1ZpZXc7CisgICAgdmFyIG9sZFZpZXdQYXJl
bnROb2RlID0gb2xkVmlldy52aXNpYmxlID8gb2xkVmlldy5lbGVtZW50LnBhcmVudE5vZGUgOiBu
dWxsOworICAgIHZhciBzY3JvbGxUb3AgPSBvbGRWaWV3LnNjcm9sbFRvcDsKKworICAgIHJlc291
cmNlLl9yZXNvdXJjZXNWaWV3LmRldGFjaCgpOworICAgIGRlbGV0ZSByZXNvdXJjZS5fcmVzb3Vy
Y2VzVmlldzsKKworICAgIHJlc291cmNlLl9yZXNvdXJjZXNWaWV3ID0gbmV3VmlldzsKKworICAg
IGlmIChvbGRWaWV3UGFyZW50Tm9kZSkKKyAgICAgICAgbmV3Vmlldy5zaG93KG9sZFZpZXdQYXJl
bnROb2RlKTsKKyAgICBpZiAoc2Nyb2xsVG9wKQorICAgICAgICBuZXdWaWV3LnNjcm9sbFRvcCA9
IHNjcm9sbFRvcDsKKworICAgIFdlYkluc3BlY3Rvci5wYW5lbHMuc2NyaXB0cy52aWV3UmVjcmVh
dGVkKG9sZFZpZXcsIG5ld1ZpZXcpOworICAgIHJldHVybiBuZXdWaWV3OworfQorCitXZWJJbnNw
ZWN0b3IuUmVzb3VyY2VWaWV3LmV4aXN0aW5nUmVzb3VyY2VWaWV3Rm9yUmVzb3VyY2UgPSBmdW5j
dGlvbihyZXNvdXJjZSkKK3sKKyAgICBpZiAoIXJlc291cmNlKQorICAgICAgICByZXR1cm4gbnVs
bDsKKyAgICByZXR1cm4gcmVzb3VyY2UuX3Jlc291cmNlc1ZpZXc7Cit9CmRpZmYgLS1naXQgYS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VzUGFuZWwuanMgYi9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VzUGFuZWwuanMKaW5kZXggZDZmNzE3Mi4uZWU2M2Rh
ZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlc1BhbmVs
LmpzCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZXNQYW5lbC5qcwpA
QCAtMzI5LDEyICszMjksMTIgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlc1BhbmVsLnByb3RvdHlw
ZSA9IHsKIAogICAgIGNhblNob3dTb3VyY2VMaW5lOiBmdW5jdGlvbih1cmwsIGxpbmUpCiAgICAg
ewotICAgICAgICByZXR1cm4gISFXZWJJbnNwZWN0b3IucmVzb3VyY2VNYW5hZ2VyLnJlc291cmNl
Rm9yVVJMKHVybCk7CisgICAgICAgIHJldHVybiAhIVdlYkluc3BlY3Rvci5yZXNvdXJjZVZpZXcu
cmVzb3VyY2VGb3JVUkwodXJsKTsKICAgICB9LAogCiAgICAgc2hvd1NvdXJjZUxpbmU6IGZ1bmN0
aW9uKHVybCwgbGluZSkKICAgICB7Ci0gICAgICAgIHZhciByZXNvdXJjZSA9IFdlYkluc3BlY3Rv
ci5yZXNvdXJjZU1hbmFnZXIucmVzb3VyY2VGb3JVUkwodXJsKTsKKyAgICAgICAgdmFyIHJlc291
cmNlID0gV2ViSW5zcGVjdG9yLnJlc291cmNlVHJlZU1vZGVsLnJlc291cmNlRm9yVVJMKHVybCk7
CiAgICAgICAgIGlmIChyZXNvdXJjZS50eXBlID09PSBXZWJJbnNwZWN0b3IuUmVzb3VyY2UuVHlw
ZS5YSFIpIHsKICAgICAgICAgICAgIC8vIFNob3cgWEhScyBpbiB0aGUgbmV0d29yayBwYW5lbCBv
bmx5LgogICAgICAgICAgICAgaWYgKFdlYkluc3BlY3Rvci5wYW5lbHMubmV0d29yayAmJiBXZWJJ
bnNwZWN0b3IucGFuZWxzLm5ldHdvcmsuY2FuU2hvd1NvdXJjZUxpbmUodXJsLCBsaW5lKSkgewpA
QCAtMzQzLDcgKzM0Myw3IEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZXNQYW5lbC5wcm90b3R5cGUg
PSB7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KLSAgICAg
ICAgdGhpcy5zaG93UmVzb3VyY2UoV2ViSW5zcGVjdG9yLnJlc291cmNlTWFuYWdlci5yZXNvdXJj
ZUZvclVSTCh1cmwpLCBsaW5lKTsKKyAgICAgICAgdGhpcy5zaG93UmVzb3VyY2UoV2ViSW5zcGVj
dG9yLnJlc291cmNlVHJlZU1vZGVsLnJlc291cmNlRm9yVVJMKHVybCksIGxpbmUpOwogICAgIH0s
CiAKICAgICBzaG93UmVzb3VyY2U6IGZ1bmN0aW9uKHJlc291cmNlLCBsaW5lKQpAQCAtMzU1LDcg
KzM1NSw3IEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZXNQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAg
ICAgIH0KIAogICAgICAgICBpZiAobGluZSkgewotICAgICAgICAgICAgdmFyIHZpZXcgPSBXZWJJ
bnNwZWN0b3IuUmVzb3VyY2VNYW5hZ2VyLnJlc291cmNlVmlld0ZvclJlc291cmNlKHJlc291cmNl
KTsKKyAgICAgICAgICAgIHZhciB2aWV3ID0gV2ViSW5zcGVjdG9yLlJlc291cmNlVmlldy5yZXNv
dXJjZVZpZXdGb3JSZXNvdXJjZShyZXNvdXJjZSk7CiAgICAgICAgICAgICBpZiAodmlldy5yZXZl
YWxMaW5lKQogICAgICAgICAgICAgICAgIHZpZXcucmV2ZWFsTGluZShsaW5lKTsKICAgICAgICAg
ICAgIGlmICh2aWV3LmhpZ2hsaWdodExpbmUpCkBAIC0zNjYsNyArMzY2LDcgQEAgV2ViSW5zcGVj
dG9yLlJlc291cmNlc1BhbmVsLnByb3RvdHlwZSA9IHsKIAogICAgIF9zaG93UmVzb3VyY2VWaWV3
OiBmdW5jdGlvbihyZXNvdXJjZSkKICAgICB7Ci0gICAgICAgIHZhciB2aWV3ID0gV2ViSW5zcGVj
dG9yLlJlc291cmNlTWFuYWdlci5yZXNvdXJjZVZpZXdGb3JSZXNvdXJjZShyZXNvdXJjZSk7Cisg
ICAgICAgIHZhciB2aWV3ID0gV2ViSW5zcGVjdG9yLlJlc291cmNlVmlldy5yZXNvdXJjZVZpZXdG
b3JSZXNvdXJjZShyZXNvdXJjZSk7CiAKICAgICAgICAgLy8gQ29uc2lkZXIgcmVuZGVyaW5nIGRp
ZmYgbWFya3VwIGhlcmUuCiAgICAgICAgIGlmIChyZXNvdXJjZS5iYXNlUmV2aXNpb24gJiYgdmll
dyBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5Tb3VyY2VWaWV3KSB7CkBAIC02ODcsNyArNjg3LDcg
QEAgV2ViSW5zcGVjdG9yLlJlc291cmNlc1BhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgZnVu
Y3Rpb24gY2FsbGJhY2socmVzb3VyY2VUcmVlRWxlbWVudCkKICAgICAgICAgewogICAgICAgICAg
ICAgdmFyIHJlc291cmNlID0gcmVzb3VyY2VUcmVlRWxlbWVudC5fcmVzb3VyY2U7Ci0gICAgICAg
ICAgICB2YXIgcmVzb3VyY2VWaWV3ID0gV2ViSW5zcGVjdG9yLlJlc291cmNlTWFuYWdlci5yZXNv
dXJjZVZpZXdGb3JSZXNvdXJjZShyZXNvdXJjZSk7CisgICAgICAgICAgICB2YXIgcmVzb3VyY2VW
aWV3ID0gV2ViSW5zcGVjdG9yLlJlc291cmNlVmlldy5yZXNvdXJjZVZpZXdGb3JSZXNvdXJjZShy
ZXNvdXJjZSk7CiAgICAgICAgICAgICBpZiAocmVzb3VyY2VWaWV3LnBlcmZvcm1TZWFyY2ggJiYg
cmVzb3VyY2VWaWV3ICE9PSB2aXNpYmxlVmlldykKICAgICAgICAgICAgICAgICB2aWV3cy5wdXNo
KHJlc291cmNlVmlldyk7CiAgICAgICAgIH0KQEAgLTEwNjksNyArMTA2OSw3IEBAIFdlYkluc3Bl
Y3Rvci5GcmFtZVJlc291cmNlVHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogICAgIHsKICAgICAg
ICAgLy8gRklYTUU6IG1vdmUgdG8gdGhlIFNjcmlwdC9Tb3VyY2VWaWV3LgogICAgICAgICBpZiAo
IXRoaXMuX3Jlc291cmNlLndhcm5pbmdzICYmICF0aGlzLl9yZXNvdXJjZS5lcnJvcnMpIHsKLSAg
ICAgICAgICAgIHZhciB2aWV3ID0gV2ViSW5zcGVjdG9yLlJlc291cmNlTWFuYWdlci5leGlzdGlu
Z1Jlc291cmNlVmlld0ZvclJlc291cmNlKHRoaXMuX3Jlc291cmNlKTsKKyAgICAgICAgICAgIHZh
ciB2aWV3ID0gV2ViSW5zcGVjdG9yLlJlc291cmNlVmlldy5leGlzdGluZ1Jlc291cmNlVmlld0Zv
clJlc291cmNlKHRoaXMuX3Jlc291cmNlKTsKICAgICAgICAgICAgIGlmICh2aWV3ICYmIHZpZXcu
Y2xlYXJNZXNzYWdlcykKICAgICAgICAgICAgICAgICB2aWV3LmNsZWFyTWVzc2FnZXMoKTsKICAg
ICAgICAgfQpAQCAtMTA5Miw5ICsxMDkyLDkgQEAgV2ViSW5zcGVjdG9yLkZyYW1lUmVzb3VyY2VU
cmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgX2NvbnRlbnRDaGFuZ2VkOiBmdW5jdGlvbihl
dmVudCkKICAgICB7CiAgICAgICAgIHRoaXMuaW5zZXJ0Q2hpbGQobmV3IFdlYkluc3BlY3Rvci5S
ZXNvdXJjZVJldmlzaW9uVHJlZUVsZW1lbnQodGhpcy5fc3RvcmFnZVBhbmVsLCBldmVudC5kYXRh
LnJldmlzaW9uKSwgMCk7Ci0gICAgICAgIHZhciBvbGRWaWV3ID0gV2ViSW5zcGVjdG9yLlJlc291
cmNlTWFuYWdlci5leGlzdGluZ1Jlc291cmNlVmlld0ZvclJlc291cmNlKHRoaXMuX3Jlc291cmNl
KTsKKyAgICAgICAgdmFyIG9sZFZpZXcgPSBXZWJJbnNwZWN0b3IuUmVzb3VyY2VWaWV3LmV4aXN0
aW5nUmVzb3VyY2VWaWV3Rm9yUmVzb3VyY2UodGhpcy5fcmVzb3VyY2UpOwogICAgICAgICBpZiAo
b2xkVmlldykgewotICAgICAgICAgICAgdmFyIG5ld1ZpZXcgPSBXZWJJbnNwZWN0b3IuUmVzb3Vy
Y2VNYW5hZ2VyLnJlY3JlYXRlUmVzb3VyY2VWaWV3KHRoaXMuX3Jlc291cmNlKTsKKyAgICAgICAg
ICAgIHZhciBuZXdWaWV3ID0gV2ViSW5zcGVjdG9yLlJlc291cmNlVmlldy5yZWNyZWF0ZVJlc291
cmNlVmlldyh0aGlzLl9yZXNvdXJjZSk7CiAgICAgICAgICAgICBpZiAob2xkVmlldyA9PT0gdGhp
cy5fc3RvcmFnZVBhbmVsLnZpc2libGVWaWV3KQogICAgICAgICAgICAgICAgIHRoaXMuX3N0b3Jh
Z2VQYW5lbC52aXNpYmxlVmlldyA9IG5ld1ZpZXc7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TY3JpcHRzUGFuZWwuanMgYi9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvU2NyaXB0c1BhbmVsLmpzCmluZGV4IDczODc5NjQuLmJkNjIzYTIgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TY3JpcHRzUGFuZWwuanMKKysr
IGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NjcmlwdHNQYW5lbC5qcwpAQCAtMjU2LDcg
KzI1Niw3IEBAIFdlYkluc3BlY3Rvci5TY3JpcHRzUGFuZWwucHJvdG90eXBlID0gewogICAgICAg
ICAgICAgaWYgKHJlc291cmNlLmZpbmlzaGVkKSB7CiAgICAgICAgICAgICAgICAgLy8gUmVzb3Vy
Y2UgaXMgZmluaXNoZWQsIGJpbmQgdGhlIHNjcmlwdCByaWdodCBhd2F5LgogICAgICAgICAgICAg
ICAgIHNjcmlwdC5yZXNvdXJjZSA9IHJlc291cmNlOwotICAgICAgICAgICAgICAgIHZhciB2aWV3
ID0gV2ViSW5zcGVjdG9yLlJlc291cmNlTWFuYWdlci5leGlzdGluZ1Jlc291cmNlVmlld0ZvclJl
c291cmNlKHJlc291cmNlKTsKKyAgICAgICAgICAgICAgICB2YXIgdmlldyA9IFdlYkluc3BlY3Rv
ci5SZXNvdXJjZVZpZXcuZXhpc3RpbmdSZXNvdXJjZVZpZXdGb3JSZXNvdXJjZShyZXNvdXJjZSk7
CiAgICAgICAgICAgICAgICAgaWYgKHZpZXcgJiYgdmlldy5zb3VyY2VGcmFtZSkKICAgICAgICAg
ICAgICAgICAgICAgdmlldy5zb3VyY2VGcmFtZS5hZGRTY3JpcHQoc2NyaXB0KTsKICAgICAgICAg
ICAgIH0gZWxzZSB7CkBAIC00NDIsMTAgKzQ0Miw2IEBAIFdlYkluc3BlY3Rvci5TY3JpcHRzUGFu
ZWwucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLmZ1bmN0aW9uc1NlbGVjdEVsZW1lbnQucmVt
b3ZlQ2hpbGRyZW4oKTsKICAgICAgICAgdGhpcy52aWV3c0NvbnRhaW5lckVsZW1lbnQucmVtb3Zl
Q2hpbGRyZW4oKTsKIAotICAgICAgICB2YXIgc2NyaXB0cyA9IFdlYkluc3BlY3Rvci5kZWJ1Z2dl
ck1vZGVsLnF1ZXJ5U2NyaXB0cyhmdW5jdGlvbihzKSB7IHJldHVybiAhIXMucmVzb3VyY2U7IH0p
OwotICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNjcmlwdHMubGVuZ3RoOyArK2kpCi0gICAg
ICAgICAgICBkZWxldGUgc2NyaXB0c1tpXS5yZXNvdXJjZS5fcmVzb3VyY2VzVmlldzsKLQogICAg
ICAgICB0aGlzLnNpZGViYXJQYW5lcy53YXRjaEV4cHJlc3Npb25zLnJlZnJlc2hFeHByZXNzaW9u
cygpOwogICAgICAgICBpZiAoIXByZXNlcnZlSXRlbXMpCiAgICAgICAgICAgICB0aGlzLnNpZGVi
YXJQYW5lcy53b3JrZXJzLnJlc2V0KCk7CkBAIC01NTMsNyArNTQ5LDcgQEAgV2ViSW5zcGVjdG9y
LlNjcmlwdHNQYW5lbC5wcm90b3R5cGUgPSB7CiAKICAgICBfc291cmNlRnJhbWVGb3JSZXNvdXJj
ZTogZnVuY3Rpb24ocmVzb3VyY2UpCiAgICAgewotICAgICAgICB2YXIgdmlldyA9IFdlYkluc3Bl
Y3Rvci5SZXNvdXJjZU1hbmFnZXIucmVzb3VyY2VWaWV3Rm9yUmVzb3VyY2UocmVzb3VyY2UpOwor
ICAgICAgICB2YXIgdmlldyA9IFdlYkluc3BlY3Rvci5SZXNvdXJjZVZpZXcucmVzb3VyY2VWaWV3
Rm9yUmVzb3VyY2UocmVzb3VyY2UpOwogICAgICAgICBpZiAoIXZpZXcpCiAgICAgICAgICAgICBy
ZXR1cm4gbnVsbDsKIApAQCAtNTc0LDcgKzU3MCw3IEBAIFdlYkluc3BlY3Rvci5TY3JpcHRzUGFu
ZWwucHJvdG90eXBlID0gewogCiAgICAgICAgIHZhciB2aWV3OwogICAgICAgICBpZiAoc2NyaXB0
T3JSZXNvdXJjZSBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5SZXNvdXJjZSkKLSAgICAgICAgICAg
IHZpZXcgPSBXZWJJbnNwZWN0b3IuUmVzb3VyY2VNYW5hZ2VyLnJlc291cmNlVmlld0ZvclJlc291
cmNlKHNjcmlwdE9yUmVzb3VyY2UpOworICAgICAgICAgICAgdmlldyA9IFdlYkluc3BlY3Rvci5S
ZXNvdXJjZVZpZXcucmVzb3VyY2VWaWV3Rm9yUmVzb3VyY2Uoc2NyaXB0T3JSZXNvdXJjZSk7CiAg
ICAgICAgIGVsc2UgaWYgKHNjcmlwdE9yUmVzb3VyY2UgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3Iu
U2NyaXB0KQogICAgICAgICAgICAgdmlldyA9IHRoaXMuc2NyaXB0Vmlld0ZvclNjcmlwdChzY3Jp
cHRPclJlc291cmNlKTsKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L1dlYktpdC5xcmMgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvV2ViS2l0LnFyYwppbmRl
eCA5MGM0MzE3Li4yNDQ0OTEzIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvV2ViS2l0LnFyYworKysgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvV2ViS2l0LnFy
YwpAQCAtNTgsNiArNTgsNyBAQAogICAgIDxmaWxlPktleWJvYXJkU2hvcnRjdXQuanM8L2ZpbGU+
CiAgICAgPGZpbGU+TWV0cmljc1NpZGViYXJQYW5lLmpzPC9maWxlPgogICAgIDxmaWxlPk5ldHdv
cmtJdGVtVmlldy5qczwvZmlsZT4KKyAgICA8ZmlsZT5OZXR3b3JrTWFuYWdlci5qczwvZmlsZT4K
ICAgICA8ZmlsZT5OZXR3b3JrUGFuZWwuanM8L2ZpbGU+CiAgICAgPGZpbGU+T2JqZWN0LmpzPC9m
aWxlPgogICAgIDxmaWxlPk9iamVjdFByb3BlcnRpZXNTZWN0aW9uLmpzPC9maWxlPgpAQCAtNzUs
NyArNzYsNiBAQAogICAgIDxmaWxlPlJlc291cmNlQ2F0ZWdvcnkuanM8L2ZpbGU+CiAgICAgPGZp
bGU+UmVzb3VyY2VDb29raWVzVmlldy5qczwvZmlsZT4KICAgICA8ZmlsZT5SZXNvdXJjZUhlYWRl
cnNWaWV3LmpzPC9maWxlPgotICAgIDxmaWxlPlJlc291cmNlTWFuYWdlci5qczwvZmlsZT4KICAg
ICA8ZmlsZT5SZXNvdXJjZVRpbWluZ1ZpZXcuanM8L2ZpbGU+CiAgICAgPGZpbGU+UmVzb3VyY2VW
aWV3LmpzPC9maWxlPgogICAgIDxmaWxlPlJlc291cmNlc1BhbmVsLmpzPC9maWxlPgpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5odG1sIGIvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5odG1sCmluZGV4IDllZDUwMTkuLmUxNTkw
ZjIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuaHRt
bAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmh0bWwKQEAgLTYx
LDcgKzYxLDggQEAgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIg
c3JjPSJQYW5lbC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3Jp
cHQiIHNyYz0iVGltZWxpbmVHcmlkLmpzIj48L3NjcmlwdD4gICAgCiAgICAgPHNjcmlwdCB0eXBl
PSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iUmVzb3VyY2UuanMiPjwvc2NyaXB0PgotICAgIDxzY3Jp
cHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IlJlc291cmNlTWFuYWdlci5qcyI+PC9zY3Jp
cHQ+CisgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iTmV0d29ya01hbmFn
ZXIuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9
IlJlc291cmNlVHJlZU1vZGVsLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHR5cGU9InRleHQv
amF2YXNjcmlwdCIgc3JjPSJSZXNvdXJjZUNhdGVnb3J5LmpzIj48L3NjcmlwdD4KICAgICA8c2Ny
aXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJEYXRhYmFzZS5qcyI+PC9zY3JpcHQ+CiAg
ICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iRE9NU3RvcmFnZS5qcyI+PC9z
Y3JpcHQ+CmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9y
LmpzIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5qcwppbmRleCBhNTdm
MGY0Li5jYzI1NWFhIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5z
cGVjdG9yLmpzCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuanMK
QEAgLTQ0NSwxMiArNDQ1LDEyIEBAIHZhciBXZWJJbnNwZWN0b3IgPSB7CiAKICAgICBmb3JBbGxS
ZXNvdXJjZXM6IGZ1bmN0aW9uKGNhbGxiYWNrKQogICAgIHsKLSAgICAgICAgV2ViSW5zcGVjdG9y
LnJlc291cmNlTWFuYWdlci5mb3JBbGxSZXNvdXJjZXMoY2FsbGJhY2spOworICAgICAgICBXZWJJ
bnNwZWN0b3IucmVzb3VyY2VUcmVlTW9kZWwuZm9yQWxsUmVzb3VyY2VzKGNhbGxiYWNrKTsKICAg
ICB9LAogCiAgICAgcmVzb3VyY2VGb3JVUkw6IGZ1bmN0aW9uKHVybCkKICAgICB7Ci0gICAgICAg
IHJldHVybiB0aGlzLnJlc291cmNlTWFuYWdlci5yZXNvdXJjZUZvclVSTCh1cmwpOworICAgICAg
ICByZXR1cm4gdGhpcy5yZXNvdXJjZVRyZWVNb2RlbC5yZXNvdXJjZUZvclVSTCh1cmwpOwogICAg
IH0KIH0KIApAQCAtNTE3LDcgKzUxNyw4IEBAIFdlYkluc3BlY3Rvci5kb0xvYWRlZERvbmUgPSBm
dW5jdGlvbigpCiAgICAgLy8gdGhpcy5jaGFuZ2VzID0gbmV3IFdlYkluc3BlY3Rvci5DaGFuZ2Vz
Vmlldyh0aGlzLmRyYXdlcik7CiAgICAgLy8gVE9ETzogUmVtb3ZlIGNsYXNzPSJoaWRkZW4iIGZy
b20gaW5zcGVjdG9yLmh0bWwgb24gYnV0dG9uI2NoYW5nZXMtc3RhdHVzLWJhci1pdGVtCiAgICAg
dGhpcy5kcmF3ZXIudmlzaWJsZVZpZXcgPSB0aGlzLmNvbnNvbGU7Ci0gICAgdGhpcy5yZXNvdXJj
ZU1hbmFnZXIgPSBuZXcgV2ViSW5zcGVjdG9yLlJlc291cmNlTWFuYWdlcigpOworICAgIHRoaXMu
cmVzb3VyY2VUcmVlTW9kZWwgPSBuZXcgV2ViSW5zcGVjdG9yLlJlc291cmNlVHJlZU1vZGVsKCk7
CisgICAgdGhpcy5uZXR3b3JrTWFuYWdlciA9IG5ldyBXZWJJbnNwZWN0b3IuTmV0d29ya01hbmFn
ZXIodGhpcy5yZXNvdXJjZVRyZWVNb2RlbCk7CiAgICAgdGhpcy5kb21BZ2VudCA9IG5ldyBXZWJJ
bnNwZWN0b3IuRE9NQWdlbnQoKTsKIAogICAgIEluc3BlY3RvckJhY2tlbmQucmVnaXN0ZXJEb21h
aW5EaXNwYXRjaGVyKCJJbnNwZWN0b3IiLCB0aGlzKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>