<?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>28844</bug_id>
          
          <creation_ts>2009-08-31 03:34:07 -0700</creation_ts>
          <short_desc>V8 binding of WebSocket</short_desc>
          <delta_ts>2009-09-01 16:18:26 -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>WebCore JavaScript</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Fumitoshi Ukai">ukai</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>dglazkov</cc>
    
    <cc>eric</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>143616</commentid>
    <comment_count>0</comment_count>
    <who name="Fumitoshi Ukai">ukai</who>
    <bug_when>2009-08-31 03:34:07 -0700</bug_when>
    <thetext>V8 binding of WebSocket API.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>143802</commentid>
    <comment_count>1</comment_count>
      <attachid>38851</attachid>
    <who name="Fumitoshi Ukai">ukai</who>
    <bug_when>2009-09-01 02:25:55 -0700</bug_when>
    <thetext>Created attachment 38851
V8 Bindings for WebSocket API


---
 10 files changed, 318 insertions(+), 1 deletions(-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>143903</commentid>
    <comment_count>2</comment_count>
      <attachid>38851</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-09-01 08:38:38 -0700</bug_when>
    <thetext>Comment on attachment 38851
V8 Bindings for WebSocket API

This looks good.  I presume we already have LayoutTests from the JSC implementation?

nit:  In WebKit-land, we use FIXME instead of TODO.

Also, is there a bug on file for Worker support for WebSockets?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>143907</commentid>
    <comment_count>3</comment_count>
      <attachid>38851</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-09-01 08:54:25 -0700</bug_when>
    <thetext>Comment on attachment 38851
V8 Bindings for WebSocket API

Rejecting patch 38851 from commit-queue.  This patch will require manual commit.

[&apos;WebKitTools/Scripts/run-webkit-tests&apos;, &apos;--no-launch-safari&apos;, &apos;--quiet&apos;, &apos;--exit-after-n-failures=1&apos;] failed with exit code 1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>143911</commentid>
    <comment_count>4</comment_count>
      <attachid>38851</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-09-01 09:07:52 -0700</bug_when>
    <thetext>Comment on attachment 38851
V8 Bindings for WebSocket API

Rejecting patch 38851 from commit-queue.  This patch will require manual commit.

[&apos;WebKitTools/Scripts/run-webkit-tests&apos;, &apos;--no-launch-safari&apos;, &apos;--quiet&apos;, &apos;--exit-after-n-failures=1&apos;] failed with exit code 1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>143918</commentid>
    <comment_count>5</comment_count>
      <attachid>38851</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-09-01 09:39:24 -0700</bug_when>
    <thetext>Comment on attachment 38851
V8 Bindings for WebSocket API

Clearing flags on attachment: 38851

Committed r47941: &lt;http://trac.webkit.org/changeset/47941&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>143919</commentid>
    <comment_count>6</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-09-01 09:39:31 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>144031</commentid>
    <comment_count>7</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-09-01 16:16:30 -0700</bug_when>
    <thetext>media/video-source-add-src.html -&gt; crashed

The commit-queue hit bug 28845.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>144032</commentid>
    <comment_count>8</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-09-01 16:18:26 -0700</bug_when>
    <thetext>Sorry.  commit-queue failed because a layout test got left around from a previously failed patch:
svg/dom/smil-methods.svg -&gt; failed

This type of error is tracked by bug 28603.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>38851</attachid>
            <date>2009-09-01 02:25:55 -0700</date>
            <delta_ts>2009-09-01 09:39:24 -0700</delta_ts>
            <desc>V8 Bindings for WebSocket API</desc>
            <filename>bug-28844-20090901182554.patch</filename>
            <type>text/plain</type>
            <size>17545</size>
            <attacher name="Fumitoshi Ukai">ukai</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ODQwODk2NS4uOGQyZTBmMiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMyBAQAorMjAwOS0wOS0wMSAgRnVtaXRvc2hpIFVr
YWkgIDx1a2FpQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBWOCBCaW5kaW5ncyBmb3IgV2ViU29ja2V0IEFQSS4KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI4ODQ0CisKKyAgICAgICAg
KiBiaW5kaW5ncy92OC9ET01PYmplY3RzSW5jbHVkZS5oOgorICAgICAgICAqIGJpbmRpbmdzL3Y4
L0Rlcml2ZWRTb3VyY2VzQWxsSW5PbmUuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4RE9N
V3JhcHBlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOERPTVdyYXBwZXI6OmdldFRlbXBsYXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OlY4RE9NV3JhcHBlcjo6Y29udmVydFRvVjhPYmplY3QpOgor
ICAgICAgICAoV2ViQ29yZTo6VjhET01XcmFwcGVyOjpjb252ZXJ0RXZlbnRUYXJnZXRUb1Y4T2Jq
ZWN0KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOERPTVdyYXBwZXIuaDoKKyAgICAgICAgKiBi
aW5kaW5ncy92OC9WOEluZGV4LmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOEluZGV4Lmg6
CisgICAgICAgICogYmluZGluZ3MvdjgvV29ya2VyQ29udGV4dEV4ZWN1dGlvblByb3h5LmNwcDoK
KyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhDdXN0b21CaW5kaW5nLmg6CisgICAgICAg
ICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4V2ViU29ja2V0Q3VzdG9tLmNwcDogQWRkZWQuCisKIDIw
MDktMDgtMzEgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgogCiAgICAgICAgIFJ1
YmJlcnN0YW1wZWQgYnkgU2FtIFdlaW5pZwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy92
OC9ET01PYmplY3RzSW5jbHVkZS5oIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9ET01PYmplY3RzSW5j
bHVkZS5oCmluZGV4IGFjMWI5OTAuLjAyOWM0YzAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGlu
Z3MvdjgvRE9NT2JqZWN0c0luY2x1ZGUuaAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RPTU9i
amVjdHNJbmNsdWRlLmgKQEAgLTIwOCw2ICsyMDgsMTAgQEAKICNpbmNsdWRlICJWOFNWR1BPRFR5
cGVXcmFwcGVyLmgiCiAjZW5kaWYgLy8gU1ZHCiAKKyNpZiBFTkFCTEUoV0VCX1NPQ0tFVFMpCisj
aW5jbHVkZSAiV2ViU29ja2V0LmgiCisjZW5kaWYKKwogI2lmIEVOQUJMRShXT1JLRVJTKQogI2lu
Y2x1ZGUgIkRlZGljYXRlZFdvcmtlckNvbnRleHQuaCIKICNpbmNsdWRlICJXb3JrZXIuaCIKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvdjgvRGVyaXZlZFNvdXJjZXNBbGxJbk9uZS5jcHAg
Yi9XZWJDb3JlL2JpbmRpbmdzL3Y4L0Rlcml2ZWRTb3VyY2VzQWxsSW5PbmUuY3BwCmluZGV4IDgz
ZGQwMmQuLmVlMjYwMGMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvdjgvRGVyaXZlZFNv
dXJjZXNBbGxJbk9uZS5jcHAKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9EZXJpdmVkU291cmNl
c0FsbEluT25lLmNwcApAQCAtMzI0LDYgKzMyNCw5IEBACiAjaW5jbHVkZSAiYmluZGluZ3MvVjhX
ZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZS5jcHAiCiAjaW5jbHVkZSAiYmluZGluZ3MvVjhXZWJLaXRQ
b2ludC5jcHAiCiAjaW5jbHVkZSAiYmluZGluZ3MvVjhXZWJLaXRUcmFuc2l0aW9uRXZlbnQuY3Bw
IgorI2lmIEVOQUJMRShXRUJfU09DS0VUUykKKyNpbmNsdWRlICJiaW5kaW5ncy9WOFdlYlNvY2tl
dC5jcHAiCisjZW5kaWYKICNpbmNsdWRlICJiaW5kaW5ncy9WOFdoZWVsRXZlbnQuY3BwIgogI2lu
Y2x1ZGUgImJpbmRpbmdzL1Y4V29ya2VyLmNwcCIKICNpbmNsdWRlICJiaW5kaW5ncy9WOFdvcmtl
ckNvbnRleHQuY3BwIgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdyYXBw
ZXIuY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdyYXBwZXIuY3BwCmluZGV4IDdjNTY5
OTIuLjE3YjYwNzMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XcmFwcGVy
LmNwcAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5jcHAKQEAgLTQ1Nyw2
ICs0NTcsMTUgQEAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IFY4RE9NV3Jh
cHBlcjo6Z2V0VGVtcGxhdGUoVjhDbGFzc0luZGV4OjpWOFcKICAgICBjYXNlIFY4Q2xhc3NJbmRl
eDo6V0VCS0lUUE9JTlQ6CiAgICAgICAgIGRlc2NyaXB0b3ItPlNldENhbGxIYW5kbGVyKFVTRV9D
QUxMQkFDSyhXZWJLaXRQb2ludENvbnN0cnVjdG9yKSk7CiAgICAgICAgIGJyZWFrOworI2lmIEVO
QUJMRShXRUJfU09DS0VUUykKKyAgICBjYXNlIFY4Q2xhc3NJbmRleDo6V0VCU09DS0VUOiB7Cisg
ICAgICAgIC8vIFJlc2VydmUgb25lIG1vcmUgaW50ZXJuYWwgZmllbGQgZm9yIGtlZXBpbmcgZXZl
bnQgbGlzdGVuZXJzLgorICAgICAgICB2ODo6TG9jYWw8djg6Ok9iamVjdFRlbXBsYXRlPiBpbnN0
YW5jZVRlbXBsYXRlID0gZGVzY3JpcHRvci0+SW5zdGFuY2VUZW1wbGF0ZSgpOworICAgICAgICBp
bnN0YW5jZVRlbXBsYXRlLT5TZXRJbnRlcm5hbEZpZWxkQ291bnQoVjhDdXN0b206OmtXZWJTb2Nr
ZXRJbnRlcm5hbEZpZWxkQ291bnQpOworICAgICAgICBkZXNjcmlwdG9yLT5TZXRDYWxsSGFuZGxl
cihVU0VfQ0FMTEJBQ0soV2ViU29ja2V0Q29uc3RydWN0b3IpKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgfQorI2VuZGlmCiAgICAgY2FzZSBWOENsYXNzSW5kZXg6OlhNTFNFUklBTElaRVI6CiAgICAg
ICAgIGRlc2NyaXB0b3ItPlNldENhbGxIYW5kbGVyKFVTRV9DQUxMQkFDSyhYTUxTZXJpYWxpemVy
Q29uc3RydWN0b3IpKTsKICAgICAgICAgYnJlYWs7CkBAIC01NjIsNiArNTcxLDcgQEAgdjg6Okhh
bmRsZTx2ODo6VmFsdWU+IFY4RE9NV3JhcHBlcjo6Y29udmVydFRvVjhPYmplY3QoVjhDbGFzc0lu
ZGV4OjpWOFdyYXBwZXJUeXAKIAogICAgIC8vIFRoZXNlIG9iamVjdHMgY2FuIGJlIGNvbnN0cnVj
dGVkIHVuZGVyIFdvcmtlckNvbnRleHRFeGVjdXRpb25Qcm94eS4gIFRoZXkgbmVlZCBzcGVjaWFs
CiAgICAgLy8gaGFuZGxpbmcsIHNpbmNlIGlmIHdlIHByb2NlZWQgYmVsb3cgVjhQcm94eTo6cmV0
cmlldmUoKSB3aWxsIGdldCBjYWxsZWQgYW5kIHdpbGwgY3Jhc2guCisgICAgLy8gVE9ETyh1a2Fp
KTogd2Vic29ja2V0PwogICAgIGlmICgodHlwZSA9PSBWOENsYXNzSW5kZXg6OkRPTUNPUkVFWENF
UFRJT04KICAgICAgICAgIHx8IHR5cGUgPT0gVjhDbGFzc0luZGV4OjpSQU5HRUVYQ0VQVElPTgog
ICAgICAgICAgfHwgdHlwZSA9PSBWOENsYXNzSW5kZXg6OkVWRU5URVhDRVBUSU9OCkBAIC0xMjY5
LDYgKzEyNzksMTIgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4RE9NV3JhcHBlcjo6Y29udmVy
dEV2ZW50VGFyZ2V0VG9WOE9iamVjdChFdmVudFRhcmdldCogdGEKICAgICAgICAgcmV0dXJuIGNv
bnZlcnRUb1Y4T2JqZWN0KFY4Q2xhc3NJbmRleDo6Tk9USUZJQ0FUSU9OLCBub3RpZmljYXRpb24p
OwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoV0VCX1NPQ0tFVFMpCisgICAgV2ViU29ja2V0KiB3ZWJT
b2NrZXQgPSB0YXJnZXQtPnRvV2ViU29ja2V0KCk7CisgICAgaWYgKHdlYlNvY2tldCkKKyAgICAg
ICAgcmV0dXJuIGNvbnZlcnRUb1Y4T2JqZWN0KFY4Q2xhc3NJbmRleDo6V0VCU09DS0VULCB3ZWJT
b2NrZXQpOworI2VuZGlmCisKICAgICBOb2RlKiBub2RlID0gdGFyZ2V0LT50b05vZGUoKTsKICAg
ICBpZiAobm9kZSkKICAgICAgICAgcmV0dXJuIGNvbnZlcnROb2RlVG9WOE9iamVjdChub2RlKTsK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XcmFwcGVyLmggYi9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5oCmluZGV4IDNiMGNkN2EuLjJjM2U1MTYgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XcmFwcGVyLmgKKysrIGIvV2ViQ29yZS9i
aW5kaW5ncy92OC9WOERPTVdyYXBwZXIuaApAQCAtODYsNiArODYsOSBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgY2xhc3MgU3R5bGVTaGVldExpc3Q7CiAgICAgY2xhc3MgVjhFdmVudExpc3Rl
bmVyOwogICAgIGNsYXNzIFY4T2JqZWN0RXZlbnRMaXN0ZW5lcjsKKyNpZiBFTkFCTEUoV0VCX1NP
Q0tFVFMpCisgICAgY2xhc3MgV2ViU29ja2V0OworI2VuZGlmCiAgICAgY2xhc3MgV29ya2VyQ29u
dGV4dDsKIAogICAgIGNsYXNzIFY4RE9NV3JhcHBlciB7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L1Y4SW5kZXguY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEluZGV4LmNwcApp
bmRleCA5ZDk0Y2NkLi4zMTc1ZmFmIDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4
SW5kZXguY3BwCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhJbmRleC5jcHAKQEAgLTM3OCw2
ICszNzgsMTAgQEAKICNpbmNsdWRlICJWOFRpbWVSYW5nZXMuaCIKICNlbmRpZgogCisjaWYgRU5B
QkxFKFdFQl9TT0NLRVRTKQorI2luY2x1ZGUgIlY4V2ViU29ja2V0LmgiCisjZW5kaWYKKwogI2lm
IEVOQUJMRShXT1JLRVJTKQogI2luY2x1ZGUgIlY4QWJzdHJhY3RXb3JrZXIuaCIKICNpbmNsdWRl
ICJWOERlZGljYXRlZFdvcmtlckNvbnRleHQuaCIKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGlu
Z3MvdjgvVjhJbmRleC5oIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEluZGV4LmgKaW5kZXggNjBi
YTBmYy4uZWUzMWIxYiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEluZGV4LmgK
KysrIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEluZGV4LmgKQEAgLTI5NywxMyArMjk3LDIxIEBA
IHR5cGVkZWYgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+ICgqRnVuY3Rpb25U
ZW1wbGF0ZUZhY3RvcnkpKCk7CiAjZW5kaWYgIC8vIFNWRwogCiAKKyNpZiBFTkFCTEUoV0VCX1NP
Q0tFVFMpCisjZGVmaW5lIFdFQlNPQ0tFVF9BQ1RJVkVfT0JKRUNUX1dSQVBQRVJfVFlQRVMoVikg
ICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgVihXRUJTT0NLRVQsIFdlYlNvY2tldCkKKyNl
bHNlCisjZGVmaW5lIFdFQlNPQ0tFVF9BQ1RJVkVfT0JKRUNUX1dSQVBQRVJfVFlQRVMoVikKKyNl
bmRpZgorCiAvLyBBQ1RJVkVfRE9NX09CSkVDVF9UWVBFUyBhcmUgRE9NX09CSkVDVF9UWVBFUyB0
aGF0IG5lZWQgc3BlY2lhbCB0cmVhdGVtZW50CiAvLyBkdXJpbmcgR0MuCiAjZGVmaW5lIEFDVElW
RV9ET01fT0JKRUNUX1RZUEVTKFYpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCiAgICAgVihNRVNTQUdFUE9SVCwgTWVzc2FnZVBvcnQpICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCiAgICAgVihYTUxIVFRQUkVRVUVTVCwgWE1MSHR0cFJlcXVl
c3QpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgV09SS0VSX0FDVElW
RV9PQkpFQ1RfV1JBUFBFUl9UWVBFUyhWKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
Ci0gICAgU0hBUkVEX1dPUktFUl9BQ1RJVkVfT0JKRUNUX1dSQVBQRVJfVFlQRVMoVikKKyAgICBT
SEFSRURfV09SS0VSX0FDVElWRV9PQkpFQ1RfV1JBUFBFUl9UWVBFUyhWKSAgICAgICAgICAgICAg
ICAgICAgICAgIFwKKyAgICBXRUJTT0NLRVRfQUNUSVZFX09CSkVDVF9XUkFQUEVSX1RZUEVTKFYp
CiAKIC8vIE5PVEU6IERPTV9PQkpFQ1RfVFlQRVMgaXMgc3BsaXQgaW50byB0d28gaGFsdmVzIGJl
Y2F1c2UKIC8vICAgICAgIFZpc3VhbCBTdHVkaW8ncyBJbnRlbGxpbm9uc2Vuc2UgY3Jhc2hlcyB3
aGVuIG1hY3JvcyBnZXQKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvdjgvV29ya2VyQ29u
dGV4dEV4ZWN1dGlvblByb3h5LmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvdjgvV29ya2VyQ29udGV4
dEV4ZWN1dGlvblByb3h5LmNwcAppbmRleCAyMjUxNzQ3Li4xNDExMDk3IDEwMDY0NAotLS0gYS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L1dvcmtlckNvbnRleHRFeGVjdXRpb25Qcm94eS5jcHAKKysrIGIv
V2ViQ29yZS9iaW5kaW5ncy92OC9Xb3JrZXJDb250ZXh0RXhlY3V0aW9uUHJveHkuY3BwCkBAIC00
OSw2ICs0OSw5IEBACiAjaW5jbHVkZSAiVjhQcm94eS5oIgogI2luY2x1ZGUgIlY4V29ya2VyQ29u
dGV4dEV2ZW50TGlzdGVuZXIuaCIKICNpbmNsdWRlICJWOFdvcmtlckNvbnRleHRPYmplY3RFdmVu
dExpc3RlbmVyLmgiCisjaWYgRU5BQkxFKFdFQl9TT0NLRVRTKQorI2luY2x1ZGUgIldlYlNvY2tl
dC5oIgorI2VuZGlmCiAjaW5jbHVkZSAiV29ya2VyLmgiCiAjaW5jbHVkZSAiV29ya2VyQ29udGV4
dC5oIgogI2luY2x1ZGUgIldvcmtlckxvY2F0aW9uLmgiCmRpZmYgLS1naXQgYS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L2N1c3RvbS9WOEN1c3RvbUJpbmRpbmcuaCBiL1dlYkNvcmUvYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4Q3VzdG9tQmluZGluZy5oCmluZGV4IDJjNTQyODYuLjEwNzViZjggMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q3VzdG9tQmluZGluZy5oCisrKyBiL1dl
YkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q3VzdG9tQmluZGluZy5oCkBAIC0xNjMsNiArMTYz
LDExIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgc3RhdGljIGNvbnN0IGludCBrRE9N
QXBwbGljYXRpb25DYWNoZUZpZWxkQ291bnQgPSBrRGVmYXVsdFdyYXBwZXJJbnRlcm5hbEZpZWxk
Q291bnQgKyAxOwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoV0VCX1NPQ0tFVFMpCisgICAgICAgIHN0
YXRpYyBjb25zdCBpbnQga1dlYlNvY2tldENhY2hlSW5kZXggPSBrRGVmYXVsdFdyYXBwZXJJbnRl
cm5hbEZpZWxkQ291bnQgKyAwOworICAgICAgICBzdGF0aWMgY29uc3QgaW50IGtXZWJTb2NrZXRJ
bnRlcm5hbEZpZWxkQ291bnQgPSBrRGVmYXVsdFdyYXBwZXJJbnRlcm5hbEZpZWxkQ291bnQgKyAx
OworI2VuZGlmCisKICNkZWZpbmUgREVDTEFSRV9QUk9QRVJUWV9BQ0NFU1NPUl9HRVRURVIoTkFN
RSkgXAogICAgIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdjgjI05BTUUjI0FjY2Vzc29y
R2V0dGVyKCBcCiAgICAgICAgIHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6
QWNjZXNzb3JJbmZvJiBpbmZvKQpAQCAtNTM5LDYgKzU0NCwxNSBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soU2hhcmVkV29ya2VyQ29uc3RydWN0b3IpOwog
I2VuZGlmCiAKKyNpZiBFTkFCTEUoV0VCX1NPQ0tFVFMpCisgICAgICAgIERFQ0xBUkVfUFJPUEVS
VFlfQUNDRVNTT1IoV2ViU29ja2V0T25vcGVuKTsKKyAgICAgICAgREVDTEFSRV9QUk9QRVJUWV9B
Q0NFU1NPUihXZWJTb2NrZXRPbm1lc3NhZ2UpOworICAgICAgICBERUNMQVJFX1BST1BFUlRZX0FD
Q0VTU09SKFdlYlNvY2tldE9uY2xvc2UpOworICAgICAgICBERUNMQVJFX0NBTExCQUNLKFdlYlNv
Y2tldENvbnN0cnVjdG9yKTsKKyAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhXZWJTb2NrZXRTZW5k
KTsKKyAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhXZWJTb2NrZXRDbG9zZSk7CisjZW5kaWYKKwog
I3VuZGVmIERFQ0xBUkVfSU5ERVhFRF9BQ0NFU1NfQ0hFQ0sKICN1bmRlZiBERUNMQVJFX05BTUVE
X0FDQ0VTU19DSEVDSwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9W
OFdlYlNvY2tldEN1c3RvbS5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFdlYlNv
Y2tldEN1c3RvbS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTZhZmMz
YwotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4V2ViU29j
a2V0Q3VzdG9tLmNwcApAQCAtMCwwICsxLDI0MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAw
OSBHb29nbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
ICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAg
ICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwor
ICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAor
ICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiV2ViU29ja2V0LmgiCisKKyNpbmNsdWRlICJGcmFtZS5oIgorI2luY2x1ZGUgIlY4Qmlu
ZGluZy5oIgorI2luY2x1ZGUgIlY4T2JqZWN0RXZlbnRMaXN0ZW5lci5oIgorI2luY2x1ZGUgIlY4
UHJveHkuaCIKKyNpbmNsdWRlICJWOFV0aWxpdGllcy5oIgorI2luY2x1ZGUgIldvcmtlckNvbnRl
eHQuaCIKKyNpbmNsdWRlICJXb3JrZXJDb250ZXh0RXhlY3V0aW9uUHJveHkuaCIKKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitzdGF0aWMgUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiBnZXRFdmVu
dExpc3RlbmVyKFdlYlNvY2tldCogd2ViU29ja2V0LCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1
ZSwgYm9vbCBmaW5kT25seSkKK3sKKyNpZiBFTkFCTEUoV09SS0VSUykKKyAgICBXb3JrZXJDb250
ZXh0RXhlY3V0aW9uUHJveHkqIHdvcmtlckNvbnRleHRQcm94eSA9IFdvcmtlckNvbnRleHRFeGVj
dXRpb25Qcm94eTo6cmV0cmlldmUoKTsKKyAgICBpZiAod29ya2VyQ29udGV4dFByb3h5KQorICAg
ICAgICByZXR1cm4gd29ya2VyQ29udGV4dFByb3h5LT5maW5kT3JDcmVhdGVPYmplY3RFdmVudExp
c3RlbmVyKHZhbHVlLCBmYWxzZSwgZmluZE9ubHkpOworI2VuZGlmCisKKyAgICBWOFByb3h5KiBw
cm94eSA9IFY4UHJveHk6OnJldHJpZXZlKHdlYlNvY2tldC0+c2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpKTsKKyAgICBpZiAocHJveHkpIHsKKyAgICAgICAgVjhFdmVudExpc3RlbmVyTGlzdCogbGlz
dCA9IHByb3h5LT5vYmplY3RMaXN0ZW5lcnMoKTsKKyAgICAgICAgcmV0dXJuIGZpbmRPbmx5ID8g
bGlzdC0+ZmluZFdyYXBwZXIodmFsdWUsIGZhbHNlKSA6IGxpc3QtPmZpbmRPckNyZWF0ZVdyYXBw
ZXI8VjhPYmplY3RFdmVudExpc3RlbmVyPihwcm94eS0+ZnJhbWUoKSwgdmFsdWUsIGZhbHNlKTsK
KyAgICB9CisKKyAgICByZXR1cm4gUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPigpOworfQorCitB
Q0NFU1NPUl9HRVRURVIoV2ViU29ja2V0T25vcGVuKQoreworICAgIElOQ19TVEFUUygiRE9NLldl
YlNvY2tldC5vbm9wZW4uX2dldCIpOworICAgIFdlYlNvY2tldCogd2ViU29ja2V0ID0gVjhET01X
cmFwcGVyOjpjb252ZXJ0VG9OYXRpdmVPYmplY3Q8V2ViU29ja2V0PihWOENsYXNzSW5kZXg6OldF
QlNPQ0tFVCwgaW5mby5Ib2xkZXIoKSk7CisgICAgaWYgKHdlYlNvY2tldC0+b25vcGVuKCkpIHsK
KyAgICAgICAgVjhPYmplY3RFdmVudExpc3RlbmVyKiBsaXN0ZW5lciA9IHN0YXRpY19jYXN0PFY4
T2JqZWN0RXZlbnRMaXN0ZW5lcio+KHdlYlNvY2tldC0+b25vcGVuKCkpOworICAgICAgICB2ODo6
TG9jYWw8djg6Ok9iamVjdD4gdjhMaXN0ZW5lciA9IGxpc3RlbmVyLT5nZXRMaXN0ZW5lck9iamVj
dCgpOworICAgICAgICByZXR1cm4gdjhMaXN0ZW5lcjsKKyAgICB9CisgICAgcmV0dXJuIHY4OjpO
dWxsKCk7Cit9CisKK0FDQ0VTU09SX1NFVFRFUihXZWJTb2NrZXRPbm9wZW4pCit7CisgICAgSU5D
X1NUQVRTKCJET00uV2ViU29ja2V0Lm9ub3Blbi5fc2V0Iik7CisgICAgV2ViU29ja2V0KiB3ZWJT
b2NrZXQgPSBWOERPTVdyYXBwZXI6OmNvbnZlcnRUb05hdGl2ZU9iamVjdDxXZWJTb2NrZXQ+KFY4
Q2xhc3NJbmRleDo6V0VCU09DS0VULCBpbmZvLkhvbGRlcigpKTsKKyAgICBpZiAodmFsdWUtPklz
TnVsbCgpKSB7CisgICAgICAgIGlmICh3ZWJTb2NrZXQtPm9ub3BlbigpKSB7CisgICAgICAgICAg
ICBWOE9iamVjdEV2ZW50TGlzdGVuZXIqIGxpc3RlbmVyID0gc3RhdGljX2Nhc3Q8VjhPYmplY3RF
dmVudExpc3RlbmVyKj4od2ViU29ja2V0LT5vbm9wZW4oKSk7CisgICAgICAgICAgICB2ODo6TG9j
YWw8djg6Ok9iamVjdD4gdjhMaXN0ZW5lciA9IGxpc3RlbmVyLT5nZXRMaXN0ZW5lck9iamVjdCgp
OworICAgICAgICAgICAgcmVtb3ZlSGlkZGVuRGVwZW5kZW5jeShpbmZvLkhvbGRlcigpLCB2OExp
c3RlbmVyLCBWOEN1c3RvbTo6a1dlYlNvY2tldENhY2hlSW5kZXgpOworICAgICAgICB9CisgICAg
ICAgIC8vIENsZWFyIHRoZSBsaXN0ZW5lci4KKyAgICAgICAgd2ViU29ja2V0LT5zZXRPbm9wZW4o
MCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgUmVmUHRyPEV2ZW50TGlzdGVuZXI+IGxpc3RlbmVy
ID0gZ2V0RXZlbnRMaXN0ZW5lcih3ZWJTb2NrZXQsIHZhbHVlLCBmYWxzZSk7CisgICAgICAgIGlm
IChsaXN0ZW5lcikgeworICAgICAgICAgICAgd2ViU29ja2V0LT5zZXRPbm9wZW4obGlzdGVuZXIp
OworICAgICAgICAgICAgY3JlYXRlSGlkZGVuRGVwZW5kZW5jeShpbmZvLkhvbGRlcigpLCB2YWx1
ZSwgVjhDdXN0b206OmtXZWJTb2NrZXRDYWNoZUluZGV4KTsKKyAgICAgICAgfQorICAgIH0KK30K
KworQUNDRVNTT1JfR0VUVEVSKFdlYlNvY2tldE9ubWVzc2FnZSkKK3sKKyAgICBJTkNfU1RBVFMo
IkRPTS5XZWJTb2NrZXQub25tZXNzYWdlLl9nZXQiKTsKKyAgICBXZWJTb2NrZXQqIHdlYlNvY2tl
dCA9IFY4RE9NV3JhcHBlcjo6Y29udmVydFRvTmF0aXZlT2JqZWN0PFdlYlNvY2tldD4oVjhDbGFz
c0luZGV4OjpXRUJTT0NLRVQsIGluZm8uSG9sZGVyKCkpOworICAgIGlmICh3ZWJTb2NrZXQtPm9u
bWVzc2FnZSgpKSB7CisgICAgICAgIFJlZlB0cjxWOE9iamVjdEV2ZW50TGlzdGVuZXI+IGxpc3Rl
bmVyID0gc3RhdGljX2Nhc3Q8VjhPYmplY3RFdmVudExpc3RlbmVyKj4od2ViU29ja2V0LT5vbm1l
c3NhZ2UoKSk7CisgICAgICAgIHY4OjpMb2NhbDx2ODo6T2JqZWN0PiB2OExpc3RlbmVyID0gbGlz
dGVuZXItPmdldExpc3RlbmVyT2JqZWN0KCk7CisgICAgICAgIHJldHVybiB2OExpc3RlbmVyOwor
ICAgIH0KKyAgICByZXR1cm4gdjg6Ok51bGwoKTsKK30KKworQUNDRVNTT1JfU0VUVEVSKFdlYlNv
Y2tldE9ubWVzc2FnZSkKK3sKKyAgICBJTkNfU1RBVFMoIkRPTS5XZWJTb2NrZXQub25tZXNzYWdl
Ll9zZXQiKTsKKyAgICBXZWJTb2NrZXQqIHdlYlNvY2tldCA9IFY4RE9NV3JhcHBlcjo6Y29udmVy
dFRvTmF0aXZlT2JqZWN0PFdlYlNvY2tldD4oVjhDbGFzc0luZGV4OjpXRUJTT0NLRVQsIGluZm8u
SG9sZGVyKCkpOworICAgIGlmICh2YWx1ZS0+SXNOdWxsKCkpIHsKKyAgICAgICAgaWYgKHdlYlNv
Y2tldC0+b25tZXNzYWdlKCkpIHsKKyAgICAgICAgICAgIFY4T2JqZWN0RXZlbnRMaXN0ZW5lciog
bGlzdGVuZXIgPSBzdGF0aWNfY2FzdDxWOE9iamVjdEV2ZW50TGlzdGVuZXIqPih3ZWJTb2NrZXQt
Pm9ubWVzc2FnZSgpKTsKKyAgICAgICAgICAgIHY4OjpMb2NhbDx2ODo6T2JqZWN0PiB2OExpc3Rl
bmVyID0gbGlzdGVuZXItPmdldExpc3RlbmVyT2JqZWN0KCk7CisgICAgICAgICAgICByZW1vdmVI
aWRkZW5EZXBlbmRlbmN5KGluZm8uSG9sZGVyKCksIHY4TGlzdGVuZXIsIFY4Q3VzdG9tOjprV2Vi
U29ja2V0Q2FjaGVJbmRleCk7CisgICAgICAgIH0KKyAgICAgICAgLy8gQ2xlYXIgdGhlIGxpc3Rl
bmVyLgorICAgICAgICB3ZWJTb2NrZXQtPnNldE9ubWVzc2FnZSgwKTsKKyAgICB9IGVsc2Ugewor
ICAgICAgICBSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gbGlzdGVuZXIgPSBnZXRFdmVudExpc3RlbmVy
KHdlYlNvY2tldCwgdmFsdWUsIGZhbHNlKTsKKyAgICAgICAgaWYgKGxpc3RlbmVyKSB7CisgICAg
ICAgICAgICB3ZWJTb2NrZXQtPnNldE9ubWVzc2FnZShsaXN0ZW5lcik7CisgICAgICAgICAgICBj
cmVhdGVIaWRkZW5EZXBlbmRlbmN5KGluZm8uSG9sZGVyKCksIHZhbHVlLCBWOEN1c3RvbTo6a1dl
YlNvY2tldENhY2hlSW5kZXgpOworICAgICAgICB9CisgICAgfQorfQorCitBQ0NFU1NPUl9HRVRU
RVIoV2ViU29ja2V0T25jbG9zZSkKK3sKKyAgICBJTkNfU1RBVFMoIkRPTS5XZWJTb2NrZXQub25j
bG9zZS5fZ2V0Iik7CisgICAgV2ViU29ja2V0KiB3ZWJTb2NrZXQgPSBWOERPTVdyYXBwZXI6OmNv
bnZlcnRUb05hdGl2ZU9iamVjdDxXZWJTb2NrZXQ+KFY4Q2xhc3NJbmRleDo6V0VCU09DS0VULCBp
bmZvLkhvbGRlcigpKTsKKyAgICBpZiAod2ViU29ja2V0LT5vbmNsb3NlKCkpIHsKKyAgICAgICAg
VjhPYmplY3RFdmVudExpc3RlbmVyKiBsaXN0ZW5lciA9IHN0YXRpY19jYXN0PFY4T2JqZWN0RXZl
bnRMaXN0ZW5lcio+KHdlYlNvY2tldC0+b25jbG9zZSgpKTsKKyAgICAgICAgdjg6OkxvY2FsPHY4
OjpPYmplY3Q+IHY4TGlzdGVuZXIgPSBsaXN0ZW5lci0+Z2V0TGlzdGVuZXJPYmplY3QoKTsKKyAg
ICAgICAgcmV0dXJuIHY4TGlzdGVuZXI7CisgICAgfQorICAgIHJldHVybiB2ODo6TnVsbCgpOwor
fQorCitBQ0NFU1NPUl9TRVRURVIoV2ViU29ja2V0T25jbG9zZSkKK3sKKyAgICBJTkNfU1RBVFMo
IkRPTS5XZWJTb2NrZXQub25jbG9zZS5fc2V0Iik7CisgICAgV2ViU29ja2V0KiB3ZWJTb2NrZXQg
PSBWOERPTVdyYXBwZXI6OmNvbnZlcnRUb05hdGl2ZU9iamVjdDxXZWJTb2NrZXQ+KFY4Q2xhc3NJ
bmRleDo6V0VCU09DS0VULCBpbmZvLkhvbGRlcigpKTsKKyAgICBpZiAodmFsdWUtPklzTnVsbCgp
KSB7CisgICAgICAgIGlmICh3ZWJTb2NrZXQtPm9uY2xvc2UoKSkgeworICAgICAgICAgICAgVjhP
YmplY3RFdmVudExpc3RlbmVyKiBsaXN0ZW5lciA9IHN0YXRpY19jYXN0PFY4T2JqZWN0RXZlbnRM
aXN0ZW5lcio+KHdlYlNvY2tldC0+b25jbG9zZSgpKTsKKyAgICAgICAgICAgIHY4OjpMb2NhbDx2
ODo6T2JqZWN0PiB2OExpc3RlbmVyID0gbGlzdGVuZXItPmdldExpc3RlbmVyT2JqZWN0KCk7Cisg
ICAgICAgICAgICByZW1vdmVIaWRkZW5EZXBlbmRlbmN5KGluZm8uSG9sZGVyKCksIHY4TGlzdGVu
ZXIsIFY4Q3VzdG9tOjprV2ViU29ja2V0Q2FjaGVJbmRleCk7CisgICAgICAgIH0KKyAgICAgICAg
Ly8gQ2xlYXIgdGhlIGxpc3RlbmVyLgorICAgICAgICB3ZWJTb2NrZXQtPnNldE9uY2xvc2UoMCk7
CisgICAgfSBlbHNlIHsKKyAgICAgICAgUmVmUHRyPEV2ZW50TGlzdGVuZXI+IGxpc3RlbmVyID0g
Z2V0RXZlbnRMaXN0ZW5lcih3ZWJTb2NrZXQsIHZhbHVlLCBmYWxzZSk7CisgICAgICAgIGlmIChs
aXN0ZW5lcikgeworICAgICAgICAgICAgd2ViU29ja2V0LT5zZXRPbmNsb3NlKGxpc3RlbmVyKTsK
KyAgICAgICAgICAgIGNyZWF0ZUhpZGRlbkRlcGVuZGVuY3koaW5mby5Ib2xkZXIoKSwgdmFsdWUs
IFY4Q3VzdG9tOjprV2ViU29ja2V0Q2FjaGVJbmRleCk7CisgICAgICAgIH0KKyAgICB9Cit9CisK
Ky8vID8/PyBBZGRFdmVudExpc3RlbmVyLCBSZW1vdmVFdmVudExpc3RlbmVyCisKK0NBTExCQUNL
X0ZVTkNfREVDTChXZWJTb2NrZXRDb25zdHJ1Y3RvcikKK3sKKyAgICBJTkNfU1RBVFMoIkRPTS5X
ZWJTb2NrZXQuQ29uc3RydWN0b3IiKTsKKworICAgIGlmICghYXJncy5Jc0NvbnN0cnVjdENhbGwo
KSkKKyAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoIkRPTSBvYmplY3QgY3VzdHJ1Y3RvciBjYW5u
b3QgYmUgY2FsbGVkIGFzIGEgZnVuY3Rpb24uIik7CisgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPT0g
MCkKKyAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoIk5vdCBlbm91Z2ggYXJndW1lbnRzIiwgVjhQ
cm94eTo6U3ludGF4RXJyb3IpOworCisgICAgdjg6OlRyeUNhdGNoIHRyeUNhdGNoOworICAgIHY4
OjpIYW5kbGU8djg6OlN0cmluZz4gdXJsc3RyaW5nID0gYXJnc1swXS0+VG9TdHJpbmcoKTsKKyAg
ICBpZiAodHJ5Q2F0Y2guSGFzQ2F1Z2h0KCkpCisgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKHRy
eUNhdGNoLkV4Y2VwdGlvbigpKTsKKyAgICBpZiAodXJsc3RyaW5nLklzRW1wdHkoKSkKKyAgICAg
ICAgcmV0dXJuIHRocm93RXJyb3IoIkVtcHR5IFVSTCIsIFY4UHJveHk6OlN5bnRheEVycm9yKTsK
KworICAgIC8vIEdldCB0aGUgc2NyaXB0IGV4ZWN1dGlvbiBjb250ZXh0LgorICAgIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQgPSAwOworICAgIC8vIFRPRE86IFdvcmtlcnMKKyAgICBp
ZiAoIWNvbnRleHQpIHsKKyAgICAgICAgRnJhbWUqIGZyYW1lID0gVjhQcm94eTo6cmV0cmlldmVG
cmFtZUZvckN1cnJlbnRDb250ZXh0KCk7CisgICAgICAgIGlmICghZnJhbWUpCisgICAgICAgICAg
ICByZXR1cm4gdGhyb3dFcnJvcigiV2ViU29ja2V0IGNvbnN0cnVjdG9yJ3MgYXNzb2NpYXRlZCBm
cmFtZSBpcyBub3QgYXZhaWxhYmxlIiwgVjhQcm94eTo6UmVmZXJlbmNlRXJyb3IpOworICAgICAg
ICBjb250ZXh0ID0gZnJhbWUtPmRvY3VtZW50KCk7CisgICAgfQorCisgICAgY29uc3QgS1VSTCYg
dXJsID0gY29udGV4dC0+Y29tcGxldGVVUkwodG9XZWJDb3JlU3RyaW5nKHVybHN0cmluZykpOwor
CisgICAgUmVmUHRyPFdlYlNvY2tldD4gd2ViU29ja2V0ID0gV2ViU29ja2V0OjpjcmVhdGUoY29u
dGV4dCk7CisgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisKKyAgICBpZiAoYXJncy5MZW5ndGgo
KSA8IDIpCisgICAgICAgIHdlYlNvY2tldC0+Y29ubmVjdCh1cmwsIGVjKTsKKyAgICBlbHNlIHsK
KyAgICAgICAgdjg6OlRyeUNhdGNoIHRyeUNhdGNoUHJvdG9jb2w7CisgICAgICAgIHY4OjpIYW5k
bGU8djg6OlN0cmluZz4gcHJvdG9jb2wgPSBhcmdzWzFdLT5Ub1N0cmluZygpOworICAgICAgICBp
ZiAodHJ5Q2F0Y2hQcm90b2NvbC5IYXNDYXVnaHQoKSkKKyAgICAgICAgICAgIHJldHVybiB0aHJv
d0Vycm9yKHRyeUNhdGNoUHJvdG9jb2wuRXhjZXB0aW9uKCkpOworICAgICAgICB3ZWJTb2NrZXQt
PmNvbm5lY3QodXJsLCB0b1dlYkNvcmVTdHJpbmcocHJvdG9jb2wpLCBlYyk7CisgICAgfQorICAg
IGlmIChlYykKKyAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoZWMpOworCisgICAgLy8gU2V0dXAg
dGhlIHN0YW5kYXJkIHdyYXBwZXIgb2JqZWN0IGludGVybmFsIGZpZWxkcy4KKyAgICBWOERPTVdy
YXBwZXI6OnNldERPTVdyYXBwZXIoYXJncy5Ib2xkZXIoKSwgVjhDbGFzc0luZGV4OjpUb0ludChW
OENsYXNzSW5kZXg6OldFQlNPQ0tFVCksIHdlYlNvY2tldC5nZXQoKSk7CisKKyAgICAvLyBBZGQg
b2JqZWN0IHRvIHRoZSB3cmFwcGVyIG1hcC4KKyAgICB3ZWJTb2NrZXQtPnJlZigpOworICAgIFY4
RE9NV3JhcHBlcjo6c2V0SlNXcmFwcGVyRm9yQWN0aXZlRE9NT2JqZWN0KHdlYlNvY2tldC5nZXQo
KSwgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD46Ok5ldyhhcmdzLkhvbGRlcigpKSk7CisKKyAg
ICByZXR1cm4gYXJncy5Ib2xkZXIoKTsKK30KKworQ0FMTEJBQ0tfRlVOQ19ERUNMKFdlYlNvY2tl
dFNlbmQpCit7CisgICAgSU5DX1NUQVRTKCJET00uV2ViU29ja2V0LnNlbmQoKSIpOworICAgIFdl
YlNvY2tldCogd2ViU29ja2V0ID0gVjhET01XcmFwcGVyOjpjb252ZXJ0VG9OYXRpdmVPYmplY3Q8
V2ViU29ja2V0PihWOENsYXNzSW5kZXg6OldFQlNPQ0tFVCwgYXJncy5Ib2xkZXIoKSk7CisKKyAg
ICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBib29sIHJldCA9IGZhbHNlOworICAgIGlmIChh
cmdzLkxlbmd0aCgpIDwgMSkKKyAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoIk5vdCBlbm91Z2gg
YXJndW1lbnRzIiwgVjhQcm94eTo6U3ludGF4RXJyb3IpOworICAgIGVsc2UgeworICAgICAgICBT
dHJpbmcgbXNnID0gdG9XZWJDb3JlU3RyaW5nKGFyZ3NbMF0pOworICAgICAgICByZXQgPSB3ZWJT
b2NrZXQtPnNlbmQobXNnLCBlYyk7CisgICAgfQorICAgIGlmIChlYykKKyAgICAgICAgcmV0dXJu
IHRocm93RXJyb3IoZWMpOworICAgIHJldHVybiB2OEJvb2xlYW4ocmV0KTsKK30KKworQ0FMTEJB
Q0tfRlVOQ19ERUNMKFdlYlNvY2tldENsb3NlKQoreworICAgIElOQ19TVEFUUygiRE9NLldlYlNv
Y2tldC5jbG9zZSgpIik7CisgICAgV2ViU29ja2V0KiB3ZWJTb2NrZXQgPSBWOERPTVdyYXBwZXI6
OmNvbnZlcnRUb05hdGl2ZU9iamVjdDxXZWJTb2NrZXQ+KFY4Q2xhc3NJbmRleDo6V0VCU09DS0VU
LCBhcmdzLkhvbGRlcigpKTsKKworICAgIHdlYlNvY2tldC0+Y2xvc2UoKTsKKyAgICByZXR1cm4g
djg6OlVuZGVmaW5lZCgpOworfQorCit9ICAvLyBuYW1lc3BhY2UgV2ViQ29yZQ==
</data>

          </attachment>
      

    </bug>

</bugzilla>