<?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>177685</bug_id>
          
          <creation_ts>2017-09-29 14:58:34 -0700</creation_ts>
          <short_desc>Remove SelectionSubtreeRoot::RenderSubtreesMap</short_desc>
          <delta_ts>2017-09-29 15:52:09 -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>WebKit 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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>177678</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="alan">zalan</reporter>
          <assigned_to name="alan">zalan</assigned_to>
          <cc>aestes</cc>
    
    <cc>bfulgham</cc>
    
    <cc>commit-queue</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1354718</commentid>
    <comment_count>0</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2017-09-29 14:58:34 -0700</bug_when>
    <thetext>This is part of the selection root cleanup.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1354722</commentid>
    <comment_count>1</comment_count>
      <attachid>322239</attachid>
    <who name="alan">zalan</who>
    <bug_when>2017-09-29 15:01:56 -0700</bug_when>
    <thetext>Created attachment 322239
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1354723</commentid>
    <comment_count>2</comment_count>
      <attachid>322239</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2017-09-29 15:04:34 -0700</bug_when>
    <thetext>Comment on attachment 322239
Patch

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

&gt; Source/WebCore/rendering/RenderView.cpp:815
&gt; +    std::unique_ptr&lt;OldSelectionData&gt; oldSelectionData = std::make_unique&lt;OldSelectionData&gt;();

I&apos;d use auto here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1354727</commentid>
    <comment_count>3</comment_count>
      <attachid>322240</attachid>
    <who name="alan">zalan</who>
    <bug_when>2017-09-29 15:08:56 -0700</bug_when>
    <thetext>Created attachment 322240
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1354730</commentid>
    <comment_count>4</comment_count>
      <attachid>322242</attachid>
    <who name="alan">zalan</who>
    <bug_when>2017-09-29 15:10:47 -0700</bug_when>
    <thetext>Created attachment 322242
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1354747</commentid>
    <comment_count>5</comment_count>
      <attachid>322242</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-09-29 15:50:59 -0700</bug_when>
    <thetext>Comment on attachment 322242
Patch

Clearing flags on attachment: 322242

Committed r222669: &lt;http://trac.webkit.org/changeset/222669&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1354748</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-09-29 15:51:00 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1354749</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-09-29 15:52:09 -0700</bug_when>
    <thetext>&lt;rdar://problem/34749485&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>322239</attachid>
            <date>2017-09-29 15:01:56 -0700</date>
            <delta_ts>2017-09-29 15:08:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-177685-20170929150155.patch</filename>
            <type>text/plain</type>
            <size>16042</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIyNjUzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTBiMGJiYzJjN2Y0YzA2
