<?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>55664</bug_id>
          
          <creation_ts>2011-03-03 05:03:06 -0800</creation_ts>
          <short_desc>Web Inspector: do not push document into front-end, make it request one.</short_desc>
          <delta_ts>2011-03-04 03:18:38 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Pavel Feldman">pfeldman</reporter>
          <assigned_to name="Nobody">webkit-unassigned</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>361525</commentid>
    <comment_count>0</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-03-03 05:03:06 -0800</bug_when>
    <thetext>Patch to follow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>361662</commentid>
    <comment_count>1</comment_count>
      <attachid>84570</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-03-03 09:09:25 -0800</bug_when>
    <thetext>Created attachment 84570
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>361692</commentid>
    <comment_count>2</comment_count>
      <attachid>84577</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-03-03 09:41:58 -0800</bug_when>
    <thetext>Created attachment 84577
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>362312</commentid>
    <comment_count>3</comment_count>
      <attachid>84700</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-03-03 23:39:55 -0800</bug_when>
    <thetext>Created attachment 84700
[PATCH] Patch for landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>362367</commentid>
    <comment_count>4</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-03-04 01:42:05 -0800</bug_when>
    <thetext>Committing to http://svn.webkit.org/repository/webkit/trunk ...
	M	LayoutTests/ChangeLog
	M	LayoutTests/http/tests/inspector/debugger-test.js
	M	LayoutTests/http/tests/inspector/elements-test.js
	M	LayoutTests/inspector/console/command-line-api-inspect.html
	M	LayoutTests/inspector/elements/dom-agent-query-selector.html
	M	LayoutTests/inspector/elements/mutate-unknown-node.html
	M	LayoutTests/inspector/styles/styles-new-API.html
	M	Source/WebCore/ChangeLog
	M	Source/WebCore/inspector/Inspector.idl
	M	Source/WebCore/inspector/InspectorAgent.cpp
	M	Source/WebCore/inspector/InspectorAgent.h
	M	Source/WebCore/inspector/InspectorBrowserDebuggerAgent.cpp
	M	Source/WebCore/inspector/InspectorDOMAgent.cpp
	M	Source/WebCore/inspector/InspectorDOMAgent.h
	M	Source/WebCore/inspector/front-end/BreakpointManager.js
	M	Source/WebCore/inspector/front-end/DOMAgent.js
	M	Source/WebCore/inspector/front-end/ElementsPanel.js
	M	Source/WebCore/inspector/front-end/MetricsSidebarPane.js
	M	Source/WebCore/inspector/front-end/RemoteObject.js
Committed r80338</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>362398</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-03-04 03:18:38 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/80338 might have broken GTK Linux 64-bit Debug
The following tests are not passing:
fast/dom/HTMLDocument/hasFocus.html
fast/events/standalone-image-drag-to-editable.html
fast/files/apply-blob-url-to-img.html
inspector/timeline/timeline-network-resource.html</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>84570</attachid>
            <date>2011-03-03 09:09:25 -0800</date>
            <delta_ts>2011-03-03 09:41:52 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-55664-20110303200922.patch</filename>
            <type>text/plain</type>
            <size>24166</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODAyNDEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAxMmQ5Y2Q2YjMxODFiMTY5
