<?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>37114</bug_id>
          
          <creation_ts>2010-04-05 14:21:52 -0700</creation_ts>
          <short_desc>REGRESSION(r57030): Regressed fast/repaint/line-flow-with-floats-9 pixel tests in chromium port (Requested by jamesr on #webkit).</short_desc>
          <delta_ts>2010-04-05 16:25:18 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>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>
          
          <blocked>36921</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="WebKit Review Bot">webkit.review.bot</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>eric</cc>
    
    <cc>jamesr</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>208699</commentid>
    <comment_count>0</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-04-05 14:21:52 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/57030 broke the build:
Regressed fast/repaint/line-flow-with-floats-9 pixel tests in chromium port (Requested by jamesr on #webkit).

This is an automatic bug report generated by the sheriff-bot. If this bug
report was created because of a flaky test, please file a bug for the flaky
test (if we don&apos;t already have one on file) and dup this bug against that bug
so that we can track how often these flaky tests case pain.

&quot;Only you can prevent forest fires.&quot; -- Smokey the Bear</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>208700</commentid>
    <comment_count>1</comment_count>
      <attachid>52571</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-04-05 14:22:06 -0700</bug_when>
    <thetext>Created attachment 52571
ROLLOUT of r57030</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>208719</commentid>
    <comment_count>2</comment_count>
      <attachid>52571</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-04-05 14:52:18 -0700</bug_when>
    <thetext>Comment on attachment 52571
ROLLOUT of r57030

Clearing flags on attachment: 52571

Committed r57096: &lt;http://trac.webkit.org/changeset/57096&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>208720</commentid>
    <comment_count>3</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-04-05 14:52:24 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>208776</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-04-05 16:19:21 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/57096 might have broken Tiger Intel Release</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>208779</commentid>
    <comment_count>5</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-04-05 16:25:18 -0700</bug_when>
    <thetext>That&apos;s fast/dom/HTMLObjectElement/object-as-frame.html that we current think is related to r57081.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>52571</attachid>
            <date>2010-04-05 14:22:06 -0700</date>
            <delta_ts>2010-04-05 14:52:18 -0700</delta_ts>
            <desc>ROLLOUT of r57030</desc>
            <filename>bug-37114-20100405212204.patch</filename>
            <type>text/plain</type>
            <size>36801</size>
            <attacher name="WebKit Review Bot">webkit.review.bot</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
NzE0NjQ0ZS4uZTU1YjE4MSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxMC0wNC0wNSAgU2hlcmlmZiBCb3Qg
IDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20+CisKKyAgICAgICAgVW5yZXZpZXdlZCwgcm9s
bGluZyBvdXQgcjU3MDMwLgorICAgICAgICBodHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNl
dC81NzAzMAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MzcxMTQKKworICAgICAgICBSZWdyZXNzZWQgZmFzdC9yZXBhaW50L2xpbmUtZmxvdy13aXRoLWZs
b2F0cy05IHBpeGVsIHRlc3RzIGluCisgICAgICAgIGNocm9taXVtIHBvcnQgKFJlcXVlc3RlZCBi
eSBqYW1lc3Igb24gI3dlYmtpdCkuCisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQmxvY2su
aDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQmxvY2tMaW5lTGF5b3V0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpsYXlvdXRJbmxpbmVDaGlsZHJlbik6CisKIDIwMTAt
MDQtMDUgIENocmlzIEZsZWl6YWNoICA8Y2ZsZWl6YWNoQGFwcGxlLmNvbT4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckJsb2NrLmggYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5oCmluZGV4IGMxNjlk
OTAuLjE4NGY5ODMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmgK
KysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaApAQCAtNDgzLDExICs0ODMsNiBA
QCBwcml2YXRlOgogICAgIHZvaWQgc2V0Q29sbGFwc2VkQm90dG9tTWFyZ2luKGNvbnN0IE1hcmdp
bkluZm8mKTsKICAgICAvLyBFbmQgaGVscGVyIGZ1bmN0aW9ucyBhbmQgc3RydWN0cyB1c2VkIGJ5
IGxheW91dEJsb2NrQ2hpbGRyZW4uCiAKLSAgICAvLyBIZWxwZXIgZnVuY3Rpb25zIGZvciBsYXlv
dXRJbmxpbmVDaGlsZHJlbigpCi0gICAgYm9vbCBsYXlvdXRSZXBsYWNlZEVsZW1lbnRzKGJvb2wg
cmVsYXlvdXRDaGlsZHJlbiwgYm9vbCBmdWxsTGF5b3V0LCBWZWN0b3I8RmxvYXRXaXRoUmVjdD4m
KTsKLSAgICBSb290SW5saW5lQm94KiBjcmVhdGVMaW5lQm94ZXNGb3JSZXNvbHZlcihjb25zdCBJ
bmxpbmVCaWRpUmVzb2x2ZXImLCBjb25zdCBJbmxpbmVJdGVyYXRvciYgcG9zaXRpb24sIGJvb2wg
Zmlyc3RMaW5lLCBib29sIHByZXZpb3VzTGluZUJyb2tlQ2xlYW5seSwgQmlkaVJ1biogdHJhaWxp
bmdTcGFjZVJ1bik7Ci0gICAgdm9pZCBsYXlvdXRSdW5zQW5kRmxvYXRzKGJvb2wgZnVsbExheW91
dCwgVmVjdG9yPEZsb2F0V2l0aFJlY3Q+JiwgaW50JiByZXBhaW50VG9wLCBpbnQmIHJlcGFpbnRC
b3R0b20pOwotCiAgICAgdHlwZWRlZiBMaXN0SGFzaFNldDxSZW5kZXJCb3gqPjo6Y29uc3RfaXRl
cmF0b3IgSXRlcmF0b3I7CiAgICAgRGVwcmVjYXRlZFB0ckxpc3Q8RmxvYXRpbmdPYmplY3Q+KiBt
X2Zsb2F0aW5nT2JqZWN0czsKICAgICBMaXN0SGFzaFNldDxSZW5kZXJCb3gqPiogbV9wb3NpdGlv
bmVkT2JqZWN0czsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrTGlu
ZUxheW91dC5jcHAgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0xpbmVMYXlvdXQuY3Bw
CmluZGV4IDZiYWRhNzYuLjZlODkwNjAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckJsb2NrTGluZUxheW91dC5jcHAKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxv
Y2tMaW5lTGF5b3V0LmNwcApAQCAtNTE0LDM2OSArNTE0LDM0NiBAQCBzdGF0aWMgaW5saW5lIGJv
b2wgaXNDb2xsYXBzaWJsZVNwYWNlKFVDaGFyIGNoYXJhY3RlciwgUmVuZGVyVGV4dCogcmVuZGVy
ZXIpCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi0vLyBUaGlzIGlzIGEgaGVscGVyIGZvciBSZW5k
ZXJCbG9jazo6bGF5b3V0SW5saW5lQ2hpbGRyZW4uICBJdCBpdGVyYXRlcyB0aHJvdWdoIGEgUmVu
ZGVyQmxvY2sncyBpbmxpbmUgY2hpbGRyZW4KLS8vIGluIGJpZGkgb3JkZXIgYW5kOgotLy8gIC0g
Y2FsbHMgbGF5b3V0SWZOZWVkZWQoKSBvbiBhbGwgcmVwbGFjZWQgY2hpbGRyZW4KLS8vICAtIGFz
c2VtYmxlcyBhIGxpc3Qgb2YgZmxvYXRzIAotLy8gIC0gYWRkcyBhbGwgcG9zaXRpb25lZCBjaGls
ZHJlbiB0byB0aGVpciBjb250YWluaW5nIGJsb2NrJ3MgcG9zaXRpb25lZCBvYmplY3Qgc2V0Ci0v
LyAgLSBkaXJ0aWVzIGxpbmUgYm94ZXMgb24gaW5saW5lIGNoaWxkcmVuIGlmIGZ1bGxMYXlvdXQg
aXMgc2V0Ci1ib29sIFJlbmRlckJsb2NrOjpsYXlvdXRSZXBsYWNlZEVsZW1lbnRzKGJvb2wgcmVs
YXlvdXRDaGlsZHJlbiwgYm9vbCBmdWxsTGF5b3V0LCBWZWN0b3I8RmxvYXRXaXRoUmVjdD4mIGZs
b2F0cykKK3ZvaWQgUmVuZGVyQmxvY2s6OmxheW91dElubGluZUNoaWxkcmVuKGJvb2wgcmVsYXlv
dXRDaGlsZHJlbiwgaW50JiByZXBhaW50VG9wLCBpbnQmIHJlcGFpbnRCb3R0b20pCiB7Ci0gICAg
Ym9vbCBlbmRPZklubGluZSA9IGZhbHNlOwotICAgIGJvb2wgaGFzSW5saW5lQ2hpbGQgPSBmYWxz
ZTsKLSAgICAvLyBGSVhNRTogVXNlIGEgbW9yZSBkZXNjcmlwdGl2ZSB2YXJpYWJsZSBuYW1lIGFu
ZCB1c2UgYSBmb3IgbG9vcCBpbnN0ZWFkIG9mIHdoaWxlIGhlcmUuCi0gICAgUmVuZGVyT2JqZWN0
KiBvID0gYmlkaUZpcnN0KHRoaXMsIDAsIGZhbHNlKTsKLSAgICB3aGlsZSAobykgewotICAgICAg
ICBpZiAoby0+aXNSZXBsYWNlZCgpIHx8IG8tPmlzRmxvYXRpbmcoKSB8fCBvLT5pc1Bvc2l0aW9u
ZWQoKSkgewotICAgICAgICAgICAgUmVuZGVyQm94KiBib3ggPSB0b1JlbmRlckJveChvKTsKLSAg
ICAgICAgICAgIAotICAgICAgICAgICAgaWYgKHJlbGF5b3V0Q2hpbGRyZW4gfHwgby0+c3R5bGUo
KS0+d2lkdGgoKS5pc1BlcmNlbnQoKSB8fCBvLT5zdHlsZSgpLT5oZWlnaHQoKS5pc1BlcmNlbnQo
KSkKLSAgICAgICAgICAgICAgICBvLT5zZXRDaGlsZE5lZWRzTGF5b3V0KHRydWUsIGZhbHNlKTsK
LSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgIC8vIElmIHJlbGF5b3V0Q2hpbGRyZW4gaXMg
c2V0IGFuZCB3ZSBoYXZlIHBlcmNlbnRhZ2UgcGFkZGluZywgd2UgYWxzbyBuZWVkIHRvIGludmFs
aWRhdGUgdGhlIGNoaWxkJ3MgcHJlZiB3aWR0aHMuCi0gICAgICAgICAgICBpZiAocmVsYXlvdXRD
aGlsZHJlbiAmJiAoby0+c3R5bGUoKS0+cGFkZGluZ0xlZnQoKS5pc1BlcmNlbnQoKSB8fCBvLT5z
dHlsZSgpLT5wYWRkaW5nUmlnaHQoKS5pc1BlcmNlbnQoKSkpCi0gICAgICAgICAgICAgICAgby0+
c2V0UHJlZldpZHRoc0RpcnR5KHRydWUsIGZhbHNlKTsKKyAgICBib29sIHVzZVJlcGFpbnRCb3Vu
ZHMgPSBmYWxzZTsKKyAgICAKKyAgICBtX292ZXJmbG93LmNsZWFyKCk7CiAgICAgICAgIAotICAg
ICAgICAgICAgaWYgKG8tPmlzUG9zaXRpb25lZCgpKQotICAgICAgICAgICAgICAgIG8tPmNvbnRh
aW5pbmdCbG9jaygpLT5pbnNlcnRQb3NpdGlvbmVkT2JqZWN0KGJveCk7Ci0gICAgICAgICAgICBl
bHNlIHsKLSAgICAgICAgICAgICAgICBpZiAoby0+aXNGbG9hdGluZygpKQotICAgICAgICAgICAg
ICAgICAgICBmbG9hdHMuYXBwZW5kKFJlbmRlckJsb2NrOjpGbG9hdFdpdGhSZWN0KGJveCkpOwot
ICAgICAgICAgICAgICAgIGVsc2UgaWYgKGZ1bGxMYXlvdXQgfHwgby0+bmVlZHNMYXlvdXQoKSkg
Ly8gUmVwbGFjZWQgZWxlbWVudHMKLSAgICAgICAgICAgICAgICAgICAgdG9SZW5kZXJCb3gobykt
PmRpcnR5TGluZUJveGVzKGZ1bGxMYXlvdXQpOwotCi0gICAgICAgICAgICAgICAgby0+bGF5b3V0
SWZOZWVkZWQoKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNlIGlmIChvLT5pc1RleHQo
KSB8fCAoby0+aXNSZW5kZXJJbmxpbmUoKSAmJiAhZW5kT2ZJbmxpbmUpKSB7Ci0gICAgICAgICAg
ICBoYXNJbmxpbmVDaGlsZCA9IHRydWU7Ci0gICAgICAgICAgICBpZiAoZnVsbExheW91dCB8fCBv
LT5zZWxmTmVlZHNMYXlvdXQoKSkKLSAgICAgICAgICAgICAgICBkaXJ0eUxpbmVCb3hlc0ZvclJl
bmRlcmVyKG8sIGZ1bGxMYXlvdXQpOwotICAgICAgICAgICAgby0+c2V0TmVlZHNMYXlvdXQoZmFs
c2UpOwotICAgICAgICAgICAgaWYgKCFvLT5pc1RleHQoKSkKLSAgICAgICAgICAgICAgICB0b1Jl
bmRlcklubGluZShvKS0+aW52YWxpZGF0ZVZlcnRpY2FsUG9zaXRpb24oKTsgLy8gRklYTUU6IFNo
b3VsZCBkbyBiZXR0ZXIgaGVyZSBhbmQgbm90IGFsd2F5cyBpbnZhbGlkYXRlIGV2ZXJ5dGhpbmcu
Ci0gICAgICAgIH0KLSAgICAgICAgbyA9IGJpZGlOZXh0KHRoaXMsIG8sIDAsIGZhbHNlLCAmZW5k
T2ZJbmxpbmUpOwotICAgIH0KLSAgICByZXR1cm4gaGFzSW5saW5lQ2hpbGQ7Ci19CisgICAgc2V0
SGVpZ2h0KGJvcmRlclRvcCgpICsgcGFkZGluZ1RvcCgpKTsKKyAgICBpbnQgdG9BZGQgPSBib3Jk
ZXJCb3R0b20oKSArIHBhZGRpbmdCb3R0b20oKSArIGhvcml6b250YWxTY3JvbGxiYXJIZWlnaHQo
KTsKIAotLy8gVGhpcyBmdW5jdGlvbiBjb25zdHJ1Y3RzIGxpbmUgYm94ZXMgZm9yIGFsbCBvZiB0
aGUgdGV4dCBydW5zIGluIHRoZSByZXNvbHZlciBhbmQgY29tcHV0ZXMgdGhlaXIgcG9zaXRpb24u
Ci1Sb290SW5saW5lQm94KiBSZW5kZXJCbG9jazo6Y3JlYXRlTGluZUJveGVzRm9yUmVzb2x2ZXIo
Y29uc3QgSW5saW5lQmlkaVJlc29sdmVyJiByZXNvbHZlciwgY29uc3QgSW5saW5lSXRlcmF0b3Im
IHBvc2l0aW9uLCBib29sIGZpcnN0TGluZSwgYm9vbCBwcmV2aW91c0xpbmVCcm9rZUNsZWFubHks
IEJpZGlSdW4qIHRyYWlsaW5nU3BhY2VSdW4pCi17Ci0gICAgUm9vdElubGluZUJveCogbGluZUJv
eCA9IDA7Ci0gICAgaWYgKHJlc29sdmVyLnJ1bkNvdW50KCkpIHsKLSAgICAgICAgbGluZUJveCA9
IGNvbnN0cnVjdExpbmUocmVzb2x2ZXIucnVuQ291bnQoKSwgcmVzb2x2ZXIuZmlyc3RSdW4oKSwg
cmVzb2x2ZXIubGFzdFJ1bigpLCBmaXJzdExpbmUsICFwb3NpdGlvbi5vYmosIHBvc2l0aW9uLm9i
aiAmJiAhcG9zaXRpb24ucG9zID8gcG9zaXRpb24ub2JqIDogMCk7Ci0gICAgICAgIGlmIChsaW5l
Qm94KSB7Ci0gICAgICAgICAgICBsaW5lQm94LT5zZXRFbmRzV2l0aEJyZWFrKHByZXZpb3VzTGlu
ZUJyb2tlQ2xlYW5seSk7CisgICAgLy8gRmlndXJlIG91dCBpZiB3ZSBzaG91bGQgY2xlYXIgb3V0
IG91ciBsaW5lIGJveGVzLgorICAgIC8vIEZJWE1FOiBIYW5kbGUgcmVzaXplIGV2ZW50dWFsbHkh
CisgICAgYm9vbCBmdWxsTGF5b3V0ID0gIWZpcnN0TGluZUJveCgpIHx8IHNlbGZOZWVkc0xheW91
dCgpIHx8IHJlbGF5b3V0Q2hpbGRyZW47CisgICAgaWYgKGZ1bGxMYXlvdXQpCisgICAgICAgIGxp
bmVCb3hlcygpLT5kZWxldGVMaW5lQm94ZXMocmVuZGVyQXJlbmEoKSk7CiAKLSAgICAgICAgICAg
IC8vIE5vdyB3ZSBwb3NpdGlvbiBhbGwgb2Ygb3VyIHRleHQgcnVucyBob3Jpem9udGFsbHkuCi0g
ICAgICAgICAgICBjb21wdXRlSG9yaXpvbnRhbFBvc2l0aW9uc0ZvckxpbmUobGluZUJveCwgZmly
c3RMaW5lLCByZXNvbHZlci5maXJzdFJ1bigpLCB0cmFpbGluZ1NwYWNlUnVuLCBwb3NpdGlvbi5h
dEVuZCgpKTsKKyAgICAvLyBUZXh0IHRydW5jYXRpb24gb25seSBraWNrcyBpbiBpZiB5b3VyIG92
ZXJmbG93IGlzbid0IHZpc2libGUgYW5kIHlvdXIgdGV4dC1vdmVyZmxvdy1tb2RlIGlzbid0Cisg
ICAgLy8gY2xpcC4KKyAgICAvLyBGSVhNRTogQ1NTMyBzYXlzIHRoYXQgZGVzY2VuZGFudHMgdGhh
dCBhcmUgY2xpcHBlZCBtdXN0IGFsc28ga25vdyBob3cgdG8gdHJ1bmNhdGUuICBUaGlzIGlzIGlu
c2FuZWx5CisgICAgLy8gZGlmZmljdWx0IHRvIGZpZ3VyZSBvdXQgKGVzcGVjaWFsbHkgaW4gdGhl
IG1pZGRsZSBvZiBkb2luZyBsYXlvdXQpLCBhbmQgaXMgcmVhbGx5IGFuIGVzb3RlcmljIHBpbGUg
b2Ygbm9uc2Vuc2UKKyAgICAvLyBhbnl3YXksIHNvIHdlIHdvbid0IHdvcnJ5IGFib3V0IGZvbGxv
d2luZyB0aGUgZHJhZnQgaGVyZS4KKyAgICBib29sIGhhc1RleHRPdmVyZmxvdyA9IHN0eWxlKCkt
PnRleHRPdmVyZmxvdygpICYmIGhhc092ZXJmbG93Q2xpcCgpOwogCi0gICAgICAgICAgICAvLyBO
b3cgcG9zaXRpb24gb3VyIHRleHQgcnVucyB2ZXJ0aWNhbGx5LgotICAgICAgICAgICAgY29tcHV0
ZVZlcnRpY2FsUG9zaXRpb25zRm9yTGluZShsaW5lQm94LCByZXNvbHZlci5maXJzdFJ1bigpKTsK
KyAgICAvLyBXYWxrIGFsbCB0aGUgbGluZXMgYW5kIGRlbGV0ZSBvdXIgZWxsaXBzaXMgbGluZSBi
b3hlcyBpZiB0aGV5IGV4aXN0LgorICAgIGlmIChoYXNUZXh0T3ZlcmZsb3cpCisgICAgICAgICBk
ZWxldGVFbGxpcHNpc0xpbmVCb3hlcygpOwogCi0jaWYgRU5BQkxFKFNWRykKLSAgICAgICAgICAg
IC8vIFNwZWNpYWwgU1ZHIHRleHQgbGF5b3V0IGNvZGUKLSAgICAgICAgICAgIGxpbmVCb3gtPmNv
bXB1dGVQZXJDaGFyYWN0ZXJMYXlvdXRJbmZvcm1hdGlvbigpOwotI2VuZGlmCisgICAgaWYgKGZp
cnN0Q2hpbGQoKSkgeworICAgICAgICAvLyBsYXlvdXQgcmVwbGFjZWQgZWxlbWVudHMKKyAgICAg
ICAgYm9vbCBlbmRPZklubGluZSA9IGZhbHNlOworICAgICAgICBSZW5kZXJPYmplY3QqIG8gPSBi
aWRpRmlyc3QodGhpcywgMCwgZmFsc2UpOworICAgICAgICBWZWN0b3I8RmxvYXRXaXRoUmVjdD4g
ZmxvYXRzOworICAgICAgICBib29sIGhhc0lubGluZUNoaWxkID0gZmFsc2U7CisgICAgICAgIHdo
aWxlIChvKSB7CisgICAgICAgICAgICBpZiAoby0+aXNSZXBsYWNlZCgpIHx8IG8tPmlzRmxvYXRp
bmcoKSB8fCBvLT5pc1Bvc2l0aW9uZWQoKSkgeworICAgICAgICAgICAgICAgIFJlbmRlckJveCog
Ym94ID0gdG9SZW5kZXJCb3gobyk7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAg
aWYgKHJlbGF5b3V0Q2hpbGRyZW4gfHwgby0+c3R5bGUoKS0+d2lkdGgoKS5pc1BlcmNlbnQoKSB8
fCBvLT5zdHlsZSgpLT5oZWlnaHQoKS5pc1BlcmNlbnQoKSkKKyAgICAgICAgICAgICAgICAgICAg
by0+c2V0Q2hpbGROZWVkc0xheW91dCh0cnVlLCBmYWxzZSk7CisgICAgICAgICAgICAgICAgICAg
IAorICAgICAgICAgICAgICAgIC8vIElmIHJlbGF5b3V0Q2hpbGRyZW4gaXMgc2V0IGFuZCB3ZSBo
YXZlIHBlcmNlbnRhZ2UgcGFkZGluZywgd2UgYWxzbyBuZWVkIHRvIGludmFsaWRhdGUgdGhlIGNo
aWxkJ3MgcHJlZiB3aWR0aHMuCisgICAgICAgICAgICAgICAgaWYgKHJlbGF5b3V0Q2hpbGRyZW4g
JiYgKG8tPnN0eWxlKCktPnBhZGRpbmdMZWZ0KCkuaXNQZXJjZW50KCkgfHwgby0+c3R5bGUoKS0+
cGFkZGluZ1JpZ2h0KCkuaXNQZXJjZW50KCkpKQorICAgICAgICAgICAgICAgICAgICBvLT5zZXRQ
cmVmV2lkdGhzRGlydHkodHJ1ZSwgZmFsc2UpOworICAgICAgICAgICAgCisgICAgICAgICAgICAg
ICAgaWYgKG8tPmlzUG9zaXRpb25lZCgpKQorICAgICAgICAgICAgICAgICAgICBvLT5jb250YWlu
aW5nQmxvY2soKS0+aW5zZXJ0UG9zaXRpb25lZE9iamVjdChib3gpOworICAgICAgICAgICAgICAg
IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBpZiAoby0+aXNGbG9hdGluZygpKQorICAgICAg
ICAgICAgICAgICAgICAgICAgZmxvYXRzLmFwcGVuZChGbG9hdFdpdGhSZWN0KGJveCkpOworICAg
ICAgICAgICAgICAgICAgICBlbHNlIGlmIChmdWxsTGF5b3V0IHx8IG8tPm5lZWRzTGF5b3V0KCkp
IC8vIFJlcGxhY2VkIGVsZW1lbnRzCisgICAgICAgICAgICAgICAgICAgICAgICB0b1JlbmRlckJv
eChvKS0+ZGlydHlMaW5lQm94ZXMoZnVsbExheW91dCk7CiAKLSNpZiBQTEFURk9STShNQUMpCi0g
ICAgICAgICAgICAvLyBIaWdobGlnaHQgYWN0cyBhcyBhbiBvdmVyZmxvdyBpbmZsYXRpb24uCi0g
ICAgICAgICAgICBpZiAoc3R5bGUoKS0+aGlnaGxpZ2h0KCkgIT0gbnVsbEF0b20pCi0gICAgICAg
ICAgICAgICAgbGluZUJveC0+YWRkSGlnaGxpZ2h0T3ZlcmZsb3coKTsKLSNlbmRpZgorICAgICAg
ICAgICAgICAgICAgICBvLT5sYXlvdXRJZk5lZWRlZCgpOworICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIH0gZWxzZSBpZiAoby0+aXNUZXh0KCkgfHwgKG8tPmlzUmVuZGVySW5saW5lKCkg
JiYgIWVuZE9mSW5saW5lKSkgeworICAgICAgICAgICAgICAgIGhhc0lubGluZUNoaWxkID0gdHJ1
ZTsKKyAgICAgICAgICAgICAgICBpZiAoZnVsbExheW91dCB8fCBvLT5zZWxmTmVlZHNMYXlvdXQo
KSkKKyAgICAgICAgICAgICAgICAgICAgZGlydHlMaW5lQm94ZXNGb3JSZW5kZXJlcihvLCBmdWxs
TGF5b3V0KTsKKyAgICAgICAgICAgICAgICBvLT5zZXROZWVkc0xheW91dChmYWxzZSk7CisgICAg
ICAgICAgICAgICAgaWYgKCFvLT5pc1RleHQoKSkKKyAgICAgICAgICAgICAgICAgICAgdG9SZW5k
ZXJJbmxpbmUobyktPmludmFsaWRhdGVWZXJ0aWNhbFBvc2l0aW9uKCk7IC8vIEZJWE1FOiBTaG91
bGQgZG8gYmV0dGVyIGhlcmUgYW5kIG5vdCBhbHdheXMgaW52YWxpZGF0ZSBldmVyeXRoaW5nLgor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgbyA9IGJpZGlOZXh0KHRoaXMsIG8sIDAsIGZhbHNl
LCAmZW5kT2ZJbmxpbmUpOwogICAgICAgICB9Ci0gICAgfQogCi0gICAgcmV0dXJuIGxpbmVCb3g7
Ci19CisgICAgICAgIC8vIFdlIHdhbnQgdG8gc2tpcCBhaGVhZCB0byB0aGUgZmlyc3QgZGlydHkg
bGluZQorICAgICAgICBJbmxpbmVCaWRpUmVzb2x2ZXIgcmVzb2x2ZXI7CisgICAgICAgIHVuc2ln
bmVkIGZsb2F0SW5kZXg7CisgICAgICAgIGJvb2wgZmlyc3RMaW5lID0gdHJ1ZTsKKyAgICAgICAg
Ym9vbCBwcmV2aW91c0xpbmVCcm9rZUNsZWFubHkgPSB0cnVlOworICAgICAgICBSb290SW5saW5l
Qm94KiBzdGFydExpbmUgPSBkZXRlcm1pbmVTdGFydFBvc2l0aW9uKGZpcnN0TGluZSwgZnVsbExh
eW91dCwgcHJldmlvdXNMaW5lQnJva2VDbGVhbmx5LCByZXNvbHZlciwgZmxvYXRzLCBmbG9hdElu
ZGV4KTsKIAotdm9pZCBSZW5kZXJCbG9jazo6bGF5b3V0UnVuc0FuZEZsb2F0cyhib29sIGZ1bGxM
YXlvdXQsIFZlY3RvcjxGbG9hdFdpdGhSZWN0PiYgZmxvYXRzLCBpbnQmIHJlcGFpbnRUb3AsIGlu
dCYgcmVwYWludEJvdHRvbSkKLXsKLSAgICAvLyBXZSB3YW50IHRvIHNraXAgYWhlYWQgdG8gdGhl
IGZpcnN0IGRpcnR5IGxpbmUKLSAgICBJbmxpbmVCaWRpUmVzb2x2ZXIgcmVzb2x2ZXI7Ci0gICAg
dW5zaWduZWQgZmxvYXRJbmRleDsKLSAgICBib29sIGZpcnN0TGluZSA9IHRydWU7Ci0gICAgYm9v
bCBwcmV2aW91c0xpbmVCcm9rZUNsZWFubHkgPSB0cnVlOwotICAgIGJvb2wgdXNlUmVwYWludEJv
dW5kcyA9IGZhbHNlOwotICAgIAotICAgIFJvb3RJbmxpbmVCb3gqIHN0YXJ0TGluZSA9IGRldGVy
bWluZVN0YXJ0UG9zaXRpb24oZmlyc3RMaW5lLCBmdWxsTGF5b3V0LCBwcmV2aW91c0xpbmVCcm9r
ZUNsZWFubHksIHJlc29sdmVyLCBmbG9hdHMsIGZsb2F0SW5kZXgpOworICAgICAgICBpZiAoZnVs
bExheW91dCAmJiBoYXNJbmxpbmVDaGlsZCAmJiAhc2VsZk5lZWRzTGF5b3V0KCkpIHsKKyAgICAg
ICAgICAgIHNldE5lZWRzTGF5b3V0KHRydWUsIGZhbHNlKTsgIC8vIE1hcmsgb3Vyc2VsdmVzIGFz
IG5lZWRpbmcgYSBmdWxsIGxheW91dC4gVGhpcyB3YXkgd2UnbGwgcmVwYWludCBsaWtlCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3ZSdyZSBzdXBwb3NlZCB0
by4KKyAgICAgICAgICAgIFJlbmRlclZpZXcqIHYgPSB2aWV3KCk7CisgICAgICAgICAgICBpZiAo
diAmJiAhdi0+ZG9pbmdGdWxsUmVwYWludCgpICYmIGhhc0xheWVyKCkpIHsKKyAgICAgICAgICAg
ICAgICAvLyBCZWNhdXNlIHdlIHdhaXRlZCB1bnRpbCB3ZSB3ZXJlIGFscmVhZHkgaW5zaWRlIGxh
eW91dCB0byBkaXNjb3ZlcgorICAgICAgICAgICAgICAgIC8vIHRoYXQgdGhlIGJsb2NrIHJlYWxs
eSBuZWVkZWQgYSBmdWxsIGxheW91dCwgd2UgbWlzc2VkIG91ciBjaGFuY2UgdG8gcmVwYWludCB0
aGUgbGF5ZXIKKyAgICAgICAgICAgICAgICAvLyBiZWZvcmUgbGF5b3V0IHN0YXJ0ZWQuICBMdWNr
aWx5IHRoZSBsYXllciBoYXMgY2FjaGVkIHRoZSByZXBhaW50IHJlY3QgZm9yIGl0cyBvcmlnaW5h
bAorICAgICAgICAgICAgICAgIC8vIHBvc2l0aW9uIGFuZCBzaXplLCBhbmQgc28gd2UgY2FuIHVz
ZSB0aGF0IHRvIG1ha2UgYSByZXBhaW50IGhhcHBlbiBub3cuCisgICAgICAgICAgICAgICAgcmVw
YWludFVzaW5nQ29udGFpbmVyKGNvbnRhaW5lckZvclJlcGFpbnQoKSwgbGF5ZXIoKS0+cmVwYWlu
dFJlY3QoKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KIAotICAgIEZsb2F0aW5nT2JqZWN0
KiBsYXN0RmxvYXQgPSBtX2Zsb2F0aW5nT2JqZWN0cyA/IG1fZmxvYXRpbmdPYmplY3RzLT5sYXN0
KCkgOiAwOworICAgICAgICBGbG9hdGluZ09iamVjdCogbGFzdEZsb2F0ID0gbV9mbG9hdGluZ09i
amVjdHMgPyBtX2Zsb2F0aW5nT2JqZWN0cy0+bGFzdCgpIDogMDsKIAotICAgIExpbmVNaWRwb2lu
dFN0YXRlJiBsaW5lTWlkcG9pbnRTdGF0ZSA9IHJlc29sdmVyLm1pZHBvaW50U3RhdGUoKTsKKyAg
ICAgICAgTGluZU1pZHBvaW50U3RhdGUmIGxpbmVNaWRwb2ludFN0YXRlID0gcmVzb2x2ZXIubWlk
cG9pbnRTdGF0ZSgpOworCisgICAgICAgIC8vIFdlIGFsc28gZmluZCB0aGUgZmlyc3QgY2xlYW4g
bGluZSBhbmQgZXh0cmFjdCB0aGVzZSBsaW5lcy4gIFdlIHdpbGwgYWRkIHRoZW0gYmFjaworICAg
ICAgICAvLyBpZiB3ZSBkZXRlcm1pbmUgdGhhdCB3ZSdyZSBhYmxlIHRvIHN5bmNocm9uaXplIGFm
dGVyIGhhbmRsaW5nIGFsbCBvdXIgZGlydHkgbGluZXMuCisgICAgICAgIElubGluZUl0ZXJhdG9y
IGNsZWFuTGluZVN0YXJ0OworICAgICAgICBCaWRpU3RhdHVzIGNsZWFuTGluZUJpZGlTdGF0dXM7
CisgICAgICAgIGludCBlbmRMaW5lWVBvcyA9IDA7CisgICAgICAgIFJvb3RJbmxpbmVCb3gqIGVu
ZExpbmUgPSAoZnVsbExheW91dCB8fCAhc3RhcnRMaW5lKSA/IAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgMCA6IGRldGVybWluZUVuZFBvc2l0aW9uKHN0YXJ0TGluZSwgY2xlYW5M
aW5lU3RhcnQsIGNsZWFuTGluZUJpZGlTdGF0dXMsIGVuZExpbmVZUG9zKTsKIAotICAgIC8vIFdl
IGFsc28gZmluZCB0aGUgZmlyc3QgY2xlYW4gbGluZSBhbmQgZXh0cmFjdCB0aGVzZSBsaW5lcy4g
IFdlIHdpbGwgYWRkIHRoZW0gYmFjawotICAgIC8vIGlmIHdlIGRldGVybWluZSB0aGF0IHdlJ3Jl
IGFibGUgdG8gc3luY2hyb25pemUgYWZ0ZXIgaGFuZGxpbmcgYWxsIG91ciBkaXJ0eSBsaW5lcy4K
LSAgICBJbmxpbmVJdGVyYXRvciBjbGVhbkxpbmVTdGFydDsKLSAgICBCaWRpU3RhdHVzIGNsZWFu
TGluZUJpZGlTdGF0dXM7Ci0gICAgaW50IGVuZExpbmVZUG9zID0gMDsKLSAgICBSb290SW5saW5l
Qm94KiBlbmRMaW5lID0gKGZ1bGxMYXlvdXQgfHwgIXN0YXJ0TGluZSkgPyAKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMCA6IGRldGVybWluZUVuZFBvc2l0aW9uKHN0YXJ0TGluZSwgY2xl
YW5MaW5lU3RhcnQsIGNsZWFuTGluZUJpZGlTdGF0dXMsIGVuZExpbmVZUG9zKTsKLQotICAgIGlm
IChzdGFydExpbmUpIHsKLSAgICAgICAgdXNlUmVwYWludEJvdW5kcyA9IHRydWU7Ci0gICAgICAg
IHJlcGFpbnRUb3AgPSBoZWlnaHQoKTsKLSAgICAgICAgcmVwYWludEJvdHRvbSA9IGhlaWdodCgp
OwotICAgICAgICBSZW5kZXJBcmVuYSogYXJlbmEgPSByZW5kZXJBcmVuYSgpOwotICAgICAgICBS
b290SW5saW5lQm94KiBib3ggPSBzdGFydExpbmU7Ci0gICAgICAgIHdoaWxlIChib3gpIHsKLSAg
ICAgICAgICAgIHJlcGFpbnRUb3AgPSBtaW4ocmVwYWludFRvcCwgYm94LT50b3BWaXNpYmxlT3Zl
cmZsb3coKSk7Ci0gICAgICAgICAgICByZXBhaW50Qm90dG9tID0gbWF4KHJlcGFpbnRCb3R0b20s
IGJveC0+Ym90dG9tVmlzaWJsZU92ZXJmbG93KCkpOwotICAgICAgICAgICAgUm9vdElubGluZUJv
eCogbmV4dCA9IGJveC0+bmV4dFJvb3RCb3goKTsKLSAgICAgICAgICAgIGJveC0+ZGVsZXRlTGlu
ZShhcmVuYSk7Ci0gICAgICAgICAgICBib3ggPSBuZXh0OworICAgICAgICBpZiAoc3RhcnRMaW5l
KSB7CisgICAgICAgICAgICB1c2VSZXBhaW50Qm91bmRzID0gdHJ1ZTsKKyAgICAgICAgICAgIHJl
cGFpbnRUb3AgPSBoZWlnaHQoKTsKKyAgICAgICAgICAgIHJlcGFpbnRCb3R0b20gPSBoZWlnaHQo
KTsKKyAgICAgICAgICAgIFJlbmRlckFyZW5hKiBhcmVuYSA9IHJlbmRlckFyZW5hKCk7CisgICAg
ICAgICAgICBSb290SW5saW5lQm94KiBib3ggPSBzdGFydExpbmU7CisgICAgICAgICAgICB3aGls
ZSAoYm94KSB7CisgICAgICAgICAgICAgICAgcmVwYWludFRvcCA9IG1pbihyZXBhaW50VG9wLCBi
b3gtPnRvcFZpc2libGVPdmVyZmxvdygpKTsKKyAgICAgICAgICAgICAgICByZXBhaW50Qm90dG9t
ID0gbWF4KHJlcGFpbnRCb3R0b20sIGJveC0+Ym90dG9tVmlzaWJsZU92ZXJmbG93KCkpOworICAg
ICAgICAgICAgICAgIFJvb3RJbmxpbmVCb3gqIG5leHQgPSBib3gtPm5leHRSb290Qm94KCk7Cisg
ICAgICAgICAgICAgICAgYm94LT5kZWxldGVMaW5lKGFyZW5hKTsKKyAgICAgICAgICAgICAgICBi
b3ggPSBuZXh0OworICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgfQogCi0gICAgSW5saW5l
SXRlcmF0b3IgY3VycmVudFBvc2l0aW9uID0gcmVzb2x2ZXIucG9zaXRpb24oKTsKLQotICAgIGlm
ICghZnVsbExheW91dCAmJiBsYXN0Um9vdEJveCgpICYmIGxhc3RSb290Qm94KCktPmVuZHNXaXRo
QnJlYWsoKSkgewotICAgICAgICAvLyBJZiB0aGUgbGFzdCBsaW5lIGJlZm9yZSB0aGUgc3RhcnQg
bGluZSBlbmRzIHdpdGggYSBsaW5lIGJyZWFrIHRoYXQgY2xlYXIgZmxvYXRzLAotICAgICAgICAv
LyBhZGp1c3QgdGhlIGhlaWdodCBhY2NvcmRpbmdseS4KLSAgICAgICAgLy8gQSBsaW5lIGJyZWFr
IGNhbiBiZSBlaXRoZXIgdGhlIGZpcnN0IG9yIHRoZSBsYXN0IG9iamVjdCBvbiBhIGxpbmUsIGRl
cGVuZGluZyBvbiBpdHMgZGlyZWN0aW9uLgotICAgICAgICBpZiAoSW5saW5lQm94KiBsYXN0TGVh
ZkNoaWxkID0gbGFzdFJvb3RCb3goKS0+bGFzdExlYWZDaGlsZCgpKSB7Ci0gICAgICAgICAgICBS
ZW5kZXJPYmplY3QqIGxhc3RPYmplY3QgPSBsYXN0TGVhZkNoaWxkLT5yZW5kZXJlcigpOwotICAg
ICAgICAgICAgaWYgKCFsYXN0T2JqZWN0LT5pc0JSKCkpCi0gICAgICAgICAgICAgICAgbGFzdE9i
amVjdCA9IGxhc3RSb290Qm94KCktPmZpcnN0TGVhZkNoaWxkKCktPnJlbmRlcmVyKCk7Ci0gICAg
ICAgICAgICBpZiAobGFzdE9iamVjdC0+aXNCUigpKSB7Ci0gICAgICAgICAgICAgICAgRUNsZWFy
IGNsZWFyID0gbGFzdE9iamVjdC0+c3R5bGUoKS0+Y2xlYXIoKTsKLSAgICAgICAgICAgICAgICBp
ZiAoY2xlYXIgIT0gQ05PTkUpCi0gICAgICAgICAgICAgICAgICAgIG5ld0xpbmUoY2xlYXIpOwor
ICAgICAgICBJbmxpbmVJdGVyYXRvciBlbmQgPSByZXNvbHZlci5wb3NpdGlvbigpOworCisgICAg
ICAgIGlmICghZnVsbExheW91dCAmJiBsYXN0Um9vdEJveCgpICYmIGxhc3RSb290Qm94KCktPmVu
ZHNXaXRoQnJlYWsoKSkgeworICAgICAgICAgICAgLy8gSWYgdGhlIGxhc3QgbGluZSBiZWZvcmUg
dGhlIHN0YXJ0IGxpbmUgZW5kcyB3aXRoIGEgbGluZSBicmVhayB0aGF0IGNsZWFyIGZsb2F0cywK
KyAgICAgICAgICAgIC8vIGFkanVzdCB0aGUgaGVpZ2h0IGFjY29yZGluZ2x5LgorICAgICAgICAg
ICAgLy8gQSBsaW5lIGJyZWFrIGNhbiBiZSBlaXRoZXIgdGhlIGZpcnN0IG9yIHRoZSBsYXN0IG9i
amVjdCBvbiBhIGxpbmUsIGRlcGVuZGluZyBvbiBpdHMgZGlyZWN0aW9uLgorICAgICAgICAgICAg
aWYgKElubGluZUJveCogbGFzdExlYWZDaGlsZCA9IGxhc3RSb290Qm94KCktPmxhc3RMZWFmQ2hp
bGQoKSkgeworICAgICAgICAgICAgICAgIFJlbmRlck9iamVjdCogbGFzdE9iamVjdCA9IGxhc3RM
ZWFmQ2hpbGQtPnJlbmRlcmVyKCk7CisgICAgICAgICAgICAgICAgaWYgKCFsYXN0T2JqZWN0LT5p
c0JSKCkpCisgICAgICAgICAgICAgICAgICAgIGxhc3RPYmplY3QgPSBsYXN0Um9vdEJveCgpLT5m
aXJzdExlYWZDaGlsZCgpLT5yZW5kZXJlcigpOworICAgICAgICAgICAgICAgIGlmIChsYXN0T2Jq
ZWN0LT5pc0JSKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgRUNsZWFyIGNsZWFyID0gbGFzdE9i
amVjdC0+c3R5bGUoKS0+Y2xlYXIoKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGNsZWFyICE9
IENOT05FKQorICAgICAgICAgICAgICAgICAgICAgICAgbmV3TGluZShjbGVhcik7CisgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgfQogCi0gICAgYm9vbCBl
bmRMaW5lTWF0Y2hlZCA9IGZhbHNlOwotICAgIGJvb2wgY2hlY2tGb3JFbmRMaW5lTWF0Y2ggPSBl
bmRMaW5lOwotICAgIGJvb2wgY2hlY2tGb3JGbG9hdHNGcm9tTGFzdExpbmUgPSBmYWxzZTsKKyAg
ICAgICAgYm9vbCBlbmRMaW5lTWF0Y2hlZCA9IGZhbHNlOworICAgICAgICBib29sIGNoZWNrRm9y
RW5kTGluZU1hdGNoID0gZW5kTGluZTsKKyAgICAgICAgYm9vbCBjaGVja0ZvckZsb2F0c0Zyb21M
YXN0TGluZSA9IGZhbHNlOwogCi0gICAgYm9vbCBpc0xpbmVFbXB0eSA9IHRydWU7CisgICAgICAg
IGJvb2wgaXNMaW5lRW1wdHkgPSB0cnVlOwogCi0gICAgd2hpbGUgKCFjdXJyZW50UG9zaXRpb24u
YXRFbmQoKSkgewotICAgICAgICAvLyBGSVhNRTogSXMgdGhpcyBjaGVjayBuZWNlc3NhcnkgYmVm
b3JlIHRoZSBmaXJzdCBpdGVyYXRpb24gb3IgY2FuIGl0IGJlIG1vdmVkIHRvIHRoZSBlbmQ/Ci0g
ICAgICAgIGlmIChjaGVja0ZvckVuZExpbmVNYXRjaCAmJiAoZW5kTGluZU1hdGNoZWQgPSBtYXRj
aGVkRW5kTGluZShyZXNvbHZlciwgY2xlYW5MaW5lU3RhcnQsIGNsZWFuTGluZUJpZGlTdGF0dXMs
IGVuZExpbmUsIGVuZExpbmVZUG9zLCByZXBhaW50Qm90dG9tLCByZXBhaW50VG9wKSkpCi0gICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgd2hpbGUgKCFlbmQuYXRFbmQoKSkgeworICAgICAgICAg
ICAgLy8gRklYTUU6IElzIHRoaXMgY2hlY2sgbmVjZXNzYXJ5IGJlZm9yZSB0aGUgZmlyc3QgaXRl
cmF0aW9uIG9yIGNhbiBpdCBiZSBtb3ZlZCB0byB0aGUgZW5kPworICAgICAgICAgICAgaWYgKGNo
ZWNrRm9yRW5kTGluZU1hdGNoICYmIChlbmRMaW5lTWF0Y2hlZCA9IG1hdGNoZWRFbmRMaW5lKHJl
c29sdmVyLCBjbGVhbkxpbmVTdGFydCwgY2xlYW5MaW5lQmlkaVN0YXR1cywgZW5kTGluZSwgZW5k
TGluZVlQb3MsIHJlcGFpbnRCb3R0b20sIHJlcGFpbnRUb3ApKSkKKyAgICAgICAgICAgICAgICBi
cmVhazsKIAotICAgICAgICBsaW5lTWlkcG9pbnRTdGF0ZS5yZXNldCgpOwotICAgICAgICAKLSAg
ICAgICAgaXNMaW5lRW1wdHkgPSB0cnVlOwotICAgICAgICAKLSAgICAgICAgRUNsZWFyIGNsZWFy
ID0gQ05PTkU7Ci0gICAgICAgIGN1cnJlbnRQb3NpdGlvbiA9IGZpbmROZXh0TGluZUJyZWFrKHJl
c29sdmVyLCBmaXJzdExpbmUsIGlzTGluZUVtcHR5LCBwcmV2aW91c0xpbmVCcm9rZUNsZWFubHks
ICZjbGVhcik7Ci0gICAgICAgIGlmIChyZXNvbHZlci5wb3NpdGlvbigpLmF0RW5kKCkpIHsKLSAg
ICAgICAgICAgIHJlc29sdmVyLmRlbGV0ZVJ1bnMoKTsKLSAgICAgICAgICAgIGNoZWNrRm9yRmxv
YXRzRnJvbUxhc3RMaW5lID0gdHJ1ZTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0g
ICAgICAgIEFTU0VSVChjdXJyZW50UG9zaXRpb24gIT0gcmVzb2x2ZXIucG9zaXRpb24oKSk7Ci0K
LSAgICAgICAgaWYgKCFpc0xpbmVFbXB0eSkgewotICAgICAgICAgICAgYmlkaVJlb3JkZXJMaW5l
KHJlc29sdmVyLCBjdXJyZW50UG9zaXRpb24sIHByZXZpb3VzTGluZUJyb2tlQ2xlYW5seSk7Ci0g
ICAgICAgICAgICBBU1NFUlQocmVzb2x2ZXIucG9zaXRpb24oKSA9PSBjdXJyZW50UG9zaXRpb24p
OwotCi0gICAgICAgICAgICBCaWRpUnVuKiB0cmFpbGluZ1NwYWNlUnVuID0gMDsKLSAgICAgICAg
ICAgIGlmICghcHJldmlvdXNMaW5lQnJva2VDbGVhbmx5ICYmIHJlc29sdmVyLnJ1bkNvdW50KCkg
JiYgcmVzb2x2ZXIubG9naWNhbGx5TGFzdFJ1bigpLT5tX29iamVjdC0+c3R5bGUoKS0+YnJlYWtP
bmx5QWZ0ZXJXaGl0ZVNwYWNlKCkKLSAgICAgICAgICAgICAgICAgICAgJiYgcmVzb2x2ZXIubG9n
aWNhbGx5TGFzdFJ1bigpLT5tX29iamVjdC0+c3R5bGUoKS0+YXV0b1dyYXAoKSkgewotICAgICAg
ICAgICAgICAgIHRyYWlsaW5nU3BhY2VSdW4gPSByZXNvbHZlci5sb2dpY2FsbHlMYXN0UnVuKCk7
Ci0gICAgICAgICAgICAgICAgUmVuZGVyT2JqZWN0KiBsYXN0T2JqZWN0ID0gdHJhaWxpbmdTcGFj
ZVJ1bi0+bV9vYmplY3Q7Ci0gICAgICAgICAgICAgICAgaWYgKGxhc3RPYmplY3QtPmlzVGV4dCgp
KSB7Ci0gICAgICAgICAgICAgICAgICAgIFJlbmRlclRleHQqIGxhc3RUZXh0ID0gdG9SZW5kZXJU
ZXh0KGxhc3RPYmplY3QpOwotICAgICAgICAgICAgICAgICAgICBjb25zdCBVQ2hhciogY2hhcmFj
dGVycyA9IGxhc3RUZXh0LT5jaGFyYWN0ZXJzKCk7Ci0gICAgICAgICAgICAgICAgICAgIGludCBm
aXJzdFNwYWNlID0gdHJhaWxpbmdTcGFjZVJ1bi0+c3RvcCgpOwotICAgICAgICAgICAgICAgICAg
ICB3aGlsZSAoZmlyc3RTcGFjZSA+IHRyYWlsaW5nU3BhY2VSdW4tPnN0YXJ0KCkpIHsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIFVDaGFyIGN1cnJlbnQgPSBjaGFyYWN0ZXJzW2ZpcnN0U3BhY2Ug
LSAxXTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICghaXNDb2xsYXBzaWJsZVNwYWNlKGN1
cnJlbnQsIGxhc3RUZXh0KSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGZpcnN0U3BhY2UtLTsKLSAgICAgICAgICAgICAgICAgICAg
fQotICAgICAgICAgICAgICAgICAgICBpZiAoZmlyc3RTcGFjZSA9PSB0cmFpbGluZ1NwYWNlUnVu
LT5zdG9wKCkpCi0gICAgICAgICAgICAgICAgICAgICAgICB0cmFpbGluZ1NwYWNlUnVuID0gMDsK
LSAgICAgICAgICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBUZXh0
RGlyZWN0aW9uIGRpcmVjdGlvbiA9IHN0eWxlKCktPmRpcmVjdGlvbigpOwotICAgICAgICAgICAg
ICAgICAgICAgICAgYm9vbCBzaG91bGRSZW9yZGVyID0gdHJhaWxpbmdTcGFjZVJ1biAhPSAoZGly
ZWN0aW9uID09IExUUiA/IHJlc29sdmVyLmxhc3RSdW4oKSA6IHJlc29sdmVyLmZpcnN0UnVuKCkp
OwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZpcnN0U3BhY2UgIT0gdHJhaWxpbmdTcGFj
ZVJ1bi0+c3RhcnQoKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJpZGlDb250ZXh0
KiBiYXNlQ29udGV4dCA9IHJlc29sdmVyLmNvbnRleHQoKTsKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB3aGlsZSAoQmlkaUNvbnRleHQqIHBhcmVudCA9IGJhc2VDb250ZXh0LT5wYXJlbnQo
KSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFzZUNvbnRleHQgPSBwYXJlbnQ7
Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBCaWRpUnVuKiBuZXdUcmFpbGluZ1J1biA9
IG5ldyAocmVuZGVyQXJlbmEoKSkgQmlkaVJ1bihmaXJzdFNwYWNlLCB0cmFpbGluZ1NwYWNlUnVu
LT5tX3N0b3AsIHRyYWlsaW5nU3BhY2VSdW4tPm1fb2JqZWN0LCBiYXNlQ29udGV4dCwgT3RoZXJO
ZXV0cmFsKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFpbGluZ1NwYWNlUnVuLT5t
X3N0b3AgPSBmaXJzdFNwYWNlOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkaXJl
Y3Rpb24gPT0gTFRSKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlci5h
ZGRSdW4obmV3VHJhaWxpbmdSdW4pOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZXIucHJlcGVuZFJ1bihuZXdU
cmFpbGluZ1J1bik7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhaWxpbmdTcGFjZVJ1
biA9IG5ld1RyYWlsaW5nUnVuOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3VsZFJl
b3JkZXIgPSBmYWxzZTsKKyAgICAgICAgICAgIGxpbmVNaWRwb2ludFN0YXRlLnJlc2V0KCk7Cisg
ICAgICAgICAgICAKKyAgICAgICAgICAgIGlzTGluZUVtcHR5ID0gdHJ1ZTsKKyAgICAgICAgICAg
IAorICAgICAgICAgICAgRUNsZWFyIGNsZWFyID0gQ05PTkU7CisgICAgICAgICAgICBlbmQgPSBm
aW5kTmV4dExpbmVCcmVhayhyZXNvbHZlciwgZmlyc3RMaW5lLCBpc0xpbmVFbXB0eSwgcHJldmlv
dXNMaW5lQnJva2VDbGVhbmx5LCAmY2xlYXIpOworICAgICAgICAgICAgaWYgKHJlc29sdmVyLnBv
c2l0aW9uKCkuYXRFbmQoKSkgeworICAgICAgICAgICAgICAgIHJlc29sdmVyLmRlbGV0ZVJ1bnMo
KTsKKyAgICAgICAgICAgICAgICBjaGVja0ZvckZsb2F0c0Zyb21MYXN0TGluZSA9IHRydWU7Cisg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBBU1NFUlQo
ZW5kICE9IHJlc29sdmVyLnBvc2l0aW9uKCkpOworCisgICAgICAgICAgICBpZiAoIWlzTGluZUVt
cHR5KSB7CisgICAgICAgICAgICAgICAgYmlkaVJlb3JkZXJMaW5lKHJlc29sdmVyLCBlbmQsIHBy
ZXZpb3VzTGluZUJyb2tlQ2xlYW5seSk7CisgICAgICAgICAgICAgICAgQVNTRVJUKHJlc29sdmVy
LnBvc2l0aW9uKCkgPT0gZW5kKTsKKworICAgICAgICAgICAgICAgIEJpZGlSdW4qIHRyYWlsaW5n
U3BhY2VSdW4gPSAwOworICAgICAgICAgICAgICAgIGlmICghcHJldmlvdXNMaW5lQnJva2VDbGVh
bmx5ICYmIHJlc29sdmVyLnJ1bkNvdW50KCkgJiYgcmVzb2x2ZXIubG9naWNhbGx5TGFzdFJ1bigp
LT5tX29iamVjdC0+c3R5bGUoKS0+YnJlYWtPbmx5QWZ0ZXJXaGl0ZVNwYWNlKCkKKyAgICAgICAg
ICAgICAgICAgICAgICAgICYmIHJlc29sdmVyLmxvZ2ljYWxseUxhc3RSdW4oKS0+bV9vYmplY3Qt
PnN0eWxlKCktPmF1dG9XcmFwKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgdHJhaWxpbmdTcGFj
ZVJ1biA9IHJlc29sdmVyLmxvZ2ljYWxseUxhc3RSdW4oKTsKKyAgICAgICAgICAgICAgICAgICAg
UmVuZGVyT2JqZWN0KiBsYXN0T2JqZWN0ID0gdHJhaWxpbmdTcGFjZVJ1bi0+bV9vYmplY3Q7Cisg
ICAgICAgICAgICAgICAgICAgIGlmIChsYXN0T2JqZWN0LT5pc1RleHQoKSkgeworICAgICAgICAg
ICAgICAgICAgICAgICAgUmVuZGVyVGV4dCogbGFzdFRleHQgPSB0b1JlbmRlclRleHQobGFzdE9i
amVjdCk7CisgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBVQ2hhciogY2hhcmFjdGVycyA9
IGxhc3RUZXh0LT5jaGFyYWN0ZXJzKCk7CisgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZmly
c3RTcGFjZSA9IHRyYWlsaW5nU3BhY2VSdW4tPnN0b3AoKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHdoaWxlIChmaXJzdFNwYWNlID4gdHJhaWxpbmdTcGFjZVJ1bi0+c3RhcnQoKSkgeworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFVDaGFyIGN1cnJlbnQgPSBjaGFyYWN0ZXJzW2ZpcnN0
U3BhY2UgLSAxXTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWlzQ29sbGFwc2li
bGVTcGFjZShjdXJyZW50LCBsYXN0VGV4dCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpcnN0U3BhY2UtLTsKICAg
ICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzaG91
bGRSZW9yZGVyKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRpcmVjdGlvbiA9
PSBMVFIpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZXIubW92ZVJ1
blRvRW5kKHRyYWlsaW5nU3BhY2VSdW4pOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB0cmFpbGluZ1NwYWNlUnVuLT5tX2xldmVsID0gMDsKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlci5t
b3ZlUnVuVG9CZWdpbm5pbmcodHJhaWxpbmdTcGFjZVJ1bik7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHRyYWlsaW5nU3BhY2VSdW4tPm1fbGV2ZWwgPSAxOworICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKGZpcnN0U3BhY2UgPT0gdHJhaWxpbmdTcGFjZVJ1bi0+c3RvcCgpKQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYWlsaW5nU3BhY2VSdW4gPSAwOworICAgICAg
ICAgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4
dERpcmVjdGlvbiBkaXJlY3Rpb24gPSBzdHlsZSgpLT5kaXJlY3Rpb24oKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBib29sIHNob3VsZFJlb3JkZXIgPSB0cmFpbGluZ1NwYWNlUnVuICE9
IChkaXJlY3Rpb24gPT0gTFRSID8gcmVzb2x2ZXIubGFzdFJ1bigpIDogcmVzb2x2ZXIuZmlyc3RS
dW4oKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZpcnN0U3BhY2UgIT0gdHJh
aWxpbmdTcGFjZVJ1bi0+c3RhcnQoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBCaWRpQ29udGV4dCogYmFzZUNvbnRleHQgPSByZXNvbHZlci5jb250ZXh0KCk7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlIChCaWRpQ29udGV4dCogcGFyZW50ID0gYmFz
ZUNvbnRleHQtPnBhcmVudCgpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
YmFzZUNvbnRleHQgPSBwYXJlbnQ7CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
QmlkaVJ1biogbmV3VHJhaWxpbmdSdW4gPSBuZXcgKHJlbmRlckFyZW5hKCkpIEJpZGlSdW4oZmly
c3RTcGFjZSwgdHJhaWxpbmdTcGFjZVJ1bi0+bV9zdG9wLCB0cmFpbGluZ1NwYWNlUnVuLT5tX29i
amVjdCwgYmFzZUNvbnRleHQsIE90aGVyTmV1dHJhbCk7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHRyYWlsaW5nU3BhY2VSdW4tPm1fc3RvcCA9IGZpcnN0U3BhY2U7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkaXJlY3Rpb24gPT0gTFRSKQorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZXIuYWRkUnVuKG5ld1RyYWlsaW5nUnVu
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZXIucHJlcGVuZFJ1bihuZXdUcmFpbGluZ1J1bik7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYWlsaW5nU3BhY2VSdW4gPSBuZXdU
cmFpbGluZ1J1bjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvdWxkUmVvcmRl
ciA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpZiAoc2hvdWxkUmVvcmRlcikgeworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpZiAoZGlyZWN0aW9uID09IExUUikgeworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcmVzb2x2ZXIubW92ZVJ1blRvRW5kKHRyYWlsaW5nU3BhY2VSdW4pOwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhaWxpbmdTcGFjZVJ1bi0+bV9s
ZXZlbCA9IDA7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlci5tb3ZlUnVuVG9CZWdpbm5p
bmcodHJhaWxpbmdTcGFjZVJ1bik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB0cmFpbGluZ1NwYWNlUnVuLT5tX2xldmVsID0gMTsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAg
ICAgICAgICB0cmFpbGluZ1NwYWNlUnVuID0gMDsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgICAgICAvLyBOb3cgdGhhdCB0aGUgcnVucyBoYXZlIGJlZW4gb3JkZXJlZCwgd2UgY3Jl
YXRlIHRoZSBsaW5lIGJveGVzLgorICAgICAgICAgICAgICAgIC8vIEF0IHRoZSBzYW1lIHRpbWUg
d2UgZmlndXJlIG91dCB3aGVyZSBib3JkZXIvcGFkZGluZy9tYXJnaW4gc2hvdWxkIGJlIGFwcGxp
ZWQgZm9yCisgICAgICAgICAgICAgICAgLy8gaW5saW5lIGZsb3cgYm94ZXMuCisKKyAgICAgICAg
ICAgICAgICBSb290SW5saW5lQm94KiBsaW5lQm94ID0gMDsKKyAgICAgICAgICAgICAgICBpZiAo
cmVzb2x2ZXIucnVuQ291bnQoKSkgeworICAgICAgICAgICAgICAgICAgICBsaW5lQm94ID0gY29u
c3RydWN0TGluZShyZXNvbHZlci5ydW5Db3VudCgpLCByZXNvbHZlci5maXJzdFJ1bigpLCByZXNv
bHZlci5sYXN0UnVuKCksIGZpcnN0TGluZSwgIWVuZC5vYmosIGVuZC5vYmogJiYgIWVuZC5wb3Mg
PyBlbmQub2JqIDogMCk7CisgICAgICAgICAgICAgICAgICAgIGlmIChsaW5lQm94KSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICBsaW5lQm94LT5zZXRFbmRzV2l0aEJyZWFrKHByZXZpb3VzTGlu
ZUJyb2tlQ2xlYW5seSk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIE5vdyB3ZSBwb3Np
dGlvbiBhbGwgb2Ygb3VyIHRleHQgcnVucyBob3Jpem9udGFsbHkuCisgICAgICAgICAgICAgICAg
ICAgICAgICBjb21wdXRlSG9yaXpvbnRhbFBvc2l0aW9uc0ZvckxpbmUobGluZUJveCwgZmlyc3RM
aW5lLCByZXNvbHZlci5maXJzdFJ1bigpLCB0cmFpbGluZ1NwYWNlUnVuLCBlbmQuYXRFbmQoKSk7
CisKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIE5vdyBwb3NpdGlvbiBvdXIgdGV4dCBydW5z
IHZlcnRpY2FsbHkuCisgICAgICAgICAgICAgICAgICAgICAgICBjb21wdXRlVmVydGljYWxQb3Np
dGlvbnNGb3JMaW5lKGxpbmVCb3gsIHJlc29sdmVyLmZpcnN0UnVuKCkpOworCisjaWYgRU5BQkxF
KFNWRykKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNwZWNpYWwgU1ZHIHRleHQgbGF5b3V0
IGNvZGUKKyAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVCb3gtPmNvbXB1dGVQZXJDaGFyYWN0
ZXJMYXlvdXRJbmZvcm1hdGlvbigpOworI2VuZGlmCisKKyNpZiBQTEFURk9STShNQUMpCisgICAg
ICAgICAgICAgICAgICAgICAgICAvLyBIaWdobGlnaHQgYWN0cyBhcyBhbiBvdmVyZmxvdyBpbmZs
YXRpb24uCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3R5bGUoKS0+aGlnaGxpZ2h0KCkg
IT0gbnVsbEF0b20pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZUJveC0+YWRkSGln
aGxpZ2h0T3ZlcmZsb3coKTsKKyNlbmRpZgogICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgICAgIHRyYWlsaW5nU3BhY2VSdW4gPSAw
OworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIHJlc29sdmVyLmRlbGV0ZVJ1
bnMoKTsKKworICAgICAgICAgICAgICAgIGlmIChsaW5lQm94KSB7CisgICAgICAgICAgICAgICAg
ICAgIGxpbmVCb3gtPnNldExpbmVCcmVha0luZm8oZW5kLm9iaiwgZW5kLnBvcywgcmVzb2x2ZXIu
c3RhdHVzKCkpOworICAgICAgICAgICAgICAgICAgICBpZiAodXNlUmVwYWludEJvdW5kcykgewor
ICAgICAgICAgICAgICAgICAgICAgICAgcmVwYWludFRvcCA9IG1pbihyZXBhaW50VG9wLCBsaW5l
Qm94LT50b3BWaXNpYmxlT3ZlcmZsb3coKSk7CisgICAgICAgICAgICAgICAgICAgICAgICByZXBh
aW50Qm90dG9tID0gbWF4KHJlcGFpbnRCb3R0b20sIGxpbmVCb3gtPmJvdHRvbVZpc2libGVPdmVy
ZmxvdygpKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgICAgIGZpcnN0TGluZSA9IGZhbHNlOworICAgICAgICAgICAgICAgIG5ld0xpbmUo
Y2xlYXIpOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAvLyBOb3cgdGhhdCB0aGUgcnVu
cyBoYXZlIGJlZW4gb3JkZXJlZCwgd2UgY3JlYXRlIHRoZSBsaW5lIGJveGVzLgotICAgICAgICAg
ICAgUm9vdElubGluZUJveCogbGluZUJveCA9IGNyZWF0ZUxpbmVCb3hlc0ZvclJlc29sdmVyKHJl
c29sdmVyLCBjdXJyZW50UG9zaXRpb24sIGZpcnN0TGluZSwgcHJldmlvdXNMaW5lQnJva2VDbGVh
bmx5LCB0cmFpbGluZ1NwYWNlUnVuKTsKLSAgICAgICAgICAgIHJlc29sdmVyLmRlbGV0ZVJ1bnMo
KTsKLQotICAgICAgICAgICAgLy8gQXQgdGhlIHNhbWUgdGltZSB3ZSBmaWd1cmUgb3V0IHdoZXJl
IGJvcmRlci9wYWRkaW5nL21hcmdpbiBzaG91bGQgYmUgYXBwbGllZCBmb3IKLSAgICAgICAgICAg
IC8vIGlubGluZSBmbG93IGJveGVzLgotICAgICAgICAgICAgaWYgKGxpbmVCb3gpIHsKLSAgICAg
ICAgICAgICAgICBsaW5lQm94LT5zZXRMaW5lQnJlYWtJbmZvKGN1cnJlbnRQb3NpdGlvbi5vYmos
IGN1cnJlbnRQb3NpdGlvbi5wb3MsIHJlc29sdmVyLnN0YXR1cygpKTsKLSAgICAgICAgICAgICAg
ICBpZiAodXNlUmVwYWludEJvdW5kcykgewotICAgICAgICAgICAgICAgICAgICByZXBhaW50VG9w
ID0gbWluKHJlcGFpbnRUb3AsIGxpbmVCb3gtPnRvcFZpc2libGVPdmVyZmxvdygpKTsKLSAgICAg
ICAgICAgICAgICAgICAgcmVwYWludEJvdHRvbSA9IG1heChyZXBhaW50Qm90dG9tLCBsaW5lQm94
LT5ib3R0b21WaXNpYmxlT3ZlcmZsb3coKSk7CisgICAgICAgICAgICBpZiAobV9mbG9hdGluZ09i
amVjdHMgJiYgbGFzdFJvb3RCb3goKSkgeworICAgICAgICAgICAgICAgIGlmIChsYXN0RmxvYXQp
IHsKKyAgICAgICAgICAgICAgICAgICAgZm9yIChGbG9hdGluZ09iamVjdCogZiA9IG1fZmxvYXRp
bmdPYmplY3RzLT5sYXN0KCk7IGYgIT0gbGFzdEZsb2F0OyBmID0gbV9mbG9hdGluZ09iamVjdHMt
PnByZXYoKSkgeworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIG1f
ZmxvYXRpbmdPYmplY3RzLT5uZXh0KCk7CisgICAgICAgICAgICAgICAgfSBlbHNlCisgICAgICAg
ICAgICAgICAgICAgIG1fZmxvYXRpbmdPYmplY3RzLT5maXJzdCgpOworICAgICAgICAgICAgICAg
IGZvciAoRmxvYXRpbmdPYmplY3QqIGYgPSBtX2Zsb2F0aW5nT2JqZWN0cy0+Y3VycmVudCgpOyBm
OyBmID0gbV9mbG9hdGluZ09iamVjdHMtPm5leHQoKSkgeworICAgICAgICAgICAgICAgICAgICBs
YXN0Um9vdEJveCgpLT5mbG9hdHMoKS5hcHBlbmQoZi0+bV9yZW5kZXJlcik7CisgICAgICAgICAg
ICAgICAgICAgIEFTU0VSVChmLT5tX3JlbmRlcmVyID09IGZsb2F0c1tmbG9hdEluZGV4XS5vYmpl
Y3QpOworICAgICAgICAgICAgICAgICAgICAvLyBJZiBhIGZsb2F0J3MgZ2VvbWV0cnkgaGFzIGNo
YW5nZWQsIGdpdmUgdXAgb24gc3luY2luZyB3aXRoIGNsZWFuIGxpbmVzLgorICAgICAgICAgICAg
ICAgICAgICBpZiAoZmxvYXRzW2Zsb2F0SW5kZXhdLnJlY3QgIT0gSW50UmVjdChmLT5tX2xlZnQs
IGYtPm1fdG9wLCBmLT5tX3dpZHRoLCBmLT5tX2JvdHRvbSAtIGYtPm1fdG9wKSkKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGNoZWNrRm9yRW5kTGluZU1hdGNoID0gZmFsc2U7CisgICAgICAgICAg
ICAgICAgICAgIGZsb2F0SW5kZXgrKzsKICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgbGFzdEZsb2F0ID0gbV9mbG9hdGluZ09iamVjdHMtPmxhc3QoKTsKICAgICAgICAgICAgIH0K
IAotICAgICAgICAgICAgZmlyc3RMaW5lID0gZmFsc2U7Ci0gICAgICAgICAgICBuZXdMaW5lKGNs
ZWFyKTsKKyAgICAgICAgICAgIGxpbmVNaWRwb2ludFN0YXRlLnJlc2V0KCk7CisgICAgICAgICAg
ICByZXNvbHZlci5zZXRQb3NpdGlvbihlbmQpOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKG1f
ZmxvYXRpbmdPYmplY3RzICYmIGxhc3RSb290Qm94KCkpIHsKKyAgICAgICAgaWYgKGVuZExpbmUp
IHsKKyAgICAgICAgICAgIGlmIChlbmRMaW5lTWF0Y2hlZCkgeworICAgICAgICAgICAgICAgIC8v
IEF0dGFjaCBhbGwgdGhlIHJlbWFpbmluZyBsaW5lcywgYW5kIHRoZW4gYWRqdXN0IHRoZWlyIHkt
cG9zaXRpb25zIGFzIG5lZWRlZC4KKyAgICAgICAgICAgICAgICBpbnQgZGVsdGEgPSBoZWlnaHQo
KSAtIGVuZExpbmVZUG9zOworICAgICAgICAgICAgICAgIGZvciAoUm9vdElubGluZUJveCogbGlu
ZSA9IGVuZExpbmU7IGxpbmU7IGxpbmUgPSBsaW5lLT5uZXh0Um9vdEJveCgpKSB7CisgICAgICAg
ICAgICAgICAgICAgIGxpbmUtPmF0dGFjaExpbmUoKTsKKyAgICAgICAgICAgICAgICAgICAgaWYg
KGRlbHRhKSB7CisgICAgICAgICAgICAgICAgICAgICAgICByZXBhaW50VG9wID0gbWluKHJlcGFp
bnRUb3AsIGxpbmUtPnRvcFZpc2libGVPdmVyZmxvdygpICsgbWluKGRlbHRhLCAwKSk7CisgICAg
ICAgICAgICAgICAgICAgICAgICByZXBhaW50Qm90dG9tID0gbWF4KHJlcGFpbnRCb3R0b20sIGxp
bmUtPmJvdHRvbVZpc2libGVPdmVyZmxvdygpICsgbWF4KGRlbHRhLCAwKSk7CisgICAgICAgICAg
ICAgICAgICAgICAgICBsaW5lLT5hZGp1c3RQb3NpdGlvbigwLCBkZWx0YSk7CisgICAgICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgaWYgKFZlY3RvcjxSZW5kZXJCb3gqPiog
Y2xlYW5MaW5lRmxvYXRzID0gbGluZS0+ZmxvYXRzUHRyKCkpIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIFZlY3RvcjxSZW5kZXJCb3gqPjo6aXRlcmF0b3IgZW5kID0gY2xlYW5MaW5lRmxvYXRz
LT5lbmQoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoVmVjdG9yPFJlbmRlckJveCo+
OjppdGVyYXRvciBmID0gY2xlYW5MaW5lRmxvYXRzLT5iZWdpbigpOyBmICE9IGVuZDsgKytmKSB7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGZsb2F0VG9wID0gKCpmKS0+eSgpIC0g
KCpmKS0+bWFyZ2luVG9wKCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zZXJ0Rmxv
YXRpbmdPYmplY3QoKmYpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEhlaWdodChm
bG9hdFRvcCArIGRlbHRhKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbk5l
d0Zsb2F0cygpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHNldEhlaWdodChsYXN0Um9v
dEJveCgpLT5ibG9ja0hlaWdodCgpKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICAgICAgLy8gRGVsZXRlIGFsbCB0aGUgcmVtYWluaW5nIGxpbmVzLgorICAgICAgICAgICAgICAg
IFJvb3RJbmxpbmVCb3gqIGxpbmUgPSBlbmRMaW5lOworICAgICAgICAgICAgICAgIFJlbmRlckFy
ZW5hKiBhcmVuYSA9IHJlbmRlckFyZW5hKCk7CisgICAgICAgICAgICAgICAgd2hpbGUgKGxpbmUp
IHsKKyAgICAgICAgICAgICAgICAgICAgcmVwYWludFRvcCA9IG1pbihyZXBhaW50VG9wLCBsaW5l
LT50b3BWaXNpYmxlT3ZlcmZsb3coKSk7CisgICAgICAgICAgICAgICAgICAgIHJlcGFpbnRCb3R0
b20gPSBtYXgocmVwYWludEJvdHRvbSwgbGluZS0+Ym90dG9tVmlzaWJsZU92ZXJmbG93KCkpOwor
ICAgICAgICAgICAgICAgICAgICBSb290SW5saW5lQm94KiBuZXh0ID0gbGluZS0+bmV4dFJvb3RC
b3goKTsKKyAgICAgICAgICAgICAgICAgICAgbGluZS0+ZGVsZXRlTGluZShhcmVuYSk7CisgICAg
ICAgICAgICAgICAgICAgIGxpbmUgPSBuZXh0OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfQorICAgICAgICBpZiAobV9mbG9hdGluZ09iamVjdHMgJiYgKGNoZWNr
Rm9yRmxvYXRzRnJvbUxhc3RMaW5lIHx8IHBvc2l0aW9uTmV3RmxvYXRzKCkpICYmIGxhc3RSb290
Qm94KCkpIHsKKyAgICAgICAgICAgIC8vIEluIGNhc2Ugd2UgaGF2ZSBhIGZsb2F0IG9uIHRoZSBs
YXN0IGxpbmUsIGl0IG1pZ2h0IG5vdCBiZSBwb3NpdGlvbmVkIHVwIHRvIG5vdy4KKyAgICAgICAg
ICAgIC8vIFRoaXMgaGFzIHRvIGJlIGRvbmUgYmVmb3JlIGFkZGluZyBpbiB0aGUgYm90dG9tIGJv
cmRlci9wYWRkaW5nLCBvciB0aGUgZmxvYXQgd2lsbAorICAgICAgICAgICAgLy8gaW5jbHVkZSB0
aGUgcGFkZGluZyBpbmNvcnJlY3RseS4gLWR3aAorICAgICAgICAgICAgaWYgKGNoZWNrRm9yRmxv
YXRzRnJvbUxhc3RMaW5lKSB7CisgICAgICAgICAgICAgICAgaW50IGJvdHRvbVZpc3VhbE92ZXJm
bG93ID0gbGFzdFJvb3RCb3goKS0+Ym90dG9tVmlzdWFsT3ZlcmZsb3coKTsKKyAgICAgICAgICAg
ICAgICBpbnQgYm90dG9tTGF5b3V0T3ZlcmZsb3cgPSBsYXN0Um9vdEJveCgpLT5ib3R0b21MYXlv
dXRPdmVyZmxvdygpOworICAgICAgICAgICAgICAgIFRyYWlsaW5nRmxvYXRzUm9vdElubGluZUJv
eCogdHJhaWxpbmdGbG9hdHNMaW5lQm94ID0gbmV3IChyZW5kZXJBcmVuYSgpKSBUcmFpbGluZ0Zs
b2F0c1Jvb3RJbmxpbmVCb3godGhpcyk7CisgICAgICAgICAgICAgICAgbV9saW5lQm94ZXMuYXBw
ZW5kTGluZUJveCh0cmFpbGluZ0Zsb2F0c0xpbmVCb3gpOworICAgICAgICAgICAgICAgIHRyYWls
aW5nRmxvYXRzTGluZUJveC0+c2V0Q29uc3RydWN0ZWQoKTsKKyAgICAgICAgICAgICAgICB0cmFp
bGluZ0Zsb2F0c0xpbmVCb3gtPnZlcnRpY2FsbHlBbGlnbkJveGVzKGhlaWdodCgpKTsKKyAgICAg
ICAgICAgICAgICB0cmFpbGluZ0Zsb2F0c0xpbmVCb3gtPnNldFZlcnRpY2FsT3ZlcmZsb3dQb3Np
dGlvbnMoaGVpZ2h0KCksIGJvdHRvbUxheW91dE92ZXJmbG93LCBoZWlnaHQoKSwgYm90dG9tVmlz
dWFsT3ZlcmZsb3csIDApOworICAgICAgICAgICAgICAgIHRyYWlsaW5nRmxvYXRzTGluZUJveC0+
c2V0QmxvY2tIZWlnaHQoaGVpZ2h0KCkpOworICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYg
KGxhc3RGbG9hdCkgewogICAgICAgICAgICAgICAgIGZvciAoRmxvYXRpbmdPYmplY3QqIGYgPSBt
X2Zsb2F0aW5nT2JqZWN0cy0+bGFzdCgpOyBmICE9IGxhc3RGbG9hdDsgZiA9IG1fZmxvYXRpbmdP
YmplY3RzLT5wcmV2KCkpIHsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgbV9m
bG9hdGluZ09iamVjdHMtPm5leHQoKTsKICAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAg
ICAgIG1fZmxvYXRpbmdPYmplY3RzLT5maXJzdCgpOwotICAgICAgICAgICAgZm9yIChGbG9hdGlu
Z09iamVjdCogZiA9IG1fZmxvYXRpbmdPYmplY3RzLT5jdXJyZW50KCk7IGY7IGYgPSBtX2Zsb2F0
aW5nT2JqZWN0cy0+bmV4dCgpKSB7CisgICAgICAgICAgICBmb3IgKEZsb2F0aW5nT2JqZWN0KiBm
ID0gbV9mbG9hdGluZ09iamVjdHMtPmN1cnJlbnQoKTsgZjsgZiA9IG1fZmxvYXRpbmdPYmplY3Rz
LT5uZXh0KCkpCiAgICAgICAgICAgICAgICAgbGFzdFJvb3RCb3goKS0+ZmxvYXRzKCkuYXBwZW5k
KGYtPm1fcmVuZGVyZXIpOwotICAgICAgICAgICAgICAgIEFTU0VSVChmLT5tX3JlbmRlcmVyID09
IGZsb2F0c1tmbG9hdEluZGV4XS5vYmplY3QpOwotICAgICAgICAgICAgICAgIC8vIElmIGEgZmxv
YXQncyBnZW9tZXRyeSBoYXMgY2hhbmdlZCwgZ2l2ZSB1cCBvbiBzeW5jaW5nIHdpdGggY2xlYW4g
bGluZXMuCi0gICAgICAgICAgICAgICAgaWYgKGZsb2F0c1tmbG9hdEluZGV4XS5yZWN0ICE9IElu
dFJlY3QoZi0+bV9sZWZ0LCBmLT5tX3RvcCwgZi0+bV93aWR0aCwgZi0+bV9ib3R0b20gLSBmLT5t
X3RvcCkpCi0gICAgICAgICAgICAgICAgICAgIGNoZWNrRm9yRW5kTGluZU1hdGNoID0gZmFsc2U7
Ci0gICAgICAgICAgICAgICAgZmxvYXRJbmRleCsrOwotICAgICAgICAgICAgfQogICAgICAgICAg
ICAgbGFzdEZsb2F0ID0gbV9mbG9hdGluZ09iamVjdHMtPmxhc3QoKTsKICAgICAgICAgfQotCi0g
ICAgICAgIGxpbmVNaWRwb2ludFN0YXRlLnJlc2V0KCk7Ci0gICAgICAgIHJlc29sdmVyLnNldFBv
c2l0aW9uKGN1cnJlbnRQb3NpdGlvbik7Ci0gICAgfQotCi0gICAgaWYgKGVuZExpbmUpIHsKLSAg
ICAgICAgaWYgKGVuZExpbmVNYXRjaGVkKSB7Ci0gICAgICAgICAgICAvLyBBdHRhY2ggYWxsIHRo
ZSByZW1haW5pbmcgbGluZXMsIGFuZCB0aGVuIGFkanVzdCB0aGVpciB5LXBvc2l0aW9ucyBhcyBu
ZWVkZWQuCi0gICAgICAgICAgICBpbnQgZGVsdGEgPSBoZWlnaHQoKSAtIGVuZExpbmVZUG9zOwot
ICAgICAgICAgICAgZm9yIChSb290SW5saW5lQm94KiBsaW5lID0gZW5kTGluZTsgbGluZTsgbGlu
ZSA9IGxpbmUtPm5leHRSb290Qm94KCkpIHsKLSAgICAgICAgICAgICAgICBsaW5lLT5hdHRhY2hM
aW5lKCk7Ci0gICAgICAgICAgICAgICAgaWYgKGRlbHRhKSB7Ci0gICAgICAgICAgICAgICAgICAg
IHJlcGFpbnRUb3AgPSBtaW4ocmVwYWludFRvcCwgbGluZS0+dG9wVmlzaWJsZU92ZXJmbG93KCkg
KyBtaW4oZGVsdGEsIDApKTsKLSAgICAgICAgICAgICAgICAgICAgcmVwYWludEJvdHRvbSA9IG1h
eChyZXBhaW50Qm90dG9tLCBsaW5lLT5ib3R0b21WaXNpYmxlT3ZlcmZsb3coKSArIG1heChkZWx0
YSwgMCkpOwotICAgICAgICAgICAgICAgICAgICBsaW5lLT5hZGp1c3RQb3NpdGlvbigwLCBkZWx0
YSk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChWZWN0b3I8UmVuZGVy
Qm94Kj4qIGNsZWFuTGluZUZsb2F0cyA9IGxpbmUtPmZsb2F0c1B0cigpKSB7Ci0gICAgICAgICAg
ICAgICAgICAgIFZlY3RvcjxSZW5kZXJCb3gqPjo6aXRlcmF0b3IgZW5kID0gY2xlYW5MaW5lRmxv
YXRzLT5lbmQoKTsKLSAgICAgICAgICAgICAgICAgICAgZm9yIChWZWN0b3I8UmVuZGVyQm94Kj46
Oml0ZXJhdG9yIGYgPSBjbGVhbkxpbmVGbG9hdHMtPmJlZ2luKCk7IGYgIT0gZW5kOyArK2YpIHsK
LSAgICAgICAgICAgICAgICAgICAgICAgIGludCBmbG9hdFRvcCA9ICgqZiktPnkoKSAtICgqZikt
Pm1hcmdpblRvcCgpOwotICAgICAgICAgICAgICAgICAgICAgICAgaW5zZXJ0RmxvYXRpbmdPYmpl
Y3QoKmYpOwotICAgICAgICAgICAgICAgICAgICAgICAgc2V0SGVpZ2h0KGZsb2F0VG9wICsgZGVs
dGEpOwotICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb25OZXdGbG9hdHMoKTsKLSAgICAg
ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgIHNldEhlaWdodChsYXN0Um9vdEJveCgpLT5ibG9ja0hlaWdodCgpKTsKLSAgICAgICAg
fSBlbHNlIHsKLSAgICAgICAgICAgIC8vIERlbGV0ZSBhbGwgdGhlIHJlbWFpbmluZyBsaW5lcy4K
LSAgICAgICAgICAgIFJvb3RJbmxpbmVCb3gqIGxpbmUgPSBlbmRMaW5lOwotICAgICAgICAgICAg
UmVuZGVyQXJlbmEqIGFyZW5hID0gcmVuZGVyQXJlbmEoKTsKLSAgICAgICAgICAgIHdoaWxlIChs
aW5lKSB7Ci0gICAgICAgICAgICAgICAgcmVwYWludFRvcCA9IG1pbihyZXBhaW50VG9wLCBsaW5l
LT50b3BWaXNpYmxlT3ZlcmZsb3coKSk7Ci0gICAgICAgICAgICAgICAgcmVwYWludEJvdHRvbSA9
IG1heChyZXBhaW50Qm90dG9tLCBsaW5lLT5ib3R0b21WaXNpYmxlT3ZlcmZsb3coKSk7Ci0gICAg
ICAgICAgICAgICAgUm9vdElubGluZUJveCogbmV4dCA9IGxpbmUtPm5leHRSb290Qm94KCk7Ci0g
ICAgICAgICAgICAgICAgbGluZS0+ZGVsZXRlTGluZShhcmVuYSk7Ci0gICAgICAgICAgICAgICAg
bGluZSA9IG5leHQ7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgaWYgKG1f
ZmxvYXRpbmdPYmplY3RzICYmIChjaGVja0ZvckZsb2F0c0Zyb21MYXN0TGluZSB8fCBwb3NpdGlv
bk5ld0Zsb2F0cygpKSAmJiBsYXN0Um9vdEJveCgpKSB7Ci0gICAgICAgIC8vIEluIGNhc2Ugd2Ug
aGF2ZSBhIGZsb2F0IG9uIHRoZSBsYXN0IGxpbmUsIGl0IG1pZ2h0IG5vdCBiZSBwb3NpdGlvbmVk
IHVwIHRvIG5vdy4KLSAgICAgICAgLy8gVGhpcyBoYXMgdG8gYmUgZG9uZSBiZWZvcmUgYWRkaW5n
IGluIHRoZSBib3R0b20gYm9yZGVyL3BhZGRpbmcsIG9yIHRoZSBmbG9hdCB3aWxsCi0gICAgICAg
IC8vIGluY2x1ZGUgdGhlIHBhZGRpbmcgaW5jb3JyZWN0bHkuIC1kd2gKLSAgICAgICAgaWYgKGNo
ZWNrRm9yRmxvYXRzRnJvbUxhc3RMaW5lKSB7Ci0gICAgICAgICAgICBpbnQgYm90dG9tVmlzdWFs
T3ZlcmZsb3cgPSBsYXN0Um9vdEJveCgpLT5ib3R0b21WaXN1YWxPdmVyZmxvdygpOwotICAgICAg
ICAgICAgaW50IGJvdHRvbUxheW91dE92ZXJmbG93ID0gbGFzdFJvb3RCb3goKS0+Ym90dG9tTGF5
b3V0T3ZlcmZsb3coKTsKLSAgICAgICAgICAgIFRyYWlsaW5nRmxvYXRzUm9vdElubGluZUJveCog
dHJhaWxpbmdGbG9hdHNMaW5lQm94ID0gbmV3IChyZW5kZXJBcmVuYSgpKSBUcmFpbGluZ0Zsb2F0
c1Jvb3RJbmxpbmVCb3godGhpcyk7Ci0gICAgICAgICAgICBtX2xpbmVCb3hlcy5hcHBlbmRMaW5l
Qm94KHRyYWlsaW5nRmxvYXRzTGluZUJveCk7Ci0gICAgICAgICAgICB0cmFpbGluZ0Zsb2F0c0xp
bmVCb3gtPnNldENvbnN0cnVjdGVkKCk7Ci0gICAgICAgICAgICB0cmFpbGluZ0Zsb2F0c0xpbmVC
b3gtPnZlcnRpY2FsbHlBbGlnbkJveGVzKGhlaWdodCgpKTsKLSAgICAgICAgICAgIHRyYWlsaW5n
RmxvYXRzTGluZUJveC0+c2V0VmVydGljYWxPdmVyZmxvd1Bvc2l0aW9ucyhoZWlnaHQoKSwgYm90
dG9tTGF5b3V0T3ZlcmZsb3csIGhlaWdodCgpLCBib3R0b21WaXN1YWxPdmVyZmxvdywgMCk7Ci0g
ICAgICAgICAgICB0cmFpbGluZ0Zsb2F0c0xpbmVCb3gtPnNldEJsb2NrSGVpZ2h0KGhlaWdodCgp
KTsKLSAgICAgICAgfQotICAgICAgICBpZiAobGFzdEZsb2F0KSB7Ci0gICAgICAgICAgICBmb3Ig
KEZsb2F0aW5nT2JqZWN0KiBmID0gbV9mbG9hdGluZ09iamVjdHMtPmxhc3QoKTsgZiAhPSBsYXN0
RmxvYXQ7IGYgPSBtX2Zsb2F0aW5nT2JqZWN0cy0+cHJldigpKSB7Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgICAgICBtX2Zsb2F0aW5nT2JqZWN0cy0+bmV4dCgpOwotICAgICAgICB9IGVsc2UKLSAg
ICAgICAgICAgIG1fZmxvYXRpbmdPYmplY3RzLT5maXJzdCgpOwotICAgICAgICBmb3IgKEZsb2F0
aW5nT2JqZWN0KiBmID0gbV9mbG9hdGluZ09iamVjdHMtPmN1cnJlbnQoKTsgZjsgZiA9IG1fZmxv
YXRpbmdPYmplY3RzLT5uZXh0KCkpCi0gICAgICAgICAgICBsYXN0Um9vdEJveCgpLT5mbG9hdHMo
KS5hcHBlbmQoZi0+bV9yZW5kZXJlcik7Ci0gICAgICAgIGxhc3RGbG9hdCA9IG1fZmxvYXRpbmdP
YmplY3RzLT5sYXN0KCk7Ci0gICAgfQotICAgIC8vIEZsb2F0cyB0aGF0IGRpZCBub3QgaGF2ZSBs
YXlvdXQgZGlkIG5vdCByZXBhaW50IHdoZW4gd2UgbGFpZCB0aGVtIG91dC4gVGhleSB3b3VsZCBo
YXZlCi0gICAgLy8gcGFpbnRlZCBieSBub3cgaWYgdGhleSBoYWQgbW92ZWQsIGJ1dCBpZiB0aGV5
IHN0YXllZCBhdCAoMCwgMCksIHRoZXkgc3RpbGwgbmVlZCB0byBiZQotICAgIC8vIHBhaW50ZWQu
Ci0gICAgc2l6ZV90IGZsb2F0Q291bnQgPSBmbG9hdHMuc2l6ZSgpOwotICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgZmxvYXRDb3VudDsgKytpKSB7Ci0gICAgICAgIGlmICghZmxvYXRzW2ldLmV2
ZXJIYWRMYXlvdXQpIHsKLSAgICAgICAgICAgIFJlbmRlckJveCogZiA9IGZsb2F0c1tpXS5vYmpl
Y3Q7Ci0gICAgICAgICAgICBpZiAoIWYtPngoKSAmJiAhZi0+eSgpICYmIGYtPmNoZWNrRm9yUmVw
YWludER1cmluZ0xheW91dCgpKQotICAgICAgICAgICAgICAgIGYtPnJlcGFpbnQoKTsKLSAgICAg
ICAgfQotICAgIH0KLX0KLQotdm9pZCBSZW5kZXJCbG9jazo6bGF5b3V0SW5saW5lQ2hpbGRyZW4o
Ym9vbCByZWxheW91dENoaWxkcmVuLCBpbnQmIHJlcGFpbnRUb3AsIGludCYgcmVwYWludEJvdHRv
bSkKLXsKLSAgICBtX292ZXJmbG93LmNsZWFyKCk7Ci0gICAgICAgIAotICAgIHNldEhlaWdodChi
b3JkZXJUb3AoKSArIHBhZGRpbmdUb3AoKSk7Ci0gICAgaW50IHRvQWRkID0gYm9yZGVyQm90dG9t
KCkgKyBwYWRkaW5nQm90dG9tKCkgKyBob3Jpem9udGFsU2Nyb2xsYmFySGVpZ2h0KCk7Ci0KLSAg
ICAvLyBGaWd1cmUgb3V0IGlmIHdlIHNob3VsZCBjbGVhciBvdXQgb3VyIGxpbmUgYm94ZXMuCi0g
ICAgLy8gRklYTUU6IEhhbmRsZSByZXNpemUgZXZlbnR1YWxseSEKLSAgICBib29sIGZ1bGxMYXlv
dXQgPSAhZmlyc3RMaW5lQm94KCkgfHwgc2VsZk5lZWRzTGF5b3V0KCkgfHwgcmVsYXlvdXRDaGls
ZHJlbjsKLSAgICBpZiAoZnVsbExheW91dCkKLSAgICAgICAgbGluZUJveGVzKCktPmRlbGV0ZUxp
bmVCb3hlcyhyZW5kZXJBcmVuYSgpKTsKLQotICAgIC8vIFRleHQgdHJ1bmNhdGlvbiBvbmx5IGtp
Y2tzIGluIGlmIHlvdXIgb3ZlcmZsb3cgaXNuJ3QgdmlzaWJsZSBhbmQgeW91ciB0ZXh0LW92ZXJm
bG93LW1vZGUgaXNuJ3QKLSAgICAvLyBjbGlwLgotICAgIC8vIEZJWE1FOiBDU1MzIHNheXMgdGhh
dCBkZXNjZW5kYW50cyB0aGF0IGFyZSBjbGlwcGVkIG11c3QgYWxzbyBrbm93IGhvdyB0byB0cnVu
Y2F0ZS4gIFRoaXMgaXMgaW5zYW5lbHkKLSAgICAvLyBkaWZmaWN1bHQgdG8gZmlndXJlIG91dCAo
ZXNwZWNpYWxseSBpbiB0aGUgbWlkZGxlIG9mIGRvaW5nIGxheW91dCksIGFuZCBpcyByZWFsbHkg
YW4gZXNvdGVyaWMgcGlsZSBvZiBub25zZW5zZQotICAgIC8vIGFueXdheSwgc28gd2Ugd29uJ3Qg
d29ycnkgYWJvdXQgZm9sbG93aW5nIHRoZSBkcmFmdCBoZXJlLgotICAgIGJvb2wgaGFzVGV4dE92
ZXJmbG93ID0gc3R5bGUoKS0+dGV4dE92ZXJmbG93KCkgJiYgaGFzT3ZlcmZsb3dDbGlwKCk7Ci0K
LSAgICAvLyBXYWxrIGFsbCB0aGUgbGluZXMgYW5kIGRlbGV0ZSBvdXIgZWxsaXBzaXMgbGluZSBi
b3hlcyBpZiB0aGV5IGV4aXN0LgotICAgIGlmIChoYXNUZXh0T3ZlcmZsb3cpCi0gICAgICAgICBk
ZWxldGVFbGxpcHNpc0xpbmVCb3hlcygpOwotCi0gICAgaWYgKGZpcnN0Q2hpbGQoKSkgewotICAg
ICAgICBWZWN0b3I8RmxvYXRXaXRoUmVjdD4gZmxvYXRzOwotICAgICAgICBib29sIGhhc0lubGlu
ZUNoaWxkID0gbGF5b3V0UmVwbGFjZWRFbGVtZW50cyhyZWxheW91dENoaWxkcmVuLCBmdWxsTGF5
b3V0LCBmbG9hdHMpOwotCi0gICAgICAgIGlmIChmdWxsTGF5b3V0ICYmIGhhc0lubGluZUNoaWxk
ICYmICFzZWxmTmVlZHNMYXlvdXQoKSkgewotICAgICAgICAgICAgc2V0TmVlZHNMYXlvdXQodHJ1
ZSwgZmFsc2UpOyAvLyBNYXJrIG91cnNlbHZlcyBhcyBuZWVkaW5nIGEgZnVsbCBsYXlvdXQuIFRo
aXMgd2F5IHdlJ2xsIHJlcGFpbnQgbGlrZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAvLyB3ZSdyZSBzdXBwb3NlZCB0by4KLSAgICAgICAgICAgIFJlbmRlclZpZXcq
IHYgPSB2aWV3KCk7Ci0gICAgICAgICAgICBpZiAodiAmJiAhdi0+ZG9pbmdGdWxsUmVwYWludCgp
ICYmIGhhc0xheWVyKCkpIHsKLSAgICAgICAgICAgICAgICAvLyBCZWNhdXNlIHdlIHdhaXRlZCB1
bnRpbCB3ZSB3ZXJlIGFscmVhZHkgaW5zaWRlIGxheW91dCB0byBkaXNjb3ZlcgotICAgICAgICAg
ICAgICAgIC8vIHRoYXQgdGhlIGJsb2NrIHJlYWxseSBuZWVkZWQgYSBmdWxsIGxheW91dCwgd2Ug
bWlzc2VkIG91ciBjaGFuY2UgdG8gcmVwYWludCB0aGUgbGF5ZXIKLSAgICAgICAgICAgICAgICAv
LyBiZWZvcmUgbGF5b3V0IHN0YXJ0ZWQuICBMdWNraWx5IHRoZSBsYXllciBoYXMgY2FjaGVkIHRo
ZSByZXBhaW50IHJlY3QgZm9yIGl0cyBvcmlnaW5hbAotICAgICAgICAgICAgICAgIC8vIHBvc2l0
aW9uIGFuZCBzaXplLCBhbmQgc28gd2UgY2FuIHVzZSB0aGF0IHRvIG1ha2UgYSByZXBhaW50IGhh
cHBlbiBub3cuCi0gICAgICAgICAgICAgICAgcmVwYWludFVzaW5nQ29udGFpbmVyKGNvbnRhaW5l
ckZvclJlcGFpbnQoKSwgbGF5ZXIoKS0+cmVwYWludFJlY3QoKSk7CisgICAgICAgIHNpemVfdCBm
bG9hdENvdW50ID0gZmxvYXRzLnNpemUoKTsKKyAgICAgICAgLy8gRmxvYXRzIHRoYXQgZGlkIG5v
dCBoYXZlIGxheW91dCBkaWQgbm90IHJlcGFpbnQgd2hlbiB3ZSBsYWlkIHRoZW0gb3V0LiBUaGV5
IHdvdWxkIGhhdmUKKyAgICAgICAgLy8gcGFpbnRlZCBieSBub3cgaWYgdGhleSBoYWQgbW92ZWQs
IGJ1dCBpZiB0aGV5IHN0YXllZCBhdCAoMCwgMCksIHRoZXkgc3RpbGwgbmVlZCB0byBiZQorICAg
ICAgICAvLyBwYWludGVkLgorICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGZsb2F0Q291
bnQ7ICsraSkgeworICAgICAgICAgICAgaWYgKCFmbG9hdHNbaV0uZXZlckhhZExheW91dCkgewor
ICAgICAgICAgICAgICAgIFJlbmRlckJveCogZiA9IGZsb2F0c1tpXS5vYmplY3Q7CisgICAgICAg
ICAgICAgICAgaWYgKCFmLT54KCkgJiYgIWYtPnkoKSAmJiBmLT5jaGVja0ZvclJlcGFpbnREdXJp
bmdMYXlvdXQoKSkKKyAgICAgICAgICAgICAgICAgICAgZi0+cmVwYWludCgpOwogICAgICAgICAg
ICAgfQogICAgICAgICB9Ci0KLSAgICAgICAgbGF5b3V0UnVuc0FuZEZsb2F0cyhmdWxsTGF5b3V0
LCBmbG9hdHMsIHJlcGFpbnRUb3AsIHJlcGFpbnRCb3R0b20pOwogICAgIH0KIAogICAgIC8vIE5v
dyBhZGQgaW4gdGhlIGJvdHRvbSBib3JkZXIvcGFkZGluZy4K
</data>

          </attachment>
      

    </bug>

</bugzilla>