<?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>115955</bug_id>
          
          <creation_ts>2013-05-11 02:25:32 -0700</creation_ts>
          <short_desc>Implement .onended event listener for AudioBufferSourceNode and OscillatorNode</short_desc>
          <delta_ts>2022-02-28 00:06:54 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Audio</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>DUPLICATE</resolution>
          <dup_id>116798</dup_id>
          
          <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="Praveen Jadhav">praveen.j</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>crogers</cc>
    
    <cc>dev_sachin</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>glenn</cc>
    
    <cc>jer.noble</cc>
    
    <cc>s.choi</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>887766</commentid>
    <comment_count>0</comment_count>
    <who name="Praveen Jadhav">praveen.j</who>
    <bug_when>2013-05-11 02:25:32 -0700</bug_when>
    <thetext>AudioBufferSourceNode and OscillatorNode should sent .onended event as per the latest webaudio specifications.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>887767</commentid>
    <comment_count>1</comment_count>
      <attachid>201454</attachid>
    <who name="Praveen Jadhav">praveen.j</who>
    <bug_when>2013-05-11 02:33:03 -0700</bug_when>
    <thetext>Created attachment 201454
Patch

Patch for onended event implementation in AudioBufferSourceNode and OscillatorNode.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>887768</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-05-11 02:35:02 -0700</bug_when>
    <thetext>Attachment 201454 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/webaudio/audiobuffersource-stop-expected.txt&apos;, u&apos;LayoutTests/webaudio/audiobuffersource-stop.html&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/Modules/webaudio/AudioBufferSourceNode.cpp&apos;, u&apos;Source/WebCore/Modules/webaudio/AudioBufferSourceNode.h&apos;, u&apos;Source/WebCore/Modules/webaudio/AudioBufferSourceNode.idl&apos;, u&apos;Source/WebCore/Modules/webaudio/OscillatorNode.cpp&apos;, u&apos;Source/WebCore/Modules/webaudio/OscillatorNode.h&apos;, u&apos;Source/WebCore/Modules/webaudio/OscillatorNode.idl&apos;, u&apos;Source/WebCore/dom/EventTarget.h&apos;, u&apos;Source/WebCore/dom/EventTargetFactory.in&apos;]&quot; exit_code: 1
Source/WebCore/Modules/webaudio/AudioBufferSourceNode.cpp:357:  One line control clauses should not use braces.  [whitespace/braces] [4]
Source/WebCore/Modules/webaudio/OscillatorNode.cpp:354:  One line control clauses should not use braces.  [whitespace/braces] [4]
Total errors found: 2 in 12 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>887792</commentid>
    <comment_count>3</comment_count>
      <attachid>201454</attachid>
    <who name="Chris Rogers">crogers</who>
    <bug_when>2013-05-11 10:24:14 -0700</bug_when>
    <thetext>Comment on attachment 201454
Patch

Thanks Praveen, but we&apos;re working on a separate patch to simply make AudioNode an EventTarget.  Then we need to create special optimized code to not fire an event if there are no event listeners to avoid calling callOnMainThread()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>887890</commentid>
    <comment_count>4</comment_count>
    <who name="Praveen Jadhav">praveen.j</who>
    <bug_when>2013-05-11 19:57:04 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 201454 [details])
&gt; Thanks Praveen, but we&apos;re working on a separate patch to simply make AudioNode an EventTarget.  Then we need to create special optimized code to not fire an event if there are no event listeners to avoid calling callOnMainThread()

That would be really nice not to call callOnMainThread() unnecessarily if event listener isn&apos;t present. As of now, ScriptProcessorNode too has this issue and can be avoided with your approach. Will wait for your patch.. :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>894804</commentid>
    <comment_count>5</comment_count>
    <who name="Praveen Jadhav">praveen.j</who>
    <bug_when>2013-05-29 02:36:06 -0700</bug_when>
    <thetext>

*** This bug has been marked as a duplicate of bug 116798 ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>201454</attachid>
            <date>2013-05-11 02:33:03 -0700</date>
            <delta_ts>2022-02-28 00:06:54 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>WebAudio-115955.txt</filename>
            <type>text/plain</type>
            <size>18753</size>
            <attacher name="Praveen Jadhav">praveen.j</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0OTkyOCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUxIEBACisyMDEzLTA1LTExICBQcmF2ZWVu
