<?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>49469</bug_id>
          
          <creation_ts>2010-11-12 13:29:58 -0800</creation_ts>
          <short_desc>ScriptElement rather than HTMLScriptElement and SVGScriptElement should have ScriptElementData</short_desc>
          <delta_ts>2010-11-15 21:23:49 -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>DOM</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>darin</cc>
    
    <cc>eric</cc>
    
    <cc>tony</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>308735</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2010-11-12 13:29:58 -0800</bug_when>
    <thetext>HTMLScriptElement and SVGScriptElement have a lot of duplicated code because each class declares ScriptElementData as a member variable m_data separately.
We should declare m_data in ScriptElement and share the duplicated code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>308761</commentid>
    <comment_count>1</comment_count>
      <attachid>73773</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2010-11-12 13:48:27 -0800</bug_when>
    <thetext>Created attachment 73773
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>309437</commentid>
    <comment_count>2</comment_count>
      <attachid>73773</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-11-15 13:53:21 -0800</bug_when>
    <thetext>Comment on attachment 73773
Patch

I don’t understand why ScriptElement and ScriptElementData are two separate classes. Could you instead merge them into one class?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>309442</commentid>
    <comment_count>3</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2010-11-15 14:11:01 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 73773 [details])
&gt; I don’t understand why ScriptElement and ScriptElementData are two separate classes. Could you instead merge them into one class?

We could do that.  However, I rather merge ScriptElementData with PendingScript in HTMLScriptRunner.cpp than with ScriptElement because ScriptElementData and PendingScript have similar abstractions and provide similar functionalities.

Regardless, moving m_data to ScriptElement and making it private (done in a separate patch) should be a good thing since there are several places in HTMLScriptElement and SVGScriptElement that directly access m_data.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>309445</commentid>
    <comment_count>4</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-11-15 14:20:11 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; However, I rather merge ScriptElementData with PendingScript in HTMLScriptRunner.cpp than with ScriptElement because ScriptElementData and PendingScript have similar abstractions and provide similar functionalities.

After this patch, a ScriptElementData has all the data in a ScriptElement object. It’s bizarre to have all the data members of one class stored in an object of another class that’s not used elsewhere.

And there are a substantial number of functions in ScriptElement that just call through to a function in ScriptElementData of the same name.

Factoring to share more code with PendingScript is OK, but probably not nearly as important or helpful. I see quite a bit in ScriptElementData and PendingScript that does not overlap.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>309447</commentid>
    <comment_count>5</comment_count>
      <attachid>73773</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-11-15 14:21:46 -0800</bug_when>
    <thetext>Comment on attachment 73773
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=73773&amp;action=review

&gt; WebCore/dom/ScriptElement.h:79
&gt; +    : m_data(this, element, isEvaluated)

Formatting is wrong here. This should be indented.

&gt; WebCore/dom/ScriptElement.h:101
&gt; +    virtual String sourceAttributeValue() const = 0;
&gt; +    virtual String charsetAttributeValue() const = 0;
&gt; +    virtual String typeAttributeValue() const = 0;
&gt; +    virtual String languageAttributeValue() const = 0;
&gt; +    virtual String forAttributeValue() const = 0;
&gt; +    virtual String eventAttributeValue() const = 0;
&gt; +    virtual bool asyncAttributeValue() const = 0;
&gt; +    virtual bool deferAttributeValue() const = 0;
&gt; +
&gt; +    virtual void dispatchLoadEvent() = 0;
&gt; +    virtual void dispatchErrorEvent() = 0;

I think these should all be private. We can refactor to accomplish this in a later patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>309572</commentid>
    <comment_count>6</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2010-11-15 21:23:49 -0800</bug_when>
    <thetext>Committed r72060: &lt;http://trac.webkit.org/changeset/72060&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>73773</attachid>
            <date>2010-11-12 13:48:27 -0800</date>
            <delta_ts>2010-11-15 14:21:45 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-49469-20101112134826.patch</filename>
            <type>text/plain</type>
            <size>20311</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3MTk0MSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNDggQEAKKzIwMTAtMTEtMTIgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5v
cmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2Ny
aXB0RWxlbWVudCByYXRoZXIgdGhhbiBIVE1MU2NyaXB0RWxlbWVudCBhbmQgU1ZHU2NyaXB0RWxl
bWVudCBzaG91bGQgaGF2ZSBTY3JpcHRFbGVtZW50RGF0YQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDk0NjkKKworICAgICAgICBNb3ZlZCBtX2RhdGEs
IHNjcmlwdENoYXJzZXQsIHNjcmlwdENvbnRlbnQsIHNob3VsZEV4ZWN1dGVBc0phdmFTY3JpcHQs
IGFuZCBleGVjdXRlU2NyaXB0IGZyb20KKyAgICAgICAgSFRNTFNjcmlwdEVsZW1lbnQgYW5kIFNW
R1NjcmlwdEVsZW1lbnQgdG8gU2NyaXB0RWxlbWVudERhdGEuCisKKyAgICAgICAgQWxzbyBtYWRl
IGluc2VydGVkSW50b0RvY3VtZW50LCByZW1vdmVkRnJvbURvY3VtZW50LCBjaGlsZHJlbkNoYW5n
ZWQsIGZpbmlzaFBhcnNpbmdDaGlsZHJlbiwKKyAgICAgICAgYW5kIGhhbmRsZVNvdXJjZUF0dHJp
YnV0ZSBvZiBTY3JpcHRFbGVtZW50IG5vbi1zdGF0aWMuCisKKyAgICAgICAgTm8gbmV3IHRlc3Rz
IGFyZSBhZGRlZCBzaW5jZSB0aGlzIGlzIGEgY2xlYW51cC4KKworICAgICAgICAqIGRvbS9TY3Jp
cHRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEVsZW1lbnQ6OnNjcmlwdENo
YXJzZXQpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEVsZW1lbnQ6OnNjcmlwdENv
bnRlbnQpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEVsZW1lbnQ6OnNob3VsZEV4
ZWN1dGVBc0phdmFTY3JpcHQpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEVsZW1l
bnQ6OmV4ZWN1dGVTY3JpcHQpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEVsZW1l
bnQ6Omluc2VydGVkSW50b0RvY3VtZW50KTogTWFkZSBub24tc3RhdGljLiBBY2Nlc3NlcyBtX2Rh
dGEuCisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRFbGVtZW50OjpyZW1vdmVkRnJvbURvY3VtZW50
KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRFbGVtZW50OjpjaGlsZHJlbkNoYW5n
ZWQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEVsZW1lbnQ6OmZpbmlzaFBhcnNp
bmdDaGlsZHJlbik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RWxlbWVudDo6aGFu
ZGxlU291cmNlQXR0cmlidXRlKTogRGl0dG8uCisgICAgICAgICogZG9tL1NjcmlwdEVsZW1lbnQu
aDogTW92ZWQgdGhlIGRlY2xhcmF0aW9uIG9mIFNjcmlwdEVsZW1lbnQgYWZ0ZXIgdGhhdCBvZiBT
Y3JpcHRFbGVtZW50RGF0YQorICAgICAgICBiZWNhdXNlIFNjcmlwdEVsZW1lbnQgaGFzIHRvIGlu
c3RhbnRpYXRlIFNjcmlwdEVsZW1lbnREYXRhLgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RWxl
bWVudDo6U2NyaXB0RWxlbWVudCk6IEluaXRpYWxpemVzIG1fZGF0YS4KKyAgICAgICAgKiBodG1s
L0hUTUxTY3JpcHRFbGVtZW50LmNwcDogUmVtb3ZlZCBzY3JpcHRDaGFyc2V0LCBzY3JpcHRDb250
ZW50LCBzaG91bGRFeGVjdXRlQXNKYXZhU2NyaXB0LCBhbmQgZXhlY3V0ZVNjcmlwdC4KKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxTY3JpcHRFbGVtZW50OjpIVE1MU2NyaXB0RWxlbWVudCk6IEluaXRp
YWxpemVzIFNjcmlwdEVsZW1lbnQgaW5zdGVhZCBvZiBTY3JpcHRFbGVtZW50RGF0YS4KKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxTY3JpcHRFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQpOiBDYWxscyBT
Y3JpcHRFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQuCisgICAgICAgIChXZWJDb3JlOjpIVE1MU2Ny
aXB0RWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUpOiBDYWxscyBTY3JpcHRFbGVtZW50Ojpo
YW5kbGVTb3VyY2VBdHRyaWJ1dGUuCisgICAgICAgIChXZWJDb3JlOjpIVE1MU2NyaXB0RWxlbWVu
dDo6ZmluaXNoUGFyc2luZ0NoaWxkcmVuKTogQ2FsbHMgU2NyaXB0RWxlbWVudDo6ZmluaXNoUGFy
c2luZ0NoaWxkcmVuLgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNjcmlwdEVsZW1lbnQ6Omluc2Vy
dGVkSW50b0RvY3VtZW50KTogQ2FsbHMgU2NyaXB0RWxlbWVudDo6aW5zZXJ0ZWRJbnRvRG9jdW1l
bnQuCisgICAgICAgIChXZWJDb3JlOjpIVE1MU2NyaXB0RWxlbWVudDo6cmVtb3ZlZEZyb21Eb2N1
bWVudCk6IENhbGxzIFNjcmlwdEVsZW1lbnQ6OnJlbW92ZWRGcm9tRG9jdW1lbnQuCisgICAgICAg
ICogaHRtbC9IVE1MU2NyaXB0RWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdTY3JpcHRFbGVt
ZW50LmNwcDogUmVtb3ZlZCBzY3JpcHRDaGFyc2V0LCBzY3JpcHRDb250ZW50LCBzaG91bGRFeGVj
dXRlQXNKYXZhU2NyaXB0LCBhbmQgZXhlY3V0ZVNjcmlwdC4KKyAgICAgICAgKFdlYkNvcmU6OlNW
R1NjcmlwdEVsZW1lbnQ6OlNWR1NjcmlwdEVsZW1lbnQpOiBJbml0aWFsaXplcyBTY3JpcHRFbGVt
ZW50IGluc3RlYWQgb2YgU2NyaXB0RWxlbWVudERhdGEuCisgICAgICAgIChXZWJDb3JlOjpTVkdT
Y3JpcHRFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKTogQ2FsbHMgU2NyaXB0RWxlbWVudDo6
aGFuZGxlU291cmNlQXR0cmlidXRlLgorICAgICAgICAoV2ViQ29yZTo6U1ZHU2NyaXB0RWxlbWVu
dDo6aW5zZXJ0ZWRJbnRvRG9jdW1lbnQpOiBDYWxscyBTY3JpcHRFbGVtZW50OjppbnNlcnRlZElu
dG9Eb2N1bWVudC4KKyAgICAgICAgKFdlYkNvcmU6OlNWR1NjcmlwdEVsZW1lbnQ6OnJlbW92ZWRG
cm9tRG9jdW1lbnQpOiBDYWxscyBTY3JpcHRFbGVtZW50OjpyZW1vdmVkRnJvbURvY3VtZW50Lgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHU2NyaXB0RWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKTogQ2Fs
bHMgU2NyaXB0RWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkLgorICAgICAgICAoV2ViQ29yZTo6U1ZH
U2NyaXB0RWxlbWVudDo6ZmluaXNoUGFyc2luZ0NoaWxkcmVuKTogQ2FsbHMgU2NyaXB0RWxlbWVu
dDo6ZmluaXNoUGFyc2luZ0NoaWxkcmVuLgorICAgICAgICAqIHN2Zy9TVkdTY3JpcHRFbGVtZW50
Lmg6CisKIDIwMTAtMTEtMTIgIEhlbGRlciBDb3JyZWlhICA8aGVsZGVyQHNlbmNoYS5jb20+CiAK
ICAgICAgICAgUmV2aWV3ZWQgYnkgQW5kcmVhcyBLbGluZy4KSW5kZXg6IFdlYkNvcmUvZG9tL1Nj
cmlwdEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL1NjcmlwdEVsZW1lbnQu
Y3BwCShyZXZpc2lvbiA3MTkzNSkKKysrIFdlYkNvcmUvZG9tL1NjcmlwdEVsZW1lbnQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC01MSw1OCArNTEsNzggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci12b2lkIFNjcmlwdEVsZW1lbnQ6Omluc2VydGVkSW50b0RvY3VtZW50KFNjcmlwdEVsZW1lbnRE
YXRhJiBkYXRhLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVybCkKK1N0cmluZyBTY3JpcHRFbGVtZW50
OjpzY3JpcHRDaGFyc2V0KCkgY29uc3QKIHsKLSAgICBpZiAoZGF0YS5jcmVhdGVkQnlQYXJzZXIo
KSAmJiAhZGF0YS5pc0FzeW5jaHJvbm91cygpKQorICAgIHJldHVybiBtX2RhdGEuc2NyaXB0Q2hh
cnNldCgpOworfQorCitTdHJpbmcgU2NyaXB0RWxlbWVudDo6c2NyaXB0Q29udGVudCgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIG1fZGF0YS5zY3JpcHRDb250ZW50KCk7Cit9CisKK2Jvb2wgU2NyaXB0
RWxlbWVudDo6c2hvdWxkRXhlY3V0ZUFzSmF2YVNjcmlwdCgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IG1fZGF0YS5zaG91bGRFeGVjdXRlQXNKYXZhU2NyaXB0KCk7Cit9CisKK3ZvaWQgU2NyaXB0RWxl
bWVudDo6ZXhlY3V0ZVNjcmlwdChjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiBzb3VyY2VDb2RlKQor
eworICAgIG1fZGF0YS5leGVjdXRlU2NyaXB0KHNvdXJjZUNvZGUpOworfQorCit2b2lkIFNjcmlw
dEVsZW1lbnQ6Omluc2VydGVkSW50b0RvY3VtZW50KGNvbnN0IFN0cmluZyYgc291cmNlVXJsKQor
eworICAgIGlmIChtX2RhdGEuY3JlYXRlZEJ5UGFyc2VyKCkgJiYgIW1fZGF0YS5pc0FzeW5jaHJv
bm91cygpKQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBodHRwOi8vd3d3LndoYXR3Zy5vcmcv
c3BlY3Mvd2ViLWFwcHMvY3VycmVudC13b3JrLyNzY3JpcHQKIAogICAgIGlmICghc291cmNlVXJs
LmlzRW1wdHkoKSkgewotICAgICAgICBkYXRhLnJlcXVlc3RTY3JpcHQoc291cmNlVXJsKTsKKyAg
ICAgICAgbV9kYXRhLnJlcXVlc3RTY3JpcHQoc291cmNlVXJsKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAogICAgIC8vIElmIHRoZXJlJ3MgYW4gZW1wdHkgc2NyaXB0IG5vZGUsIHdlIHNob3Vs
ZG4ndCBldmFsdWF0ZSB0aGUgc2NyaXB0CiAgICAgLy8gYmVjYXVzZSBpZiBhIHNjcmlwdCBpcyBp
bnNlcnRlZCBhZnRlcndhcmRzIChieSBzZXR0aW5nIHRleHQgb3IgaW5uZXJUZXh0KQogICAgIC8v
IGl0IHNob3VsZCBiZSBldmFsdWF0ZWQsIGFuZCBldmFsdWF0ZVNjcmlwdCBvbmx5IGV2YWx1YXRl
cyBhIHNjcmlwdCBvbmNlLgotICAgIGRhdGEuZXZhbHVhdGVTY3JpcHQoU2NyaXB0U291cmNlQ29k
ZShkYXRhLnNjcmlwdENvbnRlbnQoKSwgZGF0YS5lbGVtZW50KCktPmRvY3VtZW50KCktPnVybCgp
KSk7IC8vIEZJWE1FOiBQcm92aWRlIGEgcmVhbCBzdGFydGluZyBsaW5lIG51bWJlciBoZXJlLgor
ICAgIG1fZGF0YS5ldmFsdWF0ZVNjcmlwdChTY3JpcHRTb3VyY2VDb2RlKG1fZGF0YS5zY3JpcHRD
b250ZW50KCksIG1fZGF0YS5lbGVtZW50KCktPmRvY3VtZW50KCktPnVybCgpKSk7IC8vIEZJWE1F
OiBQcm92aWRlIGEgcmVhbCBzdGFydGluZyBsaW5lIG51bWJlciBoZXJlLgogfQogCi12b2lkIFNj
cmlwdEVsZW1lbnQ6OnJlbW92ZWRGcm9tRG9jdW1lbnQoU2NyaXB0RWxlbWVudERhdGEmIGRhdGEp
Cit2b2lkIFNjcmlwdEVsZW1lbnQ6OnJlbW92ZWRGcm9tRG9jdW1lbnQoKQogewogICAgIC8vIEV2
ZW50dWFsbHkgc3RvcCBsb2FkaW5nIGFueSBub3QteWV0LWZpbmlzaGVkIGNvbnRlbnQKLSAgICBk
YXRhLnN0b3BMb2FkUmVxdWVzdCgpOworICAgIG1fZGF0YS5zdG9wTG9hZFJlcXVlc3QoKTsKIH0K
IAotdm9pZCBTY3JpcHRFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQoU2NyaXB0RWxlbWVudERhdGEm
IGRhdGEpCit2b2lkIFNjcmlwdEVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZCgpCiB7Ci0gICAgaWYg
KGRhdGEuY3JlYXRlZEJ5UGFyc2VyKCkpCisgICAgaWYgKG1fZGF0YS5jcmVhdGVkQnlQYXJzZXIo
KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgRWxlbWVudCogZWxlbWVudCA9IGRhdGEuZWxlbWVu
dCgpOworICAgIEVsZW1lbnQqIGVsZW1lbnQgPSBtX2RhdGEuZWxlbWVudCgpOwogCiAgICAgLy8g
SWYgYSBub2RlIGlzIGluc2VydGVkIGFzIGEgY2hpbGQgb2YgdGhlIHNjcmlwdCBlbGVtZW50CiAg
ICAgLy8gYW5kIHRoZSBzY3JpcHQgZWxlbWVudCBoYXMgYmVlbiBpbnNlcnRlZCBpbiB0aGUgZG9j
dW1lbnQKICAgICAvLyB3ZSBldmFsdWF0ZSB0aGUgc2NyaXB0LgogICAgIGlmIChlbGVtZW50LT5p
bkRvY3VtZW50KCkgJiYgZWxlbWVudC0+Zmlyc3RDaGlsZCgpKQotICAgICAgICBkYXRhLmV2YWx1
YXRlU2NyaXB0KFNjcmlwdFNvdXJjZUNvZGUoZGF0YS5zY3JpcHRDb250ZW50KCksIGVsZW1lbnQt
PmRvY3VtZW50KCktPnVybCgpKSk7IC8vIEZJWE1FOiBQcm92aWRlIGEgcmVhbCBzdGFydGluZyBs
aW5lIG51bWJlciBoZXJlCisgICAgICAgIG1fZGF0YS5ldmFsdWF0ZVNjcmlwdChTY3JpcHRTb3Vy
Y2VDb2RlKG1fZGF0YS5zY3JpcHRDb250ZW50KCksIGVsZW1lbnQtPmRvY3VtZW50KCktPnVybCgp
KSk7IC8vIEZJWE1FOiBQcm92aWRlIGEgcmVhbCBzdGFydGluZyBsaW5lIG51bWJlciBoZXJlCiB9
CiAKLXZvaWQgU2NyaXB0RWxlbWVudDo6ZmluaXNoUGFyc2luZ0NoaWxkcmVuKFNjcmlwdEVsZW1l
bnREYXRhJiBkYXRhLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVybCkKK3ZvaWQgU2NyaXB0RWxlbWVu
dDo6ZmluaXNoUGFyc2luZ0NoaWxkcmVuKGNvbnN0IFN0cmluZyYgc291cmNlVXJsKQogewogICAg
IC8vIFRoZSBwYXJzZXIganVzdCByZWFjaGVkIDwvc2NyaXB0Pi4gSWYgd2UgaGF2ZSBubyBzcmMg
YW5kIG5vIHRleHQsCiAgICAgLy8gYWxsb3cgZHluYW1pYyBsb2FkaW5nIGxhdGVyLgotICAgIGlm
IChzb3VyY2VVcmwuaXNFbXB0eSgpICYmIGRhdGEuc2NyaXB0Q29udGVudCgpLmlzRW1wdHkoKSkK
LSAgICAgICAgZGF0YS5zZXRDcmVhdGVkQnlQYXJzZXIoZmFsc2UpOworICAgIGlmIChzb3VyY2VV
cmwuaXNFbXB0eSgpICYmIG1fZGF0YS5zY3JpcHRDb250ZW50KCkuaXNFbXB0eSgpKQorICAgICAg
ICBtX2RhdGEuc2V0Q3JlYXRlZEJ5UGFyc2VyKGZhbHNlKTsKIH0KIAotdm9pZCBTY3JpcHRFbGVt
ZW50OjpoYW5kbGVTb3VyY2VBdHRyaWJ1dGUoU2NyaXB0RWxlbWVudERhdGEmIGRhdGEsIGNvbnN0
IFN0cmluZyYgc291cmNlVXJsKQordm9pZCBTY3JpcHRFbGVtZW50OjpoYW5kbGVTb3VyY2VBdHRy
aWJ1dGUoY29uc3QgU3RyaW5nJiBzb3VyY2VVcmwpCiB7Ci0gICAgaWYgKGRhdGEuaWdub3Jlc0xv
YWRSZXF1ZXN0KCkgfHwgc291cmNlVXJsLmlzRW1wdHkoKSkKKyAgICBpZiAobV9kYXRhLmlnbm9y
ZXNMb2FkUmVxdWVzdCgpIHx8IHNvdXJjZVVybC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsK
IAotICAgIGRhdGEucmVxdWVzdFNjcmlwdChzb3VyY2VVcmwpOworICAgIG1fZGF0YS5yZXF1ZXN0
U2NyaXB0KHNvdXJjZVVybCk7CiB9CiAKIC8vIEhlbHBlciBmdW5jdGlvbgpJbmRleDogV2ViQ29y
ZS9kb20vU2NyaXB0RWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL1NjcmlwdEVs
ZW1lbnQuaAkocmV2aXNpb24gNzE5MzUpCisrKyBXZWJDb3JlL2RvbS9TY3JpcHRFbGVtZW50LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTI4LDQzICsyOCw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Y2xhc3MgQ2FjaGVkU2NyaXB0OwogY2xhc3MgRWxlbWVudDsKLWNsYXNzIFNjcmlwdEVsZW1lbnRE
YXRhOworY2xhc3MgU2NyaXB0RWxlbWVudDsKIGNsYXNzIFNjcmlwdFNvdXJjZUNvZGU7CiAKLWNs
YXNzIFNjcmlwdEVsZW1lbnQgewotcHVibGljOgotICAgIFNjcmlwdEVsZW1lbnQoKSB7IH0KLSAg
ICB2aXJ0dWFsIH5TY3JpcHRFbGVtZW50KCkgeyB9Ci0KLSAgICB2aXJ0dWFsIFN0cmluZyBzY3Jp
cHRDb250ZW50KCkgY29uc3QgPSAwOwotCi0gICAgdmlydHVhbCBTdHJpbmcgc291cmNlQXR0cmli
dXRlVmFsdWUoKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCBTdHJpbmcgY2hhcnNldEF0dHJpYnV0
ZVZhbHVlKCkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgU3RyaW5nIHR5cGVBdHRyaWJ1dGVWYWx1
ZSgpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIFN0cmluZyBsYW5ndWFnZUF0dHJpYnV0ZVZhbHVl
KCkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgU3RyaW5nIGZvckF0dHJpYnV0ZVZhbHVlKCkgY29u
c3QgPSAwOwotICAgIHZpcnR1YWwgU3RyaW5nIGV2ZW50QXR0cmlidXRlVmFsdWUoKSBjb25zdCA9
IDA7Ci0gICAgdmlydHVhbCBib29sIGFzeW5jQXR0cmlidXRlVmFsdWUoKSBjb25zdCA9IDA7Ci0g
ICAgdmlydHVhbCBib29sIGRlZmVyQXR0cmlidXRlVmFsdWUoKSBjb25zdCA9IDA7Ci0KLSAgICB2
aXJ0dWFsIHZvaWQgZGlzcGF0Y2hMb2FkRXZlbnQoKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGRp
c3BhdGNoRXJyb3JFdmVudCgpID0gMDsKLQotICAgIC8vIEEgY2hhcnNldCBmb3IgbG9hZGluZyB0
aGUgc2NyaXB0IChtYXkgYmUgb3ZlcnJpZGRlbiBieSBIVFRQIGhlYWRlcnMgb3IgYSBCT00pLgot
ICAgIHZpcnR1YWwgU3RyaW5nIHNjcmlwdENoYXJzZXQoKSBjb25zdCA9IDA7Ci0KLSAgICB2aXJ0
dWFsIGJvb2wgc2hvdWxkRXhlY3V0ZUFzSmF2YVNjcmlwdCgpIGNvbnN0ID0gMDsKLSAgICB2aXJ0
dWFsIHZvaWQgZXhlY3V0ZVNjcmlwdChjb25zdCBTY3JpcHRTb3VyY2VDb2RlJikgPSAwOwotCi1w
cm90ZWN0ZWQ6Ci0gICAgLy8gSGVscGVyIGZ1bmN0aW9ucyB1c2VkIGJ5IG91ciBwYXJlbnQgY2xh
c3Nlcy4KLSAgICBzdGF0aWMgdm9pZCBpbnNlcnRlZEludG9Eb2N1bWVudChTY3JpcHRFbGVtZW50
RGF0YSYsIGNvbnN0IFN0cmluZyYgc291cmNlVXJsKTsKLSAgICBzdGF0aWMgdm9pZCByZW1vdmVk
RnJvbURvY3VtZW50KFNjcmlwdEVsZW1lbnREYXRhJik7Ci0gICAgc3RhdGljIHZvaWQgY2hpbGRy
ZW5DaGFuZ2VkKFNjcmlwdEVsZW1lbnREYXRhJik7Ci0gICAgc3RhdGljIHZvaWQgZmluaXNoUGFy
c2luZ0NoaWxkcmVuKFNjcmlwdEVsZW1lbnREYXRhJiwgY29uc3QgU3RyaW5nJiBzb3VyY2VVcmwp
OwotICAgIHN0YXRpYyB2b2lkIGhhbmRsZVNvdXJjZUF0dHJpYnV0ZShTY3JpcHRFbGVtZW50RGF0
YSYsIGNvbnN0IFN0cmluZyYgc291cmNlVXJsKTsKLX07Ci0KIC8vIEhUTUwvU1ZHU2NyaXB0RWxl
bWVudCBob2xkIHRoaXMgc3RydWN0IGFzIG1lbWJlciB2YXJpYWJsZQogLy8gYW5kIHBhc3MgaXQg
dG8gdGhlIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zIGluIFNjcmlwdEVsZW1lbnQKIGNsYXNzIFNj
cmlwdEVsZW1lbnREYXRhIDogcHJpdmF0ZSBDYWNoZWRSZXNvdXJjZUNsaWVudCB7CkBAIC0xMDcs
NiArNzMsNDQgQEAgcHJpdmF0ZToKICAgICBib29sIG1fZmlyZWRMb2FkOwogfTsKIAorY2xhc3Mg
U2NyaXB0RWxlbWVudCB7CitwdWJsaWM6CisgICAgU2NyaXB0RWxlbWVudChFbGVtZW50KiBlbGVt
ZW50LCBib29sIGNyZWF0ZWRCeVBhcnNlciwgYm9vbCBpc0V2YWx1YXRlZCkKKyAgICA6IG1fZGF0
YSh0aGlzLCBlbGVtZW50LCBpc0V2YWx1YXRlZCkKKyAgICB7CisgICAgICAgIG1fZGF0YS5zZXRD
cmVhdGVkQnlQYXJzZXIoY3JlYXRlZEJ5UGFyc2VyKTsKKyAgICB9CisgICAgdmlydHVhbCB+U2Ny
aXB0RWxlbWVudCgpIHsgfQorCisgICAgLy8gQSBjaGFyc2V0IGZvciBsb2FkaW5nIHRoZSBzY3Jp
cHQgKG1heSBiZSBvdmVycmlkZGVuIGJ5IEhUVFAgaGVhZGVycyBvciBhIEJPTSkuCisgICAgU3Ry
aW5nIHNjcmlwdENoYXJzZXQoKSBjb25zdDsKKyAgICBTdHJpbmcgc2NyaXB0Q29udGVudCgpIGNv
bnN0OworICAgIGJvb2wgc2hvdWxkRXhlY3V0ZUFzSmF2YVNjcmlwdCgpIGNvbnN0OworICAgIHZv
aWQgZXhlY3V0ZVNjcmlwdChjb25zdCBTY3JpcHRTb3VyY2VDb2RlJik7CisgICAgCisgICAgdmly
dHVhbCBTdHJpbmcgc291cmNlQXR0cmlidXRlVmFsdWUoKSBjb25zdCA9IDA7CisgICAgdmlydHVh
bCBTdHJpbmcgY2hhcnNldEF0dHJpYnV0ZVZhbHVlKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwg
U3RyaW5nIHR5cGVBdHRyaWJ1dGVWYWx1ZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFN0cmlu
ZyBsYW5ndWFnZUF0dHJpYnV0ZVZhbHVlKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgU3RyaW5n
IGZvckF0dHJpYnV0ZVZhbHVlKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgU3RyaW5nIGV2ZW50
QXR0cmlidXRlVmFsdWUoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGFzeW5jQXR0cmli
dXRlVmFsdWUoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGRlZmVyQXR0cmlidXRlVmFs
dWUoKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hMb2FkRXZlbnQoKSA9
IDA7CisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRXJyb3JFdmVudCgpID0gMDsKKworcHJvdGVj
dGVkOgorICAgIC8vIEhlbHBlciBmdW5jdGlvbnMgdXNlZCBieSBvdXIgcGFyZW50IGNsYXNzZXMu
CisgICAgdm9pZCBpbnNlcnRlZEludG9Eb2N1bWVudChjb25zdCBTdHJpbmcmIHNvdXJjZVVybCk7
CisgICAgdm9pZCByZW1vdmVkRnJvbURvY3VtZW50KCk7CisgICAgdm9pZCBjaGlsZHJlbkNoYW5n
ZWQoKTsKKyAgICB2b2lkIGZpbmlzaFBhcnNpbmdDaGlsZHJlbihjb25zdCBTdHJpbmcmIHNvdXJj
ZVVybCk7CisgICAgdm9pZCBoYW5kbGVTb3VyY2VBdHRyaWJ1dGUoY29uc3QgU3RyaW5nJiBzb3Vy
Y2VVcmwpOworCisgICAgU2NyaXB0RWxlbWVudERhdGEgbV9kYXRhOworfTsKKwogU2NyaXB0RWxl
bWVudCogdG9TY3JpcHRFbGVtZW50KEVsZW1lbnQqKTsKIAogfQpJbmRleDogV2ViQ29yZS9odG1s
L0hUTUxTY3JpcHRFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTFNj
cmlwdEVsZW1lbnQuY3BwCShyZXZpc2lvbiA3MTkzNSkKKysrIFdlYkNvcmUvaHRtbC9IVE1MU2Ny
aXB0RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3LDEwICszNyw5IEBAIHVzaW5nIG5h
bWVzcGFjZSBIVE1MTmFtZXM7CiAKIGlubGluZSBIVE1MU2NyaXB0RWxlbWVudDo6SFRNTFNjcmlw
dEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50
LCBib29sIGNyZWF0ZWRCeVBhcnNlciwgYm9vbCBpc0V2YWx1YXRlZCkKICAgICA6IEhUTUxFbGVt
ZW50KHRhZ05hbWUsIGRvY3VtZW50KQotICAgICwgbV9kYXRhKHRoaXMsIHRoaXMsIGlzRXZhbHVh
dGVkKQorICAgICwgU2NyaXB0RWxlbWVudCh0aGlzLCBjcmVhdGVkQnlQYXJzZXIsIGlzRXZhbHVh
dGVkKQogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKHNjcmlwdFRhZykpOwotICAgIG1fZGF0YS5z
ZXRDcmVhdGVkQnlQYXJzZXIoY3JlYXRlZEJ5UGFyc2VyKTsKIH0KIAogUGFzc1JlZlB0cjxIVE1M
U2NyaXB0RWxlbWVudD4gSFRNTFNjcmlwdEVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWRO
YW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQsIGJvb2wgY3JlYXRlZEJ5UGFyc2VyKQpA
QCAtNTMsMTQgKzUyLDkgQEAgYm9vbCBIVE1MU2NyaXB0RWxlbWVudDo6aXNVUkxBdHRyaWJ1dGUo
QQogICAgIHJldHVybiBhdHRyLT5uYW1lKCkgPT0gc3JjQXR0cjsKIH0KIAotYm9vbCBIVE1MU2Ny
aXB0RWxlbWVudDo6c2hvdWxkRXhlY3V0ZUFzSmF2YVNjcmlwdCgpIGNvbnN0Ci17Ci0gICAgcmV0
dXJuIG1fZGF0YS5zaG91bGRFeGVjdXRlQXNKYXZhU2NyaXB0KCk7Ci19Ci0KIHZvaWQgSFRNTFNj
cmlwdEVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChib29sIGNoYW5nZWRCeVBhcnNlciwgTm9kZSog
YmVmb3JlQ2hhbmdlLCBOb2RlKiBhZnRlckNoYW5nZSwgaW50IGNoaWxkQ291bnREZWx0YSkKIHsK
LSAgICBTY3JpcHRFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQobV9kYXRhKTsKKyAgICBTY3JpcHRF
bGVtZW50OjpjaGlsZHJlbkNoYW5nZWQoKTsKICAgICBIVE1MRWxlbWVudDo6Y2hpbGRyZW5DaGFu
Z2VkKGNoYW5nZWRCeVBhcnNlciwgYmVmb3JlQ2hhbmdlLCBhZnRlckNoYW5nZSwgY2hpbGRDb3Vu
dERlbHRhKTsKIH0KIApAQCAtNjksNyArNjMsNyBAQCB2b2lkIEhUTUxTY3JpcHRFbGVtZW50Ojpw
YXJzZU1hcHBlZEF0dHJpCiAgICAgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUgPSBhdHRy
LT5uYW1lKCk7CiAKICAgICBpZiAoYXR0ck5hbWUgPT0gc3JjQXR0cikKLSAgICAgICAgaGFuZGxl
U291cmNlQXR0cmlidXRlKG1fZGF0YSwgYXR0ci0+dmFsdWUoKSk7CisgICAgICAgIGhhbmRsZVNv
dXJjZUF0dHJpYnV0ZShhdHRyLT52YWx1ZSgpKTsKICAgICBlbHNlIGlmIChhdHRyTmFtZSA9PSBv
bmxvYWRBdHRyKQogICAgICAgICBzZXRBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMo
KS5sb2FkRXZlbnQsIGNyZWF0ZUF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIodGhpcywgYXR0cikpOwog
ICAgIGVsc2UgaWYgKGF0dHJOYW1lID09IG9uYmVmb3JlbG9hZEF0dHIpCkBAIC04MiwyMCArNzYs
MjAgQEAgdm9pZCBIVE1MU2NyaXB0RWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaQogCiB2b2lkIEhU
TUxTY3JpcHRFbGVtZW50OjpmaW5pc2hQYXJzaW5nQ2hpbGRyZW4oKQogewotICAgIFNjcmlwdEVs
ZW1lbnQ6OmZpbmlzaFBhcnNpbmdDaGlsZHJlbihtX2RhdGEsIHNvdXJjZUF0dHJpYnV0ZVZhbHVl
KCkpOworICAgIFNjcmlwdEVsZW1lbnQ6OmZpbmlzaFBhcnNpbmdDaGlsZHJlbihzb3VyY2VBdHRy
aWJ1dGVWYWx1ZSgpKTsKICAgICBIVE1MRWxlbWVudDo6ZmluaXNoUGFyc2luZ0NoaWxkcmVuKCk7
CiB9CiAKIHZvaWQgSFRNTFNjcmlwdEVsZW1lbnQ6Omluc2VydGVkSW50b0RvY3VtZW50KCkKIHsK
ICAgICBIVE1MRWxlbWVudDo6aW5zZXJ0ZWRJbnRvRG9jdW1lbnQoKTsKLSAgICBTY3JpcHRFbGVt
ZW50OjppbnNlcnRlZEludG9Eb2N1bWVudChtX2RhdGEsIHNvdXJjZUF0dHJpYnV0ZVZhbHVlKCkp
OworICAgIFNjcmlwdEVsZW1lbnQ6Omluc2VydGVkSW50b0RvY3VtZW50KHNvdXJjZUF0dHJpYnV0
ZVZhbHVlKCkpOwogfQogCiB2b2lkIEhUTUxTY3JpcHRFbGVtZW50OjpyZW1vdmVkRnJvbURvY3Vt
ZW50KCkKIHsKICAgICBIVE1MRWxlbWVudDo6cmVtb3ZlZEZyb21Eb2N1bWVudCgpOwotICAgIFNj
cmlwdEVsZW1lbnQ6OnJlbW92ZWRGcm9tRG9jdW1lbnQobV9kYXRhKTsKKyAgICBTY3JpcHRFbGVt
ZW50OjpyZW1vdmVkRnJvbURvY3VtZW50KCk7CiB9CiAKIFN0cmluZyBIVE1MU2NyaXB0RWxlbWVu
dDo6dGV4dCgpIGNvbnN0CkBAIC0xMjQsMTYgKzExOCw2IEBAIEtVUkwgSFRNTFNjcmlwdEVsZW1l
bnQ6OnNyYygpIGNvbnN0CiAgICAgcmV0dXJuIGRvY3VtZW50KCktPmNvbXBsZXRlVVJMKHNvdXJj
ZUF0dHJpYnV0ZVZhbHVlKCkpOwogfQogCi1TdHJpbmcgSFRNTFNjcmlwdEVsZW1lbnQ6OnNjcmlw
dENoYXJzZXQoKSBjb25zdAotewotICAgIHJldHVybiBtX2RhdGEuc2NyaXB0Q2hhcnNldCgpOwot
fQotCi1TdHJpbmcgSFRNTFNjcmlwdEVsZW1lbnQ6OnNjcmlwdENvbnRlbnQoKSBjb25zdAotewot
ICAgIHJldHVybiBtX2RhdGEuc2NyaXB0Q29udGVudCgpOwotfQotCiB2b2lkIEhUTUxTY3JpcHRF
bGVtZW50OjphZGRTdWJyZXNvdXJjZUF0dHJpYnV0ZVVSTHMoTGlzdEhhc2hTZXQ8S1VSTD4mIHVy
bHMpIGNvbnN0CiB7CiAgICAgSFRNTEVsZW1lbnQ6OmFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJM
cyh1cmxzKTsKQEAgLTE5OSw5ICsxODMsNCBAQCBQYXNzUmVmUHRyPEVsZW1lbnQ+IEhUTUxTY3Jp
cHRFbGVtZW50OjpjCiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBIVE1MU2NyaXB0RWxlbWVudCh0
YWdRTmFtZSgpLCBkb2N1bWVudCgpLCBmYWxzZSwgbV9kYXRhLmlzRXZhbHVhdGVkKCkpKTsKIH0K
IAotdm9pZCBIVE1MU2NyaXB0RWxlbWVudDo6ZXhlY3V0ZVNjcmlwdChjb25zdCBTY3JpcHRTb3Vy
Y2VDb2RlJiBzb3VyY2VDb2RlKQotewotICAgIHJldHVybiBtX2RhdGEuZXhlY3V0ZVNjcmlwdChz
b3VyY2VDb2RlKTsKLX0KLQogfQpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxTY3JpcHRFbGVtZW50
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxTY3JpcHRFbGVtZW50LmgJKHJldmlz
aW9uIDcxOTM1KQorKysgV2ViQ29yZS9odG1sL0hUTUxTY3JpcHRFbGVtZW50LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTMzLDIyICszMywxNiBAQCBjbGFzcyBIVE1MU2NyaXB0RWxlbWVudCA6IHB1Ymxp
YyBIVE1MRWxlCiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8SFRNTFNjcmlwdEVsZW1l
bnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqLCBib29sIGNyZWF0ZWRC
eVBhcnNlcik7CiAKLSAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkRXhlY3V0ZUFzSmF2YVNjcmlwdCgp
IGNvbnN0OwotCiAgICAgU3RyaW5nIHRleHQoKSBjb25zdDsKICAgICB2b2lkIHNldFRleHQoY29u
c3QgU3RyaW5nJik7CiAKICAgICBLVVJMIHNyYygpIGNvbnN0OwogCi0gICAgdmlydHVhbCBTdHJp
bmcgc2NyaXB0Q2hhcnNldCgpIGNvbnN0OwotICAgIAogICAgIGJvb2wgaGF2ZUZpcmVkTG9hZEV2
ZW50KCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLmhhdmVGaXJlZExvYWRFdmVudCgpOyB9CiAKIHBy
aXZhdGU6CiAgICAgSFRNTFNjcmlwdEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3Vt
ZW50KiwgYm9vbCBjcmVhdGVkQnlQYXJzZXIsIGJvb2wgaXNFdmFsdWF0ZWQpOwogCi0gICAgdmly
dHVhbCBTdHJpbmcgc2NyaXB0Q29udGVudCgpIGNvbnN0OwotCiAgICAgdmlydHVhbCB2b2lkIHBh
cnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSopOwogICAgIHZpcnR1YWwgdm9pZCBpbnNlcnRl
ZEludG9Eb2N1bWVudCgpOwogICAgIHZpcnR1YWwgdm9pZCByZW1vdmVkRnJvbURvY3VtZW50KCk7
CkBAIC03Miw5ICs2Niw2IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRXJy
b3JFdmVudCgpOwogCiAgICAgUGFzc1JlZlB0cjxFbGVtZW50PiBjbG9uZUVsZW1lbnRXaXRob3V0
QXR0cmlidXRlc0FuZENoaWxkcmVuKCkgY29uc3Q7Ci0gICAgdm9pZCBleGVjdXRlU2NyaXB0KGNv
bnN0IFNjcmlwdFNvdXJjZUNvZGUmKTsKLQotICAgIFNjcmlwdEVsZW1lbnREYXRhIG1fZGF0YTsK
IH07CiAKIH0gLy9uYW1lc3BhY2UKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR1NjcmlwdEVsZW1lbnQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR1NjcmlwdEVsZW1lbnQuY3BwCShyZXZp
c2lvbiA3MTkzNSkKKysrIFdlYkNvcmUvc3ZnL1NWR1NjcmlwdEVsZW1lbnQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zMyw5ICszMyw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogaW5saW5lIFNW
R1NjcmlwdEVsZW1lbnQ6OlNWR1NjcmlwdEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFn
TmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50LCBib29sIGNyZWF0ZWRCeVBhcnNlciwgYm9vbCBpc0V2
YWx1YXRlZCkKICAgICA6IFNWR0VsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpCi0gICAgLCBtX2Rh
dGEodGhpcywgdGhpcywgaXNFdmFsdWF0ZWQpCisgICAgLCBTY3JpcHRFbGVtZW50KHRoaXMsIGNy
ZWF0ZWRCeVBhcnNlciwgaXNFdmFsdWF0ZWQpCiB7Ci0gICAgbV9kYXRhLnNldENyZWF0ZWRCeVBh
cnNlcihjcmVhdGVkQnlQYXJzZXIpOwogfQogCiBQYXNzUmVmUHRyPFNWR1NjcmlwdEVsZW1lbnQ+
IFNWR1NjcmlwdEVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBE
b2N1bWVudCogZG9jdW1lbnQsIGJvb2wgY3JlYXRlZEJ5UGFyc2VyKQpAQCAtNDMsMTEgKzQyLDYg
QEAgUGFzc1JlZlB0cjxTVkdTY3JpcHRFbGVtZW50PiBTVkdTY3JpcHRFbAogICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgU1ZHU2NyaXB0RWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCwgY3JlYXRlZEJ5
UGFyc2VyLCBmYWxzZSkpOwogfQogCi1TdHJpbmcgU1ZHU2NyaXB0RWxlbWVudDo6c2NyaXB0Q29u
dGVudCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fZGF0YS5zY3JpcHRDb250ZW50KCk7Ci19Ci0K
IHZvaWQgU1ZHU2NyaXB0RWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKiBh
dHRyKQogewogICAgIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lID0gYXR0ci0+bmFtZSgp
OwpAQCAtNjksNyArNjMsNyBAQCB2b2lkIFNWR1NjcmlwdEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNo
YW5nCiAgICAgU1ZHRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChhdHRyTmFtZSk7CiAKICAg
ICBpZiAoU1ZHVVJJUmVmZXJlbmNlOjppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkKLSAgICAg
ICAgaGFuZGxlU291cmNlQXR0cmlidXRlKG1fZGF0YSwgaHJlZigpKTsKKyAgICAgICAgaGFuZGxl
U291cmNlQXR0cmlidXRlKGhyZWYoKSk7CiAgICAgZWxzZSBpZiAoU1ZHRXh0ZXJuYWxSZXNvdXJj
ZXNSZXF1aXJlZDo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKICAgICAgICAgLy8gSGFu
ZGxlIGR5bmFtaWMgdXBkYXRlcyBvZiB0aGUgJ2V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQnIGF0
dHJpYnV0ZS4gT25seSBwb3NzaWJsZSBjYXNlOiBjaGFuZ2luZyBmcm9tICd0cnVlJyB0byAnZmFs
c2UnCiAgICAgICAgIC8vIGNhdXNlcyBhbiBpbW1lZGlhdGUgZGlzcGF0Y2ggb2YgdGhlIFNWR0xv
YWQgZXZlbnQuIElmIHRoZSBhdHRyaWJ1dGUgdmFsdWUgd2FzICdmYWxzZScgYmVmb3JlIGluc2Vy
dGluZyB0aGUgc2NyaXB0IGVsZW1lbnQKQEAgLTEwMiw3ICs5Niw3IEBAIHZvaWQgU1ZHU2NyaXB0
RWxlbWVudDo6c3luY2hyb25pemVQcm9wZXIKIHZvaWQgU1ZHU2NyaXB0RWxlbWVudDo6aW5zZXJ0
ZWRJbnRvRG9jdW1lbnQoKQogewogICAgIFNWR0VsZW1lbnQ6Omluc2VydGVkSW50b0RvY3VtZW50
KCk7Ci0gICAgU2NyaXB0RWxlbWVudDo6aW5zZXJ0ZWRJbnRvRG9jdW1lbnQobV9kYXRhLCBzb3Vy
Y2VBdHRyaWJ1dGVWYWx1ZSgpKTsKKyAgICBTY3JpcHRFbGVtZW50OjppbnNlcnRlZEludG9Eb2N1
bWVudChzb3VyY2VBdHRyaWJ1dGVWYWx1ZSgpKTsKIAogICAgIGlmIChtX2RhdGEuY3JlYXRlZEJ5
UGFyc2VyKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTExNywxMiArMTExLDEyIEBAIHZvaWQgU1ZH
U2NyaXB0RWxlbWVudDo6aW5zZXJ0ZWRJbnRvRG9jdW0KIHZvaWQgU1ZHU2NyaXB0RWxlbWVudDo6
cmVtb3ZlZEZyb21Eb2N1bWVudCgpCiB7CiAgICAgU1ZHRWxlbWVudDo6cmVtb3ZlZEZyb21Eb2N1
bWVudCgpOwotICAgIFNjcmlwdEVsZW1lbnQ6OnJlbW92ZWRGcm9tRG9jdW1lbnQobV9kYXRhKTsK
KyAgICBTY3JpcHRFbGVtZW50OjpyZW1vdmVkRnJvbURvY3VtZW50KCk7CiB9CiAKIHZvaWQgU1ZH
U2NyaXB0RWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGJvb2wgY2hhbmdlZEJ5UGFyc2VyLCBOb2Rl
KiBiZWZvcmVDaGFuZ2UsIE5vZGUqIGFmdGVyQ2hhbmdlLCBpbnQgY2hpbGRDb3VudERlbHRhKQog
ewotICAgIFNjcmlwdEVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChtX2RhdGEpOworICAgIFNjcmlw
dEVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZCgpOwogICAgIFNWR0VsZW1lbnQ6OmNoaWxkcmVuQ2hh
bmdlZChjaGFuZ2VkQnlQYXJzZXIsIGJlZm9yZUNoYW5nZSwgYWZ0ZXJDaGFuZ2UsIGNoaWxkQ291
bnREZWx0YSk7CiB9CiAKQEAgLTEzMyw3ICsxMjcsNyBAQCBib29sIFNWR1NjcmlwdEVsZW1lbnQ6
OmlzVVJMQXR0cmlidXRlKEF0CiAKIHZvaWQgU1ZHU2NyaXB0RWxlbWVudDo6ZmluaXNoUGFyc2lu
Z0NoaWxkcmVuKCkKIHsKLSAgICBTY3JpcHRFbGVtZW50OjpmaW5pc2hQYXJzaW5nQ2hpbGRyZW4o
bV9kYXRhLCBzb3VyY2VBdHRyaWJ1dGVWYWx1ZSgpKTsKKyAgICBTY3JpcHRFbGVtZW50OjpmaW5p
c2hQYXJzaW5nQ2hpbGRyZW4oc291cmNlQXR0cmlidXRlVmFsdWUoKSk7CiAgICAgU1ZHRWxlbWVu
dDo6ZmluaXNoUGFyc2luZ0NoaWxkcmVuKCk7CiAKICAgICAvLyBBIFNWR0xvYWQgZXZlbnQgaGFz
IGJlZW4gZmlyZWQgYnkgU1ZHRWxlbWVudDo6ZmluaXNoUGFyc2luZ0NoaWxkcmVuLgpAQCAtMTUx
LDExICsxNDUsNiBAQCB2b2lkIFNWR1NjcmlwdEVsZW1lbnQ6OnNldFR5cGUoY29uc3QgU3RyCiAg
ICAgbV90eXBlID0gdHlwZTsKIH0KIAotU3RyaW5nIFNWR1NjcmlwdEVsZW1lbnQ6OnNjcmlwdENo
YXJzZXQoKSBjb25zdAotewotICAgIHJldHVybiBtX2RhdGEuc2NyaXB0Q2hhcnNldCgpOwotfQot
CiB2b2lkIFNWR1NjcmlwdEVsZW1lbnQ6OmFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcyhMaXN0
SGFzaFNldDxLVVJMPiYgdXJscykgY29uc3QKIHsKICAgICBTVkdFbGVtZW50OjphZGRTdWJyZXNv
dXJjZUF0dHJpYnV0ZVVSTHModXJscyk7CkBAIC0yNDEsMjEgKzIzMCwxMSBAQCB2b2lkIFNWR1Nj
cmlwdEVsZW1lbnQ6OmRpc3BhdGNoRXJyb3JFdmVuCiAgICAgZGlzcGF0Y2hFdmVudChFdmVudDo6
Y3JlYXRlKGV2ZW50TmFtZXMoKS5lcnJvckV2ZW50LCB0cnVlLCBmYWxzZSkpOwogfQogCi1ib29s
IFNWR1NjcmlwdEVsZW1lbnQ6OnNob3VsZEV4ZWN1dGVBc0phdmFTY3JpcHQoKSBjb25zdAotewot
ICAgIHJldHVybiBtX2RhdGEuc2hvdWxkRXhlY3V0ZUFzSmF2YVNjcmlwdCgpOwotfQotCiBQYXNz
UmVmUHRyPEVsZW1lbnQ+IFNWR1NjcmlwdEVsZW1lbnQ6OmNsb25lRWxlbWVudFdpdGhvdXRBdHRy
aWJ1dGVzQW5kQ2hpbGRyZW4oKSBjb25zdAogewogICAgIHJldHVybiBhZG9wdFJlZihuZXcgU1ZH
U2NyaXB0RWxlbWVudCh0YWdRTmFtZSgpLCBkb2N1bWVudCgpLCBmYWxzZSwgbV9kYXRhLmlzRXZh
bHVhdGVkKCkpKTsKIH0KIAotdm9pZCBTVkdTY3JpcHRFbGVtZW50OjpleGVjdXRlU2NyaXB0KGNv
bnN0IFNjcmlwdFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUpCi17Ci0gICAgbV9kYXRhLmV4ZWN1dGVT
Y3JpcHQoc291cmNlQ29kZSk7Ci19Ci0KIH0KIAogI2VuZGlmIC8vIEVOQUJMRShTVkcpCkluZGV4
OiBXZWJDb3JlL3N2Zy9TVkdTY3JpcHRFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9z
dmcvU1ZHU2NyaXB0RWxlbWVudC5oCShyZXZpc2lvbiA3MTkzNSkKKysrIFdlYkNvcmUvc3ZnL1NW
R1NjcmlwdEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDMsOCArNDMsNiBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAgICAgcHJpdmF0ZToKICAgICAgICAgU1ZHU2NyaXB0RWxlbWVudChjb25z
dCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqLCBib29sIGNyZWF0ZWRCeVBhcnNlciwgYm9vbCBp
c0V2YWx1YXRlZCk7CiAKLSAgICAgICAgdmlydHVhbCBTdHJpbmcgc2NyaXB0Q29udGVudCgpIGNv
bnN0OwotCiAgICAgICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1
dGUqKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGluc2VydGVkSW50b0RvY3VtZW50KCk7CiAgICAg
ICAgIHZpcnR1YWwgdm9pZCByZW1vdmVkRnJvbURvY3VtZW50KCk7CkBAIC01NSwxMiArNTMsOCBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc1VSTEF0dHJpYnV0
ZShBdHRyaWJ1dGUqKSBjb25zdDsKICAgICAgICAgdmlydHVhbCB2b2lkIGZpbmlzaFBhcnNpbmdD
aGlsZHJlbigpOwogCi0gICAgICAgIHZpcnR1YWwgU3RyaW5nIHNjcmlwdENoYXJzZXQoKSBjb25z
dDsKLQogICAgICAgICB2aXJ0dWFsIHZvaWQgYWRkU3VicmVzb3VyY2VBdHRyaWJ1dGVVUkxzKExp
c3RIYXNoU2V0PEtVUkw+JikgY29uc3Q7CiAKLSAgICAgICAgdmlydHVhbCBib29sIHNob3VsZEV4
ZWN1dGVBc0phdmFTY3JpcHQoKSBjb25zdDsKLQogICAgICAgICB2aXJ0dWFsIGJvb2wgaGF2ZUxv
YWRlZFJlcXVpcmVkUmVzb3VyY2VzKCk7CiAKICAgICAgICAgdmlydHVhbCBTdHJpbmcgc291cmNl
QXR0cmlidXRlVmFsdWUoKSBjb25zdDsKQEAgLTc2LDcgKzcwLDYgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hFcnJvckV2ZW50KCk7CiAKICAgICAg
ICAgUGFzc1JlZlB0cjxFbGVtZW50PiBjbG9uZUVsZW1lbnRXaXRob3V0QXR0cmlidXRlc0FuZENo
aWxkcmVuKCkgY29uc3Q7Ci0gICAgICAgIHZvaWQgZXhlY3V0ZVNjcmlwdChjb25zdCBTY3JpcHRT
b3VyY2VDb2RlJiBzb3VyY2VDb2RlKTsKIAogICAgICAgICAvLyBTVkdVUklSZWZlcmVuY2UKICAg
ICAgICAgREVDTEFSRV9BTklNQVRFRF9TVEFUSUNfUFJPUEVSVFlfTkVXKFNWR1NjcmlwdEVsZW1l
bnQsIFhMaW5rTmFtZXM6OmhyZWZBdHRyLCBTdHJpbmcsIEhyZWYsIGhyZWYpCkBAIC04NCw3ICs3
Nyw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgLy8gU1ZHRXh0ZXJuYWxSZXNvdXJj
ZXNSZXF1aXJlZAogICAgICAgICBERUNMQVJFX0FOSU1BVEVEX1NUQVRJQ19QUk9QRVJUWV9ORVco
U1ZHU2NyaXB0RWxlbWVudCwgU1ZHTmFtZXM6OmV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRBdHRy
LCBib29sLCBFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVp
cmVkKQogCi0gICAgICAgIFNjcmlwdEVsZW1lbnREYXRhIG1fZGF0YTsKICAgICAgICAgU3RyaW5n
IG1fdHlwZTsKICAgICB9OwogCg==
</data>
<flag name="review"
          id="64270"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>