<?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>75641</bug_id>
          
          <creation_ts>2012-01-05 12:19:08 -0800</creation_ts>
          <short_desc>[V8] CodeGeneration for SerializedScriptValue doesn&apos;t play nice with [Constructor]</short_desc>
          <delta_ts>2012-01-05 15:57:47 -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>New Bugs</component>
          <version>528+ (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>
          
          <blocked>73051</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Adam Barth">abarth</reporter>
          <assigned_to name="Adam Barth">abarth</assigned_to>
          <cc>eric</cc>
    
    <cc>haraken</cc>
    
    <cc>japhet</cc>
    
    <cc>levin</cc>
    
    <cc>ojan</cc>
    
    <cc>vitalyr</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>530528</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-01-05 12:19:08 -0800</bug_when>
    <thetext>[V8] CodeGeneration for SerializedScriptValue doesn&apos;t play nice with [Constructor]</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>530536</commentid>
    <comment_count>1</comment_count>
      <attachid>121311</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-01-05 12:24:48 -0800</bug_when>
    <thetext>Created attachment 121311
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>530539</commentid>
    <comment_count>2</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-01-05 12:27:25 -0800</bug_when>
    <thetext>@dave_levin: You seemed to have reviewed http://trac.webkit.org/changeset/56877, when this mechanism was introduced.  Would you be willing to review this patch?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>530600</commentid>
    <comment_count>3</comment_count>
      <attachid>121311</attachid>
    <who name="Greg Billock">gbillock</who>
    <bug_when>2012-01-05 13:48:32 -0800</bug_when>
    <thetext>Comment on attachment 121311
Patch

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

&gt; Source/WebCore/bindings/scripts/test/V8/V8TestSerializedScriptValueInterface.cpp:62
&gt; +        return v8::Undefined();

This is generated at CodeGeneratorV8:1534. Should it instead call return throwError() here, to signal to the caller that the value passed did not successfully pass the serialization? That codegen is called for constructor and function generation, where I think an error would be more useful.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>530606</commentid>
    <comment_count>4</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2012-01-05 13:58:20 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; @dave_levin: You seemed to have reviewed http://trac.webkit.org/changeset/56877, when this mechanism was introduced.  Would you be willing to review this patch?

You were suppose to say &quot;ping? anyone? anyone? anyone?&quot;

Looking.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>530616</commentid>
    <comment_count>5</comment_count>
      <attachid>121311</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-01-05 14:07:51 -0800</bug_when>
    <thetext>Comment on attachment 121311
Patch

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

&gt;&gt; Source/WebCore/bindings/scripts/test/V8/V8TestSerializedScriptValueInterface.cpp:62
&gt;&gt; +        return v8::Undefined();
&gt; 
&gt; This is generated at CodeGeneratorV8:1534. Should it instead call return throwError() here, to signal to the caller that the value passed did not successfully pass the serialization? That codegen is called for constructor and function generation, where I think an error would be more useful.

Possibly, but that&apos;s something to fix in a different patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>530627</commentid>
    <comment_count>6</comment_count>
      <attachid>121311</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2012-01-05 14:22:46 -0800</bug_when>
    <thetext>Comment on attachment 121311
Patch

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

&gt; Source/WebCore/bindings/scripts/CodeGeneratorV8.pm:1648
&gt; +    push(@implContent, &quot;    v8::Handle&lt;v8::Object&gt; wrapper = args.Holder();\n&quot;);

Oh I see this is needed for consistency with GenerateEagerDeserialization.

&gt; Source/WebCore/bindings/scripts/CodeGeneratorV8.pm:1662
&gt; +        GenerateEagerDeserialization($serializedAttribute);

This is the only real change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>530630</commentid>
    <comment_count>7</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-01-05 14:26:51 -0800</bug_when>
    <thetext>&gt; &gt; Source/WebCore/bindings/scripts/CodeGeneratorV8.pm:1662
&gt; &gt; +        GenerateEagerDeserialization($serializedAttribute);
&gt; 
&gt; This is the only real change.

Yep.  The rest is just renaming variables to be more consistent so that GenerateEagerDeserialization makes code that builds.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>530735</commentid>
    <comment_count>8</comment_count>
      <attachid>121311</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-05 15:57:43 -0800</bug_when>
    <thetext>Comment on attachment 121311
Patch

Clearing flags on attachment: 121311

Committed r104233: &lt;http://trac.webkit.org/changeset/104233&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>530736</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-05 15:57:47 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>121311</attachid>
            <date>2012-01-05 12:24:48 -0800</date>
            <delta_ts>2012-01-05 15:57:43 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-75641-20120105122447.patch</filename>
            <type>text/plain</type>
            <size>19941</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwNDE5NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ1IEBACisyMDEyLTAxLTA1ICBBZGFtIEJh
cnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CisKKyAgICAgICAgW1Y4XSBDb2RlR2VuZXJhdGlvbiBm
b3IgU2VyaWFsaXplZFNjcmlwdFZhbHVlIGRvZXNuJ3QgcGxheSBuaWNlIHdpdGggW0NvbnN0cnVj
dG9yXQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU2
NDEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSYXRo
ZXIgdGhhbiBnZW5lcmF0ZSBnZXR0ZXJzIGZvciBTZXJpYWxpemVkU2NyaXB0VmFsdWVzLCB3ZSBl
YWdlcmx5CisgICAgICAgIGRlc2VyaWFsaXplIHRoZW0gaW50byBKYXZhU2NyaXB0IG9iamVjdHMu
ICBIb3dldmVyLCBwcmV2aW91c2x5LCB3ZSB3ZXJlCisgICAgICAgIG9ubHkgZG9pbmcgdGhhdCBm
b3IgRE9NIHdyYXBwZXJzIGNyZWF0ZWQgYnkgdGFraW5nIGFuIGV4aXN0aW5nIEMrKworICAgICAg
ICBvYmplY3QgYW5kIHdyYXBwaW5nIGl0LiAgRm9yIG9iamVjdHMgY3JlYXRlZCB3aXRoIENvbnN0
cnVjdG9ycyAoZS5nLiwKKyAgICAgICAgdGhvc2Ugd2l0aCB0aGUgW0NvbnN0cnVjdG9yXSBhdHRy
aWJ1dGUpLCB3ZSBuZWVkIHRvIGRvIHRoaXMgZWFnZXIKKyAgICAgICAgZGVzZXJpYWxpemF0aW9u
IGR1cmluZyB0aGUgY29uc3RydWN0b3IgYXMgd2VsbC4KKworICAgICAgICBUaGlzIGJ1ZyBpc24n
dCBvYnNlcnZhYmxlIHlldCwgYnV0IGl0IGlzIGNhdXNpbmcgdGhlIFdlYkludGVudCB0ZXN0Cisg
ICAgICAgIGJlaW5nIGFkZGVkIGluIEJ1ZyA3MzA1MSB0byBmYWlsLgorCisgICAgICAgIFRlc3Q6
IFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuaWRsCisgICAgICAgICAgICAgIHdl
YmludGVudHMvd2ViLWludGVudHMtYXBpLmh0bWwgKGFmdGVyIEJ1ZyA3MzA1MSBsYW5kcykKKwor
ICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtOgorICAgICAgICAo
R2VuZXJhdGVFYWdlckRlc2VyaWFsaXphdGlvbik6CisgICAgICAgIChHZW5lcmF0ZUNvbnN0cnVj
dG9yQ2FsbGJhY2spOgorICAgICAgICAoR2VuZXJhdGVOYW1lZENvbnN0cnVjdG9yQ2FsbGJhY2sp
OgorICAgICAgICAoR2VuZXJhdGVJbXBsZW1lbnRhdGlvbik6CisgICAgICAgIChHZW5lcmF0ZVRv
VjhDb252ZXJ0ZXJzKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpT
VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZUNvbnN0cnVjdG9yOjpjb25zdHJ1Y3RK
U1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UpOgorICAgICAgICAoV2ViQ29yZTo6
SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlQ29uc3RydWN0b3I6OmdldENvbnN0
cnVjdERhdGEpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJp
YWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5pZGw6CisgICAgICAgICog
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEludGVyZmFjZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpWOFRlc3RJbnRlcmZhY2U6OmNvbnN0cnVjdG9yQ2FsbGJhY2spOgorICAgICAgICAq
IGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3ROYW1lZENvbnN0cnVjdG9yLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlY4VGVzdE5hbWVkQ29uc3RydWN0b3JDb25zdHJ1Y3RvckNhbGxiYWNr
KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T2JqLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlY4VGVzdE9iajo6Y29uc3RydWN0b3JDYWxsYmFjayk6CisgICAgICAg
ICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUlu
dGVyZmFjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3RTZXJpYWxpemVkU2NyaXB0VmFs
dWVJbnRlcmZhY2U6OmNvbnN0cnVjdG9yQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6Q29u
ZmlndXJlVjhUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlVGVtcGxhdGUpOgorICAg
ICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RTZXJpYWxpemVkU2NyaXB0VmFs
dWVJbnRlcmZhY2UuaDoKKwogMjAxMi0wMS0wNSAgQ2hhbmdTZW9rIE9oICA8c2hpdmFtaWRvd0Bn
bWFpbC5jb20+CiAKICAgICAgICAgUmVtb3ZlIHN0eWxlIHdhcm5pbmcgaW4gR3JhcGhpY3NDb250
ZXh0M0RPcGVuR0wuY3BwCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0Nv
ZGVHZW5lcmF0b3JWOC5wbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQkocmV2aXNpb24gMTA0MTg0KQorKysgU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0JKHdvcmtpbmcgY29weSkK
QEAgLTIwOCw2ICsyMDgsMjYgQEAgc3ViIEdlbmVyYXRlQ29uZGl0aW9uYWxTdHJpbmcKICAgICB9
CiB9CiAKK3N1YiBHZW5lcmF0ZUVhZ2VyRGVzZXJpYWxpemF0aW9uCit7CisgICAgbXkgJHNlcmlh
bGl6ZWRBdHRyaWJ1dGUgPSBzaGlmdDsKKworICAgICMgRWFnZXJseSBkZXNlcmlhbGl6ZSBhdHRy
aWJ1dGVzIG9mIHR5cGUgU2VyaWFsaXplZFNjcmlwdFZhbHVlIHdoaWxlIHdlJ3JlCisgICAgIyBp
biB0aGUgcmlnaHQgY29udGV4dC4KKworICAgIGRpZSAiQXR0cmlidXRlIG9mIHR5cGUgU2VyaWFs
aXplZFNjcmlwdFZhbHVlIGV4cGVjdGVkIiBpZiAkc2VyaWFsaXplZEF0dHJpYnV0ZS0+c2lnbmF0
dXJlLT50eXBlIG5lICJTZXJpYWxpemVkU2NyaXB0VmFsdWUiOworICAgIG15ICRhdHRyTmFtZSA9
ICRzZXJpYWxpemVkQXR0cmlidXRlLT5zaWduYXR1cmUtPm5hbWU7CisgICAgbXkgJGF0dHJBdHRy
ID0gInY4OjpEb250RGVsZXRlIjsKKyAgICBpZiAoJHNlcmlhbGl6ZWRBdHRyaWJ1dGUtPnR5cGUg
PX4gL15yZWFkb25seS8pIHsKKyAgICAgICAgJGF0dHJBdHRyIC49ICIgfCB2ODo6UmVhZE9ubHki
OworICAgIH0KKyAgICAkYXR0ckF0dHIgPSAic3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmli
dXRlPigkYXR0ckF0dHIpIjsKKyAgICBteSAkZ2V0dGVyRnVuYyA9ICRjb2RlR2VuZXJhdG9yLT5X
S19sY2ZpcnN0KCRhdHRyTmFtZSk7CisgICAgcHVzaChAaW1wbENvbnRlbnQsIDw8RU5EKTsKKyAg
ICBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmRlc2VyaWFsaXplQW5kU2V0UHJvcGVydHkod3JhcHBl
ciwgIiR7YXR0ck5hbWV9IiwgJHthdHRyQXR0cn0sIGltcGwtPiR7Z2V0dGVyRnVuY30oKSk7CitF
TkQKK30KKwogc3ViIEdldFNWR1Byb3BlcnR5VHlwZXMKIHsKICAgICBteSAkaW1wbFR5cGUgPSBz
aGlmdDsKQEAgLTE1NjEsNiArMTU4MSw3IEBAIHN1YiBHZW5lcmF0ZUNvbnN0cnVjdG9yQ2FsbGJh
Y2sKICAgICBteSAkZnVuY3Rpb24gPSBzaGlmdDsKICAgICBteSAkZGF0YU5vZGUgPSBzaGlmdDsK
ICAgICBteSAkaW1wbENsYXNzTmFtZSA9IHNoaWZ0OworICAgIG15ICRzZXJpYWxpemVkQXR0cmli
dXRlID0gc2hpZnQ7CiAKICAgICBteSAkcmFpc2VzRXhjZXB0aW9ucyA9IEB7JGZ1bmN0aW9uLT5y
YWlzZXNFeGNlcHRpb25zfTsKICAgICBpZiAoJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMt
PnsiQ29uc3RydWN0b3JSYWlzZXNFeGNlcHRpb24ifSkgewpAQCAtMTYyMyw3ICsxNjQ0LDggQEAg
RU5ECiAKICAgICBteSAkYXJndW1lbnRTdHJpbmcgPSBqb2luKCIsICIsIEBiZWZvcmVBcmd1bWVu
dExpc3QsIEBhcmd1bWVudExpc3QsIEBhZnRlckFyZ3VtZW50TGlzdCk7CiAgICAgcHVzaChAaW1w
bENvbnRlbnQsICJcbiIpOwotICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIFJlZlB0cjwke2lt
cGxDbGFzc05hbWV9PiBvYmogPSAke2ltcGxDbGFzc05hbWV9OjpjcmVhdGUoJHthcmd1bWVudFN0
cmluZ30pO1xuIik7CisgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgUmVmUHRyPCR7aW1wbENs
YXNzTmFtZX0+IGltcGwgPSAke2ltcGxDbGFzc05hbWV9OjpjcmVhdGUoJHthcmd1bWVudFN0cmlu
Z30pO1xuIik7CisgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgdjg6OkhhbmRsZTx2ODo6T2Jq
ZWN0PiB3cmFwcGVyID0gYXJncy5Ib2xkZXIoKTtcbiIpOwogCiAgICAgaWYgKCRkYXRhTm9kZS0+
ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNvbnN0cnVjdG9yUmFpc2VzRXhjZXB0aW9uIn0pIHsKICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKGVjKVxuIik7CkBAIC0xNjMzLDkgKzE2
NTUsMTQgQEAgRU5ECiAgICAgbXkgJERPTU9iamVjdCA9ICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRy
aWJ1dGVzLT57IkFjdGl2ZURPTU9iamVjdCJ9ID8gIkFjdGl2ZURPTU9iamVjdCIgOiAiRE9NT2Jq
ZWN0IjsKICAgICBwdXNoKEBpbXBsQ29udGVudCwgPDxFTkQpOwogCi0gICAgVjhET01XcmFwcGVy
OjpzZXRET01XcmFwcGVyKGFyZ3MuSG9sZGVyKCksICZpbmZvLCBvYmouZ2V0KCkpOwotICAgIG9i
ai0+cmVmKCk7Ci0gICAgVjhET01XcmFwcGVyOjpzZXRKU1dyYXBwZXJGb3Ike0RPTU9iamVjdH0o
b2JqLmdldCgpLCB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0Pjo6TmV3KGFyZ3MuSG9sZGVyKCkp
KTsKKyAgICBWOERPTVdyYXBwZXI6OnNldERPTVdyYXBwZXIod3JhcHBlciwgJmluZm8sIGltcGwu
Z2V0KCkpOworICAgIGltcGwtPnJlZigpOworRU5ECisgICAgaWYgKCRzZXJpYWxpemVkQXR0cmli
dXRlKSB7CisgICAgICAgIEdlbmVyYXRlRWFnZXJEZXNlcmlhbGl6YXRpb24oJHNlcmlhbGl6ZWRB
dHRyaWJ1dGUpOworICAgIH0KKyAgICBwdXNoKEBpbXBsQ29udGVudCwgPDxFTkQpOworICAgIFY4
RE9NV3JhcHBlcjo6c2V0SlNXcmFwcGVyRm9yJHtET01PYmplY3R9KGltcGwuZ2V0KCksIHY4OjpQ
ZXJzaXN0ZW50PHY4OjpPYmplY3Q+OjpOZXcod3JhcHBlcikpOwogICAgIHJldHVybiBhcmdzLkhv
bGRlcigpOwogRU5ECiAKQEAgLTE3MTUsNiArMTc0Miw3IEBAIHN1YiBHZW5lcmF0ZU5hbWVkQ29u
c3RydWN0b3JDYWxsYmFjawogICAgIG15ICRmdW5jdGlvbiA9IHNoaWZ0OwogICAgIG15ICRkYXRh
Tm9kZSA9IHNoaWZ0OwogICAgIG15ICRpbXBsQ2xhc3NOYW1lID0gc2hpZnQ7CisgICAgbXkgJHNl
cmlhbGl6ZWRBdHRyaWJ1dGUgPSBzaGlmdDsKIAogICAgIG15ICRyYWlzZXNFeGNlcHRpb25zID0g
QHskZnVuY3Rpb24tPnJhaXNlc0V4Y2VwdGlvbnN9OwogICAgIGlmICgkZGF0YU5vZGUtPmV4dGVu
ZGVkQXR0cmlidXRlcy0+eyJDb25zdHJ1Y3RvclJhaXNlc0V4Y2VwdGlvbiJ9KSB7CkBAIC0xNzkz
LDcgKzE4MjEsOCBAQCBFTkQKIAogICAgIG15ICRhcmd1bWVudFN0cmluZyA9IGpvaW4oIiwgIiwg
QGJlZm9yZUFyZ3VtZW50TGlzdCwgQGFyZ3VtZW50TGlzdCwgQGFmdGVyQXJndW1lbnRMaXN0KTsK
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIlxuIik7Ci0gICAgcHVzaChAaW1wbENvbnRlbnQsICIg
ICAgUmVmUHRyPCR7aW1wbENsYXNzTmFtZX0+IG9iaiA9ICR7aW1wbENsYXNzTmFtZX06OmNyZWF0
ZUZvckpTQ29uc3RydWN0b3IoJHthcmd1bWVudFN0cmluZ30pO1xuIik7CisgICAgcHVzaChAaW1w
bENvbnRlbnQsICIgICAgUmVmUHRyPCR7aW1wbENsYXNzTmFtZX0+IGltcGwgPSAke2ltcGxDbGFz
c05hbWV9OjpjcmVhdGVGb3JKU0NvbnN0cnVjdG9yKCR7YXJndW1lbnRTdHJpbmd9KTtcbiIpOwor
ICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBl
ciA9IGFyZ3MuSG9sZGVyKCk7XG4iKTsKIAogICAgIGlmICgkZGF0YU5vZGUtPmV4dGVuZGVkQXR0
cmlidXRlcy0+eyJDb25zdHJ1Y3RvclJhaXNlc0V4Y2VwdGlvbiJ9KSB7CiAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAiICAgIGlmIChlYylcbiIpOwpAQCAtMTgxMCw5ICsxODM5LDE0IEBAIEVO
RAogICAgIH0KICAgICBwdXNoKEBpbXBsQ29udGVudCwgPDxFTkQpOwogCi0gICAgVjhET01XcmFw
cGVyOjpzZXRET01XcmFwcGVyKGFyZ3MuSG9sZGVyKCksICZWOCR7aW1wbENsYXNzTmFtZX1Db25z
dHJ1Y3Rvcjo6aW5mbywgb2JqLmdldCgpKTsKLSAgICBvYmotPnJlZigpOwotICAgIFY4RE9NV3Jh
cHBlcjo6c2V0SlNXcmFwcGVyRm9yJHtET01PYmplY3R9KG9iai5nZXQoKSwgdjg6OlBlcnNpc3Rl
bnQ8djg6Ok9iamVjdD46Ok5ldyhhcmdzLkhvbGRlcigpKSk7CisgICAgVjhET01XcmFwcGVyOjpz
ZXRET01XcmFwcGVyKHdyYXBwZXIsICZWOCR7aW1wbENsYXNzTmFtZX1Db25zdHJ1Y3Rvcjo6aW5m
bywgaW1wbC5nZXQoKSk7CisgICAgaW1wbC0+cmVmKCk7CitFTkQKKyAgICBpZiAoJHNlcmlhbGl6
ZWRBdHRyaWJ1dGUpIHsKKyAgICAgICAgR2VuZXJhdGVFYWdlckRlc2VyaWFsaXphdGlvbigkc2Vy
aWFsaXplZEF0dHJpYnV0ZSk7CisgICAgfQorICAgIHB1c2goQGltcGxDb250ZW50LCA8PEVORCk7
CisgICAgVjhET01XcmFwcGVyOjpzZXRKU1dyYXBwZXJGb3Ike0RPTU9iamVjdH0oaW1wbC5nZXQo
KSwgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD46Ok5ldyh3cmFwcGVyKSk7CiAgICAgcmV0dXJu
IGFyZ3MuSG9sZGVyKCk7CiBFTkQKIApAQCAtMjQwOSw5ICsyNDQzLDkgQEAgRU5ECiAgICAgcHVz
aChAaW1wbENvbnRlbnREZWNscywgIn0gLy8gbmFtZXNwYWNlICR7aW50ZXJmYWNlTmFtZX1JbnRl
cm5hbFxuXG4iKTsKIAogICAgIGlmICgkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJO
YW1lZENvbnN0cnVjdG9yIn0gJiYgISgkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJW
OEN1c3RvbUNvbnN0cnVjdG9yIn0gfHwgJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsi
Q3VzdG9tQ29uc3RydWN0b3IifSkpIHsKLSAgICAgICAgR2VuZXJhdGVOYW1lZENvbnN0cnVjdG9y
Q2FsbGJhY2soJGRhdGFOb2RlLT5jb25zdHJ1Y3RvciwgJGRhdGFOb2RlLCAkaW50ZXJmYWNlTmFt
ZSk7CisgICAgICAgIEdlbmVyYXRlTmFtZWRDb25zdHJ1Y3RvckNhbGxiYWNrKCRkYXRhTm9kZS0+
Y29uc3RydWN0b3IsICRkYXRhTm9kZSwgJGludGVyZmFjZU5hbWUsICRzZXJpYWxpemVkQXR0cmli
dXRlKTsKICAgICB9IGVsc2lmICgkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDb25z
dHJ1Y3RvciJ9ICYmICEoJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiVjhDdXN0b21D
b25zdHJ1Y3RvciJ9IHx8ICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbUNv
bnN0cnVjdG9yIn0pKSB7Ci0gICAgICAgIEdlbmVyYXRlQ29uc3RydWN0b3JDYWxsYmFjaygkZGF0
YU5vZGUtPmNvbnN0cnVjdG9yLCAkZGF0YU5vZGUsICRpbnRlcmZhY2VOYW1lKTsKKyAgICAgICAg
R2VuZXJhdGVDb25zdHJ1Y3RvckNhbGxiYWNrKCRkYXRhTm9kZS0+Y29uc3RydWN0b3IsICRkYXRh
Tm9kZSwgJGludGVyZmFjZU5hbWUsICRzZXJpYWxpemVkQXR0cmlidXRlKTsKICAgICB9IGVsc2lm
IChJc0NvbnN0cnVjdG9yVGVtcGxhdGUoJGRhdGFOb2RlLCAiRXZlbnQiKSkgewogICAgICAgICBH
ZW5lcmF0ZUV2ZW50Q29uc3RydWN0b3JDYWxsYmFjaygkZGF0YU5vZGUsICRpbnRlcmZhY2VOYW1l
KTsKICAgICB9CkBAIC0zMDQ0LDIwICszMDc4LDggQEAgRU5ECiBFTkQKICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIlxuICAgIGltcGwtPnJlZigpO1xuIikgaWYgSXNSZWZQdHJUeXBlKCRpbnRlcmZh
Y2VOYW1lKTsKIAotICAgICMgRWFnZXJseSBkZXNlcmlhbGl6ZSBhdHRyaWJ1dGVzIG9mIHR5cGUg
U2VyaWFsaXplZFNjcmlwdFZhbHVlCi0gICAgIyB3aGlsZSB3ZSdyZSBpbiB0aGUgcmlnaHQgY29u
dGV4dC4KICAgICBpZiAoJHNlcmlhbGl6ZWRBdHRyaWJ1dGUpIHsKLSAgICAgICAgZGllICJBdHRy
aWJ1dGUgb2YgdHlwZSBTZXJpYWxpemVkU2NyaXB0VmFsdWUgZXhwZWN0ZWQiIGlmICRzZXJpYWxp
emVkQXR0cmlidXRlLT5zaWduYXR1cmUtPnR5cGUgbmUgIlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSI7
Ci0gICAgICAgIG15ICRhdHRyTmFtZSA9ICRzZXJpYWxpemVkQXR0cmlidXRlLT5zaWduYXR1cmUt
Pm5hbWU7Ci0gICAgICAgIG15ICRhdHRyQXR0ciA9ICJ2ODo6RG9udERlbGV0ZSI7Ci0gICAgICAg
IGlmICgkc2VyaWFsaXplZEF0dHJpYnV0ZS0+dHlwZSA9fiAvXnJlYWRvbmx5LykgewotICAgICAg
ICAgICAgJGF0dHJBdHRyIC49ICIgfCB2ODo6UmVhZE9ubHkiOwotICAgICAgICB9Ci0gICAgICAg
ICRhdHRyQXR0ciA9ICJzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KCRhdHRyQXR0
cikiOwotICAgICAgICBteSAkZ2V0dGVyRnVuYyA9ICRjb2RlR2VuZXJhdG9yLT5XS19sY2ZpcnN0
KCRhdHRyTmFtZSk7Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50LCA8PEVORCk7Ci0gICAgU2Vy
aWFsaXplZFNjcmlwdFZhbHVlOjpkZXNlcmlhbGl6ZUFuZFNldFByb3BlcnR5KHdyYXBwZXIsICIk
e2F0dHJOYW1lfSIsICR7YXR0ckF0dHJ9LCBpbXBsLT4ke2dldHRlckZ1bmN9KCkpOwotRU5ECisg
ICAgICAgIEdlbmVyYXRlRWFnZXJEZXNlcmlhbGl6YXRpb24oJHNlcmlhbGl6ZWRBdHRyaWJ1dGUp
OwogICAgIH0KIAogICAgIHB1c2goQGltcGxDb250ZW50LCA8PEVORCk7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUlu
dGVyZmFjZS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuaWRsCShyZXZpc2lvbiAx
MDQxODQpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI4LDYgKzI4
LDcgQEAKIG1vZHVsZSB0ZXN0IHsKICAgICBpbnRlcmZhY2UgWwogICAgICAgICBDb25kaXRpb25h
bD1Db25kaXRpb24xfENvbmRpdGlvbjIsCisgICAgICAgIENvbnN0cnVjdG9yKGluIERPTVN0cmlu
ZyBoZWxsbywgaW4gU2VyaWFsaXplZFNjcmlwdFZhbHVlIHZhbHVlKSwKICAgICBdIFRlc3RTZXJp
YWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UgewogICAgICAgICAvLyBUaGUgY2FzZSBvZiBhIHNp
bmdsZSBTZXJpYWxpemVkU2NyaXB0VmFsdWUgYXR0cmlidXRlIGlzIGEgYml0IG9mIGEKICAgICAg
ICAgLy8gc3BlY2lhbCBjYXNlLgpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5jcHAJKHJldmlzaW9uIDEwNDE4NCkKKysrIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemVkU2Ny
aXB0VmFsdWVJbnRlcmZhY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw4ICsyNCwxMSBAQAog
CiAjaW5jbHVkZSAiSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmgiCiAKKyNp
bmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCisjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCiAjaW5j
bHVkZSAiU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCiAjaW5jbHVkZSAiVGVzdFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZUludGVyZmFjZS5oIgorI2luY2x1ZGUgPHJ1bnRpbWUvRXJyb3IuaD4KICNpbmNs
dWRlIDx3dGYvR2V0UHRyLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CkBAIC03OSw2ICs4Miwy
NyBAQCBib29sIEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjCiAgICAgcmV0dXJu
IGdldFN0YXRpY1ZhbHVlRGVzY3JpcHRvcjxKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRl
cmZhY2VDb25zdHJ1Y3RvciwgSlNET01XcmFwcGVyPihleGVjLCAmSlNUZXN0U2VyaWFsaXplZFNj
cmlwdFZhbHVlSW50ZXJmYWNlQ29uc3RydWN0b3JUYWJsZSwgc3RhdGljX2Nhc3Q8SlNUZXN0U2Vy
aWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlQ29uc3RydWN0b3IqPihvYmplY3QpLCBwcm9wZXJ0
eU5hbWUsIGRlc2NyaXB0b3IpOwogfQogCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpT
VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZUNvbnN0cnVjdG9yOjpjb25zdHJ1Y3RK
U1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UoRXhlY1N0YXRlKiBleGVjKQorewor
ICAgIEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZUNvbnN0cnVjdG9yKiBqc0Nv
bnN0cnVjdG9yID0gc3RhdGljX2Nhc3Q8SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJm
YWNlQ29uc3RydWN0b3IqPihleGVjLT5jYWxsZWUoKSk7CisgICAgaWYgKGV4ZWMtPmFyZ3VtZW50
Q291bnQoKSA8IDIpCisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlVHlw
ZUVycm9yKGV4ZWMsICJOb3QgZW5vdWdoIGFyZ3VtZW50cyIpKTsKKyAgICBjb25zdCBTdHJpbmcm
IGhlbGxvKHVzdHJpbmdUb1N0cmluZyhNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihleGVjLCAwLCBN
aXNzaW5nSXNVbmRlZmluZWQpLmlzRW1wdHkoKSA/IFVTdHJpbmcoKSA6IE1BWUJFX01JU1NJTkdf
UEFSQU1FVEVSKGV4ZWMsIDAsIE1pc3NpbmdJc1VuZGVmaW5lZCkudG9TdHJpbmcoZXhlYykpKTsK
KyAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4g
dmFsdWUoU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoZXhlYywgTUFZQkVfTUlTU0lOR19Q
QVJBTUVURVIoZXhlYywgMSwgTWlzc2luZ0lzVW5kZWZpbmVkKSkpOworICAgIGlmIChleGVjLT5o
YWRFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5l
ZCgpKTsKKyAgICBSZWZQdHI8VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZT4gb2Jq
ZWN0ID0gVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZTo6Y3JlYXRlKGhlbGxvLCB2
YWx1ZSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShhc09iamVjdCh0b0pTKGV4ZWMsIGpz
Q29uc3RydWN0b3ItPmdsb2JhbE9iamVjdCgpLCBvYmplY3QuZ2V0KCkpKSk7Cit9CisKK0NvbnN0
cnVjdFR5cGUgSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlQ29uc3RydWN0b3I6
OmdldENvbnN0cnVjdERhdGEoSlNDZWxsKiwgQ29uc3RydWN0RGF0YSYgY29uc3RydWN0RGF0YSkK
K3sKKyAgICBjb25zdHJ1Y3REYXRhLm5hdGl2ZS5mdW5jdGlvbiA9IGNvbnN0cnVjdEpTVGVzdFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZTsKKyAgICByZXR1cm4gQ29uc3RydWN0VHlwZUhv
c3Q7Cit9CisKIC8qIEhhc2ggdGFibGUgZm9yIHByb3RvdHlwZSAqLwogCiBzdGF0aWMgY29uc3Qg
SGFzaFRhYmxlVmFsdWUgSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlUHJvdG90
eXBlVGFibGVWYWx1ZXNbXSA9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5oCShyZXZpc2lvbiAxMDQxODQpCisrKyBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZh
bHVlSW50ZXJmYWNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEzMSw2ICsxMzEsOCBAQCBwdWJsaWM6
CiAgICAgfQogcHJvdGVjdGVkOgogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVG
bGFncyA9IEpTQzo6T3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgSlNDOjpJbXBsZW1lbnRz
SGFzSW5zdGFuY2UgfCBET01Db25zdHJ1Y3Rvck9iamVjdDo6U3RydWN0dXJlRmxhZ3M7CisgICAg
c3RhdGljIEpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RKU1Rlc3RT
ZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UoSlNDOjpFeGVjU3RhdGUqKTsKKyAgICBzdGF0
aWMgSlNDOjpDb25zdHJ1Y3RUeXBlIGdldENvbnN0cnVjdERhdGEoSlNDOjpKU0NlbGwqLCBKU0M6
OkNvbnN0cnVjdERhdGEmKTsKIH07CiAKIC8vIEF0dHJpYnV0ZXMKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RJbnRlcmZhY2UuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RJbnRl
cmZhY2UuY3BwCShyZXZpc2lvbiAxMDQxODQpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvVjgvVjhUZXN0SW50ZXJmYWNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE1
LDEzICsxMTUsMTQgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4VGVzdEludGVyZmFjZTo6Ywog
ICAgIGlmICghY29udGV4dCkKICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoIlRlc3RJbnRlcmZh
Y2UgY29uc3RydWN0b3IncyBhc3NvY2lhdGVkIGNvbnRleHQgaXMgbm90IGF2YWlsYWJsZSIsIFY4
UHJveHk6OlJlZmVyZW5jZUVycm9yKTsKIAotICAgIFJlZlB0cjxUZXN0SW50ZXJmYWNlPiBvYmog
PSBUZXN0SW50ZXJmYWNlOjpjcmVhdGUoY29udGV4dCwgc3RyMSwgc3RyMiwgZWMpOworICAgIFJl
ZlB0cjxUZXN0SW50ZXJmYWNlPiBpbXBsID0gVGVzdEludGVyZmFjZTo6Y3JlYXRlKGNvbnRleHQs
IHN0cjEsIHN0cjIsIGVjKTsKKyAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBh
cmdzLkhvbGRlcigpOwogICAgIGlmIChlYykKICAgICAgICAgZ290byBmYWlsOwogCi0gICAgVjhE
T01XcmFwcGVyOjpzZXRET01XcmFwcGVyKGFyZ3MuSG9sZGVyKCksICZpbmZvLCBvYmouZ2V0KCkp
OwotICAgIG9iai0+cmVmKCk7Ci0gICAgVjhET01XcmFwcGVyOjpzZXRKU1dyYXBwZXJGb3JBY3Rp
dmVET01PYmplY3Qob2JqLmdldCgpLCB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0Pjo6TmV3KGFy
Z3MuSG9sZGVyKCkpKTsKKyAgICBWOERPTVdyYXBwZXI6OnNldERPTVdyYXBwZXIod3JhcHBlciwg
JmluZm8sIGltcGwuZ2V0KCkpOworICAgIGltcGwtPnJlZigpOworICAgIFY4RE9NV3JhcHBlcjo6
c2V0SlNXcmFwcGVyRm9yQWN0aXZlRE9NT2JqZWN0KGltcGwuZ2V0KCksIHY4OjpQZXJzaXN0ZW50
PHY4OjpPYmplY3Q+OjpOZXcod3JhcHBlcikpOwogICAgIHJldHVybiBhcmdzLkhvbGRlcigpOwog
ICBmYWlsOgogICAgIHJldHVybiB0aHJvd0Vycm9yKGVjKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3ROYW1lZENvbnN0cnVjdG9yLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0
TmFtZWRDb25zdHJ1Y3Rvci5jcHAJKHJldmlzaW9uIDEwNDE4NCkKKysrIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3ROYW1lZENvbnN0cnVjdG9yLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNzEsMTMgKzcxLDE0IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gVjhUZXN0TmFtZWQKICAgICBTVFJJTkdfVE9fVjhQQVJBTUVURVJfRVhDRVBUSU9OX0JMT0NL
KFY4UGFyYW1ldGVyPD4sIHN0cjIsIE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGFyZ3MsIDEsIE1p
c3NpbmdJc1VuZGVmaW5lZCkpOwogICAgIFNUUklOR19UT19WOFBBUkFNRVRFUl9FWENFUFRJT05f
QkxPQ0soVjhQYXJhbWV0ZXI8Piwgc3RyMywgTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoYXJncywg
MiwgTWlzc2luZ0lzRW1wdHkpKTsKIAotICAgIFJlZlB0cjxUZXN0TmFtZWRDb25zdHJ1Y3Rvcj4g
b2JqID0gVGVzdE5hbWVkQ29uc3RydWN0b3I6OmNyZWF0ZUZvckpTQ29uc3RydWN0b3IoZG9jdW1l
bnQsIHN0cjEsIHN0cjIsIHN0cjMsIGVjKTsKKyAgICBSZWZQdHI8VGVzdE5hbWVkQ29uc3RydWN0
b3I+IGltcGwgPSBUZXN0TmFtZWRDb25zdHJ1Y3Rvcjo6Y3JlYXRlRm9ySlNDb25zdHJ1Y3Rvcihk
b2N1bWVudCwgc3RyMSwgc3RyMiwgc3RyMywgZWMpOworICAgIHY4OjpIYW5kbGU8djg6Ok9iamVj
dD4gd3JhcHBlciA9IGFyZ3MuSG9sZGVyKCk7CiAgICAgaWYgKGVjKQogICAgICAgICBnb3RvIGZh
aWw7CiAKLSAgICBWOERPTVdyYXBwZXI6OnNldERPTVdyYXBwZXIoYXJncy5Ib2xkZXIoKSwgJlY4
VGVzdE5hbWVkQ29uc3RydWN0b3JDb25zdHJ1Y3Rvcjo6aW5mbywgb2JqLmdldCgpKTsKLSAgICBv
YmotPnJlZigpOwotICAgIFY4RE9NV3JhcHBlcjo6c2V0SlNXcmFwcGVyRm9yQWN0aXZlRE9NT2Jq
ZWN0KG9iai5nZXQoKSwgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD46Ok5ldyhhcmdzLkhvbGRl
cigpKSk7CisgICAgVjhET01XcmFwcGVyOjpzZXRET01XcmFwcGVyKHdyYXBwZXIsICZWOFRlc3RO
YW1lZENvbnN0cnVjdG9yQ29uc3RydWN0b3I6OmluZm8sIGltcGwuZ2V0KCkpOworICAgIGltcGwt
PnJlZigpOworICAgIFY4RE9NV3JhcHBlcjo6c2V0SlNXcmFwcGVyRm9yQWN0aXZlRE9NT2JqZWN0
KGltcGwuZ2V0KCksIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+OjpOZXcod3JhcHBlcikpOwog
ICAgIHJldHVybiBhcmdzLkhvbGRlcigpOwogICBmYWlsOgogICAgIHJldHVybiB0aHJvd0Vycm9y
KGVjKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRl
c3RPYmouY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9WOC9WOFRlc3RPYmouY3BwCShyZXZpc2lvbiAxMDQxODQpCisrKyBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T2JqLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTU0OCwxMSArMTU0OCwxMiBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhUZXN0T2JqOjpj
b25zdHJ1CiAgICAgaWYgKENvbnN0cnVjdG9yTW9kZTo6Y3VycmVudCgpID09IENvbnN0cnVjdG9y
TW9kZTo6V3JhcEV4aXN0aW5nT2JqZWN0KQogICAgICAgICByZXR1cm4gYXJncy5Ib2xkZXIoKTsK
IAotICAgIFJlZlB0cjxUZXN0T2JqPiBvYmogPSBUZXN0T2JqOjpjcmVhdGUoKTsKKyAgICBSZWZQ
dHI8VGVzdE9iaj4gaW1wbCA9IFRlc3RPYmo6OmNyZWF0ZSgpOworICAgIHY4OjpIYW5kbGU8djg6
Ok9iamVjdD4gd3JhcHBlciA9IGFyZ3MuSG9sZGVyKCk7CiAKLSAgICBWOERPTVdyYXBwZXI6OnNl
dERPTVdyYXBwZXIoYXJncy5Ib2xkZXIoKSwgJmluZm8sIG9iai5nZXQoKSk7Ci0gICAgb2JqLT5y
ZWYoKTsKLSAgICBWOERPTVdyYXBwZXI6OnNldEpTV3JhcHBlckZvckRPTU9iamVjdChvYmouZ2V0
KCksIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+OjpOZXcoYXJncy5Ib2xkZXIoKSkpOworICAg
IFY4RE9NV3JhcHBlcjo6c2V0RE9NV3JhcHBlcih3cmFwcGVyLCAmaW5mbywgaW1wbC5nZXQoKSk7
CisgICAgaW1wbC0+cmVmKCk7CisgICAgVjhET01XcmFwcGVyOjpzZXRKU1dyYXBwZXJGb3JET01P
YmplY3QoaW1wbC5nZXQoKSwgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD46Ok5ldyh3cmFwcGVy
KSk7CiAgICAgcmV0dXJuIGFyZ3MuSG9sZGVyKCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRl
cmZhY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9WOC9WOFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuY3BwCShyZXZpc2lv
biAxMDQxODQpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhU
ZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MjMsOSArMjMsMTEgQEAKIAogI2lmIEVOQUJMRShDb25kaXRpb24xKSB8fCBFTkFCTEUoQ29uZGl0
aW9uMikKIAorI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKICNpbmNsdWRlICJSdW50aW1lRW5h
YmxlZEZlYXR1cmVzLmgiCiAjaW5jbHVkZSAiU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCiAjaW5j
bHVkZSAiVjhCaW5kaW5nLmgiCisjaW5jbHVkZSAiVjhCaW5kaW5nTWFjcm9zLmgiCiAjaW5jbHVk
ZSAiVjhCaW5kaW5nU3RhdGUuaCIKICNpbmNsdWRlICJWOERPTVdyYXBwZXIuaCIKICNpbmNsdWRl
ICJWOElzb2xhdGVkQ29udGV4dC5oIgpAQCAtNDIsNiArNDQsMzMgQEAgdGVtcGxhdGUgPHR5cGVu
YW1lIFQ+IHZvaWQgVjhfVVNFKFQpIHsgfQogCiB9IC8vIG5hbWVzcGFjZSBUZXN0U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlSW50ZXJmYWNlSW50ZXJuYWwKIAordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4
VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZTo6Y29uc3RydWN0b3JDYWxsYmFjayhj
b25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQoreworICAgIElOQ19TVEFUUygiRE9NLlRlc3RTZXJp
YWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuQ29uc3RydWN0b3IiKTsKKworICAgIGlmICghYXJn
cy5Jc0NvbnN0cnVjdENhbGwoKSkKKyAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoIkRPTSBvYmpl
Y3QgY29uc3RydWN0b3IgY2Fubm90IGJlIGNhbGxlZCBhcyBhIGZ1bmN0aW9uLiIsIFY4UHJveHk6
OlR5cGVFcnJvcik7CisKKyAgICBpZiAoQ29uc3RydWN0b3JNb2RlOjpjdXJyZW50KCkgPT0gQ29u
c3RydWN0b3JNb2RlOjpXcmFwRXhpc3RpbmdPYmplY3QpCisgICAgICAgIHJldHVybiBhcmdzLkhv
bGRlcigpOworICAgIGlmIChhcmdzLkxlbmd0aCgpIDwgMikKKyAgICAgICAgcmV0dXJuIHRocm93
RXJyb3IoIk5vdCBlbm91Z2ggYXJndW1lbnRzIiwgVjhQcm94eTo6VHlwZUVycm9yKTsKKyAgICBT
VFJJTkdfVE9fVjhQQVJBTUVURVJfRVhDRVBUSU9OX0JMT0NLKFY4UGFyYW1ldGVyPD4sIGhlbGxv
LCBNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihhcmdzLCAwLCBNaXNzaW5nSXNVbmRlZmluZWQpKTsK
KyAgICBib29sIHZhbHVlRGlkVGhyb3cgPSBmYWxzZTsKKyAgICBSZWZQdHI8U2VyaWFsaXplZFNj
cmlwdFZhbHVlPiB2YWx1ZSA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKGFyZ3NbMV0s
IDAsIDAsIHZhbHVlRGlkVGhyb3cpOworICAgIGlmICh2YWx1ZURpZFRocm93KQorICAgICAgICBy
ZXR1cm4gdjg6OlVuZGVmaW5lZCgpOworCisgICAgUmVmUHRyPFRlc3RTZXJpYWxpemVkU2NyaXB0
VmFsdWVJbnRlcmZhY2U+IGltcGwgPSBUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNl
OjpjcmVhdGUoaGVsbG8sIHZhbHVlKTsKKyAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBw
ZXIgPSBhcmdzLkhvbGRlcigpOworCisgICAgVjhET01XcmFwcGVyOjpzZXRET01XcmFwcGVyKHdy
YXBwZXIsICZpbmZvLCBpbXBsLmdldCgpKTsKKyAgICBpbXBsLT5yZWYoKTsKKyAgICBTZXJpYWxp
emVkU2NyaXB0VmFsdWU6OmRlc2VyaWFsaXplQW5kU2V0UHJvcGVydHkod3JhcHBlciwgInZhbHVl
Iiwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6RG9udERlbGV0ZSB8IHY4
OjpSZWFkT25seSksIGltcGwtPnZhbHVlKCkpOworICAgIFY4RE9NV3JhcHBlcjo6c2V0SlNXcmFw
cGVyRm9yRE9NT2JqZWN0KGltcGwuZ2V0KCksIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+OjpO
ZXcod3JhcHBlcikpOworICAgIHJldHVybiBhcmdzLkhvbGRlcigpOworfQorCiBzdGF0aWMgdjg6
OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IENvbmZpZ3VyZVY4VGVzdFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVRlbXBsYXRlKHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlv
blRlbXBsYXRlPiBkZXNjKQogewogICAgIGRlc2MtPlJlYWRPbmx5UHJvdG90eXBlKCk7CkBAIC01
MSw2ICs4MCw3IEBAIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGEKICAg
ICAgICAgMCwgMCwKICAgICAgICAgMCwgMCk7CiAgICAgVU5VU0VEX1BBUkFNKGRlZmF1bHRTaWdu
YXR1cmUpOyAvLyBJbiBzb21lIGNhc2VzLCBpdCB3aWxsIG5vdCBiZSB1c2VkLgorICAgIGRlc2Mt
PlNldENhbGxIYW5kbGVyKFY4VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZTo6Y29u
c3RydWN0b3JDYWxsYmFjayk7CiAgICAgCiAKICAgICAvLyBDdXN0b20gdG9TdHJpbmcgdGVtcGxh
dGUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RT
ZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVl
SW50ZXJmYWNlLmgJKHJldmlzaW9uIDEwNDE4NCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuaAko
d29ya2luZyBjb3B5KQpAQCAtNDUsNiArNDUsNyBAQCBwdWJsaWM6CiAgICAgaW5saW5lIHN0YXRp
YyB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXAoVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUlu
dGVyZmFjZSopOwogICAgIHN0YXRpYyB2b2lkIGRlcmVmT2JqZWN0KHZvaWQqKTsKICAgICBzdGF0
aWMgV3JhcHBlclR5cGVJbmZvIGluZm87CisgICAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVl
PiBjb25zdHJ1Y3RvckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmKTsKICAgICBzdGF0aWMg
Y29uc3QgaW50IGludGVybmFsRmllbGRDb3VudCA9IHY4RGVmYXVsdFdyYXBwZXJJbnRlcm5hbEZp
ZWxkQ291bnQgKyAwOwogICAgIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGV4aXN0aW5n
V3JhcHBlcihUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlKik7CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>