<?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>127363</bug_id>
          
          <creation_ts>2014-01-21 12:27:03 -0800</creation_ts>
          <short_desc>WebKit2 View Gestures: Fluid back-forward swipe</short_desc>
          <delta_ts>2014-01-27 12:18:19 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit2</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>127437</dependson>
    
    <dependson>127438</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Tim Horton">thorton</reporter>
          <assigned_to name="Tim Horton">thorton</assigned_to>
          <cc>andersca</cc>
    
    <cc>commit-queue</cc>
    
    <cc>mkwst</cc>
    
    <cc>sam</cc>
    
    <cc>simon.fraser</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>970381</commentid>
    <comment_count>0</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-01-21 12:27:03 -0800</bug_when>
    <thetext>Implement fluid swipe as WebKit2 SPI. The initial implementation will be off by default, and has a few important features missing (I&apos;ll file bugs for them when this lands), including capping the number of snapshots, making them purgeable, and supporting web content overriding the swipe.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>970484</commentid>
    <comment_count>1</comment_count>
      <attachid>221809</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-01-21 16:51:42 -0800</bug_when>
    <thetext>Created attachment 221809
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>970486</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-01-21 16:53:02 -0800</bug_when>
    <thetext>Attachment 221809 did not pass style-queue:


ERROR: Source/WebKit2/UIProcess/mac/ViewSnapshotStore.h:47:  The parameter name &quot;webPageProxy&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 1 in 23 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>970488</commentid>
    <comment_count>3</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-01-21 16:55:41 -0800</bug_when>
    <thetext>I&apos;m going to do the rename in a separate patch to reduce the size.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>970499</commentid>
    <comment_count>4</comment_count>
      <attachid>221814</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-01-21 17:32:43 -0800</bug_when>
    <thetext>Created attachment 221814
take two</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>970509</commentid>
    <comment_count>5</comment_count>
      <attachid>221817</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-01-21 18:05:17 -0800</bug_when>
    <thetext>Created attachment 221817
take three</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>970795</commentid>
    <comment_count>6</comment_count>
      <attachid>221882</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-01-22 11:23:22 -0800</bug_when>
    <thetext>Created attachment 221882
mac build fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>970819</commentid>
    <comment_count>7</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-01-22 12:10:14 -0800</bug_when>
    <thetext>I&apos;m splitting this patch up.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>970844</commentid>
    <comment_count>8</comment_count>
      <attachid>221898</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-01-22 13:10:10 -0800</bug_when>
    <thetext>Created attachment 221898
patch (won&apos;t build b/c of dependencies)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>971794</commentid>
    <comment_count>9</comment_count>
      <attachid>222166</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-01-24 16:27:51 -0800</bug_when>
    <thetext>Created attachment 222166
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>971910</commentid>
    <comment_count>10</comment_count>
      <attachid>222166</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-01-24 23:50:16 -0800</bug_when>
    <thetext>Comment on attachment 222166
patch

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

&gt; Source/WebKit2/UIProcess/mac/ViewGestureController.mm:74
&gt; +

whoops, I forgot about this before posting the patch (and left the comment when I saw another patch in-flight). will fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>972483</commentid>
    <comment_count>11</comment_count>
      <attachid>222166</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2014-01-27 11:12:21 -0800</bug_when>
    <thetext>Comment on attachment 222166
patch

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

&gt;&gt; Source/WebKit2/UIProcess/mac/ViewGestureController.mm:74
&gt;&gt; +
&gt; 
&gt; whoops, I forgot about this before posting the patch (and left the comment when I saw another patch in-flight). will fix

3_s!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>972507</commentid>
    <comment_count>12</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-01-27 12:18:19 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/162853</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>221809</attachid>
            <date>2014-01-21 16:51:42 -0800</date>
            <delta_ts>2014-01-21 17:32:43 -0800</delta_ts>
            <desc>patch</desc>
            <filename>swipe1.diff</filename>
            <type>text/plain</type>
            <size>74819</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCAwZjIyMWM2Ny4uYzA1ODJlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDE1
NSBAQAogMjAxNC0wMS0yMSAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4K
IAorICAgICAgICBXZWJLaXQyIFZpZXcgR2VzdHVyZXM6IEZsdWlkIGJhY2stZm9yd2FyZCBzd2lw
ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI3MzYz
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHN1
cHBvcnQgZm9yIGEgImJhY2stZm9yd2FyZCBzd2lwZSIsIHdoaWNoIGFsbG93cyBmbHVpZCBzd2lw
aW5nIGJldHdlZW4KKyAgICAgICAgaXRlbXMgaW4gdGhlIGJhY2stZm9yd2FyZCBsaXN0LiBDdXJy
ZW50bHkgZGlzYWJsZWQgYnkgZGVmYXVsdC4KKworICAgICAgICAqIFNoYXJlZC9XZWJCYWNrRm9y
d2FyZExpc3RJdGVtLmg6CisgICAgICAgIChXZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlzdEl0ZW06
OnNldFNuYXBzaG90VVVJRCk6CisgICAgICAgIChXZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlzdEl0
ZW06OnNuYXBzaG90VVVJRCk6CisgICAgICAgICogVUlQcm9jZXNzL2NmL1dlYkJhY2tGb3J3YXJk
TGlzdENGLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQmFja0ZvcndhcmRMaXN0OjpjcmVhdGVD
RkRpY3Rpb25hcnlSZXByZXNlbnRhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OmV4dHJhY3RCYWNr
Rm9yd2FyZExpc3RFbnRyaWVzRnJvbUFycmF5KToKKyAgICAgICAgU3RvcmUgYW5kIHNlcmlhbGl6
ZSBhIFVVSUQgYWxvbmcgd2l0aCBlYWNoIGJhY2stZm9yd2FyZCBsaXN0IGl0ZW0gd2hpY2gKKyAg
ICAgICAgaWRlbnRpZmllcyB0aGF0IGl0ZW0ncyB2aWV3IHNuYXBzaG90IGluIHRoZSBWaWV3U25h
cHNob3RTdG9yZS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9jZi9XZWJQYWdlUHJveHlDRi5jcHA6
CisgICAgICAgIEJ1bXAgdGhlIHNlc3Npb24gc3RhdGUgZGF0YSB2ZXJzaW9uLCBhcyB3ZSBjaGFu
Z2VkIHRoZSBXZWJCYWNrRm9yd2FyZExpc3QgZm9ybWF0LgorCisgICAgICAgICogU2hhcmVkL1dl
YlByZWZlcmVuY2VzU3RvcmUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJl
bmNlcy5jcHA6CisgICAgICAgIChXS1ByZWZlcmVuY2VzU2V0Vmlld0dlc3R1cmVEZWJ1Z2dpbmdF
bmFibGVkKToKKyAgICAgICAgKFdLUHJlZmVyZW5jZXNHZXRWaWV3R2VzdHVyZURlYnVnZ2luZ0Vu
YWJsZWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzUHJpdmF0ZS5o
OgorICAgICAgICBBZGQgYSBWaWV3R2VzdHVyZURlYnVnZ2luZ0VuYWJsZWQgcHJlZmVyZW5jZSwg
d2hpY2ggY3VycmVudGx5IGNhdXNlcyBzbmFwc2hvdHMgdG8gYmUgYmx1cnJlZC4KKyAgICAgICAg
QWRkaXRpb25hbCB2aWV3IGdlc3R1cmUgZGVidWdnaW5nIGZlYXR1cmVzIGNvdWxkIGNvbWUgaW4g
dGhlIGZ1dHVyZS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tWaWV3UHJpdmF0
ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbToKKyAgICAgICAgKC1b
V0tWaWV3IF9lbnN1cmVHZXN0dXJlQ29udHJvbGxlcl0pOgorICAgICAgICAoLVtXS1ZpZXcgc2Ny
b2xsV2hlZWw6XSk6CisgICAgICAgIElmIGJhY2stZm9yd2FyZCBuYXZpZ2F0aW9uIGdlc3R1cmVz
IGFyZSBlbmFibGVkLCBpbnRlcmNlcHQgc2Nyb2xsV2hlZWwgZXZlbnRzCisgICAgICAgIG9uIHRo
ZSBXS1ZpZXcgYW5kIGxldCB0aGUgVmlld0dlc3R1cmVDb250cm9sbGVyIHRha2UgdGhlIGZpcnN0
IGNyYWNrIGF0IHRoZW0uCisKKyAgICAgICAgKC1bV0tWaWV3IF9yb290TGF5ZXJdKToKKyAgICAg
ICAgKC1bV0tWaWV3IHNhdmVCYWNrRm9yd2FyZFNuYXBzaG90Rm9yQ3VycmVudEl0ZW1dKToKKyAg
ICAgICAgKC1bV0tWaWV3IHNldEFsbG93c0JhY2tGb3J3YXJkTmF2aWdhdGlvbkdlc3R1cmVzOl0p
OgorICAgICAgICAoLVtXS1ZpZXcgYWxsb3dzQmFja0ZvcndhcmROYXZpZ2F0aW9uR2VzdHVyZXNd
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXdJbnRlcm5hbC5oOgorICAgICAg
ICBBZGQgYWxsb3dzQmFja0ZvcndhcmROYXZpZ2F0aW9uR2VzdHVyZSBwcm9wZXJ0eSwgd2hpY2gg
ZW5hYmxlcyB0aGUgZ2VzdHVyZS4KKyAgICAgICAgQWRkIHNhdmVCYWNrRm9yd2FyZFNuYXBzaG90
Rm9yQ3VycmVudEl0ZW0gU1BJLCB3aGljaCBjbGllbnRzIGNvdWxkIHBvdGVudGlhbGx5CisgICAg
ICAgIHVzZSB3aGVuIHRoZXkga25vdyB0aGV5J3JlIGFib3V0IHRvIG1hbmlwdWxhdGUgdGhlIHZp
ZXcgaGllcmFyY2h5IGluIHN1Y2ggYSB3YXkKKyAgICAgICAgdGhhdCB0aGV5IHdhbnQgdGhlIGN1
cnJlbnQgYmFjay1mb3J3YXJkIGl0ZW0ncyBzbmFwc2hvdCB0byBiZSB1cCB0byBkYXRlLgorCisg
ICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2VQcm94eTo6Z29Gb3J3YXJkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpn
b0JhY2spOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmdvVG9CYWNrRm9yd2FyZEl0
ZW0pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZFN0YXJ0UHJvdmlzaW9uYWxM
b2FkRm9yRnJhbWUpOgorICAgICAgICBVcGRhdGUgdGhlIGN1cnJlbnQgYmFjay1mb3J3YXJkIGl0
ZW0ncyBzbmFwc2hvdCBpbW1lZGlhdGVseSBiZWZvcmUgbmF2aWdhdGluZy4KKworICAgICAgICAq
IFVJUHJvY2Vzcy9tYWMvVmlld0dlc3R1cmVDb250cm9sbGVyLmg6CisgICAgICAgIEFkZCBzd2lw
ZS1yZWxhdGVkIG1ldGhvZHMsIHdoaWNoIHdpbGwgYmUgZGVzY3JpYmVkIGJlbG93LgorCisgICAg
ICAgIEFkZCBhbiBlbnVtIGZvciB0aGUgc3dpcGUgdHJhbnNpdGlvbiBzdHlsZS4gQ3VycmVudGx5
IG9ubHkgT3ZlcmxhcCBpcyBhY2Nlc3NpYmxlLAorICAgICAgICBidXQgaW4gdGhlIGZ1dHVyZSBv
bmUgY291bGQgc2VlIGhhdmluZyBBUEkgdG8gY2hvb3NlIHRoZSBzdHlsZS4KKyAgICAgICAgJ092
ZXJsYXAnIGhhcyB0aGUgb3V0Z29pbmcgcGFnZSBzd2lwZSBvdXQgdG8gdGhlIHJpZ2h0ICh3aGVu
IHN3aXBpbmcgcmlnaHQpCisgICAgICAgIG9yIHRoZSBpbmNvbWluZyBwYWdlIHN3aXBlIGluIGZy
b20gdGhlIHJpZ2h0ICh3aGVuIHN3aXBpbmcgbGVmdCkuCisgICAgICAgICdQdXNoJyBoYXMgdGhl
IHBhZ2VzIHB1c2ggZWFjaCBvdGhlciBhbG9uZyBpbiBzeW5jLCBhcyBpZiBhbGwgdGhlIHBhZ2Vz
IGluIHRoZQorICAgICAgICBiYWNrLWZvcndhcmQgbGlzdCB3ZXJlIG9yaWVudGVkIGZyb20gbGVm
dCB0byByaWdodC4KKworICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvVmlld0dlc3R1cmVDb250cm9s
bGVyLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvVmlld0dlc3R1cmVDb250
cm9sbGVyLm1tOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9WaWV3
R2VzdHVyZUNvbnRyb2xsZXIuY3BwLgorICAgICAgICBVc2Ugc29tZSBDQUZpbHRlciBTUEkgdG8g
Ymx1ciB0aGUgc25hcHNob3QgaWYgVmlld0dlc3R1cmVEZWJ1Z2dpbmdFbmFibGVkIGlzIG9uLgor
CisgICAgICAgIChXZWJLaXQ6OlZpZXdHZXN0dXJlQ29udHJvbGxlcjo6Vmlld0dlc3R1cmVDb250
cm9sbGVyKToKKyAgICAgICAgKFdlYktpdDo6Vmlld0dlc3R1cmVDb250cm9sbGVyOjp+Vmlld0dl
c3R1cmVDb250cm9sbGVyKToKKyAgICAgICAgKFdlYktpdDo6Vmlld0dlc3R1cmVDb250cm9sbGVy
OjplbmRNYWduaWZpY2F0aW9uR2VzdHVyZSk6CisgICAgICAgIE1vdmUgbV9hY3RpdmVHZXN0dXJl
VHlwZSBjbGVhcmluZyB0byBlYWNoIGVuZCogZnVuY3Rpb24gaW5zdGVhZCBvZiBvbmUgZ2xvYmFs
IHBsYWNlLAorICAgICAgICBzbyB0aGF0IGVhY2ggZ2VzdHVyZSBjYW4gaGFuZGxlIHdoZW4gaXQg
ZW5kcyBzZXBhcmF0ZWx5LgorCisgICAgICAgIChXZWJLaXQ6OlZpZXdHZXN0dXJlQ29udHJvbGxl
cjo6aGFuZGxlU2Nyb2xsV2hlZWxFdmVudCk6CisgICAgICAgIElmIHdlIHJlY2VpdmUgYSBzY3Jv
bGwgd2hlZWwgZXZlbnQgd2hpY2ggaXMgYXBwcm9wcmlhdGUgZm9yIHN0YXJ0aW5nIGEKKyAgICAg
ICAgZmx1aWQgc3dpcGUsIGluIGEgZGlyZWN0aW9uIHdoZXJlIHRoZSBtYWluIGZyYW1lIGlzIHBp
bm5lZCB0byB0aGUgYXBwcm9wcmlhdGUKKyAgICAgICAgZWRnZSBvZiB0aGUgdmlldywgc3RhcnQg
dHJhY2tpbmcgYSBzd2lwZS4KKworICAgICAgICBUaGlzIHNob3VsZCBldmVudHVhbGx5IGhhdmUg
c29tZSBoeXN0ZXJpc2lzIHRvIGF2b2lkIHN0ZWFsaW5nIHNjcm9sbHMgdGhhdAorICAgICAgICB2
ZW50dXJlIGludG8gdGhlIHdyb25nIGRpcmVjdGlvbiwgYnV0IGZvciBub3cgaXQgc3RhcnRzIHRy
YWNraW5nIGltbWVkaWF0ZWx5LgorCisgICAgICAgIEZvcndhcmQgZXZlbnRzIGZyb20gdGhlIHRy
YWNraW5nIGxvb3AgdG8ge2JlZ2luLCBoYW5kbGUsIGVuZH1Td2lwZUdlc3R1cmUuCisKKyAgICAg
ICAgKFdlYktpdDo6Vmlld0dlc3R1cmVDb250cm9sbGVyOjpiZWdpblN3aXBlR2VzdHVyZSk6Cisg
ICAgICAgIENyZWF0ZSBhIGxheWVyIHdpdGggdGhlIGRlc3RpbmF0aW9uIHBhZ2UncyBzbmFwc2hv
dCwgYW5kIHNldCBpdCB1cC4KKworICAgICAgICAoV2ViS2l0OjpWaWV3R2VzdHVyZUNvbnRyb2xs
ZXI6OmhhbmRsZVN3aXBlR2VzdHVyZSk6CisgICAgICAgIEFwcHJvcHJpYXRlbHkgYWRqdXN0IHRo
ZSBwb3NpdGlvbiBvZiB0aGUgcm9vdCBsYXllciBhbmQgc25hcHNob3QgbGF5ZXIsCisgICAgICAg
IGdpdmVuIHRoZSB0cmFuc2l0aW9uIHN0eWxlIGFuZCBzd2lwZSBkaXJlY3Rpb24uCisKKyAgICAg
ICAgKFdlYktpdDo6Vmlld0dlc3R1cmVDb250cm9sbGVyOjplbmRTd2lwZUdlc3R1cmUpOgorICAg
ICAgICBXaGVuIHRoZSBnZXN0dXJlIGVuZHMsIGRvIHRoZSBuYXZpZ2F0aW9uLCBhbmQgdGVsbCB0
aGUgV2ViUHJvY2VzcyB0bworICAgICAgICBpbmZvcm0gdXMgd2hlbiB0aGUgcmVuZGVyIHRyZWUg
aGl0cyBoYWxmIHRoZSBzaXplIGl0IHdhcyB3aGVuIHRoZQorICAgICAgICBzbmFwc2hvdCB3YXMg
dGFrZW4gKHdoZW4gdGhhdCBoYXBwZW5zLCB3ZSB3aWxsIHJlbW92ZSB0aGUgc25hcHNob3QKKyAg
ICAgICAgYW5kIHRoZSBnZXN0dXJlIHdpbGwgYmUgdHJ1bHkgY29tcGxldGUpLiBBbHNvLCBzdGFy
dCBhIHdhdGNoZG9nIHRpbWVyCisgICAgICAgIGluIGNhc2UgdGhlIHJlbmRlciB0cmVlIG5ldmVy
IGhpdHMgdGhhdCBzaXplLCBhZnRlciB3aGljaCB3ZSB3aWxsCisgICAgICAgIGFsc28gcmVtb3Zl
IHRoZSBzbmFwc2hvdC4KKworICAgICAgICAoV2ViS2l0OjpWaWV3R2VzdHVyZUNvbnRyb2xsZXI6
OmRpZEhpdFJlbmRlclRyZWVTaXplVGhyZXNob2xkKToKKyAgICAgICAgKFdlYktpdDo6Vmlld0dl
c3R1cmVDb250cm9sbGVyOjpzd2lwZVNuYXBzaG90V2F0Y2hkb2dUaW1lckZpcmVkKToKKyAgICAg
ICAgKFdlYktpdDo6Vmlld0dlc3R1cmVDb250cm9sbGVyOjpyZW1vdmVTd2lwZVNuYXBzaG90KToK
KyAgICAgICAgVGVhciBkb3duIHRoZSBzd2lwZSBzbmFwc2hvdCBsYXllciwgYW5kIG1hcmsgb3Vy
IGN1cnJlbnQgZ2VzdHVyZSBhcyBjb21wbGV0ZS4KKworICAgICAgICAoV2ViS2l0OjpWaWV3R2Vz
dHVyZUNvbnRyb2xsZXI6OmVuZEFjdGl2ZUdlc3R1cmUpOgorICAgICAgICBTaW1wbGlmeSBlbmRB
Y3RpdmVHZXN0dXJlOyBpdCBvbmx5IGhhcyB3b3JrIHRvIGRvIGZvciBhIHBpbmNoLXpvb20gZ2Vz
dHVyZSwKKyAgICAgICAgYXMgdGhvc2UgYXJlIHRoZSBvbmx5IGdlc3R1cmVzIHdoZXJlIHRoZSB1
c2VyIGlzIGRpcmVjdGx5IGluIGNvbnRyb2wgb2Ygd2hlbiB0aGV5IGVuZC4KKworICAgICAgICAq
IFVJUHJvY2Vzcy9tYWMvVmlld1NuYXBzaG90U3RvcmUuaDogQ29waWVkIGZyb20gU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3IuaC4K
KyAgICAgICAgKFdlYktpdDo6Vmlld1NuYXBzaG90U3RvcmU6OmRpc2FibGVTbmFwc2hvdHRpbmcp
OgorICAgICAgICAoV2ViS2l0OjpWaWV3U25hcHNob3RTdG9yZTo6ZW5hYmxlU25hcHNob3R0aW5n
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1ZpZXdTbmFwc2hvdFN0b3JlLm1tOiBBZGRlZC4K
KyAgICAgICAgKFdlYktpdDo6Vmlld1NuYXBzaG90U3RvcmU6OlZpZXdTbmFwc2hvdFN0b3JlKToK
KyAgICAgICAgKFdlYktpdDo6Vmlld1NuYXBzaG90U3RvcmU6On5WaWV3U25hcHNob3RTdG9yZSk6
CisgICAgICAgIChXZWJLaXQ6OlZpZXdTbmFwc2hvdFN0b3JlOjpzaGFyZWQpOgorICAgICAgICAo
V2ViS2l0OjpWaWV3U25hcHNob3RTdG9yZTo6dGFrZVNuYXBzaG90KToKKyAgICAgICAgKFdlYktp
dDo6Vmlld1NuYXBzaG90U3RvcmU6OmdldFNuYXBzaG90QW5kUmVuZGVyVHJlZVNpemUpOgorICAg
ICAgICBBZGQgYSBzaWRlIG1hcCBvZiBzbmFwc2hvdHMsIHdoaWNoIGFyZSBpZGVudGlmaWVkIGJ5
IFVVSURzICh3aGljaCBhcmUgc3RvcmVkCisgICAgICAgIGluc2lkZSB0aGUgYXNzb2NpYXRlZCBX
ZWJCYWNrRm9yd2FyZExpc3RJdGVtKS4KKyAgICAgICAgV2UgdXNlIHdpbmRvdyBzZXJ2ZXIgc25h
cHNob3RzLCBzaW1pbGFyIHRvIFdlYktpdFRlc3RSdW5uZXIsIHRvIG1hdGNoIHByZWNpc2VseQor
ICAgICAgICB0aGUgcGFnZSBhcyByZW5kZXJlZCBvbi1zY3JlZW4uCisgICAgICAgIEN1cnJlbnRs
eSB0aGVyZSBpcyBubyBtYW5hZ2VtZW50IG9mIHRoZSBzaXplIG9mIHRoaXMgY2FjaGUsIGFuZCBp
dCB3aWxsIGdyb3cgd2l0aG91dAorICAgICAgICBib3VuZDsgYmV0dGVyIGNhY2hlIG1hbmFnZW1l
bnQgaXMgY29taW5nIGluIGEgZnV0dXJlIHBhdGNoLgorCisgICAgICAgICogV2ViS2l0Mi54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1Zp
ZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3IuY3BwOgorICAgICAgICAoV2ViS2l0OjpWaWV3R2Vz
dHVyZUdlb21ldHJ5Q29sbGVjdG9yOjpWaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yKToKKyAg
ICAgICAgKFdlYktpdDo6Vmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvcjo6bWFpbkZyYW1lRGlk
TGF5b3V0KToKKyAgICAgICAgKFdlYktpdDo6Vmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvcjo6
cmVuZGVyVHJlZVNpemVOb3RpZmljYXRpb25UaW1lckZpcmVkKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlBhZ2UvVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvci5oOgorICAgICAgICAoV2Vi
S2l0OjpWaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yOjpzZXRSZW5kZXJUcmVlU2l6ZU5vdGlm
aWNhdGlvblRocmVzaG9sZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdHZXN0
dXJlR2VvbWV0cnlDb2xsZWN0b3IubWVzc2FnZXMuaW46CisgICAgICAgIFZpZXdHZXN0dXJlQ29u
dHJvbGxlciBwdXNoZXMgYSByZW5kZXItdHJlZSBzaXplIHRocmVzaG9sZCB0byB0aGUgV2ViUHJv
Y2VzczsKKyAgICAgICAgVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3RvciAod2hvc2UgbmFtZSBp
cyBub3cgbW9yZSB1bmZvcnR1bmF0ZSB0aGFuIGJlZm9yZSkKKyAgICAgICAgbW9uaXRvcnMgcmVu
ZGVyLXRyZWUgc2l6ZSBjaGFuZ2VzIGFuZCBpbmZvcm1zIFZpZXdHZXN0dXJlQ29udHJvbGxlciB3
aGVuCisgICAgICAgIGl0IHJlYWNoZXMgdGhhdCB0aHJlc2hvbGQgdmlhIHRoZSAnRGlkSGl0UmVu
ZGVyVHJlZVNpemVUaHJlc2hvbGQnIG1lc3NhZ2UuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpZENoYW5nZVNjcm9sbE9mZnNldCk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
Ojp1cGRhdGVNYWluRnJhbWVTY3JvbGxPZmZzZXRQaW5uaW5nKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZTo6bWFpbkZyYW1lRGlkTGF5b3V0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6
ZGlkQ29tbWl0TG9hZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoK
KyAgICAgICAgUmVuYW1lIFdlYlBhZ2U6OmRpZENoYW5nZVNjcm9sbE9mZnNldEZvck1haW5GcmFt
ZSB0bworICAgICAgICB1cGRhdGVNYWluRnJhbWVTY3JvbGxPZmZzZXRQaW5uaW5nLCB3aGljaCBi
ZXR0ZXIgZGVzY3JpYmVzIHdoYXQgaXQKKyAgICAgICAgYWN0dWFsbHkgZG9lcy4gQ2FsbCBpdCB3
aGVuIGEgbG9hZCBjb21wbGV0ZXMsIHNvIHRoYXQgd2UgaGF2ZSB2YWxpZAorICAgICAgICBwaW5u
aW5nIHN0YXRlIGJlZm9yZSB0aGUgZmlyc3Qgc2Nyb2xsIGV2ZW50IGNvbWVzIGluLgorCisyMDE0
LTAxLTIxICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgorCiAgICAgICAg
IEFkZHJlc3MgbGF0ZSByZXZpZXcgbmFtaW5nIGNvbW1lbnRzIGFmdGVyIHIxNjI0NTMuCiAKICAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcubW06CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvV2ViQmFja0ZvcndhcmRMaXN0SXRlbS5oIGIvU291cmNlL1dlYktpdDIv
U2hhcmVkL1dlYkJhY2tGb3J3YXJkTGlzdEl0ZW0uaAppbmRleCBiMTM5ZmEwLi4xNzkyMzAyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQmFja0ZvcndhcmRMaXN0SXRlbS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJCYWNrRm9yd2FyZExpc3RJdGVtLmgKQEAg
LTMxLDggKzMxLDggQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNw
YWNlIElQQyB7Ci0gICAgY2xhc3MgQXJndW1lbnREZWNvZGVyOwotICAgIGNsYXNzIEFyZ3VtZW50
RW5jb2RlcjsKK2NsYXNzIEFyZ3VtZW50RGVjb2RlcjsKK2NsYXNzIEFyZ3VtZW50RW5jb2RlcjsK
IH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC02MCw2ICs2MCw5IEBAIHB1YmxpYzoKICAgICB2
b2lkIHNldEJhY2tGb3J3YXJkRGF0YShjb25zdCB1aW50OF90KiBidWZmZXIsIHNpemVfdCBzaXpl
KTsKICAgICBjb25zdCBWZWN0b3I8dWludDhfdD4mIGJhY2tGb3J3YXJkRGF0YSgpIGNvbnN0IHsg
cmV0dXJuIG1fYmFja0ZvcndhcmREYXRhOyB9CiAKKyAgICB2b2lkIHNldFNuYXBzaG90VVVJRChj
b25zdCBTdHJpbmcmIHV1aWQpIHsgbV9zbmFwc2hvdFVVSUQgPSB1dWlkOyB9CisgICAgY29uc3Qg
U3RyaW5nJiBzbmFwc2hvdFVVSUQoKSBjb25zdCB7IHJldHVybiBtX3NuYXBzaG90VVVJRDsgfQor
CiAgICAgdm9pZCBlbmNvZGUoSVBDOjpBcmd1bWVudEVuY29kZXImKSBjb25zdDsKICAgICBzdGF0
aWMgUGFzc1JlZlB0cjxXZWJCYWNrRm9yd2FyZExpc3RJdGVtPiBkZWNvZGUoSVBDOjpBcmd1bWVu
dERlY29kZXImKTsKIApAQCAtNzMsNiArNzYsNyBAQCBwcml2YXRlOgogICAgIFN0cmluZyBtX3Rp
dGxlOwogICAgIHVpbnQ2NF90IG1faXRlbUlEOwogICAgIFZlY3Rvcjx1aW50OF90PiBtX2JhY2tG
b3J3YXJkRGF0YTsKKyAgICBTdHJpbmcgbV9zbmFwc2hvdFVVSUQ7CiB9OwogCiB0eXBlZGVmIFZl
Y3RvcjxSZWZQdHI8V2ViQmFja0ZvcndhcmRMaXN0SXRlbT4+IEJhY2tGb3J3YXJkTGlzdEl0ZW1W
ZWN0b3I7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJlZmVyZW5jZXNT
dG9yZS5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByZWZlcmVuY2VzU3RvcmUuaAppbmRl
eCBlOWY3MTE0Li4zMmFkZDU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2Vi
UHJlZmVyZW5jZXNTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcmVmZXJl
bmNlc1N0b3JlLmgKQEAgLTE3OSw2ICsxNzksNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKICAgICBt
YWNybyhVc2VMZWdhY3lUZXh0QWxpZ25Qb3NpdGlvbmVkRWxlbWVudEJlaGF2aW9yLCB1c2VMZWdh
Y3lUZXh0QWxpZ25Qb3NpdGlvbmVkRWxlbWVudEJlaGF2aW9yLCBCb29sLCBib29sLCBmYWxzZSkg
XAogICAgIG1hY3JvKFNwYXRpYWxOYXZpZ2F0aW9uRW5hYmxlZCwgc3BhdGlhbE5hdmlnYXRpb25F
bmFibGVkLCBCb29sLCBib29sLCBmYWxzZSkgXAogICAgIG1hY3JvKE1lZGlhU291cmNlRW5hYmxl
ZCwgbWVkaWFTb3VyY2VFbmFibGVkLCBCb29sLCBib29sLCBmYWxzZSkgXAorICAgIG1hY3JvKFZp
ZXdHZXN0dXJlRGVidWdnaW5nRW5hYmxlZCwgdmlld0dlc3R1cmVEZWJ1Z2dpbmdFbmFibGVkLCBC
b29sLCBib29sLCBmYWxzZSkgXAogICAgIFwKIAogI2RlZmluZSBGT1JfRUFDSF9XRUJLSVRfRE9V
QkxFX1BSRUZFUkVOQ0UobWFjcm8pIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQy9XS1ByZWZlcmVuY2VzLmNwcAppbmRleCBlZGUwOWQ5Li5kNTJkMjQ0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNlcy5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXMuY3BwCkBAIC0xMjQ1
LDMgKzEyNDUsMTMgQEAgYm9vbCBXS1ByZWZlcmVuY2VzR2V0TWVkaWFTb3VyY2VFbmFibGVkKFdL
UHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXNSZWYpCiB7CiAgICAgcmV0dXJuIHRvSW1wbChwcmVm
ZXJlbmNlc1JlZiktPm1lZGlhU291cmNlRW5hYmxlZCgpOwogfQorCit2b2lkIFdLUHJlZmVyZW5j
ZXNTZXRWaWV3R2VzdHVyZURlYnVnZ2luZ0VuYWJsZWQoV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJl
bmNlc1JlZiwgYm9vbCBlbmFibGVkKQoreworICAgIHRvSW1wbChwcmVmZXJlbmNlc1JlZiktPnNl
dFZpZXdHZXN0dXJlRGVidWdnaW5nRW5hYmxlZChlbmFibGVkKTsKK30KKworYm9vbCBXS1ByZWZl
cmVuY2VzR2V0Vmlld0dlc3R1cmVEZWJ1Z2dpbmdFbmFibGVkKFdLUHJlZmVyZW5jZXNSZWYgcHJl
ZmVyZW5jZXNSZWYpCit7CisgICAgcmV0dXJuIHRvSW1wbChwcmVmZXJlbmNlc1JlZiktPnZpZXdH
ZXN0dXJlRGVidWdnaW5nRW5hYmxlZCgpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXNQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNlc1ByaXZhdGUuaAppbmRleCA4NjdjOTk3Li44MDg1
MjVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJl
bmNlc1ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQcmVm
ZXJlbmNlc1ByaXZhdGUuaApAQCAtMzE0LDYgKzMxNCwxMCBAQCBXS19FWFBPUlQgYm9vbCBXS1By
ZWZlcmVuY2VzVXNlTGVnYWN5VGV4dEFsaWduUG9zaXRpb25lZEVsZW1lbnRCZWhhdmlvcihXS1By
ZWZlcgogV0tfRVhQT1JUIHZvaWQgV0tQcmVmZXJlbmNlc1NldE1lZGlhU291cmNlRW5hYmxlZChX
S1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzUmVmLCBib29sIGVuYWJsZWQpOwogV0tfRVhQT1JU
IGJvb2wgV0tQcmVmZXJlbmNlc0dldE1lZGlhU291cmNlRW5hYmxlZChXS1ByZWZlcmVuY2VzUmVm
IHByZWZlcmVuY2VzUmVmKTsKIAorLy8gRGVmYXVsdCB0byBmYWxzZS4KK1dLX0VYUE9SVCB2b2lk
IFdLUHJlZmVyZW5jZXNTZXRWaWV3R2VzdHVyZURlYnVnZ2luZ0VuYWJsZWQoV0tQcmVmZXJlbmNl
c1JlZiBwcmVmZXJlbmNlc1JlZiwgYm9vbCBlbmFibGVkKTsKK1dLX0VYUE9SVCBib29sIFdLUHJl
ZmVyZW5jZXNHZXRWaWV3R2VzdHVyZURlYnVnZ2luZ0VuYWJsZWQoV0tQcmVmZXJlbmNlc1JlZiBw
cmVmZXJlbmNlc1JlZik7CisKICNpZmRlZiBfX2NwbHVzcGx1cwogfQogI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVmlld1ByaXZhdGUuaCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tWaWV3UHJpdmF0ZS5oCmluZGV4
IDBmNzhjMGQuLjkyODQ5MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tWaWV3UHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tWaWV3UHJpdmF0ZS5oCkBAIC02Niw2ICs2Niw3IEBACiBAcHJvcGVydHkgKHJl
YWRvbmx5LCBnZXR0ZXI9aXNVc2luZ1VJU2lkZUNvbXBvc2l0aW5nKSBCT09MIHVzaW5nVUlTaWRl
Q29tcG9zaXRpbmc7CiBAcHJvcGVydHkgKHJlYWR3cml0ZSkgQk9PTCBhbGxvd3NNYWduaWZpY2F0
aW9uOwogQHByb3BlcnR5IChyZWFkd3JpdGUpIGRvdWJsZSBtYWduaWZpY2F0aW9uOworQHByb3Bl
cnR5IChyZWFkd3JpdGUpIEJPT0wgYWxsb3dzQmFja0ZvcndhcmROYXZpZ2F0aW9uR2VzdHVyZXM7
CiAKIEBwcm9wZXJ0eShjb3B5LCBub25hdG9taWMpIE5TQ29sb3IgKnVuZGVybGF5Q29sb3I7CiAK
QEAgLTg1LDYgKzg2LDggQEAKIAogLSAodm9pZClzZXRNYWduaWZpY2F0aW9uOihkb3VibGUpbWFn
bmlmaWNhdGlvbiBjZW50ZXJlZEF0UG9pbnQ6KE5TUG9pbnQpcG9pbnQ7CiAKKy0gKHZvaWQpc2F2
ZUJhY2tGb3J3YXJkU25hcHNob3RGb3JDdXJyZW50SXRlbTsKKwogI2VuZGlmCiAKIEBlbmQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbSBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbQppbmRleCAwMmE1MzQ4Li5m
YjBmMGM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1Zp
ZXcubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tCkBA
IC01MCw2ICs1MCw3IEBACiAjaW1wb3J0ICJUZXh0Q2hlY2tlclN0YXRlLmgiCiAjaW1wb3J0ICJU
aWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYVByb3h5LmgiCiAjaW1wb3J0ICJWaWV3R2VzdHVy
ZUNvbnRyb2xsZXIuaCIKKyNpbXBvcnQgIlZpZXdTbmFwc2hvdFN0b3JlLmgiCiAjaW1wb3J0ICJX
S0FQSUNhc3QuaCIKICNpbXBvcnQgIldLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIuaCIKICNp
bXBvcnQgIldLUHJpbnRpbmdWaWV3LmgiCkBAIC01Nyw2ICs1OCw3IEBACiAjaW1wb3J0ICJXS1Rl
eHRJbnB1dFdpbmRvd0NvbnRyb2xsZXIuaCIKICNpbXBvcnQgIldLVmlld0ludGVybmFsLmgiCiAj
aW1wb3J0ICJXS1ZpZXdQcml2YXRlLmgiCisjaW1wb3J0ICJXZWJCYWNrRm9yd2FyZExpc3QuaCIK
ICNpbXBvcnQgIldlYkNvbnRleHQuaCIKICNpbXBvcnQgIldlYkV2ZW50RmFjdG9yeS5oIgogI2lt
cG9ydCAiV2ViS2l0MkluaXRpYWxpemUuaCIKQEAgLTY5LDYgKzcxLDcgQEAKICNpbXBvcnQgPFF1
YXJ0ekNvcmUvUXVhcnR6Q29yZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9BWE9iamVjdENhY2hlLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL0NvbG9yTWFjLmg+CisjaW1wb3J0IDxXZWJDb3JlL0NBTGF5ZXJX
ZWJBZGRpdGlvbnMuaD4KICNpbXBvcnQgPFdlYkNvcmUvRHJhZ0NvbnRyb2xsZXIuaD4KICNpbXBv
cnQgPFdlYkNvcmUvRHJhZ0RhdGEuaD4KICNpbXBvcnQgPFdlYkNvcmUvRHJhZ1Nlc3Npb24uaD4K
QEAgLTIxOSw2ICsyMjIsNyBAQCBzdHJ1Y3QgV0tWaWV3SW50ZXJwcmV0S2V5RXZlbnRzUGFyYW1l
dGVycyB7CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Vmlld0dlc3R1cmVDb250cm9sbGVyPiBfZ2Vz
dHVyZUNvbnRyb2xsZXI7CiAgICAgQk9PTCBfYWxsb3dzTWFnbmlmaWNhdGlvbjsKKyAgICBCT09M
IF9hbGxvd3NCYWNrRm9yd2FyZE5hdmlnYXRpb25HZXN0dXJlczsKIH0KIAogQGVuZApAQCAtMTA5
MSwxNiArMTA5NSwyNSBAQCBOQVRJVkVfTU9VU0VfRVZFTlRfSEFORExFUihyaWdodE1vdXNlVXAp
CiAKICN1bmRlZiBOQVRJVkVfTU9VU0VfRVZFTlRfSEFORExFUgogCi0jZGVmaW5lIE5BVElWRV9F
VkVOVF9IQU5ETEVSKFNlbGVjdG9yLCBUeXBlKSBcCi0gICAgLSAodm9pZClTZWxlY3RvcjooTlNF
dmVudCAqKXRoZUV2ZW50IFwKLSAgICB7IFwKLSAgICAgICAgTmF0aXZlV2ViIyNUeXBlIyNFdmVu
dCB3ZWJFdmVudCA9IE5hdGl2ZVdlYiMjVHlwZSMjRXZlbnQodGhlRXZlbnQsIHNlbGYpOyBcCi0g
ICAgICAgIF9kYXRhLT5fcGFnZS0+aGFuZGxlIyNUeXBlIyNFdmVudCh3ZWJFdmVudCk7IFwKLSAg
ICB9CistICh2b2lkKV9lbnN1cmVHZXN0dXJlQ29udHJvbGxlcgoreworICAgIGlmIChfZGF0YS0+
X2dlc3R1cmVDb250cm9sbGVyKQorICAgICAgICByZXR1cm47CiAKLU5BVElWRV9FVkVOVF9IQU5E
TEVSKHNjcm9sbFdoZWVsLCBXaGVlbCkKKyAgICBfZGF0YS0+X2dlc3R1cmVDb250cm9sbGVyID0g
c3RkOjptYWtlX3VuaXF1ZTxWaWV3R2VzdHVyZUNvbnRyb2xsZXI+KCpfZGF0YS0+X3BhZ2UpOwor
fQogCi0jdW5kZWYgTkFUSVZFX0VWRU5UX0hBTkRMRVIKKy0gKHZvaWQpc2Nyb2xsV2hlZWw6KE5T
RXZlbnQgKilldmVudAoreworICAgIGlmIChfZGF0YS0+X2FsbG93c0JhY2tGb3J3YXJkTmF2aWdh
dGlvbkdlc3R1cmVzKSB7CisgICAgICAgIFtzZWxmIF9lbnN1cmVHZXN0dXJlQ29udHJvbGxlcl07
CisgICAgICAgIGlmIChfZGF0YS0+X2dlc3R1cmVDb250cm9sbGVyLT5oYW5kbGVTY3JvbGxXaGVl
bEV2ZW50KGV2ZW50KSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBOYXRpdmVX
ZWJXaGVlbEV2ZW50IHdlYkV2ZW50ID0gTmF0aXZlV2ViV2hlZWxFdmVudChldmVudCwgc2VsZik7
CisgICAgX2RhdGEtPl9wYWdlLT5oYW5kbGVXaGVlbEV2ZW50KHdlYkV2ZW50KTsKK30KIAogLSAo
dm9pZCltb3VzZU1vdmVkOihOU0V2ZW50ICopZXZlbnQKIHsKQEAgLTI0NjgsNiArMjQ4MSwxMSBA
QCBzdGF0aWMgTlNTdHJpbmcgKiBjb25zdCBiYWNraW5nUHJvcGVydHlPbGRTY2FsZUZhY3Rvcktl
eSA9IEAiTlNCYWNraW5nUHJvcGVydHlPbAogICAgIF9kYXRhLT5fZmluZEluZGljYXRvcldpbmRv
dy0+c2V0RmluZEluZGljYXRvcihmaW5kSW5kaWNhdG9yLCBmYWRlT3V0LCBhbmltYXRlKTsKIH0K
IAorLSAoQ0FMYXllciAqKV9yb290TGF5ZXIKK3sKKyAgICByZXR1cm4gW19kYXRhLT5fbGF5ZXJI
b3N0aW5nVmlldyBsYXllcl07Cit9CisKIC0gKHZvaWQpX3NldEFjY2VsZXJhdGVkQ29tcG9zaXRp
bmdNb2RlUm9vdExheWVyOihDQUxheWVyICopcm9vdExheWVyCiB7CiAgICAgW0NBVHJhbnNhY3Rp
b24gYmVnaW5dOwpAQCAtMjgyMyw2ICsyODQxLDExIEBAIHN0YXRpYyBOU1N0cmluZyAqcGF0aFdp
dGhVbmlxdWVGaWxlbmFtZUZvclBhdGgoTlNTdHJpbmcgKnBhdGgpCiAKIEBpbXBsZW1lbnRhdGlv
biBXS1ZpZXcgKFByaXZhdGUpCiAKKy0gKHZvaWQpc2F2ZUJhY2tGb3J3YXJkU25hcHNob3RGb3JD
dXJyZW50SXRlbQoreworICAgIFZpZXdTbmFwc2hvdFN0b3JlOjpzaGFyZWQoKS50YWtlU25hcHNo
b3QoKl9kYXRhLT5fcGFnZSk7Cit9CisKIC0gKHZvaWQpX3JlZ2lzdGVyRHJhZ2dlZFR5cGVzCiB7
CiAgICAgTlNNdXRhYmxlU2V0ICp0eXBlcyA9IFtbTlNNdXRhYmxlU2V0IGFsbG9jXSBpbml0V2l0
aEFycmF5OlBhc3RlYm9hcmRUeXBlczo6Zm9yRWRpdGluZygpXTsKQEAgLTMxOTMsMTQgKzMyMTYs
NiBAQCBzdGF0aWMgTlNTdHJpbmcgKnBhdGhXaXRoVW5pcXVlRmlsZW5hbWVGb3JQYXRoKE5TU3Ry
aW5nICpwYXRoKQogICAgIHJldHVybiBOTzsKIH0KIAotLSAodm9pZClfZW5zdXJlR2VzdHVyZUNv
bnRyb2xsZXIKLXsKLSAgICBpZiAoX2RhdGEtPl9nZXN0dXJlQ29udHJvbGxlcikKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgX2RhdGEtPl9nZXN0dXJlQ29udHJvbGxlciA9IHN0ZDo6bWFrZV91bmlx
dWU8Vmlld0dlc3R1cmVDb250cm9sbGVyPigqX2RhdGEtPl9wYWdlKTsKLX0KLQogLSAodm9pZClz
ZXRBbGxvd3NNYWduaWZpY2F0aW9uOihCT09MKWFsbG93c01hZ25pZmljYXRpb24KIHsKICAgICBf
ZGF0YS0+X2FsbG93c01hZ25pZmljYXRpb24gPSBhbGxvd3NNYWduaWZpY2F0aW9uOwpAQCAtMzIx
MSw2ICszMjI2LDE2IEBAIHN0YXRpYyBOU1N0cmluZyAqcGF0aFdpdGhVbmlxdWVGaWxlbmFtZUZv
clBhdGgoTlNTdHJpbmcgKnBhdGgpCiAgICAgcmV0dXJuIF9kYXRhLT5fYWxsb3dzTWFnbmlmaWNh
dGlvbjsKIH0KIAorLSAodm9pZClzZXRBbGxvd3NCYWNrRm9yd2FyZE5hdmlnYXRpb25HZXN0dXJl
czooQk9PTClhbGxvd3NCYWNrRm9yd2FyZE5hdmlnYXRpb25HZXN0dXJlcworeworICAgIF9kYXRh
LT5fYWxsb3dzQmFja0ZvcndhcmROYXZpZ2F0aW9uR2VzdHVyZXMgPSBhbGxvd3NCYWNrRm9yd2Fy
ZE5hdmlnYXRpb25HZXN0dXJlczsKK30KKworLSAoQk9PTClhbGxvd3NCYWNrRm9yd2FyZE5hdmln
YXRpb25HZXN0dXJlcworeworICAgIHJldHVybiBfZGF0YS0+X2FsbG93c0JhY2tGb3J3YXJkTmF2
aWdhdGlvbkdlc3R1cmVzOworfQorCiAtICh2b2lkKW1hZ25pZnlXaXRoRXZlbnQ6KE5TRXZlbnQg
KilldmVudAogewogICAgIGlmICghX2RhdGEtPl9hbGxvd3NNYWduaWZpY2F0aW9uKSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXdJbnRlcm5hbC5o
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3SW50ZXJuYWwuaAppbmRl
eCA0OGU2YjkzLi42OGExMDJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL21hYy9XS1ZpZXdJbnRlcm5hbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvbWFjL1dLVmlld0ludGVybmFsLmgKQEAgLTMxLDIxICszMSwyMiBAQAogI2ltcG9ydCA8d3Rm
L1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgSVBDIHsKLSAgICBjbGFzcyBEYXRhUmVmZXJlbmNlOwor
Y2xhc3MgRGF0YVJlZmVyZW5jZTsKIH0KIAogbmFtZXNwYWNlIFdlYkNvcmUgewotICAgIHN0cnVj
dCBLZXlwcmVzc0NvbW1hbmQ7Ci0gICAgY2xhc3MgSW1hZ2U7Ci0gICAgY2xhc3MgU2hhcmVkQnVm
ZmVyOworc3RydWN0IEtleXByZXNzQ29tbWFuZDsKK2NsYXNzIEltYWdlOworY2xhc3MgU2hhcmVk
QnVmZmVyOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKLSAgICBjbGFzcyBEcmF3aW5nQXJlYVBy
b3h5OwotICAgIGNsYXNzIEZpbmRJbmRpY2F0b3I7Ci0gICAgY2xhc3MgTGF5ZXJUcmVlQ29udGV4
dDsKLSAgICBzdHJ1Y3QgQ29sb3JTcGFjZURhdGE7Ci0gICAgc3RydWN0IEVkaXRvclN0YXRlOwor
Y2xhc3MgRHJhd2luZ0FyZWFQcm94eTsKK2NsYXNzIEZpbmRJbmRpY2F0b3I7CitjbGFzcyBMYXll
clRyZWVDb250ZXh0OworY2xhc3MgVmlld0dlc3R1cmVDb250cm9sbGVyOworc3RydWN0IENvbG9y
U3BhY2VEYXRhOworc3RydWN0IEVkaXRvclN0YXRlOwogfQogCiBAY2xhc3MgV0tGdWxsU2NyZWVu
V2luZG93Q29udHJvbGxlcjsKQEAgLTY5LDYgKzcwLDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAt
ICh2b2lkKV9zZXRGaW5kSW5kaWNhdG9yOihQYXNzUmVmUHRyPFdlYktpdDo6RmluZEluZGljYXRv
cj4pZmluZEluZGljYXRvciBmYWRlT3V0OihCT09MKWZhZGVPdXQgYW5pbWF0ZTooQk9PTClhbmlt
YXRlOwogCiAtICh2b2lkKV9zZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZVJvb3RMYXllcjoo
Q0FMYXllciAqKXJvb3RMYXllcjsKKy0gKENBTGF5ZXIgKilfcm9vdExheWVyOwogCiAtICh2b2lk
KV9zZXRBY2Nlc3NpYmlsaXR5V2ViUHJvY2Vzc1Rva2VuOihOU0RhdGEgKilkYXRhOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IGQyM2RmMjcuLmRiNzBl
ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC01MCw2
ICs1MCw3IEBACiAjaW5jbHVkZSAiU2Vzc2lvblN0YXRlLmgiCiAjaW5jbHVkZSAiVGV4dENoZWNr
ZXIuaCIKICNpbmNsdWRlICJUZXh0Q2hlY2tlclN0YXRlLmgiCisjaW5jbHVkZSAiVmlld1NuYXBz
aG90U3RvcmUuaCIKICNpbmNsdWRlICJXS0NvbnRleHRQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2Vi
QmFja0ZvcndhcmRMaXN0LmgiCiAjaW5jbHVkZSAiV2ViQmFja0ZvcndhcmRMaXN0SXRlbS5oIgpA
QCAtNzQ3LDYgKzc0OCw4IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpnb0ZvcndhcmQoKQogICAgIGlm
ICghZm9yd2FyZEl0ZW0pCiAgICAgICAgIHJldHVybjsKIAorICAgIFZpZXdTbmFwc2hvdFN0b3Jl
OjpzaGFyZWQoKS50YWtlU25hcHNob3QoKnRoaXMpOworCiAgICAgYXV0byB0cmFuc2FjdGlvbiA9
IG1fcGFnZUxvYWRTdGF0ZS50cmFuc2FjdGlvbigpOwogCiAgICAgbV9wYWdlTG9hZFN0YXRlLnNl
dFBlbmRpbmdBUElSZXF1ZXN0VVJMKHRyYW5zYWN0aW9uLCBmb3J3YXJkSXRlbS0+dXJsKCkpOwpA
QCAtNzc0LDYgKzc3Nyw4IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpnb0JhY2soKQogICAgIGlmICgh
YmFja0l0ZW0pCiAgICAgICAgIHJldHVybjsKIAorICAgIFZpZXdTbmFwc2hvdFN0b3JlOjpzaGFy
ZWQoKS50YWtlU25hcHNob3QoKnRoaXMpOworCiAgICAgYXV0byB0cmFuc2FjdGlvbiA9IG1fcGFn
ZUxvYWRTdGF0ZS50cmFuc2FjdGlvbigpOwogCiAgICAgbV9wYWdlTG9hZFN0YXRlLnNldFBlbmRp
bmdBUElSZXF1ZXN0VVJMKHRyYW5zYWN0aW9uLCBiYWNrSXRlbS0+dXJsKCkpOwpAQCAtNzk4LDYg
KzgwMyw4IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpnb1RvQmFja0ZvcndhcmRJdGVtKFdlYkJhY2tG
b3J3YXJkTGlzdEl0ZW0qIGl0ZW0pCiAgICAgICAgIHJlYXR0YWNoVG9XZWJQcm9jZXNzV2l0aEl0
ZW0oaXRlbSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CisKKyAgICBWaWV3U25hcHNob3RTdG9y
ZTo6c2hhcmVkKCkudGFrZVNuYXBzaG90KCp0aGlzKTsKICAgICAKICAgICBhdXRvIHRyYW5zYWN0
aW9uID0gbV9wYWdlTG9hZFN0YXRlLnRyYW5zYWN0aW9uKCk7CiAKQEAgLTIxMDAsOCArMjEwNywx
MCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZSh1
aW50NjRfdCBmcmFtZUlELCBjb25zdCBTdHJpbgogICAgIE1FU1NBR0VfQ0hFQ0soZnJhbWUpOwog
ICAgIE1FU1NBR0VfQ0hFQ0tfVVJMKHVybCk7CiAKLSAgICBpZiAoZnJhbWUtPmlzTWFpbkZyYW1l
KCkpCisgICAgaWYgKGZyYW1lLT5pc01haW5GcmFtZSgpKSB7CisgICAgICAgIFZpZXdTbmFwc2hv
dFN0b3JlOjpzaGFyZWQoKS50YWtlU25hcHNob3QoKnRoaXMpOwogICAgICAgICBtX3BhZ2VMb2Fk
U3RhdGUuZGlkU3RhcnRQcm92aXNpb25hbExvYWQodHJhbnNhY3Rpb24sIHVybCwgdW5yZWFjaGFi
bGVVUkwpOworICAgIH0KIAogICAgIGZyYW1lLT5zZXRVbnJlYWNoYWJsZVVSTCh1bnJlYWNoYWJs
ZVVSTCk7CiAgICAgZnJhbWUtPmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKHVybCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvY2YvV2ViQmFja0ZvcndhcmRMaXN0Q0YuY3Bw
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2NmL1dlYkJhY2tGb3J3YXJkTGlzdENGLmNwcApp
bmRleCAwOGE0NmUyLi5lZDIyMTE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvY2YvV2ViQmFja0ZvcndhcmRMaXN0Q0YuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9jZi9XZWJCYWNrRm9yd2FyZExpc3RDRi5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDEwLCAyMDExLCAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMCwgMjAxMSwgMjAxMiwgMjAxNCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTU4LDYgKzU4LDcgQEAgc3RhdGljIENGU3RyaW5nUmVmIHNlc3Npb25IaXN0b3J5RW50cnlUaXRs
ZUtleSA9IENGU1RSKCJTZXNzaW9uSGlzdG9yeUVudHJ5VGl0bGUKIHN0YXRpYyBDRlN0cmluZ1Jl
ZiBzZXNzaW9uSGlzdG9yeUVudHJ5VVJMS2V5ID0gQ0ZTVFIoIlNlc3Npb25IaXN0b3J5RW50cnlV
UkwiKTsKIHN0YXRpYyBDRlN0cmluZ1JlZiBzZXNzaW9uSGlzdG9yeUVudHJ5T3JpZ2luYWxVUkxL
ZXkgPSBDRlNUUigiU2Vzc2lvbkhpc3RvcnlFbnRyeU9yaWdpbmFsVVJMIik7CiBzdGF0aWMgQ0ZT
dHJpbmdSZWYgc2Vzc2lvbkhpc3RvcnlFbnRyeURhdGFLZXkgPSBDRlNUUigiU2Vzc2lvbkhpc3Rv
cnlFbnRyeURhdGEiKTsKK3N0YXRpYyBDRlN0cmluZ1JlZiBzZXNzaW9uSGlzdG9yeUVudHJ5U25h
cHNob3RVVUlES2V5ID0gQ0ZTVFIoIlNlc3Npb25IaXN0b3J5RW50cnlTbmFwc2hvdFVVSUQiKTsK
IAogc3RhdGljIGJvb2wgZXh0cmFjdEJhY2tGb3J3YXJkTGlzdEVudHJpZXNGcm9tQXJyYXkoQ0ZB
cnJheVJlZiwgQmFja0ZvcndhcmRMaXN0SXRlbVZlY3RvciYpOwogCkBAIC0xMDQsMTUgKzEwNSwx
NiBAQCBDRkRpY3Rpb25hcnlSZWYgV2ViQmFja0ZvcndhcmRMaXN0OjpjcmVhdGVDRkRpY3Rpb25h
cnlSZXByZXNlbnRhdGlvbihXZWJQYWdlUHJveAogICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdS
ZWY+IHVybCA9IG1fZW50cmllc1tpXS0+dXJsKCkuY3JlYXRlQ0ZTdHJpbmcoKTsKICAgICAgICAg
UmV0YWluUHRyPENGU3RyaW5nUmVmPiB0aXRsZSA9IG1fZW50cmllc1tpXS0+dGl0bGUoKS5jcmVh
dGVDRlN0cmluZygpOwogICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IG9yaWdpbmFsVVJM
ID0gbV9lbnRyaWVzW2ldLT5vcmlnaW5hbFVSTCgpLmNyZWF0ZUNGU3RyaW5nKCk7CisgICAgICAg
IFJldGFpblB0cjxDRlN0cmluZ1JlZj4gdXVpZCA9IG1fZW50cmllc1tpXS0+c25hcHNob3RVVUlE
KCkuY3JlYXRlQ0ZTdHJpbmcoKTsKIAogICAgICAgICAvLyBGSVhNRTogVGhpcyB1c2VzIHRoZSBJ
UEMgZGF0YSBlbmNvZGluZyBmb3JtYXQsIHdoaWNoIG1lYW5zIHRoYXQgd2hlbmV2ZXIgd2UgY2hh
bmdlIHRoZSBJUEMgZW5jb2Rpbmcgd2UgbmVlZCB0byBidW1wIHRoZSBDdXJyZW50U2Vzc2lvblN0
YXRlRGF0YVZlcnNpb24KICAgICAgICAgLy8gY29uc3RhbnQgaW4gV2ViUGFnZVByb3h5Q0YuY3Bw
LiBUaGUgSVBDIGRhdGEgZm9ybWF0IGlzIG1lYW50IHRvIGJlIGFuIGltcGxlbWVudGF0aW9uIGRl
dGFpbCwgYW5kIG5vdCBzb21ldGhpbmcgdGhhdCBzaG91bGQgYmUgd3JpdHRlbiB0byBkaXNrLgog
ICAgICAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBlbnRyeURhdGEgPSBhZG9wdENGKENGRGF0YUNy
ZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBtX2VudHJpZXNbaV0tPmJhY2tGb3J3YXJkRGF0YSgp
LmRhdGEoKSwgbV9lbnRyaWVzW2ldLT5iYWNrRm9yd2FyZERhdGEoKS5zaXplKCkpKTsKLSAgICAg
ICAgCi0gICAgICAgIGNvbnN0IHZvaWQqIGtleXNbNF0gPSB7IHNlc3Npb25IaXN0b3J5RW50cnlV
UkxLZXksIHNlc3Npb25IaXN0b3J5RW50cnlUaXRsZUtleSwgc2Vzc2lvbkhpc3RvcnlFbnRyeU9y
aWdpbmFsVVJMS2V5LCBzZXNzaW9uSGlzdG9yeUVudHJ5RGF0YUtleSB9OwotICAgICAgICBjb25z
dCB2b2lkKiB2YWx1ZXNbNF0gPSB7IHVybC5nZXQoKSwgdGl0bGUuZ2V0KCksIG9yaWdpbmFsVVJM
LmdldCgpLCBlbnRyeURhdGEuZ2V0KCkgfTsKIAotICAgICAgICBSZXRhaW5QdHI8Q0ZEaWN0aW9u
YXJ5UmVmPiBlbnRyeURpY3Rpb25hcnkgPSBhZG9wdENGKENGRGljdGlvbmFyeUNyZWF0ZSgwLCBr
ZXlzLCB2YWx1ZXMsIDQsICZrQ0ZUeXBlRGljdGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVE
aWN0aW9uYXJ5VmFsdWVDYWxsQmFja3MpKTsKKyAgICAgICAgY29uc3Qgdm9pZCoga2V5c1s1XSA9
IHsgc2Vzc2lvbkhpc3RvcnlFbnRyeVVSTEtleSwgc2Vzc2lvbkhpc3RvcnlFbnRyeVRpdGxlS2V5
LCBzZXNzaW9uSGlzdG9yeUVudHJ5T3JpZ2luYWxVUkxLZXksIHNlc3Npb25IaXN0b3J5RW50cnlE
YXRhS2V5LCBzZXNzaW9uSGlzdG9yeUVudHJ5U25hcHNob3RVVUlES2V5IH07CisgICAgICAgIGNv
bnN0IHZvaWQqIHZhbHVlc1s1XSA9IHsgdXJsLmdldCgpLCB0aXRsZS5nZXQoKSwgb3JpZ2luYWxV
UkwuZ2V0KCksIGVudHJ5RGF0YS5nZXQoKSwgdXVpZC5nZXQoKSB9OworCisgICAgICAgIFJldGFp
blB0cjxDRkRpY3Rpb25hcnlSZWY+IGVudHJ5RGljdGlvbmFyeSA9IGFkb3B0Q0YoQ0ZEaWN0aW9u
YXJ5Q3JlYXRlKDAsIGtleXMsIHZhbHVlcywgNSwgJmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJh
Y2tzLCAma0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNhbGxCYWNrcykpOwogICAgICAgICBDRkFycmF5
QXBwZW5kVmFsdWUoZW50cmllcy5nZXQoKSwgZW50cnlEaWN0aW9uYXJ5LmdldCgpKTsKICAgICB9
CiAgICAgICAgIApAQCAtMzA5LDEzICszMTEsMjEgQEAgc3RhdGljIGJvb2wgZXh0cmFjdEJhY2tG
b3J3YXJkTGlzdEVudHJpZXNGcm9tQXJyYXkoQ0ZBcnJheVJlZiBjZkVudHJpZXMsIEJhY2tGb3IK
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogCisgICAgICAgIENGU3RyaW5n
UmVmIHNuYXBzaG90VVVJRCA9IChDRlN0cmluZ1JlZilDRkRpY3Rpb25hcnlHZXRWYWx1ZShlbnRy
eURpY3Rpb25hcnksIHNlc3Npb25IaXN0b3J5RW50cnlTbmFwc2hvdFVVSURLZXkpOworICAgICAg
ICBpZiAoIXNuYXBzaG90VVVJRCB8fCBDRkdldFR5cGVJRChzbmFwc2hvdFVVSUQpICE9IENGU3Ry
aW5nR2V0VHlwZUlEKCkpIHsKKyAgICAgICAgICAgIExPRyhTZXNzaW9uU3RhdGUsICJXZWJCYWNr
Rm9yd2FyZExpc3QgZW50cnkgYXQgaW5kZXggJWkgZG9lcyBub3QgaGF2ZSBhIHZhbGlkIHNuYXBz
aG90IFVVSUQiLCAoaW50KWkpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9
CisKICAgICAgICAgQ0ZEYXRhUmVmIGJhY2tGb3J3YXJkRGF0YSA9IChDRkRhdGFSZWYpQ0ZEaWN0
aW9uYXJ5R2V0VmFsdWUoZW50cnlEaWN0aW9uYXJ5LCBzZXNzaW9uSGlzdG9yeUVudHJ5RGF0YUtl
eSk7CiAgICAgICAgIGlmICghYmFja0ZvcndhcmREYXRhIHx8IENGR2V0VHlwZUlEKGJhY2tGb3J3
YXJkRGF0YSkgIT0gQ0ZEYXRhR2V0VHlwZUlEKCkpIHsKICAgICAgICAgICAgIExPRyhTZXNzaW9u
U3RhdGUsICJXZWJCYWNrRm9yd2FyZExpc3QgZW50cnkgYXQgaW5kZXggJWkgZG9lcyBub3QgaGF2
ZSBiYWNrL2ZvcndhcmQgZGF0YSIsIChpbnQpaSk7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIGVudHJpZXMuYXBwZW5kKFdlYkJhY2tGb3J3
YXJkTGlzdEl0ZW06OmNyZWF0ZShvcmlnaW5hbFVSTCwgZW50cnlVUkwsIGVudHJ5VGl0bGUsIENG
RGF0YUdldEJ5dGVQdHIoYmFja0ZvcndhcmREYXRhKSwgQ0ZEYXRhR2V0TGVuZ3RoKGJhY2tGb3J3
YXJkRGF0YSksIGdlbmVyYXRlV2ViQmFja0ZvcndhcmRJdGVtSUQoKSkpOworCisgICAgICAgIGF1
dG8gaXRlbSA9IFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW06OmNyZWF0ZShvcmlnaW5hbFVSTCwgZW50
cnlVUkwsIGVudHJ5VGl0bGUsIENGRGF0YUdldEJ5dGVQdHIoYmFja0ZvcndhcmREYXRhKSwgQ0ZE
YXRhR2V0TGVuZ3RoKGJhY2tGb3J3YXJkRGF0YSksIGdlbmVyYXRlV2ViQmFja0ZvcndhcmRJdGVt
SUQoKSk7CisgICAgICAgIGl0ZW0tPnNldFNuYXBzaG90VVVJRChzbmFwc2hvdFVVSUQpOworICAg
ICAgICBlbnRyaWVzLmFwcGVuZChpdGVtKTsKICAgICB9CiAKICAgICByZXR1cm4gdHJ1ZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9jZi9XZWJQYWdlUHJveHlDRi5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvY2YvV2ViUGFnZVByb3h5Q0YuY3BwCmluZGV4IDI5
NzI4OTYuLmZjODFjM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9jZi9X
ZWJQYWdlUHJveHlDRi5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2NmL1dlYlBh
Z2VQcm94eUNGLmNwcApAQCAtNDQsNyArNDQsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIHN0YXRp
YyBDRlN0cmluZ1JlZiBzZXNzaW9uSGlzdG9yeUtleSA9IENGU1RSKCJTZXNzaW9uSGlzdG9yeSIp
Owogc3RhdGljIENGU3RyaW5nUmVmIHByb3Zpc2lvbmFsVVJMS2V5ID0gQ0ZTVFIoIlByb3Zpc2lv
bmFsVVJMIik7CiAKLXN0YXRpYyBjb25zdCBVSW50MzIgQ3VycmVudFNlc3Npb25TdGF0ZURhdGFW
ZXJzaW9uID0gMjsKK3N0YXRpYyBjb25zdCBVSW50MzIgQ3VycmVudFNlc3Npb25TdGF0ZURhdGFW
ZXJzaW9uID0gMzsKIAogUGFzc1JlZlB0cjxBUEk6OkRhdGE+IFdlYlBhZ2VQcm94eTo6c2Vzc2lv
blN0YXRlRGF0YShXZWJQYWdlUHJveHlTZXNzaW9uU3RhdGVGaWx0ZXJDYWxsYmFjayBmaWx0ZXIs
IHZvaWQqIGNvbnRleHQpIGNvbnN0CiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvbWFjL1ZpZXdHZXN0dXJlQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvbWFjL1ZpZXdHZXN0dXJlQ29udHJvbGxlci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDdjZWZjYzEuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L21hYy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMjE3ICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0g
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAot
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0g
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotCi0jaW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIlZpZXdHZXN0
dXJlQ29udHJvbGxlci5oIgotCi0jaW1wb3J0ICJWaWV3R2VzdHVyZUNvbnRyb2xsZXJNZXNzYWdl
cy5oIgotI2ltcG9ydCAiVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvck1lc3NhZ2VzLmgiCi0j
aW1wb3J0ICJXZWJQYWdlUHJveHkuaCIKLSNpbXBvcnQgIldlYlByb2Nlc3NQcm94eS5oIgotCi11
c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKLQotc3RhdGljIGNvbnN0IGRvdWJsZSBtaW5NYWduaWZp
Y2F0aW9uID0gMTsKLXN0YXRpYyBjb25zdCBkb3VibGUgbWF4TWFnbmlmaWNhdGlvbiA9IDM7Ci0K
LXN0YXRpYyBjb25zdCBkb3VibGUgbWluRWxhc3RpY01hZ25pZmljYXRpb24gPSAwLjc1Owotc3Rh
dGljIGNvbnN0IGRvdWJsZSBtYXhFbGFzdGljTWFnbmlmaWNhdGlvbiA9IDQ7Ci0KLXN0YXRpYyBj
b25zdCBkb3VibGUgem9vbU91dEJvb3N0ID0gMS42Owotc3RhdGljIGNvbnN0IGRvdWJsZSB6b29t
T3V0UmVzaXN0YW5jZSA9IDAuMTA7Ci0KLXN0YXRpYyBjb25zdCBmbG9hdCBzbWFydE1hZ25pZmlj
YXRpb25FbGVtZW50UGFkZGluZyA9IDAuMDU7Ci1zdGF0aWMgY29uc3QgZmxvYXQgc21hcnRNYWdu
aWZpY2F0aW9uUGFuU2Nyb2xsVGhyZXNob2xkID0gMTAwOwotCi1uYW1lc3BhY2UgV2ViS2l0IHsK
LQotVmlld0dlc3R1cmVDb250cm9sbGVyOjpWaWV3R2VzdHVyZUNvbnRyb2xsZXIoV2ViUGFnZVBy
b3h5JiB3ZWJQYWdlUHJveHkpCi0gICAgOiBtX3dlYlBhZ2VQcm94eSh3ZWJQYWdlUHJveHkpCi0g
ICAgLCBtX2FjdGl2ZUdlc3R1cmVUeXBlKFZpZXdHZXN0dXJlVHlwZTo6Tm9uZSkKLSAgICAsIG1f
dmlzaWJsZUNvbnRlbnRSZWN0SXNWYWxpZChmYWxzZSkKLSAgICAsIG1fZnJhbWVIYW5kbGVzTWFn
bmlmaWNhdGlvbkdlc3R1cmUoZmFsc2UpCi17Ci0gICAgbV93ZWJQYWdlUHJveHkucHJvY2Vzcygp
LmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6Vmlld0dlc3R1cmVDb250cm9sbGVyOjptZXNz
YWdlUmVjZWl2ZXJOYW1lKCksIG1fd2ViUGFnZVByb3h5LnBhZ2VJRCgpLCAqdGhpcyk7Ci19Ci0K
LVZpZXdHZXN0dXJlQ29udHJvbGxlcjo6flZpZXdHZXN0dXJlQ29udHJvbGxlcigpCi17Ci0gICAg
bV93ZWJQYWdlUHJveHkucHJvY2VzcygpLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6
Vmlld0dlc3R1cmVDb250cm9sbGVyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fd2ViUGFnZVBy
b3h5LnBhZ2VJRCgpKTsKLX0KLQotc3RhdGljIGRvdWJsZSByZXNpc3RhbmNlRm9yRGVsdGEoZG91
YmxlIGRlbHRhU2NhbGUsIGRvdWJsZSBjdXJyZW50U2NhbGUpCi17Ci0gICAgLy8gWm9vbSBvdXQg
d2l0aCBzbGlnaHQgYWNjZWxlcmF0aW9uLCB1bnRpbCB3ZSByZWFjaCBtaW5pbXVtIHNjYWxlLgot
ICAgIGlmIChkZWx0YVNjYWxlIDwgMCAmJiBjdXJyZW50U2NhbGUgPiBtaW5NYWduaWZpY2F0aW9u
KQotICAgICAgICByZXR1cm4gem9vbU91dEJvb3N0OwotCi0gICAgLy8gWm9vbSBpbiB3aXRoIG5v
IGFjY2VsZXJhdGlvbiwgdW50aWwgd2UgcmVhY2ggbWF4aW11bSBzY2FsZS4KLSAgICBpZiAoZGVs
dGFTY2FsZSA+IDAgJiYgY3VycmVudFNjYWxlIDwgbWF4TWFnbmlmaWNhdGlvbikKLSAgICAgICAg
cmV0dXJuIDE7Ci0KLSAgICAvLyBPdXRzaWRlIG9mIHRoZSBleHRyZW1lcywgcmVzaXN0IGZ1cnRo
ZXIgc2NhbGluZy4KLSAgICBkb3VibGUgbGltaXQgPSBjdXJyZW50U2NhbGUgPCBtaW5NYWduaWZp
Y2F0aW9uID8gbWluTWFnbmlmaWNhdGlvbiA6IG1heE1hZ25pZmljYXRpb247Ci0gICAgZG91Ymxl
IHNjYWxlRGlzdGFuY2UgPSBhYnMobGltaXQgLSBjdXJyZW50U2NhbGUpOwotICAgIGRvdWJsZSBz
Y2FsZVBlcmNlbnQgPSBzdGQ6Om1pbihzdGQ6Om1heChzY2FsZURpc3RhbmNlIC8gbGltaXQsIDAu
KSwgMS4pOwotICAgIGRvdWJsZSByZXNpc3RhbmNlID0gem9vbU91dFJlc2lzdGFuY2UgKyBzY2Fs
ZVBlcmNlbnQgKiAoMC4wMSAtIHpvb21PdXRSZXNpc3RhbmNlKTsKLQotICAgIHJldHVybiByZXNp
c3RhbmNlOwotfQotCi1GbG9hdFBvaW50IFZpZXdHZXN0dXJlQ29udHJvbGxlcjo6c2NhbGVkTWFn
bmlmaWNhdGlvbk9yaWdpbihGbG9hdFBvaW50IG9yaWdpbiwgZG91YmxlIHNjYWxlKQotewotICAg
IEZsb2F0UG9pbnQgc2NhbGVkTWFnbmlmaWNhdGlvbk9yaWdpbihvcmlnaW4pOwotICAgIHNjYWxl
ZE1hZ25pZmljYXRpb25PcmlnaW4ubW92ZUJ5KG1fdmlzaWJsZUNvbnRlbnRSZWN0LmxvY2F0aW9u
KCkpOwotICAgIGZsb2F0IG1hZ25pZmljYXRpb25PcmlnaW5TY2FsZSA9IDEgLSAoc2NhbGUgLyBt
X3dlYlBhZ2VQcm94eS5wYWdlU2NhbGVGYWN0b3IoKSk7Ci0gICAgc2NhbGVkTWFnbmlmaWNhdGlv
bk9yaWdpbi5zY2FsZShtYWduaWZpY2F0aW9uT3JpZ2luU2NhbGUsIG1hZ25pZmljYXRpb25Pcmln
aW5TY2FsZSk7Ci0gICAgcmV0dXJuIHNjYWxlZE1hZ25pZmljYXRpb25PcmlnaW47Ci19Ci0KLXZv
aWQgVmlld0dlc3R1cmVDb250cm9sbGVyOjpkaWRDb2xsZWN0R2VvbWV0cnlGb3JNYWduaWZpY2F0
aW9uR2VzdHVyZShGbG9hdFJlY3QgdmlzaWJsZUNvbnRlbnRSZWN0LCBib29sIGZyYW1lSGFuZGxl
c01hZ25pZmljYXRpb25HZXN0dXJlKQotewotICAgIG1fYWN0aXZlR2VzdHVyZVR5cGUgPSBWaWV3
R2VzdHVyZVR5cGU6Ok1hZ25pZmljYXRpb247Ci0gICAgbV92aXNpYmxlQ29udGVudFJlY3QgPSB2
aXNpYmxlQ29udGVudFJlY3Q7Ci0gICAgbV92aXNpYmxlQ29udGVudFJlY3RJc1ZhbGlkID0gdHJ1
ZTsKLSAgICBtX2ZyYW1lSGFuZGxlc01hZ25pZmljYXRpb25HZXN0dXJlID0gZnJhbWVIYW5kbGVz
TWFnbmlmaWNhdGlvbkdlc3R1cmU7Ci19Ci0KLXZvaWQgVmlld0dlc3R1cmVDb250cm9sbGVyOjpo
YW5kbGVNYWduaWZpY2F0aW9uR2VzdHVyZShkb3VibGUgc2NhbGUsIEZsb2F0UG9pbnQgb3JpZ2lu
KQotewotICAgIEFTU0VSVChtX2FjdGl2ZUdlc3R1cmVUeXBlID09IFZpZXdHZXN0dXJlVHlwZTo6
Tm9uZSB8fCBtX2FjdGl2ZUdlc3R1cmVUeXBlID09IFZpZXdHZXN0dXJlVHlwZTo6TWFnbmlmaWNh
dGlvbik7Ci0KLSAgICBpZiAobV9hY3RpdmVHZXN0dXJlVHlwZSA9PSBWaWV3R2VzdHVyZVR5cGU6
Ok5vbmUpIHsKLSAgICAgICAgLy8gRklYTUU6IFdlIGRyb3AgdGhlIGZpcnN0IGZyYW1lIG9mIHRo
ZSBnZXN0dXJlIG9uIHRoZSBmbG9vciwgYmVjYXVzZSB3ZSBkb24ndCBoYXZlIHRoZSB2aXNpYmxl
IGNvbnRlbnQgYm91bmRzIHlldC4KLSAgICAgICAgbV9tYWduaWZpY2F0aW9uID0gbV93ZWJQYWdl
UHJveHkucGFnZVNjYWxlRmFjdG9yKCk7Ci0gICAgICAgIG1fd2ViUGFnZVByb3h5LnByb2Nlc3Mo
KS5zZW5kKE1lc3NhZ2VzOjpWaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yOjpDb2xsZWN0R2Vv
bWV0cnlGb3JNYWduaWZpY2F0aW9uR2VzdHVyZSgpLCBtX3dlYlBhZ2VQcm94eS5wYWdlSUQoKSk7
Ci0KLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIC8vIFdlJ3JlIHN0aWxsIHdhaXRpbmcg
Zm9yIHRoZSBEaWRDb2xsZWN0R2VvbWV0cnkgY2FsbGJhY2suCi0gICAgaWYgKCFtX3Zpc2libGVD
b250ZW50UmVjdElzVmFsaWQpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fYWN0aXZlR2VzdHVy
ZVR5cGUgPSBWaWV3R2VzdHVyZVR5cGU6Ok1hZ25pZmljYXRpb247Ci0KLSAgICBkb3VibGUgc2Nh
bGVXaXRoUmVzaXN0YW5jZSA9IHJlc2lzdGFuY2VGb3JEZWx0YShzY2FsZSwgbV9tYWduaWZpY2F0
aW9uKSAqIHNjYWxlOwotCi0gICAgbV9tYWduaWZpY2F0aW9uICs9IG1fbWFnbmlmaWNhdGlvbiAq
IHNjYWxlV2l0aFJlc2lzdGFuY2U7Ci0gICAgbV9tYWduaWZpY2F0aW9uID0gc3RkOjptaW4oc3Rk
OjptYXgobV9tYWduaWZpY2F0aW9uLCBtaW5FbGFzdGljTWFnbmlmaWNhdGlvbiksIG1heEVsYXN0
aWNNYWduaWZpY2F0aW9uKTsKLQotICAgIG1fbWFnbmlmaWNhdGlvbk9yaWdpbiA9IG9yaWdpbjsK
LQotICAgIGlmIChtX2ZyYW1lSGFuZGxlc01hZ25pZmljYXRpb25HZXN0dXJlKQotICAgICAgICBt
X3dlYlBhZ2VQcm94eS5zY2FsZVBhZ2UobV9tYWduaWZpY2F0aW9uLCByb3VuZGVkSW50UG9pbnQo
b3JpZ2luKSk7Ci0gICAgZWxzZQotICAgICAgICBtX3dlYlBhZ2VQcm94eS5kcmF3aW5nQXJlYSgp
LT5hZGp1c3RUcmFuc2llbnRab29tKG1fbWFnbmlmaWNhdGlvbiwgc2NhbGVkTWFnbmlmaWNhdGlv
bk9yaWdpbihvcmlnaW4sIG1fbWFnbmlmaWNhdGlvbikpOwotfQotCi12b2lkIFZpZXdHZXN0dXJl
Q29udHJvbGxlcjo6ZW5kTWFnbmlmaWNhdGlvbkdlc3R1cmUoKQotewotICAgIEFTU0VSVChtX2Fj
dGl2ZUdlc3R1cmVUeXBlID09IFZpZXdHZXN0dXJlVHlwZTo6TWFnbmlmaWNhdGlvbik7Ci0KLSAg
ICBkb3VibGUgbmV3TWFnbmlmaWNhdGlvbiA9IHN0ZDo6bWluKHN0ZDo6bWF4KG1fbWFnbmlmaWNh
dGlvbiwgbWluTWFnbmlmaWNhdGlvbiksIG1heE1hZ25pZmljYXRpb24pOwotCi0gICAgaWYgKG1f
ZnJhbWVIYW5kbGVzTWFnbmlmaWNhdGlvbkdlc3R1cmUpCi0gICAgICAgIG1fd2ViUGFnZVByb3h5
LnNjYWxlUGFnZShuZXdNYWduaWZpY2F0aW9uLCByb3VuZGVkSW50UG9pbnQobV9tYWduaWZpY2F0
aW9uT3JpZ2luKSk7Ci0gICAgZWxzZQotICAgICAgICBtX3dlYlBhZ2VQcm94eS5kcmF3aW5nQXJl
YSgpLT5jb21taXRUcmFuc2llbnRab29tKG5ld01hZ25pZmljYXRpb24sIHNjYWxlZE1hZ25pZmlj
YXRpb25PcmlnaW4obV9tYWduaWZpY2F0aW9uT3JpZ2luLCBuZXdNYWduaWZpY2F0aW9uKSk7Ci19
Ci0KLXZvaWQgVmlld0dlc3R1cmVDb250cm9sbGVyOjpoYW5kbGVTbWFydE1hZ25pZmljYXRpb25H
ZXN0dXJlKEZsb2F0UG9pbnQgb3JpZ2luKQotewotICAgIGlmIChtX2FjdGl2ZUdlc3R1cmVUeXBl
ICE9IFZpZXdHZXN0dXJlVHlwZTo6Tm9uZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV93ZWJQ
YWdlUHJveHkucHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OlZpZXdHZXN0dXJlR2VvbWV0cnlDb2xs
ZWN0b3I6OkNvbGxlY3RHZW9tZXRyeUZvclNtYXJ0TWFnbmlmaWNhdGlvbkdlc3R1cmUob3JpZ2lu
KSwgbV93ZWJQYWdlUHJveHkucGFnZUlEKCkpOwotfQotCi1zdGF0aWMgZmxvYXQgbWF4aW11bVJl
Y3RhbmdsZUNvbXBvbmVudERlbHRhKEZsb2F0UmVjdCBhLCBGbG9hdFJlY3QgYikKLXsKLSAgICBy
ZXR1cm4gc3RkOjptYXgoZmFicyhhLngoKSAtIGIueCgpKSwgc3RkOjptYXgoZmFicyhhLnkoKSAt
IGIueSgpKSwgc3RkOjptYXgoZmFicyhhLndpZHRoKCkgLSBiLndpZHRoKCkpLCBmYWJzKGEuaGVp
Z2h0KCkgLSBiLmhlaWdodCgpKSkpKTsKLX0KLQotdm9pZCBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6
OmRpZENvbGxlY3RHZW9tZXRyeUZvclNtYXJ0TWFnbmlmaWNhdGlvbkdlc3R1cmUoRmxvYXRQb2lu
dCBvcmlnaW4sIEZsb2F0UmVjdCByZW5kZXJSZWN0LCBGbG9hdFJlY3QgdmlzaWJsZUNvbnRlbnRS
ZWN0LCBib29sIGlzUmVwbGFjZWRFbGVtZW50LCBib29sIGZyYW1lSGFuZGxlc01hZ25pZmljYXRp
b25HZXN0dXJlKQotewotICAgIGlmIChmcmFtZUhhbmRsZXNNYWduaWZpY2F0aW9uR2VzdHVyZSkK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgZG91YmxlIGN1cnJlbnRTY2FsZUZhY3RvciA9IG1fd2Vi
UGFnZVByb3h5LnBhZ2VTY2FsZUZhY3RvcigpOwotCi0gICAgRmxvYXRSZWN0IHVuc2NhbGVkVGFy
Z2V0UmVjdCA9IHJlbmRlclJlY3Q7Ci0gICAgdW5zY2FsZWRUYXJnZXRSZWN0LnNjYWxlKDEgLyBj
dXJyZW50U2NhbGVGYWN0b3IpOwotICAgIHVuc2NhbGVkVGFyZ2V0UmVjdC5pbmZsYXRlWCh1bnNj
YWxlZFRhcmdldFJlY3Qud2lkdGgoKSAqIHNtYXJ0TWFnbmlmaWNhdGlvbkVsZW1lbnRQYWRkaW5n
KTsKLSAgICB1bnNjYWxlZFRhcmdldFJlY3QuaW5mbGF0ZVkodW5zY2FsZWRUYXJnZXRSZWN0Lmhl
aWdodCgpICogc21hcnRNYWduaWZpY2F0aW9uRWxlbWVudFBhZGRpbmcpOwotCi0gICAgZG91Ymxl
IHRhcmdldE1hZ25pZmljYXRpb24gPSB2aXNpYmxlQ29udGVudFJlY3Qud2lkdGgoKSAvIHVuc2Nh
bGVkVGFyZ2V0UmVjdC53aWR0aCgpOwotCi0gICAgLy8gRm9yIHJlcGxhY2VkIGVsZW1lbnRzIGxp
a2UgaW1hZ2VzLCB3ZSB3YW50IHRvIGZpdCB0aGUgd2hvbGUgZWxlbWVudAotICAgIC8vIGluIHRo
ZSB2aWV3LCBzbyBzY2FsZSBpdCBkb3duIGVub3VnaCB0byBtYWtlIGJvdGggZGltZW5zaW9ucyBm
aXQgaWYgcG9zc2libGUuCi0gICAgaWYgKGlzUmVwbGFjZWRFbGVtZW50KQotICAgICAgICB0YXJn
ZXRNYWduaWZpY2F0aW9uID0gc3RkOjptaW4odGFyZ2V0TWFnbmlmaWNhdGlvbiwgc3RhdGljX2Nh
c3Q8ZG91YmxlPih2aXNpYmxlQ29udGVudFJlY3QuaGVpZ2h0KCkgLyB1bnNjYWxlZFRhcmdldFJl
Y3QuaGVpZ2h0KCkpKTsKLQotICAgIHRhcmdldE1hZ25pZmljYXRpb24gPSBzdGQ6Om1pbihzdGQ6
Om1heCh0YXJnZXRNYWduaWZpY2F0aW9uLCBtaW5NYWduaWZpY2F0aW9uKSwgbWF4TWFnbmlmaWNh
dGlvbik7Ci0KLSAgICAvLyBBbGxvdyBwYW5uaW5nIGJldHdlZW4gZWxlbWVudHMgdmlhIGRvdWJs
ZS10YXAgd2hpbGUgbWFnbmlmaWVkLCB1bmxlc3MgdGhlIHRhcmdldCByZWN0IGlzCi0gICAgLy8g
c2ltaWxhciB0byB0aGUgbGFzdCBvbmUsIGluIHdoaWNoIGNhc2Ugd2UnbGwgem9vbSBhbGwgdGhl
IHdheSBvdXQuCi0gICAgaWYgKGN1cnJlbnRTY2FsZUZhY3RvciA+IDEKLSAgICAgICAgJiYgIW1f
bGFzdFNtYXJ0TWFnbmlmaWNhdGlvblVuc2NhbGVkVGFyZ2V0UmVjdC5pc0VtcHR5KCkKLSAgICAg
ICAgJiYgbWF4aW11bVJlY3RhbmdsZUNvbXBvbmVudERlbHRhKG1fbGFzdFNtYXJ0TWFnbmlmaWNh
dGlvblVuc2NhbGVkVGFyZ2V0UmVjdCwgdW5zY2FsZWRUYXJnZXRSZWN0KSA8IHNtYXJ0TWFnbmlm
aWNhdGlvblBhblNjcm9sbFRocmVzaG9sZCkKLSAgICAgICAgdGFyZ2V0TWFnbmlmaWNhdGlvbiA9
IDE7Ci0KLSAgICBGbG9hdFJlY3QgdGFyZ2V0UmVjdCh1bnNjYWxlZFRhcmdldFJlY3QpOwotICAg
IHRhcmdldFJlY3Quc2NhbGUodGFyZ2V0TWFnbmlmaWNhdGlvbik7Ci0gICAgRmxvYXRQb2ludCB0
YXJnZXRPcmlnaW4odmlzaWJsZUNvbnRlbnRSZWN0LmNlbnRlcigpKTsKLSAgICB0YXJnZXRPcmln
aW4ubW92ZUJ5KC10YXJnZXRSZWN0LmNlbnRlcigpKTsKLQotICAgIG1fd2ViUGFnZVByb3h5LmRy
YXdpbmdBcmVhKCktPmFkanVzdFRyYW5zaWVudFpvb20obV93ZWJQYWdlUHJveHkucGFnZVNjYWxl
RmFjdG9yKCksIHNjYWxlZE1hZ25pZmljYXRpb25PcmlnaW4oRmxvYXRQb2ludCgpLCBtX3dlYlBh
Z2VQcm94eS5wYWdlU2NhbGVGYWN0b3IoKSkpOwotICAgIG1fd2ViUGFnZVByb3h5LmRyYXdpbmdB
cmVhKCktPmNvbW1pdFRyYW5zaWVudFpvb20odGFyZ2V0TWFnbmlmaWNhdGlvbiwgdGFyZ2V0T3Jp
Z2luKTsKLQotICAgIG1fbGFzdFNtYXJ0TWFnbmlmaWNhdGlvblVuc2NhbGVkVGFyZ2V0UmVjdCA9
IHVuc2NhbGVkVGFyZ2V0UmVjdDsKLX0KLQotdm9pZCBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OmVu
ZEFjdGl2ZUdlc3R1cmUoKQotewotICAgIHN3aXRjaCAobV9hY3RpdmVHZXN0dXJlVHlwZSkgewot
ICAgIGNhc2UgVmlld0dlc3R1cmVUeXBlOjpOb25lOgotICAgIGNhc2UgVmlld0dlc3R1cmVUeXBl
OjpTbWFydE1hZ25pZmljYXRpb246Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgVmlld0dlc3R1
cmVUeXBlOjpNYWduaWZpY2F0aW9uOgotICAgICAgICBlbmRNYWduaWZpY2F0aW9uR2VzdHVyZSgp
OwotICAgIH0KLQotICAgIG1fdmlzaWJsZUNvbnRlbnRSZWN0SXNWYWxpZCA9IGZhbHNlOwotICAg
IG1fYWN0aXZlR2VzdHVyZVR5cGUgPSBWaWV3R2VzdHVyZVR5cGU6Ok5vbmU7Ci19Ci0KLWRvdWJs
ZSBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6Om1hZ25pZmljYXRpb24oKSBjb25zdAotewotICAgIGlm
IChtX2FjdGl2ZUdlc3R1cmVUeXBlID09IFZpZXdHZXN0dXJlVHlwZTo6TWFnbmlmaWNhdGlvbikK
LSAgICAgICAgcmV0dXJuIG1fbWFnbmlmaWNhdGlvbjsKLQotICAgIHJldHVybiBtX3dlYlBhZ2VQ
cm94eS5wYWdlU2NhbGVGYWN0b3IoKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1ZpZXdHZXN0dXJlQ29udHJvbGxl
ci5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIu
aAppbmRleCAyYmJjMmYzLi44N2NiMjY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvbWFjL1ZpZXdHZXN0dXJlQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9tYWMvVmlld0dlc3R1cmVDb250cm9sbGVyLmgKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxMywgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI4LDkgKzI4LDE1IEBACiAKICNp
bmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0Zsb2F0UmVjdC5o
PgorI2luY2x1ZGUgPFdlYkNvcmUvVGltZXIuaD4KKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+
CisKK09CSkNfQ0xBU1MgQ0FMYXllcjsKK09CSkNfQ0xBU1MgTlNFdmVudDsKIAogbmFtZXNwYWNl
IFdlYktpdCB7CiAKK2NsYXNzIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW07CiBjbGFzcyBXZWJQYWdl
UHJveHk7CiAKIGNsYXNzIFZpZXdHZXN0dXJlQ29udHJvbGxlciA6IHByaXZhdGUgSVBDOjpNZXNz
YWdlUmVjZWl2ZXIgewpAQCAtNDQsMTIgKzUwLDIxIEBAIHB1YmxpYzoKICAgICB2b2lkIGhhbmRs
ZU1hZ25pZmljYXRpb25HZXN0dXJlKGRvdWJsZSBzY2FsZSwgV2ViQ29yZTo6RmxvYXRQb2ludCBv
cmlnaW4pOwogICAgIHZvaWQgaGFuZGxlU21hcnRNYWduaWZpY2F0aW9uR2VzdHVyZShXZWJDb3Jl
OjpGbG9hdFBvaW50IG9yaWdpbik7CiAKKyAgICBib29sIGhhbmRsZVNjcm9sbFdoZWVsRXZlbnQo
TlNFdmVudCAqKTsKKyAgICB2b2lkIGRpZEhpdFJlbmRlclRyZWVTaXplVGhyZXNob2xkKCk7CisK
ICAgICB2b2lkIGVuZEFjdGl2ZUdlc3R1cmUoKTsKIAogICAgIGVudW0gY2xhc3MgVmlld0dlc3R1
cmVUeXBlIHsKICAgICAgICAgTm9uZSwKICAgICAgICAgTWFnbmlmaWNhdGlvbiwKICAgICAgICAg
U21hcnRNYWduaWZpY2F0aW9uLAorICAgICAgICBTd2lwZQorICAgIH07CisKKyAgICBlbnVtIGNs
YXNzIFN3aXBlVHJhbnNpdGlvblN0eWxlIHsKKyAgICAgICAgT3ZlcmxhcCwKKyAgICAgICAgUHVz
aAogICAgIH07CiAKIHByaXZhdGU6CkBAIC02Myw2ICs3OCwxMiBAQCBwcml2YXRlOgogICAgIHZv
aWQgZW5kTWFnbmlmaWNhdGlvbkdlc3R1cmUoKTsKICAgICBXZWJDb3JlOjpGbG9hdFBvaW50IHNj
YWxlZE1hZ25pZmljYXRpb25PcmlnaW4oV2ViQ29yZTo6RmxvYXRQb2ludCBvcmlnaW4sIGRvdWJs
ZSBzY2FsZSk7CiAKKyAgICB2b2lkIGJlZ2luU3dpcGVHZXN0dXJlKFdlYkJhY2tGb3J3YXJkTGlz
dEl0ZW0qIHRhcmdldEl0ZW0sIGJvb2wgc3dpcGluZ0xlZnQpOworICAgIHZvaWQgaGFuZGxlU3dp
cGVHZXN0dXJlKFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0qIHRhcmdldEl0ZW0sIGRvdWJsZSBwcm9n
cmVzcywgYm9vbCBzd2lwaW5nTGVmdCk7CisgICAgdm9pZCBlbmRTd2lwZUdlc3R1cmUoV2ViQmFj
a0ZvcndhcmRMaXN0SXRlbSogdGFyZ2V0SXRlbSwgYm9vbCBjYW5jZWxsZWQpOworICAgIHZvaWQg
cmVtb3ZlU3dpcGVTbmFwc2hvdCgpOworICAgIHZvaWQgc3dpcGVTbmFwc2hvdFdhdGNoZG9nVGlt
ZXJGaXJlZChXZWJDb3JlOjpUaW1lcjxWaWV3R2VzdHVyZUNvbnRyb2xsZXI+Kik7CisKICAgICBX
ZWJQYWdlUHJveHkmIG1fd2ViUGFnZVByb3h5OwogCiAgICAgZG91YmxlIG1fbWFnbmlmaWNhdGlv
bjsKQEAgLTc1LDYgKzk2LDEwIEBAIHByaXZhdGU6CiAgICAgV2ViQ29yZTo6RmxvYXRSZWN0IG1f
dmlzaWJsZUNvbnRlbnRSZWN0OwogICAgIGJvb2wgbV92aXNpYmxlQ29udGVudFJlY3RJc1ZhbGlk
OwogICAgIGJvb2wgbV9mcmFtZUhhbmRsZXNNYWduaWZpY2F0aW9uR2VzdHVyZTsKKworICAgIFJl
dGFpblB0cjxDQUxheWVyPiBtX3N3aXBlU25hcHNob3RMYXllcjsKKyAgICBTd2lwZVRyYW5zaXRp
b25TdHlsZSBtX3N3aXBlVHJhbnNpdGlvblN0eWxlOworICAgIFdlYkNvcmU6OlRpbWVyPFZpZXdH
ZXN0dXJlQ29udHJvbGxlcj4gbV9zd2lwZVdhdGNoZG9nVGltZXI7CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvVmll
d0dlc3R1cmVDb250cm9sbGVyLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L21hYy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIubWVzc2FnZXMuaW4KaW5kZXggMGIzOTllZi4uZDA5
YzAzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9WaWV3R2VzdHVy
ZUNvbnRyb2xsZXIubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21h
Yy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIubWVzc2FnZXMuaW4KQEAgLTIzLDQgKzIzLDUgQEAKIG1l
c3NhZ2VzIC0+IFZpZXdHZXN0dXJlQ29udHJvbGxlciB7CiAgICAgRGlkQ29sbGVjdEdlb21ldHJ5
Rm9yTWFnbmlmaWNhdGlvbkdlc3R1cmUoV2ViQ29yZTo6RmxvYXRSZWN0IHZpc2libGVDb250ZW50
Qm91bmRzLCBib29sIGZyYW1lSGFuZGxlc01hZ25pZmljYXRpb25HZXN0dXJlKQogICAgIERpZENv
bGxlY3RHZW9tZXRyeUZvclNtYXJ0TWFnbmlmaWNhdGlvbkdlc3R1cmUoV2ViQ29yZTo6RmxvYXRQ
b2ludCBvcmlnaW4sIFdlYkNvcmU6OkZsb2F0UmVjdCByZW5kZXJSZWN0LCBXZWJDb3JlOjpGbG9h
dFJlY3QgdmlzaWJsZUNvbnRlbnRCb3VuZHMsIGJvb2wgaXNSZXBsYWNlZEVsZW1lbnQsIGJvb2wg
ZnJhbWVIYW5kbGVzTWFnbmlmaWNhdGlvbkdlc3R1cmUpCisgICAgRGlkSGl0UmVuZGVyVHJlZVNp
emVUaHJlc2hvbGQoKQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21h
Yy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFj
L1ZpZXdHZXN0dXJlQ29udHJvbGxlci5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi5mNDliOGY3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L21hYy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIubW0KQEAgLTAsMCArMSw0MDYgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTMsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIlZpZXdHZXN0dXJlQ29udHJv
bGxlci5oIgorCisjaW1wb3J0ICJXZWJQYWdlR3JvdXAuaCIKKyNpbXBvcnQgIlZpZXdHZXN0dXJl
Q29udHJvbGxlck1lc3NhZ2VzLmgiCisjaW1wb3J0ICJWaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVj
dG9yTWVzc2FnZXMuaCIKKyNpbXBvcnQgIlZpZXdTbmFwc2hvdFN0b3JlLmgiCisjaW1wb3J0ICJX
ZWJCYWNrRm9yd2FyZExpc3QuaCIKKyNpbXBvcnQgIldlYlBhZ2VNZXNzYWdlcy5oIgorI2ltcG9y
dCAiV2ViUGFnZVByb3h5LmgiCisjaW1wb3J0ICJXZWJQcmVmZXJlbmNlcy5oIgorI2ltcG9ydCAi
V2ViUHJvY2Vzc1Byb3h5LmgiCisjaW1wb3J0ICJXS1ZpZXdJbnRlcm5hbC5oIgorI2ltcG9ydCA8
V2ViQ29yZS9DQUxheWVyV2ViQWRkaXRpb25zLmg+CisjaW1wb3J0IDxDb2NvYS9Db2NvYS5oPgor
I2ltcG9ydCA8UXVhcnR6Q29yZS9RdWFydHpDb3JlLmg+CisKKyNpZiBkZWZpbmVkKF9faGFzX2lu
Y2x1ZGUpICYmIF9faGFzX2luY2x1ZGUoPFF1YXJ0ekNvcmUvUXVhcnR6Q29yZVByaXZhdGUuaD4p
CisjaW1wb3J0IDxRdWFydHpDb3JlL1F1YXJ0ekNvcmVQcml2YXRlLmg+CisjZWxzZQorQGludGVy
ZmFjZSBDQUZpbHRlciA6IE5TT2JqZWN0IDxOU0NvcHlpbmcsIE5TTXV0YWJsZUNvcHlpbmcsIE5T
Q29kaW5nPgorQGVuZAorI2VuZGlmCisKK0BpbnRlcmZhY2UgQ0FGaWx0ZXIgKERldGFpbHMpCisr
IChDQUZpbHRlciAqKWZpbHRlcldpdGhUeXBlOihOU1N0cmluZyAqKXR5cGU7CitAZW5kCisKK2V4
dGVybiBOU1N0cmluZyAqIGNvbnN0IGtDQUZpbHRlckdhdXNzaWFuQmx1cjsKKwordXNpbmcgbmFt
ZXNwYWNlIFdlYkNvcmU7CisKK3N0YXRpYyBjb25zdCBkb3VibGUgbWluTWFnbmlmaWNhdGlvbiA9
IDE7CitzdGF0aWMgY29uc3QgZG91YmxlIG1heE1hZ25pZmljYXRpb24gPSAzOworCitzdGF0aWMg
Y29uc3QgZG91YmxlIG1pbkVsYXN0aWNNYWduaWZpY2F0aW9uID0gMC43NTsKK3N0YXRpYyBjb25z
dCBkb3VibGUgbWF4RWxhc3RpY01hZ25pZmljYXRpb24gPSA0OworCitzdGF0aWMgY29uc3QgZG91
YmxlIHpvb21PdXRCb29zdCA9IDEuNjsKK3N0YXRpYyBjb25zdCBkb3VibGUgem9vbU91dFJlc2lz
dGFuY2UgPSAwLjEwOworCitzdGF0aWMgY29uc3QgZmxvYXQgc21hcnRNYWduaWZpY2F0aW9uRWxl
bWVudFBhZGRpbmcgPSAwLjA1Oworc3RhdGljIGNvbnN0IGZsb2F0IHNtYXJ0TWFnbmlmaWNhdGlv
blBhblNjcm9sbFRocmVzaG9sZCA9IDEwMDsKKworc3RhdGljIGNvbnN0IGRvdWJsZSBzd2lwZU92
ZXJsYXlTaGFkb3dPcGFjaXR5ID0gMC42NjsKK3N0YXRpYyBjb25zdCBkb3VibGUgc3dpcGVPdmVy
bGF5U2hhZG93UmFkaXVzID0gMzsKKworc3RhdGljIGNvbnN0IGZsb2F0IHN3aXBlU25hcHNob3RS
ZW1vdmFsUmVuZGVyVHJlZVNpemVUYXJnZXRGcmFjdGlvbiA9IDAuNTsKK3N0YXRpYyBjb25zdCBz
dGQ6OmNocm9ubzo6ZHVyYXRpb248ZG91YmxlPiBzd2lwZVNuYXBzaG90UmVtb3ZhbFdhdGNoZG9n
RHVyYXRpb24oMyk7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitWaWV3R2VzdHVyZUNvbnRyb2xs
ZXI6OlZpZXdHZXN0dXJlQ29udHJvbGxlcihXZWJQYWdlUHJveHkmIHdlYlBhZ2VQcm94eSkKKyAg
ICA6IG1fd2ViUGFnZVByb3h5KHdlYlBhZ2VQcm94eSkKKyAgICAsIG1fYWN0aXZlR2VzdHVyZVR5
cGUoVmlld0dlc3R1cmVUeXBlOjpOb25lKQorICAgICwgbV92aXNpYmxlQ29udGVudFJlY3RJc1Zh
bGlkKGZhbHNlKQorICAgICwgbV9mcmFtZUhhbmRsZXNNYWduaWZpY2F0aW9uR2VzdHVyZShmYWxz
ZSkKKyAgICAsIG1fc3dpcGVUcmFuc2l0aW9uU3R5bGUoU3dpcGVUcmFuc2l0aW9uU3R5bGU6Ok92
ZXJsYXApCisgICAgLCBtX3N3aXBlV2F0Y2hkb2dUaW1lcih0aGlzLCAmVmlld0dlc3R1cmVDb250
cm9sbGVyOjpzd2lwZVNuYXBzaG90V2F0Y2hkb2dUaW1lckZpcmVkKQoreworICAgIG1fd2ViUGFn
ZVByb3h5LnByb2Nlc3MoKS5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlZpZXdHZXN0dXJl
Q29udHJvbGxlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3dlYlBhZ2VQcm94eS5wYWdlSUQo
KSwgKnRoaXMpOworfQorCitWaWV3R2VzdHVyZUNvbnRyb2xsZXI6On5WaWV3R2VzdHVyZUNvbnRy
b2xsZXIoKQoreworICAgIG1fd2ViUGFnZVByb3h5LnByb2Nlc3MoKS5yZW1vdmVNZXNzYWdlUmVj
ZWl2ZXIoTWVzc2FnZXM6OlZpZXdHZXN0dXJlQ29udHJvbGxlcjo6bWVzc2FnZVJlY2VpdmVyTmFt
ZSgpLCBtX3dlYlBhZ2VQcm94eS5wYWdlSUQoKSk7Cit9CisKK3N0YXRpYyBkb3VibGUgcmVzaXN0
YW5jZUZvckRlbHRhKGRvdWJsZSBkZWx0YVNjYWxlLCBkb3VibGUgY3VycmVudFNjYWxlKQorewor
ICAgIC8vIFpvb20gb3V0IHdpdGggc2xpZ2h0IGFjY2VsZXJhdGlvbiwgdW50aWwgd2UgcmVhY2gg
bWluaW11bSBzY2FsZS4KKyAgICBpZiAoZGVsdGFTY2FsZSA8IDAgJiYgY3VycmVudFNjYWxlID4g
bWluTWFnbmlmaWNhdGlvbikKKyAgICAgICAgcmV0dXJuIHpvb21PdXRCb29zdDsKKworICAgIC8v
IFpvb20gaW4gd2l0aCBubyBhY2NlbGVyYXRpb24sIHVudGlsIHdlIHJlYWNoIG1heGltdW0gc2Nh
bGUuCisgICAgaWYgKGRlbHRhU2NhbGUgPiAwICYmIGN1cnJlbnRTY2FsZSA8IG1heE1hZ25pZmlj
YXRpb24pCisgICAgICAgIHJldHVybiAxOworCisgICAgLy8gT3V0c2lkZSBvZiB0aGUgZXh0cmVt
ZXMsIHJlc2lzdCBmdXJ0aGVyIHNjYWxpbmcuCisgICAgZG91YmxlIGxpbWl0ID0gY3VycmVudFNj
YWxlIDwgbWluTWFnbmlmaWNhdGlvbiA/IG1pbk1hZ25pZmljYXRpb24gOiBtYXhNYWduaWZpY2F0
aW9uOworICAgIGRvdWJsZSBzY2FsZURpc3RhbmNlID0gYWJzKGxpbWl0IC0gY3VycmVudFNjYWxl
KTsKKyAgICBkb3VibGUgc2NhbGVQZXJjZW50ID0gc3RkOjptaW4oc3RkOjptYXgoc2NhbGVEaXN0
YW5jZSAvIGxpbWl0LCAwLiksIDEuKTsKKyAgICBkb3VibGUgcmVzaXN0YW5jZSA9IHpvb21PdXRS
ZXNpc3RhbmNlICsgc2NhbGVQZXJjZW50ICogKDAuMDEgLSB6b29tT3V0UmVzaXN0YW5jZSk7CisK
KyAgICByZXR1cm4gcmVzaXN0YW5jZTsKK30KKworRmxvYXRQb2ludCBWaWV3R2VzdHVyZUNvbnRy
b2xsZXI6OnNjYWxlZE1hZ25pZmljYXRpb25PcmlnaW4oRmxvYXRQb2ludCBvcmlnaW4sIGRvdWJs
ZSBzY2FsZSkKK3sKKyAgICBGbG9hdFBvaW50IHNjYWxlZE1hZ25pZmljYXRpb25PcmlnaW4ob3Jp
Z2luKTsKKyAgICBzY2FsZWRNYWduaWZpY2F0aW9uT3JpZ2luLm1vdmVCeShtX3Zpc2libGVDb250
ZW50UmVjdC5sb2NhdGlvbigpKTsKKyAgICBmbG9hdCBtYWduaWZpY2F0aW9uT3JpZ2luU2NhbGUg
PSAxIC0gKHNjYWxlIC8gbV93ZWJQYWdlUHJveHkucGFnZVNjYWxlRmFjdG9yKCkpOworICAgIHNj
YWxlZE1hZ25pZmljYXRpb25PcmlnaW4uc2NhbGUobWFnbmlmaWNhdGlvbk9yaWdpblNjYWxlLCBt
YWduaWZpY2F0aW9uT3JpZ2luU2NhbGUpOworICAgIHJldHVybiBzY2FsZWRNYWduaWZpY2F0aW9u
T3JpZ2luOworfQorCit2b2lkIFZpZXdHZXN0dXJlQ29udHJvbGxlcjo6ZGlkQ29sbGVjdEdlb21l
dHJ5Rm9yTWFnbmlmaWNhdGlvbkdlc3R1cmUoRmxvYXRSZWN0IHZpc2libGVDb250ZW50UmVjdCwg
Ym9vbCBmcmFtZUhhbmRsZXNNYWduaWZpY2F0aW9uR2VzdHVyZSkKK3sKKyAgICBtX2FjdGl2ZUdl
c3R1cmVUeXBlID0gVmlld0dlc3R1cmVUeXBlOjpNYWduaWZpY2F0aW9uOworICAgIG1fdmlzaWJs
ZUNvbnRlbnRSZWN0ID0gdmlzaWJsZUNvbnRlbnRSZWN0OworICAgIG1fdmlzaWJsZUNvbnRlbnRS
ZWN0SXNWYWxpZCA9IHRydWU7CisgICAgbV9mcmFtZUhhbmRsZXNNYWduaWZpY2F0aW9uR2VzdHVy
ZSA9IGZyYW1lSGFuZGxlc01hZ25pZmljYXRpb25HZXN0dXJlOworfQorCit2b2lkIFZpZXdHZXN0
dXJlQ29udHJvbGxlcjo6aGFuZGxlTWFnbmlmaWNhdGlvbkdlc3R1cmUoZG91YmxlIHNjYWxlLCBG
bG9hdFBvaW50IG9yaWdpbikKK3sKKyAgICBBU1NFUlQobV9hY3RpdmVHZXN0dXJlVHlwZSA9PSBW
aWV3R2VzdHVyZVR5cGU6Ok5vbmUgfHwgbV9hY3RpdmVHZXN0dXJlVHlwZSA9PSBWaWV3R2VzdHVy
ZVR5cGU6Ok1hZ25pZmljYXRpb24pOworCisgICAgaWYgKG1fYWN0aXZlR2VzdHVyZVR5cGUgPT0g
Vmlld0dlc3R1cmVUeXBlOjpOb25lKSB7CisgICAgICAgIC8vIEZJWE1FOiBXZSBkcm9wIHRoZSBm
aXJzdCBmcmFtZSBvZiB0aGUgZ2VzdHVyZSBvbiB0aGUgZmxvb3IsIGJlY2F1c2Ugd2UgZG9uJ3Qg
aGF2ZSB0aGUgdmlzaWJsZSBjb250ZW50IGJvdW5kcyB5ZXQuCisgICAgICAgIG1fbWFnbmlmaWNh
dGlvbiA9IG1fd2ViUGFnZVByb3h5LnBhZ2VTY2FsZUZhY3RvcigpOworICAgICAgICBtX3dlYlBh
Z2VQcm94eS5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6Vmlld0dlc3R1cmVHZW9tZXRyeUNvbGxl
Y3Rvcjo6Q29sbGVjdEdlb21ldHJ5Rm9yTWFnbmlmaWNhdGlvbkdlc3R1cmUoKSwgbV93ZWJQYWdl
UHJveHkucGFnZUlEKCkpOworCisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvLyBXZSdy
ZSBzdGlsbCB3YWl0aW5nIGZvciB0aGUgRGlkQ29sbGVjdEdlb21ldHJ5IGNhbGxiYWNrLgorICAg
IGlmICghbV92aXNpYmxlQ29udGVudFJlY3RJc1ZhbGlkKQorICAgICAgICByZXR1cm47CisKKyAg
ICBtX2FjdGl2ZUdlc3R1cmVUeXBlID0gVmlld0dlc3R1cmVUeXBlOjpNYWduaWZpY2F0aW9uOwor
CisgICAgZG91YmxlIHNjYWxlV2l0aFJlc2lzdGFuY2UgPSByZXNpc3RhbmNlRm9yRGVsdGEoc2Nh
bGUsIG1fbWFnbmlmaWNhdGlvbikgKiBzY2FsZTsKKworICAgIG1fbWFnbmlmaWNhdGlvbiArPSBt
X21hZ25pZmljYXRpb24gKiBzY2FsZVdpdGhSZXNpc3RhbmNlOworICAgIG1fbWFnbmlmaWNhdGlv
biA9IHN0ZDo6bWluKHN0ZDo6bWF4KG1fbWFnbmlmaWNhdGlvbiwgbWluRWxhc3RpY01hZ25pZmlj
YXRpb24pLCBtYXhFbGFzdGljTWFnbmlmaWNhdGlvbik7CisKKyAgICBtX21hZ25pZmljYXRpb25P
cmlnaW4gPSBvcmlnaW47CisKKyAgICBpZiAobV9mcmFtZUhhbmRsZXNNYWduaWZpY2F0aW9uR2Vz
dHVyZSkKKyAgICAgICAgbV93ZWJQYWdlUHJveHkuc2NhbGVQYWdlKG1fbWFnbmlmaWNhdGlvbiwg
cm91bmRlZEludFBvaW50KG9yaWdpbikpOworICAgIGVsc2UKKyAgICAgICAgbV93ZWJQYWdlUHJv
eHkuZHJhd2luZ0FyZWEoKS0+YWRqdXN0VHJhbnNpZW50Wm9vbShtX21hZ25pZmljYXRpb24sIHNj
YWxlZE1hZ25pZmljYXRpb25PcmlnaW4ob3JpZ2luLCBtX21hZ25pZmljYXRpb24pKTsKK30KKwor
dm9pZCBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OmVuZE1hZ25pZmljYXRpb25HZXN0dXJlKCkKK3sK
KyAgICBBU1NFUlQobV9hY3RpdmVHZXN0dXJlVHlwZSA9PSBWaWV3R2VzdHVyZVR5cGU6Ok1hZ25p
ZmljYXRpb24pOworCisgICAgZG91YmxlIG5ld01hZ25pZmljYXRpb24gPSBzdGQ6Om1pbihzdGQ6
Om1heChtX21hZ25pZmljYXRpb24sIG1pbk1hZ25pZmljYXRpb24pLCBtYXhNYWduaWZpY2F0aW9u
KTsKKworICAgIGlmIChtX2ZyYW1lSGFuZGxlc01hZ25pZmljYXRpb25HZXN0dXJlKQorICAgICAg
ICBtX3dlYlBhZ2VQcm94eS5zY2FsZVBhZ2UobmV3TWFnbmlmaWNhdGlvbiwgcm91bmRlZEludFBv
aW50KG1fbWFnbmlmaWNhdGlvbk9yaWdpbikpOworICAgIGVsc2UKKyAgICAgICAgbV93ZWJQYWdl
UHJveHkuZHJhd2luZ0FyZWEoKS0+Y29tbWl0VHJhbnNpZW50Wm9vbShuZXdNYWduaWZpY2F0aW9u
LCBzY2FsZWRNYWduaWZpY2F0aW9uT3JpZ2luKG1fbWFnbmlmaWNhdGlvbk9yaWdpbiwgbmV3TWFn
bmlmaWNhdGlvbikpOworCisgICAgbV9hY3RpdmVHZXN0dXJlVHlwZSA9IFZpZXdHZXN0dXJlVHlw
ZTo6Tm9uZTsKK30KKwordm9pZCBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OmhhbmRsZVNtYXJ0TWFn
bmlmaWNhdGlvbkdlc3R1cmUoRmxvYXRQb2ludCBvcmlnaW4pCit7CisgICAgaWYgKG1fYWN0aXZl
R2VzdHVyZVR5cGUgIT0gVmlld0dlc3R1cmVUeXBlOjpOb25lKQorICAgICAgICByZXR1cm47CisK
KyAgICBtX3dlYlBhZ2VQcm94eS5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6Vmlld0dlc3R1cmVH
ZW9tZXRyeUNvbGxlY3Rvcjo6Q29sbGVjdEdlb21ldHJ5Rm9yU21hcnRNYWduaWZpY2F0aW9uR2Vz
dHVyZShvcmlnaW4pLCBtX3dlYlBhZ2VQcm94eS5wYWdlSUQoKSk7Cit9CisKK3N0YXRpYyBmbG9h
dCBtYXhpbXVtUmVjdGFuZ2xlQ29tcG9uZW50RGVsdGEoRmxvYXRSZWN0IGEsIEZsb2F0UmVjdCBi
KQoreworICAgIHJldHVybiBzdGQ6Om1heChmYWJzKGEueCgpIC0gYi54KCkpLCBzdGQ6Om1heChm
YWJzKGEueSgpIC0gYi55KCkpLCBzdGQ6Om1heChmYWJzKGEud2lkdGgoKSAtIGIud2lkdGgoKSks
IGZhYnMoYS5oZWlnaHQoKSAtIGIuaGVpZ2h0KCkpKSkpOworfQorCit2b2lkIFZpZXdHZXN0dXJl
Q29udHJvbGxlcjo6ZGlkQ29sbGVjdEdlb21ldHJ5Rm9yU21hcnRNYWduaWZpY2F0aW9uR2VzdHVy
ZShGbG9hdFBvaW50IG9yaWdpbiwgRmxvYXRSZWN0IHJlbmRlclJlY3QsIEZsb2F0UmVjdCB2aXNp
YmxlQ29udGVudFJlY3QsIGJvb2wgaXNSZXBsYWNlZEVsZW1lbnQsIGJvb2wgZnJhbWVIYW5kbGVz
TWFnbmlmaWNhdGlvbkdlc3R1cmUpCit7CisgICAgaWYgKGZyYW1lSGFuZGxlc01hZ25pZmljYXRp
b25HZXN0dXJlKQorICAgICAgICByZXR1cm47CisKKyAgICBkb3VibGUgY3VycmVudFNjYWxlRmFj
dG9yID0gbV93ZWJQYWdlUHJveHkucGFnZVNjYWxlRmFjdG9yKCk7CisKKyAgICBGbG9hdFJlY3Qg
dW5zY2FsZWRUYXJnZXRSZWN0ID0gcmVuZGVyUmVjdDsKKyAgICB1bnNjYWxlZFRhcmdldFJlY3Qu
c2NhbGUoMSAvIGN1cnJlbnRTY2FsZUZhY3Rvcik7CisgICAgdW5zY2FsZWRUYXJnZXRSZWN0Lmlu
ZmxhdGVYKHVuc2NhbGVkVGFyZ2V0UmVjdC53aWR0aCgpICogc21hcnRNYWduaWZpY2F0aW9uRWxl
bWVudFBhZGRpbmcpOworICAgIHVuc2NhbGVkVGFyZ2V0UmVjdC5pbmZsYXRlWSh1bnNjYWxlZFRh
cmdldFJlY3QuaGVpZ2h0KCkgKiBzbWFydE1hZ25pZmljYXRpb25FbGVtZW50UGFkZGluZyk7CisK
KyAgICBkb3VibGUgdGFyZ2V0TWFnbmlmaWNhdGlvbiA9IHZpc2libGVDb250ZW50UmVjdC53aWR0
aCgpIC8gdW5zY2FsZWRUYXJnZXRSZWN0LndpZHRoKCk7CisKKyAgICAvLyBGb3IgcmVwbGFjZWQg
ZWxlbWVudHMgbGlrZSBpbWFnZXMsIHdlIHdhbnQgdG8gZml0IHRoZSB3aG9sZSBlbGVtZW50Cisg
ICAgLy8gaW4gdGhlIHZpZXcsIHNvIHNjYWxlIGl0IGRvd24gZW5vdWdoIHRvIG1ha2UgYm90aCBk
aW1lbnNpb25zIGZpdCBpZiBwb3NzaWJsZS4KKyAgICBpZiAoaXNSZXBsYWNlZEVsZW1lbnQpCisg
ICAgICAgIHRhcmdldE1hZ25pZmljYXRpb24gPSBzdGQ6Om1pbih0YXJnZXRNYWduaWZpY2F0aW9u
LCBzdGF0aWNfY2FzdDxkb3VibGU+KHZpc2libGVDb250ZW50UmVjdC5oZWlnaHQoKSAvIHVuc2Nh
bGVkVGFyZ2V0UmVjdC5oZWlnaHQoKSkpOworCisgICAgdGFyZ2V0TWFnbmlmaWNhdGlvbiA9IHN0
ZDo6bWluKHN0ZDo6bWF4KHRhcmdldE1hZ25pZmljYXRpb24sIG1pbk1hZ25pZmljYXRpb24pLCBt
YXhNYWduaWZpY2F0aW9uKTsKKworICAgIC8vIEFsbG93IHBhbm5pbmcgYmV0d2VlbiBlbGVtZW50
cyB2aWEgZG91YmxlLXRhcCB3aGlsZSBtYWduaWZpZWQsIHVubGVzcyB0aGUgdGFyZ2V0IHJlY3Qg
aXMKKyAgICAvLyBzaW1pbGFyIHRvIHRoZSBsYXN0IG9uZSwgaW4gd2hpY2ggY2FzZSB3ZSdsbCB6
b29tIGFsbCB0aGUgd2F5IG91dC4KKyAgICBpZiAoY3VycmVudFNjYWxlRmFjdG9yID4gMQorICAg
ICAgICAmJiAhbV9sYXN0U21hcnRNYWduaWZpY2F0aW9uVW5zY2FsZWRUYXJnZXRSZWN0LmlzRW1w
dHkoKQorICAgICAgICAmJiBtYXhpbXVtUmVjdGFuZ2xlQ29tcG9uZW50RGVsdGEobV9sYXN0U21h
cnRNYWduaWZpY2F0aW9uVW5zY2FsZWRUYXJnZXRSZWN0LCB1bnNjYWxlZFRhcmdldFJlY3QpIDwg
c21hcnRNYWduaWZpY2F0aW9uUGFuU2Nyb2xsVGhyZXNob2xkKQorICAgICAgICB0YXJnZXRNYWdu
aWZpY2F0aW9uID0gMTsKKworICAgIEZsb2F0UmVjdCB0YXJnZXRSZWN0KHVuc2NhbGVkVGFyZ2V0
UmVjdCk7CisgICAgdGFyZ2V0UmVjdC5zY2FsZSh0YXJnZXRNYWduaWZpY2F0aW9uKTsKKyAgICBG
bG9hdFBvaW50IHRhcmdldE9yaWdpbih2aXNpYmxlQ29udGVudFJlY3QuY2VudGVyKCkpOworICAg
IHRhcmdldE9yaWdpbi5tb3ZlQnkoLXRhcmdldFJlY3QuY2VudGVyKCkpOworCisgICAgbV93ZWJQ
YWdlUHJveHkuZHJhd2luZ0FyZWEoKS0+YWRqdXN0VHJhbnNpZW50Wm9vbShtX3dlYlBhZ2VQcm94
eS5wYWdlU2NhbGVGYWN0b3IoKSwgc2NhbGVkTWFnbmlmaWNhdGlvbk9yaWdpbihGbG9hdFBvaW50
KCksIG1fd2ViUGFnZVByb3h5LnBhZ2VTY2FsZUZhY3RvcigpKSk7CisgICAgbV93ZWJQYWdlUHJv
eHkuZHJhd2luZ0FyZWEoKS0+Y29tbWl0VHJhbnNpZW50Wm9vbSh0YXJnZXRNYWduaWZpY2F0aW9u
LCB0YXJnZXRPcmlnaW4pOworCisgICAgbV9sYXN0U21hcnRNYWduaWZpY2F0aW9uVW5zY2FsZWRU
YXJnZXRSZWN0ID0gdW5zY2FsZWRUYXJnZXRSZWN0OworfQorCitib29sIFZpZXdHZXN0dXJlQ29u
dHJvbGxlcjo6aGFuZGxlU2Nyb2xsV2hlZWxFdmVudChOU0V2ZW50ICpldmVudCkKK3sKKyAgICBp
ZiAobV9hY3RpdmVHZXN0dXJlVHlwZSAhPSBWaWV3R2VzdHVyZVR5cGU6Ok5vbmUpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKworICAgIGlmIChldmVudC5waGFzZSAhPSBOU0V2ZW50UGhhc2VCZWdh
bikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKGZhYnMoZXZlbnQuc2Nyb2xsaW5n
RGVsdGFYKSA8IGZhYnMoZXZlbnQuc2Nyb2xsaW5nRGVsdGFZKSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgYm9vbCB3aWxsU3dpcGVMZWZ0ID0gZXZlbnQuc2Nyb2xsaW5nRGVsdGFYID4g
MCAmJiBtX3dlYlBhZ2VQcm94eS5pc1Bpbm5lZFRvTGVmdFNpZGUoKSAmJiBtX3dlYlBhZ2VQcm94
eS5iYWNrRm9yd2FyZExpc3QoKS5iYWNrSXRlbSgpOworICAgIGJvb2wgd2lsbFN3aXBlUmlnaHQg
PSBldmVudC5zY3JvbGxpbmdEZWx0YVggPCAwICYmIG1fd2ViUGFnZVByb3h5LmlzUGlubmVkVG9S
aWdodFNpZGUoKSAmJiBtX3dlYlBhZ2VQcm94eS5iYWNrRm9yd2FyZExpc3QoKS5mb3J3YXJkSXRl
bSgpOworICAgIGlmICghd2lsbFN3aXBlTGVmdCAmJiAhd2lsbFN3aXBlUmlnaHQpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKworICAgIGlmICghZXZlbnQuaGFzUHJlY2lzZVNjcm9sbGluZ0RlbHRh
cykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKCFbTlNFdmVudCBpc1N3aXBlVHJh
Y2tpbmdGcm9tU2Nyb2xsRXZlbnRzRW5hYmxlZF0pCisgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgIFZpZXdTbmFwc2hvdFN0b3JlOjpzaGFyZWQoKS50YWtlU25hcHNob3QobV93ZWJQYWdlUHJv
eHkpOworCisgICAgQ0dGbG9hdCBtYXhQcm9ncmVzcyA9IHdpbGxTd2lwZUxlZnQgPyAxIDogMDsK
KyAgICBDR0Zsb2F0IG1pblByb2dyZXNzID0gd2lsbFN3aXBlUmlnaHQgPyAtMSA6IDA7CisgICAg
UmVmUHRyPFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0+IHRhcmdldEl0ZW0gPSB3aWxsU3dpcGVMZWZ0
ID8gbV93ZWJQYWdlUHJveHkuYmFja0ZvcndhcmRMaXN0KCkuYmFja0l0ZW0oKSA6IG1fd2ViUGFn
ZVByb3h5LmJhY2tGb3J3YXJkTGlzdCgpLmZvcndhcmRJdGVtKCk7CisgICAgX19ibG9jayBib29s
IHN3aXBlQ2FuY2VsbGVkID0gZmFsc2U7CisKKyAgICBbZXZlbnQgdHJhY2tTd2lwZUV2ZW50V2l0
aE9wdGlvbnM6MCBkYW1wZW5BbW91bnRUaHJlc2hvbGRNaW46bWluUHJvZ3Jlc3MgbWF4Om1heFBy
b2dyZXNzIHVzaW5nSGFuZGxlcjpeKENHRmxvYXQgcHJvZ3Jlc3MsIE5TRXZlbnRQaGFzZSBwaGFz
ZSwgQk9PTCBpc0NvbXBsZXRlLCBCT09MICpzdG9wKSB7CisgICAgICAgIGlmIChwaGFzZSA9PSBO
U0V2ZW50UGhhc2VCZWdhbikKKyAgICAgICAgICAgIHRoaXMtPmJlZ2luU3dpcGVHZXN0dXJlKHRh
cmdldEl0ZW0uZ2V0KCksIHdpbGxTd2lwZUxlZnQpOworICAgICAgICB0aGlzLT5oYW5kbGVTd2lw
ZUdlc3R1cmUodGFyZ2V0SXRlbS5nZXQoKSwgcHJvZ3Jlc3MsIHdpbGxTd2lwZUxlZnQpOworICAg
ICAgICBpZiAocGhhc2UgPT0gTlNFdmVudFBoYXNlQ2FuY2VsbGVkKQorICAgICAgICAgICAgc3dp
cGVDYW5jZWxsZWQgPSB0cnVlOworICAgICAgICBpZiAoaXNDb21wbGV0ZSkKKyAgICAgICAgICAg
IHRoaXMtPmVuZFN3aXBlR2VzdHVyZSh0YXJnZXRJdGVtLmdldCgpLCBzd2lwZUNhbmNlbGxlZCk7
CisgICAgfV07CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBWaWV3R2VzdHVyZUNvbnRy
b2xsZXI6OmJlZ2luU3dpcGVHZXN0dXJlKFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0qIHRhcmdldEl0
ZW0sIGJvb2wgc3dpcGluZ0xlZnQpCit7CisgICAgbV9hY3RpdmVHZXN0dXJlVHlwZSA9IFZpZXdH
ZXN0dXJlVHlwZTo6U3dpcGU7CisKKyAgICBDQUxheWVyICpyb290TGF5ZXIgPSBbbV93ZWJQYWdl
UHJveHkud2tWaWV3KCkgX3Jvb3RMYXllcl07CisKKyAgICBtX3N3aXBlU25hcHNob3RMYXllciA9
IGFkb3B0TlMoW1tDQUxheWVyIGFsbG9jXSBpbml0XSk7CisgICAgW21fc3dpcGVTbmFwc2hvdExh
eWVyIHNldEJhY2tncm91bmRDb2xvcjpDR0NvbG9yR2V0Q29uc3RhbnRDb2xvcihrQ0dDb2xvcldo
aXRlKV07CisKKyAgICB1aW50NjRfdCByZW5kZXJUcmVlU2l6ZTsKKyAgICBbbV9zd2lwZVNuYXBz
aG90TGF5ZXIgc2V0Q29udGVudHM6KGlkKVZpZXdTbmFwc2hvdFN0b3JlOjpzaGFyZWQoKS5nZXRT
bmFwc2hvdEFuZFJlbmRlclRyZWVTaXplKHRhcmdldEl0ZW0sIHJlbmRlclRyZWVTaXplKV07Cisg
ICAgW21fc3dpcGVTbmFwc2hvdExheWVyIHNldENvbnRlbnRzR3Jhdml0eTprQ0FHcmF2aXR5VG9w
TGVmdF07CisgICAgW21fc3dpcGVTbmFwc2hvdExheWVyIHNldENvbnRlbnRzU2NhbGU6bV93ZWJQ
YWdlUHJveHkuZGV2aWNlU2NhbGVGYWN0b3IoKV07CisgICAgW21fc3dpcGVTbmFwc2hvdExheWVy
IHNldEZyYW1lOnJvb3RMYXllci5mcmFtZV07CisgICAgW21fc3dpcGVTbmFwc2hvdExheWVyIHNl
dEFuY2hvclBvaW50OkNHUG9pbnRaZXJvXTsKKyAgICBbbV9zd2lwZVNuYXBzaG90TGF5ZXIgc2V0
UG9zaXRpb246Q0dQb2ludFplcm9dOworICAgIFttX3N3aXBlU25hcHNob3RMYXllciBzZXROYW1l
OkAiR2VzdHVyZSBTd2lwZSBTbmFwc2hvdCBMYXllciJdOworICAgIFttX3N3aXBlU25hcHNob3RM
YXllciB3ZWJfZGlzYWJsZUFsbEFjdGlvbnNdOworCisgICAgaWYgKG1fd2ViUGFnZVByb3h5LnBh
Z2VHcm91cCgpLnByZWZlcmVuY2VzKCktPnZpZXdHZXN0dXJlRGVidWdnaW5nRW5hYmxlZCgpKSB7
CisgICAgICAgIENBRmlsdGVyKiBmaWx0ZXIgPSBbQ0FGaWx0ZXIgZmlsdGVyV2l0aE5hbWU6QCJn
YXVzc2lhbkJsdXIiXTsKKyAgICAgICAgW2ZpbHRlciBzZXRWYWx1ZTpbTlNOdW1iZXIgbnVtYmVy
V2l0aEZsb2F0OjNdIGZvcktleTpAImlucHV0UmFkaXVzIl07CisgICAgICAgIFttX3N3aXBlU25h
cHNob3RMYXllciBzZXRGaWx0ZXJzOkBbZmlsdGVyXV07CisgICAgfQorCisgICAgaWYgKG1fc3dp
cGVUcmFuc2l0aW9uU3R5bGUgPT0gU3dpcGVUcmFuc2l0aW9uU3R5bGU6Ok92ZXJsYXApIHsKKyAg
ICAgICAgUmV0YWluUHRyPENHUGF0aFJlZj4gc2hhZG93UGF0aCA9IGFkb3B0Q0YoQ0dQYXRoQ3Jl
YXRlV2l0aFJlY3QoW3Jvb3RMYXllciBib3VuZHNdLCAwKSk7CisKKyAgICAgICAgW21fc3dpcGVT
bmFwc2hvdExheWVyIHNldFNoYWRvd0NvbG9yOkNHQ29sb3JHZXRDb25zdGFudENvbG9yKGtDR0Nv
bG9yQmxhY2spXTsKKyAgICAgICAgW21fc3dpcGVTbmFwc2hvdExheWVyIHNldFNoYWRvd09wYWNp
dHk6c3dpcGVPdmVybGF5U2hhZG93T3BhY2l0eV07CisgICAgICAgIFttX3N3aXBlU25hcHNob3RM
YXllciBzZXRTaGFkb3dSYWRpdXM6c3dpcGVPdmVybGF5U2hhZG93UmFkaXVzXTsKKyAgICAgICAg
W21fc3dpcGVTbmFwc2hvdExheWVyIHNldFNoYWRvd1BhdGg6c2hhZG93UGF0aC5nZXQoKV07CisK
KyAgICAgICAgW3Jvb3RMYXllciBzZXRTaGFkb3dDb2xvcjpDR0NvbG9yR2V0Q29uc3RhbnRDb2xv
cihrQ0dDb2xvckJsYWNrKV07CisgICAgICAgIFtyb290TGF5ZXIgc2V0U2hhZG93T3BhY2l0eTpz
d2lwZU92ZXJsYXlTaGFkb3dPcGFjaXR5XTsKKyAgICAgICAgW3Jvb3RMYXllciBzZXRTaGFkb3dS
YWRpdXM6c3dpcGVPdmVybGF5U2hhZG93UmFkaXVzXTsKKyAgICAgICAgW3Jvb3RMYXllciBzZXRT
aGFkb3dQYXRoOnNoYWRvd1BhdGguZ2V0KCldOworICAgIH0KKworICAgIGlmIChzd2lwaW5nTGVm
dCkKKyAgICAgICAgW3Jvb3RMYXllci5zdXBlcmxheWVyIGluc2VydFN1YmxheWVyOm1fc3dpcGVT
bmFwc2hvdExheWVyLmdldCgpIGJlbG93OnJvb3RMYXllcl07CisgICAgZWxzZQorICAgICAgICBb
cm9vdExheWVyLnN1cGVybGF5ZXIgaW5zZXJ0U3VibGF5ZXI6bV9zd2lwZVNuYXBzaG90TGF5ZXIu
Z2V0KCkgYWJvdmU6cm9vdExheWVyXTsKK30KKwordm9pZCBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6
OmhhbmRsZVN3aXBlR2VzdHVyZShXZWJCYWNrRm9yd2FyZExpc3RJdGVtKiB0YXJnZXRJdGVtLCBk
b3VibGUgcHJvZ3Jlc3MsIGJvb2wgc3dpcGluZ0xlZnQpCit7CisgICAgQVNTRVJUKG1fYWN0aXZl
R2VzdHVyZVR5cGUgPT0gVmlld0dlc3R1cmVUeXBlOjpTd2lwZSk7CisKKyAgICBDQUxheWVyICpy
b290TGF5ZXIgPSBbbV93ZWJQYWdlUHJveHkud2tWaWV3KCkgX3Jvb3RMYXllcl07CisgICAgZG91
YmxlIHdpZHRoID0gcm9vdExheWVyLmJvdW5kcy5zaXplLndpZHRoOworICAgIGRvdWJsZSBzd2lw
aW5nTGF5ZXJPZmZzZXQgPSBmbG9vcih3aWR0aCAqIHByb2dyZXNzKTsKKworICAgIGlmIChtX3N3
aXBlVHJhbnNpdGlvblN0eWxlID09IFN3aXBlVHJhbnNpdGlvblN0eWxlOjpPdmVybGFwKSB7Cisg
ICAgICAgIGlmIChzd2lwaW5nTGVmdCkKKyAgICAgICAgICAgIFtyb290TGF5ZXIgc2V0UG9zaXRp
b246Q0dQb2ludE1ha2Uoc3dpcGluZ0xheWVyT2Zmc2V0LCAwKV07CisgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgIFttX3N3aXBlU25hcHNob3RMYXllciBzZXRQb3NpdGlvbjpDR1BvaW50TWFrZSh3
aWR0aCArIHN3aXBpbmdMYXllck9mZnNldCwgMCldOworICAgIH0gZWxzZSBpZiAobV9zd2lwZVRy
YW5zaXRpb25TdHlsZSA9PSBTd2lwZVRyYW5zaXRpb25TdHlsZTo6UHVzaCkgeworICAgICAgICBb
cm9vdExheWVyIHNldFBvc2l0aW9uOkNHUG9pbnRNYWtlKHN3aXBpbmdMYXllck9mZnNldCwgMCld
OworICAgICAgICBbbV9zd2lwZVNuYXBzaG90TGF5ZXIgc2V0UG9zaXRpb246Q0dQb2ludE1ha2Uo
KHN3aXBpbmdMZWZ0ID8gLXdpZHRoIDogd2lkdGgpICsgc3dpcGluZ0xheWVyT2Zmc2V0LCAwKV07
CisgICAgfQorfQorCit2b2lkIFZpZXdHZXN0dXJlQ29udHJvbGxlcjo6ZW5kU3dpcGVHZXN0dXJl
KFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0qIHRhcmdldEl0ZW0sIGJvb2wgY2FuY2VsbGVkKQorewor
ICAgIEFTU0VSVChtX2FjdGl2ZUdlc3R1cmVUeXBlID09IFZpZXdHZXN0dXJlVHlwZTo6U3dpcGUp
OworCisgICAgQ0FMYXllciAqcm9vdExheWVyID0gW21fd2ViUGFnZVByb3h5LndrVmlldygpIF9y
b290TGF5ZXJdOworCisgICAgW3Jvb3RMYXllciBzZXRTaGFkb3dPcGFjaXR5OjBdOworICAgIFty
b290TGF5ZXIgc2V0U2hhZG93UmFkaXVzOjBdOworCisgICAgaWYgKGNhbmNlbGxlZCkgeworICAg
ICAgICByZW1vdmVTd2lwZVNuYXBzaG90KCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAg
ICB1aW50NjRfdCByZW5kZXJUcmVlU2l6ZTsKKyAgICBWaWV3U25hcHNob3RTdG9yZTo6c2hhcmVk
KCkuZ2V0U25hcHNob3RBbmRSZW5kZXJUcmVlU2l6ZSh0YXJnZXRJdGVtLCByZW5kZXJUcmVlU2l6
ZSk7CisgICAgbV93ZWJQYWdlUHJveHkucHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OlZpZXdHZXN0
dXJlR2VvbWV0cnlDb2xsZWN0b3I6OlNldFJlbmRlclRyZWVTaXplTm90aWZpY2F0aW9uVGhyZXNo
b2xkKHJlbmRlclRyZWVTaXplICogc3dpcGVTbmFwc2hvdFJlbW92YWxSZW5kZXJUcmVlU2l6ZVRh
cmdldEZyYWN0aW9uKSwgbV93ZWJQYWdlUHJveHkucGFnZUlEKCkpOworCisgICAgLy8gV2UgZG9u
J3Qgd2FudCB0byByZXBsYWNlIHRoZSBjdXJyZW50IGJhY2stZm9yd2FyZCBpdGVtJ3Mgc25hcHNo
b3QKKyAgICAvLyBsaWtlIHdlIG5vcm1hbGx5IHdvdWxkIHdoZW4gZ29pbmcgYmFjayBvciBmb3J3
YXJkLCBiZWNhdXNlIHdlIGFyZQorICAgIC8vIGRpc3BsYXlpbmcgdGhlIGRlc3RpbmF0aW9uIGl0
ZW0ncyBzbmFwc2hvdC4KKyAgICBWaWV3U25hcHNob3RTdG9yZTo6c2hhcmVkKCkuZGlzYWJsZVNu
YXBzaG90dGluZygpOworICAgIG1fd2ViUGFnZVByb3h5LmdvVG9CYWNrRm9yd2FyZEl0ZW0odGFy
Z2V0SXRlbSk7CisgICAgVmlld1NuYXBzaG90U3RvcmU6OnNoYXJlZCgpLmVuYWJsZVNuYXBzaG90
dGluZygpOworCisgICAgaWYgKCFyZW5kZXJUcmVlU2l6ZSkgeworICAgICAgICByZW1vdmVTd2lw
ZVNuYXBzaG90KCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtX3N3aXBlV2F0Y2hk
b2dUaW1lci5zdGFydE9uZVNob3Qoc3dpcGVTbmFwc2hvdFJlbW92YWxXYXRjaGRvZ0R1cmF0aW9u
LmNvdW50KCkpOworfQorCit2b2lkIFZpZXdHZXN0dXJlQ29udHJvbGxlcjo6ZGlkSGl0UmVuZGVy
VHJlZVNpemVUaHJlc2hvbGQoKQoreworICAgIHJlbW92ZVN3aXBlU25hcHNob3QoKTsKK30KKwor
dm9pZCBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OnN3aXBlU25hcHNob3RXYXRjaGRvZ1RpbWVyRmly
ZWQoV2ViQ29yZTo6VGltZXI8Vmlld0dlc3R1cmVDb250cm9sbGVyPiopCit7CisgICAgcmVtb3Zl
U3dpcGVTbmFwc2hvdCgpOworfQorCit2b2lkIFZpZXdHZXN0dXJlQ29udHJvbGxlcjo6cmVtb3Zl
U3dpcGVTbmFwc2hvdCgpCit7CisgICAgbV9zd2lwZVdhdGNoZG9nVGltZXIuc3RvcCgpOworCisg
ICAgaWYgKG1fYWN0aXZlR2VzdHVyZVR5cGUgIT0gVmlld0dlc3R1cmVUeXBlOjpTd2lwZSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgW1ttX3dlYlBhZ2VQcm94eS53a1ZpZXcoKSBfcm9vdExheWVy
XSBzZXRQb3NpdGlvbjpDR1BvaW50WmVyb107CisgICAgW21fc3dpcGVTbmFwc2hvdExheWVyIHJl
bW92ZUZyb21TdXBlcmxheWVyXTsKKyAgICBtX3N3aXBlU25hcHNob3RMYXllciA9IG51bGxwdHI7
CisKKyAgICBtX2FjdGl2ZUdlc3R1cmVUeXBlID0gVmlld0dlc3R1cmVUeXBlOjpOb25lOworfQor
Cit2b2lkIFZpZXdHZXN0dXJlQ29udHJvbGxlcjo6ZW5kQWN0aXZlR2VzdHVyZSgpCit7CisgICAg
aWYgKG1fYWN0aXZlR2VzdHVyZVR5cGUgPT0gVmlld0dlc3R1cmVUeXBlOjpNYWduaWZpY2F0aW9u
KSB7CisgICAgICAgIGVuZE1hZ25pZmljYXRpb25HZXN0dXJlKCk7CisgICAgICAgIG1fdmlzaWJs
ZUNvbnRlbnRSZWN0SXNWYWxpZCA9IGZhbHNlOworICAgIH0KK30KKworZG91YmxlIFZpZXdHZXN0
dXJlQ29udHJvbGxlcjo6bWFnbmlmaWNhdGlvbigpIGNvbnN0Cit7CisgICAgaWYgKG1fYWN0aXZl
R2VzdHVyZVR5cGUgPT0gVmlld0dlc3R1cmVUeXBlOjpNYWduaWZpY2F0aW9uKQorICAgICAgICBy
ZXR1cm4gbV9tYWduaWZpY2F0aW9uOworCisgICAgcmV0dXJuIG1fd2ViUGFnZVByb3h5LnBhZ2VT
Y2FsZUZhY3RvcigpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvVmlld1NuYXBzaG90U3RvcmUuaCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9tYWMvVmlld1NuYXBzaG90U3RvcmUuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi5kN2U1OWZmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL21hYy9WaWV3U25hcHNob3RTdG9yZS5oCkBAIC0wLDAgKzEsNjEgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaWZuZGVmIFZpZXdTbmFwc2hvdFN0b3JlX2gKKyNkZWZpbmUgVmlld1Nu
YXBzaG90U3RvcmVfaAorCisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYv
Tm9uY29weWFibGUuaD4KKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisjaW5jbHVkZSA8d3Rm
L3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJCYWNr
Rm9yd2FyZExpc3RJdGVtOworY2xhc3MgV2ViUGFnZVByb3h5OworCitjbGFzcyBWaWV3U25hcHNo
b3RTdG9yZSB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoVmlld1NuYXBzaG90U3RvcmUpOwor
cHVibGljOgorICAgIFZpZXdTbmFwc2hvdFN0b3JlKCk7CisgICAgflZpZXdTbmFwc2hvdFN0b3Jl
KCk7CisKKyAgICBzdGF0aWMgVmlld1NuYXBzaG90U3RvcmUmIHNoYXJlZCgpOworCisgICAgdm9p
ZCB0YWtlU25hcHNob3QoV2ViUGFnZVByb3h5JiB3ZWJQYWdlUHJveHkpOworICAgIENHSW1hZ2VS
ZWYgZ2V0U25hcHNob3RBbmRSZW5kZXJUcmVlU2l6ZShXZWJCYWNrRm9yd2FyZExpc3RJdGVtKiwg
dWludDY0X3QmIHJlbmRlclRyZWVTaXplKTsKKworICAgIHZvaWQgZGlzYWJsZVNuYXBzaG90dGlu
ZygpIHsgbV9lbmFibGVkID0gZmFsc2U7IH0KKyAgICB2b2lkIGVuYWJsZVNuYXBzaG90dGluZygp
IHsgbV9lbmFibGVkID0gdHJ1ZTsgfQorCitwcml2YXRlOgorICAgIEhhc2hNYXA8U3RyaW5nLCBz
dGQ6OnBhaXI8UmV0YWluUHRyPENHSW1hZ2VSZWY+LCB1aW50NjRfdD4+IG1fc25hcHNob3RNYXA7
CisKKyAgICBib29sIG1fZW5hYmxlZDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisj
ZW5kaWYgLy8gVmlld1NuYXBzaG90U3RvcmVfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL21hYy9WaWV3U25hcHNob3RTdG9yZS5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9tYWMvVmlld1NuYXBzaG90U3RvcmUubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uNGFlMzg3ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9tYWMvVmlld1NuYXBzaG90U3RvcmUubW0KQEAgLTAsMCArMSwxMTEgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIlZpZXdTbmFwc2hvdFN0b3JlLmgiCisK
KyNpbXBvcnQgIldlYkJhY2tGb3J3YXJkTGlzdC5oIgorI2ltcG9ydCAiV2ViUGFnZVByb3h5Lmgi
CisjaW1wb3J0ICJXS1ZpZXcuaCIKKyNpbXBvcnQgPENvcmVHcmFwaGljcy9Db3JlR3JhcGhpY3Mu
aD4KKyNpbXBvcnQgPFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0Lmg+CisjaW1wb3J0IDxXZWJDb3Jl
L1VVSUQuaD4KKworI2lmIGRlZmluZWQoX19oYXNfaW5jbHVkZSkgJiYgX19oYXNfaW5jbHVkZSg8
Q29yZUdyYXBoaWNzL0NvcmVHcmFwaGljc1ByaXZhdGUuaD4pCisjaW1wb3J0IDxDb3JlR3JhcGhp
Y3MvQ29yZUdyYXBoaWNzUHJpdmF0ZS5oPgorI2VuZGlmCisKK2V4dGVybiAiQyIgewordHlwZWRl
ZiB1aW50MzJfdCBDR1NDb25uZWN0aW9uSUQ7Cit0eXBlZGVmIHVpbnQzMl90IENHU1dpbmRvd0lE
OworQ0dTQ29ubmVjdGlvbklEIENHU01haW5Db25uZWN0aW9uSUQodm9pZCk7CitDR0Vycm9yIENH
U0dldFNjcmVlblJlY3RGb3JXaW5kb3coQ0dTQ29ubmVjdGlvbklEIGNpZCwgQ0dTV2luZG93SUQg
d2lkLCBDR1JlY3QgKnJlY3QpOworfTsKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25h
bWVzcGFjZSBXZWJLaXQgeworCitWaWV3U25hcHNob3RTdG9yZTo6Vmlld1NuYXBzaG90U3RvcmUo
KQorICAgIDogbV9lbmFibGVkKHRydWUpCit7Cit9CisKK1ZpZXdTbmFwc2hvdFN0b3JlOjp+Vmll
d1NuYXBzaG90U3RvcmUoKQoreworfQorCitWaWV3U25hcHNob3RTdG9yZSYgVmlld1NuYXBzaG90
U3RvcmU6OnNoYXJlZCgpCit7CisgICAgc3RhdGljIFZpZXdTbmFwc2hvdFN0b3JlJiBzdG9yZSA9
ICpuZXcgVmlld1NuYXBzaG90U3RvcmU7CisgICAgcmV0dXJuIHN0b3JlOworfQorCit2b2lkIFZp
ZXdTbmFwc2hvdFN0b3JlOjp0YWtlU25hcHNob3QoV2ViUGFnZVByb3h5JiB3ZWJQYWdlUHJveHkp
Cit7CisgICAgUmVmUHRyPFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0+IGl0ZW0gPSB3ZWJQYWdlUHJv
eHkuYmFja0ZvcndhcmRMaXN0KCkuY3VycmVudEl0ZW0oKTsKKworICAgIGlmICghbV9lbmFibGVk
KQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoIWl0ZW0pCisgICAgICAgIHJldHVybjsKKwor
ICAgIFdLVmlldyAqd2tWaWV3ID0gd2ViUGFnZVByb3h5LndrVmlldygpOworICAgIE5TV2luZG93
ICp3aW5kb3cgPSB3a1ZpZXcud2luZG93OworCisgICAgaWYgKCFbd2luZG93IHdpbmRvd051bWJl
cl0pCisgICAgICAgIHJldHVybjsKKworICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiB3aW5kb3dT
bmFwc2hvdEltYWdlID0gYWRvcHRDRihDR1dpbmRvd0xpc3RDcmVhdGVJbWFnZShDR1JlY3ROdWxs
LCBrQ0dXaW5kb3dMaXN0T3B0aW9uSW5jbHVkaW5nV2luZG93LCBbd2luZG93IHdpbmRvd051bWJl
cl0sIGtDR1dpbmRvd0ltYWdlQm91bmRzSWdub3JlRnJhbWluZyB8IGtDR1dpbmRvd0ltYWdlU2hv
dWxkQmVPcGFxdWUpKTsKKworICAgIE5TUmVjdCB3aW5kb3dDYXB0dXJlUmVjdCA9IFt3a1ZpZXcg
Y29udmVydFJlY3Q6W3drVmlldyBib3VuZHNdIHRvVmlldzpuaWxdOworICAgIE5TUmVjdCB3aW5k
b3dDYXB0dXJlU2NyZWVuUmVjdCA9IFt3aW5kb3cgY29udmVydFJlY3RUb1NjcmVlbjp3aW5kb3dD
YXB0dXJlUmVjdF07CisgICAgQ0dSZWN0IHdpbmRvd1NjcmVlblJlY3Q7CisgICAgQ0dTR2V0U2Ny
ZWVuUmVjdEZvcldpbmRvdyhDR1NNYWluQ29ubmVjdGlvbklEKCksIChDR1NXaW5kb3dJRClbd2lu
ZG93IHdpbmRvd051bWJlcl0sICZ3aW5kb3dTY3JlZW5SZWN0KTsKKworICAgIE5TUmVjdCBjcm9w
cGVkSW1hZ2VSZWN0ID0gd2luZG93Q2FwdHVyZVJlY3Q7CisgICAgY3JvcHBlZEltYWdlUmVjdC5v
cmlnaW4ueSA9IHdpbmRvd1NjcmVlblJlY3Quc2l6ZS5oZWlnaHQgLSB3aW5kb3dDYXB0dXJlU2Ny
ZWVuUmVjdC5zaXplLmhlaWdodCAtIE5TTWluWSh3aW5kb3dDYXB0dXJlUmVjdCk7CisKKyAgICBS
ZXRhaW5QdHI8Q0dJbWFnZVJlZj4gY3JvcHBlZEltYWdlID0gYWRvcHRDRihDR0ltYWdlQ3JlYXRl
V2l0aEltYWdlSW5SZWN0KHdpbmRvd1NuYXBzaG90SW1hZ2UuZ2V0KCksIE5TUmVjdFRvQ0dSZWN0
KFt3aW5kb3cgY29udmVydFJlY3RUb0JhY2tpbmc6Y3JvcHBlZEltYWdlUmVjdF0pKSk7CisKKyAg
ICBpdGVtLT5zZXRTbmFwc2hvdFVVSUQoY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygpKTsKKyAg
ICBtX3NuYXBzaG90TWFwLmFkZChpdGVtLT5zbmFwc2hvdFVVSUQoKSwgc3RkOjptYWtlX3BhaXIo
Y3JvcHBlZEltYWdlLCB3ZWJQYWdlUHJveHkucmVuZGVyVHJlZVNpemUoKSkpOworfQorCitDR0lt
YWdlUmVmIFZpZXdTbmFwc2hvdFN0b3JlOjpnZXRTbmFwc2hvdEFuZFJlbmRlclRyZWVTaXplKFdl
YkJhY2tGb3J3YXJkTGlzdEl0ZW0qIGl0ZW0sIHVpbnQ2NF90JiByZW5kZXJUcmVlU2l6ZSkKK3sK
KyAgICBjb25zdCBhdXRvJiBzbmFwc2hvdEFuZFJlbmRlclRyZWVTaXplID0gbV9zbmFwc2hvdE1h
cC5maW5kKGl0ZW0tPnNuYXBzaG90VVVJRCgpKTsKKworICAgIGlmIChzbmFwc2hvdEFuZFJlbmRl
clRyZWVTaXplID09IG1fc25hcHNob3RNYXAuZW5kKCkpIHsKKyAgICAgICAgcmVuZGVyVHJlZVNp
emUgPSAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKKyAgICByZW5kZXJUcmVl
U2l6ZSA9IHNuYXBzaG90QW5kUmVuZGVyVHJlZVNpemUtPnZhbHVlLnNlY29uZDsKKyAgICByZXR1
cm4gc25hcHNob3RBbmRSZW5kZXJUcmVlU2l6ZS0+dmFsdWUuZmlyc3QuZ2V0KCk7Cit9CisKK30g
Ly8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDk4N2QzZDYuLmI5N2I1NGQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTM4OSw5ICsz
ODksMTEgQEAKIAkJMjlENTVERjExNjFCRjlGMTAwMzFBMkUzIC8qIFdlYlBhZ2VHcm91cFByb3h5
TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDI5RDU1REVGMTYxQkY5RjEwMDMxQTJFMyAvKiBXZWJQYWdlR3JvdXBQcm94eU1l
c3NhZ2VSZWNlaXZlci5jcHAgKi87IH07CiAJCTI5RDU1REYyMTYxQkY5RjEwMDMxQTJFMyAvKiBX
ZWJQYWdlR3JvdXBQcm94eU1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAyOUQ1NURGMDE2MUJGOUYxMDAzMUEyRTMgLyogV2ViUGFnZUdyb3Vw
UHJveHlNZXNzYWdlcy5oICovOyB9OwogCQkyRDEyNUM1RTE4NTdFQTA1MDAzQkEzQ0IgLyogVmll
d0dlc3R1cmVDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAyRDEyNUM1QzE4NTdFQTA1MDAzQkEzQ0IgLyogVmlld0dlc3R1cmVDb250cm9s
bGVyLmggKi87IH07Ci0JCTJEMTI1QzVGMTg1N0VBMDUwMDNCQTNDQiAvKiBWaWV3R2VzdHVyZUNv
bnRyb2xsZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMkQxMjVDNUQxODU3RUEwNTAwM0JBM0NCIC8qIFZpZXdHZXN0dXJlQ29udHJvbGxlci5jcHAg
Ki87IH07CisJCTJEMTI1QzVGMTg1N0VBMDUwMDNCQTNDQiAvKiBWaWV3R2VzdHVyZUNvbnRyb2xs
ZXIubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRDEy
NUM1RDE4NTdFQTA1MDAzQkEzQ0IgLyogVmlld0dlc3R1cmVDb250cm9sbGVyLm1tICovOyB9Owog
CQkyRDFCNUQ1RDE4NTg2OUM4MDA2QzY1OTYgLyogVmlld0dlc3R1cmVDb250cm9sbGVyTWVzc2Fn
ZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDJEMUI1RDVCMTg1ODY5QzgwMDZDNjU5NiAvKiBWaWV3R2VzdHVyZUNvbnRyb2xsZXJNZXNz
YWdlUmVjZWl2ZXIuY3BwICovOyB9OwogCQkyRDFCNUQ1RTE4NTg2OUM4MDA2QzY1OTYgLyogVmll
d0dlc3R1cmVDb250cm9sbGVyTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDJEMUI1RDVDMTg1ODY5QzgwMDZDNjU5NiAvKiBWaWV3R2VzdHVy
ZUNvbnRyb2xsZXJNZXNzYWdlcy5oICovOyB9OworCQkyRDI1NjIxNTE4ODdBOTBDMDBDNjk2Mzkg
LyogVmlld1NuYXBzaG90U3RvcmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDJEMjU2MjEzMTg4N0E5MEMwMEM2OTYzOSAvKiBWaWV3U25hcHNob3RTdG9y
ZS5oICovOyB9OworCQkyRDI1NjIxNjE4ODdBOTBDMDBDNjk2MzkgLyogVmlld1NuYXBzaG90U3Rv
cmUubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRDI1
NjIxNDE4ODdBOTBDMDBDNjk2MzkgLyogVmlld1NuYXBzaG90U3RvcmUubW0gKi87IH07CiAJCTJE
MjhGM0U0MTg4NUNDQzEwMDRCOUVBRSAvKiBXZWJDaHJvbWVDbGllbnRJT1MubW0gaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRDI4RjNFMDE4ODVDQ0MxMDA0
QjlFQUUgLyogV2ViQ2hyb21lQ2xpZW50SU9TLm1tICovOyB9OwogCQkyRDI4RjNFNTE4ODVDQ0Mx
MDA0QjlFQUUgLyogV2ViRGF0YWJhc2VNYW5hZ2VySU9TLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkQyOEYzRTExODg1Q0NDMTAwNEI5RUFFIC8qIFdl
YkRhdGFiYXNlTWFuYWdlcklPUy5tbSAqLzsgfTsKIAkJMkQyOEYzRTYxODg1Q0NDMTAwNEI5RUFF
IC8qIFdlYkVkaXRvckNsaWVudElPUy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDJEMjhGM0UyMTg4NUNDQzEwMDRCOUVBRSAvKiBXZWJFZGl0b3JDbGll
bnRJT1MubW0gKi87IH07CkBAIC0yMDI3LDEwICsyMDI5LDEyIEBACiAJCTI5RDU1REVGMTYxQkY5
RjEwMDMxQTJFMyAvKiBXZWJQYWdlR3JvdXBQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJQYWdlR3JvdXBQcm94eU1lc3NhZ2VS
ZWNlaXZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTI5RDU1REYwMTYxQkY5
RjEwMDMxQTJFMyAvKiBXZWJQYWdlR3JvdXBQcm94eU1lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlBhZ2VHcm91cFByb3h5TWVzc2FnZXMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkQxMjVDNUMxODU3RUEwNTAwM0JBM0NCIC8qIFZpZXdHZXN0
dXJlQ29udHJvbGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBWaWV3R2Vz
dHVyZUNvbnRyb2xsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMkQxMjVDNUQx
ODU3RUEwNTAwM0JBM0NCIC8qIFZpZXdHZXN0dXJlQ29udHJvbGxlci5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBWaWV3R2VzdHVyZUNvbnRyb2xsZXIuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyRDEyNUM1RDE4NTdFQTA1MDAzQkEzQ0IgLyogVmll
d0dlc3R1cmVDb250cm9sbGVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBw
YXRoID0gVmlld0dlc3R1cmVDb250cm9sbGVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkyRDFCNUQ1QTE4NTg2NTk5MDA2QzY1OTYgLyogVmlld0dlc3R1cmVDb250cm9sbGVyLm1l
c3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dDsgcGF0aCA9IFZpZXdHZXN0dXJlQ29udHJvbGxlci5tZXNzYWdlcy5pbjsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkQxQjVENUIxODU4NjlDODAwNkM2NTk2IC8qIFZpZXdH
ZXN0dXJlQ29udHJvbGxlck1lc3NhZ2VSZWNlaXZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBWaWV3R2VzdHVyZUNvbnRyb2xsZXJNZXNzYWdlUmVjZWl2ZXIuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyRDFCNUQ1QzE4NTg2OUM4MDA2QzY1OTYg
LyogVmlld0dlc3R1cmVDb250cm9sbGVyTWVzc2FnZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gVmlld0dlc3R1cmVDb250cm9sbGVyTWVzc2FnZXMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJMkQyNTYyMTMxODg3QTkwQzAwQzY5NjM5IC8qIFZpZXdTbmFwc2hv
dFN0b3JlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFZpZXdTbmFwc2hvdFN0
b3JlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTJEMjU2MjE0MTg4N0E5MEMwMEM2
OTYzOSAvKiBWaWV3U25hcHNob3RTdG9yZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgcGF0aCA9IFZpZXdTbmFwc2hvdFN0b3JlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkyRDI4RjNFMDE4ODVDQ0MxMDA0QjlFQUUgLyogV2ViQ2hyb21lQ2xpZW50SU9TLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gV2ViQ2hyb21lQ2xpZW50
SU9TLm1tOyBwYXRoID0gaW9zL1dlYkNocm9tZUNsaWVudElPUy5tbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMkQyOEYzRTExODg1Q0NDMTAwNEI5RUFFIC8qIFdlYkRhdGFiYXNlTWFu
YWdlcklPUy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFdlYkRh
dGFiYXNlTWFuYWdlcklPUy5tbTsgcGF0aCA9IGlvcy9XZWJEYXRhYmFzZU1hbmFnZXJJT1MubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJEMjhGM0UyMTg4NUNDQzEwMDRCOUVBRSAv
KiBXZWJFZGl0b3JDbGllbnRJT1MubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7
IG5hbWUgPSBXZWJFZGl0b3JDbGllbnRJT1MubW07IHBhdGggPSBpb3MvV2ViRWRpdG9yQ2xpZW50
SU9TLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNTY1MSw4ICs1NjU1LDEwIEBA
CiAJCQkJMUFGMDVEODUxNDY4ODM0ODAwOEIxRTgxIC8qIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdp
bmdBcmVhUHJveHkuaCAqLywKIAkJCQkxQUYwNUQ4NDE0Njg4MzQ4MDA4QjFFODEgLyogVGlsZWRD
b3JlQW5pbWF0aW9uRHJhd2luZ0FyZWFQcm94eS5tbSAqLywKIAkJCQkyRDEyNUM1QzE4NTdFQTA1
MDAzQkEzQ0IgLyogVmlld0dlc3R1cmVDb250cm9sbGVyLmggKi8sCi0JCQkJMkQxMjVDNUQxODU3
RUEwNTAwM0JBM0NCIC8qIFZpZXdHZXN0dXJlQ29udHJvbGxlci5jcHAgKi8sCisJCQkJMkQxMjVD
NUQxODU3RUEwNTAwM0JBM0NCIC8qIFZpZXdHZXN0dXJlQ29udHJvbGxlci5tbSAqLywKIAkJCQky
RDFCNUQ1QTE4NTg2NTk5MDA2QzY1OTYgLyogVmlld0dlc3R1cmVDb250cm9sbGVyLm1lc3NhZ2Vz
LmluICovLAorCQkJCTJEMjU2MjEzMTg4N0E5MEMwMEM2OTYzOSAvKiBWaWV3U25hcHNob3RTdG9y
ZS5oICovLAorCQkJCTJEMjU2MjE0MTg4N0E5MEMwMEM2OTYzOSAvKiBWaWV3U25hcHNob3RTdG9y
ZS5tbSAqLywKIAkJCQk3MjhFODZFRjE3OTUxODhDMDA4Nzg3OUUgLyogV2ViQ29sb3JQaWNrZXJN
YWMuaCAqLywKIAkJCQk3MjhFODZGMDE3OTUxODhDMDA4Nzg3OUUgLyogV2ViQ29sb3JQaWNrZXJN
YWMubW0gKi8sCiAJCQkJMUExQzY0ODYxMUY0MTVCNzAwNTUzQzE5IC8qIFdlYkNvbnRleHRNYWMu
bW0gKi8sCkBAIC02MzM2LDYgKzYzNDIsNyBAQAogCQkJCTJEQTk0NDkxMTg4NEUzQjUwMEVEODZE
QiAvKiBXS0ludGVyYWN0aW9uVmlldy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzMwOTM0NDgxMzE1
QjkyMjAwOTdBN0JDIC8qIFdlYkNvb2tpZU1hbmFnZXJNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMzMwOTM0NTYxMzE1Qjk3NTAwOTdBN0JDIC8qIFdlYkNvb2tpZU1hbmFnZXJQcm94eS5o
IGluIEhlYWRlcnMgKi8sCisJCQkJMkQyNTYyMTUxODg3QTkwQzAwQzY5NjM5IC8qIFZpZXdTbmFw
c2hvdFN0b3JlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTVFNzcyQzE4NDAwOEI5MDAwNzIwM0Yg
LyogRGF0YWJhc2VQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkzM0FBMTA2NzEzMUYwNjAwMDBENEE1NzUgLyogV2ViQ29va2llTWFuYWdlclByb3h5Q2xpZW50
LmggaW4gSGVhZGVycyAqLywKIAkJCQkzMzA5MzQ0QTEzMTVCOTIyMDA5N0E3QkMgLyogV2ViQ29v
a2llTWFuYWdlclByb3h5TWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLApAQCAtNzQ4OSw2ICs3NDk2
LDcgQEAKIAkJCQlCQzY0Njk2RjExREJFNjAzMDA2NDU1QjAgLyogQVBJQXJyYXkuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJQkNCQ0IwQ0QxMjE1RTMzQTAwREU1OUNBIC8qIEltbXV0YWJsZURpY3Rp
b25hcnkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkMyMDRFRTIxMUM4M0U5ODAwOEYzMzc1IC8q
IEluamVjdGVkQnVuZGxlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTJEMjU2MjE2MTg4N0E5MEMw
MEM2OTYzOSAvKiBWaWV3U25hcHNob3RTdG9yZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTM3QzRD
MDkzMTgxNEIzQUYwMDM2ODhCOSAvKiBXS05TQXJyYXkubW0gaW4gU291cmNlcyAqLywKIAkJCQk5
MzVFRUJBMTEyNzc2MUNDMDAzMzIyQjggLyogSW5qZWN0ZWRCdW5kbGVCYWNrRm9yd2FyZExpc3Qu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTM1RUVCQTMxMjc3NjFEMzAwMzMyMkI4IC8qIEluamVj
dGVkQnVuZGxlQmFja0ZvcndhcmRMaXN0SXRlbS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTc3MTUs
NyArNzcyMyw3IEBACiAJCQkJQkNEMzY3NUMxNDhDMjZDMDAwNDQ3RTg3IC8qIFdlYkNvbm5lY3Rp
b25Ub1VJUHJvY2Vzcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzRBNjJBNzE0NzQ0RUM3MDA2
QzY4MUEgLyogV2ViQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlCQzgyODM2NTE2QjM1NEY2MDBBMjc4RkUgLyogV2ViQ29udGVudFByb2Nlc3NNYWluLm1tIGlu
IFNvdXJjZXMgKi8sCi0JCQkJMkQxMjVDNUYxODU3RUEwNTAwM0JBM0NCIC8qIFZpZXdHZXN0dXJl
Q29udHJvbGxlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkyRDEyNUM1RjE4NTdFQTA1MDAzQkEz
Q0IgLyogVmlld0dlc3R1cmVDb250cm9sbGVyLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQkM4Mjgz
OTkxNkI0OERDMDAwQTI3OEZFIC8qIFdlYkNvbnRlbnRTZXJ2aWNlRW50cnlQb2ludC5tbSBpbiBT
b3VyY2VzICovLAogCQkJCUJDQjlFMjQ0MTEyMERBQ0EwMEExMzdFMCAvKiBXZWJDb250ZXh0LmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTMxQTUwNUY5MTY4MDAyNTUwMEE5MzBFQiAvKiBXZWJDb250
ZXh0Q2xpZW50LmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50
LmNwcAppbmRleCA0OTdjYjVjLi42MTlhZGM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50LmNwcApAQCAtMTU1MSw3ICsxNTUxLDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6
ZGlkQ2hhbmdlU2Nyb2xsT2Zmc2V0KCkKICAgICBpZiAoIW1fZnJhbWUtPmNvcmVGcmFtZSgpLT52
aWV3KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIHdlYlBhZ2UtPmRpZENoYW5nZVNjcm9sbE9m
ZnNldEZvck1haW5GcmFtZSgpOworICAgIHdlYlBhZ2UtPnVwZGF0ZU1haW5GcmFtZVNjcm9sbE9m
ZnNldFBpbm5pbmcoKTsKIH0KIAogYm9vbCBXZWJGcmFtZUxvYWRlckNsaWVudDo6YWxsb3dTY3Jp
cHQoYm9vbCBlbmFibGVkUGVyU2V0dGluZ3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvci5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rv
ci5jcHAKaW5kZXggNDExOWE4Yy4uMmJiZjkyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3IuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9WaWV3R2VzdHVyZUdlb21ldHJ5Q29s
bGVjdG9yLmNwcApAQCAtNDIsNiArNDIsOCBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogVmlld0dl
c3R1cmVHZW9tZXRyeUNvbGxlY3Rvcjo6Vmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3RvcihXZWJQ
YWdlJiB3ZWJQYWdlKQogICAgIDogbV93ZWJQYWdlKHdlYlBhZ2UpCisgICAgLCBtX3JlbmRlclRy
ZWVTaXplTm90aWZpY2F0aW9uVGhyZXNob2xkKDApCisgICAgLCBtX3JlbmRlclRyZWVTaXplTm90
aWZpY2F0aW9uVGltZXIoUnVuTG9vcDo6bWFpbigpLCB0aGlzLCAmVmlld0dlc3R1cmVHZW9tZXRy
eUNvbGxlY3Rvcjo6cmVuZGVyVHJlZVNpemVOb3RpZmljYXRpb25UaW1lckZpcmVkKQogewogICAg
IFdlYlByb2Nlc3M6OnNoYXJlZCgpLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6Vmlld0dl
c3R1cmVHZW9tZXRyeUNvbGxlY3Rvcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3dlYlBhZ2Uu
cGFnZUlEKCksICp0aGlzKTsKIH0KQEAgLTc3LDQgKzc5LDE3IEBAIHZvaWQgVmlld0dlc3R1cmVH
ZW9tZXRyeUNvbGxlY3Rvcjo6Y29sbGVjdEdlb21ldHJ5Rm9yU21hcnRNYWduaWZpY2F0aW9uR2Vz
dHVyZShGCiAgICAgfQogfQogCit2b2lkIFZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3I6Om1h
aW5GcmFtZURpZExheW91dCgpCit7CisgICAgaWYgKG1fcmVuZGVyVHJlZVNpemVOb3RpZmljYXRp
b25UaHJlc2hvbGQgJiYgbV93ZWJQYWdlLnJlbmRlclRyZWVTaXplKCkgPj0gbV9yZW5kZXJUcmVl
U2l6ZU5vdGlmaWNhdGlvblRocmVzaG9sZCkgeworICAgICAgICBtX3JlbmRlclRyZWVTaXplTm90
aWZpY2F0aW9uVGltZXIuc3RhcnRPbmVTaG90KDApOworICAgICAgICBtX3JlbmRlclRyZWVTaXpl
Tm90aWZpY2F0aW9uVGhyZXNob2xkID0gMDsKKyAgICB9Cit9CisKK3ZvaWQgVmlld0dlc3R1cmVH
ZW9tZXRyeUNvbGxlY3Rvcjo6cmVuZGVyVHJlZVNpemVOb3RpZmljYXRpb25UaW1lckZpcmVkKCkK
K3sKKyAgICBtX3dlYlBhZ2Uuc2VuZChNZXNzYWdlczo6Vmlld0dlc3R1cmVDb250cm9sbGVyOjpE
aWRIaXRSZW5kZXJUcmVlU2l6ZVRocmVzaG9sZCgpKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvVmlld0dl
c3R1cmVHZW9tZXRyeUNvbGxlY3Rvci5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1ZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3IuaAppbmRleCAzMjA5NTdiLi44MmI5ZTc4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvVmlld0dlc3R1
cmVHZW9tZXRyeUNvbGxlY3Rvci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9WaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yLmgKQEAgLTI3LDYgKzI3LDcgQEAKICNk
ZWZpbmUgVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvcl9oCiAKICNpbmNsdWRlICJNZXNzYWdl
UmVjZWl2ZXIuaCIKKyNpbmNsdWRlIDxXVEYvUnVuTG9vcC5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiBjbGFzcyBGbG9hdFBvaW50OwpAQCAtNDEsNiArNDIsOCBAQCBwdWJsaWM6CiAgICAgVmll
d0dlc3R1cmVHZW9tZXRyeUNvbGxlY3RvcihXZWJQYWdlJik7CiAgICAgflZpZXdHZXN0dXJlR2Vv
bWV0cnlDb2xsZWN0b3IoKTsKIAorICAgIHZvaWQgbWFpbkZyYW1lRGlkTGF5b3V0KCk7CisKIHBy
aXZhdGU6CiAgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIuCiAgICAgdmlydHVhbCB2b2lkIGRp
ZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiosIElQQzo6TWVzc2FnZURlY29kZXImKSBv
dmVycmlkZTsKQEAgLTQ4LDggKzUxLDE0IEBAIHByaXZhdGU6CiAgICAgLy8gTWVzc2FnZSBoYW5k
bGVycy4KICAgICB2b2lkIGNvbGxlY3RHZW9tZXRyeUZvck1hZ25pZmljYXRpb25HZXN0dXJlKCk7
CiAgICAgdm9pZCBjb2xsZWN0R2VvbWV0cnlGb3JTbWFydE1hZ25pZmljYXRpb25HZXN0dXJlKFdl
YkNvcmU6OkZsb2F0UG9pbnQgb3JpZ2luKTsKKyAgICB2b2lkIHNldFJlbmRlclRyZWVTaXplTm90
aWZpY2F0aW9uVGhyZXNob2xkKHVpbnQ2NF90IHNpemUpIHsgbV9yZW5kZXJUcmVlU2l6ZU5vdGlm
aWNhdGlvblRocmVzaG9sZCA9IHNpemU7IH0KKworICAgIHZvaWQgcmVuZGVyVHJlZVNpemVOb3Rp
ZmljYXRpb25UaW1lckZpcmVkKCk7CiAKICAgICBXZWJQYWdlJiBtX3dlYlBhZ2U7CisKKyAgICB1
aW50NjRfdCBtX3JlbmRlclRyZWVTaXplTm90aWZpY2F0aW9uVGhyZXNob2xkOworICAgIFJ1bkxv
b3A6OlRpbWVyPFZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3I+IG1fcmVuZGVyVHJlZVNpemVO
b3RpZmljYXRpb25UaW1lcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdHZXN0dXJlR2VvbWV0cnlD
b2xsZWN0b3IubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
Vmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvci5tZXNzYWdlcy5pbgppbmRleCA2NWVhYTU4Li4z
OWIxOGJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvVmll
d0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvci5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvci5tZXNzYWdl
cy5pbgpAQCAtMjUsNCArMjUsNSBAQCBtZXNzYWdlcyAtPiBWaWV3R2VzdHVyZUdlb21ldHJ5Q29s
bGVjdG9yIHsKIENvbGxlY3RHZW9tZXRyeUZvck1hZ25pZmljYXRpb25HZXN0dXJlKCkKIENvbGxl
Y3RHZW9tZXRyeUZvclNtYXJ0TWFnbmlmaWNhdGlvbkdlc3R1cmUoV2ViQ29yZTo6RmxvYXRQb2lu
dCBvcmlnaW4pCiAKK1NldFJlbmRlclRyZWVTaXplTm90aWZpY2F0aW9uVGhyZXNob2xkKHVpbnQ2
NF90IHNpemUpCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5jcHAKaW5kZXggYjc1N2ExYi4uOTQwNmUzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtMjk2MSw3ICsyOTYxLDcgQEAgdm9pZCBXZWJQ
YWdlOjpjbGVhclNlbGVjdGlvbigpCiAgICAgbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1
c2VkT3JNYWluRnJhbWUoKS5zZWxlY3Rpb24oKS5jbGVhcigpOwogfQogCi12b2lkIFdlYlBhZ2U6
OmRpZENoYW5nZVNjcm9sbE9mZnNldEZvck1haW5GcmFtZSgpCit2b2lkIFdlYlBhZ2U6OnVwZGF0
ZU1haW5GcmFtZVNjcm9sbE9mZnNldFBpbm5pbmcoKQogewogICAgIEZyYW1lJiBmcmFtZSA9IG1f
cGFnZS0+bWFpbkZyYW1lKCk7CiAgICAgSW50UG9pbnQgc2Nyb2xsUG9zaXRpb24gPSBmcmFtZS52
aWV3KCktPnNjcm9sbFBvc2l0aW9uKCk7CkBAIC0zMDAyLDYgKzMwMDIsMTAgQEAgdm9pZCBXZWJQ
YWdlOjptYWluRnJhbWVEaWRMYXlvdXQoKQogICAgICAgICB9CiAgICAgfQogI2VuZGlmCisKKyNp
ZiBQTEFURk9STShNQUMpCisgICAgbV92aWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yLm1haW5G
cmFtZURpZExheW91dCgpOworI2VuZGlmCiB9CiAKIHZvaWQgV2ViUGFnZTo6YWRkUGx1Z2luVmll
dyhQbHVnaW5WaWV3KiBwbHVnaW5WaWV3KQpAQCAtMzkwNSw2ICszOTA5LDggQEAgdm9pZCBXZWJQ
YWdlOjpkaWRDb21taXRMb2FkKFdlYkZyYW1lKiBmcmFtZSkKICNlbmRpZgogCiAgICAgV2ViUHJv
Y2Vzczo6c2hhcmVkKCkudXBkYXRlQWN0aXZlUGFnZXMoKTsKKworICAgIHVwZGF0ZU1haW5GcmFt
ZVNjcm9sbE9mZnNldFBpbm5pbmcoKTsKIH0KIAogdm9pZCBXZWJQYWdlOjpkaWRGaW5pc2hMb2Fk
KFdlYkZyYW1lKiBmcmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5oCmluZGV4IDc1ZDQwZGUuLjg3NWI0OGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtNTgxLDcgKzU4MSw3IEBAIHB1YmxpYzoKICAgICB2
b2lkIHNldE1lZGlhVm9sdW1lKGZsb2F0KTsKICAgICB2b2lkIHNldE1heVN0YXJ0TWVkaWFXaGVu
SW5XaW5kb3coYm9vbCk7CiAKLSAgICB2b2lkIGRpZENoYW5nZVNjcm9sbE9mZnNldEZvck1haW5G
cmFtZSgpOworICAgIHZvaWQgdXBkYXRlTWFpbkZyYW1lU2Nyb2xsT2Zmc2V0UGlubmluZygpOwog
CiAgICAgdm9pZCBtYWluRnJhbWVEaWRMYXlvdXQoKTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>221814</attachid>
            <date>2014-01-21 17:32:43 -0800</date>
            <delta_ts>2014-01-21 18:05:17 -0800</delta_ts>
            <desc>take two</desc>
            <filename>swipe1.diff</filename>
            <type>text/plain</type>
            <size>55409</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCBiN2FlZWU1Li5iOGMwZjBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMTU1
IEBACiAyMDE0LTAxLTIxICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgog
CisgICAgICAgIFdlYktpdDIgVmlldyBHZXN0dXJlczogRmx1aWQgYmFjay1mb3J3YXJkIHN3aXBl
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjczNjMK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgc3Vw
cG9ydCBmb3IgYSAiYmFjay1mb3J3YXJkIHN3aXBlIiwgd2hpY2ggYWxsb3dzIGZsdWlkIHN3aXBp
bmcgYmV0d2VlbgorICAgICAgICBpdGVtcyBpbiB0aGUgYmFjay1mb3J3YXJkIGxpc3QuIEN1cnJl
bnRseSBkaXNhYmxlZCBieSBkZWZhdWx0LgorCisgICAgICAgICogU2hhcmVkL1dlYkJhY2tGb3J3
YXJkTGlzdEl0ZW0uaDoKKyAgICAgICAgKFdlYktpdDo6V2ViQmFja0ZvcndhcmRMaXN0SXRlbTo6
c2V0U25hcHNob3RVVUlEKToKKyAgICAgICAgKFdlYktpdDo6V2ViQmFja0ZvcndhcmRMaXN0SXRl
bTo6c25hcHNob3RVVUlEKToKKyAgICAgICAgKiBVSVByb2Nlc3MvY2YvV2ViQmFja0ZvcndhcmRM
aXN0Q0YuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJCYWNrRm9yd2FyZExpc3Q6OmNyZWF0ZUNG
RGljdGlvbmFyeVJlcHJlc2VudGF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6ZXh0cmFjdEJhY2tG
b3J3YXJkTGlzdEVudHJpZXNGcm9tQXJyYXkpOgorICAgICAgICBTdG9yZSBhbmQgc2VyaWFsaXpl
IGEgVVVJRCBhbG9uZyB3aXRoIGVhY2ggYmFjay1mb3J3YXJkIGxpc3QgaXRlbSB3aGljaAorICAg
ICAgICBpZGVudGlmaWVzIHRoYXQgaXRlbSdzIHZpZXcgc25hcHNob3QgaW4gdGhlIFZpZXdTbmFw
c2hvdFN0b3JlLgorCisgICAgICAgICogVUlQcm9jZXNzL2NmL1dlYlBhZ2VQcm94eUNGLmNwcDoK
KyAgICAgICAgQnVtcCB0aGUgc2Vzc2lvbiBzdGF0ZSBkYXRhIHZlcnNpb24sIGFzIHdlIGNoYW5n
ZWQgdGhlIFdlYkJhY2tGb3J3YXJkTGlzdCBmb3JtYXQuCisKKyAgICAgICAgKiBTaGFyZWQvV2Vi
UHJlZmVyZW5jZXNTdG9yZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVu
Y2VzLmNwcDoKKyAgICAgICAgKFdLUHJlZmVyZW5jZXNTZXRWaWV3R2VzdHVyZURlYnVnZ2luZ0Vu
YWJsZWQpOgorICAgICAgICAoV0tQcmVmZXJlbmNlc0dldFZpZXdHZXN0dXJlRGVidWdnaW5nRW5h
YmxlZCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXNQcml2YXRlLmg6
CisgICAgICAgIEFkZCBhIFZpZXdHZXN0dXJlRGVidWdnaW5nRW5hYmxlZCBwcmVmZXJlbmNlLCB3
aGljaCBjdXJyZW50bHkgY2F1c2VzIHNuYXBzaG90cyB0byBiZSBibHVycmVkLgorICAgICAgICBB
ZGRpdGlvbmFsIHZpZXcgZ2VzdHVyZSBkZWJ1Z2dpbmcgZmVhdHVyZXMgY291bGQgY29tZSBpbiB0
aGUgZnV0dXJlLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ZpZXdQcml2YXRl
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tOgorICAgICAgICAoLVtX
S1ZpZXcgX2Vuc3VyZUdlc3R1cmVDb250cm9sbGVyXSk6CisgICAgICAgICgtW1dLVmlldyBzY3Jv
bGxXaGVlbDpdKToKKyAgICAgICAgSWYgYmFjay1mb3J3YXJkIG5hdmlnYXRpb24gZ2VzdHVyZXMg
YXJlIGVuYWJsZWQsIGludGVyY2VwdCBzY3JvbGxXaGVlbCBldmVudHMKKyAgICAgICAgb24gdGhl
IFdLVmlldyBhbmQgbGV0IHRoZSBWaWV3R2VzdHVyZUNvbnRyb2xsZXIgdGFrZSB0aGUgZmlyc3Qg
Y3JhY2sgYXQgdGhlbS4KKworICAgICAgICAoLVtXS1ZpZXcgX3Jvb3RMYXllcl0pOgorICAgICAg
ICAoLVtXS1ZpZXcgc2F2ZUJhY2tGb3J3YXJkU25hcHNob3RGb3JDdXJyZW50SXRlbV0pOgorICAg
ICAgICAoLVtXS1ZpZXcgc2V0QWxsb3dzQmFja0ZvcndhcmROYXZpZ2F0aW9uR2VzdHVyZXM6XSk6
CisgICAgICAgICgtW1dLVmlldyBhbGxvd3NCYWNrRm9yd2FyZE5hdmlnYXRpb25HZXN0dXJlc10p
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvbWFjL1dLVmlld0ludGVybmFsLmg6CisgICAgICAg
IEFkZCBhbGxvd3NCYWNrRm9yd2FyZE5hdmlnYXRpb25HZXN0dXJlIHByb3BlcnR5LCB3aGljaCBl
bmFibGVzIHRoZSBnZXN0dXJlLgorICAgICAgICBBZGQgc2F2ZUJhY2tGb3J3YXJkU25hcHNob3RG
b3JDdXJyZW50SXRlbSBTUEksIHdoaWNoIGNsaWVudHMgY291bGQgcG90ZW50aWFsbHkKKyAgICAg
ICAgdXNlIHdoZW4gdGhleSBrbm93IHRoZXkncmUgYWJvdXQgdG8gbWFuaXB1bGF0ZSB0aGUgdmll
dyBoaWVyYXJjaHkgaW4gc3VjaCBhIHdheQorICAgICAgICB0aGF0IHRoZXkgd2FudCB0aGUgY3Vy
cmVudCBiYWNrLWZvcndhcmQgaXRlbSdzIHNuYXBzaG90IHRvIGJlIHVwIHRvIGRhdGUuCisKKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZVByb3h5Ojpnb0ZvcndhcmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6Omdv
QmFjayk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Z29Ub0JhY2tGb3J3YXJkSXRl
bSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkU3RhcnRQcm92aXNpb25hbExv
YWRGb3JGcmFtZSk6CisgICAgICAgIFVwZGF0ZSB0aGUgY3VycmVudCBiYWNrLWZvcndhcmQgaXRl
bSdzIHNuYXBzaG90IGltbWVkaWF0ZWx5IGJlZm9yZSBuYXZpZ2F0aW5nLgorCisgICAgICAgICog
VUlQcm9jZXNzL21hYy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIuaDoKKyAgICAgICAgQWRkIHN3aXBl
LXJlbGF0ZWQgbWV0aG9kcywgd2hpY2ggd2lsbCBiZSBkZXNjcmliZWQgYmVsb3cuCisKKyAgICAg
ICAgQWRkIGFuIGVudW0gZm9yIHRoZSBzd2lwZSB0cmFuc2l0aW9uIHN0eWxlLiBDdXJyZW50bHkg
b25seSBPdmVybGFwIGlzIGFjY2Vzc2libGUsCisgICAgICAgIGJ1dCBpbiB0aGUgZnV0dXJlIG9u
ZSBjb3VsZCBzZWUgaGF2aW5nIEFQSSB0byBjaG9vc2UgdGhlIHN0eWxlLgorICAgICAgICAnT3Zl
cmxhcCcgaGFzIHRoZSBvdXRnb2luZyBwYWdlIHN3aXBlIG91dCB0byB0aGUgcmlnaHQgKHdoZW4g
c3dpcGluZyByaWdodCkKKyAgICAgICAgb3IgdGhlIGluY29taW5nIHBhZ2Ugc3dpcGUgaW4gZnJv
bSB0aGUgcmlnaHQgKHdoZW4gc3dpcGluZyBsZWZ0KS4KKyAgICAgICAgJ1B1c2gnIGhhcyB0aGUg
cGFnZXMgcHVzaCBlYWNoIG90aGVyIGFsb25nIGluIHN5bmMsIGFzIGlmIGFsbCB0aGUgcGFnZXMg
aW4gdGhlCisgICAgICAgIGJhY2stZm9yd2FyZCBsaXN0IHdlcmUgb3JpZW50ZWQgZnJvbSBsZWZ0
IHRvIHJpZ2h0LgorCisgICAgICAgICogVUlQcm9jZXNzL21hYy9WaWV3R2VzdHVyZUNvbnRyb2xs
ZXIubWVzc2FnZXMuaW46CisgICAgICAgICogVUlQcm9jZXNzL21hYy9WaWV3R2VzdHVyZUNvbnRy
b2xsZXIubW06IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1ZpZXdH
ZXN0dXJlQ29udHJvbGxlci5jcHAuCisgICAgICAgIFVzZSBzb21lIENBRmlsdGVyIFNQSSB0byBi
bHVyIHRoZSBzbmFwc2hvdCBpZiBWaWV3R2VzdHVyZURlYnVnZ2luZ0VuYWJsZWQgaXMgb24uCisK
KyAgICAgICAgKFdlYktpdDo6Vmlld0dlc3R1cmVDb250cm9sbGVyOjpWaWV3R2VzdHVyZUNvbnRy
b2xsZXIpOgorICAgICAgICAoV2ViS2l0OjpWaWV3R2VzdHVyZUNvbnRyb2xsZXI6On5WaWV3R2Vz
dHVyZUNvbnRyb2xsZXIpOgorICAgICAgICAoV2ViS2l0OjpWaWV3R2VzdHVyZUNvbnRyb2xsZXI6
OmVuZE1hZ25pZmljYXRpb25HZXN0dXJlKToKKyAgICAgICAgTW92ZSBtX2FjdGl2ZUdlc3R1cmVU
eXBlIGNsZWFyaW5nIHRvIGVhY2ggZW5kKiBmdW5jdGlvbiBpbnN0ZWFkIG9mIG9uZSBnbG9iYWwg
cGxhY2UsCisgICAgICAgIHNvIHRoYXQgZWFjaCBnZXN0dXJlIGNhbiBoYW5kbGUgd2hlbiBpdCBl
bmRzIHNlcGFyYXRlbHkuCisKKyAgICAgICAgKFdlYktpdDo6Vmlld0dlc3R1cmVDb250cm9sbGVy
OjpoYW5kbGVTY3JvbGxXaGVlbEV2ZW50KToKKyAgICAgICAgSWYgd2UgcmVjZWl2ZSBhIHNjcm9s
bCB3aGVlbCBldmVudCB3aGljaCBpcyBhcHByb3ByaWF0ZSBmb3Igc3RhcnRpbmcgYQorICAgICAg
ICBmbHVpZCBzd2lwZSwgaW4gYSBkaXJlY3Rpb24gd2hlcmUgdGhlIG1haW4gZnJhbWUgaXMgcGlu
bmVkIHRvIHRoZSBhcHByb3ByaWF0ZQorICAgICAgICBlZGdlIG9mIHRoZSB2aWV3LCBzdGFydCB0
cmFja2luZyBhIHN3aXBlLgorCisgICAgICAgIFRoaXMgc2hvdWxkIGV2ZW50dWFsbHkgaGF2ZSBz
b21lIGh5c3RlcmlzaXMgdG8gYXZvaWQgc3RlYWxpbmcgc2Nyb2xscyB0aGF0CisgICAgICAgIHZl
bnR1cmUgaW50byB0aGUgd3JvbmcgZGlyZWN0aW9uLCBidXQgZm9yIG5vdyBpdCBzdGFydHMgdHJh
Y2tpbmcgaW1tZWRpYXRlbHkuCisKKyAgICAgICAgRm9yd2FyZCBldmVudHMgZnJvbSB0aGUgdHJh
Y2tpbmcgbG9vcCB0byB7YmVnaW4sIGhhbmRsZSwgZW5kfVN3aXBlR2VzdHVyZS4KKworICAgICAg
ICAoV2ViS2l0OjpWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OmJlZ2luU3dpcGVHZXN0dXJlKToKKyAg
ICAgICAgQ3JlYXRlIGEgbGF5ZXIgd2l0aCB0aGUgZGVzdGluYXRpb24gcGFnZSdzIHNuYXBzaG90
LCBhbmQgc2V0IGl0IHVwLgorCisgICAgICAgIChXZWJLaXQ6OlZpZXdHZXN0dXJlQ29udHJvbGxl
cjo6aGFuZGxlU3dpcGVHZXN0dXJlKToKKyAgICAgICAgQXBwcm9wcmlhdGVseSBhZGp1c3QgdGhl
IHBvc2l0aW9uIG9mIHRoZSByb290IGxheWVyIGFuZCBzbmFwc2hvdCBsYXllciwKKyAgICAgICAg
Z2l2ZW4gdGhlIHRyYW5zaXRpb24gc3R5bGUgYW5kIHN3aXBlIGRpcmVjdGlvbi4KKworICAgICAg
ICAoV2ViS2l0OjpWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OmVuZFN3aXBlR2VzdHVyZSk6CisgICAg
ICAgIFdoZW4gdGhlIGdlc3R1cmUgZW5kcywgZG8gdGhlIG5hdmlnYXRpb24sIGFuZCB0ZWxsIHRo
ZSBXZWJQcm9jZXNzIHRvCisgICAgICAgIGluZm9ybSB1cyB3aGVuIHRoZSByZW5kZXIgdHJlZSBo
aXRzIGhhbGYgdGhlIHNpemUgaXQgd2FzIHdoZW4gdGhlCisgICAgICAgIHNuYXBzaG90IHdhcyB0
YWtlbiAod2hlbiB0aGF0IGhhcHBlbnMsIHdlIHdpbGwgcmVtb3ZlIHRoZSBzbmFwc2hvdAorICAg
ICAgICBhbmQgdGhlIGdlc3R1cmUgd2lsbCBiZSB0cnVseSBjb21wbGV0ZSkuIEFsc28sIHN0YXJ0
IGEgd2F0Y2hkb2cgdGltZXIKKyAgICAgICAgaW4gY2FzZSB0aGUgcmVuZGVyIHRyZWUgbmV2ZXIg
aGl0cyB0aGF0IHNpemUsIGFmdGVyIHdoaWNoIHdlIHdpbGwKKyAgICAgICAgYWxzbyByZW1vdmUg
dGhlIHNuYXBzaG90LgorCisgICAgICAgIChXZWJLaXQ6OlZpZXdHZXN0dXJlQ29udHJvbGxlcjo6
ZGlkSGl0UmVuZGVyVHJlZVNpemVUaHJlc2hvbGQpOgorICAgICAgICAoV2ViS2l0OjpWaWV3R2Vz
dHVyZUNvbnRyb2xsZXI6OnN3aXBlU25hcHNob3RXYXRjaGRvZ1RpbWVyRmlyZWQpOgorICAgICAg
ICAoV2ViS2l0OjpWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OnJlbW92ZVN3aXBlU25hcHNob3QpOgor
ICAgICAgICBUZWFyIGRvd24gdGhlIHN3aXBlIHNuYXBzaG90IGxheWVyLCBhbmQgbWFyayBvdXIg
Y3VycmVudCBnZXN0dXJlIGFzIGNvbXBsZXRlLgorCisgICAgICAgIChXZWJLaXQ6OlZpZXdHZXN0
dXJlQ29udHJvbGxlcjo6ZW5kQWN0aXZlR2VzdHVyZSk6CisgICAgICAgIFNpbXBsaWZ5IGVuZEFj
dGl2ZUdlc3R1cmU7IGl0IG9ubHkgaGFzIHdvcmsgdG8gZG8gZm9yIGEgcGluY2gtem9vbSBnZXN0
dXJlLAorICAgICAgICBhcyB0aG9zZSBhcmUgdGhlIG9ubHkgZ2VzdHVyZXMgd2hlcmUgdGhlIHVz
ZXIgaXMgZGlyZWN0bHkgaW4gY29udHJvbCBvZiB3aGVuIHRoZXkgZW5kLgorCisgICAgICAgICog
VUlQcm9jZXNzL21hYy9WaWV3U25hcHNob3RTdG9yZS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvci5oLgor
ICAgICAgICAoV2ViS2l0OjpWaWV3U25hcHNob3RTdG9yZTo6ZGlzYWJsZVNuYXBzaG90dGluZyk6
CisgICAgICAgIChXZWJLaXQ6OlZpZXdTbmFwc2hvdFN0b3JlOjplbmFibGVTbmFwc2hvdHRpbmcp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvVmlld1NuYXBzaG90U3RvcmUubW06IEFkZGVkLgor
ICAgICAgICAoV2ViS2l0OjpWaWV3U25hcHNob3RTdG9yZTo6Vmlld1NuYXBzaG90U3RvcmUpOgor
ICAgICAgICAoV2ViS2l0OjpWaWV3U25hcHNob3RTdG9yZTo6flZpZXdTbmFwc2hvdFN0b3JlKToK
KyAgICAgICAgKFdlYktpdDo6Vmlld1NuYXBzaG90U3RvcmU6OnNoYXJlZCk6CisgICAgICAgIChX
ZWJLaXQ6OlZpZXdTbmFwc2hvdFN0b3JlOjp0YWtlU25hcHNob3QpOgorICAgICAgICAoV2ViS2l0
OjpWaWV3U25hcHNob3RTdG9yZTo6Z2V0U25hcHNob3RBbmRSZW5kZXJUcmVlU2l6ZSk6CisgICAg
ICAgIEFkZCBhIHNpZGUgbWFwIG9mIHNuYXBzaG90cywgd2hpY2ggYXJlIGlkZW50aWZpZWQgYnkg
VVVJRHMgKHdoaWNoIGFyZSBzdG9yZWQKKyAgICAgICAgaW5zaWRlIHRoZSBhc3NvY2lhdGVkIFdl
YkJhY2tGb3J3YXJkTGlzdEl0ZW0pLgorICAgICAgICBXZSB1c2Ugd2luZG93IHNlcnZlciBzbmFw
c2hvdHMsIHNpbWlsYXIgdG8gV2ViS2l0VGVzdFJ1bm5lciwgdG8gbWF0Y2ggcHJlY2lzZWx5Cisg
ICAgICAgIHRoZSBwYWdlIGFzIHJlbmRlcmVkIG9uLXNjcmVlbi4KKyAgICAgICAgQ3VycmVudGx5
IHRoZXJlIGlzIG5vIG1hbmFnZW1lbnQgb2YgdGhlIHNpemUgb2YgdGhpcyBjYWNoZSwgYW5kIGl0
IHdpbGwgZ3JvdyB3aXRob3V0CisgICAgICAgIGJvdW5kOyBiZXR0ZXIgY2FjaGUgbWFuYWdlbWVu
dCBpcyBjb21pbmcgaW4gYSBmdXR1cmUgcGF0Y2guCisKKyAgICAgICAgKiBXZWJLaXQyLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvVmll
d0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlZpZXdHZXN0
dXJlR2VvbWV0cnlDb2xsZWN0b3I6OlZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3IpOgorICAg
ICAgICAoV2ViS2l0OjpWaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yOjptYWluRnJhbWVEaWRM
YXlvdXQpOgorICAgICAgICAoV2ViS2l0OjpWaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yOjpy
ZW5kZXJUcmVlU2l6ZU5vdGlmaWNhdGlvblRpbWVyRmlyZWQpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUGFnZS9WaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yLmg6CisgICAgICAgIChXZWJL
aXQ6OlZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3I6OnNldFJlbmRlclRyZWVTaXplTm90aWZp
Y2F0aW9uVGhyZXNob2xkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvVmlld0dlc3R1
cmVHZW9tZXRyeUNvbGxlY3Rvci5tZXNzYWdlcy5pbjoKKyAgICAgICAgVmlld0dlc3R1cmVDb250
cm9sbGVyIHB1c2hlcyBhIHJlbmRlci10cmVlIHNpemUgdGhyZXNob2xkIHRvIHRoZSBXZWJQcm9j
ZXNzOworICAgICAgICBWaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yICh3aG9zZSBuYW1lIGlz
IG5vdyBtb3JlIHVuZm9ydHVuYXRlIHRoYW4gYmVmb3JlKQorICAgICAgICBtb25pdG9ycyByZW5k
ZXItdHJlZSBzaXplIGNoYW5nZXMgYW5kIGluZm9ybXMgVmlld0dlc3R1cmVDb250cm9sbGVyIHdo
ZW4KKyAgICAgICAgaXQgcmVhY2hlcyB0aGF0IHRocmVzaG9sZCB2aWEgdGhlICdEaWRIaXRSZW5k
ZXJUcmVlU2l6ZVRocmVzaG9sZCcgbWVzc2FnZS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlkQ2hhbmdlU2Nyb2xsT2Zmc2V0KToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6
OnVwZGF0ZU1haW5GcmFtZVNjcm9sbE9mZnNldFBpbm5pbmcpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlOjptYWluRnJhbWVEaWRMYXlvdXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpk
aWRDb21taXRMb2FkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgor
ICAgICAgICBSZW5hbWUgV2ViUGFnZTo6ZGlkQ2hhbmdlU2Nyb2xsT2Zmc2V0Rm9yTWFpbkZyYW1l
IHRvCisgICAgICAgIHVwZGF0ZU1haW5GcmFtZVNjcm9sbE9mZnNldFBpbm5pbmcsIHdoaWNoIGJl
dHRlciBkZXNjcmliZXMgd2hhdCBpdAorICAgICAgICBhY3R1YWxseSBkb2VzLiBDYWxsIGl0IHdo
ZW4gYSBsb2FkIGNvbXBsZXRlcywgc28gdGhhdCB3ZSBoYXZlIHZhbGlkCisgICAgICAgIHBpbm5p
bmcgc3RhdGUgYmVmb3JlIHRoZSBmaXJzdCBzY3JvbGwgZXZlbnQgY29tZXMgaW4uCisKKzIwMTQt
MDEtMjEgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisKICAgICAgICAg
TWFrZSBWaWV3R2VzdHVyZUNvbnRyb2xsZXIgT2JqLUMrKwogICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI3Mzg1CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9XZWJCYWNrRm9yd2FyZExpc3RJdGVtLmggYi9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvV2ViQmFja0ZvcndhcmRMaXN0SXRlbS5oCmluZGV4IGIxMzlmYTAuLjE3OTIzMDIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJCYWNrRm9yd2FyZExpc3RJdGVtLmgK
KysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkJhY2tGb3J3YXJkTGlzdEl0ZW0uaApAQCAt
MzEsOCArMzEsOCBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3Bh
Y2UgSVBDIHsKLSAgICBjbGFzcyBBcmd1bWVudERlY29kZXI7Ci0gICAgY2xhc3MgQXJndW1lbnRF
bmNvZGVyOworY2xhc3MgQXJndW1lbnREZWNvZGVyOworY2xhc3MgQXJndW1lbnRFbmNvZGVyOwog
fQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTYwLDYgKzYwLDkgQEAgcHVibGljOgogICAgIHZv
aWQgc2V0QmFja0ZvcndhcmREYXRhKGNvbnN0IHVpbnQ4X3QqIGJ1ZmZlciwgc2l6ZV90IHNpemUp
OwogICAgIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgYmFja0ZvcndhcmREYXRhKCkgY29uc3QgeyBy
ZXR1cm4gbV9iYWNrRm9yd2FyZERhdGE7IH0KIAorICAgIHZvaWQgc2V0U25hcHNob3RVVUlEKGNv
bnN0IFN0cmluZyYgdXVpZCkgeyBtX3NuYXBzaG90VVVJRCA9IHV1aWQ7IH0KKyAgICBjb25zdCBT
dHJpbmcmIHNuYXBzaG90VVVJRCgpIGNvbnN0IHsgcmV0dXJuIG1fc25hcHNob3RVVUlEOyB9CisK
ICAgICB2b2lkIGVuY29kZShJUEM6OkFyZ3VtZW50RW5jb2RlciYpIGNvbnN0OwogICAgIHN0YXRp
YyBQYXNzUmVmUHRyPFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0+IGRlY29kZShJUEM6OkFyZ3VtZW50
RGVjb2RlciYpOwogCkBAIC03Myw2ICs3Niw3IEBAIHByaXZhdGU6CiAgICAgU3RyaW5nIG1fdGl0
bGU7CiAgICAgdWludDY0X3QgbV9pdGVtSUQ7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IG1fYmFja0Zv
cndhcmREYXRhOworICAgIFN0cmluZyBtX3NuYXBzaG90VVVJRDsKIH07CiAKIHR5cGVkZWYgVmVj
dG9yPFJlZlB0cjxXZWJCYWNrRm9yd2FyZExpc3RJdGVtPj4gQmFja0ZvcndhcmRMaXN0SXRlbVZl
Y3RvcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcmVmZXJlbmNlc1N0
b3JlLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJlZmVyZW5jZXNTdG9yZS5oCmluZGV4
IGU5ZjcxMTQuLjMyYWRkNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQ
cmVmZXJlbmNlc1N0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByZWZlcmVu
Y2VzU3RvcmUuaApAQCAtMTc5LDYgKzE3OSw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogICAgIG1h
Y3JvKFVzZUxlZ2FjeVRleHRBbGlnblBvc2l0aW9uZWRFbGVtZW50QmVoYXZpb3IsIHVzZUxlZ2Fj
eVRleHRBbGlnblBvc2l0aW9uZWRFbGVtZW50QmVoYXZpb3IsIEJvb2wsIGJvb2wsIGZhbHNlKSBc
CiAgICAgbWFjcm8oU3BhdGlhbE5hdmlnYXRpb25FbmFibGVkLCBzcGF0aWFsTmF2aWdhdGlvbkVu
YWJsZWQsIEJvb2wsIGJvb2wsIGZhbHNlKSBcCiAgICAgbWFjcm8oTWVkaWFTb3VyY2VFbmFibGVk
LCBtZWRpYVNvdXJjZUVuYWJsZWQsIEJvb2wsIGJvb2wsIGZhbHNlKSBcCisgICAgbWFjcm8oVmll
d0dlc3R1cmVEZWJ1Z2dpbmdFbmFibGVkLCB2aWV3R2VzdHVyZURlYnVnZ2luZ0VuYWJsZWQsIEJv
b2wsIGJvb2wsIGZhbHNlKSBcCiAgICAgXAogCiAjZGVmaW5lIEZPUl9FQUNIX1dFQktJVF9ET1VC
TEVfUFJFRkVSRU5DRShtYWNybykgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXMuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9DL1dLUHJlZmVyZW5jZXMuY3BwCmluZGV4IGVkZTA5ZDkuLmQ1MmQyNDQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNlcy5jcHAKQEAgLTEyNDUs
MyArMTI0NSwxMyBAQCBib29sIFdLUHJlZmVyZW5jZXNHZXRNZWRpYVNvdXJjZUVuYWJsZWQoV0tQ
cmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNlc1JlZikKIHsKICAgICByZXR1cm4gdG9JbXBsKHByZWZl
cmVuY2VzUmVmKS0+bWVkaWFTb3VyY2VFbmFibGVkKCk7CiB9CisKK3ZvaWQgV0tQcmVmZXJlbmNl
c1NldFZpZXdHZXN0dXJlRGVidWdnaW5nRW5hYmxlZChXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVu
Y2VzUmVmLCBib29sIGVuYWJsZWQpCit7CisgICAgdG9JbXBsKHByZWZlcmVuY2VzUmVmKS0+c2V0
Vmlld0dlc3R1cmVEZWJ1Z2dpbmdFbmFibGVkKGVuYWJsZWQpOworfQorCitib29sIFdLUHJlZmVy
ZW5jZXNHZXRWaWV3R2VzdHVyZURlYnVnZ2luZ0VuYWJsZWQoV0tQcmVmZXJlbmNlc1JlZiBwcmVm
ZXJlbmNlc1JlZikKK3sKKyAgICByZXR1cm4gdG9JbXBsKHByZWZlcmVuY2VzUmVmKS0+dmlld0dl
c3R1cmVEZWJ1Z2dpbmdFbmFibGVkKCk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNlc1ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzUHJpdmF0ZS5oCmluZGV4IDg2N2M5OTcuLjgwODUy
NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVu
Y2VzUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1ByZWZl
cmVuY2VzUHJpdmF0ZS5oCkBAIC0zMTQsNiArMzE0LDEwIEBAIFdLX0VYUE9SVCBib29sIFdLUHJl
ZmVyZW5jZXNVc2VMZWdhY3lUZXh0QWxpZ25Qb3NpdGlvbmVkRWxlbWVudEJlaGF2aW9yKFdLUHJl
ZmVyCiBXS19FWFBPUlQgdm9pZCBXS1ByZWZlcmVuY2VzU2V0TWVkaWFTb3VyY2VFbmFibGVkKFdL
UHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXNSZWYsIGJvb2wgZW5hYmxlZCk7CiBXS19FWFBPUlQg
Ym9vbCBXS1ByZWZlcmVuY2VzR2V0TWVkaWFTb3VyY2VFbmFibGVkKFdLUHJlZmVyZW5jZXNSZWYg
cHJlZmVyZW5jZXNSZWYpOwogCisvLyBEZWZhdWx0IHRvIGZhbHNlLgorV0tfRVhQT1JUIHZvaWQg
V0tQcmVmZXJlbmNlc1NldFZpZXdHZXN0dXJlRGVidWdnaW5nRW5hYmxlZChXS1ByZWZlcmVuY2Vz
UmVmIHByZWZlcmVuY2VzUmVmLCBib29sIGVuYWJsZWQpOworV0tfRVhQT1JUIGJvb2wgV0tQcmVm
ZXJlbmNlc0dldFZpZXdHZXN0dXJlRGVidWdnaW5nRW5hYmxlZChXS1ByZWZlcmVuY2VzUmVmIHBy
ZWZlcmVuY2VzUmVmKTsKKwogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CiAjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tWaWV3UHJpdmF0ZS5oIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ZpZXdQcml2YXRlLmgKaW5kZXgg
MGY3OGMwZC4uOTI4NDkxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1ZpZXdQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1ZpZXdQcml2YXRlLmgKQEAgLTY2LDYgKzY2LDcgQEAKIEBwcm9wZXJ0eSAocmVh
ZG9ubHksIGdldHRlcj1pc1VzaW5nVUlTaWRlQ29tcG9zaXRpbmcpIEJPT0wgdXNpbmdVSVNpZGVD
b21wb3NpdGluZzsKIEBwcm9wZXJ0eSAocmVhZHdyaXRlKSBCT09MIGFsbG93c01hZ25pZmljYXRp
b247CiBAcHJvcGVydHkgKHJlYWR3cml0ZSkgZG91YmxlIG1hZ25pZmljYXRpb247CitAcHJvcGVy
dHkgKHJlYWR3cml0ZSkgQk9PTCBhbGxvd3NCYWNrRm9yd2FyZE5hdmlnYXRpb25HZXN0dXJlczsK
IAogQHByb3BlcnR5KGNvcHksIG5vbmF0b21pYykgTlNDb2xvciAqdW5kZXJsYXlDb2xvcjsKIApA
QCAtODUsNiArODYsOCBAQAogCiAtICh2b2lkKXNldE1hZ25pZmljYXRpb246KGRvdWJsZSltYWdu
aWZpY2F0aW9uIGNlbnRlcmVkQXRQb2ludDooTlNQb2ludClwb2ludDsKIAorLSAodm9pZClzYXZl
QmFja0ZvcndhcmRTbmFwc2hvdEZvckN1cnJlbnRJdGVtOworCiAjZW5kaWYKIAogQGVuZApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tCmluZGV4IDAyYTUzNDguLjY0
ZjExZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmll
dy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcubW0KQEAg
LTUwLDYgKzUwLDcgQEAKICNpbXBvcnQgIlRleHRDaGVja2VyU3RhdGUuaCIKICNpbXBvcnQgIlRp
bGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhUHJveHkuaCIKICNpbXBvcnQgIlZpZXdHZXN0dXJl
Q29udHJvbGxlci5oIgorI2ltcG9ydCAiVmlld1NuYXBzaG90U3RvcmUuaCIKICNpbXBvcnQgIldL
QVBJQ2FzdC5oIgogI2ltcG9ydCAiV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlci5oIgogI2lt
cG9ydCAiV0tQcmludGluZ1ZpZXcuaCIKQEAgLTU3LDYgKzU4LDcgQEAKICNpbXBvcnQgIldLVGV4
dElucHV0V2luZG93Q29udHJvbGxlci5oIgogI2ltcG9ydCAiV0tWaWV3SW50ZXJuYWwuaCIKICNp
bXBvcnQgIldLVmlld1ByaXZhdGUuaCIKKyNpbXBvcnQgIldlYkJhY2tGb3J3YXJkTGlzdC5oIgog
I2ltcG9ydCAiV2ViQ29udGV4dC5oIgogI2ltcG9ydCAiV2ViRXZlbnRGYWN0b3J5LmgiCiAjaW1w
b3J0ICJXZWJLaXQySW5pdGlhbGl6ZS5oIgpAQCAtMjE5LDYgKzIyMSw3IEBAIHN0cnVjdCBXS1Zp
ZXdJbnRlcnByZXRLZXlFdmVudHNQYXJhbWV0ZXJzIHsKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxW
aWV3R2VzdHVyZUNvbnRyb2xsZXI+IF9nZXN0dXJlQ29udHJvbGxlcjsKICAgICBCT09MIF9hbGxv
d3NNYWduaWZpY2F0aW9uOworICAgIEJPT0wgX2FsbG93c0JhY2tGb3J3YXJkTmF2aWdhdGlvbkdl
c3R1cmVzOwogfQogCiBAZW5kCkBAIC0xMDkxLDE2ICsxMDk0LDI1IEBAIE5BVElWRV9NT1VTRV9F
VkVOVF9IQU5ETEVSKHJpZ2h0TW91c2VVcCkKIAogI3VuZGVmIE5BVElWRV9NT1VTRV9FVkVOVF9I
QU5ETEVSCiAKLSNkZWZpbmUgTkFUSVZFX0VWRU5UX0hBTkRMRVIoU2VsZWN0b3IsIFR5cGUpIFwK
LSAgICAtICh2b2lkKVNlbGVjdG9yOihOU0V2ZW50ICopdGhlRXZlbnQgXAotICAgIHsgXAotICAg
ICAgICBOYXRpdmVXZWIjI1R5cGUjI0V2ZW50IHdlYkV2ZW50ID0gTmF0aXZlV2ViIyNUeXBlIyNF
dmVudCh0aGVFdmVudCwgc2VsZik7IFwKLSAgICAgICAgX2RhdGEtPl9wYWdlLT5oYW5kbGUjI1R5
cGUjI0V2ZW50KHdlYkV2ZW50KTsgXAotICAgIH0KKy0gKHZvaWQpX2Vuc3VyZUdlc3R1cmVDb250
cm9sbGVyCit7CisgICAgaWYgKF9kYXRhLT5fZ2VzdHVyZUNvbnRyb2xsZXIpCisgICAgICAgIHJl
dHVybjsKIAotTkFUSVZFX0VWRU5UX0hBTkRMRVIoc2Nyb2xsV2hlZWwsIFdoZWVsKQorICAgIF9k
YXRhLT5fZ2VzdHVyZUNvbnRyb2xsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFZpZXdHZXN0dXJlQ29u
dHJvbGxlcj4oKl9kYXRhLT5fcGFnZSk7Cit9CiAKLSN1bmRlZiBOQVRJVkVfRVZFTlRfSEFORExF
UgorLSAodm9pZClzY3JvbGxXaGVlbDooTlNFdmVudCAqKWV2ZW50Cit7CisgICAgaWYgKF9kYXRh
LT5fYWxsb3dzQmFja0ZvcndhcmROYXZpZ2F0aW9uR2VzdHVyZXMpIHsKKyAgICAgICAgW3NlbGYg
X2Vuc3VyZUdlc3R1cmVDb250cm9sbGVyXTsKKyAgICAgICAgaWYgKF9kYXRhLT5fZ2VzdHVyZUNv
bnRyb2xsZXItPmhhbmRsZVNjcm9sbFdoZWVsRXZlbnQoZXZlbnQpKQorICAgICAgICAgICAgcmV0
dXJuOworICAgIH0KKworICAgIE5hdGl2ZVdlYldoZWVsRXZlbnQgd2ViRXZlbnQgPSBOYXRpdmVX
ZWJXaGVlbEV2ZW50KGV2ZW50LCBzZWxmKTsKKyAgICBfZGF0YS0+X3BhZ2UtPmhhbmRsZVdoZWVs
RXZlbnQod2ViRXZlbnQpOworfQogCiAtICh2b2lkKW1vdXNlTW92ZWQ6KE5TRXZlbnQgKilldmVu
dAogewpAQCAtMjQ2OCw2ICsyNDgwLDExIEBAIHN0YXRpYyBOU1N0cmluZyAqIGNvbnN0IGJhY2tp
bmdQcm9wZXJ0eU9sZFNjYWxlRmFjdG9yS2V5ID0gQCJOU0JhY2tpbmdQcm9wZXJ0eU9sCiAgICAg
X2RhdGEtPl9maW5kSW5kaWNhdG9yV2luZG93LT5zZXRGaW5kSW5kaWNhdG9yKGZpbmRJbmRpY2F0
b3IsIGZhZGVPdXQsIGFuaW1hdGUpOwogfQogCistIChDQUxheWVyICopX3Jvb3RMYXllcgorewor
ICAgIHJldHVybiBbX2RhdGEtPl9sYXllckhvc3RpbmdWaWV3IGxheWVyXTsKK30KKwogLSAodm9p
ZClfc2V0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGVSb290TGF5ZXI6KENBTGF5ZXIgKilyb290
TGF5ZXIKIHsKICAgICBbQ0FUcmFuc2FjdGlvbiBiZWdpbl07CkBAIC0yODIzLDYgKzI4NDAsMTEg
QEAgc3RhdGljIE5TU3RyaW5nICpwYXRoV2l0aFVuaXF1ZUZpbGVuYW1lRm9yUGF0aChOU1N0cmlu
ZyAqcGF0aCkKIAogQGltcGxlbWVudGF0aW9uIFdLVmlldyAoUHJpdmF0ZSkKIAorLSAodm9pZClz
YXZlQmFja0ZvcndhcmRTbmFwc2hvdEZvckN1cnJlbnRJdGVtCit7CisgICAgVmlld1NuYXBzaG90
U3RvcmU6OnNoYXJlZCgpLnRha2VTbmFwc2hvdCgqX2RhdGEtPl9wYWdlKTsKK30KKwogLSAodm9p
ZClfcmVnaXN0ZXJEcmFnZ2VkVHlwZXMKIHsKICAgICBOU011dGFibGVTZXQgKnR5cGVzID0gW1tO
U011dGFibGVTZXQgYWxsb2NdIGluaXRXaXRoQXJyYXk6UGFzdGVib2FyZFR5cGVzOjpmb3JFZGl0
aW5nKCldOwpAQCAtMzE5MywxNCArMzIxNSw2IEBAIHN0YXRpYyBOU1N0cmluZyAqcGF0aFdpdGhV
bmlxdWVGaWxlbmFtZUZvclBhdGgoTlNTdHJpbmcgKnBhdGgpCiAgICAgcmV0dXJuIE5POwogfQog
Ci0tICh2b2lkKV9lbnN1cmVHZXN0dXJlQ29udHJvbGxlcgotewotICAgIGlmIChfZGF0YS0+X2dl
c3R1cmVDb250cm9sbGVyKQotICAgICAgICByZXR1cm47Ci0KLSAgICBfZGF0YS0+X2dlc3R1cmVD
b250cm9sbGVyID0gc3RkOjptYWtlX3VuaXF1ZTxWaWV3R2VzdHVyZUNvbnRyb2xsZXI+KCpfZGF0
YS0+X3BhZ2UpOwotfQotCiAtICh2b2lkKXNldEFsbG93c01hZ25pZmljYXRpb246KEJPT0wpYWxs
b3dzTWFnbmlmaWNhdGlvbgogewogICAgIF9kYXRhLT5fYWxsb3dzTWFnbmlmaWNhdGlvbiA9IGFs
bG93c01hZ25pZmljYXRpb247CkBAIC0zMjExLDYgKzMyMjUsMTYgQEAgc3RhdGljIE5TU3RyaW5n
ICpwYXRoV2l0aFVuaXF1ZUZpbGVuYW1lRm9yUGF0aChOU1N0cmluZyAqcGF0aCkKICAgICByZXR1
cm4gX2RhdGEtPl9hbGxvd3NNYWduaWZpY2F0aW9uOwogfQogCistICh2b2lkKXNldEFsbG93c0Jh
Y2tGb3J3YXJkTmF2aWdhdGlvbkdlc3R1cmVzOihCT09MKWFsbG93c0JhY2tGb3J3YXJkTmF2aWdh
dGlvbkdlc3R1cmVzCit7CisgICAgX2RhdGEtPl9hbGxvd3NCYWNrRm9yd2FyZE5hdmlnYXRpb25H
ZXN0dXJlcyA9IGFsbG93c0JhY2tGb3J3YXJkTmF2aWdhdGlvbkdlc3R1cmVzOworfQorCistIChC
T09MKWFsbG93c0JhY2tGb3J3YXJkTmF2aWdhdGlvbkdlc3R1cmVzCit7CisgICAgcmV0dXJuIF9k
YXRhLT5fYWxsb3dzQmFja0ZvcndhcmROYXZpZ2F0aW9uR2VzdHVyZXM7Cit9CisKIC0gKHZvaWQp
bWFnbmlmeVdpdGhFdmVudDooTlNFdmVudCAqKWV2ZW50CiB7CiAgICAgaWYgKCFfZGF0YS0+X2Fs
bG93c01hZ25pZmljYXRpb24pIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvbWFjL1dLVmlld0ludGVybmFsLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L21hYy9XS1ZpZXdJbnRlcm5hbC5oCmluZGV4IDQ4ZTZiOTMuLjY4YTEwMmIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlld0ludGVybmFsLmgKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3SW50ZXJuYWwuaApAQCAtMzEs
MjEgKzMxLDIyIEBACiAjaW1wb3J0IDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBJUEMgewot
ICAgIGNsYXNzIERhdGFSZWZlcmVuY2U7CitjbGFzcyBEYXRhUmVmZXJlbmNlOwogfQogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7Ci0gICAgc3RydWN0IEtleXByZXNzQ29tbWFuZDsKLSAgICBjbGFzcyBJ
bWFnZTsKLSAgICBjbGFzcyBTaGFyZWRCdWZmZXI7CitzdHJ1Y3QgS2V5cHJlc3NDb21tYW5kOwor
Y2xhc3MgSW1hZ2U7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQg
ewotICAgIGNsYXNzIERyYXdpbmdBcmVhUHJveHk7Ci0gICAgY2xhc3MgRmluZEluZGljYXRvcjsK
LSAgICBjbGFzcyBMYXllclRyZWVDb250ZXh0OwotICAgIHN0cnVjdCBDb2xvclNwYWNlRGF0YTsK
LSAgICBzdHJ1Y3QgRWRpdG9yU3RhdGU7CitjbGFzcyBEcmF3aW5nQXJlYVByb3h5OworY2xhc3Mg
RmluZEluZGljYXRvcjsKK2NsYXNzIExheWVyVHJlZUNvbnRleHQ7CitjbGFzcyBWaWV3R2VzdHVy
ZUNvbnRyb2xsZXI7CitzdHJ1Y3QgQ29sb3JTcGFjZURhdGE7CitzdHJ1Y3QgRWRpdG9yU3RhdGU7
CiB9CiAKIEBjbGFzcyBXS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyOwpAQCAtNjksNiArNzAs
NyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIC0gKHZvaWQpX3NldEZpbmRJbmRpY2F0b3I6KFBhc3NS
ZWZQdHI8V2ViS2l0OjpGaW5kSW5kaWNhdG9yPilmaW5kSW5kaWNhdG9yIGZhZGVPdXQ6KEJPT0wp
ZmFkZU91dCBhbmltYXRlOihCT09MKWFuaW1hdGU7CiAKIC0gKHZvaWQpX3NldEFjY2VsZXJhdGVk
Q29tcG9zaXRpbmdNb2RlUm9vdExheWVyOihDQUxheWVyICopcm9vdExheWVyOworLSAoQ0FMYXll
ciAqKV9yb290TGF5ZXI7CiAKIC0gKHZvaWQpX3NldEFjY2Vzc2liaWxpdHlXZWJQcm9jZXNzVG9r
ZW46KE5TRGF0YSAqKWRhdGE7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHAKaW5kZXggZDIzZGYyNy4uOGZkNmFmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5jcHAKQEAgLTExOCw2ICsxMTgsMTAgQEAKICNpbmNsdWRlIDx3dGYvUmVm
Q291bnRlZExlYWtDb3VudGVyLmg+CiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKE1BQykKKyNpbmNs
dWRlICJWaWV3U25hcHNob3RTdG9yZS5oIgorI2VuZGlmCisKIC8vIFRoaXMgY29udHJvbHMgd2hh
dCBzdHJhdGVneSB3ZSB1c2UgZm9yIG1vdXNlIHdoZWVsIGNvYWxlc2NpbmcuCiAjZGVmaW5lIE1F
UkdFX1dIRUVMX0VWRU5UUyAxCiAKQEAgLTc0Nyw2ICs3NTEsOCBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6Z29Gb3J3YXJkKCkKICAgICBpZiAoIWZvcndhcmRJdGVtKQogICAgICAgICByZXR1cm47CiAK
KyAgICBWaWV3U25hcHNob3RTdG9yZTo6c2hhcmVkKCkudGFrZVNuYXBzaG90KCp0aGlzKTsKKwog
ICAgIGF1dG8gdHJhbnNhY3Rpb24gPSBtX3BhZ2VMb2FkU3RhdGUudHJhbnNhY3Rpb24oKTsKIAog
ICAgIG1fcGFnZUxvYWRTdGF0ZS5zZXRQZW5kaW5nQVBJUmVxdWVzdFVSTCh0cmFuc2FjdGlvbiwg
Zm9yd2FyZEl0ZW0tPnVybCgpKTsKQEAgLTc3NCw2ICs3ODAsOCBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6Z29CYWNrKCkKICAgICBpZiAoIWJhY2tJdGVtKQogICAgICAgICByZXR1cm47CiAKKyAgICBW
aWV3U25hcHNob3RTdG9yZTo6c2hhcmVkKCkudGFrZVNuYXBzaG90KCp0aGlzKTsKKwogICAgIGF1
dG8gdHJhbnNhY3Rpb24gPSBtX3BhZ2VMb2FkU3RhdGUudHJhbnNhY3Rpb24oKTsKIAogICAgIG1f
cGFnZUxvYWRTdGF0ZS5zZXRQZW5kaW5nQVBJUmVxdWVzdFVSTCh0cmFuc2FjdGlvbiwgYmFja0l0
ZW0tPnVybCgpKTsKQEAgLTc5OCw2ICs4MDYsOCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Z29Ub0Jh
Y2tGb3J3YXJkSXRlbShXZWJCYWNrRm9yd2FyZExpc3RJdGVtKiBpdGVtKQogICAgICAgICByZWF0
dGFjaFRvV2ViUHJvY2Vzc1dpdGhJdGVtKGl0ZW0pOwogICAgICAgICByZXR1cm47CiAgICAgfQor
CisgICAgVmlld1NuYXBzaG90U3RvcmU6OnNoYXJlZCgpLnRha2VTbmFwc2hvdCgqdGhpcyk7CiAg
ICAgCiAgICAgYXV0byB0cmFuc2FjdGlvbiA9IG1fcGFnZUxvYWRTdGF0ZS50cmFuc2FjdGlvbigp
OwogCkBAIC0yMTAwLDggKzIxMTAsMTAgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZFN0YXJ0UHJv
dmlzaW9uYWxMb2FkRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgY29uc3QgU3RyaW4KICAgICBN
RVNTQUdFX0NIRUNLKGZyYW1lKTsKICAgICBNRVNTQUdFX0NIRUNLX1VSTCh1cmwpOwogCi0gICAg
aWYgKGZyYW1lLT5pc01haW5GcmFtZSgpKQorICAgIGlmIChmcmFtZS0+aXNNYWluRnJhbWUoKSkg
eworICAgICAgICBWaWV3U25hcHNob3RTdG9yZTo6c2hhcmVkKCkudGFrZVNuYXBzaG90KCp0aGlz
KTsKICAgICAgICAgbV9wYWdlTG9hZFN0YXRlLmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKHRyYW5z
YWN0aW9uLCB1cmwsIHVucmVhY2hhYmxlVVJMKTsKKyAgICB9CiAKICAgICBmcmFtZS0+c2V0VW5y
ZWFjaGFibGVVUkwodW5yZWFjaGFibGVVUkwpOwogICAgIGZyYW1lLT5kaWRTdGFydFByb3Zpc2lv
bmFsTG9hZCh1cmwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2NmL1dl
YkJhY2tGb3J3YXJkTGlzdENGLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9jZi9XZWJC
YWNrRm9yd2FyZExpc3RDRi5jcHAKaW5kZXggMDhhNDZlMi4uZWQyMjExNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2NmL1dlYkJhY2tGb3J3YXJkTGlzdENGLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvY2YvV2ViQmFja0ZvcndhcmRMaXN0Q0YuY3BwCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCwgMjAxMSwgMjAxMiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTEs
IDIwMTIsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC01OCw2ICs1OCw3IEBAIHN0YXRpYyBDRlN0cmluZ1JlZiBz
ZXNzaW9uSGlzdG9yeUVudHJ5VGl0bGVLZXkgPSBDRlNUUigiU2Vzc2lvbkhpc3RvcnlFbnRyeVRp
dGxlCiBzdGF0aWMgQ0ZTdHJpbmdSZWYgc2Vzc2lvbkhpc3RvcnlFbnRyeVVSTEtleSA9IENGU1RS
KCJTZXNzaW9uSGlzdG9yeUVudHJ5VVJMIik7CiBzdGF0aWMgQ0ZTdHJpbmdSZWYgc2Vzc2lvbkhp
c3RvcnlFbnRyeU9yaWdpbmFsVVJMS2V5ID0gQ0ZTVFIoIlNlc3Npb25IaXN0b3J5RW50cnlPcmln
aW5hbFVSTCIpOwogc3RhdGljIENGU3RyaW5nUmVmIHNlc3Npb25IaXN0b3J5RW50cnlEYXRhS2V5
ID0gQ0ZTVFIoIlNlc3Npb25IaXN0b3J5RW50cnlEYXRhIik7CitzdGF0aWMgQ0ZTdHJpbmdSZWYg
c2Vzc2lvbkhpc3RvcnlFbnRyeVNuYXBzaG90VVVJREtleSA9IENGU1RSKCJTZXNzaW9uSGlzdG9y
eUVudHJ5U25hcHNob3RVVUlEIik7CiAKIHN0YXRpYyBib29sIGV4dHJhY3RCYWNrRm9yd2FyZExp
c3RFbnRyaWVzRnJvbUFycmF5KENGQXJyYXlSZWYsIEJhY2tGb3J3YXJkTGlzdEl0ZW1WZWN0b3Im
KTsKIApAQCAtMTA0LDE1ICsxMDUsMTYgQEAgQ0ZEaWN0aW9uYXJ5UmVmIFdlYkJhY2tGb3J3YXJk
TGlzdDo6Y3JlYXRlQ0ZEaWN0aW9uYXJ5UmVwcmVzZW50YXRpb24oV2ViUGFnZVByb3gKICAgICAg
ICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiB1cmwgPSBtX2VudHJpZXNbaV0tPnVybCgpLmNyZWF0
ZUNGU3RyaW5nKCk7CiAgICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gdGl0bGUgPSBtX2Vu
dHJpZXNbaV0tPnRpdGxlKCkuY3JlYXRlQ0ZTdHJpbmcoKTsKICAgICAgICAgUmV0YWluUHRyPENG
U3RyaW5nUmVmPiBvcmlnaW5hbFVSTCA9IG1fZW50cmllc1tpXS0+b3JpZ2luYWxVUkwoKS5jcmVh
dGVDRlN0cmluZygpOworICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHV1aWQgPSBtX2Vu
dHJpZXNbaV0tPnNuYXBzaG90VVVJRCgpLmNyZWF0ZUNGU3RyaW5nKCk7CiAKICAgICAgICAgLy8g
RklYTUU6IFRoaXMgdXNlcyB0aGUgSVBDIGRhdGEgZW5jb2RpbmcgZm9ybWF0LCB3aGljaCBtZWFu
cyB0aGF0IHdoZW5ldmVyIHdlIGNoYW5nZSB0aGUgSVBDIGVuY29kaW5nIHdlIG5lZWQgdG8gYnVt
cCB0aGUgQ3VycmVudFNlc3Npb25TdGF0ZURhdGFWZXJzaW9uCiAgICAgICAgIC8vIGNvbnN0YW50
IGluIFdlYlBhZ2VQcm94eUNGLmNwcC4gVGhlIElQQyBkYXRhIGZvcm1hdCBpcyBtZWFudCB0byBi
ZSBhbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWwsIGFuZCBub3Qgc29tZXRoaW5nIHRoYXQgc2hvdWxk
IGJlIHdyaXR0ZW4gdG8gZGlzay4KICAgICAgICAgUmV0YWluUHRyPENGRGF0YVJlZj4gZW50cnlE
YXRhID0gYWRvcHRDRihDRkRhdGFDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgbV9lbnRyaWVz
W2ldLT5iYWNrRm9yd2FyZERhdGEoKS5kYXRhKCksIG1fZW50cmllc1tpXS0+YmFja0ZvcndhcmRE
YXRhKCkuc2l6ZSgpKSk7Ci0gICAgICAgIAotICAgICAgICBjb25zdCB2b2lkKiBrZXlzWzRdID0g
eyBzZXNzaW9uSGlzdG9yeUVudHJ5VVJMS2V5LCBzZXNzaW9uSGlzdG9yeUVudHJ5VGl0bGVLZXks
IHNlc3Npb25IaXN0b3J5RW50cnlPcmlnaW5hbFVSTEtleSwgc2Vzc2lvbkhpc3RvcnlFbnRyeURh
dGFLZXkgfTsKLSAgICAgICAgY29uc3Qgdm9pZCogdmFsdWVzWzRdID0geyB1cmwuZ2V0KCksIHRp
dGxlLmdldCgpLCBvcmlnaW5hbFVSTC5nZXQoKSwgZW50cnlEYXRhLmdldCgpIH07CiAKLSAgICAg
ICAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gZW50cnlEaWN0aW9uYXJ5ID0gYWRvcHRDRihD
RkRpY3Rpb25hcnlDcmVhdGUoMCwga2V5cywgdmFsdWVzLCA0LCAma0NGVHlwZURpY3Rpb25hcnlL
ZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKSk7CisgICAgICAg
IGNvbnN0IHZvaWQqIGtleXNbNV0gPSB7IHNlc3Npb25IaXN0b3J5RW50cnlVUkxLZXksIHNlc3Np
b25IaXN0b3J5RW50cnlUaXRsZUtleSwgc2Vzc2lvbkhpc3RvcnlFbnRyeU9yaWdpbmFsVVJMS2V5
LCBzZXNzaW9uSGlzdG9yeUVudHJ5RGF0YUtleSwgc2Vzc2lvbkhpc3RvcnlFbnRyeVNuYXBzaG90
VVVJREtleSB9OworICAgICAgICBjb25zdCB2b2lkKiB2YWx1ZXNbNV0gPSB7IHVybC5nZXQoKSwg
dGl0bGUuZ2V0KCksIG9yaWdpbmFsVVJMLmdldCgpLCBlbnRyeURhdGEuZ2V0KCksIHV1aWQuZ2V0
KCkgfTsKKworICAgICAgICBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBlbnRyeURpY3Rpb25h
cnkgPSBhZG9wdENGKENGRGljdGlvbmFyeUNyZWF0ZSgwLCBrZXlzLCB2YWx1ZXMsIDUsICZrQ0ZU
eXBlRGljdGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFj
a3MpKTsKICAgICAgICAgQ0ZBcnJheUFwcGVuZFZhbHVlKGVudHJpZXMuZ2V0KCksIGVudHJ5RGlj
dGlvbmFyeS5nZXQoKSk7CiAgICAgfQogICAgICAgICAKQEAgLTMwOSwxMyArMzExLDIxIEBAIHN0
YXRpYyBib29sIGV4dHJhY3RCYWNrRm9yd2FyZExpc3RFbnRyaWVzRnJvbUFycmF5KENGQXJyYXlS
ZWYgY2ZFbnRyaWVzLCBCYWNrRm9yCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAg
IH0KIAorICAgICAgICBDRlN0cmluZ1JlZiBzbmFwc2hvdFVVSUQgPSAoQ0ZTdHJpbmdSZWYpQ0ZE
aWN0aW9uYXJ5R2V0VmFsdWUoZW50cnlEaWN0aW9uYXJ5LCBzZXNzaW9uSGlzdG9yeUVudHJ5U25h
cHNob3RVVUlES2V5KTsKKyAgICAgICAgaWYgKCFzbmFwc2hvdFVVSUQgfHwgQ0ZHZXRUeXBlSUQo
c25hcHNob3RVVUlEKSAhPSBDRlN0cmluZ0dldFR5cGVJRCgpKSB7CisgICAgICAgICAgICBMT0co
U2Vzc2lvblN0YXRlLCAiV2ViQmFja0ZvcndhcmRMaXN0IGVudHJ5IGF0IGluZGV4ICVpIGRvZXMg
bm90IGhhdmUgYSB2YWxpZCBzbmFwc2hvdCBVVUlEIiwgKGludClpKTsKKyAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgfQorCiAgICAgICAgIENGRGF0YVJlZiBiYWNrRm9yd2FyZERh
dGEgPSAoQ0ZEYXRhUmVmKUNGRGljdGlvbmFyeUdldFZhbHVlKGVudHJ5RGljdGlvbmFyeSwgc2Vz
c2lvbkhpc3RvcnlFbnRyeURhdGFLZXkpOwogICAgICAgICBpZiAoIWJhY2tGb3J3YXJkRGF0YSB8
fCBDRkdldFR5cGVJRChiYWNrRm9yd2FyZERhdGEpICE9IENGRGF0YUdldFR5cGVJRCgpKSB7CiAg
ICAgICAgICAgICBMT0coU2Vzc2lvblN0YXRlLCAiV2ViQmFja0ZvcndhcmRMaXN0IGVudHJ5IGF0
IGluZGV4ICVpIGRvZXMgbm90IGhhdmUgYmFjay9mb3J3YXJkIGRhdGEiLCAoaW50KWkpOwogICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBlbnRy
aWVzLmFwcGVuZChXZWJCYWNrRm9yd2FyZExpc3RJdGVtOjpjcmVhdGUob3JpZ2luYWxVUkwsIGVu
dHJ5VVJMLCBlbnRyeVRpdGxlLCBDRkRhdGFHZXRCeXRlUHRyKGJhY2tGb3J3YXJkRGF0YSksIENG
RGF0YUdldExlbmd0aChiYWNrRm9yd2FyZERhdGEpLCBnZW5lcmF0ZVdlYkJhY2tGb3J3YXJkSXRl
bUlEKCkpKTsKKworICAgICAgICBhdXRvIGl0ZW0gPSBXZWJCYWNrRm9yd2FyZExpc3RJdGVtOjpj
cmVhdGUob3JpZ2luYWxVUkwsIGVudHJ5VVJMLCBlbnRyeVRpdGxlLCBDRkRhdGFHZXRCeXRlUHRy
KGJhY2tGb3J3YXJkRGF0YSksIENGRGF0YUdldExlbmd0aChiYWNrRm9yd2FyZERhdGEpLCBnZW5l
cmF0ZVdlYkJhY2tGb3J3YXJkSXRlbUlEKCkpOworICAgICAgICBpdGVtLT5zZXRTbmFwc2hvdFVV
SUQoc25hcHNob3RVVUlEKTsKKyAgICAgICAgZW50cmllcy5hcHBlbmQoaXRlbSk7CiAgICAgfQog
CiAgICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
Y2YvV2ViUGFnZVByb3h5Q0YuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2NmL1dlYlBh
Z2VQcm94eUNGLmNwcAppbmRleCAyOTcyODk2Li5mYzgxYzNmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvY2YvV2ViUGFnZVByb3h5Q0YuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9jZi9XZWJQYWdlUHJveHlDRi5jcHAKQEAgLTQ0LDcgKzQ0LDcgQEAgbmFt
ZXNwYWNlIFdlYktpdCB7CiBzdGF0aWMgQ0ZTdHJpbmdSZWYgc2Vzc2lvbkhpc3RvcnlLZXkgPSBD
RlNUUigiU2Vzc2lvbkhpc3RvcnkiKTsKIHN0YXRpYyBDRlN0cmluZ1JlZiBwcm92aXNpb25hbFVS
TEtleSA9IENGU1RSKCJQcm92aXNpb25hbFVSTCIpOwogCi1zdGF0aWMgY29uc3QgVUludDMyIEN1
cnJlbnRTZXNzaW9uU3RhdGVEYXRhVmVyc2lvbiA9IDI7CitzdGF0aWMgY29uc3QgVUludDMyIEN1
cnJlbnRTZXNzaW9uU3RhdGVEYXRhVmVyc2lvbiA9IDM7CiAKIFBhc3NSZWZQdHI8QVBJOjpEYXRh
PiBXZWJQYWdlUHJveHk6OnNlc3Npb25TdGF0ZURhdGEoV2ViUGFnZVByb3h5U2Vzc2lvblN0YXRl
RmlsdGVyQ2FsbGJhY2sgZmlsdGVyLCB2b2lkKiBjb250ZXh0KSBjb25zdAogewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIuaCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvVmlld0dlc3R1cmVDb250cm9sbGVyLmgKaW5k
ZXggMmJiYzJmMy4uODdjYjI2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L21hYy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvbWFjL1ZpZXdHZXN0dXJlQ29udHJvbGxlci5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTMsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yOCw5ICsyOCwxNSBAQAogCiAjaW5jbHVk
ZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9GbG9hdFJlY3QuaD4KKyNp
bmNsdWRlIDxXZWJDb3JlL1RpbWVyLmg+CisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorCitP
QkpDX0NMQVNTIENBTGF5ZXI7CitPQkpDX0NMQVNTIE5TRXZlbnQ7CiAKIG5hbWVzcGFjZSBXZWJL
aXQgewogCitjbGFzcyBXZWJCYWNrRm9yd2FyZExpc3RJdGVtOwogY2xhc3MgV2ViUGFnZVByb3h5
OwogCiBjbGFzcyBWaWV3R2VzdHVyZUNvbnRyb2xsZXIgOiBwcml2YXRlIElQQzo6TWVzc2FnZVJl
Y2VpdmVyIHsKQEAgLTQ0LDEyICs1MCwyMSBAQCBwdWJsaWM6CiAgICAgdm9pZCBoYW5kbGVNYWdu
aWZpY2F0aW9uR2VzdHVyZShkb3VibGUgc2NhbGUsIFdlYkNvcmU6OkZsb2F0UG9pbnQgb3JpZ2lu
KTsKICAgICB2b2lkIGhhbmRsZVNtYXJ0TWFnbmlmaWNhdGlvbkdlc3R1cmUoV2ViQ29yZTo6Rmxv
YXRQb2ludCBvcmlnaW4pOwogCisgICAgYm9vbCBoYW5kbGVTY3JvbGxXaGVlbEV2ZW50KE5TRXZl
bnQgKik7CisgICAgdm9pZCBkaWRIaXRSZW5kZXJUcmVlU2l6ZVRocmVzaG9sZCgpOworCiAgICAg
dm9pZCBlbmRBY3RpdmVHZXN0dXJlKCk7CiAKICAgICBlbnVtIGNsYXNzIFZpZXdHZXN0dXJlVHlw
ZSB7CiAgICAgICAgIE5vbmUsCiAgICAgICAgIE1hZ25pZmljYXRpb24sCiAgICAgICAgIFNtYXJ0
TWFnbmlmaWNhdGlvbiwKKyAgICAgICAgU3dpcGUKKyAgICB9OworCisgICAgZW51bSBjbGFzcyBT
d2lwZVRyYW5zaXRpb25TdHlsZSB7CisgICAgICAgIE92ZXJsYXAsCisgICAgICAgIFB1c2gKICAg
ICB9OwogCiBwcml2YXRlOgpAQCAtNjMsNiArNzgsMTIgQEAgcHJpdmF0ZToKICAgICB2b2lkIGVu
ZE1hZ25pZmljYXRpb25HZXN0dXJlKCk7CiAgICAgV2ViQ29yZTo6RmxvYXRQb2ludCBzY2FsZWRN
YWduaWZpY2F0aW9uT3JpZ2luKFdlYkNvcmU6OkZsb2F0UG9pbnQgb3JpZ2luLCBkb3VibGUgc2Nh
bGUpOwogCisgICAgdm9pZCBiZWdpblN3aXBlR2VzdHVyZShXZWJCYWNrRm9yd2FyZExpc3RJdGVt
KiB0YXJnZXRJdGVtLCBib29sIHN3aXBpbmdMZWZ0KTsKKyAgICB2b2lkIGhhbmRsZVN3aXBlR2Vz
dHVyZShXZWJCYWNrRm9yd2FyZExpc3RJdGVtKiB0YXJnZXRJdGVtLCBkb3VibGUgcHJvZ3Jlc3Ms
IGJvb2wgc3dpcGluZ0xlZnQpOworICAgIHZvaWQgZW5kU3dpcGVHZXN0dXJlKFdlYkJhY2tGb3J3
YXJkTGlzdEl0ZW0qIHRhcmdldEl0ZW0sIGJvb2wgY2FuY2VsbGVkKTsKKyAgICB2b2lkIHJlbW92
ZVN3aXBlU25hcHNob3QoKTsKKyAgICB2b2lkIHN3aXBlU25hcHNob3RXYXRjaGRvZ1RpbWVyRmly
ZWQoV2ViQ29yZTo6VGltZXI8Vmlld0dlc3R1cmVDb250cm9sbGVyPiopOworCiAgICAgV2ViUGFn
ZVByb3h5JiBtX3dlYlBhZ2VQcm94eTsKIAogICAgIGRvdWJsZSBtX21hZ25pZmljYXRpb247CkBA
IC03NSw2ICs5NiwxMCBAQCBwcml2YXRlOgogICAgIFdlYkNvcmU6OkZsb2F0UmVjdCBtX3Zpc2li
bGVDb250ZW50UmVjdDsKICAgICBib29sIG1fdmlzaWJsZUNvbnRlbnRSZWN0SXNWYWxpZDsKICAg
ICBib29sIG1fZnJhbWVIYW5kbGVzTWFnbmlmaWNhdGlvbkdlc3R1cmU7CisKKyAgICBSZXRhaW5Q
dHI8Q0FMYXllcj4gbV9zd2lwZVNuYXBzaG90TGF5ZXI7CisgICAgU3dpcGVUcmFuc2l0aW9uU3R5
bGUgbV9zd2lwZVRyYW5zaXRpb25TdHlsZTsKKyAgICBXZWJDb3JlOjpUaW1lcjxWaWV3R2VzdHVy
ZUNvbnRyb2xsZXI+IG1fc3dpcGVXYXRjaGRvZ1RpbWVyOwogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1ZpZXdHZXN0
dXJlQ29udHJvbGxlci5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMv
Vmlld0dlc3R1cmVDb250cm9sbGVyLm1lc3NhZ2VzLmluCmluZGV4IDBiMzk5ZWYuLmQwOWMwMzcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvVmlld0dlc3R1cmVDb250
cm9sbGVyLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvVmll
d0dlc3R1cmVDb250cm9sbGVyLm1lc3NhZ2VzLmluCkBAIC0yMyw0ICsyMyw1IEBACiBtZXNzYWdl
cyAtPiBWaWV3R2VzdHVyZUNvbnRyb2xsZXIgewogICAgIERpZENvbGxlY3RHZW9tZXRyeUZvck1h
Z25pZmljYXRpb25HZXN0dXJlKFdlYkNvcmU6OkZsb2F0UmVjdCB2aXNpYmxlQ29udGVudEJvdW5k
cywgYm9vbCBmcmFtZUhhbmRsZXNNYWduaWZpY2F0aW9uR2VzdHVyZSkKICAgICBEaWRDb2xsZWN0
R2VvbWV0cnlGb3JTbWFydE1hZ25pZmljYXRpb25HZXN0dXJlKFdlYkNvcmU6OkZsb2F0UG9pbnQg
b3JpZ2luLCBXZWJDb3JlOjpGbG9hdFJlY3QgcmVuZGVyUmVjdCwgV2ViQ29yZTo6RmxvYXRSZWN0
IHZpc2libGVDb250ZW50Qm91bmRzLCBib29sIGlzUmVwbGFjZWRFbGVtZW50LCBib29sIGZyYW1l
SGFuZGxlc01hZ25pZmljYXRpb25HZXN0dXJlKQorICAgIERpZEhpdFJlbmRlclRyZWVTaXplVGhy
ZXNob2xkKCkKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvVmll
d0dlc3R1cmVDb250cm9sbGVyLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9WaWV3
R2VzdHVyZUNvbnRyb2xsZXIubW0KaW5kZXggN2NlZmNjMS4uMjNhYmM2YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIubW0KKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIubW0K
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTI2LDEwICsyNiwzMiBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJWaWV3R2VzdHVy
ZUNvbnRyb2xsZXIuaCIKIAorI2ltcG9ydCAiV2ViUGFnZUdyb3VwLmgiCiAjaW1wb3J0ICJWaWV3
R2VzdHVyZUNvbnRyb2xsZXJNZXNzYWdlcy5oIgogI2ltcG9ydCAiVmlld0dlc3R1cmVHZW9tZXRy
eUNvbGxlY3Rvck1lc3NhZ2VzLmgiCisjaW1wb3J0ICJWaWV3U25hcHNob3RTdG9yZS5oIgorI2lt
cG9ydCAiV2ViQmFja0ZvcndhcmRMaXN0LmgiCisjaW1wb3J0ICJXZWJQYWdlTWVzc2FnZXMuaCIK
ICNpbXBvcnQgIldlYlBhZ2VQcm94eS5oIgorI2ltcG9ydCAiV2ViUHJlZmVyZW5jZXMuaCIKICNp
bXBvcnQgIldlYlByb2Nlc3NQcm94eS5oIgorI2ltcG9ydCAiV0tWaWV3SW50ZXJuYWwuaCIKKyNp
bXBvcnQgPENvY29hL0NvY29hLmg+CisjaW1wb3J0IDxRdWFydHpDb3JlL1F1YXJ0ekNvcmUuaD4K
KyNpbXBvcnQgPFdlYkNvcmUvV2ViQ29yZUNBTGF5ZXJFeHRyYXMuaD4KKworI2lmIGRlZmluZWQo
X19oYXNfaW5jbHVkZSkgJiYgX19oYXNfaW5jbHVkZSg8UXVhcnR6Q29yZS9RdWFydHpDb3JlUHJp
dmF0ZS5oPikKKyNpbXBvcnQgPFF1YXJ0ekNvcmUvUXVhcnR6Q29yZVByaXZhdGUuaD4KKyNlbHNl
CitAaW50ZXJmYWNlIENBRmlsdGVyIDogTlNPYmplY3QgPE5TQ29weWluZywgTlNNdXRhYmxlQ29w
eWluZywgTlNDb2Rpbmc+CitAZW5kCisjZW5kaWYKKworQGludGVyZmFjZSBDQUZpbHRlciAoRGV0
YWlscykKKysgKENBRmlsdGVyICopZmlsdGVyV2l0aFR5cGU6KE5TU3RyaW5nICopdHlwZTsKK0Bl
bmQKKworZXh0ZXJuIE5TU3RyaW5nICogY29uc3Qga0NBRmlsdGVyR2F1c3NpYW5CbHVyOwogCiB1
c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIApAQCAtNDUsNiArNjcsMTIgQEAgc3RhdGljIGNvbnN0
IGRvdWJsZSB6b29tT3V0UmVzaXN0YW5jZSA9IDAuMTA7CiBzdGF0aWMgY29uc3QgZmxvYXQgc21h
cnRNYWduaWZpY2F0aW9uRWxlbWVudFBhZGRpbmcgPSAwLjA1Owogc3RhdGljIGNvbnN0IGZsb2F0
IHNtYXJ0TWFnbmlmaWNhdGlvblBhblNjcm9sbFRocmVzaG9sZCA9IDEwMDsKIAorc3RhdGljIGNv
bnN0IGRvdWJsZSBzd2lwZU92ZXJsYXlTaGFkb3dPcGFjaXR5ID0gMC42NjsKK3N0YXRpYyBjb25z
dCBkb3VibGUgc3dpcGVPdmVybGF5U2hhZG93UmFkaXVzID0gMzsKKworc3RhdGljIGNvbnN0IGZs
b2F0IHN3aXBlU25hcHNob3RSZW1vdmFsUmVuZGVyVHJlZVNpemVUYXJnZXRGcmFjdGlvbiA9IDAu
NTsKK3N0YXRpYyBjb25zdCBzdGQ6OmNocm9ubzo6ZHVyYXRpb248ZG91YmxlPiBzd2lwZVNuYXBz
aG90UmVtb3ZhbFdhdGNoZG9nRHVyYXRpb24oMyk7CisKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBW
aWV3R2VzdHVyZUNvbnRyb2xsZXI6OlZpZXdHZXN0dXJlQ29udHJvbGxlcihXZWJQYWdlUHJveHkm
IHdlYlBhZ2VQcm94eSkKQEAgLTUyLDYgKzgwLDggQEAgVmlld0dlc3R1cmVDb250cm9sbGVyOjpW
aWV3R2VzdHVyZUNvbnRyb2xsZXIoV2ViUGFnZVByb3h5JiB3ZWJQYWdlUHJveHkpCiAgICAgLCBt
X2FjdGl2ZUdlc3R1cmVUeXBlKFZpZXdHZXN0dXJlVHlwZTo6Tm9uZSkKICAgICAsIG1fdmlzaWJs
ZUNvbnRlbnRSZWN0SXNWYWxpZChmYWxzZSkKICAgICAsIG1fZnJhbWVIYW5kbGVzTWFnbmlmaWNh
dGlvbkdlc3R1cmUoZmFsc2UpCisgICAgLCBtX3N3aXBlVHJhbnNpdGlvblN0eWxlKFN3aXBlVHJh
bnNpdGlvblN0eWxlOjpPdmVybGFwKQorICAgICwgbV9zd2lwZVdhdGNoZG9nVGltZXIodGhpcywg
JlZpZXdHZXN0dXJlQ29udHJvbGxlcjo6c3dpcGVTbmFwc2hvdFdhdGNoZG9nVGltZXJGaXJlZCkK
IHsKICAgICBtX3dlYlBhZ2VQcm94eS5wcm9jZXNzKCkuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3Nh
Z2VzOjpWaWV3R2VzdHVyZUNvbnRyb2xsZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV93ZWJQ
YWdlUHJveHkucGFnZUlEKCksICp0aGlzKTsKIH0KQEAgLTEzOCw2ICsxNjgsOCBAQCB2b2lkIFZp
ZXdHZXN0dXJlQ29udHJvbGxlcjo6ZW5kTWFnbmlmaWNhdGlvbkdlc3R1cmUoKQogICAgICAgICBt
X3dlYlBhZ2VQcm94eS5zY2FsZVBhZ2UobmV3TWFnbmlmaWNhdGlvbiwgcm91bmRlZEludFBvaW50
KG1fbWFnbmlmaWNhdGlvbk9yaWdpbikpOwogICAgIGVsc2UKICAgICAgICAgbV93ZWJQYWdlUHJv
eHkuZHJhd2luZ0FyZWEoKS0+Y29tbWl0VHJhbnNpZW50Wm9vbShuZXdNYWduaWZpY2F0aW9uLCBz
Y2FsZWRNYWduaWZpY2F0aW9uT3JpZ2luKG1fbWFnbmlmaWNhdGlvbk9yaWdpbiwgbmV3TWFnbmlm
aWNhdGlvbikpOworCisgICAgbV9hY3RpdmVHZXN0dXJlVHlwZSA9IFZpZXdHZXN0dXJlVHlwZTo6
Tm9uZTsKIH0KIAogdm9pZCBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OmhhbmRsZVNtYXJ0TWFnbmlm
aWNhdGlvbkdlc3R1cmUoRmxvYXRQb2ludCBvcmlnaW4pCkBAIC0xOTIsMjAgKzIyNCwxNzcgQEAg
dm9pZCBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OmRpZENvbGxlY3RHZW9tZXRyeUZvclNtYXJ0TWFn
bmlmaWNhdGlvbkdlc3R1cmUoRmxvYXQKICAgICBtX2xhc3RTbWFydE1hZ25pZmljYXRpb25VbnNj
YWxlZFRhcmdldFJlY3QgPSB1bnNjYWxlZFRhcmdldFJlY3Q7CiB9CiAKLXZvaWQgVmlld0dlc3R1
cmVDb250cm9sbGVyOjplbmRBY3RpdmVHZXN0dXJlKCkKK2Jvb2wgVmlld0dlc3R1cmVDb250cm9s
bGVyOjpoYW5kbGVTY3JvbGxXaGVlbEV2ZW50KE5TRXZlbnQgKmV2ZW50KQogewotICAgIHN3aXRj
aCAobV9hY3RpdmVHZXN0dXJlVHlwZSkgewotICAgIGNhc2UgVmlld0dlc3R1cmVUeXBlOjpOb25l
OgotICAgIGNhc2UgVmlld0dlc3R1cmVUeXBlOjpTbWFydE1hZ25pZmljYXRpb246Ci0gICAgICAg
IGJyZWFrOwotICAgIGNhc2UgVmlld0dlc3R1cmVUeXBlOjpNYWduaWZpY2F0aW9uOgotICAgICAg
ICBlbmRNYWduaWZpY2F0aW9uR2VzdHVyZSgpOworICAgIGlmIChtX2FjdGl2ZUdlc3R1cmVUeXBl
ICE9IFZpZXdHZXN0dXJlVHlwZTo6Tm9uZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg
aWYgKGV2ZW50LnBoYXNlICE9IE5TRXZlbnRQaGFzZUJlZ2FuKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisKKyAgICBpZiAoZmFicyhldmVudC5zY3JvbGxpbmdEZWx0YVgpIDwgZmFicyhldmVudC5z
Y3JvbGxpbmdEZWx0YVkpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBib29sIHdpbGxT
d2lwZUxlZnQgPSBldmVudC5zY3JvbGxpbmdEZWx0YVggPiAwICYmIG1fd2ViUGFnZVByb3h5Lmlz
UGlubmVkVG9MZWZ0U2lkZSgpICYmIG1fd2ViUGFnZVByb3h5LmJhY2tGb3J3YXJkTGlzdCgpLmJh
Y2tJdGVtKCk7CisgICAgYm9vbCB3aWxsU3dpcGVSaWdodCA9IGV2ZW50LnNjcm9sbGluZ0RlbHRh
WCA8IDAgJiYgbV93ZWJQYWdlUHJveHkuaXNQaW5uZWRUb1JpZ2h0U2lkZSgpICYmIG1fd2ViUGFn
ZVByb3h5LmJhY2tGb3J3YXJkTGlzdCgpLmZvcndhcmRJdGVtKCk7CisgICAgaWYgKCF3aWxsU3dp
cGVMZWZ0ICYmICF3aWxsU3dpcGVSaWdodCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg
aWYgKCFldmVudC5oYXNQcmVjaXNlU2Nyb2xsaW5nRGVsdGFzKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisKKyAgICBpZiAoIVtOU0V2ZW50IGlzU3dpcGVUcmFja2luZ0Zyb21TY3JvbGxFdmVudHNF
bmFibGVkXSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgVmlld1NuYXBzaG90U3RvcmU6
OnNoYXJlZCgpLnRha2VTbmFwc2hvdChtX3dlYlBhZ2VQcm94eSk7CisKKyAgICBDR0Zsb2F0IG1h
eFByb2dyZXNzID0gd2lsbFN3aXBlTGVmdCA/IDEgOiAwOworICAgIENHRmxvYXQgbWluUHJvZ3Jl
c3MgPSB3aWxsU3dpcGVSaWdodCA/IC0xIDogMDsKKyAgICBSZWZQdHI8V2ViQmFja0ZvcndhcmRM
aXN0SXRlbT4gdGFyZ2V0SXRlbSA9IHdpbGxTd2lwZUxlZnQgPyBtX3dlYlBhZ2VQcm94eS5iYWNr
Rm9yd2FyZExpc3QoKS5iYWNrSXRlbSgpIDogbV93ZWJQYWdlUHJveHkuYmFja0ZvcndhcmRMaXN0
KCkuZm9yd2FyZEl0ZW0oKTsKKyAgICBfX2Jsb2NrIGJvb2wgc3dpcGVDYW5jZWxsZWQgPSBmYWxz
ZTsKKworICAgIFtldmVudCB0cmFja1N3aXBlRXZlbnRXaXRoT3B0aW9uczowIGRhbXBlbkFtb3Vu
dFRocmVzaG9sZE1pbjptaW5Qcm9ncmVzcyBtYXg6bWF4UHJvZ3Jlc3MgdXNpbmdIYW5kbGVyOl4o
Q0dGbG9hdCBwcm9ncmVzcywgTlNFdmVudFBoYXNlIHBoYXNlLCBCT09MIGlzQ29tcGxldGUsIEJP
T0wgKnN0b3ApIHsKKyAgICAgICAgaWYgKHBoYXNlID09IE5TRXZlbnRQaGFzZUJlZ2FuKQorICAg
ICAgICAgICAgdGhpcy0+YmVnaW5Td2lwZUdlc3R1cmUodGFyZ2V0SXRlbS5nZXQoKSwgd2lsbFN3
aXBlTGVmdCk7CisgICAgICAgIHRoaXMtPmhhbmRsZVN3aXBlR2VzdHVyZSh0YXJnZXRJdGVtLmdl
dCgpLCBwcm9ncmVzcywgd2lsbFN3aXBlTGVmdCk7CisgICAgICAgIGlmIChwaGFzZSA9PSBOU0V2
ZW50UGhhc2VDYW5jZWxsZWQpCisgICAgICAgICAgICBzd2lwZUNhbmNlbGxlZCA9IHRydWU7Cisg
ICAgICAgIGlmIChpc0NvbXBsZXRlKQorICAgICAgICAgICAgdGhpcy0+ZW5kU3dpcGVHZXN0dXJl
KHRhcmdldEl0ZW0uZ2V0KCksIHN3aXBlQ2FuY2VsbGVkKTsKKyAgICB9XTsKKworICAgIHJldHVy
biB0cnVlOworfQorCit2b2lkIFZpZXdHZXN0dXJlQ29udHJvbGxlcjo6YmVnaW5Td2lwZUdlc3R1
cmUoV2ViQmFja0ZvcndhcmRMaXN0SXRlbSogdGFyZ2V0SXRlbSwgYm9vbCBzd2lwaW5nTGVmdCkK
K3sKKyAgICBtX2FjdGl2ZUdlc3R1cmVUeXBlID0gVmlld0dlc3R1cmVUeXBlOjpTd2lwZTsKKwor
ICAgIENBTGF5ZXIgKnJvb3RMYXllciA9IFttX3dlYlBhZ2VQcm94eS53a1ZpZXcoKSBfcm9vdExh
eWVyXTsKKworICAgIG1fc3dpcGVTbmFwc2hvdExheWVyID0gYWRvcHROUyhbW0NBTGF5ZXIgYWxs
b2NdIGluaXRdKTsKKyAgICBbbV9zd2lwZVNuYXBzaG90TGF5ZXIgc2V0QmFja2dyb3VuZENvbG9y
OkNHQ29sb3JHZXRDb25zdGFudENvbG9yKGtDR0NvbG9yV2hpdGUpXTsKKworICAgIHVpbnQ2NF90
IHJlbmRlclRyZWVTaXplOworICAgIFttX3N3aXBlU25hcHNob3RMYXllciBzZXRDb250ZW50czoo
aWQpVmlld1NuYXBzaG90U3RvcmU6OnNoYXJlZCgpLmdldFNuYXBzaG90QW5kUmVuZGVyVHJlZVNp
emUodGFyZ2V0SXRlbSwgcmVuZGVyVHJlZVNpemUpXTsKKyAgICBbbV9zd2lwZVNuYXBzaG90TGF5
ZXIgc2V0Q29udGVudHNHcmF2aXR5OmtDQUdyYXZpdHlUb3BMZWZ0XTsKKyAgICBbbV9zd2lwZVNu
YXBzaG90TGF5ZXIgc2V0Q29udGVudHNTY2FsZTptX3dlYlBhZ2VQcm94eS5kZXZpY2VTY2FsZUZh
Y3RvcigpXTsKKyAgICBbbV9zd2lwZVNuYXBzaG90TGF5ZXIgc2V0RnJhbWU6cm9vdExheWVyLmZy
YW1lXTsKKyAgICBbbV9zd2lwZVNuYXBzaG90TGF5ZXIgc2V0QW5jaG9yUG9pbnQ6Q0dQb2ludFpl
cm9dOworICAgIFttX3N3aXBlU25hcHNob3RMYXllciBzZXRQb3NpdGlvbjpDR1BvaW50WmVyb107
CisgICAgW21fc3dpcGVTbmFwc2hvdExheWVyIHNldE5hbWU6QCJHZXN0dXJlIFN3aXBlIFNuYXBz
aG90IExheWVyIl07CisgICAgW21fc3dpcGVTbmFwc2hvdExheWVyIHdlYl9kaXNhYmxlQWxsQWN0
aW9uc107CisKKyAgICBpZiAobV93ZWJQYWdlUHJveHkucGFnZUdyb3VwKCkucHJlZmVyZW5jZXMo
KS0+dmlld0dlc3R1cmVEZWJ1Z2dpbmdFbmFibGVkKCkpIHsKKyAgICAgICAgQ0FGaWx0ZXIqIGZp
bHRlciA9IFtDQUZpbHRlciBmaWx0ZXJXaXRoTmFtZTpAImdhdXNzaWFuQmx1ciJdOworICAgICAg
ICBbZmlsdGVyIHNldFZhbHVlOltOU051bWJlciBudW1iZXJXaXRoRmxvYXQ6M10gZm9yS2V5OkAi
aW5wdXRSYWRpdXMiXTsKKyAgICAgICAgW21fc3dpcGVTbmFwc2hvdExheWVyIHNldEZpbHRlcnM6
QFtmaWx0ZXJdXTsKKyAgICB9CisKKyAgICBpZiAobV9zd2lwZVRyYW5zaXRpb25TdHlsZSA9PSBT
d2lwZVRyYW5zaXRpb25TdHlsZTo6T3ZlcmxhcCkgeworICAgICAgICBSZXRhaW5QdHI8Q0dQYXRo
UmVmPiBzaGFkb3dQYXRoID0gYWRvcHRDRihDR1BhdGhDcmVhdGVXaXRoUmVjdChbcm9vdExheWVy
IGJvdW5kc10sIDApKTsKKworICAgICAgICBbbV9zd2lwZVNuYXBzaG90TGF5ZXIgc2V0U2hhZG93
Q29sb3I6Q0dDb2xvckdldENvbnN0YW50Q29sb3Ioa0NHQ29sb3JCbGFjayldOworICAgICAgICBb
bV9zd2lwZVNuYXBzaG90TGF5ZXIgc2V0U2hhZG93T3BhY2l0eTpzd2lwZU92ZXJsYXlTaGFkb3dP
cGFjaXR5XTsKKyAgICAgICAgW21fc3dpcGVTbmFwc2hvdExheWVyIHNldFNoYWRvd1JhZGl1czpz
d2lwZU92ZXJsYXlTaGFkb3dSYWRpdXNdOworICAgICAgICBbbV9zd2lwZVNuYXBzaG90TGF5ZXIg
c2V0U2hhZG93UGF0aDpzaGFkb3dQYXRoLmdldCgpXTsKKworICAgICAgICBbcm9vdExheWVyIHNl
dFNoYWRvd0NvbG9yOkNHQ29sb3JHZXRDb25zdGFudENvbG9yKGtDR0NvbG9yQmxhY2spXTsKKyAg
ICAgICAgW3Jvb3RMYXllciBzZXRTaGFkb3dPcGFjaXR5OnN3aXBlT3ZlcmxheVNoYWRvd09wYWNp
dHldOworICAgICAgICBbcm9vdExheWVyIHNldFNoYWRvd1JhZGl1czpzd2lwZU92ZXJsYXlTaGFk
b3dSYWRpdXNdOworICAgICAgICBbcm9vdExheWVyIHNldFNoYWRvd1BhdGg6c2hhZG93UGF0aC5n
ZXQoKV07CisgICAgfQorCisgICAgaWYgKHN3aXBpbmdMZWZ0KQorICAgICAgICBbcm9vdExheWVy
LnN1cGVybGF5ZXIgaW5zZXJ0U3VibGF5ZXI6bV9zd2lwZVNuYXBzaG90TGF5ZXIuZ2V0KCkgYmVs
b3c6cm9vdExheWVyXTsKKyAgICBlbHNlCisgICAgICAgIFtyb290TGF5ZXIuc3VwZXJsYXllciBp
bnNlcnRTdWJsYXllcjptX3N3aXBlU25hcHNob3RMYXllci5nZXQoKSBhYm92ZTpyb290TGF5ZXJd
OworfQorCit2b2lkIFZpZXdHZXN0dXJlQ29udHJvbGxlcjo6aGFuZGxlU3dpcGVHZXN0dXJlKFdl
YkJhY2tGb3J3YXJkTGlzdEl0ZW0qIHRhcmdldEl0ZW0sIGRvdWJsZSBwcm9ncmVzcywgYm9vbCBz
d2lwaW5nTGVmdCkKK3sKKyAgICBBU1NFUlQobV9hY3RpdmVHZXN0dXJlVHlwZSA9PSBWaWV3R2Vz
dHVyZVR5cGU6OlN3aXBlKTsKKworICAgIENBTGF5ZXIgKnJvb3RMYXllciA9IFttX3dlYlBhZ2VQ
cm94eS53a1ZpZXcoKSBfcm9vdExheWVyXTsKKyAgICBkb3VibGUgd2lkdGggPSByb290TGF5ZXIu
Ym91bmRzLnNpemUud2lkdGg7CisgICAgZG91YmxlIHN3aXBpbmdMYXllck9mZnNldCA9IGZsb29y
KHdpZHRoICogcHJvZ3Jlc3MpOworCisgICAgaWYgKG1fc3dpcGVUcmFuc2l0aW9uU3R5bGUgPT0g
U3dpcGVUcmFuc2l0aW9uU3R5bGU6Ok92ZXJsYXApIHsKKyAgICAgICAgaWYgKHN3aXBpbmdMZWZ0
KQorICAgICAgICAgICAgW3Jvb3RMYXllciBzZXRQb3NpdGlvbjpDR1BvaW50TWFrZShzd2lwaW5n
TGF5ZXJPZmZzZXQsIDApXTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgW21fc3dpcGVTbmFw
c2hvdExheWVyIHNldFBvc2l0aW9uOkNHUG9pbnRNYWtlKHdpZHRoICsgc3dpcGluZ0xheWVyT2Zm
c2V0LCAwKV07CisgICAgfSBlbHNlIGlmIChtX3N3aXBlVHJhbnNpdGlvblN0eWxlID09IFN3aXBl
VHJhbnNpdGlvblN0eWxlOjpQdXNoKSB7CisgICAgICAgIFtyb290TGF5ZXIgc2V0UG9zaXRpb246
Q0dQb2ludE1ha2Uoc3dpcGluZ0xheWVyT2Zmc2V0LCAwKV07CisgICAgICAgIFttX3N3aXBlU25h
cHNob3RMYXllciBzZXRQb3NpdGlvbjpDR1BvaW50TWFrZSgoc3dpcGluZ0xlZnQgPyAtd2lkdGgg
OiB3aWR0aCkgKyBzd2lwaW5nTGF5ZXJPZmZzZXQsIDApXTsKICAgICB9Cit9CisKK3ZvaWQgVmll
d0dlc3R1cmVDb250cm9sbGVyOjplbmRTd2lwZUdlc3R1cmUoV2ViQmFja0ZvcndhcmRMaXN0SXRl
bSogdGFyZ2V0SXRlbSwgYm9vbCBjYW5jZWxsZWQpCit7CisgICAgQVNTRVJUKG1fYWN0aXZlR2Vz
dHVyZVR5cGUgPT0gVmlld0dlc3R1cmVUeXBlOjpTd2lwZSk7CisKKyAgICBDQUxheWVyICpyb290
TGF5ZXIgPSBbbV93ZWJQYWdlUHJveHkud2tWaWV3KCkgX3Jvb3RMYXllcl07CisKKyAgICBbcm9v
dExheWVyIHNldFNoYWRvd09wYWNpdHk6MF07CisgICAgW3Jvb3RMYXllciBzZXRTaGFkb3dSYWRp
dXM6MF07CisKKyAgICBpZiAoY2FuY2VsbGVkKSB7CisgICAgICAgIHJlbW92ZVN3aXBlU25hcHNo
b3QoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHVpbnQ2NF90IHJlbmRlclRyZWVT
aXplOworICAgIFZpZXdTbmFwc2hvdFN0b3JlOjpzaGFyZWQoKS5nZXRTbmFwc2hvdEFuZFJlbmRl
clRyZWVTaXplKHRhcmdldEl0ZW0sIHJlbmRlclRyZWVTaXplKTsKKyAgICBtX3dlYlBhZ2VQcm94
eS5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6Vmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvcjo6
U2V0UmVuZGVyVHJlZVNpemVOb3RpZmljYXRpb25UaHJlc2hvbGQocmVuZGVyVHJlZVNpemUgKiBz
d2lwZVNuYXBzaG90UmVtb3ZhbFJlbmRlclRyZWVTaXplVGFyZ2V0RnJhY3Rpb24pLCBtX3dlYlBh
Z2VQcm94eS5wYWdlSUQoKSk7CisKKyAgICAvLyBXZSBkb24ndCB3YW50IHRvIHJlcGxhY2UgdGhl
IGN1cnJlbnQgYmFjay1mb3J3YXJkIGl0ZW0ncyBzbmFwc2hvdAorICAgIC8vIGxpa2Ugd2Ugbm9y
bWFsbHkgd291bGQgd2hlbiBnb2luZyBiYWNrIG9yIGZvcndhcmQsIGJlY2F1c2Ugd2UgYXJlCisg
ICAgLy8gZGlzcGxheWluZyB0aGUgZGVzdGluYXRpb24gaXRlbSdzIHNuYXBzaG90LgorICAgIFZp
ZXdTbmFwc2hvdFN0b3JlOjpzaGFyZWQoKS5kaXNhYmxlU25hcHNob3R0aW5nKCk7CisgICAgbV93
ZWJQYWdlUHJveHkuZ29Ub0JhY2tGb3J3YXJkSXRlbSh0YXJnZXRJdGVtKTsKKyAgICBWaWV3U25h
cHNob3RTdG9yZTo6c2hhcmVkKCkuZW5hYmxlU25hcHNob3R0aW5nKCk7CisKKyAgICBpZiAoIXJl
bmRlclRyZWVTaXplKSB7CisgICAgICAgIHJlbW92ZVN3aXBlU25hcHNob3QoKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKworICAgIG1fc3dpcGVXYXRjaGRvZ1RpbWVyLnN0YXJ0T25lU2hvdChz
d2lwZVNuYXBzaG90UmVtb3ZhbFdhdGNoZG9nRHVyYXRpb24uY291bnQoKSk7Cit9CisKK3ZvaWQg
Vmlld0dlc3R1cmVDb250cm9sbGVyOjpkaWRIaXRSZW5kZXJUcmVlU2l6ZVRocmVzaG9sZCgpCit7
CisgICAgcmVtb3ZlU3dpcGVTbmFwc2hvdCgpOworfQorCit2b2lkIFZpZXdHZXN0dXJlQ29udHJv
bGxlcjo6c3dpcGVTbmFwc2hvdFdhdGNoZG9nVGltZXJGaXJlZChXZWJDb3JlOjpUaW1lcjxWaWV3
R2VzdHVyZUNvbnRyb2xsZXI+KikKK3sKKyAgICByZW1vdmVTd2lwZVNuYXBzaG90KCk7Cit9CisK
K3ZvaWQgVmlld0dlc3R1cmVDb250cm9sbGVyOjpyZW1vdmVTd2lwZVNuYXBzaG90KCkKK3sKKyAg
ICBtX3N3aXBlV2F0Y2hkb2dUaW1lci5zdG9wKCk7CisKKyAgICBpZiAobV9hY3RpdmVHZXN0dXJl
VHlwZSAhPSBWaWV3R2VzdHVyZVR5cGU6OlN3aXBlKQorICAgICAgICByZXR1cm47CisKKyAgICBb
W21fd2ViUGFnZVByb3h5LndrVmlldygpIF9yb290TGF5ZXJdIHNldFBvc2l0aW9uOkNHUG9pbnRa
ZXJvXTsKKyAgICBbbV9zd2lwZVNuYXBzaG90TGF5ZXIgcmVtb3ZlRnJvbVN1cGVybGF5ZXJdOwor
ICAgIG1fc3dpcGVTbmFwc2hvdExheWVyID0gbnVsbHB0cjsKIAotICAgIG1fdmlzaWJsZUNvbnRl
bnRSZWN0SXNWYWxpZCA9IGZhbHNlOwogICAgIG1fYWN0aXZlR2VzdHVyZVR5cGUgPSBWaWV3R2Vz
dHVyZVR5cGU6Ok5vbmU7CiB9CiAKK3ZvaWQgVmlld0dlc3R1cmVDb250cm9sbGVyOjplbmRBY3Rp
dmVHZXN0dXJlKCkKK3sKKyAgICBpZiAobV9hY3RpdmVHZXN0dXJlVHlwZSA9PSBWaWV3R2VzdHVy
ZVR5cGU6Ok1hZ25pZmljYXRpb24pIHsKKyAgICAgICAgZW5kTWFnbmlmaWNhdGlvbkdlc3R1cmUo
KTsKKyAgICAgICAgbV92aXNpYmxlQ29udGVudFJlY3RJc1ZhbGlkID0gZmFsc2U7CisgICAgfQor
fQorCiBkb3VibGUgVmlld0dlc3R1cmVDb250cm9sbGVyOjptYWduaWZpY2F0aW9uKCkgY29uc3QK
IHsKICAgICBpZiAobV9hY3RpdmVHZXN0dXJlVHlwZSA9PSBWaWV3R2VzdHVyZVR5cGU6Ok1hZ25p
ZmljYXRpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1ZpZXdT
bmFwc2hvdFN0b3JlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1ZpZXdTbmFwc2hv
dFN0b3JlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjA4YjdkMAotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvVmlld1NuYXBzaG90
U3RvcmUuaApAQCAtMCwwICsxLDYxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBWaWV3U25hcHNo
b3RTdG9yZV9oCisjZGVmaW5lIFZpZXdTbmFwc2hvdFN0b3JlX2gKKworI2luY2x1ZGUgPHd0Zi9I
YXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CisjaW5jbHVkZSA8d3RmL1Jl
dGFpblB0ci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2Ug
V2ViS2l0IHsKKworY2xhc3MgV2ViQmFja0ZvcndhcmRMaXN0SXRlbTsKK2NsYXNzIFdlYlBhZ2VQ
cm94eTsKKworY2xhc3MgVmlld1NuYXBzaG90U3RvcmUgeworICAgIFdURl9NQUtFX05PTkNPUFlB
QkxFKFZpZXdTbmFwc2hvdFN0b3JlKTsKK3B1YmxpYzoKKyAgICBWaWV3U25hcHNob3RTdG9yZSgp
OworICAgIH5WaWV3U25hcHNob3RTdG9yZSgpOworCisgICAgc3RhdGljIFZpZXdTbmFwc2hvdFN0
b3JlJiBzaGFyZWQoKTsKKworICAgIHZvaWQgdGFrZVNuYXBzaG90KFdlYlBhZ2VQcm94eSYpOwor
ICAgIENHSW1hZ2VSZWYgZ2V0U25hcHNob3RBbmRSZW5kZXJUcmVlU2l6ZShXZWJCYWNrRm9yd2Fy
ZExpc3RJdGVtKiwgdWludDY0X3QmIHJlbmRlclRyZWVTaXplKTsKKworICAgIHZvaWQgZGlzYWJs
ZVNuYXBzaG90dGluZygpIHsgbV9lbmFibGVkID0gZmFsc2U7IH0KKyAgICB2b2lkIGVuYWJsZVNu
YXBzaG90dGluZygpIHsgbV9lbmFibGVkID0gdHJ1ZTsgfQorCitwcml2YXRlOgorICAgIEhhc2hN
YXA8U3RyaW5nLCBzdGQ6OnBhaXI8UmV0YWluUHRyPENHSW1hZ2VSZWY+LCB1aW50NjRfdD4+IG1f
c25hcHNob3RNYXA7CisKKyAgICBib29sIG1fZW5hYmxlZDsKK307CisKK30gLy8gbmFtZXNwYWNl
IFdlYktpdAorCisjZW5kaWYgLy8gVmlld1NuYXBzaG90U3RvcmVfaApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9WaWV3U25hcHNob3RTdG9yZS5tbSBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9tYWMvVmlld1NuYXBzaG90U3RvcmUubW0KbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMC4uNGFlMzg3ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9tYWMvVmlld1NuYXBzaG90U3RvcmUubW0KQEAgLTAsMCArMSwxMTEg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIlZpZXdTbmFwc2hv
dFN0b3JlLmgiCisKKyNpbXBvcnQgIldlYkJhY2tGb3J3YXJkTGlzdC5oIgorI2ltcG9ydCAiV2Vi
UGFnZVByb3h5LmgiCisjaW1wb3J0ICJXS1ZpZXcuaCIKKyNpbXBvcnQgPENvcmVHcmFwaGljcy9D
b3JlR3JhcGhpY3MuaD4KKyNpbXBvcnQgPFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0Lmg+CisjaW1w
b3J0IDxXZWJDb3JlL1VVSUQuaD4KKworI2lmIGRlZmluZWQoX19oYXNfaW5jbHVkZSkgJiYgX19o
YXNfaW5jbHVkZSg8Q29yZUdyYXBoaWNzL0NvcmVHcmFwaGljc1ByaXZhdGUuaD4pCisjaW1wb3J0
IDxDb3JlR3JhcGhpY3MvQ29yZUdyYXBoaWNzUHJpdmF0ZS5oPgorI2VuZGlmCisKK2V4dGVybiAi
QyIgewordHlwZWRlZiB1aW50MzJfdCBDR1NDb25uZWN0aW9uSUQ7Cit0eXBlZGVmIHVpbnQzMl90
IENHU1dpbmRvd0lEOworQ0dTQ29ubmVjdGlvbklEIENHU01haW5Db25uZWN0aW9uSUQodm9pZCk7
CitDR0Vycm9yIENHU0dldFNjcmVlblJlY3RGb3JXaW5kb3coQ0dTQ29ubmVjdGlvbklEIGNpZCwg
Q0dTV2luZG93SUQgd2lkLCBDR1JlY3QgKnJlY3QpOworfTsKKwordXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitWaWV3U25hcHNob3RTdG9yZTo6Vmlld1Nu
YXBzaG90U3RvcmUoKQorICAgIDogbV9lbmFibGVkKHRydWUpCit7Cit9CisKK1ZpZXdTbmFwc2hv
dFN0b3JlOjp+Vmlld1NuYXBzaG90U3RvcmUoKQoreworfQorCitWaWV3U25hcHNob3RTdG9yZSYg
Vmlld1NuYXBzaG90U3RvcmU6OnNoYXJlZCgpCit7CisgICAgc3RhdGljIFZpZXdTbmFwc2hvdFN0
b3JlJiBzdG9yZSA9ICpuZXcgVmlld1NuYXBzaG90U3RvcmU7CisgICAgcmV0dXJuIHN0b3JlOwor
fQorCit2b2lkIFZpZXdTbmFwc2hvdFN0b3JlOjp0YWtlU25hcHNob3QoV2ViUGFnZVByb3h5JiB3
ZWJQYWdlUHJveHkpCit7CisgICAgUmVmUHRyPFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0+IGl0ZW0g
PSB3ZWJQYWdlUHJveHkuYmFja0ZvcndhcmRMaXN0KCkuY3VycmVudEl0ZW0oKTsKKworICAgIGlm
ICghbV9lbmFibGVkKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoIWl0ZW0pCisgICAgICAg
IHJldHVybjsKKworICAgIFdLVmlldyAqd2tWaWV3ID0gd2ViUGFnZVByb3h5LndrVmlldygpOwor
ICAgIE5TV2luZG93ICp3aW5kb3cgPSB3a1ZpZXcud2luZG93OworCisgICAgaWYgKCFbd2luZG93
IHdpbmRvd051bWJlcl0pCisgICAgICAgIHJldHVybjsKKworICAgIFJldGFpblB0cjxDR0ltYWdl
UmVmPiB3aW5kb3dTbmFwc2hvdEltYWdlID0gYWRvcHRDRihDR1dpbmRvd0xpc3RDcmVhdGVJbWFn
ZShDR1JlY3ROdWxsLCBrQ0dXaW5kb3dMaXN0T3B0aW9uSW5jbHVkaW5nV2luZG93LCBbd2luZG93
IHdpbmRvd051bWJlcl0sIGtDR1dpbmRvd0ltYWdlQm91bmRzSWdub3JlRnJhbWluZyB8IGtDR1dp
bmRvd0ltYWdlU2hvdWxkQmVPcGFxdWUpKTsKKworICAgIE5TUmVjdCB3aW5kb3dDYXB0dXJlUmVj
dCA9IFt3a1ZpZXcgY29udmVydFJlY3Q6W3drVmlldyBib3VuZHNdIHRvVmlldzpuaWxdOworICAg
IE5TUmVjdCB3aW5kb3dDYXB0dXJlU2NyZWVuUmVjdCA9IFt3aW5kb3cgY29udmVydFJlY3RUb1Nj
cmVlbjp3aW5kb3dDYXB0dXJlUmVjdF07CisgICAgQ0dSZWN0IHdpbmRvd1NjcmVlblJlY3Q7Cisg
ICAgQ0dTR2V0U2NyZWVuUmVjdEZvcldpbmRvdyhDR1NNYWluQ29ubmVjdGlvbklEKCksIChDR1NX
aW5kb3dJRClbd2luZG93IHdpbmRvd051bWJlcl0sICZ3aW5kb3dTY3JlZW5SZWN0KTsKKworICAg
IE5TUmVjdCBjcm9wcGVkSW1hZ2VSZWN0ID0gd2luZG93Q2FwdHVyZVJlY3Q7CisgICAgY3JvcHBl
ZEltYWdlUmVjdC5vcmlnaW4ueSA9IHdpbmRvd1NjcmVlblJlY3Quc2l6ZS5oZWlnaHQgLSB3aW5k
b3dDYXB0dXJlU2NyZWVuUmVjdC5zaXplLmhlaWdodCAtIE5TTWluWSh3aW5kb3dDYXB0dXJlUmVj
dCk7CisKKyAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gY3JvcHBlZEltYWdlID0gYWRvcHRDRihD
R0ltYWdlQ3JlYXRlV2l0aEltYWdlSW5SZWN0KHdpbmRvd1NuYXBzaG90SW1hZ2UuZ2V0KCksIE5T
UmVjdFRvQ0dSZWN0KFt3aW5kb3cgY29udmVydFJlY3RUb0JhY2tpbmc6Y3JvcHBlZEltYWdlUmVj
dF0pKSk7CisKKyAgICBpdGVtLT5zZXRTbmFwc2hvdFVVSUQoY3JlYXRlQ2Fub25pY2FsVVVJRFN0
cmluZygpKTsKKyAgICBtX3NuYXBzaG90TWFwLmFkZChpdGVtLT5zbmFwc2hvdFVVSUQoKSwgc3Rk
OjptYWtlX3BhaXIoY3JvcHBlZEltYWdlLCB3ZWJQYWdlUHJveHkucmVuZGVyVHJlZVNpemUoKSkp
OworfQorCitDR0ltYWdlUmVmIFZpZXdTbmFwc2hvdFN0b3JlOjpnZXRTbmFwc2hvdEFuZFJlbmRl
clRyZWVTaXplKFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0qIGl0ZW0sIHVpbnQ2NF90JiByZW5kZXJU
cmVlU2l6ZSkKK3sKKyAgICBjb25zdCBhdXRvJiBzbmFwc2hvdEFuZFJlbmRlclRyZWVTaXplID0g
bV9zbmFwc2hvdE1hcC5maW5kKGl0ZW0tPnNuYXBzaG90VVVJRCgpKTsKKworICAgIGlmIChzbmFw
c2hvdEFuZFJlbmRlclRyZWVTaXplID09IG1fc25hcHNob3RNYXAuZW5kKCkpIHsKKyAgICAgICAg
cmVuZGVyVHJlZVNpemUgPSAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKKyAg
ICByZW5kZXJUcmVlU2l6ZSA9IHNuYXBzaG90QW5kUmVuZGVyVHJlZVNpemUtPnZhbHVlLnNlY29u
ZDsKKyAgICByZXR1cm4gc25hcHNob3RBbmRSZW5kZXJUcmVlU2l6ZS0+dmFsdWUuZmlyc3QuZ2V0
KCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdDIvV2Vi
S2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDQ1ZjZhNjZiLi4wOGRlZjM0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKKysrIGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CkBAIC0zOTIsNiArMzkyLDggQEAKIAkJMkQxMjVDNUYxODU3RUEwNTAwM0JBM0NCIC8qIFZpZXdH
ZXN0dXJlQ29udHJvbGxlci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDJEMTI1QzVEMTg1N0VBMDUwMDNCQTNDQiAvKiBWaWV3R2VzdHVyZUNvbnRyb2xs
ZXIubW0gKi87IH07CiAJCTJEMUI1RDVEMTg1ODY5QzgwMDZDNjU5NiAvKiBWaWV3R2VzdHVyZUNv
bnRyb2xsZXJNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMkQxQjVENUIxODU4NjlDODAwNkM2NTk2IC8qIFZpZXdHZXN0dXJl
Q29udHJvbGxlck1lc3NhZ2VSZWNlaXZlci5jcHAgKi87IH07CiAJCTJEMUI1RDVFMTg1ODY5Qzgw
MDZDNjU5NiAvKiBWaWV3R2VzdHVyZUNvbnRyb2xsZXJNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkQxQjVENUMxODU4NjlDODAwNkM2NTk2
IC8qIFZpZXdHZXN0dXJlQ29udHJvbGxlck1lc3NhZ2VzLmggKi87IH07CisJCTJEMjU2MjE1MTg4
N0E5MEMwMEM2OTYzOSAvKiBWaWV3U25hcHNob3RTdG9yZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkQyNTYyMTMxODg3QTkwQzAwQzY5NjM5IC8qIFZp
ZXdTbmFwc2hvdFN0b3JlLmggKi87IH07CisJCTJEMjU2MjE2MTg4N0E5MEMwMEM2OTYzOSAvKiBW
aWV3U25hcHNob3RTdG9yZS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDJEMjU2MjE0MTg4N0E5MEMwMEM2OTYzOSAvKiBWaWV3U25hcHNob3RTdG9yZS5t
bSAqLzsgfTsKIAkJMkQyOEYzRTQxODg1Q0NDMTAwNEI5RUFFIC8qIFdlYkNocm9tZUNsaWVudElP
Uy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEMjhG
M0UwMTg4NUNDQzEwMDRCOUVBRSAvKiBXZWJDaHJvbWVDbGllbnRJT1MubW0gKi87IH07CiAJCTJE
MjhGM0U1MTg4NUNDQzEwMDRCOUVBRSAvKiBXZWJEYXRhYmFzZU1hbmFnZXJJT1MubW0gaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRDI4RjNFMTE4ODVDQ0Mx
MDA0QjlFQUUgLyogV2ViRGF0YWJhc2VNYW5hZ2VySU9TLm1tICovOyB9OwogCQkyRDI4RjNFNjE4
ODVDQ0MxMDA0QjlFQUUgLyogV2ViRWRpdG9yQ2xpZW50SU9TLm1tIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkQyOEYzRTIxODg1Q0NDMTAwNEI5RUFFIC8q
IFdlYkVkaXRvckNsaWVudElPUy5tbSAqLzsgfTsKQEAgLTIwMzEsNiArMjAzMyw4IEBACiAJCTJE
MUI1RDVBMTg1ODY1OTkwMDZDNjU5NiAvKiBWaWV3R2VzdHVyZUNvbnRyb2xsZXIubWVzc2FnZXMu
aW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
OyBwYXRoID0gVmlld0dlc3R1cmVDb250cm9sbGVyLm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkyRDFCNUQ1QjE4NTg2OUM4MDA2QzY1OTYgLyogVmlld0dlc3R1cmVD
b250cm9sbGVyTWVzc2FnZVJlY2VpdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFZpZXdHZXN0dXJlQ29udHJvbGxlck1lc3NhZ2VSZWNlaXZlci5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJEMUI1RDVDMTg1ODY5QzgwMDZDNjU5NiAvKiBWaWV3
R2VzdHVyZUNvbnRyb2xsZXJNZXNzYWdlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBWaWV3R2VzdHVyZUNvbnRyb2xsZXJNZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkyRDI1NjIxMzE4ODdBOTBDMDBDNjk2MzkgLyogVmlld1NuYXBzaG90U3RvcmUu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVmlld1NuYXBzaG90U3RvcmUuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMkQyNTYyMTQxODg3QTkwQzAwQzY5NjM5IC8q
IFZpZXdTbmFwc2hvdFN0b3JlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBw
YXRoID0gVmlld1NuYXBzaG90U3RvcmUubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTJEMjhGM0UwMTg4NUNDQzEwMDRCOUVBRSAvKiBXZWJDaHJvbWVDbGllbnRJT1MubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBXZWJDaHJvbWVDbGllbnRJT1MubW07
IHBhdGggPSBpb3MvV2ViQ2hyb21lQ2xpZW50SU9TLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkyRDI4RjNFMTE4ODVDQ0MxMDA0QjlFQUUgLyogV2ViRGF0YWJhc2VNYW5hZ2VySU9T
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gV2ViRGF0YWJhc2VN
YW5hZ2VySU9TLm1tOyBwYXRoID0gaW9zL1dlYkRhdGFiYXNlTWFuYWdlcklPUy5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkQyOEYzRTIxODg1Q0NDMTAwNEI5RUFFIC8qIFdlYkVk
aXRvckNsaWVudElPUy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9
IFdlYkVkaXRvckNsaWVudElPUy5tbTsgcGF0aCA9IGlvcy9XZWJFZGl0b3JDbGllbnRJT1MubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC01NjYxLDYgKzU2NjUsOCBAQAogCQkJCTJE
MTI1QzVDMTg1N0VBMDUwMDNCQTNDQiAvKiBWaWV3R2VzdHVyZUNvbnRyb2xsZXIuaCAqLywKIAkJ
CQkyRDEyNUM1RDE4NTdFQTA1MDAzQkEzQ0IgLyogVmlld0dlc3R1cmVDb250cm9sbGVyLm1tICov
LAogCQkJCTJEMUI1RDVBMTg1ODY1OTkwMDZDNjU5NiAvKiBWaWV3R2VzdHVyZUNvbnRyb2xsZXIu
bWVzc2FnZXMuaW4gKi8sCisJCQkJMkQyNTYyMTMxODg3QTkwQzAwQzY5NjM5IC8qIFZpZXdTbmFw
c2hvdFN0b3JlLmggKi8sCisJCQkJMkQyNTYyMTQxODg3QTkwQzAwQzY5NjM5IC8qIFZpZXdTbmFw
c2hvdFN0b3JlLm1tICovLAogCQkJCTcyOEU4NkVGMTc5NTE4OEMwMDg3ODc5RSAvKiBXZWJDb2xv
clBpY2tlck1hYy5oICovLAogCQkJCTcyOEU4NkYwMTc5NTE4OEMwMDg3ODc5RSAvKiBXZWJDb2xv
clBpY2tlck1hYy5tbSAqLywKIAkJCQkxQTFDNjQ4NjExRjQxNUI3MDA1NTNDMTkgLyogV2ViQ29u
dGV4dE1hYy5tbSAqLywKQEAgLTYzNjQsNiArNjM3MCw3IEBACiAJCQkJMkRBOTQ0OTExODg0RTNC
NTAwRUQ4NkRCIC8qIFdLSW50ZXJhY3Rpb25WaWV3LmggaW4gSGVhZGVycyAqLywKIAkJCQkzMzA5
MzQ0ODEzMTVCOTIyMDA5N0E3QkMgLyogV2ViQ29va2llTWFuYWdlck1lc3NhZ2VzLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkzMzA5MzQ1NjEzMTVCOTc1MDA5N0E3QkMgLyogV2ViQ29va2llTWFuYWdl
clByb3h5LmggaW4gSGVhZGVycyAqLywKKwkJCQkyRDI1NjIxNTE4ODdBOTBDMDBDNjk2MzkgLyog
Vmlld1NuYXBzaG90U3RvcmUuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxNUU3NzJDMTg0MDA4Qjkw
MDA3MjAzRiAvKiBEYXRhYmFzZVByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTMzQUExMDY3MTMxRjA2MDAwMEQ0QTU3NSAvKiBXZWJDb29raWVNYW5hZ2VyUHJv
eHlDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTMzMDkzNDRBMTMxNUI5MjIwMDk3QTdCQyAv
KiBXZWJDb29raWVNYW5hZ2VyUHJveHlNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCkBAIC03NDk3
LDYgKzc1MDQsNyBAQAogCQkJCUJDNjQ2OTZGMTFEQkU2MDMwMDY0NTVCMCAvKiBBUElBcnJheS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlCQ0JDQjBDRDEyMTVFMzNBMDBERTU5Q0EgLyogSW1tdXRh
YmxlRGljdGlvbmFyeS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzIwNEVFMjExQzgzRTk4MDA4
RjMzNzUgLyogSW5qZWN0ZWRCdW5kbGUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMkQyNTYyMTYx
ODg3QTkwQzAwQzY5NjM5IC8qIFZpZXdTbmFwc2hvdFN0b3JlLm1tIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMzdDNEMwOTMxODE0QjNBRjAwMzY4OEI5IC8qIFdLTlNBcnJheS5tbSBpbiBTb3VyY2VzICov
LAogCQkJCTkzNUVFQkExMTI3NzYxQ0MwMDMzMjJCOCAvKiBJbmplY3RlZEJ1bmRsZUJhY2tGb3J3
YXJkTGlzdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5MzVFRUJBMzEyNzc2MUQzMDAzMzIyQjgg
LyogSW5qZWN0ZWRCdW5kbGVCYWNrRm9yd2FyZExpc3RJdGVtLmNwcCBpbiBTb3VyY2VzICovLApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJG
cmFtZUxvYWRlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAppbmRleCA0OTdjYjVjLi42MTlhZGM5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lTG9hZGVyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcApAQCAtMTU1MSw3ICsxNTUxLDcgQEAg
dm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlkQ2hhbmdlU2Nyb2xsT2Zmc2V0KCkKICAgICBp
ZiAoIW1fZnJhbWUtPmNvcmVGcmFtZSgpLT52aWV3KCkpCiAgICAgICAgIHJldHVybjsKIAotICAg
IHdlYlBhZ2UtPmRpZENoYW5nZVNjcm9sbE9mZnNldEZvck1haW5GcmFtZSgpOworICAgIHdlYlBh
Z2UtPnVwZGF0ZU1haW5GcmFtZVNjcm9sbE9mZnNldFBpbm5pbmcoKTsKIH0KIAogYm9vbCBXZWJG
cmFtZUxvYWRlckNsaWVudDo6YWxsb3dTY3JpcHQoYm9vbCBlbmFibGVkUGVyU2V0dGluZ3MpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvVmlld0dlc3R1cmVH
ZW9tZXRyeUNvbGxlY3Rvci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
Vmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvci5jcHAKaW5kZXggNDExOWE4Yy4uMmJiZjkyNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdHZXN0dXJl
R2VvbWV0cnlDb2xsZWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9WaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yLmNwcApAQCAtNDIsNiArNDIsOCBAQCBu
YW1lc3BhY2UgV2ViS2l0IHsKIAogVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvcjo6Vmlld0dl
c3R1cmVHZW9tZXRyeUNvbGxlY3RvcihXZWJQYWdlJiB3ZWJQYWdlKQogICAgIDogbV93ZWJQYWdl
KHdlYlBhZ2UpCisgICAgLCBtX3JlbmRlclRyZWVTaXplTm90aWZpY2F0aW9uVGhyZXNob2xkKDAp
CisgICAgLCBtX3JlbmRlclRyZWVTaXplTm90aWZpY2F0aW9uVGltZXIoUnVuTG9vcDo6bWFpbigp
LCB0aGlzLCAmVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvcjo6cmVuZGVyVHJlZVNpemVOb3Rp
ZmljYXRpb25UaW1lckZpcmVkKQogewogICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLmFkZE1lc3Nh
Z2VSZWNlaXZlcihNZXNzYWdlczo6Vmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvcjo6bWVzc2Fn
ZVJlY2VpdmVyTmFtZSgpLCBtX3dlYlBhZ2UucGFnZUlEKCksICp0aGlzKTsKIH0KQEAgLTc3LDQg
Kzc5LDE3IEBAIHZvaWQgVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvcjo6Y29sbGVjdEdlb21l
dHJ5Rm9yU21hcnRNYWduaWZpY2F0aW9uR2VzdHVyZShGCiAgICAgfQogfQogCit2b2lkIFZpZXdH
ZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3I6Om1haW5GcmFtZURpZExheW91dCgpCit7CisgICAgaWYg
KG1fcmVuZGVyVHJlZVNpemVOb3RpZmljYXRpb25UaHJlc2hvbGQgJiYgbV93ZWJQYWdlLnJlbmRl
clRyZWVTaXplKCkgPj0gbV9yZW5kZXJUcmVlU2l6ZU5vdGlmaWNhdGlvblRocmVzaG9sZCkgewor
ICAgICAgICBtX3JlbmRlclRyZWVTaXplTm90aWZpY2F0aW9uVGltZXIuc3RhcnRPbmVTaG90KDAp
OworICAgICAgICBtX3JlbmRlclRyZWVTaXplTm90aWZpY2F0aW9uVGhyZXNob2xkID0gMDsKKyAg
ICB9Cit9CisKK3ZvaWQgVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvcjo6cmVuZGVyVHJlZVNp
emVOb3RpZmljYXRpb25UaW1lckZpcmVkKCkKK3sKKyAgICBtX3dlYlBhZ2Uuc2VuZChNZXNzYWdl
czo6Vmlld0dlc3R1cmVDb250cm9sbGVyOjpEaWRIaXRSZW5kZXJUcmVlU2l6ZVRocmVzaG9sZCgp
KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvci5oIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0
b3IuaAppbmRleCAzMjA5NTdiLi44MmI5ZTc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvci5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9WaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVj
dG9yLmgKQEAgLTI3LDYgKzI3LDcgQEAKICNkZWZpbmUgVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxl
Y3Rvcl9oCiAKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKKyNpbmNsdWRlIDxXVEYvUnVu
TG9vcC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBGbG9hdFBvaW50OwpAQCAtNDEs
NiArNDIsOCBAQCBwdWJsaWM6CiAgICAgVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3RvcihXZWJQ
YWdlJik7CiAgICAgflZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3IoKTsKIAorICAgIHZvaWQg
bWFpbkZyYW1lRGlkTGF5b3V0KCk7CisKIHByaXZhdGU6CiAgICAgLy8gSVBDOjpNZXNzYWdlUmVj
ZWl2ZXIuCiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlv
biosIElQQzo6TWVzc2FnZURlY29kZXImKSBvdmVycmlkZTsKQEAgLTQ4LDggKzUxLDE0IEBAIHBy
aXZhdGU6CiAgICAgLy8gTWVzc2FnZSBoYW5kbGVycy4KICAgICB2b2lkIGNvbGxlY3RHZW9tZXRy
eUZvck1hZ25pZmljYXRpb25HZXN0dXJlKCk7CiAgICAgdm9pZCBjb2xsZWN0R2VvbWV0cnlGb3JT
bWFydE1hZ25pZmljYXRpb25HZXN0dXJlKFdlYkNvcmU6OkZsb2F0UG9pbnQgb3JpZ2luKTsKKyAg
ICB2b2lkIHNldFJlbmRlclRyZWVTaXplTm90aWZpY2F0aW9uVGhyZXNob2xkKHVpbnQ2NF90IHNp
emUpIHsgbV9yZW5kZXJUcmVlU2l6ZU5vdGlmaWNhdGlvblRocmVzaG9sZCA9IHNpemU7IH0KKwor
ICAgIHZvaWQgcmVuZGVyVHJlZVNpemVOb3RpZmljYXRpb25UaW1lckZpcmVkKCk7CiAKICAgICBX
ZWJQYWdlJiBtX3dlYlBhZ2U7CisKKyAgICB1aW50NjRfdCBtX3JlbmRlclRyZWVTaXplTm90aWZp
Y2F0aW9uVGhyZXNob2xkOworICAgIFJ1bkxvb3A6OlRpbWVyPFZpZXdHZXN0dXJlR2VvbWV0cnlD
b2xsZWN0b3I+IG1fcmVuZGVyVHJlZVNpemVOb3RpZmljYXRpb25UaW1lcjsKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1ZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3IubWVzc2FnZXMuaW4gYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvci5t
ZXNzYWdlcy5pbgppbmRleCA2NWVhYTU4Li4zOWIxOGJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvci5tZXNz
YWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvVmlld0dlc3R1
cmVHZW9tZXRyeUNvbGxlY3Rvci5tZXNzYWdlcy5pbgpAQCAtMjUsNCArMjUsNSBAQCBtZXNzYWdl
cyAtPiBWaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yIHsKIENvbGxlY3RHZW9tZXRyeUZvck1h
Z25pZmljYXRpb25HZXN0dXJlKCkKIENvbGxlY3RHZW9tZXRyeUZvclNtYXJ0TWFnbmlmaWNhdGlv
bkdlc3R1cmUoV2ViQ29yZTo6RmxvYXRQb2ludCBvcmlnaW4pCiAKK1NldFJlbmRlclRyZWVTaXpl
Tm90aWZpY2F0aW9uVGhyZXNob2xkKHVpbnQ2NF90IHNpemUpCiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggNzE2ZWRiZS4uZjI2YzdjZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAt
MzAwNCw3ICszMDA0LDcgQEAgdm9pZCBXZWJQYWdlOjpjbGVhclNlbGVjdGlvbigpCiAgICAgbV9w
YWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKS5zZWxlY3Rpb24oKS5j
bGVhcigpOwogfQogCi12b2lkIFdlYlBhZ2U6OmRpZENoYW5nZVNjcm9sbE9mZnNldEZvck1haW5G
cmFtZSgpCit2b2lkIFdlYlBhZ2U6OnVwZGF0ZU1haW5GcmFtZVNjcm9sbE9mZnNldFBpbm5pbmco
KQogewogICAgIEZyYW1lJiBmcmFtZSA9IG1fcGFnZS0+bWFpbkZyYW1lKCk7CiAgICAgSW50UG9p
bnQgc2Nyb2xsUG9zaXRpb24gPSBmcmFtZS52aWV3KCktPnNjcm9sbFBvc2l0aW9uKCk7CkBAIC0z
MDQ1LDYgKzMwNDUsMTAgQEAgdm9pZCBXZWJQYWdlOjptYWluRnJhbWVEaWRMYXlvdXQoKQogICAg
ICAgICB9CiAgICAgfQogI2VuZGlmCisKKyNpZiBQTEFURk9STShNQUMpCisgICAgbV92aWV3R2Vz
dHVyZUdlb21ldHJ5Q29sbGVjdG9yLm1haW5GcmFtZURpZExheW91dCgpOworI2VuZGlmCiB9CiAK
IHZvaWQgV2ViUGFnZTo6YWRkUGx1Z2luVmlldyhQbHVnaW5WaWV3KiBwbHVnaW5WaWV3KQpAQCAt
Mzk1Myw2ICszOTU3LDggQEAgdm9pZCBXZWJQYWdlOjpkaWRDb21taXRMb2FkKFdlYkZyYW1lKiBm
cmFtZSkKICNlbmRpZgogCiAgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkudXBkYXRlQWN0aXZlUGFn
ZXMoKTsKKworICAgIHVwZGF0ZU1haW5GcmFtZVNjcm9sbE9mZnNldFBpbm5pbmcoKTsKIH0KIAog
dm9pZCBXZWJQYWdlOjpkaWRGaW5pc2hMb2FkKFdlYkZyYW1lKiBmcmFtZSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IDZmMDRkNjMuLjZlZTI3ZTEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgK
KysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtNTgx
LDcgKzU4MSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldE1lZGlhVm9sdW1lKGZsb2F0KTsKICAg
ICB2b2lkIHNldE1heVN0YXJ0TWVkaWFXaGVuSW5XaW5kb3coYm9vbCk7CiAKLSAgICB2b2lkIGRp
ZENoYW5nZVNjcm9sbE9mZnNldEZvck1haW5GcmFtZSgpOworICAgIHZvaWQgdXBkYXRlTWFpbkZy
YW1lU2Nyb2xsT2Zmc2V0UGlubmluZygpOwogCiAgICAgdm9pZCBtYWluRnJhbWVEaWRMYXlvdXQo
KTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>221817</attachid>
            <date>2014-01-21 18:05:17 -0800</date>
            <delta_ts>2014-01-22 11:23:22 -0800</delta_ts>
            <desc>take three</desc>
            <filename>swipe1.diff</filename>
            <type>text/plain</type>
            <size>56313</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCBiN2FlZWU1Li5iOGMwZjBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMTU1
IEBACiAyMDE0LTAxLTIxICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgog
CisgICAgICAgIFdlYktpdDIgVmlldyBHZXN0dXJlczogRmx1aWQgYmFjay1mb3J3YXJkIHN3aXBl
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjczNjMK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgc3Vw
cG9ydCBmb3IgYSAiYmFjay1mb3J3YXJkIHN3aXBlIiwgd2hpY2ggYWxsb3dzIGZsdWlkIHN3aXBp
bmcgYmV0d2VlbgorICAgICAgICBpdGVtcyBpbiB0aGUgYmFjay1mb3J3YXJkIGxpc3QuIEN1cnJl
bnRseSBkaXNhYmxlZCBieSBkZWZhdWx0LgorCisgICAgICAgICogU2hhcmVkL1dlYkJhY2tGb3J3
YXJkTGlzdEl0ZW0uaDoKKyAgICAgICAgKFdlYktpdDo6V2ViQmFja0ZvcndhcmRMaXN0SXRlbTo6
c2V0U25hcHNob3RVVUlEKToKKyAgICAgICAgKFdlYktpdDo6V2ViQmFja0ZvcndhcmRMaXN0SXRl
bTo6c25hcHNob3RVVUlEKToKKyAgICAgICAgKiBVSVByb2Nlc3MvY2YvV2ViQmFja0ZvcndhcmRM
aXN0Q0YuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJCYWNrRm9yd2FyZExpc3Q6OmNyZWF0ZUNG
RGljdGlvbmFyeVJlcHJlc2VudGF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6ZXh0cmFjdEJhY2tG
b3J3YXJkTGlzdEVudHJpZXNGcm9tQXJyYXkpOgorICAgICAgICBTdG9yZSBhbmQgc2VyaWFsaXpl
IGEgVVVJRCBhbG9uZyB3aXRoIGVhY2ggYmFjay1mb3J3YXJkIGxpc3QgaXRlbSB3aGljaAorICAg
ICAgICBpZGVudGlmaWVzIHRoYXQgaXRlbSdzIHZpZXcgc25hcHNob3QgaW4gdGhlIFZpZXdTbmFw
c2hvdFN0b3JlLgorCisgICAgICAgICogVUlQcm9jZXNzL2NmL1dlYlBhZ2VQcm94eUNGLmNwcDoK
KyAgICAgICAgQnVtcCB0aGUgc2Vzc2lvbiBzdGF0ZSBkYXRhIHZlcnNpb24sIGFzIHdlIGNoYW5n
ZWQgdGhlIFdlYkJhY2tGb3J3YXJkTGlzdCBmb3JtYXQuCisKKyAgICAgICAgKiBTaGFyZWQvV2Vi
UHJlZmVyZW5jZXNTdG9yZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVu
Y2VzLmNwcDoKKyAgICAgICAgKFdLUHJlZmVyZW5jZXNTZXRWaWV3R2VzdHVyZURlYnVnZ2luZ0Vu
YWJsZWQpOgorICAgICAgICAoV0tQcmVmZXJlbmNlc0dldFZpZXdHZXN0dXJlRGVidWdnaW5nRW5h
YmxlZCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXNQcml2YXRlLmg6
CisgICAgICAgIEFkZCBhIFZpZXdHZXN0dXJlRGVidWdnaW5nRW5hYmxlZCBwcmVmZXJlbmNlLCB3
aGljaCBjdXJyZW50bHkgY2F1c2VzIHNuYXBzaG90cyB0byBiZSBibHVycmVkLgorICAgICAgICBB
ZGRpdGlvbmFsIHZpZXcgZ2VzdHVyZSBkZWJ1Z2dpbmcgZmVhdHVyZXMgY291bGQgY29tZSBpbiB0
aGUgZnV0dXJlLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ZpZXdQcml2YXRl
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tOgorICAgICAgICAoLVtX
S1ZpZXcgX2Vuc3VyZUdlc3R1cmVDb250cm9sbGVyXSk6CisgICAgICAgICgtW1dLVmlldyBzY3Jv
bGxXaGVlbDpdKToKKyAgICAgICAgSWYgYmFjay1mb3J3YXJkIG5hdmlnYXRpb24gZ2VzdHVyZXMg
YXJlIGVuYWJsZWQsIGludGVyY2VwdCBzY3JvbGxXaGVlbCBldmVudHMKKyAgICAgICAgb24gdGhl
IFdLVmlldyBhbmQgbGV0IHRoZSBWaWV3R2VzdHVyZUNvbnRyb2xsZXIgdGFrZSB0aGUgZmlyc3Qg
Y3JhY2sgYXQgdGhlbS4KKworICAgICAgICAoLVtXS1ZpZXcgX3Jvb3RMYXllcl0pOgorICAgICAg
ICAoLVtXS1ZpZXcgc2F2ZUJhY2tGb3J3YXJkU25hcHNob3RGb3JDdXJyZW50SXRlbV0pOgorICAg
ICAgICAoLVtXS1ZpZXcgc2V0QWxsb3dzQmFja0ZvcndhcmROYXZpZ2F0aW9uR2VzdHVyZXM6XSk6
CisgICAgICAgICgtW1dLVmlldyBhbGxvd3NCYWNrRm9yd2FyZE5hdmlnYXRpb25HZXN0dXJlc10p
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvbWFjL1dLVmlld0ludGVybmFsLmg6CisgICAgICAg
IEFkZCBhbGxvd3NCYWNrRm9yd2FyZE5hdmlnYXRpb25HZXN0dXJlIHByb3BlcnR5LCB3aGljaCBl
bmFibGVzIHRoZSBnZXN0dXJlLgorICAgICAgICBBZGQgc2F2ZUJhY2tGb3J3YXJkU25hcHNob3RG
b3JDdXJyZW50SXRlbSBTUEksIHdoaWNoIGNsaWVudHMgY291bGQgcG90ZW50aWFsbHkKKyAgICAg
ICAgdXNlIHdoZW4gdGhleSBrbm93IHRoZXkncmUgYWJvdXQgdG8gbWFuaXB1bGF0ZSB0aGUgdmll
dyBoaWVyYXJjaHkgaW4gc3VjaCBhIHdheQorICAgICAgICB0aGF0IHRoZXkgd2FudCB0aGUgY3Vy
cmVudCBiYWNrLWZvcndhcmQgaXRlbSdzIHNuYXBzaG90IHRvIGJlIHVwIHRvIGRhdGUuCisKKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZVByb3h5Ojpnb0ZvcndhcmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6Omdv
QmFjayk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Z29Ub0JhY2tGb3J3YXJkSXRl
bSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkU3RhcnRQcm92aXNpb25hbExv
YWRGb3JGcmFtZSk6CisgICAgICAgIFVwZGF0ZSB0aGUgY3VycmVudCBiYWNrLWZvcndhcmQgaXRl
bSdzIHNuYXBzaG90IGltbWVkaWF0ZWx5IGJlZm9yZSBuYXZpZ2F0aW5nLgorCisgICAgICAgICog
VUlQcm9jZXNzL21hYy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIuaDoKKyAgICAgICAgQWRkIHN3aXBl
LXJlbGF0ZWQgbWV0aG9kcywgd2hpY2ggd2lsbCBiZSBkZXNjcmliZWQgYmVsb3cuCisKKyAgICAg
ICAgQWRkIGFuIGVudW0gZm9yIHRoZSBzd2lwZSB0cmFuc2l0aW9uIHN0eWxlLiBDdXJyZW50bHkg
b25seSBPdmVybGFwIGlzIGFjY2Vzc2libGUsCisgICAgICAgIGJ1dCBpbiB0aGUgZnV0dXJlIG9u
ZSBjb3VsZCBzZWUgaGF2aW5nIEFQSSB0byBjaG9vc2UgdGhlIHN0eWxlLgorICAgICAgICAnT3Zl
cmxhcCcgaGFzIHRoZSBvdXRnb2luZyBwYWdlIHN3aXBlIG91dCB0byB0aGUgcmlnaHQgKHdoZW4g
c3dpcGluZyByaWdodCkKKyAgICAgICAgb3IgdGhlIGluY29taW5nIHBhZ2Ugc3dpcGUgaW4gZnJv
bSB0aGUgcmlnaHQgKHdoZW4gc3dpcGluZyBsZWZ0KS4KKyAgICAgICAgJ1B1c2gnIGhhcyB0aGUg
cGFnZXMgcHVzaCBlYWNoIG90aGVyIGFsb25nIGluIHN5bmMsIGFzIGlmIGFsbCB0aGUgcGFnZXMg
aW4gdGhlCisgICAgICAgIGJhY2stZm9yd2FyZCBsaXN0IHdlcmUgb3JpZW50ZWQgZnJvbSBsZWZ0
IHRvIHJpZ2h0LgorCisgICAgICAgICogVUlQcm9jZXNzL21hYy9WaWV3R2VzdHVyZUNvbnRyb2xs
ZXIubWVzc2FnZXMuaW46CisgICAgICAgICogVUlQcm9jZXNzL21hYy9WaWV3R2VzdHVyZUNvbnRy
b2xsZXIubW06IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1ZpZXdH
ZXN0dXJlQ29udHJvbGxlci5jcHAuCisgICAgICAgIFVzZSBzb21lIENBRmlsdGVyIFNQSSB0byBi
bHVyIHRoZSBzbmFwc2hvdCBpZiBWaWV3R2VzdHVyZURlYnVnZ2luZ0VuYWJsZWQgaXMgb24uCisK
KyAgICAgICAgKFdlYktpdDo6Vmlld0dlc3R1cmVDb250cm9sbGVyOjpWaWV3R2VzdHVyZUNvbnRy
b2xsZXIpOgorICAgICAgICAoV2ViS2l0OjpWaWV3R2VzdHVyZUNvbnRyb2xsZXI6On5WaWV3R2Vz
dHVyZUNvbnRyb2xsZXIpOgorICAgICAgICAoV2ViS2l0OjpWaWV3R2VzdHVyZUNvbnRyb2xsZXI6
OmVuZE1hZ25pZmljYXRpb25HZXN0dXJlKToKKyAgICAgICAgTW92ZSBtX2FjdGl2ZUdlc3R1cmVU
eXBlIGNsZWFyaW5nIHRvIGVhY2ggZW5kKiBmdW5jdGlvbiBpbnN0ZWFkIG9mIG9uZSBnbG9iYWwg
cGxhY2UsCisgICAgICAgIHNvIHRoYXQgZWFjaCBnZXN0dXJlIGNhbiBoYW5kbGUgd2hlbiBpdCBl
bmRzIHNlcGFyYXRlbHkuCisKKyAgICAgICAgKFdlYktpdDo6Vmlld0dlc3R1cmVDb250cm9sbGVy
OjpoYW5kbGVTY3JvbGxXaGVlbEV2ZW50KToKKyAgICAgICAgSWYgd2UgcmVjZWl2ZSBhIHNjcm9s
bCB3aGVlbCBldmVudCB3aGljaCBpcyBhcHByb3ByaWF0ZSBmb3Igc3RhcnRpbmcgYQorICAgICAg
ICBmbHVpZCBzd2lwZSwgaW4gYSBkaXJlY3Rpb24gd2hlcmUgdGhlIG1haW4gZnJhbWUgaXMgcGlu
bmVkIHRvIHRoZSBhcHByb3ByaWF0ZQorICAgICAgICBlZGdlIG9mIHRoZSB2aWV3LCBzdGFydCB0
cmFja2luZyBhIHN3aXBlLgorCisgICAgICAgIFRoaXMgc2hvdWxkIGV2ZW50dWFsbHkgaGF2ZSBz
b21lIGh5c3RlcmlzaXMgdG8gYXZvaWQgc3RlYWxpbmcgc2Nyb2xscyB0aGF0CisgICAgICAgIHZl
bnR1cmUgaW50byB0aGUgd3JvbmcgZGlyZWN0aW9uLCBidXQgZm9yIG5vdyBpdCBzdGFydHMgdHJh
Y2tpbmcgaW1tZWRpYXRlbHkuCisKKyAgICAgICAgRm9yd2FyZCBldmVudHMgZnJvbSB0aGUgdHJh
Y2tpbmcgbG9vcCB0byB7YmVnaW4sIGhhbmRsZSwgZW5kfVN3aXBlR2VzdHVyZS4KKworICAgICAg
ICAoV2ViS2l0OjpWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OmJlZ2luU3dpcGVHZXN0dXJlKToKKyAg
ICAgICAgQ3JlYXRlIGEgbGF5ZXIgd2l0aCB0aGUgZGVzdGluYXRpb24gcGFnZSdzIHNuYXBzaG90
LCBhbmQgc2V0IGl0IHVwLgorCisgICAgICAgIChXZWJLaXQ6OlZpZXdHZXN0dXJlQ29udHJvbGxl
cjo6aGFuZGxlU3dpcGVHZXN0dXJlKToKKyAgICAgICAgQXBwcm9wcmlhdGVseSBhZGp1c3QgdGhl
IHBvc2l0aW9uIG9mIHRoZSByb290IGxheWVyIGFuZCBzbmFwc2hvdCBsYXllciwKKyAgICAgICAg
Z2l2ZW4gdGhlIHRyYW5zaXRpb24gc3R5bGUgYW5kIHN3aXBlIGRpcmVjdGlvbi4KKworICAgICAg
ICAoV2ViS2l0OjpWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OmVuZFN3aXBlR2VzdHVyZSk6CisgICAg
ICAgIFdoZW4gdGhlIGdlc3R1cmUgZW5kcywgZG8gdGhlIG5hdmlnYXRpb24sIGFuZCB0ZWxsIHRo
ZSBXZWJQcm9jZXNzIHRvCisgICAgICAgIGluZm9ybSB1cyB3aGVuIHRoZSByZW5kZXIgdHJlZSBo
aXRzIGhhbGYgdGhlIHNpemUgaXQgd2FzIHdoZW4gdGhlCisgICAgICAgIHNuYXBzaG90IHdhcyB0
YWtlbiAod2hlbiB0aGF0IGhhcHBlbnMsIHdlIHdpbGwgcmVtb3ZlIHRoZSBzbmFwc2hvdAorICAg
ICAgICBhbmQgdGhlIGdlc3R1cmUgd2lsbCBiZSB0cnVseSBjb21wbGV0ZSkuIEFsc28sIHN0YXJ0
IGEgd2F0Y2hkb2cgdGltZXIKKyAgICAgICAgaW4gY2FzZSB0aGUgcmVuZGVyIHRyZWUgbmV2ZXIg
aGl0cyB0aGF0IHNpemUsIGFmdGVyIHdoaWNoIHdlIHdpbGwKKyAgICAgICAgYWxzbyByZW1vdmUg
dGhlIHNuYXBzaG90LgorCisgICAgICAgIChXZWJLaXQ6OlZpZXdHZXN0dXJlQ29udHJvbGxlcjo6
ZGlkSGl0UmVuZGVyVHJlZVNpemVUaHJlc2hvbGQpOgorICAgICAgICAoV2ViS2l0OjpWaWV3R2Vz
dHVyZUNvbnRyb2xsZXI6OnN3aXBlU25hcHNob3RXYXRjaGRvZ1RpbWVyRmlyZWQpOgorICAgICAg
ICAoV2ViS2l0OjpWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OnJlbW92ZVN3aXBlU25hcHNob3QpOgor
ICAgICAgICBUZWFyIGRvd24gdGhlIHN3aXBlIHNuYXBzaG90IGxheWVyLCBhbmQgbWFyayBvdXIg
Y3VycmVudCBnZXN0dXJlIGFzIGNvbXBsZXRlLgorCisgICAgICAgIChXZWJLaXQ6OlZpZXdHZXN0
dXJlQ29udHJvbGxlcjo6ZW5kQWN0aXZlR2VzdHVyZSk6CisgICAgICAgIFNpbXBsaWZ5IGVuZEFj
dGl2ZUdlc3R1cmU7IGl0IG9ubHkgaGFzIHdvcmsgdG8gZG8gZm9yIGEgcGluY2gtem9vbSBnZXN0
dXJlLAorICAgICAgICBhcyB0aG9zZSBhcmUgdGhlIG9ubHkgZ2VzdHVyZXMgd2hlcmUgdGhlIHVz
ZXIgaXMgZGlyZWN0bHkgaW4gY29udHJvbCBvZiB3aGVuIHRoZXkgZW5kLgorCisgICAgICAgICog
VUlQcm9jZXNzL21hYy9WaWV3U25hcHNob3RTdG9yZS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvci5oLgor
ICAgICAgICAoV2ViS2l0OjpWaWV3U25hcHNob3RTdG9yZTo6ZGlzYWJsZVNuYXBzaG90dGluZyk6
CisgICAgICAgIChXZWJLaXQ6OlZpZXdTbmFwc2hvdFN0b3JlOjplbmFibGVTbmFwc2hvdHRpbmcp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvVmlld1NuYXBzaG90U3RvcmUubW06IEFkZGVkLgor
ICAgICAgICAoV2ViS2l0OjpWaWV3U25hcHNob3RTdG9yZTo6Vmlld1NuYXBzaG90U3RvcmUpOgor
ICAgICAgICAoV2ViS2l0OjpWaWV3U25hcHNob3RTdG9yZTo6flZpZXdTbmFwc2hvdFN0b3JlKToK
KyAgICAgICAgKFdlYktpdDo6Vmlld1NuYXBzaG90U3RvcmU6OnNoYXJlZCk6CisgICAgICAgIChX
ZWJLaXQ6OlZpZXdTbmFwc2hvdFN0b3JlOjp0YWtlU25hcHNob3QpOgorICAgICAgICAoV2ViS2l0
OjpWaWV3U25hcHNob3RTdG9yZTo6Z2V0U25hcHNob3RBbmRSZW5kZXJUcmVlU2l6ZSk6CisgICAg
ICAgIEFkZCBhIHNpZGUgbWFwIG9mIHNuYXBzaG90cywgd2hpY2ggYXJlIGlkZW50aWZpZWQgYnkg
VVVJRHMgKHdoaWNoIGFyZSBzdG9yZWQKKyAgICAgICAgaW5zaWRlIHRoZSBhc3NvY2lhdGVkIFdl
YkJhY2tGb3J3YXJkTGlzdEl0ZW0pLgorICAgICAgICBXZSB1c2Ugd2luZG93IHNlcnZlciBzbmFw
c2hvdHMsIHNpbWlsYXIgdG8gV2ViS2l0VGVzdFJ1bm5lciwgdG8gbWF0Y2ggcHJlY2lzZWx5Cisg
ICAgICAgIHRoZSBwYWdlIGFzIHJlbmRlcmVkIG9uLXNjcmVlbi4KKyAgICAgICAgQ3VycmVudGx5
IHRoZXJlIGlzIG5vIG1hbmFnZW1lbnQgb2YgdGhlIHNpemUgb2YgdGhpcyBjYWNoZSwgYW5kIGl0
IHdpbGwgZ3JvdyB3aXRob3V0CisgICAgICAgIGJvdW5kOyBiZXR0ZXIgY2FjaGUgbWFuYWdlbWVu
dCBpcyBjb21pbmcgaW4gYSBmdXR1cmUgcGF0Y2guCisKKyAgICAgICAgKiBXZWJLaXQyLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvVmll
d0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlZpZXdHZXN0
dXJlR2VvbWV0cnlDb2xsZWN0b3I6OlZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3IpOgorICAg
ICAgICAoV2ViS2l0OjpWaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yOjptYWluRnJhbWVEaWRM
YXlvdXQpOgorICAgICAgICAoV2ViS2l0OjpWaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yOjpy
ZW5kZXJUcmVlU2l6ZU5vdGlmaWNhdGlvblRpbWVyRmlyZWQpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUGFnZS9WaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yLmg6CisgICAgICAgIChXZWJL
aXQ6OlZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3I6OnNldFJlbmRlclRyZWVTaXplTm90aWZp
Y2F0aW9uVGhyZXNob2xkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvVmlld0dlc3R1
cmVHZW9tZXRyeUNvbGxlY3Rvci5tZXNzYWdlcy5pbjoKKyAgICAgICAgVmlld0dlc3R1cmVDb250
cm9sbGVyIHB1c2hlcyBhIHJlbmRlci10cmVlIHNpemUgdGhyZXNob2xkIHRvIHRoZSBXZWJQcm9j
ZXNzOworICAgICAgICBWaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yICh3aG9zZSBuYW1lIGlz
IG5vdyBtb3JlIHVuZm9ydHVuYXRlIHRoYW4gYmVmb3JlKQorICAgICAgICBtb25pdG9ycyByZW5k
ZXItdHJlZSBzaXplIGNoYW5nZXMgYW5kIGluZm9ybXMgVmlld0dlc3R1cmVDb250cm9sbGVyIHdo
ZW4KKyAgICAgICAgaXQgcmVhY2hlcyB0aGF0IHRocmVzaG9sZCB2aWEgdGhlICdEaWRIaXRSZW5k
ZXJUcmVlU2l6ZVRocmVzaG9sZCcgbWVzc2FnZS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlkQ2hhbmdlU2Nyb2xsT2Zmc2V0KToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6
OnVwZGF0ZU1haW5GcmFtZVNjcm9sbE9mZnNldFBpbm5pbmcpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlOjptYWluRnJhbWVEaWRMYXlvdXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpk
aWRDb21taXRMb2FkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgor
ICAgICAgICBSZW5hbWUgV2ViUGFnZTo6ZGlkQ2hhbmdlU2Nyb2xsT2Zmc2V0Rm9yTWFpbkZyYW1l
IHRvCisgICAgICAgIHVwZGF0ZU1haW5GcmFtZVNjcm9sbE9mZnNldFBpbm5pbmcsIHdoaWNoIGJl
dHRlciBkZXNjcmliZXMgd2hhdCBpdAorICAgICAgICBhY3R1YWxseSBkb2VzLiBDYWxsIGl0IHdo
ZW4gYSBsb2FkIGNvbXBsZXRlcywgc28gdGhhdCB3ZSBoYXZlIHZhbGlkCisgICAgICAgIHBpbm5p
bmcgc3RhdGUgYmVmb3JlIHRoZSBmaXJzdCBzY3JvbGwgZXZlbnQgY29tZXMgaW4uCisKKzIwMTQt
MDEtMjEgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisKICAgICAgICAg
TWFrZSBWaWV3R2VzdHVyZUNvbnRyb2xsZXIgT2JqLUMrKwogICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI3Mzg1CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9XZWJCYWNrRm9yd2FyZExpc3RJdGVtLmggYi9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvV2ViQmFja0ZvcndhcmRMaXN0SXRlbS5oCmluZGV4IGIxMzlmYTAuLjE3OTIzMDIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJCYWNrRm9yd2FyZExpc3RJdGVtLmgK
KysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkJhY2tGb3J3YXJkTGlzdEl0ZW0uaApAQCAt
MzEsOCArMzEsOCBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3Bh
Y2UgSVBDIHsKLSAgICBjbGFzcyBBcmd1bWVudERlY29kZXI7Ci0gICAgY2xhc3MgQXJndW1lbnRF
bmNvZGVyOworY2xhc3MgQXJndW1lbnREZWNvZGVyOworY2xhc3MgQXJndW1lbnRFbmNvZGVyOwog
fQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTYwLDYgKzYwLDkgQEAgcHVibGljOgogICAgIHZv
aWQgc2V0QmFja0ZvcndhcmREYXRhKGNvbnN0IHVpbnQ4X3QqIGJ1ZmZlciwgc2l6ZV90IHNpemUp
OwogICAgIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgYmFja0ZvcndhcmREYXRhKCkgY29uc3QgeyBy
ZXR1cm4gbV9iYWNrRm9yd2FyZERhdGE7IH0KIAorICAgIHZvaWQgc2V0U25hcHNob3RVVUlEKGNv
bnN0IFN0cmluZyYgdXVpZCkgeyBtX3NuYXBzaG90VVVJRCA9IHV1aWQ7IH0KKyAgICBjb25zdCBT
dHJpbmcmIHNuYXBzaG90VVVJRCgpIGNvbnN0IHsgcmV0dXJuIG1fc25hcHNob3RVVUlEOyB9CisK
ICAgICB2b2lkIGVuY29kZShJUEM6OkFyZ3VtZW50RW5jb2RlciYpIGNvbnN0OwogICAgIHN0YXRp
YyBQYXNzUmVmUHRyPFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0+IGRlY29kZShJUEM6OkFyZ3VtZW50
RGVjb2RlciYpOwogCkBAIC03Myw2ICs3Niw3IEBAIHByaXZhdGU6CiAgICAgU3RyaW5nIG1fdGl0
bGU7CiAgICAgdWludDY0X3QgbV9pdGVtSUQ7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IG1fYmFja0Zv
cndhcmREYXRhOworICAgIFN0cmluZyBtX3NuYXBzaG90VVVJRDsKIH07CiAKIHR5cGVkZWYgVmVj
dG9yPFJlZlB0cjxXZWJCYWNrRm9yd2FyZExpc3RJdGVtPj4gQmFja0ZvcndhcmRMaXN0SXRlbVZl
Y3RvcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcmVmZXJlbmNlc1N0
b3JlLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJlZmVyZW5jZXNTdG9yZS5oCmluZGV4
IGU5ZjcxMTQuLjMyYWRkNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQ
cmVmZXJlbmNlc1N0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByZWZlcmVu
Y2VzU3RvcmUuaApAQCAtMTc5LDYgKzE3OSw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogICAgIG1h
Y3JvKFVzZUxlZ2FjeVRleHRBbGlnblBvc2l0aW9uZWRFbGVtZW50QmVoYXZpb3IsIHVzZUxlZ2Fj
eVRleHRBbGlnblBvc2l0aW9uZWRFbGVtZW50QmVoYXZpb3IsIEJvb2wsIGJvb2wsIGZhbHNlKSBc
CiAgICAgbWFjcm8oU3BhdGlhbE5hdmlnYXRpb25FbmFibGVkLCBzcGF0aWFsTmF2aWdhdGlvbkVu
YWJsZWQsIEJvb2wsIGJvb2wsIGZhbHNlKSBcCiAgICAgbWFjcm8oTWVkaWFTb3VyY2VFbmFibGVk
LCBtZWRpYVNvdXJjZUVuYWJsZWQsIEJvb2wsIGJvb2wsIGZhbHNlKSBcCisgICAgbWFjcm8oVmll
d0dlc3R1cmVEZWJ1Z2dpbmdFbmFibGVkLCB2aWV3R2VzdHVyZURlYnVnZ2luZ0VuYWJsZWQsIEJv
b2wsIGJvb2wsIGZhbHNlKSBcCiAgICAgXAogCiAjZGVmaW5lIEZPUl9FQUNIX1dFQktJVF9ET1VC
TEVfUFJFRkVSRU5DRShtYWNybykgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXMuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9DL1dLUHJlZmVyZW5jZXMuY3BwCmluZGV4IGVkZTA5ZDkuLmQ1MmQyNDQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNlcy5jcHAKQEAgLTEyNDUs
MyArMTI0NSwxMyBAQCBib29sIFdLUHJlZmVyZW5jZXNHZXRNZWRpYVNvdXJjZUVuYWJsZWQoV0tQ
cmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNlc1JlZikKIHsKICAgICByZXR1cm4gdG9JbXBsKHByZWZl
cmVuY2VzUmVmKS0+bWVkaWFTb3VyY2VFbmFibGVkKCk7CiB9CisKK3ZvaWQgV0tQcmVmZXJlbmNl
c1NldFZpZXdHZXN0dXJlRGVidWdnaW5nRW5hYmxlZChXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVu
Y2VzUmVmLCBib29sIGVuYWJsZWQpCit7CisgICAgdG9JbXBsKHByZWZlcmVuY2VzUmVmKS0+c2V0
Vmlld0dlc3R1cmVEZWJ1Z2dpbmdFbmFibGVkKGVuYWJsZWQpOworfQorCitib29sIFdLUHJlZmVy
ZW5jZXNHZXRWaWV3R2VzdHVyZURlYnVnZ2luZ0VuYWJsZWQoV0tQcmVmZXJlbmNlc1JlZiBwcmVm
ZXJlbmNlc1JlZikKK3sKKyAgICByZXR1cm4gdG9JbXBsKHByZWZlcmVuY2VzUmVmKS0+dmlld0dl
c3R1cmVEZWJ1Z2dpbmdFbmFibGVkKCk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNlc1ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzUHJpdmF0ZS5oCmluZGV4IDg2N2M5OTcuLjgwODUy
NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVu
Y2VzUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1ByZWZl
cmVuY2VzUHJpdmF0ZS5oCkBAIC0zMTQsNiArMzE0LDEwIEBAIFdLX0VYUE9SVCBib29sIFdLUHJl
ZmVyZW5jZXNVc2VMZWdhY3lUZXh0QWxpZ25Qb3NpdGlvbmVkRWxlbWVudEJlaGF2aW9yKFdLUHJl
ZmVyCiBXS19FWFBPUlQgdm9pZCBXS1ByZWZlcmVuY2VzU2V0TWVkaWFTb3VyY2VFbmFibGVkKFdL
UHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXNSZWYsIGJvb2wgZW5hYmxlZCk7CiBXS19FWFBPUlQg
Ym9vbCBXS1ByZWZlcmVuY2VzR2V0TWVkaWFTb3VyY2VFbmFibGVkKFdLUHJlZmVyZW5jZXNSZWYg
cHJlZmVyZW5jZXNSZWYpOwogCisvLyBEZWZhdWx0IHRvIGZhbHNlLgorV0tfRVhQT1JUIHZvaWQg
V0tQcmVmZXJlbmNlc1NldFZpZXdHZXN0dXJlRGVidWdnaW5nRW5hYmxlZChXS1ByZWZlcmVuY2Vz
UmVmIHByZWZlcmVuY2VzUmVmLCBib29sIGVuYWJsZWQpOworV0tfRVhQT1JUIGJvb2wgV0tQcmVm
ZXJlbmNlc0dldFZpZXdHZXN0dXJlRGVidWdnaW5nRW5hYmxlZChXS1ByZWZlcmVuY2VzUmVmIHBy
ZWZlcmVuY2VzUmVmKTsKKwogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CiAjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tWaWV3UHJpdmF0ZS5oIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ZpZXdQcml2YXRlLmgKaW5kZXgg
MGY3OGMwZC4uOTI4NDkxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1ZpZXdQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1ZpZXdQcml2YXRlLmgKQEAgLTY2LDYgKzY2LDcgQEAKIEBwcm9wZXJ0eSAocmVh
ZG9ubHksIGdldHRlcj1pc1VzaW5nVUlTaWRlQ29tcG9zaXRpbmcpIEJPT0wgdXNpbmdVSVNpZGVD
b21wb3NpdGluZzsKIEBwcm9wZXJ0eSAocmVhZHdyaXRlKSBCT09MIGFsbG93c01hZ25pZmljYXRp
b247CiBAcHJvcGVydHkgKHJlYWR3cml0ZSkgZG91YmxlIG1hZ25pZmljYXRpb247CitAcHJvcGVy
dHkgKHJlYWR3cml0ZSkgQk9PTCBhbGxvd3NCYWNrRm9yd2FyZE5hdmlnYXRpb25HZXN0dXJlczsK
IAogQHByb3BlcnR5KGNvcHksIG5vbmF0b21pYykgTlNDb2xvciAqdW5kZXJsYXlDb2xvcjsKIApA
QCAtODUsNiArODYsOCBAQAogCiAtICh2b2lkKXNldE1hZ25pZmljYXRpb246KGRvdWJsZSltYWdu
aWZpY2F0aW9uIGNlbnRlcmVkQXRQb2ludDooTlNQb2ludClwb2ludDsKIAorLSAodm9pZClzYXZl
QmFja0ZvcndhcmRTbmFwc2hvdEZvckN1cnJlbnRJdGVtOworCiAjZW5kaWYKIAogQGVuZApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tCmluZGV4IDAyYTUzNDguLjY0
ZjExZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmll
dy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcubW0KQEAg
LTUwLDYgKzUwLDcgQEAKICNpbXBvcnQgIlRleHRDaGVja2VyU3RhdGUuaCIKICNpbXBvcnQgIlRp
bGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhUHJveHkuaCIKICNpbXBvcnQgIlZpZXdHZXN0dXJl
Q29udHJvbGxlci5oIgorI2ltcG9ydCAiVmlld1NuYXBzaG90U3RvcmUuaCIKICNpbXBvcnQgIldL
QVBJQ2FzdC5oIgogI2ltcG9ydCAiV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlci5oIgogI2lt
cG9ydCAiV0tQcmludGluZ1ZpZXcuaCIKQEAgLTU3LDYgKzU4LDcgQEAKICNpbXBvcnQgIldLVGV4
dElucHV0V2luZG93Q29udHJvbGxlci5oIgogI2ltcG9ydCAiV0tWaWV3SW50ZXJuYWwuaCIKICNp
bXBvcnQgIldLVmlld1ByaXZhdGUuaCIKKyNpbXBvcnQgIldlYkJhY2tGb3J3YXJkTGlzdC5oIgog
I2ltcG9ydCAiV2ViQ29udGV4dC5oIgogI2ltcG9ydCAiV2ViRXZlbnRGYWN0b3J5LmgiCiAjaW1w
b3J0ICJXZWJLaXQySW5pdGlhbGl6ZS5oIgpAQCAtMjE5LDYgKzIyMSw3IEBAIHN0cnVjdCBXS1Zp
ZXdJbnRlcnByZXRLZXlFdmVudHNQYXJhbWV0ZXJzIHsKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxW
aWV3R2VzdHVyZUNvbnRyb2xsZXI+IF9nZXN0dXJlQ29udHJvbGxlcjsKICAgICBCT09MIF9hbGxv
d3NNYWduaWZpY2F0aW9uOworICAgIEJPT0wgX2FsbG93c0JhY2tGb3J3YXJkTmF2aWdhdGlvbkdl
c3R1cmVzOwogfQogCiBAZW5kCkBAIC0xMDkxLDE2ICsxMDk0LDI1IEBAIE5BVElWRV9NT1VTRV9F
VkVOVF9IQU5ETEVSKHJpZ2h0TW91c2VVcCkKIAogI3VuZGVmIE5BVElWRV9NT1VTRV9FVkVOVF9I
QU5ETEVSCiAKLSNkZWZpbmUgTkFUSVZFX0VWRU5UX0hBTkRMRVIoU2VsZWN0b3IsIFR5cGUpIFwK
LSAgICAtICh2b2lkKVNlbGVjdG9yOihOU0V2ZW50ICopdGhlRXZlbnQgXAotICAgIHsgXAotICAg
ICAgICBOYXRpdmVXZWIjI1R5cGUjI0V2ZW50IHdlYkV2ZW50ID0gTmF0aXZlV2ViIyNUeXBlIyNF
dmVudCh0aGVFdmVudCwgc2VsZik7IFwKLSAgICAgICAgX2RhdGEtPl9wYWdlLT5oYW5kbGUjI1R5
cGUjI0V2ZW50KHdlYkV2ZW50KTsgXAotICAgIH0KKy0gKHZvaWQpX2Vuc3VyZUdlc3R1cmVDb250
cm9sbGVyCit7CisgICAgaWYgKF9kYXRhLT5fZ2VzdHVyZUNvbnRyb2xsZXIpCisgICAgICAgIHJl
dHVybjsKIAotTkFUSVZFX0VWRU5UX0hBTkRMRVIoc2Nyb2xsV2hlZWwsIFdoZWVsKQorICAgIF9k
YXRhLT5fZ2VzdHVyZUNvbnRyb2xsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFZpZXdHZXN0dXJlQ29u
dHJvbGxlcj4oKl9kYXRhLT5fcGFnZSk7Cit9CiAKLSN1bmRlZiBOQVRJVkVfRVZFTlRfSEFORExF
UgorLSAodm9pZClzY3JvbGxXaGVlbDooTlNFdmVudCAqKWV2ZW50Cit7CisgICAgaWYgKF9kYXRh
LT5fYWxsb3dzQmFja0ZvcndhcmROYXZpZ2F0aW9uR2VzdHVyZXMpIHsKKyAgICAgICAgW3NlbGYg
X2Vuc3VyZUdlc3R1cmVDb250cm9sbGVyXTsKKyAgICAgICAgaWYgKF9kYXRhLT5fZ2VzdHVyZUNv
bnRyb2xsZXItPmhhbmRsZVNjcm9sbFdoZWVsRXZlbnQoZXZlbnQpKQorICAgICAgICAgICAgcmV0
dXJuOworICAgIH0KKworICAgIE5hdGl2ZVdlYldoZWVsRXZlbnQgd2ViRXZlbnQgPSBOYXRpdmVX
ZWJXaGVlbEV2ZW50KGV2ZW50LCBzZWxmKTsKKyAgICBfZGF0YS0+X3BhZ2UtPmhhbmRsZVdoZWVs
RXZlbnQod2ViRXZlbnQpOworfQogCiAtICh2b2lkKW1vdXNlTW92ZWQ6KE5TRXZlbnQgKilldmVu
dAogewpAQCAtMjQ2OCw2ICsyNDgwLDExIEBAIHN0YXRpYyBOU1N0cmluZyAqIGNvbnN0IGJhY2tp
bmdQcm9wZXJ0eU9sZFNjYWxlRmFjdG9yS2V5ID0gQCJOU0JhY2tpbmdQcm9wZXJ0eU9sCiAgICAg
X2RhdGEtPl9maW5kSW5kaWNhdG9yV2luZG93LT5zZXRGaW5kSW5kaWNhdG9yKGZpbmRJbmRpY2F0
b3IsIGZhZGVPdXQsIGFuaW1hdGUpOwogfQogCistIChDQUxheWVyICopX3Jvb3RMYXllcgorewor
ICAgIHJldHVybiBbX2RhdGEtPl9sYXllckhvc3RpbmdWaWV3IGxheWVyXTsKK30KKwogLSAodm9p
ZClfc2V0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGVSb290TGF5ZXI6KENBTGF5ZXIgKilyb290
TGF5ZXIKIHsKICAgICBbQ0FUcmFuc2FjdGlvbiBiZWdpbl07CkBAIC0yODIzLDYgKzI4NDAsMTEg
QEAgc3RhdGljIE5TU3RyaW5nICpwYXRoV2l0aFVuaXF1ZUZpbGVuYW1lRm9yUGF0aChOU1N0cmlu
ZyAqcGF0aCkKIAogQGltcGxlbWVudGF0aW9uIFdLVmlldyAoUHJpdmF0ZSkKIAorLSAodm9pZClz
YXZlQmFja0ZvcndhcmRTbmFwc2hvdEZvckN1cnJlbnRJdGVtCit7CisgICAgVmlld1NuYXBzaG90
U3RvcmU6OnNoYXJlZCgpLnRha2VTbmFwc2hvdCgqX2RhdGEtPl9wYWdlKTsKK30KKwogLSAodm9p
ZClfcmVnaXN0ZXJEcmFnZ2VkVHlwZXMKIHsKICAgICBOU011dGFibGVTZXQgKnR5cGVzID0gW1tO
U011dGFibGVTZXQgYWxsb2NdIGluaXRXaXRoQXJyYXk6UGFzdGVib2FyZFR5cGVzOjpmb3JFZGl0
aW5nKCldOwpAQCAtMzE5MywxNCArMzIxNSw2IEBAIHN0YXRpYyBOU1N0cmluZyAqcGF0aFdpdGhV
bmlxdWVGaWxlbmFtZUZvclBhdGgoTlNTdHJpbmcgKnBhdGgpCiAgICAgcmV0dXJuIE5POwogfQog
Ci0tICh2b2lkKV9lbnN1cmVHZXN0dXJlQ29udHJvbGxlcgotewotICAgIGlmIChfZGF0YS0+X2dl
c3R1cmVDb250cm9sbGVyKQotICAgICAgICByZXR1cm47Ci0KLSAgICBfZGF0YS0+X2dlc3R1cmVD
b250cm9sbGVyID0gc3RkOjptYWtlX3VuaXF1ZTxWaWV3R2VzdHVyZUNvbnRyb2xsZXI+KCpfZGF0
YS0+X3BhZ2UpOwotfQotCiAtICh2b2lkKXNldEFsbG93c01hZ25pZmljYXRpb246KEJPT0wpYWxs
b3dzTWFnbmlmaWNhdGlvbgogewogICAgIF9kYXRhLT5fYWxsb3dzTWFnbmlmaWNhdGlvbiA9IGFs
bG93c01hZ25pZmljYXRpb247CkBAIC0zMjExLDYgKzMyMjUsMTYgQEAgc3RhdGljIE5TU3RyaW5n
ICpwYXRoV2l0aFVuaXF1ZUZpbGVuYW1lRm9yUGF0aChOU1N0cmluZyAqcGF0aCkKICAgICByZXR1
cm4gX2RhdGEtPl9hbGxvd3NNYWduaWZpY2F0aW9uOwogfQogCistICh2b2lkKXNldEFsbG93c0Jh
Y2tGb3J3YXJkTmF2aWdhdGlvbkdlc3R1cmVzOihCT09MKWFsbG93c0JhY2tGb3J3YXJkTmF2aWdh
dGlvbkdlc3R1cmVzCit7CisgICAgX2RhdGEtPl9hbGxvd3NCYWNrRm9yd2FyZE5hdmlnYXRpb25H
ZXN0dXJlcyA9IGFsbG93c0JhY2tGb3J3YXJkTmF2aWdhdGlvbkdlc3R1cmVzOworfQorCistIChC
T09MKWFsbG93c0JhY2tGb3J3YXJkTmF2aWdhdGlvbkdlc3R1cmVzCit7CisgICAgcmV0dXJuIF9k
YXRhLT5fYWxsb3dzQmFja0ZvcndhcmROYXZpZ2F0aW9uR2VzdHVyZXM7Cit9CisKIC0gKHZvaWQp
bWFnbmlmeVdpdGhFdmVudDooTlNFdmVudCAqKWV2ZW50CiB7CiAgICAgaWYgKCFfZGF0YS0+X2Fs
bG93c01hZ25pZmljYXRpb24pIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvbWFjL1dLVmlld0ludGVybmFsLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L21hYy9XS1ZpZXdJbnRlcm5hbC5oCmluZGV4IDQ4ZTZiOTMuLjY4YTEwMmIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlld0ludGVybmFsLmgKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3SW50ZXJuYWwuaApAQCAtMzEs
MjEgKzMxLDIyIEBACiAjaW1wb3J0IDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBJUEMgewot
ICAgIGNsYXNzIERhdGFSZWZlcmVuY2U7CitjbGFzcyBEYXRhUmVmZXJlbmNlOwogfQogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7Ci0gICAgc3RydWN0IEtleXByZXNzQ29tbWFuZDsKLSAgICBjbGFzcyBJ
bWFnZTsKLSAgICBjbGFzcyBTaGFyZWRCdWZmZXI7CitzdHJ1Y3QgS2V5cHJlc3NDb21tYW5kOwor
Y2xhc3MgSW1hZ2U7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQg
ewotICAgIGNsYXNzIERyYXdpbmdBcmVhUHJveHk7Ci0gICAgY2xhc3MgRmluZEluZGljYXRvcjsK
LSAgICBjbGFzcyBMYXllclRyZWVDb250ZXh0OwotICAgIHN0cnVjdCBDb2xvclNwYWNlRGF0YTsK
LSAgICBzdHJ1Y3QgRWRpdG9yU3RhdGU7CitjbGFzcyBEcmF3aW5nQXJlYVByb3h5OworY2xhc3Mg
RmluZEluZGljYXRvcjsKK2NsYXNzIExheWVyVHJlZUNvbnRleHQ7CitjbGFzcyBWaWV3R2VzdHVy
ZUNvbnRyb2xsZXI7CitzdHJ1Y3QgQ29sb3JTcGFjZURhdGE7CitzdHJ1Y3QgRWRpdG9yU3RhdGU7
CiB9CiAKIEBjbGFzcyBXS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyOwpAQCAtNjksNiArNzAs
NyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIC0gKHZvaWQpX3NldEZpbmRJbmRpY2F0b3I6KFBhc3NS
ZWZQdHI8V2ViS2l0OjpGaW5kSW5kaWNhdG9yPilmaW5kSW5kaWNhdG9yIGZhZGVPdXQ6KEJPT0wp
ZmFkZU91dCBhbmltYXRlOihCT09MKWFuaW1hdGU7CiAKIC0gKHZvaWQpX3NldEFjY2VsZXJhdGVk
Q29tcG9zaXRpbmdNb2RlUm9vdExheWVyOihDQUxheWVyICopcm9vdExheWVyOworLSAoQ0FMYXll
ciAqKV9yb290TGF5ZXI7CiAKIC0gKHZvaWQpX3NldEFjY2Vzc2liaWxpdHlXZWJQcm9jZXNzVG9r
ZW46KE5TRGF0YSAqKWRhdGE7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHAKaW5kZXggZDIzZGYyNy4uNDg5YzllNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5jcHAKQEAgLTExOCw2ICsxMTgsMTAgQEAKICNpbmNsdWRlIDx3dGYvUmVm
Q291bnRlZExlYWtDb3VudGVyLmg+CiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKE1BQykKKyNpbmNs
dWRlICJWaWV3U25hcHNob3RTdG9yZS5oIgorI2VuZGlmCisKIC8vIFRoaXMgY29udHJvbHMgd2hh
dCBzdHJhdGVneSB3ZSB1c2UgZm9yIG1vdXNlIHdoZWVsIGNvYWxlc2NpbmcuCiAjZGVmaW5lIE1F
UkdFX1dIRUVMX0VWRU5UUyAxCiAKQEAgLTczOCw2ICs3NDIsMTMgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OnJlbG9hZChib29sIHJlbG9hZEZyb21PcmlnaW4pCiAgICAgbV9wcm9jZXNzLT5yZXNwb25z
aXZlbmVzc1RpbWVyKCktPnN0YXJ0KCk7CiB9CiAKK3ZvaWQgV2ViUGFnZVByb3h5Ojp0YWtlVmll
d1NuYXBzaG90KCkKK3sKKyNpZiBQTEFURk9STShNQUMpCisgICAgVmlld1NuYXBzaG90U3RvcmU6
OnNoYXJlZCgpLnRha2VTbmFwc2hvdCgqdGhpcyk7CisjZW5kaWYKK30KKwogdm9pZCBXZWJQYWdl
UHJveHk6OmdvRm9yd2FyZCgpCiB7CiAgICAgaWYgKGlzVmFsaWQoKSAmJiAhY2FuR29Gb3J3YXJk
KCkpCkBAIC03NDcsNiArNzU4LDggQEAgdm9pZCBXZWJQYWdlUHJveHk6OmdvRm9yd2FyZCgpCiAg
ICAgaWYgKCFmb3J3YXJkSXRlbSkKICAgICAgICAgcmV0dXJuOwogCisgICAgdGFrZVZpZXdTbmFw
c2hvdCgpOworCiAgICAgYXV0byB0cmFuc2FjdGlvbiA9IG1fcGFnZUxvYWRTdGF0ZS50cmFuc2Fj
dGlvbigpOwogCiAgICAgbV9wYWdlTG9hZFN0YXRlLnNldFBlbmRpbmdBUElSZXF1ZXN0VVJMKHRy
YW5zYWN0aW9uLCBmb3J3YXJkSXRlbS0+dXJsKCkpOwpAQCAtNzc0LDYgKzc4Nyw4IEBAIHZvaWQg
V2ViUGFnZVByb3h5Ojpnb0JhY2soKQogICAgIGlmICghYmFja0l0ZW0pCiAgICAgICAgIHJldHVy
bjsKIAorICAgIHRha2VWaWV3U25hcHNob3QoKTsKKwogICAgIGF1dG8gdHJhbnNhY3Rpb24gPSBt
X3BhZ2VMb2FkU3RhdGUudHJhbnNhY3Rpb24oKTsKIAogICAgIG1fcGFnZUxvYWRTdGF0ZS5zZXRQ
ZW5kaW5nQVBJUmVxdWVzdFVSTCh0cmFuc2FjdGlvbiwgYmFja0l0ZW0tPnVybCgpKTsKQEAgLTc5
OCw2ICs4MTMsOCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Z29Ub0JhY2tGb3J3YXJkSXRlbShXZWJC
YWNrRm9yd2FyZExpc3RJdGVtKiBpdGVtKQogICAgICAgICByZWF0dGFjaFRvV2ViUHJvY2Vzc1dp
dGhJdGVtKGl0ZW0pOwogICAgICAgICByZXR1cm47CiAgICAgfQorCisgICAgdGFrZVZpZXdTbmFw
c2hvdCgpOwogICAgIAogICAgIGF1dG8gdHJhbnNhY3Rpb24gPSBtX3BhZ2VMb2FkU3RhdGUudHJh
bnNhY3Rpb24oKTsKIApAQCAtMjEwMCw4ICsyMTE3LDEwIEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpk
aWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFN0
cmluCiAgICAgTUVTU0FHRV9DSEVDSyhmcmFtZSk7CiAgICAgTUVTU0FHRV9DSEVDS19VUkwodXJs
KTsKIAotICAgIGlmIChmcmFtZS0+aXNNYWluRnJhbWUoKSkKKyAgICBpZiAoZnJhbWUtPmlzTWFp
bkZyYW1lKCkpIHsKKyAgICAgICAgdGFrZVZpZXdTbmFwc2hvdCgpOwogICAgICAgICBtX3BhZ2VM
b2FkU3RhdGUuZGlkU3RhcnRQcm92aXNpb25hbExvYWQodHJhbnNhY3Rpb24sIHVybCwgdW5yZWFj
aGFibGVVUkwpOworICAgIH0KIAogICAgIGZyYW1lLT5zZXRVbnJlYWNoYWJsZVVSTCh1bnJlYWNo
YWJsZVVSTCk7CiAgICAgZnJhbWUtPmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKHVybCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggNzI0MGRjMi4uNzFlMDQwOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMTE2MCw2ICsxMTYw
LDggQEAgcHJpdmF0ZToKICAgICB2b2lkIGZpbmRQbHVnaW4oY29uc3QgU3RyaW5nJiBtaW1lVHlw
ZSwgdWludDMyX3QgcHJvY2Vzc1R5cGUsIGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBjb25zdCBT
dHJpbmcmIGZyYW1lVVJMU3RyaW5nLCBjb25zdCBTdHJpbmcmIHBhZ2VVUkxTdHJpbmcsIGJvb2wg
YWxsb3dPbmx5QXBwbGljYXRpb25QbHVnaW5zLCB1aW50NjRfdCYgcGx1Z2luUHJvY2Vzc1Rva2Vu
LCBTdHJpbmcmIG5ld01JTUVUeXBlLCB1aW50MzJfdCYgcGx1Z2luTG9hZFBvbGljeSwgU3RyaW5n
JiB1bmF2YWlsYWJpbGl0eURlc2NyaXB0aW9uKTsKICNlbmRpZgogCisgICAgdm9pZCB0YWtlVmll
d1NuYXBzaG90KCk7CisKICAgICBQYWdlQ2xpZW50JiBtX3BhZ2VDbGllbnQ7CiAgICAgV2ViTG9h
ZGVyQ2xpZW50IG1fbG9hZGVyQ2xpZW50OwogICAgIFdlYlBvbGljeUNsaWVudCBtX3BvbGljeUNs
aWVudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9jZi9XZWJCYWNrRm9y
d2FyZExpc3RDRi5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvY2YvV2ViQmFja0Zvcndh
cmRMaXN0Q0YuY3BwCmluZGV4IDA4YTQ2ZTIuLmVkMjIxMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9jZi9XZWJCYWNrRm9yd2FyZExpc3RDRi5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL2NmL1dlYkJhY2tGb3J3YXJkTGlzdENGLmNwcApAQCAtMSw1ICsx
LDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTEsIDIwMTIgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwLCAyMDExLCAyMDEyLCAy
MDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtNTgsNiArNTgsNyBAQCBzdGF0aWMgQ0ZTdHJpbmdSZWYgc2Vzc2lvbkhp
c3RvcnlFbnRyeVRpdGxlS2V5ID0gQ0ZTVFIoIlNlc3Npb25IaXN0b3J5RW50cnlUaXRsZQogc3Rh
dGljIENGU3RyaW5nUmVmIHNlc3Npb25IaXN0b3J5RW50cnlVUkxLZXkgPSBDRlNUUigiU2Vzc2lv
bkhpc3RvcnlFbnRyeVVSTCIpOwogc3RhdGljIENGU3RyaW5nUmVmIHNlc3Npb25IaXN0b3J5RW50
cnlPcmlnaW5hbFVSTEtleSA9IENGU1RSKCJTZXNzaW9uSGlzdG9yeUVudHJ5T3JpZ2luYWxVUkwi
KTsKIHN0YXRpYyBDRlN0cmluZ1JlZiBzZXNzaW9uSGlzdG9yeUVudHJ5RGF0YUtleSA9IENGU1RS
KCJTZXNzaW9uSGlzdG9yeUVudHJ5RGF0YSIpOworc3RhdGljIENGU3RyaW5nUmVmIHNlc3Npb25I
aXN0b3J5RW50cnlTbmFwc2hvdFVVSURLZXkgPSBDRlNUUigiU2Vzc2lvbkhpc3RvcnlFbnRyeVNu
YXBzaG90VVVJRCIpOwogCiBzdGF0aWMgYm9vbCBleHRyYWN0QmFja0ZvcndhcmRMaXN0RW50cmll
c0Zyb21BcnJheShDRkFycmF5UmVmLCBCYWNrRm9yd2FyZExpc3RJdGVtVmVjdG9yJik7CiAKQEAg
LTEwNCwxNSArMTA1LDE2IEBAIENGRGljdGlvbmFyeVJlZiBXZWJCYWNrRm9yd2FyZExpc3Q6OmNy
ZWF0ZUNGRGljdGlvbmFyeVJlcHJlc2VudGF0aW9uKFdlYlBhZ2VQcm94CiAgICAgICAgIFJldGFp
blB0cjxDRlN0cmluZ1JlZj4gdXJsID0gbV9lbnRyaWVzW2ldLT51cmwoKS5jcmVhdGVDRlN0cmlu
ZygpOwogICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHRpdGxlID0gbV9lbnRyaWVzW2ld
LT50aXRsZSgpLmNyZWF0ZUNGU3RyaW5nKCk7CiAgICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1Jl
Zj4gb3JpZ2luYWxVUkwgPSBtX2VudHJpZXNbaV0tPm9yaWdpbmFsVVJMKCkuY3JlYXRlQ0ZTdHJp
bmcoKTsKKyAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiB1dWlkID0gbV9lbnRyaWVzW2ld
LT5zbmFwc2hvdFVVSUQoKS5jcmVhdGVDRlN0cmluZygpOwogCiAgICAgICAgIC8vIEZJWE1FOiBU
aGlzIHVzZXMgdGhlIElQQyBkYXRhIGVuY29kaW5nIGZvcm1hdCwgd2hpY2ggbWVhbnMgdGhhdCB3
aGVuZXZlciB3ZSBjaGFuZ2UgdGhlIElQQyBlbmNvZGluZyB3ZSBuZWVkIHRvIGJ1bXAgdGhlIEN1
cnJlbnRTZXNzaW9uU3RhdGVEYXRhVmVyc2lvbgogICAgICAgICAvLyBjb25zdGFudCBpbiBXZWJQ
YWdlUHJveHlDRi5jcHAuIFRoZSBJUEMgZGF0YSBmb3JtYXQgaXMgbWVhbnQgdG8gYmUgYW4gaW1w
bGVtZW50YXRpb24gZGV0YWlsLCBhbmQgbm90IHNvbWV0aGluZyB0aGF0IHNob3VsZCBiZSB3cml0
dGVuIHRvIGRpc2suCiAgICAgICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IGVudHJ5RGF0YSA9IGFk
b3B0Q0YoQ0ZEYXRhQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIG1fZW50cmllc1tpXS0+YmFj
a0ZvcndhcmREYXRhKCkuZGF0YSgpLCBtX2VudHJpZXNbaV0tPmJhY2tGb3J3YXJkRGF0YSgpLnNp
emUoKSkpOwotICAgICAgICAKLSAgICAgICAgY29uc3Qgdm9pZCoga2V5c1s0XSA9IHsgc2Vzc2lv
bkhpc3RvcnlFbnRyeVVSTEtleSwgc2Vzc2lvbkhpc3RvcnlFbnRyeVRpdGxlS2V5LCBzZXNzaW9u
SGlzdG9yeUVudHJ5T3JpZ2luYWxVUkxLZXksIHNlc3Npb25IaXN0b3J5RW50cnlEYXRhS2V5IH07
Ci0gICAgICAgIGNvbnN0IHZvaWQqIHZhbHVlc1s0XSA9IHsgdXJsLmdldCgpLCB0aXRsZS5nZXQo
KSwgb3JpZ2luYWxVUkwuZ2V0KCksIGVudHJ5RGF0YS5nZXQoKSB9OwogCi0gICAgICAgIFJldGFp
blB0cjxDRkRpY3Rpb25hcnlSZWY+IGVudHJ5RGljdGlvbmFyeSA9IGFkb3B0Q0YoQ0ZEaWN0aW9u
YXJ5Q3JlYXRlKDAsIGtleXMsIHZhbHVlcywgNCwgJmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJh
Y2tzLCAma0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNhbGxCYWNrcykpOworICAgICAgICBjb25zdCB2
b2lkKiBrZXlzWzVdID0geyBzZXNzaW9uSGlzdG9yeUVudHJ5VVJMS2V5LCBzZXNzaW9uSGlzdG9y
eUVudHJ5VGl0bGVLZXksIHNlc3Npb25IaXN0b3J5RW50cnlPcmlnaW5hbFVSTEtleSwgc2Vzc2lv
bkhpc3RvcnlFbnRyeURhdGFLZXksIHNlc3Npb25IaXN0b3J5RW50cnlTbmFwc2hvdFVVSURLZXkg
fTsKKyAgICAgICAgY29uc3Qgdm9pZCogdmFsdWVzWzVdID0geyB1cmwuZ2V0KCksIHRpdGxlLmdl
dCgpLCBvcmlnaW5hbFVSTC5nZXQoKSwgZW50cnlEYXRhLmdldCgpLCB1dWlkLmdldCgpIH07CisK
KyAgICAgICAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gZW50cnlEaWN0aW9uYXJ5ID0gYWRv
cHRDRihDRkRpY3Rpb25hcnlDcmVhdGUoMCwga2V5cywgdmFsdWVzLCA1LCAma0NGVHlwZURpY3Rp
b25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKSk7CiAg
ICAgICAgIENGQXJyYXlBcHBlbmRWYWx1ZShlbnRyaWVzLmdldCgpLCBlbnRyeURpY3Rpb25hcnku
Z2V0KCkpOwogICAgIH0KICAgICAgICAgCkBAIC0zMDksMTMgKzMxMSwyMSBAQCBzdGF0aWMgYm9v
bCBleHRyYWN0QmFja0ZvcndhcmRMaXN0RW50cmllc0Zyb21BcnJheShDRkFycmF5UmVmIGNmRW50
cmllcywgQmFja0ZvcgogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAKKyAg
ICAgICAgQ0ZTdHJpbmdSZWYgc25hcHNob3RVVUlEID0gKENGU3RyaW5nUmVmKUNGRGljdGlvbmFy
eUdldFZhbHVlKGVudHJ5RGljdGlvbmFyeSwgc2Vzc2lvbkhpc3RvcnlFbnRyeVNuYXBzaG90VVVJ
REtleSk7CisgICAgICAgIGlmICghc25hcHNob3RVVUlEIHx8IENGR2V0VHlwZUlEKHNuYXBzaG90
VVVJRCkgIT0gQ0ZTdHJpbmdHZXRUeXBlSUQoKSkgeworICAgICAgICAgICAgTE9HKFNlc3Npb25T
dGF0ZSwgIldlYkJhY2tGb3J3YXJkTGlzdCBlbnRyeSBhdCBpbmRleCAlaSBkb2VzIG5vdCBoYXZl
IGEgdmFsaWQgc25hcHNob3QgVVVJRCIsIChpbnQpaSk7CisgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgIH0KKwogICAgICAgICBDRkRhdGFSZWYgYmFja0ZvcndhcmREYXRhID0gKENG
RGF0YVJlZilDRkRpY3Rpb25hcnlHZXRWYWx1ZShlbnRyeURpY3Rpb25hcnksIHNlc3Npb25IaXN0
b3J5RW50cnlEYXRhS2V5KTsKICAgICAgICAgaWYgKCFiYWNrRm9yd2FyZERhdGEgfHwgQ0ZHZXRU
eXBlSUQoYmFja0ZvcndhcmREYXRhKSAhPSBDRkRhdGFHZXRUeXBlSUQoKSkgewogICAgICAgICAg
ICAgTE9HKFNlc3Npb25TdGF0ZSwgIldlYkJhY2tGb3J3YXJkTGlzdCBlbnRyeSBhdCBpbmRleCAl
aSBkb2VzIG5vdCBoYXZlIGJhY2svZm9yd2FyZCBkYXRhIiwgKGludClpKTsKICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgZW50cmllcy5hcHBl
bmQoV2ViQmFja0ZvcndhcmRMaXN0SXRlbTo6Y3JlYXRlKG9yaWdpbmFsVVJMLCBlbnRyeVVSTCwg
ZW50cnlUaXRsZSwgQ0ZEYXRhR2V0Qnl0ZVB0cihiYWNrRm9yd2FyZERhdGEpLCBDRkRhdGFHZXRM
ZW5ndGgoYmFja0ZvcndhcmREYXRhKSwgZ2VuZXJhdGVXZWJCYWNrRm9yd2FyZEl0ZW1JRCgpKSk7
CisKKyAgICAgICAgYXV0byBpdGVtID0gV2ViQmFja0ZvcndhcmRMaXN0SXRlbTo6Y3JlYXRlKG9y
aWdpbmFsVVJMLCBlbnRyeVVSTCwgZW50cnlUaXRsZSwgQ0ZEYXRhR2V0Qnl0ZVB0cihiYWNrRm9y
d2FyZERhdGEpLCBDRkRhdGFHZXRMZW5ndGgoYmFja0ZvcndhcmREYXRhKSwgZ2VuZXJhdGVXZWJC
YWNrRm9yd2FyZEl0ZW1JRCgpKTsKKyAgICAgICAgaXRlbS0+c2V0U25hcHNob3RVVUlEKHNuYXBz
aG90VVVJRCk7CisgICAgICAgIGVudHJpZXMuYXBwZW5kKGl0ZW0pOwogICAgIH0KIAogICAgIHJl
dHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2NmL1dlYlBh
Z2VQcm94eUNGLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9jZi9XZWJQYWdlUHJveHlD
Ri5jcHAKaW5kZXggMjk3Mjg5Ni4uZmM4MWMzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL2NmL1dlYlBhZ2VQcm94eUNGLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvY2YvV2ViUGFnZVByb3h5Q0YuY3BwCkBAIC00NCw3ICs0NCw3IEBAIG5hbWVzcGFjZSBX
ZWJLaXQgewogc3RhdGljIENGU3RyaW5nUmVmIHNlc3Npb25IaXN0b3J5S2V5ID0gQ0ZTVFIoIlNl
c3Npb25IaXN0b3J5Iik7CiBzdGF0aWMgQ0ZTdHJpbmdSZWYgcHJvdmlzaW9uYWxVUkxLZXkgPSBD
RlNUUigiUHJvdmlzaW9uYWxVUkwiKTsKIAotc3RhdGljIGNvbnN0IFVJbnQzMiBDdXJyZW50U2Vz
c2lvblN0YXRlRGF0YVZlcnNpb24gPSAyOworc3RhdGljIGNvbnN0IFVJbnQzMiBDdXJyZW50U2Vz
c2lvblN0YXRlRGF0YVZlcnNpb24gPSAzOwogCiBQYXNzUmVmUHRyPEFQSTo6RGF0YT4gV2ViUGFn
ZVByb3h5OjpzZXNzaW9uU3RhdGVEYXRhKFdlYlBhZ2VQcm94eVNlc3Npb25TdGF0ZUZpbHRlckNh
bGxiYWNrIGZpbHRlciwgdm9pZCogY29udGV4dCkgY29uc3QKIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvVmlld0dlc3R1cmVDb250cm9sbGVyLmggYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1ZpZXdHZXN0dXJlQ29udHJvbGxlci5oCmluZGV4IDJiYmMy
ZjMuLjg3Y2IyNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvVmll
d0dlc3R1cmVDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9W
aWV3R2VzdHVyZUNvbnRyb2xsZXIuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDEzLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjgsOSArMjgsMTUgQEAKIAogI2luY2x1ZGUgIk1lc3Nh
Z2VSZWNlaXZlci5oIgogI2luY2x1ZGUgPFdlYkNvcmUvRmxvYXRSZWN0Lmg+CisjaW5jbHVkZSA8
V2ViQ29yZS9UaW1lci5oPgorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKworT0JKQ19DTEFT
UyBDQUxheWVyOworT0JKQ19DTEFTUyBOU0V2ZW50OwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAor
Y2xhc3MgV2ViQmFja0ZvcndhcmRMaXN0SXRlbTsKIGNsYXNzIFdlYlBhZ2VQcm94eTsKIAogY2xh
c3MgVmlld0dlc3R1cmVDb250cm9sbGVyIDogcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7
CkBAIC00NCwxMiArNTAsMjEgQEAgcHVibGljOgogICAgIHZvaWQgaGFuZGxlTWFnbmlmaWNhdGlv
bkdlc3R1cmUoZG91YmxlIHNjYWxlLCBXZWJDb3JlOjpGbG9hdFBvaW50IG9yaWdpbik7CiAgICAg
dm9pZCBoYW5kbGVTbWFydE1hZ25pZmljYXRpb25HZXN0dXJlKFdlYkNvcmU6OkZsb2F0UG9pbnQg
b3JpZ2luKTsKIAorICAgIGJvb2wgaGFuZGxlU2Nyb2xsV2hlZWxFdmVudChOU0V2ZW50ICopOwor
ICAgIHZvaWQgZGlkSGl0UmVuZGVyVHJlZVNpemVUaHJlc2hvbGQoKTsKKwogICAgIHZvaWQgZW5k
QWN0aXZlR2VzdHVyZSgpOwogCiAgICAgZW51bSBjbGFzcyBWaWV3R2VzdHVyZVR5cGUgewogICAg
ICAgICBOb25lLAogICAgICAgICBNYWduaWZpY2F0aW9uLAogICAgICAgICBTbWFydE1hZ25pZmlj
YXRpb24sCisgICAgICAgIFN3aXBlCisgICAgfTsKKworICAgIGVudW0gY2xhc3MgU3dpcGVUcmFu
c2l0aW9uU3R5bGUgeworICAgICAgICBPdmVybGFwLAorICAgICAgICBQdXNoCiAgICAgfTsKIAog
cHJpdmF0ZToKQEAgLTYzLDYgKzc4LDEyIEBAIHByaXZhdGU6CiAgICAgdm9pZCBlbmRNYWduaWZp
Y2F0aW9uR2VzdHVyZSgpOwogICAgIFdlYkNvcmU6OkZsb2F0UG9pbnQgc2NhbGVkTWFnbmlmaWNh
dGlvbk9yaWdpbihXZWJDb3JlOjpGbG9hdFBvaW50IG9yaWdpbiwgZG91YmxlIHNjYWxlKTsKIAor
ICAgIHZvaWQgYmVnaW5Td2lwZUdlc3R1cmUoV2ViQmFja0ZvcndhcmRMaXN0SXRlbSogdGFyZ2V0
SXRlbSwgYm9vbCBzd2lwaW5nTGVmdCk7CisgICAgdm9pZCBoYW5kbGVTd2lwZUdlc3R1cmUoV2Vi
QmFja0ZvcndhcmRMaXN0SXRlbSogdGFyZ2V0SXRlbSwgZG91YmxlIHByb2dyZXNzLCBib29sIHN3
aXBpbmdMZWZ0KTsKKyAgICB2b2lkIGVuZFN3aXBlR2VzdHVyZShXZWJCYWNrRm9yd2FyZExpc3RJ
dGVtKiB0YXJnZXRJdGVtLCBib29sIGNhbmNlbGxlZCk7CisgICAgdm9pZCByZW1vdmVTd2lwZVNu
YXBzaG90KCk7CisgICAgdm9pZCBzd2lwZVNuYXBzaG90V2F0Y2hkb2dUaW1lckZpcmVkKFdlYkNv
cmU6OlRpbWVyPFZpZXdHZXN0dXJlQ29udHJvbGxlcj4qKTsKKwogICAgIFdlYlBhZ2VQcm94eSYg
bV93ZWJQYWdlUHJveHk7CiAKICAgICBkb3VibGUgbV9tYWduaWZpY2F0aW9uOwpAQCAtNzUsNiAr
OTYsMTAgQEAgcHJpdmF0ZToKICAgICBXZWJDb3JlOjpGbG9hdFJlY3QgbV92aXNpYmxlQ29udGVu
dFJlY3Q7CiAgICAgYm9vbCBtX3Zpc2libGVDb250ZW50UmVjdElzVmFsaWQ7CiAgICAgYm9vbCBt
X2ZyYW1lSGFuZGxlc01hZ25pZmljYXRpb25HZXN0dXJlOworCisgICAgUmV0YWluUHRyPENBTGF5
ZXI+IG1fc3dpcGVTbmFwc2hvdExheWVyOworICAgIFN3aXBlVHJhbnNpdGlvblN0eWxlIG1fc3dp
cGVUcmFuc2l0aW9uU3R5bGU7CisgICAgV2ViQ29yZTo6VGltZXI8Vmlld0dlc3R1cmVDb250cm9s
bGVyPiBtX3N3aXBlV2F0Y2hkb2dUaW1lcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9WaWV3R2VzdHVyZUNvbnRy
b2xsZXIubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1ZpZXdHZXN0
dXJlQ29udHJvbGxlci5tZXNzYWdlcy5pbgppbmRleCAwYjM5OWVmLi5kMDljMDM3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1ZpZXdHZXN0dXJlQ29udHJvbGxlci5t
ZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1ZpZXdHZXN0dXJl
Q29udHJvbGxlci5tZXNzYWdlcy5pbgpAQCAtMjMsNCArMjMsNSBAQAogbWVzc2FnZXMgLT4gVmll
d0dlc3R1cmVDb250cm9sbGVyIHsKICAgICBEaWRDb2xsZWN0R2VvbWV0cnlGb3JNYWduaWZpY2F0
aW9uR2VzdHVyZShXZWJDb3JlOjpGbG9hdFJlY3QgdmlzaWJsZUNvbnRlbnRCb3VuZHMsIGJvb2wg
ZnJhbWVIYW5kbGVzTWFnbmlmaWNhdGlvbkdlc3R1cmUpCiAgICAgRGlkQ29sbGVjdEdlb21ldHJ5
Rm9yU21hcnRNYWduaWZpY2F0aW9uR2VzdHVyZShXZWJDb3JlOjpGbG9hdFBvaW50IG9yaWdpbiwg
V2ViQ29yZTo6RmxvYXRSZWN0IHJlbmRlclJlY3QsIFdlYkNvcmU6OkZsb2F0UmVjdCB2aXNpYmxl
Q29udGVudEJvdW5kcywgYm9vbCBpc1JlcGxhY2VkRWxlbWVudCwgYm9vbCBmcmFtZUhhbmRsZXNN
YWduaWZpY2F0aW9uR2VzdHVyZSkKKyAgICBEaWRIaXRSZW5kZXJUcmVlU2l6ZVRocmVzaG9sZCgp
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1ZpZXdHZXN0dXJl
Q29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvVmlld0dlc3R1cmVD
b250cm9sbGVyLm1tCmluZGV4IDdjZWZjYzEuLjIzYWJjNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9tYWMvVmlld0dlc3R1cmVDb250cm9sbGVyLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvVmlld0dlc3R1cmVDb250cm9sbGVyLm1tCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNiwxMCAr
MjYsMzIgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiVmlld0dlc3R1cmVDb250cm9s
bGVyLmgiCiAKKyNpbXBvcnQgIldlYlBhZ2VHcm91cC5oIgogI2ltcG9ydCAiVmlld0dlc3R1cmVD
b250cm9sbGVyTWVzc2FnZXMuaCIKICNpbXBvcnQgIlZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0
b3JNZXNzYWdlcy5oIgorI2ltcG9ydCAiVmlld1NuYXBzaG90U3RvcmUuaCIKKyNpbXBvcnQgIldl
YkJhY2tGb3J3YXJkTGlzdC5oIgorI2ltcG9ydCAiV2ViUGFnZU1lc3NhZ2VzLmgiCiAjaW1wb3J0
ICJXZWJQYWdlUHJveHkuaCIKKyNpbXBvcnQgIldlYlByZWZlcmVuY2VzLmgiCiAjaW1wb3J0ICJX
ZWJQcm9jZXNzUHJveHkuaCIKKyNpbXBvcnQgIldLVmlld0ludGVybmFsLmgiCisjaW1wb3J0IDxD
b2NvYS9Db2NvYS5oPgorI2ltcG9ydCA8UXVhcnR6Q29yZS9RdWFydHpDb3JlLmg+CisjaW1wb3J0
IDxXZWJDb3JlL1dlYkNvcmVDQUxheWVyRXh0cmFzLmg+CisKKyNpZiBkZWZpbmVkKF9faGFzX2lu
Y2x1ZGUpICYmIF9faGFzX2luY2x1ZGUoPFF1YXJ0ekNvcmUvUXVhcnR6Q29yZVByaXZhdGUuaD4p
CisjaW1wb3J0IDxRdWFydHpDb3JlL1F1YXJ0ekNvcmVQcml2YXRlLmg+CisjZWxzZQorQGludGVy
ZmFjZSBDQUZpbHRlciA6IE5TT2JqZWN0IDxOU0NvcHlpbmcsIE5TTXV0YWJsZUNvcHlpbmcsIE5T
Q29kaW5nPgorQGVuZAorI2VuZGlmCisKK0BpbnRlcmZhY2UgQ0FGaWx0ZXIgKERldGFpbHMpCisr
IChDQUZpbHRlciAqKWZpbHRlcldpdGhUeXBlOihOU1N0cmluZyAqKXR5cGU7CitAZW5kCisKK2V4
dGVybiBOU1N0cmluZyAqIGNvbnN0IGtDQUZpbHRlckdhdXNzaWFuQmx1cjsKIAogdXNpbmcgbmFt
ZXNwYWNlIFdlYkNvcmU7CiAKQEAgLTQ1LDYgKzY3LDEyIEBAIHN0YXRpYyBjb25zdCBkb3VibGUg
em9vbU91dFJlc2lzdGFuY2UgPSAwLjEwOwogc3RhdGljIGNvbnN0IGZsb2F0IHNtYXJ0TWFnbmlm
aWNhdGlvbkVsZW1lbnRQYWRkaW5nID0gMC4wNTsKIHN0YXRpYyBjb25zdCBmbG9hdCBzbWFydE1h
Z25pZmljYXRpb25QYW5TY3JvbGxUaHJlc2hvbGQgPSAxMDA7CiAKK3N0YXRpYyBjb25zdCBkb3Vi
bGUgc3dpcGVPdmVybGF5U2hhZG93T3BhY2l0eSA9IDAuNjY7CitzdGF0aWMgY29uc3QgZG91Ymxl
IHN3aXBlT3ZlcmxheVNoYWRvd1JhZGl1cyA9IDM7CisKK3N0YXRpYyBjb25zdCBmbG9hdCBzd2lw
ZVNuYXBzaG90UmVtb3ZhbFJlbmRlclRyZWVTaXplVGFyZ2V0RnJhY3Rpb24gPSAwLjU7CitzdGF0
aWMgY29uc3Qgc3RkOjpjaHJvbm86OmR1cmF0aW9uPGRvdWJsZT4gc3dpcGVTbmFwc2hvdFJlbW92
YWxXYXRjaGRvZ0R1cmF0aW9uKDMpOworCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogVmlld0dlc3R1
cmVDb250cm9sbGVyOjpWaWV3R2VzdHVyZUNvbnRyb2xsZXIoV2ViUGFnZVByb3h5JiB3ZWJQYWdl
UHJveHkpCkBAIC01Miw2ICs4MCw4IEBAIFZpZXdHZXN0dXJlQ29udHJvbGxlcjo6Vmlld0dlc3R1
cmVDb250cm9sbGVyKFdlYlBhZ2VQcm94eSYgd2ViUGFnZVByb3h5KQogICAgICwgbV9hY3RpdmVH
ZXN0dXJlVHlwZShWaWV3R2VzdHVyZVR5cGU6Ok5vbmUpCiAgICAgLCBtX3Zpc2libGVDb250ZW50
UmVjdElzVmFsaWQoZmFsc2UpCiAgICAgLCBtX2ZyYW1lSGFuZGxlc01hZ25pZmljYXRpb25HZXN0
dXJlKGZhbHNlKQorICAgICwgbV9zd2lwZVRyYW5zaXRpb25TdHlsZShTd2lwZVRyYW5zaXRpb25T
dHlsZTo6T3ZlcmxhcCkKKyAgICAsIG1fc3dpcGVXYXRjaGRvZ1RpbWVyKHRoaXMsICZWaWV3R2Vz
dHVyZUNvbnRyb2xsZXI6OnN3aXBlU25hcHNob3RXYXRjaGRvZ1RpbWVyRmlyZWQpCiB7CiAgICAg
bV93ZWJQYWdlUHJveHkucHJvY2VzcygpLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6Vmll
d0dlc3R1cmVDb250cm9sbGVyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fd2ViUGFnZVByb3h5
LnBhZ2VJRCgpLCAqdGhpcyk7CiB9CkBAIC0xMzgsNiArMTY4LDggQEAgdm9pZCBWaWV3R2VzdHVy
ZUNvbnRyb2xsZXI6OmVuZE1hZ25pZmljYXRpb25HZXN0dXJlKCkKICAgICAgICAgbV93ZWJQYWdl
UHJveHkuc2NhbGVQYWdlKG5ld01hZ25pZmljYXRpb24sIHJvdW5kZWRJbnRQb2ludChtX21hZ25p
ZmljYXRpb25PcmlnaW4pKTsKICAgICBlbHNlCiAgICAgICAgIG1fd2ViUGFnZVByb3h5LmRyYXdp
bmdBcmVhKCktPmNvbW1pdFRyYW5zaWVudFpvb20obmV3TWFnbmlmaWNhdGlvbiwgc2NhbGVkTWFn
bmlmaWNhdGlvbk9yaWdpbihtX21hZ25pZmljYXRpb25PcmlnaW4sIG5ld01hZ25pZmljYXRpb24p
KTsKKworICAgIG1fYWN0aXZlR2VzdHVyZVR5cGUgPSBWaWV3R2VzdHVyZVR5cGU6Ok5vbmU7CiB9
CiAKIHZvaWQgVmlld0dlc3R1cmVDb250cm9sbGVyOjpoYW5kbGVTbWFydE1hZ25pZmljYXRpb25H
ZXN0dXJlKEZsb2F0UG9pbnQgb3JpZ2luKQpAQCAtMTkyLDIwICsyMjQsMTc3IEBAIHZvaWQgVmll
d0dlc3R1cmVDb250cm9sbGVyOjpkaWRDb2xsZWN0R2VvbWV0cnlGb3JTbWFydE1hZ25pZmljYXRp
b25HZXN0dXJlKEZsb2F0CiAgICAgbV9sYXN0U21hcnRNYWduaWZpY2F0aW9uVW5zY2FsZWRUYXJn
ZXRSZWN0ID0gdW5zY2FsZWRUYXJnZXRSZWN0OwogfQogCi12b2lkIFZpZXdHZXN0dXJlQ29udHJv
bGxlcjo6ZW5kQWN0aXZlR2VzdHVyZSgpCitib29sIFZpZXdHZXN0dXJlQ29udHJvbGxlcjo6aGFu
ZGxlU2Nyb2xsV2hlZWxFdmVudChOU0V2ZW50ICpldmVudCkKIHsKLSAgICBzd2l0Y2ggKG1fYWN0
aXZlR2VzdHVyZVR5cGUpIHsKLSAgICBjYXNlIFZpZXdHZXN0dXJlVHlwZTo6Tm9uZToKLSAgICBj
YXNlIFZpZXdHZXN0dXJlVHlwZTo6U21hcnRNYWduaWZpY2F0aW9uOgotICAgICAgICBicmVhazsK
LSAgICBjYXNlIFZpZXdHZXN0dXJlVHlwZTo6TWFnbmlmaWNhdGlvbjoKLSAgICAgICAgZW5kTWFn
bmlmaWNhdGlvbkdlc3R1cmUoKTsKKyAgICBpZiAobV9hY3RpdmVHZXN0dXJlVHlwZSAhPSBWaWV3
R2VzdHVyZVR5cGU6Ok5vbmUpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmIChldmVu
dC5waGFzZSAhPSBOU0V2ZW50UGhhc2VCZWdhbikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisg
ICAgaWYgKGZhYnMoZXZlbnQuc2Nyb2xsaW5nRGVsdGFYKSA8IGZhYnMoZXZlbnQuc2Nyb2xsaW5n
RGVsdGFZKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgYm9vbCB3aWxsU3dpcGVMZWZ0
ID0gZXZlbnQuc2Nyb2xsaW5nRGVsdGFYID4gMCAmJiBtX3dlYlBhZ2VQcm94eS5pc1Bpbm5lZFRv
TGVmdFNpZGUoKSAmJiBtX3dlYlBhZ2VQcm94eS5iYWNrRm9yd2FyZExpc3QoKS5iYWNrSXRlbSgp
OworICAgIGJvb2wgd2lsbFN3aXBlUmlnaHQgPSBldmVudC5zY3JvbGxpbmdEZWx0YVggPCAwICYm
IG1fd2ViUGFnZVByb3h5LmlzUGlubmVkVG9SaWdodFNpZGUoKSAmJiBtX3dlYlBhZ2VQcm94eS5i
YWNrRm9yd2FyZExpc3QoKS5mb3J3YXJkSXRlbSgpOworICAgIGlmICghd2lsbFN3aXBlTGVmdCAm
JiAhd2lsbFN3aXBlUmlnaHQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICghZXZl
bnQuaGFzUHJlY2lzZVNjcm9sbGluZ0RlbHRhcykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisg
ICAgaWYgKCFbTlNFdmVudCBpc1N3aXBlVHJhY2tpbmdGcm9tU2Nyb2xsRXZlbnRzRW5hYmxlZF0p
CisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIFZpZXdTbmFwc2hvdFN0b3JlOjpzaGFyZWQo
KS50YWtlU25hcHNob3QobV93ZWJQYWdlUHJveHkpOworCisgICAgQ0dGbG9hdCBtYXhQcm9ncmVz
cyA9IHdpbGxTd2lwZUxlZnQgPyAxIDogMDsKKyAgICBDR0Zsb2F0IG1pblByb2dyZXNzID0gd2ls
bFN3aXBlUmlnaHQgPyAtMSA6IDA7CisgICAgUmVmUHRyPFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0+
IHRhcmdldEl0ZW0gPSB3aWxsU3dpcGVMZWZ0ID8gbV93ZWJQYWdlUHJveHkuYmFja0ZvcndhcmRM
aXN0KCkuYmFja0l0ZW0oKSA6IG1fd2ViUGFnZVByb3h5LmJhY2tGb3J3YXJkTGlzdCgpLmZvcndh
cmRJdGVtKCk7CisgICAgX19ibG9jayBib29sIHN3aXBlQ2FuY2VsbGVkID0gZmFsc2U7CisKKyAg
ICBbZXZlbnQgdHJhY2tTd2lwZUV2ZW50V2l0aE9wdGlvbnM6MCBkYW1wZW5BbW91bnRUaHJlc2hv
bGRNaW46bWluUHJvZ3Jlc3MgbWF4Om1heFByb2dyZXNzIHVzaW5nSGFuZGxlcjpeKENHRmxvYXQg
cHJvZ3Jlc3MsIE5TRXZlbnRQaGFzZSBwaGFzZSwgQk9PTCBpc0NvbXBsZXRlLCBCT09MICpzdG9w
KSB7CisgICAgICAgIGlmIChwaGFzZSA9PSBOU0V2ZW50UGhhc2VCZWdhbikKKyAgICAgICAgICAg
IHRoaXMtPmJlZ2luU3dpcGVHZXN0dXJlKHRhcmdldEl0ZW0uZ2V0KCksIHdpbGxTd2lwZUxlZnQp
OworICAgICAgICB0aGlzLT5oYW5kbGVTd2lwZUdlc3R1cmUodGFyZ2V0SXRlbS5nZXQoKSwgcHJv
Z3Jlc3MsIHdpbGxTd2lwZUxlZnQpOworICAgICAgICBpZiAocGhhc2UgPT0gTlNFdmVudFBoYXNl
Q2FuY2VsbGVkKQorICAgICAgICAgICAgc3dpcGVDYW5jZWxsZWQgPSB0cnVlOworICAgICAgICBp
ZiAoaXNDb21wbGV0ZSkKKyAgICAgICAgICAgIHRoaXMtPmVuZFN3aXBlR2VzdHVyZSh0YXJnZXRJ
dGVtLmdldCgpLCBzd2lwZUNhbmNlbGxlZCk7CisgICAgfV07CisKKyAgICByZXR1cm4gdHJ1ZTsK
K30KKwordm9pZCBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OmJlZ2luU3dpcGVHZXN0dXJlKFdlYkJh
Y2tGb3J3YXJkTGlzdEl0ZW0qIHRhcmdldEl0ZW0sIGJvb2wgc3dpcGluZ0xlZnQpCit7CisgICAg
bV9hY3RpdmVHZXN0dXJlVHlwZSA9IFZpZXdHZXN0dXJlVHlwZTo6U3dpcGU7CisKKyAgICBDQUxh
eWVyICpyb290TGF5ZXIgPSBbbV93ZWJQYWdlUHJveHkud2tWaWV3KCkgX3Jvb3RMYXllcl07CisK
KyAgICBtX3N3aXBlU25hcHNob3RMYXllciA9IGFkb3B0TlMoW1tDQUxheWVyIGFsbG9jXSBpbml0
XSk7CisgICAgW21fc3dpcGVTbmFwc2hvdExheWVyIHNldEJhY2tncm91bmRDb2xvcjpDR0NvbG9y
R2V0Q29uc3RhbnRDb2xvcihrQ0dDb2xvcldoaXRlKV07CisKKyAgICB1aW50NjRfdCByZW5kZXJU
cmVlU2l6ZTsKKyAgICBbbV9zd2lwZVNuYXBzaG90TGF5ZXIgc2V0Q29udGVudHM6KGlkKVZpZXdT
bmFwc2hvdFN0b3JlOjpzaGFyZWQoKS5nZXRTbmFwc2hvdEFuZFJlbmRlclRyZWVTaXplKHRhcmdl
dEl0ZW0sIHJlbmRlclRyZWVTaXplKV07CisgICAgW21fc3dpcGVTbmFwc2hvdExheWVyIHNldENv
bnRlbnRzR3Jhdml0eTprQ0FHcmF2aXR5VG9wTGVmdF07CisgICAgW21fc3dpcGVTbmFwc2hvdExh
eWVyIHNldENvbnRlbnRzU2NhbGU6bV93ZWJQYWdlUHJveHkuZGV2aWNlU2NhbGVGYWN0b3IoKV07
CisgICAgW21fc3dpcGVTbmFwc2hvdExheWVyIHNldEZyYW1lOnJvb3RMYXllci5mcmFtZV07Cisg
ICAgW21fc3dpcGVTbmFwc2hvdExheWVyIHNldEFuY2hvclBvaW50OkNHUG9pbnRaZXJvXTsKKyAg
ICBbbV9zd2lwZVNuYXBzaG90TGF5ZXIgc2V0UG9zaXRpb246Q0dQb2ludFplcm9dOworICAgIFtt
X3N3aXBlU25hcHNob3RMYXllciBzZXROYW1lOkAiR2VzdHVyZSBTd2lwZSBTbmFwc2hvdCBMYXll
ciJdOworICAgIFttX3N3aXBlU25hcHNob3RMYXllciB3ZWJfZGlzYWJsZUFsbEFjdGlvbnNdOwor
CisgICAgaWYgKG1fd2ViUGFnZVByb3h5LnBhZ2VHcm91cCgpLnByZWZlcmVuY2VzKCktPnZpZXdH
ZXN0dXJlRGVidWdnaW5nRW5hYmxlZCgpKSB7CisgICAgICAgIENBRmlsdGVyKiBmaWx0ZXIgPSBb
Q0FGaWx0ZXIgZmlsdGVyV2l0aE5hbWU6QCJnYXVzc2lhbkJsdXIiXTsKKyAgICAgICAgW2ZpbHRl
ciBzZXRWYWx1ZTpbTlNOdW1iZXIgbnVtYmVyV2l0aEZsb2F0OjNdIGZvcktleTpAImlucHV0UmFk
aXVzIl07CisgICAgICAgIFttX3N3aXBlU25hcHNob3RMYXllciBzZXRGaWx0ZXJzOkBbZmlsdGVy
XV07CisgICAgfQorCisgICAgaWYgKG1fc3dpcGVUcmFuc2l0aW9uU3R5bGUgPT0gU3dpcGVUcmFu
c2l0aW9uU3R5bGU6Ok92ZXJsYXApIHsKKyAgICAgICAgUmV0YWluUHRyPENHUGF0aFJlZj4gc2hh
ZG93UGF0aCA9IGFkb3B0Q0YoQ0dQYXRoQ3JlYXRlV2l0aFJlY3QoW3Jvb3RMYXllciBib3VuZHNd
LCAwKSk7CisKKyAgICAgICAgW21fc3dpcGVTbmFwc2hvdExheWVyIHNldFNoYWRvd0NvbG9yOkNH
Q29sb3JHZXRDb25zdGFudENvbG9yKGtDR0NvbG9yQmxhY2spXTsKKyAgICAgICAgW21fc3dpcGVT
bmFwc2hvdExheWVyIHNldFNoYWRvd09wYWNpdHk6c3dpcGVPdmVybGF5U2hhZG93T3BhY2l0eV07
CisgICAgICAgIFttX3N3aXBlU25hcHNob3RMYXllciBzZXRTaGFkb3dSYWRpdXM6c3dpcGVPdmVy
bGF5U2hhZG93UmFkaXVzXTsKKyAgICAgICAgW21fc3dpcGVTbmFwc2hvdExheWVyIHNldFNoYWRv
d1BhdGg6c2hhZG93UGF0aC5nZXQoKV07CisKKyAgICAgICAgW3Jvb3RMYXllciBzZXRTaGFkb3dD
b2xvcjpDR0NvbG9yR2V0Q29uc3RhbnRDb2xvcihrQ0dDb2xvckJsYWNrKV07CisgICAgICAgIFty
b290TGF5ZXIgc2V0U2hhZG93T3BhY2l0eTpzd2lwZU92ZXJsYXlTaGFkb3dPcGFjaXR5XTsKKyAg
ICAgICAgW3Jvb3RMYXllciBzZXRTaGFkb3dSYWRpdXM6c3dpcGVPdmVybGF5U2hhZG93UmFkaXVz
XTsKKyAgICAgICAgW3Jvb3RMYXllciBzZXRTaGFkb3dQYXRoOnNoYWRvd1BhdGguZ2V0KCldOwor
ICAgIH0KKworICAgIGlmIChzd2lwaW5nTGVmdCkKKyAgICAgICAgW3Jvb3RMYXllci5zdXBlcmxh
eWVyIGluc2VydFN1YmxheWVyOm1fc3dpcGVTbmFwc2hvdExheWVyLmdldCgpIGJlbG93OnJvb3RM
YXllcl07CisgICAgZWxzZQorICAgICAgICBbcm9vdExheWVyLnN1cGVybGF5ZXIgaW5zZXJ0U3Vi
bGF5ZXI6bV9zd2lwZVNuYXBzaG90TGF5ZXIuZ2V0KCkgYWJvdmU6cm9vdExheWVyXTsKK30KKwor
dm9pZCBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OmhhbmRsZVN3aXBlR2VzdHVyZShXZWJCYWNrRm9y
d2FyZExpc3RJdGVtKiB0YXJnZXRJdGVtLCBkb3VibGUgcHJvZ3Jlc3MsIGJvb2wgc3dpcGluZ0xl
ZnQpCit7CisgICAgQVNTRVJUKG1fYWN0aXZlR2VzdHVyZVR5cGUgPT0gVmlld0dlc3R1cmVUeXBl
OjpTd2lwZSk7CisKKyAgICBDQUxheWVyICpyb290TGF5ZXIgPSBbbV93ZWJQYWdlUHJveHkud2tW
aWV3KCkgX3Jvb3RMYXllcl07CisgICAgZG91YmxlIHdpZHRoID0gcm9vdExheWVyLmJvdW5kcy5z
aXplLndpZHRoOworICAgIGRvdWJsZSBzd2lwaW5nTGF5ZXJPZmZzZXQgPSBmbG9vcih3aWR0aCAq
IHByb2dyZXNzKTsKKworICAgIGlmIChtX3N3aXBlVHJhbnNpdGlvblN0eWxlID09IFN3aXBlVHJh
bnNpdGlvblN0eWxlOjpPdmVybGFwKSB7CisgICAgICAgIGlmIChzd2lwaW5nTGVmdCkKKyAgICAg
ICAgICAgIFtyb290TGF5ZXIgc2V0UG9zaXRpb246Q0dQb2ludE1ha2Uoc3dpcGluZ0xheWVyT2Zm
c2V0LCAwKV07CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIFttX3N3aXBlU25hcHNob3RMYXll
ciBzZXRQb3NpdGlvbjpDR1BvaW50TWFrZSh3aWR0aCArIHN3aXBpbmdMYXllck9mZnNldCwgMCld
OworICAgIH0gZWxzZSBpZiAobV9zd2lwZVRyYW5zaXRpb25TdHlsZSA9PSBTd2lwZVRyYW5zaXRp
b25TdHlsZTo6UHVzaCkgeworICAgICAgICBbcm9vdExheWVyIHNldFBvc2l0aW9uOkNHUG9pbnRN
YWtlKHN3aXBpbmdMYXllck9mZnNldCwgMCldOworICAgICAgICBbbV9zd2lwZVNuYXBzaG90TGF5
ZXIgc2V0UG9zaXRpb246Q0dQb2ludE1ha2UoKHN3aXBpbmdMZWZ0ID8gLXdpZHRoIDogd2lkdGgp
ICsgc3dpcGluZ0xheWVyT2Zmc2V0LCAwKV07CiAgICAgfQorfQorCit2b2lkIFZpZXdHZXN0dXJl
Q29udHJvbGxlcjo6ZW5kU3dpcGVHZXN0dXJlKFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0qIHRhcmdl
dEl0ZW0sIGJvb2wgY2FuY2VsbGVkKQoreworICAgIEFTU0VSVChtX2FjdGl2ZUdlc3R1cmVUeXBl
ID09IFZpZXdHZXN0dXJlVHlwZTo6U3dpcGUpOworCisgICAgQ0FMYXllciAqcm9vdExheWVyID0g
W21fd2ViUGFnZVByb3h5LndrVmlldygpIF9yb290TGF5ZXJdOworCisgICAgW3Jvb3RMYXllciBz
ZXRTaGFkb3dPcGFjaXR5OjBdOworICAgIFtyb290TGF5ZXIgc2V0U2hhZG93UmFkaXVzOjBdOwor
CisgICAgaWYgKGNhbmNlbGxlZCkgeworICAgICAgICByZW1vdmVTd2lwZVNuYXBzaG90KCk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICB1aW50NjRfdCByZW5kZXJUcmVlU2l6ZTsKKyAg
ICBWaWV3U25hcHNob3RTdG9yZTo6c2hhcmVkKCkuZ2V0U25hcHNob3RBbmRSZW5kZXJUcmVlU2l6
ZSh0YXJnZXRJdGVtLCByZW5kZXJUcmVlU2l6ZSk7CisgICAgbV93ZWJQYWdlUHJveHkucHJvY2Vz
cygpLnNlbmQoTWVzc2FnZXM6OlZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3I6OlNldFJlbmRl
clRyZWVTaXplTm90aWZpY2F0aW9uVGhyZXNob2xkKHJlbmRlclRyZWVTaXplICogc3dpcGVTbmFw
c2hvdFJlbW92YWxSZW5kZXJUcmVlU2l6ZVRhcmdldEZyYWN0aW9uKSwgbV93ZWJQYWdlUHJveHku
cGFnZUlEKCkpOworCisgICAgLy8gV2UgZG9uJ3Qgd2FudCB0byByZXBsYWNlIHRoZSBjdXJyZW50
IGJhY2stZm9yd2FyZCBpdGVtJ3Mgc25hcHNob3QKKyAgICAvLyBsaWtlIHdlIG5vcm1hbGx5IHdv
dWxkIHdoZW4gZ29pbmcgYmFjayBvciBmb3J3YXJkLCBiZWNhdXNlIHdlIGFyZQorICAgIC8vIGRp
c3BsYXlpbmcgdGhlIGRlc3RpbmF0aW9uIGl0ZW0ncyBzbmFwc2hvdC4KKyAgICBWaWV3U25hcHNo
b3RTdG9yZTo6c2hhcmVkKCkuZGlzYWJsZVNuYXBzaG90dGluZygpOworICAgIG1fd2ViUGFnZVBy
b3h5LmdvVG9CYWNrRm9yd2FyZEl0ZW0odGFyZ2V0SXRlbSk7CisgICAgVmlld1NuYXBzaG90U3Rv
cmU6OnNoYXJlZCgpLmVuYWJsZVNuYXBzaG90dGluZygpOworCisgICAgaWYgKCFyZW5kZXJUcmVl
U2l6ZSkgeworICAgICAgICByZW1vdmVTd2lwZVNuYXBzaG90KCk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICBtX3N3aXBlV2F0Y2hkb2dUaW1lci5zdGFydE9uZVNob3Qoc3dpcGVTbmFw
c2hvdFJlbW92YWxXYXRjaGRvZ0R1cmF0aW9uLmNvdW50KCkpOworfQorCit2b2lkIFZpZXdHZXN0
dXJlQ29udHJvbGxlcjo6ZGlkSGl0UmVuZGVyVHJlZVNpemVUaHJlc2hvbGQoKQoreworICAgIHJl
bW92ZVN3aXBlU25hcHNob3QoKTsKK30KKwordm9pZCBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OnN3
aXBlU25hcHNob3RXYXRjaGRvZ1RpbWVyRmlyZWQoV2ViQ29yZTo6VGltZXI8Vmlld0dlc3R1cmVD
b250cm9sbGVyPiopCit7CisgICAgcmVtb3ZlU3dpcGVTbmFwc2hvdCgpOworfQorCit2b2lkIFZp
ZXdHZXN0dXJlQ29udHJvbGxlcjo6cmVtb3ZlU3dpcGVTbmFwc2hvdCgpCit7CisgICAgbV9zd2lw
ZVdhdGNoZG9nVGltZXIuc3RvcCgpOworCisgICAgaWYgKG1fYWN0aXZlR2VzdHVyZVR5cGUgIT0g
Vmlld0dlc3R1cmVUeXBlOjpTd2lwZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgW1ttX3dlYlBh
Z2VQcm94eS53a1ZpZXcoKSBfcm9vdExheWVyXSBzZXRQb3NpdGlvbjpDR1BvaW50WmVyb107Cisg
ICAgW21fc3dpcGVTbmFwc2hvdExheWVyIHJlbW92ZUZyb21TdXBlcmxheWVyXTsKKyAgICBtX3N3
aXBlU25hcHNob3RMYXllciA9IG51bGxwdHI7CiAKLSAgICBtX3Zpc2libGVDb250ZW50UmVjdElz
VmFsaWQgPSBmYWxzZTsKICAgICBtX2FjdGl2ZUdlc3R1cmVUeXBlID0gVmlld0dlc3R1cmVUeXBl
OjpOb25lOwogfQogCit2b2lkIFZpZXdHZXN0dXJlQ29udHJvbGxlcjo6ZW5kQWN0aXZlR2VzdHVy
ZSgpCit7CisgICAgaWYgKG1fYWN0aXZlR2VzdHVyZVR5cGUgPT0gVmlld0dlc3R1cmVUeXBlOjpN
YWduaWZpY2F0aW9uKSB7CisgICAgICAgIGVuZE1hZ25pZmljYXRpb25HZXN0dXJlKCk7CisgICAg
ICAgIG1fdmlzaWJsZUNvbnRlbnRSZWN0SXNWYWxpZCA9IGZhbHNlOworICAgIH0KK30KKwogZG91
YmxlIFZpZXdHZXN0dXJlQ29udHJvbGxlcjo6bWFnbmlmaWNhdGlvbigpIGNvbnN0CiB7CiAgICAg
aWYgKG1fYWN0aXZlR2VzdHVyZVR5cGUgPT0gVmlld0dlc3R1cmVUeXBlOjpNYWduaWZpY2F0aW9u
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9WaWV3U25hcHNob3RT
dG9yZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9WaWV3U25hcHNob3RTdG9yZS5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIwOGI3ZDAKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1ZpZXdTbmFwc2hvdFN0b3JlLmgK
QEAgLTAsMCArMSw2MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgVmlld1NuYXBzaG90U3RvcmVf
aAorI2RlZmluZSBWaWV3U25hcHNob3RTdG9yZV9oCisKKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5o
PgorI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIu
aD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7
CisKK2NsYXNzIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW07CitjbGFzcyBXZWJQYWdlUHJveHk7CisK
K2NsYXNzIFZpZXdTbmFwc2hvdFN0b3JlIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShWaWV3
U25hcHNob3RTdG9yZSk7CitwdWJsaWM6CisgICAgVmlld1NuYXBzaG90U3RvcmUoKTsKKyAgICB+
Vmlld1NuYXBzaG90U3RvcmUoKTsKKworICAgIHN0YXRpYyBWaWV3U25hcHNob3RTdG9yZSYgc2hh
cmVkKCk7CisKKyAgICB2b2lkIHRha2VTbmFwc2hvdChXZWJQYWdlUHJveHkmKTsKKyAgICBDR0lt
YWdlUmVmIGdldFNuYXBzaG90QW5kUmVuZGVyVHJlZVNpemUoV2ViQmFja0ZvcndhcmRMaXN0SXRl
bSosIHVpbnQ2NF90JiByZW5kZXJUcmVlU2l6ZSk7CisKKyAgICB2b2lkIGRpc2FibGVTbmFwc2hv
dHRpbmcoKSB7IG1fZW5hYmxlZCA9IGZhbHNlOyB9CisgICAgdm9pZCBlbmFibGVTbmFwc2hvdHRp
bmcoKSB7IG1fZW5hYmxlZCA9IHRydWU7IH0KKworcHJpdmF0ZToKKyAgICBIYXNoTWFwPFN0cmlu
Zywgc3RkOjpwYWlyPFJldGFpblB0cjxDR0ltYWdlUmVmPiwgdWludDY0X3Q+PiBtX3NuYXBzaG90
TWFwOworCisgICAgYm9vbCBtX2VuYWJsZWQ7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
KworI2VuZGlmIC8vIFZpZXdTbmFwc2hvdFN0b3JlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9tYWMvVmlld1NuYXBzaG90U3RvcmUubW0gYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvbWFjL1ZpZXdTbmFwc2hvdFN0b3JlLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLjRhZTM4N2QKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvbWFjL1ZpZXdTbmFwc2hvdFN0b3JlLm1tCkBAIC0wLDAgKzEsMTExIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJWaWV3U25hcHNob3RTdG9yZS5o
IgorCisjaW1wb3J0ICJXZWJCYWNrRm9yd2FyZExpc3QuaCIKKyNpbXBvcnQgIldlYlBhZ2VQcm94
eS5oIgorI2ltcG9ydCAiV0tWaWV3LmgiCisjaW1wb3J0IDxDb3JlR3JhcGhpY3MvQ29yZUdyYXBo
aWNzLmg+CisjaW1wb3J0IDxXZWJDb3JlL0dyYXBoaWNzQ29udGV4dC5oPgorI2ltcG9ydCA8V2Vi
Q29yZS9VVUlELmg+CisKKyNpZiBkZWZpbmVkKF9faGFzX2luY2x1ZGUpICYmIF9faGFzX2luY2x1
ZGUoPENvcmVHcmFwaGljcy9Db3JlR3JhcGhpY3NQcml2YXRlLmg+KQorI2ltcG9ydCA8Q29yZUdy
YXBoaWNzL0NvcmVHcmFwaGljc1ByaXZhdGUuaD4KKyNlbmRpZgorCitleHRlcm4gIkMiIHsKK3R5
cGVkZWYgdWludDMyX3QgQ0dTQ29ubmVjdGlvbklEOwordHlwZWRlZiB1aW50MzJfdCBDR1NXaW5k
b3dJRDsKK0NHU0Nvbm5lY3Rpb25JRCBDR1NNYWluQ29ubmVjdGlvbklEKHZvaWQpOworQ0dFcnJv
ciBDR1NHZXRTY3JlZW5SZWN0Rm9yV2luZG93KENHU0Nvbm5lY3Rpb25JRCBjaWQsIENHU1dpbmRv
d0lEIHdpZCwgQ0dSZWN0ICpyZWN0KTsKK307CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwor
CituYW1lc3BhY2UgV2ViS2l0IHsKKworVmlld1NuYXBzaG90U3RvcmU6OlZpZXdTbmFwc2hvdFN0
b3JlKCkKKyAgICA6IG1fZW5hYmxlZCh0cnVlKQoreworfQorCitWaWV3U25hcHNob3RTdG9yZTo6
flZpZXdTbmFwc2hvdFN0b3JlKCkKK3sKK30KKworVmlld1NuYXBzaG90U3RvcmUmIFZpZXdTbmFw
c2hvdFN0b3JlOjpzaGFyZWQoKQoreworICAgIHN0YXRpYyBWaWV3U25hcHNob3RTdG9yZSYgc3Rv
cmUgPSAqbmV3IFZpZXdTbmFwc2hvdFN0b3JlOworICAgIHJldHVybiBzdG9yZTsKK30KKwordm9p
ZCBWaWV3U25hcHNob3RTdG9yZTo6dGFrZVNuYXBzaG90KFdlYlBhZ2VQcm94eSYgd2ViUGFnZVBy
b3h5KQoreworICAgIFJlZlB0cjxXZWJCYWNrRm9yd2FyZExpc3RJdGVtPiBpdGVtID0gd2ViUGFn
ZVByb3h5LmJhY2tGb3J3YXJkTGlzdCgpLmN1cnJlbnRJdGVtKCk7CisKKyAgICBpZiAoIW1fZW5h
YmxlZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKCFpdGVtKQorICAgICAgICByZXR1cm47
CisKKyAgICBXS1ZpZXcgKndrVmlldyA9IHdlYlBhZ2VQcm94eS53a1ZpZXcoKTsKKyAgICBOU1dp
bmRvdyAqd2luZG93ID0gd2tWaWV3LndpbmRvdzsKKworICAgIGlmICghW3dpbmRvdyB3aW5kb3dO
dW1iZXJdKQorICAgICAgICByZXR1cm47CisKKyAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gd2lu
ZG93U25hcHNob3RJbWFnZSA9IGFkb3B0Q0YoQ0dXaW5kb3dMaXN0Q3JlYXRlSW1hZ2UoQ0dSZWN0
TnVsbCwga0NHV2luZG93TGlzdE9wdGlvbkluY2x1ZGluZ1dpbmRvdywgW3dpbmRvdyB3aW5kb3dO
dW1iZXJdLCBrQ0dXaW5kb3dJbWFnZUJvdW5kc0lnbm9yZUZyYW1pbmcgfCBrQ0dXaW5kb3dJbWFn
ZVNob3VsZEJlT3BhcXVlKSk7CisKKyAgICBOU1JlY3Qgd2luZG93Q2FwdHVyZVJlY3QgPSBbd2tW
aWV3IGNvbnZlcnRSZWN0Olt3a1ZpZXcgYm91bmRzXSB0b1ZpZXc6bmlsXTsKKyAgICBOU1JlY3Qg
d2luZG93Q2FwdHVyZVNjcmVlblJlY3QgPSBbd2luZG93IGNvbnZlcnRSZWN0VG9TY3JlZW46d2lu
ZG93Q2FwdHVyZVJlY3RdOworICAgIENHUmVjdCB3aW5kb3dTY3JlZW5SZWN0OworICAgIENHU0dl
dFNjcmVlblJlY3RGb3JXaW5kb3coQ0dTTWFpbkNvbm5lY3Rpb25JRCgpLCAoQ0dTV2luZG93SUQp
W3dpbmRvdyB3aW5kb3dOdW1iZXJdLCAmd2luZG93U2NyZWVuUmVjdCk7CisKKyAgICBOU1JlY3Qg
Y3JvcHBlZEltYWdlUmVjdCA9IHdpbmRvd0NhcHR1cmVSZWN0OworICAgIGNyb3BwZWRJbWFnZVJl
Y3Qub3JpZ2luLnkgPSB3aW5kb3dTY3JlZW5SZWN0LnNpemUuaGVpZ2h0IC0gd2luZG93Q2FwdHVy
ZVNjcmVlblJlY3Quc2l6ZS5oZWlnaHQgLSBOU01pblkod2luZG93Q2FwdHVyZVJlY3QpOworCisg
ICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IGNyb3BwZWRJbWFnZSA9IGFkb3B0Q0YoQ0dJbWFnZUNy
ZWF0ZVdpdGhJbWFnZUluUmVjdCh3aW5kb3dTbmFwc2hvdEltYWdlLmdldCgpLCBOU1JlY3RUb0NH
UmVjdChbd2luZG93IGNvbnZlcnRSZWN0VG9CYWNraW5nOmNyb3BwZWRJbWFnZVJlY3RdKSkpOwor
CisgICAgaXRlbS0+c2V0U25hcHNob3RVVUlEKGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKSk7
CisgICAgbV9zbmFwc2hvdE1hcC5hZGQoaXRlbS0+c25hcHNob3RVVUlEKCksIHN0ZDo6bWFrZV9w
YWlyKGNyb3BwZWRJbWFnZSwgd2ViUGFnZVByb3h5LnJlbmRlclRyZWVTaXplKCkpKTsKK30KKwor
Q0dJbWFnZVJlZiBWaWV3U25hcHNob3RTdG9yZTo6Z2V0U25hcHNob3RBbmRSZW5kZXJUcmVlU2l6
ZShXZWJCYWNrRm9yd2FyZExpc3RJdGVtKiBpdGVtLCB1aW50NjRfdCYgcmVuZGVyVHJlZVNpemUp
Cit7CisgICAgY29uc3QgYXV0byYgc25hcHNob3RBbmRSZW5kZXJUcmVlU2l6ZSA9IG1fc25hcHNo
b3RNYXAuZmluZChpdGVtLT5zbmFwc2hvdFVVSUQoKSk7CisKKyAgICBpZiAoc25hcHNob3RBbmRS
ZW5kZXJUcmVlU2l6ZSA9PSBtX3NuYXBzaG90TWFwLmVuZCgpKSB7CisgICAgICAgIHJlbmRlclRy
ZWVTaXplID0gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgcmVuZGVy
VHJlZVNpemUgPSBzbmFwc2hvdEFuZFJlbmRlclRyZWVTaXplLT52YWx1ZS5zZWNvbmQ7CisgICAg
cmV0dXJuIHNuYXBzaG90QW5kUmVuZGVyVHJlZVNpemUtPnZhbHVlLmZpcnN0LmdldCgpOworfQor
Cit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYktp
dDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA0NWY2YTY2Yi4uMDhkZWYzNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMzky
LDYgKzM5Miw4IEBACiAJCTJEMTI1QzVGMTg1N0VBMDUwMDNCQTNDQiAvKiBWaWV3R2VzdHVyZUNv
bnRyb2xsZXIubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAyRDEyNUM1RDE4NTdFQTA1MDAzQkEzQ0IgLyogVmlld0dlc3R1cmVDb250cm9sbGVyLm1tICov
OyB9OwogCQkyRDFCNUQ1RDE4NTg2OUM4MDA2QzY1OTYgLyogVmlld0dlc3R1cmVDb250cm9sbGVy
TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDJEMUI1RDVCMTg1ODY5QzgwMDZDNjU5NiAvKiBWaWV3R2VzdHVyZUNvbnRyb2xs
ZXJNZXNzYWdlUmVjZWl2ZXIuY3BwICovOyB9OwogCQkyRDFCNUQ1RTE4NTg2OUM4MDA2QzY1OTYg
LyogVmlld0dlc3R1cmVDb250cm9sbGVyTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEMUI1RDVDMTg1ODY5QzgwMDZDNjU5NiAvKiBWaWV3
R2VzdHVyZUNvbnRyb2xsZXJNZXNzYWdlcy5oICovOyB9OworCQkyRDI1NjIxNTE4ODdBOTBDMDBD
Njk2MzkgLyogVmlld1NuYXBzaG90U3RvcmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDJEMjU2MjEzMTg4N0E5MEMwMEM2OTYzOSAvKiBWaWV3U25hcHNo
b3RTdG9yZS5oICovOyB9OworCQkyRDI1NjIxNjE4ODdBOTBDMDBDNjk2MzkgLyogVmlld1NuYXBz
aG90U3RvcmUubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAyRDI1NjIxNDE4ODdBOTBDMDBDNjk2MzkgLyogVmlld1NuYXBzaG90U3RvcmUubW0gKi87IH07
CiAJCTJEMjhGM0U0MTg4NUNDQzEwMDRCOUVBRSAvKiBXZWJDaHJvbWVDbGllbnRJT1MubW0gaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRDI4RjNFMDE4ODVD
Q0MxMDA0QjlFQUUgLyogV2ViQ2hyb21lQ2xpZW50SU9TLm1tICovOyB9OwogCQkyRDI4RjNFNTE4
ODVDQ0MxMDA0QjlFQUUgLyogV2ViRGF0YWJhc2VNYW5hZ2VySU9TLm1tIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkQyOEYzRTExODg1Q0NDMTAwNEI5RUFF
IC8qIFdlYkRhdGFiYXNlTWFuYWdlcklPUy5tbSAqLzsgfTsKIAkJMkQyOEYzRTYxODg1Q0NDMTAw
NEI5RUFFIC8qIFdlYkVkaXRvckNsaWVudElPUy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEMjhGM0UyMTg4NUNDQzEwMDRCOUVBRSAvKiBXZWJFZGl0
b3JDbGllbnRJT1MubW0gKi87IH07CkBAIC0yMDMxLDYgKzIwMzMsOCBAQAogCQkyRDFCNUQ1QTE4
NTg2NTk5MDA2QzY1OTYgLyogVmlld0dlc3R1cmVDb250cm9sbGVyLm1lc3NhZ2VzLmluICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9
IFZpZXdHZXN0dXJlQ29udHJvbGxlci5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMkQxQjVENUIxODU4NjlDODAwNkM2NTk2IC8qIFZpZXdHZXN0dXJlQ29udHJvbGxl
ck1lc3NhZ2VSZWNlaXZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBWaWV3R2VzdHVyZUNvbnRyb2xsZXJNZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkyRDFCNUQ1QzE4NTg2OUM4MDA2QzY1OTYgLyogVmlld0dlc3R1cmVD
b250cm9sbGVyTWVzc2FnZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVmll
d0dlc3R1cmVDb250cm9sbGVyTWVzc2FnZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMkQyNTYyMTMxODg3QTkwQzAwQzY5NjM5IC8qIFZpZXdTbmFwc2hvdFN0b3JlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFZpZXdTbmFwc2hvdFN0b3JlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTJEMjU2MjE0MTg4N0E5MEMwMEM2OTYzOSAvKiBWaWV3U25h
cHNob3RTdG9yZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFZp
ZXdTbmFwc2hvdFN0b3JlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyRDI4RjNF
MDE4ODVDQ0MxMDA0QjlFQUUgLyogV2ViQ2hyb21lQ2xpZW50SU9TLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gV2ViQ2hyb21lQ2xpZW50SU9TLm1tOyBwYXRoID0g
aW9zL1dlYkNocm9tZUNsaWVudElPUy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MkQyOEYzRTExODg1Q0NDMTAwNEI5RUFFIC8qIFdlYkRhdGFiYXNlTWFuYWdlcklPUy5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFdlYkRhdGFiYXNlTWFuYWdlcklP
Uy5tbTsgcGF0aCA9IGlvcy9XZWJEYXRhYmFzZU1hbmFnZXJJT1MubW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTJEMjhGM0UyMTg4NUNDQzEwMDRCOUVBRSAvKiBXZWJFZGl0b3JDbGll
bnRJT1MubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBXZWJFZGl0
b3JDbGllbnRJT1MubW07IHBhdGggPSBpb3MvV2ViRWRpdG9yQ2xpZW50SU9TLm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtNTY2MSw2ICs1NjY1LDggQEAKIAkJCQkyRDEyNUM1QzE4
NTdFQTA1MDAzQkEzQ0IgLyogVmlld0dlc3R1cmVDb250cm9sbGVyLmggKi8sCiAJCQkJMkQxMjVD
NUQxODU3RUEwNTAwM0JBM0NCIC8qIFZpZXdHZXN0dXJlQ29udHJvbGxlci5tbSAqLywKIAkJCQky
RDFCNUQ1QTE4NTg2NTk5MDA2QzY1OTYgLyogVmlld0dlc3R1cmVDb250cm9sbGVyLm1lc3NhZ2Vz
LmluICovLAorCQkJCTJEMjU2MjEzMTg4N0E5MEMwMEM2OTYzOSAvKiBWaWV3U25hcHNob3RTdG9y
ZS5oICovLAorCQkJCTJEMjU2MjE0MTg4N0E5MEMwMEM2OTYzOSAvKiBWaWV3U25hcHNob3RTdG9y
ZS5tbSAqLywKIAkJCQk3MjhFODZFRjE3OTUxODhDMDA4Nzg3OUUgLyogV2ViQ29sb3JQaWNrZXJN
YWMuaCAqLywKIAkJCQk3MjhFODZGMDE3OTUxODhDMDA4Nzg3OUUgLyogV2ViQ29sb3JQaWNrZXJN
YWMubW0gKi8sCiAJCQkJMUExQzY0ODYxMUY0MTVCNzAwNTUzQzE5IC8qIFdlYkNvbnRleHRNYWMu
bW0gKi8sCkBAIC02MzY0LDYgKzYzNzAsNyBAQAogCQkJCTJEQTk0NDkxMTg4NEUzQjUwMEVEODZE
QiAvKiBXS0ludGVyYWN0aW9uVmlldy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzMwOTM0NDgxMzE1
QjkyMjAwOTdBN0JDIC8qIFdlYkNvb2tpZU1hbmFnZXJNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMzMwOTM0NTYxMzE1Qjk3NTAwOTdBN0JDIC8qIFdlYkNvb2tpZU1hbmFnZXJQcm94eS5o
IGluIEhlYWRlcnMgKi8sCisJCQkJMkQyNTYyMTUxODg3QTkwQzAwQzY5NjM5IC8qIFZpZXdTbmFw
c2hvdFN0b3JlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTVFNzcyQzE4NDAwOEI5MDAwNzIwM0Yg
LyogRGF0YWJhc2VQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkzM0FBMTA2NzEzMUYwNjAwMDBENEE1NzUgLyogV2ViQ29va2llTWFuYWdlclByb3h5Q2xpZW50
LmggaW4gSGVhZGVycyAqLywKIAkJCQkzMzA5MzQ0QTEzMTVCOTIyMDA5N0E3QkMgLyogV2ViQ29v
a2llTWFuYWdlclByb3h5TWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLApAQCAtNzQ5Nyw2ICs3NTA0
LDcgQEAKIAkJCQlCQzY0Njk2RjExREJFNjAzMDA2NDU1QjAgLyogQVBJQXJyYXkuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJQkNCQ0IwQ0QxMjE1RTMzQTAwREU1OUNBIC8qIEltbXV0YWJsZURpY3Rp
b25hcnkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkMyMDRFRTIxMUM4M0U5ODAwOEYzMzc1IC8q
IEluamVjdGVkQnVuZGxlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTJEMjU2MjE2MTg4N0E5MEMw
MEM2OTYzOSAvKiBWaWV3U25hcHNob3RTdG9yZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTM3QzRD
MDkzMTgxNEIzQUYwMDM2ODhCOSAvKiBXS05TQXJyYXkubW0gaW4gU291cmNlcyAqLywKIAkJCQk5
MzVFRUJBMTEyNzc2MUNDMDAzMzIyQjggLyogSW5qZWN0ZWRCdW5kbGVCYWNrRm9yd2FyZExpc3Qu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTM1RUVCQTMxMjc3NjFEMzAwMzMyMkI4IC8qIEluamVj
dGVkQnVuZGxlQmFja0ZvcndhcmRMaXN0SXRlbS5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKaW5kZXggNDk3Y2I1Yy4uNjE5YWRjOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRl
ckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKQEAgLTE1NTEsNyArMTU1MSw3IEBAIHZvaWQgV2Vi
RnJhbWVMb2FkZXJDbGllbnQ6OmRpZENoYW5nZVNjcm9sbE9mZnNldCgpCiAgICAgaWYgKCFtX2Zy
YW1lLT5jb3JlRnJhbWUoKS0+dmlldygpKQogICAgICAgICByZXR1cm47CiAKLSAgICB3ZWJQYWdl
LT5kaWRDaGFuZ2VTY3JvbGxPZmZzZXRGb3JNYWluRnJhbWUoKTsKKyAgICB3ZWJQYWdlLT51cGRh
dGVNYWluRnJhbWVTY3JvbGxPZmZzZXRQaW5uaW5nKCk7CiB9CiAKIGJvb2wgV2ViRnJhbWVMb2Fk
ZXJDbGllbnQ6OmFsbG93U2NyaXB0KGJvb2wgZW5hYmxlZFBlclNldHRpbmdzKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdHZXN0dXJlR2VvbWV0cnlD
b2xsZWN0b3IuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdHZXN0
dXJlR2VvbWV0cnlDb2xsZWN0b3IuY3BwCmluZGV4IDQxMTlhOGMuLjJiYmY5MjQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9WaWV3R2VzdHVyZUdlb21ldHJ5
Q29sbGVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvVmll
d0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvci5jcHAKQEAgLTQyLDYgKzQyLDggQEAgbmFtZXNwYWNl
IFdlYktpdCB7CiAKIFZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3I6OlZpZXdHZXN0dXJlR2Vv
bWV0cnlDb2xsZWN0b3IoV2ViUGFnZSYgd2ViUGFnZSkKICAgICA6IG1fd2ViUGFnZSh3ZWJQYWdl
KQorICAgICwgbV9yZW5kZXJUcmVlU2l6ZU5vdGlmaWNhdGlvblRocmVzaG9sZCgwKQorICAgICwg
bV9yZW5kZXJUcmVlU2l6ZU5vdGlmaWNhdGlvblRpbWVyKFJ1bkxvb3A6Om1haW4oKSwgdGhpcywg
JlZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3I6OnJlbmRlclRyZWVTaXplTm90aWZpY2F0aW9u
VGltZXJGaXJlZCkKIHsKICAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5hZGRNZXNzYWdlUmVjZWl2
ZXIoTWVzc2FnZXM6OlZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3I6Om1lc3NhZ2VSZWNlaXZl
ck5hbWUoKSwgbV93ZWJQYWdlLnBhZ2VJRCgpLCAqdGhpcyk7CiB9CkBAIC03Nyw0ICs3OSwxNyBA
QCB2b2lkIFZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3I6OmNvbGxlY3RHZW9tZXRyeUZvclNt
YXJ0TWFnbmlmaWNhdGlvbkdlc3R1cmUoRgogICAgIH0KIH0KIAordm9pZCBWaWV3R2VzdHVyZUdl
b21ldHJ5Q29sbGVjdG9yOjptYWluRnJhbWVEaWRMYXlvdXQoKQoreworICAgIGlmIChtX3JlbmRl
clRyZWVTaXplTm90aWZpY2F0aW9uVGhyZXNob2xkICYmIG1fd2ViUGFnZS5yZW5kZXJUcmVlU2l6
ZSgpID49IG1fcmVuZGVyVHJlZVNpemVOb3RpZmljYXRpb25UaHJlc2hvbGQpIHsKKyAgICAgICAg
bV9yZW5kZXJUcmVlU2l6ZU5vdGlmaWNhdGlvblRpbWVyLnN0YXJ0T25lU2hvdCgwKTsKKyAgICAg
ICAgbV9yZW5kZXJUcmVlU2l6ZU5vdGlmaWNhdGlvblRocmVzaG9sZCA9IDA7CisgICAgfQorfQor
Cit2b2lkIFZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3I6OnJlbmRlclRyZWVTaXplTm90aWZp
Y2F0aW9uVGltZXJGaXJlZCgpCit7CisgICAgbV93ZWJQYWdlLnNlbmQoTWVzc2FnZXM6OlZpZXdH
ZXN0dXJlQ29udHJvbGxlcjo6RGlkSGl0UmVuZGVyVHJlZVNpemVUaHJlc2hvbGQoKSk7Cit9CisK
IH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1ZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3IuaCBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9WaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yLmgKaW5k
ZXggMzIwOTU3Yi4uODJiOWU3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL1ZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3IuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvci5oCkBA
IC0yNyw2ICsyNyw3IEBACiAjZGVmaW5lIFZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3JfaAog
CiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCisjaW5jbHVkZSA8V1RGL1J1bkxvb3AuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgRmxvYXRQb2ludDsKQEAgLTQxLDYgKzQyLDgg
QEAgcHVibGljOgogICAgIFZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3IoV2ViUGFnZSYpOwog
ICAgIH5WaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yKCk7CiAKKyAgICB2b2lkIG1haW5GcmFt
ZURpZExheW91dCgpOworCiBwcml2YXRlOgogICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyLgog
ICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24qLCBJUEM6
Ok1lc3NhZ2VEZWNvZGVyJikgb3ZlcnJpZGU7CkBAIC00OCw4ICs1MSwxNCBAQCBwcml2YXRlOgog
ICAgIC8vIE1lc3NhZ2UgaGFuZGxlcnMuCiAgICAgdm9pZCBjb2xsZWN0R2VvbWV0cnlGb3JNYWdu
aWZpY2F0aW9uR2VzdHVyZSgpOwogICAgIHZvaWQgY29sbGVjdEdlb21ldHJ5Rm9yU21hcnRNYWdu
aWZpY2F0aW9uR2VzdHVyZShXZWJDb3JlOjpGbG9hdFBvaW50IG9yaWdpbik7CisgICAgdm9pZCBz
ZXRSZW5kZXJUcmVlU2l6ZU5vdGlmaWNhdGlvblRocmVzaG9sZCh1aW50NjRfdCBzaXplKSB7IG1f
cmVuZGVyVHJlZVNpemVOb3RpZmljYXRpb25UaHJlc2hvbGQgPSBzaXplOyB9CisKKyAgICB2b2lk
IHJlbmRlclRyZWVTaXplTm90aWZpY2F0aW9uVGltZXJGaXJlZCgpOwogCiAgICAgV2ViUGFnZSYg
bV93ZWJQYWdlOworCisgICAgdWludDY0X3QgbV9yZW5kZXJUcmVlU2l6ZU5vdGlmaWNhdGlvblRo
cmVzaG9sZDsKKyAgICBSdW5Mb29wOjpUaW1lcjxWaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9y
PiBtX3JlbmRlclRyZWVTaXplTm90aWZpY2F0aW9uVGltZXI7CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9W
aWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3IubWVzc2FnZXMu
aW4KaW5kZXggNjVlYWE1OC4uMzliMThiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1ZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3IubWVzc2FnZXMuaW4K
KysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdHZXN0dXJlR2VvbWV0
cnlDb2xsZWN0b3IubWVzc2FnZXMuaW4KQEAgLTI1LDQgKzI1LDUgQEAgbWVzc2FnZXMgLT4gVmll
d0dlc3R1cmVHZW9tZXRyeUNvbGxlY3RvciB7CiBDb2xsZWN0R2VvbWV0cnlGb3JNYWduaWZpY2F0
aW9uR2VzdHVyZSgpCiBDb2xsZWN0R2VvbWV0cnlGb3JTbWFydE1hZ25pZmljYXRpb25HZXN0dXJl
KFdlYkNvcmU6OkZsb2F0UG9pbnQgb3JpZ2luKQogCitTZXRSZW5kZXJUcmVlU2l6ZU5vdGlmaWNh
dGlvblRocmVzaG9sZCh1aW50NjRfdCBzaXplKQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDcxNmVkYmUuLmYyNmM3Y2YgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTMwMDQsNyAr
MzAwNCw3IEBAIHZvaWQgV2ViUGFnZTo6Y2xlYXJTZWxlY3Rpb24oKQogICAgIG1fcGFnZS0+Zm9j
dXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCkuc2VsZWN0aW9uKCkuY2xlYXIoKTsK
IH0KIAotdm9pZCBXZWJQYWdlOjpkaWRDaGFuZ2VTY3JvbGxPZmZzZXRGb3JNYWluRnJhbWUoKQor
dm9pZCBXZWJQYWdlOjp1cGRhdGVNYWluRnJhbWVTY3JvbGxPZmZzZXRQaW5uaW5nKCkKIHsKICAg
ICBGcmFtZSYgZnJhbWUgPSBtX3BhZ2UtPm1haW5GcmFtZSgpOwogICAgIEludFBvaW50IHNjcm9s
bFBvc2l0aW9uID0gZnJhbWUudmlldygpLT5zY3JvbGxQb3NpdGlvbigpOwpAQCAtMzA0NSw2ICsz
MDQ1LDEwIEBAIHZvaWQgV2ViUGFnZTo6bWFpbkZyYW1lRGlkTGF5b3V0KCkKICAgICAgICAgfQog
ICAgIH0KICNlbmRpZgorCisjaWYgUExBVEZPUk0oTUFDKQorICAgIG1fdmlld0dlc3R1cmVHZW9t
ZXRyeUNvbGxlY3Rvci5tYWluRnJhbWVEaWRMYXlvdXQoKTsKKyNlbmRpZgogfQogCiB2b2lkIFdl
YlBhZ2U6OmFkZFBsdWdpblZpZXcoUGx1Z2luVmlldyogcGx1Z2luVmlldykKQEAgLTM5NTMsNiAr
Mzk1Nyw4IEBAIHZvaWQgV2ViUGFnZTo6ZGlkQ29tbWl0TG9hZChXZWJGcmFtZSogZnJhbWUpCiAj
ZW5kaWYKIAogICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLnVwZGF0ZUFjdGl2ZVBhZ2VzKCk7CisK
KyAgICB1cGRhdGVNYWluRnJhbWVTY3JvbGxPZmZzZXRQaW5uaW5nKCk7CiB9CiAKIHZvaWQgV2Vi
UGFnZTo6ZGlkRmluaXNoTG9hZChXZWJGcmFtZSogZnJhbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCA2ZjA0ZDYzLi42ZWUyN2UxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTU4MSw3ICs1ODEs
NyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRNZWRpYVZvbHVtZShmbG9hdCk7CiAgICAgdm9pZCBz
ZXRNYXlTdGFydE1lZGlhV2hlbkluV2luZG93KGJvb2wpOwogCi0gICAgdm9pZCBkaWRDaGFuZ2VT
Y3JvbGxPZmZzZXRGb3JNYWluRnJhbWUoKTsKKyAgICB2b2lkIHVwZGF0ZU1haW5GcmFtZVNjcm9s
bE9mZnNldFBpbm5pbmcoKTsKIAogICAgIHZvaWQgbWFpbkZyYW1lRGlkTGF5b3V0KCk7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>221882</attachid>
            <date>2014-01-22 11:23:22 -0800</date>
            <delta_ts>2014-01-22 13:10:10 -0800</delta_ts>
            <desc>mac build fix</desc>
            <filename>swipe1.diff</filename>
            <type>text/plain</type>
            <size>56324</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCBiYzk4ODljLi4zNzI0YzllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xMzksNiArMTM5
LDE1NiBAQAogCiAyMDE0LTAxLTIxICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUu
Y29tPgogCisgICAgICAgIFdlYktpdDIgVmlldyBHZXN0dXJlczogRmx1aWQgYmFjay1mb3J3YXJk
IHN3aXBlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MjczNjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBB
ZGQgc3VwcG9ydCBmb3IgYSAiYmFjay1mb3J3YXJkIHN3aXBlIiwgd2hpY2ggYWxsb3dzIGZsdWlk
IHN3aXBpbmcgYmV0d2VlbgorICAgICAgICBpdGVtcyBpbiB0aGUgYmFjay1mb3J3YXJkIGxpc3Qu
IEN1cnJlbnRseSBkaXNhYmxlZCBieSBkZWZhdWx0LgorCisgICAgICAgICogU2hhcmVkL1dlYkJh
Y2tGb3J3YXJkTGlzdEl0ZW0uaDoKKyAgICAgICAgKFdlYktpdDo6V2ViQmFja0ZvcndhcmRMaXN0
SXRlbTo6c2V0U25hcHNob3RVVUlEKToKKyAgICAgICAgKFdlYktpdDo6V2ViQmFja0ZvcndhcmRM
aXN0SXRlbTo6c25hcHNob3RVVUlEKToKKyAgICAgICAgKiBVSVByb2Nlc3MvY2YvV2ViQmFja0Zv
cndhcmRMaXN0Q0YuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJCYWNrRm9yd2FyZExpc3Q6OmNy
ZWF0ZUNGRGljdGlvbmFyeVJlcHJlc2VudGF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6ZXh0cmFj
dEJhY2tGb3J3YXJkTGlzdEVudHJpZXNGcm9tQXJyYXkpOgorICAgICAgICBTdG9yZSBhbmQgc2Vy
aWFsaXplIGEgVVVJRCBhbG9uZyB3aXRoIGVhY2ggYmFjay1mb3J3YXJkIGxpc3QgaXRlbSB3aGlj
aAorICAgICAgICBpZGVudGlmaWVzIHRoYXQgaXRlbSdzIHZpZXcgc25hcHNob3QgaW4gdGhlIFZp
ZXdTbmFwc2hvdFN0b3JlLgorCisgICAgICAgICogVUlQcm9jZXNzL2NmL1dlYlBhZ2VQcm94eUNG
LmNwcDoKKyAgICAgICAgQnVtcCB0aGUgc2Vzc2lvbiBzdGF0ZSBkYXRhIHZlcnNpb24sIGFzIHdl
IGNoYW5nZWQgdGhlIFdlYkJhY2tGb3J3YXJkTGlzdCBmb3JtYXQuCisKKyAgICAgICAgKiBTaGFy
ZWQvV2ViUHJlZmVyZW5jZXNTdG9yZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1By
ZWZlcmVuY2VzLmNwcDoKKyAgICAgICAgKFdLUHJlZmVyZW5jZXNTZXRWaWV3R2VzdHVyZURlYnVn
Z2luZ0VuYWJsZWQpOgorICAgICAgICAoV0tQcmVmZXJlbmNlc0dldFZpZXdHZXN0dXJlRGVidWdn
aW5nRW5hYmxlZCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXNQcml2
YXRlLmg6CisgICAgICAgIEFkZCBhIFZpZXdHZXN0dXJlRGVidWdnaW5nRW5hYmxlZCBwcmVmZXJl
bmNlLCB3aGljaCBjdXJyZW50bHkgY2F1c2VzIHNuYXBzaG90cyB0byBiZSBibHVycmVkLgorICAg
ICAgICBBZGRpdGlvbmFsIHZpZXcgZ2VzdHVyZSBkZWJ1Z2dpbmcgZmVhdHVyZXMgY291bGQgY29t
ZSBpbiB0aGUgZnV0dXJlLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ZpZXdQ
cml2YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tOgorICAgICAg
ICAoLVtXS1ZpZXcgX2Vuc3VyZUdlc3R1cmVDb250cm9sbGVyXSk6CisgICAgICAgICgtW1dLVmll
dyBzY3JvbGxXaGVlbDpdKToKKyAgICAgICAgSWYgYmFjay1mb3J3YXJkIG5hdmlnYXRpb24gZ2Vz
dHVyZXMgYXJlIGVuYWJsZWQsIGludGVyY2VwdCBzY3JvbGxXaGVlbCBldmVudHMKKyAgICAgICAg
b24gdGhlIFdLVmlldyBhbmQgbGV0IHRoZSBWaWV3R2VzdHVyZUNvbnRyb2xsZXIgdGFrZSB0aGUg
Zmlyc3QgY3JhY2sgYXQgdGhlbS4KKworICAgICAgICAoLVtXS1ZpZXcgX3Jvb3RMYXllcl0pOgor
ICAgICAgICAoLVtXS1ZpZXcgc2F2ZUJhY2tGb3J3YXJkU25hcHNob3RGb3JDdXJyZW50SXRlbV0p
OgorICAgICAgICAoLVtXS1ZpZXcgc2V0QWxsb3dzQmFja0ZvcndhcmROYXZpZ2F0aW9uR2VzdHVy
ZXM6XSk6CisgICAgICAgICgtW1dLVmlldyBhbGxvd3NCYWNrRm9yd2FyZE5hdmlnYXRpb25HZXN0
dXJlc10pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvbWFjL1dLVmlld0ludGVybmFsLmg6Cisg
ICAgICAgIEFkZCBhbGxvd3NCYWNrRm9yd2FyZE5hdmlnYXRpb25HZXN0dXJlIHByb3BlcnR5LCB3
aGljaCBlbmFibGVzIHRoZSBnZXN0dXJlLgorICAgICAgICBBZGQgc2F2ZUJhY2tGb3J3YXJkU25h
cHNob3RGb3JDdXJyZW50SXRlbSBTUEksIHdoaWNoIGNsaWVudHMgY291bGQgcG90ZW50aWFsbHkK
KyAgICAgICAgdXNlIHdoZW4gdGhleSBrbm93IHRoZXkncmUgYWJvdXQgdG8gbWFuaXB1bGF0ZSB0
aGUgdmlldyBoaWVyYXJjaHkgaW4gc3VjaCBhIHdheQorICAgICAgICB0aGF0IHRoZXkgd2FudCB0
aGUgY3VycmVudCBiYWNrLWZvcndhcmQgaXRlbSdzIHNuYXBzaG90IHRvIGJlIHVwIHRvIGRhdGUu
CisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZVByb3h5Ojpnb0ZvcndhcmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJv
eHk6OmdvQmFjayk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Z29Ub0JhY2tGb3J3
YXJkSXRlbSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkU3RhcnRQcm92aXNp
b25hbExvYWRGb3JGcmFtZSk6CisgICAgICAgIFVwZGF0ZSB0aGUgY3VycmVudCBiYWNrLWZvcndh
cmQgaXRlbSdzIHNuYXBzaG90IGltbWVkaWF0ZWx5IGJlZm9yZSBuYXZpZ2F0aW5nLgorCisgICAg
ICAgICogVUlQcm9jZXNzL21hYy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIuaDoKKyAgICAgICAgQWRk
IHN3aXBlLXJlbGF0ZWQgbWV0aG9kcywgd2hpY2ggd2lsbCBiZSBkZXNjcmliZWQgYmVsb3cuCisK
KyAgICAgICAgQWRkIGFuIGVudW0gZm9yIHRoZSBzd2lwZSB0cmFuc2l0aW9uIHN0eWxlLiBDdXJy
ZW50bHkgb25seSBPdmVybGFwIGlzIGFjY2Vzc2libGUsCisgICAgICAgIGJ1dCBpbiB0aGUgZnV0
dXJlIG9uZSBjb3VsZCBzZWUgaGF2aW5nIEFQSSB0byBjaG9vc2UgdGhlIHN0eWxlLgorICAgICAg
ICAnT3ZlcmxhcCcgaGFzIHRoZSBvdXRnb2luZyBwYWdlIHN3aXBlIG91dCB0byB0aGUgcmlnaHQg
KHdoZW4gc3dpcGluZyByaWdodCkKKyAgICAgICAgb3IgdGhlIGluY29taW5nIHBhZ2Ugc3dpcGUg
aW4gZnJvbSB0aGUgcmlnaHQgKHdoZW4gc3dpcGluZyBsZWZ0KS4KKyAgICAgICAgJ1B1c2gnIGhh
cyB0aGUgcGFnZXMgcHVzaCBlYWNoIG90aGVyIGFsb25nIGluIHN5bmMsIGFzIGlmIGFsbCB0aGUg
cGFnZXMgaW4gdGhlCisgICAgICAgIGJhY2stZm9yd2FyZCBsaXN0IHdlcmUgb3JpZW50ZWQgZnJv
bSBsZWZ0IHRvIHJpZ2h0LgorCisgICAgICAgICogVUlQcm9jZXNzL21hYy9WaWV3R2VzdHVyZUNv
bnRyb2xsZXIubWVzc2FnZXMuaW46CisgICAgICAgICogVUlQcm9jZXNzL21hYy9WaWV3R2VzdHVy
ZUNvbnRyb2xsZXIubW06IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFj
L1ZpZXdHZXN0dXJlQ29udHJvbGxlci5jcHAuCisgICAgICAgIFVzZSBzb21lIENBRmlsdGVyIFNQ
SSB0byBibHVyIHRoZSBzbmFwc2hvdCBpZiBWaWV3R2VzdHVyZURlYnVnZ2luZ0VuYWJsZWQgaXMg
b24uCisKKyAgICAgICAgKFdlYktpdDo6Vmlld0dlc3R1cmVDb250cm9sbGVyOjpWaWV3R2VzdHVy
ZUNvbnRyb2xsZXIpOgorICAgICAgICAoV2ViS2l0OjpWaWV3R2VzdHVyZUNvbnRyb2xsZXI6On5W
aWV3R2VzdHVyZUNvbnRyb2xsZXIpOgorICAgICAgICAoV2ViS2l0OjpWaWV3R2VzdHVyZUNvbnRy
b2xsZXI6OmVuZE1hZ25pZmljYXRpb25HZXN0dXJlKToKKyAgICAgICAgTW92ZSBtX2FjdGl2ZUdl
c3R1cmVUeXBlIGNsZWFyaW5nIHRvIGVhY2ggZW5kKiBmdW5jdGlvbiBpbnN0ZWFkIG9mIG9uZSBn
bG9iYWwgcGxhY2UsCisgICAgICAgIHNvIHRoYXQgZWFjaCBnZXN0dXJlIGNhbiBoYW5kbGUgd2hl
biBpdCBlbmRzIHNlcGFyYXRlbHkuCisKKyAgICAgICAgKFdlYktpdDo6Vmlld0dlc3R1cmVDb250
cm9sbGVyOjpoYW5kbGVTY3JvbGxXaGVlbEV2ZW50KToKKyAgICAgICAgSWYgd2UgcmVjZWl2ZSBh
IHNjcm9sbCB3aGVlbCBldmVudCB3aGljaCBpcyBhcHByb3ByaWF0ZSBmb3Igc3RhcnRpbmcgYQor
ICAgICAgICBmbHVpZCBzd2lwZSwgaW4gYSBkaXJlY3Rpb24gd2hlcmUgdGhlIG1haW4gZnJhbWUg
aXMgcGlubmVkIHRvIHRoZSBhcHByb3ByaWF0ZQorICAgICAgICBlZGdlIG9mIHRoZSB2aWV3LCBz
dGFydCB0cmFja2luZyBhIHN3aXBlLgorCisgICAgICAgIFRoaXMgc2hvdWxkIGV2ZW50dWFsbHkg
aGF2ZSBzb21lIGh5c3RlcmlzaXMgdG8gYXZvaWQgc3RlYWxpbmcgc2Nyb2xscyB0aGF0CisgICAg
ICAgIHZlbnR1cmUgaW50byB0aGUgd3JvbmcgZGlyZWN0aW9uLCBidXQgZm9yIG5vdyBpdCBzdGFy
dHMgdHJhY2tpbmcgaW1tZWRpYXRlbHkuCisKKyAgICAgICAgRm9yd2FyZCBldmVudHMgZnJvbSB0
aGUgdHJhY2tpbmcgbG9vcCB0byB7YmVnaW4sIGhhbmRsZSwgZW5kfVN3aXBlR2VzdHVyZS4KKwor
ICAgICAgICAoV2ViS2l0OjpWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OmJlZ2luU3dpcGVHZXN0dXJl
KToKKyAgICAgICAgQ3JlYXRlIGEgbGF5ZXIgd2l0aCB0aGUgZGVzdGluYXRpb24gcGFnZSdzIHNu
YXBzaG90LCBhbmQgc2V0IGl0IHVwLgorCisgICAgICAgIChXZWJLaXQ6OlZpZXdHZXN0dXJlQ29u
dHJvbGxlcjo6aGFuZGxlU3dpcGVHZXN0dXJlKToKKyAgICAgICAgQXBwcm9wcmlhdGVseSBhZGp1
c3QgdGhlIHBvc2l0aW9uIG9mIHRoZSByb290IGxheWVyIGFuZCBzbmFwc2hvdCBsYXllciwKKyAg
ICAgICAgZ2l2ZW4gdGhlIHRyYW5zaXRpb24gc3R5bGUgYW5kIHN3aXBlIGRpcmVjdGlvbi4KKwor
ICAgICAgICAoV2ViS2l0OjpWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OmVuZFN3aXBlR2VzdHVyZSk6
CisgICAgICAgIFdoZW4gdGhlIGdlc3R1cmUgZW5kcywgZG8gdGhlIG5hdmlnYXRpb24sIGFuZCB0
ZWxsIHRoZSBXZWJQcm9jZXNzIHRvCisgICAgICAgIGluZm9ybSB1cyB3aGVuIHRoZSByZW5kZXIg
dHJlZSBoaXRzIGhhbGYgdGhlIHNpemUgaXQgd2FzIHdoZW4gdGhlCisgICAgICAgIHNuYXBzaG90
IHdhcyB0YWtlbiAod2hlbiB0aGF0IGhhcHBlbnMsIHdlIHdpbGwgcmVtb3ZlIHRoZSBzbmFwc2hv
dAorICAgICAgICBhbmQgdGhlIGdlc3R1cmUgd2lsbCBiZSB0cnVseSBjb21wbGV0ZSkuIEFsc28s
IHN0YXJ0IGEgd2F0Y2hkb2cgdGltZXIKKyAgICAgICAgaW4gY2FzZSB0aGUgcmVuZGVyIHRyZWUg
bmV2ZXIgaGl0cyB0aGF0IHNpemUsIGFmdGVyIHdoaWNoIHdlIHdpbGwKKyAgICAgICAgYWxzbyBy
ZW1vdmUgdGhlIHNuYXBzaG90LgorCisgICAgICAgIChXZWJLaXQ6OlZpZXdHZXN0dXJlQ29udHJv
bGxlcjo6ZGlkSGl0UmVuZGVyVHJlZVNpemVUaHJlc2hvbGQpOgorICAgICAgICAoV2ViS2l0OjpW
aWV3R2VzdHVyZUNvbnRyb2xsZXI6OnN3aXBlU25hcHNob3RXYXRjaGRvZ1RpbWVyRmlyZWQpOgor
ICAgICAgICAoV2ViS2l0OjpWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OnJlbW92ZVN3aXBlU25hcHNo
b3QpOgorICAgICAgICBUZWFyIGRvd24gdGhlIHN3aXBlIHNuYXBzaG90IGxheWVyLCBhbmQgbWFy
ayBvdXIgY3VycmVudCBnZXN0dXJlIGFzIGNvbXBsZXRlLgorCisgICAgICAgIChXZWJLaXQ6OlZp
ZXdHZXN0dXJlQ29udHJvbGxlcjo6ZW5kQWN0aXZlR2VzdHVyZSk6CisgICAgICAgIFNpbXBsaWZ5
IGVuZEFjdGl2ZUdlc3R1cmU7IGl0IG9ubHkgaGFzIHdvcmsgdG8gZG8gZm9yIGEgcGluY2gtem9v
bSBnZXN0dXJlLAorICAgICAgICBhcyB0aG9zZSBhcmUgdGhlIG9ubHkgZ2VzdHVyZXMgd2hlcmUg
dGhlIHVzZXIgaXMgZGlyZWN0bHkgaW4gY29udHJvbCBvZiB3aGVuIHRoZXkgZW5kLgorCisgICAg
ICAgICogVUlQcm9jZXNzL21hYy9WaWV3U25hcHNob3RTdG9yZS5oOiBDb3BpZWQgZnJvbSBTb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rv
ci5oLgorICAgICAgICAoV2ViS2l0OjpWaWV3U25hcHNob3RTdG9yZTo6ZGlzYWJsZVNuYXBzaG90
dGluZyk6CisgICAgICAgIChXZWJLaXQ6OlZpZXdTbmFwc2hvdFN0b3JlOjplbmFibGVTbmFwc2hv
dHRpbmcpOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvVmlld1NuYXBzaG90U3RvcmUubW06IEFk
ZGVkLgorICAgICAgICAoV2ViS2l0OjpWaWV3U25hcHNob3RTdG9yZTo6Vmlld1NuYXBzaG90U3Rv
cmUpOgorICAgICAgICAoV2ViS2l0OjpWaWV3U25hcHNob3RTdG9yZTo6flZpZXdTbmFwc2hvdFN0
b3JlKToKKyAgICAgICAgKFdlYktpdDo6Vmlld1NuYXBzaG90U3RvcmU6OnNoYXJlZCk6CisgICAg
ICAgIChXZWJLaXQ6OlZpZXdTbmFwc2hvdFN0b3JlOjp0YWtlU25hcHNob3QpOgorICAgICAgICAo
V2ViS2l0OjpWaWV3U25hcHNob3RTdG9yZTo6Z2V0U25hcHNob3RBbmRSZW5kZXJUcmVlU2l6ZSk6
CisgICAgICAgIEFkZCBhIHNpZGUgbWFwIG9mIHNuYXBzaG90cywgd2hpY2ggYXJlIGlkZW50aWZp
ZWQgYnkgVVVJRHMgKHdoaWNoIGFyZSBzdG9yZWQKKyAgICAgICAgaW5zaWRlIHRoZSBhc3NvY2lh
dGVkIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0pLgorICAgICAgICBXZSB1c2Ugd2luZG93IHNlcnZl
ciBzbmFwc2hvdHMsIHNpbWlsYXIgdG8gV2ViS2l0VGVzdFJ1bm5lciwgdG8gbWF0Y2ggcHJlY2lz
ZWx5CisgICAgICAgIHRoZSBwYWdlIGFzIHJlbmRlcmVkIG9uLXNjcmVlbi4KKyAgICAgICAgQ3Vy
cmVudGx5IHRoZXJlIGlzIG5vIG1hbmFnZW1lbnQgb2YgdGhlIHNpemUgb2YgdGhpcyBjYWNoZSwg
YW5kIGl0IHdpbGwgZ3JvdyB3aXRob3V0CisgICAgICAgIGJvdW5kOyBiZXR0ZXIgY2FjaGUgbWFu
YWdlbWVudCBpcyBjb21pbmcgaW4gYSBmdXR1cmUgcGF0Y2guCisKKyAgICAgICAgKiBXZWJLaXQy
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBh
Z2UvVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlZp
ZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3I6OlZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3Ip
OgorICAgICAgICAoV2ViS2l0OjpWaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yOjptYWluRnJh
bWVEaWRMYXlvdXQpOgorICAgICAgICAoV2ViS2l0OjpWaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVj
dG9yOjpyZW5kZXJUcmVlU2l6ZU5vdGlmaWNhdGlvblRpbWVyRmlyZWQpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViUGFnZS9WaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yLmg6CisgICAgICAg
IChXZWJLaXQ6OlZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3I6OnNldFJlbmRlclRyZWVTaXpl
Tm90aWZpY2F0aW9uVGhyZXNob2xkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvVmll
d0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvci5tZXNzYWdlcy5pbjoKKyAgICAgICAgVmlld0dlc3R1
cmVDb250cm9sbGVyIHB1c2hlcyBhIHJlbmRlci10cmVlIHNpemUgdGhyZXNob2xkIHRvIHRoZSBX
ZWJQcm9jZXNzOworICAgICAgICBWaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yICh3aG9zZSBu
YW1lIGlzIG5vdyBtb3JlIHVuZm9ydHVuYXRlIHRoYW4gYmVmb3JlKQorICAgICAgICBtb25pdG9y
cyByZW5kZXItdHJlZSBzaXplIGNoYW5nZXMgYW5kIGluZm9ybXMgVmlld0dlc3R1cmVDb250cm9s
bGVyIHdoZW4KKyAgICAgICAgaXQgcmVhY2hlcyB0aGF0IHRocmVzaG9sZCB2aWEgdGhlICdEaWRI
aXRSZW5kZXJUcmVlU2l6ZVRocmVzaG9sZCcgbWVzc2FnZS4KKworICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlkQ2hhbmdlU2Nyb2xsT2Zmc2V0KToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2U6OnVwZGF0ZU1haW5GcmFtZVNjcm9sbE9mZnNldFBpbm5pbmcpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlOjptYWluRnJhbWVEaWRMYXlvdXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlOjpkaWRDb21taXRMb2FkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5oOgorICAgICAgICBSZW5hbWUgV2ViUGFnZTo6ZGlkQ2hhbmdlU2Nyb2xsT2Zmc2V0Rm9yTWFp
bkZyYW1lIHRvCisgICAgICAgIHVwZGF0ZU1haW5GcmFtZVNjcm9sbE9mZnNldFBpbm5pbmcsIHdo
aWNoIGJldHRlciBkZXNjcmliZXMgd2hhdCBpdAorICAgICAgICBhY3R1YWxseSBkb2VzLiBDYWxs
IGl0IHdoZW4gYSBsb2FkIGNvbXBsZXRlcywgc28gdGhhdCB3ZSBoYXZlIHZhbGlkCisgICAgICAg
IHBpbm5pbmcgc3RhdGUgYmVmb3JlIHRoZSBmaXJzdCBzY3JvbGwgZXZlbnQgY29tZXMgaW4uCisK
KzIwMTQtMDEtMjEgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisKICAg
ICAgICAgTWFrZSBWaWV3R2VzdHVyZUNvbnRyb2xsZXIgT2JqLUMrKwogICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI3Mzg1CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJCYWNrRm9yd2FyZExpc3RJdGVtLmggYi9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvV2ViQmFja0ZvcndhcmRMaXN0SXRlbS5oCmluZGV4IGIxMzlmYTAuLjE3OTIz
MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJCYWNrRm9yd2FyZExpc3RJ
dGVtLmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkJhY2tGb3J3YXJkTGlzdEl0ZW0u
aApAQCAtMzEsOCArMzEsOCBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBu
YW1lc3BhY2UgSVBDIHsKLSAgICBjbGFzcyBBcmd1bWVudERlY29kZXI7Ci0gICAgY2xhc3MgQXJn
dW1lbnRFbmNvZGVyOworY2xhc3MgQXJndW1lbnREZWNvZGVyOworY2xhc3MgQXJndW1lbnRFbmNv
ZGVyOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTYwLDYgKzYwLDkgQEAgcHVibGljOgog
ICAgIHZvaWQgc2V0QmFja0ZvcndhcmREYXRhKGNvbnN0IHVpbnQ4X3QqIGJ1ZmZlciwgc2l6ZV90
IHNpemUpOwogICAgIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgYmFja0ZvcndhcmREYXRhKCkgY29u
c3QgeyByZXR1cm4gbV9iYWNrRm9yd2FyZERhdGE7IH0KIAorICAgIHZvaWQgc2V0U25hcHNob3RV
VUlEKGNvbnN0IFN0cmluZyYgdXVpZCkgeyBtX3NuYXBzaG90VVVJRCA9IHV1aWQ7IH0KKyAgICBj
b25zdCBTdHJpbmcmIHNuYXBzaG90VVVJRCgpIGNvbnN0IHsgcmV0dXJuIG1fc25hcHNob3RVVUlE
OyB9CisKICAgICB2b2lkIGVuY29kZShJUEM6OkFyZ3VtZW50RW5jb2RlciYpIGNvbnN0OwogICAg
IHN0YXRpYyBQYXNzUmVmUHRyPFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0+IGRlY29kZShJUEM6OkFy
Z3VtZW50RGVjb2RlciYpOwogCkBAIC03Myw2ICs3Niw3IEBAIHByaXZhdGU6CiAgICAgU3RyaW5n
IG1fdGl0bGU7CiAgICAgdWludDY0X3QgbV9pdGVtSUQ7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IG1f
YmFja0ZvcndhcmREYXRhOworICAgIFN0cmluZyBtX3NuYXBzaG90VVVJRDsKIH07CiAKIHR5cGVk
ZWYgVmVjdG9yPFJlZlB0cjxXZWJCYWNrRm9yd2FyZExpc3RJdGVtPj4gQmFja0ZvcndhcmRMaXN0
SXRlbVZlY3RvcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcmVmZXJl
bmNlc1N0b3JlLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJlZmVyZW5jZXNTdG9yZS5o
CmluZGV4IGU5ZjcxMTQuLjMyYWRkNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9XZWJQcmVmZXJlbmNlc1N0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlBy
ZWZlcmVuY2VzU3RvcmUuaApAQCAtMTc5LDYgKzE3OSw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewog
ICAgIG1hY3JvKFVzZUxlZ2FjeVRleHRBbGlnblBvc2l0aW9uZWRFbGVtZW50QmVoYXZpb3IsIHVz
ZUxlZ2FjeVRleHRBbGlnblBvc2l0aW9uZWRFbGVtZW50QmVoYXZpb3IsIEJvb2wsIGJvb2wsIGZh
bHNlKSBcCiAgICAgbWFjcm8oU3BhdGlhbE5hdmlnYXRpb25FbmFibGVkLCBzcGF0aWFsTmF2aWdh
dGlvbkVuYWJsZWQsIEJvb2wsIGJvb2wsIGZhbHNlKSBcCiAgICAgbWFjcm8oTWVkaWFTb3VyY2VF
bmFibGVkLCBtZWRpYVNvdXJjZUVuYWJsZWQsIEJvb2wsIGJvb2wsIGZhbHNlKSBcCisgICAgbWFj
cm8oVmlld0dlc3R1cmVEZWJ1Z2dpbmdFbmFibGVkLCB2aWV3R2VzdHVyZURlYnVnZ2luZ0VuYWJs
ZWQsIEJvb2wsIGJvb2wsIGZhbHNlKSBcCiAgICAgXAogCiAjZGVmaW5lIEZPUl9FQUNIX1dFQktJ
VF9ET1VCTEVfUFJFRkVSRU5DRShtYWNybykgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXMuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXMuY3BwCmluZGV4IGVkZTA5ZDkuLmQ1MmQyNDQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNlcy5jcHAKQEAg
LTEyNDUsMyArMTI0NSwxMyBAQCBib29sIFdLUHJlZmVyZW5jZXNHZXRNZWRpYVNvdXJjZUVuYWJs
ZWQoV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNlc1JlZikKIHsKICAgICByZXR1cm4gdG9JbXBs
KHByZWZlcmVuY2VzUmVmKS0+bWVkaWFTb3VyY2VFbmFibGVkKCk7CiB9CisKK3ZvaWQgV0tQcmVm
ZXJlbmNlc1NldFZpZXdHZXN0dXJlRGVidWdnaW5nRW5hYmxlZChXS1ByZWZlcmVuY2VzUmVmIHBy
ZWZlcmVuY2VzUmVmLCBib29sIGVuYWJsZWQpCit7CisgICAgdG9JbXBsKHByZWZlcmVuY2VzUmVm
KS0+c2V0Vmlld0dlc3R1cmVEZWJ1Z2dpbmdFbmFibGVkKGVuYWJsZWQpOworfQorCitib29sIFdL
UHJlZmVyZW5jZXNHZXRWaWV3R2VzdHVyZURlYnVnZ2luZ0VuYWJsZWQoV0tQcmVmZXJlbmNlc1Jl
ZiBwcmVmZXJlbmNlc1JlZikKK3sKKyAgICByZXR1cm4gdG9JbXBsKHByZWZlcmVuY2VzUmVmKS0+
dmlld0dlc3R1cmVEZWJ1Z2dpbmdFbmFibGVkKCk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNlc1ByaXZhdGUuaCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzUHJpdmF0ZS5oCmluZGV4IDg2N2M5OTcu
LjgwODUyNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1By
ZWZlcmVuY2VzUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9X
S1ByZWZlcmVuY2VzUHJpdmF0ZS5oCkBAIC0zMTQsNiArMzE0LDEwIEBAIFdLX0VYUE9SVCBib29s
IFdLUHJlZmVyZW5jZXNVc2VMZWdhY3lUZXh0QWxpZ25Qb3NpdGlvbmVkRWxlbWVudEJlaGF2aW9y
KFdLUHJlZmVyCiBXS19FWFBPUlQgdm9pZCBXS1ByZWZlcmVuY2VzU2V0TWVkaWFTb3VyY2VFbmFi
bGVkKFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXNSZWYsIGJvb2wgZW5hYmxlZCk7CiBXS19F
WFBPUlQgYm9vbCBXS1ByZWZlcmVuY2VzR2V0TWVkaWFTb3VyY2VFbmFibGVkKFdLUHJlZmVyZW5j
ZXNSZWYgcHJlZmVyZW5jZXNSZWYpOwogCisvLyBEZWZhdWx0IHRvIGZhbHNlLgorV0tfRVhQT1JU
IHZvaWQgV0tQcmVmZXJlbmNlc1NldFZpZXdHZXN0dXJlRGVidWdnaW5nRW5hYmxlZChXS1ByZWZl
cmVuY2VzUmVmIHByZWZlcmVuY2VzUmVmLCBib29sIGVuYWJsZWQpOworV0tfRVhQT1JUIGJvb2wg
V0tQcmVmZXJlbmNlc0dldFZpZXdHZXN0dXJlRGVidWdnaW5nRW5hYmxlZChXS1ByZWZlcmVuY2Vz
UmVmIHByZWZlcmVuY2VzUmVmKTsKKwogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CiAjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tWaWV3UHJpdmF0
ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ZpZXdQcml2YXRlLmgK
aW5kZXggMGY3OGMwZC4uOTI4NDkxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1ZpZXdQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1ZpZXdQcml2YXRlLmgKQEAgLTY2LDYgKzY2LDcgQEAKIEBwcm9wZXJ0
eSAocmVhZG9ubHksIGdldHRlcj1pc1VzaW5nVUlTaWRlQ29tcG9zaXRpbmcpIEJPT0wgdXNpbmdV
SVNpZGVDb21wb3NpdGluZzsKIEBwcm9wZXJ0eSAocmVhZHdyaXRlKSBCT09MIGFsbG93c01hZ25p
ZmljYXRpb247CiBAcHJvcGVydHkgKHJlYWR3cml0ZSkgZG91YmxlIG1hZ25pZmljYXRpb247CitA
cHJvcGVydHkgKHJlYWR3cml0ZSkgQk9PTCBhbGxvd3NCYWNrRm9yd2FyZE5hdmlnYXRpb25HZXN0
dXJlczsKIAogQHByb3BlcnR5KGNvcHksIG5vbmF0b21pYykgTlNDb2xvciAqdW5kZXJsYXlDb2xv
cjsKIApAQCAtODUsNiArODYsOCBAQAogCiAtICh2b2lkKXNldE1hZ25pZmljYXRpb246KGRvdWJs
ZSltYWduaWZpY2F0aW9uIGNlbnRlcmVkQXRQb2ludDooTlNQb2ludClwb2ludDsKIAorLSAodm9p
ZClzYXZlQmFja0ZvcndhcmRTbmFwc2hvdEZvckN1cnJlbnRJdGVtOworCiAjZW5kaWYKIAogQGVu
ZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1t
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tCmluZGV4IDNmZmU4
MzQuLjFjODQzN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFj
L1dLVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcu
bW0KQEAgLTUwLDYgKzUwLDcgQEAKICNpbXBvcnQgIlRleHRDaGVja2VyU3RhdGUuaCIKICNpbXBv
cnQgIlRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhUHJveHkuaCIKICNpbXBvcnQgIlZpZXdH
ZXN0dXJlQ29udHJvbGxlci5oIgorI2ltcG9ydCAiVmlld1NuYXBzaG90U3RvcmUuaCIKICNpbXBv
cnQgIldLQVBJQ2FzdC5oIgogI2ltcG9ydCAiV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlci5o
IgogI2ltcG9ydCAiV0tQcmludGluZ1ZpZXcuaCIKQEAgLTU3LDYgKzU4LDcgQEAKICNpbXBvcnQg
IldLVGV4dElucHV0V2luZG93Q29udHJvbGxlci5oIgogI2ltcG9ydCAiV0tWaWV3SW50ZXJuYWwu
aCIKICNpbXBvcnQgIldLVmlld1ByaXZhdGUuaCIKKyNpbXBvcnQgIldlYkJhY2tGb3J3YXJkTGlz
dC5oIgogI2ltcG9ydCAiV2ViQ29udGV4dC5oIgogI2ltcG9ydCAiV2ViRXZlbnRGYWN0b3J5Lmgi
CiAjaW1wb3J0ICJXZWJLaXQySW5pdGlhbGl6ZS5oIgpAQCAtMjE5LDYgKzIyMSw3IEBAIHN0cnVj
dCBXS1ZpZXdJbnRlcnByZXRLZXlFdmVudHNQYXJhbWV0ZXJzIHsKIAogICAgIHN0ZDo6dW5pcXVl
X3B0cjxWaWV3R2VzdHVyZUNvbnRyb2xsZXI+IF9nZXN0dXJlQ29udHJvbGxlcjsKICAgICBCT09M
IF9hbGxvd3NNYWduaWZpY2F0aW9uOworICAgIEJPT0wgX2FsbG93c0JhY2tGb3J3YXJkTmF2aWdh
dGlvbkdlc3R1cmVzOwogfQogCiBAZW5kCkBAIC0xMDkxLDE2ICsxMDk0LDI1IEBAIE5BVElWRV9N
T1VTRV9FVkVOVF9IQU5ETEVSKHJpZ2h0TW91c2VVcCkKIAogI3VuZGVmIE5BVElWRV9NT1VTRV9F
VkVOVF9IQU5ETEVSCiAKLSNkZWZpbmUgTkFUSVZFX0VWRU5UX0hBTkRMRVIoU2VsZWN0b3IsIFR5
cGUpIFwKLSAgICAtICh2b2lkKVNlbGVjdG9yOihOU0V2ZW50ICopdGhlRXZlbnQgXAotICAgIHsg
XAotICAgICAgICBOYXRpdmVXZWIjI1R5cGUjI0V2ZW50IHdlYkV2ZW50ID0gTmF0aXZlV2ViIyNU
eXBlIyNFdmVudCh0aGVFdmVudCwgc2VsZik7IFwKLSAgICAgICAgX2RhdGEtPl9wYWdlLT5oYW5k
bGUjI1R5cGUjI0V2ZW50KHdlYkV2ZW50KTsgXAotICAgIH0KKy0gKHZvaWQpX2Vuc3VyZUdlc3R1
cmVDb250cm9sbGVyCit7CisgICAgaWYgKF9kYXRhLT5fZ2VzdHVyZUNvbnRyb2xsZXIpCisgICAg
ICAgIHJldHVybjsKIAotTkFUSVZFX0VWRU5UX0hBTkRMRVIoc2Nyb2xsV2hlZWwsIFdoZWVsKQor
ICAgIF9kYXRhLT5fZ2VzdHVyZUNvbnRyb2xsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFZpZXdHZXN0
dXJlQ29udHJvbGxlcj4oKl9kYXRhLT5fcGFnZSk7Cit9CiAKLSN1bmRlZiBOQVRJVkVfRVZFTlRf
SEFORExFUgorLSAodm9pZClzY3JvbGxXaGVlbDooTlNFdmVudCAqKWV2ZW50Cit7CisgICAgaWYg
KF9kYXRhLT5fYWxsb3dzQmFja0ZvcndhcmROYXZpZ2F0aW9uR2VzdHVyZXMpIHsKKyAgICAgICAg
W3NlbGYgX2Vuc3VyZUdlc3R1cmVDb250cm9sbGVyXTsKKyAgICAgICAgaWYgKF9kYXRhLT5fZ2Vz
dHVyZUNvbnRyb2xsZXItPmhhbmRsZVNjcm9sbFdoZWVsRXZlbnQoZXZlbnQpKQorICAgICAgICAg
ICAgcmV0dXJuOworICAgIH0KKworICAgIE5hdGl2ZVdlYldoZWVsRXZlbnQgd2ViRXZlbnQgPSBO
YXRpdmVXZWJXaGVlbEV2ZW50KGV2ZW50LCBzZWxmKTsKKyAgICBfZGF0YS0+X3BhZ2UtPmhhbmRs
ZVdoZWVsRXZlbnQod2ViRXZlbnQpOworfQogCiAtICh2b2lkKW1vdXNlTW92ZWQ6KE5TRXZlbnQg
KilldmVudAogewpAQCAtMjQ2OCw2ICsyNDgwLDExIEBAIHN0YXRpYyBOU1N0cmluZyAqIGNvbnN0
IGJhY2tpbmdQcm9wZXJ0eU9sZFNjYWxlRmFjdG9yS2V5ID0gQCJOU0JhY2tpbmdQcm9wZXJ0eU9s
CiAgICAgX2RhdGEtPl9maW5kSW5kaWNhdG9yV2luZG93LT5zZXRGaW5kSW5kaWNhdG9yKGZpbmRJ
bmRpY2F0b3IsIGZhZGVPdXQsIGFuaW1hdGUpOwogfQogCistIChDQUxheWVyICopX3Jvb3RMYXll
cgoreworICAgIHJldHVybiBbX2RhdGEtPl9sYXllckhvc3RpbmdWaWV3IGxheWVyXTsKK30KKwog
LSAodm9pZClfc2V0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGVSb290TGF5ZXI6KENBTGF5ZXIg
Kilyb290TGF5ZXIKIHsKICAgICBbQ0FUcmFuc2FjdGlvbiBiZWdpbl07CkBAIC0yODIzLDYgKzI4
NDAsMTEgQEAgc3RhdGljIE5TU3RyaW5nICpwYXRoV2l0aFVuaXF1ZUZpbGVuYW1lRm9yUGF0aChO
U1N0cmluZyAqcGF0aCkKIAogQGltcGxlbWVudGF0aW9uIFdLVmlldyAoUHJpdmF0ZSkKIAorLSAo
dm9pZClzYXZlQmFja0ZvcndhcmRTbmFwc2hvdEZvckN1cnJlbnRJdGVtCit7CisgICAgVmlld1Nu
YXBzaG90U3RvcmU6OnNoYXJlZCgpLnRha2VTbmFwc2hvdCgqX2RhdGEtPl9wYWdlKTsKK30KKwog
LSAodm9pZClfcmVnaXN0ZXJEcmFnZ2VkVHlwZXMKIHsKICAgICBOU011dGFibGVTZXQgKnR5cGVz
ID0gW1tOU011dGFibGVTZXQgYWxsb2NdIGluaXRXaXRoQXJyYXk6UGFzdGVib2FyZFR5cGVzOjpm
b3JFZGl0aW5nKCldOwpAQCAtMzE5MywxNCArMzIxNSw2IEBAIHN0YXRpYyBOU1N0cmluZyAqcGF0
aFdpdGhVbmlxdWVGaWxlbmFtZUZvclBhdGgoTlNTdHJpbmcgKnBhdGgpCiAgICAgcmV0dXJuIE5P
OwogfQogCi0tICh2b2lkKV9lbnN1cmVHZXN0dXJlQ29udHJvbGxlcgotewotICAgIGlmIChfZGF0
YS0+X2dlc3R1cmVDb250cm9sbGVyKQotICAgICAgICByZXR1cm47Ci0KLSAgICBfZGF0YS0+X2dl
c3R1cmVDb250cm9sbGVyID0gc3RkOjptYWtlX3VuaXF1ZTxWaWV3R2VzdHVyZUNvbnRyb2xsZXI+
KCpfZGF0YS0+X3BhZ2UpOwotfQotCiAtICh2b2lkKXNldEFsbG93c01hZ25pZmljYXRpb246KEJP
T0wpYWxsb3dzTWFnbmlmaWNhdGlvbgogewogICAgIF9kYXRhLT5fYWxsb3dzTWFnbmlmaWNhdGlv
biA9IGFsbG93c01hZ25pZmljYXRpb247CkBAIC0zMjExLDYgKzMyMjUsMTYgQEAgc3RhdGljIE5T
U3RyaW5nICpwYXRoV2l0aFVuaXF1ZUZpbGVuYW1lRm9yUGF0aChOU1N0cmluZyAqcGF0aCkKICAg
ICByZXR1cm4gX2RhdGEtPl9hbGxvd3NNYWduaWZpY2F0aW9uOwogfQogCistICh2b2lkKXNldEFs
bG93c0JhY2tGb3J3YXJkTmF2aWdhdGlvbkdlc3R1cmVzOihCT09MKWFsbG93c0JhY2tGb3J3YXJk
TmF2aWdhdGlvbkdlc3R1cmVzCit7CisgICAgX2RhdGEtPl9hbGxvd3NCYWNrRm9yd2FyZE5hdmln
YXRpb25HZXN0dXJlcyA9IGFsbG93c0JhY2tGb3J3YXJkTmF2aWdhdGlvbkdlc3R1cmVzOworfQor
CistIChCT09MKWFsbG93c0JhY2tGb3J3YXJkTmF2aWdhdGlvbkdlc3R1cmVzCit7CisgICAgcmV0
dXJuIF9kYXRhLT5fYWxsb3dzQmFja0ZvcndhcmROYXZpZ2F0aW9uR2VzdHVyZXM7Cit9CisKIC0g
KHZvaWQpbWFnbmlmeVdpdGhFdmVudDooTlNFdmVudCAqKWV2ZW50CiB7CiAgICAgaWYgKCFfZGF0
YS0+X2FsbG93c01hZ25pZmljYXRpb24pIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvbWFjL1dLVmlld0ludGVybmFsLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL21hYy9XS1ZpZXdJbnRlcm5hbC5oCmluZGV4IDQ4ZTZiOTMuLjY4YTEwMmIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlld0ludGVybmFsLmgK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3SW50ZXJuYWwuaApA
QCAtMzEsMjEgKzMxLDIyIEBACiAjaW1wb3J0IDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBJ
UEMgewotICAgIGNsYXNzIERhdGFSZWZlcmVuY2U7CitjbGFzcyBEYXRhUmVmZXJlbmNlOwogfQog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci0gICAgc3RydWN0IEtleXByZXNzQ29tbWFuZDsKLSAgICBj
bGFzcyBJbWFnZTsKLSAgICBjbGFzcyBTaGFyZWRCdWZmZXI7CitzdHJ1Y3QgS2V5cHJlc3NDb21t
YW5kOworY2xhc3MgSW1hZ2U7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiB9CiAKIG5hbWVzcGFjZSBX
ZWJLaXQgewotICAgIGNsYXNzIERyYXdpbmdBcmVhUHJveHk7Ci0gICAgY2xhc3MgRmluZEluZGlj
YXRvcjsKLSAgICBjbGFzcyBMYXllclRyZWVDb250ZXh0OwotICAgIHN0cnVjdCBDb2xvclNwYWNl
RGF0YTsKLSAgICBzdHJ1Y3QgRWRpdG9yU3RhdGU7CitjbGFzcyBEcmF3aW5nQXJlYVByb3h5Owor
Y2xhc3MgRmluZEluZGljYXRvcjsKK2NsYXNzIExheWVyVHJlZUNvbnRleHQ7CitjbGFzcyBWaWV3
R2VzdHVyZUNvbnRyb2xsZXI7CitzdHJ1Y3QgQ29sb3JTcGFjZURhdGE7CitzdHJ1Y3QgRWRpdG9y
U3RhdGU7CiB9CiAKIEBjbGFzcyBXS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyOwpAQCAtNjks
NiArNzAsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIC0gKHZvaWQpX3NldEZpbmRJbmRpY2F0b3I6
KFBhc3NSZWZQdHI8V2ViS2l0OjpGaW5kSW5kaWNhdG9yPilmaW5kSW5kaWNhdG9yIGZhZGVPdXQ6
KEJPT0wpZmFkZU91dCBhbmltYXRlOihCT09MKWFuaW1hdGU7CiAKIC0gKHZvaWQpX3NldEFjY2Vs
ZXJhdGVkQ29tcG9zaXRpbmdNb2RlUm9vdExheWVyOihDQUxheWVyICopcm9vdExheWVyOworLSAo
Q0FMYXllciAqKV9yb290TGF5ZXI7CiAKIC0gKHZvaWQpX3NldEFjY2Vzc2liaWxpdHlXZWJQcm9j
ZXNzVG9rZW46KE5TRGF0YSAqKWRhdGE7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5jcHAKaW5kZXggZDIzZGYyNy4uNDg5YzllNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTExOCw2ICsxMTgsMTAgQEAKICNpbmNsdWRlIDx3
dGYvUmVmQ291bnRlZExlYWtDb3VudGVyLmg+CiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKE1BQykK
KyNpbmNsdWRlICJWaWV3U25hcHNob3RTdG9yZS5oIgorI2VuZGlmCisKIC8vIFRoaXMgY29udHJv
bHMgd2hhdCBzdHJhdGVneSB3ZSB1c2UgZm9yIG1vdXNlIHdoZWVsIGNvYWxlc2NpbmcuCiAjZGVm
aW5lIE1FUkdFX1dIRUVMX0VWRU5UUyAxCiAKQEAgLTczOCw2ICs3NDIsMTMgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OnJlbG9hZChib29sIHJlbG9hZEZyb21PcmlnaW4pCiAgICAgbV9wcm9jZXNzLT5y
ZXNwb25zaXZlbmVzc1RpbWVyKCktPnN0YXJ0KCk7CiB9CiAKK3ZvaWQgV2ViUGFnZVByb3h5Ojp0
YWtlVmlld1NuYXBzaG90KCkKK3sKKyNpZiBQTEFURk9STShNQUMpCisgICAgVmlld1NuYXBzaG90
U3RvcmU6OnNoYXJlZCgpLnRha2VTbmFwc2hvdCgqdGhpcyk7CisjZW5kaWYKK30KKwogdm9pZCBX
ZWJQYWdlUHJveHk6OmdvRm9yd2FyZCgpCiB7CiAgICAgaWYgKGlzVmFsaWQoKSAmJiAhY2FuR29G
b3J3YXJkKCkpCkBAIC03NDcsNiArNzU4LDggQEAgdm9pZCBXZWJQYWdlUHJveHk6OmdvRm9yd2Fy
ZCgpCiAgICAgaWYgKCFmb3J3YXJkSXRlbSkKICAgICAgICAgcmV0dXJuOwogCisgICAgdGFrZVZp
ZXdTbmFwc2hvdCgpOworCiAgICAgYXV0byB0cmFuc2FjdGlvbiA9IG1fcGFnZUxvYWRTdGF0ZS50
cmFuc2FjdGlvbigpOwogCiAgICAgbV9wYWdlTG9hZFN0YXRlLnNldFBlbmRpbmdBUElSZXF1ZXN0
VVJMKHRyYW5zYWN0aW9uLCBmb3J3YXJkSXRlbS0+dXJsKCkpOwpAQCAtNzc0LDYgKzc4Nyw4IEBA
IHZvaWQgV2ViUGFnZVByb3h5Ojpnb0JhY2soKQogICAgIGlmICghYmFja0l0ZW0pCiAgICAgICAg
IHJldHVybjsKIAorICAgIHRha2VWaWV3U25hcHNob3QoKTsKKwogICAgIGF1dG8gdHJhbnNhY3Rp
b24gPSBtX3BhZ2VMb2FkU3RhdGUudHJhbnNhY3Rpb24oKTsKIAogICAgIG1fcGFnZUxvYWRTdGF0
ZS5zZXRQZW5kaW5nQVBJUmVxdWVzdFVSTCh0cmFuc2FjdGlvbiwgYmFja0l0ZW0tPnVybCgpKTsK
QEAgLTc5OCw2ICs4MTMsOCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Z29Ub0JhY2tGb3J3YXJkSXRl
bShXZWJCYWNrRm9yd2FyZExpc3RJdGVtKiBpdGVtKQogICAgICAgICByZWF0dGFjaFRvV2ViUHJv
Y2Vzc1dpdGhJdGVtKGl0ZW0pOwogICAgICAgICByZXR1cm47CiAgICAgfQorCisgICAgdGFrZVZp
ZXdTbmFwc2hvdCgpOwogICAgIAogICAgIGF1dG8gdHJhbnNhY3Rpb24gPSBtX3BhZ2VMb2FkU3Rh
dGUudHJhbnNhY3Rpb24oKTsKIApAQCAtMjEwMCw4ICsyMTE3LDEwIEBAIHZvaWQgV2ViUGFnZVBy
b3h5OjpkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIGNv
bnN0IFN0cmluCiAgICAgTUVTU0FHRV9DSEVDSyhmcmFtZSk7CiAgICAgTUVTU0FHRV9DSEVDS19V
UkwodXJsKTsKIAotICAgIGlmIChmcmFtZS0+aXNNYWluRnJhbWUoKSkKKyAgICBpZiAoZnJhbWUt
PmlzTWFpbkZyYW1lKCkpIHsKKyAgICAgICAgdGFrZVZpZXdTbmFwc2hvdCgpOwogICAgICAgICBt
X3BhZ2VMb2FkU3RhdGUuZGlkU3RhcnRQcm92aXNpb25hbExvYWQodHJhbnNhY3Rpb24sIHVybCwg
dW5yZWFjaGFibGVVUkwpOworICAgIH0KIAogICAgIGZyYW1lLT5zZXRVbnJlYWNoYWJsZVVSTCh1
bnJlYWNoYWJsZVVSTCk7CiAgICAgZnJhbWUtPmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKHVybCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggNzI0MGRjMi4uNzFl
MDQwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMTE2MCw2
ICsxMTYwLDggQEAgcHJpdmF0ZToKICAgICB2b2lkIGZpbmRQbHVnaW4oY29uc3QgU3RyaW5nJiBt
aW1lVHlwZSwgdWludDMyX3QgcHJvY2Vzc1R5cGUsIGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBj
b25zdCBTdHJpbmcmIGZyYW1lVVJMU3RyaW5nLCBjb25zdCBTdHJpbmcmIHBhZ2VVUkxTdHJpbmcs
IGJvb2wgYWxsb3dPbmx5QXBwbGljYXRpb25QbHVnaW5zLCB1aW50NjRfdCYgcGx1Z2luUHJvY2Vz
c1Rva2VuLCBTdHJpbmcmIG5ld01JTUVUeXBlLCB1aW50MzJfdCYgcGx1Z2luTG9hZFBvbGljeSwg
U3RyaW5nJiB1bmF2YWlsYWJpbGl0eURlc2NyaXB0aW9uKTsKICNlbmRpZgogCisgICAgdm9pZCB0
YWtlVmlld1NuYXBzaG90KCk7CisKICAgICBQYWdlQ2xpZW50JiBtX3BhZ2VDbGllbnQ7CiAgICAg
V2ViTG9hZGVyQ2xpZW50IG1fbG9hZGVyQ2xpZW50OwogICAgIFdlYlBvbGljeUNsaWVudCBtX3Bv
bGljeUNsaWVudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9jZi9XZWJC
YWNrRm9yd2FyZExpc3RDRi5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvY2YvV2ViQmFj
a0ZvcndhcmRMaXN0Q0YuY3BwCmluZGV4IDA4YTQ2ZTIuLmVkMjIxMTcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9jZi9XZWJCYWNrRm9yd2FyZExpc3RDRi5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2NmL1dlYkJhY2tGb3J3YXJkTGlzdENGLmNwcApAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTEsIDIwMTIgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwLCAyMDExLCAy
MDEyLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtNTgsNiArNTgsNyBAQCBzdGF0aWMgQ0ZTdHJpbmdSZWYgc2Vz
c2lvbkhpc3RvcnlFbnRyeVRpdGxlS2V5ID0gQ0ZTVFIoIlNlc3Npb25IaXN0b3J5RW50cnlUaXRs
ZQogc3RhdGljIENGU3RyaW5nUmVmIHNlc3Npb25IaXN0b3J5RW50cnlVUkxLZXkgPSBDRlNUUigi
U2Vzc2lvbkhpc3RvcnlFbnRyeVVSTCIpOwogc3RhdGljIENGU3RyaW5nUmVmIHNlc3Npb25IaXN0
b3J5RW50cnlPcmlnaW5hbFVSTEtleSA9IENGU1RSKCJTZXNzaW9uSGlzdG9yeUVudHJ5T3JpZ2lu
YWxVUkwiKTsKIHN0YXRpYyBDRlN0cmluZ1JlZiBzZXNzaW9uSGlzdG9yeUVudHJ5RGF0YUtleSA9
IENGU1RSKCJTZXNzaW9uSGlzdG9yeUVudHJ5RGF0YSIpOworc3RhdGljIENGU3RyaW5nUmVmIHNl
c3Npb25IaXN0b3J5RW50cnlTbmFwc2hvdFVVSURLZXkgPSBDRlNUUigiU2Vzc2lvbkhpc3RvcnlF
bnRyeVNuYXBzaG90VVVJRCIpOwogCiBzdGF0aWMgYm9vbCBleHRyYWN0QmFja0ZvcndhcmRMaXN0
RW50cmllc0Zyb21BcnJheShDRkFycmF5UmVmLCBCYWNrRm9yd2FyZExpc3RJdGVtVmVjdG9yJik7
CiAKQEAgLTEwNCwxNSArMTA1LDE2IEBAIENGRGljdGlvbmFyeVJlZiBXZWJCYWNrRm9yd2FyZExp
c3Q6OmNyZWF0ZUNGRGljdGlvbmFyeVJlcHJlc2VudGF0aW9uKFdlYlBhZ2VQcm94CiAgICAgICAg
IFJldGFpblB0cjxDRlN0cmluZ1JlZj4gdXJsID0gbV9lbnRyaWVzW2ldLT51cmwoKS5jcmVhdGVD
RlN0cmluZygpOwogICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHRpdGxlID0gbV9lbnRy
aWVzW2ldLT50aXRsZSgpLmNyZWF0ZUNGU3RyaW5nKCk7CiAgICAgICAgIFJldGFpblB0cjxDRlN0
cmluZ1JlZj4gb3JpZ2luYWxVUkwgPSBtX2VudHJpZXNbaV0tPm9yaWdpbmFsVVJMKCkuY3JlYXRl
Q0ZTdHJpbmcoKTsKKyAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiB1dWlkID0gbV9lbnRy
aWVzW2ldLT5zbmFwc2hvdFVVSUQoKS5jcmVhdGVDRlN0cmluZygpOwogCiAgICAgICAgIC8vIEZJ
WE1FOiBUaGlzIHVzZXMgdGhlIElQQyBkYXRhIGVuY29kaW5nIGZvcm1hdCwgd2hpY2ggbWVhbnMg
dGhhdCB3aGVuZXZlciB3ZSBjaGFuZ2UgdGhlIElQQyBlbmNvZGluZyB3ZSBuZWVkIHRvIGJ1bXAg
dGhlIEN1cnJlbnRTZXNzaW9uU3RhdGVEYXRhVmVyc2lvbgogICAgICAgICAvLyBjb25zdGFudCBp
biBXZWJQYWdlUHJveHlDRi5jcHAuIFRoZSBJUEMgZGF0YSBmb3JtYXQgaXMgbWVhbnQgdG8gYmUg
YW4gaW1wbGVtZW50YXRpb24gZGV0YWlsLCBhbmQgbm90IHNvbWV0aGluZyB0aGF0IHNob3VsZCBi
ZSB3cml0dGVuIHRvIGRpc2suCiAgICAgICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IGVudHJ5RGF0
YSA9IGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIG1fZW50cmllc1tp
XS0+YmFja0ZvcndhcmREYXRhKCkuZGF0YSgpLCBtX2VudHJpZXNbaV0tPmJhY2tGb3J3YXJkRGF0
YSgpLnNpemUoKSkpOwotICAgICAgICAKLSAgICAgICAgY29uc3Qgdm9pZCoga2V5c1s0XSA9IHsg
c2Vzc2lvbkhpc3RvcnlFbnRyeVVSTEtleSwgc2Vzc2lvbkhpc3RvcnlFbnRyeVRpdGxlS2V5LCBz
ZXNzaW9uSGlzdG9yeUVudHJ5T3JpZ2luYWxVUkxLZXksIHNlc3Npb25IaXN0b3J5RW50cnlEYXRh
S2V5IH07Ci0gICAgICAgIGNvbnN0IHZvaWQqIHZhbHVlc1s0XSA9IHsgdXJsLmdldCgpLCB0aXRs
ZS5nZXQoKSwgb3JpZ2luYWxVUkwuZ2V0KCksIGVudHJ5RGF0YS5nZXQoKSB9OwogCi0gICAgICAg
IFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IGVudHJ5RGljdGlvbmFyeSA9IGFkb3B0Q0YoQ0ZE
aWN0aW9uYXJ5Q3JlYXRlKDAsIGtleXMsIHZhbHVlcywgNCwgJmtDRlR5cGVEaWN0aW9uYXJ5S2V5
Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNhbGxCYWNrcykpOworICAgICAgICBj
b25zdCB2b2lkKiBrZXlzWzVdID0geyBzZXNzaW9uSGlzdG9yeUVudHJ5VVJMS2V5LCBzZXNzaW9u
SGlzdG9yeUVudHJ5VGl0bGVLZXksIHNlc3Npb25IaXN0b3J5RW50cnlPcmlnaW5hbFVSTEtleSwg
c2Vzc2lvbkhpc3RvcnlFbnRyeURhdGFLZXksIHNlc3Npb25IaXN0b3J5RW50cnlTbmFwc2hvdFVV
SURLZXkgfTsKKyAgICAgICAgY29uc3Qgdm9pZCogdmFsdWVzWzVdID0geyB1cmwuZ2V0KCksIHRp
dGxlLmdldCgpLCBvcmlnaW5hbFVSTC5nZXQoKSwgZW50cnlEYXRhLmdldCgpLCB1dWlkLmdldCgp
IH07CisKKyAgICAgICAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gZW50cnlEaWN0aW9uYXJ5
ID0gYWRvcHRDRihDRkRpY3Rpb25hcnlDcmVhdGUoMCwga2V5cywgdmFsdWVzLCA1LCAma0NGVHlw
ZURpY3Rpb25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tz
KSk7CiAgICAgICAgIENGQXJyYXlBcHBlbmRWYWx1ZShlbnRyaWVzLmdldCgpLCBlbnRyeURpY3Rp
b25hcnkuZ2V0KCkpOwogICAgIH0KICAgICAgICAgCkBAIC0zMDksMTMgKzMxMSwyMSBAQCBzdGF0
aWMgYm9vbCBleHRyYWN0QmFja0ZvcndhcmRMaXN0RW50cmllc0Zyb21BcnJheShDRkFycmF5UmVm
IGNmRW50cmllcywgQmFja0ZvcgogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9
CiAKKyAgICAgICAgQ0ZTdHJpbmdSZWYgc25hcHNob3RVVUlEID0gKENGU3RyaW5nUmVmKUNGRGlj
dGlvbmFyeUdldFZhbHVlKGVudHJ5RGljdGlvbmFyeSwgc2Vzc2lvbkhpc3RvcnlFbnRyeVNuYXBz
aG90VVVJREtleSk7CisgICAgICAgIGlmICghc25hcHNob3RVVUlEIHx8IENGR2V0VHlwZUlEKHNu
YXBzaG90VVVJRCkgIT0gQ0ZTdHJpbmdHZXRUeXBlSUQoKSkgeworICAgICAgICAgICAgTE9HKFNl
c3Npb25TdGF0ZSwgIldlYkJhY2tGb3J3YXJkTGlzdCBlbnRyeSBhdCBpbmRleCAlaSBkb2VzIG5v
dCBoYXZlIGEgdmFsaWQgc25hcHNob3QgVVVJRCIsIChpbnQpaSk7CisgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgIH0KKwogICAgICAgICBDRkRhdGFSZWYgYmFja0ZvcndhcmREYXRh
ID0gKENGRGF0YVJlZilDRkRpY3Rpb25hcnlHZXRWYWx1ZShlbnRyeURpY3Rpb25hcnksIHNlc3Np
b25IaXN0b3J5RW50cnlEYXRhS2V5KTsKICAgICAgICAgaWYgKCFiYWNrRm9yd2FyZERhdGEgfHwg
Q0ZHZXRUeXBlSUQoYmFja0ZvcndhcmREYXRhKSAhPSBDRkRhdGFHZXRUeXBlSUQoKSkgewogICAg
ICAgICAgICAgTE9HKFNlc3Npb25TdGF0ZSwgIldlYkJhY2tGb3J3YXJkTGlzdCBlbnRyeSBhdCBp
bmRleCAlaSBkb2VzIG5vdCBoYXZlIGJhY2svZm9yd2FyZCBkYXRhIiwgKGludClpKTsKICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgZW50cmll
cy5hcHBlbmQoV2ViQmFja0ZvcndhcmRMaXN0SXRlbTo6Y3JlYXRlKG9yaWdpbmFsVVJMLCBlbnRy
eVVSTCwgZW50cnlUaXRsZSwgQ0ZEYXRhR2V0Qnl0ZVB0cihiYWNrRm9yd2FyZERhdGEpLCBDRkRh
dGFHZXRMZW5ndGgoYmFja0ZvcndhcmREYXRhKSwgZ2VuZXJhdGVXZWJCYWNrRm9yd2FyZEl0ZW1J
RCgpKSk7CisKKyAgICAgICAgYXV0byBpdGVtID0gV2ViQmFja0ZvcndhcmRMaXN0SXRlbTo6Y3Jl
YXRlKG9yaWdpbmFsVVJMLCBlbnRyeVVSTCwgZW50cnlUaXRsZSwgQ0ZEYXRhR2V0Qnl0ZVB0cihi
YWNrRm9yd2FyZERhdGEpLCBDRkRhdGFHZXRMZW5ndGgoYmFja0ZvcndhcmREYXRhKSwgZ2VuZXJh
dGVXZWJCYWNrRm9yd2FyZEl0ZW1JRCgpKTsKKyAgICAgICAgaXRlbS0+c2V0U25hcHNob3RVVUlE
KHNuYXBzaG90VVVJRCk7CisgICAgICAgIGVudHJpZXMuYXBwZW5kKGl0ZW0pOwogICAgIH0KIAog
ICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2Nm
L1dlYlBhZ2VQcm94eUNGLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9jZi9XZWJQYWdl
UHJveHlDRi5jcHAKaW5kZXggMjk3Mjg5Ni4uZmM4MWMzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL2NmL1dlYlBhZ2VQcm94eUNGLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvY2YvV2ViUGFnZVByb3h5Q0YuY3BwCkBAIC00NCw3ICs0NCw3IEBAIG5hbWVz
cGFjZSBXZWJLaXQgewogc3RhdGljIENGU3RyaW5nUmVmIHNlc3Npb25IaXN0b3J5S2V5ID0gQ0ZT
VFIoIlNlc3Npb25IaXN0b3J5Iik7CiBzdGF0aWMgQ0ZTdHJpbmdSZWYgcHJvdmlzaW9uYWxVUkxL
ZXkgPSBDRlNUUigiUHJvdmlzaW9uYWxVUkwiKTsKIAotc3RhdGljIGNvbnN0IFVJbnQzMiBDdXJy
ZW50U2Vzc2lvblN0YXRlRGF0YVZlcnNpb24gPSAyOworc3RhdGljIGNvbnN0IFVJbnQzMiBDdXJy
ZW50U2Vzc2lvblN0YXRlRGF0YVZlcnNpb24gPSAzOwogCiBQYXNzUmVmUHRyPEFQSTo6RGF0YT4g
V2ViUGFnZVByb3h5OjpzZXNzaW9uU3RhdGVEYXRhKFdlYlBhZ2VQcm94eVNlc3Npb25TdGF0ZUZp
bHRlckNhbGxiYWNrIGZpbHRlciwgdm9pZCogY29udGV4dCkgY29uc3QKIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvVmlld0dlc3R1cmVDb250cm9sbGVyLmggYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1ZpZXdHZXN0dXJlQ29udHJvbGxlci5oCmluZGV4
IDJiYmMyZjMuLjg3Y2IyNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9t
YWMvVmlld0dlc3R1cmVDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L21hYy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDEzLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjgsOSArMjgsMTUgQEAKIAogI2luY2x1ZGUg
Ik1lc3NhZ2VSZWNlaXZlci5oIgogI2luY2x1ZGUgPFdlYkNvcmUvRmxvYXRSZWN0Lmg+CisjaW5j
bHVkZSA8V2ViQ29yZS9UaW1lci5oPgorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKworT0JK
Q19DTEFTUyBDQUxheWVyOworT0JKQ19DTEFTUyBOU0V2ZW50OwogCiBuYW1lc3BhY2UgV2ViS2l0
IHsKIAorY2xhc3MgV2ViQmFja0ZvcndhcmRMaXN0SXRlbTsKIGNsYXNzIFdlYlBhZ2VQcm94eTsK
IAogY2xhc3MgVmlld0dlc3R1cmVDb250cm9sbGVyIDogcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VSZWNl
aXZlciB7CkBAIC00NCwxMiArNTAsMjEgQEAgcHVibGljOgogICAgIHZvaWQgaGFuZGxlTWFnbmlm
aWNhdGlvbkdlc3R1cmUoZG91YmxlIHNjYWxlLCBXZWJDb3JlOjpGbG9hdFBvaW50IG9yaWdpbik7
CiAgICAgdm9pZCBoYW5kbGVTbWFydE1hZ25pZmljYXRpb25HZXN0dXJlKFdlYkNvcmU6OkZsb2F0
UG9pbnQgb3JpZ2luKTsKIAorICAgIGJvb2wgaGFuZGxlU2Nyb2xsV2hlZWxFdmVudChOU0V2ZW50
ICopOworICAgIHZvaWQgZGlkSGl0UmVuZGVyVHJlZVNpemVUaHJlc2hvbGQoKTsKKwogICAgIHZv
aWQgZW5kQWN0aXZlR2VzdHVyZSgpOwogCiAgICAgZW51bSBjbGFzcyBWaWV3R2VzdHVyZVR5cGUg
ewogICAgICAgICBOb25lLAogICAgICAgICBNYWduaWZpY2F0aW9uLAogICAgICAgICBTbWFydE1h
Z25pZmljYXRpb24sCisgICAgICAgIFN3aXBlCisgICAgfTsKKworICAgIGVudW0gY2xhc3MgU3dp
cGVUcmFuc2l0aW9uU3R5bGUgeworICAgICAgICBPdmVybGFwLAorICAgICAgICBQdXNoCiAgICAg
fTsKIAogcHJpdmF0ZToKQEAgLTYzLDYgKzc4LDEyIEBAIHByaXZhdGU6CiAgICAgdm9pZCBlbmRN
YWduaWZpY2F0aW9uR2VzdHVyZSgpOwogICAgIFdlYkNvcmU6OkZsb2F0UG9pbnQgc2NhbGVkTWFn
bmlmaWNhdGlvbk9yaWdpbihXZWJDb3JlOjpGbG9hdFBvaW50IG9yaWdpbiwgZG91YmxlIHNjYWxl
KTsKIAorICAgIHZvaWQgYmVnaW5Td2lwZUdlc3R1cmUoV2ViQmFja0ZvcndhcmRMaXN0SXRlbSog
dGFyZ2V0SXRlbSwgYm9vbCBzd2lwaW5nTGVmdCk7CisgICAgdm9pZCBoYW5kbGVTd2lwZUdlc3R1
cmUoV2ViQmFja0ZvcndhcmRMaXN0SXRlbSogdGFyZ2V0SXRlbSwgZG91YmxlIHByb2dyZXNzLCBi
b29sIHN3aXBpbmdMZWZ0KTsKKyAgICB2b2lkIGVuZFN3aXBlR2VzdHVyZShXZWJCYWNrRm9yd2Fy
ZExpc3RJdGVtKiB0YXJnZXRJdGVtLCBib29sIGNhbmNlbGxlZCk7CisgICAgdm9pZCByZW1vdmVT
d2lwZVNuYXBzaG90KCk7CisgICAgdm9pZCBzd2lwZVNuYXBzaG90V2F0Y2hkb2dUaW1lckZpcmVk
KFdlYkNvcmU6OlRpbWVyPFZpZXdHZXN0dXJlQ29udHJvbGxlcj4qKTsKKwogICAgIFdlYlBhZ2VQ
cm94eSYgbV93ZWJQYWdlUHJveHk7CiAKICAgICBkb3VibGUgbV9tYWduaWZpY2F0aW9uOwpAQCAt
NzUsNiArOTYsMTAgQEAgcHJpdmF0ZToKICAgICBXZWJDb3JlOjpGbG9hdFJlY3QgbV92aXNpYmxl
Q29udGVudFJlY3Q7CiAgICAgYm9vbCBtX3Zpc2libGVDb250ZW50UmVjdElzVmFsaWQ7CiAgICAg
Ym9vbCBtX2ZyYW1lSGFuZGxlc01hZ25pZmljYXRpb25HZXN0dXJlOworCisgICAgUmV0YWluUHRy
PENBTGF5ZXI+IG1fc3dpcGVTbmFwc2hvdExheWVyOworICAgIFN3aXBlVHJhbnNpdGlvblN0eWxl
IG1fc3dpcGVUcmFuc2l0aW9uU3R5bGU7CisgICAgV2ViQ29yZTo6VGltZXI8Vmlld0dlc3R1cmVD
b250cm9sbGVyPiBtX3N3aXBlV2F0Y2hkb2dUaW1lcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9WaWV3R2VzdHVy
ZUNvbnRyb2xsZXIubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1Zp
ZXdHZXN0dXJlQ29udHJvbGxlci5tZXNzYWdlcy5pbgppbmRleCAwYjM5OWVmLi5kMDljMDM3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1ZpZXdHZXN0dXJlQ29udHJv
bGxlci5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1ZpZXdH
ZXN0dXJlQ29udHJvbGxlci5tZXNzYWdlcy5pbgpAQCAtMjMsNCArMjMsNSBAQAogbWVzc2FnZXMg
LT4gVmlld0dlc3R1cmVDb250cm9sbGVyIHsKICAgICBEaWRDb2xsZWN0R2VvbWV0cnlGb3JNYWdu
aWZpY2F0aW9uR2VzdHVyZShXZWJDb3JlOjpGbG9hdFJlY3QgdmlzaWJsZUNvbnRlbnRCb3VuZHMs
IGJvb2wgZnJhbWVIYW5kbGVzTWFnbmlmaWNhdGlvbkdlc3R1cmUpCiAgICAgRGlkQ29sbGVjdEdl
b21ldHJ5Rm9yU21hcnRNYWduaWZpY2F0aW9uR2VzdHVyZShXZWJDb3JlOjpGbG9hdFBvaW50IG9y
aWdpbiwgV2ViQ29yZTo6RmxvYXRSZWN0IHJlbmRlclJlY3QsIFdlYkNvcmU6OkZsb2F0UmVjdCB2
aXNpYmxlQ29udGVudEJvdW5kcywgYm9vbCBpc1JlcGxhY2VkRWxlbWVudCwgYm9vbCBmcmFtZUhh
bmRsZXNNYWduaWZpY2F0aW9uR2VzdHVyZSkKKyAgICBEaWRIaXRSZW5kZXJUcmVlU2l6ZVRocmVz
aG9sZCgpCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1ZpZXdH
ZXN0dXJlQ29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvVmlld0dl
c3R1cmVDb250cm9sbGVyLm1tCmluZGV4IDdjZWZjYzEuLjlhNzlkMGYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvVmlld0dlc3R1cmVDb250cm9sbGVyLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvVmlld0dlc3R1cmVDb250cm9sbGVyLm1tCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTQgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0y
NiwxMCArMjYsMzIgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiVmlld0dlc3R1cmVD
b250cm9sbGVyLmgiCiAKKyNpbXBvcnQgIldlYlBhZ2VHcm91cC5oIgogI2ltcG9ydCAiVmlld0dl
c3R1cmVDb250cm9sbGVyTWVzc2FnZXMuaCIKICNpbXBvcnQgIlZpZXdHZXN0dXJlR2VvbWV0cnlD
b2xsZWN0b3JNZXNzYWdlcy5oIgorI2ltcG9ydCAiVmlld1NuYXBzaG90U3RvcmUuaCIKKyNpbXBv
cnQgIldlYkJhY2tGb3J3YXJkTGlzdC5oIgorI2ltcG9ydCAiV2ViUGFnZU1lc3NhZ2VzLmgiCiAj
aW1wb3J0ICJXZWJQYWdlUHJveHkuaCIKKyNpbXBvcnQgIldlYlByZWZlcmVuY2VzLmgiCiAjaW1w
b3J0ICJXZWJQcm9jZXNzUHJveHkuaCIKKyNpbXBvcnQgIldLVmlld0ludGVybmFsLmgiCisjaW1w
b3J0IDxDb2NvYS9Db2NvYS5oPgorI2ltcG9ydCA8UXVhcnR6Q29yZS9RdWFydHpDb3JlLmg+Cisj
aW1wb3J0IDxXZWJDb3JlL1dlYkNvcmVDQUxheWVyRXh0cmFzLmg+CisKKyNpZiBkZWZpbmVkKF9f
aGFzX2luY2x1ZGUpICYmIF9faGFzX2luY2x1ZGUoPFF1YXJ0ekNvcmUvUXVhcnR6Q29yZVByaXZh
dGUuaD4pCisjaW1wb3J0IDxRdWFydHpDb3JlL1F1YXJ0ekNvcmVQcml2YXRlLmg+CisjZWxzZQor
QGludGVyZmFjZSBDQUZpbHRlciA6IE5TT2JqZWN0IDxOU0NvcHlpbmcsIE5TTXV0YWJsZUNvcHlp
bmcsIE5TQ29kaW5nPgorQGVuZAorI2VuZGlmCisKK0BpbnRlcmZhY2UgQ0FGaWx0ZXIgKERldGFp
bHMpCisrIChDQUZpbHRlciAqKWZpbHRlcldpdGhUeXBlOihOU1N0cmluZyAqKXR5cGU7CitAZW5k
CisKK2V4dGVybiBOU1N0cmluZyAqIGNvbnN0IGtDQUZpbHRlckdhdXNzaWFuQmx1cjsKIAogdXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKQEAgLTQ1LDYgKzY3LDEyIEBAIHN0YXRpYyBjb25zdCBk
b3VibGUgem9vbU91dFJlc2lzdGFuY2UgPSAwLjEwOwogc3RhdGljIGNvbnN0IGZsb2F0IHNtYXJ0
TWFnbmlmaWNhdGlvbkVsZW1lbnRQYWRkaW5nID0gMC4wNTsKIHN0YXRpYyBjb25zdCBmbG9hdCBz
bWFydE1hZ25pZmljYXRpb25QYW5TY3JvbGxUaHJlc2hvbGQgPSAxMDA7CiAKK3N0YXRpYyBjb25z
dCBkb3VibGUgc3dpcGVPdmVybGF5U2hhZG93T3BhY2l0eSA9IDAuNjY7CitzdGF0aWMgY29uc3Qg
ZG91YmxlIHN3aXBlT3ZlcmxheVNoYWRvd1JhZGl1cyA9IDM7CisKK3N0YXRpYyBjb25zdCBmbG9h
dCBzd2lwZVNuYXBzaG90UmVtb3ZhbFJlbmRlclRyZWVTaXplVGFyZ2V0RnJhY3Rpb24gPSAwLjU7
CitzdGF0aWMgY29uc3Qgc3RkOjpjaHJvbm86OmR1cmF0aW9uPGRvdWJsZT4gc3dpcGVTbmFwc2hv
dFJlbW92YWxXYXRjaGRvZ0R1cmF0aW9uKDMpOworCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogVmll
d0dlc3R1cmVDb250cm9sbGVyOjpWaWV3R2VzdHVyZUNvbnRyb2xsZXIoV2ViUGFnZVByb3h5JiB3
ZWJQYWdlUHJveHkpCkBAIC01Miw2ICs4MCw4IEBAIFZpZXdHZXN0dXJlQ29udHJvbGxlcjo6Vmll
d0dlc3R1cmVDb250cm9sbGVyKFdlYlBhZ2VQcm94eSYgd2ViUGFnZVByb3h5KQogICAgICwgbV9h
Y3RpdmVHZXN0dXJlVHlwZShWaWV3R2VzdHVyZVR5cGU6Ok5vbmUpCiAgICAgLCBtX3Zpc2libGVD
b250ZW50UmVjdElzVmFsaWQoZmFsc2UpCiAgICAgLCBtX2ZyYW1lSGFuZGxlc01hZ25pZmljYXRp
b25HZXN0dXJlKGZhbHNlKQorICAgICwgbV9zd2lwZVRyYW5zaXRpb25TdHlsZShTd2lwZVRyYW5z
aXRpb25TdHlsZTo6T3ZlcmxhcCkKKyAgICAsIG1fc3dpcGVXYXRjaGRvZ1RpbWVyKHRoaXMsICZW
aWV3R2VzdHVyZUNvbnRyb2xsZXI6OnN3aXBlU25hcHNob3RXYXRjaGRvZ1RpbWVyRmlyZWQpCiB7
CiAgICAgbV93ZWJQYWdlUHJveHkucHJvY2VzcygpLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdl
czo6Vmlld0dlc3R1cmVDb250cm9sbGVyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fd2ViUGFn
ZVByb3h5LnBhZ2VJRCgpLCAqdGhpcyk7CiB9CkBAIC0xMzgsNiArMTY4LDggQEAgdm9pZCBWaWV3
R2VzdHVyZUNvbnRyb2xsZXI6OmVuZE1hZ25pZmljYXRpb25HZXN0dXJlKCkKICAgICAgICAgbV93
ZWJQYWdlUHJveHkuc2NhbGVQYWdlKG5ld01hZ25pZmljYXRpb24sIHJvdW5kZWRJbnRQb2ludCht
X21hZ25pZmljYXRpb25PcmlnaW4pKTsKICAgICBlbHNlCiAgICAgICAgIG1fd2ViUGFnZVByb3h5
LmRyYXdpbmdBcmVhKCktPmNvbW1pdFRyYW5zaWVudFpvb20obmV3TWFnbmlmaWNhdGlvbiwgc2Nh
bGVkTWFnbmlmaWNhdGlvbk9yaWdpbihtX21hZ25pZmljYXRpb25PcmlnaW4sIG5ld01hZ25pZmlj
YXRpb24pKTsKKworICAgIG1fYWN0aXZlR2VzdHVyZVR5cGUgPSBWaWV3R2VzdHVyZVR5cGU6Ok5v
bmU7CiB9CiAKIHZvaWQgVmlld0dlc3R1cmVDb250cm9sbGVyOjpoYW5kbGVTbWFydE1hZ25pZmlj
YXRpb25HZXN0dXJlKEZsb2F0UG9pbnQgb3JpZ2luKQpAQCAtMTkyLDIwICsyMjQsMTc3IEBAIHZv
aWQgVmlld0dlc3R1cmVDb250cm9sbGVyOjpkaWRDb2xsZWN0R2VvbWV0cnlGb3JTbWFydE1hZ25p
ZmljYXRpb25HZXN0dXJlKEZsb2F0CiAgICAgbV9sYXN0U21hcnRNYWduaWZpY2F0aW9uVW5zY2Fs
ZWRUYXJnZXRSZWN0ID0gdW5zY2FsZWRUYXJnZXRSZWN0OwogfQogCi12b2lkIFZpZXdHZXN0dXJl
Q29udHJvbGxlcjo6ZW5kQWN0aXZlR2VzdHVyZSgpCitib29sIFZpZXdHZXN0dXJlQ29udHJvbGxl
cjo6aGFuZGxlU2Nyb2xsV2hlZWxFdmVudChOU0V2ZW50ICpldmVudCkKIHsKLSAgICBzd2l0Y2gg
KG1fYWN0aXZlR2VzdHVyZVR5cGUpIHsKLSAgICBjYXNlIFZpZXdHZXN0dXJlVHlwZTo6Tm9uZToK
LSAgICBjYXNlIFZpZXdHZXN0dXJlVHlwZTo6U21hcnRNYWduaWZpY2F0aW9uOgotICAgICAgICBi
cmVhazsKLSAgICBjYXNlIFZpZXdHZXN0dXJlVHlwZTo6TWFnbmlmaWNhdGlvbjoKLSAgICAgICAg
ZW5kTWFnbmlmaWNhdGlvbkdlc3R1cmUoKTsKKyAgICBpZiAobV9hY3RpdmVHZXN0dXJlVHlwZSAh
PSBWaWV3R2VzdHVyZVR5cGU6Ok5vbmUpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlm
IChldmVudC5waGFzZSAhPSBOU0V2ZW50UGhhc2VCZWdhbikKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgaWYgKGZhYnMoZXZlbnQuc2Nyb2xsaW5nRGVsdGFYKSA8IGZhYnMoZXZlbnQuc2Ny
b2xsaW5nRGVsdGFZKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgYm9vbCB3aWxsU3dp
cGVMZWZ0ID0gZXZlbnQuc2Nyb2xsaW5nRGVsdGFYID4gMCAmJiBtX3dlYlBhZ2VQcm94eS5pc1Bp
bm5lZFRvTGVmdFNpZGUoKSAmJiBtX3dlYlBhZ2VQcm94eS5iYWNrRm9yd2FyZExpc3QoKS5iYWNr
SXRlbSgpOworICAgIGJvb2wgd2lsbFN3aXBlUmlnaHQgPSBldmVudC5zY3JvbGxpbmdEZWx0YVgg
PCAwICYmIG1fd2ViUGFnZVByb3h5LmlzUGlubmVkVG9SaWdodFNpZGUoKSAmJiBtX3dlYlBhZ2VQ
cm94eS5iYWNrRm9yd2FyZExpc3QoKS5mb3J3YXJkSXRlbSgpOworICAgIGlmICghd2lsbFN3aXBl
TGVmdCAmJiAhd2lsbFN3aXBlUmlnaHQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlm
ICghZXZlbnQuaGFzUHJlY2lzZVNjcm9sbGluZ0RlbHRhcykKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgaWYgKCFbTlNFdmVudCBpc1N3aXBlVHJhY2tpbmdGcm9tU2Nyb2xsRXZlbnRzRW5h
YmxlZF0pCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIFZpZXdTbmFwc2hvdFN0b3JlOjpz
aGFyZWQoKS50YWtlU25hcHNob3QobV93ZWJQYWdlUHJveHkpOworCisgICAgQ0dGbG9hdCBtYXhQ
cm9ncmVzcyA9IHdpbGxTd2lwZUxlZnQgPyAxIDogMDsKKyAgICBDR0Zsb2F0IG1pblByb2dyZXNz
ID0gd2lsbFN3aXBlUmlnaHQgPyAtMSA6IDA7CisgICAgUmVmUHRyPFdlYkJhY2tGb3J3YXJkTGlz
dEl0ZW0+IHRhcmdldEl0ZW0gPSB3aWxsU3dpcGVMZWZ0ID8gbV93ZWJQYWdlUHJveHkuYmFja0Zv
cndhcmRMaXN0KCkuYmFja0l0ZW0oKSA6IG1fd2ViUGFnZVByb3h5LmJhY2tGb3J3YXJkTGlzdCgp
LmZvcndhcmRJdGVtKCk7CisgICAgX19ibG9jayBib29sIHN3aXBlQ2FuY2VsbGVkID0gZmFsc2U7
CisKKyAgICBbZXZlbnQgdHJhY2tTd2lwZUV2ZW50V2l0aE9wdGlvbnM6MCBkYW1wZW5BbW91bnRU
aHJlc2hvbGRNaW46bWluUHJvZ3Jlc3MgbWF4Om1heFByb2dyZXNzIHVzaW5nSGFuZGxlcjpeKENH
RmxvYXQgcHJvZ3Jlc3MsIE5TRXZlbnRQaGFzZSBwaGFzZSwgQk9PTCBpc0NvbXBsZXRlLCBCT09M
ICpzdG9wKSB7CisgICAgICAgIGlmIChwaGFzZSA9PSBOU0V2ZW50UGhhc2VCZWdhbikKKyAgICAg
ICAgICAgIHRoaXMtPmJlZ2luU3dpcGVHZXN0dXJlKHRhcmdldEl0ZW0uZ2V0KCksIHdpbGxTd2lw
ZUxlZnQpOworICAgICAgICB0aGlzLT5oYW5kbGVTd2lwZUdlc3R1cmUodGFyZ2V0SXRlbS5nZXQo
KSwgcHJvZ3Jlc3MsIHdpbGxTd2lwZUxlZnQpOworICAgICAgICBpZiAocGhhc2UgPT0gTlNFdmVu
dFBoYXNlQ2FuY2VsbGVkKQorICAgICAgICAgICAgc3dpcGVDYW5jZWxsZWQgPSB0cnVlOworICAg
ICAgICBpZiAoaXNDb21wbGV0ZSkKKyAgICAgICAgICAgIHRoaXMtPmVuZFN3aXBlR2VzdHVyZSh0
YXJnZXRJdGVtLmdldCgpLCBzd2lwZUNhbmNlbGxlZCk7CisgICAgfV07CisKKyAgICByZXR1cm4g
dHJ1ZTsKK30KKwordm9pZCBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OmJlZ2luU3dpcGVHZXN0dXJl
KFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0qIHRhcmdldEl0ZW0sIGJvb2wgc3dpcGluZ0xlZnQpCit7
CisgICAgbV9hY3RpdmVHZXN0dXJlVHlwZSA9IFZpZXdHZXN0dXJlVHlwZTo6U3dpcGU7CisKKyAg
ICBDQUxheWVyICpyb290TGF5ZXIgPSBbbV93ZWJQYWdlUHJveHkud2tWaWV3KCkgX3Jvb3RMYXll
cl07CisKKyAgICBtX3N3aXBlU25hcHNob3RMYXllciA9IGFkb3B0TlMoW1tDQUxheWVyIGFsbG9j
XSBpbml0XSk7CisgICAgW21fc3dpcGVTbmFwc2hvdExheWVyIHNldEJhY2tncm91bmRDb2xvcjpD
R0NvbG9yR2V0Q29uc3RhbnRDb2xvcihrQ0dDb2xvcldoaXRlKV07CisKKyAgICB1aW50NjRfdCBy
ZW5kZXJUcmVlU2l6ZTsKKyAgICBbbV9zd2lwZVNuYXBzaG90TGF5ZXIgc2V0Q29udGVudHM6KGlk
KVZpZXdTbmFwc2hvdFN0b3JlOjpzaGFyZWQoKS5nZXRTbmFwc2hvdEFuZFJlbmRlclRyZWVTaXpl
KHRhcmdldEl0ZW0sIHJlbmRlclRyZWVTaXplKV07CisgICAgW21fc3dpcGVTbmFwc2hvdExheWVy
IHNldENvbnRlbnRzR3Jhdml0eTprQ0FHcmF2aXR5VG9wTGVmdF07CisgICAgW21fc3dpcGVTbmFw
c2hvdExheWVyIHNldENvbnRlbnRzU2NhbGU6bV93ZWJQYWdlUHJveHkuZGV2aWNlU2NhbGVGYWN0
b3IoKV07CisgICAgW21fc3dpcGVTbmFwc2hvdExheWVyIHNldEZyYW1lOnJvb3RMYXllci5mcmFt
ZV07CisgICAgW21fc3dpcGVTbmFwc2hvdExheWVyIHNldEFuY2hvclBvaW50OkNHUG9pbnRaZXJv
XTsKKyAgICBbbV9zd2lwZVNuYXBzaG90TGF5ZXIgc2V0UG9zaXRpb246Q0dQb2ludFplcm9dOwor
ICAgIFttX3N3aXBlU25hcHNob3RMYXllciBzZXROYW1lOkAiR2VzdHVyZSBTd2lwZSBTbmFwc2hv
dCBMYXllciJdOworICAgIFttX3N3aXBlU25hcHNob3RMYXllciB3ZWJfZGlzYWJsZUFsbEFjdGlv
bnNdOworCisgICAgaWYgKG1fd2ViUGFnZVByb3h5LnBhZ2VHcm91cCgpLnByZWZlcmVuY2VzKCkt
PnZpZXdHZXN0dXJlRGVidWdnaW5nRW5hYmxlZCgpKSB7CisgICAgICAgIENBRmlsdGVyKiBmaWx0
ZXIgPSBbQ0FGaWx0ZXIgZmlsdGVyV2l0aFR5cGU6a0NBRmlsdGVyR2F1c3NpYW5CbHVyXTsKKyAg
ICAgICAgW2ZpbHRlciBzZXRWYWx1ZTpbTlNOdW1iZXIgbnVtYmVyV2l0aEZsb2F0OjNdIGZvcktl
eTpAImlucHV0UmFkaXVzIl07CisgICAgICAgIFttX3N3aXBlU25hcHNob3RMYXllciBzZXRGaWx0
ZXJzOkBbZmlsdGVyXV07CisgICAgfQorCisgICAgaWYgKG1fc3dpcGVUcmFuc2l0aW9uU3R5bGUg
PT0gU3dpcGVUcmFuc2l0aW9uU3R5bGU6Ok92ZXJsYXApIHsKKyAgICAgICAgUmV0YWluUHRyPENH
UGF0aFJlZj4gc2hhZG93UGF0aCA9IGFkb3B0Q0YoQ0dQYXRoQ3JlYXRlV2l0aFJlY3QoW3Jvb3RM
YXllciBib3VuZHNdLCAwKSk7CisKKyAgICAgICAgW21fc3dpcGVTbmFwc2hvdExheWVyIHNldFNo
YWRvd0NvbG9yOkNHQ29sb3JHZXRDb25zdGFudENvbG9yKGtDR0NvbG9yQmxhY2spXTsKKyAgICAg
ICAgW21fc3dpcGVTbmFwc2hvdExheWVyIHNldFNoYWRvd09wYWNpdHk6c3dpcGVPdmVybGF5U2hh
ZG93T3BhY2l0eV07CisgICAgICAgIFttX3N3aXBlU25hcHNob3RMYXllciBzZXRTaGFkb3dSYWRp
dXM6c3dpcGVPdmVybGF5U2hhZG93UmFkaXVzXTsKKyAgICAgICAgW21fc3dpcGVTbmFwc2hvdExh
eWVyIHNldFNoYWRvd1BhdGg6c2hhZG93UGF0aC5nZXQoKV07CisKKyAgICAgICAgW3Jvb3RMYXll
ciBzZXRTaGFkb3dDb2xvcjpDR0NvbG9yR2V0Q29uc3RhbnRDb2xvcihrQ0dDb2xvckJsYWNrKV07
CisgICAgICAgIFtyb290TGF5ZXIgc2V0U2hhZG93T3BhY2l0eTpzd2lwZU92ZXJsYXlTaGFkb3dP
cGFjaXR5XTsKKyAgICAgICAgW3Jvb3RMYXllciBzZXRTaGFkb3dSYWRpdXM6c3dpcGVPdmVybGF5
U2hhZG93UmFkaXVzXTsKKyAgICAgICAgW3Jvb3RMYXllciBzZXRTaGFkb3dQYXRoOnNoYWRvd1Bh
dGguZ2V0KCldOworICAgIH0KKworICAgIGlmIChzd2lwaW5nTGVmdCkKKyAgICAgICAgW3Jvb3RM
YXllci5zdXBlcmxheWVyIGluc2VydFN1YmxheWVyOm1fc3dpcGVTbmFwc2hvdExheWVyLmdldCgp
IGJlbG93OnJvb3RMYXllcl07CisgICAgZWxzZQorICAgICAgICBbcm9vdExheWVyLnN1cGVybGF5
ZXIgaW5zZXJ0U3VibGF5ZXI6bV9zd2lwZVNuYXBzaG90TGF5ZXIuZ2V0KCkgYWJvdmU6cm9vdExh
eWVyXTsKK30KKwordm9pZCBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OmhhbmRsZVN3aXBlR2VzdHVy
ZShXZWJCYWNrRm9yd2FyZExpc3RJdGVtKiB0YXJnZXRJdGVtLCBkb3VibGUgcHJvZ3Jlc3MsIGJv
b2wgc3dpcGluZ0xlZnQpCit7CisgICAgQVNTRVJUKG1fYWN0aXZlR2VzdHVyZVR5cGUgPT0gVmll
d0dlc3R1cmVUeXBlOjpTd2lwZSk7CisKKyAgICBDQUxheWVyICpyb290TGF5ZXIgPSBbbV93ZWJQ
YWdlUHJveHkud2tWaWV3KCkgX3Jvb3RMYXllcl07CisgICAgZG91YmxlIHdpZHRoID0gcm9vdExh
eWVyLmJvdW5kcy5zaXplLndpZHRoOworICAgIGRvdWJsZSBzd2lwaW5nTGF5ZXJPZmZzZXQgPSBm
bG9vcih3aWR0aCAqIHByb2dyZXNzKTsKKworICAgIGlmIChtX3N3aXBlVHJhbnNpdGlvblN0eWxl
ID09IFN3aXBlVHJhbnNpdGlvblN0eWxlOjpPdmVybGFwKSB7CisgICAgICAgIGlmIChzd2lwaW5n
TGVmdCkKKyAgICAgICAgICAgIFtyb290TGF5ZXIgc2V0UG9zaXRpb246Q0dQb2ludE1ha2Uoc3dp
cGluZ0xheWVyT2Zmc2V0LCAwKV07CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIFttX3N3aXBl
U25hcHNob3RMYXllciBzZXRQb3NpdGlvbjpDR1BvaW50TWFrZSh3aWR0aCArIHN3aXBpbmdMYXll
ck9mZnNldCwgMCldOworICAgIH0gZWxzZSBpZiAobV9zd2lwZVRyYW5zaXRpb25TdHlsZSA9PSBT
d2lwZVRyYW5zaXRpb25TdHlsZTo6UHVzaCkgeworICAgICAgICBbcm9vdExheWVyIHNldFBvc2l0
aW9uOkNHUG9pbnRNYWtlKHN3aXBpbmdMYXllck9mZnNldCwgMCldOworICAgICAgICBbbV9zd2lw
ZVNuYXBzaG90TGF5ZXIgc2V0UG9zaXRpb246Q0dQb2ludE1ha2UoKHN3aXBpbmdMZWZ0ID8gLXdp
ZHRoIDogd2lkdGgpICsgc3dpcGluZ0xheWVyT2Zmc2V0LCAwKV07CiAgICAgfQorfQorCit2b2lk
IFZpZXdHZXN0dXJlQ29udHJvbGxlcjo6ZW5kU3dpcGVHZXN0dXJlKFdlYkJhY2tGb3J3YXJkTGlz
dEl0ZW0qIHRhcmdldEl0ZW0sIGJvb2wgY2FuY2VsbGVkKQoreworICAgIEFTU0VSVChtX2FjdGl2
ZUdlc3R1cmVUeXBlID09IFZpZXdHZXN0dXJlVHlwZTo6U3dpcGUpOworCisgICAgQ0FMYXllciAq
cm9vdExheWVyID0gW21fd2ViUGFnZVByb3h5LndrVmlldygpIF9yb290TGF5ZXJdOworCisgICAg
W3Jvb3RMYXllciBzZXRTaGFkb3dPcGFjaXR5OjBdOworICAgIFtyb290TGF5ZXIgc2V0U2hhZG93
UmFkaXVzOjBdOworCisgICAgaWYgKGNhbmNlbGxlZCkgeworICAgICAgICByZW1vdmVTd2lwZVNu
YXBzaG90KCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICB1aW50NjRfdCByZW5kZXJU
cmVlU2l6ZTsKKyAgICBWaWV3U25hcHNob3RTdG9yZTo6c2hhcmVkKCkuZ2V0U25hcHNob3RBbmRS
ZW5kZXJUcmVlU2l6ZSh0YXJnZXRJdGVtLCByZW5kZXJUcmVlU2l6ZSk7CisgICAgbV93ZWJQYWdl
UHJveHkucHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OlZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0
b3I6OlNldFJlbmRlclRyZWVTaXplTm90aWZpY2F0aW9uVGhyZXNob2xkKHJlbmRlclRyZWVTaXpl
ICogc3dpcGVTbmFwc2hvdFJlbW92YWxSZW5kZXJUcmVlU2l6ZVRhcmdldEZyYWN0aW9uKSwgbV93
ZWJQYWdlUHJveHkucGFnZUlEKCkpOworCisgICAgLy8gV2UgZG9uJ3Qgd2FudCB0byByZXBsYWNl
IHRoZSBjdXJyZW50IGJhY2stZm9yd2FyZCBpdGVtJ3Mgc25hcHNob3QKKyAgICAvLyBsaWtlIHdl
IG5vcm1hbGx5IHdvdWxkIHdoZW4gZ29pbmcgYmFjayBvciBmb3J3YXJkLCBiZWNhdXNlIHdlIGFy
ZQorICAgIC8vIGRpc3BsYXlpbmcgdGhlIGRlc3RpbmF0aW9uIGl0ZW0ncyBzbmFwc2hvdC4KKyAg
ICBWaWV3U25hcHNob3RTdG9yZTo6c2hhcmVkKCkuZGlzYWJsZVNuYXBzaG90dGluZygpOworICAg
IG1fd2ViUGFnZVByb3h5LmdvVG9CYWNrRm9yd2FyZEl0ZW0odGFyZ2V0SXRlbSk7CisgICAgVmll
d1NuYXBzaG90U3RvcmU6OnNoYXJlZCgpLmVuYWJsZVNuYXBzaG90dGluZygpOworCisgICAgaWYg
KCFyZW5kZXJUcmVlU2l6ZSkgeworICAgICAgICByZW1vdmVTd2lwZVNuYXBzaG90KCk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtX3N3aXBlV2F0Y2hkb2dUaW1lci5zdGFydE9uZVNo
b3Qoc3dpcGVTbmFwc2hvdFJlbW92YWxXYXRjaGRvZ0R1cmF0aW9uLmNvdW50KCkpOworfQorCit2
b2lkIFZpZXdHZXN0dXJlQ29udHJvbGxlcjo6ZGlkSGl0UmVuZGVyVHJlZVNpemVUaHJlc2hvbGQo
KQoreworICAgIHJlbW92ZVN3aXBlU25hcHNob3QoKTsKK30KKwordm9pZCBWaWV3R2VzdHVyZUNv
bnRyb2xsZXI6OnN3aXBlU25hcHNob3RXYXRjaGRvZ1RpbWVyRmlyZWQoV2ViQ29yZTo6VGltZXI8
Vmlld0dlc3R1cmVDb250cm9sbGVyPiopCit7CisgICAgcmVtb3ZlU3dpcGVTbmFwc2hvdCgpOwor
fQorCit2b2lkIFZpZXdHZXN0dXJlQ29udHJvbGxlcjo6cmVtb3ZlU3dpcGVTbmFwc2hvdCgpCit7
CisgICAgbV9zd2lwZVdhdGNoZG9nVGltZXIuc3RvcCgpOworCisgICAgaWYgKG1fYWN0aXZlR2Vz
dHVyZVR5cGUgIT0gVmlld0dlc3R1cmVUeXBlOjpTd2lwZSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgW1ttX3dlYlBhZ2VQcm94eS53a1ZpZXcoKSBfcm9vdExheWVyXSBzZXRQb3NpdGlvbjpDR1Bv
aW50WmVyb107CisgICAgW21fc3dpcGVTbmFwc2hvdExheWVyIHJlbW92ZUZyb21TdXBlcmxheWVy
XTsKKyAgICBtX3N3aXBlU25hcHNob3RMYXllciA9IG51bGxwdHI7CiAKLSAgICBtX3Zpc2libGVD
b250ZW50UmVjdElzVmFsaWQgPSBmYWxzZTsKICAgICBtX2FjdGl2ZUdlc3R1cmVUeXBlID0gVmll
d0dlc3R1cmVUeXBlOjpOb25lOwogfQogCit2b2lkIFZpZXdHZXN0dXJlQ29udHJvbGxlcjo6ZW5k
QWN0aXZlR2VzdHVyZSgpCit7CisgICAgaWYgKG1fYWN0aXZlR2VzdHVyZVR5cGUgPT0gVmlld0dl
c3R1cmVUeXBlOjpNYWduaWZpY2F0aW9uKSB7CisgICAgICAgIGVuZE1hZ25pZmljYXRpb25HZXN0
dXJlKCk7CisgICAgICAgIG1fdmlzaWJsZUNvbnRlbnRSZWN0SXNWYWxpZCA9IGZhbHNlOworICAg
IH0KK30KKwogZG91YmxlIFZpZXdHZXN0dXJlQ29udHJvbGxlcjo6bWFnbmlmaWNhdGlvbigpIGNv
bnN0CiB7CiAgICAgaWYgKG1fYWN0aXZlR2VzdHVyZVR5cGUgPT0gVmlld0dlc3R1cmVUeXBlOjpN
YWduaWZpY2F0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9W
aWV3U25hcHNob3RTdG9yZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9WaWV3U25h
cHNob3RTdG9yZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIwOGI3ZDAK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1ZpZXdTbmFw
c2hvdFN0b3JlLmgKQEAgLTAsMCArMSw2MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgVmlld1Nu
YXBzaG90U3RvcmVfaAorI2RlZmluZSBWaWV3U25hcHNob3RTdG9yZV9oCisKKyNpbmNsdWRlIDx3
dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorI2luY2x1ZGUgPHd0
Zi9SZXRhaW5QdHIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNw
YWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW07CitjbGFzcyBXZWJQ
YWdlUHJveHk7CisKK2NsYXNzIFZpZXdTbmFwc2hvdFN0b3JlIHsKKyAgICBXVEZfTUFLRV9OT05D
T1BZQUJMRShWaWV3U25hcHNob3RTdG9yZSk7CitwdWJsaWM6CisgICAgVmlld1NuYXBzaG90U3Rv
cmUoKTsKKyAgICB+Vmlld1NuYXBzaG90U3RvcmUoKTsKKworICAgIHN0YXRpYyBWaWV3U25hcHNo
b3RTdG9yZSYgc2hhcmVkKCk7CisKKyAgICB2b2lkIHRha2VTbmFwc2hvdChXZWJQYWdlUHJveHkm
KTsKKyAgICBDR0ltYWdlUmVmIGdldFNuYXBzaG90QW5kUmVuZGVyVHJlZVNpemUoV2ViQmFja0Zv
cndhcmRMaXN0SXRlbSosIHVpbnQ2NF90JiByZW5kZXJUcmVlU2l6ZSk7CisKKyAgICB2b2lkIGRp
c2FibGVTbmFwc2hvdHRpbmcoKSB7IG1fZW5hYmxlZCA9IGZhbHNlOyB9CisgICAgdm9pZCBlbmFi
bGVTbmFwc2hvdHRpbmcoKSB7IG1fZW5hYmxlZCA9IHRydWU7IH0KKworcHJpdmF0ZToKKyAgICBI
YXNoTWFwPFN0cmluZywgc3RkOjpwYWlyPFJldGFpblB0cjxDR0ltYWdlUmVmPiwgdWludDY0X3Q+
PiBtX3NuYXBzaG90TWFwOworCisgICAgYm9vbCBtX2VuYWJsZWQ7Cit9OworCit9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFZpZXdTbmFwc2hvdFN0b3JlX2gKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvVmlld1NuYXBzaG90U3RvcmUubW0gYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1ZpZXdTbmFwc2hvdFN0b3JlLm1tCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRhZTM4N2QKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1ZpZXdTbmFwc2hvdFN0b3JlLm1tCkBAIC0wLDAgKzEs
MTExIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJWaWV3U25h
cHNob3RTdG9yZS5oIgorCisjaW1wb3J0ICJXZWJCYWNrRm9yd2FyZExpc3QuaCIKKyNpbXBvcnQg
IldlYlBhZ2VQcm94eS5oIgorI2ltcG9ydCAiV0tWaWV3LmgiCisjaW1wb3J0IDxDb3JlR3JhcGhp
Y3MvQ29yZUdyYXBoaWNzLmg+CisjaW1wb3J0IDxXZWJDb3JlL0dyYXBoaWNzQ29udGV4dC5oPgor
I2ltcG9ydCA8V2ViQ29yZS9VVUlELmg+CisKKyNpZiBkZWZpbmVkKF9faGFzX2luY2x1ZGUpICYm
IF9faGFzX2luY2x1ZGUoPENvcmVHcmFwaGljcy9Db3JlR3JhcGhpY3NQcml2YXRlLmg+KQorI2lt
cG9ydCA8Q29yZUdyYXBoaWNzL0NvcmVHcmFwaGljc1ByaXZhdGUuaD4KKyNlbmRpZgorCitleHRl
cm4gIkMiIHsKK3R5cGVkZWYgdWludDMyX3QgQ0dTQ29ubmVjdGlvbklEOwordHlwZWRlZiB1aW50
MzJfdCBDR1NXaW5kb3dJRDsKK0NHU0Nvbm5lY3Rpb25JRCBDR1NNYWluQ29ubmVjdGlvbklEKHZv
aWQpOworQ0dFcnJvciBDR1NHZXRTY3JlZW5SZWN0Rm9yV2luZG93KENHU0Nvbm5lY3Rpb25JRCBj
aWQsIENHU1dpbmRvd0lEIHdpZCwgQ0dSZWN0ICpyZWN0KTsKK307CisKK3VzaW5nIG5hbWVzcGFj
ZSBXZWJDb3JlOworCituYW1lc3BhY2UgV2ViS2l0IHsKKworVmlld1NuYXBzaG90U3RvcmU6OlZp
ZXdTbmFwc2hvdFN0b3JlKCkKKyAgICA6IG1fZW5hYmxlZCh0cnVlKQoreworfQorCitWaWV3U25h
cHNob3RTdG9yZTo6flZpZXdTbmFwc2hvdFN0b3JlKCkKK3sKK30KKworVmlld1NuYXBzaG90U3Rv
cmUmIFZpZXdTbmFwc2hvdFN0b3JlOjpzaGFyZWQoKQoreworICAgIHN0YXRpYyBWaWV3U25hcHNo
b3RTdG9yZSYgc3RvcmUgPSAqbmV3IFZpZXdTbmFwc2hvdFN0b3JlOworICAgIHJldHVybiBzdG9y
ZTsKK30KKwordm9pZCBWaWV3U25hcHNob3RTdG9yZTo6dGFrZVNuYXBzaG90KFdlYlBhZ2VQcm94
eSYgd2ViUGFnZVByb3h5KQoreworICAgIFJlZlB0cjxXZWJCYWNrRm9yd2FyZExpc3RJdGVtPiBp
dGVtID0gd2ViUGFnZVByb3h5LmJhY2tGb3J3YXJkTGlzdCgpLmN1cnJlbnRJdGVtKCk7CisKKyAg
ICBpZiAoIW1fZW5hYmxlZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKCFpdGVtKQorICAg
ICAgICByZXR1cm47CisKKyAgICBXS1ZpZXcgKndrVmlldyA9IHdlYlBhZ2VQcm94eS53a1ZpZXco
KTsKKyAgICBOU1dpbmRvdyAqd2luZG93ID0gd2tWaWV3LndpbmRvdzsKKworICAgIGlmICghW3dp
bmRvdyB3aW5kb3dOdW1iZXJdKQorICAgICAgICByZXR1cm47CisKKyAgICBSZXRhaW5QdHI8Q0dJ
bWFnZVJlZj4gd2luZG93U25hcHNob3RJbWFnZSA9IGFkb3B0Q0YoQ0dXaW5kb3dMaXN0Q3JlYXRl
SW1hZ2UoQ0dSZWN0TnVsbCwga0NHV2luZG93TGlzdE9wdGlvbkluY2x1ZGluZ1dpbmRvdywgW3dp
bmRvdyB3aW5kb3dOdW1iZXJdLCBrQ0dXaW5kb3dJbWFnZUJvdW5kc0lnbm9yZUZyYW1pbmcgfCBr
Q0dXaW5kb3dJbWFnZVNob3VsZEJlT3BhcXVlKSk7CisKKyAgICBOU1JlY3Qgd2luZG93Q2FwdHVy
ZVJlY3QgPSBbd2tWaWV3IGNvbnZlcnRSZWN0Olt3a1ZpZXcgYm91bmRzXSB0b1ZpZXc6bmlsXTsK
KyAgICBOU1JlY3Qgd2luZG93Q2FwdHVyZVNjcmVlblJlY3QgPSBbd2luZG93IGNvbnZlcnRSZWN0
VG9TY3JlZW46d2luZG93Q2FwdHVyZVJlY3RdOworICAgIENHUmVjdCB3aW5kb3dTY3JlZW5SZWN0
OworICAgIENHU0dldFNjcmVlblJlY3RGb3JXaW5kb3coQ0dTTWFpbkNvbm5lY3Rpb25JRCgpLCAo
Q0dTV2luZG93SUQpW3dpbmRvdyB3aW5kb3dOdW1iZXJdLCAmd2luZG93U2NyZWVuUmVjdCk7CisK
KyAgICBOU1JlY3QgY3JvcHBlZEltYWdlUmVjdCA9IHdpbmRvd0NhcHR1cmVSZWN0OworICAgIGNy
b3BwZWRJbWFnZVJlY3Qub3JpZ2luLnkgPSB3aW5kb3dTY3JlZW5SZWN0LnNpemUuaGVpZ2h0IC0g
d2luZG93Q2FwdHVyZVNjcmVlblJlY3Quc2l6ZS5oZWlnaHQgLSBOU01pblkod2luZG93Q2FwdHVy
ZVJlY3QpOworCisgICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IGNyb3BwZWRJbWFnZSA9IGFkb3B0
Q0YoQ0dJbWFnZUNyZWF0ZVdpdGhJbWFnZUluUmVjdCh3aW5kb3dTbmFwc2hvdEltYWdlLmdldCgp
LCBOU1JlY3RUb0NHUmVjdChbd2luZG93IGNvbnZlcnRSZWN0VG9CYWNraW5nOmNyb3BwZWRJbWFn
ZVJlY3RdKSkpOworCisgICAgaXRlbS0+c2V0U25hcHNob3RVVUlEKGNyZWF0ZUNhbm9uaWNhbFVV
SURTdHJpbmcoKSk7CisgICAgbV9zbmFwc2hvdE1hcC5hZGQoaXRlbS0+c25hcHNob3RVVUlEKCks
IHN0ZDo6bWFrZV9wYWlyKGNyb3BwZWRJbWFnZSwgd2ViUGFnZVByb3h5LnJlbmRlclRyZWVTaXpl
KCkpKTsKK30KKworQ0dJbWFnZVJlZiBWaWV3U25hcHNob3RTdG9yZTo6Z2V0U25hcHNob3RBbmRS
ZW5kZXJUcmVlU2l6ZShXZWJCYWNrRm9yd2FyZExpc3RJdGVtKiBpdGVtLCB1aW50NjRfdCYgcmVu
ZGVyVHJlZVNpemUpCit7CisgICAgY29uc3QgYXV0byYgc25hcHNob3RBbmRSZW5kZXJUcmVlU2l6
ZSA9IG1fc25hcHNob3RNYXAuZmluZChpdGVtLT5zbmFwc2hvdFVVSUQoKSk7CisKKyAgICBpZiAo
c25hcHNob3RBbmRSZW5kZXJUcmVlU2l6ZSA9PSBtX3NuYXBzaG90TWFwLmVuZCgpKSB7CisgICAg
ICAgIHJlbmRlclRyZWVTaXplID0gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQor
CisgICAgcmVuZGVyVHJlZVNpemUgPSBzbmFwc2hvdEFuZFJlbmRlclRyZWVTaXplLT52YWx1ZS5z
ZWNvbmQ7CisgICAgcmV0dXJuIHNuYXBzaG90QW5kUmVuZGVyVHJlZVNpemUtPnZhbHVlLmZpcnN0
LmdldCgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQy
L1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA1MmFiYzFkLi42M2Y2NGVi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKKysrIGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCkBAIC0zOTUsNiArMzk1LDggQEAKIAkJMkQxMjVDNUYxODU3RUEwNTAwM0JBM0NCIC8qIFZp
ZXdHZXN0dXJlQ29udHJvbGxlci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDJEMTI1QzVEMTg1N0VBMDUwMDNCQTNDQiAvKiBWaWV3R2VzdHVyZUNvbnRy
b2xsZXIubW0gKi87IH07CiAJCTJEMUI1RDVEMTg1ODY5QzgwMDZDNjU5NiAvKiBWaWV3R2VzdHVy
ZUNvbnRyb2xsZXJNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMkQxQjVENUIxODU4NjlDODAwNkM2NTk2IC8qIFZpZXdHZXN0
dXJlQ29udHJvbGxlck1lc3NhZ2VSZWNlaXZlci5jcHAgKi87IH07CiAJCTJEMUI1RDVFMTg1ODY5
QzgwMDZDNjU5NiAvKiBWaWV3R2VzdHVyZUNvbnRyb2xsZXJNZXNzYWdlcy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkQxQjVENUMxODU4NjlDODAwNkM2
NTk2IC8qIFZpZXdHZXN0dXJlQ29udHJvbGxlck1lc3NhZ2VzLmggKi87IH07CisJCTJEMjU2MjE1
MTg4N0E5MEMwMEM2OTYzOSAvKiBWaWV3U25hcHNob3RTdG9yZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkQyNTYyMTMxODg3QTkwQzAwQzY5NjM5IC8q
IFZpZXdTbmFwc2hvdFN0b3JlLmggKi87IH07CisJCTJEMjU2MjE2MTg4N0E5MEMwMEM2OTYzOSAv
KiBWaWV3U25hcHNob3RTdG9yZS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDJEMjU2MjE0MTg4N0E5MEMwMEM2OTYzOSAvKiBWaWV3U25hcHNob3RTdG9y
ZS5tbSAqLzsgfTsKIAkJMkQyOEYzRTQxODg1Q0NDMTAwNEI5RUFFIC8qIFdlYkNocm9tZUNsaWVu
dElPUy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJE
MjhGM0UwMTg4NUNDQzEwMDRCOUVBRSAvKiBXZWJDaHJvbWVDbGllbnRJT1MubW0gKi87IH07CiAJ
CTJEMjhGM0U1MTg4NUNDQzEwMDRCOUVBRSAvKiBXZWJEYXRhYmFzZU1hbmFnZXJJT1MubW0gaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRDI4RjNFMTE4ODVD
Q0MxMDA0QjlFQUUgLyogV2ViRGF0YWJhc2VNYW5hZ2VySU9TLm1tICovOyB9OwogCQkyRDI4RjNF
NjE4ODVDQ0MxMDA0QjlFQUUgLyogV2ViRWRpdG9yQ2xpZW50SU9TLm1tIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkQyOEYzRTIxODg1Q0NDMTAwNEI5RUFF
IC8qIFdlYkVkaXRvckNsaWVudElPUy5tbSAqLzsgfTsKQEAgLTIwMzYsNiArMjAzOCw4IEBACiAJ
CTJEMUI1RDVBMTg1ODY1OTkwMDZDNjU5NiAvKiBWaWV3R2VzdHVyZUNvbnRyb2xsZXIubWVzc2Fn
ZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0
ZXh0OyBwYXRoID0gVmlld0dlc3R1cmVDb250cm9sbGVyLm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkyRDFCNUQ1QjE4NTg2OUM4MDA2QzY1OTYgLyogVmlld0dlc3R1
cmVDb250cm9sbGVyTWVzc2FnZVJlY2VpdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFZpZXdHZXN0dXJlQ29udHJvbGxlck1lc3NhZ2VSZWNlaXZlci5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJEMUI1RDVDMTg1ODY5QzgwMDZDNjU5NiAvKiBW
aWV3R2VzdHVyZUNvbnRyb2xsZXJNZXNzYWdlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBWaWV3R2VzdHVyZUNvbnRyb2xsZXJNZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQkyRDI1NjIxMzE4ODdBOTBDMDBDNjk2MzkgLyogVmlld1NuYXBzaG90U3Rv
cmUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVmlld1NuYXBzaG90U3RvcmUu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMkQyNTYyMTQxODg3QTkwQzAwQzY5NjM5
IC8qIFZpZXdTbmFwc2hvdFN0b3JlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gVmlld1NuYXBzaG90U3RvcmUubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTJEMjhGM0UwMTg4NUNDQzEwMDRCOUVBRSAvKiBXZWJDaHJvbWVDbGllbnRJT1MubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBXZWJDaHJvbWVDbGllbnRJT1Mu
bW07IHBhdGggPSBpb3MvV2ViQ2hyb21lQ2xpZW50SU9TLm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkyRDI4RjNFMTE4ODVDQ0MxMDA0QjlFQUUgLyogV2ViRGF0YWJhc2VNYW5hZ2Vy
SU9TLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gV2ViRGF0YWJh
c2VNYW5hZ2VySU9TLm1tOyBwYXRoID0gaW9zL1dlYkRhdGFiYXNlTWFuYWdlcklPUy5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkQyOEYzRTIxODg1Q0NDMTAwNEI5RUFFIC8qIFdl
YkVkaXRvckNsaWVudElPUy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFt
ZSA9IFdlYkVkaXRvckNsaWVudElPUy5tbTsgcGF0aCA9IGlvcy9XZWJFZGl0b3JDbGllbnRJT1Mu
bW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC01NjY5LDYgKzU2NzMsOCBAQAogCQkJ
CTJEMTI1QzVDMTg1N0VBMDUwMDNCQTNDQiAvKiBWaWV3R2VzdHVyZUNvbnRyb2xsZXIuaCAqLywK
IAkJCQkyRDEyNUM1RDE4NTdFQTA1MDAzQkEzQ0IgLyogVmlld0dlc3R1cmVDb250cm9sbGVyLm1t
ICovLAogCQkJCTJEMUI1RDVBMTg1ODY1OTkwMDZDNjU5NiAvKiBWaWV3R2VzdHVyZUNvbnRyb2xs
ZXIubWVzc2FnZXMuaW4gKi8sCisJCQkJMkQyNTYyMTMxODg3QTkwQzAwQzY5NjM5IC8qIFZpZXdT
bmFwc2hvdFN0b3JlLmggKi8sCisJCQkJMkQyNTYyMTQxODg3QTkwQzAwQzY5NjM5IC8qIFZpZXdT
bmFwc2hvdFN0b3JlLm1tICovLAogCQkJCTcyOEU4NkVGMTc5NTE4OEMwMDg3ODc5RSAvKiBXZWJD
b2xvclBpY2tlck1hYy5oICovLAogCQkJCTcyOEU4NkYwMTc5NTE4OEMwMDg3ODc5RSAvKiBXZWJD
b2xvclBpY2tlck1hYy5tbSAqLywKIAkJCQkxQTFDNjQ4NjExRjQxNUI3MDA1NTNDMTkgLyogV2Vi
Q29udGV4dE1hYy5tbSAqLywKQEAgLTYzNzQsNiArNjM4MCw3IEBACiAJCQkJMkRBOTQ0OTExODg0
RTNCNTAwRUQ4NkRCIC8qIFdLSW50ZXJhY3Rpb25WaWV3LmggaW4gSGVhZGVycyAqLywKIAkJCQkz
MzA5MzQ0ODEzMTVCOTIyMDA5N0E3QkMgLyogV2ViQ29va2llTWFuYWdlck1lc3NhZ2VzLmggaW4g
SGVhZGVycyAqLywKIAkJCQkzMzA5MzQ1NjEzMTVCOTc1MDA5N0E3QkMgLyogV2ViQ29va2llTWFu
YWdlclByb3h5LmggaW4gSGVhZGVycyAqLywKKwkJCQkyRDI1NjIxNTE4ODdBOTBDMDBDNjk2Mzkg
LyogVmlld1NuYXBzaG90U3RvcmUuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxNUU3NzJDMTg0MDA4
QjkwMDA3MjAzRiAvKiBEYXRhYmFzZVByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTMzQUExMDY3MTMxRjA2MDAwMEQ0QTU3NSAvKiBXZWJDb29raWVNYW5hZ2Vy
UHJveHlDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTMzMDkzNDRBMTMxNUI5MjIwMDk3QTdC
QyAvKiBXZWJDb29raWVNYW5hZ2VyUHJveHlNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCkBAIC03
NTA3LDYgKzc1MTQsNyBAQAogCQkJCUJDNjQ2OTZGMTFEQkU2MDMwMDY0NTVCMCAvKiBBUElBcnJh
eS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQ0JDQjBDRDEyMTVFMzNBMDBERTU5Q0EgLyogSW1t
dXRhYmxlRGljdGlvbmFyeS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzIwNEVFMjExQzgzRTk4
MDA4RjMzNzUgLyogSW5qZWN0ZWRCdW5kbGUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMkQyNTYy
MTYxODg3QTkwQzAwQzY5NjM5IC8qIFZpZXdTbmFwc2hvdFN0b3JlLm1tIGluIFNvdXJjZXMgKi8s
CiAJCQkJMzdDNEMwOTMxODE0QjNBRjAwMzY4OEI5IC8qIFdLTlNBcnJheS5tbSBpbiBTb3VyY2Vz
ICovLAogCQkJCTkzNUVFQkExMTI3NzYxQ0MwMDMzMjJCOCAvKiBJbmplY3RlZEJ1bmRsZUJhY2tG
b3J3YXJkTGlzdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5MzVFRUJBMzEyNzc2MUQzMDAzMzIy
QjggLyogSW5qZWN0ZWRCdW5kbGVCYWNrRm9yd2FyZExpc3RJdGVtLmNwcCBpbiBTb3VyY2VzICov
LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAppbmRleCA0OTdjYjVjLi42MTlhZGM5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkZyYW1lTG9hZGVyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcApAQCAtMTU1MSw3ICsxNTUxLDcg
QEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlkQ2hhbmdlU2Nyb2xsT2Zmc2V0KCkKICAg
ICBpZiAoIW1fZnJhbWUtPmNvcmVGcmFtZSgpLT52aWV3KCkpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIHdlYlBhZ2UtPmRpZENoYW5nZVNjcm9sbE9mZnNldEZvck1haW5GcmFtZSgpOworICAgIHdl
YlBhZ2UtPnVwZGF0ZU1haW5GcmFtZVNjcm9sbE9mZnNldFBpbm5pbmcoKTsKIH0KIAogYm9vbCBX
ZWJGcmFtZUxvYWRlckNsaWVudDo6YWxsb3dTY3JpcHQoYm9vbCBlbmFibGVkUGVyU2V0dGluZ3Mp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvVmlld0dlc3R1
cmVHZW9tZXRyeUNvbGxlY3Rvci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvci5jcHAKaW5kZXggNDExOWE4Yy4uMmJiZjky
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdHZXN0
dXJlR2VvbWV0cnlDb2xsZWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9WaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yLmNwcApAQCAtNDIsNiArNDIsOCBA
QCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvcjo6Vmll
d0dlc3R1cmVHZW9tZXRyeUNvbGxlY3RvcihXZWJQYWdlJiB3ZWJQYWdlKQogICAgIDogbV93ZWJQ
YWdlKHdlYlBhZ2UpCisgICAgLCBtX3JlbmRlclRyZWVTaXplTm90aWZpY2F0aW9uVGhyZXNob2xk
KDApCisgICAgLCBtX3JlbmRlclRyZWVTaXplTm90aWZpY2F0aW9uVGltZXIoUnVuTG9vcDo6bWFp
bigpLCB0aGlzLCAmVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvcjo6cmVuZGVyVHJlZVNpemVO
b3RpZmljYXRpb25UaW1lckZpcmVkKQogewogICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLmFkZE1l
c3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6Vmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvcjo6bWVz
c2FnZVJlY2VpdmVyTmFtZSgpLCBtX3dlYlBhZ2UucGFnZUlEKCksICp0aGlzKTsKIH0KQEAgLTc3
LDQgKzc5LDE3IEBAIHZvaWQgVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvcjo6Y29sbGVjdEdl
b21ldHJ5Rm9yU21hcnRNYWduaWZpY2F0aW9uR2VzdHVyZShGCiAgICAgfQogfQogCit2b2lkIFZp
ZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3I6Om1haW5GcmFtZURpZExheW91dCgpCit7CisgICAg
aWYgKG1fcmVuZGVyVHJlZVNpemVOb3RpZmljYXRpb25UaHJlc2hvbGQgJiYgbV93ZWJQYWdlLnJl
bmRlclRyZWVTaXplKCkgPj0gbV9yZW5kZXJUcmVlU2l6ZU5vdGlmaWNhdGlvblRocmVzaG9sZCkg
eworICAgICAgICBtX3JlbmRlclRyZWVTaXplTm90aWZpY2F0aW9uVGltZXIuc3RhcnRPbmVTaG90
KDApOworICAgICAgICBtX3JlbmRlclRyZWVTaXplTm90aWZpY2F0aW9uVGhyZXNob2xkID0gMDsK
KyAgICB9Cit9CisKK3ZvaWQgVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvcjo6cmVuZGVyVHJl
ZVNpemVOb3RpZmljYXRpb25UaW1lckZpcmVkKCkKK3sKKyAgICBtX3dlYlBhZ2Uuc2VuZChNZXNz
YWdlczo6Vmlld0dlc3R1cmVDb250cm9sbGVyOjpEaWRIaXRSZW5kZXJUcmVlU2l6ZVRocmVzaG9s
ZCgpKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvci5oIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdHZXN0dXJlR2VvbWV0cnlDb2xs
ZWN0b3IuaAppbmRleCAzMjA5NTdiLi44MmI5ZTc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvci5oCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9WaWV3R2VzdHVyZUdlb21ldHJ5Q29s
bGVjdG9yLmgKQEAgLTI3LDYgKzI3LDcgQEAKICNkZWZpbmUgVmlld0dlc3R1cmVHZW9tZXRyeUNv
bGxlY3Rvcl9oCiAKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKKyNpbmNsdWRlIDxXVEYv
UnVuTG9vcC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBGbG9hdFBvaW50OwpAQCAt
NDEsNiArNDIsOCBAQCBwdWJsaWM6CiAgICAgVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3RvcihX
ZWJQYWdlJik7CiAgICAgflZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3IoKTsKIAorICAgIHZv
aWQgbWFpbkZyYW1lRGlkTGF5b3V0KCk7CisKIHByaXZhdGU6CiAgICAgLy8gSVBDOjpNZXNzYWdl
UmVjZWl2ZXIuCiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVj
dGlvbiosIElQQzo6TWVzc2FnZURlY29kZXImKSBvdmVycmlkZTsKQEAgLTQ4LDggKzUxLDE0IEBA
IHByaXZhdGU6CiAgICAgLy8gTWVzc2FnZSBoYW5kbGVycy4KICAgICB2b2lkIGNvbGxlY3RHZW9t
ZXRyeUZvck1hZ25pZmljYXRpb25HZXN0dXJlKCk7CiAgICAgdm9pZCBjb2xsZWN0R2VvbWV0cnlG
b3JTbWFydE1hZ25pZmljYXRpb25HZXN0dXJlKFdlYkNvcmU6OkZsb2F0UG9pbnQgb3JpZ2luKTsK
KyAgICB2b2lkIHNldFJlbmRlclRyZWVTaXplTm90aWZpY2F0aW9uVGhyZXNob2xkKHVpbnQ2NF90
IHNpemUpIHsgbV9yZW5kZXJUcmVlU2l6ZU5vdGlmaWNhdGlvblRocmVzaG9sZCA9IHNpemU7IH0K
KworICAgIHZvaWQgcmVuZGVyVHJlZVNpemVOb3RpZmljYXRpb25UaW1lckZpcmVkKCk7CiAKICAg
ICBXZWJQYWdlJiBtX3dlYlBhZ2U7CisKKyAgICB1aW50NjRfdCBtX3JlbmRlclRyZWVTaXplTm90
aWZpY2F0aW9uVGhyZXNob2xkOworICAgIFJ1bkxvb3A6OlRpbWVyPFZpZXdHZXN0dXJlR2VvbWV0
cnlDb2xsZWN0b3I+IG1fcmVuZGVyVHJlZVNpemVOb3RpZmljYXRpb25UaW1lcjsKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL1ZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3IubWVzc2FnZXMuaW4gYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rv
ci5tZXNzYWdlcy5pbgppbmRleCA2NWVhYTU4Li4zOWIxOGJiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvci5t
ZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvVmlld0dl
c3R1cmVHZW9tZXRyeUNvbGxlY3Rvci5tZXNzYWdlcy5pbgpAQCAtMjUsNCArMjUsNSBAQCBtZXNz
YWdlcyAtPiBWaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yIHsKIENvbGxlY3RHZW9tZXRyeUZv
ck1hZ25pZmljYXRpb25HZXN0dXJlKCkKIENvbGxlY3RHZW9tZXRyeUZvclNtYXJ0TWFnbmlmaWNh
dGlvbkdlc3R1cmUoV2ViQ29yZTo6RmxvYXRQb2ludCBvcmlnaW4pCiAKK1NldFJlbmRlclRyZWVT
aXplTm90aWZpY2F0aW9uVGhyZXNob2xkKHVpbnQ2NF90IHNpemUpCiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggNzE2ZWRiZS4uZjI2Yzdj
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApA
QCAtMzAwNCw3ICszMDA0LDcgQEAgdm9pZCBXZWJQYWdlOjpjbGVhclNlbGVjdGlvbigpCiAgICAg
bV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKS5zZWxlY3Rpb24o
KS5jbGVhcigpOwogfQogCi12b2lkIFdlYlBhZ2U6OmRpZENoYW5nZVNjcm9sbE9mZnNldEZvck1h
aW5GcmFtZSgpCit2b2lkIFdlYlBhZ2U6OnVwZGF0ZU1haW5GcmFtZVNjcm9sbE9mZnNldFBpbm5p
bmcoKQogewogICAgIEZyYW1lJiBmcmFtZSA9IG1fcGFnZS0+bWFpbkZyYW1lKCk7CiAgICAgSW50
UG9pbnQgc2Nyb2xsUG9zaXRpb24gPSBmcmFtZS52aWV3KCktPnNjcm9sbFBvc2l0aW9uKCk7CkBA
IC0zMDQ1LDYgKzMwNDUsMTAgQEAgdm9pZCBXZWJQYWdlOjptYWluRnJhbWVEaWRMYXlvdXQoKQog
ICAgICAgICB9CiAgICAgfQogI2VuZGlmCisKKyNpZiBQTEFURk9STShNQUMpCisgICAgbV92aWV3
R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yLm1haW5GcmFtZURpZExheW91dCgpOworI2VuZGlmCiB9
CiAKIHZvaWQgV2ViUGFnZTo6YWRkUGx1Z2luVmlldyhQbHVnaW5WaWV3KiBwbHVnaW5WaWV3KQpA
QCAtMzk1Myw2ICszOTU3LDggQEAgdm9pZCBXZWJQYWdlOjpkaWRDb21taXRMb2FkKFdlYkZyYW1l
KiBmcmFtZSkKICNlbmRpZgogCiAgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkudXBkYXRlQWN0aXZl
UGFnZXMoKTsKKworICAgIHVwZGF0ZU1haW5GcmFtZVNjcm9sbE9mZnNldFBpbm5pbmcoKTsKIH0K
IAogdm9pZCBXZWJQYWdlOjpkaWRGaW5pc2hMb2FkKFdlYkZyYW1lKiBmcmFtZSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IDZmMDRkNjMuLjZlZTI3
ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAt
NTgxLDcgKzU4MSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldE1lZGlhVm9sdW1lKGZsb2F0KTsK
ICAgICB2b2lkIHNldE1heVN0YXJ0TWVkaWFXaGVuSW5XaW5kb3coYm9vbCk7CiAKLSAgICB2b2lk
IGRpZENoYW5nZVNjcm9sbE9mZnNldEZvck1haW5GcmFtZSgpOworICAgIHZvaWQgdXBkYXRlTWFp
bkZyYW1lU2Nyb2xsT2Zmc2V0UGlubmluZygpOwogCiAgICAgdm9pZCBtYWluRnJhbWVEaWRMYXlv
dXQoKTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>221898</attachid>
            <date>2014-01-22 13:10:10 -0800</date>
            <delta_ts>2014-01-24 16:27:51 -0800</delta_ts>
            <desc>patch (won&apos;t build b/c of dependencies)</desc>
            <filename>swipe2.diff</filename>
            <type>text/plain</type>
            <size>29422</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCA2ZmFhN2U1Li4wODNmMDdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTAw
IEBACisyMDE0LTAxLTIxICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgor
CisgICAgICAgIFdlYktpdDIgVmlldyBHZXN0dXJlczogRmx1aWQgYmFjay1mb3J3YXJkIHN3aXBl
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjczNjMK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgc3Vw
cG9ydCBmb3IgYSAiYmFjay1mb3J3YXJkIHN3aXBlIiwgd2hpY2ggYWxsb3dzIGZsdWlkIHN3aXBp
bmcgYmV0d2VlbgorICAgICAgICBpdGVtcyBpbiB0aGUgYmFjay1mb3J3YXJkIGxpc3QuIEN1cnJl
bnRseSBkaXNhYmxlZCBieSBkZWZhdWx0LgorCisgICAgICAgICogU2hhcmVkL1dlYlByZWZlcmVu
Y2VzU3RvcmUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNlcy5jcHA6
CisgICAgICAgIChXS1ByZWZlcmVuY2VzU2V0Vmlld0dlc3R1cmVEZWJ1Z2dpbmdFbmFibGVkKToK
KyAgICAgICAgKFdLUHJlZmVyZW5jZXNHZXRWaWV3R2VzdHVyZURlYnVnZ2luZ0VuYWJsZWQpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzUHJpdmF0ZS5oOgorICAgICAg
ICBBZGQgYSBWaWV3R2VzdHVyZURlYnVnZ2luZ0VuYWJsZWQgcHJlZmVyZW5jZSwgd2hpY2ggY3Vy
cmVudGx5IGNhdXNlcyBzbmFwc2hvdHMgdG8gYmUgYmx1cnJlZC4KKyAgICAgICAgQWRkaXRpb25h
bCB2aWV3IGdlc3R1cmUgZGVidWdnaW5nIGZlYXR1cmVzIGNvdWxkIGNvbWUgaW4gdGhlIGZ1dHVy
ZS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tWaWV3UHJpdmF0ZS5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbToKKyAgICAgICAgKC1bV0tWaWV3IF9l
bnN1cmVHZXN0dXJlQ29udHJvbGxlcl0pOgorICAgICAgICAoLVtXS1ZpZXcgc2Nyb2xsV2hlZWw6
XSk6CisgICAgICAgIElmIGJhY2stZm9yd2FyZCBuYXZpZ2F0aW9uIGdlc3R1cmVzIGFyZSBlbmFi
bGVkLCBpbnRlcmNlcHQgc2Nyb2xsV2hlZWwgZXZlbnRzCisgICAgICAgIG9uIHRoZSBXS1ZpZXcg
YW5kIGxldCB0aGUgVmlld0dlc3R1cmVDb250cm9sbGVyIHRha2UgdGhlIGZpcnN0IGNyYWNrIGF0
IHRoZW0uCisKKyAgICAgICAgKC1bV0tWaWV3IF9yb290TGF5ZXJdKToKKyAgICAgICAgKC1bV0tW
aWV3IHNldEFsbG93c0JhY2tGb3J3YXJkTmF2aWdhdGlvbkdlc3R1cmVzOl0pOgorICAgICAgICAo
LVtXS1ZpZXcgYWxsb3dzQmFja0ZvcndhcmROYXZpZ2F0aW9uR2VzdHVyZXNdKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXdJbnRlcm5hbC5oOgorICAgICAgICBBZGQgYWxsb3dz
QmFja0ZvcndhcmROYXZpZ2F0aW9uR2VzdHVyZSBwcm9wZXJ0eSwgd2hpY2ggZW5hYmxlcyB0aGUg
Z2VzdHVyZS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvVmlld0dlc3R1cmVDb250cm9sbGVy
Lmg6CisgICAgICAgIEFkZCBzd2lwZS1yZWxhdGVkIG1ldGhvZHMsIHdoaWNoIHdpbGwgYmUgZGVz
Y3JpYmVkIGJlbG93LgorCisgICAgICAgIEFkZCBhbiBlbnVtIGZvciB0aGUgc3dpcGUgdHJhbnNp
dGlvbiBzdHlsZS4gQ3VycmVudGx5IG9ubHkgT3ZlcmxhcCBpcyBhY2Nlc3NpYmxlLAorICAgICAg
ICBidXQgaW4gdGhlIGZ1dHVyZSBvbmUgY291bGQgc2VlIGhhdmluZyBBUEkgdG8gY2hvb3NlIHRo
ZSBzdHlsZS4KKyAgICAgICAgJ092ZXJsYXAnIGhhcyB0aGUgb3V0Z29pbmcgcGFnZSBzd2lwZSBv
dXQgdG8gdGhlIHJpZ2h0ICh3aGVuIHN3aXBpbmcgcmlnaHQpCisgICAgICAgIG9yIHRoZSBpbmNv
bWluZyBwYWdlIHN3aXBlIGluIGZyb20gdGhlIHJpZ2h0ICh3aGVuIHN3aXBpbmcgbGVmdCkuCisg
ICAgICAgICdQdXNoJyBoYXMgdGhlIHBhZ2VzIHB1c2ggZWFjaCBvdGhlciBhbG9uZyBpbiBzeW5j
LCBhcyBpZiBhbGwgdGhlIHBhZ2VzIGluIHRoZQorICAgICAgICBiYWNrLWZvcndhcmQgbGlzdCB3
ZXJlIG9yaWVudGVkIGZyb20gbGVmdCB0byByaWdodC4KKworICAgICAgICAqIFVJUHJvY2Vzcy9t
YWMvVmlld0dlc3R1cmVDb250cm9sbGVyLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFVJUHJvY2Vz
cy9tYWMvVmlld0dlc3R1cmVDb250cm9sbGVyLm1tOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL21hYy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIuY3BwLgorICAgICAgICBVc2Ug
c29tZSBDQUZpbHRlciBTUEkgdG8gYmx1ciB0aGUgc25hcHNob3QgaWYgVmlld0dlc3R1cmVEZWJ1
Z2dpbmdFbmFibGVkIGlzIG9uLgorCisgICAgICAgIChXZWJLaXQ6OlZpZXdHZXN0dXJlQ29udHJv
bGxlcjo6Vmlld0dlc3R1cmVDb250cm9sbGVyKToKKyAgICAgICAgKFdlYktpdDo6Vmlld0dlc3R1
cmVDb250cm9sbGVyOjp+Vmlld0dlc3R1cmVDb250cm9sbGVyKToKKyAgICAgICAgKFdlYktpdDo6
Vmlld0dlc3R1cmVDb250cm9sbGVyOjplbmRNYWduaWZpY2F0aW9uR2VzdHVyZSk6CisgICAgICAg
IE1vdmUgbV9hY3RpdmVHZXN0dXJlVHlwZSBjbGVhcmluZyB0byBlYWNoIGVuZCogZnVuY3Rpb24g
aW5zdGVhZCBvZiBvbmUgZ2xvYmFsIHBsYWNlLAorICAgICAgICBzbyB0aGF0IGVhY2ggZ2VzdHVy
ZSBjYW4gaGFuZGxlIHdoZW4gaXQgZW5kcyBzZXBhcmF0ZWx5LgorCisgICAgICAgIChXZWJLaXQ6
OlZpZXdHZXN0dXJlQ29udHJvbGxlcjo6aGFuZGxlU2Nyb2xsV2hlZWxFdmVudCk6CisgICAgICAg
IElmIHdlIHJlY2VpdmUgYSBzY3JvbGwgd2hlZWwgZXZlbnQgd2hpY2ggaXMgYXBwcm9wcmlhdGUg
Zm9yIHN0YXJ0aW5nIGEKKyAgICAgICAgZmx1aWQgc3dpcGUsIGluIGEgZGlyZWN0aW9uIHdoZXJl
IHRoZSBtYWluIGZyYW1lIGlzIHBpbm5lZCB0byB0aGUgYXBwcm9wcmlhdGUKKyAgICAgICAgZWRn
ZSBvZiB0aGUgdmlldywgc3RhcnQgdHJhY2tpbmcgYSBzd2lwZS4KKworICAgICAgICBUaGlzIHNo
b3VsZCBldmVudHVhbGx5IGhhdmUgc29tZSBoeXN0ZXJpc2lzIHRvIGF2b2lkIHN0ZWFsaW5nIHNj
cm9sbHMgdGhhdAorICAgICAgICB2ZW50dXJlIGludG8gdGhlIHdyb25nIGRpcmVjdGlvbiwgYnV0
IGZvciBub3cgaXQgc3RhcnRzIHRyYWNraW5nIGltbWVkaWF0ZWx5LgorCisgICAgICAgIEZvcndh
cmQgZXZlbnRzIGZyb20gdGhlIHRyYWNraW5nIGxvb3AgdG8ge2JlZ2luLCBoYW5kbGUsIGVuZH1T
d2lwZUdlc3R1cmUuCisKKyAgICAgICAgKFdlYktpdDo6Vmlld0dlc3R1cmVDb250cm9sbGVyOjpi
ZWdpblN3aXBlR2VzdHVyZSk6CisgICAgICAgIENyZWF0ZSBhIGxheWVyIHdpdGggdGhlIGRlc3Rp
bmF0aW9uIHBhZ2UncyBzbmFwc2hvdCwgYW5kIHNldCBpdCB1cC4KKworICAgICAgICAoV2ViS2l0
OjpWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OmhhbmRsZVN3aXBlR2VzdHVyZSk6CisgICAgICAgIEFw
cHJvcHJpYXRlbHkgYWRqdXN0IHRoZSBwb3NpdGlvbiBvZiB0aGUgcm9vdCBsYXllciBhbmQgc25h
cHNob3QgbGF5ZXIsCisgICAgICAgIGdpdmVuIHRoZSB0cmFuc2l0aW9uIHN0eWxlIGFuZCBzd2lw
ZSBkaXJlY3Rpb24uCisKKyAgICAgICAgKFdlYktpdDo6Vmlld0dlc3R1cmVDb250cm9sbGVyOjpl
bmRTd2lwZUdlc3R1cmUpOgorICAgICAgICBXaGVuIHRoZSBnZXN0dXJlIGVuZHMsIGRvIHRoZSBu
YXZpZ2F0aW9uLCBhbmQgdGVsbCB0aGUgV2ViUHJvY2VzcyB0bworICAgICAgICBpbmZvcm0gdXMg
d2hlbiB0aGUgcmVuZGVyIHRyZWUgaGl0cyBoYWxmIHRoZSBzaXplIGl0IHdhcyB3aGVuIHRoZQor
ICAgICAgICBzbmFwc2hvdCB3YXMgdGFrZW4gKHdoZW4gdGhhdCBoYXBwZW5zLCB3ZSB3aWxsIHJl
bW92ZSB0aGUgc25hcHNob3QKKyAgICAgICAgYW5kIHRoZSBnZXN0dXJlIHdpbGwgYmUgdHJ1bHkg
Y29tcGxldGUpLiBBbHNvLCBzdGFydCBhIHdhdGNoZG9nIHRpbWVyCisgICAgICAgIGluIGNhc2Ug
dGhlIHJlbmRlciB0cmVlIG5ldmVyIGhpdHMgdGhhdCBzaXplLCBhZnRlciB3aGljaCB3ZSB3aWxs
CisgICAgICAgIGFsc28gcmVtb3ZlIHRoZSBzbmFwc2hvdC4KKworICAgICAgICAoV2ViS2l0OjpW
aWV3R2VzdHVyZUNvbnRyb2xsZXI6OmRpZEhpdFJlbmRlclRyZWVTaXplVGhyZXNob2xkKToKKyAg
ICAgICAgKFdlYktpdDo6Vmlld0dlc3R1cmVDb250cm9sbGVyOjpzd2lwZVNuYXBzaG90V2F0Y2hk
b2dUaW1lckZpcmVkKToKKyAgICAgICAgKFdlYktpdDo6Vmlld0dlc3R1cmVDb250cm9sbGVyOjpy
ZW1vdmVTd2lwZVNuYXBzaG90KToKKyAgICAgICAgVGVhciBkb3duIHRoZSBzd2lwZSBzbmFwc2hv
dCBsYXllciwgYW5kIG1hcmsgb3VyIGN1cnJlbnQgZ2VzdHVyZSBhcyBjb21wbGV0ZS4KKworICAg
ICAgICAoV2ViS2l0OjpWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OmVuZEFjdGl2ZUdlc3R1cmUpOgor
ICAgICAgICBTaW1wbGlmeSBlbmRBY3RpdmVHZXN0dXJlOyBpdCBvbmx5IGhhcyB3b3JrIHRvIGRv
IGZvciBhIHBpbmNoLXpvb20gZ2VzdHVyZSwKKyAgICAgICAgYXMgdGhvc2UgYXJlIHRoZSBvbmx5
IGdlc3R1cmVzIHdoZXJlIHRoZSB1c2VyIGlzIGRpcmVjdGx5IGluIGNvbnRyb2wgb2Ygd2hlbiB0
aGV5IGVuZC4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9WaWV3R2VzdHVyZUdlb21l
dHJ5Q29sbGVjdG9yLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Vmlld0dlc3R1cmVHZW9tZXRyeUNv
bGxlY3Rvcjo6Vmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvcik6CisgICAgICAgIChXZWJLaXQ6
OlZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3I6Om1haW5GcmFtZURpZExheW91dCk6CisgICAg
ICAgIChXZWJLaXQ6OlZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3I6OnJlbmRlclRyZWVTaXpl
Tm90aWZpY2F0aW9uVGltZXJGaXJlZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1Zp
ZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3IuaDoKKyAgICAgICAgKFdlYktpdDo6Vmlld0dlc3R1
cmVHZW9tZXRyeUNvbGxlY3Rvcjo6c2V0UmVuZGVyVHJlZVNpemVOb3RpZmljYXRpb25UaHJlc2hv
bGQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9WaWV3R2VzdHVyZUdlb21ldHJ5Q29s
bGVjdG9yLm1lc3NhZ2VzLmluOgorICAgICAgICBWaWV3R2VzdHVyZUNvbnRyb2xsZXIgcHVzaGVz
IGEgcmVuZGVyLXRyZWUgc2l6ZSB0aHJlc2hvbGQgdG8gdGhlIFdlYlByb2Nlc3M7CisgICAgICAg
IFZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3IgKHdob3NlIG5hbWUgaXMgbm93IG1vcmUgdW5m
b3J0dW5hdGUgdGhhbiBiZWZvcmUpCisgICAgICAgIG1vbml0b3JzIHJlbmRlci10cmVlIHNpemUg
Y2hhbmdlcyBhbmQgaW5mb3JtcyBWaWV3R2VzdHVyZUNvbnRyb2xsZXIgd2hlbgorICAgICAgICBp
dCByZWFjaGVzIHRoYXQgdGhyZXNob2xkIHZpYSB0aGUgJ0RpZEhpdFJlbmRlclRyZWVTaXplVGhy
ZXNob2xkJyBtZXNzYWdlLgorCiAyMDE0LTAxLTIyICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0
b25AYXBwbGUuY29tPgogCiAgICAgICAgIFdlYktpdDIgVmlldyBHZXN0dXJlcyAoU3dpcGUpOiBB
ZGQgYSBzaW1wbGUgY2FjaGUgb2YgdmlldyBzbmFwc2hvdHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9XZWJQcmVmZXJlbmNlc1N0b3JlLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvV2ViUHJlZmVyZW5jZXNTdG9yZS5oCmluZGV4IGU5ZjcxMTQuLjMyYWRkNTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcmVmZXJlbmNlc1N0b3JlLmgKKysrIGIvU291
cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByZWZlcmVuY2VzU3RvcmUuaApAQCAtMTc5LDYgKzE3OSw3
IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogICAgIG1hY3JvKFVzZUxlZ2FjeVRleHRBbGlnblBvc2l0
aW9uZWRFbGVtZW50QmVoYXZpb3IsIHVzZUxlZ2FjeVRleHRBbGlnblBvc2l0aW9uZWRFbGVtZW50
QmVoYXZpb3IsIEJvb2wsIGJvb2wsIGZhbHNlKSBcCiAgICAgbWFjcm8oU3BhdGlhbE5hdmlnYXRp
b25FbmFibGVkLCBzcGF0aWFsTmF2aWdhdGlvbkVuYWJsZWQsIEJvb2wsIGJvb2wsIGZhbHNlKSBc
CiAgICAgbWFjcm8oTWVkaWFTb3VyY2VFbmFibGVkLCBtZWRpYVNvdXJjZUVuYWJsZWQsIEJvb2ws
IGJvb2wsIGZhbHNlKSBcCisgICAgbWFjcm8oVmlld0dlc3R1cmVEZWJ1Z2dpbmdFbmFibGVkLCB2
aWV3R2VzdHVyZURlYnVnZ2luZ0VuYWJsZWQsIEJvb2wsIGJvb2wsIGZhbHNlKSBcCiAgICAgXAog
CiAjZGVmaW5lIEZPUl9FQUNIX1dFQktJVF9ET1VCTEVfUFJFRkVSRU5DRShtYWNybykgXApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXMuY3Bw
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXMuY3BwCmluZGV4
IGVkZTA5ZDkuLmQ1MmQyNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQy9XS1ByZWZlcmVuY2VzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0MvV0tQcmVmZXJlbmNlcy5jcHAKQEAgLTEyNDUsMyArMTI0NSwxMyBAQCBib29sIFdLUHJlZmVy
ZW5jZXNHZXRNZWRpYVNvdXJjZUVuYWJsZWQoV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNlc1Jl
ZikKIHsKICAgICByZXR1cm4gdG9JbXBsKHByZWZlcmVuY2VzUmVmKS0+bWVkaWFTb3VyY2VFbmFi
bGVkKCk7CiB9CisKK3ZvaWQgV0tQcmVmZXJlbmNlc1NldFZpZXdHZXN0dXJlRGVidWdnaW5nRW5h
YmxlZChXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzUmVmLCBib29sIGVuYWJsZWQpCit7Cisg
ICAgdG9JbXBsKHByZWZlcmVuY2VzUmVmKS0+c2V0Vmlld0dlc3R1cmVEZWJ1Z2dpbmdFbmFibGVk
KGVuYWJsZWQpOworfQorCitib29sIFdLUHJlZmVyZW5jZXNHZXRWaWV3R2VzdHVyZURlYnVnZ2lu
Z0VuYWJsZWQoV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNlc1JlZikKK3sKKyAgICByZXR1cm4g
dG9JbXBsKHByZWZlcmVuY2VzUmVmKS0+dmlld0dlc3R1cmVEZWJ1Z2dpbmdFbmFibGVkKCk7Cit9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNl
c1ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2Vz
UHJpdmF0ZS5oCmluZGV4IDg2N2M5OTcuLjgwODUyNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzUHJpdmF0ZS5oCkBAIC0zMTQsNiAr
MzE0LDEwIEBAIFdLX0VYUE9SVCBib29sIFdLUHJlZmVyZW5jZXNVc2VMZWdhY3lUZXh0QWxpZ25Q
b3NpdGlvbmVkRWxlbWVudEJlaGF2aW9yKFdLUHJlZmVyCiBXS19FWFBPUlQgdm9pZCBXS1ByZWZl
cmVuY2VzU2V0TWVkaWFTb3VyY2VFbmFibGVkKFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXNS
ZWYsIGJvb2wgZW5hYmxlZCk7CiBXS19FWFBPUlQgYm9vbCBXS1ByZWZlcmVuY2VzR2V0TWVkaWFT
b3VyY2VFbmFibGVkKFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXNSZWYpOwogCisvLyBEZWZh
dWx0IHRvIGZhbHNlLgorV0tfRVhQT1JUIHZvaWQgV0tQcmVmZXJlbmNlc1NldFZpZXdHZXN0dXJl
RGVidWdnaW5nRW5hYmxlZChXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzUmVmLCBib29sIGVu
YWJsZWQpOworV0tfRVhQT1JUIGJvb2wgV0tQcmVmZXJlbmNlc0dldFZpZXdHZXN0dXJlRGVidWdn
aW5nRW5hYmxlZChXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzUmVmKTsKKwogI2lmZGVmIF9f
Y3BsdXNwbHVzCiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tWaWV3UHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1ZpZXdQcml2YXRlLmgKaW5kZXggMDkzZjBkMS4uOTI4NDkxOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ZpZXdQcml2YXRlLmgKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ZpZXdQcml2YXRlLmgKQEAg
LTY2LDYgKzY2LDcgQEAKIEBwcm9wZXJ0eSAocmVhZG9ubHksIGdldHRlcj1pc1VzaW5nVUlTaWRl
Q29tcG9zaXRpbmcpIEJPT0wgdXNpbmdVSVNpZGVDb21wb3NpdGluZzsKIEBwcm9wZXJ0eSAocmVh
ZHdyaXRlKSBCT09MIGFsbG93c01hZ25pZmljYXRpb247CiBAcHJvcGVydHkgKHJlYWR3cml0ZSkg
ZG91YmxlIG1hZ25pZmljYXRpb247CitAcHJvcGVydHkgKHJlYWR3cml0ZSkgQk9PTCBhbGxvd3NC
YWNrRm9yd2FyZE5hdmlnYXRpb25HZXN0dXJlczsKIAogQHByb3BlcnR5KGNvcHksIG5vbmF0b21p
YykgTlNDb2xvciAqdW5kZXJsYXlDb2xvcjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9tYWMvV0tWaWV3Lm1tCmluZGV4IDFmMTljOGIuLjBiZGY5NWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcubW0KQEAgLTIyMSw2ICsyMjEsNyBAQCBzdHJ1Y3Qg
V0tWaWV3SW50ZXJwcmV0S2V5RXZlbnRzUGFyYW1ldGVycyB7CiAKICAgICBzdGQ6OnVuaXF1ZV9w
dHI8Vmlld0dlc3R1cmVDb250cm9sbGVyPiBfZ2VzdHVyZUNvbnRyb2xsZXI7CiAgICAgQk9PTCBf
YWxsb3dzTWFnbmlmaWNhdGlvbjsKKyAgICBCT09MIF9hbGxvd3NCYWNrRm9yd2FyZE5hdmlnYXRp
b25HZXN0dXJlczsKIH0KIAogQGVuZApAQCAtMTA5MywxNiArMTA5NCwyNSBAQCBOQVRJVkVfTU9V
U0VfRVZFTlRfSEFORExFUihyaWdodE1vdXNlVXApCiAKICN1bmRlZiBOQVRJVkVfTU9VU0VfRVZF
TlRfSEFORExFUgogCi0jZGVmaW5lIE5BVElWRV9FVkVOVF9IQU5ETEVSKFNlbGVjdG9yLCBUeXBl
KSBcCi0gICAgLSAodm9pZClTZWxlY3RvcjooTlNFdmVudCAqKXRoZUV2ZW50IFwKLSAgICB7IFwK
LSAgICAgICAgTmF0aXZlV2ViIyNUeXBlIyNFdmVudCB3ZWJFdmVudCA9IE5hdGl2ZVdlYiMjVHlw
ZSMjRXZlbnQodGhlRXZlbnQsIHNlbGYpOyBcCi0gICAgICAgIF9kYXRhLT5fcGFnZS0+aGFuZGxl
IyNUeXBlIyNFdmVudCh3ZWJFdmVudCk7IFwKLSAgICB9CistICh2b2lkKV9lbnN1cmVHZXN0dXJl
Q29udHJvbGxlcgoreworICAgIGlmIChfZGF0YS0+X2dlc3R1cmVDb250cm9sbGVyKQorICAgICAg
ICByZXR1cm47CisKKyAgICBfZGF0YS0+X2dlc3R1cmVDb250cm9sbGVyID0gc3RkOjptYWtlX3Vu
aXF1ZTxWaWV3R2VzdHVyZUNvbnRyb2xsZXI+KCpfZGF0YS0+X3BhZ2UpOworfQogCi1OQVRJVkVf
RVZFTlRfSEFORExFUihzY3JvbGxXaGVlbCwgV2hlZWwpCistICh2b2lkKXNjcm9sbFdoZWVsOihO
U0V2ZW50ICopZXZlbnQKK3sKKyAgICBpZiAoX2RhdGEtPl9hbGxvd3NCYWNrRm9yd2FyZE5hdmln
YXRpb25HZXN0dXJlcykgeworICAgICAgICBbc2VsZiBfZW5zdXJlR2VzdHVyZUNvbnRyb2xsZXJd
OworICAgICAgICBpZiAoX2RhdGEtPl9nZXN0dXJlQ29udHJvbGxlci0+aGFuZGxlU2Nyb2xsV2hl
ZWxFdmVudChldmVudCkpCisgICAgICAgICAgICByZXR1cm47CisgICAgfQogCi0jdW5kZWYgTkFU
SVZFX0VWRU5UX0hBTkRMRVIKKyAgICBOYXRpdmVXZWJXaGVlbEV2ZW50IHdlYkV2ZW50ID0gTmF0
aXZlV2ViV2hlZWxFdmVudChldmVudCwgc2VsZik7CisgICAgX2RhdGEtPl9wYWdlLT5oYW5kbGVX
aGVlbEV2ZW50KHdlYkV2ZW50KTsKK30KIAogLSAodm9pZCltb3VzZU1vdmVkOihOU0V2ZW50ICop
ZXZlbnQKIHsKQEAgLTI0NzAsNiArMjQ4MCwxMSBAQCBzdGF0aWMgTlNTdHJpbmcgKiBjb25zdCBi
YWNraW5nUHJvcGVydHlPbGRTY2FsZUZhY3RvcktleSA9IEAiTlNCYWNraW5nUHJvcGVydHlPbAog
ICAgIF9kYXRhLT5fZmluZEluZGljYXRvcldpbmRvdy0+c2V0RmluZEluZGljYXRvcihmaW5kSW5k
aWNhdG9yLCBmYWRlT3V0LCBhbmltYXRlKTsKIH0KIAorLSAoQ0FMYXllciAqKV9yb290TGF5ZXIK
K3sKKyAgICByZXR1cm4gW19kYXRhLT5fbGF5ZXJIb3N0aW5nVmlldyBsYXllcl07Cit9CisKIC0g
KHZvaWQpX3NldEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlUm9vdExheWVyOihDQUxheWVyICop
cm9vdExheWVyCiB7CiAgICAgW0NBVHJhbnNhY3Rpb24gYmVnaW5dOwpAQCAtMzIwMCwxNCArMzIx
NSw2IEBAIHN0YXRpYyBOU1N0cmluZyAqcGF0aFdpdGhVbmlxdWVGaWxlbmFtZUZvclBhdGgoTlNT
dHJpbmcgKnBhdGgpCiAgICAgcmV0dXJuIE5POwogfQogCi0tICh2b2lkKV9lbnN1cmVHZXN0dXJl
Q29udHJvbGxlcgotewotICAgIGlmIChfZGF0YS0+X2dlc3R1cmVDb250cm9sbGVyKQotICAgICAg
ICByZXR1cm47Ci0KLSAgICBfZGF0YS0+X2dlc3R1cmVDb250cm9sbGVyID0gc3RkOjptYWtlX3Vu
aXF1ZTxWaWV3R2VzdHVyZUNvbnRyb2xsZXI+KCpfZGF0YS0+X3BhZ2UpOwotfQotCiAtICh2b2lk
KXNldEFsbG93c01hZ25pZmljYXRpb246KEJPT0wpYWxsb3dzTWFnbmlmaWNhdGlvbgogewogICAg
IF9kYXRhLT5fYWxsb3dzTWFnbmlmaWNhdGlvbiA9IGFsbG93c01hZ25pZmljYXRpb247CkBAIC0z
MjE4LDYgKzMyMjUsMTcgQEAgc3RhdGljIE5TU3RyaW5nICpwYXRoV2l0aFVuaXF1ZUZpbGVuYW1l
Rm9yUGF0aChOU1N0cmluZyAqcGF0aCkKICAgICByZXR1cm4gX2RhdGEtPl9hbGxvd3NNYWduaWZp
Y2F0aW9uOwogfQogCistICh2b2lkKXNldEFsbG93c0JhY2tGb3J3YXJkTmF2aWdhdGlvbkdlc3R1
cmVzOihCT09MKWFsbG93c0JhY2tGb3J3YXJkTmF2aWdhdGlvbkdlc3R1cmVzCit7CisgICAgX2Rh
dGEtPl9hbGxvd3NCYWNrRm9yd2FyZE5hdmlnYXRpb25HZXN0dXJlcyA9IGFsbG93c0JhY2tGb3J3
YXJkTmF2aWdhdGlvbkdlc3R1cmVzOworICAgIF9kYXRhLT5fcGFnZS0+c2V0U2hvdWxkVGFrZVZp
ZXdTbmFwc2hvdHNPbk5hdmlnYXRpb24oYWxsb3dzQmFja0ZvcndhcmROYXZpZ2F0aW9uR2VzdHVy
ZXMpOworfQorCistIChCT09MKWFsbG93c0JhY2tGb3J3YXJkTmF2aWdhdGlvbkdlc3R1cmVzCit7
CisgICAgcmV0dXJuIF9kYXRhLT5fYWxsb3dzQmFja0ZvcndhcmROYXZpZ2F0aW9uR2VzdHVyZXM7
Cit9CisKIC0gKHZvaWQpbWFnbmlmeVdpdGhFdmVudDooTlNFdmVudCAqKWV2ZW50CiB7CiAgICAg
aWYgKCFfZGF0YS0+X2FsbG93c01hZ25pZmljYXRpb24pIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlld0ludGVybmFsLmggYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXdJbnRlcm5hbC5oCmluZGV4IDQ4ZTZiOTMuLjIzNDk4
MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlld0lu
dGVybmFsLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3SW50
ZXJuYWwuaApAQCAtNjksNiArNjksNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIC0gKHZvaWQpX3Nl
dEZpbmRJbmRpY2F0b3I6KFBhc3NSZWZQdHI8V2ViS2l0OjpGaW5kSW5kaWNhdG9yPilmaW5kSW5k
aWNhdG9yIGZhZGVPdXQ6KEJPT0wpZmFkZU91dCBhbmltYXRlOihCT09MKWFuaW1hdGU7CiAKIC0g
KHZvaWQpX3NldEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlUm9vdExheWVyOihDQUxheWVyICop
cm9vdExheWVyOworLSAoQ0FMYXllciAqKV9yb290TGF5ZXI7CiAKIC0gKHZvaWQpX3NldEFjY2Vz
c2liaWxpdHlXZWJQcm9jZXNzVG9rZW46KE5TRGF0YSAqKWRhdGE7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvVmlld0dlc3R1cmVDb250cm9sbGVyLmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1ZpZXdHZXN0dXJlQ29udHJvbGxlci5oCmluZGV4IDJi
YmMyZjMuLjg3Y2IyNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMv
Vmlld0dlc3R1cmVDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21h
Yy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDEzLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjgsOSArMjgsMTUgQEAKIAogI2luY2x1ZGUgIk1l
c3NhZ2VSZWNlaXZlci5oIgogI2luY2x1ZGUgPFdlYkNvcmUvRmxvYXRSZWN0Lmg+CisjaW5jbHVk
ZSA8V2ViQ29yZS9UaW1lci5oPgorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKworT0JKQ19D
TEFTUyBDQUxheWVyOworT0JKQ19DTEFTUyBOU0V2ZW50OwogCiBuYW1lc3BhY2UgV2ViS2l0IHsK
IAorY2xhc3MgV2ViQmFja0ZvcndhcmRMaXN0SXRlbTsKIGNsYXNzIFdlYlBhZ2VQcm94eTsKIAog
Y2xhc3MgVmlld0dlc3R1cmVDb250cm9sbGVyIDogcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VSZWNlaXZl
ciB7CkBAIC00NCwxMiArNTAsMjEgQEAgcHVibGljOgogICAgIHZvaWQgaGFuZGxlTWFnbmlmaWNh
dGlvbkdlc3R1cmUoZG91YmxlIHNjYWxlLCBXZWJDb3JlOjpGbG9hdFBvaW50IG9yaWdpbik7CiAg
ICAgdm9pZCBoYW5kbGVTbWFydE1hZ25pZmljYXRpb25HZXN0dXJlKFdlYkNvcmU6OkZsb2F0UG9p
bnQgb3JpZ2luKTsKIAorICAgIGJvb2wgaGFuZGxlU2Nyb2xsV2hlZWxFdmVudChOU0V2ZW50ICop
OworICAgIHZvaWQgZGlkSGl0UmVuZGVyVHJlZVNpemVUaHJlc2hvbGQoKTsKKwogICAgIHZvaWQg
ZW5kQWN0aXZlR2VzdHVyZSgpOwogCiAgICAgZW51bSBjbGFzcyBWaWV3R2VzdHVyZVR5cGUgewog
ICAgICAgICBOb25lLAogICAgICAgICBNYWduaWZpY2F0aW9uLAogICAgICAgICBTbWFydE1hZ25p
ZmljYXRpb24sCisgICAgICAgIFN3aXBlCisgICAgfTsKKworICAgIGVudW0gY2xhc3MgU3dpcGVU
cmFuc2l0aW9uU3R5bGUgeworICAgICAgICBPdmVybGFwLAorICAgICAgICBQdXNoCiAgICAgfTsK
IAogcHJpdmF0ZToKQEAgLTYzLDYgKzc4LDEyIEBAIHByaXZhdGU6CiAgICAgdm9pZCBlbmRNYWdu
aWZpY2F0aW9uR2VzdHVyZSgpOwogICAgIFdlYkNvcmU6OkZsb2F0UG9pbnQgc2NhbGVkTWFnbmlm
aWNhdGlvbk9yaWdpbihXZWJDb3JlOjpGbG9hdFBvaW50IG9yaWdpbiwgZG91YmxlIHNjYWxlKTsK
IAorICAgIHZvaWQgYmVnaW5Td2lwZUdlc3R1cmUoV2ViQmFja0ZvcndhcmRMaXN0SXRlbSogdGFy
Z2V0SXRlbSwgYm9vbCBzd2lwaW5nTGVmdCk7CisgICAgdm9pZCBoYW5kbGVTd2lwZUdlc3R1cmUo
V2ViQmFja0ZvcndhcmRMaXN0SXRlbSogdGFyZ2V0SXRlbSwgZG91YmxlIHByb2dyZXNzLCBib29s
IHN3aXBpbmdMZWZ0KTsKKyAgICB2b2lkIGVuZFN3aXBlR2VzdHVyZShXZWJCYWNrRm9yd2FyZExp
c3RJdGVtKiB0YXJnZXRJdGVtLCBib29sIGNhbmNlbGxlZCk7CisgICAgdm9pZCByZW1vdmVTd2lw
ZVNuYXBzaG90KCk7CisgICAgdm9pZCBzd2lwZVNuYXBzaG90V2F0Y2hkb2dUaW1lckZpcmVkKFdl
YkNvcmU6OlRpbWVyPFZpZXdHZXN0dXJlQ29udHJvbGxlcj4qKTsKKwogICAgIFdlYlBhZ2VQcm94
eSYgbV93ZWJQYWdlUHJveHk7CiAKICAgICBkb3VibGUgbV9tYWduaWZpY2F0aW9uOwpAQCAtNzUs
NiArOTYsMTAgQEAgcHJpdmF0ZToKICAgICBXZWJDb3JlOjpGbG9hdFJlY3QgbV92aXNpYmxlQ29u
dGVudFJlY3Q7CiAgICAgYm9vbCBtX3Zpc2libGVDb250ZW50UmVjdElzVmFsaWQ7CiAgICAgYm9v
bCBtX2ZyYW1lSGFuZGxlc01hZ25pZmljYXRpb25HZXN0dXJlOworCisgICAgUmV0YWluUHRyPENB
TGF5ZXI+IG1fc3dpcGVTbmFwc2hvdExheWVyOworICAgIFN3aXBlVHJhbnNpdGlvblN0eWxlIG1f
c3dpcGVUcmFuc2l0aW9uU3R5bGU7CisgICAgV2ViQ29yZTo6VGltZXI8Vmlld0dlc3R1cmVDb250
cm9sbGVyPiBtX3N3aXBlV2F0Y2hkb2dUaW1lcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktp
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9WaWV3R2VzdHVyZUNv
bnRyb2xsZXIubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1ZpZXdH
ZXN0dXJlQ29udHJvbGxlci5tZXNzYWdlcy5pbgppbmRleCAwYjM5OWVmLi5kMDljMDM3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1ZpZXdHZXN0dXJlQ29udHJvbGxl
ci5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1ZpZXdHZXN0
dXJlQ29udHJvbGxlci5tZXNzYWdlcy5pbgpAQCAtMjMsNCArMjMsNSBAQAogbWVzc2FnZXMgLT4g
Vmlld0dlc3R1cmVDb250cm9sbGVyIHsKICAgICBEaWRDb2xsZWN0R2VvbWV0cnlGb3JNYWduaWZp
Y2F0aW9uR2VzdHVyZShXZWJDb3JlOjpGbG9hdFJlY3QgdmlzaWJsZUNvbnRlbnRCb3VuZHMsIGJv
b2wgZnJhbWVIYW5kbGVzTWFnbmlmaWNhdGlvbkdlc3R1cmUpCiAgICAgRGlkQ29sbGVjdEdlb21l
dHJ5Rm9yU21hcnRNYWduaWZpY2F0aW9uR2VzdHVyZShXZWJDb3JlOjpGbG9hdFBvaW50IG9yaWdp
biwgV2ViQ29yZTo6RmxvYXRSZWN0IHJlbmRlclJlY3QsIFdlYkNvcmU6OkZsb2F0UmVjdCB2aXNp
YmxlQ29udGVudEJvdW5kcywgYm9vbCBpc1JlcGxhY2VkRWxlbWVudCwgYm9vbCBmcmFtZUhhbmRs
ZXNNYWduaWZpY2F0aW9uR2VzdHVyZSkKKyAgICBEaWRIaXRSZW5kZXJUcmVlU2l6ZVRocmVzaG9s
ZCgpCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1ZpZXdHZXN0
dXJlQ29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvVmlld0dlc3R1
cmVDb250cm9sbGVyLm1tCmluZGV4IDdjZWZjYzEuLjlhNzlkMGYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvVmlld0dlc3R1cmVDb250cm9sbGVyLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvVmlld0dlc3R1cmVDb250cm9sbGVyLm1tCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTQgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNiwx
MCArMjYsMzIgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiVmlld0dlc3R1cmVDb250
cm9sbGVyLmgiCiAKKyNpbXBvcnQgIldlYlBhZ2VHcm91cC5oIgogI2ltcG9ydCAiVmlld0dlc3R1
cmVDb250cm9sbGVyTWVzc2FnZXMuaCIKICNpbXBvcnQgIlZpZXdHZXN0dXJlR2VvbWV0cnlDb2xs
ZWN0b3JNZXNzYWdlcy5oIgorI2ltcG9ydCAiVmlld1NuYXBzaG90U3RvcmUuaCIKKyNpbXBvcnQg
IldlYkJhY2tGb3J3YXJkTGlzdC5oIgorI2ltcG9ydCAiV2ViUGFnZU1lc3NhZ2VzLmgiCiAjaW1w
b3J0ICJXZWJQYWdlUHJveHkuaCIKKyNpbXBvcnQgIldlYlByZWZlcmVuY2VzLmgiCiAjaW1wb3J0
ICJXZWJQcm9jZXNzUHJveHkuaCIKKyNpbXBvcnQgIldLVmlld0ludGVybmFsLmgiCisjaW1wb3J0
IDxDb2NvYS9Db2NvYS5oPgorI2ltcG9ydCA8UXVhcnR6Q29yZS9RdWFydHpDb3JlLmg+CisjaW1w
b3J0IDxXZWJDb3JlL1dlYkNvcmVDQUxheWVyRXh0cmFzLmg+CisKKyNpZiBkZWZpbmVkKF9faGFz
X2luY2x1ZGUpICYmIF9faGFzX2luY2x1ZGUoPFF1YXJ0ekNvcmUvUXVhcnR6Q29yZVByaXZhdGUu
aD4pCisjaW1wb3J0IDxRdWFydHpDb3JlL1F1YXJ0ekNvcmVQcml2YXRlLmg+CisjZWxzZQorQGlu
dGVyZmFjZSBDQUZpbHRlciA6IE5TT2JqZWN0IDxOU0NvcHlpbmcsIE5TTXV0YWJsZUNvcHlpbmcs
IE5TQ29kaW5nPgorQGVuZAorI2VuZGlmCisKK0BpbnRlcmZhY2UgQ0FGaWx0ZXIgKERldGFpbHMp
CisrIChDQUZpbHRlciAqKWZpbHRlcldpdGhUeXBlOihOU1N0cmluZyAqKXR5cGU7CitAZW5kCisK
K2V4dGVybiBOU1N0cmluZyAqIGNvbnN0IGtDQUZpbHRlckdhdXNzaWFuQmx1cjsKIAogdXNpbmcg
bmFtZXNwYWNlIFdlYkNvcmU7CiAKQEAgLTQ1LDYgKzY3LDEyIEBAIHN0YXRpYyBjb25zdCBkb3Vi
bGUgem9vbU91dFJlc2lzdGFuY2UgPSAwLjEwOwogc3RhdGljIGNvbnN0IGZsb2F0IHNtYXJ0TWFn
bmlmaWNhdGlvbkVsZW1lbnRQYWRkaW5nID0gMC4wNTsKIHN0YXRpYyBjb25zdCBmbG9hdCBzbWFy
dE1hZ25pZmljYXRpb25QYW5TY3JvbGxUaHJlc2hvbGQgPSAxMDA7CiAKK3N0YXRpYyBjb25zdCBk
b3VibGUgc3dpcGVPdmVybGF5U2hhZG93T3BhY2l0eSA9IDAuNjY7CitzdGF0aWMgY29uc3QgZG91
YmxlIHN3aXBlT3ZlcmxheVNoYWRvd1JhZGl1cyA9IDM7CisKK3N0YXRpYyBjb25zdCBmbG9hdCBz
d2lwZVNuYXBzaG90UmVtb3ZhbFJlbmRlclRyZWVTaXplVGFyZ2V0RnJhY3Rpb24gPSAwLjU7Citz
dGF0aWMgY29uc3Qgc3RkOjpjaHJvbm86OmR1cmF0aW9uPGRvdWJsZT4gc3dpcGVTbmFwc2hvdFJl
bW92YWxXYXRjaGRvZ0R1cmF0aW9uKDMpOworCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogVmlld0dl
c3R1cmVDb250cm9sbGVyOjpWaWV3R2VzdHVyZUNvbnRyb2xsZXIoV2ViUGFnZVByb3h5JiB3ZWJQ
YWdlUHJveHkpCkBAIC01Miw2ICs4MCw4IEBAIFZpZXdHZXN0dXJlQ29udHJvbGxlcjo6Vmlld0dl
c3R1cmVDb250cm9sbGVyKFdlYlBhZ2VQcm94eSYgd2ViUGFnZVByb3h5KQogICAgICwgbV9hY3Rp
dmVHZXN0dXJlVHlwZShWaWV3R2VzdHVyZVR5cGU6Ok5vbmUpCiAgICAgLCBtX3Zpc2libGVDb250
ZW50UmVjdElzVmFsaWQoZmFsc2UpCiAgICAgLCBtX2ZyYW1lSGFuZGxlc01hZ25pZmljYXRpb25H
ZXN0dXJlKGZhbHNlKQorICAgICwgbV9zd2lwZVRyYW5zaXRpb25TdHlsZShTd2lwZVRyYW5zaXRp
b25TdHlsZTo6T3ZlcmxhcCkKKyAgICAsIG1fc3dpcGVXYXRjaGRvZ1RpbWVyKHRoaXMsICZWaWV3
R2VzdHVyZUNvbnRyb2xsZXI6OnN3aXBlU25hcHNob3RXYXRjaGRvZ1RpbWVyRmlyZWQpCiB7CiAg
ICAgbV93ZWJQYWdlUHJveHkucHJvY2VzcygpLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6
Vmlld0dlc3R1cmVDb250cm9sbGVyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fd2ViUGFnZVBy
b3h5LnBhZ2VJRCgpLCAqdGhpcyk7CiB9CkBAIC0xMzgsNiArMTY4LDggQEAgdm9pZCBWaWV3R2Vz
dHVyZUNvbnRyb2xsZXI6OmVuZE1hZ25pZmljYXRpb25HZXN0dXJlKCkKICAgICAgICAgbV93ZWJQ
YWdlUHJveHkuc2NhbGVQYWdlKG5ld01hZ25pZmljYXRpb24sIHJvdW5kZWRJbnRQb2ludChtX21h
Z25pZmljYXRpb25PcmlnaW4pKTsKICAgICBlbHNlCiAgICAgICAgIG1fd2ViUGFnZVByb3h5LmRy
YXdpbmdBcmVhKCktPmNvbW1pdFRyYW5zaWVudFpvb20obmV3TWFnbmlmaWNhdGlvbiwgc2NhbGVk
TWFnbmlmaWNhdGlvbk9yaWdpbihtX21hZ25pZmljYXRpb25PcmlnaW4sIG5ld01hZ25pZmljYXRp
b24pKTsKKworICAgIG1fYWN0aXZlR2VzdHVyZVR5cGUgPSBWaWV3R2VzdHVyZVR5cGU6Ok5vbmU7
CiB9CiAKIHZvaWQgVmlld0dlc3R1cmVDb250cm9sbGVyOjpoYW5kbGVTbWFydE1hZ25pZmljYXRp
b25HZXN0dXJlKEZsb2F0UG9pbnQgb3JpZ2luKQpAQCAtMTkyLDIwICsyMjQsMTc3IEBAIHZvaWQg
Vmlld0dlc3R1cmVDb250cm9sbGVyOjpkaWRDb2xsZWN0R2VvbWV0cnlGb3JTbWFydE1hZ25pZmlj
YXRpb25HZXN0dXJlKEZsb2F0CiAgICAgbV9sYXN0U21hcnRNYWduaWZpY2F0aW9uVW5zY2FsZWRU
YXJnZXRSZWN0ID0gdW5zY2FsZWRUYXJnZXRSZWN0OwogfQogCi12b2lkIFZpZXdHZXN0dXJlQ29u
dHJvbGxlcjo6ZW5kQWN0aXZlR2VzdHVyZSgpCitib29sIFZpZXdHZXN0dXJlQ29udHJvbGxlcjo6
aGFuZGxlU2Nyb2xsV2hlZWxFdmVudChOU0V2ZW50ICpldmVudCkKIHsKLSAgICBzd2l0Y2ggKG1f
YWN0aXZlR2VzdHVyZVR5cGUpIHsKLSAgICBjYXNlIFZpZXdHZXN0dXJlVHlwZTo6Tm9uZToKLSAg
ICBjYXNlIFZpZXdHZXN0dXJlVHlwZTo6U21hcnRNYWduaWZpY2F0aW9uOgotICAgICAgICBicmVh
azsKLSAgICBjYXNlIFZpZXdHZXN0dXJlVHlwZTo6TWFnbmlmaWNhdGlvbjoKLSAgICAgICAgZW5k
TWFnbmlmaWNhdGlvbkdlc3R1cmUoKTsKKyAgICBpZiAobV9hY3RpdmVHZXN0dXJlVHlwZSAhPSBW
aWV3R2VzdHVyZVR5cGU6Ok5vbmUpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmIChl
dmVudC5waGFzZSAhPSBOU0V2ZW50UGhhc2VCZWdhbikKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
CisgICAgaWYgKGZhYnMoZXZlbnQuc2Nyb2xsaW5nRGVsdGFYKSA8IGZhYnMoZXZlbnQuc2Nyb2xs
aW5nRGVsdGFZKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgYm9vbCB3aWxsU3dpcGVM
ZWZ0ID0gZXZlbnQuc2Nyb2xsaW5nRGVsdGFYID4gMCAmJiBtX3dlYlBhZ2VQcm94eS5pc1Bpbm5l
ZFRvTGVmdFNpZGUoKSAmJiBtX3dlYlBhZ2VQcm94eS5iYWNrRm9yd2FyZExpc3QoKS5iYWNrSXRl
bSgpOworICAgIGJvb2wgd2lsbFN3aXBlUmlnaHQgPSBldmVudC5zY3JvbGxpbmdEZWx0YVggPCAw
ICYmIG1fd2ViUGFnZVByb3h5LmlzUGlubmVkVG9SaWdodFNpZGUoKSAmJiBtX3dlYlBhZ2VQcm94
eS5iYWNrRm9yd2FyZExpc3QoKS5mb3J3YXJkSXRlbSgpOworICAgIGlmICghd2lsbFN3aXBlTGVm
dCAmJiAhd2lsbFN3aXBlUmlnaHQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICgh
ZXZlbnQuaGFzUHJlY2lzZVNjcm9sbGluZ0RlbHRhcykKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
CisgICAgaWYgKCFbTlNFdmVudCBpc1N3aXBlVHJhY2tpbmdGcm9tU2Nyb2xsRXZlbnRzRW5hYmxl
ZF0pCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIFZpZXdTbmFwc2hvdFN0b3JlOjpzaGFy
ZWQoKS50YWtlU25hcHNob3QobV93ZWJQYWdlUHJveHkpOworCisgICAgQ0dGbG9hdCBtYXhQcm9n
cmVzcyA9IHdpbGxTd2lwZUxlZnQgPyAxIDogMDsKKyAgICBDR0Zsb2F0IG1pblByb2dyZXNzID0g
d2lsbFN3aXBlUmlnaHQgPyAtMSA6IDA7CisgICAgUmVmUHRyPFdlYkJhY2tGb3J3YXJkTGlzdEl0
ZW0+IHRhcmdldEl0ZW0gPSB3aWxsU3dpcGVMZWZ0ID8gbV93ZWJQYWdlUHJveHkuYmFja0Zvcndh
cmRMaXN0KCkuYmFja0l0ZW0oKSA6IG1fd2ViUGFnZVByb3h5LmJhY2tGb3J3YXJkTGlzdCgpLmZv
cndhcmRJdGVtKCk7CisgICAgX19ibG9jayBib29sIHN3aXBlQ2FuY2VsbGVkID0gZmFsc2U7CisK
KyAgICBbZXZlbnQgdHJhY2tTd2lwZUV2ZW50V2l0aE9wdGlvbnM6MCBkYW1wZW5BbW91bnRUaHJl
c2hvbGRNaW46bWluUHJvZ3Jlc3MgbWF4Om1heFByb2dyZXNzIHVzaW5nSGFuZGxlcjpeKENHRmxv
YXQgcHJvZ3Jlc3MsIE5TRXZlbnRQaGFzZSBwaGFzZSwgQk9PTCBpc0NvbXBsZXRlLCBCT09MICpz
dG9wKSB7CisgICAgICAgIGlmIChwaGFzZSA9PSBOU0V2ZW50UGhhc2VCZWdhbikKKyAgICAgICAg
ICAgIHRoaXMtPmJlZ2luU3dpcGVHZXN0dXJlKHRhcmdldEl0ZW0uZ2V0KCksIHdpbGxTd2lwZUxl
ZnQpOworICAgICAgICB0aGlzLT5oYW5kbGVTd2lwZUdlc3R1cmUodGFyZ2V0SXRlbS5nZXQoKSwg
cHJvZ3Jlc3MsIHdpbGxTd2lwZUxlZnQpOworICAgICAgICBpZiAocGhhc2UgPT0gTlNFdmVudFBo
YXNlQ2FuY2VsbGVkKQorICAgICAgICAgICAgc3dpcGVDYW5jZWxsZWQgPSB0cnVlOworICAgICAg
ICBpZiAoaXNDb21wbGV0ZSkKKyAgICAgICAgICAgIHRoaXMtPmVuZFN3aXBlR2VzdHVyZSh0YXJn
ZXRJdGVtLmdldCgpLCBzd2lwZUNhbmNlbGxlZCk7CisgICAgfV07CisKKyAgICByZXR1cm4gdHJ1
ZTsKK30KKwordm9pZCBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OmJlZ2luU3dpcGVHZXN0dXJlKFdl
YkJhY2tGb3J3YXJkTGlzdEl0ZW0qIHRhcmdldEl0ZW0sIGJvb2wgc3dpcGluZ0xlZnQpCit7Cisg
ICAgbV9hY3RpdmVHZXN0dXJlVHlwZSA9IFZpZXdHZXN0dXJlVHlwZTo6U3dpcGU7CisKKyAgICBD
QUxheWVyICpyb290TGF5ZXIgPSBbbV93ZWJQYWdlUHJveHkud2tWaWV3KCkgX3Jvb3RMYXllcl07
CisKKyAgICBtX3N3aXBlU25hcHNob3RMYXllciA9IGFkb3B0TlMoW1tDQUxheWVyIGFsbG9jXSBp
bml0XSk7CisgICAgW21fc3dpcGVTbmFwc2hvdExheWVyIHNldEJhY2tncm91bmRDb2xvcjpDR0Nv
bG9yR2V0Q29uc3RhbnRDb2xvcihrQ0dDb2xvcldoaXRlKV07CisKKyAgICB1aW50NjRfdCByZW5k
ZXJUcmVlU2l6ZTsKKyAgICBbbV9zd2lwZVNuYXBzaG90TGF5ZXIgc2V0Q29udGVudHM6KGlkKVZp
ZXdTbmFwc2hvdFN0b3JlOjpzaGFyZWQoKS5nZXRTbmFwc2hvdEFuZFJlbmRlclRyZWVTaXplKHRh
cmdldEl0ZW0sIHJlbmRlclRyZWVTaXplKV07CisgICAgW21fc3dpcGVTbmFwc2hvdExheWVyIHNl
dENvbnRlbnRzR3Jhdml0eTprQ0FHcmF2aXR5VG9wTGVmdF07CisgICAgW21fc3dpcGVTbmFwc2hv
dExheWVyIHNldENvbnRlbnRzU2NhbGU6bV93ZWJQYWdlUHJveHkuZGV2aWNlU2NhbGVGYWN0b3Io
KV07CisgICAgW21fc3dpcGVTbmFwc2hvdExheWVyIHNldEZyYW1lOnJvb3RMYXllci5mcmFtZV07
CisgICAgW21fc3dpcGVTbmFwc2hvdExheWVyIHNldEFuY2hvclBvaW50OkNHUG9pbnRaZXJvXTsK
KyAgICBbbV9zd2lwZVNuYXBzaG90TGF5ZXIgc2V0UG9zaXRpb246Q0dQb2ludFplcm9dOworICAg
IFttX3N3aXBlU25hcHNob3RMYXllciBzZXROYW1lOkAiR2VzdHVyZSBTd2lwZSBTbmFwc2hvdCBM
YXllciJdOworICAgIFttX3N3aXBlU25hcHNob3RMYXllciB3ZWJfZGlzYWJsZUFsbEFjdGlvbnNd
OworCisgICAgaWYgKG1fd2ViUGFnZVByb3h5LnBhZ2VHcm91cCgpLnByZWZlcmVuY2VzKCktPnZp
ZXdHZXN0dXJlRGVidWdnaW5nRW5hYmxlZCgpKSB7CisgICAgICAgIENBRmlsdGVyKiBmaWx0ZXIg
PSBbQ0FGaWx0ZXIgZmlsdGVyV2l0aFR5cGU6a0NBRmlsdGVyR2F1c3NpYW5CbHVyXTsKKyAgICAg
ICAgW2ZpbHRlciBzZXRWYWx1ZTpbTlNOdW1iZXIgbnVtYmVyV2l0aEZsb2F0OjNdIGZvcktleTpA
ImlucHV0UmFkaXVzIl07CisgICAgICAgIFttX3N3aXBlU25hcHNob3RMYXllciBzZXRGaWx0ZXJz
OkBbZmlsdGVyXV07CisgICAgfQorCisgICAgaWYgKG1fc3dpcGVUcmFuc2l0aW9uU3R5bGUgPT0g
U3dpcGVUcmFuc2l0aW9uU3R5bGU6Ok92ZXJsYXApIHsKKyAgICAgICAgUmV0YWluUHRyPENHUGF0
aFJlZj4gc2hhZG93UGF0aCA9IGFkb3B0Q0YoQ0dQYXRoQ3JlYXRlV2l0aFJlY3QoW3Jvb3RMYXll
ciBib3VuZHNdLCAwKSk7CisKKyAgICAgICAgW21fc3dpcGVTbmFwc2hvdExheWVyIHNldFNoYWRv
d0NvbG9yOkNHQ29sb3JHZXRDb25zdGFudENvbG9yKGtDR0NvbG9yQmxhY2spXTsKKyAgICAgICAg
W21fc3dpcGVTbmFwc2hvdExheWVyIHNldFNoYWRvd09wYWNpdHk6c3dpcGVPdmVybGF5U2hhZG93
T3BhY2l0eV07CisgICAgICAgIFttX3N3aXBlU25hcHNob3RMYXllciBzZXRTaGFkb3dSYWRpdXM6
c3dpcGVPdmVybGF5U2hhZG93UmFkaXVzXTsKKyAgICAgICAgW21fc3dpcGVTbmFwc2hvdExheWVy
IHNldFNoYWRvd1BhdGg6c2hhZG93UGF0aC5nZXQoKV07CisKKyAgICAgICAgW3Jvb3RMYXllciBz
ZXRTaGFkb3dDb2xvcjpDR0NvbG9yR2V0Q29uc3RhbnRDb2xvcihrQ0dDb2xvckJsYWNrKV07Cisg
ICAgICAgIFtyb290TGF5ZXIgc2V0U2hhZG93T3BhY2l0eTpzd2lwZU92ZXJsYXlTaGFkb3dPcGFj
aXR5XTsKKyAgICAgICAgW3Jvb3RMYXllciBzZXRTaGFkb3dSYWRpdXM6c3dpcGVPdmVybGF5U2hh
ZG93UmFkaXVzXTsKKyAgICAgICAgW3Jvb3RMYXllciBzZXRTaGFkb3dQYXRoOnNoYWRvd1BhdGgu
Z2V0KCldOworICAgIH0KKworICAgIGlmIChzd2lwaW5nTGVmdCkKKyAgICAgICAgW3Jvb3RMYXll
ci5zdXBlcmxheWVyIGluc2VydFN1YmxheWVyOm1fc3dpcGVTbmFwc2hvdExheWVyLmdldCgpIGJl
bG93OnJvb3RMYXllcl07CisgICAgZWxzZQorICAgICAgICBbcm9vdExheWVyLnN1cGVybGF5ZXIg
aW5zZXJ0U3VibGF5ZXI6bV9zd2lwZVNuYXBzaG90TGF5ZXIuZ2V0KCkgYWJvdmU6cm9vdExheWVy
XTsKK30KKwordm9pZCBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OmhhbmRsZVN3aXBlR2VzdHVyZShX
ZWJCYWNrRm9yd2FyZExpc3RJdGVtKiB0YXJnZXRJdGVtLCBkb3VibGUgcHJvZ3Jlc3MsIGJvb2wg
c3dpcGluZ0xlZnQpCit7CisgICAgQVNTRVJUKG1fYWN0aXZlR2VzdHVyZVR5cGUgPT0gVmlld0dl
c3R1cmVUeXBlOjpTd2lwZSk7CisKKyAgICBDQUxheWVyICpyb290TGF5ZXIgPSBbbV93ZWJQYWdl
UHJveHkud2tWaWV3KCkgX3Jvb3RMYXllcl07CisgICAgZG91YmxlIHdpZHRoID0gcm9vdExheWVy
LmJvdW5kcy5zaXplLndpZHRoOworICAgIGRvdWJsZSBzd2lwaW5nTGF5ZXJPZmZzZXQgPSBmbG9v
cih3aWR0aCAqIHByb2dyZXNzKTsKKworICAgIGlmIChtX3N3aXBlVHJhbnNpdGlvblN0eWxlID09
IFN3aXBlVHJhbnNpdGlvblN0eWxlOjpPdmVybGFwKSB7CisgICAgICAgIGlmIChzd2lwaW5nTGVm
dCkKKyAgICAgICAgICAgIFtyb290TGF5ZXIgc2V0UG9zaXRpb246Q0dQb2ludE1ha2Uoc3dpcGlu
Z0xheWVyT2Zmc2V0LCAwKV07CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIFttX3N3aXBlU25h
cHNob3RMYXllciBzZXRQb3NpdGlvbjpDR1BvaW50TWFrZSh3aWR0aCArIHN3aXBpbmdMYXllck9m
ZnNldCwgMCldOworICAgIH0gZWxzZSBpZiAobV9zd2lwZVRyYW5zaXRpb25TdHlsZSA9PSBTd2lw
ZVRyYW5zaXRpb25TdHlsZTo6UHVzaCkgeworICAgICAgICBbcm9vdExheWVyIHNldFBvc2l0aW9u
OkNHUG9pbnRNYWtlKHN3aXBpbmdMYXllck9mZnNldCwgMCldOworICAgICAgICBbbV9zd2lwZVNu
YXBzaG90TGF5ZXIgc2V0UG9zaXRpb246Q0dQb2ludE1ha2UoKHN3aXBpbmdMZWZ0ID8gLXdpZHRo
IDogd2lkdGgpICsgc3dpcGluZ0xheWVyT2Zmc2V0LCAwKV07CiAgICAgfQorfQorCit2b2lkIFZp
ZXdHZXN0dXJlQ29udHJvbGxlcjo6ZW5kU3dpcGVHZXN0dXJlKFdlYkJhY2tGb3J3YXJkTGlzdEl0
ZW0qIHRhcmdldEl0ZW0sIGJvb2wgY2FuY2VsbGVkKQoreworICAgIEFTU0VSVChtX2FjdGl2ZUdl
c3R1cmVUeXBlID09IFZpZXdHZXN0dXJlVHlwZTo6U3dpcGUpOworCisgICAgQ0FMYXllciAqcm9v
dExheWVyID0gW21fd2ViUGFnZVByb3h5LndrVmlldygpIF9yb290TGF5ZXJdOworCisgICAgW3Jv
b3RMYXllciBzZXRTaGFkb3dPcGFjaXR5OjBdOworICAgIFtyb290TGF5ZXIgc2V0U2hhZG93UmFk
aXVzOjBdOworCisgICAgaWYgKGNhbmNlbGxlZCkgeworICAgICAgICByZW1vdmVTd2lwZVNuYXBz
aG90KCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICB1aW50NjRfdCByZW5kZXJUcmVl
U2l6ZTsKKyAgICBWaWV3U25hcHNob3RTdG9yZTo6c2hhcmVkKCkuZ2V0U25hcHNob3RBbmRSZW5k
ZXJUcmVlU2l6ZSh0YXJnZXRJdGVtLCByZW5kZXJUcmVlU2l6ZSk7CisgICAgbV93ZWJQYWdlUHJv
eHkucHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OlZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3I6
OlNldFJlbmRlclRyZWVTaXplTm90aWZpY2F0aW9uVGhyZXNob2xkKHJlbmRlclRyZWVTaXplICog
c3dpcGVTbmFwc2hvdFJlbW92YWxSZW5kZXJUcmVlU2l6ZVRhcmdldEZyYWN0aW9uKSwgbV93ZWJQ
YWdlUHJveHkucGFnZUlEKCkpOworCisgICAgLy8gV2UgZG9uJ3Qgd2FudCB0byByZXBsYWNlIHRo
ZSBjdXJyZW50IGJhY2stZm9yd2FyZCBpdGVtJ3Mgc25hcHNob3QKKyAgICAvLyBsaWtlIHdlIG5v
cm1hbGx5IHdvdWxkIHdoZW4gZ29pbmcgYmFjayBvciBmb3J3YXJkLCBiZWNhdXNlIHdlIGFyZQor
ICAgIC8vIGRpc3BsYXlpbmcgdGhlIGRlc3RpbmF0aW9uIGl0ZW0ncyBzbmFwc2hvdC4KKyAgICBW
aWV3U25hcHNob3RTdG9yZTo6c2hhcmVkKCkuZGlzYWJsZVNuYXBzaG90dGluZygpOworICAgIG1f
d2ViUGFnZVByb3h5LmdvVG9CYWNrRm9yd2FyZEl0ZW0odGFyZ2V0SXRlbSk7CisgICAgVmlld1Nu
YXBzaG90U3RvcmU6OnNoYXJlZCgpLmVuYWJsZVNuYXBzaG90dGluZygpOworCisgICAgaWYgKCFy
ZW5kZXJUcmVlU2l6ZSkgeworICAgICAgICByZW1vdmVTd2lwZVNuYXBzaG90KCk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICBtX3N3aXBlV2F0Y2hkb2dUaW1lci5zdGFydE9uZVNob3Qo
c3dpcGVTbmFwc2hvdFJlbW92YWxXYXRjaGRvZ0R1cmF0aW9uLmNvdW50KCkpOworfQorCit2b2lk
IFZpZXdHZXN0dXJlQ29udHJvbGxlcjo6ZGlkSGl0UmVuZGVyVHJlZVNpemVUaHJlc2hvbGQoKQor
eworICAgIHJlbW92ZVN3aXBlU25hcHNob3QoKTsKK30KKwordm9pZCBWaWV3R2VzdHVyZUNvbnRy
b2xsZXI6OnN3aXBlU25hcHNob3RXYXRjaGRvZ1RpbWVyRmlyZWQoV2ViQ29yZTo6VGltZXI8Vmll
d0dlc3R1cmVDb250cm9sbGVyPiopCit7CisgICAgcmVtb3ZlU3dpcGVTbmFwc2hvdCgpOworfQor
Cit2b2lkIFZpZXdHZXN0dXJlQ29udHJvbGxlcjo6cmVtb3ZlU3dpcGVTbmFwc2hvdCgpCit7Cisg
ICAgbV9zd2lwZVdhdGNoZG9nVGltZXIuc3RvcCgpOworCisgICAgaWYgKG1fYWN0aXZlR2VzdHVy
ZVR5cGUgIT0gVmlld0dlc3R1cmVUeXBlOjpTd2lwZSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
W1ttX3dlYlBhZ2VQcm94eS53a1ZpZXcoKSBfcm9vdExheWVyXSBzZXRQb3NpdGlvbjpDR1BvaW50
WmVyb107CisgICAgW21fc3dpcGVTbmFwc2hvdExheWVyIHJlbW92ZUZyb21TdXBlcmxheWVyXTsK
KyAgICBtX3N3aXBlU25hcHNob3RMYXllciA9IG51bGxwdHI7CiAKLSAgICBtX3Zpc2libGVDb250
ZW50UmVjdElzVmFsaWQgPSBmYWxzZTsKICAgICBtX2FjdGl2ZUdlc3R1cmVUeXBlID0gVmlld0dl
c3R1cmVUeXBlOjpOb25lOwogfQogCit2b2lkIFZpZXdHZXN0dXJlQ29udHJvbGxlcjo6ZW5kQWN0
aXZlR2VzdHVyZSgpCit7CisgICAgaWYgKG1fYWN0aXZlR2VzdHVyZVR5cGUgPT0gVmlld0dlc3R1
cmVUeXBlOjpNYWduaWZpY2F0aW9uKSB7CisgICAgICAgIGVuZE1hZ25pZmljYXRpb25HZXN0dXJl
KCk7CisgICAgICAgIG1fdmlzaWJsZUNvbnRlbnRSZWN0SXNWYWxpZCA9IGZhbHNlOworICAgIH0K
K30KKwogZG91YmxlIFZpZXdHZXN0dXJlQ29udHJvbGxlcjo6bWFnbmlmaWNhdGlvbigpIGNvbnN0
CiB7CiAgICAgaWYgKG1fYWN0aXZlR2VzdHVyZVR5cGUgPT0gVmlld0dlc3R1cmVUeXBlOjpNYWdu
aWZpY2F0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L1ZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3IuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1ZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3IuY3BwCmluZGV4IDQxMTlh
OGMuLjJiYmY5MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9WaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvci5jcHAKQEAgLTQy
LDYgKzQyLDggQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIFZpZXdHZXN0dXJlR2VvbWV0cnlDb2xs
ZWN0b3I6OlZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3IoV2ViUGFnZSYgd2ViUGFnZSkKICAg
ICA6IG1fd2ViUGFnZSh3ZWJQYWdlKQorICAgICwgbV9yZW5kZXJUcmVlU2l6ZU5vdGlmaWNhdGlv
blRocmVzaG9sZCgwKQorICAgICwgbV9yZW5kZXJUcmVlU2l6ZU5vdGlmaWNhdGlvblRpbWVyKFJ1
bkxvb3A6Om1haW4oKSwgdGhpcywgJlZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3I6OnJlbmRl
clRyZWVTaXplTm90aWZpY2F0aW9uVGltZXJGaXJlZCkKIHsKICAgICBXZWJQcm9jZXNzOjpzaGFy
ZWQoKS5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlZpZXdHZXN0dXJlR2VvbWV0cnlDb2xs
ZWN0b3I6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV93ZWJQYWdlLnBhZ2VJRCgpLCAqdGhpcyk7
CiB9CkBAIC03Nyw0ICs3OSwxNyBAQCB2b2lkIFZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3I6
OmNvbGxlY3RHZW9tZXRyeUZvclNtYXJ0TWFnbmlmaWNhdGlvbkdlc3R1cmUoRgogICAgIH0KIH0K
IAordm9pZCBWaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yOjptYWluRnJhbWVEaWRMYXlvdXQo
KQoreworICAgIGlmIChtX3JlbmRlclRyZWVTaXplTm90aWZpY2F0aW9uVGhyZXNob2xkICYmIG1f
d2ViUGFnZS5yZW5kZXJUcmVlU2l6ZSgpID49IG1fcmVuZGVyVHJlZVNpemVOb3RpZmljYXRpb25U
aHJlc2hvbGQpIHsKKyAgICAgICAgbV9yZW5kZXJUcmVlU2l6ZU5vdGlmaWNhdGlvblRpbWVyLnN0
YXJ0T25lU2hvdCgwKTsKKyAgICAgICAgbV9yZW5kZXJUcmVlU2l6ZU5vdGlmaWNhdGlvblRocmVz
aG9sZCA9IDA7CisgICAgfQorfQorCit2b2lkIFZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3I6
OnJlbmRlclRyZWVTaXplTm90aWZpY2F0aW9uVGltZXJGaXJlZCgpCit7CisgICAgbV93ZWJQYWdl
LnNlbmQoTWVzc2FnZXM6OlZpZXdHZXN0dXJlQ29udHJvbGxlcjo6RGlkSGl0UmVuZGVyVHJlZVNp
emVUaHJlc2hvbGQoKSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdHZXN0dXJlR2VvbWV0cnlDb2xs
ZWN0b3IuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9WaWV3R2VzdHVyZUdl
b21ldHJ5Q29sbGVjdG9yLmgKaW5kZXggMzIwOTU3Yi4uODJiOWU3OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0
b3IuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvVmlld0dlc3R1cmVH
ZW9tZXRyeUNvbGxlY3Rvci5oCkBAIC0yNyw2ICsyNyw3IEBACiAjZGVmaW5lIFZpZXdHZXN0dXJl
R2VvbWV0cnlDb2xsZWN0b3JfaAogCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCisjaW5j
bHVkZSA8V1RGL1J1bkxvb3AuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgRmxvYXRQ
b2ludDsKQEAgLTQxLDYgKzQyLDggQEAgcHVibGljOgogICAgIFZpZXdHZXN0dXJlR2VvbWV0cnlD
b2xsZWN0b3IoV2ViUGFnZSYpOwogICAgIH5WaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yKCk7
CiAKKyAgICB2b2lkIG1haW5GcmFtZURpZExheW91dCgpOworCiBwcml2YXRlOgogICAgIC8vIElQ
Qzo6TWVzc2FnZVJlY2VpdmVyLgogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJ
UEM6OkNvbm5lY3Rpb24qLCBJUEM6Ok1lc3NhZ2VEZWNvZGVyJikgb3ZlcnJpZGU7CkBAIC00OCw4
ICs1MSwxNCBAQCBwcml2YXRlOgogICAgIC8vIE1lc3NhZ2UgaGFuZGxlcnMuCiAgICAgdm9pZCBj
b2xsZWN0R2VvbWV0cnlGb3JNYWduaWZpY2F0aW9uR2VzdHVyZSgpOwogICAgIHZvaWQgY29sbGVj
dEdlb21ldHJ5Rm9yU21hcnRNYWduaWZpY2F0aW9uR2VzdHVyZShXZWJDb3JlOjpGbG9hdFBvaW50
IG9yaWdpbik7CisgICAgdm9pZCBzZXRSZW5kZXJUcmVlU2l6ZU5vdGlmaWNhdGlvblRocmVzaG9s
ZCh1aW50NjRfdCBzaXplKSB7IG1fcmVuZGVyVHJlZVNpemVOb3RpZmljYXRpb25UaHJlc2hvbGQg
PSBzaXplOyB9CisKKyAgICB2b2lkIHJlbmRlclRyZWVTaXplTm90aWZpY2F0aW9uVGltZXJGaXJl
ZCgpOwogCiAgICAgV2ViUGFnZSYgbV93ZWJQYWdlOworCisgICAgdWludDY0X3QgbV9yZW5kZXJU
cmVlU2l6ZU5vdGlmaWNhdGlvblRocmVzaG9sZDsKKyAgICBSdW5Mb29wOjpUaW1lcjxWaWV3R2Vz
dHVyZUdlb21ldHJ5Q29sbGVjdG9yPiBtX3JlbmRlclRyZWVTaXplTm90aWZpY2F0aW9uVGltZXI7
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9WaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yLm1lc3NhZ2Vz
LmluIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdHZXN0dXJlR2VvbWV0
cnlDb2xsZWN0b3IubWVzc2FnZXMuaW4KaW5kZXggNjVlYWE1OC4uMzliMThiYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdHZXN0dXJlR2VvbWV0cnlD
b2xsZWN0b3IubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1ZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3IubWVzc2FnZXMuaW4KQEAgLTI1LDQgKzI1
LDUgQEAgbWVzc2FnZXMgLT4gVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3RvciB7CiBDb2xsZWN0
R2VvbWV0cnlGb3JNYWduaWZpY2F0aW9uR2VzdHVyZSgpCiBDb2xsZWN0R2VvbWV0cnlGb3JTbWFy
dE1hZ25pZmljYXRpb25HZXN0dXJlKFdlYkNvcmU6OkZsb2F0UG9pbnQgb3JpZ2luKQogCitTZXRS
ZW5kZXJUcmVlU2l6ZU5vdGlmaWNhdGlvblRocmVzaG9sZCh1aW50NjRfdCBzaXplKQogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IGIzMTI0
ZjQuLmYyNmM3Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHAKQEAgLTMwNDUsNiArMzA0NSwxMCBAQCB2b2lkIFdlYlBhZ2U6Om1haW5GcmFtZURp
ZExheW91dCgpCiAgICAgICAgIH0KICAgICB9CiAjZW5kaWYKKworI2lmIFBMQVRGT1JNKE1BQykK
KyAgICBtX3ZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3IubWFpbkZyYW1lRGlkTGF5b3V0KCk7
CisjZW5kaWYKIH0KIAogdm9pZCBXZWJQYWdlOjphZGRQbHVnaW5WaWV3KFBsdWdpblZpZXcqIHBs
dWdpblZpZXcpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>222166</attachid>
            <date>2014-01-24 16:27:51 -0800</date>
            <delta_ts>2014-01-27 11:12:21 -0800</delta_ts>
            <desc>patch</desc>
            <filename>swipe.diff</filename>
            <type>text/plain</type>
            <size>35879</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCBlMjU2NGExLi5kYWI0OTc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMTIx
IEBACiAyMDE0LTAxLTI0ICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgog
CisgICAgICAgIFdlYktpdDIgVmlldyBHZXN0dXJlczogRmx1aWQgYmFjay1mb3J3YXJkIHN3aXBl
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjczNjMK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgc3Vw
cG9ydCBmb3IgYSAiYmFjay1mb3J3YXJkIHN3aXBlIiwgd2hpY2ggYWxsb3dzIGZsdWlkIHN3aXBp
bmcgYmV0d2VlbgorICAgICAgICBpdGVtcyBpbiB0aGUgYmFjay1mb3J3YXJkIGxpc3QuIEN1cnJl
bnRseSBkaXNhYmxlZCBieSBkZWZhdWx0LgorCisgICAgICAgICogU2hhcmVkL1dlYlByZWZlcmVu
Y2VzU3RvcmUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNlcy5jcHA6
CisgICAgICAgIChXS1ByZWZlcmVuY2VzU2V0Vmlld0dlc3R1cmVEZWJ1Z2dpbmdFbmFibGVkKToK
KyAgICAgICAgKFdLUHJlZmVyZW5jZXNHZXRWaWV3R2VzdHVyZURlYnVnZ2luZ0VuYWJsZWQpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzUHJpdmF0ZS5oOgorICAgICAg
ICBBZGQgYSBWaWV3R2VzdHVyZURlYnVnZ2luZ0VuYWJsZWQgcHJlZmVyZW5jZSwgd2hpY2ggY3Vy
cmVudGx5IGNhdXNlcyBzbmFwc2hvdHMgdG8gYmUgYmx1cnJlZC4KKyAgICAgICAgQWRkaXRpb25h
bCB2aWV3IGdlc3R1cmUgZGVidWdnaW5nIGZlYXR1cmVzIGNvdWxkIGNvbWUgaW4gdGhlIGZ1dHVy
ZS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tWaWV3UHJpdmF0ZS5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbToKKyAgICAgICAgKC1bV0tWaWV3IF9l
bnN1cmVHZXN0dXJlQ29udHJvbGxlcl0pOgorICAgICAgICAoLVtXS1ZpZXcgc2Nyb2xsV2hlZWw6
XSk6CisgICAgICAgIElmIGJhY2stZm9yd2FyZCBuYXZpZ2F0aW9uIGdlc3R1cmVzIGFyZSBlbmFi
bGVkLCBpbnRlcmNlcHQgc2Nyb2xsV2hlZWwgZXZlbnRzCisgICAgICAgIG9uIHRoZSBXS1ZpZXcg
YW5kIGxldCB0aGUgVmlld0dlc3R1cmVDb250cm9sbGVyIHRha2UgdGhlIGZpcnN0IGNyYWNrIGF0
IHRoZW0uCisKKyAgICAgICAgKC1bV0tWaWV3IHNldEFsbG93c0JhY2tGb3J3YXJkTmF2aWdhdGlv
bkdlc3R1cmVzOl0pOgorICAgICAgICAoLVtXS1ZpZXcgYWxsb3dzQmFja0ZvcndhcmROYXZpZ2F0
aW9uR2VzdHVyZXNdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXdJbnRlcm5h
bC5oOgorICAgICAgICBBZGQgYWxsb3dzQmFja0ZvcndhcmROYXZpZ2F0aW9uR2VzdHVyZSBwcm9w
ZXJ0eSwgd2hpY2ggZW5hYmxlcyB0aGUgZ2VzdHVyZS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9t
YWMvVmlld0dlc3R1cmVDb250cm9sbGVyLmg6CisgICAgICAgIEFkZCBzd2lwZS1yZWxhdGVkIG1l
dGhvZHMsIHdoaWNoIHdpbGwgYmUgZGVzY3JpYmVkIGJlbG93LgorCisgICAgICAgIEFkZCBhbiBl
bnVtIGZvciB0aGUgc3dpcGUgdHJhbnNpdGlvbiBzdHlsZS4gQ3VycmVudGx5IG9ubHkgT3Zlcmxh
cCBpcyBhY2Nlc3NpYmxlLAorICAgICAgICBidXQgaW4gdGhlIGZ1dHVyZSBvbmUgY291bGQgc2Vl
IGhhdmluZyBBUEkgdG8gY2hvb3NlIHRoZSBzdHlsZS4KKyAgICAgICAgJ092ZXJsYXAnIGhhcyB0
aGUgb3V0Z29pbmcgcGFnZSBzd2lwZSBvdXQgdG8gdGhlIHJpZ2h0ICh3aGVuIHN3aXBpbmcgcmln
aHQpCisgICAgICAgIG9yIHRoZSBpbmNvbWluZyBwYWdlIHN3aXBlIGluIGZyb20gdGhlIHJpZ2h0
ICh3aGVuIHN3aXBpbmcgbGVmdCkuCisgICAgICAgICdQdXNoJyBoYXMgdGhlIHBhZ2VzIHB1c2gg
ZWFjaCBvdGhlciBhbG9uZyBpbiBzeW5jLCBhcyBpZiBhbGwgdGhlIHBhZ2VzIGluIHRoZQorICAg
ICAgICBiYWNrLWZvcndhcmQgbGlzdCB3ZXJlIG9yaWVudGVkIGZyb20gbGVmdCB0byByaWdodC4K
KworICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvVmlld0dlc3R1cmVDb250cm9sbGVyLm1lc3NhZ2Vz
LmluOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvVmlld0dlc3R1cmVDb250cm9sbGVyLm1tOiBS
ZW5hbWVkIGZyb20gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9WaWV3R2VzdHVyZUNvbnRy
b2xsZXIuY3BwLgorICAgICAgICBVc2Ugc29tZSBDQUZpbHRlciBTUEkgdG8gYmx1ciB0aGUgc25h
cHNob3QgaWYgVmlld0dlc3R1cmVEZWJ1Z2dpbmdFbmFibGVkIGlzIG9uLgorCisgICAgICAgIChX
ZWJLaXQ6OlZpZXdHZXN0dXJlQ29udHJvbGxlcjo6Vmlld0dlc3R1cmVDb250cm9sbGVyKToKKyAg
ICAgICAgKFdlYktpdDo6Vmlld0dlc3R1cmVDb250cm9sbGVyOjp+Vmlld0dlc3R1cmVDb250cm9s
bGVyKToKKyAgICAgICAgKFdlYktpdDo6Vmlld0dlc3R1cmVDb250cm9sbGVyOjplbmRNYWduaWZp
Y2F0aW9uR2VzdHVyZSk6CisgICAgICAgIE1vdmUgbV9hY3RpdmVHZXN0dXJlVHlwZSBjbGVhcmlu
ZyB0byBlYWNoIGVuZCogZnVuY3Rpb24gaW5zdGVhZCBvZiBvbmUgZ2xvYmFsIHBsYWNlLAorICAg
ICAgICBzbyB0aGF0IGVhY2ggZ2VzdHVyZSBjYW4gaGFuZGxlIHdoZW4gaXQgZW5kcyBzZXBhcmF0
ZWx5LgorCisgICAgICAgIChXZWJLaXQ6OlZpZXdHZXN0dXJlQ29udHJvbGxlcjo6aGFuZGxlU2Ny
b2xsV2hlZWxFdmVudCk6CisgICAgICAgIElmIHdlIHJlY2VpdmUgYSBzY3JvbGwgd2hlZWwgZXZl
bnQgd2hpY2ggaXMgYXBwcm9wcmlhdGUgZm9yIHN0YXJ0aW5nIGEKKyAgICAgICAgZmx1aWQgc3dp
cGUsIGluIGEgZGlyZWN0aW9uIHdoZXJlIHRoZSBtYWluIGZyYW1lIGlzIHBpbm5lZCB0byB0aGUg
YXBwcm9wcmlhdGUKKyAgICAgICAgZWRnZSBvZiB0aGUgdmlldywgc3RhcnQgdHJhY2tpbmcgYSBz
d2lwZS4KKworICAgICAgICBUaGlzIHNob3VsZCBldmVudHVhbGx5IGhhdmUgc29tZSBoeXN0ZXJp
c2lzIHRvIGF2b2lkIHN0ZWFsaW5nIHNjcm9sbHMgdGhhdAorICAgICAgICB2ZW50dXJlIGludG8g
dGhlIHdyb25nIGRpcmVjdGlvbiwgYnV0IGZvciBub3cgaXQgc3RhcnRzIHRyYWNraW5nIGltbWVk
aWF0ZWx5LgorCisgICAgICAgIEZvcndhcmQgZXZlbnRzIGZyb20gdGhlIHRyYWNraW5nIGxvb3Ag
dG8ge2JlZ2luLCBoYW5kbGUsIGVuZH1Td2lwZUdlc3R1cmUuCisKKyAgICAgICAgKFdlYktpdDo6
Vmlld0dlc3R1cmVDb250cm9sbGVyOjpiZWdpblN3aXBlR2VzdHVyZSk6CisgICAgICAgIENyZWF0
ZSBhIGxheWVyIHdpdGggdGhlIGRlc3RpbmF0aW9uIHBhZ2UncyBzbmFwc2hvdCwgYW5kIHNldCBp
dCB1cC4KKworICAgICAgICAoV2ViS2l0OjpWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OmhhbmRsZVN3
aXBlR2VzdHVyZSk6CisgICAgICAgIEFwcHJvcHJpYXRlbHkgYWRqdXN0IHRoZSBwb3NpdGlvbiBv
ZiB0aGUgcm9vdCBsYXllciBhbmQgc25hcHNob3QgbGF5ZXIsCisgICAgICAgIGdpdmVuIHRoZSB0
cmFuc2l0aW9uIHN0eWxlIGFuZCBzd2lwZSBkaXJlY3Rpb24uCisKKyAgICAgICAgKFdlYktpdDo6
Vmlld0dlc3R1cmVDb250cm9sbGVyOjplbmRTd2lwZUdlc3R1cmUpOgorICAgICAgICBXaGVuIHRo
ZSBnZXN0dXJlIGVuZHMsIGRvIHRoZSBuYXZpZ2F0aW9uLCBhbmQgdGVsbCB0aGUgV2ViUHJvY2Vz
cyB0bworICAgICAgICBpbmZvcm0gdXMgd2hlbiB0aGUgcmVuZGVyIHRyZWUgaGl0cyBoYWxmIHRo
ZSBzaXplIGl0IHdhcyB3aGVuIHRoZQorICAgICAgICBzbmFwc2hvdCB3YXMgdGFrZW4gKHdoZW4g
dGhhdCBoYXBwZW5zLCB3ZSB3aWxsIHJlbW92ZSB0aGUgc25hcHNob3QKKyAgICAgICAgYW5kIHRo
ZSBnZXN0dXJlIHdpbGwgYmUgdHJ1bHkgY29tcGxldGUpLiBBbHNvLCBzdGFydCBhIHdhdGNoZG9n
IHRpbWVyCisgICAgICAgIGluIGNhc2UgdGhlIHJlbmRlciB0cmVlIG5ldmVyIGhpdHMgdGhhdCBz
aXplLCBhZnRlciB3aGljaCB3ZSB3aWxsCisgICAgICAgIGFsc28gcmVtb3ZlIHRoZSBzbmFwc2hv
dC4KKworICAgICAgICAoV2ViS2l0OjpWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OmRpZEhpdFJlbmRl
clRyZWVTaXplVGhyZXNob2xkKToKKyAgICAgICAgKFdlYktpdDo6Vmlld0dlc3R1cmVDb250cm9s
bGVyOjpzd2lwZVNuYXBzaG90V2F0Y2hkb2dUaW1lckZpcmVkKToKKyAgICAgICAgKFdlYktpdDo6
Vmlld0dlc3R1cmVDb250cm9sbGVyOjpyZW1vdmVTd2lwZVNuYXBzaG90KToKKyAgICAgICAgVGVh
ciBkb3duIHRoZSBzd2lwZSBzbmFwc2hvdCBsYXllciwgYW5kIG1hcmsgb3VyIGN1cnJlbnQgZ2Vz
dHVyZSBhcyBjb21wbGV0ZS4KKworICAgICAgICAoV2ViS2l0OjpWaWV3R2VzdHVyZUNvbnRyb2xs
ZXI6OmVuZEFjdGl2ZUdlc3R1cmUpOgorICAgICAgICBTaW1wbGlmeSBlbmRBY3RpdmVHZXN0dXJl
OyBpdCBvbmx5IGhhcyB3b3JrIHRvIGRvIGZvciBhIHBpbmNoLXpvb20gZ2VzdHVyZSwKKyAgICAg
ICAgYXMgdGhvc2UgYXJlIHRoZSBvbmx5IGdlc3R1cmVzIHdoZXJlIHRoZSB1c2VyIGlzIGRpcmVj
dGx5IGluIGNvbnRyb2wgb2Ygd2hlbiB0aGV5IGVuZC4KKworICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUGFnZS9WaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6Vmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvcjo6Vmlld0dlc3R1cmVHZW9tZXRyeUNvbGxl
Y3Rvcik6CisgICAgICAgIChXZWJLaXQ6OlZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3I6Om1h
aW5GcmFtZURpZExheW91dCk6CisgICAgICAgIChXZWJLaXQ6OlZpZXdHZXN0dXJlR2VvbWV0cnlD
b2xsZWN0b3I6OnJlbmRlclRyZWVTaXplTm90aWZpY2F0aW9uVGltZXJGaXJlZCk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3IuaDoKKyAg
ICAgICAgKFdlYktpdDo6Vmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvcjo6c2V0UmVuZGVyVHJl
ZVNpemVOb3RpZmljYXRpb25UaHJlc2hvbGQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFn
ZS9WaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yLm1lc3NhZ2VzLmluOgorICAgICAgICBWaWV3
R2VzdHVyZUNvbnRyb2xsZXIgcHVzaGVzIGEgcmVuZGVyLXRyZWUgc2l6ZSB0aHJlc2hvbGQgdG8g
dGhlIFdlYlByb2Nlc3M7CisgICAgICAgIFZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3IgKHdo
b3NlIG5hbWUgaXMgbm93IG1vcmUgdW5mb3J0dW5hdGUgdGhhbiBiZWZvcmUpCisgICAgICAgIG1v
bml0b3JzIHJlbmRlci10cmVlIHNpemUgY2hhbmdlcyBhbmQgaW5mb3JtcyBWaWV3R2VzdHVyZUNv
bnRyb2xsZXIgd2hlbgorICAgICAgICBpdCByZWFjaGVzIHRoYXQgdGhyZXNob2xkIHZpYSB0aGUg
J0RpZEhpdFJlbmRlclRyZWVTaXplVGhyZXNob2xkJyBtZXNzYWdlLgorCisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1ZpZXdQcml2YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9pb3MvUGFnZUNsaWVudEltcGxJT1MuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2lvcy9Q
YWdlQ2xpZW50SW1wbElPUy5tbToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OmFj
Y2VsZXJhdGVkQ29tcG9zaXRpbmdSb290TGF5ZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
bWFjL1BhZ2VDbGllbnRJbXBsLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9tYWMvUGFnZUNs
aWVudEltcGwubW06CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjphY2NlbGVyYXRl
ZENvbXBvc2l0aW5nUm9vdExheWVyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL21hYy9XS1Zp
ZXcubW06CisgICAgICAgICgtW1dLVmlldyBfYWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGVSb290
TGF5ZXJdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXdJbnRlcm5hbC5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9QYWdlQ2xpZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1t
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmFjY2VsZXJhdGVkQ29tcG9zaXRpbmdS
b290TGF5ZXIpOgorICAgICAgICBBZGQgYSBnZXR0ZXIgZm9yIHRoZSBhY2NlbGVyYXRlZCBjb21w
b3NpdGluZyByb290IGxheWVyLgorCisgICAgICAgICogVUlQcm9jZXNzL21hYy9WaWV3U25hcHNo
b3RTdG9yZS5tbToKKyAgICAgICAgKFdlYktpdDo6Vmlld1NuYXBzaG90U3RvcmU6OnNuYXBzaG90
QW5kUmVuZGVyVHJlZVNpemUpOgorICAgICAgICBEb24ndCBleHRyYWN0IHRoZSBDR0ltYWdlUmVm
IGZyb20gYSBSZXRhaW5QdHIganVzdCB0byBwdXQgaXQgYmFjayBpbiBvbmUuCisKKzIwMTQtMDEt
MjQgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisKICAgICAgICAgaU9T
IGJ1aWxkIGZpeCBhZnRlciByMTYyNzEwLgogCiAgICAgICAgICogVUlQcm9jZXNzL0FQSS9pb3Mv
UGFnZUNsaWVudEltcGxJT1MuaDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9X
ZWJQcmVmZXJlbmNlc1N0b3JlLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJlZmVyZW5j
ZXNTdG9yZS5oCmluZGV4IDI5MzIyZjkuLmQzNDU3ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9XZWJQcmVmZXJlbmNlc1N0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hh
cmVkL1dlYlByZWZlcmVuY2VzU3RvcmUuaApAQCAtMTc4LDYgKzE3OCw3IEBAIG5hbWVzcGFjZSBX
ZWJLaXQgewogICAgIG1hY3JvKFVzZUxlZ2FjeVRleHRBbGlnblBvc2l0aW9uZWRFbGVtZW50QmVo
YXZpb3IsIHVzZUxlZ2FjeVRleHRBbGlnblBvc2l0aW9uZWRFbGVtZW50QmVoYXZpb3IsIEJvb2ws
IGJvb2wsIGZhbHNlKSBcCiAgICAgbWFjcm8oU3BhdGlhbE5hdmlnYXRpb25FbmFibGVkLCBzcGF0
aWFsTmF2aWdhdGlvbkVuYWJsZWQsIEJvb2wsIGJvb2wsIGZhbHNlKSBcCiAgICAgbWFjcm8oTWVk
aWFTb3VyY2VFbmFibGVkLCBtZWRpYVNvdXJjZUVuYWJsZWQsIEJvb2wsIGJvb2wsIGZhbHNlKSBc
CisgICAgbWFjcm8oVmlld0dlc3R1cmVEZWJ1Z2dpbmdFbmFibGVkLCB2aWV3R2VzdHVyZURlYnVn
Z2luZ0VuYWJsZWQsIEJvb2wsIGJvb2wsIGZhbHNlKSBcCiAgICAgXAogCiAjZGVmaW5lIEZPUl9F
QUNIX1dFQktJVF9ET1VCTEVfUFJFRkVSRU5DRShtYWNybykgXApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXMuY3BwIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXMuY3BwCmluZGV4IGMyMTA5MzhjLi5kODFk
ZDJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJl
bmNlcy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5j
ZXMuY3BwCkBAIC0xMjM1LDMgKzEyMzUsMTMgQEAgYm9vbCBXS1ByZWZlcmVuY2VzR2V0TWVkaWFT
b3VyY2VFbmFibGVkKFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXNSZWYpCiB7CiAgICAgcmV0
dXJuIHRvSW1wbChwcmVmZXJlbmNlc1JlZiktPm1lZGlhU291cmNlRW5hYmxlZCgpOwogfQorCit2
b2lkIFdLUHJlZmVyZW5jZXNTZXRWaWV3R2VzdHVyZURlYnVnZ2luZ0VuYWJsZWQoV0tQcmVmZXJl
bmNlc1JlZiBwcmVmZXJlbmNlc1JlZiwgYm9vbCBlbmFibGVkKQoreworICAgIHRvSW1wbChwcmVm
ZXJlbmNlc1JlZiktPnNldFZpZXdHZXN0dXJlRGVidWdnaW5nRW5hYmxlZChlbmFibGVkKTsKK30K
KworYm9vbCBXS1ByZWZlcmVuY2VzR2V0Vmlld0dlc3R1cmVEZWJ1Z2dpbmdFbmFibGVkKFdLUHJl
ZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXNSZWYpCit7CisgICAgcmV0dXJuIHRvSW1wbChwcmVmZXJl
bmNlc1JlZiktPnZpZXdHZXN0dXJlRGVidWdnaW5nRW5hYmxlZCgpOworfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXNQcml2YXRlLmggYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNlc1ByaXZhdGUuaAppbmRl
eCBlOGJiMTFjLi4wZDgwZjA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL0MvV0tQcmVmZXJlbmNlc1ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL0MvV0tQcmVmZXJlbmNlc1ByaXZhdGUuaApAQCAtMzEwLDYgKzMxMCwxMCBAQCBXS19F
WFBPUlQgYm9vbCBXS1ByZWZlcmVuY2VzVXNlTGVnYWN5VGV4dEFsaWduUG9zaXRpb25lZEVsZW1l
bnRCZWhhdmlvcihXS1ByZWZlcgogV0tfRVhQT1JUIHZvaWQgV0tQcmVmZXJlbmNlc1NldE1lZGlh
U291cmNlRW5hYmxlZChXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzUmVmLCBib29sIGVuYWJs
ZWQpOwogV0tfRVhQT1JUIGJvb2wgV0tQcmVmZXJlbmNlc0dldE1lZGlhU291cmNlRW5hYmxlZChX
S1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzUmVmKTsKIAorLy8gRGVmYXVsdCB0byBmYWxzZS4K
K1dLX0VYUE9SVCB2b2lkIFdLUHJlZmVyZW5jZXNTZXRWaWV3R2VzdHVyZURlYnVnZ2luZ0VuYWJs
ZWQoV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNlc1JlZiwgYm9vbCBlbmFibGVkKTsKK1dLX0VY
UE9SVCBib29sIFdLUHJlZmVyZW5jZXNHZXRWaWV3R2VzdHVyZURlYnVnZ2luZ0VuYWJsZWQoV0tQ
cmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNlc1JlZik7CisKICNpZmRlZiBfX2NwbHVzcGx1cwogfQog
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
Vmlld1ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tWaWV3
UHJpdmF0ZS5oCmluZGV4IDA5ZDQxZWMuLjFkYzgwYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tWaWV3UHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tWaWV3UHJpdmF0ZS5oCkBAIC03MCw2ICs3MCw3IEBA
CiBAcHJvcGVydHkgKHJlYWRvbmx5LCBnZXR0ZXI9aXNVc2luZ1VJU2lkZUNvbXBvc2l0aW5nKSBC
T09MIHVzaW5nVUlTaWRlQ29tcG9zaXRpbmc7CiBAcHJvcGVydHkgKHJlYWR3cml0ZSkgQk9PTCBh
bGxvd3NNYWduaWZpY2F0aW9uOwogQHByb3BlcnR5IChyZWFkd3JpdGUpIGRvdWJsZSBtYWduaWZp
Y2F0aW9uOworQHByb3BlcnR5IChyZWFkd3JpdGUpIEJPT0wgYWxsb3dzQmFja0ZvcndhcmROYXZp
Z2F0aW9uR2VzdHVyZXM7CiAKIEBwcm9wZXJ0eShjb3B5LCBub25hdG9taWMpIE5TQ29sb3IgKnVu
ZGVybGF5Q29sb3I7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
aW9zL1BhZ2VDbGllbnRJbXBsSU9TLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2lv
cy9QYWdlQ2xpZW50SW1wbElPUy5oCmluZGV4IGUyZGRlNjUuLjcxM2FkMzAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmgKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9pb3MvUGFnZUNsaWVudEltcGxJT1MuaApA
QCAtOTQsNiArOTQsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBleGl0QWNjZWxlcmF0
ZWRDb21wb3NpdGluZ01vZGUoKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQWNj
ZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUoY29uc3QgTGF5ZXJUcmVlQ29udGV4dCYpIG92ZXJyaWRl
OwogICAgIHZpcnR1YWwgdm9pZCBzZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nUm9vdExheWVyKENB
TGF5ZXIgKnJvb3RMYXllcikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBDQUxheWVyICphY2NlbGVy
YXRlZENvbXBvc2l0aW5nUm9vdExheWVyKCkgY29uc3Qgb3ZlcnJpZGU7CiAjZW5kaWYKIAogICAg
IHZpcnR1YWwgUmV0YWluUHRyPENHSW1hZ2VSZWY+IHRha2VWaWV3U25hcHNob3QoKSBvdmVycmlk
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvaW9zL1BhZ2VDbGll
bnRJbXBsSU9TLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9pb3MvUGFnZUNsaWVu
dEltcGxJT1MubW0KaW5kZXggMGE4NWJmZi4uZTJmMjQ0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0KKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0KQEAgLTMxNCw2
ICszMTQsMTIgQEAgdm9pZCBQYWdlQ2xpZW50SW1wbDo6c2V0QWNjZWxlcmF0ZWRDb21wb3NpdGlu
Z1Jvb3RMYXllcihDQUxheWVyICpyb290TGF5ZXIpCiB7CiAgICAgW21fdmlldyBfc2V0QWNjZWxl
cmF0ZWRDb21wb3NpdGluZ1Jvb3RMYXllcjpyb290TGF5ZXJdOwogfQorCitDQUxheWVyICpQYWdl
Q2xpZW50SW1wbDo6YWNjZWxlcmF0ZWRDb21wb3NpdGluZ1Jvb3RMYXllcigpIGNvbnN0Cit7Cisg
ICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KICNlbmRpZgogCiBS
ZXRhaW5QdHI8Q0dJbWFnZVJlZj4gUGFnZUNsaWVudEltcGw6OnRha2VWaWV3U25hcHNob3QoKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvUGFnZUNsaWVudElt
cGwuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1BhZ2VDbGllbnRJbXBsLmgK
aW5kZXggYzM0ZTBkMy4uMDhkNzgxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9tYWMvUGFnZUNsaWVudEltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL21hYy9QYWdlQ2xpZW50SW1wbC5oCkBAIC02OSw2ICs2OSw3IEBAIHByaXZhdGU6CiAg
ICAgdmlydHVhbCBMYXllckhvc3RpbmdNb2RlIHZpZXdMYXllckhvc3RpbmdNb2RlKCkgb3ZlcnJp
ZGU7CiAgICAgdmlydHVhbCBDb2xvclNwYWNlRGF0YSBjb2xvclNwYWNlKCkgb3ZlcnJpZGU7CiAg
ICAgdmlydHVhbCB2b2lkIHNldEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdSb290TGF5ZXIoQ0FMYXll
ciAqKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIENBTGF5ZXIgKmFjY2VsZXJhdGVkQ29tcG9zaXRp
bmdSb290TGF5ZXIoKSBjb25zdCBvdmVycmlkZTsKIAogICAgIHZpcnR1YWwgdm9pZCBwcm9jZXNz
RGlkQ3Jhc2goKTsKICAgICB2aXJ0dWFsIHZvaWQgcGFnZUNsb3NlZCgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvUGFnZUNsaWVudEltcGwubW0gYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9QYWdlQ2xpZW50SW1wbC5tbQppbmRleCA4N2Vh
ODAzLi45MGM4NDlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21h
Yy9QYWdlQ2xpZW50SW1wbC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21h
Yy9QYWdlQ2xpZW50SW1wbC5tbQpAQCAtNDM0LDYgKzQzNCwxMSBAQCB2b2lkIFBhZ2VDbGllbnRJ
bXBsOjpzZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nUm9vdExheWVyKENBTGF5ZXIgKnJvb3RMYXll
cikKICAgICBbbV93a1ZpZXcgX3NldEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlUm9vdExheWVy
OnJvb3RMYXllcl07CiB9CiAKK0NBTGF5ZXIgKlBhZ2VDbGllbnRJbXBsOjphY2NlbGVyYXRlZENv
bXBvc2l0aW5nUm9vdExheWVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV93a1ZpZXcuX2FjY2Vs
ZXJhdGVkQ29tcG9zaXRpbmdNb2RlUm9vdExheWVyOworfQorCiBSZXRhaW5QdHI8Q0dJbWFnZVJl
Zj4gUGFnZUNsaWVudEltcGw6OnRha2VWaWV3U25hcHNob3QoKQogewogICAgIHJldHVybiBbbV93
a1ZpZXcgX3Rha2VWaWV3U25hcHNob3RdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9t
YWMvV0tWaWV3Lm1tCmluZGV4IDIyYTM0ZTguLjZjOGM3MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcubW0KQEAgLTIzMCw2ICsyMzAsNyBAQCBzdHJ1Y3QgV0tW
aWV3SW50ZXJwcmV0S2V5RXZlbnRzUGFyYW1ldGVycyB7CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8
Vmlld0dlc3R1cmVDb250cm9sbGVyPiBfZ2VzdHVyZUNvbnRyb2xsZXI7CiAgICAgQk9PTCBfYWxs
b3dzTWFnbmlmaWNhdGlvbjsKKyAgICBCT09MIF9hbGxvd3NCYWNrRm9yd2FyZE5hdmlnYXRpb25H
ZXN0dXJlczsKIH0KIAogQGVuZApAQCAtMTEwMywxNiArMTEwNCwyNSBAQCBOQVRJVkVfTU9VU0Vf
RVZFTlRfSEFORExFUihyaWdodE1vdXNlVXApCiAKICN1bmRlZiBOQVRJVkVfTU9VU0VfRVZFTlRf
SEFORExFUgogCi0jZGVmaW5lIE5BVElWRV9FVkVOVF9IQU5ETEVSKFNlbGVjdG9yLCBUeXBlKSBc
Ci0gICAgLSAodm9pZClTZWxlY3RvcjooTlNFdmVudCAqKXRoZUV2ZW50IFwKLSAgICB7IFwKLSAg
ICAgICAgTmF0aXZlV2ViIyNUeXBlIyNFdmVudCB3ZWJFdmVudCA9IE5hdGl2ZVdlYiMjVHlwZSMj
RXZlbnQodGhlRXZlbnQsIHNlbGYpOyBcCi0gICAgICAgIF9kYXRhLT5fcGFnZS0+aGFuZGxlIyNU
eXBlIyNFdmVudCh3ZWJFdmVudCk7IFwKLSAgICB9CistICh2b2lkKV9lbnN1cmVHZXN0dXJlQ29u
dHJvbGxlcgoreworICAgIGlmIChfZGF0YS0+X2dlc3R1cmVDb250cm9sbGVyKQorICAgICAgICBy
ZXR1cm47CiAKLU5BVElWRV9FVkVOVF9IQU5ETEVSKHNjcm9sbFdoZWVsLCBXaGVlbCkKKyAgICBf
ZGF0YS0+X2dlc3R1cmVDb250cm9sbGVyID0gc3RkOjptYWtlX3VuaXF1ZTxWaWV3R2VzdHVyZUNv
bnRyb2xsZXI+KCpfZGF0YS0+X3BhZ2UpOworfQogCi0jdW5kZWYgTkFUSVZFX0VWRU5UX0hBTkRM
RVIKKy0gKHZvaWQpc2Nyb2xsV2hlZWw6KE5TRXZlbnQgKilldmVudAoreworICAgIGlmIChfZGF0
YS0+X2FsbG93c0JhY2tGb3J3YXJkTmF2aWdhdGlvbkdlc3R1cmVzKSB7CisgICAgICAgIFtzZWxm
IF9lbnN1cmVHZXN0dXJlQ29udHJvbGxlcl07CisgICAgICAgIGlmIChfZGF0YS0+X2dlc3R1cmVD
b250cm9sbGVyLT5oYW5kbGVTY3JvbGxXaGVlbEV2ZW50KGV2ZW50KSkKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICBOYXRpdmVXZWJXaGVlbEV2ZW50IHdlYkV2ZW50ID0gTmF0aXZl
V2ViV2hlZWxFdmVudChldmVudCwgc2VsZik7CisgICAgX2RhdGEtPl9wYWdlLT5oYW5kbGVXaGVl
bEV2ZW50KHdlYkV2ZW50KTsKK30KIAogLSAodm9pZCltb3VzZU1vdmVkOihOU0V2ZW50ICopZXZl
bnQKIHsKQEAgLTI0NzEsNiArMjQ4MSwxMSBAQCBzdGF0aWMgdm9pZCBjcmVhdGVTYW5kYm94RXh0
ZW5zaW9uc0ZvckZpbGVVcGxvYWQoTlNQYXN0ZWJvYXJkICpwYXN0ZWJvYXJkLCBTYW5kYgogICAg
IF9kYXRhLT5fZmluZEluZGljYXRvcldpbmRvdy0+c2V0RmluZEluZGljYXRvcihmaW5kSW5kaWNh
dG9yLCBmYWRlT3V0LCBhbmltYXRlKTsKIH0KIAorLSAoQ0FMYXllciAqKV9yb290TGF5ZXIKK3sK
KyAgICByZXR1cm4gW19kYXRhLT5fbGF5ZXJIb3N0aW5nVmlldyBsYXllcl07Cit9CisKIC0gKHZv
aWQpX3NldEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlUm9vdExheWVyOihDQUxheWVyICopcm9v
dExheWVyCiB7CiAgICAgW0NBVHJhbnNhY3Rpb24gYmVnaW5dOwpAQCAtMjUxMCw2ICsyNTI1LDE2
IEBAIHN0YXRpYyB2b2lkIGNyZWF0ZVNhbmRib3hFeHRlbnNpb25zRm9yRmlsZVVwbG9hZChOU1Bh
c3RlYm9hcmQgKnBhc3RlYm9hcmQsIFNhbmRiCiAgICAgW0NBVHJhbnNhY3Rpb24gY29tbWl0XTsK
IH0KIAorLSAoQ0FMYXllciAqKV9hY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZVJvb3RMYXllcgor
eworICAgIE5TVmlldyAqaG9zdFZpZXcgPSBfZGF0YS0+X2xheWVySG9zdGluZ1ZpZXcuZ2V0KCk7
CisKKyAgICBpZiAoIWhvc3RWaWV3KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIHJl
dHVybiBob3N0Vmlldy5sYXllcjsKK30KKwogLSAoUmV0YWluUHRyPENHSW1hZ2VSZWY+KV90YWtl
Vmlld1NuYXBzaG90CiB7CiAgICAgTlNXaW5kb3cgKndpbmRvdyA9IHNlbGYud2luZG93OwpAQCAt
MzIyMSwxNCArMzI0Niw2IEBAIHN0YXRpYyBOU1N0cmluZyAqcGF0aFdpdGhVbmlxdWVGaWxlbmFt
ZUZvclBhdGgoTlNTdHJpbmcgKnBhdGgpCiAgICAgcmV0dXJuIE5POwogfQogCi0tICh2b2lkKV9l
bnN1cmVHZXN0dXJlQ29udHJvbGxlcgotewotICAgIGlmIChfZGF0YS0+X2dlc3R1cmVDb250cm9s
bGVyKQotICAgICAgICByZXR1cm47Ci0KLSAgICBfZGF0YS0+X2dlc3R1cmVDb250cm9sbGVyID0g
c3RkOjptYWtlX3VuaXF1ZTxWaWV3R2VzdHVyZUNvbnRyb2xsZXI+KCpfZGF0YS0+X3BhZ2UpOwot
fQotCiAtICh2b2lkKXNldEFsbG93c01hZ25pZmljYXRpb246KEJPT0wpYWxsb3dzTWFnbmlmaWNh
dGlvbgogewogICAgIF9kYXRhLT5fYWxsb3dzTWFnbmlmaWNhdGlvbiA9IGFsbG93c01hZ25pZmlj
YXRpb247CkBAIC0zMjM5LDYgKzMyNTYsMTcgQEAgc3RhdGljIE5TU3RyaW5nICpwYXRoV2l0aFVu
aXF1ZUZpbGVuYW1lRm9yUGF0aChOU1N0cmluZyAqcGF0aCkKICAgICByZXR1cm4gX2RhdGEtPl9h
bGxvd3NNYWduaWZpY2F0aW9uOwogfQogCistICh2b2lkKXNldEFsbG93c0JhY2tGb3J3YXJkTmF2
aWdhdGlvbkdlc3R1cmVzOihCT09MKWFsbG93c0JhY2tGb3J3YXJkTmF2aWdhdGlvbkdlc3R1cmVz
Cit7CisgICAgX2RhdGEtPl9hbGxvd3NCYWNrRm9yd2FyZE5hdmlnYXRpb25HZXN0dXJlcyA9IGFs
bG93c0JhY2tGb3J3YXJkTmF2aWdhdGlvbkdlc3R1cmVzOworICAgIF9kYXRhLT5fcGFnZS0+c2V0
U2hvdWxkUmVjb3JkTmF2aWdhdGlvblNuYXBzaG90cyhhbGxvd3NCYWNrRm9yd2FyZE5hdmlnYXRp
b25HZXN0dXJlcyk7Cit9CisKKy0gKEJPT0wpYWxsb3dzQmFja0ZvcndhcmROYXZpZ2F0aW9uR2Vz
dHVyZXMKK3sKKyAgICByZXR1cm4gX2RhdGEtPl9hbGxvd3NCYWNrRm9yd2FyZE5hdmlnYXRpb25H
ZXN0dXJlczsKK30KKwogLSAodm9pZCltYWduaWZ5V2l0aEV2ZW50OihOU0V2ZW50ICopZXZlbnQK
IHsKICAgICBpZiAoIV9kYXRhLT5fYWxsb3dzTWFnbmlmaWNhdGlvbikgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3SW50ZXJuYWwuaCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlld0ludGVybmFsLmgKaW5kZXggMWJjMDI4
ZC4uYTYzZjcxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMv
V0tWaWV3SW50ZXJuYWwuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9X
S1ZpZXdJbnRlcm5hbC5oCkBAIC02OSw2ICs2OSw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogLSAo
dm9pZClfc2V0RmluZEluZGljYXRvcjooUGFzc1JlZlB0cjxXZWJLaXQ6OkZpbmRJbmRpY2F0b3I+
KWZpbmRJbmRpY2F0b3IgZmFkZU91dDooQk9PTClmYWRlT3V0IGFuaW1hdGU6KEJPT0wpYW5pbWF0
ZTsKIAogLSAodm9pZClfc2V0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGVSb290TGF5ZXI6KENB
TGF5ZXIgKilyb290TGF5ZXI7CistIChDQUxheWVyICopX2FjY2VsZXJhdGVkQ29tcG9zaXRpbmdN
b2RlUm9vdExheWVyOwogCiAtIChSZXRhaW5QdHI8Q0dJbWFnZVJlZj4pX3Rha2VWaWV3U25hcHNo
b3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdlQ2xpZW50Lmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCmluZGV4IDhmMTY2ZDQuLmU5
MjViZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaApAQCAtMTcyLDYgKzE3
Miw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5SW5wdXRDb250ZXh0QWJvdXRE
aXNjYXJkZWRDb21wb3NpdGlvbigpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgbWFrZUZpcnN0UmVz
cG9uZGVyKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5n
Um9vdExheWVyKENBTGF5ZXIgKikgPSAwOworICAgIHZpcnR1YWwgQ0FMYXllciAqYWNjZWxlcmF0
ZWRDb21wb3NpdGluZ1Jvb3RMYXllcigpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIFJldGFpblB0
cjxDR0ltYWdlUmVmPiB0YWtlVmlld1NuYXBzaG90KCkgPSAwOwogI2VuZGlmCiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCAwZmFiNjQ2Li4xOWQ2YTdiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC01MDAsNiArNTAwLDcgQEAg
cHVibGljOgogICAgIGJvb2wgYWNjZXB0c0ZpcnN0TW91c2UoaW50IGV2ZW50TnVtYmVyLCBjb25z
dCBXZWJNb3VzZUV2ZW50Jik7CiAKICAgICB2b2lkIHNldEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdS
b290TGF5ZXIoUGxhdGZvcm1MYXllciogcm9vdExheWVyKTsKKyAgICBQbGF0Zm9ybUxheWVyKiBh
Y2NlbGVyYXRlZENvbXBvc2l0aW5nUm9vdExheWVyKCkgY29uc3Q7CiAKICNpZiBVU0UoQVBQS0lU
KQogICAgIFdLVmlldyogd2tWaWV3KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvbWFjL1ZpZXdHZXN0dXJlQ29udHJvbGxlci5oIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL21hYy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIuaAppbmRleCAyYmJjMmYzLi44N2Ni
MjY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1ZpZXdHZXN0dXJl
Q29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvVmlld0dlc3R1
cmVDb250cm9sbGVyLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEz
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMywg
MjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTI4LDkgKzI4LDE1IEBACiAKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2
ZXIuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0Zsb2F0UmVjdC5oPgorI2luY2x1ZGUgPFdlYkNvcmUv
VGltZXIuaD4KKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisKK09CSkNfQ0xBU1MgQ0FMYXll
cjsKK09CSkNfQ0xBU1MgTlNFdmVudDsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKK2NsYXNzIFdl
YkJhY2tGb3J3YXJkTGlzdEl0ZW07CiBjbGFzcyBXZWJQYWdlUHJveHk7CiAKIGNsYXNzIFZpZXdH
ZXN0dXJlQ29udHJvbGxlciA6IHByaXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgewpAQCAtNDQs
MTIgKzUwLDIxIEBAIHB1YmxpYzoKICAgICB2b2lkIGhhbmRsZU1hZ25pZmljYXRpb25HZXN0dXJl
KGRvdWJsZSBzY2FsZSwgV2ViQ29yZTo6RmxvYXRQb2ludCBvcmlnaW4pOwogICAgIHZvaWQgaGFu
ZGxlU21hcnRNYWduaWZpY2F0aW9uR2VzdHVyZShXZWJDb3JlOjpGbG9hdFBvaW50IG9yaWdpbik7
CiAKKyAgICBib29sIGhhbmRsZVNjcm9sbFdoZWVsRXZlbnQoTlNFdmVudCAqKTsKKyAgICB2b2lk
IGRpZEhpdFJlbmRlclRyZWVTaXplVGhyZXNob2xkKCk7CisKICAgICB2b2lkIGVuZEFjdGl2ZUdl
c3R1cmUoKTsKIAogICAgIGVudW0gY2xhc3MgVmlld0dlc3R1cmVUeXBlIHsKICAgICAgICAgTm9u
ZSwKICAgICAgICAgTWFnbmlmaWNhdGlvbiwKICAgICAgICAgU21hcnRNYWduaWZpY2F0aW9uLAor
ICAgICAgICBTd2lwZQorICAgIH07CisKKyAgICBlbnVtIGNsYXNzIFN3aXBlVHJhbnNpdGlvblN0
eWxlIHsKKyAgICAgICAgT3ZlcmxhcCwKKyAgICAgICAgUHVzaAogICAgIH07CiAKIHByaXZhdGU6
CkBAIC02Myw2ICs3OCwxMiBAQCBwcml2YXRlOgogICAgIHZvaWQgZW5kTWFnbmlmaWNhdGlvbkdl
c3R1cmUoKTsKICAgICBXZWJDb3JlOjpGbG9hdFBvaW50IHNjYWxlZE1hZ25pZmljYXRpb25Pcmln
aW4oV2ViQ29yZTo6RmxvYXRQb2ludCBvcmlnaW4sIGRvdWJsZSBzY2FsZSk7CiAKKyAgICB2b2lk
IGJlZ2luU3dpcGVHZXN0dXJlKFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0qIHRhcmdldEl0ZW0sIGJv
b2wgc3dpcGluZ0xlZnQpOworICAgIHZvaWQgaGFuZGxlU3dpcGVHZXN0dXJlKFdlYkJhY2tGb3J3
YXJkTGlzdEl0ZW0qIHRhcmdldEl0ZW0sIGRvdWJsZSBwcm9ncmVzcywgYm9vbCBzd2lwaW5nTGVm
dCk7CisgICAgdm9pZCBlbmRTd2lwZUdlc3R1cmUoV2ViQmFja0ZvcndhcmRMaXN0SXRlbSogdGFy
Z2V0SXRlbSwgYm9vbCBjYW5jZWxsZWQpOworICAgIHZvaWQgcmVtb3ZlU3dpcGVTbmFwc2hvdCgp
OworICAgIHZvaWQgc3dpcGVTbmFwc2hvdFdhdGNoZG9nVGltZXJGaXJlZChXZWJDb3JlOjpUaW1l
cjxWaWV3R2VzdHVyZUNvbnRyb2xsZXI+Kik7CisKICAgICBXZWJQYWdlUHJveHkmIG1fd2ViUGFn
ZVByb3h5OwogCiAgICAgZG91YmxlIG1fbWFnbmlmaWNhdGlvbjsKQEAgLTc1LDYgKzk2LDEwIEBA
IHByaXZhdGU6CiAgICAgV2ViQ29yZTo6RmxvYXRSZWN0IG1fdmlzaWJsZUNvbnRlbnRSZWN0Owog
ICAgIGJvb2wgbV92aXNpYmxlQ29udGVudFJlY3RJc1ZhbGlkOwogICAgIGJvb2wgbV9mcmFtZUhh
bmRsZXNNYWduaWZpY2F0aW9uR2VzdHVyZTsKKworICAgIFJldGFpblB0cjxDQUxheWVyPiBtX3N3
aXBlU25hcHNob3RMYXllcjsKKyAgICBTd2lwZVRyYW5zaXRpb25TdHlsZSBtX3N3aXBlVHJhbnNp
dGlvblN0eWxlOworICAgIFdlYkNvcmU6OlRpbWVyPFZpZXdHZXN0dXJlQ29udHJvbGxlcj4gbV9z
d2lwZVdhdGNoZG9nVGltZXI7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvVmlld0dlc3R1cmVDb250cm9sbGVyLm1l
c3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9WaWV3R2VzdHVyZUNvbnRy
b2xsZXIubWVzc2FnZXMuaW4KaW5kZXggMGIzOTllZi4uZDA5YzAzNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIubWVzc2FnZXMu
aW4KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9WaWV3R2VzdHVyZUNvbnRyb2xs
ZXIubWVzc2FnZXMuaW4KQEAgLTIzLDQgKzIzLDUgQEAKIG1lc3NhZ2VzIC0+IFZpZXdHZXN0dXJl
Q29udHJvbGxlciB7CiAgICAgRGlkQ29sbGVjdEdlb21ldHJ5Rm9yTWFnbmlmaWNhdGlvbkdlc3R1
cmUoV2ViQ29yZTo6RmxvYXRSZWN0IHZpc2libGVDb250ZW50Qm91bmRzLCBib29sIGZyYW1lSGFu
ZGxlc01hZ25pZmljYXRpb25HZXN0dXJlKQogICAgIERpZENvbGxlY3RHZW9tZXRyeUZvclNtYXJ0
TWFnbmlmaWNhdGlvbkdlc3R1cmUoV2ViQ29yZTo6RmxvYXRQb2ludCBvcmlnaW4sIFdlYkNvcmU6
OkZsb2F0UmVjdCByZW5kZXJSZWN0LCBXZWJDb3JlOjpGbG9hdFJlY3QgdmlzaWJsZUNvbnRlbnRC
b3VuZHMsIGJvb2wgaXNSZXBsYWNlZEVsZW1lbnQsIGJvb2wgZnJhbWVIYW5kbGVzTWFnbmlmaWNh
dGlvbkdlc3R1cmUpCisgICAgRGlkSGl0UmVuZGVyVHJlZVNpemVUaHJlc2hvbGQoKQogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9WaWV3R2VzdHVyZUNvbnRyb2xs
ZXIubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1ZpZXdHZXN0dXJlQ29udHJvbGxl
ci5tbQppbmRleCA3Y2VmY2MxLi40NWY1MmRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvbWFjL1ZpZXdHZXN0dXJlQ29udHJvbGxlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvbWFjL1ZpZXdHZXN0dXJlQ29udHJvbGxlci5tbQpAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjYsMTAgKzI2LDMxIEBA
CiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIlZpZXdHZXN0dXJlQ29udHJvbGxlci5oIgog
CisjaW1wb3J0ICJXZWJQYWdlR3JvdXAuaCIKICNpbXBvcnQgIlZpZXdHZXN0dXJlQ29udHJvbGxl
ck1lc3NhZ2VzLmgiCiAjaW1wb3J0ICJWaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yTWVzc2Fn
ZXMuaCIKKyNpbXBvcnQgIlZpZXdTbmFwc2hvdFN0b3JlLmgiCisjaW1wb3J0ICJXZWJCYWNrRm9y
d2FyZExpc3QuaCIKKyNpbXBvcnQgIldlYlBhZ2VNZXNzYWdlcy5oIgogI2ltcG9ydCAiV2ViUGFn
ZVByb3h5LmgiCisjaW1wb3J0ICJXZWJQcmVmZXJlbmNlcy5oIgogI2ltcG9ydCAiV2ViUHJvY2Vz
c1Byb3h5LmgiCisjaW1wb3J0IDxDb2NvYS9Db2NvYS5oPgorI2ltcG9ydCA8UXVhcnR6Q29yZS9R
dWFydHpDb3JlLmg+CisjaW1wb3J0IDxXZWJDb3JlL1dlYkNvcmVDQUxheWVyRXh0cmFzLmg+CisK
KyNpZiBkZWZpbmVkKF9faGFzX2luY2x1ZGUpICYmIF9faGFzX2luY2x1ZGUoPFF1YXJ0ekNvcmUv
UXVhcnR6Q29yZVByaXZhdGUuaD4pCisjaW1wb3J0IDxRdWFydHpDb3JlL1F1YXJ0ekNvcmVQcml2
YXRlLmg+CisjZWxzZQorQGludGVyZmFjZSBDQUZpbHRlciA6IE5TT2JqZWN0IDxOU0NvcHlpbmcs
IE5TTXV0YWJsZUNvcHlpbmcsIE5TQ29kaW5nPgorQGVuZAorI2VuZGlmCisKK0BpbnRlcmZhY2Ug
Q0FGaWx0ZXIgKERldGFpbHMpCisrIChDQUZpbHRlciAqKWZpbHRlcldpdGhUeXBlOihOU1N0cmlu
ZyAqKXR5cGU7CitAZW5kCisKK2V4dGVybiBOU1N0cmluZyAqIGNvbnN0IGtDQUZpbHRlckdhdXNz
aWFuQmx1cjsKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKQEAgLTQ1LDYgKzY2LDEyIEBA
IHN0YXRpYyBjb25zdCBkb3VibGUgem9vbU91dFJlc2lzdGFuY2UgPSAwLjEwOwogc3RhdGljIGNv
bnN0IGZsb2F0IHNtYXJ0TWFnbmlmaWNhdGlvbkVsZW1lbnRQYWRkaW5nID0gMC4wNTsKIHN0YXRp
YyBjb25zdCBmbG9hdCBzbWFydE1hZ25pZmljYXRpb25QYW5TY3JvbGxUaHJlc2hvbGQgPSAxMDA7
CiAKK3N0YXRpYyBjb25zdCBkb3VibGUgc3dpcGVPdmVybGF5U2hhZG93T3BhY2l0eSA9IDAuNjY7
CitzdGF0aWMgY29uc3QgZG91YmxlIHN3aXBlT3ZlcmxheVNoYWRvd1JhZGl1cyA9IDM7CisKK3N0
YXRpYyBjb25zdCBmbG9hdCBzd2lwZVNuYXBzaG90UmVtb3ZhbFJlbmRlclRyZWVTaXplVGFyZ2V0
RnJhY3Rpb24gPSAwLjU7CitzdGF0aWMgY29uc3Qgc3RkOjpjaHJvbm86OmR1cmF0aW9uPGRvdWJs
ZT4gc3dpcGVTbmFwc2hvdFJlbW92YWxXYXRjaGRvZ0R1cmF0aW9uKDMpOyAvLyBmaXggdGhpcyB3
aXRoIGFuZGVycycgdGhpbmcKKwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIFZpZXdHZXN0dXJlQ29u
dHJvbGxlcjo6Vmlld0dlc3R1cmVDb250cm9sbGVyKFdlYlBhZ2VQcm94eSYgd2ViUGFnZVByb3h5
KQpAQCAtNTIsNiArNzksOCBAQCBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OlZpZXdHZXN0dXJlQ29u
dHJvbGxlcihXZWJQYWdlUHJveHkmIHdlYlBhZ2VQcm94eSkKICAgICAsIG1fYWN0aXZlR2VzdHVy
ZVR5cGUoVmlld0dlc3R1cmVUeXBlOjpOb25lKQogICAgICwgbV92aXNpYmxlQ29udGVudFJlY3RJ
c1ZhbGlkKGZhbHNlKQogICAgICwgbV9mcmFtZUhhbmRsZXNNYWduaWZpY2F0aW9uR2VzdHVyZShm
YWxzZSkKKyAgICAsIG1fc3dpcGVUcmFuc2l0aW9uU3R5bGUoU3dpcGVUcmFuc2l0aW9uU3R5bGU6
Ok92ZXJsYXApCisgICAgLCBtX3N3aXBlV2F0Y2hkb2dUaW1lcih0aGlzLCAmVmlld0dlc3R1cmVD
b250cm9sbGVyOjpzd2lwZVNuYXBzaG90V2F0Y2hkb2dUaW1lckZpcmVkKQogewogICAgIG1fd2Vi
UGFnZVByb3h5LnByb2Nlc3MoKS5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlZpZXdHZXN0
dXJlQ29udHJvbGxlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3dlYlBhZ2VQcm94eS5wYWdl
SUQoKSwgKnRoaXMpOwogfQpAQCAtMTM4LDYgKzE2Nyw4IEBAIHZvaWQgVmlld0dlc3R1cmVDb250
cm9sbGVyOjplbmRNYWduaWZpY2F0aW9uR2VzdHVyZSgpCiAgICAgICAgIG1fd2ViUGFnZVByb3h5
LnNjYWxlUGFnZShuZXdNYWduaWZpY2F0aW9uLCByb3VuZGVkSW50UG9pbnQobV9tYWduaWZpY2F0
aW9uT3JpZ2luKSk7CiAgICAgZWxzZQogICAgICAgICBtX3dlYlBhZ2VQcm94eS5kcmF3aW5nQXJl
YSgpLT5jb21taXRUcmFuc2llbnRab29tKG5ld01hZ25pZmljYXRpb24sIHNjYWxlZE1hZ25pZmlj
YXRpb25PcmlnaW4obV9tYWduaWZpY2F0aW9uT3JpZ2luLCBuZXdNYWduaWZpY2F0aW9uKSk7CisK
KyAgICBtX2FjdGl2ZUdlc3R1cmVUeXBlID0gVmlld0dlc3R1cmVUeXBlOjpOb25lOwogfQogCiB2
b2lkIFZpZXdHZXN0dXJlQ29udHJvbGxlcjo6aGFuZGxlU21hcnRNYWduaWZpY2F0aW9uR2VzdHVy
ZShGbG9hdFBvaW50IG9yaWdpbikKQEAgLTE5MiwyMCArMjIzLDE3NyBAQCB2b2lkIFZpZXdHZXN0
dXJlQ29udHJvbGxlcjo6ZGlkQ29sbGVjdEdlb21ldHJ5Rm9yU21hcnRNYWduaWZpY2F0aW9uR2Vz
dHVyZShGbG9hdAogICAgIG1fbGFzdFNtYXJ0TWFnbmlmaWNhdGlvblVuc2NhbGVkVGFyZ2V0UmVj
dCA9IHVuc2NhbGVkVGFyZ2V0UmVjdDsKIH0KIAotdm9pZCBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6
OmVuZEFjdGl2ZUdlc3R1cmUoKQorYm9vbCBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OmhhbmRsZVNj
cm9sbFdoZWVsRXZlbnQoTlNFdmVudCAqZXZlbnQpCiB7Ci0gICAgc3dpdGNoIChtX2FjdGl2ZUdl
c3R1cmVUeXBlKSB7Ci0gICAgY2FzZSBWaWV3R2VzdHVyZVR5cGU6Ok5vbmU6Ci0gICAgY2FzZSBW
aWV3R2VzdHVyZVR5cGU6OlNtYXJ0TWFnbmlmaWNhdGlvbjoKLSAgICAgICAgYnJlYWs7Ci0gICAg
Y2FzZSBWaWV3R2VzdHVyZVR5cGU6Ok1hZ25pZmljYXRpb246Ci0gICAgICAgIGVuZE1hZ25pZmlj
YXRpb25HZXN0dXJlKCk7CisgICAgaWYgKG1fYWN0aXZlR2VzdHVyZVR5cGUgIT0gVmlld0dlc3R1
cmVUeXBlOjpOb25lKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoZXZlbnQucGhh
c2UgIT0gTlNFdmVudFBoYXNlQmVnYW4pCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlm
IChmYWJzKGV2ZW50LnNjcm9sbGluZ0RlbHRhWCkgPCBmYWJzKGV2ZW50LnNjcm9sbGluZ0RlbHRh
WSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGJvb2wgd2lsbFN3aXBlTGVmdCA9IGV2
ZW50LnNjcm9sbGluZ0RlbHRhWCA+IDAgJiYgbV93ZWJQYWdlUHJveHkuaXNQaW5uZWRUb0xlZnRT
aWRlKCkgJiYgbV93ZWJQYWdlUHJveHkuYmFja0ZvcndhcmRMaXN0KCkuYmFja0l0ZW0oKTsKKyAg
ICBib29sIHdpbGxTd2lwZVJpZ2h0ID0gZXZlbnQuc2Nyb2xsaW5nRGVsdGFYIDwgMCAmJiBtX3dl
YlBhZ2VQcm94eS5pc1Bpbm5lZFRvUmlnaHRTaWRlKCkgJiYgbV93ZWJQYWdlUHJveHkuYmFja0Zv
cndhcmRMaXN0KCkuZm9yd2FyZEl0ZW0oKTsKKyAgICBpZiAoIXdpbGxTd2lwZUxlZnQgJiYgIXdp
bGxTd2lwZVJpZ2h0KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoIWV2ZW50Lmhh
c1ByZWNpc2VTY3JvbGxpbmdEZWx0YXMpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlm
ICghW05TRXZlbnQgaXNTd2lwZVRyYWNraW5nRnJvbVNjcm9sbEV2ZW50c0VuYWJsZWRdKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBWaWV3U25hcHNob3RTdG9yZTo6c2hhcmVkKCkucmVj
b3JkU25hcHNob3QobV93ZWJQYWdlUHJveHkpOworCisgICAgQ0dGbG9hdCBtYXhQcm9ncmVzcyA9
IHdpbGxTd2lwZUxlZnQgPyAxIDogMDsKKyAgICBDR0Zsb2F0IG1pblByb2dyZXNzID0gd2lsbFN3
aXBlUmlnaHQgPyAtMSA6IDA7CisgICAgUmVmUHRyPFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0+IHRh
cmdldEl0ZW0gPSB3aWxsU3dpcGVMZWZ0ID8gbV93ZWJQYWdlUHJveHkuYmFja0ZvcndhcmRMaXN0
KCkuYmFja0l0ZW0oKSA6IG1fd2ViUGFnZVByb3h5LmJhY2tGb3J3YXJkTGlzdCgpLmZvcndhcmRJ
dGVtKCk7CisgICAgX19ibG9jayBib29sIHN3aXBlQ2FuY2VsbGVkID0gZmFsc2U7CisKKyAgICBb
ZXZlbnQgdHJhY2tTd2lwZUV2ZW50V2l0aE9wdGlvbnM6MCBkYW1wZW5BbW91bnRUaHJlc2hvbGRN
aW46bWluUHJvZ3Jlc3MgbWF4Om1heFByb2dyZXNzIHVzaW5nSGFuZGxlcjpeKENHRmxvYXQgcHJv
Z3Jlc3MsIE5TRXZlbnRQaGFzZSBwaGFzZSwgQk9PTCBpc0NvbXBsZXRlLCBCT09MICpzdG9wKSB7
CisgICAgICAgIGlmIChwaGFzZSA9PSBOU0V2ZW50UGhhc2VCZWdhbikKKyAgICAgICAgICAgIHRo
aXMtPmJlZ2luU3dpcGVHZXN0dXJlKHRhcmdldEl0ZW0uZ2V0KCksIHdpbGxTd2lwZUxlZnQpOwor
ICAgICAgICBDR0Zsb2F0IGNsYW1wZWRQcm9ncmVzcyA9IHN0ZDo6bWluKHN0ZDo6bWF4KHByb2dy
ZXNzLCBtaW5Qcm9ncmVzcyksIG1heFByb2dyZXNzKTsKKyAgICAgICAgdGhpcy0+aGFuZGxlU3dp
cGVHZXN0dXJlKHRhcmdldEl0ZW0uZ2V0KCksIGNsYW1wZWRQcm9ncmVzcywgd2lsbFN3aXBlTGVm
dCk7CisgICAgICAgIGlmIChwaGFzZSA9PSBOU0V2ZW50UGhhc2VDYW5jZWxsZWQpCisgICAgICAg
ICAgICBzd2lwZUNhbmNlbGxlZCA9IHRydWU7CisgICAgICAgIGlmIChpc0NvbXBsZXRlKQorICAg
ICAgICAgICAgdGhpcy0+ZW5kU3dpcGVHZXN0dXJlKHRhcmdldEl0ZW0uZ2V0KCksIHN3aXBlQ2Fu
Y2VsbGVkKTsKKyAgICB9XTsKKworICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIFZpZXdHZXN0
dXJlQ29udHJvbGxlcjo6YmVnaW5Td2lwZUdlc3R1cmUoV2ViQmFja0ZvcndhcmRMaXN0SXRlbSog
dGFyZ2V0SXRlbSwgYm9vbCBzd2lwaW5nTGVmdCkKK3sKKyAgICBtX2FjdGl2ZUdlc3R1cmVUeXBl
ID0gVmlld0dlc3R1cmVUeXBlOjpTd2lwZTsKKworICAgIENBTGF5ZXIgKnJvb3RMYXllciA9IG1f
d2ViUGFnZVByb3h5LmFjY2VsZXJhdGVkQ29tcG9zaXRpbmdSb290TGF5ZXIoKTsKKworICAgIG1f
c3dpcGVTbmFwc2hvdExheWVyID0gYWRvcHROUyhbW0NBTGF5ZXIgYWxsb2NdIGluaXRdKTsKKyAg
ICBbbV9zd2lwZVNuYXBzaG90TGF5ZXIgc2V0QmFja2dyb3VuZENvbG9yOkNHQ29sb3JHZXRDb25z
dGFudENvbG9yKGtDR0NvbG9yV2hpdGUpXTsKKworICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBz
bmFwc2hvdCA9IFZpZXdTbmFwc2hvdFN0b3JlOjpzaGFyZWQoKS5zbmFwc2hvdEFuZFJlbmRlclRy
ZWVTaXplKHRhcmdldEl0ZW0pLmZpcnN0OworICAgIFttX3N3aXBlU25hcHNob3RMYXllciBzZXRD
b250ZW50czooaWQpc25hcHNob3QuZ2V0KCldOworICAgIFttX3N3aXBlU25hcHNob3RMYXllciBz
ZXRDb250ZW50c0dyYXZpdHk6a0NBR3Jhdml0eVRvcExlZnRdOworICAgIFttX3N3aXBlU25hcHNo
b3RMYXllciBzZXRDb250ZW50c1NjYWxlOm1fd2ViUGFnZVByb3h5LmRldmljZVNjYWxlRmFjdG9y
KCldOworICAgIFttX3N3aXBlU25hcHNob3RMYXllciBzZXRGcmFtZTpyb290TGF5ZXIuZnJhbWVd
OworICAgIFttX3N3aXBlU25hcHNob3RMYXllciBzZXRBbmNob3JQb2ludDpDR1BvaW50WmVyb107
CisgICAgW21fc3dpcGVTbmFwc2hvdExheWVyIHNldFBvc2l0aW9uOkNHUG9pbnRaZXJvXTsKKyAg
ICBbbV9zd2lwZVNuYXBzaG90TGF5ZXIgc2V0TmFtZTpAIkdlc3R1cmUgU3dpcGUgU25hcHNob3Qg
TGF5ZXIiXTsKKyAgICBbbV9zd2lwZVNuYXBzaG90TGF5ZXIgd2ViX2Rpc2FibGVBbGxBY3Rpb25z
XTsKKworICAgIGlmIChtX3dlYlBhZ2VQcm94eS5wYWdlR3JvdXAoKS5wcmVmZXJlbmNlcygpLT52
aWV3R2VzdHVyZURlYnVnZ2luZ0VuYWJsZWQoKSkgeworICAgICAgICBDQUZpbHRlciogZmlsdGVy
ID0gW0NBRmlsdGVyIGZpbHRlcldpdGhUeXBlOmtDQUZpbHRlckdhdXNzaWFuQmx1cl07CisgICAg
ICAgIFtmaWx0ZXIgc2V0VmFsdWU6W05TTnVtYmVyIG51bWJlcldpdGhGbG9hdDozXSBmb3JLZXk6
QCJpbnB1dFJhZGl1cyJdOworICAgICAgICBbbV9zd2lwZVNuYXBzaG90TGF5ZXIgc2V0RmlsdGVy
czpAW2ZpbHRlcl1dOworICAgIH0KKworICAgIGlmIChtX3N3aXBlVHJhbnNpdGlvblN0eWxlID09
IFN3aXBlVHJhbnNpdGlvblN0eWxlOjpPdmVybGFwKSB7CisgICAgICAgIFJldGFpblB0cjxDR1Bh
dGhSZWY+IHNoYWRvd1BhdGggPSBhZG9wdENGKENHUGF0aENyZWF0ZVdpdGhSZWN0KFtyb290TGF5
ZXIgYm91bmRzXSwgMCkpOworCisgICAgICAgIFttX3N3aXBlU25hcHNob3RMYXllciBzZXRTaGFk
b3dDb2xvcjpDR0NvbG9yR2V0Q29uc3RhbnRDb2xvcihrQ0dDb2xvckJsYWNrKV07CisgICAgICAg
IFttX3N3aXBlU25hcHNob3RMYXllciBzZXRTaGFkb3dPcGFjaXR5OnN3aXBlT3ZlcmxheVNoYWRv
d09wYWNpdHldOworICAgICAgICBbbV9zd2lwZVNuYXBzaG90TGF5ZXIgc2V0U2hhZG93UmFkaXVz
OnN3aXBlT3ZlcmxheVNoYWRvd1JhZGl1c107CisgICAgICAgIFttX3N3aXBlU25hcHNob3RMYXll
ciBzZXRTaGFkb3dQYXRoOnNoYWRvd1BhdGguZ2V0KCldOworCisgICAgICAgIFtyb290TGF5ZXIg
c2V0U2hhZG93Q29sb3I6Q0dDb2xvckdldENvbnN0YW50Q29sb3Ioa0NHQ29sb3JCbGFjayldOwor
ICAgICAgICBbcm9vdExheWVyIHNldFNoYWRvd09wYWNpdHk6c3dpcGVPdmVybGF5U2hhZG93T3Bh
Y2l0eV07CisgICAgICAgIFtyb290TGF5ZXIgc2V0U2hhZG93UmFkaXVzOnN3aXBlT3ZlcmxheVNo
YWRvd1JhZGl1c107CisgICAgICAgIFtyb290TGF5ZXIgc2V0U2hhZG93UGF0aDpzaGFkb3dQYXRo
LmdldCgpXTsKKyAgICB9CisKKyAgICBpZiAoc3dpcGluZ0xlZnQpCisgICAgICAgIFtyb290TGF5
ZXIuc3VwZXJsYXllciBpbnNlcnRTdWJsYXllcjptX3N3aXBlU25hcHNob3RMYXllci5nZXQoKSBi
ZWxvdzpyb290TGF5ZXJdOworICAgIGVsc2UKKyAgICAgICAgW3Jvb3RMYXllci5zdXBlcmxheWVy
IGluc2VydFN1YmxheWVyOm1fc3dpcGVTbmFwc2hvdExheWVyLmdldCgpIGFib3ZlOnJvb3RMYXll
cl07Cit9CisKK3ZvaWQgVmlld0dlc3R1cmVDb250cm9sbGVyOjpoYW5kbGVTd2lwZUdlc3R1cmUo
V2ViQmFja0ZvcndhcmRMaXN0SXRlbSogdGFyZ2V0SXRlbSwgZG91YmxlIHByb2dyZXNzLCBib29s
IHN3aXBpbmdMZWZ0KQoreworICAgIEFTU0VSVChtX2FjdGl2ZUdlc3R1cmVUeXBlID09IFZpZXdH
ZXN0dXJlVHlwZTo6U3dpcGUpOworCisgICAgQ0FMYXllciAqcm9vdExheWVyID0gbV93ZWJQYWdl
UHJveHkuYWNjZWxlcmF0ZWRDb21wb3NpdGluZ1Jvb3RMYXllcigpOworICAgIGRvdWJsZSB3aWR0
aCA9IHJvb3RMYXllci5ib3VuZHMuc2l6ZS53aWR0aDsKKyAgICBkb3VibGUgc3dpcGluZ0xheWVy
T2Zmc2V0ID0gZmxvb3Iod2lkdGggKiBwcm9ncmVzcyk7CisKKyAgICBpZiAobV9zd2lwZVRyYW5z
aXRpb25TdHlsZSA9PSBTd2lwZVRyYW5zaXRpb25TdHlsZTo6T3ZlcmxhcCkgeworICAgICAgICBp
ZiAoc3dpcGluZ0xlZnQpCisgICAgICAgICAgICBbcm9vdExheWVyIHNldFBvc2l0aW9uOkNHUG9p
bnRNYWtlKHN3aXBpbmdMYXllck9mZnNldCwgMCldOworICAgICAgICBlbHNlCisgICAgICAgICAg
ICBbbV9zd2lwZVNuYXBzaG90TGF5ZXIgc2V0UG9zaXRpb246Q0dQb2ludE1ha2Uod2lkdGggKyBz
d2lwaW5nTGF5ZXJPZmZzZXQsIDApXTsKKyAgICB9IGVsc2UgaWYgKG1fc3dpcGVUcmFuc2l0aW9u
U3R5bGUgPT0gU3dpcGVUcmFuc2l0aW9uU3R5bGU6OlB1c2gpIHsKKyAgICAgICAgW3Jvb3RMYXll
ciBzZXRQb3NpdGlvbjpDR1BvaW50TWFrZShzd2lwaW5nTGF5ZXJPZmZzZXQsIDApXTsKKyAgICAg
ICAgW21fc3dpcGVTbmFwc2hvdExheWVyIHNldFBvc2l0aW9uOkNHUG9pbnRNYWtlKChzd2lwaW5n
TGVmdCA/IC13aWR0aCA6IHdpZHRoKSArIHN3aXBpbmdMYXllck9mZnNldCwgMCldOwogICAgIH0K
K30KKwordm9pZCBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OmVuZFN3aXBlR2VzdHVyZShXZWJCYWNr
Rm9yd2FyZExpc3RJdGVtKiB0YXJnZXRJdGVtLCBib29sIGNhbmNlbGxlZCkKK3sKKyAgICBBU1NF
UlQobV9hY3RpdmVHZXN0dXJlVHlwZSA9PSBWaWV3R2VzdHVyZVR5cGU6OlN3aXBlKTsKKworICAg
IENBTGF5ZXIgKnJvb3RMYXllciA9IG1fd2ViUGFnZVByb3h5LmFjY2VsZXJhdGVkQ29tcG9zaXRp
bmdSb290TGF5ZXIoKTsKKworICAgIFtyb290TGF5ZXIgc2V0U2hhZG93T3BhY2l0eTowXTsKKyAg
ICBbcm9vdExheWVyIHNldFNoYWRvd1JhZGl1czowXTsKKworICAgIGlmIChjYW5jZWxsZWQpIHsK
KyAgICAgICAgcmVtb3ZlU3dpcGVTbmFwc2hvdCgpOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgdWludDY0X3QgcmVuZGVyVHJlZVNpemUgPSBWaWV3U25hcHNob3RTdG9yZTo6c2hhcmVk
KCkuc25hcHNob3RBbmRSZW5kZXJUcmVlU2l6ZSh0YXJnZXRJdGVtKS5zZWNvbmQ7CisgICAgbV93
ZWJQYWdlUHJveHkucHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OlZpZXdHZXN0dXJlR2VvbWV0cnlD
b2xsZWN0b3I6OlNldFJlbmRlclRyZWVTaXplTm90aWZpY2F0aW9uVGhyZXNob2xkKHJlbmRlclRy
ZWVTaXplICogc3dpcGVTbmFwc2hvdFJlbW92YWxSZW5kZXJUcmVlU2l6ZVRhcmdldEZyYWN0aW9u
KSwgbV93ZWJQYWdlUHJveHkucGFnZUlEKCkpOworCisgICAgLy8gV2UgZG9uJ3Qgd2FudCB0byBy
ZXBsYWNlIHRoZSBjdXJyZW50IGJhY2stZm9yd2FyZCBpdGVtJ3Mgc25hcHNob3QKKyAgICAvLyBs
aWtlIHdlIG5vcm1hbGx5IHdvdWxkIHdoZW4gZ29pbmcgYmFjayBvciBmb3J3YXJkLCBiZWNhdXNl
IHdlIGFyZQorICAgIC8vIGRpc3BsYXlpbmcgdGhlIGRlc3RpbmF0aW9uIGl0ZW0ncyBzbmFwc2hv
dC4KKyAgICBWaWV3U25hcHNob3RTdG9yZTo6c2hhcmVkKCkuZGlzYWJsZVNuYXBzaG90dGluZygp
OworICAgIG1fd2ViUGFnZVByb3h5LmdvVG9CYWNrRm9yd2FyZEl0ZW0odGFyZ2V0SXRlbSk7Cisg
ICAgVmlld1NuYXBzaG90U3RvcmU6OnNoYXJlZCgpLmVuYWJsZVNuYXBzaG90dGluZygpOworCisg
ICAgaWYgKCFyZW5kZXJUcmVlU2l6ZSkgeworICAgICAgICByZW1vdmVTd2lwZVNuYXBzaG90KCk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtX3N3aXBlV2F0Y2hkb2dUaW1lci5zdGFy
dE9uZVNob3Qoc3dpcGVTbmFwc2hvdFJlbW92YWxXYXRjaGRvZ0R1cmF0aW9uLmNvdW50KCkpOwor
fQorCit2b2lkIFZpZXdHZXN0dXJlQ29udHJvbGxlcjo6ZGlkSGl0UmVuZGVyVHJlZVNpemVUaHJl
c2hvbGQoKQoreworICAgIHJlbW92ZVN3aXBlU25hcHNob3QoKTsKK30KKwordm9pZCBWaWV3R2Vz
dHVyZUNvbnRyb2xsZXI6OnN3aXBlU25hcHNob3RXYXRjaGRvZ1RpbWVyRmlyZWQoV2ViQ29yZTo6
VGltZXI8Vmlld0dlc3R1cmVDb250cm9sbGVyPiopCit7CisgICAgcmVtb3ZlU3dpcGVTbmFwc2hv
dCgpOworfQorCit2b2lkIFZpZXdHZXN0dXJlQ29udHJvbGxlcjo6cmVtb3ZlU3dpcGVTbmFwc2hv
dCgpCit7CisgICAgbV9zd2lwZVdhdGNoZG9nVGltZXIuc3RvcCgpOworCisgICAgaWYgKG1fYWN0
aXZlR2VzdHVyZVR5cGUgIT0gVmlld0dlc3R1cmVUeXBlOjpTd2lwZSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgW21fd2ViUGFnZVByb3h5LmFjY2VsZXJhdGVkQ29tcG9zaXRpbmdSb290TGF5ZXIo
KSBzZXRQb3NpdGlvbjpDR1BvaW50WmVyb107CisgICAgW21fc3dpcGVTbmFwc2hvdExheWVyIHJl
bW92ZUZyb21TdXBlcmxheWVyXTsKKyAgICBtX3N3aXBlU25hcHNob3RMYXllciA9IG51bGxwdHI7
CiAKLSAgICBtX3Zpc2libGVDb250ZW50UmVjdElzVmFsaWQgPSBmYWxzZTsKICAgICBtX2FjdGl2
ZUdlc3R1cmVUeXBlID0gVmlld0dlc3R1cmVUeXBlOjpOb25lOwogfQogCit2b2lkIFZpZXdHZXN0
dXJlQ29udHJvbGxlcjo6ZW5kQWN0aXZlR2VzdHVyZSgpCit7CisgICAgaWYgKG1fYWN0aXZlR2Vz
dHVyZVR5cGUgPT0gVmlld0dlc3R1cmVUeXBlOjpNYWduaWZpY2F0aW9uKSB7CisgICAgICAgIGVu
ZE1hZ25pZmljYXRpb25HZXN0dXJlKCk7CisgICAgICAgIG1fdmlzaWJsZUNvbnRlbnRSZWN0SXNW
YWxpZCA9IGZhbHNlOworICAgIH0KK30KKwogZG91YmxlIFZpZXdHZXN0dXJlQ29udHJvbGxlcjo6
bWFnbmlmaWNhdGlvbigpIGNvbnN0CiB7CiAgICAgaWYgKG1fYWN0aXZlR2VzdHVyZVR5cGUgPT0g
Vmlld0dlc3R1cmVUeXBlOjpNYWduaWZpY2F0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL21hYy9WaWV3U25hcHNob3RTdG9yZS5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9tYWMvVmlld1NuYXBzaG90U3RvcmUubW0KaW5kZXggNGRiOWFiNy4uYjExODUwNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9WaWV3U25hcHNob3RTdG9y
ZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1ZpZXdTbmFwc2hvdFN0b3Jl
Lm1tCkBAIC03Nyw3ICs3Nyw3IEBAIHN0ZDo6cGFpcjxSZXRhaW5QdHI8Q0dJbWFnZVJlZj4sIHVp
bnQ2NF90PiBWaWV3U25hcHNob3RTdG9yZTo6c25hcHNob3RBbmRSZW5kZXJUCiAgICAgaWYgKHNu
YXBzaG90QW5kUmVuZGVyVHJlZVNpemUgPT0gbV9zbmFwc2hvdE1hcC5lbmQoKSkKICAgICAgICAg
cmV0dXJuIHN0ZDo6bWFrZV9wYWlyKG51bGxwdHIsIDApOwogCi0gICAgcmV0dXJuIHN0ZDo6bWFr
ZV9wYWlyKHNuYXBzaG90QW5kUmVuZGVyVHJlZVNpemUtPnZhbHVlLmZpcnN0LmdldCgpLCBzbmFw
c2hvdEFuZFJlbmRlclRyZWVTaXplLT52YWx1ZS5zZWNvbmQpOworICAgIHJldHVybiBzbmFwc2hv
dEFuZFJlbmRlclRyZWVTaXplLT52YWx1ZTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5t
bSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tCmluZGV4
IDJlOTEzMmIuLjNmMmQ3YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9t
YWMvV2ViUGFnZVByb3h5TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMv
V2ViUGFnZVByb3h5TWFjLm1tCkBAIC00NTksNiArNDU5LDExIEBAIHZvaWQgV2ViUGFnZVByb3h5
OjpzZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nUm9vdExheWVyKFBsYXRmb3JtTGF5ZXIqIHJvb3RM
YXllcikKICAgICBtX3BhZ2VDbGllbnQuc2V0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ1Jvb3RMYXll
cihyb290TGF5ZXIpOwogfQogCitQbGF0Zm9ybUxheWVyKiBXZWJQYWdlUHJveHk6OmFjY2VsZXJh
dGVkQ29tcG9zaXRpbmdSb290TGF5ZXIoKSBjb25zdAoreworICAgIHJldHVybiBtX3BhZ2VDbGll
bnQuYWNjZWxlcmF0ZWRDb21wb3NpdGluZ1Jvb3RMYXllcigpOworfQorCiBzdGF0aWMgTlNTdHJp
bmcgKnRlbXBvcmFyeVBERkRpcmVjdG9yeVBhdGgoKQogewogICAgIHN0YXRpYyBOU1N0cmluZyAq
dGVtcG9yYXJ5UERGRGlyZWN0b3J5UGF0aDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9WaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yLmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9WaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9y
LmNwcAppbmRleCAxN2E1NzVjLi43NWJiZWUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvci5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdHZXN0dXJlR2VvbWV0cnlDb2xs
ZWN0b3IuY3BwCkBAIC00Miw2ICs0Miw4IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBWaWV3R2Vz
dHVyZUdlb21ldHJ5Q29sbGVjdG9yOjpWaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yKFdlYlBh
Z2UmIHdlYlBhZ2UpCiAgICAgOiBtX3dlYlBhZ2Uod2ViUGFnZSkKKyAgICAsIG1fcmVuZGVyVHJl
ZVNpemVOb3RpZmljYXRpb25UaHJlc2hvbGQoMCkKKyAgICAsIG1fcmVuZGVyVHJlZVNpemVOb3Rp
ZmljYXRpb25UaW1lcihSdW5Mb29wOjptYWluKCksIHRoaXMsICZWaWV3R2VzdHVyZUdlb21ldHJ5
Q29sbGVjdG9yOjpyZW5kZXJUcmVlU2l6ZU5vdGlmaWNhdGlvblRpbWVyRmlyZWQpCiB7CiAgICAg
V2ViUHJvY2Vzczo6c2hhcmVkKCkuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpWaWV3R2Vz
dHVyZUdlb21ldHJ5Q29sbGVjdG9yOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fd2ViUGFnZS5w
YWdlSUQoKSwgKnRoaXMpOwogfQpAQCAtNzcsNCArNzksMTcgQEAgdm9pZCBWaWV3R2VzdHVyZUdl
b21ldHJ5Q29sbGVjdG9yOjpjb2xsZWN0R2VvbWV0cnlGb3JTbWFydE1hZ25pZmljYXRpb25HZXN0
dXJlKEYKICAgICB9CiB9CiAKK3ZvaWQgVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvcjo6bWFp
bkZyYW1lRGlkTGF5b3V0KCkKK3sKKyAgICBpZiAobV9yZW5kZXJUcmVlU2l6ZU5vdGlmaWNhdGlv
blRocmVzaG9sZCAmJiBtX3dlYlBhZ2UucmVuZGVyVHJlZVNpemUoKSA+PSBtX3JlbmRlclRyZWVT
aXplTm90aWZpY2F0aW9uVGhyZXNob2xkKSB7CisgICAgICAgIG1fcmVuZGVyVHJlZVNpemVOb3Rp
ZmljYXRpb25UaW1lci5zdGFydE9uZVNob3QoMCk7CisgICAgICAgIG1fcmVuZGVyVHJlZVNpemVO
b3RpZmljYXRpb25UaHJlc2hvbGQgPSAwOworICAgIH0KK30KKwordm9pZCBWaWV3R2VzdHVyZUdl
b21ldHJ5Q29sbGVjdG9yOjpyZW5kZXJUcmVlU2l6ZU5vdGlmaWNhdGlvblRpbWVyRmlyZWQoKQor
eworICAgIG1fd2ViUGFnZS5zZW5kKE1lc3NhZ2VzOjpWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OkRp
ZEhpdFJlbmRlclRyZWVTaXplVGhyZXNob2xkKCkpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9WaWV3R2Vz
dHVyZUdlb21ldHJ5Q29sbGVjdG9yLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvci5oCmluZGV4IDMyMDk1N2IuLjgyYjllNzgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9WaWV3R2VzdHVy
ZUdlb21ldHJ5Q29sbGVjdG9yLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1ZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3IuaApAQCAtMjcsNiArMjcsNyBAQAogI2Rl
ZmluZSBWaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yX2gKIAogI2luY2x1ZGUgIk1lc3NhZ2VS
ZWNlaXZlci5oIgorI2luY2x1ZGUgPFdURi9SdW5Mb29wLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIGNsYXNzIEZsb2F0UG9pbnQ7CkBAIC00MSw2ICs0Miw4IEBAIHB1YmxpYzoKICAgICBWaWV3
R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yKFdlYlBhZ2UmKTsKICAgICB+Vmlld0dlc3R1cmVHZW9t
ZXRyeUNvbGxlY3RvcigpOwogCisgICAgdm9pZCBtYWluRnJhbWVEaWRMYXlvdXQoKTsKKwogcHJp
dmF0ZToKICAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlci4KICAgICB2aXJ0dWFsIHZvaWQgZGlk
UmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uKiwgSVBDOjpNZXNzYWdlRGVjb2RlciYpIG92
ZXJyaWRlOwpAQCAtNDgsOCArNTEsMTQgQEAgcHJpdmF0ZToKICAgICAvLyBNZXNzYWdlIGhhbmRs
ZXJzLgogICAgIHZvaWQgY29sbGVjdEdlb21ldHJ5Rm9yTWFnbmlmaWNhdGlvbkdlc3R1cmUoKTsK
ICAgICB2b2lkIGNvbGxlY3RHZW9tZXRyeUZvclNtYXJ0TWFnbmlmaWNhdGlvbkdlc3R1cmUoV2Vi
Q29yZTo6RmxvYXRQb2ludCBvcmlnaW4pOworICAgIHZvaWQgc2V0UmVuZGVyVHJlZVNpemVOb3Rp
ZmljYXRpb25UaHJlc2hvbGQodWludDY0X3Qgc2l6ZSkgeyBtX3JlbmRlclRyZWVTaXplTm90aWZp
Y2F0aW9uVGhyZXNob2xkID0gc2l6ZTsgfQorCisgICAgdm9pZCByZW5kZXJUcmVlU2l6ZU5vdGlm
aWNhdGlvblRpbWVyRmlyZWQoKTsKIAogICAgIFdlYlBhZ2UmIG1fd2ViUGFnZTsKKworICAgIHVp
bnQ2NF90IG1fcmVuZGVyVHJlZVNpemVOb3RpZmljYXRpb25UaHJlc2hvbGQ7CisgICAgUnVuTG9v
cDo6VGltZXI8Vmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvcj4gbV9yZW5kZXJUcmVlU2l6ZU5v
dGlmaWNhdGlvblRpbWVyOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvVmlld0dlc3R1cmVHZW9tZXRyeUNv
bGxlY3Rvci5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9W
aWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yLm1lc3NhZ2VzLmluCmluZGV4IDY1ZWFhNTguLjM5
YjE4YmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9WaWV3
R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9WaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yLm1lc3NhZ2Vz
LmluCkBAIC0yNSw0ICsyNSw1IEBAIG1lc3NhZ2VzIC0+IFZpZXdHZXN0dXJlR2VvbWV0cnlDb2xs
ZWN0b3IgewogQ29sbGVjdEdlb21ldHJ5Rm9yTWFnbmlmaWNhdGlvbkdlc3R1cmUoKQogQ29sbGVj
dEdlb21ldHJ5Rm9yU21hcnRNYWduaWZpY2F0aW9uR2VzdHVyZShXZWJDb3JlOjpGbG9hdFBvaW50
IG9yaWdpbikKIAorU2V0UmVuZGVyVHJlZVNpemVOb3RpZmljYXRpb25UaHJlc2hvbGQodWludDY0
X3Qgc2l6ZSkKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmNwcAppbmRleCAwYTNhNDZhLi4wYjk2OGMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC0zMDU3LDYgKzMwNTcsMTAgQEAgdm9pZCBXZWJQ
YWdlOjptYWluRnJhbWVEaWRMYXlvdXQoKQogICAgICAgICB9CiAgICAgfQogI2VuZGlmCisKKyNp
ZiBQTEFURk9STShNQUMpCisgICAgbV92aWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yLm1haW5G
cmFtZURpZExheW91dCgpOworI2VuZGlmCiB9CiAKIHZvaWQgV2ViUGFnZTo6YWRkUGx1Z2luVmll
dyhQbHVnaW5WaWV3KiBwbHVnaW5WaWV3KQo=
</data>
<flag name="review"
          id="246134"
          type_id="1"
          status="+"
          setter="andersca"
    />
          </attachment>
      

    </bug>

</bugzilla>