MmQ1MmY2NGJmNWRhNjExMTY4NGFmMjc1Yi4uMzhlMjkwZmMwOTM0MDZkZjQ1NDNhN2NlZmQ4YmZm
ZDhkMTFiMDAwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDMwIEBACiAyMDE3LTA5LTI5ICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKKyAgICAgICAgUmVtb3ZlIFNlbGVjdGlvblN1
YnRyZWVSb290OjpSZW5kZXJTdWJ0cmVlc01hcAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc3Njg1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgVGhpcyBpcyBpbiBwcmVwYXJhdGlvbiBvZiByZW1vdmluZyBy
ZWR1bmRhbnQgU2VsZWN0aW9uU3VidHJlZVJvb3QuCisgICAgICAgIChOb3cgdGhhdCB3ZSByZW1v
dmVkIHJlZ2lvbnMsIFJlbmRlclZpZXcgaXMgdGhlIG9ubHkgc2VsZWN0aW9uIHJvb3QpIAorCisg
ICAgICAgIE5vIGNoYW5nZSBpbiBmdW5jdGlvbmFsaXR5LgorCisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlclZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVmlldzo6c2VsZWN0aW9u
Qm91bmRzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclZpZXc6OnN1YnRyZWVTZWxl
Y3Rpb25Cb3VuZHMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVmlldzo6cmVwYWlu
dFNlbGVjdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJWaWV3OjpyZXBhaW50
U3VidHJlZVNlbGVjdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJWaWV3Ojpz
ZXRTZWxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6aXNWYWxpZE9iamVjdEZvck5ld1NlbGVj
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJWaWV3OjpjbGVhclN1YnRyZWVTZWxlY3Rp
b24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVmlldzo6YXBwbHlTdWJ0cmVlU2Vs
ZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclZpZXc6OnVwZGF0ZVNlbGVjdGlvbkZv
clN1YnRyZWVzKTogRGVsZXRlZC4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVmlldy5oOgor
ICAgICAgICAqIHJlbmRlcmluZy9TZWxlY3Rpb25TdWJ0cmVlUm9vdC5oOgorCisyMDE3LTA5LTI5
ICBaYWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKICAgICAgICAgQWRkIFdlYWtQdHIg
c3VwcG9ydCB0byBSZW5kZXJPYmplY3QuCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNzc0MjkKICAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzM0NjI1MjEy
PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwCmluZGV4IGEwYzZiOTRhODMw
OTUzOGRkMTNiOWQyMWI0YmJiZThjMDY2MmMxZDMuLmU2NTE2OGJhOTE5ZDNmMzA0NDMwMzVkNzkw
NjdlYzA4YzViNzRmMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAK
QEAgLTcwOCwyMyArNzA4LDIzIEBAIHN0YXRpYyBSZW5kZXJPYmplY3QqIHJlbmRlcmVyQWZ0ZXJQ
b3NpdGlvbihSZW5kZXJPYmplY3QqIG9iamVjdCwgdW5zaWduZWQgb2Zmc2V0CiAKIEludFJlY3Qg
UmVuZGVyVmlldzo6c2VsZWN0aW9uQm91bmRzKGJvb2wgY2xpcFRvVmlzaWJsZUNvbnRlbnQpIGNv
bnN0CiB7Ci0gICAgTGF5b3V0UmVjdCBzZWxSZWN0ID0gc3VidHJlZVNlbGVjdGlvbkJvdW5kcygq
dGhpcywgY2xpcFRvVmlzaWJsZUNvbnRlbnQpOworICAgIExheW91dFJlY3Qgc2VsUmVjdCA9IHN1
YnRyZWVTZWxlY3Rpb25Cb3VuZHMoY2xpcFRvVmlzaWJsZUNvbnRlbnQpOwogICAgIHJldHVybiBz
bmFwcGVkSW50UmVjdChzZWxSZWN0KTsKIH0KIAotTGF5b3V0UmVjdCBSZW5kZXJWaWV3OjpzdWJ0
cmVlU2VsZWN0aW9uQm91bmRzKGNvbnN0IFNlbGVjdGlvblN1YnRyZWVSb290JiByb290LCBib29s
IGNsaXBUb1Zpc2libGVDb250ZW50KSBjb25zdAorTGF5b3V0UmVjdCBSZW5kZXJWaWV3OjpzdWJ0
cmVlU2VsZWN0aW9uQm91bmRzKGJvb2wgY2xpcFRvVmlzaWJsZUNvbnRlbnQpIGNvbnN0CiB7CiAg
ICAgdHlwZWRlZiBIYXNoTWFwPFJlbmRlck9iamVjdCosIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJT
ZWxlY3Rpb25JbmZvPj4gU2VsZWN0aW9uTWFwOwogICAgIFNlbGVjdGlvbk1hcCBzZWxlY3RlZE9i
amVjdHM7CiAKLSAgICBSZW5kZXJPYmplY3QqIG9zID0gcm9vdC5zZWxlY3Rpb25EYXRhKCkuc2Vs
ZWN0aW9uU3RhcnQoKTsKLSAgICBhdXRvKiBzZWxlY3Rpb25FbmQgPSByb290LnNlbGVjdGlvbkRh
dGEoKS5zZWxlY3Rpb25FbmQoKTsKKyAgICBSZW5kZXJPYmplY3QqIG9zID0gc2VsZWN0aW9uRGF0
YSgpLnNlbGVjdGlvblN0YXJ0KCk7CisgICAgYXV0byogc2VsZWN0aW9uRW5kID0gc2VsZWN0aW9u
RGF0YSgpLnNlbGVjdGlvbkVuZCgpOwogICAgIFJlbmRlck9iamVjdCogc3RvcCA9IG51bGxwdHI7
CiAgICAgaWYgKHNlbGVjdGlvbkVuZCkKLSAgICAgICAgc3RvcCA9IHJlbmRlcmVyQWZ0ZXJQb3Np
dGlvbihzZWxlY3Rpb25FbmQsIHJvb3Quc2VsZWN0aW9uRGF0YSgpLnNlbGVjdGlvbkVuZFBvcygp
LnZhbHVlKCkpOworICAgICAgICBzdG9wID0gcmVuZGVyZXJBZnRlclBvc2l0aW9uKHNlbGVjdGlv
bkVuZCwgc2VsZWN0aW9uRGF0YSgpLnNlbGVjdGlvbkVuZFBvcygpLnZhbHVlKCkpOwogICAgIFNl
bGVjdGlvbkl0ZXJhdG9yIHNlbGVjdGlvbkl0ZXJhdG9yKG9zKTsKICAgICB3aGlsZSAob3MgJiYg
b3MgIT0gc3RvcCkgewotICAgICAgICBpZiAoKG9zLT5jYW5CZVNlbGVjdGlvbkxlYWYoKSB8fCBv
cyA9PSByb290LnNlbGVjdGlvbkRhdGEoKS5zZWxlY3Rpb25TdGFydCgpIHx8IG9zID09IHJvb3Qu
c2VsZWN0aW9uRGF0YSgpLnNlbGVjdGlvbkVuZCgpKSAmJiBvcy0+c2VsZWN0aW9uU3RhdGUoKSAh
PSBTZWxlY3Rpb25Ob25lKSB7CisgICAgICAgIGlmICgob3MtPmNhbkJlU2VsZWN0aW9uTGVhZigp
IHx8IG9zID09IHNlbGVjdGlvbkRhdGEoKS5zZWxlY3Rpb25TdGFydCgpIHx8IG9zID09IHNlbGVj
dGlvbkRhdGEoKS5zZWxlY3Rpb25FbmQoKSkgJiYgb3MtPnNlbGVjdGlvblN0YXRlKCkgIT0gU2Vs
ZWN0aW9uTm9uZSkgewogICAgICAgICAgICAgLy8gQmxvY2tzIGFyZSByZXNwb25zaWJsZSBmb3Ig
cGFpbnRpbmcgbGluZSBnYXBzIGFuZCBtYXJnaW4gZ2Fwcy4gVGhleSBtdXN0IGJlIGV4YW1pbmVk
IGFzIHdlbGwuCiAgICAgICAgICAgICBzZWxlY3RlZE9iamVjdHMuc2V0KG9zLCBzdGQ6Om1ha2Vf
dW5pcXVlPFJlbmRlclNlbGVjdGlvbkluZm8+KCpvcywgY2xpcFRvVmlzaWJsZUNvbnRlbnQpKTsK
ICAgICAgICAgICAgIFJlbmRlckJsb2NrKiBjYiA9IG9zLT5jb250YWluaW5nQmxvY2soKTsKQEAg
LTc1OCwyMCArNzU4LDIwIEBAIExheW91dFJlY3QgUmVuZGVyVmlldzo6c3VidHJlZVNlbGVjdGlv
bkJvdW5kcyhjb25zdCBTZWxlY3Rpb25TdWJ0cmVlUm9vdCYgcm9vdCwKIAogdm9pZCBSZW5kZXJW
aWV3OjpyZXBhaW50U2VsZWN0aW9uKCkgY29uc3QKIHsKLSAgICByZXBhaW50U3VidHJlZVNlbGVj
dGlvbigqdGhpcyk7CisgICAgcmVwYWludFN1YnRyZWVTZWxlY3Rpb24oKTsKIH0KIAotdm9pZCBS
ZW5kZXJWaWV3OjpyZXBhaW50U3VidHJlZVNlbGVjdGlvbihjb25zdCBTZWxlY3Rpb25TdWJ0cmVl
Um9vdCYgcm9vdCkgY29uc3QKK3ZvaWQgUmVuZGVyVmlldzo6cmVwYWludFN1YnRyZWVTZWxlY3Rp
b24oKSBjb25zdAogewogICAgIEhhc2hTZXQ8UmVuZGVyQmxvY2sqPiBwcm9jZXNzZWRCbG9ja3M7
CiAKLSAgICBhdXRvKiBzZWxlY3Rpb25FbmQgPSByb290LnNlbGVjdGlvbkRhdGEoKS5zZWxlY3Rp
b25FbmQoKTsKKyAgICBhdXRvKiBzZWxlY3Rpb25FbmQgPSBzZWxlY3Rpb25EYXRhKCkuc2VsZWN0
aW9uRW5kKCk7CiAgICAgUmVuZGVyT2JqZWN0KiBlbmQgPSBudWxscHRyOwogICAgIGlmIChzZWxl
Y3Rpb25FbmQpCi0gICAgICAgIGVuZCA9IHJlbmRlcmVyQWZ0ZXJQb3NpdGlvbihzZWxlY3Rpb25F
bmQsIHJvb3Quc2VsZWN0aW9uRGF0YSgpLnNlbGVjdGlvbkVuZFBvcygpLnZhbHVlKCkpOwotICAg
IFNlbGVjdGlvbkl0ZXJhdG9yIHNlbGVjdGlvbkl0ZXJhdG9yKHJvb3Quc2VsZWN0aW9uRGF0YSgp
LnNlbGVjdGlvblN0YXJ0KCkpOworICAgICAgICBlbmQgPSByZW5kZXJlckFmdGVyUG9zaXRpb24o
c2VsZWN0aW9uRW5kLCBzZWxlY3Rpb25EYXRhKCkuc2VsZWN0aW9uRW5kUG9zKCkudmFsdWUoKSk7
CisgICAgU2VsZWN0aW9uSXRlcmF0b3Igc2VsZWN0aW9uSXRlcmF0b3Ioc2VsZWN0aW9uRGF0YSgp
LnNlbGVjdGlvblN0YXJ0KCkpOwogICAgIGZvciAoUmVuZGVyT2JqZWN0KiBvID0gc2VsZWN0aW9u
SXRlcmF0b3IuY3VycmVudCgpOyBvICYmIG8gIT0gZW5kOyBvID0gc2VsZWN0aW9uSXRlcmF0b3Iu
bmV4dCgpKSB7Ci0gICAgICAgIGlmICghby0+Y2FuQmVTZWxlY3Rpb25MZWFmKCkgJiYgbyAhPSBy
b290LnNlbGVjdGlvbkRhdGEoKS5zZWxlY3Rpb25TdGFydCgpICYmIG8gIT0gcm9vdC5zZWxlY3Rp
b25EYXRhKCkuc2VsZWN0aW9uRW5kKCkpCisgICAgICAgIGlmICghby0+Y2FuQmVTZWxlY3Rpb25M
ZWFmKCkgJiYgbyAhPSBzZWxlY3Rpb25EYXRhKCkuc2VsZWN0aW9uU3RhcnQoKSAmJiBvICE9IHNl
bGVjdGlvbkRhdGEoKS5zZWxlY3Rpb25FbmQoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAg
ICAgICBpZiAoby0+c2VsZWN0aW9uU3RhdGUoKSA9PSBTZWxlY3Rpb25Ob25lKQogICAgICAgICAg
ICAgY29udGludWU7CkBAIC04MTIsNTkgKzgxMiwzNiBAQCB2b2lkIFJlbmRlclZpZXc6OnNldFNl
bGVjdGlvbihSZW5kZXJPYmplY3QqIHN0YXJ0LCBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBzdGFy
dAogICAgIG1fc2VsZWN0aW9uVW5zcGxpdFN0YXJ0UG9zID0gc3RhcnRQb3M7CiAgICAgbV9zZWxl
Y3Rpb25VbnNwbGl0RW5kID0gZW5kOwogICAgIG1fc2VsZWN0aW9uVW5zcGxpdEVuZFBvcyA9IGVu
ZFBvczsKLQotICAgIFJlbmRlclN1YnRyZWVzTWFwIHNpbmdsZVN1YnRyZWVNYXA7Ci0gICAgc2lu
Z2xlU3VidHJlZU1hcC5zZXQodGhpcywgU2VsZWN0aW9uU3VidHJlZURhdGEoc3RhcnQsIHN0YXJ0
UG9zLCBlbmQsIGVuZFBvcykpOwotICAgIHVwZGF0ZVNlbGVjdGlvbkZvclN1YnRyZWVzKHNpbmds
ZVN1YnRyZWVNYXAsIGJsb2NrUmVwYWludE1vZGUpOwotfQotCi12b2lkIFJlbmRlclZpZXc6OnVw
ZGF0ZVNlbGVjdGlvbkZvclN1YnRyZWVzKFJlbmRlclN1YnRyZWVzTWFwJiByZW5kZXJTdWJ0cmVl
c01hcCwgU2VsZWN0aW9uUmVwYWludE1vZGUgYmxvY2tSZXBhaW50TW9kZSkKLXsKLSAgICBTdWJ0
cmVlT2xkU2VsZWN0aW9uRGF0YU1hcCBvbGRTZWxlY3Rpb25EYXRhTWFwOwotICAgIGZvciAoYXV0
byYgc3VidHJlZVNlbGVjdGlvbkluZm8gOiByZW5kZXJTdWJ0cmVlc01hcCkgewotICAgICAgICBT
ZWxlY3Rpb25TdWJ0cmVlUm9vdCYgcm9vdCA9ICpzdWJ0cmVlU2VsZWN0aW9uSW5mby5rZXk7Ci0g
ICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxPbGRTZWxlY3Rpb25EYXRhPiBvbGRTZWxlY3Rpb25EYXRh
ID0gc3RkOjptYWtlX3VuaXF1ZTxPbGRTZWxlY3Rpb25EYXRhPigpOwotCi0gICAgICAgIGNsZWFy
U3VidHJlZVNlbGVjdGlvbihyb290LCBibG9ja1JlcGFpbnRNb2RlLCAqb2xkU2VsZWN0aW9uRGF0
YSk7Ci0gICAgICAgIG9sZFNlbGVjdGlvbkRhdGFNYXAuc2V0KCZyb290LCBXVEZNb3ZlKG9sZFNl
bGVjdGlvbkRhdGEpKTsKLQotICAgICAgICByb290LnNldFNlbGVjdGlvbkRhdGEoc3VidHJlZVNl
bGVjdGlvbkluZm8udmFsdWUpOwotICAgIH0KLQotICAgIC8vIFVwZGF0ZSBzZWxlY3Rpb24gc3Rh
dHVzIGZvciB0aGUgb2JqZWN0cyBpbnNpZGUgdGhlIHNlbGVjdGlvbiBzdWJ0cmVlcy4KLSAgICAv
LyBUaGlzIG5lZWRzIHRvIGJlIGRvbmUgYWZ0ZXIgdGhlIHByZXZpb3VzIGxvb3AgdXBkYXRlZCB0
aGUgc2VsZWN0aW9uU3RhcnQvRW5kCi0gICAgLy8gcGFyYW1ldGVycyBvZiBhbGwgc3VidHJlZXMg
YmVjYXVzZSB3ZSdyZSBnb2luZyB0byBiZSBjbGltYmluZyB1cCB0aGUgY29udGFpbmluZwotICAg
IC8vIGJsb2NrIGNoYWluIGFuZCB3ZSBtaWdodCBlbmQgdXAgaW4gYSBkaWZmZXJlbnQgc2VsZWN0
aW9uIHN1YnRyZWUuCi0gICAgZm9yIChjb25zdCBhdXRvKiBzdWJ0cmVlU2VsZWN0aW9uUm9vdCA6
IHJlbmRlclN1YnRyZWVzTWFwLmtleXMoKSkgewotICAgICAgICBPbGRTZWxlY3Rpb25EYXRhJiBv
bGRTZWxlY3Rpb25EYXRhID0gKm9sZFNlbGVjdGlvbkRhdGFNYXAuZ2V0KHN1YnRyZWVTZWxlY3Rp
b25Sb290KTsKLSAgICAgICAgYXBwbHlTdWJ0cmVlU2VsZWN0aW9uKCpzdWJ0cmVlU2VsZWN0aW9u
Um9vdCwgYmxvY2tSZXBhaW50TW9kZSwgb2xkU2VsZWN0aW9uRGF0YSk7Ci0gICAgfQorICAgIHN0
ZDo6dW5pcXVlX3B0cjxPbGRTZWxlY3Rpb25EYXRhPiBvbGRTZWxlY3Rpb25EYXRhID0gc3RkOjpt
YWtlX3VuaXF1ZTxPbGRTZWxlY3Rpb25EYXRhPigpOworICAgIGNsZWFyU3VidHJlZVNlbGVjdGlv
bihibG9ja1JlcGFpbnRNb2RlLCAqb2xkU2VsZWN0aW9uRGF0YSk7CisgICAgc2V0U2VsZWN0aW9u
RGF0YShTZWxlY3Rpb25TdWJ0cmVlRGF0YShzdGFydCwgc3RhcnRQb3MsIGVuZCwgZW5kUG9zKSk7
CisgICAgYXBwbHlTdWJ0cmVlU2VsZWN0aW9uKGJsb2NrUmVwYWludE1vZGUsICpvbGRTZWxlY3Rp
b25EYXRhKTsKIH0KIAotc3RhdGljIGlubGluZSBib29sIGlzVmFsaWRPYmplY3RGb3JOZXdTZWxl
Y3Rpb24oY29uc3QgU2VsZWN0aW9uU3VidHJlZVJvb3QmIHJvb3QsIGNvbnN0IFJlbmRlck9iamVj
dCYgb2JqZWN0KQorc3RhdGljIGlubGluZSBib29sIGlzVmFsaWRPYmplY3RGb3JOZXdTZWxlY3Rp
b24oY29uc3QgUmVuZGVyVmlldyYgdmlldywgY29uc3QgUmVuZGVyT2JqZWN0JiBvYmplY3QpCiB7
Ci0gICAgcmV0dXJuIChvYmplY3QuY2FuQmVTZWxlY3Rpb25MZWFmKCkgfHwgJm9iamVjdCA9PSBy
b290LnNlbGVjdGlvbkRhdGEoKS5zZWxlY3Rpb25TdGFydCgpIHx8ICZvYmplY3QgPT0gcm9vdC5z
ZWxlY3Rpb25EYXRhKCkuc2VsZWN0aW9uRW5kKCkpICYmIG9iamVjdC5zZWxlY3Rpb25TdGF0ZSgp
ICE9IFJlbmRlck9iamVjdDo6U2VsZWN0aW9uTm9uZSAmJiBvYmplY3QuY29udGFpbmluZ0Jsb2Nr
KCk7CisgICAgcmV0dXJuIChvYmplY3QuY2FuQmVTZWxlY3Rpb25MZWFmKCkgfHwgJm9iamVjdCA9
PSB2aWV3LnNlbGVjdGlvbkRhdGEoKS5zZWxlY3Rpb25TdGFydCgpIHx8ICZvYmplY3QgPT0gdmll
dy5zZWxlY3Rpb25EYXRhKCkuc2VsZWN0aW9uRW5kKCkpICYmIG9iamVjdC5zZWxlY3Rpb25TdGF0
ZSgpICE9IFJlbmRlck9iamVjdDo6U2VsZWN0aW9uTm9uZSAmJiBvYmplY3QuY29udGFpbmluZ0Js
b2NrKCk7CiB9CiAKLXZvaWQgUmVuZGVyVmlldzo6Y2xlYXJTdWJ0cmVlU2VsZWN0aW9uKGNvbnN0
IFNlbGVjdGlvblN1YnRyZWVSb290JiByb290LCBTZWxlY3Rpb25SZXBhaW50TW9kZSBibG9ja1Jl
cGFpbnRNb2RlLCBPbGRTZWxlY3Rpb25EYXRhJiBvbGRTZWxlY3Rpb25EYXRhKSBjb25zdAordm9p
ZCBSZW5kZXJWaWV3OjpjbGVhclN1YnRyZWVTZWxlY3Rpb24oU2VsZWN0aW9uUmVwYWludE1vZGUg
YmxvY2tSZXBhaW50TW9kZSwgT2xkU2VsZWN0aW9uRGF0YSYgb2xkU2VsZWN0aW9uRGF0YSkgY29u
c3QKIHsKICAgICAvLyBSZWNvcmQgdGhlIG9sZCBzZWxlY3RlZCBvYmplY3RzLiAgVGhlc2Ugd2ls
bCBiZSB1c2VkIGxhdGVyCiAgICAgLy8gd2hlbiB3ZSBjb21wYXJlIGFnYWluc3QgdGhlIG5ldyBz
ZWxlY3RlZCBvYmplY3RzLgotICAgIG9sZFNlbGVjdGlvbkRhdGEuc2VsZWN0aW9uU3RhcnRQb3Mg
PSByb290LnNlbGVjdGlvbkRhdGEoKS5zZWxlY3Rpb25TdGFydFBvcygpOwotICAgIG9sZFNlbGVj
dGlvbkRhdGEuc2VsZWN0aW9uRW5kUG9zID0gcm9vdC5zZWxlY3Rpb25EYXRhKCkuc2VsZWN0aW9u
RW5kUG9zKCk7CisgICAgb2xkU2VsZWN0aW9uRGF0YS5zZWxlY3Rpb25TdGFydFBvcyA9IHNlbGVj
dGlvbkRhdGEoKS5zZWxlY3Rpb25TdGFydFBvcygpOworICAgIG9sZFNlbGVjdGlvbkRhdGEuc2Vs
ZWN0aW9uRW5kUG9zID0gc2VsZWN0aW9uRGF0YSgpLnNlbGVjdGlvbkVuZFBvcygpOwogICAgIAog
ICAgIC8vIEJsb2NrcyBjb250YWluIHNlbGVjdGVkIG9iamVjdHMgYW5kIGZpbGwgZ2FwcyBiZXR3
ZWVuIHRoZW0sIGVpdGhlciBvbiB0aGUgbGVmdCwgcmlnaHQsIG9yIGluIGJldHdlZW4gbGluZXMg
YW5kIGJsb2Nrcy4KICAgICAvLyBJbiBvcmRlciB0byBnZXQgdGhlIHJlcGFpbnQgcmVjdCByaWdo
dCwgd2UgaGF2ZSB0byBleGFtaW5lIGxlZnQsIG1pZGRsZSwgYW5kIHJpZ2h0IHJlY3RzIGluZGl2
aWR1YWxseSwgc2luY2Ugb3RoZXJ3aXNlCiAgICAgLy8gdGhlIHVuaW9uIG9mIHRob3NlIHJlY3Rz
IG1pZ2h0IHJlbWFpbiB0aGUgc2FtZSBldmVuIHdoZW4gY2hhbmdlcyBoYXZlIG9jY3VycmVkLgog
Ci0gICAgUmVuZGVyT2JqZWN0KiBvcyA9IHJvb3Quc2VsZWN0aW9uRGF0YSgpLnNlbGVjdGlvblN0
YXJ0KCk7Ci0gICAgYXV0byogc2VsZWN0aW9uRW5kID0gcm9vdC5zZWxlY3Rpb25EYXRhKCkuc2Vs
ZWN0aW9uRW5kKCk7CisgICAgUmVuZGVyT2JqZWN0KiBvcyA9IHNlbGVjdGlvbkRhdGEoKS5zZWxl
Y3Rpb25TdGFydCgpOworICAgIGF1dG8qIHNlbGVjdGlvbkVuZCA9IHNlbGVjdGlvbkRhdGEoKS5z
ZWxlY3Rpb25FbmQoKTsKICAgICBSZW5kZXJPYmplY3QqIHN0b3AgPSBudWxscHRyOwogICAgIGlm
IChzZWxlY3Rpb25FbmQpCi0gICAgICAgIHN0b3AgPSByZW5kZXJlckFmdGVyUG9zaXRpb24oc2Vs
ZWN0aW9uRW5kLCByb290LnNlbGVjdGlvbkRhdGEoKS5zZWxlY3Rpb25FbmRQb3MoKS52YWx1ZSgp
KTsKKyAgICAgICAgc3RvcCA9IHJlbmRlcmVyQWZ0ZXJQb3NpdGlvbihzZWxlY3Rpb25FbmQsIHNl
bGVjdGlvbkRhdGEoKS5zZWxlY3Rpb25FbmRQb3MoKS52YWx1ZSgpKTsKICAgICBTZWxlY3Rpb25J
dGVyYXRvciBzZWxlY3Rpb25JdGVyYXRvcihvcyk7CiAgICAgd2hpbGUgKG9zICYmIG9zICE9IHN0
b3ApIHsKLSAgICAgICAgaWYgKGlzVmFsaWRPYmplY3RGb3JOZXdTZWxlY3Rpb24ocm9vdCwgKm9z
KSkgeworICAgICAgICBpZiAoaXNWYWxpZE9iamVjdEZvck5ld1NlbGVjdGlvbigqdGhpcywgKm9z
KSkgewogICAgICAgICAgICAgLy8gQmxvY2tzIGFyZSByZXNwb25zaWJsZSBmb3IgcGFpbnRpbmcg
bGluZSBnYXBzIGFuZCBtYXJnaW4gZ2Fwcy4gIFRoZXkgbXVzdCBiZSBleGFtaW5lZCBhcyB3ZWxs
LgogICAgICAgICAgICAgb2xkU2VsZWN0aW9uRGF0YS5zZWxlY3RlZE9iamVjdHMuc2V0KG9zLCBz
dGQ6Om1ha2VfdW5pcXVlPFJlbmRlclNlbGVjdGlvbkluZm8+KCpvcywgdHJ1ZSkpOwogICAgICAg
ICAgICAgaWYgKGJsb2NrUmVwYWludE1vZGUgPT0gUmVwYWludE5ld1hPUk9sZCkgewpAQCAtODg2
LDMyICs4NjMsMjkgQEAgdm9pZCBSZW5kZXJWaWV3OjpjbGVhclN1YnRyZWVTZWxlY3Rpb24oY29u
c3QgU2VsZWN0aW9uU3VidHJlZVJvb3QmIHJvb3QsIFNlbGVjdGkKICAgICAgICAgc2VsZWN0ZWRP
YmplY3QtPnNldFNlbGVjdGlvblN0YXRlSWZOZWVkZWQoU2VsZWN0aW9uTm9uZSk7CiB9CiAKLXZv
aWQgUmVuZGVyVmlldzo6YXBwbHlTdWJ0cmVlU2VsZWN0aW9uKGNvbnN0IFNlbGVjdGlvblN1YnRy
ZWVSb290JiByb290LCBTZWxlY3Rpb25SZXBhaW50TW9kZSBibG9ja1JlcGFpbnRNb2RlLCBjb25z
dCBPbGRTZWxlY3Rpb25EYXRhJiBvbGRTZWxlY3Rpb25EYXRhKQordm9pZCBSZW5kZXJWaWV3Ojph
cHBseVN1YnRyZWVTZWxlY3Rpb24oU2VsZWN0aW9uUmVwYWludE1vZGUgYmxvY2tSZXBhaW50TW9k
ZSwgY29uc3QgT2xkU2VsZWN0aW9uRGF0YSYgb2xkU2VsZWN0aW9uRGF0YSkKIHsKICAgICAvLyBV
cGRhdGUgdGhlIHNlbGVjdGlvbiBzdGF0dXMgb2YgYWxsIG9iamVjdHMgYmV0d2VlbiBzZWxlY3Rp
b25TdGFydCBhbmQgc2VsZWN0aW9uRW5kCi0gICAgaWYgKHJvb3Quc2VsZWN0aW9uRGF0YSgpLnNl
bGVjdGlvblN0YXJ0KCkgJiYgcm9vdC5zZWxlY3Rpb25EYXRhKCkuc2VsZWN0aW9uU3RhcnQoKSA9
PSByb290LnNlbGVjdGlvbkRhdGEoKS5zZWxlY3Rpb25FbmQoKSkKLSAgICAgICAgcm9vdC5zZWxl
Y3Rpb25EYXRhKCkuc2VsZWN0aW9uU3RhcnQoKS0+c2V0U2VsZWN0aW9uU3RhdGVJZk5lZWRlZChT
ZWxlY3Rpb25Cb3RoKTsKKyAgICBpZiAoc2VsZWN0aW9uRGF0YSgpLnNlbGVjdGlvblN0YXJ0KCkg
JiYgc2VsZWN0aW9uRGF0YSgpLnNlbGVjdGlvblN0YXJ0KCkgPT0gc2VsZWN0aW9uRGF0YSgpLnNl
bGVjdGlvbkVuZCgpKQorICAgICAgICBzZWxlY3Rpb25EYXRhKCkuc2VsZWN0aW9uU3RhcnQoKS0+
c2V0U2VsZWN0aW9uU3RhdGVJZk5lZWRlZChTZWxlY3Rpb25Cb3RoKTsKICAgICBlbHNlIHsKLSAg
ICAgICAgaWYgKHJvb3Quc2VsZWN0aW9uRGF0YSgpLnNlbGVjdGlvblN0YXJ0KCkpCi0gICAgICAg
ICAgICByb290LnNlbGVjdGlvbkRhdGEoKS5zZWxlY3Rpb25TdGFydCgpLT5zZXRTZWxlY3Rpb25T
dGF0ZUlmTmVlZGVkKFNlbGVjdGlvblN0YXJ0KTsKLSAgICAgICAgaWYgKHJvb3Quc2VsZWN0aW9u
RGF0YSgpLnNlbGVjdGlvbkVuZCgpKQotICAgICAgICAgICAgcm9vdC5zZWxlY3Rpb25EYXRhKCku
c2VsZWN0aW9uRW5kKCktPnNldFNlbGVjdGlvblN0YXRlSWZOZWVkZWQoU2VsZWN0aW9uRW5kKTsK
KyAgICAgICAgaWYgKHNlbGVjdGlvbkRhdGEoKS5zZWxlY3Rpb25TdGFydCgpKQorICAgICAgICAg
ICAgc2VsZWN0aW9uRGF0YSgpLnNlbGVjdGlvblN0YXJ0KCktPnNldFNlbGVjdGlvblN0YXRlSWZO
ZWVkZWQoU2VsZWN0aW9uU3RhcnQpOworICAgICAgICBpZiAoc2VsZWN0aW9uRGF0YSgpLnNlbGVj
dGlvbkVuZCgpKQorICAgICAgICAgICAgc2VsZWN0aW9uRGF0YSgpLnNlbGVjdGlvbkVuZCgpLT5z
ZXRTZWxlY3Rpb25TdGF0ZUlmTmVlZGVkKFNlbGVjdGlvbkVuZCk7CiAgICAgfQogCi0gICAgUmVu
ZGVyT2JqZWN0KiBzZWxlY3Rpb25TdGFydCA9IHJvb3Quc2VsZWN0aW9uRGF0YSgpLnNlbGVjdGlv
blN0YXJ0KCk7Ci0gICAgYXV0byogc2VsZWN0aW9uRGF0YUVuZCA9IHJvb3Quc2VsZWN0aW9uRGF0
YSgpLnNlbGVjdGlvbkVuZCgpOworICAgIFJlbmRlck9iamVjdCogc2VsZWN0aW9uU3RhcnQgPSBz
ZWxlY3Rpb25EYXRhKCkuc2VsZWN0aW9uU3RhcnQoKTsKKyAgICBhdXRvKiBzZWxlY3Rpb25EYXRh
RW5kID0gc2VsZWN0aW9uRGF0YSgpLnNlbGVjdGlvbkVuZCgpOwogICAgIFJlbmRlck9iamVjdCog
c2VsZWN0aW9uRW5kID0gbnVsbHB0cjsKICAgICBpZiAoc2VsZWN0aW9uRGF0YUVuZCkKLSAgICAg
ICAgc2VsZWN0aW9uRW5kID0gcmVuZGVyZXJBZnRlclBvc2l0aW9uKHNlbGVjdGlvbkRhdGFFbmQs
IHJvb3Quc2VsZWN0aW9uRGF0YSgpLnNlbGVjdGlvbkVuZFBvcygpLnZhbHVlKCkpOworICAgICAg
ICBzZWxlY3Rpb25FbmQgPSByZW5kZXJlckFmdGVyUG9zaXRpb24oc2VsZWN0aW9uRGF0YUVuZCwg
c2VsZWN0aW9uRGF0YSgpLnNlbGVjdGlvbkVuZFBvcygpLnZhbHVlKCkpOwogICAgIFNlbGVjdGlv
bkl0ZXJhdG9yIHNlbGVjdGlvbkl0ZXJhdG9yKHNlbGVjdGlvblN0YXJ0KTsKICAgICBmb3IgKFJl
bmRlck9iamVjdCogY3VycmVudFJlbmRlcmVyID0gc2VsZWN0aW9uU3RhcnQ7IGN1cnJlbnRSZW5k
ZXJlciAmJiBjdXJyZW50UmVuZGVyZXIgIT0gc2VsZWN0aW9uRW5kOyBjdXJyZW50UmVuZGVyZXIg
PSBzZWxlY3Rpb25JdGVyYXRvci5uZXh0KCkpIHsKLSAgICAgICAgaWYgKGN1cnJlbnRSZW5kZXJl
ciA9PSByb290LnNlbGVjdGlvbkRhdGEoKS5zZWxlY3Rpb25TdGFydCgpIHx8IGN1cnJlbnRSZW5k
ZXJlciA9PSByb290LnNlbGVjdGlvbkRhdGEoKS5zZWxlY3Rpb25FbmQoKSkKKyAgICAgICAgaWYg
KGN1cnJlbnRSZW5kZXJlciA9PSBzZWxlY3Rpb25EYXRhKCkuc2VsZWN0aW9uU3RhcnQoKSB8fCBj
dXJyZW50UmVuZGVyZXIgPT0gc2VsZWN0aW9uRGF0YSgpLnNlbGVjdGlvbkVuZCgpKQogICAgICAg
ICAgICAgY29udGludWU7CiAgICAgICAgIGlmICghY3VycmVudFJlbmRlcmVyLT5jYW5CZVNlbGVj
dGlvbkxlYWYoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAvLyBGSVhNRTogTW92
ZSB0aGlzIGxvZ2ljIHRvIFNlbGVjdGlvbkl0ZXJhdG9yOjpuZXh0KCkKLSAgICAgICAgaWYgKCZj
dXJyZW50UmVuZGVyZXItPnNlbGVjdGlvblJvb3QoKSAhPSAmcm9vdCkKLSAgICAgICAgICAgIGNv
bnRpbnVlOwogICAgICAgICBjdXJyZW50UmVuZGVyZXItPnNldFNlbGVjdGlvblN0YXRlSWZOZWVk
ZWQoU2VsZWN0aW9uSW5zaWRlKTsKICAgICB9CiAKQEAgLTkyNCw3ICs4OTgsNyBAQCB2b2lkIFJl
bmRlclZpZXc6OmFwcGx5U3VidHJlZVNlbGVjdGlvbihjb25zdCBTZWxlY3Rpb25TdWJ0cmVlUm9v
dCYgcm9vdCwgU2VsZWN0aQogICAgIFNlbGVjdGVkQmxvY2tNYXAgbmV3U2VsZWN0ZWRCbG9ja3M7
CiAgICAgc2VsZWN0aW9uSXRlcmF0b3IgPSBTZWxlY3Rpb25JdGVyYXRvcihzZWxlY3Rpb25TdGFy
dCk7CiAgICAgZm9yIChSZW5kZXJPYmplY3QqIGN1cnJlbnRSZW5kZXJlciA9IHNlbGVjdGlvblN0
YXJ0OyBjdXJyZW50UmVuZGVyZXIgJiYgY3VycmVudFJlbmRlcmVyICE9IHNlbGVjdGlvbkVuZDsg
Y3VycmVudFJlbmRlcmVyID0gc2VsZWN0aW9uSXRlcmF0b3IubmV4dCgpKSB7Ci0gICAgICAgIGlm
IChpc1ZhbGlkT2JqZWN0Rm9yTmV3U2VsZWN0aW9uKHJvb3QsICpjdXJyZW50UmVuZGVyZXIpKSB7
CisgICAgICAgIGlmIChpc1ZhbGlkT2JqZWN0Rm9yTmV3U2VsZWN0aW9uKCp0aGlzLCAqY3VycmVu
dFJlbmRlcmVyKSkgewogICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclNlbGVjdGlv
bkluZm8+IHNlbGVjdGlvbkluZm8gPSBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlclNlbGVjdGlvbklu
Zm8+KCpjdXJyZW50UmVuZGVyZXIsIHRydWUpOwogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfQ09OVFJP
TFMpCkBAIC05NjAsOCArOTM0LDggQEAgdm9pZCBSZW5kZXJWaWV3OjphcHBseVN1YnRyZWVTZWxl
Y3Rpb24oY29uc3QgU2VsZWN0aW9uU3VidHJlZVJvb3QmIHJvb3QsIFNlbGVjdGkKICAgICAgICAg
UmVuZGVyU2VsZWN0aW9uSW5mbyogbmV3SW5mbyA9IG5ld1NlbGVjdGVkT2JqZWN0cy5nZXQob2Jq
KTsKICAgICAgICAgUmVuZGVyU2VsZWN0aW9uSW5mbyogb2xkSW5mbyA9IHNlbGVjdGVkT2JqZWN0
SW5mby52YWx1ZS5nZXQoKTsKICAgICAgICAgaWYgKCFuZXdJbmZvIHx8IG9sZEluZm8tPnJlY3Qo
KSAhPSBuZXdJbmZvLT5yZWN0KCkgfHwgb2xkSW5mby0+c3RhdGUoKSAhPSBuZXdJbmZvLT5zdGF0
ZSgpCi0gICAgICAgICAgICB8fCAocm9vdC5zZWxlY3Rpb25EYXRhKCkuc2VsZWN0aW9uU3RhcnQo
KSA9PSBvYmogJiYgb2xkU2VsZWN0aW9uRGF0YS5zZWxlY3Rpb25TdGFydFBvcyAhPSByb290LnNl
bGVjdGlvbkRhdGEoKS5zZWxlY3Rpb25TdGFydFBvcygpKQotICAgICAgICAgICAgfHwgKHJvb3Qu
c2VsZWN0aW9uRGF0YSgpLnNlbGVjdGlvbkVuZCgpID09IG9iaiAmJiBvbGRTZWxlY3Rpb25EYXRh
LnNlbGVjdGlvbkVuZFBvcyAhPSByb290LnNlbGVjdGlvbkRhdGEoKS5zZWxlY3Rpb25FbmRQb3Mo
KSkpIHsKKyAgICAgICAgICAgIHx8IChzZWxlY3Rpb25EYXRhKCkuc2VsZWN0aW9uU3RhcnQoKSA9
PSBvYmogJiYgb2xkU2VsZWN0aW9uRGF0YS5zZWxlY3Rpb25TdGFydFBvcyAhPSBzZWxlY3Rpb25E
YXRhKCkuc2VsZWN0aW9uU3RhcnRQb3MoKSkKKyAgICAgICAgICAgIHx8IChzZWxlY3Rpb25EYXRh
KCkuc2VsZWN0aW9uRW5kKCkgPT0gb2JqICYmIG9sZFNlbGVjdGlvbkRhdGEuc2VsZWN0aW9uRW5k
UG9zICE9IHNlbGVjdGlvbkRhdGEoKS5zZWxlY3Rpb25FbmRQb3MoKSkpIHsKICAgICAgICAgICAg
IG9sZEluZm8tPnJlcGFpbnQoKTsKICAgICAgICAgICAgIGlmIChuZXdJbmZvKSB7CiAgICAgICAg
ICAgICAgICAgbmV3SW5mby0+cmVwYWludCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclZpZXcuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJW
aWV3LmgKaW5kZXggNGI2Yjg2ZGRiYTllMWZiZWE3ZjljYmM1ZTVjMTk5NjliZjNiYmVmZC4uZDY4
ZDdhZWNkYTUyMmU1MTFjNDJlNDY0YzhhYTA4MGFiZGNjNDExMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVmlldy5oCkBAIC0zMTEsMTEgKzMxMSwxMCBAQCBwcml2YXRlOgogCiAgICAg
Ym9vbCBpc1Njcm9sbGFibGVPclJ1YmJlcmJhbmRhYmxlQm94KCkgY29uc3Qgb3ZlcnJpZGU7CiAK
LSAgICB2b2lkIGNsZWFyU3VidHJlZVNlbGVjdGlvbihjb25zdCBTZWxlY3Rpb25TdWJ0cmVlUm9v
dCYsIFNlbGVjdGlvblJlcGFpbnRNb2RlLCBPbGRTZWxlY3Rpb25EYXRhJikgY29uc3Q7Ci0gICAg
dm9pZCB1cGRhdGVTZWxlY3Rpb25Gb3JTdWJ0cmVlcyhSZW5kZXJTdWJ0cmVlc01hcCYsIFNlbGVj
dGlvblJlcGFpbnRNb2RlKTsKLSAgICB2b2lkIGFwcGx5U3VidHJlZVNlbGVjdGlvbihjb25zdCBT
ZWxlY3Rpb25TdWJ0cmVlUm9vdCYsIFNlbGVjdGlvblJlcGFpbnRNb2RlLCBjb25zdCBPbGRTZWxl
Y3Rpb25EYXRhJik7Ci0gICAgTGF5b3V0UmVjdCBzdWJ0cmVlU2VsZWN0aW9uQm91bmRzKGNvbnN0
IFNlbGVjdGlvblN1YnRyZWVSb290JiwgYm9vbCBjbGlwVG9WaXNpYmxlQ29udGVudCA9IHRydWUp
IGNvbnN0OwotICAgIHZvaWQgcmVwYWludFN1YnRyZWVTZWxlY3Rpb24oY29uc3QgU2VsZWN0aW9u
U3VidHJlZVJvb3QmKSBjb25zdDsKKyAgICB2b2lkIGNsZWFyU3VidHJlZVNlbGVjdGlvbihTZWxl
Y3Rpb25SZXBhaW50TW9kZSBibG9ja1JlcGFpbnRNb2RlLCBPbGRTZWxlY3Rpb25EYXRhJikgY29u
c3Q7CisgICAgdm9pZCBhcHBseVN1YnRyZWVTZWxlY3Rpb24oU2VsZWN0aW9uUmVwYWludE1vZGUs
IGNvbnN0IE9sZFNlbGVjdGlvbkRhdGEmKTsKKyAgICBMYXlvdXRSZWN0IHN1YnRyZWVTZWxlY3Rp
b25Cb3VuZHMoYm9vbCBjbGlwVG9WaXNpYmxlQ29udGVudCA9IHRydWUpIGNvbnN0OworICAgIHZv
aWQgcmVwYWludFN1YnRyZWVTZWxlY3Rpb24oKSBjb25zdDsKIAogcHJpdmF0ZToKICAgICBGcmFt
ZVZpZXcmIG1fZnJhbWVWaWV3OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1NlbGVjdGlvblN1YnRyZWVSb290LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2VsZWN0
aW9uU3VidHJlZVJvb3QuaAppbmRleCBmNThiNmVkNTc1YzA2NDM0YTQ0MmZmZWYzNjgxODVkZjVl
ZWJkYTA5Li4zN2U0NGQ4NmFiY2QzZWExNmYxZGU2ODllYzc0YjQzMTMzNTk4NzFjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2VsZWN0aW9uU3VidHJlZVJvb3QuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2VsZWN0aW9uU3VidHJlZVJvb3QuaApAQCAtODks
NyArODksNiBAQCBwdWJsaWM6CiAgICAgICAgIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IG1fc2Vs
ZWN0aW9uRW5kUG9zOwogICAgIH07CiAKLSAgICB0eXBlZGVmIEhhc2hNYXA8U2VsZWN0aW9uU3Vi
dHJlZVJvb3QqLCBTZWxlY3Rpb25TdWJ0cmVlRGF0YT4gUmVuZGVyU3VidHJlZXNNYXA7CiAgICAg
dHlwZWRlZiBIYXNoTWFwPGNvbnN0IFNlbGVjdGlvblN1YnRyZWVSb290Kiwgc3RkOjp1bmlxdWVf
cHRyPE9sZFNlbGVjdGlvbkRhdGE+PiBTdWJ0cmVlT2xkU2VsZWN0aW9uRGF0YU1hcDsKIAogICAg
IFNlbGVjdGlvblN1YnRyZWVSb290KCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>322240</attachid>
            <date>2017-09-29 15:08:56 -0700</date>
            <delta_ts>2017-09-29 15:10:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-177685-20170929150855.patch</filename>
            <type>text/plain</type>
            <size>16009</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIyNjUzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTBiMGJiYzJjN2Y0YzA2
