<?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>218162</bug_id>
          
          <creation_ts>2020-10-25 11:58:22 -0700</creation_ts>
          <short_desc>Make WebCore::FocusDirection to enum class</short_desc>
          <delta_ts>2020-10-27 02:03:31 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Tetsuharu Ohzeki [UTC+9]">tetsuharu.ohzeki</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>cdumez</cc>
    
    <cc>changseok</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>darin</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hi</cc>
    
    <cc>kangil.han</cc>
    
    <cc>mifenton</cc>
    
    <cc>rniwa</cc>
    
    <cc>sam</cc>
    
    <cc>smoley</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1701316</commentid>
    <comment_count>0</comment_count>
    <who name="Tetsuharu Ohzeki [UTC+9]">tetsuharu.ohzeki</who>
    <bug_when>2020-10-25 11:58:22 -0700</bug_when>
    <thetext>...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1701318</commentid>
    <comment_count>1</comment_count>
      <attachid>412275</attachid>
    <who name="Tetsuharu Ohzeki [UTC+9]">tetsuharu.ohzeki</who>
    <bug_when>2020-10-25 12:45:05 -0700</bug_when>
    <thetext>Created attachment 412275
wip</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1701355</commentid>
    <comment_count>2</comment_count>
      <attachid>412290</attachid>
    <who name="Tetsuharu Ohzeki [UTC+9]">tetsuharu.ohzeki</who>
    <bug_when>2020-10-25 23:17:06 -0700</bug_when>
    <thetext>Created attachment 412290
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1701623</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-10-26 14:22:15 -0700</bug_when>
    <thetext>&lt;rdar://problem/70695016&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1701635</commentid>
    <comment_count>4</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2020-10-26 14:36:34 -0700</bug_when>
    <thetext>Nice!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1701801</commentid>
    <comment_count>5</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-10-27 02:03:30 -0700</bug_when>
    <thetext>Committed r269027: &lt;https://trac.webkit.org/changeset/269027&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 412290.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>412275</attachid>
            <date>2020-10-25 12:45:05 -0700</date>
            <delta_ts>2020-10-25 23:17:02 -0700</delta_ts>
            <desc>wip</desc>
            <filename>bug-218162-20201026044504.patch</filename>
            <type>text/plain</type>
            <size>42230</size>
            <attacher name="Tetsuharu Ohzeki [UTC+9]">tetsuharu.ohzeki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY4OTU3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCAz
MjAxMWZkMmMwMWE5Y2YxNTRhNjhhY2Q2NjU2ZDcxMjY1MjgwZGQ5Li41NjBlZmZhNjVmMjgxMzg1
YTFjZjZlMjZkYmU4Yzc1MDI2MzRiZTcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTQy
NDQsNyArNDI0NCw3IEBAIHZvaWQgRG9jdW1lbnQ6OmFkanVzdEZvY3VzZWROb2RlT25Ob2RlUmVt
b3ZhbChOb2RlJiBub2RlLCBOb2RlUmVtb3ZhbCBub2RlUmVtb3ZhCiAgICAgICAgIC8vIEZJWE1F
OiBXZSBzaG91bGQgYXZvaWQgc3luY2hyb25vdXNseSB1cGRhdGluZyB0aGUgc3R5bGUgaW5zaWRl
IHNldEZvY3VzZWRFbGVtZW50LgogICAgICAgICAvLyBGSVhNRTogT2JqZWN0IGVsZW1lbnRzIHNo
b3VsZCBhdm9pZCBsb2FkaW5nIGEgZnJhbWUgc3luY2hyb25vdXNseSBpbiBhIHBvc3Qgc3R5bGUg
cmVjYWxjIGNhbGxiYWNrLgogICAgICAgICBTdWJmcmFtZUxvYWRpbmdEaXNhYmxlciBkaXNhYmxl
cihpczxDb250YWluZXJOb2RlPihub2RlKSA/ICZkb3duY2FzdDxDb250YWluZXJOb2RlPihub2Rl
KSA6IG51bGxwdHIpOwotICAgICAgICBzZXRGb2N1c2VkRWxlbWVudChudWxscHRyLCBGb2N1c0Rp
cmVjdGlvbk5vbmUsIEZvY3VzUmVtb3ZhbEV2ZW50c01vZGU6OkRvTm90RGlzcGF0Y2gpOworICAg
ICAgICBzZXRGb2N1c2VkRWxlbWVudChudWxscHRyLCBGb2N1c0RpcmVjdGlvbjo6Tm9uZSwgRm9j
dXNSZW1vdmFsRXZlbnRzTW9kZTo6RG9Ob3REaXNwYXRjaCk7CiAgICAgICAgIC8vIFNldCB0aGUg
Zm9jdXMgbmF2aWdhdGlvbiBzdGFydGluZyBub2RlIHRvIHRoZSBwcmV2aW91cyBmb2N1c2VkIGVs
ZW1lbnQgc28gdGhhdAogICAgICAgICAvLyB3ZSBjYW4gZmFsbGJhY2sgdG8gdGhlIHNpYmxpbmdz
IG9yIHBhcmVudCBub2RlIGZvciB0aGUgbmV4dCBzZWFyY2guCiAgICAgICAgIC8vIEFsc28gd2Ug
bmVlZCB0byBjYWxsIHJlbW92ZUZvY3VzTmF2aWdhdGlvbk5vZGVPZlN1YnRyZWUgYWZ0ZXIgdGhp
cyBmdW5jdGlvbiBiZWNhdXNlCkBAIC00NTI1LDcgKzQ1MjUsNyBAQCBFbGVtZW50KiBEb2N1bWVu
dDo6Zm9jdXNOYXZpZ2F0aW9uU3RhcnRpbmdOb2RlKEZvY3VzRGlyZWN0aW9uIGRpcmVjdGlvbikg
Y29uc3QKICAgICAgICAgTm9kZSogbmV4dE5vZGUgPSBOb2RlVHJhdmVyc2FsOjpuZXh0KCpub2Rl
KTsKICAgICAgICAgaWYgKCFuZXh0Tm9kZSkKICAgICAgICAgICAgIG5leHROb2RlID0gbm9kZTsK
LSAgICAgICAgaWYgKGRpcmVjdGlvbiA9PSBGb2N1c0RpcmVjdGlvbkZvcndhcmQpCisgICAgICAg
IGlmIChkaXJlY3Rpb24gPT0gRm9jdXNEaXJlY3Rpb246OkZvcndhcmQpCiAgICAgICAgICAgICBy
ZXR1cm4gRWxlbWVudFRyYXZlcnNhbDo6cHJldmlvdXMoKm5leHROb2RlKTsKICAgICAgICAgaWYg
KGlzPEVsZW1lbnQ+KCpuZXh0Tm9kZSkpCiAgICAgICAgICAgICByZXR1cm4gZG93bmNhc3Q8RWxl
bWVudD4obmV4dE5vZGUpOwpAQCAtNDUzNCw3ICs0NTM0LDcgQEAgRWxlbWVudCogRG9jdW1lbnQ6
OmZvY3VzTmF2aWdhdGlvblN0YXJ0aW5nTm9kZShGb2N1c0RpcmVjdGlvbiBkaXJlY3Rpb24pIGNv
bnN0CiAKICAgICBpZiAoaXM8RWxlbWVudD4oKm5vZGUpKQogICAgICAgICByZXR1cm4gZG93bmNh
c3Q8RWxlbWVudD4obm9kZSk7Ci0gICAgaWYgKEVsZW1lbnQqIGVsZW1lbnRCZWZvcmVOZXh0Rm9j
dXNhYmxlRWxlbWVudCA9IGRpcmVjdGlvbiA9PSBGb2N1c0RpcmVjdGlvbkZvcndhcmQgPyBFbGVt
ZW50VHJhdmVyc2FsOjpwcmV2aW91cygqbm9kZSkgOiBFbGVtZW50VHJhdmVyc2FsOjpuZXh0KCpu
b2RlKSkKKyAgICBpZiAoRWxlbWVudCogZWxlbWVudEJlZm9yZU5leHRGb2N1c2FibGVFbGVtZW50
ID0gZGlyZWN0aW9uID09IEZvY3VzRGlyZWN0aW9uOjpGb3J3YXJkID8gRWxlbWVudFRyYXZlcnNh
bDo6cHJldmlvdXMoKm5vZGUpIDogRWxlbWVudFRyYXZlcnNhbDo6bmV4dCgqbm9kZSkpCiAgICAg
ICAgIHJldHVybiBlbGVtZW50QmVmb3JlTmV4dEZvY3VzYWJsZUVsZW1lbnQ7CiAgICAgcmV0dXJu
IG5vZGUtPnBhcmVudE9yU2hhZG93SG9zdEVsZW1lbnQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgK
aW5kZXggODEyMDE0MTUxZWUxMTA5YTQwYTI3NjQ3MjU2MWY2NGI1YzhjMGE3ZS4uOWU3YTFmZjZk
MWZlMmYwYWZmZjM1OWExMmNjM2FkMjJkOTk3MzIzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKQEAg
LTc0OSw3ICs3NDksNyBAQCBwdWJsaWM6CiAgICAgZW51bSBjbGFzcyBGb2N1c1JlbW92YWxFdmVu
dHNNb2RlIHsgRGlzcGF0Y2gsIERvTm90RGlzcGF0Y2ggfTsKICAgICAvLyBSZXR1cm5zIHdoZXRo
ZXIgZm9jdXMgd2FzIGJsb2NrZWQuIEEgdHJ1ZSB2YWx1ZSBkb2VzIG5vdCBuZWNlc3NhcmlseSBt
ZWFuIHRoZSBlbGVtZW50IHdhcyBmb2N1c2VkLgogICAgIC8vIFRoZSBlbGVtZW50IGNvdWxkIGhh
dmUgYWxyZWFkeSBiZWVuIGZvY3VzZWQgb3IgbWF5IG5vdCBiZSBmb2N1c2FibGUgKGUuZy4gPGlu
cHV0IGRpc2FibGVkPikuCi0gICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBzZXRGb2N1c2VkRWxlbWVu
dChFbGVtZW50KiwgRm9jdXNEaXJlY3Rpb24gPSBGb2N1c0RpcmVjdGlvbk5vbmUsCisgICAgV0VC
Q09SRV9FWFBPUlQgYm9vbCBzZXRGb2N1c2VkRWxlbWVudChFbGVtZW50KiwgRm9jdXNEaXJlY3Rp
b24gPSBGb2N1c0RpcmVjdGlvbjo6Tm9uZSwKICAgICAgICAgRm9jdXNSZW1vdmFsRXZlbnRzTW9k
ZSA9IEZvY3VzUmVtb3ZhbEV2ZW50c01vZGU6OkRpc3BhdGNoKTsKICAgICBFbGVtZW50KiBmb2N1
c2VkRWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fZm9jdXNlZEVsZW1lbnQuZ2V0KCk7IH0KICAg
ICBVc2VyQWN0aW9uRWxlbWVudFNldCYgdXNlckFjdGlvbkVsZW1lbnRzKCkgIHsgcmV0dXJuIG1f
dXNlckFjdGlvbkVsZW1lbnRzOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxl
bWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAppbmRleCA1NjY1MjNkMzM0NzI5
ODkzMWI1MTAzZjM5NGQxMzljZWUyNGYwMmQyLi4xOTc0Mjk5MDUwMzg0NzEyMDM0NzUxZTgwZWVj
ZTljNmE4ZTYwYzIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKQEAgLTQwMCw3ICs0MDAsNyBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCBTdHJpbmcgdGFyZ2V0KCkgY29uc3QgeyByZXR1cm4gU3RyaW5nKCk7
IH0KIAogICAgIHN0YXRpYyBBWFRleHRTdGF0ZUNoYW5nZUludGVudCBkZWZhdWx0Rm9jdXNUZXh0
U3RhdGVDaGFuZ2VJbnRlbnQoKSB7IHJldHVybiBBWFRleHRTdGF0ZUNoYW5nZUludGVudChBWFRl
eHRTdGF0ZUNoYW5nZVR5cGVTZWxlY3Rpb25Nb3ZlLCBBWFRleHRTZWxlY3Rpb24geyBBWFRleHRT
ZWxlY3Rpb25EaXJlY3Rpb25EaXNjb250aWd1b3VzLCBBWFRleHRTZWxlY3Rpb25HcmFudWxhcml0
eVVua25vd24sIHRydWUgfSk7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZm9jdXMoYm9vbCByZXN0b3Jl
UHJldmlvdXNTZWxlY3Rpb24gPSB0cnVlLCBGb2N1c0RpcmVjdGlvbiA9IEZvY3VzRGlyZWN0aW9u
Tm9uZSk7CisgICAgdmlydHVhbCB2b2lkIGZvY3VzKGJvb2wgcmVzdG9yZVByZXZpb3VzU2VsZWN0
aW9uID0gdHJ1ZSwgRm9jdXNEaXJlY3Rpb24gPSBGb2N1c0RpcmVjdGlvbjo6Tm9uZSk7CiAgICAg
dm9pZCByZXZlYWxGb2N1c2VkRWxlbWVudChTZWxlY3Rpb25SZXN0b3JhdGlvbk1vZGUpOwogICAg
IHZpcnR1YWwgUmVmUHRyPEVsZW1lbnQ+IGZvY3VzQXBwZWFyYW5jZVVwZGF0ZVRhcmdldCgpOwog
ICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVGb2N1c0FwcGVhcmFuY2UoU2VsZWN0aW9uUmVzdG9yYXRp
b25Nb2RlLCBTZWxlY3Rpb25SZXZlYWxNb2RlID0gU2VsZWN0aW9uUmV2ZWFsTW9kZTo6UmV2ZWFs
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvQmFzZURhdGVBbmRUaW1lSW5wdXRU
eXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlLmNw
cAppbmRleCA2ZjllNTQ3M2RmZTMzMTlhMGNjOGVhODE2NTg4YzBiM2FmN2FjYjVlLi5iYTUzNzBm
MmYwODQzZDU0YjY2MWEwYTM4MjdlODI0MzI2NmY1MTUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0Jhc2VEYXRlQW5kVGltZUlucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9CYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGUuY3BwCkBAIC00MzUsNyArNDM1LDcgQEAg
dm9pZCBCYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGU6OmhhbmRsZUZvY3VzRXZlbnQoTm9kZSogb2xk
Rm9jdXNlZE5vZGUsIEZvY3VzRGlyZWMKICAgICAvLyBJZiB0aGUgZWxlbWVudCBjb250YWlucyBl
ZGl0YWJsZSBjb21wb25lbnRzLCB0aGUgZWxlbWVudCBpdHNlbGYgc2hvdWxkIG5vdAogICAgIC8v
IGJlIGZvY3VzZWQuIEluc3RlYWQsIG9uZSBvZiBpdCdzIGNoaWxkcmVuIHNob3VsZCByZWNlaXZl
IGZvY3VzLgogCi0gICAgaWYgKGRpcmVjdGlvbiA9PSBGb2N1c0RpcmVjdGlvbkJhY2t3YXJkKSB7
CisgICAgaWYgKGRpcmVjdGlvbiA9PSBGb2N1c0RpcmVjdGlvbjo6QmFja3dhcmQpIHsKICAgICAg
ICAgLy8gSWYgdGhlIGVsZW1lbnQgcmVjZWl2ZWQgZm9jdXMgd2hlbiBnb2luZyBiYWNrd2FyZHMs
IGFkdmFuY2UgdGhlIGZvY3VzIG9uZSBtb3JlIHRpbWUKICAgICAgICAgLy8gc28gdGhhdCB0aGlz
IGVsZW1lbnQgbm8gbG9uZ2VyIGhhcyBmb2N1cy4gSW4gdGhpcyBjYXNlLCBvbmUgb2YgdGhlIGNo
aWxkcmVuIHNob3VsZAogICAgICAgICAvLyBub3QgYmUgZm9jdXNlZCBhcyB0aGUgZWxlbWVudCBp
cyBsb3NpbmcgZm9jdXMgZW50aXJlbHkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0V2ZW50SGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAK
aW5kZXggNDc1ODg3NjQxZjIwODZhMTE0Mzk4NWVmOGI2NDJiYWY0MzA0NmQ0NS4uYmZkOWE5OTFi
MzZmMDRiMDE4NDA3OGFhNzIyNDdkZDE3OTZmZDU0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRI
YW5kbGVyLmNwcApAQCAtMzQ5NCwxNiArMzQ5NCwxNiBAQCBzdGF0aWMgRm9jdXNEaXJlY3Rpb24g
Zm9jdXNEaXJlY3Rpb25Gb3JLZXkoY29uc3QgQXRvbVN0cmluZyYga2V5SWRlbnRpZmllcikKICAg
ICBzdGF0aWMgTWFpblRocmVhZE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IExlZnQo
IkxlZnQiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgc3RhdGljIE1h
aW5UaHJlYWROZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBSaWdodCgiUmlnaHQiLCBB
dG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAKLSAgICBGb2N1c0RpcmVjdGlvbiBy
ZXRWYWwgPSBGb2N1c0RpcmVjdGlvbk5vbmU7CisgICAgRm9jdXNEaXJlY3Rpb24gcmV0VmFsID0g
Rm9jdXNEaXJlY3Rpb246Ok5vbmU7CiAKICAgICBpZiAoa2V5SWRlbnRpZmllciA9PSBEb3duKQot
ICAgICAgICByZXRWYWwgPSBGb2N1c0RpcmVjdGlvbkRvd247CisgICAgICAgIHJldFZhbCA9IEZv
Y3VzRGlyZWN0aW9uOjpEb3duOwogICAgIGVsc2UgaWYgKGtleUlkZW50aWZpZXIgPT0gVXApCi0g
ICAgICAgIHJldFZhbCA9IEZvY3VzRGlyZWN0aW9uVXA7CisgICAgICAgIHJldFZhbCA9IEZvY3Vz
RGlyZWN0aW9uOjpVcDsKICAgICBlbHNlIGlmIChrZXlJZGVudGlmaWVyID09IExlZnQpCi0gICAg
ICAgIHJldFZhbCA9IEZvY3VzRGlyZWN0aW9uTGVmdDsKKyAgICAgICAgcmV0VmFsID0gRm9jdXNE
aXJlY3Rpb246OkxlZnQ7CiAgICAgZWxzZSBpZiAoa2V5SWRlbnRpZmllciA9PSBSaWdodCkKLSAg
ICAgICAgcmV0VmFsID0gRm9jdXNEaXJlY3Rpb25SaWdodDsKKyAgICAgICAgcmV0VmFsID0gRm9j
dXNEaXJlY3Rpb246OlJpZ2h0OwogCiAgICAgcmV0dXJuIHJldFZhbDsKIH0KQEAgLTM1NTYsMjUg
KzM1NTYsMjUgQEAgc3RhdGljIHZvaWQgaGFuZGxlS2V5Ym9hcmRTZWxlY3Rpb25Nb3ZlbWVudChG
cmFtZSYgZnJhbWUsIEtleWJvYXJkRXZlbnQmIGV2ZW50KQogICAgIFRleHRHcmFudWxhcml0eSBn
cmFudWxhcml0eSA9IFRleHRHcmFudWxhcml0eTo6Q2hhcmFjdGVyR3JhbnVsYXJpdHk7CiAKICAg
ICBzd2l0Y2ggKGZvY3VzRGlyZWN0aW9uRm9yS2V5KGV2ZW50LmtleUlkZW50aWZpZXIoKSkpIHsK
LSAgICBjYXNlIEZvY3VzRGlyZWN0aW9uTm9uZToKKyAgICBjYXNlIEZvY3VzRGlyZWN0aW9uOjpO
b25lOgogICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBGb2N1c0RpcmVjdGlvbkZvcndhcmQ6Ci0g
ICAgY2FzZSBGb2N1c0RpcmVjdGlvbkJhY2t3YXJkOgorICAgIGNhc2UgRm9jdXNEaXJlY3Rpb246
OkZvcndhcmQ6CisgICAgY2FzZSBGb2N1c0RpcmVjdGlvbjo6QmFja3dhcmQ6CiAgICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBGb2N1c0RpcmVj
dGlvblVwOgorICAgIGNhc2UgRm9jdXNEaXJlY3Rpb246OlVwOgogICAgICAgICBkaXJlY3Rpb24g
PSBTZWxlY3Rpb25EaXJlY3Rpb246OkJhY2t3YXJkOwogICAgICAgICBncmFudWxhcml0eSA9IGlz
Q29tbWFuZGVkID8gVGV4dEdyYW51bGFyaXR5OjpEb2N1bWVudEJvdW5kYXJ5IDogVGV4dEdyYW51
bGFyaXR5OjpMaW5lR3JhbnVsYXJpdHk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgRm9jdXNE
aXJlY3Rpb25Eb3duOgorICAgIGNhc2UgRm9jdXNEaXJlY3Rpb246OkRvd246CiAgICAgICAgIGRp
cmVjdGlvbiA9IFNlbGVjdGlvbkRpcmVjdGlvbjo6Rm9yd2FyZDsKICAgICAgICAgZ3JhbnVsYXJp
dHkgPSBpc0NvbW1hbmRlZCA/IFRleHRHcmFudWxhcml0eTo6RG9jdW1lbnRCb3VuZGFyeSA6IFRl
eHRHcmFudWxhcml0eTo6TGluZUdyYW51bGFyaXR5OwogICAgICAgICBicmVhazsKLSAgICBjYXNl
IEZvY3VzRGlyZWN0aW9uTGVmdDoKKyAgICBjYXNlIEZvY3VzRGlyZWN0aW9uOjpMZWZ0OgogICAg
ICAgICBkaXJlY3Rpb24gPSBTZWxlY3Rpb25EaXJlY3Rpb246OkxlZnQ7CiAgICAgICAgIGdyYW51
bGFyaXR5ID0gKGlzQ29tbWFuZGVkKSA/IFRleHRHcmFudWxhcml0eTo6TGluZUJvdW5kYXJ5IDog
KGlzT3B0aW9uZWQpID8gVGV4dEdyYW51bGFyaXR5OjpXb3JkR3JhbnVsYXJpdHkgOiBUZXh0R3Jh
bnVsYXJpdHk6OkNoYXJhY3RlckdyYW51bGFyaXR5OwogICAgICAgICBicmVhazsKLSAgICBjYXNl
IEZvY3VzRGlyZWN0aW9uUmlnaHQ6CisgICAgY2FzZSBGb2N1c0RpcmVjdGlvbjo6UmlnaHQ6CiAg
ICAgICAgIGRpcmVjdGlvbiA9IFNlbGVjdGlvbkRpcmVjdGlvbjo6UmlnaHQ7CiAgICAgICAgIGdy
YW51bGFyaXR5ID0gKGlzQ29tbWFuZGVkKSA/IFRleHRHcmFudWxhcml0eTo6TGluZUJvdW5kYXJ5
IDogKGlzT3B0aW9uZWQpID8gVGV4dEdyYW51bGFyaXR5OjpXb3JkR3JhbnVsYXJpdHkgOiBUZXh0
R3JhbnVsYXJpdHk6OkNoYXJhY3RlckdyYW51bGFyaXR5OwogICAgICAgICBicmVhazsKQEAgLTM2
MDksNyArMzYwOSw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjphY2Nlc3NpYmlsaXR5UHJldmVudHNF
dmVudFByb3BhZ2F0aW9uKEtleWJvYXJkRXZlbnQmIGV2ZW50KQogICAgIGlmIChldmVudC5rZXlJ
ZGVudGlmaWVyKCkgPT0gIlUrMDAwOSIpCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIEZvY3Vz
RGlyZWN0aW9uIGRpcmVjdGlvbiA9IGZvY3VzRGlyZWN0aW9uRm9yS2V5KGV2ZW50LmtleUlkZW50
aWZpZXIoKSk7Ci0gICAgaWYgKGRpcmVjdGlvbiAhPSBGb2N1c0RpcmVjdGlvbk5vbmUpCisgICAg
aWYgKGRpcmVjdGlvbiAhPSBGb2N1c0RpcmVjdGlvbjo6Tm9uZSkKICAgICAgICAgcmV0dXJuIHRy
dWU7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShldmVudCk7CkBAIC0zNjMxLDcgKzM2MzEsNyBA
QCB2b2lkIEV2ZW50SGFuZGxlcjo6ZGVmYXVsdEtleWJvYXJkRXZlbnRIYW5kbGVyKEtleWJvYXJk
RXZlbnQmIGV2ZW50KQogICAgICAgICAgICAgZGVmYXVsdEJhY2tzcGFjZUV2ZW50SGFuZGxlcihl
dmVudCk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgRm9jdXNEaXJlY3Rpb24gZGlyZWN0
aW9uID0gZm9jdXNEaXJlY3Rpb25Gb3JLZXkoZXZlbnQua2V5SWRlbnRpZmllcigpKTsKLSAgICAg
ICAgICAgIGlmIChkaXJlY3Rpb24gIT0gRm9jdXNEaXJlY3Rpb25Ob25lKQorICAgICAgICAgICAg
aWYgKGRpcmVjdGlvbiAhPSBGb2N1c0RpcmVjdGlvbjo6Tm9uZSkKICAgICAgICAgICAgICAgICBk
ZWZhdWx0QXJyb3dFdmVudEhhbmRsZXIoZGlyZWN0aW9uLCBldmVudCk7CiAgICAgICAgIH0KIApA
QCAtNDExMiw3ICs0MTEyLDcgQEAgdm9pZCBFdmVudEhhbmRsZXI6OmRlZmF1bHRUYWJFdmVudEhh
bmRsZXIoS2V5Ym9hcmRFdmVudCYgZXZlbnQpCiAgICAgaWYgKCFwYWdlLT50YWJLZXlDeWNsZXNU
aHJvdWdoRWxlbWVudHMoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKHBhZ2UtPmZvY3Vz
Q29udHJvbGxlcigpLmFkdmFuY2VGb2N1cyhldmVudC5zaGlmdEtleSgpID8gRm9jdXNEaXJlY3Rp
b25CYWNrd2FyZCA6IEZvY3VzRGlyZWN0aW9uRm9yd2FyZCwgJmV2ZW50KSkKKyAgICBpZiAocGFn
ZS0+Zm9jdXNDb250cm9sbGVyKCkuYWR2YW5jZUZvY3VzKGV2ZW50LnNoaWZ0S2V5KCkgPyBGb2N1
c0RpcmVjdGlvbjo6QmFja3dhcmQgOiBGb2N1c0RpcmVjdGlvbjo6Rm9yd2FyZCwgJmV2ZW50KSkK
ICAgICAgICAgZXZlbnQuc2V0RGVmYXVsdEhhbmRsZWQoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9Gb2N1c0NvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9Gb2N1c0NvbnRyb2xsZXIuY3BwCmluZGV4IDYyYTllYTQwY2NjZmI4YjVlY2UzODZjNjM2ZTYz
NmJjYjAzZDk4OTMuLjgyYTY0YzMwNmI4ZWVkN2RhZGIxYTMxNmZiYzg4ZWNiZWMwZTA4NGMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRm9jdXNDb250cm9sbGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL0ZvY3VzQ29udHJvbGxlci5jcHAKQEAgLTMwOCw3ICszMDgsNyBA
QCBzdGF0aWMgaW5saW5lIHZvaWQgZGlzcGF0Y2hFdmVudHNPbldpbmRvd0FuZEZvY3VzZWRFbGVt
ZW50KERvY3VtZW50KiBkb2N1bWVudCwgYgogICAgICAgICBkb2N1bWVudC0+Zm9jdXNlZEVsZW1l
bnQoKS0+ZGlzcGF0Y2hCbHVyRXZlbnQobnVsbHB0cik7CiAgICAgZG9jdW1lbnQtPmRpc3BhdGNo
V2luZG93RXZlbnQoRXZlbnQ6OmNyZWF0ZShmb2N1c2VkID8gZXZlbnROYW1lcygpLmZvY3VzRXZl
bnQgOiBldmVudE5hbWVzKCkuYmx1ckV2ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6
OklzQ2FuY2VsYWJsZTo6Tm8pKTsKICAgICBpZiAoZm9jdXNlZCAmJiBkb2N1bWVudC0+Zm9jdXNl
ZEVsZW1lbnQoKSkKLSAgICAgICAgZG9jdW1lbnQtPmZvY3VzZWRFbGVtZW50KCktPmRpc3BhdGNo
Rm9jdXNFdmVudChudWxscHRyLCBGb2N1c0RpcmVjdGlvbk5vbmUpOworICAgICAgICBkb2N1bWVu
dC0+Zm9jdXNlZEVsZW1lbnQoKS0+ZGlzcGF0Y2hGb2N1c0V2ZW50KG51bGxwdHIsIEZvY3VzRGly
ZWN0aW9uOjpOb25lKTsKIH0KIAogc3RhdGljIGlubGluZSBib29sIGlzRm9jdXNhYmxlRWxlbWVu
dE9yU2NvcGVPd25lcihFbGVtZW50JiBlbGVtZW50LCBLZXlib2FyZEV2ZW50KiBldmVudCkKQEAg
LTQzMywxMyArNDMzLDEzIEBAIGJvb2wgRm9jdXNDb250cm9sbGVyOjpzZXRJbml0aWFsRm9jdXMo
Rm9jdXNEaXJlY3Rpb24gZGlyZWN0aW9uLCBLZXlib2FyZEV2ZW50KiBwCiBib29sIEZvY3VzQ29u
dHJvbGxlcjo6YWR2YW5jZUZvY3VzKEZvY3VzRGlyZWN0aW9uIGRpcmVjdGlvbiwgS2V5Ym9hcmRF
dmVudCogZXZlbnQsIGJvb2wgaW5pdGlhbEZvY3VzKQogewogICAgIHN3aXRjaCAoZGlyZWN0aW9u
KSB7Ci0gICAgY2FzZSBGb2N1c0RpcmVjdGlvbkZvcndhcmQ6Ci0gICAgY2FzZSBGb2N1c0RpcmVj
dGlvbkJhY2t3YXJkOgorICAgIGNhc2UgRm9jdXNEaXJlY3Rpb246OkZvcndhcmQ6CisgICAgY2Fz
ZSBGb2N1c0RpcmVjdGlvbjo6QmFja3dhcmQ6CiAgICAgICAgIHJldHVybiBhZHZhbmNlRm9jdXNJ
bkRvY3VtZW50T3JkZXIoZGlyZWN0aW9uLCBldmVudCwgaW5pdGlhbEZvY3VzKTsKLSAgICBjYXNl
IEZvY3VzRGlyZWN0aW9uTGVmdDoKLSAgICBjYXNlIEZvY3VzRGlyZWN0aW9uUmlnaHQ6Ci0gICAg
Y2FzZSBGb2N1c0RpcmVjdGlvblVwOgotICAgIGNhc2UgRm9jdXNEaXJlY3Rpb25Eb3duOgorICAg
IGNhc2UgRm9jdXNEaXJlY3Rpb246OkxlZnQ6CisgICAgY2FzZSBGb2N1c0RpcmVjdGlvbjo6Umln
aHQ6CisgICAgY2FzZSBGb2N1c0RpcmVjdGlvbjo6VXA6CisgICAgY2FzZSBGb2N1c0RpcmVjdGlv
bjo6RG93bjoKICAgICAgICAgcmV0dXJuIGFkdmFuY2VGb2N1c0RpcmVjdGlvbmFsbHkoZGlyZWN0
aW9uLCBldmVudCk7CiAgICAgZGVmYXVsdDoKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CkBAIC01NDEsNyArNTQxLDcgQEAgRWxlbWVudCogRm9jdXNDb250cm9sbGVyOjpmaW5kRm9jdXNh
YmxlRWxlbWVudEFjcm9zc0ZvY3VzU2NvcGUoRm9jdXNEaXJlY3Rpb24gZGkKIHsKICAgICBBU1NF
UlQoIWlzPEVsZW1lbnQ+KGN1cnJlbnROb2RlKSB8fCAhaXNOb25Gb2N1c2FibGVTY29wZU93bmVy
KGRvd25jYXN0PEVsZW1lbnQ+KCpjdXJyZW50Tm9kZSksIGV2ZW50KSk7CiAKLSAgICBpZiAoY3Vy
cmVudE5vZGUgJiYgZGlyZWN0aW9uID09IEZvY3VzRGlyZWN0aW9uRm9yd2FyZCAmJiBpczxFbGVt
ZW50PihjdXJyZW50Tm9kZSkgJiYgaXNGb2N1c2FibGVTY29wZU93bmVyKGRvd25jYXN0PEVsZW1l
bnQ+KCpjdXJyZW50Tm9kZSksIGV2ZW50KSkgeworICAgIGlmIChjdXJyZW50Tm9kZSAmJiBkaXJl
Y3Rpb24gPT0gRm9jdXNEaXJlY3Rpb246OkZvcndhcmQgJiYgaXM8RWxlbWVudD4oY3VycmVudE5v
ZGUpICYmIGlzRm9jdXNhYmxlU2NvcGVPd25lcihkb3duY2FzdDxFbGVtZW50PigqY3VycmVudE5v
ZGUpLCBldmVudCkpIHsKICAgICAgICAgaWYgKEVsZW1lbnQqIGNhbmRpZGF0ZUluSW5uZXJTY29w
ZSA9IGZpbmRGb2N1c2FibGVFbGVtZW50V2l0aGluU2NvcGUoZGlyZWN0aW9uLCBGb2N1c05hdmln
YXRpb25TY29wZTo6c2NvcGVPd25lZEJ5U2NvcGVPd25lcihkb3duY2FzdDxFbGVtZW50PigqY3Vy
cmVudE5vZGUpKSwgMCwgZXZlbnQpKQogICAgICAgICAgICAgcmV0dXJuIGNhbmRpZGF0ZUluSW5u
ZXJTY29wZTsKICAgICB9CkBAIC01NTIsNyArNTUyLDcgQEAgRWxlbWVudCogRm9jdXNDb250cm9s
bGVyOjpmaW5kRm9jdXNhYmxlRWxlbWVudEFjcm9zc0ZvY3VzU2NvcGUoRm9jdXNEaXJlY3Rpb24g
ZGkKICAgICAvLyBJZiB0aGVyZSdzIG5vIGZvY3VzYWJsZSBub2RlIHRvIGFkdmFuY2UgdG8sIG1v
dmUgdXAgdGhlIGZvY3VzIHNjb3BlcyB1bnRpbCB3ZSBmaW5kIG9uZS4KICAgICBFbGVtZW50KiBv
d25lciA9IHNjb3BlLm93bmVyKCk7CiAgICAgd2hpbGUgKG93bmVyKSB7Ci0gICAgICAgIGlmIChk
aXJlY3Rpb24gPT0gRm9jdXNEaXJlY3Rpb25CYWNrd2FyZCAmJiBpc0ZvY3VzYWJsZVNjb3BlT3du
ZXIoKm93bmVyLCBldmVudCkpCisgICAgICAgIGlmIChkaXJlY3Rpb24gPT0gRm9jdXNEaXJlY3Rp
b246OkJhY2t3YXJkICYmIGlzRm9jdXNhYmxlU2NvcGVPd25lcigqb3duZXIsIGV2ZW50KSkKICAg
ICAgICAgICAgIHJldHVybiBmaW5kRm9jdXNhYmxlRWxlbWVudERlc2NlbmRpbmdJbnRvU3ViZnJh
bWVzKGRpcmVjdGlvbiwgb3duZXIsIGV2ZW50KTsKIAogICAgICAgICBhdXRvIG91dGVyU2NvcGUg
PSBGb2N1c05hdmlnYXRpb25TY29wZTo6c2NvcGVPZigqb3duZXIpOwpAQCAtNTY2LDcgKzU2Niw3
IEBAIEVsZW1lbnQqIEZvY3VzQ29udHJvbGxlcjo6ZmluZEZvY3VzYWJsZUVsZW1lbnRBY3Jvc3NG
b2N1c1Njb3BlKEZvY3VzRGlyZWN0aW9uIGRpCiBFbGVtZW50KiBGb2N1c0NvbnRyb2xsZXI6OmZp
bmRGb2N1c2FibGVFbGVtZW50V2l0aGluU2NvcGUoRm9jdXNEaXJlY3Rpb24gZGlyZWN0aW9uLCBj
b25zdCBGb2N1c05hdmlnYXRpb25TY29wZSYgc2NvcGUsIE5vZGUqIHN0YXJ0LCBLZXlib2FyZEV2
ZW50KiBldmVudCkKIHsKICAgICAvLyBTdGFydGluZyBub2RlIGlzIGV4Y2x1c2l2ZS4KLSAgICBF
bGVtZW50KiBjYW5kaWRhdGUgPSBkaXJlY3Rpb24gPT0gRm9jdXNEaXJlY3Rpb25Gb3J3YXJkCisg
ICAgRWxlbWVudCogY2FuZGlkYXRlID0gZGlyZWN0aW9uID09IEZvY3VzRGlyZWN0aW9uOjpGb3J3
YXJkCiAgICAgICAgID8gbmV4dEZvY3VzYWJsZUVsZW1lbnRXaXRoaW5TY29wZShzY29wZSwgc3Rh
cnQsIGV2ZW50KQogICAgICAgICA6IHByZXZpb3VzRm9jdXNhYmxlRWxlbWVudFdpdGhpblNjb3Bl
KHNjb3BlLCBzdGFydCwgZXZlbnQpOwogICAgIHJldHVybiBmaW5kRm9jdXNhYmxlRWxlbWVudERl
c2NlbmRpbmdJbnRvU3ViZnJhbWVzKGRpcmVjdGlvbiwgY2FuZGlkYXRlLCBldmVudCk7CkBAIC02
MDYsNyArNjA2LDcgQEAgRWxlbWVudCogRm9jdXNDb250cm9sbGVyOjpwcmV2aW91c0ZvY3VzYWJs
ZUVsZW1lbnRXaXRoaW5TY29wZShjb25zdCBGb2N1c05hdmlnYXQKIAogRWxlbWVudCogRm9jdXND
b250cm9sbGVyOjpmaW5kRm9jdXNhYmxlRWxlbWVudE9yU2NvcGVPd25lcihGb2N1c0RpcmVjdGlv
biBkaXJlY3Rpb24sIGNvbnN0IEZvY3VzTmF2aWdhdGlvblNjb3BlJiBzY29wZSwgTm9kZSogbm9k
ZSwgS2V5Ym9hcmRFdmVudCogZXZlbnQpCiB7Ci0gICAgcmV0dXJuIChkaXJlY3Rpb24gPT0gRm9j
dXNEaXJlY3Rpb25Gb3J3YXJkKQorICAgIHJldHVybiAoZGlyZWN0aW9uID09IEZvY3VzRGlyZWN0
aW9uOjpGb3J3YXJkKQogICAgICAgICA/IG5leHRGb2N1c2FibGVFbGVtZW50T3JTY29wZU93bmVy
KHNjb3BlLCBub2RlLCBldmVudCkKICAgICAgICAgOiBwcmV2aW91c0ZvY3VzYWJsZUVsZW1lbnRP
clNjb3BlT3duZXIoc2NvcGUsIG5vZGUsIGV2ZW50KTsKIH0KQEAgLTYxNCw3ICs2MTQsNyBAQCBF
bGVtZW50KiBGb2N1c0NvbnRyb2xsZXI6OmZpbmRGb2N1c2FibGVFbGVtZW50T3JTY29wZU93bmVy
KEZvY3VzRGlyZWN0aW9uIGRpcmVjdAogRWxlbWVudCogRm9jdXNDb250cm9sbGVyOjpmaW5kRWxl
bWVudFdpdGhFeGFjdFRhYkluZGV4KGNvbnN0IEZvY3VzTmF2aWdhdGlvblNjb3BlJiBzY29wZSwg
Tm9kZSogc3RhcnQsIGludCB0YWJJbmRleCwgS2V5Ym9hcmRFdmVudCogZXZlbnQsIEZvY3VzRGly
ZWN0aW9uIGRpcmVjdGlvbikKIHsKICAgICAvLyBTZWFyY2ggaXMgaW5jbHVzaXZlIG9mIHN0YXJ0
Ci0gICAgZm9yIChOb2RlKiBub2RlID0gc3RhcnQ7IG5vZGU7IG5vZGUgPSBkaXJlY3Rpb24gPT0g
Rm9jdXNEaXJlY3Rpb25Gb3J3YXJkID8gc2NvcGUubmV4dEluU2NvcGUobm9kZSkgOiBzY29wZS5w
cmV2aW91c0luU2NvcGUobm9kZSkpIHsKKyAgICBmb3IgKE5vZGUqIG5vZGUgPSBzdGFydDsgbm9k
ZTsgbm9kZSA9IGRpcmVjdGlvbiA9PSBGb2N1c0RpcmVjdGlvbjo6Rm9yd2FyZCA/IHNjb3BlLm5l
eHRJblNjb3BlKG5vZGUpIDogc2NvcGUucHJldmlvdXNJblNjb3BlKG5vZGUpKSB7CiAgICAgICAg
IGlmICghaXM8RWxlbWVudD4oKm5vZGUpKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAg
IEVsZW1lbnQmIGVsZW1lbnQgPSBkb3duY2FzdDxFbGVtZW50Pigqbm9kZSk7CkBAIC02OTQsNyAr
Njk0LDcgQEAgRWxlbWVudCogRm9jdXNDb250cm9sbGVyOjpuZXh0Rm9jdXNhYmxlRWxlbWVudE9y
U2NvcGVPd25lcihjb25zdCBGb2N1c05hdmlnYXRpb24KICAgICAgICAgfQogCiAgICAgICAgIC8v
IEZpcnN0IHRyeSB0byBmaW5kIGEgbm9kZSB3aXRoIHRoZSBzYW1lIHRhYmluZGV4IGFzIHN0YXJ0
IHRoYXQgY29tZXMgYWZ0ZXIgc3RhcnQgaW4gdGhlIHNjb3BlLgotICAgICAgICBpZiAoRWxlbWVu
dCogd2lubmVyID0gZmluZEVsZW1lbnRXaXRoRXhhY3RUYWJJbmRleChzY29wZSwgc2NvcGUubmV4
dEluU2NvcGUoc3RhcnQpLCBzdGFydFRhYkluZGV4LCBldmVudCwgRm9jdXNEaXJlY3Rpb25Gb3J3
YXJkKSkKKyAgICAgICAgaWYgKEVsZW1lbnQqIHdpbm5lciA9IGZpbmRFbGVtZW50V2l0aEV4YWN0
VGFiSW5kZXgoc2NvcGUsIHNjb3BlLm5leHRJblNjb3BlKHN0YXJ0KSwgc3RhcnRUYWJJbmRleCwg
ZXZlbnQsIEZvY3VzRGlyZWN0aW9uOjpGb3J3YXJkKSkKICAgICAgICAgICAgIHJldHVybiB3aW5u
ZXI7CiAKICAgICAgICAgaWYgKCFzdGFydFRhYkluZGV4KQpAQCAtNzA5LDcgKzcwOSw3IEBAIEVs
ZW1lbnQqIEZvY3VzQ29udHJvbGxlcjo6bmV4dEZvY3VzYWJsZUVsZW1lbnRPclNjb3BlT3duZXIo
Y29uc3QgRm9jdXNOYXZpZ2F0aW9uCiAKICAgICAvLyBUaGVyZSBhcmUgbm8gbm9kZXMgd2l0aCBh
IHRhYmluZGV4IGdyZWF0ZXIgdGhhbiBzdGFydCdzIHRhYmluZGV4LAogICAgIC8vIHNvIGZpbmQg
dGhlIGZpcnN0IG5vZGUgd2l0aCBhIHRhYmluZGV4IG9mIDAuCi0gICAgcmV0dXJuIGZpbmRFbGVt
ZW50V2l0aEV4YWN0VGFiSW5kZXgoc2NvcGUsIHNjb3BlLmZpcnN0Tm9kZUluU2NvcGUoKSwgMCwg
ZXZlbnQsIEZvY3VzRGlyZWN0aW9uRm9yd2FyZCk7CisgICAgcmV0dXJuIGZpbmRFbGVtZW50V2l0
aEV4YWN0VGFiSW5kZXgoc2NvcGUsIHNjb3BlLmZpcnN0Tm9kZUluU2NvcGUoKSwgMCwgZXZlbnQs
IEZvY3VzRGlyZWN0aW9uOjpGb3J3YXJkKTsKIH0KIAogRWxlbWVudCogRm9jdXNDb250cm9sbGVy
OjpwcmV2aW91c0ZvY3VzYWJsZUVsZW1lbnRPclNjb3BlT3duZXIoY29uc3QgRm9jdXNOYXZpZ2F0
aW9uU2NvcGUmIHNjb3BlLCBOb2RlKiBzdGFydCwgS2V5Ym9hcmRFdmVudCogZXZlbnQpCkBAIC03
NDEsNyArNzQxLDcgQEAgRWxlbWVudCogRm9jdXNDb250cm9sbGVyOjpwcmV2aW91c0ZvY3VzYWJs
ZUVsZW1lbnRPclNjb3BlT3duZXIoY29uc3QgRm9jdXNOYXZpZ2EKICAgICAgICAgfQogICAgIH0K
IAotICAgIGlmIChFbGVtZW50KiB3aW5uZXIgPSBmaW5kRWxlbWVudFdpdGhFeGFjdFRhYkluZGV4
KHNjb3BlLCBzdGFydGluZ05vZGUsIHN0YXJ0aW5nVGFiSW5kZXgsIGV2ZW50LCBGb2N1c0RpcmVj
dGlvbkJhY2t3YXJkKSkKKyAgICBpZiAoRWxlbWVudCogd2lubmVyID0gZmluZEVsZW1lbnRXaXRo
RXhhY3RUYWJJbmRleChzY29wZSwgc3RhcnRpbmdOb2RlLCBzdGFydGluZ1RhYkluZGV4LCBldmVu
dCwgRm9jdXNEaXJlY3Rpb246OkJhY2t3YXJkKSkKICAgICAgICAgcmV0dXJuIHdpbm5lcjsKIAog
ICAgIC8vIFRoZXJlIGFyZSBubyBub2RlcyBiZWZvcmUgc3RhcnQgd2l0aCB0aGUgc2FtZSB0YWJp
bmRleCBhcyBzdGFydCwgc28gbG9vayBmb3IgYSBub2RlIHRoYXQ6CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0ZvY3VzQ29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9G
b2N1c0NvbnRyb2xsZXIuaAppbmRleCAxN2QzNGM1N2U1MTdhYzI5YTM0NzE2MzkwYjRhNDU0ZTQ2
NDBhYjZhLi4yOTc4NWQxOWVkYmQzY2I2NjY2MmFjZjJiOWExOWYxNGEyZWNhYjJjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZvY3VzQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRm9jdXNDb250cm9sbGVyLmgKQEAgLTU5LDcgKzU5LDcgQEAgcHVibGljOgog
ICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgc2V0SW5pdGlhbEZvY3VzKEZvY3VzRGlyZWN0aW9uLCBL
ZXlib2FyZEV2ZW50Kik7CiAgICAgYm9vbCBhZHZhbmNlRm9jdXMoRm9jdXNEaXJlY3Rpb24sIEtl
eWJvYXJkRXZlbnQqLCBib29sIGluaXRpYWxGb2N1cyA9IGZhbHNlKTsKIAotICAgIFdFQkNPUkVf
RVhQT1JUIGJvb2wgc2V0Rm9jdXNlZEVsZW1lbnQoRWxlbWVudCosIEZyYW1lJiwgRm9jdXNEaXJl
Y3Rpb24gPSBGb2N1c0RpcmVjdGlvbk5vbmUpOworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgc2V0
Rm9jdXNlZEVsZW1lbnQoRWxlbWVudCosIEZyYW1lJiwgRm9jdXNEaXJlY3Rpb24gPSBGb2N1c0Rp
cmVjdGlvbjo6Tm9uZSk7CiAKICAgICB2b2lkIHNldEFjdGl2aXR5U3RhdGUoT3B0aW9uU2V0PEFj
dGl2aXR5U3RhdGU6OkZsYWc+KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9G
b2N1c0RpcmVjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Gb2N1c0RpcmVjdGlvbi5oCmlu
ZGV4IDgxNjQyMWQ2NzcxOGM5YWNjODE5YzM4NzJjNDAwMGVlMDcwZWY3ZjIuLmFmNmJkNmVhMzU2
YjNiNDc1OWQ2NjFmYzk4YzE1NTgwOGNmMjJkNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRm9jdXNEaXJlY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZvY3VzRGly
ZWN0aW9uLmgKQEAgLTI3LDE0ICsyNywxNCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWVu
dW0gRm9jdXNEaXJlY3Rpb24gewotICAgIEZvY3VzRGlyZWN0aW9uTm9uZSA9IDAsCi0gICAgRm9j
dXNEaXJlY3Rpb25Gb3J3YXJkLAotICAgIEZvY3VzRGlyZWN0aW9uQmFja3dhcmQsCi0gICAgRm9j
dXNEaXJlY3Rpb25VcCwKLSAgICBGb2N1c0RpcmVjdGlvbkRvd24sCi0gICAgRm9jdXNEaXJlY3Rp
b25MZWZ0LAotICAgIEZvY3VzRGlyZWN0aW9uUmlnaHQKK2VudW0gY2xhc3MgRm9jdXNEaXJlY3Rp
b246IHVpbnQ4X3QgeworICAgIE5vbmUgPSAwLAorICAgIEZvcndhcmQsCisgICAgQmFja3dhcmQs
CisgICAgVXAsCisgICAgRG93biwKKyAgICBMZWZ0LAorICAgIFJpZ2h0CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NwYXRpYWxO
YXZpZ2F0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU3BhdGlhbE5hdmlnYXRpb24uY3Bw
CmluZGV4IDRkOGI3MmY4ZTViY2IwZTgzMmQzZWMzZGRjMmVlOTI5MmI0OWZlODYuLjM4ZmI0OTcx
ZDJhMzI5NDM3ZTc0NDAzNzI0YThkMjFiZjFkN2UyZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvU3BhdGlhbE5hdmlnYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
U3BhdGlhbE5hdmlnYXRpb24uY3BwCkBAIC0xMDgsNyArMTA4LDcgQEAgc3RhdGljIFJlY3RzQWxp
Z25tZW50IGFsaWdubWVudEZvclJlY3RzKEZvY3VzRGlyZWN0aW9uIGRpcmVjdGlvbiwgY29uc3Qg
TGF5b3V0UmUKIAogc3RhdGljIGlubGluZSBib29sIGlzSG9yaXpvbnRhbE1vdmUoRm9jdXNEaXJl
Y3Rpb24gZGlyZWN0aW9uKQogewotICAgIHJldHVybiBkaXJlY3Rpb24gPT0gRm9jdXNEaXJlY3Rp
b25MZWZ0IHx8IGRpcmVjdGlvbiA9PSBGb2N1c0RpcmVjdGlvblJpZ2h0OworICAgIHJldHVybiBk
aXJlY3Rpb24gPT0gRm9jdXNEaXJlY3Rpb246OkxlZnQgfHwgZGlyZWN0aW9uID09IEZvY3VzRGly
ZWN0aW9uOjpSaWdodDsKIH0KIAogc3RhdGljIGlubGluZSBMYXlvdXRVbml0IHN0YXJ0KEZvY3Vz
RGlyZWN0aW9uIGRpcmVjdGlvbiwgY29uc3QgTGF5b3V0UmVjdCYgcmVjdCkKQEAgLTEzOSwxOSAr
MTM5LDE5IEBAIHN0YXRpYyBib29sIGFyZVJlY3RzRnVsbHlBbGlnbmVkKEZvY3VzRGlyZWN0aW9u
IGRpcmVjdGlvbiwgY29uc3QgTGF5b3V0UmVjdCYgYSwKICAgICBMYXlvdXRVbml0IGFTdGFydCwg
YlN0YXJ0LCBhRW5kLCBiRW5kOwogCiAgICAgc3dpdGNoIChkaXJlY3Rpb24pIHsKLSAgICBjYXNl
IEZvY3VzRGlyZWN0aW9uTGVmdDoKKyAgICBjYXNlIEZvY3VzRGlyZWN0aW9uOjpMZWZ0OgogICAg
ICAgICBhU3RhcnQgPSBhLngoKTsKICAgICAgICAgYkVuZCA9IGIubWF4WCgpOwogICAgICAgICBi
cmVhazsKLSAgICBjYXNlIEZvY3VzRGlyZWN0aW9uUmlnaHQ6CisgICAgY2FzZSBGb2N1c0RpcmVj
dGlvbjo6UmlnaHQ6CiAgICAgICAgIGFTdGFydCA9IGIueCgpOwogICAgICAgICBiRW5kID0gYS5t
YXhYKCk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgRm9jdXNEaXJlY3Rpb25VcDoKKyAgICBj
YXNlIEZvY3VzRGlyZWN0aW9uOjpVcDoKICAgICAgICAgYVN0YXJ0ID0gYS55KCk7CiAgICAgICAg
IGJFbmQgPSBiLnkoKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBGb2N1c0RpcmVjdGlvbkRv
d246CisgICAgY2FzZSBGb2N1c0RpcmVjdGlvbjo6RG93bjoKICAgICAgICAgYVN0YXJ0ID0gYi55
KCk7CiAgICAgICAgIGJFbmQgPSBhLnkoKTsKICAgICAgICAgYnJlYWs7CkBAIC0yMzksMTMgKzIz
OSwxMyBAQCBzdGF0aWMgYm9vbCBhcmVSZWN0c01vcmVUaGFuRnVsbFNjcmVlbkFwYXJ0KEZvY3Vz
RGlyZWN0aW9uIGRpcmVjdGlvbiwgY29uc3QgTGF5bwogICAgIEFTU0VSVChpc1JlY3RJbkRpcmVj
dGlvbihkaXJlY3Rpb24sIGN1clJlY3QsIHRhcmdldFJlY3QpKTsKIAogICAgIHN3aXRjaCAoZGly
ZWN0aW9uKSB7Ci0gICAgY2FzZSBGb2N1c0RpcmVjdGlvbkxlZnQ6CisgICAgY2FzZSBGb2N1c0Rp
cmVjdGlvbjo6TGVmdDoKICAgICAgICAgcmV0dXJuIGN1clJlY3QueCgpIC0gdGFyZ2V0UmVjdC5t
YXhYKCkgPiB2aWV3U2l6ZS53aWR0aCgpOwotICAgIGNhc2UgRm9jdXNEaXJlY3Rpb25SaWdodDoK
KyAgICBjYXNlIEZvY3VzRGlyZWN0aW9uOjpSaWdodDoKICAgICAgICAgcmV0dXJuIHRhcmdldFJl
Y3QueCgpIC0gY3VyUmVjdC5tYXhYKCkgPiB2aWV3U2l6ZS53aWR0aCgpOwotICAgIGNhc2UgRm9j
dXNEaXJlY3Rpb25VcDoKKyAgICBjYXNlIEZvY3VzRGlyZWN0aW9uOjpVcDoKICAgICAgICAgcmV0
dXJuIGN1clJlY3QueSgpIC0gdGFyZ2V0UmVjdC5tYXhZKCkgPiB2aWV3U2l6ZS5oZWlnaHQoKTsK
LSAgICBjYXNlIEZvY3VzRGlyZWN0aW9uRG93bjoKKyAgICBjYXNlIEZvY3VzRGlyZWN0aW9uOjpE
b3duOgogICAgICAgICByZXR1cm4gdGFyZ2V0UmVjdC55KCkgLSBjdXJSZWN0Lm1heFkoKSA+IHZp
ZXdTaXplLmhlaWdodCgpOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwpAQCAtMjY4LDEzICsyNjgsMTMgQEAgc3RhdGljIGlubGluZSBib29sIHJpZ2h0T2YoY29u
c3QgTGF5b3V0UmVjdCYgYSwgY29uc3QgTGF5b3V0UmVjdCYgYikKIHN0YXRpYyBib29sIGlzUmVj
dEluRGlyZWN0aW9uKEZvY3VzRGlyZWN0aW9uIGRpcmVjdGlvbiwgY29uc3QgTGF5b3V0UmVjdCYg
Y3VyUmVjdCwgY29uc3QgTGF5b3V0UmVjdCYgdGFyZ2V0UmVjdCkKIHsKICAgICBzd2l0Y2ggKGRp
cmVjdGlvbikgewotICAgIGNhc2UgRm9jdXNEaXJlY3Rpb25MZWZ0OgorICAgIGNhc2UgRm9jdXNE
aXJlY3Rpb246OkxlZnQ6CiAgICAgICAgIHJldHVybiB0YXJnZXRSZWN0Lm1heFgoKSA8PSBjdXJS
ZWN0LngoKTsKLSAgICBjYXNlIEZvY3VzRGlyZWN0aW9uUmlnaHQ6CisgICAgY2FzZSBGb2N1c0Rp
cmVjdGlvbjo6UmlnaHQ6CiAgICAgICAgIHJldHVybiB0YXJnZXRSZWN0LngoKSA+PSBjdXJSZWN0
Lm1heFgoKTsKLSAgICBjYXNlIEZvY3VzRGlyZWN0aW9uVXA6CisgICAgY2FzZSBGb2N1c0RpcmVj
dGlvbjo6VXA6CiAgICAgICAgIHJldHVybiB0YXJnZXRSZWN0Lm1heFkoKSA8PSBjdXJSZWN0Lnko
KTsKLSAgICBjYXNlIEZvY3VzRGlyZWN0aW9uRG93bjoKKyAgICBjYXNlIEZvY3VzRGlyZWN0aW9u
OjpEb3duOgogICAgICAgICByZXR1cm4gdGFyZ2V0UmVjdC55KCkgPj0gY3VyUmVjdC5tYXhZKCk7
CiAgICAgZGVmYXVsdDoKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC0zMDIsMTgg
KzMwMiwxOCBAQCBib29sIGhhc09mZnNjcmVlblJlY3QoTm9kZSogbm9kZSwgRm9jdXNEaXJlY3Rp
b24gZGlyZWN0aW9uKQogICAgIC8vIElmIHRoZSBjb250YWluZXIgaGFzIG92ZXJmbG93OmhpZGRl
biwgd2UgY2Fubm90IHNjcm9sbCwgc28gd2UgZG8gbm90IHBhc3MgZGlyZWN0aW9uCiAgICAgLy8g
YW5kIHdlIGRvIG5vdCBhZGp1c3QgZm9yIHNjcm9sbGluZy4KICAgICBzd2l0Y2ggKGRpcmVjdGlv
bikgewotICAgIGNhc2UgRm9jdXNEaXJlY3Rpb25MZWZ0OgorICAgIGNhc2UgRm9jdXNEaXJlY3Rp
b246OkxlZnQ6CiAgICAgICAgIGNvbnRhaW5lclZpZXdwb3J0UmVjdC5zZXRYKGNvbnRhaW5lclZp
ZXdwb3J0UmVjdC54KCkgLSBTY3JvbGxiYXI6OnBpeGVsc1BlckxpbmVTdGVwKCkpOwogICAgICAg
ICBjb250YWluZXJWaWV3cG9ydFJlY3Quc2V0V2lkdGgoY29udGFpbmVyVmlld3BvcnRSZWN0Lndp
ZHRoKCkgKyBTY3JvbGxiYXI6OnBpeGVsc1BlckxpbmVTdGVwKCkpOwogICAgICAgICBicmVhazsK
LSAgICBjYXNlIEZvY3VzRGlyZWN0aW9uUmlnaHQ6CisgICAgY2FzZSBGb2N1c0RpcmVjdGlvbjo6
UmlnaHQ6CiAgICAgICAgIGNvbnRhaW5lclZpZXdwb3J0UmVjdC5zZXRXaWR0aChjb250YWluZXJW
aWV3cG9ydFJlY3Qud2lkdGgoKSArIFNjcm9sbGJhcjo6cGl4ZWxzUGVyTGluZVN0ZXAoKSk7CiAg
ICAgICAgIGJyZWFrOwotICAgIGNhc2UgRm9jdXNEaXJlY3Rpb25VcDoKKyAgICBjYXNlIEZvY3Vz
RGlyZWN0aW9uOjpVcDoKICAgICAgICAgY29udGFpbmVyVmlld3BvcnRSZWN0LnNldFkoY29udGFp
bmVyVmlld3BvcnRSZWN0LnkoKSAtIFNjcm9sbGJhcjo6cGl4ZWxzUGVyTGluZVN0ZXAoKSk7CiAg
ICAgICAgIGNvbnRhaW5lclZpZXdwb3J0UmVjdC5zZXRIZWlnaHQoY29udGFpbmVyVmlld3BvcnRS
ZWN0LmhlaWdodCgpICsgU2Nyb2xsYmFyOjpwaXhlbHNQZXJMaW5lU3RlcCgpKTsKICAgICAgICAg
YnJlYWs7Ci0gICAgY2FzZSBGb2N1c0RpcmVjdGlvbkRvd246CisgICAgY2FzZSBGb2N1c0RpcmVj
dGlvbjo6RG93bjoKICAgICAgICAgY29udGFpbmVyVmlld3BvcnRSZWN0LnNldEhlaWdodChjb250
YWluZXJWaWV3cG9ydFJlY3QuaGVpZ2h0KCkgKyBTY3JvbGxiYXI6OnBpeGVsc1BlckxpbmVTdGVw
KCkpOwogICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgpAQCAtMzM5LDE2ICszMzksMTYgQEAg
Ym9vbCBzY3JvbGxJbkRpcmVjdGlvbihGcmFtZSogZnJhbWUsIEZvY3VzRGlyZWN0aW9uIGRpcmVj
dGlvbikKICAgICAgICAgTGF5b3V0VW5pdCBkeDsKICAgICAgICAgTGF5b3V0VW5pdCBkeTsKICAg
ICAgICAgc3dpdGNoIChkaXJlY3Rpb24pIHsKLSAgICAgICAgY2FzZSBGb2N1c0RpcmVjdGlvbkxl
ZnQ6CisgICAgICAgIGNhc2UgRm9jdXNEaXJlY3Rpb246OkxlZnQ6CiAgICAgICAgICAgICBkeCA9
IC0gU2Nyb2xsYmFyOjpwaXhlbHNQZXJMaW5lU3RlcCgpOwogICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgIGNhc2UgRm9jdXNEaXJlY3Rpb25SaWdodDoKKyAgICAgICAgY2FzZSBGb2N1c0RpcmVj
dGlvbjo6UmlnaHQ6CiAgICAgICAgICAgICBkeCA9IFNjcm9sbGJhcjo6cGl4ZWxzUGVyTGluZVN0
ZXAoKTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEZvY3VzRGlyZWN0aW9uVXA6
CisgICAgICAgIGNhc2UgRm9jdXNEaXJlY3Rpb246OlVwOgogICAgICAgICAgICAgZHkgPSAtIFNj
cm9sbGJhcjo6cGl4ZWxzUGVyTGluZVN0ZXAoKTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICBjYXNlIEZvY3VzRGlyZWN0aW9uRG93bjoKKyAgICAgICAgY2FzZSBGb2N1c0RpcmVjdGlvbjo6
RG93bjoKICAgICAgICAgICAgIGR5ID0gU2Nyb2xsYmFyOjpwaXhlbHNQZXJMaW5lU3RlcCgpOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6CkBAIC0zNzUsMTcgKzM3NSwxNyBA
QCBib29sIHNjcm9sbEluRGlyZWN0aW9uKE5vZGUqIGNvbnRhaW5lciwgRm9jdXNEaXJlY3Rpb24g
ZGlyZWN0aW9uKQogICAgICAgICBMYXlvdXRVbml0IGR4OwogICAgICAgICBMYXlvdXRVbml0IGR5
OwogICAgICAgICBzd2l0Y2ggKGRpcmVjdGlvbikgewotICAgICAgICBjYXNlIEZvY3VzRGlyZWN0
aW9uTGVmdDoKKyAgICAgICAgY2FzZSBGb2N1c0RpcmVjdGlvbjo6TGVmdDoKICAgICAgICAgICAg
IGR4ID0gLSBzdGQ6Om1pbjxMYXlvdXRVbml0PihTY3JvbGxiYXI6OnBpeGVsc1BlckxpbmVTdGVw
KCksIGNvbnRhaW5lci0+cmVuZGVyQm94KCktPnNjcm9sbExlZnQoKSk7CiAgICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgY2FzZSBGb2N1c0RpcmVjdGlvblJpZ2h0OgorICAgICAgICBjYXNlIEZv
Y3VzRGlyZWN0aW9uOjpSaWdodDoKICAgICAgICAgICAgIEFTU0VSVChjb250YWluZXItPnJlbmRl
ckJveCgpLT5zY3JvbGxXaWR0aCgpID4gKGNvbnRhaW5lci0+cmVuZGVyQm94KCktPnNjcm9sbExl
ZnQoKSArIGNvbnRhaW5lci0+cmVuZGVyQm94KCktPmNsaWVudFdpZHRoKCkpKTsKICAgICAgICAg
ICAgIGR4ID0gc3RkOjptaW48TGF5b3V0VW5pdD4oU2Nyb2xsYmFyOjpwaXhlbHNQZXJMaW5lU3Rl
cCgpLCBjb250YWluZXItPnJlbmRlckJveCgpLT5zY3JvbGxXaWR0aCgpIC0gKGNvbnRhaW5lci0+
cmVuZGVyQm94KCktPnNjcm9sbExlZnQoKSArIGNvbnRhaW5lci0+cmVuZGVyQm94KCktPmNsaWVu
dFdpZHRoKCkpKTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEZvY3VzRGlyZWN0
aW9uVXA6CisgICAgICAgIGNhc2UgRm9jdXNEaXJlY3Rpb246OlVwOgogICAgICAgICAgICAgZHkg
PSAtIHN0ZDo6bWluPExheW91dFVuaXQ+KFNjcm9sbGJhcjo6cGl4ZWxzUGVyTGluZVN0ZXAoKSwg
Y29udGFpbmVyLT5yZW5kZXJCb3goKS0+c2Nyb2xsVG9wKCkpOwogICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgIGNhc2UgRm9jdXNEaXJlY3Rpb25Eb3duOgorICAgICAgICBjYXNlIEZvY3VzRGly
ZWN0aW9uOjpEb3duOgogICAgICAgICAgICAgQVNTRVJUKGNvbnRhaW5lci0+cmVuZGVyQm94KCkt
PnNjcm9sbEhlaWdodCgpIC0gKGNvbnRhaW5lci0+cmVuZGVyQm94KCktPnNjcm9sbFRvcCgpICsg
Y29udGFpbmVyLT5yZW5kZXJCb3goKS0+Y2xpZW50SGVpZ2h0KCkpKTsKICAgICAgICAgICAgIGR5
ID0gc3RkOjptaW48TGF5b3V0VW5pdD4oU2Nyb2xsYmFyOjpwaXhlbHNQZXJMaW5lU3RlcCgpLCBj
b250YWluZXItPnJlbmRlckJveCgpLT5zY3JvbGxIZWlnaHQoKSAtIChjb250YWluZXItPnJlbmRl
ckJveCgpLT5zY3JvbGxUb3AoKSArIGNvbnRhaW5lci0+cmVuZGVyQm94KCktPmNsaWVudEhlaWdo
dCgpKSk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTQ1MywxMyArNDUzLDEzIEBAIGJvb2wgY2Fu
U2Nyb2xsSW5EaXJlY3Rpb24oY29uc3QgTm9kZSogY29udGFpbmVyLCBGb2N1c0RpcmVjdGlvbiBk
aXJlY3Rpb24pCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIHN3aXRjaCAoZGlyZWN0aW9u
KSB7Ci0gICAgY2FzZSBGb2N1c0RpcmVjdGlvbkxlZnQ6CisgICAgY2FzZSBGb2N1c0RpcmVjdGlv
bjo6TGVmdDoKICAgICAgICAgcmV0dXJuIChjb250YWluZXItPnJlbmRlcmVyKCktPnN0eWxlKCku
b3ZlcmZsb3dYKCkgIT0gT3ZlcmZsb3c6OkhpZGRlbiAmJiBjb250YWluZXItPnJlbmRlckJveCgp
LT5zY3JvbGxMZWZ0KCkgPiAwKTsKLSAgICBjYXNlIEZvY3VzRGlyZWN0aW9uVXA6CisgICAgY2Fz
ZSBGb2N1c0RpcmVjdGlvbjo6VXA6CiAgICAgICAgIHJldHVybiAoY29udGFpbmVyLT5yZW5kZXJl
cigpLT5zdHlsZSgpLm92ZXJmbG93WSgpICE9IE92ZXJmbG93OjpIaWRkZW4gJiYgY29udGFpbmVy
LT5yZW5kZXJCb3goKS0+c2Nyb2xsVG9wKCkgPiAwKTsKLSAgICBjYXNlIEZvY3VzRGlyZWN0aW9u
UmlnaHQ6CisgICAgY2FzZSBGb2N1c0RpcmVjdGlvbjo6UmlnaHQ6CiAgICAgICAgIHJldHVybiAo
Y29udGFpbmVyLT5yZW5kZXJlcigpLT5zdHlsZSgpLm92ZXJmbG93WCgpICE9IE92ZXJmbG93OjpI
aWRkZW4gJiYgY29udGFpbmVyLT5yZW5kZXJCb3goKS0+c2Nyb2xsTGVmdCgpICsgY29udGFpbmVy
LT5yZW5kZXJCb3goKS0+Y2xpZW50V2lkdGgoKSA8IGNvbnRhaW5lci0+cmVuZGVyQm94KCktPnNj
cm9sbFdpZHRoKCkpOwotICAgIGNhc2UgRm9jdXNEaXJlY3Rpb25Eb3duOgorICAgIGNhc2UgRm9j
dXNEaXJlY3Rpb246OkRvd246CiAgICAgICAgIHJldHVybiAoY29udGFpbmVyLT5yZW5kZXJlcigp
LT5zdHlsZSgpLm92ZXJmbG93WSgpICE9IE92ZXJmbG93OjpIaWRkZW4gJiYgY29udGFpbmVyLT5y
ZW5kZXJCb3goKS0+c2Nyb2xsVG9wKCkgKyBjb250YWluZXItPnJlbmRlckJveCgpLT5jbGllbnRI
ZWlnaHQoKSA8IGNvbnRhaW5lci0+cmVuZGVyQm94KCktPnNjcm9sbEhlaWdodCgpKTsKICAgICBk
ZWZhdWx0OgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTQ3NCw5ICs0NzQsOSBA
QCBib29sIGNhblNjcm9sbEluRGlyZWN0aW9uKGNvbnN0IEZyYW1lKiBmcmFtZSwgRm9jdXNEaXJl
Y3Rpb24gZGlyZWN0aW9uKQogICAgIFNjcm9sbGJhck1vZGUgdmVydGljYWxNb2RlOwogICAgIFNj
cm9sbGJhck1vZGUgaG9yaXpvbnRhbE1vZGU7CiAgICAgZnJhbWUtPnZpZXcoKS0+Y2FsY3VsYXRl
U2Nyb2xsYmFyTW9kZXNGb3JMYXlvdXQoaG9yaXpvbnRhbE1vZGUsIHZlcnRpY2FsTW9kZSk7Ci0g
ICAgaWYgKChkaXJlY3Rpb24gPT0gRm9jdXNEaXJlY3Rpb25MZWZ0IHx8IGRpcmVjdGlvbiA9PSBG
b2N1c0RpcmVjdGlvblJpZ2h0KSAmJiBTY3JvbGxiYXJBbHdheXNPZmYgPT0gaG9yaXpvbnRhbE1v
ZGUpCisgICAgaWYgKChkaXJlY3Rpb24gPT0gRm9jdXNEaXJlY3Rpb246OkxlZnQgfHwgZGlyZWN0
aW9uID09IEZvY3VzRGlyZWN0aW9uOjpSaWdodCkgJiYgU2Nyb2xsYmFyQWx3YXlzT2ZmID09IGhv
cml6b250YWxNb2RlKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKChkaXJlY3Rpb24g
PT0gRm9jdXNEaXJlY3Rpb25VcCB8fCBkaXJlY3Rpb24gPT0gRm9jdXNEaXJlY3Rpb25Eb3duKSAm
JiAgU2Nyb2xsYmFyQWx3YXlzT2ZmID09IHZlcnRpY2FsTW9kZSkKKyAgICBpZiAoKGRpcmVjdGlv
biA9PSBGb2N1c0RpcmVjdGlvbjo6VXAgfHwgZGlyZWN0aW9uID09IEZvY3VzRGlyZWN0aW9uOjpE
b3duKSAmJiAgU2Nyb2xsYmFyQWx3YXlzT2ZmID09IHZlcnRpY2FsTW9kZSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIExheW91dFNpemUgc2l6ZSA9IGZyYW1lLT52aWV3KCktPnRvdGFsQ29u
dGVudHNTaXplKCk7CiAgICAgTGF5b3V0UG9pbnQgc2Nyb2xsUG9zaXRpb24gPSBmcmFtZS0+dmll
dygpLT5zY3JvbGxQb3NpdGlvbigpOwpAQCAtNDg0LDEzICs0ODQsMTMgQEAgYm9vbCBjYW5TY3Jv
bGxJbkRpcmVjdGlvbihjb25zdCBGcmFtZSogZnJhbWUsIEZvY3VzRGlyZWN0aW9uIGRpcmVjdGlv
bikKIAogICAgIC8vIEZJWE1FOiB3cm9uZyBpbiBSVEwgZG9jdW1lbnRzLgogICAgIHN3aXRjaCAo
ZGlyZWN0aW9uKSB7Ci0gICAgY2FzZSBGb2N1c0RpcmVjdGlvbkxlZnQ6CisgICAgY2FzZSBGb2N1
c0RpcmVjdGlvbjo6TGVmdDoKICAgICAgICAgcmV0dXJuIHNjcm9sbFBvc2l0aW9uLngoKSA+IDA7
Ci0gICAgY2FzZSBGb2N1c0RpcmVjdGlvblVwOgorICAgIGNhc2UgRm9jdXNEaXJlY3Rpb246OlVw
OgogICAgICAgICByZXR1cm4gc2Nyb2xsUG9zaXRpb24ueSgpID4gMDsKLSAgICBjYXNlIEZvY3Vz
RGlyZWN0aW9uUmlnaHQ6CisgICAgY2FzZSBGb2N1c0RpcmVjdGlvbjo6UmlnaHQ6CiAgICAgICAg
IHJldHVybiByZWN0LndpZHRoKCkgKyBzY3JvbGxQb3NpdGlvbi54KCkgPCBzaXplLndpZHRoKCk7
Ci0gICAgY2FzZSBGb2N1c0RpcmVjdGlvbkRvd246CisgICAgY2FzZSBGb2N1c0RpcmVjdGlvbjo6
RG93bjoKICAgICAgICAgcmV0dXJuIHJlY3QuaGVpZ2h0KCkgKyBzY3JvbGxQb3NpdGlvbi55KCkg
PCBzaXplLmhlaWdodCgpOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwpAQCAtNTQ0LDE5ICs1NDQsMTkgQEAgTGF5b3V0UmVjdCBmcmFtZVJlY3RJbkFic29sdXRl
Q29vcmRpbmF0ZXMoRnJhbWUqIGZyYW1lKQogdm9pZCBlbnRyeUFuZEV4aXRQb2ludHNGb3JEaXJl
Y3Rpb24oRm9jdXNEaXJlY3Rpb24gZGlyZWN0aW9uLCBjb25zdCBMYXlvdXRSZWN0JiBzdGFydGlu
Z1JlY3QsIGNvbnN0IExheW91dFJlY3QmIHBvdGVudGlhbFJlY3QsIExheW91dFBvaW50JiBleGl0
UG9pbnQsIExheW91dFBvaW50JiBlbnRyeVBvaW50KQogewogICAgIHN3aXRjaCAoZGlyZWN0aW9u
KSB7Ci0gICAgY2FzZSBGb2N1c0RpcmVjdGlvbkxlZnQ6CisgICAgY2FzZSBGb2N1c0RpcmVjdGlv
bjo6TGVmdDoKICAgICAgICAgZXhpdFBvaW50LnNldFgoc3RhcnRpbmdSZWN0LngoKSk7CiAgICAg
ICAgIGVudHJ5UG9pbnQuc2V0WChwb3RlbnRpYWxSZWN0Lm1heFgoKSk7CiAgICAgICAgIGJyZWFr
OwotICAgIGNhc2UgRm9jdXNEaXJlY3Rpb25VcDoKKyAgICBjYXNlIEZvY3VzRGlyZWN0aW9uOjpV
cDoKICAgICAgICAgZXhpdFBvaW50LnNldFkoc3RhcnRpbmdSZWN0LnkoKSk7CiAgICAgICAgIGVu
dHJ5UG9pbnQuc2V0WShwb3RlbnRpYWxSZWN0Lm1heFkoKSk7CiAgICAgICAgIGJyZWFrOwotICAg
IGNhc2UgRm9jdXNEaXJlY3Rpb25SaWdodDoKKyAgICBjYXNlIEZvY3VzRGlyZWN0aW9uOjpSaWdo
dDoKICAgICAgICAgZXhpdFBvaW50LnNldFgoc3RhcnRpbmdSZWN0Lm1heFgoKSk7CiAgICAgICAg
IGVudHJ5UG9pbnQuc2V0WChwb3RlbnRpYWxSZWN0LngoKSk7CiAgICAgICAgIGJyZWFrOwotICAg
IGNhc2UgRm9jdXNEaXJlY3Rpb25Eb3duOgorICAgIGNhc2UgRm9jdXNEaXJlY3Rpb246OkRvd246
CiAgICAgICAgIGV4aXRQb2ludC5zZXRZKHN0YXJ0aW5nUmVjdC5tYXhZKCkpOwogICAgICAgICBl
bnRyeVBvaW50LnNldFkocG90ZW50aWFsUmVjdC55KCkpOwogICAgICAgICBicmVhazsKQEAgLTU2
NSw4ICs1NjUsOCBAQCB2b2lkIGVudHJ5QW5kRXhpdFBvaW50c0ZvckRpcmVjdGlvbihGb2N1c0Rp
cmVjdGlvbiBkaXJlY3Rpb24sIGNvbnN0IExheW91dFJlY3QmCiAgICAgfQogCiAgICAgc3dpdGNo
IChkaXJlY3Rpb24pIHsKLSAgICBjYXNlIEZvY3VzRGlyZWN0aW9uTGVmdDoKLSAgICBjYXNlIEZv
Y3VzRGlyZWN0aW9uUmlnaHQ6CisgICAgY2FzZSBGb2N1c0RpcmVjdGlvbjo6TGVmdDoKKyAgICBj
YXNlIEZvY3VzRGlyZWN0aW9uOjpSaWdodDoKICAgICAgICAgaWYgKGJlbG93KHN0YXJ0aW5nUmVj
dCwgcG90ZW50aWFsUmVjdCkpIHsKICAgICAgICAgICAgIGV4aXRQb2ludC5zZXRZKHN0YXJ0aW5n
UmVjdC55KCkpOwogICAgICAgICAgICAgZW50cnlQb2ludC5zZXRZKHBvdGVudGlhbFJlY3QubWF4
WSgpKTsKQEAgLTU3OCw4ICs1NzgsOCBAQCB2b2lkIGVudHJ5QW5kRXhpdFBvaW50c0ZvckRpcmVj
dGlvbihGb2N1c0RpcmVjdGlvbiBkaXJlY3Rpb24sIGNvbnN0IExheW91dFJlY3QmCiAgICAgICAg
ICAgICBlbnRyeVBvaW50LnNldFkoZXhpdFBvaW50LnkoKSk7CiAgICAgICAgIH0KICAgICAgICAg
YnJlYWs7Ci0gICAgY2FzZSBGb2N1c0RpcmVjdGlvblVwOgotICAgIGNhc2UgRm9jdXNEaXJlY3Rp
b25Eb3duOgorICAgIGNhc2UgRm9jdXNEaXJlY3Rpb246OlVwOgorICAgIGNhc2UgRm9jdXNEaXJl
Y3Rpb246OkRvd246CiAgICAgICAgIGlmIChyaWdodE9mKHN0YXJ0aW5nUmVjdCwgcG90ZW50aWFs
UmVjdCkpIHsKICAgICAgICAgICAgIGV4aXRQb2ludC5zZXRYKHN0YXJ0aW5nUmVjdC54KCkpOwog
ICAgICAgICAgICAgZW50cnlQb2ludC5zZXRYKHBvdGVudGlhbFJlY3QubWF4WCgpKTsKQEAgLTYy
NywxMyArNjI3LDEzIEBAIGJvb2wgaXNWYWxpZENhbmRpZGF0ZShGb2N1c0RpcmVjdGlvbiBkaXJl
Y3Rpb24sIGNvbnN0IEZvY3VzQ2FuZGlkYXRlJiBjdXJyZW50LCBGCiAgICAgTGF5b3V0UmVjdCBj
YW5kaWRhdGVSZWN0ID0gY2FuZGlkYXRlLnJlY3Q7CiAKICAgICBzd2l0Y2ggKGRpcmVjdGlvbikg
ewotICAgIGNhc2UgRm9jdXNEaXJlY3Rpb25MZWZ0OgorICAgIGNhc2UgRm9jdXNEaXJlY3Rpb246
OkxlZnQ6CiAgICAgICAgIHJldHVybiBjYW5kaWRhdGVSZWN0LngoKSA8IGN1cnJlbnRSZWN0Lm1h
eFgoKTsKLSAgICBjYXNlIEZvY3VzRGlyZWN0aW9uVXA6CisgICAgY2FzZSBGb2N1c0RpcmVjdGlv
bjo6VXA6CiAgICAgICAgIHJldHVybiBjYW5kaWRhdGVSZWN0LnkoKSA8IGN1cnJlbnRSZWN0Lm1h
eFkoKTsKLSAgICBjYXNlIEZvY3VzRGlyZWN0aW9uUmlnaHQ6CisgICAgY2FzZSBGb2N1c0RpcmVj
dGlvbjo6UmlnaHQ6CiAgICAgICAgIHJldHVybiBjYW5kaWRhdGVSZWN0Lm1heFgoKSA+IGN1cnJl
bnRSZWN0LngoKTsKLSAgICBjYXNlIEZvY3VzRGlyZWN0aW9uRG93bjoKKyAgICBjYXNlIEZvY3Vz
RGlyZWN0aW9uOjpEb3duOgogICAgICAgICByZXR1cm4gY2FuZGlkYXRlUmVjdC5tYXhZKCkgPiBj
dXJyZW50UmVjdC55KCk7CiAgICAgZGVmYXVsdDoKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CkBAIC02NDQsNyArNjQ0LDcgQEAgYm9vbCBpc1ZhbGlkQ2FuZGlkYXRlKEZvY3VzRGlyZWN0
aW9uIGRpcmVjdGlvbiwgY29uc3QgRm9jdXNDYW5kaWRhdGUmIGN1cnJlbnQsIEYKIHZvaWQgZGlz
dGFuY2VEYXRhRm9yTm9kZShGb2N1c0RpcmVjdGlvbiBkaXJlY3Rpb24sIGNvbnN0IEZvY3VzQ2Fu
ZGlkYXRlJiBjdXJyZW50LCBGb2N1c0NhbmRpZGF0ZSYgY2FuZGlkYXRlKQogewogICAgIGlmIChh
cmVFbGVtZW50c09uU2FtZUxpbmUoY3VycmVudCwgY2FuZGlkYXRlKSkgewotICAgICAgICBpZiAo
KGRpcmVjdGlvbiA9PSBGb2N1c0RpcmVjdGlvblVwICYmIGN1cnJlbnQucmVjdC55KCkgPiBjYW5k
aWRhdGUucmVjdC55KCkpIHx8IChkaXJlY3Rpb24gPT0gRm9jdXNEaXJlY3Rpb25Eb3duICYmIGNh
bmRpZGF0ZS5yZWN0LnkoKSA+IGN1cnJlbnQucmVjdC55KCkpKSB7CisgICAgICAgIGlmICgoZGly
ZWN0aW9uID09IEZvY3VzRGlyZWN0aW9uOjpVcCAmJiBjdXJyZW50LnJlY3QueSgpID4gY2FuZGlk
YXRlLnJlY3QueSgpKSB8fCAoZGlyZWN0aW9uID09IEZvY3VzRGlyZWN0aW9uOjpEb3duICYmIGNh
bmRpZGF0ZS5yZWN0LnkoKSA+IGN1cnJlbnQucmVjdC55KCkpKSB7CiAgICAgICAgICAgICBjYW5k
aWRhdGUuZGlzdGFuY2UgPSAwOwogICAgICAgICAgICAgY2FuZGlkYXRlLmFsaWdubWVudCA9IEZ1
bGw7CiAgICAgICAgICAgICByZXR1cm47CkBAIC02NjUsMTkgKzY2NSwxOSBAQCB2b2lkIGRpc3Rh
bmNlRGF0YUZvck5vZGUoRm9jdXNEaXJlY3Rpb24gZGlyZWN0aW9uLCBjb25zdCBGb2N1c0NhbmRp
ZGF0ZSYgY3VycmVudAogICAgIGVudHJ5QW5kRXhpdFBvaW50c0ZvckRpcmVjdGlvbihkaXJlY3Rp
b24sIGN1cnJlbnRSZWN0LCBub2RlUmVjdCwgZXhpdFBvaW50LCBlbnRyeVBvaW50KTsKIAogICAg
IHN3aXRjaCAoZGlyZWN0aW9uKSB7Ci0gICAgY2FzZSBGb2N1c0RpcmVjdGlvbkxlZnQ6CisgICAg
Y2FzZSBGb2N1c0RpcmVjdGlvbjo6TGVmdDoKICAgICAgICAgc2FtZUF4aXNEaXN0YW5jZSA9IGV4
aXRQb2ludC54KCkgLSBlbnRyeVBvaW50LngoKTsKICAgICAgICAgb3RoZXJBeGlzRGlzdGFuY2Ug
PSBhYnNvbHV0ZVZhbHVlKGV4aXRQb2ludC55KCkgLSBlbnRyeVBvaW50LnkoKSk7CiAgICAgICAg
IGJyZWFrOwotICAgIGNhc2UgRm9jdXNEaXJlY3Rpb25VcDoKKyAgICBjYXNlIEZvY3VzRGlyZWN0
aW9uOjpVcDoKICAgICAgICAgc2FtZUF4aXNEaXN0YW5jZSA9IGV4aXRQb2ludC55KCkgLSBlbnRy
eVBvaW50LnkoKTsKICAgICAgICAgb3RoZXJBeGlzRGlzdGFuY2UgPSBhYnNvbHV0ZVZhbHVlKGV4
aXRQb2ludC54KCkgLSBlbnRyeVBvaW50LngoKSk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2Ug
Rm9jdXNEaXJlY3Rpb25SaWdodDoKKyAgICBjYXNlIEZvY3VzRGlyZWN0aW9uOjpSaWdodDoKICAg
ICAgICAgc2FtZUF4aXNEaXN0YW5jZSA9IGVudHJ5UG9pbnQueCgpIC0gZXhpdFBvaW50LngoKTsK
ICAgICAgICAgb3RoZXJBeGlzRGlzdGFuY2UgPSBhYnNvbHV0ZVZhbHVlKGVudHJ5UG9pbnQueSgp
IC0gZXhpdFBvaW50LnkoKSk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgRm9jdXNEaXJlY3Rp
b25Eb3duOgorICAgIGNhc2UgRm9jdXNEaXJlY3Rpb246OkRvd246CiAgICAgICAgIHNhbWVBeGlz
RGlzdGFuY2UgPSBlbnRyeVBvaW50LnkoKSAtIGV4aXRQb2ludC55KCk7CiAgICAgICAgIG90aGVy
QXhpc0Rpc3RhbmNlID0gYWJzb2x1dGVWYWx1ZShlbnRyeVBvaW50LngoKSAtIGV4aXRQb2ludC54
KCkpOwogICAgICAgICBicmVhazsKQEAgLTcwOSw4ICs3MDksOCBAQCBib29sIGNhbkJlU2Nyb2xs
ZWRJbnRvVmlldyhGb2N1c0RpcmVjdGlvbiBkaXJlY3Rpb24sIGNvbnN0IEZvY3VzQ2FuZGlkYXRl
JiBjYW5kaQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIExheW91dFJlY3QgcGFyZW50
UmVjdCA9IG5vZGVSZWN0SW5BYnNvbHV0ZUNvb3JkaW5hdGVzKHBhcmVudE5vZGUpOwogICAgICAg
ICBpZiAoIWNhbmRpZGF0ZVJlY3QuaW50ZXJzZWN0cyhwYXJlbnRSZWN0KSkgewotICAgICAgICAg
ICAgaWYgKCgoZGlyZWN0aW9uID09IEZvY3VzRGlyZWN0aW9uTGVmdCB8fCBkaXJlY3Rpb24gPT0g
Rm9jdXNEaXJlY3Rpb25SaWdodCkgJiYgcGFyZW50Tm9kZS0+cmVuZGVyZXIoKS0+c3R5bGUoKS5v
dmVyZmxvd1goKSA9PSBPdmVyZmxvdzo6SGlkZGVuKQotICAgICAgICAgICAgICAgIHx8ICgoZGly
ZWN0aW9uID09IEZvY3VzRGlyZWN0aW9uVXAgfHwgZGlyZWN0aW9uID09IEZvY3VzRGlyZWN0aW9u
RG93bikgJiYgcGFyZW50Tm9kZS0+cmVuZGVyZXIoKS0+c3R5bGUoKS5vdmVyZmxvd1koKSA9PSBP
dmVyZmxvdzo6SGlkZGVuKSkKKyAgICAgICAgICAgIGlmICgoKGRpcmVjdGlvbiA9PSBGb2N1c0Rp
cmVjdGlvbjo6TGVmdCB8fCBkaXJlY3Rpb24gPT0gRm9jdXNEaXJlY3Rpb246OlJpZ2h0KSAmJiBw
YXJlbnROb2RlLT5yZW5kZXJlcigpLT5zdHlsZSgpLm92ZXJmbG93WCgpID09IE92ZXJmbG93OjpI
aWRkZW4pCisgICAgICAgICAgICAgICAgfHwgKChkaXJlY3Rpb24gPT0gRm9jdXNEaXJlY3Rpb246
OlVwIHx8IGRpcmVjdGlvbiA9PSBGb2N1c0RpcmVjdGlvbjo6RG93bikgJiYgcGFyZW50Tm9kZS0+
cmVuZGVyZXIoKS0+c3R5bGUoKS5vdmVyZmxvd1koKSA9PSBPdmVyZmxvdzo6SGlkZGVuKSkKICAg
ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICAgICAgaWYgKHBhcmVu
dE5vZGUgPT0gY2FuZGlkYXRlLmVuY2xvc2luZ1Njcm9sbGFibGVCb3gpCkBAIC03MjcsMTggKzcy
NywxOCBAQCBMYXlvdXRSZWN0IHZpcnR1YWxSZWN0Rm9yRGlyZWN0aW9uKEZvY3VzRGlyZWN0aW9u
IGRpcmVjdGlvbiwgY29uc3QgTGF5b3V0UmVjdCYgcwogewogICAgIExheW91dFJlY3QgdmlydHVh
bFN0YXJ0aW5nUmVjdCA9IHN0YXJ0aW5nUmVjdDsKICAgICBzd2l0Y2ggKGRpcmVjdGlvbikgewot
ICAgIGNhc2UgRm9jdXNEaXJlY3Rpb25MZWZ0OgorICAgIGNhc2UgRm9jdXNEaXJlY3Rpb246Okxl
ZnQ6CiAgICAgICAgIHZpcnR1YWxTdGFydGluZ1JlY3Quc2V0WCh2aXJ0dWFsU3RhcnRpbmdSZWN0
Lm1heFgoKSAtIHdpZHRoKTsKICAgICAgICAgdmlydHVhbFN0YXJ0aW5nUmVjdC5zZXRXaWR0aCh3
aWR0aCk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgRm9jdXNEaXJlY3Rpb25VcDoKKyAgICBj
YXNlIEZvY3VzRGlyZWN0aW9uOjpVcDoKICAgICAgICAgdmlydHVhbFN0YXJ0aW5nUmVjdC5zZXRZ
KHZpcnR1YWxTdGFydGluZ1JlY3QubWF4WSgpIC0gd2lkdGgpOwogICAgICAgICB2aXJ0dWFsU3Rh
cnRpbmdSZWN0LnNldEhlaWdodCh3aWR0aCk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgRm9j
dXNEaXJlY3Rpb25SaWdodDoKKyAgICBjYXNlIEZvY3VzRGlyZWN0aW9uOjpSaWdodDoKICAgICAg
ICAgdmlydHVhbFN0YXJ0aW5nUmVjdC5zZXRXaWR0aCh3aWR0aCk7CiAgICAgICAgIGJyZWFrOwot
ICAgIGNhc2UgRm9jdXNEaXJlY3Rpb25Eb3duOgorICAgIGNhc2UgRm9jdXNEaXJlY3Rpb246OkRv
d246CiAgICAgICAgIHZpcnR1YWxTdGFydGluZ1JlY3Quc2V0SGVpZ2h0KHdpZHRoKTsKICAgICAg
ICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
U3BhdGlhbE5hdmlnYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU3BhdGlhbE5hdmlnYXRp
b24uaAppbmRleCBlMzc2MDU3MGQwYzgzZTZkZjM3MjUxZDAwNDExZWVjOTJjMjBkMWI1Li45NzQ4
Njg2M2UwNTc3N2I5ZDBkMzMyNmFkMmZlZDZjYzY4YjZjMjA3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1NwYXRpYWxOYXZpZ2F0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9TcGF0aWFsTmF2aWdhdGlvbi5oCkBAIC0xMjcsNyArMTI3LDcgQEAgc3RydWN0IEZvY3VzQ2Fu
ZGlkYXRlIHsKICAgICBib29sIGlzT2Zmc2NyZWVuQWZ0ZXJTY3JvbGxpbmc7CiB9OwogCi1ib29s
IGhhc09mZnNjcmVlblJlY3QoTm9kZSosIEZvY3VzRGlyZWN0aW9uIGRpcmVjdGlvbiA9IEZvY3Vz
RGlyZWN0aW9uTm9uZSk7Citib29sIGhhc09mZnNjcmVlblJlY3QoTm9kZSosIEZvY3VzRGlyZWN0
aW9uID0gRm9jdXNEaXJlY3Rpb246Ok5vbmUpOwogYm9vbCBzY3JvbGxJbkRpcmVjdGlvbihGcmFt
ZSosIEZvY3VzRGlyZWN0aW9uKTsKIGJvb2wgc2Nyb2xsSW5EaXJlY3Rpb24oTm9kZSogY29udGFp
bmVyLCBGb2N1c0RpcmVjdGlvbik7CiBib29sIGNhblNjcm9sbEluRGlyZWN0aW9uKGNvbnN0IE5v
ZGUqIGNvbnRhaW5lciwgRm9jdXNEaXJlY3Rpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9XZWJWaWV3SW1wbC5tbQppbmRleCBiYmIwOGUzZWM2ZjFiNDVlZDk5OWUyZjg0NTM5
ZTRhODU3NDVlNWRkLi5kMDYwMTNiODg3YjJjODI2NTA5NjJjZjU4MWQxYjdmZTU5OGJmY2FlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQpAQCAtMTY0
OCw3ICsxNjQ4LDcgQEAgdm9pZCBXZWJWaWV3SW1wbDo6dGFrZUZvY3VzKFdlYkNvcmU6OkZvY3Vz
RGlyZWN0aW9uIGRpcmVjdGlvbikKIHsKICAgICBOU1ZpZXcgKndlYlZpZXcgPSBtX3ZpZXcuZ2V0
QXV0b3JlbGVhc2VkKCk7CiAKLSAgICBpZiAoZGlyZWN0aW9uID09IFdlYkNvcmU6OkZvY3VzRGly
ZWN0aW9uRm9yd2FyZCkgeworICAgIGlmIChkaXJlY3Rpb24gPT0gV2ViQ29yZTo6Rm9jdXNEaXJl
Y3Rpb246OkZvcndhcmQpIHsKICAgICAgICAgLy8gU2luY2Ugd2UncmUgdHJ5aW5nIHRvIG1vdmUg
Zm9jdXMgb3V0IG9mIG1fd2ViVmlldywgYW5kIGJlY2F1c2UKICAgICAgICAgLy8gbV93ZWJWaWV3
IG1heSBjb250YWluIHN1YnZpZXdzIHdpdGhpbiBpdCwgd2UgYXNrIGl0IGZvciB0aGUgbmV4dCBr
ZXkKICAgICAgICAgLy8gdmlldyBvZiB0aGUgbGFzdCB2aWV3IGluIGl0cyBrZXkgdmlldyBsb29w
LiBUaGlzIG1ha2VzIG1fd2ViVmlldwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHAKaW5kZXggYTY5YjdkYjQ1ZDQ0MDA4ZGZkMDc3ZmU1ZTcwMDE5OTI5ZDkxYmRjZC4uOWEy
YWE4MGFhNTQ5ZjA3MmNiOGEzNDEwMWNmMzJhOTk3NTM2NTFhMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC02ODUyLDkgKzY4NTIsOSBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6c2V0Rm9jdXMoYm9vbCBmb2N1c2VkKQogICAgICAgICBtX3VpQ2xpZW50LT51bmZv
Y3VzKHRoaXMpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6dGFrZUZvY3VzKHVpbnQzMl90IGRp
cmVjdGlvbikKK3ZvaWQgV2ViUGFnZVByb3h5Ojp0YWtlRm9jdXModWludDhfdCBkaXJlY3Rpb24p
CiB7Ci0gICAgaWYgKG1fdWlDbGllbnQtPnRha2VGb2N1cyh0aGlzLCAoc3RhdGljX2Nhc3Q8Rm9j
dXNEaXJlY3Rpb24+KGRpcmVjdGlvbikgPT0gRm9jdXNEaXJlY3Rpb25Gb3J3YXJkKSA/IGtXS0Zv
Y3VzRGlyZWN0aW9uRm9yd2FyZCA6IGtXS0ZvY3VzRGlyZWN0aW9uQmFja3dhcmQpKQorICAgIGlm
IChtX3VpQ2xpZW50LT50YWtlRm9jdXModGhpcywgKHN0YXRpY19jYXN0PEZvY3VzRGlyZWN0aW9u
PihkaXJlY3Rpb24pID09IEZvY3VzRGlyZWN0aW9uOjpGb3J3YXJkKSA/IGtXS0ZvY3VzRGlyZWN0
aW9uRm9yd2FyZCA6IGtXS0ZvY3VzRGlyZWN0aW9uQmFja3dhcmQpKQogICAgICAgICByZXR1cm47
CiAKICAgICBwYWdlQ2xpZW50KCkudGFrZUZvY3VzKHN0YXRpY19jYXN0PEZvY3VzRGlyZWN0aW9u
PihkaXJlY3Rpb24pKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXgg
NzE1ZWNlNTFkM2MyMTZiZjE1M2YxY2U3YWUyMWNlYzNjZWVkM2IzNC4uZDQ2OTRmMDJlNjM4MzY5
Y2MwNWY3MmQ5ZWJhMDI0YWZiZjYwMjhlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmgKQEAgLTIxMjIsNyArMjEyMiw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBpZ25vcmVX
b3JkKGNvbnN0IFN0cmluZyYgd29yZCk7CiAgICAgdm9pZCByZXF1ZXN0Q2hlY2tpbmdPZlN0cmlu
Zyh1aW50NjRfdCByZXF1ZXN0SUQsIGNvbnN0IFdlYkNvcmU6OlRleHRDaGVja2luZ1JlcXVlc3RE
YXRhJiwgaW50MzJfdCBpbnNlcnRpb25Qb2ludCk7CiAKLSAgICB2b2lkIHRha2VGb2N1cyh1aW50
MzJfdCBkaXJlY3Rpb24pOworICAgIHZvaWQgdGFrZUZvY3VzKHVpbnQ4X3QgZGlyZWN0aW9uKTsK
ICAgICB2b2lkIHNldFRvb2xUaXAoY29uc3QgU3RyaW5nJik7CiAgICAgdm9pZCBzZXRDdXJzb3Io
Y29uc3QgV2ViQ29yZTo6Q3Vyc29yJik7CiAgICAgdm9pZCBzZXRDdXJzb3JIaWRkZW5VbnRpbE1v
dXNlTW92ZXMoYm9vbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkubWVzc2FnZXMuaW4KaW5kZXggOTUwZTUzOTI5OTJmNDE4ODM4YTE5M2UzMDNlMmYxYmJmNTc1
ZWJmZC4uZmZhN2Q2MWNlZTI1OTM3MTRkMjk4NjI2MzI2YjQ2MzlmM2M0Njk5MCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgpAQCAtNDMs
NyArNDMsNyBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlUHJveHkgewogICAgIFNldEN1cnNvckhpZGRl
blVudGlsTW91c2VNb3Zlcyhib29sIGhpZGRlblVudGlsTW91c2VNb3ZlcykKICAgICBTZXRTdGF0
dXNUZXh0KFN0cmluZyBzdGF0dXNUZXh0KQogICAgIFNldEZvY3VzKGJvb2wgZm9jdXNlZCkKLSAg
ICBUYWtlRm9jdXModWludDMyX3QgZGlyZWN0aW9uKQorICAgIFRha2VGb2N1cyh1aW50OF90IGRp
cmVjdGlvbikKICAgICBGb2N1c2VkRnJhbWVDaGFuZ2VkKE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1l
SWRlbnRpZmllcj4gZnJhbWVJRCkKICAgICBTZXRSZW5kZXJUcmVlU2l6ZSh1aW50NjRfdCB0cmVl
U2l6ZSkKICAgICBTZXRUb29sYmFyc0FyZVZpc2libGUoYm9vbCB0b29sYmFyc0FyZVZpc2libGUp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
Q2hyb21lQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJDaHJvbWVDbGllbnQuY3BwCmluZGV4IGEwOTg2ZjMwNzhhZDgyMjEwMzRhNzIwMWE4M2Vh
YWViMjE2MTI2NGIuLmY4Zjk0YzRhYTg3Njg4YTYyNDBkNDNmNjUwMjNkMDEyZmY5N2RhZWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJv
bWVDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJDaHJvbWVDbGllbnQuY3BwCkBAIC0yMjQsNyArMjI0LDcgQEAgYm9vbCBXZWJDaHJvbWVD
bGllbnQ6OmNhblRha2VGb2N1cyhGb2N1c0RpcmVjdGlvbikKIAogdm9pZCBXZWJDaHJvbWVDbGll
bnQ6OnRha2VGb2N1cyhGb2N1c0RpcmVjdGlvbiBkaXJlY3Rpb24pCiB7Ci0gICAgbV9wYWdlLnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6VGFrZUZvY3VzKGRpcmVjdGlvbikpOworICAgIG1f
cGFnZS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlRha2VGb2N1cyhzdGF0aWNfY2FzdDx1
aW50OF90PihkaXJlY3Rpb24pKSk7CiB9CiAKIHZvaWQgV2ViQ2hyb21lQ2xpZW50Ojpmb2N1c2Vk
RWxlbWVudENoYW5nZWQoRWxlbWVudCogZWxlbWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggMTBlZjc5ZThkMmZmNTNiYzM4NTAwNGI2YjUz
OWQxYWRiOGU1NDgzZS4uMTVjNmZmN2Y5NzRmZDcwMGVmOGMzN2FiNTMzMGYxOTM3NmZjNDVkNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTI5
MTgsNyArMjkxOCw3IEBAIGJvb2wgV2ViUGFnZTo6aGFuZGxlS2V5RXZlbnRCeVJlbGlucXVpc2hp
bmdGb2N1c1RvQ2hyb21lKGNvbnN0IEtleWJvYXJkRXZlbnQmIGV2CiAgICAgLy8gQWxsb3cgYSBz
aGlmdC10YWIga2V5cHJlc3MgZXZlbnQgdG8gcmVsaW5xdWlzaCBmb2N1cyBldmVuIGlmIHdlIGRv
bid0IGFsbG93IHRhYiB0byBjeWNsZSBiZXR3ZWVuCiAgICAgLy8gZWxlbWVudHMgaW5zaWRlIHRo
ZSB2aWV3LiBXZSBjYW4gb25seSBkbyB0aGlzIGZvciBzaGlmdC10YWIsIG5vdCB0YWIgaXRzZWxm
IGJlY2F1c2UKICAgICAvLyB0YWJLZXlDeWNsZXNUaHJvdWdoRWxlbWVudHMgaXMgdXNlZCB0byBt
YWtlIHRhYiBjaGFyYWN0ZXIgaW5zZXJ0aW9uIHdvcmsgaW4gZWRpdGFibGUgd2ViIHZpZXdzLgot
ICAgIHJldHVybiBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLnJlbGlucXVpc2hGb2N1c1RvQ2hy
b21lKEZvY3VzRGlyZWN0aW9uQmFja3dhcmQpOworICAgIHJldHVybiBtX3BhZ2UtPmZvY3VzQ29u
dHJvbGxlcigpLnJlbGlucXVpc2hGb2N1c1RvQ2hyb21lKEZvY3VzRGlyZWN0aW9uOjpCYWNrd2Fy
ZCk7CiB9CiAKIHZvaWQgV2ViUGFnZTo6dmFsaWRhdGVDb21tYW5kKGNvbnN0IFN0cmluZyYgY29t
bWFuZE5hbWUsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKQEAgLTMyNDcsMTIgKzMyNDcsMTIgQEAg
dm9pZCBXZWJQYWdlOjpzZXRJbml0aWFsRm9jdXMoYm9vbCBmb3J3YXJkLCBib29sIGlzS2V5Ym9h
cmRFdmVudFZhbGlkLCBjb25zdCBXZWIKICAgICBpZiAoaXNLZXlib2FyZEV2ZW50VmFsaWQgJiYg
ZXZlbnQudHlwZSgpID09IFdlYkV2ZW50OjpLZXlEb3duKSB7CiAgICAgICAgIFBsYXRmb3JtS2V5
Ym9hcmRFdmVudCBwbGF0Zm9ybUV2ZW50KHBsYXRmb3JtKGV2ZW50KSk7CiAgICAgICAgIHBsYXRm
b3JtRXZlbnQuZGlzYW1iaWd1YXRlS2V5RG93bkV2ZW50KFBsYXRmb3JtRXZlbnQ6OlJhd0tleURv
d24pOwotICAgICAgICBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLnNldEluaXRpYWxGb2N1cyhm
b3J3YXJkID8gRm9jdXNEaXJlY3Rpb25Gb3J3YXJkIDogRm9jdXNEaXJlY3Rpb25CYWNrd2FyZCwg
JktleWJvYXJkRXZlbnQ6OmNyZWF0ZShwbGF0Zm9ybUV2ZW50LCAmZnJhbWUud2luZG93UHJveHko
KSkuZ2V0KCkpOworICAgICAgICBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLnNldEluaXRpYWxG
b2N1cyhmb3J3YXJkID8gRm9jdXNEaXJlY3Rpb246OkZvcndhcmQgOiBGb2N1c0RpcmVjdGlvbjo6
QmFja3dhcmQsICZLZXlib2FyZEV2ZW50OjpjcmVhdGUocGxhdGZvcm1FdmVudCwgJmZyYW1lLndp
bmRvd1Byb3h5KCkpLmdldCgpKTsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuc2V0SW5p
dGlhbEZvY3VzKGZvcndhcmQgPyBGb2N1c0RpcmVjdGlvbkZvcndhcmQgOiBGb2N1c0RpcmVjdGlv
bkJhY2t3YXJkLCBudWxscHRyKTsKKyAgICBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLnNldElu
aXRpYWxGb2N1cyhmb3J3YXJkID8gRm9jdXNEaXJlY3Rpb246OkZvcndhcmQgOiBGb2N1c0RpcmVj
dGlvbjo6QmFja3dhcmQsIG51bGxwdHIpOwogICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNo
cm9tZUNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YkNocm9tZUNsaWVudC5tbQppbmRleCA0YmM0YzdhZGQ2Y2I4MWJkYmU2YmVjZTBlN2M0YzcwMDIz
NmUzNTE1Li5lMTE4MmJkNGQ1OTQwZjM1MWI3NmY4Y2YwNDE4YTdkZWUzOWMyOTExIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGll
bnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hy
b21lQ2xpZW50Lm1tCkBAIC0yMDUsNyArMjA1LDcgQEAgYm9vbCBXZWJDaHJvbWVDbGllbnQ6OmNh
blRha2VGb2N1cyhGb2N1c0RpcmVjdGlvbikKIHZvaWQgV2ViQ2hyb21lQ2xpZW50Ojp0YWtlRm9j
dXMoRm9jdXNEaXJlY3Rpb24gZGlyZWN0aW9uKQogewogI2lmICFQTEFURk9STShJT1NfRkFNSUxZ
KQotICAgIGlmIChkaXJlY3Rpb24gPT0gRm9jdXNEaXJlY3Rpb25Gb3J3YXJkKSB7CisgICAgaWYg
KGRpcmVjdGlvbiA9PSBGb2N1c0RpcmVjdGlvbjo6Rm9yd2FyZCkgewogICAgICAgICAvLyBTaW5j
ZSB3ZSdyZSB0cnlpbmcgdG8gbW92ZSBmb2N1cyBvdXQgb2YgbV93ZWJWaWV3LCBhbmQgYmVjYXVz
ZQogICAgICAgICAvLyBtX3dlYlZpZXcgbWF5IGNvbnRhaW4gc3Vidmlld3Mgd2l0aGluIGl0LCB3
ZSBhc2sgaXQgZm9yIHRoZSBuZXh0IGtleQogICAgICAgICAvLyB2aWV3IG9mIHRoZSBsYXN0IHZp
ZXcgaW4gaXRzIGtleSB2aWV3IGxvb3AuIFRoaXMgbWFrZXMgbV93ZWJWaWV3CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQppbmRleCBlZTY0ODFmMzg2
MGE3YTdiNTFhMTEwNzhlNDMzOGQ3MDVjZmRhYjYxLi41ZTZmZThhMGI4YjhkZGVjYmY4MGRiZTNm
NWJhZTEzMThiMDg2YzY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJW
aWV3L1dlYkhUTUxWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcv
V2ViSFRNTFZpZXcubW0KQEAgLTQ2MTUsNyArNDYxNSw3IEBAIHN0YXRpYyBSZWZQdHI8V2ViQ29y
ZTo6S2V5Ym9hcmRFdmVudD4gY3VycmVudEtleWJvYXJkRXZlbnQoV2ViQ29yZTo6RnJhbWUqIGNv
cmVGCiAKICAgICBpZiAoYXV0byogZG9jdW1lbnQgPSBmcmFtZS0+ZG9jdW1lbnQoKSkKICAgICAg
ICAgZG9jdW1lbnQtPnNldEZvY3VzZWRFbGVtZW50KDApOwotICAgIHBhZ2UtPmZvY3VzQ29udHJv
bGxlcigpLnNldEluaXRpYWxGb2N1cyhkaXJlY3Rpb24gPT0gTlNTZWxlY3RpbmdOZXh0ID8gV2Vi
Q29yZTo6Rm9jdXNEaXJlY3Rpb25Gb3J3YXJkIDogV2ViQ29yZTo6Rm9jdXNEaXJlY3Rpb25CYWNr
d2FyZCwKKyAgICBwYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5zZXRJbml0aWFsRm9jdXMoZGlyZWN0
aW9uID09IE5TU2VsZWN0aW5nTmV4dCA/IFdlYkNvcmU6OkZvY3VzRGlyZWN0aW9uOjpGb3J3YXJk
IDogV2ViQ29yZTo6Rm9jdXNEaXJlY3Rpb246OkJhY2t3YXJkLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudEtleWJvYXJkRXZlbnQoZnJhbWUpLmdl
dCgpKTsKICAgICByZXR1cm4gWUVTOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKaW5kZXggOTM4YmI4
NTI4MzZiOGE4ZjYxZjljMGNmZDNjZDU0NzdhNDUyNmRkMy4uZTUzMTA5M2QyOTUxM2JjOWNkOTg1
NzMxM2VjYWM0MjMyZmYyYTdmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCkBAIC0xMzksNyArMTM5
LDcgQEAgdm9pZCBXZWJDaHJvbWVDbGllbnQ6OnVuZm9jdXMoKQogYm9vbCBXZWJDaHJvbWVDbGll
bnQ6OmNhblRha2VGb2N1cyhGb2N1c0RpcmVjdGlvbiBkaXJlY3Rpb24pCiB7CiAgICAgSVdlYlVJ
RGVsZWdhdGUqIHVpRGVsZWdhdGUgPSAwOwotICAgIEJPT0wgYkZvcndhcmQgPSAoZGlyZWN0aW9u
ID09IEZvY3VzRGlyZWN0aW9uRm9yd2FyZCkgPyBUUlVFIDogRkFMU0U7CisgICAgQk9PTCBiRm9y
d2FyZCA9IChkaXJlY3Rpb24gPT0gRm9jdXNEaXJlY3Rpb246OkZvcndhcmQpID8gVFJVRSA6IEZB
TFNFOwogICAgIEJPT0wgcmVzdWx0ID0gRkFMU0U7CiAgICAgaWYgKFNVQ0NFRURFRChtX3dlYlZp
ZXctPnVpRGVsZWdhdGUoJnVpRGVsZWdhdGUpKSkgewogICAgICAgICB1aURlbGVnYXRlLT5jYW5U
YWtlRm9jdXMobV93ZWJWaWV3LCBiRm9yd2FyZCwgJnJlc3VsdCk7CkBAIC0xNTIsNyArMTUyLDcg
QEAgYm9vbCBXZWJDaHJvbWVDbGllbnQ6OmNhblRha2VGb2N1cyhGb2N1c0RpcmVjdGlvbiBkaXJl
Y3Rpb24pCiB2b2lkIFdlYkNocm9tZUNsaWVudDo6dGFrZUZvY3VzKEZvY3VzRGlyZWN0aW9uIGRp
cmVjdGlvbikKIHsKICAgICBJV2ViVUlEZWxlZ2F0ZSogdWlEZWxlZ2F0ZSA9IDA7Ci0gICAgQk9P
TCBiRm9yd2FyZCA9IChkaXJlY3Rpb24gPT0gRm9jdXNEaXJlY3Rpb25Gb3J3YXJkKSA/IFRSVUUg
OiBGQUxTRTsKKyAgICBCT09MIGJGb3J3YXJkID0gKGRpcmVjdGlvbiA9PSBGb2N1c0RpcmVjdGlv
bjo6Rm9yd2FyZCkgPyBUUlVFIDogRkFMU0U7CiAgICAgaWYgKFNVQ0NFRURFRChtX3dlYlZpZXct
PnVpRGVsZWdhdGUoJnVpRGVsZWdhdGUpKSkgewogICAgICAgICB1aURlbGVnYXRlLT50YWtlRm9j
dXMobV93ZWJWaWV3LCBiRm9yd2FyZCk7CiAgICAgICAgIHVpRGVsZWdhdGUtPlJlbGVhc2UoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuY3BwIGIvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5jcHAKaW5kZXggY2E0ZjcyNDY1NThjMzY2Y2Q2Y2Y0
YmU5ZmYwNTZiNjZkYTc1MTEwNy4uOTlkYjU5MmY4NDU2NWU0ODhiMjFhNjRlOWI0NGIxYjM0ZGQz
YzAxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5jcHAKKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5jcHAKQEAgLTU5NzUsNyArNTk3NSw3
IEBAIEhSRVNVTFQgV2ViVmlldzo6c2V0SW5pdGlhbEZvY3VzKEJPT0wgZm9yd2FyZCkKICAgICBp
ZiAobV9wYWdlKSB7CiAgICAgICAgIEZyYW1lJiBmcmFtZSA9IG1fcGFnZS0+Zm9jdXNDb250cm9s
bGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCk7CiAgICAgICAgIGZyYW1lLmRvY3VtZW50KCktPnNl
dEZvY3VzZWRFbGVtZW50KDApOwotICAgICAgICBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLnNl
dEluaXRpYWxGb2N1cyhmb3J3YXJkID8gRm9jdXNEaXJlY3Rpb25Gb3J3YXJkIDogRm9jdXNEaXJl
Y3Rpb25CYWNrd2FyZCwgMCk7CisgICAgICAgIG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuc2V0
SW5pdGlhbEZvY3VzKGZvcndhcmQgPyBGb2N1c0RpcmVjdGlvbjo6Rm9yd2FyZCA6IEZvY3VzRGly
ZWN0aW9uOjpCYWNrd2FyZCwgMCk7CiAgICAgfQogICAgIHJldHVybiBTX09LOwogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>412290</attachid>
            <date>2020-10-25 23:17:06 -0700</date>
            <delta_ts>2020-10-27 02:03:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218162-20201026151705.patch</filename>
            <type>text/plain</type>
            <size>47410</size>
            <attacher name="Tetsuharu Ohzeki [UTC+9]">tetsuharu.ohzeki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY4OTU3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzNmN2RhNWE5NzU2MGRi
