<?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>143963</bug_id>
          
          <creation_ts>2015-04-20 13:44:55 -0700</creation_ts>
          <short_desc>Track causes for forced layouts</short_desc>
          <delta_ts>2015-04-20 13:45:43 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>NEW</bug_status>
          <resolution></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="Simon Fraser (smfr)">simon.fraser</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>hyatt</cc>
    
    <cc>simon.fraser</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1086893</commentid>
    <comment_count>0</comment_count>
      <attachid>251186</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2015-04-20 13:44:55 -0700</bug_when>
    <thetext>Created attachment 251186
Patch

Attaching a debugging-only patch to track forced layouts.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>251186</attachid>
            <date>2015-04-20 13:44:55 -0700</date>
            <delta_ts>2015-04-20 13:45:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>forced-layout-patch.txt</filename>
            <type>text/plain</type>
            <size>53624</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0Zhc3RNYWxsb2MuY3BwIGIvU291cmNlL1dURi93
dGYvRmFzdE1hbGxvYy5jcHAKaW5kZXggMmU4MTg2Yy4uNTI5MTllMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dURi93dGYvRmFzdE1hbGxvYy5jcHAKKysrIGIvU291cmNlL1dURi93dGYvRmFzdE1hbGxv
Yy5jcHAKQEAgLTQ0LDYgKzQ0LDggQEAKICNpbmNsdWRlIDxtYWxsb2MvbWFsbG9jLmg+CiAjZW5k
aWYKIAorI2RlZmluZSBVU0VfU1lTVEVNX01BTExPQyAxCisKIG5hbWVzcGFjZSBXVEYgewogCiB2
b2lkKiBmYXN0WmVyb2VkTWFsbG9jKHNpemVfdCBuKSAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKaW5kZXggYzFmYTAwYi4uMTI1ZDY4
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJh
dGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJh
dGlvbi5jcHAKQEAgLTEzMjcsNiArMTMyNywxMCBAQCBQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZh
bHVlPiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpnZXRGb250U2l6ZUNTU1ZhbHVlUHJlZmVycgog
ICAgIGlmICghbV9ub2RlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAorICAgICsrcG90ZW50
aWFsRm9yY2VkTGF5b3V0Q291bnRlcnMuY29tcHV0ZWRTdHlsZUZvbnRTaXplOworICAgIGlmICht
X25vZGUtPmRvY3VtZW50KCkubmVlZHNVcGRhdGVMYXlvdXQoKSkKKyAgICAgICAgKytmb3JjZWRM
YXlvdXRDb3VudGVycy5jb21wdXRlZFN0eWxlRm9udFNpemU7CisKICAgICBtX25vZGUtPmRvY3Vt
ZW50KCkudXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKCk7CiAKICAgICBSZWZQ
dHI8UmVuZGVyU3R5bGU+IHN0eWxlID0gbV9ub2RlLT5jb21wdXRlZFN0eWxlKG1fcHNldWRvRWxl
bWVudFNwZWNpZmllcik7CkBAIC0xODA2LDYgKzE4MTAsMTEgQEAgUGFzc1JlZlB0cjxDU1NWYWx1
ZT4gQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6cHJvcGVydHlWYWx1ZShDU1NQcm9wZXJ0eUlEIHBy
b3BlcnQKIAogICAgICAgICBpZiAoZm9yY2VGdWxsTGF5b3V0KSB7CiAgICAgICAgICAgICBkb2N1
bWVudC51cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVldHMoKTsKKworICAgICAgICAg
ICAgKytwb3RlbnRpYWxGb3JjZWRMYXlvdXRDb3VudGVycy5jb21wdXRlZFN0eWxlOworICAgICAg
ICAgICAgaWYgKGRvY3VtZW50Lm5lZWRzVXBkYXRlTGF5b3V0KCkpCisgICAgICAgICAgICAgICAg
Kytmb3JjZWRMYXlvdXRDb3VudGVycy5jb21wdXRlZFN0eWxlOworCiAgICAgICAgICAgICBzdHls
ZWROb2RlID0gdGhpcy0+c3R5bGVkTm9kZSgpOwogICAgICAgICB9CiAgICAgfQpAQCAtMzI4Miw2
ICszMjkxLDEwIEBAIFN0cmluZyBDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246Oml0ZW0odW5z
aWduZWQgaSkgY29uc3QKIGJvb2wgQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6cHJvcGVydHlNYXRj
aGVzKENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCwgY29uc3QgQ1NTVmFsdWUqIHZhbHVlKSBjb25z
dAogewogICAgIGlmIChwcm9wZXJ0eUlEID09IENTU1Byb3BlcnR5Rm9udFNpemUgJiYgaXM8Q1NT
UHJpbWl0aXZlVmFsdWU+KCp2YWx1ZSkgJiYgbV9ub2RlKSB7CisgICAgICAgICsrcG90ZW50aWFs
Rm9yY2VkTGF5b3V0Q291bnRlcnMuY29tcHV0ZWRTdHlsZUZvbnRTaXplOworICAgICAgICBpZiAo
bV9ub2RlLT5kb2N1bWVudCgpLm5lZWRzVXBkYXRlTGF5b3V0KCkpCisgICAgICAgICAgICArK2Zv
cmNlZExheW91dENvdW50ZXJzLmNvbXB1dGVkU3R5bGVGb250U2l6ZTsKKwogICAgICAgICBtX25v
ZGUtPmRvY3VtZW50KCkudXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKCk7CiAg
ICAgICAgIGlmIChSZW5kZXJTdHlsZSogc3R5bGUgPSBtX25vZGUtPmNvbXB1dGVkU3R5bGUobV9w
c2V1ZG9FbGVtZW50U3BlY2lmaWVyKSkgewogICAgICAgICAgICAgaWYgKENTU1ZhbHVlSUQgc2l6
ZUlkZW50aWZpZXIgPSBzdHlsZS0+Zm9udERlc2NyaXB0aW9uKCkua2V5d29yZFNpemVBc0lkZW50
aWZpZXIoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggMDIzMGE1YS4uZjI2ZDRmYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC00MDYsNiArNDA2LDEwIEBAIEhhc2hTZXQ8RG9j
dW1lbnQqPiYgRG9jdW1lbnQ6OmFsbERvY3VtZW50cygpCiAgICAgcmV0dXJuIGRvY3VtZW50czsK
IH0KIAorRm9yY2VkTGF5b3V0Q291bnRlcnMgcG90ZW50aWFsRm9yY2VkTGF5b3V0Q291bnRlcnM7
CitGb3JjZWRMYXlvdXRDb3VudGVycyBmb3JjZWRMYXlvdXRDb3VudGVyczsKK2Jvb2wgaW5Gb3Jj
ZWRMYXlvdXQ7CisKIERvY3VtZW50OjpEb2N1bWVudChGcmFtZSogZnJhbWUsIGNvbnN0IFVSTCYg
dXJsLCB1bnNpZ25lZCBkb2N1bWVudENsYXNzZXMsIHVuc2lnbmVkIGNvbnN0cnVjdGlvbkZsYWdz
KQogICAgIDogQ29udGFpbmVyTm9kZSgqdGhpcywgQ3JlYXRlRG9jdW1lbnQpCiAgICAgLCBUcmVl
U2NvcGUoKnRoaXMpCkBAIC0xODIzLDcgKzE4MjcsMTAgQEAgdm9pZCBEb2N1bWVudDo6dXBkYXRl
U3R5bGVJZk5lZWRlZCgpCiAgICAgcmVjYWxjU3R5bGUoU3R5bGU6Ok5vQ2hhbmdlKTsKIH0KIAot
dm9pZCBEb2N1bWVudDo6dXBkYXRlTGF5b3V0KCkKK2NvbnN0IGludCBtYXhMZXZlbCA9IDUwOwor
c3RhdGljIGludCBsZXZlbENvdW50W21heExldmVsXTsKKwordm9pZCBEb2N1bWVudDo6dXBkYXRl
TGF5b3V0KGludCBsZXZlbCkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCkBAIC0x
ODM3LDE1ICsxODQ0LDkyIEBAIHZvaWQgRG9jdW1lbnQ6OnVwZGF0ZUxheW91dCgpCiAgICAgUmVu
ZGVyVmlldzo6UmVwYWludFJlZ2lvbkFjY3VtdWxhdG9yIHJlcGFpbnRSZWdpb25BY2N1bXVsYXRv
cihyZW5kZXJWaWV3KCkpOwogCiAgICAgaWYgKEhUTUxGcmFtZU93bmVyRWxlbWVudCogb3duZXIg
PSBvd25lckVsZW1lbnQoKSkKLSAgICAgICAgb3duZXItPmRvY3VtZW50KCkudXBkYXRlTGF5b3V0
KCk7CisgICAgICAgIG93bmVyLT5kb2N1bWVudCgpLnVwZGF0ZUxheW91dChsZXZlbCArIDEpOwog
CiAgICAgdXBkYXRlU3R5bGVJZk5lZWRlZCgpOwogCiAgICAgU3RhY2tTdGF0czo6TGF5b3V0Q2hl
Y2tQb2ludCBsYXlvdXRDaGVja1BvaW50OwogCi0gICAgLy8gT25seSBkbyBhIGxheW91dCBpZiBj
aGFuZ2VzIGhhdmUgb2NjdXJyZWQgdGhhdCBtYWtlIGl0IG5lY2Vzc2FyeS4gICAgICAKLSAgICBp
ZiAoZnJhbWVWaWV3ICYmIHJlbmRlclZpZXcoKSAmJiAoZnJhbWVWaWV3LT5sYXlvdXRQZW5kaW5n
KCkgfHwgcmVuZGVyVmlldygpLT5uZWVkc0xheW91dCgpKSkKKyAgICAvLyBPbmx5IGRvIGEgbGF5
b3V0IGlmIGNoYW5nZXMgaGF2ZSBvY2N1cnJlZCB0aGF0IG1ha2UgaXQgbmVjZXNzYXJ5LgorICAg
IGlmIChmcmFtZVZpZXcgJiYgcmVuZGVyVmlldygpICYmIChmcmFtZVZpZXctPmxheW91dFBlbmRp
bmcoKSB8fCByZW5kZXJWaWV3KCktPm5lZWRzTGF5b3V0KCkpKSB7CisgICAgICAgICsrbGV2ZWxD
b3VudFtzdGQ6Om1pbihsZXZlbCwgbWF4TGV2ZWwgLSAxKV07CiAgICAgICAgIGZyYW1lVmlldy0+
bGF5b3V0KCk7CisgICAgfQorfQorCisvLyBGSVhNRTogdGhpcyBkb2Vzbid0IGNoZWNrIHN1YmZy
YW1lcy4KK2Jvb2wgRG9jdW1lbnQ6Om5lZWRzVXBkYXRlTGF5b3V0KCkKK3sKKyAgICBpZiAobmVl
ZHNTdHlsZVJlY2FsYygpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIEZyYW1lVmlldyog
ZnJhbWVWaWV3ID0gdmlldygpOworICAgIGlmIChmcmFtZVZpZXcgJiYgcmVuZGVyVmlldygpICYm
IChmcmFtZVZpZXctPmxheW91dFBlbmRpbmcoKSB8fCByZW5kZXJWaWV3KCktPm5lZWRzTGF5b3V0
KCkpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIHJldHVybiBmYWxzZTsKK30KKworc3Rh
dGljIHZvaWQgZHVtcEZvcmNlZExheW91dHMoKQoreworcmV0dXJuOworICAgIHN0YXRpYyBpbnQg
Y2FsbENvdW50OworICAgICsrY2FsbENvdW50OworICAgIGlmIChjYWxsQ291bnQgJiAxMDAwMCkK
KyAgICAgICAgcmV0dXJuOworCisgICAgV1RGTG9nQWx3YXlzKCJcbkZvcmNlZCBMYXlvdXRzOlxu
Iik7CisgICAgV1RGTG9nQWx3YXlzKCIgb2Zmc2V0TGVmdDogJWQgbGF5b3V0cyBpbiAlZCBjYWxs
c1xuIiwgZm9yY2VkTGF5b3V0Q291bnRlcnMub2Zmc2V0TGVmdCwgcG90ZW50aWFsRm9yY2VkTGF5
b3V0Q291bnRlcnMub2Zmc2V0TGVmdCk7CisgICAgV1RGTG9nQWx3YXlzKCIgb2Zmc2V0VG9wOiAl
ZCBsYXlvdXRzIGluICVkIGNhbGxzXG4iLCBmb3JjZWRMYXlvdXRDb3VudGVycy5vZmZzZXRUb3As
IHBvdGVudGlhbEZvcmNlZExheW91dENvdW50ZXJzLm9mZnNldFRvcCk7CisgICAgV1RGTG9nQWx3
YXlzKCIgb2Zmc2V0V2lkdGg6ICVkIGxheW91dHMgaW4gJWQgY2FsbHNcbiIsIGZvcmNlZExheW91
dENvdW50ZXJzLm9mZnNldFdpZHRoLCBwb3RlbnRpYWxGb3JjZWRMYXlvdXRDb3VudGVycy5vZmZz
ZXRXaWR0aCk7CisgICAgV1RGTG9nQWx3YXlzKCIgb2Zmc2V0SGVpZ2h0OiAlZCBsYXlvdXRzIGlu
ICVkIGNhbGxzXG4iLCBmb3JjZWRMYXlvdXRDb3VudGVycy5vZmZzZXRIZWlnaHQsIHBvdGVudGlh
bEZvcmNlZExheW91dENvdW50ZXJzLm9mZnNldEhlaWdodCk7CisgICAgV1RGTG9nQWx3YXlzKCIg
b2Zmc2V0UGFyZW50OiAlZCBsYXlvdXRzIGluICVkIGNhbGxzXG4iLCBmb3JjZWRMYXlvdXRDb3Vu
dGVycy5vZmZzZXRQYXJlbnQsIHBvdGVudGlhbEZvcmNlZExheW91dENvdW50ZXJzLm9mZnNldFBh
cmVudCk7CisgICAgV1RGTG9nQWx3YXlzKCIgY2xpZW50TGVmdDogJWQgbGF5b3V0cyBpbiAlZCBj
YWxsc1xuIiwgZm9yY2VkTGF5b3V0Q291bnRlcnMuY2xpZW50TGVmdCwgcG90ZW50aWFsRm9yY2Vk
TGF5b3V0Q291bnRlcnMuY2xpZW50TGVmdCk7CisgICAgV1RGTG9nQWx3YXlzKCIgY2xpZW50VG9w
OiAlZCBsYXlvdXRzIGluICVkIGNhbGxzXG4iLCBmb3JjZWRMYXlvdXRDb3VudGVycy5jbGllbnRU
b3AsIHBvdGVudGlhbEZvcmNlZExheW91dENvdW50ZXJzLmNsaWVudFRvcCk7CisgICAgV1RGTG9n
QWx3YXlzKCIgY2xpZW50V2lkdGg6ICVkIGxheW91dHMgaW4gJWQgY2FsbHNcbiIsIGZvcmNlZExh
eW91dENvdW50ZXJzLmNsaWVudFdpZHRoLCBwb3RlbnRpYWxGb3JjZWRMYXlvdXRDb3VudGVycy5j
bGllbnRXaWR0aCk7CisgICAgV1RGTG9nQWx3YXlzKCIgY2xpZW50SGVpZ2h0OiAlZCBsYXlvdXRz
IGluICVkIGNhbGxzXG4iLCBmb3JjZWRMYXlvdXRDb3VudGVycy5jbGllbnRIZWlnaHQsIHBvdGVu
dGlhbEZvcmNlZExheW91dENvdW50ZXJzLmNsaWVudEhlaWdodCk7CisgICAgV1RGTG9nQWx3YXlz
KCIgc2Nyb2xsTGVmdDogJWQgbGF5b3V0cyBpbiAlZCBjYWxsc1xuIiwgZm9yY2VkTGF5b3V0Q291
bnRlcnMuc2Nyb2xsTGVmdCwgcG90ZW50aWFsRm9yY2VkTGF5b3V0Q291bnRlcnMuc2Nyb2xsTGVm
dCk7CisgICAgV1RGTG9nQWx3YXlzKCIgc2Nyb2xsVG9wOiAlZCBsYXlvdXRzIGluICVkIGNhbGxz
XG4iLCBmb3JjZWRMYXlvdXRDb3VudGVycy5zY3JvbGxUb3AsIHBvdGVudGlhbEZvcmNlZExheW91
dENvdW50ZXJzLnNjcm9sbFRvcCk7CisgICAgV1RGTG9nQWx3YXlzKCIgc2Nyb2xsV2lkdGg6ICVk
IGxheW91dHMgaW4gJWQgY2FsbHNcbiIsIGZvcmNlZExheW91dENvdW50ZXJzLnNjcm9sbFdpZHRo
LCBwb3RlbnRpYWxGb3JjZWRMYXlvdXRDb3VudGVycy5zY3JvbGxXaWR0aCk7CisgICAgV1RGTG9n
QWx3YXlzKCIgc2Nyb2xsSGVpZ2h0OiAlZCBsYXlvdXRzIGluICVkIGNhbGxzXG4iLCBmb3JjZWRM
YXlvdXRDb3VudGVycy5zY3JvbGxIZWlnaHQsIHBvdGVudGlhbEZvcmNlZExheW91dENvdW50ZXJz
LnNjcm9sbEhlaWdodCk7CisgICAgV1RGTG9nQWx3YXlzKCIgYm9keVNjcm9sbExlZnQ6ICVkIGxh
eW91dHMgaW4gJWQgY2FsbHNcbiIsIGZvcmNlZExheW91dENvdW50ZXJzLmJvZHlTY3JvbGxMZWZ0
LCBwb3RlbnRpYWxGb3JjZWRMYXlvdXRDb3VudGVycy5ib2R5U2Nyb2xsTGVmdCk7CisgICAgV1RG
TG9nQWx3YXlzKCIgYm9keVNjcm9sbFRvcDogJWQgbGF5b3V0cyBpbiAlZCBjYWxsc1xuIiwgZm9y
Y2VkTGF5b3V0Q291bnRlcnMuYm9keVNjcm9sbFRvcCwgcG90ZW50aWFsRm9yY2VkTGF5b3V0Q291
bnRlcnMuYm9keVNjcm9sbFRvcCk7CisgICAgV1RGTG9nQWx3YXlzKCIgYm9keVNjcm9sbEhlaWdo
dDogJWQgbGF5b3V0cyBpbiAlZCBjYWxsc1xuIiwgZm9yY2VkTGF5b3V0Q291bnRlcnMuYm9keVNj
cm9sbEhlaWdodCwgcG90ZW50aWFsRm9yY2VkTGF5b3V0Q291bnRlcnMuYm9keVNjcm9sbEhlaWdo
dCk7CisgICAgV1RGTG9nQWx3YXlzKCIgYm9keVNjcm9sbFdpZHRoOiAlZCBsYXlvdXRzIGluICVk
IGNhbGxzXG4iLCBmb3JjZWRMYXlvdXRDb3VudGVycy5ib2R5U2Nyb2xsV2lkdGgsIHBvdGVudGlh
bEZvcmNlZExheW91dENvdW50ZXJzLmJvZHlTY3JvbGxXaWR0aCk7CisgICAgV1RGTG9nQWx3YXlz
KCIgZG9jdW1lbnRTY3JvbGxYOiAlZCBsYXlvdXRzIGluICVkIGNhbGxzXG4iLCBmb3JjZWRMYXlv
dXRDb3VudGVycy5kb2N1bWVudFNjcm9sbFgsIHBvdGVudGlhbEZvcmNlZExheW91dENvdW50ZXJz
LmRvY3VtZW50U2Nyb2xsWCk7CisgICAgV1RGTG9nQWx3YXlzKCIgZG9jdW1lbnRTY3JvbGxZOiAl
ZCBsYXlvdXRzIGluICVkIGNhbGxzXG4iLCBmb3JjZWRMYXlvdXRDb3VudGVycy5kb2N1bWVudFNj
cm9sbFksIHBvdGVudGlhbEZvcmNlZExheW91dENvdW50ZXJzLmRvY3VtZW50U2Nyb2xsWSk7Cisg
ICAgV1RGTG9nQWx3YXlzKCIgd2luZG93U2Nyb2xsWDogJWQgbGF5b3V0cyBpbiAlZCBjYWxsc1xu
IiwgZm9yY2VkTGF5b3V0Q291bnRlcnMud2luZG93U2Nyb2xsWCwgcG90ZW50aWFsRm9yY2VkTGF5
b3V0Q291bnRlcnMud2luZG93U2Nyb2xsWCk7CisgICAgV1RGTG9nQWx3YXlzKCIgd2luZG93U2Ny
b2xsWTogJWQgbGF5b3V0cyBpbiAlZCBjYWxsc1xuIiwgZm9yY2VkTGF5b3V0Q291bnRlcnMud2lu
ZG93U2Nyb2xsWSwgcG90ZW50aWFsRm9yY2VkTGF5b3V0Q291bnRlcnMud2luZG93U2Nyb2xsWSk7
CisgICAgV1RGTG9nQWx3YXlzKCIgY2xpZW50UmVjdHM6ICVkIGxheW91dHMgaW4gJWQgY2FsbHNc
biIsIGZvcmNlZExheW91dENvdW50ZXJzLmNsaWVudFJlY3RzLCBwb3RlbnRpYWxGb3JjZWRMYXlv
dXRDb3VudGVycy5jbGllbnRSZWN0cyk7CisgICAgV1RGTG9nQWx3YXlzKCIgYm91bmRpbmdDbGll
bnRSZWN0OiAlZCBsYXlvdXRzIGluICVkIGNhbGxzXG4iLCBmb3JjZWRMYXlvdXRDb3VudGVycy5i
b3VuZGluZ0NsaWVudFJlY3QsIHBvdGVudGlhbEZvcmNlZExheW91dENvdW50ZXJzLmJvdW5kaW5n
Q2xpZW50UmVjdCk7CisgICAgV1RGTG9nQWx3YXlzKCIgaW5uZXJUZXh0OiAlZCBsYXlvdXRzIGlu
ICVkIGNhbGxzXG4iLCBmb3JjZWRMYXlvdXRDb3VudGVycy5pbm5lclRleHQsIHBvdGVudGlhbEZv
cmNlZExheW91dENvdW50ZXJzLmlubmVyVGV4dCk7CisgICAgV1RGTG9nQWx3YXlzKCIgZm9jdXM6
ICVkIGxheW91dHMgaW4gJWQgY2FsbHNcbiIsIGZvcmNlZExheW91dENvdW50ZXJzLmZvY3VzLCBw
b3RlbnRpYWxGb3JjZWRMYXlvdXRDb3VudGVycy5mb2N1cyk7CisgICAgV1RGTG9nQWx3YXlzKCIg
aW1hZ2VXaWR0aDogJWQgbGF5b3V0cyBpbiAlZCBjYWxsc1xuIiwgZm9yY2VkTGF5b3V0Q291bnRl
cnMuaW1hZ2VXaWR0aCwgcG90ZW50aWFsRm9yY2VkTGF5b3V0Q291bnRlcnMuaW1hZ2VXaWR0aCk7
CisgICAgV1RGTG9nQWx3YXlzKCIgaW1hZ2VIZWlnaHQ6ICVkIGxheW91dHMgaW4gJWQgY2FsbHNc
biIsIGZvcmNlZExheW91dENvdW50ZXJzLmltYWdlSGVpZ2h0LCBwb3RlbnRpYWxGb3JjZWRMYXlv
dXRDb3VudGVycy5pbWFnZUhlaWdodCk7CisgICAgV1RGTG9nQWx3YXlzKCIgaW1hZ2VYOiAlZCBs
YXlvdXRzIGluICVkIGNhbGxzXG4iLCBmb3JjZWRMYXlvdXRDb3VudGVycy5pbWFnZVgsIHBvdGVu
dGlhbEZvcmNlZExheW91dENvdW50ZXJzLmltYWdlWCk7CisgICAgV1RGTG9nQWx3YXlzKCIgaW1h
Z2VZOiAlZCBsYXlvdXRzIGluICVkIGNhbGxzXG4iLCBmb3JjZWRMYXlvdXRDb3VudGVycy5pbWFn
ZVksIHBvdGVudGlhbEZvcmNlZExheW91dENvdW50ZXJzLmltYWdlWSk7CisgICAgV1RGTG9nQWx3
YXlzKCIgZnJhbWVXaWR0aDogJWQgbGF5b3V0cyBpbiAlZCBjYWxsc1xuIiwgZm9yY2VkTGF5b3V0
Q291bnRlcnMuZnJhbWVXaWR0aCwgcG90ZW50aWFsRm9yY2VkTGF5b3V0Q291bnRlcnMuZnJhbWVX
aWR0aCk7CisgICAgV1RGTG9nQWx3YXlzKCIgZnJhbWVIZWlnaHQ6ICVkIGxheW91dHMgaW4gJWQg
Y2FsbHNcbiIsIGZvcmNlZExheW91dENvdW50ZXJzLmZyYW1lSGVpZ2h0LCBwb3RlbnRpYWxGb3Jj
ZWRMYXlvdXRDb3VudGVycy5mcmFtZUhlaWdodCk7CisgICAgV1RGTG9nQWx3YXlzKCIgZG9jdW1l
bnRXaWR0aDogJWQgbGF5b3V0cyBpbiAlZCBjYWxsc1xuIiwgZm9yY2VkTGF5b3V0Q291bnRlcnMu
ZG9jdW1lbnRXaWR0aCwgcG90ZW50aWFsRm9yY2VkTGF5b3V0Q291bnRlcnMuZG9jdW1lbnRXaWR0
aCk7CisgICAgV1RGTG9nQWx3YXlzKCIgZG9jdW1lbnRIZWlnaHQ6ICVkIGxheW91dHMgaW4gJWQg
Y2FsbHNcbiIsIGZvcmNlZExheW91dENvdW50ZXJzLmRvY3VtZW50SGVpZ2h0LCBwb3RlbnRpYWxG
b3JjZWRMYXlvdXRDb3VudGVycy5kb2N1bWVudEhlaWdodCk7CisgICAgV1RGTG9nQWx3YXlzKCIg
Y29tcHV0ZWRTdHlsZTogJWQgbGF5b3V0cyBpbiAlZCBjYWxsc1xuIiwgZm9yY2VkTGF5b3V0Q291
bnRlcnMuY29tcHV0ZWRTdHlsZSwgcG90ZW50aWFsRm9yY2VkTGF5b3V0Q291bnRlcnMuY29tcHV0
ZWRTdHlsZSk7CisgICAgV1RGTG9nQWx3YXlzKCIgY29tcHV0ZWRTdHlsZUZvbnRTaXplOiAlZCBs
YXlvdXRzIGluICVkIGNhbGxzXG4iLCBmb3JjZWRMYXlvdXRDb3VudGVycy5jb21wdXRlZFN0eWxl
Rm9udFNpemUsIHBvdGVudGlhbEZvcmNlZExheW91dENvdW50ZXJzLmNvbXB1dGVkU3R5bGVGb250
U2l6ZSk7CisgICAgV1RGTG9nQWx3YXlzKCIgcHJvZ3JhbW1hdGljU2Nyb2xsOiAlZCBsYXlvdXRz
IGluICVkIGNhbGxzXG4iLCBmb3JjZWRMYXlvdXRDb3VudGVycy5wcm9ncmFtbWF0aWNTY3JvbGws
IHBvdGVudGlhbEZvcmNlZExheW91dENvdW50ZXJzLnByb2dyYW1tYXRpY1Njcm9sbCk7CisgICAg
V1RGTG9nQWx3YXlzKCIgZXZlbnRIYW5kbGluZzogJWQgbGF5b3V0cyBpbiAlZCBjYWxsc1xuIiwg
Zm9yY2VkTGF5b3V0Q291bnRlcnMuZXZlbnRIYW5kbGluZywgcG90ZW50aWFsRm9yY2VkTGF5b3V0
Q291bnRlcnMuZXZlbnRIYW5kbGluZyk7CisgICAgV1RGTG9nQWx3YXlzKCIgY2FyZXRVcGRhdGU6
ICVkIGxheW91dHMgaW4gJWQgY2FsbHNcbiIsIGZvcmNlZExheW91dENvdW50ZXJzLmNhcmV0VXBk
YXRlLCBwb3RlbnRpYWxGb3JjZWRMYXlvdXRDb3VudGVycy5jYXJldFVwZGF0ZSk7CisgICAgV1RG
TG9nQWx3YXlzKCIgcmVuZGVyV2lkZ2V0TG9hZGluZ1BsdWdpbjogJWQgbGF5b3V0cyBpbiAlZCBj
YWxsc1xuIiwgZm9yY2VkTGF5b3V0Q291bnRlcnMucmVuZGVyV2lkZ2V0TG9hZGluZ1BsdWdpbiwg
cG90ZW50aWFsRm9yY2VkTGF5b3V0Q291bnRlcnMucmVuZGVyV2lkZ2V0TG9hZGluZ1BsdWdpbik7
CisgICAgV1RGTG9nQWx3YXlzKCIgdmlzaWJsZVBvc2l0aW9uOiAlZCBsYXlvdXRzIGluICVkIGNh
bGxzXG4iLCBmb3JjZWRMYXlvdXRDb3VudGVycy52aXNpYmxlUG9zaXRpb24sIHBvdGVudGlhbEZv
cmNlZExheW91dENvdW50ZXJzLnZpc2libGVQb3NpdGlvbik7CisgICAgV1RGTG9nQWx3YXlzKCIg
c3ZnQm91bmRzOiAlZCBsYXlvdXRzIGluICVkIGNhbGxzXG4iLCBmb3JjZWRMYXlvdXRDb3VudGVy
cy5zdmdCb3VuZHMsIHBvdGVudGlhbEZvcmNlZExheW91dENvdW50ZXJzLnN2Z0JvdW5kcyk7Cisg
ICAgV1RGTG9nQWx3YXlzKCIgc3ZnVGV4dDogJWQgbGF5b3V0cyBpbiAlZCBjYWxsc1xuIiwgZm9y
Y2VkTGF5b3V0Q291bnRlcnMuc3ZnVGV4dCwgcG90ZW50aWFsRm9yY2VkTGF5b3V0Q291bnRlcnMu
c3ZnVGV4dCk7CisgICAgV1RGTG9nQWx3YXlzKCIgdGV4dEl0ZXJhdG9yOiAlZCBsYXlvdXRzIGlu
ICVkIGNhbGxzXG4iLCBmb3JjZWRMYXlvdXRDb3VudGVycy50ZXh0SXRlcmF0b3IsIHBvdGVudGlh
bEZvcmNlZExheW91dENvdW50ZXJzLnRleHRJdGVyYXRvcik7CisKKworICAgIFdURkxvZ0Fsd2F5
cygiXG5Gb3JjZWQgbGF5b3V0IGxldmVsczpcbiIpOworICAgIGZvciAoaW50IGkgPSAwOyBpIDwg
bWF4TGV2ZWw7ICsraSkKKyAgICAgICAgV1RGTG9nQWx3YXlzKCIlZCAlZFxuIiwgaSwgbGV2ZWxD
b3VudFtpXSk7CisKKyAgICBXVEZMb2dBbHdheXMoIiVkIGZvcmNlZCBjb21wb3NpdGluZyBoaWVy
YXJjaHkgdXBkYXRlc1xuIiwgZm9yY2VkSGllcmFyY2h5VXBkYXRlcyk7CisgICAgV1RGTG9nQWx3
YXlzKCIlZCBmb3JjZWQgY29tcG9zaXRpbmcgZ2VvbWV0cnkgdXBkYXRlc1xuIiwgZm9yY2VkR2Vv
bWV0cnlVcGRhdGVzKTsKIH0KIAogLy8gRklYTUU6IFRoaXMgaXMgYSBiYWQgaWRlYSBhbmQgbmVl
ZHMgdG8gYmUgcmVtb3ZlZCBldmVudHVhbGx5LgpAQCAtMTg1Niw2ICsxOTQwLDggQEAgdm9pZCBE
b2N1bWVudDo6dXBkYXRlTGF5b3V0KCkKIC8vIHRvIGluc3RlYWQgc3VzcGVuZCBKYXZhU2NyaXB0
IGV4ZWN1dGlvbi4KIHZvaWQgRG9jdW1lbnQ6OnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHls
ZXNoZWV0cyhEb2N1bWVudDo6UnVuUG9zdExheW91dFRhc2tzIHJ1blBvc3RMYXlvdXRUYXNrcykK
IHsKKyAgICBUZW1wb3JhcnlDaGFuZ2U8Ym9vbD4gaW5Gb3JjZWRMYXlvdXRDaGFuZ2UoaW5Gb3Jj
ZWRMYXlvdXQsIHRydWUpOworCiAgICAgYm9vbCBvbGRJZ25vcmUgPSBtX2lnbm9yZVBlbmRpbmdT
dHlsZXNoZWV0czsKIAogICAgIGlmICghaGF2ZVN0eWxlc2hlZXRzTG9hZGVkKCkpIHsKQEAgLTE4
ODMsNiArMTk2OSw4IEBAIHZvaWQgRG9jdW1lbnQ6OnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdT
dHlsZXNoZWV0cyhEb2N1bWVudDo6UnVuUG9zdExheW91dFRhc2tzCiAgICAgICAgIHZpZXcoKS0+
Zmx1c2hBbnlQZW5kaW5nUG9zdExheW91dFRhc2tzKCk7CiAKICAgICBtX2lnbm9yZVBlbmRpbmdT
dHlsZXNoZWV0cyA9IG9sZElnbm9yZTsKKworICAgIGR1bXBGb3JjZWRMYXlvdXRzKCk7CiB9CiAK
IFJlZjxSZW5kZXJTdHlsZT4gRG9jdW1lbnQ6OnN0eWxlRm9yRWxlbWVudElnbm9yaW5nUGVuZGlu
Z1N0eWxlc2hlZXRzKEVsZW1lbnQqIGVsZW1lbnQpCkBAIC0xODk2LDcgKzE5ODQsNyBAQCBSZWY8
UmVuZGVyU3R5bGU+IERvY3VtZW50OjpzdHlsZUZvckVsZW1lbnRJZ25vcmluZ1BlbmRpbmdTdHls
ZXNoZWV0cyhFbGVtZW50KiBlbAogICAgIHJldHVybiBlbnN1cmVTdHlsZVJlc29sdmVyKCkuc3R5
bGVGb3JFbGVtZW50KGVsZW1lbnQsIGVsZW1lbnQtPnBhcmVudE5vZGUoKSA/IGVsZW1lbnQtPnBh
cmVudE5vZGUoKS0+Y29tcHV0ZWRTdHlsZSgpIDogbnVsbHB0cik7CiB9CiAKLWJvb2wgRG9jdW1l
bnQ6OnVwZGF0ZUxheW91dElmRGltZW5zaW9uc091dE9mRGF0ZShFbGVtZW50KiBlbGVtZW50LCBE
aW1lbnNpb25zQ2hlY2sgZGltZW5zaW9uc0NoZWNrKQorYm9vbCBEb2N1bWVudDo6dXBkYXRlTGF5
b3V0SWZEaW1lbnNpb25zT3V0T2ZEYXRlKEVsZW1lbnQqIGVsZW1lbnQsIGludCBsZXZlbCwgRGlt
ZW5zaW9uc0NoZWNrIGRpbWVuc2lvbnNDaGVjaykKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFk
KCkpOwogICAgIApAQCAtMTkyMCw3ICsyMDA4LDcgQEAgYm9vbCBEb2N1bWVudDo6dXBkYXRlTGF5
b3V0SWZEaW1lbnNpb25zT3V0T2ZEYXRlKEVsZW1lbnQqIGVsZW1lbnQsIERpbWVuc2lvbnNDaGUK
ICAgICAvLyBsYXlvdXQuCiAgICAgYm9vbCByZXF1aXJlRnVsbExheW91dCA9IGZhbHNlOwogICAg
IGlmIChIVE1MRnJhbWVPd25lckVsZW1lbnQqIG93bmVyID0gb3duZXJFbGVtZW50KCkpIHsKLSAg
ICAgICAgaWYgKG93bmVyLT5kb2N1bWVudCgpLnVwZGF0ZUxheW91dElmRGltZW5zaW9uc091dE9m
RGF0ZShvd25lcikpCisgICAgICAgIGlmIChvd25lci0+ZG9jdW1lbnQoKS51cGRhdGVMYXlvdXRJ
ZkRpbWVuc2lvbnNPdXRPZkRhdGUob3duZXIsIGxldmVsICsgMSkpCiAgICAgICAgICAgICByZXF1
aXJlRnVsbExheW91dCA9IHRydWU7CiAgICAgfQogICAgIApAQCAtMTk4NiwxMCArMjA3NCwyNyBA
QCBib29sIERvY3VtZW50Ojp1cGRhdGVMYXlvdXRJZkRpbWVuc2lvbnNPdXRPZkRhdGUoRWxlbWVu
dCogZWxlbWVudCwgRGltZW5zaW9uc0NoZQogICAgIAogICAgIFN0YWNrU3RhdHM6OkxheW91dENo
ZWNrUG9pbnQgbGF5b3V0Q2hlY2tQb2ludDsKIAorICAgIHN0YXRpYyBpbnQgcmVxdWVzdHNXaGVu
TmVlZGluZ0xheW91dDsKKyAgICBzdGF0aWMgaW50IHRvdGFsUmVxdWVzdHM7CisgICAgc3RhdGlj
IGludCBhdm9pZGVkTGF5b3V0czsKKworICAgIGJvb2wgbmVlZExheW91dCA9IHJlbmRlclZpZXco
KSAmJiAoZnJhbWVWaWV3LT5sYXlvdXRQZW5kaW5nKCkgfHwgcmVuZGVyVmlldygpLT5uZWVkc0xh
eW91dCgpKTsKKworICAgICsrdG90YWxSZXF1ZXN0czsKKyAgICBpZiAobmVlZExheW91dCkKKyAg
ICAgICAgKytyZXF1ZXN0c1doZW5OZWVkaW5nTGF5b3V0OworICAgIGlmIChuZWVkTGF5b3V0ICYm
ICFyZXF1aXJlRnVsbExheW91dCkKKyAgICAgICAgKythdm9pZGVkTGF5b3V0czsKKworICAgIGlm
ICghKHRvdGFsUmVxdWVzdHMgJSAxMDApKQorICAgICAgICBXVEZMb2dBbHdheXMoIkF2b2lkZWQg
JWQgb2YgJWQgbGF5b3V0cyBpbiAlZCByZXF1ZXN0cyAoc2F2ZWQgJS4yZiUlKVxuIiwgYXZvaWRl
ZExheW91dHMsIHJlcXVlc3RzV2hlbk5lZWRpbmdMYXlvdXQsIHRvdGFsUmVxdWVzdHMsICgoZG91
YmxlKWF2b2lkZWRMYXlvdXRzIC8gcmVxdWVzdHNXaGVuTmVlZGluZ0xheW91dCkgKiAxMDAuMCk7
CisKICAgICAvLyBPbmx5IGRvIGEgbGF5b3V0IGlmIGNoYW5nZXMgaGF2ZSBvY2N1cnJlZCB0aGF0
IG1ha2UgaXQgbmVjZXNzYXJ5LiAgICAgIAotICAgIGlmIChyZXF1aXJlRnVsbExheW91dCAmJiBm
cmFtZVZpZXcgJiYgcmVuZGVyVmlldygpICYmIChmcmFtZVZpZXctPmxheW91dFBlbmRpbmcoKSB8
fCByZW5kZXJWaWV3KCktPm5lZWRzTGF5b3V0KCkpKQorICAgIGlmIChyZXF1aXJlRnVsbExheW91
dCAmJiBmcmFtZVZpZXcgJiYgcmVuZGVyVmlldygpICYmIChmcmFtZVZpZXctPmxheW91dFBlbmRp
bmcoKSB8fCByZW5kZXJWaWV3KCktPm5lZWRzTGF5b3V0KCkpKSB7CisgICAgICAgICsrbGV2ZWxD
b3VudFtzdGQ6Om1pbihsZXZlbCwgbWF4TGV2ZWwgLSAxKV07CiAgICAgICAgIGZyYW1lVmlldy0+
bGF5b3V0KCk7Ci0gICAgCisgICAgfQorCiAgICAgcmV0dXJuIHJlcXVpcmVGdWxsTGF5b3V0Owog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5oCmluZGV4IDU5NmRhYTQuLjcyZTE2YmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5oCkBAIC0yNjAsNiArMjYwLDcwIEBAIGVudW0gY2xhc3MgRG9jdW1lbnRDb21wYXRp
YmlsaXR5TW9kZSA6IHVuc2lnbmVkIGNoYXIgewogICAgIExpbWl0ZWRRdWlya3NNb2RlID0gMSA8
PCAyCiB9OwogCisKK3N0cnVjdCBGb3JjZWRMYXlvdXRDb3VudGVycyB7CisgICAgaW50IG9mZnNl
dExlZnQ7CisgICAgaW50IG9mZnNldFRvcDsKKyAgICBpbnQgb2Zmc2V0V2lkdGg7CisgICAgaW50
IG9mZnNldEhlaWdodDsKKyAgICBpbnQgb2Zmc2V0UGFyZW50OworCisgICAgaW50IGNsaWVudExl
ZnQ7CisgICAgaW50IGNsaWVudFRvcDsKKyAgICBpbnQgY2xpZW50V2lkdGg7CisgICAgaW50IGNs
aWVudEhlaWdodDsKKworICAgIGludCBzY3JvbGxMZWZ0OworICAgIGludCBzY3JvbGxUb3A7Cisg
ICAgaW50IHNjcm9sbFdpZHRoOworICAgIGludCBzY3JvbGxIZWlnaHQ7CisKKyAgICBpbnQgYm9k
eVNjcm9sbExlZnQ7CisgICAgaW50IGJvZHlTY3JvbGxUb3A7CisgICAgaW50IGJvZHlTY3JvbGxI
ZWlnaHQ7CisgICAgaW50IGJvZHlTY3JvbGxXaWR0aDsKKworICAgIGludCBkb2N1bWVudFNjcm9s
bFg7CisgICAgaW50IGRvY3VtZW50U2Nyb2xsWTsKKworICAgIGludCB3aW5kb3dTY3JvbGxYOwor
ICAgIGludCB3aW5kb3dTY3JvbGxZOworCisgICAgaW50IGNsaWVudFJlY3RzOworICAgIGludCBi
b3VuZGluZ0NsaWVudFJlY3Q7CisKKyAgICBpbnQgaW5uZXJUZXh0OworICAgIGludCBmb2N1czsK
KworICAgIGludCBpbWFnZVdpZHRoOworICAgIGludCBpbWFnZUhlaWdodDsKKyAgICBpbnQgaW1h
Z2VYOworICAgIGludCBpbWFnZVk7CisKKyAgICBpbnQgZnJhbWVXaWR0aDsKKyAgICBpbnQgZnJh
bWVIZWlnaHQ7CisKKyAgICBpbnQgZG9jdW1lbnRXaWR0aDsKKyAgICBpbnQgZG9jdW1lbnRIZWln
aHQ7CisKKyAgICBpbnQgY29tcHV0ZWRTdHlsZTsKKyAgICBpbnQgY29tcHV0ZWRTdHlsZUZvbnRT
aXplOworICAgIGludCBwcm9ncmFtbWF0aWNTY3JvbGw7CisKKyAgICBpbnQgZXZlbnRIYW5kbGlu
ZzsKKyAgICBpbnQgY2FyZXRVcGRhdGU7CisgICAgaW50IHJlbmRlcldpZGdldExvYWRpbmdQbHVn
aW47CisKKyAgICBpbnQgdmlzaWJsZVBvc2l0aW9uOworICAgIGludCBzdmdCb3VuZHM7CisgICAg
aW50IHN2Z1RleHQ7CisgICAgaW50IHRleHRJdGVyYXRvcjsKK307CisKK2V4dGVybiBGb3JjZWRM
YXlvdXRDb3VudGVycyBwb3RlbnRpYWxGb3JjZWRMYXlvdXRDb3VudGVyczsKK2V4dGVybiBGb3Jj
ZWRMYXlvdXRDb3VudGVycyBmb3JjZWRMYXlvdXRDb3VudGVyczsKK2V4dGVybiBib29sIGluRm9y
Y2VkTGF5b3V0OworCiBlbnVtIERpbWVuc2lvbnNDaGVjayB7IFdpZHRoRGltZW5zaW9uc0NoZWNr
ID0gMHgxLCBIZWlnaHREaW1lbnNpb25zQ2hlY2sgPSAweDIsIEFsbERpbWVuc2lvbnNDaGVjayA9
IDB4MyB9OwogCiBjbGFzcyBEb2N1bWVudCA6IHB1YmxpYyBDb250YWluZXJOb2RlLCBwdWJsaWMg
VHJlZVNjb3BlLCBwdWJsaWMgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgcHVibGljIEZvbnRTZWxl
Y3RvckNsaWVudCB7CkBAIC01MzEsNyArNTk1LDkgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgdXBkYXRlU3R5bGVJZk5lZWRlZCgpOwogICAgIGJvb2wgbmVlZHNTdHlsZVJlY2Fs
YygpIGNvbnN0IHsgcmV0dXJuICFpblBhZ2VDYWNoZSgpICYmIChtX3BlbmRpbmdTdHlsZVJlY2Fs
Y1Nob3VsZEZvcmNlIHx8IGNoaWxkTmVlZHNTdHlsZVJlY2FsYygpIHx8IG1fb3B0aW1pemVkU3R5
bGVTaGVldFVwZGF0ZVRpbWVyLmlzQWN0aXZlKCkpOyB9CiAKLSAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIHVwZGF0ZUxheW91dCgpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdXBkYXRlTGF5b3V0
KGludCBsZXZlbCA9IDApOworCisgICAgYm9vbCBuZWVkc1VwZGF0ZUxheW91dCgpOwogICAgIAog
ICAgIC8vIHVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cygpIGZvcmNlcyBsYXlv
dXQgZXZlbiBpZiB3ZSBhcmUgd2FpdGluZyBmb3IgcGVuZGluZyBzdHlsZXNoZWV0IGxvYWRzLAog
ICAgIC8vIHNvIGNhbGxpbmcgdGhpcyBtYXkgY2F1c2UgYSBmbGFzaCBvZiB1bnN0eWxlZCBjb250
ZW50IChGT1VDKS4KQEAgLTU2OSw3ICs2MzUsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCByZW5kZXJU
cmVlQmVpbmdEZXN0cm95ZWQoKSBjb25zdCB7IHJldHVybiBtX3JlbmRlclRyZWVCZWluZ0Rlc3Ry
b3llZDsgfQogICAgIGJvb2wgaGFzTGl2aW5nUmVuZGVyVHJlZSgpIGNvbnN0IHsgcmV0dXJuIHJl
bmRlclZpZXcoKSAmJiAhcmVuZGVyVHJlZUJlaW5nRGVzdHJveWVkKCk7IH0KICAgICAKLSAgICBi
b29sIHVwZGF0ZUxheW91dElmRGltZW5zaW9uc091dE9mRGF0ZShFbGVtZW50KiwgRGltZW5zaW9u
c0NoZWNrID0gQWxsRGltZW5zaW9uc0NoZWNrKTsKKyAgICBib29sIHVwZGF0ZUxheW91dElmRGlt
ZW5zaW9uc091dE9mRGF0ZShFbGVtZW50KiwgaW50IGxldmVsID0gMCwgRGltZW5zaW9uc0NoZWNr
ID0gQWxsRGltZW5zaW9uc0NoZWNrKTsKICAgICAKICAgICBBWE9iamVjdENhY2hlKiBleGlzdGlu
Z0FYT2JqZWN0Q2FjaGUoKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBBWE9iamVjdENhY2hl
KiBheE9iamVjdENhY2hlKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKaW5kZXggMjIyYWVi
Yy4uNGZmYjQ4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcApAQCAtNTg5LDYgKzU4OSwxMCBAQCB2
b2lkIEVsZW1lbnQ6OnNldEhvdmVyZWQoYm9vbCBmbGFnKQogCiB2b2lkIEVsZW1lbnQ6OnNjcm9s
bEludG9WaWV3KGJvb2wgYWxpZ25Ub1RvcCkgCiB7CisgICAgKytwb3RlbnRpYWxGb3JjZWRMYXlv
dXRDb3VudGVycy5wcm9ncmFtbWF0aWNTY3JvbGw7CisgICAgaWYgKGRvY3VtZW50KCkubmVlZHNV
cGRhdGVMYXlvdXQoKSkKKyAgICAgICAgKytmb3JjZWRMYXlvdXRDb3VudGVycy5wcm9ncmFtbWF0
aWNTY3JvbGw7CisKICAgICBkb2N1bWVudCgpLnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHls
ZXNoZWV0cygpOwogCiAgICAgaWYgKCFyZW5kZXJlcigpKQpAQCAtNjA0LDYgKzYwOCwxMCBAQCB2
b2lkIEVsZW1lbnQ6OnNjcm9sbEludG9WaWV3KGJvb2wgYWxpZ25Ub1RvcCkKIAogdm9pZCBFbGVt
ZW50OjpzY3JvbGxJbnRvVmlld0lmTmVlZGVkKGJvb2wgY2VudGVySWZOZWVkZWQpCiB7CisgICAg
Kytwb3RlbnRpYWxGb3JjZWRMYXlvdXRDb3VudGVycy5wcm9ncmFtbWF0aWNTY3JvbGw7CisgICAg
aWYgKGRvY3VtZW50KCkubmVlZHNVcGRhdGVMYXlvdXQoKSkKKyAgICAgICAgKytmb3JjZWRMYXlv
dXRDb3VudGVycy5wcm9ncmFtbWF0aWNTY3JvbGw7CisKICAgICBkb2N1bWVudCgpLnVwZGF0ZUxh
eW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cygpOwogCiAgICAgaWYgKCFyZW5kZXJlcigpKQpA
QCAtNjE4LDYgKzYyNiwxMCBAQCB2b2lkIEVsZW1lbnQ6OnNjcm9sbEludG9WaWV3SWZOZWVkZWQo
Ym9vbCBjZW50ZXJJZk5lZWRlZCkKIAogdm9pZCBFbGVtZW50OjpzY3JvbGxJbnRvVmlld0lmTm90
VmlzaWJsZShib29sIGNlbnRlcklmTm90VmlzaWJsZSkKIHsKKyAgICArK3BvdGVudGlhbEZvcmNl
ZExheW91dENvdW50ZXJzLnByb2dyYW1tYXRpY1Njcm9sbDsKKyAgICBpZiAoZG9jdW1lbnQoKS5u
ZWVkc1VwZGF0ZUxheW91dCgpKQorICAgICAgICArK2ZvcmNlZExheW91dENvdW50ZXJzLnByb2dy
YW1tYXRpY1Njcm9sbDsKKwogICAgIGRvY3VtZW50KCkudXBkYXRlTGF5b3V0SWdub3JlUGVuZGlu
Z1N0eWxlc2hlZXRzKCk7CiAgICAgCiAgICAgaWYgKCFyZW5kZXJlcigpKQpAQCAtNjMyLDYgKzY0
NCwxMCBAQCB2b2lkIEVsZW1lbnQ6OnNjcm9sbEludG9WaWV3SWZOb3RWaXNpYmxlKGJvb2wgY2Vu
dGVySWZOb3RWaXNpYmxlKQogICAgIAogdm9pZCBFbGVtZW50OjpzY3JvbGxCeVVuaXRzKGludCB1
bml0cywgU2Nyb2xsR3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHkpCiB7CisgICAgKytwb3RlbnRpYWxG
b3JjZWRMYXlvdXRDb3VudGVycy5wcm9ncmFtbWF0aWNTY3JvbGw7CisgICAgaWYgKGRvY3VtZW50
KCkubmVlZHNVcGRhdGVMYXlvdXQoKSkKKyAgICAgICAgKytmb3JjZWRMYXlvdXRDb3VudGVycy5w
cm9ncmFtbWF0aWNTY3JvbGw7CisKICAgICBkb2N1bWVudCgpLnVwZGF0ZUxheW91dElnbm9yZVBl
bmRpbmdTdHlsZXNoZWV0cygpOwogCiAgICAgaWYgKCFyZW5kZXJlcigpKQpAQCAtNzA0LDYgKzcy
MCwxMCBAQCBzdGF0aWMgZG91YmxlIGNvbnZlcnRUb05vblN1YnBpeGVsVmFsdWVJZk5lZWRlZChk
b3VibGUgdmFsdWUsIGNvbnN0IERvY3VtZW50JiBkbwogCiBkb3VibGUgRWxlbWVudDo6b2Zmc2V0
TGVmdCgpCiB7CisgICAgKytwb3RlbnRpYWxGb3JjZWRMYXlvdXRDb3VudGVycy5vZmZzZXRMZWZ0
OworICAgIGlmIChkb2N1bWVudCgpLm5lZWRzVXBkYXRlTGF5b3V0KCkpCisgICAgICAgICsrZm9y
Y2VkTGF5b3V0Q291bnRlcnMub2Zmc2V0TGVmdDsKKwogICAgIGRvY3VtZW50KCkudXBkYXRlTGF5
b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKCk7CiAgICAgaWYgKFJlbmRlckJveE1vZGVsT2Jq
ZWN0KiByZW5kZXJlciA9IHJlbmRlckJveE1vZGVsT2JqZWN0KCkpIHsKICAgICAgICAgTGF5b3V0
VW5pdCBvZmZzZXRMZWZ0ID0gc3VicGl4ZWxNZXRyaWNzRW5hYmxlZChyZW5kZXJlci0+ZG9jdW1l
bnQoKSkgPyByZW5kZXJlci0+b2Zmc2V0TGVmdCgpIDogTGF5b3V0VW5pdChyZW5kZXJlci0+cGl4
ZWxTbmFwcGVkT2Zmc2V0TGVmdCgpKTsKQEAgLTcxNiw3ICs3MzYsMTAgQEAgZG91YmxlIEVsZW1l
bnQ6Om9mZnNldExlZnQoKQogCiBkb3VibGUgRWxlbWVudDo6b2Zmc2V0VG9wKCkKIHsKLSAgICBk
b2N1bWVudCgpLnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cygpOworICAgICsr
cG90ZW50aWFsRm9yY2VkTGF5b3V0Q291bnRlcnMub2Zmc2V0VG9wOworICAgIGlmIChkb2N1bWVu
dCgpLm5lZWRzVXBkYXRlTGF5b3V0KCkpCisgICAgICAgICsrZm9yY2VkTGF5b3V0Q291bnRlcnMu
b2Zmc2V0VG9wOworCiAgICAgaWYgKFJlbmRlckJveE1vZGVsT2JqZWN0KiByZW5kZXJlciA9IHJl
bmRlckJveE1vZGVsT2JqZWN0KCkpIHsKICAgICAgICAgTGF5b3V0VW5pdCBvZmZzZXRUb3AgPSBz
dWJwaXhlbE1ldHJpY3NFbmFibGVkKHJlbmRlcmVyLT5kb2N1bWVudCgpKSA/IHJlbmRlcmVyLT5v
ZmZzZXRUb3AoKSA6IExheW91dFVuaXQocmVuZGVyZXItPnBpeGVsU25hcHBlZE9mZnNldFRvcCgp
KTsKICAgICAgICAgZG91YmxlIHpvb21GYWN0b3IgPSAxOwpAQCAtNzI4LDcgKzc1MSwxMiBAQCBk
b3VibGUgRWxlbWVudDo6b2Zmc2V0VG9wKCkKIAogZG91YmxlIEVsZW1lbnQ6Om9mZnNldFdpZHRo
KCkKIHsKLSAgICBkb2N1bWVudCgpLnVwZGF0ZUxheW91dElmRGltZW5zaW9uc091dE9mRGF0ZSh0
aGlzLCBXaWR0aERpbWVuc2lvbnNDaGVjayk7CisgICAgKytwb3RlbnRpYWxGb3JjZWRMYXlvdXRD
b3VudGVycy5vZmZzZXRXaWR0aDsKKyAgICBpZiAoZG9jdW1lbnQoKS5uZWVkc1VwZGF0ZUxheW91
dCgpKQorICAgICAgICArK2ZvcmNlZExheW91dENvdW50ZXJzLm9mZnNldFdpZHRoOworCisgICAg
ZG9jdW1lbnQoKS51cGRhdGVMYXlvdXRJZkRpbWVuc2lvbnNPdXRPZkRhdGUodGhpcywgMCwgV2lk
dGhEaW1lbnNpb25zQ2hlY2spOworCiAgICAgaWYgKFJlbmRlckJveE1vZGVsT2JqZWN0KiByZW5k
ZXJlciA9IHJlbmRlckJveE1vZGVsT2JqZWN0KCkpIHsKICAgICAgICAgTGF5b3V0VW5pdCBvZmZz
ZXRXaWR0aCA9IHN1YnBpeGVsTWV0cmljc0VuYWJsZWQocmVuZGVyZXItPmRvY3VtZW50KCkpID8g
cmVuZGVyZXItPm9mZnNldFdpZHRoKCkgOiBMYXlvdXRVbml0KHJlbmRlcmVyLT5waXhlbFNuYXBw
ZWRPZmZzZXRXaWR0aCgpKTsKICAgICAgICAgcmV0dXJuIGNvbnZlcnRUb05vblN1YnBpeGVsVmFs
dWVJZk5lZWRlZChhZGp1c3RMYXlvdXRVbml0Rm9yQWJzb2x1dGVab29tKG9mZnNldFdpZHRoLCAq
cmVuZGVyZXIpLnRvRG91YmxlKCksIHJlbmRlcmVyLT5kb2N1bWVudCgpKTsKQEAgLTczOCw3ICs3
NjYsMTIgQEAgZG91YmxlIEVsZW1lbnQ6Om9mZnNldFdpZHRoKCkKIAogZG91YmxlIEVsZW1lbnQ6
Om9mZnNldEhlaWdodCgpCiB7Ci0gICAgZG9jdW1lbnQoKS51cGRhdGVMYXlvdXRJZkRpbWVuc2lv
bnNPdXRPZkRhdGUodGhpcywgSGVpZ2h0RGltZW5zaW9uc0NoZWNrKTsKKyAgICArK3BvdGVudGlh
bEZvcmNlZExheW91dENvdW50ZXJzLm9mZnNldEhlaWdodDsKKyAgICBpZiAoZG9jdW1lbnQoKS5u
ZWVkc1VwZGF0ZUxheW91dCgpKQorICAgICAgICArK2ZvcmNlZExheW91dENvdW50ZXJzLm9mZnNl
dEhlaWdodDsKKworICAgIGRvY3VtZW50KCkudXBkYXRlTGF5b3V0SWZEaW1lbnNpb25zT3V0T2ZE
YXRlKHRoaXMsIDAsIEhlaWdodERpbWVuc2lvbnNDaGVjayk7CisKICAgICBpZiAoUmVuZGVyQm94
TW9kZWxPYmplY3QqIHJlbmRlcmVyID0gcmVuZGVyQm94TW9kZWxPYmplY3QoKSkgewogICAgICAg
ICBMYXlvdXRVbml0IG9mZnNldEhlaWdodCA9IHN1YnBpeGVsTWV0cmljc0VuYWJsZWQocmVuZGVy
ZXItPmRvY3VtZW50KCkpID8gcmVuZGVyZXItPm9mZnNldEhlaWdodCgpIDogTGF5b3V0VW5pdChy
ZW5kZXJlci0+cGl4ZWxTbmFwcGVkT2Zmc2V0SGVpZ2h0KCkpOwogICAgICAgICByZXR1cm4gY29u
dmVydFRvTm9uU3VicGl4ZWxWYWx1ZUlmTmVlZGVkKGFkanVzdExheW91dFVuaXRGb3JBYnNvbHV0
ZVpvb20ob2Zmc2V0SGVpZ2h0LCAqcmVuZGVyZXIpLnRvRG91YmxlKCksIHJlbmRlcmVyLT5kb2N1
bWVudCgpKTsKQEAgLTc1Niw2ICs3ODksMTAgQEAgRWxlbWVudCogRWxlbWVudDo6YmluZGluZ3NP
ZmZzZXRQYXJlbnQoKQogCiBFbGVtZW50KiBFbGVtZW50OjpvZmZzZXRQYXJlbnQoKQogeworICAg
ICsrcG90ZW50aWFsRm9yY2VkTGF5b3V0Q291bnRlcnMub2Zmc2V0UGFyZW50OworICAgIGlmIChk
b2N1bWVudCgpLm5lZWRzVXBkYXRlTGF5b3V0KCkpCisgICAgICAgICsrZm9yY2VkTGF5b3V0Q291
bnRlcnMub2Zmc2V0UGFyZW50OworCiAgICAgZG9jdW1lbnQoKS51cGRhdGVMYXlvdXRJZ25vcmVQ
ZW5kaW5nU3R5bGVzaGVldHMoKTsKICAgICBhdXRvIHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIo
KTsKICAgICBpZiAoIXJlbmRlcmVyKQpAQCAtNzc5LDYgKzgxNiwxMCBAQCBkb3VibGUgRWxlbWVu
dDo6Y2xpZW50TGVmdCgpCiAKIGRvdWJsZSBFbGVtZW50OjpjbGllbnRUb3AoKQogeworICAgICsr
cG90ZW50aWFsRm9yY2VkTGF5b3V0Q291bnRlcnMuY2xpZW50VG9wOworICAgIGlmIChkb2N1bWVu
dCgpLm5lZWRzVXBkYXRlTGF5b3V0KCkpCisgICAgICAgICsrZm9yY2VkTGF5b3V0Q291bnRlcnMu
Y2xpZW50VG9wOworCiAgICAgZG9jdW1lbnQoKS51cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5
bGVzaGVldHMoKTsKIAogICAgIGlmIChSZW5kZXJCb3gqIHJlbmRlcmVyID0gcmVuZGVyQm94KCkp
IHsKQEAgLTc5MCw2ICs4MzEsMTAgQEAgZG91YmxlIEVsZW1lbnQ6OmNsaWVudFRvcCgpCiAKIGRv
dWJsZSBFbGVtZW50OjpjbGllbnRXaWR0aCgpCiB7CisgICAgKytwb3RlbnRpYWxGb3JjZWRMYXlv
dXRDb3VudGVycy5jbGllbnRXaWR0aDsKKyAgICBpZiAoZG9jdW1lbnQoKS5uZWVkc1VwZGF0ZUxh
eW91dCgpKQorICAgICAgICArK2ZvcmNlZExheW91dENvdW50ZXJzLmNsaWVudFdpZHRoOworCiAg
ICAgZG9jdW1lbnQoKS51cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVldHMoKTsKIAog
ICAgIGlmICghZG9jdW1lbnQoKS5oYXNMaXZpbmdSZW5kZXJUcmVlKCkpCkBAIC04MTEsNiArODU2
LDEwIEBAIGRvdWJsZSBFbGVtZW50OjpjbGllbnRXaWR0aCgpCiAKIGRvdWJsZSBFbGVtZW50Ojpj
bGllbnRIZWlnaHQoKQogeworICAgICsrcG90ZW50aWFsRm9yY2VkTGF5b3V0Q291bnRlcnMuY2xp
ZW50SGVpZ2h0OworICAgIGlmIChkb2N1bWVudCgpLm5lZWRzVXBkYXRlTGF5b3V0KCkpCisgICAg
ICAgICsrZm9yY2VkTGF5b3V0Q291bnRlcnMuY2xpZW50SGVpZ2h0OworCiAgICAgZG9jdW1lbnQo
KS51cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVldHMoKTsKIAogICAgIGlmICghZG9j
dW1lbnQoKS5oYXNMaXZpbmdSZW5kZXJUcmVlKCkpCkBAIC04MzIsNiArODgxLDEwIEBAIGRvdWJs
ZSBFbGVtZW50OjpjbGllbnRIZWlnaHQoKQogCiBpbnQgRWxlbWVudDo6c2Nyb2xsTGVmdCgpCiB7
CisgICAgKytwb3RlbnRpYWxGb3JjZWRMYXlvdXRDb3VudGVycy5zY3JvbGxMZWZ0OworICAgIGlm
IChkb2N1bWVudCgpLm5lZWRzVXBkYXRlTGF5b3V0KCkpCisgICAgICAgICsrZm9yY2VkTGF5b3V0
Q291bnRlcnMuc2Nyb2xsTGVmdDsKKwogICAgIGRvY3VtZW50KCkudXBkYXRlTGF5b3V0SWdub3Jl
UGVuZGluZ1N0eWxlc2hlZXRzKCk7CiAKICAgICBpZiAoUmVuZGVyQm94KiByZW5kID0gcmVuZGVy
Qm94KCkpCkBAIC04NDEsNiArODk0LDEwIEBAIGludCBFbGVtZW50OjpzY3JvbGxMZWZ0KCkKIAog
aW50IEVsZW1lbnQ6OnNjcm9sbFRvcCgpCiB7CisgICAgKytwb3RlbnRpYWxGb3JjZWRMYXlvdXRD
b3VudGVycy5zY3JvbGxUb3A7CisgICAgaWYgKGRvY3VtZW50KCkubmVlZHNVcGRhdGVMYXlvdXQo
KSkKKyAgICAgICAgKytmb3JjZWRMYXlvdXRDb3VudGVycy5zY3JvbGxUb3A7CisKICAgICBkb2N1
bWVudCgpLnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cygpOwogCiAgICAgaWYg
KFJlbmRlckJveCogcmVuZCA9IHJlbmRlckJveCgpKQpAQCAtODUwLDYgKzkwNywxMCBAQCBpbnQg
RWxlbWVudDo6c2Nyb2xsVG9wKCkKIAogdm9pZCBFbGVtZW50OjpzZXRTY3JvbGxMZWZ0KGludCBu
ZXdMZWZ0KQogeworICAgICsrcG90ZW50aWFsRm9yY2VkTGF5b3V0Q291bnRlcnMucHJvZ3JhbW1h
dGljU2Nyb2xsOworICAgIGlmIChkb2N1bWVudCgpLm5lZWRzVXBkYXRlTGF5b3V0KCkpCisgICAg
ICAgICsrZm9yY2VkTGF5b3V0Q291bnRlcnMucHJvZ3JhbW1hdGljU2Nyb2xsOworCiAgICAgZG9j
dW1lbnQoKS51cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVldHMoKTsKIAogICAgIGlm
IChSZW5kZXJCb3gqIHJlbmRlcmVyID0gcmVuZGVyQm94KCkpIHsKQEAgLTg2MSw2ICs5MjIsMTAg
QEAgdm9pZCBFbGVtZW50OjpzZXRTY3JvbGxMZWZ0KGludCBuZXdMZWZ0KQogCiB2b2lkIEVsZW1l
bnQ6OnNldFNjcm9sbFRvcChpbnQgbmV3VG9wKQogeworICAgICsrcG90ZW50aWFsRm9yY2VkTGF5
b3V0Q291bnRlcnMucHJvZ3JhbW1hdGljU2Nyb2xsOworICAgIGlmIChkb2N1bWVudCgpLm5lZWRz
VXBkYXRlTGF5b3V0KCkpCisgICAgICAgICsrZm9yY2VkTGF5b3V0Q291bnRlcnMucHJvZ3JhbW1h
dGljU2Nyb2xsOworCiAgICAgZG9jdW1lbnQoKS51cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5
bGVzaGVldHMoKTsKIAogICAgIGlmIChSZW5kZXJCb3gqIHJlbmRlcmVyID0gcmVuZGVyQm94KCkp
IHsKQEAgLTg3Miw2ICs5MzcsMTAgQEAgdm9pZCBFbGVtZW50OjpzZXRTY3JvbGxUb3AoaW50IG5l
d1RvcCkKIAogaW50IEVsZW1lbnQ6OnNjcm9sbFdpZHRoKCkKIHsKKyAgICArK3BvdGVudGlhbEZv
cmNlZExheW91dENvdW50ZXJzLnNjcm9sbFdpZHRoOworICAgIGlmIChkb2N1bWVudCgpLm5lZWRz
VXBkYXRlTGF5b3V0KCkpCisgICAgICAgICsrZm9yY2VkTGF5b3V0Q291bnRlcnMuc2Nyb2xsV2lk
dGg7CisKICAgICBkb2N1bWVudCgpLnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0
cygpOwogICAgIGlmIChSZW5kZXJCb3gqIHJlbmQgPSByZW5kZXJCb3goKSkKICAgICAgICAgcmV0
dXJuIGFkanVzdEZvckFic29sdXRlWm9vbShyZW5kLT5zY3JvbGxXaWR0aCgpLCAqcmVuZCk7CkBA
IC04ODAsNiArOTQ5LDEwIEBAIGludCBFbGVtZW50OjpzY3JvbGxXaWR0aCgpCiAKIGludCBFbGVt
ZW50OjpzY3JvbGxIZWlnaHQoKQogeworICAgICsrcG90ZW50aWFsRm9yY2VkTGF5b3V0Q291bnRl
cnMuc2Nyb2xsSGVpZ2h0OworICAgIGlmIChkb2N1bWVudCgpLm5lZWRzVXBkYXRlTGF5b3V0KCkp
CisgICAgICAgICsrZm9yY2VkTGF5b3V0Q291bnRlcnMuc2Nyb2xsSGVpZ2h0OworCiAgICAgZG9j
dW1lbnQoKS51cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVldHMoKTsKICAgICBpZiAo
UmVuZGVyQm94KiByZW5kID0gcmVuZGVyQm94KCkpCiAgICAgICAgIHJldHVybiBhZGp1c3RGb3JB
YnNvbHV0ZVpvb20ocmVuZC0+c2Nyb2xsSGVpZ2h0KCksICpyZW5kKTsKQEAgLTkyMSw2ICs5OTQs
MTAgQEAgSW50UmVjdCBFbGVtZW50Ojpib3VuZHNJblJvb3RWaWV3U3BhY2UoKQogCiBSZWY8Q2xp
ZW50UmVjdExpc3Q+IEVsZW1lbnQ6OmdldENsaWVudFJlY3RzKCkKIHsKKyAgICArK3BvdGVudGlh
bEZvcmNlZExheW91dENvdW50ZXJzLmNsaWVudFJlY3RzOworICAgIGlmIChkb2N1bWVudCgpLm5l
ZWRzVXBkYXRlTGF5b3V0KCkpCisgICAgICAgICsrZm9yY2VkTGF5b3V0Q291bnRlcnMuY2xpZW50
UmVjdHM7CisKICAgICBkb2N1bWVudCgpLnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNo
ZWV0cygpOwogCiAgICAgUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlbmRlckJveE1vZGVsT2JqZWN0
ID0gdGhpcy0+cmVuZGVyQm94TW9kZWxPYmplY3QoKTsKQEAgLTkzOCw2ICsxMDE1LDEwIEBAIFJl
ZjxDbGllbnRSZWN0TGlzdD4gRWxlbWVudDo6Z2V0Q2xpZW50UmVjdHMoKQogCiBSZWY8Q2xpZW50
UmVjdD4gRWxlbWVudDo6Z2V0Qm91bmRpbmdDbGllbnRSZWN0KCkKIHsKKyAgICArK3BvdGVudGlh
bEZvcmNlZExheW91dENvdW50ZXJzLmJvdW5kaW5nQ2xpZW50UmVjdDsKKyAgICBpZiAoZG9jdW1l
bnQoKS5uZWVkc1VwZGF0ZUxheW91dCgpKQorICAgICAgICArK2ZvcmNlZExheW91dENvdW50ZXJz
LmJvdW5kaW5nQ2xpZW50UmVjdDsKKwogICAgIGRvY3VtZW50KCkudXBkYXRlTGF5b3V0SWdub3Jl
UGVuZGluZ1N0eWxlc2hlZXRzKCk7CiAKICAgICBWZWN0b3I8RmxvYXRRdWFkPiBxdWFkczsKQEAg
LTE5ODUsNiArMjA2NiwxMCBAQCB2b2lkIEVsZW1lbnQ6OmZvY3VzKGJvb2wgcmVzdG9yZVByZXZp
b3VzU2VsZWN0aW9uLCBGb2N1c0RpcmVjdGlvbiBkaXJlY3Rpb24pCiAgICAgaWYgKGRvY3VtZW50
KCkuZm9jdXNlZEVsZW1lbnQoKSA9PSB0aGlzKQogICAgICAgICByZXR1cm47CiAKKyAgICArK3Bv
dGVudGlhbEZvcmNlZExheW91dENvdW50ZXJzLmZvY3VzOworICAgIGlmIChkb2N1bWVudCgpLm5l
ZWRzVXBkYXRlTGF5b3V0KCkpCisgICAgICAgICsrZm9yY2VkTGF5b3V0Q291bnRlcnMuZm9jdXM7
CisKICAgICAvLyBJZiB0aGUgc3R5bGVzaGVldHMgaGF2ZSBhbHJlYWR5IGJlZW4gbG9hZGVkIHdl
IGNhbiByZWxpYWJseSBjaGVjayBpc0ZvY3VzYWJsZS4KICAgICAvLyBJZiBub3QsIHdlIGNvbnRp
bnVlIGFuZCBzZXQgdGhlIGZvY3VzZWQgbm9kZSBvbiB0aGUgZm9jdXMgY29udHJvbGxlciBiZWxv
dyBzbwogICAgIC8vIHRoYXQgaXQgY2FuIGJlIHVwZGF0ZWQgc29vbiBhZnRlciBhdHRhY2guIApA
QCAtMjE3MSw2ICsyMjU2LDEwIEBAIHZvaWQgRWxlbWVudDo6c2V0SW5uZXJIVE1MKGNvbnN0IFN0
cmluZyYgaHRtbCwgRXhjZXB0aW9uQ29kZSYgZWMpCiAKIFN0cmluZyBFbGVtZW50Ojppbm5lclRl
eHQoKQogeworICAgICsrcG90ZW50aWFsRm9yY2VkTGF5b3V0Q291bnRlcnMuaW5uZXJUZXh0Owor
ICAgIGlmIChkb2N1bWVudCgpLm5lZWRzVXBkYXRlTGF5b3V0KCkpCisgICAgICAgICsrZm9yY2Vk
TGF5b3V0Q291bnRlcnMuaW5uZXJUZXh0OworCiAgICAgLy8gV2UgbmVlZCB0byB1cGRhdGUgbGF5
b3V0LCBzaW5jZSBwbGFpblRleHQgdXNlcyBsaW5lIGJveGVzIGluIHRoZSByZW5kZXIgdHJlZS4K
ICAgICBkb2N1bWVudCgpLnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cygpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTW91c2VSZWxhdGVkRXZlbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvZG9tL01vdXNlUmVsYXRlZEV2ZW50LmNwcAppbmRleCA0ZGMzNzA0Li4x
NTE5NTU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTW91c2VSZWxhdGVkRXZlbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Nb3VzZVJlbGF0ZWRFdmVudC5jcHAKQEAgLTE1
OCw2ICsxNTgsMTAgQEAgdm9pZCBNb3VzZVJlbGF0ZWRFdmVudDo6Y29tcHV0ZVJlbGF0aXZlUG9z
aXRpb24oKQogICAgIG1fbGF5ZXJMb2NhdGlvbiA9IG1fcGFnZUxvY2F0aW9uOwogICAgIG1fb2Zm
c2V0TG9jYXRpb24gPSBtX3BhZ2VMb2NhdGlvbjsKIAorICAgICsrcG90ZW50aWFsRm9yY2VkTGF5
b3V0Q291bnRlcnMuZXZlbnRIYW5kbGluZzsKKyAgICBpZiAodGFyZ2V0Tm9kZS0+ZG9jdW1lbnQo
KS5uZWVkc1VwZGF0ZUxheW91dCgpKQorICAgICAgICArK2ZvcmNlZExheW91dENvdW50ZXJzLmV2
ZW50SGFuZGxpbmc7CisKICAgICAvLyBNdXN0IGhhdmUgYW4gdXBkYXRlZCByZW5kZXIgdHJlZSBm
b3IgdGhpcyBtYXRoIHRvIHdvcmsgY29ycmVjdGx5LgogICAgIHRhcmdldE5vZGUtPmRvY3VtZW50
KCkudXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKCk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHAKaW5kZXggYThmMWI0MS4uODRmNWZjNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHAKQEAgLTEzMjUsNiArMTMy
NSwxMCBAQCB2b2lkIENhcmV0QmFzZTo6Y2xlYXJDYXJldFJlY3QoKQogCiBib29sIENhcmV0QmFz
ZTo6dXBkYXRlQ2FyZXRSZWN0KERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgVmlzaWJsZVBvc2l0
aW9uJiBjYXJldFBvc2l0aW9uKQogeworICAgICsrcG90ZW50aWFsRm9yY2VkTGF5b3V0Q291bnRl
cnMuY2FyZXRVcGRhdGU7CisgICAgaWYgKGRvY3VtZW50LT5uZWVkc1VwZGF0ZUxheW91dCgpKQor
ICAgICAgICArK2ZvcmNlZExheW91dENvdW50ZXJzLmNhcmV0VXBkYXRlOworCiAgICAgZG9jdW1l
bnQtPnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cygpOwogICAgIG1fY2FyZXRS
ZWN0TmVlZHNVcGRhdGUgPSBmYWxzZTsKICAgICBSZW5kZXJCbG9jayogcmVuZGVyZXI7CkBAIC0y
MTM0LDYgKzIxMzgsMTAgQEAgdm9pZCBGcmFtZVNlbGVjdGlvbjo6c2V0U2hvdWxkU2hvd0Jsb2Nr
Q3Vyc29yKGJvb2wgc2hvdWxkU2hvd0Jsb2NrQ3Vyc29yKQogewogICAgIG1fc2hvdWxkU2hvd0Js
b2NrQ3Vyc29yID0gc2hvdWxkU2hvd0Jsb2NrQ3Vyc29yOwogCisgICAgKytwb3RlbnRpYWxGb3Jj
ZWRMYXlvdXRDb3VudGVycy5jYXJldFVwZGF0ZTsKKyAgICBpZiAobV9mcmFtZS0+ZG9jdW1lbnQo
KS0+bmVlZHNVcGRhdGVMYXlvdXQoKSkKKyAgICAgICAgKytmb3JjZWRMYXlvdXRDb3VudGVycy5j
YXJldFVwZGF0ZTsKKwogICAgIG1fZnJhbWUtPmRvY3VtZW50KCktPnVwZGF0ZUxheW91dElnbm9y
ZVBlbmRpbmdTdHlsZXNoZWV0cygpOwogCiAgICAgdXBkYXRlQXBwZWFyYW5jZSgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwCmluZGV4IDM0NjVjNzEuLjBhOThiZjcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5jcHAKQEAgLTMzOCw2ICszMzgsMTAg
QEAgVGV4dEl0ZXJhdG9yOjpUZXh0SXRlcmF0b3IoY29uc3QgUmFuZ2UqIHJhbmdlLCBUZXh0SXRl
cmF0b3JCZWhhdmlvciBiZWhhdmlvcikKICAgICBpZiAoIXJhbmdlKQogICAgICAgICByZXR1cm47
CiAKKyAgICArK3BvdGVudGlhbEZvcmNlZExheW91dENvdW50ZXJzLnRleHRJdGVyYXRvcjsKKyAg
ICBpZiAocmFuZ2UtPm93bmVyRG9jdW1lbnQoKS5uZWVkc1VwZGF0ZUxheW91dCgpKQorICAgICAg
ICArK2ZvcmNlZExheW91dENvdW50ZXJzLnRleHRJdGVyYXRvcjsKKwogICAgIHJhbmdlLT5vd25l
ckRvY3VtZW50KCkudXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKCk7CiAKICAg
ICBtX3N0YXJ0Q29udGFpbmVyID0gcmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVQb3NpdGlvbi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL1Zpc2libGVQb3NpdGlvbi5jcHAKaW5kZXggNzgyNDFiOS4uNzBmZTAyMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlUG9zaXRpb24uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVBvc2l0aW9uLmNwcApAQCAtNTE1LDYg
KzUxNSwxMCBAQCBQb3NpdGlvbiBWaXNpYmxlUG9zaXRpb246OmNhbm9uaWNhbFBvc2l0aW9uKGNv
bnN0IFBvc2l0aW9uJiBwYXNzZWRQb3NpdGlvbikKICAgICBpZiAocG9zaXRpb24uaXNOdWxsKCkp
CiAgICAgICAgIHJldHVybiBQb3NpdGlvbigpOwogCisgICAgKytwb3RlbnRpYWxGb3JjZWRMYXlv
dXRDb3VudGVycy52aXNpYmxlUG9zaXRpb247CisgICAgaWYgKHBvc2l0aW9uLmRvY3VtZW50KCkt
Pm5lZWRzVXBkYXRlTGF5b3V0KCkpCisgICAgICAgICsrZm9yY2VkTGF5b3V0Q291bnRlcnMudmlz
aWJsZVBvc2l0aW9uOworCiAgICAgQVNTRVJUKHBvc2l0aW9uLmRvY3VtZW50KCkpOwogICAgIHBv
c2l0aW9uLmRvY3VtZW50KCktPnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cygp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVVbml0cy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVVbml0cy5jcHAKaW5kZXggNzcyM2VjMC4u
OTliYWRiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlVW5pdHMu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVVuaXRzLmNwcApAQCAtOTQ5
LDcgKzk0OSwxMSBAQCBWaXNpYmxlUG9zaXRpb24gcHJldmlvdXNMaW5lUG9zaXRpb24oY29uc3Qg
VmlzaWJsZVBvc2l0aW9uJiB2aXNpYmxlUG9zaXRpb24sIGludAogCiAgICAgaWYgKCFub2RlKQog
ICAgICAgICByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKCk7Ci0gICAgCisKKyAgICArK3BvdGVudGlh
bEZvcmNlZExheW91dENvdW50ZXJzLnZpc2libGVQb3NpdGlvbjsKKyAgICBpZiAobm9kZS0+ZG9j
dW1lbnQoKS5uZWVkc1VwZGF0ZUxheW91dCgpKQorICAgICAgICArK2ZvcmNlZExheW91dENvdW50
ZXJzLnZpc2libGVQb3NpdGlvbjsKKwogICAgIG5vZGUtPmRvY3VtZW50KCkudXBkYXRlTGF5b3V0
SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKCk7CiAgICAgCiAgICAgUmVuZGVyT2JqZWN0KiByZW5k
ZXJlciA9IG5vZGUtPnJlbmRlcmVyKCk7CkBAIC0xMDA0LDYgKzEwMDgsMTAgQEAgVmlzaWJsZVBv
c2l0aW9uIG5leHRMaW5lUG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJiB2aXNpYmxlUG9z
aXRpb24sIGludCBsaW4KIAogICAgIGlmICghbm9kZSkKICAgICAgICAgcmV0dXJuIFZpc2libGVQ
b3NpdGlvbigpOworCisgICAgKytwb3RlbnRpYWxGb3JjZWRMYXlvdXRDb3VudGVycy52aXNpYmxl
UG9zaXRpb247CisgICAgaWYgKG5vZGUtPmRvY3VtZW50KCkubmVlZHNVcGRhdGVMYXlvdXQoKSkK
KyAgICAgICAgKytmb3JjZWRMYXlvdXRDb3VudGVycy52aXNpYmxlUG9zaXRpb247CiAgICAgCiAg
ICAgbm9kZS0+ZG9jdW1lbnQoKS51cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVldHMo
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXBwbGV0RWxlbWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBcHBsZXRFbGVtZW50LmNwcAppbmRleCA1MWZj
ZjJlLi5kYzllMzgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBcHBsZXRF
bGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBcHBsZXRFbGVtZW50LmNw
cApAQCAtODgsNiArODgsMTAgQEAgUmVuZGVyV2lkZ2V0KiBIVE1MQXBwbGV0RWxlbWVudDo6cmVu
ZGVyV2lkZ2V0TG9hZGluZ1BsdWdpbigpIGNvbnN0CiAgICAgaWYgKCFjYW5FbWJlZEphdmEoKSkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKKyAgICArK3BvdGVudGlhbEZvcmNlZExheW91dENv
dW50ZXJzLnJlbmRlcldpZGdldExvYWRpbmdQbHVnaW47CisgICAgaWYgKGRvY3VtZW50KCkubmVl
ZHNVcGRhdGVMYXlvdXQoKSkKKyAgICAgICAgKytmb3JjZWRMYXlvdXRDb3VudGVycy5yZW5kZXJX
aWRnZXRMb2FkaW5nUGx1Z2luOworCiAgICAgLy8gTmVlZHMgdG8gbG9hZCB0aGUgcGx1Z2luIGlt
bWVkaWF0ZWRseSBiZWNhdXNlIHRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkCiAgICAgLy8gd2hlbiBK
YXZhU2NyaXB0IGNvZGUgYWNjZXNzZXMgdGhlIHBsdWdpbi4KICAgICAvLyBGSVhNRTogPHJkYXI6
Ly8xNjg5MzcwOD4gQ2hlY2sgaWYgZGlzcGF0Y2hpbmcgZXZlbnRzIGhlcmUgaXMgc2FmZS4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEJvZHlFbGVtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEJvZHlFbGVtZW50LmNwcAppbmRleCBjNmJjNTcwLi4zODI5NWM5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxCb2R5RWxlbWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQm9keUVsZW1lbnQuY3BwCkBAIC0yMjAsNiArMjIw
LDEwIEBAIHN0YXRpYyBpbnQgYWRqdXN0Rm9yWm9vbShpbnQgdmFsdWUsIGNvbnN0IEZyYW1lJiBm
cmFtZSkKIAogaW50IEhUTUxCb2R5RWxlbWVudDo6c2Nyb2xsTGVmdCgpCiB7CisgICAgKytwb3Rl
bnRpYWxGb3JjZWRMYXlvdXRDb3VudGVycy5ib2R5U2Nyb2xsTGVmdDsKKyAgICBpZiAoZG9jdW1l
bnQoKS5uZWVkc1VwZGF0ZUxheW91dCgpKQorICAgICAgICArK2ZvcmNlZExheW91dENvdW50ZXJz
LmJvZHlTY3JvbGxMZWZ0OworCiAgICAgZG9jdW1lbnQoKS51cGRhdGVMYXlvdXRJZ25vcmVQZW5k
aW5nU3R5bGVzaGVldHMoKTsKICAgICBGcmFtZSogZnJhbWUgPSBkb2N1bWVudCgpLmZyYW1lKCk7
CiAgICAgaWYgKCFmcmFtZSkKQEAgLTIzMiw2ICsyMzYsMTAgQEAgaW50IEhUTUxCb2R5RWxlbWVu
dDo6c2Nyb2xsTGVmdCgpCiAKIHZvaWQgSFRNTEJvZHlFbGVtZW50OjpzZXRTY3JvbGxMZWZ0KGlu
dCBzY3JvbGxMZWZ0KQogeworICAgICsrcG90ZW50aWFsRm9yY2VkTGF5b3V0Q291bnRlcnMucHJv
Z3JhbW1hdGljU2Nyb2xsOworICAgIGlmIChkb2N1bWVudCgpLm5lZWRzVXBkYXRlTGF5b3V0KCkp
CisgICAgICAgICsrZm9yY2VkTGF5b3V0Q291bnRlcnMucHJvZ3JhbW1hdGljU2Nyb2xsOworCiAg
ICAgZG9jdW1lbnQoKS51cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVldHMoKTsKICAg
ICBGcmFtZSogZnJhbWUgPSBkb2N1bWVudCgpLmZyYW1lKCk7CiAgICAgaWYgKCFmcmFtZSkKQEAg
LTI0NCw2ICsyNTIsMTAgQEAgdm9pZCBIVE1MQm9keUVsZW1lbnQ6OnNldFNjcm9sbExlZnQoaW50
IHNjcm9sbExlZnQpCiAKIGludCBIVE1MQm9keUVsZW1lbnQ6OnNjcm9sbFRvcCgpCiB7CisgICAg
Kytwb3RlbnRpYWxGb3JjZWRMYXlvdXRDb3VudGVycy5ib2R5U2Nyb2xsVG9wOworICAgIGlmIChk
b2N1bWVudCgpLm5lZWRzVXBkYXRlTGF5b3V0KCkpCisgICAgICAgICsrZm9yY2VkTGF5b3V0Q291
bnRlcnMuYm9keVNjcm9sbFRvcDsKKwogICAgIGRvY3VtZW50KCkudXBkYXRlTGF5b3V0SWdub3Jl
UGVuZGluZ1N0eWxlc2hlZXRzKCk7CiAgICAgRnJhbWUqIGZyYW1lID0gZG9jdW1lbnQoKS5mcmFt
ZSgpOwogICAgIGlmICghZnJhbWUpCkBAIC0yNTYsNiArMjY4LDEwIEBAIGludCBIVE1MQm9keUVs
ZW1lbnQ6OnNjcm9sbFRvcCgpCiAKIHZvaWQgSFRNTEJvZHlFbGVtZW50OjpzZXRTY3JvbGxUb3Ao
aW50IHNjcm9sbFRvcCkKIHsKKyAgICArK3BvdGVudGlhbEZvcmNlZExheW91dENvdW50ZXJzLnBy
b2dyYW1tYXRpY1Njcm9sbDsKKyAgICBpZiAoZG9jdW1lbnQoKS5uZWVkc1VwZGF0ZUxheW91dCgp
KQorICAgICAgICArK2ZvcmNlZExheW91dENvdW50ZXJzLnByb2dyYW1tYXRpY1Njcm9sbDsKKwog
ICAgIGRvY3VtZW50KCkudXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKCk7CiAg
ICAgRnJhbWUqIGZyYW1lID0gZG9jdW1lbnQoKS5mcmFtZSgpOwogICAgIGlmICghZnJhbWUpCkBA
IC0yNjgsNiArMjg0LDEwIEBAIHZvaWQgSFRNTEJvZHlFbGVtZW50OjpzZXRTY3JvbGxUb3AoaW50
IHNjcm9sbFRvcCkKIAogaW50IEhUTUxCb2R5RWxlbWVudDo6c2Nyb2xsSGVpZ2h0KCkKIHsKKyAg
ICArK3BvdGVudGlhbEZvcmNlZExheW91dENvdW50ZXJzLmJvZHlTY3JvbGxIZWlnaHQ7CisgICAg
aWYgKGRvY3VtZW50KCkubmVlZHNVcGRhdGVMYXlvdXQoKSkKKyAgICAgICAgKytmb3JjZWRMYXlv
dXRDb3VudGVycy5ib2R5U2Nyb2xsSGVpZ2h0OworCiAgICAgLy8gVXBkYXRlIHRoZSBkb2N1bWVu
dCdzIGxheW91dC4KICAgICBkb2N1bWVudCgpLnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHls
ZXNoZWV0cygpOwogICAgIEZyYW1lKiBmcmFtZSA9IGRvY3VtZW50KCkuZnJhbWUoKTsKQEAgLTI4
MSw2ICszMDEsMTAgQEAgaW50IEhUTUxCb2R5RWxlbWVudDo6c2Nyb2xsSGVpZ2h0KCkKIAogaW50
IEhUTUxCb2R5RWxlbWVudDo6c2Nyb2xsV2lkdGgoKQogeworICAgICsrcG90ZW50aWFsRm9yY2Vk
TGF5b3V0Q291bnRlcnMuYm9keVNjcm9sbFdpZHRoOworICAgIGlmIChkb2N1bWVudCgpLm5lZWRz
VXBkYXRlTGF5b3V0KCkpCisgICAgICAgICsrZm9yY2VkTGF5b3V0Q291bnRlcnMuYm9keVNjcm9s
bFdpZHRoOworCiAgICAgLy8gVXBkYXRlIHRoZSBkb2N1bWVudCdzIGxheW91dC4KICAgICBkb2N1
bWVudCgpLnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cygpOwogICAgIEZyYW1l
KiBmcmFtZSA9IGRvY3VtZW50KCkuZnJhbWUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTERvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERvY3VtZW50
LmNwcAppbmRleCAwN2ViYzlhLi5kYTgxN2RhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxEb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRG9jdW1l
bnQuY3BwCkBAIC05NSw2ICs5NSwxMCBAQCBIVE1MRG9jdW1lbnQ6On5IVE1MRG9jdW1lbnQoKQog
CiBpbnQgSFRNTERvY3VtZW50Ojp3aWR0aCgpCiB7CisgICAgKytwb3RlbnRpYWxGb3JjZWRMYXlv
dXRDb3VudGVycy5kb2N1bWVudFdpZHRoOworICAgIGlmIChuZWVkc1VwZGF0ZUxheW91dCgpKQor
ICAgICAgICArK2ZvcmNlZExheW91dENvdW50ZXJzLmRvY3VtZW50V2lkdGg7CisKICAgICB1cGRh
dGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVldHMoKTsKICAgICBGcmFtZVZpZXcqIGZyYW1l
VmlldyA9IHZpZXcoKTsKICAgICByZXR1cm4gZnJhbWVWaWV3ID8gZnJhbWVWaWV3LT5jb250ZW50
c1dpZHRoKCkgOiAwOwpAQCAtMTAyLDYgKzEwNiwxMCBAQCBpbnQgSFRNTERvY3VtZW50Ojp3aWR0
aCgpCiAKIGludCBIVE1MRG9jdW1lbnQ6OmhlaWdodCgpCiB7CisgICAgKytwb3RlbnRpYWxGb3Jj
ZWRMYXlvdXRDb3VudGVycy5kb2N1bWVudEhlaWdodDsKKyAgICBpZiAobmVlZHNVcGRhdGVMYXlv
dXQoKSkKKyAgICAgICAgKytmb3JjZWRMYXlvdXRDb3VudGVycy5kb2N1bWVudEhlaWdodDsKKwog
ICAgIHVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cygpOwogICAgIEZyYW1lVmll
dyogZnJhbWVWaWV3ID0gdmlldygpOwogICAgIHJldHVybiBmcmFtZVZpZXcgPyBmcmFtZVZpZXct
PmNvbnRlbnRzSGVpZ2h0KCkgOiAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MRW1iZWRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVtYmVkRWxlbWVu
dC5jcHAKaW5kZXggMDUwODZhMS4uMjdkNTRlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MRW1iZWRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxF
bWJlZEVsZW1lbnQuY3BwCkBAIC03Niw2ICs3NiwxMiBAQCBSZW5kZXJXaWRnZXQqIEhUTUxFbWJl
ZEVsZW1lbnQ6OnJlbmRlcldpZGdldExvYWRpbmdQbHVnaW4oKSBjb25zdAogICAgICAgICAvLyBO
ZWVkcyB0byBsb2FkIHRoZSBwbHVnaW4gaW1tZWRpYXRlZGx5IGJlY2F1c2UgdGhpcyBmdW5jdGlv
biBpcyBjYWxsZWQKICAgICAgICAgLy8gd2hlbiBKYXZhU2NyaXB0IGNvZGUgYWNjZXNzZXMgdGhl
IHBsdWdpbi4KICAgICAgICAgLy8gRklYTUU6IDxyZGFyOi8vMTY4OTM3MDg+IENoZWNrIGlmIGRp
c3BhdGNoaW5nIGV2ZW50cyBoZXJlIGlzIHNhZmUuCisKKworICAgICAgICArK3BvdGVudGlhbEZv
cmNlZExheW91dENvdW50ZXJzLnJlbmRlcldpZGdldExvYWRpbmdQbHVnaW47CisgICAgICAgIGlm
IChkb2N1bWVudCgpLm5lZWRzVXBkYXRlTGF5b3V0KCkpCisgICAgICAgICAgICArK2ZvcmNlZExh
eW91dENvdW50ZXJzLnJlbmRlcldpZGdldExvYWRpbmdQbHVnaW47CisKICAgICAgICAgZG9jdW1l
bnQoKS51cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVldHMoRG9jdW1lbnQ6OlJ1blBv
c3RMYXlvdXRUYXNrczo6U3luY2hyb25vdXNseSk7CiAgICAgfQogICAgIHJldHVybiBmaW5kV2lk
Z2V0UmVuZGVyZXIodGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxG
cmFtZUVsZW1lbnRCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lRWxlbWVu
dEJhc2UuY3BwCmluZGV4IDY4Y2ZiMTcuLmI3ZDI5MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEZyYW1lRWxlbWVudEJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEZyYW1lRWxlbWVudEJhc2UuY3BwCkBAIC0yMTAsNiArMjEwLDEwIEBAIGJvb2wgSFRN
TEZyYW1lRWxlbWVudEJhc2U6OmlzSFRNTENvbnRlbnRBdHRyaWJ1dGUoY29uc3QgQXR0cmlidXRl
JiBhdHRyaWJ1dGUpIGNvCiAKIGludCBIVE1MRnJhbWVFbGVtZW50QmFzZTo6d2lkdGgoKQogewor
ICAgICsrcG90ZW50aWFsRm9yY2VkTGF5b3V0Q291bnRlcnMuZnJhbWVXaWR0aDsKKyAgICBpZiAo
ZG9jdW1lbnQoKS5uZWVkc1VwZGF0ZUxheW91dCgpKQorICAgICAgICArK2ZvcmNlZExheW91dENv
dW50ZXJzLmZyYW1lV2lkdGg7CisKICAgICBkb2N1bWVudCgpLnVwZGF0ZUxheW91dElnbm9yZVBl
bmRpbmdTdHlsZXNoZWV0cygpOwogICAgIGlmICghcmVuZGVyQm94KCkpCiAgICAgICAgIHJldHVy
biAwOwpAQCAtMjE4LDYgKzIyMiwxMCBAQCBpbnQgSFRNTEZyYW1lRWxlbWVudEJhc2U6OndpZHRo
KCkKIAogaW50IEhUTUxGcmFtZUVsZW1lbnRCYXNlOjpoZWlnaHQoKQogeworICAgICsrcG90ZW50
aWFsRm9yY2VkTGF5b3V0Q291bnRlcnMuZnJhbWVXaWR0aDsKKyAgICBpZiAoZG9jdW1lbnQoKS5u
ZWVkc1VwZGF0ZUxheW91dCgpKQorICAgICAgICArK2ZvcmNlZExheW91dENvdW50ZXJzLmZyYW1l
V2lkdGg7CisKICAgICBkb2N1bWVudCgpLnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNo
ZWV0cygpOwogICAgIGlmICghcmVuZGVyQm94KCkpCiAgICAgICAgIHJldHVybiAwOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAKaW5kZXggMWM4NTVkYzkuLjcxZjZkZDEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcApAQCAtMjkwLDYgKzI5
MCwxMCBAQCBpbnQgSFRNTEltYWdlRWxlbWVudDo6d2lkdGgoYm9vbCBpZ25vcmVQZW5kaW5nU3R5
bGVzaGVldHMpCiAgICAgICAgICAgICByZXR1cm4gbV9pbWFnZUxvYWRlci5pbWFnZSgpLT5pbWFn
ZVNpemVGb3JSZW5kZXJlcihyZW5kZXJlcigpLCAxLjBmKS53aWR0aCgpOwogICAgIH0KIAorICAg
ICsrcG90ZW50aWFsRm9yY2VkTGF5b3V0Q291bnRlcnMuaW1hZ2VXaWR0aDsKKyAgICBpZiAoZG9j
dW1lbnQoKS5uZWVkc1VwZGF0ZUxheW91dCgpKQorICAgICAgICArK2ZvcmNlZExheW91dENvdW50
ZXJzLmltYWdlV2lkdGg7CisKICAgICBpZiAoaWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKQogICAg
ICAgICBkb2N1bWVudCgpLnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cygpOwog
ICAgIGVsc2UKQEAgLTMxMyw2ICszMTcsMTAgQEAgaW50IEhUTUxJbWFnZUVsZW1lbnQ6OmhlaWdo
dChib29sIGlnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cykKICAgICAgICAgICAgIHJldHVybiBtX2lt
YWdlTG9hZGVyLmltYWdlKCktPmltYWdlU2l6ZUZvclJlbmRlcmVyKHJlbmRlcmVyKCksIDEuMGYp
LmhlaWdodCgpOwogICAgIH0KIAorICAgICsrcG90ZW50aWFsRm9yY2VkTGF5b3V0Q291bnRlcnMu
aW1hZ2VIZWlnaHQ7CisgICAgaWYgKGRvY3VtZW50KCkubmVlZHNVcGRhdGVMYXlvdXQoKSkKKyAg
ICAgICAgKytmb3JjZWRMYXlvdXRDb3VudGVycy5pbWFnZUhlaWdodDsKKwogICAgIGlmIChpZ25v
cmVQZW5kaW5nU3R5bGVzaGVldHMpCiAgICAgICAgIGRvY3VtZW50KCkudXBkYXRlTGF5b3V0SWdu
b3JlUGVuZGluZ1N0eWxlc2hlZXRzKCk7CiAgICAgZWxzZQpAQCAtNDE3LDYgKzQyNSwxMCBAQCB2
b2lkIEhUTUxJbWFnZUVsZW1lbnQ6OnNldFdpZHRoKGludCB2YWx1ZSkKIAogaW50IEhUTUxJbWFn
ZUVsZW1lbnQ6OngoKSBjb25zdAogeworICAgICsrcG90ZW50aWFsRm9yY2VkTGF5b3V0Q291bnRl
cnMuaW1hZ2VYOworICAgIGlmIChkb2N1bWVudCgpLm5lZWRzVXBkYXRlTGF5b3V0KCkpCisgICAg
ICAgICsrZm9yY2VkTGF5b3V0Q291bnRlcnMuaW1hZ2VYOworCiAgICAgZG9jdW1lbnQoKS51cGRh
dGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVldHMoKTsKICAgICBhdXRvIHJlbmRlcmVyID0g
dGhpcy0+cmVuZGVyZXIoKTsKICAgICBpZiAoIXJlbmRlcmVyKQpAQCAtNDI4LDYgKzQ0MCwxMCBA
QCBpbnQgSFRNTEltYWdlRWxlbWVudDo6eCgpIGNvbnN0CiAKIGludCBIVE1MSW1hZ2VFbGVtZW50
Ojp5KCkgY29uc3QKIHsKKyAgICArK3BvdGVudGlhbEZvcmNlZExheW91dENvdW50ZXJzLmltYWdl
WTsKKyAgICBpZiAoZG9jdW1lbnQoKS5uZWVkc1VwZGF0ZUxheW91dCgpKQorICAgICAgICArK2Zv
cmNlZExheW91dENvdW50ZXJzLmltYWdlWTsKKwogICAgIGRvY3VtZW50KCkudXBkYXRlTGF5b3V0
SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKCk7CiAgICAgYXV0byByZW5kZXJlciA9IHRoaXMtPnJl
bmRlcmVyKCk7CiAgICAgaWYgKCFyZW5kZXJlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT2Jq
ZWN0RWxlbWVudC5jcHAKaW5kZXggZWNlNDQxNy4uYWM1ZWViMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MT2JqZWN0RWxlbWVudC5jcHAKQEAgLTg2LDYgKzg2LDExIEBAIFJlbmRlcldpZGdl
dCogSFRNTE9iamVjdEVsZW1lbnQ6OnJlbmRlcldpZGdldExvYWRpbmdQbHVnaW4oKSBjb25zdAog
ICAgIC8vIE5lZWRzIHRvIGxvYWQgdGhlIHBsdWdpbiBpbW1lZGlhdGVkbHkgYmVjYXVzZSB0aGlz
IGZ1bmN0aW9uIGlzIGNhbGxlZAogICAgIC8vIHdoZW4gSmF2YVNjcmlwdCBjb2RlIGFjY2Vzc2Vz
IHRoZSBwbHVnaW4uCiAgICAgLy8gRklYTUU6IDxyZGFyOi8vMTY4OTM3MDg+IENoZWNrIGlmIGRp
c3BhdGNoaW5nIGV2ZW50cyBoZXJlIGlzIHNhZmUuCisKKyAgICArK3BvdGVudGlhbEZvcmNlZExh
eW91dENvdW50ZXJzLnJlbmRlcldpZGdldExvYWRpbmdQbHVnaW47CisgICAgaWYgKGRvY3VtZW50
KCkubmVlZHNVcGRhdGVMYXlvdXQoKSkKKyAgICAgICAgKytmb3JjZWRMYXlvdXRDb3VudGVycy5y
ZW5kZXJXaWRnZXRMb2FkaW5nUGx1Z2luOworCiAgICAgZG9jdW1lbnQoKS51cGRhdGVMYXlvdXRJ
Z25vcmVQZW5kaW5nU3R5bGVzaGVldHMoRG9jdW1lbnQ6OlJ1blBvc3RMYXlvdXRUYXNrczo6U3lu
Y2hyb25vdXNseSk7CiAgICAgcmV0dXJuIHJlbmRlcldpZGdldCgpOyAvLyBUaGlzIHdpbGwgcmV0
dXJuIDAgaWYgdGhlIHJlbmRlcmVyIGlzIG5vdCBhIFJlbmRlcldpZGdldC4KIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5jcHAKaW5kZXgg
NTIzOTQ4Mi4uMTQwNTIzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4
dEZvcm1Db250cm9sRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4
dEZvcm1Db250cm9sRWxlbWVudC5jcHAKQEAgLTI5NSw2ICsyOTUsMTEgQEAgdm9pZCBIVE1MVGV4
dEZvcm1Db250cm9sRWxlbWVudDo6c2V0U2VsZWN0aW9uUmFuZ2UoaW50IHN0YXJ0LCBpbnQgZW5k
LCBUZXh0RmllbGQKICAgICBUZXh0Q29udHJvbElubmVyVGV4dEVsZW1lbnQqIGlubmVyVGV4dCA9
IGlubmVyVGV4dEVsZW1lbnQoKTsKICAgICBib29sIGhhc0ZvY3VzID0gZG9jdW1lbnQoKS5mb2N1
c2VkRWxlbWVudCgpID09IHRoaXM7CiAgICAgaWYgKCFoYXNGb2N1cyAmJiBpbm5lclRleHQpIHsK
KworICAgICAgICArK3BvdGVudGlhbEZvcmNlZExheW91dENvdW50ZXJzLmZvY3VzOworICAgICAg
ICBpZiAoZG9jdW1lbnQoKS5uZWVkc1VwZGF0ZUxheW91dCgpKQorICAgICAgICAgICAgKytmb3Jj
ZWRMYXlvdXRDb3VudGVycy5mb2N1czsKKwogICAgICAgICAvLyBGSVhNRTogUmVtb3ZpbmcgdGhp
cyBzeW5jaHJvbm91cyBsYXlvdXQgcmVxdWlyZXMgZml4aW5nIDxodHRwczovL3dlYmtpdC5vcmcv
Yi8xMjg3OTc+CiAgICAgICAgIGRvY3VtZW50KCkudXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0
eWxlc2hlZXRzKCk7CiAgICAgICAgIGlmIChSZW5kZXJFbGVtZW50KiByZW5kZXJlclRleHRDb250
cm9sID0gcmVuZGVyZXIoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01X
aW5kb3cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCmluZGV4IDc4Mjk0
MDMuLjJjOTI1ODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKQEAgLTEyNzgsNiArMTI3
OCwxMCBAQCBpbnQgRE9NV2luZG93OjpzY3JvbGxYKCkgY29uc3QKICAgICBpZiAoIXNjcm9sbFgp
CiAgICAgICAgIHJldHVybiAwOwogCisgICAgKytwb3RlbnRpYWxGb3JjZWRMYXlvdXRDb3VudGVy
cy53aW5kb3dTY3JvbGxYOworICAgIGlmIChtX2ZyYW1lLT5kb2N1bWVudCgpLT5uZWVkc1VwZGF0
ZUxheW91dCgpKQorICAgICAgICArK2ZvcmNlZExheW91dENvdW50ZXJzLndpbmRvd1Njcm9sbFg7
CisKICAgICBtX2ZyYW1lLT5kb2N1bWVudCgpLT51cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5
bGVzaGVldHMoKTsKIAogICAgIHJldHVybiB2aWV3LT5tYXBGcm9tTGF5b3V0VG9DU1NVbml0cyh2
aWV3LT5jb250ZW50c1Njcm9sbFBvc2l0aW9uKCkueCgpKTsKQEAgLTEyOTYsNiArMTMwMCwxMCBA
QCBpbnQgRE9NV2luZG93OjpzY3JvbGxZKCkgY29uc3QKICAgICBpZiAoIXNjcm9sbFkpCiAgICAg
ICAgIHJldHVybiAwOwogCisgICAgKytwb3RlbnRpYWxGb3JjZWRMYXlvdXRDb3VudGVycy53aW5k
b3dTY3JvbGxZOworICAgIGlmIChtX2ZyYW1lLT5kb2N1bWVudCgpLT5uZWVkc1VwZGF0ZUxheW91
dCgpKQorICAgICAgICArK2ZvcmNlZExheW91dENvdW50ZXJzLndpbmRvd1Njcm9sbFk7CisKICAg
ICBtX2ZyYW1lLT5kb2N1bWVudCgpLT51cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVl
dHMoKTsKIAogICAgIHJldHVybiB2aWV3LT5tYXBGcm9tTGF5b3V0VG9DU1NVbml0cyh2aWV3LT5j
b250ZW50c1Njcm9sbFBvc2l0aW9uKCkueSgpKTsKQEAgLTE1MDMsNiArMTUxMSwxMCBAQCB2b2lk
IERPTVdpbmRvdzo6c2Nyb2xsQnkoaW50IHgsIGludCB5KSBjb25zdAogICAgIGlmICghaXNDdXJy
ZW50bHlEaXNwbGF5ZWRJbkZyYW1lKCkpCiAgICAgICAgIHJldHVybjsKIAorICAgICsrcG90ZW50
aWFsRm9yY2VkTGF5b3V0Q291bnRlcnMucHJvZ3JhbW1hdGljU2Nyb2xsOworICAgIGlmIChkb2N1
bWVudCgpLT5uZWVkc1VwZGF0ZUxheW91dCgpKQorICAgICAgICArK2ZvcmNlZExheW91dENvdW50
ZXJzLnByb2dyYW1tYXRpY1Njcm9sbDsKKwogICAgIGRvY3VtZW50KCktPnVwZGF0ZUxheW91dEln
bm9yZVBlbmRpbmdTdHlsZXNoZWV0cygpOwogCiAgICAgRnJhbWVWaWV3KiB2aWV3ID0gbV9mcmFt
ZS0+dmlldygpOwpAQCAtMTUyNSw2ICsxNTM3LDEwIEBAIHZvaWQgRE9NV2luZG93OjpzY3JvbGxU
byhpbnQgeCwgaW50IHkpIGNvbnN0CiAgICAgaWYgKCF4ICYmICF5ICYmIHZpZXctPmNvbnRlbnRz
U2Nyb2xsUG9zaXRpb24oKSA9PSBJbnRQb2ludCgwLCAwKSkKICAgICAgICAgcmV0dXJuOwogCisg
ICAgKytwb3RlbnRpYWxGb3JjZWRMYXlvdXRDb3VudGVycy5wcm9ncmFtbWF0aWNTY3JvbGw7Cisg
ICAgaWYgKGRvY3VtZW50KCktPm5lZWRzVXBkYXRlTGF5b3V0KCkpCisgICAgICAgICsrZm9yY2Vk
TGF5b3V0Q291bnRlcnMucHJvZ3JhbW1hdGljU2Nyb2xsOworCiAgICAgZG9jdW1lbnQoKS0+dXBk
YXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKCk7CiAKICAgICBJbnRQb2ludCBsYXlv
dXRQb3Modmlldy0+bWFwRnJvbUNTU1RvTGF5b3V0VW5pdHMoeCksIHZpZXctPm1hcEZyb21DU1NU
b0xheW91dFVuaXRzKHkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRI
YW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAppbmRleCA4
OThiYmE1Li4wNTFmYjA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFu
ZGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCkBAIC02
NTksNiArNjU5LDEwIEBAIHN0YXRpYyBpbnQgdGV4dERpc3RhbmNlKGNvbnN0IFBvc2l0aW9uJiBz
dGFydCwgY29uc3QgUG9zaXRpb24mIGVuZCkKIAogYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZU1v
dXNlUHJlc3NFdmVudFNpbmdsZUNsaWNrKGNvbnN0IE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3Vs
dHMmIGV2ZW50KQogeworICAgICsrcG90ZW50aWFsRm9yY2VkTGF5b3V0Q291bnRlcnMuZXZlbnRI
YW5kbGluZzsKKyAgICBpZiAobV9mcmFtZS5kb2N1bWVudCgpLT5uZWVkc1VwZGF0ZUxheW91dCgp
KQorICAgICAgICArK2ZvcmNlZExheW91dENvdW50ZXJzLmV2ZW50SGFuZGxpbmc7CisKICAgICBt
X2ZyYW1lLmRvY3VtZW50KCktPnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cygp
OwogICAgIE5vZGUqIHRhcmdldE5vZGUgPSBldmVudC50YXJnZXROb2RlKCk7CiAgICAgaWYgKCEo
dGFyZ2V0Tm9kZSAmJiB0YXJnZXROb2RlLT5yZW5kZXJlcigpICYmIG1fbW91c2VEb3duTWF5U3Rh
cnRTZWxlY3QpKQpAQCAtNzQzLDYgKzc0NywxMCBAQCBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxl
TW91c2VQcmVzc0V2ZW50KGNvbnN0IE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMmIGV2ZQog
ICAgIGNhbmNlbEZha2VNb3VzZU1vdmVFdmVudCgpOwogI2VuZGlmCiAKKyAgICArK3BvdGVudGlh
bEZvcmNlZExheW91dENvdW50ZXJzLmV2ZW50SGFuZGxpbmc7CisgICAgaWYgKG1fZnJhbWUuZG9j
dW1lbnQoKS0+bmVlZHNVcGRhdGVMYXlvdXQoKSkKKyAgICAgICAgKytmb3JjZWRMYXlvdXRDb3Vu
dGVycy5ldmVudEhhbmRsaW5nOworCiAgICAgbV9mcmFtZS5kb2N1bWVudCgpLT51cGRhdGVMYXlv
dXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVldHMoKTsKIAogICAgIGlmIChTY3JvbGxWaWV3KiBzY3Jv
bGxWaWV3ID0gbV9mcmFtZS52aWV3KCkpIHsKQEAgLTEyMDMsNiArMTIxMSwxMCBAQCBib29sIEV2
ZW50SGFuZGxlcjo6bG9naWNhbFNjcm9sbE92ZXJmbG93KFNjcm9sbExvZ2ljYWxEaXJlY3Rpb24g
ZGlyZWN0aW9uLCBTY3JvbAogCiBib29sIEV2ZW50SGFuZGxlcjo6c2Nyb2xsUmVjdXJzaXZlbHko
U2Nyb2xsRGlyZWN0aW9uIGRpcmVjdGlvbiwgU2Nyb2xsR3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHks
IE5vZGUqIHN0YXJ0aW5nTm9kZSkKIHsKKyAgICArK3BvdGVudGlhbEZvcmNlZExheW91dENvdW50
ZXJzLmV2ZW50SGFuZGxpbmc7CisgICAgaWYgKG1fZnJhbWUuZG9jdW1lbnQoKS0+bmVlZHNVcGRh
dGVMYXlvdXQoKSkKKyAgICAgICAgKytmb3JjZWRMYXlvdXRDb3VudGVycy5ldmVudEhhbmRsaW5n
OworCiAgICAgLy8gVGhlIGxheW91dCBuZWVkcyB0byBiZSB1cCB0byBkYXRlIHRvIGRldGVybWlu
ZSBpZiB3ZSBjYW4gc2Nyb2xsLiBXZSBtYXkgYmUKICAgICAvLyBoZXJlIGJlY2F1c2Ugb2YgYW4g
b25Mb2FkIGV2ZW50LCBpbiB3aGljaCBjYXNlIHRoZSBmaW5hbCBsYXlvdXQgaGFzbid0IGJlZW4g
cGVyZm9ybWVkIHlldC4KICAgICBtX2ZyYW1lLmRvY3VtZW50KCktPnVwZGF0ZUxheW91dElnbm9y
ZVBlbmRpbmdTdHlsZXNoZWV0cygpOwpAQCAtMTIyMCw2ICsxMjMyLDEwIEBAIGJvb2wgRXZlbnRI
YW5kbGVyOjpzY3JvbGxSZWN1cnNpdmVseShTY3JvbGxEaXJlY3Rpb24gZGlyZWN0aW9uLCBTY3Jv
bGxHcmFudWxhcml0CiAKIGJvb2wgRXZlbnRIYW5kbGVyOjpsb2dpY2FsU2Nyb2xsUmVjdXJzaXZl
bHkoU2Nyb2xsTG9naWNhbERpcmVjdGlvbiBkaXJlY3Rpb24sIFNjcm9sbEdyYW51bGFyaXR5IGdy
YW51bGFyaXR5LCBOb2RlKiBzdGFydGluZ05vZGUpCiB7CisgICAgKytwb3RlbnRpYWxGb3JjZWRM
YXlvdXRDb3VudGVycy5ldmVudEhhbmRsaW5nOworICAgIGlmIChtX2ZyYW1lLmRvY3VtZW50KCkt
Pm5lZWRzVXBkYXRlTGF5b3V0KCkpCisgICAgICAgICsrZm9yY2VkTGF5b3V0Q291bnRlcnMuZXZl
bnRIYW5kbGluZzsKKwogICAgIC8vIFRoZSBsYXlvdXQgbmVlZHMgdG8gYmUgdXAgdG8gZGF0ZSB0
byBkZXRlcm1pbmUgaWYgd2UgY2FuIHNjcm9sbC4gV2UgbWF5IGJlCiAgICAgLy8gaGVyZSBiZWNh
dXNlIG9mIGFuIG9uTG9hZCBldmVudCwgaW4gd2hpY2ggY2FzZSB0aGUgZmluYWwgbGF5b3V0IGhh
c24ndCBiZWVuIHBlcmZvcm1lZCB5ZXQuCiAgICAgbV9mcmFtZS5kb2N1bWVudCgpLT51cGRhdGVM
YXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVldHMoKTsKQEAgLTI1MzQsNiArMjU1MCwxMCBAQCBi
b29sIEV2ZW50SGFuZGxlcjo6ZGlzcGF0Y2hNb3VzZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYg
ZXZlbnRUeXBlLCBOb2RlKiB0YXJnZQogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAg
ICAgICB9CiAKKyAgICAgICAgKytwb3RlbnRpYWxGb3JjZWRMYXlvdXRDb3VudGVycy5ldmVudEhh
bmRsaW5nOworICAgICAgICBpZiAobV9mcmFtZS5kb2N1bWVudCgpLT5uZWVkc1VwZGF0ZUxheW91
dCgpKQorICAgICAgICAgICAgKytmb3JjZWRMYXlvdXRDb3VudGVycy5ldmVudEhhbmRsaW5nOwor
CiAgICAgICAgIC8vIFRoZSBsYXlvdXQgbmVlZHMgdG8gYmUgdXAgdG8gZGF0ZSB0byBkZXRlcm1p
bmUgaWYgYW4gZWxlbWVudCBpcyBmb2N1c2FibGUuCiAgICAgICAgIG1fZnJhbWUuZG9jdW1lbnQo
KS0+dXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKCk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRm9jdXNDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRm9jdXNDb250cm9sbGVyLmNwcAppbmRleCA3N2MwN2ZlLi4zYjA5NjJiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZvY3VzQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9Gb2N1c0NvbnRyb2xsZXIuY3BwCkBAIC0yODQsNiArMjg0LDEwIEBAIGJv
b2wgRm9jdXNDb250cm9sbGVyOjphZHZhbmNlRm9jdXNJbkRvY3VtZW50T3JkZXIoRm9jdXNEaXJl
Y3Rpb24gZGlyZWN0aW9uLCBLZXliCiAgICAgaWYgKGNhcmV0QnJvd3NpbmcgJiYgIWN1cnJlbnRO
b2RlKQogICAgICAgICBjdXJyZW50Tm9kZSA9IGZyYW1lLnNlbGVjdGlvbigpLnNlbGVjdGlvbigp
LnN0YXJ0KCkuZGVwcmVjYXRlZE5vZGUoKTsKIAorICAgICsrcG90ZW50aWFsRm9yY2VkTGF5b3V0
Q291bnRlcnMuZm9jdXM7CisgICAgaWYgKGRvY3VtZW50LT5uZWVkc1VwZGF0ZUxheW91dCgpKQor
ICAgICAgICArK2ZvcmNlZExheW91dENvdW50ZXJzLmZvY3VzOworCiAgICAgZG9jdW1lbnQtPnVw
ZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cygpOwogCiAgICAgUmVmUHRyPEVsZW1l
bnQ+IGVsZW1lbnQgPSBmaW5kRm9jdXNhYmxlRWxlbWVudEFjcm9zc0ZvY3VzU2NvcGUoZGlyZWN0
aW9uLCBGb2N1c05hdmlnYXRpb25TY29wZTo6Zm9jdXNOYXZpZ2F0aW9uU2NvcGVPZihjdXJyZW50
Tm9kZSA/IGN1cnJlbnROb2RlIDogZG9jdW1lbnQpLCBjdXJyZW50Tm9kZSwgZXZlbnQpOwpAQCAt
ODMyLDYgKzgzNiwxMSBAQCBib29sIEZvY3VzQ29udHJvbGxlcjo6YWR2YW5jZUZvY3VzRGlyZWN0
aW9uYWxseUluQ29udGFpbmVyKE5vZGUqIGNvbnRhaW5lciwgY29ucwogICAgICAgICBFbGVtZW50
KiBmb2N1c2VkRWxlbWVudCA9IGZvY3VzZWRPck1haW5GcmFtZSgpLmRvY3VtZW50KCktPmZvY3Vz
ZWRFbGVtZW50KCk7CiAgICAgICAgIGlmIChmb2N1c2VkRWxlbWVudCAmJiAhaGFzT2Zmc2NyZWVu
UmVjdChmb2N1c2VkRWxlbWVudCkpCiAgICAgICAgICAgICByZWN0ID0gbm9kZVJlY3RJbkFic29s
dXRlQ29vcmRpbmF0ZXMoZm9jdXNlZEVsZW1lbnQsIHRydWUgLyogaWdub3JlIGJvcmRlciAqLyk7
CisKKyAgICAgICAgKytwb3RlbnRpYWxGb3JjZWRMYXlvdXRDb3VudGVycy5mb2N1czsKKyAgICAg
ICAgaWYgKGZyYW1lRWxlbWVudC0+Y29udGVudEZyYW1lKCktPmRvY3VtZW50KCktPm5lZWRzVXBk
YXRlTGF5b3V0KCkpCisgICAgICAgICAgICArK2ZvcmNlZExheW91dENvdW50ZXJzLmZvY3VzOwor
CiAgICAgICAgIGZyYW1lRWxlbWVudC0+Y29udGVudEZyYW1lKCktPmRvY3VtZW50KCktPnVwZGF0
ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cygpOwogICAgICAgICBpZiAoIWFkdmFuY2VG
b2N1c0RpcmVjdGlvbmFsbHlJbkNvbnRhaW5lcihmcmFtZUVsZW1lbnQtPmNvbnRlbnRGcmFtZSgp
LT5kb2N1bWVudCgpLCByZWN0LCBkaXJlY3Rpb24sIGV2ZW50KSkgewogICAgICAgICAgICAgLy8g
VGhlIG5ldyBmcmFtZSBoYWQgbm90aGluZyBpbnRlcmVzdGluZywgbmVlZCB0byBmaW5kIGFub3Ro
ZXIgY2FuZGlkYXRlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCmluZGV4IGNiNDE1ZDAuLjMz
YTNlZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKQEAgLTIwMzQsNiArMjAzNCwxMCBA
QCB2b2lkIEZyYW1lVmlldzo6bWFpbnRhaW5TY3JvbGxQb3NpdGlvbkF0QW5jaG9yKENvbnRhaW5l
ck5vZGUqIGFuY2hvck5vZGUpCiAKIHZvaWQgRnJhbWVWaWV3OjpzY3JvbGxFbGVtZW50VG9SZWN0
KEVsZW1lbnQqIGVsZW1lbnQsIGNvbnN0IEludFJlY3QmIHJlY3QpCiB7CisgICAgKytwb3RlbnRp
YWxGb3JjZWRMYXlvdXRDb3VudGVycy5wcm9ncmFtbWF0aWNTY3JvbGw7CisgICAgaWYgKGZyYW1l
KCkuZG9jdW1lbnQoKS0+bmVlZHNVcGRhdGVMYXlvdXQoKSkKKyAgICAgICAgKytmb3JjZWRMYXlv
dXRDb3VudGVycy5wcm9ncmFtbWF0aWNTY3JvbGw7CisKICAgICBmcmFtZSgpLmRvY3VtZW50KCkt
PnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cygpOwogCiAgICAgTGF5b3V0UmVj
dCBib3VuZHM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5
ZXJDb21wb3NpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNv
bXBvc2l0b3IuY3BwCmluZGV4IGM0ZWVjMmMuLmY1YTk0MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCkBAIC02NjUsNiArNjY1
LDkgQEAgdm9pZCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OmNhbmNlbENvbXBvc2l0aW5nTGF5ZXJV
cGRhdGUoKQogICAgIG1fdXBkYXRlQ29tcG9zaXRpbmdMYXllcnNUaW1lci5zdG9wKCk7CiB9CiAK
K2ludCBmb3JjZWRIaWVyYXJjaHlVcGRhdGVzOworaW50IGZvcmNlZEdlb21ldHJ5VXBkYXRlczsK
Kwogdm9pZCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnVwZGF0ZUNvbXBvc2l0aW5nTGF5ZXJzKENv
bXBvc2l0aW5nVXBkYXRlVHlwZSB1cGRhdGVUeXBlLCBSZW5kZXJMYXllciogdXBkYXRlUm9vdCkK
IHsKICAgICBtX3VwZGF0ZUNvbXBvc2l0aW5nTGF5ZXJzVGltZXIuc3RvcCgpOwpAQCAtNzc4LDcg
Kzc4MSwxNSBAQCB2b2lkIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6dXBkYXRlQ29tcG9zaXRpbmdM
YXllcnMoQ29tcG9zaXRpbmdVcGRhdGVUeXBlIHVwZGF0ZQogICAgICAgICB1cGRhdGVMYXllclRy
ZWVHZW9tZXRyeSgqdXBkYXRlUm9vdCwgMCk7CiAgICAgICAgIEFTU0VSVCghaXNGdWxsVXBkYXRl
IHx8ICFtX3N1YmZyYW1lU2Nyb2xsTGF5ZXJzTmVlZFJlYXR0YWNoKTsKICAgICB9Ci0gICAgCisK
KworICAgIGlmIChpbkZvcmNlZExheW91dCkgeworICAgICAgICBpZiAobmVlZEhpZXJhcmNoeVVw
ZGF0ZSkKKyAgICAgICAgICAgICsrZm9yY2VkSGllcmFyY2h5VXBkYXRlczsKKyAgICAgICAgZWxz
ZSBpZiAobmVlZEdlb21ldHJ5VXBkYXRlKQorICAgICAgICAgICAgKytmb3JjZWRHZW9tZXRyeVVw
ZGF0ZXM7CisgICAgfQorCiAjaWYgIUxPR19ESVNBQkxFRAogICAgIGlmIChjb21wb3NpdGluZ0xv
Z0VuYWJsZWQoKSAmJiBpc0Z1bGxVcGRhdGUgJiYgKG5lZWRIaWVyYXJjaHlVcGRhdGUgfHwgbmVl
ZEdlb21ldHJ5VXBkYXRlKSkgewogICAgICAgICBkb3VibGUgZW5kVGltZSA9IG1vbm90b25pY2Fs
bHlJbmNyZWFzaW5nVGltZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxheWVyQ29tcG9zaXRvci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxheWVyQ29tcG9zaXRvci5oCmluZGV4IDBjZjAyNTYuLmM0MDFmNDggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmgKQEAgLTg1LDYgKzg1
LDkgQEAgZW51bSB7CiB9OwogdHlwZWRlZiB1bnNpZ25lZCBDb21wb3NpdGluZ1JlYXNvbnM7CiAK
K2V4dGVybiBpbnQgZm9yY2VkSGllcmFyY2h5VXBkYXRlczsKK2V4dGVybiBpbnQgZm9yY2VkR2Vv
bWV0cnlVcGRhdGVzOworCiAvLyBSZW5kZXJMYXllckNvbXBvc2l0b3IgbWFuYWdlcyB0aGUgaGll
cmFyY2h5IG9mCiAvLyBjb21wb3NpdGVkIFJlbmRlckxheWVycy4gSXQgZGV0ZXJtaW5lcyB3aGlj
aCBSZW5kZXJMYXllcnMKIC8vIGJlY29tZSBjb21wb3NpdGluZywgYW5kIGNyZWF0ZXMgYW5kIG1h
aW50YWlucyBhIGhpZXJhcmNoeSBvZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0xvY2F0YWJsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTG9jYXRhYmxlLmNwcAppbmRl
eCA5ZjJhNTU0Li44OTU5OWM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTG9j
YXRhYmxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTG9jYXRhYmxlLmNwcApAQCAt
NjQsOCArNjQsMTMgQEAgU1ZHRWxlbWVudCogU1ZHTG9jYXRhYmxlOjpmYXJ0aGVzdFZpZXdwb3J0
RWxlbWVudChjb25zdCBTVkdFbGVtZW50KiBlbGVtZW50KQogRmxvYXRSZWN0IFNWR0xvY2F0YWJs
ZTo6Z2V0QkJveChTVkdFbGVtZW50KiBlbGVtZW50LCBTdHlsZVVwZGF0ZVN0cmF0ZWd5IHN0eWxl
VXBkYXRlU3RyYXRlZ3kpCiB7CiAgICAgQVNTRVJUKGVsZW1lbnQpOwotICAgIGlmIChzdHlsZVVw
ZGF0ZVN0cmF0ZWd5ID09IEFsbG93U3R5bGVVcGRhdGUpCisgICAgaWYgKHN0eWxlVXBkYXRlU3Ry
YXRlZ3kgPT0gQWxsb3dTdHlsZVVwZGF0ZSkgeworICAgICAgICArK3BvdGVudGlhbEZvcmNlZExh
eW91dENvdW50ZXJzLnN2Z0JvdW5kczsKKyAgICAgICAgaWYgKGVsZW1lbnQtPmRvY3VtZW50KCku
bmVlZHNVcGRhdGVMYXlvdXQoKSkKKyAgICAgICAgICAgICsrZm9yY2VkTGF5b3V0Q291bnRlcnMu
c3ZnQm91bmRzOworCiAgICAgICAgIGVsZW1lbnQtPmRvY3VtZW50KCkudXBkYXRlTGF5b3V0SWdu
b3JlUGVuZGluZ1N0eWxlc2hlZXRzKCk7CisgICAgfQogCiAgICAgLy8gRklYTUU6IEV2ZW50dWFs
bHkgd2Ugc2hvdWxkIHN1cHBvcnQgZ2V0QkJveCBmb3IgZGV0YWNoZWQgZWxlbWVudHMuCiAgICAg
aWYgKCFlbGVtZW50LT5yZW5kZXJlcigpKQpAQCAtNzcsOCArODIsMTIgQEAgRmxvYXRSZWN0IFNW
R0xvY2F0YWJsZTo6Z2V0QkJveChTVkdFbGVtZW50KiBlbGVtZW50LCBTdHlsZVVwZGF0ZVN0cmF0
ZWd5IHN0eWxlVXAKIEFmZmluZVRyYW5zZm9ybSBTVkdMb2NhdGFibGU6OmNvbXB1dGVDVE0oU1ZH
RWxlbWVudCogZWxlbWVudCwgQ1RNU2NvcGUgbW9kZSwgU3R5bGVVcGRhdGVTdHJhdGVneSBzdHls
ZVVwZGF0ZVN0cmF0ZWd5KQogewogICAgIEFTU0VSVChlbGVtZW50KTsKLSAgICBpZiAoc3R5bGVV
cGRhdGVTdHJhdGVneSA9PSBBbGxvd1N0eWxlVXBkYXRlKQorICAgIGlmIChzdHlsZVVwZGF0ZVN0
cmF0ZWd5ID09IEFsbG93U3R5bGVVcGRhdGUpIHsKKyAgICAgICAgKytwb3RlbnRpYWxGb3JjZWRM
YXlvdXRDb3VudGVycy5zdmdCb3VuZHM7CisgICAgICAgIGlmIChlbGVtZW50LT5kb2N1bWVudCgp
Lm5lZWRzVXBkYXRlTGF5b3V0KCkpCisgICAgICAgICAgICArK2ZvcmNlZExheW91dENvdW50ZXJz
LnN2Z0JvdW5kczsKICAgICAgICAgZWxlbWVudC0+ZG9jdW1lbnQoKS51cGRhdGVMYXlvdXRJZ25v
cmVQZW5kaW5nU3R5bGVzaGVldHMoKTsKKyAgICB9CiAKICAgICBBZmZpbmVUcmFuc2Zvcm0gY3Rt
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aEVsZW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhFbGVtZW50LmNwcAppbmRleCAzYzg3MjU3Li4yZWIy
MDRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aEVsZW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoRWxlbWVudC5jcHAKQEAgLTM4OSw4ICszODks
MTQgQEAgdm9pZCBTVkdQYXRoRWxlbWVudDo6cGF0aFNlZ0xpc3RDaGFuZ2VkKFNWR1BhdGhTZWdS
b2xlIHJvbGUsIExpc3RNb2RpZmljYXRpb24gbGkKIAogRmxvYXRSZWN0IFNWR1BhdGhFbGVtZW50
OjpnZXRCQm94KFN0eWxlVXBkYXRlU3RyYXRlZ3kgc3R5bGVVcGRhdGVTdHJhdGVneSkKIHsKLSAg
ICBpZiAoc3R5bGVVcGRhdGVTdHJhdGVneSA9PSBBbGxvd1N0eWxlVXBkYXRlKQorICAgIGlmIChz
dHlsZVVwZGF0ZVN0cmF0ZWd5ID09IEFsbG93U3R5bGVVcGRhdGUpIHsKKworICAgICAgICArK3Bv
dGVudGlhbEZvcmNlZExheW91dENvdW50ZXJzLnN2Z0JvdW5kczsKKyAgICAgICAgaWYgKGRvY3Vt
ZW50KCkubmVlZHNVcGRhdGVMYXlvdXQoKSkKKyAgICAgICAgICAgICsrZm9yY2VkTGF5b3V0Q291
bnRlcnMuc3ZnQm91bmRzOworCiAgICAgICAgIGRvY3VtZW50KCkudXBkYXRlTGF5b3V0SWdub3Jl
UGVuZGluZ1N0eWxlc2hlZXRzKCk7CisgICAgfQogCiAgICAgUmVuZGVyU1ZHUGF0aCogcmVuZGVy
ZXIgPSBkb3duY2FzdDxSZW5kZXJTVkdQYXRoPih0aGlzLT5yZW5kZXJlcigpKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRDb250ZW50RWxlbWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHVGV4dENvbnRlbnRFbGVtZW50LmNwcAppbmRleCBkOTBkZjYxLi40
ZWExZjBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dENvbnRlbnRFbGVt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dENvbnRlbnRFbGVtZW50LmNw
cApAQCAtMTAyLDE4ICsxMDIsMzAgQEAgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBTVkdUZXh0Q29u
dGVudEVsZW1lbnQ6OnRleHRMZW5ndGhBbmltYXRlZCgpCiAKIHVuc2lnbmVkIFNWR1RleHRDb250
ZW50RWxlbWVudDo6Z2V0TnVtYmVyT2ZDaGFycygpCiB7CisgICAgKytwb3RlbnRpYWxGb3JjZWRM
YXlvdXRDb3VudGVycy5zdmdUZXh0OworICAgIGlmIChkb2N1bWVudCgpLm5lZWRzVXBkYXRlTGF5
b3V0KCkpCisgICAgICAgICsrZm9yY2VkTGF5b3V0Q291bnRlcnMuc3ZnVGV4dDsKKwogICAgIGRv
Y3VtZW50KCkudXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKCk7CiAgICAgcmV0
dXJuIFNWR1RleHRRdWVyeShyZW5kZXJlcigpKS5udW1iZXJPZkNoYXJhY3RlcnMoKTsKIH0KIAog
ZmxvYXQgU1ZHVGV4dENvbnRlbnRFbGVtZW50OjpnZXRDb21wdXRlZFRleHRMZW5ndGgoKQogewor
ICAgICsrcG90ZW50aWFsRm9yY2VkTGF5b3V0Q291bnRlcnMuc3ZnVGV4dDsKKyAgICBpZiAoZG9j
dW1lbnQoKS5uZWVkc1VwZGF0ZUxheW91dCgpKQorICAgICAgICArK2ZvcmNlZExheW91dENvdW50
ZXJzLnN2Z1RleHQ7CisKICAgICBkb2N1bWVudCgpLnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdT
dHlsZXNoZWV0cygpOwogICAgIHJldHVybiBTVkdUZXh0UXVlcnkocmVuZGVyZXIoKSkudGV4dExl
bmd0aCgpOwogfQogCiBmbG9hdCBTVkdUZXh0Q29udGVudEVsZW1lbnQ6OmdldFN1YlN0cmluZ0xl
bmd0aCh1bnNpZ25lZCBjaGFybnVtLCB1bnNpZ25lZCBuY2hhcnMsIEV4Y2VwdGlvbkNvZGUmIGVj
KQogeworICAgICsrcG90ZW50aWFsRm9yY2VkTGF5b3V0Q291bnRlcnMuc3ZnVGV4dDsKKyAgICBp
ZiAoZG9jdW1lbnQoKS5uZWVkc1VwZGF0ZUxheW91dCgpKQorICAgICAgICArK2ZvcmNlZExheW91
dENvdW50ZXJzLnN2Z1RleHQ7CisKICAgICBkb2N1bWVudCgpLnVwZGF0ZUxheW91dElnbm9yZVBl
bmRpbmdTdHlsZXNoZWV0cygpOwogCiAgICAgdW5zaWduZWQgbnVtYmVyT2ZDaGFycyA9IGdldE51
bWJlck9mQ2hhcnMoKTsKQEAgLTEyNyw2ICsxMzksMTAgQEAgZmxvYXQgU1ZHVGV4dENvbnRlbnRF
bGVtZW50OjpnZXRTdWJTdHJpbmdMZW5ndGgodW5zaWduZWQgY2hhcm51bSwgdW5zaWduZWQgbmNo
YXIKIAogU1ZHUG9pbnQgU1ZHVGV4dENvbnRlbnRFbGVtZW50OjpnZXRTdGFydFBvc2l0aW9uT2ZD
aGFyKHVuc2lnbmVkIGNoYXJudW0sIEV4Y2VwdGlvbkNvZGUmIGVjKQogeworICAgICsrcG90ZW50
aWFsRm9yY2VkTGF5b3V0Q291bnRlcnMuc3ZnVGV4dDsKKyAgICBpZiAoZG9jdW1lbnQoKS5uZWVk
c1VwZGF0ZUxheW91dCgpKQorICAgICAgICArK2ZvcmNlZExheW91dENvdW50ZXJzLnN2Z1RleHQ7
CisKICAgICBkb2N1bWVudCgpLnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cygp
OwogCiAgICAgaWYgKGNoYXJudW0gPiBnZXROdW1iZXJPZkNoYXJzKCkpIHsKQEAgLTEzOSw2ICsx
NTUsMTAgQEAgU1ZHUG9pbnQgU1ZHVGV4dENvbnRlbnRFbGVtZW50OjpnZXRTdGFydFBvc2l0aW9u
T2ZDaGFyKHVuc2lnbmVkIGNoYXJudW0sIEV4Y2VwdGkKIAogU1ZHUG9pbnQgU1ZHVGV4dENvbnRl
bnRFbGVtZW50OjpnZXRFbmRQb3NpdGlvbk9mQ2hhcih1bnNpZ25lZCBjaGFybnVtLCBFeGNlcHRp
b25Db2RlJiBlYykKIHsKKyAgICArK3BvdGVudGlhbEZvcmNlZExheW91dENvdW50ZXJzLnN2Z1Rl
eHQ7CisgICAgaWYgKGRvY3VtZW50KCkubmVlZHNVcGRhdGVMYXlvdXQoKSkKKyAgICAgICAgKytm
b3JjZWRMYXlvdXRDb3VudGVycy5zdmdUZXh0OworCiAgICAgZG9jdW1lbnQoKS51cGRhdGVMYXlv
dXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVldHMoKTsKIAogICAgIGlmIChjaGFybnVtID4gZ2V0TnVt
YmVyT2ZDaGFycygpKSB7CkBAIC0xNTEsNiArMTcxLDEwIEBAIFNWR1BvaW50IFNWR1RleHRDb250
ZW50RWxlbWVudDo6Z2V0RW5kUG9zaXRpb25PZkNoYXIodW5zaWduZWQgY2hhcm51bSwgRXhjZXB0
aW9uCiAKIEZsb2F0UmVjdCBTVkdUZXh0Q29udGVudEVsZW1lbnQ6OmdldEV4dGVudE9mQ2hhcih1
bnNpZ25lZCBjaGFybnVtLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKKyAgICArK3BvdGVudGlhbEZv
cmNlZExheW91dENvdW50ZXJzLnN2Z1RleHQ7CisgICAgaWYgKGRvY3VtZW50KCkubmVlZHNVcGRh
dGVMYXlvdXQoKSkKKyAgICAgICAgKytmb3JjZWRMYXlvdXRDb3VudGVycy5zdmdUZXh0OworCiAg
ICAgZG9jdW1lbnQoKS51cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVldHMoKTsKIAog
ICAgIGlmIChjaGFybnVtID4gZ2V0TnVtYmVyT2ZDaGFycygpKSB7CkBAIC0xNjMsNiArMTg3LDEw
IEBAIEZsb2F0UmVjdCBTVkdUZXh0Q29udGVudEVsZW1lbnQ6OmdldEV4dGVudE9mQ2hhcih1bnNp
Z25lZCBjaGFybnVtLCBFeGNlcHRpb25Db2RlCiAKIGZsb2F0IFNWR1RleHRDb250ZW50RWxlbWVu
dDo6Z2V0Um90YXRpb25PZkNoYXIodW5zaWduZWQgY2hhcm51bSwgRXhjZXB0aW9uQ29kZSYgZWMp
CiB7CisgICAgKytwb3RlbnRpYWxGb3JjZWRMYXlvdXRDb3VudGVycy5zdmdUZXh0OworICAgIGlm
IChkb2N1bWVudCgpLm5lZWRzVXBkYXRlTGF5b3V0KCkpCisgICAgICAgICsrZm9yY2VkTGF5b3V0
Q291bnRlcnMuc3ZnVGV4dDsKKwogICAgIGRvY3VtZW50KCkudXBkYXRlTGF5b3V0SWdub3JlUGVu
ZGluZ1N0eWxlc2hlZXRzKCk7CiAKICAgICBpZiAoY2hhcm51bSA+IGdldE51bWJlck9mQ2hhcnMo
KSkgewpAQCAtMTc1LDYgKzIwMywxMCBAQCBmbG9hdCBTVkdUZXh0Q29udGVudEVsZW1lbnQ6Omdl
dFJvdGF0aW9uT2ZDaGFyKHVuc2lnbmVkIGNoYXJudW0sIEV4Y2VwdGlvbkNvZGUmCiAKIGludCBT
VkdUZXh0Q29udGVudEVsZW1lbnQ6OmdldENoYXJOdW1BdFBvc2l0aW9uKGNvbnN0IFNWR1BvaW50
JiBwb2ludCkKIHsKKyAgICArK3BvdGVudGlhbEZvcmNlZExheW91dENvdW50ZXJzLnN2Z1RleHQ7
CisgICAgaWYgKGRvY3VtZW50KCkubmVlZHNVcGRhdGVMYXlvdXQoKSkKKyAgICAgICAgKytmb3Jj
ZWRMYXlvdXRDb3VudGVycy5zdmdUZXh0OworCiAgICAgZG9jdW1lbnQoKS51cGRhdGVMYXlvdXRJ
Z25vcmVQZW5kaW5nU3R5bGVzaGVldHMoKTsKICAgICByZXR1cm4gU1ZHVGV4dFF1ZXJ5KHJlbmRl
cmVyKCkpLmNoYXJhY3Rlck51bWJlckF0UG9zaXRpb24ocG9pbnQpOwogfQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>