<?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>49073</bug_id>
          
          <creation_ts>2010-11-05 09:55:15 -0700</creation_ts>
          <short_desc>Move resumeAnimations/suspendAnimations from Frame to AnimationController.</short_desc>
          <delta_ts>2010-11-05 14:45:59 -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>Layout and Rendering</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Marrin">cmarrin</reporter>
          <assigned_to name="Chris Marrin">cmarrin</assigned_to>
          <cc>simon.fraser</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>305325</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Marrin">cmarrin</who>
    <bug_when>2010-11-05 09:55:15 -0700</bug_when>
    <thetext>Darin doesn&apos;t want to increase the API of Frame, so these should be moved to AnimationController.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>305403</commentid>
    <comment_count>1</comment_count>
      <attachid>73088</attachid>
    <who name="Chris Marrin">cmarrin</who>
    <bug_when>2010-11-05 11:22:45 -0700</bug_when>
    <thetext>Created attachment 73088
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>305453</commentid>
    <comment_count>2</comment_count>
      <attachid>73088</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-11-05 12:36:49 -0700</bug_when>
    <thetext>Comment on attachment 73088
Patch

I think it would be cleaner to rename the existing function resumeAnimationsForThisFrameOnly or something like that, and have a new function with the loop in it, instead of using a magic value of 0 to mean &quot;loop through subframes&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>305462</commentid>
    <comment_count>3</comment_count>
      <attachid>73088</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2010-11-05 12:44:33 -0700</bug_when>
    <thetext>Comment on attachment 73088
Patch

Right, Chris is going to add new methods to AnimationController.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>305470</commentid>
    <comment_count>4</comment_count>
      <attachid>73103</attachid>
    <who name="Chris Marrin">cmarrin</who>
    <bug_when>2010-11-05 13:02:37 -0700</bug_when>
    <thetext>Created attachment 73103
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>305475</commentid>
    <comment_count>5</comment_count>
      <attachid>73103</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2010-11-05 13:13:10 -0700</bug_when>
    <thetext>Comment on attachment 73103
Patch

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

&gt; WebCore/page/animation/AnimationController.cpp:241
&gt;      setBeginAnimationUpdateTime(cBeginAnimationUpdateTimeNotSet);
&gt;      
&gt;      RenderObjectAnimationMap::const_iterator animationsEnd = m_compositeAnimations.end();
&gt;      for (RenderObjectAnimationMap::const_iterator it = m_compositeAnimations.begin(); it != animationsEnd; ++it) {
&gt;          RenderObject* renderer = it-&gt;first;
&gt; +        if (renderer-&gt;document() == m_frame-&gt;document()) {
&gt; +            CompositeAnimation* compAnim = it-&gt;second.get();
&gt; +            compAnim-&gt;suspendAnimations();
&gt; +        }
&gt; +    }

Too much copied code here. This should just do
suspendAnimationsForDocument(m_frame-&gt;document());

&gt; WebCore/page/animation/AnimationController.cpp:261
&gt; +    setBeginAnimationUpdateTime(cBeginAnimationUpdateTimeNotSet);
&gt; +    
&gt; +    RenderObjectAnimationMap::const_iterator animationsEnd = m_compositeAnimations.end();
&gt; +    for (RenderObjectAnimationMap::const_iterator it = m_compositeAnimations.begin(); it != animationsEnd; ++it) {
&gt; +        RenderObject* renderer = it-&gt;first;
&gt; +        if (renderer-&gt;document() == m_frame-&gt;document()) {
&gt; +            CompositeAnimation* compAnim = it-&gt;second.get();
&gt; +            compAnim-&gt;resumeAnimations();
&gt; +        }
&gt; +    }

Same, just call resumeAnimationsForDocument(m_frame-&gt;document());

&gt; WebCore/page/animation/AnimationController.cpp:311
&gt; +    /*
&gt; +    bool traverseSubframes = false;
&gt; +    if (!document) {
&gt; +        document = m_frame-&gt;document();
&gt; +        traverseSubframes = true;
&gt; +    }
&gt; +    */
&gt; +

Remove!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>305492</commentid>
    <comment_count>6</comment_count>
      <attachid>73110</attachid>
    <who name="Chris Marrin">cmarrin</who>
    <bug_when>2010-11-05 13:37:23 -0700</bug_when>
    <thetext>Created attachment 73110
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>305500</commentid>
    <comment_count>7</comment_count>
      <attachid>73110</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2010-11-05 13:57:27 -0700</bug_when>
    <thetext>Comment on attachment 73110
Patch

So much nicer!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>305539</commentid>
    <comment_count>8</comment_count>
    <who name="Chris Marrin">cmarrin</who>
    <bug_when>2010-11-05 14:45:59 -0700</bug_when>
    <thetext>Committed r71451: &lt;http://trac.webkit.org/changeset/71451&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>73088</attachid>
            <date>2010-11-05 11:22:45 -0700</date>
            <delta_ts>2010-11-05 13:02:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-49073-20101105112244.patch</filename>
            <type>text/plain</type>
            <size>12099</size>
            <attacher name="Chris Marrin">cmarrin</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3MTQzNikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjEgQEAKKzIwMTAtMTEtMDUgIENocmlzIE1hcnJpbiAgPGNtYXJyaW5AYXBwbGUu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1v