YzQzYWYzYjlkM2MzZjdhMTFjMDMzM2MwMC4uYzNlZjVkNTk5NjhhNTlmNTY3NzFlYzU4NzliNmFl
ODA1NmIzMjQ2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5IEBACisyMDIwLTEwLTI1ICBUZXRz
dWhhcnUgT2h6ZWtpICA8dGV0c3VoYXJ1Lm9oemVraUBnbWFpbC5jb20+CisKKyAgICAgICAgTWFr
ZSBXZWJDb3JlOjpGb2N1c0RpcmVjdGlvbiB0byBlbnVtIGNsYXNzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTgxNjIKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpEb2N1bWVudDo6YWRqdXN0Rm9jdXNlZE5vZGVPbk5vZGVSZW1vdmFsKToK
KyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojpmb2N1c05hdmlnYXRpb25TdGFydGluZ05vZGUg
Y29uc3QpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOgorICAgICAgICAqIGRvbS9FbGVtZW50
Lmg6CisgICAgICAgICogaHRtbC9CYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6QmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlOjpoYW5kbGVGb2N1c0V2ZW50KToK
KyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpmb2N1
c0RpcmVjdGlvbkZvcktleSk6CisgICAgICAgIChXZWJDb3JlOjpoYW5kbGVLZXlib2FyZFNlbGVj
dGlvbk1vdmVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6YWNjZXNzaWJp
bGl0eVByZXZlbnRzRXZlbnRQcm9wYWdhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhh
bmRsZXI6OmRlZmF1bHRLZXlib2FyZEV2ZW50SGFuZGxlcik6CisgICAgICAgIChXZWJDb3JlOjpF
dmVudEhhbmRsZXI6OmRlZmF1bHRUYWJFdmVudEhhbmRsZXIpOgorICAgICAgICAqIHBhZ2UvRm9j
dXNDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmRpc3BhdGNoRXZlbnRzT25XaW5k
b3dBbmRGb2N1c2VkRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpGb2N1c0NvbnRyb2xsZXI6
OmFkdmFuY2VGb2N1cyk6CisgICAgICAgIChXZWJDb3JlOjpGb2N1c0NvbnRyb2xsZXI6OmZpbmRG
b2N1c2FibGVFbGVtZW50QWNyb3NzRm9jdXNTY29wZSk6CisgICAgICAgIChXZWJDb3JlOjpGb2N1
c0NvbnRyb2xsZXI6OmZpbmRGb2N1c2FibGVFbGVtZW50V2l0aGluU2NvcGUpOgorICAgICAgICAo
V2ViQ29yZTo6Rm9jdXNDb250cm9sbGVyOjpmaW5kRm9jdXNhYmxlRWxlbWVudE9yU2NvcGVPd25l
cik6CisgICAgICAgIChXZWJDb3JlOjpGb2N1c0NvbnRyb2xsZXI6OmZpbmRFbGVtZW50V2l0aEV4
YWN0VGFiSW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6Rm9jdXNDb250cm9sbGVyOjpuZXh0Rm9j
dXNhYmxlRWxlbWVudE9yU2NvcGVPd25lcik6CisgICAgICAgIChXZWJDb3JlOjpGb2N1c0NvbnRy
b2xsZXI6OnByZXZpb3VzRm9jdXNhYmxlRWxlbWVudE9yU2NvcGVPd25lcik6CisgICAgICAgICog
cGFnZS9Gb2N1c0NvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBwYWdlL0ZvY3VzRGlyZWN0aW9uLmg6
CisgICAgICAgICogcGFnZS9TcGF0aWFsTmF2aWdhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3Jl
Ojppc0hvcml6b250YWxNb3ZlKToKKyAgICAgICAgKFdlYkNvcmU6OmFyZVJlY3RzRnVsbHlBbGln
bmVkKToKKyAgICAgICAgKFdlYkNvcmU6OmFyZVJlY3RzTW9yZVRoYW5GdWxsU2NyZWVuQXBhcnQp
OgorICAgICAgICAoV2ViQ29yZTo6aXNSZWN0SW5EaXJlY3Rpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6aGFzT2Zmc2NyZWVuUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpzY3JvbGxJbkRpcmVjdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpjYW5TY3JvbGxJbkRpcmVjdGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjplbnRyeUFuZEV4aXRQb2ludHNGb3JEaXJlY3Rpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6aXNWYWxpZENhbmRpZGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpkaXN0YW5jZURhdGFGb3JO
b2RlKToKKyAgICAgICAgKFdlYkNvcmU6OmNhbkJlU2Nyb2xsZWRJbnRvVmlldyk6CisgICAgICAg
IChXZWJDb3JlOjp2aXJ0dWFsUmVjdEZvckRpcmVjdGlvbik6CisgICAgICAgICogcGFnZS9TcGF0
aWFsTmF2aWdhdGlvbi5oOgorCiAyMDIwLTEwLTI1ICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxl
LmNvbT4KIAogICAgICAgICBSZW1vdmUgc3VwcG9ydCBmb3IgJ3BpeGVsJyBhbmQgJ3BvcycgQ1NT
T00gcHJlZml4ZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggY2QyNjJmYTVjNjNjODU3YzhlMDZlNzdjYmIzYWE4ZGEx
NDYyOGEzYS4uOGQ1MWNkY2M1Yjc1N2FjYzU3MGVjYzI5Y2VlYjgxOWZhMDNjZDJiMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwyMiBAQAorMjAyMC0xMC0yNSAgVGV0c3VoYXJ1IE9oemVraSAgPHRldHN1
aGFydS5vaHpla2lAZ21haWwuY29tPgorCisgICAgICAgIE1ha2UgV2ViQ29yZTo6Rm9jdXNEaXJl
Y3Rpb24gdG8gZW51bSBjbGFzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjE4MTYyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW06CisgICAgICAgIChX
ZWJLaXQ6OldlYlZpZXdJbXBsOjp0YWtlRm9jdXMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnRha2VGb2N1cyk6
CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDaHJvbWVD
bGllbnQ6OnRha2VGb2N1cyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpoYW5kbGVLZXlFdmVudEJ5UmVsaW5xdWlz
aGluZ0ZvY3VzVG9DaHJvbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzZXRJbml0aWFs
Rm9jdXMpOgorCiAyMDIwLTEwLTIyICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgog
CiAgICAgICAgIElQQyB0ZXN0aW5nIEFQSSBzaG91bGQgZXhwb3NlIEFycmF5QnVmZmVyIGZvciBh
biB1bmtub3duIGRlY29kZWQgYXJndW1lbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRl
eCA4N2NkNzA0ZGVmMGNkNjFkNzNmZjk3NzRhMTkxZjgyNzNlZjVlNDJhLi43NDUyNTEwZWI0NmUy
NjBjODNhYjkwZmU4NjFhZjQ4OTRlMThhYWYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTUgQEAKKzIwMjAtMTAtMjUgIFRldHN1aGFydSBPaHpla2kgIDx0ZXRzdWhh
cnUub2h6ZWtpQGdtYWlsLmNvbT4KKworICAgICAgICBNYWtlIFdlYkNvcmU6OkZvY3VzRGlyZWN0
aW9uIHRvIGVudW0gY2xhc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIxODE2MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lm1tOgorICAgICAgICAo
V2ViQ2hyb21lQ2xpZW50Ojp0YWtlRm9jdXMpOgorICAgICAgICAqIFdlYlZpZXcvV2ViSFRNTFZp
ZXcubW06CisgICAgICAgICgtW1dlYkhUTUxWaWV3IGJlY29tZUZpcnN0UmVzcG9uZGVyXSk6CisK
IDIwMjAtMTAtMjEgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29tPgogCiAgICAgICAg
IFttYWNPUyBXSzFdIHByb3ZpZGUgYSB3YXkgZm9yIEFwcGxlLWludGVybmFsIGNsaWVudHMgdG8g
ZGlzYWJsZSBsaW5rIHByZXZpZXcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwppbmRleCA0ZjJk
MGQzMzAyZTI2ZTUyZDVkZGM0ZDVkYzYzYTkxYTdkNTAwNjc2Li5iNzM0OWU2ZDk5MmFmNDNjNDg5
YWRjZWFhZDViM2JlODkwYjY1MzA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTYgQEAKKzIwMjAtMTAtMjUgIFRldHN1aGFydSBPaHpla2kgIDx0ZXRzdWhhcnUub2h6
ZWtpQGdtYWlsLmNvbT4KKworICAgICAgICBNYWtlIFdlYkNvcmU6OkZvY3VzRGlyZWN0aW9uIHRv
IGVudW0gY2xhc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIxODE2MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYkNo
cm9tZUNsaWVudDo6Y2FuVGFrZUZvY3VzKToKKyAgICAgICAgKFdlYkNocm9tZUNsaWVudDo6dGFr
ZUZvY3VzKToKKyAgICAgICAgKiBXZWJWaWV3LmNwcDoKKyAgICAgICAgKFdlYlZpZXc6OnNldElu
aXRpYWxGb2N1cyk6CisKIDIwMjAtMTAtMjIgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29t
PgogCiAgICAgICAgIFJFR1JFU1NJT04ocjI2NjI5NSk6IERPTVNlbGVjdGlvbidzIGFkZFJhbmdl
IGFuZCBjb250YWluc05vZGUgYmVoYXZlIGluY29ycmVjdGx5IHdoZW4gc2VsZWN0aW9uIGNyb3Nz
ZXMgc2hhZG93IGJvdW5kYXJpZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IDMyMDExZmQy
YzAxYTljZjE1NGE2OGFjZDY2NTZkNzEyNjUyODBkZDkuLjU2MGVmZmE2NWYyODEzODVhMWNmNmUy
NmRiZThjNzUwMjYzNGJlNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtNDI0NCw3ICs0
MjQ0LDcgQEAgdm9pZCBEb2N1bWVudDo6YWRqdXN0Rm9jdXNlZE5vZGVPbk5vZGVSZW1vdmFsKE5v
ZGUmIG5vZGUsIE5vZGVSZW1vdmFsIG5vZGVSZW1vdmEKICAgICAgICAgLy8gRklYTUU6IFdlIHNo
b3VsZCBhdm9pZCBzeW5jaHJvbm91c2x5IHVwZGF0aW5nIHRoZSBzdHlsZSBpbnNpZGUgc2V0Rm9j
dXNlZEVsZW1lbnQuCiAgICAgICAgIC8vIEZJWE1FOiBPYmplY3QgZWxlbWVudHMgc2hvdWxkIGF2
b2lkIGxvYWRpbmcgYSBmcmFtZSBzeW5jaHJvbm91c2x5IGluIGEgcG9zdCBzdHlsZSByZWNhbGMg
Y2FsbGJhY2suCiAgICAgICAgIFN1YmZyYW1lTG9hZGluZ0Rpc2FibGVyIGRpc2FibGVyKGlzPENv
bnRhaW5lck5vZGU+KG5vZGUpID8gJmRvd25jYXN0PENvbnRhaW5lck5vZGU+KG5vZGUpIDogbnVs
bHB0cik7Ci0gICAgICAgIHNldEZvY3VzZWRFbGVtZW50KG51bGxwdHIsIEZvY3VzRGlyZWN0aW9u
Tm9uZSwgRm9jdXNSZW1vdmFsRXZlbnRzTW9kZTo6RG9Ob3REaXNwYXRjaCk7CisgICAgICAgIHNl
dEZvY3VzZWRFbGVtZW50KG51bGxwdHIsIEZvY3VzRGlyZWN0aW9uOjpOb25lLCBGb2N1c1JlbW92
YWxFdmVudHNNb2RlOjpEb05vdERpc3BhdGNoKTsKICAgICAgICAgLy8gU2V0IHRoZSBmb2N1cyBu
YXZpZ2F0aW9uIHN0YXJ0aW5nIG5vZGUgdG8gdGhlIHByZXZpb3VzIGZvY3VzZWQgZWxlbWVudCBz
byB0aGF0CiAgICAgICAgIC8vIHdlIGNhbiBmYWxsYmFjayB0byB0aGUgc2libGluZ3Mgb3IgcGFy
ZW50IG5vZGUgZm9yIHRoZSBuZXh0IHNlYXJjaC4KICAgICAgICAgLy8gQWxzbyB3ZSBuZWVkIHRv
IGNhbGwgcmVtb3ZlRm9jdXNOYXZpZ2F0aW9uTm9kZU9mU3VidHJlZSBhZnRlciB0aGlzIGZ1bmN0
aW9uIGJlY2F1c2UKQEAgLTQ1MjUsNyArNDUyNSw3IEBAIEVsZW1lbnQqIERvY3VtZW50Ojpmb2N1
c05hdmlnYXRpb25TdGFydGluZ05vZGUoRm9jdXNEaXJlY3Rpb24gZGlyZWN0aW9uKSBjb25zdAog
ICAgICAgICBOb2RlKiBuZXh0Tm9kZSA9IE5vZGVUcmF2ZXJzYWw6Om5leHQoKm5vZGUpOwogICAg
ICAgICBpZiAoIW5leHROb2RlKQogICAgICAgICAgICAgbmV4dE5vZGUgPSBub2RlOwotICAgICAg
ICBpZiAoZGlyZWN0aW9uID09IEZvY3VzRGlyZWN0aW9uRm9yd2FyZCkKKyAgICAgICAgaWYgKGRp
cmVjdGlvbiA9PSBGb2N1c0RpcmVjdGlvbjo6Rm9yd2FyZCkKICAgICAgICAgICAgIHJldHVybiBF
bGVtZW50VHJhdmVyc2FsOjpwcmV2aW91cygqbmV4dE5vZGUpOwogICAgICAgICBpZiAoaXM8RWxl
bWVudD4oKm5leHROb2RlKSkKICAgICAgICAgICAgIHJldHVybiBkb3duY2FzdDxFbGVtZW50Pihu
ZXh0Tm9kZSk7CkBAIC00NTM0LDcgKzQ1MzQsNyBAQCBFbGVtZW50KiBEb2N1bWVudDo6Zm9jdXNO
YXZpZ2F0aW9uU3RhcnRpbmdOb2RlKEZvY3VzRGlyZWN0aW9uIGRpcmVjdGlvbikgY29uc3QKIAog
ICAgIGlmIChpczxFbGVtZW50Pigqbm9kZSkpCiAgICAgICAgIHJldHVybiBkb3duY2FzdDxFbGVt
ZW50Pihub2RlKTsKLSAgICBpZiAoRWxlbWVudCogZWxlbWVudEJlZm9yZU5leHRGb2N1c2FibGVF
bGVtZW50ID0gZGlyZWN0aW9uID09IEZvY3VzRGlyZWN0aW9uRm9yd2FyZCA/IEVsZW1lbnRUcmF2
ZXJzYWw6OnByZXZpb3VzKCpub2RlKSA6IEVsZW1lbnRUcmF2ZXJzYWw6Om5leHQoKm5vZGUpKQor
ICAgIGlmIChFbGVtZW50KiBlbGVtZW50QmVmb3JlTmV4dEZvY3VzYWJsZUVsZW1lbnQgPSBkaXJl
Y3Rpb24gPT0gRm9jdXNEaXJlY3Rpb246OkZvcndhcmQgPyBFbGVtZW50VHJhdmVyc2FsOjpwcmV2
aW91cygqbm9kZSkgOiBFbGVtZW50VHJhdmVyc2FsOjpuZXh0KCpub2RlKSkKICAgICAgICAgcmV0
dXJuIGVsZW1lbnRCZWZvcmVOZXh0Rm9jdXNhYmxlRWxlbWVudDsKICAgICByZXR1cm4gbm9kZS0+
cGFyZW50T3JTaGFkb3dIb3N0RWxlbWVudCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAppbmRleCA4
MTIwMTQxNTFlZTExMDlhNDBhMjc2NDcyNTYxZjY0YjVjOGMwYTdlLi45ZTdhMWZmNmQxZmUyZjBh
ZmZmMzU5YTEyY2MzYWQyMmQ5OTczMjMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaApAQCAtNzQ5LDcg
Kzc0OSw3IEBAIHB1YmxpYzoKICAgICBlbnVtIGNsYXNzIEZvY3VzUmVtb3ZhbEV2ZW50c01vZGUg
eyBEaXNwYXRjaCwgRG9Ob3REaXNwYXRjaCB9OwogICAgIC8vIFJldHVybnMgd2hldGhlciBmb2N1
cyB3YXMgYmxvY2tlZC4gQSB0cnVlIHZhbHVlIGRvZXMgbm90IG5lY2Vzc2FyaWx5IG1lYW4gdGhl
IGVsZW1lbnQgd2FzIGZvY3VzZWQuCiAgICAgLy8gVGhlIGVsZW1lbnQgY291bGQgaGF2ZSBhbHJl
YWR5IGJlZW4gZm9jdXNlZCBvciBtYXkgbm90IGJlIGZvY3VzYWJsZSAoZS5nLiA8aW5wdXQgZGlz
YWJsZWQ+KS4KLSAgICBXRUJDT1JFX0VYUE9SVCBib29sIHNldEZvY3VzZWRFbGVtZW50KEVsZW1l
bnQqLCBGb2N1c0RpcmVjdGlvbiA9IEZvY3VzRGlyZWN0aW9uTm9uZSwKKyAgICBXRUJDT1JFX0VY
UE9SVCBib29sIHNldEZvY3VzZWRFbGVtZW50KEVsZW1lbnQqLCBGb2N1c0RpcmVjdGlvbiA9IEZv
Y3VzRGlyZWN0aW9uOjpOb25lLAogICAgICAgICBGb2N1c1JlbW92YWxFdmVudHNNb2RlID0gRm9j
dXNSZW1vdmFsRXZlbnRzTW9kZTo6RGlzcGF0Y2gpOwogICAgIEVsZW1lbnQqIGZvY3VzZWRFbGVt
ZW50KCkgY29uc3QgeyByZXR1cm4gbV9mb2N1c2VkRWxlbWVudC5nZXQoKTsgfQogICAgIFVzZXJB
Y3Rpb25FbGVtZW50U2V0JiB1c2VyQWN0aW9uRWxlbWVudHMoKSAgeyByZXR1cm4gbV91c2VyQWN0
aW9uRWxlbWVudHM7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCmluZGV4IDU2NjUyM2QzMzQ3Mjk4OTMxYjUx
MDNmMzk0ZDEzOWNlZTI0ZjAyZDIuLjE5NzQyOTkwNTAzODQ3MTIwMzQ3NTFlODBlZWNlOWM2YThl
NjBjMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaApAQCAtNDAwLDcgKzQwMCw3IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIFN0cmluZyB0YXJnZXQoKSBjb25zdCB7IHJldHVybiBTdHJpbmcoKTsgfQogCiAg
ICAgc3RhdGljIEFYVGV4dFN0YXRlQ2hhbmdlSW50ZW50IGRlZmF1bHRGb2N1c1RleHRTdGF0ZUNo
YW5nZUludGVudCgpIHsgcmV0dXJuIEFYVGV4dFN0YXRlQ2hhbmdlSW50ZW50KEFYVGV4dFN0YXRl
Q2hhbmdlVHlwZVNlbGVjdGlvbk1vdmUsIEFYVGV4dFNlbGVjdGlvbiB7IEFYVGV4dFNlbGVjdGlv
bkRpcmVjdGlvbkRpc2NvbnRpZ3VvdXMsIEFYVGV4dFNlbGVjdGlvbkdyYW51bGFyaXR5VW5rbm93
biwgdHJ1ZSB9KTsgfQotICAgIHZpcnR1YWwgdm9pZCBmb2N1cyhib29sIHJlc3RvcmVQcmV2aW91
c1NlbGVjdGlvbiA9IHRydWUsIEZvY3VzRGlyZWN0aW9uID0gRm9jdXNEaXJlY3Rpb25Ob25lKTsK
KyAgICB2aXJ0dWFsIHZvaWQgZm9jdXMoYm9vbCByZXN0b3JlUHJldmlvdXNTZWxlY3Rpb24gPSB0
cnVlLCBGb2N1c0RpcmVjdGlvbiA9IEZvY3VzRGlyZWN0aW9uOjpOb25lKTsKICAgICB2b2lkIHJl
dmVhbEZvY3VzZWRFbGVtZW50KFNlbGVjdGlvblJlc3RvcmF0aW9uTW9kZSk7CiAgICAgdmlydHVh
bCBSZWZQdHI8RWxlbWVudD4gZm9jdXNBcHBlYXJhbmNlVXBkYXRlVGFyZ2V0KCk7CiAgICAgdmly
dHVhbCB2b2lkIHVwZGF0ZUZvY3VzQXBwZWFyYW5jZShTZWxlY3Rpb25SZXN0b3JhdGlvbk1vZGUs
IFNlbGVjdGlvblJldmVhbE1vZGUgPSBTZWxlY3Rpb25SZXZlYWxNb2RlOjpSZXZlYWwpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9CYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9CYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGUuY3BwCmluZGV4
IDZmOWU1NDczZGZlMzMxOWEwY2M4ZWE4MTY1ODhjMGIzYWY3YWNiNWUuLmJhNTM3MGYyZjA4NDNk
NTRiNjYxYTBhMzgyN2U4MjQzMjY2ZjUxNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0Jhc2VEYXRlQW5kVGltZUlucHV0VHlwZS5jcHAKQEAgLTQzNSw3ICs0MzUsNyBAQCB2b2lkIEJh
c2VEYXRlQW5kVGltZUlucHV0VHlwZTo6aGFuZGxlRm9jdXNFdmVudChOb2RlKiBvbGRGb2N1c2Vk
Tm9kZSwgRm9jdXNEaXJlYwogICAgIC8vIElmIHRoZSBlbGVtZW50IGNvbnRhaW5zIGVkaXRhYmxl
IGNvbXBvbmVudHMsIHRoZSBlbGVtZW50IGl0c2VsZiBzaG91bGQgbm90CiAgICAgLy8gYmUgZm9j
dXNlZC4gSW5zdGVhZCwgb25lIG9mIGl0J3MgY2hpbGRyZW4gc2hvdWxkIHJlY2VpdmUgZm9jdXMu
CiAKLSAgICBpZiAoZGlyZWN0aW9uID09IEZvY3VzRGlyZWN0aW9uQmFja3dhcmQpIHsKKyAgICBp
ZiAoZGlyZWN0aW9uID09IEZvY3VzRGlyZWN0aW9uOjpCYWNrd2FyZCkgewogICAgICAgICAvLyBJ
ZiB0aGUgZWxlbWVudCByZWNlaXZlZCBmb2N1cyB3aGVuIGdvaW5nIGJhY2t3YXJkcywgYWR2YW5j
ZSB0aGUgZm9jdXMgb25lIG1vcmUgdGltZQogICAgICAgICAvLyBzbyB0aGF0IHRoaXMgZWxlbWVu
dCBubyBsb25nZXIgaGFzIGZvY3VzLiBJbiB0aGlzIGNhc2UsIG9uZSBvZiB0aGUgY2hpbGRyZW4g
c2hvdWxkCiAgICAgICAgIC8vIG5vdCBiZSBmb2N1c2VkIGFzIHRoZSBlbGVtZW50IGlzIGxvc2lu
ZyBmb2N1cyBlbnRpcmVseS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRI
YW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAppbmRleCA0
NzU4ODc2NDFmMjA4NmExMTQzOTg1ZWY4YjY0MmJhZjQzMDQ2ZDQ1Li5iZmQ5YTk5MWIzNmYwNGIw
MTg0MDc4YWE3MjI0N2RkMTc5NmZkNTRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0V2ZW50SGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIu
Y3BwCkBAIC0zNDk0LDE2ICszNDk0LDE2IEBAIHN0YXRpYyBGb2N1c0RpcmVjdGlvbiBmb2N1c0Rp
cmVjdGlvbkZvcktleShjb25zdCBBdG9tU3RyaW5nJiBrZXlJZGVudGlmaWVyKQogICAgIHN0YXRp
YyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gTGVmdCgiTGVmdCIs
IEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICBzdGF0aWMgTWFpblRocmVh
ZE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IFJpZ2h0KCJSaWdodCIsIEF0b21TdHJp
bmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKIAotICAgIEZvY3VzRGlyZWN0aW9uIHJldFZhbCA9
IEZvY3VzRGlyZWN0aW9uTm9uZTsKKyAgICBGb2N1c0RpcmVjdGlvbiByZXRWYWwgPSBGb2N1c0Rp
cmVjdGlvbjo6Tm9uZTsKIAogICAgIGlmIChrZXlJZGVudGlmaWVyID09IERvd24pCi0gICAgICAg
IHJldFZhbCA9IEZvY3VzRGlyZWN0aW9uRG93bjsKKyAgICAgICAgcmV0VmFsID0gRm9jdXNEaXJl
Y3Rpb246OkRvd247CiAgICAgZWxzZSBpZiAoa2V5SWRlbnRpZmllciA9PSBVcCkKLSAgICAgICAg
cmV0VmFsID0gRm9jdXNEaXJlY3Rpb25VcDsKKyAgICAgICAgcmV0VmFsID0gRm9jdXNEaXJlY3Rp
b246OlVwOwogICAgIGVsc2UgaWYgKGtleUlkZW50aWZpZXIgPT0gTGVmdCkKLSAgICAgICAgcmV0
VmFsID0gRm9jdXNEaXJlY3Rpb25MZWZ0OworICAgICAgICByZXRWYWwgPSBGb2N1c0RpcmVjdGlv
bjo6TGVmdDsKICAgICBlbHNlIGlmIChrZXlJZGVudGlmaWVyID09IFJpZ2h0KQotICAgICAgICBy
ZXRWYWwgPSBGb2N1c0RpcmVjdGlvblJpZ2h0OworICAgICAgICByZXRWYWwgPSBGb2N1c0RpcmVj
dGlvbjo6UmlnaHQ7CiAKICAgICByZXR1cm4gcmV0VmFsOwogfQpAQCAtMzU1NiwyNSArMzU1Niwy
NSBAQCBzdGF0aWMgdm9pZCBoYW5kbGVLZXlib2FyZFNlbGVjdGlvbk1vdmVtZW50KEZyYW1lJiBm
cmFtZSwgS2V5Ym9hcmRFdmVudCYgZXZlbnQpCiAgICAgVGV4dEdyYW51bGFyaXR5IGdyYW51bGFy
aXR5ID0gVGV4dEdyYW51bGFyaXR5OjpDaGFyYWN0ZXJHcmFudWxhcml0eTsKIAogICAgIHN3aXRj
aCAoZm9jdXNEaXJlY3Rpb25Gb3JLZXkoZXZlbnQua2V5SWRlbnRpZmllcigpKSkgewotICAgIGNh
c2UgRm9jdXNEaXJlY3Rpb25Ob25lOgorICAgIGNhc2UgRm9jdXNEaXJlY3Rpb246Ok5vbmU6CiAg
ICAgICAgIHJldHVybjsKLSAgICBjYXNlIEZvY3VzRGlyZWN0aW9uRm9yd2FyZDoKLSAgICBjYXNl
IEZvY3VzRGlyZWN0aW9uQmFja3dhcmQ6CisgICAgY2FzZSBGb2N1c0RpcmVjdGlvbjo6Rm9yd2Fy
ZDoKKyAgICBjYXNlIEZvY3VzRGlyZWN0aW9uOjpCYWNrd2FyZDoKICAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVybjsKLSAgICBjYXNlIEZvY3VzRGlyZWN0aW9uVXA6
CisgICAgY2FzZSBGb2N1c0RpcmVjdGlvbjo6VXA6CiAgICAgICAgIGRpcmVjdGlvbiA9IFNlbGVj
dGlvbkRpcmVjdGlvbjo6QmFja3dhcmQ7CiAgICAgICAgIGdyYW51bGFyaXR5ID0gaXNDb21tYW5k
ZWQgPyBUZXh0R3JhbnVsYXJpdHk6OkRvY3VtZW50Qm91bmRhcnkgOiBUZXh0R3JhbnVsYXJpdHk6
OkxpbmVHcmFudWxhcml0eTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBGb2N1c0RpcmVjdGlv
bkRvd246CisgICAgY2FzZSBGb2N1c0RpcmVjdGlvbjo6RG93bjoKICAgICAgICAgZGlyZWN0aW9u
ID0gU2VsZWN0aW9uRGlyZWN0aW9uOjpGb3J3YXJkOwogICAgICAgICBncmFudWxhcml0eSA9IGlz
Q29tbWFuZGVkID8gVGV4dEdyYW51bGFyaXR5OjpEb2N1bWVudEJvdW5kYXJ5IDogVGV4dEdyYW51
bGFyaXR5OjpMaW5lR3JhbnVsYXJpdHk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgRm9jdXNE
aXJlY3Rpb25MZWZ0OgorICAgIGNhc2UgRm9jdXNEaXJlY3Rpb246OkxlZnQ6CiAgICAgICAgIGRp
cmVjdGlvbiA9IFNlbGVjdGlvbkRpcmVjdGlvbjo6TGVmdDsKICAgICAgICAgZ3JhbnVsYXJpdHkg
PSAoaXNDb21tYW5kZWQpID8gVGV4dEdyYW51bGFyaXR5OjpMaW5lQm91bmRhcnkgOiAoaXNPcHRp
b25lZCkgPyBUZXh0R3JhbnVsYXJpdHk6OldvcmRHcmFudWxhcml0eSA6IFRleHRHcmFudWxhcml0
eTo6Q2hhcmFjdGVyR3JhbnVsYXJpdHk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgRm9jdXNE
aXJlY3Rpb25SaWdodDoKKyAgICBjYXNlIEZvY3VzRGlyZWN0aW9uOjpSaWdodDoKICAgICAgICAg
ZGlyZWN0aW9uID0gU2VsZWN0aW9uRGlyZWN0aW9uOjpSaWdodDsKICAgICAgICAgZ3JhbnVsYXJp
dHkgPSAoaXNDb21tYW5kZWQpID8gVGV4dEdyYW51bGFyaXR5OjpMaW5lQm91bmRhcnkgOiAoaXNP
cHRpb25lZCkgPyBUZXh0R3JhbnVsYXJpdHk6OldvcmRHcmFudWxhcml0eSA6IFRleHRHcmFudWxh
cml0eTo6Q2hhcmFjdGVyR3JhbnVsYXJpdHk7CiAgICAgICAgIGJyZWFrOwpAQCAtMzYwOSw3ICsz
NjA5LDcgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmFjY2Vzc2liaWxpdHlQcmV2ZW50c0V2ZW50UHJv
cGFnYXRpb24oS2V5Ym9hcmRFdmVudCYgZXZlbnQpCiAgICAgaWYgKGV2ZW50LmtleUlkZW50aWZp
ZXIoKSA9PSAiVSswMDA5IikKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgRm9jdXNEaXJlY3Rp
b24gZGlyZWN0aW9uID0gZm9jdXNEaXJlY3Rpb25Gb3JLZXkoZXZlbnQua2V5SWRlbnRpZmllcigp
KTsKLSAgICBpZiAoZGlyZWN0aW9uICE9IEZvY3VzRGlyZWN0aW9uTm9uZSkKKyAgICBpZiAoZGly
ZWN0aW9uICE9IEZvY3VzRGlyZWN0aW9uOjpOb25lKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICNl
bHNlCiAgICAgVU5VU0VEX1BBUkFNKGV2ZW50KTsKQEAgLTM2MzEsNyArMzYzMSw3IEBAIHZvaWQg
RXZlbnRIYW5kbGVyOjpkZWZhdWx0S2V5Ym9hcmRFdmVudEhhbmRsZXIoS2V5Ym9hcmRFdmVudCYg
ZXZlbnQpCiAgICAgICAgICAgICBkZWZhdWx0QmFja3NwYWNlRXZlbnRIYW5kbGVyKGV2ZW50KTsK
ICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBGb2N1c0RpcmVjdGlvbiBkaXJlY3Rpb24gPSBm
b2N1c0RpcmVjdGlvbkZvcktleShldmVudC5rZXlJZGVudGlmaWVyKCkpOwotICAgICAgICAgICAg
aWYgKGRpcmVjdGlvbiAhPSBGb2N1c0RpcmVjdGlvbk5vbmUpCisgICAgICAgICAgICBpZiAoZGly
ZWN0aW9uICE9IEZvY3VzRGlyZWN0aW9uOjpOb25lKQogICAgICAgICAgICAgICAgIGRlZmF1bHRB
cnJvd0V2ZW50SGFuZGxlcihkaXJlY3Rpb24sIGV2ZW50KTsKICAgICAgICAgfQogCkBAIC00MTEy
LDcgKzQxMTIsNyBAQCB2b2lkIEV2ZW50SGFuZGxlcjo6ZGVmYXVsdFRhYkV2ZW50SGFuZGxlcihL
ZXlib2FyZEV2ZW50JiBldmVudCkKICAgICBpZiAoIXBhZ2UtPnRhYktleUN5Y2xlc1Rocm91Z2hF
bGVtZW50cygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAocGFnZS0+Zm9jdXNDb250cm9s
bGVyKCkuYWR2YW5jZUZvY3VzKGV2ZW50LnNoaWZ0S2V5KCkgPyBGb2N1c0RpcmVjdGlvbkJhY2t3
YXJkIDogRm9jdXNEaXJlY3Rpb25Gb3J3YXJkLCAmZXZlbnQpKQorICAgIGlmIChwYWdlLT5mb2N1
c0NvbnRyb2xsZXIoKS5hZHZhbmNlRm9jdXMoZXZlbnQuc2hpZnRLZXkoKSA/IEZvY3VzRGlyZWN0
aW9uOjpCYWNrd2FyZCA6IEZvY3VzRGlyZWN0aW9uOjpGb3J3YXJkLCAmZXZlbnQpKQogICAgICAg
ICBldmVudC5zZXREZWZhdWx0SGFuZGxlZCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0ZvY3VzQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZvY3Vz
Q29udHJvbGxlci5jcHAKaW5kZXggNjJhOWVhNDBjY2NmYjhiNWVjZTM4NmM2MzZlNjM2YmNiMDNk
OTg5My4uODJhNjRjMzA2YjhlZWQ3ZGFkYjFhMzE2ZmJjODhlY2JlYzBlMDg0YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Gb2N1c0NvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRm9jdXNDb250cm9sbGVyLmNwcApAQCAtMzA4LDcgKzMwOCw3IEBAIHN0YXRp
YyBpbmxpbmUgdm9pZCBkaXNwYXRjaEV2ZW50c09uV2luZG93QW5kRm9jdXNlZEVsZW1lbnQoRG9j
dW1lbnQqIGRvY3VtZW50LCBiCiAgICAgICAgIGRvY3VtZW50LT5mb2N1c2VkRWxlbWVudCgpLT5k
aXNwYXRjaEJsdXJFdmVudChudWxscHRyKTsKICAgICBkb2N1bWVudC0+ZGlzcGF0Y2hXaW5kb3dF
dmVudChFdmVudDo6Y3JlYXRlKGZvY3VzZWQgPyBldmVudE5hbWVzKCkuZm9jdXNFdmVudCA6IGV2
ZW50TmFtZXMoKS5ibHVyRXZlbnQsIEV2ZW50OjpDYW5CdWJibGU6Ok5vLCBFdmVudDo6SXNDYW5j
ZWxhYmxlOjpObykpOwogICAgIGlmIChmb2N1c2VkICYmIGRvY3VtZW50LT5mb2N1c2VkRWxlbWVu
dCgpKQotICAgICAgICBkb2N1bWVudC0+Zm9jdXNlZEVsZW1lbnQoKS0+ZGlzcGF0Y2hGb2N1c0V2
ZW50KG51bGxwdHIsIEZvY3VzRGlyZWN0aW9uTm9uZSk7CisgICAgICAgIGRvY3VtZW50LT5mb2N1
c2VkRWxlbWVudCgpLT5kaXNwYXRjaEZvY3VzRXZlbnQobnVsbHB0ciwgRm9jdXNEaXJlY3Rpb246
Ok5vbmUpOwogfQogCiBzdGF0aWMgaW5saW5lIGJvb2wgaXNGb2N1c2FibGVFbGVtZW50T3JTY29w
ZU93bmVyKEVsZW1lbnQmIGVsZW1lbnQsIEtleWJvYXJkRXZlbnQqIGV2ZW50KQpAQCAtNDMzLDEz
ICs0MzMsMTMgQEAgYm9vbCBGb2N1c0NvbnRyb2xsZXI6OnNldEluaXRpYWxGb2N1cyhGb2N1c0Rp
cmVjdGlvbiBkaXJlY3Rpb24sIEtleWJvYXJkRXZlbnQqIHAKIGJvb2wgRm9jdXNDb250cm9sbGVy
OjphZHZhbmNlRm9jdXMoRm9jdXNEaXJlY3Rpb24gZGlyZWN0aW9uLCBLZXlib2FyZEV2ZW50KiBl
dmVudCwgYm9vbCBpbml0aWFsRm9jdXMpCiB7CiAgICAgc3dpdGNoIChkaXJlY3Rpb24pIHsKLSAg
ICBjYXNlIEZvY3VzRGlyZWN0aW9uRm9yd2FyZDoKLSAgICBjYXNlIEZvY3VzRGlyZWN0aW9uQmFj
a3dhcmQ6CisgICAgY2FzZSBGb2N1c0RpcmVjdGlvbjo6Rm9yd2FyZDoKKyAgICBjYXNlIEZvY3Vz
RGlyZWN0aW9uOjpCYWNrd2FyZDoKICAgICAgICAgcmV0dXJuIGFkdmFuY2VGb2N1c0luRG9jdW1l
bnRPcmRlcihkaXJlY3Rpb24sIGV2ZW50LCBpbml0aWFsRm9jdXMpOwotICAgIGNhc2UgRm9jdXNE
aXJlY3Rpb25MZWZ0OgotICAgIGNhc2UgRm9jdXNEaXJlY3Rpb25SaWdodDoKLSAgICBjYXNlIEZv
Y3VzRGlyZWN0aW9uVXA6Ci0gICAgY2FzZSBGb2N1c0RpcmVjdGlvbkRvd246CisgICAgY2FzZSBG
b2N1c0RpcmVjdGlvbjo6TGVmdDoKKyAgICBjYXNlIEZvY3VzRGlyZWN0aW9uOjpSaWdodDoKKyAg
ICBjYXNlIEZvY3VzRGlyZWN0aW9uOjpVcDoKKyAgICBjYXNlIEZvY3VzRGlyZWN0aW9uOjpEb3du
OgogICAgICAgICByZXR1cm4gYWR2YW5jZUZvY3VzRGlyZWN0aW9uYWxseShkaXJlY3Rpb24sIGV2
ZW50KTsKICAgICBkZWZhdWx0OgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTU0
MSw3ICs1NDEsNyBAQCBFbGVtZW50KiBGb2N1c0NvbnRyb2xsZXI6OmZpbmRGb2N1c2FibGVFbGVt
ZW50QWNyb3NzRm9jdXNTY29wZShGb2N1c0RpcmVjdGlvbiBkaQogewogICAgIEFTU0VSVCghaXM8
RWxlbWVudD4oY3VycmVudE5vZGUpIHx8ICFpc05vbkZvY3VzYWJsZVNjb3BlT3duZXIoZG93bmNh
c3Q8RWxlbWVudD4oKmN1cnJlbnROb2RlKSwgZXZlbnQpKTsKIAotICAgIGlmIChjdXJyZW50Tm9k
ZSAmJiBkaXJlY3Rpb24gPT0gRm9jdXNEaXJlY3Rpb25Gb3J3YXJkICYmIGlzPEVsZW1lbnQ+KGN1
cnJlbnROb2RlKSAmJiBpc0ZvY3VzYWJsZVNjb3BlT3duZXIoZG93bmNhc3Q8RWxlbWVudD4oKmN1
cnJlbnROb2RlKSwgZXZlbnQpKSB7CisgICAgaWYgKGN1cnJlbnROb2RlICYmIGRpcmVjdGlvbiA9
PSBGb2N1c0RpcmVjdGlvbjo6Rm9yd2FyZCAmJiBpczxFbGVtZW50PihjdXJyZW50Tm9kZSkgJiYg
aXNGb2N1c2FibGVTY29wZU93bmVyKGRvd25jYXN0PEVsZW1lbnQ+KCpjdXJyZW50Tm9kZSksIGV2
ZW50KSkgewogICAgICAgICBpZiAoRWxlbWVudCogY2FuZGlkYXRlSW5Jbm5lclNjb3BlID0gZmlu
ZEZvY3VzYWJsZUVsZW1lbnRXaXRoaW5TY29wZShkaXJlY3Rpb24sIEZvY3VzTmF2aWdhdGlvblNj
b3BlOjpzY29wZU93bmVkQnlTY29wZU93bmVyKGRvd25jYXN0PEVsZW1lbnQ+KCpjdXJyZW50Tm9k
ZSkpLCAwLCBldmVudCkpCiAgICAgICAgICAgICByZXR1cm4gY2FuZGlkYXRlSW5Jbm5lclNjb3Bl
OwogICAgIH0KQEAgLTU1Miw3ICs1NTIsNyBAQCBFbGVtZW50KiBGb2N1c0NvbnRyb2xsZXI6OmZp
bmRGb2N1c2FibGVFbGVtZW50QWNyb3NzRm9jdXNTY29wZShGb2N1c0RpcmVjdGlvbiBkaQogICAg
IC8vIElmIHRoZXJlJ3Mgbm8gZm9jdXNhYmxlIG5vZGUgdG8gYWR2YW5jZSB0bywgbW92ZSB1cCB0
aGUgZm9jdXMgc2NvcGVzIHVudGlsIHdlIGZpbmQgb25lLgogICAgIEVsZW1lbnQqIG93bmVyID0g
c2NvcGUub3duZXIoKTsKICAgICB3aGlsZSAob3duZXIpIHsKLSAgICAgICAgaWYgKGRpcmVjdGlv
biA9PSBGb2N1c0RpcmVjdGlvbkJhY2t3YXJkICYmIGlzRm9jdXNhYmxlU2NvcGVPd25lcigqb3du
ZXIsIGV2ZW50KSkKKyAgICAgICAgaWYgKGRpcmVjdGlvbiA9PSBGb2N1c0RpcmVjdGlvbjo6QmFj
a3dhcmQgJiYgaXNGb2N1c2FibGVTY29wZU93bmVyKCpvd25lciwgZXZlbnQpKQogICAgICAgICAg
ICAgcmV0dXJuIGZpbmRGb2N1c2FibGVFbGVtZW50RGVzY2VuZGluZ0ludG9TdWJmcmFtZXMoZGly
ZWN0aW9uLCBvd25lciwgZXZlbnQpOwogCiAgICAgICAgIGF1dG8gb3V0ZXJTY29wZSA9IEZvY3Vz
TmF2aWdhdGlvblNjb3BlOjpzY29wZU9mKCpvd25lcik7CkBAIC01NjYsNyArNTY2LDcgQEAgRWxl
bWVudCogRm9jdXNDb250cm9sbGVyOjpmaW5kRm9jdXNhYmxlRWxlbWVudEFjcm9zc0ZvY3VzU2Nv
cGUoRm9jdXNEaXJlY3Rpb24gZGkKIEVsZW1lbnQqIEZvY3VzQ29udHJvbGxlcjo6ZmluZEZvY3Vz
YWJsZUVsZW1lbnRXaXRoaW5TY29wZShGb2N1c0RpcmVjdGlvbiBkaXJlY3Rpb24sIGNvbnN0IEZv
Y3VzTmF2aWdhdGlvblNjb3BlJiBzY29wZSwgTm9kZSogc3RhcnQsIEtleWJvYXJkRXZlbnQqIGV2
ZW50KQogewogICAgIC8vIFN0YXJ0aW5nIG5vZGUgaXMgZXhjbHVzaXZlLgotICAgIEVsZW1lbnQq
IGNhbmRpZGF0ZSA9IGRpcmVjdGlvbiA9PSBGb2N1c0RpcmVjdGlvbkZvcndhcmQKKyAgICBFbGVt
ZW50KiBjYW5kaWRhdGUgPSBkaXJlY3Rpb24gPT0gRm9jdXNEaXJlY3Rpb246OkZvcndhcmQKICAg
ICAgICAgPyBuZXh0Rm9jdXNhYmxlRWxlbWVudFdpdGhpblNjb3BlKHNjb3BlLCBzdGFydCwgZXZl
bnQpCiAgICAgICAgIDogcHJldmlvdXNGb2N1c2FibGVFbGVtZW50V2l0aGluU2NvcGUoc2NvcGUs
IHN0YXJ0LCBldmVudCk7CiAgICAgcmV0dXJuIGZpbmRGb2N1c2FibGVFbGVtZW50RGVzY2VuZGlu
Z0ludG9TdWJmcmFtZXMoZGlyZWN0aW9uLCBjYW5kaWRhdGUsIGV2ZW50KTsKQEAgLTYwNiw3ICs2
MDYsNyBAQCBFbGVtZW50KiBGb2N1c0NvbnRyb2xsZXI6OnByZXZpb3VzRm9jdXNhYmxlRWxlbWVu
dFdpdGhpblNjb3BlKGNvbnN0IEZvY3VzTmF2aWdhdAogCiBFbGVtZW50KiBGb2N1c0NvbnRyb2xs
ZXI6OmZpbmRGb2N1c2FibGVFbGVtZW50T3JTY29wZU93bmVyKEZvY3VzRGlyZWN0aW9uIGRpcmVj
dGlvbiwgY29uc3QgRm9jdXNOYXZpZ2F0aW9uU2NvcGUmIHNjb3BlLCBOb2RlKiBub2RlLCBLZXli
b2FyZEV2ZW50KiBldmVudCkKIHsKLSAgICByZXR1cm4gKGRpcmVjdGlvbiA9PSBGb2N1c0RpcmVj
dGlvbkZvcndhcmQpCisgICAgcmV0dXJuIChkaXJlY3Rpb24gPT0gRm9jdXNEaXJlY3Rpb246OkZv
cndhcmQpCiAgICAgICAgID8gbmV4dEZvY3VzYWJsZUVsZW1lbnRPclNjb3BlT3duZXIoc2NvcGUs
IG5vZGUsIGV2ZW50KQogICAgICAgICA6IHByZXZpb3VzRm9jdXNhYmxlRWxlbWVudE9yU2NvcGVP
d25lcihzY29wZSwgbm9kZSwgZXZlbnQpOwogfQpAQCAtNjE0LDcgKzYxNCw3IEBAIEVsZW1lbnQq
IEZvY3VzQ29udHJvbGxlcjo6ZmluZEZvY3VzYWJsZUVsZW1lbnRPclNjb3BlT3duZXIoRm9jdXNE
aXJlY3Rpb24gZGlyZWN0CiBFbGVtZW50KiBGb2N1c0NvbnRyb2xsZXI6OmZpbmRFbGVtZW50V2l0
aEV4YWN0VGFiSW5kZXgoY29uc3QgRm9jdXNOYXZpZ2F0aW9uU2NvcGUmIHNjb3BlLCBOb2RlKiBz
dGFydCwgaW50IHRhYkluZGV4LCBLZXlib2FyZEV2ZW50KiBldmVudCwgRm9jdXNEaXJlY3Rpb24g
ZGlyZWN0aW9uKQogewogICAgIC8vIFNlYXJjaCBpcyBpbmNsdXNpdmUgb2Ygc3RhcnQKLSAgICBm
b3IgKE5vZGUqIG5vZGUgPSBzdGFydDsgbm9kZTsgbm9kZSA9IGRpcmVjdGlvbiA9PSBGb2N1c0Rp
cmVjdGlvbkZvcndhcmQgPyBzY29wZS5uZXh0SW5TY29wZShub2RlKSA6IHNjb3BlLnByZXZpb3Vz
SW5TY29wZShub2RlKSkgeworICAgIGZvciAoTm9kZSogbm9kZSA9IHN0YXJ0OyBub2RlOyBub2Rl
ID0gZGlyZWN0aW9uID09IEZvY3VzRGlyZWN0aW9uOjpGb3J3YXJkID8gc2NvcGUubmV4dEluU2Nv
cGUobm9kZSkgOiBzY29wZS5wcmV2aW91c0luU2NvcGUobm9kZSkpIHsKICAgICAgICAgaWYgKCFp
czxFbGVtZW50Pigqbm9kZSkpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgRWxlbWVu
dCYgZWxlbWVudCA9IGRvd25jYXN0PEVsZW1lbnQ+KCpub2RlKTsKQEAgLTY5NCw3ICs2OTQsNyBA
QCBFbGVtZW50KiBGb2N1c0NvbnRyb2xsZXI6Om5leHRGb2N1c2FibGVFbGVtZW50T3JTY29wZU93
bmVyKGNvbnN0IEZvY3VzTmF2aWdhdGlvbgogICAgICAgICB9CiAKICAgICAgICAgLy8gRmlyc3Qg
dHJ5IHRvIGZpbmQgYSBub2RlIHdpdGggdGhlIHNhbWUgdGFiaW5kZXggYXMgc3RhcnQgdGhhdCBj
b21lcyBhZnRlciBzdGFydCBpbiB0aGUgc2NvcGUuCi0gICAgICAgIGlmIChFbGVtZW50KiB3aW5u
ZXIgPSBmaW5kRWxlbWVudFdpdGhFeGFjdFRhYkluZGV4KHNjb3BlLCBzY29wZS5uZXh0SW5TY29w
ZShzdGFydCksIHN0YXJ0VGFiSW5kZXgsIGV2ZW50LCBGb2N1c0RpcmVjdGlvbkZvcndhcmQpKQor
ICAgICAgICBpZiAoRWxlbWVudCogd2lubmVyID0gZmluZEVsZW1lbnRXaXRoRXhhY3RUYWJJbmRl
eChzY29wZSwgc2NvcGUubmV4dEluU2NvcGUoc3RhcnQpLCBzdGFydFRhYkluZGV4LCBldmVudCwg
Rm9jdXNEaXJlY3Rpb246OkZvcndhcmQpKQogICAgICAgICAgICAgcmV0dXJuIHdpbm5lcjsKIAog
ICAgICAgICBpZiAoIXN0YXJ0VGFiSW5kZXgpCkBAIC03MDksNyArNzA5LDcgQEAgRWxlbWVudCog
Rm9jdXNDb250cm9sbGVyOjpuZXh0Rm9jdXNhYmxlRWxlbWVudE9yU2NvcGVPd25lcihjb25zdCBG
b2N1c05hdmlnYXRpb24KIAogICAgIC8vIFRoZXJlIGFyZSBubyBub2RlcyB3aXRoIGEgdGFiaW5k
ZXggZ3JlYXRlciB0aGFuIHN0YXJ0J3MgdGFiaW5kZXgsCiAgICAgLy8gc28gZmluZCB0aGUgZmly
c3Qgbm9kZSB3aXRoIGEgdGFiaW5kZXggb2YgMC4KLSAgICByZXR1cm4gZmluZEVsZW1lbnRXaXRo
RXhhY3RUYWJJbmRleChzY29wZSwgc2NvcGUuZmlyc3ROb2RlSW5TY29wZSgpLCAwLCBldmVudCwg
Rm9jdXNEaXJlY3Rpb25Gb3J3YXJkKTsKKyAgICByZXR1cm4gZmluZEVsZW1lbnRXaXRoRXhhY3RU
YWJJbmRleChzY29wZSwgc2NvcGUuZmlyc3ROb2RlSW5TY29wZSgpLCAwLCBldmVudCwgRm9jdXNE
aXJlY3Rpb246OkZvcndhcmQpOwogfQogCiBFbGVtZW50KiBGb2N1c0NvbnRyb2xsZXI6OnByZXZp
b3VzRm9jdXNhYmxlRWxlbWVudE9yU2NvcGVPd25lcihjb25zdCBGb2N1c05hdmlnYXRpb25TY29w
ZSYgc2NvcGUsIE5vZGUqIHN0YXJ0LCBLZXlib2FyZEV2ZW50KiBldmVudCkKQEAgLTc0MSw3ICs3
NDEsNyBAQCBFbGVtZW50KiBGb2N1c0NvbnRyb2xsZXI6OnByZXZpb3VzRm9jdXNhYmxlRWxlbWVu
dE9yU2NvcGVPd25lcihjb25zdCBGb2N1c05hdmlnYQogICAgICAgICB9CiAgICAgfQogCi0gICAg
aWYgKEVsZW1lbnQqIHdpbm5lciA9IGZpbmRFbGVtZW50V2l0aEV4YWN0VGFiSW5kZXgoc2NvcGUs
IHN0YXJ0aW5nTm9kZSwgc3RhcnRpbmdUYWJJbmRleCwgZXZlbnQsIEZvY3VzRGlyZWN0aW9uQmFj
a3dhcmQpKQorICAgIGlmIChFbGVtZW50KiB3aW5uZXIgPSBmaW5kRWxlbWVudFdpdGhFeGFjdFRh
YkluZGV4KHNjb3BlLCBzdGFydGluZ05vZGUsIHN0YXJ0aW5nVGFiSW5kZXgsIGV2ZW50LCBGb2N1
c0RpcmVjdGlvbjo6QmFja3dhcmQpKQogICAgICAgICByZXR1cm4gd2lubmVyOwogCiAgICAgLy8g
VGhlcmUgYXJlIG5vIG5vZGVzIGJlZm9yZSBzdGFydCB3aXRoIHRoZSBzYW1lIHRhYmluZGV4IGFz
IHN0YXJ0LCBzbyBsb29rIGZvciBhIG5vZGUgdGhhdDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRm9jdXNDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZvY3VzQ29u
dHJvbGxlci5oCmluZGV4IDE3ZDM0YzU3ZTUxN2FjMjlhMzQ3MTYzOTBiNGE0NTRlNDY0MGFiNmEu
LjI5Nzg1ZDE5ZWRiZDNjYjY2NjYyYWNmMmI5YTE5ZjE0YTJlY2FiMmMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRm9jdXNDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9Gb2N1c0NvbnRyb2xsZXIuaApAQCAtNTksNyArNTksNyBAQCBwdWJsaWM6CiAgICAgV0VC
Q09SRV9FWFBPUlQgYm9vbCBzZXRJbml0aWFsRm9jdXMoRm9jdXNEaXJlY3Rpb24sIEtleWJvYXJk
RXZlbnQqKTsKICAgICBib29sIGFkdmFuY2VGb2N1cyhGb2N1c0RpcmVjdGlvbiwgS2V5Ym9hcmRF
dmVudCosIGJvb2wgaW5pdGlhbEZvY3VzID0gZmFsc2UpOwogCi0gICAgV0VCQ09SRV9FWFBPUlQg
Ym9vbCBzZXRGb2N1c2VkRWxlbWVudChFbGVtZW50KiwgRnJhbWUmLCBGb2N1c0RpcmVjdGlvbiA9
IEZvY3VzRGlyZWN0aW9uTm9uZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBzZXRGb2N1c2Vk
RWxlbWVudChFbGVtZW50KiwgRnJhbWUmLCBGb2N1c0RpcmVjdGlvbiA9IEZvY3VzRGlyZWN0aW9u
OjpOb25lKTsKIAogICAgIHZvaWQgc2V0QWN0aXZpdHlTdGF0ZShPcHRpb25TZXQ8QWN0aXZpdHlT
dGF0ZTo6RmxhZz4pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZvY3VzRGly
ZWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZvY3VzRGlyZWN0aW9uLmgKaW5kZXggODE2
NDIxZDY3NzE4YzlhY2M4MTljMzg3MmM0MDAwZWUwNzBlZjdmMi4uYWY2YmQ2ZWEzNTZiM2I0NzU5
ZDY2MWZjOThjMTU1ODA4Y2YyMmQ0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9G
b2N1c0RpcmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRm9jdXNEaXJlY3Rpb24u
aApAQCAtMjcsMTQgKzI3LDE0IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotZW51bSBGb2N1
c0RpcmVjdGlvbiB7Ci0gICAgRm9jdXNEaXJlY3Rpb25Ob25lID0gMCwKLSAgICBGb2N1c0RpcmVj
dGlvbkZvcndhcmQsCi0gICAgRm9jdXNEaXJlY3Rpb25CYWNrd2FyZCwKLSAgICBGb2N1c0RpcmVj
dGlvblVwLAotICAgIEZvY3VzRGlyZWN0aW9uRG93biwKLSAgICBGb2N1c0RpcmVjdGlvbkxlZnQs
Ci0gICAgRm9jdXNEaXJlY3Rpb25SaWdodAorZW51bSBjbGFzcyBGb2N1c0RpcmVjdGlvbjogdWlu
dDhfdCB7CisgICAgTm9uZSA9IDAsCisgICAgRm9yd2FyZCwKKyAgICBCYWNrd2FyZCwKKyAgICBV
cCwKKyAgICBEb3duLAorICAgIExlZnQsCisgICAgUmlnaHQKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU3BhdGlhbE5hdmlnYXRp
b24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TcGF0aWFsTmF2aWdhdGlvbi5jcHAKaW5kZXgg
NGQ4YjcyZjhlNWJjYjBlODMyZDNlYzNkZGMyZWU5MjkyYjQ5ZmU4Ni4uMzhmYjQ5NzFkMmEzMjk0
MzdlNzQ0MDM3MjRhOGQyMWJmMWQ3ZTJlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9TcGF0aWFsTmF2aWdhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TcGF0aWFs
TmF2aWdhdGlvbi5jcHAKQEAgLTEwOCw3ICsxMDgsNyBAQCBzdGF0aWMgUmVjdHNBbGlnbm1lbnQg
YWxpZ25tZW50Rm9yUmVjdHMoRm9jdXNEaXJlY3Rpb24gZGlyZWN0aW9uLCBjb25zdCBMYXlvdXRS
ZQogCiBzdGF0aWMgaW5saW5lIGJvb2wgaXNIb3Jpem9udGFsTW92ZShGb2N1c0RpcmVjdGlvbiBk
aXJlY3Rpb24pCiB7Ci0gICAgcmV0dXJuIGRpcmVjdGlvbiA9PSBGb2N1c0RpcmVjdGlvbkxlZnQg
fHwgZGlyZWN0aW9uID09IEZvY3VzRGlyZWN0aW9uUmlnaHQ7CisgICAgcmV0dXJuIGRpcmVjdGlv
biA9PSBGb2N1c0RpcmVjdGlvbjo6TGVmdCB8fCBkaXJlY3Rpb24gPT0gRm9jdXNEaXJlY3Rpb246
OlJpZ2h0OwogfQogCiBzdGF0aWMgaW5saW5lIExheW91dFVuaXQgc3RhcnQoRm9jdXNEaXJlY3Rp
b24gZGlyZWN0aW9uLCBjb25zdCBMYXlvdXRSZWN0JiByZWN0KQpAQCAtMTM5LDE5ICsxMzksMTkg
QEAgc3RhdGljIGJvb2wgYXJlUmVjdHNGdWxseUFsaWduZWQoRm9jdXNEaXJlY3Rpb24gZGlyZWN0
aW9uLCBjb25zdCBMYXlvdXRSZWN0JiBhLAogICAgIExheW91dFVuaXQgYVN0YXJ0LCBiU3RhcnQs
IGFFbmQsIGJFbmQ7CiAKICAgICBzd2l0Y2ggKGRpcmVjdGlvbikgewotICAgIGNhc2UgRm9jdXNE
aXJlY3Rpb25MZWZ0OgorICAgIGNhc2UgRm9jdXNEaXJlY3Rpb246OkxlZnQ6CiAgICAgICAgIGFT
dGFydCA9IGEueCgpOwogICAgICAgICBiRW5kID0gYi5tYXhYKCk7CiAgICAgICAgIGJyZWFrOwot
ICAgIGNhc2UgRm9jdXNEaXJlY3Rpb25SaWdodDoKKyAgICBjYXNlIEZvY3VzRGlyZWN0aW9uOjpS
aWdodDoKICAgICAgICAgYVN0YXJ0ID0gYi54KCk7CiAgICAgICAgIGJFbmQgPSBhLm1heFgoKTsK
ICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBGb2N1c0RpcmVjdGlvblVwOgorICAgIGNhc2UgRm9j
dXNEaXJlY3Rpb246OlVwOgogICAgICAgICBhU3RhcnQgPSBhLnkoKTsKICAgICAgICAgYkVuZCA9
IGIueSgpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEZvY3VzRGlyZWN0aW9uRG93bjoKKyAg
ICBjYXNlIEZvY3VzRGlyZWN0aW9uOjpEb3duOgogICAgICAgICBhU3RhcnQgPSBiLnkoKTsKICAg
ICAgICAgYkVuZCA9IGEueSgpOwogICAgICAgICBicmVhazsKQEAgLTIzOSwxMyArMjM5LDEzIEBA
IHN0YXRpYyBib29sIGFyZVJlY3RzTW9yZVRoYW5GdWxsU2NyZWVuQXBhcnQoRm9jdXNEaXJlY3Rp
b24gZGlyZWN0aW9uLCBjb25zdCBMYXlvCiAgICAgQVNTRVJUKGlzUmVjdEluRGlyZWN0aW9uKGRp
cmVjdGlvbiwgY3VyUmVjdCwgdGFyZ2V0UmVjdCkpOwogCiAgICAgc3dpdGNoIChkaXJlY3Rpb24p
IHsKLSAgICBjYXNlIEZvY3VzRGlyZWN0aW9uTGVmdDoKKyAgICBjYXNlIEZvY3VzRGlyZWN0aW9u
OjpMZWZ0OgogICAgICAgICByZXR1cm4gY3VyUmVjdC54KCkgLSB0YXJnZXRSZWN0Lm1heFgoKSA+
IHZpZXdTaXplLndpZHRoKCk7Ci0gICAgY2FzZSBGb2N1c0RpcmVjdGlvblJpZ2h0OgorICAgIGNh
c2UgRm9jdXNEaXJlY3Rpb246OlJpZ2h0OgogICAgICAgICByZXR1cm4gdGFyZ2V0UmVjdC54KCkg
LSBjdXJSZWN0Lm1heFgoKSA+IHZpZXdTaXplLndpZHRoKCk7Ci0gICAgY2FzZSBGb2N1c0RpcmVj
dGlvblVwOgorICAgIGNhc2UgRm9jdXNEaXJlY3Rpb246OlVwOgogICAgICAgICByZXR1cm4gY3Vy
UmVjdC55KCkgLSB0YXJnZXRSZWN0Lm1heFkoKSA+IHZpZXdTaXplLmhlaWdodCgpOwotICAgIGNh
c2UgRm9jdXNEaXJlY3Rpb25Eb3duOgorICAgIGNhc2UgRm9jdXNEaXJlY3Rpb246OkRvd246CiAg
ICAgICAgIHJldHVybiB0YXJnZXRSZWN0LnkoKSAtIGN1clJlY3QubWF4WSgpID4gdmlld1NpemUu
aGVpZ2h0KCk7CiAgICAgZGVmYXVsdDoKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBA
IC0yNjgsMTMgKzI2OCwxMyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgcmlnaHRPZihjb25zdCBMYXlv
dXRSZWN0JiBhLCBjb25zdCBMYXlvdXRSZWN0JiBiKQogc3RhdGljIGJvb2wgaXNSZWN0SW5EaXJl
Y3Rpb24oRm9jdXNEaXJlY3Rpb24gZGlyZWN0aW9uLCBjb25zdCBMYXlvdXRSZWN0JiBjdXJSZWN0
LCBjb25zdCBMYXlvdXRSZWN0JiB0YXJnZXRSZWN0KQogewogICAgIHN3aXRjaCAoZGlyZWN0aW9u
KSB7Ci0gICAgY2FzZSBGb2N1c0RpcmVjdGlvbkxlZnQ6CisgICAgY2FzZSBGb2N1c0RpcmVjdGlv
bjo6TGVmdDoKICAgICAgICAgcmV0dXJuIHRhcmdldFJlY3QubWF4WCgpIDw9IGN1clJlY3QueCgp
OwotICAgIGNhc2UgRm9jdXNEaXJlY3Rpb25SaWdodDoKKyAgICBjYXNlIEZvY3VzRGlyZWN0aW9u
OjpSaWdodDoKICAgICAgICAgcmV0dXJuIHRhcmdldFJlY3QueCgpID49IGN1clJlY3QubWF4WCgp
OwotICAgIGNhc2UgRm9jdXNEaXJlY3Rpb25VcDoKKyAgICBjYXNlIEZvY3VzRGlyZWN0aW9uOjpV
cDoKICAgICAgICAgcmV0dXJuIHRhcmdldFJlY3QubWF4WSgpIDw9IGN1clJlY3QueSgpOwotICAg
IGNhc2UgRm9jdXNEaXJlY3Rpb25Eb3duOgorICAgIGNhc2UgRm9jdXNEaXJlY3Rpb246OkRvd246
CiAgICAgICAgIHJldHVybiB0YXJnZXRSZWN0LnkoKSA+PSBjdXJSZWN0Lm1heFkoKTsKICAgICBk
ZWZhdWx0OgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTMwMiwxOCArMzAyLDE4
IEBAIGJvb2wgaGFzT2Zmc2NyZWVuUmVjdChOb2RlKiBub2RlLCBGb2N1c0RpcmVjdGlvbiBkaXJl
Y3Rpb24pCiAgICAgLy8gSWYgdGhlIGNvbnRhaW5lciBoYXMgb3ZlcmZsb3c6aGlkZGVuLCB3ZSBj
YW5ub3Qgc2Nyb2xsLCBzbyB3ZSBkbyBub3QgcGFzcyBkaXJlY3Rpb24KICAgICAvLyBhbmQgd2Ug
ZG8gbm90IGFkanVzdCBmb3Igc2Nyb2xsaW5nLgogICAgIHN3aXRjaCAoZGlyZWN0aW9uKSB7Ci0g
ICAgY2FzZSBGb2N1c0RpcmVjdGlvbkxlZnQ6CisgICAgY2FzZSBGb2N1c0RpcmVjdGlvbjo6TGVm
dDoKICAgICAgICAgY29udGFpbmVyVmlld3BvcnRSZWN0LnNldFgoY29udGFpbmVyVmlld3BvcnRS
ZWN0LngoKSAtIFNjcm9sbGJhcjo6cGl4ZWxzUGVyTGluZVN0ZXAoKSk7CiAgICAgICAgIGNvbnRh
aW5lclZpZXdwb3J0UmVjdC5zZXRXaWR0aChjb250YWluZXJWaWV3cG9ydFJlY3Qud2lkdGgoKSAr
IFNjcm9sbGJhcjo6cGl4ZWxzUGVyTGluZVN0ZXAoKSk7CiAgICAgICAgIGJyZWFrOwotICAgIGNh
c2UgRm9jdXNEaXJlY3Rpb25SaWdodDoKKyAgICBjYXNlIEZvY3VzRGlyZWN0aW9uOjpSaWdodDoK
ICAgICAgICAgY29udGFpbmVyVmlld3BvcnRSZWN0LnNldFdpZHRoKGNvbnRhaW5lclZpZXdwb3J0
UmVjdC53aWR0aCgpICsgU2Nyb2xsYmFyOjpwaXhlbHNQZXJMaW5lU3RlcCgpKTsKICAgICAgICAg
YnJlYWs7Ci0gICAgY2FzZSBGb2N1c0RpcmVjdGlvblVwOgorICAgIGNhc2UgRm9jdXNEaXJlY3Rp
b246OlVwOgogICAgICAgICBjb250YWluZXJWaWV3cG9ydFJlY3Quc2V0WShjb250YWluZXJWaWV3
cG9ydFJlY3QueSgpIC0gU2Nyb2xsYmFyOjpwaXhlbHNQZXJMaW5lU3RlcCgpKTsKICAgICAgICAg
Y29udGFpbmVyVmlld3BvcnRSZWN0LnNldEhlaWdodChjb250YWluZXJWaWV3cG9ydFJlY3QuaGVp
Z2h0KCkgKyBTY3JvbGxiYXI6OnBpeGVsc1BlckxpbmVTdGVwKCkpOwogICAgICAgICBicmVhazsK
LSAgICBjYXNlIEZvY3VzRGlyZWN0aW9uRG93bjoKKyAgICBjYXNlIEZvY3VzRGlyZWN0aW9uOjpE
b3duOgogICAgICAgICBjb250YWluZXJWaWV3cG9ydFJlY3Quc2V0SGVpZ2h0KGNvbnRhaW5lclZp
ZXdwb3J0UmVjdC5oZWlnaHQoKSArIFNjcm9sbGJhcjo6cGl4ZWxzUGVyTGluZVN0ZXAoKSk7CiAg
ICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CkBAIC0zMzksMTYgKzMzOSwxNiBAQCBib29sIHNj
cm9sbEluRGlyZWN0aW9uKEZyYW1lKiBmcmFtZSwgRm9jdXNEaXJlY3Rpb24gZGlyZWN0aW9uKQog
ICAgICAgICBMYXlvdXRVbml0IGR4OwogICAgICAgICBMYXlvdXRVbml0IGR5OwogICAgICAgICBz
d2l0Y2ggKGRpcmVjdGlvbikgewotICAgICAgICBjYXNlIEZvY3VzRGlyZWN0aW9uTGVmdDoKKyAg
ICAgICAgY2FzZSBGb2N1c0RpcmVjdGlvbjo6TGVmdDoKICAgICAgICAgICAgIGR4ID0gLSBTY3Jv
bGxiYXI6OnBpeGVsc1BlckxpbmVTdGVwKCk7CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAg
Y2FzZSBGb2N1c0RpcmVjdGlvblJpZ2h0OgorICAgICAgICBjYXNlIEZvY3VzRGlyZWN0aW9uOjpS
aWdodDoKICAgICAgICAgICAgIGR4ID0gU2Nyb2xsYmFyOjpwaXhlbHNQZXJMaW5lU3RlcCgpOwog
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgRm9jdXNEaXJlY3Rpb25VcDoKKyAgICAg
ICAgY2FzZSBGb2N1c0RpcmVjdGlvbjo6VXA6CiAgICAgICAgICAgICBkeSA9IC0gU2Nyb2xsYmFy
OjpwaXhlbHNQZXJMaW5lU3RlcCgpOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2Ug
Rm9jdXNEaXJlY3Rpb25Eb3duOgorICAgICAgICBjYXNlIEZvY3VzRGlyZWN0aW9uOjpEb3duOgog
ICAgICAgICAgICAgZHkgPSBTY3JvbGxiYXI6OnBpeGVsc1BlckxpbmVTdGVwKCk7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgZGVmYXVsdDoKQEAgLTM3NSwxNyArMzc1LDE3IEBAIGJvb2wg
c2Nyb2xsSW5EaXJlY3Rpb24oTm9kZSogY29udGFpbmVyLCBGb2N1c0RpcmVjdGlvbiBkaXJlY3Rp
b24pCiAgICAgICAgIExheW91dFVuaXQgZHg7CiAgICAgICAgIExheW91dFVuaXQgZHk7CiAgICAg
ICAgIHN3aXRjaCAoZGlyZWN0aW9uKSB7Ci0gICAgICAgIGNhc2UgRm9jdXNEaXJlY3Rpb25MZWZ0
OgorICAgICAgICBjYXNlIEZvY3VzRGlyZWN0aW9uOjpMZWZ0OgogICAgICAgICAgICAgZHggPSAt
IHN0ZDo6bWluPExheW91dFVuaXQ+KFNjcm9sbGJhcjo6cGl4ZWxzUGVyTGluZVN0ZXAoKSwgY29u
dGFpbmVyLT5yZW5kZXJCb3goKS0+c2Nyb2xsTGVmdCgpKTsKICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICBjYXNlIEZvY3VzRGlyZWN0aW9uUmlnaHQ6CisgICAgICAgIGNhc2UgRm9jdXNEaXJl
Y3Rpb246OlJpZ2h0OgogICAgICAgICAgICAgQVNTRVJUKGNvbnRhaW5lci0+cmVuZGVyQm94KCkt
PnNjcm9sbFdpZHRoKCkgPiAoY29udGFpbmVyLT5yZW5kZXJCb3goKS0+c2Nyb2xsTGVmdCgpICsg
Y29udGFpbmVyLT5yZW5kZXJCb3goKS0+Y2xpZW50V2lkdGgoKSkpOwogICAgICAgICAgICAgZHgg
PSBzdGQ6Om1pbjxMYXlvdXRVbml0PihTY3JvbGxiYXI6OnBpeGVsc1BlckxpbmVTdGVwKCksIGNv
bnRhaW5lci0+cmVuZGVyQm94KCktPnNjcm9sbFdpZHRoKCkgLSAoY29udGFpbmVyLT5yZW5kZXJC
b3goKS0+c2Nyb2xsTGVmdCgpICsgY29udGFpbmVyLT5yZW5kZXJCb3goKS0+Y2xpZW50V2lkdGgo
KSkpOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgRm9jdXNEaXJlY3Rpb25VcDoK
KyAgICAgICAgY2FzZSBGb2N1c0RpcmVjdGlvbjo6VXA6CiAgICAgICAgICAgICBkeSA9IC0gc3Rk
OjptaW48TGF5b3V0VW5pdD4oU2Nyb2xsYmFyOjpwaXhlbHNQZXJMaW5lU3RlcCgpLCBjb250YWlu
ZXItPnJlbmRlckJveCgpLT5zY3JvbGxUb3AoKSk7CiAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgY2FzZSBGb2N1c0RpcmVjdGlvbkRvd246CisgICAgICAgIGNhc2UgRm9jdXNEaXJlY3Rpb246
OkRvd246CiAgICAgICAgICAgICBBU1NFUlQoY29udGFpbmVyLT5yZW5kZXJCb3goKS0+c2Nyb2xs
SGVpZ2h0KCkgLSAoY29udGFpbmVyLT5yZW5kZXJCb3goKS0+c2Nyb2xsVG9wKCkgKyBjb250YWlu
ZXItPnJlbmRlckJveCgpLT5jbGllbnRIZWlnaHQoKSkpOwogICAgICAgICAgICAgZHkgPSBzdGQ6
Om1pbjxMYXlvdXRVbml0PihTY3JvbGxiYXI6OnBpeGVsc1BlckxpbmVTdGVwKCksIGNvbnRhaW5l
ci0+cmVuZGVyQm94KCktPnNjcm9sbEhlaWdodCgpIC0gKGNvbnRhaW5lci0+cmVuZGVyQm94KCkt
PnNjcm9sbFRvcCgpICsgY29udGFpbmVyLT5yZW5kZXJCb3goKS0+Y2xpZW50SGVpZ2h0KCkpKTsK
ICAgICAgICAgICAgIGJyZWFrOwpAQCAtNDUzLDEzICs0NTMsMTMgQEAgYm9vbCBjYW5TY3JvbGxJ
bkRpcmVjdGlvbihjb25zdCBOb2RlKiBjb250YWluZXIsIEZvY3VzRGlyZWN0aW9uIGRpcmVjdGlv
bikKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgc3dpdGNoIChkaXJlY3Rpb24pIHsKLSAg
ICBjYXNlIEZvY3VzRGlyZWN0aW9uTGVmdDoKKyAgICBjYXNlIEZvY3VzRGlyZWN0aW9uOjpMZWZ0
OgogICAgICAgICByZXR1cm4gKGNvbnRhaW5lci0+cmVuZGVyZXIoKS0+c3R5bGUoKS5vdmVyZmxv
d1goKSAhPSBPdmVyZmxvdzo6SGlkZGVuICYmIGNvbnRhaW5lci0+cmVuZGVyQm94KCktPnNjcm9s
bExlZnQoKSA+IDApOwotICAgIGNhc2UgRm9jdXNEaXJlY3Rpb25VcDoKKyAgICBjYXNlIEZvY3Vz
RGlyZWN0aW9uOjpVcDoKICAgICAgICAgcmV0dXJuIChjb250YWluZXItPnJlbmRlcmVyKCktPnN0
eWxlKCkub3ZlcmZsb3dZKCkgIT0gT3ZlcmZsb3c6OkhpZGRlbiAmJiBjb250YWluZXItPnJlbmRl
ckJveCgpLT5zY3JvbGxUb3AoKSA+IDApOwotICAgIGNhc2UgRm9jdXNEaXJlY3Rpb25SaWdodDoK
KyAgICBjYXNlIEZvY3VzRGlyZWN0aW9uOjpSaWdodDoKICAgICAgICAgcmV0dXJuIChjb250YWlu
ZXItPnJlbmRlcmVyKCktPnN0eWxlKCkub3ZlcmZsb3dYKCkgIT0gT3ZlcmZsb3c6OkhpZGRlbiAm
JiBjb250YWluZXItPnJlbmRlckJveCgpLT5zY3JvbGxMZWZ0KCkgKyBjb250YWluZXItPnJlbmRl
ckJveCgpLT5jbGllbnRXaWR0aCgpIDwgY29udGFpbmVyLT5yZW5kZXJCb3goKS0+c2Nyb2xsV2lk
dGgoKSk7Ci0gICAgY2FzZSBGb2N1c0RpcmVjdGlvbkRvd246CisgICAgY2FzZSBGb2N1c0RpcmVj
dGlvbjo6RG93bjoKICAgICAgICAgcmV0dXJuIChjb250YWluZXItPnJlbmRlcmVyKCktPnN0eWxl
KCkub3ZlcmZsb3dZKCkgIT0gT3ZlcmZsb3c6OkhpZGRlbiAmJiBjb250YWluZXItPnJlbmRlckJv
eCgpLT5zY3JvbGxUb3AoKSArIGNvbnRhaW5lci0+cmVuZGVyQm94KCktPmNsaWVudEhlaWdodCgp
IDwgY29udGFpbmVyLT5yZW5kZXJCb3goKS0+c2Nyb2xsSGVpZ2h0KCkpOwogICAgIGRlZmF1bHQ6
CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtNDc0LDkgKzQ3NCw5IEBAIGJvb2wg
Y2FuU2Nyb2xsSW5EaXJlY3Rpb24oY29uc3QgRnJhbWUqIGZyYW1lLCBGb2N1c0RpcmVjdGlvbiBk
aXJlY3Rpb24pCiAgICAgU2Nyb2xsYmFyTW9kZSB2ZXJ0aWNhbE1vZGU7CiAgICAgU2Nyb2xsYmFy
TW9kZSBob3Jpem9udGFsTW9kZTsKICAgICBmcmFtZS0+dmlldygpLT5jYWxjdWxhdGVTY3JvbGxi
YXJNb2Rlc0ZvckxheW91dChob3Jpem9udGFsTW9kZSwgdmVydGljYWxNb2RlKTsKLSAgICBpZiAo
KGRpcmVjdGlvbiA9PSBGb2N1c0RpcmVjdGlvbkxlZnQgfHwgZGlyZWN0aW9uID09IEZvY3VzRGly
ZWN0aW9uUmlnaHQpICYmIFNjcm9sbGJhckFsd2F5c09mZiA9PSBob3Jpem9udGFsTW9kZSkKKyAg
ICBpZiAoKGRpcmVjdGlvbiA9PSBGb2N1c0RpcmVjdGlvbjo6TGVmdCB8fCBkaXJlY3Rpb24gPT0g
Rm9jdXNEaXJlY3Rpb246OlJpZ2h0KSAmJiBTY3JvbGxiYXJBbHdheXNPZmYgPT0gaG9yaXpvbnRh
bE1vZGUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoKGRpcmVjdGlvbiA9PSBGb2N1
c0RpcmVjdGlvblVwIHx8IGRpcmVjdGlvbiA9PSBGb2N1c0RpcmVjdGlvbkRvd24pICYmICBTY3Jv
bGxiYXJBbHdheXNPZmYgPT0gdmVydGljYWxNb2RlKQorICAgIGlmICgoZGlyZWN0aW9uID09IEZv
Y3VzRGlyZWN0aW9uOjpVcCB8fCBkaXJlY3Rpb24gPT0gRm9jdXNEaXJlY3Rpb246OkRvd24pICYm
ICBTY3JvbGxiYXJBbHdheXNPZmYgPT0gdmVydGljYWxNb2RlKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgTGF5b3V0U2l6ZSBzaXplID0gZnJhbWUtPnZpZXcoKS0+dG90YWxDb250ZW50c1Np
emUoKTsKICAgICBMYXlvdXRQb2ludCBzY3JvbGxQb3NpdGlvbiA9IGZyYW1lLT52aWV3KCktPnNj
cm9sbFBvc2l0aW9uKCk7CkBAIC00ODQsMTMgKzQ4NCwxMyBAQCBib29sIGNhblNjcm9sbEluRGly
ZWN0aW9uKGNvbnN0IEZyYW1lKiBmcmFtZSwgRm9jdXNEaXJlY3Rpb24gZGlyZWN0aW9uKQogCiAg
ICAgLy8gRklYTUU6IHdyb25nIGluIFJUTCBkb2N1bWVudHMuCiAgICAgc3dpdGNoIChkaXJlY3Rp
b24pIHsKLSAgICBjYXNlIEZvY3VzRGlyZWN0aW9uTGVmdDoKKyAgICBjYXNlIEZvY3VzRGlyZWN0
aW9uOjpMZWZ0OgogICAgICAgICByZXR1cm4gc2Nyb2xsUG9zaXRpb24ueCgpID4gMDsKLSAgICBj
YXNlIEZvY3VzRGlyZWN0aW9uVXA6CisgICAgY2FzZSBGb2N1c0RpcmVjdGlvbjo6VXA6CiAgICAg
ICAgIHJldHVybiBzY3JvbGxQb3NpdGlvbi55KCkgPiAwOwotICAgIGNhc2UgRm9jdXNEaXJlY3Rp
b25SaWdodDoKKyAgICBjYXNlIEZvY3VzRGlyZWN0aW9uOjpSaWdodDoKICAgICAgICAgcmV0dXJu
IHJlY3Qud2lkdGgoKSArIHNjcm9sbFBvc2l0aW9uLngoKSA8IHNpemUud2lkdGgoKTsKLSAgICBj
YXNlIEZvY3VzRGlyZWN0aW9uRG93bjoKKyAgICBjYXNlIEZvY3VzRGlyZWN0aW9uOjpEb3duOgog
ICAgICAgICByZXR1cm4gcmVjdC5oZWlnaHQoKSArIHNjcm9sbFBvc2l0aW9uLnkoKSA8IHNpemUu
aGVpZ2h0KCk7CiAgICAgZGVmYXVsdDoKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBA
IC01NDQsMTkgKzU0NCwxOSBAQCBMYXlvdXRSZWN0IGZyYW1lUmVjdEluQWJzb2x1dGVDb29yZGlu
YXRlcyhGcmFtZSogZnJhbWUpCiB2b2lkIGVudHJ5QW5kRXhpdFBvaW50c0ZvckRpcmVjdGlvbihG
b2N1c0RpcmVjdGlvbiBkaXJlY3Rpb24sIGNvbnN0IExheW91dFJlY3QmIHN0YXJ0aW5nUmVjdCwg
Y29uc3QgTGF5b3V0UmVjdCYgcG90ZW50aWFsUmVjdCwgTGF5b3V0UG9pbnQmIGV4aXRQb2ludCwg
TGF5b3V0UG9pbnQmIGVudHJ5UG9pbnQpCiB7CiAgICAgc3dpdGNoIChkaXJlY3Rpb24pIHsKLSAg
ICBjYXNlIEZvY3VzRGlyZWN0aW9uTGVmdDoKKyAgICBjYXNlIEZvY3VzRGlyZWN0aW9uOjpMZWZ0
OgogICAgICAgICBleGl0UG9pbnQuc2V0WChzdGFydGluZ1JlY3QueCgpKTsKICAgICAgICAgZW50
cnlQb2ludC5zZXRYKHBvdGVudGlhbFJlY3QubWF4WCgpKTsKICAgICAgICAgYnJlYWs7Ci0gICAg
Y2FzZSBGb2N1c0RpcmVjdGlvblVwOgorICAgIGNhc2UgRm9jdXNEaXJlY3Rpb246OlVwOgogICAg
ICAgICBleGl0UG9pbnQuc2V0WShzdGFydGluZ1JlY3QueSgpKTsKICAgICAgICAgZW50cnlQb2lu
dC5zZXRZKHBvdGVudGlhbFJlY3QubWF4WSgpKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBG
b2N1c0RpcmVjdGlvblJpZ2h0OgorICAgIGNhc2UgRm9jdXNEaXJlY3Rpb246OlJpZ2h0OgogICAg
ICAgICBleGl0UG9pbnQuc2V0WChzdGFydGluZ1JlY3QubWF4WCgpKTsKICAgICAgICAgZW50cnlQ
b2ludC5zZXRYKHBvdGVudGlhbFJlY3QueCgpKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBG
b2N1c0RpcmVjdGlvbkRvd246CisgICAgY2FzZSBGb2N1c0RpcmVjdGlvbjo6RG93bjoKICAgICAg
ICAgZXhpdFBvaW50LnNldFkoc3RhcnRpbmdSZWN0Lm1heFkoKSk7CiAgICAgICAgIGVudHJ5UG9p
bnQuc2V0WShwb3RlbnRpYWxSZWN0LnkoKSk7CiAgICAgICAgIGJyZWFrOwpAQCAtNTY1LDggKzU2
NSw4IEBAIHZvaWQgZW50cnlBbmRFeGl0UG9pbnRzRm9yRGlyZWN0aW9uKEZvY3VzRGlyZWN0aW9u
IGRpcmVjdGlvbiwgY29uc3QgTGF5b3V0UmVjdCYKICAgICB9CiAKICAgICBzd2l0Y2ggKGRpcmVj
dGlvbikgewotICAgIGNhc2UgRm9jdXNEaXJlY3Rpb25MZWZ0OgotICAgIGNhc2UgRm9jdXNEaXJl
Y3Rpb25SaWdodDoKKyAgICBjYXNlIEZvY3VzRGlyZWN0aW9uOjpMZWZ0OgorICAgIGNhc2UgRm9j
dXNEaXJlY3Rpb246OlJpZ2h0OgogICAgICAgICBpZiAoYmVsb3coc3RhcnRpbmdSZWN0LCBwb3Rl
bnRpYWxSZWN0KSkgewogICAgICAgICAgICAgZXhpdFBvaW50LnNldFkoc3RhcnRpbmdSZWN0Lnko
KSk7CiAgICAgICAgICAgICBlbnRyeVBvaW50LnNldFkocG90ZW50aWFsUmVjdC5tYXhZKCkpOwpA
QCAtNTc4LDggKzU3OCw4IEBAIHZvaWQgZW50cnlBbmRFeGl0UG9pbnRzRm9yRGlyZWN0aW9uKEZv
Y3VzRGlyZWN0aW9uIGRpcmVjdGlvbiwgY29uc3QgTGF5b3V0UmVjdCYKICAgICAgICAgICAgIGVu
dHJ5UG9pbnQuc2V0WShleGl0UG9pbnQueSgpKTsKICAgICAgICAgfQogICAgICAgICBicmVhazsK
LSAgICBjYXNlIEZvY3VzRGlyZWN0aW9uVXA6Ci0gICAgY2FzZSBGb2N1c0RpcmVjdGlvbkRvd246
CisgICAgY2FzZSBGb2N1c0RpcmVjdGlvbjo6VXA6CisgICAgY2FzZSBGb2N1c0RpcmVjdGlvbjo6
RG93bjoKICAgICAgICAgaWYgKHJpZ2h0T2Yoc3RhcnRpbmdSZWN0LCBwb3RlbnRpYWxSZWN0KSkg
ewogICAgICAgICAgICAgZXhpdFBvaW50LnNldFgoc3RhcnRpbmdSZWN0LngoKSk7CiAgICAgICAg
ICAgICBlbnRyeVBvaW50LnNldFgocG90ZW50aWFsUmVjdC5tYXhYKCkpOwpAQCAtNjI3LDEzICs2
MjcsMTMgQEAgYm9vbCBpc1ZhbGlkQ2FuZGlkYXRlKEZvY3VzRGlyZWN0aW9uIGRpcmVjdGlvbiwg
Y29uc3QgRm9jdXNDYW5kaWRhdGUmIGN1cnJlbnQsIEYKICAgICBMYXlvdXRSZWN0IGNhbmRpZGF0
ZVJlY3QgPSBjYW5kaWRhdGUucmVjdDsKIAogICAgIHN3aXRjaCAoZGlyZWN0aW9uKSB7Ci0gICAg
Y2FzZSBGb2N1c0RpcmVjdGlvbkxlZnQ6CisgICAgY2FzZSBGb2N1c0RpcmVjdGlvbjo6TGVmdDoK
ICAgICAgICAgcmV0dXJuIGNhbmRpZGF0ZVJlY3QueCgpIDwgY3VycmVudFJlY3QubWF4WCgpOwot
ICAgIGNhc2UgRm9jdXNEaXJlY3Rpb25VcDoKKyAgICBjYXNlIEZvY3VzRGlyZWN0aW9uOjpVcDoK
ICAgICAgICAgcmV0dXJuIGNhbmRpZGF0ZVJlY3QueSgpIDwgY3VycmVudFJlY3QubWF4WSgpOwot
ICAgIGNhc2UgRm9jdXNEaXJlY3Rpb25SaWdodDoKKyAgICBjYXNlIEZvY3VzRGlyZWN0aW9uOjpS
aWdodDoKICAgICAgICAgcmV0dXJuIGNhbmRpZGF0ZVJlY3QubWF4WCgpID4gY3VycmVudFJlY3Qu
eCgpOwotICAgIGNhc2UgRm9jdXNEaXJlY3Rpb25Eb3duOgorICAgIGNhc2UgRm9jdXNEaXJlY3Rp
b246OkRvd246CiAgICAgICAgIHJldHVybiBjYW5kaWRhdGVSZWN0Lm1heFkoKSA+IGN1cnJlbnRS
ZWN0LnkoKTsKICAgICBkZWZhdWx0OgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAg
LTY0NCw3ICs2NDQsNyBAQCBib29sIGlzVmFsaWRDYW5kaWRhdGUoRm9jdXNEaXJlY3Rpb24gZGly
ZWN0aW9uLCBjb25zdCBGb2N1c0NhbmRpZGF0ZSYgY3VycmVudCwgRgogdm9pZCBkaXN0YW5jZURh
dGFGb3JOb2RlKEZvY3VzRGlyZWN0aW9uIGRpcmVjdGlvbiwgY29uc3QgRm9jdXNDYW5kaWRhdGUm
IGN1cnJlbnQsIEZvY3VzQ2FuZGlkYXRlJiBjYW5kaWRhdGUpCiB7CiAgICAgaWYgKGFyZUVsZW1l
bnRzT25TYW1lTGluZShjdXJyZW50LCBjYW5kaWRhdGUpKSB7Ci0gICAgICAgIGlmICgoZGlyZWN0
aW9uID09IEZvY3VzRGlyZWN0aW9uVXAgJiYgY3VycmVudC5yZWN0LnkoKSA+IGNhbmRpZGF0ZS5y
ZWN0LnkoKSkgfHwgKGRpcmVjdGlvbiA9PSBGb2N1c0RpcmVjdGlvbkRvd24gJiYgY2FuZGlkYXRl
LnJlY3QueSgpID4gY3VycmVudC5yZWN0LnkoKSkpIHsKKyAgICAgICAgaWYgKChkaXJlY3Rpb24g
PT0gRm9jdXNEaXJlY3Rpb246OlVwICYmIGN1cnJlbnQucmVjdC55KCkgPiBjYW5kaWRhdGUucmVj
dC55KCkpIHx8IChkaXJlY3Rpb24gPT0gRm9jdXNEaXJlY3Rpb246OkRvd24gJiYgY2FuZGlkYXRl
LnJlY3QueSgpID4gY3VycmVudC5yZWN0LnkoKSkpIHsKICAgICAgICAgICAgIGNhbmRpZGF0ZS5k
aXN0YW5jZSA9IDA7CiAgICAgICAgICAgICBjYW5kaWRhdGUuYWxpZ25tZW50ID0gRnVsbDsKICAg
ICAgICAgICAgIHJldHVybjsKQEAgLTY2NSwxOSArNjY1LDE5IEBAIHZvaWQgZGlzdGFuY2VEYXRh
Rm9yTm9kZShGb2N1c0RpcmVjdGlvbiBkaXJlY3Rpb24sIGNvbnN0IEZvY3VzQ2FuZGlkYXRlJiBj
dXJyZW50CiAgICAgZW50cnlBbmRFeGl0UG9pbnRzRm9yRGlyZWN0aW9uKGRpcmVjdGlvbiwgY3Vy
cmVudFJlY3QsIG5vZGVSZWN0LCBleGl0UG9pbnQsIGVudHJ5UG9pbnQpOwogCiAgICAgc3dpdGNo
IChkaXJlY3Rpb24pIHsKLSAgICBjYXNlIEZvY3VzRGlyZWN0aW9uTGVmdDoKKyAgICBjYXNlIEZv
Y3VzRGlyZWN0aW9uOjpMZWZ0OgogICAgICAgICBzYW1lQXhpc0Rpc3RhbmNlID0gZXhpdFBvaW50
LngoKSAtIGVudHJ5UG9pbnQueCgpOwogICAgICAgICBvdGhlckF4aXNEaXN0YW5jZSA9IGFic29s
dXRlVmFsdWUoZXhpdFBvaW50LnkoKSAtIGVudHJ5UG9pbnQueSgpKTsKICAgICAgICAgYnJlYWs7
Ci0gICAgY2FzZSBGb2N1c0RpcmVjdGlvblVwOgorICAgIGNhc2UgRm9jdXNEaXJlY3Rpb246OlVw
OgogICAgICAgICBzYW1lQXhpc0Rpc3RhbmNlID0gZXhpdFBvaW50LnkoKSAtIGVudHJ5UG9pbnQu
eSgpOwogICAgICAgICBvdGhlckF4aXNEaXN0YW5jZSA9IGFic29sdXRlVmFsdWUoZXhpdFBvaW50
LngoKSAtIGVudHJ5UG9pbnQueCgpKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBGb2N1c0Rp
cmVjdGlvblJpZ2h0OgorICAgIGNhc2UgRm9jdXNEaXJlY3Rpb246OlJpZ2h0OgogICAgICAgICBz
YW1lQXhpc0Rpc3RhbmNlID0gZW50cnlQb2ludC54KCkgLSBleGl0UG9pbnQueCgpOwogICAgICAg
ICBvdGhlckF4aXNEaXN0YW5jZSA9IGFic29sdXRlVmFsdWUoZW50cnlQb2ludC55KCkgLSBleGl0
UG9pbnQueSgpKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBGb2N1c0RpcmVjdGlvbkRvd246
CisgICAgY2FzZSBGb2N1c0RpcmVjdGlvbjo6RG93bjoKICAgICAgICAgc2FtZUF4aXNEaXN0YW5j
ZSA9IGVudHJ5UG9pbnQueSgpIC0gZXhpdFBvaW50LnkoKTsKICAgICAgICAgb3RoZXJBeGlzRGlz
dGFuY2UgPSBhYnNvbHV0ZVZhbHVlKGVudHJ5UG9pbnQueCgpIC0gZXhpdFBvaW50LngoKSk7CiAg
ICAgICAgIGJyZWFrOwpAQCAtNzA5LDggKzcwOSw4IEBAIGJvb2wgY2FuQmVTY3JvbGxlZEludG9W
aWV3KEZvY3VzRGlyZWN0aW9uIGRpcmVjdGlvbiwgY29uc3QgRm9jdXNDYW5kaWRhdGUmIGNhbmRp
CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgTGF5b3V0UmVjdCBwYXJlbnRSZWN0ID0g
bm9kZVJlY3RJbkFic29sdXRlQ29vcmRpbmF0ZXMocGFyZW50Tm9kZSk7CiAgICAgICAgIGlmICgh
Y2FuZGlkYXRlUmVjdC5pbnRlcnNlY3RzKHBhcmVudFJlY3QpKSB7Ci0gICAgICAgICAgICBpZiAo
KChkaXJlY3Rpb24gPT0gRm9jdXNEaXJlY3Rpb25MZWZ0IHx8IGRpcmVjdGlvbiA9PSBGb2N1c0Rp
cmVjdGlvblJpZ2h0KSAmJiBwYXJlbnROb2RlLT5yZW5kZXJlcigpLT5zdHlsZSgpLm92ZXJmbG93
WCgpID09IE92ZXJmbG93OjpIaWRkZW4pCi0gICAgICAgICAgICAgICAgfHwgKChkaXJlY3Rpb24g
PT0gRm9jdXNEaXJlY3Rpb25VcCB8fCBkaXJlY3Rpb24gPT0gRm9jdXNEaXJlY3Rpb25Eb3duKSAm
JiBwYXJlbnROb2RlLT5yZW5kZXJlcigpLT5zdHlsZSgpLm92ZXJmbG93WSgpID09IE92ZXJmbG93
OjpIaWRkZW4pKQorICAgICAgICAgICAgaWYgKCgoZGlyZWN0aW9uID09IEZvY3VzRGlyZWN0aW9u
OjpMZWZ0IHx8IGRpcmVjdGlvbiA9PSBGb2N1c0RpcmVjdGlvbjo6UmlnaHQpICYmIHBhcmVudE5v
ZGUtPnJlbmRlcmVyKCktPnN0eWxlKCkub3ZlcmZsb3dYKCkgPT0gT3ZlcmZsb3c6OkhpZGRlbikK
KyAgICAgICAgICAgICAgICB8fCAoKGRpcmVjdGlvbiA9PSBGb2N1c0RpcmVjdGlvbjo6VXAgfHwg
ZGlyZWN0aW9uID09IEZvY3VzRGlyZWN0aW9uOjpEb3duKSAmJiBwYXJlbnROb2RlLT5yZW5kZXJl
cigpLT5zdHlsZSgpLm92ZXJmbG93WSgpID09IE92ZXJmbG93OjpIaWRkZW4pKQogICAgICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogICAgICAgICBpZiAocGFyZW50Tm9kZSA9
PSBjYW5kaWRhdGUuZW5jbG9zaW5nU2Nyb2xsYWJsZUJveCkKQEAgLTcyNywxOCArNzI3LDE4IEBA
IExheW91dFJlY3QgdmlydHVhbFJlY3RGb3JEaXJlY3Rpb24oRm9jdXNEaXJlY3Rpb24gZGlyZWN0
aW9uLCBjb25zdCBMYXlvdXRSZWN0JiBzCiB7CiAgICAgTGF5b3V0UmVjdCB2aXJ0dWFsU3RhcnRp
bmdSZWN0ID0gc3RhcnRpbmdSZWN0OwogICAgIHN3aXRjaCAoZGlyZWN0aW9uKSB7Ci0gICAgY2Fz
ZSBGb2N1c0RpcmVjdGlvbkxlZnQ6CisgICAgY2FzZSBGb2N1c0RpcmVjdGlvbjo6TGVmdDoKICAg
ICAgICAgdmlydHVhbFN0YXJ0aW5nUmVjdC5zZXRYKHZpcnR1YWxTdGFydGluZ1JlY3QubWF4WCgp
IC0gd2lkdGgpOwogICAgICAgICB2aXJ0dWFsU3RhcnRpbmdSZWN0LnNldFdpZHRoKHdpZHRoKTsK
ICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBGb2N1c0RpcmVjdGlvblVwOgorICAgIGNhc2UgRm9j
dXNEaXJlY3Rpb246OlVwOgogICAgICAgICB2aXJ0dWFsU3RhcnRpbmdSZWN0LnNldFkodmlydHVh
bFN0YXJ0aW5nUmVjdC5tYXhZKCkgLSB3aWR0aCk7CiAgICAgICAgIHZpcnR1YWxTdGFydGluZ1Jl
Y3Quc2V0SGVpZ2h0KHdpZHRoKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBGb2N1c0RpcmVj
dGlvblJpZ2h0OgorICAgIGNhc2UgRm9jdXNEaXJlY3Rpb246OlJpZ2h0OgogICAgICAgICB2aXJ0
dWFsU3RhcnRpbmdSZWN0LnNldFdpZHRoKHdpZHRoKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2Fz
ZSBGb2N1c0RpcmVjdGlvbkRvd246CisgICAgY2FzZSBGb2N1c0RpcmVjdGlvbjo6RG93bjoKICAg
ICAgICAgdmlydHVhbFN0YXJ0aW5nUmVjdC5zZXRIZWlnaHQod2lkdGgpOwogICAgICAgICBicmVh
azsKICAgICBkZWZhdWx0OgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TcGF0aWFs
TmF2aWdhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TcGF0aWFsTmF2aWdhdGlvbi5oCmlu
ZGV4IGUzNzYwNTcwZDBjODNlNmRmMzcyNTFkMDA0MTFlZWM5MmMyMGQxYjUuLjk3NDg2ODYzZTA1
Nzc3YjlkMGQzMzI2YWQyZmVkNmNjNjhiNmMyMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvU3BhdGlhbE5hdmlnYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NwYXRp
YWxOYXZpZ2F0aW9uLmgKQEAgLTEyNyw3ICsxMjcsNyBAQCBzdHJ1Y3QgRm9jdXNDYW5kaWRhdGUg
ewogICAgIGJvb2wgaXNPZmZzY3JlZW5BZnRlclNjcm9sbGluZzsKIH07CiAKLWJvb2wgaGFzT2Zm
c2NyZWVuUmVjdChOb2RlKiwgRm9jdXNEaXJlY3Rpb24gZGlyZWN0aW9uID0gRm9jdXNEaXJlY3Rp
b25Ob25lKTsKK2Jvb2wgaGFzT2Zmc2NyZWVuUmVjdChOb2RlKiwgRm9jdXNEaXJlY3Rpb24gPSBG
b2N1c0RpcmVjdGlvbjo6Tm9uZSk7CiBib29sIHNjcm9sbEluRGlyZWN0aW9uKEZyYW1lKiwgRm9j
dXNEaXJlY3Rpb24pOwogYm9vbCBzY3JvbGxJbkRpcmVjdGlvbihOb2RlKiBjb250YWluZXIsIEZv
Y3VzRGlyZWN0aW9uKTsKIGJvb2wgY2FuU2Nyb2xsSW5EaXJlY3Rpb24oY29uc3QgTm9kZSogY29u
dGFpbmVyLCBGb2N1c0RpcmVjdGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L1dlYlZpZXdJbXBsLm1tCmluZGV4IGJiYjA4ZTNlYzZmMWI0NWVkOTk5ZTJmODQ1MzllNGE4NTc0
NWU1ZGQuLmQwNjAxM2I4ODdiMmM4MjY1MDk2MmNmNTgxZDFiN2ZlNTk4YmZjYWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCkBAIC0xNjQ4LDcgKzE2
NDgsNyBAQCB2b2lkIFdlYlZpZXdJbXBsOjp0YWtlRm9jdXMoV2ViQ29yZTo6Rm9jdXNEaXJlY3Rp
b24gZGlyZWN0aW9uKQogewogICAgIE5TVmlldyAqd2ViVmlldyA9IG1fdmlldy5nZXRBdXRvcmVs
ZWFzZWQoKTsKIAotICAgIGlmIChkaXJlY3Rpb24gPT0gV2ViQ29yZTo6Rm9jdXNEaXJlY3Rpb25G
b3J3YXJkKSB7CisgICAgaWYgKGRpcmVjdGlvbiA9PSBXZWJDb3JlOjpGb2N1c0RpcmVjdGlvbjo6
Rm9yd2FyZCkgewogICAgICAgICAvLyBTaW5jZSB3ZSdyZSB0cnlpbmcgdG8gbW92ZSBmb2N1cyBv
dXQgb2YgbV93ZWJWaWV3LCBhbmQgYmVjYXVzZQogICAgICAgICAvLyBtX3dlYlZpZXcgbWF5IGNv
bnRhaW4gc3Vidmlld3Mgd2l0aGluIGl0LCB3ZSBhc2sgaXQgZm9yIHRoZSBuZXh0IGtleQogICAg
ICAgICAvLyB2aWV3IG9mIHRoZSBsYXN0IHZpZXcgaW4gaXRzIGtleSB2aWV3IGxvb3AuIFRoaXMg
bWFrZXMgbV93ZWJWaWV3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApp
bmRleCBhNjliN2RiNDVkNDQwMDhkZmQwNzdmZTVlNzAwMTk5MjlkOTFiZGNkLi45YTJhYTgwYWE1
NDlmMDcyY2I4YTM0MTAxY2YzMmE5OTc1MzY1MWEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5jcHAKQEAgLTY4NTIsOSArNjg1Miw5IEBAIHZvaWQgV2ViUGFnZVByb3h5
OjpzZXRGb2N1cyhib29sIGZvY3VzZWQpCiAgICAgICAgIG1fdWlDbGllbnQtPnVuZm9jdXModGhp
cyk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5Ojp0YWtlRm9jdXModWludDMyX3QgZGlyZWN0aW9u
KQordm9pZCBXZWJQYWdlUHJveHk6OnRha2VGb2N1cyh1aW50OF90IGRpcmVjdGlvbikKIHsKLSAg
ICBpZiAobV91aUNsaWVudC0+dGFrZUZvY3VzKHRoaXMsIChzdGF0aWNfY2FzdDxGb2N1c0RpcmVj
dGlvbj4oZGlyZWN0aW9uKSA9PSBGb2N1c0RpcmVjdGlvbkZvcndhcmQpID8ga1dLRm9jdXNEaXJl
Y3Rpb25Gb3J3YXJkIDoga1dLRm9jdXNEaXJlY3Rpb25CYWNrd2FyZCkpCisgICAgaWYgKG1fdWlD
bGllbnQtPnRha2VGb2N1cyh0aGlzLCAoc3RhdGljX2Nhc3Q8Rm9jdXNEaXJlY3Rpb24+KGRpcmVj
dGlvbikgPT0gRm9jdXNEaXJlY3Rpb246OkZvcndhcmQpID8ga1dLRm9jdXNEaXJlY3Rpb25Gb3J3
YXJkIDoga1dLRm9jdXNEaXJlY3Rpb25CYWNrd2FyZCkpCiAgICAgICAgIHJldHVybjsKIAogICAg
IHBhZ2VDbGllbnQoKS50YWtlRm9jdXMoc3RhdGljX2Nhc3Q8Rm9jdXNEaXJlY3Rpb24+KGRpcmVj
dGlvbikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCA3MTVlY2U1
MWQzYzIxNmJmMTUzZjFjZTdhZTIxY2VjM2NlZWQzYjM0Li5kNDY5NGYwMmU2MzgzNjljYzA1Zjcy
ZDllYmEwMjRhZmJmNjAyOGViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
aApAQCAtMjEyMiw3ICsyMTIyLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGlnbm9yZVdvcmQoY29u
c3QgU3RyaW5nJiB3b3JkKTsKICAgICB2b2lkIHJlcXVlc3RDaGVja2luZ09mU3RyaW5nKHVpbnQ2
NF90IHJlcXVlc3RJRCwgY29uc3QgV2ViQ29yZTo6VGV4dENoZWNraW5nUmVxdWVzdERhdGEmLCBp
bnQzMl90IGluc2VydGlvblBvaW50KTsKIAotICAgIHZvaWQgdGFrZUZvY3VzKHVpbnQzMl90IGRp
cmVjdGlvbik7CisgICAgdm9pZCB0YWtlRm9jdXModWludDhfdCBkaXJlY3Rpb24pOwogICAgIHZv
aWQgc2V0VG9vbFRpcChjb25zdCBTdHJpbmcmKTsKICAgICB2b2lkIHNldEN1cnNvcihjb25zdCBX
ZWJDb3JlOjpDdXJzb3ImKTsKICAgICB2b2lkIHNldEN1cnNvckhpZGRlblVudGlsTW91c2VNb3Zl
cyhib29sKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNz
YWdlcy5pbgppbmRleCA5NTBlNTM5Mjk5MmY0MTg4MzhhMTkzZTMwM2UyZjFiYmY1NzVlYmZkLi5m
ZmE3ZDYxY2VlMjU5MzcxNGQyOTg2MjYzMjZiNDYzOWYzYzQ2OTkwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCkBAIC00Myw3ICs0Myw3
IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAgICAgU2V0Q3Vyc29ySGlkZGVuVW50aWxN
b3VzZU1vdmVzKGJvb2wgaGlkZGVuVW50aWxNb3VzZU1vdmVzKQogICAgIFNldFN0YXR1c1RleHQo
U3RyaW5nIHN0YXR1c1RleHQpCiAgICAgU2V0Rm9jdXMoYm9vbCBmb2N1c2VkKQotICAgIFRha2VG
b2N1cyh1aW50MzJfdCBkaXJlY3Rpb24pCisgICAgVGFrZUZvY3VzKHVpbnQ4X3QgZGlyZWN0aW9u
KQogICAgIEZvY3VzZWRGcmFtZUNoYW5nZWQoT3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlm
aWVyPiBmcmFtZUlEKQogICAgIFNldFJlbmRlclRyZWVTaXplKHVpbnQ2NF90IHRyZWVTaXplKQog
ICAgIFNldFRvb2xiYXJzQXJlVmlzaWJsZShib29sIHRvb2xiYXJzQXJlVmlzaWJsZSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVD
bGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNo
cm9tZUNsaWVudC5jcHAKaW5kZXggYTA5ODZmMzA3OGFkODIyMTAzNGE3MjAxYTgzZWFhZWIyMTYx
MjY0Yi4uZjhmOTRjNGFhODc2ODhhNjI0MGQ0M2Y2NTAyM2QwMTJmZjk3ZGFlZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNo
cm9tZUNsaWVudC5jcHAKQEAgLTIyNCw3ICsyMjQsNyBAQCBib29sIFdlYkNocm9tZUNsaWVudDo6
Y2FuVGFrZUZvY3VzKEZvY3VzRGlyZWN0aW9uKQogCiB2b2lkIFdlYkNocm9tZUNsaWVudDo6dGFr
ZUZvY3VzKEZvY3VzRGlyZWN0aW9uIGRpcmVjdGlvbikKIHsKLSAgICBtX3BhZ2Uuc2VuZChNZXNz
YWdlczo6V2ViUGFnZVByb3h5OjpUYWtlRm9jdXMoZGlyZWN0aW9uKSk7CisgICAgbV9wYWdlLnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6VGFrZUZvY3VzKHN0YXRpY19jYXN0PHVpbnQ4X3Q+
KGRpcmVjdGlvbikpKTsKIH0KIAogdm9pZCBXZWJDaHJvbWVDbGllbnQ6OmZvY3VzZWRFbGVtZW50
Q2hhbmdlZChFbGVtZW50KiBlbGVtZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmNwcAppbmRleCAxMGVmNzllOGQyZmY1M2JjMzg1MDA0YjZiNTM5ZDFhZGI4
ZTU0ODNlLi4xNWM2ZmY3Zjk3NGZkNzAwZWY4YzM3YWI1MzMwZjE5Mzc2ZmM0NWQ1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtMjkxOCw3ICsy
OTE4LDcgQEAgYm9vbCBXZWJQYWdlOjpoYW5kbGVLZXlFdmVudEJ5UmVsaW5xdWlzaGluZ0ZvY3Vz
VG9DaHJvbWUoY29uc3QgS2V5Ym9hcmRFdmVudCYgZXYKICAgICAvLyBBbGxvdyBhIHNoaWZ0LXRh
YiBrZXlwcmVzcyBldmVudCB0byByZWxpbnF1aXNoIGZvY3VzIGV2ZW4gaWYgd2UgZG9uJ3QgYWxs
b3cgdGFiIHRvIGN5Y2xlIGJldHdlZW4KICAgICAvLyBlbGVtZW50cyBpbnNpZGUgdGhlIHZpZXcu
IFdlIGNhbiBvbmx5IGRvIHRoaXMgZm9yIHNoaWZ0LXRhYiwgbm90IHRhYiBpdHNlbGYgYmVjYXVz
ZQogICAgIC8vIHRhYktleUN5Y2xlc1Rocm91Z2hFbGVtZW50cyBpcyB1c2VkIHRvIG1ha2UgdGFi
IGNoYXJhY3RlciBpbnNlcnRpb24gd29yayBpbiBlZGl0YWJsZSB3ZWIgdmlld3MuCi0gICAgcmV0
dXJuIG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkucmVsaW5xdWlzaEZvY3VzVG9DaHJvbWUoRm9j
dXNEaXJlY3Rpb25CYWNrd2FyZCk7CisgICAgcmV0dXJuIG1fcGFnZS0+Zm9jdXNDb250cm9sbGVy
KCkucmVsaW5xdWlzaEZvY3VzVG9DaHJvbWUoRm9jdXNEaXJlY3Rpb246OkJhY2t3YXJkKTsKIH0K
IAogdm9pZCBXZWJQYWdlOjp2YWxpZGF0ZUNvbW1hbmQoY29uc3QgU3RyaW5nJiBjb21tYW5kTmFt
ZSwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQpAQCAtMzI0NywxMiArMzI0NywxMiBAQCB2b2lkIFdl
YlBhZ2U6OnNldEluaXRpYWxGb2N1cyhib29sIGZvcndhcmQsIGJvb2wgaXNLZXlib2FyZEV2ZW50
VmFsaWQsIGNvbnN0IFdlYgogICAgIGlmIChpc0tleWJvYXJkRXZlbnRWYWxpZCAmJiBldmVudC50
eXBlKCkgPT0gV2ViRXZlbnQ6OktleURvd24pIHsKICAgICAgICAgUGxhdGZvcm1LZXlib2FyZEV2
ZW50IHBsYXRmb3JtRXZlbnQocGxhdGZvcm0oZXZlbnQpKTsKICAgICAgICAgcGxhdGZvcm1FdmVu
dC5kaXNhbWJpZ3VhdGVLZXlEb3duRXZlbnQoUGxhdGZvcm1FdmVudDo6UmF3S2V5RG93bik7Ci0g
ICAgICAgIG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuc2V0SW5pdGlhbEZvY3VzKGZvcndhcmQg
PyBGb2N1c0RpcmVjdGlvbkZvcndhcmQgOiBGb2N1c0RpcmVjdGlvbkJhY2t3YXJkLCAmS2V5Ym9h
cmRFdmVudDo6Y3JlYXRlKHBsYXRmb3JtRXZlbnQsICZmcmFtZS53aW5kb3dQcm94eSgpKS5nZXQo
KSk7CisgICAgICAgIG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuc2V0SW5pdGlhbEZvY3VzKGZv
cndhcmQgPyBGb2N1c0RpcmVjdGlvbjo6Rm9yd2FyZCA6IEZvY3VzRGlyZWN0aW9uOjpCYWNrd2Fy
ZCwgJktleWJvYXJkRXZlbnQ6OmNyZWF0ZShwbGF0Zm9ybUV2ZW50LCAmZnJhbWUud2luZG93UHJv
eHkoKSkuZ2V0KCkpOwogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogICAgICAgICByZXR1
cm47CiAgICAgfQogCi0gICAgbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5zZXRJbml0aWFsRm9j
dXMoZm9yd2FyZCA/IEZvY3VzRGlyZWN0aW9uRm9yd2FyZCA6IEZvY3VzRGlyZWN0aW9uQmFja3dh
cmQsIG51bGxwdHIpOworICAgIG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuc2V0SW5pdGlhbEZv
Y3VzKGZvcndhcmQgPyBGb2N1c0RpcmVjdGlvbjo6Rm9yd2FyZCA6IEZvY3VzRGlyZWN0aW9uOjpC
YWNrd2FyZCwgbnVsbHB0cik7CiAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xp
ZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21l
Q2xpZW50Lm1tCmluZGV4IDRiYzRjN2FkZDZjYjgxYmRiZTZiZWNlMGU3YzRjNzAwMjM2ZTM1MTUu
LmUxMTgyYmQ0ZDU5NDBmMzUxYjc2ZjhjZjA0MThhN2RlZTM5YzI5MTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGll
bnQubW0KQEAgLTIwNSw3ICsyMDUsNyBAQCBib29sIFdlYkNocm9tZUNsaWVudDo6Y2FuVGFrZUZv
Y3VzKEZvY3VzRGlyZWN0aW9uKQogdm9pZCBXZWJDaHJvbWVDbGllbnQ6OnRha2VGb2N1cyhGb2N1
c0RpcmVjdGlvbiBkaXJlY3Rpb24pCiB7CiAjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAg
aWYgKGRpcmVjdGlvbiA9PSBGb2N1c0RpcmVjdGlvbkZvcndhcmQpIHsKKyAgICBpZiAoZGlyZWN0
aW9uID09IEZvY3VzRGlyZWN0aW9uOjpGb3J3YXJkKSB7CiAgICAgICAgIC8vIFNpbmNlIHdlJ3Jl
IHRyeWluZyB0byBtb3ZlIGZvY3VzIG91dCBvZiBtX3dlYlZpZXcsIGFuZCBiZWNhdXNlCiAgICAg
ICAgIC8vIG1fd2ViVmlldyBtYXkgY29udGFpbiBzdWJ2aWV3cyB3aXRoaW4gaXQsIHdlIGFzayBp
dCBmb3IgdGhlIG5leHQga2V5CiAgICAgICAgIC8vIHZpZXcgb2YgdGhlIGxhc3QgdmlldyBpbiBp
dHMga2V5IHZpZXcgbG9vcC4gVGhpcyBtYWtlcyBtX3dlYlZpZXcKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCmluZGV4IGVlNjQ4MWYzODYwYTdhN2I1
MWExMTA3OGU0MzM4ZDcwNWNmZGFiNjEuLjVlNmZlOGEwYjhiOGRkZWNiZjgwZGJlM2Y1YmFlMTMx
OGIwODZjNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2Vi
SFRNTFZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1M
Vmlldy5tbQpAQCAtNDYxNSw3ICs0NjE1LDcgQEAgc3RhdGljIFJlZlB0cjxXZWJDb3JlOjpLZXli
b2FyZEV2ZW50PiBjdXJyZW50S2V5Ym9hcmRFdmVudChXZWJDb3JlOjpGcmFtZSogY29yZUYKIAog
ICAgIGlmIChhdXRvKiBkb2N1bWVudCA9IGZyYW1lLT5kb2N1bWVudCgpKQogICAgICAgICBkb2N1
bWVudC0+c2V0Rm9jdXNlZEVsZW1lbnQoMCk7Ci0gICAgcGFnZS0+Zm9jdXNDb250cm9sbGVyKCku
c2V0SW5pdGlhbEZvY3VzKGRpcmVjdGlvbiA9PSBOU1NlbGVjdGluZ05leHQgPyBXZWJDb3JlOjpG
b2N1c0RpcmVjdGlvbkZvcndhcmQgOiBXZWJDb3JlOjpGb2N1c0RpcmVjdGlvbkJhY2t3YXJkLAor
ICAgIHBhZ2UtPmZvY3VzQ29udHJvbGxlcigpLnNldEluaXRpYWxGb2N1cyhkaXJlY3Rpb24gPT0g
TlNTZWxlY3RpbmdOZXh0ID8gV2ViQ29yZTo6Rm9jdXNEaXJlY3Rpb246OkZvcndhcmQgOiBXZWJD
b3JlOjpGb2N1c0RpcmVjdGlvbjo6QmFja3dhcmQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjdXJyZW50S2V5Ym9hcmRFdmVudChmcmFtZSkuZ2V0KCkpOwog
ICAgIHJldHVybiBZRVM7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAppbmRleCA5MzhiYjg1MjgzNmI4
YThmNjFmOWMwY2ZkM2NkNTQ3N2E0NTI2ZGQzLi5lNTMxMDkzZDI5NTEzYmM5Y2Q5ODU3MzEzZWNh
YzQyMzJmZjJhN2ZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3Jl
U3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKQEAgLTEzOSw3ICsxMzksNyBAQCB2
b2lkIFdlYkNocm9tZUNsaWVudDo6dW5mb2N1cygpCiBib29sIFdlYkNocm9tZUNsaWVudDo6Y2Fu
VGFrZUZvY3VzKEZvY3VzRGlyZWN0aW9uIGRpcmVjdGlvbikKIHsKICAgICBJV2ViVUlEZWxlZ2F0
ZSogdWlEZWxlZ2F0ZSA9IDA7Ci0gICAgQk9PTCBiRm9yd2FyZCA9IChkaXJlY3Rpb24gPT0gRm9j
dXNEaXJlY3Rpb25Gb3J3YXJkKSA/IFRSVUUgOiBGQUxTRTsKKyAgICBCT09MIGJGb3J3YXJkID0g
KGRpcmVjdGlvbiA9PSBGb2N1c0RpcmVjdGlvbjo6Rm9yd2FyZCkgPyBUUlVFIDogRkFMU0U7CiAg
ICAgQk9PTCByZXN1bHQgPSBGQUxTRTsKICAgICBpZiAoU1VDQ0VFREVEKG1fd2ViVmlldy0+dWlE
ZWxlZ2F0ZSgmdWlEZWxlZ2F0ZSkpKSB7CiAgICAgICAgIHVpRGVsZWdhdGUtPmNhblRha2VGb2N1
cyhtX3dlYlZpZXcsIGJGb3J3YXJkLCAmcmVzdWx0KTsKQEAgLTE1Miw3ICsxNTIsNyBAQCBib29s
IFdlYkNocm9tZUNsaWVudDo6Y2FuVGFrZUZvY3VzKEZvY3VzRGlyZWN0aW9uIGRpcmVjdGlvbikK
IHZvaWQgV2ViQ2hyb21lQ2xpZW50Ojp0YWtlRm9jdXMoRm9jdXNEaXJlY3Rpb24gZGlyZWN0aW9u
KQogewogICAgIElXZWJVSURlbGVnYXRlKiB1aURlbGVnYXRlID0gMDsKLSAgICBCT09MIGJGb3J3
YXJkID0gKGRpcmVjdGlvbiA9PSBGb2N1c0RpcmVjdGlvbkZvcndhcmQpID8gVFJVRSA6IEZBTFNF
OworICAgIEJPT0wgYkZvcndhcmQgPSAoZGlyZWN0aW9uID09IEZvY3VzRGlyZWN0aW9uOjpGb3J3
YXJkKSA/IFRSVUUgOiBGQUxTRTsKICAgICBpZiAoU1VDQ0VFREVEKG1fd2ViVmlldy0+dWlEZWxl
Z2F0ZSgmdWlEZWxlZ2F0ZSkpKSB7CiAgICAgICAgIHVpRGVsZWdhdGUtPnRha2VGb2N1cyhtX3dl
YlZpZXcsIGJGb3J3YXJkKTsKICAgICAgICAgdWlEZWxlZ2F0ZS0+UmVsZWFzZSgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJWaWV3LmNwcAppbmRleCBjYTRmNzI0NjU1OGMzNjZjZDZjZjRiZTlmZjA1
NmI2NmRhNzUxMTA3Li45OWRiNTkyZjg0NTY1ZTQ4OGIyMWE2NGU5YjQ0YjFiMzRkZDNjMDExIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcApAQCAtNTk3NSw3ICs1OTc1LDcgQEAgSFJF
U1VMVCBXZWJWaWV3OjpzZXRJbml0aWFsRm9jdXMoQk9PTCBmb3J3YXJkKQogICAgIGlmIChtX3Bh
Z2UpIHsKICAgICAgICAgRnJhbWUmIGZyYW1lID0gbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5m
b2N1c2VkT3JNYWluRnJhbWUoKTsKICAgICAgICAgZnJhbWUuZG9jdW1lbnQoKS0+c2V0Rm9jdXNl
ZEVsZW1lbnQoMCk7Ci0gICAgICAgIG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuc2V0SW5pdGlh
bEZvY3VzKGZvcndhcmQgPyBGb2N1c0RpcmVjdGlvbkZvcndhcmQgOiBGb2N1c0RpcmVjdGlvbkJh
Y2t3YXJkLCAwKTsKKyAgICAgICAgbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5zZXRJbml0aWFs
Rm9jdXMoZm9yd2FyZCA/IEZvY3VzRGlyZWN0aW9uOjpGb3J3YXJkIDogRm9jdXNEaXJlY3Rpb246
OkJhY2t3YXJkLCAwKTsKICAgICB9CiAgICAgcmV0dXJuIFNfT0s7CiB9Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>