<?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>28709</bug_id>
          
          <creation_ts>2009-08-25 05:49:18 -0700</creation_ts>
          <short_desc>[V8] Made bindings use Node::setOnEvent functions for Node descendants instead of Node::setAttributeEventListener.</short_desc>
          <delta_ts>2009-08-28 18:36:47 -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>WebCore Misc.</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="Vitaly Repeshko">vitalyr</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>dglazkov</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>142565</commentid>
    <comment_count>0</comment_count>
    <who name="Vitaly Repeshko">vitalyr</who>
    <bug_when>2009-08-25 05:49:18 -0700</bug_when>
    <thetext>WebCore: Make both Node::setAttributeEventListener and Node::setOnEvent forward listener to DOM window when necessary.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>142566</commentid>
    <comment_count>1</comment_count>
      <attachid>38543</attachid>
    <who name="Vitaly Repeshko">vitalyr</who>
    <bug_when>2009-08-25 05:51:56 -0700</bug_when>
    <thetext>Created attachment 38543
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>142569</commentid>
    <comment_count>2</comment_count>
      <attachid>38544</attachid>
    <who name="Vitaly Repeshko">vitalyr</who>
    <bug_when>2009-08-25 05:58:07 -0700</bug_when>
    <thetext>Created attachment 38544
patch: fixed ChangedLog formatting</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>142570</commentid>
    <comment_count>3</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2009-08-25 06:39:13 -0700</bug_when>
    <thetext>I don&apos;t understand what this patch is doing if it cannot be tested?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>142571</commentid>
    <comment_count>4</comment_count>
    <who name="Vitaly Repeshko">vitalyr</who>
    <bug_when>2009-08-25 07:52:21 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; I don&apos;t understand what this patch is doing if it cannot be tested?

Summary of our IRC discussion with Sam:

This issue only hurts V8 bindings since they differ from JSC in how event attribute accessors are implemented.

Node::setAttributeEventListener is an internal utility function and should not be called directly.

A better solution here is to make V8 bindings use an approach similar to JSC and to make the function private. I&apos;ll post an updated patch soon.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>142582</commentid>
    <comment_count>5</comment_count>
      <attachid>38544</attachid>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2009-08-25 08:38:03 -0700</bug_when>
    <thetext>Comment on attachment 38544
patch: fixed ChangedLog formatting

Clearing review flag based on latest comment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>143353</commentid>
    <comment_count>6</comment_count>
    <who name="Vitaly Repeshko">vitalyr</who>
    <bug_when>2009-08-28 06:49:27 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; A better solution here is to make V8 bindings use an approach similar to JSC
&gt; and to make the function private. I&apos;ll post an updated patch soon.

Sam,

The cleanup part of this turns out be less trivial than changing the visibility modifier of Node::{set,get,clear}AttributeEventListener. These functions are called by classes that are neither from V8 bindings (which I fixed) nor Node descendants. All these calls use statically known event names (i.e. they all look like node-&gt;getAttributeEventListener(eventNames().foo)), but some of these event names have no corresponding Node::{setOn,on}Event accessors. So I think Node::{set,get,clear}AttributeEventListener have to stay unchanged.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>143354</commentid>
    <comment_count>7</comment_count>
      <attachid>38731</attachid>
    <who name="Vitaly Repeshko">vitalyr</who>
    <bug_when>2009-08-28 06:51:37 -0700</bug_when>
    <thetext>Created attachment 38731
patch: fixed V8 bindings</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>143384</commentid>
    <comment_count>8</comment_count>
      <attachid>38731</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2009-08-28 08:58:26 -0700</bug_when>
    <thetext>Comment on attachment 38731
patch: fixed V8 bindings

r=me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>143385</commentid>
    <comment_count>9</comment_count>
      <attachid>38731</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-08-28 09:05:25 -0700</bug_when>
    <thetext>Comment on attachment 38731
patch: fixed V8 bindings

Rejecting patch 38731 from commit-queue.  This patch will require manual commit.

