<?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>112315</bug_id>
          
          <creation_ts>2013-03-13 19:53:02 -0700</creation_ts>
          <short_desc>Add valueForLength methods to RenderObject to help viewport unit implementation</short_desc>
          <delta_ts>2013-03-25 18:43:50 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>UNCONFIRMED</bug_status>
          <resolution></resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>91554</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="Timothy Loh">timloh</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>aboxhall</cc>
    
    <cc>apinheiro</cc>
    
    <cc>buildbot</cc>
    
    <cc>cfleizach</cc>
    
    <cc>dino</cc>
    
    <cc>dmazzoni</cc>
    
    <cc>eric</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>jdiggs</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>mifenton</cc>
    
    <cc>ojan.autocc</cc>
    
    <cc>rniwa</cc>
    
    <cc>tkent</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>854887</commentid>
    <comment_count>0</comment_count>
    <who name="Timothy Loh">timloh</who>
    <bug_when>2013-03-13 19:53:02 -0700</bug_when>
    <thetext>Add valueForLength methods to RenderObject to help viewport unit implementation</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>854892</commentid>
    <comment_count>1</comment_count>
      <attachid>193044</attachid>
    <who name="Timothy Loh">timloh</who>
    <bug_when>2013-03-13 20:02:46 -0700</bug_when>
    <thetext>Created attachment 193044
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>854965</commentid>
    <comment_count>2</comment_count>
      <attachid>193044</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-03-13 22:34:49 -0700</bug_when>
    <thetext>Comment on attachment 193044
Patch

Attachment 193044 did not pass mac-ews (mac):
Output: http://webkit-commit-queue.appspot.com/results/17138271</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>854991</commentid>
    <comment_count>3</comment_count>
      <attachid>193044</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-03-13 23:34:41 -0700</bug_when>
    <thetext>Comment on attachment 193044
Patch

Attachment 193044 did not pass mac-wk2-ews (mac-wk2):
Output: http://webkit-commit-queue.appspot.com/results/17186158</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>855010</commentid>
    <comment_count>4</comment_count>
      <attachid>193079</attachid>
    <who name="Timothy Loh">timloh</who>
    <bug_when>2013-03-14 00:03:30 -0700</bug_when>
    <thetext>Created attachment 193079
Patch</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>193044</attachid>
            <date>2013-03-13 20:02:46 -0700</date>
            <delta_ts>2013-03-14 00:03:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-112315-20130314135842.patch</filename>
            <type>text/plain</type>
            <size>83750</size>
            <attacher name="Timothy Loh">timloh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ1NzE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjhmNWYxYWE4MWFlOTRj
ZmYzYWI0N2E5ZjYxMWQ4YmZhNzFiNTRiMi4uOGY5YTE4MDNkYmI4MTNiZTU3MTliZjdlYjJkY2I3
OGVlN2ZiMzc3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDkzIEBACisyMDEzLTAzLTEzICBUaW1v
dGh5IExvaCAgPHRpbWxvaEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgQWRkIHZhbHVlRm9yTGVu
Z3RoIG1ldGhvZHMgdG8gUmVuZGVyT2JqZWN0IHRvIGhlbHAgdmlld3BvcnQgdW5pdCBpbXBsZW1l
bnRhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTEyMzE1CisKKyAgICAgICAgUGFydCAxIG9mIGdldHRpbmcgdmlld3BvcnQgdW5pdHMgd29ya2lu
ZyBldmVyeXdoZXJlIChzZWUgZGlzY3Vzc2lvbiBvbiBidWcgOTE1NTQpLgorICAgICAgICBHZXR0
aW5nIHZpZXdwb3J0IHVuaXRzIHdvcmtpbmcgZXZlcnl3aGVyZSBpbnZvbHZlcyBoYXZpbmcgdGhl
IHZpZXdwb3J0IHNpemUgaW4KKyAgICAgICAgdGhlIHZhcmlvdXMgdmFsdWVGb3JMZW5ndGggZnVu
Y3Rpb25zLiBTaW5jZSB3ZSBjYWxsIHRoZXNlIGZ1bmN0aW9ucyBmcm9tIHBsYXRmb3JtCisgICAg
ICAgIGNvZGUsIHdlIGNhbid0IHBhc3MgaW4gYSBSZW5kZXJWaWV3IGFzIGlzIGN1cnJlbnRseSBk
b25lLiBBZGRpbmcgdGhlc2UgbWV0aG9kcyB0bworICAgICAgICBSZW5kZXJPYmplY3QgbWVhbnMg
dGhhdCB3ZSB3b24ndCB0YWtlIGEgcGVyZm9ybWFuY2UgaGl0IGZyb20gY29tcHV0aW5nIHRoZSB2
aWV3cG9ydAorICAgICAgICBzaXplIHdoZW5ldmVyIHdlIHdhbnQgdG8gcmVzb2x2ZSBMZW5ndGgg
b2JqZWN0cyB0byBwaXhlbCB2YWx1ZXMuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIChubyBmdW5jdGlvbmFsIGNoYW5nZSkuCisK
KyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNlVGV4
dC5jcHA6CisgICAgICAgIChnZXRBdHRyaWJ1dGVTZXRGb3JBY2Nlc3NpYmlsaXR5T2JqZWN0KToK
KyAgICAgICAgKiBjc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6Z2V0UHJvcGVydHlDU1NWYWx1
ZSk6CisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3Vt
ZW50OjpwYWdlU2l6ZUFuZE1hcmdpbnNJblBpeGVscyk6CisgICAgICAgICogaHRtbC9IVE1MQXJl
YUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEFyZWFFbGVtZW50OjpnZXRSZWdp
b24pOgorICAgICAgICAqIHJlbmRlcmluZy9GaWx0ZXJFZmZlY3RSZW5kZXJlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3RSZW5kZXJlcjo6YnVpbGQpOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJCbG9jay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6
dGV4dEluZGVudE9mZnNldCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6Y29tcHV0
ZUlubGluZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94OjpyZWZsZWN0aW9uT2Zmc2V0
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6cHVzaENvbnRlbnRzQ2xpcCk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OmNsaXBSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckJveDo6Y29tcHV0ZUxvZ2ljYWxXaWR0aEluUmVnaW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckJveDo6ZmlsbEF2YWlsYWJsZU1lYXN1cmUpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyQm94Ojpjb21wdXRlTG9naWNhbFdpZHRoSW5SZWdpb25Vc2luZyk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJCb3g6OmNvbXB1dGVJbmxpbmVEaXJlY3Rpb25NYXJnaW5zKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckJveDo6Y29tcHV0ZUNvbnRlbnRBbmRTY3JvbGxiYXJMb2dpY2FsSGVp
Z2h0VXNpbmcpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94Ojpjb21wdXRlUmVwbGFjZWRM
b2dpY2FsV2lkdGhVc2luZyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OmNvbXB1dGVS
ZXBsYWNlZExvZ2ljYWxIZWlnaHRVc2luZyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6
OmNvbXB1dGVCbG9ja0RpcmVjdGlvbk1hcmdpbnMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
Qm94Ojpjb21wdXRlUG9zaXRpb25lZExvZ2ljYWxXaWR0aFVzaW5nKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckJveDo6Y29tcHV0ZVBvc2l0aW9uZWRMb2dpY2FsSGVpZ2h0VXNpbmcpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyQm94Ojpjb21wdXRlUG9zaXRpb25lZExvZ2ljYWxXaWR0aFJl
cGxhY2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6Y29tcHV0ZVBvc2l0aW9uZWRM
b2dpY2FsSGVpZ2h0UmVwbGFjZWQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3hNb2Rl
bE9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9iamVjdDo6cmVs
YXRpdmVQb3NpdGlvbk9mZnNldCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9i
amVjdDo6Y29tcHV0ZVN0aWNreVBvc2l0aW9uQ29uc3RyYWludHMpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6OmNvbXB1dGVkQ1NTUGFkZGluZyk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9iamVjdDo6Y2FsY3VsYXRlRmlsbFRpbGVTaXplKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckJveE1vZGVsT2JqZWN0OjpjYWxjdWxhdGVCYWNrZ3JvdW5k
SW1hZ2VHZW9tZXRyeSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9iamVjdDo6
cGFpbnROaW5lUGllY2VJbWFnZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxl
Qm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZsZXhpYmxlQm94Ojpjb21wdXRlTWFp
bkF4aXNFeHRlbnRGb3JDaGlsZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGbGV4aWJsZUJv
eDo6Y29tcHV0ZUNoaWxkTWFyZ2luVmFsdWUpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJH
cmlkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckdyaWQ6OmNvbXB1dGVVc2VkQnJlYWR0
aE9mU3BlY2lmaWVkTGVuZ3RoKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVySW5saW5lLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbXB1dGVNYXJnaW4pOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJNYXJxdWVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1hcnF1ZWU6OnRp
bWVyRmlyZWQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJNZW51TGlzdC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJNZW51TGlzdDo6dXBkYXRlT3B0aW9uc1dpZHRoKToKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ck9iamVjdDo6cmVwYWludEFmdGVyTGF5b3V0SWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyT2JqZWN0OjptaW5pbXVtSW50VmFsdWVGb3JMZW5ndGgpOgorICAgICAgICAoV2ViQ29y
ZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OmludFZhbHVlRm9yTGVuZ3RoKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6bWluaW11bVZhbHVlRm9yTGVuZ3RoKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6dmFsdWVGb3JMZW5ndGgpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0OjpmbG9hdFZhbHVlRm9yTGVuZ3RoKToKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyT2JqZWN0Lmg6CisgICAgICAgIChSZW5kZXJPYmplY3QpOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXJQYXJ0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclNjcm9sbGJhclBhcnQ6OmNvbXB1dGVTY3JvbGxiYXJXaWR0aCk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJTY3JvbGxiYXJQYXJ0Ojpjb21wdXRlU2Nyb2xsYmFySGVpZ2h0KToK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGFibGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyVGFibGU6OnVwZGF0ZUxvZ2ljYWxXaWR0aCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJUYWJsZTo6Y29udmVydFN0eWxlTG9naWNhbFdpZHRoVG9Db21wdXRlZFdpZHRoKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlOjpjb252ZXJ0U3R5bGVMb2dpY2FsSGVpZ2h0VG9Db21w
dXRlZEhlaWdodCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5oOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyVGFibGVDZWxsOjpsb2dpY2FsSGVpZ2h0Rm9yUm93U2l6aW5n
KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9uLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclRhYmxlU2VjdGlvbjo6Y2FsY1Jvd0xvZ2ljYWxIZWlnaHQpOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJUZXh0Lmg6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJU
ZXh0OjptYXJnaW5MZWZ0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHQ6Om1hcmdpblJp
Z2h0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUm9vdElubGluZUJveC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSb290SW5saW5lQm94Ojp2ZXJ0aWNhbFBvc2l0aW9uRm9yQm94KToKKwogMjAxMy0w
My0xMyAgUGF2ZWwgRmVsZG1hbiAgPHBmZWxkbWFuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBX
ZWIgSW5zcGVjdG9yOiBnZXQgcmlkIG9mIGhpZGRlblBhbmVscyBmaWx0ZXIKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVJbnRlcmZh
Y2VUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vz
c2libGVJbnRlcmZhY2VUZXh0LmNwcAppbmRleCBmYWQwMTcxMWU1OGU2OTk0ZTNiNDZhMWViODUz
MzhlNGZjYjAxNzE0Li5hNThmNDRiYzk4NjczODk1ZDY1M2MxZjQ1OTZhNDAzMWM3YWI5Y2M1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3Np
YmxlSW50ZXJmYWNlVGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9h
dGsvV2ViS2l0QWNjZXNzaWJsZUludGVyZmFjZVRleHQuY3BwCkBAIC0yNDYsNyArMjQ2LDcgQEAg
c3RhdGljIEF0a0F0dHJpYnV0ZVNldCogZ2V0QXR0cmlidXRlU2V0Rm9yQWNjZXNzaWJpbGl0eU9i
amVjdChjb25zdCBBY2Nlc3NpYmlsaXQKICAgICB9CiAKICAgICBpZiAoIXN0eWxlLT50ZXh0SW5k
ZW50KCkuaXNVbmRlZmluZWQoKSkgewotICAgICAgICBpbnQgaW5kZW50YXRpb24gPSB2YWx1ZUZv
ckxlbmd0aChzdHlsZS0+dGV4dEluZGVudCgpLCBvYmplY3QtPnNpemUoKS53aWR0aCgpLCByZW5k
ZXJlci0+dmlldygpKTsKKyAgICAgICAgaW50IGluZGVudGF0aW9uID0gcmVuZGVyZXItPnZhbHVl
Rm9yTGVuZ3RoKHN0eWxlLT50ZXh0SW5kZW50KCksIG9iamVjdC0+c2l6ZSgpLndpZHRoKCkpOwog
ICAgICAgICBidWZmZXIuc2V0KGdfc3RyZHVwX3ByaW50ZigiJWkiLCBpbmRlbnRhdGlvbikpOwog
ICAgICAgICByZXN1bHQgPSBhZGRUb0F0a0F0dHJpYnV0ZVNldChyZXN1bHQsIGF0a190ZXh0X2F0
dHJpYnV0ZV9nZXRfbmFtZShBVEtfVEVYVF9BVFRSX0lOREVOVCksIGJ1ZmZlci5nZXQoKSk7CiAg
ICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNs
YXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0
aW9uLmNwcAppbmRleCAxYzA0OGE1OTg3YTljMmQxOWQ1Njk3MGI3YmVlZjQ3NzA4NGFlOGY0Li5k
ZDhjZGEyNDNjZDliZmEwMWMzOWUzMDRlNzRlOGYzZGNmZWY0MDVmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcApAQCAtMjAzNSw3
ICsyMDM1LDcgQEAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0
aW9uOjpnZXRQcm9wZXJ0eUNTU1ZhbHVlKENTU1Byb3BlcnQKICAgICAgICAgICAgICAgICAvLyBS
ZW5kZXJCb3ggZ2l2ZXMgYSBtYXJnaW5SaWdodCgpIHRoYXQgaXMgdGhlIGRpc3RhbmNlIGJldHdl
ZW4gdGhlIHJpZ2h0LWVkZ2Ugb2YgdGhlIGNoaWxkIGJveAogICAgICAgICAgICAgICAgIC8vIGFu
ZCB0aGUgcmlnaHQtZWRnZSBvZiB0aGUgY29udGFpbmluZyBib3gsIHdoZW4gZGlzcGxheSA9PSBC
TE9DSy4gTGV0J3MgY2FsY3VsYXRlIHRoZSBhYnNvbHV0ZQogICAgICAgICAgICAgICAgIC8vIHZh
bHVlIG9mIHRoZSBzcGVjaWZpZWQgbWFyZ2luLXJpZ2h0ICUgaW5zdGVhZCBvZiByZWx5aW5nIG9u
IFJlbmRlckJveCdzIG1hcmdpblJpZ2h0KCkgdmFsdWUuCi0gICAgICAgICAgICAgICAgdmFsdWUg
PSBtaW5pbXVtVmFsdWVGb3JMZW5ndGgobWFyZ2luUmlnaHQsIHRvUmVuZGVyQm94KHJlbmRlcmVy
KS0+Y29udGFpbmluZ0Jsb2NrTG9naWNhbFdpZHRoRm9yQ29udGVudCgpLCBtX25vZGUtPmRvY3Vt
ZW50KCktPnJlbmRlclZpZXcoKSk7CisgICAgICAgICAgICAgICAgdmFsdWUgPSByZW5kZXJlci0+
bWluaW11bVZhbHVlRm9yTGVuZ3RoKG1hcmdpblJpZ2h0LCB0b1JlbmRlckJveChyZW5kZXJlcikt
PmNvbnRhaW5pbmdCbG9ja0xvZ2ljYWxXaWR0aEZvckNvbnRlbnQoKSk7CiAgICAgICAgICAgICBl
bHNlCiAgICAgICAgICAgICAgICAgdmFsdWUgPSB0b1JlbmRlckJveChyZW5kZXJlciktPm1hcmdp
blJpZ2h0KCk7CiAgICAgICAgICAgICByZXR1cm4gem9vbUFkanVzdGVkUGl4ZWxWYWx1ZSh2YWx1
ZSwgc3R5bGUuZ2V0KCkpOwpAQCAtMjQ3Miw5ICsyNDcyLDggQEAgUGFzc1JlZlB0cjxDU1NWYWx1
ZT4gQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjpnZXRQcm9wZXJ0eUNTU1ZhbHVlKENTU1By
b3BlcnQKICAgICAgICAgICAgICAgICBpZiAocmVuZGVyZXItPmlzQm94KCkpCiAgICAgICAgICAg
ICAgICAgICAgIGJveCA9IHRvUmVuZGVyQm94KHJlbmRlcmVyKS0+Ym9yZGVyQm94UmVjdCgpOwog
Ci0gICAgICAgICAgICAgICAgUmVuZGVyVmlldyogcmVuZGVyVmlldyA9IG1fbm9kZS0+ZG9jdW1l
bnQoKS0+cmVuZGVyVmlldygpOwotICAgICAgICAgICAgICAgIGxpc3QtPmFwcGVuZCh6b29tQWRq
dXN0ZWRQaXhlbFZhbHVlKG1pbmltdW1WYWx1ZUZvckxlbmd0aChzdHlsZS0+cGVyc3BlY3RpdmVP
cmlnaW5YKCksIGJveC53aWR0aCgpLCByZW5kZXJWaWV3KSwgc3R5bGUuZ2V0KCkpKTsKLSAgICAg
ICAgICAgICAgICBsaXN0LT5hcHBlbmQoem9vbUFkanVzdGVkUGl4ZWxWYWx1ZShtaW5pbXVtVmFs
dWVGb3JMZW5ndGgoc3R5bGUtPnBlcnNwZWN0aXZlT3JpZ2luWSgpLCBib3guaGVpZ2h0KCksIHJl
bmRlclZpZXcpLCBzdHlsZS5nZXQoKSkpOworICAgICAgICAgICAgICAgIGxpc3QtPmFwcGVuZCh6
b29tQWRqdXN0ZWRQaXhlbFZhbHVlKHJlbmRlcmVyLT5taW5pbXVtVmFsdWVGb3JMZW5ndGgoc3R5
bGUtPnBlcnNwZWN0aXZlT3JpZ2luWCgpLCBib3gud2lkdGgoKSksIHN0eWxlLmdldCgpKSk7Cisg
ICAgICAgICAgICAgICAgbGlzdC0+YXBwZW5kKHpvb21BZGp1c3RlZFBpeGVsVmFsdWUocmVuZGVy
ZXItPm1pbmltdW1WYWx1ZUZvckxlbmd0aChzdHlsZS0+cGVyc3BlY3RpdmVPcmlnaW5ZKCksIGJv
eC5oZWlnaHQoKSksIHN0eWxlLmdldCgpKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBl
bHNlIHsKICAgICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQoem9vbUFkanVzdGVkUGl4ZWxWYWx1
ZUZvckxlbmd0aChzdHlsZS0+cGVyc3BlY3RpdmVPcmlnaW5YKCksIHN0eWxlLmdldCgpKSk7CkBA
IC0yNTIyLDkgKzI1MjEsOCBAQCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBDU1NDb21wdXRlZFN0eWxl
RGVjbGFyYXRpb246OmdldFByb3BlcnR5Q1NTVmFsdWUoQ1NTUHJvcGVydAogICAgICAgICAgICAg
ICAgIGlmIChyZW5kZXJlci0+aXNCb3goKSkKICAgICAgICAgICAgICAgICAgICAgYm94ID0gdG9S
ZW5kZXJCb3gocmVuZGVyZXIpLT5ib3JkZXJCb3hSZWN0KCk7CiAKLSAgICAgICAgICAgICAgICBS
ZW5kZXJWaWV3KiByZW5kZXJWaWV3ID0gbV9ub2RlLT5kb2N1bWVudCgpLT5yZW5kZXJWaWV3KCk7
Ci0gICAgICAgICAgICAgICAgbGlzdC0+YXBwZW5kKHpvb21BZGp1c3RlZFBpeGVsVmFsdWUobWlu
aW11bVZhbHVlRm9yTGVuZ3RoKHN0eWxlLT50cmFuc2Zvcm1PcmlnaW5YKCksIGJveC53aWR0aCgp
LCByZW5kZXJWaWV3KSwgc3R5bGUuZ2V0KCkpKTsKLSAgICAgICAgICAgICAgICBsaXN0LT5hcHBl
bmQoem9vbUFkanVzdGVkUGl4ZWxWYWx1ZShtaW5pbXVtVmFsdWVGb3JMZW5ndGgoc3R5bGUtPnRy
YW5zZm9ybU9yaWdpblkoKSwgYm94LmhlaWdodCgpLCByZW5kZXJWaWV3KSwgc3R5bGUuZ2V0KCkp
KTsKKyAgICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQoem9vbUFkanVzdGVkUGl4ZWxWYWx1ZShy
ZW5kZXJlci0+bWluaW11bVZhbHVlRm9yTGVuZ3RoKHN0eWxlLT50cmFuc2Zvcm1PcmlnaW5YKCks
IGJveC53aWR0aCgpKSwgc3R5bGUuZ2V0KCkpKTsKKyAgICAgICAgICAgICAgICBsaXN0LT5hcHBl
bmQoem9vbUFkanVzdGVkUGl4ZWxWYWx1ZShyZW5kZXJlci0+bWluaW11bVZhbHVlRm9yTGVuZ3Ro
KHN0eWxlLT50cmFuc2Zvcm1PcmlnaW5ZKCksIGJveC5oZWlnaHQoKSksIHN0eWxlLmdldCgpKSk7
CiAgICAgICAgICAgICAgICAgaWYgKHN0eWxlLT50cmFuc2Zvcm1PcmlnaW5aKCkgIT0gMCkKICAg
ICAgICAgICAgICAgICAgICAgbGlzdC0+YXBwZW5kKHpvb21BZGp1c3RlZFBpeGVsVmFsdWUoc3R5
bGUtPnRyYW5zZm9ybU9yaWdpblooKSwgc3R5bGUuZ2V0KCkpKTsKICAgICAgICAgICAgIH0gZWxz
ZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCBjNTg0N2FmZDgyMGEyMTdkNDgxMTQwOTk5
MDQwYWJlOTdiMGY3ZWU2Li42ODkyM2JmYjJlNjAwYzU3MzI5NzIxYWMzNTQ3MjhlMzk3ZjFiNjlk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTE5NjcsNyArMTk2Nyw2IEBAIGJvb2wgRG9j
dW1lbnQ6OmlzUGFnZUJveFZpc2libGUoaW50IHBhZ2VJbmRleCkKIHZvaWQgRG9jdW1lbnQ6OnBh
Z2VTaXplQW5kTWFyZ2luc0luUGl4ZWxzKGludCBwYWdlSW5kZXgsIEludFNpemUmIHBhZ2VTaXpl
LCBpbnQmIG1hcmdpblRvcCwgaW50JiBtYXJnaW5SaWdodCwgaW50JiBtYXJnaW5Cb3R0b20sIGlu
dCYgbWFyZ2luTGVmdCkKIHsKICAgICBSZWZQdHI8UmVuZGVyU3R5bGU+IHN0eWxlID0gc3R5bGVG
b3JQYWdlKHBhZ2VJbmRleCk7Ci0gICAgUmVuZGVyVmlldyogdmlldyA9IHJlbmRlclZpZXcoKTsK
IAogICAgIGludCB3aWR0aCA9IHBhZ2VTaXplLndpZHRoKCk7CiAgICAgaW50IGhlaWdodCA9IHBh
Z2VTaXplLmhlaWdodCgpOwpAQCAtMTk4Niw4ICsxOTg1LDggQEAgdm9pZCBEb2N1bWVudDo6cGFn
ZVNpemVBbmRNYXJnaW5zSW5QaXhlbHMoaW50IHBhZ2VJbmRleCwgSW50U2l6ZSYgcGFnZVNpemUs
IGludCYKICAgICAgICAgTGVuZ3RoU2l6ZSBzaXplID0gc3R5bGUtPnBhZ2VTaXplKCk7CiAgICAg
ICAgIEFTU0VSVChzaXplLndpZHRoKCkuaXNGaXhlZCgpKTsKICAgICAgICAgQVNTRVJUKHNpemUu
aGVpZ2h0KCkuaXNGaXhlZCgpKTsKLSAgICAgICAgd2lkdGggPSB2YWx1ZUZvckxlbmd0aChzaXpl
LndpZHRoKCksIDAsIHZpZXcpOwotICAgICAgICBoZWlnaHQgPSB2YWx1ZUZvckxlbmd0aChzaXpl
LmhlaWdodCgpLCAwLCB2aWV3KTsKKyAgICAgICAgd2lkdGggPSByZW5kZXJlcigpLT52YWx1ZUZv
ckxlbmd0aChzaXplLndpZHRoKCksIDApOworICAgICAgICBoZWlnaHQgPSByZW5kZXJlcigpLT52
YWx1ZUZvckxlbmd0aChzaXplLmhlaWdodCgpLCAwKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQog
ICAgIGRlZmF1bHQ6CkBAIC0xOTk3LDEwICsxOTk2LDEwIEBAIHZvaWQgRG9jdW1lbnQ6OnBhZ2VT
aXplQW5kTWFyZ2luc0luUGl4ZWxzKGludCBwYWdlSW5kZXgsIEludFNpemUmIHBhZ2VTaXplLCBp
bnQmCiAKICAgICAvLyBUaGUgcGVyY2VudGFnZSBpcyBjYWxjdWxhdGVkIHdpdGggcmVzcGVjdCB0
byB0aGUgd2lkdGggZXZlbiBmb3IgbWFyZ2luIHRvcCBhbmQgYm90dG9tLgogICAgIC8vIGh0dHA6
Ly93d3cudzMub3JnL1RSL0NTUzIvYm94Lmh0bWwjbWFyZ2luLXByb3BlcnRpZXMKLSAgICBtYXJn
aW5Ub3AgPSBzdHlsZS0+bWFyZ2luVG9wKCkuaXNBdXRvKCkgPyBtYXJnaW5Ub3AgOiBpbnRWYWx1
ZUZvckxlbmd0aChzdHlsZS0+bWFyZ2luVG9wKCksIHdpZHRoLCB2aWV3KTsKLSAgICBtYXJnaW5S
aWdodCA9IHN0eWxlLT5tYXJnaW5SaWdodCgpLmlzQXV0bygpID8gbWFyZ2luUmlnaHQgOiBpbnRW
YWx1ZUZvckxlbmd0aChzdHlsZS0+bWFyZ2luUmlnaHQoKSwgd2lkdGgsIHZpZXcpOwotICAgIG1h
cmdpbkJvdHRvbSA9IHN0eWxlLT5tYXJnaW5Cb3R0b20oKS5pc0F1dG8oKSA/IG1hcmdpbkJvdHRv
bSA6IGludFZhbHVlRm9yTGVuZ3RoKHN0eWxlLT5tYXJnaW5Cb3R0b20oKSwgd2lkdGgsIHZpZXcp
OwotICAgIG1hcmdpbkxlZnQgPSBzdHlsZS0+bWFyZ2luTGVmdCgpLmlzQXV0bygpID8gbWFyZ2lu
TGVmdCA6IGludFZhbHVlRm9yTGVuZ3RoKHN0eWxlLT5tYXJnaW5MZWZ0KCksIHdpZHRoLCB2aWV3
KTsKKyAgICBtYXJnaW5Ub3AgPSBzdHlsZS0+bWFyZ2luVG9wKCkuaXNBdXRvKCkgPyBtYXJnaW5U
b3AgOiByZW5kZXJlcigpLT5pbnRWYWx1ZUZvckxlbmd0aChzdHlsZS0+bWFyZ2luVG9wKCksIHdp
ZHRoKTsKKyAgICBtYXJnaW5SaWdodCA9IHN0eWxlLT5tYXJnaW5SaWdodCgpLmlzQXV0bygpID8g
bWFyZ2luUmlnaHQgOiByZW5kZXJlcigpLT5pbnRWYWx1ZUZvckxlbmd0aChzdHlsZS0+bWFyZ2lu
UmlnaHQoKSwgd2lkdGgpOworICAgIG1hcmdpbkJvdHRvbSA9IHN0eWxlLT5tYXJnaW5Cb3R0b20o
KS5pc0F1dG8oKSA/IG1hcmdpbkJvdHRvbSA6IHJlbmRlcmVyKCktPmludFZhbHVlRm9yTGVuZ3Ro
KHN0eWxlLT5tYXJnaW5Cb3R0b20oKSwgd2lkdGgpOworICAgIG1hcmdpbkxlZnQgPSBzdHlsZS0+
bWFyZ2luTGVmdCgpLmlzQXV0bygpID8gbWFyZ2luTGVmdCA6IHJlbmRlcmVyKCktPmludFZhbHVl
Rm9yTGVuZ3RoKHN0eWxlLT5tYXJnaW5MZWZ0KCksIHdpZHRoKTsKIH0KIAogdm9pZCBEb2N1bWVu
dDo6c2V0SXNWaWV3U291cmNlKGJvb2wgaXNWaWV3U291cmNlKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MQXJlYUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MQXJlYUVsZW1lbnQuY3BwCmluZGV4IGJhNDA5MWY5ZTE5OWZmNjNkYTE0MDA2Mjk5Mzk4NTAz
ODYwZTdiMjMuLmIzNTU5ZGVlNTEwMjkxZDRlNDgwNzY2ZGQzNjEyODQ4OTU5MDc2NjAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFyZWFFbGVtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxBcmVhRWxlbWVudC5jcHAKQEAgLTE0NCwzMCArMTQ0LDMwIEBA
IFBhdGggSFRNTEFyZWFFbGVtZW50OjpnZXRSZWdpb24oY29uc3QgTGF5b3V0U2l6ZSYgc2l6ZSkg
Y29uc3QKICAgICB9CiAKICAgICBQYXRoIHBhdGg7Ci0gICAgUmVuZGVyVmlldyogcmVuZGVyVmll
dyA9IGRvY3VtZW50KCktPnJlbmRlclZpZXcoKTsKKyAgICBjb25zdCBSZW5kZXJPYmplY3QqIHJl
bmRlcmVyID0gZG9jdW1lbnQoKS0+cmVuZGVyZXIoKTsKICAgICBzd2l0Y2ggKHNoYXBlKSB7CiAg
ICAgICAgIGNhc2UgUG9seToKICAgICAgICAgICAgIGlmIChtX2Nvb3Jkc0xlbiA+PSA2KSB7CiAg
ICAgICAgICAgICAgICAgaW50IG51bVBvaW50cyA9IG1fY29vcmRzTGVuIC8gMjsKLSAgICAgICAg
ICAgICAgICBwYXRoLm1vdmVUbyhGbG9hdFBvaW50KG1pbmltdW1WYWx1ZUZvckxlbmd0aChtX2Nv
b3Jkc1swXSwgd2lkdGgsIHJlbmRlclZpZXcpLCBtaW5pbXVtVmFsdWVGb3JMZW5ndGgobV9jb29y
ZHNbMV0sIGhlaWdodCwgcmVuZGVyVmlldykpKTsKKyAgICAgICAgICAgICAgICBwYXRoLm1vdmVU
byhGbG9hdFBvaW50KHJlbmRlcmVyLT5taW5pbXVtVmFsdWVGb3JMZW5ndGgobV9jb29yZHNbMF0s
IHdpZHRoKSwgcmVuZGVyZXItPm1pbmltdW1WYWx1ZUZvckxlbmd0aChtX2Nvb3Jkc1sxXSwgaGVp
Z2h0KSkpOwogICAgICAgICAgICAgICAgIGZvciAoaW50IGkgPSAxOyBpIDwgbnVtUG9pbnRzOyAr
K2kpCi0gICAgICAgICAgICAgICAgICAgIHBhdGguYWRkTGluZVRvKEZsb2F0UG9pbnQobWluaW11
bVZhbHVlRm9yTGVuZ3RoKG1fY29vcmRzW2kgKiAyXSwgd2lkdGgsIHJlbmRlclZpZXcpLCBtaW5p
bXVtVmFsdWVGb3JMZW5ndGgobV9jb29yZHNbaSAqIDIgKyAxXSwgaGVpZ2h0LCByZW5kZXJWaWV3
KSkpOworICAgICAgICAgICAgICAgICAgICBwYXRoLmFkZExpbmVUbyhGbG9hdFBvaW50KHJlbmRl
cmVyLT5taW5pbXVtVmFsdWVGb3JMZW5ndGgobV9jb29yZHNbaSAqIDJdLCB3aWR0aCksIHJlbmRl
cmVyLT5taW5pbXVtVmFsdWVGb3JMZW5ndGgobV9jb29yZHNbaSAqIDIgKyAxXSwgaGVpZ2h0KSkp
OwogICAgICAgICAgICAgICAgIHBhdGguY2xvc2VTdWJwYXRoKCk7CiAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDaXJjbGU6CiAgICAgICAgICAgICBpZiAo
bV9jb29yZHNMZW4gPj0gMykgewogICAgICAgICAgICAgICAgIExlbmd0aCByYWRpdXMgPSBtX2Nv
b3Jkc1syXTsKLSAgICAgICAgICAgICAgICBpbnQgciA9IG1pbihtaW5pbXVtVmFsdWVGb3JMZW5n
dGgocmFkaXVzLCB3aWR0aCwgcmVuZGVyVmlldyksIG1pbmltdW1WYWx1ZUZvckxlbmd0aChyYWRp
dXMsIGhlaWdodCwgcmVuZGVyVmlldykpOwotICAgICAgICAgICAgICAgIHBhdGguYWRkRWxsaXBz
ZShGbG9hdFJlY3QobWluaW11bVZhbHVlRm9yTGVuZ3RoKG1fY29vcmRzWzBdLCB3aWR0aCwgcmVu
ZGVyVmlldykgLSByLCBtaW5pbXVtVmFsdWVGb3JMZW5ndGgobV9jb29yZHNbMV0sIGhlaWdodCwg
cmVuZGVyVmlldykgLSByLCAyICogciwgMiAqIHIpKTsKKyAgICAgICAgICAgICAgICBpbnQgciA9
IG1pbihyZW5kZXJlci0+bWluaW11bVZhbHVlRm9yTGVuZ3RoKHJhZGl1cywgd2lkdGgpLCByZW5k
ZXJlci0+bWluaW11bVZhbHVlRm9yTGVuZ3RoKHJhZGl1cywgaGVpZ2h0KSk7CisgICAgICAgICAg
ICAgICAgcGF0aC5hZGRFbGxpcHNlKEZsb2F0UmVjdChyZW5kZXJlci0+bWluaW11bVZhbHVlRm9y
TGVuZ3RoKG1fY29vcmRzWzBdLCB3aWR0aCkgLSByLCByZW5kZXJlci0+bWluaW11bVZhbHVlRm9y
TGVuZ3RoKG1fY29vcmRzWzFdLCBoZWlnaHQpIC0gciwgMiAqIHIsIDIgKiByKSk7CiAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBSZWN0OgogICAgICAgICAg
ICAgaWYgKG1fY29vcmRzTGVuID49IDQpIHsKLSAgICAgICAgICAgICAgICBpbnQgeDAgPSBtaW5p
bXVtVmFsdWVGb3JMZW5ndGgobV9jb29yZHNbMF0sIHdpZHRoLCByZW5kZXJWaWV3KTsKLSAgICAg
ICAgICAgICAgICBpbnQgeTAgPSBtaW5pbXVtVmFsdWVGb3JMZW5ndGgobV9jb29yZHNbMV0sIGhl
aWdodCwgcmVuZGVyVmlldyk7Ci0gICAgICAgICAgICAgICAgaW50IHgxID0gbWluaW11bVZhbHVl
Rm9yTGVuZ3RoKG1fY29vcmRzWzJdLCB3aWR0aCwgcmVuZGVyVmlldyk7Ci0gICAgICAgICAgICAg
ICAgaW50IHkxID0gbWluaW11bVZhbHVlRm9yTGVuZ3RoKG1fY29vcmRzWzNdLCBoZWlnaHQsIHJl
bmRlclZpZXcpOworICAgICAgICAgICAgICAgIGludCB4MCA9IHJlbmRlcmVyLT5taW5pbXVtVmFs
dWVGb3JMZW5ndGgobV9jb29yZHNbMF0sIHdpZHRoKTsKKyAgICAgICAgICAgICAgICBpbnQgeTAg
PSByZW5kZXJlci0+bWluaW11bVZhbHVlRm9yTGVuZ3RoKG1fY29vcmRzWzFdLCBoZWlnaHQpOwor
ICAgICAgICAgICAgICAgIGludCB4MSA9IHJlbmRlcmVyLT5taW5pbXVtVmFsdWVGb3JMZW5ndGgo
bV9jb29yZHNbMl0sIHdpZHRoKTsKKyAgICAgICAgICAgICAgICBpbnQgeTEgPSByZW5kZXJlci0+
bWluaW11bVZhbHVlRm9yTGVuZ3RoKG1fY29vcmRzWzNdLCBoZWlnaHQpOwogICAgICAgICAgICAg
ICAgIHBhdGguYWRkUmVjdChGbG9hdFJlY3QoeDAsIHkwLCB4MSAtIHgwLCB5MSAtIHkwKSk7CiAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9GaWx0ZXJFZmZlY3RSZW5kZXJlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvRmlsdGVyRWZmZWN0UmVuZGVyZXIuY3BwCmluZGV4IGFhNDYwYjg1YTAwOTZkY2Zj
YTNlNzYxNjk2Zjg1YzMxNmQ2YzBlMmYuLjMwNmJkM2Y5NDMwMzBjOWRjY2QyZTE0ZGEwNDZhMGI1
MDgzOWQ3ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9GaWx0ZXJFZmZl
Y3RSZW5kZXJlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ZpbHRlckVmZmVj
dFJlbmRlcmVyLmNwcApAQCAtMzMxLDcgKzMzMSw3IEBAIGJvb2wgRmlsdGVyRWZmZWN0UmVuZGVy
ZXI6OmJ1aWxkKFJlbmRlck9iamVjdCogcmVuZGVyZXIsIGNvbnN0IEZpbHRlck9wZXJhdGlvbnMm
CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OkJMVVI6IHsKICAgICAg
ICAgICAgIEJsdXJGaWx0ZXJPcGVyYXRpb24qIGJsdXJPcGVyYXRpb24gPSBzdGF0aWNfY2FzdDxC
bHVyRmlsdGVyT3BlcmF0aW9uKj4oZmlsdGVyT3BlcmF0aW9uKTsKLSAgICAgICAgICAgIGZsb2F0
IHN0ZERldmlhdGlvbiA9IGZsb2F0VmFsdWVGb3JMZW5ndGgoYmx1ck9wZXJhdGlvbi0+c3RkRGV2
aWF0aW9uKCksIDApOworICAgICAgICAgICAgZmxvYXQgc3RkRGV2aWF0aW9uID0gcmVuZGVyZXIt
PmZsb2F0VmFsdWVGb3JMZW5ndGgoYmx1ck9wZXJhdGlvbi0+c3RkRGV2aWF0aW9uKCksIDApOwog
ICAgICAgICAgICAgZWZmZWN0ID0gRkVHYXVzc2lhbkJsdXI6OmNyZWF0ZSh0aGlzLCBzdGREZXZp
YXRpb24sIHN0ZERldmlhdGlvbik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKaW5kZXggMzczYjkxZTRlMzY3NzRj
YmI0MjgzMTYxMDA3NDU1YTFhZGEyMjI4Yy4uOTJmZmQwOWY0OGVkMTE3OTY5ODJmOWQ5ODU3YmMx
OTllY2MzZDBkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJs
b2NrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCkBA
IC00MjgxLDEyICs0MjgxLDkgQEAgaW5saW5lIHZvaWQgUmVuZGVyQmxvY2s6OkZsb2F0SW50ZXJ2
YWxTZWFyY2hBZGFwdGVyPEZsb2F0VHlwZVZhbHVlPjo6Y29sbGVjdElmTmUKIExheW91dFVuaXQg
UmVuZGVyQmxvY2s6OnRleHRJbmRlbnRPZmZzZXQoKSBjb25zdAogewogICAgIExheW91dFVuaXQg
Y3cgPSAwOwotICAgIFJlbmRlclZpZXcqIHJlbmRlclZpZXcgPSAwOwogICAgIGlmIChzdHlsZSgp
LT50ZXh0SW5kZW50KCkuaXNQZXJjZW50KCkpCiAgICAgICAgIGN3ID0gY29udGFpbmluZ0Jsb2Nr
KCktPmF2YWlsYWJsZUxvZ2ljYWxXaWR0aCgpOwotICAgIGVsc2UgaWYgKHN0eWxlKCktPnRleHRJ
bmRlbnQoKS5pc1ZpZXdwb3J0UGVyY2VudGFnZSgpKQotICAgICAgICByZW5kZXJWaWV3ID0gdmll
dygpOwotICAgIHJldHVybiBtaW5pbXVtVmFsdWVGb3JMZW5ndGgoc3R5bGUoKS0+dGV4dEluZGVu
dCgpLCBjdywgcmVuZGVyVmlldyk7CisgICAgcmV0dXJuIG1pbmltdW1WYWx1ZUZvckxlbmd0aChz
dHlsZSgpLT50ZXh0SW5kZW50KCksIGN3KTsKIH0KIAogTGF5b3V0VW5pdCBSZW5kZXJCbG9jazo6
bG9naWNhbExlZnRPZmZzZXRGb3JDb250ZW50KFJlbmRlclJlZ2lvbiogcmVnaW9uLCBMYXlvdXRV
bml0IG9mZnNldEZyb21Mb2dpY2FsVG9wT2ZGaXJzdFBhZ2UpIGNvbnN0CkBAIC01OTU2LDcgKzU5
NTMsNyBAQCB2b2lkIFJlbmRlckJsb2NrOjpjb21wdXRlSW5saW5lUHJlZmVycmVkTG9naWNhbFdp
ZHRocygpCiAgICAgLy8gU2lnbmFscyB0aGUgdGV4dCBpbmRlbnQgd2FzIG1vcmUgbmVnYXRpdmUg
dGhhbiB0aGUgbWluIHByZWZlcnJlZCB3aWR0aAogICAgIGJvb2wgaGFzUmVtYWluaW5nTmVnYXRp
dmVUZXh0SW5kZW50ID0gZmFsc2U7CiAKLSAgICBMYXlvdXRVbml0IHRleHRJbmRlbnQgPSBtaW5p
bXVtVmFsdWVGb3JMZW5ndGgoc3R5bGVUb1VzZS0+dGV4dEluZGVudCgpLCBjdywgdmlldygpKTsK
KyAgICBMYXlvdXRVbml0IHRleHRJbmRlbnQgPSBtaW5pbXVtVmFsdWVGb3JMZW5ndGgoc3R5bGVU
b1VzZS0+dGV4dEluZGVudCgpLCBjdyk7CiAgICAgUmVuZGVyT2JqZWN0KiBwcmV2RmxvYXQgPSAw
OwogICAgIGJvb2wgaXNQcmV2Q2hpbGRJbmxpbmVGbG93ID0gZmFsc2U7CiAgICAgYm9vbCBzaG91
bGRCcmVha0xpbmVBZnRlclRleHQgPSBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckJveC5jcHAKaW5kZXggOGI1YjZmZDQzOWZjY2M1Mjc1MjkzOGM5MWE3M2NlMWVjY2E3ODI2Ni4u
MWMyOTcwNTRmMDZkMTUyYWExYjhjNDRmMTZkOTI0ODkzNTZhYWJiNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJveC5jcHAKQEAgLTU3NiwxMCArNTc2LDkgQEAgaW50IFJlbmRlckJv
eDo6cmVmbGVjdGlvbk9mZnNldCgpIGNvbnN0CiB7CiAgICAgaWYgKCFzdHlsZSgpLT5ib3hSZWZs
ZWN0KCkpCiAgICAgICAgIHJldHVybiAwOwotICAgIFJlbmRlclZpZXcqIHJlbmRlclZpZXcgPSB2
aWV3KCk7CiAgICAgaWYgKHN0eWxlKCktPmJveFJlZmxlY3QoKS0+ZGlyZWN0aW9uKCkgPT0gUmVm
bGVjdGlvbkxlZnQgfHwgc3R5bGUoKS0+Ym94UmVmbGVjdCgpLT5kaXJlY3Rpb24oKSA9PSBSZWZs
ZWN0aW9uUmlnaHQpCi0gICAgICAgIHJldHVybiB2YWx1ZUZvckxlbmd0aChzdHlsZSgpLT5ib3hS
ZWZsZWN0KCktPm9mZnNldCgpLCBib3JkZXJCb3hSZWN0KCkud2lkdGgoKSwgcmVuZGVyVmlldyk7
Ci0gICAgcmV0dXJuIHZhbHVlRm9yTGVuZ3RoKHN0eWxlKCktPmJveFJlZmxlY3QoKS0+b2Zmc2V0
KCksIGJvcmRlckJveFJlY3QoKS5oZWlnaHQoKSwgcmVuZGVyVmlldyk7CisgICAgICAgIHJldHVy
biB2YWx1ZUZvckxlbmd0aChzdHlsZSgpLT5ib3hSZWZsZWN0KCktPm9mZnNldCgpLCBib3JkZXJC
b3hSZWN0KCkud2lkdGgoKSk7CisgICAgcmV0dXJuIHZhbHVlRm9yTGVuZ3RoKHN0eWxlKCktPmJv
eFJlZmxlY3QoKS0+b2Zmc2V0KCksIGJvcmRlckJveFJlY3QoKS5oZWlnaHQoKSk7CiB9CiAKIExh
eW91dFJlY3QgUmVuZGVyQm94OjpyZWZsZWN0ZWRSZWN0KGNvbnN0IExheW91dFJlY3QmIHIpIGNv
bnN0CkBAIC0xNDU3LDcgKzE0NTYsNyBAQCBib29sIFJlbmRlckJveDo6cHVzaENvbnRlbnRzQ2xp
cChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdQogICAgIElu
dFJlY3QgY2xpcFJlY3QgPSBwaXhlbFNuYXBwZWRJbnRSZWN0KGlzQ29udHJvbENsaXAgPyBjb250
cm9sQ2xpcFJlY3QoYWNjdW11bGF0ZWRPZmZzZXQpIDogb3ZlcmZsb3dDbGlwUmVjdChhY2N1bXVs
YXRlZE9mZnNldCwgcGFpbnRJbmZvLnJlbmRlclJlZ2lvbikpOwogICAgIHBhaW50SW5mby5jb250
ZXh0LT5zYXZlKCk7CiAgICAgaWYgKHN0eWxlKCktPmhhc0JvcmRlclJhZGl1cygpKQotICAgICAg
ICBwYWludEluZm8uY29udGV4dC0+Y2xpcFJvdW5kZWRSZWN0KHN0eWxlKCktPmdldFJvdW5kZWRJ
bm5lckJvcmRlckZvcihMYXlvdXRSZWN0KGFjY3VtdWxhdGVkT2Zmc2V0LCBzaXplKCkpKSk7Cisg
ICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5jbGlwUm91bmRlZFJlY3Qoc3R5bGUoKS0+Z2V0Um91
bmRlZElubmVyQm9yZGVyRm9yKExheW91dFJlY3QoYWNjdW11bGF0ZWRPZmZzZXQsIHNpemUoKSks
IHRoaXMpKTsKICAgICBwYWludEluZm8uY29udGV4dC0+Y2xpcChjbGlwUmVjdCk7CiAgICAgcmV0
dXJuIHRydWU7CiB9CkBAIC0xNDk3LDEwICsxNDk2LDkgQEAgTGF5b3V0UmVjdCBSZW5kZXJCb3g6
OmNsaXBSZWN0KGNvbnN0IExheW91dFBvaW50JiBsb2NhdGlvbiwgUmVuZGVyUmVnaW9uKiByZWdp
b24KIHsKICAgICBMYXlvdXRSZWN0IGJvcmRlckJveFJlY3QgPSBib3JkZXJCb3hSZWN0SW5SZWdp
b24ocmVnaW9uKTsKICAgICBMYXlvdXRSZWN0IGNsaXBSZWN0ID0gTGF5b3V0UmVjdChib3JkZXJC
b3hSZWN0LmxvY2F0aW9uKCkgKyBsb2NhdGlvbiwgYm9yZGVyQm94UmVjdC5zaXplKCkpOwotICAg
IFJlbmRlclZpZXcqIHJlbmRlclZpZXcgPSB2aWV3KCk7CiAKICAgICBpZiAoIXN0eWxlKCktPmNs
aXBMZWZ0KCkuaXNBdXRvKCkpIHsKLSAgICAgICAgTGF5b3V0VW5pdCBjID0gdmFsdWVGb3JMZW5n
dGgoc3R5bGUoKS0+Y2xpcExlZnQoKSwgYm9yZGVyQm94UmVjdC53aWR0aCgpLCByZW5kZXJWaWV3
KTsKKyAgICAgICAgTGF5b3V0VW5pdCBjID0gdmFsdWVGb3JMZW5ndGgoc3R5bGUoKS0+Y2xpcExl
ZnQoKSwgYm9yZGVyQm94UmVjdC53aWR0aCgpKTsKICAgICAgICAgY2xpcFJlY3QubW92ZShjLCAw
KTsKICAgICAgICAgY2xpcFJlY3QuY29udHJhY3QoYywgMCk7CiAgICAgfQpAQCAtMTUwOSwxNiAr
MTUwNywxNiBAQCBMYXlvdXRSZWN0IFJlbmRlckJveDo6Y2xpcFJlY3QoY29uc3QgTGF5b3V0UG9p
bnQmIGxvY2F0aW9uLCBSZW5kZXJSZWdpb24qIHJlZ2lvbgogICAgIC8vIGZyb20gdGhlIGxlZnQg
YW5kIHRvcCBlZGdlcy4gVGhlcmVmb3JlIGl0J3MgYmV0dGVyIHRvIGF2b2lkIGNvbnN0cmFpbmlu
ZyB0byBzbWFsbGVyIHdpZHRocyBhbmQgaGVpZ2h0cy4KIAogICAgIGlmICghc3R5bGUoKS0+Y2xp
cFJpZ2h0KCkuaXNBdXRvKCkpCi0gICAgICAgIGNsaXBSZWN0LmNvbnRyYWN0KHdpZHRoKCkgLSB2
YWx1ZUZvckxlbmd0aChzdHlsZSgpLT5jbGlwUmlnaHQoKSwgd2lkdGgoKSwgcmVuZGVyVmlldyks
IDApOworICAgICAgICBjbGlwUmVjdC5jb250cmFjdCh3aWR0aCgpIC0gdmFsdWVGb3JMZW5ndGgo
c3R5bGUoKS0+Y2xpcFJpZ2h0KCksIHdpZHRoKCkpLCAwKTsKIAogICAgIGlmICghc3R5bGUoKS0+
Y2xpcFRvcCgpLmlzQXV0bygpKSB7Ci0gICAgICAgIExheW91dFVuaXQgYyA9IHZhbHVlRm9yTGVu
Z3RoKHN0eWxlKCktPmNsaXBUb3AoKSwgYm9yZGVyQm94UmVjdC5oZWlnaHQoKSwgcmVuZGVyVmll
dyk7CisgICAgICAgIExheW91dFVuaXQgYyA9IHZhbHVlRm9yTGVuZ3RoKHN0eWxlKCktPmNsaXBU
b3AoKSwgYm9yZGVyQm94UmVjdC5oZWlnaHQoKSk7CiAgICAgICAgIGNsaXBSZWN0Lm1vdmUoMCwg
Yyk7CiAgICAgICAgIGNsaXBSZWN0LmNvbnRyYWN0KDAsIGMpOwogICAgIH0KIAogICAgIGlmICgh
c3R5bGUoKS0+Y2xpcEJvdHRvbSgpLmlzQXV0bygpKQotICAgICAgICBjbGlwUmVjdC5jb250cmFj
dCgwLCBoZWlnaHQoKSAtIHZhbHVlRm9yTGVuZ3RoKHN0eWxlKCktPmNsaXBCb3R0b20oKSwgaGVp
Z2h0KCksIHJlbmRlclZpZXcpKTsKKyAgICAgICAgY2xpcFJlY3QuY29udHJhY3QoMCwgaGVpZ2h0
KCkgLSB2YWx1ZUZvckxlbmd0aChzdHlsZSgpLT5jbGlwQm90dG9tKCksIGhlaWdodCgpKSk7CiAK
ICAgICByZXR1cm4gY2xpcFJlY3Q7CiB9CkBAIC0yMDQzLDkgKzIwNDEsOCBAQCB2b2lkIFJlbmRl
ckJveDo6Y29tcHV0ZUxvZ2ljYWxXaWR0aEluUmVnaW9uKExvZ2ljYWxFeHRlbnRDb21wdXRlZFZh
bHVlcyYgY29tcHV0ZQogICAgIAogICAgIGlmIChpc0lubGluZSgpICYmICFpc0lubGluZUJsb2Nr
T3JJbmxpbmVUYWJsZSgpKSB7CiAgICAgICAgIC8vIGp1c3QgY2FsY3VsYXRlIG1hcmdpbnMKLSAg
ICAgICAgUmVuZGVyVmlldyogcmVuZGVyVmlldyA9IHZpZXcoKTsKLSAgICAgICAgY29tcHV0ZWRW
YWx1ZXMubV9tYXJnaW5zLm1fc3RhcnQgPSBtaW5pbXVtVmFsdWVGb3JMZW5ndGgoc3R5bGVUb1Vz
ZS0+bWFyZ2luU3RhcnQoKSwgY29udGFpbmVyTG9naWNhbFdpZHRoLCByZW5kZXJWaWV3KTsKLSAg
ICAgICAgY29tcHV0ZWRWYWx1ZXMubV9tYXJnaW5zLm1fZW5kID0gbWluaW11bVZhbHVlRm9yTGVu
Z3RoKHN0eWxlVG9Vc2UtPm1hcmdpbkVuZCgpLCBjb250YWluZXJMb2dpY2FsV2lkdGgsIHJlbmRl
clZpZXcpOworICAgICAgICBjb21wdXRlZFZhbHVlcy5tX21hcmdpbnMubV9zdGFydCA9IG1pbmlt
dW1WYWx1ZUZvckxlbmd0aChzdHlsZVRvVXNlLT5tYXJnaW5TdGFydCgpLCBjb250YWluZXJMb2dp
Y2FsV2lkdGgpOworICAgICAgICBjb21wdXRlZFZhbHVlcy5tX21hcmdpbnMubV9lbmQgPSBtaW5p
bXVtVmFsdWVGb3JMZW5ndGgoc3R5bGVUb1VzZS0+bWFyZ2luRW5kKCksIGNvbnRhaW5lckxvZ2lj
YWxXaWR0aCk7CiAgICAgICAgIGlmICh0cmVhdEFzUmVwbGFjZWQpCiAgICAgICAgICAgICBjb21w
dXRlZFZhbHVlcy5tX2V4dGVudCA9IG1heDxMYXlvdXRVbml0PihmbG9hdFZhbHVlRm9yTGVuZ3Ro
KGxvZ2ljYWxXaWR0aExlbmd0aCwgMCkgKyBib3JkZXJBbmRQYWRkaW5nTG9naWNhbFdpZHRoKCks
IG1pblByZWZlcnJlZExvZ2ljYWxXaWR0aCgpKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMjA2NCw5
ICsyMDYxLDggQEAgdm9pZCBSZW5kZXJCb3g6OmNvbXB1dGVMb2dpY2FsV2lkdGhJblJlZ2lvbihM
b2dpY2FsRXh0ZW50Q29tcHV0ZWRWYWx1ZXMmIGNvbXB1dGUKIAogICAgIC8vIE1hcmdpbiBjYWxj
dWxhdGlvbnMuCiAgICAgaWYgKGhhc1BlcnBlbmRpY3VsYXJDb250YWluaW5nQmxvY2sgfHwgaXNG
bG9hdGluZygpIHx8IGlzSW5saW5lKCkpIHsKLSAgICAgICAgUmVuZGVyVmlldyogcmVuZGVyVmll
dyA9IHZpZXcoKTsKLSAgICAgICAgY29tcHV0ZWRWYWx1ZXMubV9tYXJnaW5zLm1fc3RhcnQgPSBt
aW5pbXVtVmFsdWVGb3JMZW5ndGgoc3R5bGVUb1VzZS0+bWFyZ2luU3RhcnQoKSwgY29udGFpbmVy
TG9naWNhbFdpZHRoLCByZW5kZXJWaWV3KTsKLSAgICAgICAgY29tcHV0ZWRWYWx1ZXMubV9tYXJn
aW5zLm1fZW5kID0gbWluaW11bVZhbHVlRm9yTGVuZ3RoKHN0eWxlVG9Vc2UtPm1hcmdpbkVuZCgp
LCBjb250YWluZXJMb2dpY2FsV2lkdGgsIHJlbmRlclZpZXcpOworICAgICAgICBjb21wdXRlZFZh
bHVlcy5tX21hcmdpbnMubV9zdGFydCA9IG1pbmltdW1WYWx1ZUZvckxlbmd0aChzdHlsZVRvVXNl
LT5tYXJnaW5TdGFydCgpLCBjb250YWluZXJMb2dpY2FsV2lkdGgpOworICAgICAgICBjb21wdXRl
ZFZhbHVlcy5tX21hcmdpbnMubV9lbmQgPSBtaW5pbXVtVmFsdWVGb3JMZW5ndGgoc3R5bGVUb1Vz
ZS0+bWFyZ2luRW5kKCksIGNvbnRhaW5lckxvZ2ljYWxXaWR0aCk7CiAgICAgfSBlbHNlIHsKICAg
ICAgICAgTGF5b3V0VW5pdCBjb250YWluZXJMb2dpY2FsV2lkdGhGb3JBdXRvTWFyZ2lucyA9IGNv
bnRhaW5lckxvZ2ljYWxXaWR0aDsKICAgICAgICAgaWYgKGF2b2lkc0Zsb2F0cygpICYmIGNiLT5j
b250YWluc0Zsb2F0cygpKQpAQCAtMjA5Nyw5ICsyMDkzLDggQEAgTGF5b3V0VW5pdCBSZW5kZXJC
b3g6OmZpbGxBdmFpbGFibGVNZWFzdXJlKExheW91dFVuaXQgYXZhaWxhYmxlTG9naWNhbFdpZHRo
KSBjb24KIAogTGF5b3V0VW5pdCBSZW5kZXJCb3g6OmZpbGxBdmFpbGFibGVNZWFzdXJlKExheW91
dFVuaXQgYXZhaWxhYmxlTG9naWNhbFdpZHRoLCBMYXlvdXRVbml0JiBtYXJnaW5TdGFydCwgTGF5
b3V0VW5pdCYgbWFyZ2luRW5kKSBjb25zdAogewotICAgIFJlbmRlclZpZXcqIHJlbmRlclZpZXcg
PSB2aWV3KCk7Ci0gICAgbWFyZ2luU3RhcnQgPSBtaW5pbXVtVmFsdWVGb3JMZW5ndGgoc3R5bGUo
KS0+bWFyZ2luU3RhcnQoKSwgYXZhaWxhYmxlTG9naWNhbFdpZHRoLCByZW5kZXJWaWV3KTsKLSAg
ICBtYXJnaW5FbmQgPSBtaW5pbXVtVmFsdWVGb3JMZW5ndGgoc3R5bGUoKS0+bWFyZ2luRW5kKCks
IGF2YWlsYWJsZUxvZ2ljYWxXaWR0aCwgcmVuZGVyVmlldyk7CisgICAgbWFyZ2luU3RhcnQgPSBt
aW5pbXVtVmFsdWVGb3JMZW5ndGgoc3R5bGUoKS0+bWFyZ2luU3RhcnQoKSwgYXZhaWxhYmxlTG9n
aWNhbFdpZHRoKTsKKyAgICBtYXJnaW5FbmQgPSBtaW5pbXVtVmFsdWVGb3JMZW5ndGgoc3R5bGUo
KS0+bWFyZ2luRW5kKCksIGF2YWlsYWJsZUxvZ2ljYWxXaWR0aCk7CiAgICAgcmV0dXJuIGF2YWls
YWJsZUxvZ2ljYWxXaWR0aCAtIG1hcmdpblN0YXJ0IC0gbWFyZ2luRW5kOwogfQogCkBAIC0yMTQ3
LDcgKzIxNDIsNyBAQCBMYXlvdXRVbml0IFJlbmRlckJveDo6Y29tcHV0ZUxvZ2ljYWxXaWR0aElu
UmVnaW9uVXNpbmcoU2l6ZVR5cGUgd2lkdGhUeXBlLCBMYXlvdQogICAgIAogICAgIGlmICghbG9n
aWNhbFdpZHRoLmlzSW50cmluc2ljT3JBdXRvKCkpIHsKICAgICAgICAgLy8gRklYTUU6IElmIHRo
ZSBjb250YWluaW5nIGJsb2NrIGZsb3cgaXMgcGVycGVuZGljdWxhciB0byBvdXIgZGlyZWN0aW9u
IHdlIG5lZWQgdG8gdXNlIHRoZSBhdmFpbGFibGUgbG9naWNhbCBoZWlnaHQgaW5zdGVhZC4KLSAg
ICAgICAgcmV0dXJuIGFkanVzdEJvcmRlckJveExvZ2ljYWxXaWR0aEZvckJveFNpemluZyh2YWx1
ZUZvckxlbmd0aChsb2dpY2FsV2lkdGgsIGF2YWlsYWJsZUxvZ2ljYWxXaWR0aCwgdmlldygpKSk7
CisgICAgICAgIHJldHVybiBhZGp1c3RCb3JkZXJCb3hMb2dpY2FsV2lkdGhGb3JCb3hTaXppbmco
dmFsdWVGb3JMZW5ndGgobG9naWNhbFdpZHRoLCBhdmFpbGFibGVMb2dpY2FsV2lkdGgpKTsKICAg
ICB9CiAKICAgICBpZiAobG9naWNhbFdpZHRoLmlzSW50cmluc2ljKCkpCkBAIC0yMjQzLDEyICsy
MjM4LDExIEBAIHZvaWQgUmVuZGVyQm94Ojpjb21wdXRlSW5saW5lRGlyZWN0aW9uTWFyZ2lucyhS
ZW5kZXJCbG9jayogY29udGFpbmluZ0Jsb2NrLCBMYXlvCiAgICAgY29uc3QgUmVuZGVyU3R5bGUq
IGNvbnRhaW5pbmdCbG9ja1N0eWxlID0gY29udGFpbmluZ0Jsb2NrLT5zdHlsZSgpOwogICAgIExl
bmd0aCBtYXJnaW5TdGFydExlbmd0aCA9IHN0eWxlKCktPm1hcmdpblN0YXJ0VXNpbmcoY29udGFp
bmluZ0Jsb2NrU3R5bGUpOwogICAgIExlbmd0aCBtYXJnaW5FbmRMZW5ndGggPSBzdHlsZSgpLT5t
YXJnaW5FbmRVc2luZyhjb250YWluaW5nQmxvY2tTdHlsZSk7Ci0gICAgUmVuZGVyVmlldyogcmVu
ZGVyVmlldyA9IHZpZXcoKTsKIAogICAgIGlmIChpc0Zsb2F0aW5nKCkgfHwgaXNJbmxpbmUoKSkg
ewogICAgICAgICAvLyBJbmxpbmUgYmxvY2tzL3RhYmxlcyBhbmQgZmxvYXRzIGRvbid0IGhhdmUg
dGhlaXIgbWFyZ2lucyBpbmNyZWFzZWQuCi0gICAgICAgIG1hcmdpblN0YXJ0ID0gbWluaW11bVZh
bHVlRm9yTGVuZ3RoKG1hcmdpblN0YXJ0TGVuZ3RoLCBjb250YWluZXJXaWR0aCwgcmVuZGVyVmll
dyk7Ci0gICAgICAgIG1hcmdpbkVuZCA9IG1pbmltdW1WYWx1ZUZvckxlbmd0aChtYXJnaW5FbmRM
ZW5ndGgsIGNvbnRhaW5lcldpZHRoLCByZW5kZXJWaWV3KTsKKyAgICAgICAgbWFyZ2luU3RhcnQg
PSBtaW5pbXVtVmFsdWVGb3JMZW5ndGgobWFyZ2luU3RhcnRMZW5ndGgsIGNvbnRhaW5lcldpZHRo
KTsKKyAgICAgICAgbWFyZ2luRW5kID0gbWluaW11bVZhbHVlRm9yTGVuZ3RoKG1hcmdpbkVuZExl
bmd0aCwgY29udGFpbmVyV2lkdGgpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0yMjU2
LDggKzIyNTAsOCBAQCB2b2lkIFJlbmRlckJveDo6Y29tcHV0ZUlubGluZURpcmVjdGlvbk1hcmdp
bnMoUmVuZGVyQmxvY2sqIGNvbnRhaW5pbmdCbG9jaywgTGF5bwogICAgIGlmICgobWFyZ2luU3Rh
cnRMZW5ndGguaXNBdXRvKCkgJiYgbWFyZ2luRW5kTGVuZ3RoLmlzQXV0bygpICYmIGNoaWxkV2lk
dGggPCBjb250YWluZXJXaWR0aCkKICAgICAgICAgfHwgKCFtYXJnaW5TdGFydExlbmd0aC5pc0F1
dG8oKSAmJiAhbWFyZ2luRW5kTGVuZ3RoLmlzQXV0bygpICYmIGNvbnRhaW5pbmdCbG9jay0+c3R5
bGUoKS0+dGV4dEFsaWduKCkgPT0gV0VCS0lUX0NFTlRFUikpIHsKICAgICAgICAgLy8gT3RoZXIg
YnJvd3NlcnMgY2VudGVyIHRoZSBtYXJnaW4gYm94IGZvciBhbGlnbj1jZW50ZXIgZWxlbWVudHMg
c28gd2UgbWF0Y2ggdGhlbSBoZXJlLgotICAgICAgICBMYXlvdXRVbml0IG1hcmdpblN0YXJ0V2lk
dGggPSBtaW5pbXVtVmFsdWVGb3JMZW5ndGgobWFyZ2luU3RhcnRMZW5ndGgsIGNvbnRhaW5lcldp
ZHRoLCByZW5kZXJWaWV3KTsKLSAgICAgICAgTGF5b3V0VW5pdCBtYXJnaW5FbmRXaWR0aCA9IG1p
bmltdW1WYWx1ZUZvckxlbmd0aChtYXJnaW5FbmRMZW5ndGgsIGNvbnRhaW5lcldpZHRoLCByZW5k
ZXJWaWV3KTsKKyAgICAgICAgTGF5b3V0VW5pdCBtYXJnaW5TdGFydFdpZHRoID0gbWluaW11bVZh
bHVlRm9yTGVuZ3RoKG1hcmdpblN0YXJ0TGVuZ3RoLCBjb250YWluZXJXaWR0aCk7CisgICAgICAg
IExheW91dFVuaXQgbWFyZ2luRW5kV2lkdGggPSBtaW5pbXVtVmFsdWVGb3JMZW5ndGgobWFyZ2lu
RW5kTGVuZ3RoLCBjb250YWluZXJXaWR0aCk7CiAgICAgICAgIExheW91dFVuaXQgY2VudGVyZWRN
YXJnaW5Cb3hTdGFydCA9IG1heDxMYXlvdXRVbml0PigwLCAoY29udGFpbmVyV2lkdGggLSBjaGls
ZFdpZHRoIC0gbWFyZ2luU3RhcnRXaWR0aCAtIG1hcmdpbkVuZFdpZHRoKSAvIDIpOwogICAgICAg
ICBtYXJnaW5TdGFydCA9IGNlbnRlcmVkTWFyZ2luQm94U3RhcnQgKyBtYXJnaW5TdGFydFdpZHRo
OwogICAgICAgICBtYXJnaW5FbmQgPSBjb250YWluZXJXaWR0aCAtIGNoaWxkV2lkdGggLSBtYXJn
aW5TdGFydCArIG1hcmdpbkVuZFdpZHRoOwpAQCAtMjI2Niw3ICsyMjYwLDcgQEAgdm9pZCBSZW5k
ZXJCb3g6OmNvbXB1dGVJbmxpbmVEaXJlY3Rpb25NYXJnaW5zKFJlbmRlckJsb2NrKiBjb250YWlu
aW5nQmxvY2ssIExheW8KICAgICAKICAgICAvLyBDYXNlIFR3bzogVGhlIG9iamVjdCBpcyBiZWlu
ZyBwdXNoZWQgdG8gdGhlIHN0YXJ0IG9mIHRoZSBjb250YWluaW5nIGJsb2NrJ3MgYXZhaWxhYmxl
IGxvZ2ljYWwgd2lkdGguCiAgICAgaWYgKG1hcmdpbkVuZExlbmd0aC5pc0F1dG8oKSAmJiBjaGls
ZFdpZHRoIDwgY29udGFpbmVyV2lkdGgpIHsKLSAgICAgICAgbWFyZ2luU3RhcnQgPSB2YWx1ZUZv
ckxlbmd0aChtYXJnaW5TdGFydExlbmd0aCwgY29udGFpbmVyV2lkdGgsIHJlbmRlclZpZXcpOwor
ICAgICAgICBtYXJnaW5TdGFydCA9IHZhbHVlRm9yTGVuZ3RoKG1hcmdpblN0YXJ0TGVuZ3RoLCBj
b250YWluZXJXaWR0aCk7CiAgICAgICAgIG1hcmdpbkVuZCA9IGNvbnRhaW5lcldpZHRoIC0gY2hp
bGRXaWR0aCAtIG1hcmdpblN0YXJ0OwogICAgICAgICByZXR1cm47CiAgICAgfSAKQEAgLTIyNzUs
MTUgKzIyNjksMTUgQEAgdm9pZCBSZW5kZXJCb3g6OmNvbXB1dGVJbmxpbmVEaXJlY3Rpb25NYXJn
aW5zKFJlbmRlckJsb2NrKiBjb250YWluaW5nQmxvY2ssIExheW8KICAgICBib29sIHB1c2hUb0Vu
ZEZyb21UZXh0QWxpZ24gPSAhbWFyZ2luRW5kTGVuZ3RoLmlzQXV0bygpICYmICgoIWNvbnRhaW5p
bmdCbG9ja1N0eWxlLT5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkgJiYgY29udGFpbmluZ0Jsb2Nr
U3R5bGUtPnRleHRBbGlnbigpID09IFdFQktJVF9MRUZUKQogICAgICAgICB8fCAoY29udGFpbmlu
Z0Jsb2NrU3R5bGUtPmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSAmJiBjb250YWluaW5nQmxvY2tT
dHlsZS0+dGV4dEFsaWduKCkgPT0gV0VCS0lUX1JJR0hUKSk7CiAgICAgaWYgKChtYXJnaW5TdGFy
dExlbmd0aC5pc0F1dG8oKSAmJiBjaGlsZFdpZHRoIDwgY29udGFpbmVyV2lkdGgpIHx8IHB1c2hU
b0VuZEZyb21UZXh0QWxpZ24pIHsKLSAgICAgICAgbWFyZ2luRW5kID0gdmFsdWVGb3JMZW5ndGgo
bWFyZ2luRW5kTGVuZ3RoLCBjb250YWluZXJXaWR0aCwgcmVuZGVyVmlldyk7CisgICAgICAgIG1h
cmdpbkVuZCA9IHZhbHVlRm9yTGVuZ3RoKG1hcmdpbkVuZExlbmd0aCwgY29udGFpbmVyV2lkdGgp
OwogICAgICAgICBtYXJnaW5TdGFydCA9IGNvbnRhaW5lcldpZHRoIC0gY2hpbGRXaWR0aCAtIG1h
cmdpbkVuZDsKICAgICAgICAgcmV0dXJuOwogICAgIH0gCiAgICAgCiAgICAgLy8gQ2FzZSBGb3Vy
OiBFaXRoZXIgbm8gYXV0byBtYXJnaW5zLCBvciBvdXIgd2lkdGggaXMgPj0gdGhlIGNvbnRhaW5l
ciB3aWR0aCAoY3NzMi4xLCAxMC4zLjMpLiAgSW4gdGhhdCBjYXNlCiAgICAgLy8gYXV0byBtYXJn
aW5zIHdpbGwganVzdCB0dXJuIGludG8gMC4KLSAgICBtYXJnaW5TdGFydCA9IG1pbmltdW1WYWx1
ZUZvckxlbmd0aChtYXJnaW5TdGFydExlbmd0aCwgY29udGFpbmVyV2lkdGgsIHJlbmRlclZpZXcp
OwotICAgIG1hcmdpbkVuZCA9IG1pbmltdW1WYWx1ZUZvckxlbmd0aChtYXJnaW5FbmRMZW5ndGgs
IGNvbnRhaW5lcldpZHRoLCByZW5kZXJWaWV3KTsKKyAgICBtYXJnaW5TdGFydCA9IG1pbmltdW1W
YWx1ZUZvckxlbmd0aChtYXJnaW5TdGFydExlbmd0aCwgY29udGFpbmVyV2lkdGgpOworICAgIG1h
cmdpbkVuZCA9IG1pbmltdW1WYWx1ZUZvckxlbmd0aChtYXJnaW5FbmRMZW5ndGgsIGNvbnRhaW5l
cldpZHRoKTsKIH0KIAogUmVuZGVyQm94UmVnaW9uSW5mbyogUmVuZGVyQm94OjpyZW5kZXJCb3hS
ZWdpb25JbmZvKFJlbmRlclJlZ2lvbiogcmVnaW9uLCBMYXlvdXRVbml0IG9mZnNldEZyb21Mb2dp
Y2FsVG9wT2ZGaXJzdFBhZ2UsIFJlbmRlckJveFJlZ2lvbkluZm9GbGFncyBjYWNoZUZsYWcpIGNv
bnN0CkBAIC0yNTI2LDcgKzI1MjAsNyBAQCBMYXlvdXRVbml0IFJlbmRlckJveDo6Y29tcHV0ZUNv
bnRlbnRBbmRTY3JvbGxiYXJMb2dpY2FsSGVpZ2h0VXNpbmcoU2l6ZVR5cGUgaGVpZwogICAgIGlm
IChoZWlnaHQuaXNQZXJjZW50KCkpCiAgICAgICAgIHJldHVybiBjb21wdXRlUGVyY2VudGFnZUxv
Z2ljYWxIZWlnaHQoaGVpZ2h0KTsKICAgICBpZiAoaGVpZ2h0LmlzVmlld3BvcnRQZXJjZW50YWdl
KCkpCi0gICAgICAgIHJldHVybiB2YWx1ZUZvckxlbmd0aChoZWlnaHQsIDAsIHZpZXcoKSk7Cisg
ICAgICAgIHJldHVybiB2YWx1ZUZvckxlbmd0aChoZWlnaHQsIDApOwogICAgIHJldHVybiAtMTsK
IH0KIApAQCAtMjY2Miw3ICsyNjU2LDcgQEAgTGF5b3V0VW5pdCBSZW5kZXJCb3g6OmNvbXB1dGVS
ZXBsYWNlZExvZ2ljYWxXaWR0aFVzaW5nKFNpemVUeXBlIHNpemVUeXBlLCBMZW5ndGgKICAgICAg
ICAgY2FzZSBWaWV3cG9ydFBlcmNlbnRhZ2VIZWlnaHQ6CiAgICAgICAgIGNhc2UgVmlld3BvcnRQ
ZXJjZW50YWdlTWluOgogICAgICAgICBjYXNlIFZpZXdwb3J0UGVyY2VudGFnZU1heDoKLSAgICAg
ICAgICAgIHJldHVybiBhZGp1c3RDb250ZW50Qm94TG9naWNhbFdpZHRoRm9yQm94U2l6aW5nKHZh
bHVlRm9yTGVuZ3RoKGxvZ2ljYWxXaWR0aCwgMCwgdmlldygpKSk7CisgICAgICAgICAgICByZXR1
cm4gYWRqdXN0Q29udGVudEJveExvZ2ljYWxXaWR0aEZvckJveFNpemluZyh2YWx1ZUZvckxlbmd0
aChsb2dpY2FsV2lkdGgsIDApKTsKICAgICAgICAgY2FzZSBGaXRDb250ZW50OgogICAgICAgICBj
YXNlIEZpbGxBdmFpbGFibGU6CiAgICAgICAgIGNhc2UgUGVyY2VudDogCkBAIC0yNzYzLDcgKzI3
NTcsNyBAQCBMYXlvdXRVbml0IFJlbmRlckJveDo6Y29tcHV0ZVJlcGxhY2VkTG9naWNhbEhlaWdo
dFVzaW5nKFNpemVUeXBlIHNpemVUeXBlLCBMZW5ndAogICAgICAgICBjYXNlIFZpZXdwb3J0UGVy
Y2VudGFnZUhlaWdodDoKICAgICAgICAgY2FzZSBWaWV3cG9ydFBlcmNlbnRhZ2VNaW46CiAgICAg
ICAgIGNhc2UgVmlld3BvcnRQZXJjZW50YWdlTWF4OgotICAgICAgICAgICAgcmV0dXJuIGFkanVz
dENvbnRlbnRCb3hMb2dpY2FsSGVpZ2h0Rm9yQm94U2l6aW5nKHZhbHVlRm9yTGVuZ3RoKGxvZ2lj
YWxIZWlnaHQsIDAsIHZpZXcoKSkpOworICAgICAgICAgICAgcmV0dXJuIGFkanVzdENvbnRlbnRC
b3hMb2dpY2FsSGVpZ2h0Rm9yQm94U2l6aW5nKHZhbHVlRm9yTGVuZ3RoKGxvZ2ljYWxIZWlnaHQs
IDApKTsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIHJldHVybiBpbnRyaW5zaWNMb2dp
Y2FsSGVpZ2h0KCk7CiAgICAgfQpAQCAtMjgzMCwxMCArMjgyNCw5IEBAIHZvaWQgUmVuZGVyQm94
Ojpjb21wdXRlQmxvY2tEaXJlY3Rpb25NYXJnaW5zKGNvbnN0IFJlbmRlckJsb2NrKiBjb250YWlu
aW5nQmxvY2ssCiAgICAgLy8gTWFyZ2lucyBhcmUgY2FsY3VsYXRlZCB3aXRoIHJlc3BlY3QgdG8g
dGhlIGxvZ2ljYWwgd2lkdGggb2YKICAgICAvLyB0aGUgY29udGFpbmluZyBibG9jayAoOC4zKQog
ICAgIExheW91dFVuaXQgY3cgPSBjb250YWluaW5nQmxvY2tMb2dpY2FsV2lkdGhGb3JDb250ZW50
KCk7Ci0gICAgUmVuZGVyVmlldyogcmVuZGVyVmlldyA9IHZpZXcoKTsKICAgICBSZW5kZXJTdHls
ZSogY29udGFpbmluZ0Jsb2NrU3R5bGUgPSBjb250YWluaW5nQmxvY2stPnN0eWxlKCk7Ci0gICAg
bWFyZ2luQmVmb3JlID0gbWluaW11bVZhbHVlRm9yTGVuZ3RoKHN0eWxlKCktPm1hcmdpbkJlZm9y
ZVVzaW5nKGNvbnRhaW5pbmdCbG9ja1N0eWxlKSwgY3csIHJlbmRlclZpZXcpOwotICAgIG1hcmdp
bkFmdGVyID0gbWluaW11bVZhbHVlRm9yTGVuZ3RoKHN0eWxlKCktPm1hcmdpbkFmdGVyVXNpbmco
Y29udGFpbmluZ0Jsb2NrU3R5bGUpLCBjdywgcmVuZGVyVmlldyk7CisgICAgbWFyZ2luQmVmb3Jl
ID0gbWluaW11bVZhbHVlRm9yTGVuZ3RoKHN0eWxlKCktPm1hcmdpbkJlZm9yZVVzaW5nKGNvbnRh
aW5pbmdCbG9ja1N0eWxlKSwgY3cpOworICAgIG1hcmdpbkFmdGVyID0gbWluaW11bVZhbHVlRm9y
TGVuZ3RoKHN0eWxlKCktPm1hcmdpbkFmdGVyVXNpbmcoY29udGFpbmluZ0Jsb2NrU3R5bGUpLCBj
dyk7CiB9CiAKIHZvaWQgUmVuZGVyQm94Ojpjb21wdXRlQW5kU2V0QmxvY2tEaXJlY3Rpb25NYXJn
aW5zKGNvbnN0IFJlbmRlckJsb2NrKiBjb250YWluaW5nQmxvY2spCkBAIC0zMTU5LDcgKzMxNTIs
NiBAQCB2b2lkIFJlbmRlckJveDo6Y29tcHV0ZVBvc2l0aW9uZWRMb2dpY2FsV2lkdGhVc2luZyhT
aXplVHlwZSB3aWR0aFNpemVUeXBlLCBMZW5ndAogICAgIGJvb2wgbG9naWNhbFdpZHRoSXNBdXRv
ID0gbG9naWNhbFdpZHRoLmlzSW50cmluc2ljT3JBdXRvKCk7CiAgICAgYm9vbCBsb2dpY2FsTGVm
dElzQXV0byA9IGxvZ2ljYWxMZWZ0LmlzQXV0bygpOwogICAgIGJvb2wgbG9naWNhbFJpZ2h0SXNB
dXRvID0gbG9naWNhbFJpZ2h0LmlzQXV0bygpOwotICAgIFJlbmRlclZpZXcqIHJlbmRlclZpZXcg
PSB2aWV3KCk7CiAgICAgTGF5b3V0VW5pdCYgbWFyZ2luTG9naWNhbExlZnRWYWx1ZSA9IHN0eWxl
KCktPmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSA/IGNvbXB1dGVkVmFsdWVzLm1fbWFyZ2lucy5t
X3N0YXJ0IDogY29tcHV0ZWRWYWx1ZXMubV9tYXJnaW5zLm1fZW5kOwogICAgIExheW91dFVuaXQm
IG1hcmdpbkxvZ2ljYWxSaWdodFZhbHVlID0gc3R5bGUoKS0+aXNMZWZ0VG9SaWdodERpcmVjdGlv
bigpID8gY29tcHV0ZWRWYWx1ZXMubV9tYXJnaW5zLm1fZW5kIDogY29tcHV0ZWRWYWx1ZXMubV9t
YXJnaW5zLm1fc3RhcnQ7CiAKQEAgLTMxNzksMTAgKzMxNzEsMTAgQEAgdm9pZCBSZW5kZXJCb3g6
OmNvbXB1dGVQb3NpdGlvbmVkTG9naWNhbFdpZHRoVXNpbmcoU2l6ZVR5cGUgd2lkdGhTaXplVHlw
ZSwgTGVuZ3QKICAgICAgICAgLy8gTk9URTogIEl0IGlzIG5vdCBuZWNlc3NhcnkgdG8gc29sdmUg
Zm9yICdyaWdodCcgaW4gdGhlIG92ZXIgY29uc3RyYWluZWQKICAgICAgICAgLy8gY2FzZSBiZWNh
dXNlIHRoZSB2YWx1ZSBpcyBub3QgdXNlZCBmb3IgYW55IGZ1cnRoZXIgY2FsY3VsYXRpb25zLgog
Ci0gICAgICAgIGxvZ2ljYWxMZWZ0VmFsdWUgPSB2YWx1ZUZvckxlbmd0aChsb2dpY2FsTGVmdCwg
Y29udGFpbmVyTG9naWNhbFdpZHRoLCByZW5kZXJWaWV3KTsKLSAgICAgICAgY29tcHV0ZWRWYWx1
ZXMubV9leHRlbnQgPSBhZGp1c3RDb250ZW50Qm94TG9naWNhbFdpZHRoRm9yQm94U2l6aW5nKHZh
bHVlRm9yTGVuZ3RoKGxvZ2ljYWxXaWR0aCwgY29udGFpbmVyTG9naWNhbFdpZHRoLCByZW5kZXJW
aWV3KSk7CisgICAgICAgIGxvZ2ljYWxMZWZ0VmFsdWUgPSB2YWx1ZUZvckxlbmd0aChsb2dpY2Fs
TGVmdCwgY29udGFpbmVyTG9naWNhbFdpZHRoKTsKKyAgICAgICAgY29tcHV0ZWRWYWx1ZXMubV9l
eHRlbnQgPSBhZGp1c3RDb250ZW50Qm94TG9naWNhbFdpZHRoRm9yQm94U2l6aW5nKHZhbHVlRm9y
TGVuZ3RoKGxvZ2ljYWxXaWR0aCwgY29udGFpbmVyTG9naWNhbFdpZHRoKSk7CiAKLSAgICAgICAg
Y29uc3QgTGF5b3V0VW5pdCBhdmFpbGFibGVTcGFjZSA9IGNvbnRhaW5lckxvZ2ljYWxXaWR0aCAt
IChsb2dpY2FsTGVmdFZhbHVlICsgY29tcHV0ZWRWYWx1ZXMubV9leHRlbnQgKyB2YWx1ZUZvckxl
bmd0aChsb2dpY2FsUmlnaHQsIGNvbnRhaW5lckxvZ2ljYWxXaWR0aCwgcmVuZGVyVmlldykgKyBi
b3JkZXJzUGx1c1BhZGRpbmcpOworICAgICAgICBjb25zdCBMYXlvdXRVbml0IGF2YWlsYWJsZVNw
YWNlID0gY29udGFpbmVyTG9naWNhbFdpZHRoIC0gKGxvZ2ljYWxMZWZ0VmFsdWUgKyBjb21wdXRl
ZFZhbHVlcy5tX2V4dGVudCArIHZhbHVlRm9yTGVuZ3RoKGxvZ2ljYWxSaWdodCwgY29udGFpbmVy
TG9naWNhbFdpZHRoKSArIGJvcmRlcnNQbHVzUGFkZGluZyk7CiAKICAgICAgICAgLy8gTWFyZ2lu
cyBhcmUgbm93IHRoZSBvbmx5IHVua25vd24KICAgICAgICAgaWYgKG1hcmdpbkxvZ2ljYWxMZWZ0
LmlzQXV0bygpICYmIG1hcmdpbkxvZ2ljYWxSaWdodC5pc0F1dG8oKSkgewpAQCAtMzIwMywxNiAr
MzE5NSwxNiBAQCB2b2lkIFJlbmRlckJveDo6Y29tcHV0ZVBvc2l0aW9uZWRMb2dpY2FsV2lkdGhV
c2luZyhTaXplVHlwZSB3aWR0aFNpemVUeXBlLCBMZW5ndAogICAgICAgICAgICAgfQogICAgICAg
ICB9IGVsc2UgaWYgKG1hcmdpbkxvZ2ljYWxMZWZ0LmlzQXV0bygpKSB7CiAgICAgICAgICAgICAv
LyBTb2x2ZSBmb3IgbGVmdCBtYXJnaW4KLSAgICAgICAgICAgIG1hcmdpbkxvZ2ljYWxSaWdodFZh
bHVlID0gdmFsdWVGb3JMZW5ndGgobWFyZ2luTG9naWNhbFJpZ2h0LCBjb250YWluZXJSZWxhdGl2
ZUxvZ2ljYWxXaWR0aCwgcmVuZGVyVmlldyk7CisgICAgICAgICAgICBtYXJnaW5Mb2dpY2FsUmln
aHRWYWx1ZSA9IHZhbHVlRm9yTGVuZ3RoKG1hcmdpbkxvZ2ljYWxSaWdodCwgY29udGFpbmVyUmVs
YXRpdmVMb2dpY2FsV2lkdGgpOwogICAgICAgICAgICAgbWFyZ2luTG9naWNhbExlZnRWYWx1ZSA9
IGF2YWlsYWJsZVNwYWNlIC0gbWFyZ2luTG9naWNhbFJpZ2h0VmFsdWU7CiAgICAgICAgIH0gZWxz
ZSBpZiAobWFyZ2luTG9naWNhbFJpZ2h0LmlzQXV0bygpKSB7CiAgICAgICAgICAgICAvLyBTb2x2
ZSBmb3IgcmlnaHQgbWFyZ2luCi0gICAgICAgICAgICBtYXJnaW5Mb2dpY2FsTGVmdFZhbHVlID0g
dmFsdWVGb3JMZW5ndGgobWFyZ2luTG9naWNhbExlZnQsIGNvbnRhaW5lclJlbGF0aXZlTG9naWNh
bFdpZHRoLCByZW5kZXJWaWV3KTsKKyAgICAgICAgICAgIG1hcmdpbkxvZ2ljYWxMZWZ0VmFsdWUg
PSB2YWx1ZUZvckxlbmd0aChtYXJnaW5Mb2dpY2FsTGVmdCwgY29udGFpbmVyUmVsYXRpdmVMb2dp
Y2FsV2lkdGgpOwogICAgICAgICAgICAgbWFyZ2luTG9naWNhbFJpZ2h0VmFsdWUgPSBhdmFpbGFi
bGVTcGFjZSAtIG1hcmdpbkxvZ2ljYWxMZWZ0VmFsdWU7CiAgICAgICAgIH0gZWxzZSB7CiAgICAg
ICAgICAgICAvLyBPdmVyLWNvbnN0cmFpbmVkLCBzb2x2ZSBmb3IgbGVmdCBpZiBkaXJlY3Rpb24g
aXMgUlRMCi0gICAgICAgICAgICBtYXJnaW5Mb2dpY2FsTGVmdFZhbHVlID0gdmFsdWVGb3JMZW5n
dGgobWFyZ2luTG9naWNhbExlZnQsIGNvbnRhaW5lclJlbGF0aXZlTG9naWNhbFdpZHRoLCByZW5k
ZXJWaWV3KTsKLSAgICAgICAgICAgIG1hcmdpbkxvZ2ljYWxSaWdodFZhbHVlID0gdmFsdWVGb3JM
ZW5ndGgobWFyZ2luTG9naWNhbFJpZ2h0LCBjb250YWluZXJSZWxhdGl2ZUxvZ2ljYWxXaWR0aCwg
cmVuZGVyVmlldyk7CisgICAgICAgICAgICBtYXJnaW5Mb2dpY2FsTGVmdFZhbHVlID0gdmFsdWVG
b3JMZW5ndGgobWFyZ2luTG9naWNhbExlZnQsIGNvbnRhaW5lclJlbGF0aXZlTG9naWNhbFdpZHRo
KTsKKyAgICAgICAgICAgIG1hcmdpbkxvZ2ljYWxSaWdodFZhbHVlID0gdmFsdWVGb3JMZW5ndGgo
bWFyZ2luTG9naWNhbFJpZ2h0LCBjb250YWluZXJSZWxhdGl2ZUxvZ2ljYWxXaWR0aCk7CiAKICAg
ICAgICAgICAgIC8vIFVzZSB0aGUgY29udGFpbmluZyBibG9jaydzIGRpcmVjdGlvbiByYXRoZXIg
dGhhbiB0aGUgcGFyZW50IGJsb2NrJ3MKICAgICAgICAgICAgIC8vIHBlciBDU1MgMi4xIHJlZmVy
ZW5jZSB0ZXN0IGFic3Bvcy1ub24tcmVwbGFjZWQtd2lkdGgtbWFyZ2luLTAwMC4KQEAgLTMyNjIs
OCArMzI1NCw4IEBAIHZvaWQgUmVuZGVyQm94Ojpjb21wdXRlUG9zaXRpb25lZExvZ2ljYWxXaWR0
aFVzaW5nKFNpemVUeXBlIHdpZHRoU2l6ZVR5cGUsIExlbmd0CiAgICAgICAgIC8vIGJlY2F1c2Ug
dGhlIHZhbHVlIGlzIG5vdCB1c2VkIGZvciBhbnkgZnVydGhlciBjYWxjdWxhdGlvbnMuCiAKICAg
ICAgICAgLy8gQ2FsY3VsYXRlIG1hcmdpbnMsICdhdXRvJyBtYXJnaW5zIGFyZSBpZ25vcmVkLgot
ICAgICAgICBtYXJnaW5Mb2dpY2FsTGVmdFZhbHVlID0gbWluaW11bVZhbHVlRm9yTGVuZ3RoKG1h
cmdpbkxvZ2ljYWxMZWZ0LCBjb250YWluZXJSZWxhdGl2ZUxvZ2ljYWxXaWR0aCwgcmVuZGVyVmll
dyk7Ci0gICAgICAgIG1hcmdpbkxvZ2ljYWxSaWdodFZhbHVlID0gbWluaW11bVZhbHVlRm9yTGVu
Z3RoKG1hcmdpbkxvZ2ljYWxSaWdodCwgY29udGFpbmVyUmVsYXRpdmVMb2dpY2FsV2lkdGgsIHJl
bmRlclZpZXcpOworICAgICAgICBtYXJnaW5Mb2dpY2FsTGVmdFZhbHVlID0gbWluaW11bVZhbHVl
Rm9yTGVuZ3RoKG1hcmdpbkxvZ2ljYWxMZWZ0LCBjb250YWluZXJSZWxhdGl2ZUxvZ2ljYWxXaWR0
aCk7CisgICAgICAgIG1hcmdpbkxvZ2ljYWxSaWdodFZhbHVlID0gbWluaW11bVZhbHVlRm9yTGVu
Z3RoKG1hcmdpbkxvZ2ljYWxSaWdodCwgY29udGFpbmVyUmVsYXRpdmVMb2dpY2FsV2lkdGgpOwog
CiAgICAgICAgIGNvbnN0IExheW91dFVuaXQgYXZhaWxhYmxlU3BhY2UgPSBjb250YWluZXJMb2dp
Y2FsV2lkdGggLSAobWFyZ2luTG9naWNhbExlZnRWYWx1ZSArIG1hcmdpbkxvZ2ljYWxSaWdodFZh
bHVlICsgYm9yZGVyc1BsdXNQYWRkaW5nKTsKIApAQCAtMzI3MSw3ICszMjYzLDcgQEAgdm9pZCBS
ZW5kZXJCb3g6OmNvbXB1dGVQb3NpdGlvbmVkTG9naWNhbFdpZHRoVXNpbmcoU2l6ZVR5cGUgd2lk
dGhTaXplVHlwZSwgTGVuZ3QKICAgICAgICAgLy8gVXNlIHJ1bGUvY2FzZSB0aGF0IGFwcGxpZXMu
CiAgICAgICAgIGlmIChsb2dpY2FsTGVmdElzQXV0byAmJiBsb2dpY2FsV2lkdGhJc0F1dG8gJiYg
IWxvZ2ljYWxSaWdodElzQXV0bykgewogICAgICAgICAgICAgLy8gUlVMRSAxOiAodXNlIHNocmlu
ay10by1maXQgZm9yIHdpZHRoLCBhbmQgc29sdmUgb2YgbGVmdCkKLSAgICAgICAgICAgIExheW91
dFVuaXQgbG9naWNhbFJpZ2h0VmFsdWUgPSB2YWx1ZUZvckxlbmd0aChsb2dpY2FsUmlnaHQsIGNv
bnRhaW5lckxvZ2ljYWxXaWR0aCwgcmVuZGVyVmlldyk7CisgICAgICAgICAgICBMYXlvdXRVbml0
IGxvZ2ljYWxSaWdodFZhbHVlID0gdmFsdWVGb3JMZW5ndGgobG9naWNhbFJpZ2h0LCBjb250YWlu
ZXJMb2dpY2FsV2lkdGgpOwogCiAgICAgICAgICAgICAvLyBGSVhNRTogd291bGQgaXQgYmUgYmV0
dGVyIHRvIGhhdmUgc2hyaW5rLXRvLWZpdCBpbiBvbmUgc3RlcD8KICAgICAgICAgICAgIExheW91
dFVuaXQgcHJlZmVycmVkV2lkdGggPSBtYXhQcmVmZXJyZWRMb2dpY2FsV2lkdGgoKSAtIGJvcmRl
cnNQbHVzUGFkZGluZzsKQEAgLTMyODEsNyArMzI3Myw3IEBAIHZvaWQgUmVuZGVyQm94Ojpjb21w
dXRlUG9zaXRpb25lZExvZ2ljYWxXaWR0aFVzaW5nKFNpemVUeXBlIHdpZHRoU2l6ZVR5cGUsIExl
bmd0CiAgICAgICAgICAgICBsb2dpY2FsTGVmdFZhbHVlID0gYXZhaWxhYmxlU3BhY2UgLSAoY29t
cHV0ZWRWYWx1ZXMubV9leHRlbnQgKyBsb2dpY2FsUmlnaHRWYWx1ZSk7CiAgICAgICAgIH0gZWxz
ZSBpZiAoIWxvZ2ljYWxMZWZ0SXNBdXRvICYmIGxvZ2ljYWxXaWR0aElzQXV0byAmJiBsb2dpY2Fs
UmlnaHRJc0F1dG8pIHsKICAgICAgICAgICAgIC8vIFJVTEUgMzogKHVzZSBzaHJpbmstdG8tZml0
IGZvciB3aWR0aCwgYW5kIG5vIG5lZWQgc29sdmUgb2YgcmlnaHQpCi0gICAgICAgICAgICBsb2dp
Y2FsTGVmdFZhbHVlID0gdmFsdWVGb3JMZW5ndGgobG9naWNhbExlZnQsIGNvbnRhaW5lckxvZ2lj
YWxXaWR0aCwgcmVuZGVyVmlldyk7CisgICAgICAgICAgICBsb2dpY2FsTGVmdFZhbHVlID0gdmFs
dWVGb3JMZW5ndGgobG9naWNhbExlZnQsIGNvbnRhaW5lckxvZ2ljYWxXaWR0aCk7CiAKICAgICAg
ICAgICAgIC8vIEZJWE1FOiB3b3VsZCBpdCBiZSBiZXR0ZXIgdG8gaGF2ZSBzaHJpbmstdG8tZml0
IGluIG9uZSBzdGVwPwogICAgICAgICAgICAgTGF5b3V0VW5pdCBwcmVmZXJyZWRXaWR0aCA9IG1h
eFByZWZlcnJlZExvZ2ljYWxXaWR0aCgpIC0gYm9yZGVyc1BsdXNQYWRkaW5nOwpAQCAtMzI5MCwx
NiArMzI4MiwxNiBAQCB2b2lkIFJlbmRlckJveDo6Y29tcHV0ZVBvc2l0aW9uZWRMb2dpY2FsV2lk
dGhVc2luZyhTaXplVHlwZSB3aWR0aFNpemVUeXBlLCBMZW5ndAogICAgICAgICAgICAgY29tcHV0
ZWRWYWx1ZXMubV9leHRlbnQgPSBtaW4obWF4KHByZWZlcnJlZE1pbldpZHRoLCBhdmFpbGFibGVX
aWR0aCksIHByZWZlcnJlZFdpZHRoKTsKICAgICAgICAgfSBlbHNlIGlmIChsb2dpY2FsTGVmdElz
QXV0byAmJiAhbG9naWNhbFdpZHRoSXNBdXRvICYmICFsb2dpY2FsUmlnaHRJc0F1dG8pIHsKICAg
ICAgICAgICAgIC8vIFJVTEUgNDogKHNvbHZlIGZvciBsZWZ0KQotICAgICAgICAgICAgY29tcHV0
ZWRWYWx1ZXMubV9leHRlbnQgPSBhZGp1c3RDb250ZW50Qm94TG9naWNhbFdpZHRoRm9yQm94U2l6
aW5nKHZhbHVlRm9yTGVuZ3RoKGxvZ2ljYWxXaWR0aCwgY29udGFpbmVyTG9naWNhbFdpZHRoLCBy
ZW5kZXJWaWV3KSk7Ci0gICAgICAgICAgICBsb2dpY2FsTGVmdFZhbHVlID0gYXZhaWxhYmxlU3Bh
Y2UgLSAoY29tcHV0ZWRWYWx1ZXMubV9leHRlbnQgKyB2YWx1ZUZvckxlbmd0aChsb2dpY2FsUmln
aHQsIGNvbnRhaW5lckxvZ2ljYWxXaWR0aCwgcmVuZGVyVmlldykpOworICAgICAgICAgICAgY29t
cHV0ZWRWYWx1ZXMubV9leHRlbnQgPSBhZGp1c3RDb250ZW50Qm94TG9naWNhbFdpZHRoRm9yQm94
U2l6aW5nKHZhbHVlRm9yTGVuZ3RoKGxvZ2ljYWxXaWR0aCwgY29udGFpbmVyTG9naWNhbFdpZHRo
KSk7CisgICAgICAgICAgICBsb2dpY2FsTGVmdFZhbHVlID0gYXZhaWxhYmxlU3BhY2UgLSAoY29t
cHV0ZWRWYWx1ZXMubV9leHRlbnQgKyB2YWx1ZUZvckxlbmd0aChsb2dpY2FsUmlnaHQsIGNvbnRh
aW5lckxvZ2ljYWxXaWR0aCkpOwogICAgICAgICB9IGVsc2UgaWYgKCFsb2dpY2FsTGVmdElzQXV0
byAmJiBsb2dpY2FsV2lkdGhJc0F1dG8gJiYgIWxvZ2ljYWxSaWdodElzQXV0bykgewogICAgICAg
ICAgICAgLy8gUlVMRSA1OiAoc29sdmUgZm9yIHdpZHRoKQotICAgICAgICAgICAgbG9naWNhbExl
ZnRWYWx1ZSA9IHZhbHVlRm9yTGVuZ3RoKGxvZ2ljYWxMZWZ0LCBjb250YWluZXJMb2dpY2FsV2lk
dGgsIHJlbmRlclZpZXcpOwotICAgICAgICAgICAgY29tcHV0ZWRWYWx1ZXMubV9leHRlbnQgPSBh
dmFpbGFibGVTcGFjZSAtIChsb2dpY2FsTGVmdFZhbHVlICsgdmFsdWVGb3JMZW5ndGgobG9naWNh
bFJpZ2h0LCBjb250YWluZXJMb2dpY2FsV2lkdGgsIHJlbmRlclZpZXcpKTsKKyAgICAgICAgICAg
IGxvZ2ljYWxMZWZ0VmFsdWUgPSB2YWx1ZUZvckxlbmd0aChsb2dpY2FsTGVmdCwgY29udGFpbmVy
TG9naWNhbFdpZHRoKTsKKyAgICAgICAgICAgIGNvbXB1dGVkVmFsdWVzLm1fZXh0ZW50ID0gYXZh
aWxhYmxlU3BhY2UgLSAobG9naWNhbExlZnRWYWx1ZSArIHZhbHVlRm9yTGVuZ3RoKGxvZ2ljYWxS
aWdodCwgY29udGFpbmVyTG9naWNhbFdpZHRoKSk7CiAgICAgICAgIH0gZWxzZSBpZiAoIWxvZ2lj
YWxMZWZ0SXNBdXRvICYmICFsb2dpY2FsV2lkdGhJc0F1dG8gJiYgbG9naWNhbFJpZ2h0SXNBdXRv
KSB7CiAgICAgICAgICAgICAvLyBSVUxFIDY6IChubyBuZWVkIHNvbHZlIGZvciByaWdodCkKLSAg
ICAgICAgICAgIGxvZ2ljYWxMZWZ0VmFsdWUgPSB2YWx1ZUZvckxlbmd0aChsb2dpY2FsTGVmdCwg
Y29udGFpbmVyTG9naWNhbFdpZHRoLCByZW5kZXJWaWV3KTsKLSAgICAgICAgICAgIGNvbXB1dGVk
VmFsdWVzLm1fZXh0ZW50ID0gYWRqdXN0Q29udGVudEJveExvZ2ljYWxXaWR0aEZvckJveFNpemlu
Zyh2YWx1ZUZvckxlbmd0aChsb2dpY2FsV2lkdGgsIGNvbnRhaW5lckxvZ2ljYWxXaWR0aCwgcmVu
ZGVyVmlldykpOworICAgICAgICAgICAgbG9naWNhbExlZnRWYWx1ZSA9IHZhbHVlRm9yTGVuZ3Ro
KGxvZ2ljYWxMZWZ0LCBjb250YWluZXJMb2dpY2FsV2lkdGgpOworICAgICAgICAgICAgY29tcHV0
ZWRWYWx1ZXMubV9leHRlbnQgPSBhZGp1c3RDb250ZW50Qm94TG9naWNhbFdpZHRoRm9yQm94U2l6
aW5nKHZhbHVlRm9yTGVuZ3RoKGxvZ2ljYWxXaWR0aCwgY29udGFpbmVyTG9naWNhbFdpZHRoKSk7
CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTM0OTIsNyArMzQ4NCw2IEBAIHZvaWQgUmVuZGVyQm94
Ojpjb21wdXRlUG9zaXRpb25lZExvZ2ljYWxIZWlnaHRVc2luZyhTaXplVHlwZSBoZWlnaHRTaXpl
VHlwZSwgTGVuCiAgICAgYm9vbCBsb2dpY2FsSGVpZ2h0SXNBdXRvID0gbG9naWNhbEhlaWdodExl
bmd0aC5pc0F1dG8oKTsKICAgICBib29sIGxvZ2ljYWxUb3BJc0F1dG8gPSBsb2dpY2FsVG9wLmlz
QXV0bygpOwogICAgIGJvb2wgbG9naWNhbEJvdHRvbUlzQXV0byA9IGxvZ2ljYWxCb3R0b20uaXNB
dXRvKCk7Ci0gICAgUmVuZGVyVmlldyogcmVuZGVyVmlldyA9IHZpZXcoKTsKIAogICAgIC8vIEhl
aWdodCBpcyBuZXZlciB1bnNvbHZlZCBmb3IgdGFibGVzLgogICAgIGlmIChpc1RhYmxlKCkpIHsK
QEAgLTM1MTIsMTAgKzM1MDMsMTAgQEAgdm9pZCBSZW5kZXJCb3g6OmNvbXB1dGVQb3NpdGlvbmVk
TG9naWNhbEhlaWdodFVzaW5nKFNpemVUeXBlIGhlaWdodFNpemVUeXBlLCBMZW4KICAgICAgICAg
Ly8gTk9URTogIEl0IGlzIG5vdCBuZWNlc3NhcnkgdG8gc29sdmUgZm9yICdib3R0b20nIGluIHRo
ZSBvdmVyIGNvbnN0cmFpbmVkCiAgICAgICAgIC8vIGNhc2UgYmVjYXVzZSB0aGUgdmFsdWUgaXMg
bm90IHVzZWQgZm9yIGFueSBmdXJ0aGVyIGNhbGN1bGF0aW9ucy4KIAotICAgICAgICBsb2dpY2Fs
SGVpZ2h0VmFsdWUgPSBhZGp1c3RDb250ZW50Qm94TG9naWNhbEhlaWdodEZvckJveFNpemluZyh2
YWx1ZUZvckxlbmd0aChsb2dpY2FsSGVpZ2h0TGVuZ3RoLCBjb250YWluZXJMb2dpY2FsSGVpZ2h0
LCByZW5kZXJWaWV3KSk7Ci0gICAgICAgIGxvZ2ljYWxUb3BWYWx1ZSA9IHZhbHVlRm9yTGVuZ3Ro
KGxvZ2ljYWxUb3AsIGNvbnRhaW5lckxvZ2ljYWxIZWlnaHQsIHJlbmRlclZpZXcpOworICAgICAg
ICBsb2dpY2FsSGVpZ2h0VmFsdWUgPSBhZGp1c3RDb250ZW50Qm94TG9naWNhbEhlaWdodEZvckJv
eFNpemluZyh2YWx1ZUZvckxlbmd0aChsb2dpY2FsSGVpZ2h0TGVuZ3RoLCBjb250YWluZXJMb2dp
Y2FsSGVpZ2h0KSk7CisgICAgICAgIGxvZ2ljYWxUb3BWYWx1ZSA9IHZhbHVlRm9yTGVuZ3RoKGxv
Z2ljYWxUb3AsIGNvbnRhaW5lckxvZ2ljYWxIZWlnaHQpOwogCi0gICAgICAgIGNvbnN0IExheW91
dFVuaXQgYXZhaWxhYmxlU3BhY2UgPSBjb250YWluZXJMb2dpY2FsSGVpZ2h0IC0gKGxvZ2ljYWxU
b3BWYWx1ZSArIGxvZ2ljYWxIZWlnaHRWYWx1ZSArIHZhbHVlRm9yTGVuZ3RoKGxvZ2ljYWxCb3R0
b20sIGNvbnRhaW5lckxvZ2ljYWxIZWlnaHQsIHJlbmRlclZpZXcpICsgYm9yZGVyc1BsdXNQYWRk
aW5nKTsKKyAgICAgICAgY29uc3QgTGF5b3V0VW5pdCBhdmFpbGFibGVTcGFjZSA9IGNvbnRhaW5l
ckxvZ2ljYWxIZWlnaHQgLSAobG9naWNhbFRvcFZhbHVlICsgbG9naWNhbEhlaWdodFZhbHVlICsg
dmFsdWVGb3JMZW5ndGgobG9naWNhbEJvdHRvbSwgY29udGFpbmVyTG9naWNhbEhlaWdodCkgKyBi
b3JkZXJzUGx1c1BhZGRpbmcpOwogCiAgICAgICAgIC8vIE1hcmdpbnMgYXJlIG5vdyB0aGUgb25s
eSB1bmtub3duCiAgICAgICAgIGlmIChtYXJnaW5CZWZvcmUuaXNBdXRvKCkgJiYgbWFyZ2luQWZ0
ZXIuaXNBdXRvKCkpIHsKQEAgLTM1MjUsMTYgKzM1MTYsMTYgQEAgdm9pZCBSZW5kZXJCb3g6OmNv
bXB1dGVQb3NpdGlvbmVkTG9naWNhbEhlaWdodFVzaW5nKFNpemVUeXBlIGhlaWdodFNpemVUeXBl
LCBMZW4KICAgICAgICAgICAgIGNvbXB1dGVkVmFsdWVzLm1fbWFyZ2lucy5tX2FmdGVyID0gYXZh
aWxhYmxlU3BhY2UgLSBjb21wdXRlZFZhbHVlcy5tX21hcmdpbnMubV9iZWZvcmU7IC8vIGFjY291
bnQgZm9yIG9kZCB2YWx1ZWQgZGlmZmVyZW5jZXMKICAgICAgICAgfSBlbHNlIGlmIChtYXJnaW5C
ZWZvcmUuaXNBdXRvKCkpIHsKICAgICAgICAgICAgIC8vIFNvbHZlIGZvciB0b3AgbWFyZ2luCi0g
ICAgICAgICAgICBjb21wdXRlZFZhbHVlcy5tX21hcmdpbnMubV9hZnRlciA9IHZhbHVlRm9yTGVu
Z3RoKG1hcmdpbkFmdGVyLCBjb250YWluZXJSZWxhdGl2ZUxvZ2ljYWxXaWR0aCwgcmVuZGVyVmll
dyk7CisgICAgICAgICAgICBjb21wdXRlZFZhbHVlcy5tX21hcmdpbnMubV9hZnRlciA9IHZhbHVl
Rm9yTGVuZ3RoKG1hcmdpbkFmdGVyLCBjb250YWluZXJSZWxhdGl2ZUxvZ2ljYWxXaWR0aCk7CiAg
ICAgICAgICAgICBjb21wdXRlZFZhbHVlcy5tX21hcmdpbnMubV9iZWZvcmUgPSBhdmFpbGFibGVT
cGFjZSAtIGNvbXB1dGVkVmFsdWVzLm1fbWFyZ2lucy5tX2FmdGVyOwogICAgICAgICB9IGVsc2Ug
aWYgKG1hcmdpbkFmdGVyLmlzQXV0bygpKSB7CiAgICAgICAgICAgICAvLyBTb2x2ZSBmb3IgYm90
dG9tIG1hcmdpbgotICAgICAgICAgICAgY29tcHV0ZWRWYWx1ZXMubV9tYXJnaW5zLm1fYmVmb3Jl
ID0gdmFsdWVGb3JMZW5ndGgobWFyZ2luQmVmb3JlLCBjb250YWluZXJSZWxhdGl2ZUxvZ2ljYWxX
aWR0aCwgcmVuZGVyVmlldyk7CisgICAgICAgICAgICBjb21wdXRlZFZhbHVlcy5tX21hcmdpbnMu
bV9iZWZvcmUgPSB2YWx1ZUZvckxlbmd0aChtYXJnaW5CZWZvcmUsIGNvbnRhaW5lclJlbGF0aXZl
TG9naWNhbFdpZHRoKTsKICAgICAgICAgICAgIGNvbXB1dGVkVmFsdWVzLm1fbWFyZ2lucy5tX2Fm
dGVyID0gYXZhaWxhYmxlU3BhY2UgLSBjb21wdXRlZFZhbHVlcy5tX21hcmdpbnMubV9iZWZvcmU7
CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAvLyBPdmVyLWNvbnN0cmFpbmVkLCAobm8g
bmVlZCBzb2x2ZSBmb3IgYm90dG9tKQotICAgICAgICAgICAgY29tcHV0ZWRWYWx1ZXMubV9tYXJn
aW5zLm1fYmVmb3JlID0gdmFsdWVGb3JMZW5ndGgobWFyZ2luQmVmb3JlLCBjb250YWluZXJSZWxh
dGl2ZUxvZ2ljYWxXaWR0aCwgcmVuZGVyVmlldyk7Ci0gICAgICAgICAgICBjb21wdXRlZFZhbHVl
cy5tX21hcmdpbnMubV9hZnRlciA9IHZhbHVlRm9yTGVuZ3RoKG1hcmdpbkFmdGVyLCBjb250YWlu
ZXJSZWxhdGl2ZUxvZ2ljYWxXaWR0aCwgcmVuZGVyVmlldyk7CisgICAgICAgICAgICBjb21wdXRl
ZFZhbHVlcy5tX21hcmdpbnMubV9iZWZvcmUgPSB2YWx1ZUZvckxlbmd0aChtYXJnaW5CZWZvcmUs
IGNvbnRhaW5lclJlbGF0aXZlTG9naWNhbFdpZHRoKTsKKyAgICAgICAgICAgIGNvbXB1dGVkVmFs
dWVzLm1fbWFyZ2lucy5tX2FmdGVyID0gdmFsdWVGb3JMZW5ndGgobWFyZ2luQWZ0ZXIsIGNvbnRh
aW5lclJlbGF0aXZlTG9naWNhbFdpZHRoKTsKICAgICAgICAgfQogICAgIH0gZWxzZSB7CiAgICAg
ICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0qXApAQCAtMzU2Myw4ICszNTU0LDggQEAgdm9pZCBSZW5kZXJCb3g6
OmNvbXB1dGVQb3NpdGlvbmVkTG9naWNhbEhlaWdodFVzaW5nKFNpemVUeXBlIGhlaWdodFNpemVU
eXBlLCBMZW4KICAgICAgICAgLy8gYmVjYXVzZSB0aGUgdmFsdWUgaXMgbm90IHVzZWQgZm9yIGFu
eSBmdXJ0aGVyIGNhbGN1bGF0aW9ucy4KIAogICAgICAgICAvLyBDYWxjdWxhdGUgbWFyZ2lucywg
J2F1dG8nIG1hcmdpbnMgYXJlIGlnbm9yZWQuCi0gICAgICAgIGNvbXB1dGVkVmFsdWVzLm1fbWFy
Z2lucy5tX2JlZm9yZSA9IG1pbmltdW1WYWx1ZUZvckxlbmd0aChtYXJnaW5CZWZvcmUsIGNvbnRh
aW5lclJlbGF0aXZlTG9naWNhbFdpZHRoLCByZW5kZXJWaWV3KTsKLSAgICAgICAgY29tcHV0ZWRW
YWx1ZXMubV9tYXJnaW5zLm1fYWZ0ZXIgPSBtaW5pbXVtVmFsdWVGb3JMZW5ndGgobWFyZ2luQWZ0
ZXIsIGNvbnRhaW5lclJlbGF0aXZlTG9naWNhbFdpZHRoLCByZW5kZXJWaWV3KTsKKyAgICAgICAg
Y29tcHV0ZWRWYWx1ZXMubV9tYXJnaW5zLm1fYmVmb3JlID0gbWluaW11bVZhbHVlRm9yTGVuZ3Ro
KG1hcmdpbkJlZm9yZSwgY29udGFpbmVyUmVsYXRpdmVMb2dpY2FsV2lkdGgpOworICAgICAgICBj
b21wdXRlZFZhbHVlcy5tX21hcmdpbnMubV9hZnRlciA9IG1pbmltdW1WYWx1ZUZvckxlbmd0aCht
YXJnaW5BZnRlciwgY29udGFpbmVyUmVsYXRpdmVMb2dpY2FsV2lkdGgpOwogCiAgICAgICAgIGNv
bnN0IExheW91dFVuaXQgYXZhaWxhYmxlU3BhY2UgPSBjb250YWluZXJMb2dpY2FsSGVpZ2h0IC0g
KGNvbXB1dGVkVmFsdWVzLm1fbWFyZ2lucy5tX2JlZm9yZSArIGNvbXB1dGVkVmFsdWVzLm1fbWFy
Z2lucy5tX2FmdGVyICsgYm9yZGVyc1BsdXNQYWRkaW5nKTsKIApAQCAtMzU3MiwyMyArMzU2Mywy
MyBAQCB2b2lkIFJlbmRlckJveDo6Y29tcHV0ZVBvc2l0aW9uZWRMb2dpY2FsSGVpZ2h0VXNpbmco
U2l6ZVR5cGUgaGVpZ2h0U2l6ZVR5cGUsIExlbgogICAgICAgICBpZiAobG9naWNhbFRvcElzQXV0
byAmJiBsb2dpY2FsSGVpZ2h0SXNBdXRvICYmICFsb2dpY2FsQm90dG9tSXNBdXRvKSB7CiAgICAg
ICAgICAgICAvLyBSVUxFIDE6IChoZWlnaHQgaXMgY29udGVudCBiYXNlZCwgc29sdmUgb2YgdG9w
KQogICAgICAgICAgICAgbG9naWNhbEhlaWdodFZhbHVlID0gY29udGVudExvZ2ljYWxIZWlnaHQ7
Ci0gICAgICAgICAgICBsb2dpY2FsVG9wVmFsdWUgPSBhdmFpbGFibGVTcGFjZSAtIChsb2dpY2Fs
SGVpZ2h0VmFsdWUgKyB2YWx1ZUZvckxlbmd0aChsb2dpY2FsQm90dG9tLCBjb250YWluZXJMb2dp
Y2FsSGVpZ2h0LCByZW5kZXJWaWV3KSk7CisgICAgICAgICAgICBsb2dpY2FsVG9wVmFsdWUgPSBh
dmFpbGFibGVTcGFjZSAtIChsb2dpY2FsSGVpZ2h0VmFsdWUgKyB2YWx1ZUZvckxlbmd0aChsb2dp
Y2FsQm90dG9tLCBjb250YWluZXJMb2dpY2FsSGVpZ2h0KSk7CiAgICAgICAgIH0gZWxzZSBpZiAo
IWxvZ2ljYWxUb3BJc0F1dG8gJiYgbG9naWNhbEhlaWdodElzQXV0byAmJiBsb2dpY2FsQm90dG9t
SXNBdXRvKSB7CiAgICAgICAgICAgICAvLyBSVUxFIDM6IChoZWlnaHQgaXMgY29udGVudCBiYXNl
ZCwgbm8gbmVlZCBzb2x2ZSBvZiBib3R0b20pCi0gICAgICAgICAgICBsb2dpY2FsVG9wVmFsdWUg
PSB2YWx1ZUZvckxlbmd0aChsb2dpY2FsVG9wLCBjb250YWluZXJMb2dpY2FsSGVpZ2h0LCByZW5k
ZXJWaWV3KTsKKyAgICAgICAgICAgIGxvZ2ljYWxUb3BWYWx1ZSA9IHZhbHVlRm9yTGVuZ3RoKGxv
Z2ljYWxUb3AsIGNvbnRhaW5lckxvZ2ljYWxIZWlnaHQpOwogICAgICAgICAgICAgbG9naWNhbEhl
aWdodFZhbHVlID0gY29udGVudExvZ2ljYWxIZWlnaHQ7CiAgICAgICAgIH0gZWxzZSBpZiAobG9n
aWNhbFRvcElzQXV0byAmJiAhbG9naWNhbEhlaWdodElzQXV0byAmJiAhbG9naWNhbEJvdHRvbUlz
QXV0bykgewogICAgICAgICAgICAgLy8gUlVMRSA0OiAoc29sdmUgb2YgdG9wKQotICAgICAgICAg
ICAgbG9naWNhbEhlaWdodFZhbHVlID0gYWRqdXN0Q29udGVudEJveExvZ2ljYWxIZWlnaHRGb3JC
b3hTaXppbmcodmFsdWVGb3JMZW5ndGgobG9naWNhbEhlaWdodExlbmd0aCwgY29udGFpbmVyTG9n
aWNhbEhlaWdodCwgcmVuZGVyVmlldykpOwotICAgICAgICAgICAgbG9naWNhbFRvcFZhbHVlID0g
YXZhaWxhYmxlU3BhY2UgLSAobG9naWNhbEhlaWdodFZhbHVlICsgdmFsdWVGb3JMZW5ndGgobG9n
aWNhbEJvdHRvbSwgY29udGFpbmVyTG9naWNhbEhlaWdodCwgcmVuZGVyVmlldykpOworICAgICAg
ICAgICAgbG9naWNhbEhlaWdodFZhbHVlID0gYWRqdXN0Q29udGVudEJveExvZ2ljYWxIZWlnaHRG
b3JCb3hTaXppbmcodmFsdWVGb3JMZW5ndGgobG9naWNhbEhlaWdodExlbmd0aCwgY29udGFpbmVy
TG9naWNhbEhlaWdodCkpOworICAgICAgICAgICAgbG9naWNhbFRvcFZhbHVlID0gYXZhaWxhYmxl
U3BhY2UgLSAobG9naWNhbEhlaWdodFZhbHVlICsgdmFsdWVGb3JMZW5ndGgobG9naWNhbEJvdHRv
bSwgY29udGFpbmVyTG9naWNhbEhlaWdodCkpOwogICAgICAgICB9IGVsc2UgaWYgKCFsb2dpY2Fs
VG9wSXNBdXRvICYmIGxvZ2ljYWxIZWlnaHRJc0F1dG8gJiYgIWxvZ2ljYWxCb3R0b21Jc0F1dG8p
IHsKICAgICAgICAgICAgIC8vIFJVTEUgNTogKHNvbHZlIG9mIGhlaWdodCkKLSAgICAgICAgICAg
IGxvZ2ljYWxUb3BWYWx1ZSA9IHZhbHVlRm9yTGVuZ3RoKGxvZ2ljYWxUb3AsIGNvbnRhaW5lckxv
Z2ljYWxIZWlnaHQsIHJlbmRlclZpZXcpOwotICAgICAgICAgICAgbG9naWNhbEhlaWdodFZhbHVl
ID0gbWF4PExheW91dFVuaXQ+KDAsIGF2YWlsYWJsZVNwYWNlIC0gKGxvZ2ljYWxUb3BWYWx1ZSAr
IHZhbHVlRm9yTGVuZ3RoKGxvZ2ljYWxCb3R0b20sIGNvbnRhaW5lckxvZ2ljYWxIZWlnaHQsIHJl
bmRlclZpZXcpKSk7CisgICAgICAgICAgICBsb2dpY2FsVG9wVmFsdWUgPSB2YWx1ZUZvckxlbmd0
aChsb2dpY2FsVG9wLCBjb250YWluZXJMb2dpY2FsSGVpZ2h0KTsKKyAgICAgICAgICAgIGxvZ2lj
YWxIZWlnaHRWYWx1ZSA9IG1heDxMYXlvdXRVbml0PigwLCBhdmFpbGFibGVTcGFjZSAtIChsb2dp
Y2FsVG9wVmFsdWUgKyB2YWx1ZUZvckxlbmd0aChsb2dpY2FsQm90dG9tLCBjb250YWluZXJMb2dp
Y2FsSGVpZ2h0KSkpOwogICAgICAgICB9IGVsc2UgaWYgKCFsb2dpY2FsVG9wSXNBdXRvICYmICFs
b2dpY2FsSGVpZ2h0SXNBdXRvICYmIGxvZ2ljYWxCb3R0b21Jc0F1dG8pIHsKICAgICAgICAgICAg
IC8vIFJVTEUgNjogKG5vIG5lZWQgc29sdmUgb2YgYm90dG9tKQotICAgICAgICAgICAgbG9naWNh
bEhlaWdodFZhbHVlID0gYWRqdXN0Q29udGVudEJveExvZ2ljYWxIZWlnaHRGb3JCb3hTaXppbmco
dmFsdWVGb3JMZW5ndGgobG9naWNhbEhlaWdodExlbmd0aCwgY29udGFpbmVyTG9naWNhbEhlaWdo
dCwgcmVuZGVyVmlldykpOwotICAgICAgICAgICAgbG9naWNhbFRvcFZhbHVlID0gdmFsdWVGb3JM
ZW5ndGgobG9naWNhbFRvcCwgY29udGFpbmVyTG9naWNhbEhlaWdodCwgcmVuZGVyVmlldyk7Cisg
ICAgICAgICAgICBsb2dpY2FsSGVpZ2h0VmFsdWUgPSBhZGp1c3RDb250ZW50Qm94TG9naWNhbEhl
aWdodEZvckJveFNpemluZyh2YWx1ZUZvckxlbmd0aChsb2dpY2FsSGVpZ2h0TGVuZ3RoLCBjb250
YWluZXJMb2dpY2FsSGVpZ2h0KSk7CisgICAgICAgICAgICBsb2dpY2FsVG9wVmFsdWUgPSB2YWx1
ZUZvckxlbmd0aChsb2dpY2FsVG9wLCBjb250YWluZXJMb2dpY2FsSGVpZ2h0KTsKICAgICAgICAg
fQogICAgIH0KICAgICBjb21wdXRlZFZhbHVlcy5tX2V4dGVudCA9IGxvZ2ljYWxIZWlnaHRWYWx1
ZTsKQEAgLTM2NjYsMTQgKzM2NTcsMTMgQEAgdm9pZCBSZW5kZXJCb3g6OmNvbXB1dGVQb3NpdGlv
bmVkTG9naWNhbFdpZHRoUmVwbGFjZWQoTG9naWNhbEV4dGVudENvbXB1dGVkVmFsdWUKICAgICBc
Ki0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tKi8KICAgICBMYXlvdXRVbml0IGxvZ2ljYWxMZWZ0VmFsdWUgPSAwOwog
ICAgIExheW91dFVuaXQgbG9naWNhbFJpZ2h0VmFsdWUgPSAwOwotICAgIFJlbmRlclZpZXcqIHJl
bmRlclZpZXcgPSB2aWV3KCk7CiAKICAgICBpZiAobWFyZ2luTG9naWNhbExlZnQuaXNBdXRvKCkg
JiYgbWFyZ2luTG9naWNhbFJpZ2h0LmlzQXV0bygpKSB7CiAgICAgICAgIC8vICdsZWZ0JyBhbmQg
J3JpZ2h0JyBjYW5ub3QgYmUgJ2F1dG8nIGR1ZSB0byBzdGVwIDMKICAgICAgICAgQVNTRVJUKCEo
bG9naWNhbExlZnQuaXNBdXRvKCkgJiYgbG9naWNhbFJpZ2h0LmlzQXV0bygpKSk7CiAKLSAgICAg
ICAgbG9naWNhbExlZnRWYWx1ZSA9IHZhbHVlRm9yTGVuZ3RoKGxvZ2ljYWxMZWZ0LCBjb250YWlu
ZXJMb2dpY2FsV2lkdGgsIHJlbmRlclZpZXcpOwotICAgICAgICBsb2dpY2FsUmlnaHRWYWx1ZSA9
IHZhbHVlRm9yTGVuZ3RoKGxvZ2ljYWxSaWdodCwgY29udGFpbmVyTG9naWNhbFdpZHRoLCByZW5k
ZXJWaWV3KTsKKyAgICAgICAgbG9naWNhbExlZnRWYWx1ZSA9IHZhbHVlRm9yTGVuZ3RoKGxvZ2lj
YWxMZWZ0LCBjb250YWluZXJMb2dpY2FsV2lkdGgpOworICAgICAgICBsb2dpY2FsUmlnaHRWYWx1
ZSA9IHZhbHVlRm9yTGVuZ3RoKGxvZ2ljYWxSaWdodCwgY29udGFpbmVyTG9naWNhbFdpZHRoKTsK
IAogICAgICAgICBMYXlvdXRVbml0IGRpZmZlcmVuY2UgPSBhdmFpbGFibGVTcGFjZSAtIChsb2dp
Y2FsTGVmdFZhbHVlICsgbG9naWNhbFJpZ2h0VmFsdWUpOwogICAgICAgICBpZiAoZGlmZmVyZW5j
ZSA+IDApIHsKQEAgLTM2OTYsMzkgKzM2ODYsMzkgQEAgdm9pZCBSZW5kZXJCb3g6OmNvbXB1dGVQ
b3NpdGlvbmVkTG9naWNhbFdpZHRoUmVwbGFjZWQoTG9naWNhbEV4dGVudENvbXB1dGVkVmFsdWUK
ICAgICAgKiAgICB0aGF0IHZhbHVlLgogICAgIFwqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogICAgIH0gZWxz
ZSBpZiAobG9naWNhbExlZnQuaXNBdXRvKCkpIHsKLSAgICAgICAgbWFyZ2luTG9naWNhbExlZnRB
bGlhcyA9IHZhbHVlRm9yTGVuZ3RoKG1hcmdpbkxvZ2ljYWxMZWZ0LCBjb250YWluZXJSZWxhdGl2
ZUxvZ2ljYWxXaWR0aCwgcmVuZGVyVmlldyk7Ci0gICAgICAgIG1hcmdpbkxvZ2ljYWxSaWdodEFs
aWFzID0gdmFsdWVGb3JMZW5ndGgobWFyZ2luTG9naWNhbFJpZ2h0LCBjb250YWluZXJSZWxhdGl2
ZUxvZ2ljYWxXaWR0aCwgcmVuZGVyVmlldyk7Ci0gICAgICAgIGxvZ2ljYWxSaWdodFZhbHVlID0g
dmFsdWVGb3JMZW5ndGgobG9naWNhbFJpZ2h0LCBjb250YWluZXJMb2dpY2FsV2lkdGgsIHJlbmRl
clZpZXcpOworICAgICAgICBtYXJnaW5Mb2dpY2FsTGVmdEFsaWFzID0gdmFsdWVGb3JMZW5ndGgo
bWFyZ2luTG9naWNhbExlZnQsIGNvbnRhaW5lclJlbGF0aXZlTG9naWNhbFdpZHRoKTsKKyAgICAg
ICAgbWFyZ2luTG9naWNhbFJpZ2h0QWxpYXMgPSB2YWx1ZUZvckxlbmd0aChtYXJnaW5Mb2dpY2Fs
UmlnaHQsIGNvbnRhaW5lclJlbGF0aXZlTG9naWNhbFdpZHRoKTsKKyAgICAgICAgbG9naWNhbFJp
Z2h0VmFsdWUgPSB2YWx1ZUZvckxlbmd0aChsb2dpY2FsUmlnaHQsIGNvbnRhaW5lckxvZ2ljYWxX
aWR0aCk7CiAKICAgICAgICAgLy8gU29sdmUgZm9yICdsZWZ0JwogICAgICAgICBsb2dpY2FsTGVm
dFZhbHVlID0gYXZhaWxhYmxlU3BhY2UgLSAobG9naWNhbFJpZ2h0VmFsdWUgKyBtYXJnaW5Mb2dp
Y2FsTGVmdEFsaWFzICsgbWFyZ2luTG9naWNhbFJpZ2h0QWxpYXMpOwogICAgIH0gZWxzZSBpZiAo
bG9naWNhbFJpZ2h0LmlzQXV0bygpKSB7Ci0gICAgICAgIG1hcmdpbkxvZ2ljYWxMZWZ0QWxpYXMg
PSB2YWx1ZUZvckxlbmd0aChtYXJnaW5Mb2dpY2FsTGVmdCwgY29udGFpbmVyUmVsYXRpdmVMb2dp
Y2FsV2lkdGgsIHJlbmRlclZpZXcpOwotICAgICAgICBtYXJnaW5Mb2dpY2FsUmlnaHRBbGlhcyA9
IHZhbHVlRm9yTGVuZ3RoKG1hcmdpbkxvZ2ljYWxSaWdodCwgY29udGFpbmVyUmVsYXRpdmVMb2dp
Y2FsV2lkdGgsIHJlbmRlclZpZXcpOwotICAgICAgICBsb2dpY2FsTGVmdFZhbHVlID0gdmFsdWVG
b3JMZW5ndGgobG9naWNhbExlZnQsIGNvbnRhaW5lckxvZ2ljYWxXaWR0aCwgcmVuZGVyVmlldyk7
CisgICAgICAgIG1hcmdpbkxvZ2ljYWxMZWZ0QWxpYXMgPSB2YWx1ZUZvckxlbmd0aChtYXJnaW5M
b2dpY2FsTGVmdCwgY29udGFpbmVyUmVsYXRpdmVMb2dpY2FsV2lkdGgpOworICAgICAgICBtYXJn
aW5Mb2dpY2FsUmlnaHRBbGlhcyA9IHZhbHVlRm9yTGVuZ3RoKG1hcmdpbkxvZ2ljYWxSaWdodCwg
Y29udGFpbmVyUmVsYXRpdmVMb2dpY2FsV2lkdGgpOworICAgICAgICBsb2dpY2FsTGVmdFZhbHVl
ID0gdmFsdWVGb3JMZW5ndGgobG9naWNhbExlZnQsIGNvbnRhaW5lckxvZ2ljYWxXaWR0aCk7CiAK
ICAgICAgICAgLy8gU29sdmUgZm9yICdyaWdodCcKICAgICAgICAgbG9naWNhbFJpZ2h0VmFsdWUg
PSBhdmFpbGFibGVTcGFjZSAtIChsb2dpY2FsTGVmdFZhbHVlICsgbWFyZ2luTG9naWNhbExlZnRB
bGlhcyArIG1hcmdpbkxvZ2ljYWxSaWdodEFsaWFzKTsKICAgICB9IGVsc2UgaWYgKG1hcmdpbkxv
Z2ljYWxMZWZ0LmlzQXV0bygpKSB7Ci0gICAgICAgIG1hcmdpbkxvZ2ljYWxSaWdodEFsaWFzID0g
dmFsdWVGb3JMZW5ndGgobWFyZ2luTG9naWNhbFJpZ2h0LCBjb250YWluZXJSZWxhdGl2ZUxvZ2lj
YWxXaWR0aCwgcmVuZGVyVmlldyk7Ci0gICAgICAgIGxvZ2ljYWxMZWZ0VmFsdWUgPSB2YWx1ZUZv
ckxlbmd0aChsb2dpY2FsTGVmdCwgY29udGFpbmVyTG9naWNhbFdpZHRoLCByZW5kZXJWaWV3KTsK
LSAgICAgICAgbG9naWNhbFJpZ2h0VmFsdWUgPSB2YWx1ZUZvckxlbmd0aChsb2dpY2FsUmlnaHQs
IGNvbnRhaW5lckxvZ2ljYWxXaWR0aCwgcmVuZGVyVmlldyk7CisgICAgICAgIG1hcmdpbkxvZ2lj
YWxSaWdodEFsaWFzID0gdmFsdWVGb3JMZW5ndGgobWFyZ2luTG9naWNhbFJpZ2h0LCBjb250YWlu
ZXJSZWxhdGl2ZUxvZ2ljYWxXaWR0aCk7CisgICAgICAgIGxvZ2ljYWxMZWZ0VmFsdWUgPSB2YWx1
ZUZvckxlbmd0aChsb2dpY2FsTGVmdCwgY29udGFpbmVyTG9naWNhbFdpZHRoKTsKKyAgICAgICAg
bG9naWNhbFJpZ2h0VmFsdWUgPSB2YWx1ZUZvckxlbmd0aChsb2dpY2FsUmlnaHQsIGNvbnRhaW5l
ckxvZ2ljYWxXaWR0aCk7CiAKICAgICAgICAgLy8gU29sdmUgZm9yICdtYXJnaW4tbGVmdCcKICAg
ICAgICAgbWFyZ2luTG9naWNhbExlZnRBbGlhcyA9IGF2YWlsYWJsZVNwYWNlIC0gKGxvZ2ljYWxM
ZWZ0VmFsdWUgKyBsb2dpY2FsUmlnaHRWYWx1ZSArIG1hcmdpbkxvZ2ljYWxSaWdodEFsaWFzKTsK
ICAgICB9IGVsc2UgaWYgKG1hcmdpbkxvZ2ljYWxSaWdodC5pc0F1dG8oKSkgewotICAgICAgICBt
YXJnaW5Mb2dpY2FsTGVmdEFsaWFzID0gdmFsdWVGb3JMZW5ndGgobWFyZ2luTG9naWNhbExlZnQs
IGNvbnRhaW5lclJlbGF0aXZlTG9naWNhbFdpZHRoLCByZW5kZXJWaWV3KTsKLSAgICAgICAgbG9n
aWNhbExlZnRWYWx1ZSA9IHZhbHVlRm9yTGVuZ3RoKGxvZ2ljYWxMZWZ0LCBjb250YWluZXJMb2dp
Y2FsV2lkdGgsIHJlbmRlclZpZXcpOwotICAgICAgICBsb2dpY2FsUmlnaHRWYWx1ZSA9IHZhbHVl
Rm9yTGVuZ3RoKGxvZ2ljYWxSaWdodCwgY29udGFpbmVyTG9naWNhbFdpZHRoLCByZW5kZXJWaWV3
KTsKKyAgICAgICAgbWFyZ2luTG9naWNhbExlZnRBbGlhcyA9IHZhbHVlRm9yTGVuZ3RoKG1hcmdp
bkxvZ2ljYWxMZWZ0LCBjb250YWluZXJSZWxhdGl2ZUxvZ2ljYWxXaWR0aCk7CisgICAgICAgIGxv
Z2ljYWxMZWZ0VmFsdWUgPSB2YWx1ZUZvckxlbmd0aChsb2dpY2FsTGVmdCwgY29udGFpbmVyTG9n
aWNhbFdpZHRoKTsKKyAgICAgICAgbG9naWNhbFJpZ2h0VmFsdWUgPSB2YWx1ZUZvckxlbmd0aChs
b2dpY2FsUmlnaHQsIGNvbnRhaW5lckxvZ2ljYWxXaWR0aCk7CiAKICAgICAgICAgLy8gU29sdmUg
Zm9yICdtYXJnaW4tcmlnaHQnCiAgICAgICAgIG1hcmdpbkxvZ2ljYWxSaWdodEFsaWFzID0gYXZh
aWxhYmxlU3BhY2UgLSAobG9naWNhbExlZnRWYWx1ZSArIGxvZ2ljYWxSaWdodFZhbHVlICsgbWFy
Z2luTG9naWNhbExlZnRBbGlhcyk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgLy8gTm90aGluZyBp
cyAnYXV0bycsIGp1c3QgY2FsY3VsYXRlIHRoZSB2YWx1ZXMuCi0gICAgICAgIG1hcmdpbkxvZ2lj
YWxMZWZ0QWxpYXMgPSB2YWx1ZUZvckxlbmd0aChtYXJnaW5Mb2dpY2FsTGVmdCwgY29udGFpbmVy
UmVsYXRpdmVMb2dpY2FsV2lkdGgsIHJlbmRlclZpZXcpOwotICAgICAgICBtYXJnaW5Mb2dpY2Fs
UmlnaHRBbGlhcyA9IHZhbHVlRm9yTGVuZ3RoKG1hcmdpbkxvZ2ljYWxSaWdodCwgY29udGFpbmVy
UmVsYXRpdmVMb2dpY2FsV2lkdGgsIHJlbmRlclZpZXcpOwotICAgICAgICBsb2dpY2FsUmlnaHRW
YWx1ZSA9IHZhbHVlRm9yTGVuZ3RoKGxvZ2ljYWxSaWdodCwgY29udGFpbmVyTG9naWNhbFdpZHRo
LCByZW5kZXJWaWV3KTsKLSAgICAgICAgbG9naWNhbExlZnRWYWx1ZSA9IHZhbHVlRm9yTGVuZ3Ro
KGxvZ2ljYWxMZWZ0LCBjb250YWluZXJMb2dpY2FsV2lkdGgsIHJlbmRlclZpZXcpOworICAgICAg
ICBtYXJnaW5Mb2dpY2FsTGVmdEFsaWFzID0gdmFsdWVGb3JMZW5ndGgobWFyZ2luTG9naWNhbExl
ZnQsIGNvbnRhaW5lclJlbGF0aXZlTG9naWNhbFdpZHRoKTsKKyAgICAgICAgbWFyZ2luTG9naWNh
bFJpZ2h0QWxpYXMgPSB2YWx1ZUZvckxlbmd0aChtYXJnaW5Mb2dpY2FsUmlnaHQsIGNvbnRhaW5l
clJlbGF0aXZlTG9naWNhbFdpZHRoKTsKKyAgICAgICAgbG9naWNhbFJpZ2h0VmFsdWUgPSB2YWx1
ZUZvckxlbmd0aChsb2dpY2FsUmlnaHQsIGNvbnRhaW5lckxvZ2ljYWxXaWR0aCk7CisgICAgICAg
IGxvZ2ljYWxMZWZ0VmFsdWUgPSB2YWx1ZUZvckxlbmd0aChsb2dpY2FsTGVmdCwgY29udGFpbmVy
TG9naWNhbFdpZHRoKTsKICAgICAgICAgLy8gSWYgdGhlIGNvbnRhaW5pbmcgYmxvY2sgaXMgcmln
aHQtdG8tbGVmdCwgdGhlbiBwdXNoIHRoZSBsZWZ0IHBvc2l0aW9uIGFzIGZhciB0byB0aGUgcmln
aHQgYXMgcG9zc2libGUKICAgICAgICAgaWYgKGNvbnRhaW5lckRpcmVjdGlvbiA9PSBSVEwpIHsK
ICAgICAgICAgICAgIGludCB0b3RhbExvZ2ljYWxXaWR0aCA9IGNvbXB1dGVkVmFsdWVzLm1fZXh0
ZW50ICsgbG9naWNhbExlZnRWYWx1ZSArIGxvZ2ljYWxSaWdodFZhbHVlICsgIG1hcmdpbkxvZ2lj
YWxMZWZ0QWxpYXMgKyBtYXJnaW5Mb2dpY2FsUmlnaHRBbGlhczsKQEAgLTM3OTAsNyArMzc4MCw2
IEBAIHZvaWQgUmVuZGVyQm94Ojpjb21wdXRlUG9zaXRpb25lZExvZ2ljYWxIZWlnaHRSZXBsYWNl
ZChMb2dpY2FsRXh0ZW50Q29tcHV0ZWRWYWx1CiAKICAgICBMZW5ndGggbG9naWNhbFRvcCA9IHN0
eWxlKCktPmxvZ2ljYWxUb3AoKTsKICAgICBMZW5ndGggbG9naWNhbEJvdHRvbSA9IHN0eWxlKCkt
PmxvZ2ljYWxCb3R0b20oKTsKLSAgICBSZW5kZXJWaWV3KiByZW5kZXJWaWV3ID0gdmlldygpOwog
CiAgICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSpcCiAgICAgICogMS4gVGhlIHVzZWQgdmFsdWUgb2YgJ2hl
aWdodCcgaXMgZGV0ZXJtaW5lZCBhcyBmb3IgaW5saW5lIHJlcGxhY2VkCkBAIC0zODM0LDggKzM4
MjMsOCBAQCB2b2lkIFJlbmRlckJveDo6Y29tcHV0ZVBvc2l0aW9uZWRMb2dpY2FsSGVpZ2h0UmVw
bGFjZWQoTG9naWNhbEV4dGVudENvbXB1dGVkVmFsdQogICAgICAgICAvLyAndG9wJyBhbmQgJ2Jv
dHRvbScgY2Fubm90IGJlICdhdXRvJyBkdWUgdG8gc3RlcCAyIGFuZCAzIGNvbWJpbmVkLgogICAg
ICAgICBBU1NFUlQoIShsb2dpY2FsVG9wLmlzQXV0bygpIHx8IGxvZ2ljYWxCb3R0b20uaXNBdXRv
KCkpKTsKIAotICAgICAgICBsb2dpY2FsVG9wVmFsdWUgPSB2YWx1ZUZvckxlbmd0aChsb2dpY2Fs
VG9wLCBjb250YWluZXJMb2dpY2FsSGVpZ2h0LCByZW5kZXJWaWV3KTsKLSAgICAgICAgbG9naWNh
bEJvdHRvbVZhbHVlID0gdmFsdWVGb3JMZW5ndGgobG9naWNhbEJvdHRvbSwgY29udGFpbmVyTG9n
aWNhbEhlaWdodCwgcmVuZGVyVmlldyk7CisgICAgICAgIGxvZ2ljYWxUb3BWYWx1ZSA9IHZhbHVl
Rm9yTGVuZ3RoKGxvZ2ljYWxUb3AsIGNvbnRhaW5lckxvZ2ljYWxIZWlnaHQpOworICAgICAgICBs
b2dpY2FsQm90dG9tVmFsdWUgPSB2YWx1ZUZvckxlbmd0aChsb2dpY2FsQm90dG9tLCBjb250YWlu
ZXJMb2dpY2FsSGVpZ2h0KTsKIAogICAgICAgICBMYXlvdXRVbml0IGRpZmZlcmVuY2UgPSBhdmFp
bGFibGVTcGFjZSAtIChsb2dpY2FsVG9wVmFsdWUgKyBsb2dpY2FsQm90dG9tVmFsdWUpOwogICAg
ICAgICAvLyBOT1RFOiBUaGlzIG1heSByZXN1bHQgaW4gbmVnYXRpdmUgdmFsdWVzLgpAQCAtMzg0
NywzOSArMzgzNiwzOSBAQCB2b2lkIFJlbmRlckJveDo6Y29tcHV0ZVBvc2l0aW9uZWRMb2dpY2Fs
SGVpZ2h0UmVwbGFjZWQoTG9naWNhbEV4dGVudENvbXB1dGVkVmFsdQogICAgICAqICAgIGZvciB0
aGF0IHZhbHVlLgogICAgIFwqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogICAgIH0gZWxzZSBpZiAobG9naWNh
bFRvcC5pc0F1dG8oKSkgewotICAgICAgICBtYXJnaW5CZWZvcmVBbGlhcyA9IHZhbHVlRm9yTGVu
Z3RoKG1hcmdpbkJlZm9yZSwgY29udGFpbmVyUmVsYXRpdmVMb2dpY2FsV2lkdGgsIHJlbmRlclZp
ZXcpOwotICAgICAgICBtYXJnaW5BZnRlckFsaWFzID0gdmFsdWVGb3JMZW5ndGgobWFyZ2luQWZ0
ZXIsIGNvbnRhaW5lclJlbGF0aXZlTG9naWNhbFdpZHRoLCByZW5kZXJWaWV3KTsKLSAgICAgICAg
bG9naWNhbEJvdHRvbVZhbHVlID0gdmFsdWVGb3JMZW5ndGgobG9naWNhbEJvdHRvbSwgY29udGFp
bmVyTG9naWNhbEhlaWdodCwgcmVuZGVyVmlldyk7CisgICAgICAgIG1hcmdpbkJlZm9yZUFsaWFz
ID0gdmFsdWVGb3JMZW5ndGgobWFyZ2luQmVmb3JlLCBjb250YWluZXJSZWxhdGl2ZUxvZ2ljYWxX
aWR0aCk7CisgICAgICAgIG1hcmdpbkFmdGVyQWxpYXMgPSB2YWx1ZUZvckxlbmd0aChtYXJnaW5B
ZnRlciwgY29udGFpbmVyUmVsYXRpdmVMb2dpY2FsV2lkdGgpOworICAgICAgICBsb2dpY2FsQm90
dG9tVmFsdWUgPSB2YWx1ZUZvckxlbmd0aChsb2dpY2FsQm90dG9tLCBjb250YWluZXJMb2dpY2Fs
SGVpZ2h0KTsKIAogICAgICAgICAvLyBTb2x2ZSBmb3IgJ3RvcCcKICAgICAgICAgbG9naWNhbFRv
cFZhbHVlID0gYXZhaWxhYmxlU3BhY2UgLSAobG9naWNhbEJvdHRvbVZhbHVlICsgbWFyZ2luQmVm
b3JlQWxpYXMgKyBtYXJnaW5BZnRlckFsaWFzKTsKICAgICB9IGVsc2UgaWYgKGxvZ2ljYWxCb3R0
b20uaXNBdXRvKCkpIHsKLSAgICAgICAgbWFyZ2luQmVmb3JlQWxpYXMgPSB2YWx1ZUZvckxlbmd0
aChtYXJnaW5CZWZvcmUsIGNvbnRhaW5lclJlbGF0aXZlTG9naWNhbFdpZHRoLCByZW5kZXJWaWV3
KTsKLSAgICAgICAgbWFyZ2luQWZ0ZXJBbGlhcyA9IHZhbHVlRm9yTGVuZ3RoKG1hcmdpbkFmdGVy
LCBjb250YWluZXJSZWxhdGl2ZUxvZ2ljYWxXaWR0aCwgcmVuZGVyVmlldyk7Ci0gICAgICAgIGxv
Z2ljYWxUb3BWYWx1ZSA9IHZhbHVlRm9yTGVuZ3RoKGxvZ2ljYWxUb3AsIGNvbnRhaW5lckxvZ2lj
YWxIZWlnaHQsIHJlbmRlclZpZXcpOworICAgICAgICBtYXJnaW5CZWZvcmVBbGlhcyA9IHZhbHVl
Rm9yTGVuZ3RoKG1hcmdpbkJlZm9yZSwgY29udGFpbmVyUmVsYXRpdmVMb2dpY2FsV2lkdGgpOwor
ICAgICAgICBtYXJnaW5BZnRlckFsaWFzID0gdmFsdWVGb3JMZW5ndGgobWFyZ2luQWZ0ZXIsIGNv
bnRhaW5lclJlbGF0aXZlTG9naWNhbFdpZHRoKTsKKyAgICAgICAgbG9naWNhbFRvcFZhbHVlID0g
dmFsdWVGb3JMZW5ndGgobG9naWNhbFRvcCwgY29udGFpbmVyTG9naWNhbEhlaWdodCk7CiAKICAg
ICAgICAgLy8gU29sdmUgZm9yICdib3R0b20nCiAgICAgICAgIC8vIE5PVEU6IEl0IGlzIG5vdCBu
ZWNlc3NhcnkgdG8gc29sdmUgZm9yICdib3R0b20nIGJlY2F1c2Ugd2UgZG9uJ3QgZXZlcgogICAg
ICAgICAvLyB1c2UgdGhlIHZhbHVlLgogICAgIH0gZWxzZSBpZiAobWFyZ2luQmVmb3JlLmlzQXV0
bygpKSB7Ci0gICAgICAgIG1hcmdpbkFmdGVyQWxpYXMgPSB2YWx1ZUZvckxlbmd0aChtYXJnaW5B
ZnRlciwgY29udGFpbmVyUmVsYXRpdmVMb2dpY2FsV2lkdGgsIHJlbmRlclZpZXcpOwotICAgICAg
ICBsb2dpY2FsVG9wVmFsdWUgPSB2YWx1ZUZvckxlbmd0aChsb2dpY2FsVG9wLCBjb250YWluZXJM
b2dpY2FsSGVpZ2h0LCByZW5kZXJWaWV3KTsKLSAgICAgICAgbG9naWNhbEJvdHRvbVZhbHVlID0g
dmFsdWVGb3JMZW5ndGgobG9naWNhbEJvdHRvbSwgY29udGFpbmVyTG9naWNhbEhlaWdodCwgcmVu
ZGVyVmlldyk7CisgICAgICAgIG1hcmdpbkFmdGVyQWxpYXMgPSB2YWx1ZUZvckxlbmd0aChtYXJn
aW5BZnRlciwgY29udGFpbmVyUmVsYXRpdmVMb2dpY2FsV2lkdGgpOworICAgICAgICBsb2dpY2Fs
VG9wVmFsdWUgPSB2YWx1ZUZvckxlbmd0aChsb2dpY2FsVG9wLCBjb250YWluZXJMb2dpY2FsSGVp
Z2h0KTsKKyAgICAgICAgbG9naWNhbEJvdHRvbVZhbHVlID0gdmFsdWVGb3JMZW5ndGgobG9naWNh
bEJvdHRvbSwgY29udGFpbmVyTG9naWNhbEhlaWdodCk7CiAKICAgICAgICAgLy8gU29sdmUgZm9y
ICdtYXJnaW4tdG9wJwogICAgICAgICBtYXJnaW5CZWZvcmVBbGlhcyA9IGF2YWlsYWJsZVNwYWNl
IC0gKGxvZ2ljYWxUb3BWYWx1ZSArIGxvZ2ljYWxCb3R0b21WYWx1ZSArIG1hcmdpbkFmdGVyQWxp
YXMpOwogICAgIH0gZWxzZSBpZiAobWFyZ2luQWZ0ZXIuaXNBdXRvKCkpIHsKLSAgICAgICAgbWFy
Z2luQmVmb3JlQWxpYXMgPSB2YWx1ZUZvckxlbmd0aChtYXJnaW5CZWZvcmUsIGNvbnRhaW5lclJl
bGF0aXZlTG9naWNhbFdpZHRoLCByZW5kZXJWaWV3KTsKLSAgICAgICAgbG9naWNhbFRvcFZhbHVl
ID0gdmFsdWVGb3JMZW5ndGgobG9naWNhbFRvcCwgY29udGFpbmVyTG9naWNhbEhlaWdodCwgcmVu
ZGVyVmlldyk7Ci0gICAgICAgIGxvZ2ljYWxCb3R0b21WYWx1ZSA9IHZhbHVlRm9yTGVuZ3RoKGxv
Z2ljYWxCb3R0b20sIGNvbnRhaW5lckxvZ2ljYWxIZWlnaHQsIHJlbmRlclZpZXcpOworICAgICAg
ICBtYXJnaW5CZWZvcmVBbGlhcyA9IHZhbHVlRm9yTGVuZ3RoKG1hcmdpbkJlZm9yZSwgY29udGFp
bmVyUmVsYXRpdmVMb2dpY2FsV2lkdGgpOworICAgICAgICBsb2dpY2FsVG9wVmFsdWUgPSB2YWx1
ZUZvckxlbmd0aChsb2dpY2FsVG9wLCBjb250YWluZXJMb2dpY2FsSGVpZ2h0KTsKKyAgICAgICAg
bG9naWNhbEJvdHRvbVZhbHVlID0gdmFsdWVGb3JMZW5ndGgobG9naWNhbEJvdHRvbSwgY29udGFp
bmVyTG9naWNhbEhlaWdodCk7CiAKICAgICAgICAgLy8gU29sdmUgZm9yICdtYXJnaW4tYm90dG9t
JwogICAgICAgICBtYXJnaW5BZnRlckFsaWFzID0gYXZhaWxhYmxlU3BhY2UgLSAobG9naWNhbFRv
cFZhbHVlICsgbG9naWNhbEJvdHRvbVZhbHVlICsgbWFyZ2luQmVmb3JlQWxpYXMpOwogICAgIH0g
ZWxzZSB7CiAgICAgICAgIC8vIE5vdGhpbmcgaXMgJ2F1dG8nLCBqdXN0IGNhbGN1bGF0ZSB0aGUg
dmFsdWVzLgotICAgICAgICBtYXJnaW5CZWZvcmVBbGlhcyA9IHZhbHVlRm9yTGVuZ3RoKG1hcmdp
bkJlZm9yZSwgY29udGFpbmVyUmVsYXRpdmVMb2dpY2FsV2lkdGgsIHJlbmRlclZpZXcpOwotICAg
ICAgICBtYXJnaW5BZnRlckFsaWFzID0gdmFsdWVGb3JMZW5ndGgobWFyZ2luQWZ0ZXIsIGNvbnRh
aW5lclJlbGF0aXZlTG9naWNhbFdpZHRoLCByZW5kZXJWaWV3KTsKLSAgICAgICAgbG9naWNhbFRv
cFZhbHVlID0gdmFsdWVGb3JMZW5ndGgobG9naWNhbFRvcCwgY29udGFpbmVyTG9naWNhbEhlaWdo
dCwgcmVuZGVyVmlldyk7CisgICAgICAgIG1hcmdpbkJlZm9yZUFsaWFzID0gdmFsdWVGb3JMZW5n
dGgobWFyZ2luQmVmb3JlLCBjb250YWluZXJSZWxhdGl2ZUxvZ2ljYWxXaWR0aCk7CisgICAgICAg
IG1hcmdpbkFmdGVyQWxpYXMgPSB2YWx1ZUZvckxlbmd0aChtYXJnaW5BZnRlciwgY29udGFpbmVy
UmVsYXRpdmVMb2dpY2FsV2lkdGgpOworICAgICAgICBsb2dpY2FsVG9wVmFsdWUgPSB2YWx1ZUZv
ckxlbmd0aChsb2dpY2FsVG9wLCBjb250YWluZXJMb2dpY2FsSGVpZ2h0KTsKICAgICAgICAgLy8g
Tk9URTogSXQgaXMgbm90IG5lY2Vzc2FyeSB0byBzb2x2ZSBmb3IgJ2JvdHRvbScgYmVjYXVzZSB3
ZSBkb24ndCBldmVyCiAgICAgICAgIC8vIHVzZSB0aGUgdmFsdWUuCiAgICAgIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCmluZGV4IDIw
YzYxOGJiYTFhYWZjN2ExZGZlYTk2NGZjM2JmMzY5OTcxYTE2M2QuLjQyOWU1M2NkMGE4Nzg0MDM2
MzFmNDQ4Mjg3Y2E0YzU4YjJjZmVmYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcApAQCAtNDA1LDExICs0MDUsMTEgQEAgTGF5b3V0
U2l6ZSBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cmVsYXRpdmVQb3NpdGlvbk9mZnNldCgpIGNvbnN0
CiAgICAgLy8gY2FsbCBhdmFpbGFibGVXaWR0aCBvbiBvdXIgY29udGFpbmluZyBibG9jay4KICAg
ICBpZiAoIXN0eWxlKCktPmxlZnQoKS5pc0F1dG8oKSkgewogICAgICAgICBpZiAoIXN0eWxlKCkt
PnJpZ2h0KCkuaXNBdXRvKCkgJiYgIWNvbnRhaW5pbmdCbG9jay0+c3R5bGUoKS0+aXNMZWZ0VG9S
aWdodERpcmVjdGlvbigpKQotICAgICAgICAgICAgb2Zmc2V0LnNldFdpZHRoKC12YWx1ZUZvckxl
bmd0aChzdHlsZSgpLT5yaWdodCgpLCBjb250YWluaW5nQmxvY2stPmF2YWlsYWJsZVdpZHRoKCks
IHZpZXcoKSkpOworICAgICAgICAgICAgb2Zmc2V0LnNldFdpZHRoKC12YWx1ZUZvckxlbmd0aChz
dHlsZSgpLT5yaWdodCgpLCBjb250YWluaW5nQmxvY2stPmF2YWlsYWJsZVdpZHRoKCkpKTsKICAg
ICAgICAgZWxzZQotICAgICAgICAgICAgb2Zmc2V0LmV4cGFuZCh2YWx1ZUZvckxlbmd0aChzdHls
ZSgpLT5sZWZ0KCksIGNvbnRhaW5pbmdCbG9jay0+YXZhaWxhYmxlV2lkdGgoKSwgdmlldygpKSwg
MCk7CisgICAgICAgICAgICBvZmZzZXQuZXhwYW5kKHZhbHVlRm9yTGVuZ3RoKHN0eWxlKCktPmxl
ZnQoKSwgY29udGFpbmluZ0Jsb2NrLT5hdmFpbGFibGVXaWR0aCgpKSwgMCk7CiAgICAgfSBlbHNl
IGlmICghc3R5bGUoKS0+cmlnaHQoKS5pc0F1dG8oKSkgewotICAgICAgICBvZmZzZXQuZXhwYW5k
KC12YWx1ZUZvckxlbmd0aChzdHlsZSgpLT5yaWdodCgpLCBjb250YWluaW5nQmxvY2stPmF2YWls
YWJsZVdpZHRoKCksIHZpZXcoKSksIDApOworICAgICAgICBvZmZzZXQuZXhwYW5kKC12YWx1ZUZv
ckxlbmd0aChzdHlsZSgpLT5yaWdodCgpLCBjb250YWluaW5nQmxvY2stPmF2YWlsYWJsZVdpZHRo
KCkpLCAwKTsKICAgICB9CiAKICAgICAvLyBJZiB0aGUgY29udGFpbmluZyBibG9jayBvZiBhIHJl
bGF0aXZlbHkgcG9zaXRpb25lZCBlbGVtZW50IGRvZXMgbm90CkBAIC00MjIsMTMgKzQyMiwxMyBA
QCBMYXlvdXRTaXplIFJlbmRlckJveE1vZGVsT2JqZWN0OjpyZWxhdGl2ZVBvc2l0aW9uT2Zmc2V0
KCkgY29uc3QKICAgICAgICAgJiYgKCFjb250YWluaW5nQmxvY2stPmhhc0F1dG9IZWlnaHRPckNv
bnRhaW5pbmdCbG9ja1dpdGhBdXRvSGVpZ2h0KCkKICAgICAgICAgICAgIHx8ICFzdHlsZSgpLT50
b3AoKS5pc1BlcmNlbnQoKQogICAgICAgICAgICAgfHwgY29udGFpbmluZ0Jsb2NrLT5zdHJldGNo
ZXNUb1ZpZXdwb3J0KCkpKQotICAgICAgICBvZmZzZXQuZXhwYW5kKDAsIHZhbHVlRm9yTGVuZ3Ro
KHN0eWxlKCktPnRvcCgpLCBjb250YWluaW5nQmxvY2stPmF2YWlsYWJsZUhlaWdodCgpLCB2aWV3
KCkpKTsKKyAgICAgICAgb2Zmc2V0LmV4cGFuZCgwLCB2YWx1ZUZvckxlbmd0aChzdHlsZSgpLT50
b3AoKSwgY29udGFpbmluZ0Jsb2NrLT5hdmFpbGFibGVIZWlnaHQoKSkpOwogCiAgICAgZWxzZSBp
ZiAoIXN0eWxlKCktPmJvdHRvbSgpLmlzQXV0bygpCiAgICAgICAgICYmICghY29udGFpbmluZ0Js
b2NrLT5oYXNBdXRvSGVpZ2h0T3JDb250YWluaW5nQmxvY2tXaXRoQXV0b0hlaWdodCgpCiAgICAg
ICAgICAgICB8fCAhc3R5bGUoKS0+Ym90dG9tKCkuaXNQZXJjZW50KCkKICAgICAgICAgICAgIHx8
IGNvbnRhaW5pbmdCbG9jay0+c3RyZXRjaGVzVG9WaWV3cG9ydCgpKSkKLSAgICAgICAgb2Zmc2V0
LmV4cGFuZCgwLCAtdmFsdWVGb3JMZW5ndGgoc3R5bGUoKS0+Ym90dG9tKCksIGNvbnRhaW5pbmdC
bG9jay0+YXZhaWxhYmxlSGVpZ2h0KCksIHZpZXcoKSkpOworICAgICAgICBvZmZzZXQuZXhwYW5k
KDAsIC12YWx1ZUZvckxlbmd0aChzdHlsZSgpLT5ib3R0b20oKSwgY29udGFpbmluZ0Jsb2NrLT5h
dmFpbGFibGVIZWlnaHQoKSkpOwogCiAgICAgcmV0dXJuIG9mZnNldDsKIH0KQEAgLTQ3OSwxMCAr
NDc5LDEwIEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OmNvbXB1dGVTdGlja3lQb3NpdGlv
bkNvbnN0cmFpbnRzKFN0aWNreVBvc2l0aW9uVmlld3BvCiAKICAgICAvLyBTdGlja3kgcG9zaXRp
b25lZCBlbGVtZW50IGlnbm9yZSBhbnkgb3ZlcnJpZGUgbG9naWNhbCB3aWR0aCBvbiB0aGUgY29u
dGFpbmluZyBibG9jayAoYXMgdGhleSBkb24ndCBjYWxsCiAgICAgLy8gY29udGFpbmluZ0Jsb2Nr
TG9naWNhbFdpZHRoRm9yQ29udGVudCkuIEl0J3MgdW5jbGVhciB3aGV0aGVyIHRoaXMgaXMgdG90
YWxseSBmaW5lLgotICAgIExheW91dEJveEV4dGVudCBtaW5NYXJnaW4obWluaW11bVZhbHVlRm9y
TGVuZ3RoKHN0eWxlKCktPm1hcmdpblRvcCgpLCBtYXhXaWR0aCwgdmlldygpKSwKLSAgICAgICAg
bWluaW11bVZhbHVlRm9yTGVuZ3RoKHN0eWxlKCktPm1hcmdpblJpZ2h0KCksIG1heFdpZHRoLCB2
aWV3KCkpLAotICAgICAgICBtaW5pbXVtVmFsdWVGb3JMZW5ndGgoc3R5bGUoKS0+bWFyZ2luQm90
dG9tKCksIG1heFdpZHRoLCB2aWV3KCkpLAotICAgICAgICBtaW5pbXVtVmFsdWVGb3JMZW5ndGgo
c3R5bGUoKS0+bWFyZ2luTGVmdCgpLCBtYXhXaWR0aCwgdmlldygpKSk7CisgICAgTGF5b3V0Qm94
RXh0ZW50IG1pbk1hcmdpbihtaW5pbXVtVmFsdWVGb3JMZW5ndGgoc3R5bGUoKS0+bWFyZ2luVG9w
KCksIG1heFdpZHRoKSwKKyAgICAgICAgbWluaW11bVZhbHVlRm9yTGVuZ3RoKHN0eWxlKCktPm1h
cmdpblJpZ2h0KCksIG1heFdpZHRoKSwKKyAgICAgICAgbWluaW11bVZhbHVlRm9yTGVuZ3RoKHN0
eWxlKCktPm1hcmdpbkJvdHRvbSgpLCBtYXhXaWR0aCksCisgICAgICAgIG1pbmltdW1WYWx1ZUZv
ckxlbmd0aChzdHlsZSgpLT5tYXJnaW5MZWZ0KCksIG1heFdpZHRoKSk7CiAKICAgICAvLyBDb21w
dXRlIHRoZSBjb250YWluZXItcmVsYXRpdmUgYXJlYSB3aXRoaW4gd2hpY2ggdGhlIHN0aWNreSBl
bGVtZW50IGlzIGFsbG93ZWQgdG8gbW92ZS4KICAgICBjb250YWluZXJDb250ZW50UmVjdC5jb250
cmFjdChtaW5NYXJnaW4pOwpAQCAtNTAzLDIyICs1MDMsMjIgQEAgdm9pZCBSZW5kZXJCb3hNb2Rl
bE9iamVjdDo6Y29tcHV0ZVN0aWNreVBvc2l0aW9uQ29uc3RyYWludHMoU3RpY2t5UG9zaXRpb25W
aWV3cG8KICAgICBjb25zdHJhaW50cy5zZXRBYnNvbHV0ZVN0aWNreUJveFJlY3QoYWJzb2x1dGVT
dGlja3lCb3hSZWN0KTsKIAogICAgIGlmICghc3R5bGUoKS0+bGVmdCgpLmlzQXV0bygpKSB7Ci0g
ICAgICAgIGNvbnN0cmFpbnRzLnNldExlZnRPZmZzZXQodmFsdWVGb3JMZW5ndGgoc3R5bGUoKS0+
bGVmdCgpLCB2aWV3cG9ydFJlY3Qud2lkdGgoKSwgdmlldygpKSk7CisgICAgICAgIGNvbnN0cmFp
bnRzLnNldExlZnRPZmZzZXQodmFsdWVGb3JMZW5ndGgoc3R5bGUoKS0+bGVmdCgpLCB2aWV3cG9y
dFJlY3Qud2lkdGgoKSkpOwogICAgICAgICBjb25zdHJhaW50cy5hZGRBbmNob3JFZGdlKFZpZXdw
b3J0Q29uc3RyYWludHM6OkFuY2hvckVkZ2VMZWZ0KTsKICAgICB9CiAKICAgICBpZiAoIXN0eWxl
KCktPnJpZ2h0KCkuaXNBdXRvKCkpIHsKLSAgICAgICAgY29uc3RyYWludHMuc2V0UmlnaHRPZmZz
ZXQodmFsdWVGb3JMZW5ndGgoc3R5bGUoKS0+cmlnaHQoKSwgdmlld3BvcnRSZWN0LndpZHRoKCks
IHZpZXcoKSkpOworICAgICAgICBjb25zdHJhaW50cy5zZXRSaWdodE9mZnNldCh2YWx1ZUZvckxl
bmd0aChzdHlsZSgpLT5yaWdodCgpLCB2aWV3cG9ydFJlY3Qud2lkdGgoKSkpOwogICAgICAgICBj
b25zdHJhaW50cy5hZGRBbmNob3JFZGdlKFZpZXdwb3J0Q29uc3RyYWludHM6OkFuY2hvckVkZ2VS
aWdodCk7CiAgICAgfQogCiAgICAgaWYgKCFzdHlsZSgpLT50b3AoKS5pc0F1dG8oKSkgewotICAg
ICAgICBjb25zdHJhaW50cy5zZXRUb3BPZmZzZXQodmFsdWVGb3JMZW5ndGgoc3R5bGUoKS0+dG9w
KCksIHZpZXdwb3J0UmVjdC5oZWlnaHQoKSwgdmlldygpKSk7CisgICAgICAgIGNvbnN0cmFpbnRz
LnNldFRvcE9mZnNldCh2YWx1ZUZvckxlbmd0aChzdHlsZSgpLT50b3AoKSwgdmlld3BvcnRSZWN0
LmhlaWdodCgpKSk7CiAgICAgICAgIGNvbnN0cmFpbnRzLmFkZEFuY2hvckVkZ2UoVmlld3BvcnRD
b25zdHJhaW50czo6QW5jaG9yRWRnZVRvcCk7CiAgICAgfQogCiAgICAgaWYgKCFzdHlsZSgpLT5i
b3R0b20oKS5pc0F1dG8oKSkgewotICAgICAgICBjb25zdHJhaW50cy5zZXRCb3R0b21PZmZzZXQo
dmFsdWVGb3JMZW5ndGgoc3R5bGUoKS0+Ym90dG9tKCksIHZpZXdwb3J0UmVjdC5oZWlnaHQoKSwg
dmlldygpKSk7CisgICAgICAgIGNvbnN0cmFpbnRzLnNldEJvdHRvbU9mZnNldCh2YWx1ZUZvckxl
bmd0aChzdHlsZSgpLT5ib3R0b20oKSwgdmlld3BvcnRSZWN0LmhlaWdodCgpKSk7CiAgICAgICAg
IGNvbnN0cmFpbnRzLmFkZEFuY2hvckVkZ2UoVmlld3BvcnRDb25zdHJhaW50czo6QW5jaG9yRWRn
ZUJvdHRvbSk7CiAgICAgfQogfQpAQCAtNTkwLDEyICs1OTAsOSBAQCBpbnQgUmVuZGVyQm94TW9k
ZWxPYmplY3Q6OnBpeGVsU25hcHBlZE9mZnNldEhlaWdodCgpIGNvbnN0CiBMYXlvdXRVbml0IFJl
bmRlckJveE1vZGVsT2JqZWN0Ojpjb21wdXRlZENTU1BhZGRpbmcoTGVuZ3RoIHBhZGRpbmcpIGNv
bnN0CiB7CiAgICAgTGF5b3V0VW5pdCB3ID0gMDsKLSAgICBSZW5kZXJWaWV3KiByZW5kZXJWaWV3
ID0gMDsKICAgICBpZiAocGFkZGluZy5pc1BlcmNlbnQoKSkKICAgICAgICAgdyA9IGNvbnRhaW5p
bmdCbG9ja0xvZ2ljYWxXaWR0aEZvckNvbnRlbnQoKTsKLSAgICBlbHNlIGlmIChwYWRkaW5nLmlz
Vmlld3BvcnRQZXJjZW50YWdlKCkpCi0gICAgICAgIHJlbmRlclZpZXcgPSB2aWV3KCk7Ci0gICAg
cmV0dXJuIG1pbmltdW1WYWx1ZUZvckxlbmd0aChwYWRkaW5nLCB3LCByZW5kZXJWaWV3KTsKKyAg
ICByZXR1cm4gbWluaW11bVZhbHVlRm9yTGVuZ3RoKHBhZGRpbmcsIHcpOwogfQogCiBSb3VuZGVk
UmVjdCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6Z2V0QmFja2dyb3VuZFJvdW5kZWRSZWN0KGNvbnN0
IExheW91dFJlY3QmIGJvcmRlclJlY3QsIElubGluZUZsb3dCb3gqIGJveCwgTGF5b3V0VW5pdCBp
bmxpbmVCb3hXaWR0aCwgTGF5b3V0VW5pdCBpbmxpbmVCb3hIZWlnaHQsCkBAIC0xMDM1LDcgKzEw
MzIsNiBAQCBJbnRTaXplIFJlbmRlckJveE1vZGVsT2JqZWN0OjpjYWxjdWxhdGVGaWxsVGlsZVNp
emUoY29uc3QgRmlsbExheWVyKiBmaWxsTGF5ZXIsCiAKICAgICBJbnRTaXplIGltYWdlSW50cmlu
c2ljU2l6ZSA9IGNhbGN1bGF0ZUltYWdlSW50cmluc2ljRGltZW5zaW9ucyhpbWFnZSwgcG9zaXRp
b25pbmdBcmVhU2l6ZSwgU2NhbGVCeUVmZmVjdGl2ZVpvb20pOwogICAgIGltYWdlSW50cmluc2lj
U2l6ZS5zY2FsZSgxIC8gaW1hZ2UtPmltYWdlU2NhbGVGYWN0b3IoKSwgMSAvIGltYWdlLT5pbWFn
ZVNjYWxlRmFjdG9yKCkpOwotICAgIFJlbmRlclZpZXcqIHJlbmRlclZpZXcgPSB2aWV3KCk7CiAg
ICAgc3dpdGNoICh0eXBlKSB7CiAgICAgICAgIGNhc2UgU2l6ZUxlbmd0aDogewogICAgICAgICAg
ICAgTGF5b3V0U2l6ZSB0aWxlU2l6ZSA9IHBvc2l0aW9uaW5nQXJlYVNpemU7CkBAIC0xMDQ2LDEy
ICsxMDQyLDEyIEBAIEludFNpemUgUmVuZGVyQm94TW9kZWxPYmplY3Q6OmNhbGN1bGF0ZUZpbGxU
aWxlU2l6ZShjb25zdCBGaWxsTGF5ZXIqIGZpbGxMYXllciwKICAgICAgICAgICAgIGlmIChsYXll
cldpZHRoLmlzRml4ZWQoKSkKICAgICAgICAgICAgICAgICB0aWxlU2l6ZS5zZXRXaWR0aChsYXll
cldpZHRoLnZhbHVlKCkpOwogICAgICAgICAgICAgZWxzZSBpZiAobGF5ZXJXaWR0aC5pc1BlcmNl
bnQoKSB8fCBsYXllcldpZHRoLmlzVmlld3BvcnRQZXJjZW50YWdlKCkpCi0gICAgICAgICAgICAg
ICAgdGlsZVNpemUuc2V0V2lkdGgodmFsdWVGb3JMZW5ndGgobGF5ZXJXaWR0aCwgcG9zaXRpb25p
bmdBcmVhU2l6ZS53aWR0aCgpLCByZW5kZXJWaWV3KSk7CisgICAgICAgICAgICAgICAgdGlsZVNp
emUuc2V0V2lkdGgodmFsdWVGb3JMZW5ndGgobGF5ZXJXaWR0aCwgcG9zaXRpb25pbmdBcmVhU2l6
ZS53aWR0aCgpKSk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGlmIChsYXllckhlaWdodC5p
c0ZpeGVkKCkpCiAgICAgICAgICAgICAgICAgdGlsZVNpemUuc2V0SGVpZ2h0KGxheWVySGVpZ2h0
LnZhbHVlKCkpOwogICAgICAgICAgICAgZWxzZSBpZiAobGF5ZXJIZWlnaHQuaXNQZXJjZW50KCkg
fHwgbGF5ZXJIZWlnaHQuaXNWaWV3cG9ydFBlcmNlbnRhZ2UoKSkKLSAgICAgICAgICAgICAgICB0
aWxlU2l6ZS5zZXRIZWlnaHQodmFsdWVGb3JMZW5ndGgobGF5ZXJIZWlnaHQsIHBvc2l0aW9uaW5n
QXJlYVNpemUuaGVpZ2h0KCksIHJlbmRlclZpZXcpKTsKKyAgICAgICAgICAgICAgICB0aWxlU2l6
ZS5zZXRIZWlnaHQodmFsdWVGb3JMZW5ndGgobGF5ZXJIZWlnaHQsIHBvc2l0aW9uaW5nQXJlYVNp
emUuaGVpZ2h0KCkpKTsKIAogICAgICAgICAgICAgYXBwbHlTdWJQaXhlbEhldXJpc3RpY0ZvclRp
bGVTaXplKHRpbGVTaXplLCBwb3NpdGlvbmluZ0FyZWFTaXplKTsKIApAQCAtMTIxMSwxOCArMTIw
NywxNyBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpjYWxjdWxhdGVCYWNrZ3JvdW5kSW1h
Z2VHZW9tZXRyeShjb25zdCBGaWxsTGF5ZXIqIGZpbAogCiAgICAgRUZpbGxSZXBlYXQgYmFja2dy
b3VuZFJlcGVhdFggPSBmaWxsTGF5ZXItPnJlcGVhdFgoKTsKICAgICBFRmlsbFJlcGVhdCBiYWNr
Z3JvdW5kUmVwZWF0WSA9IGZpbGxMYXllci0+cmVwZWF0WSgpOwotICAgIFJlbmRlclZpZXcqIHJl
bmRlclZpZXcgPSB2aWV3KCk7CiAgICAgaW50IGF2YWlsYWJsZVdpZHRoID0gcG9zaXRpb25pbmdB
cmVhU2l6ZS53aWR0aCgpIC0gZ2VvbWV0cnkudGlsZVNpemUoKS53aWR0aCgpOwogICAgIGludCBh
dmFpbGFibGVIZWlnaHQgPSBwb3NpdGlvbmluZ0FyZWFTaXplLmhlaWdodCgpIC0gZ2VvbWV0cnku
dGlsZVNpemUoKS5oZWlnaHQoKTsKIAotICAgIExheW91dFVuaXQgY29tcHV0ZWRYUG9zaXRpb24g
PSBtaW5pbXVtVmFsdWVGb3JMZW5ndGgoZmlsbExheWVyLT54UG9zaXRpb24oKSwgYXZhaWxhYmxl
V2lkdGgsIHJlbmRlclZpZXcsIHRydWUpOworICAgIExheW91dFVuaXQgY29tcHV0ZWRYUG9zaXRp
b24gPSBtaW5pbXVtVmFsdWVGb3JMZW5ndGgoZmlsbExheWVyLT54UG9zaXRpb24oKSwgYXZhaWxh
YmxlV2lkdGgsIHRydWUpOwogICAgIGlmIChiYWNrZ3JvdW5kUmVwZWF0WCA9PSBSZXBlYXRGaWxs
KQogICAgICAgICBnZW9tZXRyeS5zZXRQaGFzZVgoZ2VvbWV0cnkudGlsZVNpemUoKS53aWR0aCgp
ID8gZ2VvbWV0cnkudGlsZVNpemUoKS53aWR0aCgpIC0gcm91bmRUb0ludChjb21wdXRlZFhQb3Np
dGlvbiArIGxlZnQpICUgZ2VvbWV0cnkudGlsZVNpemUoKS53aWR0aCgpIDogMCk7CiAgICAgZWxz
ZSB7CiAgICAgICAgIGludCB4T2Zmc2V0ID0gZmlsbExheWVyLT5iYWNrZ3JvdW5kWE9yaWdpbigp
ID09IFJpZ2h0RWRnZSA/IGF2YWlsYWJsZVdpZHRoIC0gY29tcHV0ZWRYUG9zaXRpb24gOiBjb21w
dXRlZFhQb3NpdGlvbjsKICAgICAgICAgZ2VvbWV0cnkuc2V0Tm9SZXBlYXRYKGxlZnQgKyB4T2Zm
c2V0KTsKICAgICB9Ci0gICAgTGF5b3V0VW5pdCBjb21wdXRlZFlQb3NpdGlvbiA9IG1pbmltdW1W
YWx1ZUZvckxlbmd0aChmaWxsTGF5ZXItPnlQb3NpdGlvbigpLCBhdmFpbGFibGVIZWlnaHQsIHJl
bmRlclZpZXcsIHRydWUpOworICAgIExheW91dFVuaXQgY29tcHV0ZWRZUG9zaXRpb24gPSBtaW5p
bXVtVmFsdWVGb3JMZW5ndGgoZmlsbExheWVyLT55UG9zaXRpb24oKSwgYXZhaWxhYmxlSGVpZ2h0
LCB0cnVlKTsKICAgICBpZiAoYmFja2dyb3VuZFJlcGVhdFkgPT0gUmVwZWF0RmlsbCkKICAgICAg
ICAgZ2VvbWV0cnkuc2V0UGhhc2VZKGdlb21ldHJ5LnRpbGVTaXplKCkuaGVpZ2h0KCkgPyBnZW9t
ZXRyeS50aWxlU2l6ZSgpLmhlaWdodCgpIC0gcm91bmRUb0ludChjb21wdXRlZFlQb3NpdGlvbiAr
IHRvcCkgJSBnZW9tZXRyeS50aWxlU2l6ZSgpLmhlaWdodCgpIDogMCk7CiAgICAgZWxzZSB7CkBA
IC0xMjc1LDEwICsxMjcwLDEwIEBAIGJvb2wgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50Tmlu
ZVBpZWNlSW1hZ2UoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsCiAgICAgUmVuZGVy
VmlldyogcmVuZGVyVmlldyA9IHZpZXcoKTsKIAogICAgIGZsb2F0IGltYWdlU2NhbGVGYWN0b3Ig
PSBzdHlsZUltYWdlLT5pbWFnZVNjYWxlRmFjdG9yKCk7Ci0gICAgaW50IHRvcFNsaWNlID0gbWlu
PGludD4oaW1hZ2VIZWlnaHQsIHZhbHVlRm9yTGVuZ3RoKG5pbmVQaWVjZUltYWdlLmltYWdlU2xp
Y2VzKCkudG9wKCksIGltYWdlSGVpZ2h0LCByZW5kZXJWaWV3KSkgKiBpbWFnZVNjYWxlRmFjdG9y
OwotICAgIGludCByaWdodFNsaWNlID0gbWluPGludD4oaW1hZ2VXaWR0aCwgdmFsdWVGb3JMZW5n
dGgobmluZVBpZWNlSW1hZ2UuaW1hZ2VTbGljZXMoKS5yaWdodCgpLCBpbWFnZVdpZHRoLCByZW5k
ZXJWaWV3KSkgKiBpbWFnZVNjYWxlRmFjdG9yOwotICAgIGludCBib3R0b21TbGljZSA9IG1pbjxp
bnQ+KGltYWdlSGVpZ2h0LCB2YWx1ZUZvckxlbmd0aChuaW5lUGllY2VJbWFnZS5pbWFnZVNsaWNl
cygpLmJvdHRvbSgpLCBpbWFnZUhlaWdodCwgcmVuZGVyVmlldykpICogaW1hZ2VTY2FsZUZhY3Rv
cjsKLSAgICBpbnQgbGVmdFNsaWNlID0gbWluPGludD4oaW1hZ2VXaWR0aCwgdmFsdWVGb3JMZW5n
dGgobmluZVBpZWNlSW1hZ2UuaW1hZ2VTbGljZXMoKS5sZWZ0KCksIGltYWdlV2lkdGgsIHJlbmRl
clZpZXcpKSAqIGltYWdlU2NhbGVGYWN0b3I7CisgICAgaW50IHRvcFNsaWNlID0gbWluPGludD4o
aW1hZ2VIZWlnaHQsIHZhbHVlRm9yTGVuZ3RoKG5pbmVQaWVjZUltYWdlLmltYWdlU2xpY2VzKCku
dG9wKCksIGltYWdlSGVpZ2h0KSkgKiBpbWFnZVNjYWxlRmFjdG9yOworICAgIGludCByaWdodFNs
aWNlID0gbWluPGludD4oaW1hZ2VXaWR0aCwgdmFsdWVGb3JMZW5ndGgobmluZVBpZWNlSW1hZ2Uu
aW1hZ2VTbGljZXMoKS5yaWdodCgpLCBpbWFnZVdpZHRoKSkgKiBpbWFnZVNjYWxlRmFjdG9yOwor
ICAgIGludCBib3R0b21TbGljZSA9IG1pbjxpbnQ+KGltYWdlSGVpZ2h0LCB2YWx1ZUZvckxlbmd0
aChuaW5lUGllY2VJbWFnZS5pbWFnZVNsaWNlcygpLmJvdHRvbSgpLCBpbWFnZUhlaWdodCkpICog
aW1hZ2VTY2FsZUZhY3RvcjsKKyAgICBpbnQgbGVmdFNsaWNlID0gbWluPGludD4oaW1hZ2VXaWR0
aCwgdmFsdWVGb3JMZW5ndGgobmluZVBpZWNlSW1hZ2UuaW1hZ2VTbGljZXMoKS5sZWZ0KCksIGlt
YWdlV2lkdGgpKSAqIGltYWdlU2NhbGVGYWN0b3I7CiAKICAgICBFTmluZVBpZWNlSW1hZ2VSdWxl
IGhSdWxlID0gbmluZVBpZWNlSW1hZ2UuaG9yaXpvbnRhbFJ1bGUoKTsKICAgICBFTmluZVBpZWNl
SW1hZ2VSdWxlIHZSdWxlID0gbmluZVBpZWNlSW1hZ2UudmVydGljYWxSdWxlKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmNwcAppbmRleCBiOTBhM2Zk
NWVmZGZlYTY3ZTM5YTQyZWM1NGYwMWMxZTg3ZTBiNzBlLi5kNTZlNWJhZTQzYmU4MzU5YzZjMTEw
MjA2ODJiMDVkMDlhZGQxNzVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyRmxleGlibGVCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJGbGV4aWJsZUJveC5jcHAKQEAgLTUyMiw3ICs1MjIsNyBAQCBMYXlvdXRVbml0IFJlbmRlckZs
ZXhpYmxlQm94Ojpjb21wdXRlTWFpbkF4aXNFeHRlbnRGb3JDaGlsZChSZW5kZXJCb3gqIGNoaWxk
LCBTaQogICAgIC8vIHRvIGZpZ3VyZSBvdXQgdGhlIGxvZ2ljYWwgaGVpZ2h0L3dpZHRoLgogICAg
IGlmIChpc0NvbHVtbkZsb3coKSkKICAgICAgICAgcmV0dXJuIGNoaWxkLT5jb21wdXRlQ29udGVu
dExvZ2ljYWxIZWlnaHQoc2l6ZVR5cGUsIHNpemUpOwotICAgIHJldHVybiBjaGlsZC0+YWRqdXN0
Q29udGVudEJveExvZ2ljYWxXaWR0aEZvckJveFNpemluZyh2YWx1ZUZvckxlbmd0aChzaXplLCBj
b250ZW50TG9naWNhbFdpZHRoKCksIHZpZXcoKSkpOworICAgIHJldHVybiBjaGlsZC0+YWRqdXN0
Q29udGVudEJveExvZ2ljYWxXaWR0aEZvckJveFNpemluZyh2YWx1ZUZvckxlbmd0aChzaXplLCBj
b250ZW50TG9naWNhbFdpZHRoKCkpKTsKIH0KIAogV3JpdGluZ01vZGUgUmVuZGVyRmxleGlibGVC
b3g6OnRyYW5zZm9ybWVkV3JpdGluZ01vZGUoKSBjb25zdApAQCAtODcyLDcgKzg3Miw3IEBAIExh
eW91dFVuaXQgUmVuZGVyRmxleGlibGVCb3g6OmNvbXB1dGVDaGlsZE1hcmdpblZhbHVlKExlbmd0
aCBtYXJnaW4sIFJlbmRlclZpZXcqCiAgICAgLy8gV2hlbiByZXNvbHZpbmcgdGhlIG1hcmdpbnMs
IHdlIHVzZSB0aGUgY29udGVudCBzaXplIGZvciByZXNvbHZpbmcgcGVyY2VudCBhbmQgY2FsYyAo
Zm9yIHBlcmNlbnRzIGluIGNhbGMgZXhwcmVzc2lvbnMpIG1hcmdpbnMuCiAgICAgLy8gRm9ydHVu
YXRlbHksIHBlcmNlbnQgbWFyZ2lucyBhcmUgYWx3YXlzIGNvbXB1dGVkIHdpdGggcmVzcGVjdCB0
byB0aGUgYmxvY2sncyB3aWR0aCwgZXZlbiBmb3IgbWFyZ2luLXRvcCBhbmQgbWFyZ2luLWJvdHRv
bS4KICAgICBMYXlvdXRVbml0IGF2YWlsYWJsZVNpemUgPSBjb250ZW50TG9naWNhbFdpZHRoKCk7
Ci0gICAgcmV0dXJuIG1pbmltdW1WYWx1ZUZvckxlbmd0aChtYXJnaW4sIGF2YWlsYWJsZVNpemUs
IHZpZXcpOworICAgIHJldHVybiBtaW5pbXVtVmFsdWVGb3JMZW5ndGgobWFyZ2luLCBhdmFpbGFi
bGVTaXplKTsKIH0KIAogdm9pZCBSZW5kZXJGbGV4aWJsZUJveDo6Y29tcHV0ZU1haW5BeGlzUHJl
ZmVycmVkU2l6ZXMoT3JkZXJIYXNoU2V0JiBvcmRlclZhbHVlcykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJHcmlkLmNwcAppbmRleCBhYmY2ZGMxMjRkYmM4ZTM0Y2FmNGRkZGNhYjI3NTdi
YWUyMjQzZmI2Li4yNjZhZjc0YmZhZmMzMzFkNzc1MTZmNGQ3ZjJhYjdlZWU5OTQwMmQyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuY3BwCkBAIC0zMTMsNyArMzEzLDcgQEAg
TGF5b3V0VW5pdCBSZW5kZXJHcmlkOjpjb21wdXRlVXNlZEJyZWFkdGhPZlNwZWNpZmllZExlbmd0
aChUcmFja1NpemluZ0RpcmVjdGlvbgogewogICAgIC8vIEZJWE1FOiBXZSBzdGlsbCBuZWVkIHRv
IHN1cHBvcnQgY2FsYygpIGhlcmUgKGh0dHBzOi8vd2Via2l0Lm9yZy9iLzEwMzc2MSkuCiAgICAg
QVNTRVJUKHRyYWNrTGVuZ3RoLmlzRml4ZWQoKSB8fCB0cmFja0xlbmd0aC5pc1BlcmNlbnQoKSB8
fCB0cmFja0xlbmd0aC5pc1ZpZXdwb3J0UGVyY2VudGFnZSgpKTsKLSAgICByZXR1cm4gdmFsdWVG
b3JMZW5ndGgodHJhY2tMZW5ndGgsIGRpcmVjdGlvbiA9PSBGb3JDb2x1bW5zID8gbG9naWNhbFdp
ZHRoKCkgOiBjb21wdXRlQ29udGVudExvZ2ljYWxIZWlnaHQoTWFpbk9yUHJlZmVycmVkU2l6ZSwg
c3R5bGUoKS0+bG9naWNhbEhlaWdodCgpKSwgdmlldygpKTsKKyAgICByZXR1cm4gdmFsdWVGb3JM
ZW5ndGgodHJhY2tMZW5ndGgsIGRpcmVjdGlvbiA9PSBGb3JDb2x1bW5zID8gbG9naWNhbFdpZHRo
KCkgOiBjb21wdXRlQ29udGVudExvZ2ljYWxIZWlnaHQoTWFpbk9yUHJlZmVycmVkU2l6ZSwgc3R5
bGUoKS0+bG9naWNhbEhlaWdodCgpKSk7CiB9CiAKIGNvbnN0IEdyaWRUcmFja1NpemUmIFJlbmRl
ckdyaWQ6OmdyaWRUcmFja1NpemUoVHJhY2tTaXppbmdEaXJlY3Rpb24gZGlyZWN0aW9uLCBzaXpl
X3QgaSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHAKaW5kZXggNjc4
ODAwNzg1OGNjYzZmOTNiNzU2NmZlZjQ2ZTliMGYwNjkwMDQ2NC4uNDk3ZDc1Y2JhZWEyMjk3ZDE1
NjBiMGFmMjRkMjRiZGJkYWE1NzIyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlcklubGluZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
cklubGluZS5jcHAKQEAgLTY4OCw5ICs2ODgsOSBAQCBzdGF0aWMgTGF5b3V0VW5pdCBjb21wdXRl
TWFyZ2luKGNvbnN0IFJlbmRlcklubGluZSogcmVuZGVyZXIsIGNvbnN0IExlbmd0aCYgbWFyZwog
ICAgIGlmIChtYXJnaW4uaXNGaXhlZCgpKQogICAgICAgICByZXR1cm4gbWFyZ2luLnZhbHVlKCk7
CiAgICAgaWYgKG1hcmdpbi5pc1BlcmNlbnQoKSkKLSAgICAgICAgcmV0dXJuIG1pbmltdW1WYWx1
ZUZvckxlbmd0aChtYXJnaW4sIG1heDxMYXlvdXRVbml0PigwLCByZW5kZXJlci0+Y29udGFpbmlu
Z0Jsb2NrKCktPmF2YWlsYWJsZUxvZ2ljYWxXaWR0aCgpKSk7CisgICAgICAgIHJldHVybiByZW5k
ZXJlci0+bWluaW11bVZhbHVlRm9yTGVuZ3RoKG1hcmdpbiwgbWF4PExheW91dFVuaXQ+KDAsIHJl
bmRlcmVyLT5jb250YWluaW5nQmxvY2soKS0+YXZhaWxhYmxlTG9naWNhbFdpZHRoKCkpKTsKICAg
ICBpZiAobWFyZ2luLmlzVmlld3BvcnRQZXJjZW50YWdlKCkpCi0gICAgICAgIHJldHVybiB2YWx1
ZUZvckxlbmd0aChtYXJnaW4sIDAsIHJlbmRlcmVyLT52aWV3KCkpOworICAgICAgICByZXR1cm4g
cmVuZGVyZXItPnZhbHVlRm9yTGVuZ3RoKG1hcmdpbiwgMCk7CiAgICAgcmV0dXJuIDA7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNYXJxdWVlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNYXJxdWVlLmNwcAppbmRleCA4OWIwOTNm
NWE0ODQwMTMwNTZiZGJjMmIyMTNiMGU5MGRhNDY4MDBiLi40YTViNDYzYWY3OTVlZjEwZmMxMWU0
YzVmZGZjZTRhN2Q3MjJjY2M5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTWFycXVlZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1h
cnF1ZWUuY3BwCkBAIC0yODUsNyArMjg1LDcgQEAgdm9pZCBSZW5kZXJNYXJxdWVlOjp0aW1lckZp
cmVkKFRpbWVyPFJlbmRlck1hcnF1ZWU+KikKICAgICAgICAgfQogICAgICAgICBib29sIHBvc2l0
aXZlID0gcmFuZ2UgPiAwOwogICAgICAgICBpbnQgY2xpZW50U2l6ZSA9IChpc0hvcml6b250YWwo
KSA/IG1fbGF5ZXItPnJlbmRlckJveCgpLT5jbGllbnRXaWR0aCgpIDogbV9sYXllci0+cmVuZGVy
Qm94KCktPmNsaWVudEhlaWdodCgpKTsKLSAgICAgICAgaW50IGluY3JlbWVudCA9IGFicyhpbnRW
YWx1ZUZvckxlbmd0aChtX2xheWVyLT5yZW5kZXJlcigpLT5zdHlsZSgpLT5tYXJxdWVlSW5jcmVt
ZW50KCksIGNsaWVudFNpemUpKTsKKyAgICAgICAgaW50IGluY3JlbWVudCA9IGFicyhtX2xheWVy
LT5yZW5kZXJlcigpLT5pbnRWYWx1ZUZvckxlbmd0aChtX2xheWVyLT5yZW5kZXJlcigpLT5zdHls
ZSgpLT5tYXJxdWVlSW5jcmVtZW50KCksIGNsaWVudFNpemUpKTsKICAgICAgICAgaW50IGN1cnJl
bnRQb3MgPSAoaXNIb3Jpem9udGFsKCkgPyBtX2xheWVyLT5zY3JvbGxYT2Zmc2V0KCkgOiBtX2xh
eWVyLT5zY3JvbGxZT2Zmc2V0KCkpOwogICAgICAgICBuZXdQb3MgPSAgY3VycmVudFBvcyArIChh
ZGRJbmNyZW1lbnQgPyBpbmNyZW1lbnQgOiAtaW5jcmVtZW50KTsKICAgICAgICAgaWYgKHBvc2l0
aXZlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lbnVMaXN0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZW51TGlzdC5jcHAKaW5kZXgg
NTQ4Y2U4NTAwY2U1ZTM0ZjdhOWU2ODFiMjRhNTM1N2ZkMmY3ZmI4Yi4uYWM0ODM1YzQxZWIxYTE4
ZmZmNDYyNWNjNmEwYjI2NTA2NjU4MzNjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlck1lbnVMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTWVudUxpc3QuY3BwCkBAIC0xNzUsNyArMTc1LDcgQEAgdm9pZCBSZW5kZXJNZW51TGlz
dDo6dXBkYXRlT3B0aW9uc1dpZHRoKCkKICAgICAgICAgICAgIC8vIEFkZCBpbiB0aGUgb3B0aW9u
J3MgdGV4dCBpbmRlbnQuICBXZSBjYW4ndCBjYWxjdWxhdGUgcGVyY2VudGFnZSB2YWx1ZXMgZm9y
IG5vdy4KICAgICAgICAgICAgIGZsb2F0IG9wdGlvbldpZHRoID0gMDsKICAgICAgICAgICAgIGlm
IChSZW5kZXJTdHlsZSogb3B0aW9uU3R5bGUgPSBlbGVtZW50LT5yZW5kZXJTdHlsZSgpKQotICAg
ICAgICAgICAgICAgIG9wdGlvbldpZHRoICs9IG1pbmltdW1WYWx1ZUZvckxlbmd0aChvcHRpb25T
dHlsZS0+dGV4dEluZGVudCgpLCAwLCB2aWV3KCkpOworICAgICAgICAgICAgICAgIG9wdGlvbldp
ZHRoICs9IG1pbmltdW1WYWx1ZUZvckxlbmd0aChvcHRpb25TdHlsZS0+dGV4dEluZGVudCgpLCAw
KTsKICAgICAgICAgICAgIGlmICghdGV4dC5pc0VtcHR5KCkpCiAgICAgICAgICAgICAgICAgb3B0
aW9uV2lkdGggKz0gc3R5bGUoKS0+Zm9udCgpLndpZHRoKHRleHQpOwogICAgICAgICAgICAgbWF4
T3B0aW9uV2lkdGggPSBtYXgobWF4T3B0aW9uV2lkdGgsIG9wdGlvbldpZHRoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKaW5kZXggYjM5ZDU4ZDAxOGE0NDJlZmFh
ZmIxOGZlYmJkNzZhMDFkYmVhODQxMC4uNDY4ODFkMTcwMDRkOGE4YzQxZmZlNWU1ZmUxNjA5YTFj
MmYwNjJlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVj
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKQEAg
LTQwLDcgKzQwLDcgQEAKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJI
VE1MRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgotI2luY2x1ZGUgIkhpdFRlc3RS
ZXN1bHQuaCIKKyNpbmNsdWRlICJMZW5ndGhGdW5jdGlvbnMuaCIKICNpbmNsdWRlICJQYWdlLmgi
CiAjaW5jbHVkZSAiUmVuZGVyQXJlbmEuaCIKICNpbmNsdWRlICJSZW5kZXJDb3VudGVyLmgiCkBA
IC0xNDc1LDcgKzE0NzUsNyBAQCBib29sIFJlbmRlck9iamVjdDo6cmVwYWludEFmdGVyTGF5b3V0
SWZOZWVkZWQoY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogcmVwYQogICAgICAgICBpbnQg
Ym9yZGVyUmlnaHQgPSBpc0JveCgpID8gdG9SZW5kZXJCb3godGhpcyktPmJvcmRlclJpZ2h0KCkg
OiAwOwogICAgICAgICBMYXlvdXRVbml0IGJveFdpZHRoID0gaXNCb3goKSA/IHRvUmVuZGVyQm94
KHRoaXMpLT53aWR0aCgpIDogTGF5b3V0VW5pdCgpOwogICAgICAgICBMYXlvdXRVbml0IG1pbklu
c2V0UmlnaHRTaGFkb3dFeHRlbnQgPSBtaW48TGF5b3V0VW5pdD4oLWluc2V0U2hhZG93RXh0ZW50
LnJpZ2h0KCksIG1pbjxMYXlvdXRVbml0PihuZXdCb3VuZHMud2lkdGgoKSwgb2xkQm91bmRzLndp
ZHRoKCkpKTsKLSAgICAgICAgTGF5b3V0VW5pdCBib3JkZXJXaWR0aCA9IG1heDxMYXlvdXRVbml0
Pihib3JkZXJSaWdodCwgbWF4PExheW91dFVuaXQ+KHZhbHVlRm9yTGVuZ3RoKHN0eWxlKCktPmJv
cmRlclRvcFJpZ2h0UmFkaXVzKCkud2lkdGgoKSwgYm94V2lkdGgsIHYpLCB2YWx1ZUZvckxlbmd0
aChzdHlsZSgpLT5ib3JkZXJCb3R0b21SaWdodFJhZGl1cygpLndpZHRoKCksIGJveFdpZHRoLCB2
KSkpOworICAgICAgICBMYXlvdXRVbml0IGJvcmRlcldpZHRoID0gbWF4PExheW91dFVuaXQ+KGJv
cmRlclJpZ2h0LCBtYXg8TGF5b3V0VW5pdD4odmFsdWVGb3JMZW5ndGgoc3R5bGUoKS0+Ym9yZGVy
VG9wUmlnaHRSYWRpdXMoKS53aWR0aCgpLCBib3hXaWR0aCksIHZhbHVlRm9yTGVuZ3RoKHN0eWxl
KCktPmJvcmRlckJvdHRvbVJpZ2h0UmFkaXVzKCkud2lkdGgoKSwgYm94V2lkdGgpKSk7CiAgICAg
ICAgIExheW91dFVuaXQgZGVjb3JhdGlvbnNXaWR0aCA9IG1heDxMYXlvdXRVbml0Pigtb3V0bGlu
ZVN0eWxlLT5vdXRsaW5lT2Zmc2V0KCksIGJvcmRlcldpZHRoICsgbWluSW5zZXRSaWdodFNoYWRv
d0V4dGVudCkgKyBtYXg8TGF5b3V0VW5pdD4ob3V0bGluZVdpZHRoLCBzaGFkb3dSaWdodCk7CiAg
ICAgICAgIExheW91dFJlY3QgcmlnaHRSZWN0KG5ld091dGxpbmVCb3gueCgpICsgbWluKG5ld091
dGxpbmVCb3gud2lkdGgoKSwgb2xkT3V0bGluZUJveC53aWR0aCgpKSAtIGRlY29yYXRpb25zV2lk
dGgsCiAgICAgICAgICAgICBuZXdPdXRsaW5lQm94LnkoKSwKQEAgLTE0OTUsNyArMTQ5NSw3IEBA
IGJvb2wgUmVuZGVyT2JqZWN0OjpyZXBhaW50QWZ0ZXJMYXlvdXRJZk5lZWRlZChjb25zdCBSZW5k
ZXJMYXllck1vZGVsT2JqZWN0KiByZXBhCiAgICAgICAgIGludCBib3JkZXJCb3R0b20gPSBpc0Jv
eCgpID8gdG9SZW5kZXJCb3godGhpcyktPmJvcmRlckJvdHRvbSgpIDogMDsKICAgICAgICAgTGF5
b3V0VW5pdCBib3hIZWlnaHQgPSBpc0JveCgpID8gdG9SZW5kZXJCb3godGhpcyktPmhlaWdodCgp
IDogTGF5b3V0VW5pdCgpOwogICAgICAgICBMYXlvdXRVbml0IG1pbkluc2V0Qm90dG9tU2hhZG93
RXh0ZW50ID0gbWluPExheW91dFVuaXQ+KC1pbnNldFNoYWRvd0V4dGVudC5ib3R0b20oKSwgbWlu
PExheW91dFVuaXQ+KG5ld0JvdW5kcy5oZWlnaHQoKSwgb2xkQm91bmRzLmhlaWdodCgpKSk7Ci0g
ICAgICAgIExheW91dFVuaXQgYm9yZGVySGVpZ2h0ID0gbWF4PExheW91dFVuaXQ+KGJvcmRlckJv
dHRvbSwgbWF4PExheW91dFVuaXQ+KHZhbHVlRm9yTGVuZ3RoKHN0eWxlKCktPmJvcmRlckJvdHRv
bUxlZnRSYWRpdXMoKS5oZWlnaHQoKSwgYm94SGVpZ2h0LCB2KSwgdmFsdWVGb3JMZW5ndGgoc3R5
bGUoKS0+Ym9yZGVyQm90dG9tUmlnaHRSYWRpdXMoKS5oZWlnaHQoKSwgYm94SGVpZ2h0LCB2KSkp
OworICAgICAgICBMYXlvdXRVbml0IGJvcmRlckhlaWdodCA9IG1heDxMYXlvdXRVbml0Pihib3Jk
ZXJCb3R0b20sIG1heDxMYXlvdXRVbml0Pih2YWx1ZUZvckxlbmd0aChzdHlsZSgpLT5ib3JkZXJC
b3R0b21MZWZ0UmFkaXVzKCkuaGVpZ2h0KCksIGJveEhlaWdodCksIHZhbHVlRm9yTGVuZ3RoKHN0
eWxlKCktPmJvcmRlckJvdHRvbVJpZ2h0UmFkaXVzKCkuaGVpZ2h0KCksIGJveEhlaWdodCkpKTsK
ICAgICAgICAgTGF5b3V0VW5pdCBkZWNvcmF0aW9uc0hlaWdodCA9IG1heDxMYXlvdXRVbml0Pigt
b3V0bGluZVN0eWxlLT5vdXRsaW5lT2Zmc2V0KCksIGJvcmRlckhlaWdodCArIG1pbkluc2V0Qm90
dG9tU2hhZG93RXh0ZW50KSArIG1heDxMYXlvdXRVbml0PihvdXRsaW5lV2lkdGgsIHNoYWRvd0Jv
dHRvbSk7CiAgICAgICAgIExheW91dFJlY3QgYm90dG9tUmVjdChuZXdPdXRsaW5lQm94LngoKSwK
ICAgICAgICAgICAgIG1pbihuZXdPdXRsaW5lQm94Lm1heFkoKSwgb2xkT3V0bGluZUJveC5tYXhZ
KCkpIC0gZGVjb3JhdGlvbnNIZWlnaHQsCkBAIC0zMTM3LDYgKzMxMzcsMzYgQEAgdm9pZCBSZW5k
ZXJPYmplY3Q6OnJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVj
dEluZm8pIGNvbnN0CiAgICAgaW5mby5zZXRDdXN0b21BbGxvY2F0aW9uKHRydWUpOwogfQogCitp
bnQgUmVuZGVyT2JqZWN0OjptaW5pbXVtSW50VmFsdWVGb3JMZW5ndGgoY29uc3QgTGVuZ3RoJiBs
ZW5ndGgsIExheW91dFVuaXQgbWF4aW11bVZhbHVlLCBib29sIHJvdW5kUGVyY2VudGFnZXMpIGNv
bnN0Cit7CisgICAgcmV0dXJuIFdlYkNvcmU6Om1pbmltdW1JbnRWYWx1ZUZvckxlbmd0aChsZW5n
dGgsIG1heGltdW1WYWx1ZSwgdmlldygpLCByb3VuZFBlcmNlbnRhZ2VzKTsKK30KKworaW50IFJl
bmRlck9iamVjdDo6aW50VmFsdWVGb3JMZW5ndGgoY29uc3QgTGVuZ3RoJiBsZW5ndGgsIExheW91
dFVuaXQgbWF4aW11bVZhbHVlLCBib29sIHJvdW5kUGVyY2VudGFnZXMpIGNvbnN0Cit7CisgICAg
cmV0dXJuIFdlYkNvcmU6OmludFZhbHVlRm9yTGVuZ3RoKGxlbmd0aCwgbWF4aW11bVZhbHVlLCB2
aWV3KCksIHJvdW5kUGVyY2VudGFnZXMpOworfQorCitMYXlvdXRVbml0IFJlbmRlck9iamVjdDo6
bWluaW11bVZhbHVlRm9yTGVuZ3RoKGNvbnN0IExlbmd0aCYgbGVuZ3RoLCBMYXlvdXRVbml0IG1h
eGltdW1WYWx1ZSwgYm9vbCByb3VuZFBlcmNlbnRhZ2VzKSBjb25zdAoreworICAgIHJldHVybiBX
ZWJDb3JlOjptaW5pbXVtVmFsdWVGb3JMZW5ndGgobGVuZ3RoLCBtYXhpbXVtVmFsdWUsIHZpZXco
KSwgcm91bmRQZXJjZW50YWdlcyk7Cit9CisKK0xheW91dFVuaXQgUmVuZGVyT2JqZWN0Ojp2YWx1
ZUZvckxlbmd0aChjb25zdCBMZW5ndGgmIGxlbmd0aCwgTGF5b3V0VW5pdCBtYXhpbXVtVmFsdWUs
IGJvb2wgcm91bmRQZXJjZW50YWdlcykgY29uc3QKK3sKKyAgICByZXR1cm4gV2ViQ29yZTo6dmFs
dWVGb3JMZW5ndGgobGVuZ3RoLCBtYXhpbXVtVmFsdWUsIHZpZXcoKSwgcm91bmRQZXJjZW50YWdl
cyk7Cit9CisKK2Zsb2F0IFJlbmRlck9iamVjdDo6ZmxvYXRWYWx1ZUZvckxlbmd0aChjb25zdCBM
ZW5ndGgmIGxlbmd0aCwgTGF5b3V0VW5pdCBtYXhpbXVtVmFsdWUpIGNvbnN0Cit7CisgICAgcmV0
dXJuIFdlYkNvcmU6OmZsb2F0VmFsdWVGb3JMZW5ndGgobGVuZ3RoLCBtYXhpbXVtVmFsdWUsIHZp
ZXcoKSk7Cit9CisKK2Zsb2F0IFJlbmRlck9iamVjdDo6ZmxvYXRWYWx1ZUZvckxlbmd0aChjb25z
dCBMZW5ndGgmIGxlbmd0aCwgZmxvYXQgbWF4aW11bVZhbHVlKSBjb25zdAoreworICAgIHJldHVy
biBXZWJDb3JlOjpmbG9hdFZhbHVlRm9yTGVuZ3RoKGxlbmd0aCwgbWF4aW11bVZhbHVlLCB2aWV3
KCkpOworfQorCiAjaWYgRU5BQkxFKFNWRykKIAogUmVuZGVyU1ZHUmVzb3VyY2VDb250YWluZXIq
IFJlbmRlck9iamVjdDo6dG9SZW5kZXJTVkdSZXNvdXJjZUNvbnRhaW5lcigpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgKaW5kZXggMjMzNWM1ZTAwODc2OWFlZDQyODg5ZDZk
YWI3MjY3ODk0ZDk3OTgyNC4uODBiOGNkZDc1N2E4ZGFkZjgxZjBlNjliMzc1OTVkMjA4OTdmNTQw
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaApAQCAtMjY3LDYgKzI2
NywxMyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgcmVwb3J0TWVtb3J5VXNhZ2UoTWVt
b3J5T2JqZWN0SW5mbyopIGNvbnN0OwogCisgICAgaW50IG1pbmltdW1JbnRWYWx1ZUZvckxlbmd0
aChjb25zdCBMZW5ndGgmLCBMYXlvdXRVbml0IG1heGltdW1WYWx1ZSwgYm9vbCByb3VuZFBlcmNl
bnRhZ2VzID0gZmFsc2UpIGNvbnN0OworICAgIGludCBpbnRWYWx1ZUZvckxlbmd0aChjb25zdCBM
ZW5ndGgmLCBMYXlvdXRVbml0IG1heGltdW1WYWx1ZSwgYm9vbCByb3VuZFBlcmNlbnRhZ2VzID0g
ZmFsc2UpIGNvbnN0OworICAgIExheW91dFVuaXQgbWluaW11bVZhbHVlRm9yTGVuZ3RoKGNvbnN0
IExlbmd0aCYsIExheW91dFVuaXQgbWF4aW11bVZhbHVlLCBib29sIHJvdW5kUGVyY2VudGFnZXMg
PSBmYWxzZSkgY29uc3Q7CisgICAgTGF5b3V0VW5pdCB2YWx1ZUZvckxlbmd0aChjb25zdCBMZW5n
dGgmLCBMYXlvdXRVbml0IG1heGltdW1WYWx1ZSwgYm9vbCByb3VuZFBlcmNlbnRhZ2VzID0gZmFs
c2UpIGNvbnN0OworICAgIGZsb2F0IGZsb2F0VmFsdWVGb3JMZW5ndGgoY29uc3QgTGVuZ3RoJiwg
TGF5b3V0VW5pdCBtYXhpbXVtVmFsdWUpIGNvbnN0OworICAgIGZsb2F0IGZsb2F0VmFsdWVGb3JM
ZW5ndGgoY29uc3QgTGVuZ3RoJiwgZmxvYXQgbWF4aW11bVZhbHVlKSBjb25zdDsKKwogcHJvdGVj
dGVkOgogICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwogICAg
IC8vIEhlbHBlciBmdW5jdGlvbnMuIERhbmdlcm91cyB0byB1c2UhCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyUGFydC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyUGFydC5jcHAKaW5kZXggZTE3Yjg1M2U3MTdh
MDMwOTZlZWFhMDRmMWI5NmRlMjM2N2ZhNDg2OS4uYmZjZjQ0MjA5YmI4YjE3NmM4ZjM0MmFiOTkw
YjE3Nzk0YTE5YjEwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clNjcm9sbGJhclBhcnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJT
Y3JvbGxiYXJQYXJ0LmNwcApAQCAtMTA4LDggKzEwOCw4IEBAIHZvaWQgUmVuZGVyU2Nyb2xsYmFy
UGFydDo6Y29tcHV0ZVNjcm9sbGJhcldpZHRoKCkKICAgICBzZXRXaWR0aChtYXgobWluV2lkdGgs
IG1pbihtYXhXaWR0aCwgdykpKTsKICAgICAKICAgICAvLyBCdXR0b25zIGFuZCB0cmFjayBwaWVj
ZXMgY2FuIGFsbCBoYXZlIG1hcmdpbnMgYWxvbmcgdGhlIGF4aXMgb2YgdGhlIHNjcm9sbGJhci4g
Ci0gICAgbV9tYXJnaW5Cb3guc2V0TGVmdChtaW5pbXVtVmFsdWVGb3JMZW5ndGgoc3R5bGUoKS0+
bWFyZ2luTGVmdCgpLCB2aXNpYmxlU2l6ZSwgcmVuZGVyVmlldykpOwotICAgIG1fbWFyZ2luQm94
LnNldFJpZ2h0KG1pbmltdW1WYWx1ZUZvckxlbmd0aChzdHlsZSgpLT5tYXJnaW5SaWdodCgpLCB2
aXNpYmxlU2l6ZSwgcmVuZGVyVmlldykpOworICAgIG1fbWFyZ2luQm94LnNldExlZnQobWluaW11
bVZhbHVlRm9yTGVuZ3RoKHN0eWxlKCktPm1hcmdpbkxlZnQoKSwgdmlzaWJsZVNpemUpKTsKKyAg
ICBtX21hcmdpbkJveC5zZXRSaWdodChtaW5pbXVtVmFsdWVGb3JMZW5ndGgoc3R5bGUoKS0+bWFy
Z2luUmlnaHQoKSwgdmlzaWJsZVNpemUpKTsKIH0KIAogdm9pZCBSZW5kZXJTY3JvbGxiYXJQYXJ0
Ojpjb21wdXRlU2Nyb2xsYmFySGVpZ2h0KCkKQEAgLTEyNiw4ICsxMjYsOCBAQCB2b2lkIFJlbmRl
clNjcm9sbGJhclBhcnQ6OmNvbXB1dGVTY3JvbGxiYXJIZWlnaHQoKQogICAgIHNldEhlaWdodCht
YXgobWluSGVpZ2h0LCBtaW4obWF4SGVpZ2h0LCBoKSkpOwogCiAgICAgLy8gQnV0dG9ucyBhbmQg
dHJhY2sgcGllY2VzIGNhbiBhbGwgaGF2ZSBtYXJnaW5zIGFsb25nIHRoZSBheGlzIG9mIHRoZSBz
Y3JvbGxiYXIuIAotICAgIG1fbWFyZ2luQm94LnNldFRvcChtaW5pbXVtVmFsdWVGb3JMZW5ndGgo
c3R5bGUoKS0+bWFyZ2luVG9wKCksIHZpc2libGVTaXplLCByZW5kZXJWaWV3KSk7Ci0gICAgbV9t
YXJnaW5Cb3guc2V0Qm90dG9tKG1pbmltdW1WYWx1ZUZvckxlbmd0aChzdHlsZSgpLT5tYXJnaW5C
b3R0b20oKSwgdmlzaWJsZVNpemUsIHJlbmRlclZpZXcpKTsKKyAgICBtX21hcmdpbkJveC5zZXRU
b3AobWluaW11bVZhbHVlRm9yTGVuZ3RoKHN0eWxlKCktPm1hcmdpblRvcCgpLCB2aXNpYmxlU2l6
ZSkpOworICAgIG1fbWFyZ2luQm94LnNldEJvdHRvbShtaW5pbXVtVmFsdWVGb3JMZW5ndGgoc3R5
bGUoKS0+bWFyZ2luQm90dG9tKCksIHZpc2libGVTaXplKSk7CiB9CiAKIHZvaWQgUmVuZGVyU2Ny
b2xsYmFyUGFydDo6Y29tcHV0ZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMoKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUYWJsZS5jcHAKaW5kZXggMzU4NmQ1NDcxNGU5ZTcwNzdmNzE2MjZm
MTViMzVhYjQwMjRlN2M5NC4uNjljZWM2ZWMyZDRmZWY5OWZhZmExZmU2YzE5ODRlYTNhMjVmOTA2
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGUuY3BwCkBAIC0yNDYsNyAr
MjQ2LDYgQEAgdm9pZCBSZW5kZXJUYWJsZTo6dXBkYXRlTG9naWNhbFdpZHRoKCkKICAgICB9CiAK
ICAgICBSZW5kZXJCbG9jayogY2IgPSBjb250YWluaW5nQmxvY2soKTsKLSAgICBSZW5kZXJWaWV3
KiByZW5kZXJWaWV3ID0gdmlldygpOwogCiAgICAgTGF5b3V0VW5pdCBhdmFpbGFibGVMb2dpY2Fs
V2lkdGggPSBjb250YWluaW5nQmxvY2tMb2dpY2FsV2lkdGhGb3JDb250ZW50KCk7CiAgICAgYm9v
bCBoYXNQZXJwZW5kaWN1bGFyQ29udGFpbmluZ0Jsb2NrID0gY2ItPnN0eWxlKCktPmlzSG9yaXpv
bnRhbFdyaXRpbmdNb2RlKCkgIT0gc3R5bGUoKS0+aXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKTsK
QEAgLTI1Nyw4ICsyNTYsOCBAQCB2b2lkIFJlbmRlclRhYmxlOjp1cGRhdGVMb2dpY2FsV2lkdGgo
KQogICAgICAgICBzZXRMb2dpY2FsV2lkdGgoY29udmVydFN0eWxlTG9naWNhbFdpZHRoVG9Db21w
dXRlZFdpZHRoKHN0eWxlTG9naWNhbFdpZHRoLCBjb250YWluZXJXaWR0aEluSW5saW5lRGlyZWN0
aW9uKSk7CiAgICAgZWxzZSB7CiAgICAgICAgIC8vIFN1YnRyYWN0IG91dCBhbnkgZml4ZWQgbWFy
Z2lucyBmcm9tIG91ciBhdmFpbGFibGUgd2lkdGggZm9yIGF1dG8gd2lkdGggdGFibGVzLgotICAg
ICAgICBMYXlvdXRVbml0IG1hcmdpblN0YXJ0ID0gbWluaW11bVZhbHVlRm9yTGVuZ3RoKHN0eWxl
KCktPm1hcmdpblN0YXJ0KCksIGF2YWlsYWJsZUxvZ2ljYWxXaWR0aCwgcmVuZGVyVmlldyk7Ci0g
ICAgICAgIExheW91dFVuaXQgbWFyZ2luRW5kID0gbWluaW11bVZhbHVlRm9yTGVuZ3RoKHN0eWxl
KCktPm1hcmdpbkVuZCgpLCBhdmFpbGFibGVMb2dpY2FsV2lkdGgsIHJlbmRlclZpZXcpOworICAg
ICAgICBMYXlvdXRVbml0IG1hcmdpblN0YXJ0ID0gbWluaW11bVZhbHVlRm9yTGVuZ3RoKHN0eWxl
KCktPm1hcmdpblN0YXJ0KCksIGF2YWlsYWJsZUxvZ2ljYWxXaWR0aCk7CisgICAgICAgIExheW91
dFVuaXQgbWFyZ2luRW5kID0gbWluaW11bVZhbHVlRm9yTGVuZ3RoKHN0eWxlKCktPm1hcmdpbkVu
ZCgpLCBhdmFpbGFibGVMb2dpY2FsV2lkdGgpOwogICAgICAgICBMYXlvdXRVbml0IG1hcmdpblRv
dGFsID0gbWFyZ2luU3RhcnQgKyBtYXJnaW5FbmQ7CiAKICAgICAgICAgLy8gU3VidHJhY3Qgb3V0
IG91ciBtYXJnaW5zIHRvIGdldCB0aGUgYXZhaWxhYmxlIGNvbnRlbnQgd2lkdGguCkBAIC0zMDUs
OCArMzA0LDggQEAgdm9pZCBSZW5kZXJUYWJsZTo6dXBkYXRlTG9naWNhbFdpZHRoKCkKICAgICAg
ICAgc2V0TWFyZ2luU3RhcnQobWFyZ2luVmFsdWVzLm1fc3RhcnQpOwogICAgICAgICBzZXRNYXJn
aW5FbmQobWFyZ2luVmFsdWVzLm1fZW5kKTsKICAgICB9IGVsc2UgewotICAgICAgICBzZXRNYXJn
aW5TdGFydChtaW5pbXVtVmFsdWVGb3JMZW5ndGgoc3R5bGUoKS0+bWFyZ2luU3RhcnQoKSwgYXZh
aWxhYmxlTG9naWNhbFdpZHRoLCByZW5kZXJWaWV3KSk7Ci0gICAgICAgIHNldE1hcmdpbkVuZCht
aW5pbXVtVmFsdWVGb3JMZW5ndGgoc3R5bGUoKS0+bWFyZ2luRW5kKCksIGF2YWlsYWJsZUxvZ2lj
YWxXaWR0aCwgcmVuZGVyVmlldykpOworICAgICAgICBzZXRNYXJnaW5TdGFydChtaW5pbXVtVmFs
dWVGb3JMZW5ndGgoc3R5bGUoKS0+bWFyZ2luU3RhcnQoKSwgYXZhaWxhYmxlTG9naWNhbFdpZHRo
KSk7CisgICAgICAgIHNldE1hcmdpbkVuZChtaW5pbXVtVmFsdWVGb3JMZW5ndGgoc3R5bGUoKS0+
bWFyZ2luRW5kKCksIGF2YWlsYWJsZUxvZ2ljYWxXaWR0aCkpOwogICAgIH0KIH0KIApAQCAtMzIy
LDcgKzMyMSw3IEBAIExheW91dFVuaXQgUmVuZGVyVGFibGU6OmNvbnZlcnRTdHlsZUxvZ2ljYWxX
aWR0aFRvQ29tcHV0ZWRXaWR0aChjb25zdCBMZW5ndGgmIHN0CiAgICAgaWYgKGlzQ1NTVGFibGUg
JiYgc3R5bGVMb2dpY2FsV2lkdGguaXNTcGVjaWZpZWQoKSAmJiBzdHlsZUxvZ2ljYWxXaWR0aC5p
c1Bvc2l0aXZlKCkgJiYgc3R5bGUoKS0+Ym94U2l6aW5nKCkgPT0gQ09OVEVOVF9CT1gpCiAgICAg
ICAgIGJvcmRlcnMgPSBib3JkZXJTdGFydCgpICsgYm9yZGVyRW5kKCkgKyAoY29sbGFwc2VCb3Jk
ZXJzKCkgPyBMYXlvdXRVbml0KCkgOiBwYWRkaW5nU3RhcnQoKSArIHBhZGRpbmdFbmQoKSk7CiAK
LSAgICByZXR1cm4gbWluaW11bVZhbHVlRm9yTGVuZ3RoKHN0eWxlTG9naWNhbFdpZHRoLCBhdmFp
bGFibGVXaWR0aCwgdmlldygpKSArIGJvcmRlcnM7CisgICAgcmV0dXJuIG1pbmltdW1WYWx1ZUZv
ckxlbmd0aChzdHlsZUxvZ2ljYWxXaWR0aCwgYXZhaWxhYmxlV2lkdGgpICsgYm9yZGVyczsKIH0K
IAogTGF5b3V0VW5pdCBSZW5kZXJUYWJsZTo6Y29udmVydFN0eWxlTG9naWNhbEhlaWdodFRvQ29t
cHV0ZWRIZWlnaHQoY29uc3QgTGVuZ3RoJiBzdHlsZUxvZ2ljYWxIZWlnaHQpCkBAIC0zNDEsNyAr
MzQwLDcgQEAgTGF5b3V0VW5pdCBSZW5kZXJUYWJsZTo6Y29udmVydFN0eWxlTG9naWNhbEhlaWdo
dFRvQ29tcHV0ZWRIZWlnaHQoY29uc3QgTGVuZ3RoJgogICAgIH0gZWxzZSBpZiAoc3R5bGVMb2dp
Y2FsSGVpZ2h0LmlzUGVyY2VudCgpKQogICAgICAgICBjb21wdXRlZExvZ2ljYWxIZWlnaHQgPSBj
b21wdXRlUGVyY2VudGFnZUxvZ2ljYWxIZWlnaHQoc3R5bGVMb2dpY2FsSGVpZ2h0KTsKICAgICBl
bHNlIGlmIChzdHlsZUxvZ2ljYWxIZWlnaHQuaXNWaWV3cG9ydFBlcmNlbnRhZ2UoKSkKLSAgICAg
ICAgY29tcHV0ZWRMb2dpY2FsSGVpZ2h0ID0gbWluaW11bVZhbHVlRm9yTGVuZ3RoKHN0eWxlTG9n
aWNhbEhlaWdodCwgMCwgdmlldygpKTsKKyAgICAgICAgY29tcHV0ZWRMb2dpY2FsSGVpZ2h0ID0g
bWluaW11bVZhbHVlRm9yTGVuZ3RoKHN0eWxlTG9naWNhbEhlaWdodCwgMCk7CiAgICAgZWxzZQog
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gbWF4PExheW91dFVuaXQ+
KDAsIGNvbXB1dGVkTG9naWNhbEhlaWdodCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGFibGVDZWxsLmgKaW5kZXggYjFmZjVmYzRkMzk1OWE1ODNkZGI2NzU2ZGYxN2MxZjA3MjA2
YzdiYi4uMGNkMzVjMDkxMTAzZDc0YTE4YjhiZDk0MmYxODFiZjBlNmEwZWEzYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuaApAQCAtOTQsNyArOTQsNyBAQCBw
dWJsaWM6CiAgICAgewogICAgICAgICAvLyBGSVhNRTogVGhpcyBmdW5jdGlvbiBkb2VzIHRvbyBt
dWNoIHdvcmssIGFuZCBpcyB2ZXJ5IGhvdCBkdXJpbmcgdGFibGUgbGF5b3V0IQogICAgICAgICBp
bnQgYWRqdXN0ZWRMb2dpY2FsSGVpZ2h0ID0gcGl4ZWxTbmFwcGVkTG9naWNhbEhlaWdodCgpIC0g
KGludHJpbnNpY1BhZGRpbmdCZWZvcmUoKSArIGludHJpbnNpY1BhZGRpbmdBZnRlcigpKTsKLSAg
ICAgICAgaW50IHN0eWxlTG9naWNhbEhlaWdodCA9IHZhbHVlRm9yTGVuZ3RoKHN0eWxlKCktPmxv
Z2ljYWxIZWlnaHQoKSwgMCwgdmlldygpKTsKKyAgICAgICAgaW50IHN0eWxlTG9naWNhbEhlaWdo
dCA9IHZhbHVlRm9yTGVuZ3RoKHN0eWxlKCktPmxvZ2ljYWxIZWlnaHQoKSwgMCk7CiAgICAgICAg
IC8vIEluIHN0cmljdCBtb2RlLCBib3gtc2l6aW5nOiBjb250ZW50LWJveCBkbyB0aGUgcmlnaHQg
dGhpbmcgYW5kIGFjdHVhbGx5IGFkZCBpbiB0aGUgYm9yZGVyIGFuZCBwYWRkaW5nLgogICAgICAg
ICAvLyBDYWxsIGNvbXB1dGVkQ1NTUGFkZGluZyogZGlyZWN0bHkgdG8gYXZvaWQgaW5jbHVkaW5n
IGltcGxpY2l0UGFkZGluZy4KICAgICAgICAgaWYgKCFkb2N1bWVudCgpLT5pblF1aXJrc01vZGUo
KSAmJiBzdHlsZSgpLT5ib3hTaXppbmcoKSAhPSBCT1JERVJfQk9YKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlvbi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9uLmNwcAppbmRleCA0MTEyZDNmYjI5MjFj
YmYzYWVmNTQ1ODk5ZTc0Yzk4MGMyZjE3OTFlLi45NDViZGU3ZTJhYWJmMmUwNzFjNWMwOGFjNmU1
OGQxZGQ4YTAxZjA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGFibGVTZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFi
bGVTZWN0aW9uLmNwcApAQCAtMjgzLDcgKzI4Myw3IEBAIGludCBSZW5kZXJUYWJsZVNlY3Rpb246
OmNhbGNSb3dMb2dpY2FsSGVpZ2h0KCkKICAgICAgICAgTGF5b3V0VW5pdCBiYXNlbGluZURlc2Nl
bnQgPSAwOwogCiAgICAgICAgIC8vIE91ciBiYXNlIHNpemUgaXMgdGhlIGJpZ2dlc3QgbG9naWNh
bCBoZWlnaHQgZnJvbSBvdXIgY2VsbHMnIHN0eWxlcyAoZXhjbHVkaW5nIHJvdyBzcGFubmluZyBj
ZWxscykuCi0gICAgICAgIG1fcm93UG9zW3IgKyAxXSA9IG1heChtX3Jvd1Bvc1tyXSArIG1pbmlt
dW1WYWx1ZUZvckxlbmd0aChtX2dyaWRbcl0ubG9naWNhbEhlaWdodCwgMCwgdmlld1JlbmRlcmVy
KS5yb3VuZCgpLCAwKTsKKyAgICAgICAgbV9yb3dQb3NbciArIDFdID0gbWF4KG1fcm93UG9zW3Jd
ICsgbWluaW11bVZhbHVlRm9yTGVuZ3RoKG1fZ3JpZFtyXS5sb2dpY2FsSGVpZ2h0LCAwKS5yb3Vu
ZCgpLCAwKTsKIAogICAgICAgICBSb3cmIHJvdyA9IG1fZ3JpZFtyXS5yb3c7CiAgICAgICAgIHVu
c2lnbmVkIHRvdGFsQ29scyA9IHJvdy5zaXplKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRleHQuaAppbmRleCBlMGQyYTAzZjdlMWYzNDllZDE2NTZiN2Y5YjZkMDE0ZTFkMzU3MWE3Li5m
NDlhNzAxODU5NGEzOGE2Y2YzYzJhNjRhMzY4M2I4YzFmNjY2MDZiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUZXh0LmgKQEAgLTEwNSw4ICsxMDUsOCBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCBMYXlvdXRSZWN0IHNlbGVjdGlvblJlY3RGb3JSZXBhaW50KGNvbnN0IFJlbmRlckxheWVy
TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIGJvb2wgY2xpcFRvVmlzaWJsZUNvbnRlbnQg
PSB0cnVlKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIExheW91dFJlY3QgbG9jYWxDYXJldFJlY3Qo
SW5saW5lQm94KiwgaW50IGNhcmV0T2Zmc2V0LCBMYXlvdXRVbml0KiBleHRyYVdpZHRoVG9FbmRP
ZkxpbmUgPSAwKTsKIAotICAgIHZpcnR1YWwgTGF5b3V0VW5pdCBtYXJnaW5MZWZ0KCkgY29uc3Qg
eyByZXR1cm4gbWluaW11bVZhbHVlRm9yTGVuZ3RoKHN0eWxlKCktPm1hcmdpbkxlZnQoKSwgMCwg
dmlldygpKTsgfQotICAgIHZpcnR1YWwgTGF5b3V0VW5pdCBtYXJnaW5SaWdodCgpIGNvbnN0IHsg
cmV0dXJuIG1pbmltdW1WYWx1ZUZvckxlbmd0aChzdHlsZSgpLT5tYXJnaW5SaWdodCgpLCAwLCB2
aWV3KCkpOyB9CisgICAgdmlydHVhbCBMYXlvdXRVbml0IG1hcmdpbkxlZnQoKSBjb25zdCB7IHJl
dHVybiBtaW5pbXVtVmFsdWVGb3JMZW5ndGgoc3R5bGUoKS0+bWFyZ2luTGVmdCgpLCAwKTsgfQor
ICAgIHZpcnR1YWwgTGF5b3V0VW5pdCBtYXJnaW5SaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1pbmlt
dW1WYWx1ZUZvckxlbmd0aChzdHlsZSgpLT5tYXJnaW5SaWdodCgpLCAwKTsgfQogCiAgICAgdmly
dHVhbCBMYXlvdXRSZWN0IGNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KGNvbnN0IFJlbmRl
ckxheWVyTW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIpIGNvbnN0IE9WRVJSSURFOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUm9vdElubGluZUJveC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUm9vdElubGluZUJveC5jcHAKaW5kZXggODc5Yzk5YmMz
NDdiZWUwY2QwN2QxYjVmMzAyYjFjNDFmMDUwNzZlNS4uMzFmMDM3NDZiMzhiNGIzMGEwNzljYWEz
MDk3NDhlY2Y1ZmE3NGM3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jv
b3RJbmxpbmVCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Sb290SW5saW5l
Qm94LmNwcApAQCAtOTIxLDcgKzkyMSw3IEBAIExheW91dFVuaXQgUm9vdElubGluZUJveDo6dmVy
dGljYWxQb3NpdGlvbkZvckJveChJbmxpbmVCb3gqIGJveCwgVmVydGljYWxQb3NpdGlvCiAgICAg
ICAgICAgICAgICAgbGluZUhlaWdodCA9IHJlbmRlcmVyLT5zdHlsZSgpLT5jb21wdXRlZExpbmVI
ZWlnaHQoKTsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBsaW5lSGVpZ2h0ID0g
cmVuZGVyZXItPmxpbmVIZWlnaHQoZmlyc3RMaW5lLCBsaW5lRGlyZWN0aW9uKTsKLSAgICAgICAg
ICAgIHZlcnRpY2FsUG9zaXRpb24gLT0gdmFsdWVGb3JMZW5ndGgocmVuZGVyZXItPnN0eWxlKCkt
PnZlcnRpY2FsQWxpZ25MZW5ndGgoKSwgbGluZUhlaWdodCwgcmVuZGVyZXItPnZpZXcoKSk7Cisg
ICAgICAgICAgICB2ZXJ0aWNhbFBvc2l0aW9uIC09IHJlbmRlcmVyLT52YWx1ZUZvckxlbmd0aChy
ZW5kZXJlci0+c3R5bGUoKS0+dmVydGljYWxBbGlnbkxlbmd0aCgpLCBsaW5lSGVpZ2h0KTsKICAg
ICAgICAgfQogICAgIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>193079</attachid>
            <date>2013-03-14 00:03:30 -0700</date>
            <delta_ts>2013-03-25 18:43:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-112315-20130314175926.patch</filename>
            <type>text/plain</type>
            <size>86363</size>
            <attacher name="Timothy Loh">timloh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ1NzE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjhmNWYxYWE4MWFlOTRj
ZmYzYWI0N2E5ZjYxMWQ4YmZhNzFiNTRiMi4uNTkxYmI3ZGIzNTNiNTA0Njg1YjRkZWYxNWUwZDBi
MzAwMTI3ODE5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk2IEBACisyMDEzLTAzLTEzICBUaW1v
dGh5IExvaCAgPHRpbWxvaEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgQWRkIHZhbHVlRm9yTGVu
Z3RoIG1ldGhvZHMgdG8gUmVuZGVyT2JqZWN0IHRvIGhlbHAgdmlld3BvcnQgdW5pdCBpbXBsZW1l
bnRhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTEyMzE1CisKKyAgICAgICAgUGFydCAxIG9mIGdldHRpbmcgdmlld3BvcnQgdW5pdHMgd29ya2lu
ZyBldmVyeXdoZXJlIChzZWUgZGlzY3Vzc2lvbiBvbiBidWcgOTE1NTQpLgorICAgICAgICBHZXR0
aW5nIHZpZXdwb3J0IHVuaXRzIHdvcmtpbmcgZXZlcnl3aGVyZSBpbnZvbHZlcyBoYXZpbmcgdGhl
IHZpZXdwb3J0IHNpemUgaW4KKyAgICAgICAgdGhlIHZhcmlvdXMgdmFsdWVGb3JMZW5ndGggZnVu
Y3Rpb25zLiBTaW5jZSB3ZSBjYWxsIHRoZXNlIGZ1bmN0aW9ucyBmcm9tIHBsYXRmb3JtCisgICAg
ICAgIGNvZGUsIHdlIGNhbid0IHBhc3MgaW4gYSBSZW5kZXJWaWV3IGFzIGlzIGN1cnJlbnRseSBk
b25lLiBBZGRpbmcgdGhlc2UgbWV0aG9kcyB0bworICAgICAgICBSZW5kZXJPYmplY3QgbWVhbnMg
dGhhdCB3ZSB3b24ndCB0YWtlIGEgcGVyZm9ybWFuY2UgaGl0IGZyb20gY29tcHV0aW5nIHRoZSB2
aWV3cG9ydAorICAgICAgICBzaXplIHdoZW5ldmVyIHdlIHdhbnQgdG8gcmVzb2x2ZSBMZW5ndGgg
b2JqZWN0cyB0byBwaXhlbCB2YWx1ZXMuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIChubyBmdW5jdGlvbmFsIGNoYW5nZSkuCisK
KyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNlVGV4
dC5jcHA6CisgICAgICAgIChnZXRBdHRyaWJ1dGVTZXRGb3JBY2Nlc3NpYmlsaXR5T2JqZWN0KToK
KyAgICAgICAgKiBjc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6Z2V0UHJvcGVydHlDU1NWYWx1
ZSk6CisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3Vt
ZW50OjpwYWdlU2l6ZUFuZE1hcmdpbnNJblBpeGVscyk6CisgICAgICAgICogaHRtbC9IVE1MQXJl
YUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEFyZWFFbGVtZW50OjpnZXRSZWdp
b24pOgorICAgICAgICAqIHJlbmRlcmluZy9GaWx0ZXJFZmZlY3RSZW5kZXJlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3RSZW5kZXJlcjo6YnVpbGQpOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJCbG9jay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6
dGV4dEluZGVudE9mZnNldCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6Y29tcHV0
ZUlubGluZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94OjpyZWZsZWN0aW9uT2Zmc2V0
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6cHVzaENvbnRlbnRzQ2xpcCk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OmNsaXBSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckJveDo6Y29tcHV0ZUxvZ2ljYWxXaWR0aEluUmVnaW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckJveDo6ZmlsbEF2YWlsYWJsZU1lYXN1cmUpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyQm94Ojpjb21wdXRlTG9naWNhbFdpZHRoSW5SZWdpb25Vc2luZyk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJCb3g6OmNvbXB1dGVJbmxpbmVEaXJlY3Rpb25NYXJnaW5zKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckJveDo6Y29tcHV0ZUNvbnRlbnRBbmRTY3JvbGxiYXJMb2dpY2FsSGVp
Z2h0VXNpbmcpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94Ojpjb21wdXRlUmVwbGFjZWRM
b2dpY2FsV2lkdGhVc2luZyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OmNvbXB1dGVS
ZXBsYWNlZExvZ2ljYWxIZWlnaHRVc2luZyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6
OmNvbXB1dGVCbG9ja0RpcmVjdGlvbk1hcmdpbnMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
Qm94Ojpjb21wdXRlUG9zaXRpb25lZExvZ2ljYWxXaWR0aFVzaW5nKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckJveDo6Y29tcHV0ZVBvc2l0aW9uZWRMb2dpY2FsSGVpZ2h0VXNpbmcpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyQm94Ojpjb21wdXRlUG9zaXRpb25lZExvZ2ljYWxXaWR0aFJl
cGxhY2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6Y29tcHV0ZVBvc2l0aW9uZWRM
b2dpY2FsSGVpZ2h0UmVwbGFjZWQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3hNb2Rl
bE9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9iamVjdDo6cmVs
YXRpdmVQb3NpdGlvbk9mZnNldCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9i
amVjdDo6Y29tcHV0ZVN0aWNreVBvc2l0aW9uQ29uc3RyYWludHMpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6OmNvbXB1dGVkQ1NTUGFkZGluZyk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9iamVjdDo6Y2FsY3VsYXRlRmlsbFRpbGVTaXplKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckJveE1vZGVsT2JqZWN0OjpjYWxjdWxhdGVCYWNrZ3JvdW5k
SW1hZ2VHZW9tZXRyeSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9iamVjdDo6
cGFpbnROaW5lUGllY2VJbWFnZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxl
Qm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZsZXhpYmxlQm94Ojpjb21wdXRlTWFp
bkF4aXNFeHRlbnRGb3JDaGlsZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGbGV4aWJsZUJv
eDo6Y29tcHV0ZUNoaWxkTWFyZ2luVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmxl
eGlibGVCb3g6OmNvbXB1dGVNYWluQXhpc1ByZWZlcnJlZFNpemVzKToKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyRmxleGlibGVCb3guaDoKKyAgICAgICAgKFJlbmRlckZsZXhpYmxlQm94KToK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyR3JpZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJHcmlkOjpjb21wdXRlVXNlZEJyZWFkdGhPZlNwZWNpZmllZExlbmd0aCk6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb21wdXRl
TWFyZ2luKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTWFycXVlZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJNYXJxdWVlOjp0aW1lckZpcmVkKToKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyTWVudUxpc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWVudUxpc3Q6
OnVwZGF0ZU9wdGlvbnNXaWR0aCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck9iamVjdC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OnJlcGFpbnRBZnRlckxheW91dElm
TmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6bWluaW11bUludFZhbHVl
Rm9yTGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
T2JqZWN0OjppbnRWYWx1ZUZvckxlbmd0aCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmpl
Y3Q6Om1pbmltdW1WYWx1ZUZvckxlbmd0aCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmpl
Y3Q6OnZhbHVlRm9yTGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6Zmxv
YXRWYWx1ZUZvckxlbmd0aCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oOgor
ICAgICAgICAoUmVuZGVyT2JqZWN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyU2Nyb2xs
YmFyUGFydC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTY3JvbGxiYXJQYXJ0Ojpjb21w
dXRlU2Nyb2xsYmFyV2lkdGgpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU2Nyb2xsYmFyUGFy
dDo6Y29tcHV0ZVNjcm9sbGJhckhlaWdodCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRh
YmxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlOjp1cGRhdGVMb2dpY2FsV2lk
dGgpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGFibGU6OmNvbnZlcnRTdHlsZUxvZ2ljYWxX
aWR0aFRvQ29tcHV0ZWRXaWR0aCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJsZTo6Y29u
dmVydFN0eWxlTG9naWNhbEhlaWdodFRvQ29tcHV0ZWRIZWlnaHQpOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJUYWJsZUNlbGwuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlQ2Vs
bDo6bG9naWNhbEhlaWdodEZvclJvd1NpemluZyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
clRhYmxlU2VjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJsZVNlY3Rpb246
OmNhbGNSb3dMb2dpY2FsSGVpZ2h0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGV4dC5o
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dDo6bWFyZ2luTGVmdCk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJUZXh0OjptYXJnaW5SaWdodCk6CisgICAgICAgICogcmVuZGVyaW5nL1Jv
b3RJbmxpbmVCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6Um9vdElubGluZUJveDo6dmVydGlj
YWxQb3NpdGlvbkZvckJveCk6CisKIDIwMTMtMDMtMTMgIFBhdmVsIEZlbGRtYW4gIDxwZmVsZG1h
bkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogZ2V0IHJpZCBvZiBoaWRk
ZW5QYW5lbHMgZmlsdGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNlVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNlVGV4dC5jcHAKaW5kZXgg
ZmFkMDE3MTFlNThlNjk5NGUzYjQ2YTFlYjg1MzM4ZTRmY2IwMTcxNC4uYTU4ZjQ0YmM5ODY3Mzg5
NWQ2NTNjMWY0NTk2YTQwMzFjN2FiOWNjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUludGVyZmFjZVRleHQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVJbnRlcmZhY2VU
ZXh0LmNwcApAQCAtMjQ2LDcgKzI0Niw3IEBAIHN0YXRpYyBBdGtBdHRyaWJ1dGVTZXQqIGdldEF0
dHJpYnV0ZVNldEZvckFjY2Vzc2liaWxpdHlPYmplY3QoY29uc3QgQWNjZXNzaWJpbGl0CiAgICAg
fQogCiAgICAgaWYgKCFzdHlsZS0+dGV4dEluZGVudCgpLmlzVW5kZWZpbmVkKCkpIHsKLSAgICAg
ICAgaW50IGluZGVudGF0aW9uID0gdmFsdWVGb3JMZW5ndGgoc3R5bGUtPnRleHRJbmRlbnQoKSwg
b2JqZWN0LT5zaXplKCkud2lkdGgoKSwgcmVuZGVyZXItPnZpZXcoKSk7CisgICAgICAgIGludCBp
bmRlbnRhdGlvbiA9IHJlbmRlcmVyLT52YWx1ZUZvckxlbmd0aChzdHlsZS0+dGV4dEluZGVudCgp
LCBvYmplY3QtPnNpemUoKS53aWR0aCgpKTsKICAgICAgICAgYnVmZmVyLnNldChnX3N0cmR1cF9w
cmludGYoIiVpIiwgaW5kZW50YXRpb24pKTsKICAgICAgICAgcmVzdWx0ID0gYWRkVG9BdGtBdHRy
aWJ1dGVTZXQocmVzdWx0LCBhdGtfdGV4dF9hdHRyaWJ1dGVfZ2V0X25hbWUoQVRLX1RFWFRfQVRU
Ul9JTkRFTlQpLCBidWZmZXIuZ2V0KCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKaW5kZXggMWMwNDhhNTk4N2E5YzJk
MTlkNTY5NzBiN2JlZWY0NzcwODRhZThmNC4uZGQ4Y2RhMjQzY2Q5YmZhMDFjMzllMzA0ZTc0ZThm
M2RjZmVmNDA1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5
bGVEZWNsYXJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5
bGVEZWNsYXJhdGlvbi5jcHAKQEAgLTIwMzUsNyArMjAzNSw3IEBAIFBhc3NSZWZQdHI8Q1NTVmFs
dWU+IENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6Z2V0UHJvcGVydHlDU1NWYWx1ZShDU1NQ
cm9wZXJ0CiAgICAgICAgICAgICAgICAgLy8gUmVuZGVyQm94IGdpdmVzIGEgbWFyZ2luUmlnaHQo
KSB0aGF0IGlzIHRoZSBkaXN0YW5jZSBiZXR3ZWVuIHRoZSByaWdodC1lZGdlIG9mIHRoZSBjaGls
ZCBib3gKICAgICAgICAgICAgICAgICAvLyBhbmQgdGhlIHJpZ2h0LWVkZ2Ugb2YgdGhlIGNvbnRh
aW5pbmcgYm94LCB3aGVuIGRpc3BsYXkgPT0gQkxPQ0suIExldCdzIGNhbGN1bGF0ZSB0aGUgYWJz
b2x1dGUKICAgICAgICAgICAgICAgICAvLyB2YWx1ZSBvZiB0aGUgc3BlY2lmaWVkIG1hcmdpbi1y
aWdodCAlIGluc3RlYWQgb2YgcmVseWluZyBvbiBSZW5kZXJCb3gncyBtYXJnaW5SaWdodCgpIHZh
bHVlLgotICAgICAgICAgICAgICAgIHZhbHVlID0gbWluaW11bVZhbHVlRm9yTGVuZ3RoKG1hcmdp
blJpZ2h0LCB0b1JlbmRlckJveChyZW5kZXJlciktPmNvbnRhaW5pbmdCbG9ja0xvZ2ljYWxXaWR0
aEZvckNvbnRlbnQoKSwgbV9ub2RlLT5kb2N1bWVudCgpLT5yZW5kZXJWaWV3KCkpOworICAgICAg
ICAgICAgICAgIHZhbHVlID0gcmVuZGVyZXItPm1pbmltdW1WYWx1ZUZvckxlbmd0aChtYXJnaW5S
aWdodCwgdG9SZW5kZXJCb3gocmVuZGVyZXIpLT5jb250YWluaW5nQmxvY2tMb2dpY2FsV2lkdGhG
b3JDb250ZW50KCkpOwogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIHZhbHVlID0g
dG9SZW5kZXJCb3gocmVuZGVyZXIpLT5tYXJnaW5SaWdodCgpOwogICAgICAgICAgICAgcmV0dXJu
IHpvb21BZGp1c3RlZFBpeGVsVmFsdWUodmFsdWUsIHN0eWxlLmdldCgpKTsKQEAgLTI0NzIsOSAr
MjQ3Miw4IEBAIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlv
bjo6Z2V0UHJvcGVydHlDU1NWYWx1ZShDU1NQcm9wZXJ0CiAgICAgICAgICAgICAgICAgaWYgKHJl
bmRlcmVyLT5pc0JveCgpKQogICAgICAgICAgICAgICAgICAgICBib3ggPSB0b1JlbmRlckJveChy
ZW5kZXJlciktPmJvcmRlckJveFJlY3QoKTsKIAotICAgICAgICAgICAgICAgIFJlbmRlclZpZXcq
IHJlbmRlclZpZXcgPSBtX25vZGUtPmRvY3VtZW50KCktPnJlbmRlclZpZXcoKTsKLSAgICAgICAg
ICAgICAgICBsaXN0LT5hcHBlbmQoem9vbUFkanVzdGVkUGl4ZWxWYWx1ZShtaW5pbXVtVmFsdWVG
b3JMZW5ndGgoc3R5bGUtPnBlcnNwZWN0aXZlT3JpZ2luWCgpLCBib3gud2lkdGgoKSwgcmVuZGVy
VmlldyksIHN0eWxlLmdldCgpKSk7Ci0gICAgICAgICAgICAgICAgbGlzdC0+YXBwZW5kKHpvb21B
ZGp1c3RlZFBpeGVsVmFsdWUobWluaW11bVZhbHVlRm9yTGVuZ3RoKHN0eWxlLT5wZXJzcGVjdGl2
ZU9yaWdpblkoKSwgYm94LmhlaWdodCgpLCByZW5kZXJWaWV3KSwgc3R5bGUuZ2V0KCkpKTsKKyAg
ICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQoem9vbUFkanVzdGVkUGl4ZWxWYWx1ZShyZW5kZXJl
ci0+bWluaW11bVZhbHVlRm9yTGVuZ3RoKHN0eWxlLT5wZXJzcGVjdGl2ZU9yaWdpblgoKSwgYm94
LndpZHRoKCkpLCBzdHlsZS5nZXQoKSkpOworICAgICAgICAgICAgICAgIGxpc3QtPmFwcGVuZCh6
b29tQWRqdXN0ZWRQaXhlbFZhbHVlKHJlbmRlcmVyLT5taW5pbXVtVmFsdWVGb3JMZW5ndGgoc3R5
bGUtPnBlcnNwZWN0aXZlT3JpZ2luWSgpLCBib3guaGVpZ2h0KCkpLCBzdHlsZS5nZXQoKSkpOwog
ICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgbGlzdC0+
YXBwZW5kKHpvb21BZGp1c3RlZFBpeGVsVmFsdWVGb3JMZW5ndGgoc3R5bGUtPnBlcnNwZWN0aXZl
T3JpZ2luWCgpLCBzdHlsZS5nZXQoKSkpOwpAQCAtMjUyMiw5ICsyNTIxLDggQEAgUGFzc1JlZlB0
cjxDU1NWYWx1ZT4gQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjpnZXRQcm9wZXJ0eUNTU1Zh
bHVlKENTU1Byb3BlcnQKICAgICAgICAgICAgICAgICBpZiAocmVuZGVyZXItPmlzQm94KCkpCiAg
ICAgICAgICAgICAgICAgICAgIGJveCA9IHRvUmVuZGVyQm94KHJlbmRlcmVyKS0+Ym9yZGVyQm94
UmVjdCgpOwogCi0gICAgICAgICAgICAgICAgUmVuZGVyVmlldyogcmVuZGVyVmlldyA9IG1fbm9k
ZS0+ZG9jdW1lbnQoKS0+cmVuZGVyVmlldygpOwotICAgICAgICAgICAgICAgIGxpc3QtPmFwcGVu
ZCh6b29tQWRqdXN0ZWRQaXhlbFZhbHVlKG1pbmltdW1WYWx1ZUZvckxlbmd0aChzdHlsZS0+dHJh
bnNmb3JtT3JpZ2luWCgpLCBib3gud2lkdGgoKSwgcmVuZGVyVmlldyksIHN0eWxlLmdldCgpKSk7
Ci0gICAgICAgICAgICAgICAgbGlzdC0+YXBwZW5kKHpvb21BZGp1c3RlZFBpeGVsVmFsdWUobWlu
aW11bVZhbHVlRm9yTGVuZ3RoKHN0eWxlLT50cmFuc2Zvcm1PcmlnaW5ZKCksIGJveC5oZWlnaHQo
KSwgcmVuZGVyVmlldyksIHN0eWxlLmdldCgpKSk7CisgICAgICAgICAgICAgICAgbGlzdC0+YXBw
ZW5kKHpvb21BZGp1c3RlZFBpeGVsVmFsdWUocmVuZGVyZXItPm1pbmltdW1WYWx1ZUZvckxlbmd0
aChzdHlsZS0+dHJhbnNmb3JtT3JpZ2luWCgpLCBib3gud2lkdGgoKSksIHN0eWxlLmdldCgpKSk7
CisgICAgICAgICAgICAgICAgbGlzdC0+YXBwZW5kKHpvb21BZGp1c3RlZFBpeGVsVmFsdWUocmVu
ZGVyZXItPm1pbmltdW1WYWx1ZUZvckxlbmd0aChzdHlsZS0+dHJhbnNmb3JtT3JpZ2luWSgpLCBi
b3guaGVpZ2h0KCkpLCBzdHlsZS5nZXQoKSkpOwogICAgICAgICAgICAgICAgIGlmIChzdHlsZS0+
dHJhbnNmb3JtT3JpZ2luWigpICE9IDApCiAgICAgICAgICAgICAgICAgICAgIGxpc3QtPmFwcGVu
ZCh6b29tQWRqdXN0ZWRQaXhlbFZhbHVlKHN0eWxlLT50cmFuc2Zvcm1PcmlnaW5aKCksIHN0eWxl
LmdldCgpKSk7CiAgICAgICAgICAgICB9IGVsc2UgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5k
ZXggYzU4NDdhZmQ4MjBhMjE3ZDQ4MTE0MDk5OTA0MGFiZTk3YjBmN2VlNi4uNjg5MjNiZmIyZTYw
MGM1NzMyOTcyMWFjMzU0NzI4ZTM5N2YxYjY5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBA
IC0xOTY3LDcgKzE5NjcsNiBAQCBib29sIERvY3VtZW50Ojppc1BhZ2VCb3hWaXNpYmxlKGludCBw
YWdlSW5kZXgpCiB2b2lkIERvY3VtZW50OjpwYWdlU2l6ZUFuZE1hcmdpbnNJblBpeGVscyhpbnQg
cGFnZUluZGV4LCBJbnRTaXplJiBwYWdlU2l6ZSwgaW50JiBtYXJnaW5Ub3AsIGludCYgbWFyZ2lu
UmlnaHQsIGludCYgbWFyZ2luQm90dG9tLCBpbnQmIG1hcmdpbkxlZnQpCiB7CiAgICAgUmVmUHRy
PFJlbmRlclN0eWxlPiBzdHlsZSA9IHN0eWxlRm9yUGFnZShwYWdlSW5kZXgpOwotICAgIFJlbmRl
clZpZXcqIHZpZXcgPSByZW5kZXJWaWV3KCk7CiAKICAgICBpbnQgd2lkdGggPSBwYWdlU2l6ZS53
aWR0aCgpOwogICAgIGludCBoZWlnaHQgPSBwYWdlU2l6ZS5oZWlnaHQoKTsKQEAgLTE5ODYsOCAr
MTk4NSw4IEBAIHZvaWQgRG9jdW1lbnQ6OnBhZ2VTaXplQW5kTWFyZ2luc0luUGl4ZWxzKGludCBw
YWdlSW5kZXgsIEludFNpemUmIHBhZ2VTaXplLCBpbnQmCiAgICAgICAgIExlbmd0aFNpemUgc2l6
ZSA9IHN0eWxlLT5wYWdlU2l6ZSgpOwogICAgICAgICBBU1NFUlQoc2l6ZS53aWR0aCgpLmlzRml4
ZWQoKSk7CiAgICAgICAgIEFTU0VSVChzaXplLmhlaWdodCgpLmlzRml4ZWQoKSk7Ci0gICAgICAg
IHdpZHRoID0gdmFsdWVGb3JMZW5ndGgoc2l6ZS53aWR0aCgpLCAwLCB2aWV3KTsKLSAgICAgICAg
aGVpZ2h0ID0gdmFsdWVGb3JMZW5ndGgoc2l6ZS5oZWlnaHQoKSwgMCwgdmlldyk7CisgICAgICAg
IHdpZHRoID0gcmVuZGVyZXIoKS0+dmFsdWVGb3JMZW5ndGgoc2l6ZS53aWR0aCgpLCAwKTsKKyAg
ICAgICAgaGVpZ2h0ID0gcmVuZGVyZXIoKS0+dmFsdWVGb3JMZW5ndGgoc2l6ZS5oZWlnaHQoKSwg
MCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBkZWZhdWx0OgpAQCAtMTk5NywxMCArMTk5
NiwxMCBAQCB2b2lkIERvY3VtZW50OjpwYWdlU2l6ZUFuZE1hcmdpbnNJblBpeGVscyhpbnQgcGFn
ZUluZGV4LCBJbnRTaXplJiBwYWdlU2l6ZSwgaW50JgogCiAgICAgLy8gVGhlIHBlcmNlbnRhZ2Ug
aXMgY2FsY3VsYXRlZCB3aXRoIHJlc3BlY3QgdG8gdGhlIHdpZHRoIGV2ZW4gZm9yIG1hcmdpbiB0
b3AgYW5kIGJvdHRvbS4KICAgICAvLyBodHRwOi8vd3d3LnczLm9yZy9UUi9DU1MyL2JveC5odG1s
I21hcmdpbi1wcm9wZXJ0aWVzCi0gICAgbWFyZ2luVG9wID0gc3R5bGUtPm1hcmdpblRvcCgpLmlz
QXV0bygpID8gbWFyZ2luVG9wIDogaW50VmFsdWVGb3JMZW5ndGgoc3R5bGUtPm1hcmdpblRvcCgp
LCB3aWR0aCwgdmlldyk7Ci0gICAgbWFyZ2luUmlnaHQgPSBzdHlsZS0+bWFyZ2luUmlnaHQoKS5p
c0F1dG8oKSA/IG1hcmdpblJpZ2h0IDogaW50VmFsdWVGb3JMZW5ndGgoc3R5bGUtPm1hcmdpblJp
Z2h0KCksIHdpZHRoLCB2aWV3KTsKLSAgICBtYXJnaW5Cb3R0b20gPSBzdHlsZS0+bWFyZ2luQm90
dG9tKCkuaXNBdXRvKCkgPyBtYXJnaW5Cb3R0b20gOiBpbnRWYWx1ZUZvckxlbmd0aChzdHlsZS0+
bWFyZ2luQm90dG9tKCksIHdpZHRoLCB2aWV3KTsKLSAgICBtYXJnaW5MZWZ0ID0gc3R5bGUtPm1h
cmdpbkxlZnQoKS5pc0F1dG8oKSA/IG1hcmdpbkxlZnQgOiBpbnRWYWx1ZUZvckxlbmd0aChzdHls
ZS0+bWFyZ2luTGVmdCgpLCB3aWR0aCwgdmlldyk7CisgICAgbWFyZ2luVG9wID0gc3R5bGUtPm1h
cmdpblRvcCgpLmlzQXV0bygpID8gbWFyZ2luVG9wIDogcmVuZGVyZXIoKS0+aW50VmFsdWVGb3JM
ZW5ndGgoc3R5bGUtPm1hcmdpblRvcCgpLCB3aWR0aCk7CisgICAgbWFyZ2luUmlnaHQgPSBzdHls
ZS0+bWFyZ2luUmlnaHQoKS5pc0F1dG8oKSA/IG1hcmdpblJpZ2h0IDogcmVuZGVyZXIoKS0+aW50
VmFsdWVGb3JMZW5ndGgoc3R5bGUtPm1hcmdpblJpZ2h0KCksIHdpZHRoKTsKKyAgICBtYXJnaW5C
b3R0b20gPSBzdHlsZS0+bWFyZ2luQm90dG9tKCkuaXNBdXRvKCkgPyBtYXJnaW5Cb3R0b20gOiBy
ZW5kZXJlcigpLT5pbnRWYWx1ZUZvckxlbmd0aChzdHlsZS0+bWFyZ2luQm90dG9tKCksIHdpZHRo
KTsKKyAgICBtYXJnaW5MZWZ0ID0gc3R5bGUtPm1hcmdpbkxlZnQoKS5pc0F1dG8oKSA/IG1hcmdp
bkxlZnQgOiByZW5kZXJlcigpLT5pbnRWYWx1ZUZvckxlbmd0aChzdHlsZS0+bWFyZ2luTGVmdCgp
LCB3aWR0aCk7CiB9CiAKIHZvaWQgRG9jdW1lbnQ6OnNldElzVmlld1NvdXJjZShib29sIGlzVmll
d1NvdXJjZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFyZWFFbGVtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFyZWFFbGVtZW50LmNwcAppbmRleCBiYTQw
OTFmOWUxOTlmZjYzZGExNDAwNjI5OTM5ODUwMzg2MGU3YjIzLi5iMzU1OWRlZTUxMDI5MWQ0ZTQ4
MDc2NmRkMzYxMjg0ODk1OTA3NjYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxBcmVhRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXJlYUVsZW1l
bnQuY3BwCkBAIC0xNDQsMzAgKzE0NCwzMCBAQCBQYXRoIEhUTUxBcmVhRWxlbWVudDo6Z2V0UmVn
aW9uKGNvbnN0IExheW91dFNpemUmIHNpemUpIGNvbnN0CiAgICAgfQogCiAgICAgUGF0aCBwYXRo
OwotICAgIFJlbmRlclZpZXcqIHJlbmRlclZpZXcgPSBkb2N1bWVudCgpLT5yZW5kZXJWaWV3KCk7
CisgICAgY29uc3QgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IGRvY3VtZW50KCktPnJlbmRlcmVy
KCk7CiAgICAgc3dpdGNoIChzaGFwZSkgewogICAgICAgICBjYXNlIFBvbHk6CiAgICAgICAgICAg
ICBpZiAobV9jb29yZHNMZW4gPj0gNikgewogICAgICAgICAgICAgICAgIGludCBudW1Qb2ludHMg
PSBtX2Nvb3Jkc0xlbiAvIDI7Ci0gICAgICAgICAgICAgICAgcGF0aC5tb3ZlVG8oRmxvYXRQb2lu
dChtaW5pbXVtVmFsdWVGb3JMZW5ndGgobV9jb29yZHNbMF0sIHdpZHRoLCByZW5kZXJWaWV3KSwg
bWluaW11bVZhbHVlRm9yTGVuZ3RoKG1fY29vcmRzWzFdLCBoZWlnaHQsIHJlbmRlclZpZXcpKSk7
CisgICAgICAgICAgICAgICAgcGF0aC5tb3ZlVG8oRmxvYXRQb2ludChyZW5kZXJlci0+bWluaW11
bVZhbHVlRm9yTGVuZ3RoKG1fY29vcmRzWzBdLCB3aWR0aCksIHJlbmRlcmVyLT5taW5pbXVtVmFs
dWVGb3JMZW5ndGgobV9jb29yZHNbMV0sIGhlaWdodCkpKTsKICAgICAgICAgICAgICAgICBmb3Ig
KGludCBpID0gMTsgaSA8IG51bVBvaW50czsgKytpKQotICAgICAgICAgICAgICAgICAgICBwYXRo
LmFkZExpbmVUbyhGbG9hdFBvaW50KG1pbmltdW1WYWx1ZUZvckxlbmd0aChtX2Nvb3Jkc1tpICog
Ml0sIHdpZHRoLCByZW5kZXJWaWV3KSwgbWluaW11bVZhbHVlRm9yTGVuZ3RoKG1fY29vcmRzW2kg
KiAyICsgMV0sIGhlaWdodCwgcmVuZGVyVmlldykpKTsKKyAgICAgICAgICAgICAgICAgICAgcGF0
aC5hZGRMaW5lVG8oRmxvYXRQb2ludChyZW5kZXJlci0+bWluaW11bVZhbHVlRm9yTGVuZ3RoKG1f
Y29vcmRzW2kgKiAyXSwgd2lkdGgpLCByZW5kZXJlci0+bWluaW11bVZhbHVlRm9yTGVuZ3RoKG1f
Y29vcmRzW2kgKiAyICsgMV0sIGhlaWdodCkpKTsKICAgICAgICAgICAgICAgICBwYXRoLmNsb3Nl
U3VicGF0aCgpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNh
c2UgQ2lyY2xlOgogICAgICAgICAgICAgaWYgKG1fY29vcmRzTGVuID49IDMpIHsKICAgICAgICAg
ICAgICAgICBMZW5ndGggcmFkaXVzID0gbV9jb29yZHNbMl07Ci0gICAgICAgICAgICAgICAgaW50
IHIgPSBtaW4obWluaW11bVZhbHVlRm9yTGVuZ3RoKHJhZGl1cywgd2lkdGgsIHJlbmRlclZpZXcp
LCBtaW5pbXVtVmFsdWVGb3JMZW5ndGgocmFkaXVzLCBoZWlnaHQsIHJlbmRlclZpZXcpKTsKLSAg
ICAgICAgICAgICAgICBwYXRoLmFkZEVsbGlwc2UoRmxvYXRSZWN0KG1pbmltdW1WYWx1ZUZvckxl
bmd0aChtX2Nvb3Jkc1swXSwgd2lkdGgsIHJlbmRlclZpZXcpIC0gciwgbWluaW11bVZhbHVlRm9y
TGVuZ3RoKG1fY29vcmRzWzFdLCBoZWlnaHQsIHJlbmRlclZpZXcpIC0gciwgMiAqIHIsIDIgKiBy
KSk7CisgICAgICAgICAgICAgICAgaW50IHIgPSBtaW4ocmVuZGVyZXItPm1pbmltdW1WYWx1ZUZv
ckxlbmd0aChyYWRpdXMsIHdpZHRoKSwgcmVuZGVyZXItPm1pbmltdW1WYWx1ZUZvckxlbmd0aChy
YWRpdXMsIGhlaWdodCkpOworICAgICAgICAgICAgICAgIHBhdGguYWRkRWxsaXBzZShGbG9hdFJl
Y3QocmVuZGVyZXItPm1pbmltdW1WYWx1ZUZvckxlbmd0aChtX2Nvb3Jkc1swXSwgd2lkdGgpIC0g
ciwgcmVuZGVyZXItPm1pbmltdW1WYWx1ZUZvckxlbmd0aChtX2Nvb3Jkc1sxXSwgaGVpZ2h0KSAt
IHIsIDIgKiByLCAyICogcikpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIGNhc2UgUmVjdDoKICAgICAgICAgICAgIGlmIChtX2Nvb3Jkc0xlbiA+PSA0KSB7Ci0g
ICAgICAgICAgICAgICAgaW50IHgwID0gbWluaW11bVZhbHVlRm9yTGVuZ3RoKG1fY29vcmRzWzBd
LCB3aWR0aCwgcmVuZGVyVmlldyk7Ci0gICAgICAgICAgICAgICAgaW50IHkwID0gbWluaW11bVZh
bHVlRm9yTGVuZ3RoKG1fY29vcmRzWzFdLCBoZWlnaHQsIHJlbmRlclZpZXcpOwotICAgICAgICAg
ICAgICAgIGludCB4MSA9IG1pbmltdW1WYWx1ZUZvckxlbmd0aChtX2Nvb3Jkc1syXSwgd2lkdGgs
IHJlbmRlclZpZXcpOwotICAgICAgICAgICAgICAgIGludCB5MSA9IG1pbmltdW1WYWx1ZUZvckxl
bmd0aChtX2Nvb3Jkc1szXSwgaGVpZ2h0LCByZW5kZXJWaWV3KTsKKyAgICAgICAgICAgICAgICBp
bnQgeDAgPSByZW5kZXJlci0+bWluaW11bVZhbHVlRm9yTGVuZ3RoKG1fY29vcmRzWzBdLCB3aWR0
aCk7CisgICAgICAgICAgICAgICAgaW50IHkwID0gcmVuZGVyZXItPm1pbmltdW1WYWx1ZUZvckxl
bmd0aChtX2Nvb3Jkc1sxXSwgaGVpZ2h0KTsKKyAgICAgICAgICAgICAgICBpbnQgeDEgPSByZW5k
ZXJlci0+bWluaW11bVZhbHVlRm9yTGVuZ3RoKG1fY29vcmRzWzJdLCB3aWR0aCk7CisgICAgICAg
ICAgICAgICAgaW50IHkxID0gcmVuZGVyZXItPm1pbmltdW1WYWx1ZUZvckxlbmd0aChtX2Nvb3Jk
c1szXSwgaGVpZ2h0KTsKICAgICAgICAgICAgICAgICBwYXRoLmFkZFJlY3QoRmxvYXRSZWN0KHgw
LCB5MCwgeDEgLSB4MCwgeTEgLSB5MCkpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJl
YWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmlsdGVyRWZmZWN0UmVu
ZGVyZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ZpbHRlckVmZmVjdFJlbmRlcmVy
LmNwcAppbmRleCBhYTQ2MGI4NWEwMDk2ZGNmY2EzZTc2MTY5NmY4NWMzMTZkNmMwZTJmLi4zMDZi
ZDNmOTQzMDMwYzlkY2NkMmUxNGRhMDQ2YTBiNTA4MzlkN2U1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvRmlsdGVyRWZmZWN0UmVuZGVyZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9GaWx0ZXJFZmZlY3RSZW5kZXJlci5jcHAKQEAgLTMzMSw3ICszMzEs
NyBAQCBib29sIEZpbHRlckVmZmVjdFJlbmRlcmVyOjpidWlsZChSZW5kZXJPYmplY3QqIHJlbmRl
cmVyLCBjb25zdCBGaWx0ZXJPcGVyYXRpb25zJgogICAgICAgICB9CiAgICAgICAgIGNhc2UgRmls
dGVyT3BlcmF0aW9uOjpCTFVSOiB7CiAgICAgICAgICAgICBCbHVyRmlsdGVyT3BlcmF0aW9uKiBi
bHVyT3BlcmF0aW9uID0gc3RhdGljX2Nhc3Q8Qmx1ckZpbHRlck9wZXJhdGlvbio+KGZpbHRlck9w
ZXJhdGlvbik7Ci0gICAgICAgICAgICBmbG9hdCBzdGREZXZpYXRpb24gPSBmbG9hdFZhbHVlRm9y
TGVuZ3RoKGJsdXJPcGVyYXRpb24tPnN0ZERldmlhdGlvbigpLCAwKTsKKyAgICAgICAgICAgIGZs
b2F0IHN0ZERldmlhdGlvbiA9IHJlbmRlcmVyLT5mbG9hdFZhbHVlRm9yTGVuZ3RoKGJsdXJPcGVy
YXRpb24tPnN0ZERldmlhdGlvbigpLCAwKTsKICAgICAgICAgICAgIGVmZmVjdCA9IEZFR2F1c3Np
YW5CbHVyOjpjcmVhdGUodGhpcywgc3RkRGV2aWF0aW9uLCBzdGREZXZpYXRpb24pOwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJCbG9jay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxv
Y2suY3BwCmluZGV4IDM3M2I5MWU0ZTM2Nzc0Y2JiNDI4MzE2MTAwNzQ1NWExYWRhMjIyOGMuLjky
ZmZkMDlmNDhlZDExNzk2OTgyZjlkOTg1N2JjMTk5ZWNjM2QwZGEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcApAQCAtNDI4MSwxMiArNDI4MSw5IEBAIGlubGluZSB2
b2lkIFJlbmRlckJsb2NrOjpGbG9hdEludGVydmFsU2VhcmNoQWRhcHRlcjxGbG9hdFR5cGVWYWx1
ZT46OmNvbGxlY3RJZk5lCiBMYXlvdXRVbml0IFJlbmRlckJsb2NrOjp0ZXh0SW5kZW50T2Zmc2V0
KCkgY29uc3QKIHsKICAgICBMYXlvdXRVbml0IGN3ID0gMDsKLSAgICBSZW5kZXJWaWV3KiByZW5k
ZXJWaWV3ID0gMDsKICAgICBpZiAoc3R5bGUoKS0+dGV4dEluZGVudCgpLmlzUGVyY2VudCgpKQog
ICAgICAgICBjdyA9IGNvbnRhaW5pbmdCbG9jaygpLT5hdmFpbGFibGVMb2dpY2FsV2lkdGgoKTsK
LSAgICBlbHNlIGlmIChzdHlsZSgpLT50ZXh0SW5kZW50KCkuaXNWaWV3cG9ydFBlcmNlbnRhZ2Uo
KSkKLSAgICAgICAgcmVuZGVyVmlldyA9IHZpZXcoKTsKLSAgICByZXR1cm4gbWluaW11bVZhbHVl
Rm9yTGVuZ3RoKHN0eWxlKCktPnRleHRJbmRlbnQoKSwgY3csIHJlbmRlclZpZXcpOworICAgIHJl
dHVybiBtaW5pbXVtVmFsdWVGb3JMZW5ndGgoc3R5bGUoKS0+dGV4dEluZGVudCgpLCBjdyk7CiB9
CiAKIExheW91dFVuaXQgUmVuZGVyQmxvY2s6OmxvZ2ljYWxMZWZ0T2Zmc2V0Rm9yQ29udGVudChS
ZW5kZXJSZWdpb24qIHJlZ2lvbiwgTGF5b3V0VW5pdCBvZmZzZXRGcm9tTG9naWNhbFRvcE9mRmly
c3RQYWdlKSBjb25zdApAQCAtNTk1Niw3ICs1OTUzLDcgQEAgdm9pZCBSZW5kZXJCbG9jazo6Y29t
cHV0ZUlubGluZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMoKQogICAgIC8vIFNpZ25hbHMgdGhlIHRl
eHQgaW5kZW50IHdhcyBtb3JlIG5lZ2F0aXZlIHRoYW4gdGhlIG1pbiBwcmVmZXJyZWQgd2lkdGgK
ICAgICBib29sIGhhc1JlbWFpbmluZ05lZ2F0aXZlVGV4dEluZGVudCA9IGZhbHNlOwogCi0gICAg
TGF5b3V0VW5pdCB0ZXh0SW5kZW50ID0gbWluaW11bVZhbHVlRm9yTGVuZ3RoKHN0eWxlVG9Vc2Ut
PnRleHRJbmRlbnQoKSwgY3csIHZpZXcoKSk7CisgICAgTGF5b3V0VW5pdCB0ZXh0SW5kZW50ID0g
bWluaW11bVZhbHVlRm9yTGVuZ3RoKHN0eWxlVG9Vc2UtPnRleHRJbmRlbnQoKSwgY3cpOwogICAg
IFJlbmRlck9iamVjdCogcHJldkZsb2F0ID0gMDsKICAgICBib29sIGlzUHJldkNoaWxkSW5saW5l
RmxvdyA9IGZhbHNlOwogICAgIGJvb2wgc2hvdWxkQnJlYWtMaW5lQWZ0ZXJUZXh0ID0gZmFsc2U7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCmluZGV4IDhiNWI2ZmQ0MzlmY2Nj
NTI3NTI5MzhjOTFhNzNjZTFlY2NhNzgyNjYuLjFjMjk3MDU0ZjA2ZDE1MmFhMWI4YzQ0ZjE2ZDky
NDg5MzU2YWFiYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJC
b3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCkBAIC01
NzYsMTAgKzU3Niw5IEBAIGludCBSZW5kZXJCb3g6OnJlZmxlY3Rpb25PZmZzZXQoKSBjb25zdAog
ewogICAgIGlmICghc3R5bGUoKS0+Ym94UmVmbGVjdCgpKQogICAgICAgICByZXR1cm4gMDsKLSAg
ICBSZW5kZXJWaWV3KiByZW5kZXJWaWV3ID0gdmlldygpOwogICAgIGlmIChzdHlsZSgpLT5ib3hS
ZWZsZWN0KCktPmRpcmVjdGlvbigpID09IFJlZmxlY3Rpb25MZWZ0IHx8IHN0eWxlKCktPmJveFJl
ZmxlY3QoKS0+ZGlyZWN0aW9uKCkgPT0gUmVmbGVjdGlvblJpZ2h0KQotICAgICAgICByZXR1cm4g
dmFsdWVGb3JMZW5ndGgoc3R5bGUoKS0+Ym94UmVmbGVjdCgpLT5vZmZzZXQoKSwgYm9yZGVyQm94
UmVjdCgpLndpZHRoKCksIHJlbmRlclZpZXcpOwotICAgIHJldHVybiB2YWx1ZUZvckxlbmd0aChz
dHlsZSgpLT5ib3hSZWZsZWN0KCktPm9mZnNldCgpLCBib3JkZXJCb3hSZWN0KCkuaGVpZ2h0KCks
IHJlbmRlclZpZXcpOworICAgICAgICByZXR1cm4gdmFsdWVGb3JMZW5ndGgoc3R5bGUoKS0+Ym94
UmVmbGVjdCgpLT5vZmZzZXQoKSwgYm9yZGVyQm94UmVjdCgpLndpZHRoKCkpOworICAgIHJldHVy
biB2YWx1ZUZvckxlbmd0aChzdHlsZSgpLT5ib3hSZWZsZWN0KCktPm9mZnNldCgpLCBib3JkZXJC
b3hSZWN0KCkuaGVpZ2h0KCkpOwogfQogCiBMYXlvdXRSZWN0IFJlbmRlckJveDo6cmVmbGVjdGVk
UmVjdChjb25zdCBMYXlvdXRSZWN0JiByKSBjb25zdApAQCAtMTQ1Nyw3ICsxNDU2LDcgQEAgYm9v
bCBSZW5kZXJCb3g6OnB1c2hDb250ZW50c0NsaXAoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0
IExheW91dFBvaW50JiBhY2N1bXUKICAgICBJbnRSZWN0IGNsaXBSZWN0ID0gcGl4ZWxTbmFwcGVk
SW50UmVjdChpc0NvbnRyb2xDbGlwID8gY29udHJvbENsaXBSZWN0KGFjY3VtdWxhdGVkT2Zmc2V0
KSA6IG92ZXJmbG93Q2xpcFJlY3QoYWNjdW11bGF0ZWRPZmZzZXQsIHBhaW50SW5mby5yZW5kZXJS
ZWdpb24pKTsKICAgICBwYWludEluZm8uY29udGV4dC0+c2F2ZSgpOwogICAgIGlmIChzdHlsZSgp
LT5oYXNCb3JkZXJSYWRpdXMoKSkKLSAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPmNsaXBSb3Vu
ZGVkUmVjdChzdHlsZSgpLT5nZXRSb3VuZGVkSW5uZXJCb3JkZXJGb3IoTGF5b3V0UmVjdChhY2N1
bXVsYXRlZE9mZnNldCwgc2l6ZSgpKSkpOworICAgICAgICBwYWludEluZm8uY29udGV4dC0+Y2xp
cFJvdW5kZWRSZWN0KHN0eWxlKCktPmdldFJvdW5kZWRJbm5lckJvcmRlckZvcihMYXlvdXRSZWN0
KGFjY3VtdWxhdGVkT2Zmc2V0LCBzaXplKCkpLCB0aGlzKSk7CiAgICAgcGFpbnRJbmZvLmNvbnRl
eHQtPmNsaXAoY2xpcFJlY3QpOwogICAgIHJldHVybiB0cnVlOwogfQpAQCAtMTQ5NywxMCArMTQ5
Niw5IEBAIExheW91dFJlY3QgUmVuZGVyQm94OjpjbGlwUmVjdChjb25zdCBMYXlvdXRQb2ludCYg
bG9jYXRpb24sIFJlbmRlclJlZ2lvbiogcmVnaW9uCiB7CiAgICAgTGF5b3V0UmVjdCBib3JkZXJC
b3hSZWN0ID0gYm9yZGVyQm94UmVjdEluUmVnaW9uKHJlZ2lvbik7CiAgICAgTGF5b3V0UmVjdCBj
bGlwUmVjdCA9IExheW91dFJlY3QoYm9yZGVyQm94UmVjdC5sb2NhdGlvbigpICsgbG9jYXRpb24s
IGJvcmRlckJveFJlY3Quc2l6ZSgpKTsKLSAgICBSZW5kZXJWaWV3KiByZW5kZXJWaWV3ID0gdmll
dygpOwogCiAgICAgaWYgKCFzdHlsZSgpLT5jbGlwTGVmdCgpLmlzQXV0bygpKSB7Ci0gICAgICAg
IExheW91dFVuaXQgYyA9IHZhbHVlRm9yTGVuZ3RoKHN0eWxlKCktPmNsaXBMZWZ0KCksIGJvcmRl
ckJveFJlY3Qud2lkdGgoKSwgcmVuZGVyVmlldyk7CisgICAgICAgIExheW91dFVuaXQgYyA9IHZh
bHVlRm9yTGVuZ3RoKHN0eWxlKCktPmNsaXBMZWZ0KCksIGJvcmRlckJveFJlY3Qud2lkdGgoKSk7
CiAgICAgICAgIGNsaXBSZWN0Lm1vdmUoYywgMCk7CiAgICAgICAgIGNsaXBSZWN0LmNvbnRyYWN0
KGMsIDApOwogICAgIH0KQEAgLTE1MDksMTYgKzE1MDcsMTYgQEAgTGF5b3V0UmVjdCBSZW5kZXJC
b3g6OmNsaXBSZWN0KGNvbnN0IExheW91dFBvaW50JiBsb2NhdGlvbiwgUmVuZGVyUmVnaW9uKiBy
ZWdpb24KICAgICAvLyBmcm9tIHRoZSBsZWZ0IGFuZCB0b3AgZWRnZXMuIFRoZXJlZm9yZSBpdCdz
IGJldHRlciB0byBhdm9pZCBjb25zdHJhaW5pbmcgdG8gc21hbGxlciB3aWR0aHMgYW5kIGhlaWdo
dHMuCiAKICAgICBpZiAoIXN0eWxlKCktPmNsaXBSaWdodCgpLmlzQXV0bygpKQotICAgICAgICBj
bGlwUmVjdC5jb250cmFjdCh3aWR0aCgpIC0gdmFsdWVGb3JMZW5ndGgoc3R5bGUoKS0+Y2xpcFJp
Z2h0KCksIHdpZHRoKCksIHJlbmRlclZpZXcpLCAwKTsKKyAgICAgICAgY2xpcFJlY3QuY29udHJh
Y3Qod2lkdGgoKSAtIHZhbHVlRm9yTGVuZ3RoKHN0eWxlKCktPmNsaXBSaWdodCgpLCB3aWR0aCgp
KSwgMCk7CiAKICAgICBpZiAoIXN0eWxlKCktPmNsaXBUb3AoKS5pc0F1dG8oKSkgewotICAgICAg
ICBMYXlvdXRVbml0IGMgPSB2YWx1ZUZvckxlbmd0aChzdHlsZSgpLT5jbGlwVG9wKCksIGJvcmRl
ckJveFJlY3QuaGVpZ2h0KCksIHJlbmRlclZpZXcpOworICAgICAgICBMYXlvdXRVbml0IGMgPSB2
YWx1ZUZvckxlbmd0aChzdHlsZSgpLT5jbGlwVG9wKCksIGJvcmRlckJveFJlY3QuaGVpZ2h0KCkp
OwogICAgICAgICBjbGlwUmVjdC5tb3ZlKDAsIGMpOwogICAgICAgICBjbGlwUmVjdC5jb250cmFj
dCgwLCBjKTsKICAgICB9CiAKICAgICBpZiAoIXN0eWxlKCktPmNsaXBCb3R0b20oKS5pc0F1dG8o
KSkKLSAgICAgICAgY2xpcFJlY3QuY29udHJhY3QoMCwgaGVpZ2h0KCkgLSB2YWx1ZUZvckxlbmd0
aChzdHlsZSgpLT5jbGlwQm90dG9tKCksIGhlaWdodCgpLCByZW5kZXJWaWV3KSk7CisgICAgICAg
IGNsaXBSZWN0LmNvbnRyYWN0KDAsIGhlaWdodCgpIC0gdmFsdWVGb3JMZW5ndGgoc3R5bGUoKS0+
Y2xpcEJvdHRvbSgpLCBoZWlnaHQoKSkpOwogCiAgICAgcmV0dXJuIGNsaXBSZWN0OwogfQpAQCAt
MjA0Myw5ICsyMDQxLDggQEAgdm9pZCBSZW5kZXJCb3g6OmNvbXB1dGVMb2dpY2FsV2lkdGhJblJl
Z2lvbihMb2dpY2FsRXh0ZW50Q29tcHV0ZWRWYWx1ZXMmIGNvbXB1dGUKICAgICAKICAgICBpZiAo
aXNJbmxpbmUoKSAmJiAhaXNJbmxpbmVCbG9ja09ySW5saW5lVGFibGUoKSkgewogICAgICAgICAv
LyBqdXN0IGNhbGN1bGF0ZSBtYXJnaW5zCi0gICAgICAgIFJlbmRlclZpZXcqIHJlbmRlclZpZXcg
PSB2aWV3KCk7Ci0gICAgICAgIGNvbXB1dGVkVmFsdWVzLm1fbWFyZ2lucy5tX3N0YXJ0ID0gbWlu
aW11bVZhbHVlRm9yTGVuZ3RoKHN0eWxlVG9Vc2UtPm1hcmdpblN0YXJ0KCksIGNvbnRhaW5lckxv
Z2ljYWxXaWR0aCwgcmVuZGVyVmlldyk7Ci0gICAgICAgIGNvbXB1dGVkVmFsdWVzLm1fbWFyZ2lu
cy5tX2VuZCA9IG1pbmltdW1WYWx1ZUZvckxlbmd0aChzdHlsZVRvVXNlLT5tYXJnaW5FbmQoKSwg
Y29udGFpbmVyTG9naWNhbFdpZHRoLCByZW5kZXJWaWV3KTsKKyAgICAgICAgY29tcHV0ZWRWYWx1
ZXMubV9tYXJnaW5zLm1fc3RhcnQgPSBtaW5pbXVtVmFsdWVGb3JMZW5ndGgoc3R5bGVUb1VzZS0+
bWFyZ2luU3RhcnQoKSwgY29udGFpbmVyTG9naWNhbFdpZHRoKTsKKyAgICAgICAgY29tcHV0ZWRW
YWx1ZXMubV9tYXJnaW5zLm1fZW5kID0gbWluaW11bVZhbHVlRm9yTGVuZ3RoKHN0eWxlVG9Vc2Ut
Pm1hcmdpbkVuZCgpLCBjb250YWluZXJMb2dpY2FsV2lkdGgpOwogICAgICAgICBpZiAodHJlYXRB
c1JlcGxhY2VkKQogICAgICAgICAgICAgY29tcHV0ZWRWYWx1ZXMubV9leHRlbnQgPSBtYXg8TGF5
b3V0VW5pdD4oZmxvYXRWYWx1ZUZvckxlbmd0aChsb2dpY2FsV2lkdGhMZW5ndGgsIDApICsgYm9y
ZGVyQW5kUGFkZGluZ0xvZ2ljYWxXaWR0aCgpLCBtaW5QcmVmZXJyZWRMb2dpY2FsV2lkdGgoKSk7
CiAgICAgICAgIHJldHVybjsKQEAgLTIwNjQsOSArMjA2MSw4IEBAIHZvaWQgUmVuZGVyQm94Ojpj
b21wdXRlTG9naWNhbFdpZHRoSW5SZWdpb24oTG9naWNhbEV4dGVudENvbXB1dGVkVmFsdWVzJiBj
b21wdXRlCiAKICAgICAvLyBNYXJnaW4gY2FsY3VsYXRpb25zLgogICAgIGlmIChoYXNQZXJwZW5k
aWN1bGFyQ29udGFpbmluZ0Jsb2NrIHx8IGlzRmxvYXRpbmcoKSB8fCBpc0lubGluZSgpKSB7Ci0g
ICAgICAgIFJlbmRlclZpZXcqIHJlbmRlclZpZXcgPSB2aWV3KCk7Ci0gICAgICAgIGNvbXB1dGVk
VmFsdWVzLm1fbWFyZ2lucy5tX3N0YXJ0ID0gbWluaW11bVZhbHVlRm9yTGVuZ3RoKHN0eWxlVG9V
c2UtPm1hcmdpblN0YXJ0KCksIGNvbnRhaW5lckxvZ2ljYWxXaWR0aCwgcmVuZGVyVmlldyk7Ci0g
ICAgICAgIGNvbXB1dGVkVmFsdWVzLm1fbWFyZ2lucy5tX2VuZCA9IG1pbmltdW1WYWx1ZUZvckxl
bmd0aChzdHlsZVRvVXNlLT5tYXJnaW5FbmQoKSwgY29udGFpbmVyTG9naWNhbFdpZHRoLCByZW5k
ZXJWaWV3KTsKKyAgICAgICAgY29tcHV0ZWRWYWx1ZXMubV9tYXJnaW5zLm1fc3RhcnQgPSBtaW5p
bXVtVmFsdWVGb3JMZW5ndGgoc3R5bGVUb1VzZS0+bWFyZ2luU3RhcnQoKSwgY29udGFpbmVyTG9n
aWNhbFdpZHRoKTsKKyAgICAgICAgY29tcHV0ZWRWYWx1ZXMubV9tYXJnaW5zLm1fZW5kID0gbWlu
aW11bVZhbHVlRm9yTGVuZ3RoKHN0eWxlVG9Vc2UtPm1hcmdpbkVuZCgpLCBjb250YWluZXJMb2dp
Y2FsV2lkdGgpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIExheW91dFVuaXQgY29udGFpbmVyTG9n
aWNhbFdpZHRoRm9yQXV0b01hcmdpbnMgPSBjb250YWluZXJMb2dpY2FsV2lkdGg7CiAgICAgICAg
IGlmIChhdm9pZHNGbG9hdHMoKSAmJiBjYi0+Y29udGFpbnNGbG9hdHMoKSkKQEAgLTIwOTcsOSAr
MjA5Myw4IEBAIExheW91dFVuaXQgUmVuZGVyQm94OjpmaWxsQXZhaWxhYmxlTWVhc3VyZShMYXlv
dXRVbml0IGF2YWlsYWJsZUxvZ2ljYWxXaWR0aCkgY29uCiAKIExheW91dFVuaXQgUmVuZGVyQm94
OjpmaWxsQXZhaWxhYmxlTWVhc3VyZShMYXlvdXRVbml0IGF2YWlsYWJsZUxvZ2ljYWxXaWR0aCwg
TGF5b3V0VW5pdCYgbWFyZ2luU3RhcnQsIExheW91dFVuaXQmIG1hcmdpbkVuZCkgY29uc3QKIHsK
LSAgICBSZW5kZXJWaWV3KiByZW5kZXJWaWV3ID0gdmlldygpOwotICAgIG1hcmdpblN0YXJ0ID0g
bWluaW11bVZhbHVlRm9yTGVuZ3RoKHN0eWxlKCktPm1hcmdpblN0YXJ0KCksIGF2YWlsYWJsZUxv
Z2ljYWxXaWR0aCwgcmVuZGVyVmlldyk7Ci0gICAgbWFyZ2luRW5kID0gbWluaW11bVZhbHVlRm9y
TGVuZ3RoKHN0eWxlKCktPm1hcmdpbkVuZCgpLCBhdmFpbGFibGVMb2dpY2FsV2lkdGgsIHJlbmRl
clZpZXcpOworICAgIG1hcmdpblN0YXJ0ID0gbWluaW11bVZhbHVlRm9yTGVuZ3RoKHN0eWxlKCkt
Pm1hcmdpblN0YXJ0KCksIGF2YWlsYWJsZUxvZ2ljYWxXaWR0aCk7CisgICAgbWFyZ2luRW5kID0g
bWluaW11bVZhbHVlRm9yTGVuZ3RoKHN0eWxlKCktPm1hcmdpbkVuZCgpLCBhdmFpbGFibGVMb2dp
Y2FsV2lkdGgpOwogICAgIHJldHVybiBhdmFpbGFibGVMb2dpY2FsV2lkdGggLSBtYXJnaW5TdGFy
dCAtIG1hcmdpbkVuZDsKIH0KIApAQCAtMjE0Nyw3ICsyMTQyLDcgQEAgTGF5b3V0VW5pdCBSZW5k
ZXJCb3g6OmNvbXB1dGVMb2dpY2FsV2lkdGhJblJlZ2lvblVzaW5nKFNpemVUeXBlIHdpZHRoVHlw
ZSwgTGF5b3UKICAgICAKICAgICBpZiAoIWxvZ2ljYWxXaWR0aC5pc0ludHJpbnNpY09yQXV0bygp
KSB7CiAgICAgICAgIC8vIEZJWE1FOiBJZiB0aGUgY29udGFpbmluZyBibG9jayBmbG93IGlzIHBl
cnBlbmRpY3VsYXIgdG8gb3VyIGRpcmVjdGlvbiB3ZSBuZWVkIHRvIHVzZSB0aGUgYXZhaWxhYmxl
IGxvZ2ljYWwgaGVpZ2h0IGluc3RlYWQuCi0gICAgICAgIHJldHVybiBhZGp1c3RCb3JkZXJCb3hM
b2dpY2FsV2lkdGhGb3JCb3hTaXppbmcodmFsdWVGb3JMZW5ndGgobG9naWNhbFdpZHRoLCBhdmFp
bGFibGVMb2dpY2FsV2lkdGgsIHZpZXcoKSkpOworICAgICAgICByZXR1cm4gYWRqdXN0Qm9yZGVy
Qm94TG9naWNhbFdpZHRoRm9yQm94U2l6aW5nKHZhbHVlRm9yTGVuZ3RoKGxvZ2ljYWxXaWR0aCwg
YXZhaWxhYmxlTG9naWNhbFdpZHRoKSk7CiAgICAgfQogCiAgICAgaWYgKGxvZ2ljYWxXaWR0aC5p
c0ludHJpbnNpYygpKQpAQCAtMjI0MywxMiArMjIzOCwxMSBAQCB2b2lkIFJlbmRlckJveDo6Y29t
cHV0ZUlubGluZURpcmVjdGlvbk1hcmdpbnMoUmVuZGVyQmxvY2sqIGNvbnRhaW5pbmdCbG9jaywg
TGF5bwogICAgIGNvbnN0IFJlbmRlclN0eWxlKiBjb250YWluaW5nQmxvY2tTdHlsZSA9IGNvbnRh
aW5pbmdCbG9jay0+c3R5bGUoKTsKICAgICBMZW5ndGggbWFyZ2luU3RhcnRMZW5ndGggPSBzdHls
ZSgpLT5tYXJnaW5TdGFydFVzaW5nKGNvbnRhaW5pbmdCbG9ja1N0eWxlKTsKICAgICBMZW5ndGgg
bWFyZ2luRW5kTGVuZ3RoID0gc3R5bGUoKS0+bWFyZ2luRW5kVXNpbmcoY29udGFpbmluZ0Jsb2Nr
U3R5bGUpOwotICAgIFJlbmRlclZpZXcqIHJlbmRlclZpZXcgPSB2aWV3KCk7CiAKICAgICBpZiAo
aXNGbG9hdGluZygpIHx8IGlzSW5saW5lKCkpIHsKICAgICAgICAgLy8gSW5saW5lIGJsb2Nrcy90
YWJsZXMgYW5kIGZsb2F0cyBkb24ndCBoYXZlIHRoZWlyIG1hcmdpbnMgaW5jcmVhc2VkLgotICAg
ICAgICBtYXJnaW5TdGFydCA9IG1pbmltdW1WYWx1ZUZvckxlbmd0aChtYXJnaW5TdGFydExlbmd0
aCwgY29udGFpbmVyV2lkdGgsIHJlbmRlclZpZXcpOwotICAgICAgICBtYXJnaW5FbmQgPSBtaW5p
bXVtVmFsdWVGb3JMZW5ndGgobWFyZ2luRW5kTGVuZ3RoLCBjb250YWluZXJXaWR0aCwgcmVuZGVy
Vmlldyk7CisgICAgICAgIG1hcmdpblN0YXJ0ID0gbWluaW11bVZhbHVlRm9yTGVuZ3RoKG1hcmdp
blN0YXJ0TGVuZ3RoLCBjb250YWluZXJXaWR0aCk7CisgICAgICAgIG1hcmdpbkVuZCA9IG1pbmlt
dW1WYWx1ZUZvckxlbmd0aChtYXJnaW5FbmRMZW5ndGgsIGNvbnRhaW5lcldpZHRoKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIApAQCAtMjI1Niw4ICsyMjUwLDggQEAgdm9pZCBSZW5kZXJCb3g6
OmNvbXB1dGVJbmxpbmVEaXJlY3Rpb25NYXJnaW5zKFJlbmRlckJsb2NrKiBjb250YWluaW5nQmxv
Y2ssIExheW8KICAgICBpZiAoKG1hcmdpblN0YXJ0TGVuZ3RoLmlzQXV0bygpICYmIG1hcmdpbkVu
ZExlbmd0aC5pc0F1dG8oKSAmJiBjaGlsZFdpZHRoIDwgY29udGFpbmVyV2lkdGgpCiAgICAgICAg
IHx8ICghbWFyZ2luU3RhcnRMZW5ndGguaXNBdXRvKCkgJiYgIW1hcmdpbkVuZExlbmd0aC5pc0F1
dG8oKSAmJiBjb250YWluaW5nQmxvY2stPnN0eWxlKCktPnRleHRBbGlnbigpID09IFdFQktJVF9D
RU5URVIpKSB7CiAgICAgICAgIC8vIE90aGVyIGJyb3dzZXJzIGNlbnRlciB0aGUgbWFyZ2luIGJv
eCBmb3IgYWxpZ249Y2VudGVyIGVsZW1lbnRzIHNvIHdlIG1hdGNoIHRoZW0gaGVyZS4KLSAgICAg
ICAgTGF5b3V0VW5pdCBtYXJnaW5TdGFydFdpZHRoID0gbWluaW11bVZhbHVlRm9yTGVuZ3RoKG1h
cmdpblN0YXJ0TGVuZ3RoLCBjb250YWluZXJXaWR0aCwgcmVuZGVyVmlldyk7Ci0gICAgICAgIExh
eW91dFVuaXQgbWFyZ2luRW5kV2lkdGggPSBtaW5pbXVtVmFsdWVGb3JMZW5ndGgobWFyZ2luRW5k
TGVuZ3RoLCBjb250YWluZXJXaWR0aCwgcmVuZGVyVmlldyk7CisgICAgICAgIExheW91dFVuaXQg
bWFyZ2luU3RhcnRXaWR0aCA9IG1pbmltdW1WYWx1ZUZvckxlbmd0aChtYXJnaW5TdGFydExlbmd0
aCwgY29udGFpbmVyV2lkdGgpOworICAgICAgICBMYXlvdXRVbml0IG1hcmdpbkVuZFdpZHRoID0g
bWluaW11bVZhbHVlRm9yTGVuZ3RoKG1hcmdpbkVuZExlbmd0aCwgY29udGFpbmVyV2lkdGgpOwog
ICAgICAgICBMYXlvdXRVbml0IGNlbnRlcmVkTWFyZ2luQm94U3RhcnQgPSBtYXg8TGF5b3V0VW5p
dD4oMCwgKGNvbnRhaW5lcldpZHRoIC0gY2hpbGRXaWR0aCAtIG1hcmdpblN0YXJ0V2lkdGggLSBt
YXJnaW5FbmRXaWR0aCkgLyAyKTsKICAgICAgICAgbWFyZ2luU3RhcnQgPSBjZW50ZXJlZE1hcmdp
bkJveFN0YXJ0ICsgbWFyZ2luU3RhcnRXaWR0aDsKICAgICAgICAgbWFyZ2luRW5kID0gY29udGFp
bmVyV2lkdGggLSBjaGlsZFdpZHRoIC0gbWFyZ2luU3RhcnQgKyBtYXJnaW5FbmRXaWR0aDsKQEAg
LTIyNjYsNyArMjI2MCw3IEBAIHZvaWQgUmVuZGVyQm94Ojpjb21wdXRlSW5saW5lRGlyZWN0aW9u
TWFyZ2lucyhSZW5kZXJCbG9jayogY29udGFpbmluZ0Jsb2NrLCBMYXlvCiAgICAgCiAgICAgLy8g
Q2FzZSBUd286IFRoZSBvYmplY3QgaXMgYmVpbmcgcHVzaGVkIHRvIHRoZSBzdGFydCBvZiB0aGUg
Y29udGFpbmluZyBibG9jaydzIGF2YWlsYWJsZSBsb2dpY2FsIHdpZHRoLgogICAgIGlmIChtYXJn
aW5FbmRMZW5ndGguaXNBdXRvKCkgJiYgY2hpbGRXaWR0aCA8IGNvbnRhaW5lcldpZHRoKSB7Ci0g
ICAgICAgIG1hcmdpblN0YXJ0ID0gdmFsdWVGb3JMZW5ndGgobWFyZ2luU3RhcnRMZW5ndGgsIGNv
bnRhaW5lcldpZHRoLCByZW5kZXJWaWV3KTsKKyAgICAgICAgbWFyZ2luU3RhcnQgPSB2YWx1ZUZv
ckxlbmd0aChtYXJnaW5TdGFydExlbmd0aCwgY29udGFpbmVyV2lkdGgpOwogICAgICAgICBtYXJn
aW5FbmQgPSBjb250YWluZXJXaWR0aCAtIGNoaWxkV2lkdGggLSBtYXJnaW5TdGFydDsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0gCkBAIC0yMjc1LDE1ICsyMjY5LDE1IEBAIHZvaWQgUmVuZGVyQm94
Ojpjb21wdXRlSW5saW5lRGlyZWN0aW9uTWFyZ2lucyhSZW5kZXJCbG9jayogY29udGFpbmluZ0Js
b2NrLCBMYXlvCiAgICAgYm9vbCBwdXNoVG9FbmRGcm9tVGV4dEFsaWduID0gIW1hcmdpbkVuZExl
bmd0aC5pc0F1dG8oKSAmJiAoKCFjb250YWluaW5nQmxvY2tTdHlsZS0+aXNMZWZ0VG9SaWdodERp
cmVjdGlvbigpICYmIGNvbnRhaW5pbmdCbG9ja1N0eWxlLT50ZXh0QWxpZ24oKSA9PSBXRUJLSVRf
TEVGVCkKICAgICAgICAgfHwgKGNvbnRhaW5pbmdCbG9ja1N0eWxlLT5pc0xlZnRUb1JpZ2h0RGly
ZWN0aW9uKCkgJiYgY29udGFpbmluZ0Jsb2NrU3R5bGUtPnRleHRBbGlnbigpID09IFdFQktJVF9S
SUdIVCkpOwogICAgIGlmICgobWFyZ2luU3RhcnRMZW5ndGguaXNBdXRvKCkgJiYgY2hpbGRXaWR0
aCA8IGNvbnRhaW5lcldpZHRoKSB8fCBwdXNoVG9FbmRGcm9tVGV4dEFsaWduKSB7Ci0gICAgICAg
IG1hcmdpbkVuZCA9IHZhbHVlRm9yTGVuZ3RoKG1hcmdpbkVuZExlbmd0aCwgY29udGFpbmVyV2lk
dGgsIHJlbmRlclZpZXcpOworICAgICAgICBtYXJnaW5FbmQgPSB2YWx1ZUZvckxlbmd0aChtYXJn
aW5FbmRMZW5ndGgsIGNvbnRhaW5lcldpZHRoKTsKICAgICAgICAgbWFyZ2luU3RhcnQgPSBjb250
YWluZXJXaWR0aCAtIGNoaWxkV2lkdGggLSBtYXJnaW5FbmQ7CiAgICAgICAgIHJldHVybjsKICAg
ICB9IAogICAgIAogICAgIC8vIENhc2UgRm91cjogRWl0aGVyIG5vIGF1dG8gbWFyZ2lucywgb3Ig
b3VyIHdpZHRoIGlzID49IHRoZSBjb250YWluZXIgd2lkdGggKGNzczIuMSwgMTAuMy4zKS4gIElu
IHRoYXQgY2FzZQogICAgIC8vIGF1dG8gbWFyZ2lucyB3aWxsIGp1c3QgdHVybiBpbnRvIDAuCi0g
ICAgbWFyZ2luU3RhcnQgPSBtaW5pbXVtVmFsdWVGb3JMZW5ndGgobWFyZ2luU3RhcnRMZW5ndGgs
IGNvbnRhaW5lcldpZHRoLCByZW5kZXJWaWV3KTsKLSAgICBtYXJnaW5FbmQgPSBtaW5pbXVtVmFs
dWVGb3JMZW5ndGgobWFyZ2luRW5kTGVuZ3RoLCBjb250YWluZXJXaWR0aCwgcmVuZGVyVmlldyk7
CisgICAgbWFyZ2luU3RhcnQgPSBtaW5pbXVtVmFsdWVGb3JMZW5ndGgobWFyZ2luU3RhcnRMZW5n
dGgsIGNvbnRhaW5lcldpZHRoKTsKKyAgICBtYXJnaW5FbmQgPSBtaW5pbXVtVmFsdWVGb3JMZW5n
dGgobWFyZ2luRW5kTGVuZ3RoLCBjb250YWluZXJXaWR0aCk7CiB9CiAKIFJlbmRlckJveFJlZ2lv
bkluZm8qIFJlbmRlckJveDo6cmVuZGVyQm94UmVnaW9uSW5mbyhSZW5kZXJSZWdpb24qIHJlZ2lv
biwgTGF5b3V0VW5pdCBvZmZzZXRGcm9tTG9naWNhbFRvcE9mRmlyc3RQYWdlLCBSZW5kZXJCb3hS
ZWdpb25JbmZvRmxhZ3MgY2FjaGVGbGFnKSBjb25zdApAQCAtMjUyNiw3ICsyNTIwLDcgQEAgTGF5
b3V0VW5pdCBSZW5kZXJCb3g6OmNvbXB1dGVDb250ZW50QW5kU2Nyb2xsYmFyTG9naWNhbEhlaWdo
dFVzaW5nKFNpemVUeXBlIGhlaWcKICAgICBpZiAoaGVpZ2h0LmlzUGVyY2VudCgpKQogICAgICAg
ICByZXR1cm4gY29tcHV0ZVBlcmNlbnRhZ2VMb2dpY2FsSGVpZ2h0KGhlaWdodCk7CiAgICAgaWYg
KGhlaWdodC5pc1ZpZXdwb3J0UGVyY2VudGFnZSgpKQotICAgICAgICByZXR1cm4gdmFsdWVGb3JM
ZW5ndGgoaGVpZ2h0LCAwLCB2aWV3KCkpOworICAgICAgICByZXR1cm4gdmFsdWVGb3JMZW5ndGgo
aGVpZ2h0LCAwKTsKICAgICByZXR1cm4gLTE7CiB9CiAKQEAgLTI2NjIsNyArMjY1Niw3IEBAIExh
eW91dFVuaXQgUmVuZGVyQm94Ojpjb21wdXRlUmVwbGFjZWRMb2dpY2FsV2lkdGhVc2luZyhTaXpl
VHlwZSBzaXplVHlwZSwgTGVuZ3RoCiAgICAgICAgIGNhc2UgVmlld3BvcnRQZXJjZW50YWdlSGVp
Z2h0OgogICAgICAgICBjYXNlIFZpZXdwb3J0UGVyY2VudGFnZU1pbjoKICAgICAgICAgY2FzZSBW
aWV3cG9ydFBlcmNlbnRhZ2VNYXg6Ci0gICAgICAgICAgICByZXR1cm4gYWRqdXN0Q29udGVudEJv
eExvZ2ljYWxXaWR0aEZvckJveFNpemluZyh2YWx1ZUZvckxlbmd0aChsb2dpY2FsV2lkdGgsIDAs
IHZpZXcoKSkpOworICAgICAgICAgICAgcmV0dXJuIGFkanVzdENvbnRlbnRCb3hMb2dpY2FsV2lk
dGhGb3JCb3hTaXppbmcodmFsdWVGb3JMZW5ndGgobG9naWNhbFdpZHRoLCAwKSk7CiAgICAgICAg
IGNhc2UgRml0Q29udGVudDoKICAgICAgICAgY2FzZSBGaWxsQXZhaWxhYmxlOgogICAgICAgICBj
YXNlIFBlcmNlbnQ6IApAQCAtMjc2Myw3ICsyNzU3LDcgQEAgTGF5b3V0VW5pdCBSZW5kZXJCb3g6
OmNvbXB1dGVSZXBsYWNlZExvZ2ljYWxIZWlnaHRVc2luZyhTaXplVHlwZSBzaXplVHlwZSwgTGVu
Z3QKICAgICAgICAgY2FzZSBWaWV3cG9ydFBlcmNlbnRhZ2VIZWlnaHQ6CiAgICAgICAgIGNhc2Ug
Vmlld3BvcnRQZXJjZW50YWdlTWluOgogICAgICAgICBjYXNlIFZpZXdwb3J0UGVyY2VudGFnZU1h
eDoKLSAgICAgICAgICAgIHJldHVybiBhZGp1c3RDb250ZW50Qm94TG9naWNhbEhlaWdodEZvckJv
eFNpemluZyh2YWx1ZUZvckxlbmd0aChsb2dpY2FsSGVpZ2h0LCAwLCB2aWV3KCkpKTsKKyAgICAg
ICAgICAgIHJldHVybiBhZGp1c3RDb250ZW50Qm94TG9naWNhbEhlaWdodEZvckJveFNpemluZyh2
YWx1ZUZvckxlbmd0aChsb2dpY2FsSGVpZ2h0LCAwKSk7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAg
ICAgICAgICByZXR1cm4gaW50cmluc2ljTG9naWNhbEhlaWdodCgpOwogICAgIH0KQEAgLTI4MzAs
MTAgKzI4MjQsOSBAQCB2b2lkIFJlbmRlckJveDo6Y29tcHV0ZUJsb2NrRGlyZWN0aW9uTWFyZ2lu
cyhjb25zdCBSZW5kZXJCbG9jayogY29udGFpbmluZ0Jsb2NrLAogICAgIC8vIE1hcmdpbnMgYXJl
IGNhbGN1bGF0ZWQgd2l0aCByZXNwZWN0IHRvIHRoZSBsb2dpY2FsIHdpZHRoIG9mCiAgICAgLy8g
dGhlIGNvbnRhaW5pbmcgYmxvY2sgKDguMykKICAgICBMYXlvdXRVbml0IGN3ID0gY29udGFpbmlu
Z0Jsb2NrTG9naWNhbFdpZHRoRm9yQ29udGVudCgpOwotICAgIFJlbmRlclZpZXcqIHJlbmRlclZp
ZXcgPSB2aWV3KCk7CiAgICAgUmVuZGVyU3R5bGUqIGNvbnRhaW5pbmdCbG9ja1N0eWxlID0gY29u
dGFpbmluZ0Jsb2NrLT5zdHlsZSgpOwotICAgIG1hcmdpbkJlZm9yZSA9IG1pbmltdW1WYWx1ZUZv
ckxlbmd0aChzdHlsZSgpLT5tYXJnaW5CZWZvcmVVc2luZyhjb250YWluaW5nQmxvY2tTdHlsZSks
IGN3LCByZW5kZXJWaWV3KTsKLSAgICBtYXJnaW5BZnRlciA9IG1pbmltdW1WYWx1ZUZvckxlbmd0
aChzdHlsZSgpLT5tYXJnaW5BZnRlclVzaW5nKGNvbnRhaW5pbmdCbG9ja1N0eWxlKSwgY3csIHJl
bmRlclZpZXcpOworICAgIG1hcmdpbkJlZm9yZSA9IG1pbmltdW1WYWx1ZUZvckxlbmd0aChzdHls
ZSgpLT5tYXJnaW5CZWZvcmVVc2luZyhjb250YWluaW5nQmxvY2tTdHlsZSksIGN3KTsKKyAgICBt
YXJnaW5BZnRlciA9IG1pbmltdW1WYWx1ZUZvckxlbmd0aChzdHlsZSgpLT5tYXJnaW5BZnRlclVz
aW5nKGNvbnRhaW5pbmdCbG9ja1N0eWxlKSwgY3cpOwogfQogCiB2b2lkIFJlbmRlckJveDo6Y29t
cHV0ZUFuZFNldEJsb2NrRGlyZWN0aW9uTWFyZ2lucyhjb25zdCBSZW5kZXJCbG9jayogY29udGFp
bmluZ0Jsb2NrKQpAQCAtMzE1OSw3ICszMTUyLDYgQEAgdm9pZCBSZW5kZXJCb3g6OmNvbXB1dGVQ
b3NpdGlvbmVkTG9naWNhbFdpZHRoVXNpbmcoU2l6ZVR5cGUgd2lkdGhTaXplVHlwZSwgTGVuZ3QK
ICAgICBib29sIGxvZ2ljYWxXaWR0aElzQXV0byA9IGxvZ2ljYWxXaWR0aC5pc0ludHJpbnNpY09y
QXV0bygpOwogICAgIGJvb2wgbG9naWNhbExlZnRJc0F1dG8gPSBsb2dpY2FsTGVmdC5pc0F1dG8o
KTsKICAgICBib29sIGxvZ2ljYWxSaWdodElzQXV0byA9IGxvZ2ljYWxSaWdodC5pc0F1dG8oKTsK
LSAgICBSZW5kZXJWaWV3KiByZW5kZXJWaWV3ID0gdmlldygpOwogICAgIExheW91dFVuaXQmIG1h
cmdpbkxvZ2ljYWxMZWZ0VmFsdWUgPSBzdHlsZSgpLT5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkg
PyBjb21wdXRlZFZhbHVlcy5tX21hcmdpbnMubV9zdGFydCA6IGNvbXB1dGVkVmFsdWVzLm1fbWFy
Z2lucy5tX2VuZDsKICAgICBMYXlvdXRVbml0JiBtYXJnaW5Mb2dpY2FsUmlnaHRWYWx1ZSA9IHN0
eWxlKCktPmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSA/IGNvbXB1dGVkVmFsdWVzLm1fbWFyZ2lu
cy5tX2VuZCA6IGNvbXB1dGVkVmFsdWVzLm1fbWFyZ2lucy5tX3N0YXJ0OwogCkBAIC0zMTc5LDEw
ICszMTcxLDEwIEBAIHZvaWQgUmVuZGVyQm94Ojpjb21wdXRlUG9zaXRpb25lZExvZ2ljYWxXaWR0
aFVzaW5nKFNpemVUeXBlIHdpZHRoU2l6ZVR5cGUsIExlbmd0CiAgICAgICAgIC8vIE5PVEU6ICBJ
dCBpcyBub3QgbmVjZXNzYXJ5IHRvIHNvbHZlIGZvciAncmlnaHQnIGluIHRoZSBvdmVyIGNvbnN0
cmFpbmVkCiAgICAgICAgIC8vIGNhc2UgYmVjYXVzZSB0aGUgdmFsdWUgaXMgbm90IHVzZWQgZm9y
IGFueSBmdXJ0aGVyIGNhbGN1bGF0aW9ucy4KIAotICAgICAgICBsb2dpY2FsTGVmdFZhbHVlID0g
dmFsdWVGb3JMZW5ndGgobG9naWNhbExlZnQsIGNvbnRhaW5lckxvZ2ljYWxXaWR0aCwgcmVuZGVy
Vmlldyk7Ci0gICAgICAgIGNvbXB1dGVkVmFsdWVzLm1fZXh0ZW50ID0gYWRqdXN0Q29udGVudEJv
eExvZ2ljYWxXaWR0aEZvckJveFNpemluZyh2YWx1ZUZvckxlbmd0aChsb2dpY2FsV2lkdGgsIGNv
bnRhaW5lckxvZ2ljYWxXaWR0aCwgcmVuZGVyVmlldykpOworICAgICAgICBsb2dpY2FsTGVmdFZh
bHVlID0gdmFsdWVGb3JMZW5ndGgobG9naWNhbExlZnQsIGNvbnRhaW5lckxvZ2ljYWxXaWR0aCk7
CisgICAgICAgIGNvbXB1dGVkVmFsdWVzLm1fZXh0ZW50ID0gYWRqdXN0Q29udGVudEJveExvZ2lj
YWxXaWR0aEZvckJveFNpemluZyh2YWx1ZUZvckxlbmd0aChsb2dpY2FsV2lkdGgsIGNvbnRhaW5l
ckxvZ2ljYWxXaWR0aCkpOwogCi0gICAgICAgIGNvbnN0IExheW91dFVuaXQgYXZhaWxhYmxlU3Bh
Y2UgPSBjb250YWluZXJMb2dpY2FsV2lkdGggLSAobG9naWNhbExlZnRWYWx1ZSArIGNvbXB1dGVk
VmFsdWVzLm1fZXh0ZW50ICsgdmFsdWVGb3JMZW5ndGgobG9naWNhbFJpZ2h0LCBjb250YWluZXJM
b2dpY2FsV2lkdGgsIHJlbmRlclZpZXcpICsgYm9yZGVyc1BsdXNQYWRkaW5nKTsKKyAgICAgICAg
Y29uc3QgTGF5b3V0VW5pdCBhdmFpbGFibGVTcGFjZSA9IGNvbnRhaW5lckxvZ2ljYWxXaWR0aCAt
IChsb2dpY2FsTGVmdFZhbHVlICsgY29tcHV0ZWRWYWx1ZXMubV9leHRlbnQgKyB2YWx1ZUZvckxl
bmd0aChsb2dpY2FsUmlnaHQsIGNvbnRhaW5lckxvZ2ljYWxXaWR0aCkgKyBib3JkZXJzUGx1c1Bh
ZGRpbmcpOwogCiAgICAgICAgIC8vIE1hcmdpbnMgYXJlIG5vdyB0aGUgb25seSB1bmtub3duCiAg
ICAgICAgIGlmIChtYXJnaW5Mb2dpY2FsTGVmdC5pc0F1dG8oKSAmJiBtYXJnaW5Mb2dpY2FsUmln
aHQuaXNBdXRvKCkpIHsKQEAgLTMyMDMsMTYgKzMxOTUsMTYgQEAgdm9pZCBSZW5kZXJCb3g6OmNv
bXB1dGVQb3NpdGlvbmVkTG9naWNhbFdpZHRoVXNpbmcoU2l6ZVR5cGUgd2lkdGhTaXplVHlwZSwg
TGVuZ3QKICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIGlmIChtYXJnaW5Mb2dpY2FsTGVm
dC5pc0F1dG8oKSkgewogICAgICAgICAgICAgLy8gU29sdmUgZm9yIGxlZnQgbWFyZ2luCi0gICAg
ICAgICAgICBtYXJnaW5Mb2dpY2FsUmlnaHRWYWx1ZSA9IHZhbHVlRm9yTGVuZ3RoKG1hcmdpbkxv
Z2ljYWxSaWdodCwgY29udGFpbmVyUmVsYXRpdmVMb2dpY2FsV2lkdGgsIHJlbmRlclZpZXcpOwor
ICAgICAgICAgICAgbWFyZ2luTG9naWNhbFJpZ2h0VmFsdWUgPSB2YWx1ZUZvckxlbmd0aChtYXJn
aW5Mb2dpY2FsUmlnaHQsIGNvbnRhaW5lclJlbGF0aXZlTG9naWNhbFdpZHRoKTsKICAgICAgICAg
ICAgIG1hcmdpbkxvZ2ljYWxMZWZ0VmFsdWUgPSBhdmFpbGFibGVTcGFjZSAtIG1hcmdpbkxvZ2lj
YWxSaWdodFZhbHVlOwogICAgICAgICB9IGVsc2UgaWYgKG1hcmdpbkxvZ2ljYWxSaWdodC5pc0F1
dG8oKSkgewogICAgICAgICAgICAgLy8gU29sdmUgZm9yIHJpZ2h0IG1hcmdpbgotICAgICAgICAg
ICAgbWFyZ2luTG9naWNhbExlZnRWYWx1ZSA9IHZhbHVlRm9yTGVuZ3RoKG1hcmdpbkxvZ2ljYWxM
ZWZ0LCBjb250YWluZXJSZWxhdGl2ZUxvZ2ljYWxXaWR0aCwgcmVuZGVyVmlldyk7CisgICAgICAg
ICAgICBtYXJnaW5Mb2dpY2FsTGVmdFZhbHVlID0gdmFsdWVGb3JMZW5ndGgobWFyZ2luTG9naWNh
bExlZnQsIGNvbnRhaW5lclJlbGF0aXZlTG9naWNhbFdpZHRoKTsKICAgICAgICAgICAgIG1hcmdp
bkxvZ2ljYWxSaWdodFZhbHVlID0gYXZhaWxhYmxlU3BhY2UgLSBtYXJnaW5Mb2dpY2FsTGVmdFZh
bHVlOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgLy8gT3Zlci1jb25zdHJhaW5lZCwg
c29sdmUgZm9yIGxlZnQgaWYgZGlyZWN0aW9uIGlzIFJUTAotICAgICAgICAgICAgbWFyZ2luTG9n
aWNhbExlZnRWYWx1ZSA9IHZhbHVlRm9yTGVuZ3RoKG1hcmdpbkxvZ2ljYWxMZWZ0LCBjb250YWlu
ZXJSZWxhdGl2ZUxvZ2ljYWxXaWR0aCwgcmVuZGVyVmlldyk7Ci0gICAgICAgICAgICBtYXJnaW5M
b2dpY2FsUmlnaHRWYWx1ZSA9IHZhbHVlRm9yTGVuZ3RoKG1hcmdpbkxvZ2ljYWxSaWdodCwgY29u
dGFpbmVyUmVsYXRpdmVMb2dpY2FsV2lkdGgsIHJlbmRlclZpZXcpOworICAgICAgICAgICAgbWFy
Z2luTG9naWNhbExlZnRWYWx1ZSA9IHZhbHVlRm9yTGVuZ3RoKG1hcmdpbkxvZ2ljYWxMZWZ0LCBj
b250YWluZXJSZWxhdGl2ZUxvZ2ljYWxXaWR0aCk7CisgICAgICAgICAgICBtYXJnaW5Mb2dpY2Fs
UmlnaHRWYWx1ZSA9IHZhbHVlRm9yTGVuZ3RoKG1hcmdpbkxvZ2ljYWxSaWdodCwgY29udGFpbmVy
UmVsYXRpdmVMb2dpY2FsV2lkdGgpOwogCiAgICAgICAgICAgICAvLyBVc2UgdGhlIGNvbnRhaW5p
bmcgYmxvY2sncyBkaXJlY3Rpb24gcmF0aGVyIHRoYW4gdGhlIHBhcmVudCBibG9jaydzCiAgICAg
ICAgICAgICAvLyBwZXIgQ1NTIDIuMSByZWZlcmVuY2UgdGVzdCBhYnNwb3Mtbm9uLXJlcGxhY2Vk
LXdpZHRoLW1hcmdpbi0wMDAuCkBAIC0zMjYyLDggKzMyNTQsOCBAQCB2b2lkIFJlbmRlckJveDo6
Y29tcHV0ZVBvc2l0aW9uZWRMb2dpY2FsV2lkdGhVc2luZyhTaXplVHlwZSB3aWR0aFNpemVUeXBl
LCBMZW5ndAogICAgICAgICAvLyBiZWNhdXNlIHRoZSB2YWx1ZSBpcyBub3QgdXNlZCBmb3IgYW55
IGZ1cnRoZXIgY2FsY3VsYXRpb25zLgogCiAgICAgICAgIC8vIENhbGN1bGF0ZSBtYXJnaW5zLCAn
YXV0bycgbWFyZ2lucyBhcmUgaWdub3JlZC4KLSAgICAgICAgbWFyZ2luTG9naWNhbExlZnRWYWx1
ZSA9IG1pbmltdW1WYWx1ZUZvckxlbmd0aChtYXJnaW5Mb2dpY2FsTGVmdCwgY29udGFpbmVyUmVs
YXRpdmVMb2dpY2FsV2lkdGgsIHJlbmRlclZpZXcpOwotICAgICAgICBtYXJnaW5Mb2dpY2FsUmln
aHRWYWx1ZSA9IG1pbmltdW1WYWx1ZUZvckxlbmd0aChtYXJnaW5Mb2dpY2FsUmlnaHQsIGNvbnRh
aW5lclJlbGF0aXZlTG9naWNhbFdpZHRoLCByZW5kZXJWaWV3KTsKKyAgICAgICAgbWFyZ2luTG9n
aWNhbExlZnRWYWx1ZSA9IG1pbmltdW1WYWx1ZUZvckxlbmd0aChtYXJnaW5Mb2dpY2FsTGVmdCwg
Y29udGFpbmVyUmVsYXRpdmVMb2dpY2FsV2lkdGgpOworICAgICAgICBtYXJnaW5Mb2dpY2FsUmln
aHRWYWx1ZSA9IG1pbmltdW1WYWx1ZUZvckxlbmd0aChtYXJnaW5Mb2dpY2FsUmlnaHQsIGNvbnRh
aW5lclJlbGF0aXZlTG9naWNhbFdpZHRoKTsKIAogICAgICAgICBjb25zdCBMYXlvdXRVbml0IGF2
YWlsYWJsZVNwYWNlID0gY29udGFpbmVyTG9naWNhbFdpZHRoIC0gKG1hcmdpbkxvZ2ljYWxMZWZ0
VmFsdWUgKyBtYXJnaW5Mb2dpY2FsUmlnaHRWYWx1ZSArIGJvcmRlcnNQbHVzUGFkZGluZyk7CiAK
QEAgLTMyNzEsNyArMzI2Myw3IEBAIHZvaWQgUmVuZGVyQm94Ojpjb21wdXRlUG9zaXRpb25lZExv
Z2ljYWxXaWR0aFVzaW5nKFNpemVUeXBlIHdpZHRoU2l6ZVR5cGUsIExlbmd0CiAgICAgICAgIC8v
IFVzZSBydWxlL2Nhc2UgdGhhdCBhcHBsaWVzLgogICAgICAgICBpZiAobG9naWNhbExlZnRJc0F1
dG8gJiYgbG9naWNhbFdpZHRoSXNBdXRvICYmICFsb2dpY2FsUmlnaHRJc0F1dG8pIHsKICAgICAg
ICAgICAgIC8vIFJVTEUgMTogKHVzZSBzaHJpbmstdG8tZml0IGZvciB3aWR0aCwgYW5kIHNvbHZl
IG9mIGxlZnQpCi0gICAgICAgICAgICBMYXlvdXRVbml0IGxvZ2ljYWxSaWdodFZhbHVlID0gdmFs
dWVGb3JMZW5ndGgobG9naWNhbFJpZ2h0LCBjb250YWluZXJMb2dpY2FsV2lkdGgsIHJlbmRlclZp
ZXcpOworICAgICAgICAgICAgTGF5b3V0VW5pdCBsb2dpY2FsUmlnaHRWYWx1ZSA9IHZhbHVlRm9y
TGVuZ3RoKGxvZ2ljYWxSaWdodCwgY29udGFpbmVyTG9naWNhbFdpZHRoKTsKIAogICAgICAgICAg
ICAgLy8gRklYTUU6IHdvdWxkIGl0IGJlIGJldHRlciB0byBoYXZlIHNocmluay10by1maXQgaW4g
b25lIHN0ZXA/CiAgICAgICAgICAgICBMYXlvdXRVbml0IHByZWZlcnJlZFdpZHRoID0gbWF4UHJl
ZmVycmVkTG9naWNhbFdpZHRoKCkgLSBib3JkZXJzUGx1c1BhZGRpbmc7CkBAIC0zMjgxLDcgKzMy
NzMsNyBAQCB2b2lkIFJlbmRlckJveDo6Y29tcHV0ZVBvc2l0aW9uZWRMb2dpY2FsV2lkdGhVc2lu
ZyhTaXplVHlwZSB3aWR0aFNpemVUeXBlLCBMZW5ndAogICAgICAgICAgICAgbG9naWNhbExlZnRW
YWx1ZSA9IGF2YWlsYWJsZVNwYWNlIC0gKGNvbXB1dGVkVmFsdWVzLm1fZXh0ZW50ICsgbG9naWNh
bFJpZ2h0VmFsdWUpOwogICAgICAgICB9IGVsc2UgaWYgKCFsb2dpY2FsTGVmdElzQXV0byAmJiBs
b2dpY2FsV2lkdGhJc0F1dG8gJiYgbG9naWNhbFJpZ2h0SXNBdXRvKSB7CiAgICAgICAgICAgICAv
LyBSVUxFIDM6ICh1c2Ugc2hyaW5rLXRvLWZpdCBmb3Igd2lkdGgsIGFuZCBubyBuZWVkIHNvbHZl
IG9mIHJpZ2h0KQotICAgICAgICAgICAgbG9naWNhbExlZnRWYWx1ZSA9IHZhbHVlRm9yTGVuZ3Ro
KGxvZ2ljYWxMZWZ0LCBjb250YWluZXJMb2dpY2FsV2lkdGgsIHJlbmRlclZpZXcpOworICAgICAg
ICAgICAgbG9naWNhbExlZnRWYWx1ZSA9IHZhbHVlRm9yTGVuZ3RoKGxvZ2ljYWxMZWZ0LCBjb250
YWluZXJMb2dpY2FsV2lkdGgpOwogCiAgICAgICAgICAgICAvLyBGSVhNRTogd291bGQgaXQgYmUg
YmV0dGVyIHRvIGhhdmUgc2hyaW5rLXRvLWZpdCBpbiBvbmUgc3RlcD8KICAgICAgICAgICAgIExh
eW91dFVuaXQgcHJlZmVycmVkV2lkdGggPSBtYXhQcmVmZXJyZWRMb2dpY2FsV2lkdGgoKSAtIGJv
cmRlcnNQbHVzUGFkZGluZzsKQEAgLTMyOTAsMTYgKzMyODIsMTYgQEAgdm9pZCBSZW5kZXJCb3g6
OmNvbXB1dGVQb3NpdGlvbmVkTG9naWNhbFdpZHRoVXNpbmcoU2l6ZVR5cGUgd2lkdGhTaXplVHlw
ZSwgTGVuZ3QKICAgICAgICAgICAgIGNvbXB1dGVkVmFsdWVzLm1fZXh0ZW50ID0gbWluKG1heChw
cmVmZXJyZWRNaW5XaWR0aCwgYXZhaWxhYmxlV2lkdGgpLCBwcmVmZXJyZWRXaWR0aCk7CiAgICAg
ICAgIH0gZWxzZSBpZiAobG9naWNhbExlZnRJc0F1dG8gJiYgIWxvZ2ljYWxXaWR0aElzQXV0byAm
JiAhbG9naWNhbFJpZ2h0SXNBdXRvKSB7CiAgICAgICAgICAgICAvLyBSVUxFIDQ6IChzb2x2ZSBm
b3IgbGVmdCkKLSAgICAgICAgICAgIGNvbXB1dGVkVmFsdWVzLm1fZXh0ZW50ID0gYWRqdXN0Q29u
dGVudEJveExvZ2ljYWxXaWR0aEZvckJveFNpemluZyh2YWx1ZUZvckxlbmd0aChsb2dpY2FsV2lk
dGgsIGNvbnRhaW5lckxvZ2ljYWxXaWR0aCwgcmVuZGVyVmlldykpOwotICAgICAgICAgICAgbG9n
aWNhbExlZnRWYWx1ZSA9IGF2YWlsYWJsZVNwYWNlIC0gKGNvbXB1dGVkVmFsdWVzLm1fZXh0ZW50
ICsgdmFsdWVGb3JMZW5ndGgobG9naWNhbFJpZ2h0LCBjb250YWluZXJMb2dpY2FsV2lkdGgsIHJl
bmRlclZpZXcpKTsKKyAgICAgICAgICAgIGNvbXB1dGVkVmFsdWVzLm1fZXh0ZW50ID0gYWRqdXN0
Q29udGVudEJveExvZ2ljYWxXaWR0aEZvckJveFNpemluZyh2YWx1ZUZvckxlbmd0aChsb2dpY2Fs
V2lkdGgsIGNvbnRhaW5lckxvZ2ljYWxXaWR0aCkpOworICAgICAgICAgICAgbG9naWNhbExlZnRW
YWx1ZSA9IGF2YWlsYWJsZVNwYWNlIC0gKGNvbXB1dGVkVmFsdWVzLm1fZXh0ZW50ICsgdmFsdWVG
b3JMZW5ndGgobG9naWNhbFJpZ2h0LCBjb250YWluZXJMb2dpY2FsV2lkdGgpKTsKICAgICAgICAg
fSBlbHNlIGlmICghbG9naWNhbExlZnRJc0F1dG8gJiYgbG9naWNhbFdpZHRoSXNBdXRvICYmICFs
b2dpY2FsUmlnaHRJc0F1dG8pIHsKICAgICAgICAgICAgIC8vIFJVTEUgNTogKHNvbHZlIGZvciB3
aWR0aCkKLSAgICAgICAgICAgIGxvZ2ljYWxMZWZ0VmFsdWUgPSB2YWx1ZUZvckxlbmd0aChsb2dp
Y2FsTGVmdCwgY29udGFpbmVyTG9naWNhbFdpZHRoLCByZW5kZXJWaWV3KTsKLSAgICAgICAgICAg
IGNvbXB1dGVkVmFsdWVzLm1fZXh0ZW50ID0gYXZhaWxhYmxlU3BhY2UgLSAobG9naWNhbExlZnRW
YWx1ZSArIHZhbHVlRm9yTGVuZ3RoKGxvZ2ljYWxSaWdodCwgY29udGFpbmVyTG9naWNhbFdpZHRo
LCByZW5kZXJWaWV3KSk7CisgICAgICAgICAgICBsb2dpY2FsTGVmdFZhbHVlID0gdmFsdWVGb3JM
ZW5ndGgobG9naWNhbExlZnQsIGNvbnRhaW5lckxvZ2ljYWxXaWR0aCk7CisgICAgICAgICAgICBj
b21wdXRlZFZhbHVlcy5tX2V4dGVudCA9IGF2YWlsYWJsZVNwYWNlIC0gKGxvZ2ljYWxMZWZ0VmFs
dWUgKyB2YWx1ZUZvckxlbmd0aChsb2dpY2FsUmlnaHQsIGNvbnRhaW5lckxvZ2ljYWxXaWR0aCkp
OwogICAgICAgICB9IGVsc2UgaWYgKCFsb2dpY2FsTGVmdElzQXV0byAmJiAhbG9naWNhbFdpZHRo
SXNBdXRvICYmIGxvZ2ljYWxSaWdodElzQXV0bykgewogICAgICAgICAgICAgLy8gUlVMRSA2OiAo
bm8gbmVlZCBzb2x2ZSBmb3IgcmlnaHQpCi0gICAgICAgICAgICBsb2dpY2FsTGVmdFZhbHVlID0g
dmFsdWVGb3JMZW5ndGgobG9naWNhbExlZnQsIGNvbnRhaW5lckxvZ2ljYWxXaWR0aCwgcmVuZGVy
Vmlldyk7Ci0gICAgICAgICAgICBjb21wdXRlZFZhbHVlcy5tX2V4dGVudCA9IGFkanVzdENvbnRl
bnRCb3hMb2dpY2FsV2lkdGhGb3JCb3hTaXppbmcodmFsdWVGb3JMZW5ndGgobG9naWNhbFdpZHRo
LCBjb250YWluZXJMb2dpY2FsV2lkdGgsIHJlbmRlclZpZXcpKTsKKyAgICAgICAgICAgIGxvZ2lj
YWxMZWZ0VmFsdWUgPSB2YWx1ZUZvckxlbmd0aChsb2dpY2FsTGVmdCwgY29udGFpbmVyTG9naWNh
bFdpZHRoKTsKKyAgICAgICAgICAgIGNvbXB1dGVkVmFsdWVzLm1fZXh0ZW50ID0gYWRqdXN0Q29u
dGVudEJveExvZ2ljYWxXaWR0aEZvckJveFNpemluZyh2YWx1ZUZvckxlbmd0aChsb2dpY2FsV2lk
dGgsIGNvbnRhaW5lckxvZ2ljYWxXaWR0aCkpOwogICAgICAgICB9CiAgICAgfQogCkBAIC0zNDky
LDcgKzM0ODQsNiBAQCB2b2lkIFJlbmRlckJveDo6Y29tcHV0ZVBvc2l0aW9uZWRMb2dpY2FsSGVp
Z2h0VXNpbmcoU2l6ZVR5cGUgaGVpZ2h0U2l6ZVR5cGUsIExlbgogICAgIGJvb2wgbG9naWNhbEhl
aWdodElzQXV0byA9IGxvZ2ljYWxIZWlnaHRMZW5ndGguaXNBdXRvKCk7CiAgICAgYm9vbCBsb2dp
Y2FsVG9wSXNBdXRvID0gbG9naWNhbFRvcC5pc0F1dG8oKTsKICAgICBib29sIGxvZ2ljYWxCb3R0
b21Jc0F1dG8gPSBsb2dpY2FsQm90dG9tLmlzQXV0bygpOwotICAgIFJlbmRlclZpZXcqIHJlbmRl
clZpZXcgPSB2aWV3KCk7CiAKICAgICAvLyBIZWlnaHQgaXMgbmV2ZXIgdW5zb2x2ZWQgZm9yIHRh
Ymxlcy4KICAgICBpZiAoaXNUYWJsZSgpKSB7CkBAIC0zNTEyLDEwICszNTAzLDEwIEBAIHZvaWQg
UmVuZGVyQm94Ojpjb21wdXRlUG9zaXRpb25lZExvZ2ljYWxIZWlnaHRVc2luZyhTaXplVHlwZSBo
ZWlnaHRTaXplVHlwZSwgTGVuCiAgICAgICAgIC8vIE5PVEU6ICBJdCBpcyBub3QgbmVjZXNzYXJ5
IHRvIHNvbHZlIGZvciAnYm90dG9tJyBpbiB0aGUgb3ZlciBjb25zdHJhaW5lZAogICAgICAgICAv
LyBjYXNlIGJlY2F1c2UgdGhlIHZhbHVlIGlzIG5vdCB1c2VkIGZvciBhbnkgZnVydGhlciBjYWxj
dWxhdGlvbnMuCiAKLSAgICAgICAgbG9naWNhbEhlaWdodFZhbHVlID0gYWRqdXN0Q29udGVudEJv
eExvZ2ljYWxIZWlnaHRGb3JCb3hTaXppbmcodmFsdWVGb3JMZW5ndGgobG9naWNhbEhlaWdodExl
bmd0aCwgY29udGFpbmVyTG9naWNhbEhlaWdodCwgcmVuZGVyVmlldykpOwotICAgICAgICBsb2dp
Y2FsVG9wVmFsdWUgPSB2YWx1ZUZvckxlbmd0aChsb2dpY2FsVG9wLCBjb250YWluZXJMb2dpY2Fs
SGVpZ2h0LCByZW5kZXJWaWV3KTsKKyAgICAgICAgbG9naWNhbEhlaWdodFZhbHVlID0gYWRqdXN0
Q29udGVudEJveExvZ2ljYWxIZWlnaHRGb3JCb3hTaXppbmcodmFsdWVGb3JMZW5ndGgobG9naWNh
bEhlaWdodExlbmd0aCwgY29udGFpbmVyTG9naWNhbEhlaWdodCkpOworICAgICAgICBsb2dpY2Fs
VG9wVmFsdWUgPSB2YWx1ZUZvckxlbmd0aChsb2dpY2FsVG9wLCBjb250YWluZXJMb2dpY2FsSGVp
Z2h0KTsKIAotICAgICAgICBjb25zdCBMYXlvdXRVbml0IGF2YWlsYWJsZVNwYWNlID0gY29udGFp
bmVyTG9naWNhbEhlaWdodCAtIChsb2dpY2FsVG9wVmFsdWUgKyBsb2dpY2FsSGVpZ2h0VmFsdWUg
KyB2YWx1ZUZvckxlbmd0aChsb2dpY2FsQm90dG9tLCBjb250YWluZXJMb2dpY2FsSGVpZ2h0LCBy
ZW5kZXJWaWV3KSArIGJvcmRlcnNQbHVzUGFkZGluZyk7CisgICAgICAgIGNvbnN0IExheW91dFVu
aXQgYXZhaWxhYmxlU3BhY2UgPSBjb250YWluZXJMb2dpY2FsSGVpZ2h0IC0gKGxvZ2ljYWxUb3BW
YWx1ZSArIGxvZ2ljYWxIZWlnaHRWYWx1ZSArIHZhbHVlRm9yTGVuZ3RoKGxvZ2ljYWxCb3R0b20s
IGNvbnRhaW5lckxvZ2ljYWxIZWlnaHQpICsgYm9yZGVyc1BsdXNQYWRkaW5nKTsKIAogICAgICAg
ICAvLyBNYXJnaW5zIGFyZSBub3cgdGhlIG9ubHkgdW5rbm93bgogICAgICAgICBpZiAobWFyZ2lu
QmVmb3JlLmlzQXV0bygpICYmIG1hcmdpbkFmdGVyLmlzQXV0bygpKSB7CkBAIC0zNTI1LDE2ICsz
NTE2LDE2IEBAIHZvaWQgUmVuZGVyQm94Ojpjb21wdXRlUG9zaXRpb25lZExvZ2ljYWxIZWlnaHRV
c2luZyhTaXplVHlwZSBoZWlnaHRTaXplVHlwZSwgTGVuCiAgICAgICAgICAgICBjb21wdXRlZFZh
bHVlcy5tX21hcmdpbnMubV9hZnRlciA9IGF2YWlsYWJsZVNwYWNlIC0gY29tcHV0ZWRWYWx1ZXMu
bV9tYXJnaW5zLm1fYmVmb3JlOyAvLyBhY2NvdW50IGZvciBvZGQgdmFsdWVkIGRpZmZlcmVuY2Vz
CiAgICAgICAgIH0gZWxzZSBpZiAobWFyZ2luQmVmb3JlLmlzQXV0bygpKSB7CiAgICAgICAgICAg
ICAvLyBTb2x2ZSBmb3IgdG9wIG1hcmdpbgotICAgICAgICAgICAgY29tcHV0ZWRWYWx1ZXMubV9t
YXJnaW5zLm1fYWZ0ZXIgPSB2YWx1ZUZvckxlbmd0aChtYXJnaW5BZnRlciwgY29udGFpbmVyUmVs
YXRpdmVMb2dpY2FsV2lkdGgsIHJlbmRlclZpZXcpOworICAgICAgICAgICAgY29tcHV0ZWRWYWx1
ZXMubV9tYXJnaW5zLm1fYWZ0ZXIgPSB2YWx1ZUZvckxlbmd0aChtYXJnaW5BZnRlciwgY29udGFp
bmVyUmVsYXRpdmVMb2dpY2FsV2lkdGgpOwogICAgICAgICAgICAgY29tcHV0ZWRWYWx1ZXMubV9t
YXJnaW5zLm1fYmVmb3JlID0gYXZhaWxhYmxlU3BhY2UgLSBjb21wdXRlZFZhbHVlcy5tX21hcmdp
bnMubV9hZnRlcjsKICAgICAgICAgfSBlbHNlIGlmIChtYXJnaW5BZnRlci5pc0F1dG8oKSkgewog
ICAgICAgICAgICAgLy8gU29sdmUgZm9yIGJvdHRvbSBtYXJnaW4KLSAgICAgICAgICAgIGNvbXB1
dGVkVmFsdWVzLm1fbWFyZ2lucy5tX2JlZm9yZSA9IHZhbHVlRm9yTGVuZ3RoKG1hcmdpbkJlZm9y
ZSwgY29udGFpbmVyUmVsYXRpdmVMb2dpY2FsV2lkdGgsIHJlbmRlclZpZXcpOworICAgICAgICAg
ICAgY29tcHV0ZWRWYWx1ZXMubV9tYXJnaW5zLm1fYmVmb3JlID0gdmFsdWVGb3JMZW5ndGgobWFy
Z2luQmVmb3JlLCBjb250YWluZXJSZWxhdGl2ZUxvZ2ljYWxXaWR0aCk7CiAgICAgICAgICAgICBj
b21wdXRlZFZhbHVlcy5tX21hcmdpbnMubV9hZnRlciA9IGF2YWlsYWJsZVNwYWNlIC0gY29tcHV0
ZWRWYWx1ZXMubV9tYXJnaW5zLm1fYmVmb3JlOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAg
ICAgLy8gT3Zlci1jb25zdHJhaW5lZCwgKG5vIG5lZWQgc29sdmUgZm9yIGJvdHRvbSkKLSAgICAg
ICAgICAgIGNvbXB1dGVkVmFsdWVzLm1fbWFyZ2lucy5tX2JlZm9yZSA9IHZhbHVlRm9yTGVuZ3Ro
KG1hcmdpbkJlZm9yZSwgY29udGFpbmVyUmVsYXRpdmVMb2dpY2FsV2lkdGgsIHJlbmRlclZpZXcp
OwotICAgICAgICAgICAgY29tcHV0ZWRWYWx1ZXMubV9tYXJnaW5zLm1fYWZ0ZXIgPSB2YWx1ZUZv
ckxlbmd0aChtYXJnaW5BZnRlciwgY29udGFpbmVyUmVsYXRpdmVMb2dpY2FsV2lkdGgsIHJlbmRl
clZpZXcpOworICAgICAgICAgICAgY29tcHV0ZWRWYWx1ZXMubV9tYXJnaW5zLm1fYmVmb3JlID0g
dmFsdWVGb3JMZW5ndGgobWFyZ2luQmVmb3JlLCBjb250YWluZXJSZWxhdGl2ZUxvZ2ljYWxXaWR0
aCk7CisgICAgICAgICAgICBjb21wdXRlZFZhbHVlcy5tX21hcmdpbnMubV9hZnRlciA9IHZhbHVl
Rm9yTGVuZ3RoKG1hcmdpbkFmdGVyLCBjb250YWluZXJSZWxhdGl2ZUxvZ2ljYWxXaWR0aCk7CiAg
ICAgICAgIH0KICAgICB9IGVsc2UgewogICAgICAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKlwKQEAgLTM1NjMs
OCArMzU1NCw4IEBAIHZvaWQgUmVuZGVyQm94Ojpjb21wdXRlUG9zaXRpb25lZExvZ2ljYWxIZWln
aHRVc2luZyhTaXplVHlwZSBoZWlnaHRTaXplVHlwZSwgTGVuCiAgICAgICAgIC8vIGJlY2F1c2Ug
dGhlIHZhbHVlIGlzIG5vdCB1c2VkIGZvciBhbnkgZnVydGhlciBjYWxjdWxhdGlvbnMuCiAKICAg
ICAgICAgLy8gQ2FsY3VsYXRlIG1hcmdpbnMsICdhdXRvJyBtYXJnaW5zIGFyZSBpZ25vcmVkLgot
ICAgICAgICBjb21wdXRlZFZhbHVlcy5tX21hcmdpbnMubV9iZWZvcmUgPSBtaW5pbXVtVmFsdWVG
b3JMZW5ndGgobWFyZ2luQmVmb3JlLCBjb250YWluZXJSZWxhdGl2ZUxvZ2ljYWxXaWR0aCwgcmVu
ZGVyVmlldyk7Ci0gICAgICAgIGNvbXB1dGVkVmFsdWVzLm1fbWFyZ2lucy5tX2FmdGVyID0gbWlu
aW11bVZhbHVlRm9yTGVuZ3RoKG1hcmdpbkFmdGVyLCBjb250YWluZXJSZWxhdGl2ZUxvZ2ljYWxX
aWR0aCwgcmVuZGVyVmlldyk7CisgICAgICAgIGNvbXB1dGVkVmFsdWVzLm1fbWFyZ2lucy5tX2Jl
Zm9yZSA9IG1pbmltdW1WYWx1ZUZvckxlbmd0aChtYXJnaW5CZWZvcmUsIGNvbnRhaW5lclJlbGF0
aXZlTG9naWNhbFdpZHRoKTsKKyAgICAgICAgY29tcHV0ZWRWYWx1ZXMubV9tYXJnaW5zLm1fYWZ0
ZXIgPSBtaW5pbXVtVmFsdWVGb3JMZW5ndGgobWFyZ2luQWZ0ZXIsIGNvbnRhaW5lclJlbGF0aXZl
TG9naWNhbFdpZHRoKTsKIAogICAgICAgICBjb25zdCBMYXlvdXRVbml0IGF2YWlsYWJsZVNwYWNl
ID0gY29udGFpbmVyTG9naWNhbEhlaWdodCAtIChjb21wdXRlZFZhbHVlcy5tX21hcmdpbnMubV9i
ZWZvcmUgKyBjb21wdXRlZFZhbHVlcy5tX21hcmdpbnMubV9hZnRlciArIGJvcmRlcnNQbHVzUGFk
ZGluZyk7CiAKQEAgLTM1NzIsMjMgKzM1NjMsMjMgQEAgdm9pZCBSZW5kZXJCb3g6OmNvbXB1dGVQ
b3NpdGlvbmVkTG9naWNhbEhlaWdodFVzaW5nKFNpemVUeXBlIGhlaWdodFNpemVUeXBlLCBMZW4K
ICAgICAgICAgaWYgKGxvZ2ljYWxUb3BJc0F1dG8gJiYgbG9naWNhbEhlaWdodElzQXV0byAmJiAh
bG9naWNhbEJvdHRvbUlzQXV0bykgewogICAgICAgICAgICAgLy8gUlVMRSAxOiAoaGVpZ2h0IGlz
IGNvbnRlbnQgYmFzZWQsIHNvbHZlIG9mIHRvcCkKICAgICAgICAgICAgIGxvZ2ljYWxIZWlnaHRW
YWx1ZSA9IGNvbnRlbnRMb2dpY2FsSGVpZ2h0OwotICAgICAgICAgICAgbG9naWNhbFRvcFZhbHVl
ID0gYXZhaWxhYmxlU3BhY2UgLSAobG9naWNhbEhlaWdodFZhbHVlICsgdmFsdWVGb3JMZW5ndGgo
bG9naWNhbEJvdHRvbSwgY29udGFpbmVyTG9naWNhbEhlaWdodCwgcmVuZGVyVmlldykpOworICAg
ICAgICAgICAgbG9naWNhbFRvcFZhbHVlID0gYXZhaWxhYmxlU3BhY2UgLSAobG9naWNhbEhlaWdo
dFZhbHVlICsgdmFsdWVGb3JMZW5ndGgobG9naWNhbEJvdHRvbSwgY29udGFpbmVyTG9naWNhbEhl
aWdodCkpOwogICAgICAgICB9IGVsc2UgaWYgKCFsb2dpY2FsVG9wSXNBdXRvICYmIGxvZ2ljYWxI
ZWlnaHRJc0F1dG8gJiYgbG9naWNhbEJvdHRvbUlzQXV0bykgewogICAgICAgICAgICAgLy8gUlVM
RSAzOiAoaGVpZ2h0IGlzIGNvbnRlbnQgYmFzZWQsIG5vIG5lZWQgc29sdmUgb2YgYm90dG9tKQot
ICAgICAgICAgICAgbG9naWNhbFRvcFZhbHVlID0gdmFsdWVGb3JMZW5ndGgobG9naWNhbFRvcCwg
Y29udGFpbmVyTG9naWNhbEhlaWdodCwgcmVuZGVyVmlldyk7CisgICAgICAgICAgICBsb2dpY2Fs
VG9wVmFsdWUgPSB2YWx1ZUZvckxlbmd0aChsb2dpY2FsVG9wLCBjb250YWluZXJMb2dpY2FsSGVp
Z2h0KTsKICAgICAgICAgICAgIGxvZ2ljYWxIZWlnaHRWYWx1ZSA9IGNvbnRlbnRMb2dpY2FsSGVp
Z2h0OwogICAgICAgICB9IGVsc2UgaWYgKGxvZ2ljYWxUb3BJc0F1dG8gJiYgIWxvZ2ljYWxIZWln
aHRJc0F1dG8gJiYgIWxvZ2ljYWxCb3R0b21Jc0F1dG8pIHsKICAgICAgICAgICAgIC8vIFJVTEUg
NDogKHNvbHZlIG9mIHRvcCkKLSAgICAgICAgICAgIGxvZ2ljYWxIZWlnaHRWYWx1ZSA9IGFkanVz
dENvbnRlbnRCb3hMb2dpY2FsSGVpZ2h0Rm9yQm94U2l6aW5nKHZhbHVlRm9yTGVuZ3RoKGxvZ2lj
YWxIZWlnaHRMZW5ndGgsIGNvbnRhaW5lckxvZ2ljYWxIZWlnaHQsIHJlbmRlclZpZXcpKTsKLSAg
ICAgICAgICAgIGxvZ2ljYWxUb3BWYWx1ZSA9IGF2YWlsYWJsZVNwYWNlIC0gKGxvZ2ljYWxIZWln
aHRWYWx1ZSArIHZhbHVlRm9yTGVuZ3RoKGxvZ2ljYWxCb3R0b20sIGNvbnRhaW5lckxvZ2ljYWxI
ZWlnaHQsIHJlbmRlclZpZXcpKTsKKyAgICAgICAgICAgIGxvZ2ljYWxIZWlnaHRWYWx1ZSA9IGFk
anVzdENvbnRlbnRCb3hMb2dpY2FsSGVpZ2h0Rm9yQm94U2l6aW5nKHZhbHVlRm9yTGVuZ3RoKGxv
Z2ljYWxIZWlnaHRMZW5ndGgsIGNvbnRhaW5lckxvZ2ljYWxIZWlnaHQpKTsKKyAgICAgICAgICAg
IGxvZ2ljYWxUb3BWYWx1ZSA9IGF2YWlsYWJsZVNwYWNlIC0gKGxvZ2ljYWxIZWlnaHRWYWx1ZSAr
IHZhbHVlRm9yTGVuZ3RoKGxvZ2ljYWxCb3R0b20sIGNvbnRhaW5lckxvZ2ljYWxIZWlnaHQpKTsK
ICAgICAgICAgfSBlbHNlIGlmICghbG9naWNhbFRvcElzQXV0byAmJiBsb2dpY2FsSGVpZ2h0SXNB
dXRvICYmICFsb2dpY2FsQm90dG9tSXNBdXRvKSB7CiAgICAgICAgICAgICAvLyBSVUxFIDU6IChz
b2x2ZSBvZiBoZWlnaHQpCi0gICAgICAgICAgICBsb2dpY2FsVG9wVmFsdWUgPSB2YWx1ZUZvckxl
bmd0aChsb2dpY2FsVG9wLCBjb250YWluZXJMb2dpY2FsSGVpZ2h0LCByZW5kZXJWaWV3KTsKLSAg
ICAgICAgICAgIGxvZ2ljYWxIZWlnaHRWYWx1ZSA9IG1heDxMYXlvdXRVbml0PigwLCBhdmFpbGFi
bGVTcGFjZSAtIChsb2dpY2FsVG9wVmFsdWUgKyB2YWx1ZUZvckxlbmd0aChsb2dpY2FsQm90dG9t
LCBjb250YWluZXJMb2dpY2FsSGVpZ2h0LCByZW5kZXJWaWV3KSkpOworICAgICAgICAgICAgbG9n
aWNhbFRvcFZhbHVlID0gdmFsdWVGb3JMZW5ndGgobG9naWNhbFRvcCwgY29udGFpbmVyTG9naWNh
bEhlaWdodCk7CisgICAgICAgICAgICBsb2dpY2FsSGVpZ2h0VmFsdWUgPSBtYXg8TGF5b3V0VW5p
dD4oMCwgYXZhaWxhYmxlU3BhY2UgLSAobG9naWNhbFRvcFZhbHVlICsgdmFsdWVGb3JMZW5ndGgo
bG9naWNhbEJvdHRvbSwgY29udGFpbmVyTG9naWNhbEhlaWdodCkpKTsKICAgICAgICAgfSBlbHNl
IGlmICghbG9naWNhbFRvcElzQXV0byAmJiAhbG9naWNhbEhlaWdodElzQXV0byAmJiBsb2dpY2Fs
Qm90dG9tSXNBdXRvKSB7CiAgICAgICAgICAgICAvLyBSVUxFIDY6IChubyBuZWVkIHNvbHZlIG9m
IGJvdHRvbSkKLSAgICAgICAgICAgIGxvZ2ljYWxIZWlnaHRWYWx1ZSA9IGFkanVzdENvbnRlbnRC
b3hMb2dpY2FsSGVpZ2h0Rm9yQm94U2l6aW5nKHZhbHVlRm9yTGVuZ3RoKGxvZ2ljYWxIZWlnaHRM
ZW5ndGgsIGNvbnRhaW5lckxvZ2ljYWxIZWlnaHQsIHJlbmRlclZpZXcpKTsKLSAgICAgICAgICAg
IGxvZ2ljYWxUb3BWYWx1ZSA9IHZhbHVlRm9yTGVuZ3RoKGxvZ2ljYWxUb3AsIGNvbnRhaW5lckxv
Z2ljYWxIZWlnaHQsIHJlbmRlclZpZXcpOworICAgICAgICAgICAgbG9naWNhbEhlaWdodFZhbHVl
ID0gYWRqdXN0Q29udGVudEJveExvZ2ljYWxIZWlnaHRGb3JCb3hTaXppbmcodmFsdWVGb3JMZW5n
dGgobG9naWNhbEhlaWdodExlbmd0aCwgY29udGFpbmVyTG9naWNhbEhlaWdodCkpOworICAgICAg
ICAgICAgbG9naWNhbFRvcFZhbHVlID0gdmFsdWVGb3JMZW5ndGgobG9naWNhbFRvcCwgY29udGFp
bmVyTG9naWNhbEhlaWdodCk7CiAgICAgICAgIH0KICAgICB9CiAgICAgY29tcHV0ZWRWYWx1ZXMu
bV9leHRlbnQgPSBsb2dpY2FsSGVpZ2h0VmFsdWU7CkBAIC0zNjY2LDE0ICszNjU3LDEzIEBAIHZv
aWQgUmVuZGVyQm94Ojpjb21wdXRlUG9zaXRpb25lZExvZ2ljYWxXaWR0aFJlcGxhY2VkKExvZ2lj
YWxFeHRlbnRDb21wdXRlZFZhbHVlCiAgICAgXCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAgICAgTGF5b3V0
VW5pdCBsb2dpY2FsTGVmdFZhbHVlID0gMDsKICAgICBMYXlvdXRVbml0IGxvZ2ljYWxSaWdodFZh
bHVlID0gMDsKLSAgICBSZW5kZXJWaWV3KiByZW5kZXJWaWV3ID0gdmlldygpOwogCiAgICAgaWYg
KG1hcmdpbkxvZ2ljYWxMZWZ0LmlzQXV0bygpICYmIG1hcmdpbkxvZ2ljYWxSaWdodC5pc0F1dG8o
KSkgewogICAgICAgICAvLyAnbGVmdCcgYW5kICdyaWdodCcgY2Fubm90IGJlICdhdXRvJyBkdWUg
dG8gc3RlcCAzCiAgICAgICAgIEFTU0VSVCghKGxvZ2ljYWxMZWZ0LmlzQXV0bygpICYmIGxvZ2lj
YWxSaWdodC5pc0F1dG8oKSkpOwogCi0gICAgICAgIGxvZ2ljYWxMZWZ0VmFsdWUgPSB2YWx1ZUZv
ckxlbmd0aChsb2dpY2FsTGVmdCwgY29udGFpbmVyTG9naWNhbFdpZHRoLCByZW5kZXJWaWV3KTsK
LSAgICAgICAgbG9naWNhbFJpZ2h0VmFsdWUgPSB2YWx1ZUZvckxlbmd0aChsb2dpY2FsUmlnaHQs
IGNvbnRhaW5lckxvZ2ljYWxXaWR0aCwgcmVuZGVyVmlldyk7CisgICAgICAgIGxvZ2ljYWxMZWZ0
VmFsdWUgPSB2YWx1ZUZvckxlbmd0aChsb2dpY2FsTGVmdCwgY29udGFpbmVyTG9naWNhbFdpZHRo
KTsKKyAgICAgICAgbG9naWNhbFJpZ2h0VmFsdWUgPSB2YWx1ZUZvckxlbmd0aChsb2dpY2FsUmln
aHQsIGNvbnRhaW5lckxvZ2ljYWxXaWR0aCk7CiAKICAgICAgICAgTGF5b3V0VW5pdCBkaWZmZXJl
bmNlID0gYXZhaWxhYmxlU3BhY2UgLSAobG9naWNhbExlZnRWYWx1ZSArIGxvZ2ljYWxSaWdodFZh
bHVlKTsKICAgICAgICAgaWYgKGRpZmZlcmVuY2UgPiAwKSB7CkBAIC0zNjk2LDM5ICszNjg2LDM5
IEBAIHZvaWQgUmVuZGVyQm94Ojpjb21wdXRlUG9zaXRpb25lZExvZ2ljYWxXaWR0aFJlcGxhY2Vk
KExvZ2ljYWxFeHRlbnRDb21wdXRlZFZhbHVlCiAgICAgICogICAgdGhhdCB2YWx1ZS4KICAgICBc
Ki0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tKi8KICAgICB9IGVsc2UgaWYgKGxvZ2ljYWxMZWZ0LmlzQXV0bygpKSB7
Ci0gICAgICAgIG1hcmdpbkxvZ2ljYWxMZWZ0QWxpYXMgPSB2YWx1ZUZvckxlbmd0aChtYXJnaW5M
b2dpY2FsTGVmdCwgY29udGFpbmVyUmVsYXRpdmVMb2dpY2FsV2lkdGgsIHJlbmRlclZpZXcpOwot
ICAgICAgICBtYXJnaW5Mb2dpY2FsUmlnaHRBbGlhcyA9IHZhbHVlRm9yTGVuZ3RoKG1hcmdpbkxv
Z2ljYWxSaWdodCwgY29udGFpbmVyUmVsYXRpdmVMb2dpY2FsV2lkdGgsIHJlbmRlclZpZXcpOwot
ICAgICAgICBsb2dpY2FsUmlnaHRWYWx1ZSA9IHZhbHVlRm9yTGVuZ3RoKGxvZ2ljYWxSaWdodCwg
Y29udGFpbmVyTG9naWNhbFdpZHRoLCByZW5kZXJWaWV3KTsKKyAgICAgICAgbWFyZ2luTG9naWNh
bExlZnRBbGlhcyA9IHZhbHVlRm9yTGVuZ3RoKG1hcmdpbkxvZ2ljYWxMZWZ0LCBjb250YWluZXJS
ZWxhdGl2ZUxvZ2ljYWxXaWR0aCk7CisgICAgICAgIG1hcmdpbkxvZ2ljYWxSaWdodEFsaWFzID0g
dmFsdWVGb3JMZW5ndGgobWFyZ2luTG9naWNhbFJpZ2h0LCBjb250YWluZXJSZWxhdGl2ZUxvZ2lj
YWxXaWR0aCk7CisgICAgICAgIGxvZ2ljYWxSaWdodFZhbHVlID0gdmFsdWVGb3JMZW5ndGgobG9n
aWNhbFJpZ2h0LCBjb250YWluZXJMb2dpY2FsV2lkdGgpOwogCiAgICAgICAgIC8vIFNvbHZlIGZv
ciAnbGVmdCcKICAgICAgICAgbG9naWNhbExlZnRWYWx1ZSA9IGF2YWlsYWJsZVNwYWNlIC0gKGxv
Z2ljYWxSaWdodFZhbHVlICsgbWFyZ2luTG9naWNhbExlZnRBbGlhcyArIG1hcmdpbkxvZ2ljYWxS
aWdodEFsaWFzKTsKICAgICB9IGVsc2UgaWYgKGxvZ2ljYWxSaWdodC5pc0F1dG8oKSkgewotICAg
ICAgICBtYXJnaW5Mb2dpY2FsTGVmdEFsaWFzID0gdmFsdWVGb3JMZW5ndGgobWFyZ2luTG9naWNh
bExlZnQsIGNvbnRhaW5lclJlbGF0aXZlTG9naWNhbFdpZHRoLCByZW5kZXJWaWV3KTsKLSAgICAg
ICAgbWFyZ2luTG9naWNhbFJpZ2h0QWxpYXMgPSB2YWx1ZUZvckxlbmd0aChtYXJnaW5Mb2dpY2Fs
UmlnaHQsIGNvbnRhaW5lclJlbGF0aXZlTG9naWNhbFdpZHRoLCByZW5kZXJWaWV3KTsKLSAgICAg
ICAgbG9naWNhbExlZnRWYWx1ZSA9IHZhbHVlRm9yTGVuZ3RoKGxvZ2ljYWxMZWZ0LCBjb250YWlu
ZXJMb2dpY2FsV2lkdGgsIHJlbmRlclZpZXcpOworICAgICAgICBtYXJnaW5Mb2dpY2FsTGVmdEFs
aWFzID0gdmFsdWVGb3JMZW5ndGgobWFyZ2luTG9naWNhbExlZnQsIGNvbnRhaW5lclJlbGF0aXZl
TG9naWNhbFdpZHRoKTsKKyAgICAgICAgbWFyZ2luTG9naWNhbFJpZ2h0QWxpYXMgPSB2YWx1ZUZv
ckxlbmd0aChtYXJnaW5Mb2dpY2FsUmlnaHQsIGNvbnRhaW5lclJlbGF0aXZlTG9naWNhbFdpZHRo
KTsKKyAgICAgICAgbG9naWNhbExlZnRWYWx1ZSA9IHZhbHVlRm9yTGVuZ3RoKGxvZ2ljYWxMZWZ0
LCBjb250YWluZXJMb2dpY2FsV2lkdGgpOwogCiAgICAgICAgIC8vIFNvbHZlIGZvciAncmlnaHQn
CiAgICAgICAgIGxvZ2ljYWxSaWdodFZhbHVlID0gYXZhaWxhYmxlU3BhY2UgLSAobG9naWNhbExl
ZnRWYWx1ZSArIG1hcmdpbkxvZ2ljYWxMZWZ0QWxpYXMgKyBtYXJnaW5Mb2dpY2FsUmlnaHRBbGlh
cyk7CiAgICAgfSBlbHNlIGlmIChtYXJnaW5Mb2dpY2FsTGVmdC5pc0F1dG8oKSkgewotICAgICAg
ICBtYXJnaW5Mb2dpY2FsUmlnaHRBbGlhcyA9IHZhbHVlRm9yTGVuZ3RoKG1hcmdpbkxvZ2ljYWxS
aWdodCwgY29udGFpbmVyUmVsYXRpdmVMb2dpY2FsV2lkdGgsIHJlbmRlclZpZXcpOwotICAgICAg
ICBsb2dpY2FsTGVmdFZhbHVlID0gdmFsdWVGb3JMZW5ndGgobG9naWNhbExlZnQsIGNvbnRhaW5l
ckxvZ2ljYWxXaWR0aCwgcmVuZGVyVmlldyk7Ci0gICAgICAgIGxvZ2ljYWxSaWdodFZhbHVlID0g
dmFsdWVGb3JMZW5ndGgobG9naWNhbFJpZ2h0LCBjb250YWluZXJMb2dpY2FsV2lkdGgsIHJlbmRl
clZpZXcpOworICAgICAgICBtYXJnaW5Mb2dpY2FsUmlnaHRBbGlhcyA9IHZhbHVlRm9yTGVuZ3Ro
KG1hcmdpbkxvZ2ljYWxSaWdodCwgY29udGFpbmVyUmVsYXRpdmVMb2dpY2FsV2lkdGgpOworICAg
ICAgICBsb2dpY2FsTGVmdFZhbHVlID0gdmFsdWVGb3JMZW5ndGgobG9naWNhbExlZnQsIGNvbnRh
aW5lckxvZ2ljYWxXaWR0aCk7CisgICAgICAgIGxvZ2ljYWxSaWdodFZhbHVlID0gdmFsdWVGb3JM
ZW5ndGgobG9naWNhbFJpZ2h0LCBjb250YWluZXJMb2dpY2FsV2lkdGgpOwogCiAgICAgICAgIC8v
IFNvbHZlIGZvciAnbWFyZ2luLWxlZnQnCiAgICAgICAgIG1hcmdpbkxvZ2ljYWxMZWZ0QWxpYXMg
PSBhdmFpbGFibGVTcGFjZSAtIChsb2dpY2FsTGVmdFZhbHVlICsgbG9naWNhbFJpZ2h0VmFsdWUg
KyBtYXJnaW5Mb2dpY2FsUmlnaHRBbGlhcyk7CiAgICAgfSBlbHNlIGlmIChtYXJnaW5Mb2dpY2Fs
UmlnaHQuaXNBdXRvKCkpIHsKLSAgICAgICAgbWFyZ2luTG9naWNhbExlZnRBbGlhcyA9IHZhbHVl
Rm9yTGVuZ3RoKG1hcmdpbkxvZ2ljYWxMZWZ0LCBjb250YWluZXJSZWxhdGl2ZUxvZ2ljYWxXaWR0
aCwgcmVuZGVyVmlldyk7Ci0gICAgICAgIGxvZ2ljYWxMZWZ0VmFsdWUgPSB2YWx1ZUZvckxlbmd0
aChsb2dpY2FsTGVmdCwgY29udGFpbmVyTG9naWNhbFdpZHRoLCByZW5kZXJWaWV3KTsKLSAgICAg
ICAgbG9naWNhbFJpZ2h0VmFsdWUgPSB2YWx1ZUZvckxlbmd0aChsb2dpY2FsUmlnaHQsIGNvbnRh
aW5lckxvZ2ljYWxXaWR0aCwgcmVuZGVyVmlldyk7CisgICAgICAgIG1hcmdpbkxvZ2ljYWxMZWZ0
QWxpYXMgPSB2YWx1ZUZvckxlbmd0aChtYXJnaW5Mb2dpY2FsTGVmdCwgY29udGFpbmVyUmVsYXRp
dmVMb2dpY2FsV2lkdGgpOworICAgICAgICBsb2dpY2FsTGVmdFZhbHVlID0gdmFsdWVGb3JMZW5n
dGgobG9naWNhbExlZnQsIGNvbnRhaW5lckxvZ2ljYWxXaWR0aCk7CisgICAgICAgIGxvZ2ljYWxS
aWdodFZhbHVlID0gdmFsdWVGb3JMZW5ndGgobG9naWNhbFJpZ2h0LCBjb250YWluZXJMb2dpY2Fs
V2lkdGgpOwogCiAgICAgICAgIC8vIFNvbHZlIGZvciAnbWFyZ2luLXJpZ2h0JwogICAgICAgICBt
YXJnaW5Mb2dpY2FsUmlnaHRBbGlhcyA9IGF2YWlsYWJsZVNwYWNlIC0gKGxvZ2ljYWxMZWZ0VmFs
dWUgKyBsb2dpY2FsUmlnaHRWYWx1ZSArIG1hcmdpbkxvZ2ljYWxMZWZ0QWxpYXMpOwogICAgIH0g
ZWxzZSB7CiAgICAgICAgIC8vIE5vdGhpbmcgaXMgJ2F1dG8nLCBqdXN0IGNhbGN1bGF0ZSB0aGUg
dmFsdWVzLgotICAgICAgICBtYXJnaW5Mb2dpY2FsTGVmdEFsaWFzID0gdmFsdWVGb3JMZW5ndGgo
bWFyZ2luTG9naWNhbExlZnQsIGNvbnRhaW5lclJlbGF0aXZlTG9naWNhbFdpZHRoLCByZW5kZXJW
aWV3KTsKLSAgICAgICAgbWFyZ2luTG9naWNhbFJpZ2h0QWxpYXMgPSB2YWx1ZUZvckxlbmd0aCht
YXJnaW5Mb2dpY2FsUmlnaHQsIGNvbnRhaW5lclJlbGF0aXZlTG9naWNhbFdpZHRoLCByZW5kZXJW
aWV3KTsKLSAgICAgICAgbG9naWNhbFJpZ2h0VmFsdWUgPSB2YWx1ZUZvckxlbmd0aChsb2dpY2Fs
UmlnaHQsIGNvbnRhaW5lckxvZ2ljYWxXaWR0aCwgcmVuZGVyVmlldyk7Ci0gICAgICAgIGxvZ2lj
YWxMZWZ0VmFsdWUgPSB2YWx1ZUZvckxlbmd0aChsb2dpY2FsTGVmdCwgY29udGFpbmVyTG9naWNh
bFdpZHRoLCByZW5kZXJWaWV3KTsKKyAgICAgICAgbWFyZ2luTG9naWNhbExlZnRBbGlhcyA9IHZh
bHVlRm9yTGVuZ3RoKG1hcmdpbkxvZ2ljYWxMZWZ0LCBjb250YWluZXJSZWxhdGl2ZUxvZ2ljYWxX
aWR0aCk7CisgICAgICAgIG1hcmdpbkxvZ2ljYWxSaWdodEFsaWFzID0gdmFsdWVGb3JMZW5ndGgo
bWFyZ2luTG9naWNhbFJpZ2h0LCBjb250YWluZXJSZWxhdGl2ZUxvZ2ljYWxXaWR0aCk7CisgICAg
ICAgIGxvZ2ljYWxSaWdodFZhbHVlID0gdmFsdWVGb3JMZW5ndGgobG9naWNhbFJpZ2h0LCBjb250
YWluZXJMb2dpY2FsV2lkdGgpOworICAgICAgICBsb2dpY2FsTGVmdFZhbHVlID0gdmFsdWVGb3JM
ZW5ndGgobG9naWNhbExlZnQsIGNvbnRhaW5lckxvZ2ljYWxXaWR0aCk7CiAgICAgICAgIC8vIElm
IHRoZSBjb250YWluaW5nIGJsb2NrIGlzIHJpZ2h0LXRvLWxlZnQsIHRoZW4gcHVzaCB0aGUgbGVm
dCBwb3NpdGlvbiBhcyBmYXIgdG8gdGhlIHJpZ2h0IGFzIHBvc3NpYmxlCiAgICAgICAgIGlmIChj
b250YWluZXJEaXJlY3Rpb24gPT0gUlRMKSB7CiAgICAgICAgICAgICBpbnQgdG90YWxMb2dpY2Fs
V2lkdGggPSBjb21wdXRlZFZhbHVlcy5tX2V4dGVudCArIGxvZ2ljYWxMZWZ0VmFsdWUgKyBsb2dp
Y2FsUmlnaHRWYWx1ZSArICBtYXJnaW5Mb2dpY2FsTGVmdEFsaWFzICsgbWFyZ2luTG9naWNhbFJp
Z2h0QWxpYXM7CkBAIC0zNzkwLDcgKzM3ODAsNiBAQCB2b2lkIFJlbmRlckJveDo6Y29tcHV0ZVBv
c2l0aW9uZWRMb2dpY2FsSGVpZ2h0UmVwbGFjZWQoTG9naWNhbEV4dGVudENvbXB1dGVkVmFsdQog
CiAgICAgTGVuZ3RoIGxvZ2ljYWxUb3AgPSBzdHlsZSgpLT5sb2dpY2FsVG9wKCk7CiAgICAgTGVu
Z3RoIGxvZ2ljYWxCb3R0b20gPSBzdHlsZSgpLT5sb2dpY2FsQm90dG9tKCk7Ci0gICAgUmVuZGVy
VmlldyogcmVuZGVyVmlldyA9IHZpZXcoKTsKIAogICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qXAogICAg
ICAqIDEuIFRoZSB1c2VkIHZhbHVlIG9mICdoZWlnaHQnIGlzIGRldGVybWluZWQgYXMgZm9yIGlu
bGluZSByZXBsYWNlZApAQCAtMzgzNCw4ICszODIzLDggQEAgdm9pZCBSZW5kZXJCb3g6OmNvbXB1
dGVQb3NpdGlvbmVkTG9naWNhbEhlaWdodFJlcGxhY2VkKExvZ2ljYWxFeHRlbnRDb21wdXRlZFZh
bHUKICAgICAgICAgLy8gJ3RvcCcgYW5kICdib3R0b20nIGNhbm5vdCBiZSAnYXV0bycgZHVlIHRv
IHN0ZXAgMiBhbmQgMyBjb21iaW5lZC4KICAgICAgICAgQVNTRVJUKCEobG9naWNhbFRvcC5pc0F1
dG8oKSB8fCBsb2dpY2FsQm90dG9tLmlzQXV0bygpKSk7CiAKLSAgICAgICAgbG9naWNhbFRvcFZh
bHVlID0gdmFsdWVGb3JMZW5ndGgobG9naWNhbFRvcCwgY29udGFpbmVyTG9naWNhbEhlaWdodCwg
cmVuZGVyVmlldyk7Ci0gICAgICAgIGxvZ2ljYWxCb3R0b21WYWx1ZSA9IHZhbHVlRm9yTGVuZ3Ro
KGxvZ2ljYWxCb3R0b20sIGNvbnRhaW5lckxvZ2ljYWxIZWlnaHQsIHJlbmRlclZpZXcpOworICAg
ICAgICBsb2dpY2FsVG9wVmFsdWUgPSB2YWx1ZUZvckxlbmd0aChsb2dpY2FsVG9wLCBjb250YWlu
ZXJMb2dpY2FsSGVpZ2h0KTsKKyAgICAgICAgbG9naWNhbEJvdHRvbVZhbHVlID0gdmFsdWVGb3JM
ZW5ndGgobG9naWNhbEJvdHRvbSwgY29udGFpbmVyTG9naWNhbEhlaWdodCk7CiAKICAgICAgICAg
TGF5b3V0VW5pdCBkaWZmZXJlbmNlID0gYXZhaWxhYmxlU3BhY2UgLSAobG9naWNhbFRvcFZhbHVl
ICsgbG9naWNhbEJvdHRvbVZhbHVlKTsKICAgICAgICAgLy8gTk9URTogVGhpcyBtYXkgcmVzdWx0
IGluIG5lZ2F0aXZlIHZhbHVlcy4KQEAgLTM4NDcsMzkgKzM4MzYsMzkgQEAgdm9pZCBSZW5kZXJC
b3g6OmNvbXB1dGVQb3NpdGlvbmVkTG9naWNhbEhlaWdodFJlcGxhY2VkKExvZ2ljYWxFeHRlbnRD
b21wdXRlZFZhbHUKICAgICAgKiAgICBmb3IgdGhhdCB2YWx1ZS4KICAgICBcKi0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tKi8KICAgICB9IGVsc2UgaWYgKGxvZ2ljYWxUb3AuaXNBdXRvKCkpIHsKLSAgICAgICAgbWFy
Z2luQmVmb3JlQWxpYXMgPSB2YWx1ZUZvckxlbmd0aChtYXJnaW5CZWZvcmUsIGNvbnRhaW5lclJl
bGF0aXZlTG9naWNhbFdpZHRoLCByZW5kZXJWaWV3KTsKLSAgICAgICAgbWFyZ2luQWZ0ZXJBbGlh
cyA9IHZhbHVlRm9yTGVuZ3RoKG1hcmdpbkFmdGVyLCBjb250YWluZXJSZWxhdGl2ZUxvZ2ljYWxX
aWR0aCwgcmVuZGVyVmlldyk7Ci0gICAgICAgIGxvZ2ljYWxCb3R0b21WYWx1ZSA9IHZhbHVlRm9y
TGVuZ3RoKGxvZ2ljYWxCb3R0b20sIGNvbnRhaW5lckxvZ2ljYWxIZWlnaHQsIHJlbmRlclZpZXcp
OworICAgICAgICBtYXJnaW5CZWZvcmVBbGlhcyA9IHZhbHVlRm9yTGVuZ3RoKG1hcmdpbkJlZm9y
ZSwgY29udGFpbmVyUmVsYXRpdmVMb2dpY2FsV2lkdGgpOworICAgICAgICBtYXJnaW5BZnRlckFs
aWFzID0gdmFsdWVGb3JMZW5ndGgobWFyZ2luQWZ0ZXIsIGNvbnRhaW5lclJlbGF0aXZlTG9naWNh
bFdpZHRoKTsKKyAgICAgICAgbG9naWNhbEJvdHRvbVZhbHVlID0gdmFsdWVGb3JMZW5ndGgobG9n
aWNhbEJvdHRvbSwgY29udGFpbmVyTG9naWNhbEhlaWdodCk7CiAKICAgICAgICAgLy8gU29sdmUg
Zm9yICd0b3AnCiAgICAgICAgIGxvZ2ljYWxUb3BWYWx1ZSA9IGF2YWlsYWJsZVNwYWNlIC0gKGxv
Z2ljYWxCb3R0b21WYWx1ZSArIG1hcmdpbkJlZm9yZUFsaWFzICsgbWFyZ2luQWZ0ZXJBbGlhcyk7
CiAgICAgfSBlbHNlIGlmIChsb2dpY2FsQm90dG9tLmlzQXV0bygpKSB7Ci0gICAgICAgIG1hcmdp
bkJlZm9yZUFsaWFzID0gdmFsdWVGb3JMZW5ndGgobWFyZ2luQmVmb3JlLCBjb250YWluZXJSZWxh
dGl2ZUxvZ2ljYWxXaWR0aCwgcmVuZGVyVmlldyk7Ci0gICAgICAgIG1hcmdpbkFmdGVyQWxpYXMg
PSB2YWx1ZUZvckxlbmd0aChtYXJnaW5BZnRlciwgY29udGFpbmVyUmVsYXRpdmVMb2dpY2FsV2lk
dGgsIHJlbmRlclZpZXcpOwotICAgICAgICBsb2dpY2FsVG9wVmFsdWUgPSB2YWx1ZUZvckxlbmd0
aChsb2dpY2FsVG9wLCBjb250YWluZXJMb2dpY2FsSGVpZ2h0LCByZW5kZXJWaWV3KTsKKyAgICAg
ICAgbWFyZ2luQmVmb3JlQWxpYXMgPSB2YWx1ZUZvckxlbmd0aChtYXJnaW5CZWZvcmUsIGNvbnRh
aW5lclJlbGF0aXZlTG9naWNhbFdpZHRoKTsKKyAgICAgICAgbWFyZ2luQWZ0ZXJBbGlhcyA9IHZh
bHVlRm9yTGVuZ3RoKG1hcmdpbkFmdGVyLCBjb250YWluZXJSZWxhdGl2ZUxvZ2ljYWxXaWR0aCk7
CisgICAgICAgIGxvZ2ljYWxUb3BWYWx1ZSA9IHZhbHVlRm9yTGVuZ3RoKGxvZ2ljYWxUb3AsIGNv
bnRhaW5lckxvZ2ljYWxIZWlnaHQpOwogCiAgICAgICAgIC8vIFNvbHZlIGZvciAnYm90dG9tJwog
ICAgICAgICAvLyBOT1RFOiBJdCBpcyBub3QgbmVjZXNzYXJ5IHRvIHNvbHZlIGZvciAnYm90dG9t
JyBiZWNhdXNlIHdlIGRvbid0IGV2ZXIKICAgICAgICAgLy8gdXNlIHRoZSB2YWx1ZS4KICAgICB9
IGVsc2UgaWYgKG1hcmdpbkJlZm9yZS5pc0F1dG8oKSkgewotICAgICAgICBtYXJnaW5BZnRlckFs
aWFzID0gdmFsdWVGb3JMZW5ndGgobWFyZ2luQWZ0ZXIsIGNvbnRhaW5lclJlbGF0aXZlTG9naWNh
bFdpZHRoLCByZW5kZXJWaWV3KTsKLSAgICAgICAgbG9naWNhbFRvcFZhbHVlID0gdmFsdWVGb3JM
ZW5ndGgobG9naWNhbFRvcCwgY29udGFpbmVyTG9naWNhbEhlaWdodCwgcmVuZGVyVmlldyk7Ci0g
ICAgICAgIGxvZ2ljYWxCb3R0b21WYWx1ZSA9IHZhbHVlRm9yTGVuZ3RoKGxvZ2ljYWxCb3R0b20s
IGNvbnRhaW5lckxvZ2ljYWxIZWlnaHQsIHJlbmRlclZpZXcpOworICAgICAgICBtYXJnaW5BZnRl
ckFsaWFzID0gdmFsdWVGb3JMZW5ndGgobWFyZ2luQWZ0ZXIsIGNvbnRhaW5lclJlbGF0aXZlTG9n
aWNhbFdpZHRoKTsKKyAgICAgICAgbG9naWNhbFRvcFZhbHVlID0gdmFsdWVGb3JMZW5ndGgobG9n
aWNhbFRvcCwgY29udGFpbmVyTG9naWNhbEhlaWdodCk7CisgICAgICAgIGxvZ2ljYWxCb3R0b21W
YWx1ZSA9IHZhbHVlRm9yTGVuZ3RoKGxvZ2ljYWxCb3R0b20sIGNvbnRhaW5lckxvZ2ljYWxIZWln
aHQpOwogCiAgICAgICAgIC8vIFNvbHZlIGZvciAnbWFyZ2luLXRvcCcKICAgICAgICAgbWFyZ2lu
QmVmb3JlQWxpYXMgPSBhdmFpbGFibGVTcGFjZSAtIChsb2dpY2FsVG9wVmFsdWUgKyBsb2dpY2Fs
Qm90dG9tVmFsdWUgKyBtYXJnaW5BZnRlckFsaWFzKTsKICAgICB9IGVsc2UgaWYgKG1hcmdpbkFm
dGVyLmlzQXV0bygpKSB7Ci0gICAgICAgIG1hcmdpbkJlZm9yZUFsaWFzID0gdmFsdWVGb3JMZW5n
dGgobWFyZ2luQmVmb3JlLCBjb250YWluZXJSZWxhdGl2ZUxvZ2ljYWxXaWR0aCwgcmVuZGVyVmll
dyk7Ci0gICAgICAgIGxvZ2ljYWxUb3BWYWx1ZSA9IHZhbHVlRm9yTGVuZ3RoKGxvZ2ljYWxUb3As
IGNvbnRhaW5lckxvZ2ljYWxIZWlnaHQsIHJlbmRlclZpZXcpOwotICAgICAgICBsb2dpY2FsQm90
dG9tVmFsdWUgPSB2YWx1ZUZvckxlbmd0aChsb2dpY2FsQm90dG9tLCBjb250YWluZXJMb2dpY2Fs
SGVpZ2h0LCByZW5kZXJWaWV3KTsKKyAgICAgICAgbWFyZ2luQmVmb3JlQWxpYXMgPSB2YWx1ZUZv
ckxlbmd0aChtYXJnaW5CZWZvcmUsIGNvbnRhaW5lclJlbGF0aXZlTG9naWNhbFdpZHRoKTsKKyAg
ICAgICAgbG9naWNhbFRvcFZhbHVlID0gdmFsdWVGb3JMZW5ndGgobG9naWNhbFRvcCwgY29udGFp
bmVyTG9naWNhbEhlaWdodCk7CisgICAgICAgIGxvZ2ljYWxCb3R0b21WYWx1ZSA9IHZhbHVlRm9y
TGVuZ3RoKGxvZ2ljYWxCb3R0b20sIGNvbnRhaW5lckxvZ2ljYWxIZWlnaHQpOwogCiAgICAgICAg
IC8vIFNvbHZlIGZvciAnbWFyZ2luLWJvdHRvbScKICAgICAgICAgbWFyZ2luQWZ0ZXJBbGlhcyA9
IGF2YWlsYWJsZVNwYWNlIC0gKGxvZ2ljYWxUb3BWYWx1ZSArIGxvZ2ljYWxCb3R0b21WYWx1ZSAr
IG1hcmdpbkJlZm9yZUFsaWFzKTsKICAgICB9IGVsc2UgewogICAgICAgICAvLyBOb3RoaW5nIGlz
ICdhdXRvJywganVzdCBjYWxjdWxhdGUgdGhlIHZhbHVlcy4KLSAgICAgICAgbWFyZ2luQmVmb3Jl
QWxpYXMgPSB2YWx1ZUZvckxlbmd0aChtYXJnaW5CZWZvcmUsIGNvbnRhaW5lclJlbGF0aXZlTG9n
aWNhbFdpZHRoLCByZW5kZXJWaWV3KTsKLSAgICAgICAgbWFyZ2luQWZ0ZXJBbGlhcyA9IHZhbHVl
Rm9yTGVuZ3RoKG1hcmdpbkFmdGVyLCBjb250YWluZXJSZWxhdGl2ZUxvZ2ljYWxXaWR0aCwgcmVu
ZGVyVmlldyk7Ci0gICAgICAgIGxvZ2ljYWxUb3BWYWx1ZSA9IHZhbHVlRm9yTGVuZ3RoKGxvZ2lj
YWxUb3AsIGNvbnRhaW5lckxvZ2ljYWxIZWlnaHQsIHJlbmRlclZpZXcpOworICAgICAgICBtYXJn
aW5CZWZvcmVBbGlhcyA9IHZhbHVlRm9yTGVuZ3RoKG1hcmdpbkJlZm9yZSwgY29udGFpbmVyUmVs
YXRpdmVMb2dpY2FsV2lkdGgpOworICAgICAgICBtYXJnaW5BZnRlckFsaWFzID0gdmFsdWVGb3JM
ZW5ndGgobWFyZ2luQWZ0ZXIsIGNvbnRhaW5lclJlbGF0aXZlTG9naWNhbFdpZHRoKTsKKyAgICAg
ICAgbG9naWNhbFRvcFZhbHVlID0gdmFsdWVGb3JMZW5ndGgobG9naWNhbFRvcCwgY29udGFpbmVy
TG9naWNhbEhlaWdodCk7CiAgICAgICAgIC8vIE5PVEU6IEl0IGlzIG5vdCBuZWNlc3NhcnkgdG8g
c29sdmUgZm9yICdib3R0b20nIGJlY2F1c2Ugd2UgZG9uJ3QgZXZlcgogICAgICAgICAvLyB1c2Ug
dGhlIHZhbHVlLgogICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQm94TW9kZWxPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckJveE1vZGVsT2JqZWN0LmNwcAppbmRleCAyMGM2MThiYmExYWFmYzdhMWRmZWE5NjRmYzNiZjM2
OTk3MWExNjNkLi40MjllNTNjZDBhODc4NDAzNjMxZjQ0ODI4N2NhNGM1OGIyY2ZlZmJjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAK
QEAgLTQwNSwxMSArNDA1LDExIEBAIExheW91dFNpemUgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnJl
bGF0aXZlUG9zaXRpb25PZmZzZXQoKSBjb25zdAogICAgIC8vIGNhbGwgYXZhaWxhYmxlV2lkdGgg
b24gb3VyIGNvbnRhaW5pbmcgYmxvY2suCiAgICAgaWYgKCFzdHlsZSgpLT5sZWZ0KCkuaXNBdXRv
KCkpIHsKICAgICAgICAgaWYgKCFzdHlsZSgpLT5yaWdodCgpLmlzQXV0bygpICYmICFjb250YWlu
aW5nQmxvY2stPnN0eWxlKCktPmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSkKLSAgICAgICAgICAg
IG9mZnNldC5zZXRXaWR0aCgtdmFsdWVGb3JMZW5ndGgoc3R5bGUoKS0+cmlnaHQoKSwgY29udGFp
bmluZ0Jsb2NrLT5hdmFpbGFibGVXaWR0aCgpLCB2aWV3KCkpKTsKKyAgICAgICAgICAgIG9mZnNl
dC5zZXRXaWR0aCgtdmFsdWVGb3JMZW5ndGgoc3R5bGUoKS0+cmlnaHQoKSwgY29udGFpbmluZ0Js
b2NrLT5hdmFpbGFibGVXaWR0aCgpKSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIG9mZnNl
dC5leHBhbmQodmFsdWVGb3JMZW5ndGgoc3R5bGUoKS0+bGVmdCgpLCBjb250YWluaW5nQmxvY2st
PmF2YWlsYWJsZVdpZHRoKCksIHZpZXcoKSksIDApOworICAgICAgICAgICAgb2Zmc2V0LmV4cGFu
ZCh2YWx1ZUZvckxlbmd0aChzdHlsZSgpLT5sZWZ0KCksIGNvbnRhaW5pbmdCbG9jay0+YXZhaWxh
YmxlV2lkdGgoKSksIDApOwogICAgIH0gZWxzZSBpZiAoIXN0eWxlKCktPnJpZ2h0KCkuaXNBdXRv
KCkpIHsKLSAgICAgICAgb2Zmc2V0LmV4cGFuZCgtdmFsdWVGb3JMZW5ndGgoc3R5bGUoKS0+cmln
aHQoKSwgY29udGFpbmluZ0Jsb2NrLT5hdmFpbGFibGVXaWR0aCgpLCB2aWV3KCkpLCAwKTsKKyAg
ICAgICAgb2Zmc2V0LmV4cGFuZCgtdmFsdWVGb3JMZW5ndGgoc3R5bGUoKS0+cmlnaHQoKSwgY29u
dGFpbmluZ0Jsb2NrLT5hdmFpbGFibGVXaWR0aCgpKSwgMCk7CiAgICAgfQogCiAgICAgLy8gSWYg
dGhlIGNvbnRhaW5pbmcgYmxvY2sgb2YgYSByZWxhdGl2ZWx5IHBvc2l0aW9uZWQgZWxlbWVudCBk
b2VzIG5vdApAQCAtNDIyLDEzICs0MjIsMTMgQEAgTGF5b3V0U2l6ZSBSZW5kZXJCb3hNb2RlbE9i
amVjdDo6cmVsYXRpdmVQb3NpdGlvbk9mZnNldCgpIGNvbnN0CiAgICAgICAgICYmICghY29udGFp
bmluZ0Jsb2NrLT5oYXNBdXRvSGVpZ2h0T3JDb250YWluaW5nQmxvY2tXaXRoQXV0b0hlaWdodCgp
CiAgICAgICAgICAgICB8fCAhc3R5bGUoKS0+dG9wKCkuaXNQZXJjZW50KCkKICAgICAgICAgICAg
IHx8IGNvbnRhaW5pbmdCbG9jay0+c3RyZXRjaGVzVG9WaWV3cG9ydCgpKSkKLSAgICAgICAgb2Zm
c2V0LmV4cGFuZCgwLCB2YWx1ZUZvckxlbmd0aChzdHlsZSgpLT50b3AoKSwgY29udGFpbmluZ0Js
b2NrLT5hdmFpbGFibGVIZWlnaHQoKSwgdmlldygpKSk7CisgICAgICAgIG9mZnNldC5leHBhbmQo
MCwgdmFsdWVGb3JMZW5ndGgoc3R5bGUoKS0+dG9wKCksIGNvbnRhaW5pbmdCbG9jay0+YXZhaWxh
YmxlSGVpZ2h0KCkpKTsKIAogICAgIGVsc2UgaWYgKCFzdHlsZSgpLT5ib3R0b20oKS5pc0F1dG8o
KQogICAgICAgICAmJiAoIWNvbnRhaW5pbmdCbG9jay0+aGFzQXV0b0hlaWdodE9yQ29udGFpbmlu
Z0Jsb2NrV2l0aEF1dG9IZWlnaHQoKQogICAgICAgICAgICAgfHwgIXN0eWxlKCktPmJvdHRvbSgp
LmlzUGVyY2VudCgpCiAgICAgICAgICAgICB8fCBjb250YWluaW5nQmxvY2stPnN0cmV0Y2hlc1Rv
Vmlld3BvcnQoKSkpCi0gICAgICAgIG9mZnNldC5leHBhbmQoMCwgLXZhbHVlRm9yTGVuZ3RoKHN0
eWxlKCktPmJvdHRvbSgpLCBjb250YWluaW5nQmxvY2stPmF2YWlsYWJsZUhlaWdodCgpLCB2aWV3
KCkpKTsKKyAgICAgICAgb2Zmc2V0LmV4cGFuZCgwLCAtdmFsdWVGb3JMZW5ndGgoc3R5bGUoKS0+
Ym90dG9tKCksIGNvbnRhaW5pbmdCbG9jay0+YXZhaWxhYmxlSGVpZ2h0KCkpKTsKIAogICAgIHJl
dHVybiBvZmZzZXQ7CiB9CkBAIC00NzksMTAgKzQ3OSwxMCBAQCB2b2lkIFJlbmRlckJveE1vZGVs
T2JqZWN0Ojpjb21wdXRlU3RpY2t5UG9zaXRpb25Db25zdHJhaW50cyhTdGlja3lQb3NpdGlvblZp
ZXdwbwogCiAgICAgLy8gU3RpY2t5IHBvc2l0aW9uZWQgZWxlbWVudCBpZ25vcmUgYW55IG92ZXJy
aWRlIGxvZ2ljYWwgd2lkdGggb24gdGhlIGNvbnRhaW5pbmcgYmxvY2sgKGFzIHRoZXkgZG9uJ3Qg
Y2FsbAogICAgIC8vIGNvbnRhaW5pbmdCbG9ja0xvZ2ljYWxXaWR0aEZvckNvbnRlbnQpLiBJdCdz
IHVuY2xlYXIgd2hldGhlciB0aGlzIGlzIHRvdGFsbHkgZmluZS4KLSAgICBMYXlvdXRCb3hFeHRl
bnQgbWluTWFyZ2luKG1pbmltdW1WYWx1ZUZvckxlbmd0aChzdHlsZSgpLT5tYXJnaW5Ub3AoKSwg
bWF4V2lkdGgsIHZpZXcoKSksCi0gICAgICAgIG1pbmltdW1WYWx1ZUZvckxlbmd0aChzdHlsZSgp
LT5tYXJnaW5SaWdodCgpLCBtYXhXaWR0aCwgdmlldygpKSwKLSAgICAgICAgbWluaW11bVZhbHVl
Rm9yTGVuZ3RoKHN0eWxlKCktPm1hcmdpbkJvdHRvbSgpLCBtYXhXaWR0aCwgdmlldygpKSwKLSAg
ICAgICAgbWluaW11bVZhbHVlRm9yTGVuZ3RoKHN0eWxlKCktPm1hcmdpbkxlZnQoKSwgbWF4V2lk
dGgsIHZpZXcoKSkpOworICAgIExheW91dEJveEV4dGVudCBtaW5NYXJnaW4obWluaW11bVZhbHVl
Rm9yTGVuZ3RoKHN0eWxlKCktPm1hcmdpblRvcCgpLCBtYXhXaWR0aCksCisgICAgICAgIG1pbmlt
dW1WYWx1ZUZvckxlbmd0aChzdHlsZSgpLT5tYXJnaW5SaWdodCgpLCBtYXhXaWR0aCksCisgICAg
ICAgIG1pbmltdW1WYWx1ZUZvckxlbmd0aChzdHlsZSgpLT5tYXJnaW5Cb3R0b20oKSwgbWF4V2lk
dGgpLAorICAgICAgICBtaW5pbXVtVmFsdWVGb3JMZW5ndGgoc3R5bGUoKS0+bWFyZ2luTGVmdCgp
LCBtYXhXaWR0aCkpOwogCiAgICAgLy8gQ29tcHV0ZSB0aGUgY29udGFpbmVyLXJlbGF0aXZlIGFy
ZWEgd2l0aGluIHdoaWNoIHRoZSBzdGlja3kgZWxlbWVudCBpcyBhbGxvd2VkIHRvIG1vdmUuCiAg
ICAgY29udGFpbmVyQ29udGVudFJlY3QuY29udHJhY3QobWluTWFyZ2luKTsKQEAgLTUwMywyMiAr
NTAzLDIyIEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OmNvbXB1dGVTdGlja3lQb3NpdGlv
bkNvbnN0cmFpbnRzKFN0aWNreVBvc2l0aW9uVmlld3BvCiAgICAgY29uc3RyYWludHMuc2V0QWJz
b2x1dGVTdGlja3lCb3hSZWN0KGFic29sdXRlU3RpY2t5Qm94UmVjdCk7CiAKICAgICBpZiAoIXN0
eWxlKCktPmxlZnQoKS5pc0F1dG8oKSkgewotICAgICAgICBjb25zdHJhaW50cy5zZXRMZWZ0T2Zm
c2V0KHZhbHVlRm9yTGVuZ3RoKHN0eWxlKCktPmxlZnQoKSwgdmlld3BvcnRSZWN0LndpZHRoKCks
IHZpZXcoKSkpOworICAgICAgICBjb25zdHJhaW50cy5zZXRMZWZ0T2Zmc2V0KHZhbHVlRm9yTGVu
Z3RoKHN0eWxlKCktPmxlZnQoKSwgdmlld3BvcnRSZWN0LndpZHRoKCkpKTsKICAgICAgICAgY29u
c3RyYWludHMuYWRkQW5jaG9yRWRnZShWaWV3cG9ydENvbnN0cmFpbnRzOjpBbmNob3JFZGdlTGVm
dCk7CiAgICAgfQogCiAgICAgaWYgKCFzdHlsZSgpLT5yaWdodCgpLmlzQXV0bygpKSB7Ci0gICAg
ICAgIGNvbnN0cmFpbnRzLnNldFJpZ2h0T2Zmc2V0KHZhbHVlRm9yTGVuZ3RoKHN0eWxlKCktPnJp
Z2h0KCksIHZpZXdwb3J0UmVjdC53aWR0aCgpLCB2aWV3KCkpKTsKKyAgICAgICAgY29uc3RyYWlu
dHMuc2V0UmlnaHRPZmZzZXQodmFsdWVGb3JMZW5ndGgoc3R5bGUoKS0+cmlnaHQoKSwgdmlld3Bv
cnRSZWN0LndpZHRoKCkpKTsKICAgICAgICAgY29uc3RyYWludHMuYWRkQW5jaG9yRWRnZShWaWV3
cG9ydENvbnN0cmFpbnRzOjpBbmNob3JFZGdlUmlnaHQpOwogICAgIH0KIAogICAgIGlmICghc3R5
bGUoKS0+dG9wKCkuaXNBdXRvKCkpIHsKLSAgICAgICAgY29uc3RyYWludHMuc2V0VG9wT2Zmc2V0
KHZhbHVlRm9yTGVuZ3RoKHN0eWxlKCktPnRvcCgpLCB2aWV3cG9ydFJlY3QuaGVpZ2h0KCksIHZp
ZXcoKSkpOworICAgICAgICBjb25zdHJhaW50cy5zZXRUb3BPZmZzZXQodmFsdWVGb3JMZW5ndGgo
c3R5bGUoKS0+dG9wKCksIHZpZXdwb3J0UmVjdC5oZWlnaHQoKSkpOwogICAgICAgICBjb25zdHJh
aW50cy5hZGRBbmNob3JFZGdlKFZpZXdwb3J0Q29uc3RyYWludHM6OkFuY2hvckVkZ2VUb3ApOwog
ICAgIH0KIAogICAgIGlmICghc3R5bGUoKS0+Ym90dG9tKCkuaXNBdXRvKCkpIHsKLSAgICAgICAg
Y29uc3RyYWludHMuc2V0Qm90dG9tT2Zmc2V0KHZhbHVlRm9yTGVuZ3RoKHN0eWxlKCktPmJvdHRv
bSgpLCB2aWV3cG9ydFJlY3QuaGVpZ2h0KCksIHZpZXcoKSkpOworICAgICAgICBjb25zdHJhaW50
cy5zZXRCb3R0b21PZmZzZXQodmFsdWVGb3JMZW5ndGgoc3R5bGUoKS0+Ym90dG9tKCksIHZpZXdw
b3J0UmVjdC5oZWlnaHQoKSkpOwogICAgICAgICBjb25zdHJhaW50cy5hZGRBbmNob3JFZGdlKFZp
ZXdwb3J0Q29uc3RyYWludHM6OkFuY2hvckVkZ2VCb3R0b20pOwogICAgIH0KIH0KQEAgLTU5MCwx
MiArNTkwLDkgQEAgaW50IFJlbmRlckJveE1vZGVsT2JqZWN0OjpwaXhlbFNuYXBwZWRPZmZzZXRI
ZWlnaHQoKSBjb25zdAogTGF5b3V0VW5pdCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6Y29tcHV0ZWRD
U1NQYWRkaW5nKExlbmd0aCBwYWRkaW5nKSBjb25zdAogewogICAgIExheW91dFVuaXQgdyA9IDA7
Ci0gICAgUmVuZGVyVmlldyogcmVuZGVyVmlldyA9IDA7CiAgICAgaWYgKHBhZGRpbmcuaXNQZXJj
ZW50KCkpCiAgICAgICAgIHcgPSBjb250YWluaW5nQmxvY2tMb2dpY2FsV2lkdGhGb3JDb250ZW50
KCk7Ci0gICAgZWxzZSBpZiAocGFkZGluZy5pc1ZpZXdwb3J0UGVyY2VudGFnZSgpKQotICAgICAg
ICByZW5kZXJWaWV3ID0gdmlldygpOwotICAgIHJldHVybiBtaW5pbXVtVmFsdWVGb3JMZW5ndGgo
cGFkZGluZywgdywgcmVuZGVyVmlldyk7CisgICAgcmV0dXJuIG1pbmltdW1WYWx1ZUZvckxlbmd0
aChwYWRkaW5nLCB3KTsKIH0KIAogUm91bmRlZFJlY3QgUmVuZGVyQm94TW9kZWxPYmplY3Q6Omdl
dEJhY2tncm91bmRSb3VuZGVkUmVjdChjb25zdCBMYXlvdXRSZWN0JiBib3JkZXJSZWN0LCBJbmxp
bmVGbG93Qm94KiBib3gsIExheW91dFVuaXQgaW5saW5lQm94V2lkdGgsIExheW91dFVuaXQgaW5s
aW5lQm94SGVpZ2h0LApAQCAtMTAzNSw3ICsxMDMyLDYgQEAgSW50U2l6ZSBSZW5kZXJCb3hNb2Rl
bE9iamVjdDo6Y2FsY3VsYXRlRmlsbFRpbGVTaXplKGNvbnN0IEZpbGxMYXllciogZmlsbExheWVy
LAogCiAgICAgSW50U2l6ZSBpbWFnZUludHJpbnNpY1NpemUgPSBjYWxjdWxhdGVJbWFnZUludHJp
bnNpY0RpbWVuc2lvbnMoaW1hZ2UsIHBvc2l0aW9uaW5nQXJlYVNpemUsIFNjYWxlQnlFZmZlY3Rp
dmVab29tKTsKICAgICBpbWFnZUludHJpbnNpY1NpemUuc2NhbGUoMSAvIGltYWdlLT5pbWFnZVNj
YWxlRmFjdG9yKCksIDEgLyBpbWFnZS0+aW1hZ2VTY2FsZUZhY3RvcigpKTsKLSAgICBSZW5kZXJW
aWV3KiByZW5kZXJWaWV3ID0gdmlldygpOwogICAgIHN3aXRjaCAodHlwZSkgewogICAgICAgICBj
YXNlIFNpemVMZW5ndGg6IHsKICAgICAgICAgICAgIExheW91dFNpemUgdGlsZVNpemUgPSBwb3Np
dGlvbmluZ0FyZWFTaXplOwpAQCAtMTA0NiwxMiArMTA0MiwxMiBAQCBJbnRTaXplIFJlbmRlckJv
eE1vZGVsT2JqZWN0OjpjYWxjdWxhdGVGaWxsVGlsZVNpemUoY29uc3QgRmlsbExheWVyKiBmaWxs
TGF5ZXIsCiAgICAgICAgICAgICBpZiAobGF5ZXJXaWR0aC5pc0ZpeGVkKCkpCiAgICAgICAgICAg
ICAgICAgdGlsZVNpemUuc2V0V2lkdGgobGF5ZXJXaWR0aC52YWx1ZSgpKTsKICAgICAgICAgICAg
IGVsc2UgaWYgKGxheWVyV2lkdGguaXNQZXJjZW50KCkgfHwgbGF5ZXJXaWR0aC5pc1ZpZXdwb3J0
UGVyY2VudGFnZSgpKQotICAgICAgICAgICAgICAgIHRpbGVTaXplLnNldFdpZHRoKHZhbHVlRm9y
TGVuZ3RoKGxheWVyV2lkdGgsIHBvc2l0aW9uaW5nQXJlYVNpemUud2lkdGgoKSwgcmVuZGVyVmll
dykpOworICAgICAgICAgICAgICAgIHRpbGVTaXplLnNldFdpZHRoKHZhbHVlRm9yTGVuZ3RoKGxh
eWVyV2lkdGgsIHBvc2l0aW9uaW5nQXJlYVNpemUud2lkdGgoKSkpOwogICAgICAgICAgICAgCiAg
ICAgICAgICAgICBpZiAobGF5ZXJIZWlnaHQuaXNGaXhlZCgpKQogICAgICAgICAgICAgICAgIHRp
bGVTaXplLnNldEhlaWdodChsYXllckhlaWdodC52YWx1ZSgpKTsKICAgICAgICAgICAgIGVsc2Ug
aWYgKGxheWVySGVpZ2h0LmlzUGVyY2VudCgpIHx8IGxheWVySGVpZ2h0LmlzVmlld3BvcnRQZXJj
ZW50YWdlKCkpCi0gICAgICAgICAgICAgICAgdGlsZVNpemUuc2V0SGVpZ2h0KHZhbHVlRm9yTGVu
Z3RoKGxheWVySGVpZ2h0LCBwb3NpdGlvbmluZ0FyZWFTaXplLmhlaWdodCgpLCByZW5kZXJWaWV3
KSk7CisgICAgICAgICAgICAgICAgdGlsZVNpemUuc2V0SGVpZ2h0KHZhbHVlRm9yTGVuZ3RoKGxh
eWVySGVpZ2h0LCBwb3NpdGlvbmluZ0FyZWFTaXplLmhlaWdodCgpKSk7CiAKICAgICAgICAgICAg
IGFwcGx5U3ViUGl4ZWxIZXVyaXN0aWNGb3JUaWxlU2l6ZSh0aWxlU2l6ZSwgcG9zaXRpb25pbmdB
cmVhU2l6ZSk7CiAKQEAgLTEyMTEsMTggKzEyMDcsMTcgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9i
amVjdDo6Y2FsY3VsYXRlQmFja2dyb3VuZEltYWdlR2VvbWV0cnkoY29uc3QgRmlsbExheWVyKiBm
aWwKIAogICAgIEVGaWxsUmVwZWF0IGJhY2tncm91bmRSZXBlYXRYID0gZmlsbExheWVyLT5yZXBl
YXRYKCk7CiAgICAgRUZpbGxSZXBlYXQgYmFja2dyb3VuZFJlcGVhdFkgPSBmaWxsTGF5ZXItPnJl
cGVhdFkoKTsKLSAgICBSZW5kZXJWaWV3KiByZW5kZXJWaWV3ID0gdmlldygpOwogICAgIGludCBh
dmFpbGFibGVXaWR0aCA9IHBvc2l0aW9uaW5nQXJlYVNpemUud2lkdGgoKSAtIGdlb21ldHJ5LnRp
bGVTaXplKCkud2lkdGgoKTsKICAgICBpbnQgYXZhaWxhYmxlSGVpZ2h0ID0gcG9zaXRpb25pbmdB
cmVhU2l6ZS5oZWlnaHQoKSAtIGdlb21ldHJ5LnRpbGVTaXplKCkuaGVpZ2h0KCk7CiAKLSAgICBM
YXlvdXRVbml0IGNvbXB1dGVkWFBvc2l0aW9uID0gbWluaW11bVZhbHVlRm9yTGVuZ3RoKGZpbGxM
YXllci0+eFBvc2l0aW9uKCksIGF2YWlsYWJsZVdpZHRoLCByZW5kZXJWaWV3LCB0cnVlKTsKKyAg
ICBMYXlvdXRVbml0IGNvbXB1dGVkWFBvc2l0aW9uID0gbWluaW11bVZhbHVlRm9yTGVuZ3RoKGZp
bGxMYXllci0+eFBvc2l0aW9uKCksIGF2YWlsYWJsZVdpZHRoLCB0cnVlKTsKICAgICBpZiAoYmFj
a2dyb3VuZFJlcGVhdFggPT0gUmVwZWF0RmlsbCkKICAgICAgICAgZ2VvbWV0cnkuc2V0UGhhc2VY
KGdlb21ldHJ5LnRpbGVTaXplKCkud2lkdGgoKSA/IGdlb21ldHJ5LnRpbGVTaXplKCkud2lkdGgo
KSAtIHJvdW5kVG9JbnQoY29tcHV0ZWRYUG9zaXRpb24gKyBsZWZ0KSAlIGdlb21ldHJ5LnRpbGVT
aXplKCkud2lkdGgoKSA6IDApOwogICAgIGVsc2UgewogICAgICAgICBpbnQgeE9mZnNldCA9IGZp
bGxMYXllci0+YmFja2dyb3VuZFhPcmlnaW4oKSA9PSBSaWdodEVkZ2UgPyBhdmFpbGFibGVXaWR0
aCAtIGNvbXB1dGVkWFBvc2l0aW9uIDogY29tcHV0ZWRYUG9zaXRpb247CiAgICAgICAgIGdlb21l
dHJ5LnNldE5vUmVwZWF0WChsZWZ0ICsgeE9mZnNldCk7CiAgICAgfQotICAgIExheW91dFVuaXQg
Y29tcHV0ZWRZUG9zaXRpb24gPSBtaW5pbXVtVmFsdWVGb3JMZW5ndGgoZmlsbExheWVyLT55UG9z
aXRpb24oKSwgYXZhaWxhYmxlSGVpZ2h0LCByZW5kZXJWaWV3LCB0cnVlKTsKKyAgICBMYXlvdXRV
bml0IGNvbXB1dGVkWVBvc2l0aW9uID0gbWluaW11bVZhbHVlRm9yTGVuZ3RoKGZpbGxMYXllci0+
eVBvc2l0aW9uKCksIGF2YWlsYWJsZUhlaWdodCwgdHJ1ZSk7CiAgICAgaWYgKGJhY2tncm91bmRS
ZXBlYXRZID09IFJlcGVhdEZpbGwpCiAgICAgICAgIGdlb21ldHJ5LnNldFBoYXNlWShnZW9tZXRy
eS50aWxlU2l6ZSgpLmhlaWdodCgpID8gZ2VvbWV0cnkudGlsZVNpemUoKS5oZWlnaHQoKSAtIHJv
dW5kVG9JbnQoY29tcHV0ZWRZUG9zaXRpb24gKyB0b3ApICUgZ2VvbWV0cnkudGlsZVNpemUoKS5o
ZWlnaHQoKSA6IDApOwogICAgIGVsc2UgewpAQCAtMTI3NSwxMCArMTI3MCwxMCBAQCBib29sIFJl
bmRlckJveE1vZGVsT2JqZWN0OjpwYWludE5pbmVQaWVjZUltYWdlKEdyYXBoaWNzQ29udGV4dCog
Z3JhcGhpY3NDb250ZXh0LAogICAgIFJlbmRlclZpZXcqIHJlbmRlclZpZXcgPSB2aWV3KCk7CiAK
ICAgICBmbG9hdCBpbWFnZVNjYWxlRmFjdG9yID0gc3R5bGVJbWFnZS0+aW1hZ2VTY2FsZUZhY3Rv
cigpOwotICAgIGludCB0b3BTbGljZSA9IG1pbjxpbnQ+KGltYWdlSGVpZ2h0LCB2YWx1ZUZvckxl
bmd0aChuaW5lUGllY2VJbWFnZS5pbWFnZVNsaWNlcygpLnRvcCgpLCBpbWFnZUhlaWdodCwgcmVu
ZGVyVmlldykpICogaW1hZ2VTY2FsZUZhY3RvcjsKLSAgICBpbnQgcmlnaHRTbGljZSA9IG1pbjxp
bnQ+KGltYWdlV2lkdGgsIHZhbHVlRm9yTGVuZ3RoKG5pbmVQaWVjZUltYWdlLmltYWdlU2xpY2Vz
KCkucmlnaHQoKSwgaW1hZ2VXaWR0aCwgcmVuZGVyVmlldykpICogaW1hZ2VTY2FsZUZhY3RvcjsK
LSAgICBpbnQgYm90dG9tU2xpY2UgPSBtaW48aW50PihpbWFnZUhlaWdodCwgdmFsdWVGb3JMZW5n
dGgobmluZVBpZWNlSW1hZ2UuaW1hZ2VTbGljZXMoKS5ib3R0b20oKSwgaW1hZ2VIZWlnaHQsIHJl
bmRlclZpZXcpKSAqIGltYWdlU2NhbGVGYWN0b3I7Ci0gICAgaW50IGxlZnRTbGljZSA9IG1pbjxp
bnQ+KGltYWdlV2lkdGgsIHZhbHVlRm9yTGVuZ3RoKG5pbmVQaWVjZUltYWdlLmltYWdlU2xpY2Vz
KCkubGVmdCgpLCBpbWFnZVdpZHRoLCByZW5kZXJWaWV3KSkgKiBpbWFnZVNjYWxlRmFjdG9yOwor
ICAgIGludCB0b3BTbGljZSA9IG1pbjxpbnQ+KGltYWdlSGVpZ2h0LCB2YWx1ZUZvckxlbmd0aChu
aW5lUGllY2VJbWFnZS5pbWFnZVNsaWNlcygpLnRvcCgpLCBpbWFnZUhlaWdodCkpICogaW1hZ2VT
Y2FsZUZhY3RvcjsKKyAgICBpbnQgcmlnaHRTbGljZSA9IG1pbjxpbnQ+KGltYWdlV2lkdGgsIHZh
bHVlRm9yTGVuZ3RoKG5pbmVQaWVjZUltYWdlLmltYWdlU2xpY2VzKCkucmlnaHQoKSwgaW1hZ2VX
aWR0aCkpICogaW1hZ2VTY2FsZUZhY3RvcjsKKyAgICBpbnQgYm90dG9tU2xpY2UgPSBtaW48aW50
PihpbWFnZUhlaWdodCwgdmFsdWVGb3JMZW5ndGgobmluZVBpZWNlSW1hZ2UuaW1hZ2VTbGljZXMo
KS5ib3R0b20oKSwgaW1hZ2VIZWlnaHQpKSAqIGltYWdlU2NhbGVGYWN0b3I7CisgICAgaW50IGxl
ZnRTbGljZSA9IG1pbjxpbnQ+KGltYWdlV2lkdGgsIHZhbHVlRm9yTGVuZ3RoKG5pbmVQaWVjZUlt
YWdlLmltYWdlU2xpY2VzKCkubGVmdCgpLCBpbWFnZVdpZHRoKSkgKiBpbWFnZVNjYWxlRmFjdG9y
OwogCiAgICAgRU5pbmVQaWVjZUltYWdlUnVsZSBoUnVsZSA9IG5pbmVQaWVjZUltYWdlLmhvcml6
b250YWxSdWxlKCk7CiAgICAgRU5pbmVQaWVjZUltYWdlUnVsZSB2UnVsZSA9IG5pbmVQaWVjZUlt
YWdlLnZlcnRpY2FsUnVsZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckZsZXhpYmxlQm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJG
bGV4aWJsZUJveC5jcHAKaW5kZXggYjkwYTNmZDVlZmRmZWE2N2UzOWE0MmVjNTRmMDFjMWU4N2Uw
YjcwZS4uZmU4MDMyODQ2Y2FlNmZkZGI3NDkxMmI3ZTYxZDNiNTcyN2E2Yjg2MCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guY3BwCkBAIC01MjIsNyAr
NTIyLDcgQEAgTGF5b3V0VW5pdCBSZW5kZXJGbGV4aWJsZUJveDo6Y29tcHV0ZU1haW5BeGlzRXh0
ZW50Rm9yQ2hpbGQoUmVuZGVyQm94KiBjaGlsZCwgU2kKICAgICAvLyB0byBmaWd1cmUgb3V0IHRo
ZSBsb2dpY2FsIGhlaWdodC93aWR0aC4KICAgICBpZiAoaXNDb2x1bW5GbG93KCkpCiAgICAgICAg
IHJldHVybiBjaGlsZC0+Y29tcHV0ZUNvbnRlbnRMb2dpY2FsSGVpZ2h0KHNpemVUeXBlLCBzaXpl
KTsKLSAgICByZXR1cm4gY2hpbGQtPmFkanVzdENvbnRlbnRCb3hMb2dpY2FsV2lkdGhGb3JCb3hT
aXppbmcodmFsdWVGb3JMZW5ndGgoc2l6ZSwgY29udGVudExvZ2ljYWxXaWR0aCgpLCB2aWV3KCkp
KTsKKyAgICByZXR1cm4gY2hpbGQtPmFkanVzdENvbnRlbnRCb3hMb2dpY2FsV2lkdGhGb3JCb3hT
aXppbmcodmFsdWVGb3JMZW5ndGgoc2l6ZSwgY29udGVudExvZ2ljYWxXaWR0aCgpKSk7CiB9CiAK
IFdyaXRpbmdNb2RlIFJlbmRlckZsZXhpYmxlQm94Ojp0cmFuc2Zvcm1lZFdyaXRpbmdNb2RlKCkg
Y29uc3QKQEAgLTg2NywxNyArODY3LDE2IEBAIExheW91dFVuaXQgUmVuZGVyRmxleGlibGVCb3g6
Om1hcmdpbkJveEFzY2VudEZvckNoaWxkKFJlbmRlckJveCogY2hpbGQpCiAgICAgcmV0dXJuIGFz
Y2VudCArIGZsb3dBd2FyZU1hcmdpbkJlZm9yZUZvckNoaWxkKGNoaWxkKTsKIH0KIAotTGF5b3V0
VW5pdCBSZW5kZXJGbGV4aWJsZUJveDo6Y29tcHV0ZUNoaWxkTWFyZ2luVmFsdWUoTGVuZ3RoIG1h
cmdpbiwgUmVuZGVyVmlldyogdmlldykKK0xheW91dFVuaXQgUmVuZGVyRmxleGlibGVCb3g6OmNv
bXB1dGVDaGlsZE1hcmdpblZhbHVlKExlbmd0aCBtYXJnaW4pCiB7CiAgICAgLy8gV2hlbiByZXNv
bHZpbmcgdGhlIG1hcmdpbnMsIHdlIHVzZSB0aGUgY29udGVudCBzaXplIGZvciByZXNvbHZpbmcg
cGVyY2VudCBhbmQgY2FsYyAoZm9yIHBlcmNlbnRzIGluIGNhbGMgZXhwcmVzc2lvbnMpIG1hcmdp
bnMuCiAgICAgLy8gRm9ydHVuYXRlbHksIHBlcmNlbnQgbWFyZ2lucyBhcmUgYWx3YXlzIGNvbXB1
dGVkIHdpdGggcmVzcGVjdCB0byB0aGUgYmxvY2sncyB3aWR0aCwgZXZlbiBmb3IgbWFyZ2luLXRv
cCBhbmQgbWFyZ2luLWJvdHRvbS4KICAgICBMYXlvdXRVbml0IGF2YWlsYWJsZVNpemUgPSBjb250
ZW50TG9naWNhbFdpZHRoKCk7Ci0gICAgcmV0dXJuIG1pbmltdW1WYWx1ZUZvckxlbmd0aChtYXJn
aW4sIGF2YWlsYWJsZVNpemUsIHZpZXcpOworICAgIHJldHVybiBtaW5pbXVtVmFsdWVGb3JMZW5n
dGgobWFyZ2luLCBhdmFpbGFibGVTaXplKTsKIH0KIAogdm9pZCBSZW5kZXJGbGV4aWJsZUJveDo6
Y29tcHV0ZU1haW5BeGlzUHJlZmVycmVkU2l6ZXMoT3JkZXJIYXNoU2V0JiBvcmRlclZhbHVlcykK
IHsKLSAgICBSZW5kZXJWaWV3KiByZW5kZXJWaWV3ID0gdmlldygpOwogICAgIGZvciAoUmVuZGVy
Qm94KiBjaGlsZCA9IGZpcnN0Q2hpbGRCb3goKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5leHRT
aWJsaW5nQm94KCkpIHsKICAgICAgICAgb3JkZXJWYWx1ZXMuYWRkKGNoaWxkLT5zdHlsZSgpLT5v
cmRlcigpKTsKIApAQCAtODk2LDExICs4OTUsMTEgQEAgdm9pZCBSZW5kZXJGbGV4aWJsZUJveDo6
Y29tcHV0ZU1haW5BeGlzUHJlZmVycmVkU2l6ZXMoT3JkZXJIYXNoU2V0JiBvcmRlclZhbHVlcykK
ICAgICAgICAgLy8gQmVmb3JlIHJ1bm5pbmcgdGhlIGZsZXggYWxnb3JpdGhtLCAnYXV0bycgaGFz
IGEgbWFyZ2luIG9mIDAuCiAgICAgICAgIC8vIEFsc28sIGlmIHdlJ3JlIG5vdCBhdXRvIHNpemlu
Zywgd2UgZG9uJ3QgZG8gYSBsYXlvdXQgdGhhdCBjb21wdXRlcyB0aGUgc3RhcnQvZW5kIG1hcmdp
bnMuCiAgICAgICAgIGlmIChpc0hvcml6b250YWxGbG93KCkpIHsKLSAgICAgICAgICAgIGNoaWxk
LT5zZXRNYXJnaW5MZWZ0KGNvbXB1dGVDaGlsZE1hcmdpblZhbHVlKGNoaWxkLT5zdHlsZSgpLT5t
YXJnaW5MZWZ0KCksIHJlbmRlclZpZXcpKTsKLSAgICAgICAgICAgIGNoaWxkLT5zZXRNYXJnaW5S
aWdodChjb21wdXRlQ2hpbGRNYXJnaW5WYWx1ZShjaGlsZC0+c3R5bGUoKS0+bWFyZ2luUmlnaHQo
KSwgcmVuZGVyVmlldykpOworICAgICAgICAgICAgY2hpbGQtPnNldE1hcmdpbkxlZnQoY29tcHV0
ZUNoaWxkTWFyZ2luVmFsdWUoY2hpbGQtPnN0eWxlKCktPm1hcmdpbkxlZnQoKSkpOworICAgICAg
ICAgICAgY2hpbGQtPnNldE1hcmdpblJpZ2h0KGNvbXB1dGVDaGlsZE1hcmdpblZhbHVlKGNoaWxk
LT5zdHlsZSgpLT5tYXJnaW5SaWdodCgpKSk7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAg
ICBjaGlsZC0+c2V0TWFyZ2luVG9wKGNvbXB1dGVDaGlsZE1hcmdpblZhbHVlKGNoaWxkLT5zdHls
ZSgpLT5tYXJnaW5Ub3AoKSwgcmVuZGVyVmlldykpOwotICAgICAgICAgICAgY2hpbGQtPnNldE1h
cmdpbkJvdHRvbShjb21wdXRlQ2hpbGRNYXJnaW5WYWx1ZShjaGlsZC0+c3R5bGUoKS0+bWFyZ2lu
Qm90dG9tKCksIHJlbmRlclZpZXcpKTsKKyAgICAgICAgICAgIGNoaWxkLT5zZXRNYXJnaW5Ub3Ao
Y29tcHV0ZUNoaWxkTWFyZ2luVmFsdWUoY2hpbGQtPnN0eWxlKCktPm1hcmdpblRvcCgpKSk7Cisg
ICAgICAgICAgICBjaGlsZC0+c2V0TWFyZ2luQm90dG9tKGNvbXB1dGVDaGlsZE1hcmdpblZhbHVl
KGNoaWxkLT5zdHlsZSgpLT5tYXJnaW5Cb3R0b20oKSkpOwogICAgICAgICB9CiAgICAgfQogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guaAppbmRleCBjYTdk
ZmMxODM1MTA4ZTk5ODdlYWUyNzhmZTFkMTk1NGI1YzEzZTJhLi5mNTgzMjk4MGQ5YWU2YjJhZGE1
NmQ2ZjhjNmRjNjVkNTk3NGQ4YjQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyRmxleGlibGVCb3guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyRmxleGlibGVCb3guaApAQCAtMTUyLDcgKzE1Miw3IEBAIHByaXZhdGU6CiAgICAgTGF5b3V0
VW5pdCBhdmFpbGFibGVBbGlnbm1lbnRTcGFjZUZvckNoaWxkKExheW91dFVuaXQgbGluZUNyb3Nz
QXhpc0V4dGVudCwgUmVuZGVyQm94Kik7CiAgICAgTGF5b3V0VW5pdCBtYXJnaW5Cb3hBc2NlbnRG
b3JDaGlsZChSZW5kZXJCb3gqKTsKIAotICAgIExheW91dFVuaXQgY29tcHV0ZUNoaWxkTWFyZ2lu
VmFsdWUoTGVuZ3RoIG1hcmdpbiwgUmVuZGVyVmlldyopOworICAgIExheW91dFVuaXQgY29tcHV0
ZUNoaWxkTWFyZ2luVmFsdWUoTGVuZ3RoIG1hcmdpbik7CiAgICAgdm9pZCBjb21wdXRlTWFpbkF4
aXNQcmVmZXJyZWRTaXplcyhPcmRlckhhc2hTZXQmKTsKICAgICBMYXlvdXRVbml0IGFkanVzdENo
aWxkU2l6ZUZvck1pbkFuZE1heChSZW5kZXJCb3gqLCBMYXlvdXRVbml0IGNoaWxkU2l6ZSk7CiAg
ICAgYm9vbCBjb21wdXRlTmV4dEZsZXhMaW5lKE9yZGVyZWRGbGV4SXRlbUxpc3QmIG9yZGVyZWRD
aGlsZHJlbiwgTGF5b3V0VW5pdCYgcHJlZmVycmVkTWFpbkF4aXNFeHRlbnQsIGRvdWJsZSYgdG90
YWxGbGV4R3JvdywgZG91YmxlJiB0b3RhbFdlaWdodGVkRmxleFNocmluaywgTGF5b3V0VW5pdCYg
bWluTWF4QXBwbGllZE1haW5BeGlzRXh0ZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJHcmlkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJHcmlkLmNwcAppbmRleCBhYmY2ZGMxMjRkYmM4ZTM0Y2FmNGRkZGNhYjI3NTdiYWUyMjQzZmI2
Li4yNjZhZjc0YmZhZmMzMzFkNzc1MTZmNGQ3ZjJhYjdlZWU5OTQwMmQyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuY3BwCkBAIC0zMTMsNyArMzEzLDcgQEAgTGF5b3V0VW5p
dCBSZW5kZXJHcmlkOjpjb21wdXRlVXNlZEJyZWFkdGhPZlNwZWNpZmllZExlbmd0aChUcmFja1Np
emluZ0RpcmVjdGlvbgogewogICAgIC8vIEZJWE1FOiBXZSBzdGlsbCBuZWVkIHRvIHN1cHBvcnQg
Y2FsYygpIGhlcmUgKGh0dHBzOi8vd2Via2l0Lm9yZy9iLzEwMzc2MSkuCiAgICAgQVNTRVJUKHRy
YWNrTGVuZ3RoLmlzRml4ZWQoKSB8fCB0cmFja0xlbmd0aC5pc1BlcmNlbnQoKSB8fCB0cmFja0xl
bmd0aC5pc1ZpZXdwb3J0UGVyY2VudGFnZSgpKTsKLSAgICByZXR1cm4gdmFsdWVGb3JMZW5ndGgo
dHJhY2tMZW5ndGgsIGRpcmVjdGlvbiA9PSBGb3JDb2x1bW5zID8gbG9naWNhbFdpZHRoKCkgOiBj
b21wdXRlQ29udGVudExvZ2ljYWxIZWlnaHQoTWFpbk9yUHJlZmVycmVkU2l6ZSwgc3R5bGUoKS0+
bG9naWNhbEhlaWdodCgpKSwgdmlldygpKTsKKyAgICByZXR1cm4gdmFsdWVGb3JMZW5ndGgodHJh
Y2tMZW5ndGgsIGRpcmVjdGlvbiA9PSBGb3JDb2x1bW5zID8gbG9naWNhbFdpZHRoKCkgOiBjb21w
dXRlQ29udGVudExvZ2ljYWxIZWlnaHQoTWFpbk9yUHJlZmVycmVkU2l6ZSwgc3R5bGUoKS0+bG9n
aWNhbEhlaWdodCgpKSk7CiB9CiAKIGNvbnN0IEdyaWRUcmFja1NpemUmIFJlbmRlckdyaWQ6Omdy
aWRUcmFja1NpemUoVHJhY2tTaXppbmdEaXJlY3Rpb24gZGlyZWN0aW9uLCBzaXplX3QgaSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHAKaW5kZXggNjc4ODAwNzg1OGNj
YzZmOTNiNzU2NmZlZjQ2ZTliMGYwNjkwMDQ2NC4uNDk3ZDc1Y2JhZWEyMjk3ZDE1NjBiMGFmMjRk
MjRiZGJkYWE1NzIyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
cklubGluZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5j
cHAKQEAgLTY4OCw5ICs2ODgsOSBAQCBzdGF0aWMgTGF5b3V0VW5pdCBjb21wdXRlTWFyZ2luKGNv
bnN0IFJlbmRlcklubGluZSogcmVuZGVyZXIsIGNvbnN0IExlbmd0aCYgbWFyZwogICAgIGlmICht
YXJnaW4uaXNGaXhlZCgpKQogICAgICAgICByZXR1cm4gbWFyZ2luLnZhbHVlKCk7CiAgICAgaWYg
KG1hcmdpbi5pc1BlcmNlbnQoKSkKLSAgICAgICAgcmV0dXJuIG1pbmltdW1WYWx1ZUZvckxlbmd0
aChtYXJnaW4sIG1heDxMYXlvdXRVbml0PigwLCByZW5kZXJlci0+Y29udGFpbmluZ0Jsb2NrKCkt
PmF2YWlsYWJsZUxvZ2ljYWxXaWR0aCgpKSk7CisgICAgICAgIHJldHVybiByZW5kZXJlci0+bWlu
aW11bVZhbHVlRm9yTGVuZ3RoKG1hcmdpbiwgbWF4PExheW91dFVuaXQ+KDAsIHJlbmRlcmVyLT5j
b250YWluaW5nQmxvY2soKS0+YXZhaWxhYmxlTG9naWNhbFdpZHRoKCkpKTsKICAgICBpZiAobWFy
Z2luLmlzVmlld3BvcnRQZXJjZW50YWdlKCkpCi0gICAgICAgIHJldHVybiB2YWx1ZUZvckxlbmd0
aChtYXJnaW4sIDAsIHJlbmRlcmVyLT52aWV3KCkpOworICAgICAgICByZXR1cm4gcmVuZGVyZXIt
PnZhbHVlRm9yTGVuZ3RoKG1hcmdpbiwgMCk7CiAgICAgcmV0dXJuIDA7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNYXJxdWVlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNYXJxdWVlLmNwcAppbmRleCA4OWIwOTNmNWE0ODQwMTMw
NTZiZGJjMmIyMTNiMGU5MGRhNDY4MDBiLi40YTViNDYzYWY3OTVlZjEwZmMxMWU0YzVmZGZjZTRh
N2Q3MjJjY2M5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWFy
cXVlZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1hcnF1ZWUuY3Bw
CkBAIC0yODUsNyArMjg1LDcgQEAgdm9pZCBSZW5kZXJNYXJxdWVlOjp0aW1lckZpcmVkKFRpbWVy
PFJlbmRlck1hcnF1ZWU+KikKICAgICAgICAgfQogICAgICAgICBib29sIHBvc2l0aXZlID0gcmFu
Z2UgPiAwOwogICAgICAgICBpbnQgY2xpZW50U2l6ZSA9IChpc0hvcml6b250YWwoKSA/IG1fbGF5
ZXItPnJlbmRlckJveCgpLT5jbGllbnRXaWR0aCgpIDogbV9sYXllci0+cmVuZGVyQm94KCktPmNs
aWVudEhlaWdodCgpKTsKLSAgICAgICAgaW50IGluY3JlbWVudCA9IGFicyhpbnRWYWx1ZUZvckxl
bmd0aChtX2xheWVyLT5yZW5kZXJlcigpLT5zdHlsZSgpLT5tYXJxdWVlSW5jcmVtZW50KCksIGNs
aWVudFNpemUpKTsKKyAgICAgICAgaW50IGluY3JlbWVudCA9IGFicyhtX2xheWVyLT5yZW5kZXJl
cigpLT5pbnRWYWx1ZUZvckxlbmd0aChtX2xheWVyLT5yZW5kZXJlcigpLT5zdHlsZSgpLT5tYXJx
dWVlSW5jcmVtZW50KCksIGNsaWVudFNpemUpKTsKICAgICAgICAgaW50IGN1cnJlbnRQb3MgPSAo
aXNIb3Jpem9udGFsKCkgPyBtX2xheWVyLT5zY3JvbGxYT2Zmc2V0KCkgOiBtX2xheWVyLT5zY3Jv
bGxZT2Zmc2V0KCkpOwogICAgICAgICBuZXdQb3MgPSAgY3VycmVudFBvcyArIChhZGRJbmNyZW1l
bnQgPyBpbmNyZW1lbnQgOiAtaW5jcmVtZW50KTsKICAgICAgICAgaWYgKHBvc2l0aXZlKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lbnVMaXN0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZW51TGlzdC5jcHAKaW5kZXggNTQ4Y2U4NTAw
Y2U1ZTM0ZjdhOWU2ODFiMjRhNTM1N2ZkMmY3ZmI4Yi4uYWM0ODM1YzQxZWIxYTE4ZmZmNDYyNWNj
NmEwYjI2NTA2NjU4MzNjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlck1lbnVMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVu
dUxpc3QuY3BwCkBAIC0xNzUsNyArMTc1LDcgQEAgdm9pZCBSZW5kZXJNZW51TGlzdDo6dXBkYXRl
T3B0aW9uc1dpZHRoKCkKICAgICAgICAgICAgIC8vIEFkZCBpbiB0aGUgb3B0aW9uJ3MgdGV4dCBp
bmRlbnQuICBXZSBjYW4ndCBjYWxjdWxhdGUgcGVyY2VudGFnZSB2YWx1ZXMgZm9yIG5vdy4KICAg
ICAgICAgICAgIGZsb2F0IG9wdGlvbldpZHRoID0gMDsKICAgICAgICAgICAgIGlmIChSZW5kZXJT
dHlsZSogb3B0aW9uU3R5bGUgPSBlbGVtZW50LT5yZW5kZXJTdHlsZSgpKQotICAgICAgICAgICAg
ICAgIG9wdGlvbldpZHRoICs9IG1pbmltdW1WYWx1ZUZvckxlbmd0aChvcHRpb25TdHlsZS0+dGV4
dEluZGVudCgpLCAwLCB2aWV3KCkpOworICAgICAgICAgICAgICAgIG9wdGlvbldpZHRoICs9IG1p
bmltdW1WYWx1ZUZvckxlbmd0aChvcHRpb25TdHlsZS0+dGV4dEluZGVudCgpLCAwKTsKICAgICAg
ICAgICAgIGlmICghdGV4dC5pc0VtcHR5KCkpCiAgICAgICAgICAgICAgICAgb3B0aW9uV2lkdGgg
Kz0gc3R5bGUoKS0+Zm9udCgpLndpZHRoKHRleHQpOwogICAgICAgICAgICAgbWF4T3B0aW9uV2lk
dGggPSBtYXgobWF4T3B0aW9uV2lkdGgsIG9wdGlvbldpZHRoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKaW5kZXggYjM5ZDU4ZDAxOGE0NDJlZmFhZmIxOGZlYmJk
NzZhMDFkYmVhODQxMC4uNDY4ODFkMTcwMDRkOGE4YzQxZmZlNWU1ZmUxNjA5YTFjMmYwNjJlMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKQEAgLTQwLDcgKzQw
LDcgQEAKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJIVE1MRWxlbWVu
dC5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgotI2luY2x1ZGUgIkhpdFRlc3RSZXN1bHQuaCIK
KyNpbmNsdWRlICJMZW5ndGhGdW5jdGlvbnMuaCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVk
ZSAiUmVuZGVyQXJlbmEuaCIKICNpbmNsdWRlICJSZW5kZXJDb3VudGVyLmgiCkBAIC0xNDc1LDcg
KzE0NzUsNyBAQCBib29sIFJlbmRlck9iamVjdDo6cmVwYWludEFmdGVyTGF5b3V0SWZOZWVkZWQo
Y29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogcmVwYQogICAgICAgICBpbnQgYm9yZGVyUmln
aHQgPSBpc0JveCgpID8gdG9SZW5kZXJCb3godGhpcyktPmJvcmRlclJpZ2h0KCkgOiAwOwogICAg
ICAgICBMYXlvdXRVbml0IGJveFdpZHRoID0gaXNCb3goKSA/IHRvUmVuZGVyQm94KHRoaXMpLT53
aWR0aCgpIDogTGF5b3V0VW5pdCgpOwogICAgICAgICBMYXlvdXRVbml0IG1pbkluc2V0UmlnaHRT
aGFkb3dFeHRlbnQgPSBtaW48TGF5b3V0VW5pdD4oLWluc2V0U2hhZG93RXh0ZW50LnJpZ2h0KCks
IG1pbjxMYXlvdXRVbml0PihuZXdCb3VuZHMud2lkdGgoKSwgb2xkQm91bmRzLndpZHRoKCkpKTsK
LSAgICAgICAgTGF5b3V0VW5pdCBib3JkZXJXaWR0aCA9IG1heDxMYXlvdXRVbml0Pihib3JkZXJS
aWdodCwgbWF4PExheW91dFVuaXQ+KHZhbHVlRm9yTGVuZ3RoKHN0eWxlKCktPmJvcmRlclRvcFJp
Z2h0UmFkaXVzKCkud2lkdGgoKSwgYm94V2lkdGgsIHYpLCB2YWx1ZUZvckxlbmd0aChzdHlsZSgp
LT5ib3JkZXJCb3R0b21SaWdodFJhZGl1cygpLndpZHRoKCksIGJveFdpZHRoLCB2KSkpOworICAg
ICAgICBMYXlvdXRVbml0IGJvcmRlcldpZHRoID0gbWF4PExheW91dFVuaXQ+KGJvcmRlclJpZ2h0
LCBtYXg8TGF5b3V0VW5pdD4odmFsdWVGb3JMZW5ndGgoc3R5bGUoKS0+Ym9yZGVyVG9wUmlnaHRS
YWRpdXMoKS53aWR0aCgpLCBib3hXaWR0aCksIHZhbHVlRm9yTGVuZ3RoKHN0eWxlKCktPmJvcmRl
ckJvdHRvbVJpZ2h0UmFkaXVzKCkud2lkdGgoKSwgYm94V2lkdGgpKSk7CiAgICAgICAgIExheW91
dFVuaXQgZGVjb3JhdGlvbnNXaWR0aCA9IG1heDxMYXlvdXRVbml0Pigtb3V0bGluZVN0eWxlLT5v
dXRsaW5lT2Zmc2V0KCksIGJvcmRlcldpZHRoICsgbWluSW5zZXRSaWdodFNoYWRvd0V4dGVudCkg
KyBtYXg8TGF5b3V0VW5pdD4ob3V0bGluZVdpZHRoLCBzaGFkb3dSaWdodCk7CiAgICAgICAgIExh
eW91dFJlY3QgcmlnaHRSZWN0KG5ld091dGxpbmVCb3gueCgpICsgbWluKG5ld091dGxpbmVCb3gu
d2lkdGgoKSwgb2xkT3V0bGluZUJveC53aWR0aCgpKSAtIGRlY29yYXRpb25zV2lkdGgsCiAgICAg
ICAgICAgICBuZXdPdXRsaW5lQm94LnkoKSwKQEAgLTE0OTUsNyArMTQ5NSw3IEBAIGJvb2wgUmVu
ZGVyT2JqZWN0OjpyZXBhaW50QWZ0ZXJMYXlvdXRJZk5lZWRlZChjb25zdCBSZW5kZXJMYXllck1v
ZGVsT2JqZWN0KiByZXBhCiAgICAgICAgIGludCBib3JkZXJCb3R0b20gPSBpc0JveCgpID8gdG9S
ZW5kZXJCb3godGhpcyktPmJvcmRlckJvdHRvbSgpIDogMDsKICAgICAgICAgTGF5b3V0VW5pdCBi
b3hIZWlnaHQgPSBpc0JveCgpID8gdG9SZW5kZXJCb3godGhpcyktPmhlaWdodCgpIDogTGF5b3V0
VW5pdCgpOwogICAgICAgICBMYXlvdXRVbml0IG1pbkluc2V0Qm90dG9tU2hhZG93RXh0ZW50ID0g
bWluPExheW91dFVuaXQ+KC1pbnNldFNoYWRvd0V4dGVudC5ib3R0b20oKSwgbWluPExheW91dFVu
aXQ+KG5ld0JvdW5kcy5oZWlnaHQoKSwgb2xkQm91bmRzLmhlaWdodCgpKSk7Ci0gICAgICAgIExh
eW91dFVuaXQgYm9yZGVySGVpZ2h0ID0gbWF4PExheW91dFVuaXQ+KGJvcmRlckJvdHRvbSwgbWF4
PExheW91dFVuaXQ+KHZhbHVlRm9yTGVuZ3RoKHN0eWxlKCktPmJvcmRlckJvdHRvbUxlZnRSYWRp
dXMoKS5oZWlnaHQoKSwgYm94SGVpZ2h0LCB2KSwgdmFsdWVGb3JMZW5ndGgoc3R5bGUoKS0+Ym9y
ZGVyQm90dG9tUmlnaHRSYWRpdXMoKS5oZWlnaHQoKSwgYm94SGVpZ2h0LCB2KSkpOworICAgICAg
ICBMYXlvdXRVbml0IGJvcmRlckhlaWdodCA9IG1heDxMYXlvdXRVbml0Pihib3JkZXJCb3R0b20s
IG1heDxMYXlvdXRVbml0Pih2YWx1ZUZvckxlbmd0aChzdHlsZSgpLT5ib3JkZXJCb3R0b21MZWZ0
UmFkaXVzKCkuaGVpZ2h0KCksIGJveEhlaWdodCksIHZhbHVlRm9yTGVuZ3RoKHN0eWxlKCktPmJv
cmRlckJvdHRvbVJpZ2h0UmFkaXVzKCkuaGVpZ2h0KCksIGJveEhlaWdodCkpKTsKICAgICAgICAg
TGF5b3V0VW5pdCBkZWNvcmF0aW9uc0hlaWdodCA9IG1heDxMYXlvdXRVbml0Pigtb3V0bGluZVN0
eWxlLT5vdXRsaW5lT2Zmc2V0KCksIGJvcmRlckhlaWdodCArIG1pbkluc2V0Qm90dG9tU2hhZG93
RXh0ZW50KSArIG1heDxMYXlvdXRVbml0PihvdXRsaW5lV2lkdGgsIHNoYWRvd0JvdHRvbSk7CiAg
ICAgICAgIExheW91dFJlY3QgYm90dG9tUmVjdChuZXdPdXRsaW5lQm94LngoKSwKICAgICAgICAg
ICAgIG1pbihuZXdPdXRsaW5lQm94Lm1heFkoKSwgb2xkT3V0bGluZUJveC5tYXhZKCkpIC0gZGVj
b3JhdGlvbnNIZWlnaHQsCkBAIC0zMTM3LDYgKzMxMzcsMzYgQEAgdm9pZCBSZW5kZXJPYmplY3Q6
OnJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNv
bnN0CiAgICAgaW5mby5zZXRDdXN0b21BbGxvY2F0aW9uKHRydWUpOwogfQogCitpbnQgUmVuZGVy
T2JqZWN0OjptaW5pbXVtSW50VmFsdWVGb3JMZW5ndGgoY29uc3QgTGVuZ3RoJiBsZW5ndGgsIExh
eW91dFVuaXQgbWF4aW11bVZhbHVlLCBib29sIHJvdW5kUGVyY2VudGFnZXMpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIFdlYkNvcmU6Om1pbmltdW1JbnRWYWx1ZUZvckxlbmd0aChsZW5ndGgsIG1heGlt
dW1WYWx1ZSwgdmlldygpLCByb3VuZFBlcmNlbnRhZ2VzKTsKK30KKworaW50IFJlbmRlck9iamVj
dDo6aW50VmFsdWVGb3JMZW5ndGgoY29uc3QgTGVuZ3RoJiBsZW5ndGgsIExheW91dFVuaXQgbWF4
aW11bVZhbHVlLCBib29sIHJvdW5kUGVyY2VudGFnZXMpIGNvbnN0Cit7CisgICAgcmV0dXJuIFdl
YkNvcmU6OmludFZhbHVlRm9yTGVuZ3RoKGxlbmd0aCwgbWF4aW11bVZhbHVlLCB2aWV3KCksIHJv
dW5kUGVyY2VudGFnZXMpOworfQorCitMYXlvdXRVbml0IFJlbmRlck9iamVjdDo6bWluaW11bVZh
bHVlRm9yTGVuZ3RoKGNvbnN0IExlbmd0aCYgbGVuZ3RoLCBMYXlvdXRVbml0IG1heGltdW1WYWx1
ZSwgYm9vbCByb3VuZFBlcmNlbnRhZ2VzKSBjb25zdAoreworICAgIHJldHVybiBXZWJDb3JlOjpt
aW5pbXVtVmFsdWVGb3JMZW5ndGgobGVuZ3RoLCBtYXhpbXVtVmFsdWUsIHZpZXcoKSwgcm91bmRQ
ZXJjZW50YWdlcyk7Cit9CisKK0xheW91dFVuaXQgUmVuZGVyT2JqZWN0Ojp2YWx1ZUZvckxlbmd0
aChjb25zdCBMZW5ndGgmIGxlbmd0aCwgTGF5b3V0VW5pdCBtYXhpbXVtVmFsdWUsIGJvb2wgcm91
bmRQZXJjZW50YWdlcykgY29uc3QKK3sKKyAgICByZXR1cm4gV2ViQ29yZTo6dmFsdWVGb3JMZW5n
dGgobGVuZ3RoLCBtYXhpbXVtVmFsdWUsIHZpZXcoKSwgcm91bmRQZXJjZW50YWdlcyk7Cit9CisK
K2Zsb2F0IFJlbmRlck9iamVjdDo6ZmxvYXRWYWx1ZUZvckxlbmd0aChjb25zdCBMZW5ndGgmIGxl
bmd0aCwgTGF5b3V0VW5pdCBtYXhpbXVtVmFsdWUpIGNvbnN0Cit7CisgICAgcmV0dXJuIFdlYkNv
cmU6OmZsb2F0VmFsdWVGb3JMZW5ndGgobGVuZ3RoLCBtYXhpbXVtVmFsdWUsIHZpZXcoKSk7Cit9
CisKK2Zsb2F0IFJlbmRlck9iamVjdDo6ZmxvYXRWYWx1ZUZvckxlbmd0aChjb25zdCBMZW5ndGgm
IGxlbmd0aCwgZmxvYXQgbWF4aW11bVZhbHVlKSBjb25zdAoreworICAgIHJldHVybiBXZWJDb3Jl
OjpmbG9hdFZhbHVlRm9yTGVuZ3RoKGxlbmd0aCwgbWF4aW11bVZhbHVlLCB2aWV3KCkpOworfQor
CiAjaWYgRU5BQkxFKFNWRykKIAogUmVuZGVyU1ZHUmVzb3VyY2VDb250YWluZXIqIFJlbmRlck9i
amVjdDo6dG9SZW5kZXJTVkdSZXNvdXJjZUNvbnRhaW5lcigpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyT2JqZWN0LmgKaW5kZXggMjMzNWM1ZTAwODc2OWFlZDQyODg5ZDZkYWI3MjY3ODk0
ZDk3OTgyNC4uODBiOGNkZDc1N2E4ZGFkZjgxZjBlNjliMzc1OTVkMjA4OTdmNTQwMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaApAQCAtMjY3LDYgKzI2NywxMyBAQCBw
dWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgcmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0
SW5mbyopIGNvbnN0OwogCisgICAgaW50IG1pbmltdW1JbnRWYWx1ZUZvckxlbmd0aChjb25zdCBM
ZW5ndGgmLCBMYXlvdXRVbml0IG1heGltdW1WYWx1ZSwgYm9vbCByb3VuZFBlcmNlbnRhZ2VzID0g
ZmFsc2UpIGNvbnN0OworICAgIGludCBpbnRWYWx1ZUZvckxlbmd0aChjb25zdCBMZW5ndGgmLCBM
YXlvdXRVbml0IG1heGltdW1WYWx1ZSwgYm9vbCByb3VuZFBlcmNlbnRhZ2VzID0gZmFsc2UpIGNv
bnN0OworICAgIExheW91dFVuaXQgbWluaW11bVZhbHVlRm9yTGVuZ3RoKGNvbnN0IExlbmd0aCYs
IExheW91dFVuaXQgbWF4aW11bVZhbHVlLCBib29sIHJvdW5kUGVyY2VudGFnZXMgPSBmYWxzZSkg
Y29uc3Q7CisgICAgTGF5b3V0VW5pdCB2YWx1ZUZvckxlbmd0aChjb25zdCBMZW5ndGgmLCBMYXlv
dXRVbml0IG1heGltdW1WYWx1ZSwgYm9vbCByb3VuZFBlcmNlbnRhZ2VzID0gZmFsc2UpIGNvbnN0
OworICAgIGZsb2F0IGZsb2F0VmFsdWVGb3JMZW5ndGgoY29uc3QgTGVuZ3RoJiwgTGF5b3V0VW5p
dCBtYXhpbXVtVmFsdWUpIGNvbnN0OworICAgIGZsb2F0IGZsb2F0VmFsdWVGb3JMZW5ndGgoY29u
c3QgTGVuZ3RoJiwgZmxvYXQgbWF4aW11bVZhbHVlKSBjb25zdDsKKwogcHJvdGVjdGVkOgogICAg
IC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwogICAgIC8vIEhlbHBl
ciBmdW5jdGlvbnMuIERhbmdlcm91cyB0byB1c2UhCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyUGFydC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyU2Nyb2xsYmFyUGFydC5jcHAKaW5kZXggZTE3Yjg1M2U3MTdhMDMwOTZlZWFh
MDRmMWI5NmRlMjM2N2ZhNDg2OS4uYmZjZjQ0MjA5YmI4YjE3NmM4ZjM0MmFiOTkwYjE3Nzk0YTE5
YjEwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJh
clBhcnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXJQ
YXJ0LmNwcApAQCAtMTA4LDggKzEwOCw4IEBAIHZvaWQgUmVuZGVyU2Nyb2xsYmFyUGFydDo6Y29t
cHV0ZVNjcm9sbGJhcldpZHRoKCkKICAgICBzZXRXaWR0aChtYXgobWluV2lkdGgsIG1pbihtYXhX
aWR0aCwgdykpKTsKICAgICAKICAgICAvLyBCdXR0b25zIGFuZCB0cmFjayBwaWVjZXMgY2FuIGFs
bCBoYXZlIG1hcmdpbnMgYWxvbmcgdGhlIGF4aXMgb2YgdGhlIHNjcm9sbGJhci4gCi0gICAgbV9t
YXJnaW5Cb3guc2V0TGVmdChtaW5pbXVtVmFsdWVGb3JMZW5ndGgoc3R5bGUoKS0+bWFyZ2luTGVm
dCgpLCB2aXNpYmxlU2l6ZSwgcmVuZGVyVmlldykpOwotICAgIG1fbWFyZ2luQm94LnNldFJpZ2h0
KG1pbmltdW1WYWx1ZUZvckxlbmd0aChzdHlsZSgpLT5tYXJnaW5SaWdodCgpLCB2aXNpYmxlU2l6
ZSwgcmVuZGVyVmlldykpOworICAgIG1fbWFyZ2luQm94LnNldExlZnQobWluaW11bVZhbHVlRm9y
TGVuZ3RoKHN0eWxlKCktPm1hcmdpbkxlZnQoKSwgdmlzaWJsZVNpemUpKTsKKyAgICBtX21hcmdp
bkJveC5zZXRSaWdodChtaW5pbXVtVmFsdWVGb3JMZW5ndGgoc3R5bGUoKS0+bWFyZ2luUmlnaHQo
KSwgdmlzaWJsZVNpemUpKTsKIH0KIAogdm9pZCBSZW5kZXJTY3JvbGxiYXJQYXJ0Ojpjb21wdXRl
U2Nyb2xsYmFySGVpZ2h0KCkKQEAgLTEyNiw4ICsxMjYsOCBAQCB2b2lkIFJlbmRlclNjcm9sbGJh
clBhcnQ6OmNvbXB1dGVTY3JvbGxiYXJIZWlnaHQoKQogICAgIHNldEhlaWdodChtYXgobWluSGVp
Z2h0LCBtaW4obWF4SGVpZ2h0LCBoKSkpOwogCiAgICAgLy8gQnV0dG9ucyBhbmQgdHJhY2sgcGll
Y2VzIGNhbiBhbGwgaGF2ZSBtYXJnaW5zIGFsb25nIHRoZSBheGlzIG9mIHRoZSBzY3JvbGxiYXIu
IAotICAgIG1fbWFyZ2luQm94LnNldFRvcChtaW5pbXVtVmFsdWVGb3JMZW5ndGgoc3R5bGUoKS0+
bWFyZ2luVG9wKCksIHZpc2libGVTaXplLCByZW5kZXJWaWV3KSk7Ci0gICAgbV9tYXJnaW5Cb3gu
c2V0Qm90dG9tKG1pbmltdW1WYWx1ZUZvckxlbmd0aChzdHlsZSgpLT5tYXJnaW5Cb3R0b20oKSwg
dmlzaWJsZVNpemUsIHJlbmRlclZpZXcpKTsKKyAgICBtX21hcmdpbkJveC5zZXRUb3AobWluaW11
bVZhbHVlRm9yTGVuZ3RoKHN0eWxlKCktPm1hcmdpblRvcCgpLCB2aXNpYmxlU2l6ZSkpOworICAg
IG1fbWFyZ2luQm94LnNldEJvdHRvbShtaW5pbXVtVmFsdWVGb3JMZW5ndGgoc3R5bGUoKS0+bWFy
Z2luQm90dG9tKCksIHZpc2libGVTaXplKSk7CiB9CiAKIHZvaWQgUmVuZGVyU2Nyb2xsYmFyUGFy
dDo6Y29tcHV0ZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUYWJsZS5jcHAKaW5kZXggMzU4NmQ1NDcxNGU5ZTcwNzdmNzE2MjZmMTViMzVhYjQw
MjRlN2M5NC4uNjljZWM2ZWMyZDRmZWY5OWZhZmExZmU2YzE5ODRlYTNhMjVmOTA2OSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGUuY3BwCkBAIC0yNDYsNyArMjQ2LDYgQEAg
dm9pZCBSZW5kZXJUYWJsZTo6dXBkYXRlTG9naWNhbFdpZHRoKCkKICAgICB9CiAKICAgICBSZW5k
ZXJCbG9jayogY2IgPSBjb250YWluaW5nQmxvY2soKTsKLSAgICBSZW5kZXJWaWV3KiByZW5kZXJW
aWV3ID0gdmlldygpOwogCiAgICAgTGF5b3V0VW5pdCBhdmFpbGFibGVMb2dpY2FsV2lkdGggPSBj
b250YWluaW5nQmxvY2tMb2dpY2FsV2lkdGhGb3JDb250ZW50KCk7CiAgICAgYm9vbCBoYXNQZXJw
ZW5kaWN1bGFyQ29udGFpbmluZ0Jsb2NrID0gY2ItPnN0eWxlKCktPmlzSG9yaXpvbnRhbFdyaXRp
bmdNb2RlKCkgIT0gc3R5bGUoKS0+aXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKTsKQEAgLTI1Nyw4
ICsyNTYsOCBAQCB2b2lkIFJlbmRlclRhYmxlOjp1cGRhdGVMb2dpY2FsV2lkdGgoKQogICAgICAg
ICBzZXRMb2dpY2FsV2lkdGgoY29udmVydFN0eWxlTG9naWNhbFdpZHRoVG9Db21wdXRlZFdpZHRo
KHN0eWxlTG9naWNhbFdpZHRoLCBjb250YWluZXJXaWR0aEluSW5saW5lRGlyZWN0aW9uKSk7CiAg
ICAgZWxzZSB7CiAgICAgICAgIC8vIFN1YnRyYWN0IG91dCBhbnkgZml4ZWQgbWFyZ2lucyBmcm9t
IG91ciBhdmFpbGFibGUgd2lkdGggZm9yIGF1dG8gd2lkdGggdGFibGVzLgotICAgICAgICBMYXlv
dXRVbml0IG1hcmdpblN0YXJ0ID0gbWluaW11bVZhbHVlRm9yTGVuZ3RoKHN0eWxlKCktPm1hcmdp
blN0YXJ0KCksIGF2YWlsYWJsZUxvZ2ljYWxXaWR0aCwgcmVuZGVyVmlldyk7Ci0gICAgICAgIExh
eW91dFVuaXQgbWFyZ2luRW5kID0gbWluaW11bVZhbHVlRm9yTGVuZ3RoKHN0eWxlKCktPm1hcmdp
bkVuZCgpLCBhdmFpbGFibGVMb2dpY2FsV2lkdGgsIHJlbmRlclZpZXcpOworICAgICAgICBMYXlv
dXRVbml0IG1hcmdpblN0YXJ0ID0gbWluaW11bVZhbHVlRm9yTGVuZ3RoKHN0eWxlKCktPm1hcmdp
blN0YXJ0KCksIGF2YWlsYWJsZUxvZ2ljYWxXaWR0aCk7CisgICAgICAgIExheW91dFVuaXQgbWFy
Z2luRW5kID0gbWluaW11bVZhbHVlRm9yTGVuZ3RoKHN0eWxlKCktPm1hcmdpbkVuZCgpLCBhdmFp
bGFibGVMb2dpY2FsV2lkdGgpOwogICAgICAgICBMYXlvdXRVbml0IG1hcmdpblRvdGFsID0gbWFy
Z2luU3RhcnQgKyBtYXJnaW5FbmQ7CiAKICAgICAgICAgLy8gU3VidHJhY3Qgb3V0IG91ciBtYXJn
aW5zIHRvIGdldCB0aGUgYXZhaWxhYmxlIGNvbnRlbnQgd2lkdGguCkBAIC0zMDUsOCArMzA0LDgg
QEAgdm9pZCBSZW5kZXJUYWJsZTo6dXBkYXRlTG9naWNhbFdpZHRoKCkKICAgICAgICAgc2V0TWFy
Z2luU3RhcnQobWFyZ2luVmFsdWVzLm1fc3RhcnQpOwogICAgICAgICBzZXRNYXJnaW5FbmQobWFy
Z2luVmFsdWVzLm1fZW5kKTsKICAgICB9IGVsc2UgewotICAgICAgICBzZXRNYXJnaW5TdGFydCht
aW5pbXVtVmFsdWVGb3JMZW5ndGgoc3R5bGUoKS0+bWFyZ2luU3RhcnQoKSwgYXZhaWxhYmxlTG9n
aWNhbFdpZHRoLCByZW5kZXJWaWV3KSk7Ci0gICAgICAgIHNldE1hcmdpbkVuZChtaW5pbXVtVmFs
dWVGb3JMZW5ndGgoc3R5bGUoKS0+bWFyZ2luRW5kKCksIGF2YWlsYWJsZUxvZ2ljYWxXaWR0aCwg
cmVuZGVyVmlldykpOworICAgICAgICBzZXRNYXJnaW5TdGFydChtaW5pbXVtVmFsdWVGb3JMZW5n
dGgoc3R5bGUoKS0+bWFyZ2luU3RhcnQoKSwgYXZhaWxhYmxlTG9naWNhbFdpZHRoKSk7CisgICAg
ICAgIHNldE1hcmdpbkVuZChtaW5pbXVtVmFsdWVGb3JMZW5ndGgoc3R5bGUoKS0+bWFyZ2luRW5k
KCksIGF2YWlsYWJsZUxvZ2ljYWxXaWR0aCkpOwogICAgIH0KIH0KIApAQCAtMzIyLDcgKzMyMSw3
IEBAIExheW91dFVuaXQgUmVuZGVyVGFibGU6OmNvbnZlcnRTdHlsZUxvZ2ljYWxXaWR0aFRvQ29t
cHV0ZWRXaWR0aChjb25zdCBMZW5ndGgmIHN0CiAgICAgaWYgKGlzQ1NTVGFibGUgJiYgc3R5bGVM
b2dpY2FsV2lkdGguaXNTcGVjaWZpZWQoKSAmJiBzdHlsZUxvZ2ljYWxXaWR0aC5pc1Bvc2l0aXZl
KCkgJiYgc3R5bGUoKS0+Ym94U2l6aW5nKCkgPT0gQ09OVEVOVF9CT1gpCiAgICAgICAgIGJvcmRl
cnMgPSBib3JkZXJTdGFydCgpICsgYm9yZGVyRW5kKCkgKyAoY29sbGFwc2VCb3JkZXJzKCkgPyBM
YXlvdXRVbml0KCkgOiBwYWRkaW5nU3RhcnQoKSArIHBhZGRpbmdFbmQoKSk7CiAKLSAgICByZXR1
cm4gbWluaW11bVZhbHVlRm9yTGVuZ3RoKHN0eWxlTG9naWNhbFdpZHRoLCBhdmFpbGFibGVXaWR0
aCwgdmlldygpKSArIGJvcmRlcnM7CisgICAgcmV0dXJuIG1pbmltdW1WYWx1ZUZvckxlbmd0aChz
dHlsZUxvZ2ljYWxXaWR0aCwgYXZhaWxhYmxlV2lkdGgpICsgYm9yZGVyczsKIH0KIAogTGF5b3V0
VW5pdCBSZW5kZXJUYWJsZTo6Y29udmVydFN0eWxlTG9naWNhbEhlaWdodFRvQ29tcHV0ZWRIZWln
aHQoY29uc3QgTGVuZ3RoJiBzdHlsZUxvZ2ljYWxIZWlnaHQpCkBAIC0zNDEsNyArMzQwLDcgQEAg
TGF5b3V0VW5pdCBSZW5kZXJUYWJsZTo6Y29udmVydFN0eWxlTG9naWNhbEhlaWdodFRvQ29tcHV0
ZWRIZWlnaHQoY29uc3QgTGVuZ3RoJgogICAgIH0gZWxzZSBpZiAoc3R5bGVMb2dpY2FsSGVpZ2h0
LmlzUGVyY2VudCgpKQogICAgICAgICBjb21wdXRlZExvZ2ljYWxIZWlnaHQgPSBjb21wdXRlUGVy
Y2VudGFnZUxvZ2ljYWxIZWlnaHQoc3R5bGVMb2dpY2FsSGVpZ2h0KTsKICAgICBlbHNlIGlmIChz
dHlsZUxvZ2ljYWxIZWlnaHQuaXNWaWV3cG9ydFBlcmNlbnRhZ2UoKSkKLSAgICAgICAgY29tcHV0
ZWRMb2dpY2FsSGVpZ2h0ID0gbWluaW11bVZhbHVlRm9yTGVuZ3RoKHN0eWxlTG9naWNhbEhlaWdo
dCwgMCwgdmlldygpKTsKKyAgICAgICAgY29tcHV0ZWRMb2dpY2FsSGVpZ2h0ID0gbWluaW11bVZh
bHVlRm9yTGVuZ3RoKHN0eWxlTG9naWNhbEhlaWdodCwgMCk7CiAgICAgZWxzZQogICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gbWF4PExheW91dFVuaXQ+KDAsIGNvbXB1
dGVkTG9naWNhbEhlaWdodCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGFibGVDZWxsLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVD
ZWxsLmgKaW5kZXggYjFmZjVmYzRkMzk1OWE1ODNkZGI2NzU2ZGYxN2MxZjA3MjA2YzdiYi4uMGNk
MzVjMDkxMTAzZDc0YTE4YjhiZDk0MmYxODFiZjBlNmEwZWEzYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuaApAQCAtOTQsNyArOTQsNyBAQCBwdWJsaWM6CiAg
ICAgewogICAgICAgICAvLyBGSVhNRTogVGhpcyBmdW5jdGlvbiBkb2VzIHRvbyBtdWNoIHdvcmss
IGFuZCBpcyB2ZXJ5IGhvdCBkdXJpbmcgdGFibGUgbGF5b3V0IQogICAgICAgICBpbnQgYWRqdXN0
ZWRMb2dpY2FsSGVpZ2h0ID0gcGl4ZWxTbmFwcGVkTG9naWNhbEhlaWdodCgpIC0gKGludHJpbnNp
Y1BhZGRpbmdCZWZvcmUoKSArIGludHJpbnNpY1BhZGRpbmdBZnRlcigpKTsKLSAgICAgICAgaW50
IHN0eWxlTG9naWNhbEhlaWdodCA9IHZhbHVlRm9yTGVuZ3RoKHN0eWxlKCktPmxvZ2ljYWxIZWln
aHQoKSwgMCwgdmlldygpKTsKKyAgICAgICAgaW50IHN0eWxlTG9naWNhbEhlaWdodCA9IHZhbHVl
Rm9yTGVuZ3RoKHN0eWxlKCktPmxvZ2ljYWxIZWlnaHQoKSwgMCk7CiAgICAgICAgIC8vIEluIHN0
cmljdCBtb2RlLCBib3gtc2l6aW5nOiBjb250ZW50LWJveCBkbyB0aGUgcmlnaHQgdGhpbmcgYW5k
IGFjdHVhbGx5IGFkZCBpbiB0aGUgYm9yZGVyIGFuZCBwYWRkaW5nLgogICAgICAgICAvLyBDYWxs
IGNvbXB1dGVkQ1NTUGFkZGluZyogZGlyZWN0bHkgdG8gYXZvaWQgaW5jbHVkaW5nIGltcGxpY2l0
UGFkZGluZy4KICAgICAgICAgaWYgKCFkb2N1bWVudCgpLT5pblF1aXJrc01vZGUoKSAmJiBzdHls
ZSgpLT5ib3hTaXppbmcoKSAhPSBCT1JERVJfQk9YKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9uLmNwcAppbmRleCA0MTEyZDNmYjI5MjFjYmYzYWVmNTQ1
ODk5ZTc0Yzk4MGMyZjE3OTFlLi45NDViZGU3ZTJhYWJmMmUwNzFjNWMwOGFjNmU1OGQxZGQ4YTAx
ZjA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0
aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9u
LmNwcApAQCAtMjgzLDcgKzI4Myw3IEBAIGludCBSZW5kZXJUYWJsZVNlY3Rpb246OmNhbGNSb3dM
b2dpY2FsSGVpZ2h0KCkKICAgICAgICAgTGF5b3V0VW5pdCBiYXNlbGluZURlc2NlbnQgPSAwOwog
CiAgICAgICAgIC8vIE91ciBiYXNlIHNpemUgaXMgdGhlIGJpZ2dlc3QgbG9naWNhbCBoZWlnaHQg
ZnJvbSBvdXIgY2VsbHMnIHN0eWxlcyAoZXhjbHVkaW5nIHJvdyBzcGFubmluZyBjZWxscykuCi0g
ICAgICAgIG1fcm93UG9zW3IgKyAxXSA9IG1heChtX3Jvd1Bvc1tyXSArIG1pbmltdW1WYWx1ZUZv
ckxlbmd0aChtX2dyaWRbcl0ubG9naWNhbEhlaWdodCwgMCwgdmlld1JlbmRlcmVyKS5yb3VuZCgp
LCAwKTsKKyAgICAgICAgbV9yb3dQb3NbciArIDFdID0gbWF4KG1fcm93UG9zW3JdICsgbWluaW11
bVZhbHVlRm9yTGVuZ3RoKG1fZ3JpZFtyXS5sb2dpY2FsSGVpZ2h0LCAwKS5yb3VuZCgpLCAwKTsK
IAogICAgICAgICBSb3cmIHJvdyA9IG1fZ3JpZFtyXS5yb3c7CiAgICAgICAgIHVuc2lnbmVkIHRv
dGFsQ29scyA9IHJvdy5zaXplKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuaApp
bmRleCBlMGQyYTAzZjdlMWYzNDllZDE2NTZiN2Y5YjZkMDE0ZTFkMzU3MWE3Li5mNDlhNzAxODU5
NGEzOGE2Y2YzYzJhNjRhMzY4M2I4YzFmNjY2MDZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUZXh0LmgKQEAgLTEwNSw4ICsxMDUsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBMYXlv
dXRSZWN0IHNlbGVjdGlvblJlY3RGb3JSZXBhaW50KGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmpl
Y3QqIHJlcGFpbnRDb250YWluZXIsIGJvb2wgY2xpcFRvVmlzaWJsZUNvbnRlbnQgPSB0cnVlKSBP
VkVSUklERTsKICAgICB2aXJ0dWFsIExheW91dFJlY3QgbG9jYWxDYXJldFJlY3QoSW5saW5lQm94
KiwgaW50IGNhcmV0T2Zmc2V0LCBMYXlvdXRVbml0KiBleHRyYVdpZHRoVG9FbmRPZkxpbmUgPSAw
KTsKIAotICAgIHZpcnR1YWwgTGF5b3V0VW5pdCBtYXJnaW5MZWZ0KCkgY29uc3QgeyByZXR1cm4g
bWluaW11bVZhbHVlRm9yTGVuZ3RoKHN0eWxlKCktPm1hcmdpbkxlZnQoKSwgMCwgdmlldygpKTsg
fQotICAgIHZpcnR1YWwgTGF5b3V0VW5pdCBtYXJnaW5SaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1p
bmltdW1WYWx1ZUZvckxlbmd0aChzdHlsZSgpLT5tYXJnaW5SaWdodCgpLCAwLCB2aWV3KCkpOyB9
CisgICAgdmlydHVhbCBMYXlvdXRVbml0IG1hcmdpbkxlZnQoKSBjb25zdCB7IHJldHVybiBtaW5p
bXVtVmFsdWVGb3JMZW5ndGgoc3R5bGUoKS0+bWFyZ2luTGVmdCgpLCAwKTsgfQorICAgIHZpcnR1
YWwgTGF5b3V0VW5pdCBtYXJnaW5SaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1pbmltdW1WYWx1ZUZv
ckxlbmd0aChzdHlsZSgpLT5tYXJnaW5SaWdodCgpLCAwKTsgfQogCiAgICAgdmlydHVhbCBMYXlv
dXRSZWN0IGNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KGNvbnN0IFJlbmRlckxheWVyTW9k
ZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIpIGNvbnN0IE9WRVJSSURFOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUm9vdElubGluZUJveC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUm9vdElubGluZUJveC5jcHAKaW5kZXggODc5Yzk5YmMzNDdiZWUwY2Qw
N2QxYjVmMzAyYjFjNDFmMDUwNzZlNS4uMzFmMDM3NDZiMzhiNGIzMGEwNzljYWEzMDk3NDhlY2Y1
ZmE3NGM3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jvb3RJbmxpbmVC
b3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Sb290SW5saW5lQm94LmNwcApA
QCAtOTIxLDcgKzkyMSw3IEBAIExheW91dFVuaXQgUm9vdElubGluZUJveDo6dmVydGljYWxQb3Np
dGlvbkZvckJveChJbmxpbmVCb3gqIGJveCwgVmVydGljYWxQb3NpdGlvCiAgICAgICAgICAgICAg
ICAgbGluZUhlaWdodCA9IHJlbmRlcmVyLT5zdHlsZSgpLT5jb21wdXRlZExpbmVIZWlnaHQoKTsK
ICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBsaW5lSGVpZ2h0ID0gcmVuZGVyZXIt
PmxpbmVIZWlnaHQoZmlyc3RMaW5lLCBsaW5lRGlyZWN0aW9uKTsKLSAgICAgICAgICAgIHZlcnRp
Y2FsUG9zaXRpb24gLT0gdmFsdWVGb3JMZW5ndGgocmVuZGVyZXItPnN0eWxlKCktPnZlcnRpY2Fs
QWxpZ25MZW5ndGgoKSwgbGluZUhlaWdodCwgcmVuZGVyZXItPnZpZXcoKSk7CisgICAgICAgICAg
ICB2ZXJ0aWNhbFBvc2l0aW9uIC09IHJlbmRlcmVyLT52YWx1ZUZvckxlbmd0aChyZW5kZXJlci0+
c3R5bGUoKS0+dmVydGljYWxBbGlnbkxlbmd0aCgpLCBsaW5lSGVpZ2h0KTsKICAgICAgICAgfQog
ICAgIH0KIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>