YmU4MjU2Zjc2OWE0MDk1MmRhMjk4N2JjLi4xZGM5NGZiNjRkODBiNmUwMmNlNTA5OTUwZDRiYTdl
ZjFhMzM5OTA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzkgQEAKKzIwMTEtMDMtMDMgIFBhdmVs
IEZlbGRtYW4gIDxwZmVsZG1hbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogZG8gbm90IHB1c2ggZG9j
dW1lbnQgaW50byBmcm9udC1lbmQsIG1ha2UgaXQgcmVxdWVzdCBvbmUuCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NTY2NAorCisgICAgICAgICogaW5z
cGVjdG9yL0luc3BlY3Rvci5pZGw6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckFnZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckFnZW50OjpJbnNwZWN0b3JBZ2VudCk6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JBZ2VudDo6cmVzdG9yZUluc3BlY3RvclN0YXRl
RnJvbUNvb2tpZSk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckFnZW50Lmg6CisgICAg
ICAgICogaW5zcGVjdG9yL0luc3BlY3RvckJyb3dzZXJEZWJ1Z2dlckFnZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvckJyb3dzZXJEZWJ1Z2dlckFnZW50OjpkZXNjcmlwdGlvbkZv
ckRPTUV2ZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6Okluc3BlY3RvckRPTUFnZW50KToK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpyZXN0b3JlKToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpzZXREb2N1bWVudCk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JET01BZ2VudDo6Z2V0RG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yRE9NQWdlbnQ6OnB1c2hOb2RlUGF0aFRvRnJvbnRlbmQpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmJvdW5kTm9kZUlkKToKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvckRPTUFnZW50OjpyZXNvbHZlTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JET01BZ2VudDo6bWFpbkZyYW1lRE9NQ29udGVudExvYWRlZCk6CisgICAgICAgICogaW5z
cGVjdG9yL0luc3BlY3RvckRPTUFnZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JE
T01BZ2VudDo6Y3JlYXRlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0JyZWFrcG9p
bnRNYW5hZ2VyLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRPTUJyZWFrcG9pbnRWaWV3LnBy
b3RvdHlwZS5wb3B1bGF0ZVN0YXR1c01lc3NhZ2VFbGVtZW50LmRlY29yYXRlTm9kZSk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuRE9NQnJlYWtwb2ludFZpZXcucHJvdG90eXBlLnBvcHVsYXRlU3Rh
dHVzTWVzc2FnZUVsZW1lbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvRE9NQWdl
bnQuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRE9NQWdlbnQucHJvdG90eXBlLnJlcXVlc3RE
b2N1bWVudCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRE9NQWdlbnQucHJvdG90eXBlLl9kb2N1
bWVudFVwZGF0ZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRPTUFnZW50LnByb3RvdHlwZS5f
c2V0Q2hpbGROb2Rlcyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRE9NRGlzcGF0Y2hlci5wcm90
b3R5cGUuZG9jdW1lbnRVcGRhdGVkKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0Vs
ZW1lbnRzUGFuZWwuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRWxlbWVudHNQYW5lbC5wcm90
b3R5cGUuc2hvdyk6CisKIDIwMTEtMDMtMDMgIFl1cnkgU2VtaWtoYXRza3kgIDx5dXJ5c0BjaHJv
bWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgUGF2ZWwgRmVsZG1hbi4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuaWRsIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3Rvci5pZGwKaW5kZXggMDNmMWE4MzU2ZDU5ODdiMmExZjc0YzYy
MzA5MDMxMTVkYzM1NGI2YS4uYzQ3Y2JlMDQwZjBhYWY0MDBjMjQ0ZWQ5MTI5ZTE2MmE4M2Q5NGYx
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5pZGwKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5pZGwKQEAgLTE0NCw2ICsxNDQs
NyBAQCBtb2R1bGUgY29yZSB7CiAjZW5kaWYKIAogICAgIGludGVyZmFjZSBbQ29uZGl0aW9uYWw9
SU5TUEVDVE9SXSBET00geworICAgICAgICB2b2lkIGdldERvY3VtZW50KG91dCBPYmplY3Qgcm9v
dCk7CiAgICAgICAgIHZvaWQgZ2V0Q2hpbGROb2RlcyhpbiBsb25nIG5vZGVJZCk7CiAgICAgICAg
IHZvaWQgcXVlcnlTZWxlY3RvcihpbiBsb25nIG5vZGVJZCwgaW4gU3RyaW5nIHNlbGVjdG9ycywg
aW4gYm9vbGVhbiBkb2N1bWVudFdpZGUsIG91dCBsb25nIGVsZW1lbnRJZCk7CiAgICAgICAgIHZv
aWQgcXVlcnlTZWxlY3RvckFsbChpbiBsb25nIG5vZGVJZCwgaW4gU3RyaW5nIHNlbGVjdG9ycywg
aW4gYm9vbGVhbiBkb2N1bWVudFdpZGUsIG91dCBBcnJheSByZXN1bHQpOwpAQCAtMTY0LDEwICsx
NjUsMTAgQEAgbW9kdWxlIGNvcmUgewogICAgICAgICB2b2lkIHB1c2hOb2RlVG9Gcm9udGVuZChp
biBPYmplY3Qgb2JqZWN0SWQsIG91dCBsb25nIG5vZGVJZCk7CiAKICAgICAgICAgW2V2ZW50XSB2
b2lkIGFkZE5vZGVzVG9TZWFyY2hSZXN1bHQob3V0IEFycmF5IG5vZGVJZHMpOwotICAgICAgICBb
ZXZlbnRdIHZvaWQgc2V0RG9jdW1lbnQob3V0IFZhbHVlIHJvb3QpOyAvLyBGSVhNRTogc2hvdWxk
IGJlIHJlcXVlc3RlZCBmcm9tIHRoZSBmcm9udC1lbmQgYXMgZ2V0RG9jdW1lbnQuCisgICAgICAg
IFtldmVudF0gdm9pZCBkb2N1bWVudFVwZGF0ZWQoKTsKKyAgICAgICAgW2V2ZW50XSB2b2lkIHNl
dENoaWxkTm9kZXMob3V0IGxvbmcgcGFyZW50SWQsIG91dCBBcnJheSBub2Rlcyk7CiAgICAgICAg
IFtldmVudF0gdm9pZCBhdHRyaWJ1dGVzVXBkYXRlZChvdXQgbG9uZyBpZCwgb3V0IEFycmF5IGF0
dHJpYnV0ZXMpOwogICAgICAgICBbZXZlbnRdIHZvaWQgY2hhcmFjdGVyRGF0YU1vZGlmaWVkKG91
dCBsb25nIGlkLCBvdXQgU3RyaW5nIG5ld1ZhbHVlKTsKLSAgICAgICAgW2V2ZW50XSB2b2lkIHNl
dENoaWxkTm9kZXMob3V0IGxvbmcgcGFyZW50SWQsIG91dCBBcnJheSBub2Rlcyk7CiAgICAgICAg
IFtldmVudF0gdm9pZCBzZXREZXRhY2hlZFJvb3Qob3V0IE9iamVjdCByb290KTsKICAgICAgICAg
W2V2ZW50XSB2b2lkIGNoaWxkTm9kZUNvdW50VXBkYXRlZChvdXQgbG9uZyBpZCwgb3V0IGludCBu
ZXdWYWx1ZSk7CiAgICAgICAgIFtldmVudF0gdm9pZCBjaGlsZE5vZGVJbnNlcnRlZChvdXQgbG9u
ZyBwYXJlbnRJZCwgb3V0IGxvbmcgcHJldklkLCBvdXQgT2JqZWN0IG5vZGUpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBZ2VudC5jcHAKaW5kZXggN2JjNDJkNDAwY2RkMTk3
Yjg0YjJiMDE1N2QyN2M4YzUwMTIyOWRlZi4uYjU2YWI4ZTRkNjVjY2Q0NTRlM2VhZjFmYWUxMmIy
NWVlMDJmNGE0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnQu
Y3BwCkBAIC0xMzgsNyArMTM4LDggQEAgSW5zcGVjdG9yQWdlbnQ6Okluc3BlY3RvckFnZW50KFBh
Z2UqIHBhZ2UsIEluc3BlY3RvckNsaWVudCogY2xpZW50KQogICAgICwgbV9mcm9udGVuZCgwKQog
ICAgICwgbV9pbnN0cnVtZW50aW5nQWdlbnRzKG5ldyBJbnN0cnVtZW50aW5nQWdlbnRzKCkpCiAg
ICAgLCBtX2luamVjdGVkU2NyaXB0SG9zdChJbmplY3RlZFNjcmlwdEhvc3Q6OmNyZWF0ZSh0aGlz
KSkKLSAgICAsIG1fZG9tQWdlbnQoSW5zcGVjdG9yRE9NQWdlbnQ6OmNyZWF0ZShtX2luc3RydW1l
bnRpbmdBZ2VudHMuZ2V0KCksIG1faW5qZWN0ZWRTY3JpcHRIb3N0LmdldCgpKSkKKyAgICAsIG1f
c3RhdGUobmV3IEluc3BlY3RvclN0YXRlKGNsaWVudCkpCisgICAgLCBtX2RvbUFnZW50KEluc3Bl
Y3RvckRPTUFnZW50OjpjcmVhdGUobV9pbnN0cnVtZW50aW5nQWdlbnRzLmdldCgpLCBtX3N0YXRl
LmdldCgpLCBtX2luamVjdGVkU2NyaXB0SG9zdC5nZXQoKSkpCiAgICAgLCBtX2Nzc0FnZW50KG5l
dyBJbnNwZWN0b3JDU1NBZ2VudChtX2RvbUFnZW50LmdldCgpKSkKICNpZiBFTkFCTEUoREFUQUJB
U0UpCiAgICAgLCBtX2RhdGFiYXNlQWdlbnQoSW5zcGVjdG9yRGF0YWJhc2VBZ2VudDo6Y3JlYXRl
KG1faW5zdHJ1bWVudGluZ0FnZW50cy5nZXQoKSkpCkBAIC0xNDYsNyArMTQ3LDYgQEAgSW5zcGVj
dG9yQWdlbnQ6Okluc3BlY3RvckFnZW50KFBhZ2UqIHBhZ2UsIEluc3BlY3RvckNsaWVudCogY2xp
ZW50KQogI2lmIEVOQUJMRShET01fU1RPUkFHRSkKICAgICAsIG1fZG9tU3RvcmFnZUFnZW50KElu
c3BlY3RvckRPTVN0b3JhZ2VBZ2VudDo6Y3JlYXRlKG1faW5zdHJ1bWVudGluZ0FnZW50cy5nZXQo
KSkpCiAjZW5kaWYKLSAgICAsIG1fc3RhdGUobmV3IEluc3BlY3RvclN0YXRlKGNsaWVudCkpCiAg
ICAgLCBtX3RpbWVsaW5lQWdlbnQoSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6Y3JlYXRlKG1faW5z
dHJ1bWVudGluZ0FnZW50cy5nZXQoKSwgbV9zdGF0ZS5nZXQoKSkpCiAgICAgLCBtX3Jlc291cmNl
QWdlbnQoSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6Y3JlYXRlKG1faW5zdHJ1bWVudGluZ0FnZW50
cy5nZXQoKSwgcGFnZSwgbV9zdGF0ZS5nZXQoKSkpCiAgICAgLCBtX2NvbnNvbGVBZ2VudChuZXcg
SW5zcGVjdG9yQ29uc29sZUFnZW50KG1faW5zdHJ1bWVudGluZ0FnZW50cy5nZXQoKSwgdGhpcywg
bV9zdGF0ZS5nZXQoKSwgbV9pbmplY3RlZFNjcmlwdEhvc3QuZ2V0KCksIG1fZG9tQWdlbnQuZ2V0
KCkpKQpAQCAtMjEwLDYgKzIxMCw3IEBAIHZvaWQgSW5zcGVjdG9yQWdlbnQ6OnJlc3RvcmVJbnNw
ZWN0b3JTdGF0ZUZyb21Db29raWUoY29uc3QgU3RyaW5nJiBpbnNwZWN0b3JTdGF0CiAKICAgICBt
X3Jlc291cmNlQWdlbnQtPnJlc3RvcmUoKTsKICAgICBtX3RpbWVsaW5lQWdlbnQtPnJlc3RvcmUo
KTsKKyAgICBtX2RvbUFnZW50LT5yZXN0b3JlKCk7CiAKICNpZiBFTkFCTEUoSkFWQVNDUklQVF9E
RUJVR0dFUikKICAgICBtX2RlYnVnZ2VyQWdlbnQtPnJlc3RvcmUoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckFnZW50LmgKaW5kZXggNmQ5NWQ0ODhmZTIwODg5ZjZjODFjMzZi
NmIwYjViODI0MWRhZTkzMS4uN2NmOGNjYmVkY2Y3ZjUyMDhkMmJiNTljY2NjMmFkOWMzZmRkMWUw
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50LmgKQEAgLTI0NSw2
ICsyNDUsNyBAQCBwcml2YXRlOgogICAgIEluc3BlY3RvckZyb250ZW5kKiBtX2Zyb250ZW5kOwog
ICAgIE93blB0cjxJbnN0cnVtZW50aW5nQWdlbnRzPiBtX2luc3RydW1lbnRpbmdBZ2VudHM7CiAg
ICAgUmVmUHRyPEluamVjdGVkU2NyaXB0SG9zdD4gbV9pbmplY3RlZFNjcmlwdEhvc3Q7CisgICAg
T3duUHRyPEluc3BlY3RvclN0YXRlPiBtX3N0YXRlOwogICAgIE93blB0cjxJbnNwZWN0b3JET01B
Z2VudD4gbV9kb21BZ2VudDsKICAgICBPd25QdHI8SW5zcGVjdG9yQ1NTQWdlbnQ+IG1fY3NzQWdl
bnQ7CiAKQEAgLTI1Niw3ICsyNTcsNiBAQCBwcml2YXRlOgogICAgIE93blB0cjxJbnNwZWN0b3JE
T01TdG9yYWdlQWdlbnQ+IG1fZG9tU3RvcmFnZUFnZW50OwogI2VuZGlmCiAKLSAgICBPd25QdHI8
SW5zcGVjdG9yU3RhdGU+IG1fc3RhdGU7CiAgICAgT3duUHRyPEluc3BlY3RvclRpbWVsaW5lQWdl
bnQ+IG1fdGltZWxpbmVBZ2VudDsKIAogI2lmIEVOQUJMRShPRkZMSU5FX1dFQl9BUFBMSUNBVElP
TlMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQnJvd3Nl
ckRlYnVnZ2VyQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJy
b3dzZXJEZWJ1Z2dlckFnZW50LmNwcAppbmRleCAyZDVmZDQ2Y2JjNjYwMzkxMDVlZjY0ZjMyZTMw
YTRlNmIxZjg2YjlkLi4wY2JhNzc1MGMyOGY2NmU5NjYzZjg5ZTJhNmNkZTUzYzkxZDVlMGYyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQnJvd3NlckRlYnVn
Z2VyQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCcm93
c2VyRGVidWdnZXJBZ2VudC5jcHAKQEAgLTMwMSw5ICszMDEsOCBAQCB2b2lkIEluc3BlY3RvckJy
b3dzZXJEZWJ1Z2dlckFnZW50OjpkZXNjcmlwdGlvbkZvckRPTUV2ZW50KE5vZGUqIHRhcmdldCwg
bG9uZyBicgogICAgIGlmICgoMSA8PCBicmVha3BvaW50VHlwZSkgJiBpbmhlcml0YWJsZURPTUJy
ZWFrcG9pbnRUeXBlc01hc2spIHsKICAgICAgICAgLy8gRm9yIGluaGVyaXRhYmxlIGJyZWFrcG9p
bnQgdHlwZXMsIHRhcmdldCBub2RlIGlzbid0IGFsd2F5cyB0aGUgc2FtZSBhcyB0aGUgbm9kZSB0
aGF0IG93bnMgYSBicmVha3BvaW50LgogICAgICAgICAvLyBUYXJnZXQgbm9kZSBtYXkgYmUgdW5r
bm93biB0byBmcm9udGVuZCwgc28gd2UgbmVlZCB0byBwdXNoIGl0IGZpcnN0LgotICAgICAgICBs
b25nIHRhcmdldE5vZGVJZCA9IG1fZG9tQWdlbnQtPnB1c2hOb2RlUGF0aFRvRnJvbnRlbmQodGFy
Z2V0KTsKLSAgICAgICAgQVNTRVJUKHRhcmdldE5vZGVJZCk7Ci0gICAgICAgIGRlc2NyaXB0aW9u
LT5zZXROdW1iZXIoInRhcmdldE5vZGVJZCIsIHRhcmdldE5vZGVJZCk7CisgICAgICAgIFJlZlB0
cjxJbnNwZWN0b3JPYmplY3Q+IHRhcmdldE5vZGVPYmplY3QgPSBtX2RvbUFnZW50LT5yZXNvbHZl
Tm9kZSh0YXJnZXQsICIiKTsKKyAgICAgICAgZGVzY3JpcHRpb24tPnNldE9iamVjdCgidGFyZ2V0
Tm9kZSIsIHRhcmdldE5vZGVPYmplY3QpOwogCiAgICAgICAgIC8vIEZpbmQgYnJlYWtwb2ludCBv
d25lciBub2RlLgogICAgICAgICBpZiAoIWluc2VydGlvbikKQEAgLTMxOCw3ICszMTcsNyBAQCB2
b2lkIEluc3BlY3RvckJyb3dzZXJEZWJ1Z2dlckFnZW50OjpkZXNjcmlwdGlvbkZvckRPTUV2ZW50
KE5vZGUqIHRhcmdldCwgbG9uZyBicgogICAgICAgICAgICAgZGVzY3JpcHRpb24tPnNldEJvb2xl
YW4oImluc2VydGlvbiIsIGluc2VydGlvbik7CiAgICAgfQogCi0gICAgbG9uZyBicmVha3BvaW50
T3duZXJOb2RlSWQgPSBtX2RvbUFnZW50LT5wdXNoTm9kZVBhdGhUb0Zyb250ZW5kKGJyZWFrcG9p
bnRPd25lcik7CisgICAgbG9uZyBicmVha3BvaW50T3duZXJOb2RlSWQgPSBtX2RvbUFnZW50LT5i
b3VuZE5vZGVJZChicmVha3BvaW50T3duZXIpOwogICAgIEFTU0VSVChicmVha3BvaW50T3duZXJO
b2RlSWQpOwogICAgIGRlc2NyaXB0aW9uLT5zZXROdW1iZXIoIm5vZGVJZCIsIGJyZWFrcG9pbnRP
d25lck5vZGVJZCk7CiAgICAgZGVzY3JpcHRpb24tPnNldE51bWJlcigidHlwZSIsIGJyZWFrcG9p
bnRUeXBlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JE
T01BZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQu
Y3BwCmluZGV4IDUyMmE0MGRjNGJhNDI2NjAzZGU4OGFiODFkZmFhNmY3YTcyY2NhYzcuLjY2YzQ1
MDkwN2VkMzFmMjg0NWE3MWZlMmY5ZWYyZmY5ODc1Y2ZlYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcApAQCAtNjEsNiArNjEsNyBAQAogI2lu
Y2x1ZGUgIkhUTUxGcmFtZU93bmVyRWxlbWVudC5oIgogI2luY2x1ZGUgIkluamVjdGVkU2NyaXB0
SG9zdC5oIgogI2luY2x1ZGUgIkluc3BlY3RvckZyb250ZW5kLmgiCisjaW5jbHVkZSAiSW5zcGVj
dG9yU3RhdGUuaCIKICNpbmNsdWRlICJJbnN0cnVtZW50aW5nQWdlbnRzLmgiCiAjaW5jbHVkZSAi
TXV0YXRpb25FdmVudC5oIgogI2luY2x1ZGUgIk5vZGUuaCIKQEAgLTg5LDYgKzkwLDEwIEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorbmFtZXNwYWNlIERPTUFnZW50U3RhdGUgeworc3RhdGlj
IGNvbnN0IGNoYXIgZG9jdW1lbnRSZXF1ZXN0ZWRbXSA9ICJkb2N1bWVudFJlcXVlc3RlZCI7Cit9
OworCiBjbGFzcyBNYXRjaEpvYiB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIG1hdGNoKExp
c3RIYXNoU2V0PE5vZGUqPiYgcmVzdWx0Q29sbGVjdG9yKSA9IDA7CkBAIC0yNDMsOCArMjQ4LDkg
QEAgdm9pZCBSZXZhbGlkYXRlU3R5bGVBdHRyaWJ1dGVUYXNrOjpvblRpbWVyKFRpbWVyPFJldmFs
aWRhdGVTdHlsZUF0dHJpYnV0ZVRhc2s+KikKICAgICBtX2VsZW1lbnRzLmNsZWFyKCk7CiB9CiAK
LUluc3BlY3RvckRPTUFnZW50OjpJbnNwZWN0b3JET01BZ2VudChJbnN0cnVtZW50aW5nQWdlbnRz
KiBpbnN0cnVtZW50aW5nQWdlbnRzLCBJbmplY3RlZFNjcmlwdEhvc3QqIGluamVjdGVkU2NyaXB0
SG9zdCkKK0luc3BlY3RvckRPTUFnZW50OjpJbnNwZWN0b3JET01BZ2VudChJbnN0cnVtZW50aW5n
QWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBJbnNwZWN0b3JTdGF0ZSogaW5zcGVjdG9yU3Rh
dGUsIEluamVjdGVkU2NyaXB0SG9zdCogaW5qZWN0ZWRTY3JpcHRIb3N0KQogICAgIDogbV9pbnN0
cnVtZW50aW5nQWdlbnRzKGluc3RydW1lbnRpbmdBZ2VudHMpCisgICAgLCBtX2luc3BlY3RvclN0
YXRlKGluc3BlY3RvclN0YXRlKQogICAgICwgbV9pbmplY3RlZFNjcmlwdEhvc3QoaW5qZWN0ZWRT
Y3JpcHRIb3N0KQogICAgICwgbV9mcm9udGVuZCgwKQogICAgICwgbV9kb21MaXN0ZW5lcigwKQpA
QCAtMjk1LDYgKzMwMSwxMiBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpyZXNldCgpCiAgICAg
bV9kb2N1bWVudCA9IDA7CiB9CiAKK3ZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OnJlc3RvcmUoKQor
eworICAgIGlmIChtX2luc3BlY3RvclN0YXRlLT5nZXRCb29sZWFuKERPTUFnZW50U3RhdGU6OmRv
Y3VtZW50UmVxdWVzdGVkKSkKKyAgICAgICAgbV9mcm9udGVuZC0+ZG9jdW1lbnRVcGRhdGVkKCk7
Cit9CisKIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OnNldERPTUxpc3RlbmVyKERPTUxpc3RlbmVy
KiBsaXN0ZW5lcikKIHsKICAgICBtX2RvbUxpc3RlbmVyID0gbGlzdGVuZXI7CkBAIC0zMDksMTEg
KzMyMSwxMyBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpzZXREb2N1bWVudChEb2N1bWVudCog
ZG9jKQogCiAgICAgbV9kb2N1bWVudCA9IGRvYzsKIAotICAgIGlmIChkb2MpIHsKLSAgICAgICAg
aWYgKGRvYy0+ZG9jdW1lbnRFbGVtZW50KCkpCi0gICAgICAgICAgICBwdXNoRG9jdW1lbnRUb0Zy
b250ZW5kKCk7Ci0gICAgfSBlbHNlCi0gICAgICAgIG1fZnJvbnRlbmQtPnNldERvY3VtZW50KElu
c3BlY3RvclZhbHVlOjpudWxsKCkpOworICAgIGlmIChtX2luc3BlY3RvclN0YXRlLT5nZXRCb29s
ZWFuKERPTUFnZW50U3RhdGU6OmRvY3VtZW50UmVxdWVzdGVkKSkgeworICAgICAgICBpZiAoZG9j
KSB7CisgICAgICAgICAgICBpZiAoZG9jLT5kb2N1bWVudEVsZW1lbnQoKSkKKyAgICAgICAgICAg
ICAgICBtX2Zyb250ZW5kLT5kb2N1bWVudFVwZGF0ZWQoKTsKKyAgICAgICAgfSBlbHNlCisgICAg
ICAgICAgICBtX2Zyb250ZW5kLT5kb2N1bWVudFVwZGF0ZWQoKTsKKyAgICB9CiB9CiAKIHZvaWQg
SW5zcGVjdG9yRE9NQWdlbnQ6OnJlbGVhc2VEYW5nbGluZ05vZGVzKCkKQEAgLTM3NCwxMyArMzg4
LDIwIEBAIE5vZGUqIEluc3BlY3RvckRPTUFnZW50Ojpub2RlVG9TZWxlY3RPbihsb25nIG5vZGVJ
ZCwgYm9vbCBkb2N1bWVudFdpZGUpCiAgICAgcmV0dXJuIG5vZGU7CiB9CiAKLWJvb2wgSW5zcGVj
dG9yRE9NQWdlbnQ6OnB1c2hEb2N1bWVudFRvRnJvbnRlbmQoKQordm9pZCBJbnNwZWN0b3JET01B
Z2VudDo6Z2V0RG9jdW1lbnQoRXJyb3JTdHJpbmcqLCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0Piog
cm9vdCkKIHsKKyAgICBtX2luc3BlY3RvclN0YXRlLT5zZXRCb29sZWFuKERPTUFnZW50U3RhdGU6
OmRvY3VtZW50UmVxdWVzdGVkLCB0cnVlKTsKKwogICAgIGlmICghbV9kb2N1bWVudCkKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm47CisKKyAgICAvLyBSZXNldCBiYWNrZW5k
IHN0YXRlLgorICAgIFJlZlB0cjxEb2N1bWVudD4gZG9jID0gbV9kb2N1bWVudDsKKyAgICByZXNl
dCgpOworICAgIG1fZG9jdW1lbnQgPSBkb2M7CisKICAgICBpZiAoIW1fZG9jdW1lbnROb2RlVG9J
ZE1hcC5jb250YWlucyhtX2RvY3VtZW50KSkKLSAgICAgICAgbV9mcm9udGVuZC0+c2V0RG9jdW1l
bnQoYnVpbGRPYmplY3RGb3JOb2RlKG1fZG9jdW1lbnQuZ2V0KCksIDIsICZtX2RvY3VtZW50Tm9k
ZVRvSWRNYXApKTsKLSAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgKnJvb3QgPSBidWlsZE9iamVj
dEZvck5vZGUobV9kb2N1bWVudC5nZXQoKSwgMiwgJm1fZG9jdW1lbnROb2RlVG9JZE1hcCk7CiB9
CiAKIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OnB1c2hDaGlsZE5vZGVzVG9Gcm9udGVuZChsb25n
IG5vZGVJZCkKQEAgLTQ1Nyw4ICs0NzgsOSBAQCBsb25nIEluc3BlY3RvckRPTUFnZW50OjpwdXNo
Tm9kZVBhdGhUb0Zyb250ZW5kKE5vZGUqIG5vZGVUb1B1c2gpCiB7CiAgICAgQVNTRVJUKG5vZGVU
b1B1c2gpOyAgLy8gSW52YWxpZCBpbnB1dAogCi0gICAgLy8gSWYgd2UgYXJlIHNlbmRpbmcgaW5m
b3JtYXRpb24gdG8gdGhlIGNsaWVudCB0aGF0IGlzIGN1cnJlbnRseSBiZWluZyBjcmVhdGVkLiBT
ZW5kIHJvb3Qgbm9kZSBmaXJzdC4KLSAgICBpZiAoIXB1c2hEb2N1bWVudFRvRnJvbnRlbmQoKSkK
KyAgICBpZiAoIW1fZG9jdW1lbnQpCisgICAgICAgIHJldHVybiAwOworICAgIGlmICghbV9kb2N1
bWVudE5vZGVUb0lkTWFwLmNvbnRhaW5zKG1fZG9jdW1lbnQpKQogICAgICAgICByZXR1cm4gMDsK
IAogICAgIC8vIFJldHVybiBpZCBpbiBjYXNlIHRoZSBub2RlIGlzIGtub3duLgpAQCAtNDY5LDEz
ICs0OTEsMTYgQEAgbG9uZyBJbnNwZWN0b3JET01BZ2VudDo6cHVzaE5vZGVQYXRoVG9Gcm9udGVu
ZChOb2RlKiBub2RlVG9QdXNoKQogICAgIE5vZGUqIG5vZGUgPSBub2RlVG9QdXNoOwogICAgIFZl
Y3RvcjxOb2RlKj4gcGF0aDsKICAgICBOb2RlVG9JZE1hcCogZGFuZ2xpbmdNYXAgPSAwOworCiAg
ICAgd2hpbGUgKHRydWUpIHsKICAgICAgICAgTm9kZSogcGFyZW50ID0gaW5uZXJQYXJlbnROb2Rl
KG5vZGUpOwogICAgICAgICBpZiAoIXBhcmVudCkgewogICAgICAgICAgICAgLy8gTm9kZSBiZWlu
ZyBwdXNoZWQgaXMgZGV0YWNoZWQgLT4gcHVzaCBzdWJ0cmVlIHJvb3QuCiAgICAgICAgICAgICBk
YW5nbGluZ01hcCA9IG5ldyBOb2RlVG9JZE1hcCgpOwogICAgICAgICAgICAgbV9kYW5nbGluZ05v
ZGVUb0lkTWFwcy5hcHBlbmQoZGFuZ2xpbmdNYXApOwotICAgICAgICAgICAgbV9mcm9udGVuZC0+
c2V0RGV0YWNoZWRSb290KGJ1aWxkT2JqZWN0Rm9yTm9kZShub2RlLCAwLCBkYW5nbGluZ01hcCkp
OworICAgICAgICAgICAgUmVmUHRyPEluc3BlY3RvckFycmF5PiBjaGlsZHJlbiA9IEluc3BlY3Rv
ckFycmF5OjpjcmVhdGUoKTsKKyAgICAgICAgICAgIGNoaWxkcmVuLT5wdXNoT2JqZWN0KGJ1aWxk
T2JqZWN0Rm9yTm9kZShub2RlLCAwLCBkYW5nbGluZ01hcCkpOworICAgICAgICAgICAgbV9mcm9u
dGVuZC0+c2V0Q2hpbGROb2RlcygwLCBjaGlsZHJlbik7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIHBhdGguYXBwZW5kKHBhcmVudCk7CkBAIC00OTUs
NiArNTIwLDExIEBAIGxvbmcgSW5zcGVjdG9yRE9NQWdlbnQ6OnB1c2hOb2RlUGF0aFRvRnJvbnRl
bmQoTm9kZSogbm9kZVRvUHVzaCkKICAgICByZXR1cm4gbWFwLT5nZXQobm9kZVRvUHVzaCk7CiB9
CiAKK2xvbmcgSW5zcGVjdG9yRE9NQWdlbnQ6OmJvdW5kTm9kZUlkKE5vZGUqIG5vZGUpCit7Cisg
ICAgcmV0dXJuIG1fZG9jdW1lbnROb2RlVG9JZE1hcC5nZXQobm9kZSk7Cit9CisKIHZvaWQgSW5z
cGVjdG9yRE9NQWdlbnQ6OnNldEF0dHJpYnV0ZShFcnJvclN0cmluZyosIGxvbmcgZWxlbWVudElk
LCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUsIGJvb2wqIHN1Y2Nlc3Mp
CiB7CiAgICAgTm9kZSogbm9kZSA9IG5vZGVGb3JJZChlbGVtZW50SWQpOwpAQCAtODAyLDkgKzgz
MiwxMSBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpzZWFyY2hDYW5jZWxlZChFcnJvclN0cmlu
ZyopCiB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpyZXNvbHZlTm9kZShFcnJvclN0cmluZyogZXJy
b3IsIGxvbmcgbm9kZUlkLCBjb25zdCBTdHJpbmcmIG9iamVjdEdyb3VwLCBSZWZQdHI8SW5zcGVj
dG9yVmFsdWU+KiByZXN1bHQpCiB7CiAgICAgTm9kZSogbm9kZSA9IG5vZGVGb3JJZChub2RlSWQp
OwotICAgIEluamVjdGVkU2NyaXB0IGluamVjdGVkU2NyaXB0ID0gaW5qZWN0ZWRTY3JpcHRGb3JO
b2RlKGVycm9yLCBub2RlKTsKLSAgICBpZiAoZXJyb3ItPmlzRW1wdHkoKSkKLSAgICAgICAgKnJl
c3VsdCA9IGluamVjdGVkU2NyaXB0LndyYXBOb2RlKG5vZGUsIG9iamVjdEdyb3VwKTsKKyAgICBp
ZiAoIW5vZGUpIHsKKyAgICAgICAgKmVycm9yID0gIk5vIG5vZGUgd2l0aCBnaXZlbiBpZCBmb3Vu
ZC4iOworICAgICAgICByZXR1cm47CisgICAgfQorICAgICpyZXN1bHQgPSByZXNvbHZlTm9kZShu
b2RlLCBvYmplY3RHcm91cCk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OnB1c2hOb2Rl
VG9Gcm9udGVuZChFcnJvclN0cmluZyosIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBvYmpl
Y3RJZCwgbG9uZyogbm9kZUlkKQpAQCAtMTAwNCw3ICsxMDM2LDggQEAgdm9pZCBJbnNwZWN0b3JE
T01BZ2VudDo6bWFpbkZyYW1lRE9NQ29udGVudExvYWRlZCgpCiB7CiAgICAgLy8gUmUtcHVzaCBk
b2N1bWVudCBvbmNlIGl0IGlzIGxvYWRlZC4KICAgICBkaXNjYXJkQmluZGluZ3MoKTsKLSAgICBw
dXNoRG9jdW1lbnRUb0Zyb250ZW5kKCk7CisgICAgaWYgKG1faW5zcGVjdG9yU3RhdGUtPmdldEJv
b2xlYW4oRE9NQWdlbnRTdGF0ZTo6ZG9jdW1lbnRSZXF1ZXN0ZWQpKQorICAgICAgICBtX2Zyb250
ZW5kLT5kb2N1bWVudFVwZGF0ZWQoKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6bG9h
ZEV2ZW50RmlyZWQoRG9jdW1lbnQqIGRvY3VtZW50KQpAQCAtMTE5OSwyMyArMTIzMiwxOCBAQCB2
b2lkIEluc3BlY3RvckRPTUFnZW50OjpwdXNoTm9kZUJ5UGF0aFRvRnJvbnRlbmQoRXJyb3JTdHJp
bmcqLCBjb25zdCBTdHJpbmcmIHBhdAogICAgICAgICAqbm9kZUlkID0gcHVzaE5vZGVQYXRoVG9G
cm9udGVuZChub2RlKTsKIH0KIAotSW5qZWN0ZWRTY3JpcHQgSW5zcGVjdG9yRE9NQWdlbnQ6Omlu
amVjdGVkU2NyaXB0Rm9yTm9kZShFcnJvclN0cmluZyogZXJyb3IsIE5vZGUqIG5vZGUpCitQYXNz
UmVmUHRyPEluc3BlY3Rvck9iamVjdD4gSW5zcGVjdG9yRE9NQWdlbnQ6OnJlc29sdmVOb2RlKE5v
ZGUqIG5vZGUsIGNvbnN0IFN0cmluZyYgb2JqZWN0R3JvdXApCiB7Ci0gICAgaWYgKCFub2RlKSB7
Ci0gICAgICAgICplcnJvciA9ICJObyBub2RlIHdpdGggZ2l2ZW4gaWQgZm91bmQuIjsKLSAgICAg
ICAgcmV0dXJuIEluamVjdGVkU2NyaXB0KCk7Ci0gICAgfQotCiAgICAgRG9jdW1lbnQqIGRvY3Vt
ZW50ID0gbm9kZS0+b3duZXJEb2N1bWVudCgpOwotICAgIEZyYW1lKiBmcmFtZSA9IGRvY3VtZW50
LT5mcmFtZSgpOworICAgIEZyYW1lKiBmcmFtZSA9IGRvY3VtZW50ID8gZG9jdW1lbnQtPmZyYW1l
KCkgOiAwOworICAgIGlmICghZnJhbWUpCisgICAgICAgIHJldHVybiAwOwogCiAgICAgSW5qZWN0
ZWRTY3JpcHQgaW5qZWN0ZWRTY3JpcHQgPSBtX2luamVjdGVkU2NyaXB0SG9zdC0+aW5qZWN0ZWRT
Y3JpcHRGb3IobWFpbldvcmxkU2NyaXB0U3RhdGUoZnJhbWUpKTsKLSAgICBpZiAoaW5qZWN0ZWRT
Y3JpcHQuaGFzTm9WYWx1ZSgpKSB7Ci0gICAgICAgICplcnJvciA9ICJObyBKYXZhU2NyaXB0IHdv
cmxkIGZvdW5kIGZvciBub2RlIHdpdGggZ2l2ZW4gaWQuIjsKLSAgICAgICAgcmV0dXJuIEluamVj
dGVkU2NyaXB0KCk7Ci0gICAgfQorICAgIGlmIChpbmplY3RlZFNjcmlwdC5oYXNOb1ZhbHVlKCkp
CisgICAgICAgIHJldHVybiAwOwogCi0gICAgcmV0dXJuIGluamVjdGVkU2NyaXB0OworICAgIHJl
dHVybiBpbmplY3RlZFNjcmlwdC53cmFwTm9kZShub2RlLCBvYmplY3RHcm91cCk7CiB9CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JET01BZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckRPTUFnZW50LmgKaW5kZXggMDM3MmNlNzIyNDA2Mzc1YmYxOGIzMjhkNzY0ZGNmN2FhNTU2YjZj
MC4uYTM4OGY3YzJmNGZkNjdkZWYwZGIxZWNmZGY1MzdkMTk1ZGViMDc0NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmgKQEAgLTU1LDYgKzU1LDcgQEAg
Y2xhc3MgRXZlbnQ7CiBjbGFzcyBJbnNwZWN0b3JET01BZ2VudDsKIGNsYXNzIEluc3BlY3RvckZy
b250ZW5kOwogY2xhc3MgTWF0Y2hKb2I7CitjbGFzcyBJbnNwZWN0b3JTdGF0ZTsKIGNsYXNzIElu
c3RydW1lbnRpbmdBZ2VudHM7CiBjbGFzcyBOYW1lTm9kZU1hcDsKIGNsYXNzIE5vZGU7CkBAIC05
MCw5ICs5MSw5IEBAIHB1YmxpYzoKICAgICAgICAgdmlydHVhbCB2b2lkIGRpZE1vZGlmeURPTUF0
dHIoRWxlbWVudCopID0gMDsKICAgICB9OwogCi0gICAgc3RhdGljIFBhc3NPd25QdHI8SW5zcGVj
dG9yRE9NQWdlbnQ+IGNyZWF0ZShJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdl
bnRzLCBJbmplY3RlZFNjcmlwdEhvc3QqIGluamVjdGVkU2NyaXB0SG9zdCkKKyAgICBzdGF0aWMg
UGFzc093blB0cjxJbnNwZWN0b3JET01BZ2VudD4gY3JlYXRlKEluc3RydW1lbnRpbmdBZ2VudHMq
IGluc3RydW1lbnRpbmdBZ2VudHMsIEluc3BlY3RvclN0YXRlKiBpbnNwZWN0b3JTdGF0ZSwgSW5q
ZWN0ZWRTY3JpcHRIb3N0KiBpbmplY3RlZFNjcmlwdEhvc3QpCiAgICAgewotICAgICAgICByZXR1
cm4gYWRvcHRQdHIobmV3IEluc3BlY3RvckRPTUFnZW50KGluc3RydW1lbnRpbmdBZ2VudHMsIGlu
amVjdGVkU2NyaXB0SG9zdCkpOworICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IEluc3BlY3Rv
ckRPTUFnZW50KGluc3RydW1lbnRpbmdBZ2VudHMsIGluc3BlY3RvclN0YXRlLCBpbmplY3RlZFNj
cmlwdEhvc3QpKTsKICAgICB9CiAKICAgICB+SW5zcGVjdG9yRE9NQWdlbnQoKTsKQEAgLTEwMSwx
MSArMTAyLDEzIEBAIHB1YmxpYzoKICAgICB2b2lkIGNsZWFyRnJvbnRlbmQoKTsKIAogICAgIFZl
Y3RvcjxEb2N1bWVudCo+IGRvY3VtZW50cygpOworICAgIHZvaWQgcmVzdG9yZSgpOwogICAgIHZv
aWQgcmVzZXQoKTsKIAorICAgIC8vIE1ldGhvZHMgY2FsbGVkIGZyb20gdGhlIGZyb250ZW5kIGZv
ciBET00gbm9kZXMgaW5zcGVjdGlvbi4KICAgICB2b2lkIHF1ZXJ5U2VsZWN0b3IoRXJyb3JTdHJp
bmcqLCBsb25nIG5vZGVJZCwgY29uc3QgU3RyaW5nJiBzZWxlY3RvcnMsIGJvb2wgZG9jdW1lbnRX
aWRlLCBsb25nKiBlbGVtZW50SWQpOwogICAgIHZvaWQgcXVlcnlTZWxlY3RvckFsbChFcnJvclN0
cmluZyosIGxvbmcgbm9kZUlkLCBjb25zdCBTdHJpbmcmIHNlbGVjdG9ycywgYm9vbCBkb2N1bWVu
dFdpZGUsIFJlZlB0cjxJbnNwZWN0b3JBcnJheT4qIHJlc3VsdCk7Ci0gICAgLy8gTWV0aG9kcyBj
YWxsZWQgZnJvbSB0aGUgZnJvbnRlbmQgZm9yIERPTSBub2RlcyBpbnNwZWN0aW9uLgorICAgIHZv
aWQgZ2V0RG9jdW1lbnQoRXJyb3JTdHJpbmcqLCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0Piogcm9v
dCk7CiAgICAgdm9pZCBnZXRDaGlsZE5vZGVzKEVycm9yU3RyaW5nKiwgbG9uZyBub2RlSWQpOwog
ICAgIHZvaWQgc2V0QXR0cmlidXRlKEVycm9yU3RyaW5nKiwgbG9uZyBlbGVtZW50SWQsIGNvbnN0
IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSwgYm9vbCogc3VjY2Vzcyk7CiAgICAg
dm9pZCByZW1vdmVBdHRyaWJ1dGUoRXJyb3JTdHJpbmcqLCBsb25nIGVsZW1lbnRJZCwgY29uc3Qg
U3RyaW5nJiBuYW1lLCBib29sKiBzdWNjZXNzKTsKQEAgLTEyMCw2ICsxMjMsNyBAQCBwdWJsaWM6
CiAgICAgdm9pZCBzZWFyY2hDYW5jZWxlZChFcnJvclN0cmluZyopOwogICAgIHZvaWQgcmVzb2x2
ZU5vZGUoRXJyb3JTdHJpbmcqLCBsb25nIG5vZGVJZCwgY29uc3QgU3RyaW5nJiBvYmplY3RHcm91
cCwgUmVmUHRyPEluc3BlY3RvclZhbHVlPiogcmVzdWx0KTsKICAgICB2b2lkIHB1c2hOb2RlVG9G
cm9udGVuZChFcnJvclN0cmluZyosIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBvYmplY3RJ
ZCwgbG9uZyogbm9kZUlkKTsKKyAgICB2b2lkIHB1c2hOb2RlQnlQYXRoVG9Gcm9udGVuZChFcnJv
clN0cmluZyosIGNvbnN0IFN0cmluZyYgcGF0aCwgbG9uZyogbm9kZUlkKTsKIAogICAgIC8vIE1l
dGhvZHMgY2FsbGVkIGZyb20gdGhlIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbi4KICAgICB2b2lk
IHNldERvY3VtZW50KERvY3VtZW50Kik7CkBAIC0xMzUsMTQgKzEzOSwxNCBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBkaWRJbnZhbGlkYXRlU3R5bGVBdHRyKE5vZGUqKTsKIAogICAgIE5vZGUqIG5vZGVG
b3JJZChsb25nIG5vZGVJZCk7Ci0gICAgbG9uZyBwdXNoTm9kZVBhdGhUb0Zyb250ZW5kKE5vZGUq
KTsKLSAgICB2b2lkIHB1c2hDaGlsZE5vZGVzVG9Gcm9udGVuZChsb25nIG5vZGVJZCk7Ci0gICAg
dm9pZCBwdXNoTm9kZUJ5UGF0aFRvRnJvbnRlbmQoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcm
IHBhdGgsIGxvbmcqIG5vZGVJZCk7CisgICAgbG9uZyBib3VuZE5vZGVJZChOb2RlKik7CiAgICAg
dm9pZCBjb3B5Tm9kZShFcnJvclN0cmluZyosIGxvbmcgbm9kZUlkKTsKICAgICB2b2lkIHNldERP
TUxpc3RlbmVyKERPTUxpc3RlbmVyKik7CiAKICAgICBTdHJpbmcgZG9jdW1lbnRVUkxTdHJpbmco
RG9jdW1lbnQqKSBjb25zdDsKIAorICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiByZXNv
bHZlTm9kZShOb2RlKiwgY29uc3QgU3RyaW5nJiBvYmplY3RHcm91cCk7CisKICAgICAvLyBXZSBy
ZXByZXNlbnQgZW1iZWRkZWQgZG9tcyBhcyBhIHBhcnQgb2YgdGhlIHNhbWUgaGllcmFyY2h5LiBI
ZW5jZSB3ZSB0cmVhdCBjaGlsZHJlbiBvZiBmcmFtZSBvd25lcnMgZGlmZmVyZW50bHkuCiAgICAg
Ly8gV2UgYWxzbyBza2lwIHdoaXRlc3BhY2UgdGV4dCBub2RlcyBjb25kaXRpb25hbGx5LiBGb2xs
b3dpbmcgbWV0aG9kcyBlbmNhcHN1bGF0ZSB0aGVzZSBzcGVjaWZpY3MuCiAgICAgc3RhdGljIE5v
ZGUqIGlubmVyRmlyc3RDaGlsZChOb2RlKik7CkBAIC0xNTMsNyArMTU3LDcgQEAgcHVibGljOgog
ICAgIHN0YXRpYyBib29sIGlzV2hpdGVzcGFjZShOb2RlKik7CiAKIHByaXZhdGU6Ci0gICAgSW5z
cGVjdG9yRE9NQWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyosIEluamVjdGVkU2NyaXB0SG9zdCop
OworICAgIEluc3BlY3RvckRPTUFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMqLCBJbnNwZWN0b3JT
dGF0ZSosIEluamVjdGVkU2NyaXB0SG9zdCopOwogCiAgICAgLy8gTm9kZS1yZWxhdGVkIG1ldGhv
ZHMuCiAgICAgdHlwZWRlZiBIYXNoTWFwPFJlZlB0cjxOb2RlPiwgbG9uZz4gTm9kZVRvSWRNYXA7
CkBAIC0xNjIsNyArMTY2LDggQEAgcHJpdmF0ZToKIAogICAgIE5vZGUqIG5vZGVUb1NlbGVjdE9u
KGxvbmcgbm9kZUlkLCBib29sIGRvY3VtZW50V2lkZSk7CiAKLSAgICBib29sIHB1c2hEb2N1bWVu
dFRvRnJvbnRlbmQoKTsKKyAgICBsb25nIHB1c2hOb2RlUGF0aFRvRnJvbnRlbmQoTm9kZSopOwor
ICAgIHZvaWQgcHVzaENoaWxkTm9kZXNUb0Zyb250ZW5kKGxvbmcgbm9kZUlkKTsKIAogICAgIGJv
b2wgaGFzQnJlYWtwb2ludChOb2RlKiwgbG9uZyB0eXBlKTsKICAgICB2b2lkIHVwZGF0ZVN1YnRy
ZWVCcmVha3BvaW50cyhOb2RlKiByb290LCB1aW50MzJfdCByb290TWFzaywgYm9vbCB2YWx1ZSk7
CkBAIC0xODEsOSArMTg2LDggQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgZGlzY2FyZEJpbmRpbmdz
KCk7CiAKLSAgICBJbmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlwdEZvck5vZGUoRXJyb3JTdHJp
bmcqLCBOb2RlKik7Ci0KICAgICBJbnN0cnVtZW50aW5nQWdlbnRzKiBtX2luc3RydW1lbnRpbmdB
Z2VudHM7CisgICAgSW5zcGVjdG9yU3RhdGUqIG1faW5zcGVjdG9yU3RhdGU7CiAgICAgSW5qZWN0
ZWRTY3JpcHRIb3N0KiBtX2luamVjdGVkU2NyaXB0SG9zdDsKICAgICBJbnNwZWN0b3JGcm9udGVu
ZDo6RE9NKiBtX2Zyb250ZW5kOwogICAgIERPTUxpc3RlbmVyKiBtX2RvbUxpc3RlbmVyOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9CcmVha3BvaW50TWFu
YWdlci5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQnJlYWtwb2ludE1h
bmFnZXIuanMKaW5kZXggMzI1NzE2YTcyZjNiZWNkYjhlM2IwZDY1ZDM3MmY4Nzk3YjczZTAxNS4u
OGE3ODk1MzBiOGQ4NzNiYzg4NDZiN2I4NGRkNmY1YTVhMTMyNmI4OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9CcmVha3BvaW50TWFuYWdlci5qcworKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0JyZWFrcG9pbnRNYW5hZ2VyLmpz
CkBAIC00OTAsMTQgKzQ5MCwyMiBAQCBXZWJJbnNwZWN0b3IuRE9NQnJlYWtwb2ludFZpZXcucHJv
dG90eXBlID0gewogICAgICAgICAgICAgZWxlbWVudC5hcHBlbmRDaGlsZChiKTsKICAgICAgICAg
fQogICAgICAgICBpZiAodGhpcy5fdHlwZSA9PT0gV2ViSW5zcGVjdG9yLkRPTUJyZWFrcG9pbnRU
eXBlcy5TdWJ0cmVlTW9kaWZpZWQpIHsKLSAgICAgICAgICAgIHZhciB0YXJnZXROb2RlID0gV2Vi
SW5zcGVjdG9yLnBhbmVscy5lbGVtZW50cy5saW5raWZ5Tm9kZUJ5SWQoZXZlbnREYXRhLnRhcmdl
dE5vZGVJZCk7Ci0gICAgICAgICAgICBpZiAoZXZlbnREYXRhLmluc2VydGlvbikgewotICAgICAg
ICAgICAgICAgIGlmIChldmVudERhdGEudGFyZ2V0Tm9kZUlkICE9PSB0aGlzLl9ub2RlSWQpCi0g
ICAgICAgICAgICAgICAgICAgIFdlYkluc3BlY3Rvci5mb3JtYXRMb2NhbGl6ZWQoIlBhdXNlZCBv
biBhIFwiJXNcIiBicmVha3BvaW50IHNldCBvbiAlcywgYmVjYXVzZSBhIG5ldyBjaGlsZCB3YXMg
YWRkZWQgdG8gaXRzIGRlc2NlbmRhbnQgJXMuIiwgc3Vic3RpdHV0aW9ucy5jb25jYXQodGFyZ2V0
Tm9kZSksIGZvcm1hdHRlcnMsICIiLCBhcHBlbmQpOwotICAgICAgICAgICAgICAgIGVsc2UKLSAg
ICAgICAgICAgICAgICAgICAgV2ViSW5zcGVjdG9yLmZvcm1hdExvY2FsaXplZCgiUGF1c2VkIG9u
IGEgXCIlc1wiIGJyZWFrcG9pbnQgc2V0IG9uICVzLCBiZWNhdXNlIGEgbmV3IGNoaWxkIHdhcyBh
ZGRlZCB0byB0aGF0IG5vZGUuIiwgc3Vic3RpdHV0aW9ucywgZm9ybWF0dGVycywgIiIsIGFwcGVu
ZCk7Ci0gICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICBXZWJJbnNwZWN0b3IuZm9y
bWF0TG9jYWxpemVkKCJQYXVzZWQgb24gYSBcIiVzXCIgYnJlYWtwb2ludCBzZXQgb24gJXMsIGJl
Y2F1c2UgaXRzIGRlc2NlbmRhbnQgJXMgd2FzIHJlbW92ZWQuIiwgc3Vic3RpdHV0aW9ucy5jb25j
YXQodGFyZ2V0Tm9kZSksIGZvcm1hdHRlcnMsICIiLCBhcHBlbmQpOworICAgICAgICAgICAgRE9N
QWdlbnQucHVzaE5vZGVUb0Zyb250ZW5kKGV2ZW50RGF0YS50YXJnZXROb2RlLCBkZWNvcmF0ZU5v
ZGUpOworICAgICAgICAgICAgZnVuY3Rpb24gZGVjb3JhdGVOb2RlKHRhcmdldE5vZGVJZCkKKyAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBpZiAoIXRhcmdldE5vZGVJZCkKKyAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICAgICAgUnVudGltZUFnZW50LnJlbGVh
c2VPYmplY3QoZXZlbnREYXRhLnRhcmdldE5vZGUpOworICAgICAgICAgICAgICAgIHZhciB0YXJn
ZXROb2RlID0gV2ViSW5zcGVjdG9yLmRvbUFnZW50Lm5vZGVGb3JJZCh0YXJnZXROb2RlSWQpOwor
ICAgICAgICAgICAgICAgIGlmIChldmVudERhdGEuaW5zZXJ0aW9uKSB7CisgICAgICAgICAgICAg
ICAgICAgIGlmICh0YXJnZXROb2RlSWQgIT09IHRoaXMuX25vZGVJZCkKKyAgICAgICAgICAgICAg
ICAgICAgICAgIFdlYkluc3BlY3Rvci5mb3JtYXRMb2NhbGl6ZWQoIlBhdXNlZCBvbiBhIFwiJXNc
IiBicmVha3BvaW50IHNldCBvbiAlcywgYmVjYXVzZSBhIG5ldyBjaGlsZCB3YXMgYWRkZWQgdG8g
aXRzIGRlc2NlbmRhbnQgJXMuIiwgc3Vic3RpdHV0aW9ucy5jb25jYXQodGFyZ2V0Tm9kZSksIGZv
cm1hdHRlcnMsICIiLCBhcHBlbmQpOworICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAg
ICAgICAgICAgICAgICAgICBXZWJJbnNwZWN0b3IuZm9ybWF0TG9jYWxpemVkKCJQYXVzZWQgb24g
YSBcIiVzXCIgYnJlYWtwb2ludCBzZXQgb24gJXMsIGJlY2F1c2UgYSBuZXcgY2hpbGQgd2FzIGFk
ZGVkIHRvIHRoYXQgbm9kZS4iLCBzdWJzdGl0dXRpb25zLCBmb3JtYXR0ZXJzLCAiIiwgYXBwZW5k
KTsKKyAgICAgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICAgICAgV2ViSW5zcGVj
dG9yLmZvcm1hdExvY2FsaXplZCgiUGF1c2VkIG9uIGEgXCIlc1wiIGJyZWFrcG9pbnQgc2V0IG9u
ICVzLCBiZWNhdXNlIGl0cyBkZXNjZW5kYW50ICVzIHdhcyByZW1vdmVkLiIsIHN1YnN0aXR1dGlv
bnMuY29uY2F0KHRhcmdldE5vZGUpLCBmb3JtYXR0ZXJzLCAiIiwgYXBwZW5kKTsKKyAgICAgICAg
ICAgIH0KICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBXZWJJbnNwZWN0b3IuZm9ybWF0TG9j
YWxpemVkKCJQYXVzZWQgb24gYSBcIiVzXCIgYnJlYWtwb2ludCBzZXQgb24gJXMuIiwgc3Vic3Rp
dHV0aW9ucywgZm9ybWF0dGVycywgIiIsIGFwcGVuZCk7CiAgICAgfSwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRE9NQWdlbnQuanMgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RPTUFnZW50LmpzCmluZGV4IDA5ZDJmNWZiZjQ4MzE2
OTc2ODA5OTU2ZmUwMmRlZjQ1MTYyMGRlMjguLjUzODhkZDY4NjhlNjkwNGFmNGQyZDI1MzM2NjZh
MjQxMzg5ZTM5YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvRE9NQWdlbnQuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9E
T01BZ2VudC5qcwpAQCAtMzA5LDYgKzMwOSwxMSBAQCBXZWJJbnNwZWN0b3IuRE9NQWdlbnQucHJv
dG90eXBlID0gewogICAgICAgICByZXR1cm4gdGhpcy5fd2luZG93OwogICAgIH0sCiAKKyAgICBy
ZXF1ZXN0RG9jdW1lbnQ6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHRoaXMuX2RvY3VtZW50
VXBkYXRlZCgpOworICAgIH0sCisKICAgICBnZXRDaGlsZE5vZGVzQXN5bmM6IGZ1bmN0aW9uKHBh
cmVudCwgY2FsbGJhY2spCiAgICAgewogICAgICAgICB2YXIgY2hpbGRyZW4gPSBwYXJlbnQuY2hp
bGRyZW47CkBAIC0zNzMsNiArMzc4LDExIEBAIFdlYkluc3BlY3Rvci5ET01BZ2VudC5wcm90b3R5
cGUgPSB7CiAgICAgICAgIHJldHVybiB0aGlzLl9pZFRvRE9NTm9kZVtub2RlSWRdOwogICAgIH0s
CiAKKyAgICBfZG9jdW1lbnRVcGRhdGVkOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICBET01B
Z2VudC5nZXREb2N1bWVudCh0aGlzLl9zZXREb2N1bWVudC5iaW5kKHRoaXMpKTsKKyAgICB9LAor
CiAgICAgX3NldERvY3VtZW50OiBmdW5jdGlvbihwYXlsb2FkKQogICAgIHsKICAgICAgICAgdGhp
cy5faWRUb0RPTU5vZGUgPSB7fTsKQEAgLTM5NCw2ICs0MDQsMTEgQEAgV2ViSW5zcGVjdG9yLkRP
TUFnZW50LnByb3RvdHlwZSA9IHsKIAogICAgIF9zZXRDaGlsZE5vZGVzOiBmdW5jdGlvbihwYXJl
bnRJZCwgcGF5bG9hZHMpCiAgICAgeworICAgICAgICBpZiAoIXBhcmVudElkICYmIHBheWxvYWRz
Lmxlbmd0aCkgeworICAgICAgICAgICAgdGhpcy5fc2V0RGV0YWNoZWRSb290KHBheWxvYWRzWzBd
KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCiAgICAgICAgIHZhciBwYXJlbnQg
PSB0aGlzLl9pZFRvRE9NTm9kZVtwYXJlbnRJZF07CiAgICAgICAgIHBhcmVudC5fc2V0Q2hpbGRy
ZW5QYXlsb2FkKHBheWxvYWRzKTsKICAgICAgICAgdGhpcy5fYmluZE5vZGVzKHBhcmVudC5jaGls
ZHJlbik7CkBAIC00NTcsOSArNDcyLDkgQEAgV2ViSW5zcGVjdG9yLkRPTURpc3BhdGNoZXIgPSBm
dW5jdGlvbihkb21BZ2VudCkKIH0KIAogV2ViSW5zcGVjdG9yLkRPTURpc3BhdGNoZXIucHJvdG90
eXBlID0gewotICAgIHNldERvY3VtZW50OiBmdW5jdGlvbihwYXlsb2FkKQorICAgIGRvY3VtZW50
VXBkYXRlZDogZnVuY3Rpb24oKQogICAgIHsKLSAgICAgICAgdGhpcy5fZG9tQWdlbnQuX3NldERv
Y3VtZW50KHBheWxvYWQpOworICAgICAgICB0aGlzLl9kb21BZ2VudC5fZG9jdW1lbnRVcGRhdGVk
KCk7CiAgICAgfSwKIAogICAgIGF0dHJpYnV0ZXNVcGRhdGVkOiBmdW5jdGlvbihub2RlSWQsIGF0
dHJzQXJyYXkpCkBAIC00NzcsMTEgKzQ5Miw2IEBAIFdlYkluc3BlY3Rvci5ET01EaXNwYXRjaGVy
LnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5fZG9tQWdlbnQuX3NldENoaWxkTm9kZXMocGFy
ZW50SWQsIHBheWxvYWRzKTsKICAgICB9LAogCi0gICAgc2V0RGV0YWNoZWRSb290OiBmdW5jdGlv
bihwYXlsb2FkKQotICAgIHsKLSAgICAgICAgdGhpcy5fZG9tQWdlbnQuX3NldERldGFjaGVkUm9v
dChwYXlsb2FkKTsKLSAgICB9LAotCiAgICAgY2hpbGROb2RlQ291bnRVcGRhdGVkOiBmdW5jdGlv
bihub2RlSWQsIG5ld1ZhbHVlKQogICAgIHsKICAgICAgICAgdGhpcy5fZG9tQWdlbnQuX2NoaWxk
Tm9kZUNvdW50VXBkYXRlZChub2RlSWQsIG5ld1ZhbHVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRWxlbWVudHNQYW5lbC5qcyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRWxlbWVudHNQYW5lbC5qcwppbmRleCA4MTM3MDE5ZTYz
M2MzOTBhNWFjNTUzNjNhZGZlMDMwOGYxNWYzODk1Li5lNzA0MjE4NWE4MDdjMWYyOTdjOWMxZmMx
MzE5ZGQ4ZTdiNjdlNTdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL0VsZW1lbnRzUGFuZWwuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9FbGVtZW50c1BhbmVsLmpzCkBAIC0xNDEsNiArMTQxLDkgQEAgV2ViSW5zcGVjdG9y
LkVsZW1lbnRzUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLnRyZWVPdXRsaW5lLnVw
ZGF0ZVNlbGVjdGlvbigpOwogICAgICAgICBpZiAodGhpcy5yZWNlbnRseU1vZGlmaWVkTm9kZXMu
bGVuZ3RoKQogICAgICAgICAgICAgdGhpcy51cGRhdGVNb2RpZmllZE5vZGVzKCk7CisKKyAgICAg
ICAgaWYgKCF0aGlzLnJvb3RET01Ob2RlKQorICAgICAgICAgICAgV2ViSW5zcGVjdG9yLmRvbUFn
ZW50LnJlcXVlc3REb2N1bWVudCgpOwogICAgIH0sCiAKICAgICBoaWRlOiBmdW5jdGlvbigpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>84577</attachid>
            <date>2011-03-03 09:41:58 -0800</date>
            <delta_ts>2011-03-03 23:39:50 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-55664-20110303204155.patch</filename>
            <type>text/plain</type>
            <size>25416</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODAyNDEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAxMmQ5Y2Q2YjMxODFiMTY5
