<?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>66760</bug_id>
          
          <creation_ts>2011-08-23 04:15:05 -0700</creation_ts>
          <short_desc>TiledBackingStore: Untie the tile implementation from the platform.</short_desc>
          <delta_ts>2011-08-25 05:32:12 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>66771</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Jocelyn Turcotte">jturcotte</reporter>
          <assigned_to name="Jocelyn Turcotte">jturcotte</assigned_to>
          <cc>benjamin</cc>
    
    <cc>noam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>455303</commentid>
    <comment_count>0</comment_count>
    <who name="Jocelyn Turcotte">jturcotte</who>
    <bug_when>2011-08-23 04:15:05 -0700</bug_when>
    <thetext>TiledBackingStore: Untie the tile implementation from the platform.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>455304</commentid>
    <comment_count>1</comment_count>
      <attachid>104813</attachid>
    <who name="Jocelyn Turcotte">jturcotte</who>
    <bug_when>2011-08-23 04:17:26 -0700</bug_when>
    <thetext>Created attachment 104813
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>455338</commentid>
    <comment_count>2</comment_count>
      <attachid>104813</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2011-08-23 05:30:40 -0700</bug_when>
    <thetext>Comment on attachment 104813
Patch

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

&gt; Source/WebCore/platform/graphics/Tile.h:47
&gt; +    virtual const Tile::Coordinate&amp; coordinate() const  = 0;

Two spaces before =.

&gt; Source/WebCore/platform/graphics/TiledBackingStore.h:44
&gt; +    TiledBackingStore(TiledBackingStoreClient*, PassOwnPtr&lt;TiledBackingStoreBackend&gt; = TiledBackingStoreBackend::create() );

There is an extra space before the last parenthesis.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>455487</commentid>
    <comment_count>3</comment_count>
      <attachid>104813</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2011-08-23 10:32:34 -0700</bug_when>
    <thetext>Comment on attachment 104813
Patch

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

&gt; Source/WebCore/platform/graphics/TiledBackingStore.h:78
&gt; +    double tileDistance(const IntRect&amp; viewport, const Tile::Coordinate&amp;);

Why is this one not const?

&gt; Source/WebCore/platform/graphics/qt/TileQt.h:26
&gt; +#include &quot;IntPointHash.h&quot;

I didnt even know we had that :-) Where are you using that?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>456119</commentid>
    <comment_count>4</comment_count>
      <attachid>105004</attachid>
    <who name="Jocelyn Turcotte">jturcotte</who>
    <bug_when>2011-08-24 08:57:05 -0700</bug_when>
    <thetext>Created attachment 105004
Patch

Fixed all issues.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>456169</commentid>
    <comment_count>5</comment_count>
      <attachid>105004</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2011-08-24 10:27:57 -0700</bug_when>
    <thetext>Comment on attachment 105004
Patch

I really like this patch. Good work Jocelyn. One question, it is possible (or will it be) to suspend the painting etc and resize? I am asking this due to how we currently are handing the orientation change on the N9. We only resume and relayout when the orientation ends. You can easily test this on google.com (using iphone UA due to us not getting Tier 1 content).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>456781</commentid>
    <comment_count>6</comment_count>
    <who name="Jocelyn Turcotte">jturcotte</who>
    <bug_when>2011-08-25 05:32:12 -0700</bug_when>
    <thetext>Committed r93777: &lt;http://trac.webkit.org/changeset/93777&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>104813</attachid>
            <date>2011-08-23 04:17:26 -0700</date>
            <delta_ts>2011-08-24 08:56:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-66760-20110823131758.patch</filename>
            <type>text/plain</type>
            <size>16887</size>
            <attacher name="Jocelyn Turcotte">jturcotte</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTI5NzQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBjZDE3MWJkYTFiZjY1YTg5
