<?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>148998</bug_id>
          
          <creation_ts>2015-09-09 01:38:47 -0700</creation_ts>
          <short_desc>Implement internal calls in WebAssembly</short_desc>
          <delta_ts>2015-09-10 12:15:21 -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>JavaScriptCore</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>
          
          <blocked>146064</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Sukolsak Sakshuwong">sukolsak</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>mark.lam</cc>
    
    <cc>saam</cc>
    
    <cc>sukolsak</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1124587</commentid>
    <comment_count>0</comment_count>
    <who name="Sukolsak Sakshuwong">sukolsak</who>
    <bug_when>2015-09-09 01:38:47 -0700</bug_when>
    <thetext>Implement internal calls to functions that return a 32-bit integer in WebAssembly</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1124589</commentid>
    <comment_count>1</comment_count>
      <attachid>260849</attachid>
    <who name="Sukolsak Sakshuwong">sukolsak</who>
    <bug_when>2015-09-09 01:45:53 -0700</bug_when>
    <thetext>Created attachment 260849
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1124698</commentid>
    <comment_count>2</comment_count>
      <attachid>260849</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2015-09-09 14:43:06 -0700</bug_when>
    <thetext>Comment on attachment 260849
Patch

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

&gt; Source/JavaScriptCore/wasm/WASMFunctionCompiler.h:685
&gt; +    Vector&lt;CallCompilationInfo&gt; m_callCompilationInfo;

You need to do something to GC this correctly. See our other handling of CallLinkInfo.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1124742</commentid>
    <comment_count>3</comment_count>
      <attachid>260849</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-09-09 16:29:16 -0700</bug_when>
    <thetext>Comment on attachment 260849
Patch

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

&gt;&gt; Source/JavaScriptCore/wasm/WASMFunctionCompiler.h:685
&gt;&gt; +    Vector&lt;CallCompilationInfo&gt; m_callCompilationInfo;
&gt; 
&gt; You need to do something to GC this correctly. See our other handling of CallLinkInfo.

I think he&apos;s doing it right already.  The CallLinkInfos get added to a CodeBlock.  The CodeBlock then knows what to do.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1124758</commentid>
    <comment_count>4</comment_count>
      <attachid>260849</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2015-09-09 17:05:12 -0700</bug_when>
    <thetext>Comment on attachment 260849
Patch

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

&gt; Source/JavaScriptCore/wasm/WASMFunctionCompiler.h:642
&gt; +        CallLinkInfo* info = m_codeBlock-&gt;addCallLinkInfo();

I see. Is good.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1124777</commentid>
    <comment_count>5</comment_count>
      <attachid>260849</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-09-09 17:53:39 -0700</bug_when>
    <thetext>Comment on attachment 260849
Patch

LGTM.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1124796</commentid>
    <comment_count>6</comment_count>
      <attachid>260849</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-09-09 18:43:30 -0700</bug_when>
    <thetext>Comment on attachment 260849
Patch

Clearing flags on attachment: 260849

Committed r189563: &lt;http://trac.webkit.org/changeset/189563&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1124797</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-09-09 18:43:34 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1124974</commentid>
    <comment_count>8</comment_count>
      <attachid>260849</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2015-09-10 12:14:59 -0700</bug_when>
    <thetext>Comment on attachment 260849
Patch

r=me</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>260849</attachid>
            <date>2015-09-09 01:45:53 -0700</date>
            <delta_ts>2015-09-10 12:15:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-148998-20150909014547.patch</filename>
            <type>text/plain</type>
            <size>18031</size>
            <attacher name="Sukolsak Sakshuwong">sukolsak</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg5NTMxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA3
