<?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>140019</bug_id>
          
          <creation_ts>2014-12-31 13:13:22 -0800</creation_ts>
          <short_desc>Move scrolling code off of WTF::bind</short_desc>
          <delta_ts>2015-01-01 13:20:20 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Sam Weinig">sam</reporter>
          <assigned_to name="Sam Weinig">sam</assigned_to>
          <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>jamesr</cc>
    
    <cc>luiz</cc>
    
    <cc>tonikitoo</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1058275</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2014-12-31 13:13:22 -0800</bug_when>
    <thetext>Move scolling code off of WTF::bind</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1058276</commentid>
    <comment_count>1</comment_count>
      <attachid>243852</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2014-12-31 13:15:32 -0800</bug_when>
    <thetext>Created attachment 243852
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1058306</commentid>
    <comment_count>2</comment_count>
      <attachid>243852</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-12-31 20:52:05 -0800</bug_when>
    <thetext>Comment on attachment 243852
Patch

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

&gt; Source/WebCore/page/scrolling/ThreadedScrollingTree.cpp:62
&gt; +    RefPtr&lt;ThreadedScrollingTree&gt; threadedScrollingTree(this);

Can this be Ref instead of RefPtr?

&gt; Source/WebCore/page/scrolling/ThreadedScrollingTree.cpp:106
&gt; +    RefPtr&lt;AsyncScrollingCoordinator&gt; scrollingCoordinator = m_scrollingCoordinator;

Can this be Ref instead of RefPtr?

&gt; Source/WebCore/page/scrolling/ThreadedScrollingTree.cpp:120
&gt; +    RefPtr&lt;AsyncScrollingCoordinator&gt; scrollingCoordinator = m_scrollingCoordinator;

Can this be Ref instead of RefPtr?

&gt; Source/WebCore/page/scrolling/ios/ScrollingTreeIOS.cpp:89
&gt; +    RefPtr&lt;AsyncScrollingCoordinator&gt; scrollingCoordinator = m_scrollingCoordinator;

Can this be Ref instead of RefPtr?

&gt; Source/WebCore/page/scrolling/mac/ScrollingCoordinatorMac.mm:74
&gt;      RefPtr&lt;ThreadedScrollingTree&gt; scrollingTree = static_pointer_cast&lt;ThreadedScrollingTree&gt;(releaseScrollingTree());

Can this be Ref instead of RefPtr?

&gt; Source/WebCore/page/scrolling/mac/ScrollingCoordinatorMac.mm:97
&gt; +    RefPtr&lt;ThreadedScrollingTree&gt; threadedScrollingTree = downcast&lt;ThreadedScrollingTree&gt;(scrollingTree());

Can this be Ref instead of RefPtr?

&gt; Source/WebCore/platform/MemoryPressureHandler.cpp:146
&gt; +        ScrollingThread::dispatch([] {
&gt; +            WTF::releaseFastMallocFreeMemory();
&gt; +        });

Does this work?

    ScrollingThread::dispatch(WTF::releaseFastMallocFreeMemory);

If not, why not?

&gt; Source/WebKit2/WebProcess/WebPage/EventDispatcher.cpp:149
&gt; +    RefPtr&lt;EventDispatcher&gt; eventDispatcher(this);

Can this be Ref instead of RefPtr?

&gt; Source/WebKit2/WebProcess/WebPage/EventDispatcher.cpp:192
&gt; +        RefPtr&lt;EventDispatcher&gt; eventDispatcher(this);

Can this be Ref instead of RefPtr?

&gt; Source/WebKit2/WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:195
&gt; +        RefPtr&lt;ScrollingTree&gt; scrollingTree = scrollingCoordinator-&gt;scrollingTree();

Can this be Ref instead of RefPtr?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1058311</commentid>
    <comment_count>3</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2014-12-31 23:24:08 -0800</bug_when>
    <thetext>I don&apos;t think they can be Refs, since Ref doesn&apos;t have a copy constructor. When we have new enough compilers, we should be able to use Refs and move them into the lambda (using the fun [std::move(refVariable)] syntax), but I don&apos;t think we can do that right now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1058347</commentid>
    <comment_count>4</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2015-01-01 13:20:20 -0800</bug_when>
    <thetext>Committed r177848: &lt;http://trac.webkit.org/changeset/177848&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>243852</attachid>
            <date>2014-12-31 13:15:32 -0800</date>
            <delta_ts>2014-12-31 20:52:05 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-140019-20141231131535.patch</filename>
            <type>text/plain</type>
            <size>14534</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE3NzgzNSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI4IEBACisyMDE0LTEyLTMxICBTYW0gV2Vp
bmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgTW92ZSBzY3JvbGxpbmcgY29kZSBvZmYg
b2YgV1RGOjpiaW5kCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNDAwMTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1RocmVhZGVkU2Nyb2xsaW5nVHJlZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpUaHJlYWRlZFNjcm9sbGluZ1RyZWU6OnRyeVRvSGFuZGxlV2hlZWxFdmVudCk6
CisgICAgICAgIChXZWJDb3JlOjpUaHJlYWRlZFNjcm9sbGluZ1RyZWU6OmludmFsaWRhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6VGhyZWFkZWRTY3JvbGxpbmdUcmVlOjpzY3JvbGxpbmdUcmVlTm9k
ZURpZFNjcm9sbCk6CisgICAgICAgIChXZWJDb3JlOjpUaHJlYWRlZFNjcm9sbGluZ1RyZWU6Omhh
bmRsZVdoZWVsRXZlbnRQaGFzZSk6CisgICAgICAgIChXZWJDb3JlOjpkZXJlZlNjcm9sbGluZ0Nv
b3JkaW5hdG9yKTogRGVsZXRlZC4KKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9pb3MvU2Nyb2xs
aW5nVHJlZUlPUy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlSU9TOjppbnZh
bGlkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVJT1M6OnNjcm9sbGluZ1Ry
ZWVOb2RlRGlkU2Nyb2xsKToKKyAgICAgICAgKFdlYkNvcmU6OmRlcmVmU2Nyb2xsaW5nQ29vcmRp
bmF0b3IpOiBEZWxldGVkLgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdD
b29yZGluYXRvck1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ0Nvb3JkaW5hdG9y
TWFjOjpwYWdlRGVzdHJveWVkKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ0Nvb3JkaW5h
dG9yTWFjOjpoYW5kbGVXaGVlbEV2ZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9NZW1vcnlQcmVz
c3VyZUhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVtb3J5UHJlc3N1cmVIYW5kbGVy
OjpyZWxlYXNlTWVtb3J5KToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlclRocmVhZC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWQ6OnJlbGVhc2VGYXN0TWFsbG9jRnJlZU1lbW9y
eUluQWxsVGhyZWFkcyk6CisKIDIwMTQtMTItMzEgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9y
Zz4KIAogICAgICAgICBSZW1vdmUgdGhlIHJlbWFpbmluZyB1c2VzIG9mIE93blB0ciBmcm9tIFdl
YktpdDIKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1RocmVhZGVkU2Nyb2xs
aW5nVHJlZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcv
VGhyZWFkZWRTY3JvbGxpbmdUcmVlLmNwcAkocmV2aXNpb24gMTc3ODM1KQorKysgU291cmNlL1dl
YkNvcmUvcGFnZS9zY3JvbGxpbmcvVGhyZWFkZWRTY3JvbGxpbmdUcmVlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNTksNyArNTksMTEgQEAgU2Nyb2xsaW5nVHJlZTo6RXZlbnRSZXN1bHQgVGhyZWFk
ZWRTY3JvbAogICAgIGlmICh3aWxsV2hlZWxFdmVudFN0YXJ0U3dpcGVHZXN0dXJlKHdoZWVsRXZl
bnQpKQogICAgICAgICByZXR1cm4gRGlkTm90SGFuZGxlRXZlbnQ7CiAKLSAgICBTY3JvbGxpbmdU
aHJlYWQ6OmRpc3BhdGNoKGJpbmQoJlRocmVhZGVkU2Nyb2xsaW5nVHJlZTo6aGFuZGxlV2hlZWxF
dmVudCwgdGhpcywgd2hlZWxFdmVudCkpOworICAgIFJlZlB0cjxUaHJlYWRlZFNjcm9sbGluZ1Ry
ZWU+IHRocmVhZGVkU2Nyb2xsaW5nVHJlZSh0aGlzKTsKKyAgICBTY3JvbGxpbmdUaHJlYWQ6OmRp
c3BhdGNoKFt0aHJlYWRlZFNjcm9sbGluZ1RyZWUsIHdoZWVsRXZlbnRdIHsKKyAgICAgICAgdGhy
ZWFkZWRTY3JvbGxpbmdUcmVlLT5oYW5kbGVXaGVlbEV2ZW50KHdoZWVsRXZlbnQpOworICAgIH0p
OworICAgIAogICAgIHJldHVybiBEaWRIYW5kbGVFdmVudDsKIH0KIApAQCAtNjksMTMgKzczLDYg
QEAgdm9pZCBUaHJlYWRlZFNjcm9sbGluZ1RyZWU6OmhhbmRsZVdoZWVsRQogICAgIFNjcm9sbGlu
Z1RyZWU6OmhhbmRsZVdoZWVsRXZlbnQod2hlZWxFdmVudCk7CiB9CiAKLXN0YXRpYyB2b2lkIGRl
cmVmU2Nyb2xsaW5nQ29vcmRpbmF0b3IoU2Nyb2xsaW5nQ29vcmRpbmF0b3IqIHNjcm9sbGluZ0Nv
b3JkaW5hdG9yKQotewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0KLSAgICBzY3JvbGxp
bmdDb29yZGluYXRvci0+ZGVyZWYoKTsKLX0KLQogdm9pZCBUaHJlYWRlZFNjcm9sbGluZ1RyZWU6
OmludmFsaWRhdGUoKQogewogICAgIC8vIEludmFsaWRhdGUgaXMgZGlzcGF0Y2hlZCBieSB0aGUg
U2Nyb2xsaW5nQ29vcmRpbmF0b3IgY2xhc3Mgb24gdGhlIFNjcm9sbGluZ1RocmVhZApAQCAtODYs
NyArODMsMTAgQEAgdm9pZCBUaHJlYWRlZFNjcm9sbGluZ1RyZWU6OmludmFsaWRhdGUoKQogICAg
IC8vIFNpbmNlIHRoaXMgY2FuIHBvdGVudGlhbGx5IGJlIHRoZSBsYXN0IHJlZmVyZW5jZSB0byB0
aGUgc2Nyb2xsaW5nIGNvb3JkaW5hdG9yLAogICAgIC8vIHdlIG5lZWQgdG8gcmVsZWFzZSBpdCBv
biB0aGUgbWFpbiB0aHJlYWQgc2luY2UgaXQgaGFzIG1lbWJlciB2YXJpYWJsZXMgKHN1Y2ggYXMg
dGltZXJzKQogICAgIC8vIHRoYXQgZXhwZWN0IHRvIGJlIGRlc3Ryb3llZCBmcm9tIHRoZSBtYWlu
IHRocmVhZC4KLSAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goYmluZChkZXJlZlNjcm9sbGlu
Z0Nvb3JkaW5hdG9yLCBtX3Njcm9sbGluZ0Nvb3JkaW5hdG9yLnJlbGVhc2UoKS5sZWFrUmVmKCkp
KTsKKyAgICBTY3JvbGxpbmdDb29yZGluYXRvciogc2Nyb2xsaW5nQ29vcmRpbmF0b3IgPSBtX3Nj
cm9sbGluZ0Nvb3JkaW5hdG9yLnJlbGVhc2UoKS5sZWFrUmVmKCk7CisgICAgUnVuTG9vcDo6bWFp
bigpLmRpc3BhdGNoKFtzY3JvbGxpbmdDb29yZGluYXRvcl0geworICAgICAgICBzY3JvbGxpbmdD
b29yZGluYXRvci0+ZGVyZWYoKTsKKyAgICB9KTsKIH0KIAogdm9pZCBUaHJlYWRlZFNjcm9sbGlu
Z1RyZWU6OmNvbW1pdE5ld1RyZWVTdGF0ZShzdGQ6OnVuaXF1ZV9wdHI8U2Nyb2xsaW5nU3RhdGVU
cmVlPiBzY3JvbGxpbmdTdGF0ZVRyZWUpCkBAIC0xMDMsNyArMTAzLDEyIEBAIHZvaWQgVGhyZWFk
ZWRTY3JvbGxpbmdUcmVlOjpzY3JvbGxpbmdUcmUKICAgICBpZiAobm9kZUlEID09IHJvb3ROb2Rl
KCktPnNjcm9sbGluZ05vZGVJRCgpKQogICAgICAgICBzZXRNYWluRnJhbWVTY3JvbGxQb3NpdGlv
bihzY3JvbGxQb3NpdGlvbik7CiAKLSAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goYmluZCgm
QXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcjo6c2NoZWR1bGVVcGRhdGVTY3JvbGxQb3NpdGlvbkFm
dGVyQXN5bmNTY3JvbGwsIG1fc2Nyb2xsaW5nQ29vcmRpbmF0b3IuZ2V0KCksIG5vZGVJRCwgc2Ny
b2xsUG9zaXRpb24sIGlzSGFuZGxpbmdQcm9ncmFtbWF0aWNTY3JvbGwoKSwgc2Nyb2xsaW5nTGF5
ZXJQb3NpdGlvbkFjdGlvbikpOworICAgIFJlZlB0cjxBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9y
PiBzY3JvbGxpbmdDb29yZGluYXRvciA9IG1fc2Nyb2xsaW5nQ29vcmRpbmF0b3I7CisgICAgYm9v
bCBsb2NhbElzSGFuZGxpbmdQcm9ncmFtbWF0aWNTY3JvbGwgPSBpc0hhbmRsaW5nUHJvZ3JhbW1h
dGljU2Nyb2xsKCk7CisgICAgCisgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtzY3JvbGxp
bmdDb29yZGluYXRvciwgbm9kZUlELCBzY3JvbGxQb3NpdGlvbiwgbG9jYWxJc0hhbmRsaW5nUHJv
Z3JhbW1hdGljU2Nyb2xsLCBzY3JvbGxpbmdMYXllclBvc2l0aW9uQWN0aW9uXSB7CisgICAgICAg
IHNjcm9sbGluZ0Nvb3JkaW5hdG9yLT5zY2hlZHVsZVVwZGF0ZVNjcm9sbFBvc2l0aW9uQWZ0ZXJB
c3luY1Njcm9sbChub2RlSUQsIHNjcm9sbFBvc2l0aW9uLCBsb2NhbElzSGFuZGxpbmdQcm9ncmFt
bWF0aWNTY3JvbGwsIHNjcm9sbGluZ0xheWVyUG9zaXRpb25BY3Rpb24pOworICAgIH0pOwogfQog
CiAjaWYgUExBVEZPUk0oTUFDKQpAQCAtMTEyLDcgKzExNywxMCBAQCB2b2lkIFRocmVhZGVkU2Ny
b2xsaW5nVHJlZTo6aGFuZGxlV2hlZWxFCiAgICAgaWYgKCFtX3Njcm9sbGluZ0Nvb3JkaW5hdG9y
KQogICAgICAgICByZXR1cm47CiAKLSAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goYmluZCgm
U2Nyb2xsaW5nQ29vcmRpbmF0b3I6OmhhbmRsZVdoZWVsRXZlbnRQaGFzZSwgbV9zY3JvbGxpbmdD
b29yZGluYXRvci5nZXQoKSwgcGhhc2UpKTsKKyAgICBSZWZQdHI8QXN5bmNTY3JvbGxpbmdDb29y
ZGluYXRvcj4gc2Nyb2xsaW5nQ29vcmRpbmF0b3IgPSBtX3Njcm9sbGluZ0Nvb3JkaW5hdG9yOwor
ICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbc2Nyb2xsaW5nQ29vcmRpbmF0b3IsIHBoYXNl
XSB7CisgICAgICAgIHNjcm9sbGluZ0Nvb3JkaW5hdG9yLT5oYW5kbGVXaGVlbEV2ZW50UGhhc2Uo
cGhhc2UpOworICAgIH0pOwogfQogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
c2Nyb2xsaW5nL2lvcy9TY3JvbGxpbmdUcmVlSU9TLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wYWdlL3Njcm9sbGluZy9pb3MvU2Nyb2xsaW5nVHJlZUlPUy5jcHAJKHJldmlzaW9u
IDE3NzgzNSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2lvcy9TY3JvbGxpbmdU
cmVlSU9TLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTcsMTMgKzU3LDYgQEAgU2Nyb2xsaW5nVHJl
ZUlPUzo6flNjcm9sbGluZ1RyZWVJT1MoKQogICAgIEFTU0VSVCghbV9zY3JvbGxpbmdDb29yZGlu
YXRvcik7CiB9CiAKLXN0YXRpYyB2b2lkIGRlcmVmU2Nyb2xsaW5nQ29vcmRpbmF0b3IoU2Nyb2xs
aW5nQ29vcmRpbmF0b3IqIHNjcm9sbGluZ0Nvb3JkaW5hdG9yKQotewotICAgIEFTU0VSVChpc01h
aW5UaHJlYWQoKSk7Ci0KLSAgICBzY3JvbGxpbmdDb29yZGluYXRvci0+ZGVyZWYoKTsKLX0KLQog
dm9pZCBTY3JvbGxpbmdUcmVlSU9TOjppbnZhbGlkYXRlKCkKIHsKICAgICAvLyBJbnZhbGlkYXRl
IGlzIGRpc3BhdGNoZWQgYnkgdGhlIFNjcm9sbGluZ0Nvb3JkaW5hdG9yIGNsYXNzIG9uIHRoZSBT
Y3JvbGxpbmdUaHJlYWQKQEAgLTc0LDcgKzY3LDEwIEBAIHZvaWQgU2Nyb2xsaW5nVHJlZUlPUzo6
aW52YWxpZGF0ZSgpCiAgICAgLy8gU2luY2UgdGhpcyBjYW4gcG90ZW50aWFsbHkgYmUgdGhlIGxh
c3QgcmVmZXJlbmNlIHRvIHRoZSBzY3JvbGxpbmcgY29vcmRpbmF0b3IsCiAgICAgLy8gd2UgbmVl
ZCB0byByZWxlYXNlIGl0IG9uIHRoZSBtYWluIHRocmVhZCBzaW5jZSBpdCBoYXMgbWVtYmVyIHZh
cmlhYmxlcyAoc3VjaCBhcyB0aW1lcnMpCiAgICAgLy8gdGhhdCBleHBlY3QgdG8gYmUgZGVzdHJv
eWVkIGZyb20gdGhlIG1haW4gdGhyZWFkLgotICAgIGNhbGxPbk1haW5UaHJlYWQoYmluZChkZXJl
ZlNjcm9sbGluZ0Nvb3JkaW5hdG9yLCBtX3Njcm9sbGluZ0Nvb3JkaW5hdG9yLnJlbGVhc2UoKS5s
ZWFrUmVmKCkpKTsKKyAgICBTY3JvbGxpbmdDb29yZGluYXRvciogc2Nyb2xsaW5nQ29vcmRpbmF0
b3IgPSBtX3Njcm9sbGluZ0Nvb3JkaW5hdG9yLnJlbGVhc2UoKS5sZWFrUmVmKCk7CisgICAgY2Fs
bE9uTWFpblRocmVhZChbc2Nyb2xsaW5nQ29vcmRpbmF0b3JdIHsKKyAgICAgICAgc2Nyb2xsaW5n
Q29vcmRpbmF0b3ItPmRlcmVmKCk7CisgICAgfSk7CiB9CiAKIHZvaWQgU2Nyb2xsaW5nVHJlZUlP
Uzo6Y29tbWl0TmV3VHJlZVN0YXRlKHN0ZDo6dW5pcXVlX3B0cjxTY3JvbGxpbmdTdGF0ZVRyZWU+
IHNjcm9sbGluZ1N0YXRlVHJlZSkKQEAgLTkwLDcgKzg2LDEyIEBAIHZvaWQgU2Nyb2xsaW5nVHJl
ZUlPUzo6c2Nyb2xsaW5nVHJlZU5vZGUKICAgICBpZiAobm9kZUlEID09IHJvb3ROb2RlKCktPnNj
cm9sbGluZ05vZGVJRCgpKQogICAgICAgICBzZXRNYWluRnJhbWVTY3JvbGxQb3NpdGlvbihzY3Jv
bGxQb3NpdGlvbik7CiAKLSAgICBjYWxsT25NYWluVGhyZWFkKGJpbmQoJkFzeW5jU2Nyb2xsaW5n
Q29vcmRpbmF0b3I6OnNjaGVkdWxlVXBkYXRlU2Nyb2xsUG9zaXRpb25BZnRlckFzeW5jU2Nyb2xs
LCBtX3Njcm9sbGluZ0Nvb3JkaW5hdG9yLmdldCgpLCBub2RlSUQsIHNjcm9sbFBvc2l0aW9uLCBp
c0hhbmRsaW5nUHJvZ3JhbW1hdGljU2Nyb2xsKCksIHNjcm9sbGluZ0xheWVyUG9zaXRpb25BY3Rp
b24pKTsKKyAgICBSZWZQdHI8QXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcj4gc2Nyb2xsaW5nQ29v
cmRpbmF0b3IgPSBtX3Njcm9sbGluZ0Nvb3JkaW5hdG9yOworICAgIGJvb2wgbG9jYWxJc0hhbmRs
aW5nUHJvZ3JhbW1hdGljU2Nyb2xsID0gaXNIYW5kbGluZ1Byb2dyYW1tYXRpY1Njcm9sbCgpOwor
CisgICAgY2FsbE9uTWFpblRocmVhZChbc2Nyb2xsaW5nQ29vcmRpbmF0b3IsIG5vZGVJRCwgc2Ny
b2xsUG9zaXRpb24sIGxvY2FsSXNIYW5kbGluZ1Byb2dyYW1tYXRpY1Njcm9sbCwgc2Nyb2xsaW5n
TGF5ZXJQb3NpdGlvbkFjdGlvbl0geworICAgICAgICBzY3JvbGxpbmdDb29yZGluYXRvci0+c2No
ZWR1bGVVcGRhdGVTY3JvbGxQb3NpdGlvbkFmdGVyQXN5bmNTY3JvbGwobm9kZUlELCBzY3JvbGxQ
b3NpdGlvbiwgaXNIYW5kbGluZ1Byb2dyYW1tYXRpY1Njcm9sbCwgc2Nyb2xsaW5nTGF5ZXJQb3Np
dGlvbkFjdGlvbik7CisgICAgfSk7CiB9CiAKIFBhc3NSZWZQdHI8U2Nyb2xsaW5nVHJlZU5vZGU+
IFNjcm9sbGluZ1RyZWVJT1M6OmNyZWF0ZVNjcm9sbGluZ1RyZWVOb2RlKFNjcm9sbGluZ05vZGVU
eXBlIG5vZGVUeXBlLCBTY3JvbGxpbmdOb2RlSUQgbm9kZUlEKQpJbmRleDogU291cmNlL1dlYkNv
cmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ0Nvb3JkaW5hdG9yTWFjLm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdDb29yZGlu
YXRvck1hYy5tbQkocmV2aXNpb24gMTc3ODM1KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9zY3Jv
bGxpbmcvbWFjL1Njcm9sbGluZ0Nvb3JkaW5hdG9yTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC03
Miw3ICs3Miw5IEBAIHZvaWQgU2Nyb2xsaW5nQ29vcmRpbmF0b3JNYWM6OnBhZ2VEZXN0cm8KIAog
ICAgIC8vIEludmFsaWRhdGluZyB0aGUgc2Nyb2xsaW5nIHRyZWUgd2lsbCBicmVhayB0aGUgcmVm
ZXJlbmNlIGN5Y2xlIGJldHdlZW4gdGhlIFNjcm9sbGluZ0Nvb3JkaW5hdG9yIGFuZCBTY3JvbGxp
bmdUcmVlIG9iamVjdHMuCiAgICAgUmVmUHRyPFRocmVhZGVkU2Nyb2xsaW5nVHJlZT4gc2Nyb2xs
aW5nVHJlZSA9IHN0YXRpY19wb2ludGVyX2Nhc3Q8VGhyZWFkZWRTY3JvbGxpbmdUcmVlPihyZWxl
YXNlU2Nyb2xsaW5nVHJlZSgpKTsKLSAgICBTY3JvbGxpbmdUaHJlYWQ6OmRpc3BhdGNoKGJpbmQo
JlRocmVhZGVkU2Nyb2xsaW5nVHJlZTo6aW52YWxpZGF0ZSwgc2Nyb2xsaW5nVHJlZSkpOworICAg
IFNjcm9sbGluZ1RocmVhZDo6ZGlzcGF0Y2goW3Njcm9sbGluZ1RyZWVdIHsKKyAgICAgICAgc2Ny
b2xsaW5nVHJlZS0+aW52YWxpZGF0ZSgpOworICAgIH0pOwogfQogCiB2b2lkIFNjcm9sbGluZ0Nv
b3JkaW5hdG9yTWFjOjpjb21taXRUcmVlU3RhdGVJZk5lZWRlZCgpCkBAIC05Miw3ICs5NCwxMCBA
QCBib29sIFNjcm9sbGluZ0Nvb3JkaW5hdG9yTWFjOjpoYW5kbGVXaGVlCiAgICAgaWYgKHNjcm9s
bGluZ1RyZWUoKS0+d2lsbFdoZWVsRXZlbnRTdGFydFN3aXBlR2VzdHVyZSh3aGVlbEV2ZW50KSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgU2Nyb2xsaW5nVGhyZWFkOjpkaXNwYXRjaChi
aW5kKCZUaHJlYWRlZFNjcm9sbGluZ1RyZWU6OmhhbmRsZVdoZWVsRXZlbnQsIGRvd25jYXN0PFRo
cmVhZGVkU2Nyb2xsaW5nVHJlZT4oc2Nyb2xsaW5nVHJlZSgpKSwgd2hlZWxFdmVudCkpOworICAg
IFJlZlB0cjxUaHJlYWRlZFNjcm9sbGluZ1RyZWU+IHRocmVhZGVkU2Nyb2xsaW5nVHJlZSA9IGRv
d25jYXN0PFRocmVhZGVkU2Nyb2xsaW5nVHJlZT4oc2Nyb2xsaW5nVHJlZSgpKTsKKyAgICBTY3Jv
bGxpbmdUaHJlYWQ6OmRpc3BhdGNoKFt0aHJlYWRlZFNjcm9sbGluZ1RyZWUsIHdoZWVsRXZlbnRd
IHsKKyAgICAgICAgdGhyZWFkZWRTY3JvbGxpbmdUcmVlLT5oYW5kbGVXaGVlbEV2ZW50KHdoZWVs
RXZlbnQpOworICAgIH0pOwogICAgIHJldHVybiB0cnVlOwogfQogCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL01lbW9yeVByZXNzdXJlSGFuZGxlci5jcHAJKHJldmlzaW9u
IDE3NzgzNCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01lbW9yeVByZXNzdXJlSGFuZGxl
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0MSw3ICsxNDEsOSBAQCB2b2lkIE1lbW9yeVByZXNz
dXJlSGFuZGxlcjo6cmVsZWFzZU1lbW9yCiAgICAgICAgIC8vIEZhc3RNYWxsb2MgaGFzIGxvY2st
ZnJlZSB0aHJlYWQgc3BlY2lmaWMgY2FjaGVzIHRoYXQgY2FuIG9ubHkgYmUgY2xlYXJlZCBmcm9t
IHRoZSB0aHJlYWQgaXRzZWxmLgogICAgICAgICBXb3JrZXJUaHJlYWQ6OnJlbGVhc2VGYXN0TWFs
bG9jRnJlZU1lbW9yeUluQWxsVGhyZWFkcygpOwogI2lmIEVOQUJMRShBU1lOQ19TQ1JPTExJTkcp
ICYmICFQTEFURk9STShJT1MpCi0gICAgICAgIFNjcm9sbGluZ1RocmVhZDo6ZGlzcGF0Y2goYmlu
ZChXVEY6OnJlbGVhc2VGYXN0TWFsbG9jRnJlZU1lbW9yeSkpOworICAgICAgICBTY3JvbGxpbmdU
aHJlYWQ6OmRpc3BhdGNoKFtdIHsKKyAgICAgICAgICAgIFdURjo6cmVsZWFzZUZhc3RNYWxsb2NG
cmVlTWVtb3J5KCk7CisgICAgICAgIH0pOwogI2VuZGlmCiAgICAgICAgIFdURjo6cmVsZWFzZUZh
c3RNYWxsb2NGcmVlTWVtb3J5KCk7CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9Xb3JrZXJUaHJlYWQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
V29ya2VyVGhyZWFkLmNwcAkocmV2aXNpb24gMTc3ODM0KQorKysgU291cmNlL1dlYkNvcmUvd29y
a2Vycy9Xb3JrZXJUaHJlYWQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNTQsMTAgKzI1NCwxMSBA
QCB2b2lkIFdvcmtlclRocmVhZDo6cmVsZWFzZUZhc3RNYWxsb2NGcmVlCiB7CiAgICAgc3RkOjps
b2NrX2d1YXJkPHN0ZDo6bXV0ZXg+IGxvY2sodGhyZWFkU2V0TXV0ZXgoKSk7CiAKLSAgICBmb3Ig
KGF1dG8qIHdvcmtlclRocmVhZCA6IHdvcmtlclRocmVhZHMoKSkKKyAgICBmb3IgKGF1dG8qIHdv
cmtlclRocmVhZCA6IHdvcmtlclRocmVhZHMoKSkgewogICAgICAgICB3b3JrZXJUaHJlYWQtPnJ1
bkxvb3AoKS5wb3N0VGFzayhbXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIHsKICAgICAgICAg
ICAgIFdURjo6cmVsZWFzZUZhc3RNYWxsb2NGcmVlTWVtb3J5KCk7CiAgICAgICAgIH0pOworICAg
IH0KIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYktpdDIvQ2hh
bmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkocmV2aXNpb24g
MTc3ODM1KQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDMgKzEsMTYgQEAKKzIwMTQtMTItMzEgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KKwor
ICAgICAgICBNb3ZlIHNjcm9sbGluZyBjb2RlIG9mZiBvZiBXVEY6OmJpbmQKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MDAxOQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdl
L0V2ZW50RGlzcGF0Y2hlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OkV2ZW50RGlzcGF0Y2hlcjo6
d2hlZWxFdmVudCk6CisgICAgICAgIChXZWJLaXQ6OkV2ZW50RGlzcGF0Y2hlcjo6dG91Y2hFdmVu
dCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25E
cmF3aW5nQXJlYS5tbToKKyAgICAgICAgKFdlYktpdDo6VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2lu
Z0FyZWE6OnVwZGF0ZVByZWZlcmVuY2VzKToKKwogMjAxNC0xMi0zMSAgU2FtIFdlaW5pZyAgPHNh
bUB3ZWJraXQub3JnPgogCiAgICAgICAgIFJlbW92ZSB0aGUgcmVtYWluaW5nIHVzZXMgb2YgT3du
UHRyIGZyb20gV2ViS2l0MgpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L0V2ZW50RGlzcGF0Y2hlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL0V2ZW50RGlzcGF0Y2hlci5jcHAJKHJldmlzaW9uIDE3NzgzNCkKKysrIFNv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9FdmVudERpc3BhdGNoZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMjIsMTMgKzEyMiwxNiBAQCB2b2lkIEV2ZW50RGlzcGF0Y2hlcjo6d2hl
ZWxFdmVudCh1aW50NjRfCiAKICNpZiBFTkFCTEUoQVNZTkNfU0NST0xMSU5HKQogICAgIE11dGV4
TG9ja2VyIGxvY2tlcihtX3Njcm9sbGluZ1RyZWVzTXV0ZXgpOwotICAgIGlmIChUaHJlYWRlZFNj
cm9sbGluZ1RyZWUqIHNjcm9sbGluZ1RyZWUgPSBtX3Njcm9sbGluZ1RyZWVzLmdldChwYWdlSUQp
KSB7CisgICAgaWYgKFJlZlB0cjxUaHJlYWRlZFNjcm9sbGluZ1RyZWU+IHNjcm9sbGluZ1RyZWUg
PSBtX3Njcm9sbGluZ1RyZWVzLmdldChwYWdlSUQpKSB7CiAgICAgICAgIC8vIEZJWE1FOiBJdCdz
IHByZXR0eSBob3JyaWJsZSB0aGF0IHdlJ3JlIHVwZGF0aW5nIHRoZSBiYWNrL2ZvcndhcmQgc3Rh
dGUgaGVyZS4KICAgICAgICAgLy8gV2ViQ29yZSBzaG91bGQgYWx3YXlzIGtub3cgdGhlIGN1cnJl
bnQgc3RhdGUgYW5kIGtub3cgd2hlbiBpdCBjaGFuZ2VzIHNvIHRoZQogICAgICAgICAvLyBzY3Jv
bGxpbmcgdHJlZSBjYW4gYmUgbm90aWZpZWQuCiAgICAgICAgIC8vIFdlIG9ubHkgbmVlZCB0byBk
byB0aGlzIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIGdlc3R1cmUuCi0gICAgICAgIGlmIChwbGF0
Zm9ybVdoZWVsRXZlbnQucGhhc2UoKSA9PSBQbGF0Zm9ybVdoZWVsRXZlbnRQaGFzZUJlZ2FuKQot
ICAgICAgICAgICAgU2Nyb2xsaW5nVGhyZWFkOjpkaXNwYXRjaChiaW5kKCZUaHJlYWRlZFNjcm9s
bGluZ1RyZWU6OnNldENhblJ1YmJlckJhbmRTdGF0ZSwgc2Nyb2xsaW5nVHJlZSwgY2FuUnViYmVy
QmFuZEF0TGVmdCwgY2FuUnViYmVyQmFuZEF0UmlnaHQsIGNhblJ1YmJlckJhbmRBdFRvcCwgY2Fu
UnViYmVyQmFuZEF0Qm90dG9tKSk7CisgICAgICAgIGlmIChwbGF0Zm9ybVdoZWVsRXZlbnQucGhh
c2UoKSA9PSBQbGF0Zm9ybVdoZWVsRXZlbnRQaGFzZUJlZ2FuKSB7CisgICAgICAgICAgICBTY3Jv
bGxpbmdUaHJlYWQ6OmRpc3BhdGNoKFtzY3JvbGxpbmdUcmVlLCBjYW5SdWJiZXJCYW5kQXRMZWZ0
LCBjYW5SdWJiZXJCYW5kQXRSaWdodCwgY2FuUnViYmVyQmFuZEF0VG9wLCBjYW5SdWJiZXJCYW5k
QXRCb3R0b21dIHsKKyAgICAgICAgICAgICAgICBzY3JvbGxpbmdUcmVlLT5zZXRDYW5SdWJiZXJC
YW5kU3RhdGUoY2FuUnViYmVyQmFuZEF0TGVmdCwgY2FuUnViYmVyQmFuZEF0UmlnaHQsIGNhblJ1
YmJlckJhbmRBdFRvcCwgY2FuUnViYmVyQmFuZEF0Qm90dG9tKTsKKyAgICAgICAgICAgIH0pOwor
ICAgICAgICB9CiAKICAgICAgICAgU2Nyb2xsaW5nVHJlZTo6RXZlbnRSZXN1bHQgcmVzdWx0ID0g
c2Nyb2xsaW5nVHJlZS0+dHJ5VG9IYW5kbGVXaGVlbEV2ZW50KHBsYXRmb3JtV2hlZWxFdmVudCk7
CiAgICAgICAgIGlmIChyZXN1bHQgPT0gU2Nyb2xsaW5nVHJlZTo6RGlkSGFuZGxlRXZlbnQgfHwg
cmVzdWx0ID09IFNjcm9sbGluZ1RyZWU6OkRpZE5vdEhhbmRsZUV2ZW50KSB7CkBAIC0xNDMsNyAr
MTQ2LDEwIEBAIHZvaWQgRXZlbnREaXNwYXRjaGVyOjp3aGVlbEV2ZW50KHVpbnQ2NF8KICAgICBV
TlVTRURfUEFSQU0oY2FuUnViYmVyQmFuZEF0Qm90dG9tKTsKICNlbmRpZgogCi0gICAgUnVuTG9v
cDo6bWFpbigpLmRpc3BhdGNoKGJpbmQoJkV2ZW50RGlzcGF0Y2hlcjo6ZGlzcGF0Y2hXaGVlbEV2
ZW50LCB0aGlzLCBwYWdlSUQsIHdoZWVsRXZlbnQpKTsKKyAgICBSZWZQdHI8RXZlbnREaXNwYXRj
aGVyPiBldmVudERpc3BhdGNoZXIodGhpcyk7CisgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNo
KFtldmVudERpc3BhdGNoZXIsIHBhZ2VJRCwgd2hlZWxFdmVudF0geworICAgICAgICBldmVudERp
c3BhdGNoZXItPmRpc3BhdGNoV2hlZWxFdmVudChwYWdlSUQsIHdoZWVsRXZlbnQpOworICAgIH0p
OyAKIH0KIAogI2lmIEVOQUJMRShJT1NfVE9VQ0hfRVZFTlRTKQpAQCAtMTgyLDggKzE4OCwxMiBA
QCB2b2lkIEV2ZW50RGlzcGF0Y2hlcjo6dG91Y2hFdmVudCh1aW50NjRfCiAgICAgICAgIH0KICAg
ICB9CiAKLSAgICBpZiAodXBkYXRlTGlzdFdhc0VtcHR5KQotICAgICAgICBSdW5Mb29wOjptYWlu
KCkuZGlzcGF0Y2goYmluZCgmRXZlbnREaXNwYXRjaGVyOjpkaXNwYXRjaFRvdWNoRXZlbnRzLCB0
aGlzKSk7CisgICAgaWYgKHVwZGF0ZUxpc3RXYXNFbXB0eSkgeworICAgICAgICBSZWZQdHI8RXZl
bnREaXNwYXRjaGVyPiBldmVudERpc3BhdGNoZXIodGhpcyk7CisgICAgICAgIFJ1bkxvb3A6Om1h
aW4oKS5kaXNwYXRjaChbZXZlbnREaXNwYXRjaGVyXSB7CisgICAgICAgICAgICBldmVudERpc3Bh
dGNoZXItPmRpc3BhdGNoVG91Y2hFdmVudHMoKTsKKyAgICAgICAgfSk7CisgICAgfQogfQogCiB2
b2lkIEV2ZW50RGlzcGF0Y2hlcjo6ZGlzcGF0Y2hUb3VjaEV2ZW50cygpCkluZGV4OiBTb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdB
cmVhLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9t
YWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEubW0JKHJldmlzaW9uIDE3NzgzNCkKKysr
IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9u
RHJhd2luZ0FyZWEubW0JKHdvcmtpbmcgY29weSkKQEAgLTE5MSw3ICsxOTEsMTEgQEAgdm9pZCBU
aWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6dXBkYQogI2lmIEVOQUJMRShBU1lOQ19TQ1JP
TExJTkcpCiAgICAgaWYgKEFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IqIHNjcm9sbGluZ0Nvb3Jk
aW5hdG9yID0gZG93bmNhc3Q8QXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcj4obV93ZWJQYWdlLmNv
cmVQYWdlKCktPnNjcm9sbGluZ0Nvb3JkaW5hdG9yKCkpKSB7CiAgICAgICAgIGJvb2wgc2Nyb2xs
aW5nUGVyZm9ybWFuY2VMb2dnaW5nRW5hYmxlZCA9IG1fd2ViUGFnZS5zY3JvbGxpbmdQZXJmb3Jt
YW5jZUxvZ2dpbmdFbmFibGVkKCk7Ci0gICAgICAgIFNjcm9sbGluZ1RocmVhZDo6ZGlzcGF0Y2go
YmluZCgmU2Nyb2xsaW5nVHJlZTo6c2V0U2Nyb2xsaW5nUGVyZm9ybWFuY2VMb2dnaW5nRW5hYmxl
ZCwgc2Nyb2xsaW5nQ29vcmRpbmF0b3ItPnNjcm9sbGluZ1RyZWUoKSwgc2Nyb2xsaW5nUGVyZm9y
bWFuY2VMb2dnaW5nRW5hYmxlZCkpOworICAgICAgICAKKyAgICAgICAgUmVmUHRyPFNjcm9sbGlu
Z1RyZWU+IHNjcm9sbGluZ1RyZWUgPSBzY3JvbGxpbmdDb29yZGluYXRvci0+c2Nyb2xsaW5nVHJl
ZSgpOworICAgICAgICBTY3JvbGxpbmdUaHJlYWQ6OmRpc3BhdGNoKFtzY3JvbGxpbmdUcmVlLCBz
Y3JvbGxpbmdQZXJmb3JtYW5jZUxvZ2dpbmdFbmFibGVkXSB7CisgICAgICAgICAgICBzY3JvbGxp
bmdUcmVlLT5zZXRTY3JvbGxpbmdQZXJmb3JtYW5jZUxvZ2dpbmdFbmFibGVkKHNjcm9sbGluZ1Bl
cmZvcm1hbmNlTG9nZ2luZ0VuYWJsZWQpOworICAgICAgICB9KTsKICAgICB9CiAjZW5kaWYKIAo=
</data>
<flag name="review"
          id="268773"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>