YzQ4MzEyNTk2MGZkYjMxYWZmMmI3NDEwLi5lN2ZhMGZmNmE5M2EyYzI3NWMyMjg4ODRlMTk2MjFi
OTFlNTYxYWJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDAgQEAKKzIwMTEtMDgtMjMgIEpvY2Vs
eW4gVHVyY290dGUgIDxqb2NlbHluLnR1cmNvdHRlQG5va2lhLmNvbT4KKworICAgICAgICBUaWxl
ZEJhY2tpbmdTdG9yZTogVW50aWUgdGhlIHRpbGUgaW1wbGVtZW50YXRpb24gZnJvbSB0aGUgcGxh
dGZvcm0uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02
Njc2MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1h
a2UgdGhlIFRpbGUgY2xhc3MgcG9seW1vcnBoaWMgYW5kIGludHJvZHVjZSBUaWxlZEJhY2tpbmdT
dG9yZUJhY2tlbmQgYXMgYSBUaWxlIGZhY3RvcnkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9UaWxlLmg6CisgICAgICAgIChXZWJDb3JlOjpUaWxlOjp+VGlsZSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvVGlsZWRCYWNraW5nU3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6VGlsZWRCYWNraW5nU3RvcmU6OlRpbGVkQmFja2luZ1N0b3JlKToKKyAgICAgICAgKFdlYkNv
cmU6OlRpbGVkQmFja2luZ1N0b3JlOjpwYWludCk6CisgICAgICAgIChXZWJDb3JlOjpUaWxlZEJh
Y2tpbmdTdG9yZTo6Y3JlYXRlVGlsZXMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1Rp
bGVkQmFja2luZ1N0b3JlLmg6CisgICAgICAgIChXZWJDb3JlOjpUaWxlZEJhY2tpbmdTdG9yZTo6
Y2xpZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9UaWxlZEJhY2tpbmdTdG9yZUJh
Y2tlbmQuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpUaWxlZEJhY2tpbmdTdG9yZUJhY2tl
bmQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpUaWxlZEJhY2tpbmdTdG9yZUJhY2tlbmQ6
On5UaWxlZEJhY2tpbmdTdG9yZUJhY2tlbmQpOgorICAgICAgICAoV2ViQ29yZTo6VGlsZWRCYWNr
aW5nU3RvcmVCYWNrZW5kOjpUaWxlZEJhY2tpbmdTdG9yZUJhY2tlbmQpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL3F0L1RpbGVRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUaWxlUXQ6
OlRpbGVRdCk6CisgICAgICAgIChXZWJDb3JlOjpUaWxlUXQ6On5UaWxlUXQpOgorICAgICAgICAo
V2ViQ29yZTo6VGlsZVF0Ojppc0RpcnR5KToKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVRdDo6aXNS
ZWFkeVRvUGFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6VGlsZVF0OjppbnZhbGlkYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlRpbGVRdDo6dXBkYXRlQmFja0J1ZmZlcik6CisgICAgICAgIChXZWJD
b3JlOjpUaWxlUXQ6OnN3YXBCYWNrQnVmZmVyVG9Gcm9udCk6CisgICAgICAgIChXZWJDb3JlOjpU
aWxlUXQ6OnBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVkQmFja2luZ1N0b3JlQmFja2Vu
ZDo6cGFpbnRDaGVja2VyUGF0dGVybik6CisgICAgICAgIChXZWJDb3JlOjpUaWxlZEJhY2tpbmdT
dG9yZUJhY2tlbmQ6OmNyZWF0ZVRpbGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3F0
L1RpbGVRdC5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9U
aWxlLmguCisgICAgICAgIChXZWJDb3JlOjpUaWxlUXQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpUaWxlUXQ6OmNvb3JkaW5hdGUpOgorICAgICAgICAoV2ViQ29yZTo6VGlsZVF0OjpyZWN0
KToKKwogMjAxMS0wOC0xMiAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgogCiAgICAgICAg
IE1vdmUgY29tcGlsZXIgc3BlY2lmaWMgbWFjcm9zIHRvIHRoZWlyIG93biBoZWFkZXIKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RpbGUuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RpbGUuaAppbmRleCAwMjA3NmQyOTRhNmQ2YTdkOWIy
N2QzY2E2M2ZiZjE5NTVhZmJmMGFjLi5hNTc3MzBkM2I5NzIyOGIxOTNjOWM1YzFjOTQwYzI4YWVm
ZTc2ZjhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UaWxl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVGlsZS5oCkBAIC0yNSw1
MiArMjUsMjcgQEAKICNpbmNsdWRlICJJbnRQb2ludC5oIgogI2luY2x1ZGUgIkludFBvaW50SGFz
aC5oIgogI2luY2x1ZGUgIkludFJlY3QuaCIKLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgog
I2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAKLSNpZiBQTEFURk9STShRVCkKLVFUX0JFR0lO
X05BTUVTUEFDRQotY2xhc3MgUVBpeG1hcDsKLWNsYXNzIFFSZWdpb247Ci1RVF9FTkRfTkFNRVNQ
QUNFCi0jZW5kaWYKLQogbmFtZXNwYWNlIFdlYkNvcmUgewotICAgIAorCiBjbGFzcyBHcmFwaGlj
c0NvbnRleHQ7Ci1jbGFzcyBUaWxlZEJhY2tpbmdTdG9yZTsKIAogY2xhc3MgVGlsZSA6IHB1Ymxp
YyBSZWZDb3VudGVkPFRpbGU+IHsKIHB1YmxpYzoKICAgICB0eXBlZGVmIEludFBvaW50IENvb3Jk
aW5hdGU7CiAKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxUaWxlPiBjcmVhdGUoVGlsZWRCYWNraW5n
U3RvcmUqIGJhY2tpbmdTdG9yZSwgY29uc3QgQ29vcmRpbmF0ZSYgdGlsZUNvb3JkaW5hdGUpIHsg
cmV0dXJuIGFkb3B0UmVmKG5ldyBUaWxlKGJhY2tpbmdTdG9yZSwgdGlsZUNvb3JkaW5hdGUpKTsg
fQotICAgIH5UaWxlKCk7Ci0gICAgCi0gICAgYm9vbCBpc0RpcnR5KCkgY29uc3Q7Ci0gICAgdm9p
ZCBpbnZhbGlkYXRlKGNvbnN0IEludFJlY3QmKTsKLSAgICBWZWN0b3I8SW50UmVjdD4gdXBkYXRl
QmFja0J1ZmZlcigpOwotICAgIHZvaWQgc3dhcEJhY2tCdWZmZXJUb0Zyb250KCk7Ci0gICAgYm9v
bCBpc1JlYWR5VG9QYWludCgpIGNvbnN0OwotICAgIHZvaWQgcGFpbnQoR3JhcGhpY3NDb250ZXh0
KiwgY29uc3QgSW50UmVjdCYpOworICAgIHZpcnR1YWwgflRpbGUoKSB7IH0KIAotICAgIGNvbnN0
IFRpbGU6OkNvb3JkaW5hdGUmIGNvb3JkaW5hdGUoKSBjb25zdCB7IHJldHVybiBtX2Nvb3JkaW5h
dGU7IH0KLSAgICBjb25zdCBJbnRSZWN0JiByZWN0KCkgY29uc3QgeyByZXR1cm4gbV9yZWN0OyB9
Ci0gICAgCi0gICAgc3RhdGljIHZvaWQgcGFpbnRDaGVja2VyUGF0dGVybihHcmFwaGljc0NvbnRl
eHQqLCBjb25zdCBGbG9hdFJlY3QmKTsKKyAgICB2aXJ0dWFsIGJvb2wgaXNEaXJ0eSgpIGNvbnN0
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZShjb25zdCBJbnRSZWN0JikgPSAwOwor
ICAgIHZpcnR1YWwgVmVjdG9yPEludFJlY3Q+IHVwZGF0ZUJhY2tCdWZmZXIoKSA9IDA7CisgICAg
dmlydHVhbCB2b2lkIHN3YXBCYWNrQnVmZmVyVG9Gcm9udCgpID0gMDsKKyAgICB2aXJ0dWFsIGJv
b2wgaXNSZWFkeVRvUGFpbnQoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB2b2lkIHBhaW50KEdy
YXBoaWNzQ29udGV4dCosIGNvbnN0IEludFJlY3QmKSA9IDA7CiAKLXByaXZhdGU6Ci0gICAgVGls
ZShUaWxlZEJhY2tpbmdTdG9yZSosIGNvbnN0IENvb3JkaW5hdGUmKTsKLSAgICAKLSAgICBUaWxl
ZEJhY2tpbmdTdG9yZSogbV9iYWNraW5nU3RvcmU7Ci0gICAgQ29vcmRpbmF0ZSBtX2Nvb3JkaW5h
dGU7Ci0gICAgSW50UmVjdCBtX3JlY3Q7Ci0KLSNpZiBQTEFURk9STShRVCkKLSAgICBRUGl4bWFw
KiBtX2J1ZmZlcjsKLSAgICBRUGl4bWFwKiBtX2JhY2tCdWZmZXI7Ci0gICAgUVJlZ2lvbiogbV9k
aXJ0eVJlZ2lvbjsKLSNlbmRpZgorICAgIHZpcnR1YWwgY29uc3QgVGlsZTo6Q29vcmRpbmF0ZSYg
Y29vcmRpbmF0ZSgpIGNvbnN0ICA9IDA7CisgICAgdmlydHVhbCBjb25zdCBJbnRSZWN0JiByZWN0
KCkgY29uc3QgPSAwOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvVGlsZWRCYWNraW5nU3RvcmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvVGlsZWRCYWNraW5nU3RvcmUuY3BwCmluZGV4IGRkOTA4YzBlY2RkNDBiM2Vl
MDVhMDI3NTYwYmM0ZjFmMzk2MWE0NWMuLmFhZDZjNDQ3ZjJiNDBiYzQ4MGJmN2YxYjE2YmEzZWNh
ODdlOWE3MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1Rp
bGVkQmFja2luZ1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9UaWxlZEJhY2tpbmdTdG9yZS5jcHAKQEAgLTM2LDkgKzM2LDkgQEAgc3RhdGljIEludFBvaW50
IGlubmVyQm90dG9tUmlnaHQoY29uc3QgSW50UmVjdCYgcmVjdCkKICAgICByZXR1cm4gSW50UG9p
bnQocmVjdC5tYXhYKCkgLSAxLCByZWN0Lm1heFkoKSAtIDEpOwogfQogCi0KLVRpbGVkQmFja2lu
Z1N0b3JlOjpUaWxlZEJhY2tpbmdTdG9yZShUaWxlZEJhY2tpbmdTdG9yZUNsaWVudCogY2xpZW50
KQorVGlsZWRCYWNraW5nU3RvcmU6OlRpbGVkQmFja2luZ1N0b3JlKFRpbGVkQmFja2luZ1N0b3Jl
Q2xpZW50KiBjbGllbnQsIFBhc3NPd25QdHI8VGlsZWRCYWNraW5nU3RvcmVCYWNrZW5kPiBiYWNr
ZW5kKQogICAgIDogbV9jbGllbnQoY2xpZW50KQorICAgICwgbV9iYWNrZW5kKGJhY2tlbmQpCiAg
ICAgLCBtX3RpbGVCdWZmZXJVcGRhdGVUaW1lcihuZXcgVGlsZVRpbWVyKHRoaXMsICZUaWxlZEJh
Y2tpbmdTdG9yZTo6dGlsZUJ1ZmZlclVwZGF0ZVRpbWVyRmlyZWQpKQogICAgICwgbV90aWxlQ3Jl
YXRpb25UaW1lcihuZXcgVGlsZVRpbWVyKHRoaXMsICZUaWxlZEJhY2tpbmdTdG9yZTo6dGlsZUNy
ZWF0aW9uVGltZXJGaXJlZCkpCiAgICAgLCBtX3RpbGVTaXplKGRlZmF1bHRUaWxlV2lkdGgsIGRl
ZmF1bHRUaWxlSGVpZ2h0KQpAQCAtMTUzLDcgKzE1Myw3IEBAIHZvaWQgVGlsZWRCYWNraW5nU3Rv
cmU6OnBhaW50KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50UmVjdCYgcmVjdCkK
ICAgICAgICAgICAgICAgICBJbnRSZWN0IHRhcmdldCA9IGludGVyc2VjdGlvbih0aWxlUmVjdCwg
ZGlydHlSZWN0KTsKICAgICAgICAgICAgICAgICBpZiAodGFyZ2V0LmlzRW1wdHkoKSkKICAgICAg
ICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAgICAgVGlsZTo6cGFpbnRDaGVj
a2VyUGF0dGVybihjb250ZXh0LCBGbG9hdFJlY3QodGFyZ2V0KSk7CisgICAgICAgICAgICAgICAg
bV9iYWNrZW5kLT5wYWludENoZWNrZXJQYXR0ZXJuKGNvbnRleHQsIEZsb2F0UmVjdCh0YXJnZXQp
KTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KQEAgLTI2MCw3ICsyNjAsNyBAQCB2
b2lkIFRpbGVkQmFja2luZ1N0b3JlOjpjcmVhdGVUaWxlcygpCiAgICAgdW5zaWduZWQgdGlsZXNU
b0NyZWF0ZUNvdW50ID0gdGlsZXNUb0NyZWF0ZS5zaXplKCk7CiAgICAgZm9yICh1bnNpZ25lZCBu
ID0gMDsgbiA8IHRpbGVzVG9DcmVhdGVDb3VudDsgKytuKSB7CiAgICAgICAgIFRpbGU6OkNvb3Jk
aW5hdGUgY29vcmRpbmF0ZSA9IHRpbGVzVG9DcmVhdGVbbl07Ci0gICAgICAgIHNldFRpbGUoY29v
cmRpbmF0ZSwgVGlsZTo6Y3JlYXRlKHRoaXMsIGNvb3JkaW5hdGUpKTsKKyAgICAgICAgc2V0VGls
ZShjb29yZGluYXRlLCBtX2JhY2tlbmQtPmNyZWF0ZVRpbGUodGhpcywgY29vcmRpbmF0ZSkpOwog
ICAgIH0KICAgICByZXF1aXJlZFRpbGVDb3VudCAtPSB0aWxlc1RvQ3JlYXRlQ291bnQ7CiAgICAg
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UaWxlZEJhY2tp
bmdTdG9yZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVGlsZWRCYWNraW5n
U3RvcmUuaAppbmRleCAwNmM3ZmUxZGVjNzIxYmQ1NDIyMTQ5MDJhNjViODQyZmExYTYxNzljLi5i
ZTRkZDE5MGEyMmZmMWRmY2E5NTZhNjU3MzdlMjg3MzA0OWRjNjQxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UaWxlZEJhY2tpbmdTdG9yZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RpbGVkQmFja2luZ1N0b3JlLmgKQEAgLTI2
LDYgKzI2LDcgQEAKICNpbmNsdWRlICJJbnRQb2ludC5oIgogI2luY2x1ZGUgIkludFJlY3QuaCIK
ICNpbmNsdWRlICJUaWxlLmgiCisjaW5jbHVkZSAiVGlsZWRCYWNraW5nU3RvcmVCYWNrZW5kLmgi
CiAjaW5jbHVkZSAiVGltZXIuaCIKICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgogI2luY2x1
ZGUgPHd0Zi9IYXNoTWFwLmg+CkBAIC0zNCwxNiArMzUsMTggQEAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogY2xhc3MgR3JhcGhpY3NDb250ZXh0OworY2xhc3MgVGlsZWRCYWNraW5nU3RvcmU7CiBj
bGFzcyBUaWxlZEJhY2tpbmdTdG9yZUNsaWVudDsKIAogY2xhc3MgVGlsZWRCYWNraW5nU3RvcmUg
ewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFRpbGVkQmFja2luZ1N0b3JlKTsgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgVGlsZWRCYWNraW5nU3RvcmUoVGlsZWRCYWNr
aW5nU3RvcmVDbGllbnQqKTsKKyAgICBUaWxlZEJhY2tpbmdTdG9yZShUaWxlZEJhY2tpbmdTdG9y
ZUNsaWVudCosIFBhc3NPd25QdHI8VGlsZWRCYWNraW5nU3RvcmVCYWNrZW5kPiA9IFRpbGVkQmFj
a2luZ1N0b3JlQmFja2VuZDo6Y3JlYXRlKCkgKTsKICAgICB+VGlsZWRCYWNraW5nU3RvcmUoKTsK
IAogICAgIHZvaWQgYWRqdXN0VmlzaWJsZVJlY3QoKTsKICAgICAKKyAgICBUaWxlZEJhY2tpbmdT
dG9yZUNsaWVudCogY2xpZW50KCkgeyByZXR1cm4gbV9jbGllbnQ7IH0KICAgICBmbG9hdCBjb250
ZW50c1NjYWxlKCkgeyByZXR1cm4gbV9jb250ZW50c1NjYWxlOyB9CiAgICAgdm9pZCBzZXRDb250
ZW50c1NjYWxlKGZsb2F0KTsKICAgICAKQEAgLTY3LDYgKzcwLDEzIEBAIHB1YmxpYzoKICAgICB9
CiAgICAgdm9pZCBzZXRLZWVwQW5kQ292ZXJBcmVhTXVsdGlwbGllcnMoY29uc3QgRmxvYXRTaXpl
JiBrZWVwTXVsdGlwbGllciwgY29uc3QgRmxvYXRTaXplJiBjb3Zlck11bHRpcGxpZXIpOyAgICAK
IAorICAgIEludFJlY3QgbWFwVG9Db250ZW50cyhjb25zdCBJbnRSZWN0JikgY29uc3Q7CisgICAg
SW50UmVjdCBtYXBGcm9tQ29udGVudHMoY29uc3QgSW50UmVjdCYpIGNvbnN0OworCisgICAgSW50
UmVjdCB0aWxlUmVjdEZvckNvb3JkaW5hdGUoY29uc3QgVGlsZTo6Q29vcmRpbmF0ZSYpIGNvbnN0
OworICAgIFRpbGU6OkNvb3JkaW5hdGUgdGlsZUNvb3JkaW5hdGVGb3JQb2ludChjb25zdCBJbnRQ
b2ludCYpIGNvbnN0OworICAgIGRvdWJsZSB0aWxlRGlzdGFuY2UoY29uc3QgSW50UmVjdCYgdmll
d3BvcnQsIGNvbnN0IFRpbGU6OkNvb3JkaW5hdGUmKTsKKwogcHJpdmF0ZToKICAgICB2b2lkIHN0
YXJ0VGlsZUJ1ZmZlclVwZGF0ZVRpbWVyKCk7CiAgICAgdm9pZCBzdGFydFRpbGVDcmVhdGlvblRp
bWVyKCk7CkBAIC04OCwxOSArOTgsMTMgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldFRpbGUoY29u
c3QgVGlsZTo6Q29vcmRpbmF0ZSYgY29vcmRpbmF0ZSwgUGFzc1JlZlB0cjxUaWxlPiB0aWxlKTsK
ICAgICB2b2lkIHJlbW92ZVRpbGUoY29uc3QgVGlsZTo6Q29vcmRpbmF0ZSYgY29vcmRpbmF0ZSk7
CiAKLSAgICBJbnRSZWN0IG1hcFRvQ29udGVudHMoY29uc3QgSW50UmVjdCYpIGNvbnN0OwotICAg
IEludFJlY3QgbWFwRnJvbUNvbnRlbnRzKGNvbnN0IEludFJlY3QmKSBjb25zdDsKLSAgICAKICAg
ICBJbnRSZWN0IGNvbnRlbnRzUmVjdCgpIGNvbnN0OwogICAgIAotICAgIEludFJlY3QgdGlsZVJl
Y3RGb3JDb29yZGluYXRlKGNvbnN0IFRpbGU6OkNvb3JkaW5hdGUmKSBjb25zdDsKLSAgICBUaWxl
OjpDb29yZGluYXRlIHRpbGVDb29yZGluYXRlRm9yUG9pbnQoY29uc3QgSW50UG9pbnQmKSBjb25z
dDsKLSAgICBkb3VibGUgdGlsZURpc3RhbmNlKGNvbnN0IEludFJlY3QmIHZpZXdwb3J0LCBjb25z
dCBUaWxlOjpDb29yZGluYXRlJik7Ci0gICAgCiAgICAgdm9pZCBwYWludENoZWNrZXJQYXR0ZXJu
KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEludFJlY3QmLCBjb25zdCBUaWxlOjpDb29yZGluYXRl
Jik7CiAKIHByaXZhdGU6CiAgICAgVGlsZWRCYWNraW5nU3RvcmVDbGllbnQqIG1fY2xpZW50Owor
ICAgIE93blB0cjxUaWxlZEJhY2tpbmdTdG9yZUJhY2tlbmQ+IG1fYmFja2VuZDsKIAogICAgIHR5
cGVkZWYgSGFzaE1hcDxUaWxlOjpDb29yZGluYXRlLCBSZWZQdHI8VGlsZT4gPiBUaWxlTWFwOwog
ICAgIFRpbGVNYXAgbV90aWxlczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL1RpbGVkQmFja2luZ1N0b3JlQmFja2VuZC5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvVGlsZWRCYWNraW5nU3RvcmVCYWNrZW5kLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGZk
ZTMxZGE3NmEzMTI1NmRiOTlmODQ3YmRkZTc4ZmVlNWFmYWUxZAotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RpbGVkQmFja2luZ1N0b3JlQmFja2Vu
ZC5oCkBAIC0wLDAgKzEsNDggQEAKKy8qCisgQ29weXJpZ2h0IChDKSAyMDExIE5va2lhIENvcnBv
cmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQorCisgVGhpcyBsaWJyYXJ5IGlzIGZy
ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorIG1vZGlmeSBpdCB1
bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgTGljZW5z
ZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisg
dmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2
ZXJzaW9uLgorCisgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQg
aXQgd2lsbCBiZSB1c2VmdWwsCisgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2
ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgWW91IHNob3VsZCBoYXZlIHJlY2Vp
dmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorIGFs
b25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3Qs
IHdyaXRlIHRvCisgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmts
aW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAq
LworCisjaWZuZGVmIFRpbGVkQmFja2luZ1N0b3JlQmFja2VuZF9oCisjZGVmaW5lIFRpbGVkQmFj
a2luZ1N0b3JlQmFja2VuZF9oCisKKyNpZiBFTkFCTEUoVElMRURfQkFDS0lOR19TVE9SRSkKKwor
I2luY2x1ZGUgIlBhc3NPd25QdHIuaCIKKyNpbmNsdWRlICJUaWxlLmgiCisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworY2xhc3MgVGlsZWRCYWNraW5nU3RvcmU7CitjbGFzcyBUaWxlZEJhY2tpbmdT
dG9yZUJhY2tlbmQ7CisKK2NsYXNzIFRpbGVkQmFja2luZ1N0b3JlQmFja2VuZCB7CitwdWJsaWM6
CisgICAgc3RhdGljIFBhc3NPd25QdHI8VGlsZWRCYWNraW5nU3RvcmVCYWNrZW5kPiBjcmVhdGUo
KSB7IHJldHVybiBhZG9wdFB0cihuZXcgVGlsZWRCYWNraW5nU3RvcmVCYWNrZW5kKTsgfQorICAg
IHZpcnR1YWwgflRpbGVkQmFja2luZ1N0b3JlQmFja2VuZCgpIHsgfQorICAgIHZpcnR1YWwgUGFz
c1JlZlB0cjxUaWxlPiBjcmVhdGVUaWxlKFRpbGVkQmFja2luZ1N0b3JlKiwgY29uc3QgVGlsZTo6
Q29vcmRpbmF0ZSYpOworICAgIHZpcnR1YWwgdm9pZCBwYWludENoZWNrZXJQYXR0ZXJuKEdyYXBo
aWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYpOworCitwcm90ZWN0ZWQ6CisgICAgVGlsZWRC
YWNraW5nU3RvcmVCYWNrZW5kKCkgeyB9Cit9OworCit9CisKKyNlbmRpZgorCisjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L1RpbGVRdC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9UaWxlUXQuY3BwCmluZGV4IDg3
MjNjZDRiNzJhYWNkNzRmMmMwMmQxZGFkNTg3OTA5Yzc3OWFjMzEuLjY3YzliZThmMWExOTc2MmZj
NGJjMTU3NTM3ZDU2OTZiNWFiMjJhYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3F0L1RpbGVRdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvcXQvVGlsZVF0LmNwcApAQCAtMTgsNyArMTgsNyBAQAogICovCiAKICNpbmNsdWRl
ICJjb25maWcuaCIKLSNpbmNsdWRlICJUaWxlLmgiCisjaW5jbHVkZSAiVGlsZVF0LmgiCiAKICNp
ZiBFTkFCTEUoVElMRURfQkFDS0lOR19TVE9SRSkKIApAQCAtNTUsNyArNTUsNyBAQCBzdGF0aWMg
UVBpeG1hcCYgY2hlY2tlcmVkUGl4bWFwKCkKICAgICByZXR1cm4gKnBpeG1hcDsKIH0KICAgICAK
LVRpbGU6OlRpbGUoVGlsZWRCYWNraW5nU3RvcmUqIGJhY2tpbmdTdG9yZSwgY29uc3QgQ29vcmRp
bmF0ZSYgdGlsZUNvb3JkaW5hdGUpCitUaWxlUXQ6OlRpbGVRdChUaWxlZEJhY2tpbmdTdG9yZSog
YmFja2luZ1N0b3JlLCBjb25zdCBDb29yZGluYXRlJiB0aWxlQ29vcmRpbmF0ZSkKICAgICA6IG1f
YmFja2luZ1N0b3JlKGJhY2tpbmdTdG9yZSkKICAgICAsIG1fY29vcmRpbmF0ZSh0aWxlQ29vcmRp
bmF0ZSkKICAgICAsIG1fcmVjdChtX2JhY2tpbmdTdG9yZS0+dGlsZVJlY3RGb3JDb29yZGluYXRl
KHRpbGVDb29yZGluYXRlKSkKQEAgLTY1LDI0ICs2NSwyNCBAQCBUaWxlOjpUaWxlKFRpbGVkQmFj
a2luZ1N0b3JlKiBiYWNraW5nU3RvcmUsIGNvbnN0IENvb3JkaW5hdGUmIHRpbGVDb29yZGluYXRl
KQogewogfQogCi1UaWxlOjp+VGlsZSgpCitUaWxlUXQ6On5UaWxlUXQoKQogewogICAgIGRlbGV0
ZSBtX2J1ZmZlcjsKICAgICBkZWxldGUgbV9iYWNrQnVmZmVyOwogICAgIGRlbGV0ZSBtX2RpcnR5
UmVnaW9uOwogfQogCi1ib29sIFRpbGU6OmlzRGlydHkoKSBjb25zdCAKK2Jvb2wgVGlsZVF0Ojpp
c0RpcnR5KCkgY29uc3QKIHsgCiAgICAgcmV0dXJuICFtX2RpcnR5UmVnaW9uLT5pc0VtcHR5KCk7
IAogfQogCi1ib29sIFRpbGU6OmlzUmVhZHlUb1BhaW50KCkgY29uc3QKK2Jvb2wgVGlsZVF0Ojpp
c1JlYWR5VG9QYWludCgpIGNvbnN0CiB7IAogICAgIHJldHVybiBtX2J1ZmZlcjsgCiB9CiAKLXZv
aWQgVGlsZTo6aW52YWxpZGF0ZShjb25zdCBJbnRSZWN0JiBkaXJ0eVJlY3QpCit2b2lkIFRpbGVR
dDo6aW52YWxpZGF0ZShjb25zdCBJbnRSZWN0JiBkaXJ0eVJlY3QpCiB7CiAgICAgSW50UmVjdCB0
aWxlRGlydHlSZWN0ID0gaW50ZXJzZWN0aW9uKGRpcnR5UmVjdCwgbV9yZWN0KTsKICAgICBpZiAo
dGlsZURpcnR5UmVjdC5pc0VtcHR5KCkpCkBAIC05MSwxNSArOTEsMTUgQEAgdm9pZCBUaWxlOjpp
bnZhbGlkYXRlKGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdCkKICAgICAqbV9kaXJ0eVJlZ2lvbiAr
PSB0aWxlRGlydHlSZWN0OwogfQogICAgIAotVmVjdG9yPEludFJlY3Q+IFRpbGU6OnVwZGF0ZUJh
Y2tCdWZmZXIoKQorVmVjdG9yPEludFJlY3Q+IFRpbGVRdDo6dXBkYXRlQmFja0J1ZmZlcigpCiB7
CiAgICAgaWYgKG1fYnVmZmVyICYmICFpc0RpcnR5KCkpCiAgICAgICAgIHJldHVybiBWZWN0b3I8
SW50UmVjdD4oKTsKIAogICAgIGlmICghbV9iYWNrQnVmZmVyKSB7CiAgICAgICAgIGlmICghbV9i
dWZmZXIpIHsKLSAgICAgICAgICAgIG1fYmFja0J1ZmZlciA9IG5ldyBRUGl4bWFwKG1fYmFja2lu
Z1N0b3JlLT5tX3RpbGVTaXplLndpZHRoKCksIG1fYmFja2luZ1N0b3JlLT5tX3RpbGVTaXplLmhl
aWdodCgpKTsKLSAgICAgICAgICAgIG1fYmFja0J1ZmZlci0+ZmlsbChtX2JhY2tpbmdTdG9yZS0+
bV9jbGllbnQtPnRpbGVkQmFja2luZ1N0b3JlQmFja2dyb3VuZENvbG9yKCkpOworICAgICAgICAg
ICAgbV9iYWNrQnVmZmVyID0gbmV3IFFQaXhtYXAobV9iYWNraW5nU3RvcmUtPnRpbGVTaXplKCku
d2lkdGgoKSwgbV9iYWNraW5nU3RvcmUtPnRpbGVTaXplKCkuaGVpZ2h0KCkpOworICAgICAgICAg
ICAgbV9iYWNrQnVmZmVyLT5maWxsKG1fYmFja2luZ1N0b3JlLT5jbGllbnQoKS0+dGlsZWRCYWNr
aW5nU3RvcmVCYWNrZ3JvdW5kQ29sb3IoKSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAg
ICAvLyBDdXJyZW50bHkgYWxsIGJ1ZmZlcnMgYXJlIHVwZGF0ZWQgc3luY2hyb25vdXNseSBhdCB0
aGUgc2FtZSB0aW1lIHNvIHRoZXJlIGlzIG5vIHJlYWwgbmVlZAogICAgICAgICAgICAgLy8gdG8g
aGF2ZSBzZXBhcmF0ZSBiYWNrIGFuZCBmcm9udCBidWZmZXJzLiBKdXN0IHVzZSB0aGUgZXhpc3Rp
bmcgYnVmZmVyLgpAQCAtMTIyLDE1ICsxMjIsMTUgQEAgVmVjdG9yPEludFJlY3Q+IFRpbGU6OnVw
ZGF0ZUJhY2tCdWZmZXIoKQogICAgICAgICBJbnRSZWN0IHJlY3QgPSBkaXJ0eVJlY3RzW25dOwog
ICAgICAgICB1cGRhdGVkUmVjdHMuYXBwZW5kKHJlY3QpOwogICAgICAgICBjb250ZXh0LmNsaXAo
RmxvYXRSZWN0KHJlY3QpKTsKLSAgICAgICAgY29udGV4dC5zY2FsZShGbG9hdFNpemUobV9iYWNr
aW5nU3RvcmUtPm1fY29udGVudHNTY2FsZSwgbV9iYWNraW5nU3RvcmUtPm1fY29udGVudHNTY2Fs
ZSkpOwotICAgICAgICBtX2JhY2tpbmdTdG9yZS0+bV9jbGllbnQtPnRpbGVkQmFja2luZ1N0b3Jl
UGFpbnQoJmNvbnRleHQsIG1fYmFja2luZ1N0b3JlLT5tYXBUb0NvbnRlbnRzKHJlY3QpKTsKKyAg
ICAgICAgY29udGV4dC5zY2FsZShGbG9hdFNpemUobV9iYWNraW5nU3RvcmUtPmNvbnRlbnRzU2Nh
bGUoKSwgbV9iYWNraW5nU3RvcmUtPmNvbnRlbnRzU2NhbGUoKSkpOworICAgICAgICBtX2JhY2tp
bmdTdG9yZS0+Y2xpZW50KCktPnRpbGVkQmFja2luZ1N0b3JlUGFpbnQoJmNvbnRleHQsIG1fYmFj
a2luZ1N0b3JlLT5tYXBUb0NvbnRlbnRzKHJlY3QpKTsKICAgICAgICAgY29udGV4dC5yZXN0b3Jl
KCk7CiAgICAgfQogCiAgICAgcmV0dXJuIHVwZGF0ZWRSZWN0czsKIH0KIAotdm9pZCBUaWxlOjpz
d2FwQmFja0J1ZmZlclRvRnJvbnQoKQordm9pZCBUaWxlUXQ6OnN3YXBCYWNrQnVmZmVyVG9Gcm9u
dCgpCiB7CiAgICAgaWYgKCFtX2JhY2tCdWZmZXIpCiAgICAgICAgIHJldHVybjsKQEAgLTEzOSw3
ICsxMzksNyBAQCB2b2lkIFRpbGU6OnN3YXBCYWNrQnVmZmVyVG9Gcm9udCgpCiAgICAgbV9iYWNr
QnVmZmVyID0gMDsKIH0KIAotdm9pZCBUaWxlOjpwYWludChHcmFwaGljc0NvbnRleHQqIGNvbnRl
eHQsIGNvbnN0IEludFJlY3QmIHJlY3QpCit2b2lkIFRpbGVRdDo6cGFpbnQoR3JhcGhpY3NDb250
ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiByZWN0KQogewogICAgIGlmICghbV9idWZmZXIp
CiAgICAgICAgIHJldHVybjsKQEAgLTE1Myw3ICsxNTMsNyBAQCB2b2lkIFRpbGU6OnBhaW50KEdy
YXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50UmVjdCYgcmVjdCkKICAgICBjb250ZXh0
LT5wbGF0Zm9ybUNvbnRleHQoKS0+ZHJhd1BpeG1hcCh0YXJnZXQsICptX2J1ZmZlciwgc291cmNl
KTsKIH0KICAgICAKLXZvaWQgVGlsZTo6cGFpbnRDaGVja2VyUGF0dGVybihHcmFwaGljc0NvbnRl
eHQqIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0KQordm9pZCBUaWxlZEJhY2tpbmdT
dG9yZUJhY2tlbmQ6OnBhaW50Q2hlY2tlclBhdHRlcm4oR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0
LCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldCkKIHsKICAgICBRUGFpbnRlciogcGFpbnRlciA9IGNv
bnRleHQtPnBsYXRmb3JtQ29udGV4dCgpOwogICAgIFFUcmFuc2Zvcm0gd29ybGRUcmFuc2Zvcm0g
PSBwYWludGVyLT53b3JsZFRyYW5zZm9ybSgpOwpAQCAtMTc4LDYgKzE3OCwxMSBAQCB2b2lkIFRp
bGU6OnBhaW50Q2hlY2tlclBhdHRlcm4oR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBG
bG9hdFJlY3QmIHRhcmdldAogICAgIHBhaW50ZXItPnNldFdvcmxkVHJhbnNmb3JtKHdvcmxkVHJh
bnNmb3JtKTsKIH0KIAorUGFzc1JlZlB0cjxUaWxlPiBUaWxlZEJhY2tpbmdTdG9yZUJhY2tlbmQ6
OmNyZWF0ZVRpbGUoVGlsZWRCYWNraW5nU3RvcmUqIGJhY2tpbmdTdG9yZSwgY29uc3QgVGlsZTo6
Q29vcmRpbmF0ZSYgdGlsZUNvb3JkaW5hdGUpCit7CisgICAgcmV0dXJuIFRpbGVRdDo6Y3JlYXRl
KGJhY2tpbmdTdG9yZSwgdGlsZUNvb3JkaW5hdGUpOworfQorCiB9CiAKICNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvVGlsZVF0LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9UaWxlUXQuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lYzNk
NjY1ZTA3MzM2NDBkMjdkMDVmNWE1MGI1ZTQ2NDhmMjAxZjZhCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvVGlsZVF0LmgKQEAgLTAsMCArMSw3
MiBAQAorLyoKKyBDb3B5cmlnaHQgKEMpIDIwMTEgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0
cyBzdWJzaWRpYXJ5KC1pZXMpCisKKyBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91
IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi
eSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyB2ZXJzaW9uIDIgb2YgdGhl
IExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyBUaGlz
IGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1
bCwKKyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3
YXJyYW50eSBvZgorIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRS4gIFNlZSB0aGUgR05VCisgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZv
ciBtb3JlIGRldGFpbHMuCisKKyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgYWxvbmcgd2l0aCB0aGlzIGxp
YnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRo
IEZsb29yLAorIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpZm5kZWYgVGls
ZVF0X2gKKyNkZWZpbmUgVGlsZVF0X2gKKworI2lmIEVOQUJMRShUSUxFRF9CQUNLSU5HX1NUT1JF
KQorCisjaW5jbHVkZSAiSW50UG9pbnQuaCIKKyNpbmNsdWRlICJJbnRQb2ludEhhc2guaCIKKyNp
bmNsdWRlICJJbnRSZWN0LmgiCisjaW5jbHVkZSAiVGlsZS5oIgorI2luY2x1ZGUgPHd0Zi9QYXNz
UmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKworUVRfQkVHSU5fTkFNRVNQ
QUNFCitjbGFzcyBRUGl4bWFwOworY2xhc3MgUVJlZ2lvbjsKK1FUX0VORF9OQU1FU1BBQ0UKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBUaWxlZEJhY2tpbmdTdG9yZTsKKworY2xhc3Mg
VGlsZVF0IDogcHVibGljIFRpbGUgeworcHVibGljOgorICAgIHR5cGVkZWYgSW50UG9pbnQgQ29v
cmRpbmF0ZTsKKworICAgIHN0YXRpYyBQYXNzUmVmUHRyPFRpbGU+IGNyZWF0ZShUaWxlZEJhY2tp
bmdTdG9yZSogYmFja2luZ1N0b3JlLCBjb25zdCBDb29yZGluYXRlJiB0aWxlQ29vcmRpbmF0ZSkg
eyByZXR1cm4gYWRvcHRSZWYobmV3IFRpbGVRdChiYWNraW5nU3RvcmUsIHRpbGVDb29yZGluYXRl
KSk7IH0KKyAgICB+VGlsZVF0KCk7CisKKyAgICBib29sIGlzRGlydHkoKSBjb25zdDsKKyAgICB2
b2lkIGludmFsaWRhdGUoY29uc3QgSW50UmVjdCYpOworICAgIFZlY3RvcjxJbnRSZWN0PiB1cGRh
dGVCYWNrQnVmZmVyKCk7CisgICAgdm9pZCBzd2FwQmFja0J1ZmZlclRvRnJvbnQoKTsKKyAgICBi
b29sIGlzUmVhZHlUb1BhaW50KCkgY29uc3Q7CisgICAgdm9pZCBwYWludChHcmFwaGljc0NvbnRl
eHQqLCBjb25zdCBJbnRSZWN0Jik7CisKKyAgICBjb25zdCBUaWxlOjpDb29yZGluYXRlJiBjb29y
ZGluYXRlKCkgY29uc3QgeyByZXR1cm4gbV9jb29yZGluYXRlOyB9CisgICAgY29uc3QgSW50UmVj
dCYgcmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVjdDsgfQorCitwcml2YXRlOgorICAgIFRpbGVR
dChUaWxlZEJhY2tpbmdTdG9yZSosIGNvbnN0IENvb3JkaW5hdGUmKTsKKworICAgIFRpbGVkQmFj
a2luZ1N0b3JlKiBtX2JhY2tpbmdTdG9yZTsKKyAgICBDb29yZGluYXRlIG1fY29vcmRpbmF0ZTsK
KyAgICBJbnRSZWN0IG1fcmVjdDsKKworICAgIFFQaXhtYXAqIG1fYnVmZmVyOworICAgIFFQaXht
YXAqIG1fYmFja0J1ZmZlcjsKKyAgICBRUmVnaW9uKiBtX2RpcnR5UmVnaW9uOworfTsKKworfQor
I2VuZGlmCisjZW5kaWYK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>105004</attachid>
            <date>2011-08-24 08:57:05 -0700</date>
            <delta_ts>2011-08-24 10:27:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-66760-20110824175706.patch</filename>
            <type>text/plain</type>
            <size>17288</size>
            <attacher name="Jocelyn Turcotte">jturcotte</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTM0MDYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBiMjcyNWZmZjY3N2ZiYTQ2