YmU4MjU2Zjc2OWE0MDk1MmRhMjk4N2JjLi4xZGM5NGZiNjRkODBiNmUwMmNlNTA5OTUwZDRiYTdl
ZjFhMzM5OTA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzkgQEAKKzIwMTEtMDMtMDMgIFBhdmVs
IEZlbGRtYW4gIDxwZmVsZG1hbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogZG8gbm90IHB1c2ggZG9j
dW1lbnQgaW50byBmcm9udC1lbmQsIG1ha2UgaXQgcmVxdWVzdCBvbmUuCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NTY2NAorCisgICAgICAgICogaW5z
cGVjdG9yL0luc3BlY3Rvci5pZGw6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckFnZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckFnZW50OjpJbnNwZWN0b3JBZ2VudCk6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JBZ2VudDo6cmVzdG9yZUluc3BlY3RvclN0YXRl
RnJvbUNvb2tpZSk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckFnZW50Lmg6CisgICAg
ICAgICogaW5zcGVjdG9yL0luc3BlY3RvckJyb3dzZXJEZWJ1Z2dlckFnZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvckJyb3dzZXJEZWJ1Z2dlckFnZW50OjpkZXNjcmlwdGlvbkZv
ckRPTUV2ZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6Okluc3BlY3RvckRPTUFnZW50KToK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpyZXN0b3JlKToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpzZXREb2N1bWVudCk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JET01BZ2VudDo6Z2V0RG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yRE9NQWdlbnQ6OnB1c2hOb2RlUGF0aFRvRnJvbnRlbmQpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmJvdW5kTm9kZUlkKToKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvckRPTUFnZW50OjpyZXNvbHZlTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JET01BZ2VudDo6bWFpbkZyYW1lRE9NQ29udGVudExvYWRlZCk6CisgICAgICAgICogaW5z
cGVjdG9yL0luc3BlY3RvckRPTUFnZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JE
T01BZ2VudDo6Y3JlYXRlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0JyZWFrcG9p
bnRNYW5hZ2VyLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRPTUJyZWFrcG9pbnRWaWV3LnBy
b3RvdHlwZS5wb3B1bGF0ZVN0YXR1c01lc3NhZ2VFbGVtZW50LmRlY29yYXRlTm9kZSk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuRE9NQnJlYWtwb2ludFZpZXcucHJvdG90eXBlLnBvcHVsYXRlU3Rh
dHVzTWVzc2FnZUVsZW1lbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvRE9NQWdl
bnQuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRE9NQWdlbnQucHJvdG90eXBlLnJlcXVlc3RE
b2N1bWVudCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRE9NQWdlbnQucHJvdG90eXBlLl9kb2N1
bWVudFVwZGF0ZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRPTUFnZW50LnByb3RvdHlwZS5f
c2V0Q2hpbGROb2Rlcyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRE9NRGlzcGF0Y2hlci5wcm90
b3R5cGUuZG9jdW1lbnRVcGRhdGVkKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0Vs
ZW1lbnRzUGFuZWwuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRWxlbWVudHNQYW5lbC5wcm90
b3R5cGUuc2hvdyk6CisKIDIwMTEtMDMtMDMgIFl1cnkgU2VtaWtoYXRza3kgIDx5dXJ5c0BjaHJv
bWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgUGF2ZWwgRmVsZG1hbi4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuaWRsIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3Rvci5pZGwKaW5kZXggMDNmMWE4MzU2ZDU5ODdiMmExZjc0YzYy
MzA5MDMxMTVkYzM1NGI2YS4uYzQ3Y2JlMDQwZjBhYWY0MDBjMjQ0ZWQ5MTI5ZTE2MmE4M2Q5NGYx
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5pZGwKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5pZGwKQEAgLTE0NCw2ICsxNDQs
NyBAQCBtb2R1bGUgY29yZSB7CiAjZW5kaWYKIAogICAgIGludGVyZmFjZSBbQ29uZGl0aW9uYWw9
SU5TUEVDVE9SXSBET00geworICAgICAgICB2b2lkIGdldERvY3VtZW50KG91dCBPYmplY3Qgcm9v
dCk7CiAgICAgICAgIHZvaWQgZ2V0Q2hpbGROb2RlcyhpbiBsb25nIG5vZGVJZCk7CiAgICAgICAg
IHZvaWQgcXVlcnlTZWxlY3RvcihpbiBsb25nIG5vZGVJZCwgaW4gU3RyaW5nIHNlbGVjdG9ycywg
aW4gYm9vbGVhbiBkb2N1bWVudFdpZGUsIG91dCBsb25nIGVsZW1lbnRJZCk7CiAgICAgICAgIHZv
aWQgcXVlcnlTZWxlY3RvckFsbChpbiBsb25nIG5vZGVJZCwgaW4gU3RyaW5nIHNlbGVjdG9ycywg
aW4gYm9vbGVhbiBkb2N1bWVudFdpZGUsIG91dCBBcnJheSByZXN1bHQpOwpAQCAtMTY0LDEwICsx
NjUsMTAgQEAgbW9kdWxlIGNvcmUgewogICAgICAgICB2b2lkIHB1c2hOb2RlVG9Gcm9udGVuZChp
biBPYmplY3Qgb2JqZWN0SWQsIG91dCBsb25nIG5vZGVJZCk7CiAKICAgICAgICAgW2V2ZW50XSB2
b2lkIGFkZE5vZGVzVG9TZWFyY2hSZXN1bHQob3V0IEFycmF5IG5vZGVJZHMpOwotICAgICAgICBb
ZXZlbnRdIHZvaWQgc2V0RG9jdW1lbnQob3V0IFZhbHVlIHJvb3QpOyAvLyBGSVhNRTogc2hvdWxk
IGJlIHJlcXVlc3RlZCBmcm9tIHRoZSBmcm9udC1lbmQgYXMgZ2V0RG9jdW1lbnQuCisgICAgICAg
IFtldmVudF0gdm9pZCBkb2N1bWVudFVwZGF0ZWQoKTsKKyAgICAgICAgW2V2ZW50XSB2b2lkIHNl
dENoaWxkTm9kZXMob3V0IGxvbmcgcGFyZW50SWQsIG91dCBBcnJheSBub2Rlcyk7CiAgICAgICAg
IFtldmVudF0gdm9pZCBhdHRyaWJ1dGVzVXBkYXRlZChvdXQgbG9uZyBpZCwgb3V0IEFycmF5IGF0
dHJpYnV0ZXMpOwogICAgICAgICBbZXZlbnRdIHZvaWQgY2hhcmFjdGVyRGF0YU1vZGlmaWVkKG91
dCBsb25nIGlkLCBvdXQgU3RyaW5nIG5ld1ZhbHVlKTsKLSAgICAgICAgW2V2ZW50XSB2b2lkIHNl
dENoaWxkTm9kZXMob3V0IGxvbmcgcGFyZW50SWQsIG91dCBBcnJheSBub2Rlcyk7CiAgICAgICAg
IFtldmVudF0gdm9pZCBzZXREZXRhY2hlZFJvb3Qob3V0IE9iamVjdCByb290KTsKICAgICAgICAg
W2V2ZW50XSB2b2lkIGNoaWxkTm9kZUNvdW50VXBkYXRlZChvdXQgbG9uZyBpZCwgb3V0IGludCBu
ZXdWYWx1ZSk7CiAgICAgICAgIFtldmVudF0gdm9pZCBjaGlsZE5vZGVJbnNlcnRlZChvdXQgbG9u
ZyBwYXJlbnRJZCwgb3V0IGxvbmcgcHJldklkLCBvdXQgT2JqZWN0IG5vZGUpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBZ2VudC5jcHAKaW5kZXggN2JjNDJkNDAwY2RkMTk3
Yjg0YjJiMDE1N2QyN2M4YzUwMTIyOWRlZi4uYjU2YWI4ZTRkNjVjY2Q0NTRlM2VhZjFmYWUxMmIy
NWVlMDJmNGE0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnQu
Y3BwCkBAIC0xMzgsNyArMTM4LDggQEAgSW5zcGVjdG9yQWdlbnQ6Okluc3BlY3RvckFnZW50KFBh
Z2UqIHBhZ2UsIEluc3BlY3RvckNsaWVudCogY2xpZW50KQogICAgICwgbV9mcm9udGVuZCgwKQog
ICAgICwgbV9pbnN0cnVtZW50aW5nQWdlbnRzKG5ldyBJbnN0cnVtZW50aW5nQWdlbnRzKCkpCiAg
ICAgLCBtX2luamVjdGVkU2NyaXB0SG9zdChJbmplY3RlZFNjcmlwdEhvc3Q6OmNyZWF0ZSh0aGlz
KSkKLSAgICAsIG1fZG9tQWdlbnQoSW5zcGVjdG9yRE9NQWdlbnQ6OmNyZWF0ZShtX2luc3RydW1l
bnRpbmdBZ2VudHMuZ2V0KCksIG1faW5qZWN0ZWRTY3JpcHRIb3N0LmdldCgpKSkKKyAgICAsIG1f
c3RhdGUobmV3IEluc3BlY3RvclN0YXRlKGNsaWVudCkpCisgICAgLCBtX2RvbUFnZW50KEluc3Bl
Y3RvckRPTUFnZW50OjpjcmVhdGUobV9pbnN0cnVtZW50aW5nQWdlbnRzLmdldCgpLCBtX3N0YXRl
LmdldCgpLCBtX2luamVjdGVkU2NyaXB0SG9zdC5nZXQoKSkpCiAgICAgLCBtX2Nzc0FnZW50KG5l
dyBJbnNwZWN0b3JDU1NBZ2VudChtX2RvbUFnZW50LmdldCgpKSkKICNpZiBFTkFCTEUoREFUQUJB
U0UpCiAgICAgLCBtX2RhdGFiYXNlQWdlbnQoSW5zcGVjdG9yRGF0YWJhc2VBZ2VudDo6Y3JlYXRl
KG1faW5zdHJ1bWVudGluZ0FnZW50cy5nZXQoKSkpCkBAIC0xNDYsNyArMTQ3LDYgQEAgSW5zcGVj
dG9yQWdlbnQ6Okluc3BlY3RvckFnZW50KFBhZ2UqIHBhZ2UsIEluc3BlY3RvckNsaWVudCogY2xp
ZW50KQogI2lmIEVOQUJMRShET01fU1RPUkFHRSkKICAgICAsIG1fZG9tU3RvcmFnZUFnZW50KElu
c3BlY3RvckRPTVN0b3JhZ2VBZ2VudDo6Y3JlYXRlKG1faW5zdHJ1bWVudGluZ0FnZW50cy5nZXQo
KSkpCiAjZW5kaWYKLSAgICAsIG1fc3RhdGUobmV3IEluc3BlY3RvclN0YXRlKGNsaWVudCkpCiAg
ICAgLCBtX3RpbWVsaW5lQWdlbnQoSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6Y3JlYXRlKG1faW5z
dHJ1bWVudGluZ0FnZW50cy5nZXQoKSwgbV9zdGF0ZS5nZXQoKSkpCiAgICAgLCBtX3Jlc291cmNl
QWdlbnQoSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6Y3JlYXRlKG1faW5zdHJ1bWVudGluZ0FnZW50
cy5nZXQoKSwgcGFnZSwgbV9zdGF0ZS5nZXQoKSkpCiAgICAgLCBtX2NvbnNvbGVBZ2VudChuZXcg
SW5zcGVjdG9yQ29uc29sZUFnZW50KG1faW5zdHJ1bWVudGluZ0FnZW50cy5nZXQoKSwgdGhpcywg
bV9zdGF0ZS5nZXQoKSwgbV9pbmplY3RlZFNjcmlwdEhvc3QuZ2V0KCksIG1fZG9tQWdlbnQuZ2V0
KCkpKQpAQCAtMjEwLDYgKzIxMCw3IEBAIHZvaWQgSW5zcGVjdG9yQWdlbnQ6OnJlc3RvcmVJbnNw
ZWN0b3JTdGF0ZUZyb21Db29raWUoY29uc3QgU3RyaW5nJiBpbnNwZWN0b3JTdGF0CiAKICAgICBt
X3Jlc291cmNlQWdlbnQtPnJlc3RvcmUoKTsKICAgICBtX3RpbWVsaW5lQWdlbnQtPnJlc3RvcmUo
KTsKKyAgICBtX2RvbUFnZW50LT5yZXN0b3JlKCk7CiAKICNpZiBFTkFCTEUoSkFWQVNDUklQVF9E
RUJVR0dFUikKICAgICBtX2RlYnVnZ2VyQWdlbnQtPnJlc3RvcmUoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckFnZW50LmgKaW5kZXggNmQ5NWQ0ODhmZTIwODg5ZjZjODFjMzZi
NmIwYjViODI0MWRhZTkzMS4uN2NmOGNjYmVkY2Y3ZjUyMDhkMmJiNTljY2NjMmFkOWMzZmRkMWUw
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50LmgKQEAgLTI0NSw2
ICsyNDUsNyBAQCBwcml2YXRlOgogICAgIEluc3BlY3RvckZyb250ZW5kKiBtX2Zyb250ZW5kOwog
ICAgIE93blB0cjxJbnN0cnVtZW50aW5nQWdlbnRzPiBtX2luc3RydW1lbnRpbmdBZ2VudHM7CiAg
ICAgUmVmUHRyPEluamVjdGVkU2NyaXB0SG9zdD4gbV9pbmplY3RlZFNjcmlwdEhvc3Q7CisgICAg
T3duUHRyPEluc3BlY3RvclN0YXRlPiBtX3N0YXRlOwogICAgIE93blB0cjxJbnNwZWN0b3JET01B
Z2VudD4gbV9kb21BZ2VudDsKICAgICBPd25QdHI8SW5zcGVjdG9yQ1NTQWdlbnQ+IG1fY3NzQWdl
bnQ7CiAKQEAgLTI1Niw3ICsyNTcsNiBAQCBwcml2YXRlOgogICAgIE93blB0cjxJbnNwZWN0b3JE
T01TdG9yYWdlQWdlbnQ+IG1fZG9tU3RvcmFnZUFnZW50OwogI2VuZGlmCiAKLSAgICBPd25QdHI8
SW5zcGVjdG9yU3RhdGU+IG1fc3RhdGU7CiAgICAgT3duUHRyPEluc3BlY3RvclRpbWVsaW5lQWdl
bnQ+IG1fdGltZWxpbmVBZ2VudDsKIAogI2lmIEVOQUJMRShPRkZMSU5FX1dFQl9BUFBMSUNBVElP
TlMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQnJvd3Nl
ckRlYnVnZ2VyQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJy
b3dzZXJEZWJ1Z2dlckFnZW50LmNwcAppbmRleCAyZDVmZDQ2Y2JjNjYwMzkxMDVlZjY0ZjMyZTMw
YTRlNmIxZjg2YjlkLi4wY2JhNzc1MGMyOGY2NmU5NjYzZjg5ZTJhNmNkZTUzYzkxZDVlMGYyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQnJvd3NlckRlYnVn
Z2VyQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCcm93
c2VyRGVidWdnZXJBZ2VudC5jcHAKQEAgLTMwMSw5ICszMDEsOCBAQCB2b2lkIEluc3BlY3RvckJy
b3dzZXJEZWJ1Z2dlckFnZW50OjpkZXNjcmlwdGlvbkZvckRPTUV2ZW50KE5vZGUqIHRhcmdldCwg
bG9uZyBicgogICAgIGlmICgoMSA8PCBicmVha3BvaW50VHlwZSkgJiBpbmhlcml0YWJsZURPTUJy
ZWFrcG9pbnRUeXBlc01hc2spIHsKICAgICAgICAgLy8gRm9yIGluaGVyaXRhYmxlIGJyZWFrcG9p
bnQgdHlwZXMsIHRhcmdldCBub2RlIGlzbid0IGFsd2F5cyB0aGUgc2FtZSBhcyB0aGUgbm9kZSB0
aGF0IG93bnMgYSBicmVha3BvaW50LgogICAgICAgICAvLyBUYXJnZXQgbm9kZSBtYXkgYmUgdW5r
bm93biB0byBmcm9udGVuZCwgc28gd2UgbmVlZCB0byBwdXNoIGl0IGZpcnN0LgotICAgICAgICBs
b25nIHRhcmdldE5vZGVJZCA9IG1fZG9tQWdlbnQtPnB1c2hOb2RlUGF0aFRvRnJvbnRlbmQodGFy
Z2V0KTsKLSAgICAgICAgQVNTRVJUKHRhcmdldE5vZGVJZCk7Ci0gICAgICAgIGRlc2NyaXB0aW9u
LT5zZXROdW1iZXIoInRhcmdldE5vZGVJZCIsIHRhcmdldE5vZGVJZCk7CisgICAgICAgIFJlZlB0
cjxJbnNwZWN0b3JPYmplY3Q+IHRhcmdldE5vZGVPYmplY3QgPSBtX2RvbUFnZW50LT5yZXNvbHZl
Tm9kZSh0YXJnZXQsICIiKTsKKyAgICAgICAgZGVzY3JpcHRpb24tPnNldE9iamVjdCgidGFyZ2V0
Tm9kZSIsIHRhcmdldE5vZGVPYmplY3QpOwogCiAgICAgICAgIC8vIEZpbmQgYnJlYWtwb2ludCBv
d25lciBub2RlLgogICAgICAgICBpZiAoIWluc2VydGlvbikKQEAgLTMxOCw3ICszMTcsNyBAQCB2
b2lkIEluc3BlY3RvckJyb3dzZXJEZWJ1Z2dlckFnZW50OjpkZXNjcmlwdGlvbkZvckRPTUV2ZW50
KE5vZGUqIHRhcmdldCwgbG9uZyBicgogICAgICAgICAgICAgZGVzY3JpcHRpb24tPnNldEJvb2xl
YW4oImluc2VydGlvbiIsIGluc2VydGlvbik7CiAgICAgfQogCi0gICAgbG9uZyBicmVha3BvaW50
T3duZXJOb2RlSWQgPSBtX2RvbUFnZW50LT5wdXNoTm9kZVBhdGhUb0Zyb250ZW5kKGJyZWFrcG9p
bnRPd25lcik7CisgICAgbG9uZyBicmVha3BvaW50T3duZXJOb2RlSWQgPSBtX2RvbUFnZW50LT5i
b3VuZE5vZGVJZChicmVha3BvaW50T3duZXIpOwogICAgIEFTU0VSVChicmVha3BvaW50T3duZXJO
b2RlSWQpOwogICAgIGRlc2NyaXB0aW9uLT5zZXROdW1iZXIoIm5vZGVJZCIsIGJyZWFrcG9pbnRP
d25lck5vZGVJZCk7CiAgICAgZGVzY3JpcHRpb24tPnNldE51bWJlcigidHlwZSIsIGJyZWFrcG9p
bnRUeXBlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JE
T01BZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQu
Y3BwCmluZGV4IDUyMmE0MGRjNGJhNDI2NjAzZGU4OGFiODFkZmFhNmY3YTcyY2NhYzcuLjY2YzQ1
MDkwN2VkMzFmMjg0NWE3MWZlMmY5ZWYyZmY5ODc1Y2ZlYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcApAQCAtNjEsNiArNjEsNyBAQAogI2lu
Y2x1ZGUgIkhUTUxGcmFtZU93bmVyRWxlbWVudC5oIgogI2luY2x1ZGUgIkluamVjdGVkU2NyaXB0
SG9zdC5oIgogI2luY2x1ZGUgIkluc3BlY3RvckZyb250ZW5kLmgiCisjaW5jbHVkZSAiSW5zcGVj
dG9yU3RhdGUuaCIKICNpbmNsdWRlICJJbnN0cnVtZW50aW5nQWdlbnRzLmgiCiAjaW5jbHVkZSAi
TXV0YXRpb25FdmVudC5oIgogI2luY2x1ZGUgIk5vZGUuaCIKQEAgLTg5LDYgKzkwLDEwIEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorbmFtZXNwYWNlIERPTUFnZW50U3RhdGUgeworc3RhdGlj
IGNvbnN0IGNoYXIgZG9jdW1lbnRSZXF1ZXN0ZWRbXSA9ICJkb2N1bWVudFJlcXVlc3RlZCI7Cit9
OworCiBjbGFzcyBNYXRjaEpvYiB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIG1hdGNoKExp
c3RIYXNoU2V0PE5vZGUqPiYgcmVzdWx0Q29sbGVjdG9yKSA9IDA7CkBAIC0yNDMsOCArMjQ4LDkg
QEAgdm9pZCBSZXZhbGlkYXRlU3R5bGVBdHRyaWJ1dGVUYXNrOjpvblRpbWVyKFRpbWVyPFJldmFs
aWRhdGVTdHlsZUF0dHJpYnV0ZVRhc2s+KikKICAgICBtX2VsZW1lbnRzLmNsZWFyKCk7CiB9CiAK
LUluc3BlY3RvckRPTUFnZW50OjpJbnNwZWN0b3JET01BZ2VudChJbnN0cnVtZW50aW5nQWdlbnRz
KiBpbnN0cnVtZW50aW5nQWdlbnRzLCBJbmplY3RlZFNjcmlwdEhvc3QqIGluamVjdGVkU2NyaXB0
SG9zdCkKK0luc3BlY3RvckRPTUFnZW50OjpJbnNwZWN0b3JET01BZ2VudChJbnN0cnVtZW50aW5n
QWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBJbnNwZWN0b3JTdGF0ZSogaW5zcGVjdG9yU3Rh
dGUsIEluamVjdGVkU2NyaXB0SG9zdCogaW5qZWN0ZWRTY3JpcHRIb3N0KQogICAgIDogbV9pbnN0
cnVtZW50aW5nQWdlbnRzKGluc3RydW1lbnRpbmdBZ2VudHMpCisgICAgLCBtX2luc3BlY3RvclN0
YXRlKGluc3BlY3RvclN0YXRlKQogICAgICwgbV9pbmplY3RlZFNjcmlwdEhvc3QoaW5qZWN0ZWRT
Y3JpcHRIb3N0KQogICAgICwgbV9mcm9udGVuZCgwKQogICAgICwgbV9kb21MaXN0ZW5lcigwKQpA
QCAtMjk1LDYgKzMwMSwxMiBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpyZXNldCgpCiAgICAg
bV9kb2N1bWVudCA9IDA7CiB9CiAKK3ZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OnJlc3RvcmUoKQor
eworICAgIGlmIChtX2luc3BlY3RvclN0YXRlLT5nZXRCb29sZWFuKERPTUFnZW50U3RhdGU6OmRv
Y3VtZW50UmVxdWVzdGVkKSkKKyAgICAgICAgbV9mcm9udGVuZC0+ZG9jdW1lbnRVcGRhdGVkKCk7
Cit9CisKIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OnNldERPTUxpc3RlbmVyKERPTUxpc3RlbmVy
KiBsaXN0ZW5lcikKIHsKICAgICBtX2RvbUxpc3RlbmVyID0gbGlzdGVuZXI7CkBAIC0zMDksMTEg
KzMyMSwxMyBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpzZXREb2N1bWVudChEb2N1bWVudCog
ZG9jKQogCiAgICAgbV9kb2N1bWVudCA9IGRvYzsKIAotICAgIGlmIChkb2MpIHsKLSAgICAgICAg
aWYgKGRvYy0+ZG9jdW1lbnRFbGVtZW50KCkpCi0gICAgICAgICAgICBwdXNoRG9jdW1lbnRUb0Zy
b250ZW5kKCk7Ci0gICAgfSBlbHNlCi0gICAgICAgIG1fZnJvbnRlbmQtPnNldERvY3VtZW50KElu
c3BlY3RvclZhbHVlOjpudWxsKCkpOworICAgIGlmIChtX2luc3BlY3RvclN0YXRlLT5nZXRCb29s
ZWFuKERPTUFnZW50U3RhdGU6OmRvY3VtZW50UmVxdWVzdGVkKSkgeworICAgICAgICBpZiAoZG9j
KSB7CisgICAgICAgICAgICBpZiAoZG9jLT5kb2N1bWVudEVsZW1lbnQoKSkKKyAgICAgICAgICAg
ICAgICBtX2Zyb250ZW5kLT5kb2N1bWVudFVwZGF0ZWQoKTsKKyAgICAgICAgfSBlbHNlCisgICAg
ICAgICAgICBtX2Zyb250ZW5kLT5kb2N1bWVudFVwZGF0ZWQoKTsKKyAgICB9CiB9CiAKIHZvaWQg
SW5zcGVjdG9yRE9NQWdlbnQ6OnJlbGVhc2VEYW5nbGluZ05vZGVzKCkKQEAgLTM3NCwxMyArMzg4
LDIwIEBAIE5vZGUqIEluc3BlY3RvckRPTUFnZW50Ojpub2RlVG9TZWxlY3RPbihsb25nIG5vZGVJ
ZCwgYm9vbCBkb2N1bWVudFdpZGUpCiAgICAgcmV0dXJuIG5vZGU7CiB9CiAKLWJvb2wgSW5zcGVj
dG9yRE9NQWdlbnQ6OnB1c2hEb2N1bWVudFRvRnJvbnRlbmQoKQordm9pZCBJbnNwZWN0b3JET01B
Z2VudDo6Z2V0RG9jdW1lbnQoRXJyb3JTdHJpbmcqLCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0Piog
cm9vdCkKIHsKKyAgICBtX2luc3BlY3RvclN0YXRlLT5zZXRCb29sZWFuKERPTUFnZW50U3RhdGU6
OmRvY3VtZW50UmVxdWVzdGVkLCB0cnVlKTsKKwogICAgIGlmICghbV9kb2N1bWVudCkKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm47CisKKyAgICAvLyBSZXNldCBiYWNrZW5k
IHN0YXRlLgorICAgIFJlZlB0cjxEb2N1bWVudD4gZG9jID0gbV9kb2N1bWVudDsKKyAgICByZXNl
dCgpOworICAgIG1fZG9jdW1lbnQgPSBkb2M7CisKICAgICBpZiAoIW1fZG9jdW1lbnROb2RlVG9J
ZE1hcC5jb250YWlucyhtX2RvY3VtZW50KSkKLSAgICAgICAgbV9mcm9udGVuZC0+c2V0RG9jdW1l
bnQoYnVpbGRPYmplY3RGb3JOb2RlKG1fZG9jdW1lbnQuZ2V0KCksIDIsICZtX2RvY3VtZW50Tm9k
ZVRvSWRNYXApKTsKLSAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgKnJvb3QgPSBidWlsZE9iamVj
dEZvck5vZGUobV9kb2N1bWVudC5nZXQoKSwgMiwgJm1fZG9jdW1lbnROb2RlVG9JZE1hcCk7CiB9
CiAKIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OnB1c2hDaGlsZE5vZGVzVG9Gcm9udGVuZChsb25n
IG5vZGVJZCkKQEAgLTQ1Nyw4ICs0NzgsOSBAQCBsb25nIEluc3BlY3RvckRPTUFnZW50OjpwdXNo
Tm9kZVBhdGhUb0Zyb250ZW5kKE5vZGUqIG5vZGVUb1B1c2gpCiB7CiAgICAgQVNTRVJUKG5vZGVU
b1B1c2gpOyAgLy8gSW52YWxpZCBpbnB1dAogCi0gICAgLy8gSWYgd2UgYXJlIHNlbmRpbmcgaW5m
b3JtYXRpb24gdG8gdGhlIGNsaWVudCB0aGF0IGlzIGN1cnJlbnRseSBiZWluZyBjcmVhdGVkLiBT
ZW5kIHJvb3Qgbm9kZSBmaXJzdC4KLSAgICBpZiAoIXB1c2hEb2N1bWVudFRvRnJvbnRlbmQoKSkK
KyAgICBpZiAoIW1fZG9jdW1lbnQpCisgICAgICAgIHJldHVybiAwOworICAgIGlmICghbV9kb2N1
bWVudE5vZGVUb0lkTWFwLmNvbnRhaW5zKG1fZG9jdW1lbnQpKQogICAgICAgICByZXR1cm4gMDsK
IAogICAgIC8vIFJldHVybiBpZCBpbiBjYXNlIHRoZSBub2RlIGlzIGtub3duLgpAQCAtNDY5LDEz
ICs0OTEsMTYgQEAgbG9uZyBJbnNwZWN0b3JET01BZ2VudDo6cHVzaE5vZGVQYXRoVG9Gcm9udGVu
ZChOb2RlKiBub2RlVG9QdXNoKQogICAgIE5vZGUqIG5vZGUgPSBub2RlVG9QdXNoOwogICAgIFZl
Y3RvcjxOb2RlKj4gcGF0aDsKICAgICBOb2RlVG9JZE1hcCogZGFuZ2xpbmdNYXAgPSAwOworCiAg
ICAgd2hpbGUgKHRydWUpIHsKICAgICAgICAgTm9kZSogcGFyZW50ID0gaW5uZXJQYXJlbnROb2Rl
KG5vZGUpOwogICAgICAgICBpZiAoIXBhcmVudCkgewogICAgICAgICAgICAgLy8gTm9kZSBiZWlu
ZyBwdXNoZWQgaXMgZGV0YWNoZWQgLT4gcHVzaCBzdWJ0cmVlIHJvb3QuCiAgICAgICAgICAgICBk
YW5nbGluZ01hcCA9IG5ldyBOb2RlVG9JZE1hcCgpOwogICAgICAgICAgICAgbV9kYW5nbGluZ05v
ZGVUb0lkTWFwcy5hcHBlbmQoZGFuZ2xpbmdNYXApOwotICAgICAgICAgICAgbV9mcm9udGVuZC0+
c2V0RGV0YWNoZWRSb290KGJ1aWxkT2JqZWN0Rm9yTm9kZShub2RlLCAwLCBkYW5nbGluZ01hcCkp
OworICAgICAgICAgICAgUmVmUHRyPEluc3BlY3RvckFycmF5PiBjaGlsZHJlbiA9IEluc3BlY3Rv
ckFycmF5OjpjcmVhdGUoKTsKKyAgICAgICAgICAgIGNoaWxkcmVuLT5wdXNoT2JqZWN0KGJ1aWxk
T2JqZWN0Rm9yTm9kZShub2RlLCAwLCBkYW5nbGluZ01hcCkpOworICAgICAgICAgICAgbV9mcm9u
dGVuZC0+c2V0Q2hpbGROb2RlcygwLCBjaGlsZHJlbik7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIHBhdGguYXBwZW5kKHBhcmVudCk7CkBAIC00OTUs
NiArNTIwLDExIEBAIGxvbmcgSW5zcGVjdG9yRE9NQWdlbnQ6OnB1c2hOb2RlUGF0aFRvRnJvbnRl
bmQoTm9kZSogbm9kZVRvUHVzaCkKICAgICByZXR1cm4gbWFwLT5nZXQobm9kZVRvUHVzaCk7CiB9
CiAKK2xvbmcgSW5zcGVjdG9yRE9NQWdlbnQ6OmJvdW5kTm9kZUlkKE5vZGUqIG5vZGUpCit7Cisg
ICAgcmV0dXJuIG1fZG9jdW1lbnROb2RlVG9JZE1hcC5nZXQobm9kZSk7Cit9CisKIHZvaWQgSW5z
cGVjdG9yRE9NQWdlbnQ6OnNldEF0dHJpYnV0ZShFcnJvclN0cmluZyosIGxvbmcgZWxlbWVudElk
LCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUsIGJvb2wqIHN1Y2Nlc3Mp
CiB7CiAgICAgTm9kZSogbm9kZSA9IG5vZGVGb3JJZChlbGVtZW50SWQpOwpAQCAtODAyLDkgKzgz
MiwxMSBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpzZWFyY2hDYW5jZWxlZChFcnJvclN0cmlu
ZyopCiB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpyZXNvbHZlTm9kZShFcnJvclN0cmluZyogZXJy
b3IsIGxvbmcgbm9kZUlkLCBjb25zdCBTdHJpbmcmIG9iamVjdEdyb3VwLCBSZWZQdHI8SW5zcGVj
dG9yVmFsdWU+KiByZXN1bHQpCiB7CiAgICAgTm9kZSogbm9kZSA9IG5vZGVGb3JJZChub2RlSWQp
OwotICAgIEluamVjdGVkU2NyaXB0IGluamVjdGVkU2NyaXB0ID0gaW5qZWN0ZWRTY3JpcHRGb3JO
b2RlKGVycm9yLCBub2RlKTsKLSAgICBpZiAoZXJyb3ItPmlzRW1wdHkoKSkKLSAgICAgICAgKnJl
c3VsdCA9IGluamVjdGVkU2NyaXB0LndyYXBOb2RlKG5vZGUsIG9iamVjdEdyb3VwKTsKKyAgICBp
ZiAoIW5vZGUpIHsKKyAgICAgICAgKmVycm9yID0gIk5vIG5vZGUgd2l0aCBnaXZlbiBpZCBmb3Vu
ZC4iOworICAgICAgICByZXR1cm47CisgICAgfQorICAgICpyZXN1bHQgPSByZXNvbHZlTm9kZShu
b2RlLCBvYmplY3RHcm91cCk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OnB1c2hOb2Rl
VG9Gcm9udGVuZChFcnJvclN0cmluZyosIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBvYmpl
Y3RJZCwgbG9uZyogbm9kZUlkKQpAQCAtMTAwNCw3ICsxMDM2LDggQEAgdm9pZCBJbnNwZWN0b3JE
T01BZ2VudDo6bWFpbkZyYW1lRE9NQ29udGVudExvYWRlZCgpCiB7CiAgICAgLy8gUmUtcHVzaCBk
b2N1bWVudCBvbmNlIGl0IGlzIGxvYWRlZC4KICAgICBkaXNjYXJkQmluZGluZ3MoKTsKLSAgICBw
dXNoRG9jdW1lbnRUb0Zyb250ZW5kKCk7CisgICAgaWYgKG1faW5zcGVjdG9yU3RhdGUtPmdldEJv
b2xlYW4oRE9NQWdlbnRTdGF0ZTo6ZG9jdW1lbnRSZXF1ZXN0ZWQpKQorICAgICAgICBtX2Zyb250
ZW5kLT5kb2N1bWVudFVwZGF0ZWQoKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6bG9h
ZEV2ZW50RmlyZWQoRG9jdW1lbnQqIGRvY3VtZW50KQpAQCAtMTE5OSwyMyArMTIzMiwxOCBAQCB2
b2lkIEluc3BlY3RvckRPTUFnZW50OjpwdXNoTm9kZUJ5UGF0aFRvRnJvbnRlbmQoRXJyb3JTdHJp
bmcqLCBjb25zdCBTdHJpbmcmIHBhdAogICAgICAgICAqbm9kZUlkID0gcHVzaE5vZGVQYXRoVG9G
cm9udGVuZChub2RlKTsKIH0KIAotSW5qZWN0ZWRTY3JpcHQgSW5zcGVjdG9yRE9NQWdlbnQ6Omlu
amVjdGVkU2NyaXB0Rm9yTm9kZShFcnJvclN0cmluZyogZXJyb3IsIE5vZGUqIG5vZGUpCitQYXNz
UmVmUHRyPEluc3BlY3Rvck9iamVjdD4gSW5zcGVjdG9yRE9NQWdlbnQ6OnJlc29sdmVOb2RlKE5v
ZGUqIG5vZGUsIGNvbnN0IFN0cmluZyYgb2JqZWN0R3JvdXApCiB7Ci0gICAgaWYgKCFub2RlKSB7
Ci0gICAgICAgICplcnJvciA9ICJObyBub2RlIHdpdGggZ2l2ZW4gaWQgZm91bmQuIjsKLSAgICAg
ICAgcmV0dXJuIEluamVjdGVkU2NyaXB0KCk7Ci0gICAgfQotCiAgICAgRG9jdW1lbnQqIGRvY3Vt
ZW50ID0gbm9kZS0+b3duZXJEb2N1bWVudCgpOwotICAgIEZyYW1lKiBmcmFtZSA9IGRvY3VtZW50
LT5mcmFtZSgpOworICAgIEZyYW1lKiBmcmFtZSA9IGRvY3VtZW50ID8gZG9jdW1lbnQtPmZyYW1l
KCkgOiAwOworICAgIGlmICghZnJhbWUpCisgICAgICAgIHJldHVybiAwOwogCiAgICAgSW5qZWN0
ZWRTY3JpcHQgaW5qZWN0ZWRTY3JpcHQgPSBtX2luamVjdGVkU2NyaXB0SG9zdC0+aW5qZWN0ZWRT
Y3JpcHRGb3IobWFpbldvcmxkU2NyaXB0U3RhdGUoZnJhbWUpKTsKLSAgICBpZiAoaW5qZWN0ZWRT
Y3JpcHQuaGFzTm9WYWx1ZSgpKSB7Ci0gICAgICAgICplcnJvciA9ICJObyBKYXZhU2NyaXB0IHdv
cmxkIGZvdW5kIGZvciBub2RlIHdpdGggZ2l2ZW4gaWQuIjsKLSAgICAgICAgcmV0dXJuIEluamVj
dGVkU2NyaXB0KCk7Ci0gICAgfQorICAgIGlmIChpbmplY3RlZFNjcmlwdC5oYXNOb1ZhbHVlKCkp
CisgICAgICAgIHJldHVybiAwOwogCi0gICAgcmV0dXJuIGluamVjdGVkU2NyaXB0OworICAgIHJl
dHVybiBpbmplY3RlZFNjcmlwdC53cmFwTm9kZShub2RlLCBvYmplY3RHcm91cCk7CiB9CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JET01BZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckRPTUFnZW50LmgKaW5kZXggMDM3MmNlNzIyNDA2Mzc1YmYxOGIzMjhkNzY0ZGNmN2FhNTU2YjZj
MC4uYTM4OGY3YzJmNGZkNjdkZWYwZGIxZWNmZGY1MzdkMTk1ZGViMDc0NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmgKQEAgLTU1LDYgKzU1LDcgQEAg
Y2xhc3MgRXZlbnQ7CiBjbGFzcyBJbnNwZWN0b3JET01BZ2VudDsKIGNsYXNzIEluc3BlY3RvckZy
b250ZW5kOwogY2xhc3MgTWF0Y2hKb2I7CitjbGFzcyBJbnNwZWN0b3JTdGF0ZTsKIGNsYXNzIElu
c3RydW1lbnRpbmdBZ2VudHM7CiBjbGFzcyBOYW1lTm9kZU1hcDsKIGNsYXNzIE5vZGU7CkBAIC05
MCw5ICs5MSw5IEBAIHB1YmxpYzoKICAgICAgICAgdmlydHVhbCB2b2lkIGRpZE1vZGlmeURPTUF0
dHIoRWxlbWVudCopID0gMDsKICAgICB9OwogCi0gICAgc3RhdGljIFBhc3NPd25QdHI8SW5zcGVj
dG9yRE9NQWdlbnQ+IGNyZWF0ZShJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdl
bnRzLCBJbmplY3RlZFNjcmlwdEhvc3QqIGluamVjdGVkU2NyaXB0SG9zdCkKKyAgICBzdGF0aWMg
UGFzc093blB0cjxJbnNwZWN0b3JET01BZ2VudD4gY3JlYXRlKEluc3RydW1lbnRpbmdBZ2VudHMq
IGluc3RydW1lbnRpbmdBZ2VudHMsIEluc3BlY3RvclN0YXRlKiBpbnNwZWN0b3JTdGF0ZSwgSW5q
ZWN0ZWRTY3JpcHRIb3N0KiBpbmplY3RlZFNjcmlwdEhvc3QpCiAgICAgewotICAgICAgICByZXR1
cm4gYWRvcHRQdHIobmV3IEluc3BlY3RvckRPTUFnZW50KGluc3RydW1lbnRpbmdBZ2VudHMsIGlu
amVjdGVkU2NyaXB0SG9zdCkpOworICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IEluc3BlY3Rv
ckRPTUFnZW50KGluc3RydW1lbnRpbmdBZ2VudHMsIGluc3BlY3RvclN0YXRlLCBpbmplY3RlZFNj
cmlwdEhvc3QpKTsKICAgICB9CiAKICAgICB+SW5zcGVjdG9yRE9NQWdlbnQoKTsKQEAgLTEwMSwx
MSArMTAyLDEzIEBAIHB1YmxpYzoKICAgICB2b2lkIGNsZWFyRnJvbnRlbmQoKTsKIAogICAgIFZl
Y3RvcjxEb2N1bWVudCo+IGRvY3VtZW50cygpOworICAgIHZvaWQgcmVzdG9yZSgpOwogICAgIHZv
aWQgcmVzZXQoKTsKIAorICAgIC8vIE1ldGhvZHMgY2FsbGVkIGZyb20gdGhlIGZyb250ZW5kIGZv
ciBET00gbm9kZXMgaW5zcGVjdGlvbi4KICAgICB2b2lkIHF1ZXJ5U2VsZWN0b3IoRXJyb3JTdHJp
bmcqLCBsb25nIG5vZGVJZCwgY29uc3QgU3RyaW5nJiBzZWxlY3RvcnMsIGJvb2wgZG9jdW1lbnRX
aWRlLCBsb25nKiBlbGVtZW50SWQpOwogICAgIHZvaWQgcXVlcnlTZWxlY3RvckFsbChFcnJvclN0
cmluZyosIGxvbmcgbm9kZUlkLCBjb25zdCBTdHJpbmcmIHNlbGVjdG9ycywgYm9vbCBkb2N1bWVu
dFdpZGUsIFJlZlB0cjxJbnNwZWN0b3JBcnJheT4qIHJlc3VsdCk7Ci0gICAgLy8gTWV0aG9kcyBj
YWxsZWQgZnJvbSB0aGUgZnJvbnRlbmQgZm9yIERPTSBub2RlcyBpbnNwZWN0aW9uLgorICAgIHZv
aWQgZ2V0RG9jdW1lbnQoRXJyb3JTdHJpbmcqLCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0Piogcm9v
dCk7CiAgICAgdm9pZCBnZXRDaGlsZE5vZGVzKEVycm9yU3RyaW5nKiwgbG9uZyBub2RlSWQpOwog
ICAgIHZvaWQgc2V0QXR0cmlidXRlKEVycm9yU3RyaW5nKiwgbG9uZyBlbGVtZW50SWQsIGNvbnN0
IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSwgYm9vbCogc3VjY2Vzcyk7CiAgICAg
dm9pZCByZW1vdmVBdHRyaWJ1dGUoRXJyb3JTdHJpbmcqLCBsb25nIGVsZW1lbnRJZCwgY29uc3Qg
U3RyaW5nJiBuYW1lLCBib29sKiBzdWNjZXNzKTsKQEAgLTEyMCw2ICsxMjMsNyBAQCBwdWJsaWM6
CiAgICAgdm9pZCBzZWFyY2hDYW5jZWxlZChFcnJvclN0cmluZyopOwogICAgIHZvaWQgcmVzb2x2
ZU5vZGUoRXJyb3JTdHJpbmcqLCBsb25nIG5vZGVJZCwgY29uc3QgU3RyaW5nJiBvYmplY3RHcm91
cCwgUmVmUHRyPEluc3BlY3RvclZhbHVlPiogcmVzdWx0KTsKICAgICB2b2lkIHB1c2hOb2RlVG9G
cm9udGVuZChFcnJvclN0cmluZyosIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBvYmplY3RJ
ZCwgbG9uZyogbm9kZUlkKTsKKyAgICB2b2lkIHB1c2hOb2RlQnlQYXRoVG9Gcm9udGVuZChFcnJv
clN0cmluZyosIGNvbnN0IFN0cmluZyYgcGF0aCwgbG9uZyogbm9kZUlkKTsKIAogICAgIC8vIE1l
dGhvZHMgY2FsbGVkIGZyb20gdGhlIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbi4KICAgICB2b2lk
IHNldERvY3VtZW50KERvY3VtZW50Kik7CkBAIC0xMzUsMTQgKzEzOSwxNCBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBkaWRJbnZhbGlkYXRlU3R5bGVBdHRyKE5vZGUqKTsKIAogICAgIE5vZGUqIG5vZGVG
b3JJZChsb25nIG5vZGVJZCk7Ci0gICAgbG9uZyBwdXNoTm9kZVBhdGhUb0Zyb250ZW5kKE5vZGUq
KTsKLSAgICB2b2lkIHB1c2hDaGlsZE5vZGVzVG9Gcm9udGVuZChsb25nIG5vZGVJZCk7Ci0gICAg
dm9pZCBwdXNoTm9kZUJ5UGF0aFRvRnJvbnRlbmQoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcm
IHBhdGgsIGxvbmcqIG5vZGVJZCk7CisgICAgbG9uZyBib3VuZE5vZGVJZChOb2RlKik7CiAgICAg
dm9pZCBjb3B5Tm9kZShFcnJvclN0cmluZyosIGxvbmcgbm9kZUlkKTsKICAgICB2b2lkIHNldERP
TUxpc3RlbmVyKERPTUxpc3RlbmVyKik7CiAKICAgICBTdHJpbmcgZG9jdW1lbnRVUkxTdHJpbmco
RG9jdW1lbnQqKSBjb25zdDsKIAorICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiByZXNv
bHZlTm9kZShOb2RlKiwgY29uc3QgU3RyaW5nJiBvYmplY3RHcm91cCk7CisKICAgICAvLyBXZSBy
ZXByZXNlbnQgZW1iZWRkZWQgZG9tcyBhcyBhIHBhcnQgb2YgdGhlIHNhbWUgaGllcmFyY2h5LiBI
ZW5jZSB3ZSB0cmVhdCBjaGlsZHJlbiBvZiBmcmFtZSBvd25lcnMgZGlmZmVyZW50bHkuCiAgICAg
Ly8gV2UgYWxzbyBza2lwIHdoaXRlc3BhY2UgdGV4dCBub2RlcyBjb25kaXRpb25hbGx5LiBGb2xs
b3dpbmcgbWV0aG9kcyBlbmNhcHN1bGF0ZSB0aGVzZSBzcGVjaWZpY3MuCiAgICAgc3RhdGljIE5v
ZGUqIGlubmVyRmlyc3RDaGlsZChOb2RlKik7CkBAIC0xNTMsNyArMTU3LDcgQEAgcHVibGljOgog
ICAgIHN0YXRpYyBib29sIGlzV2hpdGVzcGFjZShOb2RlKik7CiAKIHByaXZhdGU6Ci0gICAgSW5z
cGVjdG9yRE9NQWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyosIEluamVjdGVkU2NyaXB0SG9zdCop
OworICAgIEluc3BlY3RvckRPTUFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMqLCBJbnNwZWN0b3JT
dGF0ZSosIEluamVjdGVkU2NyaXB0SG9zdCopOwogCiAgICAgLy8gTm9kZS1yZWxhdGVkIG1ldGhv
ZHMuCiAgICAgdHlwZWRlZiBIYXNoTWFwPFJlZlB0cjxOb2RlPiwgbG9uZz4gTm9kZVRvSWRNYXA7
CkBAIC0xNjIsNyArMTY2LDggQEAgcHJpdmF0ZToKIAogICAgIE5vZGUqIG5vZGVUb1NlbGVjdE9u
KGxvbmcgbm9kZUlkLCBib29sIGRvY3VtZW50V2lkZSk7CiAKLSAgICBib29sIHB1c2hEb2N1bWVu
dFRvRnJvbnRlbmQoKTsKKyAgICBsb25nIHB1c2hOb2RlUGF0aFRvRnJvbnRlbmQoTm9kZSopOwor
ICAgIHZvaWQgcHVzaENoaWxkTm9kZXNUb0Zyb250ZW5kKGxvbmcgbm9kZUlkKTsKIAogICAgIGJv
b2wgaGFzQnJlYWtwb2ludChOb2RlKiwgbG9uZyB0eXBlKTsKICAgICB2b2lkIHVwZGF0ZVN1YnRy
ZWVCcmVha3BvaW50cyhOb2RlKiByb290LCB1aW50MzJfdCByb290TWFzaywgYm9vbCB2YWx1ZSk7
CkBAIC0xODEsOSArMTg2LDggQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgZGlzY2FyZEJpbmRpbmdz
KCk7CiAKLSAgICBJbmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlwdEZvck5vZGUoRXJyb3JTdHJp
bmcqLCBOb2RlKik7Ci0KICAgICBJbnN0cnVtZW50aW5nQWdlbnRzKiBtX2luc3RydW1lbnRpbmdB
Z2VudHM7CisgICAgSW5zcGVjdG9yU3RhdGUqIG1faW5zcGVjdG9yU3RhdGU7CiAgICAgSW5qZWN0
ZWRTY3JpcHRIb3N0KiBtX2luamVjdGVkU2NyaXB0SG9zdDsKICAgICBJbnNwZWN0b3JGcm9udGVu
ZDo6RE9NKiBtX2Zyb250ZW5kOwogICAgIERPTUxpc3RlbmVyKiBtX2RvbUxpc3RlbmVyOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9CcmVha3BvaW50TWFu
YWdlci5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQnJlYWtwb2ludE1h
bmFnZXIuanMKaW5kZXggMzI1NzE2YTcyZjNiZWNkYjhlM2IwZDY1ZDM3MmY4Nzk3YjczZTAxNS4u
NjExZWI4YWY2ZTVlYWNmMTdjYmNlYTM5ZWMwYzgwNjkwYmI5YjBmNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9CcmVha3BvaW50TWFuYWdlci5qcworKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0JyZWFrcG9pbnRNYW5hZ2VyLmpz
CkBAIC00OTAsMTQgKzQ5MCwyMyBAQCBXZWJJbnNwZWN0b3IuRE9NQnJlYWtwb2ludFZpZXcucHJv
dG90eXBlID0gewogICAgICAgICAgICAgZWxlbWVudC5hcHBlbmRDaGlsZChiKTsKICAgICAgICAg
fQogICAgICAgICBpZiAodGhpcy5fdHlwZSA9PT0gV2ViSW5zcGVjdG9yLkRPTUJyZWFrcG9pbnRU
eXBlcy5TdWJ0cmVlTW9kaWZpZWQpIHsKLSAgICAgICAgICAgIHZhciB0YXJnZXROb2RlID0gV2Vi
SW5zcGVjdG9yLnBhbmVscy5lbGVtZW50cy5saW5raWZ5Tm9kZUJ5SWQoZXZlbnREYXRhLnRhcmdl
dE5vZGVJZCk7Ci0gICAgICAgICAgICBpZiAoZXZlbnREYXRhLmluc2VydGlvbikgewotICAgICAg
ICAgICAgICAgIGlmIChldmVudERhdGEudGFyZ2V0Tm9kZUlkICE9PSB0aGlzLl9ub2RlSWQpCi0g
ICAgICAgICAgICAgICAgICAgIFdlYkluc3BlY3Rvci5mb3JtYXRMb2NhbGl6ZWQoIlBhdXNlZCBv
biBhIFwiJXNcIiBicmVha3BvaW50IHNldCBvbiAlcywgYmVjYXVzZSBhIG5ldyBjaGlsZCB3YXMg
YWRkZWQgdG8gaXRzIGRlc2NlbmRhbnQgJXMuIiwgc3Vic3RpdHV0aW9ucy5jb25jYXQodGFyZ2V0
Tm9kZSksIGZvcm1hdHRlcnMsICIiLCBhcHBlbmQpOwotICAgICAgICAgICAgICAgIGVsc2UKLSAg
ICAgICAgICAgICAgICAgICAgV2ViSW5zcGVjdG9yLmZvcm1hdExvY2FsaXplZCgiUGF1c2VkIG9u
IGEgXCIlc1wiIGJyZWFrcG9pbnQgc2V0IG9uICVzLCBiZWNhdXNlIGEgbmV3IGNoaWxkIHdhcyBh
ZGRlZCB0byB0aGF0IG5vZGUuIiwgc3Vic3RpdHV0aW9ucywgZm9ybWF0dGVycywgIiIsIGFwcGVu
ZCk7Ci0gICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICBXZWJJbnNwZWN0b3IuZm9y
bWF0TG9jYWxpemVkKCJQYXVzZWQgb24gYSBcIiVzXCIgYnJlYWtwb2ludCBzZXQgb24gJXMsIGJl
Y2F1c2UgaXRzIGRlc2NlbmRhbnQgJXMgd2FzIHJlbW92ZWQuIiwgc3Vic3RpdHV0aW9ucy5jb25j
YXQodGFyZ2V0Tm9kZSksIGZvcm1hdHRlcnMsICIiLCBhcHBlbmQpOworICAgICAgICAgICAgdmFy
IHRhcmdldE5vZGVPYmplY3QgPSBXZWJJbnNwZWN0b3IuUmVtb3RlT2JqZWN0LmZyb21QYXlsb2Fk
KGV2ZW50RGF0YS50YXJnZXROb2RlKTsKKyAgICAgICAgICAgIHRhcmdldE5vZGVPYmplY3QucHVz
aE5vZGVUb0Zyb250ZW5kKGRlY29yYXRlTm9kZSk7CisgICAgICAgICAgICBmdW5jdGlvbiBkZWNv
cmF0ZU5vZGUodGFyZ2V0Tm9kZUlkKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGlm
ICghdGFyZ2V0Tm9kZUlkKQorICAgICAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAg
ICAgICAgICBSdW50aW1lQWdlbnQucmVsZWFzZU9iamVjdChldmVudERhdGEudGFyZ2V0Tm9kZSk7
CisgICAgICAgICAgICAgICAgdmFyIHRhcmdldE5vZGUgPSBXZWJJbnNwZWN0b3IuZG9tQWdlbnQu
bm9kZUZvcklkKHRhcmdldE5vZGVJZCk7CisgICAgICAgICAgICAgICAgaWYgKGV2ZW50RGF0YS5p
bnNlcnRpb24pIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHRhcmdldE5vZGVJZCAhPT0gdGhp
cy5fbm9kZUlkKQorICAgICAgICAgICAgICAgICAgICAgICAgV2ViSW5zcGVjdG9yLmZvcm1hdExv
Y2FsaXplZCgiUGF1c2VkIG9uIGEgXCIlc1wiIGJyZWFrcG9pbnQgc2V0IG9uICVzLCBiZWNhdXNl
IGEgbmV3IGNoaWxkIHdhcyBhZGRlZCB0byBpdHMgZGVzY2VuZGFudCAlcy4iLCBzdWJzdGl0dXRp
b25zLmNvbmNhdCh0YXJnZXROb2RlKSwgZm9ybWF0dGVycywgIiIsIGFwcGVuZCk7CisgICAgICAg
ICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgIFdlYkluc3BlY3Rvci5m
b3JtYXRMb2NhbGl6ZWQoIlBhdXNlZCBvbiBhIFwiJXNcIiBicmVha3BvaW50IHNldCBvbiAlcywg
YmVjYXVzZSBhIG5ldyBjaGlsZCB3YXMgYWRkZWQgdG8gdGhhdCBub2RlLiIsIHN1YnN0aXR1dGlv
bnMsIGZvcm1hdHRlcnMsICIiLCBhcHBlbmQpOworICAgICAgICAgICAgICAgIH0gZWxzZQorICAg
ICAgICAgICAgICAgICAgICBXZWJJbnNwZWN0b3IuZm9ybWF0TG9jYWxpemVkKCJQYXVzZWQgb24g
YSBcIiVzXCIgYnJlYWtwb2ludCBzZXQgb24gJXMsIGJlY2F1c2UgaXRzIGRlc2NlbmRhbnQgJXMg
d2FzIHJlbW92ZWQuIiwgc3Vic3RpdHV0aW9ucy5jb25jYXQodGFyZ2V0Tm9kZSksIGZvcm1hdHRl
cnMsICIiLCBhcHBlbmQpOworICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UKICAgICAgICAg
ICAgIFdlYkluc3BlY3Rvci5mb3JtYXRMb2NhbGl6ZWQoIlBhdXNlZCBvbiBhIFwiJXNcIiBicmVh
a3BvaW50IHNldCBvbiAlcy4iLCBzdWJzdGl0dXRpb25zLCBmb3JtYXR0ZXJzLCAiIiwgYXBwZW5k
KTsKICAgICB9LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9ET01BZ2VudC5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRE9NQWdl
bnQuanMKaW5kZXggMDlkMmY1ZmJmNDgzMTY5NzY4MDk5NTZmZTAyZGVmNDUxNjIwZGUyOC4uYWY1
MGRiYTQ3Yzg1NTMyMTMwNmVmMGMzOGYzNjI4M2U2OTMwMjZjMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9ET01BZ2VudC5qcworKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RPTUFnZW50LmpzCkBAIC0zMDksNiArMzA5LDI0IEBA
IFdlYkluc3BlY3Rvci5ET01BZ2VudC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHJldHVybiB0aGlz
Ll93aW5kb3c7CiAgICAgfSwKIAorICAgIHJlcXVlc3REb2N1bWVudDogZnVuY3Rpb24oY2FsbGJh
Y2spCisgICAgeworICAgICAgICBpZiAodGhpcy5kb2N1bWVudCkgeworICAgICAgICAgICAgaWYg
KGNhbGxiYWNrKQorICAgICAgICAgICAgICAgIGNhbGxiYWNrKCk7CisgICAgICAgIH0gZWxzZQor
ICAgICAgICAgICAgdGhpcy5fZG9jdW1lbnRVcGRhdGVkKGNhbGxiYWNrKTsKKyAgICB9LAorCisg
ICAgcHVzaE5vZGVUb0Zyb250ZW5kOiBmdW5jdGlvbihvYmplY3RJZCwgY2FsbGJhY2spCisgICAg
eworICAgICAgICBmdW5jdGlvbiBteWNhbGxiYWNrKCkKKyAgICAgICAgeworICAgICAgICAgICAg
RE9NQWdlbnQucHVzaE5vZGVUb0Zyb250ZW5kKG9iamVjdElkLCBjYWxsYmFjayk7CisgICAgICAg
IH0KKyAgICAgICAgdGhpcy5yZXF1ZXN0RG9jdW1lbnQobXljYWxsYmFjayk7CisgICAgfSwKKwog
ICAgIGdldENoaWxkTm9kZXNBc3luYzogZnVuY3Rpb24ocGFyZW50LCBjYWxsYmFjaykKICAgICB7
CiAgICAgICAgIHZhciBjaGlsZHJlbiA9IHBhcmVudC5jaGlsZHJlbjsKQEAgLTM3Myw2ICszOTEs
MTcgQEAgV2ViSW5zcGVjdG9yLkRPTUFnZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgcmV0dXJu
IHRoaXMuX2lkVG9ET01Ob2RlW25vZGVJZF07CiAgICAgfSwKIAorICAgIF9kb2N1bWVudFVwZGF0
ZWQ6IGZ1bmN0aW9uKGNhbGxiYWNrKQorICAgIHsKKyAgICAgICAgZnVuY3Rpb24gbXljYWxsYmFj
ayhyb290KQorICAgICAgICB7CisgICAgICAgICAgICB0aGlzLl9zZXREb2N1bWVudChyb290KTsK
KyAgICAgICAgICAgIGlmIChjYWxsYmFjaykKKyAgICAgICAgICAgICAgICBjYWxsYmFjaygpOwor
ICAgICAgICB9CisgICAgICAgIERPTUFnZW50LmdldERvY3VtZW50KG15Y2FsbGJhY2suYmluZCh0
aGlzKSk7CisgICAgfSwKKwogICAgIF9zZXREb2N1bWVudDogZnVuY3Rpb24ocGF5bG9hZCkKICAg
ICB7CiAgICAgICAgIHRoaXMuX2lkVG9ET01Ob2RlID0ge307CkBAIC0zOTQsNiArNDIzLDExIEBA
IFdlYkluc3BlY3Rvci5ET01BZ2VudC5wcm90b3R5cGUgPSB7CiAKICAgICBfc2V0Q2hpbGROb2Rl
czogZnVuY3Rpb24ocGFyZW50SWQsIHBheWxvYWRzKQogICAgIHsKKyAgICAgICAgaWYgKCFwYXJl
bnRJZCAmJiBwYXlsb2Fkcy5sZW5ndGgpIHsKKyAgICAgICAgICAgIHRoaXMuX3NldERldGFjaGVk
Um9vdChwYXlsb2Fkc1swXSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKwogICAg
ICAgICB2YXIgcGFyZW50ID0gdGhpcy5faWRUb0RPTU5vZGVbcGFyZW50SWRdOwogICAgICAgICBw
YXJlbnQuX3NldENoaWxkcmVuUGF5bG9hZChwYXlsb2Fkcyk7CiAgICAgICAgIHRoaXMuX2JpbmRO
b2RlcyhwYXJlbnQuY2hpbGRyZW4pOwpAQCAtNDU3LDkgKzQ5MSw5IEBAIFdlYkluc3BlY3Rvci5E
T01EaXNwYXRjaGVyID0gZnVuY3Rpb24oZG9tQWdlbnQpCiB9CiAKIFdlYkluc3BlY3Rvci5ET01E
aXNwYXRjaGVyLnByb3RvdHlwZSA9IHsKLSAgICBzZXREb2N1bWVudDogZnVuY3Rpb24ocGF5bG9h
ZCkKKyAgICBkb2N1bWVudFVwZGF0ZWQ6IGZ1bmN0aW9uKCkKICAgICB7Ci0gICAgICAgIHRoaXMu
X2RvbUFnZW50Ll9zZXREb2N1bWVudChwYXlsb2FkKTsKKyAgICAgICAgdGhpcy5fZG9tQWdlbnQu
X2RvY3VtZW50VXBkYXRlZCgpOwogICAgIH0sCiAKICAgICBhdHRyaWJ1dGVzVXBkYXRlZDogZnVu
Y3Rpb24obm9kZUlkLCBhdHRyc0FycmF5KQpAQCAtNDc3LDExICs1MTEsNiBAQCBXZWJJbnNwZWN0
b3IuRE9NRGlzcGF0Y2hlci5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX2RvbUFnZW50Ll9z
ZXRDaGlsZE5vZGVzKHBhcmVudElkLCBwYXlsb2Fkcyk7CiAgICAgfSwKIAotICAgIHNldERldGFj
aGVkUm9vdDogZnVuY3Rpb24ocGF5bG9hZCkKLSAgICB7Ci0gICAgICAgIHRoaXMuX2RvbUFnZW50
Ll9zZXREZXRhY2hlZFJvb3QocGF5bG9hZCk7Ci0gICAgfSwKLQogICAgIGNoaWxkTm9kZUNvdW50
VXBkYXRlZDogZnVuY3Rpb24obm9kZUlkLCBuZXdWYWx1ZSkKICAgICB7CiAgICAgICAgIHRoaXMu
X2RvbUFnZW50Ll9jaGlsZE5vZGVDb3VudFVwZGF0ZWQobm9kZUlkLCBuZXdWYWx1ZSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0VsZW1lbnRzUGFuZWwu
anMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0VsZW1lbnRzUGFuZWwuanMK
aW5kZXggODEzNzAxOWU2MzNjMzkwYTVhYzU1MzYzYWRmZTAzMDhmMTVmMzg5NS4uZTcwNDIxODVh
ODA3YzFmMjk3YzljMWZjMTMxOWRkOGU3YjY3ZTU3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9FbGVtZW50c1BhbmVsLmpzCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRWxlbWVudHNQYW5lbC5qcwpAQCAtMTQxLDYgKzE0MSw5
IEBAIFdlYkluc3BlY3Rvci5FbGVtZW50c1BhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhp
cy50cmVlT3V0bGluZS51cGRhdGVTZWxlY3Rpb24oKTsKICAgICAgICAgaWYgKHRoaXMucmVjZW50
bHlNb2RpZmllZE5vZGVzLmxlbmd0aCkKICAgICAgICAgICAgIHRoaXMudXBkYXRlTW9kaWZpZWRO
b2RlcygpOworCisgICAgICAgIGlmICghdGhpcy5yb290RE9NTm9kZSkKKyAgICAgICAgICAgIFdl
Ykluc3BlY3Rvci5kb21BZ2VudC5yZXF1ZXN0RG9jdW1lbnQoKTsKICAgICB9LAogCiAgICAgaGlk
ZTogZnVuY3Rpb24oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9SZW1vdGVPYmplY3QuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L1JlbW90ZU9iamVjdC5qcwppbmRleCA4MmVlZjlkNDQ2NDIyM2EyZGZiNjQ1MDc1ZDNiZGYyOWVl
ZGVjN2UxLi40YTIwY2YxZGIxZDhlZDU3ZjJhYzBiNDNjNjg2YmY1NWNjZTcwODkzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1JlbW90ZU9iamVjdC5qcwor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1JlbW90ZU9iamVjdC5qcwpA
QCAtMTMzLDcgKzEzMyw3IEBAIFdlYkluc3BlY3Rvci5SZW1vdGVPYmplY3QucHJvdG90eXBlID0g
ewogICAgIHB1c2hOb2RlVG9Gcm9udGVuZDogZnVuY3Rpb24oY2FsbGJhY2spCiAgICAgewogICAg
ICAgICBpZiAodGhpcy5fb2JqZWN0SWQpCi0gICAgICAgICAgICBET01BZ2VudC5wdXNoTm9kZVRv
RnJvbnRlbmQodGhpcy5fb2JqZWN0SWQsIGNhbGxiYWNrKTsKKyAgICAgICAgICAgIFdlYkluc3Bl
Y3Rvci5kb21BZ2VudC5wdXNoTm9kZVRvRnJvbnRlbmQodGhpcy5fb2JqZWN0SWQsIGNhbGxiYWNr
KTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgY2FsbGJhY2soMCk7CiAgICAgfSwK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>84700</attachid>
            <date>2011-03-03 23:39:55 -0800</date>
            <delta_ts>2011-03-03 23:39:55 -0800</delta_ts>
            <desc>[PATCH] Patch for landing.</desc>
            <filename>bug-55664-20110304103953.patch</filename>
            <type>text/plain</type>
            <size>40087</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODAzMzEKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA2ZDkxYTVlNTliMDY3YWE0NDc3OTQ4
