<?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>51768</bug_id>
          
          <creation_ts>2010-12-31 00:48:11 -0800</creation_ts>
          <short_desc>Move V8 to WebCore Location implementation</short_desc>
          <delta_ts>2010-12-31 11:56:52 -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>Other</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Adam Barth">abarth</reporter>
          <assigned_to name="Adam Barth">abarth</assigned_to>
          <cc>antonm</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>dglazkov</cc>
    
    <cc>sam</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>328118</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-12-31 00:48:11 -0800</bug_when>
    <thetext>Move V8 to WebCore Location implementation</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>328119</commentid>
    <comment_count>1</comment_count>
      <attachid>77706</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-12-31 00:49:54 -0800</bug_when>
    <thetext>Created attachment 77706
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>328120</commentid>
    <comment_count>2</comment_count>
      <attachid>77707</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-12-31 00:59:43 -0800</bug_when>
    <thetext>Created attachment 77707
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>328121</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-12-31 01:04:25 -0800</bug_when>
    <thetext>Attachment 77706 did not build on chromium:
Build output: http://queues.webkit.org/results/7324275</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>328125</commentid>
    <comment_count>4</comment_count>
    <who name="anton muhin">antonm</who>
    <bug_when>2010-12-31 01:24:53 -0800</bug_when>
    <thetext>LGTM and thanks