NDZhMzgzYzZmMzI5YjJhZTgwMDY5NDdhLi5jNGUwYjk2NGJhMmI0OWExMGM2NDU1YWVmMzJjMTNm
NTM4NWQwZDY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDAgQEAKKzIwMTEtMDgtMjMgIEpvY2Vs
eW4gVHVyY290dGUgIDxqb2NlbHluLnR1cmNvdHRlQG5va2lhLmNvbT4KKworICAgICAgICBUaWxl
ZEJhY2tpbmdTdG9yZTogVW50aWUgdGhlIHRpbGUgaW1wbGVtZW50YXRpb24gZnJvbSB0aGUgcGxh
dGZvcm0uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02
Njc2MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1h
a2UgdGhlIFRpbGUgY2xhc3MgcG9seW1vcnBoaWMgYW5kIGludHJvZHVjZSBUaWxlZEJhY2tpbmdT
dG9yZUJhY2tlbmQgYXMgYSBUaWxlIGZhY3RvcnkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9UaWxlLmg6CisgICAgICAgIChXZWJDb3JlOjpUaWxlOjp+VGlsZSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvVGlsZWRCYWNraW5nU3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6VGlsZWRCYWNraW5nU3RvcmU6OlRpbGVkQmFja2luZ1N0b3JlKToKKyAgICAgICAgKFdlYkNv
cmU6OlRpbGVkQmFja2luZ1N0b3JlOjpwYWludCk6CisgICAgICAgIChXZWJDb3JlOjpUaWxlZEJh
Y2tpbmdTdG9yZTo6Y3JlYXRlVGlsZXMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1Rp
bGVkQmFja2luZ1N0b3JlLmg6CisgICAgICAgIChXZWJDb3JlOjpUaWxlZEJhY2tpbmdTdG9yZTo6
Y2xpZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9UaWxlZEJhY2tpbmdTdG9yZUJh
Y2tlbmQuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpUaWxlZEJhY2tpbmdTdG9yZUJhY2tl
bmQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpUaWxlZEJhY2tpbmdTdG9yZUJhY2tlbmQ6
On5UaWxlZEJhY2tpbmdTdG9yZUJhY2tlbmQpOgorICAgICAgICAoV2ViQ29yZTo6VGlsZWRCYWNr
aW5nU3RvcmVCYWNrZW5kOjpUaWxlZEJhY2tpbmdTdG9yZUJhY2tlbmQpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL3F0L1RpbGVRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUaWxlUXQ6
OlRpbGVRdCk6CisgICAgICAgIChXZWJDb3JlOjpUaWxlUXQ6On5UaWxlUXQpOgorICAgICAgICAo
V2ViQ29yZTo6VGlsZVF0Ojppc0RpcnR5KToKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVRdDo6aXNS
ZWFkeVRvUGFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6VGlsZVF0OjppbnZhbGlkYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlRpbGVRdDo6dXBkYXRlQmFja0J1ZmZlcik6CisgICAgICAgIChXZWJD
b3JlOjpUaWxlUXQ6OnN3YXBCYWNrQnVmZmVyVG9Gcm9udCk6CisgICAgICAgIChXZWJDb3JlOjpU
aWxlUXQ6OnBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVkQmFja2luZ1N0b3JlQmFja2Vu
ZDo6cGFpbnRDaGVja2VyUGF0dGVybik6CisgICAgICAgIChXZWJDb3JlOjpUaWxlZEJhY2tpbmdT
dG9yZUJhY2tlbmQ6OmNyZWF0ZVRpbGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3F0
L1RpbGVRdC5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9U
aWxlLmguCisgICAgICAgIChXZWJDb3JlOjpUaWxlUXQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpUaWxlUXQ6OmNvb3JkaW5hdGUpOgorICAgICAgICAoV2ViQ29yZTo6VGlsZVF0OjpyZWN0
KToKKwogMjAxMS0wOC0xOSAgUGF2ZWwgRmVsZG1hbiAgPHBmZWxkbWFuQGdvb2dsZS5jb20+CiAK
ICAgICAgICAgV2ViIEluc3BlY3RvcjogZ2V0QXR0cmlidXRlcyBzaG91bGQgd29yayBvbiBhIHNp
bmdsZSBub2RlLCBub3QgYXJyYXkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9UaWxlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UaWxl
LmgKaW5kZXggMDIwNzZkMjk0YTZkNmE3ZDliMjdkM2NhNjNmYmYxOTU1YWZiZjBhYy4uN2UwZjEz
MzgyZTk2NWZhNmVjZmUzZjdjOTkyZGRmOWYwNmMwYjQ0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVGlsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL1RpbGUuaApAQCAtMjUsNTIgKzI1LDI3IEBACiAjaW5jbHVkZSAiSW50UG9p
bnQuaCIKICNpbmNsdWRlICJJbnRQb2ludEhhc2guaCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCi0j
aW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgog
Ci0jaWYgUExBVEZPUk0oUVQpCi1RVF9CRUdJTl9OQU1FU1BBQ0UKLWNsYXNzIFFQaXhtYXA7Ci1j
bGFzcyBRUmVnaW9uOwotUVRfRU5EX05BTUVTUEFDRQotI2VuZGlmCi0KIG5hbWVzcGFjZSBXZWJD
b3JlIHsKLSAgICAKKwogY2xhc3MgR3JhcGhpY3NDb250ZXh0OwotY2xhc3MgVGlsZWRCYWNraW5n
U3RvcmU7CiAKIGNsYXNzIFRpbGUgOiBwdWJsaWMgUmVmQ291bnRlZDxUaWxlPiB7CiBwdWJsaWM6
CiAgICAgdHlwZWRlZiBJbnRQb2ludCBDb29yZGluYXRlOwogCi0gICAgc3RhdGljIFBhc3NSZWZQ
dHI8VGlsZT4gY3JlYXRlKFRpbGVkQmFja2luZ1N0b3JlKiBiYWNraW5nU3RvcmUsIGNvbnN0IENv
b3JkaW5hdGUmIHRpbGVDb29yZGluYXRlKSB7IHJldHVybiBhZG9wdFJlZihuZXcgVGlsZShiYWNr
aW5nU3RvcmUsIHRpbGVDb29yZGluYXRlKSk7IH0KLSAgICB+VGlsZSgpOwotICAgIAotICAgIGJv
b2wgaXNEaXJ0eSgpIGNvbnN0OwotICAgIHZvaWQgaW52YWxpZGF0ZShjb25zdCBJbnRSZWN0Jik7
Ci0gICAgVmVjdG9yPEludFJlY3Q+IHVwZGF0ZUJhY2tCdWZmZXIoKTsKLSAgICB2b2lkIHN3YXBC
YWNrQnVmZmVyVG9Gcm9udCgpOwotICAgIGJvb2wgaXNSZWFkeVRvUGFpbnQoKSBjb25zdDsKLSAg
ICB2b2lkIHBhaW50KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEludFJlY3QmKTsKKyAgICB2aXJ0
dWFsIH5UaWxlKCkgeyB9CiAKLSAgICBjb25zdCBUaWxlOjpDb29yZGluYXRlJiBjb29yZGluYXRl
KCkgY29uc3QgeyByZXR1cm4gbV9jb29yZGluYXRlOyB9Ci0gICAgY29uc3QgSW50UmVjdCYgcmVj
dCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVjdDsgfQotICAgIAotICAgIHN0YXRpYyB2b2lkIHBhaW50
Q2hlY2tlclBhdHRlcm4oR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0Jik7CisgICAg
dmlydHVhbCBib29sIGlzRGlydHkoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB2b2lkIGludmFs
aWRhdGUoY29uc3QgSW50UmVjdCYpID0gMDsKKyAgICB2aXJ0dWFsIFZlY3RvcjxJbnRSZWN0PiB1
cGRhdGVCYWNrQnVmZmVyKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzd2FwQmFja0J1ZmZlclRv
RnJvbnQoKSA9IDA7CisgICAgdmlydHVhbCBib29sIGlzUmVhZHlUb1BhaW50KCkgY29uc3QgPSAw
OworICAgIHZpcnR1YWwgdm9pZCBwYWludChHcmFwaGljc0NvbnRleHQqLCBjb25zdCBJbnRSZWN0
JikgPSAwOwogCi1wcml2YXRlOgotICAgIFRpbGUoVGlsZWRCYWNraW5nU3RvcmUqLCBjb25zdCBD
b29yZGluYXRlJik7Ci0gICAgCi0gICAgVGlsZWRCYWNraW5nU3RvcmUqIG1fYmFja2luZ1N0b3Jl
OwotICAgIENvb3JkaW5hdGUgbV9jb29yZGluYXRlOwotICAgIEludFJlY3QgbV9yZWN0OwotCi0j
aWYgUExBVEZPUk0oUVQpCi0gICAgUVBpeG1hcCogbV9idWZmZXI7Ci0gICAgUVBpeG1hcCogbV9i
YWNrQnVmZmVyOwotICAgIFFSZWdpb24qIG1fZGlydHlSZWdpb247Ci0jZW5kaWYKKyAgICB2aXJ0
dWFsIGNvbnN0IFRpbGU6OkNvb3JkaW5hdGUmIGNvb3JkaW5hdGUoKSBjb25zdCA9IDA7CisgICAg
dmlydHVhbCBjb25zdCBJbnRSZWN0JiByZWN0KCkgY29uc3QgPSAwOwogfTsKIAogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVGlsZWRCYWNraW5nU3RvcmUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVGlsZWRCYWNraW5nU3RvcmUu
Y3BwCmluZGV4IGRkOTA4YzBlY2RkNDBiM2VlMDVhMDI3NTYwYmM0ZjFmMzk2MWE0NWMuLjE4ZDZi
NGFiZTBiODYxYzM3ZmJjMTdjZTVmY2JmMGIwNDU4NTg4ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RpbGVkQmFja2luZ1N0b3JlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UaWxlZEJhY2tpbmdTdG9yZS5jcHAKQEAgLTM2
LDkgKzM2LDkgQEAgc3RhdGljIEludFBvaW50IGlubmVyQm90dG9tUmlnaHQoY29uc3QgSW50UmVj
dCYgcmVjdCkKICAgICByZXR1cm4gSW50UG9pbnQocmVjdC5tYXhYKCkgLSAxLCByZWN0Lm1heFko
KSAtIDEpOwogfQogCi0KLVRpbGVkQmFja2luZ1N0b3JlOjpUaWxlZEJhY2tpbmdTdG9yZShUaWxl
ZEJhY2tpbmdTdG9yZUNsaWVudCogY2xpZW50KQorVGlsZWRCYWNraW5nU3RvcmU6OlRpbGVkQmFj
a2luZ1N0b3JlKFRpbGVkQmFja2luZ1N0b3JlQ2xpZW50KiBjbGllbnQsIFBhc3NPd25QdHI8VGls
ZWRCYWNraW5nU3RvcmVCYWNrZW5kPiBiYWNrZW5kKQogICAgIDogbV9jbGllbnQoY2xpZW50KQor
ICAgICwgbV9iYWNrZW5kKGJhY2tlbmQpCiAgICAgLCBtX3RpbGVCdWZmZXJVcGRhdGVUaW1lcihu
ZXcgVGlsZVRpbWVyKHRoaXMsICZUaWxlZEJhY2tpbmdTdG9yZTo6dGlsZUJ1ZmZlclVwZGF0ZVRp
bWVyRmlyZWQpKQogICAgICwgbV90aWxlQ3JlYXRpb25UaW1lcihuZXcgVGlsZVRpbWVyKHRoaXMs
ICZUaWxlZEJhY2tpbmdTdG9yZTo6dGlsZUNyZWF0aW9uVGltZXJGaXJlZCkpCiAgICAgLCBtX3Rp
bGVTaXplKGRlZmF1bHRUaWxlV2lkdGgsIGRlZmF1bHRUaWxlSGVpZ2h0KQpAQCAtMTUzLDcgKzE1
Myw3IEBAIHZvaWQgVGlsZWRCYWNraW5nU3RvcmU6OnBhaW50KEdyYXBoaWNzQ29udGV4dCogY29u
dGV4dCwgY29uc3QgSW50UmVjdCYgcmVjdCkKICAgICAgICAgICAgICAgICBJbnRSZWN0IHRhcmdl
dCA9IGludGVyc2VjdGlvbih0aWxlUmVjdCwgZGlydHlSZWN0KTsKICAgICAgICAgICAgICAgICBp
ZiAodGFyZ2V0LmlzRW1wdHkoKSkKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAg
ICAgICAgICAgICAgVGlsZTo6cGFpbnRDaGVja2VyUGF0dGVybihjb250ZXh0LCBGbG9hdFJlY3Qo
dGFyZ2V0KSk7CisgICAgICAgICAgICAgICAgbV9iYWNrZW5kLT5wYWludENoZWNrZXJQYXR0ZXJu
KGNvbnRleHQsIEZsb2F0UmVjdCh0YXJnZXQpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQog
ICAgIH0KQEAgLTE5MCw3ICsxOTAsNyBAQCB2b2lkIFRpbGVkQmFja2luZ1N0b3JlOjpjb21taXRT
Y2FsZUNoYW5nZSgpCiAgICAgY3JlYXRlVGlsZXMoKTsKIH0KIAotZG91YmxlIFRpbGVkQmFja2lu
Z1N0b3JlOjp0aWxlRGlzdGFuY2UoY29uc3QgSW50UmVjdCYgdmlld3BvcnQsIGNvbnN0IFRpbGU6
OkNvb3JkaW5hdGUmIHRpbGVDb29yZGluYXRlKQorZG91YmxlIFRpbGVkQmFja2luZ1N0b3JlOjp0
aWxlRGlzdGFuY2UoY29uc3QgSW50UmVjdCYgdmlld3BvcnQsIGNvbnN0IFRpbGU6OkNvb3JkaW5h
dGUmIHRpbGVDb29yZGluYXRlKSBjb25zdAogewogICAgIGlmICh2aWV3cG9ydC5pbnRlcnNlY3Rz
KHRpbGVSZWN0Rm9yQ29vcmRpbmF0ZSh0aWxlQ29vcmRpbmF0ZSkpKQogICAgICAgICByZXR1cm4g
MDsKQEAgLTI2MCw3ICsyNjAsNyBAQCB2b2lkIFRpbGVkQmFja2luZ1N0b3JlOjpjcmVhdGVUaWxl
cygpCiAgICAgdW5zaWduZWQgdGlsZXNUb0NyZWF0ZUNvdW50ID0gdGlsZXNUb0NyZWF0ZS5zaXpl
KCk7CiAgICAgZm9yICh1bnNpZ25lZCBuID0gMDsgbiA8IHRpbGVzVG9DcmVhdGVDb3VudDsgKytu
KSB7CiAgICAgICAgIFRpbGU6OkNvb3JkaW5hdGUgY29vcmRpbmF0ZSA9IHRpbGVzVG9DcmVhdGVb
bl07Ci0gICAgICAgIHNldFRpbGUoY29vcmRpbmF0ZSwgVGlsZTo6Y3JlYXRlKHRoaXMsIGNvb3Jk
aW5hdGUpKTsKKyAgICAgICAgc2V0VGlsZShjb29yZGluYXRlLCBtX2JhY2tlbmQtPmNyZWF0ZVRp
bGUodGhpcywgY29vcmRpbmF0ZSkpOwogICAgIH0KICAgICByZXF1aXJlZFRpbGVDb3VudCAtPSB0
aWxlc1RvQ3JlYXRlQ291bnQ7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9UaWxlZEJhY2tpbmdTdG9yZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvVGlsZWRCYWNraW5nU3RvcmUuaAppbmRleCAwNmM3ZmUxZGVjNzIxYmQ1NDIy
MTQ5MDJhNjViODQyZmExYTYxNzljLi43NTU4YWUxNWZjNGVkNGNjZWY4MzdkODlmNmZmYmNlMTQ0
OTljNTZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UaWxl
ZEJhY2tpbmdTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1Rp
bGVkQmFja2luZ1N0b3JlLmgKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJJbnRQb2ludC5o
IgogI2luY2x1ZGUgIkludFJlY3QuaCIKICNpbmNsdWRlICJUaWxlLmgiCisjaW5jbHVkZSAiVGls
ZWRCYWNraW5nU3RvcmVCYWNrZW5kLmgiCiAjaW5jbHVkZSAiVGltZXIuaCIKICNpbmNsdWRlIDx3
dGYvQXNzZXJ0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CkBAIC0zNCwxNiArMzUs
MTggQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgR3JhcGhpY3NDb250ZXh0OworY2xh
c3MgVGlsZWRCYWNraW5nU3RvcmU7CiBjbGFzcyBUaWxlZEJhY2tpbmdTdG9yZUNsaWVudDsKIAog
Y2xhc3MgVGlsZWRCYWNraW5nU3RvcmUgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFRpbGVk
QmFja2luZ1N0b3JlKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgVGls
ZWRCYWNraW5nU3RvcmUoVGlsZWRCYWNraW5nU3RvcmVDbGllbnQqKTsKKyAgICBUaWxlZEJhY2tp
bmdTdG9yZShUaWxlZEJhY2tpbmdTdG9yZUNsaWVudCosIFBhc3NPd25QdHI8VGlsZWRCYWNraW5n
U3RvcmVCYWNrZW5kPiA9IFRpbGVkQmFja2luZ1N0b3JlQmFja2VuZDo6Y3JlYXRlKCkpOwogICAg
IH5UaWxlZEJhY2tpbmdTdG9yZSgpOwogCiAgICAgdm9pZCBhZGp1c3RWaXNpYmxlUmVjdCgpOwog
ICAgIAorICAgIFRpbGVkQmFja2luZ1N0b3JlQ2xpZW50KiBjbGllbnQoKSB7IHJldHVybiBtX2Ns
aWVudDsgfQogICAgIGZsb2F0IGNvbnRlbnRzU2NhbGUoKSB7IHJldHVybiBtX2NvbnRlbnRzU2Nh
bGU7IH0KICAgICB2b2lkIHNldENvbnRlbnRzU2NhbGUoZmxvYXQpOwogICAgIApAQCAtNjcsNiAr
NzAsMTMgQEAgcHVibGljOgogICAgIH0KICAgICB2b2lkIHNldEtlZXBBbmRDb3ZlckFyZWFNdWx0
aXBsaWVycyhjb25zdCBGbG9hdFNpemUmIGtlZXBNdWx0aXBsaWVyLCBjb25zdCBGbG9hdFNpemUm
IGNvdmVyTXVsdGlwbGllcik7ICAgIAogCisgICAgSW50UmVjdCBtYXBUb0NvbnRlbnRzKGNvbnN0
IEludFJlY3QmKSBjb25zdDsKKyAgICBJbnRSZWN0IG1hcEZyb21Db250ZW50cyhjb25zdCBJbnRS
ZWN0JikgY29uc3Q7CisKKyAgICBJbnRSZWN0IHRpbGVSZWN0Rm9yQ29vcmRpbmF0ZShjb25zdCBU
aWxlOjpDb29yZGluYXRlJikgY29uc3Q7CisgICAgVGlsZTo6Q29vcmRpbmF0ZSB0aWxlQ29vcmRp
bmF0ZUZvclBvaW50KGNvbnN0IEludFBvaW50JikgY29uc3Q7CisgICAgZG91YmxlIHRpbGVEaXN0
YW5jZShjb25zdCBJbnRSZWN0JiB2aWV3cG9ydCwgY29uc3QgVGlsZTo6Q29vcmRpbmF0ZSYpIGNv
bnN0OworCiBwcml2YXRlOgogICAgIHZvaWQgc3RhcnRUaWxlQnVmZmVyVXBkYXRlVGltZXIoKTsK
ICAgICB2b2lkIHN0YXJ0VGlsZUNyZWF0aW9uVGltZXIoKTsKQEAgLTg4LDE5ICs5OCwxMyBAQCBw
cml2YXRlOgogICAgIHZvaWQgc2V0VGlsZShjb25zdCBUaWxlOjpDb29yZGluYXRlJiBjb29yZGlu
YXRlLCBQYXNzUmVmUHRyPFRpbGU+IHRpbGUpOwogICAgIHZvaWQgcmVtb3ZlVGlsZShjb25zdCBU
aWxlOjpDb29yZGluYXRlJiBjb29yZGluYXRlKTsKIAotICAgIEludFJlY3QgbWFwVG9Db250ZW50
cyhjb25zdCBJbnRSZWN0JikgY29uc3Q7Ci0gICAgSW50UmVjdCBtYXBGcm9tQ29udGVudHMoY29u
c3QgSW50UmVjdCYpIGNvbnN0OwotICAgIAogICAgIEludFJlY3QgY29udGVudHNSZWN0KCkgY29u
c3Q7CiAgICAgCi0gICAgSW50UmVjdCB0aWxlUmVjdEZvckNvb3JkaW5hdGUoY29uc3QgVGlsZTo6
Q29vcmRpbmF0ZSYpIGNvbnN0OwotICAgIFRpbGU6OkNvb3JkaW5hdGUgdGlsZUNvb3JkaW5hdGVG
b3JQb2ludChjb25zdCBJbnRQb2ludCYpIGNvbnN0OwotICAgIGRvdWJsZSB0aWxlRGlzdGFuY2Uo
Y29uc3QgSW50UmVjdCYgdmlld3BvcnQsIGNvbnN0IFRpbGU6OkNvb3JkaW5hdGUmKTsKLSAgICAK
ICAgICB2b2lkIHBhaW50Q2hlY2tlclBhdHRlcm4oR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50
UmVjdCYsIGNvbnN0IFRpbGU6OkNvb3JkaW5hdGUmKTsKIAogcHJpdmF0ZToKICAgICBUaWxlZEJh
Y2tpbmdTdG9yZUNsaWVudCogbV9jbGllbnQ7CisgICAgT3duUHRyPFRpbGVkQmFja2luZ1N0b3Jl
QmFja2VuZD4gbV9iYWNrZW5kOwogCiAgICAgdHlwZWRlZiBIYXNoTWFwPFRpbGU6OkNvb3JkaW5h
dGUsIFJlZlB0cjxUaWxlPiA+IFRpbGVNYXA7CiAgICAgVGlsZU1hcCBtX3RpbGVzOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVGlsZWRCYWNraW5nU3RvcmVC
YWNrZW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UaWxlZEJhY2tpbmdT
dG9yZUJhY2tlbmQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44ZmRlMzFkYTc2YTMxMjU2ZGI5OWY4NDdiZGRlNzhm
ZWU1YWZhZTFkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvVGlsZWRCYWNraW5nU3RvcmVCYWNrZW5kLmgKQEAgLTAsMCArMSw0OCBAQAorLyoKKyBD
b3B5cmlnaHQgKEMpIDIwMTEgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5
KC1pZXMpCisKKyBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry
aWJ1dGUgaXQgYW5kL29yCisgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMKKyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9y
IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyBUaGlzIGxpYnJhcnkgaXMg
ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyBidXQgV0lU
SE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgor
IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl
ZSB0aGUgR05VCisgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp
bHMuCisKKyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0
aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorIEJv
c3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpZm5kZWYgVGlsZWRCYWNraW5nU3Rv
cmVCYWNrZW5kX2gKKyNkZWZpbmUgVGlsZWRCYWNraW5nU3RvcmVCYWNrZW5kX2gKKworI2lmIEVO
QUJMRShUSUxFRF9CQUNLSU5HX1NUT1JFKQorCisjaW5jbHVkZSAiUGFzc093blB0ci5oIgorI2lu
Y2x1ZGUgIlRpbGUuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBUaWxlZEJhY2tp
bmdTdG9yZTsKK2NsYXNzIFRpbGVkQmFja2luZ1N0b3JlQmFja2VuZDsKKworY2xhc3MgVGlsZWRC
YWNraW5nU3RvcmVCYWNrZW5kIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc093blB0cjxUaWxl
ZEJhY2tpbmdTdG9yZUJhY2tlbmQ+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UHRyKG5ldyBUaWxl
ZEJhY2tpbmdTdG9yZUJhY2tlbmQpOyB9CisgICAgdmlydHVhbCB+VGlsZWRCYWNraW5nU3RvcmVC
YWNrZW5kKCkgeyB9CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPFRpbGU+IGNyZWF0ZVRpbGUoVGls
ZWRCYWNraW5nU3RvcmUqLCBjb25zdCBUaWxlOjpDb29yZGluYXRlJik7CisgICAgdmlydHVhbCB2
b2lkIHBhaW50Q2hlY2tlclBhdHRlcm4oR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0
Jik7CisKK3Byb3RlY3RlZDoKKyAgICBUaWxlZEJhY2tpbmdTdG9yZUJhY2tlbmQoKSB7IH0KK307
CisKK30KKworI2VuZGlmCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvcXQvVGlsZVF0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3F0L1RpbGVRdC5jcHAKaW5kZXggODcyM2NkNGI3MmFhY2Q3NGYyYzAyZDFkYWQ1ODc5
MDljNzc5YWMzMS4uNjdjOWJlOGYxYTE5NzYyZmM0YmMxNTc1MzdkNTY5NmI1YWIyMmFhYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvVGlsZVF0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9UaWxlUXQuY3BwCkBAIC0x
OCw3ICsxOCw3IEBACiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlRpbGUu
aCIKKyNpbmNsdWRlICJUaWxlUXQuaCIKIAogI2lmIEVOQUJMRShUSUxFRF9CQUNLSU5HX1NUT1JF
KQogCkBAIC01NSw3ICs1NSw3IEBAIHN0YXRpYyBRUGl4bWFwJiBjaGVja2VyZWRQaXhtYXAoKQog
ICAgIHJldHVybiAqcGl4bWFwOwogfQogICAgIAotVGlsZTo6VGlsZShUaWxlZEJhY2tpbmdTdG9y
ZSogYmFja2luZ1N0b3JlLCBjb25zdCBDb29yZGluYXRlJiB0aWxlQ29vcmRpbmF0ZSkKK1RpbGVR
dDo6VGlsZVF0KFRpbGVkQmFja2luZ1N0b3JlKiBiYWNraW5nU3RvcmUsIGNvbnN0IENvb3JkaW5h
dGUmIHRpbGVDb29yZGluYXRlKQogICAgIDogbV9iYWNraW5nU3RvcmUoYmFja2luZ1N0b3JlKQog
ICAgICwgbV9jb29yZGluYXRlKHRpbGVDb29yZGluYXRlKQogICAgICwgbV9yZWN0KG1fYmFja2lu
Z1N0b3JlLT50aWxlUmVjdEZvckNvb3JkaW5hdGUodGlsZUNvb3JkaW5hdGUpKQpAQCAtNjUsMjQg
KzY1LDI0IEBAIFRpbGU6OlRpbGUoVGlsZWRCYWNraW5nU3RvcmUqIGJhY2tpbmdTdG9yZSwgY29u
c3QgQ29vcmRpbmF0ZSYgdGlsZUNvb3JkaW5hdGUpCiB7CiB9CiAKLVRpbGU6On5UaWxlKCkKK1Rp
bGVRdDo6flRpbGVRdCgpCiB7CiAgICAgZGVsZXRlIG1fYnVmZmVyOwogICAgIGRlbGV0ZSBtX2Jh
Y2tCdWZmZXI7CiAgICAgZGVsZXRlIG1fZGlydHlSZWdpb247CiB9CiAKLWJvb2wgVGlsZTo6aXNE
aXJ0eSgpIGNvbnN0IAorYm9vbCBUaWxlUXQ6OmlzRGlydHkoKSBjb25zdAogeyAKICAgICByZXR1
cm4gIW1fZGlydHlSZWdpb24tPmlzRW1wdHkoKTsgCiB9CiAKLWJvb2wgVGlsZTo6aXNSZWFkeVRv
UGFpbnQoKSBjb25zdAorYm9vbCBUaWxlUXQ6OmlzUmVhZHlUb1BhaW50KCkgY29uc3QKIHsgCiAg
ICAgcmV0dXJuIG1fYnVmZmVyOyAKIH0KIAotdm9pZCBUaWxlOjppbnZhbGlkYXRlKGNvbnN0IElu
dFJlY3QmIGRpcnR5UmVjdCkKK3ZvaWQgVGlsZVF0OjppbnZhbGlkYXRlKGNvbnN0IEludFJlY3Qm
IGRpcnR5UmVjdCkKIHsKICAgICBJbnRSZWN0IHRpbGVEaXJ0eVJlY3QgPSBpbnRlcnNlY3Rpb24o
ZGlydHlSZWN0LCBtX3JlY3QpOwogICAgIGlmICh0aWxlRGlydHlSZWN0LmlzRW1wdHkoKSkKQEAg
LTkxLDE1ICs5MSwxNSBAQCB2b2lkIFRpbGU6OmludmFsaWRhdGUoY29uc3QgSW50UmVjdCYgZGly
dHlSZWN0KQogICAgICptX2RpcnR5UmVnaW9uICs9IHRpbGVEaXJ0eVJlY3Q7CiB9CiAgICAgCi1W
ZWN0b3I8SW50UmVjdD4gVGlsZTo6dXBkYXRlQmFja0J1ZmZlcigpCitWZWN0b3I8SW50UmVjdD4g
VGlsZVF0Ojp1cGRhdGVCYWNrQnVmZmVyKCkKIHsKICAgICBpZiAobV9idWZmZXIgJiYgIWlzRGly
dHkoKSkKICAgICAgICAgcmV0dXJuIFZlY3RvcjxJbnRSZWN0PigpOwogCiAgICAgaWYgKCFtX2Jh
Y2tCdWZmZXIpIHsKICAgICAgICAgaWYgKCFtX2J1ZmZlcikgewotICAgICAgICAgICAgbV9iYWNr
QnVmZmVyID0gbmV3IFFQaXhtYXAobV9iYWNraW5nU3RvcmUtPm1fdGlsZVNpemUud2lkdGgoKSwg
bV9iYWNraW5nU3RvcmUtPm1fdGlsZVNpemUuaGVpZ2h0KCkpOwotICAgICAgICAgICAgbV9iYWNr
QnVmZmVyLT5maWxsKG1fYmFja2luZ1N0b3JlLT5tX2NsaWVudC0+dGlsZWRCYWNraW5nU3RvcmVC
YWNrZ3JvdW5kQ29sb3IoKSk7CisgICAgICAgICAgICBtX2JhY2tCdWZmZXIgPSBuZXcgUVBpeG1h
cChtX2JhY2tpbmdTdG9yZS0+dGlsZVNpemUoKS53aWR0aCgpLCBtX2JhY2tpbmdTdG9yZS0+dGls
ZVNpemUoKS5oZWlnaHQoKSk7CisgICAgICAgICAgICBtX2JhY2tCdWZmZXItPmZpbGwobV9iYWNr
aW5nU3RvcmUtPmNsaWVudCgpLT50aWxlZEJhY2tpbmdTdG9yZUJhY2tncm91bmRDb2xvcigpKTsK
ICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIC8vIEN1cnJlbnRseSBhbGwgYnVmZmVycyBh
cmUgdXBkYXRlZCBzeW5jaHJvbm91c2x5IGF0IHRoZSBzYW1lIHRpbWUgc28gdGhlcmUgaXMgbm8g
cmVhbCBuZWVkCiAgICAgICAgICAgICAvLyB0byBoYXZlIHNlcGFyYXRlIGJhY2sgYW5kIGZyb250
IGJ1ZmZlcnMuIEp1c3QgdXNlIHRoZSBleGlzdGluZyBidWZmZXIuCkBAIC0xMjIsMTUgKzEyMiwx
NSBAQCBWZWN0b3I8SW50UmVjdD4gVGlsZTo6dXBkYXRlQmFja0J1ZmZlcigpCiAgICAgICAgIElu
dFJlY3QgcmVjdCA9IGRpcnR5UmVjdHNbbl07CiAgICAgICAgIHVwZGF0ZWRSZWN0cy5hcHBlbmQo
cmVjdCk7CiAgICAgICAgIGNvbnRleHQuY2xpcChGbG9hdFJlY3QocmVjdCkpOwotICAgICAgICBj
b250ZXh0LnNjYWxlKEZsb2F0U2l6ZShtX2JhY2tpbmdTdG9yZS0+bV9jb250ZW50c1NjYWxlLCBt
X2JhY2tpbmdTdG9yZS0+bV9jb250ZW50c1NjYWxlKSk7Ci0gICAgICAgIG1fYmFja2luZ1N0b3Jl
LT5tX2NsaWVudC0+dGlsZWRCYWNraW5nU3RvcmVQYWludCgmY29udGV4dCwgbV9iYWNraW5nU3Rv
cmUtPm1hcFRvQ29udGVudHMocmVjdCkpOworICAgICAgICBjb250ZXh0LnNjYWxlKEZsb2F0U2l6
ZShtX2JhY2tpbmdTdG9yZS0+Y29udGVudHNTY2FsZSgpLCBtX2JhY2tpbmdTdG9yZS0+Y29udGVu
dHNTY2FsZSgpKSk7CisgICAgICAgIG1fYmFja2luZ1N0b3JlLT5jbGllbnQoKS0+dGlsZWRCYWNr
aW5nU3RvcmVQYWludCgmY29udGV4dCwgbV9iYWNraW5nU3RvcmUtPm1hcFRvQ29udGVudHMocmVj
dCkpOwogICAgICAgICBjb250ZXh0LnJlc3RvcmUoKTsKICAgICB9CiAKICAgICByZXR1cm4gdXBk
YXRlZFJlY3RzOwogfQogCi12b2lkIFRpbGU6OnN3YXBCYWNrQnVmZmVyVG9Gcm9udCgpCit2b2lk
IFRpbGVRdDo6c3dhcEJhY2tCdWZmZXJUb0Zyb250KCkKIHsKICAgICBpZiAoIW1fYmFja0J1ZmZl
cikKICAgICAgICAgcmV0dXJuOwpAQCAtMTM5LDcgKzEzOSw3IEBAIHZvaWQgVGlsZTo6c3dhcEJh
Y2tCdWZmZXJUb0Zyb250KCkKICAgICBtX2JhY2tCdWZmZXIgPSAwOwogfQogCi12b2lkIFRpbGU6
OnBhaW50KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50UmVjdCYgcmVjdCkKK3Zv
aWQgVGlsZVF0OjpwYWludChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEludFJlY3Qm
IHJlY3QpCiB7CiAgICAgaWYgKCFtX2J1ZmZlcikKICAgICAgICAgcmV0dXJuOwpAQCAtMTUzLDcg
KzE1Myw3IEBAIHZvaWQgVGlsZTo6cGFpbnQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25z
dCBJbnRSZWN0JiByZWN0KQogICAgIGNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLT5kcmF3UGl4
bWFwKHRhcmdldCwgKm1fYnVmZmVyLCBzb3VyY2UpOwogfQogICAgIAotdm9pZCBUaWxlOjpwYWlu
dENoZWNrZXJQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRSZWN0
JiB0YXJnZXQpCit2b2lkIFRpbGVkQmFja2luZ1N0b3JlQmFja2VuZDo6cGFpbnRDaGVja2VyUGF0
dGVybihHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0KQog
ewogICAgIFFQYWludGVyKiBwYWludGVyID0gY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCk7CiAg
ICAgUVRyYW5zZm9ybSB3b3JsZFRyYW5zZm9ybSA9IHBhaW50ZXItPndvcmxkVHJhbnNmb3JtKCk7
CkBAIC0xNzgsNiArMTc4LDExIEBAIHZvaWQgVGlsZTo6cGFpbnRDaGVja2VyUGF0dGVybihHcmFw
aGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0CiAgICAgcGFpbnRl
ci0+c2V0V29ybGRUcmFuc2Zvcm0od29ybGRUcmFuc2Zvcm0pOwogfQogCitQYXNzUmVmUHRyPFRp
bGU+IFRpbGVkQmFja2luZ1N0b3JlQmFja2VuZDo6Y3JlYXRlVGlsZShUaWxlZEJhY2tpbmdTdG9y
ZSogYmFja2luZ1N0b3JlLCBjb25zdCBUaWxlOjpDb29yZGluYXRlJiB0aWxlQ29vcmRpbmF0ZSkK
K3sKKyAgICByZXR1cm4gVGlsZVF0OjpjcmVhdGUoYmFja2luZ1N0b3JlLCB0aWxlQ29vcmRpbmF0
ZSk7Cit9CisKIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9xdC9UaWxlUXQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3F0L1RpbGVRdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjAwMTVjMzg5YmZmYzUzNGNjY2ViM2ZkMzYwNzM2Mjhi
ZmNjZjRmZWMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9xdC9UaWxlUXQuaApAQCAtMCwwICsxLDcxIEBACisvKgorIENvcHlyaWdodCAoQykgMjAx
MSBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKworIFRoaXMg
bGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IK
KyBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYworIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b247IGVpdGhlcgorIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9u
KSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0
aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5U
WTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgTUVSQ0hBTlRBQklMSVRZ
IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworIFlvdSBzaG91
bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
IExpY2Vuc2UKKyBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcu
TElCLiAgSWYgbm90LCB3cml0ZSB0bworIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIElu
Yy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgQm9zdG9uLCBNQSAwMjExMC0x
MzAxLCBVU0EuCisgKi8KKworI2lmbmRlZiBUaWxlUXRfaAorI2RlZmluZSBUaWxlUXRfaAorCisj
aWYgRU5BQkxFKFRJTEVEX0JBQ0tJTkdfU1RPUkUpCisKKyNpbmNsdWRlICJJbnRQb2ludC5oIgor
I2luY2x1ZGUgIkludFJlY3QuaCIKKyNpbmNsdWRlICJUaWxlLmgiCisjaW5jbHVkZSA8d3RmL1Bh
c3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorCitRVF9CRUdJTl9OQU1F
U1BBQ0UKK2NsYXNzIFFQaXhtYXA7CitjbGFzcyBRUmVnaW9uOworUVRfRU5EX05BTUVTUEFDRQor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFRpbGVkQmFja2luZ1N0b3JlOworCitjbGFz
cyBUaWxlUXQgOiBwdWJsaWMgVGlsZSB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBJbnRQb2ludCBD
b29yZGluYXRlOworCisgICAgc3RhdGljIFBhc3NSZWZQdHI8VGlsZT4gY3JlYXRlKFRpbGVkQmFj
a2luZ1N0b3JlKiBiYWNraW5nU3RvcmUsIGNvbnN0IENvb3JkaW5hdGUmIHRpbGVDb29yZGluYXRl
KSB7IHJldHVybiBhZG9wdFJlZihuZXcgVGlsZVF0KGJhY2tpbmdTdG9yZSwgdGlsZUNvb3JkaW5h
dGUpKTsgfQorICAgIH5UaWxlUXQoKTsKKworICAgIGJvb2wgaXNEaXJ0eSgpIGNvbnN0OworICAg
IHZvaWQgaW52YWxpZGF0ZShjb25zdCBJbnRSZWN0Jik7CisgICAgVmVjdG9yPEludFJlY3Q+IHVw
ZGF0ZUJhY2tCdWZmZXIoKTsKKyAgICB2b2lkIHN3YXBCYWNrQnVmZmVyVG9Gcm9udCgpOworICAg
IGJvb2wgaXNSZWFkeVRvUGFpbnQoKSBjb25zdDsKKyAgICB2b2lkIHBhaW50KEdyYXBoaWNzQ29u
dGV4dCosIGNvbnN0IEludFJlY3QmKTsKKworICAgIGNvbnN0IFRpbGU6OkNvb3JkaW5hdGUmIGNv
b3JkaW5hdGUoKSBjb25zdCB7IHJldHVybiBtX2Nvb3JkaW5hdGU7IH0KKyAgICBjb25zdCBJbnRS
ZWN0JiByZWN0KCkgY29uc3QgeyByZXR1cm4gbV9yZWN0OyB9CisKK3ByaXZhdGU6CisgICAgVGls
ZVF0KFRpbGVkQmFja2luZ1N0b3JlKiwgY29uc3QgQ29vcmRpbmF0ZSYpOworCisgICAgVGlsZWRC
YWNraW5nU3RvcmUqIG1fYmFja2luZ1N0b3JlOworICAgIENvb3JkaW5hdGUgbV9jb29yZGluYXRl
OworICAgIEludFJlY3QgbV9yZWN0OworCisgICAgUVBpeG1hcCogbV9idWZmZXI7CisgICAgUVBp
eG1hcCogbV9iYWNrQnVmZmVyOworICAgIFFSZWdpb24qIG1fZGlydHlSZWdpb247Cit9OworCit9
CisjZW5kaWYKKyNlbmRpZgo=
</data>
<flag name="review"
          id="101031"
          type_id="1"
          status="+"
          setter="kenneth"
    />
          </attachment>
      

    </bug>

</bugzilla>