<?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>137549</bug_id>
          
          <creation_ts>2014-10-08 21:26:51 -0700</creation_ts>
          <short_desc>Use is&lt;&gt;() / downcast&lt;&gt;() for Widget subclasses</short_desc>
          <delta_ts>2014-10-09 09:45:39 -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>Platform</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>137056</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>benjamin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>kling</cc>
    
    <cc>rniwa</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1040478</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-10-08 21:26:51 -0700</bug_when>
    <thetext>Use is&lt;&gt;() / downcast&lt;&gt;() for Widget subclasses</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1040479</commentid>
    <comment_count>1</comment_count>
      <attachid>239515</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-10-08 21:45:22 -0700</bug_when>
    <thetext>Created attachment 239515
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1040480</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-10-08 21:47:36 -0700</bug_when>
    <thetext>Attachment 239515 did not pass style-queue:


ERROR: Source/WebCore/platform/Widget.cpp:30:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 1 in 51 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1040481</commentid>
    <comment_count>3</comment_count>
      <attachid>239516</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-10-08 21:55:35 -0700</bug_when>
    <thetext>Created attachment 239516
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1040482</commentid>
    <comment_count>4</comment_count>
      <attachid>239517</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-10-08 22:01:51 -0700</bug_when>
    <thetext>Created attachment 239517
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1040573</commentid>
    <comment_count>5</comment_count>
      <attachid>239517</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-10-09 09:45:35 -0700</bug_when>
    <thetext>Comment on attachment 239517
Patch

Clearing flags on attachment: 239517

Committed r174506: &lt;http://trac.webkit.org/changeset/174506&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1040574</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-10-09 09:45:39 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>239515</attachid>
            <date>2014-10-08 21:45:22 -0700</date>
            <delta_ts>2014-10-08 21:55:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-137549-20141008214525.patch</filename>
            <type>text/plain</type>
            <size>73386</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc0NDk0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTQ4YjlkOGM2YThjY2Q1
OTUyYmI3YTlmMmQzMjYwYjlhZTZlMzQzNC4uYjg3MGNjOWJmYWM4Y2E0NjJkMTBmM2E0MWMzZWYz
NjFiMzAzMDhiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyOCBAQAorMjAxNC0xMC0wOCAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFVzZSBpczw+KCkgLyBkb3du
Y2FzdDw+KCkgZm9yIFdpZGdldCBzdWJjbGFzc2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzc1NDkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgaXM8PigpIC8gZG93bmNhc3Q8PigpIGZvciBXaWRn
ZXQgc3ViY2xhc3NlcyBhbmQgY2xlYW4gdXAgdGhlCisgICAgICAgIHN1cnJvdW5kaW5nIGNvZGUu
CisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBubyBiZWhhdmlvciBjaGFuZ2UuCisKKyAgICAgICAg
KiBhY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QVhP
YmplY3RDYWNoZTo6Z2V0T3JDcmVhdGUpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eU9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjphcHBlbmRBY2Nlc3NpYmlsaXR5
T2JqZWN0KToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmpl
Y3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6dmlz
aWJsZVBvc2l0aW9uRm9yUG9pbnQpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eVNjcm9sbFZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVNjcm9s
bFZpZXc6OndlYkFyZWFPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVNj
cm9sbFZpZXc6OmRvY3VtZW50RnJhbWVWaWV3KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2li
aWxpdHlTY3JvbGxWaWV3OjpwYXJlbnRPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNz
aWJpbGl0eVNjcm9sbFZpZXc6OnBhcmVudE9iamVjdElmRXhpc3RzKToKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9KU1BsdWdpbkVsZW1lbnRGdW5jdGlvbnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
cGx1Z2luU2NyaXB0T2JqZWN0RnJvbVBsdWdpblZpZXdCYXNlKToKKyAgICAgICAgKiBodG1sL0hU
TUxPYmplY3RFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxPYmplY3RFbGVtZW50
OjphcHBlbmRGb3JtRGF0YSk6CisgICAgICAgICogaHRtbC9IVE1MUGx1Z0luRWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MUGx1Z0luRWxlbWVudDo6Y2FuUHJvY2Vzc0RyYWcpOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTFBsdWdJbkVsZW1lbnQ6OmlzS2V5Ym9hcmRGb2N1c2FibGUp
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTFBsdWdJbkVsZW1lbnQ6OmlzVXNlck9ic2VydmFibGUp
OgorICAgICAgICAqIGh0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MUGx1Z0luSW1hZ2VFbGVtZW50OjpjaGVja1NpemVDaGFuZ2VGb3JTbmFwc2hv
dHRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFBsdWdJbkltYWdlRWxlbWVudDo6c3ViZnJh
bWVMb2FkZXJEaWRDcmVhdGVQbHVnSW4pOgorICAgICAgICAqIGh0bWwvSFRNTFBsdWdJbkltYWdl
RWxlbWVudC5oOgorICAgICAgICAqIGxvYWRlci9TdWJmcmFtZUxvYWRlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTdWJmcmFtZUxvYWRlcjo6bG9hZFBsdWdpbik6CisgICAgICAgICogcGFnZS9E
cmFnQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEcmFnQ29udHJvbGxlcjo6b3Bl
cmF0aW9uRm9yTG9hZCk6CisgICAgICAgICogcGFnZS9FdmVudEhhbmRsZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpzdWJmcmFtZUZvclRhcmdldE5vZGUpOgorICAgICAg
ICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpoYW5kbGVXaGVlbEV2ZW50KToKKyAgICAgICAgKiBw
YWdlL0V2ZW50SGFuZGxlci5oOgorICAgICAgICAqIHBhZ2UvRnJhbWUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RnJhbWU6OmZyYW1lRm9yV2lkZ2V0KToKKyAgICAgICAgKiBwYWdlL0ZyYW1lVmll
dy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6Omhhc0N1c3RvbVNjcm9sbGJhcnMp
OgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3Ojp1cGRhdGVMYXlvdXRBbmRTdHlsZUlmTmVl
ZGVkUmVjdXJzaXZlKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6Y29udmVydFRvQ29u
dGFpbmluZ1ZpZXcpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3Ojpjb252ZXJ0RnJvbUNv
bnRhaW5pbmdWaWV3KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6cmVtb3ZlQ2hpbGQp
OgorICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3Lmg6CisgICAgICAgICogcGFnZS9QYWdlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnBsdWdpblZpZXdzKToKKyAgICAgICAgKiBwYWdlL2Vm
bC9FdmVudEhhbmRsZXJFZmwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpw
YXNzV2hlZWxFdmVudFRvV2lkZ2V0KToKKyAgICAgICAgKiBwYWdlL2d0ay9FdmVudEhhbmRsZXJH
dGsuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpwYXNzV2hlZWxFdmVudFRv
V2lkZ2V0KToKKyAgICAgICAgKiBwYWdlL2lvcy9FdmVudEhhbmRsZXJJT1MubW06CisgICAgICAg
IChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OnBhc3NXaGVlbEV2ZW50VG9XaWRnZXQpOgorICAgICAg
ICAqIHBhZ2UvbWFjL0V2ZW50SGFuZGxlck1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50
SGFuZGxlcjo6cGFzc1doZWVsRXZlbnRUb1dpZGdldCk6CisgICAgICAgICogcGFnZS9zY3JvbGxp
bmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5n
Q29vcmRpbmF0b3I6OmNvbXB1dGVOb25GYXN0U2Nyb2xsYWJsZVJlZ2lvbik6CisgICAgICAgICog
cGFnZS93aW4vRXZlbnRIYW5kbGVyV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFu
ZGxlcjo6cGFzc1doZWVsRXZlbnRUb1dpZGdldCk6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xs
Vmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3OjpyZW1vdmVDaGlsZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3OjpzZXRIYXNIb3Jpem9udGFsU2Nyb2xsYmFyKToK
KyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFZpZXc6OnNldEhhc1ZlcnRpY2FsU2Nyb2xsYmFyKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxWaWV3Lmg6CisgICAgICAgICogcGxhdGZvcm0vU2Ny
b2xsYmFyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhcjo6cm9vdCk6CisgICAgICAg
IFVuaW5saW5lIGFzIHJvb3QoKSBiZWNhdXNlIFdpZGdldDo6cm9vdCgpIHJldHVybnMgYSBGcmFt
ZVZpZXcgbm93IGFuZAorICAgICAgICBpdCBpcyBpbXBvc3NpYmxlIHRvIGluY2x1ZGUgRnJhbWVW
aWV3LmggaW4gU2Nyb2xsYmFyLmggd2l0aG91dCBjYXVzaW5nCisgICAgICAgIGEgY3ljbGUuCisK
KyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxiYXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9XaWRn
ZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2lkZ2V0Ojpyb290KToKKyAgICAgICAgVXNlIHRp
Z2h0ZXIgdHlwaW5nIGFuZCByZXR1cm4gYSBGcmFtZVZpZXcgaW5zdGVhZCBvZiBhIFNjcm9sbFZp
ZXcuCisKKyAgICAgICAgKFdlYkNvcmU6OldpZGdldDo6cmVtb3ZlRnJvbVBhcmVudCk6CisgICAg
ICAgICogcGxhdGZvcm0vV2lkZ2V0Lmg6CisgICAgICAgICogcGxhdGZvcm0vZWZsL1dpZGdldEVm
bC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXaWRnZXQ6OnNldEN1cnNvcik6CisgICAgICAgICog
cGxhdGZvcm0vZ3RrL1BsYXRmb3JtU2NyZWVuR3RrLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
dGsvV2lkZ2V0R3RrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldpZGdldDo6c2V0Q3Vyc29yKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvUGxhdGZvcm1TY3JlZW5NYWMubW06CisgICAgICAgIChX
ZWJDb3JlOjpkaXNwbGF5RnJvbVdpZGdldCk6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1dpZGdl
dE1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OldpZGdldDo6c2V0Q3Vyc29yKToKKyAgICAgICAg
KiBwbGF0Zm9ybS93aW4vV2lkZ2V0V2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldpZGdldDo6
c2V0Q3Vyc29yKToKKyAgICAgICAgKiBwbHVnaW5zL1BsdWdpblZpZXdCYXNlLmg6CisgICAgICAg
ICogcGx1Z2lucy93aW4vUGx1Z2luVmlld1dpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbHVn
aW5WaWV3Ojp1cGRhdGVQbHVnaW5XaWRnZXQpOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luVmll
dzo6cGFpbnRJbnRvVHJhbnNmb3JtZWRDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdp
blZpZXc6OnBhaW50V2luZG93ZWRQbHVnaW5JbnRvQ29udGV4dCk6CisgICAgICAgIChXZWJDb3Jl
OjpQbHVnaW5WaWV3OjpwYWludCk6CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5WaWV3OjpoYW5k
bGVNb3VzZUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpblZpZXc6OnNldE5QV2luZG93
UmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5WaWV3OjpzbmFwc2hvdCk6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlckVtYmVkZGVkT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckVtYmVkZGVkT2JqZWN0OjphbGxvd3NBY2NlbGVyYXRlZENvbXBvc2l0aW5nKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckVtYmVkZGVkT2JqZWN0Ojpub2RlQXRQb2ludCk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJFbWJlZGRlZE9iamVjdDo6c2Nyb2xsKToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyRnJhbWVCYXNlLmg6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGcmFt
ZUJhc2U6OmNoaWxkVmlldyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2lu
Zy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckJhY2tpbmc6OmxheWVyV2lsbEJl
RGVzdHJveWVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQmFja2luZzo6dXBkYXRl
Q29uZmlndXJhdGlvbik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRv
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckNvbXBvc2l0b3I6OnNob3VsZFBy
b3BhZ2F0ZUNvbXBvc2l0aW5nVG9FbmNsb3NpbmdGcmFtZSk6CisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlclRyZWVBc1RleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6d3JpdGUpOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJXaWRnZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2lkZ2V0
SGllcmFyY2h5VXBkYXRlc1N1c3BlbnNpb25TY29wZTo6bW92ZVdpZGdldHMpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyV2lkZ2V0OjpwYWludENvbnRlbnRzKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlcldpZGdldDo6c2V0T3ZlcmxhcFRlc3RSZXN1bHQpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyV2lkZ2V0Ojp1cGRhdGVXaWRnZXRQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJXaWRnZXQ6Om5vZGVBdFBvaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlcldpZGdl
dDo6ZW1iZWRkZWRDb250ZW50Qm94KToKKwogMjAxNC0xMC0wOCAgTXlsZXMgQy4gTWF4ZmllbGQg
IDxtbWF4ZmllbGRAYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQgYnVpbGQgZml4IGFm
dGVyIHIxNzQ0ODAuIEJyb2tlIGlPUyBidWlsZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
bWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwppbmRleCAxOGIyMmUx
NDBlNTYwYjRiMDc1MGY5YmNlMWFlMDNiYjcxN2NkMTliLi43YWI1NWQ3YTM0ZGIwM2Y0ZjdkYTQ5
Y2Y5Mjc3N2FhNTQ2ZmQ2MDM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIw
MTQtMTAtMDggIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBVc2Ug
aXM8PigpIC8gZG93bmNhc3Q8PigpIGZvciBXaWRnZXQgc3ViY2xhc3NlcworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM3NTQ5CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXNlIGlzPD4oKSAvIGRvd25jYXN0
PD4oKSBmb3IgV2lkZ2V0IHN1YmNsYXNzZXMgYW5kIGNsZWFuIHVwIHRoZQorICAgICAgICBzdXJy
b3VuZGluZyBjb2RlLgorCisgICAgICAgICogV2ViVmlldy9XZWJSZW5kZXJOb2RlLm1tOgorICAg
ICAgICAoY29weVJlbmRlck5vZGUpOgorICAgICAgICAqIFdlYlZpZXcvV2ViVmlldy5tbToKKyAg
ICAgICAgKC1bV2ViVmlldyBfYWRkU2Nyb2xsZXJEYXNoYm9hcmRSZWdpb25zRm9yRnJhbWVWaWV3
OmRhc2hib2FyZFJlZ2lvbnM6XSk6CisKIDIwMTQtMTAtMDcgIENocmlzdG9waGUgRHVtZXogIDxj
ZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFVzZSBpczw+KCkgLyBkb3duY2FzdDw+KCkgZm9y
IFJlbmRlclRleHQgLyBSZW5kZXJUZXh0RnJhZ21lbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvd2luL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwppbmRleCA3N2Rj
YTk4NWYxZTEwYTNkMGMwZmQwMWZmOTZhNzI3MDVlZWYzNTI4Li5lYWY2YTFkYzAxYzVhY2UwZmQx
OTY1NzcxYzhlN2NhNGZlMTA3MDQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAK
KzIwMTQtMTAtMDggIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBV
c2UgaXM8PigpIC8gZG93bmNhc3Q8PigpIGZvciBXaWRnZXQgc3ViY2xhc3NlcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM3NTQ5CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXNlIGlzPD4oKSAvIGRvd25j
YXN0PD4oKSBmb3IgV2lkZ2V0IHN1YmNsYXNzZXMgYW5kIGNsZWFuIHVwIHRoZQorICAgICAgICBz
dXJyb3VuZGluZyBjb2RlLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRW1iZWRkZWRXaWRn
ZXQuY3BwOgorICAgICAgICAoRW1iZWRkZWRXaWRnZXQ6OmZyYW1lUmVjdHNDaGFuZ2VkKToKKwog
MjAxNC0xMC0wOCAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KIAogICAgICAg
ICBbV2luXSBSZXNvbHZlIHZhcmlvdXMgc3RhdGljIGFuYWx5emVyIHdhcm5pbmdzIGluIFdlYktp
dC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZwppbmRleCA2OTdkMWNlZjhmZjNiYjcxNWE0ZmMxZmM2OWMxOTkxMWU5ZjNmMGQ1
Li4wYzMxMDRiZWYzMjI4MzQ2MjliZmYyYTVjOWY3N2RiNGJkNmM0MTVlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTYgQEAKKzIwMTQtMTAtMDggIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNv
bT4KKworICAgICAgICBVc2UgaXM8PigpIC8gZG93bmNhc3Q8PigpIGZvciBXaWRnZXQgc3ViY2xh
c3NlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM3
NTQ5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXNl
IGlzPD4oKSAvIGRvd25jYXN0PD4oKSBmb3IgV2lkZ2V0IHN1YmNsYXNzZXMgYW5kIGNsZWFuIHVw
IHRoZQorICAgICAgICBzdXJyb3VuZGluZyBjb2RlLgorCisgICAgICAgICogU2hhcmVkL1dlYlJl
bmRlck9iamVjdC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlJlbmRlck9iamVjdDo6V2ViUmVu
ZGVyT2JqZWN0KToKKwogMjAxNC0xMC0wOCAgQ2hyaXN0b3BoZSBEdW1leiAgPGNkdW1lekBhcHBs
ZS5jb20+CiAKICAgICAgICAgVXNlIGlzPD4oKSAvIGRvd25jYXN0PD4oKSBmb3IgUmVuZGVyQmxv
Y2sgb2JqZWN0cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9i
amVjdENhY2hlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNo
ZS5jcHAKaW5kZXggNTdlYTA2ZmE5Mjc0N2I2NGNlOTZkMjEyYTEyOTQxMTQ0NzFhZjBiNS4uYmQ0
MTY3ZTU0MDBkMmJkNjFjNTJmNGViMTdlNjUzYmQ3YzVjOWI5NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwCkBAIC0zNDMsMTAgKzM0MywxMCBA
QCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBWE9iamVjdENhY2hlOjpnZXRPckNyZWF0ZShXaWRnZXQq
IHdpZGdldCkKICAgICAgICAgcmV0dXJuIG9iajsKICAgICAKICAgICBSZWZQdHI8QWNjZXNzaWJp
bGl0eU9iamVjdD4gbmV3T2JqID0gbnVsbHB0cjsKLSAgICBpZiAod2lkZ2V0LT5pc0ZyYW1lVmll
dygpKQotICAgICAgICBuZXdPYmogPSBBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldzo6Y3JlYXRlKHRv
U2Nyb2xsVmlldyh3aWRnZXQpKTsKLSAgICBlbHNlIGlmICh3aWRnZXQtPmlzU2Nyb2xsYmFyKCkp
Ci0gICAgICAgIG5ld09iaiA9IEFjY2Vzc2liaWxpdHlTY3JvbGxiYXI6OmNyZWF0ZSh0b1Njcm9s
bGJhcih3aWRnZXQpKTsKKyAgICBpZiAoaXM8U2Nyb2xsVmlldz4oKndpZGdldCkpCisgICAgICAg
IG5ld09iaiA9IEFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3OjpjcmVhdGUoZG93bmNhc3Q8U2Nyb2xs
Vmlldz4od2lkZ2V0KSk7CisgICAgZWxzZSBpZiAoaXM8U2Nyb2xsYmFyPigqd2lkZ2V0KSkKKyAg
ICAgICAgbmV3T2JqID0gQWNjZXNzaWJpbGl0eVNjcm9sbGJhcjo6Y3JlYXRlKGRvd25jYXN0PFNj
cm9sbGJhcj4od2lkZ2V0KSk7CiAKICAgICAvLyBXaWxsIGNyYXNoIGxhdGVyIGlmIHdlIGhhdmUg
dHdvIG9iamVjdHMgZm9yIHRoZSBzYW1lIHdpZGdldC4KICAgICBBU1NFUlQoIWdldCh3aWRnZXQp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eU9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlP
YmplY3QuY3BwCmluZGV4IGI2OTVmM2ZiMzYxOTVmNWVmOTQzMDQyNjQ1MWYwZTY3NWJkMWIxZTcu
LjJiMTkxOWE2YjVjMzUwNWQzMDM4ZDJiNzY5M2E3MmIyZGQ4ZTI3MmUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcApAQCAt
NDg0LDE0ICs0ODQsMTQgQEAgc3RhdGljIHZvaWQgYXBwZW5kQWNjZXNzaWJpbGl0eU9iamVjdChB
Y2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmplY3QsIEFjY2Vzc2liaWxpdHkKICAgICAvLyBGaW5kIHRo
ZSBuZXh0IGRlc2NlbmRhbnQgb2YgdGhpcyBhdHRhY2htZW50IG9iamVjdCBzbyBzZWFyY2ggY2Fu
IGNvbnRpbnVlIHRocm91Z2ggZnJhbWVzLgogICAgIGlmIChvYmplY3QtPmlzQXR0YWNobWVudCgp
KSB7CiAgICAgICAgIFdpZGdldCogd2lkZ2V0ID0gb2JqZWN0LT53aWRnZXRGb3JBdHRhY2htZW50
VmlldygpOwotICAgICAgICBpZiAoIXdpZGdldCB8fCAhd2lkZ2V0LT5pc0ZyYW1lVmlldygpKQor
ICAgICAgICBpZiAoIWlzPEZyYW1lVmlldz4od2lkZ2V0KSkKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgCi0gICAgICAgIERvY3VtZW50KiBkb2MgPSB0b0ZyYW1lVmlldyh3aWRnZXQpLT5m
cmFtZSgpLmRvY3VtZW50KCk7Ci0gICAgICAgIGlmICghZG9jIHx8ICFkb2MtPmhhc0xpdmluZ1Jl
bmRlclRyZWUoKSkKKyAgICAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gZG93bmNhc3Q8RnJhbWVW
aWV3Pigqd2lkZ2V0KS5mcmFtZSgpLmRvY3VtZW50KCk7CisgICAgICAgIGlmICghZG9jdW1lbnQg
fHwgIWRvY3VtZW50LT5oYXNMaXZpbmdSZW5kZXJUcmVlKCkpCiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIAotICAgICAgICBvYmplY3QgPSBvYmplY3QtPmF4T2JqZWN0Q2FjaGUoKS0+Z2V0
T3JDcmVhdGUoZG9jKTsKKyAgICAgICAgb2JqZWN0ID0gb2JqZWN0LT5heE9iamVjdENhY2hlKCkt
PmdldE9yQ3JlYXRlKGRvY3VtZW50KTsKICAgICB9CiAKICAgICBpZiAob2JqZWN0KQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2Jq
ZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRl
ck9iamVjdC5jcHAKaW5kZXggZjU3NjkxNDVhNTIwODNhOTI5MjAxZjQwZmI0ZmI1Y2EyYjdiMjIx
My4uMTI4MGIwMDQzMWEwYzk4YWE1OGYyNWZjNjZlZDMxMjk4MmNjOTE1ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJP
YmplY3QuY3BwCkBAIC0yMDA3LDEyICsyMDA3LDEyIEBAIFZpc2libGVQb3NpdGlvbiBBY2Nlc3Np
YmlsaXR5UmVuZGVyT2JqZWN0Ojp2aXNpYmxlUG9zaXRpb25Gb3JQb2ludChjb25zdCBJbnRQb2lu
CiAKICAgICAgICAgLy8gZGVzY2VuZCBpbnRvIHdpZGdldCAoRlJBTUUsIElGUkFNRSwgT0JKRUNU
Li4uKQogICAgICAgICBXaWRnZXQqIHdpZGdldCA9IHRvUmVuZGVyV2lkZ2V0KHJlbmRlcmVyKS0+
d2lkZ2V0KCk7Ci0gICAgICAgIGlmICghd2lkZ2V0IHx8ICF3aWRnZXQtPmlzRnJhbWVWaWV3KCkp
CisgICAgICAgIGlmICghaXM8RnJhbWVWaWV3Pih3aWRnZXQpKQogICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgIEZyYW1lJiBmcmFtZSA9IHRvRnJhbWVWaWV3KHdpZGdldCktPmZyYW1lKCk7Cisg
ICAgICAgIEZyYW1lJiBmcmFtZSA9IGRvd25jYXN0PEZyYW1lVmlldz4oKndpZGdldCkuZnJhbWUo
KTsKICAgICAgICAgcmVuZGVyVmlldyA9IGZyYW1lLmRvY3VtZW50KCktPnJlbmRlclZpZXcoKTsK
ICNpZiBQTEFURk9STShDT0NPQSkKLSAgICAgICAgZnJhbWVWaWV3ID0gdG9GcmFtZVZpZXcod2lk
Z2V0KTsKKyAgICAgICAgZnJhbWVWaWV3ID0gZG93bmNhc3Q8RnJhbWVWaWV3Pih3aWRnZXQpOwog
I2VuZGlmCiAgICAgfQogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlTY3JvbGxWaWV3LmNwcAppbmRleCA5ZjI0Yzk3ZmRiYmEyMTM5
NDRkNDIwZmMzZmUxYjBkZjZjZDJhZjNiLi42ZDJkYjIyNmZlZDM2ZTAxNDEzNDVlMWFkMGM5OTk1
ZTNhMzIxNzA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlTY3JvbGxWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlTY3JvbGxWaWV3LmNwcApAQCAtMTg5LDE1ICsxODksMTUgQEAgdm9pZCBB
Y2Nlc3NpYmlsaXR5U2Nyb2xsVmlldzo6YWRkQ2hpbGRyZW4oKQogCiBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0KiBBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldzo6d2ViQXJlYU9iamVjdCgpIGNvbnN0CiB7Ci0g
ICAgaWYgKCFtX3Njcm9sbFZpZXcgfHwgIW1fc2Nyb2xsVmlldy0+aXNGcmFtZVZpZXcoKSkKKyAg
ICBpZiAoIWlzPEZyYW1lVmlldz4obV9zY3JvbGxWaWV3KSkKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAgICAgCi0gICAgRG9jdW1lbnQqIGRvYyA9IHRvRnJhbWVWaWV3KG1fc2Nyb2xsVmlldykt
PmZyYW1lKCkuZG9jdW1lbnQoKTsKLSAgICBpZiAoIWRvYyB8fCAhZG9jLT5oYXNMaXZpbmdSZW5k
ZXJUcmVlKCkpCisgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gZG93bmNhc3Q8RnJhbWVWaWV3Pigq
bV9zY3JvbGxWaWV3KS5mcmFtZSgpLmRvY3VtZW50KCk7CisgICAgaWYgKCFkb2N1bWVudCB8fCAh
ZG9jdW1lbnQtPmhhc0xpdmluZ1JlbmRlclRyZWUoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAKICAgICBpZiAoQVhPYmplY3RDYWNoZSogY2FjaGUgPSBheE9iamVjdENhY2hlKCkpCi0gICAg
ICAgIHJldHVybiBjYWNoZS0+Z2V0T3JDcmVhdGUoZG9jKTsKKyAgICAgICAgcmV0dXJuIGNhY2hl
LT5nZXRPckNyZWF0ZShkb2N1bWVudCk7CiAgICAgCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CkBA
IC0yMzEsMjIgKzIzMSwyMiBAQCBMYXlvdXRSZWN0IEFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3Ojpl
bGVtZW50UmVjdCgpIGNvbnN0CiAKIEZyYW1lVmlldyogQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXc6
OmRvY3VtZW50RnJhbWVWaWV3KCkgY29uc3QKIHsKLSAgICBpZiAoIW1fc2Nyb2xsVmlldyB8fCAh
bV9zY3JvbGxWaWV3LT5pc0ZyYW1lVmlldygpKQorICAgIGlmICghaXM8RnJhbWVWaWV3PihtX3Nj
cm9sbFZpZXcpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAKLSAgICByZXR1cm4gdG9G
cmFtZVZpZXcobV9zY3JvbGxWaWV3KTsKKyAgICByZXR1cm4gZG93bmNhc3Q8RnJhbWVWaWV3Piht
X3Njcm9sbFZpZXcpOwogfSAgICAKIAogQWNjZXNzaWJpbGl0eU9iamVjdCogQWNjZXNzaWJpbGl0
eVNjcm9sbFZpZXc6OnBhcmVudE9iamVjdCgpIGNvbnN0CiB7Ci0gICAgaWYgKCFtX3Njcm9sbFZp
ZXcgfHwgIW1fc2Nyb2xsVmlldy0+aXNGcmFtZVZpZXcoKSkKKyAgICBpZiAoIWlzPEZyYW1lVmll
dz4obV9zY3JvbGxWaWV3KSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBBWE9iamVj
dENhY2hlKiBjYWNoZSA9IGF4T2JqZWN0Q2FjaGUoKTsKICAgICBpZiAoIWNhY2hlKQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKIAotICAgIEhUTUxGcmFtZU93bmVyRWxlbWVudCogb3duZXIgPSB0
b0ZyYW1lVmlldyhtX3Njcm9sbFZpZXcpLT5mcmFtZSgpLm93bmVyRWxlbWVudCgpOworICAgIEhU
TUxGcmFtZU93bmVyRWxlbWVudCogb3duZXIgPSBkb3duY2FzdDxGcmFtZVZpZXc+KCptX3Njcm9s
bFZpZXcpLmZyYW1lKCkub3duZXJFbGVtZW50KCk7CiAgICAgaWYgKG93bmVyICYmIG93bmVyLT5y
ZW5kZXJlcigpKQogICAgICAgICByZXR1cm4gY2FjaGUtPmdldE9yQ3JlYXRlKG93bmVyKTsKIApA
QCAtMjU1LDE0ICsyNTUsMTQgQEAgQWNjZXNzaWJpbGl0eU9iamVjdCogQWNjZXNzaWJpbGl0eVNj
cm9sbFZpZXc6OnBhcmVudE9iamVjdCgpIGNvbnN0CiAgICAgCiBBY2Nlc3NpYmlsaXR5T2JqZWN0
KiBBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldzo6cGFyZW50T2JqZWN0SWZFeGlzdHMoKSBjb25zdAog
ewotICAgIGlmICghbV9zY3JvbGxWaWV3IHx8ICFtX3Njcm9sbFZpZXctPmlzRnJhbWVWaWV3KCkp
CisgICAgaWYgKCFpczxGcmFtZVZpZXc+KG1fc2Nyb2xsVmlldykpCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwogICAgIAogICAgIEFYT2JqZWN0Q2FjaGUqIGNhY2hlID0gYXhPYmplY3RDYWNoZSgp
OwogICAgIGlmICghY2FjaGUpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgSFRNTEZy
YW1lT3duZXJFbGVtZW50KiBvd25lciA9IHRvRnJhbWVWaWV3KG1fc2Nyb2xsVmlldyktPmZyYW1l
KCkub3duZXJFbGVtZW50KCk7CisgICAgSFRNTEZyYW1lT3duZXJFbGVtZW50KiBvd25lciA9IGRv
d25jYXN0PEZyYW1lVmlldz4obV9zY3JvbGxWaWV3KS0+ZnJhbWUoKS5vd25lckVsZW1lbnQoKTsK
ICAgICBpZiAob3duZXIgJiYgb3duZXItPnJlbmRlcmVyKCkpCiAgICAgICAgIHJldHVybiBjYWNo
ZS0+Z2V0KG93bmVyKTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTUGx1Z2luRWxlbWVudEZ1bmN0aW9ucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU1BsdWdpbkVsZW1lbnRGdW5jdGlvbnMuY3BwCmluZGV4IDgxYWVlOWQwODkwMTY3OTRm
MTg2MzdkZmM2ZTFkYTM3NzQ2YTJiYjIuLmM2ZjYxZWJiNTQzMWI3MDQ2OWM0ZDdmMGRiNjViNGRj
ODRkYTkwY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUGx1Z2lu
RWxlbWVudEZ1bmN0aW9ucy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNQ
bHVnaW5FbGVtZW50RnVuY3Rpb25zLmNwcApAQCAtNDksMTQgKzQ5LDEwIEBAIEluc3RhbmNlKiBw
bHVnaW5JbnN0YW5jZShIVE1MRWxlbWVudCYgZWxlbWVudCkKIHN0YXRpYyBKU09iamVjdCogcGx1
Z2luU2NyaXB0T2JqZWN0RnJvbVBsdWdpblZpZXdCYXNlKEhUTUxQbHVnSW5FbGVtZW50JiBwbHVn
aW5FbGVtZW50LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogewogICAgIFdpZGdldCog
cGx1Z2luV2lkZ2V0ID0gcGx1Z2luRWxlbWVudC5wbHVnaW5XaWRnZXQoKTsKLSAgICBpZiAoIXBs
dWdpbldpZGdldCkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgCi0gICAgaWYgKCFwbHVn
aW5XaWRnZXQtPmlzUGx1Z2luVmlld0Jhc2UoKSkKKyAgICBpZiAoIWlzPFBsdWdpblZpZXdCYXNl
PihwbHVnaW5XaWRnZXQpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIFBsdWdpblZp
ZXdCYXNlKiBwbHVnaW5WaWV3QmFzZSA9IHRvUGx1Z2luVmlld0Jhc2UocGx1Z2luV2lkZ2V0KTsK
LSAgICByZXR1cm4gcGx1Z2luVmlld0Jhc2UtPnNjcmlwdE9iamVjdChnbG9iYWxPYmplY3QpOwor
ICAgIHJldHVybiBkb3duY2FzdDxQbHVnaW5WaWV3QmFzZT4oKnBsdWdpbldpZGdldCkuc2NyaXB0
T2JqZWN0KGdsb2JhbE9iamVjdCk7CiB9CiAKIHN0YXRpYyBKU09iamVjdCogcGx1Z2luU2NyaXB0
T2JqZWN0RnJvbVBsdWdpblZpZXdCYXNlKEpTSFRNTEVsZW1lbnQqIGpzSFRNTEVsZW1lbnQpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuY3BwCmluZGV4IDY4OGI0NTBhMzgz
NDY3ZjA5NjJiYjExZTQ3YTkzYmU2OTg5NmYxYWIuLjdkNTY1M2YxZjg5OWFhNDJhMmVhYmUwYWY2
NzZhMjAzOTg1NjAzOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVj
dEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQu
Y3BwCkBAIC01MDAsMTAgKzUwMCwxMCBAQCBib29sIEhUTUxPYmplY3RFbGVtZW50OjphcHBlbmRG
b3JtRGF0YShGb3JtRGF0YUxpc3QmIGVuY29kaW5nLCBib29sKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKICAgICBXaWRnZXQqIHdpZGdldCA9IHBsdWdpbldpZGdldCgpOwotICAgIGlmICghd2lk
Z2V0IHx8ICF3aWRnZXQtPmlzUGx1Z2luVmlld0Jhc2UoKSkKKyAgICBpZiAoIWlzPFBsdWdpblZp
ZXdCYXNlPih3aWRnZXQpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgU3RyaW5nIHZhbHVl
OwotICAgIGlmICghdG9QbHVnaW5WaWV3QmFzZSh3aWRnZXQpLT5nZXRGb3JtVmFsdWUodmFsdWUp
KQorICAgIGlmICghZG93bmNhc3Q8UGx1Z2luVmlld0Jhc2U+KCp3aWRnZXQpLmdldEZvcm1WYWx1
ZSh2YWx1ZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBlbmNvZGluZy5hcHBlbmREYXRh
KG5hbWUoKSwgdmFsdWUpOwogICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MUGx1Z0luRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxQbHVnSW5FbGVtZW50LmNwcAppbmRleCBmMzdiZTBjZTIyNDg2MWQ5NjQ5NGIxZjc2NTk4Zjlk
MTdhYzBjMjE1Li44MGJjNzU4OWQ1MDEwY2EyZTRkY2M4NjE1YzI5ODkzMzQ0Njg3ZDRmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5FbGVtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5FbGVtZW50LmNwcApAQCAtOTEsNyArOTEsNyBA
QCBIVE1MUGx1Z0luRWxlbWVudDo6fkhUTUxQbHVnSW5FbGVtZW50KCkKIAogYm9vbCBIVE1MUGx1
Z0luRWxlbWVudDo6Y2FuUHJvY2Vzc0RyYWcoKSBjb25zdAogewotICAgIGNvbnN0IFBsdWdpblZp
ZXdCYXNlKiBwbHVnaW4gPSBwbHVnaW5XaWRnZXQoKSAmJiBwbHVnaW5XaWRnZXQoKS0+aXNQbHVn
aW5WaWV3QmFzZSgpID8gdG9QbHVnaW5WaWV3QmFzZShwbHVnaW5XaWRnZXQoKSkgOiBudWxscHRy
OworICAgIGNvbnN0IFBsdWdpblZpZXdCYXNlKiBwbHVnaW4gPSBpczxQbHVnaW5WaWV3QmFzZT4o
cGx1Z2luV2lkZ2V0KCkpID8gZG93bmNhc3Q8UGx1Z2luVmlld0Jhc2U+KHBsdWdpbldpZGdldCgp
KSA6IG51bGxwdHI7CiAgICAgcmV0dXJuIHBsdWdpbiA/IHBsdWdpbi0+Y2FuUHJvY2Vzc0RyYWco
KSA6IGZhbHNlOwogfQogCkBAIC0yNDIsMTAgKzI0MiwxMCBAQCBib29sIEhUTUxQbHVnSW5FbGVt
ZW50Ojppc0tleWJvYXJkRm9jdXNhYmxlKEtleWJvYXJkRXZlbnQqKSBjb25zdAogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKICAgICBXaWRnZXQqIHdpZGdldCA9IHBsdWdpbldpZGdldCgpOwotICAg
IGlmICghd2lkZ2V0IHx8ICF3aWRnZXQtPmlzUGx1Z2luVmlld0Jhc2UoKSkKKyAgICBpZiAoIWlz
PFBsdWdpblZpZXdCYXNlPih3aWRnZXQpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBy
ZXR1cm4gdG9QbHVnaW5WaWV3QmFzZSh3aWRnZXQpLT5zdXBwb3J0c0tleWJvYXJkRm9jdXMoKTsK
KyAgICByZXR1cm4gZG93bmNhc3Q8UGx1Z2luVmlld0Jhc2U+KCp3aWRnZXQpLnN1cHBvcnRzS2V5
Ym9hcmRGb2N1cygpOwogfQogCiBib29sIEhUTUxQbHVnSW5FbGVtZW50Ojppc1BsdWdpbkVsZW1l
bnQoKSBjb25zdApAQCAtMjU3LDE3ICsyNTcsMTcgQEAgYm9vbCBIVE1MUGx1Z0luRWxlbWVudDo6
aXNVc2VyT2JzZXJ2YWJsZSgpIGNvbnN0CiB7CiAgICAgLy8gTm8gd2lkZ2V0IC0gY2FuJ3QgYmUg
YW55dGhpbmcgdG8gc2VlIG9yIGhlYXIgaGVyZS4KICAgICBXaWRnZXQqIHdpZGdldCA9IHBsdWdp
bldpZGdldChQbHVnaW5Mb2FkaW5nUG9saWN5OjpEb05vdExvYWQpOwotICAgIGlmICghd2lkZ2V0
IHx8ICF3aWRnZXQtPmlzUGx1Z2luVmlld0Jhc2UoKSkKKyAgICBpZiAoIWlzPFBsdWdpblZpZXdC
YXNlPih3aWRnZXQpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBQbHVnaW5WaWV3QmFz
ZSogcGx1Z2luVmlldyA9IHRvUGx1Z2luVmlld0Jhc2Uod2lkZ2V0KTsKKyAgICBQbHVnaW5WaWV3
QmFzZSYgcGx1Z2luVmlldyA9IGRvd25jYXN0PFBsdWdpblZpZXdCYXNlPigqd2lkZ2V0KTsKIAog
ICAgIC8vIElmIGF1ZGlvIGlzIHBsYXlpbmcgKG9yIG1pZ2h0IGJlKSB0aGVuIHRoZSBwbHVnaW4g
aXMgZGV0ZWN0YWJsZS4KLSAgICBpZiAocGx1Z2luVmlldy0+YXVkaW9IYXJkd2FyZUFjdGl2aXR5
KCkgIT0gQXVkaW9IYXJkd2FyZUFjdGl2aXR5VHlwZTo6SXNJbmFjdGl2ZSkKKyAgICBpZiAocGx1
Z2luVmlldy5hdWRpb0hhcmR3YXJlQWN0aXZpdHkoKSAhPSBBdWRpb0hhcmR3YXJlQWN0aXZpdHlU
eXBlOjpJc0luYWN0aXZlKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIC8vIElmIHRoZSBw
bHVnaW4gaXMgdmlzaWJsZSBhbmQgbm90IHZhbmlzaGluZ2x5IHNtYWxsIGluIGVpdGhlciBkaW1l
bnNpb24gaXQgaXMgZGV0ZWN0YWJsZS4KLSAgICByZXR1cm4gcGx1Z2luVmlldy0+aXNWaXNpYmxl
KCkgJiYgd2lkZ2V0LT53aWR0aCgpID4gMiAmJiB3aWRnZXQtPmhlaWdodCgpID4gMjsKKyAgICBy
ZXR1cm4gcGx1Z2luVmlldy5pc1Zpc2libGUoKSAmJiBwbHVnaW5WaWV3LndpZHRoKCkgPiAyICYm
IHBsdWdpblZpZXcuaGVpZ2h0KCkgPiAyOwogfQogCiBib29sIEhUTUxQbHVnSW5FbGVtZW50Ojpz
dXBwb3J0c0ZvY3VzKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TFBsdWdJbkltYWdlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5J
bWFnZUVsZW1lbnQuY3BwCmluZGV4IDA2MzYxMmZkZWU2NTQ2MzM2ZWU3NGQ2MzU4YzJmYjY3MDBh
ZWMyMTkuLmM3YjdmMjJjMzVmNmY3ZmFmODhkNDA2YzExM2FhNWNlMzRhNjdlMGUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNwcApAQCAtNTUxLDgg
KzU1MSw4IEBAIHZvaWQgSFRNTFBsdWdJbkltYWdlRWxlbWVudDo6Y2hlY2tTaXplQ2hhbmdlRm9y
U25hcHNob3R0aW5nKCkKICAgICBzZXREaXNwbGF5U3RhdGUoV2FpdGluZ0ZvclNuYXBzaG90KTsK
ICAgICBtX3NuYXBzaG90RGVjaXNpb24gPSBTbmFwc2hvdHRlZDsKICAgICBXaWRnZXQqIHdpZGdl
dCA9IHBsdWdpbldpZGdldCgpOwotICAgIGlmICh3aWRnZXQgJiYgd2lkZ2V0LT5pc1BsdWdpblZp
ZXdCYXNlKCkpCi0gICAgICAgIHRvUGx1Z2luVmlld0Jhc2Uod2lkZ2V0KS0+YmVnaW5TbmFwc2hv
dHRpbmdSdW5uaW5nUGx1Z2luKCk7CisgICAgaWYgKGlzPFBsdWdpblZpZXdCYXNlPih3aWRnZXQp
KQorICAgICAgICBkb3duY2FzdDxQbHVnaW5WaWV3QmFzZT4oKndpZGdldCkuYmVnaW5TbmFwc2hv
dHRpbmdSdW5uaW5nUGx1Z2luKCk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgYm9vbCBpczEwMFBlcmNl
bnQoTGVuZ3RoIGxlbmd0aCkKQEAgLTcyNSwxMSArNzI1LDExIEBAIHZvaWQgSFRNTFBsdWdJbklt
YWdlRWxlbWVudDo6c3ViZnJhbWVMb2FkZXJXaWxsQ3JlYXRlUGx1Z0luKGNvbnN0IFVSTCYgdXJs
KQogICAgIHNldERpc3BsYXlTdGF0ZShXYWl0aW5nRm9yU25hcHNob3QpOwogfQogCi12b2lkIEhU
TUxQbHVnSW5JbWFnZUVsZW1lbnQ6OnN1YmZyYW1lTG9hZGVyRGlkQ3JlYXRlUGx1Z0luKGNvbnN0
IFdpZGdldCogd2lkZ2V0KQordm9pZCBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50OjpzdWJmcmFtZUxv
YWRlckRpZENyZWF0ZVBsdWdJbihjb25zdCBXaWRnZXQmIHdpZGdldCkKIHsKICAgICBtX3BsdWdJ
bldhc0NyZWF0ZWQgPSB0cnVlOwogCi0gICAgaWYgKHdpZGdldC0+aXNQbHVnaW5WaWV3QmFzZSgp
ICYmIHRvUGx1Z2luVmlld0Jhc2Uod2lkZ2V0KS0+c2hvdWxkQWx3YXlzQXV0b1N0YXJ0KCkpIHsK
KyAgICBpZiAoaXM8UGx1Z2luVmlld0Jhc2U+KHdpZGdldCkgJiYgZG93bmNhc3Q8UGx1Z2luVmll
d0Jhc2U+KHdpZGdldCkuc2hvdWxkQWx3YXlzQXV0b1N0YXJ0KCkpIHsKICAgICAgICAgTE9HKFBs
dWdpbnMsICIlcCBQbHVnLWluIHNob3VsZCBhdXRvLXN0YXJ0LCBzZXQgdG8gcGxheSIsIHRoaXMp
OwogICAgICAgICBtX3NuYXBzaG90RGVjaXNpb24gPSBOZXZlclNuYXBzaG90OwogICAgICAgICBz
ZXREaXNwbGF5U3RhdGUoUGxheWluZyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJ
bkltYWdlRWxlbWVudC5oCmluZGV4IDg2ZGNjODY5MjhlYWE0NjZlMTIxYmM5Njc1NWEzMzQzMzAw
MWE2Y2MuLjNlZWY0YzYwYmQzODU1ZmQ0NTg1OWZlOTQzNWQzMTk0ODZhYmVlNjEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5oCkBAIC03NCw3ICs3NCw3
IEBAIHB1YmxpYzoKIAogICAgIC8vIFBsdWctaW4gVVJMIG1pZ2h0IG5vdCBiZSB0aGUgc2FtZSBh
cyB1cmwoKSB3aXRoIG92ZXJyaWRpbmcgcGFyYW1ldGVycy4KICAgICB2b2lkIHN1YmZyYW1lTG9h
ZGVyV2lsbENyZWF0ZVBsdWdJbihjb25zdCBVUkwmIHBsdWdJblVSTCk7Ci0gICAgdm9pZCBzdWJm
cmFtZUxvYWRlckRpZENyZWF0ZVBsdWdJbihjb25zdCBXaWRnZXQqKTsKKyAgICB2b2lkIHN1YmZy
YW1lTG9hZGVyRGlkQ3JlYXRlUGx1Z0luKGNvbnN0IFdpZGdldCYpOwogCiAgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBzZXRJc1ByaW1hcnlTbmFwc2hvdHRlZFBsdWdJbihib29sKTsKICAgICBib29s
IHBhcnRPZlNuYXBzaG90T3ZlcmxheShOb2RlKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvU3ViZnJhbWVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YmZy
YW1lTG9hZGVyLmNwcAppbmRleCA3ZWU1NDhmZDNjOWQ1M2YxM2YwNGIzM2IyNTAzMjE3YTY0MDFj
ODk4Li44YTE2MTQyYTQ0MDg1ZmJiMzQzNjIyNzc3N2NhYTYzZDI4YmRjOTRiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3ViZnJhbWVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9TdWJmcmFtZUxvYWRlci5jcHAKQEAgLTQwOSw3ICs0MDksNyBAQCBib29s
IFN1YmZyYW1lTG9hZGVyOjpsb2FkUGx1Z2luKEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQmIHBsdWdp
bkVsZW1lbnQsIGNvbnN0IFVSTAogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAg
cGx1Z2luRWxlbWVudC5zdWJmcmFtZUxvYWRlckRpZENyZWF0ZVBsdWdJbih3aWRnZXQuZ2V0KCkp
OworICAgIHBsdWdpbkVsZW1lbnQuc3ViZnJhbWVMb2FkZXJEaWRDcmVhdGVQbHVnSW4oKndpZGdl
dCk7CiAgICAgcmVuZGVyZXItPnNldFdpZGdldCh3aWRnZXQpOwogICAgIG1fY29udGFpbnNQbHVn
aW5zID0gdHJ1ZTsKICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJv
bGxlci5jcHAKaW5kZXggYjc1N2U4YjQ5MDY0MWFhNDEzYTdmN2E0MTFkMTg2NDNkM2U3MDlkNS4u
ZWYzOTRmYmI2YTkwNDExZjkyMDYxNjUxMDNjZDg4YjZlZDhhNmEwMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9EcmFnQ29udHJvbGxlci5jcHAKQEAgLTM5MywxOSArMzkzLDE5IEBAIERyYWdTb3VyY2VB
Y3Rpb24gRHJhZ0NvbnRyb2xsZXI6OmRlbGVnYXRlRHJhZ1NvdXJjZUFjdGlvbihjb25zdCBJbnRQ
b2ludCYgcm9vdFZpCiAKIERyYWdPcGVyYXRpb24gRHJhZ0NvbnRyb2xsZXI6Om9wZXJhdGlvbkZv
ckxvYWQoRHJhZ0RhdGEmIGRyYWdEYXRhKQogewotICAgIERvY3VtZW50KiBkb2MgPSBtX3BhZ2Uu
bWFpbkZyYW1lKCkuZG9jdW1lbnRBdFBvaW50KGRyYWdEYXRhLmNsaWVudFBvc2l0aW9uKCkpOwor
ICAgIERvY3VtZW50KiBkb2N1bWVudCA9IG1fcGFnZS5tYWluRnJhbWUoKS5kb2N1bWVudEF0UG9p
bnQoZHJhZ0RhdGEuY2xpZW50UG9zaXRpb24oKSk7CiAKICAgICBib29sIHBsdWdpbkRvY3VtZW50
QWNjZXB0c0RyYWdzID0gZmFsc2U7CiAKLSAgICBpZiAoaXM8UGx1Z2luRG9jdW1lbnQ+KGRvYykp
IHsKLSAgICAgICAgY29uc3QgV2lkZ2V0KiB3aWRnZXQgPSBkb3duY2FzdDxQbHVnaW5Eb2N1bWVu
dD4oKmRvYykucGx1Z2luV2lkZ2V0KCk7Ci0gICAgICAgIGNvbnN0IFBsdWdpblZpZXdCYXNlKiBw
bHVnaW5WaWV3ID0gKHdpZGdldCAmJiB3aWRnZXQtPmlzUGx1Z2luVmlld0Jhc2UoKSkgPyB0b1Bs
dWdpblZpZXdCYXNlKHdpZGdldCkgOiBudWxscHRyOworICAgIGlmIChpczxQbHVnaW5Eb2N1bWVu
dD4oZG9jdW1lbnQpKSB7CisgICAgICAgIGNvbnN0IFdpZGdldCogd2lkZ2V0ID0gZG93bmNhc3Q8
UGx1Z2luRG9jdW1lbnQ+KCpkb2N1bWVudCkucGx1Z2luV2lkZ2V0KCk7CisgICAgICAgIGNvbnN0
IFBsdWdpblZpZXdCYXNlKiBwbHVnaW5WaWV3ID0gaXM8UGx1Z2luVmlld0Jhc2U+KHdpZGdldCkg
PyBkb3duY2FzdDxQbHVnaW5WaWV3QmFzZT4od2lkZ2V0KSA6IG51bGxwdHI7CiAKICAgICAgICAg
aWYgKHBsdWdpblZpZXcpCiAgICAgICAgICAgICBwbHVnaW5Eb2N1bWVudEFjY2VwdHNEcmFncyA9
IHBsdWdpblZpZXctPnNob3VsZEFsbG93TmF2aWdhdGlvbkZyb21EcmFncygpOwogICAgIH0KIAot
ICAgIGlmIChkb2MgJiYgKG1fZGlkSW5pdGlhdGVEcmFnIHx8IChkb2MtPmlzUGx1Z2luRG9jdW1l
bnQoKSAmJiAhcGx1Z2luRG9jdW1lbnRBY2NlcHRzRHJhZ3MpIHx8IGRvYy0+aGFzRWRpdGFibGVT
dHlsZSgpKSkKKyAgICBpZiAoZG9jdW1lbnQgJiYgKG1fZGlkSW5pdGlhdGVEcmFnIHx8IChpczxQ
bHVnaW5Eb2N1bWVudD4oKmRvY3VtZW50KSAmJiAhcGx1Z2luRG9jdW1lbnRBY2NlcHRzRHJhZ3Mp
IHx8IGRvY3VtZW50LT5oYXNFZGl0YWJsZVN0eWxlKCkpKQogICAgICAgICByZXR1cm4gRHJhZ09w
ZXJhdGlvbk5vbmU7CiAgICAgcmV0dXJuIGRyYWdPcGVyYXRpb24oZHJhZ0RhdGEpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCmluZGV4IDdlNGY0ZmMwNTYxNzllZDg2MWYyZGU3
ZDBjMTg0NTRmMTkyMTNmOTkuLjA4NzE3MTAwYjhlZGZjYjQwMmQ0NjA5YjA5MDI3ZjFhNDdlOWZh
Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKQEAgLTEyNTEsMTcgKzEyNTEs
MTcgQEAgRnJhbWUqIEV2ZW50SGFuZGxlcjo6c3ViZnJhbWVGb3JIaXRUZXN0UmVzdWx0KGNvbnN0
IE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMKIEZyYW1lKiBFdmVudEhhbmRsZXI6OnN1YmZy
YW1lRm9yVGFyZ2V0Tm9kZShOb2RlKiBub2RlKQogewogICAgIGlmICghbm9kZSkKLSAgICAgICAg
cmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgYXV0byByZW5kZXJlciA9
IG5vZGUtPnJlbmRlcmVyKCk7Ci0gICAgaWYgKCFyZW5kZXJlciB8fCAhcmVuZGVyZXItPmlzV2lk
Z2V0KCkpCi0gICAgICAgIHJldHVybiAwOworICAgIGlmICghaXM8UmVuZGVyV2lkZ2V0PihyZW5k
ZXJlcikpCisgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgV2lkZ2V0KiB3aWRnZXQgPSB0
b1JlbmRlcldpZGdldChyZW5kZXJlciktPndpZGdldCgpOwotICAgIGlmICghd2lkZ2V0IHx8ICF3
aWRnZXQtPmlzRnJhbWVWaWV3KCkpCi0gICAgICAgIHJldHVybiAwOworICAgIFdpZGdldCogd2lk
Z2V0ID0gZG93bmNhc3Q8UmVuZGVyV2lkZ2V0PigqcmVuZGVyZXIpLndpZGdldCgpOworICAgIGlm
ICghaXM8RnJhbWVWaWV3Pih3aWRnZXQpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAg
IHJldHVybiAmdG9GcmFtZVZpZXcod2lkZ2V0KS0+ZnJhbWUoKTsKKyAgICByZXR1cm4gJmRvd25j
YXN0PEZyYW1lVmlldz4oKndpZGdldCkuZnJhbWUoKTsKIH0KIAogI2lmIEVOQUJMRShDVVJTT1Jf
U1VQUE9SVCkKQEAgLTI3MDYsNyArMjcwNiw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVX
aGVlbEV2ZW50KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgZXZlbnQpCiAgICAgICAgICAgICBS
ZW5kZXJFbGVtZW50KiB0YXJnZXQgPSBlbGVtZW50LT5yZW5kZXJlcigpOwogICAgICAgICAgICAg
aWYgKHRhcmdldCAmJiB0YXJnZXQtPmlzV2lkZ2V0KCkpIHsKICAgICAgICAgICAgICAgICBXaWRn
ZXQqIHdpZGdldCA9IHRvUmVuZGVyV2lkZ2V0KHRhcmdldCktPndpZGdldCgpOwotICAgICAgICAg
ICAgICAgIGlmICh3aWRnZXQgJiYgcGFzc1doZWVsRXZlbnRUb1dpZGdldChldmVudCwgd2lkZ2V0
KSkgeworICAgICAgICAgICAgICAgIGlmICh3aWRnZXQgJiYgcGFzc1doZWVsRXZlbnRUb1dpZGdl
dChldmVudCwgKndpZGdldCkpIHsKICAgICAgICAgICAgICAgICAgICAgbV9pc0hhbmRsaW5nV2hl
ZWxFdmVudCA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAgICBpZiAoc2Nyb2xsYWJsZUFyZWEp
CiAgICAgICAgICAgICAgICAgICAgICAgICBzY3JvbGxhYmxlQXJlYS0+c2V0U2Nyb2xsZWRQcm9n
cmFtbWF0aWNhbGx5KGZhbHNlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZl
bnRIYW5kbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5oCmluZGV4IDAw
ODYzNjNkM2E2MTFhYjVjYTBkYWRhY2I2MzhmYzQxYmI3YmEzYzkuLjM3ZWE3NWRhOGRmM2ExMzQ1
Yjg4MzUzMjE5NGM2ODZkZDU3OTkwZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RXZlbnRIYW5kbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuaApA
QCAtMzk0LDcgKzM5NCw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBwYXNzV2lkZ2V0TW91c2VEb3du
RXZlbnRUb1dpZGdldChSZW5kZXJXaWRnZXQqKTsKIAogICAgIGJvb2wgcGFzc01vdXNlRG93bkV2
ZW50VG9XaWRnZXQoV2lkZ2V0Kik7Ci0gICAgYm9vbCBwYXNzV2hlZWxFdmVudFRvV2lkZ2V0KGNv
bnN0IFBsYXRmb3JtV2hlZWxFdmVudCYsIFdpZGdldCopOworICAgIGJvb2wgcGFzc1doZWVsRXZl
bnRUb1dpZGdldChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmLCBXaWRnZXQmKTsKIAogICAgIHZv
aWQgZGVmYXVsdFNwYWNlRXZlbnRIYW5kbGVyKEtleWJvYXJkRXZlbnQqKTsKICAgICB2b2lkIGRl
ZmF1bHRCYWNrc3BhY2VFdmVudEhhbmRsZXIoS2V5Ym9hcmRFdmVudCopOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1l
LmNwcAppbmRleCAyZWZmZTFkMGQ0M2E2MzkyMWY4YWFmM2Y0MGNhMWJlZjQyODgxM2E1Li44Yjhm
NjNjYmY1NzM3Njk5NWFkMWY1M2Y0N2I0YTFlOTE4NGVjMjNjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNw
cApAQCAtNzU3LDggKzc1Nyw3IEBAIEZyYW1lKiBGcmFtZTo6ZnJhbWVGb3JXaWRnZXQoY29uc3Qg
V2lkZ2V0KiB3aWRnZXQpCiAKICAgICAvLyBBc3N1bWUgYWxsIHdpZGdldHMgYXJlIGVpdGhlciBh
IEZyYW1lVmlldyBvciBvd25lZCBieSBhIFJlbmRlcldpZGdldC4KICAgICAvLyBGSVhNRTogVGhh
dCBhc3N1bXB0aW9uIGlzIG5vdCByaWdodCBmb3Igc2Nyb2xsIGJhcnMhCi0gICAgQVNTRVJUX1dJ
VEhfU0VDVVJJVFlfSU1QTElDQVRJT04od2lkZ2V0LT5pc0ZyYW1lVmlldygpKTsKLSAgICByZXR1
cm4gJnRvRnJhbWVWaWV3KHdpZGdldCktPmZyYW1lKCk7CisgICAgcmV0dXJuICZkb3duY2FzdDxG
cmFtZVZpZXc+KCp3aWRnZXQpLmZyYW1lKCk7CiB9CiAKIHZvaWQgRnJhbWU6OmNsZWFyVGltZXJz
KEZyYW1lVmlldyAqdmlldywgRG9jdW1lbnQgKmRvY3VtZW50KQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZp
ZXcuY3BwCmluZGV4IGJlNmI2MDAwYzVhMTEwYzM1NTgxZWQ2NmRjZWUzYzZkYTliOWFjMzEuLmJl
NDM1YjFhZGFhMzRhMjRkNzNkZGU5ZTg2MGJiMzlkYWYyYjdjYzAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Zy
YW1lVmlldy5jcHAKQEAgLTM1NjgsMTEgKzM1NjgsMTEgQEAgQ29sb3IgRnJhbWVWaWV3Ojpkb2N1
bWVudEJhY2tncm91bmRDb2xvcigpIGNvbnN0CiBib29sIEZyYW1lVmlldzo6aGFzQ3VzdG9tU2Ny
b2xsYmFycygpIGNvbnN0CiB7CiAgICAgZm9yIChhdXRvJiB3aWRnZXQgOiBjaGlsZHJlbigpKSB7
Ci0gICAgICAgIGlmICh3aWRnZXQtPmlzRnJhbWVWaWV3KCkpIHsKLSAgICAgICAgICAgIGlmICh0
b0ZyYW1lVmlldygqd2lkZ2V0KS5oYXNDdXN0b21TY3JvbGxiYXJzKCkpCisgICAgICAgIGlmIChp
czxGcmFtZVZpZXc+KCp3aWRnZXQpKSB7CisgICAgICAgICAgICBpZiAoZG93bmNhc3Q8RnJhbWVW
aWV3Pigqd2lkZ2V0KS5oYXNDdXN0b21TY3JvbGxiYXJzKCkpCiAgICAgICAgICAgICAgICAgcmV0
dXJuIHRydWU7Ci0gICAgICAgIH0gZWxzZSBpZiAod2lkZ2V0LT5pc1Njcm9sbGJhcigpKSB7Ci0g
ICAgICAgICAgICBpZiAodG9TY3JvbGxiYXIoKndpZGdldCkuaXNDdXN0b21TY3JvbGxiYXIoKSkK
KyAgICAgICAgfSBlbHNlIGlmIChpczxTY3JvbGxiYXI+KCp3aWRnZXQpKSB7CisgICAgICAgICAg
ICBpZiAoZG93bmNhc3Q8U2Nyb2xsYmFyPigqd2lkZ2V0KS5pc0N1c3RvbVNjcm9sbGJhcigpKQog
ICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAgICAgfQpAQCAtMzkwNSw4
ICszOTA1LDggQEAgdm9pZCBGcmFtZVZpZXc6OnVwZGF0ZUxheW91dEFuZFN0eWxlSWZOZWVkZWRS
ZWN1cnNpdmUoKQogICAgIFZlY3RvcjxSZWY8RnJhbWVWaWV3PiwgMTY+IGNoaWxkVmlld3M7CiAg
ICAgY2hpbGRWaWV3cy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGNoaWxkcmVuKCkuc2l6ZSgpKTsK
ICAgICBmb3IgKGF1dG8mIHdpZGdldCA6IGNoaWxkcmVuKCkpIHsKLSAgICAgICAgaWYgKHdpZGdl
dC0+aXNGcmFtZVZpZXcoKSkKLSAgICAgICAgICAgIGNoaWxkVmlld3MudW5jaGVja2VkQXBwZW5k
KHRvRnJhbWVWaWV3KCp3aWRnZXQpKTsKKyAgICAgICAgaWYgKGlzPEZyYW1lVmlldz4oKndpZGdl
dCkpCisgICAgICAgICAgICBjaGlsZFZpZXdzLnVuY2hlY2tlZEFwcGVuZChkb3duY2FzdDxGcmFt
ZVZpZXc+KCp3aWRnZXQpKTsKICAgICB9CiAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
Y2hpbGRWaWV3cy5zaXplKCk7ICsraSkKQEAgLTQxMDQsOCArNDEwNCw4IEBAIEludFBvaW50IEZy
YW1lVmlldzo6Y29udmVydEZyb21Db250YWluaW5nVmlld1RvUmVuZGVyZXIoY29uc3QgUmVuZGVy
RWxlbWVudCogcmVuCiBJbnRSZWN0IEZyYW1lVmlldzo6Y29udmVydFRvQ29udGFpbmluZ1ZpZXco
Y29uc3QgSW50UmVjdCYgbG9jYWxSZWN0KSBjb25zdAogewogICAgIGlmIChjb25zdCBTY3JvbGxW
aWV3KiBwYXJlbnRTY3JvbGxWaWV3ID0gcGFyZW50KCkpIHsKLSAgICAgICAgaWYgKHBhcmVudFNj
cm9sbFZpZXctPmlzRnJhbWVWaWV3KCkpIHsKLSAgICAgICAgICAgIGNvbnN0IEZyYW1lVmlldyog
cGFyZW50VmlldyA9IHRvRnJhbWVWaWV3KHBhcmVudFNjcm9sbFZpZXcpOworICAgICAgICBpZiAo
aXM8RnJhbWVWaWV3PigqcGFyZW50U2Nyb2xsVmlldykpIHsKKyAgICAgICAgICAgIGNvbnN0IEZy
YW1lVmlldyYgcGFyZW50VmlldyA9IGRvd25jYXN0PEZyYW1lVmlldz4oKnBhcmVudFNjcm9sbFZp
ZXcpOwogICAgICAgICAgICAgLy8gR2V0IG91ciByZW5kZXJlciBpbiB0aGUgcGFyZW50IHZpZXcK
ICAgICAgICAgICAgIFJlbmRlcldpZGdldCogcmVuZGVyZXIgPSBmcmFtZSgpLm93bmVyUmVuZGVy
ZXIoKTsKICAgICAgICAgICAgIGlmICghcmVuZGVyZXIpCkBAIC00MTE1LDcgKzQxMTUsNyBAQCBJ
bnRSZWN0IEZyYW1lVmlldzo6Y29udmVydFRvQ29udGFpbmluZ1ZpZXcoY29uc3QgSW50UmVjdCYg
bG9jYWxSZWN0KSBjb25zdAogICAgICAgICAgICAgLy8gQWRkIGJvcmRlcnMgYW5kIHBhZGRpbmc/
PwogICAgICAgICAgICAgcmVjdC5tb3ZlKHJlbmRlcmVyLT5ib3JkZXJMZWZ0KCkgKyByZW5kZXJl
ci0+cGFkZGluZ0xlZnQoKSwKICAgICAgICAgICAgICAgICAgICAgICByZW5kZXJlci0+Ym9yZGVy
VG9wKCkgKyByZW5kZXJlci0+cGFkZGluZ1RvcCgpKTsKLSAgICAgICAgICAgIHJldHVybiBwYXJl
bnRWaWV3LT5jb252ZXJ0RnJvbVJlbmRlcmVyVG9Db250YWluaW5nVmlldyhyZW5kZXJlciwgcmVj
dCk7CisgICAgICAgICAgICByZXR1cm4gcGFyZW50Vmlldy5jb252ZXJ0RnJvbVJlbmRlcmVyVG9D
b250YWluaW5nVmlldyhyZW5kZXJlciwgcmVjdCk7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAg
ICAgIHJldHVybiBXaWRnZXQ6OmNvbnZlcnRUb0NvbnRhaW5pbmdWaWV3KGxvY2FsUmVjdCk7CkBA
IC00MTI3LDE1ICs0MTI3LDE1IEBAIEludFJlY3QgRnJhbWVWaWV3Ojpjb252ZXJ0VG9Db250YWlu
aW5nVmlldyhjb25zdCBJbnRSZWN0JiBsb2NhbFJlY3QpIGNvbnN0CiBJbnRSZWN0IEZyYW1lVmll
dzo6Y29udmVydEZyb21Db250YWluaW5nVmlldyhjb25zdCBJbnRSZWN0JiBwYXJlbnRSZWN0KSBj
b25zdAogewogICAgIGlmIChjb25zdCBTY3JvbGxWaWV3KiBwYXJlbnRTY3JvbGxWaWV3ID0gcGFy
ZW50KCkpIHsKLSAgICAgICAgaWYgKHBhcmVudFNjcm9sbFZpZXctPmlzRnJhbWVWaWV3KCkpIHsK
LSAgICAgICAgICAgIGNvbnN0IEZyYW1lVmlldyogcGFyZW50VmlldyA9IHRvRnJhbWVWaWV3KHBh
cmVudFNjcm9sbFZpZXcpOworICAgICAgICBpZiAoaXM8RnJhbWVWaWV3PigqcGFyZW50U2Nyb2xs
VmlldykpIHsKKyAgICAgICAgICAgIGNvbnN0IEZyYW1lVmlldyYgcGFyZW50VmlldyA9IGRvd25j
YXN0PEZyYW1lVmlldz4oKnBhcmVudFNjcm9sbFZpZXcpOwogCiAgICAgICAgICAgICAvLyBHZXQg
b3VyIHJlbmRlcmVyIGluIHRoZSBwYXJlbnQgdmlldwogICAgICAgICAgICAgUmVuZGVyV2lkZ2V0
KiByZW5kZXJlciA9IGZyYW1lKCkub3duZXJSZW5kZXJlcigpOwogICAgICAgICAgICAgaWYgKCFy
ZW5kZXJlcikKICAgICAgICAgICAgICAgICByZXR1cm4gcGFyZW50UmVjdDsKIAotICAgICAgICAg
ICAgSW50UmVjdCByZWN0ID0gcGFyZW50Vmlldy0+Y29udmVydEZyb21Db250YWluaW5nVmlld1Rv
UmVuZGVyZXIocmVuZGVyZXIsIHBhcmVudFJlY3QpOworICAgICAgICAgICAgSW50UmVjdCByZWN0
ID0gcGFyZW50Vmlldy5jb252ZXJ0RnJvbUNvbnRhaW5pbmdWaWV3VG9SZW5kZXJlcihyZW5kZXJl
ciwgcGFyZW50UmVjdCk7CiAgICAgICAgICAgICAvLyBTdWJ0cmFjdCBib3JkZXJzIGFuZCBwYWRk
aW5nCiAgICAgICAgICAgICByZWN0Lm1vdmUoLXJlbmRlcmVyLT5ib3JkZXJMZWZ0KCkgLSByZW5k
ZXJlci0+cGFkZGluZ0xlZnQoKSwKICAgICAgICAgICAgICAgICAgICAgICAtcmVuZGVyZXItPmJv
cmRlclRvcCgpIC0gcmVuZGVyZXItPnBhZGRpbmdUb3AoKSk7CkBAIC00MTUxLDggKzQxNTEsOCBA
QCBJbnRSZWN0IEZyYW1lVmlldzo6Y29udmVydEZyb21Db250YWluaW5nVmlldyhjb25zdCBJbnRS
ZWN0JiBwYXJlbnRSZWN0KSBjb25zdAogSW50UG9pbnQgRnJhbWVWaWV3Ojpjb252ZXJ0VG9Db250
YWluaW5nVmlldyhjb25zdCBJbnRQb2ludCYgbG9jYWxQb2ludCkgY29uc3QKIHsKICAgICBpZiAo
Y29uc3QgU2Nyb2xsVmlldyogcGFyZW50U2Nyb2xsVmlldyA9IHBhcmVudCgpKSB7Ci0gICAgICAg
IGlmIChwYXJlbnRTY3JvbGxWaWV3LT5pc0ZyYW1lVmlldygpKSB7Ci0gICAgICAgICAgICBjb25z
dCBGcmFtZVZpZXcqIHBhcmVudFZpZXcgPSB0b0ZyYW1lVmlldyhwYXJlbnRTY3JvbGxWaWV3KTsK
KyAgICAgICAgaWYgKGlzPEZyYW1lVmlldz4oKnBhcmVudFNjcm9sbFZpZXcpKSB7CisgICAgICAg
ICAgICBjb25zdCBGcmFtZVZpZXcmIHBhcmVudFZpZXcgPSBkb3duY2FzdDxGcmFtZVZpZXc+KCpw
YXJlbnRTY3JvbGxWaWV3KTsKIAogICAgICAgICAgICAgLy8gR2V0IG91ciByZW5kZXJlciBpbiB0
aGUgcGFyZW50IHZpZXcKICAgICAgICAgICAgIFJlbmRlcldpZGdldCogcmVuZGVyZXIgPSBmcmFt
ZSgpLm93bmVyUmVuZGVyZXIoKTsKQEAgLTQxNjQsNyArNDE2NCw3IEBAIEludFBvaW50IEZyYW1l
Vmlldzo6Y29udmVydFRvQ29udGFpbmluZ1ZpZXcoY29uc3QgSW50UG9pbnQmIGxvY2FsUG9pbnQp
IGNvbnN0CiAgICAgICAgICAgICAvLyBBZGQgYm9yZGVycyBhbmQgcGFkZGluZwogICAgICAgICAg
ICAgcG9pbnQubW92ZShyZW5kZXJlci0+Ym9yZGVyTGVmdCgpICsgcmVuZGVyZXItPnBhZGRpbmdM
ZWZ0KCksCiAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRlcmVyLT5ib3JkZXJUb3AoKSArIHJl
bmRlcmVyLT5wYWRkaW5nVG9wKCkpOwotICAgICAgICAgICAgcmV0dXJuIHBhcmVudFZpZXctPmNv
bnZlcnRGcm9tUmVuZGVyZXJUb0NvbnRhaW5pbmdWaWV3KHJlbmRlcmVyLCBwb2ludCk7CisgICAg
ICAgICAgICByZXR1cm4gcGFyZW50Vmlldy5jb252ZXJ0RnJvbVJlbmRlcmVyVG9Db250YWluaW5n
VmlldyhyZW5kZXJlciwgcG9pbnQpOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICByZXR1
cm4gV2lkZ2V0Ojpjb252ZXJ0VG9Db250YWluaW5nVmlldyhsb2NhbFBvaW50KTsKQEAgLTQxNzYs
MTUgKzQxNzYsMTUgQEAgSW50UG9pbnQgRnJhbWVWaWV3Ojpjb252ZXJ0VG9Db250YWluaW5nVmll
dyhjb25zdCBJbnRQb2ludCYgbG9jYWxQb2ludCkgY29uc3QKIEludFBvaW50IEZyYW1lVmlldzo6
Y29udmVydEZyb21Db250YWluaW5nVmlldyhjb25zdCBJbnRQb2ludCYgcGFyZW50UG9pbnQpIGNv
bnN0CiB7CiAgICAgaWYgKGNvbnN0IFNjcm9sbFZpZXcqIHBhcmVudFNjcm9sbFZpZXcgPSBwYXJl
bnQoKSkgewotICAgICAgICBpZiAocGFyZW50U2Nyb2xsVmlldy0+aXNGcmFtZVZpZXcoKSkgewot
ICAgICAgICAgICAgY29uc3QgRnJhbWVWaWV3KiBwYXJlbnRWaWV3ID0gdG9GcmFtZVZpZXcocGFy
ZW50U2Nyb2xsVmlldyk7CisgICAgICAgIGlmIChpczxGcmFtZVZpZXc+KCpwYXJlbnRTY3JvbGxW
aWV3KSkgeworICAgICAgICAgICAgY29uc3QgRnJhbWVWaWV3JiBwYXJlbnRWaWV3ID0gZG93bmNh
c3Q8RnJhbWVWaWV3PigqcGFyZW50U2Nyb2xsVmlldyk7CiAKICAgICAgICAgICAgIC8vIEdldCBv
dXIgcmVuZGVyZXIgaW4gdGhlIHBhcmVudCB2aWV3CiAgICAgICAgICAgICBSZW5kZXJXaWRnZXQq
IHJlbmRlcmVyID0gZnJhbWUoKS5vd25lclJlbmRlcmVyKCk7CiAgICAgICAgICAgICBpZiAoIXJl
bmRlcmVyKQogICAgICAgICAgICAgICAgIHJldHVybiBwYXJlbnRQb2ludDsKIAotICAgICAgICAg
ICAgSW50UG9pbnQgcG9pbnQgPSBwYXJlbnRWaWV3LT5jb252ZXJ0RnJvbUNvbnRhaW5pbmdWaWV3
VG9SZW5kZXJlcihyZW5kZXJlciwgcGFyZW50UG9pbnQpOworICAgICAgICAgICAgSW50UG9pbnQg
cG9pbnQgPSBwYXJlbnRWaWV3LmNvbnZlcnRGcm9tQ29udGFpbmluZ1ZpZXdUb1JlbmRlcmVyKHJl
bmRlcmVyLCBwYXJlbnRQb2ludCk7CiAgICAgICAgICAgICAvLyBTdWJ0cmFjdCBib3JkZXJzIGFu
ZCBwYWRkaW5nCiAgICAgICAgICAgICBwb2ludC5tb3ZlKC1yZW5kZXJlci0+Ym9yZGVyTGVmdCgp
IC0gcmVuZGVyZXItPnBhZGRpbmdMZWZ0KCksCiAgICAgICAgICAgICAgICAgICAgICAgIC1yZW5k
ZXJlci0+Ym9yZGVyVG9wKCkgLSByZW5kZXJlci0+cGFkZGluZ1RvcCgpKTsKQEAgLTQyODAsMTAg
KzQyODAsMTAgQEAgdm9pZCBGcmFtZVZpZXc6OnNlbmRTY3JvbGxFdmVudCgpCiAgICAgZnJhbWUo
KS5ldmVudEhhbmRsZXIoKS5kaXNwYXRjaEZha2VNb3VzZU1vdmVFdmVudFNvb24oKTsKIH0KIAot
dm9pZCBGcmFtZVZpZXc6OnJlbW92ZUNoaWxkKFdpZGdldCogd2lkZ2V0KQordm9pZCBGcmFtZVZp
ZXc6OnJlbW92ZUNoaWxkKFdpZGdldCYgd2lkZ2V0KQogewotICAgIGlmICh3aWRnZXQtPmlzRnJh
bWVWaWV3KCkpCi0gICAgICAgIHJlbW92ZVNjcm9sbGFibGVBcmVhKHRvRnJhbWVWaWV3KHdpZGdl
dCkpOworICAgIGlmIChpczxGcmFtZVZpZXc+KHdpZGdldCkpCisgICAgICAgIHJlbW92ZVNjcm9s
bGFibGVBcmVhKCZkb3duY2FzdDxGcmFtZVZpZXc+KHdpZGdldCkpOwogCiAgICAgU2Nyb2xsVmll
dzo6cmVtb3ZlQ2hpbGQod2lkZ2V0KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRnJhbWVWaWV3LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCmluZGV4IDky
YWE5YjkyNmNmMDAyZmYxY2JmZTIwZmE1YzVjOGY4ODUzOWYyODMuLmFmOTgwZjU4ODQyMjcwYTZh
YWJmNTIxMDQyM2Q2NDE2YzJkNjIyY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RnJhbWVWaWV3LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaApAQCAtNDM0
LDcgKzQzNCw3IEBAIHB1YmxpYzoKICAgICBib29sIGNvbnRhaW5zU2Nyb2xsYWJsZUFyZWEoU2Ny
b2xsYWJsZUFyZWEqKSBjb25zdDsKICAgICBjb25zdCBTY3JvbGxhYmxlQXJlYVNldCogc2Nyb2xs
YWJsZUFyZWFzKCkgY29uc3QgeyByZXR1cm4gbV9zY3JvbGxhYmxlQXJlYXMuZ2V0KCk7IH0KIAot
ICAgIHZpcnR1YWwgdm9pZCByZW1vdmVDaGlsZChXaWRnZXQqKSBvdmVycmlkZTsKKyAgICB2aXJ0
dWFsIHZvaWQgcmVtb3ZlQ2hpbGQoV2lkZ2V0Jikgb3ZlcnJpZGU7CiAKICAgICAvLyBUaGlzIGZ1
bmN0aW9uIGV4aXN0cyBmb3IgcG9ydHMgdGhhdCBuZWVkIHRvIGhhbmRsZSB3aGVlbCBldmVudHMg
bWFudWFsbHkuCiAgICAgLy8gT24gTWFjIFdlYktpdDEgdGhlIHVuZGVybHlpbmcgTlNTY3JvbGxW
aWV3IGp1c3QgZG9lcyB0aGUgc2Nyb2xsaW5nLCBidXQgb24gbW9zdCBvdGhlciBwbGF0Zm9ybXMK
QEAgLTc4OCw4ICs3ODgsOCBAQCBpbmxpbmUgdm9pZCBGcmFtZVZpZXc6OmluY3JlbWVudFZpc3Vh
bGx5Tm9uRW1wdHlQaXhlbENvdW50KGNvbnN0IEludFNpemUmIHNpemUpCiAgICAgdXBkYXRlSXNW
aXN1YWxseU5vbkVtcHR5KCk7CiB9CiAKLVdJREdFVF9UWVBFX0NBU1RTKEZyYW1lVmlldywgaXNG
cmFtZVZpZXcoKSk7Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAorU1BFQ0lBTElaRV9UWVBF
X1RSQUlUU19XSURHRVQoRnJhbWVWaWV3LCBpc0ZyYW1lVmlldygpKQorCiAjZW5kaWYgLy8gRnJh
bWVWaWV3X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCmluZGV4IDAxZWYwN2U1Yjc0NjBkM2U0ZmZkNTMxOWI2
MDkyMWI3MTI4NTg1ZTQuLjNhZGE3ZWRjYWRkMmQyMTUwNWNjY2EwMzZiN2MyMjUxOTk1ZDJjMmQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9QYWdlLmNwcApAQCAtMTE2Myw5ICsxMTYzLDkgQEAgVmVjdG9yPFJlZjxQbHVn
aW5WaWV3QmFzZT4+IFBhZ2U6OnBsdWdpblZpZXdzKCkKICAgICAgICAgICAgIGJyZWFrOwogCiAg
ICAgICAgIGZvciAoYXV0byBpdCA9IHZpZXctPmNoaWxkcmVuKCkuYmVnaW4oKSwgZW5kID0gdmll
dy0+Y2hpbGRyZW4oKS5lbmQoKTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0gICAgICAgICAgICBXaWRn
ZXQqIHdpZGdldCA9ICgqaXQpLmdldCgpOwotICAgICAgICAgICAgaWYgKHdpZGdldC0+aXNQbHVn
aW5WaWV3QmFzZSgpKQotICAgICAgICAgICAgICAgIHZpZXdzLmFwcGVuZCgqdG9QbHVnaW5WaWV3
QmFzZSh3aWRnZXQpKTsKKyAgICAgICAgICAgIFdpZGdldCYgd2lkZ2V0ID0gKippdDsKKyAgICAg
ICAgICAgIGlmIChpczxQbHVnaW5WaWV3QmFzZT4od2lkZ2V0KSkKKyAgICAgICAgICAgICAgICB2
aWV3cy5hcHBlbmQoZG93bmNhc3Q8UGx1Z2luVmlld0Jhc2U+KHdpZGdldCkpOwogICAgICAgICB9
CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2VmbC9FdmVudEhhbmRs
ZXJFZmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9lZmwvRXZlbnRIYW5kbGVyRWZsLmNwcApp
bmRleCA3OGM3MTMyY2U0YmI4YzIwMGQ1MTU4MDZjOTIxMzU3NjZlZTI2OTY3Li5jNDM5Mzg4NGZl
N2MxYzAxOTZlZjRlMDMwYzY5NDg1Yzg2YTQxMTAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL2VmbC9FdmVudEhhbmRsZXJFZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
ZWZsL0V2ZW50SGFuZGxlckVmbC5jcHAKQEAgLTg3LDEzICs4NywxMiBAQCBib29sIEV2ZW50SGFu
ZGxlcjo6ZXZlbnRBY3RpdmF0ZWRWaWV3KGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYpIGNvbnN0
CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIEV2ZW50SGFuZGxlcjo6cGFzc1doZWVsRXZl
bnRUb1dpZGdldChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIGV2ZW50LCBXaWRnZXQqIHdpZGdl
dCkKK2Jvb2wgRXZlbnRIYW5kbGVyOjpwYXNzV2hlZWxFdmVudFRvV2lkZ2V0KGNvbnN0IFBsYXRm
b3JtV2hlZWxFdmVudCYgZXZlbnQsIFdpZGdldCYgd2lkZ2V0KQogewotICAgIEFTU0VSVCh3aWRn
ZXQpOwotICAgIGlmICghd2lkZ2V0LT5pc0ZyYW1lVmlldygpKQorICAgIGlmICghaXM8d2lkZ2V0
Pih3aWRnZXQpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICByZXR1cm4gdG9GcmFtZVZp
ZXcod2lkZ2V0KS0+ZnJhbWUoKS5ldmVudEhhbmRsZXIoKS5oYW5kbGVXaGVlbEV2ZW50KGV2ZW50
KTsKKyAgICByZXR1cm4gZG93bmNhc3Q8RnJhbWVWaWV3Pih3aWRnZXQpLmZyYW1lKCkuZXZlbnRI
YW5kbGVyKCkuaGFuZGxlV2hlZWxFdmVudChldmVudCk7CiB9CiAKICNpZiBFTkFCTEUoRFJBR19T
VVBQT1JUKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9ndGsvRXZlbnRIYW5kbGVy
R3RrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvZ3RrL0V2ZW50SGFuZGxlckd0ay5jcHAKaW5k
ZXggZDM5MDNkYmYzNmRmYmI4YzZhODljZDM4MjI3YmY1ZDE5NWM5OGYyZi4uOTQ4M2Y5M2IzN2Vi
OWQwMDVjM2E4YzliY2FlNmNkY2QxOGRlZWMxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9ndGsvRXZlbnRIYW5kbGVyR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2d0
ay9FdmVudEhhbmRsZXJHdGsuY3BwCkBAIC04NywxMyArODcsMTIgQEAgYm9vbCBFdmVudEhhbmRs
ZXI6OmV2ZW50QWN0aXZhdGVkVmlldyhjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmKSBjb25zdAog
ICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBFdmVudEhhbmRsZXI6OnBhc3NXaGVlbEV2ZW50
VG9XaWRnZXQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiBldmVudCwgV2lkZ2V0KiB3aWRnZXQp
Citib29sIEV2ZW50SGFuZGxlcjo6cGFzc1doZWVsRXZlbnRUb1dpZGdldChjb25zdCBQbGF0Zm9y
bVdoZWVsRXZlbnQmIGV2ZW50LCBXaWRnZXQmIHdpZGdldCkKIHsKLSAgICBBU1NFUlQod2lkZ2V0
KTsKLSAgICBpZiAoIXdpZGdldC0+aXNGcmFtZVZpZXcoKSkKKyAgICBpZiAoIWlzPEZyYW1lVmll
dz4od2lkZ2V0KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgcmV0dXJuIHRvRnJhbWVW
aWV3KHdpZGdldCktPmZyYW1lKCkuZXZlbnRIYW5kbGVyKCkuaGFuZGxlV2hlZWxFdmVudChldmVu
dCk7CisgICAgcmV0dXJuIGRvd25jYXN0PEZyYW1lVmlldz4od2lkZ2V0KS5mcmFtZSgpLmV2ZW50
SGFuZGxlcigpLmhhbmRsZVdoZWVsRXZlbnQoZXZlbnQpOwogfQogCiAjaWYgRU5BQkxFKERSQUdf
U1VQUE9SVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvaW9zL0V2ZW50SGFuZGxl
cklPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvaW9zL0V2ZW50SGFuZGxlcklPUy5tbQppbmRl
eCBjZmI2ZmE2YWI1NTlkNzg0ZjcyMTZlY2E4M2E0MTExOTQ2ZWU4MTBjLi44MzdhN2E5MjQ4Yzcw
MjgxZTE5ZTg0MzY1YTgwOWU4ZmU4MGY0MDFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL2lvcy9FdmVudEhhbmRsZXJJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9pb3Mv
RXZlbnRIYW5kbGVySU9TLm1tCkBAIC0zOTcsMjAgKzM5NywxNyBAQCBib29sIEV2ZW50SGFuZGxl
cjo6cGFzc1N1YmZyYW1lRXZlbnRUb1N1YmZyYW1lKE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3Vs
dHMmIGV2ZQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBFdmVudEhhbmRsZXI6OnBhc3NX
aGVlbEV2ZW50VG9XaWRnZXQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiwgV2lkZ2V0KiB3aWRn
ZXQpCitib29sIEV2ZW50SGFuZGxlcjo6cGFzc1doZWVsRXZlbnRUb1dpZGdldChjb25zdCBQbGF0
Zm9ybVdoZWVsRXZlbnQmLCBXaWRnZXQmIHdpZGdldCkKIHsKICAgICBCRUdJTl9CTE9DS19PQkpD
X0VYQ0VQVElPTlM7CiAKLSAgICBpZiAoIXdpZGdldCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwot
Ci0gICAgTlNWaWV3KiBub2RlVmlldyA9IHdpZGdldC0+cGxhdGZvcm1XaWRnZXQoKTsKKyAgICBO
U1ZpZXcqIG5vZGVWaWV3ID0gd2lkZ2V0LnBsYXRmb3JtV2lkZ2V0KCk7CiAgICAgaWYgKCFub2Rl
VmlldykgewogICAgICAgICAvLyBXSzIgY29kZSBwYXRoLiBObyB3aGVlbCBldmVudHMgb24gaU9T
IGFueXdheS4KICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIGlmIChjdXJyZW50
RXZlbnQoKS50eXBlICE9IFdlYkV2ZW50U2Nyb2xsV2hlZWwgfHwgbV9zZW5kaW5nRXZlbnRUb1N1
YnZpZXcgfHwgIXdpZGdldCkKKyAgICBpZiAoY3VycmVudEV2ZW50KCkudHlwZSAhPSBXZWJFdmVu
dFNjcm9sbFdoZWVsIHx8IG1fc2VuZGluZ0V2ZW50VG9TdWJ2aWV3KQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKICAgICBBU1NFUlQobm9kZVZpZXcpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9tYWMvRXZlbnRIYW5kbGVyTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMv
RXZlbnRIYW5kbGVyTWFjLm1tCmluZGV4IDA2ZTZlOTNiYTk2MDI5YmQwYTgxZWQ4MzQwNWFjM2U2
MDhjODU2NzUuLjNkNzUxNDg2OTYyMWZjY2YxNzc3M2FmZTAyNzFjMGU0MmIwYjM4OTQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0V2ZW50SGFuZGxlck1hYy5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL21hYy9FdmVudEhhbmRsZXJNYWMubW0KQEAgLTQyMywyMCArNDIz
LDE3IEBAIHN0YXRpYyB2b2lkIHNlbGZSZXRhaW5pbmdOU1Njcm9sbFZpZXdTY3JvbGxXaGVlbChO
U1Njcm9sbFZpZXcgKnNlbGYsIFNFTCBzZWxlY3RvCiAgICAgICAgIFtzZWxmIHJlbGVhc2VdOwog
fQogCi1ib29sIEV2ZW50SGFuZGxlcjo6cGFzc1doZWVsRXZlbnRUb1dpZGdldChjb25zdCBQbGF0
Zm9ybVdoZWVsRXZlbnQmIHdoZWVsRXZlbnQsIFdpZGdldCogd2lkZ2V0KQorYm9vbCBFdmVudEhh
bmRsZXI6OnBhc3NXaGVlbEV2ZW50VG9XaWRnZXQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiB3
aGVlbEV2ZW50LCBXaWRnZXQmIHdpZGdldCkKIHsKICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQ
VElPTlM7CiAKLSAgICBpZiAoIXdpZGdldCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAg
TlNWaWV3KiBub2RlVmlldyA9IHdpZGdldC0+cGxhdGZvcm1XaWRnZXQoKTsKKyAgICBOU1ZpZXcq
IG5vZGVWaWV3ID0gd2lkZ2V0LnBsYXRmb3JtV2lkZ2V0KCk7CiAgICAgaWYgKCFub2RlVmlldykg
ewogICAgICAgICAvLyBXZWJLaXQyIGNvZGUgcGF0aC4KLSAgICAgICAgaWYgKCF3aWRnZXQtPmlz
RnJhbWVWaWV3KCkpCisgICAgICAgIGlmICghaXM8RnJhbWVWaWV3Pih3aWRnZXQpKQogICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgIHJldHVybiB0b0ZyYW1lVmlldyh3aWRnZXQp
LT5mcmFtZSgpLmV2ZW50SGFuZGxlcigpLmhhbmRsZVdoZWVsRXZlbnQod2hlZWxFdmVudCk7Cisg
ICAgICAgIHJldHVybiBkb3duY2FzdDxGcmFtZVZpZXc+KHdpZGdldCkuZnJhbWUoKS5ldmVudEhh
bmRsZXIoKS5oYW5kbGVXaGVlbEV2ZW50KHdoZWVsRXZlbnQpOwogICAgIH0KIAogICAgIGlmIChb
Y3VycmVudE5TRXZlbnQoKSB0eXBlXSAhPSBOU1Njcm9sbFdoZWVsIHx8IG1fc2VuZGluZ0V2ZW50
VG9TdWJ2aWV3KSAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Nj
cm9sbGluZ0Nvb3JkaW5hdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Nj
cm9sbGluZ0Nvb3JkaW5hdG9yLmNwcAppbmRleCAxYTc5NGI5Y2Q0ZTZkODg0NTNhZmQxN2NkMjY2
M2E4OGIzZjdhZDFmLi5iMmRiNzQ3OGMwNTJmNWM5ODcyNTI0YWI4YTQ5Y2RkZmVjMjU0ZmQzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGlu
YXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29v
cmRpbmF0b3IuY3BwCkBAIC0xMzgsMTEgKzEzOCwxMSBAQCBSZWdpb24gU2Nyb2xsaW5nQ29vcmRp
bmF0b3I6OmNvbXB1dGVOb25GYXN0U2Nyb2xsYWJsZVJlZ2lvbihjb25zdCBGcmFtZSogZnJhbWUs
CiAgICAgfQogCiAgICAgZm9yIChjb25zdCBhdXRvJiBjaGlsZCA6IGZyYW1lVmlldy0+Y2hpbGRy
ZW4oKSkgewotICAgICAgICBpZiAoIWNoaWxkLT5pc1BsdWdpblZpZXdCYXNlKCkpCisgICAgICAg
IGlmICghaXM8UGx1Z2luVmlld0Jhc2U+KCpjaGlsZCkpCiAgICAgICAgICAgICBjb250aW51ZTsK
LSAgICAgICAgUGx1Z2luVmlld0Jhc2UqIHBsdWdpblZpZXdCYXNlID0gdG9QbHVnaW5WaWV3QmFz
ZShjaGlsZC5nZXQoKSk7Ci0gICAgICAgIGlmIChwbHVnaW5WaWV3QmFzZS0+d2FudHNXaGVlbEV2
ZW50cygpKQotICAgICAgICAgICAgbm9uRmFzdFNjcm9sbGFibGVSZWdpb24udW5pdGUocGx1Z2lu
Vmlld0Jhc2UtPmZyYW1lUmVjdCgpKTsKKyAgICAgICAgUGx1Z2luVmlld0Jhc2UmIHBsdWdpblZp
ZXdCYXNlID0gZG93bmNhc3Q8UGx1Z2luVmlld0Jhc2U+KCpjaGlsZCk7CisgICAgICAgIGlmIChw
bHVnaW5WaWV3QmFzZS53YW50c1doZWVsRXZlbnRzKCkpCisgICAgICAgICAgICBub25GYXN0U2Ny
b2xsYWJsZVJlZ2lvbi51bml0ZShwbHVnaW5WaWV3QmFzZS5mcmFtZVJlY3QoKSk7CiAgICAgfQog
CiAgICAgZm9yIChGcmFtZSogc3ViZnJhbWUgPSBmcmFtZS0+dHJlZSgpLmZpcnN0Q2hpbGQoKTsg
c3ViZnJhbWU7IHN1YmZyYW1lID0gc3ViZnJhbWUtPnRyZWUoKS5uZXh0U2libGluZygpKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS93aW4vRXZlbnRIYW5kbGVyV2luLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2Uvd2luL0V2ZW50SGFuZGxlcldpbi5jcHAKaW5kZXggNjQ0MmVjYjFh
ZjdhODBhMDExZTJkMjg1OWY4ZWJhMTdjMDE5ZmNhYi4uZjMzNzI0NmZmNzY1MDkwZWJjY2JjOWQw
MTIxODVhOThlZjY5MjVhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS93aW4vRXZl
bnRIYW5kbGVyV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3dpbi9FdmVudEhhbmRs
ZXJXaW4uY3BwCkBAIC03MywxMiArNzMsMTIgQEAgYm9vbCBFdmVudEhhbmRsZXI6OnBhc3NNb3Vz
ZVJlbGVhc2VFdmVudFRvU3ViZnJhbWUoTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyYKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBFdmVudEhhbmRsZXI6OnBhc3NXaGVlbEV2ZW50VG9X
aWRnZXQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiB3aGVlbEV2ZW50LCBXaWRnZXQqIHdpZGdl
dCkKK2Jvb2wgRXZlbnRIYW5kbGVyOjpwYXNzV2hlZWxFdmVudFRvV2lkZ2V0KGNvbnN0IFBsYXRm
b3JtV2hlZWxFdmVudCYgd2hlZWxFdmVudCwgV2lkZ2V0JiB3aWRnZXQpCiB7Ci0gICAgaWYgKCF3
aWRnZXQtPmlzRnJhbWVWaWV3KCkpCisgICAgaWYgKCFpczxGcmFtZVZpZXc+KHdpZGdldCkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHJldHVybiB0b0ZyYW1lVmlldyh3aWRnZXQpLT5m
cmFtZSgpLmV2ZW50SGFuZGxlcigpLmhhbmRsZVdoZWVsRXZlbnQod2hlZWxFdmVudCk7CisgICAg
cmV0dXJuIGRvd25jYXN0PEZyYW1lVmlldz4oKndpZGdldCkuZnJhbWUoKS5ldmVudEhhbmRsZXIo
KS5oYW5kbGVXaGVlbEV2ZW50KHdoZWVsRXZlbnQpOwogfQogCiBib29sIEV2ZW50SGFuZGxlcjo6
dGFic1RvQWxsRm9ybUNvbnRyb2xzKEtleWJvYXJkRXZlbnQqKSBjb25zdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9TY3JvbGxWaWV3LmNwcAppbmRleCA3NDFlYmE4ZGZlNWJmNmZhYzdmZmY2ZGUzMzQ0
ZDA3ZWFjNTFkNzkxLi5iMDQ3ZjczYjE5NjNmNDAxMTFlMmE2OTJmZTA3NTM0NDI4MDcyOTRkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmNwcApAQCAtNzEsMTMgKzcxLDEzIEBA
IHZvaWQgU2Nyb2xsVmlldzo6YWRkQ2hpbGQoUGFzc1JlZlB0cjxXaWRnZXQ+IHBycENoaWxkKQog
ICAgICAgICBwbGF0Zm9ybUFkZENoaWxkKGNoaWxkKTsKIH0KIAotdm9pZCBTY3JvbGxWaWV3Ojpy
ZW1vdmVDaGlsZChXaWRnZXQqIGNoaWxkKQordm9pZCBTY3JvbGxWaWV3OjpyZW1vdmVDaGlsZChX
aWRnZXQmIGNoaWxkKQogewotICAgIEFTU0VSVChjaGlsZC0+cGFyZW50KCkgPT0gdGhpcyk7Ci0g
ICAgY2hpbGQtPnNldFBhcmVudCgwKTsKLSAgICBtX2NoaWxkcmVuLnJlbW92ZShjaGlsZCk7Ci0g
ICAgaWYgKGNoaWxkLT5wbGF0Zm9ybVdpZGdldCgpKQotICAgICAgICBwbGF0Zm9ybVJlbW92ZUNo
aWxkKGNoaWxkKTsKKyAgICBBU1NFUlQoY2hpbGQucGFyZW50KCkgPT0gdGhpcyk7CisgICAgY2hp
bGQuc2V0UGFyZW50KDApOworICAgIG1fY2hpbGRyZW4ucmVtb3ZlKCZjaGlsZCk7CisgICAgaWYg
KGNoaWxkLnBsYXRmb3JtV2lkZ2V0KCkpCisgICAgICAgIHBsYXRmb3JtUmVtb3ZlQ2hpbGQoJmNo
aWxkKTsKIH0KIAogYm9vbCBTY3JvbGxWaWV3OjpzZXRIYXNIb3Jpem9udGFsU2Nyb2xsYmFyKGJv
b2wgaGFzQmFyLCBib29sKiBjb250ZW50U2l6ZUFmZmVjdGVkKQpAQCAtOTYsOCArOTYsOCBAQCBi
b29sIFNjcm9sbFZpZXc6OnNldEhhc0hvcml6b250YWxTY3JvbGxiYXIoYm9vbCBoYXNCYXIsIGJv
b2wqIGNvbnRlbnRTaXplQWZmZWN0ZQogICAgIGlmICghaGFzQmFyICYmIG1faG9yaXpvbnRhbFNj
cm9sbGJhcikgewogICAgICAgICBib29sIHdhc092ZXJsYXlTY3JvbGxiYXIgPSBtX2hvcml6b250
YWxTY3JvbGxiYXItPmlzT3ZlcmxheVNjcm9sbGJhcigpOwogICAgICAgICB3aWxsUmVtb3ZlU2Ny
b2xsYmFyKG1faG9yaXpvbnRhbFNjcm9sbGJhci5nZXQoKSwgSG9yaXpvbnRhbFNjcm9sbGJhcik7
Ci0gICAgICAgIHJlbW92ZUNoaWxkKG1faG9yaXpvbnRhbFNjcm9sbGJhci5nZXQoKSk7Ci0gICAg
ICAgIG1faG9yaXpvbnRhbFNjcm9sbGJhciA9IDA7CisgICAgICAgIHJlbW92ZUNoaWxkKCptX2hv
cml6b250YWxTY3JvbGxiYXIpOworICAgICAgICBtX2hvcml6b250YWxTY3JvbGxiYXIgPSBudWxs
cHRyOwogICAgICAgICBpZiAoY29udGVudFNpemVBZmZlY3RlZCkKICAgICAgICAgICAgICpjb250
ZW50U2l6ZUFmZmVjdGVkID0gIXdhc092ZXJsYXlTY3JvbGxiYXI7CiAgICAgICAgIHJldHVybiB0
cnVlOwpAQCAtMTIyLDggKzEyMiw4IEBAIGJvb2wgU2Nyb2xsVmlldzo6c2V0SGFzVmVydGljYWxT
Y3JvbGxiYXIoYm9vbCBoYXNCYXIsIGJvb2wqIGNvbnRlbnRTaXplQWZmZWN0ZWQpCiAgICAgaWYg
KCFoYXNCYXIgJiYgbV92ZXJ0aWNhbFNjcm9sbGJhcikgewogICAgICAgICBib29sIHdhc092ZXJs
YXlTY3JvbGxiYXIgPSBtX3ZlcnRpY2FsU2Nyb2xsYmFyLT5pc092ZXJsYXlTY3JvbGxiYXIoKTsK
ICAgICAgICAgd2lsbFJlbW92ZVNjcm9sbGJhcihtX3ZlcnRpY2FsU2Nyb2xsYmFyLmdldCgpLCBW
ZXJ0aWNhbFNjcm9sbGJhcik7Ci0gICAgICAgIHJlbW92ZUNoaWxkKG1fdmVydGljYWxTY3JvbGxi
YXIuZ2V0KCkpOwotICAgICAgICBtX3ZlcnRpY2FsU2Nyb2xsYmFyID0gMDsKKyAgICAgICAgcmVt
b3ZlQ2hpbGQoKm1fdmVydGljYWxTY3JvbGxiYXIpOworICAgICAgICBtX3ZlcnRpY2FsU2Nyb2xs
YmFyID0gbnVsbHB0cjsKICAgICAgICAgaWYgKGNvbnRlbnRTaXplQWZmZWN0ZWQpCiAgICAgICAg
ICAgICAqY29udGVudFNpemVBZmZlY3RlZCA9ICF3YXNPdmVybGF5U2Nyb2xsYmFyOwogICAgICAg
ICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9s
bFZpZXcuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuaAppbmRleCA5OThk
M2UyMTYwODQxY2M3OGM2NGY3ZDExYTZhZjYyZWE1Y2U1MDkzLi5mMmVmNTkxOWIxYzVlNDk1NjFj
YzA4YjE5NGQ1YmFhNDMwZGQyYjA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9TY3JvbGxWaWV3LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5o
CkBAIC05MCw3ICs5MCw3IEBAIHB1YmxpYzoKICAgICAvLyBGdW5jdGlvbnMgZm9yIGNoaWxkIG1h
bmlwdWxhdGlvbiBhbmQgaW5zcGVjdGlvbi4KICAgICBjb25zdCBIYXNoU2V0PFJlZlB0cjxXaWRn
ZXQ+PiYgY2hpbGRyZW4oKSBjb25zdCB7IHJldHVybiBtX2NoaWxkcmVuOyB9CiAgICAgV0VCQ09S
RV9FWFBPUlQgdmlydHVhbCB2b2lkIGFkZENoaWxkKFBhc3NSZWZQdHI8V2lkZ2V0Pik7Ci0gICAg
dmlydHVhbCB2b2lkIHJlbW92ZUNoaWxkKFdpZGdldCopOworICAgIHZpcnR1YWwgdm9pZCByZW1v
dmVDaGlsZChXaWRnZXQmKTsKIAogICAgIC8vIElmIHRoZSBzY3JvbGwgdmlldyBkb2VzIG5vdCB1
c2UgYSBuYXRpdmUgd2lkZ2V0LCB0aGVuIGl0IHdpbGwgaGF2ZSBjcm9zcy1wbGF0Zm9ybSBTY3Jv
bGxiYXJzLiBUaGVzZSBmdW5jdGlvbnMKICAgICAvLyBjYW4gYmUgdXNlZCB0byBvYnRhaW4gdGhv
c2Ugc2Nyb2xsYmFycy4KQEAgLTUwNyw4ICs1MDcsOCBAQCBwcml2YXRlOgogI2VuZGlmCiB9OyAv
LyBjbGFzcyBTY3JvbGxWaWV3CiAKLVdJREdFVF9UWVBFX0NBU1RTKFNjcm9sbFZpZXcsIGlzU2Ny
b2xsVmlldygpKTsKLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCitTUEVDSUFMSVpFX1RZUEVf
VFJBSVRTX1dJREdFVChTY3JvbGxWaWV3LCBpc1Njcm9sbFZpZXcoKSkKKwogI2VuZGlmIC8vIFNj
cm9sbFZpZXdfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhci5jcHAKaW5kZXggMDY0ZmRk
YzAxMzVmN2Q4N2EwNWIzMGRlNjJiODhkYjEzZDk2MTMxYy4uN2U4ZDExN2FjMjNhZjlmZWYyZWE2
Nzc3YWY0ZjEzNjJiNDA5MzM5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
U2Nyb2xsYmFyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXIuY3Bw
CkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiU2Nyb2xs
YmFyLmgiCiAKKyNpbmNsdWRlICJGcmFtZVZpZXcuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRl
eHQuaCIKICNpbmNsdWRlICJQbGF0Zm9ybU1vdXNlRXZlbnQuaCIKICNpbmNsdWRlICJTY3JvbGxB
bmltYXRvci5oIgpAQCAtNTU4LDQgKzU1OSw5IEBAIGJvb2wgU2Nyb2xsYmFyOjpzdXBwb3J0c1Vw
ZGF0ZU9uU2Vjb25kYXJ5VGhyZWFkKCkgY29uc3QKICNlbmRpZgogfQogCitTY3JvbGxWaWV3KiBT
Y3JvbGxiYXI6OnJvb3QoKSBjb25zdAoreworICAgIHJldHVybiBXaWRnZXQ6OnJvb3QoKTsKK30K
KwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2Nyb2xsYmFyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXIuaApp
bmRleCA0NGUyM2Y3YjY2MTc3MDIyNGM1YjhmMmRjNGQyNGQ3MDYxZmVlMWI3Li42OTg4NWY1YTBm
MDdiMWQ5OTgyNmU0ZmZhYzA3MzMzMDJmZWY5N2ZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TY3JvbGxiYXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3Jv
bGxiYXIuaApAQCAtNTgsNyArNTgsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBJbnRQb2ludCBs
b2NhdGlvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFdpZGdldDo6bG9jYXRpb24oKTsgfQog
CiAgICAgdmlydHVhbCBTY3JvbGxWaWV3KiBwYXJlbnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBXaWRnZXQ6OnBhcmVudCgpOyB9Ci0gICAgdmlydHVhbCBTY3JvbGxWaWV3KiByb290KCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gV2lkZ2V0Ojpyb290KCk7IH0KKyAgICB2aXJ0dWFsIFNjcm9s
bFZpZXcqIHJvb3QoKSBjb25zdCBvdmVycmlkZTsKIAogICAgIHZpcnR1YWwgdm9pZCBzZXRGcmFt
ZVJlY3QoY29uc3QgSW50UmVjdCYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgSW50UmVjdCBmcmFt
ZVJlY3QoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBXaWRnZXQ6OmZyYW1lUmVjdCgpOyB9CkBA
IC0yMDcsOCArMjA3LDggQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgaXNTY3JvbGxiYXIo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiB9OwogCi1XSURHRVRfVFlQRV9DQVNU
UyhTY3JvbGxiYXIsIGlzU2Nyb2xsYmFyKCkpOwotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAK
K1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0lER0VUKFNjcm9sbGJhciwgaXNTY3JvbGxiYXIoKSkK
KwogI2VuZGlmIC8vIFNjcm9sbGJhcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9XaWRnZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vV2lkZ2V0LmNwcAppbmRl
eCBjMjFmNGRkMzgyYWY2OTkwZGVkNDkxZjY1ZGIxODYzODZiNTkyY2JhLi5jN2MzZGEwODg3NWJm
ZjkyMTljYjI0ZjE4OWEzZDY2ZWYwODVjZjVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9XaWRnZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1dpZGdldC5j
cHAKQEAgLTI3LDcgKzI3LDcgQEAKICNpbmNsdWRlICJXaWRnZXQuaCIKIAogI2luY2x1ZGUgIklu
dFJlY3QuaCIKLSNpbmNsdWRlICJTY3JvbGxWaWV3LmgiCisjaW5jbHVkZSAiRnJhbWVWaWV3Lmgi
CiAKICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgogCkBAIC01MywyMCArNTMsMjAgQEAgdm9p
ZCBXaWRnZXQ6OnNldFBhcmVudChTY3JvbGxWaWV3KiB2aWV3KQogICAgICAgICBzZXRQYXJlbnRW
aXNpYmxlKHRydWUpOwogfQogCi1TY3JvbGxWaWV3KiBXaWRnZXQ6OnJvb3QoKSBjb25zdAorRnJh
bWVWaWV3KiBXaWRnZXQ6OnJvb3QoKSBjb25zdAogewogICAgIGNvbnN0IFdpZGdldCogdG9wID0g
dGhpczsKICAgICB3aGlsZSAodG9wLT5wYXJlbnQoKSkKICAgICAgICAgdG9wID0gdG9wLT5wYXJl
bnQoKTsKLSAgICBpZiAodG9wLT5pc0ZyYW1lVmlldygpKQotICAgICAgICByZXR1cm4gY29uc3Rf
Y2FzdDxTY3JvbGxWaWV3Kj4odG9TY3JvbGxWaWV3KHRvcCkpOworICAgIGlmIChpczxGcmFtZVZp
ZXc+KCp0b3ApKQorICAgICAgICByZXR1cm4gY29uc3RfY2FzdDxGcmFtZVZpZXcqPihkb3duY2Fz
dDxGcmFtZVZpZXc+KHRvcCkpOwogICAgIHJldHVybiBudWxscHRyOwogfQogICAgIAogdm9pZCBX
aWRnZXQ6OnJlbW92ZUZyb21QYXJlbnQoKQogewogICAgIGlmIChwYXJlbnQoKSkKLSAgICAgICAg
cGFyZW50KCktPnJlbW92ZUNoaWxkKHRoaXMpOworICAgICAgICBwYXJlbnQoKS0+cmVtb3ZlQ2hp
bGQoKnRoaXMpOwogfQogCiBJbnRSZWN0IFdpZGdldDo6Y29udmVydEZyb21Sb290Vmlldyhjb25z
dCBJbnRSZWN0JiByb290UmVjdCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1dpZGdldC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vV2lkZ2V0LmgKaW5kZXgg
MGZmMTFkMjA2NDg0Y2I3NWQzMDE2ODU5Njg2N2I5OThlNDVkNGExYy4uYmUyODg1Y2Y2MTAzMzEw
ZWE2ZjVjOWRkNGRiZTJjYzM4MTRkM2RjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vV2lkZ2V0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vV2lkZ2V0LmgKQEAg
LTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJQbGF0Zm9ybVNjcmVlbi5oIgogI2luY2x1ZGUgPHd0
Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYv
VHlwZUNhc3RzLmg+CiAKICNpZiBQTEFURk9STShDT0NPQSkKICNpbmNsdWRlIDx3dGYvUmV0YWlu
UHRyLmg+CkBAIC03MCw2ICs3MSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEN1cnNv
cjsKIGNsYXNzIEV2ZW50OwogY2xhc3MgRm9udDsKK2NsYXNzIEZyYW1lVmlldzsKIGNsYXNzIEdy
YXBoaWNzQ29udGV4dDsKIGNsYXNzIFBsYXRmb3JtTW91c2VFdmVudDsKIGNsYXNzIFNjcm9sbFZp
ZXc7CkBAIC0xNDMsNyArMTQ1LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
cmVtb3ZlRnJvbVBhcmVudCgpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBzZXRQ
YXJlbnQoU2Nyb2xsVmlldyogdmlldyk7CiAgICAgU2Nyb2xsVmlldyogcGFyZW50KCkgY29uc3Qg
eyByZXR1cm4gbV9wYXJlbnQ7IH0KLSAgICBTY3JvbGxWaWV3KiByb290KCkgY29uc3Q7CisgICAg
RnJhbWVWaWV3KiByb290KCkgY29uc3Q7CiAKICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlRXZlbnQo
RXZlbnQqKSB7IH0KIApAQCAtMjE2LDkgKzIxOCw2IEBAIHByaXZhdGU6CiAgICAgSW50UmVjdCBt
X2ZyYW1lOyAvLyBOb3QgdXNlZCB3aGVuIGEgbmF0aXZlIHdpZGdldCBleGlzdHMuCiB9OwogCi0j
ZGVmaW5lIFdJREdFVF9UWVBFX0NBU1RTKFRvVmFsdWVUeXBlTmFtZSwgcHJlZGljYXRlKSBcCi0g
ICAgVFlQRV9DQVNUU19CQVNFKFRvVmFsdWVUeXBlTmFtZSwgV2lkZ2V0LCBvYmplY3QsIG9iamVj
dC0+cHJlZGljYXRlLCBvYmplY3QucHJlZGljYXRlKQotCiAjaWYgIVBMQVRGT1JNKENPQ09BKQog
CiBpbmxpbmUgUGxhdGZvcm1XaWRnZXQgV2lkZ2V0OjpwbGF0Zm9ybVdpZGdldCgpIGNvbnN0CkBA
IC0yNTEsNCArMjUwLDkgQEAgaW5saW5lIHZvaWQgV2lkZ2V0OjpyZXRhaW5QbGF0Zm9ybVdpZGdl
dCgpCiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAorI2RlZmluZSBTUEVDSUFMSVpFX1RZUEVf
VFJBSVRTX1dJREdFVChUb1ZhbHVlVHlwZU5hbWUsIHByZWRpY2F0ZSkgXAorU1BFQ0lBTElaRV9U
WVBFX1RSQUlUU19CRUdJTihXZWJDb3JlOjpUb1ZhbHVlVHlwZU5hbWUpIFwKKyAgICBzdGF0aWMg
Ym9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6V2lkZ2V0JiB3aWRnZXQpIHsgcmV0dXJuIHdpZGdl
dC5wcmVkaWNhdGU7IH0gXAorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQorCiAjZW5kaWYg
Ly8gV2lkZ2V0X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9XaWRn
ZXRFZmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL1dpZGdldEVmbC5jcHAKaW5k
ZXggNDJhYzgyOTE3MzY0NmFmZGFkMGZmNWNmYmQ2YjUzMjkyYmVjZDc0NS4uMDIyMjYzNTVmZDI1
MDRiZWRkMDM1Y2RhZmQ2MTMyMGQ1NTY5Y2EwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZWZsL1dpZGdldEVmbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
ZWZsL1dpZGdldEVmbC5jcHAKQEAgLTc5LDcgKzc5LDcgQEAgdm9pZCBXaWRnZXQ6OnNldEZvY3Vz
KGJvb2wpCiAKIHZvaWQgV2lkZ2V0OjpzZXRDdXJzb3IoY29uc3QgQ3Vyc29yJiBjdXJzb3IpCiB7
Ci0gICAgU2Nyb2xsVmlldyogdmlldyA9IHJvb3QoKTsKKyAgICBGcmFtZVZpZXcqIHZpZXcgPSBy
b290KCk7CiAgICAgaWYgKCF2aWV3KQogICAgICAgICByZXR1cm47CiAgICAgdmlldy0+aG9zdFdp
bmRvdygpLT5zZXRDdXJzb3IoY3Vyc29yKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2d0ay9QbGF0Zm9ybVNjcmVlbkd0ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ndGsvUGxhdGZvcm1TY3JlZW5HdGsuY3BwCmluZGV4IDgyM2FhZTc0MTcyNmU0YjdmOThiODVk
MjM2OTNhY2E4MDg3YjczNjAuLmZlYzA4YTUzZjNlMjUzYjc0ODM4YzYyY2JhZjA4ODU0NTlhZWY1
NTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QbGF0Zm9ybVNjcmVl
bkd0ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1BsYXRmb3JtU2NyZWVu
R3RrLmNwcApAQCAtMzIsMTAgKzMyLDEwIEBACiAjaW5jbHVkZSAiUGxhdGZvcm1TY3JlZW4uaCIK
IAogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgorI2luY2x1ZGUgIkZyYW1lVmlldy5oIgogI2luY2x1
ZGUgIkd0a1ZlcnNpb25pbmcuaCIKICNpbmNsdWRlICJIb3N0V2luZG93LmgiCiAjaW5jbHVkZSAi
Tm90SW1wbGVtZW50ZWQuaCIKLSNpbmNsdWRlICJTY3JvbGxWaWV3LmgiCiAjaW5jbHVkZSAiV2lk
Z2V0LmgiCiAKICNpbmNsdWRlIDxndGsvZ3RrLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ndGsvV2lkZ2V0R3RrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0
ay9XaWRnZXRHdGsuY3BwCmluZGV4IDc4Y2YwZWFlMmFjMzc0YzVhYTQzOTRhYTRiN2JjYjJmMzdl
Y2I1Y2UuLmE3YmE0MmEyZWIzZTM5ZTQyNzY1NWE0ODgzMjBjM2RjMGYyZDc3MDIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9XaWRnZXRHdGsuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9XaWRnZXRHdGsuY3BwCkBAIC0yOSwxMSArMjksMTEgQEAK
ICNpbmNsdWRlICJXaWRnZXQuaCIKIAogI2luY2x1ZGUgIkN1cnNvci5oIgorI2luY2x1ZGUgIkZy
YW1lVmlldy5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUgIkd0a1Zl
cnNpb25pbmcuaCIKICNpbmNsdWRlICJIb3N0V2luZG93LmgiCiAjaW5jbHVkZSAiSW50UmVjdC5o
IgotI2luY2x1ZGUgIlNjcm9sbFZpZXcuaCIKIAogI2luY2x1ZGUgPGdkay9nZGsuaD4KICNpbmNs
dWRlIDxndGsvZ3RrLmg+CkBAIC01OCw3ICs1OCw3IEBAIHZvaWQgV2lkZ2V0OjpzZXRGb2N1cyhi
b29sKQogCiB2b2lkIFdpZGdldDo6c2V0Q3Vyc29yKGNvbnN0IEN1cnNvciYgY3Vyc29yKQogewot
ICAgIFNjcm9sbFZpZXcqIHZpZXcgPSByb290KCk7CisgICAgRnJhbWVWaWV3KiB2aWV3ID0gcm9v
dCgpOwogICAgIGlmICghdmlldykKICAgICAgICAgcmV0dXJuOwogICAgIHZpZXctPmhvc3RXaW5k
b3coKS0+c2V0Q3Vyc29yKGN1cnNvcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tYWMvUGxhdGZvcm1TY3JlZW5NYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
YWMvUGxhdGZvcm1TY3JlZW5NYWMubW0KaW5kZXggZDljMzQ2ZjNlYThkMjUyNzdiZTFkZGUwYTRj
NmU5Y2YyNzA4ODdiNC4uNjZmYTI5MWU1ZGQyM2M0ODg5Y2M5YjM1OWM0ODhmNTVkNmVjNDQ4YyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtU2NyZWVuTWFj
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybVNjcmVlbk1hYy5t
bQpAQCAtMjcsOCArMjcsOCBAQAogI2ltcG9ydCAiUGxhdGZvcm1TY3JlZW4uaCIKIAogI2ltcG9y
dCAiRmxvYXRSZWN0LmgiCisjaW1wb3J0ICJGcmFtZVZpZXcuaCIKICNpbXBvcnQgIkhvc3RXaW5k
b3cuaCIKLSNpbXBvcnQgIlNjcm9sbFZpZXcuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBA
IC02OSw3ICs2OSw3IEBAIHN0YXRpYyBQbGF0Zm9ybURpc3BsYXlJRCBkaXNwbGF5RnJvbVdpZGdl
dChXaWRnZXQqIHdpZGdldCkKICAgICBpZiAoIXdpZGdldCkKICAgICAgICAgcmV0dXJuIDA7CiAg
ICAgCi0gICAgU2Nyb2xsVmlldyogdmlldyA9IHdpZGdldC0+cm9vdCgpOworICAgIEZyYW1lVmll
dyogdmlldyA9IHdpZGdldC0+cm9vdCgpOwogICAgIGlmICghdmlldykKICAgICAgICAgcmV0dXJu
IDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XaWRnZXRNYWMu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2lkZ2V0TWFjLm1tCmluZGV4IDEzMmEz
OGQwNTUyODlkZWVkODk4YjRiMmMyOTEzNDU2ZTI5NTAwOWEuLjE0NzczNzRlYjg3NzIxMGEyNThk
YTAxYjc4ZGQ3NjRhYTFjYzU2N2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21hYy9XaWRnZXRNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dpZGdl
dE1hYy5tbQpAQCAtMzMsMTEgKzMzLDExIEBACiAjaW1wb3J0ICJEb2N1bWVudC5oIgogI2ltcG9y
dCAiRm9udC5oIgogI2ltcG9ydCAiRnJhbWUuaCIKKyNpbXBvcnQgIkZyYW1lVmlldy5oIgogI2lt
cG9ydCAiR3JhcGhpY3NDb250ZXh0LmgiCiAjaW1wb3J0ICJQYWdlLmgiCiAjaW1wb3J0ICJQbGF0
Zm9ybU1vdXNlRXZlbnQuaCIKICNpbXBvcnQgIlJ1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5oIgot
I2ltcG9ydCAiU2Nyb2xsVmlldy5oIgogI2ltcG9ydCAiV2ViQ29yZUZyYW1lVmlldy5oIgogI2lt
cG9ydCAiV2ViQ29yZVZpZXcuaCIKICNpbXBvcnQgPHd0Zi9SZWYuaD4KQEAgLTEwNiw3ICsxMDYs
NyBAQCB2b2lkIFdpZGdldDo6c2V0Rm9jdXMoYm9vbCBmb2N1c2VkKQogCiB2b2lkIFdpZGdldDo6
c2V0Q3Vyc29yKGNvbnN0IEN1cnNvciYgY3Vyc29yKQogewotICAgIFNjcm9sbFZpZXcqIHZpZXcg
PSByb290KCk7CisgICAgRnJhbWVWaWV3KiB2aWV3ID0gcm9vdCgpOwogICAgIGlmICghdmlldykK
ICAgICAgICAgcmV0dXJuOwogICAgIHZpZXctPmhvc3RXaW5kb3coKS0+c2V0Q3Vyc29yKGN1cnNv
cik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vV2lkZ2V0V2luLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9XaWRnZXRXaW4uY3BwCmluZGV4IDQ3M2Ix
ZGU5YTlhNjhkM2FhNjRmNTRmNzJlMzU3NjI0NmZjYWNmNDIuLjI3MWUzNmQ1Y2IzMTBmNWY2ODg3
ZGQyMzc5MGE5YjZiYTQ2OGYwYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3dpbi9XaWRnZXRXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9XaWRn
ZXRXaW4uY3BwCkBAIC03MCw3ICs3MCw3IEBAIHZvaWQgV2lkZ2V0OjpzZXRDdXJzb3IoY29uc3Qg
Q3Vyc29yJiBjdXJzb3IpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBTY3JvbGxWaWV3
KiB2aWV3ID0gcm9vdCgpOworICAgIEZyYW1lVmlldyogdmlldyA9IHJvb3QoKTsKICAgICBpZiAo
IXZpZXcpCiAgICAgICAgIHJldHVybjsKICAgICB2aWV3LT5ob3N0V2luZG93KCktPnNldEN1cnNv
cihjdXJzb3IpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5WaWV3
QmFzZS5oIGIvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5WaWV3QmFzZS5oCmluZGV4IGU0
NTZiNmMyMWZmZmEyNzg5YmExNGE0NDQwZGI1Zjc0ZjNjOWVkYTMuLjI0ODNjYWFkYjA2OTZhMTI5
ZjgwYWRkNmE4YzQ5NTdhMTEyYWZkMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsdWdp
bnMvUGx1Z2luVmlld0Jhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdpblZp
ZXdCYXNlLmgKQEAgLTgxLDggKzgxLDggQEAgcHJvdGVjdGVkOgogICAgIGV4cGxpY2l0IFBsdWdp
blZpZXdCYXNlKFBsYXRmb3JtV2lkZ2V0IHdpZGdldCA9IDApIDogV2lkZ2V0KHdpZGdldCkgeyB9
CiB9OwogCi1XSURHRVRfVFlQRV9DQVNUUyhQbHVnaW5WaWV3QmFzZSwgaXNQbHVnaW5WaWV3QmFz
ZSgpKTsKLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRT
X1dJREdFVChQbHVnaW5WaWV3QmFzZSwgaXNQbHVnaW5WaWV3QmFzZSgpKQorCiAjZW5kaWYgLy8g
UGx1Z2luV2lkZ2V0X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvd2luL1Bs
dWdpblZpZXdXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGx1Z2lucy93aW4vUGx1Z2luVmlld1dp
bi5jcHAKaW5kZXggZTAwNjVkM2JjYmJhMmJkZmU3NzY5NzIxN2UwNGQwZTdhNGY3ZGZjYS4uZjky
MTJiYTI0OWY0NzdlMDM2OTE4ZWMyNjEzMjhlNzZmN2RmOWY4NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGx1Z2lucy93aW4vUGx1Z2luVmlld1dpbi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGx1Z2lucy93aW4vUGx1Z2luVmlld1dpbi5jcHAKQEAgLTM5NiwxMyArMzk2LDEyIEBAIHZv
aWQgUGx1Z2luVmlldzo6dXBkYXRlUGx1Z2luV2lkZ2V0KCkKICAgICBpZiAoIXBhcmVudCgpKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBBU1NFUlQocGFyZW50KCktPmlzRnJhbWVWaWV3KCkpOwot
ICAgIEZyYW1lVmlldyogZnJhbWVWaWV3ID0gdG9GcmFtZVZpZXcocGFyZW50KCkpOworICAgIEZy
YW1lVmlldyYgZnJhbWVWaWV3ID0gZG93bmNhc3Q8RnJhbWVWaWV3PigqcGFyZW50KCkpOwogCiAg
ICAgSW50UmVjdCBvbGRXaW5kb3dSZWN0ID0gbV93aW5kb3dSZWN0OwogICAgIEludFJlY3Qgb2xk
Q2xpcFJlY3QgPSBtX2NsaXBSZWN0OwogCi0gICAgbV93aW5kb3dSZWN0ID0gSW50UmVjdChmcmFt
ZVZpZXctPmNvbnRlbnRzVG9XaW5kb3coZnJhbWVSZWN0KCkubG9jYXRpb24oKSksIGZyYW1lUmVj
dCgpLnNpemUoKSk7CisgICAgbV93aW5kb3dSZWN0ID0gSW50UmVjdChmcmFtZVZpZXcuY29udGVu
dHNUb1dpbmRvdyhmcmFtZVJlY3QoKS5sb2NhdGlvbigpKSwgZnJhbWVSZWN0KCkuc2l6ZSgpKTsK
ICAgICBtX2NsaXBSZWN0ID0gd2luZG93Q2xpcFJlY3QoKTsKICAgICBtX2NsaXBSZWN0Lm1vdmUo
LW1fd2luZG93UmVjdC54KCksIC1tX3dpbmRvd1JlY3QueSgpKTsKIApAQCAtNTExLDcgKzUxMCw3
IEBAIHZvaWQgUGx1Z2luVmlldzo6cGFpbnRJbnRvVHJhbnNmb3JtZWRDb250ZXh0KEhEQyBoZGMp
CiAKICAgICBXSU5ET1dQT1Mgd2luZG93cG9zID0geyAwLCAwLCAwLCAwLCAwLCAwLCAwIH07CiAK
LSAgICBJbnRSZWN0IHIgPSBjb250ZW50c1RvTmF0aXZlV2luZG93KHRvRnJhbWVWaWV3KHBhcmVu
dCgpKSwgZnJhbWVSZWN0KCkpOworICAgIEludFJlY3QgciA9IGNvbnRlbnRzVG9OYXRpdmVXaW5k
b3coZG93bmNhc3Q8RnJhbWVWaWV3PihwYXJlbnQoKSksIGZyYW1lUmVjdCgpKTsKIAogICAgIHdp
bmRvd3Bvcy54ID0gci54KCk7CiAgICAgd2luZG93cG9zLnkgPSByLnkoKTsKQEAgLTU0Myw4ICs1
NDIsNyBAQCB2b2lkIFBsdWdpblZpZXc6OnBhaW50V2luZG93ZWRQbHVnaW5JbnRvQ29udGV4dChH
cmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0CiAgICAgQVNTRVJUKG1faXNXaW5kb3dlZCk7
CiAgICAgQVNTRVJUKGNvbnRleHQtPnNob3VsZEluY2x1ZGVDaGlsZFdpbmRvd3MoKSk7CiAKLSAg
ICBBU1NFUlQocGFyZW50KCktPmlzRnJhbWVWaWV3KCkpOwotICAgIEludFBvaW50IGxvY2F0aW9u
SW5XaW5kb3cgPSB0b0ZyYW1lVmlldyhwYXJlbnQoKSktPmNvbnZlcnRUb0NvbnRhaW5pbmdXaW5k
b3coZnJhbWVSZWN0KCkubG9jYXRpb24oKSk7CisgICAgSW50UG9pbnQgbG9jYXRpb25JbldpbmRv
dyA9IGRvd25jYXN0PEZyYW1lVmlldz4oKnBhcmVudCgpKS5jb252ZXJ0VG9Db250YWluaW5nV2lu
ZG93KGZyYW1lUmVjdCgpLmxvY2F0aW9uKCkpOwogCiAgICAgTG9jYWxXaW5kb3dzQ29udGV4dCB3
aW5kb3dzQ29udGV4dChjb250ZXh0LCBmcmFtZVJlY3QoKSwgZmFsc2UpOwogCkBAIC01OTYsMTUg
KzU5NCwxMyBAQCB2b2lkIFBsdWdpblZpZXc6OnBhaW50KEdyYXBoaWNzQ29udGV4dCogY29udGV4
dCwgY29uc3QgSW50UmVjdCYgcmVjdCkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIEFT
U0VSVChwYXJlbnQoKS0+aXNGcmFtZVZpZXcoKSk7Ci0KICAgICAvLyBJbiB0aGUgR1RLIGFuZCBR
dCBwb3J0cyB3ZSBkcmF3IGluIGFuIG9mZnNjcmVlbiBidWZmZXIgYW5kIGRvbid0IHdhbnQgdG8g
dXNlIHRoZSB3aW5kb3cKICAgICAvLyBjb29yZGluYXRlcy4KICNpZiBQTEFURk9STShHVEspCiAg
ICAgSW50UmVjdCByZWN0SW5XaW5kb3cocmVjdCk7CiAgICAgcmVjdEluV2luZG93LmludGVyc2Vj
dChmcmFtZVJlY3QoKSk7CiAjZWxzZQotICAgIEludFJlY3QgcmVjdEluV2luZG93ID0gdG9GcmFt
ZVZpZXcocGFyZW50KCkpLT5jb250ZW50c1RvV2luZG93KGZyYW1lUmVjdCgpKTsKKyAgICBJbnRS
ZWN0IHJlY3RJbldpbmRvdyA9IGRvd25jYXN0PEZyYW1lVmlldz4oKnBhcmVudCgpKS5jb250ZW50
c1RvV2luZG93KGZyYW1lUmVjdCgpKTsKICNlbmRpZgogICAgIExvY2FsV2luZG93c0NvbnRleHQg
d2luZG93c0NvbnRleHQoY29udGV4dCwgcmVjdEluV2luZG93LCBtX2lzVHJhbnNwYXJlbnQpOwog
CkBAIC02NTgsNyArNjU0LDcgQEAgdm9pZCBQbHVnaW5WaWV3OjpoYW5kbGVNb3VzZUV2ZW50KE1v
dXNlRXZlbnQqIGV2ZW50KQogCiAgICAgTlBFdmVudCBucEV2ZW50OwogCi0gICAgSW50UG9pbnQg
cCA9IGNvbnRlbnRzVG9OYXRpdmVXaW5kb3codG9GcmFtZVZpZXcocGFyZW50KCkpLCBJbnRQb2lu
dChldmVudC0+cGFnZVgoKSwgZXZlbnQtPnBhZ2VZKCkpKTsKKyAgICBJbnRQb2ludCBwID0gY29u
dGVudHNUb05hdGl2ZVdpbmRvdyhkb3duY2FzdDxGcmFtZVZpZXc+KHBhcmVudCgpKSwgSW50UG9p
bnQoZXZlbnQtPnBhZ2VYKCksIGV2ZW50LT5wYWdlWSgpKSk7CiAKICAgICBucEV2ZW50LmxQYXJh
bSA9IE1BS0VMUEFSQU0ocC54KCksIHAueSgpKTsKICAgICBucEV2ZW50LndQYXJhbSA9IDA7CkBA
IC03NzEsNyArNzY3LDcgQEAgdm9pZCBQbHVnaW5WaWV3OjpzZXROUFdpbmRvd1JlY3QoY29uc3Qg
SW50UmVjdCYgcmVjdCkKICMgaWYgUExBVEZPUk0oR1RLKQogICAgIEludFBvaW50IHAgPSByZWN0
LmxvY2F0aW9uKCk7CiAjIGVsc2UKLSAgICBJbnRQb2ludCBwID0gdG9GcmFtZVZpZXcocGFyZW50
KCkpLT5jb250ZW50c1RvV2luZG93KHJlY3QubG9jYXRpb24oKSk7CisgICAgSW50UG9pbnQgcCA9
IGRvd25jYXN0PEZyYW1lVmlldz4oKnBhcmVudCgpKS5jb250ZW50c1RvV2luZG93KHJlY3QubG9j
YXRpb24oKSk7CiAjIGVuZGlmCiAgICAgbV9ucFdpbmRvdy54ID0gcC54KCk7CiAgICAgbV9ucFdp
bmRvdy55ID0gcC55KCk7CkBAIC05OTAsOCArOTg2LDcgQEAgUGFzc1JlZlB0cjxJbWFnZT4gUGx1
Z2luVmlldzo6c25hcHNob3QoKQogCiAgICAgICAgIC8vIFdpbmRvd2xlc3MgcGx1Zy1pbnMgYXNz
dW1lIHRoYXQgdGhleSdyZSBkcmF3aW5nIG9udG8gdGhlIHZpZXcncyBEQy4KICAgICAgICAgLy8g
VHJhbnNsYXRlIHRoZSBjb250ZXh0IHNvIHRoYXQgdGhlIHBsdWctaW4gZHJhd3MgYXQgKDAsIDAp
LgotICAgICAgICBBU1NFUlQocGFyZW50KCktPmlzRnJhbWVWaWV3KCkpOwotICAgICAgICBJbnRQ
b2ludCBwb3NpdGlvbiA9IHRvRnJhbWVWaWV3KHBhcmVudCgpKS0+Y29udGVudHNUb1dpbmRvdyhm
cmFtZVJlY3QoKSkubG9jYXRpb24oKTsKKyAgICAgICAgSW50UG9pbnQgcG9zaXRpb24gPSBkb3du
Y2FzdDxGcmFtZVZpZXc+KCpwYXJlbnQoKSkuY29udGVudHNUb1dpbmRvdyhmcmFtZVJlY3QoKSku
bG9jYXRpb24oKTsKICAgICAgICAgdHJhbnNmb3JtLmVEeCA9IC1wb3NpdGlvbi54KCk7CiAgICAg
ICAgIHRyYW5zZm9ybS5lRHkgPSAtcG9zaXRpb24ueSgpOwogICAgICAgICBTZXRXb3JsZFRyYW5z
Zm9ybShoZGMuZ2V0KCksICZ0cmFuc2Zvcm0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckVtYmVkZGVkT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJFbWJlZGRlZE9iamVjdC5jcHAKaW5kZXggM2JiNzI0MzI1MjMwNjMyYzVmNGUy
NTQxNTI1NGJhZjM1ZGYxZTMwOS4uNjBmZmQ0ZGRlMjc2Mjc5Y2I2MDI0ZTkwZTMwODk2ODdmN2Zl
ZmFhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVtYmVkZGVk
T2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRW1iZWRkZWRP
YmplY3QuY3BwCkBAIC0xMzEsOSArMTMxLDkgQEAgYm9vbCBSZW5kZXJFbWJlZGRlZE9iamVjdDo6
YWxsb3dzQWNjZWxlcmF0ZWRDb21wb3NpdGluZygpIGNvbnN0CiB7CiAjaWYgUExBVEZPUk0oSU9T
KQogICAgIC8vIFRoZSB0aW1pbmcgb2YgbGF5ZXIgY3JlYXRpb24gaXMgZGlmZmVyZW50IG9uIHRo
ZSBwaG9uZSwgc2luY2UgdGhlIHBsdWdpbiBjYW4gb25seSBiZSBtYW5pcHVsYXRlZCBmcm9tIHRo
ZSBtYWluIHRocmVhZC4KLSAgICByZXR1cm4gd2lkZ2V0KCkgJiYgd2lkZ2V0KCktPmlzUGx1Z2lu
Vmlld0Jhc2UoKSAmJiB0b1BsdWdpblZpZXdCYXNlKHdpZGdldCgpKS0+d2lsbFByb3ZpZGVQbHVn
aW5MYXllcigpOworICAgIHJldHVybiBpczxQbHVnaW5WaWV3QmFzZT4od2lkZ2V0KCkpICYmIGRv
d25jYXN0PFBsdWdpblZpZXdCYXNlPigqd2lkZ2V0KCkpLndpbGxQcm92aWRlUGx1Z2luTGF5ZXIo
KTsKICNlbHNlCi0gICAgcmV0dXJuIHdpZGdldCgpICYmIHdpZGdldCgpLT5pc1BsdWdpblZpZXdC
YXNlKCkgJiYgdG9QbHVnaW5WaWV3QmFzZSh3aWRnZXQoKSktPnBsYXRmb3JtTGF5ZXIoKTsKKyAg
ICByZXR1cm4gaXM8UGx1Z2luVmlld0Jhc2U+KHdpZGdldCgpKSAmJiBkb3duY2FzdDxQbHVnaW5W
aWV3QmFzZT4oKndpZGdldCgpKS5wbGF0Zm9ybUxheWVyKCk7CiAjZW5kaWYKIH0KIApAQCAtNTM5
LDIwICs1MzksMjAgQEAgYm9vbCBSZW5kZXJFbWJlZGRlZE9iamVjdDo6bm9kZUF0UG9pbnQoY29u
c3QgSGl0VGVzdFJlcXVlc3QmIHJlcXVlc3QsIEhpdFRlc3RSZXMKICAgICBpZiAoIVJlbmRlcldp
ZGdldDo6bm9kZUF0UG9pbnQocmVxdWVzdCwgcmVzdWx0LCBsb2NhdGlvbkluQ29udGFpbmVyLCBh
Y2N1bXVsYXRlZE9mZnNldCwgaGl0VGVzdEFjdGlvbikpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IAotICAgIGlmICghd2lkZ2V0KCkgfHwgIXdpZGdldCgpLT5pc1BsdWdpblZpZXdCYXNlKCkpCisg
ICAgaWYgKCFpczxQbHVnaW5WaWV3QmFzZT4od2lkZ2V0KCkpKQogICAgICAgICByZXR1cm4gdHJ1
ZTsKIAotICAgIFBsdWdpblZpZXdCYXNlKiB2aWV3ID0gdG9QbHVnaW5WaWV3QmFzZSh3aWRnZXQo
KSk7CisgICAgUGx1Z2luVmlld0Jhc2UmIHZpZXcgPSBkb3duY2FzdDxQbHVnaW5WaWV3QmFzZT4o
KndpZGdldCgpKTsKICAgICBJbnRQb2ludCByb3VuZGVkUG9pbnQgPSBsb2NhdGlvbkluQ29udGFp
bmVyLnJvdW5kZWRQb2ludCgpOwogCi0gICAgaWYgKFNjcm9sbGJhciogaG9yaXpvbnRhbFNjcm9s
bGJhciA9IHZpZXctPmhvcml6b250YWxTY3JvbGxiYXIoKSkgeworICAgIGlmIChTY3JvbGxiYXIq
IGhvcml6b250YWxTY3JvbGxiYXIgPSB2aWV3Lmhvcml6b250YWxTY3JvbGxiYXIoKSkgewogICAg
ICAgICBpZiAoaG9yaXpvbnRhbFNjcm9sbGJhci0+c2hvdWxkUGFydGljaXBhdGVJbkhpdFRlc3Rp
bmcoKSAmJiBob3Jpem9udGFsU2Nyb2xsYmFyLT5mcmFtZVJlY3QoKS5jb250YWlucyhyb3VuZGVk
UG9pbnQpKSB7CiAgICAgICAgICAgICByZXN1bHQuc2V0U2Nyb2xsYmFyKGhvcml6b250YWxTY3Jv
bGxiYXIpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KICAgICB9CiAKLSAg
ICBpZiAoU2Nyb2xsYmFyKiB2ZXJ0aWNhbFNjcm9sbGJhciA9IHZpZXctPnZlcnRpY2FsU2Nyb2xs
YmFyKCkpIHsKKyAgICBpZiAoU2Nyb2xsYmFyKiB2ZXJ0aWNhbFNjcm9sbGJhciA9IHZpZXcudmVy
dGljYWxTY3JvbGxiYXIoKSkgewogICAgICAgICBpZiAodmVydGljYWxTY3JvbGxiYXItPnNob3Vs
ZFBhcnRpY2lwYXRlSW5IaXRUZXN0aW5nKCkgJiYgdmVydGljYWxTY3JvbGxiYXItPmZyYW1lUmVj
dCgpLmNvbnRhaW5zKHJvdW5kZWRQb2ludCkpIHsKICAgICAgICAgICAgIHJlc3VsdC5zZXRTY3Jv
bGxiYXIodmVydGljYWxTY3JvbGxiYXIpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC01
NjcsNyArNTY3LDcgQEAgYm9vbCBSZW5kZXJFbWJlZGRlZE9iamVjdDo6c2Nyb2xsKFNjcm9sbERp
cmVjdGlvbiBkaXJlY3Rpb24sIFNjcm9sbEdyYW51bGFyaXR5IGcKICAgICBpZiAoIXdpZGdldCgp
IHx8ICF3aWRnZXQoKS0+aXNQbHVnaW5WaWV3QmFzZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKLSAgICByZXR1cm4gdG9QbHVnaW5WaWV3QmFzZSh3aWRnZXQoKSktPnNjcm9sbChkaXJlY3Rp
b24sIGdyYW51bGFyaXR5KTsKKyAgICByZXR1cm4gZG93bmNhc3Q8UGx1Z2luVmlld0Jhc2U+KHdp
ZGdldCgpKS0+c2Nyb2xsKGRpcmVjdGlvbiwgZ3JhbnVsYXJpdHkpOwogfQogCiBib29sIFJlbmRl
ckVtYmVkZGVkT2JqZWN0Ojpsb2dpY2FsU2Nyb2xsKFNjcm9sbExvZ2ljYWxEaXJlY3Rpb24gZGly
ZWN0aW9uLCBTY3JvbGxHcmFudWxhcml0eSBncmFudWxhcml0eSwgZmxvYXQgbXVsdGlwbGllciwg
RWxlbWVudCoqIHN0b3BFbGVtZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckZyYW1lQmFzZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZy
YW1lQmFzZS5oCmluZGV4IGFhZTA0YTBkY2FiZGE2MDE2YWIwZDQ4MTBiNDJhYzc3MTM4NzM4YjMu
LjE3YzlkOGYzMzViMThjMGRmOTVmNmM0M2ZkZDkwYWYxOTYyY2YxMmUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGcmFtZUJhc2UuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyRnJhbWVCYXNlLmgKQEAgLTM5LDcgKzM5LDcgQEAgcHJvdGVj
dGVkOgogICAgIFJlbmRlckZyYW1lQmFzZShIVE1MRnJhbWVFbGVtZW50QmFzZSYsIFBhc3NSZWY8
UmVuZGVyU3R5bGU+KTsKIAogcHVibGljOgotICAgIEZyYW1lVmlldyogY2hpbGRWaWV3KCkgY29u
c3QgeyByZXR1cm4gdG9GcmFtZVZpZXcoUmVuZGVyV2lkZ2V0Ojp3aWRnZXQoKSk7IH0KKyAgICBG
cmFtZVZpZXcqIGNoaWxkVmlldygpIGNvbnN0IHsgcmV0dXJuIGRvd25jYXN0PEZyYW1lVmlldz4o
UmVuZGVyV2lkZ2V0Ojp3aWRnZXQoKSk7IH0KIAogICAgIHZvaWQgbGF5b3V0V2l0aEZsYXR0ZW5p
bmcoYm9vbCBmaXhlZFdpZHRoLCBib29sIGZpeGVkSGVpZ2h0KTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAppbmRleCBkNjlhZDkyNzA3YmI5
MDY1YWQ3YjgwMTZiNjQ5ZGI1MjIzMTc1ZjAwLi5jOGI0YTMzOTdhNzU0OGQzNDE5MjJkMDUyODU1
NzA2YmM2NDg0YTNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGF5ZXJCYWNraW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5
ZXJCYWNraW5nLmNwcApAQCAtMzE4LDggKzMxOCw4IEBAIHZvaWQgUmVuZGVyTGF5ZXJCYWNraW5n
OjpjcmVhdGVQcmltYXJ5R3JhcGhpY3NMYXllcigpCiB2b2lkIFJlbmRlckxheWVyQmFja2luZzo6
bGF5ZXJXaWxsQmVEZXN0cm95ZWQoKQogewogICAgIFJlbmRlck9iamVjdCYgcmVuZGVyZXIgPSB0
aGlzLT5yZW5kZXJlcigpOwotICAgIGlmIChyZW5kZXJlci5pc0VtYmVkZGVkT2JqZWN0KCkgJiYg
dG9SZW5kZXJFbWJlZGRlZE9iamVjdChyZW5kZXJlcikuYWxsb3dzQWNjZWxlcmF0ZWRDb21wb3Np
dGluZygpKSB7Ci0gICAgICAgIFBsdWdpblZpZXdCYXNlKiBwbHVnaW5WaWV3QmFzZSA9IHRvUGx1
Z2luVmlld0Jhc2UodG9SZW5kZXJXaWRnZXQocmVuZGVyZXIpLndpZGdldCgpKTsKKyAgICBpZiAo
aXM8UmVuZGVyRW1iZWRkZWRPYmplY3Q+KHJlbmRlcmVyKSAmJiBkb3duY2FzdDxSZW5kZXJFbWJl
ZGRlZE9iamVjdD4ocmVuZGVyZXIpLmFsbG93c0FjY2VsZXJhdGVkQ29tcG9zaXRpbmcoKSkgewor
ICAgICAgICBQbHVnaW5WaWV3QmFzZSogcGx1Z2luVmlld0Jhc2UgPSBkb3duY2FzdDxQbHVnaW5W
aWV3QmFzZT4oZG93bmNhc3Q8UmVuZGVyV2lkZ2V0PihyZW5kZXJlcikud2lkZ2V0KCkpOwogICAg
ICAgICBpZiAocGx1Z2luVmlld0Jhc2UgJiYgbV9ncmFwaGljc0xheWVyLT5jb250ZW50c0xheWVy
Rm9yTWVkaWEoKSkKICAgICAgICAgICAgIHBsdWdpblZpZXdCYXNlLT5kZXRhY2hQbHVnaW5MYXll
cigpOwogICAgIH0KQEAgLTU3Miw4ICs1NzIsOCBAQCBib29sIFJlbmRlckxheWVyQmFja2luZzo6
dXBkYXRlQ29uZmlndXJhdGlvbigpCiAgICAgaWYgKGlzRGlyZWN0bHlDb21wb3NpdGVkSW1hZ2Uo
KSkKICAgICAgICAgdXBkYXRlSW1hZ2VDb250ZW50cygpOwogCi0gICAgaWYgKHJlbmRlcmVyKCku
aXNFbWJlZGRlZE9iamVjdCgpICYmIHRvUmVuZGVyRW1iZWRkZWRPYmplY3QoJnJlbmRlcmVyKCkp
LT5hbGxvd3NBY2NlbGVyYXRlZENvbXBvc2l0aW5nKCkpIHsKLSAgICAgICAgUGx1Z2luVmlld0Jh
c2UqIHBsdWdpblZpZXdCYXNlID0gdG9QbHVnaW5WaWV3QmFzZSh0b1JlbmRlcldpZGdldCgmcmVu
ZGVyZXIoKSktPndpZGdldCgpKTsKKyAgICBpZiAoaXM8UmVuZGVyRW1iZWRkZWRPYmplY3Q+KHJl
bmRlcmVyKCkpICYmIGRvd25jYXN0PFJlbmRlckVtYmVkZGVkT2JqZWN0PihyZW5kZXJlcigpKS5h
bGxvd3NBY2NlbGVyYXRlZENvbXBvc2l0aW5nKCkpIHsKKyAgICAgICAgUGx1Z2luVmlld0Jhc2Uq
IHBsdWdpblZpZXdCYXNlID0gZG93bmNhc3Q8UGx1Z2luVmlld0Jhc2U+KGRvd25jYXN0PFJlbmRl
cldpZGdldD4ocmVuZGVyZXIoKSkud2lkZ2V0KCkpOwogI2lmIFBMQVRGT1JNKElPUykKICAgICAg
ICAgaWYgKHBsdWdpblZpZXdCYXNlICYmICFtX2dyYXBoaWNzTGF5ZXItPmNvbnRlbnRzTGF5ZXJG
b3JNZWRpYSgpKSB7CiAgICAgICAgICAgICBwbHVnaW5WaWV3QmFzZS0+ZGV0YWNoUGx1Z2luTGF5
ZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNv
bXBvc2l0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9z
aXRvci5jcHAKaW5kZXggNDU5YmQ5NDU1MTg5ZWE5NmJkYzA5ODEwZjE1MWExMWRmNGI2Y2I0ZC4u
NzEwMzVjM2M3NjI5M2JkNjFlMTVjOWE2NDk3OGQ4MzcwYjJiZmU4ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKQEAgLTIwNjgs
NyArMjA2OCw2IEBAIGJvb2wgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpzaG91bGRQcm9wYWdhdGVD
b21wb3NpdGluZ1RvRW5jbG9zaW5nRnJhbWUoKSBjb25zdAogICAgIC8vIGlzIHRvIGhhdmUgdGhl
IHBhcmVudCBkb2N1bWVudCBiZWNvbWUgY29tcG9zaXRlZCB0b28uIEhvd2V2ZXIsIHRoaXMgY2Fu
IGNhdXNlIHByb2JsZW1zIG9uIHBsYXRmb3JtcyB0aGF0CiAgICAgLy8gdXNlIG5hdGl2ZSB2aWV3
cyBmb3IgZnJhbWVzIChsaWtlIE1hYyksIHNvIGRpc2FibGUgdGhhdCBiZWhhdmlvciBvbiB0aG9z
ZSBwbGF0Zm9ybXMgZm9yIG5vdy4KICAgICBIVE1MRnJhbWVPd25lckVsZW1lbnQqIG93bmVyRWxl
bWVudCA9IG1fcmVuZGVyVmlldy5kb2N1bWVudCgpLm93bmVyRWxlbWVudCgpOwotICAgIFJlbmRl
ckVsZW1lbnQqIHJlbmRlcmVyID0gb3duZXJFbGVtZW50ID8gb3duZXJFbGVtZW50LT5yZW5kZXJl
cigpIDogMDsKIAogICAgIC8vIElmIHdlIGFyZSB0aGUgdG9wLWxldmVsIGZyYW1lLCBkb24ndCBw
cm9wYWdhdGUuCiAgICAgaWYgKCFvd25lckVsZW1lbnQpCkBAIC0yMDc3LDcgKzIwNzYsOCBAQCBi
b29sIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6c2hvdWxkUHJvcGFnYXRlQ29tcG9zaXRpbmdUb0Vu
Y2xvc2luZ0ZyYW1lKCkgY29uc3QKICAgICBpZiAoIWFsbG93c0luZGVwZW5kZW50bHlDb21wb3Np
dGVkRnJhbWVzKCZtX3JlbmRlclZpZXcuZnJhbWVWaWV3KCkpKQogICAgICAgICByZXR1cm4gdHJ1
ZTsKIAotICAgIGlmICghcmVuZGVyZXIgfHwgIXJlbmRlcmVyLT5pc1dpZGdldCgpKQorICAgIFJl
bmRlckVsZW1lbnQqIHJlbmRlcmVyID0gb3duZXJFbGVtZW50LT5yZW5kZXJlcigpOworICAgIGlm
ICghaXM8UmVuZGVyV2lkZ2V0PihyZW5kZXJlcikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAog
ICAgIC8vIE9uIE1hYywgb25seSBwcm9wYWdhdGUgY29tcG9zaXRpbmcgaWYgdGhlIGZyYW1lIGlz
IG92ZXJsYXBwZWQgaW4gdGhlIHBhcmVudApAQCAtMjA4NiwxMSArMjA4NiwxMCBAQCBib29sIFJl
bmRlckxheWVyQ29tcG9zaXRvcjo6c2hvdWxkUHJvcGFnYXRlQ29tcG9zaXRpbmdUb0VuY2xvc2lu
Z0ZyYW1lKCkgY29uc3QKICAgICBpZiAocGFnZSAmJiBwYWdlLT5wYWdlU2NhbGVGYWN0b3IoKSAh
PSAxKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAKLSAgICBSZW5kZXJXaWRnZXQqIGZyYW1l
UmVuZGVyZXIgPSB0b1JlbmRlcldpZGdldChyZW5kZXJlcik7Ci0gICAgaWYgKGZyYW1lUmVuZGVy
ZXItPndpZGdldCgpKSB7Ci0gICAgICAgIEFTU0VSVChmcmFtZVJlbmRlcmVyLT53aWRnZXQoKS0+
aXNGcmFtZVZpZXcoKSk7Ci0gICAgICAgIEZyYW1lVmlldyogdmlldyA9IHRvRnJhbWVWaWV3KGZy
YW1lUmVuZGVyZXItPndpZGdldCgpKTsKLSAgICAgICAgaWYgKHZpZXctPmlzT3ZlcmxhcHBlZElu
Y2x1ZGluZ0FuY2VzdG9ycygpIHx8IHZpZXctPmhhc0NvbXBvc2l0aW5nQW5jZXN0b3IoKSkKKyAg
ICBSZW5kZXJXaWRnZXQmIGZyYW1lUmVuZGVyZXIgPSBkb3duY2FzdDxSZW5kZXJXaWRnZXQ+KCpy
ZW5kZXJlcik7CisgICAgaWYgKGZyYW1lUmVuZGVyZXIud2lkZ2V0KCkpIHsKKyAgICAgICAgRnJh
bWVWaWV3JiB2aWV3ID0gZG93bmNhc3Q8RnJhbWVWaWV3PigqZnJhbWVSZW5kZXJlci53aWRnZXQo
KSk7CisgICAgICAgIGlmICh2aWV3LmlzT3ZlcmxhcHBlZEluY2x1ZGluZ0FuY2VzdG9ycygpIHx8
IHZpZXcuaGFzQ29tcG9zaXRpbmdBbmNlc3RvcigpKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7
CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVHJl
ZUFzVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVHJlZUFzVGV4dC5j
cHAKaW5kZXggMzliNzQ0ZTQ0ZWVkNTA2NjI1ODkzYjA2M2ViMTdjNGY1NTg0NTBmMS4uZjkyNDA2
NGFjZmQ3ZGRhNDA0NTAyMzAyYjM1ZDI1ZTExZDljZGY3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRyZWVBc1RleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUcmVlQXNUZXh0LmNwcApAQCAtNTYzLDE2ICs1NjMsMTUgQEAgdm9p
ZCB3cml0ZShUZXh0U3RyZWFtJiB0cywgY29uc3QgUmVuZGVyT2JqZWN0JiBvLCBpbnQgaW5kZW50
LCBSZW5kZXJBc1RleHRCZWhhdmkKICAgICAgICAgfQogICAgIH0KIAotICAgIGlmIChvLmlzV2lk
Z2V0KCkpIHsKLSAgICAgICAgV2lkZ2V0KiB3aWRnZXQgPSB0b1JlbmRlcldpZGdldCgmbyktPndp
ZGdldCgpOwotICAgICAgICBpZiAod2lkZ2V0ICYmIHdpZGdldC0+aXNGcmFtZVZpZXcoKSkgewot
ICAgICAgICAgICAgRnJhbWVWaWV3KiB2aWV3ID0gdG9GcmFtZVZpZXcod2lkZ2V0KTsKLSAgICAg
ICAgICAgIGlmIChSZW5kZXJWaWV3KiByb290ID0gdmlldy0+ZnJhbWUoKS5jb250ZW50UmVuZGVy
ZXIoKSkgeworICAgIGlmIChpczxSZW5kZXJXaWRnZXQ+KG8pKSB7CisgICAgICAgIFdpZGdldCog
d2lkZ2V0ID0gZG93bmNhc3Q8UmVuZGVyV2lkZ2V0PihvKS53aWRnZXQoKTsKKyAgICAgICAgaWYg
KGlzPEZyYW1lVmlldz4od2lkZ2V0KSkgeworICAgICAgICAgICAgRnJhbWVWaWV3JiB2aWV3ID0g
ZG93bmNhc3Q8RnJhbWVWaWV3Pigqd2lkZ2V0KTsKKyAgICAgICAgICAgIGlmIChSZW5kZXJWaWV3
KiByb290ID0gdmlldy5mcmFtZSgpLmNvbnRlbnRSZW5kZXJlcigpKSB7CiAgICAgICAgICAgICAg
ICAgaWYgKCEoYmVoYXZpb3IgJiBSZW5kZXJBc1RleHREb250VXBkYXRlTGF5b3V0KSkKLSAgICAg
ICAgICAgICAgICAgICAgdmlldy0+bGF5b3V0KCk7Ci0gICAgICAgICAgICAgICAgUmVuZGVyTGF5
ZXIqIGwgPSByb290LT5sYXllcigpOwotICAgICAgICAgICAgICAgIGlmIChsKQotICAgICAgICAg
ICAgICAgICAgICB3cml0ZUxheWVycyh0cywgbCwgbCwgbC0+cmVjdCgpLCBpbmRlbnQgKyAxLCBi
ZWhhdmlvcik7CisgICAgICAgICAgICAgICAgICAgIHZpZXcubGF5b3V0KCk7CisgICAgICAgICAg
ICAgICAgaWYgKFJlbmRlckxheWVyKiBsYXllciA9IHJvb3QtPmxheWVyKCkpCisgICAgICAgICAg
ICAgICAgICAgIHdyaXRlTGF5ZXJzKHRzLCBsYXllciwgbGF5ZXIsIGxheWVyLT5yZWN0KCksIGlu
ZGVudCArIDEsIGJlaGF2aW9yKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJXaWRnZXQuY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcldpZGdldC5jcHAKaW5kZXggM2NiMTk4YzFmZDll
ZTcxNTg5YTEzYzA2MmM3NjE3ZTY3ZTVmMzQ0MC4uZjU0OTllOWU0MmRhOWJiZTZjMTRkZmQwMGVk
YTYxZmZhM2IzYTJiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
cldpZGdldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcldpZGdldC5j
cHAKQEAgLTYxLDcgKzYxLDcgQEAgdm9pZCBXaWRnZXRIaWVyYXJjaHlVcGRhdGVzU3VzcGVuc2lv
blNjb3BlOjptb3ZlV2lkZ2V0cygpCiAgICAgICAgIEZyYW1lVmlldyogbmV3UGFyZW50ID0gaXQt
PnZhbHVlOwogICAgICAgICBpZiAobmV3UGFyZW50ICE9IGN1cnJlbnRQYXJlbnQpIHsKICAgICAg
ICAgICAgIGlmIChjdXJyZW50UGFyZW50KQotICAgICAgICAgICAgICAgIGN1cnJlbnRQYXJlbnQt
PnJlbW92ZUNoaWxkKGNoaWxkKTsKKyAgICAgICAgICAgICAgICBjdXJyZW50UGFyZW50LT5yZW1v
dmVDaGlsZCgqY2hpbGQpOwogICAgICAgICAgICAgaWYgKG5ld1BhcmVudCkKICAgICAgICAgICAg
ICAgICBuZXdQYXJlbnQtPmFkZENoaWxkKGNoaWxkKTsKICAgICAgICAgfQpAQCAtMjM4LDkgKzIz
OCw5IEBAIHZvaWQgUmVuZGVyV2lkZ2V0OjpwYWludENvbnRlbnRzKFBhaW50SW5mbyYgcGFpbnRJ
bmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPCiAgICAgaWYgKCF3aWRnZXRQYWludE9mZnNl
dC5pc1plcm8oKSkKICAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPnRyYW5zbGF0ZSgtd2lkZ2V0
UGFpbnRPZmZzZXQpOwogCi0gICAgaWYgKG1fd2lkZ2V0LT5pc0ZyYW1lVmlldygpKSB7Ci0gICAg
ICAgIEZyYW1lVmlldyogZnJhbWVWaWV3ID0gdG9GcmFtZVZpZXcobV93aWRnZXQuZ2V0KCkpOwot
ICAgICAgICBib29sIHJ1bk92ZXJsYXBUZXN0cyA9ICFmcmFtZVZpZXctPnVzZVNsb3dSZXBhaW50
c0lmTm90T3ZlcmxhcHBlZCgpIHx8IGZyYW1lVmlldy0+aGFzQ29tcG9zaXRlZENvbnRlbnRJbmNs
dWRpbmdEZXNjZW5kYW50cygpOworICAgIGlmIChpczxGcmFtZVZpZXc+KCptX3dpZGdldCkpIHsK
KyAgICAgICAgRnJhbWVWaWV3JiBmcmFtZVZpZXcgPSBkb3duY2FzdDxGcmFtZVZpZXc+KCptX3dp
ZGdldCk7CisgICAgICAgIGJvb2wgcnVuT3ZlcmxhcFRlc3RzID0gIWZyYW1lVmlldy51c2VTbG93
UmVwYWludHNJZk5vdE92ZXJsYXBwZWQoKSB8fCBmcmFtZVZpZXcuaGFzQ29tcG9zaXRlZENvbnRl
bnRJbmNsdWRpbmdEZXNjZW5kYW50cygpOwogICAgICAgICBpZiAocGFpbnRJbmZvLm92ZXJsYXBU
ZXN0UmVxdWVzdHMgJiYgcnVuT3ZlcmxhcFRlc3RzKSB7CiAgICAgICAgICAgICBBU1NFUlQoIXBh
aW50SW5mby5vdmVybGFwVGVzdFJlcXVlc3RzLT5jb250YWlucyh0aGlzKSk7CiAgICAgICAgICAg
ICBwYWludEluZm8ub3ZlcmxhcFRlc3RSZXF1ZXN0cy0+c2V0KHRoaXMsIG1fd2lkZ2V0LT5mcmFt
ZVJlY3QoKSk7CkBAIC0zMDEsOCArMzAxLDcgQEAgdm9pZCBSZW5kZXJXaWRnZXQ6OnBhaW50KFBh
aW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQpCiB2b2lk
IFJlbmRlcldpZGdldDo6c2V0T3ZlcmxhcFRlc3RSZXN1bHQoYm9vbCBpc092ZXJsYXBwZWQpCiB7
CiAgICAgQVNTRVJUKG1fd2lkZ2V0KTsKLSAgICBBU1NFUlQobV93aWRnZXQtPmlzRnJhbWVWaWV3
KCkpOwotICAgIHRvRnJhbWVWaWV3KG1fd2lkZ2V0LmdldCgpKS0+c2V0SXNPdmVybGFwcGVkKGlz
T3ZlcmxhcHBlZCk7CisgICAgZG93bmNhc3Q8RnJhbWVWaWV3PigqbV93aWRnZXQpLnNldElzT3Zl
cmxhcHBlZChpc092ZXJsYXBwZWQpOwogfQogCiB2b2lkIFJlbmRlcldpZGdldDo6dXBkYXRlV2lk
Z2V0UG9zaXRpb24oKQpAQCAtMzE3LDExICszMTYsMTEgQEAgdm9pZCBSZW5kZXJXaWRnZXQ6OnVw
ZGF0ZVdpZGdldFBvc2l0aW9uKCkKIAogICAgIC8vIGlmIHRoZSBmcmFtZSBzaXplIGdvdCBjaGFu
Z2VkLCBvciBpZiB2aWV3IG5lZWRzIGxheW91dCAocG9zc2libHkgaW5kaWNhdGluZwogICAgIC8v
IGNvbnRlbnQgc2l6ZSBpcyB3cm9uZykgd2UgaGF2ZSB0byBkbyBhIGxheW91dCB0byBzZXQgdGhl
IHJpZ2h0IHdpZGdldCBzaXplLgotICAgIGlmIChtX3dpZGdldC0+aXNGcmFtZVZpZXcoKSkgewot
ICAgICAgICBGcmFtZVZpZXcqIGZyYW1lVmlldyA9IHRvRnJhbWVWaWV3KG1fd2lkZ2V0LmdldCgp
KTsKKyAgICBpZiAoaXM8RnJhbWVWaWV3PigqbV93aWRnZXQpKSB7CisgICAgICAgIEZyYW1lVmll
dyYgZnJhbWVWaWV3ID0gZG93bmNhc3Q8RnJhbWVWaWV3PigqbV93aWRnZXQpOwogICAgICAgICAv
LyBDaGVjayB0aGUgZnJhbWUncyBwYWdlIHRvIG1ha2Ugc3VyZSB0aGF0IHRoZSBmcmFtZSBpc24n
dCBpbiB0aGUgcHJvY2VzcyBvZiBiZWluZyBkZXN0cm95ZWQuCi0gICAgICAgIGlmICgod2lkZ2V0
U2l6ZUNoYW5nZWQgfHwgZnJhbWVWaWV3LT5uZWVkc0xheW91dCgpKSAmJiBmcmFtZVZpZXctPmZy
YW1lKCkucGFnZSgpKQotICAgICAgICAgICAgZnJhbWVWaWV3LT5sYXlvdXQoKTsKKyAgICAgICAg
aWYgKCh3aWRnZXRTaXplQ2hhbmdlZCB8fCBmcmFtZVZpZXcubmVlZHNMYXlvdXQoKSkgJiYgZnJh
bWVWaWV3LmZyYW1lKCkucGFnZSgpKQorICAgICAgICAgICAgZnJhbWVWaWV3LmxheW91dCgpOwog
ICAgIH0KIH0KIApAQCAtMzQ2LDE3ICszNDUsMTcgQEAgUmVuZGVyV2lkZ2V0KiBSZW5kZXJXaWRn
ZXQ6OmZpbmQoY29uc3QgV2lkZ2V0KiB3aWRnZXQpCiAKIGJvb2wgUmVuZGVyV2lkZ2V0Ojpub2Rl
QXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYgcmVxdWVzdCwgSGl0VGVzdFJlc3VsdCYgcmVz
dWx0LCBjb25zdCBIaXRUZXN0TG9jYXRpb24mIGxvY2F0aW9uSW5Db250YWluZXIsIGNvbnN0IExh
eW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCwgSGl0VGVzdEFjdGlvbiBhY3Rpb24pCiB7Ci0g
ICAgaWYgKHJlcXVlc3QuYWxsb3dzQ2hpbGRGcmFtZUNvbnRlbnQoKSAmJiB3aWRnZXQoKSAmJiB3
aWRnZXQoKS0+aXNGcmFtZVZpZXcoKSAmJiB0b0ZyYW1lVmlldyh3aWRnZXQoKSktPnJlbmRlclZp
ZXcoKSkgewotICAgICAgICBGcmFtZVZpZXcqIGNoaWxkRnJhbWVWaWV3ID0gdG9GcmFtZVZpZXco
d2lkZ2V0KCkpOwotICAgICAgICBSZW5kZXJWaWV3KiBjaGlsZFJvb3QgPSBjaGlsZEZyYW1lVmll
dy0+cmVuZGVyVmlldygpOworICAgIGlmIChyZXF1ZXN0LmFsbG93c0NoaWxkRnJhbWVDb250ZW50
KCkgJiYgaXM8RnJhbWVWaWV3Pih3aWRnZXQoKSkgJiYgZG93bmNhc3Q8RnJhbWVWaWV3Pigqd2lk
Z2V0KCkpLnJlbmRlclZpZXcoKSkgeworICAgICAgICBGcmFtZVZpZXcmIGNoaWxkRnJhbWVWaWV3
ID0gZG93bmNhc3Q8RnJhbWVWaWV3Pigqd2lkZ2V0KCkpOworICAgICAgICBSZW5kZXJWaWV3JiBj
aGlsZFJvb3QgPSAqY2hpbGRGcmFtZVZpZXcucmVuZGVyVmlldygpOwogCiAgICAgICAgIExheW91
dFBvaW50IGFkanVzdGVkTG9jYXRpb24gPSBhY2N1bXVsYXRlZE9mZnNldCArIGxvY2F0aW9uKCk7
Ci0gICAgICAgIExheW91dFBvaW50IGNvbnRlbnRPZmZzZXQgPSBMYXlvdXRQb2ludChib3JkZXJM
ZWZ0KCkgKyBwYWRkaW5nTGVmdCgpLCBib3JkZXJUb3AoKSArIHBhZGRpbmdUb3AoKSkgLSBjaGls
ZEZyYW1lVmlldy0+c2Nyb2xsT2Zmc2V0KCk7CisgICAgICAgIExheW91dFBvaW50IGNvbnRlbnRP
ZmZzZXQgPSBMYXlvdXRQb2ludChib3JkZXJMZWZ0KCkgKyBwYWRkaW5nTGVmdCgpLCBib3JkZXJU
b3AoKSArIHBhZGRpbmdUb3AoKSkgLSBjaGlsZEZyYW1lVmlldy5zY3JvbGxPZmZzZXQoKTsKICAg
ICAgICAgSGl0VGVzdExvY2F0aW9uIG5ld0hpdFRlc3RMb2NhdGlvbihsb2NhdGlvbkluQ29udGFp
bmVyLCAtYWRqdXN0ZWRMb2NhdGlvbiAtIGNvbnRlbnRPZmZzZXQpOwogICAgICAgICBIaXRUZXN0
UmVxdWVzdCBuZXdIaXRUZXN0UmVxdWVzdChyZXF1ZXN0LnR5cGUoKSB8IEhpdFRlc3RSZXF1ZXN0
OjpDaGlsZEZyYW1lSGl0VGVzdCk7CiAgICAgICAgIEhpdFRlc3RSZXN1bHQgY2hpbGRGcmFtZVJl
c3VsdChuZXdIaXRUZXN0TG9jYXRpb24pOwogCi0gICAgICAgIGJvb2wgaXNJbnNpZGVDaGlsZEZy
YW1lID0gY2hpbGRSb290LT5oaXRUZXN0KG5ld0hpdFRlc3RSZXF1ZXN0LCBuZXdIaXRUZXN0TG9j
YXRpb24sIGNoaWxkRnJhbWVSZXN1bHQpOworICAgICAgICBib29sIGlzSW5zaWRlQ2hpbGRGcmFt
ZSA9IGNoaWxkUm9vdC5oaXRUZXN0KG5ld0hpdFRlc3RSZXF1ZXN0LCBuZXdIaXRUZXN0TG9jYXRp
b24sIGNoaWxkRnJhbWVSZXN1bHQpOwogCiAgICAgICAgIGlmIChuZXdIaXRUZXN0TG9jYXRpb24u
aXNSZWN0QmFzZWRUZXN0KCkpCiAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKGNoaWxkRnJhbWVS
ZXN1bHQpOwpAQCAtNDAxLDkgKzQwMCw5IEBAIGJvb2wgUmVuZGVyV2lkZ2V0OjpuZWVkc1ByZWZl
cnJlZFdpZHRoc1JlY2FsY3VsYXRpb24oKSBjb25zdAogCiBSZW5kZXJCb3gqIFJlbmRlcldpZGdl
dDo6ZW1iZWRkZWRDb250ZW50Qm94KCkgY29uc3QKIHsKLSAgICBpZiAoIXdpZGdldCgpIHx8ICF3
aWRnZXQoKS0+aXNGcmFtZVZpZXcoKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgcmV0dXJuIHRv
RnJhbWVWaWV3KHdpZGdldCgpKS0+ZW1iZWRkZWRDb250ZW50Qm94KCk7CisgICAgaWYgKCFpczxG
cmFtZVZpZXc+KHdpZGdldCgpKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJu
IGRvd25jYXN0PEZyYW1lVmlldz4oKndpZGdldCgpKS5lbWJlZGRlZENvbnRlbnRCb3goKTsKIH0K
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMv
V2ViVmlldy9XZWJSZW5kZXJOb2RlLm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJS
ZW5kZXJOb2RlLm1tCmluZGV4IDZhZWIwOTkzOTBiMzAzYTQxNzUzY2RiZjI1NTlmNDZhNWM3ODM1
OGIuLmNmZWMyZTZlZGJkMGEwYzQyMTI3NjVlMzFkZWJkYzY2YWRkYWU3N2YgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViUmVuZGVyTm9kZS5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L21hYy9XZWJWaWV3L1dlYlJlbmRlck5vZGUubW0KQEAgLTk1LDkgKzk1LDkgQEAgc3Rh
dGljIFdlYlJlbmRlck5vZGUgKmNvcHlSZW5kZXJOb2RlKFJlbmRlck9iamVjdCogbm9kZSkKIAog
ICAgIE5TU3RyaW5nICpuYW1lID0gW1tOU1N0cmluZyBhbGxvY10gaW5pdFdpdGhVVEY4U3RyaW5n
Om5vZGUtPnJlbmRlck5hbWUoKV07CiAgICAgCi0gICAgUmVuZGVyV2lkZ2V0KiByZW5kZXJXaWRn
ZXQgPSBub2RlLT5pc1dpZGdldCgpID8gdG9SZW5kZXJXaWRnZXQobm9kZSkgOiBudWxscHRyOwor
ICAgIFJlbmRlcldpZGdldCogcmVuZGVyV2lkZ2V0ID0gaXM8UmVuZGVyV2lkZ2V0Pigqbm9kZSkg
PyBkb3duY2FzdDxSZW5kZXJXaWRnZXQ+KG5vZGUpIDogbnVsbHB0cjsKICAgICBXaWRnZXQqIHdp
ZGdldCA9IHJlbmRlcldpZGdldCA/IHJlbmRlcldpZGdldC0+d2lkZ2V0KCkgOiBudWxscHRyOwot
ICAgIEZyYW1lVmlldyogZnJhbWVWaWV3ID0gd2lkZ2V0ICYmIHdpZGdldC0+aXNGcmFtZVZpZXco
KSA/IHRvRnJhbWVWaWV3KHdpZGdldCkgOiBudWxscHRyOworICAgIEZyYW1lVmlldyogZnJhbWVW
aWV3ID0gaXM8RnJhbWVWaWV3Pih3aWRnZXQpID8gZG93bmNhc3Q8RnJhbWVWaWV3Pih3aWRnZXQp
IDogbnVsbHB0cjsKICAgICBGcmFtZSogZnJhbWUgPSBmcmFtZVZpZXcgPyAmZnJhbWVWaWV3LT5m
cmFtZSgpIDogbnVsbHB0cjsKIAogICAgIC8vIEZJWE1FOiBicm9rZW4gd2l0aCB0cmFuc2Zvcm1z
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0gYi9Tb3Vy
Y2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KaW5kZXggYzI5OGE5NmE3ODZmZTlmODY3
ODdmNGQzNWI4MzU1NzVhNDQwMzZlZi4uYjFjZjMyMDY1YmEyMGU3NmM3ZTMyNzFhZThjMzAxMzE5
NzZjMDdjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQpAQCAtMjk1OCw4ICsy
OTU4LDggQEAgLSAodm9pZClfYWRkU2Nyb2xsZXJEYXNoYm9hcmRSZWdpb25zRm9yRnJhbWVWaWV3
OihGcmFtZVZpZXcqKWZyYW1lVmlldyBkYXNoYm9hcmQKICAgICBOU1ZpZXcgKmRvY3VtZW50Vmll
dyA9IFtba2l0KCZmcmFtZVZpZXctPmZyYW1lKCkpIGZyYW1lVmlld10gZG9jdW1lbnRWaWV3XTsK
IAogICAgIGZvciAoY29uc3QgYXV0byYgd2lkZ2V0OiBmcmFtZVZpZXctPmNoaWxkcmVuKCkpIHsK
LSAgICAgICAgaWYgKHdpZGdldC0+aXNGcmFtZVZpZXcoKSkgewotICAgICAgICAgICAgW3NlbGYg
X2FkZFNjcm9sbGVyRGFzaGJvYXJkUmVnaW9uc0ZvckZyYW1lVmlldzp0b0ZyYW1lVmlldyh3aWRn
ZXQuZ2V0KCkpIGRhc2hib2FyZFJlZ2lvbnM6cmVnaW9uc107CisgICAgICAgIGlmIChpczxGcmFt
ZVZpZXc+KCp3aWRnZXQpKSB7CisgICAgICAgICAgICBbc2VsZiBfYWRkU2Nyb2xsZXJEYXNoYm9h
cmRSZWdpb25zRm9yRnJhbWVWaWV3OmRvd25jYXN0PEZyYW1lVmlldz4od2lkZ2V0LmdldCgpKSBk
YXNoYm9hcmRSZWdpb25zOnJlZ2lvbnNdOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAg
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvRW1iZWRk
ZWRXaWRnZXQuY3BwIGIvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvRW1iZWRkZWRX
aWRnZXQuY3BwCmluZGV4IDE1MmRiZTkwZTZkNzhlZDU4MmIzZWQwMGY1MzQyNDAyNjE3NmU1ZTEu
LjNlZmFjNjBmZGU5NGY3MjA0ZTFmMWM4NzdiZWJjNzYyYmUxNTEzY2IgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L0VtYmVkZGVkV2lkZ2V0LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9FbWJlZGRlZFdpZGdldC5jcHAKQEAgLTkz
LDEzICs5MywxMiBAQCB2b2lkIEVtYmVkZGVkV2lkZ2V0OjpmcmFtZVJlY3RzQ2hhbmdlZCgpCiAg
ICAgaWYgKCFwYXJlbnQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgQVNTRVJUKHBhcmVudCgp
LT5pc0ZyYW1lVmlldygpKTsKLSAgICBGcmFtZVZpZXcqIGZyYW1lVmlldyA9IHRvRnJhbWVWaWV3
KHBhcmVudCgpKTsKKyAgICBGcmFtZVZpZXcmIGZyYW1lVmlldyA9IGRvd25jYXN0PEZyYW1lVmll
dz4oKnBhcmVudCgpKTsKIAogICAgIEludFJlY3Qgb2xkV2luZG93UmVjdCA9IG1fd2luZG93UmVj
dDsKICAgICBJbnRSZWN0IG9sZENsaXBSZWN0ID0gbV9jbGlwUmVjdDsKIAotICAgIG1fd2luZG93
UmVjdCA9IEludFJlY3QoZnJhbWVWaWV3LT5jb250ZW50c1RvV2luZG93KGZyYW1lUmVjdCgpLmxv
Y2F0aW9uKCkpLCBmcmFtZVJlY3QoKS5zaXplKCkpOworICAgIG1fd2luZG93UmVjdCA9IEludFJl
Y3QoZnJhbWVWaWV3LmNvbnRlbnRzVG9XaW5kb3coZnJhbWVSZWN0KCkubG9jYXRpb24oKSksIGZy
YW1lUmVjdCgpLnNpemUoKSk7CiAgICAgbV9jbGlwUmVjdCA9IHdpbmRvd0NsaXBSZWN0KCk7CiAg
ICAgbV9jbGlwUmVjdC5tb3ZlKC1tX3dpbmRvd1JlY3QueCgpLCAtbV93aW5kb3dSZWN0LnkoKSk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJSZW5kZXJPYmplY3QuY3Bw
IGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlJlbmRlck9iamVjdC5jcHAKaW5kZXggZGYyYmQx
M2JlYzY4YmExYzAwYTQxM2VhYmRhNDA5YzYzMTc3ZjRmNC4uZmE4ZDU5NWE1ZWMzY2EzYWYwNmJk
OTBlNDg0YTdkYzA1MDFhMDFkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dl
YlJlbmRlck9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlJlbmRlck9i
amVjdC5jcHAKQEAgLTEwNiwxMSArMTA2LDExIEBAIFdlYlJlbmRlck9iamVjdDo6V2ViUmVuZGVy
T2JqZWN0KFJlbmRlck9iamVjdCogcmVuZGVyZXIsIGJvb2wgc2hvdWxkSW5jbHVkZURlc2NlCiAg
ICAgICAgIGNoaWxkcmVuLmFwcGVuZChXVEY6Om1vdmUoY2hpbGQpKTsKICAgICB9CiAKLSAgICBp
ZiAocmVuZGVyZXItPmlzV2lkZ2V0KCkpIHsKLSAgICAgICAgaWYgKFdpZGdldCogd2lkZ2V0ID0g
dG9SZW5kZXJXaWRnZXQocmVuZGVyZXIpLT53aWRnZXQoKSkgewotICAgICAgICAgICAgaWYgKHdp
ZGdldC0+aXNGcmFtZVZpZXcoKSkgewotICAgICAgICAgICAgICAgIEZyYW1lVmlldyogZnJhbWVW
aWV3ID0gdG9GcmFtZVZpZXcod2lkZ2V0KTsKLSAgICAgICAgICAgICAgICBpZiAoUmVuZGVyVmll
dyogY29yZUNvbnRlbnRSZW5kZXJlciA9IGZyYW1lVmlldy0+ZnJhbWUoKS5jb250ZW50UmVuZGVy
ZXIoKSkgeworICAgIGlmIChpczxSZW5kZXJXaWRnZXQ+KCpyZW5kZXJlcikpIHsKKyAgICAgICAg
aWYgKFdpZGdldCogd2lkZ2V0ID0gZG93bmNhc3Q8UmVuZGVyV2lkZ2V0PigqcmVuZGVyZXIpLndp
ZGdldCgpKSB7CisgICAgICAgICAgICBpZiAoaXM8RnJhbWVWaWV3Pigqd2lkZ2V0KSkgeworICAg
ICAgICAgICAgICAgIEZyYW1lVmlldyYgZnJhbWVWaWV3ID0gZG93bmNhc3Q8RnJhbWVWaWV3Pigq
d2lkZ2V0KTsKKyAgICAgICAgICAgICAgICBpZiAoUmVuZGVyVmlldyogY29yZUNvbnRlbnRSZW5k
ZXJlciA9IGZyYW1lVmlldy5mcmFtZSgpLmNvbnRlbnRSZW5kZXJlcigpKSB7CiAgICAgICAgICAg
ICAgICAgICAgIFJlZlB0cjxXZWJSZW5kZXJPYmplY3Q+IGNvbnRlbnRSZW5kZXJlciA9IGFkb3B0
UmVmKG5ldyBXZWJSZW5kZXJPYmplY3QoY29yZUNvbnRlbnRSZW5kZXJlciwgc2hvdWxkSW5jbHVk
ZURlc2NlbmRhbnRzKSk7CiAKICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4uYXBwZW5kKFdU
Rjo6bW92ZShjb250ZW50UmVuZGVyZXIpKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>239516</attachid>
            <date>2014-10-08 21:55:35 -0700</date>
            <delta_ts>2014-10-08 22:01:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-137549-20141008215538.patch</filename>
            <type>text/plain</type>
            <size>73881</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc0NDk0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTQ4YjlkOGM2YThjY2Q1
OTUyYmI3YTlmMmQzMjYwYjlhZTZlMzQzNC4uYjg3MGNjOWJmYWM4Y2E0NjJkMTBmM2E0MWMzZWYz
NjFiMzAzMDhiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyOCBAQAorMjAxNC0xMC0wOCAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFVzZSBpczw+KCkgLyBkb3du
Y2FzdDw+KCkgZm9yIFdpZGdldCBzdWJjbGFzc2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzc1NDkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgaXM8PigpIC8gZG93bmNhc3Q8PigpIGZvciBXaWRn
ZXQgc3ViY2xhc3NlcyBhbmQgY2xlYW4gdXAgdGhlCisgICAgICAgIHN1cnJvdW5kaW5nIGNvZGUu
CisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBubyBiZWhhdmlvciBjaGFuZ2UuCisKKyAgICAgICAg
KiBhY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QVhP
YmplY3RDYWNoZTo6Z2V0T3JDcmVhdGUpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eU9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjphcHBlbmRBY2Nlc3NpYmlsaXR5
T2JqZWN0KToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmpl
Y3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6dmlz
aWJsZVBvc2l0aW9uRm9yUG9pbnQpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eVNjcm9sbFZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVNjcm9s
bFZpZXc6OndlYkFyZWFPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVNj
cm9sbFZpZXc6OmRvY3VtZW50RnJhbWVWaWV3KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2li
aWxpdHlTY3JvbGxWaWV3OjpwYXJlbnRPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNz
aWJpbGl0eVNjcm9sbFZpZXc6OnBhcmVudE9iamVjdElmRXhpc3RzKToKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9KU1BsdWdpbkVsZW1lbnRGdW5jdGlvbnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
cGx1Z2luU2NyaXB0T2JqZWN0RnJvbVBsdWdpblZpZXdCYXNlKToKKyAgICAgICAgKiBodG1sL0hU
TUxPYmplY3RFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxPYmplY3RFbGVtZW50
OjphcHBlbmRGb3JtRGF0YSk6CisgICAgICAgICogaHRtbC9IVE1MUGx1Z0luRWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MUGx1Z0luRWxlbWVudDo6Y2FuUHJvY2Vzc0RyYWcpOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTFBsdWdJbkVsZW1lbnQ6OmlzS2V5Ym9hcmRGb2N1c2FibGUp
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTFBsdWdJbkVsZW1lbnQ6OmlzVXNlck9ic2VydmFibGUp
OgorICAgICAgICAqIGh0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MUGx1Z0luSW1hZ2VFbGVtZW50OjpjaGVja1NpemVDaGFuZ2VGb3JTbmFwc2hv
dHRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFBsdWdJbkltYWdlRWxlbWVudDo6c3ViZnJh
bWVMb2FkZXJEaWRDcmVhdGVQbHVnSW4pOgorICAgICAgICAqIGh0bWwvSFRNTFBsdWdJbkltYWdl
RWxlbWVudC5oOgorICAgICAgICAqIGxvYWRlci9TdWJmcmFtZUxvYWRlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTdWJmcmFtZUxvYWRlcjo6bG9hZFBsdWdpbik6CisgICAgICAgICogcGFnZS9E
cmFnQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEcmFnQ29udHJvbGxlcjo6b3Bl
cmF0aW9uRm9yTG9hZCk6CisgICAgICAgICogcGFnZS9FdmVudEhhbmRsZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpzdWJmcmFtZUZvclRhcmdldE5vZGUpOgorICAgICAg
ICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpoYW5kbGVXaGVlbEV2ZW50KToKKyAgICAgICAgKiBw
YWdlL0V2ZW50SGFuZGxlci5oOgorICAgICAgICAqIHBhZ2UvRnJhbWUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RnJhbWU6OmZyYW1lRm9yV2lkZ2V0KToKKyAgICAgICAgKiBwYWdlL0ZyYW1lVmll
dy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6Omhhc0N1c3RvbVNjcm9sbGJhcnMp
OgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3Ojp1cGRhdGVMYXlvdXRBbmRTdHlsZUlmTmVl
ZGVkUmVjdXJzaXZlKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6Y29udmVydFRvQ29u
dGFpbmluZ1ZpZXcpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3Ojpjb252ZXJ0RnJvbUNv
bnRhaW5pbmdWaWV3KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6cmVtb3ZlQ2hpbGQp
OgorICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3Lmg6CisgICAgICAgICogcGFnZS9QYWdlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnBsdWdpblZpZXdzKToKKyAgICAgICAgKiBwYWdlL2Vm
bC9FdmVudEhhbmRsZXJFZmwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpw
YXNzV2hlZWxFdmVudFRvV2lkZ2V0KToKKyAgICAgICAgKiBwYWdlL2d0ay9FdmVudEhhbmRsZXJH
dGsuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpwYXNzV2hlZWxFdmVudFRv
V2lkZ2V0KToKKyAgICAgICAgKiBwYWdlL2lvcy9FdmVudEhhbmRsZXJJT1MubW06CisgICAgICAg
IChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OnBhc3NXaGVlbEV2ZW50VG9XaWRnZXQpOgorICAgICAg
ICAqIHBhZ2UvbWFjL0V2ZW50SGFuZGxlck1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50
SGFuZGxlcjo6cGFzc1doZWVsRXZlbnRUb1dpZGdldCk6CisgICAgICAgICogcGFnZS9zY3JvbGxp
bmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5n
Q29vcmRpbmF0b3I6OmNvbXB1dGVOb25GYXN0U2Nyb2xsYWJsZVJlZ2lvbik6CisgICAgICAgICog
cGFnZS93aW4vRXZlbnRIYW5kbGVyV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFu
ZGxlcjo6cGFzc1doZWVsRXZlbnRUb1dpZGdldCk6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xs
Vmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3OjpyZW1vdmVDaGlsZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3OjpzZXRIYXNIb3Jpem9udGFsU2Nyb2xsYmFyKToK
KyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFZpZXc6OnNldEhhc1ZlcnRpY2FsU2Nyb2xsYmFyKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxWaWV3Lmg6CisgICAgICAgICogcGxhdGZvcm0vU2Ny
b2xsYmFyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhcjo6cm9vdCk6CisgICAgICAg
IFVuaW5saW5lIGFzIHJvb3QoKSBiZWNhdXNlIFdpZGdldDo6cm9vdCgpIHJldHVybnMgYSBGcmFt
ZVZpZXcgbm93IGFuZAorICAgICAgICBpdCBpcyBpbXBvc3NpYmxlIHRvIGluY2x1ZGUgRnJhbWVW
aWV3LmggaW4gU2Nyb2xsYmFyLmggd2l0aG91dCBjYXVzaW5nCisgICAgICAgIGEgY3ljbGUuCisK
KyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxiYXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9XaWRn
ZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2lkZ2V0Ojpyb290KToKKyAgICAgICAgVXNlIHRp
Z2h0ZXIgdHlwaW5nIGFuZCByZXR1cm4gYSBGcmFtZVZpZXcgaW5zdGVhZCBvZiBhIFNjcm9sbFZp
ZXcuCisKKyAgICAgICAgKFdlYkNvcmU6OldpZGdldDo6cmVtb3ZlRnJvbVBhcmVudCk6CisgICAg
ICAgICogcGxhdGZvcm0vV2lkZ2V0Lmg6CisgICAgICAgICogcGxhdGZvcm0vZWZsL1dpZGdldEVm
bC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXaWRnZXQ6OnNldEN1cnNvcik6CisgICAgICAgICog
cGxhdGZvcm0vZ3RrL1BsYXRmb3JtU2NyZWVuR3RrLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
dGsvV2lkZ2V0R3RrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldpZGdldDo6c2V0Q3Vyc29yKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvUGxhdGZvcm1TY3JlZW5NYWMubW06CisgICAgICAgIChX
ZWJDb3JlOjpkaXNwbGF5RnJvbVdpZGdldCk6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1dpZGdl
dE1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OldpZGdldDo6c2V0Q3Vyc29yKToKKyAgICAgICAg
KiBwbGF0Zm9ybS93aW4vV2lkZ2V0V2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldpZGdldDo6
c2V0Q3Vyc29yKToKKyAgICAgICAgKiBwbHVnaW5zL1BsdWdpblZpZXdCYXNlLmg6CisgICAgICAg
ICogcGx1Z2lucy93aW4vUGx1Z2luVmlld1dpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbHVn
aW5WaWV3Ojp1cGRhdGVQbHVnaW5XaWRnZXQpOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luVmll
dzo6cGFpbnRJbnRvVHJhbnNmb3JtZWRDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdp
blZpZXc6OnBhaW50V2luZG93ZWRQbHVnaW5JbnRvQ29udGV4dCk6CisgICAgICAgIChXZWJDb3Jl
OjpQbHVnaW5WaWV3OjpwYWludCk6CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5WaWV3OjpoYW5k
bGVNb3VzZUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpblZpZXc6OnNldE5QV2luZG93
UmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5WaWV3OjpzbmFwc2hvdCk6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlckVtYmVkZGVkT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckVtYmVkZGVkT2JqZWN0OjphbGxvd3NBY2NlbGVyYXRlZENvbXBvc2l0aW5nKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckVtYmVkZGVkT2JqZWN0Ojpub2RlQXRQb2ludCk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJFbWJlZGRlZE9iamVjdDo6c2Nyb2xsKToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyRnJhbWVCYXNlLmg6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGcmFt
ZUJhc2U6OmNoaWxkVmlldyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2lu
Zy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckJhY2tpbmc6OmxheWVyV2lsbEJl
RGVzdHJveWVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQmFja2luZzo6dXBkYXRl
Q29uZmlndXJhdGlvbik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRv
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckNvbXBvc2l0b3I6OnNob3VsZFBy
b3BhZ2F0ZUNvbXBvc2l0aW5nVG9FbmNsb3NpbmdGcmFtZSk6CisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlclRyZWVBc1RleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6d3JpdGUpOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJXaWRnZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2lkZ2V0
SGllcmFyY2h5VXBkYXRlc1N1c3BlbnNpb25TY29wZTo6bW92ZVdpZGdldHMpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyV2lkZ2V0OjpwYWludENvbnRlbnRzKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlcldpZGdldDo6c2V0T3ZlcmxhcFRlc3RSZXN1bHQpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyV2lkZ2V0Ojp1cGRhdGVXaWRnZXRQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJXaWRnZXQ6Om5vZGVBdFBvaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlcldpZGdl
dDo6ZW1iZWRkZWRDb250ZW50Qm94KToKKwogMjAxNC0xMC0wOCAgTXlsZXMgQy4gTWF4ZmllbGQg
IDxtbWF4ZmllbGRAYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQgYnVpbGQgZml4IGFm
dGVyIHIxNzQ0ODAuIEJyb2tlIGlPUyBidWlsZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
bWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwppbmRleCAxOGIyMmUx
NDBlNTYwYjRiMDc1MGY5YmNlMWFlMDNiYjcxN2NkMTliLi43YWI1NWQ3YTM0ZGIwM2Y0ZjdkYTQ5
Y2Y5Mjc3N2FhNTQ2ZmQ2MDM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIw
MTQtMTAtMDggIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBVc2Ug
aXM8PigpIC8gZG93bmNhc3Q8PigpIGZvciBXaWRnZXQgc3ViY2xhc3NlcworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM3NTQ5CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXNlIGlzPD4oKSAvIGRvd25jYXN0
PD4oKSBmb3IgV2lkZ2V0IHN1YmNsYXNzZXMgYW5kIGNsZWFuIHVwIHRoZQorICAgICAgICBzdXJy
b3VuZGluZyBjb2RlLgorCisgICAgICAgICogV2ViVmlldy9XZWJSZW5kZXJOb2RlLm1tOgorICAg
ICAgICAoY29weVJlbmRlck5vZGUpOgorICAgICAgICAqIFdlYlZpZXcvV2ViVmlldy5tbToKKyAg
ICAgICAgKC1bV2ViVmlldyBfYWRkU2Nyb2xsZXJEYXNoYm9hcmRSZWdpb25zRm9yRnJhbWVWaWV3
OmRhc2hib2FyZFJlZ2lvbnM6XSk6CisKIDIwMTQtMTAtMDcgIENocmlzdG9waGUgRHVtZXogIDxj
ZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFVzZSBpczw+KCkgLyBkb3duY2FzdDw+KCkgZm9y
IFJlbmRlclRleHQgLyBSZW5kZXJUZXh0RnJhZ21lbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvd2luL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwppbmRleCA3N2Rj
YTk4NWYxZTEwYTNkMGMwZmQwMWZmOTZhNzI3MDVlZWYzNTI4Li5lYWY2YTFkYzAxYzVhY2UwZmQx
OTY1NzcxYzhlN2NhNGZlMTA3MDQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAK
KzIwMTQtMTAtMDggIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBV
c2UgaXM8PigpIC8gZG93bmNhc3Q8PigpIGZvciBXaWRnZXQgc3ViY2xhc3NlcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM3NTQ5CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXNlIGlzPD4oKSAvIGRvd25j
YXN0PD4oKSBmb3IgV2lkZ2V0IHN1YmNsYXNzZXMgYW5kIGNsZWFuIHVwIHRoZQorICAgICAgICBz
dXJyb3VuZGluZyBjb2RlLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRW1iZWRkZWRXaWRn
ZXQuY3BwOgorICAgICAgICAoRW1iZWRkZWRXaWRnZXQ6OmZyYW1lUmVjdHNDaGFuZ2VkKToKKwog
MjAxNC0xMC0wOCAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KIAogICAgICAg
ICBbV2luXSBSZXNvbHZlIHZhcmlvdXMgc3RhdGljIGFuYWx5emVyIHdhcm5pbmdzIGluIFdlYktp
dC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZwppbmRleCA2OTdkMWNlZjhmZjNiYjcxNWE0ZmMxZmM2OWMxOTkxMWU5ZjNmMGQ1
Li4wYzMxMDRiZWYzMjI4MzQ2MjliZmYyYTVjOWY3N2RiNGJkNmM0MTVlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTYgQEAKKzIwMTQtMTAtMDggIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNv
bT4KKworICAgICAgICBVc2UgaXM8PigpIC8gZG93bmNhc3Q8PigpIGZvciBXaWRnZXQgc3ViY2xh
c3NlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM3
NTQ5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXNl
IGlzPD4oKSAvIGRvd25jYXN0PD4oKSBmb3IgV2lkZ2V0IHN1YmNsYXNzZXMgYW5kIGNsZWFuIHVw
IHRoZQorICAgICAgICBzdXJyb3VuZGluZyBjb2RlLgorCisgICAgICAgICogU2hhcmVkL1dlYlJl
bmRlck9iamVjdC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlJlbmRlck9iamVjdDo6V2ViUmVu
ZGVyT2JqZWN0KToKKwogMjAxNC0xMC0wOCAgQ2hyaXN0b3BoZSBEdW1leiAgPGNkdW1lekBhcHBs
ZS5jb20+CiAKICAgICAgICAgVXNlIGlzPD4oKSAvIGRvd25jYXN0PD4oKSBmb3IgUmVuZGVyQmxv
Y2sgb2JqZWN0cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9i
amVjdENhY2hlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNo
ZS5jcHAKaW5kZXggNTdlYTA2ZmE5Mjc0N2I2NGNlOTZkMjEyYTEyOTQxMTQ0NzFhZjBiNS4uOWYw
NDg0M2RhNTM4MTdlMjBkM2Q4NTNlMzA3YzVlY2M1OWUwNzUzNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwCkBAIC0zNDIsMTEgKzM0MiwxMSBA
QCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBWE9iamVjdENhY2hlOjpnZXRPckNyZWF0ZShXaWRnZXQq
IHdpZGdldCkKICAgICBpZiAoQWNjZXNzaWJpbGl0eU9iamVjdCogb2JqID0gZ2V0KHdpZGdldCkp
CiAgICAgICAgIHJldHVybiBvYmo7CiAgICAgCi0gICAgUmVmUHRyPEFjY2Vzc2liaWxpdHlPYmpl
Y3Q+IG5ld09iaiA9IG51bGxwdHI7Ci0gICAgaWYgKHdpZGdldC0+aXNGcmFtZVZpZXcoKSkKLSAg
ICAgICAgbmV3T2JqID0gQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXc6OmNyZWF0ZSh0b1Njcm9sbFZp
ZXcod2lkZ2V0KSk7Ci0gICAgZWxzZSBpZiAod2lkZ2V0LT5pc1Njcm9sbGJhcigpKQotICAgICAg
ICBuZXdPYmogPSBBY2Nlc3NpYmlsaXR5U2Nyb2xsYmFyOjpjcmVhdGUodG9TY3JvbGxiYXIod2lk
Z2V0KSk7CisgICAgUmVmUHRyPEFjY2Vzc2liaWxpdHlPYmplY3Q+IG5ld09iajsKKyAgICBpZiAo
aXM8U2Nyb2xsVmlldz4oKndpZGdldCkpCisgICAgICAgIG5ld09iaiA9IEFjY2Vzc2liaWxpdHlT
Y3JvbGxWaWV3OjpjcmVhdGUoZG93bmNhc3Q8U2Nyb2xsVmlldz4od2lkZ2V0KSk7CisgICAgZWxz
ZSBpZiAoaXM8U2Nyb2xsYmFyPigqd2lkZ2V0KSkKKyAgICAgICAgbmV3T2JqID0gQWNjZXNzaWJp
bGl0eVNjcm9sbGJhcjo6Y3JlYXRlKGRvd25jYXN0PFNjcm9sbGJhcj4od2lkZ2V0KSk7CiAKICAg
ICAvLyBXaWxsIGNyYXNoIGxhdGVyIGlmIHdlIGhhdmUgdHdvIG9iamVjdHMgZm9yIHRoZSBzYW1l
IHdpZGdldC4KICAgICBBU1NFUlQoIWdldCh3aWRnZXQpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwCmluZGV4IGI2OTVmM2Zi
MzYxOTVmNWVmOTQzMDQyNjQ1MWYwZTY3NWJkMWIxZTcuLjJiMTkxOWE2YjVjMzUwNWQzMDM4ZDJi
NzY5M2E3MmIyZGQ4ZTI3MmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcApAQCAtNDg0LDE0ICs0ODQsMTQgQEAgc3RhdGlj
IHZvaWQgYXBwZW5kQWNjZXNzaWJpbGl0eU9iamVjdChBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmpl
Y3QsIEFjY2Vzc2liaWxpdHkKICAgICAvLyBGaW5kIHRoZSBuZXh0IGRlc2NlbmRhbnQgb2YgdGhp
cyBhdHRhY2htZW50IG9iamVjdCBzbyBzZWFyY2ggY2FuIGNvbnRpbnVlIHRocm91Z2ggZnJhbWVz
LgogICAgIGlmIChvYmplY3QtPmlzQXR0YWNobWVudCgpKSB7CiAgICAgICAgIFdpZGdldCogd2lk
Z2V0ID0gb2JqZWN0LT53aWRnZXRGb3JBdHRhY2htZW50VmlldygpOwotICAgICAgICBpZiAoIXdp
ZGdldCB8fCAhd2lkZ2V0LT5pc0ZyYW1lVmlldygpKQorICAgICAgICBpZiAoIWlzPEZyYW1lVmll
dz4od2lkZ2V0KSkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgCi0gICAgICAgIERvY3Vt
ZW50KiBkb2MgPSB0b0ZyYW1lVmlldyh3aWRnZXQpLT5mcmFtZSgpLmRvY3VtZW50KCk7Ci0gICAg
ICAgIGlmICghZG9jIHx8ICFkb2MtPmhhc0xpdmluZ1JlbmRlclRyZWUoKSkKKyAgICAgICAgRG9j
dW1lbnQqIGRvY3VtZW50ID0gZG93bmNhc3Q8RnJhbWVWaWV3Pigqd2lkZ2V0KS5mcmFtZSgpLmRv
Y3VtZW50KCk7CisgICAgICAgIGlmICghZG9jdW1lbnQgfHwgIWRvY3VtZW50LT5oYXNMaXZpbmdS
ZW5kZXJUcmVlKCkpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIAotICAgICAgICBvYmpl
Y3QgPSBvYmplY3QtPmF4T2JqZWN0Q2FjaGUoKS0+Z2V0T3JDcmVhdGUoZG9jKTsKKyAgICAgICAg
b2JqZWN0ID0gb2JqZWN0LT5heE9iamVjdENhY2hlKCktPmdldE9yQ3JlYXRlKGRvY3VtZW50KTsK
ICAgICB9CiAKICAgICBpZiAob2JqZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAKaW5kZXggZjU3Njkx
NDVhNTIwODNhOTI5MjAxZjQwZmI0ZmI1Y2EyYjdiMjIxMy4uMTI4MGIwMDQzMWEwYzk4YWE1OGYy
NWZjNjZlZDMxMjk4MmNjOTE1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCkBAIC0yMDA3LDEyICsy
MDA3LDEyIEBAIFZpc2libGVQb3NpdGlvbiBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojp2aXNp
YmxlUG9zaXRpb25Gb3JQb2ludChjb25zdCBJbnRQb2luCiAKICAgICAgICAgLy8gZGVzY2VuZCBp
bnRvIHdpZGdldCAoRlJBTUUsIElGUkFNRSwgT0JKRUNULi4uKQogICAgICAgICBXaWRnZXQqIHdp
ZGdldCA9IHRvUmVuZGVyV2lkZ2V0KHJlbmRlcmVyKS0+d2lkZ2V0KCk7Ci0gICAgICAgIGlmICgh
d2lkZ2V0IHx8ICF3aWRnZXQtPmlzRnJhbWVWaWV3KCkpCisgICAgICAgIGlmICghaXM8RnJhbWVW
aWV3Pih3aWRnZXQpKQogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIEZyYW1lJiBmcmFtZSA9
IHRvRnJhbWVWaWV3KHdpZGdldCktPmZyYW1lKCk7CisgICAgICAgIEZyYW1lJiBmcmFtZSA9IGRv
d25jYXN0PEZyYW1lVmlldz4oKndpZGdldCkuZnJhbWUoKTsKICAgICAgICAgcmVuZGVyVmlldyA9
IGZyYW1lLmRvY3VtZW50KCktPnJlbmRlclZpZXcoKTsKICNpZiBQTEFURk9STShDT0NPQSkKLSAg
ICAgICAgZnJhbWVWaWV3ID0gdG9GcmFtZVZpZXcod2lkZ2V0KTsKKyAgICAgICAgZnJhbWVWaWV3
ID0gZG93bmNhc3Q8RnJhbWVWaWV3Pih3aWRnZXQpOwogI2VuZGlmCiAgICAgfQogICAgIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2Nyb2xs
Vmlldy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTY3Jv
bGxWaWV3LmNwcAppbmRleCA5ZjI0Yzk3ZmRiYmEyMTM5NDRkNDIwZmMzZmUxYjBkZjZjZDJhZjNi
Li42ZDJkYjIyNmZlZDM2ZTAxNDEzNDVlMWFkMGM5OTk1ZTNhMzIxNzA2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTY3JvbGxWaWV3LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTY3JvbGxWaWV3
LmNwcApAQCAtMTg5LDE1ICsxODksMTUgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldzo6
YWRkQ2hpbGRyZW4oKQogCiBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5U2Nyb2xs
Vmlldzo6d2ViQXJlYU9iamVjdCgpIGNvbnN0CiB7Ci0gICAgaWYgKCFtX3Njcm9sbFZpZXcgfHwg
IW1fc2Nyb2xsVmlldy0+aXNGcmFtZVZpZXcoKSkKKyAgICBpZiAoIWlzPEZyYW1lVmlldz4obV9z
Y3JvbGxWaWV3KSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgCi0gICAgRG9jdW1lbnQq
IGRvYyA9IHRvRnJhbWVWaWV3KG1fc2Nyb2xsVmlldyktPmZyYW1lKCkuZG9jdW1lbnQoKTsKLSAg
ICBpZiAoIWRvYyB8fCAhZG9jLT5oYXNMaXZpbmdSZW5kZXJUcmVlKCkpCisgICAgRG9jdW1lbnQq
IGRvY3VtZW50ID0gZG93bmNhc3Q8RnJhbWVWaWV3PigqbV9zY3JvbGxWaWV3KS5mcmFtZSgpLmRv
Y3VtZW50KCk7CisgICAgaWYgKCFkb2N1bWVudCB8fCAhZG9jdW1lbnQtPmhhc0xpdmluZ1JlbmRl
clRyZWUoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBpZiAoQVhPYmplY3RDYWNo
ZSogY2FjaGUgPSBheE9iamVjdENhY2hlKCkpCi0gICAgICAgIHJldHVybiBjYWNoZS0+Z2V0T3JD
cmVhdGUoZG9jKTsKKyAgICAgICAgcmV0dXJuIGNhY2hlLT5nZXRPckNyZWF0ZShkb2N1bWVudCk7
CiAgICAgCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CkBAIC0yMzEsMjIgKzIzMSwyMiBAQCBMYXlv
dXRSZWN0IEFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3OjplbGVtZW50UmVjdCgpIGNvbnN0CiAKIEZy
YW1lVmlldyogQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXc6OmRvY3VtZW50RnJhbWVWaWV3KCkgY29u
c3QKIHsKLSAgICBpZiAoIW1fc2Nyb2xsVmlldyB8fCAhbV9zY3JvbGxWaWV3LT5pc0ZyYW1lVmll
dygpKQorICAgIGlmICghaXM8RnJhbWVWaWV3PihtX3Njcm9sbFZpZXcpKQogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKICAgICAKLSAgICByZXR1cm4gdG9GcmFtZVZpZXcobV9zY3JvbGxWaWV3KTsK
KyAgICByZXR1cm4gZG93bmNhc3Q8RnJhbWVWaWV3PihtX3Njcm9sbFZpZXcpOwogfSAgICAKIAog
QWNjZXNzaWJpbGl0eU9iamVjdCogQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXc6OnBhcmVudE9iamVj
dCgpIGNvbnN0CiB7Ci0gICAgaWYgKCFtX3Njcm9sbFZpZXcgfHwgIW1fc2Nyb2xsVmlldy0+aXNG
cmFtZVZpZXcoKSkKKyAgICBpZiAoIWlzPEZyYW1lVmlldz4obV9zY3JvbGxWaWV3KSkKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBBWE9iamVjdENhY2hlKiBjYWNoZSA9IGF4T2JqZWN0
Q2FjaGUoKTsKICAgICBpZiAoIWNhY2hlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAg
IEhUTUxGcmFtZU93bmVyRWxlbWVudCogb3duZXIgPSB0b0ZyYW1lVmlldyhtX3Njcm9sbFZpZXcp
LT5mcmFtZSgpLm93bmVyRWxlbWVudCgpOworICAgIEhUTUxGcmFtZU93bmVyRWxlbWVudCogb3du
ZXIgPSBkb3duY2FzdDxGcmFtZVZpZXc+KCptX3Njcm9sbFZpZXcpLmZyYW1lKCkub3duZXJFbGVt
ZW50KCk7CiAgICAgaWYgKG93bmVyICYmIG93bmVyLT5yZW5kZXJlcigpKQogICAgICAgICByZXR1
cm4gY2FjaGUtPmdldE9yQ3JlYXRlKG93bmVyKTsKIApAQCAtMjU1LDE0ICsyNTUsMTQgQEAgQWNj
ZXNzaWJpbGl0eU9iamVjdCogQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXc6OnBhcmVudE9iamVjdCgp
IGNvbnN0CiAgICAgCiBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5U2Nyb2xsVmll
dzo6cGFyZW50T2JqZWN0SWZFeGlzdHMoKSBjb25zdAogewotICAgIGlmICghbV9zY3JvbGxWaWV3
IHx8ICFtX3Njcm9sbFZpZXctPmlzRnJhbWVWaWV3KCkpCisgICAgaWYgKCFpczxGcmFtZVZpZXc+
KG1fc2Nyb2xsVmlldykpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIAogICAgIEFYT2Jq
ZWN0Q2FjaGUqIGNhY2hlID0gYXhPYmplY3RDYWNoZSgpOwogICAgIGlmICghY2FjaGUpCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogCi0gICAgSFRNTEZyYW1lT3duZXJFbGVtZW50KiBvd25lciA9
IHRvRnJhbWVWaWV3KG1fc2Nyb2xsVmlldyktPmZyYW1lKCkub3duZXJFbGVtZW50KCk7CisgICAg
SFRNTEZyYW1lT3duZXJFbGVtZW50KiBvd25lciA9IGRvd25jYXN0PEZyYW1lVmlldz4obV9zY3Jv
bGxWaWV3KS0+ZnJhbWUoKS5vd25lckVsZW1lbnQoKTsKICAgICBpZiAob3duZXIgJiYgb3duZXIt
PnJlbmRlcmVyKCkpCiAgICAgICAgIHJldHVybiBjYWNoZS0+Z2V0KG93bmVyKTsKICAgICAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUGx1Z2luRWxlbWVudEZ1bmN0
aW9ucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1BsdWdpbkVsZW1lbnRGdW5j
dGlvbnMuY3BwCmluZGV4IDgxYWVlOWQwODkwMTY3OTRmMTg2MzdkZmM2ZTFkYTM3NzQ2YTJiYjIu
LmM2ZjYxZWJiNTQzMWI3MDQ2OWM0ZDdmMGRiNjViNGRjODRkYTkwY2EgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUGx1Z2luRWxlbWVudEZ1bmN0aW9ucy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNQbHVnaW5FbGVtZW50RnVuY3Rpb25zLmNw
cApAQCAtNDksMTQgKzQ5LDEwIEBAIEluc3RhbmNlKiBwbHVnaW5JbnN0YW5jZShIVE1MRWxlbWVu
dCYgZWxlbWVudCkKIHN0YXRpYyBKU09iamVjdCogcGx1Z2luU2NyaXB0T2JqZWN0RnJvbVBsdWdp
blZpZXdCYXNlKEhUTUxQbHVnSW5FbGVtZW50JiBwbHVnaW5FbGVtZW50LCBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0KQogewogICAgIFdpZGdldCogcGx1Z2luV2lkZ2V0ID0gcGx1Z2luRWxl
bWVudC5wbHVnaW5XaWRnZXQoKTsKLSAgICBpZiAoIXBsdWdpbldpZGdldCkKLSAgICAgICAgcmV0
dXJuIG51bGxwdHI7Ci0gICAgCi0gICAgaWYgKCFwbHVnaW5XaWRnZXQtPmlzUGx1Z2luVmlld0Jh
c2UoKSkKKyAgICBpZiAoIWlzPFBsdWdpblZpZXdCYXNlPihwbHVnaW5XaWRnZXQpKQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKIAotICAgIFBsdWdpblZpZXdCYXNlKiBwbHVnaW5WaWV3QmFzZSA9
IHRvUGx1Z2luVmlld0Jhc2UocGx1Z2luV2lkZ2V0KTsKLSAgICByZXR1cm4gcGx1Z2luVmlld0Jh
c2UtPnNjcmlwdE9iamVjdChnbG9iYWxPYmplY3QpOworICAgIHJldHVybiBkb3duY2FzdDxQbHVn
aW5WaWV3QmFzZT4oKnBsdWdpbldpZGdldCkuc2NyaXB0T2JqZWN0KGdsb2JhbE9iamVjdCk7CiB9
CiAKIHN0YXRpYyBKU09iamVjdCogcGx1Z2luU2NyaXB0T2JqZWN0RnJvbVBsdWdpblZpZXdCYXNl
KEpTSFRNTEVsZW1lbnQqIGpzSFRNTEVsZW1lbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9i
amVjdEVsZW1lbnQuY3BwCmluZGV4IDY4OGI0NTBhMzgzNDY3ZjA5NjJiYjExZTQ3YTkzYmU2OTg5
NmYxYWIuLjdkNTY1M2YxZjg5OWFhNDJhMmVhYmUwYWY2NzZhMjAzOTg1NjAzOWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuY3BwCkBAIC01MDAsMTAgKzUwMCwxMCBA
QCBib29sIEhUTUxPYmplY3RFbGVtZW50OjphcHBlbmRGb3JtRGF0YShGb3JtRGF0YUxpc3QmIGVu
Y29kaW5nLCBib29sKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBXaWRnZXQqIHdpZGdl
dCA9IHBsdWdpbldpZGdldCgpOwotICAgIGlmICghd2lkZ2V0IHx8ICF3aWRnZXQtPmlzUGx1Z2lu
Vmlld0Jhc2UoKSkKKyAgICBpZiAoIWlzPFBsdWdpblZpZXdCYXNlPih3aWRnZXQpKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgU3RyaW5nIHZhbHVlOwotICAgIGlmICghdG9QbHVnaW5WaWV3
QmFzZSh3aWRnZXQpLT5nZXRGb3JtVmFsdWUodmFsdWUpKQorICAgIGlmICghZG93bmNhc3Q8UGx1
Z2luVmlld0Jhc2U+KCp3aWRnZXQpLmdldEZvcm1WYWx1ZSh2YWx1ZSkpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICBlbmNvZGluZy5hcHBlbmREYXRhKG5hbWUoKSwgdmFsdWUpOwogICAgIHJl
dHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luRWxl
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5FbGVtZW50LmNwcAppbmRl
eCBmMzdiZTBjZTIyNDg2MWQ5NjQ5NGIxZjc2NTk4ZjlkMTdhYzBjMjE1Li44MGJjNzU4OWQ1MDEw
Y2EyZTRkY2M4NjE1YzI5ODkzMzQ0Njg3ZDRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxQbHVnSW5FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQ
bHVnSW5FbGVtZW50LmNwcApAQCAtOTEsNyArOTEsNyBAQCBIVE1MUGx1Z0luRWxlbWVudDo6fkhU
TUxQbHVnSW5FbGVtZW50KCkKIAogYm9vbCBIVE1MUGx1Z0luRWxlbWVudDo6Y2FuUHJvY2Vzc0Ry
YWcoKSBjb25zdAogewotICAgIGNvbnN0IFBsdWdpblZpZXdCYXNlKiBwbHVnaW4gPSBwbHVnaW5X
aWRnZXQoKSAmJiBwbHVnaW5XaWRnZXQoKS0+aXNQbHVnaW5WaWV3QmFzZSgpID8gdG9QbHVnaW5W
aWV3QmFzZShwbHVnaW5XaWRnZXQoKSkgOiBudWxscHRyOworICAgIGNvbnN0IFBsdWdpblZpZXdC
YXNlKiBwbHVnaW4gPSBpczxQbHVnaW5WaWV3QmFzZT4ocGx1Z2luV2lkZ2V0KCkpID8gZG93bmNh
c3Q8UGx1Z2luVmlld0Jhc2U+KHBsdWdpbldpZGdldCgpKSA6IG51bGxwdHI7CiAgICAgcmV0dXJu
IHBsdWdpbiA/IHBsdWdpbi0+Y2FuUHJvY2Vzc0RyYWcoKSA6IGZhbHNlOwogfQogCkBAIC0yNDIs
MTAgKzI0MiwxMCBAQCBib29sIEhUTUxQbHVnSW5FbGVtZW50Ojppc0tleWJvYXJkRm9jdXNhYmxl
KEtleWJvYXJkRXZlbnQqKSBjb25zdAogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBXaWRn
ZXQqIHdpZGdldCA9IHBsdWdpbldpZGdldCgpOwotICAgIGlmICghd2lkZ2V0IHx8ICF3aWRnZXQt
PmlzUGx1Z2luVmlld0Jhc2UoKSkKKyAgICBpZiAoIWlzPFBsdWdpblZpZXdCYXNlPih3aWRnZXQp
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICByZXR1cm4gdG9QbHVnaW5WaWV3QmFzZSh3
aWRnZXQpLT5zdXBwb3J0c0tleWJvYXJkRm9jdXMoKTsKKyAgICByZXR1cm4gZG93bmNhc3Q8UGx1
Z2luVmlld0Jhc2U+KCp3aWRnZXQpLnN1cHBvcnRzS2V5Ym9hcmRGb2N1cygpOwogfQogCiBib29s
IEhUTUxQbHVnSW5FbGVtZW50Ojppc1BsdWdpbkVsZW1lbnQoKSBjb25zdApAQCAtMjU3LDE3ICsy
NTcsMTcgQEAgYm9vbCBIVE1MUGx1Z0luRWxlbWVudDo6aXNVc2VyT2JzZXJ2YWJsZSgpIGNvbnN0
CiB7CiAgICAgLy8gTm8gd2lkZ2V0IC0gY2FuJ3QgYmUgYW55dGhpbmcgdG8gc2VlIG9yIGhlYXIg
aGVyZS4KICAgICBXaWRnZXQqIHdpZGdldCA9IHBsdWdpbldpZGdldChQbHVnaW5Mb2FkaW5nUG9s
aWN5OjpEb05vdExvYWQpOwotICAgIGlmICghd2lkZ2V0IHx8ICF3aWRnZXQtPmlzUGx1Z2luVmll
d0Jhc2UoKSkKKyAgICBpZiAoIWlzPFBsdWdpblZpZXdCYXNlPih3aWRnZXQpKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKLSAgICBQbHVnaW5WaWV3QmFzZSogcGx1Z2luVmlldyA9IHRvUGx1Z2lu
Vmlld0Jhc2Uod2lkZ2V0KTsKKyAgICBQbHVnaW5WaWV3QmFzZSYgcGx1Z2luVmlldyA9IGRvd25j
YXN0PFBsdWdpblZpZXdCYXNlPigqd2lkZ2V0KTsKIAogICAgIC8vIElmIGF1ZGlvIGlzIHBsYXlp
bmcgKG9yIG1pZ2h0IGJlKSB0aGVuIHRoZSBwbHVnaW4gaXMgZGV0ZWN0YWJsZS4KLSAgICBpZiAo
cGx1Z2luVmlldy0+YXVkaW9IYXJkd2FyZUFjdGl2aXR5KCkgIT0gQXVkaW9IYXJkd2FyZUFjdGl2
aXR5VHlwZTo6SXNJbmFjdGl2ZSkKKyAgICBpZiAocGx1Z2luVmlldy5hdWRpb0hhcmR3YXJlQWN0
aXZpdHkoKSAhPSBBdWRpb0hhcmR3YXJlQWN0aXZpdHlUeXBlOjpJc0luYWN0aXZlKQogICAgICAg
ICByZXR1cm4gdHJ1ZTsKIAogICAgIC8vIElmIHRoZSBwbHVnaW4gaXMgdmlzaWJsZSBhbmQgbm90
IHZhbmlzaGluZ2x5IHNtYWxsIGluIGVpdGhlciBkaW1lbnNpb24gaXQgaXMgZGV0ZWN0YWJsZS4K
LSAgICByZXR1cm4gcGx1Z2luVmlldy0+aXNWaXNpYmxlKCkgJiYgd2lkZ2V0LT53aWR0aCgpID4g
MiAmJiB3aWRnZXQtPmhlaWdodCgpID4gMjsKKyAgICByZXR1cm4gcGx1Z2luVmlldy5pc1Zpc2li
bGUoKSAmJiBwbHVnaW5WaWV3LndpZHRoKCkgPiAyICYmIHBsdWdpblZpZXcuaGVpZ2h0KCkgPiAy
OwogfQogCiBib29sIEhUTUxQbHVnSW5FbGVtZW50OjpzdXBwb3J0c0ZvY3VzKCkgY29uc3QKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuY3BwCmluZGV4IDA2
MzYxMmZkZWU2NTQ2MzM2ZWU3NGQ2MzU4YzJmYjY3MDBhZWMyMTkuLmM3YjdmMjJjMzVmNmY3ZmFm
ODhkNDA2YzExM2FhNWNlMzRhNjdlMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFBsdWdJbkltYWdlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
UGx1Z0luSW1hZ2VFbGVtZW50LmNwcApAQCAtNTUxLDggKzU1MSw4IEBAIHZvaWQgSFRNTFBsdWdJ
bkltYWdlRWxlbWVudDo6Y2hlY2tTaXplQ2hhbmdlRm9yU25hcHNob3R0aW5nKCkKICAgICBzZXRE
aXNwbGF5U3RhdGUoV2FpdGluZ0ZvclNuYXBzaG90KTsKICAgICBtX3NuYXBzaG90RGVjaXNpb24g
PSBTbmFwc2hvdHRlZDsKICAgICBXaWRnZXQqIHdpZGdldCA9IHBsdWdpbldpZGdldCgpOwotICAg
IGlmICh3aWRnZXQgJiYgd2lkZ2V0LT5pc1BsdWdpblZpZXdCYXNlKCkpCi0gICAgICAgIHRvUGx1
Z2luVmlld0Jhc2Uod2lkZ2V0KS0+YmVnaW5TbmFwc2hvdHRpbmdSdW5uaW5nUGx1Z2luKCk7Cisg
ICAgaWYgKGlzPFBsdWdpblZpZXdCYXNlPih3aWRnZXQpKQorICAgICAgICBkb3duY2FzdDxQbHVn
aW5WaWV3QmFzZT4oKndpZGdldCkuYmVnaW5TbmFwc2hvdHRpbmdSdW5uaW5nUGx1Z2luKCk7CiB9
CiAKIHN0YXRpYyBpbmxpbmUgYm9vbCBpczEwMFBlcmNlbnQoTGVuZ3RoIGxlbmd0aCkKQEAgLTcy
NSwxMSArNzI1LDExIEBAIHZvaWQgSFRNTFBsdWdJbkltYWdlRWxlbWVudDo6c3ViZnJhbWVMb2Fk
ZXJXaWxsQ3JlYXRlUGx1Z0luKGNvbnN0IFVSTCYgdXJsKQogICAgIHNldERpc3BsYXlTdGF0ZShX
YWl0aW5nRm9yU25hcHNob3QpOwogfQogCi12b2lkIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OnN1
YmZyYW1lTG9hZGVyRGlkQ3JlYXRlUGx1Z0luKGNvbnN0IFdpZGdldCogd2lkZ2V0KQordm9pZCBI
VE1MUGx1Z0luSW1hZ2VFbGVtZW50OjpzdWJmcmFtZUxvYWRlckRpZENyZWF0ZVBsdWdJbihjb25z
dCBXaWRnZXQmIHdpZGdldCkKIHsKICAgICBtX3BsdWdJbldhc0NyZWF0ZWQgPSB0cnVlOwogCi0g
ICAgaWYgKHdpZGdldC0+aXNQbHVnaW5WaWV3QmFzZSgpICYmIHRvUGx1Z2luVmlld0Jhc2Uod2lk
Z2V0KS0+c2hvdWxkQWx3YXlzQXV0b1N0YXJ0KCkpIHsKKyAgICBpZiAoaXM8UGx1Z2luVmlld0Jh
c2U+KHdpZGdldCkgJiYgZG93bmNhc3Q8UGx1Z2luVmlld0Jhc2U+KHdpZGdldCkuc2hvdWxkQWx3
YXlzQXV0b1N0YXJ0KCkpIHsKICAgICAgICAgTE9HKFBsdWdpbnMsICIlcCBQbHVnLWluIHNob3Vs
ZCBhdXRvLXN0YXJ0LCBzZXQgdG8gcGxheSIsIHRoaXMpOwogICAgICAgICBtX3NuYXBzaG90RGVj
aXNpb24gPSBOZXZlclNuYXBzaG90OwogICAgICAgICBzZXREaXNwbGF5U3RhdGUoUGxheWluZyk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5oCmluZGV4IDg2
ZGNjODY5MjhlYWE0NjZlMTIxYmM5Njc1NWEzMzQzMzAwMWE2Y2MuLjNlZWY0YzYwYmQzODU1ZmQ0
NTg1OWZlOTQzNWQzMTk0ODZhYmVlNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFBsdWdJbkltYWdlRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBs
dWdJbkltYWdlRWxlbWVudC5oCkBAIC03NCw3ICs3NCw3IEBAIHB1YmxpYzoKIAogICAgIC8vIFBs
dWctaW4gVVJMIG1pZ2h0IG5vdCBiZSB0aGUgc2FtZSBhcyB1cmwoKSB3aXRoIG92ZXJyaWRpbmcg
cGFyYW1ldGVycy4KICAgICB2b2lkIHN1YmZyYW1lTG9hZGVyV2lsbENyZWF0ZVBsdWdJbihjb25z
dCBVUkwmIHBsdWdJblVSTCk7Ci0gICAgdm9pZCBzdWJmcmFtZUxvYWRlckRpZENyZWF0ZVBsdWdJ
bihjb25zdCBXaWRnZXQqKTsKKyAgICB2b2lkIHN1YmZyYW1lTG9hZGVyRGlkQ3JlYXRlUGx1Z0lu
KGNvbnN0IFdpZGdldCYpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRJc1ByaW1hcnlT
bmFwc2hvdHRlZFBsdWdJbihib29sKTsKICAgICBib29sIHBhcnRPZlNuYXBzaG90T3ZlcmxheShO
b2RlKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3ViZnJhbWVMb2FkZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YmZyYW1lTG9hZGVyLmNwcAppbmRleCA3ZWU1
NDhmZDNjOWQ1M2YxM2YwNGIzM2IyNTAzMjE3YTY0MDFjODk4Li44YTE2MTQyYTQ0MDg1ZmJiMzQz
NjIyNzc3N2NhYTYzZDI4YmRjOTRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
U3ViZnJhbWVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJmcmFtZUxv
YWRlci5jcHAKQEAgLTQwOSw3ICs0MDksNyBAQCBib29sIFN1YmZyYW1lTG9hZGVyOjpsb2FkUGx1
Z2luKEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQmIHBsdWdpbkVsZW1lbnQsIGNvbnN0IFVSTAogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgcGx1Z2luRWxlbWVudC5zdWJmcmFtZUxv
YWRlckRpZENyZWF0ZVBsdWdJbih3aWRnZXQuZ2V0KCkpOworICAgIHBsdWdpbkVsZW1lbnQuc3Vi
ZnJhbWVMb2FkZXJEaWRDcmVhdGVQbHVnSW4oKndpZGdldCk7CiAgICAgcmVuZGVyZXItPnNldFdp
ZGdldCh3aWRnZXQpOwogICAgIG1fY29udGFpbnNQbHVnaW5zID0gdHJ1ZTsKICAgICByZXR1cm4g
dHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKaW5kZXggYjc1N2U4YjQ5
MDY0MWFhNDEzYTdmN2E0MTFkMTg2NDNkM2U3MDlkNS4uZWYzOTRmYmI2YTkwNDExZjkyMDYxNjUx
MDNjZDg4YjZlZDhhNmEwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29u
dHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAK
QEAgLTM5MywxOSArMzkzLDE5IEBAIERyYWdTb3VyY2VBY3Rpb24gRHJhZ0NvbnRyb2xsZXI6OmRl
bGVnYXRlRHJhZ1NvdXJjZUFjdGlvbihjb25zdCBJbnRQb2ludCYgcm9vdFZpCiAKIERyYWdPcGVy
YXRpb24gRHJhZ0NvbnRyb2xsZXI6Om9wZXJhdGlvbkZvckxvYWQoRHJhZ0RhdGEmIGRyYWdEYXRh
KQogewotICAgIERvY3VtZW50KiBkb2MgPSBtX3BhZ2UubWFpbkZyYW1lKCkuZG9jdW1lbnRBdFBv
aW50KGRyYWdEYXRhLmNsaWVudFBvc2l0aW9uKCkpOworICAgIERvY3VtZW50KiBkb2N1bWVudCA9
IG1fcGFnZS5tYWluRnJhbWUoKS5kb2N1bWVudEF0UG9pbnQoZHJhZ0RhdGEuY2xpZW50UG9zaXRp
b24oKSk7CiAKICAgICBib29sIHBsdWdpbkRvY3VtZW50QWNjZXB0c0RyYWdzID0gZmFsc2U7CiAK
LSAgICBpZiAoaXM8UGx1Z2luRG9jdW1lbnQ+KGRvYykpIHsKLSAgICAgICAgY29uc3QgV2lkZ2V0
KiB3aWRnZXQgPSBkb3duY2FzdDxQbHVnaW5Eb2N1bWVudD4oKmRvYykucGx1Z2luV2lkZ2V0KCk7
Ci0gICAgICAgIGNvbnN0IFBsdWdpblZpZXdCYXNlKiBwbHVnaW5WaWV3ID0gKHdpZGdldCAmJiB3
aWRnZXQtPmlzUGx1Z2luVmlld0Jhc2UoKSkgPyB0b1BsdWdpblZpZXdCYXNlKHdpZGdldCkgOiBu
dWxscHRyOworICAgIGlmIChpczxQbHVnaW5Eb2N1bWVudD4oZG9jdW1lbnQpKSB7CisgICAgICAg
IGNvbnN0IFdpZGdldCogd2lkZ2V0ID0gZG93bmNhc3Q8UGx1Z2luRG9jdW1lbnQ+KCpkb2N1bWVu
dCkucGx1Z2luV2lkZ2V0KCk7CisgICAgICAgIGNvbnN0IFBsdWdpblZpZXdCYXNlKiBwbHVnaW5W
aWV3ID0gaXM8UGx1Z2luVmlld0Jhc2U+KHdpZGdldCkgPyBkb3duY2FzdDxQbHVnaW5WaWV3QmFz
ZT4od2lkZ2V0KSA6IG51bGxwdHI7CiAKICAgICAgICAgaWYgKHBsdWdpblZpZXcpCiAgICAgICAg
ICAgICBwbHVnaW5Eb2N1bWVudEFjY2VwdHNEcmFncyA9IHBsdWdpblZpZXctPnNob3VsZEFsbG93
TmF2aWdhdGlvbkZyb21EcmFncygpOwogICAgIH0KIAotICAgIGlmIChkb2MgJiYgKG1fZGlkSW5p
dGlhdGVEcmFnIHx8IChkb2MtPmlzUGx1Z2luRG9jdW1lbnQoKSAmJiAhcGx1Z2luRG9jdW1lbnRB
Y2NlcHRzRHJhZ3MpIHx8IGRvYy0+aGFzRWRpdGFibGVTdHlsZSgpKSkKKyAgICBpZiAoZG9jdW1l
bnQgJiYgKG1fZGlkSW5pdGlhdGVEcmFnIHx8IChpczxQbHVnaW5Eb2N1bWVudD4oKmRvY3VtZW50
KSAmJiAhcGx1Z2luRG9jdW1lbnRBY2NlcHRzRHJhZ3MpIHx8IGRvY3VtZW50LT5oYXNFZGl0YWJs
ZVN0eWxlKCkpKQogICAgICAgICByZXR1cm4gRHJhZ09wZXJhdGlvbk5vbmU7CiAgICAgcmV0dXJu
IGRyYWdPcGVyYXRpb24oZHJhZ0RhdGEpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9FdmVudEhhbmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIu
Y3BwCmluZGV4IDdlNGY0ZmMwNTYxNzllZDg2MWYyZGU3ZDBjMTg0NTRmMTkyMTNmOTkuLjY2MWVh
NTlmMDAxMDcxMmM4NzYzNDY5YzZmOTMzYTllODRiMmY0YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2
ZW50SGFuZGxlci5jcHAKQEAgLTEyNTEsMTcgKzEyNTEsMTcgQEAgRnJhbWUqIEV2ZW50SGFuZGxl
cjo6c3ViZnJhbWVGb3JIaXRUZXN0UmVzdWx0KGNvbnN0IE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJl
c3VsdHMKIEZyYW1lKiBFdmVudEhhbmRsZXI6OnN1YmZyYW1lRm9yVGFyZ2V0Tm9kZShOb2RlKiBu
b2RlKQogewogICAgIGlmICghbm9kZSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVy
biBudWxscHRyOwogCiAgICAgYXV0byByZW5kZXJlciA9IG5vZGUtPnJlbmRlcmVyKCk7Ci0gICAg
aWYgKCFyZW5kZXJlciB8fCAhcmVuZGVyZXItPmlzV2lkZ2V0KCkpCi0gICAgICAgIHJldHVybiAw
OworICAgIGlmICghaXM8UmVuZGVyV2lkZ2V0PihyZW5kZXJlcikpCisgICAgICAgIHJldHVybiBu
dWxscHRyOwogCi0gICAgV2lkZ2V0KiB3aWRnZXQgPSB0b1JlbmRlcldpZGdldChyZW5kZXJlcikt
PndpZGdldCgpOwotICAgIGlmICghd2lkZ2V0IHx8ICF3aWRnZXQtPmlzRnJhbWVWaWV3KCkpCi0g
ICAgICAgIHJldHVybiAwOworICAgIFdpZGdldCogd2lkZ2V0ID0gZG93bmNhc3Q8UmVuZGVyV2lk
Z2V0PigqcmVuZGVyZXIpLndpZGdldCgpOworICAgIGlmICghaXM8RnJhbWVWaWV3Pih3aWRnZXQp
KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiAmdG9GcmFtZVZpZXcod2lk
Z2V0KS0+ZnJhbWUoKTsKKyAgICByZXR1cm4gJmRvd25jYXN0PEZyYW1lVmlldz4oKndpZGdldCku
ZnJhbWUoKTsKIH0KIAogI2lmIEVOQUJMRShDVVJTT1JfU1VQUE9SVCkKQEAgLTI3MDQsOSArMjcw
NCw5IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVXaGVlbEV2ZW50KGNvbnN0IFBsYXRmb3Jt
V2hlZWxFdmVudCYgZXZlbnQpCiAgICAgaWYgKGVsZW1lbnQpIHsKICAgICAgICAgaWYgKGlzT3Zl
cldpZGdldCkgewogICAgICAgICAgICAgUmVuZGVyRWxlbWVudCogdGFyZ2V0ID0gZWxlbWVudC0+
cmVuZGVyZXIoKTsKLSAgICAgICAgICAgIGlmICh0YXJnZXQgJiYgdGFyZ2V0LT5pc1dpZGdldCgp
KSB7Ci0gICAgICAgICAgICAgICAgV2lkZ2V0KiB3aWRnZXQgPSB0b1JlbmRlcldpZGdldCh0YXJn
ZXQpLT53aWRnZXQoKTsKLSAgICAgICAgICAgICAgICBpZiAod2lkZ2V0ICYmIHBhc3NXaGVlbEV2
ZW50VG9XaWRnZXQoZXZlbnQsIHdpZGdldCkpIHsKKyAgICAgICAgICAgIGlmIChpczxSZW5kZXJX
aWRnZXQ+KHRhcmdldCkpIHsKKyAgICAgICAgICAgICAgICBXaWRnZXQqIHdpZGdldCA9IGRvd25j
YXN0PFJlbmRlcldpZGdldD4oKnRhcmdldCkud2lkZ2V0KCk7CisgICAgICAgICAgICAgICAgaWYg
KHdpZGdldCAmJiBwYXNzV2hlZWxFdmVudFRvV2lkZ2V0KGV2ZW50LCAqd2lkZ2V0KSkgewogICAg
ICAgICAgICAgICAgICAgICBtX2lzSGFuZGxpbmdXaGVlbEV2ZW50ID0gZmFsc2U7CiAgICAgICAg
ICAgICAgICAgICAgIGlmIChzY3JvbGxhYmxlQXJlYSkKICAgICAgICAgICAgICAgICAgICAgICAg
IHNjcm9sbGFibGVBcmVhLT5zZXRTY3JvbGxlZFByb2dyYW1tYXRpY2FsbHkoZmFsc2UpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmgKaW5kZXggMDA4NjM2M2QzYTYxMWFiNWNhMGRhZGFjYjYz
OGZjNDFiYjdiYTNjOS4uMzdlYTc1ZGE4ZGYzYTEzNDViODgzNTMyMTk0YzY4NmRkNTc5OTBlYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5oCkBAIC0zOTQsNyArMzk0LDcgQEAgcHJpdmF0
ZToKICAgICBib29sIHBhc3NXaWRnZXRNb3VzZURvd25FdmVudFRvV2lkZ2V0KFJlbmRlcldpZGdl
dCopOwogCiAgICAgYm9vbCBwYXNzTW91c2VEb3duRXZlbnRUb1dpZGdldChXaWRnZXQqKTsKLSAg
ICBib29sIHBhc3NXaGVlbEV2ZW50VG9XaWRnZXQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50Jiwg
V2lkZ2V0Kik7CisgICAgYm9vbCBwYXNzV2hlZWxFdmVudFRvV2lkZ2V0KGNvbnN0IFBsYXRmb3Jt
V2hlZWxFdmVudCYsIFdpZGdldCYpOwogCiAgICAgdm9pZCBkZWZhdWx0U3BhY2VFdmVudEhhbmRs
ZXIoS2V5Ym9hcmRFdmVudCopOwogICAgIHZvaWQgZGVmYXVsdEJhY2tzcGFjZUV2ZW50SGFuZGxl
cihLZXlib2FyZEV2ZW50Kik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1l
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCmluZGV4IDJlZmZlMWQwZDQzYTYz
OTIxZjhhYWYzZjQwY2ExYmVmNDI4ODEzYTUuLjhiOGY2M2NiZjU3Mzc2OTk1YWQxZjUzZjQ3YjRh
MWU5MTg0ZWMyM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCkBAIC03NTcsOCArNzU3LDcgQEAgRnJh
bWUqIEZyYW1lOjpmcmFtZUZvcldpZGdldChjb25zdCBXaWRnZXQqIHdpZGdldCkKIAogICAgIC8v
IEFzc3VtZSBhbGwgd2lkZ2V0cyBhcmUgZWl0aGVyIGEgRnJhbWVWaWV3IG9yIG93bmVkIGJ5IGEg
UmVuZGVyV2lkZ2V0LgogICAgIC8vIEZJWE1FOiBUaGF0IGFzc3VtcHRpb24gaXMgbm90IHJpZ2h0
IGZvciBzY3JvbGwgYmFycyEKLSAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTih3
aWRnZXQtPmlzRnJhbWVWaWV3KCkpOwotICAgIHJldHVybiAmdG9GcmFtZVZpZXcod2lkZ2V0KS0+
ZnJhbWUoKTsKKyAgICByZXR1cm4gJmRvd25jYXN0PEZyYW1lVmlldz4oKndpZGdldCkuZnJhbWUo
KTsKIH0KIAogdm9pZCBGcmFtZTo6Y2xlYXJUaW1lcnMoRnJhbWVWaWV3ICp2aWV3LCBEb2N1bWVu
dCAqZG9jdW1lbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKaW5kZXggYmU2YjYwMDBjNWEx
MTBjMzU1ODFlZDY2ZGNlZTNjNmRhOWI5YWMzMS4uYmU0MzViMWFkYWEzNGEyNGQ3M2RkZTllODYw
YmIzOWRhZjJiN2NjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcApAQCAtMzU2OCwxMSAr
MzU2OCwxMSBAQCBDb2xvciBGcmFtZVZpZXc6OmRvY3VtZW50QmFja2dyb3VuZENvbG9yKCkgY29u
c3QKIGJvb2wgRnJhbWVWaWV3OjpoYXNDdXN0b21TY3JvbGxiYXJzKCkgY29uc3QKIHsKICAgICBm
b3IgKGF1dG8mIHdpZGdldCA6IGNoaWxkcmVuKCkpIHsKLSAgICAgICAgaWYgKHdpZGdldC0+aXNG
cmFtZVZpZXcoKSkgewotICAgICAgICAgICAgaWYgKHRvRnJhbWVWaWV3KCp3aWRnZXQpLmhhc0N1
c3RvbVNjcm9sbGJhcnMoKSkKKyAgICAgICAgaWYgKGlzPEZyYW1lVmlldz4oKndpZGdldCkpIHsK
KyAgICAgICAgICAgIGlmIChkb3duY2FzdDxGcmFtZVZpZXc+KCp3aWRnZXQpLmhhc0N1c3RvbVNj
cm9sbGJhcnMoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfSBlbHNl
IGlmICh3aWRnZXQtPmlzU2Nyb2xsYmFyKCkpIHsKLSAgICAgICAgICAgIGlmICh0b1Njcm9sbGJh
cigqd2lkZ2V0KS5pc0N1c3RvbVNjcm9sbGJhcigpKQorICAgICAgICB9IGVsc2UgaWYgKGlzPFNj
cm9sbGJhcj4oKndpZGdldCkpIHsKKyAgICAgICAgICAgIGlmIChkb3duY2FzdDxTY3JvbGxiYXI+
KCp3aWRnZXQpLmlzQ3VzdG9tU2Nyb2xsYmFyKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgICAgIH0KICAgICB9CkBAIC0zOTA1LDggKzM5MDUsOCBAQCB2b2lkIEZyYW1lVmll
dzo6dXBkYXRlTGF5b3V0QW5kU3R5bGVJZk5lZWRlZFJlY3Vyc2l2ZSgpCiAgICAgVmVjdG9yPFJl
ZjxGcmFtZVZpZXc+LCAxNj4gY2hpbGRWaWV3czsKICAgICBjaGlsZFZpZXdzLnJlc2VydmVJbml0
aWFsQ2FwYWNpdHkoY2hpbGRyZW4oKS5zaXplKCkpOwogICAgIGZvciAoYXV0byYgd2lkZ2V0IDog
Y2hpbGRyZW4oKSkgewotICAgICAgICBpZiAod2lkZ2V0LT5pc0ZyYW1lVmlldygpKQotICAgICAg
ICAgICAgY2hpbGRWaWV3cy51bmNoZWNrZWRBcHBlbmQodG9GcmFtZVZpZXcoKndpZGdldCkpOwor
ICAgICAgICBpZiAoaXM8RnJhbWVWaWV3Pigqd2lkZ2V0KSkKKyAgICAgICAgICAgIGNoaWxkVmll
d3MudW5jaGVja2VkQXBwZW5kKGRvd25jYXN0PEZyYW1lVmlldz4oKndpZGdldCkpOwogICAgIH0K
IAogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBjaGlsZFZpZXdzLnNpemUoKTsgKytpKQpA
QCAtNDEwNCw4ICs0MTA0LDggQEAgSW50UG9pbnQgRnJhbWVWaWV3Ojpjb252ZXJ0RnJvbUNvbnRh
aW5pbmdWaWV3VG9SZW5kZXJlcihjb25zdCBSZW5kZXJFbGVtZW50KiByZW4KIEludFJlY3QgRnJh
bWVWaWV3Ojpjb252ZXJ0VG9Db250YWluaW5nVmlldyhjb25zdCBJbnRSZWN0JiBsb2NhbFJlY3Qp
IGNvbnN0CiB7CiAgICAgaWYgKGNvbnN0IFNjcm9sbFZpZXcqIHBhcmVudFNjcm9sbFZpZXcgPSBw
YXJlbnQoKSkgewotICAgICAgICBpZiAocGFyZW50U2Nyb2xsVmlldy0+aXNGcmFtZVZpZXcoKSkg
ewotICAgICAgICAgICAgY29uc3QgRnJhbWVWaWV3KiBwYXJlbnRWaWV3ID0gdG9GcmFtZVZpZXco
cGFyZW50U2Nyb2xsVmlldyk7CisgICAgICAgIGlmIChpczxGcmFtZVZpZXc+KCpwYXJlbnRTY3Jv
bGxWaWV3KSkgeworICAgICAgICAgICAgY29uc3QgRnJhbWVWaWV3JiBwYXJlbnRWaWV3ID0gZG93
bmNhc3Q8RnJhbWVWaWV3PigqcGFyZW50U2Nyb2xsVmlldyk7CiAgICAgICAgICAgICAvLyBHZXQg
b3VyIHJlbmRlcmVyIGluIHRoZSBwYXJlbnQgdmlldwogICAgICAgICAgICAgUmVuZGVyV2lkZ2V0
KiByZW5kZXJlciA9IGZyYW1lKCkub3duZXJSZW5kZXJlcigpOwogICAgICAgICAgICAgaWYgKCFy
ZW5kZXJlcikKQEAgLTQxMTUsNyArNDExNSw3IEBAIEludFJlY3QgRnJhbWVWaWV3Ojpjb252ZXJ0
VG9Db250YWluaW5nVmlldyhjb25zdCBJbnRSZWN0JiBsb2NhbFJlY3QpIGNvbnN0CiAgICAgICAg
ICAgICAvLyBBZGQgYm9yZGVycyBhbmQgcGFkZGluZz8/CiAgICAgICAgICAgICByZWN0Lm1vdmUo
cmVuZGVyZXItPmJvcmRlckxlZnQoKSArIHJlbmRlcmVyLT5wYWRkaW5nTGVmdCgpLAogICAgICAg
ICAgICAgICAgICAgICAgIHJlbmRlcmVyLT5ib3JkZXJUb3AoKSArIHJlbmRlcmVyLT5wYWRkaW5n
VG9wKCkpOwotICAgICAgICAgICAgcmV0dXJuIHBhcmVudFZpZXctPmNvbnZlcnRGcm9tUmVuZGVy
ZXJUb0NvbnRhaW5pbmdWaWV3KHJlbmRlcmVyLCByZWN0KTsKKyAgICAgICAgICAgIHJldHVybiBw
YXJlbnRWaWV3LmNvbnZlcnRGcm9tUmVuZGVyZXJUb0NvbnRhaW5pbmdWaWV3KHJlbmRlcmVyLCBy
ZWN0KTsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgcmV0dXJuIFdpZGdldDo6Y29udmVy
dFRvQ29udGFpbmluZ1ZpZXcobG9jYWxSZWN0KTsKQEAgLTQxMjcsMTUgKzQxMjcsMTUgQEAgSW50
UmVjdCBGcmFtZVZpZXc6OmNvbnZlcnRUb0NvbnRhaW5pbmdWaWV3KGNvbnN0IEludFJlY3QmIGxv
Y2FsUmVjdCkgY29uc3QKIEludFJlY3QgRnJhbWVWaWV3Ojpjb252ZXJ0RnJvbUNvbnRhaW5pbmdW
aWV3KGNvbnN0IEludFJlY3QmIHBhcmVudFJlY3QpIGNvbnN0CiB7CiAgICAgaWYgKGNvbnN0IFNj
cm9sbFZpZXcqIHBhcmVudFNjcm9sbFZpZXcgPSBwYXJlbnQoKSkgewotICAgICAgICBpZiAocGFy
ZW50U2Nyb2xsVmlldy0+aXNGcmFtZVZpZXcoKSkgewotICAgICAgICAgICAgY29uc3QgRnJhbWVW
aWV3KiBwYXJlbnRWaWV3ID0gdG9GcmFtZVZpZXcocGFyZW50U2Nyb2xsVmlldyk7CisgICAgICAg
IGlmIChpczxGcmFtZVZpZXc+KCpwYXJlbnRTY3JvbGxWaWV3KSkgeworICAgICAgICAgICAgY29u
c3QgRnJhbWVWaWV3JiBwYXJlbnRWaWV3ID0gZG93bmNhc3Q8RnJhbWVWaWV3PigqcGFyZW50U2Ny
b2xsVmlldyk7CiAKICAgICAgICAgICAgIC8vIEdldCBvdXIgcmVuZGVyZXIgaW4gdGhlIHBhcmVu
dCB2aWV3CiAgICAgICAgICAgICBSZW5kZXJXaWRnZXQqIHJlbmRlcmVyID0gZnJhbWUoKS5vd25l
clJlbmRlcmVyKCk7CiAgICAgICAgICAgICBpZiAoIXJlbmRlcmVyKQogICAgICAgICAgICAgICAg
IHJldHVybiBwYXJlbnRSZWN0OwogCi0gICAgICAgICAgICBJbnRSZWN0IHJlY3QgPSBwYXJlbnRW
aWV3LT5jb252ZXJ0RnJvbUNvbnRhaW5pbmdWaWV3VG9SZW5kZXJlcihyZW5kZXJlciwgcGFyZW50
UmVjdCk7CisgICAgICAgICAgICBJbnRSZWN0IHJlY3QgPSBwYXJlbnRWaWV3LmNvbnZlcnRGcm9t
Q29udGFpbmluZ1ZpZXdUb1JlbmRlcmVyKHJlbmRlcmVyLCBwYXJlbnRSZWN0KTsKICAgICAgICAg
ICAgIC8vIFN1YnRyYWN0IGJvcmRlcnMgYW5kIHBhZGRpbmcKICAgICAgICAgICAgIHJlY3QubW92
ZSgtcmVuZGVyZXItPmJvcmRlckxlZnQoKSAtIHJlbmRlcmVyLT5wYWRkaW5nTGVmdCgpLAogICAg
ICAgICAgICAgICAgICAgICAgIC1yZW5kZXJlci0+Ym9yZGVyVG9wKCkgLSByZW5kZXJlci0+cGFk
ZGluZ1RvcCgpKTsKQEAgLTQxNTEsOCArNDE1MSw4IEBAIEludFJlY3QgRnJhbWVWaWV3Ojpjb252
ZXJ0RnJvbUNvbnRhaW5pbmdWaWV3KGNvbnN0IEludFJlY3QmIHBhcmVudFJlY3QpIGNvbnN0CiBJ
bnRQb2ludCBGcmFtZVZpZXc6OmNvbnZlcnRUb0NvbnRhaW5pbmdWaWV3KGNvbnN0IEludFBvaW50
JiBsb2NhbFBvaW50KSBjb25zdAogewogICAgIGlmIChjb25zdCBTY3JvbGxWaWV3KiBwYXJlbnRT
Y3JvbGxWaWV3ID0gcGFyZW50KCkpIHsKLSAgICAgICAgaWYgKHBhcmVudFNjcm9sbFZpZXctPmlz
RnJhbWVWaWV3KCkpIHsKLSAgICAgICAgICAgIGNvbnN0IEZyYW1lVmlldyogcGFyZW50VmlldyA9
IHRvRnJhbWVWaWV3KHBhcmVudFNjcm9sbFZpZXcpOworICAgICAgICBpZiAoaXM8RnJhbWVWaWV3
PigqcGFyZW50U2Nyb2xsVmlldykpIHsKKyAgICAgICAgICAgIGNvbnN0IEZyYW1lVmlldyYgcGFy
ZW50VmlldyA9IGRvd25jYXN0PEZyYW1lVmlldz4oKnBhcmVudFNjcm9sbFZpZXcpOwogCiAgICAg
ICAgICAgICAvLyBHZXQgb3VyIHJlbmRlcmVyIGluIHRoZSBwYXJlbnQgdmlldwogICAgICAgICAg
ICAgUmVuZGVyV2lkZ2V0KiByZW5kZXJlciA9IGZyYW1lKCkub3duZXJSZW5kZXJlcigpOwpAQCAt
NDE2NCw3ICs0MTY0LDcgQEAgSW50UG9pbnQgRnJhbWVWaWV3Ojpjb252ZXJ0VG9Db250YWluaW5n
Vmlldyhjb25zdCBJbnRQb2ludCYgbG9jYWxQb2ludCkgY29uc3QKICAgICAgICAgICAgIC8vIEFk
ZCBib3JkZXJzIGFuZCBwYWRkaW5nCiAgICAgICAgICAgICBwb2ludC5tb3ZlKHJlbmRlcmVyLT5i
b3JkZXJMZWZ0KCkgKyByZW5kZXJlci0+cGFkZGluZ0xlZnQoKSwKICAgICAgICAgICAgICAgICAg
ICAgICAgcmVuZGVyZXItPmJvcmRlclRvcCgpICsgcmVuZGVyZXItPnBhZGRpbmdUb3AoKSk7Ci0g
ICAgICAgICAgICByZXR1cm4gcGFyZW50Vmlldy0+Y29udmVydEZyb21SZW5kZXJlclRvQ29udGFp
bmluZ1ZpZXcocmVuZGVyZXIsIHBvaW50KTsKKyAgICAgICAgICAgIHJldHVybiBwYXJlbnRWaWV3
LmNvbnZlcnRGcm9tUmVuZGVyZXJUb0NvbnRhaW5pbmdWaWV3KHJlbmRlcmVyLCBwb2ludCk7CiAg
ICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIHJldHVybiBXaWRnZXQ6OmNvbnZlcnRUb0NvbnRh
aW5pbmdWaWV3KGxvY2FsUG9pbnQpOwpAQCAtNDE3NiwxNSArNDE3NiwxNSBAQCBJbnRQb2ludCBG
cmFtZVZpZXc6OmNvbnZlcnRUb0NvbnRhaW5pbmdWaWV3KGNvbnN0IEludFBvaW50JiBsb2NhbFBv
aW50KSBjb25zdAogSW50UG9pbnQgRnJhbWVWaWV3Ojpjb252ZXJ0RnJvbUNvbnRhaW5pbmdWaWV3
KGNvbnN0IEludFBvaW50JiBwYXJlbnRQb2ludCkgY29uc3QKIHsKICAgICBpZiAoY29uc3QgU2Ny
b2xsVmlldyogcGFyZW50U2Nyb2xsVmlldyA9IHBhcmVudCgpKSB7Ci0gICAgICAgIGlmIChwYXJl
bnRTY3JvbGxWaWV3LT5pc0ZyYW1lVmlldygpKSB7Ci0gICAgICAgICAgICBjb25zdCBGcmFtZVZp
ZXcqIHBhcmVudFZpZXcgPSB0b0ZyYW1lVmlldyhwYXJlbnRTY3JvbGxWaWV3KTsKKyAgICAgICAg
aWYgKGlzPEZyYW1lVmlldz4oKnBhcmVudFNjcm9sbFZpZXcpKSB7CisgICAgICAgICAgICBjb25z
dCBGcmFtZVZpZXcmIHBhcmVudFZpZXcgPSBkb3duY2FzdDxGcmFtZVZpZXc+KCpwYXJlbnRTY3Jv
bGxWaWV3KTsKIAogICAgICAgICAgICAgLy8gR2V0IG91ciByZW5kZXJlciBpbiB0aGUgcGFyZW50
IHZpZXcKICAgICAgICAgICAgIFJlbmRlcldpZGdldCogcmVuZGVyZXIgPSBmcmFtZSgpLm93bmVy
UmVuZGVyZXIoKTsKICAgICAgICAgICAgIGlmICghcmVuZGVyZXIpCiAgICAgICAgICAgICAgICAg
cmV0dXJuIHBhcmVudFBvaW50OwogCi0gICAgICAgICAgICBJbnRQb2ludCBwb2ludCA9IHBhcmVu
dFZpZXctPmNvbnZlcnRGcm9tQ29udGFpbmluZ1ZpZXdUb1JlbmRlcmVyKHJlbmRlcmVyLCBwYXJl
bnRQb2ludCk7CisgICAgICAgICAgICBJbnRQb2ludCBwb2ludCA9IHBhcmVudFZpZXcuY29udmVy
dEZyb21Db250YWluaW5nVmlld1RvUmVuZGVyZXIocmVuZGVyZXIsIHBhcmVudFBvaW50KTsKICAg
ICAgICAgICAgIC8vIFN1YnRyYWN0IGJvcmRlcnMgYW5kIHBhZGRpbmcKICAgICAgICAgICAgIHBv
aW50Lm1vdmUoLXJlbmRlcmVyLT5ib3JkZXJMZWZ0KCkgLSByZW5kZXJlci0+cGFkZGluZ0xlZnQo
KSwKICAgICAgICAgICAgICAgICAgICAgICAgLXJlbmRlcmVyLT5ib3JkZXJUb3AoKSAtIHJlbmRl
cmVyLT5wYWRkaW5nVG9wKCkpOwpAQCAtNDI4MCwxMCArNDI4MCwxMCBAQCB2b2lkIEZyYW1lVmll
dzo6c2VuZFNjcm9sbEV2ZW50KCkKICAgICBmcmFtZSgpLmV2ZW50SGFuZGxlcigpLmRpc3BhdGNo
RmFrZU1vdXNlTW92ZUV2ZW50U29vbigpOwogfQogCi12b2lkIEZyYW1lVmlldzo6cmVtb3ZlQ2hp
bGQoV2lkZ2V0KiB3aWRnZXQpCit2b2lkIEZyYW1lVmlldzo6cmVtb3ZlQ2hpbGQoV2lkZ2V0JiB3
aWRnZXQpCiB7Ci0gICAgaWYgKHdpZGdldC0+aXNGcmFtZVZpZXcoKSkKLSAgICAgICAgcmVtb3Zl
U2Nyb2xsYWJsZUFyZWEodG9GcmFtZVZpZXcod2lkZ2V0KSk7CisgICAgaWYgKGlzPEZyYW1lVmll
dz4od2lkZ2V0KSkKKyAgICAgICAgcmVtb3ZlU2Nyb2xsYWJsZUFyZWEoJmRvd25jYXN0PEZyYW1l
Vmlldz4od2lkZ2V0KSk7CiAKICAgICBTY3JvbGxWaWV3OjpyZW1vdmVDaGlsZCh3aWRnZXQpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKaW5kZXggOTJhYTliOTI2Y2YwMDJmZjFjYmZlMjBmYTVj
NWM4Zjg4NTM5ZjI4My4uYWY5ODBmNTg4NDIyNzBhNmFhYmY1MjEwNDIzZDY0MTZjMmQ2MjJjZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCkBAIC00MzQsNyArNDM0LDcgQEAgcHVibGljOgogICAg
IGJvb2wgY29udGFpbnNTY3JvbGxhYmxlQXJlYShTY3JvbGxhYmxlQXJlYSopIGNvbnN0OwogICAg
IGNvbnN0IFNjcm9sbGFibGVBcmVhU2V0KiBzY3JvbGxhYmxlQXJlYXMoKSBjb25zdCB7IHJldHVy
biBtX3Njcm9sbGFibGVBcmVhcy5nZXQoKTsgfQogCi0gICAgdmlydHVhbCB2b2lkIHJlbW92ZUNo
aWxkKFdpZGdldCopIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCByZW1vdmVDaGlsZChXaWRn
ZXQmKSBvdmVycmlkZTsKIAogICAgIC8vIFRoaXMgZnVuY3Rpb24gZXhpc3RzIGZvciBwb3J0cyB0
aGF0IG5lZWQgdG8gaGFuZGxlIHdoZWVsIGV2ZW50cyBtYW51YWxseS4KICAgICAvLyBPbiBNYWMg
V2ViS2l0MSB0aGUgdW5kZXJseWluZyBOU1Njcm9sbFZpZXcganVzdCBkb2VzIHRoZSBzY3JvbGxp
bmcsIGJ1dCBvbiBtb3N0IG90aGVyIHBsYXRmb3JtcwpAQCAtNzg4LDggKzc4OCw4IEBAIGlubGlu
ZSB2b2lkIEZyYW1lVmlldzo6aW5jcmVtZW50VmlzdWFsbHlOb25FbXB0eVBpeGVsQ291bnQoY29u
c3QgSW50U2l6ZSYgc2l6ZSkKICAgICB1cGRhdGVJc1Zpc3VhbGx5Tm9uRW1wdHkoKTsKIH0KIAot
V0lER0VUX1RZUEVfQ0FTVFMoRnJhbWVWaWV3LCBpc0ZyYW1lVmlldygpKTsKLQogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQogCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dJREdFVChGcmFtZVZpZXcs
IGlzRnJhbWVWaWV3KCkpCisKICNlbmRpZiAvLyBGcmFtZVZpZXdfaApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAK
aW5kZXggMDFlZjA3ZTViNzQ2MGQzZTRmZmQ1MzE5YjYwOTIxYjcxMjg1ODVlNC4uM2FkYTdlZGNh
ZGQyZDIxNTA1Y2NjYTAzNmI3YzIyNTE5OTVkMmMyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9QYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCkBAIC0x
MTYzLDkgKzExNjMsOSBAQCBWZWN0b3I8UmVmPFBsdWdpblZpZXdCYXNlPj4gUGFnZTo6cGx1Z2lu
Vmlld3MoKQogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgZm9yIChhdXRvIGl0ID0gdmll
dy0+Y2hpbGRyZW4oKS5iZWdpbigpLCBlbmQgPSB2aWV3LT5jaGlsZHJlbigpLmVuZCgpOyBpdCAh
PSBlbmQ7ICsraXQpIHsKLSAgICAgICAgICAgIFdpZGdldCogd2lkZ2V0ID0gKCppdCkuZ2V0KCk7
Ci0gICAgICAgICAgICBpZiAod2lkZ2V0LT5pc1BsdWdpblZpZXdCYXNlKCkpCi0gICAgICAgICAg
ICAgICAgdmlld3MuYXBwZW5kKCp0b1BsdWdpblZpZXdCYXNlKHdpZGdldCkpOworICAgICAgICAg
ICAgV2lkZ2V0JiB3aWRnZXQgPSAqKml0OworICAgICAgICAgICAgaWYgKGlzPFBsdWdpblZpZXdC
YXNlPih3aWRnZXQpKQorICAgICAgICAgICAgICAgIHZpZXdzLmFwcGVuZChkb3duY2FzdDxQbHVn
aW5WaWV3QmFzZT4od2lkZ2V0KSk7CiAgICAgICAgIH0KICAgICB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvZWZsL0V2ZW50SGFuZGxlckVmbC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL2VmbC9FdmVudEhhbmRsZXJFZmwuY3BwCmluZGV4IDc4YzcxMzJjZTRiYjhjMjAwZDUx
NTgwNmM5MjEzNTc2NmVlMjY5NjcuLmM0MzkzODg0ZmU3YzFjMDE5NmVmNGUwMzBjNjk0ODVjODZh
NDExMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvZWZsL0V2ZW50SGFuZGxlckVm
bC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9lZmwvRXZlbnRIYW5kbGVyRWZsLmNwcApA
QCAtODcsMTMgKzg3LDEyIEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpldmVudEFjdGl2YXRlZFZpZXco
Y29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JikgY29uc3QKICAgICByZXR1cm4gZmFsc2U7CiB9CiAK
LWJvb2wgRXZlbnRIYW5kbGVyOjpwYXNzV2hlZWxFdmVudFRvV2lkZ2V0KGNvbnN0IFBsYXRmb3Jt
V2hlZWxFdmVudCYgZXZlbnQsIFdpZGdldCogd2lkZ2V0KQorYm9vbCBFdmVudEhhbmRsZXI6OnBh
c3NXaGVlbEV2ZW50VG9XaWRnZXQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiBldmVudCwgV2lk
Z2V0JiB3aWRnZXQpCiB7Ci0gICAgQVNTRVJUKHdpZGdldCk7Ci0gICAgaWYgKCF3aWRnZXQtPmlz
RnJhbWVWaWV3KCkpCisgICAgaWYgKCFpczx3aWRnZXQ+KHdpZGdldCkpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAotICAgIHJldHVybiB0b0ZyYW1lVmlldyh3aWRnZXQpLT5mcmFtZSgpLmV2ZW50
SGFuZGxlcigpLmhhbmRsZVdoZWVsRXZlbnQoZXZlbnQpOworICAgIHJldHVybiBkb3duY2FzdDxG
cmFtZVZpZXc+KHdpZGdldCkuZnJhbWUoKS5ldmVudEhhbmRsZXIoKS5oYW5kbGVXaGVlbEV2ZW50
KGV2ZW50KTsKIH0KIAogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL2d0ay9FdmVudEhhbmRsZXJHdGsuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9ndGsvRXZlbnRIYW5kbGVyR3RrLmNwcAppbmRleCBkMzkwM2RiZjM2ZGZiYjhjNmE4OWNk
MzgyMjdiZjVkMTk1Yzk4ZjJmLi45NDgzZjkzYjM3ZWI5ZDAwNWMzYThjOWJjYWU2Y2RjZDE4ZGVl
YzE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2d0ay9FdmVudEhhbmRsZXJHdGsu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvZ3RrL0V2ZW50SGFuZGxlckd0ay5jcHAKQEAg
LTg3LDEzICs4NywxMiBAQCBib29sIEV2ZW50SGFuZGxlcjo6ZXZlbnRBY3RpdmF0ZWRWaWV3KGNv
bnN0IFBsYXRmb3JtTW91c2VFdmVudCYpIGNvbnN0CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1i
b29sIEV2ZW50SGFuZGxlcjo6cGFzc1doZWVsRXZlbnRUb1dpZGdldChjb25zdCBQbGF0Zm9ybVdo
ZWVsRXZlbnQmIGV2ZW50LCBXaWRnZXQqIHdpZGdldCkKK2Jvb2wgRXZlbnRIYW5kbGVyOjpwYXNz
V2hlZWxFdmVudFRvV2lkZ2V0KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgZXZlbnQsIFdpZGdl
dCYgd2lkZ2V0KQogewotICAgIEFTU0VSVCh3aWRnZXQpOwotICAgIGlmICghd2lkZ2V0LT5pc0Zy
YW1lVmlldygpKQorICAgIGlmICghaXM8RnJhbWVWaWV3Pih3aWRnZXQpKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKLSAgICByZXR1cm4gdG9GcmFtZVZpZXcod2lkZ2V0KS0+ZnJhbWUoKS5ldmVu
dEhhbmRsZXIoKS5oYW5kbGVXaGVlbEV2ZW50KGV2ZW50KTsKKyAgICByZXR1cm4gZG93bmNhc3Q8
RnJhbWVWaWV3Pih3aWRnZXQpLmZyYW1lKCkuZXZlbnRIYW5kbGVyKCkuaGFuZGxlV2hlZWxFdmVu
dChldmVudCk7CiB9CiAKICNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9pb3MvRXZlbnRIYW5kbGVySU9TLm1tIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9pb3MvRXZlbnRIYW5kbGVySU9TLm1tCmluZGV4IGNmYjZmYTZhYjU1OWQ3ODRmNzIxNmVj
YTgzYTQxMTE5NDZlZTgxMGMuLjgzN2E3YTkyNDhjNzAyODFlMTllODQzNjVhODA5ZThmZTgwZjQw
MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvaW9zL0V2ZW50SGFuZGxlcklPUy5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2lvcy9FdmVudEhhbmRsZXJJT1MubW0KQEAgLTM5
NywyMCArMzk3LDE3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpwYXNzU3ViZnJhbWVFdmVudFRvU3Vi
ZnJhbWUoTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyYgZXZlCiAgICAgcmV0dXJuIGZhbHNl
OwogfQogCi1ib29sIEV2ZW50SGFuZGxlcjo6cGFzc1doZWVsRXZlbnRUb1dpZGdldChjb25zdCBQ
bGF0Zm9ybVdoZWVsRXZlbnQmLCBXaWRnZXQqIHdpZGdldCkKK2Jvb2wgRXZlbnRIYW5kbGVyOjpw
YXNzV2hlZWxFdmVudFRvV2lkZ2V0KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYsIFdpZGdldCYg
d2lkZ2V0KQogewogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKIAotICAgIGlmICgh
d2lkZ2V0KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBOU1ZpZXcqIG5vZGVWaWV3ID0g
d2lkZ2V0LT5wbGF0Zm9ybVdpZGdldCgpOworICAgIE5TVmlldyogbm9kZVZpZXcgPSB3aWRnZXQu
cGxhdGZvcm1XaWRnZXQoKTsKICAgICBpZiAoIW5vZGVWaWV3KSB7CiAgICAgICAgIC8vIFdLMiBj
b2RlIHBhdGguIE5vIHdoZWVsIGV2ZW50cyBvbiBpT1MgYW55d2F5LgogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgfQogCi0gICAgaWYgKGN1cnJlbnRFdmVudCgpLnR5cGUgIT0gV2ViRXZlbnRT
Y3JvbGxXaGVlbCB8fCBtX3NlbmRpbmdFdmVudFRvU3VidmlldyB8fCAhd2lkZ2V0KQorICAgIGlm
IChjdXJyZW50RXZlbnQoKS50eXBlICE9IFdlYkV2ZW50U2Nyb2xsV2hlZWwgfHwgbV9zZW5kaW5n
RXZlbnRUb1N1YnZpZXcpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIEFTU0VSVChub2Rl
Vmlldyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9FdmVudEhhbmRsZXJN
YWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9FdmVudEhhbmRsZXJNYWMubW0KaW5kZXgg
MDZlNmU5M2JhOTYwMjliZDBhODFlZDgzNDA1YWMzZTYwOGM4NTY3NS4uM2Q3NTE0ODY5NjIxZmNj
ZjE3NzczYWZlMDI3MWMwZTQyYjBiMzg5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9tYWMvRXZlbnRIYW5kbGVyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0V2
ZW50SGFuZGxlck1hYy5tbQpAQCAtNDIzLDIwICs0MjMsMTcgQEAgc3RhdGljIHZvaWQgc2VsZlJl
dGFpbmluZ05TU2Nyb2xsVmlld1Njcm9sbFdoZWVsKE5TU2Nyb2xsVmlldyAqc2VsZiwgU0VMIHNl
bGVjdG8KICAgICAgICAgW3NlbGYgcmVsZWFzZV07CiB9CiAKLWJvb2wgRXZlbnRIYW5kbGVyOjpw
YXNzV2hlZWxFdmVudFRvV2lkZ2V0KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgd2hlZWxFdmVu
dCwgV2lkZ2V0KiB3aWRnZXQpCitib29sIEV2ZW50SGFuZGxlcjo6cGFzc1doZWVsRXZlbnRUb1dp
ZGdldChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIHdoZWVsRXZlbnQsIFdpZGdldCYgd2lkZ2V0
KQogewogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKIAotICAgIGlmICghd2lkZ2V0
KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBOU1ZpZXcqIG5vZGVWaWV3ID0gd2lkZ2V0
LT5wbGF0Zm9ybVdpZGdldCgpOworICAgIE5TVmlldyogbm9kZVZpZXcgPSB3aWRnZXQucGxhdGZv
cm1XaWRnZXQoKTsKICAgICBpZiAoIW5vZGVWaWV3KSB7CiAgICAgICAgIC8vIFdlYktpdDIgY29k
ZSBwYXRoLgotICAgICAgICBpZiAoIXdpZGdldC0+aXNGcmFtZVZpZXcoKSkKKyAgICAgICAgaWYg
KCFpczxGcmFtZVZpZXc+KHdpZGdldCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAg
ICAgICAgcmV0dXJuIHRvRnJhbWVWaWV3KHdpZGdldCktPmZyYW1lKCkuZXZlbnRIYW5kbGVyKCku
aGFuZGxlV2hlZWxFdmVudCh3aGVlbEV2ZW50KTsKKyAgICAgICAgcmV0dXJuIGRvd25jYXN0PEZy
YW1lVmlldz4od2lkZ2V0KS5mcmFtZSgpLmV2ZW50SGFuZGxlcigpLmhhbmRsZVdoZWVsRXZlbnQo
d2hlZWxFdmVudCk7CiAgICAgfQogCiAgICAgaWYgKFtjdXJyZW50TlNFdmVudCgpIHR5cGVdICE9
IE5TU2Nyb2xsV2hlZWwgfHwgbV9zZW5kaW5nRXZlbnRUb1N1YnZpZXcpIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwCmlu
ZGV4IDFhNzk0YjljZDRlNmQ4ODQ1M2FmZDE3Y2QyNjYzYTg4YjNmN2FkMWYuLmIyZGI3NDc4YzA1
MmY1Yzk4NzI1MjRhYjhhNDljZGRmZWMyNTRmZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvci5jcHAKQEAgLTEzOCwxMSAr
MTM4LDExIEBAIFJlZ2lvbiBTY3JvbGxpbmdDb29yZGluYXRvcjo6Y29tcHV0ZU5vbkZhc3RTY3Jv
bGxhYmxlUmVnaW9uKGNvbnN0IEZyYW1lKiBmcmFtZSwKICAgICB9CiAKICAgICBmb3IgKGNvbnN0
IGF1dG8mIGNoaWxkIDogZnJhbWVWaWV3LT5jaGlsZHJlbigpKSB7Ci0gICAgICAgIGlmICghY2hp
bGQtPmlzUGx1Z2luVmlld0Jhc2UoKSkKKyAgICAgICAgaWYgKCFpczxQbHVnaW5WaWV3QmFzZT4o
KmNoaWxkKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBQbHVnaW5WaWV3QmFzZSog
cGx1Z2luVmlld0Jhc2UgPSB0b1BsdWdpblZpZXdCYXNlKGNoaWxkLmdldCgpKTsKLSAgICAgICAg
aWYgKHBsdWdpblZpZXdCYXNlLT53YW50c1doZWVsRXZlbnRzKCkpCi0gICAgICAgICAgICBub25G
YXN0U2Nyb2xsYWJsZVJlZ2lvbi51bml0ZShwbHVnaW5WaWV3QmFzZS0+ZnJhbWVSZWN0KCkpOwor
ICAgICAgICBQbHVnaW5WaWV3QmFzZSYgcGx1Z2luVmlld0Jhc2UgPSBkb3duY2FzdDxQbHVnaW5W
aWV3QmFzZT4oKmNoaWxkKTsKKyAgICAgICAgaWYgKHBsdWdpblZpZXdCYXNlLndhbnRzV2hlZWxF
dmVudHMoKSkKKyAgICAgICAgICAgIG5vbkZhc3RTY3JvbGxhYmxlUmVnaW9uLnVuaXRlKHBsdWdp
blZpZXdCYXNlLmZyYW1lUmVjdCgpKTsKICAgICB9CiAKICAgICBmb3IgKEZyYW1lKiBzdWJmcmFt
ZSA9IGZyYW1lLT50cmVlKCkuZmlyc3RDaGlsZCgpOyBzdWJmcmFtZTsgc3ViZnJhbWUgPSBzdWJm
cmFtZS0+dHJlZSgpLm5leHRTaWJsaW5nKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL3dpbi9FdmVudEhhbmRsZXJXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS93aW4vRXZl
bnRIYW5kbGVyV2luLmNwcAppbmRleCA2NDQyZWNiMWFmN2E4MGEwMTFlMmQyODU5ZjhlYmExN2Mw
MTlmY2FiLi5mMzM3MjQ2ZmY3NjUwOTBlYmNjYmM5ZDAxMjE4NWE5OGVmNjkyNWFiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3dpbi9FdmVudEhhbmRsZXJXaW4uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2Uvd2luL0V2ZW50SGFuZGxlcldpbi5jcHAKQEAgLTczLDEyICs3Mywx
MiBAQCBib29sIEV2ZW50SGFuZGxlcjo6cGFzc01vdXNlUmVsZWFzZUV2ZW50VG9TdWJmcmFtZShN
b3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzJgogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29s
IEV2ZW50SGFuZGxlcjo6cGFzc1doZWVsRXZlbnRUb1dpZGdldChjb25zdCBQbGF0Zm9ybVdoZWVs
RXZlbnQmIHdoZWVsRXZlbnQsIFdpZGdldCogd2lkZ2V0KQorYm9vbCBFdmVudEhhbmRsZXI6OnBh
c3NXaGVlbEV2ZW50VG9XaWRnZXQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiB3aGVlbEV2ZW50
LCBXaWRnZXQmIHdpZGdldCkKIHsKLSAgICBpZiAoIXdpZGdldC0+aXNGcmFtZVZpZXcoKSkKKyAg
ICBpZiAoIWlzPEZyYW1lVmlldz4od2lkZ2V0KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0g
ICAgcmV0dXJuIHRvRnJhbWVWaWV3KHdpZGdldCktPmZyYW1lKCkuZXZlbnRIYW5kbGVyKCkuaGFu
ZGxlV2hlZWxFdmVudCh3aGVlbEV2ZW50KTsKKyAgICByZXR1cm4gZG93bmNhc3Q8RnJhbWVWaWV3
Pigqd2lkZ2V0KS5mcmFtZSgpLmV2ZW50SGFuZGxlcigpLmhhbmRsZVdoZWVsRXZlbnQod2hlZWxF
dmVudCk7CiB9CiAKIGJvb2wgRXZlbnRIYW5kbGVyOjp0YWJzVG9BbGxGb3JtQ29udHJvbHMoS2V5
Ym9hcmRFdmVudCopIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
Y3JvbGxWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuY3BwCmlu
ZGV4IDc0MWViYThkZmU1YmY2ZmFjN2ZmZjZkZTMzNDRkMDdlYWM1MWQ3OTEuLjQ2ZDFiNmJiZGMz
MDBlNTQ3MTM3ODU4MDJiZGY1YTdhYTk2OTc3MjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1Njcm9sbFZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Nj
cm9sbFZpZXcuY3BwCkBAIC03MSwxMyArNzEsMTMgQEAgdm9pZCBTY3JvbGxWaWV3OjphZGRDaGls
ZChQYXNzUmVmUHRyPFdpZGdldD4gcHJwQ2hpbGQpCiAgICAgICAgIHBsYXRmb3JtQWRkQ2hpbGQo
Y2hpbGQpOwogfQogCi12b2lkIFNjcm9sbFZpZXc6OnJlbW92ZUNoaWxkKFdpZGdldCogY2hpbGQp
Cit2b2lkIFNjcm9sbFZpZXc6OnJlbW92ZUNoaWxkKFdpZGdldCYgY2hpbGQpCiB7Ci0gICAgQVNT
RVJUKGNoaWxkLT5wYXJlbnQoKSA9PSB0aGlzKTsKLSAgICBjaGlsZC0+c2V0UGFyZW50KDApOwot
ICAgIG1fY2hpbGRyZW4ucmVtb3ZlKGNoaWxkKTsKLSAgICBpZiAoY2hpbGQtPnBsYXRmb3JtV2lk
Z2V0KCkpCi0gICAgICAgIHBsYXRmb3JtUmVtb3ZlQ2hpbGQoY2hpbGQpOworICAgIEFTU0VSVChj
aGlsZC5wYXJlbnQoKSA9PSB0aGlzKTsKKyAgICBjaGlsZC5zZXRQYXJlbnQobnVsbHB0cik7Cisg
ICAgbV9jaGlsZHJlbi5yZW1vdmUoJmNoaWxkKTsKKyAgICBpZiAoY2hpbGQucGxhdGZvcm1XaWRn
ZXQoKSkKKyAgICAgICAgcGxhdGZvcm1SZW1vdmVDaGlsZCgmY2hpbGQpOwogfQogCiBib29sIFNj
cm9sbFZpZXc6OnNldEhhc0hvcml6b250YWxTY3JvbGxiYXIoYm9vbCBoYXNCYXIsIGJvb2wqIGNv
bnRlbnRTaXplQWZmZWN0ZWQpCkBAIC05Niw4ICs5Niw4IEBAIGJvb2wgU2Nyb2xsVmlldzo6c2V0
SGFzSG9yaXpvbnRhbFNjcm9sbGJhcihib29sIGhhc0JhciwgYm9vbCogY29udGVudFNpemVBZmZl
Y3RlCiAgICAgaWYgKCFoYXNCYXIgJiYgbV9ob3Jpem9udGFsU2Nyb2xsYmFyKSB7CiAgICAgICAg
IGJvb2wgd2FzT3ZlcmxheVNjcm9sbGJhciA9IG1faG9yaXpvbnRhbFNjcm9sbGJhci0+aXNPdmVy
bGF5U2Nyb2xsYmFyKCk7CiAgICAgICAgIHdpbGxSZW1vdmVTY3JvbGxiYXIobV9ob3Jpem9udGFs
U2Nyb2xsYmFyLmdldCgpLCBIb3Jpem9udGFsU2Nyb2xsYmFyKTsKLSAgICAgICAgcmVtb3ZlQ2hp
bGQobV9ob3Jpem9udGFsU2Nyb2xsYmFyLmdldCgpKTsKLSAgICAgICAgbV9ob3Jpem9udGFsU2Ny
b2xsYmFyID0gMDsKKyAgICAgICAgcmVtb3ZlQ2hpbGQoKm1faG9yaXpvbnRhbFNjcm9sbGJhcik7
CisgICAgICAgIG1faG9yaXpvbnRhbFNjcm9sbGJhciA9IG51bGxwdHI7CiAgICAgICAgIGlmIChj
b250ZW50U2l6ZUFmZmVjdGVkKQogICAgICAgICAgICAgKmNvbnRlbnRTaXplQWZmZWN0ZWQgPSAh
d2FzT3ZlcmxheVNjcm9sbGJhcjsKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0xMjIsOCArMTIy
LDggQEAgYm9vbCBTY3JvbGxWaWV3OjpzZXRIYXNWZXJ0aWNhbFNjcm9sbGJhcihib29sIGhhc0Jh
ciwgYm9vbCogY29udGVudFNpemVBZmZlY3RlZCkKICAgICBpZiAoIWhhc0JhciAmJiBtX3ZlcnRp
Y2FsU2Nyb2xsYmFyKSB7CiAgICAgICAgIGJvb2wgd2FzT3ZlcmxheVNjcm9sbGJhciA9IG1fdmVy
dGljYWxTY3JvbGxiYXItPmlzT3ZlcmxheVNjcm9sbGJhcigpOwogICAgICAgICB3aWxsUmVtb3Zl
U2Nyb2xsYmFyKG1fdmVydGljYWxTY3JvbGxiYXIuZ2V0KCksIFZlcnRpY2FsU2Nyb2xsYmFyKTsK
LSAgICAgICAgcmVtb3ZlQ2hpbGQobV92ZXJ0aWNhbFNjcm9sbGJhci5nZXQoKSk7Ci0gICAgICAg
IG1fdmVydGljYWxTY3JvbGxiYXIgPSAwOworICAgICAgICByZW1vdmVDaGlsZCgqbV92ZXJ0aWNh
bFNjcm9sbGJhcik7CisgICAgICAgIG1fdmVydGljYWxTY3JvbGxiYXIgPSBudWxscHRyOwogICAg
ICAgICBpZiAoY29udGVudFNpemVBZmZlY3RlZCkKICAgICAgICAgICAgICpjb250ZW50U2l6ZUFm
ZmVjdGVkID0gIXdhc092ZXJsYXlTY3JvbGxiYXI7CiAgICAgICAgIHJldHVybiB0cnVlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5oCmluZGV4IDk5OGQzZTIxNjA4NDFjYzc4YzY0Zjdk
MTFhNmFmNjJlYTVjZTUwOTMuLmYyZWY1OTE5YjFjNWU0OTU2MWNjMDhiMTk0ZDViYWE0MzBkZDJi
MDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmgKQEAgLTkwLDcgKzkwLDcgQEAg
cHVibGljOgogICAgIC8vIEZ1bmN0aW9ucyBmb3IgY2hpbGQgbWFuaXB1bGF0aW9uIGFuZCBpbnNw
ZWN0aW9uLgogICAgIGNvbnN0IEhhc2hTZXQ8UmVmUHRyPFdpZGdldD4+JiBjaGlsZHJlbigpIGNv
bnN0IHsgcmV0dXJuIG1fY2hpbGRyZW47IH0KICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZv
aWQgYWRkQ2hpbGQoUGFzc1JlZlB0cjxXaWRnZXQ+KTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVtb3Zl
Q2hpbGQoV2lkZ2V0Kik7CisgICAgdmlydHVhbCB2b2lkIHJlbW92ZUNoaWxkKFdpZGdldCYpOwog
CiAgICAgLy8gSWYgdGhlIHNjcm9sbCB2aWV3IGRvZXMgbm90IHVzZSBhIG5hdGl2ZSB3aWRnZXQs
IHRoZW4gaXQgd2lsbCBoYXZlIGNyb3NzLXBsYXRmb3JtIFNjcm9sbGJhcnMuIFRoZXNlIGZ1bmN0
aW9ucwogICAgIC8vIGNhbiBiZSB1c2VkIHRvIG9idGFpbiB0aG9zZSBzY3JvbGxiYXJzLgpAQCAt
NTA3LDggKzUwNyw4IEBAIHByaXZhdGU6CiAjZW5kaWYKIH07IC8vIGNsYXNzIFNjcm9sbFZpZXcK
IAotV0lER0VUX1RZUEVfQ0FTVFMoU2Nyb2xsVmlldywgaXNTY3JvbGxWaWV3KCkpOwotCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCiAKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0lER0VUKFNjcm9s
bFZpZXcsIGlzU2Nyb2xsVmlldygpKQorCiAjZW5kaWYgLy8gU2Nyb2xsVmlld19oCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU2Nyb2xsYmFyLmNwcAppbmRleCAwNjRmZGRjMDEzNWY3ZDg3YTA1YjMwZGU2
MmI4OGRiMTNkOTYxMzFjLi43ZThkMTE3YWMyM2FmOWZlZjJlYTY3NzdhZjRmMTM2MmI0MDkzMzk2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhci5jcHAKQEAgLTI2LDYgKzI2LDcgQEAK
ICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJTY3JvbGxiYXIuaCIKIAorI2luY2x1ZGUg
IkZyYW1lVmlldy5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUgIlBs
YXRmb3JtTW91c2VFdmVudC5oIgogI2luY2x1ZGUgIlNjcm9sbEFuaW1hdG9yLmgiCkBAIC01NTgs
NCArNTU5LDkgQEAgYm9vbCBTY3JvbGxiYXI6OnN1cHBvcnRzVXBkYXRlT25TZWNvbmRhcnlUaHJl
YWQoKSBjb25zdAogI2VuZGlmCiB9CiAKK1Njcm9sbFZpZXcqIFNjcm9sbGJhcjo6cm9vdCgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIFdpZGdldDo6cm9vdCgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXIuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhci5oCmluZGV4IDQ0ZTIzZjdiNjYxNzcw
MjI0YzViOGYyZGM0ZDI0ZDcwNjFmZWUxYjcuLjY5ODg1ZjVhMGYwN2IxZDk5ODI2ZTRmZmFjMDcz
MzMwMmZlZjk3ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJh
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhci5oCkBAIC01OCw3ICs1
OCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIEludFBvaW50IGxvY2F0aW9uKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gV2lkZ2V0Ojpsb2NhdGlvbigpOyB9CiAKICAgICB2aXJ0dWFsIFNjcm9s
bFZpZXcqIHBhcmVudCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFdpZGdldDo6cGFyZW50KCk7
IH0KLSAgICB2aXJ0dWFsIFNjcm9sbFZpZXcqIHJvb3QoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBXaWRnZXQ6OnJvb3QoKTsgfQorICAgIHZpcnR1YWwgU2Nyb2xsVmlldyogcm9vdCgpIGNvbnN0
IG92ZXJyaWRlOwogCiAgICAgdmlydHVhbCB2b2lkIHNldEZyYW1lUmVjdChjb25zdCBJbnRSZWN0
Jikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBJbnRSZWN0IGZyYW1lUmVjdCgpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIFdpZGdldDo6ZnJhbWVSZWN0KCk7IH0KQEAgLTIwNyw4ICsyMDcsOCBAQCBw
cml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBpc1Njcm9sbGJhcigpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIHRydWU7IH0KIH07CiAKLVdJREdFVF9UWVBFX0NBU1RTKFNjcm9sbGJhciwgaXNTY3Jv
bGxiYXIoKSk7Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAorU1BFQ0lBTElaRV9UWVBFX1RS
QUlUU19XSURHRVQoU2Nyb2xsYmFyLCBpc1Njcm9sbGJhcigpKQorCiAjZW5kaWYgLy8gU2Nyb2xs
YmFyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1dpZGdldC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9XaWRnZXQuY3BwCmluZGV4IGMyMWY0ZGQzODJhZjY5OTBk
ZWQ0OTFmNjVkYjE4NjM4NmI1OTJjYmEuLjlmMWQwMTQ4MjViNTMwY2EyZWFjMjQ0MzhmNGE3ZTAx
N2I4NzcwYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1dpZGdldC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vV2lkZ2V0LmNwcApAQCAtMjYsOSArMjYsOCBA
QAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldpZGdldC5oIgogCisjaW5jbHVkZSAi
RnJhbWVWaWV3LmgiCiAjaW5jbHVkZSAiSW50UmVjdC5oIgotI2luY2x1ZGUgIlNjcm9sbFZpZXcu
aCIKLQogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
QEAgLTUzLDIwICs1MiwyMCBAQCB2b2lkIFdpZGdldDo6c2V0UGFyZW50KFNjcm9sbFZpZXcqIHZp
ZXcpCiAgICAgICAgIHNldFBhcmVudFZpc2libGUodHJ1ZSk7CiB9CiAKLVNjcm9sbFZpZXcqIFdp
ZGdldDo6cm9vdCgpIGNvbnN0CitGcmFtZVZpZXcqIFdpZGdldDo6cm9vdCgpIGNvbnN0CiB7CiAg
ICAgY29uc3QgV2lkZ2V0KiB0b3AgPSB0aGlzOwogICAgIHdoaWxlICh0b3AtPnBhcmVudCgpKQog
ICAgICAgICB0b3AgPSB0b3AtPnBhcmVudCgpOwotICAgIGlmICh0b3AtPmlzRnJhbWVWaWV3KCkp
Ci0gICAgICAgIHJldHVybiBjb25zdF9jYXN0PFNjcm9sbFZpZXcqPih0b1Njcm9sbFZpZXcodG9w
KSk7CisgICAgaWYgKGlzPEZyYW1lVmlldz4oKnRvcCkpCisgICAgICAgIHJldHVybiBjb25zdF9j
YXN0PEZyYW1lVmlldyo+KGRvd25jYXN0PEZyYW1lVmlldz4odG9wKSk7CiAgICAgcmV0dXJuIG51
bGxwdHI7CiB9CiAgICAgCiB2b2lkIFdpZGdldDo6cmVtb3ZlRnJvbVBhcmVudCgpCiB7CiAgICAg
aWYgKHBhcmVudCgpKQotICAgICAgICBwYXJlbnQoKS0+cmVtb3ZlQ2hpbGQodGhpcyk7CisgICAg
ICAgIHBhcmVudCgpLT5yZW1vdmVDaGlsZCgqdGhpcyk7CiB9CiAKIEludFJlY3QgV2lkZ2V0Ojpj
b252ZXJ0RnJvbVJvb3RWaWV3KGNvbnN0IEludFJlY3QmIHJvb3RSZWN0KSBjb25zdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vV2lkZ2V0LmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9XaWRnZXQuaAppbmRleCAwZmYxMWQyMDY0ODRjYjc1ZDMwMTY4NTk2ODY3Yjk5OGU0
NWQ0YTFjLi5iZTI4ODVjZjYxMDMzMTBlYTZmNWM5ZGQ0ZGJlMmNjMzgxNGQzZGM2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9XaWRnZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9XaWRnZXQuaApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgIlBsYXRmb3Jt
U2NyZWVuLmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291
bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9UeXBlQ2FzdHMuaD4KIAogI2lmIFBMQVRGT1JNKENPQ09B
KQogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KQEAgLTcwLDYgKzcxLDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogY2xhc3MgQ3Vyc29yOwogY2xhc3MgRXZlbnQ7CiBjbGFzcyBGb250OworY2xh
c3MgRnJhbWVWaWV3OwogY2xhc3MgR3JhcGhpY3NDb250ZXh0OwogY2xhc3MgUGxhdGZvcm1Nb3Vz
ZUV2ZW50OwogY2xhc3MgU2Nyb2xsVmlldzsKQEAgLTE0Myw3ICsxNDUsNyBAQCBwdWJsaWM6CiAg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZW1vdmVGcm9tUGFyZW50KCk7CiAgICAgV0VCQ09SRV9F
WFBPUlQgdmlydHVhbCB2b2lkIHNldFBhcmVudChTY3JvbGxWaWV3KiB2aWV3KTsKICAgICBTY3Jv
bGxWaWV3KiBwYXJlbnQoKSBjb25zdCB7IHJldHVybiBtX3BhcmVudDsgfQotICAgIFNjcm9sbFZp
ZXcqIHJvb3QoKSBjb25zdDsKKyAgICBGcmFtZVZpZXcqIHJvb3QoKSBjb25zdDsKIAogICAgIHZp
cnR1YWwgdm9pZCBoYW5kbGVFdmVudChFdmVudCopIHsgfQogCkBAIC0yMTYsOSArMjE4LDYgQEAg
cHJpdmF0ZToKICAgICBJbnRSZWN0IG1fZnJhbWU7IC8vIE5vdCB1c2VkIHdoZW4gYSBuYXRpdmUg
d2lkZ2V0IGV4aXN0cy4KIH07CiAKLSNkZWZpbmUgV0lER0VUX1RZUEVfQ0FTVFMoVG9WYWx1ZVR5
cGVOYW1lLCBwcmVkaWNhdGUpIFwKLSAgICBUWVBFX0NBU1RTX0JBU0UoVG9WYWx1ZVR5cGVOYW1l
LCBXaWRnZXQsIG9iamVjdCwgb2JqZWN0LT5wcmVkaWNhdGUsIG9iamVjdC5wcmVkaWNhdGUpCi0K
ICNpZiAhUExBVEZPUk0oQ09DT0EpCiAKIGlubGluZSBQbGF0Zm9ybVdpZGdldCBXaWRnZXQ6OnBs
YXRmb3JtV2lkZ2V0KCkgY29uc3QKQEAgLTI1MSw0ICsyNTAsOSBAQCBpbmxpbmUgdm9pZCBXaWRn
ZXQ6OnJldGFpblBsYXRmb3JtV2lkZ2V0KCkKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCisj
ZGVmaW5lIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0lER0VUKFRvVmFsdWVUeXBlTmFtZSwgcHJl
ZGljYXRlKSBcCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdlYkNvcmU6OlRvVmFsdWVU
eXBlTmFtZSkgXAorICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpXaWRnZXQm
IHdpZGdldCkgeyByZXR1cm4gd2lkZ2V0LnByZWRpY2F0ZTsgfSBcCitTUEVDSUFMSVpFX1RZUEVf
VFJBSVRTX0VORCgpCisKICNlbmRpZiAvLyBXaWRnZXRfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZWZsL1dpZGdldEVmbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9lZmwvV2lkZ2V0RWZsLmNwcAppbmRleCA0MmFjODI5MTczNjQ2YWZkYWQwZmY1Y2ZiZDZiNTMy
OTJiZWNkNzQ1Li4wMjIyNjM1NWZkMjUwNGJlZGQwMzVjZGFmZDYxMzIwZDU1NjljYTA3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvV2lkZ2V0RWZsLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvV2lkZ2V0RWZsLmNwcApAQCAtNzksNyArNzksNyBA
QCB2b2lkIFdpZGdldDo6c2V0Rm9jdXMoYm9vbCkKIAogdm9pZCBXaWRnZXQ6OnNldEN1cnNvcihj
b25zdCBDdXJzb3ImIGN1cnNvcikKIHsKLSAgICBTY3JvbGxWaWV3KiB2aWV3ID0gcm9vdCgpOwor
ICAgIEZyYW1lVmlldyogdmlldyA9IHJvb3QoKTsKICAgICBpZiAoIXZpZXcpCiAgICAgICAgIHJl
dHVybjsKICAgICB2aWV3LT5ob3N0V2luZG93KCktPnNldEN1cnNvcihjdXJzb3IpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1BsYXRmb3JtU2NyZWVuR3RrLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QbGF0Zm9ybVNjcmVlbkd0ay5jcHAKaW5kZXgg
ODIzYWFlNzQxNzI2ZTRiN2Y5OGI4NWQyMzY5M2FjYTgwODdiNzM2MC4uZmVjMDhhNTNmM2UyNTNi
NzQ4MzhjNjJjYmFmMDg4NTQ1OWFlZjU1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3RrL1BsYXRmb3JtU2NyZWVuR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ndGsvUGxhdGZvcm1TY3JlZW5HdGsuY3BwCkBAIC0zMiwxMCArMzIsMTAgQEAKICNpbmNs
dWRlICJQbGF0Zm9ybVNjcmVlbi5oIgogCiAjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCisjaW5jbHVk
ZSAiRnJhbWVWaWV3LmgiCiAjaW5jbHVkZSAiR3RrVmVyc2lvbmluZy5oIgogI2luY2x1ZGUgIkhv
c3RXaW5kb3cuaCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgotI2luY2x1ZGUgIlNjcm9s
bFZpZXcuaCIKICNpbmNsdWRlICJXaWRnZXQuaCIKIAogI2luY2x1ZGUgPGd0ay9ndGsuaD4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9XaWRnZXRHdGsuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1dpZGdldEd0ay5jcHAKaW5kZXggNzhjZjBlYWUyYWMz
NzRjNWFhNDM5NGFhNGI3YmNiMmYzN2VjYjVjZS4uYTdiYTQyYTJlYjNlMzllNDI3NjU1YTQ4ODMy
MGMzZGMwZjJkNzcwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1dp
ZGdldEd0ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1dpZGdldEd0ay5j
cHAKQEAgLTI5LDExICsyOSwxMSBAQAogI2luY2x1ZGUgIldpZGdldC5oIgogCiAjaW5jbHVkZSAi
Q3Vyc29yLmgiCisjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250
ZXh0LmgiCiAjaW5jbHVkZSAiR3RrVmVyc2lvbmluZy5oIgogI2luY2x1ZGUgIkhvc3RXaW5kb3cu
aCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCi0jaW5jbHVkZSAiU2Nyb2xsVmlldy5oIgogCiAjaW5j
bHVkZSA8Z2RrL2dkay5oPgogI2luY2x1ZGUgPGd0ay9ndGsuaD4KQEAgLTU4LDcgKzU4LDcgQEAg
dm9pZCBXaWRnZXQ6OnNldEZvY3VzKGJvb2wpCiAKIHZvaWQgV2lkZ2V0OjpzZXRDdXJzb3IoY29u
c3QgQ3Vyc29yJiBjdXJzb3IpCiB7Ci0gICAgU2Nyb2xsVmlldyogdmlldyA9IHJvb3QoKTsKKyAg
ICBGcmFtZVZpZXcqIHZpZXcgPSByb290KCk7CiAgICAgaWYgKCF2aWV3KQogICAgICAgICByZXR1
cm47CiAgICAgdmlldy0+aG9zdFdpbmRvdygpLT5zZXRDdXJzb3IoY3Vyc29yKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybVNjcmVlbk1hYy5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybVNjcmVlbk1hYy5tbQppbmRleCBkOWMz
NDZmM2VhOGQyNTI3N2JlMWRkZTBhNGM2ZTljZjI3MDg4N2I0Li42NmZhMjkxZTVkZDIzYzQ4ODlj
YzliMzU5YzQ4OGY1NWQ2ZWM0NDhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tYWMvUGxhdGZvcm1TY3JlZW5NYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL1BsYXRmb3JtU2NyZWVuTWFjLm1tCkBAIC0yNyw4ICsyNyw4IEBACiAjaW1wb3J0ICJQbGF0
Zm9ybVNjcmVlbi5oIgogCiAjaW1wb3J0ICJGbG9hdFJlY3QuaCIKKyNpbXBvcnQgIkZyYW1lVmll
dy5oIgogI2ltcG9ydCAiSG9zdFdpbmRvdy5oIgotI2ltcG9ydCAiU2Nyb2xsVmlldy5oIgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTY5LDcgKzY5LDcgQEAgc3RhdGljIFBsYXRmb3JtRGlz
cGxheUlEIGRpc3BsYXlGcm9tV2lkZ2V0KFdpZGdldCogd2lkZ2V0KQogICAgIGlmICghd2lkZ2V0
KQogICAgICAgICByZXR1cm4gMDsKICAgICAKLSAgICBTY3JvbGxWaWV3KiB2aWV3ID0gd2lkZ2V0
LT5yb290KCk7CisgICAgRnJhbWVWaWV3KiB2aWV3ID0gd2lkZ2V0LT5yb290KCk7CiAgICAgaWYg
KCF2aWV3KQogICAgICAgICByZXR1cm4gMDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL1dpZGdldE1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9X
aWRnZXRNYWMubW0KaW5kZXggMTMyYTM4ZDA1NTI4OWRlZWQ4OThiNGIyYzI5MTM0NTZlMjk1MDA5
YS4uMTQ3NzM3NGViODc3MjEwYTI1OGRhMDFiNzhkZDc2NGFhMWNjNTY3YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dpZGdldE1hYy5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvV2lkZ2V0TWFjLm1tCkBAIC0zMywxMSArMzMsMTEgQEAKICNpbXBv
cnQgIkRvY3VtZW50LmgiCiAjaW1wb3J0ICJGb250LmgiCiAjaW1wb3J0ICJGcmFtZS5oIgorI2lt
cG9ydCAiRnJhbWVWaWV3LmgiCiAjaW1wb3J0ICJHcmFwaGljc0NvbnRleHQuaCIKICNpbXBvcnQg
IlBhZ2UuaCIKICNpbXBvcnQgIlBsYXRmb3JtTW91c2VFdmVudC5oIgogI2ltcG9ydCAiUnVudGlt
ZUFwcGxpY2F0aW9uQ2hlY2tzLmgiCi0jaW1wb3J0ICJTY3JvbGxWaWV3LmgiCiAjaW1wb3J0ICJX
ZWJDb3JlRnJhbWVWaWV3LmgiCiAjaW1wb3J0ICJXZWJDb3JlVmlldy5oIgogI2ltcG9ydCA8d3Rm
L1JlZi5oPgpAQCAtMTA2LDcgKzEwNiw3IEBAIHZvaWQgV2lkZ2V0OjpzZXRGb2N1cyhib29sIGZv
Y3VzZWQpCiAKIHZvaWQgV2lkZ2V0OjpzZXRDdXJzb3IoY29uc3QgQ3Vyc29yJiBjdXJzb3IpCiB7
Ci0gICAgU2Nyb2xsVmlldyogdmlldyA9IHJvb3QoKTsKKyAgICBGcmFtZVZpZXcqIHZpZXcgPSBy
b290KCk7CiAgICAgaWYgKCF2aWV3KQogICAgICAgICByZXR1cm47CiAgICAgdmlldy0+aG9zdFdp
bmRvdygpLT5zZXRDdXJzb3IoY3Vyc29yKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3dpbi9XaWRnZXRXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1dp
ZGdldFdpbi5jcHAKaW5kZXggNDczYjFkZTlhOWE2OGQzYWE2NGY1NGY3MmUzNTc2MjQ2ZmNhY2Y0
Mi4uMjcxZTM2ZDVjYjMxMGY1ZjY4ODdkZDIzNzkwYTliNmJhNDY4ZjBhMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1dpZGdldFdpbi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vd2luL1dpZGdldFdpbi5jcHAKQEAgLTcwLDcgKzcwLDcgQEAgdm9pZCBX
aWRnZXQ6OnNldEN1cnNvcihjb25zdCBDdXJzb3ImIGN1cnNvcikKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAotICAgIFNjcm9sbFZpZXcqIHZpZXcgPSByb290KCk7CisgICAgRnJhbWVWaWV3KiB2
aWV3ID0gcm9vdCgpOwogICAgIGlmICghdmlldykKICAgICAgICAgcmV0dXJuOwogICAgIHZpZXct
Pmhvc3RXaW5kb3coKS0+c2V0Q3Vyc29yKGN1cnNvcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbHVnaW5zL1BsdWdpblZpZXdCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL1Bs
dWdpblZpZXdCYXNlLmgKaW5kZXggZTQ1NmI2YzIxZmZmYTI3ODliYTE0YTQ0NDBkYjVmNzRmM2M5
ZWRhMy4uMjQ4M2NhYWRiMDY5NmExMjlmODBhZGQ2YThjNDk1N2ExMTJhZmQzMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5WaWV3QmFzZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsdWdpbnMvUGx1Z2luVmlld0Jhc2UuaApAQCAtODEsOCArODEsOCBAQCBwcm90ZWN0
ZWQ6CiAgICAgZXhwbGljaXQgUGx1Z2luVmlld0Jhc2UoUGxhdGZvcm1XaWRnZXQgd2lkZ2V0ID0g
MCkgOiBXaWRnZXQod2lkZ2V0KSB7IH0KIH07CiAKLVdJREdFVF9UWVBFX0NBU1RTKFBsdWdpblZp
ZXdCYXNlLCBpc1BsdWdpblZpZXdCYXNlKCkpOwotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAK
K1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0lER0VUKFBsdWdpblZpZXdCYXNlLCBpc1BsdWdpblZp
ZXdCYXNlKCkpCisKICNlbmRpZiAvLyBQbHVnaW5XaWRnZXRfaApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGx1Z2lucy93aW4vUGx1Z2luVmlld1dpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bHVnaW5zL3dpbi9QbHVnaW5WaWV3V2luLmNwcAppbmRleCBlMDA2NWQzYmNiYmEyYmRmZTc3Njk3
MjE3ZTA0ZDBlN2E0ZjdkZmNhLi5mOTIxMmJhMjQ5ZjQ3N2UwMzY5MThlYzI2MTMyOGU3NmY3ZGY5
Zjg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL3dpbi9QbHVnaW5WaWV3V2lu
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL3dpbi9QbHVnaW5WaWV3V2luLmNwcApA
QCAtMzk2LDEzICszOTYsMTIgQEAgdm9pZCBQbHVnaW5WaWV3Ojp1cGRhdGVQbHVnaW5XaWRnZXQo
KQogICAgIGlmICghcGFyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIEFTU0VSVChwYXJl
bnQoKS0+aXNGcmFtZVZpZXcoKSk7Ci0gICAgRnJhbWVWaWV3KiBmcmFtZVZpZXcgPSB0b0ZyYW1l
VmlldyhwYXJlbnQoKSk7CisgICAgRnJhbWVWaWV3JiBmcmFtZVZpZXcgPSBkb3duY2FzdDxGcmFt
ZVZpZXc+KCpwYXJlbnQoKSk7CiAKICAgICBJbnRSZWN0IG9sZFdpbmRvd1JlY3QgPSBtX3dpbmRv
d1JlY3Q7CiAgICAgSW50UmVjdCBvbGRDbGlwUmVjdCA9IG1fY2xpcFJlY3Q7CiAKLSAgICBtX3dp
bmRvd1JlY3QgPSBJbnRSZWN0KGZyYW1lVmlldy0+Y29udGVudHNUb1dpbmRvdyhmcmFtZVJlY3Qo
KS5sb2NhdGlvbigpKSwgZnJhbWVSZWN0KCkuc2l6ZSgpKTsKKyAgICBtX3dpbmRvd1JlY3QgPSBJ
bnRSZWN0KGZyYW1lVmlldy5jb250ZW50c1RvV2luZG93KGZyYW1lUmVjdCgpLmxvY2F0aW9uKCkp
LCBmcmFtZVJlY3QoKS5zaXplKCkpOwogICAgIG1fY2xpcFJlY3QgPSB3aW5kb3dDbGlwUmVjdCgp
OwogICAgIG1fY2xpcFJlY3QubW92ZSgtbV93aW5kb3dSZWN0LngoKSwgLW1fd2luZG93UmVjdC55
KCkpOwogCkBAIC01MTEsNyArNTEwLDcgQEAgdm9pZCBQbHVnaW5WaWV3OjpwYWludEludG9UcmFu
c2Zvcm1lZENvbnRleHQoSERDIGhkYykKIAogICAgIFdJTkRPV1BPUyB3aW5kb3dwb3MgPSB7IDAs
IDAsIDAsIDAsIDAsIDAsIDAgfTsKIAotICAgIEludFJlY3QgciA9IGNvbnRlbnRzVG9OYXRpdmVX
aW5kb3codG9GcmFtZVZpZXcocGFyZW50KCkpLCBmcmFtZVJlY3QoKSk7CisgICAgSW50UmVjdCBy
ID0gY29udGVudHNUb05hdGl2ZVdpbmRvdyhkb3duY2FzdDxGcmFtZVZpZXc+KHBhcmVudCgpKSwg
ZnJhbWVSZWN0KCkpOwogCiAgICAgd2luZG93cG9zLnggPSByLngoKTsKICAgICB3aW5kb3dwb3Mu
eSA9IHIueSgpOwpAQCAtNTQzLDggKzU0Miw3IEBAIHZvaWQgUGx1Z2luVmlldzo6cGFpbnRXaW5k
b3dlZFBsdWdpbkludG9Db250ZXh0KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QKICAg
ICBBU1NFUlQobV9pc1dpbmRvd2VkKTsKICAgICBBU1NFUlQoY29udGV4dC0+c2hvdWxkSW5jbHVk
ZUNoaWxkV2luZG93cygpKTsKIAotICAgIEFTU0VSVChwYXJlbnQoKS0+aXNGcmFtZVZpZXcoKSk7
Ci0gICAgSW50UG9pbnQgbG9jYXRpb25JbldpbmRvdyA9IHRvRnJhbWVWaWV3KHBhcmVudCgpKS0+
Y29udmVydFRvQ29udGFpbmluZ1dpbmRvdyhmcmFtZVJlY3QoKS5sb2NhdGlvbigpKTsKKyAgICBJ
bnRQb2ludCBsb2NhdGlvbkluV2luZG93ID0gZG93bmNhc3Q8RnJhbWVWaWV3PigqcGFyZW50KCkp
LmNvbnZlcnRUb0NvbnRhaW5pbmdXaW5kb3coZnJhbWVSZWN0KCkubG9jYXRpb24oKSk7CiAKICAg
ICBMb2NhbFdpbmRvd3NDb250ZXh0IHdpbmRvd3NDb250ZXh0KGNvbnRleHQsIGZyYW1lUmVjdCgp
LCBmYWxzZSk7CiAKQEAgLTU5NiwxNSArNTk0LDEzIEBAIHZvaWQgUGx1Z2luVmlldzo6cGFpbnQo
R3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiByZWN0KQogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCi0gICAgQVNTRVJUKHBhcmVudCgpLT5pc0ZyYW1lVmlldygpKTsKLQog
ICAgIC8vIEluIHRoZSBHVEsgYW5kIFF0IHBvcnRzIHdlIGRyYXcgaW4gYW4gb2Zmc2NyZWVuIGJ1
ZmZlciBhbmQgZG9uJ3Qgd2FudCB0byB1c2UgdGhlIHdpbmRvdwogICAgIC8vIGNvb3JkaW5hdGVz
LgogI2lmIFBMQVRGT1JNKEdUSykKICAgICBJbnRSZWN0IHJlY3RJbldpbmRvdyhyZWN0KTsKICAg
ICByZWN0SW5XaW5kb3cuaW50ZXJzZWN0KGZyYW1lUmVjdCgpKTsKICNlbHNlCi0gICAgSW50UmVj
dCByZWN0SW5XaW5kb3cgPSB0b0ZyYW1lVmlldyhwYXJlbnQoKSktPmNvbnRlbnRzVG9XaW5kb3co
ZnJhbWVSZWN0KCkpOworICAgIEludFJlY3QgcmVjdEluV2luZG93ID0gZG93bmNhc3Q8RnJhbWVW
aWV3PigqcGFyZW50KCkpLmNvbnRlbnRzVG9XaW5kb3coZnJhbWVSZWN0KCkpOwogI2VuZGlmCiAg
ICAgTG9jYWxXaW5kb3dzQ29udGV4dCB3aW5kb3dzQ29udGV4dChjb250ZXh0LCByZWN0SW5XaW5k
b3csIG1faXNUcmFuc3BhcmVudCk7CiAKQEAgLTY1OCw3ICs2NTQsNyBAQCB2b2lkIFBsdWdpblZp
ZXc6OmhhbmRsZU1vdXNlRXZlbnQoTW91c2VFdmVudCogZXZlbnQpCiAKICAgICBOUEV2ZW50IG5w
RXZlbnQ7CiAKLSAgICBJbnRQb2ludCBwID0gY29udGVudHNUb05hdGl2ZVdpbmRvdyh0b0ZyYW1l
VmlldyhwYXJlbnQoKSksIEludFBvaW50KGV2ZW50LT5wYWdlWCgpLCBldmVudC0+cGFnZVkoKSkp
OworICAgIEludFBvaW50IHAgPSBjb250ZW50c1RvTmF0aXZlV2luZG93KGRvd25jYXN0PEZyYW1l
Vmlldz4ocGFyZW50KCkpLCBJbnRQb2ludChldmVudC0+cGFnZVgoKSwgZXZlbnQtPnBhZ2VZKCkp
KTsKIAogICAgIG5wRXZlbnQubFBhcmFtID0gTUFLRUxQQVJBTShwLngoKSwgcC55KCkpOwogICAg
IG5wRXZlbnQud1BhcmFtID0gMDsKQEAgLTc3MSw3ICs3NjcsNyBAQCB2b2lkIFBsdWdpblZpZXc6
OnNldE5QV2luZG93UmVjdChjb25zdCBJbnRSZWN0JiByZWN0KQogIyBpZiBQTEFURk9STShHVEsp
CiAgICAgSW50UG9pbnQgcCA9IHJlY3QubG9jYXRpb24oKTsKICMgZWxzZQotICAgIEludFBvaW50
IHAgPSB0b0ZyYW1lVmlldyhwYXJlbnQoKSktPmNvbnRlbnRzVG9XaW5kb3cocmVjdC5sb2NhdGlv
bigpKTsKKyAgICBJbnRQb2ludCBwID0gZG93bmNhc3Q8RnJhbWVWaWV3PigqcGFyZW50KCkpLmNv
bnRlbnRzVG9XaW5kb3cocmVjdC5sb2NhdGlvbigpKTsKICMgZW5kaWYKICAgICBtX25wV2luZG93
LnggPSBwLngoKTsKICAgICBtX25wV2luZG93LnkgPSBwLnkoKTsKQEAgLTk5MCw4ICs5ODYsNyBA
QCBQYXNzUmVmUHRyPEltYWdlPiBQbHVnaW5WaWV3OjpzbmFwc2hvdCgpCiAKICAgICAgICAgLy8g
V2luZG93bGVzcyBwbHVnLWlucyBhc3N1bWUgdGhhdCB0aGV5J3JlIGRyYXdpbmcgb250byB0aGUg
dmlldydzIERDLgogICAgICAgICAvLyBUcmFuc2xhdGUgdGhlIGNvbnRleHQgc28gdGhhdCB0aGUg
cGx1Zy1pbiBkcmF3cyBhdCAoMCwgMCkuCi0gICAgICAgIEFTU0VSVChwYXJlbnQoKS0+aXNGcmFt
ZVZpZXcoKSk7Ci0gICAgICAgIEludFBvaW50IHBvc2l0aW9uID0gdG9GcmFtZVZpZXcocGFyZW50
KCkpLT5jb250ZW50c1RvV2luZG93KGZyYW1lUmVjdCgpKS5sb2NhdGlvbigpOworICAgICAgICBJ
bnRQb2ludCBwb3NpdGlvbiA9IGRvd25jYXN0PEZyYW1lVmlldz4oKnBhcmVudCgpKS5jb250ZW50
c1RvV2luZG93KGZyYW1lUmVjdCgpKS5sb2NhdGlvbigpOwogICAgICAgICB0cmFuc2Zvcm0uZUR4
ID0gLXBvc2l0aW9uLngoKTsKICAgICAgICAgdHJhbnNmb3JtLmVEeSA9IC1wb3NpdGlvbi55KCk7
CiAgICAgICAgIFNldFdvcmxkVHJhbnNmb3JtKGhkYy5nZXQoKSwgJnRyYW5zZm9ybSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRW1iZWRkZWRPYmplY3QuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVtYmVkZGVkT2JqZWN0LmNwcAppbmRl
eCAzYmI3MjQzMjUyMzA2MzJjNWY0ZTI1NDE1MjU0YmFmMzVkZjFlMzA5Li5mYmQ0MGUzMjVlODM3
OTllZDBmMTA0NmNiM2VhOGM1MzMwMjY0NmIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyRW1iZWRkZWRPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJFbWJlZGRlZE9iamVjdC5jcHAKQEAgLTEzMSw5ICsxMzEsOSBAQCBib29s
IFJlbmRlckVtYmVkZGVkT2JqZWN0OjphbGxvd3NBY2NlbGVyYXRlZENvbXBvc2l0aW5nKCkgY29u
c3QKIHsKICNpZiBQTEFURk9STShJT1MpCiAgICAgLy8gVGhlIHRpbWluZyBvZiBsYXllciBjcmVh
dGlvbiBpcyBkaWZmZXJlbnQgb24gdGhlIHBob25lLCBzaW5jZSB0aGUgcGx1Z2luIGNhbiBvbmx5
IGJlIG1hbmlwdWxhdGVkIGZyb20gdGhlIG1haW4gdGhyZWFkLgotICAgIHJldHVybiB3aWRnZXQo
KSAmJiB3aWRnZXQoKS0+aXNQbHVnaW5WaWV3QmFzZSgpICYmIHRvUGx1Z2luVmlld0Jhc2Uod2lk
Z2V0KCkpLT53aWxsUHJvdmlkZVBsdWdpbkxheWVyKCk7CisgICAgcmV0dXJuIGlzPFBsdWdpblZp
ZXdCYXNlPih3aWRnZXQoKSkgJiYgZG93bmNhc3Q8UGx1Z2luVmlld0Jhc2U+KCp3aWRnZXQoKSku
d2lsbFByb3ZpZGVQbHVnaW5MYXllcigpOwogI2Vsc2UKLSAgICByZXR1cm4gd2lkZ2V0KCkgJiYg
d2lkZ2V0KCktPmlzUGx1Z2luVmlld0Jhc2UoKSAmJiB0b1BsdWdpblZpZXdCYXNlKHdpZGdldCgp
KS0+cGxhdGZvcm1MYXllcigpOworICAgIHJldHVybiBpczxQbHVnaW5WaWV3QmFzZT4od2lkZ2V0
KCkpICYmIGRvd25jYXN0PFBsdWdpblZpZXdCYXNlPigqd2lkZ2V0KCkpLnBsYXRmb3JtTGF5ZXIo
KTsKICNlbmRpZgogfQogCkBAIC01MzksMjAgKzUzOSwyMCBAQCBib29sIFJlbmRlckVtYmVkZGVk
T2JqZWN0Ojpub2RlQXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYgcmVxdWVzdCwgSGl0VGVz
dFJlcwogICAgIGlmICghUmVuZGVyV2lkZ2V0Ojpub2RlQXRQb2ludChyZXF1ZXN0LCByZXN1bHQs
IGxvY2F0aW9uSW5Db250YWluZXIsIGFjY3VtdWxhdGVkT2Zmc2V0LCBoaXRUZXN0QWN0aW9uKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgaWYgKCF3aWRnZXQoKSB8fCAhd2lkZ2V0KCkt
PmlzUGx1Z2luVmlld0Jhc2UoKSkKKyAgICBpZiAoIWlzPFBsdWdpblZpZXdCYXNlPih3aWRnZXQo
KSkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgUGx1Z2luVmlld0Jhc2UqIHZpZXcgPSB0
b1BsdWdpblZpZXdCYXNlKHdpZGdldCgpKTsKKyAgICBQbHVnaW5WaWV3QmFzZSYgdmlldyA9IGRv
d25jYXN0PFBsdWdpblZpZXdCYXNlPigqd2lkZ2V0KCkpOwogICAgIEludFBvaW50IHJvdW5kZWRQ
b2ludCA9IGxvY2F0aW9uSW5Db250YWluZXIucm91bmRlZFBvaW50KCk7CiAKLSAgICBpZiAoU2Ny
b2xsYmFyKiBob3Jpem9udGFsU2Nyb2xsYmFyID0gdmlldy0+aG9yaXpvbnRhbFNjcm9sbGJhcigp
KSB7CisgICAgaWYgKFNjcm9sbGJhciogaG9yaXpvbnRhbFNjcm9sbGJhciA9IHZpZXcuaG9yaXpv
bnRhbFNjcm9sbGJhcigpKSB7CiAgICAgICAgIGlmIChob3Jpem9udGFsU2Nyb2xsYmFyLT5zaG91
bGRQYXJ0aWNpcGF0ZUluSGl0VGVzdGluZygpICYmIGhvcml6b250YWxTY3JvbGxiYXItPmZyYW1l
UmVjdCgpLmNvbnRhaW5zKHJvdW5kZWRQb2ludCkpIHsKICAgICAgICAgICAgIHJlc3VsdC5zZXRT
Y3JvbGxiYXIoaG9yaXpvbnRhbFNjcm9sbGJhcik7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgICAgICAgfQogICAgIH0KIAotICAgIGlmIChTY3JvbGxiYXIqIHZlcnRpY2FsU2Nyb2xsYmFy
ID0gdmlldy0+dmVydGljYWxTY3JvbGxiYXIoKSkgeworICAgIGlmIChTY3JvbGxiYXIqIHZlcnRp
Y2FsU2Nyb2xsYmFyID0gdmlldy52ZXJ0aWNhbFNjcm9sbGJhcigpKSB7CiAgICAgICAgIGlmICh2
ZXJ0aWNhbFNjcm9sbGJhci0+c2hvdWxkUGFydGljaXBhdGVJbkhpdFRlc3RpbmcoKSAmJiB2ZXJ0
aWNhbFNjcm9sbGJhci0+ZnJhbWVSZWN0KCkuY29udGFpbnMocm91bmRlZFBvaW50KSkgewogICAg
ICAgICAgICAgcmVzdWx0LnNldFNjcm9sbGJhcih2ZXJ0aWNhbFNjcm9sbGJhcik7CiAgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKQEAgLTU2NCwxMCArNTY0LDEwIEBAIGJvb2wgUmVuZGVyRW1iZWRk
ZWRPYmplY3Q6Om5vZGVBdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiByZXF1ZXN0LCBIaXRU
ZXN0UmVzCiAKIGJvb2wgUmVuZGVyRW1iZWRkZWRPYmplY3Q6OnNjcm9sbChTY3JvbGxEaXJlY3Rp
b24gZGlyZWN0aW9uLCBTY3JvbGxHcmFudWxhcml0eSBncmFudWxhcml0eSwgZmxvYXQsIEVsZW1l
bnQqKiwgUmVuZGVyQm94KiwgY29uc3QgSW50UG9pbnQmKQogewotICAgIGlmICghd2lkZ2V0KCkg
fHwgIXdpZGdldCgpLT5pc1BsdWdpblZpZXdCYXNlKCkpCisgICAgaWYgKCFpczxQbHVnaW5WaWV3
QmFzZT4od2lkZ2V0KCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICByZXR1cm4gdG9Q
bHVnaW5WaWV3QmFzZSh3aWRnZXQoKSktPnNjcm9sbChkaXJlY3Rpb24sIGdyYW51bGFyaXR5KTsK
KyAgICByZXR1cm4gZG93bmNhc3Q8UGx1Z2luVmlld0Jhc2U+KCp3aWRnZXQoKSkuc2Nyb2xsKGRp
cmVjdGlvbiwgZ3JhbnVsYXJpdHkpOwogfQogCiBib29sIFJlbmRlckVtYmVkZGVkT2JqZWN0Ojps
b2dpY2FsU2Nyb2xsKFNjcm9sbExvZ2ljYWxEaXJlY3Rpb24gZGlyZWN0aW9uLCBTY3JvbGxHcmFu
dWxhcml0eSBncmFudWxhcml0eSwgZmxvYXQgbXVsdGlwbGllciwgRWxlbWVudCoqIHN0b3BFbGVt
ZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYW1lQmFz
ZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYW1lQmFzZS5oCmluZGV4IGFh
ZTA0YTBkY2FiZGE2MDE2YWIwZDQ4MTBiNDJhYzc3MTM4NzM4YjMuLjE3YzlkOGYzMzViMThjMGRm
OTVmNmM0M2ZkZDkwYWYxOTYyY2YxMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJGcmFtZUJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyRnJhbWVCYXNlLmgKQEAgLTM5LDcgKzM5LDcgQEAgcHJvdGVjdGVkOgogICAgIFJlbmRlckZy
YW1lQmFzZShIVE1MRnJhbWVFbGVtZW50QmFzZSYsIFBhc3NSZWY8UmVuZGVyU3R5bGU+KTsKIAog
cHVibGljOgotICAgIEZyYW1lVmlldyogY2hpbGRWaWV3KCkgY29uc3QgeyByZXR1cm4gdG9GcmFt
ZVZpZXcoUmVuZGVyV2lkZ2V0Ojp3aWRnZXQoKSk7IH0KKyAgICBGcmFtZVZpZXcqIGNoaWxkVmll
dygpIGNvbnN0IHsgcmV0dXJuIGRvd25jYXN0PEZyYW1lVmlldz4oUmVuZGVyV2lkZ2V0Ojp3aWRn
ZXQoKSk7IH0KIAogICAgIHZvaWQgbGF5b3V0V2l0aEZsYXR0ZW5pbmcoYm9vbCBmaXhlZFdpZHRo
LCBib29sIGZpeGVkSGVpZ2h0KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGF5ZXJCYWNraW5nLmNwcAppbmRleCBkNjlhZDkyNzA3YmI5MDY1YWQ3YjgwMTZiNjQ5ZGI1
MjIzMTc1ZjAwLi5jOGI0YTMzOTdhNzU0OGQzNDE5MjJkMDUyODU1NzA2YmM2NDg0YTNjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcApAQCAt
MzE4LDggKzMxOCw4IEBAIHZvaWQgUmVuZGVyTGF5ZXJCYWNraW5nOjpjcmVhdGVQcmltYXJ5R3Jh
cGhpY3NMYXllcigpCiB2b2lkIFJlbmRlckxheWVyQmFja2luZzo6bGF5ZXJXaWxsQmVEZXN0cm95
ZWQoKQogewogICAgIFJlbmRlck9iamVjdCYgcmVuZGVyZXIgPSB0aGlzLT5yZW5kZXJlcigpOwot
ICAgIGlmIChyZW5kZXJlci5pc0VtYmVkZGVkT2JqZWN0KCkgJiYgdG9SZW5kZXJFbWJlZGRlZE9i
amVjdChyZW5kZXJlcikuYWxsb3dzQWNjZWxlcmF0ZWRDb21wb3NpdGluZygpKSB7Ci0gICAgICAg
IFBsdWdpblZpZXdCYXNlKiBwbHVnaW5WaWV3QmFzZSA9IHRvUGx1Z2luVmlld0Jhc2UodG9SZW5k
ZXJXaWRnZXQocmVuZGVyZXIpLndpZGdldCgpKTsKKyAgICBpZiAoaXM8UmVuZGVyRW1iZWRkZWRP
YmplY3Q+KHJlbmRlcmVyKSAmJiBkb3duY2FzdDxSZW5kZXJFbWJlZGRlZE9iamVjdD4ocmVuZGVy
ZXIpLmFsbG93c0FjY2VsZXJhdGVkQ29tcG9zaXRpbmcoKSkgeworICAgICAgICBQbHVnaW5WaWV3
QmFzZSogcGx1Z2luVmlld0Jhc2UgPSBkb3duY2FzdDxQbHVnaW5WaWV3QmFzZT4oZG93bmNhc3Q8
UmVuZGVyV2lkZ2V0PihyZW5kZXJlcikud2lkZ2V0KCkpOwogICAgICAgICBpZiAocGx1Z2luVmll
d0Jhc2UgJiYgbV9ncmFwaGljc0xheWVyLT5jb250ZW50c0xheWVyRm9yTWVkaWEoKSkKICAgICAg
ICAgICAgIHBsdWdpblZpZXdCYXNlLT5kZXRhY2hQbHVnaW5MYXllcigpOwogICAgIH0KQEAgLTU3
Miw4ICs1NzIsOCBAQCBib29sIFJlbmRlckxheWVyQmFja2luZzo6dXBkYXRlQ29uZmlndXJhdGlv
bigpCiAgICAgaWYgKGlzRGlyZWN0bHlDb21wb3NpdGVkSW1hZ2UoKSkKICAgICAgICAgdXBkYXRl
SW1hZ2VDb250ZW50cygpOwogCi0gICAgaWYgKHJlbmRlcmVyKCkuaXNFbWJlZGRlZE9iamVjdCgp
ICYmIHRvUmVuZGVyRW1iZWRkZWRPYmplY3QoJnJlbmRlcmVyKCkpLT5hbGxvd3NBY2NlbGVyYXRl
ZENvbXBvc2l0aW5nKCkpIHsKLSAgICAgICAgUGx1Z2luVmlld0Jhc2UqIHBsdWdpblZpZXdCYXNl
ID0gdG9QbHVnaW5WaWV3QmFzZSh0b1JlbmRlcldpZGdldCgmcmVuZGVyZXIoKSktPndpZGdldCgp
KTsKKyAgICBpZiAoaXM8UmVuZGVyRW1iZWRkZWRPYmplY3Q+KHJlbmRlcmVyKCkpICYmIGRvd25j
YXN0PFJlbmRlckVtYmVkZGVkT2JqZWN0PihyZW5kZXJlcigpKS5hbGxvd3NBY2NlbGVyYXRlZENv
bXBvc2l0aW5nKCkpIHsKKyAgICAgICAgUGx1Z2luVmlld0Jhc2UqIHBsdWdpblZpZXdCYXNlID0g
ZG93bmNhc3Q8UGx1Z2luVmlld0Jhc2U+KGRvd25jYXN0PFJlbmRlcldpZGdldD4ocmVuZGVyZXIo
KSkud2lkZ2V0KCkpOwogI2lmIFBMQVRGT1JNKElPUykKICAgICAgICAgaWYgKHBsdWdpblZpZXdC
YXNlICYmICFtX2dyYXBoaWNzTGF5ZXItPmNvbnRlbnRzTGF5ZXJGb3JNZWRpYSgpKSB7CiAgICAg
ICAgICAgICBwbHVnaW5WaWV3QmFzZS0+ZGV0YWNoUGx1Z2luTGF5ZXIoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKaW5kZXggNDU5
YmQ5NDU1MTg5ZWE5NmJkYzA5ODEwZjE1MWExMWRmNGI2Y2I0ZC4uNzEwMzVjM2M3NjI5M2JkNjFl
MTVjOWE2NDk3OGQ4MzcwYjJiZmU4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKQEAgLTIwNjgsNyArMjA2OCw2IEBAIGJvb2wg
UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpzaG91bGRQcm9wYWdhdGVDb21wb3NpdGluZ1RvRW5jbG9z
aW5nRnJhbWUoKSBjb25zdAogICAgIC8vIGlzIHRvIGhhdmUgdGhlIHBhcmVudCBkb2N1bWVudCBi
ZWNvbWUgY29tcG9zaXRlZCB0b28uIEhvd2V2ZXIsIHRoaXMgY2FuIGNhdXNlIHByb2JsZW1zIG9u
IHBsYXRmb3JtcyB0aGF0CiAgICAgLy8gdXNlIG5hdGl2ZSB2aWV3cyBmb3IgZnJhbWVzIChsaWtl
IE1hYyksIHNvIGRpc2FibGUgdGhhdCBiZWhhdmlvciBvbiB0aG9zZSBwbGF0Zm9ybXMgZm9yIG5v
dy4KICAgICBIVE1MRnJhbWVPd25lckVsZW1lbnQqIG93bmVyRWxlbWVudCA9IG1fcmVuZGVyVmll
dy5kb2N1bWVudCgpLm93bmVyRWxlbWVudCgpOwotICAgIFJlbmRlckVsZW1lbnQqIHJlbmRlcmVy
ID0gb3duZXJFbGVtZW50ID8gb3duZXJFbGVtZW50LT5yZW5kZXJlcigpIDogMDsKIAogICAgIC8v
IElmIHdlIGFyZSB0aGUgdG9wLWxldmVsIGZyYW1lLCBkb24ndCBwcm9wYWdhdGUuCiAgICAgaWYg
KCFvd25lckVsZW1lbnQpCkBAIC0yMDc3LDcgKzIwNzYsOCBAQCBib29sIFJlbmRlckxheWVyQ29t
cG9zaXRvcjo6c2hvdWxkUHJvcGFnYXRlQ29tcG9zaXRpbmdUb0VuY2xvc2luZ0ZyYW1lKCkgY29u
c3QKICAgICBpZiAoIWFsbG93c0luZGVwZW5kZW50bHlDb21wb3NpdGVkRnJhbWVzKCZtX3JlbmRl
clZpZXcuZnJhbWVWaWV3KCkpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIGlmICghcmVu
ZGVyZXIgfHwgIXJlbmRlcmVyLT5pc1dpZGdldCgpKQorICAgIFJlbmRlckVsZW1lbnQqIHJlbmRl
cmVyID0gb3duZXJFbGVtZW50LT5yZW5kZXJlcigpOworICAgIGlmICghaXM8UmVuZGVyV2lkZ2V0
PihyZW5kZXJlcikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIC8vIE9uIE1hYywgb25s
eSBwcm9wYWdhdGUgY29tcG9zaXRpbmcgaWYgdGhlIGZyYW1lIGlzIG92ZXJsYXBwZWQgaW4gdGhl
IHBhcmVudApAQCAtMjA4NiwxMSArMjA4NiwxMCBAQCBib29sIFJlbmRlckxheWVyQ29tcG9zaXRv
cjo6c2hvdWxkUHJvcGFnYXRlQ29tcG9zaXRpbmdUb0VuY2xvc2luZ0ZyYW1lKCkgY29uc3QKICAg
ICBpZiAocGFnZSAmJiBwYWdlLT5wYWdlU2NhbGVGYWN0b3IoKSAhPSAxKQogICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICAKLSAgICBSZW5kZXJXaWRnZXQqIGZyYW1lUmVuZGVyZXIgPSB0b1JlbmRl
cldpZGdldChyZW5kZXJlcik7Ci0gICAgaWYgKGZyYW1lUmVuZGVyZXItPndpZGdldCgpKSB7Ci0g
ICAgICAgIEFTU0VSVChmcmFtZVJlbmRlcmVyLT53aWRnZXQoKS0+aXNGcmFtZVZpZXcoKSk7Ci0g
ICAgICAgIEZyYW1lVmlldyogdmlldyA9IHRvRnJhbWVWaWV3KGZyYW1lUmVuZGVyZXItPndpZGdl
dCgpKTsKLSAgICAgICAgaWYgKHZpZXctPmlzT3ZlcmxhcHBlZEluY2x1ZGluZ0FuY2VzdG9ycygp
IHx8IHZpZXctPmhhc0NvbXBvc2l0aW5nQW5jZXN0b3IoKSkKKyAgICBSZW5kZXJXaWRnZXQmIGZy
YW1lUmVuZGVyZXIgPSBkb3duY2FzdDxSZW5kZXJXaWRnZXQ+KCpyZW5kZXJlcik7CisgICAgaWYg
KGZyYW1lUmVuZGVyZXIud2lkZ2V0KCkpIHsKKyAgICAgICAgRnJhbWVWaWV3JiB2aWV3ID0gZG93
bmNhc3Q8RnJhbWVWaWV3PigqZnJhbWVSZW5kZXJlci53aWRnZXQoKSk7CisgICAgICAgIGlmICh2
aWV3LmlzT3ZlcmxhcHBlZEluY2x1ZGluZ0FuY2VzdG9ycygpIHx8IHZpZXcuaGFzQ29tcG9zaXRp
bmdBbmNlc3RvcigpKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVHJlZUFzVGV4dC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVHJlZUFzVGV4dC5jcHAKaW5kZXggMzliNzQ0ZTQ0
ZWVkNTA2NjI1ODkzYjA2M2ViMTdjNGY1NTg0NTBmMS4uZjkyNDA2NGFjZmQ3ZGRhNDA0NTAyMzAy
YjM1ZDI1ZTExZDljZGY3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRyZWVBc1RleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
cmVlQXNUZXh0LmNwcApAQCAtNTYzLDE2ICs1NjMsMTUgQEAgdm9pZCB3cml0ZShUZXh0U3RyZWFt
JiB0cywgY29uc3QgUmVuZGVyT2JqZWN0JiBvLCBpbnQgaW5kZW50LCBSZW5kZXJBc1RleHRCZWhh
dmkKICAgICAgICAgfQogICAgIH0KIAotICAgIGlmIChvLmlzV2lkZ2V0KCkpIHsKLSAgICAgICAg
V2lkZ2V0KiB3aWRnZXQgPSB0b1JlbmRlcldpZGdldCgmbyktPndpZGdldCgpOwotICAgICAgICBp
ZiAod2lkZ2V0ICYmIHdpZGdldC0+aXNGcmFtZVZpZXcoKSkgewotICAgICAgICAgICAgRnJhbWVW
aWV3KiB2aWV3ID0gdG9GcmFtZVZpZXcod2lkZ2V0KTsKLSAgICAgICAgICAgIGlmIChSZW5kZXJW
aWV3KiByb290ID0gdmlldy0+ZnJhbWUoKS5jb250ZW50UmVuZGVyZXIoKSkgeworICAgIGlmIChp
czxSZW5kZXJXaWRnZXQ+KG8pKSB7CisgICAgICAgIFdpZGdldCogd2lkZ2V0ID0gZG93bmNhc3Q8
UmVuZGVyV2lkZ2V0PihvKS53aWRnZXQoKTsKKyAgICAgICAgaWYgKGlzPEZyYW1lVmlldz4od2lk
Z2V0KSkgeworICAgICAgICAgICAgRnJhbWVWaWV3JiB2aWV3ID0gZG93bmNhc3Q8RnJhbWVWaWV3
Pigqd2lkZ2V0KTsKKyAgICAgICAgICAgIGlmIChSZW5kZXJWaWV3KiByb290ID0gdmlldy5mcmFt
ZSgpLmNvbnRlbnRSZW5kZXJlcigpKSB7CiAgICAgICAgICAgICAgICAgaWYgKCEoYmVoYXZpb3Ig
JiBSZW5kZXJBc1RleHREb250VXBkYXRlTGF5b3V0KSkKLSAgICAgICAgICAgICAgICAgICAgdmll
dy0+bGF5b3V0KCk7Ci0gICAgICAgICAgICAgICAgUmVuZGVyTGF5ZXIqIGwgPSByb290LT5sYXll
cigpOwotICAgICAgICAgICAgICAgIGlmIChsKQotICAgICAgICAgICAgICAgICAgICB3cml0ZUxh
eWVycyh0cywgbCwgbCwgbC0+cmVjdCgpLCBpbmRlbnQgKyAxLCBiZWhhdmlvcik7CisgICAgICAg
ICAgICAgICAgICAgIHZpZXcubGF5b3V0KCk7CisgICAgICAgICAgICAgICAgaWYgKFJlbmRlckxh
eWVyKiBsYXllciA9IHJvb3QtPmxheWVyKCkpCisgICAgICAgICAgICAgICAgICAgIHdyaXRlTGF5
ZXJzKHRzLCBsYXllciwgbGF5ZXIsIGxheWVyLT5yZWN0KCksIGluZGVudCArIDEsIGJlaGF2aW9y
KTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJXaWRnZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlcldpZGdldC5jcHAKaW5kZXggM2NiMTk4YzFmZDllZTcxNTg5YTEzYzA2MmM3NjE3
ZTY3ZTVmMzQ0MC4uZjU0OTllOWU0MmRhOWJiZTZjMTRkZmQwMGVkYTYxZmZhM2IzYTJiNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcldpZGdldC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcldpZGdldC5jcHAKQEAgLTYxLDcgKzYxLDcg
QEAgdm9pZCBXaWRnZXRIaWVyYXJjaHlVcGRhdGVzU3VzcGVuc2lvblNjb3BlOjptb3ZlV2lkZ2V0
cygpCiAgICAgICAgIEZyYW1lVmlldyogbmV3UGFyZW50ID0gaXQtPnZhbHVlOwogICAgICAgICBp
ZiAobmV3UGFyZW50ICE9IGN1cnJlbnRQYXJlbnQpIHsKICAgICAgICAgICAgIGlmIChjdXJyZW50
UGFyZW50KQotICAgICAgICAgICAgICAgIGN1cnJlbnRQYXJlbnQtPnJlbW92ZUNoaWxkKGNoaWxk
KTsKKyAgICAgICAgICAgICAgICBjdXJyZW50UGFyZW50LT5yZW1vdmVDaGlsZCgqY2hpbGQpOwog
ICAgICAgICAgICAgaWYgKG5ld1BhcmVudCkKICAgICAgICAgICAgICAgICBuZXdQYXJlbnQtPmFk
ZENoaWxkKGNoaWxkKTsKICAgICAgICAgfQpAQCAtMjM4LDkgKzIzOCw5IEBAIHZvaWQgUmVuZGVy
V2lkZ2V0OjpwYWludENvbnRlbnRzKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQ
b2ludCYgcGFpbnRPCiAgICAgaWYgKCF3aWRnZXRQYWludE9mZnNldC5pc1plcm8oKSkKICAgICAg
ICAgcGFpbnRJbmZvLmNvbnRleHQtPnRyYW5zbGF0ZSgtd2lkZ2V0UGFpbnRPZmZzZXQpOwogCi0g
ICAgaWYgKG1fd2lkZ2V0LT5pc0ZyYW1lVmlldygpKSB7Ci0gICAgICAgIEZyYW1lVmlldyogZnJh
bWVWaWV3ID0gdG9GcmFtZVZpZXcobV93aWRnZXQuZ2V0KCkpOwotICAgICAgICBib29sIHJ1bk92
ZXJsYXBUZXN0cyA9ICFmcmFtZVZpZXctPnVzZVNsb3dSZXBhaW50c0lmTm90T3ZlcmxhcHBlZCgp
IHx8IGZyYW1lVmlldy0+aGFzQ29tcG9zaXRlZENvbnRlbnRJbmNsdWRpbmdEZXNjZW5kYW50cygp
OworICAgIGlmIChpczxGcmFtZVZpZXc+KCptX3dpZGdldCkpIHsKKyAgICAgICAgRnJhbWVWaWV3
JiBmcmFtZVZpZXcgPSBkb3duY2FzdDxGcmFtZVZpZXc+KCptX3dpZGdldCk7CisgICAgICAgIGJv
b2wgcnVuT3ZlcmxhcFRlc3RzID0gIWZyYW1lVmlldy51c2VTbG93UmVwYWludHNJZk5vdE92ZXJs
YXBwZWQoKSB8fCBmcmFtZVZpZXcuaGFzQ29tcG9zaXRlZENvbnRlbnRJbmNsdWRpbmdEZXNjZW5k
YW50cygpOwogICAgICAgICBpZiAocGFpbnRJbmZvLm92ZXJsYXBUZXN0UmVxdWVzdHMgJiYgcnVu
T3ZlcmxhcFRlc3RzKSB7CiAgICAgICAgICAgICBBU1NFUlQoIXBhaW50SW5mby5vdmVybGFwVGVz
dFJlcXVlc3RzLT5jb250YWlucyh0aGlzKSk7CiAgICAgICAgICAgICBwYWludEluZm8ub3Zlcmxh
cFRlc3RSZXF1ZXN0cy0+c2V0KHRoaXMsIG1fd2lkZ2V0LT5mcmFtZVJlY3QoKSk7CkBAIC0zMDEs
OCArMzAxLDcgQEAgdm9pZCBSZW5kZXJXaWRnZXQ6OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJbmZv
LCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQpCiB2b2lkIFJlbmRlcldpZGdldDo6c2V0
T3ZlcmxhcFRlc3RSZXN1bHQoYm9vbCBpc092ZXJsYXBwZWQpCiB7CiAgICAgQVNTRVJUKG1fd2lk
Z2V0KTsKLSAgICBBU1NFUlQobV93aWRnZXQtPmlzRnJhbWVWaWV3KCkpOwotICAgIHRvRnJhbWVW
aWV3KG1fd2lkZ2V0LmdldCgpKS0+c2V0SXNPdmVybGFwcGVkKGlzT3ZlcmxhcHBlZCk7CisgICAg
ZG93bmNhc3Q8RnJhbWVWaWV3PigqbV93aWRnZXQpLnNldElzT3ZlcmxhcHBlZChpc092ZXJsYXBw
ZWQpOwogfQogCiB2b2lkIFJlbmRlcldpZGdldDo6dXBkYXRlV2lkZ2V0UG9zaXRpb24oKQpAQCAt
MzE3LDExICszMTYsMTEgQEAgdm9pZCBSZW5kZXJXaWRnZXQ6OnVwZGF0ZVdpZGdldFBvc2l0aW9u
KCkKIAogICAgIC8vIGlmIHRoZSBmcmFtZSBzaXplIGdvdCBjaGFuZ2VkLCBvciBpZiB2aWV3IG5l
ZWRzIGxheW91dCAocG9zc2libHkgaW5kaWNhdGluZwogICAgIC8vIGNvbnRlbnQgc2l6ZSBpcyB3
cm9uZykgd2UgaGF2ZSB0byBkbyBhIGxheW91dCB0byBzZXQgdGhlIHJpZ2h0IHdpZGdldCBzaXpl
LgotICAgIGlmIChtX3dpZGdldC0+aXNGcmFtZVZpZXcoKSkgewotICAgICAgICBGcmFtZVZpZXcq
IGZyYW1lVmlldyA9IHRvRnJhbWVWaWV3KG1fd2lkZ2V0LmdldCgpKTsKKyAgICBpZiAoaXM8RnJh
bWVWaWV3PigqbV93aWRnZXQpKSB7CisgICAgICAgIEZyYW1lVmlldyYgZnJhbWVWaWV3ID0gZG93
bmNhc3Q8RnJhbWVWaWV3PigqbV93aWRnZXQpOwogICAgICAgICAvLyBDaGVjayB0aGUgZnJhbWUn
cyBwYWdlIHRvIG1ha2Ugc3VyZSB0aGF0IHRoZSBmcmFtZSBpc24ndCBpbiB0aGUgcHJvY2VzcyBv
ZiBiZWluZyBkZXN0cm95ZWQuCi0gICAgICAgIGlmICgod2lkZ2V0U2l6ZUNoYW5nZWQgfHwgZnJh
bWVWaWV3LT5uZWVkc0xheW91dCgpKSAmJiBmcmFtZVZpZXctPmZyYW1lKCkucGFnZSgpKQotICAg
ICAgICAgICAgZnJhbWVWaWV3LT5sYXlvdXQoKTsKKyAgICAgICAgaWYgKCh3aWRnZXRTaXplQ2hh
bmdlZCB8fCBmcmFtZVZpZXcubmVlZHNMYXlvdXQoKSkgJiYgZnJhbWVWaWV3LmZyYW1lKCkucGFn
ZSgpKQorICAgICAgICAgICAgZnJhbWVWaWV3LmxheW91dCgpOwogICAgIH0KIH0KIApAQCAtMzQ2
LDE3ICszNDUsMTcgQEAgUmVuZGVyV2lkZ2V0KiBSZW5kZXJXaWRnZXQ6OmZpbmQoY29uc3QgV2lk
Z2V0KiB3aWRnZXQpCiAKIGJvb2wgUmVuZGVyV2lkZ2V0Ojpub2RlQXRQb2ludChjb25zdCBIaXRU
ZXN0UmVxdWVzdCYgcmVxdWVzdCwgSGl0VGVzdFJlc3VsdCYgcmVzdWx0LCBjb25zdCBIaXRUZXN0
TG9jYXRpb24mIGxvY2F0aW9uSW5Db250YWluZXIsIGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVs
YXRlZE9mZnNldCwgSGl0VGVzdEFjdGlvbiBhY3Rpb24pCiB7Ci0gICAgaWYgKHJlcXVlc3QuYWxs
b3dzQ2hpbGRGcmFtZUNvbnRlbnQoKSAmJiB3aWRnZXQoKSAmJiB3aWRnZXQoKS0+aXNGcmFtZVZp
ZXcoKSAmJiB0b0ZyYW1lVmlldyh3aWRnZXQoKSktPnJlbmRlclZpZXcoKSkgewotICAgICAgICBG
cmFtZVZpZXcqIGNoaWxkRnJhbWVWaWV3ID0gdG9GcmFtZVZpZXcod2lkZ2V0KCkpOwotICAgICAg
ICBSZW5kZXJWaWV3KiBjaGlsZFJvb3QgPSBjaGlsZEZyYW1lVmlldy0+cmVuZGVyVmlldygpOwor
ICAgIGlmIChyZXF1ZXN0LmFsbG93c0NoaWxkRnJhbWVDb250ZW50KCkgJiYgaXM8RnJhbWVWaWV3
Pih3aWRnZXQoKSkgJiYgZG93bmNhc3Q8RnJhbWVWaWV3Pigqd2lkZ2V0KCkpLnJlbmRlclZpZXco
KSkgeworICAgICAgICBGcmFtZVZpZXcmIGNoaWxkRnJhbWVWaWV3ID0gZG93bmNhc3Q8RnJhbWVW
aWV3Pigqd2lkZ2V0KCkpOworICAgICAgICBSZW5kZXJWaWV3JiBjaGlsZFJvb3QgPSAqY2hpbGRG
cmFtZVZpZXcucmVuZGVyVmlldygpOwogCiAgICAgICAgIExheW91dFBvaW50IGFkanVzdGVkTG9j
YXRpb24gPSBhY2N1bXVsYXRlZE9mZnNldCArIGxvY2F0aW9uKCk7Ci0gICAgICAgIExheW91dFBv
aW50IGNvbnRlbnRPZmZzZXQgPSBMYXlvdXRQb2ludChib3JkZXJMZWZ0KCkgKyBwYWRkaW5nTGVm
dCgpLCBib3JkZXJUb3AoKSArIHBhZGRpbmdUb3AoKSkgLSBjaGlsZEZyYW1lVmlldy0+c2Nyb2xs
T2Zmc2V0KCk7CisgICAgICAgIExheW91dFBvaW50IGNvbnRlbnRPZmZzZXQgPSBMYXlvdXRQb2lu
dChib3JkZXJMZWZ0KCkgKyBwYWRkaW5nTGVmdCgpLCBib3JkZXJUb3AoKSArIHBhZGRpbmdUb3Ao
KSkgLSBjaGlsZEZyYW1lVmlldy5zY3JvbGxPZmZzZXQoKTsKICAgICAgICAgSGl0VGVzdExvY2F0
aW9uIG5ld0hpdFRlc3RMb2NhdGlvbihsb2NhdGlvbkluQ29udGFpbmVyLCAtYWRqdXN0ZWRMb2Nh
dGlvbiAtIGNvbnRlbnRPZmZzZXQpOwogICAgICAgICBIaXRUZXN0UmVxdWVzdCBuZXdIaXRUZXN0
UmVxdWVzdChyZXF1ZXN0LnR5cGUoKSB8IEhpdFRlc3RSZXF1ZXN0OjpDaGlsZEZyYW1lSGl0VGVz
dCk7CiAgICAgICAgIEhpdFRlc3RSZXN1bHQgY2hpbGRGcmFtZVJlc3VsdChuZXdIaXRUZXN0TG9j
YXRpb24pOwogCi0gICAgICAgIGJvb2wgaXNJbnNpZGVDaGlsZEZyYW1lID0gY2hpbGRSb290LT5o
aXRUZXN0KG5ld0hpdFRlc3RSZXF1ZXN0LCBuZXdIaXRUZXN0TG9jYXRpb24sIGNoaWxkRnJhbWVS
ZXN1bHQpOworICAgICAgICBib29sIGlzSW5zaWRlQ2hpbGRGcmFtZSA9IGNoaWxkUm9vdC5oaXRU
ZXN0KG5ld0hpdFRlc3RSZXF1ZXN0LCBuZXdIaXRUZXN0TG9jYXRpb24sIGNoaWxkRnJhbWVSZXN1
bHQpOwogCiAgICAgICAgIGlmIChuZXdIaXRUZXN0TG9jYXRpb24uaXNSZWN0QmFzZWRUZXN0KCkp
CiAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKGNoaWxkRnJhbWVSZXN1bHQpOwpAQCAtNDAxLDkg
KzQwMCw5IEBAIGJvb2wgUmVuZGVyV2lkZ2V0OjpuZWVkc1ByZWZlcnJlZFdpZHRoc1JlY2FsY3Vs
YXRpb24oKSBjb25zdAogCiBSZW5kZXJCb3gqIFJlbmRlcldpZGdldDo6ZW1iZWRkZWRDb250ZW50
Qm94KCkgY29uc3QKIHsKLSAgICBpZiAoIXdpZGdldCgpIHx8ICF3aWRnZXQoKS0+aXNGcmFtZVZp
ZXcoKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgcmV0dXJuIHRvRnJhbWVWaWV3KHdpZGdldCgp
KS0+ZW1iZWRkZWRDb250ZW50Qm94KCk7CisgICAgaWYgKCFpczxGcmFtZVZpZXc+KHdpZGdldCgp
KSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIGRvd25jYXN0PEZyYW1lVmll
dz4oKndpZGdldCgpKS5lbWJlZGRlZENvbnRlbnRCb3goKTsKIH0KIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJSZW5kZXJO
b2RlLm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJSZW5kZXJOb2RlLm1tCmluZGV4
IDZhZWIwOTkzOTBiMzAzYTQxNzUzY2RiZjI1NTlmNDZhNWM3ODM1OGIuLmNmZWMyZTZlZGJkMGEw
YzQyMTI3NjVlMzFkZWJkYzY2YWRkYWU3N2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFj
L1dlYlZpZXcvV2ViUmVuZGVyTm9kZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3
L1dlYlJlbmRlck5vZGUubW0KQEAgLTk1LDkgKzk1LDkgQEAgc3RhdGljIFdlYlJlbmRlck5vZGUg
KmNvcHlSZW5kZXJOb2RlKFJlbmRlck9iamVjdCogbm9kZSkKIAogICAgIE5TU3RyaW5nICpuYW1l
ID0gW1tOU1N0cmluZyBhbGxvY10gaW5pdFdpdGhVVEY4U3RyaW5nOm5vZGUtPnJlbmRlck5hbWUo
KV07CiAgICAgCi0gICAgUmVuZGVyV2lkZ2V0KiByZW5kZXJXaWRnZXQgPSBub2RlLT5pc1dpZGdl
dCgpID8gdG9SZW5kZXJXaWRnZXQobm9kZSkgOiBudWxscHRyOworICAgIFJlbmRlcldpZGdldCog
cmVuZGVyV2lkZ2V0ID0gaXM8UmVuZGVyV2lkZ2V0Pigqbm9kZSkgPyBkb3duY2FzdDxSZW5kZXJX
aWRnZXQ+KG5vZGUpIDogbnVsbHB0cjsKICAgICBXaWRnZXQqIHdpZGdldCA9IHJlbmRlcldpZGdl
dCA/IHJlbmRlcldpZGdldC0+d2lkZ2V0KCkgOiBudWxscHRyOwotICAgIEZyYW1lVmlldyogZnJh
bWVWaWV3ID0gd2lkZ2V0ICYmIHdpZGdldC0+aXNGcmFtZVZpZXcoKSA/IHRvRnJhbWVWaWV3KHdp
ZGdldCkgOiBudWxscHRyOworICAgIEZyYW1lVmlldyogZnJhbWVWaWV3ID0gaXM8RnJhbWVWaWV3
Pih3aWRnZXQpID8gZG93bmNhc3Q8RnJhbWVWaWV3Pih3aWRnZXQpIDogbnVsbHB0cjsKICAgICBG
cmFtZSogZnJhbWUgPSBmcmFtZVZpZXcgPyAmZnJhbWVWaWV3LT5mcmFtZSgpIDogbnVsbHB0cjsK
IAogICAgIC8vIEZJWE1FOiBicm9rZW4gd2l0aCB0cmFuc2Zvcm1zCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJW
aWV3L1dlYlZpZXcubW0KaW5kZXggYzI5OGE5NmE3ODZmZTlmODY3ODdmNGQzNWI4MzU1NzVhNDQw
MzZlZi4uYjFjZjMyMDY1YmEyMGU3NmM3ZTMyNzFhZThjMzAxMzE5NzZjMDdjNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQpAQCAtMjk1OCw4ICsyOTU4LDggQEAgLSAodm9pZClf
YWRkU2Nyb2xsZXJEYXNoYm9hcmRSZWdpb25zRm9yRnJhbWVWaWV3OihGcmFtZVZpZXcqKWZyYW1l
VmlldyBkYXNoYm9hcmQKICAgICBOU1ZpZXcgKmRvY3VtZW50VmlldyA9IFtba2l0KCZmcmFtZVZp
ZXctPmZyYW1lKCkpIGZyYW1lVmlld10gZG9jdW1lbnRWaWV3XTsKIAogICAgIGZvciAoY29uc3Qg
YXV0byYgd2lkZ2V0OiBmcmFtZVZpZXctPmNoaWxkcmVuKCkpIHsKLSAgICAgICAgaWYgKHdpZGdl
dC0+aXNGcmFtZVZpZXcoKSkgewotICAgICAgICAgICAgW3NlbGYgX2FkZFNjcm9sbGVyRGFzaGJv
YXJkUmVnaW9uc0ZvckZyYW1lVmlldzp0b0ZyYW1lVmlldyh3aWRnZXQuZ2V0KCkpIGRhc2hib2Fy
ZFJlZ2lvbnM6cmVnaW9uc107CisgICAgICAgIGlmIChpczxGcmFtZVZpZXc+KCp3aWRnZXQpKSB7
CisgICAgICAgICAgICBbc2VsZiBfYWRkU2Nyb2xsZXJEYXNoYm9hcmRSZWdpb25zRm9yRnJhbWVW
aWV3OmRvd25jYXN0PEZyYW1lVmlldz4od2lkZ2V0LmdldCgpKSBkYXNoYm9hcmRSZWdpb25zOnJl
Z2lvbnNdOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvRW1iZWRkZWRXaWRnZXQuY3BwIGIvU291
cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvRW1iZWRkZWRXaWRnZXQuY3BwCmluZGV4IDE1
MmRiZTkwZTZkNzhlZDU4MmIzZWQwMGY1MzQyNDAyNjE3NmU1ZTEuLjNlZmFjNjBmZGU5NGY3MjA0
ZTFmMWM4NzdiZWJjNzYyYmUxNTEzY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1dl
YkNvcmVTdXBwb3J0L0VtYmVkZGVkV2lkZ2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9X
ZWJDb3JlU3VwcG9ydC9FbWJlZGRlZFdpZGdldC5jcHAKQEAgLTkzLDEzICs5MywxMiBAQCB2b2lk
IEVtYmVkZGVkV2lkZ2V0OjpmcmFtZVJlY3RzQ2hhbmdlZCgpCiAgICAgaWYgKCFwYXJlbnQoKSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgQVNTRVJUKHBhcmVudCgpLT5pc0ZyYW1lVmlldygpKTsK
LSAgICBGcmFtZVZpZXcqIGZyYW1lVmlldyA9IHRvRnJhbWVWaWV3KHBhcmVudCgpKTsKKyAgICBG
cmFtZVZpZXcmIGZyYW1lVmlldyA9IGRvd25jYXN0PEZyYW1lVmlldz4oKnBhcmVudCgpKTsKIAog
ICAgIEludFJlY3Qgb2xkV2luZG93UmVjdCA9IG1fd2luZG93UmVjdDsKICAgICBJbnRSZWN0IG9s
ZENsaXBSZWN0ID0gbV9jbGlwUmVjdDsKIAotICAgIG1fd2luZG93UmVjdCA9IEludFJlY3QoZnJh
bWVWaWV3LT5jb250ZW50c1RvV2luZG93KGZyYW1lUmVjdCgpLmxvY2F0aW9uKCkpLCBmcmFtZVJl
Y3QoKS5zaXplKCkpOworICAgIG1fd2luZG93UmVjdCA9IEludFJlY3QoZnJhbWVWaWV3LmNvbnRl
bnRzVG9XaW5kb3coZnJhbWVSZWN0KCkubG9jYXRpb24oKSksIGZyYW1lUmVjdCgpLnNpemUoKSk7
CiAgICAgbV9jbGlwUmVjdCA9IHdpbmRvd0NsaXBSZWN0KCk7CiAgICAgbV9jbGlwUmVjdC5tb3Zl
KC1tX3dpbmRvd1JlY3QueCgpLCAtbV93aW5kb3dSZWN0LnkoKSk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJSZW5kZXJPYmplY3QuY3BwIGIvU291cmNlL1dlYktpdDIv
U2hhcmVkL1dlYlJlbmRlck9iamVjdC5jcHAKaW5kZXggZGYyYmQxM2JlYzY4YmExYzAwYTQxM2Vh
YmRhNDA5YzYzMTc3ZjRmNC4uZmE4ZDU5NWE1ZWMzY2EzYWYwNmJkOTBlNDg0YTdkYzA1MDFhMDFk
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlJlbmRlck9iamVjdC5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlJlbmRlck9iamVjdC5jcHAKQEAgLTEwNiwx
MSArMTA2LDExIEBAIFdlYlJlbmRlck9iamVjdDo6V2ViUmVuZGVyT2JqZWN0KFJlbmRlck9iamVj
dCogcmVuZGVyZXIsIGJvb2wgc2hvdWxkSW5jbHVkZURlc2NlCiAgICAgICAgIGNoaWxkcmVuLmFw
cGVuZChXVEY6Om1vdmUoY2hpbGQpKTsKICAgICB9CiAKLSAgICBpZiAocmVuZGVyZXItPmlzV2lk
Z2V0KCkpIHsKLSAgICAgICAgaWYgKFdpZGdldCogd2lkZ2V0ID0gdG9SZW5kZXJXaWRnZXQocmVu
ZGVyZXIpLT53aWRnZXQoKSkgewotICAgICAgICAgICAgaWYgKHdpZGdldC0+aXNGcmFtZVZpZXco
KSkgewotICAgICAgICAgICAgICAgIEZyYW1lVmlldyogZnJhbWVWaWV3ID0gdG9GcmFtZVZpZXco
d2lkZ2V0KTsKLSAgICAgICAgICAgICAgICBpZiAoUmVuZGVyVmlldyogY29yZUNvbnRlbnRSZW5k
ZXJlciA9IGZyYW1lVmlldy0+ZnJhbWUoKS5jb250ZW50UmVuZGVyZXIoKSkgeworICAgIGlmIChp
czxSZW5kZXJXaWRnZXQ+KCpyZW5kZXJlcikpIHsKKyAgICAgICAgaWYgKFdpZGdldCogd2lkZ2V0
ID0gZG93bmNhc3Q8UmVuZGVyV2lkZ2V0PigqcmVuZGVyZXIpLndpZGdldCgpKSB7CisgICAgICAg
ICAgICBpZiAoaXM8RnJhbWVWaWV3Pigqd2lkZ2V0KSkgeworICAgICAgICAgICAgICAgIEZyYW1l
VmlldyYgZnJhbWVWaWV3ID0gZG93bmNhc3Q8RnJhbWVWaWV3Pigqd2lkZ2V0KTsKKyAgICAgICAg
ICAgICAgICBpZiAoUmVuZGVyVmlldyogY29yZUNvbnRlbnRSZW5kZXJlciA9IGZyYW1lVmlldy5m
cmFtZSgpLmNvbnRlbnRSZW5kZXJlcigpKSB7CiAgICAgICAgICAgICAgICAgICAgIFJlZlB0cjxX
ZWJSZW5kZXJPYmplY3Q+IGNvbnRlbnRSZW5kZXJlciA9IGFkb3B0UmVmKG5ldyBXZWJSZW5kZXJP
YmplY3QoY29yZUNvbnRlbnRSZW5kZXJlciwgc2hvdWxkSW5jbHVkZURlc2NlbmRhbnRzKSk7CiAK
ICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4uYXBwZW5kKFdURjo6bW92ZShjb250ZW50UmVu
ZGVyZXIpKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>239517</attachid>
            <date>2014-10-08 22:01:51 -0700</date>
            <delta_ts>2014-10-09 09:45:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-137549-20141008220154.patch</filename>
            <type>text/plain</type>
            <size>73884</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc0NDk0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTQ4YjlkOGM2YThjY2Q1
OTUyYmI3YTlmMmQzMjYwYjlhZTZlMzQzNC4uYjg3MGNjOWJmYWM4Y2E0NjJkMTBmM2E0MWMzZWYz
NjFiMzAzMDhiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyOCBAQAorMjAxNC0xMC0wOCAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFVzZSBpczw+KCkgLyBkb3du
Y2FzdDw+KCkgZm9yIFdpZGdldCBzdWJjbGFzc2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzc1NDkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgaXM8PigpIC8gZG93bmNhc3Q8PigpIGZvciBXaWRn
ZXQgc3ViY2xhc3NlcyBhbmQgY2xlYW4gdXAgdGhlCisgICAgICAgIHN1cnJvdW5kaW5nIGNvZGUu
CisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBubyBiZWhhdmlvciBjaGFuZ2UuCisKKyAgICAgICAg
KiBhY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QVhP
YmplY3RDYWNoZTo6Z2V0T3JDcmVhdGUpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eU9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjphcHBlbmRBY2Nlc3NpYmlsaXR5
T2JqZWN0KToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmpl
Y3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6dmlz
aWJsZVBvc2l0aW9uRm9yUG9pbnQpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eVNjcm9sbFZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVNjcm9s
bFZpZXc6OndlYkFyZWFPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVNj
cm9sbFZpZXc6OmRvY3VtZW50RnJhbWVWaWV3KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2li
aWxpdHlTY3JvbGxWaWV3OjpwYXJlbnRPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNz
aWJpbGl0eVNjcm9sbFZpZXc6OnBhcmVudE9iamVjdElmRXhpc3RzKToKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9KU1BsdWdpbkVsZW1lbnRGdW5jdGlvbnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
cGx1Z2luU2NyaXB0T2JqZWN0RnJvbVBsdWdpblZpZXdCYXNlKToKKyAgICAgICAgKiBodG1sL0hU
TUxPYmplY3RFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxPYmplY3RFbGVtZW50
OjphcHBlbmRGb3JtRGF0YSk6CisgICAgICAgICogaHRtbC9IVE1MUGx1Z0luRWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MUGx1Z0luRWxlbWVudDo6Y2FuUHJvY2Vzc0RyYWcpOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTFBsdWdJbkVsZW1lbnQ6OmlzS2V5Ym9hcmRGb2N1c2FibGUp
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTFBsdWdJbkVsZW1lbnQ6OmlzVXNlck9ic2VydmFibGUp
OgorICAgICAgICAqIGh0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MUGx1Z0luSW1hZ2VFbGVtZW50OjpjaGVja1NpemVDaGFuZ2VGb3JTbmFwc2hv
dHRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFBsdWdJbkltYWdlRWxlbWVudDo6c3ViZnJh
bWVMb2FkZXJEaWRDcmVhdGVQbHVnSW4pOgorICAgICAgICAqIGh0bWwvSFRNTFBsdWdJbkltYWdl
RWxlbWVudC5oOgorICAgICAgICAqIGxvYWRlci9TdWJmcmFtZUxvYWRlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTdWJmcmFtZUxvYWRlcjo6bG9hZFBsdWdpbik6CisgICAgICAgICogcGFnZS9E
cmFnQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEcmFnQ29udHJvbGxlcjo6b3Bl
cmF0aW9uRm9yTG9hZCk6CisgICAgICAgICogcGFnZS9FdmVudEhhbmRsZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpzdWJmcmFtZUZvclRhcmdldE5vZGUpOgorICAgICAg
ICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpoYW5kbGVXaGVlbEV2ZW50KToKKyAgICAgICAgKiBw
YWdlL0V2ZW50SGFuZGxlci5oOgorICAgICAgICAqIHBhZ2UvRnJhbWUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RnJhbWU6OmZyYW1lRm9yV2lkZ2V0KToKKyAgICAgICAgKiBwYWdlL0ZyYW1lVmll
dy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6Omhhc0N1c3RvbVNjcm9sbGJhcnMp
OgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3Ojp1cGRhdGVMYXlvdXRBbmRTdHlsZUlmTmVl
ZGVkUmVjdXJzaXZlKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6Y29udmVydFRvQ29u
dGFpbmluZ1ZpZXcpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3Ojpjb252ZXJ0RnJvbUNv
bnRhaW5pbmdWaWV3KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6cmVtb3ZlQ2hpbGQp
OgorICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3Lmg6CisgICAgICAgICogcGFnZS9QYWdlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnBsdWdpblZpZXdzKToKKyAgICAgICAgKiBwYWdlL2Vm
bC9FdmVudEhhbmRsZXJFZmwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpw
YXNzV2hlZWxFdmVudFRvV2lkZ2V0KToKKyAgICAgICAgKiBwYWdlL2d0ay9FdmVudEhhbmRsZXJH
dGsuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpwYXNzV2hlZWxFdmVudFRv
V2lkZ2V0KToKKyAgICAgICAgKiBwYWdlL2lvcy9FdmVudEhhbmRsZXJJT1MubW06CisgICAgICAg
IChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OnBhc3NXaGVlbEV2ZW50VG9XaWRnZXQpOgorICAgICAg
ICAqIHBhZ2UvbWFjL0V2ZW50SGFuZGxlck1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50
SGFuZGxlcjo6cGFzc1doZWVsRXZlbnRUb1dpZGdldCk6CisgICAgICAgICogcGFnZS9zY3JvbGxp
bmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5n
Q29vcmRpbmF0b3I6OmNvbXB1dGVOb25GYXN0U2Nyb2xsYWJsZVJlZ2lvbik6CisgICAgICAgICog
cGFnZS93aW4vRXZlbnRIYW5kbGVyV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFu
ZGxlcjo6cGFzc1doZWVsRXZlbnRUb1dpZGdldCk6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xs
Vmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3OjpyZW1vdmVDaGlsZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3OjpzZXRIYXNIb3Jpem9udGFsU2Nyb2xsYmFyKToK
KyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFZpZXc6OnNldEhhc1ZlcnRpY2FsU2Nyb2xsYmFyKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxWaWV3Lmg6CisgICAgICAgICogcGxhdGZvcm0vU2Ny
b2xsYmFyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhcjo6cm9vdCk6CisgICAgICAg
IFVuaW5saW5lIGFzIHJvb3QoKSBiZWNhdXNlIFdpZGdldDo6cm9vdCgpIHJldHVybnMgYSBGcmFt
ZVZpZXcgbm93IGFuZAorICAgICAgICBpdCBpcyBpbXBvc3NpYmxlIHRvIGluY2x1ZGUgRnJhbWVW
aWV3LmggaW4gU2Nyb2xsYmFyLmggd2l0aG91dCBjYXVzaW5nCisgICAgICAgIGEgY3ljbGUuCisK
KyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxiYXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9XaWRn
ZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2lkZ2V0Ojpyb290KToKKyAgICAgICAgVXNlIHRp
Z2h0ZXIgdHlwaW5nIGFuZCByZXR1cm4gYSBGcmFtZVZpZXcgaW5zdGVhZCBvZiBhIFNjcm9sbFZp
ZXcuCisKKyAgICAgICAgKFdlYkNvcmU6OldpZGdldDo6cmVtb3ZlRnJvbVBhcmVudCk6CisgICAg
ICAgICogcGxhdGZvcm0vV2lkZ2V0Lmg6CisgICAgICAgICogcGxhdGZvcm0vZWZsL1dpZGdldEVm
bC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXaWRnZXQ6OnNldEN1cnNvcik6CisgICAgICAgICog
cGxhdGZvcm0vZ3RrL1BsYXRmb3JtU2NyZWVuR3RrLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
dGsvV2lkZ2V0R3RrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldpZGdldDo6c2V0Q3Vyc29yKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvUGxhdGZvcm1TY3JlZW5NYWMubW06CisgICAgICAgIChX
ZWJDb3JlOjpkaXNwbGF5RnJvbVdpZGdldCk6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1dpZGdl
dE1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OldpZGdldDo6c2V0Q3Vyc29yKToKKyAgICAgICAg
KiBwbGF0Zm9ybS93aW4vV2lkZ2V0V2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldpZGdldDo6
c2V0Q3Vyc29yKToKKyAgICAgICAgKiBwbHVnaW5zL1BsdWdpblZpZXdCYXNlLmg6CisgICAgICAg
ICogcGx1Z2lucy93aW4vUGx1Z2luVmlld1dpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbHVn
aW5WaWV3Ojp1cGRhdGVQbHVnaW5XaWRnZXQpOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luVmll
dzo6cGFpbnRJbnRvVHJhbnNmb3JtZWRDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdp
blZpZXc6OnBhaW50V2luZG93ZWRQbHVnaW5JbnRvQ29udGV4dCk6CisgICAgICAgIChXZWJDb3Jl
OjpQbHVnaW5WaWV3OjpwYWludCk6CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5WaWV3OjpoYW5k
bGVNb3VzZUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpblZpZXc6OnNldE5QV2luZG93
UmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5WaWV3OjpzbmFwc2hvdCk6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlckVtYmVkZGVkT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckVtYmVkZGVkT2JqZWN0OjphbGxvd3NBY2NlbGVyYXRlZENvbXBvc2l0aW5nKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckVtYmVkZGVkT2JqZWN0Ojpub2RlQXRQb2ludCk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJFbWJlZGRlZE9iamVjdDo6c2Nyb2xsKToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyRnJhbWVCYXNlLmg6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGcmFt
ZUJhc2U6OmNoaWxkVmlldyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2lu
Zy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckJhY2tpbmc6OmxheWVyV2lsbEJl
RGVzdHJveWVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQmFja2luZzo6dXBkYXRl
Q29uZmlndXJhdGlvbik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRv
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckNvbXBvc2l0b3I6OnNob3VsZFBy
b3BhZ2F0ZUNvbXBvc2l0aW5nVG9FbmNsb3NpbmdGcmFtZSk6CisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlclRyZWVBc1RleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6d3JpdGUpOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJXaWRnZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2lkZ2V0
SGllcmFyY2h5VXBkYXRlc1N1c3BlbnNpb25TY29wZTo6bW92ZVdpZGdldHMpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyV2lkZ2V0OjpwYWludENvbnRlbnRzKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlcldpZGdldDo6c2V0T3ZlcmxhcFRlc3RSZXN1bHQpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyV2lkZ2V0Ojp1cGRhdGVXaWRnZXRQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJXaWRnZXQ6Om5vZGVBdFBvaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlcldpZGdl
dDo6ZW1iZWRkZWRDb250ZW50Qm94KToKKwogMjAxNC0xMC0wOCAgTXlsZXMgQy4gTWF4ZmllbGQg
IDxtbWF4ZmllbGRAYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQgYnVpbGQgZml4IGFm
dGVyIHIxNzQ0ODAuIEJyb2tlIGlPUyBidWlsZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
bWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwppbmRleCAxOGIyMmUx
NDBlNTYwYjRiMDc1MGY5YmNlMWFlMDNiYjcxN2NkMTliLi43YWI1NWQ3YTM0ZGIwM2Y0ZjdkYTQ5
Y2Y5Mjc3N2FhNTQ2ZmQ2MDM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIw
MTQtMTAtMDggIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBVc2Ug
aXM8PigpIC8gZG93bmNhc3Q8PigpIGZvciBXaWRnZXQgc3ViY2xhc3NlcworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM3NTQ5CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXNlIGlzPD4oKSAvIGRvd25jYXN0
PD4oKSBmb3IgV2lkZ2V0IHN1YmNsYXNzZXMgYW5kIGNsZWFuIHVwIHRoZQorICAgICAgICBzdXJy
b3VuZGluZyBjb2RlLgorCisgICAgICAgICogV2ViVmlldy9XZWJSZW5kZXJOb2RlLm1tOgorICAg
ICAgICAoY29weVJlbmRlck5vZGUpOgorICAgICAgICAqIFdlYlZpZXcvV2ViVmlldy5tbToKKyAg
ICAgICAgKC1bV2ViVmlldyBfYWRkU2Nyb2xsZXJEYXNoYm9hcmRSZWdpb25zRm9yRnJhbWVWaWV3
OmRhc2hib2FyZFJlZ2lvbnM6XSk6CisKIDIwMTQtMTAtMDcgIENocmlzdG9waGUgRHVtZXogIDxj
ZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFVzZSBpczw+KCkgLyBkb3duY2FzdDw+KCkgZm9y
IFJlbmRlclRleHQgLyBSZW5kZXJUZXh0RnJhZ21lbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvd2luL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwppbmRleCA3N2Rj
YTk4NWYxZTEwYTNkMGMwZmQwMWZmOTZhNzI3MDVlZWYzNTI4Li5lYWY2YTFkYzAxYzVhY2UwZmQx
OTY1NzcxYzhlN2NhNGZlMTA3MDQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAK
KzIwMTQtMTAtMDggIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBV
c2UgaXM8PigpIC8gZG93bmNhc3Q8PigpIGZvciBXaWRnZXQgc3ViY2xhc3NlcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM3NTQ5CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXNlIGlzPD4oKSAvIGRvd25j
YXN0PD4oKSBmb3IgV2lkZ2V0IHN1YmNsYXNzZXMgYW5kIGNsZWFuIHVwIHRoZQorICAgICAgICBz
dXJyb3VuZGluZyBjb2RlLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRW1iZWRkZWRXaWRn
ZXQuY3BwOgorICAgICAgICAoRW1iZWRkZWRXaWRnZXQ6OmZyYW1lUmVjdHNDaGFuZ2VkKToKKwog
MjAxNC0xMC0wOCAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KIAogICAgICAg
ICBbV2luXSBSZXNvbHZlIHZhcmlvdXMgc3RhdGljIGFuYWx5emVyIHdhcm5pbmdzIGluIFdlYktp
dC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZwppbmRleCA2OTdkMWNlZjhmZjNiYjcxNWE0ZmMxZmM2OWMxOTkxMWU5ZjNmMGQ1
Li4wYzMxMDRiZWYzMjI4MzQ2MjliZmYyYTVjOWY3N2RiNGJkNmM0MTVlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTYgQEAKKzIwMTQtMTAtMDggIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNv
bT4KKworICAgICAgICBVc2UgaXM8PigpIC8gZG93bmNhc3Q8PigpIGZvciBXaWRnZXQgc3ViY2xh
c3NlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM3
NTQ5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXNl
IGlzPD4oKSAvIGRvd25jYXN0PD4oKSBmb3IgV2lkZ2V0IHN1YmNsYXNzZXMgYW5kIGNsZWFuIHVw
IHRoZQorICAgICAgICBzdXJyb3VuZGluZyBjb2RlLgorCisgICAgICAgICogU2hhcmVkL1dlYlJl
bmRlck9iamVjdC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlJlbmRlck9iamVjdDo6V2ViUmVu
ZGVyT2JqZWN0KToKKwogMjAxNC0xMC0wOCAgQ2hyaXN0b3BoZSBEdW1leiAgPGNkdW1lekBhcHBs
ZS5jb20+CiAKICAgICAgICAgVXNlIGlzPD4oKSAvIGRvd25jYXN0PD4oKSBmb3IgUmVuZGVyQmxv
Y2sgb2JqZWN0cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9i
amVjdENhY2hlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNo
ZS5jcHAKaW5kZXggNTdlYTA2ZmE5Mjc0N2I2NGNlOTZkMjEyYTEyOTQxMTQ0NzFhZjBiNS4uOWYw
NDg0M2RhNTM4MTdlMjBkM2Q4NTNlMzA3YzVlY2M1OWUwNzUzNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwCkBAIC0zNDIsMTEgKzM0MiwxMSBA
QCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBWE9iamVjdENhY2hlOjpnZXRPckNyZWF0ZShXaWRnZXQq
IHdpZGdldCkKICAgICBpZiAoQWNjZXNzaWJpbGl0eU9iamVjdCogb2JqID0gZ2V0KHdpZGdldCkp
CiAgICAgICAgIHJldHVybiBvYmo7CiAgICAgCi0gICAgUmVmUHRyPEFjY2Vzc2liaWxpdHlPYmpl
Y3Q+IG5ld09iaiA9IG51bGxwdHI7Ci0gICAgaWYgKHdpZGdldC0+aXNGcmFtZVZpZXcoKSkKLSAg
ICAgICAgbmV3T2JqID0gQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXc6OmNyZWF0ZSh0b1Njcm9sbFZp
ZXcod2lkZ2V0KSk7Ci0gICAgZWxzZSBpZiAod2lkZ2V0LT5pc1Njcm9sbGJhcigpKQotICAgICAg
ICBuZXdPYmogPSBBY2Nlc3NpYmlsaXR5U2Nyb2xsYmFyOjpjcmVhdGUodG9TY3JvbGxiYXIod2lk
Z2V0KSk7CisgICAgUmVmUHRyPEFjY2Vzc2liaWxpdHlPYmplY3Q+IG5ld09iajsKKyAgICBpZiAo
aXM8U2Nyb2xsVmlldz4oKndpZGdldCkpCisgICAgICAgIG5ld09iaiA9IEFjY2Vzc2liaWxpdHlT
Y3JvbGxWaWV3OjpjcmVhdGUoZG93bmNhc3Q8U2Nyb2xsVmlldz4od2lkZ2V0KSk7CisgICAgZWxz
ZSBpZiAoaXM8U2Nyb2xsYmFyPigqd2lkZ2V0KSkKKyAgICAgICAgbmV3T2JqID0gQWNjZXNzaWJp
bGl0eVNjcm9sbGJhcjo6Y3JlYXRlKGRvd25jYXN0PFNjcm9sbGJhcj4od2lkZ2V0KSk7CiAKICAg
ICAvLyBXaWxsIGNyYXNoIGxhdGVyIGlmIHdlIGhhdmUgdHdvIG9iamVjdHMgZm9yIHRoZSBzYW1l
IHdpZGdldC4KICAgICBBU1NFUlQoIWdldCh3aWRnZXQpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwCmluZGV4IGI2OTVmM2Zi
MzYxOTVmNWVmOTQzMDQyNjQ1MWYwZTY3NWJkMWIxZTcuLjJiMTkxOWE2YjVjMzUwNWQzMDM4ZDJi
NzY5M2E3MmIyZGQ4ZTI3MmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcApAQCAtNDg0LDE0ICs0ODQsMTQgQEAgc3RhdGlj
IHZvaWQgYXBwZW5kQWNjZXNzaWJpbGl0eU9iamVjdChBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmpl
Y3QsIEFjY2Vzc2liaWxpdHkKICAgICAvLyBGaW5kIHRoZSBuZXh0IGRlc2NlbmRhbnQgb2YgdGhp
cyBhdHRhY2htZW50IG9iamVjdCBzbyBzZWFyY2ggY2FuIGNvbnRpbnVlIHRocm91Z2ggZnJhbWVz
LgogICAgIGlmIChvYmplY3QtPmlzQXR0YWNobWVudCgpKSB7CiAgICAgICAgIFdpZGdldCogd2lk
Z2V0ID0gb2JqZWN0LT53aWRnZXRGb3JBdHRhY2htZW50VmlldygpOwotICAgICAgICBpZiAoIXdp
ZGdldCB8fCAhd2lkZ2V0LT5pc0ZyYW1lVmlldygpKQorICAgICAgICBpZiAoIWlzPEZyYW1lVmll
dz4od2lkZ2V0KSkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgCi0gICAgICAgIERvY3Vt
ZW50KiBkb2MgPSB0b0ZyYW1lVmlldyh3aWRnZXQpLT5mcmFtZSgpLmRvY3VtZW50KCk7Ci0gICAg
ICAgIGlmICghZG9jIHx8ICFkb2MtPmhhc0xpdmluZ1JlbmRlclRyZWUoKSkKKyAgICAgICAgRG9j
dW1lbnQqIGRvY3VtZW50ID0gZG93bmNhc3Q8RnJhbWVWaWV3Pigqd2lkZ2V0KS5mcmFtZSgpLmRv
Y3VtZW50KCk7CisgICAgICAgIGlmICghZG9jdW1lbnQgfHwgIWRvY3VtZW50LT5oYXNMaXZpbmdS
ZW5kZXJUcmVlKCkpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIAotICAgICAgICBvYmpl
Y3QgPSBvYmplY3QtPmF4T2JqZWN0Q2FjaGUoKS0+Z2V0T3JDcmVhdGUoZG9jKTsKKyAgICAgICAg
b2JqZWN0ID0gb2JqZWN0LT5heE9iamVjdENhY2hlKCktPmdldE9yQ3JlYXRlKGRvY3VtZW50KTsK
ICAgICB9CiAKICAgICBpZiAob2JqZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAKaW5kZXggZjU3Njkx
NDVhNTIwODNhOTI5MjAxZjQwZmI0ZmI1Y2EyYjdiMjIxMy4uMTI4MGIwMDQzMWEwYzk4YWE1OGYy
NWZjNjZlZDMxMjk4MmNjOTE1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCkBAIC0yMDA3LDEyICsy
MDA3LDEyIEBAIFZpc2libGVQb3NpdGlvbiBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojp2aXNp
YmxlUG9zaXRpb25Gb3JQb2ludChjb25zdCBJbnRQb2luCiAKICAgICAgICAgLy8gZGVzY2VuZCBp
bnRvIHdpZGdldCAoRlJBTUUsIElGUkFNRSwgT0JKRUNULi4uKQogICAgICAgICBXaWRnZXQqIHdp
ZGdldCA9IHRvUmVuZGVyV2lkZ2V0KHJlbmRlcmVyKS0+d2lkZ2V0KCk7Ci0gICAgICAgIGlmICgh
d2lkZ2V0IHx8ICF3aWRnZXQtPmlzRnJhbWVWaWV3KCkpCisgICAgICAgIGlmICghaXM8RnJhbWVW
aWV3Pih3aWRnZXQpKQogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIEZyYW1lJiBmcmFtZSA9
IHRvRnJhbWVWaWV3KHdpZGdldCktPmZyYW1lKCk7CisgICAgICAgIEZyYW1lJiBmcmFtZSA9IGRv
d25jYXN0PEZyYW1lVmlldz4oKndpZGdldCkuZnJhbWUoKTsKICAgICAgICAgcmVuZGVyVmlldyA9
IGZyYW1lLmRvY3VtZW50KCktPnJlbmRlclZpZXcoKTsKICNpZiBQTEFURk9STShDT0NPQSkKLSAg
ICAgICAgZnJhbWVWaWV3ID0gdG9GcmFtZVZpZXcod2lkZ2V0KTsKKyAgICAgICAgZnJhbWVWaWV3
ID0gZG93bmNhc3Q8RnJhbWVWaWV3Pih3aWRnZXQpOwogI2VuZGlmCiAgICAgfQogICAgIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2Nyb2xs
Vmlldy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTY3Jv
bGxWaWV3LmNwcAppbmRleCA5ZjI0Yzk3ZmRiYmEyMTM5NDRkNDIwZmMzZmUxYjBkZjZjZDJhZjNi
Li42ZDJkYjIyNmZlZDM2ZTAxNDEzNDVlMWFkMGM5OTk1ZTNhMzIxNzA2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTY3JvbGxWaWV3LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTY3JvbGxWaWV3
LmNwcApAQCAtMTg5LDE1ICsxODksMTUgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldzo6
YWRkQ2hpbGRyZW4oKQogCiBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5U2Nyb2xs
Vmlldzo6d2ViQXJlYU9iamVjdCgpIGNvbnN0CiB7Ci0gICAgaWYgKCFtX3Njcm9sbFZpZXcgfHwg
IW1fc2Nyb2xsVmlldy0+aXNGcmFtZVZpZXcoKSkKKyAgICBpZiAoIWlzPEZyYW1lVmlldz4obV9z
Y3JvbGxWaWV3KSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgCi0gICAgRG9jdW1lbnQq
IGRvYyA9IHRvRnJhbWVWaWV3KG1fc2Nyb2xsVmlldyktPmZyYW1lKCkuZG9jdW1lbnQoKTsKLSAg
ICBpZiAoIWRvYyB8fCAhZG9jLT5oYXNMaXZpbmdSZW5kZXJUcmVlKCkpCisgICAgRG9jdW1lbnQq
IGRvY3VtZW50ID0gZG93bmNhc3Q8RnJhbWVWaWV3PigqbV9zY3JvbGxWaWV3KS5mcmFtZSgpLmRv
Y3VtZW50KCk7CisgICAgaWYgKCFkb2N1bWVudCB8fCAhZG9jdW1lbnQtPmhhc0xpdmluZ1JlbmRl
clRyZWUoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBpZiAoQVhPYmplY3RDYWNo
ZSogY2FjaGUgPSBheE9iamVjdENhY2hlKCkpCi0gICAgICAgIHJldHVybiBjYWNoZS0+Z2V0T3JD
cmVhdGUoZG9jKTsKKyAgICAgICAgcmV0dXJuIGNhY2hlLT5nZXRPckNyZWF0ZShkb2N1bWVudCk7
CiAgICAgCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CkBAIC0yMzEsMjIgKzIzMSwyMiBAQCBMYXlv
dXRSZWN0IEFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3OjplbGVtZW50UmVjdCgpIGNvbnN0CiAKIEZy
YW1lVmlldyogQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXc6OmRvY3VtZW50RnJhbWVWaWV3KCkgY29u
c3QKIHsKLSAgICBpZiAoIW1fc2Nyb2xsVmlldyB8fCAhbV9zY3JvbGxWaWV3LT5pc0ZyYW1lVmll
dygpKQorICAgIGlmICghaXM8RnJhbWVWaWV3PihtX3Njcm9sbFZpZXcpKQogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKICAgICAKLSAgICByZXR1cm4gdG9GcmFtZVZpZXcobV9zY3JvbGxWaWV3KTsK
KyAgICByZXR1cm4gZG93bmNhc3Q8RnJhbWVWaWV3PihtX3Njcm9sbFZpZXcpOwogfSAgICAKIAog
QWNjZXNzaWJpbGl0eU9iamVjdCogQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXc6OnBhcmVudE9iamVj
dCgpIGNvbnN0CiB7Ci0gICAgaWYgKCFtX3Njcm9sbFZpZXcgfHwgIW1fc2Nyb2xsVmlldy0+aXNG
cmFtZVZpZXcoKSkKKyAgICBpZiAoIWlzPEZyYW1lVmlldz4obV9zY3JvbGxWaWV3KSkKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBBWE9iamVjdENhY2hlKiBjYWNoZSA9IGF4T2JqZWN0
Q2FjaGUoKTsKICAgICBpZiAoIWNhY2hlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAg
IEhUTUxGcmFtZU93bmVyRWxlbWVudCogb3duZXIgPSB0b0ZyYW1lVmlldyhtX3Njcm9sbFZpZXcp
LT5mcmFtZSgpLm93bmVyRWxlbWVudCgpOworICAgIEhUTUxGcmFtZU93bmVyRWxlbWVudCogb3du
ZXIgPSBkb3duY2FzdDxGcmFtZVZpZXc+KCptX3Njcm9sbFZpZXcpLmZyYW1lKCkub3duZXJFbGVt
ZW50KCk7CiAgICAgaWYgKG93bmVyICYmIG93bmVyLT5yZW5kZXJlcigpKQogICAgICAgICByZXR1
cm4gY2FjaGUtPmdldE9yQ3JlYXRlKG93bmVyKTsKIApAQCAtMjU1LDE0ICsyNTUsMTQgQEAgQWNj
ZXNzaWJpbGl0eU9iamVjdCogQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXc6OnBhcmVudE9iamVjdCgp
IGNvbnN0CiAgICAgCiBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5U2Nyb2xsVmll
dzo6cGFyZW50T2JqZWN0SWZFeGlzdHMoKSBjb25zdAogewotICAgIGlmICghbV9zY3JvbGxWaWV3
IHx8ICFtX3Njcm9sbFZpZXctPmlzRnJhbWVWaWV3KCkpCisgICAgaWYgKCFpczxGcmFtZVZpZXc+
KG1fc2Nyb2xsVmlldykpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIAogICAgIEFYT2Jq
ZWN0Q2FjaGUqIGNhY2hlID0gYXhPYmplY3RDYWNoZSgpOwogICAgIGlmICghY2FjaGUpCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogCi0gICAgSFRNTEZyYW1lT3duZXJFbGVtZW50KiBvd25lciA9
IHRvRnJhbWVWaWV3KG1fc2Nyb2xsVmlldyktPmZyYW1lKCkub3duZXJFbGVtZW50KCk7CisgICAg
SFRNTEZyYW1lT3duZXJFbGVtZW50KiBvd25lciA9IGRvd25jYXN0PEZyYW1lVmlldz4obV9zY3Jv
bGxWaWV3KS0+ZnJhbWUoKS5vd25lckVsZW1lbnQoKTsKICAgICBpZiAob3duZXIgJiYgb3duZXIt
PnJlbmRlcmVyKCkpCiAgICAgICAgIHJldHVybiBjYWNoZS0+Z2V0KG93bmVyKTsKICAgICAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUGx1Z2luRWxlbWVudEZ1bmN0
aW9ucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1BsdWdpbkVsZW1lbnRGdW5j
dGlvbnMuY3BwCmluZGV4IDgxYWVlOWQwODkwMTY3OTRmMTg2MzdkZmM2ZTFkYTM3NzQ2YTJiYjIu
LmM2ZjYxZWJiNTQzMWI3MDQ2OWM0ZDdmMGRiNjViNGRjODRkYTkwY2EgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUGx1Z2luRWxlbWVudEZ1bmN0aW9ucy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNQbHVnaW5FbGVtZW50RnVuY3Rpb25zLmNw
cApAQCAtNDksMTQgKzQ5LDEwIEBAIEluc3RhbmNlKiBwbHVnaW5JbnN0YW5jZShIVE1MRWxlbWVu
dCYgZWxlbWVudCkKIHN0YXRpYyBKU09iamVjdCogcGx1Z2luU2NyaXB0T2JqZWN0RnJvbVBsdWdp
blZpZXdCYXNlKEhUTUxQbHVnSW5FbGVtZW50JiBwbHVnaW5FbGVtZW50LCBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0KQogewogICAgIFdpZGdldCogcGx1Z2luV2lkZ2V0ID0gcGx1Z2luRWxl
bWVudC5wbHVnaW5XaWRnZXQoKTsKLSAgICBpZiAoIXBsdWdpbldpZGdldCkKLSAgICAgICAgcmV0
dXJuIG51bGxwdHI7Ci0gICAgCi0gICAgaWYgKCFwbHVnaW5XaWRnZXQtPmlzUGx1Z2luVmlld0Jh
c2UoKSkKKyAgICBpZiAoIWlzPFBsdWdpblZpZXdCYXNlPihwbHVnaW5XaWRnZXQpKQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKIAotICAgIFBsdWdpblZpZXdCYXNlKiBwbHVnaW5WaWV3QmFzZSA9
IHRvUGx1Z2luVmlld0Jhc2UocGx1Z2luV2lkZ2V0KTsKLSAgICByZXR1cm4gcGx1Z2luVmlld0Jh
c2UtPnNjcmlwdE9iamVjdChnbG9iYWxPYmplY3QpOworICAgIHJldHVybiBkb3duY2FzdDxQbHVn
aW5WaWV3QmFzZT4oKnBsdWdpbldpZGdldCkuc2NyaXB0T2JqZWN0KGdsb2JhbE9iamVjdCk7CiB9
CiAKIHN0YXRpYyBKU09iamVjdCogcGx1Z2luU2NyaXB0T2JqZWN0RnJvbVBsdWdpblZpZXdCYXNl
KEpTSFRNTEVsZW1lbnQqIGpzSFRNTEVsZW1lbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9i
amVjdEVsZW1lbnQuY3BwCmluZGV4IDY4OGI0NTBhMzgzNDY3ZjA5NjJiYjExZTQ3YTkzYmU2OTg5
NmYxYWIuLjdkNTY1M2YxZjg5OWFhNDJhMmVhYmUwYWY2NzZhMjAzOTg1NjAzOWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuY3BwCkBAIC01MDAsMTAgKzUwMCwxMCBA
QCBib29sIEhUTUxPYmplY3RFbGVtZW50OjphcHBlbmRGb3JtRGF0YShGb3JtRGF0YUxpc3QmIGVu
Y29kaW5nLCBib29sKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBXaWRnZXQqIHdpZGdl
dCA9IHBsdWdpbldpZGdldCgpOwotICAgIGlmICghd2lkZ2V0IHx8ICF3aWRnZXQtPmlzUGx1Z2lu
Vmlld0Jhc2UoKSkKKyAgICBpZiAoIWlzPFBsdWdpblZpZXdCYXNlPih3aWRnZXQpKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgU3RyaW5nIHZhbHVlOwotICAgIGlmICghdG9QbHVnaW5WaWV3
QmFzZSh3aWRnZXQpLT5nZXRGb3JtVmFsdWUodmFsdWUpKQorICAgIGlmICghZG93bmNhc3Q8UGx1
Z2luVmlld0Jhc2U+KCp3aWRnZXQpLmdldEZvcm1WYWx1ZSh2YWx1ZSkpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICBlbmNvZGluZy5hcHBlbmREYXRhKG5hbWUoKSwgdmFsdWUpOwogICAgIHJl
dHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luRWxl
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5FbGVtZW50LmNwcAppbmRl
eCBmMzdiZTBjZTIyNDg2MWQ5NjQ5NGIxZjc2NTk4ZjlkMTdhYzBjMjE1Li44MGJjNzU4OWQ1MDEw
Y2EyZTRkY2M4NjE1YzI5ODkzMzQ0Njg3ZDRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxQbHVnSW5FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQ
bHVnSW5FbGVtZW50LmNwcApAQCAtOTEsNyArOTEsNyBAQCBIVE1MUGx1Z0luRWxlbWVudDo6fkhU
TUxQbHVnSW5FbGVtZW50KCkKIAogYm9vbCBIVE1MUGx1Z0luRWxlbWVudDo6Y2FuUHJvY2Vzc0Ry
YWcoKSBjb25zdAogewotICAgIGNvbnN0IFBsdWdpblZpZXdCYXNlKiBwbHVnaW4gPSBwbHVnaW5X
aWRnZXQoKSAmJiBwbHVnaW5XaWRnZXQoKS0+aXNQbHVnaW5WaWV3QmFzZSgpID8gdG9QbHVnaW5W
aWV3QmFzZShwbHVnaW5XaWRnZXQoKSkgOiBudWxscHRyOworICAgIGNvbnN0IFBsdWdpblZpZXdC
YXNlKiBwbHVnaW4gPSBpczxQbHVnaW5WaWV3QmFzZT4ocGx1Z2luV2lkZ2V0KCkpID8gZG93bmNh
c3Q8UGx1Z2luVmlld0Jhc2U+KHBsdWdpbldpZGdldCgpKSA6IG51bGxwdHI7CiAgICAgcmV0dXJu
IHBsdWdpbiA/IHBsdWdpbi0+Y2FuUHJvY2Vzc0RyYWcoKSA6IGZhbHNlOwogfQogCkBAIC0yNDIs
MTAgKzI0MiwxMCBAQCBib29sIEhUTUxQbHVnSW5FbGVtZW50Ojppc0tleWJvYXJkRm9jdXNhYmxl
KEtleWJvYXJkRXZlbnQqKSBjb25zdAogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBXaWRn
ZXQqIHdpZGdldCA9IHBsdWdpbldpZGdldCgpOwotICAgIGlmICghd2lkZ2V0IHx8ICF3aWRnZXQt
PmlzUGx1Z2luVmlld0Jhc2UoKSkKKyAgICBpZiAoIWlzPFBsdWdpblZpZXdCYXNlPih3aWRnZXQp
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICByZXR1cm4gdG9QbHVnaW5WaWV3QmFzZSh3
aWRnZXQpLT5zdXBwb3J0c0tleWJvYXJkRm9jdXMoKTsKKyAgICByZXR1cm4gZG93bmNhc3Q8UGx1
Z2luVmlld0Jhc2U+KCp3aWRnZXQpLnN1cHBvcnRzS2V5Ym9hcmRGb2N1cygpOwogfQogCiBib29s
IEhUTUxQbHVnSW5FbGVtZW50Ojppc1BsdWdpbkVsZW1lbnQoKSBjb25zdApAQCAtMjU3LDE3ICsy
NTcsMTcgQEAgYm9vbCBIVE1MUGx1Z0luRWxlbWVudDo6aXNVc2VyT2JzZXJ2YWJsZSgpIGNvbnN0
CiB7CiAgICAgLy8gTm8gd2lkZ2V0IC0gY2FuJ3QgYmUgYW55dGhpbmcgdG8gc2VlIG9yIGhlYXIg
aGVyZS4KICAgICBXaWRnZXQqIHdpZGdldCA9IHBsdWdpbldpZGdldChQbHVnaW5Mb2FkaW5nUG9s
aWN5OjpEb05vdExvYWQpOwotICAgIGlmICghd2lkZ2V0IHx8ICF3aWRnZXQtPmlzUGx1Z2luVmll
d0Jhc2UoKSkKKyAgICBpZiAoIWlzPFBsdWdpblZpZXdCYXNlPih3aWRnZXQpKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKLSAgICBQbHVnaW5WaWV3QmFzZSogcGx1Z2luVmlldyA9IHRvUGx1Z2lu
Vmlld0Jhc2Uod2lkZ2V0KTsKKyAgICBQbHVnaW5WaWV3QmFzZSYgcGx1Z2luVmlldyA9IGRvd25j
YXN0PFBsdWdpblZpZXdCYXNlPigqd2lkZ2V0KTsKIAogICAgIC8vIElmIGF1ZGlvIGlzIHBsYXlp
bmcgKG9yIG1pZ2h0IGJlKSB0aGVuIHRoZSBwbHVnaW4gaXMgZGV0ZWN0YWJsZS4KLSAgICBpZiAo
cGx1Z2luVmlldy0+YXVkaW9IYXJkd2FyZUFjdGl2aXR5KCkgIT0gQXVkaW9IYXJkd2FyZUFjdGl2
aXR5VHlwZTo6SXNJbmFjdGl2ZSkKKyAgICBpZiAocGx1Z2luVmlldy5hdWRpb0hhcmR3YXJlQWN0
aXZpdHkoKSAhPSBBdWRpb0hhcmR3YXJlQWN0aXZpdHlUeXBlOjpJc0luYWN0aXZlKQogICAgICAg
ICByZXR1cm4gdHJ1ZTsKIAogICAgIC8vIElmIHRoZSBwbHVnaW4gaXMgdmlzaWJsZSBhbmQgbm90
IHZhbmlzaGluZ2x5IHNtYWxsIGluIGVpdGhlciBkaW1lbnNpb24gaXQgaXMgZGV0ZWN0YWJsZS4K
LSAgICByZXR1cm4gcGx1Z2luVmlldy0+aXNWaXNpYmxlKCkgJiYgd2lkZ2V0LT53aWR0aCgpID4g
MiAmJiB3aWRnZXQtPmhlaWdodCgpID4gMjsKKyAgICByZXR1cm4gcGx1Z2luVmlldy5pc1Zpc2li
bGUoKSAmJiBwbHVnaW5WaWV3LndpZHRoKCkgPiAyICYmIHBsdWdpblZpZXcuaGVpZ2h0KCkgPiAy
OwogfQogCiBib29sIEhUTUxQbHVnSW5FbGVtZW50OjpzdXBwb3J0c0ZvY3VzKCkgY29uc3QKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuY3BwCmluZGV4IDA2
MzYxMmZkZWU2NTQ2MzM2ZWU3NGQ2MzU4YzJmYjY3MDBhZWMyMTkuLmM3YjdmMjJjMzVmNmY3ZmFm
ODhkNDA2YzExM2FhNWNlMzRhNjdlMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFBsdWdJbkltYWdlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
UGx1Z0luSW1hZ2VFbGVtZW50LmNwcApAQCAtNTUxLDggKzU1MSw4IEBAIHZvaWQgSFRNTFBsdWdJ
bkltYWdlRWxlbWVudDo6Y2hlY2tTaXplQ2hhbmdlRm9yU25hcHNob3R0aW5nKCkKICAgICBzZXRE
aXNwbGF5U3RhdGUoV2FpdGluZ0ZvclNuYXBzaG90KTsKICAgICBtX3NuYXBzaG90RGVjaXNpb24g
PSBTbmFwc2hvdHRlZDsKICAgICBXaWRnZXQqIHdpZGdldCA9IHBsdWdpbldpZGdldCgpOwotICAg
IGlmICh3aWRnZXQgJiYgd2lkZ2V0LT5pc1BsdWdpblZpZXdCYXNlKCkpCi0gICAgICAgIHRvUGx1
Z2luVmlld0Jhc2Uod2lkZ2V0KS0+YmVnaW5TbmFwc2hvdHRpbmdSdW5uaW5nUGx1Z2luKCk7Cisg
ICAgaWYgKGlzPFBsdWdpblZpZXdCYXNlPih3aWRnZXQpKQorICAgICAgICBkb3duY2FzdDxQbHVn
aW5WaWV3QmFzZT4oKndpZGdldCkuYmVnaW5TbmFwc2hvdHRpbmdSdW5uaW5nUGx1Z2luKCk7CiB9
CiAKIHN0YXRpYyBpbmxpbmUgYm9vbCBpczEwMFBlcmNlbnQoTGVuZ3RoIGxlbmd0aCkKQEAgLTcy
NSwxMSArNzI1LDExIEBAIHZvaWQgSFRNTFBsdWdJbkltYWdlRWxlbWVudDo6c3ViZnJhbWVMb2Fk
ZXJXaWxsQ3JlYXRlUGx1Z0luKGNvbnN0IFVSTCYgdXJsKQogICAgIHNldERpc3BsYXlTdGF0ZShX
YWl0aW5nRm9yU25hcHNob3QpOwogfQogCi12b2lkIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OnN1
YmZyYW1lTG9hZGVyRGlkQ3JlYXRlUGx1Z0luKGNvbnN0IFdpZGdldCogd2lkZ2V0KQordm9pZCBI
VE1MUGx1Z0luSW1hZ2VFbGVtZW50OjpzdWJmcmFtZUxvYWRlckRpZENyZWF0ZVBsdWdJbihjb25z
dCBXaWRnZXQmIHdpZGdldCkKIHsKICAgICBtX3BsdWdJbldhc0NyZWF0ZWQgPSB0cnVlOwogCi0g
ICAgaWYgKHdpZGdldC0+aXNQbHVnaW5WaWV3QmFzZSgpICYmIHRvUGx1Z2luVmlld0Jhc2Uod2lk
Z2V0KS0+c2hvdWxkQWx3YXlzQXV0b1N0YXJ0KCkpIHsKKyAgICBpZiAoaXM8UGx1Z2luVmlld0Jh
c2U+KHdpZGdldCkgJiYgZG93bmNhc3Q8UGx1Z2luVmlld0Jhc2U+KHdpZGdldCkuc2hvdWxkQWx3
YXlzQXV0b1N0YXJ0KCkpIHsKICAgICAgICAgTE9HKFBsdWdpbnMsICIlcCBQbHVnLWluIHNob3Vs
ZCBhdXRvLXN0YXJ0LCBzZXQgdG8gcGxheSIsIHRoaXMpOwogICAgICAgICBtX3NuYXBzaG90RGVj
aXNpb24gPSBOZXZlclNuYXBzaG90OwogICAgICAgICBzZXREaXNwbGF5U3RhdGUoUGxheWluZyk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5oCmluZGV4IDg2
ZGNjODY5MjhlYWE0NjZlMTIxYmM5Njc1NWEzMzQzMzAwMWE2Y2MuLjNlZWY0YzYwYmQzODU1ZmQ0
NTg1OWZlOTQzNWQzMTk0ODZhYmVlNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFBsdWdJbkltYWdlRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBs
dWdJbkltYWdlRWxlbWVudC5oCkBAIC03NCw3ICs3NCw3IEBAIHB1YmxpYzoKIAogICAgIC8vIFBs
dWctaW4gVVJMIG1pZ2h0IG5vdCBiZSB0aGUgc2FtZSBhcyB1cmwoKSB3aXRoIG92ZXJyaWRpbmcg
cGFyYW1ldGVycy4KICAgICB2b2lkIHN1YmZyYW1lTG9hZGVyV2lsbENyZWF0ZVBsdWdJbihjb25z
dCBVUkwmIHBsdWdJblVSTCk7Ci0gICAgdm9pZCBzdWJmcmFtZUxvYWRlckRpZENyZWF0ZVBsdWdJ
bihjb25zdCBXaWRnZXQqKTsKKyAgICB2b2lkIHN1YmZyYW1lTG9hZGVyRGlkQ3JlYXRlUGx1Z0lu
KGNvbnN0IFdpZGdldCYpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRJc1ByaW1hcnlT
bmFwc2hvdHRlZFBsdWdJbihib29sKTsKICAgICBib29sIHBhcnRPZlNuYXBzaG90T3ZlcmxheShO
b2RlKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3ViZnJhbWVMb2FkZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YmZyYW1lTG9hZGVyLmNwcAppbmRleCA3ZWU1
NDhmZDNjOWQ1M2YxM2YwNGIzM2IyNTAzMjE3YTY0MDFjODk4Li44YTE2MTQyYTQ0MDg1ZmJiMzQz
NjIyNzc3N2NhYTYzZDI4YmRjOTRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
U3ViZnJhbWVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJmcmFtZUxv
YWRlci5jcHAKQEAgLTQwOSw3ICs0MDksNyBAQCBib29sIFN1YmZyYW1lTG9hZGVyOjpsb2FkUGx1
Z2luKEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQmIHBsdWdpbkVsZW1lbnQsIGNvbnN0IFVSTAogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgcGx1Z2luRWxlbWVudC5zdWJmcmFtZUxv
YWRlckRpZENyZWF0ZVBsdWdJbih3aWRnZXQuZ2V0KCkpOworICAgIHBsdWdpbkVsZW1lbnQuc3Vi
ZnJhbWVMb2FkZXJEaWRDcmVhdGVQbHVnSW4oKndpZGdldCk7CiAgICAgcmVuZGVyZXItPnNldFdp
ZGdldCh3aWRnZXQpOwogICAgIG1fY29udGFpbnNQbHVnaW5zID0gdHJ1ZTsKICAgICByZXR1cm4g
dHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKaW5kZXggYjc1N2U4YjQ5
MDY0MWFhNDEzYTdmN2E0MTFkMTg2NDNkM2U3MDlkNS4uZWYzOTRmYmI2YTkwNDExZjkyMDYxNjUx
MDNjZDg4YjZlZDhhNmEwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29u
dHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAK
QEAgLTM5MywxOSArMzkzLDE5IEBAIERyYWdTb3VyY2VBY3Rpb24gRHJhZ0NvbnRyb2xsZXI6OmRl
bGVnYXRlRHJhZ1NvdXJjZUFjdGlvbihjb25zdCBJbnRQb2ludCYgcm9vdFZpCiAKIERyYWdPcGVy
YXRpb24gRHJhZ0NvbnRyb2xsZXI6Om9wZXJhdGlvbkZvckxvYWQoRHJhZ0RhdGEmIGRyYWdEYXRh
KQogewotICAgIERvY3VtZW50KiBkb2MgPSBtX3BhZ2UubWFpbkZyYW1lKCkuZG9jdW1lbnRBdFBv
aW50KGRyYWdEYXRhLmNsaWVudFBvc2l0aW9uKCkpOworICAgIERvY3VtZW50KiBkb2N1bWVudCA9
IG1fcGFnZS5tYWluRnJhbWUoKS5kb2N1bWVudEF0UG9pbnQoZHJhZ0RhdGEuY2xpZW50UG9zaXRp
b24oKSk7CiAKICAgICBib29sIHBsdWdpbkRvY3VtZW50QWNjZXB0c0RyYWdzID0gZmFsc2U7CiAK
LSAgICBpZiAoaXM8UGx1Z2luRG9jdW1lbnQ+KGRvYykpIHsKLSAgICAgICAgY29uc3QgV2lkZ2V0
KiB3aWRnZXQgPSBkb3duY2FzdDxQbHVnaW5Eb2N1bWVudD4oKmRvYykucGx1Z2luV2lkZ2V0KCk7
Ci0gICAgICAgIGNvbnN0IFBsdWdpblZpZXdCYXNlKiBwbHVnaW5WaWV3ID0gKHdpZGdldCAmJiB3
aWRnZXQtPmlzUGx1Z2luVmlld0Jhc2UoKSkgPyB0b1BsdWdpblZpZXdCYXNlKHdpZGdldCkgOiBu
dWxscHRyOworICAgIGlmIChpczxQbHVnaW5Eb2N1bWVudD4oZG9jdW1lbnQpKSB7CisgICAgICAg
IGNvbnN0IFdpZGdldCogd2lkZ2V0ID0gZG93bmNhc3Q8UGx1Z2luRG9jdW1lbnQ+KCpkb2N1bWVu
dCkucGx1Z2luV2lkZ2V0KCk7CisgICAgICAgIGNvbnN0IFBsdWdpblZpZXdCYXNlKiBwbHVnaW5W
aWV3ID0gaXM8UGx1Z2luVmlld0Jhc2U+KHdpZGdldCkgPyBkb3duY2FzdDxQbHVnaW5WaWV3QmFz
ZT4od2lkZ2V0KSA6IG51bGxwdHI7CiAKICAgICAgICAgaWYgKHBsdWdpblZpZXcpCiAgICAgICAg
ICAgICBwbHVnaW5Eb2N1bWVudEFjY2VwdHNEcmFncyA9IHBsdWdpblZpZXctPnNob3VsZEFsbG93
TmF2aWdhdGlvbkZyb21EcmFncygpOwogICAgIH0KIAotICAgIGlmIChkb2MgJiYgKG1fZGlkSW5p
dGlhdGVEcmFnIHx8IChkb2MtPmlzUGx1Z2luRG9jdW1lbnQoKSAmJiAhcGx1Z2luRG9jdW1lbnRB
Y2NlcHRzRHJhZ3MpIHx8IGRvYy0+aGFzRWRpdGFibGVTdHlsZSgpKSkKKyAgICBpZiAoZG9jdW1l
bnQgJiYgKG1fZGlkSW5pdGlhdGVEcmFnIHx8IChpczxQbHVnaW5Eb2N1bWVudD4oKmRvY3VtZW50
KSAmJiAhcGx1Z2luRG9jdW1lbnRBY2NlcHRzRHJhZ3MpIHx8IGRvY3VtZW50LT5oYXNFZGl0YWJs
ZVN0eWxlKCkpKQogICAgICAgICByZXR1cm4gRHJhZ09wZXJhdGlvbk5vbmU7CiAgICAgcmV0dXJu
IGRyYWdPcGVyYXRpb24oZHJhZ0RhdGEpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9FdmVudEhhbmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIu
Y3BwCmluZGV4IDdlNGY0ZmMwNTYxNzllZDg2MWYyZGU3ZDBjMTg0NTRmMTkyMTNmOTkuLjY2MWVh
NTlmMDAxMDcxMmM4NzYzNDY5YzZmOTMzYTllODRiMmY0YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2
ZW50SGFuZGxlci5jcHAKQEAgLTEyNTEsMTcgKzEyNTEsMTcgQEAgRnJhbWUqIEV2ZW50SGFuZGxl
cjo6c3ViZnJhbWVGb3JIaXRUZXN0UmVzdWx0KGNvbnN0IE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJl
c3VsdHMKIEZyYW1lKiBFdmVudEhhbmRsZXI6OnN1YmZyYW1lRm9yVGFyZ2V0Tm9kZShOb2RlKiBu
b2RlKQogewogICAgIGlmICghbm9kZSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVy
biBudWxscHRyOwogCiAgICAgYXV0byByZW5kZXJlciA9IG5vZGUtPnJlbmRlcmVyKCk7Ci0gICAg
aWYgKCFyZW5kZXJlciB8fCAhcmVuZGVyZXItPmlzV2lkZ2V0KCkpCi0gICAgICAgIHJldHVybiAw
OworICAgIGlmICghaXM8UmVuZGVyV2lkZ2V0PihyZW5kZXJlcikpCisgICAgICAgIHJldHVybiBu
dWxscHRyOwogCi0gICAgV2lkZ2V0KiB3aWRnZXQgPSB0b1JlbmRlcldpZGdldChyZW5kZXJlcikt
PndpZGdldCgpOwotICAgIGlmICghd2lkZ2V0IHx8ICF3aWRnZXQtPmlzRnJhbWVWaWV3KCkpCi0g
ICAgICAgIHJldHVybiAwOworICAgIFdpZGdldCogd2lkZ2V0ID0gZG93bmNhc3Q8UmVuZGVyV2lk
Z2V0PigqcmVuZGVyZXIpLndpZGdldCgpOworICAgIGlmICghaXM8RnJhbWVWaWV3Pih3aWRnZXQp
KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiAmdG9GcmFtZVZpZXcod2lk
Z2V0KS0+ZnJhbWUoKTsKKyAgICByZXR1cm4gJmRvd25jYXN0PEZyYW1lVmlldz4oKndpZGdldCku
ZnJhbWUoKTsKIH0KIAogI2lmIEVOQUJMRShDVVJTT1JfU1VQUE9SVCkKQEAgLTI3MDQsOSArMjcw
NCw5IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVXaGVlbEV2ZW50KGNvbnN0IFBsYXRmb3Jt
V2hlZWxFdmVudCYgZXZlbnQpCiAgICAgaWYgKGVsZW1lbnQpIHsKICAgICAgICAgaWYgKGlzT3Zl
cldpZGdldCkgewogICAgICAgICAgICAgUmVuZGVyRWxlbWVudCogdGFyZ2V0ID0gZWxlbWVudC0+
cmVuZGVyZXIoKTsKLSAgICAgICAgICAgIGlmICh0YXJnZXQgJiYgdGFyZ2V0LT5pc1dpZGdldCgp
KSB7Ci0gICAgICAgICAgICAgICAgV2lkZ2V0KiB3aWRnZXQgPSB0b1JlbmRlcldpZGdldCh0YXJn
ZXQpLT53aWRnZXQoKTsKLSAgICAgICAgICAgICAgICBpZiAod2lkZ2V0ICYmIHBhc3NXaGVlbEV2
ZW50VG9XaWRnZXQoZXZlbnQsIHdpZGdldCkpIHsKKyAgICAgICAgICAgIGlmIChpczxSZW5kZXJX
aWRnZXQ+KHRhcmdldCkpIHsKKyAgICAgICAgICAgICAgICBXaWRnZXQqIHdpZGdldCA9IGRvd25j
YXN0PFJlbmRlcldpZGdldD4oKnRhcmdldCkud2lkZ2V0KCk7CisgICAgICAgICAgICAgICAgaWYg
KHdpZGdldCAmJiBwYXNzV2hlZWxFdmVudFRvV2lkZ2V0KGV2ZW50LCAqd2lkZ2V0KSkgewogICAg
ICAgICAgICAgICAgICAgICBtX2lzSGFuZGxpbmdXaGVlbEV2ZW50ID0gZmFsc2U7CiAgICAgICAg
ICAgICAgICAgICAgIGlmIChzY3JvbGxhYmxlQXJlYSkKICAgICAgICAgICAgICAgICAgICAgICAg
IHNjcm9sbGFibGVBcmVhLT5zZXRTY3JvbGxlZFByb2dyYW1tYXRpY2FsbHkoZmFsc2UpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmgKaW5kZXggMDA4NjM2M2QzYTYxMWFiNWNhMGRhZGFjYjYz
OGZjNDFiYjdiYTNjOS4uMzdlYTc1ZGE4ZGYzYTEzNDViODgzNTMyMTk0YzY4NmRkNTc5OTBlYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5oCkBAIC0zOTQsNyArMzk0LDcgQEAgcHJpdmF0
ZToKICAgICBib29sIHBhc3NXaWRnZXRNb3VzZURvd25FdmVudFRvV2lkZ2V0KFJlbmRlcldpZGdl
dCopOwogCiAgICAgYm9vbCBwYXNzTW91c2VEb3duRXZlbnRUb1dpZGdldChXaWRnZXQqKTsKLSAg
ICBib29sIHBhc3NXaGVlbEV2ZW50VG9XaWRnZXQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50Jiwg
V2lkZ2V0Kik7CisgICAgYm9vbCBwYXNzV2hlZWxFdmVudFRvV2lkZ2V0KGNvbnN0IFBsYXRmb3Jt
V2hlZWxFdmVudCYsIFdpZGdldCYpOwogCiAgICAgdm9pZCBkZWZhdWx0U3BhY2VFdmVudEhhbmRs
ZXIoS2V5Ym9hcmRFdmVudCopOwogICAgIHZvaWQgZGVmYXVsdEJhY2tzcGFjZUV2ZW50SGFuZGxl
cihLZXlib2FyZEV2ZW50Kik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1l
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCmluZGV4IDJlZmZlMWQwZDQzYTYz
OTIxZjhhYWYzZjQwY2ExYmVmNDI4ODEzYTUuLjhiOGY2M2NiZjU3Mzc2OTk1YWQxZjUzZjQ3YjRh
MWU5MTg0ZWMyM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCkBAIC03NTcsOCArNzU3LDcgQEAgRnJh
bWUqIEZyYW1lOjpmcmFtZUZvcldpZGdldChjb25zdCBXaWRnZXQqIHdpZGdldCkKIAogICAgIC8v
IEFzc3VtZSBhbGwgd2lkZ2V0cyBhcmUgZWl0aGVyIGEgRnJhbWVWaWV3IG9yIG93bmVkIGJ5IGEg
UmVuZGVyV2lkZ2V0LgogICAgIC8vIEZJWE1FOiBUaGF0IGFzc3VtcHRpb24gaXMgbm90IHJpZ2h0
IGZvciBzY3JvbGwgYmFycyEKLSAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTih3
aWRnZXQtPmlzRnJhbWVWaWV3KCkpOwotICAgIHJldHVybiAmdG9GcmFtZVZpZXcod2lkZ2V0KS0+
ZnJhbWUoKTsKKyAgICByZXR1cm4gJmRvd25jYXN0PEZyYW1lVmlldz4oKndpZGdldCkuZnJhbWUo
KTsKIH0KIAogdm9pZCBGcmFtZTo6Y2xlYXJUaW1lcnMoRnJhbWVWaWV3ICp2aWV3LCBEb2N1bWVu
dCAqZG9jdW1lbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKaW5kZXggYmU2YjYwMDBjNWEx
MTBjMzU1ODFlZDY2ZGNlZTNjNmRhOWI5YWMzMS4uYmU0MzViMWFkYWEzNGEyNGQ3M2RkZTllODYw
YmIzOWRhZjJiN2NjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcApAQCAtMzU2OCwxMSAr
MzU2OCwxMSBAQCBDb2xvciBGcmFtZVZpZXc6OmRvY3VtZW50QmFja2dyb3VuZENvbG9yKCkgY29u
c3QKIGJvb2wgRnJhbWVWaWV3OjpoYXNDdXN0b21TY3JvbGxiYXJzKCkgY29uc3QKIHsKICAgICBm
b3IgKGF1dG8mIHdpZGdldCA6IGNoaWxkcmVuKCkpIHsKLSAgICAgICAgaWYgKHdpZGdldC0+aXNG
cmFtZVZpZXcoKSkgewotICAgICAgICAgICAgaWYgKHRvRnJhbWVWaWV3KCp3aWRnZXQpLmhhc0N1
c3RvbVNjcm9sbGJhcnMoKSkKKyAgICAgICAgaWYgKGlzPEZyYW1lVmlldz4oKndpZGdldCkpIHsK
KyAgICAgICAgICAgIGlmIChkb3duY2FzdDxGcmFtZVZpZXc+KCp3aWRnZXQpLmhhc0N1c3RvbVNj
cm9sbGJhcnMoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfSBlbHNl
IGlmICh3aWRnZXQtPmlzU2Nyb2xsYmFyKCkpIHsKLSAgICAgICAgICAgIGlmICh0b1Njcm9sbGJh
cigqd2lkZ2V0KS5pc0N1c3RvbVNjcm9sbGJhcigpKQorICAgICAgICB9IGVsc2UgaWYgKGlzPFNj
cm9sbGJhcj4oKndpZGdldCkpIHsKKyAgICAgICAgICAgIGlmIChkb3duY2FzdDxTY3JvbGxiYXI+
KCp3aWRnZXQpLmlzQ3VzdG9tU2Nyb2xsYmFyKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgICAgIH0KICAgICB9CkBAIC0zOTA1LDggKzM5MDUsOCBAQCB2b2lkIEZyYW1lVmll
dzo6dXBkYXRlTGF5b3V0QW5kU3R5bGVJZk5lZWRlZFJlY3Vyc2l2ZSgpCiAgICAgVmVjdG9yPFJl
ZjxGcmFtZVZpZXc+LCAxNj4gY2hpbGRWaWV3czsKICAgICBjaGlsZFZpZXdzLnJlc2VydmVJbml0
aWFsQ2FwYWNpdHkoY2hpbGRyZW4oKS5zaXplKCkpOwogICAgIGZvciAoYXV0byYgd2lkZ2V0IDog
Y2hpbGRyZW4oKSkgewotICAgICAgICBpZiAod2lkZ2V0LT5pc0ZyYW1lVmlldygpKQotICAgICAg
ICAgICAgY2hpbGRWaWV3cy51bmNoZWNrZWRBcHBlbmQodG9GcmFtZVZpZXcoKndpZGdldCkpOwor
ICAgICAgICBpZiAoaXM8RnJhbWVWaWV3Pigqd2lkZ2V0KSkKKyAgICAgICAgICAgIGNoaWxkVmll
d3MudW5jaGVja2VkQXBwZW5kKGRvd25jYXN0PEZyYW1lVmlldz4oKndpZGdldCkpOwogICAgIH0K
IAogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBjaGlsZFZpZXdzLnNpemUoKTsgKytpKQpA
QCAtNDEwNCw4ICs0MTA0LDggQEAgSW50UG9pbnQgRnJhbWVWaWV3Ojpjb252ZXJ0RnJvbUNvbnRh
aW5pbmdWaWV3VG9SZW5kZXJlcihjb25zdCBSZW5kZXJFbGVtZW50KiByZW4KIEludFJlY3QgRnJh
bWVWaWV3Ojpjb252ZXJ0VG9Db250YWluaW5nVmlldyhjb25zdCBJbnRSZWN0JiBsb2NhbFJlY3Qp
IGNvbnN0CiB7CiAgICAgaWYgKGNvbnN0IFNjcm9sbFZpZXcqIHBhcmVudFNjcm9sbFZpZXcgPSBw
YXJlbnQoKSkgewotICAgICAgICBpZiAocGFyZW50U2Nyb2xsVmlldy0+aXNGcmFtZVZpZXcoKSkg
ewotICAgICAgICAgICAgY29uc3QgRnJhbWVWaWV3KiBwYXJlbnRWaWV3ID0gdG9GcmFtZVZpZXco
cGFyZW50U2Nyb2xsVmlldyk7CisgICAgICAgIGlmIChpczxGcmFtZVZpZXc+KCpwYXJlbnRTY3Jv
bGxWaWV3KSkgeworICAgICAgICAgICAgY29uc3QgRnJhbWVWaWV3JiBwYXJlbnRWaWV3ID0gZG93
bmNhc3Q8RnJhbWVWaWV3PigqcGFyZW50U2Nyb2xsVmlldyk7CiAgICAgICAgICAgICAvLyBHZXQg
b3VyIHJlbmRlcmVyIGluIHRoZSBwYXJlbnQgdmlldwogICAgICAgICAgICAgUmVuZGVyV2lkZ2V0
KiByZW5kZXJlciA9IGZyYW1lKCkub3duZXJSZW5kZXJlcigpOwogICAgICAgICAgICAgaWYgKCFy
ZW5kZXJlcikKQEAgLTQxMTUsNyArNDExNSw3IEBAIEludFJlY3QgRnJhbWVWaWV3Ojpjb252ZXJ0
VG9Db250YWluaW5nVmlldyhjb25zdCBJbnRSZWN0JiBsb2NhbFJlY3QpIGNvbnN0CiAgICAgICAg
ICAgICAvLyBBZGQgYm9yZGVycyBhbmQgcGFkZGluZz8/CiAgICAgICAgICAgICByZWN0Lm1vdmUo
cmVuZGVyZXItPmJvcmRlckxlZnQoKSArIHJlbmRlcmVyLT5wYWRkaW5nTGVmdCgpLAogICAgICAg
ICAgICAgICAgICAgICAgIHJlbmRlcmVyLT5ib3JkZXJUb3AoKSArIHJlbmRlcmVyLT5wYWRkaW5n
VG9wKCkpOwotICAgICAgICAgICAgcmV0dXJuIHBhcmVudFZpZXctPmNvbnZlcnRGcm9tUmVuZGVy
ZXJUb0NvbnRhaW5pbmdWaWV3KHJlbmRlcmVyLCByZWN0KTsKKyAgICAgICAgICAgIHJldHVybiBw
YXJlbnRWaWV3LmNvbnZlcnRGcm9tUmVuZGVyZXJUb0NvbnRhaW5pbmdWaWV3KHJlbmRlcmVyLCBy
ZWN0KTsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgcmV0dXJuIFdpZGdldDo6Y29udmVy
dFRvQ29udGFpbmluZ1ZpZXcobG9jYWxSZWN0KTsKQEAgLTQxMjcsMTUgKzQxMjcsMTUgQEAgSW50
UmVjdCBGcmFtZVZpZXc6OmNvbnZlcnRUb0NvbnRhaW5pbmdWaWV3KGNvbnN0IEludFJlY3QmIGxv
Y2FsUmVjdCkgY29uc3QKIEludFJlY3QgRnJhbWVWaWV3Ojpjb252ZXJ0RnJvbUNvbnRhaW5pbmdW
aWV3KGNvbnN0IEludFJlY3QmIHBhcmVudFJlY3QpIGNvbnN0CiB7CiAgICAgaWYgKGNvbnN0IFNj
cm9sbFZpZXcqIHBhcmVudFNjcm9sbFZpZXcgPSBwYXJlbnQoKSkgewotICAgICAgICBpZiAocGFy
ZW50U2Nyb2xsVmlldy0+aXNGcmFtZVZpZXcoKSkgewotICAgICAgICAgICAgY29uc3QgRnJhbWVW
aWV3KiBwYXJlbnRWaWV3ID0gdG9GcmFtZVZpZXcocGFyZW50U2Nyb2xsVmlldyk7CisgICAgICAg
IGlmIChpczxGcmFtZVZpZXc+KCpwYXJlbnRTY3JvbGxWaWV3KSkgeworICAgICAgICAgICAgY29u
c3QgRnJhbWVWaWV3JiBwYXJlbnRWaWV3ID0gZG93bmNhc3Q8RnJhbWVWaWV3PigqcGFyZW50U2Ny
b2xsVmlldyk7CiAKICAgICAgICAgICAgIC8vIEdldCBvdXIgcmVuZGVyZXIgaW4gdGhlIHBhcmVu
dCB2aWV3CiAgICAgICAgICAgICBSZW5kZXJXaWRnZXQqIHJlbmRlcmVyID0gZnJhbWUoKS5vd25l
clJlbmRlcmVyKCk7CiAgICAgICAgICAgICBpZiAoIXJlbmRlcmVyKQogICAgICAgICAgICAgICAg
IHJldHVybiBwYXJlbnRSZWN0OwogCi0gICAgICAgICAgICBJbnRSZWN0IHJlY3QgPSBwYXJlbnRW
aWV3LT5jb252ZXJ0RnJvbUNvbnRhaW5pbmdWaWV3VG9SZW5kZXJlcihyZW5kZXJlciwgcGFyZW50
UmVjdCk7CisgICAgICAgICAgICBJbnRSZWN0IHJlY3QgPSBwYXJlbnRWaWV3LmNvbnZlcnRGcm9t
Q29udGFpbmluZ1ZpZXdUb1JlbmRlcmVyKHJlbmRlcmVyLCBwYXJlbnRSZWN0KTsKICAgICAgICAg
ICAgIC8vIFN1YnRyYWN0IGJvcmRlcnMgYW5kIHBhZGRpbmcKICAgICAgICAgICAgIHJlY3QubW92
ZSgtcmVuZGVyZXItPmJvcmRlckxlZnQoKSAtIHJlbmRlcmVyLT5wYWRkaW5nTGVmdCgpLAogICAg
ICAgICAgICAgICAgICAgICAgIC1yZW5kZXJlci0+Ym9yZGVyVG9wKCkgLSByZW5kZXJlci0+cGFk
ZGluZ1RvcCgpKTsKQEAgLTQxNTEsOCArNDE1MSw4IEBAIEludFJlY3QgRnJhbWVWaWV3Ojpjb252
ZXJ0RnJvbUNvbnRhaW5pbmdWaWV3KGNvbnN0IEludFJlY3QmIHBhcmVudFJlY3QpIGNvbnN0CiBJ
bnRQb2ludCBGcmFtZVZpZXc6OmNvbnZlcnRUb0NvbnRhaW5pbmdWaWV3KGNvbnN0IEludFBvaW50
JiBsb2NhbFBvaW50KSBjb25zdAogewogICAgIGlmIChjb25zdCBTY3JvbGxWaWV3KiBwYXJlbnRT
Y3JvbGxWaWV3ID0gcGFyZW50KCkpIHsKLSAgICAgICAgaWYgKHBhcmVudFNjcm9sbFZpZXctPmlz
RnJhbWVWaWV3KCkpIHsKLSAgICAgICAgICAgIGNvbnN0IEZyYW1lVmlldyogcGFyZW50VmlldyA9
IHRvRnJhbWVWaWV3KHBhcmVudFNjcm9sbFZpZXcpOworICAgICAgICBpZiAoaXM8RnJhbWVWaWV3
PigqcGFyZW50U2Nyb2xsVmlldykpIHsKKyAgICAgICAgICAgIGNvbnN0IEZyYW1lVmlldyYgcGFy
ZW50VmlldyA9IGRvd25jYXN0PEZyYW1lVmlldz4oKnBhcmVudFNjcm9sbFZpZXcpOwogCiAgICAg
ICAgICAgICAvLyBHZXQgb3VyIHJlbmRlcmVyIGluIHRoZSBwYXJlbnQgdmlldwogICAgICAgICAg
ICAgUmVuZGVyV2lkZ2V0KiByZW5kZXJlciA9IGZyYW1lKCkub3duZXJSZW5kZXJlcigpOwpAQCAt
NDE2NCw3ICs0MTY0LDcgQEAgSW50UG9pbnQgRnJhbWVWaWV3Ojpjb252ZXJ0VG9Db250YWluaW5n
Vmlldyhjb25zdCBJbnRQb2ludCYgbG9jYWxQb2ludCkgY29uc3QKICAgICAgICAgICAgIC8vIEFk
ZCBib3JkZXJzIGFuZCBwYWRkaW5nCiAgICAgICAgICAgICBwb2ludC5tb3ZlKHJlbmRlcmVyLT5i
b3JkZXJMZWZ0KCkgKyByZW5kZXJlci0+cGFkZGluZ0xlZnQoKSwKICAgICAgICAgICAgICAgICAg
ICAgICAgcmVuZGVyZXItPmJvcmRlclRvcCgpICsgcmVuZGVyZXItPnBhZGRpbmdUb3AoKSk7Ci0g
ICAgICAgICAgICByZXR1cm4gcGFyZW50Vmlldy0+Y29udmVydEZyb21SZW5kZXJlclRvQ29udGFp
bmluZ1ZpZXcocmVuZGVyZXIsIHBvaW50KTsKKyAgICAgICAgICAgIHJldHVybiBwYXJlbnRWaWV3
LmNvbnZlcnRGcm9tUmVuZGVyZXJUb0NvbnRhaW5pbmdWaWV3KHJlbmRlcmVyLCBwb2ludCk7CiAg
ICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIHJldHVybiBXaWRnZXQ6OmNvbnZlcnRUb0NvbnRh
aW5pbmdWaWV3KGxvY2FsUG9pbnQpOwpAQCAtNDE3NiwxNSArNDE3NiwxNSBAQCBJbnRQb2ludCBG
cmFtZVZpZXc6OmNvbnZlcnRUb0NvbnRhaW5pbmdWaWV3KGNvbnN0IEludFBvaW50JiBsb2NhbFBv
aW50KSBjb25zdAogSW50UG9pbnQgRnJhbWVWaWV3Ojpjb252ZXJ0RnJvbUNvbnRhaW5pbmdWaWV3
KGNvbnN0IEludFBvaW50JiBwYXJlbnRQb2ludCkgY29uc3QKIHsKICAgICBpZiAoY29uc3QgU2Ny
b2xsVmlldyogcGFyZW50U2Nyb2xsVmlldyA9IHBhcmVudCgpKSB7Ci0gICAgICAgIGlmIChwYXJl
bnRTY3JvbGxWaWV3LT5pc0ZyYW1lVmlldygpKSB7Ci0gICAgICAgICAgICBjb25zdCBGcmFtZVZp
ZXcqIHBhcmVudFZpZXcgPSB0b0ZyYW1lVmlldyhwYXJlbnRTY3JvbGxWaWV3KTsKKyAgICAgICAg
aWYgKGlzPEZyYW1lVmlldz4oKnBhcmVudFNjcm9sbFZpZXcpKSB7CisgICAgICAgICAgICBjb25z
dCBGcmFtZVZpZXcmIHBhcmVudFZpZXcgPSBkb3duY2FzdDxGcmFtZVZpZXc+KCpwYXJlbnRTY3Jv
bGxWaWV3KTsKIAogICAgICAgICAgICAgLy8gR2V0IG91ciByZW5kZXJlciBpbiB0aGUgcGFyZW50
IHZpZXcKICAgICAgICAgICAgIFJlbmRlcldpZGdldCogcmVuZGVyZXIgPSBmcmFtZSgpLm93bmVy
UmVuZGVyZXIoKTsKICAgICAgICAgICAgIGlmICghcmVuZGVyZXIpCiAgICAgICAgICAgICAgICAg
cmV0dXJuIHBhcmVudFBvaW50OwogCi0gICAgICAgICAgICBJbnRQb2ludCBwb2ludCA9IHBhcmVu
dFZpZXctPmNvbnZlcnRGcm9tQ29udGFpbmluZ1ZpZXdUb1JlbmRlcmVyKHJlbmRlcmVyLCBwYXJl
bnRQb2ludCk7CisgICAgICAgICAgICBJbnRQb2ludCBwb2ludCA9IHBhcmVudFZpZXcuY29udmVy
dEZyb21Db250YWluaW5nVmlld1RvUmVuZGVyZXIocmVuZGVyZXIsIHBhcmVudFBvaW50KTsKICAg
ICAgICAgICAgIC8vIFN1YnRyYWN0IGJvcmRlcnMgYW5kIHBhZGRpbmcKICAgICAgICAgICAgIHBv
aW50Lm1vdmUoLXJlbmRlcmVyLT5ib3JkZXJMZWZ0KCkgLSByZW5kZXJlci0+cGFkZGluZ0xlZnQo
KSwKICAgICAgICAgICAgICAgICAgICAgICAgLXJlbmRlcmVyLT5ib3JkZXJUb3AoKSAtIHJlbmRl
cmVyLT5wYWRkaW5nVG9wKCkpOwpAQCAtNDI4MCwxMCArNDI4MCwxMCBAQCB2b2lkIEZyYW1lVmll
dzo6c2VuZFNjcm9sbEV2ZW50KCkKICAgICBmcmFtZSgpLmV2ZW50SGFuZGxlcigpLmRpc3BhdGNo
RmFrZU1vdXNlTW92ZUV2ZW50U29vbigpOwogfQogCi12b2lkIEZyYW1lVmlldzo6cmVtb3ZlQ2hp
bGQoV2lkZ2V0KiB3aWRnZXQpCit2b2lkIEZyYW1lVmlldzo6cmVtb3ZlQ2hpbGQoV2lkZ2V0JiB3
aWRnZXQpCiB7Ci0gICAgaWYgKHdpZGdldC0+aXNGcmFtZVZpZXcoKSkKLSAgICAgICAgcmVtb3Zl
U2Nyb2xsYWJsZUFyZWEodG9GcmFtZVZpZXcod2lkZ2V0KSk7CisgICAgaWYgKGlzPEZyYW1lVmll
dz4od2lkZ2V0KSkKKyAgICAgICAgcmVtb3ZlU2Nyb2xsYWJsZUFyZWEoJmRvd25jYXN0PEZyYW1l
Vmlldz4od2lkZ2V0KSk7CiAKICAgICBTY3JvbGxWaWV3OjpyZW1vdmVDaGlsZCh3aWRnZXQpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKaW5kZXggOTJhYTliOTI2Y2YwMDJmZjFjYmZlMjBmYTVj
NWM4Zjg4NTM5ZjI4My4uYWY5ODBmNTg4NDIyNzBhNmFhYmY1MjEwNDIzZDY0MTZjMmQ2MjJjZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCkBAIC00MzQsNyArNDM0LDcgQEAgcHVibGljOgogICAg
IGJvb2wgY29udGFpbnNTY3JvbGxhYmxlQXJlYShTY3JvbGxhYmxlQXJlYSopIGNvbnN0OwogICAg
IGNvbnN0IFNjcm9sbGFibGVBcmVhU2V0KiBzY3JvbGxhYmxlQXJlYXMoKSBjb25zdCB7IHJldHVy
biBtX3Njcm9sbGFibGVBcmVhcy5nZXQoKTsgfQogCi0gICAgdmlydHVhbCB2b2lkIHJlbW92ZUNo
aWxkKFdpZGdldCopIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCByZW1vdmVDaGlsZChXaWRn
ZXQmKSBvdmVycmlkZTsKIAogICAgIC8vIFRoaXMgZnVuY3Rpb24gZXhpc3RzIGZvciBwb3J0cyB0
aGF0IG5lZWQgdG8gaGFuZGxlIHdoZWVsIGV2ZW50cyBtYW51YWxseS4KICAgICAvLyBPbiBNYWMg
V2ViS2l0MSB0aGUgdW5kZXJseWluZyBOU1Njcm9sbFZpZXcganVzdCBkb2VzIHRoZSBzY3JvbGxp
bmcsIGJ1dCBvbiBtb3N0IG90aGVyIHBsYXRmb3JtcwpAQCAtNzg4LDggKzc4OCw4IEBAIGlubGlu
ZSB2b2lkIEZyYW1lVmlldzo6aW5jcmVtZW50VmlzdWFsbHlOb25FbXB0eVBpeGVsQ291bnQoY29u
c3QgSW50U2l6ZSYgc2l6ZSkKICAgICB1cGRhdGVJc1Zpc3VhbGx5Tm9uRW1wdHkoKTsKIH0KIAot
V0lER0VUX1RZUEVfQ0FTVFMoRnJhbWVWaWV3LCBpc0ZyYW1lVmlldygpKTsKLQogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQogCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dJREdFVChGcmFtZVZpZXcs
IGlzRnJhbWVWaWV3KCkpCisKICNlbmRpZiAvLyBGcmFtZVZpZXdfaApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAK
aW5kZXggMDFlZjA3ZTViNzQ2MGQzZTRmZmQ1MzE5YjYwOTIxYjcxMjg1ODVlNC4uM2FkYTdlZGNh
ZGQyZDIxNTA1Y2NjYTAzNmI3YzIyNTE5OTVkMmMyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9QYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCkBAIC0x
MTYzLDkgKzExNjMsOSBAQCBWZWN0b3I8UmVmPFBsdWdpblZpZXdCYXNlPj4gUGFnZTo6cGx1Z2lu
Vmlld3MoKQogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgZm9yIChhdXRvIGl0ID0gdmll
dy0+Y2hpbGRyZW4oKS5iZWdpbigpLCBlbmQgPSB2aWV3LT5jaGlsZHJlbigpLmVuZCgpOyBpdCAh
PSBlbmQ7ICsraXQpIHsKLSAgICAgICAgICAgIFdpZGdldCogd2lkZ2V0ID0gKCppdCkuZ2V0KCk7
Ci0gICAgICAgICAgICBpZiAod2lkZ2V0LT5pc1BsdWdpblZpZXdCYXNlKCkpCi0gICAgICAgICAg
ICAgICAgdmlld3MuYXBwZW5kKCp0b1BsdWdpblZpZXdCYXNlKHdpZGdldCkpOworICAgICAgICAg
ICAgV2lkZ2V0JiB3aWRnZXQgPSAqKml0OworICAgICAgICAgICAgaWYgKGlzPFBsdWdpblZpZXdC
YXNlPih3aWRnZXQpKQorICAgICAgICAgICAgICAgIHZpZXdzLmFwcGVuZChkb3duY2FzdDxQbHVn
aW5WaWV3QmFzZT4od2lkZ2V0KSk7CiAgICAgICAgIH0KICAgICB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvZWZsL0V2ZW50SGFuZGxlckVmbC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL2VmbC9FdmVudEhhbmRsZXJFZmwuY3BwCmluZGV4IDc4YzcxMzJjZTRiYjhjMjAwZDUx
NTgwNmM5MjEzNTc2NmVlMjY5NjcuLmNiZDI1MWQ5ZDlkYTRkZGI5MjFlYWEwNTgwNzkyYTAwNGYy
YzhlODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvZWZsL0V2ZW50SGFuZGxlckVm
bC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9lZmwvRXZlbnRIYW5kbGVyRWZsLmNwcApA
QCAtODcsMTMgKzg3LDEyIEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpldmVudEFjdGl2YXRlZFZpZXco
Y29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JikgY29uc3QKICAgICByZXR1cm4gZmFsc2U7CiB9CiAK
LWJvb2wgRXZlbnRIYW5kbGVyOjpwYXNzV2hlZWxFdmVudFRvV2lkZ2V0KGNvbnN0IFBsYXRmb3Jt
V2hlZWxFdmVudCYgZXZlbnQsIFdpZGdldCogd2lkZ2V0KQorYm9vbCBFdmVudEhhbmRsZXI6OnBh
c3NXaGVlbEV2ZW50VG9XaWRnZXQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiBldmVudCwgV2lk
Z2V0JiB3aWRnZXQpCiB7Ci0gICAgQVNTRVJUKHdpZGdldCk7Ci0gICAgaWYgKCF3aWRnZXQtPmlz
RnJhbWVWaWV3KCkpCisgICAgaWYgKCFpczxGcmFtZVZpZXc+KHdpZGdldCkpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAotICAgIHJldHVybiB0b0ZyYW1lVmlldyh3aWRnZXQpLT5mcmFtZSgpLmV2
ZW50SGFuZGxlcigpLmhhbmRsZVdoZWVsRXZlbnQoZXZlbnQpOworICAgIHJldHVybiBkb3duY2Fz
dDxGcmFtZVZpZXc+KHdpZGdldCkuZnJhbWUoKS5ldmVudEhhbmRsZXIoKS5oYW5kbGVXaGVlbEV2
ZW50KGV2ZW50KTsKIH0KIAogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL2d0ay9FdmVudEhhbmRsZXJHdGsuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9ndGsvRXZlbnRIYW5kbGVyR3RrLmNwcAppbmRleCBkMzkwM2RiZjM2ZGZiYjhjNmE4
OWNkMzgyMjdiZjVkMTk1Yzk4ZjJmLi45NDgzZjkzYjM3ZWI5ZDAwNWMzYThjOWJjYWU2Y2RjZDE4
ZGVlYzE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2d0ay9FdmVudEhhbmRsZXJH
dGsuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvZ3RrL0V2ZW50SGFuZGxlckd0ay5jcHAK
QEAgLTg3LDEzICs4NywxMiBAQCBib29sIEV2ZW50SGFuZGxlcjo6ZXZlbnRBY3RpdmF0ZWRWaWV3
KGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYpIGNvbnN0CiAgICAgcmV0dXJuIGZhbHNlOwogfQog
Ci1ib29sIEV2ZW50SGFuZGxlcjo6cGFzc1doZWVsRXZlbnRUb1dpZGdldChjb25zdCBQbGF0Zm9y
bVdoZWVsRXZlbnQmIGV2ZW50LCBXaWRnZXQqIHdpZGdldCkKK2Jvb2wgRXZlbnRIYW5kbGVyOjpw
YXNzV2hlZWxFdmVudFRvV2lkZ2V0KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgZXZlbnQsIFdp
ZGdldCYgd2lkZ2V0KQogewotICAgIEFTU0VSVCh3aWRnZXQpOwotICAgIGlmICghd2lkZ2V0LT5p
c0ZyYW1lVmlldygpKQorICAgIGlmICghaXM8RnJhbWVWaWV3Pih3aWRnZXQpKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKLSAgICByZXR1cm4gdG9GcmFtZVZpZXcod2lkZ2V0KS0+ZnJhbWUoKS5l
dmVudEhhbmRsZXIoKS5oYW5kbGVXaGVlbEV2ZW50KGV2ZW50KTsKKyAgICByZXR1cm4gZG93bmNh
c3Q8RnJhbWVWaWV3Pih3aWRnZXQpLmZyYW1lKCkuZXZlbnRIYW5kbGVyKCkuaGFuZGxlV2hlZWxF
dmVudChldmVudCk7CiB9CiAKICNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9pb3MvRXZlbnRIYW5kbGVySU9TLm1tIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9pb3MvRXZlbnRIYW5kbGVySU9TLm1tCmluZGV4IGNmYjZmYTZhYjU1OWQ3ODRmNzIx
NmVjYTgzYTQxMTE5NDZlZTgxMGMuLjgzN2E3YTkyNDhjNzAyODFlMTllODQzNjVhODA5ZThmZTgw
ZjQwMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvaW9zL0V2ZW50SGFuZGxlcklP
Uy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2lvcy9FdmVudEhhbmRsZXJJT1MubW0KQEAg
LTM5NywyMCArMzk3LDE3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpwYXNzU3ViZnJhbWVFdmVudFRv
U3ViZnJhbWUoTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyYgZXZlCiAgICAgcmV0dXJuIGZh
bHNlOwogfQogCi1ib29sIEV2ZW50SGFuZGxlcjo6cGFzc1doZWVsRXZlbnRUb1dpZGdldChjb25z
dCBQbGF0Zm9ybVdoZWVsRXZlbnQmLCBXaWRnZXQqIHdpZGdldCkKK2Jvb2wgRXZlbnRIYW5kbGVy
OjpwYXNzV2hlZWxFdmVudFRvV2lkZ2V0KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYsIFdpZGdl
dCYgd2lkZ2V0KQogewogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKIAotICAgIGlm
ICghd2lkZ2V0KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBOU1ZpZXcqIG5vZGVWaWV3
ID0gd2lkZ2V0LT5wbGF0Zm9ybVdpZGdldCgpOworICAgIE5TVmlldyogbm9kZVZpZXcgPSB3aWRn
ZXQucGxhdGZvcm1XaWRnZXQoKTsKICAgICBpZiAoIW5vZGVWaWV3KSB7CiAgICAgICAgIC8vIFdL
MiBjb2RlIHBhdGguIE5vIHdoZWVsIGV2ZW50cyBvbiBpT1MgYW55d2F5LgogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgfQogCi0gICAgaWYgKGN1cnJlbnRFdmVudCgpLnR5cGUgIT0gV2ViRXZl
bnRTY3JvbGxXaGVlbCB8fCBtX3NlbmRpbmdFdmVudFRvU3VidmlldyB8fCAhd2lkZ2V0KQorICAg
IGlmIChjdXJyZW50RXZlbnQoKS50eXBlICE9IFdlYkV2ZW50U2Nyb2xsV2hlZWwgfHwgbV9zZW5k
aW5nRXZlbnRUb1N1YnZpZXcpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIEFTU0VSVChu
b2RlVmlldyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9FdmVudEhhbmRs
ZXJNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9FdmVudEhhbmRsZXJNYWMubW0KaW5k
ZXggMDZlNmU5M2JhOTYwMjliZDBhODFlZDgzNDA1YWMzZTYwOGM4NTY3NS4uM2Q3NTE0ODY5NjIx
ZmNjZjE3NzczYWZlMDI3MWMwZTQyYjBiMzg5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9tYWMvRXZlbnRIYW5kbGVyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFj
L0V2ZW50SGFuZGxlck1hYy5tbQpAQCAtNDIzLDIwICs0MjMsMTcgQEAgc3RhdGljIHZvaWQgc2Vs
ZlJldGFpbmluZ05TU2Nyb2xsVmlld1Njcm9sbFdoZWVsKE5TU2Nyb2xsVmlldyAqc2VsZiwgU0VM
IHNlbGVjdG8KICAgICAgICAgW3NlbGYgcmVsZWFzZV07CiB9CiAKLWJvb2wgRXZlbnRIYW5kbGVy
OjpwYXNzV2hlZWxFdmVudFRvV2lkZ2V0KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgd2hlZWxF
dmVudCwgV2lkZ2V0KiB3aWRnZXQpCitib29sIEV2ZW50SGFuZGxlcjo6cGFzc1doZWVsRXZlbnRU
b1dpZGdldChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIHdoZWVsRXZlbnQsIFdpZGdldCYgd2lk
Z2V0KQogewogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKIAotICAgIGlmICghd2lk
Z2V0KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBOU1ZpZXcqIG5vZGVWaWV3ID0gd2lk
Z2V0LT5wbGF0Zm9ybVdpZGdldCgpOworICAgIE5TVmlldyogbm9kZVZpZXcgPSB3aWRnZXQucGxh
dGZvcm1XaWRnZXQoKTsKICAgICBpZiAoIW5vZGVWaWV3KSB7CiAgICAgICAgIC8vIFdlYktpdDIg
Y29kZSBwYXRoLgotICAgICAgICBpZiAoIXdpZGdldC0+aXNGcmFtZVZpZXcoKSkKKyAgICAgICAg
aWYgKCFpczxGcmFtZVZpZXc+KHdpZGdldCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAK
LSAgICAgICAgcmV0dXJuIHRvRnJhbWVWaWV3KHdpZGdldCktPmZyYW1lKCkuZXZlbnRIYW5kbGVy
KCkuaGFuZGxlV2hlZWxFdmVudCh3aGVlbEV2ZW50KTsKKyAgICAgICAgcmV0dXJuIGRvd25jYXN0
PEZyYW1lVmlldz4od2lkZ2V0KS5mcmFtZSgpLmV2ZW50SGFuZGxlcigpLmhhbmRsZVdoZWVsRXZl
bnQod2hlZWxFdmVudCk7CiAgICAgfQogCiAgICAgaWYgKFtjdXJyZW50TlNFdmVudCgpIHR5cGVd
ICE9IE5TU2Nyb2xsV2hlZWwgfHwgbV9zZW5kaW5nRXZlbnRUb1N1YnZpZXcpIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3Bw
CmluZGV4IDFhNzk0YjljZDRlNmQ4ODQ1M2FmZDE3Y2QyNjYzYTg4YjNmN2FkMWYuLmIyZGI3NDc4
YzA1MmY1Yzk4NzI1MjRhYjhhNDljZGRmZWMyNTRmZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvci5jcHAKQEAgLTEzOCwx
MSArMTM4LDExIEBAIFJlZ2lvbiBTY3JvbGxpbmdDb29yZGluYXRvcjo6Y29tcHV0ZU5vbkZhc3RT
Y3JvbGxhYmxlUmVnaW9uKGNvbnN0IEZyYW1lKiBmcmFtZSwKICAgICB9CiAKICAgICBmb3IgKGNv
bnN0IGF1dG8mIGNoaWxkIDogZnJhbWVWaWV3LT5jaGlsZHJlbigpKSB7Ci0gICAgICAgIGlmICgh
Y2hpbGQtPmlzUGx1Z2luVmlld0Jhc2UoKSkKKyAgICAgICAgaWYgKCFpczxQbHVnaW5WaWV3QmFz
ZT4oKmNoaWxkKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBQbHVnaW5WaWV3QmFz
ZSogcGx1Z2luVmlld0Jhc2UgPSB0b1BsdWdpblZpZXdCYXNlKGNoaWxkLmdldCgpKTsKLSAgICAg
ICAgaWYgKHBsdWdpblZpZXdCYXNlLT53YW50c1doZWVsRXZlbnRzKCkpCi0gICAgICAgICAgICBu
b25GYXN0U2Nyb2xsYWJsZVJlZ2lvbi51bml0ZShwbHVnaW5WaWV3QmFzZS0+ZnJhbWVSZWN0KCkp
OworICAgICAgICBQbHVnaW5WaWV3QmFzZSYgcGx1Z2luVmlld0Jhc2UgPSBkb3duY2FzdDxQbHVn
aW5WaWV3QmFzZT4oKmNoaWxkKTsKKyAgICAgICAgaWYgKHBsdWdpblZpZXdCYXNlLndhbnRzV2hl
ZWxFdmVudHMoKSkKKyAgICAgICAgICAgIG5vbkZhc3RTY3JvbGxhYmxlUmVnaW9uLnVuaXRlKHBs
dWdpblZpZXdCYXNlLmZyYW1lUmVjdCgpKTsKICAgICB9CiAKICAgICBmb3IgKEZyYW1lKiBzdWJm
cmFtZSA9IGZyYW1lLT50cmVlKCkuZmlyc3RDaGlsZCgpOyBzdWJmcmFtZTsgc3ViZnJhbWUgPSBz
dWJmcmFtZS0+dHJlZSgpLm5leHRTaWJsaW5nKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL3dpbi9FdmVudEhhbmRsZXJXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS93aW4v
RXZlbnRIYW5kbGVyV2luLmNwcAppbmRleCA2NDQyZWNiMWFmN2E4MGEwMTFlMmQyODU5ZjhlYmEx
N2MwMTlmY2FiLi5mMzM3MjQ2ZmY3NjUwOTBlYmNjYmM5ZDAxMjE4NWE5OGVmNjkyNWFiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3dpbi9FdmVudEhhbmRsZXJXaW4uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2Uvd2luL0V2ZW50SGFuZGxlcldpbi5jcHAKQEAgLTczLDEyICs3
MywxMiBAQCBib29sIEV2ZW50SGFuZGxlcjo6cGFzc01vdXNlUmVsZWFzZUV2ZW50VG9TdWJmcmFt
ZShNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzJgogICAgIHJldHVybiB0cnVlOwogfQogCi1i
b29sIEV2ZW50SGFuZGxlcjo6cGFzc1doZWVsRXZlbnRUb1dpZGdldChjb25zdCBQbGF0Zm9ybVdo
ZWVsRXZlbnQmIHdoZWVsRXZlbnQsIFdpZGdldCogd2lkZ2V0KQorYm9vbCBFdmVudEhhbmRsZXI6
OnBhc3NXaGVlbEV2ZW50VG9XaWRnZXQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiB3aGVlbEV2
ZW50LCBXaWRnZXQmIHdpZGdldCkKIHsKLSAgICBpZiAoIXdpZGdldC0+aXNGcmFtZVZpZXcoKSkK
KyAgICBpZiAoIWlzPEZyYW1lVmlldz4od2lkZ2V0KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
Ci0gICAgcmV0dXJuIHRvRnJhbWVWaWV3KHdpZGdldCktPmZyYW1lKCkuZXZlbnRIYW5kbGVyKCku
aGFuZGxlV2hlZWxFdmVudCh3aGVlbEV2ZW50KTsKKyAgICByZXR1cm4gZG93bmNhc3Q8RnJhbWVW
aWV3Pigqd2lkZ2V0KS5mcmFtZSgpLmV2ZW50SGFuZGxlcigpLmhhbmRsZVdoZWVsRXZlbnQod2hl
ZWxFdmVudCk7CiB9CiAKIGJvb2wgRXZlbnRIYW5kbGVyOjp0YWJzVG9BbGxGb3JtQ29udHJvbHMo
S2V5Ym9hcmRFdmVudCopIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9TY3JvbGxWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuY3Bw
CmluZGV4IDc0MWViYThkZmU1YmY2ZmFjN2ZmZjZkZTMzNDRkMDdlYWM1MWQ3OTEuLjQ2ZDFiNmJi
ZGMzMDBlNTQ3MTM3ODU4MDJiZGY1YTdhYTk2OTc3MjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1Njcm9sbFZpZXcuY3BwCkBAIC03MSwxMyArNzEsMTMgQEAgdm9pZCBTY3JvbGxWaWV3OjphZGRD
aGlsZChQYXNzUmVmUHRyPFdpZGdldD4gcHJwQ2hpbGQpCiAgICAgICAgIHBsYXRmb3JtQWRkQ2hp
bGQoY2hpbGQpOwogfQogCi12b2lkIFNjcm9sbFZpZXc6OnJlbW92ZUNoaWxkKFdpZGdldCogY2hp
bGQpCit2b2lkIFNjcm9sbFZpZXc6OnJlbW92ZUNoaWxkKFdpZGdldCYgY2hpbGQpCiB7Ci0gICAg
QVNTRVJUKGNoaWxkLT5wYXJlbnQoKSA9PSB0aGlzKTsKLSAgICBjaGlsZC0+c2V0UGFyZW50KDAp
OwotICAgIG1fY2hpbGRyZW4ucmVtb3ZlKGNoaWxkKTsKLSAgICBpZiAoY2hpbGQtPnBsYXRmb3Jt
V2lkZ2V0KCkpCi0gICAgICAgIHBsYXRmb3JtUmVtb3ZlQ2hpbGQoY2hpbGQpOworICAgIEFTU0VS
VChjaGlsZC5wYXJlbnQoKSA9PSB0aGlzKTsKKyAgICBjaGlsZC5zZXRQYXJlbnQobnVsbHB0cik7
CisgICAgbV9jaGlsZHJlbi5yZW1vdmUoJmNoaWxkKTsKKyAgICBpZiAoY2hpbGQucGxhdGZvcm1X
aWRnZXQoKSkKKyAgICAgICAgcGxhdGZvcm1SZW1vdmVDaGlsZCgmY2hpbGQpOwogfQogCiBib29s
IFNjcm9sbFZpZXc6OnNldEhhc0hvcml6b250YWxTY3JvbGxiYXIoYm9vbCBoYXNCYXIsIGJvb2wq
IGNvbnRlbnRTaXplQWZmZWN0ZWQpCkBAIC05Niw4ICs5Niw4IEBAIGJvb2wgU2Nyb2xsVmlldzo6
c2V0SGFzSG9yaXpvbnRhbFNjcm9sbGJhcihib29sIGhhc0JhciwgYm9vbCogY29udGVudFNpemVB
ZmZlY3RlCiAgICAgaWYgKCFoYXNCYXIgJiYgbV9ob3Jpem9udGFsU2Nyb2xsYmFyKSB7CiAgICAg
ICAgIGJvb2wgd2FzT3ZlcmxheVNjcm9sbGJhciA9IG1faG9yaXpvbnRhbFNjcm9sbGJhci0+aXNP
dmVybGF5U2Nyb2xsYmFyKCk7CiAgICAgICAgIHdpbGxSZW1vdmVTY3JvbGxiYXIobV9ob3Jpem9u
dGFsU2Nyb2xsYmFyLmdldCgpLCBIb3Jpem9udGFsU2Nyb2xsYmFyKTsKLSAgICAgICAgcmVtb3Zl
Q2hpbGQobV9ob3Jpem9udGFsU2Nyb2xsYmFyLmdldCgpKTsKLSAgICAgICAgbV9ob3Jpem9udGFs
U2Nyb2xsYmFyID0gMDsKKyAgICAgICAgcmVtb3ZlQ2hpbGQoKm1faG9yaXpvbnRhbFNjcm9sbGJh
cik7CisgICAgICAgIG1faG9yaXpvbnRhbFNjcm9sbGJhciA9IG51bGxwdHI7CiAgICAgICAgIGlm
IChjb250ZW50U2l6ZUFmZmVjdGVkKQogICAgICAgICAgICAgKmNvbnRlbnRTaXplQWZmZWN0ZWQg
PSAhd2FzT3ZlcmxheVNjcm9sbGJhcjsKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0xMjIsOCAr
MTIyLDggQEAgYm9vbCBTY3JvbGxWaWV3OjpzZXRIYXNWZXJ0aWNhbFNjcm9sbGJhcihib29sIGhh
c0JhciwgYm9vbCogY29udGVudFNpemVBZmZlY3RlZCkKICAgICBpZiAoIWhhc0JhciAmJiBtX3Zl
cnRpY2FsU2Nyb2xsYmFyKSB7CiAgICAgICAgIGJvb2wgd2FzT3ZlcmxheVNjcm9sbGJhciA9IG1f
dmVydGljYWxTY3JvbGxiYXItPmlzT3ZlcmxheVNjcm9sbGJhcigpOwogICAgICAgICB3aWxsUmVt
b3ZlU2Nyb2xsYmFyKG1fdmVydGljYWxTY3JvbGxiYXIuZ2V0KCksIFZlcnRpY2FsU2Nyb2xsYmFy
KTsKLSAgICAgICAgcmVtb3ZlQ2hpbGQobV92ZXJ0aWNhbFNjcm9sbGJhci5nZXQoKSk7Ci0gICAg
ICAgIG1fdmVydGljYWxTY3JvbGxiYXIgPSAwOworICAgICAgICByZW1vdmVDaGlsZCgqbV92ZXJ0
aWNhbFNjcm9sbGJhcik7CisgICAgICAgIG1fdmVydGljYWxTY3JvbGxiYXIgPSBudWxscHRyOwog
ICAgICAgICBpZiAoY29udGVudFNpemVBZmZlY3RlZCkKICAgICAgICAgICAgICpjb250ZW50U2l6
ZUFmZmVjdGVkID0gIXdhc092ZXJsYXlTY3JvbGxiYXI7CiAgICAgICAgIHJldHVybiB0cnVlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5oCmluZGV4IDk5OGQzZTIxNjA4NDFjYzc4YzY0
ZjdkMTFhNmFmNjJlYTVjZTUwOTMuLmYyZWY1OTE5YjFjNWU0OTU2MWNjMDhiMTk0ZDViYWE0MzBk
ZDJiMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmgKQEAgLTkwLDcgKzkwLDcg
QEAgcHVibGljOgogICAgIC8vIEZ1bmN0aW9ucyBmb3IgY2hpbGQgbWFuaXB1bGF0aW9uIGFuZCBp
bnNwZWN0aW9uLgogICAgIGNvbnN0IEhhc2hTZXQ8UmVmUHRyPFdpZGdldD4+JiBjaGlsZHJlbigp
IGNvbnN0IHsgcmV0dXJuIG1fY2hpbGRyZW47IH0KICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFs
IHZvaWQgYWRkQ2hpbGQoUGFzc1JlZlB0cjxXaWRnZXQ+KTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVt
b3ZlQ2hpbGQoV2lkZ2V0Kik7CisgICAgdmlydHVhbCB2b2lkIHJlbW92ZUNoaWxkKFdpZGdldCYp
OwogCiAgICAgLy8gSWYgdGhlIHNjcm9sbCB2aWV3IGRvZXMgbm90IHVzZSBhIG5hdGl2ZSB3aWRn
ZXQsIHRoZW4gaXQgd2lsbCBoYXZlIGNyb3NzLXBsYXRmb3JtIFNjcm9sbGJhcnMuIFRoZXNlIGZ1
bmN0aW9ucwogICAgIC8vIGNhbiBiZSB1c2VkIHRvIG9idGFpbiB0aG9zZSBzY3JvbGxiYXJzLgpA
QCAtNTA3LDggKzUwNyw4IEBAIHByaXZhdGU6CiAjZW5kaWYKIH07IC8vIGNsYXNzIFNjcm9sbFZp
ZXcKIAotV0lER0VUX1RZUEVfQ0FTVFMoU2Nyb2xsVmlldywgaXNTY3JvbGxWaWV3KCkpOwotCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0lER0VUKFNj
cm9sbFZpZXcsIGlzU2Nyb2xsVmlldygpKQorCiAjZW5kaWYgLy8gU2Nyb2xsVmlld19oCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyLmNwcAppbmRleCAwNjRmZGRjMDEzNWY3ZDg3YTA1YjMw
ZGU2MmI4OGRiMTNkOTYxMzFjLi43ZThkMTE3YWMyM2FmOWZlZjJlYTY3NzdhZjRmMTM2MmI0MDkz
Mzk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhci5jcHAKQEAgLTI2LDYgKzI2LDcg
QEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJTY3JvbGxiYXIuaCIKIAorI2luY2x1
ZGUgIkZyYW1lVmlldy5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUg
IlBsYXRmb3JtTW91c2VFdmVudC5oIgogI2luY2x1ZGUgIlNjcm9sbEFuaW1hdG9yLmgiCkBAIC01
NTgsNCArNTU5LDkgQEAgYm9vbCBTY3JvbGxiYXI6OnN1cHBvcnRzVXBkYXRlT25TZWNvbmRhcnlU
aHJlYWQoKSBjb25zdAogI2VuZGlmCiB9CiAKK1Njcm9sbFZpZXcqIFNjcm9sbGJhcjo6cm9vdCgp
IGNvbnN0Cit7CisgICAgcmV0dXJuIFdpZGdldDo6cm9vdCgpOworfQorCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhci5oCmluZGV4IDQ0ZTIzZjdiNjYx
NzcwMjI0YzViOGYyZGM0ZDI0ZDcwNjFmZWUxYjcuLjY5ODg1ZjVhMGYwN2IxZDk5ODI2ZTRmZmFj
MDczMzMwMmZlZjk3ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9s
bGJhci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhci5oCkBAIC01OCw3
ICs1OCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIEludFBvaW50IGxvY2F0aW9uKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gV2lkZ2V0Ojpsb2NhdGlvbigpOyB9CiAKICAgICB2aXJ0dWFsIFNj
cm9sbFZpZXcqIHBhcmVudCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFdpZGdldDo6cGFyZW50
KCk7IH0KLSAgICB2aXJ0dWFsIFNjcm9sbFZpZXcqIHJvb3QoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBXaWRnZXQ6OnJvb3QoKTsgfQorICAgIHZpcnR1YWwgU2Nyb2xsVmlldyogcm9vdCgpIGNv
bnN0IG92ZXJyaWRlOwogCiAgICAgdmlydHVhbCB2b2lkIHNldEZyYW1lUmVjdChjb25zdCBJbnRS
ZWN0Jikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBJbnRSZWN0IGZyYW1lUmVjdCgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIFdpZGdldDo6ZnJhbWVSZWN0KCk7IH0KQEAgLTIwNyw4ICsyMDcsOCBA
QCBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBpc1Njcm9sbGJhcigpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIHRydWU7IH0KIH07CiAKLVdJREdFVF9UWVBFX0NBU1RTKFNjcm9sbGJhciwgaXNT
Y3JvbGxiYXIoKSk7Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAorU1BFQ0lBTElaRV9UWVBF
X1RSQUlUU19XSURHRVQoU2Nyb2xsYmFyLCBpc1Njcm9sbGJhcigpKQorCiAjZW5kaWYgLy8gU2Ny
b2xsYmFyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1dpZGdldC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9XaWRnZXQuY3BwCmluZGV4IGMyMWY0ZGQzODJhZjY5
OTBkZWQ0OTFmNjVkYjE4NjM4NmI1OTJjYmEuLjlmMWQwMTQ4MjViNTMwY2EyZWFjMjQ0MzhmNGE3
ZTAxN2I4NzcwYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1dpZGdldC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vV2lkZ2V0LmNwcApAQCAtMjYsOSArMjYs
OCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldpZGdldC5oIgogCisjaW5jbHVk
ZSAiRnJhbWVWaWV3LmgiCiAjaW5jbHVkZSAiSW50UmVjdC5oIgotI2luY2x1ZGUgIlNjcm9sbFZp
ZXcuaCIKLQogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKQEAgLTUzLDIwICs1MiwyMCBAQCB2b2lkIFdpZGdldDo6c2V0UGFyZW50KFNjcm9sbFZpZXcq
IHZpZXcpCiAgICAgICAgIHNldFBhcmVudFZpc2libGUodHJ1ZSk7CiB9CiAKLVNjcm9sbFZpZXcq
IFdpZGdldDo6cm9vdCgpIGNvbnN0CitGcmFtZVZpZXcqIFdpZGdldDo6cm9vdCgpIGNvbnN0CiB7
CiAgICAgY29uc3QgV2lkZ2V0KiB0b3AgPSB0aGlzOwogICAgIHdoaWxlICh0b3AtPnBhcmVudCgp
KQogICAgICAgICB0b3AgPSB0b3AtPnBhcmVudCgpOwotICAgIGlmICh0b3AtPmlzRnJhbWVWaWV3
KCkpCi0gICAgICAgIHJldHVybiBjb25zdF9jYXN0PFNjcm9sbFZpZXcqPih0b1Njcm9sbFZpZXco
dG9wKSk7CisgICAgaWYgKGlzPEZyYW1lVmlldz4oKnRvcCkpCisgICAgICAgIHJldHVybiBjb25z
dF9jYXN0PEZyYW1lVmlldyo+KGRvd25jYXN0PEZyYW1lVmlldz4odG9wKSk7CiAgICAgcmV0dXJu
IG51bGxwdHI7CiB9CiAgICAgCiB2b2lkIFdpZGdldDo6cmVtb3ZlRnJvbVBhcmVudCgpCiB7CiAg
ICAgaWYgKHBhcmVudCgpKQotICAgICAgICBwYXJlbnQoKS0+cmVtb3ZlQ2hpbGQodGhpcyk7Cisg
ICAgICAgIHBhcmVudCgpLT5yZW1vdmVDaGlsZCgqdGhpcyk7CiB9CiAKIEludFJlY3QgV2lkZ2V0
Ojpjb252ZXJ0RnJvbVJvb3RWaWV3KGNvbnN0IEludFJlY3QmIHJvb3RSZWN0KSBjb25zdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vV2lkZ2V0LmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9XaWRnZXQuaAppbmRleCAwZmYxMWQyMDY0ODRjYjc1ZDMwMTY4NTk2ODY3Yjk5
OGU0NWQ0YTFjLi5iZTI4ODVjZjYxMDMzMTBlYTZmNWM5ZGQ0ZGJlMmNjMzgxNGQzZGM2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9XaWRnZXQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9XaWRnZXQuaApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgIlBsYXRm
b3JtU2NyZWVuLmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvUmVm
Q291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9UeXBlQ2FzdHMuaD4KIAogI2lmIFBMQVRGT1JNKENP
Q09BKQogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KQEAgLTcwLDYgKzcxLDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogY2xhc3MgQ3Vyc29yOwogY2xhc3MgRXZlbnQ7CiBjbGFzcyBGb250Owor
Y2xhc3MgRnJhbWVWaWV3OwogY2xhc3MgR3JhcGhpY3NDb250ZXh0OwogY2xhc3MgUGxhdGZvcm1N
b3VzZUV2ZW50OwogY2xhc3MgU2Nyb2xsVmlldzsKQEAgLTE0Myw3ICsxNDUsNyBAQCBwdWJsaWM6
CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZW1vdmVGcm9tUGFyZW50KCk7CiAgICAgV0VCQ09S
RV9FWFBPUlQgdmlydHVhbCB2b2lkIHNldFBhcmVudChTY3JvbGxWaWV3KiB2aWV3KTsKICAgICBT
Y3JvbGxWaWV3KiBwYXJlbnQoKSBjb25zdCB7IHJldHVybiBtX3BhcmVudDsgfQotICAgIFNjcm9s
bFZpZXcqIHJvb3QoKSBjb25zdDsKKyAgICBGcmFtZVZpZXcqIHJvb3QoKSBjb25zdDsKIAogICAg
IHZpcnR1YWwgdm9pZCBoYW5kbGVFdmVudChFdmVudCopIHsgfQogCkBAIC0yMTYsOSArMjE4LDYg
QEAgcHJpdmF0ZToKICAgICBJbnRSZWN0IG1fZnJhbWU7IC8vIE5vdCB1c2VkIHdoZW4gYSBuYXRp
dmUgd2lkZ2V0IGV4aXN0cy4KIH07CiAKLSNkZWZpbmUgV0lER0VUX1RZUEVfQ0FTVFMoVG9WYWx1
ZVR5cGVOYW1lLCBwcmVkaWNhdGUpIFwKLSAgICBUWVBFX0NBU1RTX0JBU0UoVG9WYWx1ZVR5cGVO
YW1lLCBXaWRnZXQsIG9iamVjdCwgb2JqZWN0LT5wcmVkaWNhdGUsIG9iamVjdC5wcmVkaWNhdGUp
Ci0KICNpZiAhUExBVEZPUk0oQ09DT0EpCiAKIGlubGluZSBQbGF0Zm9ybVdpZGdldCBXaWRnZXQ6
OnBsYXRmb3JtV2lkZ2V0KCkgY29uc3QKQEAgLTI1MSw0ICsyNTAsOSBAQCBpbmxpbmUgdm9pZCBX
aWRnZXQ6OnJldGFpblBsYXRmb3JtV2lkZ2V0KCkKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQog
CisjZGVmaW5lIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0lER0VUKFRvVmFsdWVUeXBlTmFtZSwg
cHJlZGljYXRlKSBcCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdlYkNvcmU6OlRvVmFs
dWVUeXBlTmFtZSkgXAorICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpXaWRn
ZXQmIHdpZGdldCkgeyByZXR1cm4gd2lkZ2V0LnByZWRpY2F0ZTsgfSBcCitTUEVDSUFMSVpFX1RZ
UEVfVFJBSVRTX0VORCgpCisKICNlbmRpZiAvLyBXaWRnZXRfaApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZWZsL1dpZGdldEVmbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9lZmwvV2lkZ2V0RWZsLmNwcAppbmRleCA0MmFjODI5MTczNjQ2YWZkYWQwZmY1Y2ZiZDZi
NTMyOTJiZWNkNzQ1Li4wMjIyNjM1NWZkMjUwNGJlZGQwMzVjZGFmZDYxMzIwZDU1NjljYTA3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvV2lkZ2V0RWZsLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvV2lkZ2V0RWZsLmNwcApAQCAtNzksNyArNzks
NyBAQCB2b2lkIFdpZGdldDo6c2V0Rm9jdXMoYm9vbCkKIAogdm9pZCBXaWRnZXQ6OnNldEN1cnNv
cihjb25zdCBDdXJzb3ImIGN1cnNvcikKIHsKLSAgICBTY3JvbGxWaWV3KiB2aWV3ID0gcm9vdCgp
OworICAgIEZyYW1lVmlldyogdmlldyA9IHJvb3QoKTsKICAgICBpZiAoIXZpZXcpCiAgICAgICAg
IHJldHVybjsKICAgICB2aWV3LT5ob3N0V2luZG93KCktPnNldEN1cnNvcihjdXJzb3IpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1BsYXRmb3JtU2NyZWVuR3RrLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QbGF0Zm9ybVNjcmVlbkd0ay5jcHAKaW5k
ZXggODIzYWFlNzQxNzI2ZTRiN2Y5OGI4NWQyMzY5M2FjYTgwODdiNzM2MC4uZmVjMDhhNTNmM2Uy
NTNiNzQ4MzhjNjJjYmFmMDg4NTQ1OWFlZjU1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3RrL1BsYXRmb3JtU2NyZWVuR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ndGsvUGxhdGZvcm1TY3JlZW5HdGsuY3BwCkBAIC0zMiwxMCArMzIsMTAgQEAKICNp
bmNsdWRlICJQbGF0Zm9ybVNjcmVlbi5oIgogCiAjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCisjaW5j
bHVkZSAiRnJhbWVWaWV3LmgiCiAjaW5jbHVkZSAiR3RrVmVyc2lvbmluZy5oIgogI2luY2x1ZGUg
Ikhvc3RXaW5kb3cuaCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgotI2luY2x1ZGUgIlNj
cm9sbFZpZXcuaCIKICNpbmNsdWRlICJXaWRnZXQuaCIKIAogI2luY2x1ZGUgPGd0ay9ndGsuaD4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9XaWRnZXRHdGsuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1dpZGdldEd0ay5jcHAKaW5kZXggNzhjZjBlYWUy
YWMzNzRjNWFhNDM5NGFhNGI3YmNiMmYzN2VjYjVjZS4uYTdiYTQyYTJlYjNlMzllNDI3NjU1YTQ4
ODMyMGMzZGMwZjJkNzcwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Rr
L1dpZGdldEd0ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1dpZGdldEd0
ay5jcHAKQEAgLTI5LDExICsyOSwxMSBAQAogI2luY2x1ZGUgIldpZGdldC5oIgogCiAjaW5jbHVk
ZSAiQ3Vyc29yLmgiCisjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3ND
b250ZXh0LmgiCiAjaW5jbHVkZSAiR3RrVmVyc2lvbmluZy5oIgogI2luY2x1ZGUgIkhvc3RXaW5k
b3cuaCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCi0jaW5jbHVkZSAiU2Nyb2xsVmlldy5oIgogCiAj
aW5jbHVkZSA8Z2RrL2dkay5oPgogI2luY2x1ZGUgPGd0ay9ndGsuaD4KQEAgLTU4LDcgKzU4LDcg
QEAgdm9pZCBXaWRnZXQ6OnNldEZvY3VzKGJvb2wpCiAKIHZvaWQgV2lkZ2V0OjpzZXRDdXJzb3Io
Y29uc3QgQ3Vyc29yJiBjdXJzb3IpCiB7Ci0gICAgU2Nyb2xsVmlldyogdmlldyA9IHJvb3QoKTsK
KyAgICBGcmFtZVZpZXcqIHZpZXcgPSByb290KCk7CiAgICAgaWYgKCF2aWV3KQogICAgICAgICBy
ZXR1cm47CiAgICAgdmlldy0+aG9zdFdpbmRvdygpLT5zZXRDdXJzb3IoY3Vyc29yKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybVNjcmVlbk1hYy5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybVNjcmVlbk1hYy5tbQppbmRleCBk
OWMzNDZmM2VhOGQyNTI3N2JlMWRkZTBhNGM2ZTljZjI3MDg4N2I0Li42NmZhMjkxZTVkZDIzYzQ4
ODljYzliMzU5YzQ4OGY1NWQ2ZWM0NDhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tYWMvUGxhdGZvcm1TY3JlZW5NYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWFjL1BsYXRmb3JtU2NyZWVuTWFjLm1tCkBAIC0yNyw4ICsyNyw4IEBACiAjaW1wb3J0ICJQ
bGF0Zm9ybVNjcmVlbi5oIgogCiAjaW1wb3J0ICJGbG9hdFJlY3QuaCIKKyNpbXBvcnQgIkZyYW1l
Vmlldy5oIgogI2ltcG9ydCAiSG9zdFdpbmRvdy5oIgotI2ltcG9ydCAiU2Nyb2xsVmlldy5oIgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTY5LDcgKzY5LDcgQEAgc3RhdGljIFBsYXRmb3Jt
RGlzcGxheUlEIGRpc3BsYXlGcm9tV2lkZ2V0KFdpZGdldCogd2lkZ2V0KQogICAgIGlmICghd2lk
Z2V0KQogICAgICAgICByZXR1cm4gMDsKICAgICAKLSAgICBTY3JvbGxWaWV3KiB2aWV3ID0gd2lk
Z2V0LT5yb290KCk7CisgICAgRnJhbWVWaWV3KiB2aWV3ID0gd2lkZ2V0LT5yb290KCk7CiAgICAg
aWYgKCF2aWV3KQogICAgICAgICByZXR1cm4gMDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWFjL1dpZGdldE1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21h
Yy9XaWRnZXRNYWMubW0KaW5kZXggMTMyYTM4ZDA1NTI4OWRlZWQ4OThiNGIyYzI5MTM0NTZlMjk1
MDA5YS4uMTQ3NzM3NGViODc3MjEwYTI1OGRhMDFiNzhkZDc2NGFhMWNjNTY3YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dpZGdldE1hYy5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2lkZ2V0TWFjLm1tCkBAIC0zMywxMSArMzMsMTEgQEAKICNp
bXBvcnQgIkRvY3VtZW50LmgiCiAjaW1wb3J0ICJGb250LmgiCiAjaW1wb3J0ICJGcmFtZS5oIgor
I2ltcG9ydCAiRnJhbWVWaWV3LmgiCiAjaW1wb3J0ICJHcmFwaGljc0NvbnRleHQuaCIKICNpbXBv
cnQgIlBhZ2UuaCIKICNpbXBvcnQgIlBsYXRmb3JtTW91c2VFdmVudC5oIgogI2ltcG9ydCAiUnVu
dGltZUFwcGxpY2F0aW9uQ2hlY2tzLmgiCi0jaW1wb3J0ICJTY3JvbGxWaWV3LmgiCiAjaW1wb3J0
ICJXZWJDb3JlRnJhbWVWaWV3LmgiCiAjaW1wb3J0ICJXZWJDb3JlVmlldy5oIgogI2ltcG9ydCA8
d3RmL1JlZi5oPgpAQCAtMTA2LDcgKzEwNiw3IEBAIHZvaWQgV2lkZ2V0OjpzZXRGb2N1cyhib29s
IGZvY3VzZWQpCiAKIHZvaWQgV2lkZ2V0OjpzZXRDdXJzb3IoY29uc3QgQ3Vyc29yJiBjdXJzb3Ip
CiB7Ci0gICAgU2Nyb2xsVmlldyogdmlldyA9IHJvb3QoKTsKKyAgICBGcmFtZVZpZXcqIHZpZXcg
PSByb290KCk7CiAgICAgaWYgKCF2aWV3KQogICAgICAgICByZXR1cm47CiAgICAgdmlldy0+aG9z
dFdpbmRvdygpLT5zZXRDdXJzb3IoY3Vyc29yKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3dpbi9XaWRnZXRXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2lu
L1dpZGdldFdpbi5jcHAKaW5kZXggNDczYjFkZTlhOWE2OGQzYWE2NGY1NGY3MmUzNTc2MjQ2ZmNh
Y2Y0Mi4uMjcxZTM2ZDVjYjMxMGY1ZjY4ODdkZDIzNzkwYTliNmJhNDY4ZjBhMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1dpZGdldFdpbi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vd2luL1dpZGdldFdpbi5jcHAKQEAgLTcwLDcgKzcwLDcgQEAgdm9p
ZCBXaWRnZXQ6OnNldEN1cnNvcihjb25zdCBDdXJzb3ImIGN1cnNvcikKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIAotICAgIFNjcm9sbFZpZXcqIHZpZXcgPSByb290KCk7CisgICAgRnJhbWVWaWV3
KiB2aWV3ID0gcm9vdCgpOwogICAgIGlmICghdmlldykKICAgICAgICAgcmV0dXJuOwogICAgIHZp
ZXctPmhvc3RXaW5kb3coKS0+c2V0Q3Vyc29yKGN1cnNvcik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbHVnaW5zL1BsdWdpblZpZXdCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5z
L1BsdWdpblZpZXdCYXNlLmgKaW5kZXggZTQ1NmI2YzIxZmZmYTI3ODliYTE0YTQ0NDBkYjVmNzRm
M2M5ZWRhMy4uMjQ4M2NhYWRiMDY5NmExMjlmODBhZGQ2YThjNDk1N2ExMTJhZmQzMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5WaWV3QmFzZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luVmlld0Jhc2UuaApAQCAtODEsOCArODEsOCBAQCBwcm90
ZWN0ZWQ6CiAgICAgZXhwbGljaXQgUGx1Z2luVmlld0Jhc2UoUGxhdGZvcm1XaWRnZXQgd2lkZ2V0
ID0gMCkgOiBXaWRnZXQod2lkZ2V0KSB7IH0KIH07CiAKLVdJREdFVF9UWVBFX0NBU1RTKFBsdWdp
blZpZXdCYXNlLCBpc1BsdWdpblZpZXdCYXNlKCkpOwotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CiAKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0lER0VUKFBsdWdpblZpZXdCYXNlLCBpc1BsdWdp
blZpZXdCYXNlKCkpCisKICNlbmRpZiAvLyBQbHVnaW5XaWRnZXRfaApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGx1Z2lucy93aW4vUGx1Z2luVmlld1dpbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbHVnaW5zL3dpbi9QbHVnaW5WaWV3V2luLmNwcAppbmRleCBlMDA2NWQzYmNiYmEyYmRmZTc3
Njk3MjE3ZTA0ZDBlN2E0ZjdkZmNhLi5mOTIxMmJhMjQ5ZjQ3N2UwMzY5MThlYzI2MTMyOGU3NmY3
ZGY5Zjg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL3dpbi9QbHVnaW5WaWV3
V2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL3dpbi9QbHVnaW5WaWV3V2luLmNw
cApAQCAtMzk2LDEzICszOTYsMTIgQEAgdm9pZCBQbHVnaW5WaWV3Ojp1cGRhdGVQbHVnaW5XaWRn
ZXQoKQogICAgIGlmICghcGFyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIEFTU0VSVChw
YXJlbnQoKS0+aXNGcmFtZVZpZXcoKSk7Ci0gICAgRnJhbWVWaWV3KiBmcmFtZVZpZXcgPSB0b0Zy
YW1lVmlldyhwYXJlbnQoKSk7CisgICAgRnJhbWVWaWV3JiBmcmFtZVZpZXcgPSBkb3duY2FzdDxG
cmFtZVZpZXc+KCpwYXJlbnQoKSk7CiAKICAgICBJbnRSZWN0IG9sZFdpbmRvd1JlY3QgPSBtX3dp
bmRvd1JlY3Q7CiAgICAgSW50UmVjdCBvbGRDbGlwUmVjdCA9IG1fY2xpcFJlY3Q7CiAKLSAgICBt
X3dpbmRvd1JlY3QgPSBJbnRSZWN0KGZyYW1lVmlldy0+Y29udGVudHNUb1dpbmRvdyhmcmFtZVJl
Y3QoKS5sb2NhdGlvbigpKSwgZnJhbWVSZWN0KCkuc2l6ZSgpKTsKKyAgICBtX3dpbmRvd1JlY3Qg
PSBJbnRSZWN0KGZyYW1lVmlldy5jb250ZW50c1RvV2luZG93KGZyYW1lUmVjdCgpLmxvY2F0aW9u
KCkpLCBmcmFtZVJlY3QoKS5zaXplKCkpOwogICAgIG1fY2xpcFJlY3QgPSB3aW5kb3dDbGlwUmVj
dCgpOwogICAgIG1fY2xpcFJlY3QubW92ZSgtbV93aW5kb3dSZWN0LngoKSwgLW1fd2luZG93UmVj
dC55KCkpOwogCkBAIC01MTEsNyArNTEwLDcgQEAgdm9pZCBQbHVnaW5WaWV3OjpwYWludEludG9U
cmFuc2Zvcm1lZENvbnRleHQoSERDIGhkYykKIAogICAgIFdJTkRPV1BPUyB3aW5kb3dwb3MgPSB7
IDAsIDAsIDAsIDAsIDAsIDAsIDAgfTsKIAotICAgIEludFJlY3QgciA9IGNvbnRlbnRzVG9OYXRp
dmVXaW5kb3codG9GcmFtZVZpZXcocGFyZW50KCkpLCBmcmFtZVJlY3QoKSk7CisgICAgSW50UmVj
dCByID0gY29udGVudHNUb05hdGl2ZVdpbmRvdyhkb3duY2FzdDxGcmFtZVZpZXc+KHBhcmVudCgp
KSwgZnJhbWVSZWN0KCkpOwogCiAgICAgd2luZG93cG9zLnggPSByLngoKTsKICAgICB3aW5kb3dw
b3MueSA9IHIueSgpOwpAQCAtNTQzLDggKzU0Miw3IEBAIHZvaWQgUGx1Z2luVmlldzo6cGFpbnRX
aW5kb3dlZFBsdWdpbkludG9Db250ZXh0KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QK
ICAgICBBU1NFUlQobV9pc1dpbmRvd2VkKTsKICAgICBBU1NFUlQoY29udGV4dC0+c2hvdWxkSW5j
bHVkZUNoaWxkV2luZG93cygpKTsKIAotICAgIEFTU0VSVChwYXJlbnQoKS0+aXNGcmFtZVZpZXco
KSk7Ci0gICAgSW50UG9pbnQgbG9jYXRpb25JbldpbmRvdyA9IHRvRnJhbWVWaWV3KHBhcmVudCgp
KS0+Y29udmVydFRvQ29udGFpbmluZ1dpbmRvdyhmcmFtZVJlY3QoKS5sb2NhdGlvbigpKTsKKyAg
ICBJbnRQb2ludCBsb2NhdGlvbkluV2luZG93ID0gZG93bmNhc3Q8RnJhbWVWaWV3PigqcGFyZW50
KCkpLmNvbnZlcnRUb0NvbnRhaW5pbmdXaW5kb3coZnJhbWVSZWN0KCkubG9jYXRpb24oKSk7CiAK
ICAgICBMb2NhbFdpbmRvd3NDb250ZXh0IHdpbmRvd3NDb250ZXh0KGNvbnRleHQsIGZyYW1lUmVj
dCgpLCBmYWxzZSk7CiAKQEAgLTU5NiwxNSArNTk0LDEzIEBAIHZvaWQgUGx1Z2luVmlldzo6cGFp
bnQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiByZWN0KQogICAgICAg
ICByZXR1cm47CiAgICAgfQogCi0gICAgQVNTRVJUKHBhcmVudCgpLT5pc0ZyYW1lVmlldygpKTsK
LQogICAgIC8vIEluIHRoZSBHVEsgYW5kIFF0IHBvcnRzIHdlIGRyYXcgaW4gYW4gb2Zmc2NyZWVu
IGJ1ZmZlciBhbmQgZG9uJ3Qgd2FudCB0byB1c2UgdGhlIHdpbmRvdwogICAgIC8vIGNvb3JkaW5h
dGVzLgogI2lmIFBMQVRGT1JNKEdUSykKICAgICBJbnRSZWN0IHJlY3RJbldpbmRvdyhyZWN0KTsK
ICAgICByZWN0SW5XaW5kb3cuaW50ZXJzZWN0KGZyYW1lUmVjdCgpKTsKICNlbHNlCi0gICAgSW50
UmVjdCByZWN0SW5XaW5kb3cgPSB0b0ZyYW1lVmlldyhwYXJlbnQoKSktPmNvbnRlbnRzVG9XaW5k
b3coZnJhbWVSZWN0KCkpOworICAgIEludFJlY3QgcmVjdEluV2luZG93ID0gZG93bmNhc3Q8RnJh
bWVWaWV3PigqcGFyZW50KCkpLmNvbnRlbnRzVG9XaW5kb3coZnJhbWVSZWN0KCkpOwogI2VuZGlm
CiAgICAgTG9jYWxXaW5kb3dzQ29udGV4dCB3aW5kb3dzQ29udGV4dChjb250ZXh0LCByZWN0SW5X
aW5kb3csIG1faXNUcmFuc3BhcmVudCk7CiAKQEAgLTY1OCw3ICs2NTQsNyBAQCB2b2lkIFBsdWdp
blZpZXc6OmhhbmRsZU1vdXNlRXZlbnQoTW91c2VFdmVudCogZXZlbnQpCiAKICAgICBOUEV2ZW50
IG5wRXZlbnQ7CiAKLSAgICBJbnRQb2ludCBwID0gY29udGVudHNUb05hdGl2ZVdpbmRvdyh0b0Zy
YW1lVmlldyhwYXJlbnQoKSksIEludFBvaW50KGV2ZW50LT5wYWdlWCgpLCBldmVudC0+cGFnZVko
KSkpOworICAgIEludFBvaW50IHAgPSBjb250ZW50c1RvTmF0aXZlV2luZG93KGRvd25jYXN0PEZy
YW1lVmlldz4ocGFyZW50KCkpLCBJbnRQb2ludChldmVudC0+cGFnZVgoKSwgZXZlbnQtPnBhZ2VZ
KCkpKTsKIAogICAgIG5wRXZlbnQubFBhcmFtID0gTUFLRUxQQVJBTShwLngoKSwgcC55KCkpOwog
ICAgIG5wRXZlbnQud1BhcmFtID0gMDsKQEAgLTc3MSw3ICs3NjcsNyBAQCB2b2lkIFBsdWdpblZp
ZXc6OnNldE5QV2luZG93UmVjdChjb25zdCBJbnRSZWN0JiByZWN0KQogIyBpZiBQTEFURk9STShH
VEspCiAgICAgSW50UG9pbnQgcCA9IHJlY3QubG9jYXRpb24oKTsKICMgZWxzZQotICAgIEludFBv
aW50IHAgPSB0b0ZyYW1lVmlldyhwYXJlbnQoKSktPmNvbnRlbnRzVG9XaW5kb3cocmVjdC5sb2Nh
dGlvbigpKTsKKyAgICBJbnRQb2ludCBwID0gZG93bmNhc3Q8RnJhbWVWaWV3PigqcGFyZW50KCkp
LmNvbnRlbnRzVG9XaW5kb3cocmVjdC5sb2NhdGlvbigpKTsKICMgZW5kaWYKICAgICBtX25wV2lu
ZG93LnggPSBwLngoKTsKICAgICBtX25wV2luZG93LnkgPSBwLnkoKTsKQEAgLTk5MCw4ICs5ODYs
NyBAQCBQYXNzUmVmUHRyPEltYWdlPiBQbHVnaW5WaWV3OjpzbmFwc2hvdCgpCiAKICAgICAgICAg
Ly8gV2luZG93bGVzcyBwbHVnLWlucyBhc3N1bWUgdGhhdCB0aGV5J3JlIGRyYXdpbmcgb250byB0
aGUgdmlldydzIERDLgogICAgICAgICAvLyBUcmFuc2xhdGUgdGhlIGNvbnRleHQgc28gdGhhdCB0
aGUgcGx1Zy1pbiBkcmF3cyBhdCAoMCwgMCkuCi0gICAgICAgIEFTU0VSVChwYXJlbnQoKS0+aXNG
cmFtZVZpZXcoKSk7Ci0gICAgICAgIEludFBvaW50IHBvc2l0aW9uID0gdG9GcmFtZVZpZXcocGFy
ZW50KCkpLT5jb250ZW50c1RvV2luZG93KGZyYW1lUmVjdCgpKS5sb2NhdGlvbigpOworICAgICAg
ICBJbnRQb2ludCBwb3NpdGlvbiA9IGRvd25jYXN0PEZyYW1lVmlldz4oKnBhcmVudCgpKS5jb250
ZW50c1RvV2luZG93KGZyYW1lUmVjdCgpKS5sb2NhdGlvbigpOwogICAgICAgICB0cmFuc2Zvcm0u
ZUR4ID0gLXBvc2l0aW9uLngoKTsKICAgICAgICAgdHJhbnNmb3JtLmVEeSA9IC1wb3NpdGlvbi55
KCk7CiAgICAgICAgIFNldFdvcmxkVHJhbnNmb3JtKGhkYy5nZXQoKSwgJnRyYW5zZm9ybSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRW1iZWRkZWRPYmplY3Qu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVtYmVkZGVkT2JqZWN0LmNwcApp
bmRleCAzYmI3MjQzMjUyMzA2MzJjNWY0ZTI1NDE1MjU0YmFmMzVkZjFlMzA5Li5mYmQ0MGUzMjVl
ODM3OTllZDBmMTA0NmNiM2VhOGM1MzMwMjY0NmIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyRW1iZWRkZWRPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJFbWJlZGRlZE9iamVjdC5jcHAKQEAgLTEzMSw5ICsxMzEsOSBAQCBi
b29sIFJlbmRlckVtYmVkZGVkT2JqZWN0OjphbGxvd3NBY2NlbGVyYXRlZENvbXBvc2l0aW5nKCkg
Y29uc3QKIHsKICNpZiBQTEFURk9STShJT1MpCiAgICAgLy8gVGhlIHRpbWluZyBvZiBsYXllciBj
cmVhdGlvbiBpcyBkaWZmZXJlbnQgb24gdGhlIHBob25lLCBzaW5jZSB0aGUgcGx1Z2luIGNhbiBv
bmx5IGJlIG1hbmlwdWxhdGVkIGZyb20gdGhlIG1haW4gdGhyZWFkLgotICAgIHJldHVybiB3aWRn
ZXQoKSAmJiB3aWRnZXQoKS0+aXNQbHVnaW5WaWV3QmFzZSgpICYmIHRvUGx1Z2luVmlld0Jhc2Uo
d2lkZ2V0KCkpLT53aWxsUHJvdmlkZVBsdWdpbkxheWVyKCk7CisgICAgcmV0dXJuIGlzPFBsdWdp
blZpZXdCYXNlPih3aWRnZXQoKSkgJiYgZG93bmNhc3Q8UGx1Z2luVmlld0Jhc2U+KCp3aWRnZXQo
KSkud2lsbFByb3ZpZGVQbHVnaW5MYXllcigpOwogI2Vsc2UKLSAgICByZXR1cm4gd2lkZ2V0KCkg
JiYgd2lkZ2V0KCktPmlzUGx1Z2luVmlld0Jhc2UoKSAmJiB0b1BsdWdpblZpZXdCYXNlKHdpZGdl
dCgpKS0+cGxhdGZvcm1MYXllcigpOworICAgIHJldHVybiBpczxQbHVnaW5WaWV3QmFzZT4od2lk
Z2V0KCkpICYmIGRvd25jYXN0PFBsdWdpblZpZXdCYXNlPigqd2lkZ2V0KCkpLnBsYXRmb3JtTGF5
ZXIoKTsKICNlbmRpZgogfQogCkBAIC01MzksMjAgKzUzOSwyMCBAQCBib29sIFJlbmRlckVtYmVk
ZGVkT2JqZWN0Ojpub2RlQXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYgcmVxdWVzdCwgSGl0
VGVzdFJlcwogICAgIGlmICghUmVuZGVyV2lkZ2V0Ojpub2RlQXRQb2ludChyZXF1ZXN0LCByZXN1
bHQsIGxvY2F0aW9uSW5Db250YWluZXIsIGFjY3VtdWxhdGVkT2Zmc2V0LCBoaXRUZXN0QWN0aW9u
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgaWYgKCF3aWRnZXQoKSB8fCAhd2lkZ2V0
KCktPmlzUGx1Z2luVmlld0Jhc2UoKSkKKyAgICBpZiAoIWlzPFBsdWdpblZpZXdCYXNlPih3aWRn
ZXQoKSkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgUGx1Z2luVmlld0Jhc2UqIHZpZXcg
PSB0b1BsdWdpblZpZXdCYXNlKHdpZGdldCgpKTsKKyAgICBQbHVnaW5WaWV3QmFzZSYgdmlldyA9
IGRvd25jYXN0PFBsdWdpblZpZXdCYXNlPigqd2lkZ2V0KCkpOwogICAgIEludFBvaW50IHJvdW5k
ZWRQb2ludCA9IGxvY2F0aW9uSW5Db250YWluZXIucm91bmRlZFBvaW50KCk7CiAKLSAgICBpZiAo
U2Nyb2xsYmFyKiBob3Jpem9udGFsU2Nyb2xsYmFyID0gdmlldy0+aG9yaXpvbnRhbFNjcm9sbGJh
cigpKSB7CisgICAgaWYgKFNjcm9sbGJhciogaG9yaXpvbnRhbFNjcm9sbGJhciA9IHZpZXcuaG9y
aXpvbnRhbFNjcm9sbGJhcigpKSB7CiAgICAgICAgIGlmIChob3Jpem9udGFsU2Nyb2xsYmFyLT5z
aG91bGRQYXJ0aWNpcGF0ZUluSGl0VGVzdGluZygpICYmIGhvcml6b250YWxTY3JvbGxiYXItPmZy
YW1lUmVjdCgpLmNvbnRhaW5zKHJvdW5kZWRQb2ludCkpIHsKICAgICAgICAgICAgIHJlc3VsdC5z
ZXRTY3JvbGxiYXIoaG9yaXpvbnRhbFNjcm9sbGJhcik7CiAgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICAgICAgfQogICAgIH0KIAotICAgIGlmIChTY3JvbGxiYXIqIHZlcnRpY2FsU2Nyb2xs
YmFyID0gdmlldy0+dmVydGljYWxTY3JvbGxiYXIoKSkgeworICAgIGlmIChTY3JvbGxiYXIqIHZl
cnRpY2FsU2Nyb2xsYmFyID0gdmlldy52ZXJ0aWNhbFNjcm9sbGJhcigpKSB7CiAgICAgICAgIGlm
ICh2ZXJ0aWNhbFNjcm9sbGJhci0+c2hvdWxkUGFydGljaXBhdGVJbkhpdFRlc3RpbmcoKSAmJiB2
ZXJ0aWNhbFNjcm9sbGJhci0+ZnJhbWVSZWN0KCkuY29udGFpbnMocm91bmRlZFBvaW50KSkgewog
ICAgICAgICAgICAgcmVzdWx0LnNldFNjcm9sbGJhcih2ZXJ0aWNhbFNjcm9sbGJhcik7CiAgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTU2NCwxMCArNTY0LDEwIEBAIGJvb2wgUmVuZGVyRW1i
ZWRkZWRPYmplY3Q6Om5vZGVBdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiByZXF1ZXN0LCBI
aXRUZXN0UmVzCiAKIGJvb2wgUmVuZGVyRW1iZWRkZWRPYmplY3Q6OnNjcm9sbChTY3JvbGxEaXJl
Y3Rpb24gZGlyZWN0aW9uLCBTY3JvbGxHcmFudWxhcml0eSBncmFudWxhcml0eSwgZmxvYXQsIEVs
ZW1lbnQqKiwgUmVuZGVyQm94KiwgY29uc3QgSW50UG9pbnQmKQogewotICAgIGlmICghd2lkZ2V0
KCkgfHwgIXdpZGdldCgpLT5pc1BsdWdpblZpZXdCYXNlKCkpCisgICAgaWYgKCFpczxQbHVnaW5W
aWV3QmFzZT4od2lkZ2V0KCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICByZXR1cm4g
dG9QbHVnaW5WaWV3QmFzZSh3aWRnZXQoKSktPnNjcm9sbChkaXJlY3Rpb24sIGdyYW51bGFyaXR5
KTsKKyAgICByZXR1cm4gZG93bmNhc3Q8UGx1Z2luVmlld0Jhc2U+KCp3aWRnZXQoKSkuc2Nyb2xs
KGRpcmVjdGlvbiwgZ3JhbnVsYXJpdHkpOwogfQogCiBib29sIFJlbmRlckVtYmVkZGVkT2JqZWN0
Ojpsb2dpY2FsU2Nyb2xsKFNjcm9sbExvZ2ljYWxEaXJlY3Rpb24gZGlyZWN0aW9uLCBTY3JvbGxH
cmFudWxhcml0eSBncmFudWxhcml0eSwgZmxvYXQgbXVsdGlwbGllciwgRWxlbWVudCoqIHN0b3BF
bGVtZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYW1l
QmFzZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYW1lQmFzZS5oCmluZGV4
IGFhZTA0YTBkY2FiZGE2MDE2YWIwZDQ4MTBiNDJhYzc3MTM4NzM4YjMuLjE3YzlkOGYzMzViMThj
MGRmOTVmNmM0M2ZkZDkwYWYxOTYyY2YxMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJGcmFtZUJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyRnJhbWVCYXNlLmgKQEAgLTM5LDcgKzM5LDcgQEAgcHJvdGVjdGVkOgogICAgIFJlbmRl
ckZyYW1lQmFzZShIVE1MRnJhbWVFbGVtZW50QmFzZSYsIFBhc3NSZWY8UmVuZGVyU3R5bGU+KTsK
IAogcHVibGljOgotICAgIEZyYW1lVmlldyogY2hpbGRWaWV3KCkgY29uc3QgeyByZXR1cm4gdG9G
cmFtZVZpZXcoUmVuZGVyV2lkZ2V0Ojp3aWRnZXQoKSk7IH0KKyAgICBGcmFtZVZpZXcqIGNoaWxk
VmlldygpIGNvbnN0IHsgcmV0dXJuIGRvd25jYXN0PEZyYW1lVmlldz4oUmVuZGVyV2lkZ2V0Ojp3
aWRnZXQoKSk7IH0KIAogICAgIHZvaWQgbGF5b3V0V2l0aEZsYXR0ZW5pbmcoYm9vbCBmaXhlZFdp
ZHRoLCBib29sIGZpeGVkSGVpZ2h0KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGF5ZXJCYWNraW5nLmNwcAppbmRleCBkNjlhZDkyNzA3YmI5MDY1YWQ3YjgwMTZiNjQ5
ZGI1MjIzMTc1ZjAwLi5jOGI0YTMzOTdhNzU0OGQzNDE5MjJkMDUyODU1NzA2YmM2NDg0YTNjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcApA
QCAtMzE4LDggKzMxOCw4IEBAIHZvaWQgUmVuZGVyTGF5ZXJCYWNraW5nOjpjcmVhdGVQcmltYXJ5
R3JhcGhpY3NMYXllcigpCiB2b2lkIFJlbmRlckxheWVyQmFja2luZzo6bGF5ZXJXaWxsQmVEZXN0
cm95ZWQoKQogewogICAgIFJlbmRlck9iamVjdCYgcmVuZGVyZXIgPSB0aGlzLT5yZW5kZXJlcigp
OwotICAgIGlmIChyZW5kZXJlci5pc0VtYmVkZGVkT2JqZWN0KCkgJiYgdG9SZW5kZXJFbWJlZGRl
ZE9iamVjdChyZW5kZXJlcikuYWxsb3dzQWNjZWxlcmF0ZWRDb21wb3NpdGluZygpKSB7Ci0gICAg
ICAgIFBsdWdpblZpZXdCYXNlKiBwbHVnaW5WaWV3QmFzZSA9IHRvUGx1Z2luVmlld0Jhc2UodG9S
ZW5kZXJXaWRnZXQocmVuZGVyZXIpLndpZGdldCgpKTsKKyAgICBpZiAoaXM8UmVuZGVyRW1iZWRk
ZWRPYmplY3Q+KHJlbmRlcmVyKSAmJiBkb3duY2FzdDxSZW5kZXJFbWJlZGRlZE9iamVjdD4ocmVu
ZGVyZXIpLmFsbG93c0FjY2VsZXJhdGVkQ29tcG9zaXRpbmcoKSkgeworICAgICAgICBQbHVnaW5W
aWV3QmFzZSogcGx1Z2luVmlld0Jhc2UgPSBkb3duY2FzdDxQbHVnaW5WaWV3QmFzZT4oZG93bmNh
c3Q8UmVuZGVyV2lkZ2V0PihyZW5kZXJlcikud2lkZ2V0KCkpOwogICAgICAgICBpZiAocGx1Z2lu
Vmlld0Jhc2UgJiYgbV9ncmFwaGljc0xheWVyLT5jb250ZW50c0xheWVyRm9yTWVkaWEoKSkKICAg
ICAgICAgICAgIHBsdWdpblZpZXdCYXNlLT5kZXRhY2hQbHVnaW5MYXllcigpOwogICAgIH0KQEAg
LTU3Miw4ICs1NzIsOCBAQCBib29sIFJlbmRlckxheWVyQmFja2luZzo6dXBkYXRlQ29uZmlndXJh
dGlvbigpCiAgICAgaWYgKGlzRGlyZWN0bHlDb21wb3NpdGVkSW1hZ2UoKSkKICAgICAgICAgdXBk
YXRlSW1hZ2VDb250ZW50cygpOwogCi0gICAgaWYgKHJlbmRlcmVyKCkuaXNFbWJlZGRlZE9iamVj
dCgpICYmIHRvUmVuZGVyRW1iZWRkZWRPYmplY3QoJnJlbmRlcmVyKCkpLT5hbGxvd3NBY2NlbGVy
YXRlZENvbXBvc2l0aW5nKCkpIHsKLSAgICAgICAgUGx1Z2luVmlld0Jhc2UqIHBsdWdpblZpZXdC
YXNlID0gdG9QbHVnaW5WaWV3QmFzZSh0b1JlbmRlcldpZGdldCgmcmVuZGVyZXIoKSktPndpZGdl
dCgpKTsKKyAgICBpZiAoaXM8UmVuZGVyRW1iZWRkZWRPYmplY3Q+KHJlbmRlcmVyKCkpICYmIGRv
d25jYXN0PFJlbmRlckVtYmVkZGVkT2JqZWN0PihyZW5kZXJlcigpKS5hbGxvd3NBY2NlbGVyYXRl
ZENvbXBvc2l0aW5nKCkpIHsKKyAgICAgICAgUGx1Z2luVmlld0Jhc2UqIHBsdWdpblZpZXdCYXNl
ID0gZG93bmNhc3Q8UGx1Z2luVmlld0Jhc2U+KGRvd25jYXN0PFJlbmRlcldpZGdldD4ocmVuZGVy
ZXIoKSkud2lkZ2V0KCkpOwogI2lmIFBMQVRGT1JNKElPUykKICAgICAgICAgaWYgKHBsdWdpblZp
ZXdCYXNlICYmICFtX2dyYXBoaWNzTGF5ZXItPmNvbnRlbnRzTGF5ZXJGb3JNZWRpYSgpKSB7CiAg
ICAgICAgICAgICBwbHVnaW5WaWV3QmFzZS0+ZGV0YWNoUGx1Z2luTGF5ZXIoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKaW5kZXgg
NDU5YmQ5NDU1MTg5ZWE5NmJkYzA5ODEwZjE1MWExMWRmNGI2Y2I0ZC4uNzEwMzVjM2M3NjI5M2Jk
NjFlMTVjOWE2NDk3OGQ4MzcwYjJiZmU4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKQEAgLTIwNjgsNyArMjA2OCw2IEBAIGJv
b2wgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpzaG91bGRQcm9wYWdhdGVDb21wb3NpdGluZ1RvRW5j
bG9zaW5nRnJhbWUoKSBjb25zdAogICAgIC8vIGlzIHRvIGhhdmUgdGhlIHBhcmVudCBkb2N1bWVu
dCBiZWNvbWUgY29tcG9zaXRlZCB0b28uIEhvd2V2ZXIsIHRoaXMgY2FuIGNhdXNlIHByb2JsZW1z
IG9uIHBsYXRmb3JtcyB0aGF0CiAgICAgLy8gdXNlIG5hdGl2ZSB2aWV3cyBmb3IgZnJhbWVzIChs
aWtlIE1hYyksIHNvIGRpc2FibGUgdGhhdCBiZWhhdmlvciBvbiB0aG9zZSBwbGF0Zm9ybXMgZm9y
IG5vdy4KICAgICBIVE1MRnJhbWVPd25lckVsZW1lbnQqIG93bmVyRWxlbWVudCA9IG1fcmVuZGVy
Vmlldy5kb2N1bWVudCgpLm93bmVyRWxlbWVudCgpOwotICAgIFJlbmRlckVsZW1lbnQqIHJlbmRl
cmVyID0gb3duZXJFbGVtZW50ID8gb3duZXJFbGVtZW50LT5yZW5kZXJlcigpIDogMDsKIAogICAg
IC8vIElmIHdlIGFyZSB0aGUgdG9wLWxldmVsIGZyYW1lLCBkb24ndCBwcm9wYWdhdGUuCiAgICAg
aWYgKCFvd25lckVsZW1lbnQpCkBAIC0yMDc3LDcgKzIwNzYsOCBAQCBib29sIFJlbmRlckxheWVy
Q29tcG9zaXRvcjo6c2hvdWxkUHJvcGFnYXRlQ29tcG9zaXRpbmdUb0VuY2xvc2luZ0ZyYW1lKCkg
Y29uc3QKICAgICBpZiAoIWFsbG93c0luZGVwZW5kZW50bHlDb21wb3NpdGVkRnJhbWVzKCZtX3Jl
bmRlclZpZXcuZnJhbWVWaWV3KCkpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIGlmICgh
cmVuZGVyZXIgfHwgIXJlbmRlcmVyLT5pc1dpZGdldCgpKQorICAgIFJlbmRlckVsZW1lbnQqIHJl
bmRlcmVyID0gb3duZXJFbGVtZW50LT5yZW5kZXJlcigpOworICAgIGlmICghaXM8UmVuZGVyV2lk
Z2V0PihyZW5kZXJlcikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIC8vIE9uIE1hYywg
b25seSBwcm9wYWdhdGUgY29tcG9zaXRpbmcgaWYgdGhlIGZyYW1lIGlzIG92ZXJsYXBwZWQgaW4g
dGhlIHBhcmVudApAQCAtMjA4NiwxMSArMjA4NiwxMCBAQCBib29sIFJlbmRlckxheWVyQ29tcG9z
aXRvcjo6c2hvdWxkUHJvcGFnYXRlQ29tcG9zaXRpbmdUb0VuY2xvc2luZ0ZyYW1lKCkgY29uc3QK
ICAgICBpZiAocGFnZSAmJiBwYWdlLT5wYWdlU2NhbGVGYWN0b3IoKSAhPSAxKQogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICAKLSAgICBSZW5kZXJXaWRnZXQqIGZyYW1lUmVuZGVyZXIgPSB0b1Jl
bmRlcldpZGdldChyZW5kZXJlcik7Ci0gICAgaWYgKGZyYW1lUmVuZGVyZXItPndpZGdldCgpKSB7
Ci0gICAgICAgIEFTU0VSVChmcmFtZVJlbmRlcmVyLT53aWRnZXQoKS0+aXNGcmFtZVZpZXcoKSk7
Ci0gICAgICAgIEZyYW1lVmlldyogdmlldyA9IHRvRnJhbWVWaWV3KGZyYW1lUmVuZGVyZXItPndp
ZGdldCgpKTsKLSAgICAgICAgaWYgKHZpZXctPmlzT3ZlcmxhcHBlZEluY2x1ZGluZ0FuY2VzdG9y
cygpIHx8IHZpZXctPmhhc0NvbXBvc2l0aW5nQW5jZXN0b3IoKSkKKyAgICBSZW5kZXJXaWRnZXQm
IGZyYW1lUmVuZGVyZXIgPSBkb3duY2FzdDxSZW5kZXJXaWRnZXQ+KCpyZW5kZXJlcik7CisgICAg
aWYgKGZyYW1lUmVuZGVyZXIud2lkZ2V0KCkpIHsKKyAgICAgICAgRnJhbWVWaWV3JiB2aWV3ID0g
ZG93bmNhc3Q8RnJhbWVWaWV3PigqZnJhbWVSZW5kZXJlci53aWRnZXQoKSk7CisgICAgICAgIGlm
ICh2aWV3LmlzT3ZlcmxhcHBlZEluY2x1ZGluZ0FuY2VzdG9ycygpIHx8IHZpZXcuaGFzQ29tcG9z
aXRpbmdBbmNlc3RvcigpKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVHJlZUFzVGV4dC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVHJlZUFzVGV4dC5jcHAKaW5kZXggMzliNzQ0
ZTQ0ZWVkNTA2NjI1ODkzYjA2M2ViMTdjNGY1NTg0NTBmMS4uZjkyNDA2NGFjZmQ3ZGRhNDA0NTAy
MzAyYjM1ZDI1ZTExZDljZGY3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRyZWVBc1RleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUcmVlQXNUZXh0LmNwcApAQCAtNTYzLDE2ICs1NjMsMTUgQEAgdm9pZCB3cml0ZShUZXh0U3Ry
ZWFtJiB0cywgY29uc3QgUmVuZGVyT2JqZWN0JiBvLCBpbnQgaW5kZW50LCBSZW5kZXJBc1RleHRC
ZWhhdmkKICAgICAgICAgfQogICAgIH0KIAotICAgIGlmIChvLmlzV2lkZ2V0KCkpIHsKLSAgICAg
ICAgV2lkZ2V0KiB3aWRnZXQgPSB0b1JlbmRlcldpZGdldCgmbyktPndpZGdldCgpOwotICAgICAg
ICBpZiAod2lkZ2V0ICYmIHdpZGdldC0+aXNGcmFtZVZpZXcoKSkgewotICAgICAgICAgICAgRnJh
bWVWaWV3KiB2aWV3ID0gdG9GcmFtZVZpZXcod2lkZ2V0KTsKLSAgICAgICAgICAgIGlmIChSZW5k
ZXJWaWV3KiByb290ID0gdmlldy0+ZnJhbWUoKS5jb250ZW50UmVuZGVyZXIoKSkgeworICAgIGlm
IChpczxSZW5kZXJXaWRnZXQ+KG8pKSB7CisgICAgICAgIFdpZGdldCogd2lkZ2V0ID0gZG93bmNh
c3Q8UmVuZGVyV2lkZ2V0PihvKS53aWRnZXQoKTsKKyAgICAgICAgaWYgKGlzPEZyYW1lVmlldz4o
d2lkZ2V0KSkgeworICAgICAgICAgICAgRnJhbWVWaWV3JiB2aWV3ID0gZG93bmNhc3Q8RnJhbWVW
aWV3Pigqd2lkZ2V0KTsKKyAgICAgICAgICAgIGlmIChSZW5kZXJWaWV3KiByb290ID0gdmlldy5m
cmFtZSgpLmNvbnRlbnRSZW5kZXJlcigpKSB7CiAgICAgICAgICAgICAgICAgaWYgKCEoYmVoYXZp
b3IgJiBSZW5kZXJBc1RleHREb250VXBkYXRlTGF5b3V0KSkKLSAgICAgICAgICAgICAgICAgICAg
dmlldy0+bGF5b3V0KCk7Ci0gICAgICAgICAgICAgICAgUmVuZGVyTGF5ZXIqIGwgPSByb290LT5s
YXllcigpOwotICAgICAgICAgICAgICAgIGlmIChsKQotICAgICAgICAgICAgICAgICAgICB3cml0
ZUxheWVycyh0cywgbCwgbCwgbC0+cmVjdCgpLCBpbmRlbnQgKyAxLCBiZWhhdmlvcik7CisgICAg
ICAgICAgICAgICAgICAgIHZpZXcubGF5b3V0KCk7CisgICAgICAgICAgICAgICAgaWYgKFJlbmRl
ckxheWVyKiBsYXllciA9IHJvb3QtPmxheWVyKCkpCisgICAgICAgICAgICAgICAgICAgIHdyaXRl
TGF5ZXJzKHRzLCBsYXllciwgbGF5ZXIsIGxheWVyLT5yZWN0KCksIGluZGVudCArIDEsIGJlaGF2
aW9yKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJXaWRnZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlcldpZGdldC5jcHAKaW5kZXggM2NiMTk4YzFmZDllZTcxNTg5YTEzYzA2MmM3
NjE3ZTY3ZTVmMzQ0MC4uZjU0OTllOWU0MmRhOWJiZTZjMTRkZmQwMGVkYTYxZmZhM2IzYTJiNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcldpZGdldC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcldpZGdldC5jcHAKQEAgLTYxLDcgKzYx
LDcgQEAgdm9pZCBXaWRnZXRIaWVyYXJjaHlVcGRhdGVzU3VzcGVuc2lvblNjb3BlOjptb3ZlV2lk
Z2V0cygpCiAgICAgICAgIEZyYW1lVmlldyogbmV3UGFyZW50ID0gaXQtPnZhbHVlOwogICAgICAg
ICBpZiAobmV3UGFyZW50ICE9IGN1cnJlbnRQYXJlbnQpIHsKICAgICAgICAgICAgIGlmIChjdXJy
ZW50UGFyZW50KQotICAgICAgICAgICAgICAgIGN1cnJlbnRQYXJlbnQtPnJlbW92ZUNoaWxkKGNo
aWxkKTsKKyAgICAgICAgICAgICAgICBjdXJyZW50UGFyZW50LT5yZW1vdmVDaGlsZCgqY2hpbGQp
OwogICAgICAgICAgICAgaWYgKG5ld1BhcmVudCkKICAgICAgICAgICAgICAgICBuZXdQYXJlbnQt
PmFkZENoaWxkKGNoaWxkKTsKICAgICAgICAgfQpAQCAtMjM4LDkgKzIzOCw5IEBAIHZvaWQgUmVu
ZGVyV2lkZ2V0OjpwYWludENvbnRlbnRzKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlv
dXRQb2ludCYgcGFpbnRPCiAgICAgaWYgKCF3aWRnZXRQYWludE9mZnNldC5pc1plcm8oKSkKICAg
ICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPnRyYW5zbGF0ZSgtd2lkZ2V0UGFpbnRPZmZzZXQpOwog
Ci0gICAgaWYgKG1fd2lkZ2V0LT5pc0ZyYW1lVmlldygpKSB7Ci0gICAgICAgIEZyYW1lVmlldyog
ZnJhbWVWaWV3ID0gdG9GcmFtZVZpZXcobV93aWRnZXQuZ2V0KCkpOwotICAgICAgICBib29sIHJ1
bk92ZXJsYXBUZXN0cyA9ICFmcmFtZVZpZXctPnVzZVNsb3dSZXBhaW50c0lmTm90T3ZlcmxhcHBl
ZCgpIHx8IGZyYW1lVmlldy0+aGFzQ29tcG9zaXRlZENvbnRlbnRJbmNsdWRpbmdEZXNjZW5kYW50
cygpOworICAgIGlmIChpczxGcmFtZVZpZXc+KCptX3dpZGdldCkpIHsKKyAgICAgICAgRnJhbWVW
aWV3JiBmcmFtZVZpZXcgPSBkb3duY2FzdDxGcmFtZVZpZXc+KCptX3dpZGdldCk7CisgICAgICAg
IGJvb2wgcnVuT3ZlcmxhcFRlc3RzID0gIWZyYW1lVmlldy51c2VTbG93UmVwYWludHNJZk5vdE92
ZXJsYXBwZWQoKSB8fCBmcmFtZVZpZXcuaGFzQ29tcG9zaXRlZENvbnRlbnRJbmNsdWRpbmdEZXNj
ZW5kYW50cygpOwogICAgICAgICBpZiAocGFpbnRJbmZvLm92ZXJsYXBUZXN0UmVxdWVzdHMgJiYg
cnVuT3ZlcmxhcFRlc3RzKSB7CiAgICAgICAgICAgICBBU1NFUlQoIXBhaW50SW5mby5vdmVybGFw
VGVzdFJlcXVlc3RzLT5jb250YWlucyh0aGlzKSk7CiAgICAgICAgICAgICBwYWludEluZm8ub3Zl
cmxhcFRlc3RSZXF1ZXN0cy0+c2V0KHRoaXMsIG1fd2lkZ2V0LT5mcmFtZVJlY3QoKSk7CkBAIC0z
MDEsOCArMzAxLDcgQEAgdm9pZCBSZW5kZXJXaWRnZXQ6OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJ
bmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQpCiB2b2lkIFJlbmRlcldpZGdldDo6
c2V0T3ZlcmxhcFRlc3RSZXN1bHQoYm9vbCBpc092ZXJsYXBwZWQpCiB7CiAgICAgQVNTRVJUKG1f
d2lkZ2V0KTsKLSAgICBBU1NFUlQobV93aWRnZXQtPmlzRnJhbWVWaWV3KCkpOwotICAgIHRvRnJh
bWVWaWV3KG1fd2lkZ2V0LmdldCgpKS0+c2V0SXNPdmVybGFwcGVkKGlzT3ZlcmxhcHBlZCk7Cisg
ICAgZG93bmNhc3Q8RnJhbWVWaWV3PigqbV93aWRnZXQpLnNldElzT3ZlcmxhcHBlZChpc092ZXJs
YXBwZWQpOwogfQogCiB2b2lkIFJlbmRlcldpZGdldDo6dXBkYXRlV2lkZ2V0UG9zaXRpb24oKQpA
QCAtMzE3LDExICszMTYsMTEgQEAgdm9pZCBSZW5kZXJXaWRnZXQ6OnVwZGF0ZVdpZGdldFBvc2l0
aW9uKCkKIAogICAgIC8vIGlmIHRoZSBmcmFtZSBzaXplIGdvdCBjaGFuZ2VkLCBvciBpZiB2aWV3
IG5lZWRzIGxheW91dCAocG9zc2libHkgaW5kaWNhdGluZwogICAgIC8vIGNvbnRlbnQgc2l6ZSBp
cyB3cm9uZykgd2UgaGF2ZSB0byBkbyBhIGxheW91dCB0byBzZXQgdGhlIHJpZ2h0IHdpZGdldCBz
aXplLgotICAgIGlmIChtX3dpZGdldC0+aXNGcmFtZVZpZXcoKSkgewotICAgICAgICBGcmFtZVZp
ZXcqIGZyYW1lVmlldyA9IHRvRnJhbWVWaWV3KG1fd2lkZ2V0LmdldCgpKTsKKyAgICBpZiAoaXM8
RnJhbWVWaWV3PigqbV93aWRnZXQpKSB7CisgICAgICAgIEZyYW1lVmlldyYgZnJhbWVWaWV3ID0g
ZG93bmNhc3Q8RnJhbWVWaWV3PigqbV93aWRnZXQpOwogICAgICAgICAvLyBDaGVjayB0aGUgZnJh
bWUncyBwYWdlIHRvIG1ha2Ugc3VyZSB0aGF0IHRoZSBmcmFtZSBpc24ndCBpbiB0aGUgcHJvY2Vz
cyBvZiBiZWluZyBkZXN0cm95ZWQuCi0gICAgICAgIGlmICgod2lkZ2V0U2l6ZUNoYW5nZWQgfHwg
ZnJhbWVWaWV3LT5uZWVkc0xheW91dCgpKSAmJiBmcmFtZVZpZXctPmZyYW1lKCkucGFnZSgpKQot
ICAgICAgICAgICAgZnJhbWVWaWV3LT5sYXlvdXQoKTsKKyAgICAgICAgaWYgKCh3aWRnZXRTaXpl
Q2hhbmdlZCB8fCBmcmFtZVZpZXcubmVlZHNMYXlvdXQoKSkgJiYgZnJhbWVWaWV3LmZyYW1lKCku
cGFnZSgpKQorICAgICAgICAgICAgZnJhbWVWaWV3LmxheW91dCgpOwogICAgIH0KIH0KIApAQCAt
MzQ2LDE3ICszNDUsMTcgQEAgUmVuZGVyV2lkZ2V0KiBSZW5kZXJXaWRnZXQ6OmZpbmQoY29uc3Qg
V2lkZ2V0KiB3aWRnZXQpCiAKIGJvb2wgUmVuZGVyV2lkZ2V0Ojpub2RlQXRQb2ludChjb25zdCBI
aXRUZXN0UmVxdWVzdCYgcmVxdWVzdCwgSGl0VGVzdFJlc3VsdCYgcmVzdWx0LCBjb25zdCBIaXRU
ZXN0TG9jYXRpb24mIGxvY2F0aW9uSW5Db250YWluZXIsIGNvbnN0IExheW91dFBvaW50JiBhY2N1
bXVsYXRlZE9mZnNldCwgSGl0VGVzdEFjdGlvbiBhY3Rpb24pCiB7Ci0gICAgaWYgKHJlcXVlc3Qu
YWxsb3dzQ2hpbGRGcmFtZUNvbnRlbnQoKSAmJiB3aWRnZXQoKSAmJiB3aWRnZXQoKS0+aXNGcmFt
ZVZpZXcoKSAmJiB0b0ZyYW1lVmlldyh3aWRnZXQoKSktPnJlbmRlclZpZXcoKSkgewotICAgICAg
ICBGcmFtZVZpZXcqIGNoaWxkRnJhbWVWaWV3ID0gdG9GcmFtZVZpZXcod2lkZ2V0KCkpOwotICAg
ICAgICBSZW5kZXJWaWV3KiBjaGlsZFJvb3QgPSBjaGlsZEZyYW1lVmlldy0+cmVuZGVyVmlldygp
OworICAgIGlmIChyZXF1ZXN0LmFsbG93c0NoaWxkRnJhbWVDb250ZW50KCkgJiYgaXM8RnJhbWVW
aWV3Pih3aWRnZXQoKSkgJiYgZG93bmNhc3Q8RnJhbWVWaWV3Pigqd2lkZ2V0KCkpLnJlbmRlclZp
ZXcoKSkgeworICAgICAgICBGcmFtZVZpZXcmIGNoaWxkRnJhbWVWaWV3ID0gZG93bmNhc3Q8RnJh
bWVWaWV3Pigqd2lkZ2V0KCkpOworICAgICAgICBSZW5kZXJWaWV3JiBjaGlsZFJvb3QgPSAqY2hp
bGRGcmFtZVZpZXcucmVuZGVyVmlldygpOwogCiAgICAgICAgIExheW91dFBvaW50IGFkanVzdGVk
TG9jYXRpb24gPSBhY2N1bXVsYXRlZE9mZnNldCArIGxvY2F0aW9uKCk7Ci0gICAgICAgIExheW91
dFBvaW50IGNvbnRlbnRPZmZzZXQgPSBMYXlvdXRQb2ludChib3JkZXJMZWZ0KCkgKyBwYWRkaW5n
TGVmdCgpLCBib3JkZXJUb3AoKSArIHBhZGRpbmdUb3AoKSkgLSBjaGlsZEZyYW1lVmlldy0+c2Ny
b2xsT2Zmc2V0KCk7CisgICAgICAgIExheW91dFBvaW50IGNvbnRlbnRPZmZzZXQgPSBMYXlvdXRQ
b2ludChib3JkZXJMZWZ0KCkgKyBwYWRkaW5nTGVmdCgpLCBib3JkZXJUb3AoKSArIHBhZGRpbmdU
b3AoKSkgLSBjaGlsZEZyYW1lVmlldy5zY3JvbGxPZmZzZXQoKTsKICAgICAgICAgSGl0VGVzdExv
Y2F0aW9uIG5ld0hpdFRlc3RMb2NhdGlvbihsb2NhdGlvbkluQ29udGFpbmVyLCAtYWRqdXN0ZWRM
b2NhdGlvbiAtIGNvbnRlbnRPZmZzZXQpOwogICAgICAgICBIaXRUZXN0UmVxdWVzdCBuZXdIaXRU
ZXN0UmVxdWVzdChyZXF1ZXN0LnR5cGUoKSB8IEhpdFRlc3RSZXF1ZXN0OjpDaGlsZEZyYW1lSGl0
VGVzdCk7CiAgICAgICAgIEhpdFRlc3RSZXN1bHQgY2hpbGRGcmFtZVJlc3VsdChuZXdIaXRUZXN0
TG9jYXRpb24pOwogCi0gICAgICAgIGJvb2wgaXNJbnNpZGVDaGlsZEZyYW1lID0gY2hpbGRSb290
LT5oaXRUZXN0KG5ld0hpdFRlc3RSZXF1ZXN0LCBuZXdIaXRUZXN0TG9jYXRpb24sIGNoaWxkRnJh
bWVSZXN1bHQpOworICAgICAgICBib29sIGlzSW5zaWRlQ2hpbGRGcmFtZSA9IGNoaWxkUm9vdC5o
aXRUZXN0KG5ld0hpdFRlc3RSZXF1ZXN0LCBuZXdIaXRUZXN0TG9jYXRpb24sIGNoaWxkRnJhbWVS
ZXN1bHQpOwogCiAgICAgICAgIGlmIChuZXdIaXRUZXN0TG9jYXRpb24uaXNSZWN0QmFzZWRUZXN0
KCkpCiAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKGNoaWxkRnJhbWVSZXN1bHQpOwpAQCAtNDAx
LDkgKzQwMCw5IEBAIGJvb2wgUmVuZGVyV2lkZ2V0OjpuZWVkc1ByZWZlcnJlZFdpZHRoc1JlY2Fs
Y3VsYXRpb24oKSBjb25zdAogCiBSZW5kZXJCb3gqIFJlbmRlcldpZGdldDo6ZW1iZWRkZWRDb250
ZW50Qm94KCkgY29uc3QKIHsKLSAgICBpZiAoIXdpZGdldCgpIHx8ICF3aWRnZXQoKS0+aXNGcmFt
ZVZpZXcoKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgcmV0dXJuIHRvRnJhbWVWaWV3KHdpZGdl
dCgpKS0+ZW1iZWRkZWRDb250ZW50Qm94KCk7CisgICAgaWYgKCFpczxGcmFtZVZpZXc+KHdpZGdl
dCgpKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIGRvd25jYXN0PEZyYW1l
Vmlldz4oKndpZGdldCgpKS5lbWJlZGRlZENvbnRlbnRCb3goKTsKIH0KIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJSZW5k
ZXJOb2RlLm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJSZW5kZXJOb2RlLm1tCmlu
ZGV4IDZhZWIwOTkzOTBiMzAzYTQxNzUzY2RiZjI1NTlmNDZhNWM3ODM1OGIuLmNmZWMyZTZlZGJk
MGEwYzQyMTI3NjVlMzFkZWJkYzY2YWRkYWU3N2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
bWFjL1dlYlZpZXcvV2ViUmVuZGVyTm9kZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJW
aWV3L1dlYlJlbmRlck5vZGUubW0KQEAgLTk1LDkgKzk1LDkgQEAgc3RhdGljIFdlYlJlbmRlck5v
ZGUgKmNvcHlSZW5kZXJOb2RlKFJlbmRlck9iamVjdCogbm9kZSkKIAogICAgIE5TU3RyaW5nICpu
YW1lID0gW1tOU1N0cmluZyBhbGxvY10gaW5pdFdpdGhVVEY4U3RyaW5nOm5vZGUtPnJlbmRlck5h
bWUoKV07CiAgICAgCi0gICAgUmVuZGVyV2lkZ2V0KiByZW5kZXJXaWRnZXQgPSBub2RlLT5pc1dp
ZGdldCgpID8gdG9SZW5kZXJXaWRnZXQobm9kZSkgOiBudWxscHRyOworICAgIFJlbmRlcldpZGdl
dCogcmVuZGVyV2lkZ2V0ID0gaXM8UmVuZGVyV2lkZ2V0Pigqbm9kZSkgPyBkb3duY2FzdDxSZW5k
ZXJXaWRnZXQ+KG5vZGUpIDogbnVsbHB0cjsKICAgICBXaWRnZXQqIHdpZGdldCA9IHJlbmRlcldp
ZGdldCA/IHJlbmRlcldpZGdldC0+d2lkZ2V0KCkgOiBudWxscHRyOwotICAgIEZyYW1lVmlldyog
ZnJhbWVWaWV3ID0gd2lkZ2V0ICYmIHdpZGdldC0+aXNGcmFtZVZpZXcoKSA/IHRvRnJhbWVWaWV3
KHdpZGdldCkgOiBudWxscHRyOworICAgIEZyYW1lVmlldyogZnJhbWVWaWV3ID0gaXM8RnJhbWVW
aWV3Pih3aWRnZXQpID8gZG93bmNhc3Q8RnJhbWVWaWV3Pih3aWRnZXQpIDogbnVsbHB0cjsKICAg
ICBGcmFtZSogZnJhbWUgPSBmcmFtZVZpZXcgPyAmZnJhbWVWaWV3LT5mcmFtZSgpIDogbnVsbHB0
cjsKIAogICAgIC8vIEZJWE1FOiBicm9rZW4gd2l0aCB0cmFuc2Zvcm1zCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9X
ZWJWaWV3L1dlYlZpZXcubW0KaW5kZXggYzI5OGE5NmE3ODZmZTlmODY3ODdmNGQzNWI4MzU1NzVh
NDQwMzZlZi4uYjFjZjMyMDY1YmEyMGU3NmM3ZTMyNzFhZThjMzAxMzE5NzZjMDdjNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQpAQCAtMjk1OCw4ICsyOTU4LDggQEAgLSAodm9p
ZClfYWRkU2Nyb2xsZXJEYXNoYm9hcmRSZWdpb25zRm9yRnJhbWVWaWV3OihGcmFtZVZpZXcqKWZy
YW1lVmlldyBkYXNoYm9hcmQKICAgICBOU1ZpZXcgKmRvY3VtZW50VmlldyA9IFtba2l0KCZmcmFt
ZVZpZXctPmZyYW1lKCkpIGZyYW1lVmlld10gZG9jdW1lbnRWaWV3XTsKIAogICAgIGZvciAoY29u
c3QgYXV0byYgd2lkZ2V0OiBmcmFtZVZpZXctPmNoaWxkcmVuKCkpIHsKLSAgICAgICAgaWYgKHdp
ZGdldC0+aXNGcmFtZVZpZXcoKSkgewotICAgICAgICAgICAgW3NlbGYgX2FkZFNjcm9sbGVyRGFz
aGJvYXJkUmVnaW9uc0ZvckZyYW1lVmlldzp0b0ZyYW1lVmlldyh3aWRnZXQuZ2V0KCkpIGRhc2hi
b2FyZFJlZ2lvbnM6cmVnaW9uc107CisgICAgICAgIGlmIChpczxGcmFtZVZpZXc+KCp3aWRnZXQp
KSB7CisgICAgICAgICAgICBbc2VsZiBfYWRkU2Nyb2xsZXJEYXNoYm9hcmRSZWdpb25zRm9yRnJh
bWVWaWV3OmRvd25jYXN0PEZyYW1lVmlldz4od2lkZ2V0LmdldCgpKSBkYXNoYm9hcmRSZWdpb25z
OnJlZ2lvbnNdOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvRW1iZWRkZWRXaWRnZXQuY3BwIGIv
U291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvRW1iZWRkZWRXaWRnZXQuY3BwCmluZGV4
IDE1MmRiZTkwZTZkNzhlZDU4MmIzZWQwMGY1MzQyNDAyNjE3NmU1ZTEuLjNlZmFjNjBmZGU5NGY3
MjA0ZTFmMWM4NzdiZWJjNzYyYmUxNTEzY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2lu
L1dlYkNvcmVTdXBwb3J0L0VtYmVkZGVkV2lkZ2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3dp
bi9XZWJDb3JlU3VwcG9ydC9FbWJlZGRlZFdpZGdldC5jcHAKQEAgLTkzLDEzICs5MywxMiBAQCB2
b2lkIEVtYmVkZGVkV2lkZ2V0OjpmcmFtZVJlY3RzQ2hhbmdlZCgpCiAgICAgaWYgKCFwYXJlbnQo
KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgQVNTRVJUKHBhcmVudCgpLT5pc0ZyYW1lVmlldygp
KTsKLSAgICBGcmFtZVZpZXcqIGZyYW1lVmlldyA9IHRvRnJhbWVWaWV3KHBhcmVudCgpKTsKKyAg
ICBGcmFtZVZpZXcmIGZyYW1lVmlldyA9IGRvd25jYXN0PEZyYW1lVmlldz4oKnBhcmVudCgpKTsK
IAogICAgIEludFJlY3Qgb2xkV2luZG93UmVjdCA9IG1fd2luZG93UmVjdDsKICAgICBJbnRSZWN0
IG9sZENsaXBSZWN0ID0gbV9jbGlwUmVjdDsKIAotICAgIG1fd2luZG93UmVjdCA9IEludFJlY3Qo
ZnJhbWVWaWV3LT5jb250ZW50c1RvV2luZG93KGZyYW1lUmVjdCgpLmxvY2F0aW9uKCkpLCBmcmFt
ZVJlY3QoKS5zaXplKCkpOworICAgIG1fd2luZG93UmVjdCA9IEludFJlY3QoZnJhbWVWaWV3LmNv
bnRlbnRzVG9XaW5kb3coZnJhbWVSZWN0KCkubG9jYXRpb24oKSksIGZyYW1lUmVjdCgpLnNpemUo
KSk7CiAgICAgbV9jbGlwUmVjdCA9IHdpbmRvd0NsaXBSZWN0KCk7CiAgICAgbV9jbGlwUmVjdC5t
b3ZlKC1tX3dpbmRvd1JlY3QueCgpLCAtbV93aW5kb3dSZWN0LnkoKSk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJSZW5kZXJPYmplY3QuY3BwIGIvU291cmNlL1dlYktp
dDIvU2hhcmVkL1dlYlJlbmRlck9iamVjdC5jcHAKaW5kZXggZGYyYmQxM2JlYzY4YmExYzAwYTQx
M2VhYmRhNDA5YzYzMTc3ZjRmNC4uZmE4ZDU5NWE1ZWMzY2EzYWYwNmJkOTBlNDg0YTdkYzA1MDFh
MDFkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlJlbmRlck9iamVjdC5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlJlbmRlck9iamVjdC5jcHAKQEAgLTEw
NiwxMSArMTA2LDExIEBAIFdlYlJlbmRlck9iamVjdDo6V2ViUmVuZGVyT2JqZWN0KFJlbmRlck9i
amVjdCogcmVuZGVyZXIsIGJvb2wgc2hvdWxkSW5jbHVkZURlc2NlCiAgICAgICAgIGNoaWxkcmVu
LmFwcGVuZChXVEY6Om1vdmUoY2hpbGQpKTsKICAgICB9CiAKLSAgICBpZiAocmVuZGVyZXItPmlz
V2lkZ2V0KCkpIHsKLSAgICAgICAgaWYgKFdpZGdldCogd2lkZ2V0ID0gdG9SZW5kZXJXaWRnZXQo
cmVuZGVyZXIpLT53aWRnZXQoKSkgewotICAgICAgICAgICAgaWYgKHdpZGdldC0+aXNGcmFtZVZp
ZXcoKSkgewotICAgICAgICAgICAgICAgIEZyYW1lVmlldyogZnJhbWVWaWV3ID0gdG9GcmFtZVZp
ZXcod2lkZ2V0KTsKLSAgICAgICAgICAgICAgICBpZiAoUmVuZGVyVmlldyogY29yZUNvbnRlbnRS
ZW5kZXJlciA9IGZyYW1lVmlldy0+ZnJhbWUoKS5jb250ZW50UmVuZGVyZXIoKSkgeworICAgIGlm
IChpczxSZW5kZXJXaWRnZXQ+KCpyZW5kZXJlcikpIHsKKyAgICAgICAgaWYgKFdpZGdldCogd2lk
Z2V0ID0gZG93bmNhc3Q8UmVuZGVyV2lkZ2V0PigqcmVuZGVyZXIpLndpZGdldCgpKSB7CisgICAg
ICAgICAgICBpZiAoaXM8RnJhbWVWaWV3Pigqd2lkZ2V0KSkgeworICAgICAgICAgICAgICAgIEZy
YW1lVmlldyYgZnJhbWVWaWV3ID0gZG93bmNhc3Q8RnJhbWVWaWV3Pigqd2lkZ2V0KTsKKyAgICAg
ICAgICAgICAgICBpZiAoUmVuZGVyVmlldyogY29yZUNvbnRlbnRSZW5kZXJlciA9IGZyYW1lVmll
dy5mcmFtZSgpLmNvbnRlbnRSZW5kZXJlcigpKSB7CiAgICAgICAgICAgICAgICAgICAgIFJlZlB0
cjxXZWJSZW5kZXJPYmplY3Q+IGNvbnRlbnRSZW5kZXJlciA9IGFkb3B0UmVmKG5ldyBXZWJSZW5k
ZXJPYmplY3QoY29yZUNvbnRlbnRSZW5kZXJlciwgc2hvdWxkSW5jbHVkZURlc2NlbmRhbnRzKSk7
CiAKICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4uYXBwZW5kKFdURjo6bW92ZShjb250ZW50
UmVuZGVyZXIpKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>