MmQ1MmY2NGJmNWRhNjExMTY4NGFmMjc1Yi4uNWMyMTk4YzQyZjU4NGZiY2U4YTJjNTYxNTljMzY5
OWY2Y2M4NzBjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDMwIEBACiAyMDE3LTA5LTI5ICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKKyAgICAgICAgUmVtb3ZlIFNlbGVjdGlvblN1
YnRyZWVSb290OjpSZW5kZXJTdWJ0cmVlc01hcAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc3Njg1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQW5keSBF
c3Rlcy4KKworICAgICAgICBUaGlzIGlzIGluIHByZXBhcmF0aW9uIG9mIHJlbW92aW5nIHJlZHVu
ZGFudCBTZWxlY3Rpb25TdWJ0cmVlUm9vdC4KKyAgICAgICAgKE5vdyB0aGF0IHdlIHJlbW92ZWQg
cmVnaW9ucywgUmVuZGVyVmlldyBpcyB0aGUgb25seSBzZWxlY3Rpb24gcm9vdCkgCisKKyAgICAg
ICAgTm8gY2hhbmdlIGluIGZ1bmN0aW9uYWxpdHkuCisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJWaWV3OjpzZWxlY3Rpb25Cb3Vu
ZHMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVmlldzo6c3VidHJlZVNlbGVjdGlv
bkJvdW5kcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJWaWV3OjpyZXBhaW50U2Vs
ZWN0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclZpZXc6OnJlcGFpbnRTdWJ0
cmVlU2VsZWN0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclZpZXc6OnNldFNl
bGVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjppc1ZhbGlkT2JqZWN0Rm9yTmV3U2VsZWN0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclZpZXc6OmNsZWFyU3VidHJlZVNlbGVjdGlvbiBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJWaWV3OjphcHBseVN1YnRyZWVTZWxlY3Rp
b24pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVmlldzo6dXBkYXRlU2VsZWN0aW9uRm9yU3Vi
dHJlZXMpOiBEZWxldGVkLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJWaWV3Lmg6CisgICAg
ICAgICogcmVuZGVyaW5nL1NlbGVjdGlvblN1YnRyZWVSb290Lmg6CisKKzIwMTctMDktMjkgIFph
bGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KKwogICAgICAgICBBZGQgV2Vha1B0ciBzdXBw
b3J0IHRvIFJlbmRlck9iamVjdC4KICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE3NzQyOQogICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzQ2MjUyMTI+CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAKaW5kZXggYTBjNmI5NGE4MzA5NTM4
ZGQxM2I5ZDIxYjRiYmJlOGMwNjYyYzFkMy4uZTVkY2RlMjkwMjVhMWJiZGQ2OTgyZTI1MGM0MDI5
ZTExMWJlZmFhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZp
ZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmNwcApAQCAt
NzA4LDIzICs3MDgsMjMgQEAgc3RhdGljIFJlbmRlck9iamVjdCogcmVuZGVyZXJBZnRlclBvc2l0
aW9uKFJlbmRlck9iamVjdCogb2JqZWN0LCB1bnNpZ25lZCBvZmZzZXQKIAogSW50UmVjdCBSZW5k
ZXJWaWV3OjpzZWxlY3Rpb25Cb3VuZHMoYm9vbCBjbGlwVG9WaXNpYmxlQ29udGVudCkgY29uc3QK
IHsKLSAgICBMYXlvdXRSZWN0IHNlbFJlY3QgPSBzdWJ0cmVlU2VsZWN0aW9uQm91bmRzKCp0aGlz
LCBjbGlwVG9WaXNpYmxlQ29udGVudCk7CisgICAgTGF5b3V0UmVjdCBzZWxSZWN0ID0gc3VidHJl
ZVNlbGVjdGlvbkJvdW5kcyhjbGlwVG9WaXNpYmxlQ29udGVudCk7CiAgICAgcmV0dXJuIHNuYXBw
ZWRJbnRSZWN0KHNlbFJlY3QpOwogfQogCi1MYXlvdXRSZWN0IFJlbmRlclZpZXc6OnN1YnRyZWVT
ZWxlY3Rpb25Cb3VuZHMoY29uc3QgU2VsZWN0aW9uU3VidHJlZVJvb3QmIHJvb3QsIGJvb2wgY2xp
cFRvVmlzaWJsZUNvbnRlbnQpIGNvbnN0CitMYXlvdXRSZWN0IFJlbmRlclZpZXc6OnN1YnRyZWVT
ZWxlY3Rpb25Cb3VuZHMoYm9vbCBjbGlwVG9WaXNpYmxlQ29udGVudCkgY29uc3QKIHsKICAgICB0
eXBlZGVmIEhhc2hNYXA8UmVuZGVyT2JqZWN0Kiwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclNlbGVj
dGlvbkluZm8+PiBTZWxlY3Rpb25NYXA7CiAgICAgU2VsZWN0aW9uTWFwIHNlbGVjdGVkT2JqZWN0
czsKIAotICAgIFJlbmRlck9iamVjdCogb3MgPSByb290LnNlbGVjdGlvbkRhdGEoKS5zZWxlY3Rp
b25TdGFydCgpOwotICAgIGF1dG8qIHNlbGVjdGlvbkVuZCA9IHJvb3Quc2VsZWN0aW9uRGF0YSgp
LnNlbGVjdGlvbkVuZCgpOworICAgIFJlbmRlck9iamVjdCogb3MgPSBzZWxlY3Rpb25EYXRhKCku
c2VsZWN0aW9uU3RhcnQoKTsKKyAgICBhdXRvKiBzZWxlY3Rpb25FbmQgPSBzZWxlY3Rpb25EYXRh
KCkuc2VsZWN0aW9uRW5kKCk7CiAgICAgUmVuZGVyT2JqZWN0KiBzdG9wID0gbnVsbHB0cjsKICAg
ICBpZiAoc2VsZWN0aW9uRW5kKQotICAgICAgICBzdG9wID0gcmVuZGVyZXJBZnRlclBvc2l0aW9u
KHNlbGVjdGlvbkVuZCwgcm9vdC5zZWxlY3Rpb25EYXRhKCkuc2VsZWN0aW9uRW5kUG9zKCkudmFs
dWUoKSk7CisgICAgICAgIHN0b3AgPSByZW5kZXJlckFmdGVyUG9zaXRpb24oc2VsZWN0aW9uRW5k
LCBzZWxlY3Rpb25EYXRhKCkuc2VsZWN0aW9uRW5kUG9zKCkudmFsdWUoKSk7CiAgICAgU2VsZWN0
aW9uSXRlcmF0b3Igc2VsZWN0aW9uSXRlcmF0b3Iob3MpOwogICAgIHdoaWxlIChvcyAmJiBvcyAh
PSBzdG9wKSB7Ci0gICAgICAgIGlmICgob3MtPmNhbkJlU2VsZWN0aW9uTGVhZigpIHx8IG9zID09
IHJvb3Quc2VsZWN0aW9uRGF0YSgpLnNlbGVjdGlvblN0YXJ0KCkgfHwgb3MgPT0gcm9vdC5zZWxl
Y3Rpb25EYXRhKCkuc2VsZWN0aW9uRW5kKCkpICYmIG9zLT5zZWxlY3Rpb25TdGF0ZSgpICE9IFNl
bGVjdGlvbk5vbmUpIHsKKyAgICAgICAgaWYgKChvcy0+Y2FuQmVTZWxlY3Rpb25MZWFmKCkgfHwg
b3MgPT0gc2VsZWN0aW9uRGF0YSgpLnNlbGVjdGlvblN0YXJ0KCkgfHwgb3MgPT0gc2VsZWN0aW9u
RGF0YSgpLnNlbGVjdGlvbkVuZCgpKSAmJiBvcy0+c2VsZWN0aW9uU3RhdGUoKSAhPSBTZWxlY3Rp
b25Ob25lKSB7CiAgICAgICAgICAgICAvLyBCbG9ja3MgYXJlIHJlc3BvbnNpYmxlIGZvciBwYWlu
dGluZyBsaW5lIGdhcHMgYW5kIG1hcmdpbiBnYXBzLiBUaGV5IG11c3QgYmUgZXhhbWluZWQgYXMg
d2VsbC4KICAgICAgICAgICAgIHNlbGVjdGVkT2JqZWN0cy5zZXQob3MsIHN0ZDo6bWFrZV91bmlx
dWU8UmVuZGVyU2VsZWN0aW9uSW5mbz4oKm9zLCBjbGlwVG9WaXNpYmxlQ29udGVudCkpOwogICAg
ICAgICAgICAgUmVuZGVyQmxvY2sqIGNiID0gb3MtPmNvbnRhaW5pbmdCbG9jaygpOwpAQCAtNzU4
LDIwICs3NTgsMjAgQEAgTGF5b3V0UmVjdCBSZW5kZXJWaWV3OjpzdWJ0cmVlU2VsZWN0aW9uQm91
bmRzKGNvbnN0IFNlbGVjdGlvblN1YnRyZWVSb290JiByb290LAogCiB2b2lkIFJlbmRlclZpZXc6
OnJlcGFpbnRTZWxlY3Rpb24oKSBjb25zdAogewotICAgIHJlcGFpbnRTdWJ0cmVlU2VsZWN0aW9u
KCp0aGlzKTsKKyAgICByZXBhaW50U3VidHJlZVNlbGVjdGlvbigpOwogfQogCi12b2lkIFJlbmRl
clZpZXc6OnJlcGFpbnRTdWJ0cmVlU2VsZWN0aW9uKGNvbnN0IFNlbGVjdGlvblN1YnRyZWVSb290
JiByb290KSBjb25zdAordm9pZCBSZW5kZXJWaWV3OjpyZXBhaW50U3VidHJlZVNlbGVjdGlvbigp
IGNvbnN0CiB7CiAgICAgSGFzaFNldDxSZW5kZXJCbG9jayo+IHByb2Nlc3NlZEJsb2NrczsKIAot
ICAgIGF1dG8qIHNlbGVjdGlvbkVuZCA9IHJvb3Quc2VsZWN0aW9uRGF0YSgpLnNlbGVjdGlvbkVu
ZCgpOworICAgIGF1dG8qIHNlbGVjdGlvbkVuZCA9IHNlbGVjdGlvbkRhdGEoKS5zZWxlY3Rpb25F
bmQoKTsKICAgICBSZW5kZXJPYmplY3QqIGVuZCA9IG51bGxwdHI7CiAgICAgaWYgKHNlbGVjdGlv
bkVuZCkKLSAgICAgICAgZW5kID0gcmVuZGVyZXJBZnRlclBvc2l0aW9uKHNlbGVjdGlvbkVuZCwg
cm9vdC5zZWxlY3Rpb25EYXRhKCkuc2VsZWN0aW9uRW5kUG9zKCkudmFsdWUoKSk7Ci0gICAgU2Vs
ZWN0aW9uSXRlcmF0b3Igc2VsZWN0aW9uSXRlcmF0b3Iocm9vdC5zZWxlY3Rpb25EYXRhKCkuc2Vs
ZWN0aW9uU3RhcnQoKSk7CisgICAgICAgIGVuZCA9IHJlbmRlcmVyQWZ0ZXJQb3NpdGlvbihzZWxl
Y3Rpb25FbmQsIHNlbGVjdGlvbkRhdGEoKS5zZWxlY3Rpb25FbmRQb3MoKS52YWx1ZSgpKTsKKyAg
ICBTZWxlY3Rpb25JdGVyYXRvciBzZWxlY3Rpb25JdGVyYXRvcihzZWxlY3Rpb25EYXRhKCkuc2Vs
ZWN0aW9uU3RhcnQoKSk7CiAgICAgZm9yIChSZW5kZXJPYmplY3QqIG8gPSBzZWxlY3Rpb25JdGVy
YXRvci5jdXJyZW50KCk7IG8gJiYgbyAhPSBlbmQ7IG8gPSBzZWxlY3Rpb25JdGVyYXRvci5uZXh0
KCkpIHsKLSAgICAgICAgaWYgKCFvLT5jYW5CZVNlbGVjdGlvbkxlYWYoKSAmJiBvICE9IHJvb3Qu
c2VsZWN0aW9uRGF0YSgpLnNlbGVjdGlvblN0YXJ0KCkgJiYgbyAhPSByb290LnNlbGVjdGlvbkRh
dGEoKS5zZWxlY3Rpb25FbmQoKSkKKyAgICAgICAgaWYgKCFvLT5jYW5CZVNlbGVjdGlvbkxlYWYo
KSAmJiBvICE9IHNlbGVjdGlvbkRhdGEoKS5zZWxlY3Rpb25TdGFydCgpICYmIG8gIT0gc2VsZWN0
aW9uRGF0YSgpLnNlbGVjdGlvbkVuZCgpKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAg
IGlmIChvLT5zZWxlY3Rpb25TdGF0ZSgpID09IFNlbGVjdGlvbk5vbmUpCiAgICAgICAgICAgICBj
b250aW51ZTsKQEAgLTgxMiw1OSArODEyLDM2IEBAIHZvaWQgUmVuZGVyVmlldzo6c2V0U2VsZWN0
aW9uKFJlbmRlck9iamVjdCogc3RhcnQsIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IHN0YXJ0CiAg
ICAgbV9zZWxlY3Rpb25VbnNwbGl0U3RhcnRQb3MgPSBzdGFydFBvczsKICAgICBtX3NlbGVjdGlv
blVuc3BsaXRFbmQgPSBlbmQ7CiAgICAgbV9zZWxlY3Rpb25VbnNwbGl0RW5kUG9zID0gZW5kUG9z
OwotCi0gICAgUmVuZGVyU3VidHJlZXNNYXAgc2luZ2xlU3VidHJlZU1hcDsKLSAgICBzaW5nbGVT
dWJ0cmVlTWFwLnNldCh0aGlzLCBTZWxlY3Rpb25TdWJ0cmVlRGF0YShzdGFydCwgc3RhcnRQb3Ms
IGVuZCwgZW5kUG9zKSk7Ci0gICAgdXBkYXRlU2VsZWN0aW9uRm9yU3VidHJlZXMoc2luZ2xlU3Vi
dHJlZU1hcCwgYmxvY2tSZXBhaW50TW9kZSk7Ci19Ci0KLXZvaWQgUmVuZGVyVmlldzo6dXBkYXRl
U2VsZWN0aW9uRm9yU3VidHJlZXMoUmVuZGVyU3VidHJlZXNNYXAmIHJlbmRlclN1YnRyZWVzTWFw
LCBTZWxlY3Rpb25SZXBhaW50TW9kZSBibG9ja1JlcGFpbnRNb2RlKQotewotICAgIFN1YnRyZWVP
bGRTZWxlY3Rpb25EYXRhTWFwIG9sZFNlbGVjdGlvbkRhdGFNYXA7Ci0gICAgZm9yIChhdXRvJiBz
dWJ0cmVlU2VsZWN0aW9uSW5mbyA6IHJlbmRlclN1YnRyZWVzTWFwKSB7Ci0gICAgICAgIFNlbGVj
dGlvblN1YnRyZWVSb290JiByb290ID0gKnN1YnRyZWVTZWxlY3Rpb25JbmZvLmtleTsKLSAgICAg
ICAgc3RkOjp1bmlxdWVfcHRyPE9sZFNlbGVjdGlvbkRhdGE+IG9sZFNlbGVjdGlvbkRhdGEgPSBz
dGQ6Om1ha2VfdW5pcXVlPE9sZFNlbGVjdGlvbkRhdGE+KCk7Ci0KLSAgICAgICAgY2xlYXJTdWJ0
cmVlU2VsZWN0aW9uKHJvb3QsIGJsb2NrUmVwYWludE1vZGUsICpvbGRTZWxlY3Rpb25EYXRhKTsK
LSAgICAgICAgb2xkU2VsZWN0aW9uRGF0YU1hcC5zZXQoJnJvb3QsIFdURk1vdmUob2xkU2VsZWN0
aW9uRGF0YSkpOwotCi0gICAgICAgIHJvb3Quc2V0U2VsZWN0aW9uRGF0YShzdWJ0cmVlU2VsZWN0
aW9uSW5mby52YWx1ZSk7Ci0gICAgfQotCi0gICAgLy8gVXBkYXRlIHNlbGVjdGlvbiBzdGF0dXMg
Zm9yIHRoZSBvYmplY3RzIGluc2lkZSB0aGUgc2VsZWN0aW9uIHN1YnRyZWVzLgotICAgIC8vIFRo
aXMgbmVlZHMgdG8gYmUgZG9uZSBhZnRlciB0aGUgcHJldmlvdXMgbG9vcCB1cGRhdGVkIHRoZSBz
ZWxlY3Rpb25TdGFydC9FbmQKLSAgICAvLyBwYXJhbWV0ZXJzIG9mIGFsbCBzdWJ0cmVlcyBiZWNh
dXNlIHdlJ3JlIGdvaW5nIHRvIGJlIGNsaW1iaW5nIHVwIHRoZSBjb250YWluaW5nCi0gICAgLy8g
YmxvY2sgY2hhaW4gYW5kIHdlIG1pZ2h0IGVuZCB1cCBpbiBhIGRpZmZlcmVudCBzZWxlY3Rpb24g
c3VidHJlZS4KLSAgICBmb3IgKGNvbnN0IGF1dG8qIHN1YnRyZWVTZWxlY3Rpb25Sb290IDogcmVu
ZGVyU3VidHJlZXNNYXAua2V5cygpKSB7Ci0gICAgICAgIE9sZFNlbGVjdGlvbkRhdGEmIG9sZFNl
bGVjdGlvbkRhdGEgPSAqb2xkU2VsZWN0aW9uRGF0YU1hcC5nZXQoc3VidHJlZVNlbGVjdGlvblJv
b3QpOwotICAgICAgICBhcHBseVN1YnRyZWVTZWxlY3Rpb24oKnN1YnRyZWVTZWxlY3Rpb25Sb290
LCBibG9ja1JlcGFpbnRNb2RlLCBvbGRTZWxlY3Rpb25EYXRhKTsKLSAgICB9CisgICAgYXV0byBv
bGRTZWxlY3Rpb25EYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxPbGRTZWxlY3Rpb25EYXRhPigpOwor
ICAgIGNsZWFyU3VidHJlZVNlbGVjdGlvbihibG9ja1JlcGFpbnRNb2RlLCAqb2xkU2VsZWN0aW9u
RGF0YSk7CisgICAgc2V0U2VsZWN0aW9uRGF0YShTZWxlY3Rpb25TdWJ0cmVlRGF0YShzdGFydCwg
c3RhcnRQb3MsIGVuZCwgZW5kUG9zKSk7CisgICAgYXBwbHlTdWJ0cmVlU2VsZWN0aW9uKGJsb2Nr
UmVwYWludE1vZGUsICpvbGRTZWxlY3Rpb25EYXRhKTsKIH0KIAotc3RhdGljIGlubGluZSBib29s
IGlzVmFsaWRPYmplY3RGb3JOZXdTZWxlY3Rpb24oY29uc3QgU2VsZWN0aW9uU3VidHJlZVJvb3Qm
IHJvb3QsIGNvbnN0IFJlbmRlck9iamVjdCYgb2JqZWN0KQorc3RhdGljIGlubGluZSBib29sIGlz
VmFsaWRPYmplY3RGb3JOZXdTZWxlY3Rpb24oY29uc3QgUmVuZGVyVmlldyYgdmlldywgY29uc3Qg
UmVuZGVyT2JqZWN0JiBvYmplY3QpCiB7Ci0gICAgcmV0dXJuIChvYmplY3QuY2FuQmVTZWxlY3Rp
b25MZWFmKCkgfHwgJm9iamVjdCA9PSByb290LnNlbGVjdGlvbkRhdGEoKS5zZWxlY3Rpb25TdGFy
dCgpIHx8ICZvYmplY3QgPT0gcm9vdC5zZWxlY3Rpb25EYXRhKCkuc2VsZWN0aW9uRW5kKCkpICYm
IG9iamVjdC5zZWxlY3Rpb25TdGF0ZSgpICE9IFJlbmRlck9iamVjdDo6U2VsZWN0aW9uTm9uZSAm
JiBvYmplY3QuY29udGFpbmluZ0Jsb2NrKCk7CisgICAgcmV0dXJuIChvYmplY3QuY2FuQmVTZWxl
Y3Rpb25MZWFmKCkgfHwgJm9iamVjdCA9PSB2aWV3LnNlbGVjdGlvbkRhdGEoKS5zZWxlY3Rpb25T
dGFydCgpIHx8ICZvYmplY3QgPT0gdmlldy5zZWxlY3Rpb25EYXRhKCkuc2VsZWN0aW9uRW5kKCkp
ICYmIG9iamVjdC5zZWxlY3Rpb25TdGF0ZSgpICE9IFJlbmRlck9iamVjdDo6U2VsZWN0aW9uTm9u
ZSAmJiBvYmplY3QuY29udGFpbmluZ0Jsb2NrKCk7CiB9CiAKLXZvaWQgUmVuZGVyVmlldzo6Y2xl
YXJTdWJ0cmVlU2VsZWN0aW9uKGNvbnN0IFNlbGVjdGlvblN1YnRyZWVSb290JiByb290LCBTZWxl
Y3Rpb25SZXBhaW50TW9kZSBibG9ja1JlcGFpbnRNb2RlLCBPbGRTZWxlY3Rpb25EYXRhJiBvbGRT
ZWxlY3Rpb25EYXRhKSBjb25zdAordm9pZCBSZW5kZXJWaWV3OjpjbGVhclN1YnRyZWVTZWxlY3Rp
b24oU2VsZWN0aW9uUmVwYWludE1vZGUgYmxvY2tSZXBhaW50TW9kZSwgT2xkU2VsZWN0aW9uRGF0
YSYgb2xkU2VsZWN0aW9uRGF0YSkgY29uc3QKIHsKICAgICAvLyBSZWNvcmQgdGhlIG9sZCBzZWxl
Y3RlZCBvYmplY3RzLiAgVGhlc2Ugd2lsbCBiZSB1c2VkIGxhdGVyCiAgICAgLy8gd2hlbiB3ZSBj
b21wYXJlIGFnYWluc3QgdGhlIG5ldyBzZWxlY3RlZCBvYmplY3RzLgotICAgIG9sZFNlbGVjdGlv
bkRhdGEuc2VsZWN0aW9uU3RhcnRQb3MgPSByb290LnNlbGVjdGlvbkRhdGEoKS5zZWxlY3Rpb25T
dGFydFBvcygpOwotICAgIG9sZFNlbGVjdGlvbkRhdGEuc2VsZWN0aW9uRW5kUG9zID0gcm9vdC5z
ZWxlY3Rpb25EYXRhKCkuc2VsZWN0aW9uRW5kUG9zKCk7CisgICAgb2xkU2VsZWN0aW9uRGF0YS5z
ZWxlY3Rpb25TdGFydFBvcyA9IHNlbGVjdGlvbkRhdGEoKS5zZWxlY3Rpb25TdGFydFBvcygpOwor
ICAgIG9sZFNlbGVjdGlvbkRhdGEuc2VsZWN0aW9uRW5kUG9zID0gc2VsZWN0aW9uRGF0YSgpLnNl
bGVjdGlvbkVuZFBvcygpOwogICAgIAogICAgIC8vIEJsb2NrcyBjb250YWluIHNlbGVjdGVkIG9i
amVjdHMgYW5kIGZpbGwgZ2FwcyBiZXR3ZWVuIHRoZW0sIGVpdGhlciBvbiB0aGUgbGVmdCwgcmln
aHQsIG9yIGluIGJldHdlZW4gbGluZXMgYW5kIGJsb2Nrcy4KICAgICAvLyBJbiBvcmRlciB0byBn
ZXQgdGhlIHJlcGFpbnQgcmVjdCByaWdodCwgd2UgaGF2ZSB0byBleGFtaW5lIGxlZnQsIG1pZGRs
ZSwgYW5kIHJpZ2h0IHJlY3RzIGluZGl2aWR1YWxseSwgc2luY2Ugb3RoZXJ3aXNlCiAgICAgLy8g
dGhlIHVuaW9uIG9mIHRob3NlIHJlY3RzIG1pZ2h0IHJlbWFpbiB0aGUgc2FtZSBldmVuIHdoZW4g
Y2hhbmdlcyBoYXZlIG9jY3VycmVkLgogCi0gICAgUmVuZGVyT2JqZWN0KiBvcyA9IHJvb3Quc2Vs
ZWN0aW9uRGF0YSgpLnNlbGVjdGlvblN0YXJ0KCk7Ci0gICAgYXV0byogc2VsZWN0aW9uRW5kID0g
cm9vdC5zZWxlY3Rpb25EYXRhKCkuc2VsZWN0aW9uRW5kKCk7CisgICAgUmVuZGVyT2JqZWN0KiBv
cyA9IHNlbGVjdGlvbkRhdGEoKS5zZWxlY3Rpb25TdGFydCgpOworICAgIGF1dG8qIHNlbGVjdGlv
bkVuZCA9IHNlbGVjdGlvbkRhdGEoKS5zZWxlY3Rpb25FbmQoKTsKICAgICBSZW5kZXJPYmplY3Qq
IHN0b3AgPSBudWxscHRyOwogICAgIGlmIChzZWxlY3Rpb25FbmQpCi0gICAgICAgIHN0b3AgPSBy
ZW5kZXJlckFmdGVyUG9zaXRpb24oc2VsZWN0aW9uRW5kLCByb290LnNlbGVjdGlvbkRhdGEoKS5z
ZWxlY3Rpb25FbmRQb3MoKS52YWx1ZSgpKTsKKyAgICAgICAgc3RvcCA9IHJlbmRlcmVyQWZ0ZXJQ
b3NpdGlvbihzZWxlY3Rpb25FbmQsIHNlbGVjdGlvbkRhdGEoKS5zZWxlY3Rpb25FbmRQb3MoKS52
YWx1ZSgpKTsKICAgICBTZWxlY3Rpb25JdGVyYXRvciBzZWxlY3Rpb25JdGVyYXRvcihvcyk7CiAg
ICAgd2hpbGUgKG9zICYmIG9zICE9IHN0b3ApIHsKLSAgICAgICAgaWYgKGlzVmFsaWRPYmplY3RG
b3JOZXdTZWxlY3Rpb24ocm9vdCwgKm9zKSkgeworICAgICAgICBpZiAoaXNWYWxpZE9iamVjdEZv
ck5ld1NlbGVjdGlvbigqdGhpcywgKm9zKSkgewogICAgICAgICAgICAgLy8gQmxvY2tzIGFyZSBy
ZXNwb25zaWJsZSBmb3IgcGFpbnRpbmcgbGluZSBnYXBzIGFuZCBtYXJnaW4gZ2Fwcy4gIFRoZXkg
bXVzdCBiZSBleGFtaW5lZCBhcyB3ZWxsLgogICAgICAgICAgICAgb2xkU2VsZWN0aW9uRGF0YS5z
ZWxlY3RlZE9iamVjdHMuc2V0KG9zLCBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlclNlbGVjdGlvbklu
Zm8+KCpvcywgdHJ1ZSkpOwogICAgICAgICAgICAgaWYgKGJsb2NrUmVwYWludE1vZGUgPT0gUmVw
YWludE5ld1hPUk9sZCkgewpAQCAtODg2LDMyICs4NjMsMjkgQEAgdm9pZCBSZW5kZXJWaWV3Ojpj
bGVhclN1YnRyZWVTZWxlY3Rpb24oY29uc3QgU2VsZWN0aW9uU3VidHJlZVJvb3QmIHJvb3QsIFNl
bGVjdGkKICAgICAgICAgc2VsZWN0ZWRPYmplY3QtPnNldFNlbGVjdGlvblN0YXRlSWZOZWVkZWQo
U2VsZWN0aW9uTm9uZSk7CiB9CiAKLXZvaWQgUmVuZGVyVmlldzo6YXBwbHlTdWJ0cmVlU2VsZWN0
aW9uKGNvbnN0IFNlbGVjdGlvblN1YnRyZWVSb290JiByb290LCBTZWxlY3Rpb25SZXBhaW50TW9k
ZSBibG9ja1JlcGFpbnRNb2RlLCBjb25zdCBPbGRTZWxlY3Rpb25EYXRhJiBvbGRTZWxlY3Rpb25E
YXRhKQordm9pZCBSZW5kZXJWaWV3OjphcHBseVN1YnRyZWVTZWxlY3Rpb24oU2VsZWN0aW9uUmVw
YWludE1vZGUgYmxvY2tSZXBhaW50TW9kZSwgY29uc3QgT2xkU2VsZWN0aW9uRGF0YSYgb2xkU2Vs
ZWN0aW9uRGF0YSkKIHsKICAgICAvLyBVcGRhdGUgdGhlIHNlbGVjdGlvbiBzdGF0dXMgb2YgYWxs
IG9iamVjdHMgYmV0d2VlbiBzZWxlY3Rpb25TdGFydCBhbmQgc2VsZWN0aW9uRW5kCi0gICAgaWYg
KHJvb3Quc2VsZWN0aW9uRGF0YSgpLnNlbGVjdGlvblN0YXJ0KCkgJiYgcm9vdC5zZWxlY3Rpb25E
YXRhKCkuc2VsZWN0aW9uU3RhcnQoKSA9PSByb290LnNlbGVjdGlvbkRhdGEoKS5zZWxlY3Rpb25F
bmQoKSkKLSAgICAgICAgcm9vdC5zZWxlY3Rpb25EYXRhKCkuc2VsZWN0aW9uU3RhcnQoKS0+c2V0
U2VsZWN0aW9uU3RhdGVJZk5lZWRlZChTZWxlY3Rpb25Cb3RoKTsKKyAgICBpZiAoc2VsZWN0aW9u
RGF0YSgpLnNlbGVjdGlvblN0YXJ0KCkgJiYgc2VsZWN0aW9uRGF0YSgpLnNlbGVjdGlvblN0YXJ0
KCkgPT0gc2VsZWN0aW9uRGF0YSgpLnNlbGVjdGlvbkVuZCgpKQorICAgICAgICBzZWxlY3Rpb25E
YXRhKCkuc2VsZWN0aW9uU3RhcnQoKS0+c2V0U2VsZWN0aW9uU3RhdGVJZk5lZWRlZChTZWxlY3Rp
b25Cb3RoKTsKICAgICBlbHNlIHsKLSAgICAgICAgaWYgKHJvb3Quc2VsZWN0aW9uRGF0YSgpLnNl
bGVjdGlvblN0YXJ0KCkpCi0gICAgICAgICAgICByb290LnNlbGVjdGlvbkRhdGEoKS5zZWxlY3Rp
b25TdGFydCgpLT5zZXRTZWxlY3Rpb25TdGF0ZUlmTmVlZGVkKFNlbGVjdGlvblN0YXJ0KTsKLSAg
ICAgICAgaWYgKHJvb3Quc2VsZWN0aW9uRGF0YSgpLnNlbGVjdGlvbkVuZCgpKQotICAgICAgICAg
ICAgcm9vdC5zZWxlY3Rpb25EYXRhKCkuc2VsZWN0aW9uRW5kKCktPnNldFNlbGVjdGlvblN0YXRl
SWZOZWVkZWQoU2VsZWN0aW9uRW5kKTsKKyAgICAgICAgaWYgKHNlbGVjdGlvbkRhdGEoKS5zZWxl
Y3Rpb25TdGFydCgpKQorICAgICAgICAgICAgc2VsZWN0aW9uRGF0YSgpLnNlbGVjdGlvblN0YXJ0
KCktPnNldFNlbGVjdGlvblN0YXRlSWZOZWVkZWQoU2VsZWN0aW9uU3RhcnQpOworICAgICAgICBp
ZiAoc2VsZWN0aW9uRGF0YSgpLnNlbGVjdGlvbkVuZCgpKQorICAgICAgICAgICAgc2VsZWN0aW9u
RGF0YSgpLnNlbGVjdGlvbkVuZCgpLT5zZXRTZWxlY3Rpb25TdGF0ZUlmTmVlZGVkKFNlbGVjdGlv
bkVuZCk7CiAgICAgfQogCi0gICAgUmVuZGVyT2JqZWN0KiBzZWxlY3Rpb25TdGFydCA9IHJvb3Qu
c2VsZWN0aW9uRGF0YSgpLnNlbGVjdGlvblN0YXJ0KCk7Ci0gICAgYXV0byogc2VsZWN0aW9uRGF0
YUVuZCA9IHJvb3Quc2VsZWN0aW9uRGF0YSgpLnNlbGVjdGlvbkVuZCgpOworICAgIFJlbmRlck9i
amVjdCogc2VsZWN0aW9uU3RhcnQgPSBzZWxlY3Rpb25EYXRhKCkuc2VsZWN0aW9uU3RhcnQoKTsK
KyAgICBhdXRvKiBzZWxlY3Rpb25EYXRhRW5kID0gc2VsZWN0aW9uRGF0YSgpLnNlbGVjdGlvbkVu
ZCgpOwogICAgIFJlbmRlck9iamVjdCogc2VsZWN0aW9uRW5kID0gbnVsbHB0cjsKICAgICBpZiAo
c2VsZWN0aW9uRGF0YUVuZCkKLSAgICAgICAgc2VsZWN0aW9uRW5kID0gcmVuZGVyZXJBZnRlclBv
c2l0aW9uKHNlbGVjdGlvbkRhdGFFbmQsIHJvb3Quc2VsZWN0aW9uRGF0YSgpLnNlbGVjdGlvbkVu
ZFBvcygpLnZhbHVlKCkpOworICAgICAgICBzZWxlY3Rpb25FbmQgPSByZW5kZXJlckFmdGVyUG9z
aXRpb24oc2VsZWN0aW9uRGF0YUVuZCwgc2VsZWN0aW9uRGF0YSgpLnNlbGVjdGlvbkVuZFBvcygp
LnZhbHVlKCkpOwogICAgIFNlbGVjdGlvbkl0ZXJhdG9yIHNlbGVjdGlvbkl0ZXJhdG9yKHNlbGVj
dGlvblN0YXJ0KTsKICAgICBmb3IgKFJlbmRlck9iamVjdCogY3VycmVudFJlbmRlcmVyID0gc2Vs
ZWN0aW9uU3RhcnQ7IGN1cnJlbnRSZW5kZXJlciAmJiBjdXJyZW50UmVuZGVyZXIgIT0gc2VsZWN0
aW9uRW5kOyBjdXJyZW50UmVuZGVyZXIgPSBzZWxlY3Rpb25JdGVyYXRvci5uZXh0KCkpIHsKLSAg
ICAgICAgaWYgKGN1cnJlbnRSZW5kZXJlciA9PSByb290LnNlbGVjdGlvbkRhdGEoKS5zZWxlY3Rp
b25TdGFydCgpIHx8IGN1cnJlbnRSZW5kZXJlciA9PSByb290LnNlbGVjdGlvbkRhdGEoKS5zZWxl
Y3Rpb25FbmQoKSkKKyAgICAgICAgaWYgKGN1cnJlbnRSZW5kZXJlciA9PSBzZWxlY3Rpb25EYXRh
KCkuc2VsZWN0aW9uU3RhcnQoKSB8fCBjdXJyZW50UmVuZGVyZXIgPT0gc2VsZWN0aW9uRGF0YSgp
LnNlbGVjdGlvbkVuZCgpKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIGlmICghY3Vy
cmVudFJlbmRlcmVyLT5jYW5CZVNlbGVjdGlvbkxlYWYoKSkKICAgICAgICAgICAgIGNvbnRpbnVl
OwotICAgICAgICAvLyBGSVhNRTogTW92ZSB0aGlzIGxvZ2ljIHRvIFNlbGVjdGlvbkl0ZXJhdG9y
OjpuZXh0KCkKLSAgICAgICAgaWYgKCZjdXJyZW50UmVuZGVyZXItPnNlbGVjdGlvblJvb3QoKSAh
PSAmcm9vdCkKLSAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBjdXJyZW50UmVuZGVyZXIt
PnNldFNlbGVjdGlvblN0YXRlSWZOZWVkZWQoU2VsZWN0aW9uSW5zaWRlKTsKICAgICB9CiAKQEAg
LTkyNCw3ICs4OTgsNyBAQCB2b2lkIFJlbmRlclZpZXc6OmFwcGx5U3VidHJlZVNlbGVjdGlvbihj
b25zdCBTZWxlY3Rpb25TdWJ0cmVlUm9vdCYgcm9vdCwgU2VsZWN0aQogICAgIFNlbGVjdGVkQmxv
Y2tNYXAgbmV3U2VsZWN0ZWRCbG9ja3M7CiAgICAgc2VsZWN0aW9uSXRlcmF0b3IgPSBTZWxlY3Rp
b25JdGVyYXRvcihzZWxlY3Rpb25TdGFydCk7CiAgICAgZm9yIChSZW5kZXJPYmplY3QqIGN1cnJl
bnRSZW5kZXJlciA9IHNlbGVjdGlvblN0YXJ0OyBjdXJyZW50UmVuZGVyZXIgJiYgY3VycmVudFJl
bmRlcmVyICE9IHNlbGVjdGlvbkVuZDsgY3VycmVudFJlbmRlcmVyID0gc2VsZWN0aW9uSXRlcmF0
b3IubmV4dCgpKSB7Ci0gICAgICAgIGlmIChpc1ZhbGlkT2JqZWN0Rm9yTmV3U2VsZWN0aW9uKHJv
b3QsICpjdXJyZW50UmVuZGVyZXIpKSB7CisgICAgICAgIGlmIChpc1ZhbGlkT2JqZWN0Rm9yTmV3
U2VsZWN0aW9uKCp0aGlzLCAqY3VycmVudFJlbmRlcmVyKSkgewogICAgICAgICAgICAgc3RkOjp1
bmlxdWVfcHRyPFJlbmRlclNlbGVjdGlvbkluZm8+IHNlbGVjdGlvbkluZm8gPSBzdGQ6Om1ha2Vf
dW5pcXVlPFJlbmRlclNlbGVjdGlvbkluZm8+KCpjdXJyZW50UmVuZGVyZXIsIHRydWUpOwogCiAj
aWYgRU5BQkxFKFNFUlZJQ0VfQ09OVFJPTFMpCkBAIC05NjAsOCArOTM0LDggQEAgdm9pZCBSZW5k
ZXJWaWV3OjphcHBseVN1YnRyZWVTZWxlY3Rpb24oY29uc3QgU2VsZWN0aW9uU3VidHJlZVJvb3Qm
IHJvb3QsIFNlbGVjdGkKICAgICAgICAgUmVuZGVyU2VsZWN0aW9uSW5mbyogbmV3SW5mbyA9IG5l
d1NlbGVjdGVkT2JqZWN0cy5nZXQob2JqKTsKICAgICAgICAgUmVuZGVyU2VsZWN0aW9uSW5mbyog
b2xkSW5mbyA9IHNlbGVjdGVkT2JqZWN0SW5mby52YWx1ZS5nZXQoKTsKICAgICAgICAgaWYgKCFu
ZXdJbmZvIHx8IG9sZEluZm8tPnJlY3QoKSAhPSBuZXdJbmZvLT5yZWN0KCkgfHwgb2xkSW5mby0+
c3RhdGUoKSAhPSBuZXdJbmZvLT5zdGF0ZSgpCi0gICAgICAgICAgICB8fCAocm9vdC5zZWxlY3Rp
b25EYXRhKCkuc2VsZWN0aW9uU3RhcnQoKSA9PSBvYmogJiYgb2xkU2VsZWN0aW9uRGF0YS5zZWxl
Y3Rpb25TdGFydFBvcyAhPSByb290LnNlbGVjdGlvbkRhdGEoKS5zZWxlY3Rpb25TdGFydFBvcygp
KQotICAgICAgICAgICAgfHwgKHJvb3Quc2VsZWN0aW9uRGF0YSgpLnNlbGVjdGlvbkVuZCgpID09
IG9iaiAmJiBvbGRTZWxlY3Rpb25EYXRhLnNlbGVjdGlvbkVuZFBvcyAhPSByb290LnNlbGVjdGlv
bkRhdGEoKS5zZWxlY3Rpb25FbmRQb3MoKSkpIHsKKyAgICAgICAgICAgIHx8IChzZWxlY3Rpb25E
YXRhKCkuc2VsZWN0aW9uU3RhcnQoKSA9PSBvYmogJiYgb2xkU2VsZWN0aW9uRGF0YS5zZWxlY3Rp
b25TdGFydFBvcyAhPSBzZWxlY3Rpb25EYXRhKCkuc2VsZWN0aW9uU3RhcnRQb3MoKSkKKyAgICAg
ICAgICAgIHx8IChzZWxlY3Rpb25EYXRhKCkuc2VsZWN0aW9uRW5kKCkgPT0gb2JqICYmIG9sZFNl
bGVjdGlvbkRhdGEuc2VsZWN0aW9uRW5kUG9zICE9IHNlbGVjdGlvbkRhdGEoKS5zZWxlY3Rpb25F
bmRQb3MoKSkpIHsKICAgICAgICAgICAgIG9sZEluZm8tPnJlcGFpbnQoKTsKICAgICAgICAgICAg
IGlmIChuZXdJbmZvKSB7CiAgICAgICAgICAgICAgICAgbmV3SW5mby0+cmVwYWludCgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuaCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmgKaW5kZXggNGI2Yjg2ZGRiYTllMWZiZWE3Zjlj
YmM1ZTVjMTk5NjliZjNiYmVmZC4uZDY4ZDdhZWNkYTUyMmU1MTFjNDJlNDY0YzhhYTA4MGFiZGNj
NDExMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5oCkBAIC0zMTEsMTEgKzMx
MSwxMCBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBpc1Njcm9sbGFibGVPclJ1YmJlcmJhbmRhYmxl
Qm94KCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIGNsZWFyU3VidHJlZVNlbGVjdGlvbihj
b25zdCBTZWxlY3Rpb25TdWJ0cmVlUm9vdCYsIFNlbGVjdGlvblJlcGFpbnRNb2RlLCBPbGRTZWxl
Y3Rpb25EYXRhJikgY29uc3Q7Ci0gICAgdm9pZCB1cGRhdGVTZWxlY3Rpb25Gb3JTdWJ0cmVlcyhS
ZW5kZXJTdWJ0cmVlc01hcCYsIFNlbGVjdGlvblJlcGFpbnRNb2RlKTsKLSAgICB2b2lkIGFwcGx5
U3VidHJlZVNlbGVjdGlvbihjb25zdCBTZWxlY3Rpb25TdWJ0cmVlUm9vdCYsIFNlbGVjdGlvblJl
cGFpbnRNb2RlLCBjb25zdCBPbGRTZWxlY3Rpb25EYXRhJik7Ci0gICAgTGF5b3V0UmVjdCBzdWJ0
cmVlU2VsZWN0aW9uQm91bmRzKGNvbnN0IFNlbGVjdGlvblN1YnRyZWVSb290JiwgYm9vbCBjbGlw
VG9WaXNpYmxlQ29udGVudCA9IHRydWUpIGNvbnN0OwotICAgIHZvaWQgcmVwYWludFN1YnRyZWVT
ZWxlY3Rpb24oY29uc3QgU2VsZWN0aW9uU3VidHJlZVJvb3QmKSBjb25zdDsKKyAgICB2b2lkIGNs
ZWFyU3VidHJlZVNlbGVjdGlvbihTZWxlY3Rpb25SZXBhaW50TW9kZSBibG9ja1JlcGFpbnRNb2Rl
LCBPbGRTZWxlY3Rpb25EYXRhJikgY29uc3Q7CisgICAgdm9pZCBhcHBseVN1YnRyZWVTZWxlY3Rp
b24oU2VsZWN0aW9uUmVwYWludE1vZGUsIGNvbnN0IE9sZFNlbGVjdGlvbkRhdGEmKTsKKyAgICBM
YXlvdXRSZWN0IHN1YnRyZWVTZWxlY3Rpb25Cb3VuZHMoYm9vbCBjbGlwVG9WaXNpYmxlQ29udGVu
dCA9IHRydWUpIGNvbnN0OworICAgIHZvaWQgcmVwYWludFN1YnRyZWVTZWxlY3Rpb24oKSBjb25z
dDsKIAogcHJpdmF0ZToKICAgICBGcmFtZVZpZXcmIG1fZnJhbWVWaWV3OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NlbGVjdGlvblN1YnRyZWVSb290LmggYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvU2VsZWN0aW9uU3VidHJlZVJvb3QuaAppbmRleCBmNThiNmVkNTc1
YzA2NDM0YTQ0MmZmZWYzNjgxODVkZjVlZWJkYTA5Li4zN2U0NGQ4NmFiY2QzZWExNmYxZGU2ODll
Yzc0YjQzMTMzNTk4NzFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2Vs
ZWN0aW9uU3VidHJlZVJvb3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2VsZWN0
aW9uU3VidHJlZVJvb3QuaApAQCAtODksNyArODksNiBAQCBwdWJsaWM6CiAgICAgICAgIHN0ZDo6
b3B0aW9uYWw8dW5zaWduZWQ+IG1fc2VsZWN0aW9uRW5kUG9zOwogICAgIH07CiAKLSAgICB0eXBl
ZGVmIEhhc2hNYXA8U2VsZWN0aW9uU3VidHJlZVJvb3QqLCBTZWxlY3Rpb25TdWJ0cmVlRGF0YT4g
UmVuZGVyU3VidHJlZXNNYXA7CiAgICAgdHlwZWRlZiBIYXNoTWFwPGNvbnN0IFNlbGVjdGlvblN1
YnRyZWVSb290Kiwgc3RkOjp1bmlxdWVfcHRyPE9sZFNlbGVjdGlvbkRhdGE+PiBTdWJ0cmVlT2xk
U2VsZWN0aW9uRGF0YU1hcDsKIAogICAgIFNlbGVjdGlvblN1YnRyZWVSb290KCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>322242</attachid>
            <date>2017-09-29 15:10:47 -0700</date>
            <delta_ts>2017-09-29 15:50:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-177685-20170929151046.patch</filename>
            <type>text/plain</type>
            <size>16089</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIyNjUzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTBiMGJiYzJjN2Y0YzA2
