<?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>113121</bug_id>
          
          <creation_ts>2013-03-22 17:33:31 -0700</creation_ts>
          <short_desc>AudioNode should be an EventTarget</short_desc>
          <delta_ts>2015-09-07 13:24:20 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Audio</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>
          
          <blocked>113274</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="Russell McClellan">russell.mcclellan</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>ap</cc>
    
    <cc>crogers</cc>
    
    <cc>dominicc</cc>
    
    <cc>ehsan</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>feature-media-reviews</cc>
    
    <cc>haraken</cc>
    
    <cc>jer.noble</cc>
    
    <cc>kling</cc>
    
    <cc>ojan.autocc</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>862025</commentid>
    <comment_count>0</comment_count>
    <who name="Russell McClellan">russell.mcclellan</who>
    <bug_when>2013-03-22 17:33:31 -0700</bug_when>
    <thetext>Recently the w3 web audio group decided to make AudioNode an EventTarget

https://dvcs.w3.org/hg/audio/raw-file/tip/webaudio/specification.html#AudioNode-section

In the discussion for https://bugs.webkit.org/show_bug.cgi?id=112521, it was decided to convert AudioNode into an EventTarget before we&apos;d fix that issue, as all AudioNode wrappers shouldn&apos;t be garbage collected if they have active audio connections if events can be triggered from the C++ side (as one would expect).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>862061</commentid>
    <comment_count>1</comment_count>
      <attachid>194677</attachid>
    <who name="Russell McClellan">russell.mcclellan</who>
    <bug_when>2013-03-22 18:22:49 -0700</bug_when>
    <thetext>Created attachment 194677
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>862065</commentid>
    <comment_count>2</comment_count>
    <who name="Russell McClellan">russell.mcclellan</who>
    <bug_when>2013-03-22 18:29:23 -0700</bug_when>
    <thetext>There was some discussion here [1] about whether or not ActiveDOMObject was the right way to go on this.  The other obvious option would be a custom binding.  I don&apos;t feel strongly either way, but my first patch rejected my first patch for [2] because I used a custom binding.

It is true there&apos;s precedence for using ActiveDOMObject only for its GC benefits (e.g. DatabaseContext, AudioContext, MediaSource), so I don&apos;t know if this is the place to change strategies.  Maybe at some point it would be good to split out the GC meaning of ActiveDOMObject from the suspendable meaning.

The only perhaps questionable part of this patch is calling suspendIfNeeded directly from the AudioNode constructor.  This fixes some asserts and I don&apos;t think this is a big deal, and we can change it if we ever need suspend behavior from AudioNodes.  It seems silly to add a suspendIfNeeded call to every create function in the hierarchy, when the call doesn&apos;t do anything.

[1]: https://bugs.webkit.org/show_bug.cgi?id=112858
[2]: https://bugs.webkit.org/show_bug.cgi?id=112521</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>867262</commentid>
    <comment_count>3</comment_count>
    <who name="Chris Rogers">crogers</who>
    <bug_when>2013-04-01 12:01:28 -0700</bug_when>
    <thetext>Dominic, could you please have a look regarding the EventTarget changes?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1124159</commentid>
    <comment_count>4</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2015-09-07 13:24:01 -0700</bug_when>
    <thetext>Looks like this was merged back from Blink in bug 116871.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>194677</attachid>
            <date>2013-03-22 18:22:49 -0700</date>
            <delta_ts>2015-09-07 13:24:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-113121-20130322211831.patch</filename>
            <type>text/plain</type>
            <size>16466</size>
            <attacher name="Russell McClellan">russell.mcclellan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0NjY5MikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQxIEBACisyMDEzLTAzLTIyICBSdXNzZWxs
