<?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>28356</bug_id>
          
          <creation_ts>2009-08-16 06:55:46 -0700</creation_ts>
          <short_desc>WebInspector: A handful of DOMAgent-related fixes and cleanups.</short_desc>
          <delta_ts>2009-08-16 09:16:13 -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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Pavel Feldman">pfeldman</reporter>
          <assigned_to name="Pavel Feldman">pfeldman</assigned_to>
          <cc>timothy</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>140557</commentid>
    <comment_count>0</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2009-08-16 06:55:46 -0700</bug_when>
    <thetext>- renamed elementId to nodeId in operations on nodes.
- added load listeners to frame owners in InspectorDOMAgent.
- removed InspectorController::inspectedWindowScriptObjectCleared event.
- preserved isViaInspector flag for &apos;via inspector&apos; marker to survive styles update.
- removed contentDocument-related logic from ElementsPanel since it is handled in the InspectorDOMAgent.
- removed DOM listeners unregistration and corresponding events from InspectorController.
- made this.styles &apos;private&apos; in ElementsPanel.
- added TODO for the remote handleCopy processing in ElementsPanel.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>140558</commentid>
    <comment_count>1</comment_count>
      <attachid>34926</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2009-08-16 06:57:29 -0700</bug_when>
    <thetext>Created attachment 34926
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>140559</commentid>
    <comment_count>2</comment_count>
      <attachid>34926</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2009-08-16 08:23:57 -0700</bug_when>
    <thetext>Comment on attachment 34926
patch

&gt; +                // TODO: Introduce InspectorController.copyEvent that pushes appropriate markup into the clipboard.

Can you write a new bug about this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>140563</commentid>
    <comment_count>3</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2009-08-16 09:16:13 -0700</bug_when>
    <thetext>Committing to http://svn.webkit.org/repository/webkit/trunk ...
	M	WebCore/ChangeLog
	M	WebCore/WebCore.order
	M	WebCore/inspector/InspectorBackend.cpp
	M	WebCore/inspector/InspectorBackend.h
	M	WebCore/inspector/InspectorBackend.idl
	M	WebCore/inspector/InspectorController.cpp
	M	WebCore/inspector/InspectorController.h
	M	WebCore/inspector/InspectorDOMAgent.cpp
	M	WebCore/inspector/InspectorDOMAgent.h
	M	WebCore/inspector/InspectorFrontend.cpp
	M	WebCore/inspector/InspectorFrontend.h
	M	WebCore/inspector/front-end/DOMAgent.js
	M	WebCore/inspector/front-end/ElementsPanel.js
	M	WebCore/inspector/front-end/ElementsTreeOutline.js
	M	WebCore/inspector/front-end/InjectedScript.js
	M	WebCore/inspector/front-end/StylesSidebarPane.js
	M	WebCore/inspector/front-end/inspector.js
	M	WebCore/inspector/front-end/treeoutline.js
	M	WebCore/inspector/front-end/utilities.js
	M	WebCore/loader/FrameLoader.cpp
	M	WebCore/page/android/InspectorControllerAndroid.cpp
Committed r47339</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>34926</attachid>
            <date>2009-08-16 06:57:29 -0700</date>
            <delta_ts>2009-08-16 08:23:57 -0700</delta_ts>
            <desc>patch</desc>
            <filename>handful_of_fixes</filename>
            <type>text/plain</type>
            <size>53333</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ZTkwYzIzMy4uNTgyMTY2MCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw4OSBAQAorMjAwOS0wOC0xNiAgUGF2ZWwgRmVsZG1h
biAgPHBmZWxkbWFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBUaW1vdGh5
IEhhdGNoZXIuCisKKyAgICAgICAgV2ViSW5zcGVjdG9yOiBBIGhhbmRmdWwgb2YgRE9NQWdlbnQt
cmVsYXRlZCBmaXhlcyBhbmQgY2xlYW51cHMuCisKKyAgICAgICAgLSByZW5hbWVkIGVsZW1lbnRJ
ZCB0byBub2RlSWQgaW4gb3BlcmF0aW9ucyBvbiBub2Rlcy4KKyAgICAgICAgLSBhZGRlZCBsb2Fk
IGxpc3RlbmVycyB0byBmcmFtZSBvd25lcnMgaW4gSW5zcGVjdG9yRE9NQWdlbnQuCisgICAgICAg
IC0gcmVtb3ZlZCBJbnNwZWN0b3JDb250cm9sbGVyOjppbnNwZWN0ZWRXaW5kb3dTY3JpcHRPYmpl
Y3RDbGVhcmVkIGV2ZW50LgorICAgICAgICAtIHByZXNlcnZlZCBpc1ZpYUluc3BlY3RvciBmbGFn
IGZvciAndmlhIGluc3BlY3RvcicgbWFya2VyIHRvIHN1cnZpdmUgc3R5bGVzIHVwZGF0ZS4KKyAg
ICAgICAgLSByZW1vdmVkIGNvbnRlbnREb2N1bWVudC1yZWxhdGVkIGxvZ2ljIGZyb20gRWxlbWVu
dHNQYW5lbCBzaW5jZSBpdCBpcyBoYW5kbGVkIGluCisgICAgICAgICAgICB0aGUgSW5zcGVjdG9y
RE9NQWdlbnQuCisgICAgICAgIC0gcmVtb3ZlZCBET00gbGlzdGVuZXJzIHVucmVnaXN0cmF0aW9u
IGFuZCBjb3JyZXNwb25kaW5nIGV2ZW50cyBmcm9tIEluc3BlY3RvckNvbnRyb2xsZXIuCisgICAg
ICAgIC0gbWFkZSB0aGlzLnN0eWxlcyAncHJpdmF0ZScgaW4gRWxlbWVudHNQYW5lbC4KKyAgICAg
ICAgLSBhZGRlZCBUT0RPIGZvciB0aGUgaGFuZGxlQ29weSBwcm9jZXNzaW5nLgorCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yODM1NgorCisgICAgICAg
ICogV2ViQ29yZS5vcmRlcjoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JCYWNrZW5kOjpnZXRDaGlsZE5vZGVzKToK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckJhY2tlbmQ6OnNldFRleHROb2RlVmFsdWUpOgor
ICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kLmg6CisgICAgICAgICogaW5zcGVj
dG9yL0luc3BlY3RvckJhY2tlbmQuaWRsOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JD
b250cm9sbGVyLmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5o
OgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6c3RhcnRMaXN0ZW5pbmcpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OnN0b3BMaXN0ZW5pbmcpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmhhbmRsZUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvckRPTUFnZW50OjpwdXNoQ2hpbGROb2Rlc1RvRnJvbnRlbmQpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmdldENoaWxkTm9kZXMpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OnB1c2hOb2RlUGF0aFRvRnJvbnRlbmQpOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OnNldFRleHROb2RlVmFsdWUpOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yTm9kZSk6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6YnVpbGRBcnJheUZvckNvbnRhaW5lckNoaWxk
cmVuKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50Ojppbm5lclBhcmVudE5v
ZGUpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5oOgorICAgICAgICAq
IGluc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZC5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL0lu
c3BlY3RvckZyb250ZW5kLmg6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9ET01BZ2Vu
dC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5ET01Eb2N1bWVudC5wcm90b3R5cGUuYWRkRXZl
bnRMaXN0ZW5lcik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRE9NRG9jdW1lbnQucHJvdG90eXBl
LnJlbW92ZUV2ZW50TGlzdGVuZXIpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRPTURvY3VtZW50
LnByb3RvdHlwZS5fZmlyZURvbUV2ZW50KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5ET01BZ2Vu
dC5wcm90b3R5cGUuZ2V0Q2hpbGROb2Rlc0FzeW5jLm15Y2FsbGJhY2spOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLkRPTUFnZW50LnByb3RvdHlwZS5nZXRDaGlsZE5vZGVzQXN5bmMpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLkRPTUFnZW50LnByb3RvdHlwZS5fc2V0Q2hpbGROb2Rlcyk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZWNsYXJhdGlvbi5wYXJzZVJ1bGUpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLmNoaWxkTm9kZUluc2VydGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5jaGlsZE5vZGVSZW1vdmVkKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0VsZW1l
bnRzUGFuZWwuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRWxlbWVudHNQYW5lbCk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuRWxlbWVudHNQYW5lbC5wcm90b3R5cGUucmVzZXQpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLkVsZW1lbnRzUGFuZWwucHJvdG90eXBlLmFkZFN0eWxlQ2hhbmdlKToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5FbGVtZW50c1BhbmVsLnByb3RvdHlwZS5yZW1vdmVTdHls
ZUNoYW5nZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRWxlbWVudHNQYW5lbC5wcm90b3R5cGUu
X3VwZGF0ZU1vZGlmaWVkTm9kZXMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkVsZW1lbnRzUGFu
ZWwucHJvdG90eXBlLnVwZGF0ZUJyZWFkY3J1bWIpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkVs
ZW1lbnRzUGFuZWwucHJvdG90eXBlLmhhbmRsZUNvcHlFdmVudCk6CisgICAgICAgICogaW5zcGVj
dG9yL2Zyb250LWVuZC9FbGVtZW50c1RyZWVPdXRsaW5lLmpzOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLkVsZW1lbnRzVHJlZU91dGxpbmUucHJvdG90eXBlLnNldCByb290RE9NTm9kZSk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuRWxlbWVudHNUcmVlT3V0bGluZS5wcm90b3R5cGUuZmluZFRyZWVF
bGVtZW50KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5FbGVtZW50c1RyZWVFbGVtZW50KToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5FbGVtZW50c1RyZWVFbGVtZW50LnByb3RvdHlwZS5fdXBkYXRl
Q2hpbGRyZW4udXBkYXRlQ2hpbGRyZW5PZk5vZGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkVs
ZW1lbnRzVHJlZUVsZW1lbnQucHJvdG90eXBlLl91cGRhdGVDaGlsZHJlbik6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuRWxlbWVudHNUcmVlRWxlbWVudC5wcm90b3R5cGUub25leHBhbmQpOgorICAg
ICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvSW5qZWN0ZWRTY3JpcHQuanM6CisgICAgICAgIChJ
bmplY3RlZFNjcmlwdC5hZGRTdHlsZVNlbGVjdG9yKToKKyAgICAgICAgKEluamVjdGVkU2NyaXB0
Ll9zZXJpYWxpemVSdWxlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1N0eWxlc1Np
ZGViYXJQYW5lLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlN0eWxlUHJvcGVydGllc1NlY3Rp
b24pOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmpzOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLnNldCBob3ZlcmVkRE9NTm9kZSk6CisgICAgICAgICogaW5zcGVjdG9y
L2Zyb250LWVuZC90cmVlb3V0bGluZS5qczoKKyAgICAgICAgKFRyZWVPdXRsaW5lLnByb3RvdHlw
ZS5maW5kVHJlZUVsZW1lbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvdXRpbGl0
aWVzLmpzOgorICAgICAgICAoTm9kZS5wcm90b3R5cGUuZW5jbG9zaW5nTm9kZU9yU2VsZldpdGhO
b2RlTmFtZUluQXJyYXkpOgorICAgICAgICAoTm9kZS5wcm90b3R5cGUuZW5jbG9zaW5nTm9kZU9y
U2VsZldpdGhDbGFzcyk6CisgICAgICAgIChpc0FuY2VzdG9yTm9kZSk6CisgICAgICAgIChmaXJz
dENvbW1vbk5vZGVBbmNlc3Rvcik6CisgICAgICAgICh0cmF2ZXJzZU5leHROb2RlKToKKyAgICAg
ICAgKHRyYXZlcnNlUHJldmlvdXNOb2RlKToKKyAgICAgICAgKCk6CisgICAgICAgICogbG9hZGVy
L0ZyYW1lTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpkaXNwYXRj
aFdpbmRvd09iamVjdEF2YWlsYWJsZSk6CisgICAgICAgICogcGFnZS9hbmRyb2lkL0luc3BlY3Rv
ckNvbnRyb2xsZXJBbmRyb2lkLmNwcDoKKwogMjAwOS0wOC0xNSAgUGF2ZWwgRmVsZG1hbiAgPHBm
ZWxkbWFuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBUaW1vdGh5IEhhdGNo
ZXIuCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUub3JkZXIgYi9XZWJDb3JlL1dlYkNvcmUu
b3JkZXIKaW5kZXggMzFiMTc4Yy4uYzk0NDFjNiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3Jl
Lm9yZGVyCisrKyBiL1dlYkNvcmUvV2ViQ29yZS5vcmRlcgpAQCAtMjI5MCw3ICsyMjkwLDYgQEAg
X19aTjNKU0M4QmluZGluZ3MxMFJvb3RPYmplY3Q5Z2NQcm90ZWN0RVBOU184SlNPYmplY3RFCiBf
X1pOSzNXVEY5SGFzaFRhYmxlSVBOM0pTQzhKU09iamVjdEVTdDRwYWlySVMzX2pFTlNfMThQYWly
Rmlyc3RFeHRyYWN0b3JJUzVfRUVOU183UHRySGFzaElTM19FRU5TXzE0UGFpckhhc2hUcmFpdHNJ
TlNfMTBIYXNoVHJhCiBfX1pOM1dURjdIYXNoTWFwSVBOM0pTQzhKU09iamVjdEVqTlNfN1B0ckhh
c2hJUzNfRUVOU18xMEhhc2hUcmFpdHNJUzNfRUVOUzZfSWpFRUUzYWRkRVJLUzNfUktqCiBfX1pO
M1dURjlIYXNoVGFibGVJUE4zSlNDOEpTT2JqZWN0RVN0NHBhaXJJUzNfakVOU18xOFBhaXJGaXJz
dEV4dHJhY3RvcklTNV9FRU5TXzdQdHJIYXNoSVMzX0VFTlNfMTRQYWlySGFzaFRyYWl0c0lOU18x
MEhhc2hUcmFpCi1fX1pON1dlYkNvcmUxOUluc3BlY3RvckNvbnRyb2xsZXIzNGluc3BlY3RlZFdp
bmRvd1NjcmlwdE9iamVjdENsZWFyZWRFUE5TXzVGcmFtZUUKIF9fWk43V2ViQ29yZTZTdHJpbmdD
MUVSS04zSlNDN1VTdHJpbmdFCiBfX1pON1dlYkNvcmU2U3RyaW5nQzJFUktOM0pTQzdVU3RyaW5n
RQogX19aTks3V2ViQ29yZTIwU3RyaW5nU291cmNlUHJvdmlkZXI0ZGF0YUV2CmRpZmYgLS1naXQg
YS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kLmNwcCBiL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckJhY2tlbmQuY3BwCmluZGV4IDg3MGQ5NGYuLmFlMjU5NmEgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmQuY3BwCisrKyBiL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmQuY3BwCkBAIC0zNjQsMTAgKzM2NCwxMCBAQCB2b2lk
IEluc3BlY3RvckJhY2tlbmQ6OnN0ZXBPdXRPZkZ1bmN0aW9uSW5EZWJ1Z2dlcigpCiAKICNlbmRp
ZgogCi12b2lkIEluc3BlY3RvckJhY2tlbmQ6OmdldENoaWxkTm9kZXMobG9uZyBjYWxsSWQsIGxv
bmcgZWxlbWVudElkKQordm9pZCBJbnNwZWN0b3JCYWNrZW5kOjpnZXRDaGlsZE5vZGVzKGxvbmcg
Y2FsbElkLCBsb25nIG5vZGVJZCkKIHsKICAgICBpZiAobV9pbnNwZWN0b3JDb250cm9sbGVyKQot
ICAgICAgICBtX2luc3BlY3RvckNvbnRyb2xsZXItPmRvbUFnZW50KCktPmdldENoaWxkTm9kZXMo
Y2FsbElkLCBlbGVtZW50SWQpOworICAgICAgICBtX2luc3BlY3RvckNvbnRyb2xsZXItPmRvbUFn
ZW50KCktPmdldENoaWxkTm9kZXMoY2FsbElkLCBub2RlSWQpOwogfQogCiB2b2lkIEluc3BlY3Rv
ckJhY2tlbmQ6OnNldEF0dHJpYnV0ZShsb25nIGNhbGxJZCwgbG9uZyBlbGVtZW50SWQsIGNvbnN0
IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKQEAgLTM4MiwxMCArMzgyLDEwIEBA
IHZvaWQgSW5zcGVjdG9yQmFja2VuZDo6cmVtb3ZlQXR0cmlidXRlKGxvbmcgY2FsbElkLCBsb25n
IGVsZW1lbnRJZCwgY29uc3QgU3RyaW5nCiAgICAgICAgIG1faW5zcGVjdG9yQ29udHJvbGxlci0+
ZG9tQWdlbnQoKS0+cmVtb3ZlQXR0cmlidXRlKGNhbGxJZCwgZWxlbWVudElkLCBuYW1lKTsKIH0K
IAotdm9pZCBJbnNwZWN0b3JCYWNrZW5kOjpzZXRUZXh0Tm9kZVZhbHVlKGxvbmcgY2FsbElkLCBs
b25nIGVsZW1lbnRJZCwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKK3ZvaWQgSW5zcGVjdG9yQmFja2Vu
ZDo6c2V0VGV4dE5vZGVWYWx1ZShsb25nIGNhbGxJZCwgbG9uZyBub2RlSWQsIGNvbnN0IFN0cmlu
ZyYgdmFsdWUpCiB7CiAgICAgaWYgKG1faW5zcGVjdG9yQ29udHJvbGxlcikKLSAgICAgICAgbV9p
bnNwZWN0b3JDb250cm9sbGVyLT5kb21BZ2VudCgpLT5zZXRUZXh0Tm9kZVZhbHVlKGNhbGxJZCwg
ZWxlbWVudElkLCB2YWx1ZSk7CisgICAgICAgIG1faW5zcGVjdG9yQ29udHJvbGxlci0+ZG9tQWdl
bnQoKS0+c2V0VGV4dE5vZGVWYWx1ZShjYWxsSWQsIG5vZGVJZCwgdmFsdWUpOwogfQogCiB2b2lk
IEluc3BlY3RvckJhY2tlbmQ6OmhpZ2hsaWdodChsb25nIG5vZGVJZCkKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmQuaCBiL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckJhY2tlbmQuaAppbmRleCA3NjM5OTg4Li5jNDBlMWI5IDEwMDY0NAotLS0gYS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kLmgKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yQmFja2VuZC5oCkBAIC0xMjUsMTAgKzEyNSwxMCBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBzdGVwT3V0T2ZGdW5jdGlvbkluRGVidWdnZXIoKTsKICNlbmRpZgogCi0gICAgdm9pZCBnZXRD
aGlsZE5vZGVzKGxvbmcgY2FsbElkLCBsb25nIGVsZW1lbnRJZCk7CisgICAgdm9pZCBnZXRDaGls
ZE5vZGVzKGxvbmcgY2FsbElkLCBsb25nIG5vZGVJZCk7CiAgICAgdm9pZCBzZXRBdHRyaWJ1dGUo
bG9uZyBjYWxsSWQsIGxvbmcgZWxlbWVudElkLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0
cmluZyYgdmFsdWUpOwogICAgIHZvaWQgcmVtb3ZlQXR0cmlidXRlKGxvbmcgY2FsbElkLCBsb25n
IGVsZW1lbnRJZCwgY29uc3QgU3RyaW5nJiBuYW1lKTsKLSAgICB2b2lkIHNldFRleHROb2RlVmFs
dWUobG9uZyBjYWxsSWQsIGxvbmcgZWxlbWVudElkLCBjb25zdCBTdHJpbmcmIHZhbHVlKTsKKyAg
ICB2b2lkIHNldFRleHROb2RlVmFsdWUobG9uZyBjYWxsSWQsIGxvbmcgbm9kZUlkLCBjb25zdCBT
dHJpbmcmIHZhbHVlKTsKIAogICAgIC8vIEdlbmVyaWMgY29kZSBjYWxsZWQgZnJvbSBjdXN0b20g
aW1wbGVtZW50YXRpb25zLgogICAgIHZvaWQgaGlnaGxpZ2h0KGxvbmcgbm9kZUlkKTsKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmQuaWRsIGIvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZC5pZGwKaW5kZXggOTJiZWZkNy4uZTI4MDdjNiAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZC5pZGwKKysrIGIvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZC5pZGwKQEAgLTM1LDcgKzM1LDcgQEAgbW9k
dWxlIGNvcmUgewogICAgICAgICBHZW5lcmF0ZUNvbnN0cnVjdG9yCiAgICAgXSBJbnNwZWN0b3JC
YWNrZW5kIHsKICAgICAgICAgdm9pZCBoaWRlRE9NTm9kZUhpZ2hsaWdodCgpOwotICAgICAgICBb
Q3VzdG9tXSB2b2lkIGhpZ2hsaWdodERPTU5vZGUoaW4gbG9uZyBlbGVtZW50SWQpOworICAgICAg
ICBbQ3VzdG9tXSB2b2lkIGhpZ2hsaWdodERPTU5vZGUoaW4gbG9uZyBub2RlSWQpOwogICAgICAg
ICB2b2lkIGxvYWRlZCgpOwogICAgICAgICB2b2lkIHdpbmRvd1VubG9hZGluZygpOwogICAgICAg
ICB2b2lkIGF0dGFjaCgpOwpAQCAtOTksMTAgKzk5LDEwIEBAIG1vZHVsZSBjb3JlIHsKIAogICAg
ICAgICBbQ3VzdG9tXSBBcnJheSBwcm9maWxlcygpOwogI2VuZGlmCi0gICAgICAgIHZvaWQgZ2V0
Q2hpbGROb2RlcyhpbiBsb25nIGNhbGxJZCwgaW4gbG9uZyBlbGVtZW50SWQpOworICAgICAgICB2
b2lkIGdldENoaWxkTm9kZXMoaW4gbG9uZyBjYWxsSWQsIGluIGxvbmcgbm9kZUlkKTsKICAgICAg
ICAgdm9pZCBzZXRBdHRyaWJ1dGUoaW4gbG9uZyBjYWxsSWQsIGluIGxvbmcgZWxlbWVudElkLCBp
biBET01TdHJpbmcgbmFtZSwgaW4gRE9NU3RyaW5nIHZhbHVlKTsKICAgICAgICAgdm9pZCByZW1v
dmVBdHRyaWJ1dGUoaW4gbG9uZyBjYWxsSWQsIGluIGxvbmcgZWxlbWVudElkLCBpbiBET01TdHJp
bmcgbmFtZSk7Ci0gICAgICAgIHZvaWQgc2V0VGV4dE5vZGVWYWx1ZShpbiBsb25nIGNhbGxJZCwg
aW4gbG9uZyBlbGVtZW50SWQsIGluIERPTVN0cmluZyB2YWx1ZSk7CisgICAgICAgIHZvaWQgc2V0
VGV4dE5vZGVWYWx1ZShpbiBsb25nIGNhbGxJZCwgaW4gbG9uZyBub2RlSWQsIGluIERPTVN0cmlu
ZyB2YWx1ZSk7CiAKICAgICAgICAgLy8gQ2FsbGVkIGZyb20gSW5qZWN0ZWRTY3JpcHQuCiAgICAg
ICAgIFtDdXN0b21dIERPTU9iamVjdCBub2RlRm9ySWQoaW4gbG9uZyBub2RlSWQpOwpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAgYi9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcAppbmRleCAxMTUwYWRiLi5kYzU3ZGFi
IDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcAor
KysgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcApAQCAtNDk5LDE0
ICs0OTksNiBAQCB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmhhbmRsZU1vdXNlUHJlc3NPbk5v
ZGUoTm9kZSogbm9kZSkKICAgICBpbnNwZWN0KG5vZGUpOwogfQogCi12b2lkIEluc3BlY3RvckNv
bnRyb2xsZXI6Omluc3BlY3RlZFdpbmRvd1NjcmlwdE9iamVjdENsZWFyZWQoRnJhbWUqIGZyYW1l
KQotewotICAgIGlmICghZW5hYmxlZCgpIHx8ICFtX2Zyb250ZW5kKQotICAgICAgICByZXR1cm47
Ci0KLSAgICBtX2Zyb250ZW5kLT5pbnNwZWN0ZWRXaW5kb3dTY3JpcHRPYmplY3RDbGVhcmVkKGZy
YW1lKTsKLX0KLQogdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjp3aW5kb3dTY3JpcHRPYmplY3RB
dmFpbGFibGUoKQogewogICAgIGlmICghbV9wYWdlIHx8ICFlbmFibGVkKCkpCmRpZmYgLS1naXQg
YS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmggYi9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmgKaW5kZXggNTlhOTU5Zi4uYjBiNWI5YyAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oCisrKyBiL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaApAQCAtMTk0LDcgKzE5NCw2IEBAIHB1
YmxpYzoKICAgICB2b2lkIG1vdXNlRGlkTW92ZU92ZXJFbGVtZW50KGNvbnN0IEhpdFRlc3RSZXN1
bHQmLCB1bnNpZ25lZCBtb2RpZmllckZsYWdzKTsKICAgICB2b2lkIGhhbmRsZU1vdXNlUHJlc3NP
bk5vZGUoTm9kZSopOwogCi0gICAgdm9pZCBpbnNwZWN0ZWRXaW5kb3dTY3JpcHRPYmplY3RDbGVh
cmVkKEZyYW1lKik7CiAgICAgdm9pZCB3aW5kb3dTY3JpcHRPYmplY3RBdmFpbGFibGUoKTsKIAog
ICAgIHZvaWQgc2V0RnJvbnRlbmRQcm94eU9iamVjdChTY3JpcHRTdGF0ZSogc3RhdGUsIFNjcmlw
dE9iamVjdCB3ZWJJbnNwZWN0b3JPYmosIFNjcmlwdE9iamVjdCBpbmplY3RlZFNjcmlwdE9iaiA9
IFNjcmlwdE9iamVjdCgpKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckRPTUFnZW50LmNwcCBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcApp
bmRleCA5NWU1YTdjLi5iMGI1YWMxIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JET01BZ2VudC5jcHAKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdl
bnQuY3BwCkBAIC05NSw2ICs5NSw3IEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OnN0YXJ0TGlz
dGVuaW5nKERvY3VtZW50KiBkb2MpCiAgICAgZG9jLT5hZGRFdmVudExpc3RlbmVyKGV2ZW50TmFt
ZXMoKS5ET01Ob2RlUmVtb3ZlZEV2ZW50LCB0aGlzLCBmYWxzZSk7CiAgICAgZG9jLT5hZGRFdmVu
dExpc3RlbmVyKGV2ZW50TmFtZXMoKS5ET01Ob2RlUmVtb3ZlZEZyb21Eb2N1bWVudEV2ZW50LCB0
aGlzLCB0cnVlKTsKICAgICBkb2MtPmFkZEV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLkRPTUF0
dHJNb2RpZmllZEV2ZW50LCB0aGlzLCBmYWxzZSk7CisgICAgZG9jLT5hZGRFdmVudExpc3RlbmVy
KGV2ZW50TmFtZXMoKS5sb2FkRXZlbnQsIHRoaXMsIHRydWUpOwogICAgIG1fZG9jdW1lbnRzLmFk
ZChkb2MpOwogfQogCkBAIC0xMDgsNiArMTA5LDcgQEAgdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6
c3RvcExpc3RlbmluZyhEb2N1bWVudCogZG9jKQogICAgIGRvYy0+cmVtb3ZlRXZlbnRMaXN0ZW5l
cihldmVudE5hbWVzKCkuRE9NTm9kZVJlbW92ZWRFdmVudCwgdGhpcywgZmFsc2UpOwogICAgIGRv
Yy0+cmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkuRE9NTm9kZVJlbW92ZWRGcm9tRG9j
dW1lbnRFdmVudCwgdGhpcywgdHJ1ZSk7CiAgICAgZG9jLT5yZW1vdmVFdmVudExpc3RlbmVyKGV2
ZW50TmFtZXMoKS5ET01BdHRyTW9kaWZpZWRFdmVudCwgdGhpcywgZmFsc2UpOworICAgIGRvYy0+
cmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkubG9hZEV2ZW50LCB0aGlzLCB0cnVlKTsK
ICAgICBtX2RvY3VtZW50cy5yZW1vdmUoZG9jKTsKIH0KIApAQCAtMTcxLDYgKzE3MywyNCBAQCB2
b2lkIEluc3BlY3RvckRPTUFnZW50OjpoYW5kbGVFdmVudChFdmVudCogZXZlbnQsIGJvb2wpCiAg
ICAgICAgIC8vIFJlLXB1c2ggZG9jdW1lbnQgb25jZSBpdCBpcyBsb2FkZWQuCiAgICAgICAgIGRp
c2NhcmRCaW5kaW5ncygpOwogICAgICAgICBwdXNoRG9jdW1lbnRUb0Zyb250ZW5kKCk7CisgICAg
fSBlbHNlIGlmICh0eXBlID09IGV2ZW50TmFtZXMoKS5sb2FkRXZlbnQpIHsKKyAgICAgICAgbG9u
ZyBmcmFtZU93bmVySWQgPSBpZEZvck5vZGUobm9kZSk7CisgICAgICAgIGlmICghZnJhbWVPd25l
cklkKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGlmICghbV9jaGlsZHJlblJlcXVl
c3RlZC5jb250YWlucyhmcmFtZU93bmVySWQpKSB7CisgICAgICAgICAgICAvLyBObyBjaGlsZHJl
biBhcmUgbWFwcGVkIHlldCAtPiBvbmx5IG5vdGlmeSBvbiBjaGFuZ2VzIG9mIGhhc0NoaWxkcmVu
LgorICAgICAgICAgICAgbV9mcm9udGVuZC0+aGFzQ2hpbGRyZW5VcGRhdGVkKGZyYW1lT3duZXJJ
ZCwgdHJ1ZSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvLyBSZS1hZGQgZnJhbWUg
b3duZXIgZWxlbWVudCB0b2dldGhlciB3aXRoIGl0cyBuZXcgY2hpbGRyZW4uCisgICAgICAgICAg
ICBsb25nIHBhcmVudElkID0gaWRGb3JOb2RlKGlubmVyUGFyZW50Tm9kZShub2RlKSk7CisgICAg
ICAgICAgICBtX2Zyb250ZW5kLT5jaGlsZE5vZGVSZW1vdmVkKHBhcmVudElkLCBmcmFtZU93bmVy
SWQpOworICAgICAgICAgICAgbG9uZyBwcmV2SWQgPSBpZEZvck5vZGUoaW5uZXJQcmV2aW91c1Np
Ymxpbmcobm9kZSkpOworICAgICAgICAgICAgU2NyaXB0T2JqZWN0IHZhbHVlID0gYnVpbGRPYmpl
Y3RGb3JOb2RlKG5vZGUsIDApOworICAgICAgICAgICAgbV9mcm9udGVuZC0+Y2hpbGROb2RlSW5z
ZXJ0ZWQocGFyZW50SWQsIHByZXZJZCwgdmFsdWUpOworICAgICAgICAgICAgLy8gSW52YWxpZGF0
ZSBjaGlsZHJlbiByZXF1ZXN0ZWQgZmxhZyBmb3IgdGhlIGVsZW1lbnQuCisgICAgICAgICAgICBt
X2NoaWxkcmVuUmVxdWVzdGVkLnJlbW92ZShtX2NoaWxkcmVuUmVxdWVzdGVkLmZpbmQoZnJhbWVP
d25lcklkKSk7CisgICAgICAgIH0KICAgICB9CiB9CiAKQEAgLTIxNSw4ICsyMzUsNyBAQCB2b2lk
IEluc3BlY3RvckRPTUFnZW50OjpwdXNoQ2hpbGROb2Rlc1RvRnJvbnRlbmQobG9uZyBub2RlSWQp
CiAgICAgaWYgKG1fY2hpbGRyZW5SZXF1ZXN0ZWQuY29udGFpbnMobm9kZUlkKSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgQ29udGFpbmVyTm9kZSogY29udGFpbmVyID0gc3RhdGljX2Nhc3Q8Q29u
dGFpbmVyTm9kZSo+KG5vZGUpOwotICAgIFNjcmlwdEFycmF5IGNoaWxkcmVuID0gYnVpbGRBcnJh
eUZvckNvbnRhaW5lckNoaWxkcmVuKGNvbnRhaW5lciwgMSk7CisgICAgU2NyaXB0QXJyYXkgY2hp
bGRyZW4gPSBidWlsZEFycmF5Rm9yQ29udGFpbmVyQ2hpbGRyZW4obm9kZSwgMSk7CiAgICAgbV9j
aGlsZHJlblJlcXVlc3RlZC5hZGQobm9kZUlkKTsKICAgICBtX2Zyb250ZW5kLT5zZXRDaGlsZE5v
ZGVzKG5vZGVJZCwgY2hpbGRyZW4pOwogfQpAQCAtMjQ5LDkgKzI2OCw5IEBAIGxvbmcgSW5zcGVj
dG9yRE9NQWdlbnQ6OmlkRm9yTm9kZShOb2RlKiBub2RlKQogICAgIHJldHVybiAwOwogfQogCi12
b2lkIEluc3BlY3RvckRPTUFnZW50OjpnZXRDaGlsZE5vZGVzKGxvbmcgY2FsbElkLCBsb25nIGVs
ZW1lbnRJZCkKK3ZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmdldENoaWxkTm9kZXMobG9uZyBjYWxs
SWQsIGxvbmcgbm9kZUlkKQogewotICAgIHB1c2hDaGlsZE5vZGVzVG9Gcm9udGVuZChlbGVtZW50
SWQpOworICAgIHB1c2hDaGlsZE5vZGVzVG9Gcm9udGVuZChub2RlSWQpOwogICAgIG1fZnJvbnRl
bmQtPmRpZEdldENoaWxkTm9kZXMoY2FsbElkKTsKIH0KIApAQCAtMjY3LDE4ICsyODYsMTggQEAg
bG9uZyBJbnNwZWN0b3JET01BZ2VudDo6cHVzaE5vZGVQYXRoVG9Gcm9udGVuZChOb2RlKiBub2Rl
VG9QdXNoKQogICAgIGlmIChyZXN1bHQpCiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAKLSAgICBF
bGVtZW50KiBlbGVtZW50ID0gaW5uZXJQYXJlbnRFbGVtZW50KG5vZGVUb1B1c2gpOwotICAgIEFT
U0VSVChlbGVtZW50KTsgIC8vIE5vZGUgaXMgZGV0YWNoZWQgb3IgaXMgYSBkb2N1bWVudCBpdHNl
bGYKKyAgICBOb2RlKiBub2RlID0gaW5uZXJQYXJlbnROb2RlKG5vZGVUb1B1c2gpOworICAgIEFT
U0VSVChub2RlKTsgIC8vIE5vZGUgaXMgZGV0YWNoZWQgb3IgaXMgYSBkb2N1bWVudCBpdHNlbGYK
IAotICAgIFZlY3RvcjxFbGVtZW50Kj4gcGF0aDsKLSAgICB3aGlsZSAoZWxlbWVudCAmJiAhaWRG
b3JOb2RlKGVsZW1lbnQpKSB7Ci0gICAgICAgIHBhdGguYXBwZW5kKGVsZW1lbnQpOwotICAgICAg
ICBlbGVtZW50ID0gaW5uZXJQYXJlbnRFbGVtZW50KGVsZW1lbnQpOworICAgIFZlY3RvcjxOb2Rl
Kj4gcGF0aDsKKyAgICB3aGlsZSAobm9kZSAmJiAhaWRGb3JOb2RlKG5vZGUpKSB7CisgICAgICAg
IHBhdGguYXBwZW5kKG5vZGUpOworICAgICAgICBub2RlID0gaW5uZXJQYXJlbnROb2RlKG5vZGUp
OwogICAgIH0KIAogICAgIC8vIGVsZW1lbnQgaXMga25vd24gdG8gdGhlIGNsaWVudAotICAgIEFT
U0VSVChlbGVtZW50KTsKLSAgICBwYXRoLmFwcGVuZChlbGVtZW50KTsKKyAgICBBU1NFUlQobm9k
ZSk7CisgICAgcGF0aC5hcHBlbmQobm9kZSk7CiAgICAgZm9yIChpbnQgaSA9IHBhdGguc2l6ZSgp
IC0gMTsgaSA+PSAwOyAtLWkpIHsKICAgICAgICAgbG9uZyBub2RlSWQgPSBpZEZvck5vZGUocGF0
aC5hdChpKSk7CiAgICAgICAgIEFTU0VSVChub2RlSWQpOwpAQCAtMzEzLDkgKzMzMiw5IEBAIHZv
aWQgSW5zcGVjdG9yRE9NQWdlbnQ6OnJlbW92ZUF0dHJpYnV0ZShsb25nIGNhbGxJZCwgbG9uZyBl
bGVtZW50SWQsIGNvbnN0IFN0cmluCiAgICAgfQogfQogCi12b2lkIEluc3BlY3RvckRPTUFnZW50
OjpzZXRUZXh0Tm9kZVZhbHVlKGxvbmcgY2FsbElkLCBsb25nIGVsZW1lbnRJZCwgY29uc3QgU3Ry
aW5nJiB2YWx1ZSkKK3ZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OnNldFRleHROb2RlVmFsdWUobG9u
ZyBjYWxsSWQsIGxvbmcgbm9kZUlkLCBjb25zdCBTdHJpbmcmIHZhbHVlKQogewotICAgIE5vZGUq
IG5vZGUgPSBub2RlRm9ySWQoZWxlbWVudElkKTsKKyAgICBOb2RlKiBub2RlID0gbm9kZUZvcklk
KG5vZGVJZCk7CiAgICAgaWYgKG5vZGUgJiYgKG5vZGUtPm5vZGVUeXBlKCkgPT0gTm9kZTo6VEVY
VF9OT0RFKSkgewogICAgICAgICBUZXh0KiB0ZXh0X25vZGUgPSBzdGF0aWNfY2FzdDxUZXh0Kj4o
bm9kZSk7CiAgICAgICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwpAQCAtMzU5LDEwICszNzgsOSBA
QCBTY3JpcHRPYmplY3QgSW5zcGVjdG9yRE9NQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yTm9kZShOb2Rl
KiBub2RlLCBpbnQgZGVwdGgpCiAgICAgICAgIHZhbHVlLnNldCgiYXR0cmlidXRlcyIsIGJ1aWxk
QXJyYXlGb3JFbGVtZW50QXR0cmlidXRlcyhlbGVtZW50KSk7CiAgICAgfQogICAgIGlmIChub2Rl
LT5ub2RlVHlwZSgpID09IE5vZGU6OkVMRU1FTlRfTk9ERSB8fCBub2RlLT5ub2RlVHlwZSgpID09
IE5vZGU6OkRPQ1VNRU5UX05PREUpIHsKLSAgICAgICAgQ29udGFpbmVyTm9kZSogY29udGFpbmVy
ID0gc3RhdGljX2Nhc3Q8Q29udGFpbmVyTm9kZSo+KG5vZGUpOwotICAgICAgICBpbnQgbm9kZUNv
dW50ID0gaW5uZXJDaGlsZE5vZGVDb3VudChjb250YWluZXIpOworICAgICAgICBpbnQgbm9kZUNv
dW50ID0gaW5uZXJDaGlsZE5vZGVDb3VudChub2RlKTsKICAgICAgICAgdmFsdWUuc2V0KCJjaGls
ZE5vZGVDb3VudCIsIG5vZGVDb3VudCk7Ci0gICAgICAgIFNjcmlwdEFycmF5IGNoaWxkcmVuID0g
YnVpbGRBcnJheUZvckNvbnRhaW5lckNoaWxkcmVuKGNvbnRhaW5lciwgZGVwdGgpOworICAgICAg
ICBTY3JpcHRBcnJheSBjaGlsZHJlbiA9IGJ1aWxkQXJyYXlGb3JDb250YWluZXJDaGlsZHJlbihu
b2RlLCBkZXB0aCk7CiAgICAgICAgIGlmIChjaGlsZHJlbi5sZW5ndGgoKSA+IDApCiAgICAgICAg
ICAgICB2YWx1ZS5zZXQoImNoaWxkcmVuIiwgY2hpbGRyZW4pOwogICAgIH0KQEAgLTM4Nyw3ICs0
MDUsNyBAQCBTY3JpcHRBcnJheSBJbnNwZWN0b3JET01BZ2VudDo6YnVpbGRBcnJheUZvckVsZW1l
bnRBdHRyaWJ1dGVzKEVsZW1lbnQqIGVsZW1lbnQpCiAgICAgcmV0dXJuIGF0dHJpYnV0ZXNWYWx1
ZTsKIH0KIAotU2NyaXB0QXJyYXkgSW5zcGVjdG9yRE9NQWdlbnQ6OmJ1aWxkQXJyYXlGb3JDb250
YWluZXJDaGlsZHJlbihDb250YWluZXJOb2RlKiBjb250YWluZXIsIGludCBkZXB0aCkKK1Njcmlw
dEFycmF5IEluc3BlY3RvckRPTUFnZW50OjpidWlsZEFycmF5Rm9yQ29udGFpbmVyQ2hpbGRyZW4o
Tm9kZSogY29udGFpbmVyLCBpbnQgZGVwdGgpCiB7CiAgICAgU2NyaXB0QXJyYXkgY2hpbGRyZW4g
PSBtX2Zyb250ZW5kLT5uZXdTY3JpcHRBcnJheSgpOwogICAgIGlmIChkZXB0aCA9PSAwKSB7CkBA
IC00NTIsMTIgKzQ3MCwxMiBAQCBpbnQgSW5zcGVjdG9yRE9NQWdlbnQ6OmlubmVyQ2hpbGROb2Rl
Q291bnQoTm9kZSogbm9kZSkKICAgICByZXR1cm4gY291bnQ7CiB9CiAKLUVsZW1lbnQqIEluc3Bl
Y3RvckRPTUFnZW50Ojppbm5lclBhcmVudEVsZW1lbnQoTm9kZSogbm9kZSkKK05vZGUqIEluc3Bl
Y3RvckRPTUFnZW50Ojppbm5lclBhcmVudE5vZGUoTm9kZSogbm9kZSkKIHsKLSAgICBFbGVtZW50
KiBlbGVtZW50ID0gbm9kZS0+cGFyZW50RWxlbWVudCgpOwotICAgIGlmICghZWxlbWVudCAmJiBu
b2RlLT5vd25lckRvY3VtZW50KCkpCi0gICAgICAgIHJldHVybiBub2RlLT5vd25lckRvY3VtZW50
KCktPm93bmVyRWxlbWVudCgpOwotICAgIHJldHVybiBlbGVtZW50OworICAgIE5vZGUqIHBhcmVu
dCA9IG5vZGUtPnBhcmVudE5vZGUoKTsKKyAgICBpZiAocGFyZW50ICYmIHBhcmVudC0+bm9kZVR5
cGUoKSA9PSBOb2RlOjpET0NVTUVOVF9OT0RFKQorICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
RG9jdW1lbnQqPihwYXJlbnQpLT5vd25lckVsZW1lbnQoKTsKKyAgICByZXR1cm4gcGFyZW50Owog
fQogCiBib29sIEluc3BlY3RvckRPTUFnZW50Ojppc1doaXRlc3BhY2UoTm9kZSogbm9kZSkKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmggYi9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5oCmluZGV4IDc0ZWY1MjUuLmY0NGFlZjUgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmgKKysrIGIvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuaApAQCAtNTcsMTAgKzU3LDEwIEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgfkluc3BlY3RvckRPTUFnZW50KCk7CiAKICAgICAg
ICAgLy8gTWV0aG9kcyBjYWxsZWQgZnJvbSB0aGUgZnJvbnRlbmQuCi0gICAgICAgIHZvaWQgZ2V0
Q2hpbGROb2Rlcyhsb25nIGNhbGxJZCwgbG9uZyBlbGVtZW50SWQpOworICAgICAgICB2b2lkIGdl
dENoaWxkTm9kZXMobG9uZyBjYWxsSWQsIGxvbmcgbm9kZUlkKTsKICAgICAgICAgdm9pZCBzZXRB
dHRyaWJ1dGUobG9uZyBjYWxsSWQsIGxvbmcgZWxlbWVudElkLCBjb25zdCBTdHJpbmcmIG5hbWUs
IGNvbnN0IFN0cmluZyYgdmFsdWUpOwogICAgICAgICB2b2lkIHJlbW92ZUF0dHJpYnV0ZShsb25n
IGNhbGxJZCwgbG9uZyBlbGVtZW50SWQsIGNvbnN0IFN0cmluZyYgbmFtZSk7Ci0gICAgICAgIHZv
aWQgc2V0VGV4dE5vZGVWYWx1ZShsb25nIGNhbGxJZCwgbG9uZyBlbGVtZW50SWQsIGNvbnN0IFN0
cmluZyYgdmFsdWUpOworICAgICAgICB2b2lkIHNldFRleHROb2RlVmFsdWUobG9uZyBjYWxsSWQs
IGxvbmcgbm9kZUlkLCBjb25zdCBTdHJpbmcmIHZhbHVlKTsKIAogICAgICAgICAvLyBNZXRob2Rz
IGNhbGxlZCBmcm9tIHRoZSBJbnNwZWN0b3JDb250cm9sbGVyLgogICAgICAgICB2b2lkIHNldERv
Y3VtZW50KERvY3VtZW50KiBkb2N1bWVudCk7CkBAIC03OSwxMSArNzksMTEgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgICAgICB2b2lkIHVuYmluZChOb2RlKiBub2RlKTsKIAogICAgICAgICB2
b2lkIHB1c2hEb2N1bWVudFRvRnJvbnRlbmQoKTsKLSAgICAgICAgdm9pZCBwdXNoQ2hpbGROb2Rl
c1RvRnJvbnRlbmQobG9uZyBlbGVtZW50SWQpOworICAgICAgICB2b2lkIHB1c2hDaGlsZE5vZGVz
VG9Gcm9udGVuZChsb25nIG5vZGVJZCk7CiAKICAgICAgICAgU2NyaXB0T2JqZWN0IGJ1aWxkT2Jq
ZWN0Rm9yTm9kZShOb2RlKiBub2RlLCBpbnQgZGVwdGgpOwogICAgICAgICBTY3JpcHRBcnJheSBi
dWlsZEFycmF5Rm9yRWxlbWVudEF0dHJpYnV0ZXMoRWxlbWVudCogZWxlbWVudCk7Ci0gICAgICAg
IFNjcmlwdEFycmF5IGJ1aWxkQXJyYXlGb3JDb250YWluZXJDaGlsZHJlbihDb250YWluZXJOb2Rl
KiBjb250YWluZXIsIGludCBkZXB0aCk7CisgICAgICAgIFNjcmlwdEFycmF5IGJ1aWxkQXJyYXlG
b3JDb250YWluZXJDaGlsZHJlbihOb2RlKiBjb250YWluZXIsIGludCBkZXB0aCk7CiAKICAgICAg
ICAgLy8gV2UgcmVwcmVzZW50IGVtYmVkZGVkIGRvbXMgYXMgYSBwYXJ0IG9mIHRoZSBzYW1lIGhp
ZXJhcmNoeS4gSGVuY2Ugd2UgdHJlYXQgY2hpbGRyZW4gb2YgZnJhbWUgb3duZXJzIGRpZmZlcmVu
dGx5LgogICAgICAgICAvLyBXZSBhbHNvIHNraXAgd2hpdGVzcGFjZSB0ZXh0IG5vZGVzIGNvbmRp
dGlvbmFsbHkuIEZvbGxvd2luZyBtZXRob2RzIGVuY2Fwc3VsYXRlIHRoZXNlIHNwZWNpZmljcy4K
QEAgLTkxLDcgKzkxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBOb2RlKiBpbm5l
ck5leHRTaWJsaW5nKE5vZGUqIG5vZGUpOwogICAgICAgICBOb2RlKiBpbm5lclByZXZpb3VzU2li
bGluZyhOb2RlKiBub2RlKTsKICAgICAgICAgaW50IGlubmVyQ2hpbGROb2RlQ291bnQoTm9kZSog
bm9kZSk7Ci0gICAgICAgIEVsZW1lbnQqIGlubmVyUGFyZW50RWxlbWVudChOb2RlKiBub2RlKTsK
KyAgICAgICAgTm9kZSogaW5uZXJQYXJlbnROb2RlKE5vZGUqIG5vZGUpOwogICAgICAgICBib29s
IGlzV2hpdGVzcGFjZShOb2RlKiBub2RlKTsKIAogICAgICAgICBEb2N1bWVudCogbWFpbkZyYW1l
RG9jdW1lbnQoKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250
ZW5kLmNwcCBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kLmNwcAppbmRleCBk
YTExY2Y3Li5mNzQ1YWUzIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JG
cm9udGVuZC5jcHAKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmQuY3Bw
CkBAIC0xMzIsMTcgKzEzMiw2IEBAIHZvaWQgSW5zcGVjdG9yRnJvbnRlbmQ6OnNldEF0dGFjaGVk
V2luZG93KGJvb2wgYXR0YWNoZWQpCiAgICAgZnVuY3Rpb24tPmNhbGwoKTsKIH0KIAotdm9pZCBJ
bnNwZWN0b3JGcm9udGVuZDo6aW5zcGVjdGVkV2luZG93U2NyaXB0T2JqZWN0Q2xlYXJlZChGcmFt
ZSogZnJhbWUpCi17Ci0gICAgU2NyaXB0T2JqZWN0IGRvbVdpbmRvdzsKLSAgICBpZiAoIWdldFF1
YXJhbnRpbmVkU2NyaXB0T2JqZWN0KGZyYW1lLT5kb21XaW5kb3coKSwgZG9tV2luZG93KSkKLSAg
ICAgICAgcmV0dXJuOwotCi0gICAgT3duUHRyPFNjcmlwdEZ1bmN0aW9uQ2FsbD4gZnVuY3Rpb24o
bmV3RnVuY3Rpb25DYWxsKCJpbnNwZWN0ZWRXaW5kb3dDbGVhcmVkIikpOwotICAgIGZ1bmN0aW9u
LT5hcHBlbmRBcmd1bWVudChkb21XaW5kb3cpOwotICAgIGZ1bmN0aW9uLT5jYWxsKCk7Ci19Ci0K
IHZvaWQgSW5zcGVjdG9yRnJvbnRlbmQ6OnNob3dQYW5lbChpbnQgcGFuZWwpCiB7CiAgICAgY29u
c3QgY2hhciogc2hvd0Z1bmN0aW9uTmFtZTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckZyb250ZW5kLmggYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVu
ZC5oCmluZGV4IGJhOTI0MTguLjYwMGY1MGEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckZyb250ZW5kLmgKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJv
bnRlbmQuaApAQCAtNzEsNyArNzEsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAg
dm9pZCB1cGRhdGVGb2N1c2VkTm9kZShsb25nIGxvbmcgbm9kZUlkKTsKICAgICAgICAgdm9pZCBz
ZXRBdHRhY2hlZFdpbmRvdyhib29sIGF0dGFjaGVkKTsKLSAgICAgICAgdm9pZCBpbnNwZWN0ZWRX
aW5kb3dTY3JpcHRPYmplY3RDbGVhcmVkKEZyYW1lKiBmcmFtZSk7CiAgICAgICAgIHZvaWQgc2hv
d1BhbmVsKGludCBwYW5lbCk7CiAgICAgICAgIHZvaWQgcG9wdWxhdGVJbnRlcmZhY2UoKTsKICAg
ICAgICAgdm9pZCByZXNldCgpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL0RPTUFnZW50LmpzIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RPTUFnZW50Lmpz
CmluZGV4IDZlZjY3NjEuLjJjZmVmN2IgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9ET01BZ2VudC5qcworKysgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRE9N
QWdlbnQuanMKQEAgLTIyOCw3ICsyMjgsNyBAQCBXZWJJbnNwZWN0b3IuRE9NRG9jdW1lbnQgPSBm
dW5jdGlvbihkb21BZ2VudCwgZGVmYXVsdFZpZXcsIHBheWxvYWQpCiAKIFdlYkluc3BlY3Rvci5E
T01Eb2N1bWVudC5wcm90b3R5cGUgPSB7CiAKLSAgICBhZGRFdmVudExpc3RlbmVyOiBmdW5jdGlv
bihuYW1lLCBjYWxsYmFjaywgdXNlQ2FwdHVyZSkKKyAgICBhZGRFdmVudExpc3RlbmVyOiBmdW5j
dGlvbihuYW1lLCBjYWxsYmFjaykKICAgICB7CiAgICAgICAgIHZhciBsaXN0ZW5lcnMgPSB0aGlz
Ll9saXN0ZW5lcnNbbmFtZV07CiAgICAgICAgIGlmICghbGlzdGVuZXJzKSB7CkBAIC0yMzgsNyAr
MjM4LDcgQEAgV2ViSW5zcGVjdG9yLkRPTURvY3VtZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAg
bGlzdGVuZXJzLnB1c2goY2FsbGJhY2spOwogICAgIH0sCiAKLSAgICByZW1vdmVFdmVudExpc3Rl
bmVyOiBmdW5jdGlvbihuYW1lLCBjYWxsYmFjaywgdXNlQ2FwdHVyZSkKKyAgICByZW1vdmVFdmVu
dExpc3RlbmVyOiBmdW5jdGlvbihuYW1lLCBjYWxsYmFjaykKICAgICB7CiAgICAgICAgIHZhciBs
aXN0ZW5lcnMgPSB0aGlzLl9saXN0ZW5lcnNbbmFtZV07CiAgICAgICAgIGlmICghbGlzdGVuZXJz
KQpAQCAtMjUzLDEwICsyNTMsMTIgQEAgV2ViSW5zcGVjdG9yLkRPTURvY3VtZW50LnByb3RvdHlw
ZSA9IHsKICAgICB7CiAgICAgICAgIHZhciBsaXN0ZW5lcnMgPSB0aGlzLl9saXN0ZW5lcnNbbmFt
ZV07CiAgICAgICAgIGlmICghbGlzdGVuZXJzKQotICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
ICAgIHJldHVybjsKIAotICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxpc3RlbmVycy5sZW5n
dGg7ICsraSkKLSAgICAgICAgICBsaXN0ZW5lcnNbaV0oZXZlbnQpOworICAgICAgICBmb3IgKHZh
ciBpID0gMDsgaSA8IGxpc3RlbmVycy5sZW5ndGg7ICsraSkgeworICAgICAgICAgICAgdmFyIGxp
c3RlbmVyID0gbGlzdGVuZXJzW2ldOworICAgICAgICAgICAgbGlzdGVuZXIuY2FsbCh0aGlzLCBl
dmVudCk7CisgICAgICAgIH0KICAgICB9CiB9CiAKQEAgLTMxOCwxOCArMzIwLDE2IEBAIFdlYklu
c3BlY3Rvci5ET01BZ2VudC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHJldHVybiB0aGlzLl93aW5k
b3c7CiAgICAgfSwKIAotICAgIGdldENoaWxkTm9kZXNBc3luYzogZnVuY3Rpb24ocGFyZW50LCBv
cHRfY2FsbGJhY2spCisgICAgZ2V0Q2hpbGROb2Rlc0FzeW5jOiBmdW5jdGlvbihwYXJlbnQsIGNh
bGxiYWNrKQogICAgIHsKICAgICAgICAgdmFyIGNoaWxkcmVuID0gcGFyZW50LmNoaWxkcmVuOwot
ICAgICAgICBpZiAoY2hpbGRyZW4gJiYgb3B0X2NhbGxiYWNrKSB7Ci0gICAgICAgICAgb3B0X2Nh
bGxiYWNrKGNoaWxkcmVuKTsKLSAgICAgICAgICByZXR1cm47CisgICAgICAgIGlmIChjaGlsZHJl
bikgeworICAgICAgICAgICAgY2FsbGJhY2soY2hpbGRyZW4pOworICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICB9CisgICAgICAgIGZ1bmN0aW9uIG15Y2FsbGJhY2soKSB7CisgICAgICAgICAg
ICBjYWxsYmFjayhwYXJlbnQuY2hpbGRyZW4pOwogICAgICAgICB9Ci0gICAgICAgIHZhciBteWNh
bGxiYWNrID0gZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICBpZiAob3B0X2NhbGxiYWNrKSB7Ci0g
ICAgICAgICAgICAgICAgb3B0X2NhbGxiYWNrKHBhcmVudC5jaGlsZHJlbik7Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgIH07CiAgICAgICAgIHZhciBjYWxsSWQgPSBXZWJJbnNwZWN0b3IuQ2FsbGJh
Y2sud3JhcChteWNhbGxiYWNrKTsKICAgICAgICAgSW5zcGVjdG9yQ29udHJvbGxlci5nZXRDaGls
ZE5vZGVzKGNhbGxJZCwgcGFyZW50LmlkKTsKICAgICB9LApAQCAtMzg2LDggKzM4Niw2IEBAIFdl
Ykluc3BlY3Rvci5ET01BZ2VudC5wcm90b3R5cGUgPSB7CiAgICAgX3NldENoaWxkTm9kZXM6IGZ1
bmN0aW9uKHBhcmVudElkLCBwYXlsb2FkcykKICAgICB7CiAgICAgICAgIHZhciBwYXJlbnQgPSB0
aGlzLl9pZFRvRE9NTm9kZVtwYXJlbnRJZF07Ci0gICAgICAgIGlmIChwYXJlbnQuY2hpbGRyZW4p
Ci0gICAgICAgICAgcmV0dXJuOwogICAgICAgICBwYXJlbnQuX3NldENoaWxkcmVuUGF5bG9hZChw
YXlsb2Fkcyk7CiAgICAgICAgIHRoaXMuX2JpbmROb2RlcyhwYXJlbnQuY2hpbGRyZW4pOwogICAg
IH0sCkBAIC00ODMsNiArNDgxLDcgQEAgV2ViSW5zcGVjdG9yLkNTU1N0eWxlRGVjbGFyYXRpb24u
cGFyc2VSdWxlID0gZnVuY3Rpb24ocGF5bG9hZCkKICAgICBydWxlLnN0eWxlLnBhcmVudFJ1bGUg
PSBydWxlOwogICAgIHJ1bGUuaXNVc2VyQWdlbnQgPSBwYXlsb2FkLmlzVXNlckFnZW50OwogICAg
IHJ1bGUuaXNVc2VyID0gcGF5bG9hZC5pc1VzZXI7CisgICAgcnVsZS5pc1ZpYUluc3BlY3RvciA9
IHBheWxvYWQuaXNWaWFJbnNwZWN0b3I7CiAgICAgaWYgKHBheWxvYWQucGFyZW50U3R5bGVTaGVl
dCkKICAgICAgICAgcnVsZS5wYXJlbnRTdHlsZVNoZWV0ID0geyBocmVmOiBwYXlsb2FkLnBhcmVu
dFN0eWxlU2hlZXQuaHJlZiB9OwogCkBAIC01ODksMTMgKzU4OCwxMSBAQCBXZWJJbnNwZWN0b3Iu
aGFzQ2hpbGRyZW5VcGRhdGVkID0gZnVuY3Rpb24oKQogV2ViSW5zcGVjdG9yLmNoaWxkTm9kZUlu
c2VydGVkID0gZnVuY3Rpb24oKQogewogICAgIHRoaXMuZG9tQWdlbnQuX2NoaWxkTm9kZUluc2Vy
dGVkLmFwcGx5KHRoaXMuZG9tQWdlbnQsIGFyZ3VtZW50cyk7Ci0gICAgdGhpcy5fY2hpbGROb2Rl
SW5zZXJ0ZWQuYmluZCh0aGlzKTsKIH0KIAogV2ViSW5zcGVjdG9yLmNoaWxkTm9kZVJlbW92ZWQg
PSBmdW5jdGlvbigpCiB7CiAgICAgdGhpcy5kb21BZ2VudC5fY2hpbGROb2RlUmVtb3ZlZC5hcHBs
eSh0aGlzLmRvbUFnZW50LCBhcmd1bWVudHMpOwotICAgIHRoaXMuX2NoaWxkTm9kZVJlbW92ZWQu
YmluZCh0aGlzKTsKIH0KIAogV2ViSW5zcGVjdG9yLmRpZEdldENoaWxkTm9kZXMgPSBXZWJJbnNw
ZWN0b3IuQ2FsbGJhY2sucHJvY2Vzc0NhbGxiYWNrOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL0VsZW1lbnRzUGFuZWwuanMgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvRWxlbWVudHNQYW5lbC5qcwppbmRleCAzZjYyNjVkLi4xNzQ4MTU5IDEwMDY0NAotLS0g
YS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRWxlbWVudHNQYW5lbC5qcworKysgYi9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRWxlbWVudHNQYW5lbC5qcwpAQCAtMTA3LDEzICsxMDcs
NyBAQCBXZWJJbnNwZWN0b3IuRWxlbWVudHNQYW5lbCA9IGZ1bmN0aW9uKCkKICAgICB0aGlzLmVs
ZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5zaWRlYmFyRWxlbWVudCk7CiAgICAgdGhpcy5lbGVtZW50
LmFwcGVuZENoaWxkKHRoaXMuc2lkZWJhclJlc2l6ZUVsZW1lbnQpOwogCi0gICAgdGhpcy5fbXV0
YXRpb25Nb25pdG9yZWRXaW5kb3dzID0gW107Ci0gICAgdGhpcy5fbm9kZUluc2VydGVkRXZlbnRM
aXN0ZW5lciA9IEluc3BlY3RvckNvbnRyb2xsZXIud3JhcENhbGxiYWNrKHRoaXMuX25vZGVJbnNl
cnRlZC5iaW5kKHRoaXMpKTsKLSAgICB0aGlzLl9ub2RlUmVtb3ZlZEV2ZW50TGlzdGVuZXIgPSBJ
bnNwZWN0b3JDb250cm9sbGVyLndyYXBDYWxsYmFjayh0aGlzLl9ub2RlUmVtb3ZlZC5iaW5kKHRo
aXMpKTsKLSAgICB0aGlzLl9jb250ZW50TG9hZGVkRXZlbnRMaXN0ZW5lciA9IEluc3BlY3RvckNv
bnRyb2xsZXIud3JhcENhbGxiYWNrKHRoaXMuX2NvbnRlbnRMb2FkZWQuYmluZCh0aGlzKSk7Ci0K
LSAgICB0aGlzLnN0eWxlc2hlZXQgPSBudWxsOwotICAgIHRoaXMuc3R5bGVzID0ge307CisgICAg
dGhpcy5fY2hhbmdlZFN0eWxlcyA9IHt9OwogCiAgICAgdGhpcy5yZXNldCgpOwogfQpAQCAtMTc3
LDM2ICsxNzEsMjMgQEAgV2ViSW5zcGVjdG9yLkVsZW1lbnRzUGFuZWwucHJvdG90eXBlID0gewog
ICAgICAgICB9CiAKICAgICAgICAgdGhpcy5yZWNlbnRseU1vZGlmaWVkTm9kZXMgPSBbXTsKLSAg
ICAgICAgdGhpcy51bnJlZ2lzdGVyQWxsTXV0YXRpb25FdmVudExpc3RlbmVycygpOwogCiAgICAg
ICAgIGRlbGV0ZSB0aGlzLmN1cnJlbnRRdWVyeTsKICAgICAgICAgdGhpcy5zZWFyY2hDYW5jZWxl
ZCgpOwogCiAgICAgICAgIHZhciBpbnNwZWN0ZWRXaW5kb3cgPSBXZWJJbnNwZWN0b3IuZG9tQWdl
bnQuaW5zcGVjdGVkV2luZG93OwotICAgICAgICBpZiAoIWluc3BlY3RlZFdpbmRvdyB8fCAhaW5z
cGVjdGVkV2luZG93LmRvY3VtZW50KQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIGlm
ICghaW5zcGVjdGVkV2luZG93LmRvY3VtZW50LmZpcnN0Q2hpbGQpIHsKLSAgICAgICAgICAgIGZ1
bmN0aW9uIGNvbnRlbnRMb2FkZWQoKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGlu
c3BlY3RlZFdpbmRvdy5kb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJET01Db250ZW50TG9h
ZGVkIiwgY29udGVudExvYWRlZENhbGxiYWNrLCBmYWxzZSk7Ci0KLSAgICAgICAgICAgICAgICB0
aGlzLnJlc2V0KCk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHZhciBjb250ZW50TG9h
ZGVkQ2FsbGJhY2sgPSBJbnNwZWN0b3JDb250cm9sbGVyLndyYXBDYWxsYmFjayhjb250ZW50TG9h
ZGVkLmJpbmQodGhpcykpOwotICAgICAgICAgICAgaW5zcGVjdGVkV2luZG93LmRvY3VtZW50LmFk
ZEV2ZW50TGlzdGVuZXIoIkRPTUNvbnRlbnRMb2FkZWQiLCBjb250ZW50TG9hZGVkQ2FsbGJhY2ss
IGZhbHNlKTsKKyAgICAgICAgaWYgKCFpbnNwZWN0ZWRXaW5kb3cgfHwgIWluc3BlY3RlZFdpbmRv
dy5kb2N1bWVudCB8fCAhaW5zcGVjdGVkV2luZG93LmRvY3VtZW50LmZpcnN0Q2hpbGQpCiAgICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KIAogICAgICAgICAvLyBJZiB0aGUgd2luZG93IGlz
bid0IHZpc2libGUsIHJldHVybiBlYXJseSBzbyB0aGUgRE9NIHRyZWUgaXNuJ3QgYnVpbHQKICAg
ICAgICAgLy8gYW5kIG11dGF0aW9uIGV2ZW50IGxpc3RlbmVycyBhcmUgbm90IGFkZGVkLgogICAg
ICAgICBpZiAoIUluc3BlY3RvckNvbnRyb2xsZXIuaXNXaW5kb3dWaXNpYmxlKCkpCiAgICAgICAg
ICAgICByZXR1cm47CiAKLSAgICAgICAgdGhpcy5yZWdpc3Rlck11dGF0aW9uRXZlbnRMaXN0ZW5l
cnMoaW5zcGVjdGVkV2luZG93KTsKLQogICAgICAgICB2YXIgaW5zcGVjdGVkUm9vdERvY3VtZW50
ID0gaW5zcGVjdGVkV2luZG93LmRvY3VtZW50OworICAgICAgICBpbnNwZWN0ZWRSb290RG9jdW1l
bnQuYWRkRXZlbnRMaXN0ZW5lcigiRE9NTm9kZUluc2VydGVkIiwgdGhpcy5fbm9kZUluc2VydGVk
LmJpbmQodGhpcykpOworICAgICAgICBpbnNwZWN0ZWRSb290RG9jdW1lbnQuYWRkRXZlbnRMaXN0
ZW5lcigiRE9NTm9kZVJlbW92ZWQiLCB0aGlzLl9ub2RlUmVtb3ZlZC5iaW5kKHRoaXMpKTsKKwog
ICAgICAgICB0aGlzLnJvb3RET01Ob2RlID0gaW5zcGVjdGVkUm9vdERvY3VtZW50OwogCiAgICAg
ICAgIHZhciBjYW5pZGF0ZUZvY3VzTm9kZSA9IGluc3BlY3RlZFJvb3REb2N1bWVudC5ib2R5IHx8
IGluc3BlY3RlZFJvb3REb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7CkBAIC0zMTYsMTIgKzI5Nyw2
IEBAIFdlYkluc3BlY3Rvci5FbGVtZW50c1BhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhp
cy5mb2N1c2VkRE9NTm9kZSA9IHRoaXMuX3NlYXJjaFJlc3VsdHNbdGhpcy5fY3VycmVudFNlYXJj
aFJlc3VsdEluZGV4XTsKICAgICB9LAogCi0gICAgaW5zcGVjdGVkV2luZG93Q2xlYXJlZDogZnVu
Y3Rpb24od2luZG93KQotICAgIHsKLSAgICAgICAgaWYgKEluc3BlY3RvckNvbnRyb2xsZXIuaXNX
aW5kb3dWaXNpYmxlKCkpCi0gICAgICAgICAgICB0aGlzLnVwZGF0ZU11dGF0aW9uRXZlbnRMaXN0
ZW5lcnMod2luZG93KTsKLSAgICB9LAotCiAgICAgcmVuYW1lU2VsZWN0b3I6IGZ1bmN0aW9uKG9s
ZElkZW50aWZpZXIsIG5ld0lkZW50aWZpZXIsIG9sZFNlbGVjdG9yLCBuZXdTZWxlY3RvcikKICAg
ICB7CiAgICAgICAgIC8vIFRPRE86IEltcGxlbWVudCBTaGlmdGluZyB0aGUgb2xkU2VsZWN0b3Is
IGFuZCBpdHMgY29udGVudHMgdG8gYSBuZXdTZWxlY3RvcgpAQCAtMzMzLDE2ICszMDgsMTYgQEAg
V2ViSW5zcGVjdG9yLkVsZW1lbnRzUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICAgICAgcmV0
dXJuOwogCiAgICAgICAgIHZhciBzZWxlY3RvciA9IHN0eWxlLnBhcmVudFJ1bGUuc2VsZWN0b3JU
ZXh0OwotICAgICAgICBpZiAoIXRoaXMuc3R5bGVzW2lkZW50aWZpZXJdKQotICAgICAgICAgICAg
dGhpcy5zdHlsZXNbaWRlbnRpZmllcl0gPSB7fTsKKyAgICAgICAgaWYgKCF0aGlzLl9jaGFuZ2Vk
U3R5bGVzW2lkZW50aWZpZXJdKQorICAgICAgICAgICAgdGhpcy5fY2hhbmdlZFN0eWxlc1tpZGVu
dGlmaWVyXSA9IHt9OwogCi0gICAgICAgIGlmICghdGhpcy5zdHlsZXNbaWRlbnRpZmllcl1bc2Vs
ZWN0b3JdKQotICAgICAgICAgICAgdGhpcy5zdHlsZXNbaWRlbnRpZmllcl1bc2VsZWN0b3JdID0g
e307CisgICAgICAgIGlmICghdGhpcy5fY2hhbmdlZFN0eWxlc1tpZGVudGlmaWVyXVtzZWxlY3Rv
cl0pCisgICAgICAgICAgICB0aGlzLl9jaGFuZ2VkU3R5bGVzW2lkZW50aWZpZXJdW3NlbGVjdG9y
XSA9IHt9OwogCi0gICAgICAgIGlmICghdGhpcy5zdHlsZXNbaWRlbnRpZmllcl1bc2VsZWN0b3Jd
W3Byb3BlcnR5XSkKKyAgICAgICAgaWYgKCF0aGlzLl9jaGFuZ2VkU3R5bGVzW2lkZW50aWZpZXJd
W3NlbGVjdG9yXVtwcm9wZXJ0eV0pCiAgICAgICAgICAgICBXZWJJbnNwZWN0b3Iuc3R5bGVDaGFu
Z2VzICs9IDE7CiAKLSAgICAgICAgdGhpcy5zdHlsZXNbaWRlbnRpZmllcl1bc2VsZWN0b3JdW3By
b3BlcnR5XSA9IHN0eWxlLmdldFByb3BlcnR5VmFsdWUocHJvcGVydHkpOworICAgICAgICB0aGlz
Ll9jaGFuZ2VkU3R5bGVzW2lkZW50aWZpZXJdW3NlbGVjdG9yXVtwcm9wZXJ0eV0gPSBzdHlsZS5n
ZXRQcm9wZXJ0eVZhbHVlKHByb3BlcnR5KTsKICAgICB9LAogCiAgICAgcmVtb3ZlU3R5bGVDaGFu
Z2U6IGZ1bmN0aW9uKGlkZW50aWZpZXIsIHN0eWxlLCBwcm9wZXJ0eSkKQEAgLTM1MSwxMSArMzI2
LDExIEBAIFdlYkluc3BlY3Rvci5FbGVtZW50c1BhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAg
ICAgIHJldHVybjsKIAogICAgICAgICB2YXIgc2VsZWN0b3IgPSBzdHlsZS5wYXJlbnRSdWxlLnNl
bGVjdG9yVGV4dDsKLSAgICAgICAgaWYgKCF0aGlzLnN0eWxlc1tpZGVudGlmaWVyXSB8fCAhdGhp
cy5zdHlsZXNbaWRlbnRpZmllcl1bc2VsZWN0b3JdKQorICAgICAgICBpZiAoIXRoaXMuX2NoYW5n
ZWRTdHlsZXNbaWRlbnRpZmllcl0gfHwgIXRoaXMuX2NoYW5nZWRTdHlsZXNbaWRlbnRpZmllcl1b
c2VsZWN0b3JdKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIGlmICh0aGlzLnN0eWxl
c1tpZGVudGlmaWVyXVtzZWxlY3Rvcl1bcHJvcGVydHldKSB7Ci0gICAgICAgICAgICBkZWxldGUg
dGhpcy5zdHlsZXNbaWRlbnRpZmllcl1bc2VsZWN0b3JdW3Byb3BlcnR5XTsKKyAgICAgICAgaWYg
KHRoaXMuX2NoYW5nZWRTdHlsZXNbaWRlbnRpZmllcl1bc2VsZWN0b3JdW3Byb3BlcnR5XSkgewor
ICAgICAgICAgICAgZGVsZXRlIHRoaXMuX2NoYW5nZWRTdHlsZXNbaWRlbnRpZmllcl1bc2VsZWN0
b3JdW3Byb3BlcnR5XTsKICAgICAgICAgICAgIFdlYkluc3BlY3Rvci5zdHlsZUNoYW5nZXMgLT0g
MTsKICAgICAgICAgfQogICAgIH0sCkBAIC0zNjcsMjAgKzM0MiwyMCBAQCBXZWJJbnNwZWN0b3Iu
RWxlbWVudHNQYW5lbC5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgLy8gTWVyZ2UgRG93biB0byBK
dXN0IFNlbGVjdG9ycwogICAgICAgICB2YXIgbWVyZ2VkU2VsZWN0b3JzID0ge307Ci0gICAgICAg
IGZvciAodmFyIGlkZW50aWZpZXIgaW4gdGhpcy5zdHlsZXMpIHsKLSAgICAgICAgICAgIGZvciAo
dmFyIHNlbGVjdG9yIGluIHRoaXMuc3R5bGVzW2lkZW50aWZpZXJdKSB7CisgICAgICAgIGZvciAo
dmFyIGlkZW50aWZpZXIgaW4gdGhpcy5fY2hhbmdlZFN0eWxlcykgeworICAgICAgICAgICAgZm9y
ICh2YXIgc2VsZWN0b3IgaW4gdGhpcy5fY2hhbmdlZFN0eWxlc1tpZGVudGlmaWVyXSkgewogICAg
ICAgICAgICAgICAgIGlmICghbWVyZ2VkU2VsZWN0b3JzW3NlbGVjdG9yXSkKLSAgICAgICAgICAg
ICAgICAgICAgbWVyZ2VkU2VsZWN0b3JzW3NlbGVjdG9yXSA9IHRoaXMuc3R5bGVzW2lkZW50aWZp
ZXJdW3NlbGVjdG9yXTsKKyAgICAgICAgICAgICAgICAgICAgbWVyZ2VkU2VsZWN0b3JzW3NlbGVj
dG9yXSA9IHRoaXMuX2NoYW5nZWRTdHlsZXNbaWRlbnRpZmllcl1bc2VsZWN0b3JdOwogICAgICAg
ICAgICAgICAgIGVsc2UgeyAvLyBtZXJnZSBvbiBzZWxlY3RvcgogICAgICAgICAgICAgICAgICAg
ICB2YXIgbWVyZ2UgPSB7fTsKICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgcHJvcGVydHkg
aW4gbWVyZ2VkU2VsZWN0b3JzW3NlbGVjdG9yXSkKICAgICAgICAgICAgICAgICAgICAgICAgIG1l
cmdlW3Byb3BlcnR5XSA9IG1lcmdlZFNlbGVjdG9yc1tzZWxlY3Rvcl1bcHJvcGVydHldOwotICAg
ICAgICAgICAgICAgICAgICBmb3IgKHZhciBwcm9wZXJ0eSBpbiB0aGlzLnN0eWxlc1tpZGVudGlm
aWVyXVtzZWxlY3Rvcl0pIHsKKyAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgcHJvcGVydHkg
aW4gdGhpcy5fY2hhbmdlZFN0eWxlc1tpZGVudGlmaWVyXVtzZWxlY3Rvcl0pIHsKICAgICAgICAg
ICAgICAgICAgICAgICAgIGlmICghbWVyZ2VbcHJvcGVydHldKQotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG1lcmdlW3Byb3BlcnR5XSA9IHRoaXMuc3R5bGVzW2lkZW50aWZpZXJdW3NlbGVj
dG9yXVtwcm9wZXJ0eV07CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVyZ2VbcHJvcGVy
dHldID0gdGhpcy5fY2hhbmdlZFN0eWxlc1tpZGVudGlmaWVyXVtzZWxlY3Rvcl1bcHJvcGVydHld
OwogICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7IC8vIG1lcmdlIG9uIHByb3BlcnR5IHdp
dGhpbiBhIHNlbGVjdG9yLCBpbmNsdWRlIGNvbW1lbnQgdG8gbm90aWZ5IHVzZXIKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB2YXIgdmFsdWUxID0gbWVyZ2VbcHJvcGVydHldOwotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHZhciB2YWx1ZTIgPSB0aGlzLnN0eWxlc1tpZGVudGlmaWVy
XVtzZWxlY3Rvcl1bcHJvcGVydHldOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB2
YWx1ZTIgPSB0aGlzLl9jaGFuZ2VkU3R5bGVzW2lkZW50aWZpZXJdW3NlbGVjdG9yXVtwcm9wZXJ0
eV07CiAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodmFsdWUxID09PSB2YWx1ZTIp
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lcmdlW3Byb3BlcnR5XSA9IFt2YWx1
ZTFdOwpAQCAtNDM3LDUzICs0MTIsNiBAQCBXZWJJbnNwZWN0b3IuRWxlbWVudHNQYW5lbC5wcm90
b3R5cGUgPSB7CiAgICAgICAgIEluc3BlY3RvckNvbnRyb2xsZXIuaW5zcGVjdGVkV2luZG93KCku
Y29uc29sZS5sb2cocmVzdWx0KTsKICAgICB9LAogCi0gICAgX2FkZE11dGF0aW9uRXZlbnRMaXN0
ZW5lcnM6IGZ1bmN0aW9uKG1vbml0b3JlZFdpbmRvdykKLSAgICB7Ci0gICAgICAgIG1vbml0b3Jl
ZFdpbmRvdy5kb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJET01Ob2RlSW5zZXJ0ZWQiLCB0aGlz
Ll9ub2RlSW5zZXJ0ZWRFdmVudExpc3RlbmVyLCB0cnVlKTsKLSAgICAgICAgbW9uaXRvcmVkV2lu
ZG93LmRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoIkRPTU5vZGVSZW1vdmVkIiwgdGhpcy5fbm9k
ZVJlbW92ZWRFdmVudExpc3RlbmVyLCB0cnVlKTsKLSAgICAgICAgaWYgKG1vbml0b3JlZFdpbmRv
dy5mcmFtZUVsZW1lbnQpCi0gICAgICAgICAgICBtb25pdG9yZWRXaW5kb3cuYWRkRXZlbnRMaXN0
ZW5lcigiRE9NQ29udGVudExvYWRlZCIsIHRoaXMuX2NvbnRlbnRMb2FkZWRFdmVudExpc3RlbmVy
LCB0cnVlKTsKLSAgICB9LAotCi0gICAgX3JlbW92ZU11dGF0aW9uRXZlbnRMaXN0ZW5lcnM6IGZ1
bmN0aW9uKG1vbml0b3JlZFdpbmRvdykKLSAgICB7Ci0gICAgICAgIGlmIChtb25pdG9yZWRXaW5k
b3cuZnJhbWVFbGVtZW50KQotICAgICAgICAgICAgbW9uaXRvcmVkV2luZG93LnJlbW92ZUV2ZW50
TGlzdGVuZXIoIkRPTUNvbnRlbnRMb2FkZWQiLCB0aGlzLl9jb250ZW50TG9hZGVkRXZlbnRMaXN0
ZW5lciwgdHJ1ZSk7Ci0gICAgICAgIGlmICghbW9uaXRvcmVkV2luZG93LmRvY3VtZW50KQotICAg
ICAgICAgICAgcmV0dXJuOwotICAgICAgICBtb25pdG9yZWRXaW5kb3cuZG9jdW1lbnQucmVtb3Zl
RXZlbnRMaXN0ZW5lcigiRE9NTm9kZUluc2VydGVkIiwgdGhpcy5fbm9kZUluc2VydGVkRXZlbnRM
aXN0ZW5lciwgdHJ1ZSk7Ci0gICAgICAgIG1vbml0b3JlZFdpbmRvdy5kb2N1bWVudC5yZW1vdmVF
dmVudExpc3RlbmVyKCJET01Ob2RlUmVtb3ZlZCIsIHRoaXMuX25vZGVSZW1vdmVkRXZlbnRMaXN0
ZW5lciwgdHJ1ZSk7Ci0gICAgfSwKLQotICAgIHVwZGF0ZU11dGF0aW9uRXZlbnRMaXN0ZW5lcnM6
IGZ1bmN0aW9uKG1vbml0b3JlZFdpbmRvdykKLSAgICB7Ci0gICAgICAgIHRoaXMuX2FkZE11dGF0
aW9uRXZlbnRMaXN0ZW5lcnMobW9uaXRvcmVkV2luZG93KTsKLSAgICB9LAotCi0gICAgcmVnaXN0
ZXJNdXRhdGlvbkV2ZW50TGlzdGVuZXJzOiBmdW5jdGlvbihtb25pdG9yZWRXaW5kb3cpCi0gICAg
ewotICAgICAgICBpZiAoIW1vbml0b3JlZFdpbmRvdyB8fCB0aGlzLl9tdXRhdGlvbk1vbml0b3Jl
ZFdpbmRvd3MuaW5kZXhPZihtb25pdG9yZWRXaW5kb3cpICE9PSAtMSkKLSAgICAgICAgICAgIHJl
dHVybjsKLSAgICAgICAgdGhpcy5fbXV0YXRpb25Nb25pdG9yZWRXaW5kb3dzLnB1c2gobW9uaXRv
cmVkV2luZG93KTsKLSAgICAgICAgaWYgKEluc3BlY3RvckNvbnRyb2xsZXIuaXNXaW5kb3dWaXNp
YmxlKCkpCi0gICAgICAgICAgICB0aGlzLl9hZGRNdXRhdGlvbkV2ZW50TGlzdGVuZXJzKG1vbml0
b3JlZFdpbmRvdyk7Ci0gICAgfSwKLQotICAgIHVucmVnaXN0ZXJNdXRhdGlvbkV2ZW50TGlzdGVu
ZXJzOiBmdW5jdGlvbihtb25pdG9yZWRXaW5kb3cpCi0gICAgewotICAgICAgICBpZiAoIW1vbml0
b3JlZFdpbmRvdyB8fCB0aGlzLl9tdXRhdGlvbk1vbml0b3JlZFdpbmRvd3MuaW5kZXhPZihtb25p
dG9yZWRXaW5kb3cpID09PSAtMSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgdGhpcy5f
bXV0YXRpb25Nb25pdG9yZWRXaW5kb3dzLnJlbW92ZShtb25pdG9yZWRXaW5kb3cpOwotICAgICAg
ICB0aGlzLl9yZW1vdmVNdXRhdGlvbkV2ZW50TGlzdGVuZXJzKG1vbml0b3JlZFdpbmRvdyk7Ci0g
ICAgfSwKLQotICAgIHVucmVnaXN0ZXJBbGxNdXRhdGlvbkV2ZW50TGlzdGVuZXJzOiBmdW5jdGlv
bigpCi0gICAgewotICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuX211dGF0aW9uTW9u
aXRvcmVkV2luZG93cy5sZW5ndGg7ICsraSkKLSAgICAgICAgICAgIHRoaXMuX3JlbW92ZU11dGF0
aW9uRXZlbnRMaXN0ZW5lcnModGhpcy5fbXV0YXRpb25Nb25pdG9yZWRXaW5kb3dzW2ldKTsKLSAg
ICAgICAgdGhpcy5fbXV0YXRpb25Nb25pdG9yZWRXaW5kb3dzID0gW107Ci0gICAgfSwKLQogICAg
IGdldCByb290RE9NTm9kZSgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy50cmVlT3V0bGlu
ZS5yb290RE9NTm9kZTsKQEAgLTUwNCwxMyArNDMyLDYgQEAgV2ViSW5zcGVjdG9yLkVsZW1lbnRz
UGFuZWwucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLnRyZWVPdXRsaW5lLmZvY3VzZWRET01O
b2RlID0geDsKICAgICB9LAogCi0gICAgX2NvbnRlbnRMb2FkZWQ6IGZ1bmN0aW9uKGV2ZW50KQot
ICAgIHsKLSAgICAgICAgdGhpcy5yZWNlbnRseU1vZGlmaWVkTm9kZXMucHVzaCh7bm9kZTogZXZl
bnQudGFyZ2V0LCBwYXJlbnQ6IGV2ZW50LnRhcmdldC5kZWZhdWx0Vmlldy5mcmFtZUVsZW1lbnQs
IHJlcGxhY2VkOiB0cnVlfSk7Ci0gICAgICAgIGlmICh0aGlzLnZpc2libGUpCi0gICAgICAgICAg
ICB0aGlzLl91cGRhdGVNb2RpZmllZE5vZGVzU29vbigpOwotICAgIH0sCi0KICAgICBfbm9kZUlu
c2VydGVkOiBmdW5jdGlvbihldmVudCkKICAgICB7CiAgICAgICAgIHRoaXMucmVjZW50bHlNb2Rp
ZmllZE5vZGVzLnB1c2goe25vZGU6IGV2ZW50LnRhcmdldCwgcGFyZW50OiBldmVudC5yZWxhdGVk
Tm9kZSwgaW5zZXJ0ZWQ6IHRydWV9KTsKQEAgLTU0OCwxNCArNDY5LDE0IEBAIFdlYkluc3BlY3Rv
ci5FbGVtZW50c1BhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIGlmICghcGFyZW50KQog
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgICAgICB2YXIgcGFyZW50Tm9kZUl0
ZW0gPSB0aGlzLnRyZWVPdXRsaW5lLmZpbmRUcmVlRWxlbWVudChwYXJlbnQsIG51bGwsIG51bGws
IG9iamVjdHNBcmVTYW1lKTsKKyAgICAgICAgICAgIHZhciBwYXJlbnROb2RlSXRlbSA9IHRoaXMu
dHJlZU91dGxpbmUuZmluZFRyZWVFbGVtZW50KHBhcmVudCk7CiAgICAgICAgICAgICBpZiAocGFy
ZW50Tm9kZUl0ZW0gJiYgIXBhcmVudE5vZGVJdGVtLmFscmVhZHlVcGRhdGVkQ2hpbGRyZW4pIHsK
ICAgICAgICAgICAgICAgICBwYXJlbnROb2RlSXRlbS51cGRhdGVDaGlsZHJlbihyZXBsYWNlZCk7
CiAgICAgICAgICAgICAgICAgcGFyZW50Tm9kZUl0ZW0uYWxyZWFkeVVwZGF0ZWRDaGlsZHJlbiA9
IHRydWU7CiAgICAgICAgICAgICAgICAgdXBkYXRlZFBhcmVudFRyZWVFbGVtZW50cy5wdXNoKHBh
cmVudE5vZGVJdGVtKTsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgaWYgKCF1cGRhdGVC
cmVhZGNydW1icyAmJiAob2JqZWN0c0FyZVNhbWUodGhpcy5mb2N1c2VkRE9NTm9kZSwgcGFyZW50
KSB8fCBpc0FuY2VzdG9ySW5jbHVkaW5nUGFyZW50RnJhbWVzKHRoaXMuZm9jdXNlZERPTU5vZGUs
IHBhcmVudCkpKQorICAgICAgICAgICAgaWYgKCF1cGRhdGVCcmVhZGNydW1icyAmJiAodGhpcy5m
b2N1c2VkRE9NTm9kZSA9PT0gcGFyZW50IHx8IGlzQW5jZXN0b3JJbmNsdWRpbmdQYXJlbnRGcmFt
ZXModGhpcy5mb2N1c2VkRE9NTm9kZSwgcGFyZW50KSkpCiAgICAgICAgICAgICAgICAgdXBkYXRl
QnJlYWRjcnVtYnMgPSB0cnVlOwogICAgICAgICB9CiAKQEAgLTYxNSw3ICs1MzYsNyBAQCBXZWJJ
bnNwZWN0b3IuRWxlbWVudHNQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHZhciBmb3VuZFJv
b3QgPSBmYWxzZTsKICAgICAgICAgdmFyIGNydW1iID0gY3J1bWJzLmZpcnN0Q2hpbGQ7CiAgICAg
ICAgIHdoaWxlIChjcnVtYikgewotICAgICAgICAgICAgaWYgKG9iamVjdHNBcmVTYW1lKGNydW1i
LnJlcHJlc2VudGVkT2JqZWN0LCB0aGlzLnJvb3RET01Ob2RlKSkKKyAgICAgICAgICAgIGlmIChj
cnVtYi5yZXByZXNlbnRlZE9iamVjdCA9PT0gdGhpcy5yb290RE9NTm9kZSkKICAgICAgICAgICAg
ICAgICBmb3VuZFJvb3QgPSB0cnVlOwogCiAgICAgICAgICAgICBpZiAoZm91bmRSb290KQpAQCAt
NjIzLDcgKzU0NCw3IEBAIFdlYkluc3BlY3Rvci5FbGVtZW50c1BhbmVsLnByb3RvdHlwZSA9IHsK
ICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBjcnVtYi5yZW1vdmVTdHlsZUNsYXNz
KCJkaW1tZWQiKTsKIAotICAgICAgICAgICAgaWYgKG9iamVjdHNBcmVTYW1lKGNydW1iLnJlcHJl
c2VudGVkT2JqZWN0LCB0aGlzLmZvY3VzZWRET01Ob2RlKSkgeworICAgICAgICAgICAgaWYgKGNy
dW1iLnJlcHJlc2VudGVkT2JqZWN0ID09PSB0aGlzLmZvY3VzZWRET01Ob2RlKSB7CiAgICAgICAg
ICAgICAgICAgY3J1bWIuYWRkU3R5bGVDbGFzcygic2VsZWN0ZWQiKTsKICAgICAgICAgICAgICAg
ICBoYW5kbGVkID0gdHJ1ZTsKICAgICAgICAgICAgIH0gZWxzZSB7CkBAIC02ODAsNyArNjAxLDcg
QEAgV2ViSW5zcGVjdG9yLkVsZW1lbnRzUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICAgICAg
aWYgKGN1cnJlbnQubm9kZVR5cGUgPT09IE5vZGUuRE9DVU1FTlRfTk9ERSkKICAgICAgICAgICAg
ICAgICBjb250aW51ZTsKIAotICAgICAgICAgICAgaWYgKG9iamVjdHNBcmVTYW1lKGN1cnJlbnQs
IHRoaXMucm9vdERPTU5vZGUpKQorICAgICAgICAgICAgaWYgKGN1cnJlbnQgPT09IHRoaXMucm9v
dERPTU5vZGUpCiAgICAgICAgICAgICAgICAgZm91bmRSb290ID0gdHJ1ZTsKIAogICAgICAgICAg
ICAgdmFyIGNydW1iID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpOwpAQCAtNzYzLDcg
KzY4NCw3IEBAIFdlYkluc3BlY3Rvci5FbGVtZW50c1BhbmVsLnByb3RvdHlwZSA9IHsKIAogICAg
ICAgICAgICAgaWYgKGZvdW5kUm9vdCkKICAgICAgICAgICAgICAgICBjcnVtYi5hZGRTdHlsZUNs
YXNzKCJkaW1tZWQiKTsKLSAgICAgICAgICAgIGlmIChvYmplY3RzQXJlU2FtZShjdXJyZW50LCB0
aGlzLmZvY3VzZWRET01Ob2RlKSkKKyAgICAgICAgICAgIGlmIChjdXJyZW50ID09PSB0aGlzLmZv
Y3VzZWRET01Ob2RlKQogICAgICAgICAgICAgICAgIGNydW1iLmFkZFN0eWxlQ2xhc3MoInNlbGVj
dGVkIik7CiAgICAgICAgICAgICBpZiAoIWNydW1icy5jaGlsZE5vZGVzLmxlbmd0aCkKICAgICAg
ICAgICAgICAgICBjcnVtYi5hZGRTdHlsZUNsYXNzKCJlbmQiKTsKQEAgLTEwNzAsNyArOTkxLDgg
QEAgV2ViSW5zcGVjdG9yLkVsZW1lbnRzUGFuZWwucHJvdG90eXBlID0gewogCiAgICAgICAgIHN3
aXRjaCAodGhpcy5mb2N1c2VkRE9NTm9kZS5ub2RlVHlwZSkgewogICAgICAgICAgICAgY2FzZSBO
b2RlLkVMRU1FTlRfTk9ERToKLSAgICAgICAgICAgICAgICB2YXIgZGF0YSA9IHRoaXMuZm9jdXNl
ZERPTU5vZGUub3V0ZXJIVE1MOworICAgICAgICAgICAgICAgIC8vIFRPRE86IEludHJvZHVjZSBJ
bnNwZWN0b3JDb250cm9sbGVyLmNvcHlFdmVudCB0aGF0IHB1c2hlcyBhcHByb3ByaWF0ZSBtYXJr
dXAgaW50byB0aGUgY2xpcGJvYXJkLgorICAgICAgICAgICAgICAgIHZhciBkYXRhID0gbnVsbDsK
ICAgICAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICAgICAgY2FzZSBOb2RlLkNPTU1FTlRf
Tk9ERToKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9FbGVtZW50c1Ry
ZWVPdXRsaW5lLmpzIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0VsZW1lbnRzVHJlZU91
dGxpbmUuanMKaW5kZXggM2ExZGI2OS4uMzQ1YTA4NCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL0VsZW1lbnRzVHJlZU91dGxpbmUuanMKKysrIGIvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL0VsZW1lbnRzVHJlZU91dGxpbmUuanMKQEAgLTUxLDcgKzUxLDcgQEAg
V2ViSW5zcGVjdG9yLkVsZW1lbnRzVHJlZU91dGxpbmUucHJvdG90eXBlID0gewogCiAgICAgc2V0
IHJvb3RET01Ob2RlKHgpCiAgICAgewotICAgICAgICBpZiAob2JqZWN0c0FyZVNhbWUodGhpcy5f
cm9vdERPTU5vZGUsIHgpKQorICAgICAgICBpZiAodGhpcy5fcm9vdERPTU5vZGUgPT09IHgpCiAg
ICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgdGhpcy5fcm9vdERPTU5vZGUgPSB4OwpAQCAt
NjYsNyArNjYsNyBAQCBXZWJJbnNwZWN0b3IuRWxlbWVudHNUcmVlT3V0bGluZS5wcm90b3R5cGUg
PSB7CiAKICAgICBzZXQgZm9jdXNlZERPTU5vZGUoeCkKICAgICB7Ci0gICAgICAgIGlmIChvYmpl
Y3RzQXJlU2FtZSh0aGlzLl9mb2N1c2VkRE9NTm9kZSwgeCkpIHsKKyAgICAgICAgaWYgKHRoaXMu
X2ZvY3VzZWRET01Ob2RlID09PSB4KSB7CiAgICAgICAgICAgICB0aGlzLnJldmVhbEFuZFNlbGVj
dE5vZGUoeCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTc5LDcgKzc5LDcg
QEAgV2ViSW5zcGVjdG9yLkVsZW1lbnRzVHJlZU91dGxpbmUucHJvdG90eXBlID0gewogICAgICAg
ICAvLyBhbmQgdGhlIHNlbGVjdCgpIGNhbGwgd291bGQgY2hhbmdlIHRoZSBmb2N1c2VkRE9NTm9k
ZSBhbmQgcmVlbnRlciB0aGlzIHNldHRlci4gU28gdG8KICAgICAgICAgLy8gYXZvaWQgY2FsbGlu
ZyBmb2N1c2VkTm9kZUNoYW5nZWQoKSB0d2ljZSwgZmlyc3QgY2hlY2sgaWYgX2ZvY3VzZWRET01O
b2RlIGlzIHRoZSBzYW1lCiAgICAgICAgIC8vIG5vZGUgYXMgdGhlIG9uZSBwYXNzZWQgaW4uCi0g
ICAgICAgIGlmIChvYmplY3RzQXJlU2FtZSh0aGlzLl9mb2N1c2VkRE9NTm9kZSwgeCkpIHsKKyAg
ICAgICAgaWYgKHRoaXMuX2ZvY3VzZWRET01Ob2RlID09PSB4KSB7CiAgICAgICAgICAgICB0aGlz
LmZvY3VzZWROb2RlQ2hhbmdlZCgpOwogCiAgICAgICAgICAgICBpZiAoeCAmJiAhdGhpcy5zdXBw
cmVzc1NlbGVjdEhpZ2hsaWdodCkgewpAQCAtMTM4LDE5ICsxMzgsMTcgQEAgV2ViSW5zcGVjdG9y
LkVsZW1lbnRzVHJlZU91dGxpbmUucHJvdG90eXBlID0gewogCiAgICAgZm9jdXNlZE5vZGVDaGFu
Z2VkOiBmdW5jdGlvbihmb3JjZVVwZGF0ZSkge30sCiAKLSAgICBmaW5kVHJlZUVsZW1lbnQ6IGZ1
bmN0aW9uKG5vZGUsIGlzQW5jZXN0b3IsIGdldFBhcmVudCwgZXF1YWwpCisgICAgZmluZFRyZWVF
bGVtZW50OiBmdW5jdGlvbihub2RlLCBpc0FuY2VzdG9yLCBnZXRQYXJlbnQpCiAgICAgewogICAg
ICAgICBpZiAodHlwZW9mIGlzQW5jZXN0b3IgPT09ICJ1bmRlZmluZWQiKQogICAgICAgICAgICAg
aXNBbmNlc3RvciA9IGlzQW5jZXN0b3JJbmNsdWRpbmdQYXJlbnRGcmFtZXM7CiAgICAgICAgIGlm
ICh0eXBlb2YgZ2V0UGFyZW50ID09PSAidW5kZWZpbmVkIikKICAgICAgICAgICAgIGdldFBhcmVu
dCA9IHBhcmVudE5vZGVPckZyYW1lRWxlbWVudDsKLSAgICAgICAgaWYgKHR5cGVvZiBlcXVhbCA9
PT0gInVuZGVmaW5lZCIpCi0gICAgICAgICAgICBlcXVhbCA9IG9iamVjdHNBcmVTYW1lOwogCi0g
ICAgICAgIHZhciB0cmVlRWxlbWVudCA9IFRyZWVPdXRsaW5lLnByb3RvdHlwZS5maW5kVHJlZUVs
ZW1lbnQuY2FsbCh0aGlzLCBub2RlLCBpc0FuY2VzdG9yLCBnZXRQYXJlbnQsIGVxdWFsKTsKKyAg
ICAgICAgdmFyIHRyZWVFbGVtZW50ID0gVHJlZU91dGxpbmUucHJvdG90eXBlLmZpbmRUcmVlRWxl
bWVudC5jYWxsKHRoaXMsIG5vZGUsIGlzQW5jZXN0b3IsIGdldFBhcmVudCk7CiAgICAgICAgIGlm
ICghdHJlZUVsZW1lbnQgJiYgbm9kZS5ub2RlVHlwZSA9PT0gTm9kZS5URVhUX05PREUpIHsKICAg
ICAgICAgICAgIC8vIFRoZSB0ZXh0IG5vZGUgbWlnaHQgaGF2ZSBiZWVuIGlubGluZWQgaWYgaXQg
d2FzIHNob3J0LCBzbyB0cnkgdG8gZmluZCB0aGUgcGFyZW50IGVsZW1lbnQuCi0gICAgICAgICAg
ICB0cmVlRWxlbWVudCA9IFRyZWVPdXRsaW5lLnByb3RvdHlwZS5maW5kVHJlZUVsZW1lbnQuY2Fs
bCh0aGlzLCBub2RlLnBhcmVudE5vZGUsIGlzQW5jZXN0b3IsIGdldFBhcmVudCwgZXF1YWwpOwor
ICAgICAgICAgICAgdHJlZUVsZW1lbnQgPSBUcmVlT3V0bGluZS5wcm90b3R5cGUuZmluZFRyZWVF
bGVtZW50LmNhbGwodGhpcywgbm9kZS5wYXJlbnROb2RlLCBpc0FuY2VzdG9yLCBnZXRQYXJlbnQp
OwogICAgICAgICB9CiAKICAgICAgICAgcmV0dXJuIHRyZWVFbGVtZW50OwpAQCAtMjQ4LDcgKzI0
Niw3IEBAIFdlYkluc3BlY3Rvci5FbGVtZW50c1RyZWVPdXRsaW5lLnByb3RvdHlwZS5fX3Byb3Rv
X18gPSBUcmVlT3V0bGluZS5wcm90b3R5cGU7CiAKIFdlYkluc3BlY3Rvci5FbGVtZW50c1RyZWVF
bGVtZW50ID0gZnVuY3Rpb24obm9kZSkKIHsKLSAgICB2YXIgaGFzQ2hpbGRyZW4gPSBub2RlLmNv
bnRlbnREb2N1bWVudCB8fCAoUHJlZmVyZW5jZXMuaWdub3JlV2hpdGVzcGFjZSA/IChmaXJzdENo
aWxkU2tpcHBpbmdXaGl0ZXNwYWNlLmNhbGwobm9kZSkgPyB0cnVlIDogZmFsc2UpIDogbm9kZS5o
YXNDaGlsZE5vZGVzKCkpOworICAgIHZhciBoYXNDaGlsZHJlbiA9IFByZWZlcmVuY2VzLmlnbm9y
ZVdoaXRlc3BhY2UgPyAoZmlyc3RDaGlsZFNraXBwaW5nV2hpdGVzcGFjZS5jYWxsKG5vZGUpID8g
dHJ1ZSA6IGZhbHNlKSA6IG5vZGUuaGFzQ2hpbGROb2RlcygpOwogICAgIHZhciB0aXRsZUluZm8g
PSBub2RlVGl0bGVJbmZvLmNhbGwobm9kZSwgaGFzQ2hpbGRyZW4sIFdlYkluc3BlY3Rvci5saW5r
aWZ5VVJMKTsKIAogICAgIGlmICh0aXRsZUluZm8uaGFzQ2hpbGRyZW4pIApAQCAtNDExLDExICs0
MDksMTEgQEAgV2ViSW5zcGVjdG9yLkVsZW1lbnRzVHJlZUVsZW1lbnQucHJvdG90eXBlID0gewog
ICAgICAgICAgICAgdmFyIGNoaWxkID0gKFByZWZlcmVuY2VzLmlnbm9yZVdoaXRlc3BhY2UgPyBm
aXJzdENoaWxkU2tpcHBpbmdXaGl0ZXNwYWNlLmNhbGwobm9kZSkgOiBub2RlLmZpcnN0Q2hpbGQp
OwogICAgICAgICAgICAgd2hpbGUgKGNoaWxkKSB7CiAgICAgICAgICAgICAgICAgdmFyIGN1cnJl
bnRUcmVlRWxlbWVudCA9IHRyZWVFbGVtZW50LmNoaWxkcmVuW3RyZWVDaGlsZEluZGV4XTsKLSAg
ICAgICAgICAgICAgICBpZiAoIWN1cnJlbnRUcmVlRWxlbWVudCB8fCAhb2JqZWN0c0FyZVNhbWUo
Y3VycmVudFRyZWVFbGVtZW50LnJlcHJlc2VudGVkT2JqZWN0LCBjaGlsZCkpIHsKKyAgICAgICAg
ICAgICAgICBpZiAoIWN1cnJlbnRUcmVlRWxlbWVudCB8fCBjdXJyZW50VHJlZUVsZW1lbnQucmVw
cmVzZW50ZWRPYmplY3QgIT09IGNoaWxkKSB7CiAgICAgICAgICAgICAgICAgICAgIC8vIEZpbmQg
YW55IGV4aXN0aW5nIGVsZW1lbnQgdGhhdCBpcyBsYXRlciBpbiB0aGUgY2hpbGRyZW4gbGlzdC4K
ICAgICAgICAgICAgICAgICAgICAgdmFyIGV4aXN0aW5nVHJlZUVsZW1lbnQgPSBudWxsOwogICAg
ICAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gKHRyZWVDaGlsZEluZGV4ICsgMSk7IGkgPCB0
cmVlRWxlbWVudC5jaGlsZHJlbi5sZW5ndGg7ICsraSkgewotICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKG9iamVjdHNBcmVTYW1lKHRyZWVFbGVtZW50LmNoaWxkcmVuW2ldLnJlcHJlc2VudGVk
T2JqZWN0LCBjaGlsZCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0cmVlRWxlbWVu
dC5jaGlsZHJlbltpXS5yZXByZXNlbnRlZE9iamVjdCA9PT0gY2hpbGQpIHsKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBleGlzdGluZ1RyZWVFbGVtZW50ID0gdHJlZUVsZW1lbnQuY2hpbGRy
ZW5baV07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAg
ICAgICAgICAgICB9CkBAIC00NTAsOSArNDQ4LDcgQEAgV2ViSW5zcGVjdG9yLkVsZW1lbnRzVHJl
ZUVsZW1lbnQucHJvdG90eXBlID0gewogICAgICAgICAgICAgdmFyIGN1cnJlbnROb2RlID0gY3Vy
cmVudENoaWxkLnJlcHJlc2VudGVkT2JqZWN0OwogICAgICAgICAgICAgdmFyIGN1cnJlbnRQYXJl
bnROb2RlID0gY3VycmVudE5vZGUucGFyZW50Tm9kZTsKIAotICAgICAgICAgICAgaWYgKG9iamVj
dHNBcmVTYW1lKGN1cnJlbnRQYXJlbnROb2RlLCB0aGlzLnJlcHJlc2VudGVkT2JqZWN0KSkKLSAg
ICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIGlmICh0aGlzLnJlcHJlc2VudGVk
T2JqZWN0LmNvbnRlbnREb2N1bWVudCAmJiBvYmplY3RzQXJlU2FtZShjdXJyZW50UGFyZW50Tm9k
ZSwgdGhpcy5yZXByZXNlbnRlZE9iamVjdC5jb250ZW50RG9jdW1lbnQpKQorICAgICAgICAgICAg
aWYgKGN1cnJlbnRQYXJlbnROb2RlID09PSB0aGlzLnJlcHJlc2VudGVkT2JqZWN0KQogICAgICAg
ICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgICAgICB2YXIgc2VsZWN0ZWRUcmVlRWxlbWVu
dCA9IHRoaXMudHJlZU91dGxpbmUuc2VsZWN0ZWRUcmVlRWxlbWVudDsKQEAgLTQ2MCwxMyArNDU2
LDggQEAgV2ViSW5zcGVjdG9yLkVsZW1lbnRzVHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogICAg
ICAgICAgICAgICAgIHRoaXMuc2VsZWN0KCk7CiAKICAgICAgICAgICAgIHRoaXMucmVtb3ZlQ2hp
bGRBdEluZGV4KGkpOwotCi0gICAgICAgICAgICBpZiAodGhpcy50cmVlT3V0bGluZS5wYW5lbCAm
JiBjdXJyZW50Tm9kZS5jb250ZW50RG9jdW1lbnQpCi0gICAgICAgICAgICAgICAgdGhpcy50cmVl
T3V0bGluZS5wYW5lbC51bnJlZ2lzdGVyTXV0YXRpb25FdmVudExpc3RlbmVycyhjdXJyZW50Tm9k
ZS5jb250ZW50RG9jdW1lbnQuZGVmYXVsdFZpZXcpOwogICAgICAgICB9CiAKLSAgICAgICAgaWYg
KHRoaXMucmVwcmVzZW50ZWRPYmplY3QuY29udGVudERvY3VtZW50KQotICAgICAgICAgICAgdXBk
YXRlQ2hpbGRyZW5PZk5vZGUodGhpcy5yZXByZXNlbnRlZE9iamVjdC5jb250ZW50RG9jdW1lbnQp
OwogICAgICAgICB1cGRhdGVDaGlsZHJlbk9mTm9kZSh0aGlzLnJlcHJlc2VudGVkT2JqZWN0KTsK
IAogICAgICAgICB2YXIgbGFzdENoaWxkID0gdGhpcy5jaGlsZHJlblt0aGlzLmNoaWxkcmVuLmxl
bmd0aCAtIDFdOwpAQCAtNDgyLDkgKzQ3Myw2IEBAIFdlYkluc3BlY3Rvci5FbGVtZW50c1RyZWVF
bGVtZW50LnByb3RvdHlwZSA9IHsKICAgICBvbmV4cGFuZDogZnVuY3Rpb24oKQogICAgIHsKICAg
ICAgICAgdGhpcy50cmVlT3V0bGluZS51cGRhdGVTZWxlY3Rpb24oKTsKLQotICAgICAgICBpZiAo
dGhpcy50cmVlT3V0bGluZS5wYW5lbCAmJiB0aGlzLnJlcHJlc2VudGVkT2JqZWN0LmNvbnRlbnRE
b2N1bWVudCkKLSAgICAgICAgICAgIHRoaXMudHJlZU91dGxpbmUucGFuZWwucmVnaXN0ZXJNdXRh
dGlvbkV2ZW50TGlzdGVuZXJzKHRoaXMucmVwcmVzZW50ZWRPYmplY3QuY29udGVudERvY3VtZW50
LmRlZmF1bHRWaWV3KTsKICAgICB9LAogCiAgICAgb25jb2xsYXBzZTogZnVuY3Rpb24oKQpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0luamVjdGVkU2NyaXB0LmpzIGIv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0luamVjdGVkU2NyaXB0LmpzCmluZGV4IDhhZDYy
NWYuLjFhY2JhOTcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Jbmpl
Y3RlZFNjcmlwdC5qcworKysgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSW5qZWN0ZWRT
Y3JpcHQuanMKQEAgLTIyNiw4ICsyMjYsMTAgQEAgSW5qZWN0ZWRTY3JpcHQuYWRkU3R5bGVTZWxl
Y3RvciA9IGZ1bmN0aW9uKG5ld0NvbnRlbnQsIHNlbGVjdGVkTm9kZUlkKQogICAgIH0KIAogICAg
IHZhciBzZWxlY3RlZE5vZGUgPSBJbmplY3RlZFNjcmlwdC5fbm9kZUZvcklkKHNlbGVjdGVkTm9k
ZUlkKTsKKyAgICB2YXIgcnVsZSA9IHN0eWxlc2hlZXQuY3NzUnVsZXNbc3R5bGVzaGVldC5jc3NS
dWxlcy5sZW5ndGggLSAxXTsKKyAgICBydWxlLl9faXNWaWFJbnNwZWN0b3IgPSB0cnVlOwogCi0g
ICAgcmV0dXJuIFsgSW5qZWN0ZWRTY3JpcHQuX3NlcmlhbGl6ZVJ1bGUoc3R5bGVzaGVldC5jc3NS
dWxlc1tzdHlsZXNoZWV0LmNzc1J1bGVzLmxlbmd0aCAtIDFdKSwgSW5qZWN0ZWRTY3JpcHQuX2Rv
ZXNTZWxlY3RvckFmZmVjdE5vZGUobmV3Q29udGVudCwgc2VsZWN0ZWROb2RlKSBdOworICAgIHJl
dHVybiBbIEluamVjdGVkU2NyaXB0Ll9zZXJpYWxpemVSdWxlKHJ1bGUpLCBJbmplY3RlZFNjcmlw
dC5fZG9lc1NlbGVjdG9yQWZmZWN0Tm9kZShuZXdDb250ZW50LCBzZWxlY3RlZE5vZGUpIF07CiB9
CiAKIEluamVjdGVkU2NyaXB0Ll9kb2VzU2VsZWN0b3JBZmZlY3ROb2RlID0gZnVuY3Rpb24oc2Vs
ZWN0b3JUZXh0LCBub2RlKQpAQCAtMjY0LDYgKzI2Niw3IEBAIEluamVjdGVkU2NyaXB0Ll9zZXJp
YWxpemVSdWxlID0gZnVuY3Rpb24ocnVsZSkKICAgICB9CiAgICAgcnVsZVZhbHVlLmlzVXNlckFn
ZW50ID0gcGFyZW50U3R5bGVTaGVldCAmJiAhcGFyZW50U3R5bGVTaGVldC5vd25lck5vZGUgJiYg
IXBhcmVudFN0eWxlU2hlZXQuaHJlZjsKICAgICBydWxlVmFsdWUuaXNVc2VyID0gcGFyZW50U3R5
bGVTaGVldCAmJiBwYXJlbnRTdHlsZVNoZWV0Lm93bmVyTm9kZSAmJiBwYXJlbnRTdHlsZVNoZWV0
Lm93bmVyTm9kZS5ub2RlTmFtZSA9PSAiI2RvY3VtZW50IjsKKyAgICBydWxlVmFsdWUuaXNWaWFJ
bnNwZWN0b3IgPSAhIXJ1bGUuX19pc1ZpYUluc3BlY3RvcjsKIAogICAgIC8vIEJpbmQgZWRpdGFi
bGUgc2NyaXB0cyBvbmx5LgogICAgIHZhciBkb0JpbmQgPSAhcnVsZVZhbHVlLmlzVXNlckFnZW50
ICYmICFydWxlVmFsdWUuaXNVc2VyOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL1N0eWxlc1NpZGViYXJQYW5lLmpzIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L1N0eWxlc1NpZGViYXJQYW5lLmpzCmluZGV4IGM3MjBkYzIuLmRiNTg1ZTAgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TdHlsZXNTaWRlYmFyUGFuZS5qcworKysgYi9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU3R5bGVzU2lkZWJhclBhbmUuanMKQEAgLTMyMiw4
ICszMjIsOSBAQCBXZWJJbnNwZWN0b3IuU3R5bGVQcm9wZXJ0aWVzU2VjdGlvbiA9IGZ1bmN0aW9u
KHN0eWxlUnVsZSwgc3VidGl0bGUsIGNvbXB1dGVkU3R5bAogICAgIHRoaXMuZWRpdGFibGUgPSAo
ZWRpdGFibGUgJiYgIWNvbXB1dGVkU3R5bGUpOwogCiAgICAgLy8gUHJldmVudCBlZGl0aW5nIHRo
ZSB1c2VyIGFnZW50IGFuZCB1c2VyIHJ1bGVzLgotICAgIHZhciBpc1VzZXJBZ2VudCA9IHRoaXMu
c3R5bGVSdWxlLmlzVXNlckFnZW50OwotICAgIHZhciBpc1VzZXIgPSB0aGlzLnN0eWxlUnVsZS5p
c1VzZXI7CisgICAgdmFyIGlzVXNlckFnZW50ID0gdGhpcy5ydWxlICYmIHRoaXMucnVsZS5pc1Vz
ZXJBZ2VudDsKKyAgICB2YXIgaXNVc2VyID0gdGhpcy5ydWxlICYmIHRoaXMucnVsZS5pc1VzZXI7
CisgICAgdmFyIGlzVmlhSW5zcGVjdG9yID0gdGhpcy5ydWxlICYmIHRoaXMucnVsZS5pc1ZpYUlu
c3BlY3RvcjsKIAogICAgIGlmIChpc1VzZXJBZ2VudCB8fCBpc1VzZXIpCiAgICAgICAgIHRoaXMu
ZWRpdGFibGUgPSBmYWxzZTsKQEAgLTM2Niw3ICszNjcsNyBAQCBXZWJJbnNwZWN0b3IuU3R5bGVQ
cm9wZXJ0aWVzU2VjdGlvbiA9IGZ1bmN0aW9uKHN0eWxlUnVsZSwgc3VidGl0bGUsIGNvbXB1dGVk
U3R5bAogICAgICAgICAgICAgICAgIHN1YnRpdGxlID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJ1
c2VyIGFnZW50IHN0eWxlc2hlZXQiKTsKICAgICAgICAgICAgIGVsc2UgaWYgKGlzVXNlcikKICAg
ICAgICAgICAgICAgICBzdWJ0aXRsZSA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygidXNlciBzdHls
ZXNoZWV0Iik7Ci0gICAgICAgICAgICBlbHNlIGlmICh0aGlzLnN0eWxlUnVsZS5wYXJlbnRTdHls
ZVNoZWV0ID09PSBXZWJJbnNwZWN0b3IucGFuZWxzLmVsZW1lbnRzLnN0eWxlc2hlZXQpCisgICAg
ICAgICAgICBlbHNlIGlmIChpc1ZpYUluc3BlY3RvcikKICAgICAgICAgICAgICAgICBzdWJ0aXRs
ZSA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygidmlhIGluc3BlY3RvciIpOwogICAgICAgICAgICAg
ZWxzZQogICAgICAgICAgICAgICAgIHN1YnRpdGxlID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJp
bmxpbmUgc3R5bGVzaGVldCIpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL2luc3BlY3Rvci5qcyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3Iu
anMKaW5kZXggNzZiZmRlYi4uZjYzNzdjMiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL2luc3BlY3Rvci5qcworKysgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
aW5zcGVjdG9yLmpzCkBAIC0zMDYsNyArMzA2LDcgQEAgdmFyIFdlYkluc3BlY3RvciA9IHsKIAog
ICAgIHNldCBob3ZlcmVkRE9NTm9kZSh4KQogICAgIHsKLSAgICAgICAgaWYgKG9iamVjdHNBcmVT
YW1lKHRoaXMuX2hvdmVyZWRET01Ob2RlLCB4KSkKKyAgICAgICAgaWYgKHRoaXMuX2hvdmVyZWRE
T01Ob2RlID09PSB4KQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIHRoaXMuX2hvdmVy
ZWRET01Ob2RlID0geDsKQEAgLTEwODcsMTEgKzEwODcsNiBAQCBXZWJJbnNwZWN0b3IucmVzZXQg
PSBmdW5jdGlvbigpCiAgICAgdGhpcy5jb25zb2xlLmNsZWFyTWVzc2FnZXMoKTsKIH0KIAotV2Vi
SW5zcGVjdG9yLmluc3BlY3RlZFdpbmRvd0NsZWFyZWQgPSBmdW5jdGlvbihpbnNwZWN0ZWRXaW5k
b3cpCi17Ci0gICAgdGhpcy5wYW5lbHMuZWxlbWVudHMuaW5zcGVjdGVkV2luZG93Q2xlYXJlZChp
bnNwZWN0ZWRXaW5kb3cpOwotfQotCiBXZWJJbnNwZWN0b3IucmVzb3VyY2VVUkxDaGFuZ2VkID0g
ZnVuY3Rpb24ocmVzb3VyY2UsIG9sZFVSTCkKIHsKICAgICBkZWxldGUgdGhpcy5yZXNvdXJjZVVS
TE1hcFtvbGRVUkxdOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL3Ry
ZWVvdXRsaW5lLmpzIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL3RyZWVvdXRsaW5lLmpz
CmluZGV4IDU3OWU3ZmIuLjY3ZjM1YzIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC90cmVlb3V0bGluZS5qcworKysgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
dHJlZW91dGxpbmUuanMKQEAgLTI0OSwyMSArMjQ5LDE4IEBAIFRyZWVPdXRsaW5lLnByb3RvdHlw
ZS5fZm9yZ2V0Q2hpbGRyZW5SZWN1cnNpdmUgPSBmdW5jdGlvbihwYXJlbnRFbGVtZW50KQogICAg
IH0KIH0KIAotVHJlZU91dGxpbmUucHJvdG90eXBlLmZpbmRUcmVlRWxlbWVudCA9IGZ1bmN0aW9u
KHJlcHJlc2VudGVkT2JqZWN0LCBpc0FuY2VzdG9yLCBnZXRQYXJlbnQsIGVxdWFsKQorVHJlZU91
dGxpbmUucHJvdG90eXBlLmZpbmRUcmVlRWxlbWVudCA9IGZ1bmN0aW9uKHJlcHJlc2VudGVkT2Jq
ZWN0LCBpc0FuY2VzdG9yLCBnZXRQYXJlbnQpCiB7CiAgICAgaWYgKCFyZXByZXNlbnRlZE9iamVj
dCkKICAgICAgICAgcmV0dXJuIG51bGw7CiAKLSAgICBpZiAoIWVxdWFsKQotICAgICAgICBlcXVh
bCA9IGZ1bmN0aW9uKGEsIGIpIHsgcmV0dXJuIGEgPT09IGIgfTsKLQogICAgIGlmICgiX190cmVl
RWxlbWVudElkZW50aWZpZXIiIGluIHJlcHJlc2VudGVkT2JqZWN0KSB7CiAgICAgICAgIC8vIElm
IHRoaXMgcmVwcmVzZW50ZWRPYmplY3QgaGFzIGEgdHJlZSBlbGVtZW50IGlkZW50aWZpZXIsIGFu
ZCBpdCBpcyBhIGtub3duIFRyZWVFbGVtZW50CiAgICAgICAgIC8vIGluIG91ciB0cmVlIHdlIGNh
biBqdXN0IHJldHVybiB0aGF0IHRyZWUgZWxlbWVudC4KICAgICAgICAgdmFyIGVsZW1lbnRzID0g
dGhpcy5fa25vd25UcmVlRWxlbWVudHNbcmVwcmVzZW50ZWRPYmplY3QuX190cmVlRWxlbWVudElk
ZW50aWZpZXJdOwogICAgICAgICBpZiAoZWxlbWVudHMpIHsKICAgICAgICAgICAgIGZvciAodmFy
IGkgPSAwOyBpIDwgZWxlbWVudHMubGVuZ3RoOyArK2kpCi0gICAgICAgICAgICAgICAgaWYgKGVx
dWFsKGVsZW1lbnRzW2ldLnJlcHJlc2VudGVkT2JqZWN0LCByZXByZXNlbnRlZE9iamVjdCkpCisg
ICAgICAgICAgICAgICAgaWYgKGVsZW1lbnRzW2ldLnJlcHJlc2VudGVkT2JqZWN0ID09PSByZXBy
ZXNlbnRlZE9iamVjdCkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnRzW2ldOwog
ICAgICAgICB9CiAgICAgfQpAQCAtMjc3LDcgKzI3NCw3IEBAIFRyZWVPdXRsaW5lLnByb3RvdHlw
ZS5maW5kVHJlZUVsZW1lbnQgPSBmdW5jdGlvbihyZXByZXNlbnRlZE9iamVjdCwgaXNBbmNlc3Rv
ciwKICAgICB2YXIgZm91bmQgPSBmYWxzZTsKICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMu
Y2hpbGRyZW4ubGVuZ3RoOyArK2kpIHsKICAgICAgICAgaXRlbSA9IHRoaXMuY2hpbGRyZW5baV07
Ci0gICAgICAgIGlmIChlcXVhbChpdGVtLnJlcHJlc2VudGVkT2JqZWN0LCByZXByZXNlbnRlZE9i
amVjdCkgfHwgaXNBbmNlc3RvcihpdGVtLnJlcHJlc2VudGVkT2JqZWN0LCByZXByZXNlbnRlZE9i
amVjdCkpIHsKKyAgICAgICAgaWYgKGl0ZW0ucmVwcmVzZW50ZWRPYmplY3QgPT09IHJlcHJlc2Vu
dGVkT2JqZWN0IHx8IGlzQW5jZXN0b3IoaXRlbS5yZXByZXNlbnRlZE9iamVjdCwgcmVwcmVzZW50
ZWRPYmplY3QpKSB7CiAgICAgICAgICAgICBmb3VuZCA9IHRydWU7CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgfQpAQCAtMjkyLDcgKzI4OSw3IEBAIFRyZWVPdXRsaW5lLnByb3RvdHlwZS5m
aW5kVHJlZUVsZW1lbnQgPSBmdW5jdGlvbihyZXByZXNlbnRlZE9iamVjdCwgaXNBbmNlc3RvciwK
ICAgICB2YXIgY3VycmVudE9iamVjdCA9IHJlcHJlc2VudGVkT2JqZWN0OwogICAgIHdoaWxlIChj
dXJyZW50T2JqZWN0KSB7CiAgICAgICAgIGFuY2VzdG9ycy51bnNoaWZ0KGN1cnJlbnRPYmplY3Qp
OwotICAgICAgICBpZiAoZXF1YWwoY3VycmVudE9iamVjdCwgaXRlbS5yZXByZXNlbnRlZE9iamVj
dCkpCisgICAgICAgIGlmIChjdXJyZW50T2JqZWN0ID09PSBpdGVtLnJlcHJlc2VudGVkT2JqZWN0
KQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGN1cnJlbnRPYmplY3QgPSBnZXRQYXJlbnQo
Y3VycmVudE9iamVjdCk7CiAgICAgfQpAQCAtMzAxLDE4ICsyOTgsMTggQEAgVHJlZU91dGxpbmUu
cHJvdG90eXBlLmZpbmRUcmVlRWxlbWVudCA9IGZ1bmN0aW9uKHJlcHJlc2VudGVkT2JqZWN0LCBp
c0FuY2VzdG9yLAogICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYW5jZXN0b3JzLmxlbmd0aDsgKytp
KSB7CiAgICAgICAgIC8vIE1ha2Ugc3VyZSB3ZSBkb24ndCBjYWxsIGZpbmRUcmVlRWxlbWVudCB3
aXRoIHRoZSBzYW1lIHJlcHJlc2VudGVkT2JqZWN0CiAgICAgICAgIC8vIGFnYWluLCB0byBwcmV2
ZW50IGluZmluaXRlIHJlY3Vyc2lvbi4KLSAgICAgICAgaWYgKGVxdWFsKGFuY2VzdG9yc1tpXSwg
cmVwcmVzZW50ZWRPYmplY3QpKQorICAgICAgICBpZiAoYW5jZXN0b3JzW2ldID09PSByZXByZXNl
bnRlZE9iamVjdCkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAvLyBGSVhNRTogd2Ug
Y291bGQgZG8gc29tZXRoaW5nIGZhc3RlciB0aGFuIGZpbmRUcmVlRWxlbWVudCBzaW5jZSB3ZSB3
aWxsIGtub3cgdGhlIG5leHQKICAgICAgICAgLy8gYW5jZXN0b3IgZXhpc3RzIGluIHRoZSB0cmVl
LgotICAgICAgICBpdGVtID0gdGhpcy5maW5kVHJlZUVsZW1lbnQoYW5jZXN0b3JzW2ldLCBpc0Fu
Y2VzdG9yLCBnZXRQYXJlbnQsIGVxdWFsKTsKKyAgICAgICAgaXRlbSA9IHRoaXMuZmluZFRyZWVF
bGVtZW50KGFuY2VzdG9yc1tpXSwgaXNBbmNlc3RvciwgZ2V0UGFyZW50KTsKICAgICAgICAgaWYg
KGl0ZW0gJiYgaXRlbS5vbnBvcHVsYXRlKQogICAgICAgICAgICAgaXRlbS5vbnBvcHVsYXRlKGl0
ZW0pOwogICAgIH0KIAogICAgIC8vIE5vdyB0aGF0IGFsbCB0aGUgYW5jZXN0b3JzIGFyZSBwb3B1
bGF0ZWQsIHRyeSB0byBmaW5kIHRoZSByZXByZXNlbnRlZE9iamVjdCBhZ2Fpbi4gVGhpcyB0aW1l
CiAgICAgLy8gd2l0aG91dCB0aGUgaXNBbmNlc3RvciBhbmQgZ2V0UGFyZW50IGZ1bmN0aW9ucyB0
byBwcmV2ZW50IGFuIGluZmluaXRlIHJlY3Vyc2lvbiBpZiBpdCBpc24ndCBmb3VuZC4KLSAgICBy
ZXR1cm4gdGhpcy5maW5kVHJlZUVsZW1lbnQocmVwcmVzZW50ZWRPYmplY3QsIG51bGwsIG51bGws
IGVxdWFsKTsKKyAgICByZXR1cm4gdGhpcy5maW5kVHJlZUVsZW1lbnQocmVwcmVzZW50ZWRPYmpl
Y3QpOwogfQogCiBUcmVlT3V0bGluZS5wcm90b3R5cGUudHJlZUVsZW1lbnRGcm9tUG9pbnQgPSBm
dW5jdGlvbih4LCB5KQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL3V0
aWxpdGllcy5qcyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC91dGlsaXRpZXMuanMKaW5k
ZXggNzgwZjI1Ni4uZTYwYWY0MiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL3V0aWxpdGllcy5qcworKysgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvdXRpbGl0
aWVzLmpzCkBAIC0yNTAsNyArMjUwLDcgQEAgRWxlbWVudC5wcm90b3R5cGUuaGFzU3R5bGVDbGFz
cyA9IGZ1bmN0aW9uKGNsYXNzTmFtZSkKIAogTm9kZS5wcm90b3R5cGUuZW5jbG9zaW5nTm9kZU9y
U2VsZldpdGhOb2RlTmFtZUluQXJyYXkgPSBmdW5jdGlvbihuYW1lQXJyYXkpCiB7Ci0gICAgZm9y
ICh2YXIgbm9kZSA9IHRoaXM7IG5vZGUgJiYgIW9iamVjdHNBcmVTYW1lKG5vZGUsIHRoaXMub3du
ZXJEb2N1bWVudCk7IG5vZGUgPSBub2RlLnBhcmVudE5vZGUpCisgICAgZm9yICh2YXIgbm9kZSA9
IHRoaXM7IG5vZGUgJiYgbm9kZSAhPT0gdGhpcy5vd25lckRvY3VtZW50OyBub2RlID0gbm9kZS5w
YXJlbnROb2RlKQogICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG5hbWVBcnJheS5sZW5ndGg7
ICsraSkKICAgICAgICAgICAgIGlmIChub2RlLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT09IG5h
bWVBcnJheVtpXS50b0xvd2VyQ2FzZSgpKQogICAgICAgICAgICAgICAgIHJldHVybiBub2RlOwpA
QCAtMjY0LDcgKzI2NCw3IEBAIE5vZGUucHJvdG90eXBlLmVuY2xvc2luZ05vZGVPclNlbGZXaXRo
Tm9kZU5hbWUgPSBmdW5jdGlvbihub2RlTmFtZSkKIAogTm9kZS5wcm90b3R5cGUuZW5jbG9zaW5n
Tm9kZU9yU2VsZldpdGhDbGFzcyA9IGZ1bmN0aW9uKGNsYXNzTmFtZSkKIHsKLSAgICBmb3IgKHZh
ciBub2RlID0gdGhpczsgbm9kZSAmJiAhb2JqZWN0c0FyZVNhbWUobm9kZSwgdGhpcy5vd25lckRv
Y3VtZW50KTsgbm9kZSA9IG5vZGUucGFyZW50Tm9kZSkKKyAgICBmb3IgKHZhciBub2RlID0gdGhp
czsgbm9kZSAmJiBub2RlICE9PSB0aGlzLm93bmVyRG9jdW1lbnQ7IG5vZGUgPSBub2RlLnBhcmVu
dE5vZGUpCiAgICAgICAgIGlmIChub2RlLm5vZGVUeXBlID09PSBOb2RlLkVMRU1FTlRfTk9ERSAm
JiBub2RlLmhhc1N0eWxlQ2xhc3MoY2xhc3NOYW1lKSkKICAgICAgICAgICAgIHJldHVybiBub2Rl
OwogICAgIHJldHVybiBudWxsOwpAQCAtNTMwLDIxICs1MzAsNiBAQCBmdW5jdGlvbiBub2RlQ29u
dGVudFByZXZpZXcoKQogICAgIHJldHVybiBwcmV2aWV3LmNvbGxhcHNlV2hpdGVzcGFjZSgpOwog
fQogCi1mdW5jdGlvbiBvYmplY3RzQXJlU2FtZShhLCBiKQotewotICAgIC8vIEZJWE1FOiBNYWtl
IHRoaXMgbW9yZSBnZW5lcmljIHNvIGlzIHdvcmtzIHdpdGggYW55IHdyYXBwZWQgb2JqZWN0LCBu
b3QganVzdCBub2Rlcy4KLSAgICAvLyBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgdG8gY29tcGFyZSBu
b2RlcyB0aGF0IG1pZ2h0IGJlIEpTSW5zcGVjdGVkT2JqZWN0V3JhcHBlcnMsIHNpbmNlCi0gICAg
Ly8gSmF2YVNjcmlwdCBlcXVhbGl0eSBpcyBub3QgdHJ1ZSBmb3IgSlNJbnNwZWN0ZWRPYmplY3RX
cmFwcGVycyBvZiB0aGUgc2FtZSBub2RlIHdyYXBwZWQKLSAgICAvLyB3aXRoIGRpZmZlcmVudCBn
bG9iYWwgRXhlY1N0YXRlcywgd2UgdXNlIGlzU2FtZU5vZGUgdG8gY29tcGFyZSB0aGVtLgotICAg
IGlmIChhID09PSBiKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBpZiAoIWEgfHwgIWIpCi0g
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoYS5pc1NhbWVOb2RlICYmIGIuaXNTYW1lTm9k
ZSkKLSAgICAgICAgcmV0dXJuIGEuaXNTYW1lTm9kZShiKTsKLSAgICByZXR1cm4gZmFsc2U7Ci19
Ci0KIGZ1bmN0aW9uIGlzQW5jZXN0b3JOb2RlKGFuY2VzdG9yKQogewogICAgIGlmICghdGhpcyB8
fCAhYW5jZXN0b3IpCkBAIC01NTIsNyArNTM3LDcgQEAgZnVuY3Rpb24gaXNBbmNlc3Rvck5vZGUo
YW5jZXN0b3IpCiAKICAgICB2YXIgY3VycmVudE5vZGUgPSBhbmNlc3Rvci5wYXJlbnROb2RlOwog
ICAgIHdoaWxlIChjdXJyZW50Tm9kZSkgewotICAgICAgICBpZiAob2JqZWN0c0FyZVNhbWUodGhp
cywgY3VycmVudE5vZGUpKQorICAgICAgICBpZiAodGhpcyA9PT0gY3VycmVudE5vZGUpCiAgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgY3VycmVudE5vZGUgPSBjdXJyZW50Tm9kZS5w
YXJlbnROb2RlOwogICAgIH0KQEAgLTU3MywxMyArNTU4LDEzIEBAIGZ1bmN0aW9uIGZpcnN0Q29t
bW9uTm9kZUFuY2VzdG9yKG5vZGUpCiAgICAgdmFyIG5vZGUxID0gdGhpcy5wYXJlbnROb2RlOwog
ICAgIHZhciBub2RlMiA9IG5vZGUucGFyZW50Tm9kZTsKIAotICAgIGlmICgoIW5vZGUxIHx8ICFu
b2RlMikgfHwgIW9iamVjdHNBcmVTYW1lKG5vZGUxLCBub2RlMikpCisgICAgaWYgKCghbm9kZTEg
fHwgIW5vZGUyKSB8fCBub2RlMSAhPT0gbm9kZTIpCiAgICAgICAgIHJldHVybiBudWxsOwogCiAg
ICAgd2hpbGUgKG5vZGUxICYmIG5vZGUyKSB7CiAgICAgICAgIGlmICghbm9kZTEucGFyZW50Tm9k
ZSB8fCAhbm9kZTIucGFyZW50Tm9kZSkKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBpZiAo
IW9iamVjdHNBcmVTYW1lKG5vZGUxLCBub2RlMikpCisgICAgICAgIGlmIChub2RlMSAhPT0gbm9k
ZTIpCiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBub2RlMSA9IG5vZGUxLnBhcmVudE5v
ZGU7CkBAIC02MzgsNyArNjIzLDcgQEAgZnVuY3Rpb24gdHJhdmVyc2VOZXh0Tm9kZShza2lwV2hp
dGVzcGFjZSwgc3RheVdpdGhpbikKICAgICBpZiAobm9kZSkKICAgICAgICAgcmV0dXJuIG5vZGU7
CiAKLSAgICBpZiAoc3RheVdpdGhpbiAmJiBvYmplY3RzQXJlU2FtZSh0aGlzLCBzdGF5V2l0aGlu
KSkKKyAgICBpZiAoc3RheVdpdGhpbiAmJiB0aGlzID09PSBzdGF5V2l0aGluKQogICAgICAgICBy
ZXR1cm4gbnVsbDsKIAogICAgIG5vZGUgPSBza2lwV2hpdGVzcGFjZSA/IG5leHRTaWJsaW5nU2tp
cHBpbmdXaGl0ZXNwYWNlLmNhbGwodGhpcykgOiB0aGlzLm5leHRTaWJsaW5nOwpAQCAtNjQ2LDcg
KzYzMSw3IEBAIGZ1bmN0aW9uIHRyYXZlcnNlTmV4dE5vZGUoc2tpcFdoaXRlc3BhY2UsIHN0YXlX
aXRoaW4pCiAgICAgICAgIHJldHVybiBub2RlOwogCiAgICAgbm9kZSA9IHRoaXM7Ci0gICAgd2hp
bGUgKG5vZGUgJiYgIShza2lwV2hpdGVzcGFjZSA/IG5leHRTaWJsaW5nU2tpcHBpbmdXaGl0ZXNw
YWNlLmNhbGwobm9kZSkgOiBub2RlLm5leHRTaWJsaW5nKSAmJiAoIXN0YXlXaXRoaW4gfHwgIW5v
ZGUucGFyZW50Tm9kZSB8fCAhb2JqZWN0c0FyZVNhbWUobm9kZS5wYXJlbnROb2RlLCBzdGF5V2l0
aGluKSkpCisgICAgd2hpbGUgKG5vZGUgJiYgIShza2lwV2hpdGVzcGFjZSA/IG5leHRTaWJsaW5n
U2tpcHBpbmdXaGl0ZXNwYWNlLmNhbGwobm9kZSkgOiBub2RlLm5leHRTaWJsaW5nKSAmJiAoIXN0
YXlXaXRoaW4gfHwgIW5vZGUucGFyZW50Tm9kZSB8fCBub2RlLnBhcmVudE5vZGUgIT09IHN0YXlX
aXRoaW4pKQogICAgICAgICBub2RlID0gbm9kZS5wYXJlbnROb2RlOwogICAgIGlmICghbm9kZSkK
ICAgICAgICAgcmV0dXJuIG51bGw7CkBAIC02NTgsNyArNjQzLDcgQEAgZnVuY3Rpb24gdHJhdmVy
c2VQcmV2aW91c05vZGUoc2tpcFdoaXRlc3BhY2UsIHN0YXlXaXRoaW4pCiB7CiAgICAgaWYgKCF0
aGlzKQogICAgICAgICByZXR1cm47Ci0gICAgaWYgKHN0YXlXaXRoaW4gJiYgb2JqZWN0c0FyZVNh
bWUodGhpcywgc3RheVdpdGhpbikpCisgICAgaWYgKHN0YXlXaXRoaW4gJiYgdGhpcyA9PT0gc3Rh
eVdpdGhpbikKICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgdmFyIG5vZGUgPSBza2lwV2hpdGVz
cGFjZSA/IHByZXZpb3VzU2libGluZ1NraXBwaW5nV2hpdGVzcGFjZS5jYWxsKHRoaXMpIDogdGhp
cy5wcmV2aW91c1NpYmxpbmc7CiAgICAgd2hpbGUgKG5vZGUgJiYgKHNraXBXaGl0ZXNwYWNlID8g
bGFzdENoaWxkU2tpcHBpbmdXaGl0ZXNwYWNlLmNhbGwobm9kZSkgOiBub2RlLmxhc3RDaGlsZCkg
KQpAQCAtNzY4LDEwICs3NTMsMTAgQEAgZnVuY3Rpb24gcGFyZW50Tm9kZU9yRnJhbWVFbGVtZW50
KG5vZGUpIHsKIH0KIAogZnVuY3Rpb24gaXNBbmNlc3RvckluY2x1ZGluZ1BhcmVudEZyYW1lcyhh
LCBiKSB7Ci0gICAgaWYgKG9iamVjdHNBcmVTYW1lKGEsIGIpKQorICAgIGlmIChhID09PSBiKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgZm9yICh2YXIgbm9kZSA9IGI7IG5vZGU7IG5vZGUg
PSBnZXREb2N1bWVudEZvck5vZGUobm9kZSkuZGVmYXVsdFZpZXcuZnJhbWVFbGVtZW50KQotICAg
ICAgICBpZiAob2JqZWN0c0FyZVNhbWUoYSwgbm9kZSkgfHwgaXNBbmNlc3Rvck5vZGUuY2FsbChh
LCBub2RlKSkKKyAgICAgICAgaWYgKGEgPT09IG5vZGUgfHwgaXNBbmNlc3Rvck5vZGUuY2FsbChh
LCBub2RlKSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgIHJldHVybiBmYWxzZTsKIH0K
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcCBiL1dlYkNvcmUvbG9h
ZGVyL0ZyYW1lTG9hZGVyLmNwcAppbmRleCA1NzNjN2IxLi43OGZkMTM0IDEwMDY0NAotLS0gYS9X
ZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKKysrIGIvV2ViQ29yZS9sb2FkZXIvRnJhbWVM
b2FkZXIuY3BwCkBAIC01MDc0LDggKzUwNzQsNiBAQCB2b2lkIEZyYW1lTG9hZGVyOjpkaXNwYXRj
aFdpbmRvd09iamVjdEF2YWlsYWJsZSgpCiAgICAgbV9jbGllbnQtPndpbmRvd09iamVjdENsZWFy
ZWQoKTsKIAogICAgIGlmIChQYWdlKiBwYWdlID0gbV9mcmFtZS0+cGFnZSgpKSB7Ci0gICAgICAg
IGlmIChJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3IgPSBwYWdlLT5pbnNwZWN0b3JDb250
cm9sbGVyKCkpCi0gICAgICAgICAgICBpbnNwZWN0b3ItPmluc3BlY3RlZFdpbmRvd1NjcmlwdE9i
amVjdENsZWFyZWQobV9mcmFtZSk7CiAgICAgICAgIGlmIChJbnNwZWN0b3JDb250cm9sbGVyKiBp
bnNwZWN0b3IgPSBwYWdlLT5wYXJlbnRJbnNwZWN0b3JDb250cm9sbGVyKCkpCiAgICAgICAgICAg
ICBpbnNwZWN0b3ItPndpbmRvd1NjcmlwdE9iamVjdEF2YWlsYWJsZSgpOwogICAgIH0KZGlmZiAt
LWdpdCBhL1dlYkNvcmUvcGFnZS9hbmRyb2lkL0luc3BlY3RvckNvbnRyb2xsZXJBbmRyb2lkLmNw
cCBiL1dlYkNvcmUvcGFnZS9hbmRyb2lkL0luc3BlY3RvckNvbnRyb2xsZXJBbmRyb2lkLmNwcApp
bmRleCA5NzhiYzI1Li4zYmE2NGU5IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvYW5kcm9pZC9J
bnNwZWN0b3JDb250cm9sbGVyQW5kcm9pZC5jcHAKKysrIGIvV2ViQ29yZS9wYWdlL2FuZHJvaWQv
SW5zcGVjdG9yQ29udHJvbGxlckFuZHJvaWQuY3BwCkBAIC05MCw3ICs5MCw2IEBAIHZvaWQgSW5z
cGVjdG9yQ29udHJvbGxlcjo6YWRkUHJvZmlsZShQYXNzUmVmUHRyPEpTQzo6UHJvZmlsZT4sIHVu
c2lnbmVkIGludCwgY29uCiB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6Omluc3BlY3RlZFBhZ2VE
ZXN0cm95ZWQoKSB7fQogdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpyZXNvdXJjZVJldHJpZXZl
ZEJ5WE1MSHR0cFJlcXVlc3QodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBKU0M6OlVTdHJpbmcm
IHNvdXJjZVN0cmluZykge30KIAotdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjppbnNwZWN0ZWRX
aW5kb3dTY3JpcHRPYmplY3RDbGVhcmVkKEZyYW1lKiBmcmFtZSkge30KIHZvaWQgSW5zcGVjdG9y
Q29udHJvbGxlcjo6c3RhcnRHcm91cChNZXNzYWdlU291cmNlIHNvdXJjZSwgSlNDOjpFeGVjU3Rh
dGUqIGV4ZWMsIGNvbnN0IEpTQzo6QXJnTGlzdCYgYXJndW1lbnRzLCB1bnNpZ25lZCBsaW5lTnVt
YmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCkge30KIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxl
cjo6ZW5kR3JvdXAoTWVzc2FnZVNvdXJjZSBzb3VyY2UsIHVuc2lnbmVkIGxpbmVOdW1iZXIsIGNv
bnN0IFN0cmluZyYgc291cmNlVVJMKSB7fQogdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpzdGFy
dFRpbWluZyhjb25zdCBKU0M6OlVTdHJpbmcmIHRpdGxlKSB7fQo=
</data>
<flag name="review"
          id="19107"
          type_id="1"
          status="+"
          setter="timothy"
    />
          </attachment>
      

    </bug>

</bugzilla>