[&apos;WebKitTools/Scripts/run-webkit-tests&apos;, &apos;--no-launch-safari&apos;, &apos;--quiet&apos;, &apos;--exit-after-n-failures=1&apos;] failed with exit code 1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>143400</commentid>
    <comment_count>10</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2009-08-28 10:30:32 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (In reply to comment #4)
&gt; &gt; A better solution here is to make V8 bindings use an approach similar to JSC
&gt; &gt; and to make the function private. I&apos;ll post an updated patch soon.
&gt; 
&gt; Sam,
&gt; 
&gt; The cleanup part of this turns out be less trivial than changing the visibility
&gt; modifier of Node::{set,get,clear}AttributeEventListener. These functions are
&gt; called by classes that are neither from V8 bindings (which I fixed) nor Node
&gt; descendants. All these calls use statically known event names (i.e. they all
&gt; look like node-&gt;getAttributeEventListener(eventNames().foo)), but some of these
&gt; event names have no corresponding Node::{setOn,on}Event accessors. So I think
&gt; Node::{set,get,clear}AttributeEventListener have to stay unchanged.

Ok, that makes sense.  As long as the bindings code doesn&apos;t depend on them, I think we will be good.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>143427</commentid>
    <comment_count>11</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2009-08-28 12:05:03 -0700</bug_when>
    <thetext>Landed as http://trac.webkit.org/changeset/47872.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>143491</commentid>
    <comment_count>12</comment_count>
      <attachid>38731</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-08-28 18:36:47 -0700</bug_when>
    <thetext>Comment on attachment 38731
patch: fixed V8 bindings

unrelated test crashed.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>38543</attachid>
            <date>2009-08-25 05:51:56 -0700</date>
            <delta_ts>2009-08-25 05:57:06 -0700</delta_ts>
            <desc>patch</desc>
            <filename>listeners.patch</filename>
            <type>text/plain</type>
            <size>14313</size>
            <attacher name="Vitaly Repeshko">vitalyr</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
NTc3MmU3Yy4uM2ZlN2M5MiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNSBAQAorMjAwOS0wOC0yNSAgVml0YWx5IFJlcGVz
aGtvICA8dml0YWx5ckBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgV2ViQ29yZTogTWFrZSBib3RoIE5vZGU6OnNldEF0dHJpYnV0
ZUV2ZW50TGlzdGVuZXIgYW5kCisgICAgICAgIE5vZGU6OnNldE9uRXZlbnQgZm9yd2FyZCBsaXN0
ZW5lciB0byBET00gd2luZG93IHdoZW4gbmVjZXNzYXJ5LgorCisgICAgICAgIEJlZm9yZSB0aGlz
IHBhdGNoIG9ubHkgTm9kZTo6c2V0T25FdmVudCBmdW5jdGlvbnMgZGlkIHRoZSBmb3J3YXJkaW5n
CisgICAgICAgIHdoaWNoIGJyb2tlIE5vZGU6OnNldEF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIgY2xp
ZW50cy4KKworCWh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yODcwOQor
CisgICAgICAgIFVzZXMgYWxyZWFkeSBleGlzdGluZyB0ZXN0cyBmcm9tIGh0dHA6Ly90cmFjLndl
YmtpdC5vcmcvY2hhbmdlc2V0LzQ3MzI2CisKKyAgICAgICAgKiBkb20vTm9kZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpOb2RlOjpjbGVhckF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6Tm9kZTo6c2V0QXR0cmlidXRlRXZlbnRMaXN0ZW5lcik6CisgICAgICAgIChX
ZWJDb3JlOjpOb2RlOjpnZXRBdHRyaWJ1dGVFdmVudExpc3RlbmVyKToKKwlOb3cgY2FsbCBzaG91
bGRGb3J3YXJkRXZlbnRMaXN0ZW5lclRvV2luZG93IHRvIGRldGVybWluZSBpZgorCWxpc3RlbmVy
IHNob3VsZCBiZSBmb3J3YXJkZWQgdG8gRE9NIHdpbmRvdy4KKyAgICAgICAgKiBkb20vTm9kZS5o
OgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6c2hvdWxkRm9yd2FyZEV2ZW50TGlzdGVuZXJUb1dp
bmRvdyk6CisJTmV3IHZpcnR1YWwgZnVuY3Rpb24gb3ZlcnJpZGRlbiBieSBIVE1MQm9keUVsZW1l
bnQgYW5kIEhUTUxGcmFtZVNldEVsZW1lbnQuCisJUmV0dXJucyBmYWxzZSBieSBkZWZhdWx0Lgor
ICAgICAgICAqIGh0bWwvSFRNTEJvZHlFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxCb2R5RWxlbWVudDo6c2hvdWxkRm9yd2FyZEV2ZW50TGlzdGVuZXJUb1dpbmRvdyk6CisgICAg
ICAgICogaHRtbC9IVE1MQm9keUVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxGcmFtZVNl
dEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZyYW1lU2V0RWxlbWVudDo6c2V0
T25oYXNoY2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGcmFtZVNldEVsZW1lbnQ6OnNo
b3VsZEZvcndhcmRFdmVudExpc3RlbmVyVG9XaW5kb3cpOgorICAgICAgICAqIGh0bWwvSFRNTEZy
YW1lU2V0RWxlbWVudC5oOgorCiAyMDA5LTA4LTI0ICBQYXZlbCBGZWxkbWFuICA8cGZlbGRtYW5A
Y2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFRpbW90aHkgSGF0Y2hlci4KZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvZG9tL05vZGUuY3BwIGIvV2ViQ29yZS9kb20vTm9kZS5jcHAKaW5k
ZXggYjQ2MDgxNi4uYjcyZDIwMCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20vTm9kZS5jcHAKKysr
IGIvV2ViQ29yZS9kb20vTm9kZS5jcHAKQEAgLTI5MDYsNiArMjkwNiwxMyBAQCB2b2lkIE5vZGU6
OmRpc3BhdGNoUHJvZ3Jlc3NFdmVudChjb25zdCBBdG9taWNTdHJpbmcgJmV2ZW50VHlwZSwgYm9v
bCBsZW5ndGhDb21wdQogCiB2b2lkIE5vZGU6OmNsZWFyQXR0cmlidXRlRXZlbnRMaXN0ZW5lcihj
b25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSkKIHsKKyAgICBpZiAoc2hvdWxkRm9yd2FyZEV2
ZW50TGlzdGVuZXJUb1dpbmRvdyhldmVudFR5cGUpKSB7CisgICAgICAgIERPTVdpbmRvdyogd2lu
ZG93ID0gZG9jdW1lbnQoKS0+ZG9tV2luZG93KCk7CisgICAgICAgIGlmICh3aW5kb3cpCisgICAg
ICAgICAgICB3aW5kb3ctPmNsZWFyQXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVudFR5cGUpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgaWYgKCFoYXNSYXJlRGF0YSgpKQogICAgICAg
ICByZXR1cm47CiAKQEAgLTI5MzMsNiArMjk0MCwxMyBAQCB2b2lkIE5vZGU6OmNsZWFyQXR0cmli
dXRlRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSkKIAogdm9pZCBO
b2RlOjpzZXRBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRU
eXBlLCBQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+IGxpc3RlbmVyKQogeworICAgIGlmIChzaG91
bGRGb3J3YXJkRXZlbnRMaXN0ZW5lclRvV2luZG93KGV2ZW50VHlwZSkpIHsKKyAgICAgICAgRE9N
V2luZG93KiB3aW5kb3cgPSBkb2N1bWVudCgpLT5kb21XaW5kb3coKTsKKyAgICAgICAgaWYgKHdp
bmRvdykKKyAgICAgICAgICAgIHdpbmRvdy0+c2V0QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVu
dFR5cGUsIGxpc3RlbmVyKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIGNsZWFyQXR0
cmlidXRlRXZlbnRMaXN0ZW5lcihldmVudFR5cGUpOwogICAgIGlmIChsaXN0ZW5lcikKICAgICAg
ICAgYWRkRXZlbnRMaXN0ZW5lcihldmVudFR5cGUsIGxpc3RlbmVyLCBmYWxzZSk7CkBAIC0yOTQw
LDYgKzI5NTQsMTMgQEAgdm9pZCBOb2RlOjpzZXRBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGNvbnN0
IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBQYXNzUmVmUHRyPEUKIAogRXZlbnRMaXN0ZW5lciog
Tm9kZTo6Z2V0QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50
VHlwZSkgY29uc3QKIHsKKyAgICBpZiAoc2hvdWxkRm9yd2FyZEV2ZW50TGlzdGVuZXJUb1dpbmRv
dyhldmVudFR5cGUpKSB7CisgICAgICAgIERPTVdpbmRvdyogd2luZG93ID0gZG9jdW1lbnQoKS0+
ZG9tV2luZG93KCk7CisgICAgICAgIGlmICh3aW5kb3cpCisgICAgICAgICAgICByZXR1cm4gd2lu
ZG93LT5nZXRBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50VHlwZSk7CisgICAgICAgIHJldHVy
biAwOworICAgIH0KKwogICAgIGNvbnN0IFJlZ2lzdGVyZWRFdmVudExpc3RlbmVyVmVjdG9yJiBs
aXN0ZW5lcnMgPSBldmVudExpc3RlbmVycygpOwogICAgIHNpemVfdCBzaXplID0gbGlzdGVuZXJz
LnNpemUoKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsraSkgewpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9kb20vTm9kZS5oIGIvV2ViQ29yZS9kb20vTm9kZS5oCmluZGV4IDk0NjQ4
NjMuLmZjOTAzNTMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL05vZGUuaAorKysgYi9XZWJDb3Jl
L2RvbS9Ob2RlLmgKQEAgLTUwNiw2ICs1MDYsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lk
IHJlbW92ZUV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIEV2ZW50
TGlzdGVuZXIqLCBib29sIHVzZUNhcHR1cmUpOwogCiAgICAgLy8gVXNlZCBmb3IgbGVnYWN5ICJv
bkV2ZW50IiBwcm9wZXJ0eSBBUElzLgorICAgIC8vCisgICAgLy8gSWYgc2hvdWxkRm9yd2FyZEV2
ZW50TGlzdGVuZXJUb1dpbmRvdyBiZWxvdyByZXR1cm5zIHRydWUgZm9yIHRoZSBnaXZlbiBldmVu
dCB0eXBlLCB0aGVuIHRoZSBsaXN0ZW5lciBpcyBmb3J3YXJkZWQKKyAgICAvLyB0byBET00gd2lu
ZG93LgogICAgIHZvaWQgc2V0QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJp
bmcmIGV2ZW50VHlwZSwgUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPik7CiAgICAgdm9pZCBjbGVh
ckF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUpOwog
ICAgIEV2ZW50TGlzdGVuZXIqIGdldEF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWlj
U3RyaW5nJiBldmVudFR5cGUpIGNvbnN0OwpAQCAtNTUyLDE3ICs1NTUsMTQgQEAgcHVibGljOgog
CiAgICAgY29uc3QgUmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXJWZWN0b3ImIGV2ZW50TGlzdGVuZXJz
KCkgY29uc3Q7CiAKLSAgICAvLyBUaGVzZSA0IGF0dHJpYnV0ZSBldmVudCBoYW5kbGVyIGF0dHJp
YnV0ZXMgYXJlIG92ZXJyaWRlZCBieSBIVE1MQm9keUVsZW1lbnQKLSAgICAvLyBhbmQgSFRNTEZy
YW1lU2V0RWxlbWVudCB0byBmb3J3YXJkIHRvIHRoZSBET01XaW5kb3cuCi0gICAgdmlydHVhbCBF
dmVudExpc3RlbmVyKiBvbmJsdXIoKSBjb25zdDsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0T25ibHVy
KFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4pOwotICAgIHZpcnR1YWwgRXZlbnRMaXN0ZW5lciog
b25lcnJvcigpIGNvbnN0OwotICAgIHZpcnR1YWwgdm9pZCBzZXRPbmVycm9yKFBhc3NSZWZQdHI8
RXZlbnRMaXN0ZW5lcj4pOwotICAgIHZpcnR1YWwgRXZlbnRMaXN0ZW5lciogb25mb2N1cygpIGNv
bnN0OwotICAgIHZpcnR1YWwgdm9pZCBzZXRPbmZvY3VzKFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5l
cj4pOwotICAgIHZpcnR1YWwgRXZlbnRMaXN0ZW5lciogb25sb2FkKCkgY29uc3Q7Ci0gICAgdmly
dHVhbCB2b2lkIHNldE9ubG9hZChQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+KTsKLQorICAgIEV2
ZW50TGlzdGVuZXIqIG9uYmx1cigpIGNvbnN0OworICAgIHZvaWQgc2V0T25ibHVyKFBhc3NSZWZQ
dHI8RXZlbnRMaXN0ZW5lcj4pOworICAgIEV2ZW50TGlzdGVuZXIqIG9uZXJyb3IoKSBjb25zdDsK
KyAgICB2b2lkIHNldE9uZXJyb3IoUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPik7CisgICAgRXZl
bnRMaXN0ZW5lciogb25mb2N1cygpIGNvbnN0OworICAgIHZvaWQgc2V0T25mb2N1cyhQYXNzUmVm
UHRyPEV2ZW50TGlzdGVuZXI+KTsKKyAgICBFdmVudExpc3RlbmVyKiBvbmxvYWQoKSBjb25zdDsK
KyAgICB2b2lkIHNldE9ubG9hZChQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+KTsKICAgICBFdmVu
dExpc3RlbmVyKiBvbmFib3J0KCkgY29uc3Q7CiAgICAgdm9pZCBzZXRPbmFib3J0KFBhc3NSZWZQ
dHI8RXZlbnRMaXN0ZW5lcj4pOwogICAgIEV2ZW50TGlzdGVuZXIqIG9uY2hhbmdlKCkgY29uc3Q7
CkBAIC02NDcsNyArNjQ3LDEwIEBAIHByb3RlY3RlZDoKIAogICAgIHZpcnR1YWwgdm9pZCB3aWxs
TW92ZVRvTmV3T3duZXJEb2N1bWVudCgpOwogICAgIHZpcnR1YWwgdm9pZCBkaWRNb3ZlVG9OZXdP
d25lckRvY3VtZW50KCk7Ci0gICAgCisKKyAgICAvLyBPdmVycmlkZGVuIGJ5IEhUTUxCb2R5RWxl
bWVudCBhbmQgSFRNTEZyYW1lU2V0RWxlbWVudCB0byBmb3J3YXJkIGNlcnRhaW4gZXZlbnQgbGlz
dGVuZXIgdHlwZXMgdG8gRE9NIHdpbmRvdy4KKyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkRm9yd2Fy
ZEV2ZW50TGlzdGVuZXJUb1dpbmRvdyhjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSkgY29u
c3QgeyByZXR1cm4gZmFsc2U7IH0KKwogICAgIHZpcnR1YWwgdm9pZCBhZGRTdWJyZXNvdXJjZUF0
dHJpYnV0ZVVSTHMoTGlzdEhhc2hTZXQ8S1VSTD4mKSBjb25zdCB7IH0KICAgICB2b2lkIHNldFRh
YkluZGV4RXhwbGljaXRseShzaG9ydCk7CiAgICAgCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwv
SFRNTEJvZHlFbGVtZW50LmNwcCBiL1dlYkNvcmUvaHRtbC9IVE1MQm9keUVsZW1lbnQuY3BwCmlu
ZGV4IDRhZTEyZjUuLmZmNzA1MzUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MQm9keUVs
ZW1lbnQuY3BwCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MQm9keUVsZW1lbnQuY3BwCkBAIC0zNSw2
ICszNSw4IEBACiAjaW5jbHVkZSAiTWFwcGVkQXR0cmlidXRlLmgiCiAjaW5jbHVkZSAiU2NyaXB0
RXZlbnRMaXN0ZW5lci5oIgogCisjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KKwogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwpAQCAtMzE4LDQ2ICszMjAs
NiBAQCB2b2lkIEhUTUxCb2R5RWxlbWVudDo6ZGlkTW92ZVRvTmV3T3duZXJEb2N1bWVudCgpCiAg
ICAgSFRNTEVsZW1lbnQ6OmRpZE1vdmVUb05ld093bmVyRG9jdW1lbnQoKTsKIH0KIAotRXZlbnRM
aXN0ZW5lciogSFRNTEJvZHlFbGVtZW50OjpvbmJsdXIoKSBjb25zdAotewotICAgIHJldHVybiBk
b2N1bWVudCgpLT5nZXRXaW5kb3dBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5i
bHVyRXZlbnQpOwotfQotCi12b2lkIEhUTUxCb2R5RWxlbWVudDo6c2V0T25ibHVyKFBhc3NSZWZQ
dHI8RXZlbnRMaXN0ZW5lcj4gZXZlbnRMaXN0ZW5lcikKLXsKLSAgICBkb2N1bWVudCgpLT5zZXRX
aW5kb3dBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5ibHVyRXZlbnQsIGV2ZW50
TGlzdGVuZXIpOwotfQotCi1FdmVudExpc3RlbmVyKiBIVE1MQm9keUVsZW1lbnQ6Om9uZXJyb3Io
KSBjb25zdAotewotICAgIHJldHVybiBkb2N1bWVudCgpLT5nZXRXaW5kb3dBdHRyaWJ1dGVFdmVu
dExpc3RlbmVyKGV2ZW50TmFtZXMoKS5lcnJvckV2ZW50KTsKLX0KLQotdm9pZCBIVE1MQm9keUVs
ZW1lbnQ6OnNldE9uZXJyb3IoUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiBldmVudExpc3RlbmVy
KQotewotICAgIGRvY3VtZW50KCktPnNldFdpbmRvd0F0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZl
bnROYW1lcygpLmVycm9yRXZlbnQsIGV2ZW50TGlzdGVuZXIpOwotfQotCi1FdmVudExpc3RlbmVy
KiBIVE1MQm9keUVsZW1lbnQ6Om9uZm9jdXMoKSBjb25zdAotewotICAgIHJldHVybiBkb2N1bWVu
dCgpLT5nZXRXaW5kb3dBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5mb2N1c0V2
ZW50KTsKLX0KLQotdm9pZCBIVE1MQm9keUVsZW1lbnQ6OnNldE9uZm9jdXMoUGFzc1JlZlB0cjxF
dmVudExpc3RlbmVyPiBldmVudExpc3RlbmVyKQotewotICAgIGRvY3VtZW50KCktPnNldFdpbmRv
d0F0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLmZvY3VzRXZlbnQsIGV2ZW50TGlz
dGVuZXIpOwotfQotCi1FdmVudExpc3RlbmVyKiBIVE1MQm9keUVsZW1lbnQ6Om9ubG9hZCgpIGNv
bnN0Ci17Ci0gICAgcmV0dXJuIGRvY3VtZW50KCktPmdldFdpbmRvd0F0dHJpYnV0ZUV2ZW50TGlz
dGVuZXIoZXZlbnROYW1lcygpLmxvYWRFdmVudCk7Ci19Ci0KLXZvaWQgSFRNTEJvZHlFbGVtZW50
OjpzZXRPbmxvYWQoUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiBldmVudExpc3RlbmVyKQotewot
ICAgIGRvY3VtZW50KCktPnNldFdpbmRvd0F0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1l
cygpLmxvYWRFdmVudCwgZXZlbnRMaXN0ZW5lcik7Ci19Ci0KIEV2ZW50TGlzdGVuZXIqIEhUTUxC
b2R5RWxlbWVudDo6b25iZWZvcmV1bmxvYWQoKSBjb25zdAogewogICAgIHJldHVybiBkb2N1bWVu
dCgpLT5nZXRXaW5kb3dBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5iZWZvcmV1
bmxvYWRFdmVudCk7CkBAIC00MzgsNCArNDAwLDI1IEBAIHZvaWQgSFRNTEJvZHlFbGVtZW50Ojpz
ZXRPbnVubG9hZChQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+IGV2ZW50TGlzdGVuZXIpCiAgICAg
ZG9jdW1lbnQoKS0+c2V0V2luZG93QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCku
dW5sb2FkRXZlbnQsIGV2ZW50TGlzdGVuZXIpOwogfQogCitib29sIEhUTUxCb2R5RWxlbWVudDo6
c2hvdWxkRm9yd2FyZEV2ZW50TGlzdGVuZXJUb1dpbmRvdyhjb25zdCBBdG9taWNTdHJpbmcmIGV2
ZW50VHlwZSkgY29uc3QKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEhhc2hTZXQ8QXRvbWlj
U3RyaW5nPiwgZm9yd2FyZFR5cGVzLCAoKSk7CisgICAgaWYgKGZvcndhcmRUeXBlcy5pc0VtcHR5
KCkpIHsKKyAgICAgICAgZm9yd2FyZFR5cGVzLmFkZChldmVudE5hbWVzKCkuZm9jdXNFdmVudCk7
CisgICAgICAgIGZvcndhcmRUeXBlcy5hZGQoZXZlbnROYW1lcygpLmJsdXJFdmVudCk7CisgICAg
ICAgIGZvcndhcmRUeXBlcy5hZGQoZXZlbnROYW1lcygpLmVycm9yRXZlbnQpOworICAgICAgICBm
b3J3YXJkVHlwZXMuYWRkKGV2ZW50TmFtZXMoKS5sb2FkRXZlbnQpOworICAgICAgICBmb3J3YXJk
VHlwZXMuYWRkKGV2ZW50TmFtZXMoKS51bmxvYWRFdmVudCk7CisgICAgICAgIGZvcndhcmRUeXBl
cy5hZGQoZXZlbnROYW1lcygpLmJlZm9yZXVubG9hZEV2ZW50KTsKKyAgICAgICAgZm9yd2FyZFR5
cGVzLmFkZChldmVudE5hbWVzKCkubWVzc2FnZUV2ZW50KTsKKyAgICAgICAgZm9yd2FyZFR5cGVz
LmFkZChldmVudE5hbWVzKCkub2ZmbGluZUV2ZW50KTsKKyAgICAgICAgZm9yd2FyZFR5cGVzLmFk
ZChldmVudE5hbWVzKCkub25saW5lRXZlbnQpOworICAgICAgICBmb3J3YXJkVHlwZXMuYWRkKGV2
ZW50TmFtZXMoKS5yZXNpemVFdmVudCk7CisgICAgICAgIGZvcndhcmRUeXBlcy5hZGQoZXZlbnRO
YW1lcygpLnN0b3JhZ2VFdmVudCk7CisgICAgICAgIGZvcndhcmRUeXBlcy5hZGQoZXZlbnROYW1l
cygpLnVubG9hZEV2ZW50KTsKKyAgICAgICAgZm9yd2FyZFR5cGVzLmFkZChldmVudE5hbWVzKCku
aGFzaGNoYW5nZUV2ZW50KTsKKyAgICB9CisgICAgcmV0dXJuIGZvcndhcmRUeXBlcy5jb250YWlu
cyhldmVudFR5cGUpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9X
ZWJDb3JlL2h0bWwvSFRNTEJvZHlFbGVtZW50LmggYi9XZWJDb3JlL2h0bWwvSFRNTEJvZHlFbGVt
ZW50LmgKaW5kZXggZDVlZmFiMy4uOTllZmI4NyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hU
TUxCb2R5RWxlbWVudC5oCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MQm9keUVsZW1lbnQuaApAQCAt
NDQsMTUgKzQ0LDYgQEAgcHVibGljOgogICAgIFN0cmluZyB2TGluaygpIGNvbnN0OwogICAgIHZv
aWQgc2V0VkxpbmsoY29uc3QgU3RyaW5nJik7CiAKLSAgICB2aXJ0dWFsIEV2ZW50TGlzdGVuZXIq
IG9uYmx1cigpIGNvbnN0OwotICAgIHZpcnR1YWwgdm9pZCBzZXRPbmJsdXIoUGFzc1JlZlB0cjxF
dmVudExpc3RlbmVyPik7Ci0gICAgdmlydHVhbCBFdmVudExpc3RlbmVyKiBvbmVycm9yKCkgY29u
c3Q7Ci0gICAgdmlydHVhbCB2b2lkIHNldE9uZXJyb3IoUGFzc1JlZlB0cjxFdmVudExpc3RlbmVy
Pik7Ci0gICAgdmlydHVhbCBFdmVudExpc3RlbmVyKiBvbmZvY3VzKCkgY29uc3Q7Ci0gICAgdmly
dHVhbCB2b2lkIHNldE9uZm9jdXMoUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPik7Ci0gICAgdmly
dHVhbCBFdmVudExpc3RlbmVyKiBvbmxvYWQoKSBjb25zdDsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0
T25sb2FkKFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4pOwotCiAgICAgRXZlbnRMaXN0ZW5lciog
b25iZWZvcmV1bmxvYWQoKSBjb25zdDsKICAgICB2b2lkIHNldE9uYmVmb3JldW5sb2FkKFBhc3NS
ZWZQdHI8RXZlbnRMaXN0ZW5lcj4pOwogICAgIEV2ZW50TGlzdGVuZXIqIG9ubWVzc2FnZSgpIGNv
bnN0OwpAQCAtNzAsNiArNjEsOSBAQCBwdWJsaWM6CiAgICAgRXZlbnRMaXN0ZW5lciogb251bmxv
YWQoKSBjb25zdDsKICAgICB2b2lkIHNldE9udW5sb2FkKFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5l
cj4pOwogCitwcm90ZWN0ZWQ6CisgICAgdmlydHVhbCBib29sIHNob3VsZEZvcndhcmRFdmVudExp
c3RlbmVyVG9XaW5kb3coY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUpIGNvbnN0OworCiBw
cml2YXRlOgogICAgIHZpcnR1YWwgSFRNTFRhZ1N0YXR1cyBlbmRUYWdSZXF1aXJlbWVudCgpIGNv
bnN0IHsgcmV0dXJuIFRhZ1N0YXR1c1JlcXVpcmVkOyB9CiAgICAgdmlydHVhbCBpbnQgdGFnUHJp
b3JpdHkoKSBjb25zdCB7IHJldHVybiAxMDsgfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hU
TUxGcmFtZVNldEVsZW1lbnQuY3BwIGIvV2ViQ29yZS9odG1sL0hUTUxGcmFtZVNldEVsZW1lbnQu
Y3BwCmluZGV4IDhkYzM5NjQuLjdiNzJiYTggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1M
RnJhbWVTZXRFbGVtZW50LmNwcAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lU2V0RWxlbWVu
dC5jcHAKQEAgLTIzMCwzNiArMjMwLDYgQEAgdm9pZCBIVE1MRnJhbWVTZXRFbGVtZW50OjpzZXRS
b3dzKGNvbnN0IFN0cmluZyAmdmFsdWUpCiAgICAgc2V0QXR0cmlidXRlKHJvd3NBdHRyLCB2YWx1
ZSk7CiB9CiAKLUV2ZW50TGlzdGVuZXIqIEhUTUxGcmFtZVNldEVsZW1lbnQ6Om9uYmx1cigpIGNv
bnN0Ci17Ci0gICAgcmV0dXJuIGRvY3VtZW50KCktPmdldFdpbmRvd0F0dHJpYnV0ZUV2ZW50TGlz
dGVuZXIoZXZlbnROYW1lcygpLmJsdXJFdmVudCk7Ci19Ci0KLXZvaWQgSFRNTEZyYW1lU2V0RWxl
bWVudDo6c2V0T25ibHVyKFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gZXZlbnRMaXN0ZW5lcikK
LXsKLSAgICBkb2N1bWVudCgpLT5zZXRXaW5kb3dBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50
TmFtZXMoKS5ibHVyRXZlbnQsIGV2ZW50TGlzdGVuZXIpOwotfQotCi1FdmVudExpc3RlbmVyKiBI
VE1MRnJhbWVTZXRFbGVtZW50OjpvbmVycm9yKCkgY29uc3QKLXsKLSAgICByZXR1cm4gZG9jdW1l
bnQoKS0+Z2V0V2luZG93QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkuZXJyb3JF
dmVudCk7Ci19Ci0KLXZvaWQgSFRNTEZyYW1lU2V0RWxlbWVudDo6c2V0T25lcnJvcihQYXNzUmVm
UHRyPEV2ZW50TGlzdGVuZXI+IGV2ZW50TGlzdGVuZXIpCi17Ci0gICAgZG9jdW1lbnQoKS0+c2V0
V2luZG93QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkuZXJyb3JFdmVudCwgZXZl
bnRMaXN0ZW5lcik7Ci19Ci0KLUV2ZW50TGlzdGVuZXIqIEhUTUxGcmFtZVNldEVsZW1lbnQ6Om9u
Zm9jdXMoKSBjb25zdAotewotICAgIHJldHVybiBkb2N1bWVudCgpLT5nZXRXaW5kb3dBdHRyaWJ1
dGVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5mb2N1c0V2ZW50KTsKLX0KLQotdm9pZCBIVE1M
RnJhbWVTZXRFbGVtZW50OjpzZXRPbmZvY3VzKFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gZXZl
bnRMaXN0ZW5lcikKLXsKLSAgICBkb2N1bWVudCgpLT5zZXRXaW5kb3dBdHRyaWJ1dGVFdmVudExp
c3RlbmVyKGV2ZW50TmFtZXMoKS5mb2N1c0V2ZW50LCBldmVudExpc3RlbmVyKTsKLX0KLQogRXZl
bnRMaXN0ZW5lciogSFRNTEZyYW1lU2V0RWxlbWVudDo6b25oYXNoY2hhbmdlKCkgY29uc3QKIHsK
ICAgICByZXR1cm4gZG9jdW1lbnQoKS0+Z2V0V2luZG93QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihl
dmVudE5hbWVzKCkuaGFzaGNoYW5nZUV2ZW50KTsKQEAgLTI2OCwxNiArMjM4LDYgQEAgRXZlbnRM
aXN0ZW5lciogSFRNTEZyYW1lU2V0RWxlbWVudDo6b25oYXNoY2hhbmdlKCkgY29uc3QKIHZvaWQg
SFRNTEZyYW1lU2V0RWxlbWVudDo6c2V0T25oYXNoY2hhbmdlKFBhc3NSZWZQdHI8RXZlbnRMaXN0
ZW5lcj4gZXZlbnRMaXN0ZW5lcikKIHsKICAgICBkb2N1bWVudCgpLT5zZXRXaW5kb3dBdHRyaWJ1
dGVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5oYXNoY2hhbmdlRXZlbnQsIGV2ZW50TGlzdGVu
ZXIpOwotfSAgIAotCi1FdmVudExpc3RlbmVyKiBIVE1MRnJhbWVTZXRFbGVtZW50OjpvbmxvYWQo
KSBjb25zdAotewotICAgIHJldHVybiBkb2N1bWVudCgpLT5nZXRXaW5kb3dBdHRyaWJ1dGVFdmVu
dExpc3RlbmVyKGV2ZW50TmFtZXMoKS5sb2FkRXZlbnQpOwotfQotCi12b2lkIEhUTUxGcmFtZVNl
dEVsZW1lbnQ6OnNldE9ubG9hZChQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+IGV2ZW50TGlzdGVu
ZXIpCi17Ci0gICAgZG9jdW1lbnQoKS0+c2V0V2luZG93QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihl
dmVudE5hbWVzKCkubG9hZEV2ZW50LCBldmVudExpc3RlbmVyKTsKIH0KIAogRXZlbnRMaXN0ZW5l
ciogSFRNTEZyYW1lU2V0RWxlbWVudDo6b25iZWZvcmV1bmxvYWQoKSBjb25zdApAQCAtMzUwLDQg
KzMxMCwyNyBAQCB2b2lkIEhUTUxGcmFtZVNldEVsZW1lbnQ6OnNldE9udW5sb2FkKFBhc3NSZWZQ
dHI8RXZlbnRMaXN0ZW5lcj4gZXZlbnRMaXN0ZW5lcikKICAgICBkb2N1bWVudCgpLT5zZXRXaW5k
b3dBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS51bmxvYWRFdmVudCwgZXZlbnRM
aXN0ZW5lcik7CiB9CiAKK2Jvb2wgSFRNTEZyYW1lU2V0RWxlbWVudDo6c2hvdWxkRm9yd2FyZEV2
ZW50TGlzdGVuZXJUb1dpbmRvdyhjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSkgY29uc3QK
K3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEhhc2hTZXQ8QXRvbWljU3RyaW5nPiwgZm9yd2Fy
ZFR5cGVzLCAoKSk7CisgICAgaWYgKGZvcndhcmRUeXBlcy5pc0VtcHR5KCkpIHsKKyAgICAgICAg
Zm9yd2FyZFR5cGVzLmFkZChldmVudE5hbWVzKCkuZm9jdXNFdmVudCk7CisgICAgICAgIGZvcndh
cmRUeXBlcy5hZGQoZXZlbnROYW1lcygpLmJsdXJFdmVudCk7CisgICAgICAgIGZvcndhcmRUeXBl
cy5hZGQoZXZlbnROYW1lcygpLmVycm9yRXZlbnQpOworICAgICAgICBmb3J3YXJkVHlwZXMuYWRk
KGV2ZW50TmFtZXMoKS5sb2FkRXZlbnQpOworICAgICAgICBmb3J3YXJkVHlwZXMuYWRkKGV2ZW50
TmFtZXMoKS51bmxvYWRFdmVudCk7CisgICAgICAgIGZvcndhcmRUeXBlcy5hZGQoZXZlbnROYW1l
cygpLmJlZm9yZXVubG9hZEV2ZW50KTsKKyAgICAgICAgZm9yd2FyZFR5cGVzLmFkZChldmVudE5h
bWVzKCkubWVzc2FnZUV2ZW50KTsKKyAgICAgICAgZm9yd2FyZFR5cGVzLmFkZChldmVudE5hbWVz
KCkub2ZmbGluZUV2ZW50KTsKKyAgICAgICAgZm9yd2FyZFR5cGVzLmFkZChldmVudE5hbWVzKCku
b25saW5lRXZlbnQpOworICAgICAgICBmb3J3YXJkVHlwZXMuYWRkKGV2ZW50TmFtZXMoKS5yZXNp
emVFdmVudCk7CisgICAgICAgIGZvcndhcmRUeXBlcy5hZGQoZXZlbnROYW1lcygpLnN0b3JhZ2VF
dmVudCk7CisgICAgICAgIGZvcndhcmRUeXBlcy5hZGQoZXZlbnROYW1lcygpLnVubG9hZEV2ZW50
KTsKKyAgICAgICAgZm9yd2FyZFR5cGVzLmFkZChldmVudE5hbWVzKCkuaGFzaGNoYW5nZUV2ZW50
KTsKKyAgICB9CisgICAgcmV0dXJuIGZvcndhcmRUeXBlcy5jb250YWlucyhldmVudFR5cGUpOwor
fQorCisKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1s
L0hUTUxGcmFtZVNldEVsZW1lbnQuaCBiL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVTZXRFbGVtZW50
LmgKaW5kZXggYjUxZTcwMi4uYzg4YzY5YyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUxG
cmFtZVNldEVsZW1lbnQuaAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lU2V0RWxlbWVudC5o
CkBAIC02NywxNiArNjcsNyBAQCBwdWJsaWM6CiAgICAgY29uc3QgTGVuZ3RoKiByb3dMZW5ndGhz
KCkgY29uc3QgeyByZXR1cm4gbV9yb3dzOyB9CiAgICAgY29uc3QgTGVuZ3RoKiBjb2xMZW5ndGhz
KCkgY29uc3QgeyByZXR1cm4gbV9jb2xzOyB9CiAKLSAgICAvLyBFdmVudCBoYW5kbGVyIGF0dHJp
YnV0ZXMKLSAgICB2aXJ0dWFsIEV2ZW50TGlzdGVuZXIqIG9uYmx1cigpIGNvbnN0OwotICAgIHZp
cnR1YWwgdm9pZCBzZXRPbmJsdXIoUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPik7Ci0gICAgdmly
dHVhbCBFdmVudExpc3RlbmVyKiBvbmVycm9yKCkgY29uc3Q7Ci0gICAgdmlydHVhbCB2b2lkIHNl
dE9uZXJyb3IoUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPik7Ci0gICAgdmlydHVhbCBFdmVudExp
c3RlbmVyKiBvbmZvY3VzKCkgY29uc3Q7Ci0gICAgdmlydHVhbCB2b2lkIHNldE9uZm9jdXMoUGFz
c1JlZlB0cjxFdmVudExpc3RlbmVyPik7Ci0gICAgdmlydHVhbCBFdmVudExpc3RlbmVyKiBvbmxv
YWQoKSBjb25zdDsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0T25sb2FkKFBhc3NSZWZQdHI8RXZlbnRM
aXN0ZW5lcj4pOwotCisgICAgLy8gRXZlbnQgaGFuZGxlciBhdHRyaWJ1dGVzLgogICAgIEV2ZW50
TGlzdGVuZXIqIG9uYmVmb3JldW5sb2FkKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRPbmJlZm9yZXVu
bG9hZChQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+KTsKICAgICBFdmVudExpc3RlbmVyKiBvbmhh
c2hjaGFuZ2UoKSBjb25zdDsKQEAgLTk0LDYgKzg1LDkgQEAgcHVibGljOgogICAgIEV2ZW50TGlz
dGVuZXIqIG9udW5sb2FkKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRPbnVubG9hZChQYXNzUmVmUHRy
PEV2ZW50TGlzdGVuZXI+KTsKIAorcHJvdGVjdGVkOgorICAgIHZpcnR1YWwgYm9vbCBzaG91bGRG
b3J3YXJkRXZlbnRMaXN0ZW5lclRvV2luZG93KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBl
KSBjb25zdDsKKwogcHJpdmF0ZToKICAgICBMZW5ndGgqIG1fcm93czsKICAgICBMZW5ndGgqIG1f
Y29sczsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>38544</attachid>
            <date>2009-08-25 05:58:07 -0700</date>
            <delta_ts>2009-08-28 06:51:37 -0700</delta_ts>
            <desc>patch: fixed ChangedLog formatting</desc>
            <filename>listeners.patch</filename>
            <type>text/plain</type>
            <size>14348</size>
            <attacher name="Vitaly Repeshko">vitalyr</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
NTc3MmU3Yy4uN2FiZmFlYSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNSBAQAorMjAwOS0wOC0yNSAgVml0YWx5IFJlcGVz
aGtvICA8dml0YWx5ckBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgV2ViQ29yZTogTWFrZSBib3RoIE5vZGU6OnNldEF0dHJpYnV0
ZUV2ZW50TGlzdGVuZXIgYW5kCisgICAgICAgIE5vZGU6OnNldE9uRXZlbnQgZm9yd2FyZCBsaXN0
ZW5lciB0byBET00gd2luZG93IHdoZW4gbmVjZXNzYXJ5LgorCisgICAgICAgIEJlZm9yZSB0aGlz
IHBhdGNoIG9ubHkgTm9kZTo6c2V0T25FdmVudCBmdW5jdGlvbnMgZGlkIHRoZSBmb3J3YXJkaW5n
CisgICAgICAgIHdoaWNoIGJyb2tlIE5vZGU6OnNldEF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIgY2xp
ZW50cy4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
Mjg3MDkKKworICAgICAgICBVc2VzIGFscmVhZHkgZXhpc3RpbmcgdGVzdHMgZnJvbSBodHRwOi8v
dHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC80NzMyNgorCisgICAgICAgICogZG9tL05vZGUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6Y2xlYXJBdHRyaWJ1dGVFdmVudExpc3RlbmVyKToK
KyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OnNldEF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6Tm9kZTo6Z2V0QXR0cmlidXRlRXZlbnRMaXN0ZW5lcik6CisgICAgICAg
IE5vdyBjYWxsIHNob3VsZEZvcndhcmRFdmVudExpc3RlbmVyVG9XaW5kb3cgdG8gZGV0ZXJtaW5l
IGlmCisgICAgICAgIGxpc3RlbmVyIHNob3VsZCBiZSBmb3J3YXJkZWQgdG8gRE9NIHdpbmRvdy4K
KyAgICAgICAgKiBkb20vTm9kZS5oOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6c2hvdWxkRm9y
d2FyZEV2ZW50TGlzdGVuZXJUb1dpbmRvdyk6CisgICAgICAgIE5ldyB2aXJ0dWFsIGZ1bmN0aW9u
IG92ZXJyaWRkZW4gYnkgSFRNTEJvZHlFbGVtZW50IGFuZCBIVE1MRnJhbWVTZXRFbGVtZW50Lgor
ICAgICAgICBSZXR1cm5zIGZhbHNlIGJ5IGRlZmF1bHQuCisgICAgICAgICogaHRtbC9IVE1MQm9k
eUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEJvZHlFbGVtZW50OjpzaG91bGRG
b3J3YXJkRXZlbnRMaXN0ZW5lclRvV2luZG93KToKKyAgICAgICAgKiBodG1sL0hUTUxCb2R5RWxl
bWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTEZyYW1lU2V0RWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MRnJhbWVTZXRFbGVtZW50OjpzZXRPbmhhc2hjaGFuZ2UpOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTEZyYW1lU2V0RWxlbWVudDo6c2hvdWxkRm9yd2FyZEV2ZW50TGlzdGVu
ZXJUb1dpbmRvdyk6CisgICAgICAgICogaHRtbC9IVE1MRnJhbWVTZXRFbGVtZW50Lmg6CisKIDIw
MDktMDgtMjQgIFBhdmVsIEZlbGRtYW4gIDxwZmVsZG1hbkBjaHJvbWl1bS5vcmc+CiAKICAgICAg
ICAgUmV2aWV3ZWQgYnkgVGltb3RoeSBIYXRjaGVyLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20v
Tm9kZS5jcHAgYi9XZWJDb3JlL2RvbS9Ob2RlLmNwcAppbmRleCBiNDYwODE2Li5iNzJkMjAwIDEw
MDY0NAotLS0gYS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAorKysgYi9XZWJDb3JlL2RvbS9Ob2RlLmNw
cApAQCAtMjkwNiw2ICsyOTA2LDEzIEBAIHZvaWQgTm9kZTo6ZGlzcGF0Y2hQcm9ncmVzc0V2ZW50
KGNvbnN0IEF0b21pY1N0cmluZyAmZXZlbnRUeXBlLCBib29sIGxlbmd0aENvbXB1CiAKIHZvaWQg
Tm9kZTo6Y2xlYXJBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZl
bnRUeXBlKQogeworICAgIGlmIChzaG91bGRGb3J3YXJkRXZlbnRMaXN0ZW5lclRvV2luZG93KGV2
ZW50VHlwZSkpIHsKKyAgICAgICAgRE9NV2luZG93KiB3aW5kb3cgPSBkb2N1bWVudCgpLT5kb21X
aW5kb3coKTsKKyAgICAgICAgaWYgKHdpbmRvdykKKyAgICAgICAgICAgIHdpbmRvdy0+Y2xlYXJB
dHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50VHlwZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKICAgICBpZiAoIWhhc1JhcmVEYXRhKCkpCiAgICAgICAgIHJldHVybjsKIApAQCAtMjkzMyw2
ICsyOTQwLDEzIEBAIHZvaWQgTm9kZTo6Y2xlYXJBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGNvbnN0
IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlKQogCiB2b2lkIE5vZGU6OnNldEF0dHJpYnV0ZUV2ZW50
TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFBhc3NSZWZQdHI8RXZlbnRM
aXN0ZW5lcj4gbGlzdGVuZXIpCiB7CisgICAgaWYgKHNob3VsZEZvcndhcmRFdmVudExpc3RlbmVy
VG9XaW5kb3coZXZlbnRUeXBlKSkgeworICAgICAgICBET01XaW5kb3cqIHdpbmRvdyA9IGRvY3Vt
ZW50KCktPmRvbVdpbmRvdygpOworICAgICAgICBpZiAod2luZG93KQorICAgICAgICAgICAgd2lu
ZG93LT5zZXRBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwgbGlzdGVuZXIpOworICAg
ICAgICByZXR1cm47CisgICAgfQorCiAgICAgY2xlYXJBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2
ZW50VHlwZSk7CiAgICAgaWYgKGxpc3RlbmVyKQogICAgICAgICBhZGRFdmVudExpc3RlbmVyKGV2
ZW50VHlwZSwgbGlzdGVuZXIsIGZhbHNlKTsKQEAgLTI5NDAsNiArMjk1NCwxMyBAQCB2b2lkIE5v
ZGU6OnNldEF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5
cGUsIFBhc3NSZWZQdHI8RQogCiBFdmVudExpc3RlbmVyKiBOb2RlOjpnZXRBdHRyaWJ1dGVFdmVu
dExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlKSBjb25zdAogeworICAgIGlm
IChzaG91bGRGb3J3YXJkRXZlbnRMaXN0ZW5lclRvV2luZG93KGV2ZW50VHlwZSkpIHsKKyAgICAg
ICAgRE9NV2luZG93KiB3aW5kb3cgPSBkb2N1bWVudCgpLT5kb21XaW5kb3coKTsKKyAgICAgICAg
aWYgKHdpbmRvdykKKyAgICAgICAgICAgIHJldHVybiB3aW5kb3ctPmdldEF0dHJpYnV0ZUV2ZW50
TGlzdGVuZXIoZXZlbnRUeXBlKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCiAgICAgY29u
c3QgUmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXJWZWN0b3ImIGxpc3RlbmVycyA9IGV2ZW50TGlzdGVu
ZXJzKCk7CiAgICAgc2l6ZV90IHNpemUgPSBsaXN0ZW5lcnMuc2l6ZSgpOwogICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9Ob2Rl
LmggYi9XZWJDb3JlL2RvbS9Ob2RlLmgKaW5kZXggOTQ2NDg2My4uZmM5MDM1MyAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9kb20vTm9kZS5oCisrKyBiL1dlYkNvcmUvZG9tL05vZGUuaApAQCAtNTA2LDYg
KzUwNiw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlRXZlbnRMaXN0ZW5lcihj
b25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgRXZlbnRMaXN0ZW5lciosIGJvb2wgdXNlQ2Fw
dHVyZSk7CiAKICAgICAvLyBVc2VkIGZvciBsZWdhY3kgIm9uRXZlbnQiIHByb3BlcnR5IEFQSXMu
CisgICAgLy8KKyAgICAvLyBJZiBzaG91bGRGb3J3YXJkRXZlbnRMaXN0ZW5lclRvV2luZG93IGJl
bG93IHJldHVybnMgdHJ1ZSBmb3IgdGhlIGdpdmVuIGV2ZW50IHR5cGUsIHRoZW4gdGhlIGxpc3Rl
bmVyIGlzIGZvcndhcmRlZAorICAgIC8vIHRvIERPTSB3aW5kb3cuCiAgICAgdm9pZCBzZXRBdHRy
aWJ1dGVFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBQYXNzUmVm
UHRyPEV2ZW50TGlzdGVuZXI+KTsKICAgICB2b2lkIGNsZWFyQXR0cmlidXRlRXZlbnRMaXN0ZW5l
cihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSk7CiAgICAgRXZlbnRMaXN0ZW5lciogZ2V0
QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSkgY29u
c3Q7CkBAIC01NTIsMTcgKzU1NSwxNCBAQCBwdWJsaWM6CiAKICAgICBjb25zdCBSZWdpc3RlcmVk
RXZlbnRMaXN0ZW5lclZlY3RvciYgZXZlbnRMaXN0ZW5lcnMoKSBjb25zdDsKIAotICAgIC8vIFRo
ZXNlIDQgYXR0cmlidXRlIGV2ZW50IGhhbmRsZXIgYXR0cmlidXRlcyBhcmUgb3ZlcnJpZGVkIGJ5
IEhUTUxCb2R5RWxlbWVudAotICAgIC8vIGFuZCBIVE1MRnJhbWVTZXRFbGVtZW50IHRvIGZvcndh
cmQgdG8gdGhlIERPTVdpbmRvdy4KLSAgICB2aXJ0dWFsIEV2ZW50TGlzdGVuZXIqIG9uYmx1cigp
IGNvbnN0OwotICAgIHZpcnR1YWwgdm9pZCBzZXRPbmJsdXIoUGFzc1JlZlB0cjxFdmVudExpc3Rl
bmVyPik7Ci0gICAgdmlydHVhbCBFdmVudExpc3RlbmVyKiBvbmVycm9yKCkgY29uc3Q7Ci0gICAg
dmlydHVhbCB2b2lkIHNldE9uZXJyb3IoUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPik7Ci0gICAg
dmlydHVhbCBFdmVudExpc3RlbmVyKiBvbmZvY3VzKCkgY29uc3Q7Ci0gICAgdmlydHVhbCB2b2lk
IHNldE9uZm9jdXMoUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPik7Ci0gICAgdmlydHVhbCBFdmVu
dExpc3RlbmVyKiBvbmxvYWQoKSBjb25zdDsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0T25sb2FkKFBh
c3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4pOwotCisgICAgRXZlbnRMaXN0ZW5lciogb25ibHVyKCkg
Y29uc3Q7CisgICAgdm9pZCBzZXRPbmJsdXIoUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPik7Cisg
ICAgRXZlbnRMaXN0ZW5lciogb25lcnJvcigpIGNvbnN0OworICAgIHZvaWQgc2V0T25lcnJvcihQ
YXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+KTsKKyAgICBFdmVudExpc3RlbmVyKiBvbmZvY3VzKCkg
Y29uc3Q7CisgICAgdm9pZCBzZXRPbmZvY3VzKFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4pOwor
ICAgIEV2ZW50TGlzdGVuZXIqIG9ubG9hZCgpIGNvbnN0OworICAgIHZvaWQgc2V0T25sb2FkKFBh
c3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4pOwogICAgIEV2ZW50TGlzdGVuZXIqIG9uYWJvcnQoKSBj
b25zdDsKICAgICB2b2lkIHNldE9uYWJvcnQoUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPik7CiAg
ICAgRXZlbnRMaXN0ZW5lciogb25jaGFuZ2UoKSBjb25zdDsKQEAgLTY0Nyw3ICs2NDcsMTAgQEAg
cHJvdGVjdGVkOgogCiAgICAgdmlydHVhbCB2b2lkIHdpbGxNb3ZlVG9OZXdPd25lckRvY3VtZW50
KCk7CiAgICAgdmlydHVhbCB2b2lkIGRpZE1vdmVUb05ld093bmVyRG9jdW1lbnQoKTsKLSAgICAK
KworICAgIC8vIE92ZXJyaWRkZW4gYnkgSFRNTEJvZHlFbGVtZW50IGFuZCBIVE1MRnJhbWVTZXRF
bGVtZW50IHRvIGZvcndhcmQgY2VydGFpbiBldmVudCBsaXN0ZW5lciB0eXBlcyB0byBET00gd2lu
ZG93LgorICAgIHZpcnR1YWwgYm9vbCBzaG91bGRGb3J3YXJkRXZlbnRMaXN0ZW5lclRvV2luZG93
KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQor
CiAgICAgdmlydHVhbCB2b2lkIGFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcyhMaXN0SGFzaFNl
dDxLVVJMPiYpIGNvbnN0IHsgfQogICAgIHZvaWQgc2V0VGFiSW5kZXhFeHBsaWNpdGx5KHNob3J0
KTsKICAgICAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MQm9keUVsZW1lbnQuY3BwIGIv
V2ViQ29yZS9odG1sL0hUTUxCb2R5RWxlbWVudC5jcHAKaW5kZXggNGFlMTJmNS4uZmY3MDUzNSAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUxCb2R5RWxlbWVudC5jcHAKKysrIGIvV2ViQ29y
ZS9odG1sL0hUTUxCb2R5RWxlbWVudC5jcHAKQEAgLTM1LDYgKzM1LDggQEAKICNpbmNsdWRlICJN
YXBwZWRBdHRyaWJ1dGUuaCIKICNpbmNsdWRlICJTY3JpcHRFdmVudExpc3RlbmVyLmgiCiAKKyNp
bmNsdWRlIDx3dGYvSGFzaFNldC5oPgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5h
bWVzcGFjZSBIVE1MTmFtZXM7CkBAIC0zMTgsNDYgKzMyMCw2IEBAIHZvaWQgSFRNTEJvZHlFbGVt
ZW50OjpkaWRNb3ZlVG9OZXdPd25lckRvY3VtZW50KCkKICAgICBIVE1MRWxlbWVudDo6ZGlkTW92
ZVRvTmV3T3duZXJEb2N1bWVudCgpOwogfQogCi1FdmVudExpc3RlbmVyKiBIVE1MQm9keUVsZW1l
bnQ6Om9uYmx1cigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIGRvY3VtZW50KCktPmdldFdpbmRvd0F0
dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLmJsdXJFdmVudCk7Ci19Ci0KLXZvaWQg
SFRNTEJvZHlFbGVtZW50OjpzZXRPbmJsdXIoUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiBldmVu
dExpc3RlbmVyKQotewotICAgIGRvY3VtZW50KCktPnNldFdpbmRvd0F0dHJpYnV0ZUV2ZW50TGlz
dGVuZXIoZXZlbnROYW1lcygpLmJsdXJFdmVudCwgZXZlbnRMaXN0ZW5lcik7Ci19Ci0KLUV2ZW50
TGlzdGVuZXIqIEhUTUxCb2R5RWxlbWVudDo6b25lcnJvcigpIGNvbnN0Ci17Ci0gICAgcmV0dXJu
IGRvY3VtZW50KCktPmdldFdpbmRvd0F0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygp
LmVycm9yRXZlbnQpOwotfQotCi12b2lkIEhUTUxCb2R5RWxlbWVudDo6c2V0T25lcnJvcihQYXNz
UmVmUHRyPEV2ZW50TGlzdGVuZXI+IGV2ZW50TGlzdGVuZXIpCi17Ci0gICAgZG9jdW1lbnQoKS0+
c2V0V2luZG93QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkuZXJyb3JFdmVudCwg
ZXZlbnRMaXN0ZW5lcik7Ci19Ci0KLUV2ZW50TGlzdGVuZXIqIEhUTUxCb2R5RWxlbWVudDo6b25m
b2N1cygpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIGRvY3VtZW50KCktPmdldFdpbmRvd0F0dHJpYnV0
ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLmZvY3VzRXZlbnQpOwotfQotCi12b2lkIEhUTUxC
b2R5RWxlbWVudDo6c2V0T25mb2N1cyhQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+IGV2ZW50TGlz
dGVuZXIpCi17Ci0gICAgZG9jdW1lbnQoKS0+c2V0V2luZG93QXR0cmlidXRlRXZlbnRMaXN0ZW5l
cihldmVudE5hbWVzKCkuZm9jdXNFdmVudCwgZXZlbnRMaXN0ZW5lcik7Ci19Ci0KLUV2ZW50TGlz
dGVuZXIqIEhUTUxCb2R5RWxlbWVudDo6b25sb2FkKCkgY29uc3QKLXsKLSAgICByZXR1cm4gZG9j
dW1lbnQoKS0+Z2V0V2luZG93QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkubG9h
ZEV2ZW50KTsKLX0KLQotdm9pZCBIVE1MQm9keUVsZW1lbnQ6OnNldE9ubG9hZChQYXNzUmVmUHRy
PEV2ZW50TGlzdGVuZXI+IGV2ZW50TGlzdGVuZXIpCi17Ci0gICAgZG9jdW1lbnQoKS0+c2V0V2lu
ZG93QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkubG9hZEV2ZW50LCBldmVudExp
c3RlbmVyKTsKLX0KLQogRXZlbnRMaXN0ZW5lciogSFRNTEJvZHlFbGVtZW50OjpvbmJlZm9yZXVu
bG9hZCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGRvY3VtZW50KCktPmdldFdpbmRvd0F0dHJpYnV0
ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLmJlZm9yZXVubG9hZEV2ZW50KTsKQEAgLTQzOCw0
ICs0MDAsMjUgQEAgdm9pZCBIVE1MQm9keUVsZW1lbnQ6OnNldE9udW5sb2FkKFBhc3NSZWZQdHI8
RXZlbnRMaXN0ZW5lcj4gZXZlbnRMaXN0ZW5lcikKICAgICBkb2N1bWVudCgpLT5zZXRXaW5kb3dB
dHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS51bmxvYWRFdmVudCwgZXZlbnRMaXN0
ZW5lcik7CiB9CiAKK2Jvb2wgSFRNTEJvZHlFbGVtZW50OjpzaG91bGRGb3J3YXJkRXZlbnRMaXN0
ZW5lclRvV2luZG93KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlKSBjb25zdAoreworICAg
IERFRklORV9TVEFUSUNfTE9DQUwoSGFzaFNldDxBdG9taWNTdHJpbmc+LCBmb3J3YXJkVHlwZXMs
ICgpKTsKKyAgICBpZiAoZm9yd2FyZFR5cGVzLmlzRW1wdHkoKSkgeworICAgICAgICBmb3J3YXJk
VHlwZXMuYWRkKGV2ZW50TmFtZXMoKS5mb2N1c0V2ZW50KTsKKyAgICAgICAgZm9yd2FyZFR5cGVz
LmFkZChldmVudE5hbWVzKCkuYmx1ckV2ZW50KTsKKyAgICAgICAgZm9yd2FyZFR5cGVzLmFkZChl
dmVudE5hbWVzKCkuZXJyb3JFdmVudCk7CisgICAgICAgIGZvcndhcmRUeXBlcy5hZGQoZXZlbnRO
YW1lcygpLmxvYWRFdmVudCk7CisgICAgICAgIGZvcndhcmRUeXBlcy5hZGQoZXZlbnROYW1lcygp
LnVubG9hZEV2ZW50KTsKKyAgICAgICAgZm9yd2FyZFR5cGVzLmFkZChldmVudE5hbWVzKCkuYmVm
b3JldW5sb2FkRXZlbnQpOworICAgICAgICBmb3J3YXJkVHlwZXMuYWRkKGV2ZW50TmFtZXMoKS5t
ZXNzYWdlRXZlbnQpOworICAgICAgICBmb3J3YXJkVHlwZXMuYWRkKGV2ZW50TmFtZXMoKS5vZmZs
aW5lRXZlbnQpOworICAgICAgICBmb3J3YXJkVHlwZXMuYWRkKGV2ZW50TmFtZXMoKS5vbmxpbmVF
dmVudCk7CisgICAgICAgIGZvcndhcmRUeXBlcy5hZGQoZXZlbnROYW1lcygpLnJlc2l6ZUV2ZW50
KTsKKyAgICAgICAgZm9yd2FyZFR5cGVzLmFkZChldmVudE5hbWVzKCkuc3RvcmFnZUV2ZW50KTsK
KyAgICAgICAgZm9yd2FyZFR5cGVzLmFkZChldmVudE5hbWVzKCkudW5sb2FkRXZlbnQpOworICAg
ICAgICBmb3J3YXJkVHlwZXMuYWRkKGV2ZW50TmFtZXMoKS5oYXNoY2hhbmdlRXZlbnQpOworICAg
IH0KKyAgICByZXR1cm4gZm9yd2FyZFR5cGVzLmNvbnRhaW5zKGV2ZW50VHlwZSk7Cit9CisKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MQm9keUVs
ZW1lbnQuaCBiL1dlYkNvcmUvaHRtbC9IVE1MQm9keUVsZW1lbnQuaAppbmRleCBkNWVmYWIzLi45
OWVmYjg3IDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTEJvZHlFbGVtZW50LmgKKysrIGIv
V2ViQ29yZS9odG1sL0hUTUxCb2R5RWxlbWVudC5oCkBAIC00NCwxNSArNDQsNiBAQCBwdWJsaWM6
CiAgICAgU3RyaW5nIHZMaW5rKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRWTGluayhjb25zdCBTdHJp
bmcmKTsKIAotICAgIHZpcnR1YWwgRXZlbnRMaXN0ZW5lciogb25ibHVyKCkgY29uc3Q7Ci0gICAg
dmlydHVhbCB2b2lkIHNldE9uYmx1cihQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+KTsKLSAgICB2
aXJ0dWFsIEV2ZW50TGlzdGVuZXIqIG9uZXJyb3IoKSBjb25zdDsKLSAgICB2aXJ0dWFsIHZvaWQg
c2V0T25lcnJvcihQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+KTsKLSAgICB2aXJ0dWFsIEV2ZW50
TGlzdGVuZXIqIG9uZm9jdXMoKSBjb25zdDsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0T25mb2N1cyhQ
YXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+KTsKLSAgICB2aXJ0dWFsIEV2ZW50TGlzdGVuZXIqIG9u
bG9hZCgpIGNvbnN0OwotICAgIHZpcnR1YWwgdm9pZCBzZXRPbmxvYWQoUGFzc1JlZlB0cjxFdmVu
dExpc3RlbmVyPik7Ci0KICAgICBFdmVudExpc3RlbmVyKiBvbmJlZm9yZXVubG9hZCgpIGNvbnN0
OwogICAgIHZvaWQgc2V0T25iZWZvcmV1bmxvYWQoUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPik7
CiAgICAgRXZlbnRMaXN0ZW5lciogb25tZXNzYWdlKCkgY29uc3Q7CkBAIC03MCw2ICs2MSw5IEBA
IHB1YmxpYzoKICAgICBFdmVudExpc3RlbmVyKiBvbnVubG9hZCgpIGNvbnN0OwogICAgIHZvaWQg
c2V0T251bmxvYWQoUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPik7CiAKK3Byb3RlY3RlZDoKKyAg
ICB2aXJ0dWFsIGJvb2wgc2hvdWxkRm9yd2FyZEV2ZW50TGlzdGVuZXJUb1dpbmRvdyhjb25zdCBB
dG9taWNTdHJpbmcmIGV2ZW50VHlwZSkgY29uc3Q7CisKIHByaXZhdGU6CiAgICAgdmlydHVhbCBI
VE1MVGFnU3RhdHVzIGVuZFRhZ1JlcXVpcmVtZW50KCkgY29uc3QgeyByZXR1cm4gVGFnU3RhdHVz
UmVxdWlyZWQ7IH0KICAgICB2aXJ0dWFsIGludCB0YWdQcmlvcml0eSgpIGNvbnN0IHsgcmV0dXJu
IDEwOyB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lU2V0RWxlbWVudC5jcHAg
Yi9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lU2V0RWxlbWVudC5jcHAKaW5kZXggOGRjMzk2NC4uN2I3
MmJhOCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUxGcmFtZVNldEVsZW1lbnQuY3BwCisr
KyBiL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVTZXRFbGVtZW50LmNwcApAQCAtMjMwLDM2ICsyMzAs
NiBAQCB2b2lkIEhUTUxGcmFtZVNldEVsZW1lbnQ6OnNldFJvd3MoY29uc3QgU3RyaW5nICZ2YWx1
ZSkKICAgICBzZXRBdHRyaWJ1dGUocm93c0F0dHIsIHZhbHVlKTsKIH0KIAotRXZlbnRMaXN0ZW5l
ciogSFRNTEZyYW1lU2V0RWxlbWVudDo6b25ibHVyKCkgY29uc3QKLXsKLSAgICByZXR1cm4gZG9j
dW1lbnQoKS0+Z2V0V2luZG93QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkuYmx1
ckV2ZW50KTsKLX0KLQotdm9pZCBIVE1MRnJhbWVTZXRFbGVtZW50OjpzZXRPbmJsdXIoUGFzc1Jl
ZlB0cjxFdmVudExpc3RlbmVyPiBldmVudExpc3RlbmVyKQotewotICAgIGRvY3VtZW50KCktPnNl
dFdpbmRvd0F0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLmJsdXJFdmVudCwgZXZl
bnRMaXN0ZW5lcik7Ci19Ci0KLUV2ZW50TGlzdGVuZXIqIEhUTUxGcmFtZVNldEVsZW1lbnQ6Om9u
ZXJyb3IoKSBjb25zdAotewotICAgIHJldHVybiBkb2N1bWVudCgpLT5nZXRXaW5kb3dBdHRyaWJ1
dGVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5lcnJvckV2ZW50KTsKLX0KLQotdm9pZCBIVE1M
RnJhbWVTZXRFbGVtZW50OjpzZXRPbmVycm9yKFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gZXZl
bnRMaXN0ZW5lcikKLXsKLSAgICBkb2N1bWVudCgpLT5zZXRXaW5kb3dBdHRyaWJ1dGVFdmVudExp
c3RlbmVyKGV2ZW50TmFtZXMoKS5lcnJvckV2ZW50LCBldmVudExpc3RlbmVyKTsKLX0KLQotRXZl
bnRMaXN0ZW5lciogSFRNTEZyYW1lU2V0RWxlbWVudDo6b25mb2N1cygpIGNvbnN0Ci17Ci0gICAg
cmV0dXJuIGRvY3VtZW50KCktPmdldFdpbmRvd0F0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnRO
YW1lcygpLmZvY3VzRXZlbnQpOwotfQotCi12b2lkIEhUTUxGcmFtZVNldEVsZW1lbnQ6OnNldE9u
Zm9jdXMoUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiBldmVudExpc3RlbmVyKQotewotICAgIGRv
Y3VtZW50KCktPnNldFdpbmRvd0F0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLmZv
Y3VzRXZlbnQsIGV2ZW50TGlzdGVuZXIpOwotfQotCiBFdmVudExpc3RlbmVyKiBIVE1MRnJhbWVT
ZXRFbGVtZW50Ojpvbmhhc2hjaGFuZ2UoKSBjb25zdAogewogICAgIHJldHVybiBkb2N1bWVudCgp
LT5nZXRXaW5kb3dBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5oYXNoY2hhbmdl
RXZlbnQpOwpAQCAtMjY4LDE2ICsyMzgsNiBAQCBFdmVudExpc3RlbmVyKiBIVE1MRnJhbWVTZXRF
bGVtZW50Ojpvbmhhc2hjaGFuZ2UoKSBjb25zdAogdm9pZCBIVE1MRnJhbWVTZXRFbGVtZW50Ojpz
ZXRPbmhhc2hjaGFuZ2UoUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiBldmVudExpc3RlbmVyKQog
ewogICAgIGRvY3VtZW50KCktPnNldFdpbmRvd0F0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnRO
YW1lcygpLmhhc2hjaGFuZ2VFdmVudCwgZXZlbnRMaXN0ZW5lcik7Ci19ICAgCi0KLUV2ZW50TGlz
dGVuZXIqIEhUTUxGcmFtZVNldEVsZW1lbnQ6Om9ubG9hZCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJu
IGRvY3VtZW50KCktPmdldFdpbmRvd0F0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygp
LmxvYWRFdmVudCk7Ci19Ci0KLXZvaWQgSFRNTEZyYW1lU2V0RWxlbWVudDo6c2V0T25sb2FkKFBh
c3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gZXZlbnRMaXN0ZW5lcikKLXsKLSAgICBkb2N1bWVudCgp
LT5zZXRXaW5kb3dBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5sb2FkRXZlbnQs
IGV2ZW50TGlzdGVuZXIpOwogfQogCiBFdmVudExpc3RlbmVyKiBIVE1MRnJhbWVTZXRFbGVtZW50
OjpvbmJlZm9yZXVubG9hZCgpIGNvbnN0CkBAIC0zNTAsNCArMzEwLDI3IEBAIHZvaWQgSFRNTEZy
YW1lU2V0RWxlbWVudDo6c2V0T251bmxvYWQoUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiBldmVu
dExpc3RlbmVyKQogICAgIGRvY3VtZW50KCktPnNldFdpbmRvd0F0dHJpYnV0ZUV2ZW50TGlzdGVu
ZXIoZXZlbnROYW1lcygpLnVubG9hZEV2ZW50LCBldmVudExpc3RlbmVyKTsKIH0KIAorYm9vbCBI
VE1MRnJhbWVTZXRFbGVtZW50OjpzaG91bGRGb3J3YXJkRXZlbnRMaXN0ZW5lclRvV2luZG93KGNv
bnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlKSBjb25zdAoreworICAgIERFRklORV9TVEFUSUNf
TE9DQUwoSGFzaFNldDxBdG9taWNTdHJpbmc+LCBmb3J3YXJkVHlwZXMsICgpKTsKKyAgICBpZiAo
Zm9yd2FyZFR5cGVzLmlzRW1wdHkoKSkgeworICAgICAgICBmb3J3YXJkVHlwZXMuYWRkKGV2ZW50
TmFtZXMoKS5mb2N1c0V2ZW50KTsKKyAgICAgICAgZm9yd2FyZFR5cGVzLmFkZChldmVudE5hbWVz
KCkuYmx1ckV2ZW50KTsKKyAgICAgICAgZm9yd2FyZFR5cGVzLmFkZChldmVudE5hbWVzKCkuZXJy
b3JFdmVudCk7CisgICAgICAgIGZvcndhcmRUeXBlcy5hZGQoZXZlbnROYW1lcygpLmxvYWRFdmVu
dCk7CisgICAgICAgIGZvcndhcmRUeXBlcy5hZGQoZXZlbnROYW1lcygpLnVubG9hZEV2ZW50KTsK
KyAgICAgICAgZm9yd2FyZFR5cGVzLmFkZChldmVudE5hbWVzKCkuYmVmb3JldW5sb2FkRXZlbnQp
OworICAgICAgICBmb3J3YXJkVHlwZXMuYWRkKGV2ZW50TmFtZXMoKS5tZXNzYWdlRXZlbnQpOwor
ICAgICAgICBmb3J3YXJkVHlwZXMuYWRkKGV2ZW50TmFtZXMoKS5vZmZsaW5lRXZlbnQpOworICAg
ICAgICBmb3J3YXJkVHlwZXMuYWRkKGV2ZW50TmFtZXMoKS5vbmxpbmVFdmVudCk7CisgICAgICAg
IGZvcndhcmRUeXBlcy5hZGQoZXZlbnROYW1lcygpLnJlc2l6ZUV2ZW50KTsKKyAgICAgICAgZm9y
d2FyZFR5cGVzLmFkZChldmVudE5hbWVzKCkuc3RvcmFnZUV2ZW50KTsKKyAgICAgICAgZm9yd2Fy
ZFR5cGVzLmFkZChldmVudE5hbWVzKCkudW5sb2FkRXZlbnQpOworICAgICAgICBmb3J3YXJkVHlw
ZXMuYWRkKGV2ZW50TmFtZXMoKS5oYXNoY2hhbmdlRXZlbnQpOworICAgIH0KKyAgICByZXR1cm4g
Zm9yd2FyZFR5cGVzLmNvbnRhaW5zKGV2ZW50VHlwZSk7Cit9CisKKworCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lU2V0RWxlbWVudC5o
IGIvV2ViQ29yZS9odG1sL0hUTUxGcmFtZVNldEVsZW1lbnQuaAppbmRleCBiNTFlNzAyLi5jODhj
NjljIDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lU2V0RWxlbWVudC5oCisrKyBi
L1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVTZXRFbGVtZW50LmgKQEAgLTY3LDE2ICs2Nyw3IEBAIHB1
YmxpYzoKICAgICBjb25zdCBMZW5ndGgqIHJvd0xlbmd0aHMoKSBjb25zdCB7IHJldHVybiBtX3Jv
d3M7IH0KICAgICBjb25zdCBMZW5ndGgqIGNvbExlbmd0aHMoKSBjb25zdCB7IHJldHVybiBtX2Nv
bHM7IH0KIAotICAgIC8vIEV2ZW50IGhhbmRsZXIgYXR0cmlidXRlcwotICAgIHZpcnR1YWwgRXZl
bnRMaXN0ZW5lciogb25ibHVyKCkgY29uc3Q7Ci0gICAgdmlydHVhbCB2b2lkIHNldE9uYmx1cihQ
YXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+KTsKLSAgICB2aXJ0dWFsIEV2ZW50TGlzdGVuZXIqIG9u
ZXJyb3IoKSBjb25zdDsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0T25lcnJvcihQYXNzUmVmUHRyPEV2
ZW50TGlzdGVuZXI+KTsKLSAgICB2aXJ0dWFsIEV2ZW50TGlzdGVuZXIqIG9uZm9jdXMoKSBjb25z
dDsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0T25mb2N1cyhQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+
KTsKLSAgICB2aXJ0dWFsIEV2ZW50TGlzdGVuZXIqIG9ubG9hZCgpIGNvbnN0OwotICAgIHZpcnR1
YWwgdm9pZCBzZXRPbmxvYWQoUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPik7Ci0KKyAgICAvLyBF
dmVudCBoYW5kbGVyIGF0dHJpYnV0ZXMuCiAgICAgRXZlbnRMaXN0ZW5lciogb25iZWZvcmV1bmxv
YWQoKSBjb25zdDsKICAgICB2b2lkIHNldE9uYmVmb3JldW5sb2FkKFBhc3NSZWZQdHI8RXZlbnRM
aXN0ZW5lcj4pOwogICAgIEV2ZW50TGlzdGVuZXIqIG9uaGFzaGNoYW5nZSgpIGNvbnN0OwpAQCAt
OTQsNiArODUsOSBAQCBwdWJsaWM6CiAgICAgRXZlbnRMaXN0ZW5lciogb251bmxvYWQoKSBjb25z
dDsKICAgICB2b2lkIHNldE9udW5sb2FkKFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4pOwogCitw
cm90ZWN0ZWQ6CisgICAgdmlydHVhbCBib29sIHNob3VsZEZvcndhcmRFdmVudExpc3RlbmVyVG9X
aW5kb3coY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUpIGNvbnN0OworCiBwcml2YXRlOgog
ICAgIExlbmd0aCogbV9yb3dzOwogICAgIExlbmd0aCogbV9jb2xzOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>38731</attachid>
            <date>2009-08-28 06:51:37 -0700</date>
            <delta_ts>2009-08-28 18:36:47 -0700</delta_ts>
            <desc>patch: fixed V8 bindings</desc>
            <filename>listeners.patch</filename>
            <type>text/plain</type>
            <size>16968</size>
            <attacher name="Vitaly Repeshko">vitalyr</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ZThkMTY4Yy4uMTI2NGQ2MiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNSBAQAorMjAwOS0wOC0yOCAgVml0YWx5IFJlcGVz
aGtvICA8dml0YWx5ckBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgW1Y4XSBNYWRlIGJpbmRpbmdzIHVzZSBOb2RlOjpzZXRPbkV2
ZW50IGZ1bmN0aW9ucyBmb3IgTm9kZSBkZXNjZW5kYW50cworICAgICAgICBpbnN0ZWFkIG9mIE5v
ZGU6OnNldEF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIuCisKKyAgICAgICAgTm9kZTo6c2V0QXR0cmli
dXRlRXZlbnRMaXN0ZW5lciBpcyBhbiBpbnRlcm5hbCBmdW5jdGlvbiBhbmQKKyAgICAgICAgZG9l
c24ndCBkbyB0aGUgZm9yd2FyZGluZyB0byBET00gd2luZG93IHRoYXQgaXMgcmVxdWlyZWQgZm9y
IHNvbWUKKyAgICAgICAgSFRNTCBlbGVtZW50cy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTI4NzA5CisKKyAgICAgICAgVGVzdHMgYWRkZWQgaW4gaHR0
cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvNDczMjYgbm93IHBhc3Mgd2l0aCBWOC4KKwor
ICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtOgorICAgICAgICBO
b3cgZ2VuZXJhdGVzIEV2ZW50TGlzdGVuZXIgYWNjZXNzb3JzIGZvciBOb2RlIGRlc2NlbmRhbnRz
IGluc3RlYWQKKyAgICAgICAgb2YgdXNpbmcgY3VzdG9tIGNhbGxiYWNrcy4KKyAgICAgICAgKiBi
aW5kaW5ncy92OC9WOERPTVdyYXBwZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhET01XcmFw
cGVyOjpnZXRFdmVudExpc3RlbmVyKTogTW92ZWQgZnJvbSBWOE5vZGVDdXN0b20uY3BwLgorICAg
ICAgICAqIGJpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5oOgorICAgICAgICAoV2ViQ29yZTo6VjhE
T01XcmFwcGVyOjpjb252ZXJ0RXZlbnRMaXN0ZW5lclRvVjhPYmplY3QpOiBGaXhlZCBhIGJ1ZyBp
bgorICAgICAgICBzaWduYXR1cmUuCisgICAgICAgICogYmluZGluZ3MvdjgvVjhVdGlsaXRpZXMu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlSGlkZGVuRGVwZW5kZW5jeSk6CisgICAgICAg
IChXZWJDb3JlOjpyZW1vdmVIaWRkZW5EZXBlbmRlbmN5KToKKyAgICAgICAgQ2hhbmdlZCBzaWdu
YXR1cmUgdG8gYWNjZXB0IEhhbmRsZSBpbnN0ZWFkIG9mIExvY2FsLgorICAgICAgICAqIGJpbmRp
bmdzL3Y4L1Y4VXRpbGl0aWVzLmg6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q3Vz
dG9tQmluZGluZy5oOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOE5vZGVDdXN0b20u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0FMTEJBQ0tfRlVOQ19ERUNMKToKKyAgICAgICAgUmVt
b3ZlZCBjdXN0b20gY2FsbGJhY2tzIGZvciBFdmVudExpc3RlbmVyIGFjY2Vzc29ycy4KKwogMjAw
OS0wOC0yOCAgUGF2ZWwgRmVsZG1hbiAgPHBmZWxkbWFuQGNocm9taXVtLm9yZz4KIAogICAgICAg
ICBOb3QgcmV2aWV3ZWQgKHBhdGNoaW5nIGluIGwxOG4gY2hhbmdlIHRoYXQgd2FzIG1pc3Npbmcg
ZHVlIHRvCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRv
clY4LnBtIGIvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQppbmRl
eCBjNzk3MjNlLi4wZjMzY2E0IDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
Q29kZUdlbmVyYXRvclY4LnBtCisrKyBiL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2Vu
ZXJhdG9yVjgucG0KQEAgLTM0NSw2ICszNDUsMTIgQEAgc3ViIElzTm9kZVN1YlR5cGUKICAgICBy
ZXR1cm4gMDsKIH0KIAorc3ViIFJlcXVpcmVzQ3VzdG9tRXZlbnRMaXN0ZW5lckFjY2Vzc29ycwor
eworICAgIG15ICRkYXRhTm9kZSA9IHNoaWZ0OworICAgIHJldHVybiAhSXNOb2RlU3ViVHlwZSgk
ZGF0YU5vZGUpICYmICRkYXRhTm9kZS0+bmFtZSBuZSAiU1ZHRWxlbWVudEluc3RhbmNlIjsKK30K
Kwogc3ViIEhvbGRlclRvTmF0aXZlCiB7CiAgICAgbXkgJGRhdGFOb2RlID0gc2hpZnQ7CkBAIC02
OTksNyArNzA1LDExIEBAIEVORAogICAgIH0KIAogICAgIG15ICRuYXRpdmVUeXBlID0gR2V0TmF0
aXZlVHlwZUZyb21TaWduYXR1cmUoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLCAwKTsKLSAgICBwdXNo
KEBpbXBsQ29udGVudERlY2xzLCAiICAgICRuYXRpdmVUeXBlIHYgPSAiIC4gSlNWYWx1ZVRvTmF0
aXZlKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZSwgInZhbHVlIikgLiAiO1xuIik7CisgICAgaWYgKCRh
dHRyaWJ1dGUtPnNpZ25hdHVyZS0+dHlwZSBlcSAiRXZlbnRMaXN0ZW5lciIpIHsKKyAgICAgICAg
cHVzaChAaW1wbENvbnRlbnREZWNscywgIiAgICAkbmF0aXZlVHlwZSB2ID0gVjhET01XcmFwcGVy
OjpnZXRFdmVudExpc3RlbmVyKGltcCwgdmFsdWUsIHRydWUsIGZhbHNlKTtcbiIpOworICAgIH0g
ZWxzZSB7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsICIgICAgJG5hdGl2ZVR5cGUg
diA9ICIgLiBKU1ZhbHVlVG9OYXRpdmUoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLCAidmFsdWUiKSAu
ICI7XG4iKTsKKyAgICB9CiAKICAgICBteSAkcmVzdWx0ID0gIiI7CiAgICAgaWYgKCRuYXRpdmVU
eXBlIGVxICJpbnQiIGFuZCAkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRl
cy0+eyJDb252ZXJ0RnJvbVN0cmluZyJ9KSB7CkBAIC03MzEsNiArNzQxLDE3IEBAIEVORAogICAg
ICAgICAgICAgJGltcGxJbmNsdWRlc3siSFRNTE5hbWVzLmgifSA9IDE7CiAgICAgICAgICAgICBt
eSAkY29udGVudEF0dHJpYnV0ZU5hbWUgPSAoJHJlZmxlY3QgfHwgJHJlZmxlY3RVUkwpIGVxICIx
IiA/ICRhdHRyTmFtZSA6ICgkcmVmbGVjdCB8fCAkcmVmbGVjdFVSTCk7CiAgICAgICAgICAgICBw
dXNoKEBpbXBsQ29udGVudERlY2xzLCAiICAgIGltcC0+c2V0QXR0cmlidXRlKEhUTUxOYW1lczo6
JHtjb250ZW50QXR0cmlidXRlTmFtZX1BdHRyLCAkcmVzdWx0Iik7CisgICAgICAgIH0gZWxzaWYg
KCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+dHlwZSBlcSAiRXZlbnRMaXN0ZW5lciIpIHsKKyAgICAg
ICAgICAgICRpbXBsSW5jbHVkZXN7IlY4QWJzdHJhY3RFdmVudExpc3RlbmVyLmgifSA9IDE7Cisg
ICAgICAgICAgICAkaW1wbEluY2x1ZGVzeyJWOEN1c3RvbUJpbmRpbmcuaCJ9ID0gMTsKKyAgICAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsICIgICAgJG5hdGl2ZVR5cGUgb2xkID0gaW1w
LT4kYXR0ck5hbWUoKTtcbiIpOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywg
IiAgICBpZiAob2xkICYmIHN0YXRpY19jYXN0PFY4QWJzdHJhY3RFdmVudExpc3RlbmVyKj4ob2xk
LmdldCgpKS0+aXNPYmplY3RMaXN0ZW5lcigpKSB7XG4iKTsKKyAgICAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50RGVjbHMsICIgICAgICB2ODo6TG9jYWw8djg6Ok9iamVjdD4gb2xkTGlzdGVuZXIg
PSBzdGF0aWNfY2FzdDxWOEFic3RyYWN0RXZlbnRMaXN0ZW5lcio+KG9sZC5nZXQoKSktPmdldExp
c3RlbmVyT2JqZWN0KCk7XG4iKTsKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMs
ICIgICAgICByZW1vdmVIaWRkZW5EZXBlbmRlbmN5KGhvbGRlciwgb2xkTGlzdGVuZXIsIFY4Q3Vz
dG9tOjprTm9kZUV2ZW50TGlzdGVuZXJDYWNoZUluZGV4KTtcbiIpOworICAgICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnREZWNscywgIiAgICB9XG4iKTsKKyAgICAgICAgICAgIHB1c2goQGltcGxD
b250ZW50RGVjbHMsICIgICAgaW1wLT5zZXQkaW1wbFNldHRlckZ1bmN0aW9uTmFtZSgkcmVzdWx0
KTtcbiIpOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgIiAgICBpZiAoJHJl
c3VsdClcbiIpOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgIiAgICAgIGNy
ZWF0ZUhpZGRlbkRlcGVuZGVuY3koaG9sZGVyLCB2YWx1ZSwgVjhDdXN0b206OmtOb2RlRXZlbnRM
aXN0ZW5lckNhY2hlSW5kZXgiKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIHB1c2go
QGltcGxDb250ZW50RGVjbHMsICIgICAgaW1wLT5zZXQkaW1wbFNldHRlckZ1bmN0aW9uTmFtZSgi
IC4gJHJlc3VsdCk7CiAgICAgICAgIH0KQEAgLTg5Myw3ICs5MTQsOCBAQCBFTkQKIAogc3ViIEdl
bmVyYXRlQmF0Y2hlZEF0dHJpYnV0ZURhdGEKIHsKLSAgICBteSAkaW50ZXJmYWNlTmFtZSA9IHNo
aWZ0OworICAgIG15ICRkYXRhTm9kZSA9IHNoaWZ0OworICAgIG15ICRpbnRlcmZhY2VOYW1lID0g
JGRhdGFOb2RlLT5uYW1lOwogICAgIG15ICRhdHRyaWJ1dGVzID0gc2hpZnQ7CiAKICAgICBmb3Jl
YWNoIG15ICRhdHRyaWJ1dGUgKEAkYXR0cmlidXRlcykgewpAQCAtOTU2LDEzICs5NzgsMTAgQEAg
c3ViIEdlbmVyYXRlQmF0Y2hlZEF0dHJpYnV0ZURhdGEKICAgICAgICAgICAgICRwcm9wQXR0ciA9
ICJ2ODo6UmVhZE9ubHkiOwogCiAgICAgICAgICMgRXZlbnRMaXN0ZW5lcnMKLSAgICAgICAgfSBl
bHNpZiAoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT50eXBlIGVxICJFdmVudExpc3RlbmVyIikgewor
ICAgICAgICB9IGVsc2lmICgkYXR0cmlidXRlLT5zaWduYXR1cmUtPnR5cGUgZXEgIkV2ZW50TGlz
dGVuZXIiICYmIFJlcXVpcmVzQ3VzdG9tRXZlbnRMaXN0ZW5lckFjY2Vzc29ycygkZGF0YU5vZGUp
KSB7CiAgICAgICAgICAgICBpZiAoJGludGVyZmFjZU5hbWUgZXEgIkRPTVdpbmRvdyIpIHsKICAg
ICAgICAgICAgICAgICAkZ2V0dGVyID0gIlY4Q3VzdG9tOjp2OERPTVdpbmRvd0V2ZW50SGFuZGxl
ckFjY2Vzc29yR2V0dGVyIjsKICAgICAgICAgICAgICAgICAkc2V0dGVyID0gIlY4Q3VzdG9tOjp2
OERPTVdpbmRvd0V2ZW50SGFuZGxlckFjY2Vzc29yU2V0dGVyIjsKLSAgICAgICAgICAgIH0gZWxz
aWYgKCRpbnRlcmZhY2VOYW1lIGVxICJFbGVtZW50IiB8fCAkaW50ZXJmYWNlTmFtZSBlcSAiRG9j
dW1lbnQiIHx8ICRpbnRlcmZhY2VOYW1lIGVxICJIVE1MQm9keUVsZW1lbnQiIHx8ICRpbnRlcmZh
Y2VOYW1lIGVxICJTVkdFbGVtZW50SW5zdGFuY2UiIHx8ICRpbnRlcmZhY2VOYW1lIGVxICJIVE1M
RnJhbWVTZXRFbGVtZW50IikgewotICAgICAgICAgICAgICAgICRnZXR0ZXIgPSAiVjhDdXN0b206
OnY4Tm9kZUV2ZW50SGFuZGxlckFjY2Vzc29yR2V0dGVyIjsKLSAgICAgICAgICAgICAgICAkc2V0
dGVyID0gIlY4Q3VzdG9tOjp2OE5vZGVFdmVudEhhbmRsZXJBY2Nlc3NvclNldHRlciI7CiAgICAg
ICAgICAgICB9IGVsc2lmICgkaW50ZXJmYWNlTmFtZSBlcSAiRE9NQXBwbGljYXRpb25DYWNoZSIp
IHsKICAgICAgICAgICAgICAgICAkZ2V0dGVyID0gIlY4Q3VzdG9tOjp2OERPTUFwcGxpY2F0aW9u
Q2FjaGVFdmVudEhhbmRsZXJBY2Nlc3NvckdldHRlciI7CiAgICAgICAgICAgICAgICAgJHNldHRl
ciA9ICJWOEN1c3RvbTo6djhET01BcHBsaWNhdGlvbkNhY2hlRXZlbnRIYW5kbGVyQWNjZXNzb3JT
ZXR0ZXIiOwpAQCAtMTA4NCwxMyArMTEwMywxMyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlv
bgogICAgICAgICAgICAgbmV4dDsKICAgICAgICAgfQogCi0gICAgICAgICMgTWFrZSBFdmVudExp
c3RlbmVycyBhbHdheXMgY3VzdG9tLgorICAgICAgICAjIE1ha2UgRXZlbnRMaXN0ZW5lcnMgY3Vz
dG9tIGZvciBzb21lIHR5cGVzLgogICAgICAgICAjIEZJWE1FOiBtYWtlIHRoZSBwZXJsIGNvZGUg
Y2FwYWJsZSBvZiBnZW5lcmF0aW5nIHRoZQogICAgICAgICAjICAgZXZlbnQgc2V0dGVycy9nZXR0
ZXJzLiAgRm9yIG5vdywgV2ViS2l0IGhhcyBzdGFydGVkIHJlbW92aW5nIHRoZQogICAgICAgICAj
ICAgW0N1c3RvbV0gYXR0cmlidXRlLCBzbyBqdXN0IGF1dG9tYXRpY2FsbHkgaW5zZXJ0IGl0IHRv
IGF2b2lkIGZvcmtpbmcKICAgICAgICAgIyAgIG90aGVyIGZpbGVzLiAgVGhpcyBzaG91bGQgYmUg
b2theSBiZWNhdXNlIHdlIGNhbid0IGdlbmVyYXRlIHN0dWJzCiAgICAgICAgICMgICBmb3IgYW55
IGV2ZW50IGdldHRlci9zZXR0ZXJzIGFueXdheS4KLSAgICAgICAgaWYgKCRhdHRyVHlwZSBlcSAi
RXZlbnRMaXN0ZW5lciIpIHsKKyAgICAgICAgaWYgKCRhdHRyVHlwZSBlcSAiRXZlbnRMaXN0ZW5l
ciIgJiYgUmVxdWlyZXNDdXN0b21FdmVudExpc3RlbmVyQWNjZXNzb3JzKCRkYXRhTm9kZSkpIHsK
ICAgICAgICAgICAgICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57
IkN1c3RvbSJ9ID0gMTsKICAgICAgICAgICAgICRpbXBsSW5jbHVkZXN7IlY4Q3VzdG9tQmluZGlu
Zy5oIn0gPSAxOwogICAgICAgICAgICAgbmV4dDsKQEAgLTExNjIsNyArMTE4MSw3IEBAIHN1YiBH
ZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICMgUHV0IHRoZSBhdHRyaWJ1dGVzIHRoYXQg
ZGlzYWxsb3cgc2hhZG93aW5nIG9uIHRoZSBzaGFkb3cgb2JqZWN0LgogICAgICAgICAkYXR0cmli
dXRlcyA9IFxAbm9ybWFsOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgInN0YXRpYyBjb25z
dCBCYXRjaGVkQXR0cmlidXRlIHNoYWRvd19hdHRyc1tdID0ge1xuIik7Ci0gICAgICAgIEdlbmVy
YXRlQmF0Y2hlZEF0dHJpYnV0ZURhdGEoJGludGVyZmFjZU5hbWUsIFxAZGlzYWxsb3dzX3NoYWRv
d2luZyk7CisgICAgICAgIEdlbmVyYXRlQmF0Y2hlZEF0dHJpYnV0ZURhdGEoJGRhdGFOb2RlLCBc
QGRpc2FsbG93c19zaGFkb3dpbmcpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIn07XG4i
KTsKICAgICB9CiAKQEAgLTExNzAsNyArMTE4OSw3IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0
aW9uCiAgICAgaWYgKEAkYXR0cmlidXRlcykgewogICAgICAgICAkaGFzX2F0dHJpYnV0ZXMgPSAx
OwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgInN0YXRpYyBjb25zdCBCYXRjaGVkQXR0cmli
dXRlICR7aW50ZXJmYWNlTmFtZX1fYXR0cnNbXSA9IHtcbiIpOwotICAgICAgICBHZW5lcmF0ZUJh
dGNoZWRBdHRyaWJ1dGVEYXRhKCRpbnRlcmZhY2VOYW1lLCAkYXR0cmlidXRlcyk7CisgICAgICAg
IEdlbmVyYXRlQmF0Y2hlZEF0dHJpYnV0ZURhdGEoJGRhdGFOb2RlLCAkYXR0cmlidXRlcyk7CiAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAifTtcbiIpOwogICAgIH0KIApAQCAtMTYxMiw2ICsx
NjMxLDcgQEAgc3ViIElzUmVmUHRyVHlwZQogICAgIHJldHVybiAxIGlmICR0eXBlIGVxICJFbGVt
ZW50IjsKICAgICByZXR1cm4gMSBpZiAkdHlwZSBlcSAiRW50aXR5UmVmZXJlbmNlIjsKICAgICBy
ZXR1cm4gMSBpZiAkdHlwZSBlcSAiRXZlbnQiOworICAgIHJldHVybiAxIGlmICR0eXBlIGVxICJF
dmVudExpc3RlbmVyIjsKICAgICByZXR1cm4gMSBpZiAkdHlwZSBlcSAiRmlsZUxpc3QiOwogICAg
IHJldHVybiAxIGlmICR0eXBlIGVxICJIVE1MQ29sbGVjdGlvbiI7CiAgICAgcmV0dXJuIDEgaWYg
JHR5cGUgZXEgIkhUTUxEb2N1bWVudCI7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L1Y4RE9NV3JhcHBlci5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5jcHAK
aW5kZXggNjcyMzhhNi4uN2M1Njk5MiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy92OC9W
OERPTVdyYXBwZXIuY3BwCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XcmFwcGVyLmNw
cApAQCAtMzEsMTkgKzMxLDI0IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiVjhE
T01XcmFwcGVyLmgiCiAKLSNpbmNsdWRlICJDaHJvbWl1bUJyaWRnZS5oIgogI2luY2x1ZGUgIkNT
U011dGFibGVTdHlsZURlY2xhcmF0aW9uLmgiCisjaW5jbHVkZSAiQ2hyb21pdW1CcmlkZ2UuaCIK
ICNpbmNsdWRlICJET01PYmplY3RzSW5jbHVkZS5oIgogI2luY2x1ZGUgIkRvY3VtZW50TG9hZGVy
LmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXJDbGllbnQuaCIKKyNpbmNsdWRlICJTVkdFbGVtZW50
SW5zdGFuY2UuaCIKICNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVyLmgiCisjaW5jbHVkZSAiVjhB
YnN0cmFjdEV2ZW50TGlzdGVuZXIuaCIKICNpbmNsdWRlICJWOEJpbmRpbmcuaCIKICNpbmNsdWRl
ICJWOENvbGxlY3Rpb24uaCIKICNpbmNsdWRlICJWOEN1c3RvbUJpbmRpbmcuaCIKICNpbmNsdWRl
ICJWOERPTU1hcC5oIgogI2luY2x1ZGUgIlY4RE9NV2luZG93LmgiCisjaW5jbHVkZSAiVjhFdmVu
dExpc3RlbmVyTGlzdC5oIgogI2luY2x1ZGUgIlY4SW5kZXguaCIKICNpbmNsdWRlICJWOElzb2xh
dGVkV29ybGQuaCIKKyNpbmNsdWRlICJWOE9iamVjdEV2ZW50TGlzdGVuZXIuaCIKKyNpbmNsdWRl
ICJWOFByb3h5LmgiCiAjaW5jbHVkZSAiV29ya2VyQ29udGV4dEV4ZWN1dGlvblByb3h5LmgiCiAK
ICNpbmNsdWRlIDxhbGdvcml0aG0+CkBAIC0xMzE0LDYgKzEzMTksMjggQEAgdjg6OkhhbmRsZTx2
ODo6VmFsdWU+IFY4RE9NV3JhcHBlcjo6Y29udmVydEV2ZW50TGlzdGVuZXJUb1Y4T2JqZWN0KEV2
ZW50TGlzdGVuZXIKICAgICByZXR1cm4gdjhsaXN0ZW5lci0+Z2V0TGlzdGVuZXJPYmplY3QoKTsK
IH0KIAorUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiBWOERPTVdyYXBwZXI6OmdldEV2ZW50TGlz
dGVuZXIoTm9kZSogbm9kZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGJvb2wgaXNBdHRy
aWJ1dGUsIGJvb2wgZmluZE9ubHkpCit7CisgICAgVjhQcm94eSogcHJveHkgPSBWOFByb3h5Ojpy
ZXRyaWV2ZShub2RlLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOworICAgIC8vIFRoZSBkb2N1
bWVudCBtaWdodCBiZSBjcmVhdGVkIHVzaW5nIGNyZWF0ZURvY3VtZW50LCB3aGljaCBkb2VzCisg
ICAgLy8gbm90IGhhdmUgYSBmcmFtZSwgdXNlIHRoZSBhY3RpdmUgZnJhbWUuCisgICAgaWYgKCFw
cm94eSkKKyAgICAgICAgcHJveHkgPSBWOFByb3h5OjpyZXRyaWV2ZShWOFByb3h5OjpyZXRyaWV2
ZUZyYW1lRm9yRW50ZXJlZENvbnRleHQoKSk7CisKKyAgICBpZiAocHJveHkpIHsKKyAgICAgICAg
VjhFdmVudExpc3RlbmVyTGlzdCogbGlzdCA9IHByb3h5LT5vYmplY3RMaXN0ZW5lcnMoKTsKKyAg
ICAgICAgcmV0dXJuIGZpbmRPbmx5ID8gbGlzdC0+ZmluZFdyYXBwZXIodmFsdWUsIGlzQXR0cmli
dXRlKSA6IGxpc3QtPmZpbmRPckNyZWF0ZVdyYXBwZXI8VjhPYmplY3RFdmVudExpc3RlbmVyPihw
cm94eS0+ZnJhbWUoKSwgdmFsdWUsIGlzQXR0cmlidXRlKTsKKyAgICB9CisKKyAgICByZXR1cm4g
MDsKK30KKworUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiBWOERPTVdyYXBwZXI6OmdldEV2ZW50
TGlzdGVuZXIoU1ZHRWxlbWVudEluc3RhbmNlKiBlbGVtZW50LCB2ODo6TG9jYWw8djg6OlZhbHVl
PiB2YWx1ZSwgYm9vbCBpc0F0dHJpYnV0ZSwgYm9vbCBmaW5kT25seSkKK3sKKyAgICByZXR1cm4g
Z2V0RXZlbnRMaXN0ZW5lcihlbGVtZW50LT5jb3JyZXNwb25kaW5nRWxlbWVudCgpLCB2YWx1ZSwg
aXNBdHRyaWJ1dGUsIGZpbmRPbmx5KTsKK30KKworCiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhE
T01XcmFwcGVyOjpjb252ZXJ0RE9NSW1wbGVtZW50YXRpb25Ub1Y4T2JqZWN0KERPTUltcGxlbWVu
dGF0aW9uKiBpbXBsKQogewogICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gcmVzdWx0ID0gaW5z
dGFudGlhdGVWOE9iamVjdChWOENsYXNzSW5kZXg6OkRPTUlNUExFTUVOVEFUSU9OLCBWOENsYXNz
SW5kZXg6OkRPTUlNUExFTUVOVEFUSU9OLCBpbXBsKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvVjhET01XcmFwcGVyLmggYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBl
ci5oCmluZGV4IDU3YjNhNjkuLjNiMGNkN2EgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3Mv
djgvVjhET01XcmFwcGVyLmgKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdyYXBwZXIu
aApAQCAtMTg0LDEzICsxODQsMTcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBzdGF0
aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGNvbnZlcnRFdmVudFRhcmdldFRvVjhPYmplY3QoRXZl
bnRUYXJnZXQqKTsKIAogICAgICAgICAvLyBXcmFwIGFuZCB1bndyYXAgSlMgZXZlbnQgbGlzdGVu
ZXJzLgotICAgICAgICBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGNvbnZlcnRFdmVudExp
c3RlbmVyVG9WOE9iamVjdChQYXNzUmVmUHRyPEV2ZW50PiBldmVudExpc3RlbmVyKQorICAgICAg
ICBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGNvbnZlcnRFdmVudExpc3RlbmVyVG9WOE9i
amVjdChQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+IGV2ZW50TGlzdGVuZXIpCiAgICAgICAgIHsK
ICAgICAgICAgICAgIHJldHVybiBjb252ZXJ0RXZlbnRMaXN0ZW5lclRvVjhPYmplY3QoZXZlbnRM
aXN0ZW5lci5nZXQoKSk7CiAgICAgICAgIH0KIAogICAgICAgICBzdGF0aWMgdjg6OkhhbmRsZTx2
ODo6VmFsdWU+IGNvbnZlcnRFdmVudExpc3RlbmVyVG9WOE9iamVjdChFdmVudExpc3RlbmVyKik7
CiAKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gZ2V0RXZlbnRMaXN0
ZW5lcihOb2RlKiBub2RlLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgYm9vbCBpc0F0dHJp
YnV0ZSwgYm9vbCBmaW5kT25seSk7CisKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8RXZlbnRM
aXN0ZW5lcj4gZ2V0RXZlbnRMaXN0ZW5lcihTVkdFbGVtZW50SW5zdGFuY2UqIGVsZW1lbnQsIHY4
OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBib29sIGlzQXR0cmlidXRlLCBib29sIGZpbmRPbmx5
KTsKKwogICAgICAgICAvLyBET01JbXBsZW1lbnRhdGlvbiBpcyBhIHNpbmdsZXRvbiBhbmQgaXQg
aXMgaGFuZGxlZCBpbiBhIHNwZWNpYWwKICAgICAgICAgLy8gd2F5LiBBIHdyYXBwZXIgaXMgZ2Vu
ZXJhdGVkIHBlciBkb2N1bWVudCBhbmQgc3RvcmVkIGluIGFuCiAgICAgICAgIC8vIGludGVybmFs
IGZpZWxkIG9mIHRoZSBkb2N1bWVudC4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3Mvdjgv
VjhVdGlsaXRpZXMuY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFV0aWxpdGllcy5jcHAKaW5k
ZXggYzFhYzZkNC4uZjIwYWRkOCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFV0
aWxpdGllcy5jcHAKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFV0aWxpdGllcy5jcHAKQEAg
LTQzLDcgKzQzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAvLyBVc2UgYW4gYXJyYXkgdG8g
aG9sZCBkZXBlbmRlbnRzLiBJdCB3b3JrcyBsaWtlIGEgcmVmLWNvdW50ZWQgc2NoZW1lLgogLy8g
QSB2YWx1ZSBjYW4gYmUgYWRkZWQgbW9yZSB0aGFuIG9uY2UgdG8gdGhlIERPTSBvYmplY3QuCi12
b2lkIGNyZWF0ZUhpZGRlbkRlcGVuZGVuY3kodjg6OkxvY2FsPHY4OjpPYmplY3Q+IG9iamVjdCwg
djg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGludCBjYWNoZUluZGV4KQordm9pZCBjcmVhdGVI
aWRkZW5EZXBlbmRlbmN5KHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gb2JqZWN0LCB2ODo6TG9jYWw8
djg6OlZhbHVlPiB2YWx1ZSwgaW50IGNhY2hlSW5kZXgpCiB7CiAgICAgdjg6OkxvY2FsPHY4OjpW
YWx1ZT4gY2FjaGUgPSBvYmplY3QtPkdldEludGVybmFsRmllbGQoY2FjaGVJbmRleCk7CiAgICAg
aWYgKGNhY2hlLT5Jc051bGwoKSB8fCBjYWNoZS0+SXNVbmRlZmluZWQoKSkgewpAQCAtNTUsNyAr
NTUsNyBAQCB2b2lkIGNyZWF0ZUhpZGRlbkRlcGVuZGVuY3kodjg6OkxvY2FsPHY4OjpPYmplY3Q+
IG9iamVjdCwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdgogICAgIGNhY2hlQXJyYXktPlNldCh2ODo6
SW50ZWdlcjo6TmV3KGNhY2hlQXJyYXktPkxlbmd0aCgpKSwgdmFsdWUpOwogfQogCi12b2lkIHJl
bW92ZUhpZGRlbkRlcGVuZGVuY3kodjg6OkxvY2FsPHY4OjpPYmplY3Q+IG9iamVjdCwgdjg6Okxv
Y2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGludCBjYWNoZUluZGV4KQordm9pZCByZW1vdmVIaWRkZW5E
ZXBlbmRlbmN5KHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gb2JqZWN0LCB2ODo6TG9jYWw8djg6OlZh
bHVlPiB2YWx1ZSwgaW50IGNhY2hlSW5kZXgpCiB7CiAgICAgdjg6OkxvY2FsPHY4OjpWYWx1ZT4g
Y2FjaGUgPSBvYmplY3QtPkdldEludGVybmFsRmllbGQoY2FjaGVJbmRleCk7CiAgICAgaWYgKCFj
YWNoZS0+SXNBcnJheSgpKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFV0aWxp
dGllcy5oIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFV0aWxpdGllcy5oCmluZGV4IGVmMjZhYzgu
LjJlNDhjNGMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhVdGlsaXRpZXMuaAor
KysgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4VXRpbGl0aWVzLmgKQEAgLTQwLDggKzQwLDggQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIFN0cmluZzsKIAogICAgIC8vIFVzZSBhbiBh
cnJheSB0byBob2xkIGRlcGVuZGVudHMuIEl0IHdvcmtzIGxpa2UgYSByZWYtY291bnRlZCBzY2hl
bWUuIEEgdmFsdWUgY2FuIGJlIGFkZGVkIG1vcmUgdGhhbiBvbmNlIHRvIHRoZSBET00gb2JqZWN0
LgotICAgIHZvaWQgY3JlYXRlSGlkZGVuRGVwZW5kZW5jeSh2ODo6TG9jYWw8djg6Ok9iamVjdD4s
IHY4OjpMb2NhbDx2ODo6VmFsdWU+LCBpbnQgY2FjaGVJbmRleCk7Ci0gICAgdm9pZCByZW1vdmVI
aWRkZW5EZXBlbmRlbmN5KHY4OjpMb2NhbDx2ODo6T2JqZWN0Piwgdjg6OkxvY2FsPHY4OjpWYWx1
ZT4sIGludCBjYWNoZUluZGV4KTsKKyAgICB2b2lkIGNyZWF0ZUhpZGRlbkRlcGVuZGVuY3kodjg6
OkhhbmRsZTx2ODo6T2JqZWN0Piwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4sIGludCBjYWNoZUluZGV4
KTsKKyAgICB2b2lkIHJlbW92ZUhpZGRlbkRlcGVuZGVuY3kodjg6OkhhbmRsZTx2ODo6T2JqZWN0
Piwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4sIGludCBjYWNoZUluZGV4KTsKIAogICAgIGJvb2wgcHJv
Y2Vzc2luZ1VzZXJHZXN0dXJlKCk7CiAgICAgYm9vbCBzaG91bGRBbGxvd05hdmlnYXRpb24oRnJh
bWUqKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q3VzdG9tQmlu
ZGluZy5oIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhDdXN0b21CaW5kaW5nLmgKaW5k
ZXggY2VmZTk2ZS4uMmM1NDI4NiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0
b20vVjhDdXN0b21CaW5kaW5nLmgKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhD
dXN0b21CaW5kaW5nLmgKQEAgLTIzNiw3ICsyMzYsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
ICAgICAgIERFQ0xBUkVfUFJPUEVSVFlfQUNDRVNTT1JfR0VUVEVSKEV2ZW50Q2xpcGJvYXJkRGF0
YSk7CiAKICAgICAgICAgREVDTEFSRV9QUk9QRVJUWV9BQ0NFU1NPUihET01XaW5kb3dFdmVudEhh
bmRsZXIpOwotICAgICAgICBERUNMQVJFX1BST1BFUlRZX0FDQ0VTU09SKE5vZGVFdmVudEhhbmRs
ZXIpOwogCiAgICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soSFRNTENhbnZhc0VsZW1lbnRHZXRDb250
ZXh0KTsKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhOb2RlQ3Vz
dG9tLmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Tm9kZUN1c3RvbS5jcHAKaW5k
ZXggNmIwZDc0MC4uNjFhYjg2NyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0
b20vVjhOb2RlQ3VzdG9tLmNwcAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE5v
ZGVDdXN0b20uY3BwCkBAIC01Myw2MiArNTMsMTIgQEAgc3RhdGljIGlubGluZSBTdHJpbmcgdG9F
dmVudFR5cGUodjg6OkxvY2FsPHY4OjpTdHJpbmc+IHZhbHVlKQogICAgIHJldHVybiBrZXkuc3Vi
c3RyaW5nKDIpOwogfQogCi1zdGF0aWMgUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiBnZXRFdmVu
dExpc3RlbmVyKE5vZGUqIG5vZGUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBib29sIGlz
QXR0cmlidXRlLCBib29sIGZpbmRPbmx5KQotewotICAgIFY4UHJveHkqIHByb3h5ID0gVjhQcm94
eTo6cmV0cmlldmUobm9kZS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKLSAgICAvLyBUaGUg
ZG9jdW1lbnQgbWlnaHQgYmUgY3JlYXRlZCB1c2luZyBjcmVhdGVEb2N1bWVudCwgd2hpY2ggZG9l
cwotICAgIC8vIG5vdCBoYXZlIGEgZnJhbWUsIHVzZSB0aGUgYWN0aXZlIGZyYW1lLgotICAgIGlm
ICghcHJveHkpCi0gICAgICAgIHByb3h5ID0gVjhQcm94eTo6cmV0cmlldmUoVjhQcm94eTo6cmV0
cmlldmVGcmFtZUZvckVudGVyZWRDb250ZXh0KCkpOwotCi0gICAgaWYgKHByb3h5KSB7Ci0gICAg
ICAgIFY4RXZlbnRMaXN0ZW5lckxpc3QqIGxpc3QgPSBwcm94eS0+b2JqZWN0TGlzdGVuZXJzKCk7
Ci0gICAgICAgIHJldHVybiBmaW5kT25seSA/IGxpc3QtPmZpbmRXcmFwcGVyKHZhbHVlLCBpc0F0
dHJpYnV0ZSkgOiBsaXN0LT5maW5kT3JDcmVhdGVXcmFwcGVyPFY4T2JqZWN0RXZlbnRMaXN0ZW5l
cj4ocHJveHktPmZyYW1lKCksIHZhbHVlLCBpc0F0dHJpYnV0ZSk7Ci0gICAgfQotCi0gICAgcmV0
dXJuIDA7Ci19Ci0KLUFDQ0VTU09SX1NFVFRFUihOb2RlRXZlbnRIYW5kbGVyKQotewotICAgIE5v
ZGUqIG5vZGUgPSBWOERPTVdyYXBwZXI6OmNvbnZlcnRET01XcmFwcGVyVG9Ob2RlPE5vZGU+KGlu
Zm8uSG9sZGVyKCkpOwotICAgIFN0cmluZyBldmVudFR5cGUgPSB0b0V2ZW50VHlwZShuYW1lKTsK
LQotICAgIC8vIFJlbW92ZSBoaWRkZW4gZGVwZW5kZW5jeSBvbiB0aGUgb2xkIGV2ZW50IGhhbmRs
ZXIuCi0gICAgaWYgKEV2ZW50TGlzdGVuZXIqIGxpc3RlbmVyID0gbm9kZS0+Z2V0QXR0cmlidXRl
RXZlbnRMaXN0ZW5lcihldmVudFR5cGUpKSB7Ci0gICAgICAgIGlmIChzdGF0aWNfY2FzdDxWOEFi
c3RyYWN0RXZlbnRMaXN0ZW5lcio+KGxpc3RlbmVyKS0+aXNPYmplY3RMaXN0ZW5lcigpKSB7Ci0g
ICAgICAgICAgICB2ODo6TG9jYWw8djg6Ok9iamVjdD4gdjhMaXN0ZW5lciA9IHN0YXRpY19jYXN0
PFY4T2JqZWN0RXZlbnRMaXN0ZW5lcio+KGxpc3RlbmVyKS0+Z2V0TGlzdGVuZXJPYmplY3QoKTsK
LSAgICAgICAgICAgIHJlbW92ZUhpZGRlbkRlcGVuZGVuY3koaW5mby5Ib2xkZXIoKSwgdjhMaXN0
ZW5lciwgVjhDdXN0b206OmtOb2RlRXZlbnRMaXN0ZW5lckNhY2hlSW5kZXgpOwotICAgICAgICB9
Ci0gICAgfQotCi0gICAgLy8gU2V0IGhhbmRsZXIgaWYgdGhlIHZhbHVlIGlzIGEgZnVuY3Rpb24u
Ci0gICAgaWYgKHZhbHVlLT5Jc0Z1bmN0aW9uKCkpIHsKLSAgICAgICAgUmVmUHRyPEV2ZW50TGlz
dGVuZXI+IGxpc3RlbmVyID0gZ2V0RXZlbnRMaXN0ZW5lcihub2RlLCB2YWx1ZSwgdHJ1ZSwgZmFs
c2UpOwotICAgICAgICBpZiAobGlzdGVuZXIpIHsKLSAgICAgICAgICAgIG5vZGUtPnNldEF0dHJp
YnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBsaXN0ZW5lcik7Ci0gICAgICAgICAgICBjcmVh
dGVIaWRkZW5EZXBlbmRlbmN5KGluZm8uSG9sZGVyKCksIHZhbHVlLCBWOEN1c3RvbTo6a05vZGVF
dmVudExpc3RlbmVyQ2FjaGVJbmRleCk7Ci0gICAgICAgIH0KLSAgICB9IGVsc2UgewotICAgICAg
ICAvLyBPdGhlcndpc2UsIGNsZWFyIHRoZSBoYW5kbGVyLgotICAgICAgICBub2RlLT5jbGVhckF0
dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlKTsKLSAgICB9Ci19Ci0KLUFDQ0VTU09SX0dF
VFRFUihOb2RlRXZlbnRIYW5kbGVyKQotewotICAgIE5vZGUqIG5vZGUgPSBWOERPTVdyYXBwZXI6
OmNvbnZlcnRET01XcmFwcGVyVG9Ob2RlPE5vZGU+KGluZm8uSG9sZGVyKCkpOwotCi0gICAgRXZl
bnRMaXN0ZW5lciogbGlzdGVuZXIgPSBub2RlLT5nZXRBdHRyaWJ1dGVFdmVudExpc3RlbmVyKHRv
RXZlbnRUeXBlKG5hbWUpKTsKLSAgICByZXR1cm4gVjhET01XcmFwcGVyOjpjb252ZXJ0RXZlbnRM
aXN0ZW5lclRvVjhPYmplY3QobGlzdGVuZXIpOwotfQotCiBDQUxMQkFDS19GVU5DX0RFQ0woTm9k
ZUFkZEV2ZW50TGlzdGVuZXIpCiB7CiAgICAgSU5DX1NUQVRTKCJET00uTm9kZS5hZGRFdmVudExp
c3RlbmVyKCkiKTsKICAgICBOb2RlKiBub2RlID0gVjhET01XcmFwcGVyOjpjb252ZXJ0RE9NV3Jh
cHBlclRvTm9kZTxOb2RlPihhcmdzLkhvbGRlcigpKTsKIAotICAgIFJlZlB0cjxFdmVudExpc3Rl
bmVyPiBsaXN0ZW5lciA9IGdldEV2ZW50TGlzdGVuZXIobm9kZSwgYXJnc1sxXSwgZmFsc2UsIGZh
bHNlKTsKKyAgICBSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gbGlzdGVuZXIgPSBWOERPTVdyYXBwZXI6
OmdldEV2ZW50TGlzdGVuZXIobm9kZSwgYXJnc1sxXSwgZmFsc2UsIGZhbHNlKTsKICAgICBpZiAo
bGlzdGVuZXIpIHsKICAgICAgICAgU3RyaW5nIHR5cGUgPSB0b1dlYkNvcmVTdHJpbmcoYXJnc1sw
XSk7CiAgICAgICAgIGJvb2wgdXNlQ2FwdHVyZSA9IGFyZ3NbMl0tPkJvb2xlYW5WYWx1ZSgpOwpA
QCAtMTI2LDcgKzc2LDcgQEAgQ0FMTEJBQ0tfRlVOQ19ERUNMKE5vZGVSZW1vdmVFdmVudExpc3Rl
bmVyKQogICAgIC8vIEl0IGlzIHBvc3NiaWxlIHRoYXQgdGhlIG93bmVyIGRvY3VtZW50IG9mIHRo
ZSBub2RlIGlzIGRldGFjaGVkCiAgICAgLy8gZnJvbSB0aGUgZnJhbWUuCiAgICAgLy8gU2VlIGlz
c3VlIGh0dHA6Ly9iLzg3ODkwOQotICAgIFJlZlB0cjxFdmVudExpc3RlbmVyPiBsaXN0ZW5lciA9
IGdldEV2ZW50TGlzdGVuZXIobm9kZSwgYXJnc1sxXSwgZmFsc2UsIHRydWUpOworICAgIFJlZlB0
cjxFdmVudExpc3RlbmVyPiBsaXN0ZW5lciA9IFY4RE9NV3JhcHBlcjo6Z2V0RXZlbnRMaXN0ZW5l
cihub2RlLCBhcmdzWzFdLCBmYWxzZSwgdHJ1ZSk7CiAgICAgaWYgKGxpc3RlbmVyKSB7CiAgICAg
ICAgIFN0cmluZyB0eXBlID0gdG9XZWJDb3JlU3RyaW5nKGFyZ3NbMF0pOwogICAgICAgICBib29s
IHVzZUNhcHR1cmUgPSBhcmdzWzJdLT5Cb29sZWFuVmFsdWUoKTsK
</data>
<flag name="review"
          id="19732"
          type_id="1"
          status="+"
          setter="dglazkov"
    />
    <flag name="commit-queue"
          id="19737"
          type_id="3"
          status="+"
          setter="eric"
    />
          </attachment>
      

    </bug>

</bugzilla>