MWZmNmRkMjlmMTc5ODFkZjljLi5kNjhhYjBjYzcyMGM0ZjQ3MzMxNmEzOTFkNDRlM2NlY2Y0MTQw
ODdmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTEtMDMtMDMgIFBhdmVsIEZlbGRtYW4gIDxw
ZmVsZG1hbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogZG8gbm90IHB1c2ggZG9jdW1lbnQgaW50byBm
cm9udC1lbmQsIG1ha2UgaXQgcmVxdWVzdCBvbmUuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NTY2NAorCisgICAgICAgICogaHR0cC90ZXN0cy9pbnNw
ZWN0b3IvZGVidWdnZXItdGVzdC5qczoKKyAgICAgICAgKGluaXRpYWxpemVfRGVidWdnZXJUZXN0
Lik6CisgICAgICAgIChpbml0aWFsaXplX0RlYnVnZ2VyVGVzdCk6CisgICAgICAgICogaHR0cC90
ZXN0cy9pbnNwZWN0b3IvZWxlbWVudHMtdGVzdC5qczoKKyAgICAgICAgKGluaXRpYWxpemVfRWxl
bWVudFRlc3QuSW5zcGVjdG9yVGVzdC5ub2RlV2l0aElkLmRvY3VtZW50UmVxdWVzdGVkKToKKyAg
ICAgICAgKGluaXRpYWxpemVfRWxlbWVudFRlc3QuSW5zcGVjdG9yVGVzdC5ub2RlV2l0aElkKToK
KyAgICAgICAgKGluaXRpYWxpemVfRWxlbWVudFRlc3QuSW5zcGVjdG9yVGVzdC5kdW1wRE9NQWdl
bnRUcmVlKToKKyAgICAgICAgKGluaXRpYWxpemVfRWxlbWVudFRlc3QpOgorICAgICAgICAqIGlu
c3BlY3Rvci9jb25zb2xlL2NvbW1hbmQtbGluZS1hcGktaW5zcGVjdC5odG1sOgorICAgICAgICAq
IGluc3BlY3Rvci9lbGVtZW50cy9kb20tYWdlbnQtcXVlcnktc2VsZWN0b3IuaHRtbDoKKyAgICAg
ICAgKiBpbnNwZWN0b3IvZWxlbWVudHMvbXV0YXRlLXVua25vd24tbm9kZS5odG1sOgorICAgICAg
ICAqIGluc3BlY3Rvci9zdHlsZXMvc3R5bGVzLW5ldy1BUEkuaHRtbDoKKwogMjAxMS0wMy0wMyAg
QWRhbSBLbGVpbiAgPGFkYW1rQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBE
YXZpZCBMZXZpbi4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9y
L2RlYnVnZ2VyLXRlc3QuanMgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9kZWJ1
Z2dlci10ZXN0LmpzCmluZGV4IGEyNTcxOTU0NGE4NWI5MGViNDI5MTZhMzY3OTJhZDIxMGQ1MTJl
ZmIuLmU0MzRjOTcwODFjOGExYzhjZTAxZjQxMTlkYTE3NjNjMTFhNzU0NTUgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyLXRlc3QuanMKKysrIGIv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvZGVidWdnZXItdGVzdC5qcwpAQCAtOTEs
NiArOTEsMTEgQEAgSW5zcGVjdG9yVGVzdC53YWl0VW50aWxQYXVzZWRBbmREdW1wU3RhY2sgPSBm
dW5jdGlvbihjYWxsYmFjaykKICAgICBmdW5jdGlvbiBzdGVwMShjYWxsRnJhbWVzKQogICAgIHsK
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5jYXB0dXJlU3RhY2tUcmFjZShjYWxsRnJhbWVzKTsKKyAg
ICAgICAgSW5zcGVjdG9yVGVzdC5ydW5BZnRlclBlbmRpbmdEaXNwYXRjaGVzKHN0ZXAyKTsKKyAg
ICB9CisKKyAgICBmdW5jdGlvbiBzdGVwMigpCisgICAgewogICAgICAgICBJbnNwZWN0b3JUZXN0
LmFkZFJlc3VsdChXZWJJbnNwZWN0b3IucGFuZWxzLnNjcmlwdHMuc2lkZWJhclBhbmVzLmNhbGxz
dGFjay5ib2R5RWxlbWVudC5sYXN0Q2hpbGQuaW5uZXJUZXh0KTsKICAgICAgICAgSW5zcGVjdG9y
VGVzdC5yZXN1bWVFeGVjdXRpb24oSW5zcGVjdG9yVGVzdC5zYWZlV3JhcChjYWxsYmFjaykpOwog
ICAgIH0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2VsZW1l
bnRzLXRlc3QuanMgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9lbGVtZW50cy10
ZXN0LmpzCmluZGV4IDJjZmM2OWFhY2U2ZTIzY2UyMTE2MzQ4YjBjYjIzNTEzOGRjNGQxMjQuLjk1
YzM3M2U1ZDVlY2MwZGE1OWFmYzJmZTE1ZmNlOGYyZjE1NzI1MGQgMTAwNzU1Ci0tLSBhL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2VsZW1lbnRzLXRlc3QuanMKKysrIGIvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvZWxlbWVudHMtdGVzdC5qcwpAQCAtMzAsNyArMzAs
MTIgQEAgSW5zcGVjdG9yVGVzdC5ub2RlV2l0aElkID0gZnVuY3Rpb24oaWRWYWx1ZSwgY2FsbGJh
Y2spCiAgICAgICAgICAgICBjYWxsYmFjayhudWxsKTsKICAgICB9CiAgICAgcGVuZGluZ1JlcXVl
c3RzKys7Ci0gICAgV2ViSW5zcGVjdG9yLmRvbUFnZW50LmdldENoaWxkTm9kZXNBc3luYyhXZWJJ
bnNwZWN0b3IuZG9tQWdlbnQuZG9jdW1lbnQsIHByb2Nlc3NDaGlsZHJlbi5iaW5kKHRoaXMsIHRy
dWUpKTsKKworICAgIFdlYkluc3BlY3Rvci5kb21BZ2VudC5yZXF1ZXN0RG9jdW1lbnQoZG9jdW1l
bnRSZXF1ZXN0ZWQuYmluZCh0aGlzKSk7CisgICAgZnVuY3Rpb24gZG9jdW1lbnRSZXF1ZXN0ZWQo
ZG9jKQorICAgIHsKKyAgICAgICAgV2ViSW5zcGVjdG9yLmRvbUFnZW50LmdldENoaWxkTm9kZXNB
c3luYyhkb2MsIHByb2Nlc3NDaGlsZHJlbi5iaW5kKHRoaXMsIHRydWUpKTsKKyAgICB9CiB9Owog
CiBJbnNwZWN0b3JUZXN0LmV4cGFuZGVkTm9kZVdpdGhJZCA9IGZ1bmN0aW9uKGlkVmFsdWUpCkBA
IC0xOTQsNiArMTk5LDkgQEAgSW5zcGVjdG9yVGVzdC5leHBhbmRFbGVtZW50c1RyZWUgPSBmdW5j
dGlvbihjYWxsYmFjaykKIAogSW5zcGVjdG9yVGVzdC5kdW1wRE9NQWdlbnRUcmVlID0gZnVuY3Rp
b24oKQogeworICAgIGlmICghV2ViSW5zcGVjdG9yLmRvbUFnZW50Ll9kb2N1bWVudCkKKyAgICAg
ICAgcmV0dXJuOworCiAgICAgZnVuY3Rpb24gZHVtcChub2RlLCBwcmVmaXgsIHN0YXJ0SW5kZXgp
CiAgICAgewogICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdChwcmVmaXggKyBub2RlLm5v
ZGVOYW1lICsgIlsiICsgKG5vZGUuaWQgLSBzdGFydEluZGV4KSsgIl0iKTsKQEAgLTIwMSw3ICsy
MDksNyBAQCBJbnNwZWN0b3JUZXN0LmR1bXBET01BZ2VudFRyZWUgPSBmdW5jdGlvbigpCiAgICAg
ICAgIGZvciAodmFyIGkgPSAwOyBjaGlsZHJlbiAmJiBpIDwgY2hpbGRyZW4ubGVuZ3RoOyArK2kp
CiAgICAgICAgICAgICBkdW1wKGNoaWxkcmVuW2ldLCBwcmVmaXggKyAiICAgICIsIHN0YXJ0SW5k
ZXgpOwogICAgIH0KLSAgICBkdW1wKFdlYkluc3BlY3Rvci5kb21BZ2VudC5kb2N1bWVudCwgIiIs
IFdlYkluc3BlY3Rvci5kb21BZ2VudC5kb2N1bWVudC5pZCAtIDEpOworICAgIGR1bXAoV2ViSW5z
cGVjdG9yLmRvbUFnZW50Ll9kb2N1bWVudCwgIiIsIFdlYkluc3BlY3Rvci5kb21BZ2VudC5fZG9j
dW1lbnQuaWQgLSAxKTsKIH07CiAKIH07CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0
b3IvY29uc29sZS9jb21tYW5kLWxpbmUtYXBpLWluc3BlY3QuaHRtbCBiL0xheW91dFRlc3RzL2lu
c3BlY3Rvci9jb25zb2xlL2NvbW1hbmQtbGluZS1hcGktaW5zcGVjdC5odG1sCmluZGV4IGNjNTA5
MDQ4YWZmMTNkMWEzYWE4ZjQ1ZjUxZGNhYjlmZDk2MzBmZTAuLjBhZjllYWRmOTI5NWM0ZTk4MjA4
NjMwY2M2NGNjZGEyNzRkZDYyODYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9j
b25zb2xlL2NvbW1hbmQtbGluZS1hcGktaW5zcGVjdC5odG1sCisrKyBiL0xheW91dFRlc3RzL2lu
c3BlY3Rvci9jb25zb2xlL2NvbW1hbmQtbGluZS1hcGktaW5zcGVjdC5odG1sCkBAIC0yNyw3ICsy
Nyw3IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgIHsKICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRS
ZXN1bHQoIlxuIik7CiAgICAgICAgIEluc3BlY3RvclRlc3QuZXZhbHVhdGVJbkNvbnNvbGVBbmRE
dW1wKGV4cHJlc3Npb24sIG5leHQpOwotCX0KKyAgICB9CiAKICAgICBJbnNwZWN0b3JUZXN0LnJ1
blRlc3RTdWl0ZShbCiAgICAgICAgIGZ1bmN0aW9uIHRlc3RSZXZlYWxFbGVtZW50KG5leHQpCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZWxlbWVudHMvZG9tLWFnZW50LXF1ZXJ5
LXNlbGVjdG9yLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZWxlbWVudHMvZG9tLWFnZW50
LXF1ZXJ5LXNlbGVjdG9yLmh0bWwKaW5kZXggZDczYTU1NzAzMWNmZmE2OThkNzBmYTVmNjA1ZGZj
MWUxZTU0NjFhOS4uMTU5ZmFiNjZiOGRmNDk0NzU1ZDgxZjI0Mjc2N2UxNzNmYzgzYWE0ZSAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2VsZW1lbnRzL2RvbS1hZ2VudC1xdWVyeS1z
ZWxlY3Rvci5odG1sCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9lbGVtZW50cy9kb20tYWdl
bnQtcXVlcnktc2VsZWN0b3IuaHRtbApAQCAtMzcsMTYgKzM3LDE2IEBAIGZ1bmN0aW9uIHRlc3Qo
KQogICAgIH0KIAogICAgIGZ1bmN0aW9uIGR1bXBOb2RlcyhuZXh0LCBub2RlSWRzKQotCXsKLQkJ
aWYgKCEobm9kZUlkcyBpbnN0YW5jZW9mIEFycmF5KSkKLQkJICAgIG5vZGVJZHMgPSBbbm9kZUlk
c107CisgICAgeworICAgICAgICBpZiAoIShub2RlSWRzIGluc3RhbmNlb2YgQXJyYXkpKQorICAg
ICAgICAgICAgbm9kZUlkcyA9IFtub2RlSWRzXTsKIAogICAgICAgICBmb3IgKHZhciBpID0gMDsg
aSA8IG5vZGVJZHMubGVuZ3RoOyArK2kpIHsKICAgICAgICAgICAgIHZhciBub2RlID0gV2ViSW5z
cGVjdG9yLmRvbUFnZW50Lm5vZGVGb3JJZChub2RlSWRzW2ldKTsKICAgICAgICAgICAgIEluc3Bl
Y3RvclRlc3QuYWRkUmVzdWx0KCJub2RlIGlkOiAiICsgbm9kZS5nZXRBdHRyaWJ1dGUoImlkIikp
OwogICAgICAgICB9CiAgICAgICAgIG5leHQoKTsKLQl9CisgICAgfQogfQogPC9zY3JpcHQ+CiA8
L2hlYWQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZWxlbWVudHMvbXV0YXRl
LXVua25vd24tbm9kZS5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2VsZW1lbnRzL211dGF0
ZS11bmtub3duLW5vZGUuaHRtbAppbmRleCBlMjcxYjYxMTI4NzEzYzdmYjE2ZDhmMjBjZmZmYjgy
N2IwMmM1OGVmLi5kOWM2OWJiZDI3ZTY2ZWYwNWJmNWZmYzJjNTY2OTQyMTVmZGM3YTQyIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZWxlbWVudHMvbXV0YXRlLXVua25vd24tbm9k
ZS5odG1sCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9lbGVtZW50cy9tdXRhdGUtdW5rbm93
bi1ub2RlLmh0bWwKQEAgLTMxLDEyICszMSwxNiBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAg
SW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIkRPTUFnZW50IGV2ZW50IGZpcmVkLiBTaG91bGQgb25s
eSBoYXBwZW4gb25jZSBmb3Igb3V0cHV0IG5vZGU6ICIgKyB0eXBlICsgIiAiICsgZXZlbnQudGFy
Z2V0Lm5vZGVOYW1lICsgIiMiICsgZXZlbnQudGFyZ2V0LmdldEF0dHJpYnV0ZSgiaWQiKSk7CiAg
ICAgfQogCi0gICAgV2ViSW5zcGVjdG9yLmRvbUFnZW50LmRvY3VtZW50LmFkZEV2ZW50TGlzdGVu
ZXIoIkRPTUF0dHJNb2RpZmllZCIsIGxpc3RlbmVyLmJpbmQodGhpcywgIkRPTUF0dHJNb2RpZmll
ZCIpKTsKLSAgICBXZWJJbnNwZWN0b3IuZG9tQWdlbnQuZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5l
cigiRE9NQ2hhcmFjdGVyRGF0YU1vZGlmaWVkIiwgbGlzdGVuZXIuYmluZCh0aGlzLCAiRE9NQ2hh
cmFjdGVyRGF0YU1vZGlmaWVkIikpOwotICAgIFdlYkluc3BlY3Rvci5kb21BZ2VudC5kb2N1bWVu
dC5hZGRFdmVudExpc3RlbmVyKCJET01Ob2RlSW5zZXJ0ZWQiLCBsaXN0ZW5lci5iaW5kKHRoaXMs
ICJET01Ob2RlSW5zZXJ0ZWQiKSk7Ci0gICAgV2ViSW5zcGVjdG9yLmRvbUFnZW50LmRvY3VtZW50
LmFkZEV2ZW50TGlzdGVuZXIoIkRPTU5vZGVSZW1vdmVkIiwgbGlzdGVuZXIuYmluZCh0aGlzLCAi
RE9NTm9kZVJlbW92ZWQiKSk7CisgICAgV2ViSW5zcGVjdG9yLmRvbUFnZW50LnJlcXVlc3REb2N1
bWVudChzdGVwMC5iaW5kKHRoaXMpKTsKIAotICAgIEluc3BlY3RvclRlc3QuZXZhbHVhdGVJblBh
Z2UoImFwcGVuZENoaWxkKCkiLCBzdGVwMSk7CisgICAgZnVuY3Rpb24gc3RlcDAoZG9jKQorICAg
IHsKKyAgICAgICAgZG9jLmFkZEV2ZW50TGlzdGVuZXIoIkRPTUF0dHJNb2RpZmllZCIsIGxpc3Rl
bmVyLmJpbmQodGhpcywgIkRPTUF0dHJNb2RpZmllZCIpKTsKKyAgICAgICAgZG9jLmFkZEV2ZW50
TGlzdGVuZXIoIkRPTUNoYXJhY3RlckRhdGFNb2RpZmllZCIsIGxpc3RlbmVyLmJpbmQodGhpcywg
IkRPTUNoYXJhY3RlckRhdGFNb2RpZmllZCIpKTsKKyAgICAgICAgZG9jLmFkZEV2ZW50TGlzdGVu
ZXIoIkRPTU5vZGVJbnNlcnRlZCIsIGxpc3RlbmVyLmJpbmQodGhpcywgIkRPTU5vZGVJbnNlcnRl
ZCIpKTsKKyAgICAgICAgZG9jLmFkZEV2ZW50TGlzdGVuZXIoIkRPTU5vZGVSZW1vdmVkIiwgbGlz
dGVuZXIuYmluZCh0aGlzLCAiRE9NTm9kZVJlbW92ZWQiKSk7CisgICAgICAgIEluc3BlY3RvclRl
c3QuZXZhbHVhdGVJblBhZ2UoImFwcGVuZENoaWxkKCkiLCBzdGVwMSk7CisgICAgfQogCiAgICAg
ZnVuY3Rpb24gc3RlcDEoKQogICAgIHsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rv
ci9zdHlsZXMvc3R5bGVzLW5ldy1BUEkuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9zdHls
ZXMvc3R5bGVzLW5ldy1BUEkuaHRtbAppbmRleCBjMzNmOGVlMjY5YjllZTdhZTAwMzg5NTRmMzdm
YjA4M2IzMmZjYjczLi5iODVmNzI5NDQ3MDRiMjEzMTJiN2RkYjFjNjYyOWNhOTdiZWEwMGI1IDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3Ivc3R5bGVzL3N0eWxlcy1uZXctQVBJLmh0
bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy9zdHlsZXMtbmV3LUFQSS5odG1s
CkBAIC0xMSw2ICsxMSw3IEBAIGZ1bmN0aW9uIHRlc3QoKQogewogICAgIHRlc3Rfc3R5bGVzKCk7
CiAKKyAgICB2YXIgYm9keUlkOwogICAgIGZ1bmN0aW9uIHRlc3Rfc3R5bGVzKG5vZGUpCiAgICAg
ewogICAgICAgICBmdW5jdGlvbiBjYWxsYmFjayhzdHlsZXMpCkBAIC00Nyw3ICs0OCw4IEBAIGZ1
bmN0aW9uIHRlc3QoKQogCiAgICAgICAgIGZ1bmN0aW9uIG5vZGVDYWxsYmFjayhub2RlKQogICAg
ICAgICB7Ci0gICAgICAgICAgICBDU1NBZ2VudC5nZXRTdHlsZXNGb3JOb2RlKG5vZGUuaWQsIGNh
bGxiYWNrKTsKKyAgICAgICAgICAgIGJvZHlJZCA9IG5vZGUuaWQ7CisgICAgICAgICAgICBDU1NB
Z2VudC5nZXRTdHlsZXNGb3JOb2RlKGJvZHlJZCwgY2FsbGJhY2spOwogICAgICAgICB9CiAgICAg
ICAgIEluc3BlY3RvclRlc3Quc2VsZWN0Tm9kZVdpdGhJZCgibWFpbkJvZHkiLCBub2RlQ2FsbGJh
Y2spOwogICAgIH0KQEAgLTE0Miw3ICsxNDQsNyBAQCBmdW5jdGlvbiB0ZXN0KCkKIAogICAgICAg
ICBmdW5jdGlvbiBkaWRTZXRTdHlsZVRleHQoc3R5bGUpCiAgICAgICAgIHsKLSAgICAgICAgICAg
IENTU0FnZW50LmdldFN0eWxlc0Zvck5vZGUoV2ViSW5zcGVjdG9yLmRvbUFnZW50LmRvY3VtZW50
LmJvZHkuaWQsIGRpZEdldFN0eWxlcyk7CisgICAgICAgICAgICBDU1NBZ2VudC5nZXRTdHlsZXNG
b3JOb2RlKGJvZHlJZCwgZGlkR2V0U3R5bGVzKTsKICAgICAgICAgfQogCiAgICAgICAgIGZ1bmN0
aW9uIHJ1bGVBZGRlZChydWxlKQpAQCAtMTUwLDcgKzE1Miw3IEBAIGZ1bmN0aW9uIHRlc3QoKQog
ICAgICAgICAgICAgQ1NTQWdlbnQuc2V0UHJvcGVydHlUZXh0KHJ1bGUuc3R5bGUuc3R5bGVJZCwg
MCwgImZvbnQtZmFtaWx5OiBzZXJpZjsiLCBmYWxzZSwgZGlkU2V0U3R5bGVUZXh0KTsKICAgICAg
ICAgfQogCi0gICAgICAgIENTU0FnZW50LmFkZFJ1bGUoV2ViSW5zcGVjdG9yLmRvbUFnZW50LmRv
Y3VtZW50LmJvZHkuaWQsICJib2R5IiwgcnVsZUFkZGVkKTsKKyAgICAgICAgQ1NTQWdlbnQuYWRk
UnVsZShib2R5SWQsICJib2R5IiwgcnVsZUFkZGVkKTsKICAgICB9CiAKICAgICBmdW5jdGlvbiB0
ZXN0X2Rpc2FibGVQcm9wZXJ0eSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmVhMzJhMjJkY2Q4YzY2ZTk0ZmE0
NTAyYjI3ODFkYmVhYjJiMGFmNS4uNGM4YzliMmIwZGMyYzM0Yjc3MDk3NDEyODdiMTkxMzU5ZDEw
NmFjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUzIEBACisyMDExLTAzLTAzICBQYXZlbCBGZWxk
bWFuICA8cGZlbGRtYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IGRvIG5vdCBwdXNoIGRvY3VtZW50
IGludG8gZnJvbnQtZW5kLCBtYWtlIGl0IHJlcXVlc3Qgb25lLgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTU2NjQKKworICAgICAgICAqIGluc3BlY3Rv
ci9JbnNwZWN0b3IuaWRsOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JBZ2VudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JBZ2VudDo6SW5zcGVjdG9yQWdlbnQpOgorICAg
ICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9J
bnNwZWN0b3JCcm93c2VyRGVidWdnZXJBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JCcm93c2VyRGVidWdnZXJBZ2VudDo6ZGVzY3JpcHRpb25Gb3JET01FdmVudCk6CisgICAg
ICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvckRPTUFnZW50OjpJbnNwZWN0b3JET01BZ2VudCk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JET01BZ2VudDo6Y2xlYXJGcm9udGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JET01BZ2VudDo6c2V0RG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yRE9NQWdlbnQ6OmdldERvY3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRP
TUFnZW50OjpwdXNoTm9kZVBhdGhUb0Zyb250ZW5kKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvckRPTUFnZW50Ojpib3VuZE5vZGVJZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JE
T01BZ2VudDo6cmVzb2x2ZU5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdl
bnQ6Om1haW5GcmFtZURPTUNvbnRlbnRMb2FkZWQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNw
ZWN0b3JET01BZ2VudC5oOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmNy
ZWF0ZSk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9CcmVha3BvaW50TWFuYWdlci5q
czoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5CcmVha3BvaW50TWFuYWdlci5wcm90b3R5cGUucmVz
dG9yZURPTUJyZWFrcG9pbnRzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5ET01CcmVha3BvaW50
Vmlldy5wcm90b3R5cGUucG9wdWxhdGVTdGF0dXNNZXNzYWdlRWxlbWVudC5kZWNvcmF0ZU5vZGUp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRPTUJyZWFrcG9pbnRWaWV3LnByb3RvdHlwZS5wb3B1
bGF0ZVN0YXR1c01lc3NhZ2VFbGVtZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5k
L0RPTUFnZW50LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRPTURvY3VtZW50KToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5ET01BZ2VudCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRE9NQWdl
bnQucHJvdG90eXBlLnJlcXVlc3REb2N1bWVudCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRE9N
QWdlbnQucHJvdG90eXBlLnB1c2hOb2RlVG9Gcm9udGVuZCk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuRE9NQWdlbnQucHJvdG90eXBlLnB1c2hOb2RlQnlQYXRoVG9Gcm9udGVuZCk6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuRE9NQWdlbnQucHJvdG90eXBlLl9hdHRyaWJ1dGVzVXBkYXRlZCk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuRE9NQWdlbnQucHJvdG90eXBlLl9jaGFyYWN0ZXJEYXRhTW9k
aWZpZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRPTUFnZW50LnByb3RvdHlwZS5fZG9jdW1l
bnRVcGRhdGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5ET01BZ2VudC5wcm90b3R5cGUuX3Nl
dERvY3VtZW50KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5ET01BZ2VudC5wcm90b3R5cGUuX3Nl
dERldGFjaGVkUm9vdCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRE9NQWdlbnQucHJvdG90eXBl
Ll9zZXRDaGlsZE5vZGVzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5ET01BZ2VudC5wcm90b3R5
cGUuX2NoaWxkTm9kZUluc2VydGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5ET01BZ2VudC5w
cm90b3R5cGUuX2NoaWxkTm9kZVJlbW92ZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRPTURp
c3BhdGNoZXIucHJvdG90eXBlLmRvY3VtZW50VXBkYXRlZCk6CisgICAgICAgICogaW5zcGVjdG9y
L2Zyb250LWVuZC9FbGVtZW50c1BhbmVsLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkVsZW1l
bnRzUGFuZWwucHJvdG90eXBlLnNob3cpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkVsZW1lbnRz
UGFuZWwucHJvdG90eXBlLnNldERvY3VtZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQt
ZW5kL01ldHJpY3NTaWRlYmFyUGFuZS5qczoKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5k
L1JlbW90ZU9iamVjdC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SZW1vdGVPYmplY3QucHJv
dG90eXBlLnB1c2hOb2RlVG9Gcm9udGVuZCk6CisKIDIwMTEtMDMtMDMgIEJyaWFuIFdlaW5zdGVp
biAgPGJ3ZWluc3RlaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFkYW0gUm9i
ZW4uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmlkbCBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuaWRsCmluZGV4IDAzZjFhODM1NmQ1
OTg3YjJhMWY3NGM2MjMwOTAzMTE1ZGMzNTRiNmEuLmM0N2NiZTA0MGYwYWFmNDAwYzI0NGVkOTEy
OWUxNjJhODNkOTRmMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3IuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuaWRsCkBA
IC0xNDQsNiArMTQ0LDcgQEAgbW9kdWxlIGNvcmUgewogI2VuZGlmCiAKICAgICBpbnRlcmZhY2Ug
W0NvbmRpdGlvbmFsPUlOU1BFQ1RPUl0gRE9NIHsKKyAgICAgICAgdm9pZCBnZXREb2N1bWVudChv
dXQgT2JqZWN0IHJvb3QpOwogICAgICAgICB2b2lkIGdldENoaWxkTm9kZXMoaW4gbG9uZyBub2Rl
SWQpOwogICAgICAgICB2b2lkIHF1ZXJ5U2VsZWN0b3IoaW4gbG9uZyBub2RlSWQsIGluIFN0cmlu
ZyBzZWxlY3RvcnMsIGluIGJvb2xlYW4gZG9jdW1lbnRXaWRlLCBvdXQgbG9uZyBlbGVtZW50SWQp
OwogICAgICAgICB2b2lkIHF1ZXJ5U2VsZWN0b3JBbGwoaW4gbG9uZyBub2RlSWQsIGluIFN0cmlu
ZyBzZWxlY3RvcnMsIGluIGJvb2xlYW4gZG9jdW1lbnRXaWRlLCBvdXQgQXJyYXkgcmVzdWx0KTsK
QEAgLTE2NCwxMCArMTY1LDEwIEBAIG1vZHVsZSBjb3JlIHsKICAgICAgICAgdm9pZCBwdXNoTm9k
ZVRvRnJvbnRlbmQoaW4gT2JqZWN0IG9iamVjdElkLCBvdXQgbG9uZyBub2RlSWQpOwogCiAgICAg
ICAgIFtldmVudF0gdm9pZCBhZGROb2Rlc1RvU2VhcmNoUmVzdWx0KG91dCBBcnJheSBub2RlSWRz
KTsKLSAgICAgICAgW2V2ZW50XSB2b2lkIHNldERvY3VtZW50KG91dCBWYWx1ZSByb290KTsgLy8g
RklYTUU6IHNob3VsZCBiZSByZXF1ZXN0ZWQgZnJvbSB0aGUgZnJvbnQtZW5kIGFzIGdldERvY3Vt
ZW50LgorICAgICAgICBbZXZlbnRdIHZvaWQgZG9jdW1lbnRVcGRhdGVkKCk7CisgICAgICAgIFtl
dmVudF0gdm9pZCBzZXRDaGlsZE5vZGVzKG91dCBsb25nIHBhcmVudElkLCBvdXQgQXJyYXkgbm9k
ZXMpOwogICAgICAgICBbZXZlbnRdIHZvaWQgYXR0cmlidXRlc1VwZGF0ZWQob3V0IGxvbmcgaWQs
IG91dCBBcnJheSBhdHRyaWJ1dGVzKTsKICAgICAgICAgW2V2ZW50XSB2b2lkIGNoYXJhY3RlckRh
dGFNb2RpZmllZChvdXQgbG9uZyBpZCwgb3V0IFN0cmluZyBuZXdWYWx1ZSk7Ci0gICAgICAgIFtl
dmVudF0gdm9pZCBzZXRDaGlsZE5vZGVzKG91dCBsb25nIHBhcmVudElkLCBvdXQgQXJyYXkgbm9k
ZXMpOwogICAgICAgICBbZXZlbnRdIHZvaWQgc2V0RGV0YWNoZWRSb290KG91dCBPYmplY3Qgcm9v
dCk7CiAgICAgICAgIFtldmVudF0gdm9pZCBjaGlsZE5vZGVDb3VudFVwZGF0ZWQob3V0IGxvbmcg
aWQsIG91dCBpbnQgbmV3VmFsdWUpOwogICAgICAgICBbZXZlbnRdIHZvaWQgY2hpbGROb2RlSW5z
ZXJ0ZWQob3V0IGxvbmcgcGFyZW50SWQsIG91dCBsb25nIHByZXZJZCwgb3V0IE9iamVjdCBub2Rl
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBZ2VudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnQuY3BwCmluZGV4IDdi
YzQyZDQwMGNkZDE5N2I4NGIyYjAxNTdkMjdjOGM1MDEyMjlkZWYuLjg3ZTE3MmY5MDZmNjA3NWU0
ODE2MjM5N2QwMjdmNWU0NjhmNWY3NjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckFnZW50LmNwcApAQCAtMTM4LDcgKzEzOCw4IEBAIEluc3BlY3RvckFnZW50OjpJbnNw
ZWN0b3JBZ2VudChQYWdlKiBwYWdlLCBJbnNwZWN0b3JDbGllbnQqIGNsaWVudCkKICAgICAsIG1f
ZnJvbnRlbmQoMCkKICAgICAsIG1faW5zdHJ1bWVudGluZ0FnZW50cyhuZXcgSW5zdHJ1bWVudGlu
Z0FnZW50cygpKQogICAgICwgbV9pbmplY3RlZFNjcmlwdEhvc3QoSW5qZWN0ZWRTY3JpcHRIb3N0
OjpjcmVhdGUodGhpcykpCi0gICAgLCBtX2RvbUFnZW50KEluc3BlY3RvckRPTUFnZW50OjpjcmVh
dGUobV9pbnN0cnVtZW50aW5nQWdlbnRzLmdldCgpLCBtX2luamVjdGVkU2NyaXB0SG9zdC5nZXQo
KSkpCisgICAgLCBtX3N0YXRlKG5ldyBJbnNwZWN0b3JTdGF0ZShjbGllbnQpKQorICAgICwgbV9k
b21BZ2VudChJbnNwZWN0b3JET01BZ2VudDo6Y3JlYXRlKG1faW5zdHJ1bWVudGluZ0FnZW50cy5n
ZXQoKSwgbV9zdGF0ZS5nZXQoKSwgbV9pbmplY3RlZFNjcmlwdEhvc3QuZ2V0KCkpKQogICAgICwg
bV9jc3NBZ2VudChuZXcgSW5zcGVjdG9yQ1NTQWdlbnQobV9kb21BZ2VudC5nZXQoKSkpCiAjaWYg
RU5BQkxFKERBVEFCQVNFKQogICAgICwgbV9kYXRhYmFzZUFnZW50KEluc3BlY3RvckRhdGFiYXNl
QWdlbnQ6OmNyZWF0ZShtX2luc3RydW1lbnRpbmdBZ2VudHMuZ2V0KCkpKQpAQCAtMTQ2LDcgKzE0
Nyw2IEBAIEluc3BlY3RvckFnZW50OjpJbnNwZWN0b3JBZ2VudChQYWdlKiBwYWdlLCBJbnNwZWN0
b3JDbGllbnQqIGNsaWVudCkKICNpZiBFTkFCTEUoRE9NX1NUT1JBR0UpCiAgICAgLCBtX2RvbVN0
b3JhZ2VBZ2VudChJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQ6OmNyZWF0ZShtX2luc3RydW1lbnRp
bmdBZ2VudHMuZ2V0KCkpKQogI2VuZGlmCi0gICAgLCBtX3N0YXRlKG5ldyBJbnNwZWN0b3JTdGF0
ZShjbGllbnQpKQogICAgICwgbV90aW1lbGluZUFnZW50KEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6
OmNyZWF0ZShtX2luc3RydW1lbnRpbmdBZ2VudHMuZ2V0KCksIG1fc3RhdGUuZ2V0KCkpKQogICAg
ICwgbV9yZXNvdXJjZUFnZW50KEluc3BlY3RvclJlc291cmNlQWdlbnQ6OmNyZWF0ZShtX2luc3Ry
dW1lbnRpbmdBZ2VudHMuZ2V0KCksIHBhZ2UsIG1fc3RhdGUuZ2V0KCkpKQogICAgICwgbV9jb25z
b2xlQWdlbnQobmV3IEluc3BlY3RvckNvbnNvbGVBZ2VudChtX2luc3RydW1lbnRpbmdBZ2VudHMu
Z2V0KCksIHRoaXMsIG1fc3RhdGUuZ2V0KCksIG1faW5qZWN0ZWRTY3JpcHRIb3N0LmdldCgpLCBt
X2RvbUFnZW50LmdldCgpKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50
LmgKaW5kZXggNmQ5NWQ0ODhmZTIwODg5ZjZjODFjMzZiNmIwYjViODI0MWRhZTkzMS4uN2NmOGNj
YmVkY2Y3ZjUyMDhkMmJiNTljY2NjMmFkOWMzZmRkMWUwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckFnZW50LmgKQEAgLTI0NSw2ICsyNDUsNyBAQCBwcml2YXRlOgogICAg
IEluc3BlY3RvckZyb250ZW5kKiBtX2Zyb250ZW5kOwogICAgIE93blB0cjxJbnN0cnVtZW50aW5n
QWdlbnRzPiBtX2luc3RydW1lbnRpbmdBZ2VudHM7CiAgICAgUmVmUHRyPEluamVjdGVkU2NyaXB0
SG9zdD4gbV9pbmplY3RlZFNjcmlwdEhvc3Q7CisgICAgT3duUHRyPEluc3BlY3RvclN0YXRlPiBt
X3N0YXRlOwogICAgIE93blB0cjxJbnNwZWN0b3JET01BZ2VudD4gbV9kb21BZ2VudDsKICAgICBP
d25QdHI8SW5zcGVjdG9yQ1NTQWdlbnQ+IG1fY3NzQWdlbnQ7CiAKQEAgLTI1Niw3ICsyNTcsNiBA
QCBwcml2YXRlOgogICAgIE93blB0cjxJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQ+IG1fZG9tU3Rv
cmFnZUFnZW50OwogI2VuZGlmCiAKLSAgICBPd25QdHI8SW5zcGVjdG9yU3RhdGU+IG1fc3RhdGU7
CiAgICAgT3duUHRyPEluc3BlY3RvclRpbWVsaW5lQWdlbnQ+IG1fdGltZWxpbmVBZ2VudDsKIAog
I2lmIEVOQUJMRShPRkZMSU5FX1dFQl9BUFBMSUNBVElPTlMpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQnJvd3NlckRlYnVnZ2VyQWdlbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJyb3dzZXJEZWJ1Z2dlckFnZW50LmNwcApp
bmRleCAyZDVmZDQ2Y2JjNjYwMzkxMDVlZjY0ZjMyZTMwYTRlNmIxZjg2YjlkLi4wY2JhNzc1MGMy
OGY2NmU5NjYzZjg5ZTJhNmNkZTUzYzkxZDVlMGYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yQnJvd3NlckRlYnVnZ2VyQWdlbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCcm93c2VyRGVidWdnZXJBZ2VudC5jcHAKQEAg
LTMwMSw5ICszMDEsOCBAQCB2b2lkIEluc3BlY3RvckJyb3dzZXJEZWJ1Z2dlckFnZW50OjpkZXNj
cmlwdGlvbkZvckRPTUV2ZW50KE5vZGUqIHRhcmdldCwgbG9uZyBicgogICAgIGlmICgoMSA8PCBi
cmVha3BvaW50VHlwZSkgJiBpbmhlcml0YWJsZURPTUJyZWFrcG9pbnRUeXBlc01hc2spIHsKICAg
ICAgICAgLy8gRm9yIGluaGVyaXRhYmxlIGJyZWFrcG9pbnQgdHlwZXMsIHRhcmdldCBub2RlIGlz
bid0IGFsd2F5cyB0aGUgc2FtZSBhcyB0aGUgbm9kZSB0aGF0IG93bnMgYSBicmVha3BvaW50Lgog
ICAgICAgICAvLyBUYXJnZXQgbm9kZSBtYXkgYmUgdW5rbm93biB0byBmcm9udGVuZCwgc28gd2Ug
bmVlZCB0byBwdXNoIGl0IGZpcnN0LgotICAgICAgICBsb25nIHRhcmdldE5vZGVJZCA9IG1fZG9t
QWdlbnQtPnB1c2hOb2RlUGF0aFRvRnJvbnRlbmQodGFyZ2V0KTsKLSAgICAgICAgQVNTRVJUKHRh
cmdldE5vZGVJZCk7Ci0gICAgICAgIGRlc2NyaXB0aW9uLT5zZXROdW1iZXIoInRhcmdldE5vZGVJ
ZCIsIHRhcmdldE5vZGVJZCk7CisgICAgICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IHRhcmdl
dE5vZGVPYmplY3QgPSBtX2RvbUFnZW50LT5yZXNvbHZlTm9kZSh0YXJnZXQsICIiKTsKKyAgICAg
ICAgZGVzY3JpcHRpb24tPnNldE9iamVjdCgidGFyZ2V0Tm9kZSIsIHRhcmdldE5vZGVPYmplY3Qp
OwogCiAgICAgICAgIC8vIEZpbmQgYnJlYWtwb2ludCBvd25lciBub2RlLgogICAgICAgICBpZiAo
IWluc2VydGlvbikKQEAgLTMxOCw3ICszMTcsNyBAQCB2b2lkIEluc3BlY3RvckJyb3dzZXJEZWJ1
Z2dlckFnZW50OjpkZXNjcmlwdGlvbkZvckRPTUV2ZW50KE5vZGUqIHRhcmdldCwgbG9uZyBicgog
ICAgICAgICAgICAgZGVzY3JpcHRpb24tPnNldEJvb2xlYW4oImluc2VydGlvbiIsIGluc2VydGlv
bik7CiAgICAgfQogCi0gICAgbG9uZyBicmVha3BvaW50T3duZXJOb2RlSWQgPSBtX2RvbUFnZW50
LT5wdXNoTm9kZVBhdGhUb0Zyb250ZW5kKGJyZWFrcG9pbnRPd25lcik7CisgICAgbG9uZyBicmVh
a3BvaW50T3duZXJOb2RlSWQgPSBtX2RvbUFnZW50LT5ib3VuZE5vZGVJZChicmVha3BvaW50T3du
ZXIpOwogICAgIEFTU0VSVChicmVha3BvaW50T3duZXJOb2RlSWQpOwogICAgIGRlc2NyaXB0aW9u
LT5zZXROdW1iZXIoIm5vZGVJZCIsIGJyZWFrcG9pbnRPd25lck5vZGVJZCk7CiAgICAgZGVzY3Jp
cHRpb24tPnNldE51bWJlcigidHlwZSIsIGJyZWFrcG9pbnRUeXBlKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCmluZGV4IDUyMmE0MGRjNGJhNDI2
NjAzZGU4OGFiODFkZmFhNmY3YTcyY2NhYzcuLjNlZGQ3MmM1OWVlZjEwODY3MzMyZTMzNTE2MTBm
MmJlYzkyZWY1M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JET01BZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRP
TUFnZW50LmNwcApAQCAtNjEsNiArNjEsNyBAQAogI2luY2x1ZGUgIkhUTUxGcmFtZU93bmVyRWxl
bWVudC5oIgogI2luY2x1ZGUgIkluamVjdGVkU2NyaXB0SG9zdC5oIgogI2luY2x1ZGUgIkluc3Bl
Y3RvckZyb250ZW5kLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yU3RhdGUuaCIKICNpbmNsdWRlICJJ
bnN0cnVtZW50aW5nQWdlbnRzLmgiCiAjaW5jbHVkZSAiTXV0YXRpb25FdmVudC5oIgogI2luY2x1
ZGUgIk5vZGUuaCIKQEAgLTg5LDYgKzkwLDEwIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAor
bmFtZXNwYWNlIERPTUFnZW50U3RhdGUgeworc3RhdGljIGNvbnN0IGNoYXIgZG9jdW1lbnRSZXF1
ZXN0ZWRbXSA9ICJkb2N1bWVudFJlcXVlc3RlZCI7Cit9OworCiBjbGFzcyBNYXRjaEpvYiB7CiBw
dWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIG1hdGNoKExpc3RIYXNoU2V0PE5vZGUqPiYgcmVzdWx0
Q29sbGVjdG9yKSA9IDA7CkBAIC0yNDMsOCArMjQ4LDkgQEAgdm9pZCBSZXZhbGlkYXRlU3R5bGVB
dHRyaWJ1dGVUYXNrOjpvblRpbWVyKFRpbWVyPFJldmFsaWRhdGVTdHlsZUF0dHJpYnV0ZVRhc2s+
KikKICAgICBtX2VsZW1lbnRzLmNsZWFyKCk7CiB9CiAKLUluc3BlY3RvckRPTUFnZW50OjpJbnNw
ZWN0b3JET01BZ2VudChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBJ
bmplY3RlZFNjcmlwdEhvc3QqIGluamVjdGVkU2NyaXB0SG9zdCkKK0luc3BlY3RvckRPTUFnZW50
OjpJbnNwZWN0b3JET01BZ2VudChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdl
bnRzLCBJbnNwZWN0b3JTdGF0ZSogaW5zcGVjdG9yU3RhdGUsIEluamVjdGVkU2NyaXB0SG9zdCog
aW5qZWN0ZWRTY3JpcHRIb3N0KQogICAgIDogbV9pbnN0cnVtZW50aW5nQWdlbnRzKGluc3RydW1l
bnRpbmdBZ2VudHMpCisgICAgLCBtX2luc3BlY3RvclN0YXRlKGluc3BlY3RvclN0YXRlKQogICAg
ICwgbV9pbmplY3RlZFNjcmlwdEhvc3QoaW5qZWN0ZWRTY3JpcHRIb3N0KQogICAgICwgbV9mcm9u
dGVuZCgwKQogICAgICwgbV9kb21MaXN0ZW5lcigwKQpAQCAtMjcwLDYgKzI3Niw3IEBAIHZvaWQg
SW5zcGVjdG9yRE9NQWdlbnQ6OmNsZWFyRnJvbnRlbmQoKQogICAgIEFTU0VSVChtX2Zyb250ZW5k
KTsKICAgICBtX2Zyb250ZW5kID0gMDsKICAgICBtX2luc3RydW1lbnRpbmdBZ2VudHMtPnNldElu
c3BlY3RvckRPTUFnZW50KDApOworICAgIG1faW5zcGVjdG9yU3RhdGUtPnNldEJvb2xlYW4oRE9N
QWdlbnRTdGF0ZTo6ZG9jdW1lbnRSZXF1ZXN0ZWQsIGZhbHNlKTsKICAgICByZXNldCgpOwogfQog
CkBAIC0zMDksMTEgKzMxNiw4IEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OnNldERvY3VtZW50
KERvY3VtZW50KiBkb2MpCiAKICAgICBtX2RvY3VtZW50ID0gZG9jOwogCi0gICAgaWYgKGRvYykg
ewotICAgICAgICBpZiAoZG9jLT5kb2N1bWVudEVsZW1lbnQoKSkKLSAgICAgICAgICAgIHB1c2hE
b2N1bWVudFRvRnJvbnRlbmQoKTsKLSAgICB9IGVsc2UKLSAgICAgICAgbV9mcm9udGVuZC0+c2V0
RG9jdW1lbnQoSW5zcGVjdG9yVmFsdWU6Om51bGwoKSk7CisgICAgaWYgKCFkb2MgJiYgbV9pbnNw
ZWN0b3JTdGF0ZS0+Z2V0Qm9vbGVhbihET01BZ2VudFN0YXRlOjpkb2N1bWVudFJlcXVlc3RlZCkp
CisgICAgICAgIG1fZnJvbnRlbmQtPmRvY3VtZW50VXBkYXRlZCgpOwogfQogCiB2b2lkIEluc3Bl
Y3RvckRPTUFnZW50OjpyZWxlYXNlRGFuZ2xpbmdOb2RlcygpCkBAIC0zNzQsMTMgKzM3OCwyMCBA
QCBOb2RlKiBJbnNwZWN0b3JET01BZ2VudDo6bm9kZVRvU2VsZWN0T24obG9uZyBub2RlSWQsIGJv
b2wgZG9jdW1lbnRXaWRlKQogICAgIHJldHVybiBub2RlOwogfQogCi1ib29sIEluc3BlY3RvckRP
TUFnZW50OjpwdXNoRG9jdW1lbnRUb0Zyb250ZW5kKCkKK3ZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6
OmdldERvY3VtZW50KEVycm9yU3RyaW5nKiwgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4qIHJvb3Qp
CiB7CisgICAgbV9pbnNwZWN0b3JTdGF0ZS0+c2V0Qm9vbGVhbihET01BZ2VudFN0YXRlOjpkb2N1
bWVudFJlcXVlc3RlZCwgdHJ1ZSk7CisKICAgICBpZiAoIW1fZG9jdW1lbnQpCi0gICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gUmVzZXQgYmFja2VuZCBzdGF0
ZS4KKyAgICBSZWZQdHI8RG9jdW1lbnQ+IGRvYyA9IG1fZG9jdW1lbnQ7CisgICAgcmVzZXQoKTsK
KyAgICBtX2RvY3VtZW50ID0gZG9jOworCiAgICAgaWYgKCFtX2RvY3VtZW50Tm9kZVRvSWRNYXAu
Y29udGFpbnMobV9kb2N1bWVudCkpCi0gICAgICAgIG1fZnJvbnRlbmQtPnNldERvY3VtZW50KGJ1
aWxkT2JqZWN0Rm9yTm9kZShtX2RvY3VtZW50LmdldCgpLCAyLCAmbV9kb2N1bWVudE5vZGVUb0lk
TWFwKSk7Ci0gICAgcmV0dXJuIHRydWU7CisgICAgICAgICpyb290ID0gYnVpbGRPYmplY3RGb3JO
b2RlKG1fZG9jdW1lbnQuZ2V0KCksIDIsICZtX2RvY3VtZW50Tm9kZVRvSWRNYXApOwogfQogCiB2
b2lkIEluc3BlY3RvckRPTUFnZW50OjpwdXNoQ2hpbGROb2Rlc1RvRnJvbnRlbmQobG9uZyBub2Rl
SWQpCkBAIC00NTcsOCArNDY4LDkgQEAgbG9uZyBJbnNwZWN0b3JET01BZ2VudDo6cHVzaE5vZGVQ
YXRoVG9Gcm9udGVuZChOb2RlKiBub2RlVG9QdXNoKQogewogICAgIEFTU0VSVChub2RlVG9QdXNo
KTsgIC8vIEludmFsaWQgaW5wdXQKIAotICAgIC8vIElmIHdlIGFyZSBzZW5kaW5nIGluZm9ybWF0
aW9uIHRvIHRoZSBjbGllbnQgdGhhdCBpcyBjdXJyZW50bHkgYmVpbmcgY3JlYXRlZC4gU2VuZCBy
b290IG5vZGUgZmlyc3QuCi0gICAgaWYgKCFwdXNoRG9jdW1lbnRUb0Zyb250ZW5kKCkpCisgICAg
aWYgKCFtX2RvY3VtZW50KQorICAgICAgICByZXR1cm4gMDsKKyAgICBpZiAoIW1fZG9jdW1lbnRO
b2RlVG9JZE1hcC5jb250YWlucyhtX2RvY3VtZW50KSkKICAgICAgICAgcmV0dXJuIDA7CiAKICAg
ICAvLyBSZXR1cm4gaWQgaW4gY2FzZSB0aGUgbm9kZSBpcyBrbm93bi4KQEAgLTQ2OSwxMyArNDgx
LDE2IEBAIGxvbmcgSW5zcGVjdG9yRE9NQWdlbnQ6OnB1c2hOb2RlUGF0aFRvRnJvbnRlbmQoTm9k
ZSogbm9kZVRvUHVzaCkKICAgICBOb2RlKiBub2RlID0gbm9kZVRvUHVzaDsKICAgICBWZWN0b3I8
Tm9kZSo+IHBhdGg7CiAgICAgTm9kZVRvSWRNYXAqIGRhbmdsaW5nTWFwID0gMDsKKwogICAgIHdo
aWxlICh0cnVlKSB7CiAgICAgICAgIE5vZGUqIHBhcmVudCA9IGlubmVyUGFyZW50Tm9kZShub2Rl
KTsKICAgICAgICAgaWYgKCFwYXJlbnQpIHsKICAgICAgICAgICAgIC8vIE5vZGUgYmVpbmcgcHVz
aGVkIGlzIGRldGFjaGVkIC0+IHB1c2ggc3VidHJlZSByb290LgogICAgICAgICAgICAgZGFuZ2xp
bmdNYXAgPSBuZXcgTm9kZVRvSWRNYXAoKTsKICAgICAgICAgICAgIG1fZGFuZ2xpbmdOb2RlVG9J
ZE1hcHMuYXBwZW5kKGRhbmdsaW5nTWFwKTsKLSAgICAgICAgICAgIG1fZnJvbnRlbmQtPnNldERl
dGFjaGVkUm9vdChidWlsZE9iamVjdEZvck5vZGUobm9kZSwgMCwgZGFuZ2xpbmdNYXApKTsKKyAg
ICAgICAgICAgIFJlZlB0cjxJbnNwZWN0b3JBcnJheT4gY2hpbGRyZW4gPSBJbnNwZWN0b3JBcnJh
eTo6Y3JlYXRlKCk7CisgICAgICAgICAgICBjaGlsZHJlbi0+cHVzaE9iamVjdChidWlsZE9iamVj
dEZvck5vZGUobm9kZSwgMCwgZGFuZ2xpbmdNYXApKTsKKyAgICAgICAgICAgIG1fZnJvbnRlbmQt
PnNldENoaWxkTm9kZXMoMCwgY2hpbGRyZW4pOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IH0gZWxzZSB7CiAgICAgICAgICAgICBwYXRoLmFwcGVuZChwYXJlbnQpOwpAQCAtNDk1LDYgKzUx
MCwxMSBAQCBsb25nIEluc3BlY3RvckRPTUFnZW50OjpwdXNoTm9kZVBhdGhUb0Zyb250ZW5kKE5v
ZGUqIG5vZGVUb1B1c2gpCiAgICAgcmV0dXJuIG1hcC0+Z2V0KG5vZGVUb1B1c2gpOwogfQogCits
b25nIEluc3BlY3RvckRPTUFnZW50Ojpib3VuZE5vZGVJZChOb2RlKiBub2RlKQoreworICAgIHJl
dHVybiBtX2RvY3VtZW50Tm9kZVRvSWRNYXAuZ2V0KG5vZGUpOworfQorCiB2b2lkIEluc3BlY3Rv
ckRPTUFnZW50OjpzZXRBdHRyaWJ1dGUoRXJyb3JTdHJpbmcqLCBsb25nIGVsZW1lbnRJZCwgY29u
c3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHZhbHVlLCBib29sKiBzdWNjZXNzKQogewog
ICAgIE5vZGUqIG5vZGUgPSBub2RlRm9ySWQoZWxlbWVudElkKTsKQEAgLTgwMiw5ICs4MjIsMTEg
QEAgdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6c2VhcmNoQ2FuY2VsZWQoRXJyb3JTdHJpbmcqKQog
dm9pZCBJbnNwZWN0b3JET01BZ2VudDo6cmVzb2x2ZU5vZGUoRXJyb3JTdHJpbmcqIGVycm9yLCBs
b25nIG5vZGVJZCwgY29uc3QgU3RyaW5nJiBvYmplY3RHcm91cCwgUmVmUHRyPEluc3BlY3RvclZh
bHVlPiogcmVzdWx0KQogewogICAgIE5vZGUqIG5vZGUgPSBub2RlRm9ySWQobm9kZUlkKTsKLSAg
ICBJbmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlwdCA9IGluamVjdGVkU2NyaXB0Rm9yTm9kZShl
cnJvciwgbm9kZSk7Ci0gICAgaWYgKGVycm9yLT5pc0VtcHR5KCkpCi0gICAgICAgICpyZXN1bHQg
PSBpbmplY3RlZFNjcmlwdC53cmFwTm9kZShub2RlLCBvYmplY3RHcm91cCk7CisgICAgaWYgKCFu
b2RlKSB7CisgICAgICAgICplcnJvciA9ICJObyBub2RlIHdpdGggZ2l2ZW4gaWQgZm91bmQuIjsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAqcmVzdWx0ID0gcmVzb2x2ZU5vZGUobm9kZSwg
b2JqZWN0R3JvdXApOwogfQogCiB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpwdXNoTm9kZVRvRnJv
bnRlbmQoRXJyb3JTdHJpbmcqLCBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gb2JqZWN0SWQs
IGxvbmcqIG5vZGVJZCkKQEAgLTEwMDQsNyArMTAyNiw4IEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdl
bnQ6Om1haW5GcmFtZURPTUNvbnRlbnRMb2FkZWQoKQogewogICAgIC8vIFJlLXB1c2ggZG9jdW1l
bnQgb25jZSBpdCBpcyBsb2FkZWQuCiAgICAgZGlzY2FyZEJpbmRpbmdzKCk7Ci0gICAgcHVzaERv
Y3VtZW50VG9Gcm9udGVuZCgpOworICAgIGlmIChtX2luc3BlY3RvclN0YXRlLT5nZXRCb29sZWFu
KERPTUFnZW50U3RhdGU6OmRvY3VtZW50UmVxdWVzdGVkKSkKKyAgICAgICAgbV9mcm9udGVuZC0+
ZG9jdW1lbnRVcGRhdGVkKCk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmxvYWRFdmVu
dEZpcmVkKERvY3VtZW50KiBkb2N1bWVudCkKQEAgLTExOTksMjMgKzEyMjIsMTggQEAgdm9pZCBJ
bnNwZWN0b3JET01BZ2VudDo6cHVzaE5vZGVCeVBhdGhUb0Zyb250ZW5kKEVycm9yU3RyaW5nKiwg
Y29uc3QgU3RyaW5nJiBwYXQKICAgICAgICAgKm5vZGVJZCA9IHB1c2hOb2RlUGF0aFRvRnJvbnRl
bmQobm9kZSk7CiB9CiAKLUluamVjdGVkU2NyaXB0IEluc3BlY3RvckRPTUFnZW50OjppbmplY3Rl
ZFNjcmlwdEZvck5vZGUoRXJyb3JTdHJpbmcqIGVycm9yLCBOb2RlKiBub2RlKQorUGFzc1JlZlB0
cjxJbnNwZWN0b3JPYmplY3Q+IEluc3BlY3RvckRPTUFnZW50OjpyZXNvbHZlTm9kZShOb2RlKiBu
b2RlLCBjb25zdCBTdHJpbmcmIG9iamVjdEdyb3VwKQogewotICAgIGlmICghbm9kZSkgewotICAg
ICAgICAqZXJyb3IgPSAiTm8gbm9kZSB3aXRoIGdpdmVuIGlkIGZvdW5kLiI7Ci0gICAgICAgIHJl
dHVybiBJbmplY3RlZFNjcmlwdCgpOwotICAgIH0KLQogICAgIERvY3VtZW50KiBkb2N1bWVudCA9
IG5vZGUtPm93bmVyRG9jdW1lbnQoKTsKLSAgICBGcmFtZSogZnJhbWUgPSBkb2N1bWVudC0+ZnJh
bWUoKTsKKyAgICBGcmFtZSogZnJhbWUgPSBkb2N1bWVudCA/IGRvY3VtZW50LT5mcmFtZSgpIDog
MDsKKyAgICBpZiAoIWZyYW1lKQorICAgICAgICByZXR1cm4gMDsKIAogICAgIEluamVjdGVkU2Ny
aXB0IGluamVjdGVkU2NyaXB0ID0gbV9pbmplY3RlZFNjcmlwdEhvc3QtPmluamVjdGVkU2NyaXB0
Rm9yKG1haW5Xb3JsZFNjcmlwdFN0YXRlKGZyYW1lKSk7Ci0gICAgaWYgKGluamVjdGVkU2NyaXB0
Lmhhc05vVmFsdWUoKSkgewotICAgICAgICAqZXJyb3IgPSAiTm8gSmF2YVNjcmlwdCB3b3JsZCBm
b3VuZCBmb3Igbm9kZSB3aXRoIGdpdmVuIGlkLiI7Ci0gICAgICAgIHJldHVybiBJbmplY3RlZFNj
cmlwdCgpOwotICAgIH0KKyAgICBpZiAoaW5qZWN0ZWRTY3JpcHQuaGFzTm9WYWx1ZSgpKQorICAg
ICAgICByZXR1cm4gMDsKIAotICAgIHJldHVybiBpbmplY3RlZFNjcmlwdDsKKyAgICByZXR1cm4g
aW5qZWN0ZWRTY3JpcHQud3JhcE5vZGUobm9kZSwgb2JqZWN0R3JvdXApOwogfQogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yRE9NQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01B
Z2VudC5oCmluZGV4IDAzNzJjZTcyMjQwNjM3NWJmMThiMzI4ZDc2NGRjZjdhYTU1NmI2YzAuLjAz
Njg4ODBhYzcyOGQwMzgyYzM4ZjNlZjk0MDc2MjM2ZmJkYjgzNjkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5oCkBAIC01NSw2ICs1NSw3IEBAIGNsYXNz
IEV2ZW50OwogY2xhc3MgSW5zcGVjdG9yRE9NQWdlbnQ7CiBjbGFzcyBJbnNwZWN0b3JGcm9udGVu
ZDsKIGNsYXNzIE1hdGNoSm9iOworY2xhc3MgSW5zcGVjdG9yU3RhdGU7CiBjbGFzcyBJbnN0cnVt
ZW50aW5nQWdlbnRzOwogY2xhc3MgTmFtZU5vZGVNYXA7CiBjbGFzcyBOb2RlOwpAQCAtOTAsOSAr
OTEsOSBAQCBwdWJsaWM6CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRNb2RpZnlET01BdHRyKEVs
ZW1lbnQqKSA9IDA7CiAgICAgfTsKIAotICAgIHN0YXRpYyBQYXNzT3duUHRyPEluc3BlY3RvckRP
TUFnZW50PiBjcmVhdGUoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywg
SW5qZWN0ZWRTY3JpcHRIb3N0KiBpbmplY3RlZFNjcmlwdEhvc3QpCisgICAgc3RhdGljIFBhc3NP
d25QdHI8SW5zcGVjdG9yRE9NQWdlbnQ+IGNyZWF0ZShJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0
cnVtZW50aW5nQWdlbnRzLCBJbnNwZWN0b3JTdGF0ZSogaW5zcGVjdG9yU3RhdGUsIEluamVjdGVk
U2NyaXB0SG9zdCogaW5qZWN0ZWRTY3JpcHRIb3N0KQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFk
b3B0UHRyKG5ldyBJbnNwZWN0b3JET01BZ2VudChpbnN0cnVtZW50aW5nQWdlbnRzLCBpbmplY3Rl
ZFNjcmlwdEhvc3QpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBJbnNwZWN0b3JET01B
Z2VudChpbnN0cnVtZW50aW5nQWdlbnRzLCBpbnNwZWN0b3JTdGF0ZSwgaW5qZWN0ZWRTY3JpcHRI
b3N0KSk7CiAgICAgfQogCiAgICAgfkluc3BlY3RvckRPTUFnZW50KCk7CkBAIC0xMDMsOSArMTA0
LDEwIEBAIHB1YmxpYzoKICAgICBWZWN0b3I8RG9jdW1lbnQqPiBkb2N1bWVudHMoKTsKICAgICB2
b2lkIHJlc2V0KCk7CiAKKyAgICAvLyBNZXRob2RzIGNhbGxlZCBmcm9tIHRoZSBmcm9udGVuZCBm
b3IgRE9NIG5vZGVzIGluc3BlY3Rpb24uCiAgICAgdm9pZCBxdWVyeVNlbGVjdG9yKEVycm9yU3Ry
aW5nKiwgbG9uZyBub2RlSWQsIGNvbnN0IFN0cmluZyYgc2VsZWN0b3JzLCBib29sIGRvY3VtZW50
V2lkZSwgbG9uZyogZWxlbWVudElkKTsKICAgICB2b2lkIHF1ZXJ5U2VsZWN0b3JBbGwoRXJyb3JT
dHJpbmcqLCBsb25nIG5vZGVJZCwgY29uc3QgU3RyaW5nJiBzZWxlY3RvcnMsIGJvb2wgZG9jdW1l
bnRXaWRlLCBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+KiByZXN1bHQpOwotICAgIC8vIE1ldGhvZHMg
Y2FsbGVkIGZyb20gdGhlIGZyb250ZW5kIGZvciBET00gbm9kZXMgaW5zcGVjdGlvbi4KKyAgICB2
b2lkIGdldERvY3VtZW50KEVycm9yU3RyaW5nKiwgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4qIHJv
b3QpOwogICAgIHZvaWQgZ2V0Q2hpbGROb2RlcyhFcnJvclN0cmluZyosIGxvbmcgbm9kZUlkKTsK
ICAgICB2b2lkIHNldEF0dHJpYnV0ZShFcnJvclN0cmluZyosIGxvbmcgZWxlbWVudElkLCBjb25z
dCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUsIGJvb2wqIHN1Y2Nlc3MpOwogICAg
IHZvaWQgcmVtb3ZlQXR0cmlidXRlKEVycm9yU3RyaW5nKiwgbG9uZyBlbGVtZW50SWQsIGNvbnN0
IFN0cmluZyYgbmFtZSwgYm9vbCogc3VjY2Vzcyk7CkBAIC0xMjAsNiArMTIyLDcgQEAgcHVibGlj
OgogICAgIHZvaWQgc2VhcmNoQ2FuY2VsZWQoRXJyb3JTdHJpbmcqKTsKICAgICB2b2lkIHJlc29s
dmVOb2RlKEVycm9yU3RyaW5nKiwgbG9uZyBub2RlSWQsIGNvbnN0IFN0cmluZyYgb2JqZWN0R3Jv
dXAsIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4qIHJlc3VsdCk7CiAgICAgdm9pZCBwdXNoTm9kZVRv
RnJvbnRlbmQoRXJyb3JTdHJpbmcqLCBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gb2JqZWN0
SWQsIGxvbmcqIG5vZGVJZCk7CisgICAgdm9pZCBwdXNoTm9kZUJ5UGF0aFRvRnJvbnRlbmQoRXJy
b3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIHBhdGgsIGxvbmcqIG5vZGVJZCk7CiAKICAgICAvLyBN
ZXRob2RzIGNhbGxlZCBmcm9tIHRoZSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uCiAgICAgdm9p
ZCBzZXREb2N1bWVudChEb2N1bWVudCopOwpAQCAtMTM1LDE0ICsxMzgsMTQgQEAgcHVibGljOgog
ICAgIHZvaWQgZGlkSW52YWxpZGF0ZVN0eWxlQXR0cihOb2RlKik7CiAKICAgICBOb2RlKiBub2Rl
Rm9ySWQobG9uZyBub2RlSWQpOwotICAgIGxvbmcgcHVzaE5vZGVQYXRoVG9Gcm9udGVuZChOb2Rl
Kik7Ci0gICAgdm9pZCBwdXNoQ2hpbGROb2Rlc1RvRnJvbnRlbmQobG9uZyBub2RlSWQpOwotICAg
IHZvaWQgcHVzaE5vZGVCeVBhdGhUb0Zyb250ZW5kKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5n
JiBwYXRoLCBsb25nKiBub2RlSWQpOworICAgIGxvbmcgYm91bmROb2RlSWQoTm9kZSopOwogICAg
IHZvaWQgY29weU5vZGUoRXJyb3JTdHJpbmcqLCBsb25nIG5vZGVJZCk7CiAgICAgdm9pZCBzZXRE
T01MaXN0ZW5lcihET01MaXN0ZW5lciopOwogCiAgICAgU3RyaW5nIGRvY3VtZW50VVJMU3RyaW5n
KERvY3VtZW50KikgY29uc3Q7CiAKKyAgICBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gcmVz
b2x2ZU5vZGUoTm9kZSosIGNvbnN0IFN0cmluZyYgb2JqZWN0R3JvdXApOworCiAgICAgLy8gV2Ug
cmVwcmVzZW50IGVtYmVkZGVkIGRvbXMgYXMgYSBwYXJ0IG9mIHRoZSBzYW1lIGhpZXJhcmNoeS4g
SGVuY2Ugd2UgdHJlYXQgY2hpbGRyZW4gb2YgZnJhbWUgb3duZXJzIGRpZmZlcmVudGx5LgogICAg
IC8vIFdlIGFsc28gc2tpcCB3aGl0ZXNwYWNlIHRleHQgbm9kZXMgY29uZGl0aW9uYWxseS4gRm9s
bG93aW5nIG1ldGhvZHMgZW5jYXBzdWxhdGUgdGhlc2Ugc3BlY2lmaWNzLgogICAgIHN0YXRpYyBO
b2RlKiBpbm5lckZpcnN0Q2hpbGQoTm9kZSopOwpAQCAtMTUzLDcgKzE1Niw3IEBAIHB1YmxpYzoK
ICAgICBzdGF0aWMgYm9vbCBpc1doaXRlc3BhY2UoTm9kZSopOwogCiBwcml2YXRlOgotICAgIElu
c3BlY3RvckRPTUFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMqLCBJbmplY3RlZFNjcmlwdEhvc3Qq
KTsKKyAgICBJbnNwZWN0b3JET01BZ2VudChJbnN0cnVtZW50aW5nQWdlbnRzKiwgSW5zcGVjdG9y
U3RhdGUqLCBJbmplY3RlZFNjcmlwdEhvc3QqKTsKIAogICAgIC8vIE5vZGUtcmVsYXRlZCBtZXRo
b2RzLgogICAgIHR5cGVkZWYgSGFzaE1hcDxSZWZQdHI8Tm9kZT4sIGxvbmc+IE5vZGVUb0lkTWFw
OwpAQCAtMTYyLDcgKzE2NSw4IEBAIHByaXZhdGU6CiAKICAgICBOb2RlKiBub2RlVG9TZWxlY3RP
bihsb25nIG5vZGVJZCwgYm9vbCBkb2N1bWVudFdpZGUpOwogCi0gICAgYm9vbCBwdXNoRG9jdW1l
bnRUb0Zyb250ZW5kKCk7CisgICAgbG9uZyBwdXNoTm9kZVBhdGhUb0Zyb250ZW5kKE5vZGUqKTsK
KyAgICB2b2lkIHB1c2hDaGlsZE5vZGVzVG9Gcm9udGVuZChsb25nIG5vZGVJZCk7CiAKICAgICBi
b29sIGhhc0JyZWFrcG9pbnQoTm9kZSosIGxvbmcgdHlwZSk7CiAgICAgdm9pZCB1cGRhdGVTdWJ0
cmVlQnJlYWtwb2ludHMoTm9kZSogcm9vdCwgdWludDMyX3Qgcm9vdE1hc2ssIGJvb2wgdmFsdWUp
OwpAQCAtMTgxLDkgKzE4NSw4IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGRpc2NhcmRCaW5kaW5n
cygpOwogCi0gICAgSW5qZWN0ZWRTY3JpcHQgaW5qZWN0ZWRTY3JpcHRGb3JOb2RlKEVycm9yU3Ry
aW5nKiwgTm9kZSopOwotCiAgICAgSW5zdHJ1bWVudGluZ0FnZW50cyogbV9pbnN0cnVtZW50aW5n
QWdlbnRzOworICAgIEluc3BlY3RvclN0YXRlKiBtX2luc3BlY3RvclN0YXRlOwogICAgIEluamVj
dGVkU2NyaXB0SG9zdCogbV9pbmplY3RlZFNjcmlwdEhvc3Q7CiAgICAgSW5zcGVjdG9yRnJvbnRl
bmQ6OkRPTSogbV9mcm9udGVuZDsKICAgICBET01MaXN0ZW5lciogbV9kb21MaXN0ZW5lcjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQnJlYWtwb2ludE1h
bmFnZXIuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0JyZWFrcG9pbnRN
YW5hZ2VyLmpzCmluZGV4IDMyNTcxNmE3MmYzYmVjZGI4ZTNiMGQ2NWQzNzJmODc5N2I3M2UwMTUu
LmY2MjQxZjc4MmIwZjNlZjg2ODZlZDVmZWNlNDU3YjAyZTUyYWRkMzMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQnJlYWtwb2ludE1hbmFnZXIuanMKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9CcmVha3BvaW50TWFuYWdlci5q
cwpAQCAtMjE2LDYgKzIxNiw5IEBAIFdlYkluc3BlY3Rvci5CcmVha3BvaW50TWFuYWdlci5wcm90
b3R5cGUgPSB7CiAgICAgewogICAgICAgICBmdW5jdGlvbiBkaWRQdXNoTm9kZUJ5UGF0aFRvRnJv
bnRlbmQocGF0aCwgbm9kZUlkKQogICAgICAgICB7CisgICAgICAgICAgICBpZiAoIW5vZGVJZCkK
KyAgICAgICAgICAgICAgICByZXR1cm47CisKICAgICAgICAgICAgIHBhdGhUb05vZGVJZFtwYXRo
XSA9IG5vZGVJZDsKICAgICAgICAgICAgIHBlbmRpbmdDYWxscyAtPSAxOwogICAgICAgICAgICAg
aWYgKHBlbmRpbmdDYWxscykKQEAgLTI0Myw3ICsyNDYsNyBAQCBXZWJJbnNwZWN0b3IuQnJlYWtw
b2ludE1hbmFnZXIucHJvdG90eXBlID0gewogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAg
ICAgICAgICAgcGF0aFRvTm9kZUlkW3BhdGhdID0gMDsKICAgICAgICAgICAgIHBlbmRpbmdDYWxs
cyArPSAxOwotICAgICAgICAgICAgRE9NQWdlbnQucHVzaE5vZGVCeVBhdGhUb0Zyb250ZW5kKHBh
dGgsIGRpZFB1c2hOb2RlQnlQYXRoVG9Gcm9udGVuZC5iaW5kKHRoaXMsIHBhdGgpKTsKKyAgICAg
ICAgICAgIFdlYkluc3BlY3Rvci5kb21BZ2VudC5wdXNoTm9kZUJ5UGF0aFRvRnJvbnRlbmQocGF0
aCwgZGlkUHVzaE5vZGVCeVBhdGhUb0Zyb250ZW5kLmJpbmQodGhpcywgcGF0aCkpOwogICAgICAg
ICB9CiAgICAgICAgIGlmICghcGVuZGluZ0NhbGxzKQogICAgICAgICAgICAgdGhpcy5fZG9tQnJl
YWtwb2ludHNSZXN0b3JlZCA9IHRydWU7CkBAIC00OTAsMTQgKzQ5MywyMyBAQCBXZWJJbnNwZWN0
b3IuRE9NQnJlYWtwb2ludFZpZXcucHJvdG90eXBlID0gewogICAgICAgICAgICAgZWxlbWVudC5h
cHBlbmRDaGlsZChiKTsKICAgICAgICAgfQogICAgICAgICBpZiAodGhpcy5fdHlwZSA9PT0gV2Vi
SW5zcGVjdG9yLkRPTUJyZWFrcG9pbnRUeXBlcy5TdWJ0cmVlTW9kaWZpZWQpIHsKLSAgICAgICAg
ICAgIHZhciB0YXJnZXROb2RlID0gV2ViSW5zcGVjdG9yLnBhbmVscy5lbGVtZW50cy5saW5raWZ5
Tm9kZUJ5SWQoZXZlbnREYXRhLnRhcmdldE5vZGVJZCk7Ci0gICAgICAgICAgICBpZiAoZXZlbnRE
YXRhLmluc2VydGlvbikgewotICAgICAgICAgICAgICAgIGlmIChldmVudERhdGEudGFyZ2V0Tm9k
ZUlkICE9PSB0aGlzLl9ub2RlSWQpCi0gICAgICAgICAgICAgICAgICAgIFdlYkluc3BlY3Rvci5m
b3JtYXRMb2NhbGl6ZWQoIlBhdXNlZCBvbiBhIFwiJXNcIiBicmVha3BvaW50IHNldCBvbiAlcywg
YmVjYXVzZSBhIG5ldyBjaGlsZCB3YXMgYWRkZWQgdG8gaXRzIGRlc2NlbmRhbnQgJXMuIiwgc3Vi
c3RpdHV0aW9ucy5jb25jYXQodGFyZ2V0Tm9kZSksIGZvcm1hdHRlcnMsICIiLCBhcHBlbmQpOwot
ICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgV2ViSW5zcGVjdG9yLmZv
cm1hdExvY2FsaXplZCgiUGF1c2VkIG9uIGEgXCIlc1wiIGJyZWFrcG9pbnQgc2V0IG9uICVzLCBi
ZWNhdXNlIGEgbmV3IGNoaWxkIHdhcyBhZGRlZCB0byB0aGF0IG5vZGUuIiwgc3Vic3RpdHV0aW9u
cywgZm9ybWF0dGVycywgIiIsIGFwcGVuZCk7Ci0gICAgICAgICAgICB9IGVsc2UKLSAgICAgICAg
ICAgICAgICBXZWJJbnNwZWN0b3IuZm9ybWF0TG9jYWxpemVkKCJQYXVzZWQgb24gYSBcIiVzXCIg
YnJlYWtwb2ludCBzZXQgb24gJXMsIGJlY2F1c2UgaXRzIGRlc2NlbmRhbnQgJXMgd2FzIHJlbW92
ZWQuIiwgc3Vic3RpdHV0aW9ucy5jb25jYXQodGFyZ2V0Tm9kZSksIGZvcm1hdHRlcnMsICIiLCBh
cHBlbmQpOworICAgICAgICAgICAgdmFyIHRhcmdldE5vZGVPYmplY3QgPSBXZWJJbnNwZWN0b3Iu
UmVtb3RlT2JqZWN0LmZyb21QYXlsb2FkKGV2ZW50RGF0YS50YXJnZXROb2RlKTsKKyAgICAgICAg
ICAgIHRhcmdldE5vZGVPYmplY3QucHVzaE5vZGVUb0Zyb250ZW5kKGRlY29yYXRlTm9kZS5iaW5k
KHRoaXMpKTsKKyAgICAgICAgICAgIGZ1bmN0aW9uIGRlY29yYXRlTm9kZSh0YXJnZXROb2RlSWQp
CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgaWYgKCF0YXJnZXROb2RlSWQpCisgICAg
ICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgICAgIFJ1bnRpbWVBZ2VudC5y
ZWxlYXNlT2JqZWN0KGV2ZW50RGF0YS50YXJnZXROb2RlKTsKKyAgICAgICAgICAgICAgICB2YXIg
dGFyZ2V0Tm9kZSA9IFdlYkluc3BlY3Rvci5wYW5lbHMuZWxlbWVudHMubGlua2lmeU5vZGVCeUlk
KHRhcmdldE5vZGVJZCk7CisgICAgICAgICAgICAgICAgaWYgKGV2ZW50RGF0YS5pbnNlcnRpb24p
IHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHRhcmdldE5vZGVJZCAhPT0gdGhpcy5fbm9kZUlk
KQorICAgICAgICAgICAgICAgICAgICAgICAgV2ViSW5zcGVjdG9yLmZvcm1hdExvY2FsaXplZCgi
UGF1c2VkIG9uIGEgXCIlc1wiIGJyZWFrcG9pbnQgc2V0IG9uICVzLCBiZWNhdXNlIGEgbmV3IGNo
aWxkIHdhcyBhZGRlZCB0byBpdHMgZGVzY2VuZGFudCAlcy4iLCBzdWJzdGl0dXRpb25zLmNvbmNh
dCh0YXJnZXROb2RlKSwgZm9ybWF0dGVycywgIiIsIGFwcGVuZCk7CisgICAgICAgICAgICAgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgIFdlYkluc3BlY3Rvci5mb3JtYXRMb2Nh
bGl6ZWQoIlBhdXNlZCBvbiBhIFwiJXNcIiBicmVha3BvaW50IHNldCBvbiAlcywgYmVjYXVzZSBh
IG5ldyBjaGlsZCB3YXMgYWRkZWQgdG8gdGhhdCBub2RlLiIsIHN1YnN0aXR1dGlvbnMsIGZvcm1h
dHRlcnMsICIiLCBhcHBlbmQpOworICAgICAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAg
ICAgICAgICBXZWJJbnNwZWN0b3IuZm9ybWF0TG9jYWxpemVkKCJQYXVzZWQgb24gYSBcIiVzXCIg
YnJlYWtwb2ludCBzZXQgb24gJXMsIGJlY2F1c2UgaXRzIGRlc2NlbmRhbnQgJXMgd2FzIHJlbW92
ZWQuIiwgc3Vic3RpdHV0aW9ucy5jb25jYXQodGFyZ2V0Tm9kZSksIGZvcm1hdHRlcnMsICIiLCBh
cHBlbmQpOworICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIFdlYklu
c3BlY3Rvci5mb3JtYXRMb2NhbGl6ZWQoIlBhdXNlZCBvbiBhIFwiJXNcIiBicmVha3BvaW50IHNl
dCBvbiAlcy4iLCBzdWJzdGl0dXRpb25zLCBmb3JtYXR0ZXJzLCAiIiwgYXBwZW5kKTsKICAgICB9
LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9ET01BZ2Vu
dC5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRE9NQWdlbnQuanMKaW5k
ZXggMDlkMmY1ZmJmNDgzMTY5NzY4MDk5NTZmZTAyZGVmNDUxNjIwZGUyOC4uY2IyOGFiYTcwOGFl
ZjQxMDA3MDNiNTE4MWY5MjNhOGU2NjAyYzk2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9ET01BZ2VudC5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL0RPTUFnZW50LmpzCkBAIC0yMjMsMTIgKzIyMywxMSBAQCBXZWJJbnNw
ZWN0b3IuRE9NTm9kZS5wcm90b3R5cGUgPSB7CiAgICAgfQogfQogCi1XZWJJbnNwZWN0b3IuRE9N
RG9jdW1lbnQgPSBmdW5jdGlvbihkb21BZ2VudCwgZGVmYXVsdFZpZXcsIHBheWxvYWQpCitXZWJJ
bnNwZWN0b3IuRE9NRG9jdW1lbnQgPSBmdW5jdGlvbihkb21BZ2VudCwgcGF5bG9hZCkKIHsKICAg
ICBXZWJJbnNwZWN0b3IuRE9NTm9kZS5jYWxsKHRoaXMsIHRoaXMsIHBheWxvYWQpOwogICAgIHRo
aXMuX2xpc3RlbmVycyA9IHt9OwogICAgIHRoaXMuX2RvbUFnZW50ID0gZG9tQWdlbnQ7Ci0gICAg
dGhpcy5kZWZhdWx0VmlldyA9IGRlZmF1bHRWaWV3OwogfQogCiBXZWJJbnNwZWN0b3IuRE9NRG9j
dW1lbnQucHJvdG90eXBlID0gewpAQCAtMjY5LDQ0ICsyNjgsNDggQEAgV2ViSW5zcGVjdG9yLkRP
TURvY3VtZW50LnByb3RvdHlwZSA9IHsKIAogV2ViSW5zcGVjdG9yLkRPTURvY3VtZW50LnByb3Rv
dHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuRE9NTm9kZS5wcm90b3R5cGU7CiAKLQotV2Vi
SW5zcGVjdG9yLkRPTVdpbmRvdyA9IGZ1bmN0aW9uKGRvbUFnZW50KQotewotICAgIHRoaXMuX2Rv
bUFnZW50ID0gZG9tQWdlbnQ7CitXZWJJbnNwZWN0b3IuRE9NQWdlbnQgPSBmdW5jdGlvbigpIHsK
KyAgICB0aGlzLl9pZFRvRE9NTm9kZSA9IG51bGw7CisgICAgdGhpcy5fZG9jdW1lbnQgPSBudWxs
OworICAgIEluc3BlY3RvckJhY2tlbmQucmVnaXN0ZXJEb21haW5EaXNwYXRjaGVyKCJET00iLCBu
ZXcgV2ViSW5zcGVjdG9yLkRPTURpc3BhdGNoZXIodGhpcykpOwogfQogCi1XZWJJbnNwZWN0b3Iu
RE9NV2luZG93LnByb3RvdHlwZSA9IHsKLSAgICBnZXQgZG9jdW1lbnQoKQotICAgIHsKLSAgICAg
ICAgcmV0dXJuIHRoaXMuX2RvbUFnZW50LmRvY3VtZW50OwotICAgIH0sCi0KLSAgICBnZXQgTm9k
ZSgpCitXZWJJbnNwZWN0b3IuRE9NQWdlbnQucHJvdG90eXBlID0geworICAgIHJlcXVlc3REb2N1
bWVudDogZnVuY3Rpb24oY2FsbGJhY2spCiAgICAgewotICAgICAgICByZXR1cm4gV2ViSW5zcGVj
dG9yLkRPTU5vZGU7CisgICAgICAgIGlmICh0aGlzLl9kb2N1bWVudCkgeworICAgICAgICAgICAg
aWYgKGNhbGxiYWNrKQorICAgICAgICAgICAgICAgIGNhbGxiYWNrKHRoaXMuX2RvY3VtZW50KTsK
KyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICB0aGlzLl9kb2N1bWVudFVwZGF0ZWQoY2FsbGJh
Y2spOwogICAgIH0sCiAKLSAgICBnZXQgRWxlbWVudCgpCisgICAgcHVzaE5vZGVUb0Zyb250ZW5k
OiBmdW5jdGlvbihvYmplY3RJZCwgY2FsbGJhY2spCiAgICAgewotICAgICAgICByZXR1cm4gV2Vi
SW5zcGVjdG9yLkRPTU5vZGU7CisgICAgICAgIGZ1bmN0aW9uIG15Y2FsbGJhY2soKQorICAgICAg
ICB7CisgICAgICAgICAgICBpZiAodGhpcy5fZG9jdW1lbnQpCisgICAgICAgICAgICAgICAgRE9N
QWdlbnQucHVzaE5vZGVUb0Zyb250ZW5kKG9iamVjdElkLCBjYWxsYmFjayk7CisgICAgICAgICAg
ICBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZiAoY2FsbGJhY2spCisgICAgICAgICAgICAgICAg
ICAgIGNhbGxiYWNrKDApOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHRoaXMu
cmVxdWVzdERvY3VtZW50KG15Y2FsbGJhY2suYmluZCh0aGlzKSk7CiAgICAgfSwKIAotICAgIE9i
amVjdDogZnVuY3Rpb24oKQotICAgIHsKLSAgICB9Ci19Ci0KLVdlYkluc3BlY3Rvci5ET01BZ2Vu
dCA9IGZ1bmN0aW9uKCkgewotICAgIHRoaXMuX3dpbmRvdyA9IG5ldyBXZWJJbnNwZWN0b3IuRE9N
V2luZG93KHRoaXMpOwotICAgIHRoaXMuX2lkVG9ET01Ob2RlID0gbnVsbDsKLSAgICB0aGlzLmRv
Y3VtZW50ID0gbnVsbDsKLSAgICBJbnNwZWN0b3JCYWNrZW5kLnJlZ2lzdGVyRG9tYWluRGlzcGF0
Y2hlcigiRE9NIiwgbmV3IFdlYkluc3BlY3Rvci5ET01EaXNwYXRjaGVyKHRoaXMpKTsKLX0KLQot
V2ViSW5zcGVjdG9yLkRPTUFnZW50LnByb3RvdHlwZSA9IHsKLSAgICBnZXQgZG9tV2luZG93KCkK
KyAgICBwdXNoTm9kZUJ5UGF0aFRvRnJvbnRlbmQ6IGZ1bmN0aW9uKHBhdGgsIGNhbGxiYWNrKQog
ICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuX3dpbmRvdzsKKyAgICAgICAgZnVuY3Rpb24gbXlj
YWxsYmFjaygpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh0aGlzLl9kb2N1bWVudCkKKyAg
ICAgICAgICAgICAgICBET01BZ2VudC5wdXNoTm9kZUJ5UGF0aFRvRnJvbnRlbmQocGF0aCwgY2Fs
bGJhY2spOworICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgaWYgKGNhbGxiYWNr
KQorICAgICAgICAgICAgICAgICAgICBjYWxsYmFjaygwKTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfQorICAgICAgICB0aGlzLnJlcXVlc3REb2N1bWVudChteWNhbGxiYWNrLmJpbmQodGhpcykp
OwogICAgIH0sCiAKICAgICBnZXRDaGlsZE5vZGVzQXN5bmM6IGZ1bmN0aW9uKHBhcmVudCwgY2Fs
bGJhY2spCkBAIC0zNTYsNyArMzU5LDcgQEAgV2ViSW5zcGVjdG9yLkRPTUFnZW50LnByb3RvdHlw
ZSA9IHsKICAgICAgICAgdmFyIG5vZGUgPSB0aGlzLl9pZFRvRE9NTm9kZVtub2RlSWRdOwogICAg
ICAgICBub2RlLl9zZXRBdHRyaWJ1dGVzUGF5bG9hZChhdHRyc0FycmF5KTsKICAgICAgICAgdmFy
IGV2ZW50ID0ge3RhcmdldDogbm9kZX07Ci0gICAgICAgIHRoaXMuZG9jdW1lbnQuX2ZpcmVEb21F
dmVudCgiRE9NQXR0ck1vZGlmaWVkIiwgZXZlbnQpOworICAgICAgICB0aGlzLl9kb2N1bWVudC5f
ZmlyZURvbUV2ZW50KCJET01BdHRyTW9kaWZpZWQiLCBldmVudCk7CiAgICAgfSwKIAogICAgIF9j
aGFyYWN0ZXJEYXRhTW9kaWZpZWQ6IGZ1bmN0aW9uKG5vZGVJZCwgbmV3VmFsdWUpCkBAIC0zNjUs
NyArMzY4LDcgQEAgV2ViSW5zcGVjdG9yLkRPTUFnZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAg
bm9kZS5fbm9kZVZhbHVlID0gbmV3VmFsdWU7CiAgICAgICAgIG5vZGUudGV4dENvbnRlbnQgPSBu
ZXdWYWx1ZTsKICAgICAgICAgdmFyIGV2ZW50ID0geyB0YXJnZXQgOiBub2RlIH07Ci0gICAgICAg
IHRoaXMuZG9jdW1lbnQuX2ZpcmVEb21FdmVudCgiRE9NQ2hhcmFjdGVyRGF0YU1vZGlmaWVkIiwg
ZXZlbnQpOworICAgICAgICB0aGlzLl9kb2N1bWVudC5fZmlyZURvbUV2ZW50KCJET01DaGFyYWN0
ZXJEYXRhTW9kaWZpZWQiLCBldmVudCk7CiAgICAgfSwKIAogICAgIG5vZGVGb3JJZDogZnVuY3Rp
b24obm9kZUlkKQpAQCAtMzczLDI3ICszNzYsNDMgQEAgV2ViSW5zcGVjdG9yLkRPTUFnZW50LnBy
b3RvdHlwZSA9IHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2lkVG9ET01Ob2RlW25vZGVJZF07CiAg
ICAgfSwKIAorICAgIF9kb2N1bWVudFVwZGF0ZWQ6IGZ1bmN0aW9uKGNhbGxiYWNrKQorICAgIHsK
KyAgICAgICAgZnVuY3Rpb24gbXljYWxsYmFjayhyb290KQorICAgICAgICB7CisgICAgICAgICAg
ICB0aGlzLl9zZXREb2N1bWVudChyb290KTsKKyAgICAgICAgICAgIGlmIChjYWxsYmFjaykKKyAg
ICAgICAgICAgICAgICBjYWxsYmFjayh0aGlzLl9kb2N1bWVudCk7CisgICAgICAgIH0KKyAgICAg
ICAgRE9NQWdlbnQuZ2V0RG9jdW1lbnQobXljYWxsYmFjay5iaW5kKHRoaXMpKTsKKyAgICB9LAor
CiAgICAgX3NldERvY3VtZW50OiBmdW5jdGlvbihwYXlsb2FkKQogICAgIHsKICAgICAgICAgdGhp
cy5faWRUb0RPTU5vZGUgPSB7fTsKICAgICAgICAgaWYgKHBheWxvYWQgJiYgImlkIiBpbiBwYXls
b2FkKSB7Ci0gICAgICAgICAgICB0aGlzLmRvY3VtZW50ID0gbmV3IFdlYkluc3BlY3Rvci5ET01E
b2N1bWVudCh0aGlzLCB0aGlzLl93aW5kb3csIHBheWxvYWQpOwotICAgICAgICAgICAgdGhpcy5f
aWRUb0RPTU5vZGVbcGF5bG9hZC5pZF0gPSB0aGlzLmRvY3VtZW50OwotICAgICAgICAgICAgdGhp
cy5fYmluZE5vZGVzKHRoaXMuZG9jdW1lbnQuY2hpbGRyZW4pOworICAgICAgICAgICAgdGhpcy5f
ZG9jdW1lbnQgPSBuZXcgV2ViSW5zcGVjdG9yLkRPTURvY3VtZW50KHRoaXMsIHBheWxvYWQpOwor
ICAgICAgICAgICAgdGhpcy5faWRUb0RPTU5vZGVbcGF5bG9hZC5pZF0gPSB0aGlzLl9kb2N1bWVu
dDsKKyAgICAgICAgICAgIHRoaXMuX2JpbmROb2Rlcyh0aGlzLl9kb2N1bWVudC5jaGlsZHJlbik7
CiAgICAgICAgICAgICBXZWJJbnNwZWN0b3IuYnJlYWtwb2ludE1hbmFnZXIucmVzdG9yZURPTUJy
ZWFrcG9pbnRzKCk7CiAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgdGhpcy5kb2N1bWVudCA9
IG51bGw7Ci0gICAgICAgIFdlYkluc3BlY3Rvci5wYW5lbHMuZWxlbWVudHMuc2V0RG9jdW1lbnQo
dGhpcy5kb2N1bWVudCk7CisgICAgICAgICAgICB0aGlzLl9kb2N1bWVudCA9IG51bGw7CisgICAg
ICAgIFdlYkluc3BlY3Rvci5wYW5lbHMuZWxlbWVudHMuc2V0RG9jdW1lbnQodGhpcy5fZG9jdW1l
bnQpOwogICAgIH0sCiAKICAgICBfc2V0RGV0YWNoZWRSb290OiBmdW5jdGlvbihwYXlsb2FkKQog
ICAgIHsKLSAgICAgICAgdmFyIHJvb3QgPSBuZXcgV2ViSW5zcGVjdG9yLkRPTU5vZGUodGhpcy5k
b2N1bWVudCwgcGF5bG9hZCk7CisgICAgICAgIHZhciByb290ID0gbmV3IFdlYkluc3BlY3Rvci5E
T01Ob2RlKHRoaXMuX2RvY3VtZW50LCBwYXlsb2FkKTsKICAgICAgICAgdGhpcy5faWRUb0RPTU5v
ZGVbcGF5bG9hZC5pZF0gPSByb290OwogICAgIH0sCiAKICAgICBfc2V0Q2hpbGROb2RlczogZnVu
Y3Rpb24ocGFyZW50SWQsIHBheWxvYWRzKQogICAgIHsKKyAgICAgICAgaWYgKCFwYXJlbnRJZCAm
JiBwYXlsb2Fkcy5sZW5ndGgpIHsKKyAgICAgICAgICAgIHRoaXMuX3NldERldGFjaGVkUm9vdChw
YXlsb2Fkc1swXSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKwogICAgICAgICB2
YXIgcGFyZW50ID0gdGhpcy5faWRUb0RPTU5vZGVbcGFyZW50SWRdOwogICAgICAgICBwYXJlbnQu
X3NldENoaWxkcmVuUGF5bG9hZChwYXlsb2Fkcyk7CiAgICAgICAgIHRoaXMuX2JpbmROb2Rlcyhw
YXJlbnQuY2hpbGRyZW4pOwpAQCAtNDI2LDcgKzQ0NSw3IEBAIFdlYkluc3BlY3Rvci5ET01BZ2Vu
dC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHZhciBub2RlID0gcGFyZW50Ll9pbnNlcnRDaGlsZChw
cmV2LCBwYXlsb2FkKTsKICAgICAgICAgdGhpcy5faWRUb0RPTU5vZGVbbm9kZS5pZF0gPSBub2Rl
OwogICAgICAgICB2YXIgZXZlbnQgPSB7IHRhcmdldCA6IG5vZGUsIHJlbGF0ZWROb2RlIDogcGFy
ZW50IH07Ci0gICAgICAgIHRoaXMuZG9jdW1lbnQuX2ZpcmVEb21FdmVudCgiRE9NTm9kZUluc2Vy
dGVkIiwgZXZlbnQpOworICAgICAgICB0aGlzLl9kb2N1bWVudC5fZmlyZURvbUV2ZW50KCJET01O
b2RlSW5zZXJ0ZWQiLCBldmVudCk7CiAgICAgfSwKIAogICAgIF9jaGlsZE5vZGVSZW1vdmVkOiBm
dW5jdGlvbihwYXJlbnRJZCwgbm9kZUlkKQpAQCAtNDM1LDcgKzQ1NCw3IEBAIFdlYkluc3BlY3Rv
ci5ET01BZ2VudC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHZhciBub2RlID0gdGhpcy5faWRUb0RP
TU5vZGVbbm9kZUlkXTsKICAgICAgICAgcGFyZW50LnJlbW92ZUNoaWxkXyhub2RlKTsKICAgICAg
ICAgdmFyIGV2ZW50ID0geyB0YXJnZXQgOiBub2RlLCByZWxhdGVkTm9kZSA6IHBhcmVudCB9Owot
ICAgICAgICB0aGlzLmRvY3VtZW50Ll9maXJlRG9tRXZlbnQoIkRPTU5vZGVSZW1vdmVkIiwgZXZl
bnQpOworICAgICAgICB0aGlzLl9kb2N1bWVudC5fZmlyZURvbUV2ZW50KCJET01Ob2RlUmVtb3Zl
ZCIsIGV2ZW50KTsKICAgICAgICAgZGVsZXRlIHRoaXMuX2lkVG9ET01Ob2RlW25vZGVJZF07CiAg
ICAgICAgIHRoaXMuX3JlbW92ZUJyZWFrcG9pbnRzKG5vZGUpOwogICAgIH0sCkBAIC00NTcsOSAr
NDc2LDkgQEAgV2ViSW5zcGVjdG9yLkRPTURpc3BhdGNoZXIgPSBmdW5jdGlvbihkb21BZ2VudCkK
IH0KIAogV2ViSW5zcGVjdG9yLkRPTURpc3BhdGNoZXIucHJvdG90eXBlID0gewotICAgIHNldERv
Y3VtZW50OiBmdW5jdGlvbihwYXlsb2FkKQorICAgIGRvY3VtZW50VXBkYXRlZDogZnVuY3Rpb24o
KQogICAgIHsKLSAgICAgICAgdGhpcy5fZG9tQWdlbnQuX3NldERvY3VtZW50KHBheWxvYWQpOwor
ICAgICAgICB0aGlzLl9kb21BZ2VudC5fZG9jdW1lbnRVcGRhdGVkKCk7CiAgICAgfSwKIAogICAg
IGF0dHJpYnV0ZXNVcGRhdGVkOiBmdW5jdGlvbihub2RlSWQsIGF0dHJzQXJyYXkpCkBAIC00Nzcs
MTEgKzQ5Niw2IEBAIFdlYkluc3BlY3Rvci5ET01EaXNwYXRjaGVyLnByb3RvdHlwZSA9IHsKICAg
ICAgICAgdGhpcy5fZG9tQWdlbnQuX3NldENoaWxkTm9kZXMocGFyZW50SWQsIHBheWxvYWRzKTsK
ICAgICB9LAogCi0gICAgc2V0RGV0YWNoZWRSb290OiBmdW5jdGlvbihwYXlsb2FkKQotICAgIHsK
LSAgICAgICAgdGhpcy5fZG9tQWdlbnQuX3NldERldGFjaGVkUm9vdChwYXlsb2FkKTsKLSAgICB9
LAotCiAgICAgY2hpbGROb2RlQ291bnRVcGRhdGVkOiBmdW5jdGlvbihub2RlSWQsIG5ld1ZhbHVl
KQogICAgIHsKICAgICAgICAgdGhpcy5fZG9tQWdlbnQuX2NoaWxkTm9kZUNvdW50VXBkYXRlZChu
b2RlSWQsIG5ld1ZhbHVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvRWxlbWVudHNQYW5lbC5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvRWxlbWVudHNQYW5lbC5qcwppbmRleCA4MTM3MDE5ZTYzM2MzOTBhNWFjNTUzNjNhZGZl
MDMwOGYxNWYzODk1Li4yNDZhYmU4MDk3N2IzMWJlMzljOTdjOGZiMWRkNGQzM2ZmY2FkOWI2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0VsZW1lbnRzUGFu
ZWwuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9FbGVtZW50c1Bh
bmVsLmpzCkBAIC0xNDEsNiArMTQxLDkgQEAgV2ViSW5zcGVjdG9yLkVsZW1lbnRzUGFuZWwucHJv
dG90eXBlID0gewogICAgICAgICB0aGlzLnRyZWVPdXRsaW5lLnVwZGF0ZVNlbGVjdGlvbigpOwog
ICAgICAgICBpZiAodGhpcy5yZWNlbnRseU1vZGlmaWVkTm9kZXMubGVuZ3RoKQogICAgICAgICAg
ICAgdGhpcy51cGRhdGVNb2RpZmllZE5vZGVzKCk7CisKKyAgICAgICAgaWYgKCF0aGlzLnJvb3RE
T01Ob2RlKQorICAgICAgICAgICAgV2ViSW5zcGVjdG9yLmRvbUFnZW50LnJlcXVlc3REb2N1bWVu
dCgpOwogICAgIH0sCiAKICAgICBoaWRlOiBmdW5jdGlvbigpCkBAIC0yMTEsNyArMjE0LDcgQEAg
V2ViSW5zcGVjdG9yLkVsZW1lbnRzUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICB9CiAKICAg
ICAgICAgaWYgKHRoaXMuX3NlbGVjdGVkUGF0aE9uUmVzZXQpCi0gICAgICAgICAgICBET01BZ2Vu
dC5wdXNoTm9kZUJ5UGF0aFRvRnJvbnRlbmQodGhpcy5fc2VsZWN0ZWRQYXRoT25SZXNldCwgc2Vs
ZWN0TGFzdFNlbGVjdGVkTm9kZS5iaW5kKHRoaXMpKTsKKyAgICAgICAgICAgIFdlYkluc3BlY3Rv
ci5kb21BZ2VudC5wdXNoTm9kZUJ5UGF0aFRvRnJvbnRlbmQodGhpcy5fc2VsZWN0ZWRQYXRoT25S
ZXNldCwgc2VsZWN0TGFzdFNlbGVjdGVkTm9kZS5iaW5kKHRoaXMpKTsKICAgICAgICAgZWxzZQog
ICAgICAgICAgICAgc2VsZWN0Tm9kZS5jYWxsKHRoaXMpOwogICAgICAgICBkZWxldGUgdGhpcy5f
c2VsZWN0ZWRQYXRoT25SZXNldDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvTWV0cmljc1NpZGViYXJQYW5lLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9NZXRyaWNzU2lkZWJhclBhbmUuanMKaW5kZXggM2MwZjMxNWI5M2QzZTBm
OTMzNzRmYjM1ZGE3NDIyNzA5MDY2YzBhYS4uMTQwMzllZjNmZTAxYTFhNzgzOWNlNWZjY2Y2MjUw
NzJkZDY3ODA4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9NZXRyaWNzU2lkZWJhclBhbmUuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9NZXRyaWNzU2lkZWJhclBhbmUuanMKQEAgLTQwLDcgKzQwLDcgQEAgV2ViSW5zcGVj
dG9yLk1ldHJpY3NTaWRlYmFyUGFuZS5wcm90b3R5cGUgPSB7CiAgICAgICAgIGVsc2UKICAgICAg
ICAgICAgIG5vZGUgPSB0aGlzLm5vZGU7CiAKLSAgICAgICAgaWYgKCFub2RlIHx8ICFub2RlLm93
bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXcgfHwgbm9kZS5ub2RlVHlwZSAhPT0gTm9kZS5FTEVNRU5U
X05PREUpIHsKKyAgICAgICAgaWYgKCFub2RlIHx8IG5vZGUubm9kZVR5cGUgIT09IE5vZGUuRUxF
TUVOVF9OT0RFKSB7CiAgICAgICAgICAgICB0aGlzLmJvZHlFbGVtZW50LnJlbW92ZUNoaWxkcmVu
KCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVtb3RlT2JqZWN0LmpzIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZW1vdGVPYmplY3QuanMKaW5kZXggODJlZWY5ZDQ0NjQy
MjNhMmRmYjY0NTA3NWQzYmRmMjllZWRlYzdlMS4uNGEyMGNmMWRiMWQ4ZWQ1N2YyYWMwYjQzYzY4
NmJmNTVjY2U3MDg5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9SZW1vdGVPYmplY3QuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9SZW1vdGVPYmplY3QuanMKQEAgLTEzMyw3ICsxMzMsNyBAQCBXZWJJbnNwZWN0b3IuUmVt
b3RlT2JqZWN0LnByb3RvdHlwZSA9IHsKICAgICBwdXNoTm9kZVRvRnJvbnRlbmQ6IGZ1bmN0aW9u
KGNhbGxiYWNrKQogICAgIHsKICAgICAgICAgaWYgKHRoaXMuX29iamVjdElkKQotICAgICAgICAg
ICAgRE9NQWdlbnQucHVzaE5vZGVUb0Zyb250ZW5kKHRoaXMuX29iamVjdElkLCBjYWxsYmFjayk7
CisgICAgICAgICAgICBXZWJJbnNwZWN0b3IuZG9tQWdlbnQucHVzaE5vZGVUb0Zyb250ZW5kKHRo
aXMuX29iamVjdElkLCBjYWxsYmFjayk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGNhbGxi
YWNrKDApOwogICAgIH0sCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>