IE1jQ2xlbGxhbiAgPHJ1c3NlbGwubWNjbGVsbGFuQGdtYWlsLmNvbT4KKworICAgICAgICBBdWRp
b05vZGUgc2hvdWxkIGJlIGFuIEV2ZW50VGFyZ2V0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTMxMjEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0czogd2ViYXVkaW8vYXVkaW9ub2RlLmh0bWwKKyAg
ICAgICAgICAgICAgIHdlYmF1ZGlvL2phdmFzY3JpcHRub2RlLmh0bWwKKworICAgICAgICBUaGUg
V2ViQXVkaW8gc3RhbmRhcmRzIHRlYW0gcmVjZW50bHkgZWRpdGVkIHRoZSBzcGVjWzFdIHRvIG1h
a2UgQXVkaW9Ob2RlCisgICAgICAgIGFuIEV2ZW50VGFyZ2V0WzFdLiAgQWRkaXRpb25hbGx5LCB3
ZSBhZGQgYW4gQWN0aXZlRE9NT2JqZWN0IG1peC1pbiB0byBBdWRpb05vZGUKKyAgICAgICAgdG8g
cHJldmVudCBHQyBmcm9tIGRlbGV0aW5nIHRoZSBiaW5kaW5ncyBvZiBBdWRpb05vZGVzIHdoaWxl
IHRoZSBuYXRpdmUgc2lkZSBvYmplY3RzCisgICAgICAgIGhhdmUgYWN0aXZlIGF1ZGlvIGNvbm5l
Y3Rpb25zLiAgV2UgbmVlZCB0byBkbyB0aGlzIGJlY2F1c2UgZXZlbnRzIG1heSBiZSB0cmlnZ2Vy
ZWQKKyAgICAgICAgZnJvbSB0aGUgbmF0aXZlIG9iamVjdHMuCisKKyAgICAgICAgWzFdOiBodHRw
czovL2R2Y3MudzMub3JnL2hnL2F1ZGlvL3Jhdy1maWxlL3RpcC93ZWJhdWRpby9zcGVjaWZpY2F0
aW9uLmh0bWwjQXVkaW9Ob2RlLXNlY3Rpb24KKworICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8v
QXVkaW9Ob2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvTm9kZTo6QXVkaW9Ob2RlKTog
QXVkaW9Ob2RlIGlzIGFuIEFjdGl2ZURPTU9iamVjdAorICAgICAgICAoV2ViQ29yZTo6QXVkaW9O
b2RlOjppbnRlcmZhY2VOYW1lKTogRXZlbnRUYXJnZXQgaW50ZXJmYWNlCisgICAgICAgIChXZWJD
b3JlOjpBdWRpb05vZGU6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOiBFdmVudFRhcmdldCBpbnRl
cmZhY2UKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvTm9kZTo6aGFzUGVuZGluZ0FjdGl2aXR5KTog
QWN0aXZlRE9NT2JqZWN0IGludGVyZmFjZSAtIGRvbid0CisgICAgICAgIGdhcmJhZ2UgY29sbGVj
dCBBdWRpb05vZGUgYmluZGluZyB3aGVuIHRoZWlyIG5hdGl2ZSBvamJlY3QgaGF2ZSBhY3RpdmUg
YXVkaW8gY29ubmVjdGlvbnMuCisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb05vZGUu
aDoKKyAgICAgICAgKEF1ZGlvTm9kZSk6IEF1ZGlvTm9kZSBpcyBhbiBFdmVudFRhcmdldCBhbmQg
YW4gQWN0aXZlRE9NT2JqZWN0CisgICAgICAgIChXZWJDb3JlOjpBdWRpb05vZGU6OmV2ZW50VGFy
Z2V0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb05vZGU6OmVuc3VyZUV2ZW50VGFyZ2V0
RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb05vZGU6OnJlZkV2ZW50VGFyZ2V0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkF1ZGlvTm9kZTo6ZGVyZWZFdmVudFRhcmdldCk6CisgICAgICAgICog
TW9kdWxlcy93ZWJhdWRpby9BdWRpb05vZGUuaWRsOiBBZGQgdGhlIEV2ZW50VGFyZ2V0IG1peGlu
LgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlLmg6
CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9TY3JpcHRQcm9jZXNzb3JOb2RlLmNwcDogcmVt
b3ZlZCBFdmVudFRhcmdldCBpbnRlcmZhY2UgYXMgdGhpcworICAgICAgICBpcyBub3cgaGFuZGxl
ZCBieSBBdWRpb05vZGUKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL1NjcmlwdFByb2Nlc3Nv
ck5vZGUuaDogcmVtb3ZlZCBFdmVudFRhcmdldAorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8v
U2NyaXB0UHJvY2Vzc29yTm9kZS5pZGw6IHJlbW92ZWQgRXZlbnRUYXJnZXQKKyAgICAgICAgKiBk
b20vRXZlbnRUYXJnZXRGYWN0b3J5LmluOiBBdWRpb05vZGUgbm93IGlzIGFuIGV2ZW50IHRhcmdl
dCBpbnRlcmZhY2UuCisKIDIwMTMtMDMtMjIgIFJvZ2VyIEZvbmcgIDxyb2dlcl9mb25nQGFwcGxl
LmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLiBGaXggQXBwbGVXaW4gcG9ydCBmb2xsb3dpbmcg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMzEwMC4KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2RlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTm9kZS5jcHAJKHJldmlzaW9u
IDE0NjY4NSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2RlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNDUsNyArNDUsOCBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBBdWRpb05vZGU6OkF1ZGlvTm9kZShBdWRpb0NvbnRleHQqIGNvbnRleHQsIGZsb2F0IHNhbXBs
ZVJhdGUpCi0gICAgOiBtX2lzSW5pdGlhbGl6ZWQoZmFsc2UpCisgICAgOiBBY3RpdmVET01PYmpl
Y3QoY29udGV4dC0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKQorICAgICwgbV9pc0luaXRpYWxp
emVkKGZhbHNlKQogICAgICwgbV9ub2RlVHlwZShOb2RlVHlwZVVua25vd24pCiAgICAgLCBtX2Nv
bnRleHQoY29udGV4dCkKICAgICAsIG1fc2FtcGxlUmF0ZShzYW1wbGVSYXRlKQpAQCAtNjUsNiAr
NjYsMTEgQEAgQXVkaW9Ob2RlOjpBdWRpb05vZGUoQXVkaW9Db250ZXh0KiBjb250ZQogICAgICAg
ICBhdGV4aXQoQXVkaW9Ob2RlOjpwcmludE5vZGVDb3VudHMpOwogICAgIH0KICNlbmRpZgorCisg
ICAgLy8gc2luY2Ugd2UncmUganVzdCB1c2luZyB0aGUgQWN0aXZlRE9NT2JqZWN0IGluc3RhbmNl
IGZvciBHQywKKyAgICAvLyB3ZSBjYW4gc3VzcGVuZElmTmVlZGVkIGhlcmUuIHN1c3BlbmRJZk5l
ZWRlZCBuZWVkcyB0byBiZSBjYWxsZWQKKyAgICAvLyBhdCBzb21lIHBvaW50IG9uIGV2ZXJ5IEFj
dGl2ZURPTU9iamVjdC4KKyAgICBzdXNwZW5kSWZOZWVkZWQoKTsKIH0KIAogQXVkaW9Ob2RlOjp+
QXVkaW9Ob2RlKCkKQEAgLTI4MSw2ICsyODcsMjIgQEAgdm9pZCBBdWRpb05vZGU6OnVwZGF0ZUNo
YW5uZWxzRm9ySW5wdXRzKAogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2lucHV0cy5z
aXplKCk7ICsraSkKICAgICAgICAgaW5wdXQoaSktPmNoYW5nZWRPdXRwdXRzKCk7CiB9CisgICAg
Citjb25zdCBBdG9taWNTdHJpbmcmIEF1ZGlvTm9kZTo6aW50ZXJmYWNlTmFtZSgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIGV2ZW50TmFtZXMoKS5pbnRlcmZhY2VGb3JBdWRpb05vZGU7Cit9CisKK1Nj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIEF1ZGlvTm9kZTo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
IGNvbnN0Cit7CisgICAgcmV0dXJuIGNvbnN0X2Nhc3Q8QXVkaW9Ob2RlKj4odGhpcyktPmNvbnRl
eHQoKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOworfQorICAgIAorICAgIAorYm9vbCBBdWRp
b05vZGU6Omhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0Cit7CisgICAgcmV0dXJuICFtX2lzRGlz
YWJsZWQgJiYgKG1fY29ubmVjdGlvblJlZkNvdW50ID4gMCk7Cit9CiAKIHZvaWQgQXVkaW9Ob2Rl
Ojpwcm9jZXNzSWZOZWNlc3Nhcnkoc2l6ZV90IGZyYW1lc1RvUHJvY2VzcykKIHsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2RlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb05vZGUuaAkocmV2aXNpb24gMTQ2
Njg1KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb05vZGUuaAkod29y
a2luZyBjb3B5KQpAQCAtMjUsNyArMjUsOSBAQAogI2lmbmRlZiBBdWRpb05vZGVfaAogI2RlZmlu
ZSBBdWRpb05vZGVfaAogCisjaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCiAjaW5jbHVkZSAi
QXVkaW9CdXMuaCIKKyNpbmNsdWRlICJFdmVudFRhcmdldC5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3
YXJkLmg+CiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRy
Lmg+CkBAIC00OSw3ICs1MSw3IEBAIHR5cGVkZWYgaW50IEV4Y2VwdGlvbkNvZGU7CiAvLyBBbiBB
dWRpb0Rlc3RpbmF0aW9uTm9kZSBoYXMgb25lIGlucHV0IGFuZCBubyBvdXRwdXRzIGFuZCByZXBy
ZXNlbnRzIHRoZSBmaW5hbCBkZXN0aW5hdGlvbiB0byB0aGUgYXVkaW8gaGFyZHdhcmUuCiAvLyBN
b3N0IHByb2Nlc3Npbmcgbm9kZXMgc3VjaCBhcyBmaWx0ZXJzIHdpbGwgaGF2ZSBvbmUgaW5wdXQg
YW5kIG9uZSBvdXRwdXQsIGFsdGhvdWdoIG11bHRpcGxlIGlucHV0cyBhbmQgb3V0cHV0cyBhcmUg
cG9zc2libGUuCiAKLWNsYXNzIEF1ZGlvTm9kZSB7CitjbGFzcyBBdWRpb05vZGUgOiBwdWJsaWMg
QWN0aXZlRE9NT2JqZWN0LCBwdWJsaWMgRXZlbnRUYXJnZXQgewogcHVibGljOgogICAgIGVudW0g
eyBQcm9jZXNzaW5nU2l6ZUluRnJhbWVzID0gMTI4IH07CiAKQEAgLTE4MCw2ICsxODIsMTUgQEAg
cHVibGljOgogICAgIENoYW5uZWxDb3VudE1vZGUgaW50ZXJuYWxDaGFubmVsQ291bnRNb2RlKCkg
Y29uc3QgeyByZXR1cm4gbV9jaGFubmVsQ291bnRNb2RlOyB9CiAgICAgQXVkaW9CdXM6OkNoYW5u
ZWxJbnRlcnByZXRhdGlvbiBpbnRlcm5hbENoYW5uZWxJbnRlcnByZXRhdGlvbigpIGNvbnN0IHsg
cmV0dXJuIG1fY2hhbm5lbEludGVycHJldGF0aW9uOyB9CiAKKyAgICAvLyBFdmVudFRhcmdldAor
ICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBpbnRlcmZhY2VOYW1lKCkgY29uc3Q7Cisg
ICAgdmlydHVhbCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0
KCkgY29uc3Q7CisgICAgdmlydHVhbCBFdmVudFRhcmdldERhdGEqIGV2ZW50VGFyZ2V0RGF0YSgp
IHsgcmV0dXJuICZtX2V2ZW50VGFyZ2V0RGF0YTsgfQorICAgIHZpcnR1YWwgRXZlbnRUYXJnZXRE
YXRhKiBlbnN1cmVFdmVudFRhcmdldERhdGEoKSAgeyByZXR1cm4gJm1fZXZlbnRUYXJnZXREYXRh
OyB9CisgICAgCisgICAgLy8gQWN0aXZlRE9NT2JqZWN0CisgICAgdmlydHVhbCBib29sIGhhc1Bl
bmRpbmdBY3Rpdml0eSgpIGNvbnN0IE9WRVJSSURFOworICAgIAogcHJvdGVjdGVkOgogICAgIC8v
IElucHV0cyBhbmQgb3V0cHV0cyBtdXN0IGJlIGNyZWF0ZWQgYmVmb3JlIHRoZSBBdWRpb05vZGUg
aXMgaW5pdGlhbGl6ZWQuCiAgICAgdm9pZCBhZGRJbnB1dChQYXNzT3duUHRyPEF1ZGlvTm9kZUlu
cHV0Pik7CkBAIC0yMDEsNiArMjEyLDggQEAgcHJpdmF0ZToKICAgICBWZWN0b3I8T3duUHRyPEF1
ZGlvTm9kZUlucHV0PiA+IG1faW5wdXRzOwogICAgIFZlY3RvcjxPd25QdHI8QXVkaW9Ob2RlT3V0
cHV0PiA+IG1fb3V0cHV0czsKIAorICAgIEV2ZW50VGFyZ2V0RGF0YSBtX2V2ZW50VGFyZ2V0RGF0
YTsKKyAgICAKICAgICBkb3VibGUgbV9sYXN0UHJvY2Vzc2luZ1RpbWU7CiAgICAgZG91YmxlIG1f
bGFzdE5vblNpbGVudFRpbWU7CiAKQEAgLTIxNiw3ICsyMjksMTEgQEAgcHJpdmF0ZToKICAgICBz
dGF0aWMgaW50IHNfbm9kZUNvdW50W05vZGVUeXBlRW5kXTsKICNlbmRpZgogCisgICAgdmlydHVh
bCB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkgeyByZWYoKTsgfQorICAgIHZpcnR1YWwgdm9pZCBkZXJl
ZkV2ZW50VGFyZ2V0KCkgeyBkZXJlZigpOyB9CisgICAgCiBwcm90ZWN0ZWQ6CisgICAgCiAgICAg
dW5zaWduZWQgbV9jaGFubmVsQ291bnQ7CiAgICAgQ2hhbm5lbENvdW50TW9kZSBtX2NoYW5uZWxD
b3VudE1vZGU7CiAgICAgQXVkaW9CdXM6OkNoYW5uZWxJbnRlcnByZXRhdGlvbiBtX2NoYW5uZWxJ
bnRlcnByZXRhdGlvbjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVk
aW9Ob2RlLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L0F1ZGlvTm9kZS5pZGwJKHJldmlzaW9uIDE0NjY4NSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vQXVkaW9Ob2RlLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjMsNyArMjMsOSBA
QAogICovCiAKIFsKLSAgICBDb25kaXRpb25hbD1XRUJfQVVESU8KKyAgICBDb25kaXRpb25hbD1X
RUJfQVVESU8sCisgICAgQWN0aXZlRE9NT2JqZWN0LAorICAgIEV2ZW50VGFyZ2V0CiBdIGludGVy
ZmFjZSBBdWRpb05vZGUgewogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBBdWRpb0NvbnRleHQgY29u
dGV4dDsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBudW1iZXJPZklucHV0
czsKQEAgLTQ2LDQgKzQ4LDE0IEBACiAKICAgICB2b2lkIGRpc2Nvbm5lY3QoaW4gW09wdGlvbmFs
PURlZmF1bHRJc1VuZGVmaW5lZF0gdW5zaWduZWQgbG9uZyBvdXRwdXQpCiAgICAgICAgIHJhaXNl
cyhET01FeGNlcHRpb24pOworICAgIAorICAgIC8vIEV2ZW50VGFyZ2V0IGludGVyZmFjZQorICAg
IHZvaWQgYWRkRXZlbnRMaXN0ZW5lcihpbiBET01TdHJpbmcgdHlwZSwgCisgICAgICAgICAgICAg
ICAgICAgICAgICAgIGluIEV2ZW50TGlzdGVuZXIgbGlzdGVuZXIsIAorICAgICAgICAgICAgICAg
ICAgICAgICAgICBpbiBbT3B0aW9uYWxdIGJvb2xlYW4gdXNlQ2FwdHVyZSk7CisgICAgdm9pZCBy
ZW1vdmVFdmVudExpc3RlbmVyKGluIERPTVN0cmluZyB0eXBlLCAKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaW4gRXZlbnRMaXN0ZW5lciBsaXN0ZW5lciwgCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGluIFtPcHRpb25hbF0gYm9vbGVhbiB1c2VDYXB0dXJlKTsKKyAgICBib29s
ZWFuIGRpc3BhdGNoRXZlbnQoaW4gRXZlbnQgZXZ0KQorICAgICAgICByYWlzZXMoRXZlbnRFeGNl
cHRpb24pOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9T
Y2hlZHVsZWRTb3VyY2VOb2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9BdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGUuaAkocmV2aXNpb24gMTQ2Njg1KQor
KysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1NjaGVkdWxlZFNvdXJjZU5v
ZGUuaAkod29ya2luZyBjb3B5KQpAQCAtNTksNiArNTksOSBAQCBwdWJsaWM6CiAgICAgLy8gU2No
ZWR1bGluZy4KICAgICB2b2lkIHN0YXJ0KGRvdWJsZSB3aGVuKTsKICAgICB2b2lkIHN0b3AoZG91
YmxlIHdoZW4pOworICAgIAorICAgIC8vIHVuLWhpZGUgdGhlIEFjdGl2ZURPTUVsZW1lbnQgc3Rv
cAorICAgIHVzaW5nIEF1ZGlvU291cmNlTm9kZTo6c3RvcDsKIAogI2lmIEVOQUJMRShMRUdBQ1lf
V0VCX0FVRElPKQogICAgIHZvaWQgbm90ZU9uKGRvdWJsZSB3aGVuKTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJvY2Vzc29yTm9kZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9TY3JpcHRQcm9jZXNzb3JOb2Rl
LmNwcAkocmV2aXNpb24gMTQ2Njg1KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9TY3JpcHRQcm9jZXNzb3JOb2RlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYzLDE2ICsyNjMs
NiBAQCB2b2lkIFNjcmlwdFByb2Nlc3Nvck5vZGU6OnJlc2V0KCkKICAgICB9CiB9CiAKLWNvbnN0
IEF0b21pY1N0cmluZyYgU2NyaXB0UHJvY2Vzc29yTm9kZTo6aW50ZXJmYWNlTmFtZSgpIGNvbnN0
Ci17Ci0gICAgcmV0dXJuIGV2ZW50TmFtZXMoKS5pbnRlcmZhY2VGb3JTY3JpcHRQcm9jZXNzb3JO
b2RlOwotfQotCi1TY3JpcHRFeGVjdXRpb25Db250ZXh0KiBTY3JpcHRQcm9jZXNzb3JOb2RlOjpz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QKLXsKLSAgICByZXR1cm4gY29uc3RfY2FzdDxT
Y3JpcHRQcm9jZXNzb3JOb2RlKj4odGhpcyktPmNvbnRleHQoKS0+c2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpOwotfQotCiBkb3VibGUgU2NyaXB0UHJvY2Vzc29yTm9kZTo6dGFpbFRpbWUoKSBjb25z
dAogewogICAgIHJldHVybiBzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46OmluZmluaXR5KCk7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1NjcmlwdFByb2Nlc3Nvck5v
ZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1Njcmlw
dFByb2Nlc3Nvck5vZGUuaAkocmV2aXNpb24gMTQ2Njg1KQorKysgU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9TY3JpcHRQcm9jZXNzb3JOb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI1
LDExICsyNSw4IEBACiAjaWZuZGVmIFNjcmlwdFByb2Nlc3Nvck5vZGVfaAogI2RlZmluZSBTY3Jp
cHRQcm9jZXNzb3JOb2RlX2gKIAotI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgogI2luY2x1
ZGUgIkF1ZGlvQnVzLmgiCiAjaW5jbHVkZSAiQXVkaW9Ob2RlLmgiCi0jaW5jbHVkZSAiRXZlbnRM
aXN0ZW5lci5oIgotI2luY2x1ZGUgIkV2ZW50VGFyZ2V0LmgiCiAjaW5jbHVkZSA8d3RmL0Zvcndh
cmQuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIu
aD4KQEAgLTQ3LDggKzQ0LDcgQEAgY2xhc3MgQXVkaW9Qcm9jZXNzaW5nRXZlbnQ7CiAvLyBUaGUg
Im9uYXVkaW9wcm9jZXNzIiBhdHRyaWJ1dGUgaXMgYW4gZXZlbnQgbGlzdGVuZXIgd2hpY2ggd2ls
bCBnZXQgY2FsbGVkIHBlcmlvZGljYWxseSB3aXRoIGFuIEF1ZGlvUHJvY2Vzc2luZ0V2ZW50IHdo
aWNoIGhhcwogLy8gQXVkaW9CdWZmZXJzIGZvciBlYWNoIGlucHV0IGFuZCBvdXRwdXQuCiAKLS8v
IEZJWE1FOiBFdmVudFRhcmdldCBzaG91bGQgYmUgaW50cm9kdWNlZCBhdCB0aGUgYmFzZSBvZiB0
aGUgaW5oZXJpdGFuY2UgaGllcmFyY2h5IChpLmUuLCBhcyBhIGJhc2UgY2xhc3MgZm9yIEF1ZGlv
Tm9kZSkuCi1jbGFzcyBTY3JpcHRQcm9jZXNzb3JOb2RlIDogcHVibGljIEF1ZGlvTm9kZSwgcHVi
bGljIEV2ZW50VGFyZ2V0IHsKK2NsYXNzIFNjcmlwdFByb2Nlc3Nvck5vZGUgOiBwdWJsaWMgQXVk
aW9Ob2RlIHsKIHB1YmxpYzoKICAgICAvLyBidWZmZXJTaXplIG11c3QgYmUgb25lIG9mIHRoZSBm
b2xsb3dpbmcgdmFsdWVzOiAyNTYsIDUxMiwgMTAyNCwgMjA0OCwgNDA5NiwgODE5MiwgMTYzODQu
CiAgICAgLy8gVGhpcyB2YWx1ZSBjb250cm9scyBob3cgZnJlcXVlbnRseSB0aGUgb25hdWRpb3By
b2Nlc3MgZXZlbnQgaGFuZGxlciBpcyBjYWxsZWQgYW5kIGhvdyBtYW55IHNhbXBsZS1mcmFtZXMg
bmVlZCB0byBiZSBwcm9jZXNzZWQgZWFjaCBjYWxsLgpAQCAtNjQsMTkgKzYwLDEwIEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIHZvaWQgaW5pdGlhbGl6ZSgpOwogICAgIHZpcnR1YWwgdm9pZCB1bmlu
aXRpYWxpemUoKTsKIAotICAgIC8vIEV2ZW50VGFyZ2V0Ci0gICAgdmlydHVhbCBjb25zdCBBdG9t
aWNTdHJpbmcmIGludGVyZmFjZU5hbWUoKSBjb25zdDsKLSAgICB2aXJ0dWFsIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdDsKLSAgICB2aXJ0dWFs
IEV2ZW50VGFyZ2V0RGF0YSogZXZlbnRUYXJnZXREYXRhKCkgeyByZXR1cm4gJm1fZXZlbnRUYXJn
ZXREYXRhOyB9Ci0gICAgdmlydHVhbCBFdmVudFRhcmdldERhdGEqIGVuc3VyZUV2ZW50VGFyZ2V0
RGF0YSgpICB7IHJldHVybiAmbV9ldmVudFRhcmdldERhdGE7IH0KLQogICAgIHNpemVfdCBidWZm
ZXJTaXplKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXJTaXplOyB9CiAKICAgICBERUZJTkVfQVRU
UklCVVRFX0VWRU5UX0xJU1RFTkVSKGF1ZGlvcHJvY2Vzcyk7CiAKLSAgICAvLyBSZWNvbmNpbGUg
cmVmL2RlcmVmIHdoaWNoIGFyZSBkZWZpbmVkIGJvdGggaW4gQXVkaW9Ob2RlIGFuZCBFdmVudFRh
cmdldC4KLSAgICB1c2luZyBBdWRpb05vZGU6OnJlZjsKLSAgICB1c2luZyBBdWRpb05vZGU6OmRl
cmVmOwogICAgIAogcHJpdmF0ZToKICAgICB2aXJ0dWFsIGRvdWJsZSB0YWlsVGltZSgpIGNvbnN0
IE9WRVJSSURFOwpAQCAtOTUsMTAgKzgyLDYgQEAgcHJpdmF0ZToKICAgICBWZWN0b3I8UmVmUHRy
PEF1ZGlvQnVmZmVyPiA+IG1faW5wdXRCdWZmZXJzOwogICAgIFZlY3RvcjxSZWZQdHI8QXVkaW9C
dWZmZXI+ID4gbV9vdXRwdXRCdWZmZXJzOwogCi0gICAgdmlydHVhbCB2b2lkIHJlZkV2ZW50VGFy
Z2V0KCkgeyByZWYoKTsgfQotICAgIHZpcnR1YWwgdm9pZCBkZXJlZkV2ZW50VGFyZ2V0KCkgeyBk
ZXJlZigpOyB9Ci0gICAgRXZlbnRUYXJnZXREYXRhIG1fZXZlbnRUYXJnZXREYXRhOwotCiAgICAg
c2l6ZV90IG1fYnVmZmVyU2l6ZTsKICAgICB1bnNpZ25lZCBtX2J1ZmZlclJlYWRXcml0ZUluZGV4
OwogICAgIHZvbGF0aWxlIGJvb2wgbV9pc1JlcXVlc3RPdXRzdGFuZGluZzsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJvY2Vzc29yTm9kZS5pZGwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9TY3JpcHRQcm9jZXNzb3JO
b2RlLmlkbAkocmV2aXNpb24gMTQ2Njg1KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9TY3JpcHRQcm9jZXNzb3JOb2RlLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjYsOCArMjYs
NyBAQAogWwogICAgIENvbmRpdGlvbmFsPVdFQl9BVURJTywKICAgICBKU0dlbmVyYXRlVG9KU09i
amVjdCwKLSAgICBKU0dlbmVyYXRlVG9OYXRpdmVPYmplY3QsCi0gICAgRXZlbnRUYXJnZXQKKyAg
ICBKU0dlbmVyYXRlVG9OYXRpdmVPYmplY3QKIF0gaW50ZXJmYWNlIFNjcmlwdFByb2Nlc3Nvck5v
ZGUgOiBBdWRpb05vZGUgewogICAgIC8vIFJlbmRlcmluZyBjYWxsYmFjawogICAgIGF0dHJpYnV0
ZSBFdmVudExpc3RlbmVyIG9uYXVkaW9wcm9jZXNzOwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9t
L0V2ZW50VGFyZ2V0RmFjdG9yeS5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20v
RXZlbnRUYXJnZXRGYWN0b3J5LmluCShyZXZpc2lvbiAxNDY2ODUpCisrKyBTb3VyY2UvV2ViQ29y
ZS9kb20vRXZlbnRUYXJnZXRGYWN0b3J5LmluCSh3b3JraW5nIGNvcHkpCkBAIC0xMyw3ICsxMyw3
IEBAIElEQkRhdGFiYXNlIGNvbmRpdGlvbmFsPUlOREVYRURfREFUQUJBU0UKIElEQk9wZW5EQlJl
cXVlc3QgY29uZGl0aW9uYWw9SU5ERVhFRF9EQVRBQkFTRQogSURCUmVxdWVzdCBjb25kaXRpb25h
bD1JTkRFWEVEX0RBVEFCQVNFCiBJREJUcmFuc2FjdGlvbiBjb25kaXRpb25hbD1JTkRFWEVEX0RB
VEFCQVNFCi1TY3JpcHRQcm9jZXNzb3JOb2RlIGNvbmRpdGlvbmFsPVdFQl9BVURJTworQXVkaW9O
b2RlIGNvbmRpdGlvbmFsPVdFQl9BVURJTwogTG9jYWxNZWRpYVN0cmVhbSBjb25kaXRpb25hbD1N
RURJQV9TVFJFQU0KIE1lZGlhS2V5U2Vzc2lvbiBjb25kaXRpb25hbD1FTkNSWVBURURfTUVESUFf
VjIKIE1lZGlhQ29udHJvbGxlciBjb25kaXRpb25hbD1WSURFTwpJbmRleDogTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24g
MTQ2NjkyKQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMTUgQEAKKzIwMTMtMDMtMjIgIFJ1c3NlbGwgTWNDbGVsbGFuICA8cnVzc2VsbC5tY2NsZWxs
YW5AZ21haWwuY29tPgorCisgICAgICAgIEF1ZGlvTm9kZSBzaG91bGQgYmUgYW4gRXZlbnRUYXJn
ZXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMzEy
MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd2Vi
YXVkaW8vYXVkaW9ub2RlLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiB3ZWJhdWRpby9hdWRpb25v
ZGUuaHRtbDogdGVzdCBmb3IgYXVkaW9ub2RlIGRpc3BhdGNoaW5nIGEgc3ludGhldGljIGV2ZW50
CisgICAgICAgICogd2ViYXVkaW8vamF2YXNjcmlwdGF1ZGlvbm9kZS1leHBlY3RlZC50eHQ6Cisg
ICAgICAgICogd2ViYXVkaW8vamF2YXNjcmlwdGF1ZGlvbm9kZS5odG1sOiB0ZXN0IGZvciBub2Rl
IG5vdCBiZWluZyBHQ2VkIGJlZm9yZSBldmVudCBkaXNwYXRjaAorCiAyMDEzLTAzLTIyICBTdGVw
aGVuIENoZW5uZXkgIDxzY2hlbm5leUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW0Nocm9taXVt
XSBUZXN0IGV4cGVjdGF0aW9ucyBhZnRlciBTa2lhIGNoYW5nZXMKSW5kZXg6IExheW91dFRlc3Rz
L3dlYmF1ZGlvL2F1ZGlvbm9kZS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvd2ViYXVkaW8vYXVkaW9ub2RlLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTQ2Njg1KQorKysg
TGF5b3V0VGVzdHMvd2ViYXVkaW8vYXVkaW9ub2RlLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5
KQpAQCAtMTYsNiArMTYsNyBAQCBQQVNTIGNvbm5lY3QoKSBleGNlcHRpb24gdGhyb3duIGZvciBp
bGxlCiBQQVNTIGF1ZGlvTm9kZS5jb25uZWN0KGNvbnRleHQuZGVzdGluYXRpb24pIHN1Y2NlZWRl
ZC4KIFBBU1MgZXhjZXB0aW9uIHRocm93biB3aGVuIGNvbm5lY3RpbmcgdG8gb3RoZXIgY29udGV4
dCdzIG5vZGUuCiBQQVNTIGV4Y2VwdGlvbiB0aHJvd24gd2hlbiBjcmVhdGluZyBhdWRpbyBjb250
ZXh0IHdpdGggbm90IGVub3VnaCBhcmd1bWVudHMuCitQQVNTIGF1ZGlvTm9kZUlzRXZlbnRUYXJn
ZXQgaXMgdHJ1ZQogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBM
RVRFCkluZGV4OiBMYXlvdXRUZXN0cy93ZWJhdWRpby9hdWRpb25vZGUuaHRtbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy93ZWJhdWRpby9hdWRpb25vZGUuaHRtbAkocmV2aXNpb24gMTQ2Njg1
KQorKysgTGF5b3V0VGVzdHMvd2ViYXVkaW8vYXVkaW9ub2RlLmh0bWwJKHdvcmtpbmcgY29weSkK
QEAgLTEwMSw2ICsxMDEsMTggQEAgZnVuY3Rpb24gcnVuVGVzdCgpIHsKICAgICAgICAgdGVzdFBh
c3NlZCgiZXhjZXB0aW9uIHRocm93biB3aGVuIGNyZWF0aW5nIGF1ZGlvIGNvbnRleHQgd2l0aCBu
b3QgZW5vdWdoIGFyZ3VtZW50cy4iKTsKICAgICB9CiAKKyAgICAvLyBFbnN1cmUgaXQgaXMgYW4g
RXZlbnRUYXJnZXQKKyAgICB0cnkgeworICAgICAgICB3aW5kb3cuYXVkaW9Ob2RlSXNFdmVudFRh
cmdldCA9IGZhbHNlOworICAgICAgICBhdWRpb05vZGUuYWRkRXZlbnRMaXN0ZW5lcigndGVzdEV2
ZW50JywgZnVuY3Rpb24oKXsKKyAgICAgICAgICAgIGF1ZGlvTm9kZUlzRXZlbnRUYXJnZXQgPSB0
cnVlOworICAgICAgICB9KTsKKyAgICAgICAgYXVkaW9Ob2RlLmRpc3BhdGNoRXZlbnQobmV3IEV2
ZW50KCd0ZXN0RXZlbnQnKSk7CisgICAgICAgIHNob3VsZEJlVHJ1ZSgnYXVkaW9Ob2RlSXNFdmVu
dFRhcmdldCcpOworICAgIH0gY2F0Y2goZSkgeworICAgICAgICB0ZXN0RmFpbGVkKCJleGNlcHRp
b24gc2hvdWxkbid0IGJlIHRocm93biB3aGVuIHRlc3Rpbmcgd2hldGhlciBhdWRpbyBub2RlIGlz
IGFuIGV2ZW50IHRhcmdldCIpOworICAgIH0KKwogICAgIGZpbmlzaEpTVGVzdCgpOwogfQogCklu
ZGV4OiBMYXlvdXRUZXN0cy93ZWJhdWRpby9qYXZhc2NyaXB0YXVkaW9ub2RlLWV4cGVjdGVkLnR4
dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy93ZWJhdWRpby9qYXZhc2NyaXB0YXVkaW9ub2Rl
LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTQ2Njg1KQorKysgTGF5b3V0VGVzdHMvd2ViYXVkaW8v
amF2YXNjcmlwdGF1ZGlvbm9kZS1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTE2LDYg
KzE2LDcgQEAgUEFTUyBTdWNjZXNzZnVsbHkgY3JlYXRlZCBTY3JpcHRQcm9jZXNzbwogUEFTUyBT
dWNjZXNzZnVsbHkgY3JlYXRlZCBTY3JpcHRQcm9jZXNzb3JOb2RlIHdpdGggYnVmZmVyU2l6ZSA9
IDgxOTIuCiBQQVNTIFN1Y2Nlc3NmdWxseSBjcmVhdGVkIFNjcmlwdFByb2Nlc3Nvck5vZGUgd2l0
aCBidWZmZXJTaXplID0gMTYzODQuCiBQQVNTIG9uYXVkaW9wcm9jZXNzIHdhcyBjYWxsZWQgd2l0
aCBjb3JyZWN0IGRhdGEuCitQQVNTIGF1ZGlvcHJvY2Vzc1dhc0NhbGxlZCBpcyB0cnVlCiBQQVNT
IHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCiAKIFRFU1QgQ09NUExFVEUKSW5kZXg6IExheW91
dFRlc3RzL3dlYmF1ZGlvL2phdmFzY3JpcHRhdWRpb25vZGUuaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy93ZWJhdWRpby9qYXZhc2NyaXB0YXVkaW9ub2RlLmh0bWwJKHJldmlzaW9uIDE0
NjY4NSkKKysrIExheW91dFRlc3RzL3dlYmF1ZGlvL2phdmFzY3JpcHRhdWRpb25vZGUuaHRtbAko
d29ya2luZyBjb3B5KQpAQCAtNzUsNiArNzUsMzEgQEAgZnVuY3Rpb24gZG9CdWZmZXJTaXplVGVz
dChzaXplKSB7CiAgICAgfQogfQogCitmdW5jdGlvbiBwZXJmb3JtR0NUZXN0KCkgeworICAgIC8v
IG5vdyB0ZXN0IHRoYXQgU2NyaXB0UHJvY2Vzc29yTm9kZXMgYXJlIG5vdCBnYXJiYWdlIGNvbGxl
Y3RlZAorICAgIC8vIGlmIHRoZXkgYXJlIHVucmVhY2hhYmxlIGJ1dCBjb25uZWN0ZWQgdG8gYSBy
dW5uaW5nIGF1ZGlvIGNvbnRleHQuCisgICAgdmFyIGNvbnRleHQgPSBuZXcgd2Via2l0T2ZmbGlu
ZUF1ZGlvQ29udGV4dCgyLCByZW5kZXJMZW5ndGhJbkZyYW1lcywgc2FtcGxlUmF0ZSk7CisKKyAg
ICB3aW5kb3cuYXVkaW9wcm9jZXNzV2FzQ2FsbGVkID0gZmFsc2U7CisKKyAgICBjb250ZXh0Lm9u
Y29tcGxldGUgPSBmdW5jdGlvbiAoKSB7CisgICAgICAgIHNob3VsZEJlVHJ1ZSgnYXVkaW9wcm9j
ZXNzV2FzQ2FsbGVkJyk7CisgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgIH07CisKKyAgICAv
LyBhZGQgdGhlIHNjcmlwdHByb2Nlc3NvciBhbmQgY2FsbGJhY2sgaW4gYSBuZXN0ZWQgZnVuY3Rp
b24gdG8gYmUgc3VyZSB0aGV5J2xsCisgICAgLy8gYmUgdW5yZWFjaGFibGUuCisgICAgKGZ1bmN0
aW9uKCkgeworICAgICAgICB2YXIganNub2RlID0gY29udGV4dC5jcmVhdGVTY3JpcHRQcm9jZXNz
b3IoYnVmZmVyU2l6ZSwgMCwgMSk7CisgICAgICAgIGpzbm9kZS5vbmF1ZGlvcHJvY2VzcyA9IGZ1
bmN0aW9uKCkgeworICAgICAgICAgICAgYXVkaW9wcm9jZXNzV2FzQ2FsbGVkID0gdHJ1ZTsKKyAg
ICAgICAgfTsKKyAgICAgICAganNub2RlLmNvbm5lY3QoY29udGV4dC5kZXN0aW5hdGlvbik7Cisg
ICAgfSkoKTsKKyAgICBnYygpOworICAgIGNvbnRleHQuc3RhcnRSZW5kZXJpbmcoKTsKK30KKwog
ZnVuY3Rpb24gcnVuVGVzdCgpIHsKICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKICAgICAg
ICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CkBAIC0xNDgsOCArMTczLDkgQEAgZnVuY3Rpb24g
cnVuVGVzdCgpIHsKICAgICBqc25vZGUub25hdWRpb3Byb2Nlc3MgPSBwcm9jZXNzQXVkaW9EYXRh
OwogCiAgICAgYnVmZmVyU291cmNlLm5vdGVPbigwKTsKLSAgICBjb250ZXh0Lm9uY29tcGxldGUg
PSBmaW5pc2hKU1Rlc3Q7CisgICAgY29udGV4dC5vbmNvbXBsZXRlID0gcGVyZm9ybUdDVGVzdDsK
ICAgICBjb250ZXh0LnN0YXJ0UmVuZGVyaW5nKCk7CisKIH0KIAogcnVuVGVzdCgpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>