IFIgSmFkaGF2ICA8cHJhdmVlbi5qQHNhbXN1bmcuY29tPgorCisgICAgICAgIEltcGxlbWVudCAu
b25lbmRlZCBldmVudCBsaXN0ZW5lciBmb3IgQXVkaW9CdWZmZXJTb3VyY2VOb2RlIGFuZCBPc2Np
bGxhdG9yTm9kZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTE1OTU1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgV2ViQXVkaW8gc3BlY2lmaWNhdGlvbiBpcyByZWNlbnRseSB1cGRhdGVkIHRvIHJldHVybiAu
b25lbmRlZCBldmVudHMgdG8gSlNPYmplY3QKKyAgICAgICAgd2hlbiBPc2NpbGxhdG9yTm9kZSBh
bmQgQXVkaW9CdWZmZXJTb3VyY2VOb2RlIGFyZSBmaW5pc2hlZC4KKworICAgICAgICBTcGVjOiBo
dHRwczovL2R2Y3MudzMub3JnL2hnL2F1ZGlvL3Jhdy1maWxlL3RpcC93ZWJhdWRpby9zcGVjaWZp
Y2F0aW9uLmh0bWwjQXVkaW9CdWZmZXJTb3VyY2VOb2RlCisgICAgICAgICAgICAgIGh0dHBzOi8v
ZHZjcy53My5vcmcvaGcvYXVkaW8vcmF3LWZpbGUvdGlwL3dlYmF1ZGlvL3NwZWNpZmljYXRpb24u
aHRtbCNPc2NpbGxhdG9yTm9kZQorCisgICAgICAgIFRlc3Q6IHdlYmF1ZGlvL2F1ZGlvYnVmZmVy
c291cmNlLXN0b3AuaHRtbAorCisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZl
clNvdXJjZU5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9CdWZmZXJTb3VyY2VOb2Rl
Ojpwcm9jZXNzKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQnVmZmVyU291cmNlTm9kZTo6cmVz
ZXQpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0J1ZmZlclNv
dXJjZU5vZGU6OmZpcmVFbmRlZEV2ZW50RGlzcGF0Y2gpOgorICAgICAgICAoV2ViQ29yZTo6QXVk
aW9CdWZmZXJTb3VyY2VOb2RlOjpmaXJlRW5kZWRFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpB
dWRpb0J1ZmZlclNvdXJjZU5vZGU6OmludGVyZmFjZU5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6
QXVkaW9CdWZmZXJTb3VyY2VOb2RlOjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KToKKyAgICAgICAg
KiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9kZS5oOgorICAgICAgICAoQXVk
aW9CdWZmZXJTb3VyY2VOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQnVmZmVyU291cmNl
Tm9kZTo6ZXZlbnRUYXJnZXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQnVmZmVyU291
cmNlTm9kZTo6ZW5zdXJlRXZlbnRUYXJnZXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlv
QnVmZmVyU291cmNlTm9kZTo6cmVmRXZlbnRUYXJnZXQpOgorICAgICAgICAoV2ViQ29yZTo6QXVk
aW9CdWZmZXJTb3VyY2VOb2RlOjpkZXJlZkV2ZW50VGFyZ2V0KToKKyAgICAgICAgKiBNb2R1bGVz
L3dlYmF1ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9kZS5pZGw6CisgICAgICAgICogTW9kdWxlcy93
ZWJhdWRpby9Pc2NpbGxhdG9yTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpPc2NpbGxhdG9y
Tm9kZTo6cHJvY2Vzcyk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6Ok9z
Y2lsbGF0b3JOb2RlOjpmaXJlRW5kZWRFdmVudERpc3BhdGNoKToKKyAgICAgICAgKFdlYkNvcmU6
Ok9zY2lsbGF0b3JOb2RlOjpmaXJlRW5kZWRFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpPc2Np
bGxhdG9yTm9kZTo6aW50ZXJmYWNlTmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpPc2NpbGxhdG9y
Tm9kZTo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRp
by9Pc2NpbGxhdG9yTm9kZS5oOgorICAgICAgICAoV2ViQ29yZTo6T3NjaWxsYXRvck5vZGU6OmV2
ZW50VGFyZ2V0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpPc2NpbGxhdG9yTm9kZTo6ZW5zdXJl
RXZlbnRUYXJnZXREYXRhKToKKyAgICAgICAgKE9zY2lsbGF0b3JOb2RlKToKKyAgICAgICAgKFdl
YkNvcmU6Ok9zY2lsbGF0b3JOb2RlOjpyZWZFdmVudFRhcmdldCk6CisgICAgICAgIChXZWJDb3Jl
OjpPc2NpbGxhdG9yTm9kZTo6ZGVyZWZFdmVudFRhcmdldCk6CisgICAgICAgICogTW9kdWxlcy93
ZWJhdWRpby9Pc2NpbGxhdG9yTm9kZS5pZGw6CisgICAgICAgICogZG9tL0V2ZW50VGFyZ2V0Lmg6
CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBkb20vRXZlbnRUYXJnZXRGYWN0b3J5Lmlu
OgorCiAyMDEzLTA1LTExICBCZW5qYW1pbiBQb3VsYWluICA8YnBvdWxhaW5AYXBwbGUuY29tPgog
CiAgICAgICAgIE1ha2UgQ2FudmFzU3R5bGUgYSBwbGFpbiBvYmplY3QgaW5zdGVhZCBvZiBhbiBS
ZWZDb3VudGVkIG9iamVjdApJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9B
dWRpb0J1ZmZlclNvdXJjZU5vZGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmNwcAkocmV2aXNpb24gMTQ5OTI4
KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5v
ZGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiQXVkaW9D
b250ZXh0LmgiCiAjaW5jbHVkZSAiQXVkaW9Ob2RlT3V0cHV0LmgiCiAjaW5jbHVkZSAiQXVkaW9V
dGlsaXRpZXMuaCIKKyNpbmNsdWRlICJFdmVudC5oIgogI2luY2x1ZGUgIkZsb2F0Q29udmVyc2lv
bi5oIgogI2luY2x1ZGUgIlNjcmlwdENhbGxTdGFjay5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQuaCIKQEAgLTExNiw3ICsxMTcsMTAgQEAgdm9pZCBBdWRpb0J1ZmZlclNvdXJj
ZU5vZGU6OnByb2Nlc3Moc2l6ZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRC
dXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHF1YW50dW1GcmFtZU9mZnNldCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyRnJhbWVzVG9Qcm9jZXNzKTsKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgCisKKyAgICAgICAgaWYgKGhhc0ZpbmlzaGVkKCkpCisg
ICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKGZpcmVFbmRlZEV2ZW50RGlzcGF0Y2gsIHRoaXMp
OworCiAgICAgICAgIGlmICghYnVmZmVyRnJhbWVzVG9Qcm9jZXNzKSB7CiAgICAgICAgICAgICBv
dXRwdXRCdXMtPnplcm8oKTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTMzNSw2ICszMzksMzQg
QEAgdm9pZCBBdWRpb0J1ZmZlclNvdXJjZU5vZGU6OnJlc2V0KCkKICAgICBtX2xhc3RHYWluID0g
Z2FpbigpLT52YWx1ZSgpOwogfQogCit2b2lkIEF1ZGlvQnVmZmVyU291cmNlTm9kZTo6ZmlyZUVu
ZGVkRXZlbnREaXNwYXRjaCh2b2lkICogdXNlckRhdGEpCit7CisgICAgQXVkaW9CdWZmZXJTb3Vy
Y2VOb2RlKiBqc0F1ZGlvTm9kZSA9IHN0YXRpY19jYXN0PEF1ZGlvQnVmZmVyU291cmNlTm9kZSo+
KHVzZXJEYXRhKTsKKyAgICBBU1NFUlQoanNBdWRpb05vZGUpOworICAgIGlmICghanNBdWRpb05v
ZGUpCisgICAgICAgIHJldHVybjsKKworICAgIGpzQXVkaW9Ob2RlLT5maXJlRW5kZWRFdmVudCgp
OworfQorCit2b2lkIEF1ZGlvQnVmZmVyU291cmNlTm9kZTo6ZmlyZUVuZGVkRXZlbnQoKQorewor
ICAgIC8vIEF2b2lkIGZpcmluZyB0aGUgZXZlbnQgaWYgdGhlIGRvY3VtZW50IGhhcyBhbHJlYWR5
IGdvbmUgYXdheS4KKyAgICBpZiAoY29udGV4dCgpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkp
IHsKKyAgICAgICAgZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5lbmRl
ZEV2ZW50LCBmYWxzZSwgZmFsc2UpKTsKKyAgICB9Cit9CisKK2NvbnN0IEF0b21pY1N0cmluZyYg
QXVkaW9CdWZmZXJTb3VyY2VOb2RlOjppbnRlcmZhY2VOYW1lKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gZXZlbnROYW1lcygpLmludGVyZmFjZUZvck9zY2lsbGF0b3JOb2RlOworfQorCitTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBBdWRpb0J1ZmZlclNvdXJjZU5vZGU6OnNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKSBjb25zdAoreworICAgIHJldHVybiBjb25zdF9jYXN0PEF1ZGlvQnVmZmVyU291cmNl
Tm9kZSo+KHRoaXMpLT5jb250ZXh0KCktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKK30KKwog
Ym9vbCBBdWRpb0J1ZmZlclNvdXJjZU5vZGU6OnNldEJ1ZmZlcihBdWRpb0J1ZmZlciogYnVmZmVy
KQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9kZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmgJKHJl
dmlzaW9uIDE0OTkyOCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9C
dWZmZXJTb3VyY2VOb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDggQEAKICNpbmNs
dWRlICJBdWRpb0J1cy5oIgogI2luY2x1ZGUgIkF1ZGlvUGFyYW0uaCIKICNpbmNsdWRlICJBdWRp
b1NjaGVkdWxlZFNvdXJjZU5vZGUuaCIKKyNpbmNsdWRlICJFdmVudExpc3RlbmVyLmgiCisjaW5j
bHVkZSAiRXZlbnRUYXJnZXQuaCIKICNpbmNsdWRlICJQYW5uZXJOb2RlLmgiCiAjaW5jbHVkZSA8
d3RmL093bkFycmF5UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KQEAgLTQyLDcg
KzQ0LDcgQEAgY2xhc3MgQXVkaW9Db250ZXh0OwogLy8gQXVkaW9CdWZmZXJTb3VyY2VOb2RlIGlz
IGFuIEF1ZGlvTm9kZSByZXByZXNlbnRpbmcgYW4gYXVkaW8gc291cmNlIGZyb20gYW4gaW4tbWVt
b3J5IGF1ZGlvIGFzc2V0IHJlcHJlc2VudGVkIGJ5IGFuIEF1ZGlvQnVmZmVyLgogLy8gSXQgZ2Vu
ZXJhbGx5IHdpbGwgYmUgdXNlZCBmb3Igc2hvcnQgc291bmRzIHdoaWNoIHJlcXVpcmUgYSBoaWdo
IGRlZ3JlZSBvZiBzY2hlZHVsaW5nIGZsZXhpYmlsaXR5IChjYW4gcGxheWJhY2sgaW4gcmh5dGht
aWNhbGx5IHBlcmZlY3Qgd2F5cykuCiAKLWNsYXNzIEF1ZGlvQnVmZmVyU291cmNlTm9kZSA6IHB1
YmxpYyBBdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGUgeworY2xhc3MgQXVkaW9CdWZmZXJTb3VyY2VO
b2RlIDogcHVibGljIEF1ZGlvU2NoZWR1bGVkU291cmNlTm9kZSwgcHVibGljIEV2ZW50VGFyZ2V0
IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxBdWRpb0J1ZmZlclNvdXJjZU5vZGU+
IGNyZWF0ZShBdWRpb0NvbnRleHQqLCBmbG9hdCBzYW1wbGVSYXRlKTsKIApAQCAtOTIsMTIgKzk0
LDI0IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFBhbm5lck5vZGUoUGFubmVyTm9kZSopOwogICAg
IHZvaWQgY2xlYXJQYW5uZXJOb2RlKCk7CiAKKyAgICAvLyBFdmVudFRhcmdldAorICAgIHZpcnR1
YWwgY29uc3QgQXRvbWljU3RyaW5nJiBpbnRlcmZhY2VOYW1lKCkgY29uc3Q7CisgICAgdmlydHVh
bCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3Q7
CisgICAgdmlydHVhbCBFdmVudFRhcmdldERhdGEqIGV2ZW50VGFyZ2V0RGF0YSgpIHsgcmV0dXJu
ICZtX2V2ZW50VGFyZ2V0RGF0YTsgfQorICAgIHZpcnR1YWwgRXZlbnRUYXJnZXREYXRhKiBlbnN1
cmVFdmVudFRhcmdldERhdGEoKSB7IHJldHVybiAmbV9ldmVudFRhcmdldERhdGE7IH0KKworICAg
IERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIoZW5kZWQpOworCiAgICAgLy8gSWYgd2Ug
YXJlIG5vIGxvbmdlciBwbGF5aW5nLCBwcm9wb2dhdGUgc2lsZW5jZSBhaGVhZCB0byBkb3duc3Ry
ZWFtIG5vZGVzLgogICAgIHZpcnR1YWwgYm9vbCBwcm9wYWdhdGVzU2lsZW5jZSgpIGNvbnN0Owog
CiAgICAgLy8gQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlCiAgICAgdmlydHVhbCB2b2lkIGZpbmlz
aCgpIE9WRVJSSURFOwogCisgICAgLy8gUmVjb25jaWxlIHJlZi9kZXJlZiB3aGljaCBhcmUgZGVm
aW5lZCBib3RoIGluIEF1ZGlvTm9kZSBhbmQgRXZlbnRUYXJnZXQuCisgICAgdXNpbmcgQXVkaW9O
b2RlOjpyZWY7CisgICAgdXNpbmcgQXVkaW9Ob2RlOjpkZXJlZjsKKwogcHJpdmF0ZToKICAgICBB
dWRpb0J1ZmZlclNvdXJjZU5vZGUoQXVkaW9Db250ZXh0KiwgZmxvYXQgc2FtcGxlUmF0ZSk7CiAK
QEAgLTEwNyw2ICsxMjEsMTMgQEAgcHJpdmF0ZToKICAgICAvLyBSZW5kZXIgc2lsZW5jZSBzdGFy
dGluZyBmcm9tICJpbmRleCIgZnJhbWUgaW4gQXVkaW9CdXMuCiAgICAgaW5saW5lIGJvb2wgcmVu
ZGVyU2lsZW5jZUFuZEZpbmlzaElmTm90TG9vcGluZyhBdWRpb0J1cyosIHVuc2lnbmVkIGluZGV4
LCBzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKTsKIAorICAgIHN0YXRpYyB2b2lkIGZpcmVFbmRlZEV2
ZW50RGlzcGF0Y2godm9pZCogdXNlckRhdGEpOworICAgIHZvaWQgZmlyZUVuZGVkRXZlbnQoKTsK
KworICAgIHZpcnR1YWwgdm9pZCByZWZFdmVudFRhcmdldCgpIHsgcmVmKCk7IH0KKyAgICB2aXJ0
dWFsIHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIHsgZGVyZWYoKTsgfQorICAgIEV2ZW50VGFyZ2V0
RGF0YSBtX2V2ZW50VGFyZ2V0RGF0YTsKKwogICAgIC8vIG1fYnVmZmVyIGhvbGRzIHRoZSBzYW1w
bGUgZGF0YSB3aGljaCB0aGlzIG5vZGUgb3V0cHV0cy4KICAgICBSZWZQdHI8QXVkaW9CdWZmZXI+
IG1fYnVmZmVyOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlv
QnVmZmVyU291cmNlTm9kZS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuaWRsCShyZXZpc2lvbiAxNDk5MjgpCisr
KyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9kZS5p
ZGwJKHdvcmtpbmcgY29weSkKQEAgLTI1LDcgKzI1LDkgQEAKIC8vIEEgY2FjaGVkIChub24tc3Ry
ZWFtZWQpLCBtZW1vcnktcmVzaWRlbnQgYXVkaW8gc291cmNlCiBbCiAgICAgQ29uZGl0aW9uYWw9
V0VCX0FVRElPLAotICAgIEpTR2VuZXJhdGVUb0pTT2JqZWN0CisgICAgSlNHZW5lcmF0ZVRvSlNP
YmplY3QsCisgICAgSlNHZW5lcmF0ZVRvTmF0aXZlT2JqZWN0LAorICAgIEV2ZW50VGFyZ2V0CiBd
IGludGVyZmFjZSBBdWRpb0J1ZmZlclNvdXJjZU5vZGUgOiBBdWRpb1NvdXJjZU5vZGUgewogICAg
IFtDdXN0b21TZXR0ZXJdIGF0dHJpYnV0ZSBBdWRpb0J1ZmZlciBidWZmZXIKICAgICAgICAgc2V0
dGVyIHJhaXNlcyAoRE9NRXhjZXB0aW9uKTsKQEAgLTU1LDQgKzU3LDYgQEAKICAgICBbQ29uZGl0
aW9uYWw9TEVHQUNZX1dFQl9BVURJT10gdm9pZCBub3RlT24oZG91YmxlIHdoZW4pOwogICAgIFtD
b25kaXRpb25hbD1MRUdBQ1lfV0VCX0FVRElPXSB2b2lkIG5vdGVHcmFpbk9uKGRvdWJsZSB3aGVu
LCBkb3VibGUgZ3JhaW5PZmZzZXQsIGRvdWJsZSBncmFpbkR1cmF0aW9uKTsKICAgICBbQ29uZGl0
aW9uYWw9TEVHQUNZX1dFQl9BVURJT10gdm9pZCBub3RlT2ZmKGRvdWJsZSB3aGVuKTsKKworICAg
IGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9uZW5kZWQ7CiB9OwpJbmRleDogU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9Pc2NpbGxhdG9yTm9kZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Pc2NpbGxhdG9yTm9kZS5jcHAJKHJldmlzaW9u
IDE0OTkyOCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT3NjaWxsYXRvck5v
ZGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiQXVkaW9D
b250ZXh0LmgiCiAjaW5jbHVkZSAiQXVkaW9Ob2RlT3V0cHV0LmgiCiAjaW5jbHVkZSAiQXVkaW9V
dGlsaXRpZXMuaCIKKyNpbmNsdWRlICJFdmVudC5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUu
aCIKICNpbmNsdWRlICJWZWN0b3JNYXRoLmgiCiAjaW5jbHVkZSAiV2F2ZVRhYmxlLmgiCkBAIC0y
NTEsNiArMjUyLDkgQEAgdm9pZCBPc2NpbGxhdG9yTm9kZTo6cHJvY2VzcyhzaXplX3QgZnJhbQog
CiAgICAgdXBkYXRlU2NoZWR1bGluZ0luZm8oZnJhbWVzVG9Qcm9jZXNzLCBvdXRwdXRCdXMsIHF1
YW50dW1GcmFtZU9mZnNldCwgbm9uU2lsZW50RnJhbWVzVG9Qcm9jZXNzKTsKIAorICAgIGlmICho
YXNGaW5pc2hlZCgpKQorICAgICAgICBjYWxsT25NYWluVGhyZWFkKGZpcmVFbmRlZEV2ZW50RGlz
cGF0Y2gsIHRoaXMpOworCiAgICAgaWYgKCFub25TaWxlbnRGcmFtZXNUb1Byb2Nlc3MpIHsKICAg
ICAgICAgb3V0cHV0QnVzLT56ZXJvKCk7CiAgICAgICAgIHJldHVybjsKQEAgLTMzMiw2ICszMzYs
MzQgQEAgdm9pZCBPc2NpbGxhdG9yTm9kZTo6cHJvY2VzcyhzaXplX3QgZnJhbQogICAgIG91dHB1
dEJ1cy0+Y2xlYXJTaWxlbnRGbGFnKCk7CiB9CiAKK3ZvaWQgT3NjaWxsYXRvck5vZGU6OmZpcmVF
bmRlZEV2ZW50RGlzcGF0Y2godm9pZCAqIHVzZXJEYXRhKQoreworICAgIE9zY2lsbGF0b3JOb2Rl
KiBqc0F1ZGlvTm9kZSA9IHN0YXRpY19jYXN0PE9zY2lsbGF0b3JOb2RlKj4odXNlckRhdGEpOwor
ICAgIEFTU0VSVChqc0F1ZGlvTm9kZSk7CisgICAgaWYgKCFqc0F1ZGlvTm9kZSkKKyAgICAgICAg
cmV0dXJuOworCisgICAganNBdWRpb05vZGUtPmZpcmVFbmRlZEV2ZW50KCk7Cit9CisKK3ZvaWQg
T3NjaWxsYXRvck5vZGU6OmZpcmVFbmRlZEV2ZW50KCkKK3sKKyAgICAvLyBBdm9pZCBmaXJpbmcg
dGhlIGV2ZW50IGlmIHRoZSBkb2N1bWVudCBoYXMgYWxyZWFkeSBnb25lIGF3YXkuCisgICAgaWYg
KGNvbnRleHQoKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKSB7CisgICAgICAgIGRpc3BhdGNo
RXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuZW5kZWRFdmVudCwgZmFsc2UsIGZhbHNl
KSk7CisgICAgfQorfQorCitjb25zdCBBdG9taWNTdHJpbmcmIE9zY2lsbGF0b3JOb2RlOjppbnRl
cmZhY2VOYW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZXZlbnROYW1lcygpLmludGVyZmFjZUZv
ck9zY2lsbGF0b3JOb2RlOworfQorCitTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBPc2NpbGxhdG9y
Tm9kZTo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGNvbnN0
X2Nhc3Q8T3NjaWxsYXRvck5vZGUqPih0aGlzKS0+Y29udGV4dCgpLT5zY3JpcHRFeGVjdXRpb25D
b250ZXh0KCk7Cit9CisKIHZvaWQgT3NjaWxsYXRvck5vZGU6OnJlc2V0KCkKIHsKICAgICBtX3Zp
cnR1YWxSZWFkSW5kZXggPSAwOwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9Pc2NpbGxhdG9yTm9kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vT3NjaWxsYXRvck5vZGUuaAkocmV2aXNpb24gMTQ5OTI4KQorKysgU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Pc2NpbGxhdG9yTm9kZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC0yOCw2ICsyOCw4IEBACiAjaW5jbHVkZSAiQXVkaW9CdXMuaCIKICNpbmNsdWRlICJBdWRpb1Bh
cmFtLmgiCiAjaW5jbHVkZSAiQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlLmgiCisjaW5jbHVkZSAi
RXZlbnRMaXN0ZW5lci5oIgorI2luY2x1ZGUgIkV2ZW50VGFyZ2V0LmgiCiAjaW5jbHVkZSA8d3Rm
L093bkFycmF5UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3
dGYvUmVmUHRyLmg+CkBAIC00MCw3ICs0Miw3IEBAIGNsYXNzIFdhdmVUYWJsZTsKIAogLy8gT3Nj
aWxsYXRvck5vZGUgaXMgYW4gYXVkaW8gZ2VuZXJhdG9yIG9mIHBlcmlvZGljIHdhdmVmb3Jtcy4K
IAotY2xhc3MgT3NjaWxsYXRvck5vZGUgOiBwdWJsaWMgQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2Rl
IHsKK2NsYXNzIE9zY2lsbGF0b3JOb2RlIDogcHVibGljIEF1ZGlvU2NoZWR1bGVkU291cmNlTm9k
ZSwgcHVibGljIEV2ZW50VGFyZ2V0IHsKIHB1YmxpYzoKICAgICAvLyBUaGUgd2F2ZWZvcm0gdHlw
ZS4KICAgICAvLyBUaGVzZSBtdXN0IGJlIGRlZmluZWQgYXMgaW4gdGhlIC5pZGwgZmlsZS4KQEAg
LTY1LDExICs2NywyMyBAQCBwdWJsaWM6CiAgICAgYm9vbCBzZXRUeXBlKHVuc2lnbmVkKTsgLy8g
UmV0dXJucyB0cnVlIG9uIHN1Y2Nlc3MuCiAgICAgdm9pZCBzZXRUeXBlKGNvbnN0IFN0cmluZyYp
OwogCisgICAgLy8gRXZlbnRUYXJnZXQKKyAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYg
aW50ZXJmYWNlTmFtZSgpIGNvbnN0OworICAgIHZpcnR1YWwgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0OworICAgIHZpcnR1YWwgRXZlbnRUYXJn
ZXREYXRhKiBldmVudFRhcmdldERhdGEoKSB7IHJldHVybiAmbV9ldmVudFRhcmdldERhdGE7IH0K
KyAgICB2aXJ0dWFsIEV2ZW50VGFyZ2V0RGF0YSogZW5zdXJlRXZlbnRUYXJnZXREYXRhKCkgeyBy
ZXR1cm4gJm1fZXZlbnRUYXJnZXREYXRhOyB9CisKKyAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5U
X0xJU1RFTkVSKGVuZGVkKTsKKwogICAgIEF1ZGlvUGFyYW0qIGZyZXF1ZW5jeSgpIHsgcmV0dXJu
IG1fZnJlcXVlbmN5LmdldCgpOyB9CiAgICAgQXVkaW9QYXJhbSogZGV0dW5lKCkgeyByZXR1cm4g
bV9kZXR1bmUuZ2V0KCk7IH0KIAogICAgIHZvaWQgc2V0V2F2ZVRhYmxlKFdhdmVUYWJsZSopOwog
CisgICAgLy8gUmVjb25jaWxlIHJlZi9kZXJlZiB3aGljaCBhcmUgZGVmaW5lZCBib3RoIGluIEF1
ZGlvTm9kZSBhbmQgRXZlbnRUYXJnZXQuCisgICAgdXNpbmcgQXVkaW9Ob2RlOjpyZWY7CisgICAg
dXNpbmcgQXVkaW9Ob2RlOjpkZXJlZjsKKwogcHJpdmF0ZToKICAgICBPc2NpbGxhdG9yTm9kZShB
dWRpb0NvbnRleHQqLCBmbG9hdCBzYW1wbGVSYXRlKTsKIApAQCAtNzgsNiArOTIsMTMgQEAgcHJp
dmF0ZToKIAogICAgIHZpcnR1YWwgYm9vbCBwcm9wYWdhdGVzU2lsZW5jZSgpIGNvbnN0IE9WRVJS
SURFOwogCisgICAgc3RhdGljIHZvaWQgZmlyZUVuZGVkRXZlbnREaXNwYXRjaCh2b2lkKiB1c2Vy
RGF0YSk7CisgICAgdm9pZCBmaXJlRW5kZWRFdmVudCgpOworCisgICAgdmlydHVhbCB2b2lkIHJl
ZkV2ZW50VGFyZ2V0KCkgeyByZWYoKTsgfQorICAgIHZpcnR1YWwgdm9pZCBkZXJlZkV2ZW50VGFy
Z2V0KCkgeyBkZXJlZigpOyB9CisgICAgRXZlbnRUYXJnZXREYXRhIG1fZXZlbnRUYXJnZXREYXRh
OworCiAgICAgLy8gT25lIG9mIHRoZSB3YXZlZm9ybSB0eXBlcyBkZWZpbmVkIGluIHRoZSBlbnVt
LgogICAgIHVuc2lnbmVkIHNob3J0IG1fdHlwZTsKICAgICAKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vT3NjaWxsYXRvck5vZGUuaWRsCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT3NjaWxsYXRvck5vZGUuaWRsCShyZXZpc2lvbiAx
NDk5MjgpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09zY2lsbGF0b3JOb2Rl
LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjUsNyArMjUsOSBAQAogLy8gT3NjaWxsYXRvck5vZGUg
aXMgYW4gYXVkaW8gZ2VuZXJhdG9yIG9mIHBlcmlvZGljIHdhdmVmb3Jtcy4KIFsKICAgICBDb25k
aXRpb25hbD1XRUJfQVVESU8sCi0gICAgSlNHZW5lcmF0ZVRvSlNPYmplY3QKKyAgICBKU0dlbmVy
YXRlVG9KU09iamVjdCwKKyAgICBKU0dlbmVyYXRlVG9OYXRpdmVPYmplY3QsCisgICAgRXZlbnRU
YXJnZXQKIF0gaW50ZXJmYWNlIE9zY2lsbGF0b3JOb2RlIDogQXVkaW9Tb3VyY2VOb2RlIHsKIAog
ICAgIC8vIFR5cGUgY29uc3RhbnRzLgpAQCAtNTYsNCArNTgsNSBAQAogCiAgICAgdm9pZCBzZXRX
YXZlVGFibGUoV2F2ZVRhYmxlIHdhdmVUYWJsZSk7CiAKKyAgICBhdHRyaWJ1dGUgRXZlbnRMaXN0
ZW5lciBvbmVuZGVkOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5oCShyZXZpc2lv
biAxNDk5MjgpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuaAkod29ya2luZyBj
b3B5KQpAQCAtNDAsNDIgKzQwLDQ0IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotICAgIGNs
YXNzIEF1ZGlvQ29udGV4dDsKLSAgICBjbGFzcyBBdWRpb1RyYWNrTGlzdDsKLSAgICBjbGFzcyBE
ZWRpY2F0ZWRXb3JrZXJDb250ZXh0OwotICAgIGNsYXNzIERPTUFwcGxpY2F0aW9uQ2FjaGU7Ci0g
ICAgY2xhc3MgRE9NV2luZG93OwotICAgIGNsYXNzIEV2ZW50OwotICAgIGNsYXNzIEV2ZW50TGlz
dGVuZXI7Ci0gICAgY2xhc3MgRXZlbnRTb3VyY2U7Ci0gICAgY2xhc3MgRmlsZVJlYWRlcjsKLSAg
ICBjbGFzcyBGaWxlV3JpdGVyOwotICAgIGNsYXNzIElEQkRhdGFiYXNlOwotICAgIGNsYXNzIElE
QlJlcXVlc3Q7Ci0gICAgY2xhc3MgSURCVHJhbnNhY3Rpb247Ci0gICAgY2xhc3MgU2NyaXB0UHJv
Y2Vzc29yTm9kZTsKLSAgICBjbGFzcyBMb2NhbE1lZGlhU3RyZWFtOwotICAgIGNsYXNzIE1lZGlh
Q29udHJvbGxlcjsKLSAgICBjbGFzcyBNZWRpYVNvdXJjZTsKLSAgICBjbGFzcyBNZWRpYVN0cmVh
bTsKLSAgICBjbGFzcyBNZXNzYWdlUG9ydDsKLSAgICBjbGFzcyBOb2RlOwotICAgIGNsYXNzIE5v
dGlmaWNhdGlvbjsKLSAgICBjbGFzcyBTVkdFbGVtZW50SW5zdGFuY2U7Ci0gICAgY2xhc3MgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dDsKLSAgICBjbGFzcyBTaGFyZWRXb3JrZXI7Ci0gICAgY2xhc3Mg
U2hhcmVkV29ya2VyQ29udGV4dDsKLSAgICBjbGFzcyBTb3VyY2VCdWZmZXJMaXN0OwotICAgIGNs
YXNzIFRleHRUcmFjazsKLSAgICBjbGFzcyBUZXh0VHJhY2tDdWU7Ci0gICAgY2xhc3MgVmlkZW9U
cmFja0xpc3Q7Ci0gICAgY2xhc3MgV2ViU29ja2V0OwotICAgIGNsYXNzIFdlYktpdE5hbWVkRmxv
dzsKLSAgICBjbGFzcyBXb3JrZXI7Ci0gICAgY2xhc3MgWE1MSHR0cFJlcXVlc3Q7Ci0gICAgY2xh
c3MgWE1MSHR0cFJlcXVlc3RVcGxvYWQ7CitjbGFzcyBBdWRpb0J1ZmZlclNvdXJjZU5vZGU7Citj
bGFzcyBBdWRpb0NvbnRleHQ7CitjbGFzcyBBdWRpb1RyYWNrTGlzdDsKK2NsYXNzIERlZGljYXRl
ZFdvcmtlckNvbnRleHQ7CitjbGFzcyBET01BcHBsaWNhdGlvbkNhY2hlOworY2xhc3MgRE9NV2lu
ZG93OworY2xhc3MgRXZlbnQ7CitjbGFzcyBFdmVudExpc3RlbmVyOworY2xhc3MgRXZlbnRTb3Vy
Y2U7CitjbGFzcyBGaWxlUmVhZGVyOworY2xhc3MgRmlsZVdyaXRlcjsKK2NsYXNzIElEQkRhdGFi
YXNlOworY2xhc3MgSURCUmVxdWVzdDsKK2NsYXNzIElEQlRyYW5zYWN0aW9uOworY2xhc3MgTG9j
YWxNZWRpYVN0cmVhbTsKK2NsYXNzIE1lZGlhQ29udHJvbGxlcjsKK2NsYXNzIE1lZGlhU291cmNl
OworY2xhc3MgTWVkaWFTdHJlYW07CitjbGFzcyBNZXNzYWdlUG9ydDsKK2NsYXNzIE5vZGU7Citj
bGFzcyBOb3RpZmljYXRpb247CitjbGFzcyBPc2NpbGxhdG9yTm9kZTsKK2NsYXNzIFNjcmlwdFBy
b2Nlc3Nvck5vZGU7CitjbGFzcyBTVkdFbGVtZW50SW5zdGFuY2U7CitjbGFzcyBTY3JpcHRFeGVj
dXRpb25Db250ZXh0OworY2xhc3MgU2hhcmVkV29ya2VyOworY2xhc3MgU2hhcmVkV29ya2VyQ29u
dGV4dDsKK2NsYXNzIFNvdXJjZUJ1ZmZlckxpc3Q7CitjbGFzcyBUZXh0VHJhY2s7CitjbGFzcyBU
ZXh0VHJhY2tDdWU7CitjbGFzcyBWaWRlb1RyYWNrTGlzdDsKK2NsYXNzIFdlYlNvY2tldDsKK2Ns
YXNzIFdlYktpdE5hbWVkRmxvdzsKK2NsYXNzIFdvcmtlcjsKK2NsYXNzIFhNTEh0dHBSZXF1ZXN0
OworY2xhc3MgWE1MSHR0cFJlcXVlc3RVcGxvYWQ7CiAKLSAgICB0eXBlZGVmIGludCBFeGNlcHRp
b25Db2RlOwordHlwZWRlZiBpbnQgRXhjZXB0aW9uQ29kZTsKIAogICAgIHN0cnVjdCBGaXJpbmdF
dmVudEl0ZXJhdG9yIHsKICAgICAgICAgRmlyaW5nRXZlbnRJdGVyYXRvcihjb25zdCBBdG9taWNT
dHJpbmcmIGV2ZW50VHlwZSwgc2l6ZV90JiBpdGVyYXRvciwgc2l6ZV90JiBlbmQpCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXRGYWN0b3J5LmluCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldEZhY3RvcnkuaW4JKHJldmlzaW9uIDE0OTkyOCkK
KysrIFNvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldEZhY3RvcnkuaW4JKHdvcmtpbmcgY29w
eSkKQEAgLTEsNSArMSw2IEBACiBuYW1lc3BhY2U9IkV2ZW50VGFyZ2V0IgogCitBdWRpb0J1ZmZl
clNvdXJjZU5vZGUgY29uZGl0aW9uYWw9V0VCX0FVRElPCiBBdWRpb0NvbnRleHQgY29uZGl0aW9u
YWw9V0VCX0FVRElPCiBBdWRpb1RyYWNrTGlzdCBjb25kaXRpb25hbD1WSURFT19UUkFDSwogQmF0
dGVyeU1hbmFnZXIgY29uZGl0aW9uYWw9QkFUVEVSWV9TVEFUVVMKQEAgLTE0LDcgKzE1LDYgQEAg
SURCRGF0YWJhc2UgY29uZGl0aW9uYWw9SU5ERVhFRF9EQVRBQkFTRQogSURCT3BlbkRCUmVxdWVz
dCBjb25kaXRpb25hbD1JTkRFWEVEX0RBVEFCQVNFCiBJREJSZXF1ZXN0IGNvbmRpdGlvbmFsPUlO
REVYRURfREFUQUJBU0UKIElEQlRyYW5zYWN0aW9uIGNvbmRpdGlvbmFsPUlOREVYRURfREFUQUJB
U0UKLVNjcmlwdFByb2Nlc3Nvck5vZGUgY29uZGl0aW9uYWw9V0VCX0FVRElPCiBMb2NhbE1lZGlh
U3RyZWFtIGNvbmRpdGlvbmFsPU1FRElBX1NUUkVBTQogTWVkaWFLZXlTZXNzaW9uIGNvbmRpdGlv
bmFsPUVOQ1JZUFRFRF9NRURJQV9WMgogTWVkaWFDb250cm9sbGVyIGNvbmRpdGlvbmFsPVZJREVP
CkBAIC0yNSwxMCArMjUsMTIgQEAgTWVzc2FnZVBvcnQKIE5ldHdvcmtJbmZvQ29ubmVjdGlvbiBj
b25kaXRpb25hbD1ORVRXT1JLX0lORk8KIE5vZGUKIE5vdGlmaWNhdGlvbiBjb25kaXRpb25hbD1O
T1RJRklDQVRJT05TfExFR0FDWV9OT1RJRklDQVRJT05TCitPc2NpbGxhdG9yTm9kZSBjb25kaXRp
b25hbD1XRUJfQVVESU8KIFBlcmZvcm1hbmNlIGNvbmRpdGlvbmFsPVdFQl9USU1JTkd8V0VCX1RJ
TUlOR19NSU5JTUFMCiBSVENEYXRhQ2hhbm5lbCBjb25kaXRpb25hbD1NRURJQV9TVFJFQU0KIFJU
Q0RUTUZTZW5kZXIgY29uZGl0aW9uYWw9TUVESUFfU1RSRUFNCiBSVENQZWVyQ29ubmVjdGlvbiBj
b25kaXRpb25hbD1NRURJQV9TVFJFQU0KK1NjcmlwdFByb2Nlc3Nvck5vZGUgY29uZGl0aW9uYWw9
V0VCX0FVRElPCiBTaGFyZWRXb3JrZXIgY29uZGl0aW9uYWw9U0hBUkVEX1dPUktFUlMKIFNoYXJl
ZFdvcmtlckNvbnRleHQgY29uZGl0aW9uYWw9U0hBUkVEX1dPUktFUlMKIFNvdXJjZUJ1ZmZlckxp
c3QgY29uZGl0aW9uYWw9TUVESUFfU09VUkNFCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxNDk5MjgpCisr
KyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNSBAQAor
MjAxMy0wNS0xMSAgUHJhdmVlbiBSIEphZGhhdiAgPHByYXZlZW4uakBzYW1zdW5nLmNvbT4KKwor
ICAgICAgICBJbXBsZW1lbnQgLm9uZW5kZWQgZXZlbnQgbGlzdGVuZXIgZm9yIEF1ZGlvQnVmZmVy
U291cmNlTm9kZSBhbmQgT3NjaWxsYXRvck5vZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTExNTk1NQorCisgICAgICAgIFRlc3RzIG9uZW5kZWQgZXZl
bnQgcmVjZWl2ZWQgd2hlbiBBdWRpb0J1ZmZlclNvdXJjZU5vZGUgaXMgZmluaXNoZWQuCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3ZWJhdWRpby9h
dWRpb2J1ZmZlcnNvdXJjZS1zdG9wLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogd2Vi
YXVkaW8vYXVkaW9idWZmZXJzb3VyY2Utc3RvcC5odG1sOiBBZGRlZC4KKwogMjAxMy0wNS0xMCAg
QWxleGV5IFByb3NrdXJ5YWtvdiAgPGFwQGFwcGxlLmNvbT4KIAogICAgICAgICA8cmRhcjovL3By
b2JsZW0vMTM2NjY0MTI+IENsZWFuIHVwIHNvbWUgZWRnZSBjYXNlcyBvZiBVUkwgcGFyc2luZy4K
SW5kZXg6IExheW91dFRlc3RzL3dlYmF1ZGlvL2F1ZGlvYnVmZmVyc291cmNlLXN0b3AtZXhwZWN0
ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3dlYmF1ZGlvL2F1ZGlvYnVmZmVyc291
cmNlLXN0b3AtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvd2ViYXVk
aW8vYXVkaW9idWZmZXJzb3VyY2Utc3RvcC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsMTAgQEAKK1Rlc3RzIEF1ZGlvQnVmZmVyU291cmNlTm9kZSBzdG9wKCkgcmV0dXJucyAu
b25lbmRlZCBldmVudCBsaXN0ZW5lci4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2Vy
aWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisK
K1BBU1Mgb25lbmRlZCBldmVudCByZWNlaXZlZCBmb3IgQXVkaW9CdWZmZXJTb3VyY2VOb2RlLgor
UEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5kZXg6
IExheW91dFRlc3RzL3dlYmF1ZGlvL2F1ZGlvYnVmZmVyc291cmNlLXN0b3AuaHRtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy93ZWJhdWRpby9hdWRpb2J1ZmZlcnNvdXJjZS1zdG9wLmh0bWwJ
KHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy93ZWJhdWRpby9hdWRpb2J1ZmZlcnNvdXJjZS1z
dG9wLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTIgQEAKKzwhRE9DVFlQRSBodG1sPgor
Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0icmVz
b3VyY2VzL2F1ZGlvLXRlc3RpbmcuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2Zhc3Qv
anMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKworPGJvZHk+
CisKKzxzY3JpcHQ+CitkZXNjcmlwdGlvbigiVGVzdHMgQXVkaW9CdWZmZXJTb3VyY2VOb2RlIHN0
b3AoKSByZXR1cm5zIC5vbmVuZGVkIGV2ZW50IGxpc3RlbmVyLiIpOworCit2YXIgc2FtcGxlUmF0
ZSA9IDQ0MTAwOwordmFyIHJlbmRlckxlbmd0aEluRnJhbWVzID0gNTEyOwordmFyIGNoYW5uZWxz
ID0gMjsKKworZnVuY3Rpb24gc291cmNlRW5kZWQoKSB7CisgICAgdGVzdFBhc3NlZCgib25lbmRl
ZCBldmVudCByZWNlaXZlZCBmb3IgQXVkaW9CdWZmZXJTb3VyY2VOb2RlLiIpOworfQorCitmdW5j
dGlvbiBydW5UZXN0KCkgeworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgICB0
ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25l
KCk7CisgICAgfQorCisgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgLy8g
Q3JlYXRlIG9mZmxpbmUgYXVkaW8gY29udGV4dC4KKyAgICB2YXIgY29udGV4dCA9IG5ldyB3ZWJr
aXRPZmZsaW5lQXVkaW9Db250ZXh0KGNoYW5uZWxzLCByZW5kZXJMZW5ndGhJbkZyYW1lcywgc2Ft
cGxlUmF0ZSk7CisKKyAgICB2YXIgc291cmNlID0gY29udGV4dC5jcmVhdGVCdWZmZXJTb3VyY2Uo
KTsKKworICAgIHNvdXJjZS5jb25uZWN0KGNvbnRleHQuZGVzdGluYXRpb24pOworICAgIHNvdXJj
ZS5idWZmZXIgPSBjb250ZXh0LmNyZWF0ZUJ1ZmZlcihjaGFubmVscywgcmVuZGVyTGVuZ3RoSW5G
cmFtZXMsIHNhbXBsZVJhdGUpOworICAgIHNvdXJjZS5vbmVuZGVkID0gc291cmNlRW5kZWQ7CisK
KyAgICBzb3VyY2Uuc3RhcnQoMCk7CisgICAgc291cmNlLnN0b3AoMCk7CisKKyAgICBjb250ZXh0
Lm9uY29tcGxldGUgPSBmaW5pc2hKU1Rlc3Q7CisgICAgY29udGV4dC5zdGFydFJlbmRlcmluZygp
OworfQorCitydW5UZXN0KCk7CisKKzwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vZmFzdC9q
cy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>
<flag name="review"
          id="222778"
          type_id="1"
          status="-"
          setter="crogers"
    />
          </attachment>
      

    </bug>

</bugzilla>