<?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>161185</bug_id>
          
          <creation_ts>2016-08-24 23:21:45 -0700</creation_ts>
          <short_desc>Add the ability to override the implementation name of IDL enums and dictionaries</short_desc>
          <delta_ts>2016-09-07 18:08:53 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Sam Weinig">sam</reporter>
          <assigned_to name="Sam Weinig">sam</assigned_to>
          <cc>cdumez</cc>
    
    <cc>cgarcia</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>kondapallykalyan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1222994</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2016-08-24 23:21:45 -0700</bug_when>
    <thetext>Add the ability to override the implementation name of IDL enums and dictionaries</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1223132</commentid>
    <comment_count>1</comment_count>
      <attachid>286985</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2016-08-25 11:06:07 -0700</bug_when>
    <thetext>Created attachment 286985
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1223147</commentid>
    <comment_count>2</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2016-08-25 11:37:53 -0700</bug_when>
    <thetext>Committed revision 204978.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1223157</commentid>
    <comment_count>3</comment_count>
      <attachid>286985</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-08-25 11:51:27 -0700</bug_when>
    <thetext>Comment on attachment 286985
Patch

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

&gt; Source/WebCore/bindings/scripts/CodeGeneratorJS.pm:810
&gt; +    if ($codeGenerator-&gt;HasEnumImplementationNameOverride($name)) {

Isn&apos;t this a bit overkill? Why don&apos;t we just check the ImplementedAs extended attribute here?
Then we wouldn&apos;t need to update CodeGenerator.pm at all, right?

&gt; Source/WebCore/bindings/scripts/CodeGeneratorJS.pm:929
&gt; +    if ($codeGenerator-&gt;HasDictionaryImplementationNameOverride($name)) {

Isn&apos;t this a bit overkill? Why don&apos;t we just check the ImplementedAs extended attribute here?
Then we wouldn&apos;t need to update CodeGenerator.pm at all, right?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1223967</commentid>
    <comment_count>4</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-08-27 17:09:38 -0700</bug_when>
    <thetext>I’m kind of sad we needed this. I liked the idea of doing it all just by putting &quot;using&quot; in the various classes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1226805</commentid>
    <comment_count>5</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-09-06 13:33:08 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; I’m kind of sad we needed this. I liked the idea of doing it all just by
&gt; putting &quot;using&quot; in the various classes.

FYI, Simon tried this for DOMWindow::ScrollToOptions / Element::ScrollToOptions and got the following linking error:
duplicate symbol __ZN7WebCore17convertDictionaryINS_15ScrollToOptionsEEEN3WTF8OptionalIT_EERN3JSC9ExecStateENS6_7JSValueE in: OpenSource/WebKitBuild/WebCore.build/Debug/WebCore.build/Objects-normal/x86_64/JSDOMWindow.o  OpenSource/WebKitBuild/WebCore.build/Debug/WebCore.build/Objects-normal/x86_64/JSElement.o</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1226885</commentid>
    <comment_count>6</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-09-06 15:41:40 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; FYI, Simon tried this for DOMWindow::ScrollToOptions /
&gt; Element::ScrollToOptions and got the following linking error:
&gt; duplicate symbol
&gt; __ZN7WebCore17convertDictionaryINS_15ScrollToOptionsEEEN3WTF8OptionalIT_EERN3
&gt; JSC9ExecStateENS6_7JSValueE in:
&gt; OpenSource/WebKitBuild/WebCore.build/Debug/WebCore.build/Objects-normal/
&gt; x86_64/JSDOMWindow.o 
&gt; OpenSource/WebKitBuild/WebCore.build/Debug/WebCore.build/Objects-normal/
&gt; x86_64/JSElement.o

Very interesting. We need to consider how to work around this. One trick might be to mark the functions inline even if they don’t actually get inlined. Or make them templates even though they don’t need to be. But maybe there’s a better solution.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1226886</commentid>
    <comment_count>7</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-09-06 15:45:57 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (In reply to comment #5)
&gt; &gt; FYI, Simon tried this for DOMWindow::ScrollToOptions /
&gt; &gt; Element::ScrollToOptions and got the following linking error:
&gt; &gt; duplicate symbol
&gt; &gt; __ZN7WebCore17convertDictionaryINS_15ScrollToOptionsEEEN3WTF8OptionalIT_EERN3
&gt; &gt; JSC9ExecStateENS6_7JSValueE in:
&gt; &gt; OpenSource/WebKitBuild/WebCore.build/Debug/WebCore.build/Objects-normal/
&gt; &gt; x86_64/JSDOMWindow.o 
&gt; &gt; OpenSource/WebKitBuild/WebCore.build/Debug/WebCore.build/Objects-normal/
&gt; &gt; x86_64/JSElement.o
&gt; 
&gt; Very interesting. We need to consider how to work around this. One trick
&gt; might be to mark the functions inline even if they don’t actually get
&gt; inlined. Or make them templates even though they don’t need to be. But maybe
&gt; there’s a better solution.

I think that if we enabled sharing of dictionaries between IDL files, some of the trouble would go away. Right now, ScrollToOptions is duplicated in DOMWindow.idl and Element.idl that the parsing code is generated twice.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1227454</commentid>
    <comment_count>8</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2016-09-07 18:08:53 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; (In reply to comment #6)
&gt; &gt; (In reply to comment #5)
&gt; &gt; &gt; FYI, Simon tried this for DOMWindow::ScrollToOptions /
&gt; &gt; &gt; Element::ScrollToOptions and got the following linking error:
&gt; &gt; &gt; duplicate symbol
&gt; &gt; &gt; __ZN7WebCore17convertDictionaryINS_15ScrollToOptionsEEEN3WTF8OptionalIT_EERN3
&gt; &gt; &gt; JSC9ExecStateENS6_7JSValueE in:
&gt; &gt; &gt; OpenSource/WebKitBuild/WebCore.build/Debug/WebCore.build/Objects-normal/
&gt; &gt; &gt; x86_64/JSDOMWindow.o 
&gt; &gt; &gt; OpenSource/WebKitBuild/WebCore.build/Debug/WebCore.build/Objects-normal/
&gt; &gt; &gt; x86_64/JSElement.o
&gt; &gt; 
&gt; &gt; Very interesting. We need to consider how to work around this. One trick
&gt; &gt; might be to mark the functions inline even if they don’t actually get
&gt; &gt; inlined. Or make them templates even though they don’t need to be. But maybe
&gt; &gt; there’s a better solution.
&gt; 
&gt; I think that if we enabled sharing of dictionaries between IDL files, some
&gt; of the trouble would go away. Right now, ScrollToOptions is duplicated in
&gt; DOMWindow.idl and Element.idl that the parsing code is generated twice.

What is the plan for that? Should we pull all dictionaries / enumerations out into their own idl files and have them generate their own .h/cpp files? If we do that, how will the code generator know that a type is a dictionary and not an interface type? Should we generate a type mapping for all types up front? Do it lazily? So many questions.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>286985</attachid>
            <date>2016-08-25 11:06:07 -0700</date>
            <delta_ts>2016-08-25 11:35:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-161185-20160825110406.patch</filename>
            <type>text/plain</type>
            <size>15105</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwNDk2OSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMxIEBACisyMDE2LTA4LTI0ICBTYW0gV2Vp
bmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRkIHRoZSBhYmlsaXR5IHRvIG92ZXJy
aWRlIHRoZSBpbXBsZW1lbnRhdGlvbiBuYW1lIG9mIElETCBlbnVtcyBhbmQgZGljdGlvbmFyaWVz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjExODUK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGJpbmRp
bmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvci5wbToKKyAgICAgICAgKFByb2Nlc3NEb2N1bWVudCk6
CisgICAgICAgIEJ1aWxkIGEgZGljdGlvbmFyeSBvZiBJREwgbmFtZSAtPiBpbXBsZW1lbnRhdGlv
biBuYW1lIG92ZXJyaWRlcworICAgICAgICBmb3IgZW51bXMgYW5kIGRpY3Rpb25hcmllcyB1cCBm
cm9udCBiYXNlZCBvbiBJbXBsZW1lbnRlZEFzIGV4dGVuZGVkCisgICAgICAgIGF0dHJpYnV0ZS4K
KworICAgICAgICAoSGFzRW51bUltcGxlbWVudGF0aW9uTmFtZU92ZXJyaWRlKToKKyAgICAgICAg
KEdldEVudW1JbXBsZW1lbnRhdGlvbk5hbWVPdmVycmlkZSk6CisgICAgICAgIChIYXNEaWN0aW9u
YXJ5SW1wbGVtZW50YXRpb25OYW1lT3ZlcnJpZGUpOgorICAgICAgICAoR2V0RGljdGlvbmFyeUlt
cGxlbWVudGF0aW9uTmFtZU92ZXJyaWRlKToKKyAgICAgICAgRXhwb3NlIHByZWRpY2F0ZSBhbmQg
Z2V0dGVyIGZvciBuYW1lIG92ZXJyaWRlcy4KKworICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
Q29kZUdlbmVyYXRvckpTLnBtOgorICAgICAgICAoR2V0RW51bWVyYXRpb25DbGFzc05hbWUpOgor
ICAgICAgICAoR2V0RGljdGlvbmFyeUNsYXNzTmFtZSk6CisgICAgICAgIFVzZSB0aGUgb3ZlcnJp
ZGUgbmFtZXMgYXMgbmVjZXNzYXJ5LgorCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L1Rlc3RPYmouaWRsOgorICAgICAgICBBZGQgdGVzdHMgZm9yIGVudW1zIGFuZCBkaWN0aW9uYXJp
ZXMgd2l0aCBJbXBsZW1lbnRlZEFzIGV4dGVuZGVkCisgICAgICAgIGF0dHJpYnV0ZXMuCisKIDIw
MTYtMDgtMjUgIENzYWJhIE9zenRyb2dvbsOhYyAgPG9zc3lAd2Via2l0Lm9yZz4KIAogICAgICAg
ICBbTWFjXVtjbWFrZV0gVW5yZXZpZXdlZCBzcGVjdWxhdGl2ZSBidWlsZGZpeCBhZnRlciByMjA0
ODUyLCBqdXN0IGZvciBmdW4uCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L0NvZGVHZW5lcmF0b3IucG0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy9Db2RlR2VuZXJhdG9yLnBtCShyZXZpc2lvbiAyMDQ5NjkpCisrKyBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3IucG0JKHdvcmtpbmcgY29weSkKQEAg
LTcwLDggKzcwLDEyIEBAIG15ICV3ZWJDb3JlVHlwZUhhc2ggPSAoCiAgICAgIlNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZSIgPT4gMSwKICk7CiAKLW15ICVlbnVtVHlwZUhhc2ggPSAoKTsKIG15ICVkaWN0
aW9uYXJ5VHlwZXMgPSAoKTsKK215ICVkaWN0aW9uYXJ5VHlwZUltcGxlbWVudGF0aW9uTmFtZU92
ZXJyaWRlcyA9ICgpOworCitteSAlZW51bVR5cGVIYXNoID0gKCk7CitteSAlZW51bVR5cGVJbXBs
ZW1lbnRhdGlvbk5hbWVPdmVycmlkZXMgPSAoKTsKKwogCiBteSAldHlwZWRBcnJheVR5cGVzID0g
KAogICAgICJBcnJheUJ1ZmZlciIgPT4gMSwKQEAgLTE2Myw4ICsxNjcsMTkgQEAgc3ViIFByb2Nl
c3NEb2N1bWVudAogICAgIG15ICRpZmFjZU5hbWUgPSAiQ29kZUdlbmVyYXRvciIgLiAkdXNlR2Vu
ZXJhdG9yOwogICAgIHJlcXVpcmUgJGlmYWNlTmFtZSAuICIucG0iOwogCi0gICAgJWVudW1UeXBl
SGFzaCA9IG1hcCB7ICRfLT5uYW1lID0+ICRfLT52YWx1ZXMgfSBAeyR1c2VEb2N1bWVudC0+ZW51
bWVyYXRpb25zfTsKLSAgICAlZGljdGlvbmFyeVR5cGVzID0gbWFwIHsgJF8tPm5hbWUgPT4gMSB9
IEB7JHVzZURvY3VtZW50LT5kaWN0aW9uYXJpZXN9OworICAgIGZvcmVhY2ggbXkgJGRpY3Rpb25h
cnkgKEB7JHVzZURvY3VtZW50LT5kaWN0aW9uYXJpZXN9KSB7CisgICAgICAgICRkaWN0aW9uYXJ5
VHlwZXN7JGRpY3Rpb25hcnktPm5hbWV9ID0gMTsKKyAgICAgICAgaWYgKCRkaWN0aW9uYXJ5LT5l
eHRlbmRlZEF0dHJpYnV0ZXMtPnsiSW1wbGVtZW50ZWRBcyJ9KSB7CisgICAgICAgICAgICAkZGlj
dGlvbmFyeVR5cGVJbXBsZW1lbnRhdGlvbk5hbWVPdmVycmlkZXN7JGRpY3Rpb25hcnktPm5hbWV9
ID0gJGRpY3Rpb25hcnktPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJJbXBsZW1lbnRlZEFzIn07Cisg
ICAgICAgIH0KKyAgICB9CisKKyAgICBmb3JlYWNoIG15ICRlbnVtZXJhdGlvbiAoQHskdXNlRG9j
dW1lbnQtPmVudW1lcmF0aW9uc30pIHsKKyAgICAgICAgJGVudW1UeXBlSGFzaHskZW51bWVyYXRp
b24tPm5hbWV9ID0gJGVudW1lcmF0aW9uLT52YWx1ZXM7CisgICAgICAgIGlmICgkZW51bWVyYXRp
b24tPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJJbXBsZW1lbnRlZEFzIn0pIHsKKyAgICAgICAgICAg
ICRlbnVtVHlwZUltcGxlbWVudGF0aW9uTmFtZU92ZXJyaWRlc3skZW51bWVyYXRpb24tPm5hbWV9
ID0gJGVudW1lcmF0aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSW1wbGVtZW50ZWRBcyJ9Owor
ICAgICAgICB9CisgICAgfQogCiAgICAgIyBEeW5hbWljYWxseSBsb2FkIGV4dGVybmFsIGNvZGUg
Z2VuZXJhdGlvbiBwZXJsIG1vZHVsZQogICAgICRjb2RlR2VuZXJhdG9yID0gJGlmYWNlTmFtZS0+
bmV3KCRvYmplY3QsICR3cml0ZURlcGVuZGVuY2llcywgJHZlcmJvc2UsICR0YXJnZXRJZGxGaWxl
UGF0aCk7CkBAIC0zOTUsOCArNDEwLDcgQEAgc3ViIElzUHJpbWl0aXZlVHlwZQogIyBDdXJyZW50
bHkgdXNlZCBvdXRzaWRlIFdlYktpdCBpbiBhbiBpbnRlcm5hbCBBcHBsZSBwcm9qZWN0OyBjYW4g
YmUgcmVtb3ZlZCBzb29uLgogc3ViIElzU3RyaW5nVHlwZQogewotICAgIG15ICRvYmplY3QgPSBz
aGlmdDsKLSAgICBteSAkdHlwZSA9IHNoaWZ0OworICAgIG15ICgkb2JqZWN0LCAkdHlwZSkgPSBA
XzsKIAogICAgIHJldHVybiAxIGlmICR0eXBlIGVxICJET01TdHJpbmciOwogICAgIHJldHVybiAx
IGlmICR0eXBlIGVxICJVU1ZTdHJpbmciOwpAQCAtNDA1LDggKzQxOSw3IEBAIHN1YiBJc1N0cmlu
Z1R5cGUKIAogc3ViIElzRW51bVR5cGUKIHsKLSAgICBteSAkb2JqZWN0ID0gc2hpZnQ7Ci0gICAg
bXkgJHR5cGUgPSBzaGlmdDsKKyAgICBteSAoJG9iamVjdCwgJHR5cGUpID0gQF87CiAKICAgICBy
ZXR1cm4gMSBpZiBleGlzdHMgJGVudW1UeXBlSGFzaHskdHlwZX07CiAgICAgcmV0dXJuIDA7CkBA
IC00MTQsMTcgKzQyNyw0NyBAQCBzdWIgSXNFbnVtVHlwZQogCiBzdWIgVmFsaWRFbnVtVmFsdWVz
CiB7Ci0gICAgbXkgJG9iamVjdCA9IHNoaWZ0OwotICAgIG15ICR0eXBlID0gc2hpZnQ7CisgICAg
bXkgKCRvYmplY3QsICR0eXBlKSA9IEBfOwogCiAgICAgcmV0dXJuIEB7JGVudW1UeXBlSGFzaHsk
dHlwZX19OwogfQogCitzdWIgSGFzRW51bUltcGxlbWVudGF0aW9uTmFtZU92ZXJyaWRlCit7Cisg
ICAgbXkgKCRvYmplY3QsICR0eXBlKSA9IEBfOworCisgICAgcmV0dXJuIDEgaWYgZXhpc3RzICRl
bnVtVHlwZUltcGxlbWVudGF0aW9uTmFtZU92ZXJyaWRlc3skdHlwZX07CisgICAgcmV0dXJuIDA7
Cit9CisKK3N1YiBHZXRFbnVtSW1wbGVtZW50YXRpb25OYW1lT3ZlcnJpZGUKK3sKKyAgICBteSAo
JG9iamVjdCwgJHR5cGUpID0gQF87CisKKyAgICByZXR1cm4gJGVudW1UeXBlSW1wbGVtZW50YXRp
b25OYW1lT3ZlcnJpZGVzeyR0eXBlfTsKK30KKwogc3ViIElzRGljdGlvbmFyeVR5cGUKIHsKICAg
ICBteSAoJG9iamVjdCwgJHR5cGUpID0gQF87CiAKLSAgICByZXR1cm4gJGRpY3Rpb25hcnlUeXBl
c3skdHlwZX0gfHwgMDsKKyAgICByZXR1cm4gMSBpZiBleGlzdHMgJGRpY3Rpb25hcnlUeXBlc3sk
dHlwZX07CisgICAgcmV0dXJuIDA7Cit9CisKK3N1YiBIYXNEaWN0aW9uYXJ5SW1wbGVtZW50YXRp
b25OYW1lT3ZlcnJpZGUKK3sKKyAgICBteSAoJG9iamVjdCwgJHR5cGUpID0gQF87CisKKyAgICBy
ZXR1cm4gMSBpZiBleGlzdHMgJGRpY3Rpb25hcnlUeXBlSW1wbGVtZW50YXRpb25OYW1lT3ZlcnJp
ZGVzeyR0eXBlfTsKKyAgICByZXR1cm4gMDsKK30KKworc3ViIEdldERpY3Rpb25hcnlJbXBsZW1l
bnRhdGlvbk5hbWVPdmVycmlkZQoreworICAgIG15ICgkb2JqZWN0LCAkdHlwZSkgPSBAXzsKKwor
ICAgIHJldHVybiAkZGljdGlvbmFyeVR5cGVJbXBsZW1lbnRhdGlvbk5hbWVPdmVycmlkZXN7JHR5
cGV9OwogfQogCiBzdWIgSXNOb25Qb2ludGVyVHlwZQpJbmRleDogU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0JKHJldmlzaW9uIDIwNDk2
OSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBt
CSh3b3JraW5nIGNvcHkpCkBAIC04MDcsNiArODA3LDEwIEBAIHN1YiBHZXRFbnVtZXJhdGlvbkNs
YXNzTmFtZQogewogICAgIG15ICgkaW50ZXJmYWNlLCAkbmFtZSkgPSBAXzsKIAorICAgIGlmICgk
Y29kZUdlbmVyYXRvci0+SGFzRW51bUltcGxlbWVudGF0aW9uTmFtZU92ZXJyaWRlKCRuYW1lKSkg
eworICAgICAgICByZXR1cm4gJGNvZGVHZW5lcmF0b3ItPkdldEVudW1JbXBsZW1lbnRhdGlvbk5h
bWVPdmVycmlkZSgkbmFtZSk7CisgICAgfQorCiAgICAgcmV0dXJuIEdldE5lc3RlZENsYXNzTmFt
ZSgkaW50ZXJmYWNlLCAkbmFtZSk7CiB9CiAKQEAgLTkyMiw2ICs5MjYsMTAgQEAgc3ViIEdldERp
Y3Rpb25hcnlDbGFzc05hbWUKIHsKICAgICBteSAoJGludGVyZmFjZSwgJG5hbWUpID0gQF87CiAK
KyAgICBpZiAoJGNvZGVHZW5lcmF0b3ItPkhhc0RpY3Rpb25hcnlJbXBsZW1lbnRhdGlvbk5hbWVP
dmVycmlkZSgkbmFtZSkpIHsKKyAgICAgICAgcmV0dXJuICRjb2RlR2VuZXJhdG9yLT5HZXREaWN0
aW9uYXJ5SW1wbGVtZW50YXRpb25OYW1lT3ZlcnJpZGUoJG5hbWUpOworICAgIH0KKwogICAgIHJl
dHVybiBHZXROZXN0ZWRDbGFzc05hbWUoJGludGVyZmFjZSwgJG5hbWUpOwogfQogCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE9iai5pZGwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RPYmouaWRsCShy
ZXZpc2lvbiAyMDQ5NjkpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
VGVzdE9iai5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTIsNyArMiw3IEBACiAgKiBDb3B5cmlnaHQg
KEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAo
QykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtc3RyQXJnLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bSwgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKICAqIGFyZSBtZXQ6CiAgKgpAQCAtMjgs
MTMgKzI4LDE1IEBACiAgKi8KIAogLy8gVGhpcyBJREwgZmlsZSBpcyBmb3IgdGVzdGluZyB0aGUg
YmluZGluZ3MgY29kZSBnZW5lcmF0b3IgYW5kIGZvciB0cmFja2luZwotLy8gY2hhbmdlcyBpbiBp
dHMgb3VwdXQuCisvLyBjaGFuZ2VzIGluIGl0cyBvdXRwdXQuCiAKIGVudW0gVGVzdEVudW1UeXBl
IHsgIiIsICJlbnVtVmFsdWUxIiwgIkVudW1WYWx1ZTIiLCAiRW51bVZhbHVlMyIgfTsKIAogLy8g
TGVhZGluZyB1bmRlcnNjb3JlIG9uIGFuIGVudW0gc2hvdWxkIGJlIHJlbW92ZWQuCiBlbnVtIF9v
cHRpb25hbCB7ICIiLCAiT3B0aW9uYWxWYWx1ZTEiLCAiT3B0aW9uYWxWYWx1ZTIiLCAiT3B0aW9u
YWxWYWx1ZTMiIH07CiAKK1tJbXBsZW1lbnRlZEFzPUFsdGVybmF0ZUVudW1OYW1lXSBlbnVtIFRl
c3RFbnVtVHlwZVdpdGhBbHRlcm5hdGVJbXBsZW1lbnRhdGlvbk5hbWUgeyAiZW51bVZhbHVlMSIs
ICJFbnVtVmFsdWUyIiB9OworCiBbQ29uZGl0aW9uYWw9Q29uZGl0aW9uMV0gZW51bSBUZXN0RW51
bUEgeyAiQSIgfTsKIFtDb25kaXRpb25hbD1Db25kaXRpb24xJkNvbmRpdGlvbjJdIGVudW0gVGVz
dEVudW1CIHsgIkIiIH07CiBbQ29uZGl0aW9uYWw9Q29uZGl0aW9uMXxDb25kaXRpb24yXSBlbnVt
IFRlc3RFbnVtQyB7ICJDIiB9OwpAQCAtNzksNiArODEsOCBAQCBlbnVtIFRlc3RDb25maWRlbmNl
IHsgImhpZ2giLCAia2luZGEtbG93CiAgICAgW1RyZWF0TnVsbEFzPUVtcHR5U3RyaW5nXSBhdHRy
aWJ1dGUgVVNWU3RyaW5nIHVzdnN0cmluZ0F0dHJUcmVhdGluZ051bGxBc0VtcHR5U3RyaW5nOwog
I2VuZGlmCiAKKyAgICBhdHRyaWJ1dGUgVGVzdEVudW1UeXBlV2l0aEFsdGVybmF0ZUltcGxlbWVu
dGF0aW9uTmFtZSBpbXBsZW1lbnRhdGlvbkVudW1BdHRyOworCiAgICAgLy8gV0tfdWNmaXJzdCwg
V0tfbGNmaXJzdCBleGNlcHRpb25hbCBjYXNlcy4KICAgICBhdHRyaWJ1dGUgVGVzdE9iaiAgICAg
ICAgICAgICAgICAgIFhNTE9iakF0dHI7CiAgICAgYXR0cmlidXRlIGJvb2xlYW4gICAgICAgICAg
ICAgICAgICBjcmVhdGU7CkBAIC00NDksMyArNDUzLDEwIEBAIGRpY3Rpb25hcnkgVGVzdERpY3Rp
b25hcnlUaGF0U2hvdWxkVG9sZXIKICAgICBUZXN0RW51bVR5cGUgZW51bWVyYXRpb25WYWx1ZTsK
ICAgICBib29sZWFuIGJvb2xlYW5XaXRob3V0RGVmYXVsdDsKIH07CisKK1sKKyAgICBJbXBsZW1l
bnRlZEFzPUFsdGVybmF0ZURpY3Rpb25hcnlOYW1lCitdIGRpY3Rpb25hcnkgVGVzdERpY3Rpb25h
cnlXaXRoQWx0ZXJuYXRlSW1wbGVtZW50YXRpb25OYW1lIHsKKyAgICBUZXN0RW51bVR5cGUgZW51
bWVyYXRpb25WYWx1ZTsKKyAgICBib29sZWFuIGJvb2xlYW5XaXRob3V0RGVmYXVsdDsKK307Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0T2JqLmNwcAkocmV2aXNpb24gMjA0OTY5KQorKysgU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5NCw2
ICsxOTQsNDkgQEAgdGVtcGxhdGU8PiBpbmxpbmUgY29uc3QgY2hhciogZXhwZWN0ZWRFbgogICAg
IHJldHVybiAiXCJcIiwgXCJPcHRpb25hbFZhbHVlMVwiLCBcIk9wdGlvbmFsVmFsdWUyXCIsIFwi
T3B0aW9uYWxWYWx1ZTNcIiI7CiB9CiAKK0pTU3RyaW5nKiBqc1N0cmluZ1dpdGhDYWNoZShFeGVj
U3RhdGUqLCBBbHRlcm5hdGVFbnVtTmFtZSk7CisKK0pTU3RyaW5nKiBqc1N0cmluZ1dpdGhDYWNo
ZShFeGVjU3RhdGUqIHN0YXRlLCBBbHRlcm5hdGVFbnVtTmFtZSBlbnVtZXJhdGlvblZhbHVlKQor
eworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBTdHJpbmc+IHZhbHVlc1tdID0gewor
ICAgICAgICBBU0NJSUxpdGVyYWwoImVudW1WYWx1ZTEiKSwKKyAgICAgICAgQVNDSUlMaXRlcmFs
KCJFbnVtVmFsdWUyIiksCisgICAgfTsKKyAgICBzdGF0aWNfYXNzZXJ0KHN0YXRpY19jYXN0PHNp
emVfdD4oQWx0ZXJuYXRlRW51bU5hbWU6OkVudW1WYWx1ZTEpID09IDAsICJBbHRlcm5hdGVFbnVt
TmFtZTo6RW51bVZhbHVlMSBpcyBub3QgMCBhcyBleHBlY3RlZCIpOworICAgIHN0YXRpY19hc3Nl
cnQoc3RhdGljX2Nhc3Q8c2l6ZV90PihBbHRlcm5hdGVFbnVtTmFtZTo6RW51bVZhbHVlMikgPT0g
MSwgIkFsdGVybmF0ZUVudW1OYW1lOjpFbnVtVmFsdWUyIGlzIG5vdCAxIGFzIGV4cGVjdGVkIik7
CisgICAgQVNTRVJUKHN0YXRpY19jYXN0PHNpemVfdD4oZW51bWVyYXRpb25WYWx1ZSkgPCBXVEZf
QVJSQVlfTEVOR1RIKHZhbHVlcykpOworICAgIHJldHVybiBqc1N0cmluZ1dpdGhDYWNoZShzdGF0
ZSwgdmFsdWVzW3N0YXRpY19jYXN0PHNpemVfdD4oZW51bWVyYXRpb25WYWx1ZSldKTsKK30KKwor
dGVtcGxhdGU8PiBzdHJ1Y3QgSlNWYWx1ZVRyYWl0czxBbHRlcm5hdGVFbnVtTmFtZT4geworICAg
IHN0YXRpYyBKU1N0cmluZyogYXJyYXlKU1ZhbHVlKEV4ZWNTdGF0ZSogc3RhdGUsIEpTRE9NR2xv
YmFsT2JqZWN0KiwgQWx0ZXJuYXRlRW51bU5hbWUgdmFsdWUpIHsgcmV0dXJuIGpzU3RyaW5nV2l0
aENhY2hlKHN0YXRlLCB2YWx1ZSk7IH0KK307CisKK3RlbXBsYXRlPD4gT3B0aW9uYWw8QWx0ZXJu
YXRlRW51bU5hbWU+IHBhcnNlPEFsdGVybmF0ZUVudW1OYW1lPihFeGVjU3RhdGUmIHN0YXRlLCBK
U1ZhbHVlIHZhbHVlKQoreworICAgIGF1dG8gc3RyaW5nVmFsdWUgPSB2YWx1ZS50b1dURlN0cmlu
Zygmc3RhdGUpOworICAgIGlmIChzdHJpbmdWYWx1ZSA9PSAiZW51bVZhbHVlMSIpCisgICAgICAg
IHJldHVybiBBbHRlcm5hdGVFbnVtTmFtZTo6RW51bVZhbHVlMTsKKyAgICBpZiAoc3RyaW5nVmFs
dWUgPT0gIkVudW1WYWx1ZTIiKQorICAgICAgICByZXR1cm4gQWx0ZXJuYXRlRW51bU5hbWU6OkVu
dW1WYWx1ZTI7CisgICAgcmV0dXJuIE51bGxvcHQ7Cit9CisKK3RlbXBsYXRlPD4gQWx0ZXJuYXRl
RW51bU5hbWUgY29udmVydDxBbHRlcm5hdGVFbnVtTmFtZT4oRXhlY1N0YXRlJiBzdGF0ZSwgSlNW
YWx1ZSB2YWx1ZSkKK3sKKyAgICBhdXRvIHJlc3VsdCA9IHBhcnNlPEFsdGVybmF0ZUVudW1OYW1l
PihzdGF0ZSwgdmFsdWUpOworICAgIGlmIChVTkxJS0VMWSghcmVzdWx0KSkgeworICAgICAgICB0
aHJvd1R5cGVFcnJvcigmc3RhdGUpOworICAgICAgICByZXR1cm4geyB9OworICAgIH0KKyAgICBy
ZXR1cm4gcmVzdWx0LnZhbHVlKCk7Cit9CisKK3RlbXBsYXRlPD4gaW5saW5lIGNvbnN0IGNoYXIq
IGV4cGVjdGVkRW51bWVyYXRpb25WYWx1ZXM8QWx0ZXJuYXRlRW51bU5hbWU+KCkKK3sKKyAgICBy
ZXR1cm4gIlwiZW51bVZhbHVlMVwiLCBcIkVudW1WYWx1ZTJcIiI7Cit9CisKICNpZiBFTkFCTEUo
Q29uZGl0aW9uMSkKIAogSlNTdHJpbmcqIGpzU3RyaW5nV2l0aENhY2hlKEV4ZWNTdGF0ZSosIFRl
c3RPYmo6OkVudW1BKTsKQEAgLTU5NCw2ICs2MzcsMjIgQEAgdGVtcGxhdGU8PiBPcHRpb25hbDxU
ZXN0T2JqOjpEaWN0aW9uYXJ5VAogICAgIHJldHVybiBUZXN0T2JqOjpEaWN0aW9uYXJ5VGhhdFNo
b3VsZFRvbGVyYXRlTnVsbCB7IFdURk1vdmUoZW51bWVyYXRpb25WYWx1ZSksIFdURk1vdmUoYm9v
bGVhbldpdGhvdXREZWZhdWx0KSB9OwogfQogCit0ZW1wbGF0ZTw+IE9wdGlvbmFsPEFsdGVybmF0
ZURpY3Rpb25hcnlOYW1lPiBjb252ZXJ0RGljdGlvbmFyeTxBbHRlcm5hdGVEaWN0aW9uYXJ5TmFt
ZT4oRXhlY1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSB2YWx1ZSkKK3sKKyAgICBpZiAodmFsdWUuaXNV
bmRlZmluZWRPck51bGwoKSkKKyAgICAgICAgcmV0dXJuIEFsdGVybmF0ZURpY3Rpb25hcnlOYW1l
IHsgeyB9LCB7IH0gfTsKKyAgICBhdXRvKiBvYmplY3QgPSB2YWx1ZS5nZXRPYmplY3QoKTsKKyAg
ICBpZiAoVU5MSUtFTFkoIW9iamVjdCB8fCBvYmplY3QtPnR5cGUoKSA9PSBSZWdFeHBPYmplY3RU
eXBlKSkgeworICAgICAgICB0aHJvd1R5cGVFcnJvcigmc3RhdGUpOworICAgICAgICByZXR1cm4g
TnVsbG9wdDsKKyAgICB9CisgICAgYXV0byBlbnVtZXJhdGlvblZhbHVlID0gY29udmVydE9wdGlv
bmFsPFRlc3RPYmo6OkVudW1UeXBlPihzdGF0ZSwgb2JqZWN0LT5nZXQoJnN0YXRlLCBJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKCZzdGF0ZSwgImVudW1lcmF0aW9uVmFsdWUiKSkpOworICAgIGlmIChV
TkxJS0VMWShzdGF0ZS5oYWRFeGNlcHRpb24oKSkpCisgICAgICAgIHJldHVybiBOdWxsb3B0Owor
ICAgIGF1dG8gYm9vbGVhbldpdGhvdXREZWZhdWx0ID0gY29udmVydE9wdGlvbmFsPGJvb2w+KHN0
YXRlLCBvYmplY3QtPmdldCgmc3RhdGUsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnN0YXRlLCAi
Ym9vbGVhbldpdGhvdXREZWZhdWx0IikpKTsKKyAgICByZXR1cm4gQWx0ZXJuYXRlRGljdGlvbmFy
eU5hbWUgeyBXVEZNb3ZlKGVudW1lcmF0aW9uVmFsdWUpLCBXVEZNb3ZlKGJvb2xlYW5XaXRob3V0
RGVmYXVsdCkgfTsKK30KKwogLy8gRnVuY3Rpb25zCiAKICNpZiBFTkFCTEUoVEVTVF9GRUFUVVJF
KQpAQCAtNzc0LDYgKzgzMyw4IEBAIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqU3RyaW5n
QXR0clQKIGJvb2wgc2V0SlNUZXN0T2JqU3RyaW5nQXR0clRyZWF0aW5nTnVsbEFzRW1wdHlTdHJp
bmcoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1Zh
bHVlKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqVXN2c3RyaW5nQXR0clRyZWF0aW5n
TnVsbEFzRW1wdHlTdHJpbmcoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBK
U0M6OlByb3BlcnR5TmFtZSk7CiBib29sIHNldEpTVGVzdE9ialVzdnN0cmluZ0F0dHJUcmVhdGlu
Z051bGxBc0VtcHR5U3RyaW5nKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwg
SlNDOjpFbmNvZGVkSlNWYWx1ZSk7CitKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakltcGxl
bWVudGF0aW9uRW51bUF0dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBK
U0M6OlByb3BlcnR5TmFtZSk7Citib29sIHNldEpTVGVzdE9iakltcGxlbWVudGF0aW9uRW51bUF0
dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1Zh
bHVlKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqWE1MT2JqQXR0cihKU0M6OkV4ZWNT
dGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKIGJvb2wgc2V0
SlNUZXN0T2JqWE1MT2JqQXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUs
IEpTQzo6RW5jb2RlZEpTVmFsdWUpOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpDcmVh
dGUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFt
ZSk7CkBAIC0xMDk2LDYgKzExNTcsNyBAQCBzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNU
ZXN0T2JqUHJvCiAgICAgeyAibGVuaWVudFRlc3RPYmpBdHRyIiwgQ3VzdG9tQWNjZXNzb3IsIE5v
SW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVl
RnVuYz4oanNUZXN0T2JqTGVuaWVudFRlc3RPYmpBdHRyKSwgKGludHB0cl90KSBzdGF0aWNfY2Fz
dDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0T2JqTGVuaWVudFRlc3RP
YmpBdHRyKSB9IH0sCiAgICAgeyAic3RyaW5nQXR0clRyZWF0aW5nTnVsbEFzRW1wdHlTdHJpbmci
LCBDdXN0b21BY2Nlc3NvciwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFBy
b3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RPYmpTdHJpbmdBdHRyVHJlYXRpbmdOdWxs
QXNFbXB0eVN0cmluZyksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQ
dXRWYWx1ZUZ1bmM+KHNldEpTVGVzdE9ialN0cmluZ0F0dHJUcmVhdGluZ051bGxBc0VtcHR5U3Ry
aW5nKSB9IH0sCiAgICAgeyAidXN2c3RyaW5nQXR0clRyZWF0aW5nTnVsbEFzRW1wdHlTdHJpbmci
LCBDdXN0b21BY2Nlc3NvciwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFBy
b3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RPYmpVc3ZzdHJpbmdBdHRyVHJlYXRpbmdO
dWxsQXNFbXB0eVN0cmluZyksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90
OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdE9ialVzdnN0cmluZ0F0dHJUcmVhdGluZ051bGxBc0Vt
cHR5U3RyaW5nKSB9IH0sCisgICAgeyAiaW1wbGVtZW50YXRpb25FbnVtQXR0ciIsIEN1c3RvbUFj
Y2Vzc29yLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90
OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE9iakltcGxlbWVudGF0aW9uRW51bUF0dHIpLCAoaW50cHRy
X3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RP
YmpJbXBsZW1lbnRhdGlvbkVudW1BdHRyKSB9IH0sCiAgICAgeyAiWE1MT2JqQXR0ciIsIEN1c3Rv
bUFjY2Vzc29yLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlT
bG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE9ialhNTE9iakF0dHIpLCAoaW50cHRyX3QpIHN0YXRp
Y19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RPYmpYTUxPYmpB
dHRyKSB9IH0sCiAgICAgeyAiY3JlYXRlIiwgQ3VzdG9tQWNjZXNzb3IsIE5vSW50cmluc2ljLCB7
IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0
T2JqQ3JlYXRlKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZh
bHVlRnVuYz4oc2V0SlNUZXN0T2JqQ3JlYXRlKSB9IH0sCiAgICAgeyAicmVmbGVjdGVkU3RyaW5n
QXR0ciIsIEN1c3RvbUFjY2Vzc29yLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nh
c3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE9ialJlZmxlY3RlZFN0cmluZ0F0
dHIpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5j
PihzZXRKU1Rlc3RPYmpSZWZsZWN0ZWRTdHJpbmdBdHRyKSB9IH0sCkBAIC0xNzg0LDYgKzE4NDYs
MjEgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqVXN2c3RyaW5nQXR0clRyZQogfQogCiAKK0Vu
Y29kZWRKU1ZhbHVlIGpzVGVzdE9iakltcGxlbWVudGF0aW9uRW51bUF0dHIoRXhlY1N0YXRlKiBz
dGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCit7CisgICAgVU5V
U0VEX1BBUkFNKHN0YXRlKTsKKyAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKKyAgICBKU1Zh
bHVlIGRlY29kZWRUaGlzVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKTsKKyAgICBh
dXRvKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihkZWNvZGVkVGhpc1Zh
bHVlKTsKKyAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7CisgICAgICAgIHJldHVybiB0
aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgImltcGxlbWVudGF0aW9u
RW51bUF0dHIiKTsKKyAgICB9CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQo
KTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzU3RyaW5nV2l0aENhY2hlKHN0YXRlLCBpbXBsLmlt
cGxlbWVudGF0aW9uRW51bUF0dHIoKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1
bHQpOworfQorCisKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialhNTE9iakF0dHIoRXhlY1N0YXRl
KiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAg
VU5VU0VEX1BBUkFNKHN0YXRlKTsKQEAgLTMxMTEsNiArMzE4OCwyNSBAQCBib29sIHNldEpTVGVz
dE9ialVzdnN0cmluZ0F0dHJUcmVhdGluZ051CiB9CiAKIAorYm9vbCBzZXRKU1Rlc3RPYmpJbXBs
ZW1lbnRhdGlvbkVudW1BdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQoreworICAgIEpTVmFsdWUgdmFsdWUg
PSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKKyAgICBVTlVTRURfUEFSQU0odGhpc1Zh
bHVlKTsKKyAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9i
aio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAgICBpZiAoVU5MSUtFTFkoIWNhc3Rl
ZFRoaXMpKSB7CisgICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJU
ZXN0T2JqZWN0IiwgImltcGxlbWVudGF0aW9uRW51bUF0dHIiKTsKKyAgICB9CisgICAgYXV0byYg
aW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKKyAgICBhdXRvIG5hdGl2ZVZhbHVlID0gcGFy
c2U8QWx0ZXJuYXRlRW51bU5hbWU+KCpzdGF0ZSwgdmFsdWUpOworICAgIGlmIChVTkxJS0VMWShz
dGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKFVO
TElLRUxZKCFuYXRpdmVWYWx1ZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpbXBsLnNl
dEltcGxlbWVudGF0aW9uRW51bUF0dHIobmF0aXZlVmFsdWUudmFsdWUoKSk7CisgICAgcmV0dXJu
IHRydWU7Cit9CisKKwogYm9vbCBzZXRKU1Rlc3RPYmpYTUxPYmpBdHRyKEV4ZWNTdGF0ZSogc3Rh
dGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVl
KQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsK
</data>
<flag name="review"
          id="310472"
          type_id="1"
          status="+"
          setter="andersca"
    />
          </attachment>
      

    </bug>

</bugzilla>