dmUgcmVzdW1lQW5pbWF0aW9ucy9zdXNwZW5kQW5pbWF0aW9ucyBmcm9tIEZyYW1lIHRvIEFuaW1h
dGlvbkNvbnRyb2xsZXIuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD00OTA3MworCisgICAgICAgIE5vdyBBbmltYXRpb25Db250cm9sbGVyOjpzdXNwZW5k
QW5pbWF0aW9ucy9yZXN1bWVBbmltYXRpb25zIGNhbiB0YWtlIGEKKyAgICAgICAgbnVsbCBwYXJh
bWV0ZXIgd2hpY2ggaW5kaWNhdGVzIHRoYXQgdGhlIEZyYW1lIG93bmluZyB0aGlzIGFuaW1hdGlv
biBjb250cm9sbGVyCisgICAgICAgIGFuZCBhbGwgaXRzIHN1YmZyYW1lcyBzaG91bGQgYmUgc3Vz
cGVuZGVkIG9yIHJlc3VtZWQuCisKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAgICAgICAg
KiBwYWdlL0ZyYW1lLmNwcDoKKyAgICAgICAgKiBwYWdlL0ZyYW1lLmg6CisgICAgICAgICogcGFn
ZS9hbmltYXRpb24vQW5pbWF0aW9uQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpB
bmltYXRpb25Db250cm9sbGVyUHJpdmF0ZTo6c3VzcGVuZEFuaW1hdGlvbnMpOgorICAgICAgICAo
V2ViQ29yZTo6QW5pbWF0aW9uQ29udHJvbGxlclByaXZhdGU6OnJlc3VtZUFuaW1hdGlvbnMpOgor
CiAyMDEwLTExLTA1ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAg
IFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgpJbmRleDogV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUuZXhwLmluCShyZXZpc2lvbiA3MTQyNCkKKysr
IFdlYkNvcmUvV2ViQ29yZS5leHAuaW4JKHdvcmtpbmcgY29weSkKQEAgLTYzNCwxMCArNjM0LDgg
QEAgX19aTjdXZWJDb3JlNUNhY2hlMTNnZXRTdGF0aXN0aWNzRXYKIF9fWk43V2ViQ29yZTVDYWNo
ZTEzc2V0Q2FwYWNpdGllc0VqamoKIF9fWk43V2ViQ29yZTVGcmFtZTEwY3JlYXRlVmlld0VSS05T
XzdJbnRTaXplRVJLTlNfNUNvbG9yRWJTM19iTlNfMTNTY3JvbGxiYXJNb2RlRWJTN19iCiBfX1pO
N1dlYkNvcmU1RnJhbWUxNGZyYW1lRm9yV2lkZ2V0RVBLTlNfNldpZGdldEUKLV9fWk43V2ViQ29y
ZTVGcmFtZTE2cmVzdW1lQW5pbWF0aW9uc0V2CiBfX1pON1dlYkNvcmU1RnJhbWUxN3NldFBhZ2Va
b29tRmFjdG9yRWYKIF9fWk43V2ViQ29yZTVGcmFtZTE3c2V0VGV4dFpvb21GYWN0b3JFZgotX19a
TjdXZWJDb3JlNUZyYW1lMTdzdXNwZW5kQW5pbWF0aW9uc0V2CiBfX1pON1dlYkNvcmU1RnJhbWUy
M3Zpc2libGVQb3NpdGlvbkZvclBvaW50RVJLTlNfOEludFBvaW50RQogX19aTjdXZWJDb3JlNUZy
YW1lMjVtYXRjaExhYmVsc0FnYWluc3RFbGVtZW50RVA3TlNBcnJheVBOU183RWxlbWVudEUKIF9f
Wk43V2ViQ29yZTVGcmFtZTI1c2V0UGFnZUFuZFRleHRab29tRmFjdG9yc0VmZgpJbmRleDogV2Vi
Q29yZS9wYWdlL0ZyYW1lLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvRnJhbWUuY3Bw
CShyZXZpc2lvbiA3MTQyNCkKKysrIFdlYkNvcmUvcGFnZS9GcmFtZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTk4OSwyMiArOTg5LDQgQEAgdm9pZCBGcmFtZTo6c2NhbGVQYWdlKGZsb2F0IHNjYWxl
KQogICAgIH0KIH0KIAotdm9pZCBGcmFtZTo6c3VzcGVuZEFuaW1hdGlvbnMoKQotewotICAgIGFu
aW1hdGlvbigpLT5zdXNwZW5kQW5pbWF0aW9ucyhkb2N1bWVudCgpKTsKLSAgICAKLSAgICAvLyBI
YW5kbGUgc3ViZnJhbWVzCi0gICAgZm9yIChGcmFtZSogY2hpbGQgPSB0cmVlKCktPmZpcnN0Q2hp
bGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPnRyZWUoKS0+bmV4dFNpYmxpbmcoKSkKLSAgICAg
ICAgY2hpbGQtPnN1c3BlbmRBbmltYXRpb25zKCk7Ci19Ci0KLXZvaWQgRnJhbWU6OnJlc3VtZUFu
aW1hdGlvbnMoKQotewotICAgIGFuaW1hdGlvbigpLT5yZXN1bWVBbmltYXRpb25zKGRvY3VtZW50
KCkpOwotICAgIAotICAgIC8vIEhhbmRsZSBzdWJmcmFtZXMKLSAgICBmb3IgKEZyYW1lKiBjaGls
ZCA9IHRyZWUoKS0+Zmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+dHJlZSgpLT5u
ZXh0U2libGluZygpKQotICAgICAgICBjaGlsZC0+cmVzdW1lQW5pbWF0aW9ucygpOwotfQotCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL3BhZ2UvRnJhbWUuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL3BhZ2UvRnJhbWUuaAkocmV2aXNpb24gNzE0MjQpCisrKyBXZWJDb3Jl
L3BhZ2UvRnJhbWUuaAkod29ya2luZyBjb3B5KQpAQCAtOTksOSArOTksNiBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAgICAgICAgIEFuaW1hdGlvbkNvbnRyb2xsZXIqIGFuaW1hdGlvbigpIGNvbnN0
OwogICAgICAgICBTY3JpcHRDb250cm9sbGVyKiBzY3JpcHQoKTsKICAgICAgICAgCi0gICAgICAg
IHZvaWQgc3VzcGVuZEFuaW1hdGlvbnMoKTsKLSAgICAgICAgdm9pZCByZXN1bWVBbmltYXRpb25z
KCk7Ci0KICAgICAgICAgUmVuZGVyVmlldyogY29udGVudFJlbmRlcmVyKCkgY29uc3Q7IC8vIFJv
b3Qgb2YgdGhlIHJlbmRlciB0cmVlIGZvciB0aGUgZG9jdW1lbnQgY29udGFpbmVkIGluIHRoaXMg
ZnJhbWUuCiAgICAgICAgIFJlbmRlclBhcnQqIG93bmVyUmVuZGVyZXIoKSBjb25zdDsgLy8gUmVu
ZGVyZXIgZm9yIHRoZSBlbGVtZW50IHRoYXQgY29udGFpbnMgdGhpcyBmcmFtZS4KIApJbmRleDog
V2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25Db250cm9sbGVyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0FuaW1hdGlvbkNvbnRyb2xsZXIuY3BwCShyZXZp
c2lvbiA3MTQyMykKKysrIFdlYkNvcmUvcGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQ29udHJvbGxl
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIyOSw2ICsyMjksMTIgQEAgYm9vbCBBbmltYXRpb25D
b250cm9sbGVyUHJpdmF0ZTo6aXNSdW5uaQogCiB2b2lkIEFuaW1hdGlvbkNvbnRyb2xsZXJQcml2
YXRlOjpzdXNwZW5kQW5pbWF0aW9ucyhEb2N1bWVudCogZG9jdW1lbnQpCiB7CisgICAgYm9vbCB0
cmF2ZXJzZVN1YmZyYW1lcyA9IGZhbHNlOworICAgIGlmICghZG9jdW1lbnQpIHsKKyAgICAgICAg
ZG9jdW1lbnQgPSBtX2ZyYW1lLT5kb2N1bWVudCgpOworICAgICAgICB0cmF2ZXJzZVN1YmZyYW1l
cyA9IHRydWU7CisgICAgfQorCiAgICAgc2V0QmVnaW5BbmltYXRpb25VcGRhdGVUaW1lKGNCZWdp
bkFuaW1hdGlvblVwZGF0ZVRpbWVOb3RTZXQpOwogICAgIAogICAgIFJlbmRlck9iamVjdEFuaW1h
dGlvbk1hcDo6Y29uc3RfaXRlcmF0b3IgYW5pbWF0aW9uc0VuZCA9IG1fY29tcG9zaXRlQW5pbWF0
aW9ucy5lbmQoKTsKQEAgLTI0MSwxMCArMjQ3LDIyIEBAIHZvaWQgQW5pbWF0aW9uQ29udHJvbGxl
clByaXZhdGU6OnN1c3BlbmQKICAgICB9CiAgICAgCiAgICAgdXBkYXRlQW5pbWF0aW9uVGltZXIo
KTsKKyAgICAKKyAgICAvLyBUcmF2ZXJzZSBzdWJmcmFtZXMgaWYgbmVlZGVkCisgICAgaWYgKHRy
YXZlcnNlU3ViZnJhbWVzKSB7CisgICAgICAgIGZvciAoRnJhbWUqIGNoaWxkID0gbV9mcmFtZS0+
dHJlZSgpLT5maXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT50cmVlKCktPm5leHRT
aWJsaW5nKCkpCisgICAgICAgICAgICBjaGlsZC0+YW5pbWF0aW9uKCktPnN1c3BlbmRBbmltYXRp
b25zKDApOworICAgIH0KIH0KIAogdm9pZCBBbmltYXRpb25Db250cm9sbGVyUHJpdmF0ZTo6cmVz
dW1lQW5pbWF0aW9ucyhEb2N1bWVudCogZG9jdW1lbnQpCiB7CisgICAgYm9vbCB0cmF2ZXJzZVN1
YmZyYW1lcyA9IGZhbHNlOworICAgIGlmICghZG9jdW1lbnQpIHsKKyAgICAgICAgZG9jdW1lbnQg
PSBtX2ZyYW1lLT5kb2N1bWVudCgpOworICAgICAgICB0cmF2ZXJzZVN1YmZyYW1lcyA9IHRydWU7
CisgICAgfQorCiAgICAgc2V0QmVnaW5BbmltYXRpb25VcGRhdGVUaW1lKGNCZWdpbkFuaW1hdGlv
blVwZGF0ZVRpbWVOb3RTZXQpOwogICAgIAogICAgIFJlbmRlck9iamVjdEFuaW1hdGlvbk1hcDo6
Y29uc3RfaXRlcmF0b3IgYW5pbWF0aW9uc0VuZCA9IG1fY29tcG9zaXRlQW5pbWF0aW9ucy5lbmQo
KTsKQEAgLTI1Nyw2ICsyNzUsMTIgQEAgdm9pZCBBbmltYXRpb25Db250cm9sbGVyUHJpdmF0ZTo6
cmVzdW1lQQogICAgIH0KICAgICAKICAgICB1cGRhdGVBbmltYXRpb25UaW1lcigpOworICAgIAor
ICAgIC8vIFRyYXZlcnNlIHN1YmZyYW1lcyBpZiBuZWVkZWQKKyAgICBpZiAodHJhdmVyc2VTdWJm
cmFtZXMpIHsKKyAgICAgICAgZm9yIChGcmFtZSogY2hpbGQgPSBtX2ZyYW1lLT50cmVlKCktPmZp
cnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPnRyZWUoKS0+bmV4dFNpYmxpbmcoKSkK
KyAgICAgICAgICAgIGNoaWxkLT5hbmltYXRpb24oKS0+cmVzdW1lQW5pbWF0aW9ucygwKTsKKyAg
ICB9CiB9CiAKIGJvb2wgQW5pbWF0aW9uQ29udHJvbGxlclByaXZhdGU6OnBhdXNlQW5pbWF0aW9u
QXRUaW1lKFJlbmRlck9iamVjdCogcmVuZGVyZXIsIGNvbnN0IFN0cmluZyYgbmFtZSwgZG91Ymxl
IHQpCkluZGV4OiBXZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktp
dC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHJldmlzaW9uIDcxNDM2KQorKysgV2ViS2l0L2Nocm9taXVt
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDEwLTExLTA1ICBD
aHJpcyBNYXJyaW4gIDxjbWFycmluQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNb3ZlIHJlc3VtZUFuaW1hdGlvbnMvc3VzcGVuZEFu
aW1hdGlvbnMgZnJvbSBGcmFtZSB0byBBbmltYXRpb25Db250cm9sbGVyLgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDkwNzMKKworICAgICAgICAqIHNy
Yy9XZWJBbmltYXRpb25Db250cm9sbGVySW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkFu
aW1hdGlvbkNvbnRyb2xsZXJJbXBsOjpzdXNwZW5kQW5pbWF0aW9ucyk6CisgICAgICAgIChXZWJL
aXQ6OldlYkFuaW1hdGlvbkNvbnRyb2xsZXJJbXBsOjpyZXN1bWVBbmltYXRpb25zKToKKwogMjAx
MC0xMC0yNyAgSmVyZW15IE9ybG93ICA8am9ybG93QGNocm9taXVtLm9yZz4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBTdGV2ZSBCbG9jay4KSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViQW5p
bWF0aW9uQ29udHJvbGxlckltcGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9z
cmMvV2ViQW5pbWF0aW9uQ29udHJvbGxlckltcGwuY3BwCShyZXZpc2lvbiA3MTQyMykKKysrIFdl
YktpdC9jaHJvbWl1bS9zcmMvV2ViQW5pbWF0aW9uQ29udHJvbGxlckltcGwuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC05NCw3ICs5NCw3IEBAIHZvaWQgV2ViQW5pbWF0aW9uQ29udHJvbGxlckltcGw6
OnN1c3BlbmQKICAgICAgICAgcmV0dXJuOwogICAgIGlmICghbV9mcmFtZUltcGwtPmZyYW1lKCkp
CiAgICAgICAgIHJldHVybjsKLSAgICBjb250cm9sbGVyLT5zdXNwZW5kQW5pbWF0aW9ucyhtX2Zy
YW1lSW1wbC0+ZnJhbWUoKS0+ZG9jdW1lbnQoKSk7CisgICAgY29udHJvbGxlci0+c3VzcGVuZEFu
aW1hdGlvbnMoMCk7CiB9CiAKIHZvaWQgV2ViQW5pbWF0aW9uQ29udHJvbGxlckltcGw6OnJlc3Vt
ZUFuaW1hdGlvbnMoKSBjb25zdApAQCAtMTA0LDcgKzEwNCw3IEBAIHZvaWQgV2ViQW5pbWF0aW9u
Q29udHJvbGxlckltcGw6OnJlc3VtZUEKICAgICAgICAgcmV0dXJuOwogICAgIGlmICghbV9mcmFt
ZUltcGwtPmZyYW1lKCkpCiAgICAgICAgIHJldHVybjsKLSAgICBjb250cm9sbGVyLT5yZXN1bWVB
bmltYXRpb25zKG1fZnJhbWVJbXBsLT5mcmFtZSgpLT5kb2N1bWVudCgpKTsKKyAgICBjb250cm9s
bGVyLT5yZXN1bWVBbmltYXRpb25zKDApOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5k
ZXg6IFdlYktpdC9ndGsvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9ndGsvQ2hhbmdl
TG9nCShyZXZpc2lvbiA3MTQzNikKKysrIFdlYktpdC9ndGsvQ2hhbmdlTG9nCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTAtMTEtMDUgIENocmlzIE1hcnJpbiAgPGNtYXJyaW5A
YXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIE1vdmUgcmVzdW1lQW5pbWF0aW9ucy9zdXNwZW5kQW5pbWF0aW9ucyBmcm9tIEZyYW1lIHRv
IEFuaW1hdGlvbkNvbnRyb2xsZXIuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD00OTA3MworCisgICAgICAgICogd2Via2l0L3dlYmtpdHdlYmZyYW1lLmNw
cDoKKyAgICAgICAgKHdlYmtpdF93ZWJfZnJhbWVfc3VzcGVuZF9hbmltYXRpb25zKToKKyAgICAg
ICAgKHdlYmtpdF93ZWJfZnJhbWVfcmVzdW1lX2FuaW1hdGlvbnMpOgorCiAyMDEwLTExLTA1ICBD
aHJpcyBNYXJyaW4gIDxjbWFycmluQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLgpJ
bmRleDogV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2ViZnJhbWUuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYmZyYW1lLmNwcAkocmV2aXNpb24gNzE0MjcpCisr
KyBXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJmcmFtZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEwNTksNyArMTA1OSw3IEBAIHZvaWQgd2Via2l0X3dlYl9mcmFtZV9zdXNwZW5kX2FuaW1hdGlv
bnMKICAgICBpZiAoIWNvcmVGcmFtZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgY29yZUZyYW1l
LT5zdXNwZW5kQW5pbWF0aW9ucygpOworICAgIGNvcmVGcmFtZS0+YW5pbWF0aW9uKCktPnN1c3Bl
bmRBbmltYXRpb25zKDApOwogfQogCiB2b2lkIHdlYmtpdF93ZWJfZnJhbWVfcmVzdW1lX2FuaW1h
dGlvbnMoV2ViS2l0V2ViRnJhbWUqIGZyYW1lKQpAQCAtMTA2OCw3ICsxMDY4LDcgQEAgdm9pZCB3
ZWJraXRfd2ViX2ZyYW1lX3Jlc3VtZV9hbmltYXRpb25zKAogICAgIGlmICghY29yZUZyYW1lKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBjb3JlRnJhbWUtPnJlc3VtZUFuaW1hdGlvbnMoKTsKKyAg
ICBjb3JlRnJhbWUtPmFuaW1hdGlvbigpLT5yZXN1bWVBbmltYXRpb25zKDApOwogfQogCiBnY2hh
ciogd2Via2l0X3dlYl9mcmFtZV9nZXRfcmVzcG9uc2VfbWltZV90eXBlKFdlYktpdFdlYkZyYW1l
KiBmcmFtZSkKSW5kZXg6IFdlYktpdC9tYWMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktp
dC9tYWMvQ2hhbmdlTG9nCShyZXZpc2lvbiA3MTQzNikKKysrIFdlYktpdC9tYWMvQ2hhbmdlTG9n
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTAtMTEtMDUgIENocmlzIE1hcnJp
biAgPGNtYXJyaW5AYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIE1vdmUgcmVzdW1lQW5pbWF0aW9ucy9zdXNwZW5kQW5pbWF0aW9ucyBm
cm9tIEZyYW1lIHRvIEFuaW1hdGlvbkNvbnRyb2xsZXIuCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00OTA3MworCisgICAgICAgICogV2ViVmlldy9XZWJG
cmFtZS5tbToKKyAgICAgICAgKC1bV2ViRnJhbWUgX3N1c3BlbmRBbmltYXRpb25zXSk6CisgICAg
ICAgICgtW1dlYkZyYW1lIF9yZXN1bWVBbmltYXRpb25zXSk6CisKIDIwMTAtMTEtMDQgIEFsZXhl
eSBQcm9za3VyeWFrb3YgIDxhcEBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFy
aW4gQWRsZXIuCkluZGV4OiBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCShyZXZpc2lvbiA3MTQyNCkKKysr
IFdlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQkod29ya2luZyBjb3B5KQpAQCAtMTEzNyw3
ICsxMTM3LDcgQEAgLSAodm9pZCkgX3N1c3BlbmRBbmltYXRpb25zCiAgICAgaWYgKCFmcmFtZSkK
ICAgICAgICAgcmV0dXJuOwogICAgICAgICAKLSAgICBmcmFtZS0+c3VzcGVuZEFuaW1hdGlvbnMo
KTsKKyAgICBmcmFtZS0+YW5pbWF0aW9uKCktPnN1c3BlbmRBbmltYXRpb25zKDApOwogfQogCiAt
ICh2b2lkKSBfcmVzdW1lQW5pbWF0aW9ucwpAQCAtMTE0Niw3ICsxMTQ2LDcgQEAgLSAodm9pZCkg
X3Jlc3VtZUFuaW1hdGlvbnMKICAgICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBmcmFtZS0+cmVzdW1lQW5pbWF0aW9ucygpOworICAgIGZyYW1lLT5hbmltYXRpb24oKS0+cmVz
dW1lQW5pbWF0aW9ucygwKTsKIH0KIAogLSAodm9pZClfcmVwbGFjZVNlbGVjdGlvbldpdGhGcmFn
bWVudDooRE9NRG9jdW1lbnRGcmFnbWVudCAqKWZyYWdtZW50IHNlbGVjdFJlcGxhY2VtZW50OihC
T09MKXNlbGVjdFJlcGxhY2VtZW50IHNtYXJ0UmVwbGFjZTooQk9PTClzbWFydFJlcGxhY2UgbWF0
Y2hTdHlsZTooQk9PTCltYXRjaFN0eWxlCkluZGV4OiBXZWJLaXQvcXQvQ2hhbmdlTG9nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYktpdC9xdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDcxNDM2KQorKysgV2ViS2l0
L3F0L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDEwLTExLTA1
ICBDaHJpcyBNYXJyaW4gIDxjbWFycmluQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNb3ZlIHJlc3VtZUFuaW1hdGlvbnMvc3VzcGVu
ZEFuaW1hdGlvbnMgZnJvbSBGcmFtZSB0byBBbmltYXRpb25Db250cm9sbGVyLgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDkwNzMKKworICAgICAgICAq
IFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmNwcDoKKyAgICAgICAgKER1
bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpzdXNwZW5kQW5pbWF0aW9ucyk6CisgICAgICAgIChEdW1w
UmVuZGVyVHJlZVN1cHBvcnRRdDo6cmVzdW1lQW5pbWF0aW9ucyk6CisKIDIwMTAtMTEtMDMgIEFu
dG9uaW8gR29tZXMgIDx0b25pa2l0b29Ad2Via2l0Lm9yZz4sIEFuZHJlIFBlZHJhbGhvICA8YW5k
cmUucGVkcmFsaG9AZ21haWwuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUm9o
ZGUgQ2hyaXN0aWFuc2VuIGFuZCBBbnR0aSBLb2l2aXN0by4KSW5kZXg6IFdlYktpdC9xdC9XZWJD
b3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
S2l0L3F0L1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmNwcAkocmV2aXNp
b24gNzE0MjMpCisrKyBXZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBw
b3J0UXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNzksNyArMjc5LDcgQEAgdm9pZCBEdW1wUmVu
ZGVyVHJlZVN1cHBvcnRRdDo6c3VzcGVuZEFuaQogICAgIGlmICghY29udHJvbGxlcikKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgY29udHJvbGxlci0+c3VzcGVuZEFuaW1hdGlvbnMoY29yZUZyYW1l
LT5kb2N1bWVudCgpKTsKKyAgICBjb250cm9sbGVyLT5zdXNwZW5kQW5pbWF0aW9ucygwKTsKIH0K
IAogdm9pZCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6cmVzdW1lQW5pbWF0aW9ucyhRV2ViRnJh
bWUgKmZyYW1lKQpAQCAtMjkyLDcgKzI5Miw3IEBAIHZvaWQgRHVtcFJlbmRlclRyZWVTdXBwb3J0
UXQ6OnJlc3VtZUFuaW0KICAgICBpZiAoIWNvbnRyb2xsZXIpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIGNvbnRyb2xsZXItPnJlc3VtZUFuaW1hdGlvbnMoY29yZUZyYW1lLT5kb2N1bWVudCgpKTsK
KyAgICBjb250cm9sbGVyLT5yZXN1bWVBbmltYXRpb25zKDApOwogfQogCiB2b2lkIER1bXBSZW5k
ZXJUcmVlU3VwcG9ydFF0OjpjbGVhckZyYW1lTmFtZShRV2ViRnJhbWUqIGZyYW1lKQpJbmRleDog
V2ViS2l0L3dpbi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3dpbi9DaGFuZ2VMb2cJ
KHJldmlzaW9uIDcxNDM2KQorKysgV2ViS2l0L3dpbi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwxNCBAQAorMjAxMC0xMS0wNSAgQ2hyaXMgTWFycmluICA8Y21hcnJpbkBhcHBs
ZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
TW92ZSByZXN1bWVBbmltYXRpb25zL3N1c3BlbmRBbmltYXRpb25zIGZyb20gRnJhbWUgdG8gQW5p
bWF0aW9uQ29udHJvbGxlci4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTQ5MDczCisKKyAgICAgICAgKiBXZWJGcmFtZS5jcHA6CisgICAgICAgIChXZWJG
cmFtZTo6c3VzcGVuZEFuaW1hdGlvbnMpOgorICAgICAgICAoV2ViRnJhbWU6OnJlc3VtZUFuaW1h
dGlvbnMpOgorCiAyMDEwLTExLTA1ICBCcmlhbiBXZWluc3RlaW4gIDxid2VpbnN0ZWluQGFwcGxl
LmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBBbmRlcnMgQ2FybHNzb24uCkluZGV4OiBXZWJL
aXQvd2luL1dlYkZyYW1lLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvd2luL1dlYkZyYW1lLmNw
cAkocmV2aXNpb24gNzE0MjQpCisrKyBXZWJLaXQvd2luL1dlYkZyYW1lLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTI5OSw3ICsxMjk5LDcgQEAgSFJFU1VMVCBXZWJGcmFtZTo6c3VzcGVuZEFuaW1h
dGlvbnMoKQogICAgIGlmICghZnJhbWUpCiAgICAgICAgIHJldHVybiBFX0ZBSUw7CiAKLSAgICBm
cmFtZS0+c3VzcGVuZEFuaW1hdGlvbnMoKTsKKyAgICBmcmFtZS0+YW5pbWF0aW9uKCktPnN1c3Bl
bmRBbmltYXRpb25zKDApOwogICAgIHJldHVybiBTX09LOwogfQogCkBAIC0xMzA5LDcgKzEzMDks
NyBAQCBIUkVTVUxUIFdlYkZyYW1lOjpyZXN1bWVBbmltYXRpb25zKCkKICAgICBpZiAoIWZyYW1l
KQogICAgICAgICByZXR1cm4gRV9GQUlMOwogCi0gICAgZnJhbWUtPnJlc3VtZUFuaW1hdGlvbnMo
KTsKKyAgICBmcmFtZS0+YW5pbWF0aW9uKCktPnJlc3VtZUFuaW1hdGlvbnMoMCk7CiAgICAgcmV0
dXJuIFNfT0s7CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>73103</attachid>
            <date>2010-11-05 13:02:37 -0700</date>
            <delta_ts>2010-11-05 13:37:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-49073-20101105130236.patch</filename>
            <type>text/plain</type>
            <size>20073</size>
            <attacher name="Chris Marrin">cmarrin</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3MTQzNikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjYgQEAKKzIwMTAtMTEtMDUgIENocmlzIE1hcnJpbiAgPGNtYXJyaW5AYXBwbGUu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1v
