<?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>59094</bug_id>
          
          <creation_ts>2011-04-21 06:07:16 -0700</creation_ts>
          <short_desc>Web Inspector: [Chromium] Move detailed heap snapshots storage and processing into workers</short_desc>
          <delta_ts>2011-04-22 09:48:53 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>59189</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Mikhail Naganov">mnaganov</reporter>
          <assigned_to name="Mikhail Naganov">mnaganov</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>389966</commentid>
    <comment_count>0</comment_count>
    <who name="Mikhail Naganov">mnaganov</who>
    <bug_when>2011-04-21 06:07:16 -0700</bug_when>
    <thetext>This is now done -- each snapshot is stored in a worker.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>389972</commentid>
    <comment_count>1</comment_count>
      <attachid>90520</attachid>
    <who name="Mikhail Naganov">mnaganov</who>
    <bug_when>2011-04-21 06:11:28 -0700</bug_when>
    <thetext>Created attachment 90520
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>390050</commentid>
    <comment_count>2</comment_count>
      <attachid>90540</attachid>
    <who name="Mikhail Naganov">mnaganov</who>
    <bug_when>2011-04-21 08:28:56 -0700</bug_when>
    <thetext>Created attachment 90540
small bug fixes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>390741</commentid>
    <comment_count>3</comment_count>
      <attachid>90698</attachid>
    <who name="Mikhail Naganov">mnaganov</who>
    <bug_when>2011-04-22 06:14:48 -0700</bug_when>
    <thetext>Created attachment 90698
rebase after r84619</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>390761</commentid>
    <comment_count>4</comment_count>
    <who name="Mikhail Naganov">mnaganov</who>
    <bug_when>2011-04-22 06:53:47 -0700</bug_when>
    <thetext>Manually committed http://trac.webkit.org/changeset/84626

2011-04-22  Mikhail Naganov  &lt;mnaganov@chromium.org&gt;

        Reviewed by Pavel Feldman.

        Web Inspector: [Chromium] Move detailed heap snapshots storage and processing into workers.
        https://bugs.webkit.org/show_bug.cgi?id=59094

        * WebCore.gypi:
        * WebCore.vcproj/WebCore.vcproj:
        * gyp/streamline-inspector-source.sh:
        * inspector/front-end/DetailedHeapshotGridNodes.js:
        (WebInspector.HeapSnapshotGridNode.prototype.dispose):
        (WebInspector.HeapSnapshotObjectNode.prototype._createProvider):
        (WebInspector.HeapSnapshotInstanceNode.prototype._createProvider):
        (WebInspector.HeapSnapshotConstructorNode.prototype._createNodesProvider):
        (WebInspector.HeapSnapshotIteratorsTuple.prototype.dispose):
        (WebInspector.HeapSnapshotDiffNode.prototype.calculateDiff.diffCalculated):
        (WebInspector.HeapSnapshotDiffNode.prototype._createNodesProvider.createProvider):
        (WebInspector.HeapSnapshotDiffNode.prototype._createNodesProvider):
        (WebInspector.HeapSnapshotDominatorObjectNode.prototype._createProvider):
        (MixInSnapshotNodeFunctions):
        * inspector/front-end/DetailedHeapshotView.js:
        (WebInspector.HeapSnapshotSortableDataGrid.prototype.dispose):
        (WebInspector.HeapSnapshotSortableDataGrid.prototype.resetSortingCache):
        (WebInspector.HeapSnapshotDiffDataGrid.prototype.setBaseDataSource):
        (WebInspector.HeapSnapshotRetainingPathsList.prototype.dispose):
        (WebInspector.HeapSnapshotRetainingPathsList.prototype._resetPaths):
        (WebInspector.HeapSnapshotRetainingPathsList.prototype.setDataSource):
        (WebInspector.HeapSnapshotRetainingPathsList.prototype.showNext):
        (WebInspector.HeapSnapshotRetainingPathsList.prototype.searchCancelled):
        (WebInspector.HeapSnapshotRetainingPathsList.prototype._setRootChildrenForFinder):
        (WebInspector.DetailedHeapshotView.prototype.dispose):
        (WebInspector.DetailedHeapshotView.prototype.get profileWrapper):
        (WebInspector.DetailedHeapshotView.prototype.get baseProfileWrapper):
        * inspector/front-end/HeapSnapshot.js:
        (WebInspector.HeapSnapshotLoader):
        (WebInspector.HeapSnapshotLoader.prototype.finishLoading):
        (WebInspector.HeapSnapshotLoader.prototype.pushJSONChunk):
        (WebInspector.HeapSnapshot.prototype.pushBaseIds):
        (WebInspector.HeapSnapshot.prototype.createDiff):
        (WebInspector.HeapSnapshot.prototype._parseFilter):
        (WebInspector.HeapSnapshot.prototype.createEdgesProvider):
        (WebInspector.HeapSnapshot.prototype.createNodesProvider):
        (WebInspector.HeapSnapshot.prototype.createPathFinder):
        (WebInspector.HeapSnapshot.prototype.updateStaticData):
        (WebInspector.HeapSnapshotPathFinder):
        (WebInspector.HeapSnapshotPathFinder.prototype.updateRoots):
        (WebInspector.HeapSnapshotPathFinder.prototype._reset):
        * inspector/front-end/HeapSnapshotProxy.js:
        (WebInspector.HeapSnapshotRealWorker):
        (WebInspector.HeapSnapshotRealWorker.prototype._messageReceived):
        (WebInspector.HeapSnapshotRealWorker.prototype.postMessage):
        (WebInspector.HeapSnapshotRealWorker.prototype.terminate):
        (WebInspector.HeapSnapshotFakeWorker):
        (WebInspector.HeapSnapshotFakeWorker.prototype.postMessage):
        (WebInspector.HeapSnapshotFakeWorker.prototype.terminate):
        (WebInspector.HeapSnapshotFakeWorker.prototype._postMessageFromWorker):
        (WebInspector.HeapSnapshotWorker):
        (WebInspector.HeapSnapshotWorker.prototype.createObject):
        (WebInspector.HeapSnapshotWorker.prototype.dispose):
        (WebInspector.HeapSnapshotWorker.prototype.disposeObject):
        (WebInspector.HeapSnapshotWorker.prototype.callGetter):
        (WebInspector.HeapSnapshotWorker.prototype.callFactoryMethod.wrapCallback):
        (WebInspector.HeapSnapshotWorker.prototype.callFactoryMethod):
        (WebInspector.HeapSnapshotWorker.prototype.callMethod):
        (WebInspector.HeapSnapshotWorker.prototype._findFunction):
        (WebInspector.HeapSnapshotWorker.prototype._messageReceived):
        (WebInspector.HeapSnapshotWorker.prototype._postMessage):
        (WebInspector.HeapSnapshotProxyObject):
        (WebInspector.HeapSnapshotProxyObject.prototype._callWorker):
        (WebInspector.HeapSnapshotProxyObject.prototype.dispose):
        (WebInspector.HeapSnapshotProxyObject.prototype.disposeWorker):
        (WebInspector.HeapSnapshotProxyObject.prototype.callFactoryMethod):
        (WebInspector.HeapSnapshotProxyObject.prototype.callGetter):
        (WebInspector.HeapSnapshotProxyObject.prototype.callMethod):
        (WebInspector.HeapSnapshotLoaderProxy):
        (WebInspector.HeapSnapshotLoaderProxy.prototype.finishLoading.callLoadCallbacks):
        (WebInspector.HeapSnapshotLoaderProxy.prototype.finishLoading.updateStaticData):
        (WebInspector.HeapSnapshotLoaderProxy.prototype.finishLoading):
        (WebInspector.HeapSnapshotLoaderProxy.prototype.get loaded):
        (WebInspector.HeapSnapshotLoaderProxy.prototype.startLoading):
        (WebInspector.HeapSnapshotLoaderProxy.prototype.pushJSONChunk):
        (WebInspector.HeapSnapshotProxy):
        (WebInspector.HeapSnapshotProxy.prototype.aggregates):
        (WebInspector.HeapSnapshotProxy.prototype.createDiff):
        (WebInspector.HeapSnapshotProxy.prototype.createEdgesProvider):
        (WebInspector.HeapSnapshotProxy.prototype.createNodesProvider):
        (WebInspector.HeapSnapshotProxy.prototype.createPathFinder):
        (WebInspector.HeapSnapshotProxy.prototype.dispose):
        (WebInspector.HeapSnapshotProxy.prototype.finishLoading):
        (WebInspector.HeapSnapshotProxy.prototype.get loaded):
        (WebInspector.HeapSnapshotProxy.prototype.get nodeCount):
        (WebInspector.HeapSnapshotProxy.prototype.nodeFieldValuesByIndex):
        (WebInspector.HeapSnapshotProxy.prototype.pushBaseIds):
        (WebInspector.HeapSnapshotProxy.prototype.get rootNodeIndex):
        (WebInspector.HeapSnapshotProxy.prototype.updateStaticData):
        (WebInspector.HeapSnapshotProxy.prototype.startLoading):
        (WebInspector.HeapSnapshotProxy.prototype.get totalSize):
        (WebInspector.HeapSnapshotProxy.prototype.get uid):
        (WebInspector.HeapSnapshotProviderProxy):
        (WebInspector.HeapSnapshotProviderProxy.prototype.isEmpty):
        (WebInspector.HeapSnapshotProviderProxy.prototype.serializeNextItems):
        (WebInspector.HeapSnapshotProviderProxy.prototype.sortAndRewind):
        (WebInspector.HeapSnapshotPathFinderProxy):
        (WebInspector.HeapSnapshotPathFinderProxy.prototype.findNext):
        (WebInspector.HeapSnapshotPathFinderProxy.prototype.updateRoots):
        (WebInspector.HeapSnapshotsDiffProxy):
        (WebInspector.HeapSnapshotsDiffProxy.prototype.calculate):
        (WebInspector.HeapSnapshotsDiffProxy.prototype.pushBaseIds):
        (WebInspector.HeapSnapshotsDiffProxy.prototype.pushBaseSelfSizes):
        * inspector/front-end/HeapSnapshotWorker.js: Added.
        (WebInspector.UIString):
        (postMessageWrapper):
        * inspector/front-end/HeapSnapshotWorkerDispatcher.js: Added.
        (WebInspector.HeapSnapshotWorkerDispatcher):
        (WebInspector.HeapSnapshotWorkerDispatcher.prototype._findFunction):
        (WebInspector.HeapSnapshotWorkerDispatcher.prototype.dispatchMessage):
        * inspector/front-end/ProfilesPanel.js:
        (WebInspector.ProfilesPanel.prototype.loadHeapSnapshot):
        (WebInspector.ProfilesPanel.prototype._finishHeapSnapshot.else.parsed):
        (WebInspector.ProfilesPanel.prototype._finishHeapSnapshot):
        * inspector/front-end/WebKit.qrc:
        * inspector/front-end/inspector.html:

2011-04-22  Mikhail Naganov  &lt;mnaganov@chromium.org&gt;

        Reviewed by Pavel Feldman.

        Web Inspector: [Chromium] Move detailed heap snapshots storage and processing into workers.
        https://bugs.webkit.org/show_bug.cgi?id=59094

        * WebKit.gyp:</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>390838</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-04-22 09:48:53 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/84626 might have broken GTK Linux 32-bit Debug</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>90520</attachid>
            <date>2011-04-21 06:11:28 -0700</date>
            <delta_ts>2011-04-21 08:28:56 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch-59094</filename>
            <type>text/plain</type>
            <size>90388</size>
            <attacher name="Mikhail Naganov">mnaganov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBkODc0NDMxLi4wMGI5ZmM3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTEtMDQt
MjEgIE1pa2hhaWwgTmFnYW5vdiAgPG1uYWdhbm92QGNocm9taXVtLm9yZz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBbQ2hy
b21pdW1dIE1vdmUgZGV0YWlsZWQgaGVhcCBzbmFwc2hvdHMgc3RvcmFnZSBhbmQgcHJvY2Vzc2lu
ZyBpbnRvIHdvcmtlcnMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD01OTA5NAorCisgICAgICAgICogaW5zcGVjdG9yL3Byb2ZpbGVyL2RldGFpbGVkLWhl
YXBzaG90cy1jb21wYXJpc29uLXNvcnRpbmcuaHRtbDoKKyAgICAgICAgKiBpbnNwZWN0b3IvcHJv
ZmlsZXIvZGV0YWlsZWQtaGVhcHNob3RzLXRlc3QuanM6CisgICAgICAgIChpbml0aWFsaXplX0Rl
dGFpbGVkSGVhcHNob3RUZXN0KToKKyAgICAgICAgKGluaXRpYWxpemVfRGV0YWlsZWRIZWFwc2hv
dFRlc3QuKToKKyAgICAgICAgKiBpbnNwZWN0b3IvcHJvZmlsZXIvaGVhcC1zbmFwc2hvdC1leHBl
Y3RlZC50eHQ6CisgICAgICAgICogaW5zcGVjdG9yL3Byb2ZpbGVyL2hlYXAtc25hcHNob3QuaHRt
bDoKKwogMjAxMS0wNC0yMSAgQ3NhYmEgT3N6dHJvZ29uw6FjICA8b3NzeUB3ZWJraXQub3JnPgog
CiAgICAgICAgIFtRdF0gTWlzc2luZyBldmVudFNlbmRlci5zY2FsZVBhZ2VCeSgpIGltcGxlbWVu
dGF0aW9uCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcHJvZmlsZXIvZGV0YWls
ZWQtaGVhcHNob3RzLWNvbXBhcmlzb24tc29ydGluZy5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL3Byb2ZpbGVyL2RldGFpbGVkLWhlYXBzaG90cy1jb21wYXJpc29uLXNvcnRpbmcuaHRtbApp
bmRleCAxZmNiYTc0Li5hZjBkZDBkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3Iv
cHJvZmlsZXIvZGV0YWlsZWQtaGVhcHNob3RzLWNvbXBhcmlzb24tc29ydGluZy5odG1sCisrKyBi
L0xheW91dFRlc3RzL2luc3BlY3Rvci9wcm9maWxlci9kZXRhaWxlZC1oZWFwc2hvdHMtY29tcGFy
aXNvbi1zb3J0aW5nLmh0bWwKQEAgLTI2LDcgKzI2LDcgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAg
ICAgICAgICAKICAgICAgICAgICAgIGZ1bmN0aW9uIHN0ZXAxKCkKICAgICAgICAgICAgIHsKLSAg
ICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LnN3aXRjaFRvVmlldygiQ29tcGFyaXNvbiIsIG5l
eHQpOworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3Quc3dpdGNoVG9WaWV3KCJDb21wYXJp
c29uIiwgc3RlcDIpOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICB2YXIgY29sdW1uczsK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9wcm9maWxlci9kZXRhaWxlZC1oZWFw
c2hvdHMtdGVzdC5qcyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9wcm9maWxlci9kZXRhaWxlZC1o
ZWFwc2hvdHMtdGVzdC5qcwppbmRleCBkMTQxN2NmLi4xZjBiMThmYyAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvaW5zcGVjdG9yL3Byb2ZpbGVyL2RldGFpbGVkLWhlYXBzaG90cy10ZXN0LmpzCisr
KyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9wcm9maWxlci9kZXRhaWxlZC1oZWFwc2hvdHMtdGVz
dC5qcwpAQCAtMTY5LDYgKzE2OSw3IEBAIEluc3BlY3RvclRlc3QuY2xpY2tDb2x1bW4gPSBmdW5j
dGlvbihjb2x1bW4sIGNhbGxiYWNrKQogCiAgICAgZnVuY3Rpb24gc29ydGluZ0NvbXBsZXRlKCkK
ICAgICB7CisgICAgICAgIEluc3BlY3RvclRlc3QuX2N1cnJlbnRHcmlkKCkucmVtb3ZlRXZlbnRM
aXN0ZW5lcigic29ydGluZyBjb21wbGV0ZSIsIHNvcnRpbmdDb21wbGV0ZSwgdGhpcyk7CiAgICAg
ICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0RXF1YWxzKGNvbHVtbi5pZGVudGlmaWVyLCB0aGlzLl9j
dXJyZW50R3JpZCgpLnNvcnRDb2x1bW5JZGVudGlmaWVyLCAidW5leHBlY3RlZCBzb3J0aW5nIik7
CiAgICAgICAgIGNvbHVtbi5zb3J0ID0gdGhpcy5fY3VycmVudEdyaWQoKS5zb3J0T3JkZXI7CiAg
ICAgICAgIGZ1bmN0aW9uIGNhbGxDYWxsYmFjaygpCkBAIC0xNzcsNyArMTc4LDcgQEAgSW5zcGVj
dG9yVGVzdC5jbGlja0NvbHVtbiA9IGZ1bmN0aW9uKGNvbHVtbiwgY2FsbGJhY2spCiAgICAgICAg
IH0KICAgICAgICAgc2V0VGltZW91dChjYWxsQ2FsbGJhY2ssIDApOwogICAgIH0KLSAgICBJbnNw
ZWN0b3JUZXN0Ll9wcmVwYXJlRm9yUmVjdXJzaXZlU29ydChzb3J0aW5nQ29tcGxldGUuYmluZCh0
aGlzKSk7CisgICAgSW5zcGVjdG9yVGVzdC5fY3VycmVudEdyaWQoKS5hZGRFdmVudExpc3RlbmVy
KCJzb3J0aW5nIGNvbXBsZXRlIiwgc29ydGluZ0NvbXBsZXRlLCB0aGlzKTsKICAgICB0aGlzLl9j
dXJyZW50R3JpZCgpLl9jbGlja0luSGVhZGVyQ2VsbChldmVudCk7CiB9OwogCkBAIC0yOTQsNyAr
Mjk1LDEzIEBAIEluc3BlY3RvclRlc3QuZXhwYW5kUm93ID0gZnVuY3Rpb24ocm93LCBjYWxsYmFj
aykKICAgICAgICAgc2V0VGltZW91dChjYWxsQ2FsbGJhY2ssIDApOwogICAgIH0KICAgICByb3cu
YWRkRXZlbnRMaXN0ZW5lcigicG9wdWxhdGUgY29tcGxldGUiLCBwb3B1bGF0ZUNvbXBsZXRlLCB0
aGlzKTsKLSAgICByb3cuZXhwYW5kKCk7CisgICAgKGZ1bmN0aW9uIGV4cGFuZCgpCisgICAgewor
ICAgICAgICBpZiAocm93Lmhhc0NoaWxkcmVuKQorICAgICAgICAgICAgcm93LmV4cGFuZCgpOwor
ICAgICAgICBlbHNlCisgICAgICAgICAgICBzZXRUaW1lb3V0KGV4cGFuZCwgMCk7CisgICAgfSko
KTsKIH07CiAKIEluc3BlY3RvclRlc3QuZmluZEFuZEV4cGFuZEdDUm9vdHMgPSBmdW5jdGlvbihj
YWxsYmFjaykKQEAgLTM1OCw3ICszNjUsMTMgQEAgSW5zcGVjdG9yVGVzdC5zd2l0Y2hUb1ZpZXcg
PSBmdW5jdGlvbih0aXRsZSwgY2FsbGJhY2spCiAgICAgICAgIHNldFRpbWVvdXQoY2FsbGJhY2ss
IDApOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIEluc3BlY3RvclRlc3QuX3ByZXBhcmVG
b3JSZWN1cnNpdmVTb3J0KGNhbGxiYWNrLCB2aWV3LnZpZXdzW2luZGV4XS5ncmlkKTsKKyAgICB2
YXIgZ3JpZCA9IHZpZXcudmlld3NbaW5kZXhdLmdyaWQ7CisgICAgZnVuY3Rpb24gc29ydGluZ0Nv
bXBsZXRlKCkKKyAgICB7CisgICAgICAgIGdyaWQucmVtb3ZlRXZlbnRMaXN0ZW5lcigic29ydGlu
ZyBjb21wbGV0ZSIsIHNvcnRpbmdDb21wbGV0ZSwgdGhpcyk7CisgICAgICAgIHNldFRpbWVvdXQo
Y2FsbGJhY2ssIDApOworICAgIH0KKyAgICB2aWV3LnZpZXdzW2luZGV4XS5ncmlkLmFkZEV2ZW50
TGlzdGVuZXIoInNvcnRpbmcgY29tcGxldGUiLCBzb3J0aW5nQ29tcGxldGUsIHRoaXMpOwogICAg
IHZpZXcuX2NoYW5nZVZpZXcoe3RhcmdldDoge3NlbGVjdGVkSW5kZXg6IGluZGV4fX0pOwogfTsK
IApAQCAtMzkyLDQ0ICs0MDUsMTggQEAgSW5zcGVjdG9yVGVzdC5fY3VycmVudEdyaWQgPSBmdW5j
dGlvbigpCiAgICAgcmV0dXJuIFdlYkluc3BlY3Rvci5wYW5lbHMucHJvZmlsZXMudmlzaWJsZVZp
ZXcuZGF0YUdyaWQ7CiB9OwogCi1JbnNwZWN0b3JUZXN0Ll9wcmVwYXJlRm9yUmVjdXJzaXZlU29y
dCA9IGZ1bmN0aW9uKGNhbGxiYWNrLCBncmlkKQotewotICAgIGlmIChJbnNwZWN0b3JUZXN0Ll9y
ZWN1cnNpdmVTb3J0Q2FsbGJhY2spCi0gICAgICAgIGNvbnNvbGUuZXJyb3IoIkRpZG4ndCBmaW5p
c2hlZCB3aXRoIHByZXZpb3VzIHNvcnRpbmciKTsKLSAgICBJbnNwZWN0b3JUZXN0Ll9yZWN1cnNp
dmVTb3J0Q2FsbGJhY2sgPSBjYWxsYmFjazsKLSAgICBJbnNwZWN0b3JUZXN0Ll9yZWN1cnNpdmVT
b3J0RGVwdGggPSAwOwotICAgIGdyaWQgPSBncmlkIHx8IEluc3BlY3RvclRlc3QuX2N1cnJlbnRH
cmlkKCk7Ci0gICAgZ3JpZC5hZGRFdmVudExpc3RlbmVyKCJzdGFydCBzb3J0aW5nIiwgSW5zcGVj
dG9yVGVzdC5fcmVjdXJzaXZlU29ydEVudGVyLCBJbnNwZWN0b3JUZXN0KTsKLSAgICBncmlkLmFk
ZEV2ZW50TGlzdGVuZXIoInNvcnRpbmcgY29tcGxldGUiLCBJbnNwZWN0b3JUZXN0Ll9yZWN1cnNp
dmVTb3J0TGVhdmUsIEluc3BlY3RvclRlc3QpOwotICAgIEluc3BlY3RvclRlc3QuX3JlY3Vyc2l2
ZVNvcnRHcmlkID0gZ3JpZDsKLX07Ci0KLUluc3BlY3RvclRlc3QuX3JlY3Vyc2l2ZVNvcnRFbnRl
ciA9IGZ1bmN0aW9uKCkKLXsKLSAgICArK0luc3BlY3RvclRlc3QuX3JlY3Vyc2l2ZVNvcnREZXB0
aDsKLSAgICBpZiAoaXNOYU4oSW5zcGVjdG9yVGVzdC5fcmVjdXJzaXZlU29ydERlcHRoKSkKLSAg
ICAgICAgY29uc29sZS5lcnJvcigiV2Fzbid0IHByZXBhcmVkIHRvIHRyYWNrIHNvcnRpbmciKTsK
LX07Ci0KLUluc3BlY3RvclRlc3QuX3JlY3Vyc2l2ZVNvcnRMZWF2ZSA9IGZ1bmN0aW9uKCkKLXsK
LSAgICBpZiAoIS0tSW5zcGVjdG9yVGVzdC5fcmVjdXJzaXZlU29ydERlcHRoKSB7Ci0gICAgICAg
IHZhciBjYWxsYmFjayA9IEluc3BlY3RvclRlc3QuX3JlY3Vyc2l2ZVNvcnRDYWxsYmFjazsKLSAg
ICAgICAgZGVsZXRlIEluc3BlY3RvclRlc3QuX3JlY3Vyc2l2ZVNvcnRDYWxsYmFjazsKLSAgICAg
ICAgSW5zcGVjdG9yVGVzdC5fcmVjdXJzaXZlU29ydEdyaWQucmVtb3ZlRXZlbnRMaXN0ZW5lcigi
c3RhcnQgc29ydGluZyIsIEluc3BlY3RvclRlc3QuX3JlY3Vyc2l2ZVNvcnRFbnRlciwgSW5zcGVj
dG9yVGVzdCk7Ci0gICAgICAgIEluc3BlY3RvclRlc3QuX3JlY3Vyc2l2ZVNvcnRHcmlkLnJlbW92
ZUV2ZW50TGlzdGVuZXIoInNvcnRpbmcgY29tcGxldGUiLCBJbnNwZWN0b3JUZXN0Ll9yZWN1cnNp
dmVTb3J0TGVhdmUsIEluc3BlY3RvclRlc3QpOwotICAgICAgICBzZXRUaW1lb3V0KGNhbGxiYWNr
LCAwKTsKLSAgICB9Ci0gICAgaWYgKCEoSW5zcGVjdG9yVGVzdC5fcmVjdXJzaXZlU29ydERlcHRo
ID49IDApKQotICAgICAgICBjb25zb2xlLmVycm9yKCJCYWQgc29ydCBuZXN0aW5nIik7Ci19Owot
CiBJbnNwZWN0b3JUZXN0Ll9zbmFwc2hvdFZpZXdTaG93biA9IGZ1bmN0aW9uKCkKIHsKICAgICBp
ZiAoSW5zcGVjdG9yVGVzdC5fdGFrZUFuZE9wZW5TbmFwc2hvdENhbGxiYWNrKSB7CiAgICAgICAg
IHZhciBjYWxsYmFjayA9IEluc3BlY3RvclRlc3QuX3Rha2VBbmRPcGVuU25hcHNob3RDYWxsYmFj
azsKICAgICAgICAgSW5zcGVjdG9yVGVzdC5fdGFrZUFuZE9wZW5TbmFwc2hvdENhbGxiYWNrID0g
bnVsbDsKLSAgICAgICAgY2FsbGJhY2soKTsKKyAgICAgICAgdmFyIGRhdGFHcmlkID0gdGhpcy5k
YXRhR3JpZDsKKyAgICAgICAgZnVuY3Rpb24gc29ydGluZ0NvbXBsZXRlKCkKKyAgICAgICAgewor
ICAgICAgICAgICAgZGF0YUdyaWQucmVtb3ZlRXZlbnRMaXN0ZW5lcigic29ydGluZyBjb21wbGV0
ZSIsIHNvcnRpbmdDb21wbGV0ZSwgbnVsbCk7CisgICAgICAgICAgICBjYWxsYmFjaygpOworICAg
ICAgICB9CisgICAgICAgIGRhdGFHcmlkLmFkZEV2ZW50TGlzdGVuZXIoInNvcnRpbmcgY29tcGxl
dGUiLCBzb3J0aW5nQ29tcGxldGUsIG51bGwpOwogICAgIH0KIH07CiAKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2luc3BlY3Rvci9wcm9maWxlci9oZWFwLXNuYXBzaG90LWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL2luc3BlY3Rvci9wcm9maWxlci9oZWFwLXNuYXBzaG90LWV4cGVjdGVkLnR4
dAppbmRleCAyMjQxZTEzLi43OGUyN2UzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0
b3IvcHJvZmlsZXIvaGVhcC1zbmFwc2hvdC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL3Byb2ZpbGVyL2hlYXAtc25hcHNob3QtZXhwZWN0ZWQudHh0CkBAIC0xMyw4ICsx
Myw2IEBAIFJ1bm5pbmc6IGhlYXBTbmFwc2hvdE5vZGVBbmRFZGdlVGVzdAogCiBSdW5uaW5nOiBo
ZWFwU25hcHNob3RTaW1wbGVUZXN0CiAKLVJ1bm5pbmc6IGhlYXBTbmFwc2hvdElkc1Rlc3QKLQog
UnVubmluZzogaGVhcFNuYXBzaG90UmV0YWluZXJzVGVzdAogCiBSdW5uaW5nOiBoZWFwU25hcHNo
b3RBZ2dyZWdhdGVzVGVzdApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3Byb2Zp
bGVyL2hlYXAtc25hcHNob3QuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9wcm9maWxlci9o
ZWFwLXNuYXBzaG90Lmh0bWwKaW5kZXggMWMwNGY2Mi4uYTJkNDU0NSAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvaW5zcGVjdG9yL3Byb2ZpbGVyL2hlYXAtc25hcHNob3QuaHRtbAorKysgYi9MYXlv
dXRUZXN0cy9pbnNwZWN0b3IvcHJvZmlsZXIvaGVhcC1zbmFwc2hvdC5odG1sCkBAIC05NSwxNyAr
OTUsNiBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgICAgIG5leHQoKTsKICAgICAgICAgfSwK
IAotICAgICAgICBmdW5jdGlvbiBoZWFwU25hcHNob3RJZHNUZXN0KG5leHQpCi0gICAgICAgIHsK
LSAgICAgICAgICAgIHZhciBzbmFwc2hvdCA9IG5ldyBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90
KEluc3BlY3RvclRlc3QuY3JlYXRlSGVhcFNuYXBzaG90TW9jaygpKTsKLSAgICAgICAgICAgIElu
c3BlY3RvclRlc3QuYXNzZXJ0RXF1YWxzKGZhbHNlLCBzbmFwc2hvdC5oYXNJZCgwKSwgImhhcyBp
ZCAwIik7Ci0gICAgICAgICAgICBmb3IgKHZhciBpID0gMTsgaSA8PSA2OyArK2kpCi0gICAgICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRFcXVhbHModHJ1ZSwgc25hcHNob3QuaGFzSWQo
aSksICJoYXMgaWQgIiArIGkpOwotICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRFcXVh
bHMoZmFsc2UsIHNuYXBzaG90Lmhhc0lkKDcpLCAiaGFzIGlkIDciKTsKLSAgICAgICAgICAgIElu
c3BlY3RvclRlc3QuYXNzZXJ0RXF1YWxzKGZhbHNlLCBzbmFwc2hvdC5oYXNJZCgxMDApLCAiaGFz
IGlkIDEwMCIpOwotICAgICAgICAgICAgbmV4dCgpOwotICAgICAgICB9LAotCiAgICAgICAgIGZ1
bmN0aW9uIGhlYXBTbmFwc2hvdFJldGFpbmVyc1Rlc3QobmV4dCkKICAgICAgICAgewogICAgICAg
ICAgICAgdmFyIHNuYXBzaG90ID0gbmV3IFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3QoSW5zcGVj
dG9yVGVzdC5jcmVhdGVIZWFwU25hcHNob3RNb2NrKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGZiZWE5MzMu
LjRmZTgzNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNTYgQEAKKzIwMTEtMDQtMjEgIE1pa2hh
aWwgTmFnYW5vdiAgPG1uYWdhbm92QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBbQ2hyb21pdW1dIE1v
dmUgZGV0YWlsZWQgaGVhcCBzbmFwc2hvdHMgc3RvcmFnZSBhbmQgcHJvY2Vzc2luZyBpbnRvIHdv
cmtlcnMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01
OTA5NAorCisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUudmNwcm9q
L1dlYkNvcmUudmNwcm9qOgorICAgICAgICAqIGd5cC9zdHJlYW1saW5lLWluc3BlY3Rvci1zb3Vy
Y2Uuc2g6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9CaW5hcnlTZWFyY2guanM6IEFk
ZGVkLgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvRGV0YWlsZWRIZWFwc2hvdEdyaWRO
b2Rlcy5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RHcmlkTm9kZS5wcm90
b3R5cGUuZGlzcG9zZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90R3JpZE5v
ZGUucHJvdG90eXBlLl9wb3B1bGF0ZS5zb3J0ZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhl
YXBTbmFwc2hvdEdyaWROb2RlLnByb3RvdHlwZS5fcG9wdWxhdGUpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLkhlYXBTbmFwc2hvdEdyaWROb2RlLnByb3RvdHlwZS5wb3B1bGF0ZUNoaWxkcmVuKToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RHcmlkTm9kZS5wcm90b3R5cGUuc29y
dC5hZnRlclNvcnQuYWZ0ZXJQb3B1bGF0ZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNu
YXBzaG90R3JpZE5vZGUucHJvdG90eXBlLnNvcnQuYWZ0ZXJTb3J0KToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5IZWFwU25hcHNob3RHcmlkTm9kZS5wcm90b3R5cGUuc29ydCk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90T2JqZWN0Tm9kZSk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuSGVhcFNuYXBzaG90T2JqZWN0Tm9kZS5wcm90b3R5cGUuX2NyZWF0ZUNoaWxkTm9kZSk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90T2JqZWN0Tm9kZS5wcm90b3R5cGUuX2Ny
ZWF0ZVByb3ZpZGVyKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RJbnN0YW5j
ZU5vZGUucHJvdG90eXBlLl9jcmVhdGVDaGlsZE5vZGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LkhlYXBTbmFwc2hvdEluc3RhbmNlTm9kZS5wcm90b3R5cGUuX2NyZWF0ZVByb3ZpZGVyKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RDb25zdHJ1Y3Rvck5vZGUucHJvdG90eXBl
Ll9jcmVhdGVOb2Rlc1Byb3ZpZGVyKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNo
b3RJdGVyYXRvcnNUdXBsZS5wcm90b3R5cGUuZGlzcG9zZSk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuSGVhcFNuYXBzaG90RGlmZk5vZGUucHJvdG90eXBlLmNhbGN1bGF0ZURpZmYuZGlmZkNhbGN1
bGF0ZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdERpZmZOb2RlLnByb3Rv
dHlwZS5jYWxjdWxhdGVEaWZmLmJhc2VJZHNSZWNlaXZlZCk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuSGVhcFNuYXBzaG90RGlmZk5vZGUucHJvdG90eXBlLl9jcmVhdGVOb2Rlc1Byb3ZpZGVyLmNy
ZWF0ZVByb3ZpZGVyKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3REaWZmTm9k
ZS5wcm90b3R5cGUuX2NyZWF0ZU5vZGVzUHJvdmlkZXIpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LkhlYXBTbmFwc2hvdERpZmZOb2RlLnByb3RvdHlwZS5nZXQgZGF0YSk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuSGVhcFNuYXBzaG90RG9taW5hdG9yT2JqZWN0Tm9kZS5wcm90b3R5cGUuX2NyZWF0
ZVByb3ZpZGVyKToKKyAgICAgICAgKE1peEluU25hcHNob3ROb2RlRnVuY3Rpb25zKToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0RldGFpbGVkSGVhcHNob3RWaWV3LmpzOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFNvcnRhYmxlRGF0YUdyaWQucHJvdG90eXBlLmRp
c3Bvc2UpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFNvcnRhYmxlRGF0YUdy
aWQucHJvdG90eXBlLnNvcnRpbmdDaGFuZ2VkLnNvcnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LkhlYXBTbmFwc2hvdFNvcnRhYmxlRGF0YUdyaWQucHJvdG90eXBlLnNvcnRpbmdDaGFuZ2VkKToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RTb3J0YWJsZURhdGFHcmlkLnByb3Rv
dHlwZS5fcGVyZm9ybVNvcnRpbmcpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hv
dFNvcnRhYmxlRGF0YUdyaWQucHJvdG90eXBlLnJlY3Vyc2l2ZVNvcnRpbmdFbnRlcik6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90U29ydGFibGVEYXRhR3JpZC5wcm90b3R5cGUu
cmVjdXJzaXZlU29ydGluZ0xlYXZlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNo
b3RDb250YWlubWVudERhdGFHcmlkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNo
b3RDb250YWlubWVudERhdGFHcmlkLnByb3RvdHlwZS5fZGVmYXVsdFBvcHVsYXRlQ291bnQuMTAw
LnNldERhdGFTb3VyY2UpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdENvbnRh
aW5tZW50RGF0YUdyaWQucHJvdG90eXBlLnNvcnRpbmdDaGFuZ2VkKToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5IZWFwU25hcHNob3REaWZmRGF0YUdyaWQucHJvdG90eXBlLnNldEJhc2VEYXRhU291
cmNlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3REb21pbmF0b3JzRGF0YUdy
aWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdERvbWluYXRvcnNEYXRhR3Jp
ZC5wcm90b3R5cGUuX2RlZmF1bHRQb3B1bGF0ZUNvdW50LjI1LnNldERhdGFTb3VyY2UpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdERvbWluYXRvcnNEYXRhR3JpZC5wcm90b3R5
cGUuc29ydGluZ0NoYW5nZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFJl
dGFpbmluZ1BhdGhzTGlzdC5wcm90b3R5cGUuZGlzcG9zZSk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuSGVhcFNuYXBzaG90UmV0YWluaW5nUGF0aHNMaXN0LnByb3RvdHlwZS5zZXREYXRhU291cmNl
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RSZXRhaW5pbmdQYXRoc0xpc3Qu
cHJvdG90eXBlLl9zZXRSb290Q2hpbGRyZW5Gb3JGaW5kZXIpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLkRldGFpbGVkSGVhcHNob3RWaWV3LnByb3RvdHlwZS5kaXNwb3NlKToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5EZXRhaWxlZEhlYXBzaG90Vmlldy5wcm90b3R5cGUuZ2V0IHByb2ZpbGVXcmFw
cGVyKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EZXRhaWxlZEhlYXBzaG90Vmlldy5wcm90b3R5
cGUuZ2V0IGJhc2VQcm9maWxlV3JhcHBlcik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGV0YWls
ZWRIZWFwc2hvdFZpZXcucHJvdG90eXBlLl9jaGFuZ2VCYXNlLmJhc2VQcm9maWxlTG9hZGVkKToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5EZXRhaWxlZEhlYXBzaG90Vmlldy5wcm90b3R5cGUuX2No
YW5nZUJhc2UpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRldGFpbGVkSGVhcHNob3RWaWV3LnBy
b3RvdHlwZS5fY2hhbmdlVmlldyk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9IZWFw
U25hcHNob3QuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90TG9hZGVyKToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RMb2FkZXIucHJvdG90eXBlLmZpbmlz
aExvYWRpbmcpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdExvYWRlci5wcm90
b3R5cGUucHVzaEpTT05DaHVuayk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90
LnByb3RvdHlwZS5kaXNwb3NlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3Qu
cHJvdG90eXBlLnB1c2hCYXNlSWRzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNo
b3QucHJvdG90eXBlLmNyZWF0ZURpZmYpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFw
c2hvdC5wcm90b3R5cGUuX3BhcnNlRmlsdGVyKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFw
U25hcHNob3QucHJvdG90eXBlLmNyZWF0ZUVkZ2VzUHJvdmlkZXIpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLkhlYXBTbmFwc2hvdC5wcm90b3R5cGUuY3JlYXRlTm9kZXNQcm92aWRlcik6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90LnByb3RvdHlwZS5jcmVhdGVQYXRoRmluZGVy
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3QucHJvdG90eXBlLnVwZGF0ZVN0
YXRpY0RhdGEpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdEZpbHRlcmVkT3Jk
ZXJlZEl0ZXJhdG9yLnByb3RvdHlwZS5zZXJpYWxpemVOZXh0SXRlbXMpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLkhlYXBTbmFwc2hvdEZpbHRlcmVkT3JkZXJlZEl0ZXJhdG9yLnByb3RvdHlwZS5z
b3J0QW5kUmV3aW5kKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RFZGdlc1By
b3ZpZGVyLnByb3RvdHlwZS5fc2VyaWFsaXplKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFw
U25hcHNob3ROb2Rlc1Byb3ZpZGVyLnByb3RvdHlwZS5fc2VyaWFsaXplKToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5IZWFwU25hcHNob3RQYXRoRmluZGVyKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5IZWFwU25hcHNob3RQYXRoRmluZGVyLnByb3RvdHlwZS51cGRhdGVSb290cyk6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90UGF0aEZpbmRlci5wcm90b3R5cGUuX3Jlc2V0KToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RzRGlmZi5wcm90b3R5cGUuY2FsY3Vs
YXRlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RzRGlmZi5wcm90b3R5cGUu
cHVzaEJhc2VJZHMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdHNEaWZmLnBy
b3RvdHlwZS5wdXNoQmFzZVNlbGZTaXplcyk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVu
ZC9IZWFwU25hcHNob3RQcm94eS5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNo
b3RSZWFsV29ya2VyKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RSZWFsV29y
a2VyLnByb3RvdHlwZS5fbWVzc2FnZVJlY2VpdmVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5I
ZWFwU25hcHNob3RSZWFsV29ya2VyLnByb3RvdHlwZS5wb3N0TWVzc2FnZSk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90UmVhbFdvcmtlci5wcm90b3R5cGUudGVybWluYXRlKToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RGYWtlV29ya2VyKToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RGYWtlV29ya2VyLnByb3RvdHlwZS5wb3N0TWVzc2Fn
ZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90RmFrZVdvcmtlci5wcm90b3R5
cGUudGVybWluYXRlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RGYWtlV29y
a2VyLnByb3RvdHlwZS5fcG9zdE1lc3NhZ2VGcm9tV29ya2VyKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5IZWFwU25hcHNob3RXb3JrZXIpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFw
c2hvdFdvcmtlci5wcm90b3R5cGUuY3JlYXRlT2JqZWN0KToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5IZWFwU25hcHNob3RXb3JrZXIucHJvdG90eXBlLmRpc3Bvc2UpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLkhlYXBTbmFwc2hvdFdvcmtlci5wcm90b3R5cGUuZGlzcG9zZU9iamVjdCk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90V29ya2VyLnByb3RvdHlwZS5jYWxsR2V0dGVy
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RXb3JrZXIucHJvdG90eXBlLmNh
bGxGYWN0b3J5TWV0aG9kLndyYXBDYWxsYmFjayk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVh
cFNuYXBzaG90V29ya2VyLnByb3RvdHlwZS5jYWxsRmFjdG9yeU1ldGhvZCk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90V29ya2VyLnByb3RvdHlwZS5jYWxsTWV0aG9kKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RXb3JrZXIucHJvdG90eXBlLl9maW5kRnVu
Y3Rpb24pOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFdvcmtlci5wcm90b3R5
cGUuX21lc3NhZ2VSZWNlaXZlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90
V29ya2VyLnByb3RvdHlwZS5fcG9zdE1lc3NhZ2UpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhl
YXBTbmFwc2hvdFByb3h5T2JqZWN0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNo
b3RQcm94eU9iamVjdC5wcm90b3R5cGUuX2NhbGxXb3JrZXIpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLkhlYXBTbmFwc2hvdFByb3h5T2JqZWN0LnByb3RvdHlwZS5kaXNwb3NlKToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RQcm94eU9iamVjdC5wcm90b3R5cGUuZGlzcG9zZVdv
cmtlcik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90UHJveHlPYmplY3QucHJv
dG90eXBlLmNhbGxGYWN0b3J5TWV0aG9kKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25h
cHNob3RQcm94eU9iamVjdC5wcm90b3R5cGUuY2FsbEdldHRlcik6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuSGVhcFNuYXBzaG90UHJveHlPYmplY3QucHJvdG90eXBlLmNhbGxNZXRob2QpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdExvYWRlclByb3h5KToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5IZWFwU25hcHNob3RMb2FkZXJQcm94eS5wcm90b3R5cGUuZmluaXNoTG9hZGlu
Zy5jYWxsTG9hZENhbGxiYWNrcyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90
TG9hZGVyUHJveHkucHJvdG90eXBlLmZpbmlzaExvYWRpbmcudXBkYXRlU3RhdGljRGF0YSk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90TG9hZGVyUHJveHkucHJvdG90eXBlLmZp
bmlzaExvYWRpbmcpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdExvYWRlclBy
b3h5LnByb3RvdHlwZS5nZXQgbG9hZGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25h
cHNob3RMb2FkZXJQcm94eS5wcm90b3R5cGUuc3RhcnRMb2FkaW5nKToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5IZWFwU25hcHNob3RMb2FkZXJQcm94eS5wcm90b3R5cGUucHVzaEpTT05DaHVuayk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90UHJveHkpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLkhlYXBTbmFwc2hvdFByb3h5LnByb3RvdHlwZS5hZ2dyZWdhdGVzKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RQcm94eS5wcm90b3R5cGUuY3JlYXRlRGlmZik6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90UHJveHkucHJvdG90eXBlLmNyZWF0
ZUVkZ2VzUHJvdmlkZXIpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFByb3h5
LnByb3RvdHlwZS5jcmVhdGVOb2Rlc1Byb3ZpZGVyKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5I
ZWFwU25hcHNob3RQcm94eS5wcm90b3R5cGUuY3JlYXRlUGF0aEZpbmRlcik6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90UHJveHkucHJvdG90eXBlLmRpc3Bvc2UpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFByb3h5LnByb3RvdHlwZS5maW5pc2hMb2FkaW5n
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RQcm94eS5wcm90b3R5cGUuZ2V0
IGxvYWRlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90UHJveHkucHJvdG90
eXBlLmdldCBub2RlQ291bnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFBy
b3h5LnByb3RvdHlwZS5ub2RlRmllbGRWYWx1ZXNCeUluZGV4KToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5IZWFwU25hcHNob3RQcm94eS5wcm90b3R5cGUucHVzaEJhc2VJZHMpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFByb3h5LnByb3RvdHlwZS5nZXQgcm9vdE5vZGVJbmRl
eCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90UHJveHkucHJvdG90eXBlLnVw
ZGF0ZVN0YXRpY0RhdGEpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFByb3h5
LnByb3RvdHlwZS5zdGFydExvYWRpbmcpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFw
c2hvdFByb3h5LnByb3RvdHlwZS5nZXQgdG90YWxTaXplKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5IZWFwU25hcHNob3RQcm94eS5wcm90b3R5cGUuZ2V0IHVpZCk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuSGVhcFNuYXBzaG90UHJvdmlkZXJQcm94eSk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
SGVhcFNuYXBzaG90UHJvdmlkZXJQcm94eS5wcm90b3R5cGUuaXNFbXB0eSk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90UHJvdmlkZXJQcm94eS5wcm90b3R5cGUuc2VyaWFsaXpl
TmV4dEl0ZW1zKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RQcm92aWRlclBy
b3h5LnByb3RvdHlwZS5zb3J0QW5kUmV3aW5kKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFw
U25hcHNob3RQYXRoRmluZGVyUHJveHkpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFw
c2hvdFBhdGhGaW5kZXJQcm94eS5wcm90b3R5cGUuZmluZE5leHQpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLkhlYXBTbmFwc2hvdFBhdGhGaW5kZXJQcm94eS5wcm90b3R5cGUudXBkYXRlUm9vdHMp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdHNEaWZmUHJveHkpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdHNEaWZmUHJveHkucHJvdG90eXBlLmNhbGN1bGF0
ZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90c0RpZmZQcm94eS5wcm90b3R5
cGUucHVzaEJhc2VJZHMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdHNEaWZm
UHJveHkucHJvdG90eXBlLnB1c2hCYXNlU2VsZlNpemVzKToKKyAgICAgICAgKiBpbnNwZWN0b3Iv
ZnJvbnQtZW5kL0hlYXBTbmFwc2hvdFdvcmtlci5qczogQWRkZWQuCisgICAgICAgICogaW5zcGVj
dG9yL2Zyb250LWVuZC9IZWFwU25hcHNob3RXb3JrZXJEaXNwYXRjaGVyLmpzOiBBZGRlZC4KKyAg
ICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1BsZWFzZVdhaXRNZXNzYWdlLmpzOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLlBsZWFzZVdhaXRNZXNzYWdlLnByb3RvdHlwZS5zaG93QW5kV2FpdEZv
cik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUGxlYXNlV2FpdE1lc3NhZ2UucHJvdG90eXBlLnVu
bGlzdGVuQW5kSGlkZSk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9Qcm9maWxlc1Bh
bmVsLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlByb2ZpbGVzUGFuZWwucHJvdG90eXBlLmxv
YWRIZWFwU25hcHNob3QpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlByb2ZpbGVzUGFuZWwucHJv
dG90eXBlLl9maW5pc2hIZWFwU25hcHNob3QuZWxzZS5wYXJzZWQpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLlByb2ZpbGVzUGFuZWwucHJvdG90eXBlLl9maW5pc2hIZWFwU25hcHNob3QpOgorICAg
ICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvV2ViS2l0LnFyYzoKKyAgICAgICAgKiBpbnNwZWN0
b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5odG1sOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1l
bmQvdXRpbGl0aWVzLmpzOgorCiAyMDExLTA0LTIxICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtp
dC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkK
aW5kZXggZWFjZjA3Yy4uMGRiN2M0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtNjE3Miw2ICs2MTcy
LDcgQEAKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0F1ZGl0UmVzdWx0Vmlldy5q
cycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9BdWRpdFJ1bGVzLmpzJywKICAg
ICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0F1ZGl0c1BhbmVsLmpzJywKKyAgICAgICAg
ICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0JpbmFyeVNlYXJjaC5qcycsCiAgICAgICAgICAgICAn
aW5zcGVjdG9yL2Zyb250LWVuZC9Cb3R0b21VcFByb2ZpbGVEYXRhR3JpZFRyZWUuanMnLAogICAg
ICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvQnJlYWtwb2ludHNTaWRlYmFyUGFuZS5qcycs
CiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9DYWxsU3RhY2tTaWRlYmFyUGFuZS5q
cycsCkBAIC02MjE1LDYgKzYyMTYsOCBAQAogICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1l
bmQvSGVhcFNuYXBzaG90LmpzJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0hl
YXBTbmFwc2hvdFByb3h5LmpzJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0hl
YXBTbmFwc2hvdFZpZXcuanMnLAorICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvSGVh
cFNuYXBzaG90V29ya2VyLmpzJywKKyAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0hl
YXBTbmFwc2hvdFdvcmtlckRpc3BhdGNoZXIuanMnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9m
cm9udC1lbmQvSGVscFNjcmVlbi5qcycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVu
ZC9JbWFnZVZpZXcuanMnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvSW5zcGVj
dG9yRnJvbnRlbmRIb3N0U3R1Yi5qcycsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9q
L1dlYkNvcmUudmNwcm9qCmluZGV4IDIzYWYzM2YuLjE2Yjg1MzMgMTAwNzU1Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCisrKyBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCkBAIC02NzA3Nyw2ICs2NzA3NywxMCBA
QAogCQkJCQk+CiAJCQkJPC9GaWxlPgogCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5c
aW5zcGVjdG9yXGZyb250LWVuZFxCaW5hcnlTZWFyY2guanMiCisJCQkJCT4KKwkJCQk8L0ZpbGU+
CisJCQkJPEZpbGUKIAkJCQkJUmVsYXRpdmVQYXRoPSIuLlxpbnNwZWN0b3JcZnJvbnQtZW5kXEJv
dHRvbVVwUHJvZmlsZURhdGFHcmlkVHJlZS5qcyIKIAkJCQkJPgogCQkJCTwvRmlsZT4KQEAgLTY3
MjU3LDYgKzY3MjYxLDE0IEBACiAJCQkJCT4KIAkJCQk8L0ZpbGU+CiAJCQkJPEZpbGUKKwkJCQkJ
UmVsYXRpdmVQYXRoPSIuLlxpbnNwZWN0b3JcZnJvbnQtZW5kXEhlYXBTbmFwc2hvdFdvcmtlci5q
cyIKKwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4u
XGluc3BlY3Rvclxmcm9udC1lbmRcSGVhcFNuYXBzaG90V29ya2VyRGlzcGF0Y2hlci5qcyIKKwkJ
CQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQogCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGluc3Bl
Y3Rvclxmcm9udC1lbmRcaGVscFNjcmVlbi5jc3MiCiAJCQkJCT4KIAkJCQk8L0ZpbGU+CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9neXAvc3RyZWFtbGluZS1pbnNwZWN0b3Itc291cmNlLnNo
IGIvU291cmNlL1dlYkNvcmUvZ3lwL3N0cmVhbWxpbmUtaW5zcGVjdG9yLXNvdXJjZS5zaAppbmRl
eCA2NjExNTU0Li5iNWExYzVhIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9neXAvc3RyZWFt
bGluZS1pbnNwZWN0b3Itc291cmNlLnNoCisrKyBiL1NvdXJjZS9XZWJDb3JlL2d5cC9zdHJlYW1s
aW5lLWluc3BlY3Rvci1zb3VyY2Uuc2gKQEAgLTgsNiArOCw5IEBAIGZpCiAjIENvbWJpbmUgYWxs
IHNjcmlwdCByZXNvdXJjZXMgaW4gdGhlIGluc3BlY3Rvci5odG1sIGZpbGUuCiAiJFNSQ1JPT1Qv
Li4vaW5zcGVjdG9yL2NvbWJpbmUtamF2YXNjcmlwdC1yZXNvdXJjZXMucGwiIC0taW5wdXQtaHRt
bCAiJHtTUkNST09UfS8uLi9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5odG1sIiAtLWdl
bmVyYXRlZC1zY3JpcHRzLWRpciAke0JVSUxUX1BST0RVQ1RTX0RJUn0vRGVyaXZlZFNvdXJjZXMv
V2ViQ29yZSAtLW91dHB1dC1kaXIgIiR7REVSSVZFRF9GSUxFX0RJUn0vV2ViQ29yZSIgLS1vdXRw
dXQtc2NyaXB0LW5hbWUgaW5zcGVjdG9yLmpzCiAKKyMgSW5saW5lIHNjcmlwdCBpbXBvcnRzIGlu
IEhlYXBTbmFwc2hvdFdvcmtlci5qcyBmaWxlLgorIiRTUkNST09ULy4uL2luc3BlY3Rvci9pbmxp
bmUtamF2YXNjcmlwdC1pbXBvcnRzLnB5IiAiJHtTUkNST09UfS8uLi9pbnNwZWN0b3IvZnJvbnQt
ZW5kL0hlYXBTbmFwc2hvdFdvcmtlci5qcyIgIiR7U1JDUk9PVH0vLi4vaW5zcGVjdG9yL2Zyb250
LWVuZCIgIiR7REVSSVZFRF9GSUxFX0RJUn0vV2ViQ29yZS9IZWFwU25hcHNob3RXb3JrZXIuanMi
CisKICMgSW5saW5lIHNjcmlwdCBpbXBvcnRzIGluIFNjcmlwdEZvcm1hdHRlcldvcmtlci5qcyBm
aWxlLgogIiRTUkNST09ULy4uL2luc3BlY3Rvci9pbmxpbmUtamF2YXNjcmlwdC1pbXBvcnRzLnB5
IiAiJHtTUkNST09UfS8uLi9pbnNwZWN0b3IvZnJvbnQtZW5kL1NjcmlwdEZvcm1hdHRlcldvcmtl
ci5qcyIgIiR7U1JDUk9PVH0vLi4vaW5zcGVjdG9yL2Zyb250LWVuZCIgIiR7REVSSVZFRF9GSUxF
X0RJUn0vV2ViQ29yZS9zY3JpcHRGb3JtYXR0ZXJXb3JrZXIuanMiCiAKQEAgLTE5LDUgKzIyLDYg
QEAgaWYgWyAtZCAiJHtUQVJHRVRfQlVJTERfRElSfS8ke1VOTE9DQUxJWkVEX1JFU09VUkNFU19G
T0xERVJfUEFUSH0vaW5zcGVjdG9yIiBdOwogICAgICMgQ29weSB0aGUgbW9kaWZpZWQgSFRNTCBm
aWxlIGFuZCB0aGUgY29tYmluZWQgc2NyaXB0cy4KICAgICBjcCAiJHtERVJJVkVEX0ZJTEVfRElS
fS9XZWJDb3JlL2luc3BlY3Rvci5odG1sIiBpbnNwZWN0b3IuaHRtbAogICAgIGNwICIke0RFUklW
RURfRklMRV9ESVJ9L1dlYkNvcmUvaW5zcGVjdG9yLmpzIiBpbnNwZWN0b3IuanMKKyAgICBjcCAi
JHtERVJJVkVEX0ZJTEVfRElSfS9XZWJDb3JlL0hlYXBTbmFwc2hvdFdvcmtlci5qcyIgSGVhcFNu
YXBzaG90V29ya2VyLmpzCiAgICAgY3AgIiR7REVSSVZFRF9GSUxFX0RJUn0vV2ViQ29yZS9zY3Jp
cHRGb3JtYXR0ZXJXb3JrZXIuanMiIHNjcmlwdEZvcm1hdHRlcldvcmtlci5qcwogZmkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQmluYXJ5U2VhcmNoLmpz
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9CaW5hcnlTZWFyY2guanMKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmRlZGExZQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQmluYXJ5U2VhcmNoLmpzCkBA
IC0wLDAgKzEsNzAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNyBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBt
ZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUg
b2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJT
IEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICog
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworZnVuY3Rpb24gYmluYXJ5U2VhcmNoKG9iamVjdCwgYXJyYXksIGNvbXBhcmF0
b3IpCit7CisgICAgdmFyIGZpcnN0ID0gMDsKKyAgICB2YXIgbGFzdCA9IGFycmF5Lmxlbmd0aCAt
IDE7CisKKyAgICB3aGlsZSAoZmlyc3QgPD0gbGFzdCkgeworICAgICAgICB2YXIgbWlkID0gKGZp
cnN0ICsgbGFzdCkgPj4gMTsKKyAgICAgICAgdmFyIGMgPSBjb21wYXJhdG9yKG9iamVjdCwgYXJy
YXlbbWlkXSk7CisgICAgICAgIGlmIChjID4gMCkKKyAgICAgICAgICAgIGZpcnN0ID0gbWlkICsg
MTsKKyAgICAgICAgZWxzZSBpZiAoYyA8IDApCisgICAgICAgICAgICBsYXN0ID0gbWlkIC0gMTsK
KyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmV0dXJuIG1pZDsKKyAgICB9CisKKyAgICAvLyBS
ZXR1cm4gdGhlIG5lYXJlc3QgbGVzc2VyIGluZGV4LCAiLTEiIG1lYW5zICIwLCAiLTIiIG1lYW5z
ICIxIiwgZXRjLgorICAgIHJldHVybiAtKGZpcnN0ICsgMSk7Cit9CisKK09iamVjdC5kZWZpbmVQ
cm9wZXJ0eShBcnJheS5wcm90b3R5cGUsICJiaW5hcnlJbmRleE9mIiwgeyB2YWx1ZTogZnVuY3Rp
b24odmFsdWUsIGNvbXBhcmF0b3IpCit7CisgICAgdmFyIHJlc3VsdCA9IGJpbmFyeVNlYXJjaCh2
YWx1ZSwgdGhpcywgY29tcGFyYXRvcik7CisgICAgcmV0dXJuIHJlc3VsdCA+PSAwID8gcmVzdWx0
IDogLTE7Cit9fSk7CisKK2Z1bmN0aW9uIGluc2VydGlvbkluZGV4Rm9yT2JqZWN0SW5MaXN0U29y
dGVkQnlGdW5jdGlvbihhbk9iamVjdCwgYUxpc3QsIGFGdW5jdGlvbikKK3sKKyAgICB2YXIgaW5k
ZXggPSBiaW5hcnlTZWFyY2goYW5PYmplY3QsIGFMaXN0LCBhRnVuY3Rpb24pOworICAgIGlmIChp
bmRleCA8IDApCisgICAgICAgIC8vIFNlZSBiaW5hcnlTZWFyY2ggaW1wbGVtZW50YXRpb24uCisg
ICAgICAgIHJldHVybiAtaW5kZXggLSAxOworICAgIGVsc2UgeworICAgICAgICAvLyBSZXR1cm4g
dGhlIGZpcnN0IG9jY3VyYW5jZSBvZiBhbiBpdGVtIGluIHRoZSBsaXN0LgorICAgICAgICB3aGls
ZSAoaW5kZXggPiAwICYmIGFGdW5jdGlvbihhbk9iamVjdCwgYUxpc3RbaW5kZXggLSAxXSkgPT09
IDApCisgICAgICAgICAgICBpbmRleC0tOworICAgICAgICByZXR1cm4gaW5kZXg7ICAgICAgICAK
KyAgICB9Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L0RldGFpbGVkSGVhcHNob3RHcmlkTm9kZXMuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL0RldGFpbGVkSGVhcHNob3RHcmlkTm9kZXMuanMKaW5kZXggZTcwNmUxZC4uMGI4
MTU1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9EZXRh
aWxlZEhlYXBzaG90R3JpZE5vZGVzLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvRGV0YWlsZWRIZWFwc2hvdEdyaWROb2Rlcy5qcwpAQCAtNDUsMTkgKzQ1LDIzIEBA
IFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RHcmlkTm9kZS5wcm90b3R5cGUgPSB7CiAgICAgICAg
IHJldHVybiBjZWxsOwogICAgIH0sCiAKLSAgICBfcG9wdWxhdGU6IGZ1bmN0aW9uKGV2ZW50KQor
ICAgIGRpc3Bvc2U6IGZ1bmN0aW9uKCkKICAgICB7Ci0gICAgICAgIFdlYkluc3BlY3Rvci5QbGVh
c2VXYWl0TWVzc2FnZS5wcm90b3R5cGUuc3RhcnRBY3Rpb24odGhpcy5kYXRhR3JpZC5lbGVtZW50
LCBkb1BvcHVsYXRlLmJpbmQodGhpcykpOworICAgICAgICBpZiAodGhpcy5fcHJvdmlkZXIpCisg
ICAgICAgICAgICB0aGlzLl9wcm92aWRlci5kaXNwb3NlKCk7CisgICAgICAgIGZvciAodmFyIG5v
ZGUgPSB0aGlzLmNoaWxkcmVuWzBdOyBub2RlOyBub2RlID0gbm9kZS50cmF2ZXJzZU5leHROb2Rl
KHRydWUsIHRoaXMsIHRydWUpKQorICAgICAgICAgICAgbm9kZS5kaXNwb3NlKCk7CisgICAgfSwK
IAotICAgICAgICBmdW5jdGlvbiBkb1BvcHVsYXRlKCkKKyAgICBfcG9wdWxhdGU6IGZ1bmN0aW9u
KGV2ZW50KQorICAgIHsKKyAgICAgICAgdGhpcy5yZW1vdmVFdmVudExpc3RlbmVyKCJwb3B1bGF0
ZSIsIHRoaXMuX3BvcHVsYXRlLCB0aGlzKTsKKyAgICAgICAgV2ViSW5zcGVjdG9yLlBsZWFzZVdh
aXRNZXNzYWdlLnByb3RvdHlwZS5zaG93QW5kV2FpdEZvcih0aGlzLmRhdGFHcmlkLmVsZW1lbnQs
IHRoaXMsICJwb3B1bGF0ZSBjb21wbGV0ZSIpOworICAgICAgICBmdW5jdGlvbiBzb3J0ZWQoaWdu
b3JlZCkKICAgICAgICAgewotICAgICAgICAgICAgdGhpcy5yZW1vdmVFdmVudExpc3RlbmVyKCJw
b3B1bGF0ZSIsIHRoaXMuX3BvcHVsYXRlLCB0aGlzKTsKLSAgICAgICAgICAgIGZ1bmN0aW9uIHNv
cnRlZChpZ25vcmVkKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHRoaXMucG9wdWxh
dGVDaGlsZHJlbigpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgdGhpcy5fcHJvdmlkZXIu
c29ydEFuZFJld2luZCh0aGlzLmNvbXBhcmF0b3IoKSwgc29ydGVkLmJpbmQodGhpcykpOworICAg
ICAgICAgICAgdGhpcy5wb3B1bGF0ZUNoaWxkcmVuKCk7CiAgICAgICAgIH0KKyAgICAgICAgdGhp
cy5fcHJvdmlkZXIuc29ydEFuZFJld2luZCh0aGlzLmNvbXBhcmF0b3IoKSwgc29ydGVkLmJpbmQo
dGhpcykpOwogICAgIH0sCiAKICAgICBwb3B1bGF0ZUNoaWxkcmVuOiBmdW5jdGlvbihwcm92aWRl
ciwgaG93TWFueSwgYXRJbmRleCwgYWZ0ZXJQb3B1bGF0ZSwgc3VwcHJlc3NOb3RpZnlBYm91dENv
bXBsZXRpb24pCkBAIC04MCw4ICs4NCwxMCBAQCBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90R3Jp
ZE5vZGUucHJvdG90eXBlID0gewogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIAot
ICAgICAgICBmdW5jdGlvbiBjaGlsZHJlblJldHJpZXZlZChpdGVtcywgaGFzTmV4dCwgbGVuZ3Ro
KQorICAgICAgICBmdW5jdGlvbiBjaGlsZHJlblJldHJpZXZlZChpdGVtcykKICAgICAgICAgewor
ICAgICAgICAgICAgdmFyIGhhc05leHQgPSBpdGVtcy5oYXNOZXh0OworICAgICAgICAgICAgdmFy
IGxlbmd0aCA9IGl0ZW1zLnRvdGFsTGVuZ3RoOwogICAgICAgICAgICAgZm9yICh2YXIgaSA9IDAs
IGwgPSBpdGVtcy5sZW5ndGg7IGkgPCBsOyArK2kpIHsKICAgICAgICAgICAgICAgICB2YXIgaXRl
bSA9IGl0ZW1zW2ldOwogICAgICAgICAgICAgICAgIGlmIChoYXZlU2F2ZWRDaGlsZHJlbikgewpA
QCAtMTA3LDcgKzExMyw3IEBAIFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RHcmlkTm9kZS5wcm90
b3R5cGUgPSB7CiAgICAgICAgICAgICAgICAgc2V0VGltZW91dChub3RpZnkuYmluZCh0aGlzKSwg
MCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICAgICAgcHJvdmlkZXIuZ2V0TmV4dEl0
ZW1zKGhvd01hbnksIGNoaWxkcmVuUmV0cmlldmVkLmJpbmQodGhpcykpOworICAgICAgICBwcm92
aWRlci5zZXJpYWxpemVOZXh0SXRlbXMoaG93TWFueSwgY2hpbGRyZW5SZXRyaWV2ZWQuYmluZCh0
aGlzKSk7CiAgICAgfSwKIAogICAgIF9zYXZlQ2hpbGRyZW46IGZ1bmN0aW9uKCkKQEAgLTEyMiwz
MCArMTI4LDI5IEBAIFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RHcmlkTm9kZS5wcm90b3R5cGUg
PSB7CiAKICAgICBzb3J0OiBmdW5jdGlvbigpCiAgICAgewotICAgICAgICBmdW5jdGlvbiBkb1Nv
cnQoKQorICAgICAgICBXZWJJbnNwZWN0b3IuUGxlYXNlV2FpdE1lc3NhZ2UucHJvdG90eXBlLnNo
b3dBbmRXYWl0Rm9yKHRoaXMuZGF0YUdyaWQuZWxlbWVudCwgdGhpcy5kYXRhR3JpZCwgInNvcnRp
bmcgY29tcGxldGUiKTsKKyAgICAgICAgdGhpcy5kYXRhR3JpZC5yZWN1cnNpdmVTb3J0aW5nRW50
ZXIoKTsKKyAgICAgICAgZnVuY3Rpb24gYWZ0ZXJTb3J0KHNvcnRlZCkKICAgICAgICAgewotICAg
ICAgICAgICAgZnVuY3Rpb24gYWZ0ZXJTb3J0KHNvcnRlZCkKKyAgICAgICAgICAgIGlmICghc29y
dGVkKSB7CisgICAgICAgICAgICAgICAgdGhpcy5kYXRhR3JpZC5yZWN1cnNpdmVTb3J0aW5nTGVh
dmUoKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICB0aGlzLl9zYXZlQ2hpbGRyZW4oKTsKKyAgICAgICAgICAgIHRoaXMucmVtb3ZlQ2hpbGRyZW4o
KTsKKyAKKyAgICAgICAgICAgIGZ1bmN0aW9uIGFmdGVyUG9wdWxhdGUoKQogICAgICAgICAgICAg
ewotICAgICAgICAgICAgICAgIGlmICghc29ydGVkKQotICAgICAgICAgICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgICAgICAgICAgdGhpcy5fc2F2ZUNoaWxkcmVuKCk7Ci0gICAgICAgICAgICAg
ICAgdGhpcy5yZW1vdmVDaGlsZHJlbigpOwotICAgICAKLSAgICAgICAgICAgICAgICBmdW5jdGlv
biBhZnRlclBvcHVsYXRlKCkKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAg
IGZvciAodmFyIGkgPSAwLCBsID0gdGhpcy5jaGlsZHJlbi5sZW5ndGg7IGkgPCBsOyArK2kpIHsK
LSAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjaGlsZCA9IHRoaXMuY2hpbGRyZW5baV07Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBpZiAoY2hpbGQuZXhwYW5kZWQpCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY2hpbGQuc29ydCgpOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICAgICAgICAgIHRoaXMuZGF0YUdyaWQuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKCJz
b3J0aW5nIGNvbXBsZXRlIik7CisgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDAsIGwgPSB0
aGlzLmNoaWxkcmVuLmxlbmd0aDsgaSA8IGw7ICsraSkgeworICAgICAgICAgICAgICAgICAgICB2
YXIgY2hpbGQgPSB0aGlzLmNoaWxkcmVuW2ldOworICAgICAgICAgICAgICAgICAgICBpZiAoY2hp
bGQuZXhwYW5kZWQpCisgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZC5zb3J0KCk7CiAgICAg
ICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHRoaXMucG9wdWxhdGVDaGlsZHJlbih0aGlz
Ll9wcm92aWRlciwgbnVsbCwgbnVsbCwgYWZ0ZXJQb3B1bGF0ZS5iaW5kKHRoaXMpKTsKKyAgICAg
ICAgICAgICAgICB0aGlzLmRhdGFHcmlkLnJlY3Vyc2l2ZVNvcnRpbmdMZWF2ZSgpOwogICAgICAg
ICAgICAgfQotICAgICAgICAgICAgdGhpcy5fcHJvdmlkZXIuc29ydEFuZFJld2luZCh0aGlzLmNv
bXBhcmF0b3IoKSwgYWZ0ZXJTb3J0LmJpbmQodGhpcykpOworICAgICAgICAgICAgdGhpcy5wb3B1
bGF0ZUNoaWxkcmVuKHRoaXMuX3Byb3ZpZGVyLCBudWxsLCBudWxsLCBhZnRlclBvcHVsYXRlLmJp
bmQodGhpcykpOwogICAgICAgICB9Ci0gICAgICAgIHRoaXMuZGF0YUdyaWQuZGlzcGF0Y2hFdmVu
dFRvTGlzdGVuZXJzKCJzdGFydCBzb3J0aW5nIik7Ci0gICAgICAgIFdlYkluc3BlY3Rvci5QbGVh
c2VXYWl0TWVzc2FnZS5wcm90b3R5cGUuc3RhcnRBY3Rpb24odGhpcy5kYXRhR3JpZC5lbGVtZW50
LCBkb1NvcnQuYmluZCh0aGlzKSk7CisgICAgICAgIHRoaXMuX3Byb3ZpZGVyLnNvcnRBbmRSZXdp
bmQodGhpcy5jb21wYXJhdG9yKCksIGFmdGVyU29ydC5iaW5kKHRoaXMpKTsKICAgICB9CiB9Owog
CkBAIC0yNTcsMTkgKzI2MiwyMCBAQCBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90R2VuZXJpY09i
amVjdE5vZGUucHJvdG90eXBlID0gewogCiBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90R2VuZXJp
Y09iamVjdE5vZGUucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5IZWFwU25hcHNo
b3RHcmlkTm9kZS5wcm90b3R5cGU7CiAKLVdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RPYmplY3RO
b2RlID0gZnVuY3Rpb24odHJlZSwgZWRnZSkKK1dlYkluc3BlY3Rvci5IZWFwU25hcHNob3RPYmpl
Y3ROb2RlID0gZnVuY3Rpb24odHJlZSwgaXNGcm9tQmFzZVNuYXBzaG90LCBlZGdlKQogewogICAg
IFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RHZW5lcmljT2JqZWN0Tm9kZS5jYWxsKHRoaXMsIHRy
ZWUsIGVkZ2Uubm9kZSk7CiAgICAgdGhpcy5fcmVmZXJlbmNlTmFtZSA9IGVkZ2UubmFtZTsKICAg
ICB0aGlzLl9yZWZlcmVuY2VUeXBlID0gZWRnZS50eXBlOwotICAgIHRoaXMuX3Byb3ZpZGVyID0g
dGhpcy5fY3JlYXRlUHJvdmlkZXIodHJlZS5zbmFwc2hvdCwgZWRnZS5ub2RlSW5kZXgpOworICAg
IHRoaXMuX2lzRnJvbUJhc2VTbmFwc2hvdCA9IGlzRnJvbUJhc2VTbmFwc2hvdDsKKyAgICB0aGlz
Ll9wcm92aWRlciA9IHRoaXMuX2NyZWF0ZVByb3ZpZGVyKCFpc0Zyb21CYXNlU25hcHNob3QgPyB0
cmVlLnNuYXBzaG90IDogdHJlZS5iYXNlU25hcHNob3QsIGVkZ2Uubm9kZUluZGV4KTsKICAgICB0
aGlzLl91cGRhdGVIYXNDaGlsZHJlbigpOwogfQogCiBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90
T2JqZWN0Tm9kZS5wcm90b3R5cGUgPSB7CiAgICAgX2NyZWF0ZUNoaWxkTm9kZTogZnVuY3Rpb24o
aXRlbSkKICAgICB7Ci0gICAgICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hv
dE9iamVjdE5vZGUodGhpcy5kYXRhR3JpZCwgaXRlbSk7CisgICAgICAgIHJldHVybiBuZXcgV2Vi
SW5zcGVjdG9yLkhlYXBTbmFwc2hvdE9iamVjdE5vZGUodGhpcy5kYXRhR3JpZCwgdGhpcy5faXNG
cm9tQmFzZVNuYXBzaG90LCBpdGVtKTsKICAgICB9LAogCiAgICAgX2NyZWF0ZVByb3ZpZGVyOiBm
dW5jdGlvbihzbmFwc2hvdCwgbm9kZUluZGV4KQpAQCAtMjc3LDEwICsyODMsMTAgQEAgV2ViSW5z
cGVjdG9yLkhlYXBTbmFwc2hvdE9iamVjdE5vZGUucHJvdG90eXBlID0gewogICAgICAgICB2YXIg
c2hvd0hpZGRlbkRhdGEgPSBXZWJJbnNwZWN0b3IuRGV0YWlsZWRIZWFwc2hvdFZpZXcucHJvdG90
eXBlLnNob3dIaWRkZW5EYXRhOwogICAgICAgICByZXR1cm4gc25hcHNob3QuY3JlYXRlRWRnZXNQ
cm92aWRlcigKICAgICAgICAgICAgIG5vZGVJbmRleCwKLSAgICAgICAgICAgIGZ1bmN0aW9uKGVk
Z2UpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gIWVkZ2UuaXNJbnZpc2libGUKLSAgICAgICAg
ICAgICAgICAgICAgJiYgKHNob3dIaWRkZW5EYXRhIHx8ICghZWRnZS5pc0hpZGRlbiAmJiAhZWRn
ZS5ub2RlLmlzSGlkZGVuKSk7Ci0gICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICJmdW5jdGlv
bihlZGdlKSB7IiArCisgICAgICAgICAgICAiICAgIHJldHVybiAhZWRnZS5pc0ludmlzaWJsZSIg
KworICAgICAgICAgICAgIiAgICAgICAgJiYgKCIgKyBzaG93SGlkZGVuRGF0YSArICIgfHwgKCFl
ZGdlLmlzSGlkZGVuICYmICFlZGdlLm5vZGUuaXNIaWRkZW4pKTsiICsKKyAgICAgICAgICAgICJ9
Iik7CiAgICAgfSwKIAogICAgIF9jaGlsZEhhc2hGb3JFbnRpdHk6IGZ1bmN0aW9uKGVkZ2UpCkBA
IC0zNTYsNyArMzYyLDcgQEAgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdEluc3RhbmNlTm9kZSA9
IGZ1bmN0aW9uKHRyZWUsIGJhc2VTbmFwc2hvdCwgc25hcHNob3QsIG4KIFdlYkluc3BlY3Rvci5I
ZWFwU25hcHNob3RJbnN0YW5jZU5vZGUucHJvdG90eXBlID0gewogICAgIF9jcmVhdGVDaGlsZE5v
ZGU6IGZ1bmN0aW9uKGl0ZW0pCiAgICAgewotICAgICAgICByZXR1cm4gbmV3IFdlYkluc3BlY3Rv
ci5IZWFwU25hcHNob3RPYmplY3ROb2RlKHRoaXMuZGF0YUdyaWQsIGl0ZW0pOworICAgICAgICBy
ZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RPYmplY3ROb2RlKHRoaXMuZGF0YUdy
aWQsIHRoaXMuX2lzRGVsZXRlZE5vZGUsIGl0ZW0pOwogICAgIH0sCiAKICAgICBfY3JlYXRlUHJv
dmlkZXI6IGZ1bmN0aW9uKHNuYXBzaG90LCBub2RlSW5kZXgpCkBAIC0zNjQsMTAgKzM3MCwxMCBA
QCBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90SW5zdGFuY2VOb2RlLnByb3RvdHlwZSA9IHsKICAg
ICAgICAgdmFyIHNob3dIaWRkZW5EYXRhID0gV2ViSW5zcGVjdG9yLkRldGFpbGVkSGVhcHNob3RW
aWV3LnByb3RvdHlwZS5zaG93SGlkZGVuRGF0YTsKICAgICAgICAgcmV0dXJuIHNuYXBzaG90LmNy
ZWF0ZUVkZ2VzUHJvdmlkZXIoCiAgICAgICAgICAgICBub2RlSW5kZXgsCi0gICAgICAgICAgICBm
dW5jdGlvbihlZGdlKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuICFlZGdlLmlzSW52aXNpYmxl
Ci0gICAgICAgICAgICAgICAgICAgICYmIChzaG93SGlkZGVuRGF0YSB8fCAoIWVkZ2UuaXNIaWRk
ZW4gJiYgIWVkZ2Uubm9kZS5pc0hpZGRlbikpOwotICAgICAgICAgICAgfSk7CisgICAgICAgICAg
ICAiZnVuY3Rpb24oZWRnZSkgeyIgKworICAgICAgICAgICAgIiAgICByZXR1cm4gIWVkZ2UuaXNJ
bnZpc2libGUiICsKKyAgICAgICAgICAgICIgICAgICAgICYmICgiICsgc2hvd0hpZGRlbkRhdGEg
KyAiIHx8ICghZWRnZS5pc0hpZGRlbiAmJiAhZWRnZS5ub2RlLmlzSGlkZGVuKSk7IiArCisgICAg
ICAgICAgICAifSIpOwogICAgIH0sCiAKICAgICBfY2hpbGRIYXNoRm9yRW50aXR5OiBmdW5jdGlv
bihlZGdlKQpAQCAtNDM4LDEwICs0NDQsMTAgQEAgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdENv
bnN0cnVjdG9yTm9kZS5wcm90b3R5cGUgPSB7CiAgICAgX2NyZWF0ZU5vZGVzUHJvdmlkZXI6IGZ1
bmN0aW9uKHNuYXBzaG90LCBub2RlVHlwZSwgbm9kZUNsYXNzTmFtZSkKICAgICB7CiAgICAgICAg
IHJldHVybiBzbmFwc2hvdC5jcmVhdGVOb2Rlc1Byb3ZpZGVyKAotICAgICAgICAgICAgZnVuY3Rp
b24gKG5vZGUpIHsKLSAgICAgICAgICAgICAgICAgcmV0dXJuIG5vZGUudHlwZSA9PT0gbm9kZVR5
cGUKLSAgICAgICAgICAgICAgICAgICAgJiYgKG5vZGVDbGFzc05hbWUgPT09IG51bGwgfHwgbm9k
ZS5jbGFzc05hbWUgPT09IG5vZGVDbGFzc05hbWUpOwotICAgICAgICAgICAgfSk7CisgICAgICAg
ICAgICAiZnVuY3Rpb24gKG5vZGUpIHsiICsgCisgICAgICAgICAgICAiICAgICByZXR1cm4gbm9k
ZS50eXBlID09PSBcIiIgKyBub2RlVHlwZSArICJcIiAiICsKKyAgICAgICAgICAgIChub2RlQ2xh
c3NOYW1lICE9PSBudWxsID8gIiYmIG5vZGUuY2xhc3NOYW1lID09PSBcIiIgKyBub2RlQ2xhc3NO
YW1lICsgIlwiIiA6ICIiKSArCisgICAgICAgICAgICAifSIpOwogICAgIH0sCiAKICAgICBjb21w
YXJhdG9yOiBmdW5jdGlvbigpCkBAIC01MDIsNiArNTA4LDEyIEBAIFdlYkluc3BlY3Rvci5IZWFw
U25hcHNob3RJdGVyYXRvcnNUdXBsZSA9IGZ1bmN0aW9uKGl0MSwgaXQyKQogfQogCiBXZWJJbnNw
ZWN0b3IuSGVhcFNuYXBzaG90SXRlcmF0b3JzVHVwbGUucHJvdG90eXBlID0geworICAgIGRpc3Bv
c2U6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHRoaXMuX2l0MS5kaXNwb3NlKCk7CisgICAg
ICAgIHRoaXMuX2l0Mi5kaXNwb3NlKCk7CisgICAgfSwKKwogICAgIHNvcnRBbmRSZXdpbmQ6IGZ1
bmN0aW9uKGNvbXBhcmF0b3IsIGNhbGxiYWNrKQogICAgIHsKICAgICAgICAgZnVuY3Rpb24gYWZ0
ZXJTb3J0KGlnbm9yZWQpCkBAIC01MjgsMTAgKzU0MCwxNiBAQCBXZWJJbnNwZWN0b3IuSGVhcFNu
YXBzaG90RGlmZk5vZGUucHJvdG90eXBlID0gewogICAgICAgICAKICAgICAgICAgZnVuY3Rpb24g
ZGlmZkNhbGN1bGF0ZWQoZGlmZlJlc3VsdCkKICAgICAgICAgewotICAgICAgICAgICAgdGhpcy5f
ZGlmZiA9IGRpZmZSZXN1bHQ7CisgICAgICAgICAgICBkaWZmLmRpc3Bvc2UoKTsKKyAgICAgICAg
ICAgIHRoaXMuX2FkZGVkQ291bnQgPSBkaWZmUmVzdWx0LmFkZGVkQ291bnQ7CisgICAgICAgICAg
ICB0aGlzLl9yZW1vdmVkQ291bnQgPSBkaWZmUmVzdWx0LnJlbW92ZWRDb3VudDsKKyAgICAgICAg
ICAgIHRoaXMuX2NvdW50RGVsdGEgPSBkaWZmUmVzdWx0LmNvdW50RGVsdGE7CisgICAgICAgICAg
ICB0aGlzLl9hZGRlZFNpemUgPSBkaWZmUmVzdWx0LmFkZGVkU2l6ZTsKKyAgICAgICAgICAgIHRo
aXMuX3JlbW92ZWRTaXplID0gZGlmZlJlc3VsdC5yZW1vdmVkU2l6ZTsKKyAgICAgICAgICAgIHRo
aXMuX3NpemVEZWx0YSA9IGRpZmZSZXN1bHQuc2l6ZURlbHRhOwogICAgICAgICAgICAgdGhpcy5f
YmFzZUluZGV4ZXMgPSBudWxsOwogICAgICAgICAgICAgdGhpcy5faW5kZXhlcyA9IG51bGw7Ci0g
ICAgICAgICAgICBjYWxsYmFjayh0aGlzLl9kaWZmLmFkZGVkU2l6ZSA9PT0gMCAmJiB0aGlzLl9k
aWZmLnJlbW92ZWRTaXplID09PSAwKTsKKyAgICAgICAgICAgIGNhbGxiYWNrKHRoaXMuX2FkZGVk
U2l6ZSA9PT0gMCAmJiB0aGlzLl9yZW1vdmVkU2l6ZSA9PT0gMCk7CiAgICAgICAgIH0KICAgICAg
ICAgZnVuY3Rpb24gYmFzZVNlbGZTaXplc1JlY2VpdmVkKGJhc2VTZWxmU2l6ZXMpCiAgICAgICAg
IHsKQEAgLTU0MCw3ICs1NTgsNyBAQCBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90RGlmZk5vZGUu
cHJvdG90eXBlID0gewogICAgICAgICB9CiAgICAgICAgIGZ1bmN0aW9uIGJhc2VJZHNSZWNlaXZl
ZChiYXNlSWRzKQogICAgICAgICB7Ci0gICAgICAgICAgICBkaWZmLnB1c2hCYXNlSWRzKGRhdGFH
cmlkLmJhc2VTbmFwc2hvdC51aWQsIGJhc2VJZHMpOworICAgICAgICAgICAgZGlmZi5wdXNoQmFz
ZUlkcyhiYXNlSWRzKTsKICAgICAgICAgICAgIGRhdGFHcmlkLnNuYXBzaG90LnB1c2hCYXNlSWRz
KGRhdGFHcmlkLmJhc2VTbmFwc2hvdC51aWQsIHRoaXMuX25hbWUsIGJhc2VJZHMpOwogICAgICAg
ICAgICAgZGF0YUdyaWQuYmFzZVNuYXBzaG90Lm5vZGVGaWVsZFZhbHVlc0J5SW5kZXgoInNlbGZT
aXplIiwgdGhpcy5fYmFzZUluZGV4ZXMsIGJhc2VTZWxmU2l6ZXNSZWNlaXZlZC5iaW5kKHRoaXMp
KTsKICAgICAgICAgfQpAQCAtNTcwLDExICs1ODgsMTEgQEAgV2ViSW5zcGVjdG9yLkhlYXBTbmFw
c2hvdERpZmZOb2RlLnByb3RvdHlwZSA9IHsKICAgICAgICAgewogICAgICAgICAgICAgdmFyIG90
aGVyU25hcHNob3RJZCA9IG90aGVyU25hcHNob3QudWlkOwogICAgICAgICAgICAgdmFyIHByb3Zp
ZGVyID0gc25hcHNob3QuY3JlYXRlTm9kZXNQcm92aWRlcigKLSAgICAgICAgICAgICAgICBmdW5j
dGlvbiAobm9kZSkgewotICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5vZGUudHlwZSA9PT0g
bm9kZVR5cGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAmJiAobm9kZUNsYXNzTmFtZSA9PT0g
bnVsbCB8fCBub2RlLmNsYXNzTmFtZSA9PT0gbm9kZUNsYXNzTmFtZSkKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAmJiAhdGhpcy5iYXNlU25hcHNob3RIYXNOb2RlKG90aGVyU25hcHNob3RJZCwg
Y2xhc3NOYW1lLCBub2RlLmlkKTsKLSAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAg
ICAiZnVuY3Rpb24gKG5vZGUpIHsiICsKKyAgICAgICAgICAgICAgICAiICAgICByZXR1cm4gbm9k
ZS50eXBlID09PSBcIiIgKyBub2RlVHlwZSArICJcIiAiICsKKyAgICAgICAgICAgICAgICAobm9k
ZUNsYXNzTmFtZSAhPT0gbnVsbCA/ICImJiBub2RlLmNsYXNzTmFtZSA9PT0gXCIiICsgbm9kZUNs
YXNzTmFtZSArICJcIiIgOiAiIikgKworICAgICAgICAgICAgICAgICIgICAgICAgICAmJiAhdGhp
cy5iYXNlU25hcHNob3RIYXNOb2RlKCIgKyBvdGhlclNuYXBzaG90SWQgKyAiLCBcIiIgKyBjbGFz
c05hbWUgKyAiXCIsIG5vZGUuaWQpOyIgKworICAgICAgICAgICAgICAgICJ9Iik7CiAgICAgICAg
ICAgICBwcm92aWRlci5zbmFwc2hvdCA9IHNuYXBzaG90OwogICAgICAgICAgICAgcmV0dXJuIHBy
b3ZpZGVyOwogICAgICAgICB9CkBAIC02MzgsMTQgKzY1NiwxMiBAQCBXZWJJbnNwZWN0b3IuSGVh
cFNuYXBzaG90RGlmZk5vZGUucHJvdG90eXBlID0gewogICAgIHsKICAgICAgICAgdmFyIGRhdGEg
PSB7b2JqZWN0OiB0aGlzLl9uYW1lfTsKIAotICAgICAgICBkYXRhWyJhZGRlZENvdW50Il0gPSB0
aGlzLl9kaWZmLmFkZGVkQ291bnQ7Ci0gICAgICAgIGRhdGFbInJlbW92ZWRDb3VudCJdID0gdGhp
cy5fZGlmZi5yZW1vdmVkQ291bnQ7Ci0gICAgICAgIHZhciBjb3VudERlbHRhID0gdGhpcy5fZGlm
Zi5jb3VudERlbHRhOwotICAgICAgICBkYXRhWyJjb3VudERlbHRhIl0gPSBXZWJJbnNwZWN0b3Iu
VUlTdHJpbmcoIiVzJWQiLCB0aGlzLl9zaWduRm9yRGVsdGEoY291bnREZWx0YSksIE1hdGguYWJz
KGNvdW50RGVsdGEpKTsKLSAgICAgICAgZGF0YVsiYWRkZWRTaXplIl0gPSBOdW1iZXIuYnl0ZXNU
b1N0cmluZyh0aGlzLl9kaWZmLmFkZGVkU2l6ZSk7Ci0gICAgICAgIGRhdGFbInJlbW92ZWRTaXpl
Il0gPSBOdW1iZXIuYnl0ZXNUb1N0cmluZyh0aGlzLl9kaWZmLnJlbW92ZWRTaXplKTsKLSAgICAg
ICAgdmFyIHNpemVEZWx0YSA9IHRoaXMuX2RpZmYuc2l6ZURlbHRhOwotICAgICAgICBkYXRhWyJz
aXplRGVsdGEiXSA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiJXMlcyIsIHRoaXMuX3NpZ25Gb3JE
ZWx0YShzaXplRGVsdGEpLCBOdW1iZXIuYnl0ZXNUb1N0cmluZyhNYXRoLmFicyhzaXplRGVsdGEp
KSk7CisgICAgICAgIGRhdGFbImFkZGVkQ291bnQiXSA9IHRoaXMuX2FkZGVkQ291bnQ7CisgICAg
ICAgIGRhdGFbInJlbW92ZWRDb3VudCJdID0gdGhpcy5fcmVtb3ZlZENvdW50OworICAgICAgICBk
YXRhWyJjb3VudERlbHRhIl0gPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIiVzJWQiLCB0aGlzLl9z
aWduRm9yRGVsdGEodGhpcy5fY291bnREZWx0YSksIE1hdGguYWJzKHRoaXMuX2NvdW50RGVsdGEp
KTsKKyAgICAgICAgZGF0YVsiYWRkZWRTaXplIl0gPSBOdW1iZXIuYnl0ZXNUb1N0cmluZyh0aGlz
Ll9hZGRlZFNpemUpOworICAgICAgICBkYXRhWyJyZW1vdmVkU2l6ZSJdID0gTnVtYmVyLmJ5dGVz
VG9TdHJpbmcodGhpcy5fcmVtb3ZlZFNpemUpOworICAgICAgICBkYXRhWyJzaXplRGVsdGEiXSA9
IFdlYkluc3BlY3Rvci5VSVN0cmluZygiJXMlcyIsIHRoaXMuX3NpZ25Gb3JEZWx0YSh0aGlzLl9z
aXplRGVsdGEpLCBOdW1iZXIuYnl0ZXNUb1N0cmluZyhNYXRoLmFicyh0aGlzLl9zaXplRGVsdGEp
KSk7CiAKICAgICAgICAgcmV0dXJuIGRhdGE7CiAgICAgfQpAQCAtNjcwLDEyICs2ODYsMTIgQEAg
V2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdERvbWluYXRvck9iamVjdE5vZGUucHJvdG90eXBlID0g
ewogICAgIHsKICAgICAgICAgdmFyIHNob3dIaWRkZW5EYXRhID0gV2ViSW5zcGVjdG9yLkRldGFp
bGVkSGVhcHNob3RWaWV3LnByb3RvdHlwZS5zaG93SGlkZGVuRGF0YTsKICAgICAgICAgcmV0dXJu
IHNuYXBzaG90LmNyZWF0ZU5vZGVzUHJvdmlkZXIoCi0gICAgICAgICAgICBmdW5jdGlvbiAobm9k
ZSkgewotICAgICAgICAgICAgICAgICB2YXIgZG9taW5hdG9ySW5kZXggPSBub2RlLmRvbWluYXRv
ckluZGV4OwotICAgICAgICAgICAgICAgICByZXR1cm4gZG9taW5hdG9ySW5kZXggPT09IG5vZGVJ
bmRleAotICAgICAgICAgICAgICAgICAgICAgJiYgZG9taW5hdG9ySW5kZXggIT09IG5vZGUubm9k
ZUluZGV4Ci0gICAgICAgICAgICAgICAgICAgICAmJiAoc2hvd0hpZGRlbkRhdGEgfHwgIW5vZGUu
aXNIaWRkZW4pOwotICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAiZnVuY3Rpb24gKG5vZGUp
IHsiICsKKyAgICAgICAgICAgICIgICAgIHZhciBkb21pbmF0b3JJbmRleCA9IG5vZGUuZG9taW5h
dG9ySW5kZXg7IiArCisgICAgICAgICAgICAiICAgICByZXR1cm4gZG9taW5hdG9ySW5kZXggPT09
ICIgKyBub2RlSW5kZXggKyAKKyAgICAgICAgICAgICIgICAgICAgICAmJiBkb21pbmF0b3JJbmRl
eCAhPT0gbm9kZS5ub2RlSW5kZXgiICsKKyAgICAgICAgICAgICIgICAgICAgICAmJiAoIiArIHNo
b3dIaWRkZW5EYXRhICsgIiB8fCAhbm9kZS5pc0hpZGRlbik7IiArCisgICAgICAgICAgICAifSIp
OwogICAgIH0sCiAKICAgICBfY2hpbGRIYXNoRm9yRW50aXR5OiBmdW5jdGlvbihub2RlKQpAQCAt
NzE1LDYgKzczMSw3IEBAIGZ1bmN0aW9uIE1peEluU25hcHNob3ROb2RlRnVuY3Rpb25zKHNvdXJj
ZVByb3RvdHlwZSwgdGFyZ2V0UHJvdG90eXBlKQogICAgIHRhcmdldFByb3RvdHlwZS5jb21wYXJh
dG9yID0gc291cmNlUHJvdG90eXBlLmNvbXBhcmF0b3I7CiAgICAgdGFyZ2V0UHJvdG90eXBlLl9j
cmVhdGVDaGlsZE5vZGUgPSBzb3VyY2VQcm90b3R5cGUuX2NyZWF0ZUNoaWxkTm9kZTsKICAgICB0
YXJnZXRQcm90b3R5cGUuX2NyZWF0ZVByb3ZpZGVyID0gc291cmNlUHJvdG90eXBlLl9jcmVhdGVQ
cm92aWRlcjsKKyAgICB0YXJnZXRQcm90b3R5cGUuZGlzcG9zZSA9IHNvdXJjZVByb3RvdHlwZS5k
aXNwb3NlOwogICAgIHRhcmdldFByb3RvdHlwZS5wb3B1bGF0ZUNoaWxkcmVuID0gc291cmNlUHJv
dG90eXBlLnBvcHVsYXRlQ2hpbGRyZW47CiAgICAgdGFyZ2V0UHJvdG90eXBlLl9zYXZlQ2hpbGRy
ZW4gPSBzb3VyY2VQcm90b3R5cGUuX3NhdmVDaGlsZHJlbjsKICAgICB0YXJnZXRQcm90b3R5cGUu
c29ydCA9IHNvdXJjZVByb3RvdHlwZS5zb3J0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9EZXRhaWxlZEhlYXBzaG90Vmlldy5qcyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRGV0YWlsZWRIZWFwc2hvdFZpZXcuanMKaW5kZXggMWU0
NmI1MS4uYmZlYzEzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9EZXRhaWxlZEhlYXBzaG90Vmlldy5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL0RldGFpbGVkSGVhcHNob3RWaWV3LmpzCkBAIC0yOCwzMyArMjgsNiBAQAog
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90Q29udGFpbm1l
bnREYXRhR3JpZCA9IGZ1bmN0aW9uKCkKLXsKLSAgICB2YXIgY29sdW1ucyA9IHsKLSAgICAgICAg
b2JqZWN0OiB7IHRpdGxlOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIk9iamVjdCIpLCBkaXNjbG9z
dXJlOiB0cnVlLCBzb3J0YWJsZTogdHJ1ZSwgc29ydDogImFzY2VuZGluZyIgfSwKLSAgICAgICAg
c2hhbGxvd1NpemU6IHsgdGl0bGU6IFdlYkluc3BlY3Rvci5VSVN0cmluZygiU2hhbGxvdyBTaXpl
IiksIHdpZHRoOiAiOTBweCIsIHNvcnRhYmxlOiB0cnVlIH0sCi0gICAgICAgIHJldGFpbmVkU2l6
ZTogeyB0aXRsZTogV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJSZXRhaW5lZCBTaXplIiksIHdpZHRo
OiAiOTBweCIsIHNvcnRhYmxlOiB0cnVlIH0KLSAgICB9OwotICAgIFdlYkluc3BlY3Rvci5EYXRh
R3JpZC5jYWxsKHRoaXMsIGNvbHVtbnMpOwotICAgIHRoaXMuYWRkRXZlbnRMaXN0ZW5lcigic29y
dGluZyBjaGFuZ2VkIiwgdGhpcy5zb3J0LCB0aGlzKTsKLX0KLQotV2ViSW5zcGVjdG9yLkhlYXBT
bmFwc2hvdENvbnRhaW5tZW50RGF0YUdyaWQucHJvdG90eXBlID0gewotICAgIF9kZWZhdWx0UG9w
dWxhdGVDb3VudDogMTAwLAotCi0gICAgc2V0RGF0YVNvdXJjZTogZnVuY3Rpb24oc25hcHNob3RW
aWV3LCBzbmFwc2hvdCkKLSAgICB7Ci0gICAgICAgIHRoaXMuc25hcHNob3RWaWV3ID0gc25hcHNo
b3RWaWV3OwotICAgICAgICB0aGlzLnNuYXBzaG90ID0gc25hcHNob3Q7Ci0gICAgICAgIHRoaXMu
c25hcHNob3ROb2RlSW5kZXggPSB0aGlzLnNuYXBzaG90LnJvb3ROb2RlSW5kZXg7Ci0gICAgICAg
IHRoaXMuX3Byb3ZpZGVyID0gdGhpcy5fY3JlYXRlUHJvdmlkZXIoc25hcHNob3QsIHRoaXMuc25h
cHNob3ROb2RlSW5kZXgpOwotICAgICAgICB0aGlzLnNvcnQoKTsKLSAgICB9Ci19OwotCi1NaXhJ
blNuYXBzaG90Tm9kZUZ1bmN0aW9ucyhXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90T2JqZWN0Tm9k
ZS5wcm90b3R5cGUsIFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RDb250YWlubWVudERhdGFHcmlk
LnByb3RvdHlwZSk7Ci1XZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90Q29udGFpbm1lbnREYXRhR3Jp
ZC5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLkRhdGFHcmlkLnByb3RvdHlwZTsK
LQogV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFNvcnRhYmxlRGF0YUdyaWQgPSBmdW5jdGlvbihj
b2x1bW5zKQogewogICAgIFdlYkluc3BlY3Rvci5EYXRhR3JpZC5jYWxsKHRoaXMsIGNvbHVtbnMp
OwpAQCAtNjIsNiArMzUsMTIgQEAgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFNvcnRhYmxlRGF0
YUdyaWQgPSBmdW5jdGlvbihjb2x1bW5zKQogfQogCiBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90
U29ydGFibGVEYXRhR3JpZC5wcm90b3R5cGUgPSB7CisgICAgZGlzcG9zZTogZnVuY3Rpb24oKQor
ICAgIHsKKyAgICAgICAgZm9yICh2YXIgaSA9IDAsIGwgPSB0aGlzLmNoaWxkcmVuLmxlbmd0aDsg
aSA8IGw7ICsraSkKKyAgICAgICAgICAgIHRoaXMuY2hpbGRyZW5baV0uZGlzcG9zZSgpOworICAg
IH0sCisKICAgICBzb3J0aW5nQ2hhbmdlZDogZnVuY3Rpb24oKQogICAgIHsKICAgICAgICAgdmFy
IHNvcnRBc2NlbmRpbmcgPSB0aGlzLnNvcnRPcmRlciA9PT0gImFzY2VuZGluZyI7CkBAIC04OSwx
MiArNjgsMTcgQEAgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFNvcnRhYmxlRGF0YUdyaWQucHJv
dG90eXBlID0gewogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgfQogCi0gICAg
ICAgIHRoaXMuX3BlcmZvcm1Tb3J0aW5nKFNvcnRCeVR3b0ZpZWxkcyk7CisgICAgICAgIFdlYklu
c3BlY3Rvci5QbGVhc2VXYWl0TWVzc2FnZS5wcm90b3R5cGUuc2hvd0FuZFdhaXRGb3IodGhpcy5l
bGVtZW50LCB0aGlzLCAic29ydGluZyBjb21wbGV0ZSIpOworICAgICAgICBmdW5jdGlvbiBzb3J0
KCkKKyAgICAgICAgeworICAgICAgICAgICAgdGhpcy5fcGVyZm9ybVNvcnRpbmcoU29ydEJ5VHdv
RmllbGRzKTsKKyAgICAgICAgfQorICAgICAgICBzZXRUaW1lb3V0KHNvcnQuYmluZCh0aGlzKSwg
MCk7CiAgICAgfSwKIAogICAgIF9wZXJmb3JtU29ydGluZzogZnVuY3Rpb24oc29ydEZ1bmN0aW9u
KQogICAgIHsKLSAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoInN0YXJ0IHNv
cnRpbmciKTsKKyAgICAgICAgdGhpcy5yZWN1cnNpdmVTb3J0aW5nRW50ZXIoKTsKICAgICAgICAg
dmFyIGNoaWxkcmVuID0gdGhpcy5jaGlsZHJlbjsKICAgICAgICAgdGhpcy5yZW1vdmVDaGlsZHJl
bigpOwogICAgICAgICBjaGlsZHJlbi5zb3J0KHNvcnRGdW5jdGlvbik7CkBAIC0xMDQsMTIgKzg4
LDYxIEBAIFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RTb3J0YWJsZURhdGFHcmlkLnByb3RvdHlw
ZSA9IHsKICAgICAgICAgICAgIGlmIChjaGlsZC5leHBhbmRlZCkKICAgICAgICAgICAgICAgICBj
aGlsZC5zb3J0KCk7CiAgICAgICAgIH0KLSAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0
ZW5lcnMoInNvcnRpbmcgY29tcGxldGUiKTsKKyAgICAgICAgdGhpcy5yZWN1cnNpdmVTb3J0aW5n
TGVhdmUoKTsKKyAgICB9LAorCisgICAgcmVjdXJzaXZlU29ydGluZ0VudGVyOiBmdW5jdGlvbigp
CisgICAgeworICAgICAgICBpZiAoISgiX3JlY3Vyc2l2ZVNvcnRpbmdEZXB0aCIgaW4gdGhpcykp
CisgICAgICAgICAgICB0aGlzLl9yZWN1cnNpdmVTb3J0aW5nRGVwdGggPSAxOworICAgICAgICBl
bHNlCisgICAgICAgICAgICArK3RoaXMuX3JlY3Vyc2l2ZVNvcnRpbmdEZXB0aDsKKyAgICB9LAor
CisgICAgcmVjdXJzaXZlU29ydGluZ0xlYXZlOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICBp
ZiAoISgiX3JlY3Vyc2l2ZVNvcnRpbmdEZXB0aCIgaW4gdGhpcykpCisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIGlmICghLS10aGlzLl9yZWN1cnNpdmVTb3J0aW5nRGVwdGgpIHsKKyAgICAg
ICAgICAgIGRlbGV0ZSB0aGlzLl9yZWN1cnNpdmVTb3J0aW5nRGVwdGg7CisgICAgICAgICAgICB0
aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycygic29ydGluZyBjb21wbGV0ZSIpOworICAgICAg
ICB9CiAgICAgfQogfTsKIAogV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFNvcnRhYmxlRGF0YUdy
aWQucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5EYXRhR3JpZC5wcm90b3R5cGU7
CiAKK1dlYkluc3BlY3Rvci5IZWFwU25hcHNob3RDb250YWlubWVudERhdGFHcmlkID0gZnVuY3Rp
b24oKQoreworICAgIHZhciBjb2x1bW5zID0geworICAgICAgICBvYmplY3Q6IHsgdGl0bGU6IFdl
Ykluc3BlY3Rvci5VSVN0cmluZygiT2JqZWN0IiksIGRpc2Nsb3N1cmU6IHRydWUsIHNvcnRhYmxl
OiB0cnVlLCBzb3J0OiAiYXNjZW5kaW5nIiB9LAorICAgICAgICBzaGFsbG93U2l6ZTogeyB0aXRs
ZTogV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTaGFsbG93IFNpemUiKSwgd2lkdGg6ICI5MHB4Iiwg
c29ydGFibGU6IHRydWUgfSwKKyAgICAgICAgcmV0YWluZWRTaXplOiB7IHRpdGxlOiBXZWJJbnNw
ZWN0b3IuVUlTdHJpbmcoIlJldGFpbmVkIFNpemUiKSwgd2lkdGg6ICI5MHB4Iiwgc29ydGFibGU6
IHRydWUgfQorICAgIH07CisgICAgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFNvcnRhYmxlRGF0
YUdyaWQuY2FsbCh0aGlzLCBjb2x1bW5zKTsKK30KKworV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hv
dENvbnRhaW5tZW50RGF0YUdyaWQucHJvdG90eXBlID0geworICAgIF9kZWZhdWx0UG9wdWxhdGVD
b3VudDogMTAwLAorCisgICAgc2V0RGF0YVNvdXJjZTogZnVuY3Rpb24oc25hcHNob3RWaWV3LCBz
bmFwc2hvdCkKKyAgICB7CisgICAgICAgIHRoaXMuc25hcHNob3RWaWV3ID0gc25hcHNob3RWaWV3
OworICAgICAgICB0aGlzLnNuYXBzaG90ID0gc25hcHNob3Q7CisgICAgICAgIHRoaXMuc25hcHNo
b3ROb2RlSW5kZXggPSB0aGlzLnNuYXBzaG90LnJvb3ROb2RlSW5kZXg7CisgICAgICAgIHRoaXMu
X3Byb3ZpZGVyID0gdGhpcy5fY3JlYXRlUHJvdmlkZXIoc25hcHNob3QsIHRoaXMuc25hcHNob3RO
b2RlSW5kZXgpOworICAgICAgICB0aGlzLnNvcnQoKTsKKyAgICB9LAorCisgICAgc29ydGluZ0No
YW5nZWQ6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHRoaXMuc29ydCgpOworICAgIH0KK307
CisKK01peEluU25hcHNob3ROb2RlRnVuY3Rpb25zKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RP
YmplY3ROb2RlLnByb3RvdHlwZSwgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdENvbnRhaW5tZW50
RGF0YUdyaWQucHJvdG90eXBlKTsKK1dlYkluc3BlY3Rvci5IZWFwU25hcHNob3RDb250YWlubWVu
dERhdGFHcmlkLnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90
U29ydGFibGVEYXRhR3JpZC5wcm90b3R5cGU7CisKIFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RD
b25zdHJ1Y3RvcnNEYXRhR3JpZCA9IGZ1bmN0aW9uKCkKIHsKICAgICB2YXIgY29sdW1ucyA9IHsK
QEAgLTE5NSw5ICsyMjgsMTIgQEAgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdERpZmZEYXRhR3Jp
ZC5wcm90b3R5cGUgPSB7CiAgICAgc2V0QmFzZURhdGFTb3VyY2U6IGZ1bmN0aW9uKGJhc2VTbmFw
c2hvdCkKICAgICB7CiAgICAgICAgIHRoaXMuYmFzZVNuYXBzaG90ID0gYmFzZVNuYXBzaG90Owor
ICAgICAgICB0aGlzLmRpc3Bvc2UoKTsKICAgICAgICAgdGhpcy5yZW1vdmVDaGlsZHJlbigpOwot
ICAgICAgICBpZiAodGhpcy5iYXNlU25hcHNob3QgPT09IHRoaXMuc25hcHNob3QpCisgICAgICAg
IGlmICh0aGlzLmJhc2VTbmFwc2hvdCA9PT0gdGhpcy5zbmFwc2hvdCkgeworICAgICAgICAgICAg
dGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoInNvcnRpbmcgY29tcGxldGUiKTsKICAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgfQogICAgICAgICB0aGlzLnBvcHVsYXRlQ2hpbGRyZW4o
KTsgICAgICAgIAogICAgIH0sCiAKQEAgLTI0Myw4ICsyNzksNyBAQCBXZWJJbnNwZWN0b3IuSGVh
cFNuYXBzaG90RG9taW5hdG9yc0RhdGFHcmlkID0gZnVuY3Rpb24oKQogICAgICAgICBzaGFsbG93
U2l6ZTogeyB0aXRsZTogV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTaGFsbG93IFNpemUiKSwgd2lk
dGg6ICI5MHB4Iiwgc29ydGFibGU6IHRydWUgfSwKICAgICAgICAgcmV0YWluZWRTaXplOiB7IHRp
dGxlOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlJldGFpbmVkIFNpemUiKSwgd2lkdGg6ICI5MHB4
Iiwgc29ydDogImRlc2NlbmRpbmciLCBzb3J0YWJsZTogdHJ1ZSB9CiAgICAgfTsKLSAgICBXZWJJ
bnNwZWN0b3IuRGF0YUdyaWQuY2FsbCh0aGlzLCBjb2x1bW5zKTsKLSAgICB0aGlzLmFkZEV2ZW50
TGlzdGVuZXIoInNvcnRpbmcgY2hhbmdlZCIsIHRoaXMuc29ydCwgdGhpcyk7CisgICAgV2ViSW5z
cGVjdG9yLkhlYXBTbmFwc2hvdFNvcnRhYmxlRGF0YUdyaWQuY2FsbCh0aGlzLCBjb2x1bW5zKTsK
IH0KIAogV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdERvbWluYXRvcnNEYXRhR3JpZC5wcm90b3R5
cGUgPSB7CkBAIC0yNTcsMTEgKzI5MiwxNiBAQCBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90RG9t
aW5hdG9yc0RhdGFHcmlkLnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5zbmFwc2hvdE5vZGVJ
bmRleCA9IHRoaXMuc25hcHNob3Qucm9vdE5vZGVJbmRleDsKICAgICAgICAgdGhpcy5fcHJvdmlk
ZXIgPSB0aGlzLl9jcmVhdGVQcm92aWRlcihzbmFwc2hvdCwgdGhpcy5zbmFwc2hvdE5vZGVJbmRl
eCk7CiAgICAgICAgIHRoaXMuc29ydCgpOworICAgIH0sCisKKyAgICBzb3J0aW5nQ2hhbmdlZDog
ZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgdGhpcy5zb3J0KCk7CiAgICAgfQogfTsKIAogTWl4
SW5TbmFwc2hvdE5vZGVGdW5jdGlvbnMoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdERvbWluYXRv
ck9iamVjdE5vZGUucHJvdG90eXBlLCBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90RG9taW5hdG9y
c0RhdGFHcmlkLnByb3RvdHlwZSk7Ci1XZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90RG9taW5hdG9y
c0RhdGFHcmlkLnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuRGF0YUdyaWQucHJv
dG90eXBlOworV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdERvbWluYXRvcnNEYXRhR3JpZC5wcm90
b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFNvcnRhYmxlRGF0YUdy
aWQucHJvdG90eXBlOwogCiBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90UmV0YWluaW5nUGF0aHNM
aXN0ID0gZnVuY3Rpb24oKQogewpAQCAtMjc0LDYgKzMxNCwxMiBAQCBXZWJJbnNwZWN0b3IuSGVh
cFNuYXBzaG90UmV0YWluaW5nUGF0aHNMaXN0ID0gZnVuY3Rpb24oKQogfQogCiBXZWJJbnNwZWN0
b3IuSGVhcFNuYXBzaG90UmV0YWluaW5nUGF0aHNMaXN0LnByb3RvdHlwZSA9IHsKKyAgICBkaXNw
b3NlOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICBpZiAodGhpcy5wYXRoRmluZGVyKQorICAg
ICAgICAgICAgdGhpcy5wYXRoRmluZGVyLmRpc3Bvc2UoKTsKKyAgICB9LCAKKwogICAgIF9zb3J0
RmllbGRzOiBmdW5jdGlvbihzb3J0Q29sdW1uLCBzb3J0QXNjZW5kaW5nKQogICAgIHsKICAgICAg
ICAgcmV0dXJuIHsKQEAgLTI5NSw5ICszNDEsMTEgQEAgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hv
dFJldGFpbmluZ1BhdGhzTGlzdC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuc25hcHNob3RW
aWV3ID0gc25hcHNob3RWaWV3OwogICAgICAgICB0aGlzLl9wcmVmaXggPSBwcmVmaXg7CiAKLSAg
ICAgICAgaWYgKHRoaXMucGF0aEZpbmRlcikKKyAgICAgICAgaWYgKHRoaXMucGF0aEZpbmRlcikg
ewogICAgICAgICAgICAgdGhpcy5zZWFyY2hDYW5jZWxsZWQoKTsKLSAgICAgICAgdGhpcy5wYXRo
RmluZGVyID0gc25hcHNob3QuY3JlYXRlUGF0aEZpbmRlcihub2RlSW5kZXgpOworICAgICAgICAg
ICAgdGhpcy5wYXRoRmluZGVyLmRpc3Bvc2UoKTsKKyAgICAgICAgfQorICAgICAgICB0aGlzLnBh
dGhGaW5kZXIgPSBzbmFwc2hvdC5jcmVhdGVQYXRoRmluZGVyKG5vZGVJbmRleCwgIVdlYkluc3Bl
Y3Rvci5EZXRhaWxlZEhlYXBzaG90Vmlldy5wcm90b3R5cGUuc2hvd0hpZGRlbkRhdGEpOwogICAg
ICAgICB0aGlzLl9yZXNldFBhdGhzKCk7CiAgICAgfSwKIApAQCAtMzU1LDEzICs0MDMsOSBAQCBX
ZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90UmV0YWluaW5nUGF0aHNMaXN0LnByb3RvdHlwZSA9IHsK
IAogICAgIF9zZXRSb290Q2hpbGRyZW5Gb3JGaW5kZXI6IGZ1bmN0aW9uKCkKICAgICB7Ci0gICAg
ICAgIGZ1bmN0aW9uIEZpbHRlckRPTVdpbmRvdyhub2RlKQotICAgICAgICB7Ci0gICAgICAgICAg
ICByZXR1cm4gbm9kZS5uYW1lID09PSAiRE9NV2luZG93IjsKLSAgICAgICAgfQotCiAgICAgICAg
IGlmICh0aGlzLnNuYXBzaG90Vmlldy5pc1RyYWNpbmdUb1dpbmRvd09iamVjdHMpCi0gICAgICAg
ICAgICB0aGlzLnBhdGhGaW5kZXIudXBkYXRlUm9vdHMoRmlsdGVyRE9NV2luZG93KTsKKyAgICAg
ICAgICAgIHRoaXMucGF0aEZpbmRlci51cGRhdGVSb290cygKKyAgICAgICAgICAgICAgICAiZnVu
Y3Rpb24gKG5vZGUpIHsgcmV0dXJuIG5vZGUubmFtZSA9PT0gXCJET01XaW5kb3dcIjsgfSIpOwog
ICAgICAgICBlbHNlCiAgICAgICAgICAgICB0aGlzLnBhdGhGaW5kZXIudXBkYXRlUm9vdHMoKTsK
ICAgICB9LApAQCAtNTAwLDEwICs1NDQsMTQgQEAgV2ViSW5zcGVjdG9yLkRldGFpbGVkSGVhcHNo
b3RWaWV3ID0gZnVuY3Rpb24ocGFyZW50LCBwcm9maWxlKQogV2ViSW5zcGVjdG9yLkRldGFpbGVk
SGVhcHNob3RWaWV3LnByb3RvdHlwZSA9IHsKICAgICBkaXNwb3NlOiBmdW5jdGlvbigpCiAgICAg
ewotICAgICAgICBpZiAodGhpcy5fcHJvZmlsZVdyYXBwZXIpCi0gICAgICAgICAgICB0aGlzLl9w
cm9maWxlV3JhcHBlci5kaXNwb3NlKCk7Ci0gICAgICAgIGlmICh0aGlzLl9iYXNlUHJvZmlsZVdy
YXBwZXIpCi0gICAgICAgICAgICB0aGlzLl9iYXNlUHJvZmlsZVdyYXBwZXIuZGlzcG9zZSgpOwor
ICAgICAgICB0aGlzLnByb2ZpbGVXcmFwcGVyLmRpc3Bvc2UoKTsKKyAgICAgICAgaWYgKHRoaXMu
YmFzZVByb2ZpbGUpCisgICAgICAgICAgICB0aGlzLmJhc2VQcm9maWxlV3JhcHBlci5kaXNwb3Nl
KCk7CisgICAgICAgIHRoaXMuY29udGFpbm1lbnREYXRhR3JpZC5kaXNwb3NlKCk7CisgICAgICAg
IHRoaXMuY29uc3RydWN0b3JzRGF0YUdyaWQuZGlzcG9zZSgpOworICAgICAgICB0aGlzLmRpZmZE
YXRhR3JpZC5kaXNwb3NlKCk7CisgICAgICAgIHRoaXMuZG9taW5hdG9yRGF0YUdyaWQuZGlzcG9z
ZSgpOworICAgICAgICB0aGlzLnJldGFpbm1lbnREYXRhR3JpZC5kaXNwb3NlKCk7CiAgICAgfSwK
IAogICAgIGdldCBzdGF0dXNCYXJJdGVtcygpCkBAIC01MTgsOSArNTY2LDcgQEAgV2ViSW5zcGVj
dG9yLkRldGFpbGVkSGVhcHNob3RWaWV3LnByb3RvdHlwZSA9IHsKIAogICAgIGdldCBwcm9maWxl
V3JhcHBlcigpCiAgICAgewotICAgICAgICBpZiAoIXRoaXMuX3Byb2ZpbGVXcmFwcGVyKQotICAg
ICAgICAgICAgdGhpcy5fcHJvZmlsZVdyYXBwZXIgPSB0aGlzLnByb2ZpbGUucHJveHk7Ci0gICAg
ICAgIHJldHVybiB0aGlzLl9wcm9maWxlV3JhcHBlcjsKKyAgICAgICAgcmV0dXJuIHRoaXMucHJv
ZmlsZS5wcm94eTsKICAgICB9LAogCiAgICAgZ2V0IGJhc2VQcm9maWxlKCkKQEAgLTUzMCw5ICs1
NzYsNyBAQCBXZWJJbnNwZWN0b3IuRGV0YWlsZWRIZWFwc2hvdFZpZXcucHJvdG90eXBlID0gewog
CiAgICAgZ2V0IGJhc2VQcm9maWxlV3JhcHBlcigpCiAgICAgewotICAgICAgICBpZiAoIXRoaXMu
X2Jhc2VQcm9maWxlV3JhcHBlcikKLSAgICAgICAgICAgIHRoaXMuX2Jhc2VQcm9maWxlV3JhcHBl
ciA9IHRoaXMuYmFzZVByb2ZpbGUucHJveHk7Ci0gICAgICAgIHJldHVybiB0aGlzLl9iYXNlUHJv
ZmlsZVdyYXBwZXI7CisgICAgICAgIHJldHVybiB0aGlzLmJhc2VQcm9maWxlLnByb3h5OwogICAg
IH0sCiAKICAgICBzaG93OiBmdW5jdGlvbihwYXJlbnRFbGVtZW50KQpAQCAtNzIzLDExICs3Njcs
NyBAQCBXZWJJbnNwZWN0b3IuRGV0YWlsZWRIZWFwc2hvdFZpZXcucHJvdG90eXBlID0gewogICAg
ICAgICB7CiAgICAgICAgICAgICBkZWxldGUgdGhpcy5fYmFzZVByb2ZpbGVXcmFwcGVyOwogICAg
ICAgICAgICAgdGhpcy5iYXNlUHJvZmlsZS5fbGFzdFNob3duID0gRGF0ZS5ub3coKTsKLSAgICAg
ICAgICAgIFdlYkluc3BlY3Rvci5QbGVhc2VXYWl0TWVzc2FnZS5wcm90b3R5cGUuc3RhcnRBY3Rp
b24odGhpcy5jdXJyZW50Vmlldy5lbGVtZW50LCBzaG93RGlmZkRhdGEuYmluZCh0aGlzKSk7Ci0g
ICAgICAgIH0KLQotICAgICAgICBmdW5jdGlvbiBzaG93RGlmZkRhdGEoKQotICAgICAgICB7Cisg
ICAgICAgICAgICBXZWJJbnNwZWN0b3IuUGxlYXNlV2FpdE1lc3NhZ2UucHJvdG90eXBlLnNob3dB
bmRXYWl0Rm9yKHRoaXMuY3VycmVudFZpZXcuZWxlbWVudCwgdGhpcy5kaWZmRGF0YUdyaWQsICJz
b3J0aW5nIGNvbXBsZXRlIik7CiAgICAgICAgICAgICB0aGlzLmRpZmZEYXRhR3JpZC5zZXRCYXNl
RGF0YVNvdXJjZSh0aGlzLmJhc2VQcm9maWxlV3JhcHBlcik7CiAgICAgICAgIH0KIApAQCAtODA1
LDEzICs4NDUsMTAgQEAgV2ViSW5zcGVjdG9yLkRldGFpbGVkSGVhcHNob3RWaWV3LnByb3RvdHlw
ZSA9IHsKICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIHRoaXMu
YmFzZVNlbGVjdEVsZW1lbnQuYWRkU3R5bGVDbGFzcygiaGlkZGVuIik7Ci0gICAgICAgICAgICBp
ZiAoIXRoaXMuZGF0YUdyaWQuc25hcHNob3RWaWV3KQotICAgICAgICAgICAgICAgIFdlYkluc3Bl
Y3Rvci5QbGVhc2VXYWl0TWVzc2FnZS5wcm90b3R5cGUuc3RhcnRBY3Rpb24odGhpcy5jdXJyZW50
Vmlldy5lbGVtZW50LCBsb2FkRGF0YS5iaW5kKHRoaXMpKTsKLSAgICAgICAgfQotCi0gICAgICAg
IGZ1bmN0aW9uIGxvYWREYXRhKCkKLSAgICAgICAgewotICAgICAgICAgICAgdGhpcy5kYXRhR3Jp
ZC5zZXREYXRhU291cmNlKHRoaXMsIHRoaXMucHJvZmlsZVdyYXBwZXIpOworICAgICAgICAgICAg
aWYgKCF0aGlzLmRhdGFHcmlkLnNuYXBzaG90VmlldykgeworICAgICAgICAgICAgICAgIFdlYklu
c3BlY3Rvci5QbGVhc2VXYWl0TWVzc2FnZS5wcm90b3R5cGUuc2hvd0FuZFdhaXRGb3IodGhpcy5j
dXJyZW50Vmlldy5lbGVtZW50LCB0aGlzLmRhdGFHcmlkLCAic29ydGluZyBjb21wbGV0ZSIpOwor
ICAgICAgICAgICAgICAgIHRoaXMuZGF0YUdyaWQuc2V0RGF0YVNvdXJjZSh0aGlzLCB0aGlzLnBy
b2ZpbGVXcmFwcGVyKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogCiAgICAgICAgIGlmICgh
dGhpcy5jdXJyZW50UXVlcnkgfHwgIXRoaXMuX3NlYXJjaEZpbmlzaGVkQ2FsbGJhY2sgfHwgIXRo
aXMuX3NlYXJjaFJlc3VsdHMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL0hlYXBTbmFwc2hvdC5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvSGVhcFNuYXBzaG90LmpzCmluZGV4IDc4MWExM2IuLmY1OTY0ZWEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSGVhcFNuYXBzaG90LmpzCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSGVhcFNuYXBzaG90LmpzCkBAIC0y
OCw2ICsyOCwyNyBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCitXZWJJbnNwZWN0b3IuSGVhcFNu
YXBzaG90TG9hZGVyID0gZnVuY3Rpb24oKQoreworICAgIHRoaXMuX2pzb24gPSAiIjsKK30KKwor
V2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdExvYWRlci5wcm90b3R5cGUgPSB7CisgICAgZmluaXNo
TG9hZGluZzogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgaWYgKCF0aGlzLl9qc29uKQorICAg
ICAgICAgICAgcmV0dXJuIG51bGw7CisgICAgICAgIHZhciByYXdTbmFwc2hvdCA9IEpTT04ucGFy
c2UodGhpcy5fanNvbik7CisgICAgICAgIHRoaXMuX2pzb24gPSAiIjsKKyAgICAgICAgcmV0dXJu
IG5ldyBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90KHJhd1NuYXBzaG90KTsKKyAgICB9LAorCisg
ICAgcHVzaEpTT05DaHVuazogZnVuY3Rpb24oY2h1bmspCisgICAgeworICAgICAgICB0aGlzLl9q
c29uICs9IGNodW5rOworICAgIH0KK307CisKIFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RBcnJh
eVNsaWNlID0gZnVuY3Rpb24oc25hcHNob3QsIGFycmF5TmFtZSwgc3RhcnQsIGVuZCkKIHsKICAg
ICAvLyBOb3RlOiB3ZSBkb24ndCByZWZlcmVuY2Ugc25hcHNob3QgY29udGVudHMgZGlyZWN0bHkg
dG8gYXZvaWQKQEAgLTUyNiw3ICs1NDcsNiBAQCBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90LnBy
b3RvdHlwZSA9IHsKICAgICB7CiAgICAgICAgIGRlbGV0ZSB0aGlzLl9ub2RlczsKICAgICAgICAg
ZGVsZXRlIHRoaXMuX3N0cmluZ3M7Ci0gICAgICAgIGRlbGV0ZSB0aGlzLl9pZHNMaXN0OwogICAg
ICAgICBkZWxldGUgdGhpcy5fcmV0YWluZXJzOwogICAgICAgICBkZWxldGUgdGhpcy5fcmV0YWlu
ZXJJbmRleDsKICAgICAgICAgZGVsZXRlIHRoaXMuX25vZGVJbmRleDsKQEAgLTU3OSwxOCArNTk5
LDYgQEAgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHJl
dHVybiB0aGlzLnJvb3ROb2RlLnJldGFpbmVkU2l6ZTsKICAgICB9LAogCi0gICAgaGFzSWQ6IGZ1
bmN0aW9uKGlkKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMubm9kZUlkcy5iaW5hcnlJbmRl
eE9mKGlkLCB0aGlzLl9udW1iZXJzQ29tcGFyYXRvcikgPj0gMDsKLSAgICB9LAotCi0gICAgZ2V0
IG5vZGVJZHMoKQotICAgIHsKLSAgICAgICAgaWYgKCF0aGlzLl9pZHNMaXN0KQotICAgICAgICAg
ICAgdGhpcy5fYnVpbGRJZHNMaXN0KCk7Ci0gICAgICAgIHJldHVybiB0aGlzLl9pZHNMaXN0Owot
ICAgIH0sCi0KICAgICBfcmV0YWluZXJzRm9yTm9kZTogZnVuY3Rpb24obm9kZSkKICAgICB7CiAg
ICAgICAgIGlmICghdGhpcy5fcmV0YWluZXJzKQpAQCAtNjkxLDE3ICs2OTksNiBAQCBXZWJJbnNw
ZWN0b3IuSGVhcFNuYXBzaG90LnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5fYWdncmVnYXRl
c1dpdGhJbmRleGVzID0gdHJ1ZTsKICAgICB9LAogCi0gICAgX2J1aWxkSWRzTGlzdDogZnVuY3Rp
b24oKQotICAgIHsKLSAgICAgICAgdmFyIGNvdW50ID0gMDsKLSAgICAgICAgZm9yICh2YXIgbm9k
ZXNJdGVyID0gdGhpcy5fYWxsTm9kZXM7IG5vZGVzSXRlci5oYXNOZXh0KCk7IG5vZGVzSXRlci5u
ZXh0KCksICsrY291bnQpOwotICAgICAgICB0aGlzLl9pZHNMaXN0ID0gbmV3IEFycmF5KGNvdW50
KTsKLSAgICAgICAgY291bnQgPSAwOwotICAgICAgICBmb3IgKG5vZGVzSXRlciA9IHRoaXMuX2Fs
bE5vZGVzOyBub2Rlc0l0ZXIuaGFzTmV4dCgpOyBub2Rlc0l0ZXIubmV4dCgpLCArK2NvdW50KQot
ICAgICAgICAgICAgdGhpcy5faWRzTGlzdFtjb3VudF0gPSBub2Rlc0l0ZXIubm9kZS5pZDsKLSAg
ICAgICAgdGhpcy5faWRzTGlzdC5zb3J0KHRoaXMuX251bWJlcnNDb21wYXJhdG9yKTsKLSAgICB9
LAotCiAgICAgX2J1aWxkTm9kZUluZGV4OiBmdW5jdGlvbigpCiAgICAgewogICAgICAgICB2YXIg
Y291bnQgPSAwOwpAQCAtNzc1LDEzICs3NzIsNDYgQEAgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hv
dC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHJldHVybiB0aGlzLl9iYXNlTm9kZUlkc1tiYXNlU25h
cHNob3RJZF1bY2xhc3NOYW1lXS5iaW5hcnlJbmRleE9mKG5vZGVJZCwgdGhpcy5fbnVtYmVyc0Nv
bXBhcmF0b3IpICE9PSAtMTsKICAgICB9LAogCi0gICAgdXBkYXRlQmFzZU5vZGVJZHM6IGZ1bmN0
aW9uKGJhc2VTbmFwc2hvdElkLCBjbGFzc05hbWUsIG5vZGVJZHMpCisgICAgcHVzaEJhc2VJZHM6
IGZ1bmN0aW9uKGJhc2VTbmFwc2hvdElkLCBjbGFzc05hbWUsIG5vZGVJZHMpCiAgICAgewogICAg
ICAgICBpZiAoIXRoaXMuX2Jhc2VOb2RlSWRzKQogICAgICAgICAgICAgdGhpcy5fYmFzZU5vZGVJ
ZHMgPSBbXTsKICAgICAgICAgaWYgKCF0aGlzLl9iYXNlTm9kZUlkc1tiYXNlU25hcHNob3RJZF0p
CiAgICAgICAgICAgICB0aGlzLl9iYXNlTm9kZUlkc1tiYXNlU25hcHNob3RJZF0gPSB7fTsKICAg
ICAgICAgdGhpcy5fYmFzZU5vZGVJZHNbYmFzZVNuYXBzaG90SWRdW2NsYXNzTmFtZV0gPSBub2Rl
SWRzOworICAgIH0sCisKKyAgICBjcmVhdGVEaWZmOiBmdW5jdGlvbihjbGFzc05hbWUpCisgICAg
eworICAgICAgICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RzRGlmZih0aGlz
LCBjbGFzc05hbWUpOworICAgIH0sCisKKyAgICBfcGFyc2VGaWx0ZXI6IGZ1bmN0aW9uKGZpbHRl
cikKKyAgICB7CisgICAgICAgIGlmICghZmlsdGVyKQorICAgICAgICAgICAgcmV0dXJuIG51bGw7
CisgICAgICAgIHZhciBwYXJzZWRGaWx0ZXIgPSBldmFsKCIoZnVuY3Rpb24oKXtyZXR1cm4gIiAr
IGZpbHRlciArICJ9KSgpIik7CisgICAgICAgIHJldHVybiBwYXJzZWRGaWx0ZXIuYmluZCh0aGlz
KTsKKyAgICB9LAorCisgICAgY3JlYXRlRWRnZXNQcm92aWRlcjogZnVuY3Rpb24obm9kZUluZGV4
LCBmaWx0ZXIpCisgICAgeworICAgICAgICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5IZWFwU25h
cHNob3RFZGdlc1Byb3ZpZGVyKHRoaXMsIG5vZGVJbmRleCwgdGhpcy5fcGFyc2VGaWx0ZXIoZmls
dGVyKSk7CisgICAgfSwKKworICAgIGNyZWF0ZU5vZGVzUHJvdmlkZXI6IGZ1bmN0aW9uKGZpbHRl
cikKKyAgICB7CisgICAgICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdE5v
ZGVzUHJvdmlkZXIodGhpcywgdGhpcy5fcGFyc2VGaWx0ZXIoZmlsdGVyKSk7CisgICAgfSwKKwor
ICAgIGNyZWF0ZVBhdGhGaW5kZXI6IGZ1bmN0aW9uKHRhcmdldE5vZGVJbmRleCwgc2tpcEhpZGRl
bikKKyAgICB7CisgICAgICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFBh
dGhGaW5kZXIodGhpcywgdGFyZ2V0Tm9kZUluZGV4LCBza2lwSGlkZGVuKTsKKyAgICB9LAorCisg
ICAgdXBkYXRlU3RhdGljRGF0YTogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHtu
b2RlQ291bnQ6IHRoaXMubm9kZUNvdW50LCByb290Tm9kZUluZGV4OiB0aGlzLl9yb290Tm9kZUlu
ZGV4LCB0b3RhbFNpemU6IHRoaXMudG90YWxTaXplLCB1aWQ6IHRoaXMudWlkfTsKICAgICB9CiB9
OwogCkBAIC04NTEsNiArODgxLDI1IEBAIFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RGaWx0ZXJl
ZE9yZGVyZWRJdGVyYXRvci5wcm90b3R5cGUgPSB7CiAgICAgewogICAgICAgICArK3RoaXMuX3Bv
c2l0aW9uOwogICAgIH0sCisKKyAgICBzZXJpYWxpemVOZXh0SXRlbXM6IGZ1bmN0aW9uKGNvdW50
KQorICAgIHsKKyAgICAgICAgdmFyIHJlc3VsdCA9IG5ldyBBcnJheShjb3VudCk7CisgICAgICAg
IGZvciAodmFyIGkgPSAwIDsgaSA8IGNvdW50ICYmIHRoaXMuaGFzTmV4dCgpOyArK2ksIHRoaXMu
bmV4dCgpKQorICAgICAgICAgICAgcmVzdWx0W2ldID0gdGhpcy5fc2VyaWFsaXplKHRoaXMuaXRl
bSk7CisgICAgICAgIHJlc3VsdC5sZW5ndGggPSBpOworICAgICAgICByZXN1bHQuaGFzTmV4dCA9
IHRoaXMuaGFzTmV4dCgpOworICAgICAgICByZXN1bHQudG90YWxMZW5ndGggPSB0aGlzLmxlbmd0
aDsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9LAorCisgICAgc29ydEFuZFJld2luZDog
ZnVuY3Rpb24oY29tcGFyYXRvcikKKyAgICB7CisgICAgICAgIHZhciByZXN1bHQgPSB0aGlzLnNv
cnQoY29tcGFyYXRvcik7CisgICAgICAgIGlmIChyZXN1bHQpCisgICAgICAgICAgICB0aGlzLmZp
cnN0KCk7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQogfQogCiBXZWJJbnNwZWN0b3Iu
SGVhcFNuYXBzaG90RmlsdGVyZWRPcmRlcmVkSXRlcmF0b3IucHJvdG90eXBlLmNyZWF0ZUNvbXBh
cmF0b3IgPSBmdW5jdGlvbihmaWVsZE5hbWVzKQpAQCAtODY2LDYgKzkxNSwxMSBAQCBXZWJJbnNw
ZWN0b3IuSGVhcFNuYXBzaG90RWRnZXNQcm92aWRlciA9IGZ1bmN0aW9uKHNuYXBzaG90LCBub2Rl
SW5kZXgsIGZpbHRlcikKIH0KIAogV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdEVkZ2VzUHJvdmlk
ZXIucHJvdG90eXBlID0geworICAgIF9zZXJpYWxpemU6IGZ1bmN0aW9uKGVkZ2UpCisgICAgewor
ICAgICAgICByZXR1cm4ge25hbWU6IGVkZ2UubmFtZSwgbm9kZTogV2ViSW5zcGVjdG9yLkhlYXBT
bmFwc2hvdE5vZGVzUHJvdmlkZXIucHJvdG90eXBlLl9zZXJpYWxpemUoZWRnZS5ub2RlKSwgbm9k
ZUluZGV4OiBlZGdlLm5vZGVJbmRleCwgdHlwZTogZWRnZS50eXBlfTsKKyAgICB9LAorCiAgICAg
c29ydDogZnVuY3Rpb24oY29tcGFyYXRvcikKICAgICB7CiAgICAgICAgIGlmICh0aGlzLl9sYXN0
Q29tcGFyYXRvciA9PT0gY29tcGFyYXRvcikKQEAgLTk0OSw2ICsxMDAzLDExIEBAIFdlYkluc3Bl
Y3Rvci5IZWFwU25hcHNob3ROb2Rlc1Byb3ZpZGVyID0gZnVuY3Rpb24oc25hcHNob3QsIGZpbHRl
cikKIH0KIAogV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdE5vZGVzUHJvdmlkZXIucHJvdG90eXBl
ID0geworICAgIF9zZXJpYWxpemU6IGZ1bmN0aW9uKG5vZGUpCisgICAgeworICAgICAgICByZXR1
cm4ge2lkOiBub2RlLmlkLCBuYW1lOiBub2RlLm5hbWUsIG5vZGVJbmRleDogbm9kZS5ub2RlSW5k
ZXgsIHJldGFpbmVkU2l6ZTogbm9kZS5yZXRhaW5lZFNpemUsIHNlbGZTaXplOiBub2RlLnNlbGZT
aXplLCB0eXBlOiBub2RlLnR5cGV9OworICAgIH0sCisKICAgICBzb3J0OiBmdW5jdGlvbihjb21w
YXJhdG9yKQogICAgIHsKICAgICAgICAgaWYgKHRoaXMuX2xhc3RDb21wYXJhdG9yID09PSBjb21w
YXJhdG9yKQpAQCAtOTg5LDE0ICsxMDQ4LDE0IEBAIFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RO
b2Rlc1Byb3ZpZGVyLnByb3RvdHlwZSA9IHsKIAogV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdE5v
ZGVzUHJvdmlkZXIucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5IZWFwU25hcHNo
b3RGaWx0ZXJlZE9yZGVyZWRJdGVyYXRvci5wcm90b3R5cGU7CiAKLVdlYkluc3BlY3Rvci5IZWFw
U25hcHNob3RQYXRoRmluZGVyID0gZnVuY3Rpb24oc25hcHNob3QsIHRhcmdldE5vZGVJbmRleCkK
K1dlYkluc3BlY3Rvci5IZWFwU25hcHNob3RQYXRoRmluZGVyID0gZnVuY3Rpb24oc25hcHNob3Qs
IHRhcmdldE5vZGVJbmRleCwgc2tpcEhpZGRlbikKIHsKICAgICB0aGlzLl9zbmFwc2hvdCA9IHNu
YXBzaG90OwogICAgIHRoaXMuX21heExlbmd0aCA9IDE7CiAgICAgdGhpcy5fbGVuZ3RoTGltaXQg
PSAxNTsKICAgICB0aGlzLl90YXJnZXROb2RlSW5kZXggPSB0YXJnZXROb2RlSW5kZXg7CiAgICAg
dGhpcy5fY3VycmVudFBhdGggPSBudWxsOwotICAgIHRoaXMuX3NraXBIaWRkZW4gPSAhV2ViSW5z
cGVjdG9yLkRldGFpbGVkSGVhcHNob3RWaWV3LnByb3RvdHlwZS5zaG93SGlkZGVuRGF0YTsKKyAg
ICB0aGlzLl9za2lwSGlkZGVuID0gc2tpcEhpZGRlbjsKICAgICB0aGlzLl9yb290Q2hpbGRyZW4g
PSB0aGlzLl9maWxsUm9vdENoaWxkcmVuKCk7CiB9CiAKQEAgLTEwMjAsNyArMTA3OSwxNiBAQCBX
ZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90UGF0aEZpbmRlci5wcm90b3R5cGUgPSB7CiAKICAgICB1
cGRhdGVSb290czogZnVuY3Rpb24oZmlsdGVyKQogICAgIHsKKyAgICAgICAgaWYgKGZpbHRlcikK
KyAgICAgICAgICAgIGZpbHRlciA9IGV2YWwoIihmdW5jdGlvbigpe3JldHVybiAiICsgZmlsdGVy
ICsgIn0pKCkiKTsKICAgICAgICAgdGhpcy5fcm9vdENoaWxkcmVuID0gdGhpcy5fZmlsbFJvb3RD
aGlsZHJlbihmaWx0ZXIpOyAgCisgICAgICAgIHRoaXMuX3Jlc2V0KCk7CisgICAgfSwKKworICAg
IF9yZXNldDogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgdGhpcy5fbWF4TGVuZ3RoID0gMTsK
KyAgICAgICAgdGhpcy5fY3VycmVudFBhdGggPSBudWxsOwogICAgIH0sCiAKICAgICBfZmlsbFJv
b3RDaGlsZHJlbjogZnVuY3Rpb24oZmlsdGVyKQpAQCAtMTE1MywxOSArMTIyMSwxMCBAQCBXZWJJ
bnNwZWN0b3IuSGVhcFNuYXBzaG90c0RpZmYgPSBmdW5jdGlvbihzbmFwc2hvdCwgY2xhc3NOYW1l
KQogfTsKIAogV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdHNEaWZmLnByb3RvdHlwZSA9IHsKLSAg
ICBzZXQgYmFzZUlkcyhiYXNlSWRzKQotICAgIHsKLSAgICAgICAgdGhpcy5fYmFzZUlkcyA9IGJh
c2VJZHM7Ci0gICAgfSwKLQotICAgIHNldCBiYXNlU2VsZlNpemVzKGJhc2VTZWxmU2l6ZXMpCi0g
ICAgewotICAgICAgICB0aGlzLl9iYXNlU2VsZlNpemVzID0gYmFzZVNlbGZTaXplczsKLSAgICB9
LAotCiAgICAgY2FsY3VsYXRlOiBmdW5jdGlvbigpCiAgICAgewotICAgICAgICB2YXIgaW5kZXhl
cyA9IHRoaXMuX3NuYXBzaG90LmFnZ3JlZ2F0ZXModHJ1ZSlbdGhpcy5fY2xhc3NOYW1lXS5pZHhz
OworICAgICAgICB2YXIgYWdncmVnYXRlcyA9IHRoaXMuX3NuYXBzaG90LmFnZ3JlZ2F0ZXModHJ1
ZSlbdGhpcy5fY2xhc3NOYW1lXTsKKyAgICAgICAgdmFyIGluZGV4ZXMgPSBhZ2dyZWdhdGVzID8g
YWdncmVnYXRlcy5pZHhzIDogW107CiAgICAgICAgIHZhciBpID0gMCwgbCA9IHRoaXMuX2Jhc2VJ
ZHMubGVuZ3RoOwogICAgICAgICB2YXIgaiA9IDAsIG0gPSBpbmRleGVzLmxlbmd0aDsKICAgICAg
ICAgdmFyIGRpZmYgPSB7IGFkZGVkQ291bnQ6IDAsIHJlbW92ZWRDb3VudDogMCwgYWRkZWRTaXpl
OiAwLCByZW1vdmVkU2l6ZTogMCB9OwpAQCAtMTE5OSw1ICsxMjU4LDE1IEBAIFdlYkluc3BlY3Rv
ci5IZWFwU25hcHNob3RzRGlmZi5wcm90b3R5cGUgPSB7CiAgICAgICAgIGRpZmYuY291bnREZWx0
YSA9IGRpZmYuYWRkZWRDb3VudCAtIGRpZmYucmVtb3ZlZENvdW50OwogICAgICAgICBkaWZmLnNp
emVEZWx0YSA9IGRpZmYuYWRkZWRTaXplIC0gZGlmZi5yZW1vdmVkU2l6ZTsKICAgICAgICAgcmV0
dXJuIGRpZmY7CisgICAgfSwKKworICAgIHB1c2hCYXNlSWRzOiBmdW5jdGlvbihiYXNlSWRzKQor
ICAgIHsKKyAgICAgICAgdGhpcy5fYmFzZUlkcyA9IGJhc2VJZHM7CisgICAgfSwKKworICAgIHB1
c2hCYXNlU2VsZlNpemVzOiBmdW5jdGlvbihiYXNlU2VsZlNpemVzKQorICAgIHsKKyAgICAgICAg
dGhpcy5fYmFzZVNlbGZTaXplcyA9IGJhc2VTZWxmU2l6ZXM7CiAgICAgfQogfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSGVhcFNuYXBzaG90UHJveHku
anMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0hlYXBTbmFwc2hvdFByb3h5
LmpzCmluZGV4IGJiMGE3ZWMuLjk4NjNkODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvSGVhcFNuYXBzaG90UHJveHkuanMKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9IZWFwU25hcHNob3RQcm94eS5qcwpAQCAtMjgsMjYwICsy
OCw0MDkgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hv
dFByb3h5ID0gZnVuY3Rpb24oKQoteyAgIAotICAgIHRoaXMuX3NuYXBzaG90ID0gbnVsbDsKK1dl
Ykluc3BlY3Rvci5IZWFwU25hcHNob3RSZWFsV29ya2VyID0gZnVuY3Rpb24oKQoreworICAgIHRo
aXMuX3dvcmtlciA9IG5ldyBXb3JrZXIoIkhlYXBTbmFwc2hvdFdvcmtlci5qcyIpOworICAgIHRo
aXMuX3dvcmtlci5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIiwgdGhpcy5fbWVzc2FnZVJlY2Vp
dmVkLmJpbmQodGhpcyksIGZhbHNlKTsKIH0KIAotV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFBy
b3h5LnByb3RvdHlwZSA9IHsKLSAgICBfaW52b2tlR2V0dGVyOiBmdW5jdGlvbihnZXR0ZXJOYW1l
LCBjYWxsYmFjaykKK1dlYkluc3BlY3Rvci5IZWFwU25hcHNob3RSZWFsV29ya2VyLnByb3RvdHlw
ZSA9IHsKKyAgICBfbWVzc2FnZVJlY2VpdmVkOiBmdW5jdGlvbihldmVudCkKKyAgICB7CisgICAg
ICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKCJtZXNzYWdlIiwgZXZlbnQuZGF0YSk7
CisgICAgfSwKKworICAgIHBvc3RNZXNzYWdlOiBmdW5jdGlvbihtZXNzYWdlKQorICAgIHsKKyAg
ICAgICAgdGhpcy5fd29ya2VyLnBvc3RNZXNzYWdlKG1lc3NhZ2UpOworICAgIH0sCisKKyAgICB0
ZXJtaW5hdGU6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHRoaXMuX3dvcmtlci50ZXJtaW5h
dGUoKTsKKyAgICB9Cit9OworCitXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90UmVhbFdvcmtlci5w
cm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLk9iamVjdC5wcm90b3R5cGU7CisKK1dl
Ykluc3BlY3Rvci5IZWFwU25hcHNob3RGYWtlV29ya2VyID0gZnVuY3Rpb24oKQoreworICAgIHRo
aXMuX2Rpc3BhdGNoZXIgPSBuZXcgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFdvcmtlckRpc3Bh
dGNoZXIod2luZG93LCB0aGlzLl9wb3N0TWVzc2FnZUZyb21Xb3JrZXIuYmluZCh0aGlzKSk7Cit9
CisKK1dlYkluc3BlY3Rvci5IZWFwU25hcHNob3RGYWtlV29ya2VyLnByb3RvdHlwZSA9IHsKKyAg
ICBwb3N0TWVzc2FnZTogZnVuY3Rpb24obWVzc2FnZSkKICAgICB7Ci0gICAgICAgIGZ1bmN0aW9u
IHJldHVyblJlc3VsdCgpCisgICAgICAgIGZ1bmN0aW9uIGRpc3BhdGNoKCkKICAgICAgICAgewot
ICAgICAgICAgICAgY2FsbGJhY2sodGhpcy5fc25hcHNob3RbZ2V0dGVyTmFtZV0pOworICAgICAg
ICAgICAgdGhpcy5fZGlzcGF0Y2hlci5kaXNwYXRjaE1lc3NhZ2Uoe2RhdGE6IG1lc3NhZ2V9KTsK
ICAgICAgICAgfQotICAgICAgICBzZXRUaW1lb3V0KHJldHVyblJlc3VsdC5iaW5kKHRoaXMpLCAw
KTsKKyAgICAgICAgc2V0VGltZW91dChkaXNwYXRjaC5iaW5kKHRoaXMpLCAwKTsKICAgICB9LAog
Ci0gICAgYWdncmVnYXRlczogZnVuY3Rpb24od2l0aE5vZGVJbmRleGVzLCBjYWxsYmFjaykKKyAg
ICB0ZXJtaW5hdGU6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHRoaXMuX2Rpc3BhdGNoZXIg
PSBudWxsOworICAgIH0sCisKKyAgICBfcG9zdE1lc3NhZ2VGcm9tV29ya2VyOiBmdW5jdGlvbiht
ZXNzYWdlKQogICAgIHsKLSAgICAgICAgZnVuY3Rpb24gcmV0dXJuUmVzdWx0KCkKKyAgICAgICAg
ZnVuY3Rpb24gc2VuZCgpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNhbGxiYWNrKHRoaXMuX3Nu
YXBzaG90LmFnZ3JlZ2F0ZXMod2l0aE5vZGVJbmRleGVzKSk7CisgICAgICAgICAgICB0aGlzLmRp
c3BhdGNoRXZlbnRUb0xpc3RlbmVycygibWVzc2FnZSIsIG1lc3NhZ2UpOwogICAgICAgICB9Ci0g
ICAgICAgIHNldFRpbWVvdXQocmV0dXJuUmVzdWx0LmJpbmQodGhpcyksIDApOworICAgICAgICBz
ZXRUaW1lb3V0KHNlbmQuYmluZCh0aGlzKSwgMCk7CisgICAgfQorfTsKKworV2ViSW5zcGVjdG9y
LkhlYXBTbmFwc2hvdEZha2VXb3JrZXIucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rv
ci5PYmplY3QucHJvdG90eXBlOworCitXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90V29ya2VyID0g
ZnVuY3Rpb24oKQoreworICAgIHRoaXMuX25leHRPYmplY3RJZCA9IDE7CisgICAgdGhpcy5fbmV4
dENhbGxJZCA9IDE7CisgICAgdGhpcy5fY2FsbGJhY2tzID0gW107CisgICAgLy8gVGhlcmUgaXMg
bm8gc3VwcG9ydCBmb3Igd29ya2VycyBpbiBDaHJvbWl1bSBEUlQuCisgICAgdGhpcy5fd29ya2Vy
ID0gdHlwZW9mIEluc3BlY3RvclRlc3QgPT09ICJ1bmRlZmluZWQiID8gbmV3IFdlYkluc3BlY3Rv
ci5IZWFwU25hcHNob3RSZWFsV29ya2VyKCkgOiBuZXcgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hv
dEZha2VXb3JrZXIoKTsKKyAgICB0aGlzLl93b3JrZXIuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2Fn
ZSIsIHRoaXMuX21lc3NhZ2VSZWNlaXZlZC5iaW5kKHRoaXMpLCBmYWxzZSk7Cit9CisKK1dlYklu
c3BlY3Rvci5IZWFwU25hcHNob3RXb3JrZXIucHJvdG90eXBlID0geworICAgIGNyZWF0ZU9iamVj
dDogZnVuY3Rpb24oY29uc3RydWN0b3JOYW1lKQorICAgIHsKKyAgICAgICAgdmFyIHByb3h5Q29u
c3RydWN0b3JGdW5jdGlvbiA9IHRoaXMuX2ZpbmRGdW5jdGlvbihjb25zdHJ1Y3Rvck5hbWUgKyAi
UHJveHkiKTsKKyAgICAgICAgdmFyIG9iamVjdElkID0gdGhpcy5fbmV4dE9iamVjdElkKys7Cisg
ICAgICAgIHZhciBwcm94eSA9IG5ldyBwcm94eUNvbnN0cnVjdG9yRnVuY3Rpb24odGhpcywgb2Jq
ZWN0SWQpOworICAgICAgICB0aGlzLl9wb3N0TWVzc2FnZSh7Y2FsbElkOiB0aGlzLl9uZXh0Q2Fs
bElkKyssIGRpc3Bvc2l0aW9uOiAiY3JlYXRlIiwgb2JqZWN0SWQ6IG9iamVjdElkLCBtZXRob2RO
YW1lOiBjb25zdHJ1Y3Rvck5hbWV9KTsKKyAgICAgICAgcmV0dXJuIHByb3h5OwogICAgIH0sCiAK
LSAgICBfZXh0cmFjdEVkZ2VEYXRhOiBmdW5jdGlvbihlZGdlKQorICAgIGRpc3Bvc2U6IGZ1bmN0
aW9uKCkKICAgICB7Ci0gICAgICAgIHJldHVybiB7bmFtZTogZWRnZS5uYW1lLCBub2RlOiB0aGlz
Ll9leHRyYWN0Tm9kZURhdGEoZWRnZS5ub2RlKSwgbm9kZUluZGV4OiBlZGdlLm5vZGVJbmRleCwg
dHlwZTogZWRnZS50eXBlfTsKKyAgICAgICAgdGhpcy5fd29ya2VyLnRlcm1pbmF0ZSgpOwogICAg
IH0sCiAKLSAgICBfZXh0cmFjdE5vZGVEYXRhOiBmdW5jdGlvbihub2RlKQorICAgIGRpc3Bvc2VP
YmplY3Q6IGZ1bmN0aW9uKG9iamVjdElkKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHtpZDogbm9k
ZS5pZCwgbmFtZTogbm9kZS5uYW1lLCBub2RlSW5kZXg6IG5vZGUubm9kZUluZGV4LCByZXRhaW5l
ZFNpemU6IG5vZGUucmV0YWluZWRTaXplLCBzZWxmU2l6ZTogbm9kZS5zZWxmU2l6ZSwgdHlwZTog
bm9kZS50eXBlfTsKKyAgICAgICAgdGhpcy5fcG9zdE1lc3NhZ2Uoe2NhbGxJZDogdGhpcy5fbmV4
dENhbGxJZCsrLCBkaXNwb3NpdGlvbjogImRpc3Bvc2UiLCBvYmplY3RJZDogb2JqZWN0SWR9KTsK
ICAgICB9LAogCi0gICAgY3JlYXRlRGlmZjogZnVuY3Rpb24oY2xhc3NOYW1lKQorICAgIGNhbGxH
ZXR0ZXI6IGZ1bmN0aW9uKGNhbGxiYWNrLCBvYmplY3RJZCwgZ2V0dGVyTmFtZSkKICAgICB7Ci0g
ICAgICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdHNEaWZmUHJveHkobmV3
IFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RzRGlmZih0aGlzLl9zbmFwc2hvdCwgY2xhc3NOYW1l
KSk7CisgICAgICAgIHZhciBjYWxsSWQgPSB0aGlzLl9uZXh0Q2FsbElkKys7CisgICAgICAgIHRo
aXMuX2NhbGxiYWNrc1tjYWxsSWRdID0gY2FsbGJhY2s7CisgICAgICAgIHRoaXMuX3Bvc3RNZXNz
YWdlKHtjYWxsSWQ6IGNhbGxJZCwgZGlzcG9zaXRpb246ICJnZXR0ZXIiLCBvYmplY3RJZDogb2Jq
ZWN0SWQsIG1ldGhvZE5hbWU6IGdldHRlck5hbWV9KTsKICAgICB9LAogCi0gICAgY3JlYXRlRWRn
ZXNQcm92aWRlcjogZnVuY3Rpb24obm9kZUluZGV4LCBmaWx0ZXIpCisgICAgY2FsbEZhY3RvcnlN
ZXRob2Q6IGZ1bmN0aW9uKGNhbGxiYWNrLCBvYmplY3RJZCwgbWV0aG9kTmFtZSwgcHJveHlDb25z
dHJ1Y3Rvck5hbWUpCiAgICAgewotICAgICAgICBmdW5jdGlvbiBjcmVhdGVQcm92aWRlcigpCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIGlmIChmaWx0ZXIpCi0gICAgICAgICAgICAgICAgZmlsdGVy
ID0gZmlsdGVyLmJpbmQodGhpcy5fc25hcHNob3QpOwotICAgICAgICAgICAgcmV0dXJuIG5ldyBX
ZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90RWRnZXNQcm92aWRlcih0aGlzLl9zbmFwc2hvdCwgbm9k
ZUluZGV4LCBmaWx0ZXIpOworICAgICAgICB2YXIgY2FsbElkID0gdGhpcy5fbmV4dENhbGxJZCsr
OworICAgICAgICB2YXIgbWV0aG9kQXJndW1lbnRzID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNh
bGwoYXJndW1lbnRzLCA0KTsKKyAgICAgICAgdmFyIG5ld09iamVjdElkID0gdGhpcy5fbmV4dE9i
amVjdElkKys7CisgICAgICAgIHZhciBwcm94eUNvbnN0cnVjdG9yRnVuY3Rpb24gPSB0aGlzLl9m
aW5kRnVuY3Rpb24ocHJveHlDb25zdHJ1Y3Rvck5hbWUpOworICAgICAgICBpZiAoY2FsbGJhY2sp
IHsKKyAgICAgICAgICAgIGZ1bmN0aW9uIHdyYXBDYWxsYmFjayhyZW1vdGVSZXN1bHQpCisgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgY2FsbGJhY2socmVtb3RlUmVzdWx0ID8gbmV3IHBy
b3h5Q29uc3RydWN0b3JGdW5jdGlvbih0aGlzLCBuZXdPYmplY3RJZCkgOiBudWxsKTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIHRoaXMuX2NhbGxiYWNrc1tjYWxsSWRdID0gd3JhcENhbGxi
YWNrLmJpbmQodGhpcyk7CisgICAgICAgICAgICB0aGlzLl9wb3N0TWVzc2FnZSh7Y2FsbElkOiBj
YWxsSWQsIGRpc3Bvc2l0aW9uOiAiZmFjdG9yeSIsIG9iamVjdElkOiBvYmplY3RJZCwgbWV0aG9k
TmFtZTogbWV0aG9kTmFtZSwgbWV0aG9kQXJndW1lbnRzOiBtZXRob2RBcmd1bWVudHMsIG5ld09i
amVjdElkOiBuZXdPYmplY3RJZH0pOworICAgICAgICAgICAgcmV0dXJuIG51bGw7CisgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICB0aGlzLl9wb3N0TWVzc2FnZSh7Y2FsbElkOiBjYWxsSWQs
IGRpc3Bvc2l0aW9uOiAiZmFjdG9yeSIsIG9iamVjdElkOiBvYmplY3RJZCwgbWV0aG9kTmFtZTog
bWV0aG9kTmFtZSwgbWV0aG9kQXJndW1lbnRzOiBtZXRob2RBcmd1bWVudHMsIG5ld09iamVjdElk
OiBuZXdPYmplY3RJZH0pOworICAgICAgICAgICAgcmV0dXJuIG5ldyBwcm94eUNvbnN0cnVjdG9y
RnVuY3Rpb24odGhpcywgbmV3T2JqZWN0SWQpOwogICAgICAgICB9Ci0gICAgICAgIHJldHVybiBu
ZXcgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFByb3ZpZGVyUHJveHkoY3JlYXRlUHJvdmlkZXIu
YmluZCh0aGlzKSwgdGhpcy5fZXh0cmFjdEVkZ2VEYXRhLmJpbmQodGhpcykpOwogICAgIH0sCiAK
LSAgICBjcmVhdGVOb2Rlc1Byb3ZpZGVyOiBmdW5jdGlvbihmaWx0ZXIpCisgICAgY2FsbE1ldGhv
ZDogZnVuY3Rpb24oY2FsbGJhY2ssIG9iamVjdElkLCBtZXRob2ROYW1lKQogICAgIHsKLSAgICAg
ICAgZnVuY3Rpb24gY3JlYXRlUHJvdmlkZXIoKQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAo
ZmlsdGVyKQotICAgICAgICAgICAgICAgIGZpbHRlciA9IGZpbHRlci5iaW5kKHRoaXMuX3NuYXBz
aG90KTsKLSAgICAgICAgICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdE5v
ZGVzUHJvdmlkZXIodGhpcy5fc25hcHNob3QsIGZpbHRlcik7Ci0gICAgICAgIH0KLSAgICAgICAg
cmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90UHJvdmlkZXJQcm94eShjcmVhdGVQ
cm92aWRlci5iaW5kKHRoaXMpLCB0aGlzLl9leHRyYWN0Tm9kZURhdGEuYmluZCh0aGlzKSk7Cisg
ICAgICAgIHZhciBjYWxsSWQgPSB0aGlzLl9uZXh0Q2FsbElkKys7CisgICAgICAgIHZhciBtZXRo
b2RBcmd1bWVudHMgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsIDMpOwor
ICAgICAgICBpZiAoY2FsbGJhY2spCisgICAgICAgICAgICB0aGlzLl9jYWxsYmFja3NbY2FsbElk
XSA9IGNhbGxiYWNrOworICAgICAgICB0aGlzLl9wb3N0TWVzc2FnZSh7Y2FsbElkOiBjYWxsSWQs
IGRpc3Bvc2l0aW9uOiAibWV0aG9kIiwgb2JqZWN0SWQ6IG9iamVjdElkLCBtZXRob2ROYW1lOiBt
ZXRob2ROYW1lLCBtZXRob2RBcmd1bWVudHM6IG1ldGhvZEFyZ3VtZW50c30pOwogICAgIH0sCiAK
LSAgICBjcmVhdGVQYXRoRmluZGVyOiBmdW5jdGlvbih0YXJnZXROb2RlSW5kZXgpCisgICAgX2Zp
bmRGdW5jdGlvbjogZnVuY3Rpb24obmFtZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBuZXcgV2Vi
SW5zcGVjdG9yLkhlYXBTbmFwc2hvdFBhdGhGaW5kZXJQcm94eShuZXcgV2ViSW5zcGVjdG9yLkhl
YXBTbmFwc2hvdFBhdGhGaW5kZXIodGhpcy5fc25hcHNob3QsIHRhcmdldE5vZGVJbmRleCkpOwor
ICAgICAgICB2YXIgcGF0aCA9IG5hbWUuc3BsaXQoIi4iKTsKKyAgICAgICAgdmFyIHJlc3VsdCA9
IHdpbmRvdzsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwYXRoLmxlbmd0aDsgKytpKQor
ICAgICAgICAgICAgcmVzdWx0ID0gcmVzdWx0W3BhdGhbaV1dOworICAgICAgICByZXR1cm4gcmVz
dWx0OworICAgIH0sCisKKyAgICBfbWVzc2FnZVJlY2VpdmVkOiBmdW5jdGlvbihldmVudCkKKyAg
ICB7CisgICAgICAgIHZhciBkYXRhID0gZXZlbnQuZGF0YTsKKyAgICAgICAgaWYgKCF0aGlzLl9j
YWxsYmFja3NbZGF0YS5jYWxsSWRdKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB2YXIg
Y2FsbGJhY2sgPSB0aGlzLl9jYWxsYmFja3NbZGF0YS5jYWxsSWRdOworICAgICAgICBkZWxldGUg
dGhpcy5fY2FsbGJhY2tzW2RhdGEuY2FsbElkXTsKKyAgICAgICAgY2FsbGJhY2soZGF0YS5yZXN1
bHQpOworICAgIH0sCisKKyAgICBfcG9zdE1lc3NhZ2U6IGZ1bmN0aW9uKG1lc3NhZ2UpCisgICAg
eworICAgICAgICB0aGlzLl93b3JrZXIucG9zdE1lc3NhZ2UobWVzc2FnZSk7ICAgICAgCisgICAg
fQorfTsKKworV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFByb3h5T2JqZWN0ID0gZnVuY3Rpb24o
d29ya2VyLCBvYmplY3RJZCkKK3sKKyAgICB0aGlzLl93b3JrZXIgPSB3b3JrZXI7CisgICAgdGhp
cy5fb2JqZWN0SWQgPSBvYmplY3RJZDsKK30KKworV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFBy
b3h5T2JqZWN0LnByb3RvdHlwZSA9IHsKKyAgICBfY2FsbFdvcmtlcjogZnVuY3Rpb24od29ya2Vy
TWV0aG9kTmFtZSwgYXJncykKKyAgICB7CisgICAgICAgIGFyZ3Muc3BsaWNlKDEsIDAsIHRoaXMu
X29iamVjdElkKTsKKyAgICAgICAgcmV0dXJuIHRoaXMuX3dvcmtlclt3b3JrZXJNZXRob2ROYW1l
XS5hcHBseSh0aGlzLl93b3JrZXIsIGFyZ3MpOwogICAgIH0sCiAKICAgICBkaXNwb3NlOiBmdW5j
dGlvbigpCiAgICAgewotICAgICAgICB0aGlzLl9zbmFwc2hvdC5kaXNwb3NlKCk7CisgICAgICAg
IHRoaXMuX3dvcmtlci5kaXNwb3NlT2JqZWN0KHRoaXMuX29iamVjdElkKTsKKyAgICB9LAorCisg
ICAgZGlzcG9zZVdvcmtlcjogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgdGhpcy5fd29ya2Vy
LmRpc3Bvc2UoKTsKICAgICB9LAogCisgICAgY2FsbEZhY3RvcnlNZXRob2Q6IGZ1bmN0aW9uKGNh
bGxiYWNrLCBtZXRob2ROYW1lLCBwcm94eUNvbnN0cnVjdG9yTmFtZSkKKyAgICB7CisgICAgICAg
IHJldHVybiB0aGlzLl9jYWxsV29ya2VyKCJjYWxsRmFjdG9yeU1ldGhvZCIsIEFycmF5LnByb3Rv
dHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMCkpOworICAgIH0sCisKKyAgICBjYWxsR2V0dGVy
OiBmdW5jdGlvbihjYWxsYmFjaywgZ2V0dGVyTmFtZSkKKyAgICB7CisgICAgICAgIHJldHVybiB0
aGlzLl9jYWxsV29ya2VyKCJjYWxsR2V0dGVyIiwgQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwo
YXJndW1lbnRzLCAwKSk7CisgICAgfSwKKworICAgIGNhbGxNZXRob2Q6IGZ1bmN0aW9uKGNhbGxi
YWNrLCBtZXRob2ROYW1lKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX2NhbGxXb3JrZXIo
ImNhbGxNZXRob2QiLCBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsIDApKTsK
KyAgICB9Cit9OworCitXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90TG9hZGVyUHJveHkgPSBmdW5j
dGlvbih3b3JrZXIsIG9iamVjdElkKQoreworICAgIFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RQ
cm94eU9iamVjdC5jYWxsKHRoaXMsIHdvcmtlciwgb2JqZWN0SWQpOworICAgIHRoaXMuX2xvYWRp
bmcgPSBmYWxzZTsKKyAgICB0aGlzLl9sb2FkZWQgPSBmYWxzZTsKK30KKworV2ViSW5zcGVjdG9y
LkhlYXBTbmFwc2hvdExvYWRlclByb3h5LnByb3RvdHlwZSA9IHsKICAgICBmaW5pc2hMb2FkaW5n
OiBmdW5jdGlvbihjYWxsYmFjaykKICAgICB7Ci0gICAgICAgIGlmICh0aGlzLl9zbmFwc2hvdCB8
fCAhdGhpcy5faXNMb2FkaW5nKQorICAgICAgICBpZiAoIXRoaXMuX2xvYWRpbmcpCiAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGZ1bmN0aW9uIHBhcnNlKCkgewotICAgICAgICAg
ICAgdmFyIHJhd1NuYXBzaG90ID0gSlNPTi5wYXJzZSh0aGlzLl9qc29uKTsKLSAgICAgICAgICAg
IHZhciBsb2FkQ2FsbGJhY2tzID0gdGhpcy5fb25Mb2FkQ2FsbGJhY2tzOwotICAgICAgICAgICAg
bG9hZENhbGxiYWNrcy5zcGxpY2UoMCwgMCwgY2FsbGJhY2spOwotICAgICAgICAgICAgZGVsZXRl
IHRoaXMuX29uTG9hZENhbGxiYWNrOwotICAgICAgICAgICAgZGVsZXRlIHRoaXMuX2pzb247Ci0g
ICAgICAgICAgICBkZWxldGUgdGhpcy5faXNMb2FkaW5nOwotICAgICAgICAgICAgdGhpcy5fc25h
cHNob3QgPSBuZXcgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdChyYXdTbmFwc2hvdCk7Ci0gICAg
ICAgICAgICB0aGlzLl9ub2RlQ291bnQgPSB0aGlzLl9zbmFwc2hvdC5ub2RlQ291bnQ7Ci0gICAg
ICAgICAgICB0aGlzLl9yb290Tm9kZUluZGV4ID0gdGhpcy5fc25hcHNob3QuX3Jvb3ROb2RlSW5k
ZXg7Ci0gICAgICAgICAgICB0aGlzLl90b3RhbFNpemUgPSB0aGlzLl9zbmFwc2hvdC50b3RhbFNp
emU7CisgICAgICAgIHZhciBsb2FkQ2FsbGJhY2tzID0gdGhpcy5fb25Mb2FkQ2FsbGJhY2tzOwor
ICAgICAgICBsb2FkQ2FsbGJhY2tzLnNwbGljZSgwLCAwLCBjYWxsYmFjayk7CisgICAgICAgIGRl
bGV0ZSB0aGlzLl9vbkxvYWRDYWxsYmFja3M7CisgICAgICAgIHRoaXMuX2xvYWRpbmcgPSBmYWxz
ZTsKKyAgICAgICAgdGhpcy5fbG9hZGVkID0gdHJ1ZTsKKyAgICAgICAgZnVuY3Rpb24gY2FsbExv
YWRDYWxsYmFja3Moc25hcHNob3RQcm94eSkKKyAgICAgICAgewogICAgICAgICAgICAgZm9yICh2
YXIgaSA9IDA7IGkgPCBsb2FkQ2FsbGJhY2tzLmxlbmd0aDsgKytpKQotICAgICAgICAgICAgICAg
IGxvYWRDYWxsYmFja3NbaV0oKTsKKyAgICAgICAgICAgICAgICBsb2FkQ2FsbGJhY2tzW2ldKHNu
YXBzaG90UHJveHkpOwogICAgICAgICB9Ci0gICAgICAgIHNldFRpbWVvdXQocGFyc2UuYmluZCh0
aGlzKSwgMCk7CisgICAgICAgIGZ1bmN0aW9uIHVwZGF0ZVN0YXRpY0RhdGEoc25hcHNob3RQcm94
eSkKKyAgICAgICAgeworICAgICAgICAgICAgdGhpcy5kaXNwb3NlKCk7CisgICAgICAgICAgICBz
bmFwc2hvdFByb3h5LnVwZGF0ZVN0YXRpY0RhdGEoY2FsbExvYWRDYWxsYmFja3MpOworICAgICAg
ICB9CisgICAgICAgIHRoaXMuY2FsbEZhY3RvcnlNZXRob2QodXBkYXRlU3RhdGljRGF0YS5iaW5k
KHRoaXMpLCAiZmluaXNoTG9hZGluZyIsICJXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90UHJveHki
KTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfSwKIAogICAgIGdldCBsb2FkZWQoKQogICAg
IHsKLSAgICAgICAgcmV0dXJuICEhdGhpcy5fc25hcHNob3Q7CisgICAgICAgIHJldHVybiB0aGlz
Ll9sb2FkZWQ7CiAgICAgfSwKIAotICAgIGdldCBub2RlQ291bnQoKQorICAgIHN0YXJ0TG9hZGlu
ZzogZnVuY3Rpb24oY2FsbGJhY2spCisgICAgeworICAgICAgICBpZiAoIXRoaXMuX2xvYWRpbmcp
IHsKKyAgICAgICAgICAgIHRoaXMuX29uTG9hZENhbGxiYWNrcyA9IFtjYWxsYmFja107CisgICAg
ICAgICAgICB0aGlzLl9sb2FkaW5nID0gdHJ1ZTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOwor
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgdGhpcy5fb25Mb2FkQ2FsbGJhY2tzLnB1c2go
Y2FsbGJhY2spOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgfSwK
KworICAgIHB1c2hKU09OQ2h1bms6IGZ1bmN0aW9uKGNodW5rKQorICAgIHsKKyAgICAgICAgaWYg
KCF0aGlzLl9sb2FkaW5nKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB0aGlzLmNhbGxN
ZXRob2QobnVsbCwgInB1c2hKU09OQ2h1bmsiLCBjaHVuayk7CisgICAgfQorfTsKKworV2ViSW5z
cGVjdG9yLkhlYXBTbmFwc2hvdExvYWRlclByb3h5LnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJ
bnNwZWN0b3IuSGVhcFNuYXBzaG90UHJveHlPYmplY3QucHJvdG90eXBlOworCitXZWJJbnNwZWN0
b3IuSGVhcFNuYXBzaG90UHJveHkgPSBmdW5jdGlvbih3b3JrZXIsIG9iamVjdElkKQoreworICAg
IFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RQcm94eU9iamVjdC5jYWxsKHRoaXMsIHdvcmtlciwg
b2JqZWN0SWQpOworfQorCitXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90UHJveHkucHJvdG90eXBl
ID0geworICAgIGFnZ3JlZ2F0ZXM6IGZ1bmN0aW9uKHdpdGhOb2RlSW5kZXhlcywgY2FsbGJhY2sp
CiAgICAgewotICAgICAgICByZXR1cm4gdGhpcy5fbm9kZUNvdW50OworICAgICAgICB0aGlzLmNh
bGxNZXRob2QoY2FsbGJhY2ssICJhZ2dyZWdhdGVzIiwgd2l0aE5vZGVJbmRleGVzKTsKICAgICB9
LAogCi0gICAgbm9kZUZpZWxkVmFsdWVzQnlJbmRleDogZnVuY3Rpb24oZmllbGROYW1lLCBpbmRl
eGVzLCBjYWxsYmFjaykKKyAgICBjcmVhdGVEaWZmOiBmdW5jdGlvbihjbGFzc05hbWUpCiAgICAg
ewotICAgICAgICBmdW5jdGlvbiByZXR1cm5SZXN1bHQoKQotICAgICAgICB7Ci0gICAgICAgICAg
ICBjYWxsYmFjayh0aGlzLl9zbmFwc2hvdC5ub2RlRmllbGRWYWx1ZXNCeUluZGV4KGZpZWxkTmFt
ZSwgaW5kZXhlcykpOwotICAgICAgICB9Ci0gICAgICAgIHNldFRpbWVvdXQocmV0dXJuUmVzdWx0
LmJpbmQodGhpcyksIDApOworICAgICAgICByZXR1cm4gdGhpcy5jYWxsRmFjdG9yeU1ldGhvZChu
dWxsLCAiY3JlYXRlRGlmZiIsICAiV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdHNEaWZmUHJveHki
LCBjbGFzc05hbWUpOwogICAgIH0sCiAKLSAgICBub2RlSWRzOiBmdW5jdGlvbihjYWxsYmFjaykK
KyAgICBjcmVhdGVFZGdlc1Byb3ZpZGVyOiBmdW5jdGlvbihub2RlSW5kZXgsIGZpbHRlcikKICAg
ICB7Ci0gICAgICAgIHRoaXMuX2ludm9rZUdldHRlcigibm9kZUlkcyIsIGNhbGxiYWNrKTsKKyAg
ICAgICAgcmV0dXJuIHRoaXMuY2FsbEZhY3RvcnlNZXRob2QobnVsbCwgImNyZWF0ZUVkZ2VzUHJv
dmlkZXIiLCAiV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFByb3ZpZGVyUHJveHkiLCBub2RlSW5k
ZXgsIGZpbHRlcik7CiAgICAgfSwKIAotICAgIHB1c2hKU09OQ2h1bms6IGZ1bmN0aW9uKGNodW5r
KQorICAgIGNyZWF0ZU5vZGVzUHJvdmlkZXI6IGZ1bmN0aW9uKGZpbHRlcikKICAgICB7Ci0gICAg
ICAgIGlmICh0aGlzLmxvYWRlZCB8fCAhdGhpcy5faXNMb2FkaW5nKQotICAgICAgICAgICAgcmV0
dXJuOwotICAgICAgICB0aGlzLl9qc29uICs9IGNodW5rOworICAgICAgICByZXR1cm4gdGhpcy5j
YWxsRmFjdG9yeU1ldGhvZChudWxsLCAiY3JlYXRlTm9kZXNQcm92aWRlciIsICJXZWJJbnNwZWN0
b3IuSGVhcFNuYXBzaG90UHJvdmlkZXJQcm94eSIsIGZpbHRlcik7CisgICAgfSwKKworICAgIGNy
ZWF0ZVBhdGhGaW5kZXI6IGZ1bmN0aW9uKHRhcmdldE5vZGVJbmRleCkKKyAgICB7CisgICAgICAg
IHJldHVybiB0aGlzLmNhbGxGYWN0b3J5TWV0aG9kKG51bGwsICJjcmVhdGVQYXRoRmluZGVyIiwg
IldlYkluc3BlY3Rvci5IZWFwU25hcHNob3RQYXRoRmluZGVyUHJveHkiLCB0YXJnZXROb2RlSW5k
ZXgpOworICAgIH0sCisKKyAgICBkaXNwb3NlOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICB0
aGlzLmRpc3Bvc2VXb3JrZXIoKTsKKyAgICB9LAorCisgICAgZmluaXNoTG9hZGluZzogZnVuY3Rp
b24oKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0sCisKKyAgICBnZXQgbG9h
ZGVkKCkKKyAgICB7CisgICAgICAgIHJldHVybiAhIXRoaXMuX29iamVjdElkOworICAgIH0sCisK
KyAgICBnZXQgbm9kZUNvdW50KCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9zdGF0aWNE
YXRhLm5vZGVDb3VudDsKKyAgICB9LAorCisgICAgbm9kZUZpZWxkVmFsdWVzQnlJbmRleDogZnVu
Y3Rpb24oZmllbGROYW1lLCBpbmRleGVzLCBjYWxsYmFjaykKKyAgICB7CisgICAgICAgIHRoaXMu
Y2FsbE1ldGhvZChjYWxsYmFjaywgIm5vZGVGaWVsZFZhbHVlc0J5SW5kZXgiLCBmaWVsZE5hbWUs
IGluZGV4ZXMpOwogICAgIH0sCiAKICAgICBwdXNoQmFzZUlkczogZnVuY3Rpb24oc25hcHNob3RJ
ZCwgY2xhc3NOYW1lLCBub2RlSWRzKQogICAgIHsKLSAgICAgICAgdGhpcy5fc25hcHNob3QudXBk
YXRlQmFzZU5vZGVJZHMoc25hcHNob3RJZCwgY2xhc3NOYW1lLCBub2RlSWRzKTsKKyAgICAgICAg
dGhpcy5jYWxsTWV0aG9kKG51bGwsICJwdXNoQmFzZUlkcyIsIHNuYXBzaG90SWQsIGNsYXNzTmFt
ZSwgbm9kZUlkcyk7CiAgICAgfSwKIAogICAgIGdldCByb290Tm9kZUluZGV4KCkKICAgICB7Ci0g
ICAgICAgIHJldHVybiB0aGlzLl9yb290Tm9kZUluZGV4OworICAgICAgICByZXR1cm4gdGhpcy5f
c3RhdGljRGF0YS5yb290Tm9kZUluZGV4OwogICAgIH0sCiAKLSAgICBzdGFydExvYWRpbmc6IGZ1
bmN0aW9uKGNhbGxiYWNrKQorICAgIHVwZGF0ZVN0YXRpY0RhdGE6IGZ1bmN0aW9uKGNhbGxiYWNr
KQogICAgIHsKLSAgICAgICAgaWYgKHRoaXMuX3NuYXBzaG90KSB7Ci0gICAgICAgICAgICBmdW5j
dGlvbiBhc3luY0ludm9rZSgpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgY2FsbGJh
Y2soKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHNldFRpbWVvdXQoY2FsbGJhY2ssIDAp
OwotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9IGVsc2UgaWYgKHRoaXMuX2lz
TG9hZGluZykgewotICAgICAgICAgICAgdGhpcy5fb25Mb2FkQ2FsbGJhY2tzLnB1c2goY2FsbGJh
Y2spOwotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9IGVsc2UgewotICAgICAg
ICAgICAgdGhpcy5faXNMb2FkaW5nID0gdHJ1ZTsKLSAgICAgICAgICAgIHRoaXMuX29uTG9hZENh
bGxiYWNrcyA9IFtjYWxsYmFja107Ci0gICAgICAgICAgICB0aGlzLl9qc29uID0gIiI7Ci0gICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgZnVuY3Rpb24gZGF0YVJlY2VpdmVkKHN0YXRp
Y0RhdGEpCisgICAgICAgIHsKKyAgICAgICAgICAgIHRoaXMuX3N0YXRpY0RhdGEgPSBzdGF0aWNE
YXRhOworICAgICAgICAgICAgY2FsbGJhY2sodGhpcyk7CiAgICAgICAgIH0KKyAgICAgICAgdGhp
cy5jYWxsTWV0aG9kKGRhdGFSZWNlaXZlZC5iaW5kKHRoaXMpLCAidXBkYXRlU3RhdGljRGF0YSIp
OworICAgIH0sCisKKyAgICBzdGFydExvYWRpbmc6IGZ1bmN0aW9uKGNhbGxiYWNrKQorICAgIHsK
KyAgICAgICAgc2V0VGltZW91dChjYWxsYmFjaywgMCk7CisgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICB9LAogCiAgICAgZ2V0IHRvdGFsU2l6ZSgpCiAgICAgewotICAgICAgICByZXR1cm4gdGhp
cy5fdG90YWxTaXplOworICAgICAgICByZXR1cm4gdGhpcy5fc3RhdGljRGF0YS50b3RhbFNpemU7
CiAgICAgfSwKIAogICAgIGdldCB1aWQoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuX3Nu
YXBzaG90LnVpZDsKKyAgICAgICAgcmV0dXJuIHRoaXMuX3N0YXRpY0RhdGEudWlkOwogICAgIH0K
IH07CiAKLVdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RQcm92aWRlclByb3h5ID0gZnVuY3Rpb24o
Y3JlYXRlUHJvdmlkZXIsIGV4dHJhY3REYXRhKQorV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFBy
b3h5LnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90UHJveHlP
YmplY3QucHJvdG90eXBlOworCitXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90UHJvdmlkZXJQcm94
eSA9IGZ1bmN0aW9uKHdvcmtlciwgb2JqZWN0SWQpCiB7Ci0gICAgdGhpcy5fcHJvdmlkZXIgPSBj
cmVhdGVQcm92aWRlcigpOwotICAgIHRoaXMuX2V4dHJhY3REYXRhID0gZXh0cmFjdERhdGE7Cisg
ICAgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFByb3h5T2JqZWN0LmNhbGwodGhpcywgd29ya2Vy
LCBvYmplY3RJZCk7CiB9CiAKIFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RQcm92aWRlclByb3h5
LnByb3RvdHlwZSA9IHsKLSAgICBnZXROZXh0SXRlbXM6IGZ1bmN0aW9uKGNvdW50LCBjYWxsYmFj
aykKKyAgICBpc0VtcHR5OiBmdW5jdGlvbihjYWxsYmFjaykKICAgICB7Ci0gICAgICAgIGZ1bmN0
aW9uIHJldHVyblJlc3VsdCgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHZhciByZXN1bHQgPSBu
ZXcgQXJyYXkoY291bnQpOwotICAgICAgICAgICAgZm9yICh2YXIgaSA9IDAgOyBpIDwgY291bnQg
JiYgdGhpcy5fcHJvdmlkZXIuaGFzTmV4dCgpOyArK2ksIHRoaXMuX3Byb3ZpZGVyLm5leHQoKSkK
LSAgICAgICAgICAgICAgICByZXN1bHRbaV0gPSB0aGlzLl9leHRyYWN0RGF0YSh0aGlzLl9wcm92
aWRlci5pdGVtKTsKLSAgICAgICAgICAgIHJlc3VsdC5sZW5ndGggPSBpOwotICAgICAgICAgICAg
Y2FsbGJhY2socmVzdWx0LCB0aGlzLl9wcm92aWRlci5oYXNOZXh0KCksIHRoaXMuX3Byb3ZpZGVy
Lmxlbmd0aCk7Ci0gICAgICAgIH0KLSAgICAgICAgc2V0VGltZW91dChyZXR1cm5SZXN1bHQuYmlu
ZCh0aGlzKSwgMCk7CisgICAgICAgIHRoaXMuY2FsbEdldHRlcihjYWxsYmFjaywgImlzRW1wdHki
KTsKICAgICB9LAogCi0gICAgaXNFbXB0eTogZnVuY3Rpb24oY2FsbGJhY2spCisgICAgc2VyaWFs
aXplTmV4dEl0ZW1zOiBmdW5jdGlvbihjb3VudCwgY2FsbGJhY2spCiAgICAgewotICAgICAgICBm
dW5jdGlvbiByZXR1cm5SZXN1bHQoKQotICAgICAgICB7Ci0gICAgICAgICAgICBjYWxsYmFjayh0
aGlzLl9wcm92aWRlci5pc0VtcHR5KTsKLSAgICAgICAgfQotICAgICAgICBzZXRUaW1lb3V0KHJl
dHVyblJlc3VsdC5iaW5kKHRoaXMpLCAwKTsKKyAgICAgICAgdGhpcy5jYWxsTWV0aG9kKGNhbGxi
YWNrLCAic2VyaWFsaXplTmV4dEl0ZW1zIiwgY291bnQpOwogICAgIH0sCiAKICAgICBzb3J0QW5k
UmV3aW5kOiBmdW5jdGlvbihjb21wYXJhdG9yLCBjYWxsYmFjaykKICAgICB7Ci0gICAgICAgIGZ1
bmN0aW9uIHJldHVyblJlc3VsdCgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHZhciByZXN1bHQg
PSB0aGlzLl9wcm92aWRlci5zb3J0KGNvbXBhcmF0b3IpOwotICAgICAgICAgICAgaWYgKHJlc3Vs
dCkKLSAgICAgICAgICAgICAgICB0aGlzLl9wcm92aWRlci5maXJzdCgpOwotICAgICAgICAgICAg
Y2FsbGJhY2socmVzdWx0KTsKLSAgICAgICAgfQotICAgICAgICBzZXRUaW1lb3V0KHJldHVyblJl
c3VsdC5iaW5kKHRoaXMpLCAwKTsKKyAgICAgICAgdGhpcy5jYWxsTWV0aG9kKGNhbGxiYWNrLCAi
c29ydEFuZFJld2luZCIsIGNvbXBhcmF0b3IpOwogICAgIH0KIH07CiAKLVdlYkluc3BlY3Rvci5I
ZWFwU25hcHNob3RQYXRoRmluZGVyUHJveHkgPSBmdW5jdGlvbihwYXRoRmluZGVyKQorV2ViSW5z
cGVjdG9yLkhlYXBTbmFwc2hvdFByb3ZpZGVyUHJveHkucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdl
Ykluc3BlY3Rvci5IZWFwU25hcHNob3RQcm94eU9iamVjdC5wcm90b3R5cGU7CisKK1dlYkluc3Bl
Y3Rvci5IZWFwU25hcHNob3RQYXRoRmluZGVyUHJveHkgPSBmdW5jdGlvbih3b3JrZXIsIG9iamVj
dElkKQogewotICAgIHRoaXMuX3BhdGhGaW5kZXIgPSBwYXRoRmluZGVyOworICAgIFdlYkluc3Bl
Y3Rvci5IZWFwU25hcHNob3RQcm94eU9iamVjdC5jYWxsKHRoaXMsIHdvcmtlciwgb2JqZWN0SWQp
OwogfQogCiBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90UGF0aEZpbmRlclByb3h5LnByb3RvdHlw
ZSA9IHsKICAgICBmaW5kTmV4dDogZnVuY3Rpb24oY2FsbGJhY2spCiAgICAgewotICAgICAgICBm
dW5jdGlvbiByZXR1cm5SZXN1bHQoKQotICAgICAgICB7Ci0gICAgICAgICAgICBjYWxsYmFjayh0
aGlzLl9wYXRoRmluZGVyLmZpbmROZXh0KCkpOwotICAgICAgICB9Ci0gICAgICAgIHNldFRpbWVv
dXQocmV0dXJuUmVzdWx0LmJpbmQodGhpcyksIDApOworICAgICAgICB0aGlzLmNhbGxNZXRob2Qo
Y2FsbGJhY2ssICJmaW5kTmV4dCIpOwogICAgIH0sCiAKICAgICB1cGRhdGVSb290czogZnVuY3Rp
b24oZmlsdGVyKQogICAgIHsKLSAgICAgICAgZnVuY3Rpb24gYXN5bmNJbnZva2UoKQotICAgICAg
ICB7Ci0gICAgICAgICAgICB0aGlzLl9wYXRoRmluZGVyLnVwZGF0ZVJvb3RzKGZpbHRlcik7Ci0g
ICAgICAgIH0KLSAgICAgICAgc2V0VGltZW91dChhc3luY0ludm9rZS5iaW5kKHRoaXMpLCAwKTsK
KyAgICAgICAgdGhpcy5jYWxsTWV0aG9kKG51bGwsICJ1cGRhdGVSb290cyIsIGZpbHRlcik7CiAg
ICAgfQogfTsKIAotV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdHNEaWZmUHJveHkgPSBmdW5jdGlv
bihkaWZmKQorV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFBhdGhGaW5kZXJQcm94eS5wcm90b3R5
cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFByb3h5T2JqZWN0LnByb3Rv
dHlwZTsKKworV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdHNEaWZmUHJveHkgPSBmdW5jdGlvbih3
b3JrZXIsIG9iamVjdElkKQogewotICAgIHRoaXMuX2RpZmYgPSBkaWZmOworICAgIFdlYkluc3Bl
Y3Rvci5IZWFwU25hcHNob3RQcm94eU9iamVjdC5jYWxsKHRoaXMsIHdvcmtlciwgb2JqZWN0SWQp
OwogfQogCiBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90c0RpZmZQcm94eS5wcm90b3R5cGUgPSB7
CiAgICAgY2FsY3VsYXRlOiBmdW5jdGlvbihjYWxsYmFjaykKICAgICB7Ci0gICAgICAgIGZ1bmN0
aW9uIHJldHVyblJlc3VsdCgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGNhbGxiYWNrKHRoaXMu
X2RpZmYuY2FsY3VsYXRlKCkpOwotICAgICAgICB9Ci0gICAgICAgIHNldFRpbWVvdXQocmV0dXJu
UmVzdWx0LmJpbmQodGhpcyksIDApOworICAgICAgICB0aGlzLmNhbGxNZXRob2QoY2FsbGJhY2ss
ICJjYWxjdWxhdGUiKTsKICAgICB9LAogCi0gICAgcHVzaEJhc2VJZHM6IGZ1bmN0aW9uKGJhc2VT
bmFwc2hvdElkLCBiYXNlSWRzKQorICAgIHB1c2hCYXNlSWRzOiBmdW5jdGlvbihiYXNlSWRzKQog
ICAgIHsKLSAgICAgICAgdGhpcy5fZGlmZi5iYXNlSWRzID0gYmFzZUlkczsKKyAgICAgICAgdGhp
cy5jYWxsTWV0aG9kKG51bGwsICJwdXNoQmFzZUlkcyIsIGJhc2VJZHMpOwogICAgIH0sCiAKICAg
ICBwdXNoQmFzZVNlbGZTaXplczogZnVuY3Rpb24oYmFzZVNlbGZTaXplcykKICAgICB7Ci0gICAg
ICAgIHRoaXMuX2RpZmYuYmFzZVNlbGZTaXplcyA9IGJhc2VTZWxmU2l6ZXM7CisgICAgICAgIHRo
aXMuY2FsbE1ldGhvZChudWxsLCAicHVzaEJhc2VTZWxmU2l6ZXMiLCBiYXNlU2VsZlNpemVzKTsK
ICAgICB9CiB9OworCitXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90c0RpZmZQcm94eS5wcm90b3R5
cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFByb3h5T2JqZWN0LnByb3Rv
dHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSGVh
cFNuYXBzaG90V29ya2VyLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9I
ZWFwU25hcHNob3RXb3JrZXIuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u
ZWE0OGYyOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvSGVhcFNuYXBzaG90V29ya2VyLmpzCkBAIC0wLDAgKzEsNDQgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0
aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5h
bWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVj
aWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFT
IElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAor
ICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitXZWJJbnNwZWN0b3Ig
PSB7fTsKK1dlYkluc3BlY3Rvci5VSVN0cmluZyA9IGZ1bmN0aW9uKHMpIHsgcmV0dXJuIHM7IH07
CisKK2ltcG9ydFNjcmlwdHMoIkJpbmFyeVNlYXJjaC5qcyIpOworaW1wb3J0U2NyaXB0cygiSGVh
cFNuYXBzaG90LmpzIik7CitpbXBvcnRTY3JpcHRzKCJIZWFwU25hcHNob3RXb3JrZXJEaXNwYXRj
aGVyLmpzIik7CisKK2Z1bmN0aW9uIHBvc3RNZXNzYWdlV3JhcHBlcihtZXNzYWdlKQoreworICAg
IHBvc3RNZXNzYWdlKG1lc3NhZ2UpOworfQorCit2YXIgZGlzcGF0Y2hlciA9IG5ldyBXZWJJbnNw
ZWN0b3IuSGVhcFNuYXBzaG90V29ya2VyRGlzcGF0Y2hlcih0aGlzLCBwb3N0TWVzc2FnZVdyYXBw
ZXIpOworYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsIGRpc3BhdGNoZXIuZGlzcGF0Y2hNZXNz
YWdlLmJpbmQoZGlzcGF0Y2hlciksIGZhbHNlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvSGVhcFNuYXBzaG90V29ya2VyRGlzcGF0Y2hlci5qcyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSGVhcFNuYXBzaG90V29ya2VyRGlzcGF0
Y2hlci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZjMyZWMyCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9IZWFwU25h
cHNob3RXb3JrZXJEaXNwYXRjaGVyLmpzCkBAIC0wLDAgKzEsODUgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9u
LgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVz
IG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElT
IiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICog
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitXZWJJbnNwZWN0b3IuSGVh
cFNuYXBzaG90V29ya2VyRGlzcGF0Y2hlciA9IGZ1bmN0aW9uKGdsb2JhbE9iamVjdCwgcG9zdE1l
c3NhZ2UpCit7CisgICAgdGhpcy5fb2JqZWN0cyA9IFtdOworICAgIHRoaXMuX2dsb2JhbCA9IGds
b2JhbE9iamVjdDsKKyAgICB0aGlzLl9wb3N0TWVzc2FnZSA9IHBvc3RNZXNzYWdlOworfQorCitX
ZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90V29ya2VyRGlzcGF0Y2hlci5wcm90b3R5cGUgPSB7Cisg
ICAgX2ZpbmRGdW5jdGlvbjogZnVuY3Rpb24obmFtZSkKKyAgICB7CisgICAgICAgIHZhciBwYXRo
ID0gbmFtZS5zcGxpdCgiLiIpOworICAgICAgICB2YXIgcmVzdWx0ID0gdGhpcy5fZ2xvYmFsOwor
ICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHBhdGgubGVuZ3RoOyArK2kpCisgICAgICAgICAg
ICByZXN1bHQgPSByZXN1bHRbcGF0aFtpXV07CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAg
fSwKKworICAgIGRpc3BhdGNoTWVzc2FnZTogZnVuY3Rpb24oZXZlbnQpCisgICAgeworICAgICAg
ICB2YXIgZGF0YSA9IGV2ZW50LmRhdGE7CisgICAgICAgIHN3aXRjaCAoZGF0YS5kaXNwb3NpdGlv
bikgeworICAgICAgICAgICAgY2FzZSAiY3JlYXRlIjogeworICAgICAgICAgICAgICAgIHZhciBj
b25zdHJ1Y3RvckZ1bmN0aW9uID0gdGhpcy5fZmluZEZ1bmN0aW9uKGRhdGEubWV0aG9kTmFtZSk7
CisgICAgICAgICAgICAgICAgdGhpcy5fb2JqZWN0c1tkYXRhLm9iamVjdElkXSA9IG5ldyBjb25z
dHJ1Y3RvckZ1bmN0aW9uKCk7CisgICAgICAgICAgICAgICAgdGhpcy5fcG9zdE1lc3NhZ2Uoe2Nh
bGxJZDogZGF0YS5jYWxsSWR9KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIGNhc2UgImRpc3Bvc2UiOiB7CisgICAgICAgICAgICAgICAgZGVsZXRl
IHRoaXMuX29iamVjdHNbZGF0YS5vYmplY3RJZF07CisgICAgICAgICAgICAgICAgdGhpcy5fcG9z
dE1lc3NhZ2Uoe2NhbGxJZDogZGF0YS5jYWxsSWR9KTsKKyAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNhc2UgImdldHRlciI6IHsKKyAgICAgICAgICAg
ICAgICB2YXIgb2JqZWN0ID0gdGhpcy5fb2JqZWN0c1tkYXRhLm9iamVjdElkXTsKKyAgICAgICAg
ICAgICAgICB2YXIgcmVzdWx0ID0gb2JqZWN0W2RhdGEubWV0aG9kTmFtZV07CisgICAgICAgICAg
ICAgICAgdGhpcy5fcG9zdE1lc3NhZ2Uoe2NhbGxJZDogZGF0YS5jYWxsSWQsIHJlc3VsdDogcmVz
dWx0fSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICBjYXNlICJmYWN0b3J5IjogeworICAgICAgICAgICAgICAgIHZhciBvYmplY3QgPSB0aGlzLl9v
YmplY3RzW2RhdGEub2JqZWN0SWRdOworICAgICAgICAgICAgICAgIHZhciByZXN1bHQgPSBvYmpl
Y3RbZGF0YS5tZXRob2ROYW1lXS5hcHBseShvYmplY3QsIGRhdGEubWV0aG9kQXJndW1lbnRzKTsK
KyAgICAgICAgICAgICAgICBpZiAocmVzdWx0KQorICAgICAgICAgICAgICAgICAgICB0aGlzLl9v
YmplY3RzW2RhdGEubmV3T2JqZWN0SWRdID0gcmVzdWx0OyAgICAgICAgICAgIAorICAgICAgICAg
ICAgICAgIHRoaXMuX3Bvc3RNZXNzYWdlKHtjYWxsSWQ6IGRhdGEuY2FsbElkLCByZXN1bHQ6ICEh
cmVzdWx0fSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICBjYXNlICJtZXRob2QiOiB7CisgICAgICAgICAgICAgICAgdmFyIG9iamVjdCA9IHRoaXMu
X29iamVjdHNbZGF0YS5vYmplY3RJZF07CisgICAgICAgICAgICAgICAgdmFyIHJlc3VsdCA9IG9i
amVjdFtkYXRhLm1ldGhvZE5hbWVdLmFwcGx5KG9iamVjdCwgZGF0YS5tZXRob2RBcmd1bWVudHMp
OworICAgICAgICAgICAgICAgIHRoaXMuX3Bvc3RNZXNzYWdlKHtjYWxsSWQ6IGRhdGEuY2FsbElk
LCByZXN1bHQ6IHJlc3VsdH0pOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
fQorICAgICAgICB9CisgICAgfQorfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvUGxlYXNlV2FpdE1lc3NhZ2UuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL1BsZWFzZVdhaXRNZXNzYWdlLmpzCmluZGV4IGM1ZGRkNDkuLjg0Y2Rh
MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUGxlYXNl
V2FpdE1lc3NhZ2UuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Q
bGVhc2VXYWl0TWVzc2FnZS5qcwpAQCAtODEsMjcgKzgxLDIyIEBAIFdlYkluc3BlY3Rvci5QbGVh
c2VXYWl0TWVzc2FnZS5wcm90b3R5cGUgPSB7CiAgICAgICAgIGVsZW1lbnQuYXBwZW5kQ2hpbGQo
bWVzc2FnZSk7CiAgICAgfSwKIAotICAgIHN0YXJ0QWN0aW9uOiBmdW5jdGlvbihlbGVtZW50LCBh
Y3Rpb25DYWxsYmFjaywgY2FuY2VsQ2FsbGJhY2spCisgICAgc2hvd0FuZFdhaXRGb3I6IGZ1bmN0
aW9uKGVsZW1lbnQsIGxpc3Rlbk9iamVjdCwgbGlzdGVuRXZlbnQpCiAgICAgewogICAgICAgICB2
YXIgaW5zdGFuY2UgPSBXZWJJbnNwZWN0b3IuUGxlYXNlV2FpdE1lc3NhZ2UucHJvdG90eXBlLmlu
c3RhbmNlOwogICAgICAgICB2YXIgbWVzc2FnZSA9IGluc3RhbmNlLmVsZW1lbnQ7Ci0gICAgICAg
IGlmIChtZXNzYWdlLnBhcmVudE5vZGUgPT09IGVsZW1lbnQpIHsKLSAgICAgICAgICAgIHNldFRp
bWVvdXQoYWN0aW9uQ2FsbGJhY2ssIDApOworICAgICAgICBpZiAobWVzc2FnZS5wYXJlbnROb2Rl
ID09PSBlbGVtZW50KQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgIAotICAg
ICAgICBmdW5jdGlvbiBkb0FjdGlvbigpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHRyeSB7Ci0g
ICAgICAgICAgICAgICAgYWN0aW9uQ2FsbGJhY2soKTsKLSAgICAgICAgICAgIH0gZmluYWxseSB7
Ci0gICAgICAgICAgICAgICAgaWYgKG1lc3NhZ2UucGFyZW50Tm9kZSkKLSAgICAgICAgICAgICAg
ICAgICAgbWVzc2FnZS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKG1lc3NhZ2UpOwotICAgICAgICAg
ICAgfQotICAgICAgICB9CiAKLSAgICAgICAgV2ViSW5zcGVjdG9yLlBsZWFzZVdhaXRNZXNzYWdl
LnByb3RvdHlwZS5zaG93KGVsZW1lbnQsIGNhbmNlbENhbGxiYWNrKTsKLSAgICAgICAgc2V0VGlt
ZW91dChkb0FjdGlvbiwgMCk7CisgICAgICAgIGxpc3Rlbk9iamVjdC5hZGRFdmVudExpc3RlbmVy
KGxpc3RlbkV2ZW50LCBXZWJJbnNwZWN0b3IuUGxlYXNlV2FpdE1lc3NhZ2UucHJvdG90eXBlLnVu
bGlzdGVuQW5kSGlkZS5iaW5kKGluc3RhbmNlLCBsaXN0ZW5PYmplY3QsIGxpc3RlbkV2ZW50KSwg
aW5zdGFuY2UpOworICAgICAgICBXZWJJbnNwZWN0b3IuUGxlYXNlV2FpdE1lc3NhZ2UucHJvdG90
eXBlLnNob3coZWxlbWVudCk7CisgICAgfSwKKworICAgIHVubGlzdGVuQW5kSGlkZTogZnVuY3Rp
b24obGlzdGVuT2JqZWN0LCBsaXN0ZW5FdmVudCkKKyAgICB7CisgICAgICAgIHZhciBpbnN0YW5j
ZSA9IFdlYkluc3BlY3Rvci5QbGVhc2VXYWl0TWVzc2FnZS5wcm90b3R5cGUuaW5zdGFuY2U7Cisg
ICAgICAgIGxpc3Rlbk9iamVjdC5yZW1vdmVFdmVudExpc3RlbmVyKGxpc3RlbkV2ZW50LCBXZWJJ
bnNwZWN0b3IuUGxlYXNlV2FpdE1lc3NhZ2UucHJvdG90eXBlLnVubGlzdGVuQW5kSGlkZSwgaW5z
dGFuY2UpOworICAgICAgICBXZWJJbnNwZWN0b3IuUGxlYXNlV2FpdE1lc3NhZ2UucHJvdG90eXBl
LmhpZGUoKTsKICAgICB9CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL1Byb2ZpbGVzUGFuZWwuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL1Byb2ZpbGVzUGFuZWwuanMKaW5kZXggZDlhMTE3OC4uMDY1YTEwZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Qcm9maWxlc1BhbmVsLmpz
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUHJvZmlsZXNQYW5lbC5q
cwpAQCAtNDU5LDcgKzQ1OSw3IEBAIFdlYkluc3BlY3Rvci5Qcm9maWxlc1BhbmVsLnByb3RvdHlw
ZSA9IHsKICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGlmICgh
cHJvZmlsZS5wcm94eSkKLSAgICAgICAgICAgICAgICBwcm9maWxlLnByb3h5ID0gbmV3IFdlYklu
c3BlY3Rvci5IZWFwU25hcHNob3RQcm94eSgpOworICAgICAgICAgICAgICAgIHByb2ZpbGUucHJv
eHkgPSAobmV3IFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RXb3JrZXIoKSkuY3JlYXRlT2JqZWN0
KCJXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90TG9hZGVyIik7CiAgICAgICAgICAgICB2YXIgcHJv
eHkgPSBwcm9maWxlLnByb3h5OwogICAgICAgICAgICAgaWYgKHByb3h5LnN0YXJ0TG9hZGluZyhj
YWxsYmFjaykpIHsKICAgICAgICAgICAgICAgICBwcm9maWxlLnNpZGVCYXJFbGVtZW50LnN1YnRp
dGxlID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJMb2FkaW5nXHUyMDI2Iik7CkBAIC01MTcsOSAr
NTE3LDEwIEBAIFdlYkluc3BlY3Rvci5Qcm9maWxlc1BhbmVsLnByb3RvdHlwZSA9IHsKICAgICAg
ICAgICAgIGlmICghcHJvZmlsZS5wcm94eSkKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgICAgICB2YXIgcHJveHkgPSBwcm9maWxlLnByb3h5OwotICAgICAgICAgICAgZnVuY3Rpb24g
cGFyc2VkKCkKKyAgICAgICAgICAgIGZ1bmN0aW9uIHBhcnNlZChzbmFwc2hvdFByb3h5KQogICAg
ICAgICAgICAgewotICAgICAgICAgICAgICAgIHByb2ZpbGUuc2lkZUJhckVsZW1lbnQuc3VidGl0
bGUgPSBOdW1iZXIuYnl0ZXNUb1N0cmluZyhwcm94eS50b3RhbFNpemUpOworICAgICAgICAgICAg
ICAgIHByb2ZpbGUucHJveHkgPSBzbmFwc2hvdFByb3h5OworICAgICAgICAgICAgICAgIHByb2Zp
bGUuc2lkZUJhckVsZW1lbnQuc3VidGl0bGUgPSBOdW1iZXIuYnl0ZXNUb1N0cmluZyhzbmFwc2hv
dFByb3h5LnRvdGFsU2l6ZSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAocHJveHku
ZmluaXNoTG9hZGluZyhwYXJzZWQpKQogICAgICAgICAgICAgICAgIHByb2ZpbGUuc2lkZUJhckVs
ZW1lbnQuc3VidGl0bGUgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlBhcnNpbmdcdTIwMjYiKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvV2ViS2l0LnFy
YyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvV2ViS2l0LnFyYwppbmRleCAx
YjVjYjM5Li4xZGJmZWY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL1dlYktpdC5xcmMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9XZWJLaXQucXJjCkBAIC04LDYgKzgsNyBAQAogICAgIDxmaWxlPkF1ZGl0UmVzdWx0Vmlldy5q
czwvZmlsZT4KICAgICA8ZmlsZT5BdWRpdFJ1bGVzLmpzPC9maWxlPgogICAgIDxmaWxlPkF1ZGl0
c1BhbmVsLmpzPC9maWxlPgorICAgIDxmaWxlPkJpbmFyeVNlYXJjaC5qczwvZmlsZT4KICAgICA8
ZmlsZT5Cb3R0b21VcFByb2ZpbGVEYXRhR3JpZFRyZWUuanM8L2ZpbGU+CiAgICAgPGZpbGU+QnJl
YWtwb2ludHNTaWRlYmFyUGFuZS5qczwvZmlsZT4KICAgICA8ZmlsZT5DYWxsU3RhY2tTaWRlYmFy
UGFuZS5qczwvZmlsZT4KQEAgLTUyLDYgKzUzLDggQEAKICAgICA8ZmlsZT5IZWFwU25hcHNob3Qu
anM8L2ZpbGU+CiAgICAgPGZpbGU+SGVhcFNuYXBzaG90UHJveHkuanM8L2ZpbGU+CiAgICAgPGZp
bGU+SGVhcFNuYXBzaG90Vmlldy5qczwvZmlsZT4KKyAgICA8ZmlsZT5IZWFwU25hcHNob3RXb3Jr
ZXIuanM8L2ZpbGU+CisgICAgPGZpbGU+SGVhcFNuYXBzaG90V29ya2VyRGlzcGF0Y2hlci5qczwv
ZmlsZT4KICAgICA8ZmlsZT5IZWxwU2NyZWVuLmpzPC9maWxlPgogICAgIDxmaWxlPkltYWdlVmll
dy5qczwvZmlsZT4KICAgICA8ZmlsZT5JbmplY3RlZEZha2VXb3JrZXIuanM8L2ZpbGU+CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5odG1s
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuaHRtbAppbmRl
eCAxOGMyNTY0Li4wYmMyYjdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL2luc3BlY3Rvci5odG1sCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvaW5zcGVjdG9yLmh0bWwKQEAgLTM5LDYgKzM5LDcgQEAgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAgICA8
bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSJwb3BvdmVyLmNzcyI+
CiAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0idGV4dFZp
ZXdlci5jc3MiPgogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9InV0aWxp
dGllcy5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNy
Yz0iQmluYXJ5U2VhcmNoLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2
YXNjcmlwdCIgc3JjPSJ0cmVlb3V0bGluZS5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCB0eXBl
PSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaW5zcGVjdG9yLmpzIj48L3NjcmlwdD4KICAgICA8c2Ny
aXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJJbnNwZWN0b3JCYWNrZW5kU3R1Yi5qcyI+
PC9zY3JpcHQ+CkBAIC0xNDIsNiArMTQzLDcgQEAgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAgICA8c2NyaXB0IHR5cGU9
InRleHQvamF2YXNjcmlwdCIgc3JjPSJIZWFwU25hcHNob3QuanMiPjwvc2NyaXB0PgogICAgIDxz
Y3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IkhlYXBTbmFwc2hvdFByb3h5LmpzIj48
L3NjcmlwdD4KICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJIZWFwU25h
cHNob3RWaWV3LmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlw
dCIgc3JjPSJIZWFwU25hcHNob3RXb3JrZXJEaXNwYXRjaGVyLmpzIj48L3NjcmlwdD4KICAgICA8
c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJEZXRhaWxlZEhlYXBzaG90R3JpZE5v
ZGVzLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3Jj
PSJEZXRhaWxlZEhlYXBzaG90Vmlldy5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCB0eXBlPSJ0
ZXh0L2phdmFzY3JpcHQiIHNyYz0iRGVidWdnZXJNb2RlbC5qcyI+PC9zY3JpcHQ+CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL3V0aWxpdGllcy5qcyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvdXRpbGl0aWVzLmpzCmluZGV4IGExNDcx
ODEuLjhmODlkYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvdXRpbGl0aWVzLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
dXRpbGl0aWVzLmpzCkBAIC03NjgsNDYgKzc2OCw2IEBAIEFycmF5LmNvbnZlcnQgPSBmdW5jdGlv
bihsaXN0KQogICAgIHJldHVybiBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChsaXN0KTsKIH0K
IAotZnVuY3Rpb24gYmluYXJ5U2VhcmNoKG9iamVjdCwgYXJyYXksIGNvbXBhcmF0b3IpCi17Ci0g
ICAgdmFyIGZpcnN0ID0gMDsKLSAgICB2YXIgbGFzdCA9IGFycmF5Lmxlbmd0aCAtIDE7Ci0KLSAg
ICB3aGlsZSAoZmlyc3QgPD0gbGFzdCkgewotICAgICAgICB2YXIgbWlkID0gKGZpcnN0ICsgbGFz
dCkgPj4gMTsKLSAgICAgICAgdmFyIGMgPSBjb21wYXJhdG9yKG9iamVjdCwgYXJyYXlbbWlkXSk7
Ci0gICAgICAgIGlmIChjID4gMCkKLSAgICAgICAgICAgIGZpcnN0ID0gbWlkICsgMTsKLSAgICAg
ICAgZWxzZSBpZiAoYyA8IDApCi0gICAgICAgICAgICBsYXN0ID0gbWlkIC0gMTsKLSAgICAgICAg
ZWxzZQotICAgICAgICAgICAgcmV0dXJuIG1pZDsKLSAgICB9Ci0KLSAgICAvLyBSZXR1cm4gdGhl
IG5lYXJlc3QgbGVzc2VyIGluZGV4LCAiLTEiIG1lYW5zICIwLCAiLTIiIG1lYW5zICIxIiwgZXRj
LgotICAgIHJldHVybiAtKGZpcnN0ICsgMSk7Ci19Ci0KLU9iamVjdC5kZWZpbmVQcm9wZXJ0eShB
cnJheS5wcm90b3R5cGUsICJiaW5hcnlJbmRleE9mIiwgeyB2YWx1ZTogZnVuY3Rpb24odmFsdWUs
IGNvbXBhcmF0b3IpCi17Ci0gICAgdmFyIHJlc3VsdCA9IGJpbmFyeVNlYXJjaCh2YWx1ZSwgdGhp
cywgY29tcGFyYXRvcik7Ci0gICAgcmV0dXJuIHJlc3VsdCA+PSAwID8gcmVzdWx0IDogLTE7Ci19
fSk7Ci0KLWZ1bmN0aW9uIGluc2VydGlvbkluZGV4Rm9yT2JqZWN0SW5MaXN0U29ydGVkQnlGdW5j
dGlvbihhbk9iamVjdCwgYUxpc3QsIGFGdW5jdGlvbikKLXsKLSAgICB2YXIgaW5kZXggPSBiaW5h
cnlTZWFyY2goYW5PYmplY3QsIGFMaXN0LCBhRnVuY3Rpb24pOwotICAgIGlmIChpbmRleCA8IDAp
Ci0gICAgICAgIC8vIFNlZSBiaW5hcnlTZWFyY2ggaW1wbGVtZW50YXRpb24uCi0gICAgICAgIHJl
dHVybiAtaW5kZXggLSAxOwotICAgIGVsc2UgewotICAgICAgICAvLyBSZXR1cm4gdGhlIGZpcnN0
IG9jY3VyYW5jZSBvZiBhbiBpdGVtIGluIHRoZSBsaXN0LgotICAgICAgICB3aGlsZSAoaW5kZXgg
PiAwICYmIGFGdW5jdGlvbihhbk9iamVjdCwgYUxpc3RbaW5kZXggLSAxXSkgPT09IDApCi0gICAg
ICAgICAgICBpbmRleC0tOwotICAgICAgICByZXR1cm4gaW5kZXg7ICAgICAgICAKLSAgICB9Ci19
Ci0KIFN0cmluZy5zcHJpbnRmID0gZnVuY3Rpb24oZm9ybWF0KQogewogICAgIHJldHVybiBTdHJp
bmcudnNwcmludGYoZm9ybWF0LCBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMs
IDEpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggM2Y0MmJiMS4uZjk3MzI4YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxMS0wNC0yMSAgTWlr
aGFpbCBOYWdhbm92ICA8bW5hZ2Fub3ZAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IFtDaHJvbWl1bV0g
TW92ZSBkZXRhaWxlZCBoZWFwIHNuYXBzaG90cyBzdG9yYWdlIGFuZCBwcm9jZXNzaW5nIGludG8g
d29ya2Vycy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTU5MDk0CisKKyAgICAgICAgKiBXZWJLaXQuZ3lwOgorCiAyMDExLTA0LTIwICBEb21pbmljIENv
b25leSAgPGRvbWluaWNjQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBEaW1p
dHJpIEdsYXprb3YuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5n
eXAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKaW5kZXggMGVlNWRkNi4uMmEy
MDM0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCisrKyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cApAQCAtNzc0LDYgKzc3NCw3IEBACiAg
ICAgICAgICAgICAnY29uZGl0aW9ucyc6IFsKICAgICAgICAgICAgICAgICBbJ2RlYnVnX2RldnRv
b2xzPT0wJywgewogICAgICAgICAgICAgICAgICAgICAnZGVwZW5kZW5jaWVzJzogWydjb25jYXRl
bmF0ZWRfZGV2dG9vbHNfanMnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICdjb25jYXRlbmF0ZWRfaGVhcF9zbmFwc2hvdF93b3JrZXJfanMnLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICdjb25jYXRlbmF0ZWRfc2NyaXB0X2Zvcm1hdHRlcl93b3Jr
ZXJfanMnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjb25jYXRlbmF0
ZWRfZGV2dG9vbHNfY3NzJ10sCiAgICAgICAgICAgICAgICAgfSx7CkBAIC03ODksNiArNzkwLDcg
QEAKICAgICAgICAgICAgICAgICAnaW5wdXRfcGFnZXMnOiBbCiAgICAgICAgICAgICAgICAgICAg
ICc8KFBST0RVQ1RfRElSKS9yZXNvdXJjZXMvaW5zcGVjdG9yL2RldnRvb2xzLmh0bWwnLAogICAg
ICAgICAgICAgICAgICAgICAnPChQUk9EVUNUX0RJUikvcmVzb3VyY2VzL2luc3BlY3Rvci9EZXZU
b29scy5qcycsCisgICAgICAgICAgICAgICAgICAgICc8KFBST0RVQ1RfRElSKS9yZXNvdXJjZXMv
aW5zcGVjdG9yL0hlYXBTbmFwc2hvdFdvcmtlci5qcycsCiAgICAgICAgICAgICAgICAgICAgICc8
KFBST0RVQ1RfRElSKS9yZXNvdXJjZXMvaW5zcGVjdG9yL1NjcmlwdEZvcm1hdHRlcldvcmtlci5q
cycsCiAgICAgICAgICAgICAgICAgICAgICc8KFBST0RVQ1RfRElSKS9yZXNvdXJjZXMvaW5zcGVj
dG9yL2RldlRvb2xzLmNzcycsCiAgICAgICAgICAgICAgICAgXSwKQEAgLTExOTYsNiArMTE5OCwy
NCBAQAogICAgICAgICAgICAgICAgICAgICB9XSwKICAgICAgICAgICAgICAgICB9LAogICAgICAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgJ3RhcmdldF9uYW1lJzogJ2NvbmNhdGVu
YXRlZF9oZWFwX3NuYXBzaG90X3dvcmtlcl9qcycsCisgICAgICAgICAgICAgICAgICAgICd0eXBl
JzogJ25vbmUnLAorICAgICAgICAgICAgICAgICAgICAnYWN0aW9ucyc6IFt7CisgICAgICAgICAg
ICAgICAgICAgICAgICAnYWN0aW9uX25hbWUnOiAnY29uY2F0ZW5hdGVfaGVhcF9zbmFwc2hvdF93
b3JrZXJfanMnLAorICAgICAgICAgICAgICAgICAgICAgICAgJ3NjcmlwdF9uYW1lJzogJ3Njcmlw
dHMvaW5saW5lX2pzX2ltcG9ydHMucHknLAorICAgICAgICAgICAgICAgICAgICAgICAgJ2lucHV0
X2ZpbGUnOiAnLi4vLi4vV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0hlYXBTbmFwc2hvdFdv
cmtlci5qcycsCisgICAgICAgICAgICAgICAgICAgICAgICAnaW5wdXRzJzogWworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICc8QChfc2NyaXB0X25hbWUpJywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAnLi4vLi4vV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0JpbmFyeVNlYXJj
aC5qcycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy4uLy4uL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9IZWFwU25hcHNob3QuanMnLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICcuLi8uLi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSGVhcFNuYXBzaG90V29ya2Vy
RGlzcGF0Y2hlci5qcycsCisgICAgICAgICAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAg
ICAgICAgICAgICAgJ3NlYXJjaF9wYXRoJzogJy4uLy4uL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZCcsCisgICAgICAgICAgICAgICAgICAgICAgICAnb3V0cHV0cyc6IFsnPChQUk9EVUNUX0RJ
UikvcmVzb3VyY2VzL2luc3BlY3Rvci9IZWFwU25hcHNob3RXb3JrZXIuanMnXSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICdhY3Rpb24nOiBbJ3B5dGhvbicsICc8QChfc2NyaXB0X25hbWUpJywg
JzxAKF9pbnB1dF9maWxlKScsICc8QChfc2VhcmNoX3BhdGgpJywgJzxAKF9vdXRwdXRzKSddLAor
ICAgICAgICAgICAgICAgICAgICB9XSwKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAg
ICAgIHsKICAgICAgICAgICAgICAgICAgICAgJ3RhcmdldF9uYW1lJzogJ2NvbmNhdGVuYXRlZF9z
Y3JpcHRfZm9ybWF0dGVyX3dvcmtlcl9qcycsCiAgICAgICAgICAgICAgICAgICAgICd0eXBlJzog
J25vbmUnLAogICAgICAgICAgICAgICAgICAgICAnYWN0aW9ucyc6IFt7Cg==
</data>
<flag name="commit-queue"
          id="83285"
          type_id="3"
          status="-"
          setter="mnaganov"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>90540</attachid>
            <date>2011-04-21 08:28:56 -0700</date>
            <delta_ts>2011-04-22 06:14:48 -0700</delta_ts>
            <desc>small bug fixes</desc>
            <filename>patch-59094</filename>
            <type>text/plain</type>
            <size>93380</size>
            <attacher name="Mikhail Naganov">mnaganov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBkODc0NDMxLi4wMGI5ZmM3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTEtMDQt
MjEgIE1pa2hhaWwgTmFnYW5vdiAgPG1uYWdhbm92QGNocm9taXVtLm9yZz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBbQ2hy
b21pdW1dIE1vdmUgZGV0YWlsZWQgaGVhcCBzbmFwc2hvdHMgc3RvcmFnZSBhbmQgcHJvY2Vzc2lu
ZyBpbnRvIHdvcmtlcnMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD01OTA5NAorCisgICAgICAgICogaW5zcGVjdG9yL3Byb2ZpbGVyL2RldGFpbGVkLWhl
YXBzaG90cy1jb21wYXJpc29uLXNvcnRpbmcuaHRtbDoKKyAgICAgICAgKiBpbnNwZWN0b3IvcHJv
ZmlsZXIvZGV0YWlsZWQtaGVhcHNob3RzLXRlc3QuanM6CisgICAgICAgIChpbml0aWFsaXplX0Rl
dGFpbGVkSGVhcHNob3RUZXN0KToKKyAgICAgICAgKGluaXRpYWxpemVfRGV0YWlsZWRIZWFwc2hv
dFRlc3QuKToKKyAgICAgICAgKiBpbnNwZWN0b3IvcHJvZmlsZXIvaGVhcC1zbmFwc2hvdC1leHBl
Y3RlZC50eHQ6CisgICAgICAgICogaW5zcGVjdG9yL3Byb2ZpbGVyL2hlYXAtc25hcHNob3QuaHRt
bDoKKwogMjAxMS0wNC0yMSAgQ3NhYmEgT3N6dHJvZ29uw6FjICA8b3NzeUB3ZWJraXQub3JnPgog
CiAgICAgICAgIFtRdF0gTWlzc2luZyBldmVudFNlbmRlci5zY2FsZVBhZ2VCeSgpIGltcGxlbWVu
dGF0aW9uCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcHJvZmlsZXIvZGV0YWls
ZWQtaGVhcHNob3RzLWNvbXBhcmlzb24tc29ydGluZy5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL3Byb2ZpbGVyL2RldGFpbGVkLWhlYXBzaG90cy1jb21wYXJpc29uLXNvcnRpbmcuaHRtbApp
bmRleCAxZmNiYTc0Li5hZjBkZDBkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3Iv
cHJvZmlsZXIvZGV0YWlsZWQtaGVhcHNob3RzLWNvbXBhcmlzb24tc29ydGluZy5odG1sCisrKyBi
L0xheW91dFRlc3RzL2luc3BlY3Rvci9wcm9maWxlci9kZXRhaWxlZC1oZWFwc2hvdHMtY29tcGFy
aXNvbi1zb3J0aW5nLmh0bWwKQEAgLTI2LDcgKzI2LDcgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAg
ICAgICAgICAKICAgICAgICAgICAgIGZ1bmN0aW9uIHN0ZXAxKCkKICAgICAgICAgICAgIHsKLSAg
ICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LnN3aXRjaFRvVmlldygiQ29tcGFyaXNvbiIsIG5l
eHQpOworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3Quc3dpdGNoVG9WaWV3KCJDb21wYXJp
c29uIiwgc3RlcDIpOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICB2YXIgY29sdW1uczsK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9wcm9maWxlci9kZXRhaWxlZC1oZWFw
c2hvdHMtdGVzdC5qcyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9wcm9maWxlci9kZXRhaWxlZC1o
ZWFwc2hvdHMtdGVzdC5qcwppbmRleCBkMTQxN2NmLi4xZjBiMThmYyAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvaW5zcGVjdG9yL3Byb2ZpbGVyL2RldGFpbGVkLWhlYXBzaG90cy10ZXN0LmpzCisr
KyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9wcm9maWxlci9kZXRhaWxlZC1oZWFwc2hvdHMtdGVz
dC5qcwpAQCAtMTY5LDYgKzE2OSw3IEBAIEluc3BlY3RvclRlc3QuY2xpY2tDb2x1bW4gPSBmdW5j
dGlvbihjb2x1bW4sIGNhbGxiYWNrKQogCiAgICAgZnVuY3Rpb24gc29ydGluZ0NvbXBsZXRlKCkK
ICAgICB7CisgICAgICAgIEluc3BlY3RvclRlc3QuX2N1cnJlbnRHcmlkKCkucmVtb3ZlRXZlbnRM
aXN0ZW5lcigic29ydGluZyBjb21wbGV0ZSIsIHNvcnRpbmdDb21wbGV0ZSwgdGhpcyk7CiAgICAg
ICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0RXF1YWxzKGNvbHVtbi5pZGVudGlmaWVyLCB0aGlzLl9j
dXJyZW50R3JpZCgpLnNvcnRDb2x1bW5JZGVudGlmaWVyLCAidW5leHBlY3RlZCBzb3J0aW5nIik7
CiAgICAgICAgIGNvbHVtbi5zb3J0ID0gdGhpcy5fY3VycmVudEdyaWQoKS5zb3J0T3JkZXI7CiAg
ICAgICAgIGZ1bmN0aW9uIGNhbGxDYWxsYmFjaygpCkBAIC0xNzcsNyArMTc4LDcgQEAgSW5zcGVj
dG9yVGVzdC5jbGlja0NvbHVtbiA9IGZ1bmN0aW9uKGNvbHVtbiwgY2FsbGJhY2spCiAgICAgICAg
IH0KICAgICAgICAgc2V0VGltZW91dChjYWxsQ2FsbGJhY2ssIDApOwogICAgIH0KLSAgICBJbnNw
ZWN0b3JUZXN0Ll9wcmVwYXJlRm9yUmVjdXJzaXZlU29ydChzb3J0aW5nQ29tcGxldGUuYmluZCh0
aGlzKSk7CisgICAgSW5zcGVjdG9yVGVzdC5fY3VycmVudEdyaWQoKS5hZGRFdmVudExpc3RlbmVy
KCJzb3J0aW5nIGNvbXBsZXRlIiwgc29ydGluZ0NvbXBsZXRlLCB0aGlzKTsKICAgICB0aGlzLl9j
dXJyZW50R3JpZCgpLl9jbGlja0luSGVhZGVyQ2VsbChldmVudCk7CiB9OwogCkBAIC0yOTQsNyAr
Mjk1LDEzIEBAIEluc3BlY3RvclRlc3QuZXhwYW5kUm93ID0gZnVuY3Rpb24ocm93LCBjYWxsYmFj
aykKICAgICAgICAgc2V0VGltZW91dChjYWxsQ2FsbGJhY2ssIDApOwogICAgIH0KICAgICByb3cu
YWRkRXZlbnRMaXN0ZW5lcigicG9wdWxhdGUgY29tcGxldGUiLCBwb3B1bGF0ZUNvbXBsZXRlLCB0
aGlzKTsKLSAgICByb3cuZXhwYW5kKCk7CisgICAgKGZ1bmN0aW9uIGV4cGFuZCgpCisgICAgewor
ICAgICAgICBpZiAocm93Lmhhc0NoaWxkcmVuKQorICAgICAgICAgICAgcm93LmV4cGFuZCgpOwor
ICAgICAgICBlbHNlCisgICAgICAgICAgICBzZXRUaW1lb3V0KGV4cGFuZCwgMCk7CisgICAgfSko
KTsKIH07CiAKIEluc3BlY3RvclRlc3QuZmluZEFuZEV4cGFuZEdDUm9vdHMgPSBmdW5jdGlvbihj
YWxsYmFjaykKQEAgLTM1OCw3ICszNjUsMTMgQEAgSW5zcGVjdG9yVGVzdC5zd2l0Y2hUb1ZpZXcg
PSBmdW5jdGlvbih0aXRsZSwgY2FsbGJhY2spCiAgICAgICAgIHNldFRpbWVvdXQoY2FsbGJhY2ss
IDApOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIEluc3BlY3RvclRlc3QuX3ByZXBhcmVG
b3JSZWN1cnNpdmVTb3J0KGNhbGxiYWNrLCB2aWV3LnZpZXdzW2luZGV4XS5ncmlkKTsKKyAgICB2
YXIgZ3JpZCA9IHZpZXcudmlld3NbaW5kZXhdLmdyaWQ7CisgICAgZnVuY3Rpb24gc29ydGluZ0Nv
bXBsZXRlKCkKKyAgICB7CisgICAgICAgIGdyaWQucmVtb3ZlRXZlbnRMaXN0ZW5lcigic29ydGlu
ZyBjb21wbGV0ZSIsIHNvcnRpbmdDb21wbGV0ZSwgdGhpcyk7CisgICAgICAgIHNldFRpbWVvdXQo
Y2FsbGJhY2ssIDApOworICAgIH0KKyAgICB2aWV3LnZpZXdzW2luZGV4XS5ncmlkLmFkZEV2ZW50
TGlzdGVuZXIoInNvcnRpbmcgY29tcGxldGUiLCBzb3J0aW5nQ29tcGxldGUsIHRoaXMpOwogICAg
IHZpZXcuX2NoYW5nZVZpZXcoe3RhcmdldDoge3NlbGVjdGVkSW5kZXg6IGluZGV4fX0pOwogfTsK
IApAQCAtMzkyLDQ0ICs0MDUsMTggQEAgSW5zcGVjdG9yVGVzdC5fY3VycmVudEdyaWQgPSBmdW5j
dGlvbigpCiAgICAgcmV0dXJuIFdlYkluc3BlY3Rvci5wYW5lbHMucHJvZmlsZXMudmlzaWJsZVZp
ZXcuZGF0YUdyaWQ7CiB9OwogCi1JbnNwZWN0b3JUZXN0Ll9wcmVwYXJlRm9yUmVjdXJzaXZlU29y
dCA9IGZ1bmN0aW9uKGNhbGxiYWNrLCBncmlkKQotewotICAgIGlmIChJbnNwZWN0b3JUZXN0Ll9y
ZWN1cnNpdmVTb3J0Q2FsbGJhY2spCi0gICAgICAgIGNvbnNvbGUuZXJyb3IoIkRpZG4ndCBmaW5p
c2hlZCB3aXRoIHByZXZpb3VzIHNvcnRpbmciKTsKLSAgICBJbnNwZWN0b3JUZXN0Ll9yZWN1cnNp
dmVTb3J0Q2FsbGJhY2sgPSBjYWxsYmFjazsKLSAgICBJbnNwZWN0b3JUZXN0Ll9yZWN1cnNpdmVT
b3J0RGVwdGggPSAwOwotICAgIGdyaWQgPSBncmlkIHx8IEluc3BlY3RvclRlc3QuX2N1cnJlbnRH
cmlkKCk7Ci0gICAgZ3JpZC5hZGRFdmVudExpc3RlbmVyKCJzdGFydCBzb3J0aW5nIiwgSW5zcGVj
dG9yVGVzdC5fcmVjdXJzaXZlU29ydEVudGVyLCBJbnNwZWN0b3JUZXN0KTsKLSAgICBncmlkLmFk
ZEV2ZW50TGlzdGVuZXIoInNvcnRpbmcgY29tcGxldGUiLCBJbnNwZWN0b3JUZXN0Ll9yZWN1cnNp
dmVTb3J0TGVhdmUsIEluc3BlY3RvclRlc3QpOwotICAgIEluc3BlY3RvclRlc3QuX3JlY3Vyc2l2
ZVNvcnRHcmlkID0gZ3JpZDsKLX07Ci0KLUluc3BlY3RvclRlc3QuX3JlY3Vyc2l2ZVNvcnRFbnRl
ciA9IGZ1bmN0aW9uKCkKLXsKLSAgICArK0luc3BlY3RvclRlc3QuX3JlY3Vyc2l2ZVNvcnREZXB0
aDsKLSAgICBpZiAoaXNOYU4oSW5zcGVjdG9yVGVzdC5fcmVjdXJzaXZlU29ydERlcHRoKSkKLSAg
ICAgICAgY29uc29sZS5lcnJvcigiV2Fzbid0IHByZXBhcmVkIHRvIHRyYWNrIHNvcnRpbmciKTsK
LX07Ci0KLUluc3BlY3RvclRlc3QuX3JlY3Vyc2l2ZVNvcnRMZWF2ZSA9IGZ1bmN0aW9uKCkKLXsK
LSAgICBpZiAoIS0tSW5zcGVjdG9yVGVzdC5fcmVjdXJzaXZlU29ydERlcHRoKSB7Ci0gICAgICAg
IHZhciBjYWxsYmFjayA9IEluc3BlY3RvclRlc3QuX3JlY3Vyc2l2ZVNvcnRDYWxsYmFjazsKLSAg
ICAgICAgZGVsZXRlIEluc3BlY3RvclRlc3QuX3JlY3Vyc2l2ZVNvcnRDYWxsYmFjazsKLSAgICAg
ICAgSW5zcGVjdG9yVGVzdC5fcmVjdXJzaXZlU29ydEdyaWQucmVtb3ZlRXZlbnRMaXN0ZW5lcigi
c3RhcnQgc29ydGluZyIsIEluc3BlY3RvclRlc3QuX3JlY3Vyc2l2ZVNvcnRFbnRlciwgSW5zcGVj
dG9yVGVzdCk7Ci0gICAgICAgIEluc3BlY3RvclRlc3QuX3JlY3Vyc2l2ZVNvcnRHcmlkLnJlbW92
ZUV2ZW50TGlzdGVuZXIoInNvcnRpbmcgY29tcGxldGUiLCBJbnNwZWN0b3JUZXN0Ll9yZWN1cnNp
dmVTb3J0TGVhdmUsIEluc3BlY3RvclRlc3QpOwotICAgICAgICBzZXRUaW1lb3V0KGNhbGxiYWNr
LCAwKTsKLSAgICB9Ci0gICAgaWYgKCEoSW5zcGVjdG9yVGVzdC5fcmVjdXJzaXZlU29ydERlcHRo
ID49IDApKQotICAgICAgICBjb25zb2xlLmVycm9yKCJCYWQgc29ydCBuZXN0aW5nIik7Ci19Owot
CiBJbnNwZWN0b3JUZXN0Ll9zbmFwc2hvdFZpZXdTaG93biA9IGZ1bmN0aW9uKCkKIHsKICAgICBp
ZiAoSW5zcGVjdG9yVGVzdC5fdGFrZUFuZE9wZW5TbmFwc2hvdENhbGxiYWNrKSB7CiAgICAgICAg
IHZhciBjYWxsYmFjayA9IEluc3BlY3RvclRlc3QuX3Rha2VBbmRPcGVuU25hcHNob3RDYWxsYmFj
azsKICAgICAgICAgSW5zcGVjdG9yVGVzdC5fdGFrZUFuZE9wZW5TbmFwc2hvdENhbGxiYWNrID0g
bnVsbDsKLSAgICAgICAgY2FsbGJhY2soKTsKKyAgICAgICAgdmFyIGRhdGFHcmlkID0gdGhpcy5k
YXRhR3JpZDsKKyAgICAgICAgZnVuY3Rpb24gc29ydGluZ0NvbXBsZXRlKCkKKyAgICAgICAgewor
ICAgICAgICAgICAgZGF0YUdyaWQucmVtb3ZlRXZlbnRMaXN0ZW5lcigic29ydGluZyBjb21wbGV0
ZSIsIHNvcnRpbmdDb21wbGV0ZSwgbnVsbCk7CisgICAgICAgICAgICBjYWxsYmFjaygpOworICAg
ICAgICB9CisgICAgICAgIGRhdGFHcmlkLmFkZEV2ZW50TGlzdGVuZXIoInNvcnRpbmcgY29tcGxl
dGUiLCBzb3J0aW5nQ29tcGxldGUsIG51bGwpOwogICAgIH0KIH07CiAKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2luc3BlY3Rvci9wcm9maWxlci9oZWFwLXNuYXBzaG90LWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL2luc3BlY3Rvci9wcm9maWxlci9oZWFwLXNuYXBzaG90LWV4cGVjdGVkLnR4
dAppbmRleCAyMjQxZTEzLi43OGUyN2UzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0
b3IvcHJvZmlsZXIvaGVhcC1zbmFwc2hvdC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL3Byb2ZpbGVyL2hlYXAtc25hcHNob3QtZXhwZWN0ZWQudHh0CkBAIC0xMyw4ICsx
Myw2IEBAIFJ1bm5pbmc6IGhlYXBTbmFwc2hvdE5vZGVBbmRFZGdlVGVzdAogCiBSdW5uaW5nOiBo
ZWFwU25hcHNob3RTaW1wbGVUZXN0CiAKLVJ1bm5pbmc6IGhlYXBTbmFwc2hvdElkc1Rlc3QKLQog
UnVubmluZzogaGVhcFNuYXBzaG90UmV0YWluZXJzVGVzdAogCiBSdW5uaW5nOiBoZWFwU25hcHNo
b3RBZ2dyZWdhdGVzVGVzdApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3Byb2Zp
bGVyL2hlYXAtc25hcHNob3QuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9wcm9maWxlci9o
ZWFwLXNuYXBzaG90Lmh0bWwKaW5kZXggMWMwNGY2Mi4uYTJkNDU0NSAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvaW5zcGVjdG9yL3Byb2ZpbGVyL2hlYXAtc25hcHNob3QuaHRtbAorKysgYi9MYXlv
dXRUZXN0cy9pbnNwZWN0b3IvcHJvZmlsZXIvaGVhcC1zbmFwc2hvdC5odG1sCkBAIC05NSwxNyAr
OTUsNiBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgICAgIG5leHQoKTsKICAgICAgICAgfSwK
IAotICAgICAgICBmdW5jdGlvbiBoZWFwU25hcHNob3RJZHNUZXN0KG5leHQpCi0gICAgICAgIHsK
LSAgICAgICAgICAgIHZhciBzbmFwc2hvdCA9IG5ldyBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90
KEluc3BlY3RvclRlc3QuY3JlYXRlSGVhcFNuYXBzaG90TW9jaygpKTsKLSAgICAgICAgICAgIElu
c3BlY3RvclRlc3QuYXNzZXJ0RXF1YWxzKGZhbHNlLCBzbmFwc2hvdC5oYXNJZCgwKSwgImhhcyBp
ZCAwIik7Ci0gICAgICAgICAgICBmb3IgKHZhciBpID0gMTsgaSA8PSA2OyArK2kpCi0gICAgICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRFcXVhbHModHJ1ZSwgc25hcHNob3QuaGFzSWQo
aSksICJoYXMgaWQgIiArIGkpOwotICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRFcXVh
bHMoZmFsc2UsIHNuYXBzaG90Lmhhc0lkKDcpLCAiaGFzIGlkIDciKTsKLSAgICAgICAgICAgIElu
c3BlY3RvclRlc3QuYXNzZXJ0RXF1YWxzKGZhbHNlLCBzbmFwc2hvdC5oYXNJZCgxMDApLCAiaGFz
IGlkIDEwMCIpOwotICAgICAgICAgICAgbmV4dCgpOwotICAgICAgICB9LAotCiAgICAgICAgIGZ1
bmN0aW9uIGhlYXBTbmFwc2hvdFJldGFpbmVyc1Rlc3QobmV4dCkKICAgICAgICAgewogICAgICAg
ICAgICAgdmFyIHNuYXBzaG90ID0gbmV3IFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3QoSW5zcGVj
dG9yVGVzdC5jcmVhdGVIZWFwU25hcHNob3RNb2NrKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGZiZWE5MzMu
LjRmZTgzNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNTYgQEAKKzIwMTEtMDQtMjEgIE1pa2hh
aWwgTmFnYW5vdiAgPG1uYWdhbm92QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBbQ2hyb21pdW1dIE1v
dmUgZGV0YWlsZWQgaGVhcCBzbmFwc2hvdHMgc3RvcmFnZSBhbmQgcHJvY2Vzc2luZyBpbnRvIHdv
cmtlcnMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01
OTA5NAorCisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUudmNwcm9q
L1dlYkNvcmUudmNwcm9qOgorICAgICAgICAqIGd5cC9zdHJlYW1saW5lLWluc3BlY3Rvci1zb3Vy
Y2Uuc2g6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9CaW5hcnlTZWFyY2guanM6IEFk
ZGVkLgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvRGV0YWlsZWRIZWFwc2hvdEdyaWRO
b2Rlcy5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RHcmlkTm9kZS5wcm90
b3R5cGUuZGlzcG9zZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90R3JpZE5v
ZGUucHJvdG90eXBlLl9wb3B1bGF0ZS5zb3J0ZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhl
YXBTbmFwc2hvdEdyaWROb2RlLnByb3RvdHlwZS5fcG9wdWxhdGUpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLkhlYXBTbmFwc2hvdEdyaWROb2RlLnByb3RvdHlwZS5wb3B1bGF0ZUNoaWxkcmVuKToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RHcmlkTm9kZS5wcm90b3R5cGUuc29y
dC5hZnRlclNvcnQuYWZ0ZXJQb3B1bGF0ZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNu
YXBzaG90R3JpZE5vZGUucHJvdG90eXBlLnNvcnQuYWZ0ZXJTb3J0KToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5IZWFwU25hcHNob3RHcmlkTm9kZS5wcm90b3R5cGUuc29ydCk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90T2JqZWN0Tm9kZSk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuSGVhcFNuYXBzaG90T2JqZWN0Tm9kZS5wcm90b3R5cGUuX2NyZWF0ZUNoaWxkTm9kZSk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90T2JqZWN0Tm9kZS5wcm90b3R5cGUuX2Ny
ZWF0ZVByb3ZpZGVyKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RJbnN0YW5j
ZU5vZGUucHJvdG90eXBlLl9jcmVhdGVDaGlsZE5vZGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LkhlYXBTbmFwc2hvdEluc3RhbmNlTm9kZS5wcm90b3R5cGUuX2NyZWF0ZVByb3ZpZGVyKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RDb25zdHJ1Y3Rvck5vZGUucHJvdG90eXBl
Ll9jcmVhdGVOb2Rlc1Byb3ZpZGVyKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNo
b3RJdGVyYXRvcnNUdXBsZS5wcm90b3R5cGUuZGlzcG9zZSk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuSGVhcFNuYXBzaG90RGlmZk5vZGUucHJvdG90eXBlLmNhbGN1bGF0ZURpZmYuZGlmZkNhbGN1
bGF0ZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdERpZmZOb2RlLnByb3Rv
dHlwZS5jYWxjdWxhdGVEaWZmLmJhc2VJZHNSZWNlaXZlZCk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuSGVhcFNuYXBzaG90RGlmZk5vZGUucHJvdG90eXBlLl9jcmVhdGVOb2Rlc1Byb3ZpZGVyLmNy
ZWF0ZVByb3ZpZGVyKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3REaWZmTm9k
ZS5wcm90b3R5cGUuX2NyZWF0ZU5vZGVzUHJvdmlkZXIpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LkhlYXBTbmFwc2hvdERpZmZOb2RlLnByb3RvdHlwZS5nZXQgZGF0YSk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuSGVhcFNuYXBzaG90RG9taW5hdG9yT2JqZWN0Tm9kZS5wcm90b3R5cGUuX2NyZWF0
ZVByb3ZpZGVyKToKKyAgICAgICAgKE1peEluU25hcHNob3ROb2RlRnVuY3Rpb25zKToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0RldGFpbGVkSGVhcHNob3RWaWV3LmpzOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFNvcnRhYmxlRGF0YUdyaWQucHJvdG90eXBlLmRp
c3Bvc2UpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFNvcnRhYmxlRGF0YUdy
aWQucHJvdG90eXBlLnNvcnRpbmdDaGFuZ2VkLnNvcnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LkhlYXBTbmFwc2hvdFNvcnRhYmxlRGF0YUdyaWQucHJvdG90eXBlLnNvcnRpbmdDaGFuZ2VkKToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RTb3J0YWJsZURhdGFHcmlkLnByb3Rv
dHlwZS5fcGVyZm9ybVNvcnRpbmcpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hv
dFNvcnRhYmxlRGF0YUdyaWQucHJvdG90eXBlLnJlY3Vyc2l2ZVNvcnRpbmdFbnRlcik6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90U29ydGFibGVEYXRhR3JpZC5wcm90b3R5cGUu
cmVjdXJzaXZlU29ydGluZ0xlYXZlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNo
b3RDb250YWlubWVudERhdGFHcmlkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNo
b3RDb250YWlubWVudERhdGFHcmlkLnByb3RvdHlwZS5fZGVmYXVsdFBvcHVsYXRlQ291bnQuMTAw
LnNldERhdGFTb3VyY2UpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdENvbnRh
aW5tZW50RGF0YUdyaWQucHJvdG90eXBlLnNvcnRpbmdDaGFuZ2VkKToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5IZWFwU25hcHNob3REaWZmRGF0YUdyaWQucHJvdG90eXBlLnNldEJhc2VEYXRhU291
cmNlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3REb21pbmF0b3JzRGF0YUdy
aWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdERvbWluYXRvcnNEYXRhR3Jp
ZC5wcm90b3R5cGUuX2RlZmF1bHRQb3B1bGF0ZUNvdW50LjI1LnNldERhdGFTb3VyY2UpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdERvbWluYXRvcnNEYXRhR3JpZC5wcm90b3R5
cGUuc29ydGluZ0NoYW5nZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFJl
dGFpbmluZ1BhdGhzTGlzdC5wcm90b3R5cGUuZGlzcG9zZSk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuSGVhcFNuYXBzaG90UmV0YWluaW5nUGF0aHNMaXN0LnByb3RvdHlwZS5zZXREYXRhU291cmNl
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RSZXRhaW5pbmdQYXRoc0xpc3Qu
cHJvdG90eXBlLl9zZXRSb290Q2hpbGRyZW5Gb3JGaW5kZXIpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLkRldGFpbGVkSGVhcHNob3RWaWV3LnByb3RvdHlwZS5kaXNwb3NlKToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5EZXRhaWxlZEhlYXBzaG90Vmlldy5wcm90b3R5cGUuZ2V0IHByb2ZpbGVXcmFw
cGVyKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EZXRhaWxlZEhlYXBzaG90Vmlldy5wcm90b3R5
cGUuZ2V0IGJhc2VQcm9maWxlV3JhcHBlcik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGV0YWls
ZWRIZWFwc2hvdFZpZXcucHJvdG90eXBlLl9jaGFuZ2VCYXNlLmJhc2VQcm9maWxlTG9hZGVkKToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5EZXRhaWxlZEhlYXBzaG90Vmlldy5wcm90b3R5cGUuX2No
YW5nZUJhc2UpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRldGFpbGVkSGVhcHNob3RWaWV3LnBy
b3RvdHlwZS5fY2hhbmdlVmlldyk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9IZWFw
U25hcHNob3QuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90TG9hZGVyKToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RMb2FkZXIucHJvdG90eXBlLmZpbmlz
aExvYWRpbmcpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdExvYWRlci5wcm90
b3R5cGUucHVzaEpTT05DaHVuayk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90
LnByb3RvdHlwZS5kaXNwb3NlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3Qu
cHJvdG90eXBlLnB1c2hCYXNlSWRzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNo
b3QucHJvdG90eXBlLmNyZWF0ZURpZmYpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFw
c2hvdC5wcm90b3R5cGUuX3BhcnNlRmlsdGVyKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFw
U25hcHNob3QucHJvdG90eXBlLmNyZWF0ZUVkZ2VzUHJvdmlkZXIpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLkhlYXBTbmFwc2hvdC5wcm90b3R5cGUuY3JlYXRlTm9kZXNQcm92aWRlcik6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90LnByb3RvdHlwZS5jcmVhdGVQYXRoRmluZGVy
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3QucHJvdG90eXBlLnVwZGF0ZVN0
YXRpY0RhdGEpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdEZpbHRlcmVkT3Jk
ZXJlZEl0ZXJhdG9yLnByb3RvdHlwZS5zZXJpYWxpemVOZXh0SXRlbXMpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLkhlYXBTbmFwc2hvdEZpbHRlcmVkT3JkZXJlZEl0ZXJhdG9yLnByb3RvdHlwZS5z
b3J0QW5kUmV3aW5kKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RFZGdlc1By
b3ZpZGVyLnByb3RvdHlwZS5fc2VyaWFsaXplKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFw
U25hcHNob3ROb2Rlc1Byb3ZpZGVyLnByb3RvdHlwZS5fc2VyaWFsaXplKToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5IZWFwU25hcHNob3RQYXRoRmluZGVyKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5IZWFwU25hcHNob3RQYXRoRmluZGVyLnByb3RvdHlwZS51cGRhdGVSb290cyk6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90UGF0aEZpbmRlci5wcm90b3R5cGUuX3Jlc2V0KToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RzRGlmZi5wcm90b3R5cGUuY2FsY3Vs
YXRlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RzRGlmZi5wcm90b3R5cGUu
cHVzaEJhc2VJZHMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdHNEaWZmLnBy
b3RvdHlwZS5wdXNoQmFzZVNlbGZTaXplcyk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVu
ZC9IZWFwU25hcHNob3RQcm94eS5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNo
b3RSZWFsV29ya2VyKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RSZWFsV29y
a2VyLnByb3RvdHlwZS5fbWVzc2FnZVJlY2VpdmVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5I
ZWFwU25hcHNob3RSZWFsV29ya2VyLnByb3RvdHlwZS5wb3N0TWVzc2FnZSk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90UmVhbFdvcmtlci5wcm90b3R5cGUudGVybWluYXRlKToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RGYWtlV29ya2VyKToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RGYWtlV29ya2VyLnByb3RvdHlwZS5wb3N0TWVzc2Fn
ZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90RmFrZVdvcmtlci5wcm90b3R5
cGUudGVybWluYXRlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RGYWtlV29y
a2VyLnByb3RvdHlwZS5fcG9zdE1lc3NhZ2VGcm9tV29ya2VyKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5IZWFwU25hcHNob3RXb3JrZXIpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFw
c2hvdFdvcmtlci5wcm90b3R5cGUuY3JlYXRlT2JqZWN0KToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5IZWFwU25hcHNob3RXb3JrZXIucHJvdG90eXBlLmRpc3Bvc2UpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLkhlYXBTbmFwc2hvdFdvcmtlci5wcm90b3R5cGUuZGlzcG9zZU9iamVjdCk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90V29ya2VyLnByb3RvdHlwZS5jYWxsR2V0dGVy
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RXb3JrZXIucHJvdG90eXBlLmNh
bGxGYWN0b3J5TWV0aG9kLndyYXBDYWxsYmFjayk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVh
cFNuYXBzaG90V29ya2VyLnByb3RvdHlwZS5jYWxsRmFjdG9yeU1ldGhvZCk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90V29ya2VyLnByb3RvdHlwZS5jYWxsTWV0aG9kKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RXb3JrZXIucHJvdG90eXBlLl9maW5kRnVu
Y3Rpb24pOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFdvcmtlci5wcm90b3R5
cGUuX21lc3NhZ2VSZWNlaXZlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90
V29ya2VyLnByb3RvdHlwZS5fcG9zdE1lc3NhZ2UpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhl
YXBTbmFwc2hvdFByb3h5T2JqZWN0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNo
b3RQcm94eU9iamVjdC5wcm90b3R5cGUuX2NhbGxXb3JrZXIpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLkhlYXBTbmFwc2hvdFByb3h5T2JqZWN0LnByb3RvdHlwZS5kaXNwb3NlKToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RQcm94eU9iamVjdC5wcm90b3R5cGUuZGlzcG9zZVdv
cmtlcik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90UHJveHlPYmplY3QucHJv
dG90eXBlLmNhbGxGYWN0b3J5TWV0aG9kKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25h
cHNob3RQcm94eU9iamVjdC5wcm90b3R5cGUuY2FsbEdldHRlcik6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuSGVhcFNuYXBzaG90UHJveHlPYmplY3QucHJvdG90eXBlLmNhbGxNZXRob2QpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdExvYWRlclByb3h5KToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5IZWFwU25hcHNob3RMb2FkZXJQcm94eS5wcm90b3R5cGUuZmluaXNoTG9hZGlu
Zy5jYWxsTG9hZENhbGxiYWNrcyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90
TG9hZGVyUHJveHkucHJvdG90eXBlLmZpbmlzaExvYWRpbmcudXBkYXRlU3RhdGljRGF0YSk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90TG9hZGVyUHJveHkucHJvdG90eXBlLmZp
bmlzaExvYWRpbmcpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdExvYWRlclBy
b3h5LnByb3RvdHlwZS5nZXQgbG9hZGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25h
cHNob3RMb2FkZXJQcm94eS5wcm90b3R5cGUuc3RhcnRMb2FkaW5nKToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5IZWFwU25hcHNob3RMb2FkZXJQcm94eS5wcm90b3R5cGUucHVzaEpTT05DaHVuayk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90UHJveHkpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLkhlYXBTbmFwc2hvdFByb3h5LnByb3RvdHlwZS5hZ2dyZWdhdGVzKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RQcm94eS5wcm90b3R5cGUuY3JlYXRlRGlmZik6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90UHJveHkucHJvdG90eXBlLmNyZWF0
ZUVkZ2VzUHJvdmlkZXIpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFByb3h5
LnByb3RvdHlwZS5jcmVhdGVOb2Rlc1Byb3ZpZGVyKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5I
ZWFwU25hcHNob3RQcm94eS5wcm90b3R5cGUuY3JlYXRlUGF0aEZpbmRlcik6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90UHJveHkucHJvdG90eXBlLmRpc3Bvc2UpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFByb3h5LnByb3RvdHlwZS5maW5pc2hMb2FkaW5n
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RQcm94eS5wcm90b3R5cGUuZ2V0
IGxvYWRlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90UHJveHkucHJvdG90
eXBlLmdldCBub2RlQ291bnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFBy
b3h5LnByb3RvdHlwZS5ub2RlRmllbGRWYWx1ZXNCeUluZGV4KToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5IZWFwU25hcHNob3RQcm94eS5wcm90b3R5cGUucHVzaEJhc2VJZHMpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFByb3h5LnByb3RvdHlwZS5nZXQgcm9vdE5vZGVJbmRl
eCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90UHJveHkucHJvdG90eXBlLnVw
ZGF0ZVN0YXRpY0RhdGEpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFByb3h5
LnByb3RvdHlwZS5zdGFydExvYWRpbmcpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFw
c2hvdFByb3h5LnByb3RvdHlwZS5nZXQgdG90YWxTaXplKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5IZWFwU25hcHNob3RQcm94eS5wcm90b3R5cGUuZ2V0IHVpZCk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuSGVhcFNuYXBzaG90UHJvdmlkZXJQcm94eSk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
SGVhcFNuYXBzaG90UHJvdmlkZXJQcm94eS5wcm90b3R5cGUuaXNFbXB0eSk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90UHJvdmlkZXJQcm94eS5wcm90b3R5cGUuc2VyaWFsaXpl
TmV4dEl0ZW1zKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RQcm92aWRlclBy
b3h5LnByb3RvdHlwZS5zb3J0QW5kUmV3aW5kKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFw
U25hcHNob3RQYXRoRmluZGVyUHJveHkpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFw
c2hvdFBhdGhGaW5kZXJQcm94eS5wcm90b3R5cGUuZmluZE5leHQpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLkhlYXBTbmFwc2hvdFBhdGhGaW5kZXJQcm94eS5wcm90b3R5cGUudXBkYXRlUm9vdHMp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdHNEaWZmUHJveHkpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdHNEaWZmUHJveHkucHJvdG90eXBlLmNhbGN1bGF0
ZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90c0RpZmZQcm94eS5wcm90b3R5
cGUucHVzaEJhc2VJZHMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdHNEaWZm
UHJveHkucHJvdG90eXBlLnB1c2hCYXNlU2VsZlNpemVzKToKKyAgICAgICAgKiBpbnNwZWN0b3Iv
ZnJvbnQtZW5kL0hlYXBTbmFwc2hvdFdvcmtlci5qczogQWRkZWQuCisgICAgICAgICogaW5zcGVj
dG9yL2Zyb250LWVuZC9IZWFwU25hcHNob3RXb3JrZXJEaXNwYXRjaGVyLmpzOiBBZGRlZC4KKyAg
ICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1BsZWFzZVdhaXRNZXNzYWdlLmpzOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLlBsZWFzZVdhaXRNZXNzYWdlLnByb3RvdHlwZS5zaG93QW5kV2FpdEZv
cik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUGxlYXNlV2FpdE1lc3NhZ2UucHJvdG90eXBlLnVu
bGlzdGVuQW5kSGlkZSk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9Qcm9maWxlc1Bh
bmVsLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlByb2ZpbGVzUGFuZWwucHJvdG90eXBlLmxv
YWRIZWFwU25hcHNob3QpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlByb2ZpbGVzUGFuZWwucHJv
dG90eXBlLl9maW5pc2hIZWFwU25hcHNob3QuZWxzZS5wYXJzZWQpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLlByb2ZpbGVzUGFuZWwucHJvdG90eXBlLl9maW5pc2hIZWFwU25hcHNob3QpOgorICAg
ICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvV2ViS2l0LnFyYzoKKyAgICAgICAgKiBpbnNwZWN0
b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5odG1sOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1l
bmQvdXRpbGl0aWVzLmpzOgorCiAyMDExLTA0LTIxICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtp
dC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkK
aW5kZXggZWFjZjA3Yy4uMGRiN2M0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtNjE3Miw2ICs2MTcy
LDcgQEAKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0F1ZGl0UmVzdWx0Vmlldy5q
cycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9BdWRpdFJ1bGVzLmpzJywKICAg
ICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0F1ZGl0c1BhbmVsLmpzJywKKyAgICAgICAg
ICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0JpbmFyeVNlYXJjaC5qcycsCiAgICAgICAgICAgICAn
aW5zcGVjdG9yL2Zyb250LWVuZC9Cb3R0b21VcFByb2ZpbGVEYXRhR3JpZFRyZWUuanMnLAogICAg
ICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvQnJlYWtwb2ludHNTaWRlYmFyUGFuZS5qcycs
CiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9DYWxsU3RhY2tTaWRlYmFyUGFuZS5q
cycsCkBAIC02MjE1LDYgKzYyMTYsOCBAQAogICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1l
bmQvSGVhcFNuYXBzaG90LmpzJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0hl
YXBTbmFwc2hvdFByb3h5LmpzJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0hl
YXBTbmFwc2hvdFZpZXcuanMnLAorICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvSGVh
cFNuYXBzaG90V29ya2VyLmpzJywKKyAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0hl
YXBTbmFwc2hvdFdvcmtlckRpc3BhdGNoZXIuanMnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9m
cm9udC1lbmQvSGVscFNjcmVlbi5qcycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVu
ZC9JbWFnZVZpZXcuanMnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvSW5zcGVj
dG9yRnJvbnRlbmRIb3N0U3R1Yi5qcycsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9q
L1dlYkNvcmUudmNwcm9qCmluZGV4IDIzYWYzM2YuLjE2Yjg1MzMgMTAwNzU1Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCisrKyBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCkBAIC02NzA3Nyw2ICs2NzA3NywxMCBA
QAogCQkJCQk+CiAJCQkJPC9GaWxlPgogCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5c
aW5zcGVjdG9yXGZyb250LWVuZFxCaW5hcnlTZWFyY2guanMiCisJCQkJCT4KKwkJCQk8L0ZpbGU+
CisJCQkJPEZpbGUKIAkJCQkJUmVsYXRpdmVQYXRoPSIuLlxpbnNwZWN0b3JcZnJvbnQtZW5kXEJv
dHRvbVVwUHJvZmlsZURhdGFHcmlkVHJlZS5qcyIKIAkJCQkJPgogCQkJCTwvRmlsZT4KQEAgLTY3
MjU3LDYgKzY3MjYxLDE0IEBACiAJCQkJCT4KIAkJCQk8L0ZpbGU+CiAJCQkJPEZpbGUKKwkJCQkJ
UmVsYXRpdmVQYXRoPSIuLlxpbnNwZWN0b3JcZnJvbnQtZW5kXEhlYXBTbmFwc2hvdFdvcmtlci5q
cyIKKwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4u
XGluc3BlY3Rvclxmcm9udC1lbmRcSGVhcFNuYXBzaG90V29ya2VyRGlzcGF0Y2hlci5qcyIKKwkJ
CQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQogCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGluc3Bl
Y3Rvclxmcm9udC1lbmRcaGVscFNjcmVlbi5jc3MiCiAJCQkJCT4KIAkJCQk8L0ZpbGU+CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9neXAvc3RyZWFtbGluZS1pbnNwZWN0b3Itc291cmNlLnNo
IGIvU291cmNlL1dlYkNvcmUvZ3lwL3N0cmVhbWxpbmUtaW5zcGVjdG9yLXNvdXJjZS5zaAppbmRl
eCA2NjExNTU0Li5iNWExYzVhIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9neXAvc3RyZWFt
bGluZS1pbnNwZWN0b3Itc291cmNlLnNoCisrKyBiL1NvdXJjZS9XZWJDb3JlL2d5cC9zdHJlYW1s
aW5lLWluc3BlY3Rvci1zb3VyY2Uuc2gKQEAgLTgsNiArOCw5IEBAIGZpCiAjIENvbWJpbmUgYWxs
IHNjcmlwdCByZXNvdXJjZXMgaW4gdGhlIGluc3BlY3Rvci5odG1sIGZpbGUuCiAiJFNSQ1JPT1Qv
Li4vaW5zcGVjdG9yL2NvbWJpbmUtamF2YXNjcmlwdC1yZXNvdXJjZXMucGwiIC0taW5wdXQtaHRt
bCAiJHtTUkNST09UfS8uLi9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5odG1sIiAtLWdl
bmVyYXRlZC1zY3JpcHRzLWRpciAke0JVSUxUX1BST0RVQ1RTX0RJUn0vRGVyaXZlZFNvdXJjZXMv
V2ViQ29yZSAtLW91dHB1dC1kaXIgIiR7REVSSVZFRF9GSUxFX0RJUn0vV2ViQ29yZSIgLS1vdXRw
dXQtc2NyaXB0LW5hbWUgaW5zcGVjdG9yLmpzCiAKKyMgSW5saW5lIHNjcmlwdCBpbXBvcnRzIGlu
IEhlYXBTbmFwc2hvdFdvcmtlci5qcyBmaWxlLgorIiRTUkNST09ULy4uL2luc3BlY3Rvci9pbmxp
bmUtamF2YXNjcmlwdC1pbXBvcnRzLnB5IiAiJHtTUkNST09UfS8uLi9pbnNwZWN0b3IvZnJvbnQt
ZW5kL0hlYXBTbmFwc2hvdFdvcmtlci5qcyIgIiR7U1JDUk9PVH0vLi4vaW5zcGVjdG9yL2Zyb250
LWVuZCIgIiR7REVSSVZFRF9GSUxFX0RJUn0vV2ViQ29yZS9IZWFwU25hcHNob3RXb3JrZXIuanMi
CisKICMgSW5saW5lIHNjcmlwdCBpbXBvcnRzIGluIFNjcmlwdEZvcm1hdHRlcldvcmtlci5qcyBm
aWxlLgogIiRTUkNST09ULy4uL2luc3BlY3Rvci9pbmxpbmUtamF2YXNjcmlwdC1pbXBvcnRzLnB5
IiAiJHtTUkNST09UfS8uLi9pbnNwZWN0b3IvZnJvbnQtZW5kL1NjcmlwdEZvcm1hdHRlcldvcmtl
ci5qcyIgIiR7U1JDUk9PVH0vLi4vaW5zcGVjdG9yL2Zyb250LWVuZCIgIiR7REVSSVZFRF9GSUxF
X0RJUn0vV2ViQ29yZS9zY3JpcHRGb3JtYXR0ZXJXb3JrZXIuanMiCiAKQEAgLTE5LDUgKzIyLDYg
QEAgaWYgWyAtZCAiJHtUQVJHRVRfQlVJTERfRElSfS8ke1VOTE9DQUxJWkVEX1JFU09VUkNFU19G
T0xERVJfUEFUSH0vaW5zcGVjdG9yIiBdOwogICAgICMgQ29weSB0aGUgbW9kaWZpZWQgSFRNTCBm
aWxlIGFuZCB0aGUgY29tYmluZWQgc2NyaXB0cy4KICAgICBjcCAiJHtERVJJVkVEX0ZJTEVfRElS
fS9XZWJDb3JlL2luc3BlY3Rvci5odG1sIiBpbnNwZWN0b3IuaHRtbAogICAgIGNwICIke0RFUklW
RURfRklMRV9ESVJ9L1dlYkNvcmUvaW5zcGVjdG9yLmpzIiBpbnNwZWN0b3IuanMKKyAgICBjcCAi
JHtERVJJVkVEX0ZJTEVfRElSfS9XZWJDb3JlL0hlYXBTbmFwc2hvdFdvcmtlci5qcyIgSGVhcFNu
YXBzaG90V29ya2VyLmpzCiAgICAgY3AgIiR7REVSSVZFRF9GSUxFX0RJUn0vV2ViQ29yZS9zY3Jp
cHRGb3JtYXR0ZXJXb3JrZXIuanMiIHNjcmlwdEZvcm1hdHRlcldvcmtlci5qcwogZmkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQmluYXJ5U2VhcmNoLmpz
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9CaW5hcnlTZWFyY2guanMKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmRlZGExZQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQmluYXJ5U2VhcmNoLmpzCkBA
IC0wLDAgKzEsNzAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNyBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBt
ZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUg
b2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJT
IEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICog
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworZnVuY3Rpb24gYmluYXJ5U2VhcmNoKG9iamVjdCwgYXJyYXksIGNvbXBhcmF0
b3IpCit7CisgICAgdmFyIGZpcnN0ID0gMDsKKyAgICB2YXIgbGFzdCA9IGFycmF5Lmxlbmd0aCAt
IDE7CisKKyAgICB3aGlsZSAoZmlyc3QgPD0gbGFzdCkgeworICAgICAgICB2YXIgbWlkID0gKGZp
cnN0ICsgbGFzdCkgPj4gMTsKKyAgICAgICAgdmFyIGMgPSBjb21wYXJhdG9yKG9iamVjdCwgYXJy
YXlbbWlkXSk7CisgICAgICAgIGlmIChjID4gMCkKKyAgICAgICAgICAgIGZpcnN0ID0gbWlkICsg
MTsKKyAgICAgICAgZWxzZSBpZiAoYyA8IDApCisgICAgICAgICAgICBsYXN0ID0gbWlkIC0gMTsK
KyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmV0dXJuIG1pZDsKKyAgICB9CisKKyAgICAvLyBS
ZXR1cm4gdGhlIG5lYXJlc3QgbGVzc2VyIGluZGV4LCAiLTEiIG1lYW5zICIwLCAiLTIiIG1lYW5z
ICIxIiwgZXRjLgorICAgIHJldHVybiAtKGZpcnN0ICsgMSk7Cit9CisKK09iamVjdC5kZWZpbmVQ
cm9wZXJ0eShBcnJheS5wcm90b3R5cGUsICJiaW5hcnlJbmRleE9mIiwgeyB2YWx1ZTogZnVuY3Rp
b24odmFsdWUsIGNvbXBhcmF0b3IpCit7CisgICAgdmFyIHJlc3VsdCA9IGJpbmFyeVNlYXJjaCh2
YWx1ZSwgdGhpcywgY29tcGFyYXRvcik7CisgICAgcmV0dXJuIHJlc3VsdCA+PSAwID8gcmVzdWx0
IDogLTE7Cit9fSk7CisKK2Z1bmN0aW9uIGluc2VydGlvbkluZGV4Rm9yT2JqZWN0SW5MaXN0U29y
dGVkQnlGdW5jdGlvbihhbk9iamVjdCwgYUxpc3QsIGFGdW5jdGlvbikKK3sKKyAgICB2YXIgaW5k
ZXggPSBiaW5hcnlTZWFyY2goYW5PYmplY3QsIGFMaXN0LCBhRnVuY3Rpb24pOworICAgIGlmIChp
bmRleCA8IDApCisgICAgICAgIC8vIFNlZSBiaW5hcnlTZWFyY2ggaW1wbGVtZW50YXRpb24uCisg
ICAgICAgIHJldHVybiAtaW5kZXggLSAxOworICAgIGVsc2UgeworICAgICAgICAvLyBSZXR1cm4g
dGhlIGZpcnN0IG9jY3VyYW5jZSBvZiBhbiBpdGVtIGluIHRoZSBsaXN0LgorICAgICAgICB3aGls
ZSAoaW5kZXggPiAwICYmIGFGdW5jdGlvbihhbk9iamVjdCwgYUxpc3RbaW5kZXggLSAxXSkgPT09
IDApCisgICAgICAgICAgICBpbmRleC0tOworICAgICAgICByZXR1cm4gaW5kZXg7ICAgICAgICAK
KyAgICB9Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L0RldGFpbGVkSGVhcHNob3RHcmlkTm9kZXMuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL0RldGFpbGVkSGVhcHNob3RHcmlkTm9kZXMuanMKaW5kZXggZTcwNmUxZC4uZDIx
MTZkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9EZXRh
aWxlZEhlYXBzaG90R3JpZE5vZGVzLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvRGV0YWlsZWRIZWFwc2hvdEdyaWROb2Rlcy5qcwpAQCAtNDUsMTkgKzQ1LDI0IEBA
IFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RHcmlkTm9kZS5wcm90b3R5cGUgPSB7CiAgICAgICAg
IHJldHVybiBjZWxsOwogICAgIH0sCiAKLSAgICBfcG9wdWxhdGU6IGZ1bmN0aW9uKGV2ZW50KQor
ICAgIGRpc3Bvc2U6IGZ1bmN0aW9uKCkKICAgICB7Ci0gICAgICAgIFdlYkluc3BlY3Rvci5QbGVh
c2VXYWl0TWVzc2FnZS5wcm90b3R5cGUuc3RhcnRBY3Rpb24odGhpcy5kYXRhR3JpZC5lbGVtZW50
LCBkb1BvcHVsYXRlLmJpbmQodGhpcykpOworICAgICAgICBpZiAodGhpcy5fcHJvdmlkZXIpCisg
ICAgICAgICAgICB0aGlzLl9wcm92aWRlci5kaXNwb3NlKCk7CisgICAgICAgIGZvciAodmFyIG5v
ZGUgPSB0aGlzLmNoaWxkcmVuWzBdOyBub2RlOyBub2RlID0gbm9kZS50cmF2ZXJzZU5leHROb2Rl
KHRydWUsIHRoaXMsIHRydWUpKQorICAgICAgICAgICAgaWYgKG5vZGUuZGlzcG9zZSkKKyAgICAg
ICAgICAgICAgICBub2RlLmRpc3Bvc2UoKTsKKyAgICB9LAogCi0gICAgICAgIGZ1bmN0aW9uIGRv
UG9wdWxhdGUoKQorICAgIF9wb3B1bGF0ZTogZnVuY3Rpb24oZXZlbnQpCisgICAgeworICAgICAg
ICB0aGlzLnJlbW92ZUV2ZW50TGlzdGVuZXIoInBvcHVsYXRlIiwgdGhpcy5fcG9wdWxhdGUsIHRo
aXMpOworICAgICAgICBXZWJJbnNwZWN0b3IuUGxlYXNlV2FpdE1lc3NhZ2UucHJvdG90eXBlLnNo
b3dBbmRXYWl0Rm9yKHRoaXMuZGF0YUdyaWQuZWxlbWVudCwgdGhpcywgInBvcHVsYXRlIGNvbXBs
ZXRlIik7CisgICAgICAgIGZ1bmN0aW9uIHNvcnRlZChpZ25vcmVkKQogICAgICAgICB7Ci0gICAg
ICAgICAgICB0aGlzLnJlbW92ZUV2ZW50TGlzdGVuZXIoInBvcHVsYXRlIiwgdGhpcy5fcG9wdWxh
dGUsIHRoaXMpOwotICAgICAgICAgICAgZnVuY3Rpb24gc29ydGVkKGlnbm9yZWQpCi0gICAgICAg
ICAgICB7Ci0gICAgICAgICAgICAgICAgdGhpcy5wb3B1bGF0ZUNoaWxkcmVuKCk7Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgICAgICB0aGlzLl9wcm92aWRlci5zb3J0QW5kUmV3aW5kKHRoaXMuY29t
cGFyYXRvcigpLCBzb3J0ZWQuYmluZCh0aGlzKSk7CisgICAgICAgICAgICB0aGlzLnBvcHVsYXRl
Q2hpbGRyZW4oKTsKICAgICAgICAgfQorICAgICAgICB0aGlzLl9wcm92aWRlci5zb3J0QW5kUmV3
aW5kKHRoaXMuY29tcGFyYXRvcigpLCBzb3J0ZWQuYmluZCh0aGlzKSk7CiAgICAgfSwKIAogICAg
IHBvcHVsYXRlQ2hpbGRyZW46IGZ1bmN0aW9uKHByb3ZpZGVyLCBob3dNYW55LCBhdEluZGV4LCBh
ZnRlclBvcHVsYXRlLCBzdXBwcmVzc05vdGlmeUFib3V0Q29tcGxldGlvbikKQEAgLTgwLDggKzg1
LDEwIEBAIFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RHcmlkTm9kZS5wcm90b3R5cGUgPSB7CiAg
ICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIGZ1bmN0aW9uIGNoaWxk
cmVuUmV0cmlldmVkKGl0ZW1zLCBoYXNOZXh0LCBsZW5ndGgpCisgICAgICAgIGZ1bmN0aW9uIGNo
aWxkcmVuUmV0cmlldmVkKGl0ZW1zKQogICAgICAgICB7CisgICAgICAgICAgICB2YXIgaGFzTmV4
dCA9IGl0ZW1zLmhhc05leHQ7CisgICAgICAgICAgICB2YXIgbGVuZ3RoID0gaXRlbXMudG90YWxM
ZW5ndGg7CiAgICAgICAgICAgICBmb3IgKHZhciBpID0gMCwgbCA9IGl0ZW1zLmxlbmd0aDsgaSA8
IGw7ICsraSkgewogICAgICAgICAgICAgICAgIHZhciBpdGVtID0gaXRlbXNbaV07CiAgICAgICAg
ICAgICAgICAgaWYgKGhhdmVTYXZlZENoaWxkcmVuKSB7CkBAIC0xMDcsNyArMTE0LDcgQEAgV2Vi
SW5zcGVjdG9yLkhlYXBTbmFwc2hvdEdyaWROb2RlLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAg
ICAgICBzZXRUaW1lb3V0KG5vdGlmeS5iaW5kKHRoaXMpLCAwKTsKICAgICAgICAgICAgIH0KICAg
ICAgICAgfQotICAgICAgICBwcm92aWRlci5nZXROZXh0SXRlbXMoaG93TWFueSwgY2hpbGRyZW5S
ZXRyaWV2ZWQuYmluZCh0aGlzKSk7CisgICAgICAgIHByb3ZpZGVyLnNlcmlhbGl6ZU5leHRJdGVt
cyhob3dNYW55LCBjaGlsZHJlblJldHJpZXZlZC5iaW5kKHRoaXMpKTsKICAgICB9LAogCiAgICAg
X3NhdmVDaGlsZHJlbjogZnVuY3Rpb24oKQpAQCAtMTIyLDMwICsxMjksMjkgQEAgV2ViSW5zcGVj
dG9yLkhlYXBTbmFwc2hvdEdyaWROb2RlLnByb3RvdHlwZSA9IHsKIAogICAgIHNvcnQ6IGZ1bmN0
aW9uKCkKICAgICB7Ci0gICAgICAgIGZ1bmN0aW9uIGRvU29ydCgpCisgICAgICAgIFdlYkluc3Bl
Y3Rvci5QbGVhc2VXYWl0TWVzc2FnZS5wcm90b3R5cGUuc2hvd0FuZFdhaXRGb3IodGhpcy5kYXRh
R3JpZC5lbGVtZW50LCB0aGlzLmRhdGFHcmlkLCAic29ydGluZyBjb21wbGV0ZSIpOworICAgICAg
ICB0aGlzLmRhdGFHcmlkLnJlY3Vyc2l2ZVNvcnRpbmdFbnRlcigpOworICAgICAgICBmdW5jdGlv
biBhZnRlclNvcnQoc29ydGVkKQogICAgICAgICB7Ci0gICAgICAgICAgICBmdW5jdGlvbiBhZnRl
clNvcnQoc29ydGVkKQorICAgICAgICAgICAgaWYgKCFzb3J0ZWQpIHsKKyAgICAgICAgICAgICAg
ICB0aGlzLmRhdGFHcmlkLnJlY3Vyc2l2ZVNvcnRpbmdMZWF2ZSgpOworICAgICAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHRoaXMuX3NhdmVDaGlsZHJlbigp
OworICAgICAgICAgICAgdGhpcy5yZW1vdmVDaGlsZHJlbigpOworIAorICAgICAgICAgICAgZnVu
Y3Rpb24gYWZ0ZXJQb3B1bGF0ZSgpCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgaWYg
KCFzb3J0ZWQpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgICAgICB0
aGlzLl9zYXZlQ2hpbGRyZW4oKTsKLSAgICAgICAgICAgICAgICB0aGlzLnJlbW92ZUNoaWxkcmVu
KCk7Ci0gICAgIAotICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGFmdGVyUG9wdWxhdGUoKQotICAg
ICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDAsIGwgPSB0
aGlzLmNoaWxkcmVuLmxlbmd0aDsgaSA8IGw7ICsraSkgewotICAgICAgICAgICAgICAgICAgICAg
ICAgdmFyIGNoaWxkID0gdGhpcy5jaGlsZHJlbltpXTsKLSAgICAgICAgICAgICAgICAgICAgICAg
IGlmIChjaGlsZC5leHBhbmRlZCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZC5z
b3J0KCk7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgdGhpcy5k
YXRhR3JpZC5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoInNvcnRpbmcgY29tcGxldGUiKTsKKyAg
ICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMCwgbCA9IHRoaXMuY2hpbGRyZW4ubGVuZ3RoOyBp
IDwgbDsgKytpKSB7CisgICAgICAgICAgICAgICAgICAgIHZhciBjaGlsZCA9IHRoaXMuY2hpbGRy
ZW5baV07CisgICAgICAgICAgICAgICAgICAgIGlmIChjaGlsZC5leHBhbmRlZCkKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGNoaWxkLnNvcnQoKTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICAgICAgdGhpcy5wb3B1bGF0ZUNoaWxkcmVuKHRoaXMuX3Byb3ZpZGVyLCBudWxsLCBudWxs
LCBhZnRlclBvcHVsYXRlLmJpbmQodGhpcykpOworICAgICAgICAgICAgICAgIHRoaXMuZGF0YUdy
aWQucmVjdXJzaXZlU29ydGluZ0xlYXZlKCk7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB0
aGlzLl9wcm92aWRlci5zb3J0QW5kUmV3aW5kKHRoaXMuY29tcGFyYXRvcigpLCBhZnRlclNvcnQu
YmluZCh0aGlzKSk7CisgICAgICAgICAgICB0aGlzLnBvcHVsYXRlQ2hpbGRyZW4odGhpcy5fcHJv
dmlkZXIsIG51bGwsIG51bGwsIGFmdGVyUG9wdWxhdGUuYmluZCh0aGlzKSk7CiAgICAgICAgIH0K
LSAgICAgICAgdGhpcy5kYXRhR3JpZC5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoInN0YXJ0IHNv
cnRpbmciKTsKLSAgICAgICAgV2ViSW5zcGVjdG9yLlBsZWFzZVdhaXRNZXNzYWdlLnByb3RvdHlw
ZS5zdGFydEFjdGlvbih0aGlzLmRhdGFHcmlkLmVsZW1lbnQsIGRvU29ydC5iaW5kKHRoaXMpKTsK
KyAgICAgICAgdGhpcy5fcHJvdmlkZXIuc29ydEFuZFJld2luZCh0aGlzLmNvbXBhcmF0b3IoKSwg
YWZ0ZXJTb3J0LmJpbmQodGhpcykpOwogICAgIH0KIH07CiAKQEAgLTI1NywxOSArMjYzLDIwIEBA
IFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RHZW5lcmljT2JqZWN0Tm9kZS5wcm90b3R5cGUgPSB7
CiAKIFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RHZW5lcmljT2JqZWN0Tm9kZS5wcm90b3R5cGUu
X19wcm90b19fID0gV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdEdyaWROb2RlLnByb3RvdHlwZTsK
IAotV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdE9iamVjdE5vZGUgPSBmdW5jdGlvbih0cmVlLCBl
ZGdlKQorV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdE9iamVjdE5vZGUgPSBmdW5jdGlvbih0cmVl
LCBpc0Zyb21CYXNlU25hcHNob3QsIGVkZ2UpCiB7CiAgICAgV2ViSW5zcGVjdG9yLkhlYXBTbmFw
c2hvdEdlbmVyaWNPYmplY3ROb2RlLmNhbGwodGhpcywgdHJlZSwgZWRnZS5ub2RlKTsKICAgICB0
aGlzLl9yZWZlcmVuY2VOYW1lID0gZWRnZS5uYW1lOwogICAgIHRoaXMuX3JlZmVyZW5jZVR5cGUg
PSBlZGdlLnR5cGU7Ci0gICAgdGhpcy5fcHJvdmlkZXIgPSB0aGlzLl9jcmVhdGVQcm92aWRlcih0
cmVlLnNuYXBzaG90LCBlZGdlLm5vZGVJbmRleCk7CisgICAgdGhpcy5faXNGcm9tQmFzZVNuYXBz
aG90ID0gaXNGcm9tQmFzZVNuYXBzaG90OworICAgIHRoaXMuX3Byb3ZpZGVyID0gdGhpcy5fY3Jl
YXRlUHJvdmlkZXIoIWlzRnJvbUJhc2VTbmFwc2hvdCA/IHRyZWUuc25hcHNob3QgOiB0cmVlLmJh
c2VTbmFwc2hvdCwgZWRnZS5ub2RlSW5kZXgpOwogICAgIHRoaXMuX3VwZGF0ZUhhc0NoaWxkcmVu
KCk7CiB9CiAKIFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RPYmplY3ROb2RlLnByb3RvdHlwZSA9
IHsKICAgICBfY3JlYXRlQ2hpbGROb2RlOiBmdW5jdGlvbihpdGVtKQogICAgIHsKLSAgICAgICAg
cmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90T2JqZWN0Tm9kZSh0aGlzLmRhdGFH
cmlkLCBpdGVtKTsKKyAgICAgICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90
T2JqZWN0Tm9kZSh0aGlzLmRhdGFHcmlkLCB0aGlzLl9pc0Zyb21CYXNlU25hcHNob3QsIGl0ZW0p
OwogICAgIH0sCiAKICAgICBfY3JlYXRlUHJvdmlkZXI6IGZ1bmN0aW9uKHNuYXBzaG90LCBub2Rl
SW5kZXgpCkBAIC0yNzcsMTAgKzI4NCwxMCBAQCBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90T2Jq
ZWN0Tm9kZS5wcm90b3R5cGUgPSB7CiAgICAgICAgIHZhciBzaG93SGlkZGVuRGF0YSA9IFdlYklu
c3BlY3Rvci5EZXRhaWxlZEhlYXBzaG90Vmlldy5wcm90b3R5cGUuc2hvd0hpZGRlbkRhdGE7CiAg
ICAgICAgIHJldHVybiBzbmFwc2hvdC5jcmVhdGVFZGdlc1Byb3ZpZGVyKAogICAgICAgICAgICAg
bm9kZUluZGV4LAotICAgICAgICAgICAgZnVuY3Rpb24oZWRnZSkgewotICAgICAgICAgICAgICAg
IHJldHVybiAhZWRnZS5pc0ludmlzaWJsZQotICAgICAgICAgICAgICAgICAgICAmJiAoc2hvd0hp
ZGRlbkRhdGEgfHwgKCFlZGdlLmlzSGlkZGVuICYmICFlZGdlLm5vZGUuaXNIaWRkZW4pKTsKLSAg
ICAgICAgICAgIH0pOworICAgICAgICAgICAgImZ1bmN0aW9uKGVkZ2UpIHsiICsKKyAgICAgICAg
ICAgICIgICAgcmV0dXJuICFlZGdlLmlzSW52aXNpYmxlIiArCisgICAgICAgICAgICAiICAgICAg
ICAmJiAoIiArIHNob3dIaWRkZW5EYXRhICsgIiB8fCAoIWVkZ2UuaXNIaWRkZW4gJiYgIWVkZ2Uu
bm9kZS5pc0hpZGRlbikpOyIgKworICAgICAgICAgICAgIn0iKTsKICAgICB9LAogCiAgICAgX2No
aWxkSGFzaEZvckVudGl0eTogZnVuY3Rpb24oZWRnZSkKQEAgLTM1Niw3ICszNjMsNyBAQCBXZWJJ
bnNwZWN0b3IuSGVhcFNuYXBzaG90SW5zdGFuY2VOb2RlID0gZnVuY3Rpb24odHJlZSwgYmFzZVNu
YXBzaG90LCBzbmFwc2hvdCwgbgogV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdEluc3RhbmNlTm9k
ZS5wcm90b3R5cGUgPSB7CiAgICAgX2NyZWF0ZUNoaWxkTm9kZTogZnVuY3Rpb24oaXRlbSkKICAg
ICB7Ci0gICAgICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdE9iamVjdE5v
ZGUodGhpcy5kYXRhR3JpZCwgaXRlbSk7CisgICAgICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9y
LkhlYXBTbmFwc2hvdE9iamVjdE5vZGUodGhpcy5kYXRhR3JpZCwgdGhpcy5faXNEZWxldGVkTm9k
ZSwgaXRlbSk7CiAgICAgfSwKIAogICAgIF9jcmVhdGVQcm92aWRlcjogZnVuY3Rpb24oc25hcHNo
b3QsIG5vZGVJbmRleCkKQEAgLTM2NCwxMCArMzcxLDEwIEBAIFdlYkluc3BlY3Rvci5IZWFwU25h
cHNob3RJbnN0YW5jZU5vZGUucHJvdG90eXBlID0gewogICAgICAgICB2YXIgc2hvd0hpZGRlbkRh
dGEgPSBXZWJJbnNwZWN0b3IuRGV0YWlsZWRIZWFwc2hvdFZpZXcucHJvdG90eXBlLnNob3dIaWRk
ZW5EYXRhOwogICAgICAgICByZXR1cm4gc25hcHNob3QuY3JlYXRlRWRnZXNQcm92aWRlcigKICAg
ICAgICAgICAgIG5vZGVJbmRleCwKLSAgICAgICAgICAgIGZ1bmN0aW9uKGVkZ2UpIHsKLSAgICAg
ICAgICAgICAgICByZXR1cm4gIWVkZ2UuaXNJbnZpc2libGUKLSAgICAgICAgICAgICAgICAgICAg
JiYgKHNob3dIaWRkZW5EYXRhIHx8ICghZWRnZS5pc0hpZGRlbiAmJiAhZWRnZS5ub2RlLmlzSGlk
ZGVuKSk7Ci0gICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICJmdW5jdGlvbihlZGdlKSB7IiAr
CisgICAgICAgICAgICAiICAgIHJldHVybiAhZWRnZS5pc0ludmlzaWJsZSIgKworICAgICAgICAg
ICAgIiAgICAgICAgJiYgKCIgKyBzaG93SGlkZGVuRGF0YSArICIgfHwgKCFlZGdlLmlzSGlkZGVu
ICYmICFlZGdlLm5vZGUuaXNIaWRkZW4pKTsiICsKKyAgICAgICAgICAgICJ9Iik7CiAgICAgfSwK
IAogICAgIF9jaGlsZEhhc2hGb3JFbnRpdHk6IGZ1bmN0aW9uKGVkZ2UpCkBAIC00MzgsMTAgKzQ0
NSwxMCBAQCBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90Q29uc3RydWN0b3JOb2RlLnByb3RvdHlw
ZSA9IHsKICAgICBfY3JlYXRlTm9kZXNQcm92aWRlcjogZnVuY3Rpb24oc25hcHNob3QsIG5vZGVU
eXBlLCBub2RlQ2xhc3NOYW1lKQogICAgIHsKICAgICAgICAgcmV0dXJuIHNuYXBzaG90LmNyZWF0
ZU5vZGVzUHJvdmlkZXIoCi0gICAgICAgICAgICBmdW5jdGlvbiAobm9kZSkgewotICAgICAgICAg
ICAgICAgICByZXR1cm4gbm9kZS50eXBlID09PSBub2RlVHlwZQotICAgICAgICAgICAgICAgICAg
ICAmJiAobm9kZUNsYXNzTmFtZSA9PT0gbnVsbCB8fCBub2RlLmNsYXNzTmFtZSA9PT0gbm9kZUNs
YXNzTmFtZSk7Ci0gICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICJmdW5jdGlvbiAobm9kZSkg
eyIgKyAKKyAgICAgICAgICAgICIgICAgIHJldHVybiBub2RlLnR5cGUgPT09IFwiIiArIG5vZGVU
eXBlICsgIlwiICIgKworICAgICAgICAgICAgKG5vZGVDbGFzc05hbWUgIT09IG51bGwgPyAiJiYg
bm9kZS5jbGFzc05hbWUgPT09IFwiIiArIG5vZGVDbGFzc05hbWUgKyAiXCIiIDogIiIpICsKKyAg
ICAgICAgICAgICJ9Iik7CiAgICAgfSwKIAogICAgIGNvbXBhcmF0b3I6IGZ1bmN0aW9uKCkKQEAg
LTUwMiw2ICs1MDksMTIgQEAgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdEl0ZXJhdG9yc1R1cGxl
ID0gZnVuY3Rpb24oaXQxLCBpdDIpCiB9CiAKIFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RJdGVy
YXRvcnNUdXBsZS5wcm90b3R5cGUgPSB7CisgICAgZGlzcG9zZTogZnVuY3Rpb24oKQorICAgIHsK
KyAgICAgICAgdGhpcy5faXQxLmRpc3Bvc2UoKTsKKyAgICAgICAgdGhpcy5faXQyLmRpc3Bvc2Uo
KTsKKyAgICB9LAorCiAgICAgc29ydEFuZFJld2luZDogZnVuY3Rpb24oY29tcGFyYXRvciwgY2Fs
bGJhY2spCiAgICAgewogICAgICAgICBmdW5jdGlvbiBhZnRlclNvcnQoaWdub3JlZCkKQEAgLTUy
OCwxMCArNTQxLDE2IEBAIFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3REaWZmTm9kZS5wcm90b3R5
cGUgPSB7CiAgICAgICAgIAogICAgICAgICBmdW5jdGlvbiBkaWZmQ2FsY3VsYXRlZChkaWZmUmVz
dWx0KQogICAgICAgICB7Ci0gICAgICAgICAgICB0aGlzLl9kaWZmID0gZGlmZlJlc3VsdDsKKyAg
ICAgICAgICAgIGRpZmYuZGlzcG9zZSgpOworICAgICAgICAgICAgdGhpcy5fYWRkZWRDb3VudCA9
IGRpZmZSZXN1bHQuYWRkZWRDb3VudDsKKyAgICAgICAgICAgIHRoaXMuX3JlbW92ZWRDb3VudCA9
IGRpZmZSZXN1bHQucmVtb3ZlZENvdW50OworICAgICAgICAgICAgdGhpcy5fY291bnREZWx0YSA9
IGRpZmZSZXN1bHQuY291bnREZWx0YTsKKyAgICAgICAgICAgIHRoaXMuX2FkZGVkU2l6ZSA9IGRp
ZmZSZXN1bHQuYWRkZWRTaXplOworICAgICAgICAgICAgdGhpcy5fcmVtb3ZlZFNpemUgPSBkaWZm
UmVzdWx0LnJlbW92ZWRTaXplOworICAgICAgICAgICAgdGhpcy5fc2l6ZURlbHRhID0gZGlmZlJl
c3VsdC5zaXplRGVsdGE7CiAgICAgICAgICAgICB0aGlzLl9iYXNlSW5kZXhlcyA9IG51bGw7CiAg
ICAgICAgICAgICB0aGlzLl9pbmRleGVzID0gbnVsbDsKLSAgICAgICAgICAgIGNhbGxiYWNrKHRo
aXMuX2RpZmYuYWRkZWRTaXplID09PSAwICYmIHRoaXMuX2RpZmYucmVtb3ZlZFNpemUgPT09IDAp
OworICAgICAgICAgICAgY2FsbGJhY2sodGhpcy5fYWRkZWRTaXplID09PSAwICYmIHRoaXMuX3Jl
bW92ZWRTaXplID09PSAwKTsKICAgICAgICAgfQogICAgICAgICBmdW5jdGlvbiBiYXNlU2VsZlNp
emVzUmVjZWl2ZWQoYmFzZVNlbGZTaXplcykKICAgICAgICAgewpAQCAtNTQwLDcgKzU1OSw3IEBA
IFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3REaWZmTm9kZS5wcm90b3R5cGUgPSB7CiAgICAgICAg
IH0KICAgICAgICAgZnVuY3Rpb24gYmFzZUlkc1JlY2VpdmVkKGJhc2VJZHMpCiAgICAgICAgIHsK
LSAgICAgICAgICAgIGRpZmYucHVzaEJhc2VJZHMoZGF0YUdyaWQuYmFzZVNuYXBzaG90LnVpZCwg
YmFzZUlkcyk7CisgICAgICAgICAgICBkaWZmLnB1c2hCYXNlSWRzKGJhc2VJZHMpOwogICAgICAg
ICAgICAgZGF0YUdyaWQuc25hcHNob3QucHVzaEJhc2VJZHMoZGF0YUdyaWQuYmFzZVNuYXBzaG90
LnVpZCwgdGhpcy5fbmFtZSwgYmFzZUlkcyk7CiAgICAgICAgICAgICBkYXRhR3JpZC5iYXNlU25h
cHNob3Qubm9kZUZpZWxkVmFsdWVzQnlJbmRleCgic2VsZlNpemUiLCB0aGlzLl9iYXNlSW5kZXhl
cywgYmFzZVNlbGZTaXplc1JlY2VpdmVkLmJpbmQodGhpcykpOwogICAgICAgICB9CkBAIC01NzAs
MTEgKzU4OSwxMSBAQCBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90RGlmZk5vZGUucHJvdG90eXBl
ID0gewogICAgICAgICB7CiAgICAgICAgICAgICB2YXIgb3RoZXJTbmFwc2hvdElkID0gb3RoZXJT
bmFwc2hvdC51aWQ7CiAgICAgICAgICAgICB2YXIgcHJvdmlkZXIgPSBzbmFwc2hvdC5jcmVhdGVO
b2Rlc1Byb3ZpZGVyKAotICAgICAgICAgICAgICAgIGZ1bmN0aW9uIChub2RlKSB7Ci0gICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gbm9kZS50eXBlID09PSBub2RlVHlwZQotICAgICAgICAgICAg
ICAgICAgICAgICAgICYmIChub2RlQ2xhc3NOYW1lID09PSBudWxsIHx8IG5vZGUuY2xhc3NOYW1l
ID09PSBub2RlQ2xhc3NOYW1lKQotICAgICAgICAgICAgICAgICAgICAgICAgICYmICF0aGlzLmJh
c2VTbmFwc2hvdEhhc05vZGUob3RoZXJTbmFwc2hvdElkLCBjbGFzc05hbWUsIG5vZGUuaWQpOwot
ICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgICJmdW5jdGlvbiAobm9kZSkgeyIg
KworICAgICAgICAgICAgICAgICIgICAgIHJldHVybiBub2RlLnR5cGUgPT09IFwiIiArIG5vZGVU
eXBlICsgIlwiICIgKworICAgICAgICAgICAgICAgIChub2RlQ2xhc3NOYW1lICE9PSBudWxsID8g
IiYmIG5vZGUuY2xhc3NOYW1lID09PSBcIiIgKyBub2RlQ2xhc3NOYW1lICsgIlwiIiA6ICIiKSAr
CisgICAgICAgICAgICAgICAgIiAgICAgICAgICYmICF0aGlzLmJhc2VTbmFwc2hvdEhhc05vZGUo
IiArIG90aGVyU25hcHNob3RJZCArICIsIFwiIiArIGNsYXNzTmFtZSArICJcIiwgbm9kZS5pZCk7
IiArCisgICAgICAgICAgICAgICAgIn0iKTsKICAgICAgICAgICAgIHByb3ZpZGVyLnNuYXBzaG90
ID0gc25hcHNob3Q7CiAgICAgICAgICAgICByZXR1cm4gcHJvdmlkZXI7CiAgICAgICAgIH0KQEAg
LTYzOCwxNCArNjU3LDEyIEBAIFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3REaWZmTm9kZS5wcm90
b3R5cGUgPSB7CiAgICAgewogICAgICAgICB2YXIgZGF0YSA9IHtvYmplY3Q6IHRoaXMuX25hbWV9
OwogCi0gICAgICAgIGRhdGFbImFkZGVkQ291bnQiXSA9IHRoaXMuX2RpZmYuYWRkZWRDb3VudDsK
LSAgICAgICAgZGF0YVsicmVtb3ZlZENvdW50Il0gPSB0aGlzLl9kaWZmLnJlbW92ZWRDb3VudDsK
LSAgICAgICAgdmFyIGNvdW50RGVsdGEgPSB0aGlzLl9kaWZmLmNvdW50RGVsdGE7Ci0gICAgICAg
IGRhdGFbImNvdW50RGVsdGEiXSA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiJXMlZCIsIHRoaXMu
X3NpZ25Gb3JEZWx0YShjb3VudERlbHRhKSwgTWF0aC5hYnMoY291bnREZWx0YSkpOwotICAgICAg
ICBkYXRhWyJhZGRlZFNpemUiXSA9IE51bWJlci5ieXRlc1RvU3RyaW5nKHRoaXMuX2RpZmYuYWRk
ZWRTaXplKTsKLSAgICAgICAgZGF0YVsicmVtb3ZlZFNpemUiXSA9IE51bWJlci5ieXRlc1RvU3Ry
aW5nKHRoaXMuX2RpZmYucmVtb3ZlZFNpemUpOwotICAgICAgICB2YXIgc2l6ZURlbHRhID0gdGhp
cy5fZGlmZi5zaXplRGVsdGE7Ci0gICAgICAgIGRhdGFbInNpemVEZWx0YSJdID0gV2ViSW5zcGVj
dG9yLlVJU3RyaW5nKCIlcyVzIiwgdGhpcy5fc2lnbkZvckRlbHRhKHNpemVEZWx0YSksIE51bWJl
ci5ieXRlc1RvU3RyaW5nKE1hdGguYWJzKHNpemVEZWx0YSkpKTsKKyAgICAgICAgZGF0YVsiYWRk
ZWRDb3VudCJdID0gdGhpcy5fYWRkZWRDb3VudDsKKyAgICAgICAgZGF0YVsicmVtb3ZlZENvdW50
Il0gPSB0aGlzLl9yZW1vdmVkQ291bnQ7CisgICAgICAgIGRhdGFbImNvdW50RGVsdGEiXSA9IFdl
Ykluc3BlY3Rvci5VSVN0cmluZygiJXMlZCIsIHRoaXMuX3NpZ25Gb3JEZWx0YSh0aGlzLl9jb3Vu
dERlbHRhKSwgTWF0aC5hYnModGhpcy5fY291bnREZWx0YSkpOworICAgICAgICBkYXRhWyJhZGRl
ZFNpemUiXSA9IE51bWJlci5ieXRlc1RvU3RyaW5nKHRoaXMuX2FkZGVkU2l6ZSk7CisgICAgICAg
IGRhdGFbInJlbW92ZWRTaXplIl0gPSBOdW1iZXIuYnl0ZXNUb1N0cmluZyh0aGlzLl9yZW1vdmVk
U2l6ZSk7CisgICAgICAgIGRhdGFbInNpemVEZWx0YSJdID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5n
KCIlcyVzIiwgdGhpcy5fc2lnbkZvckRlbHRhKHRoaXMuX3NpemVEZWx0YSksIE51bWJlci5ieXRl
c1RvU3RyaW5nKE1hdGguYWJzKHRoaXMuX3NpemVEZWx0YSkpKTsKIAogICAgICAgICByZXR1cm4g
ZGF0YTsKICAgICB9CkBAIC02NzAsMTIgKzY4NywxMiBAQCBXZWJJbnNwZWN0b3IuSGVhcFNuYXBz
aG90RG9taW5hdG9yT2JqZWN0Tm9kZS5wcm90b3R5cGUgPSB7CiAgICAgewogICAgICAgICB2YXIg
c2hvd0hpZGRlbkRhdGEgPSBXZWJJbnNwZWN0b3IuRGV0YWlsZWRIZWFwc2hvdFZpZXcucHJvdG90
eXBlLnNob3dIaWRkZW5EYXRhOwogICAgICAgICByZXR1cm4gc25hcHNob3QuY3JlYXRlTm9kZXNQ
cm92aWRlcigKLSAgICAgICAgICAgIGZ1bmN0aW9uIChub2RlKSB7Ci0gICAgICAgICAgICAgICAg
IHZhciBkb21pbmF0b3JJbmRleCA9IG5vZGUuZG9taW5hdG9ySW5kZXg7Ci0gICAgICAgICAgICAg
ICAgIHJldHVybiBkb21pbmF0b3JJbmRleCA9PT0gbm9kZUluZGV4Ci0gICAgICAgICAgICAgICAg
ICAgICAmJiBkb21pbmF0b3JJbmRleCAhPT0gbm9kZS5ub2RlSW5kZXgKLSAgICAgICAgICAgICAg
ICAgICAgICYmIChzaG93SGlkZGVuRGF0YSB8fCAhbm9kZS5pc0hpZGRlbik7Ci0gICAgICAgICAg
ICB9KTsKKyAgICAgICAgICAgICJmdW5jdGlvbiAobm9kZSkgeyIgKworICAgICAgICAgICAgIiAg
ICAgdmFyIGRvbWluYXRvckluZGV4ID0gbm9kZS5kb21pbmF0b3JJbmRleDsiICsKKyAgICAgICAg
ICAgICIgICAgIHJldHVybiBkb21pbmF0b3JJbmRleCA9PT0gIiArIG5vZGVJbmRleCArIAorICAg
ICAgICAgICAgIiAgICAgICAgICYmIGRvbWluYXRvckluZGV4ICE9PSBub2RlLm5vZGVJbmRleCIg
KworICAgICAgICAgICAgIiAgICAgICAgICYmICgiICsgc2hvd0hpZGRlbkRhdGEgKyAiIHx8ICFu
b2RlLmlzSGlkZGVuKTsiICsKKyAgICAgICAgICAgICJ9Iik7CiAgICAgfSwKIAogICAgIF9jaGls
ZEhhc2hGb3JFbnRpdHk6IGZ1bmN0aW9uKG5vZGUpCkBAIC03MTUsNiArNzMyLDcgQEAgZnVuY3Rp
b24gTWl4SW5TbmFwc2hvdE5vZGVGdW5jdGlvbnMoc291cmNlUHJvdG90eXBlLCB0YXJnZXRQcm90
b3R5cGUpCiAgICAgdGFyZ2V0UHJvdG90eXBlLmNvbXBhcmF0b3IgPSBzb3VyY2VQcm90b3R5cGUu
Y29tcGFyYXRvcjsKICAgICB0YXJnZXRQcm90b3R5cGUuX2NyZWF0ZUNoaWxkTm9kZSA9IHNvdXJj
ZVByb3RvdHlwZS5fY3JlYXRlQ2hpbGROb2RlOwogICAgIHRhcmdldFByb3RvdHlwZS5fY3JlYXRl
UHJvdmlkZXIgPSBzb3VyY2VQcm90b3R5cGUuX2NyZWF0ZVByb3ZpZGVyOworICAgIHRhcmdldFBy
b3RvdHlwZS5kaXNwb3NlID0gc291cmNlUHJvdG90eXBlLmRpc3Bvc2U7CiAgICAgdGFyZ2V0UHJv
dG90eXBlLnBvcHVsYXRlQ2hpbGRyZW4gPSBzb3VyY2VQcm90b3R5cGUucG9wdWxhdGVDaGlsZHJl
bjsKICAgICB0YXJnZXRQcm90b3R5cGUuX3NhdmVDaGlsZHJlbiA9IHNvdXJjZVByb3RvdHlwZS5f
c2F2ZUNoaWxkcmVuOwogICAgIHRhcmdldFByb3RvdHlwZS5zb3J0ID0gc291cmNlUHJvdG90eXBl
LnNvcnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0Rl
dGFpbGVkSGVhcHNob3RWaWV3LmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9EZXRhaWxlZEhlYXBzaG90Vmlldy5qcwppbmRleCAxZTQ2YjUxLi44MTM4ZDFjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RldGFpbGVkSGVhcHNob3RW
aWV3LmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRGV0YWlsZWRI
ZWFwc2hvdFZpZXcuanMKQEAgLTI4LDMzICsyOCw2IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAK
LVdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RDb250YWlubWVudERhdGFHcmlkID0gZnVuY3Rpb24o
KQotewotICAgIHZhciBjb2x1bW5zID0gewotICAgICAgICBvYmplY3Q6IHsgdGl0bGU6IFdlYklu
c3BlY3Rvci5VSVN0cmluZygiT2JqZWN0IiksIGRpc2Nsb3N1cmU6IHRydWUsIHNvcnRhYmxlOiB0
cnVlLCBzb3J0OiAiYXNjZW5kaW5nIiB9LAotICAgICAgICBzaGFsbG93U2l6ZTogeyB0aXRsZTog
V2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTaGFsbG93IFNpemUiKSwgd2lkdGg6ICI5MHB4Iiwgc29y
dGFibGU6IHRydWUgfSwKLSAgICAgICAgcmV0YWluZWRTaXplOiB7IHRpdGxlOiBXZWJJbnNwZWN0
b3IuVUlTdHJpbmcoIlJldGFpbmVkIFNpemUiKSwgd2lkdGg6ICI5MHB4Iiwgc29ydGFibGU6IHRy
dWUgfQotICAgIH07Ci0gICAgV2ViSW5zcGVjdG9yLkRhdGFHcmlkLmNhbGwodGhpcywgY29sdW1u
cyk7Ci0gICAgdGhpcy5hZGRFdmVudExpc3RlbmVyKCJzb3J0aW5nIGNoYW5nZWQiLCB0aGlzLnNv
cnQsIHRoaXMpOwotfQotCi1XZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90Q29udGFpbm1lbnREYXRh
R3JpZC5wcm90b3R5cGUgPSB7Ci0gICAgX2RlZmF1bHRQb3B1bGF0ZUNvdW50OiAxMDAsCi0KLSAg
ICBzZXREYXRhU291cmNlOiBmdW5jdGlvbihzbmFwc2hvdFZpZXcsIHNuYXBzaG90KQotICAgIHsK
LSAgICAgICAgdGhpcy5zbmFwc2hvdFZpZXcgPSBzbmFwc2hvdFZpZXc7Ci0gICAgICAgIHRoaXMu
c25hcHNob3QgPSBzbmFwc2hvdDsKLSAgICAgICAgdGhpcy5zbmFwc2hvdE5vZGVJbmRleCA9IHRo
aXMuc25hcHNob3Qucm9vdE5vZGVJbmRleDsKLSAgICAgICAgdGhpcy5fcHJvdmlkZXIgPSB0aGlz
Ll9jcmVhdGVQcm92aWRlcihzbmFwc2hvdCwgdGhpcy5zbmFwc2hvdE5vZGVJbmRleCk7Ci0gICAg
ICAgIHRoaXMuc29ydCgpOwotICAgIH0KLX07Ci0KLU1peEluU25hcHNob3ROb2RlRnVuY3Rpb25z
KFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RPYmplY3ROb2RlLnByb3RvdHlwZSwgV2ViSW5zcGVj
dG9yLkhlYXBTbmFwc2hvdENvbnRhaW5tZW50RGF0YUdyaWQucHJvdG90eXBlKTsKLVdlYkluc3Bl
Y3Rvci5IZWFwU25hcHNob3RDb250YWlubWVudERhdGFHcmlkLnByb3RvdHlwZS5fX3Byb3RvX18g
PSBXZWJJbnNwZWN0b3IuRGF0YUdyaWQucHJvdG90eXBlOwotCiBXZWJJbnNwZWN0b3IuSGVhcFNu
YXBzaG90U29ydGFibGVEYXRhR3JpZCA9IGZ1bmN0aW9uKGNvbHVtbnMpCiB7CiAgICAgV2ViSW5z
cGVjdG9yLkRhdGFHcmlkLmNhbGwodGhpcywgY29sdW1ucyk7CkBAIC02Miw2ICszNSwxOCBAQCBX
ZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90U29ydGFibGVEYXRhR3JpZCA9IGZ1bmN0aW9uKGNvbHVt
bnMpCiB9CiAKIFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RTb3J0YWJsZURhdGFHcmlkLnByb3Rv
dHlwZSA9IHsKKyAgICBkaXNwb3NlOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICBmb3IgKHZh
ciBpID0gMCwgbCA9IHRoaXMuY2hpbGRyZW4ubGVuZ3RoOyBpIDwgbDsgKytpKQorICAgICAgICAg
ICAgdGhpcy5jaGlsZHJlbltpXS5kaXNwb3NlKCk7CisgICAgfSwKKworICAgIHJlc2V0U29ydGlu
Z0NhY2hlOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICBkZWxldGUgdGhpcy5fbGFzdFNvcnRD
b2x1bW5JZGVudGlmaWVyOworICAgICAgICBkZWxldGUgdGhpcy5fbGFzdFNvcnRBc2NlbmRpbmc7
CisgICAgfSwKKwogICAgIHNvcnRpbmdDaGFuZ2VkOiBmdW5jdGlvbigpCiAgICAgewogICAgICAg
ICB2YXIgc29ydEFzY2VuZGluZyA9IHRoaXMuc29ydE9yZGVyID09PSAiYXNjZW5kaW5nIjsKQEAg
LTg5LDEyICs3NCwxNyBAQCBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90U29ydGFibGVEYXRhR3Jp
ZC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICB9CiAK
LSAgICAgICAgdGhpcy5fcGVyZm9ybVNvcnRpbmcoU29ydEJ5VHdvRmllbGRzKTsKKyAgICAgICAg
V2ViSW5zcGVjdG9yLlBsZWFzZVdhaXRNZXNzYWdlLnByb3RvdHlwZS5zaG93QW5kV2FpdEZvcih0
aGlzLmVsZW1lbnQsIHRoaXMsICJzb3J0aW5nIGNvbXBsZXRlIik7CisgICAgICAgIGZ1bmN0aW9u
IHNvcnQoKQorICAgICAgICB7CisgICAgICAgICAgICB0aGlzLl9wZXJmb3JtU29ydGluZyhTb3J0
QnlUd29GaWVsZHMpOworICAgICAgICB9CisgICAgICAgIHNldFRpbWVvdXQoc29ydC5iaW5kKHRo
aXMpLCAwKTsKICAgICB9LAogCiAgICAgX3BlcmZvcm1Tb3J0aW5nOiBmdW5jdGlvbihzb3J0RnVu
Y3Rpb24pCiAgICAgewotICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycygic3Rh
cnQgc29ydGluZyIpOworICAgICAgICB0aGlzLnJlY3Vyc2l2ZVNvcnRpbmdFbnRlcigpOwogICAg
ICAgICB2YXIgY2hpbGRyZW4gPSB0aGlzLmNoaWxkcmVuOwogICAgICAgICB0aGlzLnJlbW92ZUNo
aWxkcmVuKCk7CiAgICAgICAgIGNoaWxkcmVuLnNvcnQoc29ydEZ1bmN0aW9uKTsKQEAgLTEwNCwx
MiArOTQsNjEgQEAgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFNvcnRhYmxlRGF0YUdyaWQucHJv
dG90eXBlID0gewogICAgICAgICAgICAgaWYgKGNoaWxkLmV4cGFuZGVkKQogICAgICAgICAgICAg
ICAgIGNoaWxkLnNvcnQoKTsKICAgICAgICAgfQotICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRU
b0xpc3RlbmVycygic29ydGluZyBjb21wbGV0ZSIpOworICAgICAgICB0aGlzLnJlY3Vyc2l2ZVNv
cnRpbmdMZWF2ZSgpOworICAgIH0sCisKKyAgICByZWN1cnNpdmVTb3J0aW5nRW50ZXI6IGZ1bmN0
aW9uKCkKKyAgICB7CisgICAgICAgIGlmICghKCJfcmVjdXJzaXZlU29ydGluZ0RlcHRoIiBpbiB0
aGlzKSkKKyAgICAgICAgICAgIHRoaXMuX3JlY3Vyc2l2ZVNvcnRpbmdEZXB0aCA9IDE7CisgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgICsrdGhpcy5fcmVjdXJzaXZlU29ydGluZ0RlcHRoOworICAg
IH0sCisKKyAgICByZWN1cnNpdmVTb3J0aW5nTGVhdmU6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAg
ICAgIGlmICghKCJfcmVjdXJzaXZlU29ydGluZ0RlcHRoIiBpbiB0aGlzKSkKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgaWYgKCEtLXRoaXMuX3JlY3Vyc2l2ZVNvcnRpbmdEZXB0aCkgewor
ICAgICAgICAgICAgZGVsZXRlIHRoaXMuX3JlY3Vyc2l2ZVNvcnRpbmdEZXB0aDsKKyAgICAgICAg
ICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKCJzb3J0aW5nIGNvbXBsZXRlIik7Cisg
ICAgICAgIH0KICAgICB9CiB9OwogCiBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90U29ydGFibGVE
YXRhR3JpZC5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLkRhdGFHcmlkLnByb3Rv
dHlwZTsKIAorV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdENvbnRhaW5tZW50RGF0YUdyaWQgPSBm
dW5jdGlvbigpCit7CisgICAgdmFyIGNvbHVtbnMgPSB7CisgICAgICAgIG9iamVjdDogeyB0aXRs
ZTogV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJPYmplY3QiKSwgZGlzY2xvc3VyZTogdHJ1ZSwgc29y
dGFibGU6IHRydWUsIHNvcnQ6ICJhc2NlbmRpbmciIH0sCisgICAgICAgIHNoYWxsb3dTaXplOiB7
IHRpdGxlOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlNoYWxsb3cgU2l6ZSIpLCB3aWR0aDogIjkw
cHgiLCBzb3J0YWJsZTogdHJ1ZSB9LAorICAgICAgICByZXRhaW5lZFNpemU6IHsgdGl0bGU6IFdl
Ykluc3BlY3Rvci5VSVN0cmluZygiUmV0YWluZWQgU2l6ZSIpLCB3aWR0aDogIjkwcHgiLCBzb3J0
YWJsZTogdHJ1ZSB9CisgICAgfTsKKyAgICBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90U29ydGFi
bGVEYXRhR3JpZC5jYWxsKHRoaXMsIGNvbHVtbnMpOworfQorCitXZWJJbnNwZWN0b3IuSGVhcFNu
YXBzaG90Q29udGFpbm1lbnREYXRhR3JpZC5wcm90b3R5cGUgPSB7CisgICAgX2RlZmF1bHRQb3B1
bGF0ZUNvdW50OiAxMDAsCisKKyAgICBzZXREYXRhU291cmNlOiBmdW5jdGlvbihzbmFwc2hvdFZp
ZXcsIHNuYXBzaG90KQorICAgIHsKKyAgICAgICAgdGhpcy5zbmFwc2hvdFZpZXcgPSBzbmFwc2hv
dFZpZXc7CisgICAgICAgIHRoaXMuc25hcHNob3QgPSBzbmFwc2hvdDsKKyAgICAgICAgdGhpcy5z
bmFwc2hvdE5vZGVJbmRleCA9IHRoaXMuc25hcHNob3Qucm9vdE5vZGVJbmRleDsKKyAgICAgICAg
dGhpcy5fcHJvdmlkZXIgPSB0aGlzLl9jcmVhdGVQcm92aWRlcihzbmFwc2hvdCwgdGhpcy5zbmFw
c2hvdE5vZGVJbmRleCk7CisgICAgICAgIHRoaXMuc29ydCgpOworICAgIH0sCisKKyAgICBzb3J0
aW5nQ2hhbmdlZDogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgdGhpcy5zb3J0KCk7CisgICAg
fQorfTsKKworTWl4SW5TbmFwc2hvdE5vZGVGdW5jdGlvbnMoV2ViSW5zcGVjdG9yLkhlYXBTbmFw
c2hvdE9iamVjdE5vZGUucHJvdG90eXBlLCBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90Q29udGFp
bm1lbnREYXRhR3JpZC5wcm90b3R5cGUpOworV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdENvbnRh
aW5tZW50RGF0YUdyaWQucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5IZWFwU25h
cHNob3RTb3J0YWJsZURhdGFHcmlkLnByb3RvdHlwZTsKKwogV2ViSW5zcGVjdG9yLkhlYXBTbmFw
c2hvdENvbnN0cnVjdG9yc0RhdGFHcmlkID0gZnVuY3Rpb24oKQogewogICAgIHZhciBjb2x1bW5z
ID0gewpAQCAtMTk1LDkgKzIzNCwxMyBAQCBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90RGlmZkRh
dGFHcmlkLnByb3RvdHlwZSA9IHsKICAgICBzZXRCYXNlRGF0YVNvdXJjZTogZnVuY3Rpb24oYmFz
ZVNuYXBzaG90KQogICAgIHsKICAgICAgICAgdGhpcy5iYXNlU25hcHNob3QgPSBiYXNlU25hcHNo
b3Q7CisgICAgICAgIHRoaXMuZGlzcG9zZSgpOwogICAgICAgICB0aGlzLnJlbW92ZUNoaWxkcmVu
KCk7Ci0gICAgICAgIGlmICh0aGlzLmJhc2VTbmFwc2hvdCA9PT0gdGhpcy5zbmFwc2hvdCkKKyAg
ICAgICAgdGhpcy5yZXNldFNvcnRpbmdDYWNoZSgpOworICAgICAgICBpZiAodGhpcy5iYXNlU25h
cHNob3QgPT09IHRoaXMuc25hcHNob3QpIHsKKyAgICAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVu
dFRvTGlzdGVuZXJzKCJzb3J0aW5nIGNvbXBsZXRlIik7CiAgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIH0KICAgICAgICAgdGhpcy5wb3B1bGF0ZUNoaWxkcmVuKCk7ICAgICAgICAKICAgICB9
LAogCkBAIC0yMDgsMjUgKzI1MSwyNSBAQCBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90RGlmZkRh
dGFHcmlkLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIGZ1bmN0aW9uIGFnZ3JlZ2F0ZXNSZWNl
aXZlZChjbGFzc2VzKQogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIHZhciBub2RlQ291
bnQgPSAwOwotICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGFkZE5vZGVJZk5vblplcm9EaWZmKG5v
ZGUsIHplcm9EaWZmKQorICAgICAgICAgICAgICAgIHZhciBub2RlcyA9IFtdOworICAgICAgICAg
ICAgICAgIGZvciAodmFyIGNsc3MgaW4gYmFzZUNsYXNzZXMpCisgICAgICAgICAgICAgICAgICAg
IG5vZGVzLnB1c2gobmV3IFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3REaWZmTm9kZSh0aGlzLCBj
bHNzLCBiYXNlQ2xhc3Nlc1tjbHNzXSwgY2xhc3Nlc1tjbHNzXSkpOworICAgICAgICAgICAgICAg
IGZvciAoY2xzcyBpbiBjbGFzc2VzKSB7CisgICAgICAgICAgICAgICAgICAgIGlmICghKGNsc3Mg
aW4gYmFzZUNsYXNzZXMpKQorICAgICAgICAgICAgICAgICAgICAgICAgbm9kZXMucHVzaChuZXcg
V2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdERpZmZOb2RlKHRoaXMsIGNsc3MsIG51bGwsIGNsYXNz
ZXNbY2xzc10pKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgbm9kZUNvdW50
ID0gbm9kZXMubGVuZ3RoOworICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGFkZE5vZGVJZk5vblpl
cm9EaWZmKGJvdW5kTm9kZSwgemVyb0RpZmYpCiAgICAgICAgICAgICAgICAgewogICAgICAgICAg
ICAgICAgICAgICBpZiAoIXplcm9EaWZmKQotICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5h
cHBlbmRDaGlsZChub2RlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYXBwZW5kQ2hp
bGQoYm91bmROb2RlKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKCEtLW5vZGVDb3VudCkKICAg
ICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc29ydGluZ0NoYW5nZWQoKTsKICAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICAgICAgZm9yICh2YXIgY2xzcyBpbiBiYXNlQ2xhc3Nlcykgewot
ICAgICAgICAgICAgICAgICAgICB2YXIgbm9kZSA9IG5ldyBXZWJJbnNwZWN0b3IuSGVhcFNuYXBz
aG90RGlmZk5vZGUodGhpcywgY2xzcywgYmFzZUNsYXNzZXNbY2xzc10sIGNsYXNzZXNbY2xzc10p
OwotICAgICAgICAgICAgICAgICAgICArK25vZGVDb3VudDsKKyAgICAgICAgICAgICAgICBmb3Ig
KHZhciBpID0gMCwgbCA9IG5vZGVzLmxlbmd0aDsgaSA8IGw7ICsraSkgeworICAgICAgICAgICAg
ICAgICAgICB2YXIgbm9kZSA9IG5vZGVzW2ldOwogICAgICAgICAgICAgICAgICAgICBub2RlLmNh
bGN1bGF0ZURpZmYodGhpcywgYWRkTm9kZUlmTm9uWmVyb0RpZmYuYmluZCh0aGlzLCBub2RlKSk7
CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGZvciAoY2xzcyBpbiBjbGFzc2Vz
KSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmICghKGNsc3MgaW4gYmFzZUNsYXNzZXMpKSB7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICB2YXIgbm9kZSA9IG5ldyBXZWJJbnNwZWN0b3IuSGVhcFNu
YXBzaG90RGlmZk5vZGUodGhpcywgY2xzcywgbnVsbCwgY2xhc3Nlc1tjbHNzXSk7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICArK25vZGVDb3VudDsKLSAgICAgICAgICAgICAgICAgICAgICAgIG5v
ZGUuY2FsY3VsYXRlRGlmZih0aGlzLCBhZGROb2RlSWZOb25aZXJvRGlmZi5iaW5kKHRoaXMsIG5v
ZGUpKTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIHRoaXMuc25hcHNob3QuYWdncmVnYXRlcyh0cnVlLCBhZ2dyZWdh
dGVzUmVjZWl2ZWQuYmluZCh0aGlzKSk7CiAgICAgICAgIH0KQEAgLTI0Myw4ICsyODYsNyBAQCBX
ZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90RG9taW5hdG9yc0RhdGFHcmlkID0gZnVuY3Rpb24oKQog
ICAgICAgICBzaGFsbG93U2l6ZTogeyB0aXRsZTogV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTaGFs
bG93IFNpemUiKSwgd2lkdGg6ICI5MHB4Iiwgc29ydGFibGU6IHRydWUgfSwKICAgICAgICAgcmV0
YWluZWRTaXplOiB7IHRpdGxlOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlJldGFpbmVkIFNpemUi
KSwgd2lkdGg6ICI5MHB4Iiwgc29ydDogImRlc2NlbmRpbmciLCBzb3J0YWJsZTogdHJ1ZSB9CiAg
ICAgfTsKLSAgICBXZWJJbnNwZWN0b3IuRGF0YUdyaWQuY2FsbCh0aGlzLCBjb2x1bW5zKTsKLSAg
ICB0aGlzLmFkZEV2ZW50TGlzdGVuZXIoInNvcnRpbmcgY2hhbmdlZCIsIHRoaXMuc29ydCwgdGhp
cyk7CisgICAgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFNvcnRhYmxlRGF0YUdyaWQuY2FsbCh0
aGlzLCBjb2x1bW5zKTsKIH0KIAogV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdERvbWluYXRvcnNE
YXRhR3JpZC5wcm90b3R5cGUgPSB7CkBAIC0yNTcsMTEgKzI5OSwxNiBAQCBXZWJJbnNwZWN0b3Iu
SGVhcFNuYXBzaG90RG9taW5hdG9yc0RhdGFHcmlkLnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhp
cy5zbmFwc2hvdE5vZGVJbmRleCA9IHRoaXMuc25hcHNob3Qucm9vdE5vZGVJbmRleDsKICAgICAg
ICAgdGhpcy5fcHJvdmlkZXIgPSB0aGlzLl9jcmVhdGVQcm92aWRlcihzbmFwc2hvdCwgdGhpcy5z
bmFwc2hvdE5vZGVJbmRleCk7CiAgICAgICAgIHRoaXMuc29ydCgpOworICAgIH0sCisKKyAgICBz
b3J0aW5nQ2hhbmdlZDogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgdGhpcy5zb3J0KCk7CiAg
ICAgfQogfTsKIAogTWl4SW5TbmFwc2hvdE5vZGVGdW5jdGlvbnMoV2ViSW5zcGVjdG9yLkhlYXBT
bmFwc2hvdERvbWluYXRvck9iamVjdE5vZGUucHJvdG90eXBlLCBXZWJJbnNwZWN0b3IuSGVhcFNu
YXBzaG90RG9taW5hdG9yc0RhdGFHcmlkLnByb3RvdHlwZSk7Ci1XZWJJbnNwZWN0b3IuSGVhcFNu
YXBzaG90RG9taW5hdG9yc0RhdGFHcmlkLnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0
b3IuRGF0YUdyaWQucHJvdG90eXBlOworV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdERvbWluYXRv
cnNEYXRhR3JpZC5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hv
dFNvcnRhYmxlRGF0YUdyaWQucHJvdG90eXBlOwogCiBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90
UmV0YWluaW5nUGF0aHNMaXN0ID0gZnVuY3Rpb24oKQogewpAQCAtMjc0LDYgKzMyMSwxMiBAQCBX
ZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90UmV0YWluaW5nUGF0aHNMaXN0ID0gZnVuY3Rpb24oKQog
fQogCiBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90UmV0YWluaW5nUGF0aHNMaXN0LnByb3RvdHlw
ZSA9IHsKKyAgICBkaXNwb3NlOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICBpZiAodGhpcy5w
YXRoRmluZGVyKQorICAgICAgICAgICAgdGhpcy5wYXRoRmluZGVyLmRpc3Bvc2UoKTsKKyAgICB9
LCAKKwogICAgIF9zb3J0RmllbGRzOiBmdW5jdGlvbihzb3J0Q29sdW1uLCBzb3J0QXNjZW5kaW5n
KQogICAgIHsKICAgICAgICAgcmV0dXJuIHsKQEAgLTI4Niw2ICszMzksNyBAQCBXZWJJbnNwZWN0
b3IuSGVhcFNuYXBzaG90UmV0YWluaW5nUGF0aHNMaXN0LnByb3RvdHlwZSA9IHsKICAgICB7CiAg
ICAgICAgIHRoaXMuX3NldFJvb3RDaGlsZHJlbkZvckZpbmRlcigpOwogICAgICAgICB0aGlzLnJl
bW92ZUNoaWxkcmVuKCk7CisgICAgICAgIHRoaXMucmVzZXRTb3J0aW5nQ2FjaGUoKTsKICAgICAg
ICAgdGhpcy5fY291bnRlciA9IDA7CiAgICAgICAgIHRoaXMuc2hvd05leHQodGhpcy5fZGVmYXVs
dFBvcHVsYXRlQ291bnQpOwogICAgIH0sCkBAIC0yOTUsOSArMzQ5LDExIEBAIFdlYkluc3BlY3Rv
ci5IZWFwU25hcHNob3RSZXRhaW5pbmdQYXRoc0xpc3QucHJvdG90eXBlID0gewogICAgICAgICB0
aGlzLnNuYXBzaG90VmlldyA9IHNuYXBzaG90VmlldzsKICAgICAgICAgdGhpcy5fcHJlZml4ID0g
cHJlZml4OwogCi0gICAgICAgIGlmICh0aGlzLnBhdGhGaW5kZXIpCisgICAgICAgIGlmICh0aGlz
LnBhdGhGaW5kZXIpIHsKICAgICAgICAgICAgIHRoaXMuc2VhcmNoQ2FuY2VsbGVkKCk7Ci0gICAg
ICAgIHRoaXMucGF0aEZpbmRlciA9IHNuYXBzaG90LmNyZWF0ZVBhdGhGaW5kZXIobm9kZUluZGV4
KTsKKyAgICAgICAgICAgIHRoaXMucGF0aEZpbmRlci5kaXNwb3NlKCk7CisgICAgICAgIH0KKyAg
ICAgICAgdGhpcy5wYXRoRmluZGVyID0gc25hcHNob3QuY3JlYXRlUGF0aEZpbmRlcihub2RlSW5k
ZXgsICFXZWJJbnNwZWN0b3IuRGV0YWlsZWRIZWFwc2hvdFZpZXcucHJvdG90eXBlLnNob3dIaWRk
ZW5EYXRhKTsKICAgICAgICAgdGhpcy5fcmVzZXRQYXRocygpOwogICAgIH0sCiAKQEAgLTM1NSwx
MyArNDExLDkgQEAgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFJldGFpbmluZ1BhdGhzTGlzdC5w
cm90b3R5cGUgPSB7CiAKICAgICBfc2V0Um9vdENoaWxkcmVuRm9yRmluZGVyOiBmdW5jdGlvbigp
CiAgICAgewotICAgICAgICBmdW5jdGlvbiBGaWx0ZXJET01XaW5kb3cobm9kZSkKLSAgICAgICAg
ewotICAgICAgICAgICAgcmV0dXJuIG5vZGUubmFtZSA9PT0gIkRPTVdpbmRvdyI7Ci0gICAgICAg
IH0KLQogICAgICAgICBpZiAodGhpcy5zbmFwc2hvdFZpZXcuaXNUcmFjaW5nVG9XaW5kb3dPYmpl
Y3RzKQotICAgICAgICAgICAgdGhpcy5wYXRoRmluZGVyLnVwZGF0ZVJvb3RzKEZpbHRlckRPTVdp
bmRvdyk7CisgICAgICAgICAgICB0aGlzLnBhdGhGaW5kZXIudXBkYXRlUm9vdHMoCisgICAgICAg
ICAgICAgICAgImZ1bmN0aW9uIChub2RlKSB7IHJldHVybiBub2RlLm5hbWUgPT09IFwiRE9NV2lu
ZG93XCI7IH0iKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgdGhpcy5wYXRoRmluZGVyLnVw
ZGF0ZVJvb3RzKCk7CiAgICAgfSwKQEAgLTM3Miw4ICs0MjQsOSBAQCBXZWJJbnNwZWN0b3IuSGVh
cFNuYXBzaG90UmV0YWluaW5nUGF0aHNMaXN0LnByb3RvdHlwZSA9IHsKICAgICAgICAgewogICAg
ICAgICAgICAgcmV0dXJuIHNvcnRGdW5jdGlvbihub2RlQS5kYXRhLCBub2RlQi5kYXRhKTsKICAg
ICAgICAgfQotCisgICAgICAgIHRoaXMucmVjdXJzaXZlU29ydGluZ0VudGVyKCk7CiAgICAgICAg
IHRoaXMuc29ydE5vZGVzKERhdGFFeHRyYWN0b3JXcmFwcGVyKTsKKyAgICAgICAgdGhpcy5yZWN1
cnNpdmVTb3J0aW5nTGVhdmUoKTsKICAgICB9CiB9OwogCkBAIC01MDAsMTAgKzU1MywxNCBAQCBX
ZWJJbnNwZWN0b3IuRGV0YWlsZWRIZWFwc2hvdFZpZXcgPSBmdW5jdGlvbihwYXJlbnQsIHByb2Zp
bGUpCiBXZWJJbnNwZWN0b3IuRGV0YWlsZWRIZWFwc2hvdFZpZXcucHJvdG90eXBlID0gewogICAg
IGRpc3Bvc2U6IGZ1bmN0aW9uKCkKICAgICB7Ci0gICAgICAgIGlmICh0aGlzLl9wcm9maWxlV3Jh
cHBlcikKLSAgICAgICAgICAgIHRoaXMuX3Byb2ZpbGVXcmFwcGVyLmRpc3Bvc2UoKTsKLSAgICAg
ICAgaWYgKHRoaXMuX2Jhc2VQcm9maWxlV3JhcHBlcikKLSAgICAgICAgICAgIHRoaXMuX2Jhc2VQ
cm9maWxlV3JhcHBlci5kaXNwb3NlKCk7CisgICAgICAgIHRoaXMucHJvZmlsZVdyYXBwZXIuZGlz
cG9zZSgpOworICAgICAgICBpZiAodGhpcy5iYXNlUHJvZmlsZSkKKyAgICAgICAgICAgIHRoaXMu
YmFzZVByb2ZpbGVXcmFwcGVyLmRpc3Bvc2UoKTsKKyAgICAgICAgdGhpcy5jb250YWlubWVudERh
dGFHcmlkLmRpc3Bvc2UoKTsKKyAgICAgICAgdGhpcy5jb25zdHJ1Y3RvcnNEYXRhR3JpZC5kaXNw
b3NlKCk7CisgICAgICAgIHRoaXMuZGlmZkRhdGFHcmlkLmRpc3Bvc2UoKTsKKyAgICAgICAgdGhp
cy5kb21pbmF0b3JEYXRhR3JpZC5kaXNwb3NlKCk7CisgICAgICAgIHRoaXMucmV0YWlubWVudERh
dGFHcmlkLmRpc3Bvc2UoKTsKICAgICB9LAogCiAgICAgZ2V0IHN0YXR1c0Jhckl0ZW1zKCkKQEAg
LTUxOCw5ICs1NzUsNyBAQCBXZWJJbnNwZWN0b3IuRGV0YWlsZWRIZWFwc2hvdFZpZXcucHJvdG90
eXBlID0gewogCiAgICAgZ2V0IHByb2ZpbGVXcmFwcGVyKCkKICAgICB7Ci0gICAgICAgIGlmICgh
dGhpcy5fcHJvZmlsZVdyYXBwZXIpCi0gICAgICAgICAgICB0aGlzLl9wcm9maWxlV3JhcHBlciA9
IHRoaXMucHJvZmlsZS5wcm94eTsKLSAgICAgICAgcmV0dXJuIHRoaXMuX3Byb2ZpbGVXcmFwcGVy
OworICAgICAgICByZXR1cm4gdGhpcy5wcm9maWxlLnByb3h5OwogICAgIH0sCiAKICAgICBnZXQg
YmFzZVByb2ZpbGUoKQpAQCAtNTMwLDkgKzU4NSw3IEBAIFdlYkluc3BlY3Rvci5EZXRhaWxlZEhl
YXBzaG90Vmlldy5wcm90b3R5cGUgPSB7CiAKICAgICBnZXQgYmFzZVByb2ZpbGVXcmFwcGVyKCkK
ICAgICB7Ci0gICAgICAgIGlmICghdGhpcy5fYmFzZVByb2ZpbGVXcmFwcGVyKQotICAgICAgICAg
ICAgdGhpcy5fYmFzZVByb2ZpbGVXcmFwcGVyID0gdGhpcy5iYXNlUHJvZmlsZS5wcm94eTsKLSAg
ICAgICAgcmV0dXJuIHRoaXMuX2Jhc2VQcm9maWxlV3JhcHBlcjsKKyAgICAgICAgcmV0dXJuIHRo
aXMuYmFzZVByb2ZpbGUucHJveHk7CiAgICAgfSwKIAogICAgIHNob3c6IGZ1bmN0aW9uKHBhcmVu
dEVsZW1lbnQpCkBAIC03MjMsMTEgKzc3Niw3IEBAIFdlYkluc3BlY3Rvci5EZXRhaWxlZEhlYXBz
aG90Vmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgIHsKICAgICAgICAgICAgIGRlbGV0ZSB0aGlz
Ll9iYXNlUHJvZmlsZVdyYXBwZXI7CiAgICAgICAgICAgICB0aGlzLmJhc2VQcm9maWxlLl9sYXN0
U2hvd24gPSBEYXRlLm5vdygpOwotICAgICAgICAgICAgV2ViSW5zcGVjdG9yLlBsZWFzZVdhaXRN
ZXNzYWdlLnByb3RvdHlwZS5zdGFydEFjdGlvbih0aGlzLmN1cnJlbnRWaWV3LmVsZW1lbnQsIHNo
b3dEaWZmRGF0YS5iaW5kKHRoaXMpKTsKLSAgICAgICAgfQotCi0gICAgICAgIGZ1bmN0aW9uIHNo
b3dEaWZmRGF0YSgpCi0gICAgICAgIHsKKyAgICAgICAgICAgIFdlYkluc3BlY3Rvci5QbGVhc2VX
YWl0TWVzc2FnZS5wcm90b3R5cGUuc2hvd0FuZFdhaXRGb3IodGhpcy5jdXJyZW50Vmlldy5lbGVt
ZW50LCB0aGlzLmRpZmZEYXRhR3JpZCwgInNvcnRpbmcgY29tcGxldGUiKTsKICAgICAgICAgICAg
IHRoaXMuZGlmZkRhdGFHcmlkLnNldEJhc2VEYXRhU291cmNlKHRoaXMuYmFzZVByb2ZpbGVXcmFw
cGVyKTsKICAgICAgICAgfQogCkBAIC04MDUsMTMgKzg1NCwxMCBAQCBXZWJJbnNwZWN0b3IuRGV0
YWlsZWRIZWFwc2hvdFZpZXcucHJvdG90eXBlID0gewogICAgICAgICAgICAgfQogICAgICAgICB9
IGVsc2UgewogICAgICAgICAgICAgdGhpcy5iYXNlU2VsZWN0RWxlbWVudC5hZGRTdHlsZUNsYXNz
KCJoaWRkZW4iKTsKLSAgICAgICAgICAgIGlmICghdGhpcy5kYXRhR3JpZC5zbmFwc2hvdFZpZXcp
Ci0gICAgICAgICAgICAgICAgV2ViSW5zcGVjdG9yLlBsZWFzZVdhaXRNZXNzYWdlLnByb3RvdHlw
ZS5zdGFydEFjdGlvbih0aGlzLmN1cnJlbnRWaWV3LmVsZW1lbnQsIGxvYWREYXRhLmJpbmQodGhp
cykpOwotICAgICAgICB9Ci0KLSAgICAgICAgZnVuY3Rpb24gbG9hZERhdGEoKQotICAgICAgICB7
Ci0gICAgICAgICAgICB0aGlzLmRhdGFHcmlkLnNldERhdGFTb3VyY2UodGhpcywgdGhpcy5wcm9m
aWxlV3JhcHBlcik7CisgICAgICAgICAgICBpZiAoIXRoaXMuZGF0YUdyaWQuc25hcHNob3RWaWV3
KSB7CisgICAgICAgICAgICAgICAgV2ViSW5zcGVjdG9yLlBsZWFzZVdhaXRNZXNzYWdlLnByb3Rv
dHlwZS5zaG93QW5kV2FpdEZvcih0aGlzLmN1cnJlbnRWaWV3LmVsZW1lbnQsIHRoaXMuZGF0YUdy
aWQsICJzb3J0aW5nIGNvbXBsZXRlIik7CisgICAgICAgICAgICAgICAgdGhpcy5kYXRhR3JpZC5z
ZXREYXRhU291cmNlKHRoaXMsIHRoaXMucHJvZmlsZVdyYXBwZXIpOworICAgICAgICAgICAgfQog
ICAgICAgICB9CiAKICAgICAgICAgaWYgKCF0aGlzLmN1cnJlbnRRdWVyeSB8fCAhdGhpcy5fc2Vh
cmNoRmluaXNoZWRDYWxsYmFjayB8fCAhdGhpcy5fc2VhcmNoUmVzdWx0cykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSGVhcFNuYXBzaG90LmpzIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9IZWFwU25hcHNob3QuanMKaW5kZXggNzgx
YTEzYi4uMjc3ZmRhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9IZWFwU25hcHNob3QuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9IZWFwU25hcHNob3QuanMKQEAgLTI4LDYgKzI4LDI3IEBACiAgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgog
ICovCiAKK1dlYkluc3BlY3Rvci5IZWFwU25hcHNob3RMb2FkZXIgPSBmdW5jdGlvbigpCit7Cisg
ICAgdGhpcy5fanNvbiA9ICIiOworfQorCitXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90TG9hZGVy
LnByb3RvdHlwZSA9IHsKKyAgICBmaW5pc2hMb2FkaW5nOiBmdW5jdGlvbigpCisgICAgeworICAg
ICAgICBpZiAoIXRoaXMuX2pzb24pCisgICAgICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgICAg
dmFyIHJhd1NuYXBzaG90ID0gSlNPTi5wYXJzZSh0aGlzLl9qc29uKTsKKyAgICAgICAgdGhpcy5f
anNvbiA9ICIiOworICAgICAgICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3Qo
cmF3U25hcHNob3QpOworICAgIH0sCisKKyAgICBwdXNoSlNPTkNodW5rOiBmdW5jdGlvbihjaHVu
aykKKyAgICB7CisgICAgICAgIHRoaXMuX2pzb24gKz0gY2h1bms7CisgICAgfQorfTsKKwogV2Vi
SW5zcGVjdG9yLkhlYXBTbmFwc2hvdEFycmF5U2xpY2UgPSBmdW5jdGlvbihzbmFwc2hvdCwgYXJy
YXlOYW1lLCBzdGFydCwgZW5kKQogewogICAgIC8vIE5vdGU6IHdlIGRvbid0IHJlZmVyZW5jZSBz
bmFwc2hvdCBjb250ZW50cyBkaXJlY3RseSB0byBhdm9pZApAQCAtNTI2LDcgKzU0Nyw2IEBAIFdl
Ykluc3BlY3Rvci5IZWFwU25hcHNob3QucHJvdG90eXBlID0gewogICAgIHsKICAgICAgICAgZGVs
ZXRlIHRoaXMuX25vZGVzOwogICAgICAgICBkZWxldGUgdGhpcy5fc3RyaW5nczsKLSAgICAgICAg
ZGVsZXRlIHRoaXMuX2lkc0xpc3Q7CiAgICAgICAgIGRlbGV0ZSB0aGlzLl9yZXRhaW5lcnM7CiAg
ICAgICAgIGRlbGV0ZSB0aGlzLl9yZXRhaW5lckluZGV4OwogICAgICAgICBkZWxldGUgdGhpcy5f
bm9kZUluZGV4OwpAQCAtNTc5LDE4ICs1OTksNiBAQCBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90
LnByb3RvdHlwZSA9IHsKICAgICAgICAgcmV0dXJuIHRoaXMucm9vdE5vZGUucmV0YWluZWRTaXpl
OwogICAgIH0sCiAKLSAgICBoYXNJZDogZnVuY3Rpb24oaWQpCi0gICAgewotICAgICAgICByZXR1
cm4gdGhpcy5ub2RlSWRzLmJpbmFyeUluZGV4T2YoaWQsIHRoaXMuX251bWJlcnNDb21wYXJhdG9y
KSA+PSAwOwotICAgIH0sCi0KLSAgICBnZXQgbm9kZUlkcygpCi0gICAgewotICAgICAgICBpZiAo
IXRoaXMuX2lkc0xpc3QpCi0gICAgICAgICAgICB0aGlzLl9idWlsZElkc0xpc3QoKTsKLSAgICAg
ICAgcmV0dXJuIHRoaXMuX2lkc0xpc3Q7Ci0gICAgfSwKLQogICAgIF9yZXRhaW5lcnNGb3JOb2Rl
OiBmdW5jdGlvbihub2RlKQogICAgIHsKICAgICAgICAgaWYgKCF0aGlzLl9yZXRhaW5lcnMpCkBA
IC02OTEsMTcgKzY5OSw2IEBAIFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3QucHJvdG90eXBlID0g
ewogICAgICAgICB0aGlzLl9hZ2dyZWdhdGVzV2l0aEluZGV4ZXMgPSB0cnVlOwogICAgIH0sCiAK
LSAgICBfYnVpbGRJZHNMaXN0OiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICB2YXIgY291bnQg
PSAwOwotICAgICAgICBmb3IgKHZhciBub2Rlc0l0ZXIgPSB0aGlzLl9hbGxOb2Rlczsgbm9kZXNJ
dGVyLmhhc05leHQoKTsgbm9kZXNJdGVyLm5leHQoKSwgKytjb3VudCk7Ci0gICAgICAgIHRoaXMu
X2lkc0xpc3QgPSBuZXcgQXJyYXkoY291bnQpOwotICAgICAgICBjb3VudCA9IDA7Ci0gICAgICAg
IGZvciAobm9kZXNJdGVyID0gdGhpcy5fYWxsTm9kZXM7IG5vZGVzSXRlci5oYXNOZXh0KCk7IG5v
ZGVzSXRlci5uZXh0KCksICsrY291bnQpCi0gICAgICAgICAgICB0aGlzLl9pZHNMaXN0W2NvdW50
XSA9IG5vZGVzSXRlci5ub2RlLmlkOwotICAgICAgICB0aGlzLl9pZHNMaXN0LnNvcnQodGhpcy5f
bnVtYmVyc0NvbXBhcmF0b3IpOwotICAgIH0sCi0KICAgICBfYnVpbGROb2RlSW5kZXg6IGZ1bmN0
aW9uKCkKICAgICB7CiAgICAgICAgIHZhciBjb3VudCA9IDA7CkBAIC03NzUsMTMgKzc3Miw0NiBA
QCBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90LnByb3RvdHlwZSA9IHsKICAgICAgICAgcmV0dXJu
IHRoaXMuX2Jhc2VOb2RlSWRzW2Jhc2VTbmFwc2hvdElkXVtjbGFzc05hbWVdLmJpbmFyeUluZGV4
T2Yobm9kZUlkLCB0aGlzLl9udW1iZXJzQ29tcGFyYXRvcikgIT09IC0xOwogICAgIH0sCiAKLSAg
ICB1cGRhdGVCYXNlTm9kZUlkczogZnVuY3Rpb24oYmFzZVNuYXBzaG90SWQsIGNsYXNzTmFtZSwg
bm9kZUlkcykKKyAgICBwdXNoQmFzZUlkczogZnVuY3Rpb24oYmFzZVNuYXBzaG90SWQsIGNsYXNz
TmFtZSwgbm9kZUlkcykKICAgICB7CiAgICAgICAgIGlmICghdGhpcy5fYmFzZU5vZGVJZHMpCiAg
ICAgICAgICAgICB0aGlzLl9iYXNlTm9kZUlkcyA9IFtdOwogICAgICAgICBpZiAoIXRoaXMuX2Jh
c2VOb2RlSWRzW2Jhc2VTbmFwc2hvdElkXSkKICAgICAgICAgICAgIHRoaXMuX2Jhc2VOb2RlSWRz
W2Jhc2VTbmFwc2hvdElkXSA9IHt9OwogICAgICAgICB0aGlzLl9iYXNlTm9kZUlkc1tiYXNlU25h
cHNob3RJZF1bY2xhc3NOYW1lXSA9IG5vZGVJZHM7CisgICAgfSwKKworICAgIGNyZWF0ZURpZmY6
IGZ1bmN0aW9uKGNsYXNzTmFtZSkKKyAgICB7CisgICAgICAgIHJldHVybiBuZXcgV2ViSW5zcGVj
dG9yLkhlYXBTbmFwc2hvdHNEaWZmKHRoaXMsIGNsYXNzTmFtZSk7CisgICAgfSwKKworICAgIF9w
YXJzZUZpbHRlcjogZnVuY3Rpb24oZmlsdGVyKQorICAgIHsKKyAgICAgICAgaWYgKCFmaWx0ZXIp
CisgICAgICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgICAgdmFyIHBhcnNlZEZpbHRlciA9IGV2
YWwoIihmdW5jdGlvbigpe3JldHVybiAiICsgZmlsdGVyICsgIn0pKCkiKTsKKyAgICAgICAgcmV0
dXJuIHBhcnNlZEZpbHRlci5iaW5kKHRoaXMpOworICAgIH0sCisKKyAgICBjcmVhdGVFZGdlc1By
b3ZpZGVyOiBmdW5jdGlvbihub2RlSW5kZXgsIGZpbHRlcikKKyAgICB7CisgICAgICAgIHJldHVy
biBuZXcgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdEVkZ2VzUHJvdmlkZXIodGhpcywgbm9kZUlu
ZGV4LCB0aGlzLl9wYXJzZUZpbHRlcihmaWx0ZXIpKTsKKyAgICB9LAorCisgICAgY3JlYXRlTm9k
ZXNQcm92aWRlcjogZnVuY3Rpb24oZmlsdGVyKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG5ldyBX
ZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90Tm9kZXNQcm92aWRlcih0aGlzLCB0aGlzLl9wYXJzZUZp
bHRlcihmaWx0ZXIpKTsKKyAgICB9LAorCisgICAgY3JlYXRlUGF0aEZpbmRlcjogZnVuY3Rpb24o
dGFyZ2V0Tm9kZUluZGV4LCBza2lwSGlkZGVuKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG5ldyBX
ZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90UGF0aEZpbmRlcih0aGlzLCB0YXJnZXROb2RlSW5kZXgs
IHNraXBIaWRkZW4pOworICAgIH0sCisKKyAgICB1cGRhdGVTdGF0aWNEYXRhOiBmdW5jdGlvbigp
CisgICAgeworICAgICAgICByZXR1cm4ge25vZGVDb3VudDogdGhpcy5ub2RlQ291bnQsIHJvb3RO
b2RlSW5kZXg6IHRoaXMuX3Jvb3ROb2RlSW5kZXgsIHRvdGFsU2l6ZTogdGhpcy50b3RhbFNpemUs
IHVpZDogdGhpcy51aWR9OwogICAgIH0KIH07CiAKQEAgLTg1MSw2ICs4ODEsMjUgQEAgV2ViSW5z
cGVjdG9yLkhlYXBTbmFwc2hvdEZpbHRlcmVkT3JkZXJlZEl0ZXJhdG9yLnByb3RvdHlwZSA9IHsK
ICAgICB7CiAgICAgICAgICsrdGhpcy5fcG9zaXRpb247CiAgICAgfSwKKworICAgIHNlcmlhbGl6
ZU5leHRJdGVtczogZnVuY3Rpb24oY291bnQpCisgICAgeworICAgICAgICB2YXIgcmVzdWx0ID0g
bmV3IEFycmF5KGNvdW50KTsKKyAgICAgICAgZm9yICh2YXIgaSA9IDAgOyBpIDwgY291bnQgJiYg
dGhpcy5oYXNOZXh0KCk7ICsraSwgdGhpcy5uZXh0KCkpCisgICAgICAgICAgICByZXN1bHRbaV0g
PSB0aGlzLl9zZXJpYWxpemUodGhpcy5pdGVtKTsKKyAgICAgICAgcmVzdWx0Lmxlbmd0aCA9IGk7
CisgICAgICAgIHJlc3VsdC5oYXNOZXh0ID0gdGhpcy5oYXNOZXh0KCk7CisgICAgICAgIHJlc3Vs
dC50b3RhbExlbmd0aCA9IHRoaXMubGVuZ3RoOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAg
IH0sCisKKyAgICBzb3J0QW5kUmV3aW5kOiBmdW5jdGlvbihjb21wYXJhdG9yKQorICAgIHsKKyAg
ICAgICAgdmFyIHJlc3VsdCA9IHRoaXMuc29ydChjb21wYXJhdG9yKTsKKyAgICAgICAgaWYgKHJl
c3VsdCkKKyAgICAgICAgICAgIHRoaXMuZmlyc3QoKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsK
KyAgICB9CiB9CiAKIFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RGaWx0ZXJlZE9yZGVyZWRJdGVy
YXRvci5wcm90b3R5cGUuY3JlYXRlQ29tcGFyYXRvciA9IGZ1bmN0aW9uKGZpZWxkTmFtZXMpCkBA
IC04NjYsNiArOTE1LDExIEBAIFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RFZGdlc1Byb3ZpZGVy
ID0gZnVuY3Rpb24oc25hcHNob3QsIG5vZGVJbmRleCwgZmlsdGVyKQogfQogCiBXZWJJbnNwZWN0
b3IuSGVhcFNuYXBzaG90RWRnZXNQcm92aWRlci5wcm90b3R5cGUgPSB7CisgICAgX3NlcmlhbGl6
ZTogZnVuY3Rpb24oZWRnZSkKKyAgICB7CisgICAgICAgIHJldHVybiB7bmFtZTogZWRnZS5uYW1l
LCBub2RlOiBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90Tm9kZXNQcm92aWRlci5wcm90b3R5cGUu
X3NlcmlhbGl6ZShlZGdlLm5vZGUpLCBub2RlSW5kZXg6IGVkZ2Uubm9kZUluZGV4LCB0eXBlOiBl
ZGdlLnR5cGV9OworICAgIH0sCisKICAgICBzb3J0OiBmdW5jdGlvbihjb21wYXJhdG9yKQogICAg
IHsKICAgICAgICAgaWYgKHRoaXMuX2xhc3RDb21wYXJhdG9yID09PSBjb21wYXJhdG9yKQpAQCAt
OTQ5LDYgKzEwMDMsMTEgQEAgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdE5vZGVzUHJvdmlkZXIg
PSBmdW5jdGlvbihzbmFwc2hvdCwgZmlsdGVyKQogfQogCiBXZWJJbnNwZWN0b3IuSGVhcFNuYXBz
aG90Tm9kZXNQcm92aWRlci5wcm90b3R5cGUgPSB7CisgICAgX3NlcmlhbGl6ZTogZnVuY3Rpb24o
bm9kZSkKKyAgICB7CisgICAgICAgIHJldHVybiB7aWQ6IG5vZGUuaWQsIG5hbWU6IG5vZGUubmFt
ZSwgbm9kZUluZGV4OiBub2RlLm5vZGVJbmRleCwgcmV0YWluZWRTaXplOiBub2RlLnJldGFpbmVk
U2l6ZSwgc2VsZlNpemU6IG5vZGUuc2VsZlNpemUsIHR5cGU6IG5vZGUudHlwZX07CisgICAgfSwK
KwogICAgIHNvcnQ6IGZ1bmN0aW9uKGNvbXBhcmF0b3IpCiAgICAgewogICAgICAgICBpZiAodGhp
cy5fbGFzdENvbXBhcmF0b3IgPT09IGNvbXBhcmF0b3IpCkBAIC05ODksMTQgKzEwNDgsMTQgQEAg
V2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdE5vZGVzUHJvdmlkZXIucHJvdG90eXBlID0gewogCiBX
ZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90Tm9kZXNQcm92aWRlci5wcm90b3R5cGUuX19wcm90b19f
ID0gV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdEZpbHRlcmVkT3JkZXJlZEl0ZXJhdG9yLnByb3Rv
dHlwZTsKIAotV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFBhdGhGaW5kZXIgPSBmdW5jdGlvbihz
bmFwc2hvdCwgdGFyZ2V0Tm9kZUluZGV4KQorV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFBhdGhG
aW5kZXIgPSBmdW5jdGlvbihzbmFwc2hvdCwgdGFyZ2V0Tm9kZUluZGV4LCBza2lwSGlkZGVuKQog
ewogICAgIHRoaXMuX3NuYXBzaG90ID0gc25hcHNob3Q7CiAgICAgdGhpcy5fbWF4TGVuZ3RoID0g
MTsKICAgICB0aGlzLl9sZW5ndGhMaW1pdCA9IDE1OwogICAgIHRoaXMuX3RhcmdldE5vZGVJbmRl
eCA9IHRhcmdldE5vZGVJbmRleDsKICAgICB0aGlzLl9jdXJyZW50UGF0aCA9IG51bGw7Ci0gICAg
dGhpcy5fc2tpcEhpZGRlbiA9ICFXZWJJbnNwZWN0b3IuRGV0YWlsZWRIZWFwc2hvdFZpZXcucHJv
dG90eXBlLnNob3dIaWRkZW5EYXRhOworICAgIHRoaXMuX3NraXBIaWRkZW4gPSBza2lwSGlkZGVu
OwogICAgIHRoaXMuX3Jvb3RDaGlsZHJlbiA9IHRoaXMuX2ZpbGxSb290Q2hpbGRyZW4oKTsKIH0K
IApAQCAtMTAyMCw3ICsxMDc5LDE2IEBAIFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RQYXRoRmlu
ZGVyLnByb3RvdHlwZSA9IHsKIAogICAgIHVwZGF0ZVJvb3RzOiBmdW5jdGlvbihmaWx0ZXIpCiAg
ICAgeworICAgICAgICBpZiAoZmlsdGVyKQorICAgICAgICAgICAgZmlsdGVyID0gZXZhbCgiKGZ1
bmN0aW9uKCl7cmV0dXJuICIgKyBmaWx0ZXIgKyAifSkoKSIpOwogICAgICAgICB0aGlzLl9yb290
Q2hpbGRyZW4gPSB0aGlzLl9maWxsUm9vdENoaWxkcmVuKGZpbHRlcik7ICAKKyAgICAgICAgdGhp
cy5fcmVzZXQoKTsKKyAgICB9LAorCisgICAgX3Jlc2V0OiBmdW5jdGlvbigpCisgICAgeworICAg
ICAgICB0aGlzLl9tYXhMZW5ndGggPSAxOworICAgICAgICB0aGlzLl9jdXJyZW50UGF0aCA9IG51
bGw7CiAgICAgfSwKIAogICAgIF9maWxsUm9vdENoaWxkcmVuOiBmdW5jdGlvbihmaWx0ZXIpCkBA
IC0xMTUzLDI0ICsxMjIxLDE1IEBAIFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RzRGlmZiA9IGZ1
bmN0aW9uKHNuYXBzaG90LCBjbGFzc05hbWUpCiB9OwogCiBXZWJJbnNwZWN0b3IuSGVhcFNuYXBz
aG90c0RpZmYucHJvdG90eXBlID0gewotICAgIHNldCBiYXNlSWRzKGJhc2VJZHMpCi0gICAgewot
ICAgICAgICB0aGlzLl9iYXNlSWRzID0gYmFzZUlkczsKLSAgICB9LAotCi0gICAgc2V0IGJhc2VT
ZWxmU2l6ZXMoYmFzZVNlbGZTaXplcykKLSAgICB7Ci0gICAgICAgIHRoaXMuX2Jhc2VTZWxmU2l6
ZXMgPSBiYXNlU2VsZlNpemVzOwotICAgIH0sCi0KICAgICBjYWxjdWxhdGU6IGZ1bmN0aW9uKCkK
ICAgICB7Ci0gICAgICAgIHZhciBpbmRleGVzID0gdGhpcy5fc25hcHNob3QuYWdncmVnYXRlcyh0
cnVlKVt0aGlzLl9jbGFzc05hbWVdLmlkeHM7CisgICAgICAgIHZhciBhZ2dyZWdhdGVzID0gdGhp
cy5fc25hcHNob3QuYWdncmVnYXRlcyh0cnVlKVt0aGlzLl9jbGFzc05hbWVdOworICAgICAgICB2
YXIgaW5kZXhlcyA9IGFnZ3JlZ2F0ZXMgPyBhZ2dyZWdhdGVzLmlkeHMgOiBbXTsKICAgICAgICAg
dmFyIGkgPSAwLCBsID0gdGhpcy5fYmFzZUlkcy5sZW5ndGg7CiAgICAgICAgIHZhciBqID0gMCwg
bSA9IGluZGV4ZXMubGVuZ3RoOwogICAgICAgICB2YXIgZGlmZiA9IHsgYWRkZWRDb3VudDogMCwg
cmVtb3ZlZENvdW50OiAwLCBhZGRlZFNpemU6IDAsIHJlbW92ZWRTaXplOiAwIH07CiAgICAgICAg
ICAgIAotICAgICAgICB2YXIgbm9kZUIgPSBuZXcgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdE5v
ZGUodGhpcy5fc25hcHNob3QpOworICAgICAgICB2YXIgbm9kZUIgPSBuZXcgV2ViSW5zcGVjdG9y
LkhlYXBTbmFwc2hvdE5vZGUodGhpcy5fc25hcHNob3QsIGluZGV4ZXNbal0pOwogICAgICAgICB3
aGlsZSAoaSA8IGwgJiYgaiA8IG0pIHsKICAgICAgICAgICAgIHZhciBub2RlQUlkID0gdGhpcy5f
YmFzZUlkc1tpXTsKICAgICAgICAgICAgIGlmIChub2RlQUlkIDwgbm9kZUIuaWQpIHsKQEAgLTEx
OTksNSArMTI1OCwxNSBAQCBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90c0RpZmYucHJvdG90eXBl
ID0gewogICAgICAgICBkaWZmLmNvdW50RGVsdGEgPSBkaWZmLmFkZGVkQ291bnQgLSBkaWZmLnJl
bW92ZWRDb3VudDsKICAgICAgICAgZGlmZi5zaXplRGVsdGEgPSBkaWZmLmFkZGVkU2l6ZSAtIGRp
ZmYucmVtb3ZlZFNpemU7CiAgICAgICAgIHJldHVybiBkaWZmOworICAgIH0sCisKKyAgICBwdXNo
QmFzZUlkczogZnVuY3Rpb24oYmFzZUlkcykKKyAgICB7CisgICAgICAgIHRoaXMuX2Jhc2VJZHMg
PSBiYXNlSWRzOworICAgIH0sCisKKyAgICBwdXNoQmFzZVNlbGZTaXplczogZnVuY3Rpb24oYmFz
ZVNlbGZTaXplcykKKyAgICB7CisgICAgICAgIHRoaXMuX2Jhc2VTZWxmU2l6ZXMgPSBiYXNlU2Vs
ZlNpemVzOwogICAgIH0KIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL0hlYXBTbmFwc2hvdFByb3h5LmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9IZWFwU25hcHNob3RQcm94eS5qcwppbmRleCBiYjBhN2VjLi45ODYzZDg5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0hlYXBTbmFwc2hv
dFByb3h5LmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSGVhcFNu
YXBzaG90UHJveHkuanMKQEAgLTI4LDI2MCArMjgsNDA5IEBACiAgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICov
CiAKLVdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RQcm94eSA9IGZ1bmN0aW9uKCkKLXsgICAKLSAg
ICB0aGlzLl9zbmFwc2hvdCA9IG51bGw7CitXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90UmVhbFdv
cmtlciA9IGZ1bmN0aW9uKCkKK3sKKyAgICB0aGlzLl93b3JrZXIgPSBuZXcgV29ya2VyKCJIZWFw
U25hcHNob3RXb3JrZXIuanMiKTsKKyAgICB0aGlzLl93b3JrZXIuYWRkRXZlbnRMaXN0ZW5lcigi
bWVzc2FnZSIsIHRoaXMuX21lc3NhZ2VSZWNlaXZlZC5iaW5kKHRoaXMpLCBmYWxzZSk7CiB9CiAK
LVdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RQcm94eS5wcm90b3R5cGUgPSB7Ci0gICAgX2ludm9r
ZUdldHRlcjogZnVuY3Rpb24oZ2V0dGVyTmFtZSwgY2FsbGJhY2spCitXZWJJbnNwZWN0b3IuSGVh
cFNuYXBzaG90UmVhbFdvcmtlci5wcm90b3R5cGUgPSB7CisgICAgX21lc3NhZ2VSZWNlaXZlZDog
ZnVuY3Rpb24oZXZlbnQpCisgICAgeworICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3Rl
bmVycygibWVzc2FnZSIsIGV2ZW50LmRhdGEpOworICAgIH0sCisKKyAgICBwb3N0TWVzc2FnZTog
ZnVuY3Rpb24obWVzc2FnZSkKKyAgICB7CisgICAgICAgIHRoaXMuX3dvcmtlci5wb3N0TWVzc2Fn
ZShtZXNzYWdlKTsKKyAgICB9LAorCisgICAgdGVybWluYXRlOiBmdW5jdGlvbigpCisgICAgewor
ICAgICAgICB0aGlzLl93b3JrZXIudGVybWluYXRlKCk7CisgICAgfQorfTsKKworV2ViSW5zcGVj
dG9yLkhlYXBTbmFwc2hvdFJlYWxXb3JrZXIucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3Bl
Y3Rvci5PYmplY3QucHJvdG90eXBlOworCitXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90RmFrZVdv
cmtlciA9IGZ1bmN0aW9uKCkKK3sKKyAgICB0aGlzLl9kaXNwYXRjaGVyID0gbmV3IFdlYkluc3Bl
Y3Rvci5IZWFwU25hcHNob3RXb3JrZXJEaXNwYXRjaGVyKHdpbmRvdywgdGhpcy5fcG9zdE1lc3Nh
Z2VGcm9tV29ya2VyLmJpbmQodGhpcykpOworfQorCitXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90
RmFrZVdvcmtlci5wcm90b3R5cGUgPSB7CisgICAgcG9zdE1lc3NhZ2U6IGZ1bmN0aW9uKG1lc3Nh
Z2UpCiAgICAgewotICAgICAgICBmdW5jdGlvbiByZXR1cm5SZXN1bHQoKQorICAgICAgICBmdW5j
dGlvbiBkaXNwYXRjaCgpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNhbGxiYWNrKHRoaXMuX3Nu
YXBzaG90W2dldHRlck5hbWVdKTsKKyAgICAgICAgICAgIHRoaXMuX2Rpc3BhdGNoZXIuZGlzcGF0
Y2hNZXNzYWdlKHtkYXRhOiBtZXNzYWdlfSk7CiAgICAgICAgIH0KLSAgICAgICAgc2V0VGltZW91
dChyZXR1cm5SZXN1bHQuYmluZCh0aGlzKSwgMCk7CisgICAgICAgIHNldFRpbWVvdXQoZGlzcGF0
Y2guYmluZCh0aGlzKSwgMCk7CiAgICAgfSwKIAotICAgIGFnZ3JlZ2F0ZXM6IGZ1bmN0aW9uKHdp
dGhOb2RlSW5kZXhlcywgY2FsbGJhY2spCisgICAgdGVybWluYXRlOiBmdW5jdGlvbigpCisgICAg
eworICAgICAgICB0aGlzLl9kaXNwYXRjaGVyID0gbnVsbDsKKyAgICB9LAorCisgICAgX3Bvc3RN
ZXNzYWdlRnJvbVdvcmtlcjogZnVuY3Rpb24obWVzc2FnZSkKICAgICB7Ci0gICAgICAgIGZ1bmN0
aW9uIHJldHVyblJlc3VsdCgpCisgICAgICAgIGZ1bmN0aW9uIHNlbmQoKQogICAgICAgICB7Ci0g
ICAgICAgICAgICBjYWxsYmFjayh0aGlzLl9zbmFwc2hvdC5hZ2dyZWdhdGVzKHdpdGhOb2RlSW5k
ZXhlcykpOworICAgICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoIm1lc3Nh
Z2UiLCBtZXNzYWdlKTsKICAgICAgICAgfQotICAgICAgICBzZXRUaW1lb3V0KHJldHVyblJlc3Vs
dC5iaW5kKHRoaXMpLCAwKTsKKyAgICAgICAgc2V0VGltZW91dChzZW5kLmJpbmQodGhpcyksIDAp
OworICAgIH0KK307CisKK1dlYkluc3BlY3Rvci5IZWFwU25hcHNob3RGYWtlV29ya2VyLnByb3Rv
dHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuT2JqZWN0LnByb3RvdHlwZTsKKworV2ViSW5z
cGVjdG9yLkhlYXBTbmFwc2hvdFdvcmtlciA9IGZ1bmN0aW9uKCkKK3sKKyAgICB0aGlzLl9uZXh0
T2JqZWN0SWQgPSAxOworICAgIHRoaXMuX25leHRDYWxsSWQgPSAxOworICAgIHRoaXMuX2NhbGxi
YWNrcyA9IFtdOworICAgIC8vIFRoZXJlIGlzIG5vIHN1cHBvcnQgZm9yIHdvcmtlcnMgaW4gQ2hy
b21pdW0gRFJULgorICAgIHRoaXMuX3dvcmtlciA9IHR5cGVvZiBJbnNwZWN0b3JUZXN0ID09PSAi
dW5kZWZpbmVkIiA/IG5ldyBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90UmVhbFdvcmtlcigpIDog
bmV3IFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RGYWtlV29ya2VyKCk7CisgICAgdGhpcy5fd29y
a2VyLmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLCB0aGlzLl9tZXNzYWdlUmVjZWl2ZWQuYmlu
ZCh0aGlzKSwgZmFsc2UpOworfQorCitXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90V29ya2VyLnBy
b3RvdHlwZSA9IHsKKyAgICBjcmVhdGVPYmplY3Q6IGZ1bmN0aW9uKGNvbnN0cnVjdG9yTmFtZSkK
KyAgICB7CisgICAgICAgIHZhciBwcm94eUNvbnN0cnVjdG9yRnVuY3Rpb24gPSB0aGlzLl9maW5k
RnVuY3Rpb24oY29uc3RydWN0b3JOYW1lICsgIlByb3h5Iik7CisgICAgICAgIHZhciBvYmplY3RJ
ZCA9IHRoaXMuX25leHRPYmplY3RJZCsrOworICAgICAgICB2YXIgcHJveHkgPSBuZXcgcHJveHlD
b25zdHJ1Y3RvckZ1bmN0aW9uKHRoaXMsIG9iamVjdElkKTsKKyAgICAgICAgdGhpcy5fcG9zdE1l
c3NhZ2Uoe2NhbGxJZDogdGhpcy5fbmV4dENhbGxJZCsrLCBkaXNwb3NpdGlvbjogImNyZWF0ZSIs
IG9iamVjdElkOiBvYmplY3RJZCwgbWV0aG9kTmFtZTogY29uc3RydWN0b3JOYW1lfSk7CisgICAg
ICAgIHJldHVybiBwcm94eTsKICAgICB9LAogCi0gICAgX2V4dHJhY3RFZGdlRGF0YTogZnVuY3Rp
b24oZWRnZSkKKyAgICBkaXNwb3NlOiBmdW5jdGlvbigpCiAgICAgewotICAgICAgICByZXR1cm4g
e25hbWU6IGVkZ2UubmFtZSwgbm9kZTogdGhpcy5fZXh0cmFjdE5vZGVEYXRhKGVkZ2Uubm9kZSks
IG5vZGVJbmRleDogZWRnZS5ub2RlSW5kZXgsIHR5cGU6IGVkZ2UudHlwZX07CisgICAgICAgIHRo
aXMuX3dvcmtlci50ZXJtaW5hdGUoKTsKICAgICB9LAogCi0gICAgX2V4dHJhY3ROb2RlRGF0YTog
ZnVuY3Rpb24obm9kZSkKKyAgICBkaXNwb3NlT2JqZWN0OiBmdW5jdGlvbihvYmplY3RJZCkKICAg
ICB7Ci0gICAgICAgIHJldHVybiB7aWQ6IG5vZGUuaWQsIG5hbWU6IG5vZGUubmFtZSwgbm9kZUlu
ZGV4OiBub2RlLm5vZGVJbmRleCwgcmV0YWluZWRTaXplOiBub2RlLnJldGFpbmVkU2l6ZSwgc2Vs
ZlNpemU6IG5vZGUuc2VsZlNpemUsIHR5cGU6IG5vZGUudHlwZX07CisgICAgICAgIHRoaXMuX3Bv
c3RNZXNzYWdlKHtjYWxsSWQ6IHRoaXMuX25leHRDYWxsSWQrKywgZGlzcG9zaXRpb246ICJkaXNw
b3NlIiwgb2JqZWN0SWQ6IG9iamVjdElkfSk7CiAgICAgfSwKIAotICAgIGNyZWF0ZURpZmY6IGZ1
bmN0aW9uKGNsYXNzTmFtZSkKKyAgICBjYWxsR2V0dGVyOiBmdW5jdGlvbihjYWxsYmFjaywgb2Jq
ZWN0SWQsIGdldHRlck5hbWUpCiAgICAgewotICAgICAgICByZXR1cm4gbmV3IFdlYkluc3BlY3Rv
ci5IZWFwU25hcHNob3RzRGlmZlByb3h5KG5ldyBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90c0Rp
ZmYodGhpcy5fc25hcHNob3QsIGNsYXNzTmFtZSkpOworICAgICAgICB2YXIgY2FsbElkID0gdGhp
cy5fbmV4dENhbGxJZCsrOworICAgICAgICB0aGlzLl9jYWxsYmFja3NbY2FsbElkXSA9IGNhbGxi
YWNrOworICAgICAgICB0aGlzLl9wb3N0TWVzc2FnZSh7Y2FsbElkOiBjYWxsSWQsIGRpc3Bvc2l0
aW9uOiAiZ2V0dGVyIiwgb2JqZWN0SWQ6IG9iamVjdElkLCBtZXRob2ROYW1lOiBnZXR0ZXJOYW1l
fSk7CiAgICAgfSwKIAotICAgIGNyZWF0ZUVkZ2VzUHJvdmlkZXI6IGZ1bmN0aW9uKG5vZGVJbmRl
eCwgZmlsdGVyKQorICAgIGNhbGxGYWN0b3J5TWV0aG9kOiBmdW5jdGlvbihjYWxsYmFjaywgb2Jq
ZWN0SWQsIG1ldGhvZE5hbWUsIHByb3h5Q29uc3RydWN0b3JOYW1lKQogICAgIHsKLSAgICAgICAg
ZnVuY3Rpb24gY3JlYXRlUHJvdmlkZXIoKQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoZmls
dGVyKQotICAgICAgICAgICAgICAgIGZpbHRlciA9IGZpbHRlci5iaW5kKHRoaXMuX3NuYXBzaG90
KTsKLSAgICAgICAgICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdEVkZ2Vz
UHJvdmlkZXIodGhpcy5fc25hcHNob3QsIG5vZGVJbmRleCwgZmlsdGVyKTsKKyAgICAgICAgdmFy
IGNhbGxJZCA9IHRoaXMuX25leHRDYWxsSWQrKzsKKyAgICAgICAgdmFyIG1ldGhvZEFyZ3VtZW50
cyA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywgNCk7CisgICAgICAgIHZh
ciBuZXdPYmplY3RJZCA9IHRoaXMuX25leHRPYmplY3RJZCsrOworICAgICAgICB2YXIgcHJveHlD
b25zdHJ1Y3RvckZ1bmN0aW9uID0gdGhpcy5fZmluZEZ1bmN0aW9uKHByb3h5Q29uc3RydWN0b3JO
YW1lKTsKKyAgICAgICAgaWYgKGNhbGxiYWNrKSB7CisgICAgICAgICAgICBmdW5jdGlvbiB3cmFw
Q2FsbGJhY2socmVtb3RlUmVzdWx0KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNh
bGxiYWNrKHJlbW90ZVJlc3VsdCA/IG5ldyBwcm94eUNvbnN0cnVjdG9yRnVuY3Rpb24odGhpcywg
bmV3T2JqZWN0SWQpIDogbnVsbCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICB0aGlzLl9j
YWxsYmFja3NbY2FsbElkXSA9IHdyYXBDYWxsYmFjay5iaW5kKHRoaXMpOworICAgICAgICAgICAg
dGhpcy5fcG9zdE1lc3NhZ2Uoe2NhbGxJZDogY2FsbElkLCBkaXNwb3NpdGlvbjogImZhY3Rvcnki
LCBvYmplY3RJZDogb2JqZWN0SWQsIG1ldGhvZE5hbWU6IG1ldGhvZE5hbWUsIG1ldGhvZEFyZ3Vt
ZW50czogbWV0aG9kQXJndW1lbnRzLCBuZXdPYmplY3RJZDogbmV3T2JqZWN0SWR9KTsKKyAgICAg
ICAgICAgIHJldHVybiBudWxsOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgdGhpcy5f
cG9zdE1lc3NhZ2Uoe2NhbGxJZDogY2FsbElkLCBkaXNwb3NpdGlvbjogImZhY3RvcnkiLCBvYmpl
Y3RJZDogb2JqZWN0SWQsIG1ldGhvZE5hbWU6IG1ldGhvZE5hbWUsIG1ldGhvZEFyZ3VtZW50czog
bWV0aG9kQXJndW1lbnRzLCBuZXdPYmplY3RJZDogbmV3T2JqZWN0SWR9KTsKKyAgICAgICAgICAg
IHJldHVybiBuZXcgcHJveHlDb25zdHJ1Y3RvckZ1bmN0aW9uKHRoaXMsIG5ld09iamVjdElkKTsK
ICAgICAgICAgfQotICAgICAgICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RQ
cm92aWRlclByb3h5KGNyZWF0ZVByb3ZpZGVyLmJpbmQodGhpcyksIHRoaXMuX2V4dHJhY3RFZGdl
RGF0YS5iaW5kKHRoaXMpKTsKICAgICB9LAogCi0gICAgY3JlYXRlTm9kZXNQcm92aWRlcjogZnVu
Y3Rpb24oZmlsdGVyKQorICAgIGNhbGxNZXRob2Q6IGZ1bmN0aW9uKGNhbGxiYWNrLCBvYmplY3RJ
ZCwgbWV0aG9kTmFtZSkKICAgICB7Ci0gICAgICAgIGZ1bmN0aW9uIGNyZWF0ZVByb3ZpZGVyKCkK
LSAgICAgICAgewotICAgICAgICAgICAgaWYgKGZpbHRlcikKLSAgICAgICAgICAgICAgICBmaWx0
ZXIgPSBmaWx0ZXIuYmluZCh0aGlzLl9zbmFwc2hvdCk7Ci0gICAgICAgICAgICByZXR1cm4gbmV3
IFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3ROb2Rlc1Byb3ZpZGVyKHRoaXMuX3NuYXBzaG90LCBm
aWx0ZXIpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLkhlYXBT
bmFwc2hvdFByb3ZpZGVyUHJveHkoY3JlYXRlUHJvdmlkZXIuYmluZCh0aGlzKSwgdGhpcy5fZXh0
cmFjdE5vZGVEYXRhLmJpbmQodGhpcykpOworICAgICAgICB2YXIgY2FsbElkID0gdGhpcy5fbmV4
dENhbGxJZCsrOworICAgICAgICB2YXIgbWV0aG9kQXJndW1lbnRzID0gQXJyYXkucHJvdG90eXBl
LnNsaWNlLmNhbGwoYXJndW1lbnRzLCAzKTsKKyAgICAgICAgaWYgKGNhbGxiYWNrKQorICAgICAg
ICAgICAgdGhpcy5fY2FsbGJhY2tzW2NhbGxJZF0gPSBjYWxsYmFjazsKKyAgICAgICAgdGhpcy5f
cG9zdE1lc3NhZ2Uoe2NhbGxJZDogY2FsbElkLCBkaXNwb3NpdGlvbjogIm1ldGhvZCIsIG9iamVj
dElkOiBvYmplY3RJZCwgbWV0aG9kTmFtZTogbWV0aG9kTmFtZSwgbWV0aG9kQXJndW1lbnRzOiBt
ZXRob2RBcmd1bWVudHN9KTsKICAgICB9LAogCi0gICAgY3JlYXRlUGF0aEZpbmRlcjogZnVuY3Rp
b24odGFyZ2V0Tm9kZUluZGV4KQorICAgIF9maW5kRnVuY3Rpb246IGZ1bmN0aW9uKG5hbWUpCiAg
ICAgewotICAgICAgICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RQYXRoRmlu
ZGVyUHJveHkobmV3IFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RQYXRoRmluZGVyKHRoaXMuX3Nu
YXBzaG90LCB0YXJnZXROb2RlSW5kZXgpKTsKKyAgICAgICAgdmFyIHBhdGggPSBuYW1lLnNwbGl0
KCIuIik7CisgICAgICAgIHZhciByZXN1bHQgPSB3aW5kb3c7CisgICAgICAgIGZvciAodmFyIGkg
PSAwOyBpIDwgcGF0aC5sZW5ndGg7ICsraSkKKyAgICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdFtw
YXRoW2ldXTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9LAorCisgICAgX21lc3NhZ2VS
ZWNlaXZlZDogZnVuY3Rpb24oZXZlbnQpCisgICAgeworICAgICAgICB2YXIgZGF0YSA9IGV2ZW50
LmRhdGE7CisgICAgICAgIGlmICghdGhpcy5fY2FsbGJhY2tzW2RhdGEuY2FsbElkXSkKKyAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgdmFyIGNhbGxiYWNrID0gdGhpcy5fY2FsbGJhY2tzW2Rh
dGEuY2FsbElkXTsKKyAgICAgICAgZGVsZXRlIHRoaXMuX2NhbGxiYWNrc1tkYXRhLmNhbGxJZF07
CisgICAgICAgIGNhbGxiYWNrKGRhdGEucmVzdWx0KTsKKyAgICB9LAorCisgICAgX3Bvc3RNZXNz
YWdlOiBmdW5jdGlvbihtZXNzYWdlKQorICAgIHsKKyAgICAgICAgdGhpcy5fd29ya2VyLnBvc3RN
ZXNzYWdlKG1lc3NhZ2UpOyAgICAgIAorICAgIH0KK307CisKK1dlYkluc3BlY3Rvci5IZWFwU25h
cHNob3RQcm94eU9iamVjdCA9IGZ1bmN0aW9uKHdvcmtlciwgb2JqZWN0SWQpCit7CisgICAgdGhp
cy5fd29ya2VyID0gd29ya2VyOworICAgIHRoaXMuX29iamVjdElkID0gb2JqZWN0SWQ7Cit9CisK
K1dlYkluc3BlY3Rvci5IZWFwU25hcHNob3RQcm94eU9iamVjdC5wcm90b3R5cGUgPSB7CisgICAg
X2NhbGxXb3JrZXI6IGZ1bmN0aW9uKHdvcmtlck1ldGhvZE5hbWUsIGFyZ3MpCisgICAgeworICAg
ICAgICBhcmdzLnNwbGljZSgxLCAwLCB0aGlzLl9vYmplY3RJZCk7CisgICAgICAgIHJldHVybiB0
aGlzLl93b3JrZXJbd29ya2VyTWV0aG9kTmFtZV0uYXBwbHkodGhpcy5fd29ya2VyLCBhcmdzKTsK
ICAgICB9LAogCiAgICAgZGlzcG9zZTogZnVuY3Rpb24oKQogICAgIHsKLSAgICAgICAgdGhpcy5f
c25hcHNob3QuZGlzcG9zZSgpOworICAgICAgICB0aGlzLl93b3JrZXIuZGlzcG9zZU9iamVjdCh0
aGlzLl9vYmplY3RJZCk7CisgICAgfSwKKworICAgIGRpc3Bvc2VXb3JrZXI6IGZ1bmN0aW9uKCkK
KyAgICB7CisgICAgICAgIHRoaXMuX3dvcmtlci5kaXNwb3NlKCk7CiAgICAgfSwKIAorICAgIGNh
bGxGYWN0b3J5TWV0aG9kOiBmdW5jdGlvbihjYWxsYmFjaywgbWV0aG9kTmFtZSwgcHJveHlDb25z
dHJ1Y3Rvck5hbWUpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5fY2FsbFdvcmtlcigiY2Fs
bEZhY3RvcnlNZXRob2QiLCBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsIDAp
KTsKKyAgICB9LAorCisgICAgY2FsbEdldHRlcjogZnVuY3Rpb24oY2FsbGJhY2ssIGdldHRlck5h
bWUpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5fY2FsbFdvcmtlcigiY2FsbEdldHRlciIs
IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMCkpOworICAgIH0sCisKKyAg
ICBjYWxsTWV0aG9kOiBmdW5jdGlvbihjYWxsYmFjaywgbWV0aG9kTmFtZSkKKyAgICB7CisgICAg
ICAgIHJldHVybiB0aGlzLl9jYWxsV29ya2VyKCJjYWxsTWV0aG9kIiwgQXJyYXkucHJvdG90eXBl
LnNsaWNlLmNhbGwoYXJndW1lbnRzLCAwKSk7CisgICAgfQorfTsKKworV2ViSW5zcGVjdG9yLkhl
YXBTbmFwc2hvdExvYWRlclByb3h5ID0gZnVuY3Rpb24od29ya2VyLCBvYmplY3RJZCkKK3sKKyAg
ICBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90UHJveHlPYmplY3QuY2FsbCh0aGlzLCB3b3JrZXIs
IG9iamVjdElkKTsKKyAgICB0aGlzLl9sb2FkaW5nID0gZmFsc2U7CisgICAgdGhpcy5fbG9hZGVk
ID0gZmFsc2U7Cit9CisKK1dlYkluc3BlY3Rvci5IZWFwU25hcHNob3RMb2FkZXJQcm94eS5wcm90
b3R5cGUgPSB7CiAgICAgZmluaXNoTG9hZGluZzogZnVuY3Rpb24oY2FsbGJhY2spCiAgICAgewot
ICAgICAgICBpZiAodGhpcy5fc25hcHNob3QgfHwgIXRoaXMuX2lzTG9hZGluZykKKyAgICAgICAg
aWYgKCF0aGlzLl9sb2FkaW5nKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBm
dW5jdGlvbiBwYXJzZSgpIHsKLSAgICAgICAgICAgIHZhciByYXdTbmFwc2hvdCA9IEpTT04ucGFy
c2UodGhpcy5fanNvbik7Ci0gICAgICAgICAgICB2YXIgbG9hZENhbGxiYWNrcyA9IHRoaXMuX29u
TG9hZENhbGxiYWNrczsKLSAgICAgICAgICAgIGxvYWRDYWxsYmFja3Muc3BsaWNlKDAsIDAsIGNh
bGxiYWNrKTsKLSAgICAgICAgICAgIGRlbGV0ZSB0aGlzLl9vbkxvYWRDYWxsYmFjazsKLSAgICAg
ICAgICAgIGRlbGV0ZSB0aGlzLl9qc29uOwotICAgICAgICAgICAgZGVsZXRlIHRoaXMuX2lzTG9h
ZGluZzsKLSAgICAgICAgICAgIHRoaXMuX3NuYXBzaG90ID0gbmV3IFdlYkluc3BlY3Rvci5IZWFw
U25hcHNob3QocmF3U25hcHNob3QpOwotICAgICAgICAgICAgdGhpcy5fbm9kZUNvdW50ID0gdGhp
cy5fc25hcHNob3Qubm9kZUNvdW50OwotICAgICAgICAgICAgdGhpcy5fcm9vdE5vZGVJbmRleCA9
IHRoaXMuX3NuYXBzaG90Ll9yb290Tm9kZUluZGV4OwotICAgICAgICAgICAgdGhpcy5fdG90YWxT
aXplID0gdGhpcy5fc25hcHNob3QudG90YWxTaXplOworICAgICAgICB2YXIgbG9hZENhbGxiYWNr
cyA9IHRoaXMuX29uTG9hZENhbGxiYWNrczsKKyAgICAgICAgbG9hZENhbGxiYWNrcy5zcGxpY2Uo
MCwgMCwgY2FsbGJhY2spOworICAgICAgICBkZWxldGUgdGhpcy5fb25Mb2FkQ2FsbGJhY2tzOwor
ICAgICAgICB0aGlzLl9sb2FkaW5nID0gZmFsc2U7CisgICAgICAgIHRoaXMuX2xvYWRlZCA9IHRy
dWU7CisgICAgICAgIGZ1bmN0aW9uIGNhbGxMb2FkQ2FsbGJhY2tzKHNuYXBzaG90UHJveHkpCisg
ICAgICAgIHsKICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbG9hZENhbGxiYWNrcy5s
ZW5ndGg7ICsraSkKLSAgICAgICAgICAgICAgICBsb2FkQ2FsbGJhY2tzW2ldKCk7CisgICAgICAg
ICAgICAgICAgbG9hZENhbGxiYWNrc1tpXShzbmFwc2hvdFByb3h5KTsKICAgICAgICAgfQotICAg
ICAgICBzZXRUaW1lb3V0KHBhcnNlLmJpbmQodGhpcyksIDApOworICAgICAgICBmdW5jdGlvbiB1
cGRhdGVTdGF0aWNEYXRhKHNuYXBzaG90UHJveHkpCisgICAgICAgIHsKKyAgICAgICAgICAgIHRo
aXMuZGlzcG9zZSgpOworICAgICAgICAgICAgc25hcHNob3RQcm94eS51cGRhdGVTdGF0aWNEYXRh
KGNhbGxMb2FkQ2FsbGJhY2tzKTsKKyAgICAgICAgfQorICAgICAgICB0aGlzLmNhbGxGYWN0b3J5
TWV0aG9kKHVwZGF0ZVN0YXRpY0RhdGEuYmluZCh0aGlzKSwgImZpbmlzaExvYWRpbmciLCAiV2Vi
SW5zcGVjdG9yLkhlYXBTbmFwc2hvdFByb3h5Iik7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAg
IH0sCiAKICAgICBnZXQgbG9hZGVkKCkKICAgICB7Ci0gICAgICAgIHJldHVybiAhIXRoaXMuX3Nu
YXBzaG90OworICAgICAgICByZXR1cm4gdGhpcy5fbG9hZGVkOwogICAgIH0sCiAKLSAgICBnZXQg
bm9kZUNvdW50KCkKKyAgICBzdGFydExvYWRpbmc6IGZ1bmN0aW9uKGNhbGxiYWNrKQorICAgIHsK
KyAgICAgICAgaWYgKCF0aGlzLl9sb2FkaW5nKSB7CisgICAgICAgICAgICB0aGlzLl9vbkxvYWRD
YWxsYmFja3MgPSBbY2FsbGJhY2tdOworICAgICAgICAgICAgdGhpcy5fbG9hZGluZyA9IHRydWU7
CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
IHRoaXMuX29uTG9hZENhbGxiYWNrcy5wdXNoKGNhbGxiYWNrKTsKKyAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgfQorICAgIH0sCisKKyAgICBwdXNoSlNPTkNodW5rOiBmdW5jdGlv
bihjaHVuaykKKyAgICB7CisgICAgICAgIGlmICghdGhpcy5fbG9hZGluZykKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgdGhpcy5jYWxsTWV0aG9kKG51bGwsICJwdXNoSlNPTkNodW5rIiwg
Y2h1bmspOworICAgIH0KK307CisKK1dlYkluc3BlY3Rvci5IZWFwU25hcHNob3RMb2FkZXJQcm94
eS5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFByb3h5T2Jq
ZWN0LnByb3RvdHlwZTsKKworV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFByb3h5ID0gZnVuY3Rp
b24od29ya2VyLCBvYmplY3RJZCkKK3sKKyAgICBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90UHJv
eHlPYmplY3QuY2FsbCh0aGlzLCB3b3JrZXIsIG9iamVjdElkKTsKK30KKworV2ViSW5zcGVjdG9y
LkhlYXBTbmFwc2hvdFByb3h5LnByb3RvdHlwZSA9IHsKKyAgICBhZ2dyZWdhdGVzOiBmdW5jdGlv
bih3aXRoTm9kZUluZGV4ZXMsIGNhbGxiYWNrKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMu
X25vZGVDb3VudDsKKyAgICAgICAgdGhpcy5jYWxsTWV0aG9kKGNhbGxiYWNrLCAiYWdncmVnYXRl
cyIsIHdpdGhOb2RlSW5kZXhlcyk7CiAgICAgfSwKIAotICAgIG5vZGVGaWVsZFZhbHVlc0J5SW5k
ZXg6IGZ1bmN0aW9uKGZpZWxkTmFtZSwgaW5kZXhlcywgY2FsbGJhY2spCisgICAgY3JlYXRlRGlm
ZjogZnVuY3Rpb24oY2xhc3NOYW1lKQogICAgIHsKLSAgICAgICAgZnVuY3Rpb24gcmV0dXJuUmVz
dWx0KCkKLSAgICAgICAgewotICAgICAgICAgICAgY2FsbGJhY2sodGhpcy5fc25hcHNob3Qubm9k
ZUZpZWxkVmFsdWVzQnlJbmRleChmaWVsZE5hbWUsIGluZGV4ZXMpKTsKLSAgICAgICAgfQotICAg
ICAgICBzZXRUaW1lb3V0KHJldHVyblJlc3VsdC5iaW5kKHRoaXMpLCAwKTsKKyAgICAgICAgcmV0
dXJuIHRoaXMuY2FsbEZhY3RvcnlNZXRob2QobnVsbCwgImNyZWF0ZURpZmYiLCAgIldlYkluc3Bl
Y3Rvci5IZWFwU25hcHNob3RzRGlmZlByb3h5IiwgY2xhc3NOYW1lKTsKICAgICB9LAogCi0gICAg
bm9kZUlkczogZnVuY3Rpb24oY2FsbGJhY2spCisgICAgY3JlYXRlRWRnZXNQcm92aWRlcjogZnVu
Y3Rpb24obm9kZUluZGV4LCBmaWx0ZXIpCiAgICAgewotICAgICAgICB0aGlzLl9pbnZva2VHZXR0
ZXIoIm5vZGVJZHMiLCBjYWxsYmFjayk7CisgICAgICAgIHJldHVybiB0aGlzLmNhbGxGYWN0b3J5
TWV0aG9kKG51bGwsICJjcmVhdGVFZGdlc1Byb3ZpZGVyIiwgIldlYkluc3BlY3Rvci5IZWFwU25h
cHNob3RQcm92aWRlclByb3h5Iiwgbm9kZUluZGV4LCBmaWx0ZXIpOwogICAgIH0sCiAKLSAgICBw
dXNoSlNPTkNodW5rOiBmdW5jdGlvbihjaHVuaykKKyAgICBjcmVhdGVOb2Rlc1Byb3ZpZGVyOiBm
dW5jdGlvbihmaWx0ZXIpCiAgICAgewotICAgICAgICBpZiAodGhpcy5sb2FkZWQgfHwgIXRoaXMu
X2lzTG9hZGluZykKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgdGhpcy5fanNvbiArPSBj
aHVuazsKKyAgICAgICAgcmV0dXJuIHRoaXMuY2FsbEZhY3RvcnlNZXRob2QobnVsbCwgImNyZWF0
ZU5vZGVzUHJvdmlkZXIiLCAiV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFByb3ZpZGVyUHJveHki
LCBmaWx0ZXIpOworICAgIH0sCisKKyAgICBjcmVhdGVQYXRoRmluZGVyOiBmdW5jdGlvbih0YXJn
ZXROb2RlSW5kZXgpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5jYWxsRmFjdG9yeU1ldGhv
ZChudWxsLCAiY3JlYXRlUGF0aEZpbmRlciIsICJXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90UGF0
aEZpbmRlclByb3h5IiwgdGFyZ2V0Tm9kZUluZGV4KTsKKyAgICB9LAorCisgICAgZGlzcG9zZTog
ZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgdGhpcy5kaXNwb3NlV29ya2VyKCk7CisgICAgfSwK
KworICAgIGZpbmlzaExvYWRpbmc6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICB9LAorCisgICAgZ2V0IGxvYWRlZCgpCisgICAgeworICAgICAgICByZXR1cm4g
ISF0aGlzLl9vYmplY3RJZDsKKyAgICB9LAorCisgICAgZ2V0IG5vZGVDb3VudCgpCisgICAgewor
ICAgICAgICByZXR1cm4gdGhpcy5fc3RhdGljRGF0YS5ub2RlQ291bnQ7CisgICAgfSwKKworICAg
IG5vZGVGaWVsZFZhbHVlc0J5SW5kZXg6IGZ1bmN0aW9uKGZpZWxkTmFtZSwgaW5kZXhlcywgY2Fs
bGJhY2spCisgICAgeworICAgICAgICB0aGlzLmNhbGxNZXRob2QoY2FsbGJhY2ssICJub2RlRmll
bGRWYWx1ZXNCeUluZGV4IiwgZmllbGROYW1lLCBpbmRleGVzKTsKICAgICB9LAogCiAgICAgcHVz
aEJhc2VJZHM6IGZ1bmN0aW9uKHNuYXBzaG90SWQsIGNsYXNzTmFtZSwgbm9kZUlkcykKICAgICB7
Ci0gICAgICAgIHRoaXMuX3NuYXBzaG90LnVwZGF0ZUJhc2VOb2RlSWRzKHNuYXBzaG90SWQsIGNs
YXNzTmFtZSwgbm9kZUlkcyk7CisgICAgICAgIHRoaXMuY2FsbE1ldGhvZChudWxsLCAicHVzaEJh
c2VJZHMiLCBzbmFwc2hvdElkLCBjbGFzc05hbWUsIG5vZGVJZHMpOwogICAgIH0sCiAKICAgICBn
ZXQgcm9vdE5vZGVJbmRleCgpCiAgICAgewotICAgICAgICByZXR1cm4gdGhpcy5fcm9vdE5vZGVJ
bmRleDsKKyAgICAgICAgcmV0dXJuIHRoaXMuX3N0YXRpY0RhdGEucm9vdE5vZGVJbmRleDsKICAg
ICB9LAogCi0gICAgc3RhcnRMb2FkaW5nOiBmdW5jdGlvbihjYWxsYmFjaykKKyAgICB1cGRhdGVT
dGF0aWNEYXRhOiBmdW5jdGlvbihjYWxsYmFjaykKICAgICB7Ci0gICAgICAgIGlmICh0aGlzLl9z
bmFwc2hvdCkgewotICAgICAgICAgICAgZnVuY3Rpb24gYXN5bmNJbnZva2UoKQotICAgICAgICAg
ICAgewotICAgICAgICAgICAgICAgIGNhbGxiYWNrKCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAg
ICAgICBzZXRUaW1lb3V0KGNhbGxiYWNrLCAwKTsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICAgICAgfSBlbHNlIGlmICh0aGlzLl9pc0xvYWRpbmcpIHsKLSAgICAgICAgICAgIHRoaXMu
X29uTG9hZENhbGxiYWNrcy5wdXNoKGNhbGxiYWNrKTsKLSAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHRoaXMuX2lzTG9hZGluZyA9IHRydWU7
Ci0gICAgICAgICAgICB0aGlzLl9vbkxvYWRDYWxsYmFja3MgPSBbY2FsbGJhY2tdOwotICAgICAg
ICAgICAgdGhpcy5fanNvbiA9ICIiOwotICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAg
IGZ1bmN0aW9uIGRhdGFSZWNlaXZlZChzdGF0aWNEYXRhKQorICAgICAgICB7CisgICAgICAgICAg
ICB0aGlzLl9zdGF0aWNEYXRhID0gc3RhdGljRGF0YTsKKyAgICAgICAgICAgIGNhbGxiYWNrKHRo
aXMpOwogICAgICAgICB9CisgICAgICAgIHRoaXMuY2FsbE1ldGhvZChkYXRhUmVjZWl2ZWQuYmlu
ZCh0aGlzKSwgInVwZGF0ZVN0YXRpY0RhdGEiKTsKKyAgICB9LAorCisgICAgc3RhcnRMb2FkaW5n
OiBmdW5jdGlvbihjYWxsYmFjaykKKyAgICB7CisgICAgICAgIHNldFRpbWVvdXQoY2FsbGJhY2ss
IDApOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfSwKIAogICAgIGdldCB0b3RhbFNpemUo
KQogICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuX3RvdGFsU2l6ZTsKKyAgICAgICAgcmV0dXJu
IHRoaXMuX3N0YXRpY0RhdGEudG90YWxTaXplOwogICAgIH0sCiAKICAgICBnZXQgdWlkKCkKICAg
ICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl9zbmFwc2hvdC51aWQ7CisgICAgICAgIHJldHVybiB0
aGlzLl9zdGF0aWNEYXRhLnVpZDsKICAgICB9CiB9OwogCi1XZWJJbnNwZWN0b3IuSGVhcFNuYXBz
aG90UHJvdmlkZXJQcm94eSA9IGZ1bmN0aW9uKGNyZWF0ZVByb3ZpZGVyLCBleHRyYWN0RGF0YSkK
K1dlYkluc3BlY3Rvci5IZWFwU25hcHNob3RQcm94eS5wcm90b3R5cGUuX19wcm90b19fID0gV2Vi
SW5zcGVjdG9yLkhlYXBTbmFwc2hvdFByb3h5T2JqZWN0LnByb3RvdHlwZTsKKworV2ViSW5zcGVj
dG9yLkhlYXBTbmFwc2hvdFByb3ZpZGVyUHJveHkgPSBmdW5jdGlvbih3b3JrZXIsIG9iamVjdElk
KQogewotICAgIHRoaXMuX3Byb3ZpZGVyID0gY3JlYXRlUHJvdmlkZXIoKTsKLSAgICB0aGlzLl9l
eHRyYWN0RGF0YSA9IGV4dHJhY3REYXRhOworICAgIFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RQ
cm94eU9iamVjdC5jYWxsKHRoaXMsIHdvcmtlciwgb2JqZWN0SWQpOwogfQogCiBXZWJJbnNwZWN0
b3IuSGVhcFNuYXBzaG90UHJvdmlkZXJQcm94eS5wcm90b3R5cGUgPSB7Ci0gICAgZ2V0TmV4dEl0
ZW1zOiBmdW5jdGlvbihjb3VudCwgY2FsbGJhY2spCisgICAgaXNFbXB0eTogZnVuY3Rpb24oY2Fs
bGJhY2spCiAgICAgewotICAgICAgICBmdW5jdGlvbiByZXR1cm5SZXN1bHQoKQotICAgICAgICB7
Ci0gICAgICAgICAgICB2YXIgcmVzdWx0ID0gbmV3IEFycmF5KGNvdW50KTsKLSAgICAgICAgICAg
IGZvciAodmFyIGkgPSAwIDsgaSA8IGNvdW50ICYmIHRoaXMuX3Byb3ZpZGVyLmhhc05leHQoKTsg
KytpLCB0aGlzLl9wcm92aWRlci5uZXh0KCkpCi0gICAgICAgICAgICAgICAgcmVzdWx0W2ldID0g
dGhpcy5fZXh0cmFjdERhdGEodGhpcy5fcHJvdmlkZXIuaXRlbSk7Ci0gICAgICAgICAgICByZXN1
bHQubGVuZ3RoID0gaTsKLSAgICAgICAgICAgIGNhbGxiYWNrKHJlc3VsdCwgdGhpcy5fcHJvdmlk
ZXIuaGFzTmV4dCgpLCB0aGlzLl9wcm92aWRlci5sZW5ndGgpOwotICAgICAgICB9Ci0gICAgICAg
IHNldFRpbWVvdXQocmV0dXJuUmVzdWx0LmJpbmQodGhpcyksIDApOworICAgICAgICB0aGlzLmNh
bGxHZXR0ZXIoY2FsbGJhY2ssICJpc0VtcHR5Iik7CiAgICAgfSwKIAotICAgIGlzRW1wdHk6IGZ1
bmN0aW9uKGNhbGxiYWNrKQorICAgIHNlcmlhbGl6ZU5leHRJdGVtczogZnVuY3Rpb24oY291bnQs
IGNhbGxiYWNrKQogICAgIHsKLSAgICAgICAgZnVuY3Rpb24gcmV0dXJuUmVzdWx0KCkKLSAgICAg
ICAgewotICAgICAgICAgICAgY2FsbGJhY2sodGhpcy5fcHJvdmlkZXIuaXNFbXB0eSk7Ci0gICAg
ICAgIH0KLSAgICAgICAgc2V0VGltZW91dChyZXR1cm5SZXN1bHQuYmluZCh0aGlzKSwgMCk7Cisg
ICAgICAgIHRoaXMuY2FsbE1ldGhvZChjYWxsYmFjaywgInNlcmlhbGl6ZU5leHRJdGVtcyIsIGNv
dW50KTsKICAgICB9LAogCiAgICAgc29ydEFuZFJld2luZDogZnVuY3Rpb24oY29tcGFyYXRvciwg
Y2FsbGJhY2spCiAgICAgewotICAgICAgICBmdW5jdGlvbiByZXR1cm5SZXN1bHQoKQotICAgICAg
ICB7Ci0gICAgICAgICAgICB2YXIgcmVzdWx0ID0gdGhpcy5fcHJvdmlkZXIuc29ydChjb21wYXJh
dG9yKTsKLSAgICAgICAgICAgIGlmIChyZXN1bHQpCi0gICAgICAgICAgICAgICAgdGhpcy5fcHJv
dmlkZXIuZmlyc3QoKTsKLSAgICAgICAgICAgIGNhbGxiYWNrKHJlc3VsdCk7Ci0gICAgICAgIH0K
LSAgICAgICAgc2V0VGltZW91dChyZXR1cm5SZXN1bHQuYmluZCh0aGlzKSwgMCk7CisgICAgICAg
IHRoaXMuY2FsbE1ldGhvZChjYWxsYmFjaywgInNvcnRBbmRSZXdpbmQiLCBjb21wYXJhdG9yKTsK
ICAgICB9CiB9OwogCi1XZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90UGF0aEZpbmRlclByb3h5ID0g
ZnVuY3Rpb24ocGF0aEZpbmRlcikKK1dlYkluc3BlY3Rvci5IZWFwU25hcHNob3RQcm92aWRlclBy
b3h5LnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90UHJveHlP
YmplY3QucHJvdG90eXBlOworCitXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90UGF0aEZpbmRlclBy
b3h5ID0gZnVuY3Rpb24od29ya2VyLCBvYmplY3RJZCkKIHsKLSAgICB0aGlzLl9wYXRoRmluZGVy
ID0gcGF0aEZpbmRlcjsKKyAgICBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90UHJveHlPYmplY3Qu
Y2FsbCh0aGlzLCB3b3JrZXIsIG9iamVjdElkKTsKIH0KIAogV2ViSW5zcGVjdG9yLkhlYXBTbmFw
c2hvdFBhdGhGaW5kZXJQcm94eS5wcm90b3R5cGUgPSB7CiAgICAgZmluZE5leHQ6IGZ1bmN0aW9u
KGNhbGxiYWNrKQogICAgIHsKLSAgICAgICAgZnVuY3Rpb24gcmV0dXJuUmVzdWx0KCkKLSAgICAg
ICAgewotICAgICAgICAgICAgY2FsbGJhY2sodGhpcy5fcGF0aEZpbmRlci5maW5kTmV4dCgpKTsK
LSAgICAgICAgfQotICAgICAgICBzZXRUaW1lb3V0KHJldHVyblJlc3VsdC5iaW5kKHRoaXMpLCAw
KTsKKyAgICAgICAgdGhpcy5jYWxsTWV0aG9kKGNhbGxiYWNrLCAiZmluZE5leHQiKTsKICAgICB9
LAogCiAgICAgdXBkYXRlUm9vdHM6IGZ1bmN0aW9uKGZpbHRlcikKICAgICB7Ci0gICAgICAgIGZ1
bmN0aW9uIGFzeW5jSW52b2tlKCkKLSAgICAgICAgewotICAgICAgICAgICAgdGhpcy5fcGF0aEZp
bmRlci51cGRhdGVSb290cyhmaWx0ZXIpOwotICAgICAgICB9Ci0gICAgICAgIHNldFRpbWVvdXQo
YXN5bmNJbnZva2UuYmluZCh0aGlzKSwgMCk7CisgICAgICAgIHRoaXMuY2FsbE1ldGhvZChudWxs
LCAidXBkYXRlUm9vdHMiLCBmaWx0ZXIpOwogICAgIH0KIH07CiAKLVdlYkluc3BlY3Rvci5IZWFw
U25hcHNob3RzRGlmZlByb3h5ID0gZnVuY3Rpb24oZGlmZikKK1dlYkluc3BlY3Rvci5IZWFwU25h
cHNob3RQYXRoRmluZGVyUHJveHkucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5I
ZWFwU25hcHNob3RQcm94eU9iamVjdC5wcm90b3R5cGU7CisKK1dlYkluc3BlY3Rvci5IZWFwU25h
cHNob3RzRGlmZlByb3h5ID0gZnVuY3Rpb24od29ya2VyLCBvYmplY3RJZCkKIHsKLSAgICB0aGlz
Ll9kaWZmID0gZGlmZjsKKyAgICBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90UHJveHlPYmplY3Qu
Y2FsbCh0aGlzLCB3b3JrZXIsIG9iamVjdElkKTsKIH0KIAogV2ViSW5zcGVjdG9yLkhlYXBTbmFw
c2hvdHNEaWZmUHJveHkucHJvdG90eXBlID0gewogICAgIGNhbGN1bGF0ZTogZnVuY3Rpb24oY2Fs
bGJhY2spCiAgICAgewotICAgICAgICBmdW5jdGlvbiByZXR1cm5SZXN1bHQoKQotICAgICAgICB7
Ci0gICAgICAgICAgICBjYWxsYmFjayh0aGlzLl9kaWZmLmNhbGN1bGF0ZSgpKTsKLSAgICAgICAg
fQotICAgICAgICBzZXRUaW1lb3V0KHJldHVyblJlc3VsdC5iaW5kKHRoaXMpLCAwKTsKKyAgICAg
ICAgdGhpcy5jYWxsTWV0aG9kKGNhbGxiYWNrLCAiY2FsY3VsYXRlIik7CiAgICAgfSwKIAotICAg
IHB1c2hCYXNlSWRzOiBmdW5jdGlvbihiYXNlU25hcHNob3RJZCwgYmFzZUlkcykKKyAgICBwdXNo
QmFzZUlkczogZnVuY3Rpb24oYmFzZUlkcykKICAgICB7Ci0gICAgICAgIHRoaXMuX2RpZmYuYmFz
ZUlkcyA9IGJhc2VJZHM7CisgICAgICAgIHRoaXMuY2FsbE1ldGhvZChudWxsLCAicHVzaEJhc2VJ
ZHMiLCBiYXNlSWRzKTsKICAgICB9LAogCiAgICAgcHVzaEJhc2VTZWxmU2l6ZXM6IGZ1bmN0aW9u
KGJhc2VTZWxmU2l6ZXMpCiAgICAgewotICAgICAgICB0aGlzLl9kaWZmLmJhc2VTZWxmU2l6ZXMg
PSBiYXNlU2VsZlNpemVzOworICAgICAgICB0aGlzLmNhbGxNZXRob2QobnVsbCwgInB1c2hCYXNl
U2VsZlNpemVzIiwgYmFzZVNlbGZTaXplcyk7CiAgICAgfQogfTsKKworV2ViSW5zcGVjdG9yLkhl
YXBTbmFwc2hvdHNEaWZmUHJveHkucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5I
ZWFwU25hcHNob3RQcm94eU9iamVjdC5wcm90b3R5cGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0hlYXBTbmFwc2hvdFdvcmtlci5qcyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSGVhcFNuYXBzaG90V29ya2VyLmpzCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVhNDhmMjkKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0hlYXBTbmFwc2hvdFdvcmtlci5qcwpA
QCAtMCwwICsxLDQ0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisg
KiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdo
dCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5h
bWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisg
KiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAor
ICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworV2ViSW5zcGVjdG9yID0ge307CitXZWJJbnNwZWN0b3IuVUlTdHJpbmcg
PSBmdW5jdGlvbihzKSB7IHJldHVybiBzOyB9OworCitpbXBvcnRTY3JpcHRzKCJCaW5hcnlTZWFy
Y2guanMiKTsKK2ltcG9ydFNjcmlwdHMoIkhlYXBTbmFwc2hvdC5qcyIpOworaW1wb3J0U2NyaXB0
cygiSGVhcFNuYXBzaG90V29ya2VyRGlzcGF0Y2hlci5qcyIpOworCitmdW5jdGlvbiBwb3N0TWVz
c2FnZVdyYXBwZXIobWVzc2FnZSkKK3sKKyAgICBwb3N0TWVzc2FnZShtZXNzYWdlKTsKK30KKwor
dmFyIGRpc3BhdGNoZXIgPSBuZXcgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFdvcmtlckRpc3Bh
dGNoZXIodGhpcywgcG9zdE1lc3NhZ2VXcmFwcGVyKTsKK2FkZEV2ZW50TGlzdGVuZXIoIm1lc3Nh
Z2UiLCBkaXNwYXRjaGVyLmRpc3BhdGNoTWVzc2FnZS5iaW5kKGRpc3BhdGNoZXIpLCBmYWxzZSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0hlYXBTbmFw
c2hvdFdvcmtlckRpc3BhdGNoZXIuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL0hlYXBTbmFwc2hvdFdvcmtlckRpc3BhdGNoZXIuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uMWYzMmVjMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvSGVhcFNuYXBzaG90V29ya2VyRGlzcGF0Y2hlci5qcwpAQCAt
MCwwICsxLDg1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBt
ZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUg
b2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJT
IEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICog
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFdvcmtlckRpc3BhdGNoZXIgPSBm
dW5jdGlvbihnbG9iYWxPYmplY3QsIHBvc3RNZXNzYWdlKQoreworICAgIHRoaXMuX29iamVjdHMg
PSBbXTsKKyAgICB0aGlzLl9nbG9iYWwgPSBnbG9iYWxPYmplY3Q7CisgICAgdGhpcy5fcG9zdE1l
c3NhZ2UgPSBwb3N0TWVzc2FnZTsKK30KKworV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFdvcmtl
ckRpc3BhdGNoZXIucHJvdG90eXBlID0geworICAgIF9maW5kRnVuY3Rpb246IGZ1bmN0aW9uKG5h
bWUpCisgICAgeworICAgICAgICB2YXIgcGF0aCA9IG5hbWUuc3BsaXQoIi4iKTsKKyAgICAgICAg
dmFyIHJlc3VsdCA9IHRoaXMuX2dsb2JhbDsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBw
YXRoLmxlbmd0aDsgKytpKQorICAgICAgICAgICAgcmVzdWx0ID0gcmVzdWx0W3BhdGhbaV1dOwor
ICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0sCisKKyAgICBkaXNwYXRjaE1lc3NhZ2U6IGZ1
bmN0aW9uKGV2ZW50KQorICAgIHsKKyAgICAgICAgdmFyIGRhdGEgPSBldmVudC5kYXRhOworICAg
ICAgICBzd2l0Y2ggKGRhdGEuZGlzcG9zaXRpb24pIHsKKyAgICAgICAgICAgIGNhc2UgImNyZWF0
ZSI6IHsKKyAgICAgICAgICAgICAgICB2YXIgY29uc3RydWN0b3JGdW5jdGlvbiA9IHRoaXMuX2Zp
bmRGdW5jdGlvbihkYXRhLm1ldGhvZE5hbWUpOworICAgICAgICAgICAgICAgIHRoaXMuX29iamVj
dHNbZGF0YS5vYmplY3RJZF0gPSBuZXcgY29uc3RydWN0b3JGdW5jdGlvbigpOworICAgICAgICAg
ICAgICAgIHRoaXMuX3Bvc3RNZXNzYWdlKHtjYWxsSWQ6IGRhdGEuY2FsbElkfSk7CisgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBjYXNlICJkaXNwb3Nl
IjogeworICAgICAgICAgICAgICAgIGRlbGV0ZSB0aGlzLl9vYmplY3RzW2RhdGEub2JqZWN0SWRd
OworICAgICAgICAgICAgICAgIHRoaXMuX3Bvc3RNZXNzYWdlKHtjYWxsSWQ6IGRhdGEuY2FsbElk
fSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBj
YXNlICJnZXR0ZXIiOiB7CisgICAgICAgICAgICAgICAgdmFyIG9iamVjdCA9IHRoaXMuX29iamVj
dHNbZGF0YS5vYmplY3RJZF07CisgICAgICAgICAgICAgICAgdmFyIHJlc3VsdCA9IG9iamVjdFtk
YXRhLm1ldGhvZE5hbWVdOworICAgICAgICAgICAgICAgIHRoaXMuX3Bvc3RNZXNzYWdlKHtjYWxs
SWQ6IGRhdGEuY2FsbElkLCByZXN1bHQ6IHJlc3VsdH0pOworICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgfQorICAgICAgICAgICAgY2FzZSAiZmFjdG9yeSI6IHsKKyAgICAgICAg
ICAgICAgICB2YXIgb2JqZWN0ID0gdGhpcy5fb2JqZWN0c1tkYXRhLm9iamVjdElkXTsKKyAgICAg
ICAgICAgICAgICB2YXIgcmVzdWx0ID0gb2JqZWN0W2RhdGEubWV0aG9kTmFtZV0uYXBwbHkob2Jq
ZWN0LCBkYXRhLm1ldGhvZEFyZ3VtZW50cyk7CisgICAgICAgICAgICAgICAgaWYgKHJlc3VsdCkK
KyAgICAgICAgICAgICAgICAgICAgdGhpcy5fb2JqZWN0c1tkYXRhLm5ld09iamVjdElkXSA9IHJl
c3VsdDsgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICB0aGlzLl9wb3N0TWVzc2FnZSh7Y2Fs
bElkOiBkYXRhLmNhbGxJZCwgcmVzdWx0OiAhIXJlc3VsdH0pOworICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgY2FzZSAibWV0aG9kIjogeworICAgICAg
ICAgICAgICAgIHZhciBvYmplY3QgPSB0aGlzLl9vYmplY3RzW2RhdGEub2JqZWN0SWRdOworICAg
ICAgICAgICAgICAgIHZhciByZXN1bHQgPSBvYmplY3RbZGF0YS5tZXRob2ROYW1lXS5hcHBseShv
YmplY3QsIGRhdGEubWV0aG9kQXJndW1lbnRzKTsKKyAgICAgICAgICAgICAgICB0aGlzLl9wb3N0
TWVzc2FnZSh7Y2FsbElkOiBkYXRhLmNhbGxJZCwgcmVzdWx0OiByZXN1bHR9KTsKKyAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK307CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1BsZWFzZVdhaXRNZXNz
YWdlLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9QbGVhc2VXYWl0TWVz
c2FnZS5qcwppbmRleCBjNWRkZDQ5Li44NGNkYTE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1BsZWFzZVdhaXRNZXNzYWdlLmpzCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUGxlYXNlV2FpdE1lc3NhZ2UuanMKQEAgLTgxLDI3
ICs4MSwyMiBAQCBXZWJJbnNwZWN0b3IuUGxlYXNlV2FpdE1lc3NhZ2UucHJvdG90eXBlID0gewog
ICAgICAgICBlbGVtZW50LmFwcGVuZENoaWxkKG1lc3NhZ2UpOwogICAgIH0sCiAKLSAgICBzdGFy
dEFjdGlvbjogZnVuY3Rpb24oZWxlbWVudCwgYWN0aW9uQ2FsbGJhY2ssIGNhbmNlbENhbGxiYWNr
KQorICAgIHNob3dBbmRXYWl0Rm9yOiBmdW5jdGlvbihlbGVtZW50LCBsaXN0ZW5PYmplY3QsIGxp
c3RlbkV2ZW50KQogICAgIHsKICAgICAgICAgdmFyIGluc3RhbmNlID0gV2ViSW5zcGVjdG9yLlBs
ZWFzZVdhaXRNZXNzYWdlLnByb3RvdHlwZS5pbnN0YW5jZTsKICAgICAgICAgdmFyIG1lc3NhZ2Ug
PSBpbnN0YW5jZS5lbGVtZW50OwotICAgICAgICBpZiAobWVzc2FnZS5wYXJlbnROb2RlID09PSBl
bGVtZW50KSB7Ci0gICAgICAgICAgICBzZXRUaW1lb3V0KGFjdGlvbkNhbGxiYWNrLCAwKTsKKyAg
ICAgICAgaWYgKG1lc3NhZ2UucGFyZW50Tm9kZSA9PT0gZWxlbWVudCkKICAgICAgICAgICAgIHJl
dHVybjsKLSAgICAgICAgfQotICAgICAKLSAgICAgICAgZnVuY3Rpb24gZG9BY3Rpb24oKQotICAg
ICAgICB7Ci0gICAgICAgICAgICB0cnkgewotICAgICAgICAgICAgICAgIGFjdGlvbkNhbGxiYWNr
KCk7Ci0gICAgICAgICAgICB9IGZpbmFsbHkgewotICAgICAgICAgICAgICAgIGlmIChtZXNzYWdl
LnBhcmVudE5vZGUpCi0gICAgICAgICAgICAgICAgICAgIG1lc3NhZ2UucGFyZW50Tm9kZS5yZW1v
dmVDaGlsZChtZXNzYWdlKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQogCi0gICAgICAgIFdl
Ykluc3BlY3Rvci5QbGVhc2VXYWl0TWVzc2FnZS5wcm90b3R5cGUuc2hvdyhlbGVtZW50LCBjYW5j
ZWxDYWxsYmFjayk7Ci0gICAgICAgIHNldFRpbWVvdXQoZG9BY3Rpb24sIDApOworICAgICAgICBs
aXN0ZW5PYmplY3QuYWRkRXZlbnRMaXN0ZW5lcihsaXN0ZW5FdmVudCwgV2ViSW5zcGVjdG9yLlBs
ZWFzZVdhaXRNZXNzYWdlLnByb3RvdHlwZS51bmxpc3RlbkFuZEhpZGUuYmluZChpbnN0YW5jZSwg
bGlzdGVuT2JqZWN0LCBsaXN0ZW5FdmVudCksIGluc3RhbmNlKTsKKyAgICAgICAgV2ViSW5zcGVj
dG9yLlBsZWFzZVdhaXRNZXNzYWdlLnByb3RvdHlwZS5zaG93KGVsZW1lbnQpOworICAgIH0sCisK
KyAgICB1bmxpc3RlbkFuZEhpZGU6IGZ1bmN0aW9uKGxpc3Rlbk9iamVjdCwgbGlzdGVuRXZlbnQp
CisgICAgeworICAgICAgICB2YXIgaW5zdGFuY2UgPSBXZWJJbnNwZWN0b3IuUGxlYXNlV2FpdE1l
c3NhZ2UucHJvdG90eXBlLmluc3RhbmNlOworICAgICAgICBsaXN0ZW5PYmplY3QucmVtb3ZlRXZl
bnRMaXN0ZW5lcihsaXN0ZW5FdmVudCwgV2ViSW5zcGVjdG9yLlBsZWFzZVdhaXRNZXNzYWdlLnBy
b3RvdHlwZS51bmxpc3RlbkFuZEhpZGUsIGluc3RhbmNlKTsKKyAgICAgICAgV2ViSW5zcGVjdG9y
LlBsZWFzZVdhaXRNZXNzYWdlLnByb3RvdHlwZS5oaWRlKCk7CiAgICAgfQogfTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Qcm9maWxlc1BhbmVsLmpz
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Qcm9maWxlc1BhbmVsLmpzCmlu
ZGV4IGQ5YTExNzguLjA2NWExMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvUHJvZmlsZXNQYW5lbC5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL1Byb2ZpbGVzUGFuZWwuanMKQEAgLTQ1OSw3ICs0NTksNyBAQCBXZWJJbnNw
ZWN0b3IuUHJvZmlsZXNQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB9CiAgICAgICAg
IH0gZWxzZSB7CiAgICAgICAgICAgICBpZiAoIXByb2ZpbGUucHJveHkpCi0gICAgICAgICAgICAg
ICAgcHJvZmlsZS5wcm94eSA9IG5ldyBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90UHJveHkoKTsK
KyAgICAgICAgICAgICAgICBwcm9maWxlLnByb3h5ID0gKG5ldyBXZWJJbnNwZWN0b3IuSGVhcFNu
YXBzaG90V29ya2VyKCkpLmNyZWF0ZU9iamVjdCgiV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdExv
YWRlciIpOwogICAgICAgICAgICAgdmFyIHByb3h5ID0gcHJvZmlsZS5wcm94eTsKICAgICAgICAg
ICAgIGlmIChwcm94eS5zdGFydExvYWRpbmcoY2FsbGJhY2spKSB7CiAgICAgICAgICAgICAgICAg
cHJvZmlsZS5zaWRlQmFyRWxlbWVudC5zdWJ0aXRsZSA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygi
TG9hZGluZ1x1MjAyNiIpOwpAQCAtNTE3LDkgKzUxNywxMCBAQCBXZWJJbnNwZWN0b3IuUHJvZmls
ZXNQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICBpZiAoIXByb2ZpbGUucHJveHkpCiAg
ICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgdmFyIHByb3h5ID0gcHJvZmlsZS5w
cm94eTsKLSAgICAgICAgICAgIGZ1bmN0aW9uIHBhcnNlZCgpCisgICAgICAgICAgICBmdW5jdGlv
biBwYXJzZWQoc25hcHNob3RQcm94eSkKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBw
cm9maWxlLnNpZGVCYXJFbGVtZW50LnN1YnRpdGxlID0gTnVtYmVyLmJ5dGVzVG9TdHJpbmcocHJv
eHkudG90YWxTaXplKTsKKyAgICAgICAgICAgICAgICBwcm9maWxlLnByb3h5ID0gc25hcHNob3RQ
cm94eTsKKyAgICAgICAgICAgICAgICBwcm9maWxlLnNpZGVCYXJFbGVtZW50LnN1YnRpdGxlID0g
TnVtYmVyLmJ5dGVzVG9TdHJpbmcoc25hcHNob3RQcm94eS50b3RhbFNpemUpOwogICAgICAgICAg
ICAgfQogICAgICAgICAgICAgaWYgKHByb3h5LmZpbmlzaExvYWRpbmcocGFyc2VkKSkKICAgICAg
ICAgICAgICAgICBwcm9maWxlLnNpZGVCYXJFbGVtZW50LnN1YnRpdGxlID0gV2ViSW5zcGVjdG9y
LlVJU3RyaW5nKCJQYXJzaW5nXHUyMDI2Iik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL1dlYktpdC5xcmMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL1dlYktpdC5xcmMKaW5kZXggMWI1Y2IzOS4uMWRiZmVmNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9XZWJLaXQucXJjCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvV2ViS2l0LnFyYwpAQCAtOCw2ICs4LDcgQEAK
ICAgICA8ZmlsZT5BdWRpdFJlc3VsdFZpZXcuanM8L2ZpbGU+CiAgICAgPGZpbGU+QXVkaXRSdWxl
cy5qczwvZmlsZT4KICAgICA8ZmlsZT5BdWRpdHNQYW5lbC5qczwvZmlsZT4KKyAgICA8ZmlsZT5C
aW5hcnlTZWFyY2guanM8L2ZpbGU+CiAgICAgPGZpbGU+Qm90dG9tVXBQcm9maWxlRGF0YUdyaWRU
cmVlLmpzPC9maWxlPgogICAgIDxmaWxlPkJyZWFrcG9pbnRzU2lkZWJhclBhbmUuanM8L2ZpbGU+
CiAgICAgPGZpbGU+Q2FsbFN0YWNrU2lkZWJhclBhbmUuanM8L2ZpbGU+CkBAIC01Miw2ICs1Myw4
IEBACiAgICAgPGZpbGU+SGVhcFNuYXBzaG90LmpzPC9maWxlPgogICAgIDxmaWxlPkhlYXBTbmFw
c2hvdFByb3h5LmpzPC9maWxlPgogICAgIDxmaWxlPkhlYXBTbmFwc2hvdFZpZXcuanM8L2ZpbGU+
CisgICAgPGZpbGU+SGVhcFNuYXBzaG90V29ya2VyLmpzPC9maWxlPgorICAgIDxmaWxlPkhlYXBT
bmFwc2hvdFdvcmtlckRpc3BhdGNoZXIuanM8L2ZpbGU+CiAgICAgPGZpbGU+SGVscFNjcmVlbi5q
czwvZmlsZT4KICAgICA8ZmlsZT5JbWFnZVZpZXcuanM8L2ZpbGU+CiAgICAgPGZpbGU+SW5qZWN0
ZWRGYWtlV29ya2VyLmpzPC9maWxlPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuaHRtbCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvaW5zcGVjdG9yLmh0bWwKaW5kZXggMThjMjU2NC4uMGJjMmI3YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuaHRtbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5odG1sCkBAIC0z
OSw2ICszOSw3IEBAIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0
ZXh0L2NzcyIgaHJlZj0icG9wb3Zlci5jc3MiPgogICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIg
dHlwZT0idGV4dC9jc3MiIGhyZWY9InRleHRWaWV3ZXIuY3NzIj4KICAgICA8c2NyaXB0IHR5cGU9
InRleHQvamF2YXNjcmlwdCIgc3JjPSJ1dGlsaXRpZXMuanMiPjwvc2NyaXB0PgorICAgIDxzY3Jp
cHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IkJpbmFyeVNlYXJjaC5qcyI+PC9zY3JpcHQ+
CiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0idHJlZW91dGxpbmUuanMi
Pjwvc2NyaXB0PgogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imluc3Bl
Y3Rvci5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNy
Yz0iSW5zcGVjdG9yQmFja2VuZFN0dWIuanMiPjwvc2NyaXB0PgpAQCAtMTQyLDYgKzE0Myw3IEBA
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iSGVhcFNu
YXBzaG90LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIg
c3JjPSJIZWFwU25hcHNob3RQcm94eS5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCB0eXBlPSJ0
ZXh0L2phdmFzY3JpcHQiIHNyYz0iSGVhcFNuYXBzaG90Vmlldy5qcyI+PC9zY3JpcHQ+CisgICAg
PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iSGVhcFNuYXBzaG90V29ya2VyRGlz
cGF0Y2hlci5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQi
IHNyYz0iRGV0YWlsZWRIZWFwc2hvdEdyaWROb2Rlcy5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlw
dCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iRGV0YWlsZWRIZWFwc2hvdFZpZXcuanMiPjwv
c2NyaXB0PgogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IkRlYnVnZ2Vy
TW9kZWwuanMiPjwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC91dGlsaXRpZXMuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL3V0aWxpdGllcy5qcwppbmRleCBhMTQ3MTgxLi44Zjg5ZGI3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL3V0aWxpdGllcy5qcworKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL3V0aWxpdGllcy5qcwpAQCAtNzY4LDQ2ICs3Njgs
NiBAQCBBcnJheS5jb252ZXJ0ID0gZnVuY3Rpb24obGlzdCkKICAgICByZXR1cm4gQXJyYXkucHJv
dG90eXBlLnNsaWNlLmNhbGwobGlzdCk7CiB9CiAKLWZ1bmN0aW9uIGJpbmFyeVNlYXJjaChvYmpl
Y3QsIGFycmF5LCBjb21wYXJhdG9yKQotewotICAgIHZhciBmaXJzdCA9IDA7Ci0gICAgdmFyIGxh
c3QgPSBhcnJheS5sZW5ndGggLSAxOwotCi0gICAgd2hpbGUgKGZpcnN0IDw9IGxhc3QpIHsKLSAg
ICAgICAgdmFyIG1pZCA9IChmaXJzdCArIGxhc3QpID4+IDE7Ci0gICAgICAgIHZhciBjID0gY29t
cGFyYXRvcihvYmplY3QsIGFycmF5W21pZF0pOwotICAgICAgICBpZiAoYyA+IDApCi0gICAgICAg
ICAgICBmaXJzdCA9IG1pZCArIDE7Ci0gICAgICAgIGVsc2UgaWYgKGMgPCAwKQotICAgICAgICAg
ICAgbGFzdCA9IG1pZCAtIDE7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJldHVybiBtaWQ7
Ci0gICAgfQotCi0gICAgLy8gUmV0dXJuIHRoZSBuZWFyZXN0IGxlc3NlciBpbmRleCwgIi0xIiBt
ZWFucyAiMCwgIi0yIiBtZWFucyAiMSIsIGV0Yy4KLSAgICByZXR1cm4gLShmaXJzdCArIDEpOwot
fQotCi1PYmplY3QuZGVmaW5lUHJvcGVydHkoQXJyYXkucHJvdG90eXBlLCAiYmluYXJ5SW5kZXhP
ZiIsIHsgdmFsdWU6IGZ1bmN0aW9uKHZhbHVlLCBjb21wYXJhdG9yKQotewotICAgIHZhciByZXN1
bHQgPSBiaW5hcnlTZWFyY2godmFsdWUsIHRoaXMsIGNvbXBhcmF0b3IpOwotICAgIHJldHVybiBy
ZXN1bHQgPj0gMCA/IHJlc3VsdCA6IC0xOwotfX0pOwotCi1mdW5jdGlvbiBpbnNlcnRpb25JbmRl
eEZvck9iamVjdEluTGlzdFNvcnRlZEJ5RnVuY3Rpb24oYW5PYmplY3QsIGFMaXN0LCBhRnVuY3Rp
b24pCi17Ci0gICAgdmFyIGluZGV4ID0gYmluYXJ5U2VhcmNoKGFuT2JqZWN0LCBhTGlzdCwgYUZ1
bmN0aW9uKTsKLSAgICBpZiAoaW5kZXggPCAwKQotICAgICAgICAvLyBTZWUgYmluYXJ5U2VhcmNo
IGltcGxlbWVudGF0aW9uLgotICAgICAgICByZXR1cm4gLWluZGV4IC0gMTsKLSAgICBlbHNlIHsK
LSAgICAgICAgLy8gUmV0dXJuIHRoZSBmaXJzdCBvY2N1cmFuY2Ugb2YgYW4gaXRlbSBpbiB0aGUg
bGlzdC4KLSAgICAgICAgd2hpbGUgKGluZGV4ID4gMCAmJiBhRnVuY3Rpb24oYW5PYmplY3QsIGFM
aXN0W2luZGV4IC0gMV0pID09PSAwKQotICAgICAgICAgICAgaW5kZXgtLTsKLSAgICAgICAgcmV0
dXJuIGluZGV4OyAgICAgICAgCi0gICAgfQotfQotCiBTdHJpbmcuc3ByaW50ZiA9IGZ1bmN0aW9u
KGZvcm1hdCkKIHsKICAgICByZXR1cm4gU3RyaW5nLnZzcHJpbnRmKGZvcm1hdCwgQXJyYXkucHJv
dG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLCAxKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9n
CmluZGV4IDNmNDJiYjEuLmY5NzMyOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTIgQEAKKzIwMTEtMDQtMjEgIE1pa2hhaWwgTmFnYW5vdiAgPG1uYWdhbm92QGNocm9t
aXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBXZWIgSW5zcGVjdG9yOiBbQ2hyb21pdW1dIE1vdmUgZGV0YWlsZWQgaGVhcCBzbmFwc2hvdHMg
c3RvcmFnZSBhbmQgcHJvY2Vzc2luZyBpbnRvIHdvcmtlcnMuCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01OTA5NAorCisgICAgICAgICogV2ViS2l0Lmd5
cDoKKwogMjAxMS0wNC0yMCAgRG9taW5pYyBDb29uZXkgIDxkb21pbmljY0BjaHJvbWl1bS5vcmc+
CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGltaXRyaSBHbGF6a292LgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9X
ZWJLaXQuZ3lwCmluZGV4IDBlZTVkZDYuLjJhMjAzNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vV2ViS2l0Lmd5cAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktp
dC5neXAKQEAgLTc3NCw2ICs3NzQsNyBAQAogICAgICAgICAgICAgJ2NvbmRpdGlvbnMnOiBbCiAg
ICAgICAgICAgICAgICAgWydkZWJ1Z19kZXZ0b29scz09MCcsIHsKICAgICAgICAgICAgICAgICAg
ICAgJ2RlcGVuZGVuY2llcyc6IFsnY29uY2F0ZW5hdGVkX2RldnRvb2xzX2pzJywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY29uY2F0ZW5hdGVkX2hlYXBfc25hcHNob3Rf
d29ya2VyX2pzJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY29uY2F0
ZW5hdGVkX3NjcmlwdF9mb3JtYXR0ZXJfd29ya2VyX2pzJywKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAnY29uY2F0ZW5hdGVkX2RldnRvb2xzX2NzcyddLAogICAgICAgICAg
ICAgICAgIH0sewpAQCAtNzg5LDYgKzc5MCw3IEBACiAgICAgICAgICAgICAgICAgJ2lucHV0X3Bh
Z2VzJzogWwogICAgICAgICAgICAgICAgICAgICAnPChQUk9EVUNUX0RJUikvcmVzb3VyY2VzL2lu
c3BlY3Rvci9kZXZ0b29scy5odG1sJywKICAgICAgICAgICAgICAgICAgICAgJzwoUFJPRFVDVF9E
SVIpL3Jlc291cmNlcy9pbnNwZWN0b3IvRGV2VG9vbHMuanMnLAorICAgICAgICAgICAgICAgICAg
ICAnPChQUk9EVUNUX0RJUikvcmVzb3VyY2VzL2luc3BlY3Rvci9IZWFwU25hcHNob3RXb3JrZXIu
anMnLAogICAgICAgICAgICAgICAgICAgICAnPChQUk9EVUNUX0RJUikvcmVzb3VyY2VzL2luc3Bl
Y3Rvci9TY3JpcHRGb3JtYXR0ZXJXb3JrZXIuanMnLAogICAgICAgICAgICAgICAgICAgICAnPChQ
Uk9EVUNUX0RJUikvcmVzb3VyY2VzL2luc3BlY3Rvci9kZXZUb29scy5jc3MnLAogICAgICAgICAg
ICAgICAgIF0sCkBAIC0xMTk2LDYgKzExOTgsMjQgQEAKICAgICAgICAgICAgICAgICAgICAgfV0s
CiAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
ICAgICd0YXJnZXRfbmFtZSc6ICdjb25jYXRlbmF0ZWRfaGVhcF9zbmFwc2hvdF93b3JrZXJfanMn
LAorICAgICAgICAgICAgICAgICAgICAndHlwZSc6ICdub25lJywKKyAgICAgICAgICAgICAgICAg
ICAgJ2FjdGlvbnMnOiBbeworICAgICAgICAgICAgICAgICAgICAgICAgJ2FjdGlvbl9uYW1lJzog
J2NvbmNhdGVuYXRlX2hlYXBfc25hcHNob3Rfd29ya2VyX2pzJywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICdzY3JpcHRfbmFtZSc6ICdzY3JpcHRzL2lubGluZV9qc19pbXBvcnRzLnB5JywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICdpbnB1dF9maWxlJzogJy4uLy4uL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9IZWFwU25hcHNob3RXb3JrZXIuanMnLAorICAgICAgICAgICAgICAgICAg
ICAgICAgJ2lucHV0cyc6IFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnPEAoX3Njcmlw
dF9uYW1lKScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy4uLy4uL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9CaW5hcnlTZWFyY2guanMnLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICcuLi8uLi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSGVhcFNuYXBzaG90Lmpz
JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLi4vLi4vV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL0hlYXBTbmFwc2hvdFdvcmtlckRpc3BhdGNoZXIuanMnLAorICAgICAgICAgICAg
ICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICdzZWFyY2hfcGF0aCc6ICcu
Li8uLi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQnLAorICAgICAgICAgICAgICAgICAgICAg
ICAgJ291dHB1dHMnOiBbJzwoUFJPRFVDVF9ESVIpL3Jlc291cmNlcy9pbnNwZWN0b3IvSGVhcFNu
YXBzaG90V29ya2VyLmpzJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAnYWN0aW9uJzogWydw
eXRob24nLCAnPEAoX3NjcmlwdF9uYW1lKScsICc8QChfaW5wdXRfZmlsZSknLCAnPEAoX3NlYXJj
aF9wYXRoKScsICc8QChfb3V0cHV0cyknXSwKKyAgICAgICAgICAgICAgICAgICAgfV0sCisgICAg
ICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICd0
YXJnZXRfbmFtZSc6ICdjb25jYXRlbmF0ZWRfc2NyaXB0X2Zvcm1hdHRlcl93b3JrZXJfanMnLAog
ICAgICAgICAgICAgICAgICAgICAndHlwZSc6ICdub25lJywKICAgICAgICAgICAgICAgICAgICAg
J2FjdGlvbnMnOiBbewo=
</data>
<flag name="commit-queue"
          id="83304"
          type_id="3"
          status="-"
          setter="mnaganov"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>90698</attachid>
            <date>2011-04-22 06:14:48 -0700</date>
            <delta_ts>2011-04-22 06:41:24 -0700</delta_ts>
            <desc>rebase after r84619</desc>
            <filename>patch-59094</filename>
            <type>text/plain</type>
            <size>54676</size>
            <attacher name="Mikhail Naganov">mnaganov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBkY2M4NTA1Li5kN2JjOGYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMTI5
IEBACiAyMDExLTA0LTIyICBNaWtoYWlsIE5hZ2Fub3YgIDxtbmFnYW5vdkBjaHJvbWl1bS5vcmc+
CiAKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViIElu
c3BlY3RvcjogW0Nocm9taXVtXSBNb3ZlIGRldGFpbGVkIGhlYXAgc25hcHNob3RzIHN0b3JhZ2Ug
YW5kIHByb2Nlc3NpbmcgaW50byB3b3JrZXJzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTkwOTQKKworICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAg
ICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajoKKyAgICAgICAgKiBneXAvc3Ry
ZWFtbGluZS1pbnNwZWN0b3Itc291cmNlLnNoOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1l
bmQvRGV0YWlsZWRIZWFwc2hvdEdyaWROb2Rlcy5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5I
ZWFwU25hcHNob3RHcmlkTm9kZS5wcm90b3R5cGUuZGlzcG9zZSk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuSGVhcFNuYXBzaG90T2JqZWN0Tm9kZS5wcm90b3R5cGUuX2NyZWF0ZVByb3ZpZGVyKToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RJbnN0YW5jZU5vZGUucHJvdG90eXBl
Ll9jcmVhdGVQcm92aWRlcik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90Q29u
c3RydWN0b3JOb2RlLnByb3RvdHlwZS5fY3JlYXRlTm9kZXNQcm92aWRlcik6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90SXRlcmF0b3JzVHVwbGUucHJvdG90eXBlLmRpc3Bvc2Up
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdERpZmZOb2RlLnByb3RvdHlwZS5j
YWxjdWxhdGVEaWZmLmRpZmZDYWxjdWxhdGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFw
U25hcHNob3REaWZmTm9kZS5wcm90b3R5cGUuX2NyZWF0ZU5vZGVzUHJvdmlkZXIuY3JlYXRlUHJv
dmlkZXIpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdERpZmZOb2RlLnByb3Rv
dHlwZS5fY3JlYXRlTm9kZXNQcm92aWRlcik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNu
YXBzaG90RG9taW5hdG9yT2JqZWN0Tm9kZS5wcm90b3R5cGUuX2NyZWF0ZVByb3ZpZGVyKToKKyAg
ICAgICAgKE1peEluU25hcHNob3ROb2RlRnVuY3Rpb25zKToKKyAgICAgICAgKiBpbnNwZWN0b3Iv
ZnJvbnQtZW5kL0RldGFpbGVkSGVhcHNob3RWaWV3LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LkhlYXBTbmFwc2hvdFNvcnRhYmxlRGF0YUdyaWQucHJvdG90eXBlLmRpc3Bvc2UpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFNvcnRhYmxlRGF0YUdyaWQucHJvdG90eXBlLnJl
c2V0U29ydGluZ0NhY2hlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3REaWZm
RGF0YUdyaWQucHJvdG90eXBlLnNldEJhc2VEYXRhU291cmNlKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5IZWFwU25hcHNob3RSZXRhaW5pbmdQYXRoc0xpc3QucHJvdG90eXBlLmRpc3Bvc2UpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFJldGFpbmluZ1BhdGhzTGlzdC5wcm90
b3R5cGUuX3Jlc2V0UGF0aHMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFJl
dGFpbmluZ1BhdGhzTGlzdC5wcm90b3R5cGUuc2V0RGF0YVNvdXJjZSk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuSGVhcFNuYXBzaG90UmV0YWluaW5nUGF0aHNMaXN0LnByb3RvdHlwZS5zaG93TmV4
dCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90UmV0YWluaW5nUGF0aHNMaXN0
LnByb3RvdHlwZS5zZWFyY2hDYW5jZWxsZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBT
bmFwc2hvdFJldGFpbmluZ1BhdGhzTGlzdC5wcm90b3R5cGUuX3NldFJvb3RDaGlsZHJlbkZvckZp
bmRlcik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGV0YWlsZWRIZWFwc2hvdFZpZXcucHJvdG90
eXBlLmRpc3Bvc2UpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRldGFpbGVkSGVhcHNob3RWaWV3
LnByb3RvdHlwZS5nZXQgcHJvZmlsZVdyYXBwZXIpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRl
dGFpbGVkSGVhcHNob3RWaWV3LnByb3RvdHlwZS5nZXQgYmFzZVByb2ZpbGVXcmFwcGVyKToKKyAg
ICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0hlYXBTbmFwc2hvdC5qczoKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5IZWFwU25hcHNob3RMb2FkZXIpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhl
YXBTbmFwc2hvdExvYWRlci5wcm90b3R5cGUuZmluaXNoTG9hZGluZyk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuSGVhcFNuYXBzaG90TG9hZGVyLnByb3RvdHlwZS5wdXNoSlNPTkNodW5rKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3QucHJvdG90eXBlLnB1c2hCYXNlSWRzKToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3QucHJvdG90eXBlLmNyZWF0ZURpZmYp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdC5wcm90b3R5cGUuX3BhcnNlRmls
dGVyKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3QucHJvdG90eXBlLmNyZWF0
ZUVkZ2VzUHJvdmlkZXIpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdC5wcm90
b3R5cGUuY3JlYXRlTm9kZXNQcm92aWRlcik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNu
YXBzaG90LnByb3RvdHlwZS5jcmVhdGVQYXRoRmluZGVyKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5IZWFwU25hcHNob3QucHJvdG90eXBlLnVwZGF0ZVN0YXRpY0RhdGEpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLkhlYXBTbmFwc2hvdFBhdGhGaW5kZXIpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LkhlYXBTbmFwc2hvdFBhdGhGaW5kZXIucHJvdG90eXBlLnVwZGF0ZVJvb3RzKToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RQYXRoRmluZGVyLnByb3RvdHlwZS5fcmVzZXQpOgor
ICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvSGVhcFNuYXBzaG90UHJveHkuanM6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90UmVhbFdvcmtlcik6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuSGVhcFNuYXBzaG90UmVhbFdvcmtlci5wcm90b3R5cGUuX21lc3NhZ2VSZWNlaXZl
ZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90UmVhbFdvcmtlci5wcm90b3R5
cGUucG9zdE1lc3NhZ2UpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFJlYWxX
b3JrZXIucHJvdG90eXBlLnRlcm1pbmF0ZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNu
YXBzaG90RmFrZVdvcmtlcik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90RmFr
ZVdvcmtlci5wcm90b3R5cGUucG9zdE1lc3NhZ2UpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhl
YXBTbmFwc2hvdEZha2VXb3JrZXIucHJvdG90eXBlLnRlcm1pbmF0ZSk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuSGVhcFNuYXBzaG90RmFrZVdvcmtlci5wcm90b3R5cGUuX3Bvc3RNZXNzYWdlRnJv
bVdvcmtlcik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90V29ya2VyKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RXb3JrZXIucHJvdG90eXBlLmNyZWF0ZU9i
amVjdCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90V29ya2VyLnByb3RvdHlw
ZS5kaXNwb3NlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RXb3JrZXIucHJv
dG90eXBlLmRpc3Bvc2VPYmplY3QpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hv
dFdvcmtlci5wcm90b3R5cGUuY2FsbEdldHRlcik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVh
cFNuYXBzaG90V29ya2VyLnByb3RvdHlwZS5jYWxsRmFjdG9yeU1ldGhvZC53cmFwQ2FsbGJhY2sp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFdvcmtlci5wcm90b3R5cGUuY2Fs
bEZhY3RvcnlNZXRob2QpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFdvcmtl
ci5wcm90b3R5cGUuY2FsbE1ldGhvZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBz
aG90V29ya2VyLnByb3RvdHlwZS5fZmluZEZ1bmN0aW9uKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5IZWFwU25hcHNob3RXb3JrZXIucHJvdG90eXBlLl9tZXNzYWdlUmVjZWl2ZWQpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFdvcmtlci5wcm90b3R5cGUuX3Bvc3RNZXNzYWdl
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RQcm94eU9iamVjdCk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90UHJveHlPYmplY3QucHJvdG90eXBlLl9jYWxs
V29ya2VyKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RQcm94eU9iamVjdC5w
cm90b3R5cGUuZGlzcG9zZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90UHJv
eHlPYmplY3QucHJvdG90eXBlLmRpc3Bvc2VXb3JrZXIpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LkhlYXBTbmFwc2hvdFByb3h5T2JqZWN0LnByb3RvdHlwZS5jYWxsRmFjdG9yeU1ldGhvZCk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90UHJveHlPYmplY3QucHJvdG90eXBlLmNh
bGxHZXR0ZXIpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFByb3h5T2JqZWN0
LnByb3RvdHlwZS5jYWxsTWV0aG9kKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNo
b3RMb2FkZXJQcm94eSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90TG9hZGVy
UHJveHkucHJvdG90eXBlLmZpbmlzaExvYWRpbmcuY2FsbExvYWRDYWxsYmFja3MpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdExvYWRlclByb3h5LnByb3RvdHlwZS5maW5pc2hM
b2FkaW5nLnVwZGF0ZVN0YXRpY0RhdGEpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFw
c2hvdExvYWRlclByb3h5LnByb3RvdHlwZS5maW5pc2hMb2FkaW5nKToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5IZWFwU25hcHNob3RMb2FkZXJQcm94eS5wcm90b3R5cGUuZ2V0IGxvYWRlZCk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90TG9hZGVyUHJveHkucHJvdG90eXBlLnN0
YXJ0TG9hZGluZyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90TG9hZGVyUHJv
eHkucHJvdG90eXBlLnB1c2hKU09OQ2h1bmspOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBT
bmFwc2hvdFByb3h5KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RQcm94eS5w
cm90b3R5cGUuYWdncmVnYXRlcyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90
UHJveHkucHJvdG90eXBlLmNyZWF0ZURpZmYpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBT
bmFwc2hvdFByb3h5LnByb3RvdHlwZS5jcmVhdGVFZGdlc1Byb3ZpZGVyKToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5IZWFwU25hcHNob3RQcm94eS5wcm90b3R5cGUuY3JlYXRlTm9kZXNQcm92aWRl
cik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90UHJveHkucHJvdG90eXBlLmNy
ZWF0ZVBhdGhGaW5kZXIpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFByb3h5
LnByb3RvdHlwZS5kaXNwb3NlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RQ
cm94eS5wcm90b3R5cGUuZmluaXNoTG9hZGluZyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVh
cFNuYXBzaG90UHJveHkucHJvdG90eXBlLmdldCBsb2FkZWQpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLkhlYXBTbmFwc2hvdFByb3h5LnByb3RvdHlwZS5nZXQgbm9kZUNvdW50KToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RQcm94eS5wcm90b3R5cGUubm9kZUZpZWxkVmFsdWVz
QnlJbmRleCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90UHJveHkucHJvdG90
eXBlLnB1c2hCYXNlSWRzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RQcm94
eS5wcm90b3R5cGUuZ2V0IHJvb3ROb2RlSW5kZXgpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhl
YXBTbmFwc2hvdFByb3h5LnByb3RvdHlwZS51cGRhdGVTdGF0aWNEYXRhKToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5IZWFwU25hcHNob3RQcm94eS5wcm90b3R5cGUuc3RhcnRMb2FkaW5nKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RQcm94eS5wcm90b3R5cGUuZ2V0IHRvdGFs
U2l6ZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90UHJveHkucHJvdG90eXBl
LmdldCB1aWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFByb3ZpZGVyUHJv
eHkpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFByb3ZpZGVyUHJveHkucHJv
dG90eXBlLmlzRW1wdHkpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFByb3Zp
ZGVyUHJveHkucHJvdG90eXBlLnNlcmlhbGl6ZU5leHRJdGVtcyk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuSGVhcFNuYXBzaG90UHJvdmlkZXJQcm94eS5wcm90b3R5cGUuc29ydEFuZFJld2luZCk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90UGF0aEZpbmRlclByb3h5KToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RQYXRoRmluZGVyUHJveHkucHJvdG90eXBl
LmZpbmROZXh0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RQYXRoRmluZGVy
UHJveHkucHJvdG90eXBlLnVwZGF0ZVJvb3RzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFw
U25hcHNob3RzRGlmZlByb3h5KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3Rz
RGlmZlByb3h5LnByb3RvdHlwZS5jYWxjdWxhdGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhl
YXBTbmFwc2hvdHNEaWZmUHJveHkucHJvdG90eXBlLnB1c2hCYXNlSWRzKToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5IZWFwU25hcHNob3RzRGlmZlByb3h5LnByb3RvdHlwZS5wdXNoQmFzZVNlbGZT
aXplcyk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9IZWFwU25hcHNob3RXb3JrZXIu
anM6IEFkZGVkLgorICAgICAgICAoV2ViSW5zcGVjdG9yLlVJU3RyaW5nKToKKyAgICAgICAgKHBv
c3RNZXNzYWdlV3JhcHBlcik6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9IZWFwU25h
cHNob3RXb3JrZXJEaXNwYXRjaGVyLmpzOiBBZGRlZC4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5I
ZWFwU25hcHNob3RXb3JrZXJEaXNwYXRjaGVyKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFw
U25hcHNob3RXb3JrZXJEaXNwYXRjaGVyLnByb3RvdHlwZS5fZmluZEZ1bmN0aW9uKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RXb3JrZXJEaXNwYXRjaGVyLnByb3RvdHlwZS5k
aXNwYXRjaE1lc3NhZ2UpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvUHJvZmlsZXNQ
YW5lbC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Qcm9maWxlc1BhbmVsLnByb3RvdHlwZS5s
b2FkSGVhcFNuYXBzaG90KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Qcm9maWxlc1BhbmVsLnBy
b3RvdHlwZS5fZmluaXNoSGVhcFNuYXBzaG90LmVsc2UucGFyc2VkKToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5Qcm9maWxlc1BhbmVsLnByb3RvdHlwZS5fZmluaXNoSGVhcFNuYXBzaG90KToKKyAg
ICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1dlYktpdC5xcmM6CisgICAgICAgICogaW5zcGVj
dG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuaHRtbDoKKworMjAxMS0wNC0yMiAgTWlraGFpbCBOYWdh
bm92ICA8bW5hZ2Fub3ZAY2hyb21pdW0ub3JnPgorCiAgICAgICAgIFJldmlld2VkIGJ5IFBhdmVs
IEZlbGRtYW4uCiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogW0Nocm9taXVtXSBSZWZhY3RvciBj
b2RlIHByaW9yIHRvIG1vdmluZyBkZXRhaWxlZCBoZWFwIHNuYXBzaG90cyBpbnRvIHdvcmtlcnMu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLmd5cGkKaW5kZXggNzBiNWQ5MS4uODhjZTY2ZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpA
QCAtNjIyOSw2ICs2MjI5LDggQEAKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0hl
YXBTbmFwc2hvdC5qcycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9IZWFwU25h
cHNob3RQcm94eS5qcycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9IZWFwU25h
cHNob3RWaWV3LmpzJywKKyAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0hlYXBTbmFw
c2hvdFdvcmtlci5qcycsCisgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9IZWFwU25h
cHNob3RXb3JrZXJEaXNwYXRjaGVyLmpzJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQt
ZW5kL0hlbHBTY3JlZW4uanMnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvSW1h
Z2VWaWV3LmpzJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0luc3BlY3RvckZy
b250ZW5kSG9zdFN0dWIuanMnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52
Y3Byb2ovV2ViQ29yZS52Y3Byb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJD
b3JlLnZjcHJvagppbmRleCA5ZjVjMjRjLi5mMmVkOGU1IDEwMDc1NQotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagpAQCAtNjc0MDEsNiArNjc0MDEsMTQgQEAKIAkJ
CQkJPgogCQkJCTwvRmlsZT4KIAkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGluc3Bl
Y3Rvclxmcm9udC1lbmRcSGVhcFNuYXBzaG90V29ya2VyLmpzIgorCQkJCQk+CisJCQkJPC9GaWxl
PgorCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5caW5zcGVjdG9yXGZyb250LWVuZFxI
ZWFwU25hcHNob3RXb3JrZXJEaXNwYXRjaGVyLmpzIgorCQkJCQk+CisJCQkJPC9GaWxlPgorCQkJ
CTxGaWxlCiAJCQkJCVJlbGF0aXZlUGF0aD0iLi5caW5zcGVjdG9yXGZyb250LWVuZFxoZWxwU2Ny
ZWVuLmNzcyIKIAkJCQkJPgogCQkJCTwvRmlsZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2d5cC9zdHJlYW1saW5lLWluc3BlY3Rvci1zb3VyY2Uuc2ggYi9Tb3VyY2UvV2ViQ29yZS9neXAv
c3RyZWFtbGluZS1pbnNwZWN0b3Itc291cmNlLnNoCmluZGV4IDY2MTE1NTQuLmI1YTFjNWEgMTAw
NzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2d5cC9zdHJlYW1saW5lLWluc3BlY3Rvci1zb3VyY2Uu
c2gKKysrIGIvU291cmNlL1dlYkNvcmUvZ3lwL3N0cmVhbWxpbmUtaW5zcGVjdG9yLXNvdXJjZS5z
aApAQCAtOCw2ICs4LDkgQEAgZmkKICMgQ29tYmluZSBhbGwgc2NyaXB0IHJlc291cmNlcyBpbiB0
aGUgaW5zcGVjdG9yLmh0bWwgZmlsZS4KICIkU1JDUk9PVC8uLi9pbnNwZWN0b3IvY29tYmluZS1q
YXZhc2NyaXB0LXJlc291cmNlcy5wbCIgLS1pbnB1dC1odG1sICIke1NSQ1JPT1R9Ly4uL2luc3Bl
Y3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmh0bWwiIC0tZ2VuZXJhdGVkLXNjcmlwdHMtZGlyICR7
QlVJTFRfUFJPRFVDVFNfRElSfS9EZXJpdmVkU291cmNlcy9XZWJDb3JlIC0tb3V0cHV0LWRpciAi
JHtERVJJVkVEX0ZJTEVfRElSfS9XZWJDb3JlIiAtLW91dHB1dC1zY3JpcHQtbmFtZSBpbnNwZWN0
b3IuanMKIAorIyBJbmxpbmUgc2NyaXB0IGltcG9ydHMgaW4gSGVhcFNuYXBzaG90V29ya2VyLmpz
IGZpbGUuCisiJFNSQ1JPT1QvLi4vaW5zcGVjdG9yL2lubGluZS1qYXZhc2NyaXB0LWltcG9ydHMu
cHkiICIke1NSQ1JPT1R9Ly4uL2luc3BlY3Rvci9mcm9udC1lbmQvSGVhcFNuYXBzaG90V29ya2Vy
LmpzIiAiJHtTUkNST09UfS8uLi9pbnNwZWN0b3IvZnJvbnQtZW5kIiAiJHtERVJJVkVEX0ZJTEVf
RElSfS9XZWJDb3JlL0hlYXBTbmFwc2hvdFdvcmtlci5qcyIKKwogIyBJbmxpbmUgc2NyaXB0IGlt
cG9ydHMgaW4gU2NyaXB0Rm9ybWF0dGVyV29ya2VyLmpzIGZpbGUuCiAiJFNSQ1JPT1QvLi4vaW5z
cGVjdG9yL2lubGluZS1qYXZhc2NyaXB0LWltcG9ydHMucHkiICIke1NSQ1JPT1R9Ly4uL2luc3Bl
Y3Rvci9mcm9udC1lbmQvU2NyaXB0Rm9ybWF0dGVyV29ya2VyLmpzIiAiJHtTUkNST09UfS8uLi9p
bnNwZWN0b3IvZnJvbnQtZW5kIiAiJHtERVJJVkVEX0ZJTEVfRElSfS9XZWJDb3JlL3NjcmlwdEZv
cm1hdHRlcldvcmtlci5qcyIKIApAQCAtMTksNSArMjIsNiBAQCBpZiBbIC1kICIke1RBUkdFVF9C
VUlMRF9ESVJ9LyR7VU5MT0NBTElaRURfUkVTT1VSQ0VTX0ZPTERFUl9QQVRIfS9pbnNwZWN0b3Ii
IF07CiAgICAgIyBDb3B5IHRoZSBtb2RpZmllZCBIVE1MIGZpbGUgYW5kIHRoZSBjb21iaW5lZCBz
Y3JpcHRzLgogICAgIGNwICIke0RFUklWRURfRklMRV9ESVJ9L1dlYkNvcmUvaW5zcGVjdG9yLmh0
bWwiIGluc3BlY3Rvci5odG1sCiAgICAgY3AgIiR7REVSSVZFRF9GSUxFX0RJUn0vV2ViQ29yZS9p
bnNwZWN0b3IuanMiIGluc3BlY3Rvci5qcworICAgIGNwICIke0RFUklWRURfRklMRV9ESVJ9L1dl
YkNvcmUvSGVhcFNuYXBzaG90V29ya2VyLmpzIiBIZWFwU25hcHNob3RXb3JrZXIuanMKICAgICBj
cCAiJHtERVJJVkVEX0ZJTEVfRElSfS9XZWJDb3JlL3NjcmlwdEZvcm1hdHRlcldvcmtlci5qcyIg
c2NyaXB0Rm9ybWF0dGVyV29ya2VyLmpzCiBmaQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9EZXRhaWxlZEhlYXBzaG90R3JpZE5vZGVzLmpzIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9EZXRhaWxlZEhlYXBzaG90R3JpZE5vZGVzLmpz
CmluZGV4IDdlMjkzNDkuLmU0NGRmMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvRGV0YWlsZWRIZWFwc2hvdEdyaWROb2Rlcy5qcworKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RldGFpbGVkSGVhcHNob3RHcmlkTm9kZXMuanMK
QEAgLTQ1LDYgKzQ1LDE1IEBAIFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RHcmlkTm9kZS5wcm90
b3R5cGUgPSB7CiAgICAgICAgIHJldHVybiBjZWxsOwogICAgIH0sCiAKKyAgICBkaXNwb3NlOiBm
dW5jdGlvbigpCisgICAgeworICAgICAgICBpZiAodGhpcy5fcHJvdmlkZXIpCisgICAgICAgICAg
ICB0aGlzLl9wcm92aWRlci5kaXNwb3NlKCk7CisgICAgICAgIGZvciAodmFyIG5vZGUgPSB0aGlz
LmNoaWxkcmVuWzBdOyBub2RlOyBub2RlID0gbm9kZS50cmF2ZXJzZU5leHROb2RlKHRydWUsIHRo
aXMsIHRydWUpKQorICAgICAgICAgICAgaWYgKG5vZGUuZGlzcG9zZSkKKyAgICAgICAgICAgICAg
ICBub2RlLmRpc3Bvc2UoKTsKKyAgICB9LAorCiAgICAgX3BvcHVsYXRlOiBmdW5jdGlvbihldmVu
dCkKICAgICB7CiAgICAgICAgIHRoaXMucmVtb3ZlRXZlbnRMaXN0ZW5lcigicG9wdWxhdGUiLCB0
aGlzLl9wb3B1bGF0ZSwgdGhpcyk7CkBAIC0yNzUsMTAgKzI4NCwxMCBAQCBXZWJJbnNwZWN0b3Iu
SGVhcFNuYXBzaG90T2JqZWN0Tm9kZS5wcm90b3R5cGUgPSB7CiAgICAgICAgIHZhciBzaG93SGlk
ZGVuRGF0YSA9IFdlYkluc3BlY3Rvci5EZXRhaWxlZEhlYXBzaG90Vmlldy5wcm90b3R5cGUuc2hv
d0hpZGRlbkRhdGE7CiAgICAgICAgIHJldHVybiBzbmFwc2hvdC5jcmVhdGVFZGdlc1Byb3ZpZGVy
KAogICAgICAgICAgICAgbm9kZUluZGV4LAotICAgICAgICAgICAgZnVuY3Rpb24oZWRnZSkgewot
ICAgICAgICAgICAgICAgIHJldHVybiAhZWRnZS5pc0ludmlzaWJsZQotICAgICAgICAgICAgICAg
ICAgICAmJiAoc2hvd0hpZGRlbkRhdGEgfHwgKCFlZGdlLmlzSGlkZGVuICYmICFlZGdlLm5vZGUu
aXNIaWRkZW4pKTsKLSAgICAgICAgICAgIH0pOworICAgICAgICAgICAgImZ1bmN0aW9uKGVkZ2Up
IHsiICsKKyAgICAgICAgICAgICIgICAgcmV0dXJuICFlZGdlLmlzSW52aXNpYmxlIiArCisgICAg
ICAgICAgICAiICAgICAgICAmJiAoIiArIHNob3dIaWRkZW5EYXRhICsgIiB8fCAoIWVkZ2UuaXNI
aWRkZW4gJiYgIWVkZ2Uubm9kZS5pc0hpZGRlbikpOyIgKworICAgICAgICAgICAgIn0iKTsKICAg
ICB9LAogCiAgICAgX2NoaWxkSGFzaEZvckVudGl0eTogZnVuY3Rpb24oZWRnZSkKQEAgLTM2Miwx
MCArMzcxLDEwIEBAIFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RJbnN0YW5jZU5vZGUucHJvdG90
eXBlID0gewogICAgICAgICB2YXIgc2hvd0hpZGRlbkRhdGEgPSBXZWJJbnNwZWN0b3IuRGV0YWls
ZWRIZWFwc2hvdFZpZXcucHJvdG90eXBlLnNob3dIaWRkZW5EYXRhOwogICAgICAgICByZXR1cm4g
c25hcHNob3QuY3JlYXRlRWRnZXNQcm92aWRlcigKICAgICAgICAgICAgIG5vZGVJbmRleCwKLSAg
ICAgICAgICAgIGZ1bmN0aW9uKGVkZ2UpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gIWVkZ2Uu
aXNJbnZpc2libGUKLSAgICAgICAgICAgICAgICAgICAgJiYgKHNob3dIaWRkZW5EYXRhIHx8ICgh
ZWRnZS5pc0hpZGRlbiAmJiAhZWRnZS5ub2RlLmlzSGlkZGVuKSk7Ci0gICAgICAgICAgICB9KTsK
KyAgICAgICAgICAgICJmdW5jdGlvbihlZGdlKSB7IiArCisgICAgICAgICAgICAiICAgIHJldHVy
biAhZWRnZS5pc0ludmlzaWJsZSIgKworICAgICAgICAgICAgIiAgICAgICAgJiYgKCIgKyBzaG93
SGlkZGVuRGF0YSArICIgfHwgKCFlZGdlLmlzSGlkZGVuICYmICFlZGdlLm5vZGUuaXNIaWRkZW4p
KTsiICsKKyAgICAgICAgICAgICJ9Iik7CiAgICAgfSwKIAogICAgIF9jaGlsZEhhc2hGb3JFbnRp
dHk6IGZ1bmN0aW9uKGVkZ2UpCkBAIC00NDEsMTAgKzQ1MCwxMCBAQCBXZWJJbnNwZWN0b3IuSGVh
cFNuYXBzaG90Q29uc3RydWN0b3JOb2RlLnByb3RvdHlwZSA9IHsKICAgICBfY3JlYXRlTm9kZXNQ
cm92aWRlcjogZnVuY3Rpb24oc25hcHNob3QsIG5vZGVUeXBlLCBub2RlQ2xhc3NOYW1lKQogICAg
IHsKICAgICAgICAgcmV0dXJuIHNuYXBzaG90LmNyZWF0ZU5vZGVzUHJvdmlkZXIoCi0gICAgICAg
ICAgICBmdW5jdGlvbiAobm9kZSkgewotICAgICAgICAgICAgICAgICByZXR1cm4gbm9kZS50eXBl
ID09PSBub2RlVHlwZQotICAgICAgICAgICAgICAgICAgICAmJiAobm9kZUNsYXNzTmFtZSA9PT0g
bnVsbCB8fCBub2RlLmNsYXNzTmFtZSA9PT0gbm9kZUNsYXNzTmFtZSk7Ci0gICAgICAgICAgICB9
KTsKKyAgICAgICAgICAgICJmdW5jdGlvbiAobm9kZSkgeyIgKyAKKyAgICAgICAgICAgICIgICAg
IHJldHVybiBub2RlLnR5cGUgPT09IFwiIiArIG5vZGVUeXBlICsgIlwiICIgKworICAgICAgICAg
ICAgKG5vZGVDbGFzc05hbWUgIT09IG51bGwgPyAiJiYgbm9kZS5jbGFzc05hbWUgPT09IFwiIiAr
IG5vZGVDbGFzc05hbWUgKyAiXCIiIDogIiIpICsKKyAgICAgICAgICAgICJ9Iik7CiAgICAgfSwK
IAogICAgIGNvbXBhcmF0b3I6IGZ1bmN0aW9uKCkKQEAgLTUwNSw2ICs1MTQsMTIgQEAgV2ViSW5z
cGVjdG9yLkhlYXBTbmFwc2hvdEl0ZXJhdG9yc1R1cGxlID0gZnVuY3Rpb24oaXQxLCBpdDIpCiB9
CiAKIFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RJdGVyYXRvcnNUdXBsZS5wcm90b3R5cGUgPSB7
CisgICAgZGlzcG9zZTogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgdGhpcy5faXQxLmRpc3Bv
c2UoKTsKKyAgICAgICAgdGhpcy5faXQyLmRpc3Bvc2UoKTsKKyAgICB9LAorCiAgICAgc29ydEFu
ZFJld2luZDogZnVuY3Rpb24oY29tcGFyYXRvciwgY2FsbGJhY2spCiAgICAgewogICAgICAgICBm
dW5jdGlvbiBhZnRlclNvcnQoaWdub3JlZCkKQEAgLTUzMSw2ICs1NDYsNyBAQCBXZWJJbnNwZWN0
b3IuSGVhcFNuYXBzaG90RGlmZk5vZGUucHJvdG90eXBlID0gewogICAgICAgICAKICAgICAgICAg
ZnVuY3Rpb24gZGlmZkNhbGN1bGF0ZWQoZGlmZlJlc3VsdCkKICAgICAgICAgeworICAgICAgICAg
ICAgZGlmZi5kaXNwb3NlKCk7CiAgICAgICAgICAgICB0aGlzLl9hZGRlZENvdW50ID0gZGlmZlJl
c3VsdC5hZGRlZENvdW50OwogICAgICAgICAgICAgdGhpcy5fcmVtb3ZlZENvdW50ID0gZGlmZlJl
c3VsdC5yZW1vdmVkQ291bnQ7CiAgICAgICAgICAgICB0aGlzLl9jb3VudERlbHRhID0gZGlmZlJl
c3VsdC5jb3VudERlbHRhOwpAQCAtNTc4LDExICs1OTQsMTEgQEAgV2ViSW5zcGVjdG9yLkhlYXBT
bmFwc2hvdERpZmZOb2RlLnByb3RvdHlwZSA9IHsKICAgICAgICAgewogICAgICAgICAgICAgdmFy
IG90aGVyU25hcHNob3RJZCA9IG90aGVyU25hcHNob3QudWlkOwogICAgICAgICAgICAgdmFyIHBy
b3ZpZGVyID0gc25hcHNob3QuY3JlYXRlTm9kZXNQcm92aWRlcigKLSAgICAgICAgICAgICAgICBm
dW5jdGlvbiAobm9kZSkgewotICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5vZGUudHlwZSA9
PT0gbm9kZVR5cGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAmJiAobm9kZUNsYXNzTmFtZSA9
PT0gbnVsbCB8fCBub2RlLmNsYXNzTmFtZSA9PT0gbm9kZUNsYXNzTmFtZSkKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAmJiAhdGhpcy5iYXNlU25hcHNob3RIYXNOb2RlKG90aGVyU25hcHNob3RJ
ZCwgY2xhc3NOYW1lLCBub2RlLmlkKTsKLSAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAg
ICAgICAiZnVuY3Rpb24gKG5vZGUpIHsiICsKKyAgICAgICAgICAgICAgICAiICAgICByZXR1cm4g
bm9kZS50eXBlID09PSBcIiIgKyBub2RlVHlwZSArICJcIiAiICsKKyAgICAgICAgICAgICAgICAo
bm9kZUNsYXNzTmFtZSAhPT0gbnVsbCA/ICImJiBub2RlLmNsYXNzTmFtZSA9PT0gXCIiICsgbm9k
ZUNsYXNzTmFtZSArICJcIiIgOiAiIikgKworICAgICAgICAgICAgICAgICIgICAgICAgICAmJiAh
dGhpcy5iYXNlU25hcHNob3RIYXNOb2RlKCIgKyBvdGhlclNuYXBzaG90SWQgKyAiLCBcIiIgKyBj
bGFzc05hbWUgKyAiXCIsIG5vZGUuaWQpOyIgKworICAgICAgICAgICAgICAgICJ9Iik7CiAgICAg
ICAgICAgICBwcm92aWRlci5zbmFwc2hvdCA9IHNuYXBzaG90OwogICAgICAgICAgICAgcmV0dXJu
IHByb3ZpZGVyOwogICAgICAgICB9CkBAIC02NzYsMTIgKzY5MiwxMiBAQCBXZWJJbnNwZWN0b3Iu
SGVhcFNuYXBzaG90RG9taW5hdG9yT2JqZWN0Tm9kZS5wcm90b3R5cGUgPSB7CiAgICAgewogICAg
ICAgICB2YXIgc2hvd0hpZGRlbkRhdGEgPSBXZWJJbnNwZWN0b3IuRGV0YWlsZWRIZWFwc2hvdFZp
ZXcucHJvdG90eXBlLnNob3dIaWRkZW5EYXRhOwogICAgICAgICByZXR1cm4gc25hcHNob3QuY3Jl
YXRlTm9kZXNQcm92aWRlcigKLSAgICAgICAgICAgIGZ1bmN0aW9uIChub2RlKSB7Ci0gICAgICAg
ICAgICAgICAgIHZhciBkb21pbmF0b3JJbmRleCA9IG5vZGUuZG9taW5hdG9ySW5kZXg7Ci0gICAg
ICAgICAgICAgICAgIHJldHVybiBkb21pbmF0b3JJbmRleCA9PT0gbm9kZUluZGV4Ci0gICAgICAg
ICAgICAgICAgICAgICAmJiBkb21pbmF0b3JJbmRleCAhPT0gbm9kZS5ub2RlSW5kZXgKLSAgICAg
ICAgICAgICAgICAgICAgICYmIChzaG93SGlkZGVuRGF0YSB8fCAhbm9kZS5pc0hpZGRlbik7Ci0g
ICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICJmdW5jdGlvbiAobm9kZSkgeyIgKworICAgICAg
ICAgICAgIiAgICAgdmFyIGRvbWluYXRvckluZGV4ID0gbm9kZS5kb21pbmF0b3JJbmRleDsiICsK
KyAgICAgICAgICAgICIgICAgIHJldHVybiBkb21pbmF0b3JJbmRleCA9PT0gIiArIG5vZGVJbmRl
eCArIAorICAgICAgICAgICAgIiAgICAgICAgICYmIGRvbWluYXRvckluZGV4ICE9PSBub2RlLm5v
ZGVJbmRleCIgKworICAgICAgICAgICAgIiAgICAgICAgICYmICgiICsgc2hvd0hpZGRlbkRhdGEg
KyAiIHx8ICFub2RlLmlzSGlkZGVuKTsiICsKKyAgICAgICAgICAgICJ9Iik7CiAgICAgfSwKIAog
ICAgIF9jaGlsZEhhc2hGb3JFbnRpdHk6IGZ1bmN0aW9uKG5vZGUpCkBAIC03MjEsNiArNzM3LDcg
QEAgZnVuY3Rpb24gTWl4SW5TbmFwc2hvdE5vZGVGdW5jdGlvbnMoc291cmNlUHJvdG90eXBlLCB0
YXJnZXRQcm90b3R5cGUpCiAgICAgdGFyZ2V0UHJvdG90eXBlLmNvbXBhcmF0b3IgPSBzb3VyY2VQ
cm90b3R5cGUuY29tcGFyYXRvcjsKICAgICB0YXJnZXRQcm90b3R5cGUuX2NyZWF0ZUNoaWxkTm9k
ZSA9IHNvdXJjZVByb3RvdHlwZS5fY3JlYXRlQ2hpbGROb2RlOwogICAgIHRhcmdldFByb3RvdHlw
ZS5fY3JlYXRlUHJvdmlkZXIgPSBzb3VyY2VQcm90b3R5cGUuX2NyZWF0ZVByb3ZpZGVyOworICAg
IHRhcmdldFByb3RvdHlwZS5kaXNwb3NlID0gc291cmNlUHJvdG90eXBlLmRpc3Bvc2U7CiAgICAg
dGFyZ2V0UHJvdG90eXBlLnBvcHVsYXRlQ2hpbGRyZW4gPSBzb3VyY2VQcm90b3R5cGUucG9wdWxh
dGVDaGlsZHJlbjsKICAgICB0YXJnZXRQcm90b3R5cGUuX3NhdmVDaGlsZHJlbiA9IHNvdXJjZVBy
b3RvdHlwZS5fc2F2ZUNoaWxkcmVuOwogICAgIHRhcmdldFByb3RvdHlwZS5zb3J0ID0gc291cmNl
UHJvdG90eXBlLnNvcnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL0RldGFpbGVkSGVhcHNob3RWaWV3LmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9EZXRhaWxlZEhlYXBzaG90Vmlldy5qcwppbmRleCA3YzA0NjZhLi40ZDQxMDRl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RldGFpbGVk
SGVhcHNob3RWaWV3LmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
RGV0YWlsZWRIZWFwc2hvdFZpZXcuanMKQEAgLTM1LDYgKzM1LDE4IEBAIFdlYkluc3BlY3Rvci5I
ZWFwU25hcHNob3RTb3J0YWJsZURhdGFHcmlkID0gZnVuY3Rpb24oY29sdW1ucykKIH0KIAogV2Vi
SW5zcGVjdG9yLkhlYXBTbmFwc2hvdFNvcnRhYmxlRGF0YUdyaWQucHJvdG90eXBlID0geworICAg
IGRpc3Bvc2U6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIGZvciAodmFyIGkgPSAwLCBsID0g
dGhpcy5jaGlsZHJlbi5sZW5ndGg7IGkgPCBsOyArK2kpCisgICAgICAgICAgICB0aGlzLmNoaWxk
cmVuW2ldLmRpc3Bvc2UoKTsKKyAgICB9LAorCisgICAgcmVzZXRTb3J0aW5nQ2FjaGU6IGZ1bmN0
aW9uKCkKKyAgICB7CisgICAgICAgIGRlbGV0ZSB0aGlzLl9sYXN0U29ydENvbHVtbklkZW50aWZp
ZXI7CisgICAgICAgIGRlbGV0ZSB0aGlzLl9sYXN0U29ydEFzY2VuZGluZzsKKyAgICB9LAorCiAg
ICAgc29ydGluZ0NoYW5nZWQ6IGZ1bmN0aW9uKCkKICAgICB7CiAgICAgICAgIHZhciBzb3J0QXNj
ZW5kaW5nID0gdGhpcy5zb3J0T3JkZXIgPT09ICJhc2NlbmRpbmciOwpAQCAtMjIyLDcgKzIzNCw5
IEBAIFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3REaWZmRGF0YUdyaWQucHJvdG90eXBlID0gewog
ICAgIHNldEJhc2VEYXRhU291cmNlOiBmdW5jdGlvbihiYXNlU25hcHNob3QpCiAgICAgewogICAg
ICAgICB0aGlzLmJhc2VTbmFwc2hvdCA9IGJhc2VTbmFwc2hvdDsKKyAgICAgICAgdGhpcy5kaXNw
b3NlKCk7CiAgICAgICAgIHRoaXMucmVtb3ZlQ2hpbGRyZW4oKTsKKyAgICAgICAgdGhpcy5yZXNl
dFNvcnRpbmdDYWNoZSgpOwogICAgICAgICBpZiAodGhpcy5iYXNlU25hcHNob3QgPT09IHRoaXMu
c25hcHNob3QpIHsKICAgICAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKCJz
b3J0aW5nIGNvbXBsZXRlIik7CiAgICAgICAgICAgICByZXR1cm47CkBAIC0zMDcsNiArMzIxLDEy
IEBAIFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RSZXRhaW5pbmdQYXRoc0xpc3QgPSBmdW5jdGlv
bigpCiB9CiAKIFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RSZXRhaW5pbmdQYXRoc0xpc3QucHJv
dG90eXBlID0geworICAgIGRpc3Bvc2U6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIGlmICh0
aGlzLnBhdGhGaW5kZXIpCisgICAgICAgICAgICB0aGlzLnBhdGhGaW5kZXIuZGlzcG9zZSgpOwor
ICAgIH0sIAorCiAgICAgX3NvcnRGaWVsZHM6IGZ1bmN0aW9uKHNvcnRDb2x1bW4sIHNvcnRBc2Nl
bmRpbmcpCiAgICAgewogICAgICAgICByZXR1cm4gewpAQCAtMzE5LDYgKzMzOSw3IEBAIFdlYklu
c3BlY3Rvci5IZWFwU25hcHNob3RSZXRhaW5pbmdQYXRoc0xpc3QucHJvdG90eXBlID0gewogICAg
IHsKICAgICAgICAgdGhpcy5fc2V0Um9vdENoaWxkcmVuRm9yRmluZGVyKCk7CiAgICAgICAgIHRo
aXMucmVtb3ZlQ2hpbGRyZW4oKTsKKyAgICAgICAgdGhpcy5yZXNldFNvcnRpbmdDYWNoZSgpOwog
ICAgICAgICB0aGlzLl9jb3VudGVyID0gMDsKICAgICAgICAgdGhpcy5zaG93TmV4dCh0aGlzLl9k
ZWZhdWx0UG9wdWxhdGVDb3VudCk7CiAgICAgfSwKQEAgLTMyOCw5ICszNDksMTEgQEAgV2ViSW5z
cGVjdG9yLkhlYXBTbmFwc2hvdFJldGFpbmluZ1BhdGhzTGlzdC5wcm90b3R5cGUgPSB7CiAgICAg
ICAgIHRoaXMuc25hcHNob3RWaWV3ID0gc25hcHNob3RWaWV3OwogICAgICAgICB0aGlzLl9wcmVm
aXggPSBwcmVmaXg7CiAKLSAgICAgICAgaWYgKHRoaXMucGF0aEZpbmRlcikKKyAgICAgICAgaWYg
KHRoaXMucGF0aEZpbmRlcikgewogICAgICAgICAgICAgdGhpcy5zZWFyY2hDYW5jZWxsZWQoKTsK
LSAgICAgICAgdGhpcy5wYXRoRmluZGVyID0gc25hcHNob3QuY3JlYXRlUGF0aEZpbmRlcihub2Rl
SW5kZXgpOworICAgICAgICAgICAgdGhpcy5wYXRoRmluZGVyLmRpc3Bvc2UoKTsKKyAgICAgICAg
fQorICAgICAgICB0aGlzLnBhdGhGaW5kZXIgPSBzbmFwc2hvdC5jcmVhdGVQYXRoRmluZGVyKG5v
ZGVJbmRleCwgIVdlYkluc3BlY3Rvci5EZXRhaWxlZEhlYXBzaG90Vmlldy5wcm90b3R5cGUuc2hv
d0hpZGRlbkRhdGEpOwogICAgICAgICB0aGlzLl9yZXNldFBhdGhzKCk7CiAgICAgfSwKIApAQCAt
MzcyLDcgKzM5NSw3IEBAIFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RSZXRhaW5pbmdQYXRoc0xp
c3QucHJvdG90eXBlID0gewogICAgICAgICAgICAgICAgIGRlbGV0ZSB0aGlzLl9jYW5jZWw7CiAg
ICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICAgICAgc2V0VGltZW91dChzdGFydFNlYXJjaGlu
Zy5iaW5kKHRoaXMpLCAwKTsKKyAgICAgICAgc3RhcnRTZWFyY2hpbmcuY2FsbCh0aGlzKTsKICAg
ICB9LAogCiAgICAgc2VhcmNoQ2FuY2VsbGVkOiBmdW5jdGlvbihwYXRoc0NvdW50KQpAQCAtMzgy
LDE5ICs0MDUsMTYgQEAgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFJldGFpbmluZ1BhdGhzTGlz
dC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX2NhbmNlbCA9IHRoaXMucGF0aEZpbmRlcjsK
ICAgICAgICAgaWYgKHBhdGhzQ291bnQpIHsKICAgICAgICAgICAgIHRoaXMuYXBwZW5kQ2hpbGQo
bmV3IFdlYkluc3BlY3Rvci5TaG93TW9yZURhdGFHcmlkTm9kZSh0aGlzLnNob3dOZXh0LmJpbmQo
dGhpcyksIHBhdGhzQ291bnQpKTsKKyAgICAgICAgICAgIHRoaXMucmVzZXRTb3J0aW5nQ2FjaGUo
KTsKICAgICAgICAgICAgIHRoaXMuc29ydGluZ0NoYW5nZWQoKTsKICAgICAgICAgfQogICAgIH0s
CiAKICAgICBfc2V0Um9vdENoaWxkcmVuRm9yRmluZGVyOiBmdW5jdGlvbigpCiAgICAgewotICAg
ICAgICBmdW5jdGlvbiBGaWx0ZXJET01XaW5kb3cobm9kZSkKLSAgICAgICAgewotICAgICAgICAg
ICAgcmV0dXJuIG5vZGUubmFtZSA9PT0gIkRPTVdpbmRvdyI7Ci0gICAgICAgIH0KLQogICAgICAg
ICBpZiAodGhpcy5zbmFwc2hvdFZpZXcuaXNUcmFjaW5nVG9XaW5kb3dPYmplY3RzKQotICAgICAg
ICAgICAgdGhpcy5wYXRoRmluZGVyLnVwZGF0ZVJvb3RzKEZpbHRlckRPTVdpbmRvdyk7CisgICAg
ICAgICAgICB0aGlzLnBhdGhGaW5kZXIudXBkYXRlUm9vdHMoCisgICAgICAgICAgICAgICAgImZ1
bmN0aW9uIChub2RlKSB7IHJldHVybiBub2RlLm5hbWUgPT09IFwiRE9NV2luZG93XCI7IH0iKTsK
ICAgICAgICAgZWxzZQogICAgICAgICAgICAgdGhpcy5wYXRoRmluZGVyLnVwZGF0ZVJvb3RzKCk7
CiAgICAgfSwKQEAgLTUzNCwxMCArNTU0LDE0IEBAIFdlYkluc3BlY3Rvci5EZXRhaWxlZEhlYXBz
aG90VmlldyA9IGZ1bmN0aW9uKHBhcmVudCwgcHJvZmlsZSkKIFdlYkluc3BlY3Rvci5EZXRhaWxl
ZEhlYXBzaG90Vmlldy5wcm90b3R5cGUgPSB7CiAgICAgZGlzcG9zZTogZnVuY3Rpb24oKQogICAg
IHsKLSAgICAgICAgaWYgKHRoaXMuX3Byb2ZpbGVXcmFwcGVyKQotICAgICAgICAgICAgdGhpcy5f
cHJvZmlsZVdyYXBwZXIuZGlzcG9zZSgpOwotICAgICAgICBpZiAodGhpcy5fYmFzZVByb2ZpbGVX
cmFwcGVyKQotICAgICAgICAgICAgdGhpcy5fYmFzZVByb2ZpbGVXcmFwcGVyLmRpc3Bvc2UoKTsK
KyAgICAgICAgdGhpcy5wcm9maWxlV3JhcHBlci5kaXNwb3NlKCk7CisgICAgICAgIGlmICh0aGlz
LmJhc2VQcm9maWxlKQorICAgICAgICAgICAgdGhpcy5iYXNlUHJvZmlsZVdyYXBwZXIuZGlzcG9z
ZSgpOworICAgICAgICB0aGlzLmNvbnRhaW5tZW50RGF0YUdyaWQuZGlzcG9zZSgpOworICAgICAg
ICB0aGlzLmNvbnN0cnVjdG9yc0RhdGFHcmlkLmRpc3Bvc2UoKTsKKyAgICAgICAgdGhpcy5kaWZm
RGF0YUdyaWQuZGlzcG9zZSgpOworICAgICAgICB0aGlzLmRvbWluYXRvckRhdGFHcmlkLmRpc3Bv
c2UoKTsKKyAgICAgICAgdGhpcy5yZXRhaW5tZW50RGF0YUdyaWQuZGlzcG9zZSgpOwogICAgIH0s
CiAKICAgICBnZXQgc3RhdHVzQmFySXRlbXMoKQpAQCAtNTUyLDkgKzU3Niw3IEBAIFdlYkluc3Bl
Y3Rvci5EZXRhaWxlZEhlYXBzaG90Vmlldy5wcm90b3R5cGUgPSB7CiAKICAgICBnZXQgcHJvZmls
ZVdyYXBwZXIoKQogICAgIHsKLSAgICAgICAgaWYgKCF0aGlzLl9wcm9maWxlV3JhcHBlcikKLSAg
ICAgICAgICAgIHRoaXMuX3Byb2ZpbGVXcmFwcGVyID0gdGhpcy5wcm9maWxlLnByb3h5OwotICAg
ICAgICByZXR1cm4gdGhpcy5fcHJvZmlsZVdyYXBwZXI7CisgICAgICAgIHJldHVybiB0aGlzLnBy
b2ZpbGUucHJveHk7CiAgICAgfSwKIAogICAgIGdldCBiYXNlUHJvZmlsZSgpCkBAIC01NjQsOSAr
NTg2LDcgQEAgV2ViSW5zcGVjdG9yLkRldGFpbGVkSGVhcHNob3RWaWV3LnByb3RvdHlwZSA9IHsK
IAogICAgIGdldCBiYXNlUHJvZmlsZVdyYXBwZXIoKQogICAgIHsKLSAgICAgICAgaWYgKCF0aGlz
Ll9iYXNlUHJvZmlsZVdyYXBwZXIpCi0gICAgICAgICAgICB0aGlzLl9iYXNlUHJvZmlsZVdyYXBw
ZXIgPSB0aGlzLmJhc2VQcm9maWxlLnByb3h5OwotICAgICAgICByZXR1cm4gdGhpcy5fYmFzZVBy
b2ZpbGVXcmFwcGVyOworICAgICAgICByZXR1cm4gdGhpcy5iYXNlUHJvZmlsZS5wcm94eTsKICAg
ICB9LAogCiAgICAgc2hvdzogZnVuY3Rpb24ocGFyZW50RWxlbWVudCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSGVhcFNuYXBzaG90LmpzIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9IZWFwU25hcHNob3QuanMKaW5kZXggNjAwY2Ji
Mi4uMjc3ZmRhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9IZWFwU25hcHNob3QuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9IZWFwU25hcHNob3QuanMKQEAgLTI4LDYgKzI4LDI3IEBACiAgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICov
CiAKK1dlYkluc3BlY3Rvci5IZWFwU25hcHNob3RMb2FkZXIgPSBmdW5jdGlvbigpCit7CisgICAg
dGhpcy5fanNvbiA9ICIiOworfQorCitXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90TG9hZGVyLnBy
b3RvdHlwZSA9IHsKKyAgICBmaW5pc2hMb2FkaW5nOiBmdW5jdGlvbigpCisgICAgeworICAgICAg
ICBpZiAoIXRoaXMuX2pzb24pCisgICAgICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgICAgdmFy
IHJhd1NuYXBzaG90ID0gSlNPTi5wYXJzZSh0aGlzLl9qc29uKTsKKyAgICAgICAgdGhpcy5fanNv
biA9ICIiOworICAgICAgICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3QocmF3
U25hcHNob3QpOworICAgIH0sCisKKyAgICBwdXNoSlNPTkNodW5rOiBmdW5jdGlvbihjaHVuaykK
KyAgICB7CisgICAgICAgIHRoaXMuX2pzb24gKz0gY2h1bms7CisgICAgfQorfTsKKwogV2ViSW5z
cGVjdG9yLkhlYXBTbmFwc2hvdEFycmF5U2xpY2UgPSBmdW5jdGlvbihzbmFwc2hvdCwgYXJyYXlO
YW1lLCBzdGFydCwgZW5kKQogewogICAgIC8vIE5vdGU6IHdlIGRvbid0IHJlZmVyZW5jZSBzbmFw
c2hvdCBjb250ZW50cyBkaXJlY3RseSB0byBhdm9pZApAQCAtNzUxLDEzICs3NzIsNDYgQEAgV2Vi
SW5zcGVjdG9yLkhlYXBTbmFwc2hvdC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHJldHVybiB0aGlz
Ll9iYXNlTm9kZUlkc1tiYXNlU25hcHNob3RJZF1bY2xhc3NOYW1lXS5iaW5hcnlJbmRleE9mKG5v
ZGVJZCwgdGhpcy5fbnVtYmVyc0NvbXBhcmF0b3IpICE9PSAtMTsKICAgICB9LAogCi0gICAgcHVz
aEJhc2VOb2RlSWRzOiBmdW5jdGlvbihiYXNlU25hcHNob3RJZCwgY2xhc3NOYW1lLCBub2RlSWRz
KQorICAgIHB1c2hCYXNlSWRzOiBmdW5jdGlvbihiYXNlU25hcHNob3RJZCwgY2xhc3NOYW1lLCBu
b2RlSWRzKQogICAgIHsKICAgICAgICAgaWYgKCF0aGlzLl9iYXNlTm9kZUlkcykKICAgICAgICAg
ICAgIHRoaXMuX2Jhc2VOb2RlSWRzID0gW107CiAgICAgICAgIGlmICghdGhpcy5fYmFzZU5vZGVJ
ZHNbYmFzZVNuYXBzaG90SWRdKQogICAgICAgICAgICAgdGhpcy5fYmFzZU5vZGVJZHNbYmFzZVNu
YXBzaG90SWRdID0ge307CiAgICAgICAgIHRoaXMuX2Jhc2VOb2RlSWRzW2Jhc2VTbmFwc2hvdElk
XVtjbGFzc05hbWVdID0gbm9kZUlkczsKKyAgICB9LAorCisgICAgY3JlYXRlRGlmZjogZnVuY3Rp
b24oY2xhc3NOYW1lKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuSGVh
cFNuYXBzaG90c0RpZmYodGhpcywgY2xhc3NOYW1lKTsKKyAgICB9LAorCisgICAgX3BhcnNlRmls
dGVyOiBmdW5jdGlvbihmaWx0ZXIpCisgICAgeworICAgICAgICBpZiAoIWZpbHRlcikKKyAgICAg
ICAgICAgIHJldHVybiBudWxsOworICAgICAgICB2YXIgcGFyc2VkRmlsdGVyID0gZXZhbCgiKGZ1
bmN0aW9uKCl7cmV0dXJuICIgKyBmaWx0ZXIgKyAifSkoKSIpOworICAgICAgICByZXR1cm4gcGFy
c2VkRmlsdGVyLmJpbmQodGhpcyk7CisgICAgfSwKKworICAgIGNyZWF0ZUVkZ2VzUHJvdmlkZXI6
IGZ1bmN0aW9uKG5vZGVJbmRleCwgZmlsdGVyKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG5ldyBX
ZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90RWRnZXNQcm92aWRlcih0aGlzLCBub2RlSW5kZXgsIHRo
aXMuX3BhcnNlRmlsdGVyKGZpbHRlcikpOworICAgIH0sCisKKyAgICBjcmVhdGVOb2Rlc1Byb3Zp
ZGVyOiBmdW5jdGlvbihmaWx0ZXIpCisgICAgeworICAgICAgICByZXR1cm4gbmV3IFdlYkluc3Bl
Y3Rvci5IZWFwU25hcHNob3ROb2Rlc1Byb3ZpZGVyKHRoaXMsIHRoaXMuX3BhcnNlRmlsdGVyKGZp
bHRlcikpOworICAgIH0sCisKKyAgICBjcmVhdGVQYXRoRmluZGVyOiBmdW5jdGlvbih0YXJnZXRO
b2RlSW5kZXgsIHNraXBIaWRkZW4pCisgICAgeworICAgICAgICByZXR1cm4gbmV3IFdlYkluc3Bl
Y3Rvci5IZWFwU25hcHNob3RQYXRoRmluZGVyKHRoaXMsIHRhcmdldE5vZGVJbmRleCwgc2tpcEhp
ZGRlbik7CisgICAgfSwKKworICAgIHVwZGF0ZVN0YXRpY0RhdGE6IGZ1bmN0aW9uKCkKKyAgICB7
CisgICAgICAgIHJldHVybiB7bm9kZUNvdW50OiB0aGlzLm5vZGVDb3VudCwgcm9vdE5vZGVJbmRl
eDogdGhpcy5fcm9vdE5vZGVJbmRleCwgdG90YWxTaXplOiB0aGlzLnRvdGFsU2l6ZSwgdWlkOiB0
aGlzLnVpZH07CiAgICAgfQogfTsKIApAQCAtOTk0LDE0ICsxMDQ4LDE0IEBAIFdlYkluc3BlY3Rv
ci5IZWFwU25hcHNob3ROb2Rlc1Byb3ZpZGVyLnByb3RvdHlwZSA9IHsKIAogV2ViSW5zcGVjdG9y
LkhlYXBTbmFwc2hvdE5vZGVzUHJvdmlkZXIucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3Bl
Y3Rvci5IZWFwU25hcHNob3RGaWx0ZXJlZE9yZGVyZWRJdGVyYXRvci5wcm90b3R5cGU7CiAKLVdl
Ykluc3BlY3Rvci5IZWFwU25hcHNob3RQYXRoRmluZGVyID0gZnVuY3Rpb24oc25hcHNob3QsIHRh
cmdldE5vZGVJbmRleCkKK1dlYkluc3BlY3Rvci5IZWFwU25hcHNob3RQYXRoRmluZGVyID0gZnVu
Y3Rpb24oc25hcHNob3QsIHRhcmdldE5vZGVJbmRleCwgc2tpcEhpZGRlbikKIHsKICAgICB0aGlz
Ll9zbmFwc2hvdCA9IHNuYXBzaG90OwogICAgIHRoaXMuX21heExlbmd0aCA9IDE7CiAgICAgdGhp
cy5fbGVuZ3RoTGltaXQgPSAxNTsKICAgICB0aGlzLl90YXJnZXROb2RlSW5kZXggPSB0YXJnZXRO
b2RlSW5kZXg7CiAgICAgdGhpcy5fY3VycmVudFBhdGggPSBudWxsOwotICAgIHRoaXMuX3NraXBI
aWRkZW4gPSAhV2ViSW5zcGVjdG9yLkRldGFpbGVkSGVhcHNob3RWaWV3LnByb3RvdHlwZS5zaG93
SGlkZGVuRGF0YTsKKyAgICB0aGlzLl9za2lwSGlkZGVuID0gc2tpcEhpZGRlbjsKICAgICB0aGlz
Ll9yb290Q2hpbGRyZW4gPSB0aGlzLl9maWxsUm9vdENoaWxkcmVuKCk7CiB9CiAKQEAgLTEwMjUs
NyArMTA3OSwxNiBAQCBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90UGF0aEZpbmRlci5wcm90b3R5
cGUgPSB7CiAKICAgICB1cGRhdGVSb290czogZnVuY3Rpb24oZmlsdGVyKQogICAgIHsKKyAgICAg
ICAgaWYgKGZpbHRlcikKKyAgICAgICAgICAgIGZpbHRlciA9IGV2YWwoIihmdW5jdGlvbigpe3Jl
dHVybiAiICsgZmlsdGVyICsgIn0pKCkiKTsKICAgICAgICAgdGhpcy5fcm9vdENoaWxkcmVuID0g
dGhpcy5fZmlsbFJvb3RDaGlsZHJlbihmaWx0ZXIpOyAgCisgICAgICAgIHRoaXMuX3Jlc2V0KCk7
CisgICAgfSwKKworICAgIF9yZXNldDogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgdGhpcy5f
bWF4TGVuZ3RoID0gMTsKKyAgICAgICAgdGhpcy5fY3VycmVudFBhdGggPSBudWxsOwogICAgIH0s
CiAKICAgICBfZmlsbFJvb3RDaGlsZHJlbjogZnVuY3Rpb24oZmlsdGVyKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9IZWFwU25hcHNob3RQcm94eS5qcyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSGVhcFNuYXBzaG90UHJveHkuanMK
aW5kZXggNmM0OWNlNy4uOTg2M2Q4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9IZWFwU25hcHNob3RQcm94eS5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL0hlYXBTbmFwc2hvdFByb3h5LmpzCkBAIC0yOCwyMzcgKzI4LDQw
OSBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90UHJv
eHkgPSBmdW5jdGlvbigpCi17ICAgCi0gICAgdGhpcy5fc25hcHNob3QgPSBudWxsOworV2ViSW5z
cGVjdG9yLkhlYXBTbmFwc2hvdFJlYWxXb3JrZXIgPSBmdW5jdGlvbigpCit7CisgICAgdGhpcy5f
d29ya2VyID0gbmV3IFdvcmtlcigiSGVhcFNuYXBzaG90V29ya2VyLmpzIik7CisgICAgdGhpcy5f
d29ya2VyLmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLCB0aGlzLl9tZXNzYWdlUmVjZWl2ZWQu
YmluZCh0aGlzKSwgZmFsc2UpOwogfQogCi1XZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90UHJveHku
cHJvdG90eXBlID0gewotICAgIF9pbnZva2VHZXR0ZXI6IGZ1bmN0aW9uKGdldHRlck5hbWUsIGNh
bGxiYWNrKQorV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFJlYWxXb3JrZXIucHJvdG90eXBlID0g
eworICAgIF9tZXNzYWdlUmVjZWl2ZWQ6IGZ1bmN0aW9uKGV2ZW50KQogICAgIHsKLSAgICAgICAg
ZnVuY3Rpb24gcmV0dXJuUmVzdWx0KCkKLSAgICAgICAgewotICAgICAgICAgICAgY2FsbGJhY2so
dGhpcy5fc25hcHNob3RbZ2V0dGVyTmFtZV0pOwotICAgICAgICB9Ci0gICAgICAgIHNldFRpbWVv
dXQocmV0dXJuUmVzdWx0LmJpbmQodGhpcyksIDApOworICAgICAgICB0aGlzLmRpc3BhdGNoRXZl
bnRUb0xpc3RlbmVycygibWVzc2FnZSIsIGV2ZW50LmRhdGEpOwogICAgIH0sCiAKLSAgICBhZ2dy
ZWdhdGVzOiBmdW5jdGlvbih3aXRoTm9kZUluZGV4ZXMsIGNhbGxiYWNrKQorICAgIHBvc3RNZXNz
YWdlOiBmdW5jdGlvbihtZXNzYWdlKQorICAgIHsKKyAgICAgICAgdGhpcy5fd29ya2VyLnBvc3RN
ZXNzYWdlKG1lc3NhZ2UpOworICAgIH0sCisKKyAgICB0ZXJtaW5hdGU6IGZ1bmN0aW9uKCkKKyAg
ICB7CisgICAgICAgIHRoaXMuX3dvcmtlci50ZXJtaW5hdGUoKTsKKyAgICB9Cit9OworCitXZWJJ
bnNwZWN0b3IuSGVhcFNuYXBzaG90UmVhbFdvcmtlci5wcm90b3R5cGUuX19wcm90b19fID0gV2Vi
SW5zcGVjdG9yLk9iamVjdC5wcm90b3R5cGU7CisKK1dlYkluc3BlY3Rvci5IZWFwU25hcHNob3RG
YWtlV29ya2VyID0gZnVuY3Rpb24oKQoreworICAgIHRoaXMuX2Rpc3BhdGNoZXIgPSBuZXcgV2Vi
SW5zcGVjdG9yLkhlYXBTbmFwc2hvdFdvcmtlckRpc3BhdGNoZXIod2luZG93LCB0aGlzLl9wb3N0
TWVzc2FnZUZyb21Xb3JrZXIuYmluZCh0aGlzKSk7Cit9CisKK1dlYkluc3BlY3Rvci5IZWFwU25h
cHNob3RGYWtlV29ya2VyLnByb3RvdHlwZSA9IHsKKyAgICBwb3N0TWVzc2FnZTogZnVuY3Rpb24o
bWVzc2FnZSkKICAgICB7Ci0gICAgICAgIGZ1bmN0aW9uIHJldHVyblJlc3VsdCgpCisgICAgICAg
IGZ1bmN0aW9uIGRpc3BhdGNoKCkKICAgICAgICAgewotICAgICAgICAgICAgY2FsbGJhY2sodGhp
cy5fc25hcHNob3QuYWdncmVnYXRlcyh3aXRoTm9kZUluZGV4ZXMpKTsKKyAgICAgICAgICAgIHRo
aXMuX2Rpc3BhdGNoZXIuZGlzcGF0Y2hNZXNzYWdlKHtkYXRhOiBtZXNzYWdlfSk7CiAgICAgICAg
IH0KLSAgICAgICAgc2V0VGltZW91dChyZXR1cm5SZXN1bHQuYmluZCh0aGlzKSwgMCk7CisgICAg
ICAgIHNldFRpbWVvdXQoZGlzcGF0Y2guYmluZCh0aGlzKSwgMCk7CiAgICAgfSwKIAotICAgIGNy
ZWF0ZURpZmY6IGZ1bmN0aW9uKGNsYXNzTmFtZSkKKyAgICB0ZXJtaW5hdGU6IGZ1bmN0aW9uKCkK
ICAgICB7Ci0gICAgICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdHNEaWZm
UHJveHkobmV3IFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RzRGlmZih0aGlzLl9zbmFwc2hvdCwg
Y2xhc3NOYW1lKSk7CisgICAgICAgIHRoaXMuX2Rpc3BhdGNoZXIgPSBudWxsOwogICAgIH0sCiAK
LSAgICBjcmVhdGVFZGdlc1Byb3ZpZGVyOiBmdW5jdGlvbihub2RlSW5kZXgsIGZpbHRlcikKKyAg
ICBfcG9zdE1lc3NhZ2VGcm9tV29ya2VyOiBmdW5jdGlvbihtZXNzYWdlKQogICAgIHsKLSAgICAg
ICAgZnVuY3Rpb24gY3JlYXRlUHJvdmlkZXIoKQorICAgICAgICBmdW5jdGlvbiBzZW5kKCkKICAg
ICAgICAgewotICAgICAgICAgICAgaWYgKGZpbHRlcikKLSAgICAgICAgICAgICAgICBmaWx0ZXIg
PSBmaWx0ZXIuYmluZCh0aGlzLl9zbmFwc2hvdCk7Ci0gICAgICAgICAgICByZXR1cm4gbmV3IFdl
Ykluc3BlY3Rvci5IZWFwU25hcHNob3RFZGdlc1Byb3ZpZGVyKHRoaXMuX3NuYXBzaG90LCBub2Rl
SW5kZXgsIGZpbHRlcik7CisgICAgICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVy
cygibWVzc2FnZSIsIG1lc3NhZ2UpOwogICAgICAgICB9Ci0gICAgICAgIHJldHVybiBuZXcgV2Vi
SW5zcGVjdG9yLkhlYXBTbmFwc2hvdFByb3ZpZGVyUHJveHkoY3JlYXRlUHJvdmlkZXIuYmluZCh0
aGlzKSk7CisgICAgICAgIHNldFRpbWVvdXQoc2VuZC5iaW5kKHRoaXMpLCAwKTsKKyAgICB9Cit9
OworCitXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90RmFrZVdvcmtlci5wcm90b3R5cGUuX19wcm90
b19fID0gV2ViSW5zcGVjdG9yLk9iamVjdC5wcm90b3R5cGU7CisKK1dlYkluc3BlY3Rvci5IZWFw
U25hcHNob3RXb3JrZXIgPSBmdW5jdGlvbigpCit7CisgICAgdGhpcy5fbmV4dE9iamVjdElkID0g
MTsKKyAgICB0aGlzLl9uZXh0Q2FsbElkID0gMTsKKyAgICB0aGlzLl9jYWxsYmFja3MgPSBbXTsK
KyAgICAvLyBUaGVyZSBpcyBubyBzdXBwb3J0IGZvciB3b3JrZXJzIGluIENocm9taXVtIERSVC4K
KyAgICB0aGlzLl93b3JrZXIgPSB0eXBlb2YgSW5zcGVjdG9yVGVzdCA9PT0gInVuZGVmaW5lZCIg
PyBuZXcgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFJlYWxXb3JrZXIoKSA6IG5ldyBXZWJJbnNw
ZWN0b3IuSGVhcFNuYXBzaG90RmFrZVdvcmtlcigpOworICAgIHRoaXMuX3dvcmtlci5hZGRFdmVu
dExpc3RlbmVyKCJtZXNzYWdlIiwgdGhpcy5fbWVzc2FnZVJlY2VpdmVkLmJpbmQodGhpcyksIGZh
bHNlKTsKK30KKworV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFdvcmtlci5wcm90b3R5cGUgPSB7
CisgICAgY3JlYXRlT2JqZWN0OiBmdW5jdGlvbihjb25zdHJ1Y3Rvck5hbWUpCisgICAgeworICAg
ICAgICB2YXIgcHJveHlDb25zdHJ1Y3RvckZ1bmN0aW9uID0gdGhpcy5fZmluZEZ1bmN0aW9uKGNv
bnN0cnVjdG9yTmFtZSArICJQcm94eSIpOworICAgICAgICB2YXIgb2JqZWN0SWQgPSB0aGlzLl9u
ZXh0T2JqZWN0SWQrKzsKKyAgICAgICAgdmFyIHByb3h5ID0gbmV3IHByb3h5Q29uc3RydWN0b3JG
dW5jdGlvbih0aGlzLCBvYmplY3RJZCk7CisgICAgICAgIHRoaXMuX3Bvc3RNZXNzYWdlKHtjYWxs
SWQ6IHRoaXMuX25leHRDYWxsSWQrKywgZGlzcG9zaXRpb246ICJjcmVhdGUiLCBvYmplY3RJZDog
b2JqZWN0SWQsIG1ldGhvZE5hbWU6IGNvbnN0cnVjdG9yTmFtZX0pOworICAgICAgICByZXR1cm4g
cHJveHk7CiAgICAgfSwKIAotICAgIGNyZWF0ZU5vZGVzUHJvdmlkZXI6IGZ1bmN0aW9uKGZpbHRl
cikKKyAgICBkaXNwb3NlOiBmdW5jdGlvbigpCiAgICAgewotICAgICAgICBmdW5jdGlvbiBjcmVh
dGVQcm92aWRlcigpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmIChmaWx0ZXIpCi0gICAgICAg
ICAgICAgICAgZmlsdGVyID0gZmlsdGVyLmJpbmQodGhpcy5fc25hcHNob3QpOwotICAgICAgICAg
ICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90Tm9kZXNQcm92aWRlcih0aGlz
Ll9zbmFwc2hvdCwgZmlsdGVyKTsKKyAgICAgICAgdGhpcy5fd29ya2VyLnRlcm1pbmF0ZSgpOwor
ICAgIH0sCisKKyAgICBkaXNwb3NlT2JqZWN0OiBmdW5jdGlvbihvYmplY3RJZCkKKyAgICB7Cisg
ICAgICAgIHRoaXMuX3Bvc3RNZXNzYWdlKHtjYWxsSWQ6IHRoaXMuX25leHRDYWxsSWQrKywgZGlz
cG9zaXRpb246ICJkaXNwb3NlIiwgb2JqZWN0SWQ6IG9iamVjdElkfSk7CisgICAgfSwKKworICAg
IGNhbGxHZXR0ZXI6IGZ1bmN0aW9uKGNhbGxiYWNrLCBvYmplY3RJZCwgZ2V0dGVyTmFtZSkKKyAg
ICB7CisgICAgICAgIHZhciBjYWxsSWQgPSB0aGlzLl9uZXh0Q2FsbElkKys7CisgICAgICAgIHRo
aXMuX2NhbGxiYWNrc1tjYWxsSWRdID0gY2FsbGJhY2s7CisgICAgICAgIHRoaXMuX3Bvc3RNZXNz
YWdlKHtjYWxsSWQ6IGNhbGxJZCwgZGlzcG9zaXRpb246ICJnZXR0ZXIiLCBvYmplY3RJZDogb2Jq
ZWN0SWQsIG1ldGhvZE5hbWU6IGdldHRlck5hbWV9KTsKKyAgICB9LAorCisgICAgY2FsbEZhY3Rv
cnlNZXRob2Q6IGZ1bmN0aW9uKGNhbGxiYWNrLCBvYmplY3RJZCwgbWV0aG9kTmFtZSwgcHJveHlD
b25zdHJ1Y3Rvck5hbWUpCisgICAgeworICAgICAgICB2YXIgY2FsbElkID0gdGhpcy5fbmV4dENh
bGxJZCsrOworICAgICAgICB2YXIgbWV0aG9kQXJndW1lbnRzID0gQXJyYXkucHJvdG90eXBlLnNs
aWNlLmNhbGwoYXJndW1lbnRzLCA0KTsKKyAgICAgICAgdmFyIG5ld09iamVjdElkID0gdGhpcy5f
bmV4dE9iamVjdElkKys7CisgICAgICAgIHZhciBwcm94eUNvbnN0cnVjdG9yRnVuY3Rpb24gPSB0
aGlzLl9maW5kRnVuY3Rpb24ocHJveHlDb25zdHJ1Y3Rvck5hbWUpOworICAgICAgICBpZiAoY2Fs
bGJhY2spIHsKKyAgICAgICAgICAgIGZ1bmN0aW9uIHdyYXBDYWxsYmFjayhyZW1vdGVSZXN1bHQp
CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY2FsbGJhY2socmVtb3RlUmVzdWx0ID8g
bmV3IHByb3h5Q29uc3RydWN0b3JGdW5jdGlvbih0aGlzLCBuZXdPYmplY3RJZCkgOiBudWxsKTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHRoaXMuX2NhbGxiYWNrc1tjYWxsSWRdID0gd3Jh
cENhbGxiYWNrLmJpbmQodGhpcyk7CisgICAgICAgICAgICB0aGlzLl9wb3N0TWVzc2FnZSh7Y2Fs
bElkOiBjYWxsSWQsIGRpc3Bvc2l0aW9uOiAiZmFjdG9yeSIsIG9iamVjdElkOiBvYmplY3RJZCwg
bWV0aG9kTmFtZTogbWV0aG9kTmFtZSwgbWV0aG9kQXJndW1lbnRzOiBtZXRob2RBcmd1bWVudHMs
IG5ld09iamVjdElkOiBuZXdPYmplY3RJZH0pOworICAgICAgICAgICAgcmV0dXJuIG51bGw7Cisg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICB0aGlzLl9wb3N0TWVzc2FnZSh7Y2FsbElkOiBj
YWxsSWQsIGRpc3Bvc2l0aW9uOiAiZmFjdG9yeSIsIG9iamVjdElkOiBvYmplY3RJZCwgbWV0aG9k
TmFtZTogbWV0aG9kTmFtZSwgbWV0aG9kQXJndW1lbnRzOiBtZXRob2RBcmd1bWVudHMsIG5ld09i
amVjdElkOiBuZXdPYmplY3RJZH0pOworICAgICAgICAgICAgcmV0dXJuIG5ldyBwcm94eUNvbnN0
cnVjdG9yRnVuY3Rpb24odGhpcywgbmV3T2JqZWN0SWQpOwogICAgICAgICB9Ci0gICAgICAgIHJl
dHVybiBuZXcgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFByb3ZpZGVyUHJveHkoY3JlYXRlUHJv
dmlkZXIuYmluZCh0aGlzKSk7CiAgICAgfSwKIAotICAgIGNyZWF0ZVBhdGhGaW5kZXI6IGZ1bmN0
aW9uKHRhcmdldE5vZGVJbmRleCkKKyAgICBjYWxsTWV0aG9kOiBmdW5jdGlvbihjYWxsYmFjaywg
b2JqZWN0SWQsIG1ldGhvZE5hbWUpCiAgICAgewotICAgICAgICByZXR1cm4gbmV3IFdlYkluc3Bl
Y3Rvci5IZWFwU25hcHNob3RQYXRoRmluZGVyUHJveHkobmV3IFdlYkluc3BlY3Rvci5IZWFwU25h
cHNob3RQYXRoRmluZGVyKHRoaXMuX3NuYXBzaG90LCB0YXJnZXROb2RlSW5kZXgpKTsKKyAgICAg
ICAgdmFyIGNhbGxJZCA9IHRoaXMuX25leHRDYWxsSWQrKzsKKyAgICAgICAgdmFyIG1ldGhvZEFy
Z3VtZW50cyA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMyk7CisgICAg
ICAgIGlmIChjYWxsYmFjaykKKyAgICAgICAgICAgIHRoaXMuX2NhbGxiYWNrc1tjYWxsSWRdID0g
Y2FsbGJhY2s7CisgICAgICAgIHRoaXMuX3Bvc3RNZXNzYWdlKHtjYWxsSWQ6IGNhbGxJZCwgZGlz
cG9zaXRpb246ICJtZXRob2QiLCBvYmplY3RJZDogb2JqZWN0SWQsIG1ldGhvZE5hbWU6IG1ldGhv
ZE5hbWUsIG1ldGhvZEFyZ3VtZW50czogbWV0aG9kQXJndW1lbnRzfSk7CisgICAgfSwKKworICAg
IF9maW5kRnVuY3Rpb246IGZ1bmN0aW9uKG5hbWUpCisgICAgeworICAgICAgICB2YXIgcGF0aCA9
IG5hbWUuc3BsaXQoIi4iKTsKKyAgICAgICAgdmFyIHJlc3VsdCA9IHdpbmRvdzsKKyAgICAgICAg
Zm9yICh2YXIgaSA9IDA7IGkgPCBwYXRoLmxlbmd0aDsgKytpKQorICAgICAgICAgICAgcmVzdWx0
ID0gcmVzdWx0W3BhdGhbaV1dOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0sCisKKyAg
ICBfbWVzc2FnZVJlY2VpdmVkOiBmdW5jdGlvbihldmVudCkKKyAgICB7CisgICAgICAgIHZhciBk
YXRhID0gZXZlbnQuZGF0YTsKKyAgICAgICAgaWYgKCF0aGlzLl9jYWxsYmFja3NbZGF0YS5jYWxs
SWRdKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB2YXIgY2FsbGJhY2sgPSB0aGlzLl9j
YWxsYmFja3NbZGF0YS5jYWxsSWRdOworICAgICAgICBkZWxldGUgdGhpcy5fY2FsbGJhY2tzW2Rh
dGEuY2FsbElkXTsKKyAgICAgICAgY2FsbGJhY2soZGF0YS5yZXN1bHQpOworICAgIH0sCisKKyAg
ICBfcG9zdE1lc3NhZ2U6IGZ1bmN0aW9uKG1lc3NhZ2UpCisgICAgeworICAgICAgICB0aGlzLl93
b3JrZXIucG9zdE1lc3NhZ2UobWVzc2FnZSk7ICAgICAgCisgICAgfQorfTsKKworV2ViSW5zcGVj
dG9yLkhlYXBTbmFwc2hvdFByb3h5T2JqZWN0ID0gZnVuY3Rpb24od29ya2VyLCBvYmplY3RJZCkK
K3sKKyAgICB0aGlzLl93b3JrZXIgPSB3b3JrZXI7CisgICAgdGhpcy5fb2JqZWN0SWQgPSBvYmpl
Y3RJZDsKK30KKworV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFByb3h5T2JqZWN0LnByb3RvdHlw
ZSA9IHsKKyAgICBfY2FsbFdvcmtlcjogZnVuY3Rpb24od29ya2VyTWV0aG9kTmFtZSwgYXJncykK
KyAgICB7CisgICAgICAgIGFyZ3Muc3BsaWNlKDEsIDAsIHRoaXMuX29iamVjdElkKTsKKyAgICAg
ICAgcmV0dXJuIHRoaXMuX3dvcmtlclt3b3JrZXJNZXRob2ROYW1lXS5hcHBseSh0aGlzLl93b3Jr
ZXIsIGFyZ3MpOwogICAgIH0sCiAKICAgICBkaXNwb3NlOiBmdW5jdGlvbigpCiAgICAgewotICAg
ICAgICB0aGlzLl9zbmFwc2hvdC5kaXNwb3NlKCk7CisgICAgICAgIHRoaXMuX3dvcmtlci5kaXNw
b3NlT2JqZWN0KHRoaXMuX29iamVjdElkKTsKKyAgICB9LAorCisgICAgZGlzcG9zZVdvcmtlcjog
ZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgdGhpcy5fd29ya2VyLmRpc3Bvc2UoKTsKKyAgICB9
LAorCisgICAgY2FsbEZhY3RvcnlNZXRob2Q6IGZ1bmN0aW9uKGNhbGxiYWNrLCBtZXRob2ROYW1l
LCBwcm94eUNvbnN0cnVjdG9yTmFtZSkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9jYWxs
V29ya2VyKCJjYWxsRmFjdG9yeU1ldGhvZCIsIEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFy
Z3VtZW50cywgMCkpOworICAgIH0sCisKKyAgICBjYWxsR2V0dGVyOiBmdW5jdGlvbihjYWxsYmFj
aywgZ2V0dGVyTmFtZSkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9jYWxsV29ya2VyKCJj
YWxsR2V0dGVyIiwgQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLCAwKSk7CiAg
ICAgfSwKIAorICAgIGNhbGxNZXRob2Q6IGZ1bmN0aW9uKGNhbGxiYWNrLCBtZXRob2ROYW1lKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX2NhbGxXb3JrZXIoImNhbGxNZXRob2QiLCBBcnJh
eS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsIDApKTsKKyAgICB9Cit9OworCitXZWJJ
bnNwZWN0b3IuSGVhcFNuYXBzaG90TG9hZGVyUHJveHkgPSBmdW5jdGlvbih3b3JrZXIsIG9iamVj
dElkKQoreworICAgIFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RQcm94eU9iamVjdC5jYWxsKHRo
aXMsIHdvcmtlciwgb2JqZWN0SWQpOworICAgIHRoaXMuX2xvYWRpbmcgPSBmYWxzZTsKKyAgICB0
aGlzLl9sb2FkZWQgPSBmYWxzZTsKK30KKworV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdExvYWRl
clByb3h5LnByb3RvdHlwZSA9IHsKICAgICBmaW5pc2hMb2FkaW5nOiBmdW5jdGlvbihjYWxsYmFj
aykKICAgICB7Ci0gICAgICAgIGlmICh0aGlzLl9zbmFwc2hvdCB8fCAhdGhpcy5faXNMb2FkaW5n
KQorICAgICAgICBpZiAoIXRoaXMuX2xvYWRpbmcpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgICAgIGZ1bmN0aW9uIHBhcnNlKCkgewotICAgICAgICAgICAgdmFyIHJhd1NuYXBzaG90
ID0gSlNPTi5wYXJzZSh0aGlzLl9qc29uKTsKLSAgICAgICAgICAgIHZhciBsb2FkQ2FsbGJhY2tz
ID0gdGhpcy5fb25Mb2FkQ2FsbGJhY2tzOwotICAgICAgICAgICAgbG9hZENhbGxiYWNrcy5zcGxp
Y2UoMCwgMCwgY2FsbGJhY2spOwotICAgICAgICAgICAgZGVsZXRlIHRoaXMuX29uTG9hZENhbGxi
YWNrOwotICAgICAgICAgICAgZGVsZXRlIHRoaXMuX2pzb247Ci0gICAgICAgICAgICBkZWxldGUg
dGhpcy5faXNMb2FkaW5nOwotICAgICAgICAgICAgdGhpcy5fc25hcHNob3QgPSBuZXcgV2ViSW5z
cGVjdG9yLkhlYXBTbmFwc2hvdChyYXdTbmFwc2hvdCk7Ci0gICAgICAgICAgICB0aGlzLl9ub2Rl
Q291bnQgPSB0aGlzLl9zbmFwc2hvdC5ub2RlQ291bnQ7Ci0gICAgICAgICAgICB0aGlzLl9yb290
Tm9kZUluZGV4ID0gdGhpcy5fc25hcHNob3QuX3Jvb3ROb2RlSW5kZXg7Ci0gICAgICAgICAgICB0
aGlzLl90b3RhbFNpemUgPSB0aGlzLl9zbmFwc2hvdC50b3RhbFNpemU7CisgICAgICAgIHZhciBs
b2FkQ2FsbGJhY2tzID0gdGhpcy5fb25Mb2FkQ2FsbGJhY2tzOworICAgICAgICBsb2FkQ2FsbGJh
Y2tzLnNwbGljZSgwLCAwLCBjYWxsYmFjayk7CisgICAgICAgIGRlbGV0ZSB0aGlzLl9vbkxvYWRD
YWxsYmFja3M7CisgICAgICAgIHRoaXMuX2xvYWRpbmcgPSBmYWxzZTsKKyAgICAgICAgdGhpcy5f
bG9hZGVkID0gdHJ1ZTsKKyAgICAgICAgZnVuY3Rpb24gY2FsbExvYWRDYWxsYmFja3Moc25hcHNo
b3RQcm94eSkKKyAgICAgICAgewogICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsb2Fk
Q2FsbGJhY2tzLmxlbmd0aDsgKytpKQotICAgICAgICAgICAgICAgIGxvYWRDYWxsYmFja3NbaV0o
KTsKKyAgICAgICAgICAgICAgICBsb2FkQ2FsbGJhY2tzW2ldKHNuYXBzaG90UHJveHkpOworICAg
ICAgICB9CisgICAgICAgIGZ1bmN0aW9uIHVwZGF0ZVN0YXRpY0RhdGEoc25hcHNob3RQcm94eSkK
KyAgICAgICAgeworICAgICAgICAgICAgdGhpcy5kaXNwb3NlKCk7CisgICAgICAgICAgICBzbmFw
c2hvdFByb3h5LnVwZGF0ZVN0YXRpY0RhdGEoY2FsbExvYWRDYWxsYmFja3MpOwogICAgICAgICB9
Ci0gICAgICAgIHNldFRpbWVvdXQocGFyc2UuYmluZCh0aGlzKSwgMCk7CisgICAgICAgIHRoaXMu
Y2FsbEZhY3RvcnlNZXRob2QodXBkYXRlU3RhdGljRGF0YS5iaW5kKHRoaXMpLCAiZmluaXNoTG9h
ZGluZyIsICJXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90UHJveHkiKTsKICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgfSwKIAogICAgIGdldCBsb2FkZWQoKQogICAgIHsKLSAgICAgICAgcmV0dXJu
ICEhdGhpcy5fc25hcHNob3Q7Ci0gICAgfSwKLQotICAgIGdldCBub2RlQ291bnQoKQotICAgIHsK
LSAgICAgICAgcmV0dXJuIHRoaXMuX25vZGVDb3VudDsKKyAgICAgICAgcmV0dXJuIHRoaXMuX2xv
YWRlZDsKICAgICB9LAogCi0gICAgbm9kZUZpZWxkVmFsdWVzQnlJbmRleDogZnVuY3Rpb24oZmll
bGROYW1lLCBpbmRleGVzLCBjYWxsYmFjaykKKyAgICBzdGFydExvYWRpbmc6IGZ1bmN0aW9uKGNh
bGxiYWNrKQogICAgIHsKLSAgICAgICAgZnVuY3Rpb24gcmV0dXJuUmVzdWx0KCkKLSAgICAgICAg
ewotICAgICAgICAgICAgY2FsbGJhY2sodGhpcy5fc25hcHNob3Qubm9kZUZpZWxkVmFsdWVzQnlJ
bmRleChmaWVsZE5hbWUsIGluZGV4ZXMpKTsKKyAgICAgICAgaWYgKCF0aGlzLl9sb2FkaW5nKSB7
CisgICAgICAgICAgICB0aGlzLl9vbkxvYWRDYWxsYmFja3MgPSBbY2FsbGJhY2tdOworICAgICAg
ICAgICAgdGhpcy5fbG9hZGluZyA9IHRydWU7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHRoaXMuX29uTG9hZENhbGxiYWNrcy5wdXNoKGNh
bGxiYWNrKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQotICAgICAgICBz
ZXRUaW1lb3V0KHJldHVyblJlc3VsdC5iaW5kKHRoaXMpLCAwKTsKICAgICB9LAogCiAgICAgcHVz
aEpTT05DaHVuazogZnVuY3Rpb24oY2h1bmspCiAgICAgewotICAgICAgICBpZiAodGhpcy5sb2Fk
ZWQgfHwgIXRoaXMuX2lzTG9hZGluZykKKyAgICAgICAgaWYgKCF0aGlzLl9sb2FkaW5nKQogICAg
ICAgICAgICAgcmV0dXJuOwotICAgICAgICB0aGlzLl9qc29uICs9IGNodW5rOworICAgICAgICB0
aGlzLmNhbGxNZXRob2QobnVsbCwgInB1c2hKU09OQ2h1bmsiLCBjaHVuayk7CisgICAgfQorfTsK
KworV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdExvYWRlclByb3h5LnByb3RvdHlwZS5fX3Byb3Rv
X18gPSBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90UHJveHlPYmplY3QucHJvdG90eXBlOworCitX
ZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90UHJveHkgPSBmdW5jdGlvbih3b3JrZXIsIG9iamVjdElk
KQoreworICAgIFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RQcm94eU9iamVjdC5jYWxsKHRoaXMs
IHdvcmtlciwgb2JqZWN0SWQpOworfQorCitXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90UHJveHku
cHJvdG90eXBlID0geworICAgIGFnZ3JlZ2F0ZXM6IGZ1bmN0aW9uKHdpdGhOb2RlSW5kZXhlcywg
Y2FsbGJhY2spCisgICAgeworICAgICAgICB0aGlzLmNhbGxNZXRob2QoY2FsbGJhY2ssICJhZ2dy
ZWdhdGVzIiwgd2l0aE5vZGVJbmRleGVzKTsKKyAgICB9LAorCisgICAgY3JlYXRlRGlmZjogZnVu
Y3Rpb24oY2xhc3NOYW1lKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuY2FsbEZhY3RvcnlN
ZXRob2QobnVsbCwgImNyZWF0ZURpZmYiLCAgIldlYkluc3BlY3Rvci5IZWFwU25hcHNob3RzRGlm
ZlByb3h5IiwgY2xhc3NOYW1lKTsKKyAgICB9LAorCisgICAgY3JlYXRlRWRnZXNQcm92aWRlcjog
ZnVuY3Rpb24obm9kZUluZGV4LCBmaWx0ZXIpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5j
YWxsRmFjdG9yeU1ldGhvZChudWxsLCAiY3JlYXRlRWRnZXNQcm92aWRlciIsICJXZWJJbnNwZWN0
b3IuSGVhcFNuYXBzaG90UHJvdmlkZXJQcm94eSIsIG5vZGVJbmRleCwgZmlsdGVyKTsKKyAgICB9
LAorCisgICAgY3JlYXRlTm9kZXNQcm92aWRlcjogZnVuY3Rpb24oZmlsdGVyKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIHRoaXMuY2FsbEZhY3RvcnlNZXRob2QobnVsbCwgImNyZWF0ZU5vZGVzUHJv
dmlkZXIiLCAiV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFByb3ZpZGVyUHJveHkiLCBmaWx0ZXIp
OworICAgIH0sCisKKyAgICBjcmVhdGVQYXRoRmluZGVyOiBmdW5jdGlvbih0YXJnZXROb2RlSW5k
ZXgpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5jYWxsRmFjdG9yeU1ldGhvZChudWxsLCAi
Y3JlYXRlUGF0aEZpbmRlciIsICJXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90UGF0aEZpbmRlclBy
b3h5IiwgdGFyZ2V0Tm9kZUluZGV4KTsKKyAgICB9LAorCisgICAgZGlzcG9zZTogZnVuY3Rpb24o
KQorICAgIHsKKyAgICAgICAgdGhpcy5kaXNwb3NlV29ya2VyKCk7CisgICAgfSwKKworICAgIGZp
bmlzaExvYWRpbmc6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICB9LAorCisgICAgZ2V0IGxvYWRlZCgpCisgICAgeworICAgICAgICByZXR1cm4gISF0aGlzLl9v
YmplY3RJZDsKKyAgICB9LAorCisgICAgZ2V0IG5vZGVDb3VudCgpCisgICAgeworICAgICAgICBy
ZXR1cm4gdGhpcy5fc3RhdGljRGF0YS5ub2RlQ291bnQ7CisgICAgfSwKKworICAgIG5vZGVGaWVs
ZFZhbHVlc0J5SW5kZXg6IGZ1bmN0aW9uKGZpZWxkTmFtZSwgaW5kZXhlcywgY2FsbGJhY2spCisg
ICAgeworICAgICAgICB0aGlzLmNhbGxNZXRob2QoY2FsbGJhY2ssICJub2RlRmllbGRWYWx1ZXNC
eUluZGV4IiwgZmllbGROYW1lLCBpbmRleGVzKTsKICAgICB9LAogCiAgICAgcHVzaEJhc2VJZHM6
IGZ1bmN0aW9uKHNuYXBzaG90SWQsIGNsYXNzTmFtZSwgbm9kZUlkcykKICAgICB7Ci0gICAgICAg
IHRoaXMuX3NuYXBzaG90LnB1c2hCYXNlTm9kZUlkcyhzbmFwc2hvdElkLCBjbGFzc05hbWUsIG5v
ZGVJZHMpOworICAgICAgICB0aGlzLmNhbGxNZXRob2QobnVsbCwgInB1c2hCYXNlSWRzIiwgc25h
cHNob3RJZCwgY2xhc3NOYW1lLCBub2RlSWRzKTsKICAgICB9LAogCiAgICAgZ2V0IHJvb3ROb2Rl
SW5kZXgoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuX3Jvb3ROb2RlSW5kZXg7CisgICAg
ICAgIHJldHVybiB0aGlzLl9zdGF0aWNEYXRhLnJvb3ROb2RlSW5kZXg7CiAgICAgfSwKIAotICAg
IHN0YXJ0TG9hZGluZzogZnVuY3Rpb24oY2FsbGJhY2spCisgICAgdXBkYXRlU3RhdGljRGF0YTog
ZnVuY3Rpb24oY2FsbGJhY2spCiAgICAgewotICAgICAgICBpZiAodGhpcy5fc25hcHNob3QpIHsK
LSAgICAgICAgICAgIGZ1bmN0aW9uIGFzeW5jSW52b2tlKCkKLSAgICAgICAgICAgIHsKLSAgICAg
ICAgICAgICAgICBjYWxsYmFjaygpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgc2V0VGlt
ZW91dChjYWxsYmFjaywgMCk7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0g
ZWxzZSBpZiAodGhpcy5faXNMb2FkaW5nKSB7Ci0gICAgICAgICAgICB0aGlzLl9vbkxvYWRDYWxs
YmFja3MucHVzaChjYWxsYmFjayk7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAg
IH0gZWxzZSB7Ci0gICAgICAgICAgICB0aGlzLl9pc0xvYWRpbmcgPSB0cnVlOwotICAgICAgICAg
ICAgdGhpcy5fb25Mb2FkQ2FsbGJhY2tzID0gW2NhbGxiYWNrXTsKLSAgICAgICAgICAgIHRoaXMu
X2pzb24gPSAiIjsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBmdW5jdGlvbiBk
YXRhUmVjZWl2ZWQoc3RhdGljRGF0YSkKKyAgICAgICAgeworICAgICAgICAgICAgdGhpcy5fc3Rh
dGljRGF0YSA9IHN0YXRpY0RhdGE7CisgICAgICAgICAgICBjYWxsYmFjayh0aGlzKTsKICAgICAg
ICAgfQorICAgICAgICB0aGlzLmNhbGxNZXRob2QoZGF0YVJlY2VpdmVkLmJpbmQodGhpcyksICJ1
cGRhdGVTdGF0aWNEYXRhIik7CisgICAgfSwKKworICAgIHN0YXJ0TG9hZGluZzogZnVuY3Rpb24o
Y2FsbGJhY2spCisgICAgeworICAgICAgICBzZXRUaW1lb3V0KGNhbGxiYWNrLCAwKTsKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIH0sCiAKICAgICBnZXQgdG90YWxTaXplKCkKICAgICB7Ci0g
ICAgICAgIHJldHVybiB0aGlzLl90b3RhbFNpemU7CisgICAgICAgIHJldHVybiB0aGlzLl9zdGF0
aWNEYXRhLnRvdGFsU2l6ZTsKICAgICB9LAogCiAgICAgZ2V0IHVpZCgpCiAgICAgewotICAgICAg
ICByZXR1cm4gdGhpcy5fc25hcHNob3QudWlkOworICAgICAgICByZXR1cm4gdGhpcy5fc3RhdGlj
RGF0YS51aWQ7CiAgICAgfQogfTsKIAotV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFByb3ZpZGVy
UHJveHkgPSBmdW5jdGlvbihjcmVhdGVQcm92aWRlcikKK1dlYkluc3BlY3Rvci5IZWFwU25hcHNo
b3RQcm94eS5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFBy
b3h5T2JqZWN0LnByb3RvdHlwZTsKKworV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFByb3ZpZGVy
UHJveHkgPSBmdW5jdGlvbih3b3JrZXIsIG9iamVjdElkKQogewotICAgIHRoaXMuX3Byb3ZpZGVy
ID0gY3JlYXRlUHJvdmlkZXIoKTsKKyAgICBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90UHJveHlP
YmplY3QuY2FsbCh0aGlzLCB3b3JrZXIsIG9iamVjdElkKTsKIH0KIAogV2ViSW5zcGVjdG9yLkhl
YXBTbmFwc2hvdFByb3ZpZGVyUHJveHkucHJvdG90eXBlID0gewotICAgIHNlcmlhbGl6ZU5leHRJ
dGVtczogZnVuY3Rpb24oY291bnQsIGNhbGxiYWNrKQorICAgIGlzRW1wdHk6IGZ1bmN0aW9uKGNh
bGxiYWNrKQogICAgIHsKLSAgICAgICAgZnVuY3Rpb24gcmV0dXJuUmVzdWx0KCkKLSAgICAgICAg
ewotICAgICAgICAgICAgY2FsbGJhY2sodGhpcy5fcHJvdmlkZXIuc2VyaWFsaXplTmV4dEl0ZW1z
KGNvdW50KSk7Ci0gICAgICAgIH0KLSAgICAgICAgc2V0VGltZW91dChyZXR1cm5SZXN1bHQuYmlu
ZCh0aGlzKSwgMCk7CisgICAgICAgIHRoaXMuY2FsbEdldHRlcihjYWxsYmFjaywgImlzRW1wdHki
KTsKICAgICB9LAogCi0gICAgaXNFbXB0eTogZnVuY3Rpb24oY2FsbGJhY2spCisgICAgc2VyaWFs
aXplTmV4dEl0ZW1zOiBmdW5jdGlvbihjb3VudCwgY2FsbGJhY2spCiAgICAgewotICAgICAgICBm
dW5jdGlvbiByZXR1cm5SZXN1bHQoKQotICAgICAgICB7Ci0gICAgICAgICAgICBjYWxsYmFjayh0
aGlzLl9wcm92aWRlci5pc0VtcHR5KTsKLSAgICAgICAgfQotICAgICAgICBzZXRUaW1lb3V0KHJl
dHVyblJlc3VsdC5iaW5kKHRoaXMpLCAwKTsKKyAgICAgICAgdGhpcy5jYWxsTWV0aG9kKGNhbGxi
YWNrLCAic2VyaWFsaXplTmV4dEl0ZW1zIiwgY291bnQpOwogICAgIH0sCiAKICAgICBzb3J0QW5k
UmV3aW5kOiBmdW5jdGlvbihjb21wYXJhdG9yLCBjYWxsYmFjaykKICAgICB7Ci0gICAgICAgIGZ1
bmN0aW9uIHJldHVyblJlc3VsdCgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGNhbGxiYWNrKHRo
aXMuX3Byb3ZpZGVyLnNvcnRBbmRSZXdpbmQoY29tcGFyYXRvcikpOwotICAgICAgICB9Ci0gICAg
ICAgIHNldFRpbWVvdXQocmV0dXJuUmVzdWx0LmJpbmQodGhpcyksIDApOworICAgICAgICB0aGlz
LmNhbGxNZXRob2QoY2FsbGJhY2ssICJzb3J0QW5kUmV3aW5kIiwgY29tcGFyYXRvcik7CiAgICAg
fQogfTsKIAotV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFBhdGhGaW5kZXJQcm94eSA9IGZ1bmN0
aW9uKHBhdGhGaW5kZXIpCitXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90UHJvdmlkZXJQcm94eS5w
cm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFByb3h5T2JqZWN0
LnByb3RvdHlwZTsKKworV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFBhdGhGaW5kZXJQcm94eSA9
IGZ1bmN0aW9uKHdvcmtlciwgb2JqZWN0SWQpCiB7Ci0gICAgdGhpcy5fcGF0aEZpbmRlciA9IHBh
dGhGaW5kZXI7CisgICAgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFByb3h5T2JqZWN0LmNhbGwo
dGhpcywgd29ya2VyLCBvYmplY3RJZCk7CiB9CiAKIFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RQ
YXRoRmluZGVyUHJveHkucHJvdG90eXBlID0gewogICAgIGZpbmROZXh0OiBmdW5jdGlvbihjYWxs
YmFjaykKICAgICB7Ci0gICAgICAgIGZ1bmN0aW9uIHJldHVyblJlc3VsdCgpCi0gICAgICAgIHsK
LSAgICAgICAgICAgIGNhbGxiYWNrKHRoaXMuX3BhdGhGaW5kZXIuZmluZE5leHQoKSk7Ci0gICAg
ICAgIH0KLSAgICAgICAgc2V0VGltZW91dChyZXR1cm5SZXN1bHQuYmluZCh0aGlzKSwgMCk7Cisg
ICAgICAgIHRoaXMuY2FsbE1ldGhvZChjYWxsYmFjaywgImZpbmROZXh0Iik7CiAgICAgfSwKIAog
ICAgIHVwZGF0ZVJvb3RzOiBmdW5jdGlvbihmaWx0ZXIpCiAgICAgewotICAgICAgICBmdW5jdGlv
biBhc3luY0ludm9rZSgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHRoaXMuX3BhdGhGaW5kZXIu
dXBkYXRlUm9vdHMoZmlsdGVyKTsKLSAgICAgICAgfQotICAgICAgICBzZXRUaW1lb3V0KGFzeW5j
SW52b2tlLmJpbmQodGhpcyksIDApOworICAgICAgICB0aGlzLmNhbGxNZXRob2QobnVsbCwgInVw
ZGF0ZVJvb3RzIiwgZmlsdGVyKTsKICAgICB9CiB9OwogCi1XZWJJbnNwZWN0b3IuSGVhcFNuYXBz
aG90c0RpZmZQcm94eSA9IGZ1bmN0aW9uKGRpZmYpCitXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90
UGF0aEZpbmRlclByb3h5LnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuSGVhcFNu
YXBzaG90UHJveHlPYmplY3QucHJvdG90eXBlOworCitXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90
c0RpZmZQcm94eSA9IGZ1bmN0aW9uKHdvcmtlciwgb2JqZWN0SWQpCiB7Ci0gICAgdGhpcy5fZGlm
ZiA9IGRpZmY7CisgICAgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFByb3h5T2JqZWN0LmNhbGwo
dGhpcywgd29ya2VyLCBvYmplY3RJZCk7CiB9CiAKIFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3Rz
RGlmZlByb3h5LnByb3RvdHlwZSA9IHsKICAgICBjYWxjdWxhdGU6IGZ1bmN0aW9uKGNhbGxiYWNr
KQogICAgIHsKLSAgICAgICAgZnVuY3Rpb24gcmV0dXJuUmVzdWx0KCkKLSAgICAgICAgewotICAg
ICAgICAgICAgY2FsbGJhY2sodGhpcy5fZGlmZi5jYWxjdWxhdGUoKSk7Ci0gICAgICAgIH0KLSAg
ICAgICAgc2V0VGltZW91dChyZXR1cm5SZXN1bHQuYmluZCh0aGlzKSwgMCk7CisgICAgICAgIHRo
aXMuY2FsbE1ldGhvZChjYWxsYmFjaywgImNhbGN1bGF0ZSIpOwogICAgIH0sCiAKICAgICBwdXNo
QmFzZUlkczogZnVuY3Rpb24oYmFzZUlkcykKICAgICB7Ci0gICAgICAgIHRoaXMuX2RpZmYucHVz
aEJhc2VJZHMoYmFzZUlkcyk7CisgICAgICAgIHRoaXMuY2FsbE1ldGhvZChudWxsLCAicHVzaEJh
c2VJZHMiLCBiYXNlSWRzKTsKICAgICB9LAogCiAgICAgcHVzaEJhc2VTZWxmU2l6ZXM6IGZ1bmN0
aW9uKGJhc2VTZWxmU2l6ZXMpCiAgICAgewotICAgICAgICB0aGlzLl9kaWZmLnB1c2hCYXNlU2Vs
ZlNpemVzKGJhc2VTZWxmU2l6ZXMpOworICAgICAgICB0aGlzLmNhbGxNZXRob2QobnVsbCwgInB1
c2hCYXNlU2VsZlNpemVzIiwgYmFzZVNlbGZTaXplcyk7CiAgICAgfQogfTsKKworV2ViSW5zcGVj
dG9yLkhlYXBTbmFwc2hvdHNEaWZmUHJveHkucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3Bl
Y3Rvci5IZWFwU25hcHNob3RQcm94eU9iamVjdC5wcm90b3R5cGU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0hlYXBTbmFwc2hvdFdvcmtlci5qcyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSGVhcFNuYXBzaG90V29ya2VyLmpzCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVhNDhmMjkKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0hlYXBTbmFwc2hvdFdvcmtl
ci5qcwpAQCAtMCwwICsxLDQ0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMg
YXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNv
cHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIg
dGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1
dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBm
cm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IK
KyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworV2ViSW5zcGVjdG9yID0ge307CitXZWJJbnNwZWN0b3IuVUlT
dHJpbmcgPSBmdW5jdGlvbihzKSB7IHJldHVybiBzOyB9OworCitpbXBvcnRTY3JpcHRzKCJCaW5h
cnlTZWFyY2guanMiKTsKK2ltcG9ydFNjcmlwdHMoIkhlYXBTbmFwc2hvdC5qcyIpOworaW1wb3J0
U2NyaXB0cygiSGVhcFNuYXBzaG90V29ya2VyRGlzcGF0Y2hlci5qcyIpOworCitmdW5jdGlvbiBw
b3N0TWVzc2FnZVdyYXBwZXIobWVzc2FnZSkKK3sKKyAgICBwb3N0TWVzc2FnZShtZXNzYWdlKTsK
K30KKwordmFyIGRpc3BhdGNoZXIgPSBuZXcgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFdvcmtl
ckRpc3BhdGNoZXIodGhpcywgcG9zdE1lc3NhZ2VXcmFwcGVyKTsKK2FkZEV2ZW50TGlzdGVuZXIo
Im1lc3NhZ2UiLCBkaXNwYXRjaGVyLmRpc3BhdGNoTWVzc2FnZS5iaW5kKGRpc3BhdGNoZXIpLCBm
YWxzZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0hl
YXBTbmFwc2hvdFdvcmtlckRpc3BhdGNoZXIuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL0hlYXBTbmFwc2hvdFdvcmtlckRpc3BhdGNoZXIuanMKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMC4uMWYzMmVjMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSGVhcFNuYXBzaG90V29ya2VyRGlzcGF0Y2hlci5q
cwpAQCAtMCwwICsxLDg1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJl
CisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHly
aWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhl
IG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9y
cyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9t
CisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAq
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBU
SEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFdvcmtlckRpc3BhdGNo
ZXIgPSBmdW5jdGlvbihnbG9iYWxPYmplY3QsIHBvc3RNZXNzYWdlKQoreworICAgIHRoaXMuX29i
amVjdHMgPSBbXTsKKyAgICB0aGlzLl9nbG9iYWwgPSBnbG9iYWxPYmplY3Q7CisgICAgdGhpcy5f
cG9zdE1lc3NhZ2UgPSBwb3N0TWVzc2FnZTsKK30KKworV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hv
dFdvcmtlckRpc3BhdGNoZXIucHJvdG90eXBlID0geworICAgIF9maW5kRnVuY3Rpb246IGZ1bmN0
aW9uKG5hbWUpCisgICAgeworICAgICAgICB2YXIgcGF0aCA9IG5hbWUuc3BsaXQoIi4iKTsKKyAg
ICAgICAgdmFyIHJlc3VsdCA9IHRoaXMuX2dsb2JhbDsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7
IGkgPCBwYXRoLmxlbmd0aDsgKytpKQorICAgICAgICAgICAgcmVzdWx0ID0gcmVzdWx0W3BhdGhb
aV1dOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0sCisKKyAgICBkaXNwYXRjaE1lc3Nh
Z2U6IGZ1bmN0aW9uKGV2ZW50KQorICAgIHsKKyAgICAgICAgdmFyIGRhdGEgPSBldmVudC5kYXRh
OworICAgICAgICBzd2l0Y2ggKGRhdGEuZGlzcG9zaXRpb24pIHsKKyAgICAgICAgICAgIGNhc2Ug
ImNyZWF0ZSI6IHsKKyAgICAgICAgICAgICAgICB2YXIgY29uc3RydWN0b3JGdW5jdGlvbiA9IHRo
aXMuX2ZpbmRGdW5jdGlvbihkYXRhLm1ldGhvZE5hbWUpOworICAgICAgICAgICAgICAgIHRoaXMu
X29iamVjdHNbZGF0YS5vYmplY3RJZF0gPSBuZXcgY29uc3RydWN0b3JGdW5jdGlvbigpOworICAg
ICAgICAgICAgICAgIHRoaXMuX3Bvc3RNZXNzYWdlKHtjYWxsSWQ6IGRhdGEuY2FsbElkfSk7Cisg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBjYXNlICJk
aXNwb3NlIjogeworICAgICAgICAgICAgICAgIGRlbGV0ZSB0aGlzLl9vYmplY3RzW2RhdGEub2Jq
ZWN0SWRdOworICAgICAgICAgICAgICAgIHRoaXMuX3Bvc3RNZXNzYWdlKHtjYWxsSWQ6IGRhdGEu
Y2FsbElkfSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICBjYXNlICJnZXR0ZXIiOiB7CisgICAgICAgICAgICAgICAgdmFyIG9iamVjdCA9IHRoaXMu
X29iamVjdHNbZGF0YS5vYmplY3RJZF07CisgICAgICAgICAgICAgICAgdmFyIHJlc3VsdCA9IG9i
amVjdFtkYXRhLm1ldGhvZE5hbWVdOworICAgICAgICAgICAgICAgIHRoaXMuX3Bvc3RNZXNzYWdl
KHtjYWxsSWQ6IGRhdGEuY2FsbElkLCByZXN1bHQ6IHJlc3VsdH0pOworICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgY2FzZSAiZmFjdG9yeSI6IHsKKyAg
ICAgICAgICAgICAgICB2YXIgb2JqZWN0ID0gdGhpcy5fb2JqZWN0c1tkYXRhLm9iamVjdElkXTsK
KyAgICAgICAgICAgICAgICB2YXIgcmVzdWx0ID0gb2JqZWN0W2RhdGEubWV0aG9kTmFtZV0uYXBw
bHkob2JqZWN0LCBkYXRhLm1ldGhvZEFyZ3VtZW50cyk7CisgICAgICAgICAgICAgICAgaWYgKHJl
c3VsdCkKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5fb2JqZWN0c1tkYXRhLm5ld09iamVjdElk
XSA9IHJlc3VsdDsgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICB0aGlzLl9wb3N0TWVzc2Fn
ZSh7Y2FsbElkOiBkYXRhLmNhbGxJZCwgcmVzdWx0OiAhIXJlc3VsdH0pOworICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgY2FzZSAibWV0aG9kIjogewor
ICAgICAgICAgICAgICAgIHZhciBvYmplY3QgPSB0aGlzLl9vYmplY3RzW2RhdGEub2JqZWN0SWRd
OworICAgICAgICAgICAgICAgIHZhciByZXN1bHQgPSBvYmplY3RbZGF0YS5tZXRob2ROYW1lXS5h
cHBseShvYmplY3QsIGRhdGEubWV0aG9kQXJndW1lbnRzKTsKKyAgICAgICAgICAgICAgICB0aGlz
Ll9wb3N0TWVzc2FnZSh7Y2FsbElkOiBkYXRhLmNhbGxJZCwgcmVzdWx0OiByZXN1bHR9KTsKKyAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK307
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Byb2ZpbGVz
UGFuZWwuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Byb2ZpbGVzUGFu
ZWwuanMKaW5kZXggNmU2ZTY5Ny4uZmRkMjAxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9Qcm9maWxlc1BhbmVsLmpzCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvUHJvZmlsZXNQYW5lbC5qcwpAQCAtNDU5LDcgKzQ1OSw3IEBA
IFdlYkluc3BlY3Rvci5Qcm9maWxlc1BhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIH0K
ICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGlmICghcHJvZmlsZS5wcm94eSkKLSAgICAg
ICAgICAgICAgICBwcm9maWxlLnByb3h5ID0gbmV3IFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RQ
cm94eSgpOworICAgICAgICAgICAgICAgIHByb2ZpbGUucHJveHkgPSAobmV3IFdlYkluc3BlY3Rv
ci5IZWFwU25hcHNob3RXb3JrZXIoKSkuY3JlYXRlT2JqZWN0KCJXZWJJbnNwZWN0b3IuSGVhcFNu
YXBzaG90TG9hZGVyIik7CiAgICAgICAgICAgICB2YXIgcHJveHkgPSBwcm9maWxlLnByb3h5Owog
ICAgICAgICAgICAgaWYgKHByb3h5LnN0YXJ0TG9hZGluZyhjYWxsYmFjaykpIHsKICAgICAgICAg
ICAgICAgICBwcm9maWxlLnNpZGVCYXJFbGVtZW50LnN1YnRpdGxlID0gV2ViSW5zcGVjdG9yLlVJ
U3RyaW5nKCJMb2FkaW5nXHUyMDI2Iik7CkBAIC01MTcsOSArNTE3LDEwIEBAIFdlYkluc3BlY3Rv
ci5Qcm9maWxlc1BhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIGlmICghcHJvZmlsZS5w
cm94eSkKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB2YXIgcHJveHkgPSBw
cm9maWxlLnByb3h5OwotICAgICAgICAgICAgZnVuY3Rpb24gcGFyc2VkKCkKKyAgICAgICAgICAg
IGZ1bmN0aW9uIHBhcnNlZChzbmFwc2hvdFByb3h5KQogICAgICAgICAgICAgewotICAgICAgICAg
ICAgICAgIHByb2ZpbGUuc2lkZUJhckVsZW1lbnQuc3VidGl0bGUgPSBOdW1iZXIuYnl0ZXNUb1N0
cmluZyhwcm94eS50b3RhbFNpemUpOworICAgICAgICAgICAgICAgIHByb2ZpbGUucHJveHkgPSBz
bmFwc2hvdFByb3h5OworICAgICAgICAgICAgICAgIHByb2ZpbGUuc2lkZUJhckVsZW1lbnQuc3Vi
dGl0bGUgPSBOdW1iZXIuYnl0ZXNUb1N0cmluZyhzbmFwc2hvdFByb3h5LnRvdGFsU2l6ZSk7CiAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAocHJveHkuZmluaXNoTG9hZGluZyhwYXJzZWQp
KQogICAgICAgICAgICAgICAgIHByb2ZpbGUuc2lkZUJhckVsZW1lbnQuc3VidGl0bGUgPSBXZWJJ
bnNwZWN0b3IuVUlTdHJpbmcoIlBhcnNpbmdcdTIwMjYiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvV2ViS2l0LnFyYyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvV2ViS2l0LnFyYwppbmRleCA0ZWU5ZjFiLi4xZGJmZWY1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1dlYktpdC5xcmMKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9XZWJLaXQucXJjCkBAIC01Myw2
ICs1Myw4IEBACiAgICAgPGZpbGU+SGVhcFNuYXBzaG90LmpzPC9maWxlPgogICAgIDxmaWxlPkhl
YXBTbmFwc2hvdFByb3h5LmpzPC9maWxlPgogICAgIDxmaWxlPkhlYXBTbmFwc2hvdFZpZXcuanM8
L2ZpbGU+CisgICAgPGZpbGU+SGVhcFNuYXBzaG90V29ya2VyLmpzPC9maWxlPgorICAgIDxmaWxl
PkhlYXBTbmFwc2hvdFdvcmtlckRpc3BhdGNoZXIuanM8L2ZpbGU+CiAgICAgPGZpbGU+SGVscFNj
cmVlbi5qczwvZmlsZT4KICAgICA8ZmlsZT5JbWFnZVZpZXcuanM8L2ZpbGU+CiAgICAgPGZpbGU+
SW5qZWN0ZWRGYWtlV29ya2VyLmpzPC9maWxlPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuaHRtbCBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmh0bWwKaW5kZXggMWVkM2JlOC4uMGJjMmI3YiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuaHRt
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5odG1s
CkBAIC0xNDMsNiArMTQzLDcgQEAgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2
YXNjcmlwdCIgc3JjPSJIZWFwU25hcHNob3QuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgdHlw
ZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IkhlYXBTbmFwc2hvdFByb3h5LmpzIj48L3NjcmlwdD4K
ICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJIZWFwU25hcHNob3RWaWV3
LmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJI
ZWFwU25hcHNob3RXb3JrZXJEaXNwYXRjaGVyLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHR5
cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJEZXRhaWxlZEhlYXBzaG90R3JpZE5vZGVzLmpzIj48
L3NjcmlwdD4KICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJEZXRhaWxl
ZEhlYXBzaG90Vmlldy5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFz
Y3JpcHQiIHNyYz0iRGVidWdnZXJNb2RlbC5qcyI+PC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCmluZGV4IGIzMmZlMGEuLjM5NDM3YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTIgQEAKKzIwMTEtMDQtMjIgIE1pa2hhaWwgTmFnYW5vdiAgPG1uYWdhbm92
QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBXZWIgSW5zcGVjdG9yOiBbQ2hyb21pdW1dIE1vdmUgZGV0YWlsZWQgaGVhcCBzbmFw
c2hvdHMgc3RvcmFnZSBhbmQgcHJvY2Vzc2luZyBpbnRvIHdvcmtlcnMuCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01OTA5NAorCisgICAgICAgICogV2Vi
S2l0Lmd5cDoKKwogMjAxMS0wNC0yMSAgQ2hyaXMgRmxlaXphY2ggIDxjZmxlaXphY2hAYXBwbGUu
Y29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEJldGggRGFraW4uCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dl
YktpdC5neXAKaW5kZXggMGVlNWRkNi4uMmEyMDM0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9XZWJLaXQuZ3lwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0
Lmd5cApAQCAtNzc0LDYgKzc3NCw3IEBACiAgICAgICAgICAgICAnY29uZGl0aW9ucyc6IFsKICAg
ICAgICAgICAgICAgICBbJ2RlYnVnX2RldnRvb2xzPT0wJywgewogICAgICAgICAgICAgICAgICAg
ICAnZGVwZW5kZW5jaWVzJzogWydjb25jYXRlbmF0ZWRfZGV2dG9vbHNfanMnLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjb25jYXRlbmF0ZWRfaGVhcF9zbmFwc2hvdF93
b3JrZXJfanMnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjb25jYXRl
bmF0ZWRfc2NyaXB0X2Zvcm1hdHRlcl93b3JrZXJfanMnLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICdjb25jYXRlbmF0ZWRfZGV2dG9vbHNfY3NzJ10sCiAgICAgICAgICAg
ICAgICAgfSx7CkBAIC03ODksNiArNzkwLDcgQEAKICAgICAgICAgICAgICAgICAnaW5wdXRfcGFn
ZXMnOiBbCiAgICAgICAgICAgICAgICAgICAgICc8KFBST0RVQ1RfRElSKS9yZXNvdXJjZXMvaW5z
cGVjdG9yL2RldnRvb2xzLmh0bWwnLAogICAgICAgICAgICAgICAgICAgICAnPChQUk9EVUNUX0RJ
UikvcmVzb3VyY2VzL2luc3BlY3Rvci9EZXZUb29scy5qcycsCisgICAgICAgICAgICAgICAgICAg
ICc8KFBST0RVQ1RfRElSKS9yZXNvdXJjZXMvaW5zcGVjdG9yL0hlYXBTbmFwc2hvdFdvcmtlci5q
cycsCiAgICAgICAgICAgICAgICAgICAgICc8KFBST0RVQ1RfRElSKS9yZXNvdXJjZXMvaW5zcGVj
dG9yL1NjcmlwdEZvcm1hdHRlcldvcmtlci5qcycsCiAgICAgICAgICAgICAgICAgICAgICc8KFBS
T0RVQ1RfRElSKS9yZXNvdXJjZXMvaW5zcGVjdG9yL2RldlRvb2xzLmNzcycsCiAgICAgICAgICAg
ICAgICAgXSwKQEAgLTExOTYsNiArMTE5OCwyNCBAQAogICAgICAgICAgICAgICAgICAgICB9XSwK
ICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAg
ICAgJ3RhcmdldF9uYW1lJzogJ2NvbmNhdGVuYXRlZF9oZWFwX3NuYXBzaG90X3dvcmtlcl9qcycs
CisgICAgICAgICAgICAgICAgICAgICd0eXBlJzogJ25vbmUnLAorICAgICAgICAgICAgICAgICAg
ICAnYWN0aW9ucyc6IFt7CisgICAgICAgICAgICAgICAgICAgICAgICAnYWN0aW9uX25hbWUnOiAn
Y29uY2F0ZW5hdGVfaGVhcF9zbmFwc2hvdF93b3JrZXJfanMnLAorICAgICAgICAgICAgICAgICAg
ICAgICAgJ3NjcmlwdF9uYW1lJzogJ3NjcmlwdHMvaW5saW5lX2pzX2ltcG9ydHMucHknLAorICAg
ICAgICAgICAgICAgICAgICAgICAgJ2lucHV0X2ZpbGUnOiAnLi4vLi4vV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL0hlYXBTbmFwc2hvdFdvcmtlci5qcycsCisgICAgICAgICAgICAgICAgICAg
ICAgICAnaW5wdXRzJzogWworICAgICAgICAgICAgICAgICAgICAgICAgICAgICc8QChfc2NyaXB0
X25hbWUpJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLi4vLi4vV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL0JpbmFyeVNlYXJjaC5qcycsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJy4uLy4uL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9IZWFwU25hcHNob3QuanMn
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICcuLi8uLi9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvSGVhcFNuYXBzaG90V29ya2VyRGlzcGF0Y2hlci5qcycsCisgICAgICAgICAgICAg
ICAgICAgICAgICBdLAorICAgICAgICAgICAgICAgICAgICAgICAgJ3NlYXJjaF9wYXRoJzogJy4u
Ly4uL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZCcsCisgICAgICAgICAgICAgICAgICAgICAg
ICAnb3V0cHV0cyc6IFsnPChQUk9EVUNUX0RJUikvcmVzb3VyY2VzL2luc3BlY3Rvci9IZWFwU25h
cHNob3RXb3JrZXIuanMnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICdhY3Rpb24nOiBbJ3B5
dGhvbicsICc8QChfc2NyaXB0X25hbWUpJywgJzxAKF9pbnB1dF9maWxlKScsICc8QChfc2VhcmNo
X3BhdGgpJywgJzxAKF9vdXRwdXRzKSddLAorICAgICAgICAgICAgICAgICAgICB9XSwKKyAgICAg
ICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgJ3Rh
cmdldF9uYW1lJzogJ2NvbmNhdGVuYXRlZF9zY3JpcHRfZm9ybWF0dGVyX3dvcmtlcl9qcycsCiAg
ICAgICAgICAgICAgICAgICAgICd0eXBlJzogJ25vbmUnLAogICAgICAgICAgICAgICAgICAgICAn
YWN0aW9ucyc6IFt7Cg==
</data>
<flag name="review"
          id="83459"
          type_id="1"
          status="+"
          setter="pfeldman"
    />
    <flag name="commit-queue"
          id="83460"
          type_id="3"
          status="-"
          setter="mnaganov"
    />
          </attachment>
      

    </bug>

</bugzilla>