<?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>150521</bug_id>
          
          <creation_ts>2015-10-23 17:04:39 -0700</creation_ts>
          <short_desc>Invoke the context menu delegate callback right before we return the menu</short_desc>
          <delta_ts>2015-10-23 17:27:07 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Anders Carlsson">andersca</reporter>
          <assigned_to name="Anders Carlsson">andersca</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1136186</commentid>
    <comment_count>0</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2015-10-23 17:04:39 -0700</bug_when>
    <thetext>Invoke the context menu delegate callback right before we return the menu</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1136188</commentid>
    <comment_count>1</comment_count>
      <attachid>263963</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2015-10-23 17:08:41 -0700</bug_when>
    <thetext>Created attachment 263963
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1136195</commentid>
    <comment_count>2</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2015-10-23 17:27:07 -0700</bug_when>
    <thetext>Committed r191520: &lt;http://trac.webkit.org/changeset/191520&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>263963</attachid>
            <date>2015-10-23 17:08:41 -0700</date>
            <delta_ts>2015-10-23 17:09:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-150521-20151023170755.patch</filename>
            <type>text/plain</type>
            <size>27645</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkxNTE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21h
Yy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXggMGUwZmUxN2Zh
ZWNhZThiNzY5MjhlOWEwNWRmMWJkYTcxNmI2OWIwYy4uYzI4NzA0YTg4YjAwZTIzNzBkMzQzYzVm
ZWQ2ODY4ZDY5NWY4YzU3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDI4IEBACiAyMDE1
LTEwLTIzICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKKyAgICAgICAg
SW52b2tlIHRoZSBjb250ZXh0IG1lbnUgZGVsZWdhdGUgY2FsbGJhY2sgcmlnaHQgYmVmb3JlIHdl
IHJldHVybiB0aGUgbWVudQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTUwNTIxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgTW92ZSB0aGUgZ2V0Q3VzdG9tTWVudUZyb21EZWZhdWx0SXRlbXMgdG8gV2ViSFRN
TFZpZXcgd2hvbGVzYWxlLiBUaGlzIHdpbGwgYWxsb3cgdXMgdG8gZ2V0IHJpZCBvZiB0aGUgQ29u
dGV4dE1lbnVDbGllbnQgZnVuY3Rpb24gZnJvbSBXZWJDb3JlLgorCisgICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQubW06CisgICAgICAgIChXZWJDb250ZXh0TWVu
dUNsaWVudDo6Z2V0Q3VzdG9tTWVudUZyb21EZWZhdWx0SXRlbXMpOgorICAgICAgICAoaXNQcmVW
ZXJzaW9uM0NsaWVudCk6IERlbGV0ZWQuCisgICAgICAgIChpc1ByZUluc3BlY3RFbGVtZW50VGFn
Q2xpZW50KTogRGVsZXRlZC4KKyAgICAgICAgKGZpeE1lbnVzVG9TZW5kVG9PbGRDbGllbnRzKTog
RGVsZXRlZC4KKyAgICAgICAgKGZpeE1lbnVzUmVjZWl2ZWRGcm9tT2xkQ2xpZW50cyk6IERlbGV0
ZWQuCisgICAgICAgICogV2ViVmlldy9XZWJIVE1MVmlldy5tbToKKyAgICAgICAgKGlzUHJlVmVy
c2lvbjNDbGllbnQpOgorICAgICAgICAoaXNQcmVJbnNwZWN0RWxlbWVudFRhZ0NsaWVudCk6Cisg
ICAgICAgIChmaXhNZW51c1RvU2VuZFRvT2xkQ2xpZW50cyk6CisgICAgICAgIChmaXhNZW51c1Jl
Y2VpdmVkRnJvbU9sZENsaWVudHMpOgorICAgICAgICAoY3VzdG9tTWVudUZyb21EZWZhdWx0SXRl
bXMpOgorICAgICAgICAoLVtXZWJIVE1MVmlldyBtZW51Rm9yRXZlbnQ6XSk6CisKKzIwMTUtMTAt
MjMgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KKwogICAgICAgICBNb3Jl
IGNvbnRleHQgbWVudSBzaW1wbGlmaWNhdGlvbgogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUwNTE5CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50Lm1tIGIvU291cmNlL1dlYktp
dC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQubW0KaW5kZXggNTJkMjY3
NGU4NDQ1YzMxNmY2NzRkM2I5YmJiMTA0M2M4YTlhODRkMC4uNWU1YzNkYTcyNDRlZTRhZTAyOGNk
OTk3NDBjMTVhZGZjMjQ0MDE3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQubW0KQEAgLTg5LDIzNyArODksOSBA
QCB2b2lkIFdlYkNvbnRleHRNZW51Q2xpZW50Ojpjb250ZXh0TWVudURlc3Ryb3llZCgpCiAgICAg
ZGVsZXRlIHRoaXM7CiB9CiAKLXN0YXRpYyBCT09MIGlzUHJlVmVyc2lvbjNDbGllbnQodm9pZCkK
LXsKLSAgICBzdGF0aWMgQk9PTCBwcmVWZXJzaW9uM0NsaWVudCA9ICFXZWJLaXRMaW5rZWRPbk9y
QWZ0ZXIoV0VCS0lUX0ZJUlNUX1ZFUlNJT05fV0lUSF8zXzBfQ09OVEVYVF9NRU5VX1RBR1MpOwot
ICAgIHJldHVybiBwcmVWZXJzaW9uM0NsaWVudDsKLX0KLQotc3RhdGljIEJPT0wgaXNQcmVJbnNw
ZWN0RWxlbWVudFRhZ0NsaWVudCh2b2lkKQotewotICAgIHN0YXRpYyBCT09MIHByZUluc3BlY3RF
bGVtZW50VGFnQ2xpZW50ID0gIVdlYktpdExpbmtlZE9uT3JBZnRlcihXRUJLSVRfRklSU1RfVkVS
U0lPTl9XSVRIX0lOU1BFQ1RfRUxFTUVOVF9NRU5VX1RBRyk7Ci0gICAgcmV0dXJuIHByZUluc3Bl
Y3RFbGVtZW50VGFnQ2xpZW50OwotfQotCi1zdGF0aWMgUmV0YWluUHRyPE5TQXJyYXk+IGZpeE1l
bnVzVG9TZW5kVG9PbGRDbGllbnRzKE5TTXV0YWJsZUFycmF5ICpkZWZhdWx0TWVudUl0ZW1zKQot
ewotICAgIGF1dG8gc2F2ZWRJdGVtcyA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10g
aW5pdF0pOwotCi0gICAgdW5zaWduZWQgZGVmYXVsdEl0ZW1zQ291bnQgPSBbZGVmYXVsdE1lbnVJ
dGVtcyBjb3VudF07Ci0KLSAgICBpZiAoaXNQcmVJbnNwZWN0RWxlbWVudFRhZ0NsaWVudCgpICYm
IGRlZmF1bHRJdGVtc0NvdW50ID49IDIpIHsKLSAgICAgICAgTlNNZW51SXRlbSAqc2Vjb25kVG9M
YXN0SXRlbSA9IFtkZWZhdWx0TWVudUl0ZW1zIG9iamVjdEF0SW5kZXg6ZGVmYXVsdEl0ZW1zQ291
bnQgLSAyXTsKLSAgICAgICAgTlNNZW51SXRlbSAqbGFzdEl0ZW0gPSBbZGVmYXVsdE1lbnVJdGVt
cyBvYmplY3RBdEluZGV4OmRlZmF1bHRJdGVtc0NvdW50IC0gMV07Ci0KLSAgICAgICAgaWYgKFtz
ZWNvbmRUb0xhc3RJdGVtIGlzU2VwYXJhdG9ySXRlbV0gJiYgW2xhc3RJdGVtIHRhZ10gPT0gV2Vi
TWVudUl0ZW1UYWdJbnNwZWN0RWxlbWVudCkgewotICAgICAgICAgICAgc2F2ZWRJdGVtcyA9IGFk
b3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhDYXBhY2l0eToyXSk7Ci0gICAg
ICAgICAgICBbc2F2ZWRJdGVtcyBhZGRPYmplY3Q6c2Vjb25kVG9MYXN0SXRlbV07Ci0gICAgICAg
ICAgICBbc2F2ZWRJdGVtcyBhZGRPYmplY3Q6bGFzdEl0ZW1dOwotCi0gICAgICAgICAgICBbZGVm
YXVsdE1lbnVJdGVtcyByZW1vdmVPYmplY3Q6c2Vjb25kVG9MYXN0SXRlbV07Ci0gICAgICAgICAg
ICBbZGVmYXVsdE1lbnVJdGVtcyByZW1vdmVPYmplY3Q6bGFzdEl0ZW1dOwotICAgICAgICAgICAg
ZGVmYXVsdEl0ZW1zQ291bnQgLT0gMjsKLSAgICAgICAgfQotICAgIH0KLQotICAgIEJPT0wgcHJl
VmVyc2lvbjNDbGllbnQgPSBpc1ByZVZlcnNpb24zQ2xpZW50KCk7Ci0gICAgaWYgKCFwcmVWZXJz
aW9uM0NsaWVudCkKLSAgICAgICAgcmV0dXJuIHNhdmVkSXRlbXM7Ci0KLSAgICBmb3IgKE5TTWVu
dUl0ZW0gKml0ZW0gaW4gZGVmYXVsdE1lbnVJdGVtcykgewotICAgICAgICBpbnQgdGFnID0gaXRl
bS50YWc7Ci0gICAgICAgIGludCBvbGRTdHlsZVRhZyA9IHRhZzsKLQotICAgICAgICBpZiAodGFn
ID49IFdFQk1FTlVJVEVNVEFHX1dFQktJVF8zXzBfU1BJX1NUQVJUKSB7Ci0gICAgICAgICAgICAv
LyBDaGFuZ2UgYWxsIGVkaXRpbmctcmVsYXRlZCBTUEkgdGFncyBsaXN0ZWQgaW4gV2ViVUlEZWxl
Z2F0ZVByaXZhdGUuaCB0byBXZWJNZW51SXRlbVRhZ090aGVyCi0gICAgICAgICAgICAvLyB0byBt
YXRjaCBvdXIgb2xkIFdlYktpdCBjb250ZXh0IG1lbnUgYmVoYXZpb3IuCi0gICAgICAgICAgICBv
bGRTdHlsZVRhZyA9IFdlYk1lbnVJdGVtVGFnT3RoZXI7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAg
ICAgICAgICAvLyBBbGwgaXRlbXMgYXJlIGV4cGVjdGVkIHRvIGhhdmUgdXNlZnVsIHRhZ3MgY29t
aW5nIGludG8gdGhpcyBtZXRob2QuCi0gICAgICAgICAgICBBU1NFUlQodGFnICE9IFdlYk1lbnVJ
dGVtVGFnT3RoZXIpOwotICAgICAgICAgICAgCi0gICAgICAgICAgICAvLyBVc2UgdGhlIHByZS0z
LjAgdGFncyBmb3IgdGhlIGZldyBpdGVtcyB0aGF0IGNoYW5nZWQgdGFncyBhcyB0aGV5IG1vdmVk
IGZyb20gU1BJIHRvIEFQSS4gV2UKLSAgICAgICAgICAgIC8vIGRvIHRoaXMgb25seSBmb3Igb2xk
IGNsaWVudHM7IG5ldyBNYWlsIGFscmVhZHkgZXhwZWN0cyB0aGUgbmV3IHN5bWJvbHMgaW4gdGhp
cyBjYXNlLgotICAgICAgICAgICAgaWYgKHByZVZlcnNpb24zQ2xpZW50KSB7Ci0gICAgICAgICAg
ICAgICAgc3dpdGNoICh0YWcpIHsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBXZWJNZW51SXRl
bVRhZ1NlYXJjaEluU3BvdGxpZ2h0OgotICAgICAgICAgICAgICAgICAgICAgICAgb2xkU3R5bGVU
YWcgPSBPbGRXZWJNZW51SXRlbVRhZ1NlYXJjaEluU3BvdGxpZ2h0OwotICAgICAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgV2ViTWVudUl0ZW1UYWdT
ZWFyY2hXZWI6Ci0gICAgICAgICAgICAgICAgICAgICAgICBvbGRTdHlsZVRhZyA9IE9sZFdlYk1l
bnVJdGVtVGFnU2VhcmNoV2ViOwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgICAgICAgICAgICAgIGNhc2UgV2ViTWVudUl0ZW1UYWdMb29rVXBJbkRpY3Rpb25hcnk6Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBvbGRTdHlsZVRhZyA9IE9sZFdlYk1lbnVJdGVtVGFnTG9v
a1VwSW5EaWN0aW9uYXJ5OwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
ICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICBpdGVt
LnRhZyA9IG9sZFN0eWxlVGFnOwotICAgIH0KLQotICAgIHJldHVybiBzYXZlZEl0ZW1zOwotfQot
Ci0vLyBGSVhNRTogVGhpcyBzaG91bGQgcmV0dXJuIE5TQXJyYXkuCi1zdGF0aWMgUmV0YWluUHRy
PE5TTXV0YWJsZUFycmF5PiBmaXhNZW51c1JlY2VpdmVkRnJvbU9sZENsaWVudHMoTlNBcnJheSAq
ZGVsZWdhdGVTdXBwbGllZEl0ZW1zLCBOU0FycmF5ICpzYXZlZEl0ZW1zKQotewotICAgIGF1dG8g
bmV3TWVudUl0ZW1zID0gYWRvcHROUyhbZGVsZWdhdGVTdXBwbGllZEl0ZW1zIG11dGFibGVDb3B5
XSk7Ci0KLSAgICBpZiAoc2F2ZWRJdGVtcykKLSAgICAgICAgW25ld01lbnVJdGVtcyBhZGRPYmpl
Y3RzRnJvbUFycmF5OnNhdmVkSXRlbXNdOwotCi0gICAgQk9PTCBwcmVWZXJzaW9uM0NsaWVudCA9
IGlzUHJlVmVyc2lvbjNDbGllbnQoKTsKLSAgICBpZiAoIXByZVZlcnNpb24zQ2xpZW50KQotICAg
ICAgICByZXR1cm4gbmV3TWVudUl0ZW1zOwotICAgIAotICAgIC8vIFJlc3RvcmUgdGhlIG1vZGVy
biB0YWdzIHRvIHRoZSBtZW51IGl0ZW1zIHdob3NlIHRhZ3Mgd2UgYWx0ZXJlZCBpbiBmaXhNZW51
c1RvU2VuZFRvT2xkQ2xpZW50cy4gCi0gICAgdW5zaWduZWQgbmV3SXRlbXNDb3VudCA9IFtuZXdN
ZW51SXRlbXMgY291bnRdOwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBuZXdJdGVtc0Nv
dW50OyArK2kpIHsKLSAgICAgICAgTlNNZW51SXRlbSAqaXRlbSA9IFtuZXdNZW51SXRlbXMgb2Jq
ZWN0QXRJbmRleDppXTsKLSAgICAgICAgCi0gICAgICAgIGludCB0YWcgPSBbaXRlbSB0YWddOwot
ICAgICAgICBpbnQgbW9kZXJuVGFnID0gdGFnOwotICAgICAgICAKLSAgICAgICAgaWYgKHRhZyA9
PSBXZWJNZW51SXRlbVRhZ090aGVyKSB7Ci0gICAgICAgICAgICAvLyBSZXN0b3JlIHRoZSBzcGVj
aWZpYyB0YWcgZm9yIGl0ZW1zIG9uIHdoaWNoIHdlIHRlbXBvcmFyaWx5IHNldCBXZWJNZW51SXRl
bVRhZ090aGVyIHRvIG1hdGNoIG9sZCBiZWhhdmlvci4KLSAgICAgICAgICAgIE5TU3RyaW5nICp0
aXRsZSA9IFtpdGVtIHRpdGxlXTsKLSAgICAgICAgICAgIGlmIChbdGl0bGUgaXNFcXVhbFRvU3Ry
aW5nOmNvbnRleHRNZW51SXRlbVRhZ09wZW5MaW5rKCldKQotICAgICAgICAgICAgICAgIG1vZGVy
blRhZyA9IFdlYk1lbnVJdGVtVGFnT3Blbkxpbms7Ci0gICAgICAgICAgICBlbHNlIGlmIChbdGl0
bGUgaXNFcXVhbFRvU3RyaW5nOmNvbnRleHRNZW51SXRlbVRhZ0lnbm9yZUdyYW1tYXIoKV0pCi0g
ICAgICAgICAgICAgICAgbW9kZXJuVGFnID0gV2ViTWVudUl0ZW1UYWdJZ25vcmVHcmFtbWFyOwot
ICAgICAgICAgICAgZWxzZSBpZiAoW3RpdGxlIGlzRXF1YWxUb1N0cmluZzpjb250ZXh0TWVudUl0
ZW1UYWdTcGVsbGluZ01lbnUoKV0pCi0gICAgICAgICAgICAgICAgbW9kZXJuVGFnID0gV2ViTWVu
dUl0ZW1UYWdTcGVsbGluZ01lbnU7Ci0gICAgICAgICAgICBlbHNlIGlmIChbdGl0bGUgaXNFcXVh
bFRvU3RyaW5nOmNvbnRleHRNZW51SXRlbVRhZ1Nob3dTcGVsbGluZ1BhbmVsKHRydWUpXQotICAg
ICAgICAgICAgICAgICAgICAgfHwgW3RpdGxlIGlzRXF1YWxUb1N0cmluZzpjb250ZXh0TWVudUl0
ZW1UYWdTaG93U3BlbGxpbmdQYW5lbChmYWxzZSldKQotICAgICAgICAgICAgICAgIG1vZGVyblRh
ZyA9IFdlYk1lbnVJdGVtVGFnU2hvd1NwZWxsaW5nUGFuZWw7Ci0gICAgICAgICAgICBlbHNlIGlm
IChbdGl0bGUgaXNFcXVhbFRvU3RyaW5nOmNvbnRleHRNZW51SXRlbVRhZ0NoZWNrU3BlbGxpbmco
KV0pCi0gICAgICAgICAgICAgICAgbW9kZXJuVGFnID0gV2ViTWVudUl0ZW1UYWdDaGVja1NwZWxs
aW5nOwotICAgICAgICAgICAgZWxzZSBpZiAoW3RpdGxlIGlzRXF1YWxUb1N0cmluZzpjb250ZXh0
TWVudUl0ZW1UYWdDaGVja1NwZWxsaW5nV2hpbGVUeXBpbmcoKV0pCi0gICAgICAgICAgICAgICAg
bW9kZXJuVGFnID0gV2ViTWVudUl0ZW1UYWdDaGVja1NwZWxsaW5nV2hpbGVUeXBpbmc7Ci0gICAg
ICAgICAgICBlbHNlIGlmIChbdGl0bGUgaXNFcXVhbFRvU3RyaW5nOmNvbnRleHRNZW51SXRlbVRh
Z0NoZWNrR3JhbW1hcldpdGhTcGVsbGluZygpXSkKLSAgICAgICAgICAgICAgICBtb2Rlcm5UYWcg
PSBXZWJNZW51SXRlbVRhZ0NoZWNrR3JhbW1hcldpdGhTcGVsbGluZzsKLSAgICAgICAgICAgIGVs
c2UgaWYgKFt0aXRsZSBpc0VxdWFsVG9TdHJpbmc6Y29udGV4dE1lbnVJdGVtVGFnRm9udE1lbnUo
KV0pCi0gICAgICAgICAgICAgICAgbW9kZXJuVGFnID0gV2ViTWVudUl0ZW1UYWdGb250TWVudTsK
LSAgICAgICAgICAgIGVsc2UgaWYgKFt0aXRsZSBpc0VxdWFsVG9TdHJpbmc6Y29udGV4dE1lbnVJ
dGVtVGFnU2hvd0ZvbnRzKCldKQotICAgICAgICAgICAgICAgIG1vZGVyblRhZyA9IFdlYk1lbnVJ
dGVtVGFnU2hvd0ZvbnRzOwotICAgICAgICAgICAgZWxzZSBpZiAoW3RpdGxlIGlzRXF1YWxUb1N0
cmluZzpjb250ZXh0TWVudUl0ZW1UYWdCb2xkKCldKQotICAgICAgICAgICAgICAgIG1vZGVyblRh
ZyA9IFdlYk1lbnVJdGVtVGFnQm9sZDsKLSAgICAgICAgICAgIGVsc2UgaWYgKFt0aXRsZSBpc0Vx
dWFsVG9TdHJpbmc6Y29udGV4dE1lbnVJdGVtVGFnSXRhbGljKCldKQotICAgICAgICAgICAgICAg
IG1vZGVyblRhZyA9IFdlYk1lbnVJdGVtVGFnSXRhbGljOwotICAgICAgICAgICAgZWxzZSBpZiAo
W3RpdGxlIGlzRXF1YWxUb1N0cmluZzpjb250ZXh0TWVudUl0ZW1UYWdVbmRlcmxpbmUoKV0pCi0g
ICAgICAgICAgICAgICAgbW9kZXJuVGFnID0gV2ViTWVudUl0ZW1UYWdVbmRlcmxpbmU7Ci0gICAg
ICAgICAgICBlbHNlIGlmIChbdGl0bGUgaXNFcXVhbFRvU3RyaW5nOmNvbnRleHRNZW51SXRlbVRh
Z091dGxpbmUoKV0pCi0gICAgICAgICAgICAgICAgbW9kZXJuVGFnID0gV2ViTWVudUl0ZW1UYWdP
dXRsaW5lOwotICAgICAgICAgICAgZWxzZSBpZiAoW3RpdGxlIGlzRXF1YWxUb1N0cmluZzpjb250
ZXh0TWVudUl0ZW1UYWdTdHlsZXMoKV0pCi0gICAgICAgICAgICAgICAgbW9kZXJuVGFnID0gV2Vi
TWVudUl0ZW1UYWdTdHlsZXM7Ci0gICAgICAgICAgICBlbHNlIGlmIChbdGl0bGUgaXNFcXVhbFRv
U3RyaW5nOmNvbnRleHRNZW51SXRlbVRhZ1Nob3dDb2xvcnMoKV0pCi0gICAgICAgICAgICAgICAg
bW9kZXJuVGFnID0gV2ViTWVudUl0ZW1UYWdTaG93Q29sb3JzOwotICAgICAgICAgICAgZWxzZSBp
ZiAoW3RpdGxlIGlzRXF1YWxUb1N0cmluZzpjb250ZXh0TWVudUl0ZW1UYWdTcGVlY2hNZW51KCld
KQotICAgICAgICAgICAgICAgIG1vZGVyblRhZyA9IFdlYk1lbnVJdGVtVGFnU3BlZWNoTWVudTsK
LSAgICAgICAgICAgIGVsc2UgaWYgKFt0aXRsZSBpc0VxdWFsVG9TdHJpbmc6Y29udGV4dE1lbnVJ
dGVtVGFnU3RhcnRTcGVha2luZygpXSkKLSAgICAgICAgICAgICAgICBtb2Rlcm5UYWcgPSBXZWJN
ZW51SXRlbVRhZ1N0YXJ0U3BlYWtpbmc7Ci0gICAgICAgICAgICBlbHNlIGlmIChbdGl0bGUgaXNF
cXVhbFRvU3RyaW5nOmNvbnRleHRNZW51SXRlbVRhZ1N0b3BTcGVha2luZygpXSkKLSAgICAgICAg
ICAgICAgICBtb2Rlcm5UYWcgPSBXZWJNZW51SXRlbVRhZ1N0b3BTcGVha2luZzsKLSAgICAgICAg
ICAgIGVsc2UgaWYgKFt0aXRsZSBpc0VxdWFsVG9TdHJpbmc6Y29udGV4dE1lbnVJdGVtVGFnV3Jp
dGluZ0RpcmVjdGlvbk1lbnUoKV0pCi0gICAgICAgICAgICAgICAgbW9kZXJuVGFnID0gV2ViTWVu
dUl0ZW1UYWdXcml0aW5nRGlyZWN0aW9uTWVudTsKLSAgICAgICAgICAgIGVsc2UgaWYgKFt0aXRs
ZSBpc0VxdWFsVG9TdHJpbmc6Y29udGV4dE1lbnVJdGVtVGFnRGVmYXVsdERpcmVjdGlvbigpXSkK
LSAgICAgICAgICAgICAgICBtb2Rlcm5UYWcgPSBXZWJNZW51SXRlbVRhZ0RlZmF1bHREaXJlY3Rp
b247Ci0gICAgICAgICAgICBlbHNlIGlmIChbdGl0bGUgaXNFcXVhbFRvU3RyaW5nOmNvbnRleHRN
ZW51SXRlbVRhZ0xlZnRUb1JpZ2h0KCldKQotICAgICAgICAgICAgICAgIG1vZGVyblRhZyA9IFdl
Yk1lbnVJdGVtVGFnTGVmdFRvUmlnaHQ7Ci0gICAgICAgICAgICBlbHNlIGlmIChbdGl0bGUgaXNF
cXVhbFRvU3RyaW5nOmNvbnRleHRNZW51SXRlbVRhZ1JpZ2h0VG9MZWZ0KCldKQotICAgICAgICAg
ICAgICAgIG1vZGVyblRhZyA9IFdlYk1lbnVJdGVtVGFnUmlnaHRUb0xlZnQ7Ci0gICAgICAgICAg
ICBlbHNlIGlmIChbdGl0bGUgaXNFcXVhbFRvU3RyaW5nOmNvbnRleHRNZW51SXRlbVRhZ0luc3Bl
Y3RFbGVtZW50KCldKQotICAgICAgICAgICAgICAgIG1vZGVyblRhZyA9IFdlYk1lbnVJdGVtVGFn
SW5zcGVjdEVsZW1lbnQ7Ci0gICAgICAgICAgICBlbHNlIGlmIChbdGl0bGUgaXNFcXVhbFRvU3Ry
aW5nOmNvbnRleHRNZW51SXRlbVRhZ0NvcnJlY3RTcGVsbGluZ0F1dG9tYXRpY2FsbHkoKV0pCi0g
ICAgICAgICAgICAgICAgbW9kZXJuVGFnID0gV2ViTWVudUl0ZW1UYWdDb3JyZWN0U3BlbGxpbmdB
dXRvbWF0aWNhbGx5OwotICAgICAgICAgICAgZWxzZSBpZiAoW3RpdGxlIGlzRXF1YWxUb1N0cmlu
Zzpjb250ZXh0TWVudUl0ZW1UYWdTdWJzdGl0dXRpb25zTWVudSgpXSkKLSAgICAgICAgICAgICAg
ICBtb2Rlcm5UYWcgPSBXZWJNZW51SXRlbVRhZ1N1YnN0aXR1dGlvbnNNZW51OwotICAgICAgICAg
ICAgZWxzZSBpZiAoW3RpdGxlIGlzRXF1YWxUb1N0cmluZzpjb250ZXh0TWVudUl0ZW1UYWdTaG93
U3Vic3RpdHV0aW9ucyh0cnVlKV0KLSAgICAgICAgICAgICAgICAgICAgIHx8IFt0aXRsZSBpc0Vx
dWFsVG9TdHJpbmc6Y29udGV4dE1lbnVJdGVtVGFnU2hvd1N1YnN0aXR1dGlvbnMoZmFsc2UpXSkK
LSAgICAgICAgICAgICAgICBtb2Rlcm5UYWcgPSBXZWJNZW51SXRlbVRhZ1Nob3dTdWJzdGl0dXRp
b25zOwotICAgICAgICAgICAgZWxzZSBpZiAoW3RpdGxlIGlzRXF1YWxUb1N0cmluZzpjb250ZXh0
TWVudUl0ZW1UYWdTbWFydENvcHlQYXN0ZSgpXSkKLSAgICAgICAgICAgICAgICBtb2Rlcm5UYWcg
PSBXZWJNZW51SXRlbVRhZ1NtYXJ0Q29weVBhc3RlOwotICAgICAgICAgICAgZWxzZSBpZiAoW3Rp
dGxlIGlzRXF1YWxUb1N0cmluZzpjb250ZXh0TWVudUl0ZW1UYWdTbWFydFF1b3RlcygpXSkKLSAg
ICAgICAgICAgICAgICBtb2Rlcm5UYWcgPSBXZWJNZW51SXRlbVRhZ1NtYXJ0UXVvdGVzOwotICAg
ICAgICAgICAgZWxzZSBpZiAoW3RpdGxlIGlzRXF1YWxUb1N0cmluZzpjb250ZXh0TWVudUl0ZW1U
YWdTbWFydERhc2hlcygpXSkKLSAgICAgICAgICAgICAgICBtb2Rlcm5UYWcgPSBXZWJNZW51SXRl
bVRhZ1NtYXJ0RGFzaGVzOwotICAgICAgICAgICAgZWxzZSBpZiAoW3RpdGxlIGlzRXF1YWxUb1N0
cmluZzpjb250ZXh0TWVudUl0ZW1UYWdTbWFydExpbmtzKCldKQotICAgICAgICAgICAgICAgIG1v
ZGVyblRhZyA9IFdlYk1lbnVJdGVtVGFnU21hcnRMaW5rczsKLSAgICAgICAgICAgIGVsc2UgaWYg
KFt0aXRsZSBpc0VxdWFsVG9TdHJpbmc6Y29udGV4dE1lbnVJdGVtVGFnVGV4dFJlcGxhY2VtZW50
KCldKQotICAgICAgICAgICAgICAgIG1vZGVyblRhZyA9IFdlYk1lbnVJdGVtVGFnVGV4dFJlcGxh
Y2VtZW50OwotICAgICAgICAgICAgZWxzZSBpZiAoW3RpdGxlIGlzRXF1YWxUb1N0cmluZzpjb250
ZXh0TWVudUl0ZW1UYWdUcmFuc2Zvcm1hdGlvbnNNZW51KCldKQotICAgICAgICAgICAgICAgIG1v
ZGVyblRhZyA9IFdlYk1lbnVJdGVtVGFnVHJhbnNmb3JtYXRpb25zTWVudTsKLSAgICAgICAgICAg
IGVsc2UgaWYgKFt0aXRsZSBpc0VxdWFsVG9TdHJpbmc6Y29udGV4dE1lbnVJdGVtVGFnTWFrZVVw
cGVyQ2FzZSgpXSkKLSAgICAgICAgICAgICAgICBtb2Rlcm5UYWcgPSBXZWJNZW51SXRlbVRhZ01h
a2VVcHBlckNhc2U7Ci0gICAgICAgICAgICBlbHNlIGlmIChbdGl0bGUgaXNFcXVhbFRvU3RyaW5n
OmNvbnRleHRNZW51SXRlbVRhZ01ha2VMb3dlckNhc2UoKV0pCi0gICAgICAgICAgICAgICAgbW9k
ZXJuVGFnID0gV2ViTWVudUl0ZW1UYWdNYWtlTG93ZXJDYXNlOwotICAgICAgICAgICAgZWxzZSBp
ZiAoW3RpdGxlIGlzRXF1YWxUb1N0cmluZzpjb250ZXh0TWVudUl0ZW1UYWdDYXBpdGFsaXplKCld
KQotICAgICAgICAgICAgICAgIG1vZGVyblRhZyA9IFdlYk1lbnVJdGVtVGFnQ2FwaXRhbGl6ZTsK
LSAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgLy8gV2UgZG9uJ3QgZXhwZWN0IFdlYk1l
bnVJdGVtVGFnT3RoZXIgZm9yIGFueSBpdGVtcyBvdGhlciB0aGFuIHRoZSBvbmVzIHdlIGV4cGxp
Y2l0bHkgaGFuZGxlLgotICAgICAgICAgICAgLy8gVGhlcmUncyBub3RoaW5nIHRvIHByZXZlbnQg
YW4gYXBwIGZyb20gYXBwbHlpbmcgdGhpcyB0YWcsIGJ1dCB0aGV5IGFyZSBzdXBwb3NlZCB0byBv
bmx5Ci0gICAgICAgICAgICAvLyB1c2UgdGFncyBpbiB0aGUgcmFuZ2Ugc3RhcnRpbmcgd2l0aCBX
ZWJNZW51SXRlbUJhc2VBcHBsaWNhdGlvblRhZz0xMDAwMAotICAgICAgICAgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2UgaWYgKHByZVZl
cnNpb24zQ2xpZW50KSB7Ci0gICAgICAgICAgICAvLyBSZXN0b3JlIHRoZSBuZXcgQVBJIHRhZyBm
b3IgaXRlbXMgb24gd2hpY2ggd2UgdGVtcG9yYXJpbHkgc2V0IHRoZSBvbGQgU1BJIHRhZy4gVGhl
IG9sZCBTUEkgdGFnIHdhcwotICAgICAgICAgICAgLy8gbmVlZGVkIHRvIGF2b2lkIGNvbmZ1c2lu
ZyBjbGllbnRzIGxpbmtlZCBhZ2FpbnN0IGVhcmxpZXIgV2ViS2l0czsgdGhlIG5ldyBBUEkgdGFn
IGlzIG5lZWRlZCBmb3IKLSAgICAgICAgICAgIC8vIFdlYkNvcmUgdG8gaGFuZGxlIHRoZSBtZW51
IGl0ZW1zIGFwcHJvcHJpYXRlbHkgKHdpdGhvdXQgbmVlZGluZyB0byBrbm93IGFib3V0IHRoZSBv
bGQgU1BJIHRhZ3MpLgotICAgICAgICAgICAgc3dpdGNoICh0YWcpIHsKLSAgICAgICAgICAgICAg
ICBjYXNlIE9sZFdlYk1lbnVJdGVtVGFnU2VhcmNoSW5TcG90bGlnaHQ6Ci0gICAgICAgICAgICAg
ICAgICAgIG1vZGVyblRhZyA9IFdlYk1lbnVJdGVtVGFnU2VhcmNoSW5TcG90bGlnaHQ7Ci0gICAg
ICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgT2xkV2ViTWVudUl0
ZW1UYWdTZWFyY2hXZWI6Ci0gICAgICAgICAgICAgICAgICAgIG1vZGVyblRhZyA9IFdlYk1lbnVJ
dGVtVGFnU2VhcmNoV2ViOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAg
ICAgICBjYXNlIE9sZFdlYk1lbnVJdGVtVGFnTG9va1VwSW5EaWN0aW9uYXJ5OgotICAgICAgICAg
ICAgICAgICAgICBtb2Rlcm5UYWcgPSBXZWJNZW51SXRlbVRhZ0xvb2tVcEluRGljdGlvbmFyeTsK
LSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgZGVmYXVsdDoKLSAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAg
ICAgCi0gICAgICAgIGlmIChtb2Rlcm5UYWcgIT0gdGFnKQotICAgICAgICAgICAgW2l0ZW0gc2V0
VGFnOm1vZGVyblRhZ107ICAgICAgICAKLSAgICB9Ci0KLSAgICByZXR1cm4gbmV3TWVudUl0ZW1z
OwotfQotCiBOU011dGFibGVBcnJheSogV2ViQ29udGV4dE1lbnVDbGllbnQ6OmdldEN1c3RvbU1l
bnVGcm9tRGVmYXVsdEl0ZW1zKENvbnRleHRNZW51KiBkZWZhdWx0TWVudSkKIHsKLSAgICBpZCBk
ZWxlZ2F0ZSA9IFttX3dlYlZpZXcgVUlEZWxlZ2F0ZV07Ci0gICAgU0VMIHNlbGVjdG9yID0gQHNl
bGVjdG9yKHdlYlZpZXc6Y29udGV4dE1lbnVJdGVtc0ZvckVsZW1lbnQ6ZGVmYXVsdE1lbnVJdGVt
czopOwotICAgIGlmICghW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpzZWxlY3Rvcl0pCi0g
ICAgICAgIHJldHVybiBkZWZhdWx0TWVudS0+cGxhdGZvcm1EZXNjcmlwdGlvbigpOwotCi0gICAg
TlNEaWN0aW9uYXJ5ICplbGVtZW50ID0gW1tbV2ViRWxlbWVudERpY3Rpb25hcnkgYWxsb2NdIGlu
aXRXaXRoSGl0VGVzdFJlc3VsdDpbbV93ZWJWaWV3IHBhZ2VdLT5jb250ZXh0TWVudUNvbnRyb2xs
ZXIoKS5oaXRUZXN0UmVzdWx0KCldIGF1dG9yZWxlYXNlXTsKLQotICAgIEJPT0wgcHJlVmVyc2lv
bjNDbGllbnQgPSBpc1ByZVZlcnNpb24zQ2xpZW50KCk7Ci0gICAgaWYgKHByZVZlcnNpb24zQ2xp
ZW50KSB7Ci0gICAgICAgIERPTU5vZGUgKm5vZGUgPSBbZWxlbWVudCBvYmplY3RGb3JLZXk6V2Vi
RWxlbWVudERPTU5vZGVLZXldOwotICAgICAgICBpZiAoW25vZGUgaXNLaW5kT2ZDbGFzczpbRE9N
SFRNTElucHV0RWxlbWVudCBjbGFzc11dICYmIFsoRE9NSFRNTElucHV0RWxlbWVudCAqKW5vZGUg
X2lzVGV4dEZpZWxkXSkKLSAgICAgICAgICAgIHJldHVybiBkZWZhdWx0TWVudS0+cGxhdGZvcm1E
ZXNjcmlwdGlvbigpOwotICAgICAgICBpZiAoW25vZGUgaXNLaW5kT2ZDbGFzczpbRE9NSFRNTFRl
eHRBcmVhRWxlbWVudCBjbGFzc11dKQotICAgICAgICAgICAgcmV0dXJuIGRlZmF1bHRNZW51LT5w
bGF0Zm9ybURlc2NyaXB0aW9uKCk7Ci0gICAgfQotCi0gICAgTlNNdXRhYmxlQXJyYXkgKmRlZmF1
bHRNZW51SXRlbXMgPSBkZWZhdWx0TWVudS0+cGxhdGZvcm1EZXNjcmlwdGlvbigpOwotCi0gICAg
Zm9yIChOU01lbnVJdGVtICptZW51SXRlbSBpbiBkZWZhdWx0TWVudUl0ZW1zKSB7Ci0gICAgICAg
IGlmICghbWVudUl0ZW0ucmVwcmVzZW50ZWRPYmplY3QpCi0gICAgICAgICAgICBtZW51SXRlbS5y
ZXByZXNlbnRlZE9iamVjdCA9IGVsZW1lbnQ7Ci0gICAgfQotCi0gICAgYXV0byBzYXZlZEl0ZW1z
ID0gZml4TWVudXNUb1NlbmRUb09sZENsaWVudHMoZGVmYXVsdE1lbnVJdGVtcyk7Ci0KLSAgICBO
U0FycmF5ICpkZWxlZ2F0ZVN1cHBsaWVkSXRlbXMgPSBDYWxsVUlEZWxlZ2F0ZShtX3dlYlZpZXcs
IHNlbGVjdG9yLCBlbGVtZW50LCBkZWZhdWx0TWVudUl0ZW1zKTsKLQotICAgIHJldHVybiBmaXhN
ZW51c1JlY2VpdmVkRnJvbU9sZENsaWVudHMoZGVsZWdhdGVTdXBwbGllZEl0ZW1zLCBzYXZlZEl0
ZW1zLmdldCgpKS5hdXRvcmVsZWFzZSgpOworICAgIHJldHVybiBkZWZhdWx0TWVudS0+cGxhdGZv
cm1EZXNjcmlwdGlvbigpOwogfQogCiB2b2lkIFdlYkNvbnRleHRNZW51Q2xpZW50Ojpjb250ZXh0
TWVudUl0ZW1TZWxlY3RlZChDb250ZXh0TWVudUl0ZW0qIGl0ZW0sIGNvbnN0IENvbnRleHRNZW51
KiBwYXJlbnRNZW51KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJI
VE1MVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KaW5k
ZXggNTg5Y2E0YTNhMTU4NGQ1Njg4MDIwNmFlNTA5NzliYjU0NjBlNGVmMC4uMWY0YzNjMTljYmNm
OTEwMDNhMGZmZTRjZWZlNWJiN2RiNDU0M2ZlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9t
YWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3
L1dlYkhUTUxWaWV3Lm1tCkBAIC0xMDYsNiArMTA2LDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvSW1h
Z2UuaD4KICNpbXBvcnQgPFdlYkNvcmUvS2V5Ym9hcmRFdmVudC5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9MZWdhY3lXZWJBcmNoaXZlLmg+CisjaW1wb3J0IDxXZWJDb3JlL0xvY2FsaXplZFN0cmluZ3Mu
aD4KICNpbXBvcnQgPFdlYkNvcmUvTUlNRVR5cGVSZWdpc3RyeS5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9NYWluRnJhbWUuaD4KICNpbXBvcnQgPFdlYkNvcmUvTlNVUkxGaWxlVHlwZU1hcHBpbmdzU1BJ
Lmg+CkBAIC0zMzI5LDYgKzMzMzAsMjM2IEBAIHN0YXRpYyB2b2lkIHNldE1lbnVUYXJnZXRzKE5T
TWVudSogbWVudSkKICAgICB9CiB9CiAKK3N0YXRpYyBCT09MIGlzUHJlVmVyc2lvbjNDbGllbnQo
dm9pZCkKK3sKKyAgICBzdGF0aWMgQk9PTCBwcmVWZXJzaW9uM0NsaWVudCA9ICFXZWJLaXRMaW5r
ZWRPbk9yQWZ0ZXIoV0VCS0lUX0ZJUlNUX1ZFUlNJT05fV0lUSF8zXzBfQ09OVEVYVF9NRU5VX1RB
R1MpOworICAgIHJldHVybiBwcmVWZXJzaW9uM0NsaWVudDsKK30KKworc3RhdGljIEJPT0wgaXNQ
cmVJbnNwZWN0RWxlbWVudFRhZ0NsaWVudCh2b2lkKQoreworICAgIHN0YXRpYyBCT09MIHByZUlu
c3BlY3RFbGVtZW50VGFnQ2xpZW50ID0gIVdlYktpdExpbmtlZE9uT3JBZnRlcihXRUJLSVRfRklS
U1RfVkVSU0lPTl9XSVRIX0lOU1BFQ1RfRUxFTUVOVF9NRU5VX1RBRyk7CisgICAgcmV0dXJuIHBy
ZUluc3BlY3RFbGVtZW50VGFnQ2xpZW50OworfQorCitzdGF0aWMgUmV0YWluUHRyPE5TQXJyYXk+
IGZpeE1lbnVzVG9TZW5kVG9PbGRDbGllbnRzKE5TTXV0YWJsZUFycmF5ICpkZWZhdWx0TWVudUl0
ZW1zKQoreworICAgIGF1dG8gc2F2ZWRJdGVtcyA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBh
bGxvY10gaW5pdF0pOworCisgICAgdW5zaWduZWQgZGVmYXVsdEl0ZW1zQ291bnQgPSBbZGVmYXVs
dE1lbnVJdGVtcyBjb3VudF07CisKKyAgICBpZiAoaXNQcmVJbnNwZWN0RWxlbWVudFRhZ0NsaWVu
dCgpICYmIGRlZmF1bHRJdGVtc0NvdW50ID49IDIpIHsKKyAgICAgICAgTlNNZW51SXRlbSAqc2Vj
b25kVG9MYXN0SXRlbSA9IFtkZWZhdWx0TWVudUl0ZW1zIG9iamVjdEF0SW5kZXg6ZGVmYXVsdEl0
ZW1zQ291bnQgLSAyXTsKKyAgICAgICAgTlNNZW51SXRlbSAqbGFzdEl0ZW0gPSBbZGVmYXVsdE1l
bnVJdGVtcyBvYmplY3RBdEluZGV4OmRlZmF1bHRJdGVtc0NvdW50IC0gMV07CisKKyAgICAgICAg
aWYgKFtzZWNvbmRUb0xhc3RJdGVtIGlzU2VwYXJhdG9ySXRlbV0gJiYgW2xhc3RJdGVtIHRhZ10g
PT0gV2ViTWVudUl0ZW1UYWdJbnNwZWN0RWxlbWVudCkgeworICAgICAgICAgICAgc2F2ZWRJdGVt
cyA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhDYXBhY2l0eToyXSk7
CisgICAgICAgICAgICBbc2F2ZWRJdGVtcyBhZGRPYmplY3Q6c2Vjb25kVG9MYXN0SXRlbV07Cisg
ICAgICAgICAgICBbc2F2ZWRJdGVtcyBhZGRPYmplY3Q6bGFzdEl0ZW1dOworCisgICAgICAgICAg
ICBbZGVmYXVsdE1lbnVJdGVtcyByZW1vdmVPYmplY3Q6c2Vjb25kVG9MYXN0SXRlbV07CisgICAg
ICAgICAgICBbZGVmYXVsdE1lbnVJdGVtcyByZW1vdmVPYmplY3Q6bGFzdEl0ZW1dOworICAgICAg
ICAgICAgZGVmYXVsdEl0ZW1zQ291bnQgLT0gMjsKKyAgICAgICAgfQorICAgIH0KKworICAgIEJP
T0wgcHJlVmVyc2lvbjNDbGllbnQgPSBpc1ByZVZlcnNpb24zQ2xpZW50KCk7CisgICAgaWYgKCFw
cmVWZXJzaW9uM0NsaWVudCkKKyAgICAgICAgcmV0dXJuIHNhdmVkSXRlbXM7CisKKyAgICBmb3Ig
KE5TTWVudUl0ZW0gKml0ZW0gaW4gZGVmYXVsdE1lbnVJdGVtcykgeworICAgICAgICBpbnQgdGFn
ID0gaXRlbS50YWc7CisgICAgICAgIGludCBvbGRTdHlsZVRhZyA9IHRhZzsKKworICAgICAgICBp
ZiAodGFnID49IFdFQk1FTlVJVEVNVEFHX1dFQktJVF8zXzBfU1BJX1NUQVJUKSB7CisgICAgICAg
ICAgICAvLyBDaGFuZ2UgYWxsIGVkaXRpbmctcmVsYXRlZCBTUEkgdGFncyBsaXN0ZWQgaW4gV2Vi
VUlEZWxlZ2F0ZVByaXZhdGUuaCB0byBXZWJNZW51SXRlbVRhZ090aGVyCisgICAgICAgICAgICAv
LyB0byBtYXRjaCBvdXIgb2xkIFdlYktpdCBjb250ZXh0IG1lbnUgYmVoYXZpb3IuCisgICAgICAg
ICAgICBvbGRTdHlsZVRhZyA9IFdlYk1lbnVJdGVtVGFnT3RoZXI7CisgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICAvLyBBbGwgaXRlbXMgYXJlIGV4cGVjdGVkIHRvIGhhdmUgdXNlZnVsIHRh
Z3MgY29taW5nIGludG8gdGhpcyBtZXRob2QuCisgICAgICAgICAgICBBU1NFUlQodGFnICE9IFdl
Yk1lbnVJdGVtVGFnT3RoZXIpOworICAgICAgICAgICAgCisgICAgICAgICAgICAvLyBVc2UgdGhl
IHByZS0zLjAgdGFncyBmb3IgdGhlIGZldyBpdGVtcyB0aGF0IGNoYW5nZWQgdGFncyBhcyB0aGV5
IG1vdmVkIGZyb20gU1BJIHRvIEFQSS4gV2UKKyAgICAgICAgICAgIC8vIGRvIHRoaXMgb25seSBm
b3Igb2xkIGNsaWVudHM7IG5ldyBNYWlsIGFscmVhZHkgZXhwZWN0cyB0aGUgbmV3IHN5bWJvbHMg
aW4gdGhpcyBjYXNlLgorICAgICAgICAgICAgaWYgKHByZVZlcnNpb24zQ2xpZW50KSB7CisgICAg
ICAgICAgICAgICAgc3dpdGNoICh0YWcpIHsKKyAgICAgICAgICAgICAgICBjYXNlIFdlYk1lbnVJ
dGVtVGFnU2VhcmNoSW5TcG90bGlnaHQ6CisgICAgICAgICAgICAgICAgICAgIG9sZFN0eWxlVGFn
ID0gT2xkV2ViTWVudUl0ZW1UYWdTZWFyY2hJblNwb3RsaWdodDsKKyAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBXZWJNZW51SXRlbVRhZ1NlYXJjaFdlYjoK
KyAgICAgICAgICAgICAgICAgICAgb2xkU3R5bGVUYWcgPSBPbGRXZWJNZW51SXRlbVRhZ1NlYXJj
aFdlYjsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBX
ZWJNZW51SXRlbVRhZ0xvb2tVcEluRGljdGlvbmFyeToKKyAgICAgICAgICAgICAgICAgICAgb2xk
U3R5bGVUYWcgPSBPbGRXZWJNZW51SXRlbVRhZ0xvb2tVcEluRGljdGlvbmFyeTsKKyAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAg
ICB9CisKKyAgICAgICAgaXRlbS50YWcgPSBvbGRTdHlsZVRhZzsKKyAgICB9CisKKyAgICByZXR1
cm4gc2F2ZWRJdGVtczsKK30KKworc3RhdGljIFJldGFpblB0cjxOU0FycmF5PiBmaXhNZW51c1Jl
Y2VpdmVkRnJvbU9sZENsaWVudHMoTlNBcnJheSAqZGVsZWdhdGVTdXBwbGllZEl0ZW1zLCBOU0Fy
cmF5ICpzYXZlZEl0ZW1zKQoreworICAgIGF1dG8gbmV3TWVudUl0ZW1zID0gYWRvcHROUyhbZGVs
ZWdhdGVTdXBwbGllZEl0ZW1zIG11dGFibGVDb3B5XSk7CisKKyAgICBpZiAoc2F2ZWRJdGVtcykK
KyAgICAgICAgW25ld01lbnVJdGVtcyBhZGRPYmplY3RzRnJvbUFycmF5OnNhdmVkSXRlbXNdOwor
CisgICAgQk9PTCBwcmVWZXJzaW9uM0NsaWVudCA9IGlzUHJlVmVyc2lvbjNDbGllbnQoKTsKKyAg
ICBpZiAoIXByZVZlcnNpb24zQ2xpZW50KQorICAgICAgICByZXR1cm4gbmV3TWVudUl0ZW1zOwor
ICAgIAorICAgIC8vIFJlc3RvcmUgdGhlIG1vZGVybiB0YWdzIHRvIHRoZSBtZW51IGl0ZW1zIHdo
b3NlIHRhZ3Mgd2UgYWx0ZXJlZCBpbiBmaXhNZW51c1RvU2VuZFRvT2xkQ2xpZW50cy4gCisgICAg
dW5zaWduZWQgbmV3SXRlbXNDb3VudCA9IFtuZXdNZW51SXRlbXMgY291bnRdOworICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBuZXdJdGVtc0NvdW50OyArK2kpIHsKKyAgICAgICAgTlNNZW51
SXRlbSAqaXRlbSA9IFtuZXdNZW51SXRlbXMgb2JqZWN0QXRJbmRleDppXTsKKyAgICAgICAgCisg
ICAgICAgIGludCB0YWcgPSBbaXRlbSB0YWddOworICAgICAgICBpbnQgbW9kZXJuVGFnID0gdGFn
OworICAgICAgICAKKyAgICAgICAgaWYgKHRhZyA9PSBXZWJNZW51SXRlbVRhZ090aGVyKSB7Cisg
ICAgICAgICAgICAvLyBSZXN0b3JlIHRoZSBzcGVjaWZpYyB0YWcgZm9yIGl0ZW1zIG9uIHdoaWNo
IHdlIHRlbXBvcmFyaWx5IHNldCBXZWJNZW51SXRlbVRhZ090aGVyIHRvIG1hdGNoIG9sZCBiZWhh
dmlvci4KKyAgICAgICAgICAgIE5TU3RyaW5nICp0aXRsZSA9IFtpdGVtIHRpdGxlXTsKKyAgICAg
ICAgICAgIGlmIChbdGl0bGUgaXNFcXVhbFRvU3RyaW5nOmNvbnRleHRNZW51SXRlbVRhZ09wZW5M
aW5rKCldKQorICAgICAgICAgICAgICAgIG1vZGVyblRhZyA9IFdlYk1lbnVJdGVtVGFnT3Blbkxp
bms7CisgICAgICAgICAgICBlbHNlIGlmIChbdGl0bGUgaXNFcXVhbFRvU3RyaW5nOmNvbnRleHRN
ZW51SXRlbVRhZ0lnbm9yZUdyYW1tYXIoKV0pCisgICAgICAgICAgICAgICAgbW9kZXJuVGFnID0g
V2ViTWVudUl0ZW1UYWdJZ25vcmVHcmFtbWFyOworICAgICAgICAgICAgZWxzZSBpZiAoW3RpdGxl
IGlzRXF1YWxUb1N0cmluZzpjb250ZXh0TWVudUl0ZW1UYWdTcGVsbGluZ01lbnUoKV0pCisgICAg
ICAgICAgICAgICAgbW9kZXJuVGFnID0gV2ViTWVudUl0ZW1UYWdTcGVsbGluZ01lbnU7CisgICAg
ICAgICAgICBlbHNlIGlmIChbdGl0bGUgaXNFcXVhbFRvU3RyaW5nOmNvbnRleHRNZW51SXRlbVRh
Z1Nob3dTcGVsbGluZ1BhbmVsKHRydWUpXSB8fCBbdGl0bGUgaXNFcXVhbFRvU3RyaW5nOmNvbnRl
eHRNZW51SXRlbVRhZ1Nob3dTcGVsbGluZ1BhbmVsKGZhbHNlKV0pCisgICAgICAgICAgICAgICAg
bW9kZXJuVGFnID0gV2ViTWVudUl0ZW1UYWdTaG93U3BlbGxpbmdQYW5lbDsKKyAgICAgICAgICAg
IGVsc2UgaWYgKFt0aXRsZSBpc0VxdWFsVG9TdHJpbmc6Y29udGV4dE1lbnVJdGVtVGFnQ2hlY2tT
cGVsbGluZygpXSkKKyAgICAgICAgICAgICAgICBtb2Rlcm5UYWcgPSBXZWJNZW51SXRlbVRhZ0No
ZWNrU3BlbGxpbmc7CisgICAgICAgICAgICBlbHNlIGlmIChbdGl0bGUgaXNFcXVhbFRvU3RyaW5n
OmNvbnRleHRNZW51SXRlbVRhZ0NoZWNrU3BlbGxpbmdXaGlsZVR5cGluZygpXSkKKyAgICAgICAg
ICAgICAgICBtb2Rlcm5UYWcgPSBXZWJNZW51SXRlbVRhZ0NoZWNrU3BlbGxpbmdXaGlsZVR5cGlu
ZzsKKyAgICAgICAgICAgIGVsc2UgaWYgKFt0aXRsZSBpc0VxdWFsVG9TdHJpbmc6Y29udGV4dE1l
bnVJdGVtVGFnQ2hlY2tHcmFtbWFyV2l0aFNwZWxsaW5nKCldKQorICAgICAgICAgICAgICAgIG1v
ZGVyblRhZyA9IFdlYk1lbnVJdGVtVGFnQ2hlY2tHcmFtbWFyV2l0aFNwZWxsaW5nOworICAgICAg
ICAgICAgZWxzZSBpZiAoW3RpdGxlIGlzRXF1YWxUb1N0cmluZzpjb250ZXh0TWVudUl0ZW1UYWdG
b250TWVudSgpXSkKKyAgICAgICAgICAgICAgICBtb2Rlcm5UYWcgPSBXZWJNZW51SXRlbVRhZ0Zv
bnRNZW51OworICAgICAgICAgICAgZWxzZSBpZiAoW3RpdGxlIGlzRXF1YWxUb1N0cmluZzpjb250
ZXh0TWVudUl0ZW1UYWdTaG93Rm9udHMoKV0pCisgICAgICAgICAgICAgICAgbW9kZXJuVGFnID0g
V2ViTWVudUl0ZW1UYWdTaG93Rm9udHM7CisgICAgICAgICAgICBlbHNlIGlmIChbdGl0bGUgaXNF
cXVhbFRvU3RyaW5nOmNvbnRleHRNZW51SXRlbVRhZ0JvbGQoKV0pCisgICAgICAgICAgICAgICAg
bW9kZXJuVGFnID0gV2ViTWVudUl0ZW1UYWdCb2xkOworICAgICAgICAgICAgZWxzZSBpZiAoW3Rp
dGxlIGlzRXF1YWxUb1N0cmluZzpjb250ZXh0TWVudUl0ZW1UYWdJdGFsaWMoKV0pCisgICAgICAg
ICAgICAgICAgbW9kZXJuVGFnID0gV2ViTWVudUl0ZW1UYWdJdGFsaWM7CisgICAgICAgICAgICBl
bHNlIGlmIChbdGl0bGUgaXNFcXVhbFRvU3RyaW5nOmNvbnRleHRNZW51SXRlbVRhZ1VuZGVybGlu
ZSgpXSkKKyAgICAgICAgICAgICAgICBtb2Rlcm5UYWcgPSBXZWJNZW51SXRlbVRhZ1VuZGVybGlu
ZTsKKyAgICAgICAgICAgIGVsc2UgaWYgKFt0aXRsZSBpc0VxdWFsVG9TdHJpbmc6Y29udGV4dE1l
bnVJdGVtVGFnT3V0bGluZSgpXSkKKyAgICAgICAgICAgICAgICBtb2Rlcm5UYWcgPSBXZWJNZW51
SXRlbVRhZ091dGxpbmU7CisgICAgICAgICAgICBlbHNlIGlmIChbdGl0bGUgaXNFcXVhbFRvU3Ry
aW5nOmNvbnRleHRNZW51SXRlbVRhZ1N0eWxlcygpXSkKKyAgICAgICAgICAgICAgICBtb2Rlcm5U
YWcgPSBXZWJNZW51SXRlbVRhZ1N0eWxlczsKKyAgICAgICAgICAgIGVsc2UgaWYgKFt0aXRsZSBp
c0VxdWFsVG9TdHJpbmc6Y29udGV4dE1lbnVJdGVtVGFnU2hvd0NvbG9ycygpXSkKKyAgICAgICAg
ICAgICAgICBtb2Rlcm5UYWcgPSBXZWJNZW51SXRlbVRhZ1Nob3dDb2xvcnM7CisgICAgICAgICAg
ICBlbHNlIGlmIChbdGl0bGUgaXNFcXVhbFRvU3RyaW5nOmNvbnRleHRNZW51SXRlbVRhZ1NwZWVj
aE1lbnUoKV0pCisgICAgICAgICAgICAgICAgbW9kZXJuVGFnID0gV2ViTWVudUl0ZW1UYWdTcGVl
Y2hNZW51OworICAgICAgICAgICAgZWxzZSBpZiAoW3RpdGxlIGlzRXF1YWxUb1N0cmluZzpjb250
ZXh0TWVudUl0ZW1UYWdTdGFydFNwZWFraW5nKCldKQorICAgICAgICAgICAgICAgIG1vZGVyblRh
ZyA9IFdlYk1lbnVJdGVtVGFnU3RhcnRTcGVha2luZzsKKyAgICAgICAgICAgIGVsc2UgaWYgKFt0
aXRsZSBpc0VxdWFsVG9TdHJpbmc6Y29udGV4dE1lbnVJdGVtVGFnU3RvcFNwZWFraW5nKCldKQor
ICAgICAgICAgICAgICAgIG1vZGVyblRhZyA9IFdlYk1lbnVJdGVtVGFnU3RvcFNwZWFraW5nOwor
ICAgICAgICAgICAgZWxzZSBpZiAoW3RpdGxlIGlzRXF1YWxUb1N0cmluZzpjb250ZXh0TWVudUl0
ZW1UYWdXcml0aW5nRGlyZWN0aW9uTWVudSgpXSkKKyAgICAgICAgICAgICAgICBtb2Rlcm5UYWcg
PSBXZWJNZW51SXRlbVRhZ1dyaXRpbmdEaXJlY3Rpb25NZW51OworICAgICAgICAgICAgZWxzZSBp
ZiAoW3RpdGxlIGlzRXF1YWxUb1N0cmluZzpjb250ZXh0TWVudUl0ZW1UYWdEZWZhdWx0RGlyZWN0
aW9uKCldKQorICAgICAgICAgICAgICAgIG1vZGVyblRhZyA9IFdlYk1lbnVJdGVtVGFnRGVmYXVs
dERpcmVjdGlvbjsKKyAgICAgICAgICAgIGVsc2UgaWYgKFt0aXRsZSBpc0VxdWFsVG9TdHJpbmc6
Y29udGV4dE1lbnVJdGVtVGFnTGVmdFRvUmlnaHQoKV0pCisgICAgICAgICAgICAgICAgbW9kZXJu
VGFnID0gV2ViTWVudUl0ZW1UYWdMZWZ0VG9SaWdodDsKKyAgICAgICAgICAgIGVsc2UgaWYgKFt0
aXRsZSBpc0VxdWFsVG9TdHJpbmc6Y29udGV4dE1lbnVJdGVtVGFnUmlnaHRUb0xlZnQoKV0pCisg
ICAgICAgICAgICAgICAgbW9kZXJuVGFnID0gV2ViTWVudUl0ZW1UYWdSaWdodFRvTGVmdDsKKyAg
ICAgICAgICAgIGVsc2UgaWYgKFt0aXRsZSBpc0VxdWFsVG9TdHJpbmc6Y29udGV4dE1lbnVJdGVt
VGFnSW5zcGVjdEVsZW1lbnQoKV0pCisgICAgICAgICAgICAgICAgbW9kZXJuVGFnID0gV2ViTWVu
dUl0ZW1UYWdJbnNwZWN0RWxlbWVudDsKKyAgICAgICAgICAgIGVsc2UgaWYgKFt0aXRsZSBpc0Vx
dWFsVG9TdHJpbmc6Y29udGV4dE1lbnVJdGVtVGFnQ29ycmVjdFNwZWxsaW5nQXV0b21hdGljYWxs
eSgpXSkKKyAgICAgICAgICAgICAgICBtb2Rlcm5UYWcgPSBXZWJNZW51SXRlbVRhZ0NvcnJlY3RT
cGVsbGluZ0F1dG9tYXRpY2FsbHk7CisgICAgICAgICAgICBlbHNlIGlmIChbdGl0bGUgaXNFcXVh
bFRvU3RyaW5nOmNvbnRleHRNZW51SXRlbVRhZ1N1YnN0aXR1dGlvbnNNZW51KCldKQorICAgICAg
ICAgICAgICAgIG1vZGVyblRhZyA9IFdlYk1lbnVJdGVtVGFnU3Vic3RpdHV0aW9uc01lbnU7Cisg
ICAgICAgICAgICBlbHNlIGlmIChbdGl0bGUgaXNFcXVhbFRvU3RyaW5nOmNvbnRleHRNZW51SXRl
bVRhZ1Nob3dTdWJzdGl0dXRpb25zKHRydWUpXSB8fCBbdGl0bGUgaXNFcXVhbFRvU3RyaW5nOmNv
bnRleHRNZW51SXRlbVRhZ1Nob3dTdWJzdGl0dXRpb25zKGZhbHNlKV0pCisgICAgICAgICAgICAg
ICAgbW9kZXJuVGFnID0gV2ViTWVudUl0ZW1UYWdTaG93U3Vic3RpdHV0aW9uczsKKyAgICAgICAg
ICAgIGVsc2UgaWYgKFt0aXRsZSBpc0VxdWFsVG9TdHJpbmc6Y29udGV4dE1lbnVJdGVtVGFnU21h
cnRDb3B5UGFzdGUoKV0pCisgICAgICAgICAgICAgICAgbW9kZXJuVGFnID0gV2ViTWVudUl0ZW1U
YWdTbWFydENvcHlQYXN0ZTsKKyAgICAgICAgICAgIGVsc2UgaWYgKFt0aXRsZSBpc0VxdWFsVG9T
dHJpbmc6Y29udGV4dE1lbnVJdGVtVGFnU21hcnRRdW90ZXMoKV0pCisgICAgICAgICAgICAgICAg
bW9kZXJuVGFnID0gV2ViTWVudUl0ZW1UYWdTbWFydFF1b3RlczsKKyAgICAgICAgICAgIGVsc2Ug
aWYgKFt0aXRsZSBpc0VxdWFsVG9TdHJpbmc6Y29udGV4dE1lbnVJdGVtVGFnU21hcnREYXNoZXMo
KV0pCisgICAgICAgICAgICAgICAgbW9kZXJuVGFnID0gV2ViTWVudUl0ZW1UYWdTbWFydERhc2hl
czsKKyAgICAgICAgICAgIGVsc2UgaWYgKFt0aXRsZSBpc0VxdWFsVG9TdHJpbmc6Y29udGV4dE1l
bnVJdGVtVGFnU21hcnRMaW5rcygpXSkKKyAgICAgICAgICAgICAgICBtb2Rlcm5UYWcgPSBXZWJN
ZW51SXRlbVRhZ1NtYXJ0TGlua3M7CisgICAgICAgICAgICBlbHNlIGlmIChbdGl0bGUgaXNFcXVh
bFRvU3RyaW5nOmNvbnRleHRNZW51SXRlbVRhZ1RleHRSZXBsYWNlbWVudCgpXSkKKyAgICAgICAg
ICAgICAgICBtb2Rlcm5UYWcgPSBXZWJNZW51SXRlbVRhZ1RleHRSZXBsYWNlbWVudDsKKyAgICAg
ICAgICAgIGVsc2UgaWYgKFt0aXRsZSBpc0VxdWFsVG9TdHJpbmc6Y29udGV4dE1lbnVJdGVtVGFn
VHJhbnNmb3JtYXRpb25zTWVudSgpXSkKKyAgICAgICAgICAgICAgICBtb2Rlcm5UYWcgPSBXZWJN
ZW51SXRlbVRhZ1RyYW5zZm9ybWF0aW9uc01lbnU7CisgICAgICAgICAgICBlbHNlIGlmIChbdGl0
bGUgaXNFcXVhbFRvU3RyaW5nOmNvbnRleHRNZW51SXRlbVRhZ01ha2VVcHBlckNhc2UoKV0pCisg
ICAgICAgICAgICAgICAgbW9kZXJuVGFnID0gV2ViTWVudUl0ZW1UYWdNYWtlVXBwZXJDYXNlOwor
ICAgICAgICAgICAgZWxzZSBpZiAoW3RpdGxlIGlzRXF1YWxUb1N0cmluZzpjb250ZXh0TWVudUl0
ZW1UYWdNYWtlTG93ZXJDYXNlKCldKQorICAgICAgICAgICAgICAgIG1vZGVyblRhZyA9IFdlYk1l
bnVJdGVtVGFnTWFrZUxvd2VyQ2FzZTsKKyAgICAgICAgICAgIGVsc2UgaWYgKFt0aXRsZSBpc0Vx
dWFsVG9TdHJpbmc6Y29udGV4dE1lbnVJdGVtVGFnQ2FwaXRhbGl6ZSgpXSkKKyAgICAgICAgICAg
ICAgICBtb2Rlcm5UYWcgPSBXZWJNZW51SXRlbVRhZ0NhcGl0YWxpemU7CisgICAgICAgICAgICBl
bHNlIHsKKyAgICAgICAgICAgIC8vIFdlIGRvbid0IGV4cGVjdCBXZWJNZW51SXRlbVRhZ090aGVy
IGZvciBhbnkgaXRlbXMgb3RoZXIgdGhhbiB0aGUgb25lcyB3ZSBleHBsaWNpdGx5IGhhbmRsZS4K
KyAgICAgICAgICAgIC8vIFRoZXJlJ3Mgbm90aGluZyB0byBwcmV2ZW50IGFuIGFwcCBmcm9tIGFw
cGx5aW5nIHRoaXMgdGFnLCBidXQgdGhleSBhcmUgc3VwcG9zZWQgdG8gb25seQorICAgICAgICAg
ICAgLy8gdXNlIHRhZ3MgaW4gdGhlIHJhbmdlIHN0YXJ0aW5nIHdpdGggV2ViTWVudUl0ZW1CYXNl
QXBwbGljYXRpb25UYWc9MTAwMDAKKyAgICAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIGlmIChwcmVWZXJzaW9uM0NsaWVudCkg
eworICAgICAgICAgICAgLy8gUmVzdG9yZSB0aGUgbmV3IEFQSSB0YWcgZm9yIGl0ZW1zIG9uIHdo
aWNoIHdlIHRlbXBvcmFyaWx5IHNldCB0aGUgb2xkIFNQSSB0YWcuIFRoZSBvbGQgU1BJIHRhZyB3
YXMKKyAgICAgICAgICAgIC8vIG5lZWRlZCB0byBhdm9pZCBjb25mdXNpbmcgY2xpZW50cyBsaW5r
ZWQgYWdhaW5zdCBlYXJsaWVyIFdlYktpdHM7IHRoZSBuZXcgQVBJIHRhZyBpcyBuZWVkZWQgZm9y
CisgICAgICAgICAgICAvLyBXZWJDb3JlIHRvIGhhbmRsZSB0aGUgbWVudSBpdGVtcyBhcHByb3By
aWF0ZWx5ICh3aXRob3V0IG5lZWRpbmcgdG8ga25vdyBhYm91dCB0aGUgb2xkIFNQSSB0YWdzKS4K
KyAgICAgICAgICAgIHN3aXRjaCAodGFnKSB7CisgICAgICAgICAgICBjYXNlIE9sZFdlYk1lbnVJ
dGVtVGFnU2VhcmNoSW5TcG90bGlnaHQ6CisgICAgICAgICAgICAgICAgbW9kZXJuVGFnID0gV2Vi
TWVudUl0ZW1UYWdTZWFyY2hJblNwb3RsaWdodDsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgIGNhc2UgT2xkV2ViTWVudUl0ZW1UYWdTZWFyY2hXZWI6CisgICAgICAgICAgICAg
ICAgbW9kZXJuVGFnID0gV2ViTWVudUl0ZW1UYWdTZWFyY2hXZWI7CisgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICBjYXNlIE9sZFdlYk1lbnVJdGVtVGFnTG9va1VwSW5EaWN0aW9u
YXJ5OgorICAgICAgICAgICAgICAgIG1vZGVyblRhZyA9IFdlYk1lbnVJdGVtVGFnTG9va1VwSW5E
aWN0aW9uYXJ5OworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgZGVmYXVsdDoK
KyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAg
ICAKKyAgICAgICAgaWYgKG1vZGVyblRhZyAhPSB0YWcpCisgICAgICAgICAgICBbaXRlbSBzZXRU
YWc6bW9kZXJuVGFnXTsgICAgICAgIAorICAgIH0KKworICAgIHJldHVybiBuZXdNZW51SXRlbXM7
Cit9CisKK3N0YXRpYyBSZXRhaW5QdHI8TlNBcnJheT4gY3VzdG9tTWVudUZyb21EZWZhdWx0SXRl
bXMoV2ViVmlldyAqd2ViVmlldywgY29uc3QgQ29udGV4dE1lbnUmIGRlZmF1bHRNZW51KQorewor
ICAgIGlkIGRlbGVnYXRlID0gW3dlYlZpZXcgVUlEZWxlZ2F0ZV07CisgICAgU0VMIHNlbGVjdG9y
ID0gQHNlbGVjdG9yKHdlYlZpZXc6Y29udGV4dE1lbnVJdGVtc0ZvckVsZW1lbnQ6ZGVmYXVsdE1l
bnVJdGVtczopOworICAgIGlmICghW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpzZWxlY3Rv
cl0pCisgICAgICAgIHJldHVybiBkZWZhdWx0TWVudS5wbGF0Zm9ybURlc2NyaXB0aW9uKCk7CisK
KyAgICBhdXRvIGVsZW1lbnQgPSBhZG9wdE5TKFtbV2ViRWxlbWVudERpY3Rpb25hcnkgYWxsb2Nd
IGluaXRXaXRoSGl0VGVzdFJlc3VsdDpbd2ViVmlldyBwYWdlXS0+Y29udGV4dE1lbnVDb250cm9s
bGVyKCkuaGl0VGVzdFJlc3VsdCgpXSk7CisKKyAgICBCT09MIHByZVZlcnNpb24zQ2xpZW50ID0g
aXNQcmVWZXJzaW9uM0NsaWVudCgpOworICAgIGlmIChwcmVWZXJzaW9uM0NsaWVudCkgeworICAg
ICAgICBET01Ob2RlICpub2RlID0gW2VsZW1lbnQgb2JqZWN0Rm9yS2V5OldlYkVsZW1lbnRET01O
b2RlS2V5XTsKKyAgICAgICAgaWYgKFtub2RlIGlzS2luZE9mQ2xhc3M6W0RPTUhUTUxJbnB1dEVs
ZW1lbnQgY2xhc3NdXSAmJiBbKERPTUhUTUxJbnB1dEVsZW1lbnQgKilub2RlIF9pc1RleHRGaWVs
ZF0pCisgICAgICAgICAgICByZXR1cm4gZGVmYXVsdE1lbnUucGxhdGZvcm1EZXNjcmlwdGlvbigp
OworICAgICAgICBpZiAoW25vZGUgaXNLaW5kT2ZDbGFzczpbRE9NSFRNTFRleHRBcmVhRWxlbWVu
dCBjbGFzc11dKQorICAgICAgICAgICAgcmV0dXJuIGRlZmF1bHRNZW51LnBsYXRmb3JtRGVzY3Jp
cHRpb24oKTsKKyAgICB9CisKKyAgICBOU011dGFibGVBcnJheSAqZGVmYXVsdE1lbnVJdGVtcyA9
IGRlZmF1bHRNZW51LnBsYXRmb3JtRGVzY3JpcHRpb24oKTsKKworICAgIGZvciAoTlNNZW51SXRl
bSAqbWVudUl0ZW0gaW4gZGVmYXVsdE1lbnVJdGVtcykgeworICAgICAgICBpZiAoIW1lbnVJdGVt
LnJlcHJlc2VudGVkT2JqZWN0KQorICAgICAgICAgICAgbWVudUl0ZW0ucmVwcmVzZW50ZWRPYmpl
Y3QgPSBlbGVtZW50LmdldCgpOworICAgIH0KKworICAgIGF1dG8gc2F2ZWRJdGVtcyA9IGZpeE1l
bnVzVG9TZW5kVG9PbGRDbGllbnRzKGRlZmF1bHRNZW51SXRlbXMpOworCisgICAgTlNBcnJheSAq
ZGVsZWdhdGVTdXBwbGllZEl0ZW1zID0gQ2FsbFVJRGVsZWdhdGUod2ViVmlldywgc2VsZWN0b3Is
IGVsZW1lbnQuZ2V0KCksIGRlZmF1bHRNZW51SXRlbXMpOworCisgICAgcmV0dXJuIGZpeE1lbnVz
UmVjZWl2ZWRGcm9tT2xkQ2xpZW50cyhkZWxlZ2F0ZVN1cHBsaWVkSXRlbXMsIHNhdmVkSXRlbXMu
Z2V0KCkpLmF1dG9yZWxlYXNlKCk7Cit9CisKIC0gKE5TTWVudSAqKW1lbnVGb3JFdmVudDooTlNF
dmVudCAqKWV2ZW50CiB7CiAgICAgLy8gVGhlcmUncyBhIGNoYW5jZSB0aGF0IGlmIHdlIHJ1biBh
IG5lc3RlZCBldmVudCBsb29wIHRoZSBldmVudCB3aWxsIGJlIHJlbGVhc2VkLgpAQCAtMzM2MSwy
MSArMzU5MiwxNyBAQCBzdGF0aWMgdm9pZCBzZXRNZW51VGFyZ2V0cyhOU01lbnUqIG1lbnUpCiAg
ICAgaWYgKCFwYWdlKQogICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgQ29udGV4dE1lbnUqIGNv
cmVNZW51ID0gcGFnZS0+Y29udGV4dE1lbnVDb250cm9sbGVyKCkuY29udGV4dE1lbnUoKTsKLSAg
ICBpZiAoIWNvcmVNZW51KQorICAgIENvbnRleHRNZW51KiBjb250ZXh0TWVudSA9IHBhZ2UtPmNv
bnRleHRNZW51Q29udHJvbGxlcigpLmNvbnRleHRNZW51KCk7CisgICAgaWYgKCFjb250ZXh0TWVu
dSkKICAgICAgICAgcmV0dXJuIG5pbDsKIAotICAgIE5TQXJyYXkqIG1lbnVJdGVtcyA9IGNvcmVN
ZW51LT5wbGF0Zm9ybURlc2NyaXB0aW9uKCk7Ci0gICAgaWYgKCFtZW51SXRlbXMpCi0gICAgICAg
IHJldHVybiBuaWw7Ci0KLSAgICBOU1VJbnRlZ2VyIGNvdW50ID0gW21lbnVJdGVtcyBjb3VudF07
Ci0gICAgaWYgKCFjb3VudCkKKyAgICBhdXRvIG1lbnVJdGVtcyA9IGN1c3RvbU1lbnVGcm9tRGVm
YXVsdEl0ZW1zKFtzZWxmIF93ZWJWaWV3XSwgKmNvbnRleHRNZW51KTsKKyAgICBpZiAoIVttZW51
SXRlbXMgY291bnRdKQogICAgICAgICByZXR1cm4gbmlsOwogCiAgICAgYXV0byBtZW51ID0gYWRv
cHROUyhbW05TTWVudSBhbGxvY10gaW5pdF0pOwogCi0gICAgZm9yIChOU01lbnVJdGVtICppdGVt
IGluIG1lbnVJdGVtcykgeworICAgIGZvciAoTlNNZW51SXRlbSAqaXRlbSBpbiBtZW51SXRlbXMu
Z2V0KCkpIHsKICAgICAgICAgW21lbnUgYWRkSXRlbTppdGVtXTsKIAogICAgICAgICBpZiAoaXRl
bS50YWcgPT0gQ29udGV4dE1lbnVJdGVtVGFnU2hhcmVNZW51KSB7CkBAIC0zMzg0LDggKzM2MTEs
OCBAQCBzdGF0aWMgdm9pZCBzZXRNZW51VGFyZ2V0cyhOU01lbnUqIG1lbnUpCiAgICAgICAgICAg
ICBfcHJpdmF0ZS0+Y3VycmVudFNoYXJpbmdTZXJ2aWNlUGlja2VyQ29udHJvbGxlciA9IGFkb3B0
TlMoW1tXZWJTaGFyaW5nU2VydmljZVBpY2tlckNvbnRyb2xsZXIgYWxsb2NdIGluaXRXaXRoU2hh
cmluZ1NlcnZpY2VQaWNrZXI6aXRlbS5yZXByZXNlbnRlZE9iamVjdCBjbGllbnQ6c3RhdGljX2Nh
c3Q8V2ViQ29udGV4dE1lbnVDbGllbnQmPihwYWdlLT5jb250ZXh0TWVudUNvbnRyb2xsZXIoKS5j
bGllbnQoKSldKTsKICNlbmRpZgogICAgICAgICB9Ci0KICAgICB9CisKICAgICBzZXRNZW51VGFy
Z2V0cyhtZW51LmdldCgpKTsKICAgICAKICAgICBbW1dlYk1lbnVUYXJnZXQgc2hhcmVkTWVudVRh
cmdldF0gc2V0TWVudUNvbnRyb2xsZXI6JnBhZ2UtPmNvbnRleHRNZW51Q29udHJvbGxlcigpXTsK
</data>
<flag name="review"
          id="289083"
          type_id="1"
          status="+"
          setter="thorton"
    />
          </attachment>
      

    </bug>

</bugzilla>