dmUgcmVzdW1lQW5pbWF0aW9ucy9zdXNwZW5kQW5pbWF0aW9ucyBmcm9tIEZyYW1lIHRvIEFuaW1h
dGlvbkNvbnRyb2xsZXIuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD00OTA3MworCisgICAgICAgIENoYW5nZWQgdGhlIG5hbWUgb2Ygc3VzcGVuZEFuaW1h
dGlvbnMvcmVzdW1lQW5pbWF0aW9ucyB0bworICAgICAgICBzdXNwZW5kQW5pbWF0aW9uc0luRG9j
dW1lbnQvcmVzdW1lQW5pbWF0aW9uc0luRG9jdW1lbnQuIFRoZXNlIGFyZSBubworICAgICAgICBs
b25nZXIgZXhwb3J0ZWQsIGJ1dCBoYXZlIHRoZSBzYW1lIGZ1bmN0aW9uYWxpdHkgYXMgYmVmb3Jl
LiBJIHRoZW4KKyAgICAgICAgYWRkZWQgbmV3IHN1c3BlbmRBbmltYXRpb25zL3Jlc3VtZUFuaW1h
dGlvbnMgZnVuY3Rpb24gd2hpY2ggdGFrZQorICAgICAgICBubyBwYXJhbXMgYW5kIHN1c3BlbmQv
cmVzdW1lIG9uIHRoZSBmcmFtZSBvd25pbmcgdGhlIGFuaW1hdGlvbgorICAgICAgICBjb250cm9s
bGVyIGFuZCBhbGwgaXRzIGNoaWxkIGZyYW1lcy4gVGhlc2UgYXJlIHRoZSBmdW5jdGlvbnMgdGhh
dAorICAgICAgICBhcmUgbm93IGV4cG9ydGVkLiBJIHRoZW4gY2hhbmdlZCBhbGwgdGhlIHBsYXRm
b3JtIHNwZWNpZmljIFdlYktpdAorICAgICAgICBjb2RlIHRvIHVzZSB0aGVzZSBmdW5jdGlvbnMu
CisKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAgICAgICAgKiBwYWdlL0ZyYW1lLmNwcDoK
KyAgICAgICAgKiBwYWdlL0ZyYW1lLmg6CisgICAgICAgICogcGFnZS9hbmltYXRpb24vQW5pbWF0
aW9uQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBbmltYXRpb25Db250cm9sbGVy
UHJpdmF0ZTo6c3VzcGVuZEFuaW1hdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6QW5pbWF0aW9u
Q29udHJvbGxlclByaXZhdGU6OnJlc3VtZUFuaW1hdGlvbnMpOgorCiAyMDEwLTExLTA1ICBSeW9z
dWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmlu
IEFkbGVyLgpJbmRleDogV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL1dlYkNvcmUuZXhwLmluCShyZXZpc2lvbiA3MTQyNCkKKysrIFdlYkNvcmUvV2ViQ29yZS5l
eHAuaW4JKHdvcmtpbmcgY29weSkKQEAgLTQzMSw4ICs0MzEsOCBAQCBfX1pON1dlYkNvcmUxOFNl
YXJjaFBvcHVwTWVudU1hY0MxRVBOU18xCiBfX1pON1dlYkNvcmUxOGlzU3RhcnRPZlBhcmFncmFw
aEVSS05TXzE1VmlzaWJsZVBvc2l0aW9uRU5TXzhQb3NpdGlvbjI3RWRpdGluZ0JvdW5kYXJ5Q3Jv
c3NpbmdSdWxlRQogX19aTjdXZWJDb3JlMThwbHVnaW5TY3JpcHRPYmplY3RFUE4zSlNDOUV4ZWNT
dGF0ZUVQTlNfMTNKU0hUTUxFbGVtZW50RQogX19aTjdXZWJDb3JlMThwcm94eVNlcnZlcnNGb3JV
UkxFUktOU180S1VSTEVQS05TXzE3TmV0d29ya2luZ0NvbnRleHRFCi1fX1pON1dlYkNvcmUxOUFu
aW1hdGlvbkNvbnRyb2xsZXIxNnJlc3VtZUFuaW1hdGlvbnNFUE5TXzhEb2N1bWVudEUKLV9fWk43
V2ViQ29yZTE5QW5pbWF0aW9uQ29udHJvbGxlcjE3c3VzcGVuZEFuaW1hdGlvbnNFUE5TXzhEb2N1
bWVudEUKK19fWk43V2ViQ29yZTE5QW5pbWF0aW9uQ29udHJvbGxlcjE2cmVzdW1lQW5pbWF0aW9u
c0V2CitfX1pON1dlYkNvcmUxOUFuaW1hdGlvbkNvbnRyb2xsZXIxN3N1c3BlbmRBbmltYXRpb25z
RXYKIF9fWk43V2ViQ29yZTE5QW5pbWF0aW9uQ29udHJvbGxlcjIwcGF1c2VBbmltYXRpb25BdFRp
bWVFUE5TXzEyUmVuZGVyT2JqZWN0RVJLTjNXVEY2U3RyaW5nRWQKIF9fWk43V2ViQ29yZTE5QW5p
bWF0aW9uQ29udHJvbGxlcjIxcGF1c2VUcmFuc2l0aW9uQXRUaW1lRVBOU18xMlJlbmRlck9iamVj
dEVSS04zV1RGNlN0cmluZ0VkCiBfX1pON1dlYkNvcmUxOUJhY2tGb3J3YXJkTGlzdEltcGwxMHJl
bW92ZUl0ZW1FUE5TXzExSGlzdG9yeUl0ZW1FCkBAIC02MzQsMTAgKzYzNCw4IEBAIF9fWk43V2Vi
Q29yZTVDYWNoZTEzZ2V0U3RhdGlzdGljc0V2CiBfX1pON1dlYkNvcmU1Q2FjaGUxM3NldENhcGFj
aXRpZXNFampqCiBfX1pON1dlYkNvcmU1RnJhbWUxMGNyZWF0ZVZpZXdFUktOU183SW50U2l6ZUVS
S05TXzVDb2xvckViUzNfYk5TXzEzU2Nyb2xsYmFyTW9kZUViUzdfYgogX19aTjdXZWJDb3JlNUZy
YW1lMTRmcmFtZUZvcldpZGdldEVQS05TXzZXaWRnZXRFCi1fX1pON1dlYkNvcmU1RnJhbWUxNnJl
c3VtZUFuaW1hdGlvbnNFdgogX19aTjdXZWJDb3JlNUZyYW1lMTdzZXRQYWdlWm9vbUZhY3RvckVm
CiBfX1pON1dlYkNvcmU1RnJhbWUxN3NldFRleHRab29tRmFjdG9yRWYKLV9fWk43V2ViQ29yZTVG
cmFtZTE3c3VzcGVuZEFuaW1hdGlvbnNFdgogX19aTjdXZWJDb3JlNUZyYW1lMjN2aXNpYmxlUG9z
aXRpb25Gb3JQb2ludEVSS05TXzhJbnRQb2ludEUKIF9fWk43V2ViQ29yZTVGcmFtZTI1bWF0Y2hM
YWJlbHNBZ2FpbnN0RWxlbWVudEVQN05TQXJyYXlQTlNfN0VsZW1lbnRFCiBfX1pON1dlYkNvcmU1
RnJhbWUyNXNldFBhZ2VBbmRUZXh0Wm9vbUZhY3RvcnNFZmYKSW5kZXg6IFdlYkNvcmUvZG9tL0Rv
Y3VtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJKHJldmlz
aW9uIDcxNDIzKQorKysgV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yMDMzLDcgKzIwMzMsNyBAQCB2b2lkIERvY3VtZW50OjppbXBsaWNpdENsb3NlKCkKIAogICAg
IC8vIFJlc3VtZSB0aGUgYW5pbWF0aW9ucyAob3Igc3RhcnQgdGhlbSkKICAgICBpZiAoZikKLSAg
ICAgICAgZi0+YW5pbWF0aW9uKCktPnJlc3VtZUFuaW1hdGlvbnModGhpcyk7CisgICAgICAgIGYt
PmFuaW1hdGlvbigpLT5yZXN1bWVBbmltYXRpb25zRm9yRG9jdW1lbnQodGhpcyk7CiAKICAgICBJ
bWFnZUxvYWRlcjo6ZGlzcGF0Y2hQZW5kaW5nQmVmb3JlTG9hZEV2ZW50cygpOwogICAgIEltYWdl
TG9hZGVyOjpkaXNwYXRjaFBlbmRpbmdMb2FkRXZlbnRzKCk7CkluZGV4OiBXZWJDb3JlL2hpc3Rv
cnkvQ2FjaGVkRnJhbWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaGlzdG9yeS9DYWNoZWRG
cmFtZS5jcHAJKHJldmlzaW9uIDcxNDIzKQorKysgV2ViQ29yZS9oaXN0b3J5L0NhY2hlZEZyYW1l
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTAsNyArOTAsNyBAQCB2b2lkIENhY2hlZEZyYW1lQmFz
ZTo6cmVzdG9yZSgpCiAgICAgICAgIG1fZG9jdW1lbnQtPmFjY2Vzc1NWR0V4dGVuc2lvbnMoKS0+
dW5wYXVzZUFuaW1hdGlvbnMoKTsKICNlbmRpZgogCi0gICAgZnJhbWUtPmFuaW1hdGlvbigpLT5y
ZXN1bWVBbmltYXRpb25zKG1fZG9jdW1lbnQuZ2V0KCkpOworICAgIGZyYW1lLT5hbmltYXRpb24o
KS0+cmVzdW1lQW5pbWF0aW9uc0ZvckRvY3VtZW50KG1fZG9jdW1lbnQuZ2V0KCkpOwogICAgIGZy
YW1lLT5ldmVudEhhbmRsZXIoKS0+c2V0TW91c2VQcmVzc05vZGUobV9tb3VzZVByZXNzTm9kZS5n
ZXQoKSk7CiAgICAgbV9kb2N1bWVudC0+cmVzdW1lQWN0aXZlRE9NT2JqZWN0cygpOwogCkluZGV4
OiBXZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9GcmFt
ZS5jcHAJKHJldmlzaW9uIDcxNDI0KQorKysgV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNjQwLDcgKzY0MCw3IEBAIHZvaWQgRnJhbWU6OmNsZWFyVGltZXJzKEZyYW1l
VmlldyAqdmlldywKICAgICBpZiAodmlldykgewogICAgICAgICB2aWV3LT51bnNjaGVkdWxlUmVs
YXlvdXQoKTsKICAgICAgICAgaWYgKHZpZXctPmZyYW1lKCkpIHsKLSAgICAgICAgICAgIHZpZXct
PmZyYW1lKCktPmFuaW1hdGlvbigpLT5zdXNwZW5kQW5pbWF0aW9ucyhkb2N1bWVudCk7CisgICAg
ICAgICAgICB2aWV3LT5mcmFtZSgpLT5hbmltYXRpb24oKS0+c3VzcGVuZEFuaW1hdGlvbnNGb3JE
b2N1bWVudChkb2N1bWVudCk7CiAgICAgICAgICAgICB2aWV3LT5mcmFtZSgpLT5ldmVudEhhbmRs
ZXIoKS0+c3RvcEF1dG9zY3JvbGxUaW1lcigpOwogICAgICAgICB9CiAgICAgfQpAQCAtOTg5LDIy
ICs5ODksNCBAQCB2b2lkIEZyYW1lOjpzY2FsZVBhZ2UoZmxvYXQgc2NhbGUpCiAgICAgfQogfQog
Ci12b2lkIEZyYW1lOjpzdXNwZW5kQW5pbWF0aW9ucygpCi17Ci0gICAgYW5pbWF0aW9uKCktPnN1
c3BlbmRBbmltYXRpb25zKGRvY3VtZW50KCkpOwotICAgIAotICAgIC8vIEhhbmRsZSBzdWJmcmFt
ZXMKLSAgICBmb3IgKEZyYW1lKiBjaGlsZCA9IHRyZWUoKS0+Zmlyc3RDaGlsZCgpOyBjaGlsZDsg
Y2hpbGQgPSBjaGlsZC0+dHJlZSgpLT5uZXh0U2libGluZygpKQotICAgICAgICBjaGlsZC0+c3Vz
cGVuZEFuaW1hdGlvbnMoKTsKLX0KLQotdm9pZCBGcmFtZTo6cmVzdW1lQW5pbWF0aW9ucygpCi17
Ci0gICAgYW5pbWF0aW9uKCktPnJlc3VtZUFuaW1hdGlvbnMoZG9jdW1lbnQoKSk7Ci0gICAgCi0g
ICAgLy8gSGFuZGxlIHN1YmZyYW1lcwotICAgIGZvciAoRnJhbWUqIGNoaWxkID0gdHJlZSgpLT5m
aXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT50cmVlKCktPm5leHRTaWJsaW5nKCkp
Ci0gICAgICAgIGNoaWxkLT5yZXN1bWVBbmltYXRpb25zKCk7Ci19Ci0KIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvcGFnZS9GcmFtZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvcGFnZS9GcmFtZS5oCShyZXZpc2lvbiA3MTQyNCkKKysrIFdlYkNvcmUvcGFnZS9GcmFtZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC05OSw5ICs5OSw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICAgICAgQW5pbWF0aW9uQ29udHJvbGxlciogYW5pbWF0aW9uKCkgY29uc3Q7CiAgICAgICAgIFNj
cmlwdENvbnRyb2xsZXIqIHNjcmlwdCgpOwogICAgICAgICAKLSAgICAgICAgdm9pZCBzdXNwZW5k
QW5pbWF0aW9ucygpOwotICAgICAgICB2b2lkIHJlc3VtZUFuaW1hdGlvbnMoKTsKLQogICAgICAg
ICBSZW5kZXJWaWV3KiBjb250ZW50UmVuZGVyZXIoKSBjb25zdDsgLy8gUm9vdCBvZiB0aGUgcmVu
ZGVyIHRyZWUgZm9yIHRoZSBkb2N1bWVudCBjb250YWluZWQgaW4gdGhpcyBmcmFtZS4KICAgICAg
ICAgUmVuZGVyUGFydCogb3duZXJSZW5kZXJlcigpIGNvbnN0OyAvLyBSZW5kZXJlciBmb3IgdGhl
IGVsZW1lbnQgdGhhdCBjb250YWlucyB0aGlzIGZyYW1lLgogCkluZGV4OiBXZWJDb3JlL3BhZ2Uv
YW5pbWF0aW9uL0FuaW1hdGlvbkNvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
cGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQ29udHJvbGxlci5jcHAJKHJldmlzaW9uIDcxNDIzKQor
KysgV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25Db250cm9sbGVyLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjI3LDEzICsyMjcsNjEgQEAgYm9vbCBBbmltYXRpb25Db250cm9sbGVyUHJp
dmF0ZTo6aXNSdW5uaQogICAgIHJldHVybiBhbmltYXRpb24tPmlzQW5pbWF0aW5nUHJvcGVydHko
cHJvcGVydHksIHRydWUsIGlzUnVubmluZ05vdyk7CiB9CiAKLXZvaWQgQW5pbWF0aW9uQ29udHJv
bGxlclByaXZhdGU6OnN1c3BlbmRBbmltYXRpb25zKERvY3VtZW50KiBkb2N1bWVudCkKK3ZvaWQg
QW5pbWF0aW9uQ29udHJvbGxlclByaXZhdGU6OnN1c3BlbmRBbmltYXRpb25zKCkKIHsKICAgICBz
ZXRCZWdpbkFuaW1hdGlvblVwZGF0ZVRpbWUoY0JlZ2luQW5pbWF0aW9uVXBkYXRlVGltZU5vdFNl
dCk7CiAgICAgCiAgICAgUmVuZGVyT2JqZWN0QW5pbWF0aW9uTWFwOjpjb25zdF9pdGVyYXRvciBh
bmltYXRpb25zRW5kID0gbV9jb21wb3NpdGVBbmltYXRpb25zLmVuZCgpOwogICAgIGZvciAoUmVu
ZGVyT2JqZWN0QW5pbWF0aW9uTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IG1fY29tcG9zaXRlQW5p
bWF0aW9ucy5iZWdpbigpOyBpdCAhPSBhbmltYXRpb25zRW5kOyArK2l0KSB7CiAgICAgICAgIFJl
bmRlck9iamVjdCogcmVuZGVyZXIgPSBpdC0+Zmlyc3Q7CisgICAgICAgIGlmIChyZW5kZXJlci0+
ZG9jdW1lbnQoKSA9PSBtX2ZyYW1lLT5kb2N1bWVudCgpKSB7CisgICAgICAgICAgICBDb21wb3Np
dGVBbmltYXRpb24qIGNvbXBBbmltID0gaXQtPnNlY29uZC5nZXQoKTsKKyAgICAgICAgICAgIGNv
bXBBbmltLT5zdXNwZW5kQW5pbWF0aW9ucygpOworICAgICAgICB9CisgICAgfQorICAgIAorICAg
IHVwZGF0ZUFuaW1hdGlvblRpbWVyKCk7CisgICAgCisgICAgLy8gVHJhdmVyc2Ugc3ViZnJhbWVz
CisgICAgZm9yIChGcmFtZSogY2hpbGQgPSBtX2ZyYW1lLT50cmVlKCktPmZpcnN0Q2hpbGQoKTsg
Y2hpbGQ7IGNoaWxkID0gY2hpbGQtPnRyZWUoKS0+bmV4dFNpYmxpbmcoKSkKKyAgICAgICAgY2hp
bGQtPmFuaW1hdGlvbigpLT5zdXNwZW5kQW5pbWF0aW9ucygpOworfQorCit2b2lkIEFuaW1hdGlv
bkNvbnRyb2xsZXJQcml2YXRlOjpyZXN1bWVBbmltYXRpb25zKCkKK3sKKyAgICBzZXRCZWdpbkFu
aW1hdGlvblVwZGF0ZVRpbWUoY0JlZ2luQW5pbWF0aW9uVXBkYXRlVGltZU5vdFNldCk7CisgICAg
CisgICAgUmVuZGVyT2JqZWN0QW5pbWF0aW9uTWFwOjpjb25zdF9pdGVyYXRvciBhbmltYXRpb25z
RW5kID0gbV9jb21wb3NpdGVBbmltYXRpb25zLmVuZCgpOworICAgIGZvciAoUmVuZGVyT2JqZWN0
QW5pbWF0aW9uTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IG1fY29tcG9zaXRlQW5pbWF0aW9ucy5i
ZWdpbigpOyBpdCAhPSBhbmltYXRpb25zRW5kOyArK2l0KSB7CisgICAgICAgIFJlbmRlck9iamVj
dCogcmVuZGVyZXIgPSBpdC0+Zmlyc3Q7CisgICAgICAgIGlmIChyZW5kZXJlci0+ZG9jdW1lbnQo
KSA9PSBtX2ZyYW1lLT5kb2N1bWVudCgpKSB7CisgICAgICAgICAgICBDb21wb3NpdGVBbmltYXRp
b24qIGNvbXBBbmltID0gaXQtPnNlY29uZC5nZXQoKTsKKyAgICAgICAgICAgIGNvbXBBbmltLT5y
ZXN1bWVBbmltYXRpb25zKCk7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgdXBkYXRlQW5p
bWF0aW9uVGltZXIoKTsKKyAgICAKKyAgICAvLyBUcmF2ZXJzZSBzdWJmcmFtZXMKKyAgICBmb3Ig
KEZyYW1lKiBjaGlsZCA9IG1fZnJhbWUtPnRyZWUoKS0+Zmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hp
bGQgPSBjaGlsZC0+dHJlZSgpLT5uZXh0U2libGluZygpKQorICAgICAgICBjaGlsZC0+YW5pbWF0
aW9uKCktPnJlc3VtZUFuaW1hdGlvbnMoKTsKK30KKwordm9pZCBBbmltYXRpb25Db250cm9sbGVy
UHJpdmF0ZTo6c3VzcGVuZEFuaW1hdGlvbnNGb3JEb2N1bWVudChEb2N1bWVudCogZG9jdW1lbnQp
Cit7CisgICAgLyoKKyAgICBib29sIHRyYXZlcnNlU3ViZnJhbWVzID0gZmFsc2U7CisgICAgaWYg
KCFkb2N1bWVudCkgeworICAgICAgICBkb2N1bWVudCA9IG1fZnJhbWUtPmRvY3VtZW50KCk7Cisg
ICAgICAgIHRyYXZlcnNlU3ViZnJhbWVzID0gdHJ1ZTsKKyAgICB9CisgICAgKi8KKworICAgIHNl
dEJlZ2luQW5pbWF0aW9uVXBkYXRlVGltZShjQmVnaW5BbmltYXRpb25VcGRhdGVUaW1lTm90U2V0
KTsKKyAgICAKKyAgICBSZW5kZXJPYmplY3RBbmltYXRpb25NYXA6OmNvbnN0X2l0ZXJhdG9yIGFu
aW1hdGlvbnNFbmQgPSBtX2NvbXBvc2l0ZUFuaW1hdGlvbnMuZW5kKCk7CisgICAgZm9yIChSZW5k
ZXJPYmplY3RBbmltYXRpb25NYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9jb21wb3NpdGVBbmlt
YXRpb25zLmJlZ2luKCk7IGl0ICE9IGFuaW1hdGlvbnNFbmQ7ICsraXQpIHsKKyAgICAgICAgUmVu
ZGVyT2JqZWN0KiByZW5kZXJlciA9IGl0LT5maXJzdDsKICAgICAgICAgaWYgKHJlbmRlcmVyLT5k
b2N1bWVudCgpID09IGRvY3VtZW50KSB7CiAgICAgICAgICAgICBDb21wb3NpdGVBbmltYXRpb24q
IGNvbXBBbmltID0gaXQtPnNlY29uZC5nZXQoKTsKICAgICAgICAgICAgIGNvbXBBbmltLT5zdXNw
ZW5kQW5pbWF0aW9ucygpOwpAQCAtMjQxLDEwICsyODksMjYgQEAgdm9pZCBBbmltYXRpb25Db250
cm9sbGVyUHJpdmF0ZTo6c3VzcGVuZAogICAgIH0KICAgICAKICAgICB1cGRhdGVBbmltYXRpb25U
aW1lcigpOworICAgIAorICAgIC8qCisgICAgLy8gVHJhdmVyc2Ugc3ViZnJhbWVzIGlmIG5lZWRl
ZAorICAgIGlmICh0cmF2ZXJzZVN1YmZyYW1lcykgeworICAgICAgICBmb3IgKEZyYW1lKiBjaGls
ZCA9IG1fZnJhbWUtPnRyZWUoKS0+Zmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+
dHJlZSgpLT5uZXh0U2libGluZygpKQorICAgICAgICAgICAgY2hpbGQtPmFuaW1hdGlvbigpLT5z
dXNwZW5kQW5pbWF0aW9ucygwKTsKKyAgICB9CisgICAgKi8KIH0KIAotdm9pZCBBbmltYXRpb25D
b250cm9sbGVyUHJpdmF0ZTo6cmVzdW1lQW5pbWF0aW9ucyhEb2N1bWVudCogZG9jdW1lbnQpCit2
b2lkIEFuaW1hdGlvbkNvbnRyb2xsZXJQcml2YXRlOjpyZXN1bWVBbmltYXRpb25zRm9yRG9jdW1l
bnQoRG9jdW1lbnQqIGRvY3VtZW50KQogeworICAgIC8qCisgICAgYm9vbCB0cmF2ZXJzZVN1YmZy
YW1lcyA9IGZhbHNlOworICAgIGlmICghZG9jdW1lbnQpIHsKKyAgICAgICAgZG9jdW1lbnQgPSBt
X2ZyYW1lLT5kb2N1bWVudCgpOworICAgICAgICB0cmF2ZXJzZVN1YmZyYW1lcyA9IHRydWU7Cisg
ICAgfQorICAgICovCisKICAgICBzZXRCZWdpbkFuaW1hdGlvblVwZGF0ZVRpbWUoY0JlZ2luQW5p
bWF0aW9uVXBkYXRlVGltZU5vdFNldCk7CiAgICAgCiAgICAgUmVuZGVyT2JqZWN0QW5pbWF0aW9u
TWFwOjpjb25zdF9pdGVyYXRvciBhbmltYXRpb25zRW5kID0gbV9jb21wb3NpdGVBbmltYXRpb25z
LmVuZCgpOwpAQCAtMjU3LDYgKzMyMSwxNCBAQCB2b2lkIEFuaW1hdGlvbkNvbnRyb2xsZXJQcml2
YXRlOjpyZXN1bWVBCiAgICAgfQogICAgIAogICAgIHVwZGF0ZUFuaW1hdGlvblRpbWVyKCk7Cisg
ICAgCisgICAgLyoKKyAgICAvLyBUcmF2ZXJzZSBzdWJmcmFtZXMgaWYgbmVlZGVkCisgICAgaWYg
KHRyYXZlcnNlU3ViZnJhbWVzKSB7CisgICAgICAgIGZvciAoRnJhbWUqIGNoaWxkID0gbV9mcmFt
ZS0+dHJlZSgpLT5maXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT50cmVlKCktPm5l
eHRTaWJsaW5nKCkpCisgICAgICAgICAgICBjaGlsZC0+YW5pbWF0aW9uKCktPnJlc3VtZUFuaW1h
dGlvbnMoMCk7CisgICAgfQorICAgICovCiB9CiAKIGJvb2wgQW5pbWF0aW9uQ29udHJvbGxlclBy
aXZhdGU6OnBhdXNlQW5pbWF0aW9uQXRUaW1lKFJlbmRlck9iamVjdCogcmVuZGVyZXIsIGNvbnN0
IFN0cmluZyYgbmFtZSwgZG91YmxlIHQpCkBAIC01NTEsMTQgKzYyMywyNCBAQCBib29sIEFuaW1h
dGlvbkNvbnRyb2xsZXI6OmlzUnVubmluZ0FjY2VsCiAgICAgcmV0dXJuIG1fZGF0YS0+aXNSdW5u
aW5nQWNjZWxlcmF0ZWRBbmltYXRpb25PblJlbmRlcmVyKHJlbmRlcmVyLCBwcm9wZXJ0eSwgaXNS
dW5uaW5nTm93KTsKIH0KIAotdm9pZCBBbmltYXRpb25Db250cm9sbGVyOjpzdXNwZW5kQW5pbWF0
aW9ucyhEb2N1bWVudCogZG9jdW1lbnQpCit2b2lkIEFuaW1hdGlvbkNvbnRyb2xsZXI6OnN1c3Bl
bmRBbmltYXRpb25zKCkKK3sKKyAgICBtX2RhdGEtPnN1c3BlbmRBbmltYXRpb25zKCk7Cit9CisK
K3ZvaWQgQW5pbWF0aW9uQ29udHJvbGxlcjo6cmVzdW1lQW5pbWF0aW9ucygpCit7CisgICAgbV9k
YXRhLT5yZXN1bWVBbmltYXRpb25zKCk7Cit9CisKK3ZvaWQgQW5pbWF0aW9uQ29udHJvbGxlcjo6
c3VzcGVuZEFuaW1hdGlvbnNGb3JEb2N1bWVudChEb2N1bWVudCogZG9jdW1lbnQpCiB7Ci0gICAg
bV9kYXRhLT5zdXNwZW5kQW5pbWF0aW9ucyhkb2N1bWVudCk7CisgICAgbV9kYXRhLT5zdXNwZW5k
QW5pbWF0aW9uc0ZvckRvY3VtZW50KGRvY3VtZW50KTsKIH0KIAotdm9pZCBBbmltYXRpb25Db250
cm9sbGVyOjpyZXN1bWVBbmltYXRpb25zKERvY3VtZW50KiBkb2N1bWVudCkKK3ZvaWQgQW5pbWF0
aW9uQ29udHJvbGxlcjo6cmVzdW1lQW5pbWF0aW9uc0ZvckRvY3VtZW50KERvY3VtZW50KiBkb2N1
bWVudCkKIHsKLSAgICBtX2RhdGEtPnJlc3VtZUFuaW1hdGlvbnMoZG9jdW1lbnQpOworICAgIG1f
ZGF0YS0+cmVzdW1lQW5pbWF0aW9uc0ZvckRvY3VtZW50KGRvY3VtZW50KTsKIH0KIAogdm9pZCBB
bmltYXRpb25Db250cm9sbGVyOjpiZWdpbkFuaW1hdGlvblVwZGF0ZSgpCkluZGV4OiBXZWJDb3Jl
L3BhZ2UvYW5pbWF0aW9uL0FuaW1hdGlvbkNvbnRyb2xsZXIuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL3BhZ2UvYW5pbWF0aW9uL0FuaW1hdGlvbkNvbnRyb2xsZXIuaAkocmV2aXNpb24gNzE0MjMp
CisrKyBXZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0FuaW1hdGlvbkNvbnRyb2xsZXIuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNjIsOCArNjIsMTEgQEAgcHVibGljOgogICAgIGJvb2wgaXNSdW5uaW5nQW5p
bWF0aW9uT25SZW5kZXJlcihSZW5kZXJPYmplY3QqLCBDU1NQcm9wZXJ0eUlELCBib29sIGlzUnVu
bmluZ05vdyA9IHRydWUpIGNvbnN0OwogICAgIGJvb2wgaXNSdW5uaW5nQWNjZWxlcmF0ZWRBbmlt
YXRpb25PblJlbmRlcmVyKFJlbmRlck9iamVjdCosIENTU1Byb3BlcnR5SUQsIGJvb2wgaXNSdW5u
aW5nTm93ID0gdHJ1ZSkgY29uc3Q7CiAKLSAgICB2b2lkIHN1c3BlbmRBbmltYXRpb25zKERvY3Vt
ZW50Kik7Ci0gICAgdm9pZCByZXN1bWVBbmltYXRpb25zKERvY3VtZW50Kik7CisgICAgdm9pZCBz
dXNwZW5kQW5pbWF0aW9ucygpOworICAgIHZvaWQgcmVzdW1lQW5pbWF0aW9ucygpOworCisgICAg
dm9pZCBzdXNwZW5kQW5pbWF0aW9uc0ZvckRvY3VtZW50KERvY3VtZW50Kik7CisgICAgdm9pZCBy
ZXN1bWVBbmltYXRpb25zRm9yRG9jdW1lbnQoRG9jdW1lbnQqKTsKIAogICAgIHZvaWQgYmVnaW5B
bmltYXRpb25VcGRhdGUoKTsKICAgICB2b2lkIGVuZEFuaW1hdGlvblVwZGF0ZSgpOwpJbmRleDog
V2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25Db250cm9sbGVyUHJpdmF0ZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQ29udHJvbGxlclByaXZh
dGUuaAkocmV2aXNpb24gNzE0MjMpCisrKyBXZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0FuaW1hdGlv
bkNvbnRyb2xsZXJQcml2YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTY3LDggKzY3LDExIEBAIHB1
YmxpYzoKIAogICAgIGJvb2wgaGFzQW5pbWF0aW9ucygpIGNvbnN0IHsgcmV0dXJuICFtX2NvbXBv
c2l0ZUFuaW1hdGlvbnMuaXNFbXB0eSgpOyB9CiAKLSAgICB2b2lkIHN1c3BlbmRBbmltYXRpb25z
KERvY3VtZW50Kik7Ci0gICAgdm9pZCByZXN1bWVBbmltYXRpb25zKERvY3VtZW50Kik7CisgICAg
dm9pZCBzdXNwZW5kQW5pbWF0aW9ucygpOworICAgIHZvaWQgcmVzdW1lQW5pbWF0aW9ucygpOwor
CisgICAgdm9pZCBzdXNwZW5kQW5pbWF0aW9uc0ZvckRvY3VtZW50KERvY3VtZW50Kik7CisgICAg
dm9pZCByZXN1bWVBbmltYXRpb25zRm9yRG9jdW1lbnQoRG9jdW1lbnQqKTsKIAogICAgIGJvb2wg
aXNSdW5uaW5nQW5pbWF0aW9uT25SZW5kZXJlcihSZW5kZXJPYmplY3QqLCBDU1NQcm9wZXJ0eUlE
LCBib29sIGlzUnVubmluZ05vdykgY29uc3Q7CiAgICAgYm9vbCBpc1J1bm5pbmdBY2NlbGVyYXRl
ZEFuaW1hdGlvbk9uUmVuZGVyZXIoUmVuZGVyT2JqZWN0KiwgQ1NTUHJvcGVydHlJRCwgYm9vbCBp
c1J1bm5pbmdOb3cpIGNvbnN0OwpJbmRleDogV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiA3MTQzNikKKysr
IFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNCBA
QAorMjAxMC0xMS0wNSAgQ2hyaXMgTWFycmluICA8Y21hcnJpbkBhcHBsZS5jb20+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTW92ZSByZXN1bWVBbmlt
YXRpb25zL3N1c3BlbmRBbmltYXRpb25zIGZyb20gRnJhbWUgdG8gQW5pbWF0aW9uQ29udHJvbGxl
ci4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ5MDcz
CisKKyAgICAgICAgKiBzcmMvV2ViQW5pbWF0aW9uQ29udHJvbGxlckltcGwuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJBbmltYXRpb25Db250cm9sbGVySW1wbDo6c3VzcGVuZEFuaW1hdGlvbnMp
OgorICAgICAgICAoV2ViS2l0OjpXZWJBbmltYXRpb25Db250cm9sbGVySW1wbDo6cmVzdW1lQW5p
bWF0aW9ucyk6CisKIDIwMTAtMTAtMjcgIEplcmVteSBPcmxvdyAgPGpvcmxvd0BjaHJvbWl1bS5v
cmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgU3RldmUgQmxvY2suCkluZGV4OiBXZWJLaXQvY2hy
b21pdW0vc3JjL1dlYkFuaW1hdGlvbkNvbnRyb2xsZXJJbXBsLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYkFuaW1hdGlvbkNvbnRyb2xsZXJJbXBsLmNwcAkocmV2aXNp
b24gNzE0MjMpCisrKyBXZWJLaXQvY2hyb21pdW0vc3JjL1dlYkFuaW1hdGlvbkNvbnRyb2xsZXJJ
bXBsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTQsNyArOTQsNyBAQCB2b2lkIFdlYkFuaW1hdGlv
bkNvbnRyb2xsZXJJbXBsOjpzdXNwZW5kCiAgICAgICAgIHJldHVybjsKICAgICBpZiAoIW1fZnJh
bWVJbXBsLT5mcmFtZSgpKQogICAgICAgICByZXR1cm47Ci0gICAgY29udHJvbGxlci0+c3VzcGVu
ZEFuaW1hdGlvbnMobV9mcmFtZUltcGwtPmZyYW1lKCktPmRvY3VtZW50KCkpOworICAgIGNvbnRy
b2xsZXItPnN1c3BlbmRBbmltYXRpb25zKCk7CiB9CiAKIHZvaWQgV2ViQW5pbWF0aW9uQ29udHJv
bGxlckltcGw6OnJlc3VtZUFuaW1hdGlvbnMoKSBjb25zdApAQCAtMTA0LDcgKzEwNCw3IEBAIHZv
aWQgV2ViQW5pbWF0aW9uQ29udHJvbGxlckltcGw6OnJlc3VtZUEKICAgICAgICAgcmV0dXJuOwog
ICAgIGlmICghbV9mcmFtZUltcGwtPmZyYW1lKCkpCiAgICAgICAgIHJldHVybjsKLSAgICBjb250
cm9sbGVyLT5yZXN1bWVBbmltYXRpb25zKG1fZnJhbWVJbXBsLT5mcmFtZSgpLT5kb2N1bWVudCgp
KTsKKyAgICBjb250cm9sbGVyLT5yZXN1bWVBbmltYXRpb25zKCk7CiB9CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYktpdApJbmRleDogV2ViS2l0L2d0ay9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
S2l0L2d0ay9DaGFuZ2VMb2cJKHJldmlzaW9uIDcxNDM2KQorKysgV2ViS2l0L2d0ay9DaGFuZ2VM
b2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNCBAQAorMjAxMC0xMS0wNSAgQ2hyaXMgTWFy
cmluICA8Y21hcnJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgTW92ZSByZXN1bWVBbmltYXRpb25zL3N1c3BlbmRBbmltYXRpb25z
IGZyb20gRnJhbWUgdG8gQW5pbWF0aW9uQ29udHJvbGxlci4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ5MDczCisKKyAgICAgICAgKiB3ZWJraXQvd2Vi
a2l0d2ViZnJhbWUuY3BwOgorICAgICAgICAod2Via2l0X3dlYl9mcmFtZV9zdXNwZW5kX2FuaW1h
dGlvbnMpOgorICAgICAgICAod2Via2l0X3dlYl9mcmFtZV9yZXN1bWVfYW5pbWF0aW9ucyk6CisK
IDIwMTAtMTEtMDUgIENocmlzIE1hcnJpbiAgPGNtYXJyaW5AYXBwbGUuY29tPgogCiAgICAgICAg
IFVucmV2aWV3ZWQuCkluZGV4OiBXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJmcmFtZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2ViZnJhbWUuY3BwCShyZXZp
c2lvbiA3MTQyNykKKysrIFdlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYmZyYW1lLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTA1OSw3ICsxMDU5LDcgQEAgdm9pZCB3ZWJraXRfd2ViX2ZyYW1lX3N1
c3BlbmRfYW5pbWF0aW9ucwogICAgIGlmICghY29yZUZyYW1lKQogICAgICAgICByZXR1cm47CiAK
LSAgICBjb3JlRnJhbWUtPnN1c3BlbmRBbmltYXRpb25zKCk7CisgICAgY29yZUZyYW1lLT5hbmlt
YXRpb24oKS0+c3VzcGVuZEFuaW1hdGlvbnMoKTsKIH0KIAogdm9pZCB3ZWJraXRfd2ViX2ZyYW1l
X3Jlc3VtZV9hbmltYXRpb25zKFdlYktpdFdlYkZyYW1lKiBmcmFtZSkKQEAgLTEwNjgsNyArMTA2
OCw3IEBAIHZvaWQgd2Via2l0X3dlYl9mcmFtZV9yZXN1bWVfYW5pbWF0aW9ucygKICAgICBpZiAo
IWNvcmVGcmFtZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgY29yZUZyYW1lLT5yZXN1bWVBbmlt
YXRpb25zKCk7CisgICAgY29yZUZyYW1lLT5hbmltYXRpb24oKS0+cmVzdW1lQW5pbWF0aW9ucygp
OwogfQogCiBnY2hhciogd2Via2l0X3dlYl9mcmFtZV9nZXRfcmVzcG9uc2VfbWltZV90eXBlKFdl
YktpdFdlYkZyYW1lKiBmcmFtZSkKSW5kZXg6IFdlYktpdC9tYWMvQ2hhbmdlTG9nCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYktpdC9tYWMvQ2hhbmdlTG9nCShyZXZpc2lvbiA3MTQzNikKKysrIFdlYktpdC9t
YWMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTAtMTEtMDUg
IENocmlzIE1hcnJpbiAgPGNtYXJyaW5AYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1vdmUgcmVzdW1lQW5pbWF0aW9ucy9zdXNwZW5k
QW5pbWF0aW9ucyBmcm9tIEZyYW1lIHRvIEFuaW1hdGlvbkNvbnRyb2xsZXIuCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00OTA3MworCisgICAgICAgICog
V2ViVmlldy9XZWJGcmFtZS5tbToKKyAgICAgICAgKC1bV2ViRnJhbWUgX3N1c3BlbmRBbmltYXRp
b25zXSk6CisgICAgICAgICgtW1dlYkZyYW1lIF9yZXN1bWVBbmltYXRpb25zXSk6CisKIDIwMTAt
MTEtMDQgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2
aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCkluZGV4OiBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWUu
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCShyZXZpc2lv
biA3MTQyNCkKKysrIFdlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQkod29ya2luZyBjb3B5
KQpAQCAtMTEzNyw3ICsxMTM3LDcgQEAgLSAodm9pZCkgX3N1c3BlbmRBbmltYXRpb25zCiAgICAg
aWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuOwogICAgICAgICAKLSAgICBmcmFtZS0+c3VzcGVu
ZEFuaW1hdGlvbnMoKTsKKyAgICBmcmFtZS0+YW5pbWF0aW9uKCktPnN1c3BlbmRBbmltYXRpb25z
KCk7CiB9CiAKIC0gKHZvaWQpIF9yZXN1bWVBbmltYXRpb25zCkBAIC0xMTQ2LDcgKzExNDYsNyBA
QCAtICh2b2lkKSBfcmVzdW1lQW5pbWF0aW9ucwogICAgIGlmICghZnJhbWUpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIGZyYW1lLT5yZXN1bWVBbmltYXRpb25zKCk7CisgICAgZnJhbWUtPmFuaW1h
dGlvbigpLT5yZXN1bWVBbmltYXRpb25zKCk7CiB9CiAKIC0gKHZvaWQpX3JlcGxhY2VTZWxlY3Rp
b25XaXRoRnJhZ21lbnQ6KERPTURvY3VtZW50RnJhZ21lbnQgKilmcmFnbWVudCBzZWxlY3RSZXBs
YWNlbWVudDooQk9PTClzZWxlY3RSZXBsYWNlbWVudCBzbWFydFJlcGxhY2U6KEJPT0wpc21hcnRS
ZXBsYWNlIG1hdGNoU3R5bGU6KEJPT0wpbWF0Y2hTdHlsZQpJbmRleDogV2ViS2l0L21hYy9XZWJW
aWV3L1dlYlZpZXcubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcu
bW0JKHJldmlzaW9uIDcxNDIzKQorKysgV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0JKHdv
cmtpbmcgY29weSkKQEAgLTI2MTEsOSArMjYxMSw5IEBAIC0gKHZvaWQpc2V0Q1NTQW5pbWF0aW9u
c1N1c3BlbmRlZDooQk9PTCkKICAgICAKICAgICBGcmFtZSogZnJhbWUgPSBjb3JlKFtzZWxmIG1h
aW5GcmFtZV0pOwogICAgIGlmIChzdXNwZW5kZWQpCi0gICAgICAgIGZyYW1lLT5hbmltYXRpb24o
KS0+c3VzcGVuZEFuaW1hdGlvbnMoZnJhbWUtPmRvY3VtZW50KCkpOworICAgICAgICBmcmFtZS0+
YW5pbWF0aW9uKCktPnN1c3BlbmRBbmltYXRpb25zKCk7CiAgICAgZWxzZQotICAgICAgICBmcmFt
ZS0+YW5pbWF0aW9uKCktPnJlc3VtZUFuaW1hdGlvbnMoZnJhbWUtPmRvY3VtZW50KCkpOworICAg
ICAgICBmcmFtZS0+YW5pbWF0aW9uKCktPnJlc3VtZUFuaW1hdGlvbnMoKTsKIH0KIAogKyAodm9p
ZClfc2V0RG9tYWluUmVsYXhhdGlvbkZvcmJpZGRlbjooQk9PTClmb3JiaWRkZW4gZm9yVVJMU2No
ZW1lOihOU1N0cmluZyAqKXNjaGVtZQpJbmRleDogV2ViS2l0L3F0L0NoYW5nZUxvZwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJLaXQvcXQvQ2hhbmdlTG9nCShyZXZpc2lvbiA3MTQzNikKKysrIFdlYktpdC9x
dC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNCBAQAorMjAxMC0xMS0wNSAg
Q2hyaXMgTWFycmluICA8Y21hcnJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTW92ZSByZXN1bWVBbmltYXRpb25zL3N1c3BlbmRB
bmltYXRpb25zIGZyb20gRnJhbWUgdG8gQW5pbWF0aW9uQ29udHJvbGxlci4KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ5MDczCisKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5jcHA6CisgICAgICAgIChEdW1w
UmVuZGVyVHJlZVN1cHBvcnRRdDo6c3VzcGVuZEFuaW1hdGlvbnMpOgorICAgICAgICAoRHVtcFJl
bmRlclRyZWVTdXBwb3J0UXQ6OnJlc3VtZUFuaW1hdGlvbnMpOgorCiAyMDEwLTExLTAzICBBbnRv
bmlvIEdvbWVzICA8dG9uaWtpdG9vQHdlYmtpdC5vcmc+LCBBbmRyZSBQZWRyYWxobyAgPGFuZHJl
LnBlZHJhbGhvQGdtYWlsLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRl
IENocmlzdGlhbnNlbiBhbmQgQW50dGkgS29pdmlzdG8uCkluZGV4OiBXZWJLaXQvcXQvV2ViQ29y
ZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktp
dC9xdC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5jcHAJKHJldmlzaW9u
IDcxNDIzKQorKysgV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9y
dFF0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjc5LDcgKzI3OSw3IEBAIHZvaWQgRHVtcFJlbmRl
clRyZWVTdXBwb3J0UXQ6OnN1c3BlbmRBbmkKICAgICBpZiAoIWNvbnRyb2xsZXIpCiAgICAgICAg
IHJldHVybjsKIAotICAgIGNvbnRyb2xsZXItPnN1c3BlbmRBbmltYXRpb25zKGNvcmVGcmFtZS0+
ZG9jdW1lbnQoKSk7CisgICAgY29udHJvbGxlci0+c3VzcGVuZEFuaW1hdGlvbnMoKTsKIH0KIAog
dm9pZCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6cmVzdW1lQW5pbWF0aW9ucyhRV2ViRnJhbWUg
KmZyYW1lKQpAQCAtMjkyLDcgKzI5Miw3IEBAIHZvaWQgRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6
OnJlc3VtZUFuaW0KICAgICBpZiAoIWNvbnRyb2xsZXIpCiAgICAgICAgIHJldHVybjsKIAotICAg
IGNvbnRyb2xsZXItPnJlc3VtZUFuaW1hdGlvbnMoY29yZUZyYW1lLT5kb2N1bWVudCgpKTsKKyAg
ICBjb250cm9sbGVyLT5yZXN1bWVBbmltYXRpb25zKCk7CiB9CiAKIHZvaWQgRHVtcFJlbmRlclRy
ZWVTdXBwb3J0UXQ6OmNsZWFyRnJhbWVOYW1lKFFXZWJGcmFtZSogZnJhbWUpCkluZGV4OiBXZWJL
aXQvd2luL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvd2luL0NoYW5nZUxvZwkocmV2
aXNpb24gNzE0MzYpCisrKyBXZWJLaXQvd2luL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAt
MSwzICsxLDE0IEBACisyMDEwLTExLTA1ICBDaHJpcyBNYXJyaW4gIDxjbWFycmluQGFwcGxlLmNv
bT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNb3Zl
IHJlc3VtZUFuaW1hdGlvbnMvc3VzcGVuZEFuaW1hdGlvbnMgZnJvbSBGcmFtZSB0byBBbmltYXRp
b25Db250cm9sbGVyLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NDkwNzMKKworICAgICAgICAqIFdlYkZyYW1lLmNwcDoKKyAgICAgICAgKFdlYkZyYW1l
OjpzdXNwZW5kQW5pbWF0aW9ucyk6CisgICAgICAgIChXZWJGcmFtZTo6cmVzdW1lQW5pbWF0aW9u
cyk6CisKIDIwMTAtMTEtMDUgIEJyaWFuIFdlaW5zdGVpbiAgPGJ3ZWluc3RlaW5AYXBwbGUuY29t
PgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFuZGVycyBDYXJsc3Nvbi4KSW5kZXg6IFdlYktpdC93
aW4vV2ViRnJhbWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC93aW4vV2ViRnJhbWUuY3BwCShy
ZXZpc2lvbiA3MTQyNCkKKysrIFdlYktpdC93aW4vV2ViRnJhbWUuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xMjk5LDcgKzEyOTksNyBAQCBIUkVTVUxUIFdlYkZyYW1lOjpzdXNwZW5kQW5pbWF0aW9u
cygpCiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKIAotICAgIGZyYW1l
LT5zdXNwZW5kQW5pbWF0aW9ucygpOworICAgIGZyYW1lLT5hbmltYXRpb24oKS0+c3VzcGVuZEFu
aW1hdGlvbnMoKTsKICAgICByZXR1cm4gU19PSzsKIH0KIApAQCAtMTMwOSw3ICsxMzA5LDcgQEAg
SFJFU1VMVCBXZWJGcmFtZTo6cmVzdW1lQW5pbWF0aW9ucygpCiAgICAgaWYgKCFmcmFtZSkKICAg
ICAgICAgcmV0dXJuIEVfRkFJTDsKIAotICAgIGZyYW1lLT5yZXN1bWVBbmltYXRpb25zKCk7Cisg
ICAgZnJhbWUtPmFuaW1hdGlvbigpLT5yZXN1bWVBbmltYXRpb25zKCk7CiAgICAgcmV0dXJuIFNf
T0s7CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>73110</attachid>
            <date>2010-11-05 13:37:23 -0700</date>
            <delta_ts>2010-11-05 13:57:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-49073-20101105133722.patch</filename>
            <type>text/plain</type>
            <size>17534</size>
            <attacher name="Chris Marrin">cmarrin</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3MTQzNikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjYgQEAKKzIwMTAtMTEtMDUgIENocmlzIE1hcnJpbiAgPGNtYXJyaW5AYXBwbGUu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1v
