<?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>50186</bug_id>
          
          <creation_ts>2010-11-29 14:29:19 -0800</creation_ts>
          <short_desc>Switch web audio code to use FloatPoint3D instead of Vector3</short_desc>
          <delta_ts>2010-11-29 18:03:38 -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>0</everconfirmed>
          <reporter name="Chris Rogers">crogers</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>eric</cc>
    
    <cc>kbr</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>314652</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Rogers">crogers</who>
    <bug_when>2010-11-29 14:29:19 -0800</bug_when>
    <thetext>Switch web audio code to use FloatPoint3D instead of Vector3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>314657</commentid>
    <comment_count>1</comment_count>
      <attachid>75063</attachid>
    <who name="Chris Rogers">crogers</who>
    <bug_when>2010-11-29 14:34:15 -0800</bug_when>
    <thetext>Created attachment 75063
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>314670</commentid>
    <comment_count>2</comment_count>
      <attachid>75063</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2010-11-29 14:54:26 -0800</bug_when>
    <thetext>Comment on attachment 75063
Patch

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

Are these the last uses of Vector3? If so, I think we should remove those files as well. Or is that planned in a separate patch?

&gt; WebCore/platform/graphics/FloatPoint3D.h:178
&gt; +inline double distance(const FloatPoint3D&amp; a, const FloatPoint3D&amp; b)

I&apos;m not sure that adding this function to the global WebCore namespace is a good idea. Could it be expressed as a method &quot;double distanceTo(const FloatPoint3D&amp; other) const&quot;?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>314710</commentid>
    <comment_count>3</comment_count>
      <attachid>75077</attachid>
    <who name="Chris Rogers">crogers</who>
    <bug_when>2010-11-29 16:13:14 -0800</bug_when>
    <thetext>Created attachment 75077
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>314712</commentid>
    <comment_count>4</comment_count>
    <who name="Chris Rogers">crogers</who>
    <bug_when>2010-11-29 16:15:21 -0800</bug_when>
    <thetext>&gt; Are these the last uses of Vector3? If so, I think we should remove those files as well. Or is that planned in a separate patch?

Yes, the new patch also removes wtf/Vector3.h



&gt;&gt; WebCore/platform/graphics/FloatPoint3D.h:178
&gt;&gt; +inline double distance(const FloatPoint3D&amp; a, const FloatPoint3D&amp; b)

&gt; I&apos;m not sure that adding this function to the global WebCore namespace is a good idea. Could it be expressed as a method &quot;double distanceTo(const FloatPoint3D&amp; other) const&quot;?

Yes, I&apos;ve changed this method to distanceTo() as you propose.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>314740</commentid>
    <comment_count>5</comment_count>
      <attachid>75077</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2010-11-29 17:04:22 -0800</bug_when>
    <thetext>Comment on attachment 75077
Patch

Looks good to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>314754</commentid>
    <comment_count>6</comment_count>
    <who name="Chris Rogers">crogers</who>
    <bug_when>2010-11-29 17:19:01 -0800</bug_when>
    <thetext>Committed r72853: &lt;http://trac.webkit.org/changeset/72853&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>314784</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-11-29 18:03:38 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/72853 might have broken SnowLeopard Intel Release (Tests)
The following tests are not passing:
fast/profiler/throw-exception-from-eval.html</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>75063</attachid>
            <date>2010-11-29 14:34:15 -0800</date>
            <delta_ts>2010-11-29 16:13:11 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-50186-20101129143414.patch</filename>
            <type>text/plain</type>
            <size>14656</size>
            <attacher name="Chris Rogers">crogers</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3MjgzMykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNDEgQEAKKzIwMTAtMTEtMjkgIENocmlzIFJvZ2VycyAgPGNyb2dlcnNAZ29vZ2xl
LmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBT
d2l0Y2ggd2ViIGF1ZGlvIGNvZGUgdG8gdXNlIEZsb2F0UG9pbnQzRCBpbnN0ZWFkIG9mIFZlY3Rv
cjMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUwMTg2
CisKKyAgICAgICAgTm8gbmV3IHRlc3RzIHNpbmNlIGF1ZGlvIEFQSSBpcyBub3QgeWV0IGltcGxl
bWVudGVkLgorCisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vQ29uZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDb25lRWZmZWN0OjpnYWluKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9Db25l
Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRQb2ludDNELmg6CisgICAgICAg
IChXZWJDb3JlOjpGbG9hdFBvaW50M0Q6OmlzWmVybyk6CisgICAgICAgIChXZWJDb3JlOjpvcGVy
YXRvciopOgorICAgICAgICAoV2ViQ29yZTo6ZGlzdGFuY2UpOgorICAgICAgICAqIHdlYmF1ZGlv
L0F1ZGlvTGlzdGVuZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvTGlzdGVuZXI6OnNldFBv
c2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvTGlzdGVuZXI6OnBvc2l0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OkF1ZGlvTGlzdGVuZXI6OnNldE9yaWVudGF0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OkF1ZGlvTGlzdGVuZXI6Om9yaWVudGF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OkF1ZGlvTGlzdGVuZXI6OnNldFVwVmVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvTGlz
dGVuZXI6OnVwVmVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvTGlzdGVuZXI6OnNldFZl
bG9jaXR5KToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvTGlzdGVuZXI6OnZlbG9jaXR5KToKKyAg
ICAgICAgKiB3ZWJhdWRpby9BdWRpb1Bhbm5lck5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
QXVkaW9QYW5uZXJOb2RlOjpBdWRpb1Bhbm5lck5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6QXVk
aW9QYW5uZXJOb2RlOjpnZXRBemltdXRoRWxldmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkF1
ZGlvUGFubmVyTm9kZTo6ZG9wcGxlclJhdGUpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9QYW5u
ZXJOb2RlOjpkaXN0YW5jZUNvbmVHYWluKToKKyAgICAgICAgKiB3ZWJhdWRpby9BdWRpb1Bhbm5l
ck5vZGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvUGFubmVyTm9kZTo6cG9zaXRpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6QXVkaW9QYW5uZXJOb2RlOjpzZXRQb3NpdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpBdWRpb1Bhbm5lck5vZGU6Om9yaWVudGF0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OkF1ZGlvUGFubmVyTm9kZTo6c2V0T3JpZW50YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6
QXVkaW9QYW5uZXJOb2RlOjp2ZWxvY2l0eSk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Bhbm5l
ck5vZGU6OnNldFZlbG9jaXR5KToKKwogMjAxMC0xMS0yOSAgQWxleGV5IFByb3NrdXJ5YWtvdiAg
PGFwQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KSW5kZXg6
IFdlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQ29uZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9Db25lLmNwcAkocmV2aXNpb24gNzI2OTQpCisrKyBXZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL0NvbmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MSwyMCArNDEsMjAgQEAgQ29u
ZUVmZmVjdDo6Q29uZUVmZmVjdCgpCiB7CiB9CiAKLWRvdWJsZSBDb25lRWZmZWN0OjpnYWluKFZl
Y3RvcjMgc291cmNlUG9zaXRpb24sIFZlY3RvcjMgc291cmNlT3JpZW50YXRpb24sIFZlY3RvcjMg
bGlzdGVuZXJQb3NpdGlvbikKK2RvdWJsZSBDb25lRWZmZWN0OjpnYWluKEZsb2F0UG9pbnQzRCBz
b3VyY2VQb3NpdGlvbiwgRmxvYXRQb2ludDNEIHNvdXJjZU9yaWVudGF0aW9uLCBGbG9hdFBvaW50
M0QgbGlzdGVuZXJQb3NpdGlvbikKIHsKICAgICBpZiAoc291cmNlT3JpZW50YXRpb24uaXNaZXJv
KCkgfHwgKChtX2lubmVyQW5nbGUgPT0gMzYwLjApICYmIChtX291dGVyQW5nbGUgPT0gMzYwLjAp
KSkKICAgICAgICAgcmV0dXJuIDEuMDsgLy8gbm8gY29uZSBzcGVjaWZpZWQgLSB1bml0eSBnYWlu
CiAKICAgICAvLyBOb3JtYWxpemVkIHNvdXJjZS1saXN0ZW5lciB2ZWN0b3IKLSAgICBWZWN0b3Iz
IHNvdXJjZVRvTGlzdGVuZXIgPSBsaXN0ZW5lclBvc2l0aW9uIC0gc291cmNlUG9zaXRpb247Cisg
ICAgRmxvYXRQb2ludDNEIHNvdXJjZVRvTGlzdGVuZXIgPSBsaXN0ZW5lclBvc2l0aW9uIC0gc291
cmNlUG9zaXRpb247CiAgICAgc291cmNlVG9MaXN0ZW5lci5ub3JtYWxpemUoKTsKIAotICAgIFZl
Y3RvcjMgbm9ybWFsaXplZFNvdXJjZU9yaWVudGF0aW9uID0gc291cmNlT3JpZW50YXRpb247Cisg
ICAgRmxvYXRQb2ludDNEIG5vcm1hbGl6ZWRTb3VyY2VPcmllbnRhdGlvbiA9IHNvdXJjZU9yaWVu
dGF0aW9uOwogICAgIG5vcm1hbGl6ZWRTb3VyY2VPcmllbnRhdGlvbi5ub3JtYWxpemUoKTsKIAog
ICAgIC8vIEFuZ2xlIGJldHdlZW4gdGhlIHNvdXJjZSBvcmllbnRhdGlvbiB2ZWN0b3IgYW5kIHRo
ZSBzb3VyY2UtbGlzdGVuZXIgdmVjdG9yCi0gICAgZG91YmxlIGRvdFByb2R1Y3QgPSBkb3Qoc291
cmNlVG9MaXN0ZW5lciwgbm9ybWFsaXplZFNvdXJjZU9yaWVudGF0aW9uKTsKKyAgICBkb3VibGUg
ZG90UHJvZHVjdCA9IHNvdXJjZVRvTGlzdGVuZXIuZG90KG5vcm1hbGl6ZWRTb3VyY2VPcmllbnRh
dGlvbik7CiAgICAgZG91YmxlIGFuZ2xlID0gMTgwLjAgKiBhY29zKGRvdFByb2R1Y3QpIC8gTV9Q
STsKICAgICBkb3VibGUgYWJzQW5nbGUgPSBmYWJzKGFuZ2xlKTsKIApJbmRleDogV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9Db25lLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9Db25lLmgJKHJldmlzaW9uIDcyNjk0KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9Db25l
LmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDcgKzI5LDcgQEAKICNpZm5kZWYgQ29uZV9oCiAjZGVm
aW5lIENvbmVfaAogCi0jaW5jbHVkZSA8d3RmL1ZlY3RvcjMuaD4KKyNpbmNsdWRlICJGbG9hdFBv
aW50M0QuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC00MCw3ICs0MCw3IEBAIHB1Ymxp
YzoKICAgICBDb25lRWZmZWN0KCk7CiAKICAgICAvLyBSZXR1cm5zIHNjYWxhciBnYWluIGZvciB0
aGUgZ2l2ZW4gc291cmNlL2xpc3RlbmVyIHBvc2l0aW9ucy9vcmllbnRhdGlvbnMKLSAgICBkb3Vi
bGUgZ2FpbihWZWN0b3IzIHNvdXJjZVBvc2l0aW9uLCBWZWN0b3IzIHNvdXJjZU9yaWVudGF0aW9u
LCBWZWN0b3IzIGxpc3RlbmVyUG9zaXRpb24pOworICAgIGRvdWJsZSBnYWluKEZsb2F0UG9pbnQz
RCBzb3VyY2VQb3NpdGlvbiwgRmxvYXRQb2ludDNEIHNvdXJjZU9yaWVudGF0aW9uLCBGbG9hdFBv
aW50M0QgbGlzdGVuZXJQb3NpdGlvbik7CiAKICAgICAvLyBBbmdsZXMgaW4gZGVncmVlcwogICAg
IHZvaWQgc2V0SW5uZXJBbmdsZShkb3VibGUgaW5uZXJBbmdsZSkgeyBtX2lubmVyQW5nbGUgPSBp
bm5lckFuZ2xlOyB9CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0UG9pbnQz
RC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRQb2ludDNE
LmgJKHJldmlzaW9uIDcyNjk0KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFBv
aW50M0QuaAkod29ya2luZyBjb3B5KQpAQCAtODQsNiArODQsMTEgQEAgcHVibGljOgogICAgICAg
ICBtX3ogKj0gc3o7CiAgICAgfQogCisgICAgYm9vbCBpc1plcm8oKSBjb25zdAorICAgIHsKKyAg
ICAgICAgcmV0dXJuICFtX3ggJiYgIW1feSAmJiAhbV96OworICAgIH0KKwogICAgIHZvaWQgbm9y
bWFsaXplKCk7CiAKICAgICBmbG9hdCBkb3QoY29uc3QgRmxvYXRQb2ludDNEJiBhKSBjb25zdApA
QCAtMTYwLDYgKzE2NSwyMSBAQCBpbmxpbmUgZmxvYXQgb3BlcmF0b3IqKGNvbnN0IEZsb2F0UG9p
bnQzCiAgICAgcmV0dXJuIGEuZG90KGIpOwogfQogCitpbmxpbmUgRmxvYXRQb2ludDNEIG9wZXJh
dG9yKihmbG9hdCBrLCBjb25zdCBGbG9hdFBvaW50M0QmIHYpCit7CisgICAgcmV0dXJuIEZsb2F0
UG9pbnQzRChrICogdi54KCksIGsgKiB2LnkoKSwgayAqIHYueigpKTsKK30KKworaW5saW5lIEZs
b2F0UG9pbnQzRCBvcGVyYXRvciooY29uc3QgRmxvYXRQb2ludDNEJiB2LCBmbG9hdCBrKQorewor
ICAgIHJldHVybiBGbG9hdFBvaW50M0QoayAqIHYueCgpLCBrICogdi55KCksIGsgKiB2LnooKSk7
Cit9CisKK2lubGluZSBkb3VibGUgZGlzdGFuY2UoY29uc3QgRmxvYXRQb2ludDNEJiBhLCBjb25z
dCBGbG9hdFBvaW50M0QmIGIpCit7CisgICAgcmV0dXJuIChhIC0gYikubGVuZ3RoKCk7Cit9CisK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEZsb2F0UG9pbnQzRF9oCkluZGV4
OiBXZWJDb3JlL3dlYmF1ZGlvL0F1ZGlvTGlzdGVuZXIuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L3dlYmF1ZGlvL0F1ZGlvTGlzdGVuZXIuaAkocmV2aXNpb24gNzI2OTQpCisrKyBXZWJDb3JlL3dl
YmF1ZGlvL0F1ZGlvTGlzdGVuZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjksOSArMjksOSBAQAog
I2lmbmRlZiBBdWRpb0xpc3RlbmVyX2gKICNkZWZpbmUgQXVkaW9MaXN0ZW5lcl9oCiAKKyNpbmNs
dWRlICJGbG9hdFBvaW50M0QuaCIKICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1
ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0jaW5jbHVkZSA8d3RmL1ZlY3RvcjMuaD4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCkBAIC00NSwyNyArNDUsMjcgQEAgcHVibGljOgogICAgIH0KIAogICAg
IC8vIFBvc2l0aW9uCi0gICAgdm9pZCBzZXRQb3NpdGlvbihkb3VibGUgeCwgZG91YmxlIHksIGRv
dWJsZSB6KSB7IHNldFBvc2l0aW9uKFZlY3RvcjMoeCwgeSwgeikpOyB9Ci0gICAgdm9pZCBzZXRQ
b3NpdGlvbihjb25zdCBWZWN0b3IzICZwb3NpdGlvbikgeyBtX3Bvc2l0aW9uID0gcG9zaXRpb247
IH0KLSAgICBjb25zdCBWZWN0b3IzJiBwb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fcG9zaXRp
b247IH0KKyAgICB2b2lkIHNldFBvc2l0aW9uKGRvdWJsZSB4LCBkb3VibGUgeSwgZG91YmxlIHop
IHsgc2V0UG9zaXRpb24oRmxvYXRQb2ludDNEKHgsIHksIHopKTsgfQorICAgIHZvaWQgc2V0UG9z
aXRpb24oY29uc3QgRmxvYXRQb2ludDNEICZwb3NpdGlvbikgeyBtX3Bvc2l0aW9uID0gcG9zaXRp
b247IH0KKyAgICBjb25zdCBGbG9hdFBvaW50M0QmIHBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4g
bV9wb3NpdGlvbjsgfQogCiAgICAgLy8gT3JpZW50YXRpb24KICAgICB2b2lkIHNldE9yaWVudGF0
aW9uKGRvdWJsZSB4LCBkb3VibGUgeSwgZG91YmxlIHosIGRvdWJsZSB1cFgsIGRvdWJsZSB1cFks
IGRvdWJsZSB1cFopCiAgICAgewotICAgICAgICBzZXRPcmllbnRhdGlvbihWZWN0b3IzKHgsIHks
IHopKTsKLSAgICAgICAgc2V0VXBWZWN0b3IoVmVjdG9yMyh1cFgsIHVwWSwgdXBaKSk7CisgICAg
ICAgIHNldE9yaWVudGF0aW9uKEZsb2F0UG9pbnQzRCh4LCB5LCB6KSk7CisgICAgICAgIHNldFVw
VmVjdG9yKEZsb2F0UG9pbnQzRCh1cFgsIHVwWSwgdXBaKSk7CiAgICAgfQotICAgIHZvaWQgc2V0
T3JpZW50YXRpb24oY29uc3QgVmVjdG9yMyAmb3JpZW50YXRpb24pIHsgbV9vcmllbnRhdGlvbiA9
IG9yaWVudGF0aW9uOyB9Ci0gICAgY29uc3QgVmVjdG9yMyYgb3JpZW50YXRpb24oKSBjb25zdCB7
IHJldHVybiBtX29yaWVudGF0aW9uOyB9CisgICAgdm9pZCBzZXRPcmllbnRhdGlvbihjb25zdCBG
bG9hdFBvaW50M0QgJm9yaWVudGF0aW9uKSB7IG1fb3JpZW50YXRpb24gPSBvcmllbnRhdGlvbjsg
fQorICAgIGNvbnN0IEZsb2F0UG9pbnQzRCYgb3JpZW50YXRpb24oKSBjb25zdCB7IHJldHVybiBt
X29yaWVudGF0aW9uOyB9CiAKICAgICAvLyBVcC12ZWN0b3IKLSAgICB2b2lkIHNldFVwVmVjdG9y
KGNvbnN0IFZlY3RvcjMgJnVwVmVjdG9yKSB7IG1fdXBWZWN0b3IgPSB1cFZlY3RvcjsgfQotICAg
IGNvbnN0IFZlY3RvcjMmIHVwVmVjdG9yKCkgY29uc3QgeyByZXR1cm4gbV91cFZlY3RvcjsgfQor
ICAgIHZvaWQgc2V0VXBWZWN0b3IoY29uc3QgRmxvYXRQb2ludDNEICZ1cFZlY3RvcikgeyBtX3Vw
VmVjdG9yID0gdXBWZWN0b3I7IH0KKyAgICBjb25zdCBGbG9hdFBvaW50M0QmIHVwVmVjdG9yKCkg
Y29uc3QgeyByZXR1cm4gbV91cFZlY3RvcjsgfQogCiAgICAgLy8gVmVsb2NpdHkKLSAgICB2b2lk
IHNldFZlbG9jaXR5KGRvdWJsZSB4LCBkb3VibGUgeSwgZG91YmxlIHopIHsgc2V0VmVsb2NpdHko
VmVjdG9yMyh4LCB5LCB6KSk7IH0KLSAgICB2b2lkIHNldFZlbG9jaXR5KGNvbnN0IFZlY3RvcjMg
JnZlbG9jaXR5KSB7IG1fdmVsb2NpdHkgPSB2ZWxvY2l0eTsgfQotICAgIGNvbnN0IFZlY3RvcjMm
IHZlbG9jaXR5KCkgY29uc3QgeyByZXR1cm4gbV92ZWxvY2l0eTsgfQorICAgIHZvaWQgc2V0VmVs
b2NpdHkoZG91YmxlIHgsIGRvdWJsZSB5LCBkb3VibGUgeikgeyBzZXRWZWxvY2l0eShGbG9hdFBv
aW50M0QoeCwgeSwgeikpOyB9CisgICAgdm9pZCBzZXRWZWxvY2l0eShjb25zdCBGbG9hdFBvaW50
M0QgJnZlbG9jaXR5KSB7IG1fdmVsb2NpdHkgPSB2ZWxvY2l0eTsgfQorICAgIGNvbnN0IEZsb2F0
UG9pbnQzRCYgdmVsb2NpdHkoKSBjb25zdCB7IHJldHVybiBtX3ZlbG9jaXR5OyB9CiAKICAgICAv
LyBEb3BwbGVyIGZhY3RvcgogICAgIHZvaWQgc2V0RG9wcGxlckZhY3Rvcihkb3VibGUgZG9wcGxl
ckZhY3RvcikgeyBtX2RvcHBsZXJGYWN0b3IgPSBkb3BwbGVyRmFjdG9yOyB9CkBAIC03OSwxMSAr
NzksMTEgQEAgcHJpdmF0ZToKICAgICBBdWRpb0xpc3RlbmVyKCk7CiAKICAgICAvLyBQb3NpdGlv
biAvIE9yaWVudGF0aW9uCi0gICAgVmVjdG9yMyBtX3Bvc2l0aW9uOwotICAgIFZlY3RvcjMgbV9v
cmllbnRhdGlvbjsKLSAgICBWZWN0b3IzIG1fdXBWZWN0b3I7CisgICAgRmxvYXRQb2ludDNEIG1f
cG9zaXRpb247CisgICAgRmxvYXRQb2ludDNEIG1fb3JpZW50YXRpb247CisgICAgRmxvYXRQb2lu
dDNEIG1fdXBWZWN0b3I7CiAKLSAgICBWZWN0b3IzIG1fdmVsb2NpdHk7CisgICAgRmxvYXRQb2lu
dDNEIG1fdmVsb2NpdHk7CiAKICAgICBkb3VibGUgbV9kb3BwbGVyRmFjdG9yOwogICAgIGRvdWJs
ZSBtX3NwZWVkT2ZTb3VuZDsKSW5kZXg6IFdlYkNvcmUvd2ViYXVkaW8vQXVkaW9QYW5uZXJOb2Rl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3dlYmF1ZGlvL0F1ZGlvUGFubmVyTm9kZS5jcHAJ
KHJldmlzaW9uIDcyNjk0KQorKysgV2ViQ29yZS93ZWJhdWRpby9BdWRpb1Bhbm5lck5vZGUuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC01OCw5ICs1OCw5IEBAIEF1ZGlvUGFubmVyTm9kZTo6QXVkaW9Q
YW5uZXJOb2RlKEF1ZGlvQ28KICAgICBtX2Rpc3RhbmNlR2FpbiA9IEF1ZGlvR2Fpbjo6Y3JlYXRl
KCJkaXN0YW5jZUdhaW4iLCAxLjAsIDAuMCwgMS4wKTsKICAgICBtX2NvbmVHYWluID0gQXVkaW9H
YWluOjpjcmVhdGUoImNvbmVHYWluIiwgMS4wLCAwLjAsIDEuMCk7CiAKLSAgICBtX3Bvc2l0aW9u
ID0gVmVjdG9yMygwLCAwLCAwKTsKLSAgICBtX29yaWVudGF0aW9uID0gVmVjdG9yMygxLCAwLCAw
KTsKLSAgICBtX3ZlbG9jaXR5ID0gVmVjdG9yMygwLCAwLCAwKTsKKyAgICBtX3Bvc2l0aW9uID0g
RmxvYXRQb2ludDNEKDAsIDAsIDApOworICAgIG1fb3JpZW50YXRpb24gPSBGbG9hdFBvaW50M0Qo
MSwgMCwgMCk7CisgICAgbV92ZWxvY2l0eSA9IEZsb2F0UG9pbnQzRCgwLCAwLCAwKTsKICAgICAK
ICAgICBzZXRUeXBlKE5vZGVUeXBlUGFubmVyKTsKIApAQCAtMTY1LDggKzE2NSw4IEBAIHZvaWQg
QXVkaW9QYW5uZXJOb2RlOjpnZXRBemltdXRoRWxldmF0aW8KICAgICBkb3VibGUgYXppbXV0aCA9
IDAuMDsKIAogICAgIC8vIENhbGN1bGF0ZSB0aGUgc291cmNlLWxpc3RlbmVyIHZlY3RvcgotICAg
IFZlY3RvcjMgbGlzdGVuZXJQb3NpdGlvbiA9IGxpc3RlbmVyKCktPnBvc2l0aW9uKCk7Ci0gICAg
VmVjdG9yMyBzb3VyY2VMaXN0ZW5lciA9IG1fcG9zaXRpb24gLSBsaXN0ZW5lclBvc2l0aW9uOwor
ICAgIEZsb2F0UG9pbnQzRCBsaXN0ZW5lclBvc2l0aW9uID0gbGlzdGVuZXIoKS0+cG9zaXRpb24o
KTsKKyAgICBGbG9hdFBvaW50M0Qgc291cmNlTGlzdGVuZXIgPSBtX3Bvc2l0aW9uIC0gbGlzdGVu
ZXJQb3NpdGlvbjsKIAogICAgIGlmIChzb3VyY2VMaXN0ZW5lci5pc1plcm8oKSkgewogICAgICAg
ICAvLyBkZWdlbmVyYXRlIGNhc2UgaWYgc291cmNlIGFuZCBsaXN0ZW5lciBhcmUgYXQgdGhlIHNh
bWUgcG9pbnQKQEAgLTE3OCwyNiArMTc4LDI2IEBAIHZvaWQgQXVkaW9QYW5uZXJOb2RlOjpnZXRB
emltdXRoRWxldmF0aW8KICAgICBzb3VyY2VMaXN0ZW5lci5ub3JtYWxpemUoKTsKIAogICAgIC8v
IEFsaWduIGF4ZXMKLSAgICBWZWN0b3IzIGxpc3RlbmVyRnJvbnQgPSBsaXN0ZW5lcigpLT5vcmll
bnRhdGlvbigpOwotICAgIFZlY3RvcjMgbGlzdGVuZXJVcCA9IGxpc3RlbmVyKCktPnVwVmVjdG9y
KCk7Ci0gICAgVmVjdG9yMyBsaXN0ZW5lclJpZ2h0ID0gY3Jvc3MobGlzdGVuZXJGcm9udCwgbGlz
dGVuZXJVcCk7CisgICAgRmxvYXRQb2ludDNEIGxpc3RlbmVyRnJvbnQgPSBsaXN0ZW5lcigpLT5v
cmllbnRhdGlvbigpOworICAgIEZsb2F0UG9pbnQzRCBsaXN0ZW5lclVwID0gbGlzdGVuZXIoKS0+
dXBWZWN0b3IoKTsKKyAgICBGbG9hdFBvaW50M0QgbGlzdGVuZXJSaWdodCA9IGxpc3RlbmVyRnJv
bnQuY3Jvc3MobGlzdGVuZXJVcCk7CiAgICAgbGlzdGVuZXJSaWdodC5ub3JtYWxpemUoKTsKIAot
ICAgIFZlY3RvcjMgbGlzdGVuZXJGcm9udE5vcm0gPSBsaXN0ZW5lckZyb250OworICAgIEZsb2F0
UG9pbnQzRCBsaXN0ZW5lckZyb250Tm9ybSA9IGxpc3RlbmVyRnJvbnQ7CiAgICAgbGlzdGVuZXJG
cm9udE5vcm0ubm9ybWFsaXplKCk7CiAKLSAgICBWZWN0b3IzIHVwID0gY3Jvc3MobGlzdGVuZXJS
aWdodCwgbGlzdGVuZXJGcm9udE5vcm0pOworICAgIEZsb2F0UG9pbnQzRCB1cCA9IGxpc3RlbmVy
UmlnaHQuY3Jvc3MobGlzdGVuZXJGcm9udE5vcm0pOwogCi0gICAgZG91YmxlIHVwUHJvamVjdGlv
biA9IGRvdChzb3VyY2VMaXN0ZW5lciwgdXApOworICAgIGRvdWJsZSB1cFByb2plY3Rpb24gPSBz
b3VyY2VMaXN0ZW5lci5kb3QodXApOwogCi0gICAgVmVjdG9yMyBwcm9qZWN0ZWRTb3VyY2UgPSBz
b3VyY2VMaXN0ZW5lciAtIHVwUHJvamVjdGlvbiAqIHVwOworICAgIEZsb2F0UG9pbnQzRCBwcm9q
ZWN0ZWRTb3VyY2UgPSBzb3VyY2VMaXN0ZW5lciAtIHVwUHJvamVjdGlvbiAqIHVwOwogICAgIHBy
b2plY3RlZFNvdXJjZS5ub3JtYWxpemUoKTsKIAotICAgIGF6aW11dGggPSAxODAuMCAqIGFjb3Mo
ZG90KHByb2plY3RlZFNvdXJjZSwgbGlzdGVuZXJSaWdodCkpIC8gTV9QSTsKKyAgICBhemltdXRo
ID0gMTgwLjAgKiBhY29zKHByb2plY3RlZFNvdXJjZS5kb3QobGlzdGVuZXJSaWdodCkpIC8gTV9Q
STsKICAgICBmaXhOQU5zKGF6aW11dGgpOyAvLyBhdm9pZCBpbGxlZ2FsIHZhbHVlcwogCiAgICAg
Ly8gU291cmNlICBpbiBmcm9udCBvciBiZWhpbmQgdGhlIGxpc3RlbmVyCi0gICAgZG91YmxlIGZy
b250QmFjayA9IGRvdChwcm9qZWN0ZWRTb3VyY2UsIGxpc3RlbmVyRnJvbnROb3JtKTsKKyAgICBk
b3VibGUgZnJvbnRCYWNrID0gcHJvamVjdGVkU291cmNlLmRvdChsaXN0ZW5lckZyb250Tm9ybSk7
CiAgICAgaWYgKGZyb250QmFjayA8IDAuMCkKICAgICAgICAgYXppbXV0aCA9IDM2MC4wIC0gYXpp
bXV0aDsKIApAQCAtMjA4LDcgKzIwOCw3IEBAIHZvaWQgQXVkaW9QYW5uZXJOb2RlOjpnZXRBemlt
dXRoRWxldmF0aW8KICAgICAgICAgYXppbXV0aCA9IDQ1MC4wIC0gYXppbXV0aDsKIAogICAgIC8v
IEVsZXZhdGlvbgotICAgIGRvdWJsZSBlbGV2YXRpb24gPSA5MC4wIC0gMTgwLjAgKiBhY29zKGRv
dChzb3VyY2VMaXN0ZW5lciwgdXApKSAvIE1fUEk7CisgICAgZG91YmxlIGVsZXZhdGlvbiA9IDkw
LjAgLSAxODAuMCAqIGFjb3Moc291cmNlTGlzdGVuZXIuZG90KHVwKSkgLyBNX1BJOwogICAgIGZp
eE5BTnMoYXppbXV0aCk7IC8vIGF2b2lkIGlsbGVnYWwgdmFsdWVzCiAKICAgICBpZiAoZWxldmF0
aW9uID4gOTAuMCkKQEAgLTIzMiw4ICsyMzIsOCBAQCBmbG9hdCBBdWRpb1Bhbm5lck5vZGU6OmRv
cHBsZXJSYXRlKCkKICAgICBpZiAoZG9wcGxlckZhY3RvciA+IDAuMCkgewogICAgICAgICBkb3Vi
bGUgc3BlZWRPZlNvdW5kID0gbGlzdGVuZXIoKS0+c3BlZWRPZlNvdW5kKCk7CiAKLSAgICAgICAg
Y29uc3QgVmVjdG9yMyAmc291cmNlVmVsb2NpdHkgPSBtX3ZlbG9jaXR5OwotICAgICAgICBjb25z
dCBWZWN0b3IzICZsaXN0ZW5lclZlbG9jaXR5ID0gbGlzdGVuZXIoKS0+dmVsb2NpdHkoKTsKKyAg
ICAgICAgY29uc3QgRmxvYXRQb2ludDNEICZzb3VyY2VWZWxvY2l0eSA9IG1fdmVsb2NpdHk7Cisg
ICAgICAgIGNvbnN0IEZsb2F0UG9pbnQzRCAmbGlzdGVuZXJWZWxvY2l0eSA9IGxpc3RlbmVyKCkt
PnZlbG9jaXR5KCk7CiAKICAgICAgICAgLy8gRG9uJ3QgYm90aGVyIGlmIGJvdGggc291cmNlIGFu
ZCBsaXN0ZW5lciBoYXZlIG5vIHZlbG9jaXR5CiAgICAgICAgIGJvb2wgc291cmNlSGFzVmVsb2Np
dHkgPSAhc291cmNlVmVsb2NpdHkuaXNaZXJvKCk7CkBAIC0yNDEsMTMgKzI0MSwxMyBAQCBmbG9h
dCBBdWRpb1Bhbm5lck5vZGU6OmRvcHBsZXJSYXRlKCkKIAogICAgICAgICBpZiAoc291cmNlSGFz
VmVsb2NpdHkgfHwgbGlzdGVuZXJIYXNWZWxvY2l0eSkgewogICAgICAgICAgICAgLy8gQ2FsY3Vs
YXRlIHRoZSBzb3VyY2UgdG8gbGlzdGVuZXIgdmVjdG9yCi0gICAgICAgICAgICBWZWN0b3IzIGxp
c3RlbmVyUG9zaXRpb24gPSBsaXN0ZW5lcigpLT5wb3NpdGlvbigpOwotICAgICAgICAgICAgVmVj
dG9yMyBzb3VyY2VUb0xpc3RlbmVyID0gbV9wb3NpdGlvbiAtIGxpc3RlbmVyUG9zaXRpb247Cisg
ICAgICAgICAgICBGbG9hdFBvaW50M0QgbGlzdGVuZXJQb3NpdGlvbiA9IGxpc3RlbmVyKCktPnBv
c2l0aW9uKCk7CisgICAgICAgICAgICBGbG9hdFBvaW50M0Qgc291cmNlVG9MaXN0ZW5lciA9IG1f
cG9zaXRpb24gLSBsaXN0ZW5lclBvc2l0aW9uOwogCi0gICAgICAgICAgICBkb3VibGUgc291cmNl
TGlzdGVuZXJNYWduaXR1ZGUgPSBzb3VyY2VUb0xpc3RlbmVyLmFicygpOworICAgICAgICAgICAg
ZG91YmxlIHNvdXJjZUxpc3RlbmVyTWFnbml0dWRlID0gc291cmNlVG9MaXN0ZW5lci5sZW5ndGgo
KTsKIAotICAgICAgICAgICAgZG91YmxlIGxpc3RlbmVyUHJvamVjdGlvbiA9IGRvdChzb3VyY2VU
b0xpc3RlbmVyLCBsaXN0ZW5lclZlbG9jaXR5KSAvIHNvdXJjZUxpc3RlbmVyTWFnbml0dWRlOwot
ICAgICAgICAgICAgZG91YmxlIHNvdXJjZVByb2plY3Rpb24gPSBkb3Qoc291cmNlVG9MaXN0ZW5l
ciwgc291cmNlVmVsb2NpdHkpIC8gc291cmNlTGlzdGVuZXJNYWduaXR1ZGU7CisgICAgICAgICAg
ICBkb3VibGUgbGlzdGVuZXJQcm9qZWN0aW9uID0gc291cmNlVG9MaXN0ZW5lci5kb3QobGlzdGVu
ZXJWZWxvY2l0eSkgLyBzb3VyY2VMaXN0ZW5lck1hZ25pdHVkZTsKKyAgICAgICAgICAgIGRvdWJs
ZSBzb3VyY2VQcm9qZWN0aW9uID0gc291cmNlVG9MaXN0ZW5lci5kb3Qoc291cmNlVmVsb2NpdHkp
IC8gc291cmNlTGlzdGVuZXJNYWduaXR1ZGU7CiAKICAgICAgICAgICAgIGxpc3RlbmVyUHJvamVj
dGlvbiA9IC1saXN0ZW5lclByb2plY3Rpb247CiAgICAgICAgICAgICBzb3VyY2VQcm9qZWN0aW9u
ID0gLXNvdXJjZVByb2plY3Rpb247CkBAIC0yNzIsNyArMjcyLDcgQEAgZmxvYXQgQXVkaW9QYW5u
ZXJOb2RlOjpkb3BwbGVyUmF0ZSgpCiAKIGZsb2F0IEF1ZGlvUGFubmVyTm9kZTo6ZGlzdGFuY2VD
b25lR2FpbigpCiB7Ci0gICAgVmVjdG9yMyBsaXN0ZW5lclBvc2l0aW9uID0gbGlzdGVuZXIoKS0+
cG9zaXRpb24oKTsKKyAgICBGbG9hdFBvaW50M0QgbGlzdGVuZXJQb3NpdGlvbiA9IGxpc3RlbmVy
KCktPnBvc2l0aW9uKCk7CiAKICAgICBkb3VibGUgbGlzdGVuZXJEaXN0YW5jZSA9IGRpc3RhbmNl
KG1fcG9zaXRpb24sIGxpc3RlbmVyUG9zaXRpb24pOwogICAgIGRvdWJsZSBkaXN0YW5jZUdhaW4g
PSBtX2Rpc3RhbmNlRWZmZWN0LmdhaW4obGlzdGVuZXJEaXN0YW5jZSk7CkluZGV4OiBXZWJDb3Jl
L3dlYmF1ZGlvL0F1ZGlvUGFubmVyTm9kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvd2ViYXVk
aW8vQXVkaW9QYW5uZXJOb2RlLmgJKHJldmlzaW9uIDcyNjk0KQorKysgV2ViQ29yZS93ZWJhdWRp
by9BdWRpb1Bhbm5lck5vZGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzEsOSArMzEsOSBAQAogI2lu
Y2x1ZGUgIkF1ZGlvTm9kZS5oIgogI2luY2x1ZGUgIkNvbmUuaCIKICNpbmNsdWRlICJEaXN0YW5j
ZS5oIgorI2luY2x1ZGUgIkZsb2F0UG9pbnQzRC5oIgogI2luY2x1ZGUgIlBhbm5lci5oIgogI2lu
Y2x1ZGUgPHd0Zi9Pd25QdHIuaD4KLSNpbmNsdWRlIDx3dGYvVmVjdG9yMy5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKQEAgLTc1LDE2ICs3NSwxNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRQ
YW5uaW5nTW9kZWwodW5zaWduZWQgc2hvcnQpOwogCiAgICAgLy8gUG9zaXRpb24KLSAgICBWZWN0
b3IzIHBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9wb3NpdGlvbjsgfQotICAgIHZvaWQgc2V0
UG9zaXRpb24oZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgeikgeyBtX3Bvc2l0aW9uID0gVmVjdG9y
Myh4LCB5LCB6KTsgfQorICAgIEZsb2F0UG9pbnQzRCBwb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJu
IG1fcG9zaXRpb247IH0KKyAgICB2b2lkIHNldFBvc2l0aW9uKGZsb2F0IHgsIGZsb2F0IHksIGZs
b2F0IHopIHsgbV9wb3NpdGlvbiA9IEZsb2F0UG9pbnQzRCh4LCB5LCB6KTsgfQogCiAgICAgLy8g
T3JpZW50YXRpb24KLSAgICBWZWN0b3IzIG9yaWVudGF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9w
b3NpdGlvbjsgfQotICAgIHZvaWQgc2V0T3JpZW50YXRpb24oZmxvYXQgeCwgZmxvYXQgeSwgZmxv
YXQgeikgeyBtX29yaWVudGF0aW9uID0gVmVjdG9yMyh4LCB5LCB6KTsgfQorICAgIEZsb2F0UG9p
bnQzRCBvcmllbnRhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fcG9zaXRpb247IH0KKyAgICB2b2lk
IHNldE9yaWVudGF0aW9uKGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHopIHsgbV9vcmllbnRhdGlv
biA9IEZsb2F0UG9pbnQzRCh4LCB5LCB6KTsgfQogCiAgICAgLy8gVmVsb2NpdHkKLSAgICBWZWN0
b3IzIHZlbG9jaXR5KCkgY29uc3QgeyByZXR1cm4gbV92ZWxvY2l0eTsgfQotICAgIHZvaWQgc2V0
VmVsb2NpdHkoZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgeikgeyBtX3ZlbG9jaXR5ID0gVmVjdG9y
Myh4LCB5LCB6KTsgfQorICAgIEZsb2F0UG9pbnQzRCB2ZWxvY2l0eSgpIGNvbnN0IHsgcmV0dXJu
IG1fdmVsb2NpdHk7IH0KKyAgICB2b2lkIHNldFZlbG9jaXR5KGZsb2F0IHgsIGZsb2F0IHksIGZs
b2F0IHopIHsgbV92ZWxvY2l0eSA9IEZsb2F0UG9pbnQzRCh4LCB5LCB6KTsgfQogCiAgICAgLy8g
RGlzdGFuY2UgcGFyYW1ldGVycwogICAgIHVuc2lnbmVkIHNob3J0IGRpc3RhbmNlTW9kZWwoKSB7
IHJldHVybiBtX2Rpc3RhbmNlRWZmZWN0Lm1vZGVsKCk7IH0KQEAgLTEyOSwxMCArMTI5LDkgQEAg
cHJpdmF0ZToKICAgICBPd25QdHI8UGFubmVyPiBtX3Bhbm5lcjsKICAgICB1bnNpZ25lZCBtX3Bh
bm5pbmdNb2RlbDsKIAotICAgIC8vIEZJWE1FOiB1cGdyYWRlIHRvIEZsb2F0UG9pbnQzRCBmcm9t
IFZlY3RvcjMuCi0gICAgVmVjdG9yMyBtX3Bvc2l0aW9uOwotICAgIFZlY3RvcjMgbV9vcmllbnRh
dGlvbjsKLSAgICBWZWN0b3IzIG1fdmVsb2NpdHk7CisgICAgRmxvYXRQb2ludDNEIG1fcG9zaXRp
b247CisgICAgRmxvYXRQb2ludDNEIG1fb3JpZW50YXRpb247CisgICAgRmxvYXRQb2ludDNEIG1f
dmVsb2NpdHk7CiAKICAgICAvLyBHYWluCiAgICAgUmVmUHRyPEF1ZGlvR2Fpbj4gbV9kaXN0YW5j
ZUdhaW47Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>75077</attachid>
            <date>2010-11-29 16:13:14 -0800</date>
            <delta_ts>2010-11-29 17:04:22 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-50186-20101129161313.patch</filename>
            <type>text/plain</type>
            <size>19583</size>
            <attacher name="Chris Rogers">crogers</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDcyODQ1KQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTAtMTEtMjkgIENocmlzIFJv