MmQ1MmY2NGJmNWRhNjExMTY4NGFmMjc1Yi4uNWMyMTk4YzQyZjU4NGZiY2U4YTJjNTYxNTljMzY5
OWY2Y2M4NzBjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDMwIEBACiAyMDE3LTA5LTI5ICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKKyAgICAgICAgUmVtb3ZlIFNlbGVjdGlvblN1
YnRyZWVSb290OjpSZW5kZXJTdWJ0cmVlc01hcAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc3Njg1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQW5keSBF
c3Rlcy4KKworICAgICAgICBUaGlzIGlzIGluIHByZXBhcmF0aW9uIG9mIHJlbW92aW5nIHJlZHVu
ZGFudCBTZWxlY3Rpb25TdWJ0cmVlUm9vdC4KKyAgICAgICAgKE5vdyB0aGF0IHdlIHJlbW92ZWQg
cmVnaW9ucywgUmVuZGVyVmlldyBpcyB0aGUgb25seSBzZWxlY3Rpb24gcm9vdCkgCisKKyAgICAg
ICAgTm8gY2hhbmdlIGluIGZ1bmN0aW9uYWxpdHkuCisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJWaWV3OjpzZWxlY3Rpb25Cb3Vu
ZHMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVmlldzo6c3VidHJlZVNlbGVjdGlv
bkJvdW5kcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJWaWV3OjpyZXBhaW50U2Vs
ZWN0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclZpZXc6OnJlcGFpbnRTdWJ0
cmVlU2VsZWN0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclZpZXc6OnNldFNl
bGVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjppc1ZhbGlkT2JqZWN0Rm9yTmV3U2VsZWN0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclZpZXc6OmNsZWFyU3VidHJlZVNlbGVjdGlvbiBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJWaWV3OjphcHBseVN1YnRyZWVTZWxlY3Rp
b24pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVmlldzo6dXBkYXRlU2VsZWN0aW9uRm9yU3Vi
dHJlZXMpOiBEZWxldGVkLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJWaWV3Lmg6CisgICAg
ICAgICogcmVuZGVyaW5nL1NlbGVjdGlvblN1YnRyZWVSb290Lmg6CisKKzIwMTctMDktMjkgIFph
bGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KKwogICAgICAgICBBZGQgV2Vha1B0ciBzdXBw
b3J0IHRvIFJlbmRlck9iamVjdC4KICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE3NzQyOQogICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzQ2MjUyMTI+CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAKaW5kZXggYTBjNmI5NGE4MzA5NTM4
ZGQxM2I5ZDIxYjRiYmJlOGMwNjYyYzFkMy4uZTVkY2RlMjkwMjVhMWJiZGQ2OTgyZTI1MGM0MDI5
ZTExMWJlZmFhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZp
ZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmNwcApAQCAt
NzA4LDIzICs3MDgsMjMgQEAgc3RhdGljIFJlbmRlck9iamVjdCogcmVuZGVyZXJBZnRlclBvc2l0
aW9uKFJlbmRlck9iamVjdCogb2JqZWN0LCB1bnNpZ25lZCBvZmZzZXQKIAogSW50UmVjdCBSZW5k
ZXJWaWV3OjpzZWxlY3Rpb25Cb3VuZHMoYm9vbCBjbGlwVG9WaXNpYmxlQ29udGVudCkgY29uc3QK
IHsKLSAgICBMYXlvdXRSZWN0IHNlbFJlY3QgPSBzdWJ0cmVlU2VsZWN0aW9uQm91bmRzKCp0aGlz
LCBjbGlwVG9WaXNpYmxlQ29udGVudCk7CisgICAgTGF5b3V0UmVjdCBzZWxSZWN0ID0gc3VidHJl
ZVNlbGVjdGlvbkJvdW5kcyhjbGlwVG9WaXNpYmxlQ29udGVudCk7CiAgICAgcmV0dXJuIHNuYXBw
ZWRJbnRSZWN0KHNlbFJlY3QpOwogfQogCi1MYXlvdXRSZWN0IFJlbmRlclZpZXc6OnN1YnRyZWVT
ZWxlY3Rpb25Cb3VuZHMoY29uc3QgU2VsZWN0aW9uU3VidHJlZVJvb3QmIHJvb3QsIGJvb2wgY2xp
cFRvVmlzaWJsZUNvbnRlbnQpIGNvbnN0CitMYXlvdXRSZWN0IFJlbmRlclZpZXc6OnN1YnRyZWVT
ZWxlY3Rpb25Cb3VuZHMoYm9vbCBjbGlwVG9WaXNpYmxlQ29udGVudCkgY29uc3QKIHsKICAgICB0
eXBlZGVmIEhhc2hNYXA8UmVuZGVyT2JqZWN0Kiwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclNlbGVj
dGlvbkluZm8+PiBTZWxlY3Rpb25NYXA7CiAgICAgU2VsZWN0aW9uTWFwIHNlbGVjdGVkT2JqZWN0
czsKIAotICAgIFJlbmRlck9iamVjdCogb3MgPSByb290LnNlbGVjdGlvbkRhdGEoKS5zZWxlY3Rp
b25TdGFydCgpOwotICAgIGF1dG8qIHNlbGVjdGlvbkVuZCA9IHJvb3Quc2VsZWN0aW9uRGF0YSgp
LnNlbGVjdGlvbkVuZCgpOworICAgIFJlbmRlck9iamVjdCogb3MgPSBzZWxlY3Rpb25EYXRhKCku
c2VsZWN0aW9uU3RhcnQoKTsKKyAgICBhdXRvKiBzZWxlY3Rpb25FbmQgPSBzZWxlY3Rpb25EYXRh
KCkuc2VsZWN0aW9uRW5kKCk7CiAgICAgUmVuZGVyT2JqZWN0KiBzdG9wID0gbnVsbHB0cjsKICAg
ICBpZiAoc2VsZWN0aW9uRW5kKQotICAgICAgICBzdG9wID0gcmVuZGVyZXJBZnRlclBvc2l0aW9u
KHNlbGVjdGlvbkVuZCwgcm9vdC5zZWxlY3Rpb25EYXRhKCkuc2VsZWN0aW9uRW5kUG9zKCkudmFs
dWUoKSk7CisgICAgICAgIHN0b3AgPSByZW5kZXJlckFmdGVyUG9zaXRpb24oc2VsZWN0aW9uRW5k
LCBzZWxlY3Rpb25EYXRhKCkuc2VsZWN0aW9uRW5kUG9zKCkudmFsdWUoKSk7CiAgICAgU2VsZWN0
aW9uSXRlcmF0b3Igc2VsZWN0aW9uSXRlcmF0b3Iob3MpOwogICAgIHdoaWxlIChvcyAmJiBvcyAh
PSBzdG9wKSB7Ci0gICAgICAgIGlmICgob3MtPmNhbkJlU2VsZWN0aW9uTGVhZigpIHx8IG9zID09
IHJvb3Quc2VsZWN0aW9uRGF0YSgpLnNlbGVjdGlvblN0YXJ0KCkgfHwgb3MgPT0gcm9vdC5zZWxl
Y3Rpb25EYXRhKCkuc2VsZWN0aW9uRW5kKCkpICYmIG9zLT5zZWxlY3Rpb25TdGF0ZSgpICE9IFNl
bGVjdGlvbk5vbmUpIHsKKyAgICAgICAgaWYgKChvcy0+Y2FuQmVTZWxlY3Rpb25MZWFmKCkgfHwg
b3MgPT0gc2VsZWN0aW9uRGF0YSgpLnNlbGVjdGlvblN0YXJ0KCkgfHwgb3MgPT0gc2VsZWN0aW9u
RGF0YSgpLnNlbGVjdGlvbkVuZCgpKSAmJiBvcy0+c2VsZWN0aW9uU3RhdGUoKSAhPSBTZWxlY3Rp
b25Ob25lKSB7CiAgICAgICAgICAgICAvLyBCbG9ja3MgYXJlIHJlc3BvbnNpYmxlIGZvciBwYWlu
dGluZyBsaW5lIGdhcHMgYW5kIG1hcmdpbiBnYXBzLiBUaGV5IG11c3QgYmUgZXhhbWluZWQgYXMg
d2VsbC4KICAgICAgICAgICAgIHNlbGVjdGVkT2JqZWN0cy5zZXQob3MsIHN0ZDo6bWFrZV91bmlx
dWU8UmVuZGVyU2VsZWN0aW9uSW5mbz4oKm9zLCBjbGlwVG9WaXNpYmxlQ29udGVudCkpOwogICAg
ICAgICAgICAgUmVuZGVyQmxvY2sqIGNiID0gb3MtPmNvbnRhaW5pbmdCbG9jaygpOwpAQCAtNzU4
LDIwICs3NTgsMjAgQEAgTGF5b3V0UmVjdCBSZW5kZXJWaWV3OjpzdWJ0cmVlU2VsZWN0aW9uQm91
bmRzKGNvbnN0IFNlbGVjdGlvblN1YnRyZWVSb290JiByb290LAogCiB2b2lkIFJlbmRlclZpZXc6
OnJlcGFpbnRTZWxlY3Rpb24oKSBjb25zdAogewotICAgIHJlcGFpbnRTdWJ0cmVlU2VsZWN0aW9u
KCp0aGlzKTsKKyAgICByZXBhaW50U3VidHJlZVNlbGVjdGlvbigpOwogfQogCi12b2lkIFJlbmRl
clZpZXc6OnJlcGFpbnRTdWJ0cmVlU2VsZWN0aW9uKGNvbnN0IFNlbGVjdGlvblN1YnRyZWVSb290
JiByb290KSBjb25zdAordm9pZCBSZW5kZXJWaWV3OjpyZXBhaW50U3VidHJlZVNlbGVjdGlvbigp
IGNvbnN0CiB7CiAgICAgSGFzaFNldDxSZW5kZXJCbG9jayo+IHByb2Nlc3NlZEJsb2NrczsKIAot
ICAgIGF1dG8qIHNlbGVjdGlvbkVuZCA9IHJvb3Quc2VsZWN0aW9uRGF0YSgpLnNlbGVjdGlvbkVu
ZCgpOworICAgIGF1dG8qIHNlbGVjdGlvbkVuZCA9IHNlbGVjdGlvbkRhdGEoKS5zZWxlY3Rpb25F
bmQoKTsKICAgICBSZW5kZXJPYmplY3QqIGVuZCA9IG51bGxwdHI7CiAgICAgaWYgKHNlbGVjdGlv
bkVuZCkKLSAgICAgICAgZW5kID0gcmVuZGVyZXJBZnRlclBvc2l0aW9uKHNlbGVjdGlvbkVuZCwg
cm9vdC5zZWxlY3Rpb25EYXRhKCkuc2VsZWN0aW9uRW5kUG9zKCkudmFsdWUoKSk7Ci0gICAgU2Vs
ZWN0aW9uSXRlcmF0b3Igc2VsZWN0aW9uSXRlcmF0b3Iocm9vdC5zZWxlY3Rpb25EYXRhKCkuc2Vs
ZWN0aW9uU3RhcnQoKSk7CisgICAgICAgIGVuZCA9IHJlbmRlcmVyQWZ0ZXJQb3NpdGlvbihzZWxl
Y3Rpb25FbmQsIHNlbGVjdGlvbkRhdGEoKS5zZWxlY3Rpb25FbmRQb3MoKS52YWx1ZSgpKTsKKyAg
ICBTZWxlY3Rpb25JdGVyYXRvciBzZWxlY3Rpb25JdGVyYXRvcihzZWxlY3Rpb25EYXRhKCkuc2Vs
ZWN0aW9uU3RhcnQoKSk7CiAgICAgZm9yIChSZW5kZXJPYmplY3QqIG8gPSBzZWxlY3Rpb25JdGVy
YXRvci5jdXJyZW50KCk7IG8gJiYgbyAhPSBlbmQ7IG8gPSBzZWxlY3Rpb25JdGVyYXRvci5uZXh0
KCkpIHsKLSAgICAgICAgaWYgKCFvLT5jYW5CZVNlbGVjdGlvbkxlYWYoKSAmJiBvICE9IHJvb3Qu
c2VsZWN0aW9uRGF0YSgpLnNlbGVjdGlvblN0YXJ0KCkgJiYgbyAhPSByb290LnNlbGVjdGlvbkRh
dGEoKS5zZWxlY3Rpb25FbmQoKSkKKyAgICAgICAgaWYgKCFvLT5jYW5CZVNlbGVjdGlvbkxlYWYo
KSAmJiBvICE9IHNlbGVjdGlvbkRhdGEoKS5zZWxlY3Rpb25TdGFydCgpICYmIG8gIT0gc2VsZWN0
aW9uRGF0YSgpLnNlbGVjdGlvbkVuZCgpKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAg
IGlmIChvLT5zZWxlY3Rpb25TdGF0ZSgpID09IFNlbGVjdGlvbk5vbmUpCiAgICAgICAgICAgICBj
b250aW51ZTsKQEAgLTgxMiw1OSArODEyLDM2IEBAIHZvaWQgUmVuZGVyVmlldzo6c2V0U2VsZWN0
aW9uKFJlbmRlck9iamVjdCogc3RhcnQsIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IHN0YXJ0CiAg
ICAgbV9zZWxlY3Rpb25VbnNwbGl0U3RhcnRQb3MgPSBzdGFydFBvczsKICAgICBtX3NlbGVjdGlv
blVuc3BsaXRFbmQgPSBlbmQ7CiAgICAgbV9zZWxlY3Rpb25VbnNwbGl0RW5kUG9zID0gZW5kUG9z
OwotCi0gICAgUmVuZGVyU3VidHJlZXNNYXAgc2luZ2xlU3VidHJlZU1hcDsKLSAgICBzaW5nbGVT
dWJ0cmVlTWFwLnNldCh0aGlzLCBTZWxlY3Rpb25TdWJ0cmVlRGF0YShzdGFydCwgc3RhcnRQb3Ms
IGVuZCwgZW5kUG9zKSk7Ci0gICAgdXBkYXRlU2VsZWN0aW9uRm9yU3VidHJlZXMoc2luZ2xlU3Vi
dHJlZU1hcCwgYmxvY2tSZXBhaW50TW9kZSk7Ci19Ci0KLXZvaWQgUmVuZGVyVmlldzo6dXBkYXRl
U2VsZWN0aW9uRm9yU3VidHJlZXMoUmVuZGVyU3VidHJlZXNNYXAmIHJlbmRlclN1YnRyZWVzTWFw
LCBTZWxlY3Rpb25SZXBhaW50TW9kZSBibG9ja1JlcGFpbnRNb2RlKQotewotICAgIFN1YnRyZWVP
bGRTZWxlY3Rpb25EYXRhTWFwIG9sZFNlbGVjdGlvbkRhdGFNYXA7Ci0gICAgZm9yIChhdXRvJiBz
dWJ0cmVlU2VsZWN0aW9uSW5mbyA6IHJlbmRlclN1YnRyZWVzTWFwKSB7Ci0gICAgICAgIFNlbGVj
dGlvblN1YnRyZWVSb290JiByb290ID0gKnN1YnRyZWVTZWxlY3Rpb25JbmZvLmtleTsKLSAgICAg
ICAgc3RkOjp1bmlxdWVfcHRyPE9sZFNlbGVjdGlvbkRhdGE+IG9sZFNlbGVjdGlvbkRhdGEgPSBz
dGQ6Om1ha2VfdW5pcXVlPE9sZFNlbGVjdGlvbkRhdGE+KCk7Ci0KLSAgICAgICAgY2xlYXJTdWJ0
cmVlU2VsZWN0aW9uKHJvb3QsIGJsb2NrUmVwYWludE1vZGUsICpvbGRTZWxlY3Rpb25EYXRhKTsK
LSAgICAgICAgb2xkU2VsZWN0aW9uRGF0YU1hcC5zZXQoJnJvb3QsIFdURk1vdmUob2xkU2VsZWN0
aW9uRGF0YSkpOwotCi0gICAgICAgIHJvb3Quc2V0U2VsZWN0aW9uRGF0YShzdWJ0cmVlU2VsZWN0
aW9uSW5mby52YWx1ZSk7Ci0gICAgfQotCi0gICAgLy8gVXBkYXRlIHNlbGVjdGlvbiBzdGF0dXMg
Zm9yIHRoZSBvYmplY3RzIGluc2lkZSB0aGUgc2VsZWN0aW9uIHN1YnRyZWVzLgotICAgIC8vIFRo
aXMgbmVlZHMgdG8gYmUgZG9uZSBhZnRlciB0aGUgcHJldmlvdXMgbG9vcCB1cGRhdGVkIHRoZSBz
ZWxlY3Rpb25TdGFydC9FbmQKLSAgICAvLyBwYXJhbWV0ZXJzIG9mIGFsbCBzdWJ0cmVlcyBiZWNh
dXNlIHdlJ3JlIGdvaW5nIHRvIGJlIGNsaW1iaW5nIHVwIHRoZSBjb250YWluaW5nCi0gICAgLy8g
YmxvY2sgY2hhaW4gYW5kIHdlIG1pZ2h0IGVuZCB1cCBpbiBhIGRpZmZlcmVudCBzZWxlY3Rpb24g
c3VidHJlZS4KLSAgICBmb3IgKGNvbnN0IGF1dG8qIHN1YnRyZWVTZWxlY3Rpb25Sb290IDogcmVu
ZGVyU3VidHJlZXNNYXAua2V5cygpKSB7Ci0gICAgICAgIE9sZFNlbGVjdGlvbkRhdGEmIG9sZFNl
bGVjdGlvbkRhdGEgPSAqb2xkU2VsZWN0aW9uRGF0YU1hcC5nZXQoc3VidHJlZVNlbGVjdGlvblJv
b3QpOwotICAgICAgICBhcHBseVN1YnRyZWVTZWxlY3Rpb24oKnN1YnRyZWVTZWxlY3Rpb25Sb290
LCBibG9ja1JlcGFpbnRNb2RlLCBvbGRTZWxlY3Rpb25EYXRhKTsKLSAgICB9CisgICAgYXV0byBv
bGRTZWxlY3Rpb25EYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxPbGRTZWxlY3Rpb25EYXRhPigpOwor
ICAgIGNsZWFyU3VidHJlZVNlbGVjdGlvbihibG9ja1JlcGFpbnRNb2RlLCAqb2xkU2VsZWN0aW9u
RGF0YSk7CisgICAgc2V0U2VsZWN0aW9uRGF0YShTZWxlY3Rpb25TdWJ0cmVlRGF0YShzdGFydCwg
c3RhcnRQb3MsIGVuZCwgZW5kUG9zKSk7CisgICAgYXBwbHlTdWJ0cmVlU2VsZWN0aW9uKGJsb2Nr
UmVwYWludE1vZGUsICpvbGRTZWxlY3Rpb25EYXRhKTsKIH0KIAotc3RhdGljIGlubGluZSBib29s
IGlzVmFsaWRPYmplY3RGb3JOZXdTZWxlY3Rpb24oY29uc3QgU2VsZWN0aW9uU3VidHJlZVJvb3Qm
IHJvb3QsIGNvbnN0IFJlbmRlck9iamVjdCYgb2JqZWN0KQorc3RhdGljIGlubGluZSBib29sIGlz
VmFsaWRPYmplY3RGb3JOZXdTZWxlY3Rpb24oY29uc3QgUmVuZGVyVmlldyYgdmlldywgY29uc3Qg
UmVuZGVyT2JqZWN0JiBvYmplY3QpCiB7Ci0gICAgcmV0dXJuIChvYmplY3QuY2FuQmVTZWxlY3Rp
b25MZWFmKCkgfHwgJm9iamVjdCA9PSByb290LnNlbGVjdGlvbkRhdGEoKS5zZWxlY3Rpb25TdGFy
dCgpIHx8ICZvYmplY3QgPT0gcm9vdC5zZWxlY3Rpb25EYXRhKCkuc2VsZWN0aW9uRW5kKCkpICYm
IG9iamVjdC5zZWxlY3Rpb25TdGF0ZSgpICE9IFJlbmRlck9iamVjdDo6U2VsZWN0aW9uTm9uZSAm
JiBvYmplY3QuY29udGFpbmluZ0Jsb2NrKCk7CisgICAgcmV0dXJuIChvYmplY3QuY2FuQmVTZWxl
Y3Rpb25MZWFmKCkgfHwgJm9iamVjdCA9PSB2aWV3LnNlbGVjdGlvbkRhdGEoKS5zZWxlY3Rpb25T
dGFydCgpIHx8ICZvYmplY3QgPT0gdmlldy5zZWxlY3Rpb25EYXRhKCkuc2VsZWN0aW9uRW5kKCkp
ICYmIG9iamVjdC5zZWxlY3Rpb25TdGF0ZSgpICE9IFJlbmRlck9iamVjdDo6U2VsZWN0aW9uTm9u
ZSAmJiBvYmplY3QuY29udGFpbmluZ0Jsb2NrKCk7CiB9CiAKLXZvaWQgUmVuZGVyVmlldzo6Y2xl
YXJTdWJ0cmVlU2VsZWN0aW9uKGNvbnN0IFNlbGVjdGlvblN1YnRyZWVSb290JiByb290LCBTZWxl
Y3Rpb25SZXBhaW50TW9kZSBibG9ja1JlcGFpbnRNb2RlLCBPbGRTZWxlY3Rpb25EYXRhJiBvbGRT
ZWxlY3Rpb25EYXRhKSBjb25zdAordm9pZCBSZW5kZXJWaWV3OjpjbGVhclN1YnRyZWVTZWxlY3Rp
b24oU2VsZWN0aW9uUmVwYWludE1vZGUgYmxvY2tSZXBhaW50TW9kZSwgT2xkU2VsZWN0aW9uRGF0
YSYgb2xkU2VsZWN0aW9uRGF0YSkgY29uc3QKIHsKICAgICAvLyBSZWNvcmQgdGhlIG9sZCBzZWxl
Y3RlZCBvYmplY3RzLiAgVGhlc2Ugd2lsbCBiZSB1c2VkIGxhdGVyCiAgICAgLy8gd2hlbiB3ZSBj
b21wYXJlIGFnYWluc3QgdGhlIG5ldyBzZWxlY3RlZCBvYmplY3RzLgotICAgIG9sZFNlbGVjdGlv
bkRhdGEuc2VsZWN0aW9uU3RhcnRQb3MgPSByb290LnNlbGVjdGlvbkRhdGEoKS5zZWxlY3Rpb25T
dGFydFBvcygpOwotICAgIG9sZFNlbGVjdGlvbkRhdGEuc2VsZWN0aW9uRW5kUG9zID0gcm9vdC5z
ZWxlY3Rpb25EYXRhKCkuc2VsZWN0aW9uRW5kUG9zKCk7CisgICAgb2xkU2VsZWN0aW9uRGF0YS5z
ZWxlY3Rpb25TdGFydFBvcyA9IHNlbGVjdGlvbkRhdGEoKS5zZWxlY3Rpb25TdGFydFBvcygpOwor
ICAgIG9sZFNlbGVjdGlvbkRhdGEuc2VsZWN0aW9uRW5kUG9zID0gc2VsZWN0aW9uRGF0YSgpLnNl
bGVjdGlvbkVuZFBvcygpOwogICAgIAogICAgIC8vIEJsb2NrcyBjb250YWluIHNlbGVjdGVkIG9i
amVjdHMgYW5kIGZpbGwgZ2FwcyBiZXR3ZWVuIHRoZW0sIGVpdGhlciBvbiB0aGUgbGVmdCwgcmln
aHQsIG9yIGluIGJldHdlZW4gbGluZXMgYW5kIGJsb2Nrcy4KICAgICAvLyBJbiBvcmRlciB0byBn
ZXQgdGhlIHJlcGFpbnQgcmVjdCByaWdodCwgd2UgaGF2ZSB0byBleGFtaW5lIGxlZnQsIG1pZGRs
ZSwgYW5kIHJpZ2h0IHJlY3RzIGluZGl2aWR1YWxseSwgc2luY2Ugb3RoZXJ3aXNlCiAgICAgLy8g
dGhlIHVuaW9uIG9mIHRob3NlIHJlY3RzIG1pZ2h0IHJlbWFpbiB0aGUgc2FtZSBldmVuIHdoZW4g
Y2hhbmdlcyBoYXZlIG9jY3VycmVkLgogCi0gICAgUmVuZGVyT2JqZWN0KiBvcyA9IHJvb3Quc2Vs
ZWN0aW9uRGF0YSgpLnNlbGVjdGlvblN0YXJ0KCk7Ci0gICAgYXV0byogc2VsZWN0aW9uRW5kID0g
cm9vdC5zZWxlY3Rpb25EYXRhKCkuc2VsZWN0aW9uRW5kKCk7CisgICAgUmVuZGVyT2JqZWN0KiBv
cyA9IHNlbGVjdGlvbkRhdGEoKS5zZWxlY3Rpb25TdGFydCgpOworICAgIGF1dG8qIHNlbGVjdGlv
bkVuZCA9IHNlbGVjdGlvbkRhdGEoKS5zZWxlY3Rpb25FbmQoKTsKICAgICBSZW5kZXJPYmplY3Qq
IHN0b3AgPSBudWxscHRyOwogICAgIGlmIChzZWxlY3Rpb25FbmQpCi0gICAgICAgIHN0b3AgPSBy
ZW5kZXJlckFmdGVyUG9zaXRpb24oc2VsZWN0aW9uRW5kLCByb290LnNlbGVjdGlvbkRhdGEoKS5z
ZWxlY3Rpb25FbmRQb3MoKS52YWx1ZSgpKTsKKyAgICAgICAgc3RvcCA9IHJlbmRlcmVyQWZ0ZXJQ
b3NpdGlvbihzZWxlY3Rpb25FbmQsIHNlbGVjdGlvbkRhdGEoKS5zZWxlY3Rpb25FbmRQb3MoKS52
YWx1ZSgpKTsKICAgICBTZWxlY3Rpb25JdGVyYXRvciBzZWxlY3Rpb25JdGVyYXRvcihvcyk7CiAg
ICAgd2hpbGUgKG9zICYmIG9zICE9IHN0b3ApIHsKLSAgICAgICAgaWYgKGlzVmFsaWRPYmplY3RG
b3JOZXdTZWxlY3Rpb24ocm9vdCwgKm9zKSkgeworICAgICAgICBpZiAoaXNWYWxpZE9iamVjdEZv
ck5ld1NlbGVjdGlvbigqdGhpcywgKm9zKSkgewogICAgICAgICAgICAgLy8gQmxvY2tzIGFyZSBy
ZXNwb25zaWJsZSBmb3IgcGFpbnRpbmcgbGluZSBnYXBzIGFuZCBtYXJnaW4gZ2Fwcy4gIFRoZXkg
bXVzdCBiZSBleGFtaW5lZCBhcyB3ZWxsLgogICAgICAgICAgICAgb2xkU2VsZWN0aW9uRGF0YS5z
ZWxlY3RlZE9iamVjdHMuc2V0KG9zLCBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlclNlbGVjdGlvbklu
Zm8+KCpvcywgdHJ1ZSkpOwogICAgICAgICAgICAgaWYgKGJsb2NrUmVwYWludE1vZGUgPT0gUmVw
YWludE5ld1hPUk9sZCkgewpAQCAtODg2LDMyICs4NjMsMjkgQEAgdm9pZCBSZW5kZXJWaWV3Ojpj
bGVhclN1YnRyZWVTZWxlY3Rpb24oY29uc3QgU2VsZWN0aW9uU3VidHJlZVJvb3QmIHJvb3QsIFNl
bGVjdGkKICAgICAgICAgc2VsZWN0ZWRPYmplY3QtPnNldFNlbGVjdGlvblN0YXRlSWZOZWVkZWQo
U2VsZWN0aW9uTm9uZSk7CiB9CiAKLXZvaWQgUmVuZGVyVmlldzo6YXBwbHlTdWJ0cmVlU2VsZWN0
aW9uKGNvbnN0IFNlbGVjdGlvblN1YnRyZWVSb290JiByb290LCBTZWxlY3Rpb25SZXBhaW50TW9k
ZSBibG9ja1JlcGFpbnRNb2RlLCBjb25zdCBPbGRTZWxlY3Rpb25EYXRhJiBvbGRTZWxlY3Rpb25E
YXRhKQordm9pZCBSZW5kZXJWaWV3OjphcHBseVN1YnRyZWVTZWxlY3Rpb24oU2VsZWN0aW9uUmVw
YWludE1vZGUgYmxvY2tSZXBhaW50TW9kZSwgY29uc3QgT2xkU2VsZWN0aW9uRGF0YSYgb2xkU2Vs
ZWN0aW9uRGF0YSkKIHsKICAgICAvLyBVcGRhdGUgdGhlIHNlbGVjdGlvbiBzdGF0dXMgb2YgYWxs
IG9iamVjdHMgYmV0d2VlbiBzZWxlY3Rpb25TdGFydCBhbmQgc2VsZWN0aW9uRW5kCi0gICAgaWYg
KHJvb3Quc2VsZWN0aW9uRGF0YSgpLnNlbGVjdGlvblN0YXJ0KCkgJiYgcm9vdC5zZWxlY3Rpb25E
YXRhKCkuc2VsZWN0aW9uU3RhcnQoKSA9PSByb290LnNlbGVjdGlvbkRhdGEoKS5zZWxlY3Rpb25F
bmQoKSkKLSAgICAgICAgcm9vdC5zZWxlY3Rpb25EYXRhKCkuc2VsZWN0aW9uU3RhcnQoKS0+c2V0
U2VsZWN0aW9uU3RhdGVJZk5lZWRlZChTZWxlY3Rpb25Cb3RoKTsKKyAgICBpZiAoc2VsZWN0aW9u
RGF0YSgpLnNlbGVjdGlvblN0YXJ0KCkgJiYgc2VsZWN0aW9uRGF0YSgpLnNlbGVjdGlvblN0YXJ0
KCkgPT0gc2VsZWN0aW9uRGF0YSgpLnNlbGVjdGlvbkVuZCgpKQorICAgICAgICBzZWxlY3Rpb25E
YXRhKCkuc2VsZWN0aW9uU3RhcnQoKS0+c2V0U2VsZWN0aW9uU3RhdGVJZk5lZWRlZChTZWxlY3Rp
b25Cb3RoKTsKICAgICBlbHNlIHsKLSAgICAgICAgaWYgKHJvb3Quc2VsZWN0aW9uRGF0YSgpLnNl
bGVjdGlvblN0YXJ0KCkpCi0gICAgICAgICAgICByb290LnNlbGVjdGlvbkRhdGEoKS5zZWxlY3Rp
b25TdGFydCgpLT5zZXRTZWxlY3Rpb25TdGF0ZUlmTmVlZGVkKFNlbGVjdGlvblN0YXJ0KTsKLSAg
ICAgICAgaWYgKHJvb3Quc2VsZWN0aW9uRGF0YSgpLnNlbGVjdGlvbkVuZCgpKQotICAgICAgICAg
ICAgcm9vdC5zZWxlY3Rpb25EYXRhKCkuc2VsZWN0aW9uRW5kKCktPnNldFNlbGVjdGlvblN0YXRl
SWZOZWVkZWQoU2VsZWN0aW9uRW5kKTsKKyAgICAgICAgaWYgKHNlbGVjdGlvbkRhdGEoKS5zZWxl
Y3Rpb25TdGFydCgpKQorICAgICAgICAgICAgc2VsZWN0aW9uRGF0YSgpLnNlbGVjdGlvblN0YXJ0
KCktPnNldFNlbGVjdGlvblN0YXRlSWZOZWVkZWQoU2VsZWN0aW9uU3RhcnQpOworICAgICAgICBp
ZiAoc2VsZWN0aW9uRGF0YSgpLnNlbGVjdGlvbkVuZCgpKQorICAgICAgICAgICAgc2VsZWN0aW9u
RGF0YSgpLnNlbGVjdGlvbkVuZCgpLT5zZXRTZWxlY3Rpb25TdGF0ZUlmTmVlZGVkKFNlbGVjdGlv
bkVuZCk7CiAgICAgfQogCi0gICAgUmVuZGVyT2JqZWN0KiBzZWxlY3Rpb25TdGFydCA9IHJvb3Qu
c2VsZWN0aW9uRGF0YSgpLnNlbGVjdGlvblN0YXJ0KCk7Ci0gICAgYXV0byogc2VsZWN0aW9uRGF0
YUVuZCA9IHJvb3Quc2VsZWN0aW9uRGF0YSgpLnNlbGVjdGlvbkVuZCgpOworICAgIFJlbmRlck9i
amVjdCogc2VsZWN0aW9uU3RhcnQgPSBzZWxlY3Rpb25EYXRhKCkuc2VsZWN0aW9uU3RhcnQoKTsK
KyAgICBhdXRvKiBzZWxlY3Rpb25EYXRhRW5kID0gc2VsZWN0aW9uRGF0YSgpLnNlbGVjdGlvbkVu
ZCgpOwogICAgIFJlbmRlck9iamVjdCogc2VsZWN0aW9uRW5kID0gbnVsbHB0cjsKICAgICBpZiAo
c2VsZWN0aW9uRGF0YUVuZCkKLSAgICAgICAgc2VsZWN0aW9uRW5kID0gcmVuZGVyZXJBZnRlclBv
c2l0aW9uKHNlbGVjdGlvbkRhdGFFbmQsIHJvb3Quc2VsZWN0aW9uRGF0YSgpLnNlbGVjdGlvbkVu
ZFBvcygpLnZhbHVlKCkpOworICAgICAgICBzZWxlY3Rpb25FbmQgPSByZW5kZXJlckFmdGVyUG9z
aXRpb24oc2VsZWN0aW9uRGF0YUVuZCwgc2VsZWN0aW9uRGF0YSgpLnNlbGVjdGlvbkVuZFBvcygp
LnZhbHVlKCkpOwogICAgIFNlbGVjdGlvbkl0ZXJhdG9yIHNlbGVjdGlvbkl0ZXJhdG9yKHNlbGVj
dGlvblN0YXJ0KTsKICAgICBmb3IgKFJlbmRlck9iamVjdCogY3VycmVudFJlbmRlcmVyID0gc2Vs
ZWN0aW9uU3RhcnQ7IGN1cnJlbnRSZW5kZXJlciAmJiBjdXJyZW50UmVuZGVyZXIgIT0gc2VsZWN0
aW9uRW5kOyBjdXJyZW50UmVuZGVyZXIgPSBzZWxlY3Rpb25JdGVyYXRvci5uZXh0KCkpIHsKLSAg
ICAgICAgaWYgKGN1cnJlbnRSZW5kZXJlciA9PSByb290LnNlbGVjdGlvbkRhdGEoKS5zZWxlY3Rp
b25TdGFydCgpIHx8IGN1cnJlbnRSZW5kZXJlciA9PSByb290LnNlbGVjdGlvbkRhdGEoKS5zZWxl
Y3Rpb25FbmQoKSkKKyAgICAgICAgaWYgKGN1cnJlbnRSZW5kZXJlciA9PSBzZWxlY3Rpb25EYXRh
KCkuc2VsZWN0aW9uU3RhcnQoKSB8fCBjdXJyZW50UmVuZGVyZXIgPT0gc2VsZWN0aW9uRGF0YSgp
LnNlbGVjdGlvbkVuZCgpKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIGlmICghY3Vy
cmVudFJlbmRlcmVyLT5jYW5CZVNlbGVjdGlvbkxlYWYoKSkKICAgICAgICAgICAgIGNvbnRpbnVl
OwotICAgICAgICAvLyBGSVhNRTogTW92ZSB0aGlzIGxvZ2ljIHRvIFNlbGVjdGlvbkl0ZXJhdG9y
OjpuZXh0KCkKLSAgICAgICAgaWYgKCZjdXJyZW50UmVuZGVyZXItPnNlbGVjdGlvblJvb3QoKSAh
PSAmcm9vdCkKLSAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBjdXJyZW50UmVuZGVyZXIt
PnNldFNlbGVjdGlvblN0YXRlSWZOZWVkZWQoU2VsZWN0aW9uSW5zaWRlKTsKICAgICB9CiAKQEAg
LTkyNCw3ICs4OTgsNyBAQCB2b2lkIFJlbmRlclZpZXc6OmFwcGx5U3VidHJlZVNlbGVjdGlvbihj
b25zdCBTZWxlY3Rpb25TdWJ0cmVlUm9vdCYgcm9vdCwgU2VsZWN0aQogICAgIFNlbGVjdGVkQmxv
Y2tNYXAgbmV3U2VsZWN0ZWRCbG9ja3M7CiAgICAgc2VsZWN0aW9uSXRlcmF0b3IgPSBTZWxlY3Rp
b25JdGVyYXRvcihzZWxlY3Rpb25TdGFydCk7CiAgICAgZm9yIChSZW5kZXJPYmplY3QqIGN1cnJl
bnRSZW5kZXJlciA9IHNlbGVjdGlvblN0YXJ0OyBjdXJyZW50UmVuZGVyZXIgJiYgY3VycmVudFJl
bmRlcmVyICE9IHNlbGVjdGlvbkVuZDsgY3VycmVudFJlbmRlcmVyID0gc2VsZWN0aW9uSXRlcmF0
b3IubmV4dCgpKSB7Ci0gICAgICAgIGlmIChpc1ZhbGlkT2JqZWN0Rm9yTmV3U2VsZWN0aW9uKHJv
b3QsICpjdXJyZW50UmVuZGVyZXIpKSB7CisgICAgICAgIGlmIChpc1ZhbGlkT2JqZWN0Rm9yTmV3
U2VsZWN0aW9uKCp0aGlzLCAqY3VycmVudFJlbmRlcmVyKSkgewogICAgICAgICAgICAgc3RkOjp1
bmlxdWVfcHRyPFJlbmRlclNlbGVjdGlvbkluZm8+IHNlbGVjdGlvbkluZm8gPSBzdGQ6Om1ha2Vf
dW5pcXVlPFJlbmRlclNlbGVjdGlvbkluZm8+KCpjdXJyZW50UmVuZGVyZXIsIHRydWUpOwogCiAj
aWYgRU5BQkxFKFNFUlZJQ0VfQ09OVFJPTFMpCkBAIC05NjAsOCArOTM0LDggQEAgdm9pZCBSZW5k
ZXJWaWV3OjphcHBseVN1YnRyZWVTZWxlY3Rpb24oY29uc3QgU2VsZWN0aW9uU3VidHJlZVJvb3Qm
IHJvb3QsIFNlbGVjdGkKICAgICAgICAgUmVuZGVyU2VsZWN0aW9uSW5mbyogbmV3SW5mbyA9IG5l
d1NlbGVjdGVkT2JqZWN0cy5nZXQob2JqKTsKICAgICAgICAgUmVuZGVyU2VsZWN0aW9uSW5mbyog
b2xkSW5mbyA9IHNlbGVjdGVkT2JqZWN0SW5mby52YWx1ZS5nZXQoKTsKICAgICAgICAgaWYgKCFu
ZXdJbmZvIHx8IG9sZEluZm8tPnJlY3QoKSAhPSBuZXdJbmZvLT5yZWN0KCkgfHwgb2xkSW5mby0+
c3RhdGUoKSAhPSBuZXdJbmZvLT5zdGF0ZSgpCi0gICAgICAgICAgICB8fCAocm9vdC5zZWxlY3Rp
b25EYXRhKCkuc2VsZWN0aW9uU3RhcnQoKSA9PSBvYmogJiYgb2xkU2VsZWN0aW9uRGF0YS5zZWxl
Y3Rpb25TdGFydFBvcyAhPSByb290LnNlbGVjdGlvbkRhdGEoKS5zZWxlY3Rpb25TdGFydFBvcygp
KQotICAgICAgICAgICAgfHwgKHJvb3Quc2VsZWN0aW9uRGF0YSgpLnNlbGVjdGlvbkVuZCgpID09
IG9iaiAmJiBvbGRTZWxlY3Rpb25EYXRhLnNlbGVjdGlvbkVuZFBvcyAhPSByb290LnNlbGVjdGlv
bkRhdGEoKS5zZWxlY3Rpb25FbmRQb3MoKSkpIHsKKyAgICAgICAgICAgIHx8IChzZWxlY3Rpb25E
YXRhKCkuc2VsZWN0aW9uU3RhcnQoKSA9PSBvYmogJiYgb2xkU2VsZWN0aW9uRGF0YS5zZWxlY3Rp
b25TdGFydFBvcyAhPSBzZWxlY3Rpb25EYXRhKCkuc2VsZWN0aW9uU3RhcnRQb3MoKSkKKyAgICAg
ICAgICAgIHx8IChzZWxlY3Rpb25EYXRhKCkuc2VsZWN0aW9uRW5kKCkgPT0gb2JqICYmIG9sZFNl
bGVjdGlvbkRhdGEuc2VsZWN0aW9uRW5kUG9zICE9IHNlbGVjdGlvbkRhdGEoKS5zZWxlY3Rpb25F
bmRQb3MoKSkpIHsKICAgICAgICAgICAgIG9sZEluZm8tPnJlcGFpbnQoKTsKICAgICAgICAgICAg
IGlmIChuZXdJbmZvKSB7CiAgICAgICAgICAgICAgICAgbmV3SW5mby0+cmVwYWludCgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuaCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmgKaW5kZXggNGI2Yjg2ZGRiYTllMWZiZWE3Zjlj
YmM1ZTVjMTk5NjliZjNiYmVmZC4uZDY4ZDdhZWNkYTUyMmU1MTFjNDJlNDY0YzhhYTA4MGFiZGNj
NDExMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5oCkBAIC0zMTEsMTEgKzMx
MSwxMCBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBpc1Njcm9sbGFibGVPclJ1YmJlcmJhbmRhYmxl
Qm94KCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIGNsZWFyU3VidHJlZVNlbGVjdGlvbihj
b25zdCBTZWxlY3Rpb25TdWJ0cmVlUm9vdCYsIFNlbGVjdGlvblJlcGFpbnRNb2RlLCBPbGRTZWxl
Y3Rpb25EYXRhJikgY29uc3Q7Ci0gICAgdm9pZCB1cGRhdGVTZWxlY3Rpb25Gb3JTdWJ0cmVlcyhS
ZW5kZXJTdWJ0cmVlc01hcCYsIFNlbGVjdGlvblJlcGFpbnRNb2RlKTsKLSAgICB2b2lkIGFwcGx5
U3VidHJlZVNlbGVjdGlvbihjb25zdCBTZWxlY3Rpb25TdWJ0cmVlUm9vdCYsIFNlbGVjdGlvblJl
cGFpbnRNb2RlLCBjb25zdCBPbGRTZWxlY3Rpb25EYXRhJik7Ci0gICAgTGF5b3V0UmVjdCBzdWJ0
cmVlU2VsZWN0aW9uQm91bmRzKGNvbnN0IFNlbGVjdGlvblN1YnRyZWVSb290JiwgYm9vbCBjbGlw
VG9WaXNpYmxlQ29udGVudCA9IHRydWUpIGNvbnN0OwotICAgIHZvaWQgcmVwYWludFN1YnRyZWVT
ZWxlY3Rpb24oY29uc3QgU2VsZWN0aW9uU3VidHJlZVJvb3QmKSBjb25zdDsKKyAgICB2b2lkIGNs
ZWFyU3VidHJlZVNlbGVjdGlvbihTZWxlY3Rpb25SZXBhaW50TW9kZSBibG9ja1JlcGFpbnRNb2Rl
LCBPbGRTZWxlY3Rpb25EYXRhJikgY29uc3Q7CisgICAgdm9pZCBhcHBseVN1YnRyZWVTZWxlY3Rp
b24oU2VsZWN0aW9uUmVwYWludE1vZGUsIGNvbnN0IE9sZFNlbGVjdGlvbkRhdGEmKTsKKyAgICBM
YXlvdXRSZWN0IHN1YnRyZWVTZWxlY3Rpb25Cb3VuZHMoYm9vbCBjbGlwVG9WaXNpYmxlQ29udGVu
dCA9IHRydWUpIGNvbnN0OworICAgIHZvaWQgcmVwYWludFN1YnRyZWVTZWxlY3Rpb24oKSBjb25z
dDsKIAogcHJpdmF0ZToKICAgICBGcmFtZVZpZXcmIG1fZnJhbWVWaWV3OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NlbGVjdGlvblN1YnRyZWVSb290LmggYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvU2VsZWN0aW9uU3VidHJlZVJvb3QuaAppbmRleCBmNThiNmVkNTc1
YzA2NDM0YTQ0MmZmZWYzNjgxODVkZjVlZWJkYTA5Li5iOWM2OGE3MDg3YTI5MTQ5ZDJjMjE0ODc2
Zjk0NTU2YzI0OTRmOWI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2Vs
ZWN0aW9uU3VidHJlZVJvb3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2VsZWN0
aW9uU3VidHJlZVJvb3QuaApAQCAtODksOSArODksNiBAQCBwdWJsaWM6CiAgICAgICAgIHN0ZDo6
b3B0aW9uYWw8dW5zaWduZWQ+IG1fc2VsZWN0aW9uRW5kUG9zOwogICAgIH07CiAKLSAgICB0eXBl
ZGVmIEhhc2hNYXA8U2VsZWN0aW9uU3VidHJlZVJvb3QqLCBTZWxlY3Rpb25TdWJ0cmVlRGF0YT4g
UmVuZGVyU3VidHJlZXNNYXA7Ci0gICAgdHlwZWRlZiBIYXNoTWFwPGNvbnN0IFNlbGVjdGlvblN1
YnRyZWVSb290Kiwgc3RkOjp1bmlxdWVfcHRyPE9sZFNlbGVjdGlvbkRhdGE+PiBTdWJ0cmVlT2xk
U2VsZWN0aW9uRGF0YU1hcDsKLQogICAgIFNlbGVjdGlvblN1YnRyZWVSb290KCk7CiAKICAgICBT
ZWxlY3Rpb25TdWJ0cmVlRGF0YSYgc2VsZWN0aW9uRGF0YSgpIHsgcmV0dXJuIG1fc2VsZWN0aW9u
U3VidHJlZURhdGE7IH0K
</data>

          </attachment>
      

    </bug>

</bugzilla>