dmUgcmVzdW1lQW5pbWF0aW9ucy9zdXNwZW5kQW5pbWF0aW9ucyBmcm9tIEZyYW1lIHRvIEFuaW1h
dGlvbkNvbnRyb2xsZXIuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD00OTA3MworCisgICAgICAgIENoYW5nZWQgdGhlIG5hbWUgb2Ygc3VzcGVuZEFuaW1h
dGlvbnMvcmVzdW1lQW5pbWF0aW9ucyB0bworICAgICAgICBzdXNwZW5kQW5pbWF0aW9uc0luRG9j
dW1lbnQvcmVzdW1lQW5pbWF0aW9uc0luRG9jdW1lbnQuIFRoZXNlIGFyZSBubworICAgICAgICBs
b25nZXIgZXhwb3J0ZWQsIGJ1dCBoYXZlIHRoZSBzYW1lIGZ1bmN0aW9uYWxpdHkgYXMgYmVmb3Jl
LiBJIHRoZW4KKyAgICAgICAgYWRkZWQgbmV3IHN1c3BlbmRBbmltYXRpb25zL3Jlc3VtZUFuaW1h
dGlvbnMgZnVuY3Rpb24gd2hpY2ggdGFrZQorICAgICAgICBubyBwYXJhbXMgYW5kIHN1c3BlbmQv
cmVzdW1lIG9uIHRoZSBmcmFtZSBvd25pbmcgdGhlIGFuaW1hdGlvbgorICAgICAgICBjb250cm9s
bGVyIGFuZCBhbGwgaXRzIGNoaWxkIGZyYW1lcy4gVGhlc2UgYXJlIHRoZSBmdW5jdGlvbnMgdGhh
dAorICAgICAgICBhcmUgbm93IGV4cG9ydGVkLiBJIHRoZW4gY2hhbmdlZCBhbGwgdGhlIHBsYXRm
b3JtIHNwZWNpZmljIFdlYktpdAorICAgICAgICBjb2RlIHRvIHVzZSB0aGVzZSBmdW5jdGlvbnMu
CisKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAgICAgICAgKiBwYWdlL0ZyYW1lLmNwcDoK
KyAgICAgICAgKiBwYWdlL0ZyYW1lLmg6CisgICAgICAgICogcGFnZS9hbmltYXRpb24vQW5pbWF0
aW9uQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBbmltYXRpb25Db250cm9sbGVy
UHJpdmF0ZTo6c3VzcGVuZEFuaW1hdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6QW5pbWF0aW9u
Q29udHJvbGxlclByaXZhdGU6OnJlc3VtZUFuaW1hdGlvbnMpOgorCiAyMDEwLTExLTA1ICBSeW9z
dWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmlu
IEFkbGVyLgpJbmRleDogV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL1dlYkNvcmUuZXhwLmluCShyZXZpc2lvbiA3MTQyNCkKKysrIFdlYkNvcmUvV2ViQ29yZS5l
eHAuaW4JKHdvcmtpbmcgY29weSkKQEAgLTQzMSw4ICs0MzEsOCBAQCBfX1pON1dlYkNvcmUxOFNl
YXJjaFBvcHVwTWVudU1hY0MxRVBOU18xCiBfX1pON1dlYkNvcmUxOGlzU3RhcnRPZlBhcmFncmFw
aEVSS05TXzE1VmlzaWJsZVBvc2l0aW9uRU5TXzhQb3NpdGlvbjI3RWRpdGluZ0JvdW5kYXJ5Q3Jv
c3NpbmdSdWxlRQogX19aTjdXZWJDb3JlMThwbHVnaW5TY3JpcHRPYmplY3RFUE4zSlNDOUV4ZWNT
dGF0ZUVQTlNfMTNKU0hUTUxFbGVtZW50RQogX19aTjdXZWJDb3JlMThwcm94eVNlcnZlcnNGb3JV
UkxFUktOU180S1VSTEVQS05TXzE3TmV0d29ya2luZ0NvbnRleHRFCi1fX1pON1dlYkNvcmUxOUFu
aW1hdGlvbkNvbnRyb2xsZXIxNnJlc3VtZUFuaW1hdGlvbnNFUE5TXzhEb2N1bWVudEUKLV9fWk43
V2ViQ29yZTE5QW5pbWF0aW9uQ29udHJvbGxlcjE3c3VzcGVuZEFuaW1hdGlvbnNFUE5TXzhEb2N1
bWVudEUKK19fWk43V2ViQ29yZTE5QW5pbWF0aW9uQ29udHJvbGxlcjE2cmVzdW1lQW5pbWF0aW9u
c0V2CitfX1pON1dlYkNvcmUxOUFuaW1hdGlvbkNvbnRyb2xsZXIxN3N1c3BlbmRBbmltYXRpb25z
RXYKIF9fWk43V2ViQ29yZTE5QW5pbWF0aW9uQ29udHJvbGxlcjIwcGF1c2VBbmltYXRpb25BdFRp
bWVFUE5TXzEyUmVuZGVyT2JqZWN0RVJLTjNXVEY2U3RyaW5nRWQKIF9fWk43V2ViQ29yZTE5QW5p
bWF0aW9uQ29udHJvbGxlcjIxcGF1c2VUcmFuc2l0aW9uQXRUaW1lRVBOU18xMlJlbmRlck9iamVj
dEVSS04zV1RGNlN0cmluZ0VkCiBfX1pON1dlYkNvcmUxOUJhY2tGb3J3YXJkTGlzdEltcGwxMHJl
bW92ZUl0ZW1FUE5TXzExSGlzdG9yeUl0ZW1FCkBAIC02MzQsMTAgKzYzNCw4IEBAIF9fWk43V2Vi
Q29yZTVDYWNoZTEzZ2V0U3RhdGlzdGljc0V2CiBfX1pON1dlYkNvcmU1Q2FjaGUxM3NldENhcGFj
aXRpZXNFampqCiBfX1pON1dlYkNvcmU1RnJhbWUxMGNyZWF0ZVZpZXdFUktOU183SW50U2l6ZUVS
S05TXzVDb2xvckViUzNfYk5TXzEzU2Nyb2xsYmFyTW9kZUViUzdfYgogX19aTjdXZWJDb3JlNUZy
YW1lMTRmcmFtZUZvcldpZGdldEVQS05TXzZXaWRnZXRFCi1fX1pON1dlYkNvcmU1RnJhbWUxNnJl
c3VtZUFuaW1hdGlvbnNFdgogX19aTjdXZWJDb3JlNUZyYW1lMTdzZXRQYWdlWm9vbUZhY3RvckVm
CiBfX1pON1dlYkNvcmU1RnJhbWUxN3NldFRleHRab29tRmFjdG9yRWYKLV9fWk43V2ViQ29yZTVG
cmFtZTE3c3VzcGVuZEFuaW1hdGlvbnNFdgogX19aTjdXZWJDb3JlNUZyYW1lMjN2aXNpYmxlUG9z
aXRpb25Gb3JQb2ludEVSS05TXzhJbnRQb2ludEUKIF9fWk43V2ViQ29yZTVGcmFtZTI1bWF0Y2hM
YWJlbHNBZ2FpbnN0RWxlbWVudEVQN05TQXJyYXlQTlNfN0VsZW1lbnRFCiBfX1pON1dlYkNvcmU1
RnJhbWUyNXNldFBhZ2VBbmRUZXh0Wm9vbUZhY3RvcnNFZmYKSW5kZXg6IFdlYkNvcmUvZG9tL0Rv
Y3VtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJKHJldmlz
aW9uIDcxNDIzKQorKysgV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yMDMzLDcgKzIwMzMsNyBAQCB2b2lkIERvY3VtZW50OjppbXBsaWNpdENsb3NlKCkKIAogICAg
IC8vIFJlc3VtZSB0aGUgYW5pbWF0aW9ucyAob3Igc3RhcnQgdGhlbSkKICAgICBpZiAoZikKLSAg
ICAgICAgZi0+YW5pbWF0aW9uKCktPnJlc3VtZUFuaW1hdGlvbnModGhpcyk7CisgICAgICAgIGYt
PmFuaW1hdGlvbigpLT5yZXN1bWVBbmltYXRpb25zRm9yRG9jdW1lbnQodGhpcyk7CiAKICAgICBJ
bWFnZUxvYWRlcjo6ZGlzcGF0Y2hQZW5kaW5nQmVmb3JlTG9hZEV2ZW50cygpOwogICAgIEltYWdl
TG9hZGVyOjpkaXNwYXRjaFBlbmRpbmdMb2FkRXZlbnRzKCk7CkluZGV4OiBXZWJDb3JlL2hpc3Rv
cnkvQ2FjaGVkRnJhbWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaGlzdG9yeS9DYWNoZWRG
cmFtZS5jcHAJKHJldmlzaW9uIDcxNDIzKQorKysgV2ViQ29yZS9oaXN0b3J5L0NhY2hlZEZyYW1l
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTAsNyArOTAsNyBAQCB2b2lkIENhY2hlZEZyYW1lQmFz
ZTo6cmVzdG9yZSgpCiAgICAgICAgIG1fZG9jdW1lbnQtPmFjY2Vzc1NWR0V4dGVuc2lvbnMoKS0+
dW5wYXVzZUFuaW1hdGlvbnMoKTsKICNlbmRpZgogCi0gICAgZnJhbWUtPmFuaW1hdGlvbigpLT5y
ZXN1bWVBbmltYXRpb25zKG1fZG9jdW1lbnQuZ2V0KCkpOworICAgIGZyYW1lLT5hbmltYXRpb24o
KS0+cmVzdW1lQW5pbWF0aW9uc0ZvckRvY3VtZW50KG1fZG9jdW1lbnQuZ2V0KCkpOwogICAgIGZy
YW1lLT5ldmVudEhhbmRsZXIoKS0+c2V0TW91c2VQcmVzc05vZGUobV9tb3VzZVByZXNzTm9kZS5n
ZXQoKSk7CiAgICAgbV9kb2N1bWVudC0+cmVzdW1lQWN0aXZlRE9NT2JqZWN0cygpOwogCkluZGV4
OiBXZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9GcmFt
ZS5jcHAJKHJldmlzaW9uIDcxNDI0KQorKysgV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNjQwLDcgKzY0MCw3IEBAIHZvaWQgRnJhbWU6OmNsZWFyVGltZXJzKEZyYW1l
VmlldyAqdmlldywKICAgICBpZiAodmlldykgewogICAgICAgICB2aWV3LT51bnNjaGVkdWxlUmVs
YXlvdXQoKTsKICAgICAgICAgaWYgKHZpZXctPmZyYW1lKCkpIHsKLSAgICAgICAgICAgIHZpZXct
PmZyYW1lKCktPmFuaW1hdGlvbigpLT5zdXNwZW5kQW5pbWF0aW9ucyhkb2N1bWVudCk7CisgICAg
ICAgICAgICB2aWV3LT5mcmFtZSgpLT5hbmltYXRpb24oKS0+c3VzcGVuZEFuaW1hdGlvbnNGb3JE
b2N1bWVudChkb2N1bWVudCk7CiAgICAgICAgICAgICB2aWV3LT5mcmFtZSgpLT5ldmVudEhhbmRs
ZXIoKS0+c3RvcEF1dG9zY3JvbGxUaW1lcigpOwogICAgICAgICB9CiAgICAgfQpAQCAtOTg5LDIy
ICs5ODksNCBAQCB2b2lkIEZyYW1lOjpzY2FsZVBhZ2UoZmxvYXQgc2NhbGUpCiAgICAgfQogfQog
Ci12b2lkIEZyYW1lOjpzdXNwZW5kQW5pbWF0aW9ucygpCi17Ci0gICAgYW5pbWF0aW9uKCktPnN1
c3BlbmRBbmltYXRpb25zKGRvY3VtZW50KCkpOwotICAgIAotICAgIC8vIEhhbmRsZSBzdWJmcmFt
ZXMKLSAgICBmb3IgKEZyYW1lKiBjaGlsZCA9IHRyZWUoKS0+Zmlyc3RDaGlsZCgpOyBjaGlsZDsg
Y2hpbGQgPSBjaGlsZC0+dHJlZSgpLT5uZXh0U2libGluZygpKQotICAgICAgICBjaGlsZC0+c3Vz
cGVuZEFuaW1hdGlvbnMoKTsKLX0KLQotdm9pZCBGcmFtZTo6cmVzdW1lQW5pbWF0aW9ucygpCi17
Ci0gICAgYW5pbWF0aW9uKCktPnJlc3VtZUFuaW1hdGlvbnMoZG9jdW1lbnQoKSk7Ci0gICAgCi0g
ICAgLy8gSGFuZGxlIHN1YmZyYW1lcwotICAgIGZvciAoRnJhbWUqIGNoaWxkID0gdHJlZSgpLT5m
aXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT50cmVlKCktPm5leHRTaWJsaW5nKCkp
Ci0gICAgICAgIGNoaWxkLT5yZXN1bWVBbmltYXRpb25zKCk7Ci19Ci0KIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvcGFnZS9GcmFtZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvcGFnZS9GcmFtZS5oCShyZXZpc2lvbiA3MTQyNCkKKysrIFdlYkNvcmUvcGFnZS9GcmFtZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC05OSw5ICs5OSw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICAgICAgQW5pbWF0aW9uQ29udHJvbGxlciogYW5pbWF0aW9uKCkgY29uc3Q7CiAgICAgICAgIFNj
cmlwdENvbnRyb2xsZXIqIHNjcmlwdCgpOwogICAgICAgICAKLSAgICAgICAgdm9pZCBzdXNwZW5k
QW5pbWF0aW9ucygpOwotICAgICAgICB2b2lkIHJlc3VtZUFuaW1hdGlvbnMoKTsKLQogICAgICAg
ICBSZW5kZXJWaWV3KiBjb250ZW50UmVuZGVyZXIoKSBjb25zdDsgLy8gUm9vdCBvZiB0aGUgcmVu
ZGVyIHRyZWUgZm9yIHRoZSBkb2N1bWVudCBjb250YWluZWQgaW4gdGhpcyBmcmFtZS4KICAgICAg
ICAgUmVuZGVyUGFydCogb3duZXJSZW5kZXJlcigpIGNvbnN0OyAvLyBSZW5kZXJlciBmb3IgdGhl
IGVsZW1lbnQgdGhhdCBjb250YWlucyB0aGlzIGZyYW1lLgogCkluZGV4OiBXZWJDb3JlL3BhZ2Uv
YW5pbWF0aW9uL0FuaW1hdGlvbkNvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
cGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQ29udHJvbGxlci5jcHAJKHJldmlzaW9uIDcxNDIzKQor
KysgV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25Db250cm9sbGVyLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjI3LDcgKzIyNywyNSBAQCBib29sIEFuaW1hdGlvbkNvbnRyb2xsZXJQcml2
YXRlOjppc1J1bm5pCiAgICAgcmV0dXJuIGFuaW1hdGlvbi0+aXNBbmltYXRpbmdQcm9wZXJ0eShw
cm9wZXJ0eSwgdHJ1ZSwgaXNSdW5uaW5nTm93KTsKIH0KIAotdm9pZCBBbmltYXRpb25Db250cm9s
bGVyUHJpdmF0ZTo6c3VzcGVuZEFuaW1hdGlvbnMoRG9jdW1lbnQqIGRvY3VtZW50KQordm9pZCBB
bmltYXRpb25Db250cm9sbGVyUHJpdmF0ZTo6c3VzcGVuZEFuaW1hdGlvbnMoKQoreworICAgIHN1
c3BlbmRBbmltYXRpb25zRm9yRG9jdW1lbnQobV9mcmFtZS0+ZG9jdW1lbnQoKSk7CisgICAgCisg
ICAgLy8gVHJhdmVyc2Ugc3ViZnJhbWVzCisgICAgZm9yIChGcmFtZSogY2hpbGQgPSBtX2ZyYW1l
LT50cmVlKCktPmZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPnRyZWUoKS0+bmV4
dFNpYmxpbmcoKSkKKyAgICAgICAgY2hpbGQtPmFuaW1hdGlvbigpLT5zdXNwZW5kQW5pbWF0aW9u
cygpOworfQorCit2b2lkIEFuaW1hdGlvbkNvbnRyb2xsZXJQcml2YXRlOjpyZXN1bWVBbmltYXRp
b25zKCkKK3sKKyAgICByZXN1bWVBbmltYXRpb25zRm9yRG9jdW1lbnQobV9mcmFtZS0+ZG9jdW1l
bnQoKSk7CisgICAgCisgICAgLy8gVHJhdmVyc2Ugc3ViZnJhbWVzCisgICAgZm9yIChGcmFtZSog
Y2hpbGQgPSBtX2ZyYW1lLT50cmVlKCktPmZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hp
bGQtPnRyZWUoKS0+bmV4dFNpYmxpbmcoKSkKKyAgICAgICAgY2hpbGQtPmFuaW1hdGlvbigpLT5y
ZXN1bWVBbmltYXRpb25zKCk7Cit9CisKK3ZvaWQgQW5pbWF0aW9uQ29udHJvbGxlclByaXZhdGU6
OnN1c3BlbmRBbmltYXRpb25zRm9yRG9jdW1lbnQoRG9jdW1lbnQqIGRvY3VtZW50KQogewogICAg
IHNldEJlZ2luQW5pbWF0aW9uVXBkYXRlVGltZShjQmVnaW5BbmltYXRpb25VcGRhdGVUaW1lTm90
U2V0KTsKICAgICAKQEAgLTI0Myw3ICsyNjEsNyBAQCB2b2lkIEFuaW1hdGlvbkNvbnRyb2xsZXJQ
cml2YXRlOjpzdXNwZW5kCiAgICAgdXBkYXRlQW5pbWF0aW9uVGltZXIoKTsKIH0KIAotdm9pZCBB
bmltYXRpb25Db250cm9sbGVyUHJpdmF0ZTo6cmVzdW1lQW5pbWF0aW9ucyhEb2N1bWVudCogZG9j
dW1lbnQpCit2b2lkIEFuaW1hdGlvbkNvbnRyb2xsZXJQcml2YXRlOjpyZXN1bWVBbmltYXRpb25z
Rm9yRG9jdW1lbnQoRG9jdW1lbnQqIGRvY3VtZW50KQogewogICAgIHNldEJlZ2luQW5pbWF0aW9u
VXBkYXRlVGltZShjQmVnaW5BbmltYXRpb25VcGRhdGVUaW1lTm90U2V0KTsKICAgICAKQEAgLTU1
MSwxNCArNTY5LDI0IEBAIGJvb2wgQW5pbWF0aW9uQ29udHJvbGxlcjo6aXNSdW5uaW5nQWNjZWwK
ICAgICByZXR1cm4gbV9kYXRhLT5pc1J1bm5pbmdBY2NlbGVyYXRlZEFuaW1hdGlvbk9uUmVuZGVy
ZXIocmVuZGVyZXIsIHByb3BlcnR5LCBpc1J1bm5pbmdOb3cpOwogfQogCi12b2lkIEFuaW1hdGlv
bkNvbnRyb2xsZXI6OnN1c3BlbmRBbmltYXRpb25zKERvY3VtZW50KiBkb2N1bWVudCkKK3ZvaWQg
QW5pbWF0aW9uQ29udHJvbGxlcjo6c3VzcGVuZEFuaW1hdGlvbnMoKQoreworICAgIG1fZGF0YS0+
c3VzcGVuZEFuaW1hdGlvbnMoKTsKK30KKwordm9pZCBBbmltYXRpb25Db250cm9sbGVyOjpyZXN1
bWVBbmltYXRpb25zKCkKK3sKKyAgICBtX2RhdGEtPnJlc3VtZUFuaW1hdGlvbnMoKTsKK30KKwor
dm9pZCBBbmltYXRpb25Db250cm9sbGVyOjpzdXNwZW5kQW5pbWF0aW9uc0ZvckRvY3VtZW50KERv
Y3VtZW50KiBkb2N1bWVudCkKIHsKLSAgICBtX2RhdGEtPnN1c3BlbmRBbmltYXRpb25zKGRvY3Vt
ZW50KTsKKyAgICBtX2RhdGEtPnN1c3BlbmRBbmltYXRpb25zRm9yRG9jdW1lbnQoZG9jdW1lbnQp
OwogfQogCi12b2lkIEFuaW1hdGlvbkNvbnRyb2xsZXI6OnJlc3VtZUFuaW1hdGlvbnMoRG9jdW1l
bnQqIGRvY3VtZW50KQordm9pZCBBbmltYXRpb25Db250cm9sbGVyOjpyZXN1bWVBbmltYXRpb25z
Rm9yRG9jdW1lbnQoRG9jdW1lbnQqIGRvY3VtZW50KQogewotICAgIG1fZGF0YS0+cmVzdW1lQW5p
bWF0aW9ucyhkb2N1bWVudCk7CisgICAgbV9kYXRhLT5yZXN1bWVBbmltYXRpb25zRm9yRG9jdW1l
bnQoZG9jdW1lbnQpOwogfQogCiB2b2lkIEFuaW1hdGlvbkNvbnRyb2xsZXI6OmJlZ2luQW5pbWF0
aW9uVXBkYXRlKCkKSW5kZXg6IFdlYkNvcmUvcGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQ29udHJv
bGxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQ29u
dHJvbGxlci5oCShyZXZpc2lvbiA3MTQyMykKKysrIFdlYkNvcmUvcGFnZS9hbmltYXRpb24vQW5p
bWF0aW9uQ29udHJvbGxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC02Miw4ICs2MiwxMSBAQCBwdWJs
aWM6CiAgICAgYm9vbCBpc1J1bm5pbmdBbmltYXRpb25PblJlbmRlcmVyKFJlbmRlck9iamVjdCos
IENTU1Byb3BlcnR5SUQsIGJvb2wgaXNSdW5uaW5nTm93ID0gdHJ1ZSkgY29uc3Q7CiAgICAgYm9v
bCBpc1J1bm5pbmdBY2NlbGVyYXRlZEFuaW1hdGlvbk9uUmVuZGVyZXIoUmVuZGVyT2JqZWN0Kiwg
Q1NTUHJvcGVydHlJRCwgYm9vbCBpc1J1bm5pbmdOb3cgPSB0cnVlKSBjb25zdDsKIAotICAgIHZv
aWQgc3VzcGVuZEFuaW1hdGlvbnMoRG9jdW1lbnQqKTsKLSAgICB2b2lkIHJlc3VtZUFuaW1hdGlv
bnMoRG9jdW1lbnQqKTsKKyAgICB2b2lkIHN1c3BlbmRBbmltYXRpb25zKCk7CisgICAgdm9pZCBy
ZXN1bWVBbmltYXRpb25zKCk7CisKKyAgICB2b2lkIHN1c3BlbmRBbmltYXRpb25zRm9yRG9jdW1l
bnQoRG9jdW1lbnQqKTsKKyAgICB2b2lkIHJlc3VtZUFuaW1hdGlvbnNGb3JEb2N1bWVudChEb2N1
bWVudCopOwogCiAgICAgdm9pZCBiZWdpbkFuaW1hdGlvblVwZGF0ZSgpOwogICAgIHZvaWQgZW5k
QW5pbWF0aW9uVXBkYXRlKCk7CkluZGV4OiBXZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0FuaW1hdGlv
bkNvbnRyb2xsZXJQcml2YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL2FuaW1hdGlv
bi9BbmltYXRpb25Db250cm9sbGVyUHJpdmF0ZS5oCShyZXZpc2lvbiA3MTQyMykKKysrIFdlYkNv
cmUvcGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQ29udHJvbGxlclByaXZhdGUuaAkod29ya2luZyBj
b3B5KQpAQCAtNjcsOCArNjcsMTEgQEAgcHVibGljOgogCiAgICAgYm9vbCBoYXNBbmltYXRpb25z
KCkgY29uc3QgeyByZXR1cm4gIW1fY29tcG9zaXRlQW5pbWF0aW9ucy5pc0VtcHR5KCk7IH0KIAot
ICAgIHZvaWQgc3VzcGVuZEFuaW1hdGlvbnMoRG9jdW1lbnQqKTsKLSAgICB2b2lkIHJlc3VtZUFu
aW1hdGlvbnMoRG9jdW1lbnQqKTsKKyAgICB2b2lkIHN1c3BlbmRBbmltYXRpb25zKCk7CisgICAg
dm9pZCByZXN1bWVBbmltYXRpb25zKCk7CisKKyAgICB2b2lkIHN1c3BlbmRBbmltYXRpb25zRm9y
RG9jdW1lbnQoRG9jdW1lbnQqKTsKKyAgICB2b2lkIHJlc3VtZUFuaW1hdGlvbnNGb3JEb2N1bWVu
dChEb2N1bWVudCopOwogCiAgICAgYm9vbCBpc1J1bm5pbmdBbmltYXRpb25PblJlbmRlcmVyKFJl
bmRlck9iamVjdCosIENTU1Byb3BlcnR5SUQsIGJvb2wgaXNSdW5uaW5nTm93KSBjb25zdDsKICAg
ICBib29sIGlzUnVubmluZ0FjY2VsZXJhdGVkQW5pbWF0aW9uT25SZW5kZXJlcihSZW5kZXJPYmpl
Y3QqLCBDU1NQcm9wZXJ0eUlELCBib29sIGlzUnVubmluZ05vdykgY29uc3Q7CkluZGV4OiBXZWJL
aXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9DaGFu
Z2VMb2cJKHJldmlzaW9uIDcxNDM2KQorKysgV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwkod29y
a2luZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDEwLTExLTA1ICBDaHJpcyBNYXJyaW4gIDxj
bWFycmluQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBNb3ZlIHJlc3VtZUFuaW1hdGlvbnMvc3VzcGVuZEFuaW1hdGlvbnMgZnJvbSBG
cmFtZSB0byBBbmltYXRpb25Db250cm9sbGVyLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDkwNzMKKworICAgICAgICAqIHNyYy9XZWJBbmltYXRpb25D
b250cm9sbGVySW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkFuaW1hdGlvbkNvbnRyb2xs
ZXJJbXBsOjpzdXNwZW5kQW5pbWF0aW9ucyk6CisgICAgICAgIChXZWJLaXQ6OldlYkFuaW1hdGlv
bkNvbnRyb2xsZXJJbXBsOjpyZXN1bWVBbmltYXRpb25zKToKKwogMjAxMC0xMC0yNyAgSmVyZW15
IE9ybG93ICA8am9ybG93QGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBTdGV2
ZSBCbG9jay4KSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViQW5pbWF0aW9uQ29udHJvbGxl
ckltcGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViQW5pbWF0aW9u
Q29udHJvbGxlckltcGwuY3BwCShyZXZpc2lvbiA3MTQyMykKKysrIFdlYktpdC9jaHJvbWl1bS9z
cmMvV2ViQW5pbWF0aW9uQ29udHJvbGxlckltcGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05NCw3
ICs5NCw3IEBAIHZvaWQgV2ViQW5pbWF0aW9uQ29udHJvbGxlckltcGw6OnN1c3BlbmQKICAgICAg
ICAgcmV0dXJuOwogICAgIGlmICghbV9mcmFtZUltcGwtPmZyYW1lKCkpCiAgICAgICAgIHJldHVy
bjsKLSAgICBjb250cm9sbGVyLT5zdXNwZW5kQW5pbWF0aW9ucyhtX2ZyYW1lSW1wbC0+ZnJhbWUo
KS0+ZG9jdW1lbnQoKSk7CisgICAgY29udHJvbGxlci0+c3VzcGVuZEFuaW1hdGlvbnMoKTsKIH0K
IAogdm9pZCBXZWJBbmltYXRpb25Db250cm9sbGVySW1wbDo6cmVzdW1lQW5pbWF0aW9ucygpIGNv
bnN0CkBAIC0xMDQsNyArMTA0LDcgQEAgdm9pZCBXZWJBbmltYXRpb25Db250cm9sbGVySW1wbDo6
cmVzdW1lQQogICAgICAgICByZXR1cm47CiAgICAgaWYgKCFtX2ZyYW1lSW1wbC0+ZnJhbWUoKSkK
ICAgICAgICAgcmV0dXJuOwotICAgIGNvbnRyb2xsZXItPnJlc3VtZUFuaW1hdGlvbnMobV9mcmFt
ZUltcGwtPmZyYW1lKCktPmRvY3VtZW50KCkpOworICAgIGNvbnRyb2xsZXItPnJlc3VtZUFuaW1h
dGlvbnMoKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBXZWJLaXQvZ3RrL0No
YW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvZ3RrL0NoYW5nZUxvZwkocmV2aXNpb24gNzE0
MzYpCisrKyBXZWJLaXQvZ3RrL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0
IEBACisyMDEwLTExLTA1ICBDaHJpcyBNYXJyaW4gIDxjbWFycmluQGFwcGxlLmNvbT4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNb3ZlIHJlc3VtZUFu
aW1hdGlvbnMvc3VzcGVuZEFuaW1hdGlvbnMgZnJvbSBGcmFtZSB0byBBbmltYXRpb25Db250cm9s
bGVyLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDkw
NzMKKworICAgICAgICAqIHdlYmtpdC93ZWJraXR3ZWJmcmFtZS5jcHA6CisgICAgICAgICh3ZWJr
aXRfd2ViX2ZyYW1lX3N1c3BlbmRfYW5pbWF0aW9ucyk6CisgICAgICAgICh3ZWJraXRfd2ViX2Zy
YW1lX3Jlc3VtZV9hbmltYXRpb25zKToKKwogMjAxMC0xMS0wNSAgQ2hyaXMgTWFycmluICA8Y21h
cnJpbkBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZC4KSW5kZXg6IFdlYktpdC9ndGsv
d2Via2l0L3dlYmtpdHdlYmZyYW1lLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvZ3RrL3dlYmtp
dC93ZWJraXR3ZWJmcmFtZS5jcHAJKHJldmlzaW9uIDcxNDI3KQorKysgV2ViS2l0L2d0ay93ZWJr
aXQvd2Via2l0d2ViZnJhbWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDU5LDcgKzEwNTksNyBA
QCB2b2lkIHdlYmtpdF93ZWJfZnJhbWVfc3VzcGVuZF9hbmltYXRpb25zCiAgICAgaWYgKCFjb3Jl
RnJhbWUpCiAgICAgICAgIHJldHVybjsKIAotICAgIGNvcmVGcmFtZS0+c3VzcGVuZEFuaW1hdGlv
bnMoKTsKKyAgICBjb3JlRnJhbWUtPmFuaW1hdGlvbigpLT5zdXNwZW5kQW5pbWF0aW9ucygpOwog
fQogCiB2b2lkIHdlYmtpdF93ZWJfZnJhbWVfcmVzdW1lX2FuaW1hdGlvbnMoV2ViS2l0V2ViRnJh
bWUqIGZyYW1lKQpAQCAtMTA2OCw3ICsxMDY4LDcgQEAgdm9pZCB3ZWJraXRfd2ViX2ZyYW1lX3Jl
c3VtZV9hbmltYXRpb25zKAogICAgIGlmICghY29yZUZyYW1lKQogICAgICAgICByZXR1cm47CiAK
LSAgICBjb3JlRnJhbWUtPnJlc3VtZUFuaW1hdGlvbnMoKTsKKyAgICBjb3JlRnJhbWUtPmFuaW1h
dGlvbigpLT5yZXN1bWVBbmltYXRpb25zKCk7CiB9CiAKIGdjaGFyKiB3ZWJraXRfd2ViX2ZyYW1l
X2dldF9yZXNwb25zZV9taW1lX3R5cGUoV2ViS2l0V2ViRnJhbWUqIGZyYW1lKQpJbmRleDogV2Vi
S2l0L21hYy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDcxNDM2KQorKysgV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAg
LTEsMyArMSwxNCBAQAorMjAxMC0xMS0wNSAgQ2hyaXMgTWFycmluICA8Y21hcnJpbkBhcHBsZS5j
b20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTW92
ZSByZXN1bWVBbmltYXRpb25zL3N1c3BlbmRBbmltYXRpb25zIGZyb20gRnJhbWUgdG8gQW5pbWF0
aW9uQ29udHJvbGxlci4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTQ5MDczCisKKyAgICAgICAgKiBXZWJWaWV3L1dlYkZyYW1lLm1tOgorICAgICAgICAo
LVtXZWJGcmFtZSBfc3VzcGVuZEFuaW1hdGlvbnNdKToKKyAgICAgICAgKC1bV2ViRnJhbWUgX3Jl
c3VtZUFuaW1hdGlvbnNdKToKKwogMjAxMC0xMS0wNCAgQWxleGV5IFByb3NrdXJ5YWtvdiAgPGFw
QGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KSW5kZXg6IFdl
YktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvbWFjL1dl
YlZpZXcvV2ViRnJhbWUubW0JKHJldmlzaW9uIDcxNDI0KQorKysgV2ViS2l0L21hYy9XZWJWaWV3
L1dlYkZyYW1lLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMTM3LDcgKzExMzcsNyBAQCAtICh2b2lk
KSBfc3VzcGVuZEFuaW1hdGlvbnMKICAgICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1cm47CiAg
ICAgICAgIAotICAgIGZyYW1lLT5zdXNwZW5kQW5pbWF0aW9ucygpOworICAgIGZyYW1lLT5hbmlt
YXRpb24oKS0+c3VzcGVuZEFuaW1hdGlvbnMoKTsKIH0KIAogLSAodm9pZCkgX3Jlc3VtZUFuaW1h
dGlvbnMKQEAgLTExNDYsNyArMTE0Niw3IEBAIC0gKHZvaWQpIF9yZXN1bWVBbmltYXRpb25zCiAg
ICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgZnJhbWUtPnJlc3VtZUFuaW1h
dGlvbnMoKTsKKyAgICBmcmFtZS0+YW5pbWF0aW9uKCktPnJlc3VtZUFuaW1hdGlvbnMoKTsKIH0K
IAogLSAodm9pZClfcmVwbGFjZVNlbGVjdGlvbldpdGhGcmFnbWVudDooRE9NRG9jdW1lbnRGcmFn
bWVudCAqKWZyYWdtZW50IHNlbGVjdFJlcGxhY2VtZW50OihCT09MKXNlbGVjdFJlcGxhY2VtZW50
IHNtYXJ0UmVwbGFjZTooQk9PTClzbWFydFJlcGxhY2UgbWF0Y2hTdHlsZTooQk9PTCltYXRjaFN0
eWxlCkluZGV4OiBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQkocmV2aXNpb24gNzE0MjMpCisrKyBXZWJLaXQv
bWFjL1dlYlZpZXcvV2ViVmlldy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjYxMSw5ICsyNjExLDkg
QEAgLSAodm9pZClzZXRDU1NBbmltYXRpb25zU3VzcGVuZGVkOihCT09MKQogICAgIAogICAgIEZy
YW1lKiBmcmFtZSA9IGNvcmUoW3NlbGYgbWFpbkZyYW1lXSk7CiAgICAgaWYgKHN1c3BlbmRlZCkK
LSAgICAgICAgZnJhbWUtPmFuaW1hdGlvbigpLT5zdXNwZW5kQW5pbWF0aW9ucyhmcmFtZS0+ZG9j
dW1lbnQoKSk7CisgICAgICAgIGZyYW1lLT5hbmltYXRpb24oKS0+c3VzcGVuZEFuaW1hdGlvbnMo
KTsKICAgICBlbHNlCi0gICAgICAgIGZyYW1lLT5hbmltYXRpb24oKS0+cmVzdW1lQW5pbWF0aW9u
cyhmcmFtZS0+ZG9jdW1lbnQoKSk7CisgICAgICAgIGZyYW1lLT5hbmltYXRpb24oKS0+cmVzdW1l
QW5pbWF0aW9ucygpOwogfQogCiArICh2b2lkKV9zZXREb21haW5SZWxheGF0aW9uRm9yYmlkZGVu
OihCT09MKWZvcmJpZGRlbiBmb3JVUkxTY2hlbWU6KE5TU3RyaW5nICopc2NoZW1lCkluZGV4OiBX
ZWJLaXQvcXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9xdC9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDcxNDM2KQorKysgV2ViS2l0L3F0L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAt
MSwzICsxLDE0IEBACisyMDEwLTExLTA1ICBDaHJpcyBNYXJyaW4gIDxjbWFycmluQGFwcGxlLmNv
bT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNb3Zl
IHJlc3VtZUFuaW1hdGlvbnMvc3VzcGVuZEFuaW1hdGlvbnMgZnJvbSBGcmFtZSB0byBBbmltYXRp
b25Db250cm9sbGVyLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NDkwNzMKKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3Vw
cG9ydFF0LmNwcDoKKyAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpzdXNwZW5kQW5p
bWF0aW9ucyk6CisgICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6cmVzdW1lQW5pbWF0
aW9ucyk6CisKIDIwMTAtMTEtMDMgIEFudG9uaW8gR29tZXMgIDx0b25pa2l0b29Ad2Via2l0Lm9y
Zz4sIEFuZHJlIFBlZHJhbGhvICA8YW5kcmUucGVkcmFsaG9AZ21haWwuY29tPgogCiAgICAgICAg
IFJldmlld2VkIGJ5IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuIGFuZCBBbnR0aSBLb2l2aXN0
by4KSW5kZXg6IFdlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRR
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJU
cmVlU3VwcG9ydFF0LmNwcAkocmV2aXNpb24gNzE0MjMpCisrKyBXZWJLaXQvcXQvV2ViQ29yZVN1
cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNzks
NyArMjc5LDcgQEAgdm9pZCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6c3VzcGVuZEFuaQogICAg
IGlmICghY29udHJvbGxlcikKICAgICAgICAgcmV0dXJuOwogCi0gICAgY29udHJvbGxlci0+c3Vz
cGVuZEFuaW1hdGlvbnMoY29yZUZyYW1lLT5kb2N1bWVudCgpKTsKKyAgICBjb250cm9sbGVyLT5z
dXNwZW5kQW5pbWF0aW9ucygpOwogfQogCiB2b2lkIER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0Ojpy
ZXN1bWVBbmltYXRpb25zKFFXZWJGcmFtZSAqZnJhbWUpCkBAIC0yOTIsNyArMjkyLDcgQEAgdm9p
ZCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6cmVzdW1lQW5pbQogICAgIGlmICghY29udHJvbGxl
cikKICAgICAgICAgcmV0dXJuOwogCi0gICAgY29udHJvbGxlci0+cmVzdW1lQW5pbWF0aW9ucyhj
b3JlRnJhbWUtPmRvY3VtZW50KCkpOworICAgIGNvbnRyb2xsZXItPnJlc3VtZUFuaW1hdGlvbnMo
KTsKIH0KIAogdm9pZCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6Y2xlYXJGcmFtZU5hbWUoUVdl
YkZyYW1lKiBmcmFtZSkKSW5kZXg6IFdlYktpdC93aW4vQ2hhbmdlTG9nCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYktpdC93aW4vQ2hhbmdlTG9nCShyZXZpc2lvbiA3MTQzNikKKysrIFdlYktpdC93aW4vQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTAtMTEtMDUgIENocmlz
IE1hcnJpbiAgPGNtYXJyaW5AYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIE1vdmUgcmVzdW1lQW5pbWF0aW9ucy9zdXNwZW5kQW5pbWF0
aW9ucyBmcm9tIEZyYW1lIHRvIEFuaW1hdGlvbkNvbnRyb2xsZXIuCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00OTA3MworCisgICAgICAgICogV2ViRnJh
bWUuY3BwOgorICAgICAgICAoV2ViRnJhbWU6OnN1c3BlbmRBbmltYXRpb25zKToKKyAgICAgICAg
KFdlYkZyYW1lOjpyZXN1bWVBbmltYXRpb25zKToKKwogMjAxMC0xMS0wNSAgQnJpYW4gV2VpbnN0
ZWluICA8YndlaW5zdGVpbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQW5kZXJz
IENhcmxzc29uLgpJbmRleDogV2ViS2l0L3dpbi9XZWJGcmFtZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViS2l0L3dpbi9XZWJGcmFtZS5jcHAJKHJldmlzaW9uIDcxNDI0KQorKysgV2ViS2l0L3dpbi9X
ZWJGcmFtZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyOTksNyArMTI5OSw3IEBAIEhSRVNVTFQg
V2ViRnJhbWU6OnN1c3BlbmRBbmltYXRpb25zKCkKICAgICBpZiAoIWZyYW1lKQogICAgICAgICBy
ZXR1cm4gRV9GQUlMOwogCi0gICAgZnJhbWUtPnN1c3BlbmRBbmltYXRpb25zKCk7CisgICAgZnJh
bWUtPmFuaW1hdGlvbigpLT5zdXNwZW5kQW5pbWF0aW9ucygpOwogICAgIHJldHVybiBTX09LOwog
fQogCkBAIC0xMzA5LDcgKzEzMDksNyBAQCBIUkVTVUxUIFdlYkZyYW1lOjpyZXN1bWVBbmltYXRp
b25zKCkKICAgICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1cm4gRV9GQUlMOwogCi0gICAgZnJh
bWUtPnJlc3VtZUFuaW1hdGlvbnMoKTsKKyAgICBmcmFtZS0+YW5pbWF0aW9uKCktPnJlc3VtZUFu
aW1hdGlvbnMoKTsKICAgICByZXR1cm4gU19PSzsKIH0KIAo=
</data>
<flag name="review"
          id="63491"
          type_id="1"
          status="+"
          setter="simon.fraser"
    />
          </attachment>
      

    </bug>

</bugzilla>