Z2VycyAgPGNyb2dlcnNAZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBTd2l0Y2ggd2ViIGF1ZGlvIGNvZGUgdG8gdXNlIEZsb2F0UG9p
bnQzRCBpbnN0ZWFkIG9mIFZlY3RvcjMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTUwMTg2CisKKyAgICAgICAgKiB3dGYvVmVjdG9yMy5oOiBSZW1vdmVk
LgorCiAyMDEwLTExLTI5ICBHZW9mZnJleSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+CiAKICAg
ICAgICAgUmV2aWV3ZWQgYnkgR2F2aW4gQmFycmFjbG91Z2guCkluZGV4OiBKYXZhU2NyaXB0Q29y
ZS93dGYvVmVjdG9yMy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3d0Zi9WZWN0b3Iz
LmgJKHJldmlzaW9uIDcyNjk0KQorKysgSmF2YVNjcmlwdENvcmUvd3RmL1ZlY3RvcjMuaAkod29y
a2luZyBjb3B5KQpAQCAtMSwxMzggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
ICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICogMy4g
IE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0
aGUgbmFtZXMgb2YKLSAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCi0gKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElT
IiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgV1RGX1ZlY3RvcjNfaAotI2Rl
ZmluZSBXVEZfVmVjdG9yM19oCi0KLSNpbmNsdWRlIDxtYXRoLmg+Ci0KLW5hbWVzcGFjZSBXVEYg
ewotCi1jbGFzcyBWZWN0b3IzIHsKLXB1YmxpYzoKLSAgICBWZWN0b3IzKCkKLSAgICAgICAgOiBt
X3goMC4wKQotICAgICAgICAsIG1feSgwLjApCi0gICAgICAgICwgbV96KDAuMCkKLSAgICB7Ci0g
ICAgfQotCi0gICAgVmVjdG9yMyhkb3VibGUgeCwgZG91YmxlIHksIGRvdWJsZSB6KQotICAgICAg
ICA6IG1feCh4KQotICAgICAgICAsIG1feSh5KQotICAgICAgICAsIG1feih6KQotICAgIHsKLSAg
ICB9Ci0KLSAgICBWZWN0b3IzKGNvbnN0IGZsb2F0IHBbM10pCi0gICAgICAgIDogbV94KHBbMF0p
Ci0gICAgICAgICwgbV95KHBbMV0pCi0gICAgICAgICwgbV96KHBbMl0pCi0gICAgewotICAgIH0K
LQotICAgIFZlY3RvcjMoY29uc3QgZG91YmxlIHBbM10pCi0gICAgICAgIDogbV94KHBbMF0pCi0g
ICAgICAgICwgbV95KHBbMV0pCi0gICAgICAgICwgbV96KHBbMl0pCi0gICAgewotICAgIH0KLQot
ICAgIGRvdWJsZSBhYnMoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIHNxcnQobV94ICog
bV94ICsgbV95ICogbV95ICsgbV96ICogbV96KTsKLSAgICB9Ci0KLSAgICBib29sIGlzWmVybygp
IGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gIW1feCAmJiAhbV95ICYmICFtX3o7Ci0gICAg
fQotCi0gICAgdm9pZCBub3JtYWxpemUoKQotICAgIHsKLSAgICAgICAgZG91YmxlIGFic1ZhbHVl
ID0gYWJzKCk7Ci0gICAgICAgIGlmICghYWJzVmFsdWUpCi0gICAgICAgICAgICByZXR1cm47Ci0K
LSAgICAgICAgZG91YmxlIGsgPSAxLjAgLyBhYnNWYWx1ZTsKLSAgICAgICAgbV94ICo9IGs7Ci0g
ICAgICAgIG1feSAqPSBrOwotICAgICAgICBtX3ogKj0gazsKLSAgICB9Ci0KLSAgICBkb3VibGUg
eCgpIGNvbnN0IHsgcmV0dXJuIG1feDsgfQotICAgIGRvdWJsZSB5KCkgY29uc3QgeyByZXR1cm4g
bV95OyB9Ci0gICAgZG91YmxlIHooKSBjb25zdCB7IHJldHVybiBtX3o7IH0KLQotcHJpdmF0ZToK
LSAgICBkb3VibGUgbV94OwotICAgIGRvdWJsZSBtX3k7Ci0gICAgZG91YmxlIG1fejsKLX07Ci0K
LWlubGluZSBWZWN0b3IzIG9wZXJhdG9yKyhjb25zdCBWZWN0b3IzJiB2MSwgY29uc3QgVmVjdG9y
MyYgdjIpCi17Ci0gICAgcmV0dXJuIFZlY3RvcjModjEueCgpICsgdjIueCgpLCB2MS55KCkgKyB2
Mi55KCksIHYxLnooKSArIHYyLnooKSk7Ci19Ci0KLWlubGluZSBWZWN0b3IzIG9wZXJhdG9yLShj
b25zdCBWZWN0b3IzJiB2MSwgY29uc3QgVmVjdG9yMyYgdjIpCi17Ci0gICAgcmV0dXJuIFZlY3Rv
cjModjEueCgpIC0gdjIueCgpLCB2MS55KCkgLSB2Mi55KCksIHYxLnooKSAtIHYyLnooKSk7Ci19
Ci0KLWlubGluZSBWZWN0b3IzIG9wZXJhdG9yKihkb3VibGUgaywgY29uc3QgVmVjdG9yMyYgdikK
LXsKLSAgICByZXR1cm4gVmVjdG9yMyhrICogdi54KCksIGsgKiB2LnkoKSwgayAqIHYueigpKTsK
LX0KLQotaW5saW5lIFZlY3RvcjMgb3BlcmF0b3IqKGNvbnN0IFZlY3RvcjMmIHYsIGRvdWJsZSBr
KQotewotICAgIHJldHVybiBWZWN0b3IzKGsgKiB2LngoKSwgayAqIHYueSgpLCBrICogdi56KCkp
OwotfQotCi1pbmxpbmUgZG91YmxlIGRvdChjb25zdCBWZWN0b3IzJiB2MSwgY29uc3QgVmVjdG9y
MyYgdjIpCi17Ci0gICAgcmV0dXJuIHYxLngoKSAqIHYyLngoKSArIHYxLnkoKSAqIHYyLnkoKSAr
IHYxLnooKSAqIHYyLnooKTsKLX0KLQotaW5saW5lIFZlY3RvcjMgY3Jvc3MoY29uc3QgVmVjdG9y
MyYgdjEsIGNvbnN0IFZlY3RvcjMmIHYyKQotewotICAgIGRvdWJsZSB4MyA9IHYxLnkoKSAqIHYy
LnooKSAtIHYxLnooKSAqIHYyLnkoKTsKLSAgICBkb3VibGUgeTMgPSB2MS56KCkgKiB2Mi54KCkg
LSB2MS54KCkgKiB2Mi56KCk7Ci0gICAgZG91YmxlIHozID0gdjEueCgpICogdjIueSgpIC0gdjEu
eSgpICogdjIueCgpOwotICAgIHJldHVybiBWZWN0b3IzKHgzLCB5MywgejMpOwotfQotCi1pbmxp
bmUgZG91YmxlIGRpc3RhbmNlKGNvbnN0IFZlY3RvcjMmIHYxLCBjb25zdCBWZWN0b3IzJiB2MikK
LXsKLSAgICByZXR1cm4gKHYxIC0gdjIpLmFicygpOwotfQotCi19IC8vIFdURgotCi0jZW5kaWYg
Ly8gV1RGX1ZlY3RvcjNfaApJbmRleDogV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDcyODQ1KQorKysgV2ViQ29yZS9DaGFuZ2VMb2cJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw0MSBAQAorMjAxMC0xMS0yOSAgQ2hyaXMgUm9nZXJz
ICA8Y3JvZ2Vyc0Bnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFN3aXRjaCB3ZWIgYXVkaW8gY29kZSB0byB1c2UgRmxvYXRQb2ludDNE
IGluc3RlYWQgb2YgVmVjdG9yMworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NTAxODYKKworICAgICAgICBObyBuZXcgdGVzdHMgc2luY2UgYXVkaW8gQVBJ
IGlzIG5vdCB5ZXQgaW1wbGVtZW50ZWQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9Db25l
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbmVFZmZlY3Q6OmdhaW4pOgorICAgICAgICAqIHBs
YXRmb3JtL2F1ZGlvL0NvbmUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFBv
aW50M0QuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZsb2F0UG9pbnQzRDo6aXNaZXJvKToKKyAgICAg
ICAgKFdlYkNvcmU6Om9wZXJhdG9yKik6CisgICAgICAgIChXZWJDb3JlOjpGbG9hdFBvaW50M0Q6
OmRpc3RhbmNlVG8pOgorICAgICAgICAqIHdlYmF1ZGlvL0F1ZGlvTGlzdGVuZXIuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkF1ZGlvTGlzdGVuZXI6OnNldFBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OkF1ZGlvTGlzdGVuZXI6OnBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvTGlz
dGVuZXI6OnNldE9yaWVudGF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvTGlzdGVuZXI6
Om9yaWVudGF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvTGlzdGVuZXI6OnNldFVwVmVj
dG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvTGlzdGVuZXI6OnVwVmVjdG9yKToKKyAgICAg
ICAgKFdlYkNvcmU6OkF1ZGlvTGlzdGVuZXI6OnNldFZlbG9jaXR5KToKKyAgICAgICAgKFdlYkNv
cmU6OkF1ZGlvTGlzdGVuZXI6OnZlbG9jaXR5KToKKyAgICAgICAgKiB3ZWJhdWRpby9BdWRpb1Bh
bm5lck5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9QYW5uZXJOb2RlOjpBdWRpb1Bh
bm5lck5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9QYW5uZXJOb2RlOjpnZXRBemltdXRo
RWxldmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvUGFubmVyTm9kZTo6ZG9wcGxlclJh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9QYW5uZXJOb2RlOjpkaXN0YW5jZUNvbmVHYWlu
KToKKyAgICAgICAgKiB3ZWJhdWRpby9BdWRpb1Bhbm5lck5vZGUuaDoKKyAgICAgICAgKFdlYkNv
cmU6OkF1ZGlvUGFubmVyTm9kZTo6cG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Q
YW5uZXJOb2RlOjpzZXRQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Bhbm5lck5v
ZGU6Om9yaWVudGF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvUGFubmVyTm9kZTo6c2V0
T3JpZW50YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9QYW5uZXJOb2RlOjp2ZWxvY2l0
eSk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Bhbm5lck5vZGU6OnNldFZlbG9jaXR5KToKKwog
MjAxMC0xMS0yOSAgTWlraGFpbCBOYWdhbm92ICA8bW5hZ2Fub3ZAY2hyb21pdW0ub3JnPgogCiAg
ICAgICAgIFJldmlld2VkIGJ5IFBhdmVsIEZlbGRtYW4uCkluZGV4OiBXZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL0NvbmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQ29u
ZS5jcHAJKHJldmlzaW9uIDcyNjk0KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9Db25lLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNDEsMjAgKzQxLDIwIEBAIENvbmVFZmZlY3Q6OkNvbmVFZmZl
Y3QoKQogewogfQogCi1kb3VibGUgQ29uZUVmZmVjdDo6Z2FpbihWZWN0b3IzIHNvdXJjZVBvc2l0
aW9uLCBWZWN0b3IzIHNvdXJjZU9yaWVudGF0aW9uLCBWZWN0b3IzIGxpc3RlbmVyUG9zaXRpb24p
Citkb3VibGUgQ29uZUVmZmVjdDo6Z2FpbihGbG9hdFBvaW50M0Qgc291cmNlUG9zaXRpb24sIEZs
b2F0UG9pbnQzRCBzb3VyY2VPcmllbnRhdGlvbiwgRmxvYXRQb2ludDNEIGxpc3RlbmVyUG9zaXRp
b24pCiB7CiAgICAgaWYgKHNvdXJjZU9yaWVudGF0aW9uLmlzWmVybygpIHx8ICgobV9pbm5lckFu
Z2xlID09IDM2MC4wKSAmJiAobV9vdXRlckFuZ2xlID09IDM2MC4wKSkpCiAgICAgICAgIHJldHVy
biAxLjA7IC8vIG5vIGNvbmUgc3BlY2lmaWVkIC0gdW5pdHkgZ2FpbgogCiAgICAgLy8gTm9ybWFs
aXplZCBzb3VyY2UtbGlzdGVuZXIgdmVjdG9yCi0gICAgVmVjdG9yMyBzb3VyY2VUb0xpc3RlbmVy
ID0gbGlzdGVuZXJQb3NpdGlvbiAtIHNvdXJjZVBvc2l0aW9uOworICAgIEZsb2F0UG9pbnQzRCBz
b3VyY2VUb0xpc3RlbmVyID0gbGlzdGVuZXJQb3NpdGlvbiAtIHNvdXJjZVBvc2l0aW9uOwogICAg
IHNvdXJjZVRvTGlzdGVuZXIubm9ybWFsaXplKCk7CiAKLSAgICBWZWN0b3IzIG5vcm1hbGl6ZWRT
b3VyY2VPcmllbnRhdGlvbiA9IHNvdXJjZU9yaWVudGF0aW9uOworICAgIEZsb2F0UG9pbnQzRCBu
b3JtYWxpemVkU291cmNlT3JpZW50YXRpb24gPSBzb3VyY2VPcmllbnRhdGlvbjsKICAgICBub3Jt
YWxpemVkU291cmNlT3JpZW50YXRpb24ubm9ybWFsaXplKCk7CiAKICAgICAvLyBBbmdsZSBiZXR3
ZWVuIHRoZSBzb3VyY2Ugb3JpZW50YXRpb24gdmVjdG9yIGFuZCB0aGUgc291cmNlLWxpc3RlbmVy
IHZlY3RvcgotICAgIGRvdWJsZSBkb3RQcm9kdWN0ID0gZG90KHNvdXJjZVRvTGlzdGVuZXIsIG5v
cm1hbGl6ZWRTb3VyY2VPcmllbnRhdGlvbik7CisgICAgZG91YmxlIGRvdFByb2R1Y3QgPSBzb3Vy
Y2VUb0xpc3RlbmVyLmRvdChub3JtYWxpemVkU291cmNlT3JpZW50YXRpb24pOwogICAgIGRvdWJs
ZSBhbmdsZSA9IDE4MC4wICogYWNvcyhkb3RQcm9kdWN0KSAvIE1fUEk7CiAgICAgZG91YmxlIGFi
c0FuZ2xlID0gZmFicyhhbmdsZSk7CiAKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQ29u
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQ29uZS5oCShyZXZpc2lv
biA3MjY5NCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQ29uZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0yOSw3ICsyOSw3IEBACiAjaWZuZGVmIENvbmVfaAogI2RlZmluZSBDb25lX2gKIAotI2lu
Y2x1ZGUgPHd0Zi9WZWN0b3IzLmg+CisjaW5jbHVkZSAiRmxvYXRQb2ludDNELmgiCiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIApAQCAtNDAsNyArNDAsNyBAQCBwdWJsaWM6CiAgICAgQ29uZUVmZmVj
dCgpOwogCiAgICAgLy8gUmV0dXJucyBzY2FsYXIgZ2FpbiBmb3IgdGhlIGdpdmVuIHNvdXJjZS9s
aXN0ZW5lciBwb3NpdGlvbnMvb3JpZW50YXRpb25zCi0gICAgZG91YmxlIGdhaW4oVmVjdG9yMyBz
b3VyY2VQb3NpdGlvbiwgVmVjdG9yMyBzb3VyY2VPcmllbnRhdGlvbiwgVmVjdG9yMyBsaXN0ZW5l
clBvc2l0aW9uKTsKKyAgICBkb3VibGUgZ2FpbihGbG9hdFBvaW50M0Qgc291cmNlUG9zaXRpb24s
IEZsb2F0UG9pbnQzRCBzb3VyY2VPcmllbnRhdGlvbiwgRmxvYXRQb2ludDNEIGxpc3RlbmVyUG9z
aXRpb24pOwogCiAgICAgLy8gQW5nbGVzIGluIGRlZ3JlZXMKICAgICB2b2lkIHNldElubmVyQW5n
bGUoZG91YmxlIGlubmVyQW5nbGUpIHsgbV9pbm5lckFuZ2xlID0gaW5uZXJBbmdsZTsgfQpJbmRl
eDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFBvaW50M0QuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0UG9pbnQzRC5oCShyZXZpc2lvbiA3MjY5
NCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRQb2ludDNELmgJKHdvcmtpbmcg
Y29weSkKQEAgLTg0LDYgKzg0LDExIEBAIHB1YmxpYzoKICAgICAgICAgbV96ICo9IHN6OwogICAg
IH0KIAorICAgIGJvb2wgaXNaZXJvKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiAhbV94
ICYmICFtX3kgJiYgIW1fejsKKyAgICB9CisKICAgICB2b2lkIG5vcm1hbGl6ZSgpOwogCiAgICAg
ZmxvYXQgZG90KGNvbnN0IEZsb2F0UG9pbnQzRCYgYSkgY29uc3QKQEAgLTExNSw2ICsxMjAsOCBA
QCBwdWJsaWM6CiAKICAgICBmbG9hdCBsZW5ndGhTcXVhcmVkKCkgY29uc3QgeyByZXR1cm4gdGhp
cy0+ZG90KCp0aGlzKTsgfQogICAgIGZsb2F0IGxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIHNxcnRm
KGxlbmd0aFNxdWFyZWQoKSk7IH0KKyAgICAKKyAgICBmbG9hdCBkaXN0YW5jZVRvKGNvbnN0IEZs
b2F0UG9pbnQzRCYgYSkgY29uc3Q7CiAKIHByaXZhdGU6CiAgICAgZmxvYXQgbV94OwpAQCAtMTYw
LDYgKzE2NywyMSBAQCBpbmxpbmUgZmxvYXQgb3BlcmF0b3IqKGNvbnN0IEZsb2F0UG9pbnQzCiAg
ICAgcmV0dXJuIGEuZG90KGIpOwogfQogCitpbmxpbmUgRmxvYXRQb2ludDNEIG9wZXJhdG9yKihm
bG9hdCBrLCBjb25zdCBGbG9hdFBvaW50M0QmIHYpCit7CisgICAgcmV0dXJuIEZsb2F0UG9pbnQz
RChrICogdi54KCksIGsgKiB2LnkoKSwgayAqIHYueigpKTsKK30KKworaW5saW5lIEZsb2F0UG9p
bnQzRCBvcGVyYXRvciooY29uc3QgRmxvYXRQb2ludDNEJiB2LCBmbG9hdCBrKQoreworICAgIHJl
dHVybiBGbG9hdFBvaW50M0QoayAqIHYueCgpLCBrICogdi55KCksIGsgKiB2LnooKSk7Cit9CisK
K2lubGluZSBmbG9hdCBGbG9hdFBvaW50M0Q6OmRpc3RhbmNlVG8oY29uc3QgRmxvYXRQb2ludDNE
JiBhKSBjb25zdAoreworICAgIHJldHVybiAoKnRoaXMgLSBhKS5sZW5ndGgoKTsKK30KKwogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRmxvYXRQb2ludDNEX2gKSW5kZXg6IFdl
YkNvcmUvd2ViYXVkaW8vQXVkaW9MaXN0ZW5lci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvd2Vi
YXVkaW8vQXVkaW9MaXN0ZW5lci5oCShyZXZpc2lvbiA3MjY5NCkKKysrIFdlYkNvcmUvd2ViYXVk
aW8vQXVkaW9MaXN0ZW5lci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw5ICsyOSw5IEBACiAjaWZu
ZGVmIEF1ZGlvTGlzdGVuZXJfaAogI2RlZmluZSBBdWRpb0xpc3RlbmVyX2gKIAorI2luY2x1ZGUg
IkZsb2F0UG9pbnQzRC5oIgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8
d3RmL1JlZkNvdW50ZWQuaD4KLSNpbmNsdWRlIDx3dGYvVmVjdG9yMy5oPgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKQEAgLTQ1LDI3ICs0NSwyNyBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgLy8g
UG9zaXRpb24KLSAgICB2b2lkIHNldFBvc2l0aW9uKGRvdWJsZSB4LCBkb3VibGUgeSwgZG91Ymxl
IHopIHsgc2V0UG9zaXRpb24oVmVjdG9yMyh4LCB5LCB6KSk7IH0KLSAgICB2b2lkIHNldFBvc2l0
aW9uKGNvbnN0IFZlY3RvcjMgJnBvc2l0aW9uKSB7IG1fcG9zaXRpb24gPSBwb3NpdGlvbjsgfQot
ICAgIGNvbnN0IFZlY3RvcjMmIHBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9wb3NpdGlvbjsg
fQorICAgIHZvaWQgc2V0UG9zaXRpb24oZG91YmxlIHgsIGRvdWJsZSB5LCBkb3VibGUgeikgeyBz
ZXRQb3NpdGlvbihGbG9hdFBvaW50M0QoeCwgeSwgeikpOyB9CisgICAgdm9pZCBzZXRQb3NpdGlv
bihjb25zdCBGbG9hdFBvaW50M0QgJnBvc2l0aW9uKSB7IG1fcG9zaXRpb24gPSBwb3NpdGlvbjsg
fQorICAgIGNvbnN0IEZsb2F0UG9pbnQzRCYgcG9zaXRpb24oKSBjb25zdCB7IHJldHVybiBtX3Bv
c2l0aW9uOyB9CiAKICAgICAvLyBPcmllbnRhdGlvbgogICAgIHZvaWQgc2V0T3JpZW50YXRpb24o
ZG91YmxlIHgsIGRvdWJsZSB5LCBkb3VibGUgeiwgZG91YmxlIHVwWCwgZG91YmxlIHVwWSwgZG91
YmxlIHVwWikKICAgICB7Ci0gICAgICAgIHNldE9yaWVudGF0aW9uKFZlY3RvcjMoeCwgeSwgeikp
OwotICAgICAgICBzZXRVcFZlY3RvcihWZWN0b3IzKHVwWCwgdXBZLCB1cFopKTsKKyAgICAgICAg
c2V0T3JpZW50YXRpb24oRmxvYXRQb2ludDNEKHgsIHksIHopKTsKKyAgICAgICAgc2V0VXBWZWN0
b3IoRmxvYXRQb2ludDNEKHVwWCwgdXBZLCB1cFopKTsKICAgICB9Ci0gICAgdm9pZCBzZXRPcmll
bnRhdGlvbihjb25zdCBWZWN0b3IzICZvcmllbnRhdGlvbikgeyBtX29yaWVudGF0aW9uID0gb3Jp
ZW50YXRpb247IH0KLSAgICBjb25zdCBWZWN0b3IzJiBvcmllbnRhdGlvbigpIGNvbnN0IHsgcmV0
dXJuIG1fb3JpZW50YXRpb247IH0KKyAgICB2b2lkIHNldE9yaWVudGF0aW9uKGNvbnN0IEZsb2F0
UG9pbnQzRCAmb3JpZW50YXRpb24pIHsgbV9vcmllbnRhdGlvbiA9IG9yaWVudGF0aW9uOyB9Cisg
ICAgY29uc3QgRmxvYXRQb2ludDNEJiBvcmllbnRhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fb3Jp
ZW50YXRpb247IH0KIAogICAgIC8vIFVwLXZlY3RvcgotICAgIHZvaWQgc2V0VXBWZWN0b3IoY29u
c3QgVmVjdG9yMyAmdXBWZWN0b3IpIHsgbV91cFZlY3RvciA9IHVwVmVjdG9yOyB9Ci0gICAgY29u
c3QgVmVjdG9yMyYgdXBWZWN0b3IoKSBjb25zdCB7IHJldHVybiBtX3VwVmVjdG9yOyB9CisgICAg
dm9pZCBzZXRVcFZlY3Rvcihjb25zdCBGbG9hdFBvaW50M0QgJnVwVmVjdG9yKSB7IG1fdXBWZWN0
b3IgPSB1cFZlY3RvcjsgfQorICAgIGNvbnN0IEZsb2F0UG9pbnQzRCYgdXBWZWN0b3IoKSBjb25z
dCB7IHJldHVybiBtX3VwVmVjdG9yOyB9CiAKICAgICAvLyBWZWxvY2l0eQotICAgIHZvaWQgc2V0
VmVsb2NpdHkoZG91YmxlIHgsIGRvdWJsZSB5LCBkb3VibGUgeikgeyBzZXRWZWxvY2l0eShWZWN0
b3IzKHgsIHksIHopKTsgfQotICAgIHZvaWQgc2V0VmVsb2NpdHkoY29uc3QgVmVjdG9yMyAmdmVs
b2NpdHkpIHsgbV92ZWxvY2l0eSA9IHZlbG9jaXR5OyB9Ci0gICAgY29uc3QgVmVjdG9yMyYgdmVs
b2NpdHkoKSBjb25zdCB7IHJldHVybiBtX3ZlbG9jaXR5OyB9CisgICAgdm9pZCBzZXRWZWxvY2l0
eShkb3VibGUgeCwgZG91YmxlIHksIGRvdWJsZSB6KSB7IHNldFZlbG9jaXR5KEZsb2F0UG9pbnQz
RCh4LCB5LCB6KSk7IH0KKyAgICB2b2lkIHNldFZlbG9jaXR5KGNvbnN0IEZsb2F0UG9pbnQzRCAm
dmVsb2NpdHkpIHsgbV92ZWxvY2l0eSA9IHZlbG9jaXR5OyB9CisgICAgY29uc3QgRmxvYXRQb2lu
dDNEJiB2ZWxvY2l0eSgpIGNvbnN0IHsgcmV0dXJuIG1fdmVsb2NpdHk7IH0KIAogICAgIC8vIERv
cHBsZXIgZmFjdG9yCiAgICAgdm9pZCBzZXREb3BwbGVyRmFjdG9yKGRvdWJsZSBkb3BwbGVyRmFj
dG9yKSB7IG1fZG9wcGxlckZhY3RvciA9IGRvcHBsZXJGYWN0b3I7IH0KQEAgLTc5LDExICs3OSwx
MSBAQCBwcml2YXRlOgogICAgIEF1ZGlvTGlzdGVuZXIoKTsKIAogICAgIC8vIFBvc2l0aW9uIC8g
T3JpZW50YXRpb24KLSAgICBWZWN0b3IzIG1fcG9zaXRpb247Ci0gICAgVmVjdG9yMyBtX29yaWVu
dGF0aW9uOwotICAgIFZlY3RvcjMgbV91cFZlY3RvcjsKKyAgICBGbG9hdFBvaW50M0QgbV9wb3Np
dGlvbjsKKyAgICBGbG9hdFBvaW50M0QgbV9vcmllbnRhdGlvbjsKKyAgICBGbG9hdFBvaW50M0Qg
bV91cFZlY3RvcjsKIAotICAgIFZlY3RvcjMgbV92ZWxvY2l0eTsKKyAgICBGbG9hdFBvaW50M0Qg
bV92ZWxvY2l0eTsKIAogICAgIGRvdWJsZSBtX2RvcHBsZXJGYWN0b3I7CiAgICAgZG91YmxlIG1f
c3BlZWRPZlNvdW5kOwpJbmRleDogV2ViQ29yZS93ZWJhdWRpby9BdWRpb1Bhbm5lck5vZGUuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvd2ViYXVkaW8vQXVkaW9QYW5uZXJOb2RlLmNwcAkocmV2
aXNpb24gNzI2OTQpCisrKyBXZWJDb3JlL3dlYmF1ZGlvL0F1ZGlvUGFubmVyTm9kZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTU4LDkgKzU4LDkgQEAgQXVkaW9QYW5uZXJOb2RlOjpBdWRpb1Bhbm5l
ck5vZGUoQXVkaW9DbwogICAgIG1fZGlzdGFuY2VHYWluID0gQXVkaW9HYWluOjpjcmVhdGUoImRp
c3RhbmNlR2FpbiIsIDEuMCwgMC4wLCAxLjApOwogICAgIG1fY29uZUdhaW4gPSBBdWRpb0dhaW46
OmNyZWF0ZSgiY29uZUdhaW4iLCAxLjAsIDAuMCwgMS4wKTsKIAotICAgIG1fcG9zaXRpb24gPSBW
ZWN0b3IzKDAsIDAsIDApOwotICAgIG1fb3JpZW50YXRpb24gPSBWZWN0b3IzKDEsIDAsIDApOwot
ICAgIG1fdmVsb2NpdHkgPSBWZWN0b3IzKDAsIDAsIDApOworICAgIG1fcG9zaXRpb24gPSBGbG9h
dFBvaW50M0QoMCwgMCwgMCk7CisgICAgbV9vcmllbnRhdGlvbiA9IEZsb2F0UG9pbnQzRCgxLCAw
LCAwKTsKKyAgICBtX3ZlbG9jaXR5ID0gRmxvYXRQb2ludDNEKDAsIDAsIDApOwogICAgIAogICAg
IHNldFR5cGUoTm9kZVR5cGVQYW5uZXIpOwogCkBAIC0xNjUsOCArMTY1LDggQEAgdm9pZCBBdWRp
b1Bhbm5lck5vZGU6OmdldEF6aW11dGhFbGV2YXRpbwogICAgIGRvdWJsZSBhemltdXRoID0gMC4w
OwogCiAgICAgLy8gQ2FsY3VsYXRlIHRoZSBzb3VyY2UtbGlzdGVuZXIgdmVjdG9yCi0gICAgVmVj
dG9yMyBsaXN0ZW5lclBvc2l0aW9uID0gbGlzdGVuZXIoKS0+cG9zaXRpb24oKTsKLSAgICBWZWN0
b3IzIHNvdXJjZUxpc3RlbmVyID0gbV9wb3NpdGlvbiAtIGxpc3RlbmVyUG9zaXRpb247CisgICAg
RmxvYXRQb2ludDNEIGxpc3RlbmVyUG9zaXRpb24gPSBsaXN0ZW5lcigpLT5wb3NpdGlvbigpOwor
ICAgIEZsb2F0UG9pbnQzRCBzb3VyY2VMaXN0ZW5lciA9IG1fcG9zaXRpb24gLSBsaXN0ZW5lclBv
c2l0aW9uOwogCiAgICAgaWYgKHNvdXJjZUxpc3RlbmVyLmlzWmVybygpKSB7CiAgICAgICAgIC8v
IGRlZ2VuZXJhdGUgY2FzZSBpZiBzb3VyY2UgYW5kIGxpc3RlbmVyIGFyZSBhdCB0aGUgc2FtZSBw
b2ludApAQCAtMTc4LDI2ICsxNzgsMjYgQEAgdm9pZCBBdWRpb1Bhbm5lck5vZGU6OmdldEF6aW11
dGhFbGV2YXRpbwogICAgIHNvdXJjZUxpc3RlbmVyLm5vcm1hbGl6ZSgpOwogCiAgICAgLy8gQWxp
Z24gYXhlcwotICAgIFZlY3RvcjMgbGlzdGVuZXJGcm9udCA9IGxpc3RlbmVyKCktPm9yaWVudGF0
aW9uKCk7Ci0gICAgVmVjdG9yMyBsaXN0ZW5lclVwID0gbGlzdGVuZXIoKS0+dXBWZWN0b3IoKTsK
LSAgICBWZWN0b3IzIGxpc3RlbmVyUmlnaHQgPSBjcm9zcyhsaXN0ZW5lckZyb250LCBsaXN0ZW5l
clVwKTsKKyAgICBGbG9hdFBvaW50M0QgbGlzdGVuZXJGcm9udCA9IGxpc3RlbmVyKCktPm9yaWVu
dGF0aW9uKCk7CisgICAgRmxvYXRQb2ludDNEIGxpc3RlbmVyVXAgPSBsaXN0ZW5lcigpLT51cFZl
Y3RvcigpOworICAgIEZsb2F0UG9pbnQzRCBsaXN0ZW5lclJpZ2h0ID0gbGlzdGVuZXJGcm9udC5j
cm9zcyhsaXN0ZW5lclVwKTsKICAgICBsaXN0ZW5lclJpZ2h0Lm5vcm1hbGl6ZSgpOwogCi0gICAg
VmVjdG9yMyBsaXN0ZW5lckZyb250Tm9ybSA9IGxpc3RlbmVyRnJvbnQ7CisgICAgRmxvYXRQb2lu
dDNEIGxpc3RlbmVyRnJvbnROb3JtID0gbGlzdGVuZXJGcm9udDsKICAgICBsaXN0ZW5lckZyb250
Tm9ybS5ub3JtYWxpemUoKTsKIAotICAgIFZlY3RvcjMgdXAgPSBjcm9zcyhsaXN0ZW5lclJpZ2h0
LCBsaXN0ZW5lckZyb250Tm9ybSk7CisgICAgRmxvYXRQb2ludDNEIHVwID0gbGlzdGVuZXJSaWdo
dC5jcm9zcyhsaXN0ZW5lckZyb250Tm9ybSk7CiAKLSAgICBkb3VibGUgdXBQcm9qZWN0aW9uID0g
ZG90KHNvdXJjZUxpc3RlbmVyLCB1cCk7CisgICAgZG91YmxlIHVwUHJvamVjdGlvbiA9IHNvdXJj
ZUxpc3RlbmVyLmRvdCh1cCk7CiAKLSAgICBWZWN0b3IzIHByb2plY3RlZFNvdXJjZSA9IHNvdXJj
ZUxpc3RlbmVyIC0gdXBQcm9qZWN0aW9uICogdXA7CisgICAgRmxvYXRQb2ludDNEIHByb2plY3Rl
ZFNvdXJjZSA9IHNvdXJjZUxpc3RlbmVyIC0gdXBQcm9qZWN0aW9uICogdXA7CiAgICAgcHJvamVj
dGVkU291cmNlLm5vcm1hbGl6ZSgpOwogCi0gICAgYXppbXV0aCA9IDE4MC4wICogYWNvcyhkb3Qo
cHJvamVjdGVkU291cmNlLCBsaXN0ZW5lclJpZ2h0KSkgLyBNX1BJOworICAgIGF6aW11dGggPSAx
ODAuMCAqIGFjb3MocHJvamVjdGVkU291cmNlLmRvdChsaXN0ZW5lclJpZ2h0KSkgLyBNX1BJOwog
ICAgIGZpeE5BTnMoYXppbXV0aCk7IC8vIGF2b2lkIGlsbGVnYWwgdmFsdWVzCiAKICAgICAvLyBT
b3VyY2UgIGluIGZyb250IG9yIGJlaGluZCB0aGUgbGlzdGVuZXIKLSAgICBkb3VibGUgZnJvbnRC
YWNrID0gZG90KHByb2plY3RlZFNvdXJjZSwgbGlzdGVuZXJGcm9udE5vcm0pOworICAgIGRvdWJs
ZSBmcm9udEJhY2sgPSBwcm9qZWN0ZWRTb3VyY2UuZG90KGxpc3RlbmVyRnJvbnROb3JtKTsKICAg
ICBpZiAoZnJvbnRCYWNrIDwgMC4wKQogICAgICAgICBhemltdXRoID0gMzYwLjAgLSBhemltdXRo
OwogCkBAIC0yMDgsNyArMjA4LDcgQEAgdm9pZCBBdWRpb1Bhbm5lck5vZGU6OmdldEF6aW11dGhF
bGV2YXRpbwogICAgICAgICBhemltdXRoID0gNDUwLjAgLSBhemltdXRoOwogCiAgICAgLy8gRWxl
dmF0aW9uCi0gICAgZG91YmxlIGVsZXZhdGlvbiA9IDkwLjAgLSAxODAuMCAqIGFjb3MoZG90KHNv
dXJjZUxpc3RlbmVyLCB1cCkpIC8gTV9QSTsKKyAgICBkb3VibGUgZWxldmF0aW9uID0gOTAuMCAt
IDE4MC4wICogYWNvcyhzb3VyY2VMaXN0ZW5lci5kb3QodXApKSAvIE1fUEk7CiAgICAgZml4TkFO
cyhhemltdXRoKTsgLy8gYXZvaWQgaWxsZWdhbCB2YWx1ZXMKIAogICAgIGlmIChlbGV2YXRpb24g
PiA5MC4wKQpAQCAtMjMyLDggKzIzMiw4IEBAIGZsb2F0IEF1ZGlvUGFubmVyTm9kZTo6ZG9wcGxl
clJhdGUoKQogICAgIGlmIChkb3BwbGVyRmFjdG9yID4gMC4wKSB7CiAgICAgICAgIGRvdWJsZSBz
cGVlZE9mU291bmQgPSBsaXN0ZW5lcigpLT5zcGVlZE9mU291bmQoKTsKIAotICAgICAgICBjb25z
dCBWZWN0b3IzICZzb3VyY2VWZWxvY2l0eSA9IG1fdmVsb2NpdHk7Ci0gICAgICAgIGNvbnN0IFZl
Y3RvcjMgJmxpc3RlbmVyVmVsb2NpdHkgPSBsaXN0ZW5lcigpLT52ZWxvY2l0eSgpOworICAgICAg
ICBjb25zdCBGbG9hdFBvaW50M0QgJnNvdXJjZVZlbG9jaXR5ID0gbV92ZWxvY2l0eTsKKyAgICAg
ICAgY29uc3QgRmxvYXRQb2ludDNEICZsaXN0ZW5lclZlbG9jaXR5ID0gbGlzdGVuZXIoKS0+dmVs
b2NpdHkoKTsKIAogICAgICAgICAvLyBEb24ndCBib3RoZXIgaWYgYm90aCBzb3VyY2UgYW5kIGxp
c3RlbmVyIGhhdmUgbm8gdmVsb2NpdHkKICAgICAgICAgYm9vbCBzb3VyY2VIYXNWZWxvY2l0eSA9
ICFzb3VyY2VWZWxvY2l0eS5pc1plcm8oKTsKQEAgLTI0MSwxMyArMjQxLDEzIEBAIGZsb2F0IEF1
ZGlvUGFubmVyTm9kZTo6ZG9wcGxlclJhdGUoKQogCiAgICAgICAgIGlmIChzb3VyY2VIYXNWZWxv
Y2l0eSB8fCBsaXN0ZW5lckhhc1ZlbG9jaXR5KSB7CiAgICAgICAgICAgICAvLyBDYWxjdWxhdGUg
dGhlIHNvdXJjZSB0byBsaXN0ZW5lciB2ZWN0b3IKLSAgICAgICAgICAgIFZlY3RvcjMgbGlzdGVu
ZXJQb3NpdGlvbiA9IGxpc3RlbmVyKCktPnBvc2l0aW9uKCk7Ci0gICAgICAgICAgICBWZWN0b3Iz
IHNvdXJjZVRvTGlzdGVuZXIgPSBtX3Bvc2l0aW9uIC0gbGlzdGVuZXJQb3NpdGlvbjsKKyAgICAg
ICAgICAgIEZsb2F0UG9pbnQzRCBsaXN0ZW5lclBvc2l0aW9uID0gbGlzdGVuZXIoKS0+cG9zaXRp
b24oKTsKKyAgICAgICAgICAgIEZsb2F0UG9pbnQzRCBzb3VyY2VUb0xpc3RlbmVyID0gbV9wb3Np
dGlvbiAtIGxpc3RlbmVyUG9zaXRpb247CiAKLSAgICAgICAgICAgIGRvdWJsZSBzb3VyY2VMaXN0
ZW5lck1hZ25pdHVkZSA9IHNvdXJjZVRvTGlzdGVuZXIuYWJzKCk7CisgICAgICAgICAgICBkb3Vi
bGUgc291cmNlTGlzdGVuZXJNYWduaXR1ZGUgPSBzb3VyY2VUb0xpc3RlbmVyLmxlbmd0aCgpOwog
Ci0gICAgICAgICAgICBkb3VibGUgbGlzdGVuZXJQcm9qZWN0aW9uID0gZG90KHNvdXJjZVRvTGlz
dGVuZXIsIGxpc3RlbmVyVmVsb2NpdHkpIC8gc291cmNlTGlzdGVuZXJNYWduaXR1ZGU7Ci0gICAg
ICAgICAgICBkb3VibGUgc291cmNlUHJvamVjdGlvbiA9IGRvdChzb3VyY2VUb0xpc3RlbmVyLCBz
b3VyY2VWZWxvY2l0eSkgLyBzb3VyY2VMaXN0ZW5lck1hZ25pdHVkZTsKKyAgICAgICAgICAgIGRv
dWJsZSBsaXN0ZW5lclByb2plY3Rpb24gPSBzb3VyY2VUb0xpc3RlbmVyLmRvdChsaXN0ZW5lclZl
bG9jaXR5KSAvIHNvdXJjZUxpc3RlbmVyTWFnbml0dWRlOworICAgICAgICAgICAgZG91YmxlIHNv
dXJjZVByb2plY3Rpb24gPSBzb3VyY2VUb0xpc3RlbmVyLmRvdChzb3VyY2VWZWxvY2l0eSkgLyBz
b3VyY2VMaXN0ZW5lck1hZ25pdHVkZTsKIAogICAgICAgICAgICAgbGlzdGVuZXJQcm9qZWN0aW9u
ID0gLWxpc3RlbmVyUHJvamVjdGlvbjsKICAgICAgICAgICAgIHNvdXJjZVByb2plY3Rpb24gPSAt
c291cmNlUHJvamVjdGlvbjsKQEAgLTI3Miw5ICsyNzIsOSBAQCBmbG9hdCBBdWRpb1Bhbm5lck5v
ZGU6OmRvcHBsZXJSYXRlKCkKIAogZmxvYXQgQXVkaW9QYW5uZXJOb2RlOjpkaXN0YW5jZUNvbmVH
YWluKCkKIHsKLSAgICBWZWN0b3IzIGxpc3RlbmVyUG9zaXRpb24gPSBsaXN0ZW5lcigpLT5wb3Np
dGlvbigpOworICAgIEZsb2F0UG9pbnQzRCBsaXN0ZW5lclBvc2l0aW9uID0gbGlzdGVuZXIoKS0+
cG9zaXRpb24oKTsKIAotICAgIGRvdWJsZSBsaXN0ZW5lckRpc3RhbmNlID0gZGlzdGFuY2UobV9w
b3NpdGlvbiwgbGlzdGVuZXJQb3NpdGlvbik7CisgICAgZG91YmxlIGxpc3RlbmVyRGlzdGFuY2Ug
PSBtX3Bvc2l0aW9uLmRpc3RhbmNlVG8obGlzdGVuZXJQb3NpdGlvbik7CiAgICAgZG91YmxlIGRp
c3RhbmNlR2FpbiA9IG1fZGlzdGFuY2VFZmZlY3QuZ2FpbihsaXN0ZW5lckRpc3RhbmNlKTsKICAg
ICAKICAgICBtX2Rpc3RhbmNlR2Fpbi0+c2V0VmFsdWUoc3RhdGljX2Nhc3Q8ZmxvYXQ+KGRpc3Rh
bmNlR2FpbikpOwpJbmRleDogV2ViQ29yZS93ZWJhdWRpby9BdWRpb1Bhbm5lck5vZGUuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL3dlYmF1ZGlvL0F1ZGlvUGFubmVyTm9kZS5oCShyZXZpc2lvbiA3
MjY5NCkKKysrIFdlYkNvcmUvd2ViYXVkaW8vQXVkaW9QYW5uZXJOb2RlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTMxLDkgKzMxLDkgQEAKICNpbmNsdWRlICJBdWRpb05vZGUuaCIKICNpbmNsdWRlICJD
b25lLmgiCiAjaW5jbHVkZSAiRGlzdGFuY2UuaCIKKyNpbmNsdWRlICJGbG9hdFBvaW50M0QuaCIK
ICNpbmNsdWRlICJQYW5uZXIuaCIKICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+Ci0jaW5jbHVkZSA8
d3RmL1ZlY3RvcjMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC03NSwxNiArNzUsMTYg
QEAgcHVibGljOgogICAgIHZvaWQgc2V0UGFubmluZ01vZGVsKHVuc2lnbmVkIHNob3J0KTsKIAog
ICAgIC8vIFBvc2l0aW9uCi0gICAgVmVjdG9yMyBwb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1f
cG9zaXRpb247IH0KLSAgICB2b2lkIHNldFBvc2l0aW9uKGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0
IHopIHsgbV9wb3NpdGlvbiA9IFZlY3RvcjMoeCwgeSwgeik7IH0KKyAgICBGbG9hdFBvaW50M0Qg
cG9zaXRpb24oKSBjb25zdCB7IHJldHVybiBtX3Bvc2l0aW9uOyB9CisgICAgdm9pZCBzZXRQb3Np
dGlvbihmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB6KSB7IG1fcG9zaXRpb24gPSBGbG9hdFBvaW50
M0QoeCwgeSwgeik7IH0KIAogICAgIC8vIE9yaWVudGF0aW9uCi0gICAgVmVjdG9yMyBvcmllbnRh
dGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fcG9zaXRpb247IH0KLSAgICB2b2lkIHNldE9yaWVudGF0
aW9uKGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHopIHsgbV9vcmllbnRhdGlvbiA9IFZlY3RvcjMo
eCwgeSwgeik7IH0KKyAgICBGbG9hdFBvaW50M0Qgb3JpZW50YXRpb24oKSBjb25zdCB7IHJldHVy
biBtX3Bvc2l0aW9uOyB9CisgICAgdm9pZCBzZXRPcmllbnRhdGlvbihmbG9hdCB4LCBmbG9hdCB5
LCBmbG9hdCB6KSB7IG1fb3JpZW50YXRpb24gPSBGbG9hdFBvaW50M0QoeCwgeSwgeik7IH0KIAog
ICAgIC8vIFZlbG9jaXR5Ci0gICAgVmVjdG9yMyB2ZWxvY2l0eSgpIGNvbnN0IHsgcmV0dXJuIG1f
dmVsb2NpdHk7IH0KLSAgICB2b2lkIHNldFZlbG9jaXR5KGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0
IHopIHsgbV92ZWxvY2l0eSA9IFZlY3RvcjMoeCwgeSwgeik7IH0KKyAgICBGbG9hdFBvaW50M0Qg
dmVsb2NpdHkoKSBjb25zdCB7IHJldHVybiBtX3ZlbG9jaXR5OyB9CisgICAgdm9pZCBzZXRWZWxv
Y2l0eShmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB6KSB7IG1fdmVsb2NpdHkgPSBGbG9hdFBvaW50
M0QoeCwgeSwgeik7IH0KIAogICAgIC8vIERpc3RhbmNlIHBhcmFtZXRlcnMKICAgICB1bnNpZ25l
ZCBzaG9ydCBkaXN0YW5jZU1vZGVsKCkgeyByZXR1cm4gbV9kaXN0YW5jZUVmZmVjdC5tb2RlbCgp
OyB9CkBAIC0xMjksMTAgKzEyOSw5IEBAIHByaXZhdGU6CiAgICAgT3duUHRyPFBhbm5lcj4gbV9w
YW5uZXI7CiAgICAgdW5zaWduZWQgbV9wYW5uaW5nTW9kZWw7CiAKLSAgICAvLyBGSVhNRTogdXBn
cmFkZSB0byBGbG9hdFBvaW50M0QgZnJvbSBWZWN0b3IzLgotICAgIFZlY3RvcjMgbV9wb3NpdGlv
bjsKLSAgICBWZWN0b3IzIG1fb3JpZW50YXRpb247Ci0gICAgVmVjdG9yMyBtX3ZlbG9jaXR5Owor
ICAgIEZsb2F0UG9pbnQzRCBtX3Bvc2l0aW9uOworICAgIEZsb2F0UG9pbnQzRCBtX29yaWVudGF0
aW9uOworICAgIEZsb2F0UG9pbnQzRCBtX3ZlbG9jaXR5OwogCiAgICAgLy8gR2FpbgogICAgIFJl
ZlB0cjxBdWRpb0dhaW4+IG1fZGlzdGFuY2VHYWluOwo=
</data>
<flag name="review"
          id="65806"
          type_id="1"
          status="+"
          setter="kbr"
    />
          </attachment>
      

    </bug>

</bugzilla>