NjNiMDIxYzcwOWI1Zjk0NDYxYzU2MjFkMzM5MDFiNjRhMjA5ZmU3Li45ZGE5Njk4MTY1ZTIyYjM0
ZjY3NWRhZTI5Nzc5ZWZjN2Y1ZDVmMzRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzNSBAQAorMjAxNS0wOS0wOSAgU3Vrb2xzYWsgU2Frc2h1d29uZyAgPHN1a29sc2FrQGdt
YWlsLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgaW50ZXJuYWwgY2FsbHMgaW4gV2ViQXNzZW1i
bHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0ODk5
OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMg
cGF0Y2ggaW1wbGVtZW50cyBpbnRlcm5hbCBjYWxscyB0byBmdW5jdGlvbnMgdGhhdCByZXR1cm4g
YSAzMi1iaXQKKyAgICAgICAgaW50ZWdlciBpbiBXZWJBc3NlbWJseS4KKworICAgICAgICAqIHRl
c3RzL3N0cmVzcy93YXNtLWNhbGxzLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAg
ICAgICAgKiB0ZXN0cy9zdHJlc3Mvd2FzbS9jYWxscy53YXNtOiBBZGRlZC4KKyAgICAgICAgKiB3
YXNtL1dBU01GdW5jdGlvbkNvbXBpbGVyLmg6CisgICAgICAgIChKU0M6OldBU01GdW5jdGlvbkNv
bXBpbGVyOjpXQVNNRnVuY3Rpb25Db21waWxlcik6CisgICAgICAgIChKU0M6OldBU01GdW5jdGlv
bkNvbXBpbGVyOjplbmRGdW5jdGlvbik6CisgICAgICAgIChKU0M6OldBU01GdW5jdGlvbkNvbXBp
bGVyOjpidWlsZENhbGxJbnRlcm5hbCk6CisgICAgICAgIChKU0M6OldBU01GdW5jdGlvbkNvbXBp
bGVyOjphcHBlbmRFeHByZXNzaW9uTGlzdCk6CisgICAgICAgIChKU0M6OldBU01GdW5jdGlvbkNv
bXBpbGVyOjplbWl0TmFrZWRDYWxsKToKKyAgICAgICAgKEpTQzo6V0FTTUZ1bmN0aW9uQ29tcGls
ZXI6OmJveEFyZ3VtZW50c0FuZEFkanVzdFN0YWNrUG9pbnRlcik6CisgICAgICAgIChKU0M6OldB
U01GdW5jdGlvbkNvbXBpbGVyOjpjYWxsQW5kVW5ib3hSZXN1bHQpOgorICAgICAgICAqIHdhc20v
V0FTTUZ1bmN0aW9uUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6V0FTTUZ1bmN0aW9uUGFyc2Vy
Ojpjb21waWxlKToKKyAgICAgICAgKEpTQzo6V0FTTUZ1bmN0aW9uUGFyc2VyOjpwYXJzZUV4cHJl
c3Npb25JMzIpOgorICAgICAgICAoSlNDOjpXQVNNRnVuY3Rpb25QYXJzZXI6OnBhcnNlQ2FsbElu
dGVybmFsRXhwcmVzc2lvbkkzMik6CisgICAgICAgIChKU0M6OldBU01GdW5jdGlvblBhcnNlcjo6
cGFyc2VDYWxsQXJndW1lbnRzKToKKyAgICAgICAgKEpTQzo6V0FTTUZ1bmN0aW9uUGFyc2VyOjpw
YXJzZUNhbGxJbnRlcm5hbCk6CisgICAgICAgICogd2FzbS9XQVNNRnVuY3Rpb25QYXJzZXIuaDoK
KyAgICAgICAgKiB3YXNtL1dBU01GdW5jdGlvblN5bnRheENoZWNrZXIuaDoKKyAgICAgICAgKEpT
Qzo6V0FTTUZ1bmN0aW9uU3ludGF4Q2hlY2tlcjo6YnVpbGRDYWxsSW50ZXJuYWwpOgorICAgICAg
ICAoSlNDOjpXQVNNRnVuY3Rpb25TeW50YXhDaGVja2VyOjphcHBlbmRFeHByZXNzaW9uTGlzdCk6
CisKIDIwMTUtMDktMDggIEJlbmphbWluIFBvdWxhaW4gIDxicG91bGFpbkBhcHBsZS5jb20+CiAK
ICAgICAgICAgW0pTQ10gcmVkdWNlIHRoZSBhbW91bnQgb2YgbWVtb3J5IGFjY2VzcyBuZWVkZWQg
Zm9yIExpdmVuZXNzQW5hbHlzaXNQaGFzZQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3Rlc3RzL3N0cmVzcy93YXNtLWNhbGxzLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rl
c3RzL3N0cmVzcy93YXNtLWNhbGxzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQyODY1NTkxZTk4ZjI0N2E5N2Iy
YmU1YjRkYmUwNWIwYmMzODU4M2YKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvdGVzdHMvc3RyZXNzL3dhc20tY2FsbHMuanMKQEAgLTAsMCArMSw0NyBAQAorLy9AIHNr
aXAKKworZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkgeworICAgIGlmIChhY3R1
YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2JhZCB2YWx1ZTogJyAr
IGFjdHVhbCk7Cit9CisKKy8qCit3YXNtL2NhbGxzLndhc20gaXMgZ2VuZXJhdGVkIGJ5IHBhY2st
YXNtanMgPGh0dHBzOi8vZ2l0aHViLmNvbS9XZWJBc3NlbWJseS9wb2x5ZmlsbC1wcm90b3R5cGUt
MT4gZnJvbSB0aGUgZm9sbG93aW5nIHNjcmlwdDoKKworZnVuY3Rpb24gYXNtTW9kdWxlKGdsb2Jh
bCwgZW52LCBidWZmZXIpIHsKKyAgICAidXNlIGFzbSI7CisKKyAgICBmdW5jdGlvbiBmaWJvbmFj
Y2koeCkgeworICAgICAgICB4ID0geCB8IDA7CisgICAgICAgIGlmICgoeCB8IDApIDw9IDEpCisg
ICAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgcmV0dXJuICgoZmlib25hY2NpKCh4IC0gMSkg
fCAwKSB8IDApICsgKGZpYm9uYWNjaSgoeCAtIDIpIHwgMCkgfCAwKSkgfCAwOworICAgIH0KKwor
ICAgIGZ1bmN0aW9uIGdjZCh4LCB5KSB7CisgICAgICAgIHggPSB4IHwgMDsKKyAgICAgICAgeSA9
IHkgfCAwOworICAgICAgICBpZiAoeSA9PSAwKQorICAgICAgICAgICAgcmV0dXJuIHg7CisgICAg
ICAgIHJldHVybiBnY2QoeSwgKHggfCAwKSAlICh5IHwgMCkpIHwgMDsKKyAgICB9CisKKyAgICBm
dW5jdGlvbiBsY20oeCwgeSkgeworICAgICAgICB4ID0geCB8IDA7CisgICAgICAgIHkgPSB5IHwg
MDsKKyAgICAgICAgcmV0dXJuICgoKHggKiB5KSB8IDApIC8gKGdjZCh4LCB5KSB8IDApKSB8IDA7
CisgICAgfQorCisgICAgcmV0dXJuIHsKKyAgICAgICAgZmlib25hY2NpOiBmaWJvbmFjY2ksCisg
ICAgICAgIGdjZDogZ2NkLAorICAgICAgICBsY206IGxjbSwKKyAgICB9OworfQorKi8KKwordmFy
IG1vZHVsZSA9IGxvYWRXZWJBc3NlbWJseSgid2FzbS9jYWxscy53YXNtIik7CisKK3Nob3VsZEJl
KG1vZHVsZS5maWJvbmFjY2koMTApLCA4OSk7CitzaG91bGRCZShtb2R1bGUuZ2NkKDE1LCAyNSks
IDUpOworc2hvdWxkQmUobW9kdWxlLmxjbSgxNSwgMjUpLCA3NSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL3dhc20vY2FsbHMud2FzbSBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3Mvd2FzbS9jYWxscy53YXNtCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRi
NmZkNjAwZmZhYTI0NDQxZjgzYzRhMTE2N2E4ZjQ3YzZjODM5ZmUKR0lUIGJpbmFyeSBwYXRjaAps
aXRlcmFsIDEwMQp6Y21YUjxFWTd7ZCVtNHlSNDImUUc0d3hBajg1dFV3MVQ3OU08WF59eUMmbk91
VT9HVEQxUWdSZHhQYm92elpsfnwKcTxwVCNCODJKP3k0amRGP0phQ1lhSVcwM09LUUEja0lnXjFR
SnZvSmVGKCl+ZmZlOFElNDtXMVYKCmxpdGVyYWwgMApIY21WP2QwMDAwMQoKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01GdW5jdGlvbkNvbXBpbGVyLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNRnVuY3Rpb25Db21waWxlci5oCmluZGV4IDcxNDky
YTQzYmI2NzU3YzgwMjdiNDc0Y2MwNDAxZDM2OWVkYmQ0NGYuLjI1ZGNkNjVjNDE4NGEyZGU1ZjUx
ZTliNWJjNDBlZjhmMGRiOTU2NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL1dBU01GdW5jdGlvbkNvbXBpbGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vV0FTTUZ1bmN0aW9uQ29tcGlsZXIuaApAQCAtMjksNiArMjksNyBAQAogI2lmIEVOQUJMRShX
RUJBU1NFTUJMWSkKIAogI2luY2x1ZGUgIkNDYWxsSGVscGVycy5oIgorI2luY2x1ZGUgIkpJVC5o
IgogI2luY2x1ZGUgIkpJVE9wZXJhdGlvbnMuaCIKICNpbmNsdWRlICJMaW5rQnVmZmVyLmgiCiAj
aW5jbHVkZSAiTWF4RnJhbWVFeHRlbnRGb3JTbG93UGF0aENhbGwuaCIKQEAgLTYzLDE0ICs2NCwx
NiBAQCBjbGFzcyBXQVNNRnVuY3Rpb25Db21waWxlciA6IHByaXZhdGUgQ0NhbGxIZWxwZXJzIHsK
IHB1YmxpYzoKICAgICB0eXBlZGVmIGludCBFeHByZXNzaW9uOwogICAgIHR5cGVkZWYgaW50IFN0
YXRlbWVudDsKKyAgICB0eXBlZGVmIGludCBFeHByZXNzaW9uTGlzdDsKICAgICBzdHJ1Y3QgSnVt
cFRhcmdldCB7CiAgICAgICAgIExhYmVsIGxhYmVsOwogICAgICAgICBKdW1wTGlzdCBqdW1wTGlz
dDsKICAgICB9OwogICAgIGVudW0gY2xhc3MgSnVtcENvbmRpdGlvbiB7IFplcm8sIE5vblplcm8g
fTsKIAotICAgIFdBU01GdW5jdGlvbkNvbXBpbGVyKFZNJiB2bSwgQ29kZUJsb2NrKiBjb2RlQmxv
Y2ssIHVuc2lnbmVkIHN0YWNrSGVpZ2h0KQorICAgIFdBU01GdW5jdGlvbkNvbXBpbGVyKFZNJiB2
bSwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEpTV0FTTU1vZHVsZSogbW9kdWxlLCB1bnNpZ25lZCBz
dGFja0hlaWdodCkKICAgICAgICAgOiBDQ2FsbEhlbHBlcnMoJnZtLCBjb2RlQmxvY2spCisgICAg
ICAgICwgbV9tb2R1bGUobW9kdWxlKQogICAgICAgICAsIG1fc3RhY2tIZWlnaHQoc3RhY2tIZWln
aHQpCiAgICAgewogICAgIH0KQEAgLTE3MSw5ICsxNzQsMTcgQEAgcHVibGljOgogCiAgICAgICAg
IExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoKm1fdm0sICp0aGlzLCBtX2NvZGVCbG9jaywgSklUQ29t
cGlsYXRpb25NdXN0U3VjY2VlZCk7CiAKLSAgICAgICAgZm9yIChhdXRvIGl0ZXJhdG9yIDogbV9j
YWxscykKKyAgICAgICAgZm9yIChjb25zdCBhdXRvJiBpdGVyYXRvciA6IG1fY2FsbHMpCiAgICAg
ICAgICAgICBwYXRjaEJ1ZmZlci5saW5rKGl0ZXJhdG9yLmZpcnN0LCBGdW5jdGlvblB0cihpdGVy
YXRvci5zZWNvbmQpKTsKIAorICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fY2FsbENv
bXBpbGF0aW9uSW5mby5zaXplKCk7ICsraSkgeworICAgICAgICAgICAgQ2FsbENvbXBpbGF0aW9u
SW5mbyYgY29tcGlsYXRpb25JbmZvID0gbV9jYWxsQ29tcGlsYXRpb25JbmZvW2ldOworICAgICAg
ICAgICAgQ2FsbExpbmtJbmZvJiBpbmZvID0gKmNvbXBpbGF0aW9uSW5mby5jYWxsTGlua0luZm87
CisgICAgICAgICAgICBpbmZvLnNldENhbGxMb2NhdGlvbnMocGF0Y2hCdWZmZXIubG9jYXRpb25P
Zk5lYXJDYWxsKGNvbXBpbGF0aW9uSW5mby5jYWxsUmV0dXJuTG9jYXRpb24pLAorICAgICAgICAg
ICAgICAgIHBhdGNoQnVmZmVyLmxvY2F0aW9uT2YoY29tcGlsYXRpb25JbmZvLmhvdFBhdGhCZWdp
biksCisgICAgICAgICAgICAgICAgcGF0Y2hCdWZmZXIubG9jYXRpb25PZk5lYXJDYWxsKGNvbXBp
bGF0aW9uSW5mby5ob3RQYXRoT3RoZXIpKTsKKyAgICAgICAgfQorCiAgICAgICAgIE1hY3JvQXNz
ZW1ibGVyQ29kZVB0ciB3aXRoQXJpdHlDaGVjayA9IHBhdGNoQnVmZmVyLmxvY2F0aW9uT2YoYXJp
dHlDaGVjayk7CiAgICAgICAgIENvZGVSZWYgcmVzdWx0ID0gRklOQUxJWkVfQ09ERShwYXRjaEJ1
ZmZlciwgKCJCYXNlbGluZSBKSVQgY29kZSBmb3IgV2ViQXNzZW1ibHkiKSk7CiAgICAgICAgIG1f
Y29kZUJsb2NrLT5zZXRKSVRDb2RlKGFkb3B0UmVmKG5ldyBEaXJlY3RKSVRDb2RlKHJlc3VsdCwg
d2l0aEFyaXR5Q2hlY2ssIEpJVENvZGU6OkJhc2VsaW5lSklUKSkpOwpAQCAtNDM4LDYgKzQ0OSwx
OSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBVTlVTRUQ7CiAgICAgfQogCisgICAgaW50IGJ1
aWxkQ2FsbEludGVybmFsKHVpbnQzMl90IGZ1bmN0aW9uSW5kZXgsIGludCwgY29uc3QgV0FTTVNp
Z25hdHVyZSYgc2lnbmF0dXJlLCBXQVNNRXhwcmVzc2lvblR5cGUgcmV0dXJuVHlwZSkKKyAgICB7
CisgICAgICAgIGJveEFyZ3VtZW50c0FuZEFkanVzdFN0YWNrUG9pbnRlcihzaWduYXR1cmUuYXJn
dW1lbnRzKTsKKworICAgICAgICBKU0Z1bmN0aW9uKiBmdW5jdGlvbiA9IG1fbW9kdWxlLT5mdW5j
dGlvbnMoKVtmdW5jdGlvbkluZGV4XS5nZXQoKTsKKyAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRy
KGZ1bmN0aW9uKSwgR1BSSW5mbzo6cmVnVDApOworCisgICAgICAgIGNhbGxBbmRVbmJveFJlc3Vs
dChyZXR1cm5UeXBlKTsKKyAgICAgICAgcmV0dXJuIFVOVVNFRDsKKyAgICB9CisKKyAgICB2b2lk
IGFwcGVuZEV4cHJlc3Npb25MaXN0KGludCYsIGludCkgeyB9CisKICAgICB2b2lkIGxpbmtUYXJn
ZXQoSnVtcFRhcmdldCYgdGFyZ2V0KQogICAgIHsKICAgICAgICAgdGFyZ2V0LmxhYmVsID0gbGFi
ZWwoKTsKQEAgLTU1MSw2ICs1NzUsMTMgQEAgcHJpdmF0ZToKICAgICAgICAgbV9leGNlcHRpb25D
aGVja3MuYXBwZW5kKGVtaXRFeGNlcHRpb25DaGVjaygpKTsKICAgICB9CiAKKyAgICBDYWxsIGVt
aXROYWtlZENhbGwoQ29kZVB0ciBmdW5jdGlvbikKKyAgICB7CisgICAgICAgIENhbGwgbmFrZWRD
YWxsID0gbmVhckNhbGwoKTsKKyAgICAgICAgbV9jYWxscy5hcHBlbmQoc3RkOjptYWtlX3BhaXIo
bmFrZWRDYWxsLCBmdW5jdGlvbi5leGVjdXRhYmxlQWRkcmVzcygpKSk7CisgICAgICAgIHJldHVy
biBuYWtlZENhbGw7CisgICAgfQorCiAgICAgdm9pZCBjYWxsT3BlcmF0aW9uKGludDMyX3QgSklU
X09QRVJBVElPTiAoKm9wZXJhdGlvbikoaW50MzJfdCwgaW50MzJfdCksIEdQUlJlZyBzcmMxLCBH
UFJSZWcgc3JjMiwgR1BSUmVnIGRzdCkKICAgICB7CiAgICAgICAgIHNldHVwQXJndW1lbnRzKHNy
YzEsIHNyYzIpOwpAQCAtNTY1LDYgKzU5Niw3NyBAQCBwcml2YXRlOgogICAgICAgICBtb3ZlKEdQ
UkluZm86OnJldHVyblZhbHVlR1BSLCBkc3QpOwogICAgIH0KIAorICAgIHZvaWQgYm94QXJndW1l
bnRzQW5kQWRqdXN0U3RhY2tQb2ludGVyKGNvbnN0IFZlY3RvcjxXQVNNVHlwZT4mIGFyZ3VtZW50
cykKKyAgICB7CisgICAgICAgIHNpemVfdCBhcmd1bWVudENvdW50ID0gYXJndW1lbnRzLnNpemUo
KTsKKyAgICAgICAgaW50IHN0YWNrT2Zmc2V0ID0gLVdURjo6cm91bmRVcFRvTXVsdGlwbGVPZihz
dGFja0FsaWdubWVudFJlZ2lzdGVycygpLCBtX251bWJlck9mTG9jYWxzICsgbV90ZW1wU3RhY2tU
b3AgKyBhcmd1bWVudENvdW50ICsgMSArIEpTU3RhY2s6OkNhbGxGcmFtZUhlYWRlclNpemUpOwor
CisgICAgICAgIHN0b3JlVHJ1c3RlZFZhbHVlKGpzVW5kZWZpbmVkKCksIEFkZHJlc3MoR1BSSW5m
bzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIChzdGFja09mZnNldCArIENhbGxGcmFtZTo6dGhpc0FyZ3Vt
ZW50T2Zmc2V0KCkpICogc2l6ZW9mKFJlZ2lzdGVyKSkpOworCisgICAgICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgYXJndW1lbnRDb3VudDsgKytpKSB7CisgICAgICAgICAgICBBZGRyZXNzIGFk
ZHJlc3MoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIChzdGFja09mZnNldCArIENhbGxGcmFt
ZTo6YXJndW1lbnRPZmZzZXQoaSkpICogc2l6ZW9mKFJlZ2lzdGVyKSk7CisgICAgICAgICAgICBz
d2l0Y2ggKGFyZ3VtZW50c1tpXSkgeworICAgICAgICAgICAgY2FzZSBXQVNNVHlwZTo6STMyOgor
ICAgICAgICAgICAgICAgIGxvYWQzMih0ZW1wb3JhcnlBZGRyZXNzKG1fdGVtcFN0YWNrVG9wIC0g
YXJndW1lbnRDb3VudCArIGkpLCBHUFJJbmZvOjpyZWdUMCk7CisjaWYgVVNFKEpTVkFMVUU2NCkK
KyAgICAgICAgICAgICAgICBvcjY0KEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3RlciwgR1BS
SW5mbzo6cmVnVDApOworICAgICAgICAgICAgICAgIHN0b3JlNjQoR1BSSW5mbzo6cmVnVDAsIGFk
ZHJlc3MpOworI2Vsc2UKKyAgICAgICAgICAgICAgICBzdG9yZTMyKEdQUkluZm86OnJlZ1QwLCBh
ZGRyZXNzLndpdGhPZmZzZXQoUGF5bG9hZE9mZnNldCkpOworICAgICAgICAgICAgICAgIHN0b3Jl
MzIoVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkludDMyVGFnKSwgYWRkcmVzcy53aXRoT2Zmc2V0KFRh
Z09mZnNldCkpOworI2VuZGlmCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBk
ZWZhdWx0OgorICAgICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAg
ICAgfQorICAgICAgICB9CisgICAgICAgIG1fdGVtcFN0YWNrVG9wIC09IGFyZ3VtZW50Q291bnQ7
CisKKyAgICAgICAgYWRkUHRyKFRydXN0ZWRJbW0zMihzdGFja09mZnNldCAqIHNpemVvZihSZWdp
c3RlcikgKyBzaXplb2YoQ2FsbGVyRnJhbWVBbmRQQykpLCBHUFJJbmZvOjpjYWxsRnJhbWVSZWdp
c3Rlciwgc3RhY2tQb2ludGVyUmVnaXN0ZXIpOworICAgICAgICBzdG9yZTMyKFRydXN0ZWRJbW0z
Mihhcmd1bWVudENvdW50ICsgMSksIEFkZHJlc3Moc3RhY2tQb2ludGVyUmVnaXN0ZXIsIEpTU3Rh
Y2s6OkFyZ3VtZW50Q291bnQgKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3RlcikpICsg
UGF5bG9hZE9mZnNldCAtIHNpemVvZihDYWxsZXJGcmFtZUFuZFBDKSkpOworICAgIH0KKworICAg
IHZvaWQgY2FsbEFuZFVuYm94UmVzdWx0KFdBU01FeHByZXNzaW9uVHlwZSByZXR1cm5UeXBlKQor
ICAgIHsKKyAgICAgICAgLy8gcmVnVDAgaG9sZHMgY2FsbGVlLgorI2lmIFVTRShKU1ZBTFVFNjQp
CisgICAgICAgIHN0b3JlNjQoR1BSSW5mbzo6cmVnVDAsIEFkZHJlc3Moc3RhY2tQb2ludGVyUmVn
aXN0ZXIsIEpTU3RhY2s6OkNhbGxlZSAqIHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVy
KSkgLSBzaXplb2YoQ2FsbGVyRnJhbWVBbmRQQykpKTsKKyNlbHNlCisgICAgICAgIHN0b3JlMzIo
cmVnVDAsIEFkZHJlc3Moc3RhY2tQb2ludGVyUmVnaXN0ZXIsIEpTU3RhY2s6OkNhbGxlZSAqIHN0
YXRpY19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkgKyBQYXlsb2FkT2Zmc2V0IC0gc2l6ZW9m
KENhbGxlckZyYW1lQW5kUEMpKSk7CisgICAgICAgIHN0b3JlMzIoVHJ1c3RlZEltbTMyKENlbGxU
YWcpLCBBZGRyZXNzKHN0YWNrUG9pbnRlclJlZ2lzdGVyLCBKU1N0YWNrOjpDYWxsZWUgKiBzdGF0
aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3RlcikpICsgVGFnT2Zmc2V0IC0gc2l6ZW9mKENhbGxl
ckZyYW1lQW5kUEMpKSk7CisjZW5kaWYKKworICAgICAgICBEYXRhTGFiZWxQdHIgYWRkcmVzc09m
TGlua2VkRnVuY3Rpb25DaGVjazsKKyAgICAgICAgSnVtcCBzbG93Q2FzZSA9IGJyYW5jaFB0cldp
dGhQYXRjaChOb3RFcXVhbCwgR1BSSW5mbzo6cmVnVDAsIGFkZHJlc3NPZkxpbmtlZEZ1bmN0aW9u
Q2hlY2ssIFRydXN0ZWRJbW1QdHIoMCkpOworCisgICAgICAgIENhbGxMaW5rSW5mbyogaW5mbyA9
IG1fY29kZUJsb2NrLT5hZGRDYWxsTGlua0luZm8oKTsKKyAgICAgICAgaW5mby0+c2V0VXBDYWxs
KENhbGxMaW5rSW5mbzo6Q2FsbCwgQ29kZU9yaWdpbigpLCBHUFJJbmZvOjpyZWdUMCk7CisgICAg
ICAgIG1fY2FsbENvbXBpbGF0aW9uSW5mby5hcHBlbmQoQ2FsbENvbXBpbGF0aW9uSW5mbygpKTsK
KyAgICAgICAgbV9jYWxsQ29tcGlsYXRpb25JbmZvLmxhc3QoKS5ob3RQYXRoQmVnaW4gPSBhZGRy
ZXNzT2ZMaW5rZWRGdW5jdGlvbkNoZWNrOworICAgICAgICBtX2NhbGxDb21waWxhdGlvbkluZm8u
bGFzdCgpLmNhbGxMaW5rSW5mbyA9IGluZm87CisgICAgICAgIG1fY2FsbENvbXBpbGF0aW9uSW5m
by5sYXN0KCkuaG90UGF0aE90aGVyID0gbmVhckNhbGwoKTsKKyAgICAgICAgSnVtcCBlbmQgPSBq
dW1wKCk7CisKKyAgICAgICAgc2xvd0Nhc2UubGluayh0aGlzKTsKKyAgICAgICAgbW92ZShUcnVz
dGVkSW1tUHRyKGluZm8pLCBHUFJJbmZvOjpyZWdUMik7CisgICAgICAgIG1fY2FsbENvbXBpbGF0
aW9uSW5mby5sYXN0KCkuY2FsbFJldHVybkxvY2F0aW9uID0gZW1pdE5ha2VkQ2FsbChtX3ZtLT5n
ZXRDVElTdHViKGxpbmtDYWxsVGh1bmtHZW5lcmF0b3IpLmNvZGUoKSk7CisKKyAgICAgICAgZW5k
LmxpbmsodGhpcyk7CisgICAgICAgIGFkZFB0cihUcnVzdGVkSW1tMzIoLVdURjo6cm91bmRVcFRv
TXVsdGlwbGVPZihzdGFja0FsaWdubWVudFJlZ2lzdGVycygpLCBtX3N0YWNrSGVpZ2h0KSAqIHNp
emVvZihTdGFja1Nsb3QpKSwgR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIHN0YWNrUG9pbnRl
clJlZ2lzdGVyKTsKKyAgICAgICAgY2hlY2tTdGFja1BvaW50ZXJBbGlnbm1lbnQoKTsKKworICAg
ICAgICBzd2l0Y2ggKHJldHVyblR5cGUpIHsKKyAgICAgICAgY2FzZSBXQVNNRXhwcmVzc2lvblR5
cGU6OkkzMjoKKyAgICAgICAgICAgIHN0b3JlMzIoR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIsIHRl
bXBvcmFyeUFkZHJlc3MobV90ZW1wU3RhY2tUb3ArKykpOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIGNhc2UgV0FTTUV4cHJlc3Npb25UeXBlOjpWb2lkOgorICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICAgICAgfQorICAgIH0KKworICAgIEpTV0FTTU1vZHVsZSogbV9tb2R1bGU7CiAgICAgdW5zaWdu
ZWQgbV9zdGFja0hlaWdodDsKICAgICB1bnNpZ25lZCBtX251bWJlck9mTG9jYWxzOwogICAgIHVu
c2lnbmVkIG1fdGVtcFN0YWNrVG9wIHsgMCB9OwpAQCAtNTgwLDYgKzY4Miw3IEBAIHByaXZhdGU6
CiAgICAgSnVtcExpc3QgbV9leGNlcHRpb25DaGVja3M7CiAKICAgICBWZWN0b3I8c3RkOjpwYWly
PENhbGwsIHZvaWQqPj4gbV9jYWxsczsKKyAgICBWZWN0b3I8Q2FsbENvbXBpbGF0aW9uSW5mbz4g
bV9jYWxsQ29tcGlsYXRpb25JbmZvOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNRnVuY3Rpb25QYXJzZXIuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTUZ1bmN0aW9uUGFyc2VyLmNwcAppbmRleCBj
YjUzZDUyYTU2ZGViMGFmMGY2ZjQ3YzJhNTk2MzBiZjBhMjRhNDY3Li4xZmY1MGQxYjJlNTk1YmFl
MTFkZjZiYTA5ZTIxMDc1N2Y3MGM5YzY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XQVNNRnVuY3Rpb25QYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL1dBU01GdW5jdGlvblBhcnNlci5jcHAKQEAgLTY2LDcgKzY2LDcgQEAgYm9vbCBXQVNN
RnVuY3Rpb25QYXJzZXI6OmNoZWNrU3ludGF4KEpTV0FTTU1vZHVsZSogbW9kdWxlLCBjb25zdCBT
b3VyY2VDb2RlJiBzb3UKIHZvaWQgV0FTTUZ1bmN0aW9uUGFyc2VyOjpjb21waWxlKFZNJiB2bSwg
Q29kZUJsb2NrKiBjb2RlQmxvY2ssIEpTV0FTTU1vZHVsZSogbW9kdWxlLCBjb25zdCBTb3VyY2VD
b2RlJiBzb3VyY2UsIHNpemVfdCBmdW5jdGlvbkluZGV4KQogewogICAgIFdBU01GdW5jdGlvblBh
cnNlciBwYXJzZXIobW9kdWxlLCBzb3VyY2UsIGZ1bmN0aW9uSW5kZXgpOwotICAgIFdBU01GdW5j
dGlvbkNvbXBpbGVyIGNvbXBpbGVyKHZtLCBjb2RlQmxvY2ssIG1vZHVsZS0+ZnVuY3Rpb25TdGFj
a0hlaWdodHMoKVtmdW5jdGlvbkluZGV4XSk7CisgICAgV0FTTUZ1bmN0aW9uQ29tcGlsZXIgY29t
cGlsZXIodm0sIGNvZGVCbG9jaywgbW9kdWxlLCBtb2R1bGUtPmZ1bmN0aW9uU3RhY2tIZWlnaHRz
KClbZnVuY3Rpb25JbmRleF0pOwogICAgIHBhcnNlci5tX3JlYWRlci5zZXRPZmZzZXQobW9kdWxl
LT5mdW5jdGlvblN0YXJ0T2Zmc2V0c0luU291cmNlKClbZnVuY3Rpb25JbmRleF0pOwogICAgIHBh
cnNlci5wYXJzZUZ1bmN0aW9uKGNvbXBpbGVyKTsKICAgICBBU1NFUlQocGFyc2VyLm1fZXJyb3JN
ZXNzYWdlLmlzTnVsbCgpKTsKQEAgLTQ3NCw2ICs0NzQsOCBAQCBDb250ZXh0RXhwcmVzc2lvbiBX
QVNNRnVuY3Rpb25QYXJzZXI6OnBhcnNlRXhwcmVzc2lvbkkzMihDb250ZXh0JiBjb250ZXh0KQog
ICAgICAgICAgICAgcmV0dXJuIHBhcnNlSW1tZWRpYXRlRXhwcmVzc2lvbkkzMihjb250ZXh0KTsK
ICAgICAgICAgY2FzZSBXQVNNT3BFeHByZXNzaW9uSTMyOjpHZXRMb2NhbDoKICAgICAgICAgICAg
IHJldHVybiBwYXJzZUdldExvY2FsRXhwcmVzc2lvbkkzMihjb250ZXh0KTsKKyAgICAgICAgY2Fz
ZSBXQVNNT3BFeHByZXNzaW9uSTMyOjpDYWxsSW50ZXJuYWw6CisgICAgICAgICAgICByZXR1cm4g
cGFyc2VDYWxsSW50ZXJuYWxFeHByZXNzaW9uSTMyKGNvbnRleHQpOwogICAgICAgICBjYXNlIFdB
U01PcEV4cHJlc3Npb25JMzI6Ok5lZ2F0ZToKICAgICAgICAgY2FzZSBXQVNNT3BFeHByZXNzaW9u
STMyOjpCaXROb3Q6CiAgICAgICAgIGNhc2UgV0FTTU9wRXhwcmVzc2lvbkkzMjo6Q291bnRMZWFk
aW5nWmVyb3M6CkBAIC01MjQsNyArNTI2LDYgQEAgQ29udGV4dEV4cHJlc3Npb24gV0FTTUZ1bmN0
aW9uUGFyc2VyOjpwYXJzZUV4cHJlc3Npb25JMzIoQ29udGV4dCYgY29udGV4dCkKICAgICAgICAg
Y2FzZSBXQVNNT3BFeHByZXNzaW9uSTMyOjpTdG9yZVdpdGhPZmZzZXQxNjoKICAgICAgICAgY2Fz
ZSBXQVNNT3BFeHByZXNzaW9uSTMyOjpTdG9yZTMyOgogICAgICAgICBjYXNlIFdBU01PcEV4cHJl
c3Npb25JMzI6OlN0b3JlV2l0aE9mZnNldDMyOgotICAgICAgICBjYXNlIFdBU01PcEV4cHJlc3Np
b25JMzI6OkNhbGxJbnRlcm5hbDoKICAgICAgICAgY2FzZSBXQVNNT3BFeHByZXNzaW9uSTMyOjpD
YWxsSW5kaXJlY3Q6CiAgICAgICAgIGNhc2UgV0FTTU9wRXhwcmVzc2lvbkkzMjo6Q2FsbEltcG9y
dDoKICAgICAgICAgY2FzZSBXQVNNT3BFeHByZXNzaW9uSTMyOjpDb25kaXRpb25hbDoKQEAgLTYx
Myw2ICs2MTQsMTIgQEAgQ29udGV4dEV4cHJlc3Npb24gV0FTTUZ1bmN0aW9uUGFyc2VyOjpwYXJz
ZUdldExvY2FsRXhwcmVzc2lvbkkzMihDb250ZXh0JiBjb250ZXgKIH0KIAogdGVtcGxhdGUgPGNs
YXNzIENvbnRleHQ+CitDb250ZXh0RXhwcmVzc2lvbiBXQVNNRnVuY3Rpb25QYXJzZXI6OnBhcnNl
Q2FsbEludGVybmFsRXhwcmVzc2lvbkkzMihDb250ZXh0JiBjb250ZXh0KQoreworICAgIHJldHVy
biBwYXJzZUNhbGxJbnRlcm5hbChjb250ZXh0LCBXQVNNRXhwcmVzc2lvblR5cGU6OkkzMik7Cit9
CisKK3RlbXBsYXRlIDxjbGFzcyBDb250ZXh0PgogQ29udGV4dEV4cHJlc3Npb24gV0FTTUZ1bmN0
aW9uUGFyc2VyOjpwYXJzZVVuYXJ5RXhwcmVzc2lvbkkzMihDb250ZXh0JiBjb250ZXh0LCBXQVNN
T3BFeHByZXNzaW9uSTMyIG9wKQogewogICAgIENvbnRleHRFeHByZXNzaW9uIGV4cHJlc3Npb24g
PSBwYXJzZUV4cHJlc3Npb25JMzIoY29udGV4dCk7CkBAIC03NTAsNiArNzU3LDMyIEBAIENvbnRl
eHRFeHByZXNzaW9uIFdBU01GdW5jdGlvblBhcnNlcjo6cGFyc2VHZXRMb2NhbEV4cHJlc3Npb25G
NjQoQ29udGV4dCYgY29udGV4CiAgICAgcmV0dXJuIHBhcnNlR2V0TG9jYWxFeHByZXNzaW9uRjY0
KGNvbnRleHQsIGxvY2FsSW5kZXgpOwogfQogCit0ZW1wbGF0ZSA8Y2xhc3MgQ29udGV4dD4KK0Nv
bnRleHRFeHByZXNzaW9uTGlzdCBXQVNNRnVuY3Rpb25QYXJzZXI6OnBhcnNlQ2FsbEFyZ3VtZW50
cyhDb250ZXh0JiBjb250ZXh0LCBjb25zdCBWZWN0b3I8V0FTTVR5cGU+JiBhcmd1bWVudHMpCit7
CisgICAgQ29udGV4dEV4cHJlc3Npb25MaXN0IGFyZ3VtZW50TGlzdDsKKyAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IGFyZ3VtZW50cy5zaXplKCk7ICsraSkgeworICAgICAgICBDb250ZXh0RXhw
cmVzc2lvbiBleHByZXNzaW9uID0gcGFyc2VFeHByZXNzaW9uKGNvbnRleHQsIFdBU01FeHByZXNz
aW9uVHlwZShhcmd1bWVudHNbaV0pKTsKKyAgICAgICAgUFJPUEFHQVRFX0VSUk9SKCk7CisgICAg
ICAgIGNvbnRleHQuYXBwZW5kRXhwcmVzc2lvbkxpc3QoYXJndW1lbnRMaXN0LCBleHByZXNzaW9u
KTsKKyAgICB9CisgICAgcmV0dXJuIGFyZ3VtZW50TGlzdDsKK30KKwordGVtcGxhdGUgPGNsYXNz
IENvbnRleHQ+CitDb250ZXh0RXhwcmVzc2lvbiBXQVNNRnVuY3Rpb25QYXJzZXI6OnBhcnNlQ2Fs
bEludGVybmFsKENvbnRleHQmIGNvbnRleHQsIFdBU01FeHByZXNzaW9uVHlwZSByZXR1cm5UeXBl
KQoreworICAgIHVpbnQzMl90IGZ1bmN0aW9uSW5kZXg7CisgICAgUkVBRF9DT01QQUNUX1VJTlQz
Ml9PUl9GQUlMKGZ1bmN0aW9uSW5kZXgsICJDYW5ub3QgcmVhZCB0aGUgZnVuY3Rpb24gaW5kZXgu
Iik7CisgICAgRkFJTF9JRl9GQUxTRShmdW5jdGlvbkluZGV4IDwgbV9tb2R1bGUtPmZ1bmN0aW9u
RGVjbGFyYXRpb25zKCkuc2l6ZSgpLCAiVGhlIGZ1bmN0aW9uIGluZGV4IGlzIGluY29ycmVjdC4i
KTsKKyAgICBjb25zdCBXQVNNU2lnbmF0dXJlJiBzaWduYXR1cmUgPSBtX21vZHVsZS0+c2lnbmF0
dXJlcygpW21fbW9kdWxlLT5mdW5jdGlvbkRlY2xhcmF0aW9ucygpW2Z1bmN0aW9uSW5kZXhdLnNp
Z25hdHVyZUluZGV4XTsKKyAgICBGQUlMX0lGX0ZBTFNFKHNpZ25hdHVyZS5yZXR1cm5UeXBlID09
IHJldHVyblR5cGUsICJXcm9uZyByZXR1cm4gdHlwZS4iKTsKKworICAgIENvbnRleHRFeHByZXNz
aW9uTGlzdCBhcmd1bWVudExpc3QgPSBwYXJzZUNhbGxBcmd1bWVudHMoY29udGV4dCwgc2lnbmF0
dXJlLmFyZ3VtZW50cyk7CisgICAgUFJPUEFHQVRFX0VSUk9SKCk7CisgICAgcmV0dXJuIGNvbnRl
eHQuYnVpbGRDYWxsSW50ZXJuYWwoZnVuY3Rpb25JbmRleCwgYXJndW1lbnRMaXN0LCBzaWduYXR1
cmUsIHJldHVyblR5cGUpOworfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmIC8vIEVO
QUJMRShXRUJBU1NFTUJMWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L1dBU01GdW5jdGlvblBhcnNlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTUZ1
bmN0aW9uUGFyc2VyLmgKaW5kZXggMDJhYWM1MmQyN2M0NWU2OWQ2ZjIwMWNjYmJjY2UxOGI1NTZk
Nzk4MC4uY2MyNzBmYzg4MTVlMjAyNDgxZmJlMjc0Mjg4YThjZDBlNGQ4NjQ5MyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTUZ1bmN0aW9uUGFyc2VyLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTUZ1bmN0aW9uUGFyc2VyLmgKQEAgLTMzLDYg
KzMzLDcgQEAKIAogI2RlZmluZSBDb250ZXh0RXhwcmVzc2lvbiB0eXBlbmFtZSBDb250ZXh0OjpF
eHByZXNzaW9uCiAjZGVmaW5lIENvbnRleHRTdGF0ZW1lbnQgdHlwZW5hbWUgQ29udGV4dDo6U3Rh
dGVtZW50CisjZGVmaW5lIENvbnRleHRFeHByZXNzaW9uTGlzdCB0eXBlbmFtZSBDb250ZXh0OjpF
eHByZXNzaW9uTGlzdAogI2RlZmluZSBDb250ZXh0SnVtcFRhcmdldCB0eXBlbmFtZSBDb250ZXh0
OjpKdW1wVGFyZ2V0CiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtODUsNiArODYsNyBAQCBwcml2YXRl
OgogICAgIHRlbXBsYXRlIDxjbGFzcyBDb250ZXh0PiBDb250ZXh0RXhwcmVzc2lvbiBwYXJzZUlt
bWVkaWF0ZUV4cHJlc3Npb25JMzIoQ29udGV4dCYpOwogICAgIHRlbXBsYXRlIDxjbGFzcyBDb250
ZXh0PiBDb250ZXh0RXhwcmVzc2lvbiBwYXJzZUdldExvY2FsRXhwcmVzc2lvbkkzMihDb250ZXh0
JiwgdWludDMyX3QgbG9jYWxJbmRleCk7CiAgICAgdGVtcGxhdGUgPGNsYXNzIENvbnRleHQ+IENv
bnRleHRFeHByZXNzaW9uIHBhcnNlR2V0TG9jYWxFeHByZXNzaW9uSTMyKENvbnRleHQmKTsKKyAg
ICB0ZW1wbGF0ZSA8Y2xhc3MgQ29udGV4dD4gQ29udGV4dEV4cHJlc3Npb24gcGFyc2VDYWxsSW50
ZXJuYWxFeHByZXNzaW9uSTMyKENvbnRleHQmKTsKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgQ29udGV4
dD4gQ29udGV4dEV4cHJlc3Npb24gcGFyc2VVbmFyeUV4cHJlc3Npb25JMzIoQ29udGV4dCYsIFdB
U01PcEV4cHJlc3Npb25JMzIpOwogICAgIHRlbXBsYXRlIDxjbGFzcyBDb250ZXh0PiBDb250ZXh0
RXhwcmVzc2lvbiBwYXJzZUJpbmFyeUV4cHJlc3Npb25JMzIoQ29udGV4dCYsIFdBU01PcEV4cHJl
c3Npb25JMzIpOwogICAgIHRlbXBsYXRlIDxjbGFzcyBDb250ZXh0PiBDb250ZXh0RXhwcmVzc2lv
biBwYXJzZVJlbGF0aW9uYWxJMzJFeHByZXNzaW9uSTMyKENvbnRleHQmLCBXQVNNT3BFeHByZXNz
aW9uSTMyKTsKQEAgLTk2LDYgKzk4LDkgQEAgcHJpdmF0ZToKICAgICB0ZW1wbGF0ZSA8Y2xhc3Mg
Q29udGV4dD4gQ29udGV4dEV4cHJlc3Npb24gcGFyc2VHZXRMb2NhbEV4cHJlc3Npb25GNjQoQ29u
dGV4dCYsIHVpbnQzMl90IGxvY2FsSW5kZXgpOwogICAgIHRlbXBsYXRlIDxjbGFzcyBDb250ZXh0
PiBDb250ZXh0RXhwcmVzc2lvbiBwYXJzZUdldExvY2FsRXhwcmVzc2lvbkY2NChDb250ZXh0Jik7
CiAKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgQ29udGV4dD4gQ29udGV4dEV4cHJlc3Npb25MaXN0IHBh
cnNlQ2FsbEFyZ3VtZW50cyhDb250ZXh0JiwgY29uc3QgVmVjdG9yPFdBU01UeXBlPiYgYXJndW1l
bnRzKTsKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgQ29udGV4dD4gQ29udGV4dEV4cHJlc3Npb24gcGFy
c2VDYWxsSW50ZXJuYWwoQ29udGV4dCYsIFdBU01FeHByZXNzaW9uVHlwZSByZXR1cm5UeXBlKTsK
KwogICAgIEpTV0FTTU1vZHVsZSogbV9tb2R1bGU7CiAgICAgV0FTTVJlYWRlciBtX3JlYWRlcjsK
ICAgICBzaXplX3QgbV9mdW5jdGlvbkluZGV4OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vV0FTTUZ1bmN0aW9uU3ludGF4Q2hlY2tlci5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vV0FTTUZ1bmN0aW9uU3ludGF4Q2hlY2tlci5oCmluZGV4IDg0MmZhYTU5MmE1
NTI3OGMwYzU4YmUyZWNkMGI1Y2M4MTdkMDUxNzguLjhkMDY3ZGYyYWI5NGViNjNmOTJmYjRiNmNj
N2ZmOTFkNWNlOGU0OTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dB
U01GdW5jdGlvblN5bnRheENoZWNrZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9XQVNNRnVuY3Rpb25TeW50YXhDaGVja2VyLmgKQEAgLTM2LDYgKzM2LDcgQEAgY2xhc3MgV0FT
TUZ1bmN0aW9uU3ludGF4Q2hlY2tlciB7CiBwdWJsaWM6CiAgICAgdHlwZWRlZiBpbnQgRXhwcmVz
c2lvbjsKICAgICB0eXBlZGVmIGludCBTdGF0ZW1lbnQ7CisgICAgdHlwZWRlZiBpbnQgRXhwcmVz
c2lvbkxpc3Q7CiAgICAgdHlwZWRlZiBpbnQgSnVtcFRhcmdldDsKICAgICBlbnVtIGNsYXNzIEp1
bXBDb25kaXRpb24geyBaZXJvLCBOb25aZXJvIH07CiAKQEAgLTk4LDYgKzk5LDI1IEBAIHB1Ymxp
YzoKICAgICAgICAgcmV0dXJuIFVOVVNFRDsKICAgICB9CiAKKyAgICBpbnQgYnVpbGRDYWxsSW50
ZXJuYWwodWludDMyX3QsIGludCwgY29uc3QgV0FTTVNpZ25hdHVyZSYgc2lnbmF0dXJlLCBXQVNN
RXhwcmVzc2lvblR5cGUgcmV0dXJuVHlwZSkKKyAgICB7CisgICAgICAgIHNpemVfdCBhcmd1bWVu
dENvdW50ID0gc2lnbmF0dXJlLmFyZ3VtZW50cy5zaXplKCk7CisKKyAgICAgICAgLy8gQm94ZWQg
YXJndW1lbnRzICsgdGhpcyBhcmd1bWVudCArIGNhbGwgZnJhbWUgaGVhZGVyICsgcGFkZGluZy4K
KyAgICAgICAgbV90ZW1wU3RhY2tUb3AgKz0gYXJndW1lbnRDb3VudCArIDEgKyBKU1N0YWNrOjpD
YWxsRnJhbWVIZWFkZXJTaXplICsgMTsKKyAgICAgICAgdXBkYXRlVGVtcFN0YWNrSGVpZ2h0KCk7
CisgICAgICAgIG1fdGVtcFN0YWNrVG9wIC09IGFyZ3VtZW50Q291bnQgKyAxICsgSlNTdGFjazo6
Q2FsbEZyYW1lSGVhZGVyU2l6ZSArIDE7CisKKyAgICAgICAgbV90ZW1wU3RhY2tUb3AgLT0gYXJn
dW1lbnRDb3VudDsKKyAgICAgICAgaWYgKHJldHVyblR5cGUgIT0gV0FTTUV4cHJlc3Npb25UeXBl
OjpWb2lkKSB7CisgICAgICAgICAgICBtX3RlbXBTdGFja1RvcCsrOworICAgICAgICAgICAgdXBk
YXRlVGVtcFN0YWNrSGVpZ2h0KCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIFVOVVNFRDsK
KyAgICB9CisKKyAgICB2b2lkIGFwcGVuZEV4cHJlc3Npb25MaXN0KGludCYsIGludCkgeyB9CisK
ICAgICB2b2lkIGxpbmtUYXJnZXQoY29uc3QgaW50JikgeyB9CiAgICAgdm9pZCBqdW1wVG9UYXJn
ZXQoY29uc3QgaW50JikgeyB9CiAgICAgdm9pZCBqdW1wVG9UYXJnZXRJZihKdW1wQ29uZGl0aW9u
LCBpbnQsIGNvbnN0IGludCYpCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>