(In reply to comment #3)
&gt; Attachment 77706 [details] did not build on chromium:
&gt; Build output: http://queues.webkit.org/results/7324275</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>328137</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-12-31 02:11:33 -0800</bug_when>
    <thetext>Attachment 77706 did not build on chromium:
Build output: http://queues.webkit.org/results/7305283</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>328185</commentid>
    <comment_count>6</comment_count>
      <attachid>77707</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-12-31 09:09:49 -0800</bug_when>
    <thetext>Comment on attachment 77707
Patch

LGTM.  Are there any testable functional changes from thsi?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>328204</commentid>
    <comment_count>7</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-12-31 11:37:09 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; Are there any testable functional changes from thsi?

Our intention is that there not be any changes. This is a refactoring to move code out of JavaScript bindings into the DOM where it belongs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>328208</commentid>
    <comment_count>8</comment_count>
      <attachid>77707</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-12-31 11:56:45 -0800</bug_when>
    <thetext>Comment on attachment 77707
Patch

Clearing flags on attachment: 77707

Committed r74833: &lt;http://trac.webkit.org/changeset/74833&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>328209</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-12-31 11:56:52 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>77706</attachid>
            <date>2010-12-31 00:49:54 -0800</date>
            <delta_ts>2010-12-31 00:59:40 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-51768-20101231004953.patch</filename>
            <type>text/plain</type>
            <size>17234</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3NDgyMSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzAgQEAKKzIwMTAtMTItMzEgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9y
Zz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNb3Zl
IFY4IHRvIFdlYkNvcmUgTG9jYXRpb24gaW1wbGVtZW50YXRpb24KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUxNzY4CisKKyAgICAgICAgKiBiaW5kaW5n
cy9nZW5lcmljL0JpbmRpbmdGcmFtZS5oOgorICAgICAgICAqIGJpbmRpbmdzL2dlbmVyaWMvQmlu
ZGluZ0xvY2F0aW9uLmg6CisgICAgICAgICogYmluZGluZ3MvdjgvVjhCaW5kaW5nLmg6CisgICAg
ICAgICogYmluZGluZ3MvdjgvVjhET01XaW5kb3dTaGVsbC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpWOERPTVdpbmRvd1NoZWxsOjpzZXRMb2NhdGlvbik6CisgICAgICAgICogYmluZGluZ3Mvdjgv
VjhVdGlsaXRpZXMuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4VXRpbGl0aWVzLmg6Cisg
ICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4TG9jYXRpb25DdXN0b20uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6VjhMb2NhdGlvbjo6aGFzaEFjY2Vzc29yU2V0dGVyKToKKyAgICAgICAgKFdl
YkNvcmU6OlY4TG9jYXRpb246Omhvc3RBY2Nlc3NvclNldHRlcik6CisgICAgICAgIChXZWJDb3Jl
OjpWOExvY2F0aW9uOjpob3N0bmFtZUFjY2Vzc29yU2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6
OlY4TG9jYXRpb246OmhyZWZBY2Nlc3NvclNldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpWOExv
Y2F0aW9uOjpwYXRobmFtZUFjY2Vzc29yU2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlY4TG9j
YXRpb246OnBvcnRBY2Nlc3NvclNldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpWOExvY2F0aW9u
Ojpwcm90b2NvbEFjY2Vzc29yU2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlY4TG9jYXRpb246
OnNlYXJjaEFjY2Vzc29yU2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlY4TG9jYXRpb246OnJl
bG9hZENhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlY4TG9jYXRpb246OnJlcGxhY2VDYWxs
YmFjayk6CisgICAgICAgIChXZWJDb3JlOjpWOExvY2F0aW9uOjphc3NpZ25DYWxsYmFjayk6CisK
IDIwMTAtMTItMjkgIFpoZW55YW8gTW8gIDx6bW9AZ29vZ2xlLmNvbT4KIAogICAgICAgICBSZXZp
ZXdlZCBieSBLZW5uZXRoIFJ1c3NlbGwuCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2dlbmVyaWMv
QmluZGluZ0ZyYW1lLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9nZW5lcmljL0Jp
bmRpbmdGcmFtZS5oCShyZXZpc2lvbiA3NDgyMSkKKysrIFdlYkNvcmUvYmluZGluZ3MvZ2VuZXJp
Yy9CaW5kaW5nRnJhbWUuaAkod29ya2luZyBjb3B5KQpAQCAtMzEsMjggKzMxLDYgQEAKICNpZm5k
ZWYgQmluZGluZ0ZyYW1lX2gKICNkZWZpbmUgQmluZGluZ0ZyYW1lX2gKIAotI2luY2x1ZGUgIkZy
YW1lLmgiCi0jaW5jbHVkZSAiR2VuZXJpY0JpbmRpbmcuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUg
ewotCi10ZW1wbGF0ZSA8Y2xhc3MgQmluZGluZz4KLWNsYXNzIEJpbmRpbmdGcmFtZSB7Ci1wdWJs
aWM6Ci0gICAgc3RhdGljIHZvaWQgbmF2aWdhdGVJZkFsbG93ZWQoU3RhdGU8QmluZGluZz4qLCBG
cmFtZSosIGNvbnN0IEtVUkwmLCBib29sIGxvY2tIaXN0b3J5LCBib29sIGxvY2tCYWNrRm9yd2Fy
ZExpc3QpOwotfTsKLQotdGVtcGxhdGUgPGNsYXNzIEJpbmRpbmc+Ci12b2lkIEJpbmRpbmdGcmFt
ZTxCaW5kaW5nPjo6bmF2aWdhdGVJZkFsbG93ZWQoU3RhdGU8QmluZGluZz4qIHN0YXRlLCBGcmFt
ZSogZnJhbWUsIGNvbnN0IEtVUkwmIHVybCwgYm9vbCBsb2NrSGlzdG9yeSwgYm9vbCBsb2NrQmFj
a0ZvcndhcmRMaXN0KQotewotICAgIEZyYW1lKiBhY3RpdmVGcmFtZSA9IHN0YXRlLT5hY3RpdmVG
cmFtZSgpOwotICAgIGlmICghYWN0aXZlRnJhbWUpCi0gICAgICAgIHJldHVybjsKLSAgICBpZiAo
IXByb3RvY29sSXNKYXZhU2NyaXB0KHVybCkgfHwgc3RhdGUtPmFsbG93c0FjY2Vzc0Zyb21GcmFt
ZShmcmFtZSkpCi0gICAgICAgIGZyYW1lLT5uYXZpZ2F0aW9uU2NoZWR1bGVyKCktPnNjaGVkdWxl
TG9jYXRpb25DaGFuZ2UoYWN0aXZlRnJhbWUtPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCks
Ci0gICAgICAgICAgICB1cmwuc3RyaW5nKCksIGFjdGl2ZUZyYW1lLT5sb2FkZXIoKS0+b3V0Z29p
bmdSZWZlcnJlcigpLCBsb2NrSGlzdG9yeSwgbG9ja0JhY2tGb3J3YXJkTGlzdCk7Ci19Ci0KLX0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKKy8vIEZJWE1FOiBSZW1vdmUgdGhpcyBmaWxlLgogCiAjZW5k
aWYgLy8gQmluZGluZ0ZyYW1lX2gKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvZ2VuZXJpYy9CaW5k
aW5nTG9jYXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2dlbmVyaWMvQmlu
ZGluZ0xvY2F0aW9uLmgJKHJldmlzaW9uIDc0ODIxKQorKysgV2ViQ29yZS9iaW5kaW5ncy9nZW5l
cmljL0JpbmRpbmdMb2NhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSwzNSArMzEsNiBAQAog
I2lmbmRlZiBCaW5kaW5nTG9jYXRpb25faAogI2RlZmluZSBCaW5kaW5nTG9jYXRpb25faAogCi0j
aW5jbHVkZSAiQmluZGluZ1NlY3VyaXR5LmgiCi0jaW5jbHVkZSAiR2VuZXJpY0JpbmRpbmcuaCIK
LSNpbmNsdWRlICJMb2NhdGlvbi5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXRlbXBsYXRl
IDxjbGFzcyBCaW5kaW5nPgotY2xhc3MgQmluZGluZ0xvY2F0aW9uIHsKLXB1YmxpYzoKLSAgICBz
dGF0aWMgdm9pZCByZXBsYWNlKFN0YXRlPEJpbmRpbmc+KiwgTG9jYXRpb24qLCBjb25zdCBTdHJp
bmcmIHVybCk7Ci19OwotCi10ZW1wbGF0ZSA8Y2xhc3MgQmluZGluZz4KLXZvaWQgQmluZGluZ0xv
Y2F0aW9uPEJpbmRpbmc+OjpyZXBsYWNlKFN0YXRlPEJpbmRpbmc+KiBzdGF0ZSwgTG9jYXRpb24q
IGxvY2F0aW9uLCBjb25zdCBTdHJpbmcmIHVybCkKLXsKLSAgICBGcmFtZSogZnJhbWUgPSBsb2Nh
dGlvbi0+ZnJhbWUoKTsKLSAgICBpZiAoIWZyYW1lKQotICAgICAgICByZXR1cm47Ci0KLSAgICBL
VVJMIGZ1bGxVUkwgPSBjb21wbGV0ZVVSTChzdGF0ZSwgdXJsKTsKLSAgICBpZiAoZnVsbFVSTC5p
c051bGwoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKCFCaW5kaW5nU2VjdXJpdHk8Qmlu
ZGluZz46OnNob3VsZEFsbG93TmF2aWdhdGlvbihzdGF0ZSwgZnJhbWUpKQotICAgICAgICByZXR1
cm47Ci0KLSAgICBCaW5kaW5nOjpGcmFtZTo6bmF2aWdhdGVJZkFsbG93ZWQoc3RhdGUsIGZyYW1l
LCBmdWxsVVJMLCB0cnVlLCB0cnVlKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorLy8g
RklYTUU6IFJlbW92ZSB0aGlzIGZpbGUuCiAKICNlbmRpZiAvLyBCaW5kaW5nTG9jYXRpb25faApJ
bmRleDogV2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRpbmcuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL2JpbmRpbmdzL3Y4L1Y4QmluZGluZy5oCShyZXZpc2lvbiA3NDgyMSkKKysrIFdlYkNvcmUv
YmluZGluZ3MvdjgvVjhCaW5kaW5nLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDggKzMxLDYgQEAK
ICNpZm5kZWYgVjhCaW5kaW5nX2gKICNkZWZpbmUgVjhCaW5kaW5nX2gKIAotI2luY2x1ZGUgIkJp
bmRpbmdGcmFtZS5oIgotI2luY2x1ZGUgIkJpbmRpbmdMb2NhdGlvbi5oIgogI2luY2x1ZGUgIkJp
bmRpbmdTZWN1cml0eS5oIgogI2luY2x1ZGUgIk1hdGhFeHRyYXMuaCIKICNpbmNsdWRlICJQbGF0
Zm9ybVN0cmluZy5oIgpAQCAtNDUsMTcgKzQzLDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAg
ICAgY2xhc3MgRXZlbnRMaXN0ZW5lcjsKICAgICBjbGFzcyBFdmVudFRhcmdldDsKLSAgICBjbGFz
cyBWOEJpbmRpbmdET01XaW5kb3c7CiAKLSAgICAvLyBJbnN0YW50aWF0ZSBiaW5kaW5nIHRlbXBs
YXRlIGNsYXNzZXMgZm9yIFY4LgorICAgIC8vIEZJWE1FOiBSZW1vdmUgVjhCaW5kaW5nLgogICAg
IGNsYXNzIFY4QmluZGluZyB7Ci0gICAgcHVibGljOgotICAgICAgICB0eXBlZGVmIHY4OjpIYW5k
bGU8djg6OlZhbHVlPiBWYWx1ZTsKLSAgICAgICAgdHlwZWRlZiBWOEJpbmRpbmdET01XaW5kb3cg
RE9NV2luZG93OwotICAgICAgICB0eXBlZGVmIEJpbmRpbmdGcmFtZTxWOEJpbmRpbmc+IEZyYW1l
OwotICAgICAgICB0eXBlZGVmIEJpbmRpbmdMb2NhdGlvbjxWOEJpbmRpbmc+IExvY2F0aW9uOwot
Ci0gICAgICAgIHN0YXRpYyBWYWx1ZSBlbXB0eVNjcmlwdFZhbHVlKCkgeyByZXR1cm4gdjg6Okxv
Y2FsPHY4OjpWYWx1ZT4oKTsgfQogICAgIH07CiAgICAgdHlwZWRlZiBCaW5kaW5nU2VjdXJpdHk8
VjhCaW5kaW5nPiBWOEJpbmRpbmdTZWN1cml0eTsKIApJbmRleDogV2ViQ29yZS9iaW5kaW5ncy92
OC9WOERPTVdpbmRvd1NoZWxsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4
L1Y4RE9NV2luZG93U2hlbGwuY3BwCShyZXZpc2lvbiA3NDgyMSkKKysrIFdlYkNvcmUvYmluZGlu
Z3MvdjgvVjhET01XaW5kb3dTaGVsbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU3OCwyMCArNTc4
LDEwIEBAIHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBWOERPTVdpbmRvd1NoZWxsOjoKICAgICByZXR1
cm4gbm90SGFuZGxlZEJ5SW50ZXJjZXB0b3IoKTsKIH0KIAotdm9pZCBWOERPTVdpbmRvd1NoZWxs
OjpzZXRMb2NhdGlvbihET01XaW5kb3cqIHdpbmRvdywgY29uc3QgU3RyaW5nJiByZWxhdGl2ZVVS
TCkKK3ZvaWQgVjhET01XaW5kb3dTaGVsbDo6c2V0TG9jYXRpb24oRE9NV2luZG93KiB3aW5kb3cs
IGNvbnN0IFN0cmluZyYgbG9jYXRpb25TdHJpbmcpCiB7Ci0gICAgRnJhbWUqIGZyYW1lID0gd2lu
ZG93LT5mcmFtZSgpOwotICAgIGlmICghZnJhbWUpCi0gICAgICAgIHJldHVybjsKLQotICAgIEtV
UkwgdXJsID0gY29tcGxldGVVUkwocmVsYXRpdmVVUkwpOwotICAgIGlmICh1cmwuaXNOdWxsKCkp
Ci0gICAgICAgIHJldHVybjsKLQotICAgIGlmICghc2hvdWxkQWxsb3dOYXZpZ2F0aW9uKGZyYW1l
KSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbmF2aWdhdGVJZkFsbG93ZWQoZnJhbWUsIHVybCwg
ZmFsc2UsIGZhbHNlKTsKKyAgICBTdGF0ZTxWOEJpbmRpbmc+KiBzdGF0ZSA9IFY4QmluZGluZ1N0
YXRlOjpPbmx5KCk7CisgICAgd2luZG93LT5zZXRMb2NhdGlvbihsb2NhdGlvblN0cmluZywgc3Rh
dGUtPmFjdGl2ZVdpbmRvdygpLCBzdGF0ZS0+Zmlyc3RXaW5kb3coKSk7CiB9CiAKIH0gLy8gV2Vi
Q29yZQpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy92OC9WOFV0aWxpdGllcy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9iaW5kaW5ncy92OC9WOFV0aWxpdGllcy5jcHAJKHJldmlzaW9uIDc0ODIx
KQorKysgV2ViQ29yZS9iaW5kaW5ncy92OC9WOFV0aWxpdGllcy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTExNCwxMSArMTE0LDYgQEAgS1VSTCBjb21wbGV0ZVVSTChjb25zdCBTdHJpbmcmIHJlbGF0
aXZlVQogICAgIHJldHVybiBjb21wbGV0ZVVSTChWOEJpbmRpbmdTdGF0ZTo6T25seSgpLCByZWxh
dGl2ZVVSTCk7CiB9CiAKLXZvaWQgbmF2aWdhdGVJZkFsbG93ZWQoRnJhbWUqIGZyYW1lLCBjb25z
dCBLVVJMJiB1cmwsIGJvb2wgbG9ja0hpc3RvcnksIGJvb2wgbG9ja0JhY2tGb3J3YXJkTGlzdCkK
LXsKLSAgICByZXR1cm4gVjhCaW5kaW5nOjpGcmFtZTo6bmF2aWdhdGVJZkFsbG93ZWQoVjhCaW5k
aW5nU3RhdGU6Ok9ubHkoKSwgZnJhbWUsIHVybCwgbG9ja0hpc3RvcnksIGxvY2tCYWNrRm9yd2Fy
ZExpc3QpOwotfQotCiBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBnZXRTY3JpcHRFeGVjdXRpb25D
b250ZXh0KCkKIHsKICNpZiBFTkFCTEUoV09SS0VSUykKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3Mv
djgvVjhVdGlsaXRpZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4VXRp
bGl0aWVzLmgJKHJldmlzaW9uIDc0ODIxKQorKysgV2ViQ29yZS9iaW5kaW5ncy92OC9WOFV0aWxp
dGllcy5oCSh3b3JraW5nIGNvcHkpCkBAIC01Miw3ICs1Miw2IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICAgICBib29sIHByb2Nlc3NpbmdVc2VyR2VzdHVyZSgpOwogICAgIGJvb2wgc2hvdWxkQWxs
b3dOYXZpZ2F0aW9uKEZyYW1lKik7CiAgICAgS1VSTCBjb21wbGV0ZVVSTChjb25zdCBTdHJpbmcm
IHJlbGF0aXZlVVJMKTsKLSAgICB2b2lkIG5hdmlnYXRlSWZBbGxvd2VkKEZyYW1lKiwgY29uc3Qg
S1VSTCYsIGJvb2wgbG9ja0hpc3RvcnksIGJvb2wgbG9ja0JhY2tGb3J3YXJkTGlzdCk7CiAKICAg
ICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBnZXRTY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CiAK
SW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4TG9jYXRpb25DdXN0b20uY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4TG9jYXRpb25DdXN0b20u
Y3BwCShyZXZpc2lvbiA3NDgyMSkKKysrIFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4TG9j
YXRpb25DdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OCwxNzAgKzQ4LDEwMyBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLS8vIE5vdGVzIGFib3V0IFY4L0pTQyBwb3J0aW5nIG9mIHRo
aXMgZmlsZS4KLS8vIFRoaXMgY2xhc3MgaXMgbm90IHZlcnkgSlMtZW5naW5lIHNwZWNpZmljLiAg
SWYgd2UgY2FuIG1vdmUgYSBjb3VwbGUgb2YKLS8vIG1ldGhvZHMgdG8gdGhlIHNjcmlwdENvbnRy
b2xsZXIsIHdlIHNob3VsZCBiZSBhYmxlIHRvIHVuaWZ5IHRoZSBjb2RlCi0vLyBiZXR3ZWVuIEpT
QyBhbmQgVjg6Ci0vLyAgICB0b0NhbGxpbmdGcmFtZSgpICAgLSBpbiBKU0MsIHRoaXMgbmVlZHMg
YW4gRXhlY1N0YXRlLgotLy8gICAgaXNTYWZlU2NyaXB0KCkKLS8vIFNpbmNlIEpTQyBhbmQgVjgg
aGF2ZSBkaWZmZXJlbnQgbWVjaGFuaXNtcyBmb3IgZ2V0dGluZyBhdCB0aGUgY2FsbGluZyBmcmFt
ZSwKLS8vIHdlJ3JlIGp1c3QgbWFraW5nIGFsbCB0aGVzZSBjdXN0b20gZm9yIG5vdy4gIFRoZSBm
dW5jdGlvbmFsaXR5IGlzIHNpbXBsZQotLy8gYW5kIG1pcnJvcnMgSlNMb2NhdGlvbkN1c3RvbS5j
cHAuCi0KIHZvaWQgVjhMb2NhdGlvbjo6aGFzaEFjY2Vzc29yU2V0dGVyKHY4OjpMb2NhbDx2ODo6
U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vz
c29ySW5mbyYgaW5mbykKIHsKICAgICBJTkNfU1RBVFMoIkRPTS5Mb2NhdGlvbi5oYXNoLl9zZXQi
KTsKLSAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGhvbGRlciA9IGluZm8uSG9sZGVyKCk7Ci0g
ICAgTG9jYXRpb24qIGltcCA9IFY4TG9jYXRpb246OnRvTmF0aXZlKGhvbGRlcik7Ci0gICAgU3Ry
aW5nIGhhc2ggPSB0b1dlYkNvcmVTdHJpbmcodmFsdWUpOworICAgIExvY2F0aW9uKiBpbXBsID0g
VjhMb2NhdGlvbjo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CisgICAgU3RhdGU8VjhCaW5kaW5n
Piogc3RhdGUgPSBWOEJpbmRpbmdTdGF0ZTo6T25seSgpOwogCi0gICAgRnJhbWUqIGZyYW1lID0g
aW1wLT5mcmFtZSgpOwotICAgIGlmICghZnJhbWUpCi0gICAgICAgIHJldHVybjsKLQotICAgIEtV
UkwgdXJsID0gZnJhbWUtPmxvYWRlcigpLT51cmwoKTsKLSAgICBTdHJpbmcgb2xkUmVmID0gdXJs
LmZyYWdtZW50SWRlbnRpZmllcigpOwotCi0gICAgaWYgKGhhc2guc3RhcnRzV2l0aCgiIyIpKQot
ICAgICAgICBoYXNoID0gaGFzaC5zdWJzdHJpbmcoMSk7Ci0KLSAgICAvLyBOb3RlIHRoYXQgYnkg
cGFyc2luZyB0aGUgVVJMIGFuZCAqdGhlbiogY29tcGFyaW5nIGZyYWdtZW50cywgd2UgYXJlCi0g
ICAgLy8gY29tcGFyaW5nIGZyYWdtZW50cyBwb3N0LWNhbm9uaWNhbGl6YXRpb24sIGFuZCBzbyB0
aGlzIGhhbmRsZXMgdGhlCi0gICAgLy8gY2FzZXMgd2hlcmUgZnJhZ21lbnQgaWRlbnRpZmllcnMg
YXJlIGlnbm9yZWQgb3IgaW52YWxpZC4KLSAgICB1cmwuc2V0RnJhZ21lbnRJZGVudGlmaWVyKGhh
c2gpOwotICAgIFN0cmluZyBuZXdSZWYgPSB1cmwuZnJhZ21lbnRJZGVudGlmaWVyKCk7Ci0gICAg
aWYgKG9sZFJlZiA9PSBuZXdSZWYgfHwgKG9sZFJlZi5pc051bGwoKSAmJiBuZXdSZWYuaXNFbXB0
eSgpKSkKLSAgICAgICAgcmV0dXJuOworICAgIC8vIEZJWE1FOiBIYW5kbGUgZXhjZXB0aW9ucyBj
b3JyZWN0bHkuCisgICAgU3RyaW5nIGhhc2ggPSB0b1dlYkNvcmVTdHJpbmcodmFsdWUpOwogCi0g
ICAgbmF2aWdhdGVJZkFsbG93ZWQoZnJhbWUsIHVybCwgZmFsc2UsIGZhbHNlKTsKKyAgICBpbXBs
LT5zZXRIYXNoKGhhc2gsIHN0YXRlLT5hY3RpdmVXaW5kb3coKSwgc3RhdGUtPmZpcnN0V2luZG93
KCkpOwogfQogCiB2b2lkIFY4TG9jYXRpb246Omhvc3RBY2Nlc3NvclNldHRlcih2ODo6TG9jYWw8
djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpB
Y2Nlc3NvckluZm8mIGluZm8pCiB7CiAgICAgSU5DX1NUQVRTKCJET00uTG9jYXRpb24uaG9zdC5f
c2V0Iik7Ci0gICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBob2xkZXIgPSBpbmZvLkhvbGRlcigp
OwotICAgIExvY2F0aW9uKiBpbXAgPSBWOExvY2F0aW9uOjp0b05hdGl2ZShob2xkZXIpOwotICAg
IFN0cmluZyBob3N0ID0gdG9XZWJDb3JlU3RyaW5nKHZhbHVlKTsKKyAgICBMb2NhdGlvbiogaW1w
bCA9IFY4TG9jYXRpb246OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOworICAgIFN0YXRlPFY4Qmlu
ZGluZz4qIHN0YXRlID0gVjhCaW5kaW5nU3RhdGU6Ok9ubHkoKTsKIAotICAgIEZyYW1lKiBmcmFt
ZSA9IGltcC0+ZnJhbWUoKTsKLSAgICBpZiAoIWZyYW1lKQotICAgICAgICByZXR1cm47Ci0KLSAg
ICBLVVJMIHVybCA9IGZyYW1lLT5sb2FkZXIoKS0+dXJsKCk7Ci0gICAgU3RyaW5nIG5ld0hvc3Qg
PSBob3N0LmxlZnQoaG9zdC5maW5kKCI6IikpOwotICAgIFN0cmluZyBuZXdQb3J0ID0gaG9zdC5z
dWJzdHJpbmcoaG9zdC5maW5kKCI6IikgKyAxKTsKLSAgICB1cmwuc2V0SG9zdChuZXdIb3N0KTsK
LSAgICB1cmwuc2V0UG9ydChuZXdQb3J0LnRvVUludCgpKTsKKyAgICAvLyBGSVhNRTogSGFuZGxl
IGV4Y2VwdGlvbnMgY29ycmVjdGx5LgorICAgIFN0cmluZyBob3N0ID0gdG9XZWJDb3JlU3RyaW5n
KHZhbHVlKTsKIAotICAgIG5hdmlnYXRlSWZBbGxvd2VkKGZyYW1lLCB1cmwsIGZhbHNlLCBmYWxz
ZSk7CisgICAgaW1wbC0+c2V0SG9zdChob3N0LCBzdGF0ZS0+YWN0aXZlV2luZG93KCksIHN0YXRl
LT5maXJzdFdpbmRvdygpKTsKIH0KIAogdm9pZCBWOExvY2F0aW9uOjpob3N0bmFtZUFjY2Vzc29y
U2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2
YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKICAgICBJTkNfU1RBVFMoIkRP
TS5Mb2NhdGlvbi5ob3N0bmFtZS5fc2V0Iik7Ci0gICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBo
b2xkZXIgPSBpbmZvLkhvbGRlcigpOwotICAgIExvY2F0aW9uKiBpbXAgPSBWOExvY2F0aW9uOjp0
b05hdGl2ZShob2xkZXIpOwotICAgIFN0cmluZyBob3N0bmFtZSA9IHRvV2ViQ29yZVN0cmluZyh2
YWx1ZSk7CisgICAgTG9jYXRpb24qIGltcGwgPSBWOExvY2F0aW9uOjp0b05hdGl2ZShpbmZvLkhv
bGRlcigpKTsKKyAgICBTdGF0ZTxWOEJpbmRpbmc+KiBzdGF0ZSA9IFY4QmluZGluZ1N0YXRlOjpP
bmx5KCk7CiAKLSAgICBGcmFtZSogZnJhbWUgPSBpbXAtPmZyYW1lKCk7Ci0gICAgaWYgKCFmcmFt
ZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgS1VSTCB1cmwgPSBmcmFtZS0+bG9hZGVyKCktPnVy
bCgpOwotICAgIHVybC5zZXRIb3N0KGhvc3RuYW1lKTsKKyAgICAvLyBGSVhNRTogSGFuZGxlIGV4
Y2VwdGlvbnMgY29ycmVjdGx5LgorICAgIFN0cmluZyBob3N0bmFtZSA9IHRvV2ViQ29yZVN0cmlu
Zyh2YWx1ZSk7CiAKLSAgICBuYXZpZ2F0ZUlmQWxsb3dlZChmcmFtZSwgdXJsLCBmYWxzZSwgZmFs
c2UpOworICAgIGltcGwtPnNldEhvc3RuYW1lKGhvc3RuYW1lLCBzdGF0ZS0+YWN0aXZlV2luZG93
KCksIHN0YXRlLT5maXJzdFdpbmRvdygpKTsKIH0KIAogdm9pZCBWOExvY2F0aW9uOjpocmVmQWNj
ZXNzb3JTZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFs
dWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewogICAgIElOQ19TVEFU
UygiRE9NLkxvY2F0aW9uLmhyZWYuX3NldCIpOwotICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4g
aG9sZGVyID0gaW5mby5Ib2xkZXIoKTsKLSAgICBMb2NhdGlvbiogaW1wID0gVjhMb2NhdGlvbjo6
dG9OYXRpdmUoaG9sZGVyKTsKLQotICAgIEZyYW1lKiBmcmFtZSA9IGltcC0+ZnJhbWUoKTsKLSAg
ICBpZiAoIWZyYW1lKQotICAgICAgICByZXR1cm47Ci0KLSAgICBLVVJMIHVybCA9IGNvbXBsZXRl
VVJMKHRvV2ViQ29yZVN0cmluZyh2YWx1ZSkpOwotICAgIGlmICh1cmwuaXNOdWxsKCkpCi0gICAg
ICAgIHJldHVybjsKKyAgICBMb2NhdGlvbiogaW1wbCA9IFY4TG9jYXRpb246OnRvTmF0aXZlKGlu
Zm8uSG9sZGVyKCkpOworICAgIFN0YXRlPFY4QmluZGluZz4qIHN0YXRlID0gVjhCaW5kaW5nU3Rh
dGU6Ok9ubHkoKTsKIAotICAgIGlmICghc2hvdWxkQWxsb3dOYXZpZ2F0aW9uKGZyYW1lKSkKLSAg
ICAgICAgcmV0dXJuOworICAgIC8vIEZJWE1FOiBIYW5kbGUgZXhjZXB0aW9ucyBjb3JyZWN0bHku
CisgICAgU3RyaW5nIGhyZWYgPSB0b1dlYkNvcmVTdHJpbmcodmFsdWUpOwogCi0gICAgbmF2aWdh
dGVJZkFsbG93ZWQoZnJhbWUsIHVybCwgZmFsc2UsIGZhbHNlKTsKKyAgICBpbXBsLT5zZXRIcmVm
KGhyZWYsIHN0YXRlLT5hY3RpdmVXaW5kb3coKSwgc3RhdGUtPmZpcnN0V2luZG93KCkpOwogfQog
CiB2b2lkIFY4TG9jYXRpb246OnBhdGhuYW1lQWNjZXNzb3JTZXR0ZXIodjg6OkxvY2FsPHY4OjpT
dHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNz
b3JJbmZvJiBpbmZvKQogewogICAgIElOQ19TVEFUUygiRE9NLkxvY2F0aW9uLnBhdGhuYW1lLl9z
ZXQiKTsKLSAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGhvbGRlciA9IGluZm8uSG9sZGVyKCk7
Ci0gICAgTG9jYXRpb24qIGltcCA9IFY4TG9jYXRpb246OnRvTmF0aXZlKGhvbGRlcik7Ci0gICAg
U3RyaW5nIHBhdGhuYW1lID0gdG9XZWJDb3JlU3RyaW5nKHZhbHVlKTsKLQotICAgIEZyYW1lKiBm
cmFtZSA9IGltcC0+ZnJhbWUoKTsKLSAgICBpZiAoIWZyYW1lKQotICAgICAgICByZXR1cm47Cisg
ICAgTG9jYXRpb24qIGltcGwgPSBWOExvY2F0aW9uOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsK
KyAgICBTdGF0ZTxWOEJpbmRpbmc+KiBzdGF0ZSA9IFY4QmluZGluZ1N0YXRlOjpPbmx5KCk7CiAK
LSAgICBLVVJMIHVybCA9IGZyYW1lLT5sb2FkZXIoKS0+dXJsKCk7Ci0gICAgdXJsLnNldFBhdGgo
cGF0aG5hbWUpOworICAgIC8vIEZJWE1FOiBIYW5kbGUgZXhjZXB0aW9ucyBjb3JyZWN0bHkuCisg
ICAgU3RyaW5nIHBhdGhuYW1lID0gdG9XZWJDb3JlU3RyaW5nKHZhbHVlKTsKIAotICAgIG5hdmln
YXRlSWZBbGxvd2VkKGZyYW1lLCB1cmwsIGZhbHNlLCBmYWxzZSk7CisgICAgaW1wbC0+c2V0UGF0
aG5hbWUocGF0aG5hbWUsIHN0YXRlLT5hY3RpdmVXaW5kb3coKSwgc3RhdGUtPmZpcnN0V2luZG93
KCkpOwogfQogCiB2b2lkIFY4TG9jYXRpb246OnBvcnRBY2Nlc3NvclNldHRlcih2ODo6TG9jYWw8
djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpB
Y2Nlc3NvckluZm8mIGluZm8pCiB7CiAgICAgSU5DX1NUQVRTKCJET00uTG9jYXRpb24ucG9ydC5f
c2V0Iik7Ci0gICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBob2xkZXIgPSBpbmZvLkhvbGRlcigp
OwotICAgIExvY2F0aW9uKiBpbXAgPSBWOExvY2F0aW9uOjp0b05hdGl2ZShob2xkZXIpOwotICAg
IFN0cmluZyBwb3J0ID0gdG9XZWJDb3JlU3RyaW5nKHZhbHVlKTsKLQotICAgIEZyYW1lKiBmcmFt
ZSA9IGltcC0+ZnJhbWUoKTsKLSAgICBpZiAoIWZyYW1lKQotICAgICAgICByZXR1cm47CisgICAg
TG9jYXRpb24qIGltcGwgPSBWOExvY2F0aW9uOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKKyAg
ICBTdGF0ZTxWOEJpbmRpbmc+KiBzdGF0ZSA9IFY4QmluZGluZ1N0YXRlOjpPbmx5KCk7CiAKLSAg
ICBLVVJMIHVybCA9IGZyYW1lLT5sb2FkZXIoKS0+dXJsKCk7Ci0gICAgdXJsLnNldFBvcnQocG9y
dC50b1VJbnQoKSk7CisgICAgLy8gRklYTUU6IEhhbmRsZSBleGNlcHRpb25zIGNvcnJlY3RseS4K
KyAgICBTdHJpbmcgcG9ydCA9IHRvV2ViQ29yZVN0cmluZyh2YWx1ZSk7CiAKLSAgICBuYXZpZ2F0
ZUlmQWxsb3dlZChmcmFtZSwgdXJsLCBmYWxzZSwgZmFsc2UpOworICAgIGltcGwtPnNldFBvcnQo
cG9ydCwgc3RhdGUtPmFjdGl2ZVdpbmRvdygpLCBzdGF0ZS0+Zmlyc3RXaW5kb3coKSk7CiB9CiAK
IHZvaWQgVjhMb2NhdGlvbjo6cHJvdG9jb2xBY2Nlc3NvclNldHRlcih2ODo6TG9jYWw8djg6OlN0
cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3Nv
ckluZm8mIGluZm8pCiB7CiAgICAgSU5DX1NUQVRTKCJET00uTG9jYXRpb24ucHJvdG9jb2wuX3Nl
dCIpOwotICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gaG9sZGVyID0gaW5mby5Ib2xkZXIoKTsK
LSAgICBMb2NhdGlvbiogaW1wID0gVjhMb2NhdGlvbjo6dG9OYXRpdmUoaG9sZGVyKTsKLSAgICBT
dHJpbmcgcHJvdG9jb2wgPSB0b1dlYkNvcmVTdHJpbmcodmFsdWUpOworICAgIExvY2F0aW9uKiBp
bXBsID0gVjhMb2NhdGlvbjo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CisgICAgU3RhdGU8VjhC
aW5kaW5nPiogc3RhdGUgPSBWOEJpbmRpbmdTdGF0ZTo6T25seSgpOwogCi0gICAgRnJhbWUqIGZy
YW1lID0gaW1wLT5mcmFtZSgpOwotICAgIGlmICghZnJhbWUpCi0gICAgICAgIHJldHVybjsKLQot
ICAgIEtVUkwgdXJsID0gZnJhbWUtPmxvYWRlcigpLT51cmwoKTsKLSAgICBpZiAoIXVybC5zZXRQ
cm90b2NvbChwcm90b2NvbCkpIHsKLSAgICAgICAgdGhyb3dFcnJvcigiQ2FuJ3Qgc2V0IHByb3Rv
Y29sIiwgVjhQcm94eTo6U3ludGF4RXJyb3IpOwotICAgICAgICByZXR1cm47Ci0gICAgfQorICAg
IC8vIEZJWE1FOiBIYW5kbGUgZXhjZXB0aW9ucyBjb3JyZWN0bHkuCisgICAgU3RyaW5nIHByb3Rv
Y29sID0gdG9XZWJDb3JlU3RyaW5nKHZhbHVlKTsKIAotICAgIG5hdmlnYXRlSWZBbGxvd2VkKGZy
YW1lLCB1cmwsIGZhbHNlLCBmYWxzZSk7CisgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAg
aW1wbC0+c2V0UHJvdG9jb2wocHJvdG9jb2wsIHN0YXRlLT5hY3RpdmVXaW5kb3coKSwgc3RhdGUt
PmZpcnN0V2luZG93KCksIGVjKTsKKyAgICBpZiAoVU5MSUtFTFkoZWMpKQorICAgICAgICBWOFBy
b3h5OjpzZXRET01FeGNlcHRpb24oZWMpOwogfQogCiB2b2lkIFY4TG9jYXRpb246OnNlYXJjaEFj
Y2Vzc29yU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZh
bHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKICAgICBJTkNfU1RB
VFMoIkRPTS5Mb2NhdGlvbi5zZWFyY2guX3NldCIpOwotICAgIHY4OjpIYW5kbGU8djg6Ok9iamVj
dD4gaG9sZGVyID0gaW5mby5Ib2xkZXIoKTsKLSAgICBMb2NhdGlvbiogaW1wID0gVjhMb2NhdGlv
bjo6dG9OYXRpdmUoaG9sZGVyKTsKLSAgICBTdHJpbmcgcXVlcnkgPSB0b1dlYkNvcmVTdHJpbmco
dmFsdWUpOwotCi0gICAgRnJhbWUqIGZyYW1lID0gaW1wLT5mcmFtZSgpOwotICAgIGlmICghZnJh
bWUpCi0gICAgICAgIHJldHVybjsKKyAgICBMb2NhdGlvbiogaW1wbCA9IFY4TG9jYXRpb246OnRv
TmF0aXZlKGluZm8uSG9sZGVyKCkpOworICAgIFN0YXRlPFY4QmluZGluZz4qIHN0YXRlID0gVjhC
aW5kaW5nU3RhdGU6Ok9ubHkoKTsKIAotICAgIEtVUkwgdXJsID0gZnJhbWUtPmxvYWRlcigpLT51
cmwoKTsKLSAgICB1cmwuc2V0UXVlcnkocXVlcnkpOworICAgIC8vIEZJWE1FOiBIYW5kbGUgZXhj
ZXB0aW9ucyBjb3JyZWN0bHkuCisgICAgU3RyaW5nIHNlYXJjaCA9IHRvV2ViQ29yZVN0cmluZyh2
YWx1ZSk7CiAKLSAgICBuYXZpZ2F0ZUlmQWxsb3dlZChmcmFtZSwgdXJsLCBmYWxzZSwgZmFsc2Up
OworICAgIGltcGwtPnNldFNlYXJjaChzZWFyY2gsIHN0YXRlLT5hY3RpdmVXaW5kb3coKSwgc3Rh
dGUtPmZpcnN0V2luZG93KCkpOwogfQogCiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhMb2NhdGlv
bjo6cmVsb2FkQWNjZXNzb3JHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0
IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCkBAIC0yNzEsNDggKzIwNCwzNyBAQCB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gVjhMb2NhdGlvbjo6YXNzaWduCiAKIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBW
OExvY2F0aW9uOjpyZWxvYWRDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewot
ICAgIC8vIEZJWE1FOiB3ZSBpZ25vcmUgdGhlICJmb3JjZWdldCIgcGFyYW1ldGVyLgotCiAgICAg
SU5DX1NUQVRTKCJET00uTG9jYXRpb24ucmVsb2FkIik7Ci0gICAgdjg6OkhhbmRsZTx2ODo6T2Jq
ZWN0PiBob2xkZXIgPSBhcmdzLkhvbGRlcigpOwotICAgIExvY2F0aW9uKiBpbXAgPSBWOExvY2F0
aW9uOjp0b05hdGl2ZShob2xkZXIpOworICAgIExvY2F0aW9uKiBpbXBsID0gVjhMb2NhdGlvbjo6
dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CisgICAgU3RhdGU8VjhCaW5kaW5nPiogc3RhdGUgPSBW
OEJpbmRpbmdTdGF0ZTo6T25seSgpOwogCi0gICAgRnJhbWUqIGZyYW1lID0gaW1wLT5mcmFtZSgp
OwotICAgIGlmICghZnJhbWUgfHwgIVNjcmlwdENvbnRyb2xsZXI6OmlzU2FmZVNjcmlwdChmcmFt
ZSkpCi0gICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7Ci0KLSAgICBpZiAoIXByb3RvY29s
SXNKYXZhU2NyaXB0KGZyYW1lLT5sb2FkZXIoKS0+dXJsKCkpKQotICAgICAgICBmcmFtZS0+bmF2
aWdhdGlvblNjaGVkdWxlcigpLT5zY2hlZHVsZVJlZnJlc2goKTsKKyAgICBpbXBsLT5yZWxvYWQo
c3RhdGUtPmFjdGl2ZVdpbmRvdygpKTsKICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwogfQog
CiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhMb2NhdGlvbjo6cmVwbGFjZUNhbGxiYWNrKGNvbnN0
IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgSU5DX1NUQVRTKCJET00uTG9jYXRpb24ucmVw
bGFjZSIpOwotICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gaG9sZGVyID0gYXJncy5Ib2xkZXIo
KTsKLSAgICBMb2NhdGlvbiogaW1wID0gVjhMb2NhdGlvbjo6dG9OYXRpdmUoaG9sZGVyKTsKLSAg
ICBWOEJpbmRpbmc6OkxvY2F0aW9uOjpyZXBsYWNlKFY4QmluZGluZ1N0YXRlOjpPbmx5KCksIGlt
cCwgdG9XZWJDb3JlU3RyaW5nKGFyZ3NbMF0pKTsKKyAgICBMb2NhdGlvbiogaW1wbCA9IFY4TG9j
YXRpb246OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOworICAgIFN0YXRlPFY4QmluZGluZz4qIHN0
YXRlID0gVjhCaW5kaW5nU3RhdGU6Ok9ubHkoKTsKKworICAgIC8vIEZJWE1FOiBIYW5kbGUgZXhj
ZXB0aW9ucyBjb3JyZWN0bHkuCisgICAgU3RyaW5nIHVybFN0cmluZyA9IHRvV2ViQ29yZVN0cmlu
ZyhhcmdzWzBdKTsKKworICAgIGltcGwtPnJlcGxhY2UodXJsU3RyaW5nLCBzdGF0ZS0+YWN0aXZl
V2luZG93KCksIHN0YXRlLT5maXJzdFdpbmRvdygpKTsKICAgICByZXR1cm4gdjg6OlVuZGVmaW5l
ZCgpOwogfQogCiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhMb2NhdGlvbjo6YXNzaWduQ2FsbGJh
Y2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBJTkNfU1RBVFMoIkRPTS5Mb2Nh
dGlvbi5hc3NpZ24iKTsKLSAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGhvbGRlciA9IGFyZ3Mu
SG9sZGVyKCk7Ci0gICAgTG9jYXRpb24qIGltcCA9IFY4TG9jYXRpb246OnRvTmF0aXZlKGhvbGRl
cik7CisgICAgTG9jYXRpb24qIGltcGwgPSBWOExvY2F0aW9uOjp0b05hdGl2ZShpbmZvLkhvbGRl
cigpKTsKKyAgICBTdGF0ZTxWOEJpbmRpbmc+KiBzdGF0ZSA9IFY4QmluZGluZ1N0YXRlOjpPbmx5
KCk7CiAKLSAgICBGcmFtZSogZnJhbWUgPSBpbXAtPmZyYW1lKCk7Ci0gICAgaWYgKCFmcmFtZSkK
LSAgICAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKLQotICAgIEtVUkwgdXJsID0gY29tcGxl
dGVVUkwodG9XZWJDb3JlU3RyaW5nKGFyZ3NbMF0pKTsKLSAgICBpZiAodXJsLmlzTnVsbCgpKQot
ICAgICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwotCi0gICAgaWYgKCFzaG91bGRBbGxvd05h
dmlnYXRpb24oZnJhbWUpKQotICAgICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOworICAgIC8v
IEZJWE1FOiBIYW5kbGUgZXhjZXB0aW9ucyBjb3JyZWN0bHkuCisgICAgU3RyaW5nIHVybFN0cmlu
ZyA9IHRvV2ViQ29yZVN0cmluZyhhcmdzWzBdKTsKIAotICAgIG5hdmlnYXRlSWZBbGxvd2VkKGZy
YW1lLCB1cmwsIGZhbHNlLCBmYWxzZSk7CisgICAgaW1wbC0+YXNzaWduKHVybFN0cmluZywgc3Rh
dGUtPmFjdGl2ZVdpbmRvdygpLCBzdGF0ZS0+Zmlyc3RXaW5kb3coKSk7CiAgICAgcmV0dXJuIHY4
OjpVbmRlZmluZWQoKTsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>77707</attachid>
            <date>2010-12-31 00:59:43 -0800</date>
            <delta_ts>2010-12-31 11:56:44 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-51768-20101231005942.patch</filename>
            <type>text/plain</type>
            <size>17234</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3NDgyMSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzAgQEAKKzIwMTAtMTItMzEgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9y
Zz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNb3Zl
IFY4IHRvIFdlYkNvcmUgTG9jYXRpb24gaW1wbGVtZW50YXRpb24KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUxNzY4CisKKyAgICAgICAgKiBiaW5kaW5n
cy9nZW5lcmljL0JpbmRpbmdGcmFtZS5oOgorICAgICAgICAqIGJpbmRpbmdzL2dlbmVyaWMvQmlu
ZGluZ0xvY2F0aW9uLmg6CisgICAgICAgICogYmluZGluZ3MvdjgvVjhCaW5kaW5nLmg6CisgICAg
ICAgICogYmluZGluZ3MvdjgvVjhET01XaW5kb3dTaGVsbC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpWOERPTVdpbmRvd1NoZWxsOjpzZXRMb2NhdGlvbik6CisgICAgICAgICogYmluZGluZ3Mvdjgv
VjhVdGlsaXRpZXMuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4VXRpbGl0aWVzLmg6Cisg
ICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4TG9jYXRpb25DdXN0b20uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6VjhMb2NhdGlvbjo6aGFzaEFjY2Vzc29yU2V0dGVyKToKKyAgICAgICAgKFdl
YkNvcmU6OlY4TG9jYXRpb246Omhvc3RBY2Nlc3NvclNldHRlcik6CisgICAgICAgIChXZWJDb3Jl
OjpWOExvY2F0aW9uOjpob3N0bmFtZUFjY2Vzc29yU2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6
OlY4TG9jYXRpb246OmhyZWZBY2Nlc3NvclNldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpWOExv
Y2F0aW9uOjpwYXRobmFtZUFjY2Vzc29yU2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlY4TG9j
YXRpb246OnBvcnRBY2Nlc3NvclNldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpWOExvY2F0aW9u
Ojpwcm90b2NvbEFjY2Vzc29yU2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlY4TG9jYXRpb246
OnNlYXJjaEFjY2Vzc29yU2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlY4TG9jYXRpb246OnJl
bG9hZENhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlY4TG9jYXRpb246OnJlcGxhY2VDYWxs
YmFjayk6CisgICAgICAgIChXZWJDb3JlOjpWOExvY2F0aW9uOjphc3NpZ25DYWxsYmFjayk6CisK
IDIwMTAtMTItMjkgIFpoZW55YW8gTW8gIDx6bW9AZ29vZ2xlLmNvbT4KIAogICAgICAgICBSZXZp
ZXdlZCBieSBLZW5uZXRoIFJ1c3NlbGwuCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2dlbmVyaWMv
QmluZGluZ0ZyYW1lLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9nZW5lcmljL0Jp
bmRpbmdGcmFtZS5oCShyZXZpc2lvbiA3NDgyMSkKKysrIFdlYkNvcmUvYmluZGluZ3MvZ2VuZXJp
Yy9CaW5kaW5nRnJhbWUuaAkod29ya2luZyBjb3B5KQpAQCAtMzEsMjggKzMxLDYgQEAKICNpZm5k
ZWYgQmluZGluZ0ZyYW1lX2gKICNkZWZpbmUgQmluZGluZ0ZyYW1lX2gKIAotI2luY2x1ZGUgIkZy
YW1lLmgiCi0jaW5jbHVkZSAiR2VuZXJpY0JpbmRpbmcuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUg
ewotCi10ZW1wbGF0ZSA8Y2xhc3MgQmluZGluZz4KLWNsYXNzIEJpbmRpbmdGcmFtZSB7Ci1wdWJs
aWM6Ci0gICAgc3RhdGljIHZvaWQgbmF2aWdhdGVJZkFsbG93ZWQoU3RhdGU8QmluZGluZz4qLCBG
cmFtZSosIGNvbnN0IEtVUkwmLCBib29sIGxvY2tIaXN0b3J5LCBib29sIGxvY2tCYWNrRm9yd2Fy
ZExpc3QpOwotfTsKLQotdGVtcGxhdGUgPGNsYXNzIEJpbmRpbmc+Ci12b2lkIEJpbmRpbmdGcmFt
ZTxCaW5kaW5nPjo6bmF2aWdhdGVJZkFsbG93ZWQoU3RhdGU8QmluZGluZz4qIHN0YXRlLCBGcmFt
ZSogZnJhbWUsIGNvbnN0IEtVUkwmIHVybCwgYm9vbCBsb2NrSGlzdG9yeSwgYm9vbCBsb2NrQmFj
a0ZvcndhcmRMaXN0KQotewotICAgIEZyYW1lKiBhY3RpdmVGcmFtZSA9IHN0YXRlLT5hY3RpdmVG
cmFtZSgpOwotICAgIGlmICghYWN0aXZlRnJhbWUpCi0gICAgICAgIHJldHVybjsKLSAgICBpZiAo
IXByb3RvY29sSXNKYXZhU2NyaXB0KHVybCkgfHwgc3RhdGUtPmFsbG93c0FjY2Vzc0Zyb21GcmFt
ZShmcmFtZSkpCi0gICAgICAgIGZyYW1lLT5uYXZpZ2F0aW9uU2NoZWR1bGVyKCktPnNjaGVkdWxl
TG9jYXRpb25DaGFuZ2UoYWN0aXZlRnJhbWUtPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCks
Ci0gICAgICAgICAgICB1cmwuc3RyaW5nKCksIGFjdGl2ZUZyYW1lLT5sb2FkZXIoKS0+b3V0Z29p
bmdSZWZlcnJlcigpLCBsb2NrSGlzdG9yeSwgbG9ja0JhY2tGb3J3YXJkTGlzdCk7Ci19Ci0KLX0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKKy8vIEZJWE1FOiBSZW1vdmUgdGhpcyBmaWxlLgogCiAjZW5k
aWYgLy8gQmluZGluZ0ZyYW1lX2gKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvZ2VuZXJpYy9CaW5k
aW5nTG9jYXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2dlbmVyaWMvQmlu
ZGluZ0xvY2F0aW9uLmgJKHJldmlzaW9uIDc0ODIxKQorKysgV2ViQ29yZS9iaW5kaW5ncy9nZW5l
cmljL0JpbmRpbmdMb2NhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSwzNSArMzEsNiBAQAog
I2lmbmRlZiBCaW5kaW5nTG9jYXRpb25faAogI2RlZmluZSBCaW5kaW5nTG9jYXRpb25faAogCi0j
aW5jbHVkZSAiQmluZGluZ1NlY3VyaXR5LmgiCi0jaW5jbHVkZSAiR2VuZXJpY0JpbmRpbmcuaCIK
LSNpbmNsdWRlICJMb2NhdGlvbi5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXRlbXBsYXRl
IDxjbGFzcyBCaW5kaW5nPgotY2xhc3MgQmluZGluZ0xvY2F0aW9uIHsKLXB1YmxpYzoKLSAgICBz
dGF0aWMgdm9pZCByZXBsYWNlKFN0YXRlPEJpbmRpbmc+KiwgTG9jYXRpb24qLCBjb25zdCBTdHJp
bmcmIHVybCk7Ci19OwotCi10ZW1wbGF0ZSA8Y2xhc3MgQmluZGluZz4KLXZvaWQgQmluZGluZ0xv
Y2F0aW9uPEJpbmRpbmc+OjpyZXBsYWNlKFN0YXRlPEJpbmRpbmc+KiBzdGF0ZSwgTG9jYXRpb24q
IGxvY2F0aW9uLCBjb25zdCBTdHJpbmcmIHVybCkKLXsKLSAgICBGcmFtZSogZnJhbWUgPSBsb2Nh
dGlvbi0+ZnJhbWUoKTsKLSAgICBpZiAoIWZyYW1lKQotICAgICAgICByZXR1cm47Ci0KLSAgICBL
VVJMIGZ1bGxVUkwgPSBjb21wbGV0ZVVSTChzdGF0ZSwgdXJsKTsKLSAgICBpZiAoZnVsbFVSTC5p
c051bGwoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKCFCaW5kaW5nU2VjdXJpdHk8Qmlu
ZGluZz46OnNob3VsZEFsbG93TmF2aWdhdGlvbihzdGF0ZSwgZnJhbWUpKQotICAgICAgICByZXR1
cm47Ci0KLSAgICBCaW5kaW5nOjpGcmFtZTo6bmF2aWdhdGVJZkFsbG93ZWQoc3RhdGUsIGZyYW1l
LCBmdWxsVVJMLCB0cnVlLCB0cnVlKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorLy8g
RklYTUU6IFJlbW92ZSB0aGlzIGZpbGUuCiAKICNlbmRpZiAvLyBCaW5kaW5nTG9jYXRpb25faApJ
bmRleDogV2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRpbmcuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL2JpbmRpbmdzL3Y4L1Y4QmluZGluZy5oCShyZXZpc2lvbiA3NDgyMSkKKysrIFdlYkNvcmUv
YmluZGluZ3MvdjgvVjhCaW5kaW5nLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDggKzMxLDYgQEAK
ICNpZm5kZWYgVjhCaW5kaW5nX2gKICNkZWZpbmUgVjhCaW5kaW5nX2gKIAotI2luY2x1ZGUgIkJp
bmRpbmdGcmFtZS5oIgotI2luY2x1ZGUgIkJpbmRpbmdMb2NhdGlvbi5oIgogI2luY2x1ZGUgIkJp
bmRpbmdTZWN1cml0eS5oIgogI2luY2x1ZGUgIk1hdGhFeHRyYXMuaCIKICNpbmNsdWRlICJQbGF0
Zm9ybVN0cmluZy5oIgpAQCAtNDUsMTcgKzQzLDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAg
ICAgY2xhc3MgRXZlbnRMaXN0ZW5lcjsKICAgICBjbGFzcyBFdmVudFRhcmdldDsKLSAgICBjbGFz
cyBWOEJpbmRpbmdET01XaW5kb3c7CiAKLSAgICAvLyBJbnN0YW50aWF0ZSBiaW5kaW5nIHRlbXBs
YXRlIGNsYXNzZXMgZm9yIFY4LgorICAgIC8vIEZJWE1FOiBSZW1vdmUgVjhCaW5kaW5nLgogICAg
IGNsYXNzIFY4QmluZGluZyB7Ci0gICAgcHVibGljOgotICAgICAgICB0eXBlZGVmIHY4OjpIYW5k
bGU8djg6OlZhbHVlPiBWYWx1ZTsKLSAgICAgICAgdHlwZWRlZiBWOEJpbmRpbmdET01XaW5kb3cg
RE9NV2luZG93OwotICAgICAgICB0eXBlZGVmIEJpbmRpbmdGcmFtZTxWOEJpbmRpbmc+IEZyYW1l
OwotICAgICAgICB0eXBlZGVmIEJpbmRpbmdMb2NhdGlvbjxWOEJpbmRpbmc+IExvY2F0aW9uOwot
Ci0gICAgICAgIHN0YXRpYyBWYWx1ZSBlbXB0eVNjcmlwdFZhbHVlKCkgeyByZXR1cm4gdjg6Okxv
Y2FsPHY4OjpWYWx1ZT4oKTsgfQogICAgIH07CiAgICAgdHlwZWRlZiBCaW5kaW5nU2VjdXJpdHk8
VjhCaW5kaW5nPiBWOEJpbmRpbmdTZWN1cml0eTsKIApJbmRleDogV2ViQ29yZS9iaW5kaW5ncy92
OC9WOERPTVdpbmRvd1NoZWxsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4
L1Y4RE9NV2luZG93U2hlbGwuY3BwCShyZXZpc2lvbiA3NDgyMSkKKysrIFdlYkNvcmUvYmluZGlu
Z3MvdjgvVjhET01XaW5kb3dTaGVsbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU3OCwyMCArNTc4
LDEwIEBAIHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBWOERPTVdpbmRvd1NoZWxsOjoKICAgICByZXR1
cm4gbm90SGFuZGxlZEJ5SW50ZXJjZXB0b3IoKTsKIH0KIAotdm9pZCBWOERPTVdpbmRvd1NoZWxs
OjpzZXRMb2NhdGlvbihET01XaW5kb3cqIHdpbmRvdywgY29uc3QgU3RyaW5nJiByZWxhdGl2ZVVS
TCkKK3ZvaWQgVjhET01XaW5kb3dTaGVsbDo6c2V0TG9jYXRpb24oRE9NV2luZG93KiB3aW5kb3cs
IGNvbnN0IFN0cmluZyYgbG9jYXRpb25TdHJpbmcpCiB7Ci0gICAgRnJhbWUqIGZyYW1lID0gd2lu
ZG93LT5mcmFtZSgpOwotICAgIGlmICghZnJhbWUpCi0gICAgICAgIHJldHVybjsKLQotICAgIEtV
UkwgdXJsID0gY29tcGxldGVVUkwocmVsYXRpdmVVUkwpOwotICAgIGlmICh1cmwuaXNOdWxsKCkp
Ci0gICAgICAgIHJldHVybjsKLQotICAgIGlmICghc2hvdWxkQWxsb3dOYXZpZ2F0aW9uKGZyYW1l
KSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbmF2aWdhdGVJZkFsbG93ZWQoZnJhbWUsIHVybCwg
ZmFsc2UsIGZhbHNlKTsKKyAgICBTdGF0ZTxWOEJpbmRpbmc+KiBzdGF0ZSA9IFY4QmluZGluZ1N0
YXRlOjpPbmx5KCk7CisgICAgd2luZG93LT5zZXRMb2NhdGlvbihsb2NhdGlvblN0cmluZywgc3Rh
dGUtPmFjdGl2ZVdpbmRvdygpLCBzdGF0ZS0+Zmlyc3RXaW5kb3coKSk7CiB9CiAKIH0gLy8gV2Vi
Q29yZQpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy92OC9WOFV0aWxpdGllcy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9iaW5kaW5ncy92OC9WOFV0aWxpdGllcy5jcHAJKHJldmlzaW9uIDc0ODIx
KQorKysgV2ViQ29yZS9iaW5kaW5ncy92OC9WOFV0aWxpdGllcy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTExNCwxMSArMTE0LDYgQEAgS1VSTCBjb21wbGV0ZVVSTChjb25zdCBTdHJpbmcmIHJlbGF0
aXZlVQogICAgIHJldHVybiBjb21wbGV0ZVVSTChWOEJpbmRpbmdTdGF0ZTo6T25seSgpLCByZWxh
dGl2ZVVSTCk7CiB9CiAKLXZvaWQgbmF2aWdhdGVJZkFsbG93ZWQoRnJhbWUqIGZyYW1lLCBjb25z
dCBLVVJMJiB1cmwsIGJvb2wgbG9ja0hpc3RvcnksIGJvb2wgbG9ja0JhY2tGb3J3YXJkTGlzdCkK
LXsKLSAgICByZXR1cm4gVjhCaW5kaW5nOjpGcmFtZTo6bmF2aWdhdGVJZkFsbG93ZWQoVjhCaW5k
aW5nU3RhdGU6Ok9ubHkoKSwgZnJhbWUsIHVybCwgbG9ja0hpc3RvcnksIGxvY2tCYWNrRm9yd2Fy
ZExpc3QpOwotfQotCiBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBnZXRTY3JpcHRFeGVjdXRpb25D
b250ZXh0KCkKIHsKICNpZiBFTkFCTEUoV09SS0VSUykKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3Mv
djgvVjhVdGlsaXRpZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4VXRp
bGl0aWVzLmgJKHJldmlzaW9uIDc0ODIxKQorKysgV2ViQ29yZS9iaW5kaW5ncy92OC9WOFV0aWxp
dGllcy5oCSh3b3JraW5nIGNvcHkpCkBAIC01Miw3ICs1Miw2IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICAgICBib29sIHByb2Nlc3NpbmdVc2VyR2VzdHVyZSgpOwogICAgIGJvb2wgc2hvdWxkQWxs
b3dOYXZpZ2F0aW9uKEZyYW1lKik7CiAgICAgS1VSTCBjb21wbGV0ZVVSTChjb25zdCBTdHJpbmcm
IHJlbGF0aXZlVVJMKTsKLSAgICB2b2lkIG5hdmlnYXRlSWZBbGxvd2VkKEZyYW1lKiwgY29uc3Qg
S1VSTCYsIGJvb2wgbG9ja0hpc3RvcnksIGJvb2wgbG9ja0JhY2tGb3J3YXJkTGlzdCk7CiAKICAg
ICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBnZXRTY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CiAK
SW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4TG9jYXRpb25DdXN0b20uY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4TG9jYXRpb25DdXN0b20u
Y3BwCShyZXZpc2lvbiA3NDgyMSkKKysrIFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4TG9j
YXRpb25DdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OCwxNzAgKzQ4LDEwMyBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLS8vIE5vdGVzIGFib3V0IFY4L0pTQyBwb3J0aW5nIG9mIHRo
aXMgZmlsZS4KLS8vIFRoaXMgY2xhc3MgaXMgbm90IHZlcnkgSlMtZW5naW5lIHNwZWNpZmljLiAg
SWYgd2UgY2FuIG1vdmUgYSBjb3VwbGUgb2YKLS8vIG1ldGhvZHMgdG8gdGhlIHNjcmlwdENvbnRy
b2xsZXIsIHdlIHNob3VsZCBiZSBhYmxlIHRvIHVuaWZ5IHRoZSBjb2RlCi0vLyBiZXR3ZWVuIEpT
QyBhbmQgVjg6Ci0vLyAgICB0b0NhbGxpbmdGcmFtZSgpICAgLSBpbiBKU0MsIHRoaXMgbmVlZHMg
YW4gRXhlY1N0YXRlLgotLy8gICAgaXNTYWZlU2NyaXB0KCkKLS8vIFNpbmNlIEpTQyBhbmQgVjgg
aGF2ZSBkaWZmZXJlbnQgbWVjaGFuaXNtcyBmb3IgZ2V0dGluZyBhdCB0aGUgY2FsbGluZyBmcmFt
ZSwKLS8vIHdlJ3JlIGp1c3QgbWFraW5nIGFsbCB0aGVzZSBjdXN0b20gZm9yIG5vdy4gIFRoZSBm
dW5jdGlvbmFsaXR5IGlzIHNpbXBsZQotLy8gYW5kIG1pcnJvcnMgSlNMb2NhdGlvbkN1c3RvbS5j
cHAuCi0KIHZvaWQgVjhMb2NhdGlvbjo6aGFzaEFjY2Vzc29yU2V0dGVyKHY4OjpMb2NhbDx2ODo6
U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vz
c29ySW5mbyYgaW5mbykKIHsKICAgICBJTkNfU1RBVFMoIkRPTS5Mb2NhdGlvbi5oYXNoLl9zZXQi
KTsKLSAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGhvbGRlciA9IGluZm8uSG9sZGVyKCk7Ci0g
ICAgTG9jYXRpb24qIGltcCA9IFY4TG9jYXRpb246OnRvTmF0aXZlKGhvbGRlcik7Ci0gICAgU3Ry
aW5nIGhhc2ggPSB0b1dlYkNvcmVTdHJpbmcodmFsdWUpOworICAgIExvY2F0aW9uKiBpbXBsID0g
VjhMb2NhdGlvbjo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CisgICAgU3RhdGU8VjhCaW5kaW5n
Piogc3RhdGUgPSBWOEJpbmRpbmdTdGF0ZTo6T25seSgpOwogCi0gICAgRnJhbWUqIGZyYW1lID0g
aW1wLT5mcmFtZSgpOwotICAgIGlmICghZnJhbWUpCi0gICAgICAgIHJldHVybjsKLQotICAgIEtV
UkwgdXJsID0gZnJhbWUtPmxvYWRlcigpLT51cmwoKTsKLSAgICBTdHJpbmcgb2xkUmVmID0gdXJs
LmZyYWdtZW50SWRlbnRpZmllcigpOwotCi0gICAgaWYgKGhhc2guc3RhcnRzV2l0aCgiIyIpKQot
ICAgICAgICBoYXNoID0gaGFzaC5zdWJzdHJpbmcoMSk7Ci0KLSAgICAvLyBOb3RlIHRoYXQgYnkg
cGFyc2luZyB0aGUgVVJMIGFuZCAqdGhlbiogY29tcGFyaW5nIGZyYWdtZW50cywgd2UgYXJlCi0g
ICAgLy8gY29tcGFyaW5nIGZyYWdtZW50cyBwb3N0LWNhbm9uaWNhbGl6YXRpb24sIGFuZCBzbyB0
aGlzIGhhbmRsZXMgdGhlCi0gICAgLy8gY2FzZXMgd2hlcmUgZnJhZ21lbnQgaWRlbnRpZmllcnMg
YXJlIGlnbm9yZWQgb3IgaW52YWxpZC4KLSAgICB1cmwuc2V0RnJhZ21lbnRJZGVudGlmaWVyKGhh
c2gpOwotICAgIFN0cmluZyBuZXdSZWYgPSB1cmwuZnJhZ21lbnRJZGVudGlmaWVyKCk7Ci0gICAg
aWYgKG9sZFJlZiA9PSBuZXdSZWYgfHwgKG9sZFJlZi5pc051bGwoKSAmJiBuZXdSZWYuaXNFbXB0
eSgpKSkKLSAgICAgICAgcmV0dXJuOworICAgIC8vIEZJWE1FOiBIYW5kbGUgZXhjZXB0aW9ucyBj
b3JyZWN0bHkuCisgICAgU3RyaW5nIGhhc2ggPSB0b1dlYkNvcmVTdHJpbmcodmFsdWUpOwogCi0g
ICAgbmF2aWdhdGVJZkFsbG93ZWQoZnJhbWUsIHVybCwgZmFsc2UsIGZhbHNlKTsKKyAgICBpbXBs
LT5zZXRIYXNoKGhhc2gsIHN0YXRlLT5hY3RpdmVXaW5kb3coKSwgc3RhdGUtPmZpcnN0V2luZG93
KCkpOwogfQogCiB2b2lkIFY4TG9jYXRpb246Omhvc3RBY2Nlc3NvclNldHRlcih2ODo6TG9jYWw8
djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpB
Y2Nlc3NvckluZm8mIGluZm8pCiB7CiAgICAgSU5DX1NUQVRTKCJET00uTG9jYXRpb24uaG9zdC5f
c2V0Iik7Ci0gICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBob2xkZXIgPSBpbmZvLkhvbGRlcigp
OwotICAgIExvY2F0aW9uKiBpbXAgPSBWOExvY2F0aW9uOjp0b05hdGl2ZShob2xkZXIpOwotICAg
IFN0cmluZyBob3N0ID0gdG9XZWJDb3JlU3RyaW5nKHZhbHVlKTsKKyAgICBMb2NhdGlvbiogaW1w
bCA9IFY4TG9jYXRpb246OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOworICAgIFN0YXRlPFY4Qmlu
ZGluZz4qIHN0YXRlID0gVjhCaW5kaW5nU3RhdGU6Ok9ubHkoKTsKIAotICAgIEZyYW1lKiBmcmFt
ZSA9IGltcC0+ZnJhbWUoKTsKLSAgICBpZiAoIWZyYW1lKQotICAgICAgICByZXR1cm47Ci0KLSAg
ICBLVVJMIHVybCA9IGZyYW1lLT5sb2FkZXIoKS0+dXJsKCk7Ci0gICAgU3RyaW5nIG5ld0hvc3Qg
PSBob3N0LmxlZnQoaG9zdC5maW5kKCI6IikpOwotICAgIFN0cmluZyBuZXdQb3J0ID0gaG9zdC5z
dWJzdHJpbmcoaG9zdC5maW5kKCI6IikgKyAxKTsKLSAgICB1cmwuc2V0SG9zdChuZXdIb3N0KTsK
LSAgICB1cmwuc2V0UG9ydChuZXdQb3J0LnRvVUludCgpKTsKKyAgICAvLyBGSVhNRTogSGFuZGxl
IGV4Y2VwdGlvbnMgY29ycmVjdGx5LgorICAgIFN0cmluZyBob3N0ID0gdG9XZWJDb3JlU3RyaW5n
KHZhbHVlKTsKIAotICAgIG5hdmlnYXRlSWZBbGxvd2VkKGZyYW1lLCB1cmwsIGZhbHNlLCBmYWxz
ZSk7CisgICAgaW1wbC0+c2V0SG9zdChob3N0LCBzdGF0ZS0+YWN0aXZlV2luZG93KCksIHN0YXRl
LT5maXJzdFdpbmRvdygpKTsKIH0KIAogdm9pZCBWOExvY2F0aW9uOjpob3N0bmFtZUFjY2Vzc29y
U2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2
YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKICAgICBJTkNfU1RBVFMoIkRP
TS5Mb2NhdGlvbi5ob3N0bmFtZS5fc2V0Iik7Ci0gICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBo
b2xkZXIgPSBpbmZvLkhvbGRlcigpOwotICAgIExvY2F0aW9uKiBpbXAgPSBWOExvY2F0aW9uOjp0
b05hdGl2ZShob2xkZXIpOwotICAgIFN0cmluZyBob3N0bmFtZSA9IHRvV2ViQ29yZVN0cmluZyh2
YWx1ZSk7CisgICAgTG9jYXRpb24qIGltcGwgPSBWOExvY2F0aW9uOjp0b05hdGl2ZShpbmZvLkhv
bGRlcigpKTsKKyAgICBTdGF0ZTxWOEJpbmRpbmc+KiBzdGF0ZSA9IFY4QmluZGluZ1N0YXRlOjpP
bmx5KCk7CiAKLSAgICBGcmFtZSogZnJhbWUgPSBpbXAtPmZyYW1lKCk7Ci0gICAgaWYgKCFmcmFt
ZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgS1VSTCB1cmwgPSBmcmFtZS0+bG9hZGVyKCktPnVy
bCgpOwotICAgIHVybC5zZXRIb3N0KGhvc3RuYW1lKTsKKyAgICAvLyBGSVhNRTogSGFuZGxlIGV4
Y2VwdGlvbnMgY29ycmVjdGx5LgorICAgIFN0cmluZyBob3N0bmFtZSA9IHRvV2ViQ29yZVN0cmlu
Zyh2YWx1ZSk7CiAKLSAgICBuYXZpZ2F0ZUlmQWxsb3dlZChmcmFtZSwgdXJsLCBmYWxzZSwgZmFs
c2UpOworICAgIGltcGwtPnNldEhvc3RuYW1lKGhvc3RuYW1lLCBzdGF0ZS0+YWN0aXZlV2luZG93
KCksIHN0YXRlLT5maXJzdFdpbmRvdygpKTsKIH0KIAogdm9pZCBWOExvY2F0aW9uOjpocmVmQWNj
ZXNzb3JTZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFs
dWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewogICAgIElOQ19TVEFU
UygiRE9NLkxvY2F0aW9uLmhyZWYuX3NldCIpOwotICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4g
aG9sZGVyID0gaW5mby5Ib2xkZXIoKTsKLSAgICBMb2NhdGlvbiogaW1wID0gVjhMb2NhdGlvbjo6
dG9OYXRpdmUoaG9sZGVyKTsKLQotICAgIEZyYW1lKiBmcmFtZSA9IGltcC0+ZnJhbWUoKTsKLSAg
ICBpZiAoIWZyYW1lKQotICAgICAgICByZXR1cm47Ci0KLSAgICBLVVJMIHVybCA9IGNvbXBsZXRl
VVJMKHRvV2ViQ29yZVN0cmluZyh2YWx1ZSkpOwotICAgIGlmICh1cmwuaXNOdWxsKCkpCi0gICAg
ICAgIHJldHVybjsKKyAgICBMb2NhdGlvbiogaW1wbCA9IFY4TG9jYXRpb246OnRvTmF0aXZlKGlu
Zm8uSG9sZGVyKCkpOworICAgIFN0YXRlPFY4QmluZGluZz4qIHN0YXRlID0gVjhCaW5kaW5nU3Rh
dGU6Ok9ubHkoKTsKIAotICAgIGlmICghc2hvdWxkQWxsb3dOYXZpZ2F0aW9uKGZyYW1lKSkKLSAg
ICAgICAgcmV0dXJuOworICAgIC8vIEZJWE1FOiBIYW5kbGUgZXhjZXB0aW9ucyBjb3JyZWN0bHku
CisgICAgU3RyaW5nIGhyZWYgPSB0b1dlYkNvcmVTdHJpbmcodmFsdWUpOwogCi0gICAgbmF2aWdh
dGVJZkFsbG93ZWQoZnJhbWUsIHVybCwgZmFsc2UsIGZhbHNlKTsKKyAgICBpbXBsLT5zZXRIcmVm
KGhyZWYsIHN0YXRlLT5hY3RpdmVXaW5kb3coKSwgc3RhdGUtPmZpcnN0V2luZG93KCkpOwogfQog
CiB2b2lkIFY4TG9jYXRpb246OnBhdGhuYW1lQWNjZXNzb3JTZXR0ZXIodjg6OkxvY2FsPHY4OjpT
dHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNz
b3JJbmZvJiBpbmZvKQogewogICAgIElOQ19TVEFUUygiRE9NLkxvY2F0aW9uLnBhdGhuYW1lLl9z
ZXQiKTsKLSAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGhvbGRlciA9IGluZm8uSG9sZGVyKCk7
Ci0gICAgTG9jYXRpb24qIGltcCA9IFY4TG9jYXRpb246OnRvTmF0aXZlKGhvbGRlcik7Ci0gICAg
U3RyaW5nIHBhdGhuYW1lID0gdG9XZWJDb3JlU3RyaW5nKHZhbHVlKTsKLQotICAgIEZyYW1lKiBm
cmFtZSA9IGltcC0+ZnJhbWUoKTsKLSAgICBpZiAoIWZyYW1lKQotICAgICAgICByZXR1cm47Cisg
ICAgTG9jYXRpb24qIGltcGwgPSBWOExvY2F0aW9uOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsK
KyAgICBTdGF0ZTxWOEJpbmRpbmc+KiBzdGF0ZSA9IFY4QmluZGluZ1N0YXRlOjpPbmx5KCk7CiAK
LSAgICBLVVJMIHVybCA9IGZyYW1lLT5sb2FkZXIoKS0+dXJsKCk7Ci0gICAgdXJsLnNldFBhdGgo
cGF0aG5hbWUpOworICAgIC8vIEZJWE1FOiBIYW5kbGUgZXhjZXB0aW9ucyBjb3JyZWN0bHkuCisg
ICAgU3RyaW5nIHBhdGhuYW1lID0gdG9XZWJDb3JlU3RyaW5nKHZhbHVlKTsKIAotICAgIG5hdmln
YXRlSWZBbGxvd2VkKGZyYW1lLCB1cmwsIGZhbHNlLCBmYWxzZSk7CisgICAgaW1wbC0+c2V0UGF0
aG5hbWUocGF0aG5hbWUsIHN0YXRlLT5hY3RpdmVXaW5kb3coKSwgc3RhdGUtPmZpcnN0V2luZG93
KCkpOwogfQogCiB2b2lkIFY4TG9jYXRpb246OnBvcnRBY2Nlc3NvclNldHRlcih2ODo6TG9jYWw8
djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpB
Y2Nlc3NvckluZm8mIGluZm8pCiB7CiAgICAgSU5DX1NUQVRTKCJET00uTG9jYXRpb24ucG9ydC5f
c2V0Iik7Ci0gICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBob2xkZXIgPSBpbmZvLkhvbGRlcigp
OwotICAgIExvY2F0aW9uKiBpbXAgPSBWOExvY2F0aW9uOjp0b05hdGl2ZShob2xkZXIpOwotICAg
IFN0cmluZyBwb3J0ID0gdG9XZWJDb3JlU3RyaW5nKHZhbHVlKTsKLQotICAgIEZyYW1lKiBmcmFt
ZSA9IGltcC0+ZnJhbWUoKTsKLSAgICBpZiAoIWZyYW1lKQotICAgICAgICByZXR1cm47CisgICAg
TG9jYXRpb24qIGltcGwgPSBWOExvY2F0aW9uOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKKyAg
ICBTdGF0ZTxWOEJpbmRpbmc+KiBzdGF0ZSA9IFY4QmluZGluZ1N0YXRlOjpPbmx5KCk7CiAKLSAg
ICBLVVJMIHVybCA9IGZyYW1lLT5sb2FkZXIoKS0+dXJsKCk7Ci0gICAgdXJsLnNldFBvcnQocG9y
dC50b1VJbnQoKSk7CisgICAgLy8gRklYTUU6IEhhbmRsZSBleGNlcHRpb25zIGNvcnJlY3RseS4K
KyAgICBTdHJpbmcgcG9ydCA9IHRvV2ViQ29yZVN0cmluZyh2YWx1ZSk7CiAKLSAgICBuYXZpZ2F0
ZUlmQWxsb3dlZChmcmFtZSwgdXJsLCBmYWxzZSwgZmFsc2UpOworICAgIGltcGwtPnNldFBvcnQo
cG9ydCwgc3RhdGUtPmFjdGl2ZVdpbmRvdygpLCBzdGF0ZS0+Zmlyc3RXaW5kb3coKSk7CiB9CiAK
IHZvaWQgVjhMb2NhdGlvbjo6cHJvdG9jb2xBY2Nlc3NvclNldHRlcih2ODo6TG9jYWw8djg6OlN0
cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3Nv
ckluZm8mIGluZm8pCiB7CiAgICAgSU5DX1NUQVRTKCJET00uTG9jYXRpb24ucHJvdG9jb2wuX3Nl
dCIpOwotICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gaG9sZGVyID0gaW5mby5Ib2xkZXIoKTsK
LSAgICBMb2NhdGlvbiogaW1wID0gVjhMb2NhdGlvbjo6dG9OYXRpdmUoaG9sZGVyKTsKLSAgICBT
dHJpbmcgcHJvdG9jb2wgPSB0b1dlYkNvcmVTdHJpbmcodmFsdWUpOworICAgIExvY2F0aW9uKiBp
bXBsID0gVjhMb2NhdGlvbjo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CisgICAgU3RhdGU8VjhC
aW5kaW5nPiogc3RhdGUgPSBWOEJpbmRpbmdTdGF0ZTo6T25seSgpOwogCi0gICAgRnJhbWUqIGZy
YW1lID0gaW1wLT5mcmFtZSgpOwotICAgIGlmICghZnJhbWUpCi0gICAgICAgIHJldHVybjsKLQot
ICAgIEtVUkwgdXJsID0gZnJhbWUtPmxvYWRlcigpLT51cmwoKTsKLSAgICBpZiAoIXVybC5zZXRQ
cm90b2NvbChwcm90b2NvbCkpIHsKLSAgICAgICAgdGhyb3dFcnJvcigiQ2FuJ3Qgc2V0IHByb3Rv
Y29sIiwgVjhQcm94eTo6U3ludGF4RXJyb3IpOwotICAgICAgICByZXR1cm47Ci0gICAgfQorICAg
IC8vIEZJWE1FOiBIYW5kbGUgZXhjZXB0aW9ucyBjb3JyZWN0bHkuCisgICAgU3RyaW5nIHByb3Rv
Y29sID0gdG9XZWJDb3JlU3RyaW5nKHZhbHVlKTsKIAotICAgIG5hdmlnYXRlSWZBbGxvd2VkKGZy
YW1lLCB1cmwsIGZhbHNlLCBmYWxzZSk7CisgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAg
aW1wbC0+c2V0UHJvdG9jb2wocHJvdG9jb2wsIHN0YXRlLT5hY3RpdmVXaW5kb3coKSwgc3RhdGUt
PmZpcnN0V2luZG93KCksIGVjKTsKKyAgICBpZiAoVU5MSUtFTFkoZWMpKQorICAgICAgICBWOFBy
b3h5OjpzZXRET01FeGNlcHRpb24oZWMpOwogfQogCiB2b2lkIFY4TG9jYXRpb246OnNlYXJjaEFj
Y2Vzc29yU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZh
bHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKICAgICBJTkNfU1RB
VFMoIkRPTS5Mb2NhdGlvbi5zZWFyY2guX3NldCIpOwotICAgIHY4OjpIYW5kbGU8djg6Ok9iamVj
dD4gaG9sZGVyID0gaW5mby5Ib2xkZXIoKTsKLSAgICBMb2NhdGlvbiogaW1wID0gVjhMb2NhdGlv
bjo6dG9OYXRpdmUoaG9sZGVyKTsKLSAgICBTdHJpbmcgcXVlcnkgPSB0b1dlYkNvcmVTdHJpbmco
dmFsdWUpOwotCi0gICAgRnJhbWUqIGZyYW1lID0gaW1wLT5mcmFtZSgpOwotICAgIGlmICghZnJh
bWUpCi0gICAgICAgIHJldHVybjsKKyAgICBMb2NhdGlvbiogaW1wbCA9IFY4TG9jYXRpb246OnRv
TmF0aXZlKGluZm8uSG9sZGVyKCkpOworICAgIFN0YXRlPFY4QmluZGluZz4qIHN0YXRlID0gVjhC
aW5kaW5nU3RhdGU6Ok9ubHkoKTsKIAotICAgIEtVUkwgdXJsID0gZnJhbWUtPmxvYWRlcigpLT51
cmwoKTsKLSAgICB1cmwuc2V0UXVlcnkocXVlcnkpOworICAgIC8vIEZJWE1FOiBIYW5kbGUgZXhj
ZXB0aW9ucyBjb3JyZWN0bHkuCisgICAgU3RyaW5nIHNlYXJjaCA9IHRvV2ViQ29yZVN0cmluZyh2
YWx1ZSk7CiAKLSAgICBuYXZpZ2F0ZUlmQWxsb3dlZChmcmFtZSwgdXJsLCBmYWxzZSwgZmFsc2Up
OworICAgIGltcGwtPnNldFNlYXJjaChzZWFyY2gsIHN0YXRlLT5hY3RpdmVXaW5kb3coKSwgc3Rh
dGUtPmZpcnN0V2luZG93KCkpOwogfQogCiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhMb2NhdGlv
bjo6cmVsb2FkQWNjZXNzb3JHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0
IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCkBAIC0yNzEsNDggKzIwNCwzNyBAQCB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gVjhMb2NhdGlvbjo6YXNzaWduCiAKIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBW
OExvY2F0aW9uOjpyZWxvYWRDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewot
ICAgIC8vIEZJWE1FOiB3ZSBpZ25vcmUgdGhlICJmb3JjZWdldCIgcGFyYW1ldGVyLgotCiAgICAg
SU5DX1NUQVRTKCJET00uTG9jYXRpb24ucmVsb2FkIik7Ci0gICAgdjg6OkhhbmRsZTx2ODo6T2Jq
ZWN0PiBob2xkZXIgPSBhcmdzLkhvbGRlcigpOwotICAgIExvY2F0aW9uKiBpbXAgPSBWOExvY2F0
aW9uOjp0b05hdGl2ZShob2xkZXIpOworICAgIExvY2F0aW9uKiBpbXBsID0gVjhMb2NhdGlvbjo6
dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7CisgICAgU3RhdGU8VjhCaW5kaW5nPiogc3RhdGUgPSBW
OEJpbmRpbmdTdGF0ZTo6T25seSgpOwogCi0gICAgRnJhbWUqIGZyYW1lID0gaW1wLT5mcmFtZSgp
OwotICAgIGlmICghZnJhbWUgfHwgIVNjcmlwdENvbnRyb2xsZXI6OmlzU2FmZVNjcmlwdChmcmFt
ZSkpCi0gICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7Ci0KLSAgICBpZiAoIXByb3RvY29s
SXNKYXZhU2NyaXB0KGZyYW1lLT5sb2FkZXIoKS0+dXJsKCkpKQotICAgICAgICBmcmFtZS0+bmF2
aWdhdGlvblNjaGVkdWxlcigpLT5zY2hlZHVsZVJlZnJlc2goKTsKKyAgICBpbXBsLT5yZWxvYWQo
c3RhdGUtPmFjdGl2ZVdpbmRvdygpKTsKICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwogfQog
CiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhMb2NhdGlvbjo6cmVwbGFjZUNhbGxiYWNrKGNvbnN0
IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgSU5DX1NUQVRTKCJET00uTG9jYXRpb24ucmVw
bGFjZSIpOwotICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gaG9sZGVyID0gYXJncy5Ib2xkZXIo
KTsKLSAgICBMb2NhdGlvbiogaW1wID0gVjhMb2NhdGlvbjo6dG9OYXRpdmUoaG9sZGVyKTsKLSAg
ICBWOEJpbmRpbmc6OkxvY2F0aW9uOjpyZXBsYWNlKFY4QmluZGluZ1N0YXRlOjpPbmx5KCksIGlt
cCwgdG9XZWJDb3JlU3RyaW5nKGFyZ3NbMF0pKTsKKyAgICBMb2NhdGlvbiogaW1wbCA9IFY4TG9j
YXRpb246OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOworICAgIFN0YXRlPFY4QmluZGluZz4qIHN0
YXRlID0gVjhCaW5kaW5nU3RhdGU6Ok9ubHkoKTsKKworICAgIC8vIEZJWE1FOiBIYW5kbGUgZXhj
ZXB0aW9ucyBjb3JyZWN0bHkuCisgICAgU3RyaW5nIHVybFN0cmluZyA9IHRvV2ViQ29yZVN0cmlu
ZyhhcmdzWzBdKTsKKworICAgIGltcGwtPnJlcGxhY2UodXJsU3RyaW5nLCBzdGF0ZS0+YWN0aXZl
V2luZG93KCksIHN0YXRlLT5maXJzdFdpbmRvdygpKTsKICAgICByZXR1cm4gdjg6OlVuZGVmaW5l
ZCgpOwogfQogCiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhMb2NhdGlvbjo6YXNzaWduQ2FsbGJh
Y2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBJTkNfU1RBVFMoIkRPTS5Mb2Nh
dGlvbi5hc3NpZ24iKTsKLSAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGhvbGRlciA9IGFyZ3Mu
SG9sZGVyKCk7Ci0gICAgTG9jYXRpb24qIGltcCA9IFY4TG9jYXRpb246OnRvTmF0aXZlKGhvbGRl
cik7CisgICAgTG9jYXRpb24qIGltcGwgPSBWOExvY2F0aW9uOjp0b05hdGl2ZShhcmdzLkhvbGRl
cigpKTsKKyAgICBTdGF0ZTxWOEJpbmRpbmc+KiBzdGF0ZSA9IFY4QmluZGluZ1N0YXRlOjpPbmx5
KCk7CiAKLSAgICBGcmFtZSogZnJhbWUgPSBpbXAtPmZyYW1lKCk7Ci0gICAgaWYgKCFmcmFtZSkK
LSAgICAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKLQotICAgIEtVUkwgdXJsID0gY29tcGxl
dGVVUkwodG9XZWJDb3JlU3RyaW5nKGFyZ3NbMF0pKTsKLSAgICBpZiAodXJsLmlzTnVsbCgpKQot
ICAgICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwotCi0gICAgaWYgKCFzaG91bGRBbGxvd05h
dmlnYXRpb24oZnJhbWUpKQotICAgICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOworICAgIC8v
IEZJWE1FOiBIYW5kbGUgZXhjZXB0aW9ucyBjb3JyZWN0bHkuCisgICAgU3RyaW5nIHVybFN0cmlu
ZyA9IHRvV2ViQ29yZVN0cmluZyhhcmdzWzBdKTsKIAotICAgIG5hdmlnYXRlSWZBbGxvd2VkKGZy
YW1lLCB1cmwsIGZhbHNlLCBmYWxzZSk7CisgICAgaW1wbC0+YXNzaWduKHVybFN0cmluZywgc3Rh
dGUtPmFjdGl2ZVdpbmRvdygpLCBzdGF0ZS0+Zmlyc3RXaW5kb3coKSk7CiAgICAgcmV0dXJuIHY4
OjpVbmRlZmluZWQoKTsKIH0KIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>