<?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>132115</bug_id>
          
          <creation_ts>2014-04-24 01:36:20 -0700</creation_ts>
          <short_desc>WebKit2 View Gestures (Swipe): Discard snapshots made with a different view size/pixel density</short_desc>
          <delta_ts>2014-04-28 14:07:59 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Tim Horton">thorton</reporter>
          <assigned_to name="Tim Horton">thorton</assigned_to>
          <cc>andersca</cc>
    
    <cc>mitz</cc>
    
    <cc>sam</cc>
    
    <cc>simon.fraser</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1003582</commentid>
    <comment_count>0</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-04-24 01:36:20 -0700</bug_when>
    <thetext>We shouldn&apos;t even bother trying to use swipe snapshots taken at a different view size or device pixel ratio, they always look terrible.

&lt;rdar://problem/16681791&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1004330</commentid>
    <comment_count>1</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-04-26 02:52:53 -0700</bug_when>
    <thetext>*** Bug 132116 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1004331</commentid>
    <comment_count>2</comment_count>
      <attachid>230239</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-04-26 03:06:54 -0700</bug_when>
    <thetext>Created attachment 230239
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1004344</commentid>
    <comment_count>3</comment_count>
      <attachid>230244</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-04-26 10:46:51 -0700</bug_when>
    <thetext>Created attachment 230244
fix the build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1004353</commentid>
    <comment_count>4</comment_count>
      <attachid>230244</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-04-26 15:38:25 -0700</bug_when>
    <thetext>Comment on attachment 230244
fix the build

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

&gt; Source/WebKit2/UIProcess/mac/ViewSnapshotStore.mm:154
&gt;      String oldSnapshotUUID = item-&gt;snapshotUUID();
&gt; -    if (!oldSnapshotUUID.isEmpty())
&gt; -        m_snapshotMap.remove(oldSnapshotUUID);
&gt; +    if (!oldSnapshotUUID.isEmpty()) {
&gt; +        const auto&amp; oldSnapshotIter = m_snapshotMap.find(oldSnapshotUUID);
&gt; +        if (oldSnapshotIter != m_snapshotMap.end()) {
&gt; +            if (oldSnapshotIter-&gt;value.hasImage())
&gt; +                m_snapshotsWithImagesCount--;
&gt; +            m_snapshotMap.remove(oldSnapshotIter);
&gt; +        }
&gt; +    }
&gt;  

Pulled this bit out into https://bugs.webkit.org/show_bug.cgi?id=132204</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1004366</commentid>
    <comment_count>5</comment_count>
      <attachid>230250</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-04-26 19:02:27 -0700</bug_when>
    <thetext>Created attachment 230250
fix the ML build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1004367</commentid>
    <comment_count>6</comment_count>
      <attachid>230251</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-04-26 19:03:36 -0700</bug_when>
    <thetext>Created attachment 230251
pulled crash fix into another bug</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1004637</commentid>
    <comment_count>7</comment_count>
      <attachid>230251</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-04-28 10:30:17 -0700</bug_when>
    <thetext>Comment on attachment 230251
pulled crash fix into another bug

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

&gt; Source/WebKit2/ChangeLog:65
&gt; +        Fix a bug where the count of snapshots with live images was too high
&gt; +        because we were failing to decrement it when replacing a snapshot of
&gt; +        an existing item with a fresh one.

get rid of the changelog part of this too (code change moved to a different bug)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1004653</commentid>
    <comment_count>8</comment_count>
      <attachid>230251</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2014-04-28 10:48:48 -0700</bug_when>
    <thetext>Comment on attachment 230251
pulled crash fix into another bug

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

&gt; Source/WebKit2/ChangeLog:9
&gt; +        To do this, we need an accurate picture of the topContentInset, both for the Web view,

&quot;picture&quot; in the context of snapshotting is ... confusing.

&gt; Source/WebKit2/UIProcess/mac/ViewGestureController.h:137
&gt; +    CALayer *determineSnapshotLayerParent();
&gt; +    CALayer *determineLayerAdjacentToSnapshotForParent(SwipeDirection, CALayer *snapshotLayerParent);

Not sure why these aren&apos;t const.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1004728</commentid>
    <comment_count>9</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-04-28 14:07:59 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/167905</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>230239</attachid>
            <date>2014-04-26 03:06:54 -0700</date>
            <delta_ts>2014-04-26 10:46:51 -0700</delta_ts>
            <desc>patch</desc>
            <filename>tci-size-swipe.diff</filename>
            <type>text/plain</type>
            <size>22419</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCBiOTQ2YjA3Li4wNWQ4MjI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjkg
QEAKKzIwMTQtMDQtMjYgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisK
KyAgICAgICAgV2ViS2l0MiBWaWV3IEdlc3R1cmVzIChTd2lwZSk6IERpc2NhcmQgc25hcHNob3Rz
IG1hZGUgd2l0aCBhIGRpZmZlcmVudCB2aWV3IHNpemUvcGl4ZWwgZGVuc2l0eQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMyMTE1CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2Ugc2hvdWxkbid0IHRyeSB0
byB1c2Ugc25hcHNob3RzIGlmIHRoZXkgbm8gbG9uZ2VyIG1hdGNoIHRoZSBkZXN0aW5hdGlvbiB2
aWV3IHNpemUuCisgICAgICAgIFRvIGRvIHRoaXMsIHdlIG5lZWQgYW4gYWNjdXJhdGUgcGljdHVy
ZSBvZiB0aGUgdG9wQ29udGVudEluc2V0LCBib3RoIGZvciB0aGUgV2ViIHZpZXcsCisgICAgICAg
IGFuZCBmb3IgYW55IGN1c3RvbSB2aWV3cywgYmVjYXVzZSB3ZSBkb24ndCB3YW50IHRvIGluY2x1
ZGUgdGhlIGluc2V0IGFyZWEgaW4gdGhlIHNuYXBzaG90LAorICAgICAgICBhbmQgd2UgZG9uJ3Qg
d2FudCB0byByZWplY3Qgc25hcHNob3RzIHRoYXQgZGlmZmVyIGZyb20gdGhlIGN1cnJlbnQgdmll
dyBvbmx5IGJlY2F1c2UgdGhleSBoYXZlIGFuIGluc2V0IG9yIG5vdC4KKworICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tWaWV3UHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvbWFjL1dLVmlldy5tbToKKyAgICAgICAgKC1bV0tWaWV3IF90YWtlVmlld1NuYXBzaG90XSk6
CisgICAgICAgICgtW1dLVmlldyBfc2V0Q3VzdG9tU3dpcGVWaWV3c1RvcENvbnRlbnRJbnNldDpd
KToKKyAgICAgICAgQWRkIGFuZCBwbHVtYiB0aHJvdWdoIGEgdG9wQ29udGVudEluc2V0IHByb3Bl
cnR5IHRvIGFwcGx5IHRvIHRoZSBjdXN0b20gc3dpcGUgdmlld3MuCisgICAgICAgIEZvciBzaW1w
bGljaXRseSdzIHNha2UgaW4gdGhlIG11bHRpLXZpZXcgY2FzZSwgaXQgaXMgYXBwbGllZCBpbiB3
aW5kb3cgY29vcmRpbmF0ZXMsCisgICAgICAgIHNvIGNsaWVudHMgd2lsbCBoYXZlIHRvIGRvIGNv
bnZlcnNpb25zIGlmIG5lY2Vzc2FyeS4KKyAgICAgICAgRG9uJ3QgaW5jbHVkZSB0aGUgdG9wIGNv
bnRlbnQgaW5zZXQgaW4gdGhlIHNuYXBzaG90IHRoYXQgaXMgdGFrZW4uCisKKyAgICAgICAgKiBV
SVByb2Nlc3MvbWFjL1ZpZXdHZXN0dXJlQ29udHJvbGxlci5oOgorICAgICAgICAoV2ViS2l0OjpW
aWV3R2VzdHVyZUNvbnRyb2xsZXI6OnNldEN1c3RvbVN3aXBlVmlld3NUb3BDb250ZW50SW5zZXQp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvVmlld0dlc3R1cmVDb250cm9sbGVyTWFjLm1tOgor
ICAgICAgICAoV2ViS2l0OjpWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OlZpZXdHZXN0dXJlQ29udHJv
bGxlcik6CisgICAgICAgIChXZWJLaXQ6OlZpZXdHZXN0dXJlQ29udHJvbGxlcjo6d2luZG93UmVs
YXRpdmVCb3VuZHNGb3JDdXN0b21Td2lwZVZpZXdzKToKKyAgICAgICAgQXBwbHkgdGhlIGFmb3Jl
bWVudGlvbmVkIGN1c3RvbSBzd2lwZSB2aWV3IHRvcCBjb250ZW50IGluc2V0LgorCisgICAgICAg
IChXZWJLaXQ6OlZpZXdHZXN0dXJlQ29udHJvbGxlcjo6ZGV0ZXJtaW5lU25hcHNob3RMYXllclBh
cmVudCk6CisgICAgICAgIChXZWJLaXQ6OlZpZXdHZXN0dXJlQ29udHJvbGxlcjo6ZGV0ZXJtaW5l
TGF5ZXJBZGphY2VudFRvU25hcHNob3RGb3JQYXJlbnQpOgorICAgICAgICBGYWN0b3IgdGhlc2Ug
b3V0IG9mIGJlZ2luU3dpcGVHZXN0dXJlLgorCisgICAgICAgIChXZWJLaXQ6OlZpZXdHZXN0dXJl
Q29udHJvbGxlcjo6cmV0cmlldmVTbmFwc2hvdEZvckl0ZW0pOgorICAgICAgICBEb24ndCByZXR1
cm4gYSBzbmFwc2hvdCBpZiB0aGUgY3VycmVudCBkZXZpY2VTY2FsZUZhY3RvciBkb2Vzbid0IG1h
dGNoIHRoYXQKKyAgICAgICAgYXQgd2hpY2ggdGhlIHNuYXBzaG90IHdhcyB0YWtlbiwgb3IgaWYg
dGhlIHNpemUgb2YgdGhlIHNuYXBzaG90IGRvZXNuJ3QgbWF0Y2gKKyAgICAgICAgdGhlIHVub2Jz
Y3VyZWQgcGFydCBvZiB0aGUgc25hcHNob3QgbGF5ZXIgKHRoZSBsYXllcidzIHNpemUgc2FucyB0
b3AgY29udGVudCBpbnNldCkuCisKKyAgICAgICAgKFdlYktpdDo6bGF5ZXJHZW9tZXRyeUZsaXBw
ZWRUb1Jvb3QpOiBBZGRlZC4KKyAgICAgICAgRGV0ZXJtaW5lIHdoZXRoZXIgZ2VvbWV0cnkgZmxp
cHBpbmcgb2NjdXJzIGJldHdlZW4gYSBsYXllciBhbmQgdGhlIHJvb3Qgb2YgdGhlIHRyZWUgaXQg
aXMgaW4uCisKKyAgICAgICAgKFdlYktpdDo6Vmlld0dlc3R1cmVDb250cm9sbGVyOjphcHBseURl
YnVnZ2luZ1Byb3BlcnRpZXNUb1N3aXBlVmlld3MpOgorICAgICAgICBGYWN0b3Igb3V0IGRlYnVn
Z2luZyBsYXllciBwcm9wZXJ0aWVzLCBhbmQgYWRkIHNvbWUgYm9yZGVycyBhbmQgYmFja2dyb3Vu
ZHMgdG8gb3VyIGxheWVycy4KKyAgICAgICAgSSBzd2l0Y2hlZCB0byBpbnZlcnQgaW5zdGVhZCBv
ZiBibHVyIGJlY2F1c2UgYmx1ciBtYWtlcyB0aGUgYm9yZGVycyBoYXJkIHRvIHVzZS4KKworICAg
ICAgICAoV2ViS2l0OjpWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OmJlZ2luU3dpcGVHZXN0dXJlKToK
KyAgICAgICAgQWRkIGFuIGFkZGl0aW9uYWwgbGF5ZXIsIHRoZSBzd2lwZUxheWVyLCB3aGljaCBp
cyB0aGUgcGFyZW50IG9mIHRoZSBzd2lwZVNuYXBzaG90TGF5ZXIuCisgICAgICAgIFdlIHVzZSB0
aGlzIGxheWVyIHRvIGNvbXBlbnNhdGUgZm9yIGdlb21ldHJ5IGZsaXBwaW5nLCBzaW5jZSB3ZSBk
b24ndCBuZWNlc3NhcmlseQorICAgICAgICBrbm93IHRoZSBzdHJ1Y3R1cmUgb2YgdGhlIGxheWVy
IHRyZWUgYWhlYWQgb2YgdGltZSB3aGVuIGluc2VydGluZyBzbmFwc2hvdHMgaW50byB0aGUKKyAg
ICAgICAgY2xpZW50J3MgbGF5ZXIgdHJlZSwgaW4gdGhlIGN1c3RvbSBzd2lwZSB2aWV3IGNhc2Uu
CisgICAgICAgIFRoZSBzd2lwZSBsYXllciBpcyBhbHdheXMgdGhlIGZ1bGwgc2l6ZSBvZiB0aGUg
dmlldywgaW5jbHVkaW5nIHRvcENvbnRlbnRJbnNldCwgYW5kCisgICAgICAgIGhhcyBhIHdoaXRl
IGJhY2tncm91bmQgaW4gb3JkZXIgdG8gZmlsbCBpbiB0aGF0IHNwYWNlLiBUaGUgc25hcHNob3Qg
bGF5ZXIgaXMgdGhlIHNpemUKKyAgICAgICAgb2YgdGhlIHZpZXcgKmV4Y2x1ZGluZyogdGhlIHRv
cENvbnRlbnRJbnNldCwgd2hpY2ggc2hvdWxkIG1hdGNoIHRoZSBzaXplIG9mIHRoZSBzbmFwc2hv
dCBpbWFnZQorICAgICAgICBpdHNlbGYgKGFuZCB3ZSByZWplY3QgdGhlIGltYWdlIGFuZCBqdXN0
IHBhaW50IHdoaXRlIGlmIHRoaXMgaXMgbm90IHRoZSBjYXNlKS4KKworICAgICAgICAoV2ViS2l0
OjpWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OmhhbmRsZVN3aXBlR2VzdHVyZSk6CisgICAgICAgIChX
ZWJLaXQ6OlZpZXdHZXN0dXJlQ29udHJvbGxlcjo6cmVtb3ZlU3dpcGVTbmFwc2hvdCk6CisgICAg
ICAgIE1vdmUgYW5kIHJlbW92ZSB0aGUgbmV3IHN3aXBlTGF5ZXIuCisKKyAgICAgICAgKiBVSVBy
b2Nlc3MvbWFjL1ZpZXdTbmFwc2hvdFN0b3JlLmg6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9W
aWV3U25hcHNob3RTdG9yZS5tbToKKyAgICAgICAgKFdlYktpdDo6Vmlld1NuYXBzaG90U3RvcmU6
OnJlY29yZFNuYXBzaG90KToKKyAgICAgICAgU3RvcmUgdGhlIGRldmljZVNjYWxlRmFjdG9yIGF0
IHRoZSB0aW1lIHRoZSBzbmFwc2hvdCB3YXMgdGFrZW4uCisgICAgICAgIEZpeCBhIGJ1ZyB3aGVy
ZSB0aGUgY291bnQgb2Ygc25hcHNob3RzIHdpdGggbGl2ZSBpbWFnZXMgd2FzIHRvbyBoaWdoCisg
ICAgICAgIGJlY2F1c2Ugd2Ugd2VyZSBmYWlsaW5nIHRvIGRlY3JlbWVudCBpdCB3aGVuIHJlcGxh
Y2luZyBhIHNuYXBzaG90IG9mCisgICAgICAgIGFuIGV4aXN0aW5nIGl0ZW0gd2l0aCBhIGZyZXNo
IG9uZS4KKwogMjAxNC0wNC0yNSAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNv
bT4KIAogICAgICAgICBSRUdSRVNTSU9OIChyMTY3Nzc1KTogU2FmYXJpIGNyYXNoZXMgaW4gVmll
d1NuYXBzaG90U3RvcmU6OnBydW5lU25hcHNob3RzIGFmdGVyIGxvYWRpbmcgMjAgcGFnZXMKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tWaWV3UHJpdmF0
ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ZpZXdQcml2YXRlLmgK
aW5kZXggMmVmMWQ3ZC4uNWQ3YjQ5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1ZpZXdQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1ZpZXdQcml2YXRlLmgKQEAgLTEwNiw2ICsxMDYsOCBAQAogCiAvLyBW
aWV3cyBtdXN0IGJlIGxheWVyLWJhY2tlZCwgaGF2ZSBubyB0cmFuc2Zvcm0gYXBwbGllZCwgYmUg
aW4gYmFjay10by1mcm9udCB6LW9yZGVyLCBhbmQgdGhlIHdob2xlIHNldCBtdXN0IGJlIGEgY29u
dGlndW91cyBvcGFxdWUgcmVjdGFuZ2xlLgogLSAodm9pZClfc2V0Q3VzdG9tU3dpcGVWaWV3czoo
TlNBcnJheSAqKWN1c3RvbVN3aXBlVmlld3M7CisvLyBUaGUgdG9wIGNvbnRlbnQgaW5zZXQgaXMg
YXBwbGllZCBpbiB0aGUgd2luZG93J3MgY29vcmRpbmF0ZSBzcGFjZSwgdG8gdGhlIHVuaW9uIG9m
IHRoZSBjdXN0b20gc3dpcGUgdmlldydzIGZyYW1lcy4KKy0gKHZvaWQpX3NldEN1c3RvbVN3aXBl
Vmlld3NUb3BDb250ZW50SW5zZXQ6KGZsb2F0KXRvcENvbnRlbnRJbnNldDsKIC0gKEJPT0wpX3Ry
eVRvU3dpcGVXaXRoRXZlbnQ6KE5TRXZlbnQgKilldmVudCBpZ25vcmluZ1Bpbm5lZFN0YXRlOihC
T09MKWlnbm9yaW5nUGlubmVkU3RhdGU7CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9tYWMvV0tWaWV3Lm1tCmluZGV4IDE2MWY2NGMuLjY5ODA5NDAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcubW0KQEAgLTMwNDMsOCArMzA0MywxMyBA
QCBzdGF0aWMgdm9pZCBjcmVhdGVTYW5kYm94RXh0ZW5zaW9uc0ZvckZpbGVVcGxvYWQoTlNQYXN0
ZWJvYXJkICpwYXN0ZWJvYXJkLCBTYW5kYgogICAgIEZsb2F0UmVjdCBib3VuZHNGb3JDdXN0b21T
d2lwZVZpZXdzID0gX2RhdGEtPl9nZXN0dXJlQ29udHJvbGxlci0+d2luZG93UmVsYXRpdmVCb3Vu
ZHNGb3JDdXN0b21Td2lwZVZpZXdzKCk7CiAgICAgaWYgKCFib3VuZHNGb3JDdXN0b21Td2lwZVZp
ZXdzLmlzRW1wdHkoKSkKICAgICAgICAgd2luZG93Q2FwdHVyZVJlY3QgPSBib3VuZHNGb3JDdXN0
b21Td2lwZVZpZXdzOwotICAgIGVsc2UKLSAgICAgICAgd2luZG93Q2FwdHVyZVJlY3QgPSBbc2Vs
ZiBjb252ZXJ0UmVjdDpzZWxmLmJvdW5kcyB0b1ZpZXc6bmlsXTsKKyAgICBlbHNlIHsKKyAgICAg
ICAgTlNSZWN0IHVub2JzY3VyZWRCb3VuZHMgPSBzZWxmLmJvdW5kczsKKyAgICAgICAgZmxvYXQg
dG9wQ29udGVudEluc2V0ID0gX2RhdGEtPl9wYWdlLT50b3BDb250ZW50SW5zZXQoKTsKKyAgICAg
ICAgdW5vYnNjdXJlZEJvdW5kcy5vcmlnaW4ueSArPSB0b3BDb250ZW50SW5zZXQ7CisgICAgICAg
IHVub2JzY3VyZWRCb3VuZHMuc2l6ZS5oZWlnaHQgLT0gdG9wQ29udGVudEluc2V0OworICAgICAg
ICB3aW5kb3dDYXB0dXJlUmVjdCA9IFtzZWxmIGNvbnZlcnRSZWN0OnVub2JzY3VyZWRCb3VuZHMg
dG9WaWV3Om5pbF07CisgICAgfQogCiAgICAgTlNSZWN0IHdpbmRvd0NhcHR1cmVTY3JlZW5SZWN0
ID0gW3dpbmRvdyBjb252ZXJ0UmVjdFRvU2NyZWVuOndpbmRvd0NhcHR1cmVSZWN0XTsKICAgICBD
R1JlY3Qgd2luZG93U2NyZWVuUmVjdDsKQEAgLTM4OTMsNiArMzg5OCwxMiBAQCBzdGF0aWMgTlNT
dHJpbmcgKnBhdGhXaXRoVW5pcXVlRmlsZW5hbWVGb3JQYXRoKE5TU3RyaW5nICpwYXRoKQogICAg
IF9kYXRhLT5fZ2VzdHVyZUNvbnRyb2xsZXItPnNldEN1c3RvbVN3aXBlVmlld3Modmlld3MpOwog
fQogCistICh2b2lkKV9zZXRDdXN0b21Td2lwZVZpZXdzVG9wQ29udGVudEluc2V0OihmbG9hdCl0
b3BDb250ZW50SW5zZXQKK3sKKyAgICBbc2VsZiBfZW5zdXJlR2VzdHVyZUNvbnRyb2xsZXJdOwor
ICAgIF9kYXRhLT5fZ2VzdHVyZUNvbnRyb2xsZXItPnNldEN1c3RvbVN3aXBlVmlld3NUb3BDb250
ZW50SW5zZXQodG9wQ29udGVudEluc2V0KTsKK30KKwogLSAoQk9PTClfdHJ5VG9Td2lwZVdpdGhF
dmVudDooTlNFdmVudCAqKWV2ZW50IGlnbm9yaW5nUGlubmVkU3RhdGU6KEJPT0wpaWdub3JpbmdQ
aW5uZWRTdGF0ZQogewogICAgIGlmICghX2RhdGEtPl9hbGxvd3NCYWNrRm9yd2FyZE5hdmlnYXRp
b25HZXN0dXJlcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvVmll
d0dlc3R1cmVDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1ZpZXdH
ZXN0dXJlQ29udHJvbGxlci5oCmluZGV4IDkxMWEzMzQuLjI5MzRjMmEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvVmlld0dlc3R1cmVDb250cm9sbGVyLmgKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIuaApAQCAt
OTQsNiArOTQsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCB3aGVlbEV2ZW50V2FzTm90SGFuZGxlZEJ5
V2ViQ29yZShOU0V2ZW50ICopOwogCiAgICAgdm9pZCBzZXRDdXN0b21Td2lwZVZpZXdzKFZlY3Rv
cjxSZXRhaW5QdHI8TlNWaWV3Pj4gdmlld3MpIHsgbV9jdXN0b21Td2lwZVZpZXdzID0gc3RkOjpt
b3ZlKHZpZXdzKTsgfQorICAgIHZvaWQgc2V0Q3VzdG9tU3dpcGVWaWV3c1RvcENvbnRlbnRJbnNl
dChmbG9hdCB0b3BDb250ZW50SW5zZXQpIHsgbV9jdXN0b21Td2lwZVZpZXdzVG9wQ29udGVudElu
c2V0ID0gdG9wQ29udGVudEluc2V0OyB9CiAgICAgV2ViQ29yZTo6RmxvYXRSZWN0IHdpbmRvd1Jl
bGF0aXZlQm91bmRzRm9yQ3VzdG9tU3dpcGVWaWV3cygpIGNvbnN0OwogCiAgICAgdm9pZCBlbmRB
Y3RpdmVHZXN0dXJlKCk7CkBAIC0xMzAsNyArMTMxLDExIEBAIHByaXZhdGU6CiAgICAgdm9pZCBl
bmRTd2lwZUdlc3R1cmUoV2ViQmFja0ZvcndhcmRMaXN0SXRlbSogdGFyZ2V0SXRlbSwgYm9vbCBj
YW5jZWxsZWQpOwogICAgIGJvb2wgZGVsdGFJc1N1ZmZpY2llbnRUb0JlZ2luU3dpcGUoTlNFdmVu
dCAqKTsKICAgICBib29sIHNjcm9sbEV2ZW50Q2FuQmVjb21lU3dpcGUoTlNFdmVudCAqLCBTd2lw
ZURpcmVjdGlvbiYpOwotICAgIFdlYkNvcmU6OklPU3VyZmFjZSogcmV0cmlldmVTbmFwc2hvdEZv
ckl0ZW0oV2ViQmFja0ZvcndhcmRMaXN0SXRlbSopOworICAgIFdlYkNvcmU6OklPU3VyZmFjZSog
cmV0cmlldmVTbmFwc2hvdEZvckl0ZW0oV2ViQmFja0ZvcndhcmRMaXN0SXRlbSosIFdlYkNvcmU6
OkZsb2F0U2l6ZSBzd2lwZUxheWVyU2l6ZSwgZmxvYXQgdG9wQ29udGVudEluc2V0KTsKKworICAg
IENBTGF5ZXIgKmRldGVybWluZVNuYXBzaG90TGF5ZXJQYXJlbnQoKTsKKyAgICBDQUxheWVyICpk
ZXRlcm1pbmVMYXllckFkamFjZW50VG9TbmFwc2hvdEZvclBhcmVudChTd2lwZURpcmVjdGlvbiwg
Q0FMYXllciAqc25hcHNob3RMYXllclBhcmVudCk7CisgICAgdm9pZCBhcHBseURlYnVnZ2luZ1By
b3BlcnRpZXNUb1N3aXBlVmlld3MoKTsKICNlbmRpZgogICAgIAogICAgIFdlYlBhZ2VQcm94eSYg
bV93ZWJQYWdlUHJveHk7CkBAIC0xNTUsMTEgKzE2MCwxMyBAQCBwcml2YXRlOgogICAgIGJvb2wg
bV9mcmFtZUhhbmRsZXNNYWduaWZpY2F0aW9uR2VzdHVyZTsKIAogICAgIFJldGFpblB0cjxXS1N3
aXBlQ2FuY2VsbGF0aW9uVHJhY2tlcj4gbV9zd2lwZUNhbmNlbGxhdGlvblRyYWNrZXI7CisgICAg
UmV0YWluUHRyPENBTGF5ZXI+IG1fc3dpcGVMYXllcjsKICAgICBSZXRhaW5QdHI8Q0FMYXllcj4g
bV9zd2lwZVNuYXBzaG90TGF5ZXI7CiAgICAgVmVjdG9yPFJldGFpblB0cjxDQUxheWVyPj4gbV9j
dXJyZW50U3dpcGVMaXZlTGF5ZXJzOwogCiAgICAgU3dpcGVUcmFuc2l0aW9uU3R5bGUgbV9zd2lw
ZVRyYW5zaXRpb25TdHlsZTsKICAgICBWZWN0b3I8UmV0YWluUHRyPE5TVmlldz4+IG1fY3VzdG9t
U3dpcGVWaWV3czsKKyAgICBmbG9hdCBtX2N1c3RvbVN3aXBlVmlld3NUb3BDb250ZW50SW5zZXQ7
CiAgICAgV2ViQ29yZTo6RmxvYXRSZWN0IG1fY3VycmVudFN3aXBlQ3VzdG9tVmlld0JvdW5kczsK
IAogICAgIC8vIElmIHdlIG5lZWQgdG8gd2FpdCBmb3IgY29udGVudCB0byBkZWNpZGUgaWYgaXQg
aXMgZ29pbmcgdG8gY29uc3VtZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L21hYy9WaWV3R2VzdHVyZUNvbnRyb2xsZXJNYWMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvbWFjL1ZpZXdHZXN0dXJlQ29udHJvbGxlck1hYy5tbQppbmRleCBiZGZmYWU2Li5iZTQxMDE5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1ZpZXdHZXN0dXJlQ29u
dHJvbGxlck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1ZpZXdHZXN0
dXJlQ29udHJvbGxlck1hYy5tbQpAQCAtMTAyLDYgKzEwMiw3IEBAIFZpZXdHZXN0dXJlQ29udHJv
bGxlcjo6Vmlld0dlc3R1cmVDb250cm9sbGVyKFdlYlBhZ2VQcm94eSYgd2ViUGFnZVByb3h5KQog
ICAgICwgbV92aXNpYmxlQ29udGVudFJlY3RJc1ZhbGlkKGZhbHNlKQogICAgICwgbV9mcmFtZUhh
bmRsZXNNYWduaWZpY2F0aW9uR2VzdHVyZShmYWxzZSkKICAgICAsIG1fc3dpcGVUcmFuc2l0aW9u
U3R5bGUoU3dpcGVUcmFuc2l0aW9uU3R5bGU6Ok92ZXJsYXApCisgICAgLCBtX2N1c3RvbVN3aXBl
Vmlld3NUb3BDb250ZW50SW5zZXQoMCkKICAgICAsIG1fcGVuZGluZ1N3aXBlUmVhc29uKFBlbmRp
bmdTd2lwZVJlYXNvbjo6Tm9uZSkKICAgICAsIG1fc2hvdWxkSWdub3JlUGlubmVkU3RhdGUoZmFs
c2UpCiB7CkBAIC0zOTcsNiArMzk4LDcgQEAgRmxvYXRSZWN0IFZpZXdHZXN0dXJlQ29udHJvbGxl
cjo6d2luZG93UmVsYXRpdmVCb3VuZHNGb3JDdXN0b21Td2lwZVZpZXdzKCkgY29uc3QKICAgICBG
bG9hdFJlY3Qgc3dpcGVBcmVhOwogICAgIGZvciAoY29uc3QgYXV0byYgdmlldyA6IG1fY3VzdG9t
U3dpcGVWaWV3cykKICAgICAgICAgc3dpcGVBcmVhLnVuaXRlKFt2aWV3IGNvbnZlcnRSZWN0Olt2
aWV3IGJvdW5kc10gdG9WaWV3Om5pbF0pOworICAgIHN3aXBlQXJlYS5zZXRIZWlnaHQoc3dpcGVB
cmVhLmhlaWdodCgpIC0gbV9jdXN0b21Td2lwZVZpZXdzVG9wQ29udGVudEluc2V0KTsKICAgICBy
ZXR1cm4gc3dpcGVBcmVhOwogfQogCkBAIC00MjYsNyArNDI4LDMwIEBAIHN0YXRpYyBDQUxheWVy
ICpsZWFzdENvbW1vbkFuY2VzdG9yTGF5ZXIoVmVjdG9yPFJldGFpblB0cjxDQUxheWVyPj4mIGxh
eWVycykKICAgICByZXR1cm4gbGl2ZUxheWVyUGF0aHNGcm9tUm9vdFswXVtzaG9ydGVzdFBhdGhM
ZW5ndGhdOwogfQogCi1JT1N1cmZhY2UqIFZpZXdHZXN0dXJlQ29udHJvbGxlcjo6cmV0cmlldmVT
bmFwc2hvdEZvckl0ZW0oV2ViQmFja0ZvcndhcmRMaXN0SXRlbSogdGFyZ2V0SXRlbSkKK0NBTGF5
ZXIgKlZpZXdHZXN0dXJlQ29udHJvbGxlcjo6ZGV0ZXJtaW5lU25hcHNob3RMYXllclBhcmVudCgp
Cit7CisgICAgaWYgKG1fY3VycmVudFN3aXBlTGl2ZUxheWVycy5zaXplKCkgPT0gMSkKKyAgICAg
ICAgcmV0dXJuIFttX2N1cnJlbnRTd2lwZUxpdmVMYXllcnNbMF0gc3VwZXJsYXllcl07CisKKyAg
ICAvLyBXZSBpbnNlcnQgb3VyIHNuYXBzaG90IGludG8gdGhlIGZpcnN0IHNoYXJlZCBzdXBlcmxh
eWVyIG9mIHRoZSBjdXN0b20gdmlld3MnIGxheWVyLCBhYm92ZSB0aGUgZnJvbnRtb3N0IG9yIGJl
bG93IHRoZSBib3R0b21tb3N0IGxheWVyLgorICAgIHJldHVybiBsZWFzdENvbW1vbkFuY2VzdG9y
TGF5ZXIobV9jdXJyZW50U3dpcGVMaXZlTGF5ZXJzKTsKK30KKworQ0FMYXllciAqVmlld0dlc3R1
cmVDb250cm9sbGVyOjpkZXRlcm1pbmVMYXllckFkamFjZW50VG9TbmFwc2hvdEZvclBhcmVudChT
d2lwZURpcmVjdGlvbiBkaXJlY3Rpb24sIENBTGF5ZXIgKnNuYXBzaG90TGF5ZXJQYXJlbnQpCit7
CisgICAgLy8gSWYgd2UgaGF2ZSBjdXN0b20gc3dpcGluZyB2aWV3cywgd2UgYXNzdW1lIHRoYXQg
dGhlIHZpZXdzIHdlcmUgcGFzc2VkIHRvIHVzIGluIGJhY2stdG8tZnJvbnQgei1vcmRlci4KKyAg
ICBDQUxheWVyICpsYXllckFkamFjZW50VG9TbmFwc2hvdCA9IGRpcmVjdGlvbiA9PSBTd2lwZURp
cmVjdGlvbjo6TGVmdCA/IG1fY3VycmVudFN3aXBlTGl2ZUxheWVycy5maXJzdCgpLmdldCgpIDog
bV9jdXJyZW50U3dpcGVMaXZlTGF5ZXJzLmxhc3QoKS5nZXQoKTsKKworICAgIGlmIChtX2N1cnJl
bnRTd2lwZUxpdmVMYXllcnMuc2l6ZSgpID09IDEpCisgICAgICAgIHJldHVybiBsYXllckFkamFj
ZW50VG9TbmFwc2hvdDsKKworICAgIC8vIElmIHRoZSBsYXllcnMgYXJlIG5vdCBhbGwgc2libGlu
Z3MsIGZpbmQgdGhlIGNoaWxkIG9mIHRoZSBsYXllciB3ZSdyZSBnb2luZyB0byBpbnNlcnQgdGhl
IHNuYXBzaG90IGludG8gd2hpY2ggaGFzIHRoZSBmcm9udG1vc3QvYm90dG9tbW9zdCBsYXllciBh
cyBhIGNoaWxkLgorICAgIHdoaWxlIChzbmFwc2hvdExheWVyUGFyZW50ICE9IGxheWVyQWRqYWNl
bnRUb1NuYXBzaG90LnN1cGVybGF5ZXIpCisgICAgICAgIGxheWVyQWRqYWNlbnRUb1NuYXBzaG90
ID0gbGF5ZXJBZGphY2VudFRvU25hcHNob3Quc3VwZXJsYXllcjsKKyAgICByZXR1cm4gbGF5ZXJB
ZGphY2VudFRvU25hcHNob3Q7Cit9CisKK0lPU3VyZmFjZSogVmlld0dlc3R1cmVDb250cm9sbGVy
OjpyZXRyaWV2ZVNuYXBzaG90Rm9ySXRlbShXZWJCYWNrRm9yd2FyZExpc3RJdGVtKiB0YXJnZXRJ
dGVtLCBGbG9hdFNpemUgc3dpcGVMYXllclNpemUsIGZsb2F0IHRvcENvbnRlbnRJbnNldCkKIHsK
ICAgICBWaWV3U25hcHNob3RTdG9yZTo6U25hcHNob3Qgc25hcHNob3Q7CiAgICAgaWYgKCFWaWV3
U25hcHNob3RTdG9yZTo6c2hhcmVkKCkuZ2V0U25hcHNob3QodGFyZ2V0SXRlbSwgc25hcHNob3Qp
KQpAQCAtNDM1LDEyICs0NjAsNDYgQEAgSU9TdXJmYWNlKiBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6
OnJldHJpZXZlU25hcHNob3RGb3JJdGVtKFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0KICAgICBpZiAo
IXNuYXBzaG90LnN1cmZhY2UpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCisgICAgZmxvYXQg
ZGV2aWNlU2NhbGVGYWN0b3IgPSBtX3dlYlBhZ2VQcm94eS5kZXZpY2VTY2FsZUZhY3RvcigpOwor
ICAgIGlmIChzbmFwc2hvdC5kZXZpY2VTY2FsZUZhY3RvciAhPSBkZXZpY2VTY2FsZUZhY3RvcikK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBGbG9hdFNpemUgdW5vYnNjdXJlZFN3aXBl
TGF5ZXJTaXplSW5EZXZpY2VDb29yZGluYXRlcyA9IHN3aXBlTGF5ZXJTaXplIC0gRmxvYXRTaXpl
KDAsIHRvcENvbnRlbnRJbnNldCk7CisgICAgdW5vYnNjdXJlZFN3aXBlTGF5ZXJTaXplSW5EZXZp
Y2VDb29yZGluYXRlcy5zY2FsZShkZXZpY2VTY2FsZUZhY3Rvcik7CisgICAgaWYgKHNuYXBzaG90
LnN1cmZhY2UtPnNpemUoKSAhPSB1bm9ic2N1cmVkU3dpcGVMYXllclNpemVJbkRldmljZUNvb3Jk
aW5hdGVzKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKwogICAgIGlmIChzbmFwc2hvdC5zdXJm
YWNlLT5zZXRJc1ZvbGF0aWxlKGZhbHNlKSAhPSBJT1N1cmZhY2U6OlN1cmZhY2VTdGF0ZTo6VmFs
aWQpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgcmV0dXJuIHNuYXBzaG90LnN1cmZh
Y2UuZ2V0KCk7CiB9CiAKK3N0YXRpYyBib29sIGxheWVyR2VvbWV0cnlGbGlwcGVkVG9Sb290KENB
TGF5ZXIgKmxheWVyKQoreworICAgIGJvb2wgZmxpcHBlZCA9IGZhbHNlOworICAgIENBTGF5ZXIg
KnBhcmVudCA9IGxheWVyOworICAgIHdoaWxlIChwYXJlbnQpIHsKKyAgICAgICAgaWYgKHBhcmVu
dC5pc0dlb21ldHJ5RmxpcHBlZCkKKyAgICAgICAgICAgIGZsaXBwZWQgPSAhZmxpcHBlZDsKKyAg
ICAgICAgcGFyZW50ID0gcGFyZW50LnN1cGVybGF5ZXI7CisgICAgfQorICAgIHJldHVybiBmbGlw
cGVkOworfQorCit2b2lkIFZpZXdHZXN0dXJlQ29udHJvbGxlcjo6YXBwbHlEZWJ1Z2dpbmdQcm9w
ZXJ0aWVzVG9Td2lwZVZpZXdzKCkKK3sKKyAgICBDQUZpbHRlciogZmlsdGVyID0gW0NBRmlsdGVy
IGZpbHRlcldpdGhUeXBlOmtDQUZpbHRlckNvbG9ySW52ZXJ0XTsKKyAgICBbbV9zd2lwZUxheWVy
IHNldEZpbHRlcnM6QFsgZmlsdGVyIF1dOworICAgIFttX3N3aXBlTGF5ZXIgc2V0QmFja2dyb3Vu
ZENvbG9yOltOU0NvbG9yIGJsdWVDb2xvcl0uQ0dDb2xvcl07CisgICAgW21fc3dpcGVMYXllciBz
ZXRCb3JkZXJDb2xvcjpbTlNDb2xvciB5ZWxsb3dDb2xvcl0uQ0dDb2xvcl07CisgICAgW21fc3dp
cGVMYXllciBzZXRCb3JkZXJXaWR0aDo0XTsKKworICAgIFttX3N3aXBlU25hcHNob3RMYXllciBz
ZXRCYWNrZ3JvdW5kQ29sb3I6W05TQ29sb3IgZ3JlZW5Db2xvcl0uQ0dDb2xvcl07CisgICAgW21f
c3dpcGVTbmFwc2hvdExheWVyIHNldEJvcmRlckNvbG9yOltOU0NvbG9yIHJlZENvbG9yXS5DR0Nv
bG9yXTsKKyAgICBbbV9zd2lwZVNuYXBzaG90TGF5ZXIgc2V0Qm9yZGVyV2lkdGg6Ml07Cit9CisK
IHZvaWQgVmlld0dlc3R1cmVDb250cm9sbGVyOjpiZWdpblN3aXBlR2VzdHVyZShXZWJCYWNrRm9y
d2FyZExpc3RJdGVtKiB0YXJnZXRJdGVtLCBTd2lwZURpcmVjdGlvbiBkaXJlY3Rpb24pCiB7CiAg
ICAgQVNTRVJUKG1fY3VycmVudFN3aXBlTGl2ZUxheWVycy5pc0VtcHR5KCkpOwpAQCAtNDQ5LDIx
ICs1MDgsMTYgQEAgdm9pZCBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OmJlZ2luU3dpcGVHZXN0dXJl
KFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0qIHRhcmdldEl0ZW0KIAogICAgIENBTGF5ZXIgKnJvb3RD
b250ZW50TGF5ZXIgPSBtX3dlYlBhZ2VQcm94eS5hY2NlbGVyYXRlZENvbXBvc2l0aW5nUm9vdExh
eWVyKCk7CiAKKyAgICBtX3N3aXBlTGF5ZXIgPSBhZG9wdE5TKFtbQ0FMYXllciBhbGxvY10gaW5p
dF0pOwogICAgIG1fc3dpcGVTbmFwc2hvdExheWVyID0gYWRvcHROUyhbW0NBTGF5ZXIgYWxsb2Nd
IGluaXRdKTsKLSAgICBbbV9zd2lwZVNuYXBzaG90TGF5ZXIgc2V0QmFja2dyb3VuZENvbG9yOkNH
Q29sb3JHZXRDb25zdGFudENvbG9yKGtDR0NvbG9yV2hpdGUpXTsKLQotICAgIElPU3VyZmFjZSog
c25hcHNob3QgPSByZXRyaWV2ZVNuYXBzaG90Rm9ySXRlbSh0YXJnZXRJdGVtKTsKLQotICAgIGlm
IChzbmFwc2hvdCkgewotICAgICAgICBtX2N1cnJlbnRTd2lwZVNuYXBzaG90U3VyZmFjZSA9IHNu
YXBzaG90OwotICAgICAgICBbbV9zd2lwZVNuYXBzaG90TGF5ZXIgc2V0Q29udGVudHM6KGlkKXNu
YXBzaG90LT5zdXJmYWNlKCldOwotICAgIH0KLQogICAgIG1fY3VycmVudFN3aXBlQ3VzdG9tVmll
d0JvdW5kcyA9IHdpbmRvd1JlbGF0aXZlQm91bmRzRm9yQ3VzdG9tU3dpcGVWaWV3cygpOwogCiAg
ICAgRmxvYXRSZWN0IHN3aXBlQXJlYTsKKyAgICBmbG9hdCB0b3BDb250ZW50SW5zZXQgPSAwOwog
ICAgIGlmICghbV9jdXN0b21Td2lwZVZpZXdzLmlzRW1wdHkoKSkgeworICAgICAgICB0b3BDb250
ZW50SW5zZXQgPSBtX2N1c3RvbVN3aXBlVmlld3NUb3BDb250ZW50SW5zZXQ7CiAgICAgICAgIHN3
aXBlQXJlYSA9IG1fY3VycmVudFN3aXBlQ3VzdG9tVmlld0JvdW5kczsKKyAgICAgICAgc3dpcGVB
cmVhLmV4cGFuZCgwLCB0b3BDb250ZW50SW5zZXQpOwogCiAgICAgICAgIGZvciAoY29uc3QgYXV0
byYgdmlldyA6IG1fY3VzdG9tU3dpcGVWaWV3cykgewogICAgICAgICAgICAgQ0FMYXllciAqbGF5
ZXIgPSBbdmlldyBsYXllcl07CkBAIC00NzEsMzMgKzUyNSw1MSBAQCB2b2lkIFZpZXdHZXN0dXJl
Q29udHJvbGxlcjo6YmVnaW5Td2lwZUdlc3R1cmUoV2ViQmFja0ZvcndhcmRMaXN0SXRlbSogdGFy
Z2V0SXRlbQogICAgICAgICAgICAgbV9jdXJyZW50U3dpcGVMaXZlTGF5ZXJzLmFwcGVuZChsYXll
cik7CiAgICAgICAgIH0KICAgICB9IGVsc2UgewotICAgICAgICBzd2lwZUFyZWEgPSBGbG9hdFJl
Y3QoRmxvYXRQb2ludCgpLCBtX3dlYlBhZ2VQcm94eS5kcmF3aW5nQXJlYSgpLT5zaXplKCkpOwor
ICAgICAgICBzd2lwZUFyZWEgPSBGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBtX3dlYlBhZ2VQcm94
eS52aWV3U2l6ZSgpKTsKKyAgICAgICAgdG9wQ29udGVudEluc2V0ID0gbV93ZWJQYWdlUHJveHku
dG9wQ29udGVudEluc2V0KCk7CiAgICAgICAgIG1fY3VycmVudFN3aXBlTGl2ZUxheWVycy5hcHBl
bmQocm9vdENvbnRlbnRMYXllcik7CiAgICAgfQogCisgICAgQ0FMYXllciAqc25hcHNob3RMYXll
clBhcmVudCA9IGRldGVybWluZVNuYXBzaG90TGF5ZXJQYXJlbnQoKTsKKyAgICBib29sIGdlb21l
dHJ5SXNGbGlwcGVkVG9Sb290ID0gbGF5ZXJHZW9tZXRyeUZsaXBwZWRUb1Jvb3Qoc25hcHNob3RM
YXllclBhcmVudCk7CisKKyAgICBJT1N1cmZhY2UqIHNuYXBzaG90ID0gcmV0cmlldmVTbmFwc2hv
dEZvckl0ZW0odGFyZ2V0SXRlbSwgc3dpcGVBcmVhLnNpemUoKSwgdG9wQ29udGVudEluc2V0KTsK
KyAgICBpZiAoc25hcHNob3QpIHsKKyAgICAgICAgbV9jdXJyZW50U3dpcGVTbmFwc2hvdFN1cmZh
Y2UgPSBzbmFwc2hvdDsKKyAgICAgICAgW21fc3dpcGVTbmFwc2hvdExheWVyIHNldENvbnRlbnRz
OihpZClzbmFwc2hvdC0+c3VyZmFjZSgpXTsKKyAgICB9CisKKyAgICBbbV9zd2lwZUxheWVyIHNl
dEJhY2tncm91bmRDb2xvcjpDR0NvbG9yR2V0Q29uc3RhbnRDb2xvcihrQ0dDb2xvcldoaXRlKV07
CisgICAgW21fc3dpcGVMYXllciBzZXRBbmNob3JQb2ludDpDR1BvaW50WmVyb107CisgICAgW21f
c3dpcGVMYXllciBzZXRGcmFtZTpzd2lwZUFyZWFdOworICAgIFttX3N3aXBlTGF5ZXIgc2V0TmFt
ZTpAIkdlc3R1cmUgU3dpcGUgUm9vdCBMYXllciJdOworICAgIFttX3N3aXBlTGF5ZXIgc2V0R2Vv
bWV0cnlGbGlwcGVkOmdlb21ldHJ5SXNGbGlwcGVkVG9Sb290XTsKKyAgICBbbV9zd2lwZUxheWVy
IHdlYl9kaXNhYmxlQWxsQWN0aW9uc107CisKICAgICBbbV9zd2lwZVNuYXBzaG90TGF5ZXIgc2V0
Q29udGVudHNHcmF2aXR5OmtDQUdyYXZpdHlUb3BMZWZ0XTsKICAgICBbbV9zd2lwZVNuYXBzaG90
TGF5ZXIgc2V0Q29udGVudHNTY2FsZTptX3dlYlBhZ2VQcm94eS5kZXZpY2VTY2FsZUZhY3Rvcigp
XTsKICAgICBbbV9zd2lwZVNuYXBzaG90TGF5ZXIgc2V0QW5jaG9yUG9pbnQ6Q0dQb2ludFplcm9d
OwotICAgIFttX3N3aXBlU25hcHNob3RMYXllciBzZXRGcmFtZTpzd2lwZUFyZWFdOworICAgIFtt
X3N3aXBlU25hcHNob3RMYXllciBzZXRGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIHN3aXBlQXJlYS53
aWR0aCgpLCBzd2lwZUFyZWEuaGVpZ2h0KCkgLSB0b3BDb250ZW50SW5zZXQpXTsKICAgICBbbV9z
d2lwZVNuYXBzaG90TGF5ZXIgc2V0TmFtZTpAIkdlc3R1cmUgU3dpcGUgU25hcHNob3QgTGF5ZXIi
XTsKICAgICBbbV9zd2lwZVNuYXBzaG90TGF5ZXIgd2ViX2Rpc2FibGVBbGxBY3Rpb25zXTsKIAot
ICAgIGlmIChtX3dlYlBhZ2VQcm94eS5wcmVmZXJlbmNlcygpLnZpZXdHZXN0dXJlRGVidWdnaW5n
RW5hYmxlZCgpKSB7Ci0gICAgICAgIENBRmlsdGVyKiBmaWx0ZXIgPSBbQ0FGaWx0ZXIgZmlsdGVy
V2l0aFR5cGU6a0NBRmlsdGVyR2F1c3NpYW5CbHVyXTsKLSAgICAgICAgW2ZpbHRlciBzZXRWYWx1
ZTpbTlNOdW1iZXIgbnVtYmVyV2l0aEZsb2F0OjNdIGZvcktleTpAImlucHV0UmFkaXVzIl07Ci0g
ICAgICAgIFttX3N3aXBlU25hcHNob3RMYXllciBzZXRGaWx0ZXJzOkBbZmlsdGVyXV07Ci0gICAg
fQorICAgIFttX3N3aXBlTGF5ZXIgYWRkU3VibGF5ZXI6bV9zd2lwZVNuYXBzaG90TGF5ZXIuZ2V0
KCldOworCisgICAgaWYgKG1fd2ViUGFnZVByb3h5LnByZWZlcmVuY2VzKCkudmlld0dlc3R1cmVE
ZWJ1Z2dpbmdFbmFibGVkKCkpCisgICAgICAgIGFwcGx5RGVidWdnaW5nUHJvcGVydGllc1RvU3dp
cGVWaWV3cygpOwogCiAgICAgLy8gV2UgZG9uJ3Qga25vdyBlbm91Z2ggYWJvdXQgdGhlIGN1c3Rv
bSB2aWV3cycgaGllcmFyY2h5IHRvIGFwcGx5IGEgc2hhZG93LgogICAgIGlmIChtX3N3aXBlVHJh
bnNpdGlvblN0eWxlID09IFN3aXBlVHJhbnNpdGlvblN0eWxlOjpPdmVybGFwICYmIG1fY3VzdG9t
U3dpcGVWaWV3cy5pc0VtcHR5KCkpIHsKLSAgICAgICAgUmV0YWluUHRyPENHUGF0aFJlZj4gc2hh
ZG93UGF0aCA9IGFkb3B0Q0YoQ0dQYXRoQ3JlYXRlV2l0aFJlY3QoW21fc3dpcGVTbmFwc2hvdExh
eWVyIGJvdW5kc10sIDApKTsKLQogICAgICAgICBpZiAoZGlyZWN0aW9uID09IFN3aXBlRGlyZWN0
aW9uOjpMZWZ0KSB7CisgICAgICAgICAgICBmbG9hdCB0b3BDb250ZW50SW5zZXQgPSBtX3dlYlBh
Z2VQcm94eS50b3BDb250ZW50SW5zZXQoKTsKKyAgICAgICAgICAgIEZsb2F0UmVjdCBzaGFkb3dS
ZWN0KEZsb2F0UG9pbnQoMCwgdG9wQ29udGVudEluc2V0KSwgbV93ZWJQYWdlUHJveHkudmlld1Np
emUoKSAtIEZsb2F0U2l6ZSgwLCB0b3BDb250ZW50SW5zZXQpKTsKKyAgICAgICAgICAgIFJldGFp
blB0cjxDR1BhdGhSZWY+IHNoYWRvd1BhdGggPSBhZG9wdENGKENHUGF0aENyZWF0ZVdpdGhSZWN0
KHNoYWRvd1JlY3QsIDApKTsKICAgICAgICAgICAgIFtyb290Q29udGVudExheWVyIHNldFNoYWRv
d0NvbG9yOkNHQ29sb3JHZXRDb25zdGFudENvbG9yKGtDR0NvbG9yQmxhY2spXTsKICAgICAgICAg
ICAgIFtyb290Q29udGVudExheWVyIHNldFNoYWRvd09wYWNpdHk6c3dpcGVPdmVybGF5U2hhZG93
T3BhY2l0eV07CiAgICAgICAgICAgICBbcm9vdENvbnRlbnRMYXllciBzZXRTaGFkb3dSYWRpdXM6
c3dpcGVPdmVybGF5U2hhZG93UmFkaXVzXTsKICAgICAgICAgICAgIFtyb290Q29udGVudExheWVy
IHNldFNoYWRvd1BhdGg6c2hhZG93UGF0aC5nZXQoKV07CiAgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICBSZXRhaW5QdHI8Q0dQYXRoUmVmPiBzaGFkb3dQYXRoID0gYWRvcHRDRihDR1BhdGhD
cmVhdGVXaXRoUmVjdChbbV9zd2lwZVNuYXBzaG90TGF5ZXIgYm91bmRzXSwgMCkpOwogICAgICAg
ICAgICAgW21fc3dpcGVTbmFwc2hvdExheWVyIHNldFNoYWRvd0NvbG9yOkNHQ29sb3JHZXRDb25z
dGFudENvbG9yKGtDR0NvbG9yQmxhY2spXTsKICAgICAgICAgICAgIFttX3N3aXBlU25hcHNob3RM
YXllciBzZXRTaGFkb3dPcGFjaXR5OnN3aXBlT3ZlcmxheVNoYWRvd09wYWNpdHldOwogICAgICAg
ICAgICAgW21fc3dpcGVTbmFwc2hvdExheWVyIHNldFNoYWRvd1JhZGl1czpzd2lwZU92ZXJsYXlT
aGFkb3dSYWRpdXNdOwpAQCAtNTA1LDI1ICs1NzcsMTEgQEAgdm9pZCBWaWV3R2VzdHVyZUNvbnRy
b2xsZXI6OmJlZ2luU3dpcGVHZXN0dXJlKFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0qIHRhcmdldEl0
ZW0KICAgICAgICAgfQogICAgIH0KIAotICAgIC8vIElmIHdlIGhhdmUgY3VzdG9tIHN3aXBpbmcg
dmlld3MsIHdlIGFzc3VtZSB0aGF0IHRoZSB2aWV3cyB3ZXJlIHBhc3NlZCB0byB1cyBpbiBiYWNr
LXRvLWZyb250IHotb3JkZXIuCi0gICAgQ0FMYXllciAqbGF5ZXJBZGphY2VudFRvU25hcHNob3Qg
PSBkaXJlY3Rpb24gPT0gU3dpcGVEaXJlY3Rpb246OkxlZnQgPyBtX2N1cnJlbnRTd2lwZUxpdmVM
YXllcnMuZmlyc3QoKS5nZXQoKSA6IG1fY3VycmVudFN3aXBlTGl2ZUxheWVycy5sYXN0KCkuZ2V0
KCk7Ci0gICAgQ0FMYXllciAqc25hcHNob3RMYXllclBhcmVudDsKLQotICAgIGlmIChtX2N1cnJl
bnRTd2lwZUxpdmVMYXllcnMuc2l6ZSgpID09IDEpCi0gICAgICAgIHNuYXBzaG90TGF5ZXJQYXJl
bnQgPSBbbV9jdXJyZW50U3dpcGVMaXZlTGF5ZXJzWzBdIHN1cGVybGF5ZXJdOwotICAgIGVsc2Ug
ewotICAgICAgICAvLyBXZSBpbnNlcnQgb3VyIHNuYXBzaG90IGludG8gdGhlIGZpcnN0IHNoYXJl
ZCBzdXBlcmxheWVyIG9mIHRoZSBjdXN0b20gdmlld3MnIGxheWVyLCBhYm92ZSB0aGUgZnJvbnRt
b3N0IG9yIGJlbG93IHRoZSBib3R0b21tb3N0IGxheWVyLgotICAgICAgICBzbmFwc2hvdExheWVy
UGFyZW50ID0gbGVhc3RDb21tb25BbmNlc3RvckxheWVyKG1fY3VycmVudFN3aXBlTGl2ZUxheWVy
cyk7Ci0KLSAgICAgICAgLy8gSWYgdGhlIGxheWVycyBhcmUgbm90IGFsbCBzaWJsaW5ncywgZmlu
ZCB0aGUgY2hpbGQgb2YgdGhlIGxheWVyIHdlJ3JlIGdvaW5nIHRvIGluc2VydCB0aGUgc25hcHNo
b3QgaW50byB3aGljaCBoYXMgdGhlIGZyb250bW9zdC9ib3R0b21tb3N0IGxheWVyIGFzIGEgY2hp
bGQuCi0gICAgICAgIHdoaWxlIChzbmFwc2hvdExheWVyUGFyZW50ICE9IGxheWVyQWRqYWNlbnRU
b1NuYXBzaG90LnN1cGVybGF5ZXIpCi0gICAgICAgICAgICBsYXllckFkamFjZW50VG9TbmFwc2hv
dCA9IGxheWVyQWRqYWNlbnRUb1NuYXBzaG90LnN1cGVybGF5ZXI7Ci0gICAgfQotCisgICAgQ0FM
YXllciAqbGF5ZXJBZGphY2VudFRvU25hcHNob3QgPSBkZXRlcm1pbmVMYXllckFkamFjZW50VG9T
bmFwc2hvdEZvclBhcmVudChkaXJlY3Rpb24sIHNuYXBzaG90TGF5ZXJQYXJlbnQpOwogICAgIGlm
IChkaXJlY3Rpb24gPT0gU3dpcGVEaXJlY3Rpb246OkxlZnQpCi0gICAgICAgIFtzbmFwc2hvdExh
eWVyUGFyZW50IGluc2VydFN1YmxheWVyOm1fc3dpcGVTbmFwc2hvdExheWVyLmdldCgpIGJlbG93
OmxheWVyQWRqYWNlbnRUb1NuYXBzaG90XTsKKyAgICAgICAgW3NuYXBzaG90TGF5ZXJQYXJlbnQg
aW5zZXJ0U3VibGF5ZXI6bV9zd2lwZUxheWVyLmdldCgpIGJlbG93OmxheWVyQWRqYWNlbnRUb1Nu
YXBzaG90XTsKICAgICBlbHNlCi0gICAgICAgIFtzbmFwc2hvdExheWVyUGFyZW50IGluc2VydFN1
YmxheWVyOm1fc3dpcGVTbmFwc2hvdExheWVyLmdldCgpIGFib3ZlOmxheWVyQWRqYWNlbnRUb1Nu
YXBzaG90XTsKKyAgICAgICAgW3NuYXBzaG90TGF5ZXJQYXJlbnQgaW5zZXJ0U3VibGF5ZXI6bV9z
d2lwZUxheWVyLmdldCgpIGFib3ZlOmxheWVyQWRqYWNlbnRUb1NuYXBzaG90XTsKIH0KIAogdm9p
ZCBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OmhhbmRsZVN3aXBlR2VzdHVyZShXZWJCYWNrRm9yd2Fy
ZExpc3RJdGVtKiB0YXJnZXRJdGVtLCBkb3VibGUgcHJvZ3Jlc3MsIFN3aXBlRGlyZWN0aW9uIGRp
cmVjdGlvbikKQEAgLTU0Myw5ICs2MDEsOSBAQCB2b2lkIFZpZXdHZXN0dXJlQ29udHJvbGxlcjo6
aGFuZGxlU3dpcGVHZXN0dXJlKFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0qIHRhcmdldEl0ZQogCiAg
ICAgaWYgKG1fc3dpcGVUcmFuc2l0aW9uU3R5bGUgPT0gU3dpcGVUcmFuc2l0aW9uU3R5bGU6Ok92
ZXJsYXApIHsKICAgICAgICAgaWYgKGRpcmVjdGlvbiA9PSBTd2lwZURpcmVjdGlvbjo6UmlnaHQp
Ci0gICAgICAgICAgICBbbV9zd2lwZVNuYXBzaG90TGF5ZXIgc2V0VHJhbnNmb3JtOkNBVHJhbnNm
b3JtM0RNYWtlVHJhbnNsYXRpb24od2lkdGggKyBzd2lwaW5nTGF5ZXJPZmZzZXQsIDAsIDApXTsK
KyAgICAgICAgICAgIFttX3N3aXBlTGF5ZXIgc2V0VHJhbnNmb3JtOkNBVHJhbnNmb3JtM0RNYWtl
VHJhbnNsYXRpb24od2lkdGggKyBzd2lwaW5nTGF5ZXJPZmZzZXQsIDAsIDApXTsKICAgICB9IGVs
c2UgaWYgKG1fc3dpcGVUcmFuc2l0aW9uU3R5bGUgPT0gU3dpcGVUcmFuc2l0aW9uU3R5bGU6OlB1
c2gpCi0gICAgICAgIFttX3N3aXBlU25hcHNob3RMYXllciBzZXRUcmFuc2Zvcm06Q0FUcmFuc2Zv
cm0zRE1ha2VUcmFuc2xhdGlvbigoZGlyZWN0aW9uID09IFN3aXBlRGlyZWN0aW9uOjpMZWZ0ID8g
LXdpZHRoIDogd2lkdGgpICsgc3dpcGluZ0xheWVyT2Zmc2V0LCAwLCAwKV07CisgICAgICAgIFtt
X3N3aXBlTGF5ZXIgc2V0VHJhbnNmb3JtOkNBVHJhbnNmb3JtM0RNYWtlVHJhbnNsYXRpb24oKGRp
cmVjdGlvbiA9PSBTd2lwZURpcmVjdGlvbjo6TGVmdCA/IC13aWR0aCA6IHdpZHRoKSArIHN3aXBp
bmdMYXllck9mZnNldCwgMCwgMCldOwogCiAgICAgZm9yIChjb25zdCBhdXRvJiBsYXllciA6IG1f
Y3VycmVudFN3aXBlTGl2ZUxheWVycykgewogICAgICAgICBpZiAobV9zd2lwZVRyYW5zaXRpb25T
dHlsZSA9PSBTd2lwZVRyYW5zaXRpb25TdHlsZTo6T3ZlcmxhcCkgewpAQCAtNjIxLDYgKzY3OSw5
IEBAIHZvaWQgVmlld0dlc3R1cmVDb250cm9sbGVyOjpyZW1vdmVTd2lwZVNuYXBzaG90KCkKICAg
ICBbbV9zd2lwZVNuYXBzaG90TGF5ZXIgcmVtb3ZlRnJvbVN1cGVybGF5ZXJdOwogICAgIG1fc3dp
cGVTbmFwc2hvdExheWVyID0gbnVsbHB0cjsKIAorICAgIFttX3N3aXBlTGF5ZXIgcmVtb3ZlRnJv
bVN1cGVybGF5ZXJdOworICAgIG1fc3dpcGVMYXllciA9IG51bGxwdHI7CisKICAgICBtX2N1cnJl
bnRTd2lwZUxpdmVMYXllcnMuY2xlYXIoKTsKIAogICAgIG1fYWN0aXZlR2VzdHVyZVR5cGUgPSBW
aWV3R2VzdHVyZVR5cGU6Ok5vbmU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvbWFjL1ZpZXdTbmFwc2hvdFN0b3JlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFj
L1ZpZXdTbmFwc2hvdFN0b3JlLmgKaW5kZXggMDUxM2Y0MS4uODA3OTYxYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9WaWV3U25hcHNob3RTdG9yZS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvVmlld1NuYXBzaG90U3RvcmUuaApAQCAtNTUsNiAr
NTUsNyBAQCBwdWJsaWM6CiAKICAgICAgICAgc3RkOjpjaHJvbm86OnN0ZWFkeV9jbG9jazo6dGlt
ZV9wb2ludCBjcmVhdGlvblRpbWU7CiAgICAgICAgIHVpbnQ2NF90IHJlbmRlclRyZWVTaXplOwor
ICAgICAgICBmbG9hdCBkZXZpY2VTY2FsZUZhY3RvcjsKIAogICAgICAgICB2b2lkIGNsZWFySW1h
Z2UoKTsKICAgICAgICAgYm9vbCBoYXNJbWFnZSgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL21hYy9WaWV3U25hcHNob3RTdG9yZS5tbSBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9tYWMvVmlld1NuYXBzaG90U3RvcmUubW0KaW5kZXggMTNhZDlhYi4uOGJl
MGM4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9WaWV3U25hcHNo
b3RTdG9yZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1ZpZXdTbmFwc2hv
dFN0b3JlLm1tCkBAIC0xNDMsMTQgKzE0MywyMSBAQCB2b2lkIFZpZXdTbmFwc2hvdFN0b3JlOjpy
ZWNvcmRTbmFwc2hvdChXZWJQYWdlUHJveHkmIHdlYlBhZ2VQcm94eSkKICAgICBwcnVuZVNuYXBz
aG90cyh3ZWJQYWdlUHJveHkpOwogCiAgICAgU3RyaW5nIG9sZFNuYXBzaG90VVVJRCA9IGl0ZW0t
PnNuYXBzaG90VVVJRCgpOwotICAgIGlmICghb2xkU25hcHNob3RVVUlELmlzRW1wdHkoKSkKLSAg
ICAgICAgbV9zbmFwc2hvdE1hcC5yZW1vdmUob2xkU25hcHNob3RVVUlEKTsKKyAgICBpZiAoIW9s
ZFNuYXBzaG90VVVJRC5pc0VtcHR5KCkpIHsKKyAgICAgICAgY29uc3QgYXV0byYgb2xkU25hcHNo
b3RJdGVyID0gbV9zbmFwc2hvdE1hcC5maW5kKG9sZFNuYXBzaG90VVVJRCk7CisgICAgICAgIGlm
IChvbGRTbmFwc2hvdEl0ZXIgIT0gbV9zbmFwc2hvdE1hcC5lbmQoKSkgeworICAgICAgICAgICAg
aWYgKG9sZFNuYXBzaG90SXRlci0+dmFsdWUuaGFzSW1hZ2UoKSkKKyAgICAgICAgICAgICAgICBt
X3NuYXBzaG90c1dpdGhJbWFnZXNDb3VudC0tOworICAgICAgICAgICAgbV9zbmFwc2hvdE1hcC5y
ZW1vdmUob2xkU25hcHNob3RJdGVyKTsKKyAgICAgICAgfQorICAgIH0KIAogICAgIGl0ZW0tPnNl
dFNuYXBzaG90VVVJRChjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKCkpOwogICAgIAogICAgIFNu
YXBzaG90IHNuYXBzaG90OwogICAgIHNuYXBzaG90LmNyZWF0aW9uVGltZSA9IHN0ZDo6Y2hyb25v
OjpzdGVhZHlfY2xvY2s6Om5vdygpOwogICAgIHNuYXBzaG90LnJlbmRlclRyZWVTaXplID0gd2Vi
UGFnZVByb3h5LnJlbmRlclRyZWVTaXplKCk7CisgICAgc25hcHNob3QuZGV2aWNlU2NhbGVGYWN0
b3IgPSB3ZWJQYWdlUHJveHkuZGV2aWNlU2NhbGVGYWN0b3IoKTsKIAogI2lmIFVTRShJT1NVUkZB
Q0UpCiAgICAgc25hcHNob3Quc3VyZmFjZSA9IGNyZWF0ZUlPU3VyZmFjZUZyb21JbWFnZShzbmFw
c2hvdEltYWdlLmdldCgpKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>230244</attachid>
            <date>2014-04-26 10:46:51 -0700</date>
            <delta_ts>2014-04-26 19:02:27 -0700</delta_ts>
            <desc>fix the build</desc>
            <filename>tci-size-swipe.diff</filename>
            <type>text/plain</type>
            <size>22618</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCBiOTQ2YjA3Li4wNWQ4MjI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjkg
QEAKKzIwMTQtMDQtMjYgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisK
KyAgICAgICAgV2ViS2l0MiBWaWV3IEdlc3R1cmVzIChTd2lwZSk6IERpc2NhcmQgc25hcHNob3Rz
IG1hZGUgd2l0aCBhIGRpZmZlcmVudCB2aWV3IHNpemUvcGl4ZWwgZGVuc2l0eQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMyMTE1CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2Ugc2hvdWxkbid0IHRyeSB0
byB1c2Ugc25hcHNob3RzIGlmIHRoZXkgbm8gbG9uZ2VyIG1hdGNoIHRoZSBkZXN0aW5hdGlvbiB2
aWV3IHNpemUuCisgICAgICAgIFRvIGRvIHRoaXMsIHdlIG5lZWQgYW4gYWNjdXJhdGUgcGljdHVy
ZSBvZiB0aGUgdG9wQ29udGVudEluc2V0LCBib3RoIGZvciB0aGUgV2ViIHZpZXcsCisgICAgICAg
IGFuZCBmb3IgYW55IGN1c3RvbSB2aWV3cywgYmVjYXVzZSB3ZSBkb24ndCB3YW50IHRvIGluY2x1
ZGUgdGhlIGluc2V0IGFyZWEgaW4gdGhlIHNuYXBzaG90LAorICAgICAgICBhbmQgd2UgZG9uJ3Qg
d2FudCB0byByZWplY3Qgc25hcHNob3RzIHRoYXQgZGlmZmVyIGZyb20gdGhlIGN1cnJlbnQgdmll
dyBvbmx5IGJlY2F1c2UgdGhleSBoYXZlIGFuIGluc2V0IG9yIG5vdC4KKworICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tWaWV3UHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvbWFjL1dLVmlldy5tbToKKyAgICAgICAgKC1bV0tWaWV3IF90YWtlVmlld1NuYXBzaG90XSk6
CisgICAgICAgICgtW1dLVmlldyBfc2V0Q3VzdG9tU3dpcGVWaWV3c1RvcENvbnRlbnRJbnNldDpd
KToKKyAgICAgICAgQWRkIGFuZCBwbHVtYiB0aHJvdWdoIGEgdG9wQ29udGVudEluc2V0IHByb3Bl
cnR5IHRvIGFwcGx5IHRvIHRoZSBjdXN0b20gc3dpcGUgdmlld3MuCisgICAgICAgIEZvciBzaW1w
bGljaXRseSdzIHNha2UgaW4gdGhlIG11bHRpLXZpZXcgY2FzZSwgaXQgaXMgYXBwbGllZCBpbiB3
aW5kb3cgY29vcmRpbmF0ZXMsCisgICAgICAgIHNvIGNsaWVudHMgd2lsbCBoYXZlIHRvIGRvIGNv
bnZlcnNpb25zIGlmIG5lY2Vzc2FyeS4KKyAgICAgICAgRG9uJ3QgaW5jbHVkZSB0aGUgdG9wIGNv
bnRlbnQgaW5zZXQgaW4gdGhlIHNuYXBzaG90IHRoYXQgaXMgdGFrZW4uCisKKyAgICAgICAgKiBV
SVByb2Nlc3MvbWFjL1ZpZXdHZXN0dXJlQ29udHJvbGxlci5oOgorICAgICAgICAoV2ViS2l0OjpW
aWV3R2VzdHVyZUNvbnRyb2xsZXI6OnNldEN1c3RvbVN3aXBlVmlld3NUb3BDb250ZW50SW5zZXQp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvVmlld0dlc3R1cmVDb250cm9sbGVyTWFjLm1tOgor
ICAgICAgICAoV2ViS2l0OjpWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OlZpZXdHZXN0dXJlQ29udHJv
bGxlcik6CisgICAgICAgIChXZWJLaXQ6OlZpZXdHZXN0dXJlQ29udHJvbGxlcjo6d2luZG93UmVs
YXRpdmVCb3VuZHNGb3JDdXN0b21Td2lwZVZpZXdzKToKKyAgICAgICAgQXBwbHkgdGhlIGFmb3Jl
bWVudGlvbmVkIGN1c3RvbSBzd2lwZSB2aWV3IHRvcCBjb250ZW50IGluc2V0LgorCisgICAgICAg
IChXZWJLaXQ6OlZpZXdHZXN0dXJlQ29udHJvbGxlcjo6ZGV0ZXJtaW5lU25hcHNob3RMYXllclBh
cmVudCk6CisgICAgICAgIChXZWJLaXQ6OlZpZXdHZXN0dXJlQ29udHJvbGxlcjo6ZGV0ZXJtaW5l
TGF5ZXJBZGphY2VudFRvU25hcHNob3RGb3JQYXJlbnQpOgorICAgICAgICBGYWN0b3IgdGhlc2Ug
b3V0IG9mIGJlZ2luU3dpcGVHZXN0dXJlLgorCisgICAgICAgIChXZWJLaXQ6OlZpZXdHZXN0dXJl
Q29udHJvbGxlcjo6cmV0cmlldmVTbmFwc2hvdEZvckl0ZW0pOgorICAgICAgICBEb24ndCByZXR1
cm4gYSBzbmFwc2hvdCBpZiB0aGUgY3VycmVudCBkZXZpY2VTY2FsZUZhY3RvciBkb2Vzbid0IG1h
dGNoIHRoYXQKKyAgICAgICAgYXQgd2hpY2ggdGhlIHNuYXBzaG90IHdhcyB0YWtlbiwgb3IgaWYg
dGhlIHNpemUgb2YgdGhlIHNuYXBzaG90IGRvZXNuJ3QgbWF0Y2gKKyAgICAgICAgdGhlIHVub2Jz
Y3VyZWQgcGFydCBvZiB0aGUgc25hcHNob3QgbGF5ZXIgKHRoZSBsYXllcidzIHNpemUgc2FucyB0
b3AgY29udGVudCBpbnNldCkuCisKKyAgICAgICAgKFdlYktpdDo6bGF5ZXJHZW9tZXRyeUZsaXBw
ZWRUb1Jvb3QpOiBBZGRlZC4KKyAgICAgICAgRGV0ZXJtaW5lIHdoZXRoZXIgZ2VvbWV0cnkgZmxp
cHBpbmcgb2NjdXJzIGJldHdlZW4gYSBsYXllciBhbmQgdGhlIHJvb3Qgb2YgdGhlIHRyZWUgaXQg
aXMgaW4uCisKKyAgICAgICAgKFdlYktpdDo6Vmlld0dlc3R1cmVDb250cm9sbGVyOjphcHBseURl
YnVnZ2luZ1Byb3BlcnRpZXNUb1N3aXBlVmlld3MpOgorICAgICAgICBGYWN0b3Igb3V0IGRlYnVn
Z2luZyBsYXllciBwcm9wZXJ0aWVzLCBhbmQgYWRkIHNvbWUgYm9yZGVycyBhbmQgYmFja2dyb3Vu
ZHMgdG8gb3VyIGxheWVycy4KKyAgICAgICAgSSBzd2l0Y2hlZCB0byBpbnZlcnQgaW5zdGVhZCBv
ZiBibHVyIGJlY2F1c2UgYmx1ciBtYWtlcyB0aGUgYm9yZGVycyBoYXJkIHRvIHVzZS4KKworICAg
ICAgICAoV2ViS2l0OjpWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OmJlZ2luU3dpcGVHZXN0dXJlKToK
KyAgICAgICAgQWRkIGFuIGFkZGl0aW9uYWwgbGF5ZXIsIHRoZSBzd2lwZUxheWVyLCB3aGljaCBp
cyB0aGUgcGFyZW50IG9mIHRoZSBzd2lwZVNuYXBzaG90TGF5ZXIuCisgICAgICAgIFdlIHVzZSB0
aGlzIGxheWVyIHRvIGNvbXBlbnNhdGUgZm9yIGdlb21ldHJ5IGZsaXBwaW5nLCBzaW5jZSB3ZSBk
b24ndCBuZWNlc3NhcmlseQorICAgICAgICBrbm93IHRoZSBzdHJ1Y3R1cmUgb2YgdGhlIGxheWVy
IHRyZWUgYWhlYWQgb2YgdGltZSB3aGVuIGluc2VydGluZyBzbmFwc2hvdHMgaW50byB0aGUKKyAg
ICAgICAgY2xpZW50J3MgbGF5ZXIgdHJlZSwgaW4gdGhlIGN1c3RvbSBzd2lwZSB2aWV3IGNhc2Uu
CisgICAgICAgIFRoZSBzd2lwZSBsYXllciBpcyBhbHdheXMgdGhlIGZ1bGwgc2l6ZSBvZiB0aGUg
dmlldywgaW5jbHVkaW5nIHRvcENvbnRlbnRJbnNldCwgYW5kCisgICAgICAgIGhhcyBhIHdoaXRl
IGJhY2tncm91bmQgaW4gb3JkZXIgdG8gZmlsbCBpbiB0aGF0IHNwYWNlLiBUaGUgc25hcHNob3Qg
bGF5ZXIgaXMgdGhlIHNpemUKKyAgICAgICAgb2YgdGhlIHZpZXcgKmV4Y2x1ZGluZyogdGhlIHRv
cENvbnRlbnRJbnNldCwgd2hpY2ggc2hvdWxkIG1hdGNoIHRoZSBzaXplIG9mIHRoZSBzbmFwc2hv
dCBpbWFnZQorICAgICAgICBpdHNlbGYgKGFuZCB3ZSByZWplY3QgdGhlIGltYWdlIGFuZCBqdXN0
IHBhaW50IHdoaXRlIGlmIHRoaXMgaXMgbm90IHRoZSBjYXNlKS4KKworICAgICAgICAoV2ViS2l0
OjpWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OmhhbmRsZVN3aXBlR2VzdHVyZSk6CisgICAgICAgIChX
ZWJLaXQ6OlZpZXdHZXN0dXJlQ29udHJvbGxlcjo6cmVtb3ZlU3dpcGVTbmFwc2hvdCk6CisgICAg
ICAgIE1vdmUgYW5kIHJlbW92ZSB0aGUgbmV3IHN3aXBlTGF5ZXIuCisKKyAgICAgICAgKiBVSVBy
b2Nlc3MvbWFjL1ZpZXdTbmFwc2hvdFN0b3JlLmg6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9W
aWV3U25hcHNob3RTdG9yZS5tbToKKyAgICAgICAgKFdlYktpdDo6Vmlld1NuYXBzaG90U3RvcmU6
OnJlY29yZFNuYXBzaG90KToKKyAgICAgICAgU3RvcmUgdGhlIGRldmljZVNjYWxlRmFjdG9yIGF0
IHRoZSB0aW1lIHRoZSBzbmFwc2hvdCB3YXMgdGFrZW4uCisgICAgICAgIEZpeCBhIGJ1ZyB3aGVy
ZSB0aGUgY291bnQgb2Ygc25hcHNob3RzIHdpdGggbGl2ZSBpbWFnZXMgd2FzIHRvbyBoaWdoCisg
ICAgICAgIGJlY2F1c2Ugd2Ugd2VyZSBmYWlsaW5nIHRvIGRlY3JlbWVudCBpdCB3aGVuIHJlcGxh
Y2luZyBhIHNuYXBzaG90IG9mCisgICAgICAgIGFuIGV4aXN0aW5nIGl0ZW0gd2l0aCBhIGZyZXNo
IG9uZS4KKwogMjAxNC0wNC0yNSAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNv
bT4KIAogICAgICAgICBSRUdSRVNTSU9OIChyMTY3Nzc1KTogU2FmYXJpIGNyYXNoZXMgaW4gVmll
d1NuYXBzaG90U3RvcmU6OnBydW5lU25hcHNob3RzIGFmdGVyIGxvYWRpbmcgMjAgcGFnZXMKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tWaWV3UHJpdmF0
ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ZpZXdQcml2YXRlLmgK
aW5kZXggMmVmMWQ3ZC4uNWQ3YjQ5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1ZpZXdQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1ZpZXdQcml2YXRlLmgKQEAgLTEwNiw2ICsxMDYsOCBAQAogCiAvLyBW
aWV3cyBtdXN0IGJlIGxheWVyLWJhY2tlZCwgaGF2ZSBubyB0cmFuc2Zvcm0gYXBwbGllZCwgYmUg
aW4gYmFjay10by1mcm9udCB6LW9yZGVyLCBhbmQgdGhlIHdob2xlIHNldCBtdXN0IGJlIGEgY29u
dGlndW91cyBvcGFxdWUgcmVjdGFuZ2xlLgogLSAodm9pZClfc2V0Q3VzdG9tU3dpcGVWaWV3czoo
TlNBcnJheSAqKWN1c3RvbVN3aXBlVmlld3M7CisvLyBUaGUgdG9wIGNvbnRlbnQgaW5zZXQgaXMg
YXBwbGllZCBpbiB0aGUgd2luZG93J3MgY29vcmRpbmF0ZSBzcGFjZSwgdG8gdGhlIHVuaW9uIG9m
IHRoZSBjdXN0b20gc3dpcGUgdmlldydzIGZyYW1lcy4KKy0gKHZvaWQpX3NldEN1c3RvbVN3aXBl
Vmlld3NUb3BDb250ZW50SW5zZXQ6KGZsb2F0KXRvcENvbnRlbnRJbnNldDsKIC0gKEJPT0wpX3Ry
eVRvU3dpcGVXaXRoRXZlbnQ6KE5TRXZlbnQgKilldmVudCBpZ25vcmluZ1Bpbm5lZFN0YXRlOihC
T09MKWlnbm9yaW5nUGlubmVkU3RhdGU7CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9tYWMvV0tWaWV3Lm1tCmluZGV4IDE2MWY2NGMuLjY5ODA5NDAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcubW0KQEAgLTMwNDMsOCArMzA0MywxMyBA
QCBzdGF0aWMgdm9pZCBjcmVhdGVTYW5kYm94RXh0ZW5zaW9uc0ZvckZpbGVVcGxvYWQoTlNQYXN0
ZWJvYXJkICpwYXN0ZWJvYXJkLCBTYW5kYgogICAgIEZsb2F0UmVjdCBib3VuZHNGb3JDdXN0b21T
d2lwZVZpZXdzID0gX2RhdGEtPl9nZXN0dXJlQ29udHJvbGxlci0+d2luZG93UmVsYXRpdmVCb3Vu
ZHNGb3JDdXN0b21Td2lwZVZpZXdzKCk7CiAgICAgaWYgKCFib3VuZHNGb3JDdXN0b21Td2lwZVZp
ZXdzLmlzRW1wdHkoKSkKICAgICAgICAgd2luZG93Q2FwdHVyZVJlY3QgPSBib3VuZHNGb3JDdXN0
b21Td2lwZVZpZXdzOwotICAgIGVsc2UKLSAgICAgICAgd2luZG93Q2FwdHVyZVJlY3QgPSBbc2Vs
ZiBjb252ZXJ0UmVjdDpzZWxmLmJvdW5kcyB0b1ZpZXc6bmlsXTsKKyAgICBlbHNlIHsKKyAgICAg
ICAgTlNSZWN0IHVub2JzY3VyZWRCb3VuZHMgPSBzZWxmLmJvdW5kczsKKyAgICAgICAgZmxvYXQg
dG9wQ29udGVudEluc2V0ID0gX2RhdGEtPl9wYWdlLT50b3BDb250ZW50SW5zZXQoKTsKKyAgICAg
ICAgdW5vYnNjdXJlZEJvdW5kcy5vcmlnaW4ueSArPSB0b3BDb250ZW50SW5zZXQ7CisgICAgICAg
IHVub2JzY3VyZWRCb3VuZHMuc2l6ZS5oZWlnaHQgLT0gdG9wQ29udGVudEluc2V0OworICAgICAg
ICB3aW5kb3dDYXB0dXJlUmVjdCA9IFtzZWxmIGNvbnZlcnRSZWN0OnVub2JzY3VyZWRCb3VuZHMg
dG9WaWV3Om5pbF07CisgICAgfQogCiAgICAgTlNSZWN0IHdpbmRvd0NhcHR1cmVTY3JlZW5SZWN0
ID0gW3dpbmRvdyBjb252ZXJ0UmVjdFRvU2NyZWVuOndpbmRvd0NhcHR1cmVSZWN0XTsKICAgICBD
R1JlY3Qgd2luZG93U2NyZWVuUmVjdDsKQEAgLTM4OTMsNiArMzg5OCwxMiBAQCBzdGF0aWMgTlNT
dHJpbmcgKnBhdGhXaXRoVW5pcXVlRmlsZW5hbWVGb3JQYXRoKE5TU3RyaW5nICpwYXRoKQogICAg
IF9kYXRhLT5fZ2VzdHVyZUNvbnRyb2xsZXItPnNldEN1c3RvbVN3aXBlVmlld3Modmlld3MpOwog
fQogCistICh2b2lkKV9zZXRDdXN0b21Td2lwZVZpZXdzVG9wQ29udGVudEluc2V0OihmbG9hdCl0
b3BDb250ZW50SW5zZXQKK3sKKyAgICBbc2VsZiBfZW5zdXJlR2VzdHVyZUNvbnRyb2xsZXJdOwor
ICAgIF9kYXRhLT5fZ2VzdHVyZUNvbnRyb2xsZXItPnNldEN1c3RvbVN3aXBlVmlld3NUb3BDb250
ZW50SW5zZXQodG9wQ29udGVudEluc2V0KTsKK30KKwogLSAoQk9PTClfdHJ5VG9Td2lwZVdpdGhF
dmVudDooTlNFdmVudCAqKWV2ZW50IGlnbm9yaW5nUGlubmVkU3RhdGU6KEJPT0wpaWdub3JpbmdQ
aW5uZWRTdGF0ZQogewogICAgIGlmICghX2RhdGEtPl9hbGxvd3NCYWNrRm9yd2FyZE5hdmlnYXRp
b25HZXN0dXJlcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvVmll
d0dlc3R1cmVDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1ZpZXdH
ZXN0dXJlQ29udHJvbGxlci5oCmluZGV4IDkxMWEzMzQuLjI5MzRjMmEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvVmlld0dlc3R1cmVDb250cm9sbGVyLmgKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIuaApAQCAt
OTQsNiArOTQsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCB3aGVlbEV2ZW50V2FzTm90SGFuZGxlZEJ5
V2ViQ29yZShOU0V2ZW50ICopOwogCiAgICAgdm9pZCBzZXRDdXN0b21Td2lwZVZpZXdzKFZlY3Rv
cjxSZXRhaW5QdHI8TlNWaWV3Pj4gdmlld3MpIHsgbV9jdXN0b21Td2lwZVZpZXdzID0gc3RkOjpt
b3ZlKHZpZXdzKTsgfQorICAgIHZvaWQgc2V0Q3VzdG9tU3dpcGVWaWV3c1RvcENvbnRlbnRJbnNl
dChmbG9hdCB0b3BDb250ZW50SW5zZXQpIHsgbV9jdXN0b21Td2lwZVZpZXdzVG9wQ29udGVudElu
c2V0ID0gdG9wQ29udGVudEluc2V0OyB9CiAgICAgV2ViQ29yZTo6RmxvYXRSZWN0IHdpbmRvd1Jl
bGF0aXZlQm91bmRzRm9yQ3VzdG9tU3dpcGVWaWV3cygpIGNvbnN0OwogCiAgICAgdm9pZCBlbmRB
Y3RpdmVHZXN0dXJlKCk7CkBAIC0xMzAsNyArMTMxLDExIEBAIHByaXZhdGU6CiAgICAgdm9pZCBl
bmRTd2lwZUdlc3R1cmUoV2ViQmFja0ZvcndhcmRMaXN0SXRlbSogdGFyZ2V0SXRlbSwgYm9vbCBj
YW5jZWxsZWQpOwogICAgIGJvb2wgZGVsdGFJc1N1ZmZpY2llbnRUb0JlZ2luU3dpcGUoTlNFdmVu
dCAqKTsKICAgICBib29sIHNjcm9sbEV2ZW50Q2FuQmVjb21lU3dpcGUoTlNFdmVudCAqLCBTd2lw
ZURpcmVjdGlvbiYpOwotICAgIFdlYkNvcmU6OklPU3VyZmFjZSogcmV0cmlldmVTbmFwc2hvdEZv
ckl0ZW0oV2ViQmFja0ZvcndhcmRMaXN0SXRlbSopOworICAgIFdlYkNvcmU6OklPU3VyZmFjZSog
cmV0cmlldmVTbmFwc2hvdEZvckl0ZW0oV2ViQmFja0ZvcndhcmRMaXN0SXRlbSosIFdlYkNvcmU6
OkZsb2F0U2l6ZSBzd2lwZUxheWVyU2l6ZSwgZmxvYXQgdG9wQ29udGVudEluc2V0KTsKKworICAg
IENBTGF5ZXIgKmRldGVybWluZVNuYXBzaG90TGF5ZXJQYXJlbnQoKTsKKyAgICBDQUxheWVyICpk
ZXRlcm1pbmVMYXllckFkamFjZW50VG9TbmFwc2hvdEZvclBhcmVudChTd2lwZURpcmVjdGlvbiwg
Q0FMYXllciAqc25hcHNob3RMYXllclBhcmVudCk7CisgICAgdm9pZCBhcHBseURlYnVnZ2luZ1By
b3BlcnRpZXNUb1N3aXBlVmlld3MoKTsKICNlbmRpZgogICAgIAogICAgIFdlYlBhZ2VQcm94eSYg
bV93ZWJQYWdlUHJveHk7CkBAIC0xNTUsMTEgKzE2MCwxMyBAQCBwcml2YXRlOgogICAgIGJvb2wg
bV9mcmFtZUhhbmRsZXNNYWduaWZpY2F0aW9uR2VzdHVyZTsKIAogICAgIFJldGFpblB0cjxXS1N3
aXBlQ2FuY2VsbGF0aW9uVHJhY2tlcj4gbV9zd2lwZUNhbmNlbGxhdGlvblRyYWNrZXI7CisgICAg
UmV0YWluUHRyPENBTGF5ZXI+IG1fc3dpcGVMYXllcjsKICAgICBSZXRhaW5QdHI8Q0FMYXllcj4g
bV9zd2lwZVNuYXBzaG90TGF5ZXI7CiAgICAgVmVjdG9yPFJldGFpblB0cjxDQUxheWVyPj4gbV9j
dXJyZW50U3dpcGVMaXZlTGF5ZXJzOwogCiAgICAgU3dpcGVUcmFuc2l0aW9uU3R5bGUgbV9zd2lw
ZVRyYW5zaXRpb25TdHlsZTsKICAgICBWZWN0b3I8UmV0YWluUHRyPE5TVmlldz4+IG1fY3VzdG9t
U3dpcGVWaWV3czsKKyAgICBmbG9hdCBtX2N1c3RvbVN3aXBlVmlld3NUb3BDb250ZW50SW5zZXQ7
CiAgICAgV2ViQ29yZTo6RmxvYXRSZWN0IG1fY3VycmVudFN3aXBlQ3VzdG9tVmlld0JvdW5kczsK
IAogICAgIC8vIElmIHdlIG5lZWQgdG8gd2FpdCBmb3IgY29udGVudCB0byBkZWNpZGUgaWYgaXQg
aXMgZ29pbmcgdG8gY29uc3VtZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L21hYy9WaWV3R2VzdHVyZUNvbnRyb2xsZXJNYWMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvbWFjL1ZpZXdHZXN0dXJlQ29udHJvbGxlck1hYy5tbQppbmRleCBiZGZmYWU2Li4zMTIzMGVi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1ZpZXdHZXN0dXJlQ29u
dHJvbGxlck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1ZpZXdHZXN0
dXJlQ29udHJvbGxlck1hYy5tbQpAQCAtNTQsNyArNTQsNyBAQAogKyAoQ0FGaWx0ZXIgKilmaWx0
ZXJXaXRoVHlwZTooTlNTdHJpbmcgKil0eXBlOwogQGVuZAogCi1leHRlcm4gTlNTdHJpbmcgKiBj
b25zdCBrQ0FGaWx0ZXJHYXVzc2lhbkJsdXI7CitleHRlcm4gTlNTdHJpbmcgKiBjb25zdCBrQ0FG
aWx0ZXJDb2xvckludmVydDsKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKQEAgLTEwMiw2
ICsxMDIsNyBAQCBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OlZpZXdHZXN0dXJlQ29udHJvbGxlcihX
ZWJQYWdlUHJveHkmIHdlYlBhZ2VQcm94eSkKICAgICAsIG1fdmlzaWJsZUNvbnRlbnRSZWN0SXNW
YWxpZChmYWxzZSkKICAgICAsIG1fZnJhbWVIYW5kbGVzTWFnbmlmaWNhdGlvbkdlc3R1cmUoZmFs
c2UpCiAgICAgLCBtX3N3aXBlVHJhbnNpdGlvblN0eWxlKFN3aXBlVHJhbnNpdGlvblN0eWxlOjpP
dmVybGFwKQorICAgICwgbV9jdXN0b21Td2lwZVZpZXdzVG9wQ29udGVudEluc2V0KDApCiAgICAg
LCBtX3BlbmRpbmdTd2lwZVJlYXNvbihQZW5kaW5nU3dpcGVSZWFzb246Ok5vbmUpCiAgICAgLCBt
X3Nob3VsZElnbm9yZVBpbm5lZFN0YXRlKGZhbHNlKQogewpAQCAtMzk3LDYgKzM5OCw3IEBAIEZs
b2F0UmVjdCBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OndpbmRvd1JlbGF0aXZlQm91bmRzRm9yQ3Vz
dG9tU3dpcGVWaWV3cygpIGNvbnN0CiAgICAgRmxvYXRSZWN0IHN3aXBlQXJlYTsKICAgICBmb3Ig
KGNvbnN0IGF1dG8mIHZpZXcgOiBtX2N1c3RvbVN3aXBlVmlld3MpCiAgICAgICAgIHN3aXBlQXJl
YS51bml0ZShbdmlldyBjb252ZXJ0UmVjdDpbdmlldyBib3VuZHNdIHRvVmlldzpuaWxdKTsKKyAg
ICBzd2lwZUFyZWEuc2V0SGVpZ2h0KHN3aXBlQXJlYS5oZWlnaHQoKSAtIG1fY3VzdG9tU3dpcGVW
aWV3c1RvcENvbnRlbnRJbnNldCk7CiAgICAgcmV0dXJuIHN3aXBlQXJlYTsKIH0KIApAQCAtNDI2
LDcgKzQyOCwzMCBAQCBzdGF0aWMgQ0FMYXllciAqbGVhc3RDb21tb25BbmNlc3RvckxheWVyKFZl
Y3RvcjxSZXRhaW5QdHI8Q0FMYXllcj4+JiBsYXllcnMpCiAgICAgcmV0dXJuIGxpdmVMYXllclBh
dGhzRnJvbVJvb3RbMF1bc2hvcnRlc3RQYXRoTGVuZ3RoXTsKIH0KIAotSU9TdXJmYWNlKiBWaWV3
R2VzdHVyZUNvbnRyb2xsZXI6OnJldHJpZXZlU25hcHNob3RGb3JJdGVtKFdlYkJhY2tGb3J3YXJk
TGlzdEl0ZW0qIHRhcmdldEl0ZW0pCitDQUxheWVyICpWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OmRl
dGVybWluZVNuYXBzaG90TGF5ZXJQYXJlbnQoKQoreworICAgIGlmIChtX2N1cnJlbnRTd2lwZUxp
dmVMYXllcnMuc2l6ZSgpID09IDEpCisgICAgICAgIHJldHVybiBbbV9jdXJyZW50U3dpcGVMaXZl
TGF5ZXJzWzBdIHN1cGVybGF5ZXJdOworCisgICAgLy8gV2UgaW5zZXJ0IG91ciBzbmFwc2hvdCBp
bnRvIHRoZSBmaXJzdCBzaGFyZWQgc3VwZXJsYXllciBvZiB0aGUgY3VzdG9tIHZpZXdzJyBsYXll
ciwgYWJvdmUgdGhlIGZyb250bW9zdCBvciBiZWxvdyB0aGUgYm90dG9tbW9zdCBsYXllci4KKyAg
ICByZXR1cm4gbGVhc3RDb21tb25BbmNlc3RvckxheWVyKG1fY3VycmVudFN3aXBlTGl2ZUxheWVy
cyk7Cit9CisKK0NBTGF5ZXIgKlZpZXdHZXN0dXJlQ29udHJvbGxlcjo6ZGV0ZXJtaW5lTGF5ZXJB
ZGphY2VudFRvU25hcHNob3RGb3JQYXJlbnQoU3dpcGVEaXJlY3Rpb24gZGlyZWN0aW9uLCBDQUxh
eWVyICpzbmFwc2hvdExheWVyUGFyZW50KQoreworICAgIC8vIElmIHdlIGhhdmUgY3VzdG9tIHN3
aXBpbmcgdmlld3MsIHdlIGFzc3VtZSB0aGF0IHRoZSB2aWV3cyB3ZXJlIHBhc3NlZCB0byB1cyBp
biBiYWNrLXRvLWZyb250IHotb3JkZXIuCisgICAgQ0FMYXllciAqbGF5ZXJBZGphY2VudFRvU25h
cHNob3QgPSBkaXJlY3Rpb24gPT0gU3dpcGVEaXJlY3Rpb246OkxlZnQgPyBtX2N1cnJlbnRTd2lw
ZUxpdmVMYXllcnMuZmlyc3QoKS5nZXQoKSA6IG1fY3VycmVudFN3aXBlTGl2ZUxheWVycy5sYXN0
KCkuZ2V0KCk7CisKKyAgICBpZiAobV9jdXJyZW50U3dpcGVMaXZlTGF5ZXJzLnNpemUoKSA9PSAx
KQorICAgICAgICByZXR1cm4gbGF5ZXJBZGphY2VudFRvU25hcHNob3Q7CisKKyAgICAvLyBJZiB0
aGUgbGF5ZXJzIGFyZSBub3QgYWxsIHNpYmxpbmdzLCBmaW5kIHRoZSBjaGlsZCBvZiB0aGUgbGF5
ZXIgd2UncmUgZ29pbmcgdG8gaW5zZXJ0IHRoZSBzbmFwc2hvdCBpbnRvIHdoaWNoIGhhcyB0aGUg
ZnJvbnRtb3N0L2JvdHRvbW1vc3QgbGF5ZXIgYXMgYSBjaGlsZC4KKyAgICB3aGlsZSAoc25hcHNo
b3RMYXllclBhcmVudCAhPSBsYXllckFkamFjZW50VG9TbmFwc2hvdC5zdXBlcmxheWVyKQorICAg
ICAgICBsYXllckFkamFjZW50VG9TbmFwc2hvdCA9IGxheWVyQWRqYWNlbnRUb1NuYXBzaG90LnN1
cGVybGF5ZXI7CisgICAgcmV0dXJuIGxheWVyQWRqYWNlbnRUb1NuYXBzaG90OworfQorCitJT1N1
cmZhY2UqIFZpZXdHZXN0dXJlQ29udHJvbGxlcjo6cmV0cmlldmVTbmFwc2hvdEZvckl0ZW0oV2Vi
QmFja0ZvcndhcmRMaXN0SXRlbSogdGFyZ2V0SXRlbSwgRmxvYXRTaXplIHN3aXBlTGF5ZXJTaXpl
LCBmbG9hdCB0b3BDb250ZW50SW5zZXQpCiB7CiAgICAgVmlld1NuYXBzaG90U3RvcmU6OlNuYXBz
aG90IHNuYXBzaG90OwogICAgIGlmICghVmlld1NuYXBzaG90U3RvcmU6OnNoYXJlZCgpLmdldFNu
YXBzaG90KHRhcmdldEl0ZW0sIHNuYXBzaG90KSkKQEAgLTQzNSwxMiArNDYwLDQ2IEBAIElPU3Vy
ZmFjZSogVmlld0dlc3R1cmVDb250cm9sbGVyOjpyZXRyaWV2ZVNuYXBzaG90Rm9ySXRlbShXZWJC
YWNrRm9yd2FyZExpc3RJdGVtCiAgICAgaWYgKCFzbmFwc2hvdC5zdXJmYWNlKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKIAorICAgIGZsb2F0IGRldmljZVNjYWxlRmFjdG9yID0gbV93ZWJQYWdl
UHJveHkuZGV2aWNlU2NhbGVGYWN0b3IoKTsKKyAgICBpZiAoc25hcHNob3QuZGV2aWNlU2NhbGVG
YWN0b3IgIT0gZGV2aWNlU2NhbGVGYWN0b3IpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisg
ICAgRmxvYXRTaXplIHVub2JzY3VyZWRTd2lwZUxheWVyU2l6ZUluRGV2aWNlQ29vcmRpbmF0ZXMg
PSBzd2lwZUxheWVyU2l6ZSAtIEZsb2F0U2l6ZSgwLCB0b3BDb250ZW50SW5zZXQpOworICAgIHVu
b2JzY3VyZWRTd2lwZUxheWVyU2l6ZUluRGV2aWNlQ29vcmRpbmF0ZXMuc2NhbGUoZGV2aWNlU2Nh
bGVGYWN0b3IpOworICAgIGlmIChzbmFwc2hvdC5zdXJmYWNlLT5zaXplKCkgIT0gdW5vYnNjdXJl
ZFN3aXBlTGF5ZXJTaXplSW5EZXZpY2VDb29yZGluYXRlcykKKyAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisKICAgICBpZiAoc25hcHNob3Quc3VyZmFjZS0+c2V0SXNWb2xhdGlsZShmYWxzZSkgIT0g
SU9TdXJmYWNlOjpTdXJmYWNlU3RhdGU6OlZhbGlkKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
IAogICAgIHJldHVybiBzbmFwc2hvdC5zdXJmYWNlLmdldCgpOwogfQogCitzdGF0aWMgYm9vbCBs
YXllckdlb21ldHJ5RmxpcHBlZFRvUm9vdChDQUxheWVyICpsYXllcikKK3sKKyAgICBib29sIGZs
aXBwZWQgPSBmYWxzZTsKKyAgICBDQUxheWVyICpwYXJlbnQgPSBsYXllcjsKKyAgICB3aGlsZSAo
cGFyZW50KSB7CisgICAgICAgIGlmIChwYXJlbnQuaXNHZW9tZXRyeUZsaXBwZWQpCisgICAgICAg
ICAgICBmbGlwcGVkID0gIWZsaXBwZWQ7CisgICAgICAgIHBhcmVudCA9IHBhcmVudC5zdXBlcmxh
eWVyOworICAgIH0KKyAgICByZXR1cm4gZmxpcHBlZDsKK30KKwordm9pZCBWaWV3R2VzdHVyZUNv
bnRyb2xsZXI6OmFwcGx5RGVidWdnaW5nUHJvcGVydGllc1RvU3dpcGVWaWV3cygpCit7CisgICAg
Q0FGaWx0ZXIqIGZpbHRlciA9IFtDQUZpbHRlciBmaWx0ZXJXaXRoVHlwZTprQ0FGaWx0ZXJDb2xv
ckludmVydF07CisgICAgW21fc3dpcGVMYXllciBzZXRGaWx0ZXJzOkBbIGZpbHRlciBdXTsKKyAg
ICBbbV9zd2lwZUxheWVyIHNldEJhY2tncm91bmRDb2xvcjpbTlNDb2xvciBibHVlQ29sb3JdLkNH
Q29sb3JdOworICAgIFttX3N3aXBlTGF5ZXIgc2V0Qm9yZGVyQ29sb3I6W05TQ29sb3IgeWVsbG93
Q29sb3JdLkNHQ29sb3JdOworICAgIFttX3N3aXBlTGF5ZXIgc2V0Qm9yZGVyV2lkdGg6NF07CisK
KyAgICBbbV9zd2lwZVNuYXBzaG90TGF5ZXIgc2V0QmFja2dyb3VuZENvbG9yOltOU0NvbG9yIGdy
ZWVuQ29sb3JdLkNHQ29sb3JdOworICAgIFttX3N3aXBlU25hcHNob3RMYXllciBzZXRCb3JkZXJD
b2xvcjpbTlNDb2xvciByZWRDb2xvcl0uQ0dDb2xvcl07CisgICAgW21fc3dpcGVTbmFwc2hvdExh
eWVyIHNldEJvcmRlcldpZHRoOjJdOworfQorCiB2b2lkIFZpZXdHZXN0dXJlQ29udHJvbGxlcjo6
YmVnaW5Td2lwZUdlc3R1cmUoV2ViQmFja0ZvcndhcmRMaXN0SXRlbSogdGFyZ2V0SXRlbSwgU3dp
cGVEaXJlY3Rpb24gZGlyZWN0aW9uKQogewogICAgIEFTU0VSVChtX2N1cnJlbnRTd2lwZUxpdmVM
YXllcnMuaXNFbXB0eSgpKTsKQEAgLTQ0OSwyMSArNTA4LDE2IEBAIHZvaWQgVmlld0dlc3R1cmVD
b250cm9sbGVyOjpiZWdpblN3aXBlR2VzdHVyZShXZWJCYWNrRm9yd2FyZExpc3RJdGVtKiB0YXJn
ZXRJdGVtCiAKICAgICBDQUxheWVyICpyb290Q29udGVudExheWVyID0gbV93ZWJQYWdlUHJveHku
YWNjZWxlcmF0ZWRDb21wb3NpdGluZ1Jvb3RMYXllcigpOwogCisgICAgbV9zd2lwZUxheWVyID0g
YWRvcHROUyhbW0NBTGF5ZXIgYWxsb2NdIGluaXRdKTsKICAgICBtX3N3aXBlU25hcHNob3RMYXll
ciA9IGFkb3B0TlMoW1tDQUxheWVyIGFsbG9jXSBpbml0XSk7Ci0gICAgW21fc3dpcGVTbmFwc2hv
dExheWVyIHNldEJhY2tncm91bmRDb2xvcjpDR0NvbG9yR2V0Q29uc3RhbnRDb2xvcihrQ0dDb2xv
cldoaXRlKV07Ci0KLSAgICBJT1N1cmZhY2UqIHNuYXBzaG90ID0gcmV0cmlldmVTbmFwc2hvdEZv
ckl0ZW0odGFyZ2V0SXRlbSk7Ci0KLSAgICBpZiAoc25hcHNob3QpIHsKLSAgICAgICAgbV9jdXJy
ZW50U3dpcGVTbmFwc2hvdFN1cmZhY2UgPSBzbmFwc2hvdDsKLSAgICAgICAgW21fc3dpcGVTbmFw
c2hvdExheWVyIHNldENvbnRlbnRzOihpZClzbmFwc2hvdC0+c3VyZmFjZSgpXTsKLSAgICB9Ci0K
ICAgICBtX2N1cnJlbnRTd2lwZUN1c3RvbVZpZXdCb3VuZHMgPSB3aW5kb3dSZWxhdGl2ZUJvdW5k
c0ZvckN1c3RvbVN3aXBlVmlld3MoKTsKIAogICAgIEZsb2F0UmVjdCBzd2lwZUFyZWE7CisgICAg
ZmxvYXQgdG9wQ29udGVudEluc2V0ID0gMDsKICAgICBpZiAoIW1fY3VzdG9tU3dpcGVWaWV3cy5p
c0VtcHR5KCkpIHsKKyAgICAgICAgdG9wQ29udGVudEluc2V0ID0gbV9jdXN0b21Td2lwZVZpZXdz
VG9wQ29udGVudEluc2V0OwogICAgICAgICBzd2lwZUFyZWEgPSBtX2N1cnJlbnRTd2lwZUN1c3Rv
bVZpZXdCb3VuZHM7CisgICAgICAgIHN3aXBlQXJlYS5leHBhbmQoMCwgdG9wQ29udGVudEluc2V0
KTsKIAogICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIHZpZXcgOiBtX2N1c3RvbVN3aXBlVmlld3Mp
IHsKICAgICAgICAgICAgIENBTGF5ZXIgKmxheWVyID0gW3ZpZXcgbGF5ZXJdOwpAQCAtNDcxLDMz
ICs1MjUsNTEgQEAgdm9pZCBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OmJlZ2luU3dpcGVHZXN0dXJl
KFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0qIHRhcmdldEl0ZW0KICAgICAgICAgICAgIG1fY3VycmVu
dFN3aXBlTGl2ZUxheWVycy5hcHBlbmQobGF5ZXIpOwogICAgICAgICB9CiAgICAgfSBlbHNlIHsK
LSAgICAgICAgc3dpcGVBcmVhID0gRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgbV93ZWJQYWdlUHJv
eHkuZHJhd2luZ0FyZWEoKS0+c2l6ZSgpKTsKKyAgICAgICAgc3dpcGVBcmVhID0gRmxvYXRSZWN0
KEZsb2F0UG9pbnQoKSwgbV93ZWJQYWdlUHJveHkudmlld1NpemUoKSk7CisgICAgICAgIHRvcENv
bnRlbnRJbnNldCA9IG1fd2ViUGFnZVByb3h5LnRvcENvbnRlbnRJbnNldCgpOwogICAgICAgICBt
X2N1cnJlbnRTd2lwZUxpdmVMYXllcnMuYXBwZW5kKHJvb3RDb250ZW50TGF5ZXIpOwogICAgIH0K
IAorICAgIENBTGF5ZXIgKnNuYXBzaG90TGF5ZXJQYXJlbnQgPSBkZXRlcm1pbmVTbmFwc2hvdExh
eWVyUGFyZW50KCk7CisgICAgYm9vbCBnZW9tZXRyeUlzRmxpcHBlZFRvUm9vdCA9IGxheWVyR2Vv
bWV0cnlGbGlwcGVkVG9Sb290KHNuYXBzaG90TGF5ZXJQYXJlbnQpOworCisgICAgSU9TdXJmYWNl
KiBzbmFwc2hvdCA9IHJldHJpZXZlU25hcHNob3RGb3JJdGVtKHRhcmdldEl0ZW0sIHN3aXBlQXJl
YS5zaXplKCksIHRvcENvbnRlbnRJbnNldCk7CisgICAgaWYgKHNuYXBzaG90KSB7CisgICAgICAg
IG1fY3VycmVudFN3aXBlU25hcHNob3RTdXJmYWNlID0gc25hcHNob3Q7CisgICAgICAgIFttX3N3
aXBlU25hcHNob3RMYXllciBzZXRDb250ZW50czooaWQpc25hcHNob3QtPnN1cmZhY2UoKV07Cisg
ICAgfQorCisgICAgW21fc3dpcGVMYXllciBzZXRCYWNrZ3JvdW5kQ29sb3I6Q0dDb2xvckdldENv
bnN0YW50Q29sb3Ioa0NHQ29sb3JXaGl0ZSldOworICAgIFttX3N3aXBlTGF5ZXIgc2V0QW5jaG9y
UG9pbnQ6Q0dQb2ludFplcm9dOworICAgIFttX3N3aXBlTGF5ZXIgc2V0RnJhbWU6c3dpcGVBcmVh
XTsKKyAgICBbbV9zd2lwZUxheWVyIHNldE5hbWU6QCJHZXN0dXJlIFN3aXBlIFJvb3QgTGF5ZXIi
XTsKKyAgICBbbV9zd2lwZUxheWVyIHNldEdlb21ldHJ5RmxpcHBlZDpnZW9tZXRyeUlzRmxpcHBl
ZFRvUm9vdF07CisgICAgW21fc3dpcGVMYXllciB3ZWJfZGlzYWJsZUFsbEFjdGlvbnNdOworCiAg
ICAgW21fc3dpcGVTbmFwc2hvdExheWVyIHNldENvbnRlbnRzR3Jhdml0eTprQ0FHcmF2aXR5VG9w
TGVmdF07CiAgICAgW21fc3dpcGVTbmFwc2hvdExheWVyIHNldENvbnRlbnRzU2NhbGU6bV93ZWJQ
YWdlUHJveHkuZGV2aWNlU2NhbGVGYWN0b3IoKV07CiAgICAgW21fc3dpcGVTbmFwc2hvdExheWVy
IHNldEFuY2hvclBvaW50OkNHUG9pbnRaZXJvXTsKLSAgICBbbV9zd2lwZVNuYXBzaG90TGF5ZXIg
c2V0RnJhbWU6c3dpcGVBcmVhXTsKKyAgICBbbV9zd2lwZVNuYXBzaG90TGF5ZXIgc2V0RnJhbWU6
Q0dSZWN0TWFrZSgwLCAwLCBzd2lwZUFyZWEud2lkdGgoKSwgc3dpcGVBcmVhLmhlaWdodCgpIC0g
dG9wQ29udGVudEluc2V0KV07CiAgICAgW21fc3dpcGVTbmFwc2hvdExheWVyIHNldE5hbWU6QCJH
ZXN0dXJlIFN3aXBlIFNuYXBzaG90IExheWVyIl07CiAgICAgW21fc3dpcGVTbmFwc2hvdExheWVy
IHdlYl9kaXNhYmxlQWxsQWN0aW9uc107CiAKLSAgICBpZiAobV93ZWJQYWdlUHJveHkucHJlZmVy
ZW5jZXMoKS52aWV3R2VzdHVyZURlYnVnZ2luZ0VuYWJsZWQoKSkgewotICAgICAgICBDQUZpbHRl
ciogZmlsdGVyID0gW0NBRmlsdGVyIGZpbHRlcldpdGhUeXBlOmtDQUZpbHRlckdhdXNzaWFuQmx1
cl07Ci0gICAgICAgIFtmaWx0ZXIgc2V0VmFsdWU6W05TTnVtYmVyIG51bWJlcldpdGhGbG9hdDoz
XSBmb3JLZXk6QCJpbnB1dFJhZGl1cyJdOwotICAgICAgICBbbV9zd2lwZVNuYXBzaG90TGF5ZXIg
c2V0RmlsdGVyczpAW2ZpbHRlcl1dOwotICAgIH0KKyAgICBbbV9zd2lwZUxheWVyIGFkZFN1Ymxh
eWVyOm1fc3dpcGVTbmFwc2hvdExheWVyLmdldCgpXTsKKworICAgIGlmIChtX3dlYlBhZ2VQcm94
eS5wcmVmZXJlbmNlcygpLnZpZXdHZXN0dXJlRGVidWdnaW5nRW5hYmxlZCgpKQorICAgICAgICBh
cHBseURlYnVnZ2luZ1Byb3BlcnRpZXNUb1N3aXBlVmlld3MoKTsKIAogICAgIC8vIFdlIGRvbid0
IGtub3cgZW5vdWdoIGFib3V0IHRoZSBjdXN0b20gdmlld3MnIGhpZXJhcmNoeSB0byBhcHBseSBh
IHNoYWRvdy4KICAgICBpZiAobV9zd2lwZVRyYW5zaXRpb25TdHlsZSA9PSBTd2lwZVRyYW5zaXRp
b25TdHlsZTo6T3ZlcmxhcCAmJiBtX2N1c3RvbVN3aXBlVmlld3MuaXNFbXB0eSgpKSB7Ci0gICAg
ICAgIFJldGFpblB0cjxDR1BhdGhSZWY+IHNoYWRvd1BhdGggPSBhZG9wdENGKENHUGF0aENyZWF0
ZVdpdGhSZWN0KFttX3N3aXBlU25hcHNob3RMYXllciBib3VuZHNdLCAwKSk7Ci0KICAgICAgICAg
aWYgKGRpcmVjdGlvbiA9PSBTd2lwZURpcmVjdGlvbjo6TGVmdCkgeworICAgICAgICAgICAgZmxv
YXQgdG9wQ29udGVudEluc2V0ID0gbV93ZWJQYWdlUHJveHkudG9wQ29udGVudEluc2V0KCk7Cisg
ICAgICAgICAgICBGbG9hdFJlY3Qgc2hhZG93UmVjdChGbG9hdFBvaW50KDAsIHRvcENvbnRlbnRJ
bnNldCksIG1fd2ViUGFnZVByb3h5LnZpZXdTaXplKCkgLSBGbG9hdFNpemUoMCwgdG9wQ29udGVu
dEluc2V0KSk7CisgICAgICAgICAgICBSZXRhaW5QdHI8Q0dQYXRoUmVmPiBzaGFkb3dQYXRoID0g
YWRvcHRDRihDR1BhdGhDcmVhdGVXaXRoUmVjdChzaGFkb3dSZWN0LCAwKSk7CiAgICAgICAgICAg
ICBbcm9vdENvbnRlbnRMYXllciBzZXRTaGFkb3dDb2xvcjpDR0NvbG9yR2V0Q29uc3RhbnRDb2xv
cihrQ0dDb2xvckJsYWNrKV07CiAgICAgICAgICAgICBbcm9vdENvbnRlbnRMYXllciBzZXRTaGFk
b3dPcGFjaXR5OnN3aXBlT3ZlcmxheVNoYWRvd09wYWNpdHldOwogICAgICAgICAgICAgW3Jvb3RD
b250ZW50TGF5ZXIgc2V0U2hhZG93UmFkaXVzOnN3aXBlT3ZlcmxheVNoYWRvd1JhZGl1c107CiAg
ICAgICAgICAgICBbcm9vdENvbnRlbnRMYXllciBzZXRTaGFkb3dQYXRoOnNoYWRvd1BhdGguZ2V0
KCldOwogICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgUmV0YWluUHRyPENHUGF0aFJlZj4g
c2hhZG93UGF0aCA9IGFkb3B0Q0YoQ0dQYXRoQ3JlYXRlV2l0aFJlY3QoW21fc3dpcGVTbmFwc2hv
dExheWVyIGJvdW5kc10sIDApKTsKICAgICAgICAgICAgIFttX3N3aXBlU25hcHNob3RMYXllciBz
ZXRTaGFkb3dDb2xvcjpDR0NvbG9yR2V0Q29uc3RhbnRDb2xvcihrQ0dDb2xvckJsYWNrKV07CiAg
ICAgICAgICAgICBbbV9zd2lwZVNuYXBzaG90TGF5ZXIgc2V0U2hhZG93T3BhY2l0eTpzd2lwZU92
ZXJsYXlTaGFkb3dPcGFjaXR5XTsKICAgICAgICAgICAgIFttX3N3aXBlU25hcHNob3RMYXllciBz
ZXRTaGFkb3dSYWRpdXM6c3dpcGVPdmVybGF5U2hhZG93UmFkaXVzXTsKQEAgLTUwNSwyNSArNTc3
LDExIEBAIHZvaWQgVmlld0dlc3R1cmVDb250cm9sbGVyOjpiZWdpblN3aXBlR2VzdHVyZShXZWJC
YWNrRm9yd2FyZExpc3RJdGVtKiB0YXJnZXRJdGVtCiAgICAgICAgIH0KICAgICB9CiAKLSAgICAv
LyBJZiB3ZSBoYXZlIGN1c3RvbSBzd2lwaW5nIHZpZXdzLCB3ZSBhc3N1bWUgdGhhdCB0aGUgdmll
d3Mgd2VyZSBwYXNzZWQgdG8gdXMgaW4gYmFjay10by1mcm9udCB6LW9yZGVyLgotICAgIENBTGF5
ZXIgKmxheWVyQWRqYWNlbnRUb1NuYXBzaG90ID0gZGlyZWN0aW9uID09IFN3aXBlRGlyZWN0aW9u
OjpMZWZ0ID8gbV9jdXJyZW50U3dpcGVMaXZlTGF5ZXJzLmZpcnN0KCkuZ2V0KCkgOiBtX2N1cnJl
bnRTd2lwZUxpdmVMYXllcnMubGFzdCgpLmdldCgpOwotICAgIENBTGF5ZXIgKnNuYXBzaG90TGF5
ZXJQYXJlbnQ7Ci0KLSAgICBpZiAobV9jdXJyZW50U3dpcGVMaXZlTGF5ZXJzLnNpemUoKSA9PSAx
KQotICAgICAgICBzbmFwc2hvdExheWVyUGFyZW50ID0gW21fY3VycmVudFN3aXBlTGl2ZUxheWVy
c1swXSBzdXBlcmxheWVyXTsKLSAgICBlbHNlIHsKLSAgICAgICAgLy8gV2UgaW5zZXJ0IG91ciBz
bmFwc2hvdCBpbnRvIHRoZSBmaXJzdCBzaGFyZWQgc3VwZXJsYXllciBvZiB0aGUgY3VzdG9tIHZp
ZXdzJyBsYXllciwgYWJvdmUgdGhlIGZyb250bW9zdCBvciBiZWxvdyB0aGUgYm90dG9tbW9zdCBs
YXllci4KLSAgICAgICAgc25hcHNob3RMYXllclBhcmVudCA9IGxlYXN0Q29tbW9uQW5jZXN0b3JM
YXllcihtX2N1cnJlbnRTd2lwZUxpdmVMYXllcnMpOwotCi0gICAgICAgIC8vIElmIHRoZSBsYXll
cnMgYXJlIG5vdCBhbGwgc2libGluZ3MsIGZpbmQgdGhlIGNoaWxkIG9mIHRoZSBsYXllciB3ZSdy
ZSBnb2luZyB0byBpbnNlcnQgdGhlIHNuYXBzaG90IGludG8gd2hpY2ggaGFzIHRoZSBmcm9udG1v
c3QvYm90dG9tbW9zdCBsYXllciBhcyBhIGNoaWxkLgotICAgICAgICB3aGlsZSAoc25hcHNob3RM
YXllclBhcmVudCAhPSBsYXllckFkamFjZW50VG9TbmFwc2hvdC5zdXBlcmxheWVyKQotICAgICAg
ICAgICAgbGF5ZXJBZGphY2VudFRvU25hcHNob3QgPSBsYXllckFkamFjZW50VG9TbmFwc2hvdC5z
dXBlcmxheWVyOwotICAgIH0KLQorICAgIENBTGF5ZXIgKmxheWVyQWRqYWNlbnRUb1NuYXBzaG90
ID0gZGV0ZXJtaW5lTGF5ZXJBZGphY2VudFRvU25hcHNob3RGb3JQYXJlbnQoZGlyZWN0aW9uLCBz
bmFwc2hvdExheWVyUGFyZW50KTsKICAgICBpZiAoZGlyZWN0aW9uID09IFN3aXBlRGlyZWN0aW9u
OjpMZWZ0KQotICAgICAgICBbc25hcHNob3RMYXllclBhcmVudCBpbnNlcnRTdWJsYXllcjptX3N3
aXBlU25hcHNob3RMYXllci5nZXQoKSBiZWxvdzpsYXllckFkamFjZW50VG9TbmFwc2hvdF07Cisg
ICAgICAgIFtzbmFwc2hvdExheWVyUGFyZW50IGluc2VydFN1YmxheWVyOm1fc3dpcGVMYXllci5n
ZXQoKSBiZWxvdzpsYXllckFkamFjZW50VG9TbmFwc2hvdF07CiAgICAgZWxzZQotICAgICAgICBb
c25hcHNob3RMYXllclBhcmVudCBpbnNlcnRTdWJsYXllcjptX3N3aXBlU25hcHNob3RMYXllci5n
ZXQoKSBhYm92ZTpsYXllckFkamFjZW50VG9TbmFwc2hvdF07CisgICAgICAgIFtzbmFwc2hvdExh
eWVyUGFyZW50IGluc2VydFN1YmxheWVyOm1fc3dpcGVMYXllci5nZXQoKSBhYm92ZTpsYXllckFk
amFjZW50VG9TbmFwc2hvdF07CiB9CiAKIHZvaWQgVmlld0dlc3R1cmVDb250cm9sbGVyOjpoYW5k
bGVTd2lwZUdlc3R1cmUoV2ViQmFja0ZvcndhcmRMaXN0SXRlbSogdGFyZ2V0SXRlbSwgZG91Ymxl
IHByb2dyZXNzLCBTd2lwZURpcmVjdGlvbiBkaXJlY3Rpb24pCkBAIC01NDMsOSArNjAxLDkgQEAg
dm9pZCBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OmhhbmRsZVN3aXBlR2VzdHVyZShXZWJCYWNrRm9y
d2FyZExpc3RJdGVtKiB0YXJnZXRJdGUKIAogICAgIGlmIChtX3N3aXBlVHJhbnNpdGlvblN0eWxl
ID09IFN3aXBlVHJhbnNpdGlvblN0eWxlOjpPdmVybGFwKSB7CiAgICAgICAgIGlmIChkaXJlY3Rp
b24gPT0gU3dpcGVEaXJlY3Rpb246OlJpZ2h0KQotICAgICAgICAgICAgW21fc3dpcGVTbmFwc2hv
dExheWVyIHNldFRyYW5zZm9ybTpDQVRyYW5zZm9ybTNETWFrZVRyYW5zbGF0aW9uKHdpZHRoICsg
c3dpcGluZ0xheWVyT2Zmc2V0LCAwLCAwKV07CisgICAgICAgICAgICBbbV9zd2lwZUxheWVyIHNl
dFRyYW5zZm9ybTpDQVRyYW5zZm9ybTNETWFrZVRyYW5zbGF0aW9uKHdpZHRoICsgc3dpcGluZ0xh
eWVyT2Zmc2V0LCAwLCAwKV07CiAgICAgfSBlbHNlIGlmIChtX3N3aXBlVHJhbnNpdGlvblN0eWxl
ID09IFN3aXBlVHJhbnNpdGlvblN0eWxlOjpQdXNoKQotICAgICAgICBbbV9zd2lwZVNuYXBzaG90
TGF5ZXIgc2V0VHJhbnNmb3JtOkNBVHJhbnNmb3JtM0RNYWtlVHJhbnNsYXRpb24oKGRpcmVjdGlv
biA9PSBTd2lwZURpcmVjdGlvbjo6TGVmdCA/IC13aWR0aCA6IHdpZHRoKSArIHN3aXBpbmdMYXll
ck9mZnNldCwgMCwgMCldOworICAgICAgICBbbV9zd2lwZUxheWVyIHNldFRyYW5zZm9ybTpDQVRy
YW5zZm9ybTNETWFrZVRyYW5zbGF0aW9uKChkaXJlY3Rpb24gPT0gU3dpcGVEaXJlY3Rpb246Okxl
ZnQgPyAtd2lkdGggOiB3aWR0aCkgKyBzd2lwaW5nTGF5ZXJPZmZzZXQsIDAsIDApXTsKIAogICAg
IGZvciAoY29uc3QgYXV0byYgbGF5ZXIgOiBtX2N1cnJlbnRTd2lwZUxpdmVMYXllcnMpIHsKICAg
ICAgICAgaWYgKG1fc3dpcGVUcmFuc2l0aW9uU3R5bGUgPT0gU3dpcGVUcmFuc2l0aW9uU3R5bGU6
Ok92ZXJsYXApIHsKQEAgLTYyMSw2ICs2NzksOSBAQCB2b2lkIFZpZXdHZXN0dXJlQ29udHJvbGxl
cjo6cmVtb3ZlU3dpcGVTbmFwc2hvdCgpCiAgICAgW21fc3dpcGVTbmFwc2hvdExheWVyIHJlbW92
ZUZyb21TdXBlcmxheWVyXTsKICAgICBtX3N3aXBlU25hcHNob3RMYXllciA9IG51bGxwdHI7CiAK
KyAgICBbbV9zd2lwZUxheWVyIHJlbW92ZUZyb21TdXBlcmxheWVyXTsKKyAgICBtX3N3aXBlTGF5
ZXIgPSBudWxscHRyOworCiAgICAgbV9jdXJyZW50U3dpcGVMaXZlTGF5ZXJzLmNsZWFyKCk7CiAK
ICAgICBtX2FjdGl2ZUdlc3R1cmVUeXBlID0gVmlld0dlc3R1cmVUeXBlOjpOb25lOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9WaWV3U25hcHNob3RTdG9yZS5oIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9WaWV3U25hcHNob3RTdG9yZS5oCmluZGV4IDA1
MTNmNDEuLjgwNzk2MWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMv
Vmlld1NuYXBzaG90U3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1Zp
ZXdTbmFwc2hvdFN0b3JlLmgKQEAgLTU1LDYgKzU1LDcgQEAgcHVibGljOgogCiAgICAgICAgIHN0
ZDo6Y2hyb25vOjpzdGVhZHlfY2xvY2s6OnRpbWVfcG9pbnQgY3JlYXRpb25UaW1lOwogICAgICAg
ICB1aW50NjRfdCByZW5kZXJUcmVlU2l6ZTsKKyAgICAgICAgZmxvYXQgZGV2aWNlU2NhbGVGYWN0
b3I7CiAKICAgICAgICAgdm9pZCBjbGVhckltYWdlKCk7CiAgICAgICAgIGJvb2wgaGFzSW1hZ2Uo
KSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvVmlld1Nu
YXBzaG90U3RvcmUubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1ZpZXdTbmFwc2hv
dFN0b3JlLm1tCmluZGV4IDEzYWQ5YWIuLjhiZTBjOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9tYWMvVmlld1NuYXBzaG90U3RvcmUubW0KKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL21hYy9WaWV3U25hcHNob3RTdG9yZS5tbQpAQCAtMTQzLDE0ICsxNDMsMjEg
QEAgdm9pZCBWaWV3U25hcHNob3RTdG9yZTo6cmVjb3JkU25hcHNob3QoV2ViUGFnZVByb3h5JiB3
ZWJQYWdlUHJveHkpCiAgICAgcHJ1bmVTbmFwc2hvdHMod2ViUGFnZVByb3h5KTsKIAogICAgIFN0
cmluZyBvbGRTbmFwc2hvdFVVSUQgPSBpdGVtLT5zbmFwc2hvdFVVSUQoKTsKLSAgICBpZiAoIW9s
ZFNuYXBzaG90VVVJRC5pc0VtcHR5KCkpCi0gICAgICAgIG1fc25hcHNob3RNYXAucmVtb3ZlKG9s
ZFNuYXBzaG90VVVJRCk7CisgICAgaWYgKCFvbGRTbmFwc2hvdFVVSUQuaXNFbXB0eSgpKSB7Cisg
ICAgICAgIGNvbnN0IGF1dG8mIG9sZFNuYXBzaG90SXRlciA9IG1fc25hcHNob3RNYXAuZmluZChv
bGRTbmFwc2hvdFVVSUQpOworICAgICAgICBpZiAob2xkU25hcHNob3RJdGVyICE9IG1fc25hcHNo
b3RNYXAuZW5kKCkpIHsKKyAgICAgICAgICAgIGlmIChvbGRTbmFwc2hvdEl0ZXItPnZhbHVlLmhh
c0ltYWdlKCkpCisgICAgICAgICAgICAgICAgbV9zbmFwc2hvdHNXaXRoSW1hZ2VzQ291bnQtLTsK
KyAgICAgICAgICAgIG1fc25hcHNob3RNYXAucmVtb3ZlKG9sZFNuYXBzaG90SXRlcik7CisgICAg
ICAgIH0KKyAgICB9CiAKICAgICBpdGVtLT5zZXRTbmFwc2hvdFVVSUQoY3JlYXRlQ2Fub25pY2Fs
VVVJRFN0cmluZygpKTsKICAgICAKICAgICBTbmFwc2hvdCBzbmFwc2hvdDsKICAgICBzbmFwc2hv
dC5jcmVhdGlvblRpbWUgPSBzdGQ6OmNocm9ubzo6c3RlYWR5X2Nsb2NrOjpub3coKTsKICAgICBz
bmFwc2hvdC5yZW5kZXJUcmVlU2l6ZSA9IHdlYlBhZ2VQcm94eS5yZW5kZXJUcmVlU2l6ZSgpOwor
ICAgIHNuYXBzaG90LmRldmljZVNjYWxlRmFjdG9yID0gd2ViUGFnZVByb3h5LmRldmljZVNjYWxl
RmFjdG9yKCk7CiAKICNpZiBVU0UoSU9TVVJGQUNFKQogICAgIHNuYXBzaG90LnN1cmZhY2UgPSBj
cmVhdGVJT1N1cmZhY2VGcm9tSW1hZ2Uoc25hcHNob3RJbWFnZS5nZXQoKSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>230250</attachid>
            <date>2014-04-26 19:02:27 -0700</date>
            <delta_ts>2014-04-26 19:03:36 -0700</delta_ts>
            <desc>fix the ML build</desc>
            <filename>tci-size-swipe.diff</filename>
            <type>text/plain</type>
            <size>22612</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCBhMmYyMDBiLi4wYTI4NGI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjkg
QEAKKzIwMTQtMDQtMjYgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisK
KyAgICAgICAgV2ViS2l0MiBWaWV3IEdlc3R1cmVzIChTd2lwZSk6IERpc2NhcmQgc25hcHNob3Rz
IG1hZGUgd2l0aCBhIGRpZmZlcmVudCB2aWV3IHNpemUvcGl4ZWwgZGVuc2l0eQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMyMTE1CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2Ugc2hvdWxkbid0IHRyeSB0
byB1c2Ugc25hcHNob3RzIGlmIHRoZXkgbm8gbG9uZ2VyIG1hdGNoIHRoZSBkZXN0aW5hdGlvbiB2
aWV3IHNpemUuCisgICAgICAgIFRvIGRvIHRoaXMsIHdlIG5lZWQgYW4gYWNjdXJhdGUgcGljdHVy
ZSBvZiB0aGUgdG9wQ29udGVudEluc2V0LCBib3RoIGZvciB0aGUgV2ViIHZpZXcsCisgICAgICAg
IGFuZCBmb3IgYW55IGN1c3RvbSB2aWV3cywgYmVjYXVzZSB3ZSBkb24ndCB3YW50IHRvIGluY2x1
ZGUgdGhlIGluc2V0IGFyZWEgaW4gdGhlIHNuYXBzaG90LAorICAgICAgICBhbmQgd2UgZG9uJ3Qg
d2FudCB0byByZWplY3Qgc25hcHNob3RzIHRoYXQgZGlmZmVyIGZyb20gdGhlIGN1cnJlbnQgdmll
dyBvbmx5IGJlY2F1c2UgdGhleSBoYXZlIGFuIGluc2V0IG9yIG5vdC4KKworICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tWaWV3UHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvbWFjL1dLVmlldy5tbToKKyAgICAgICAgKC1bV0tWaWV3IF90YWtlVmlld1NuYXBzaG90XSk6
CisgICAgICAgICgtW1dLVmlldyBfc2V0Q3VzdG9tU3dpcGVWaWV3c1RvcENvbnRlbnRJbnNldDpd
KToKKyAgICAgICAgQWRkIGFuZCBwbHVtYiB0aHJvdWdoIGEgdG9wQ29udGVudEluc2V0IHByb3Bl
cnR5IHRvIGFwcGx5IHRvIHRoZSBjdXN0b20gc3dpcGUgdmlld3MuCisgICAgICAgIEZvciBzaW1w
bGljaXRseSdzIHNha2UgaW4gdGhlIG11bHRpLXZpZXcgY2FzZSwgaXQgaXMgYXBwbGllZCBpbiB3
aW5kb3cgY29vcmRpbmF0ZXMsCisgICAgICAgIHNvIGNsaWVudHMgd2lsbCBoYXZlIHRvIGRvIGNv
bnZlcnNpb25zIGlmIG5lY2Vzc2FyeS4KKyAgICAgICAgRG9uJ3QgaW5jbHVkZSB0aGUgdG9wIGNv
bnRlbnQgaW5zZXQgaW4gdGhlIHNuYXBzaG90IHRoYXQgaXMgdGFrZW4uCisKKyAgICAgICAgKiBV
SVByb2Nlc3MvbWFjL1ZpZXdHZXN0dXJlQ29udHJvbGxlci5oOgorICAgICAgICAoV2ViS2l0OjpW
aWV3R2VzdHVyZUNvbnRyb2xsZXI6OnNldEN1c3RvbVN3aXBlVmlld3NUb3BDb250ZW50SW5zZXQp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvVmlld0dlc3R1cmVDb250cm9sbGVyTWFjLm1tOgor
ICAgICAgICAoV2ViS2l0OjpWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OlZpZXdHZXN0dXJlQ29udHJv
bGxlcik6CisgICAgICAgIChXZWJLaXQ6OlZpZXdHZXN0dXJlQ29udHJvbGxlcjo6d2luZG93UmVs
YXRpdmVCb3VuZHNGb3JDdXN0b21Td2lwZVZpZXdzKToKKyAgICAgICAgQXBwbHkgdGhlIGFmb3Jl
bWVudGlvbmVkIGN1c3RvbSBzd2lwZSB2aWV3IHRvcCBjb250ZW50IGluc2V0LgorCisgICAgICAg
IChXZWJLaXQ6OlZpZXdHZXN0dXJlQ29udHJvbGxlcjo6ZGV0ZXJtaW5lU25hcHNob3RMYXllclBh
cmVudCk6CisgICAgICAgIChXZWJLaXQ6OlZpZXdHZXN0dXJlQ29udHJvbGxlcjo6ZGV0ZXJtaW5l
TGF5ZXJBZGphY2VudFRvU25hcHNob3RGb3JQYXJlbnQpOgorICAgICAgICBGYWN0b3IgdGhlc2Ug
b3V0IG9mIGJlZ2luU3dpcGVHZXN0dXJlLgorCisgICAgICAgIChXZWJLaXQ6OlZpZXdHZXN0dXJl
Q29udHJvbGxlcjo6cmV0cmlldmVTbmFwc2hvdEZvckl0ZW0pOgorICAgICAgICBEb24ndCByZXR1
cm4gYSBzbmFwc2hvdCBpZiB0aGUgY3VycmVudCBkZXZpY2VTY2FsZUZhY3RvciBkb2Vzbid0IG1h
dGNoIHRoYXQKKyAgICAgICAgYXQgd2hpY2ggdGhlIHNuYXBzaG90IHdhcyB0YWtlbiwgb3IgaWYg
dGhlIHNpemUgb2YgdGhlIHNuYXBzaG90IGRvZXNuJ3QgbWF0Y2gKKyAgICAgICAgdGhlIHVub2Jz
Y3VyZWQgcGFydCBvZiB0aGUgc25hcHNob3QgbGF5ZXIgKHRoZSBsYXllcidzIHNpemUgc2FucyB0
b3AgY29udGVudCBpbnNldCkuCisKKyAgICAgICAgKFdlYktpdDo6bGF5ZXJHZW9tZXRyeUZsaXBw
ZWRUb1Jvb3QpOiBBZGRlZC4KKyAgICAgICAgRGV0ZXJtaW5lIHdoZXRoZXIgZ2VvbWV0cnkgZmxp
cHBpbmcgb2NjdXJzIGJldHdlZW4gYSBsYXllciBhbmQgdGhlIHJvb3Qgb2YgdGhlIHRyZWUgaXQg
aXMgaW4uCisKKyAgICAgICAgKFdlYktpdDo6Vmlld0dlc3R1cmVDb250cm9sbGVyOjphcHBseURl
YnVnZ2luZ1Byb3BlcnRpZXNUb1N3aXBlVmlld3MpOgorICAgICAgICBGYWN0b3Igb3V0IGRlYnVn
Z2luZyBsYXllciBwcm9wZXJ0aWVzLCBhbmQgYWRkIHNvbWUgYm9yZGVycyBhbmQgYmFja2dyb3Vu
ZHMgdG8gb3VyIGxheWVycy4KKyAgICAgICAgSSBzd2l0Y2hlZCB0byBpbnZlcnQgaW5zdGVhZCBv
ZiBibHVyIGJlY2F1c2UgYmx1ciBtYWtlcyB0aGUgYm9yZGVycyBoYXJkIHRvIHVzZS4KKworICAg
ICAgICAoV2ViS2l0OjpWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OmJlZ2luU3dpcGVHZXN0dXJlKToK
KyAgICAgICAgQWRkIGFuIGFkZGl0aW9uYWwgbGF5ZXIsIHRoZSBzd2lwZUxheWVyLCB3aGljaCBp
cyB0aGUgcGFyZW50IG9mIHRoZSBzd2lwZVNuYXBzaG90TGF5ZXIuCisgICAgICAgIFdlIHVzZSB0
aGlzIGxheWVyIHRvIGNvbXBlbnNhdGUgZm9yIGdlb21ldHJ5IGZsaXBwaW5nLCBzaW5jZSB3ZSBk
b24ndCBuZWNlc3NhcmlseQorICAgICAgICBrbm93IHRoZSBzdHJ1Y3R1cmUgb2YgdGhlIGxheWVy
IHRyZWUgYWhlYWQgb2YgdGltZSB3aGVuIGluc2VydGluZyBzbmFwc2hvdHMgaW50byB0aGUKKyAg
ICAgICAgY2xpZW50J3MgbGF5ZXIgdHJlZSwgaW4gdGhlIGN1c3RvbSBzd2lwZSB2aWV3IGNhc2Uu
CisgICAgICAgIFRoZSBzd2lwZSBsYXllciBpcyBhbHdheXMgdGhlIGZ1bGwgc2l6ZSBvZiB0aGUg
dmlldywgaW5jbHVkaW5nIHRvcENvbnRlbnRJbnNldCwgYW5kCisgICAgICAgIGhhcyBhIHdoaXRl
IGJhY2tncm91bmQgaW4gb3JkZXIgdG8gZmlsbCBpbiB0aGF0IHNwYWNlLiBUaGUgc25hcHNob3Qg
bGF5ZXIgaXMgdGhlIHNpemUKKyAgICAgICAgb2YgdGhlIHZpZXcgKmV4Y2x1ZGluZyogdGhlIHRv
cENvbnRlbnRJbnNldCwgd2hpY2ggc2hvdWxkIG1hdGNoIHRoZSBzaXplIG9mIHRoZSBzbmFwc2hv
dCBpbWFnZQorICAgICAgICBpdHNlbGYgKGFuZCB3ZSByZWplY3QgdGhlIGltYWdlIGFuZCBqdXN0
IHBhaW50IHdoaXRlIGlmIHRoaXMgaXMgbm90IHRoZSBjYXNlKS4KKworICAgICAgICAoV2ViS2l0
OjpWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OmhhbmRsZVN3aXBlR2VzdHVyZSk6CisgICAgICAgIChX
ZWJLaXQ6OlZpZXdHZXN0dXJlQ29udHJvbGxlcjo6cmVtb3ZlU3dpcGVTbmFwc2hvdCk6CisgICAg
ICAgIE1vdmUgYW5kIHJlbW92ZSB0aGUgbmV3IHN3aXBlTGF5ZXIuCisKKyAgICAgICAgKiBVSVBy
b2Nlc3MvbWFjL1ZpZXdTbmFwc2hvdFN0b3JlLmg6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9W
aWV3U25hcHNob3RTdG9yZS5tbToKKyAgICAgICAgKFdlYktpdDo6Vmlld1NuYXBzaG90U3RvcmU6
OnJlY29yZFNuYXBzaG90KToKKyAgICAgICAgU3RvcmUgdGhlIGRldmljZVNjYWxlRmFjdG9yIGF0
IHRoZSB0aW1lIHRoZSBzbmFwc2hvdCB3YXMgdGFrZW4uCisgICAgICAgIEZpeCBhIGJ1ZyB3aGVy
ZSB0aGUgY291bnQgb2Ygc25hcHNob3RzIHdpdGggbGl2ZSBpbWFnZXMgd2FzIHRvbyBoaWdoCisg
ICAgICAgIGJlY2F1c2Ugd2Ugd2VyZSBmYWlsaW5nIHRvIGRlY3JlbWVudCBpdCB3aGVuIHJlcGxh
Y2luZyBhIHNuYXBzaG90IG9mCisgICAgICAgIGFuIGV4aXN0aW5nIGl0ZW0gd2l0aCBhIGZyZXNo
IG9uZS4KKwogMjAxNC0wNC0yNiAgRGFuIEJlcm5zdGVpbiAgPG1pdHpAYXBwbGUuY29tPgogCiAg
ICAgICAgIFtDb2NvYV0gUmVuYW1lIGEgYnVuZGxlIGZvcm0gZGVsZWdhdGUgbWV0aG9kCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVmlld1ByaXZhdGUu
aCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tWaWV3UHJpdmF0ZS5oCmlu
ZGV4IDJlZjFkN2QuLjVkN2I0OTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tWaWV3UHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tWaWV3UHJpdmF0ZS5oCkBAIC0xMDYsNiArMTA2LDggQEAKIAogLy8gVmll
d3MgbXVzdCBiZSBsYXllci1iYWNrZWQsIGhhdmUgbm8gdHJhbnNmb3JtIGFwcGxpZWQsIGJlIGlu
IGJhY2stdG8tZnJvbnQgei1vcmRlciwgYW5kIHRoZSB3aG9sZSBzZXQgbXVzdCBiZSBhIGNvbnRp
Z3VvdXMgb3BhcXVlIHJlY3RhbmdsZS4KIC0gKHZvaWQpX3NldEN1c3RvbVN3aXBlVmlld3M6KE5T
QXJyYXkgKiljdXN0b21Td2lwZVZpZXdzOworLy8gVGhlIHRvcCBjb250ZW50IGluc2V0IGlzIGFw
cGxpZWQgaW4gdGhlIHdpbmRvdydzIGNvb3JkaW5hdGUgc3BhY2UsIHRvIHRoZSB1bmlvbiBvZiB0
aGUgY3VzdG9tIHN3aXBlIHZpZXcncyBmcmFtZXMuCistICh2b2lkKV9zZXRDdXN0b21Td2lwZVZp
ZXdzVG9wQ29udGVudEluc2V0OihmbG9hdCl0b3BDb250ZW50SW5zZXQ7CiAtIChCT09MKV90cnlU
b1N3aXBlV2l0aEV2ZW50OihOU0V2ZW50ICopZXZlbnQgaWdub3JpbmdQaW5uZWRTdGF0ZTooQk9P
TClpZ25vcmluZ1Bpbm5lZFN0YXRlOwogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvbWFjL1dLVmlldy5tbQppbmRleCAxNjFmNjRjLi42OTgwOTQwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcubW0KKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tCkBAIC0zMDQzLDggKzMwNDMsMTMgQEAg
c3RhdGljIHZvaWQgY3JlYXRlU2FuZGJveEV4dGVuc2lvbnNGb3JGaWxlVXBsb2FkKE5TUGFzdGVi
b2FyZCAqcGFzdGVib2FyZCwgU2FuZGIKICAgICBGbG9hdFJlY3QgYm91bmRzRm9yQ3VzdG9tU3dp
cGVWaWV3cyA9IF9kYXRhLT5fZ2VzdHVyZUNvbnRyb2xsZXItPndpbmRvd1JlbGF0aXZlQm91bmRz
Rm9yQ3VzdG9tU3dpcGVWaWV3cygpOwogICAgIGlmICghYm91bmRzRm9yQ3VzdG9tU3dpcGVWaWV3
cy5pc0VtcHR5KCkpCiAgICAgICAgIHdpbmRvd0NhcHR1cmVSZWN0ID0gYm91bmRzRm9yQ3VzdG9t
U3dpcGVWaWV3czsKLSAgICBlbHNlCi0gICAgICAgIHdpbmRvd0NhcHR1cmVSZWN0ID0gW3NlbGYg
Y29udmVydFJlY3Q6c2VsZi5ib3VuZHMgdG9WaWV3Om5pbF07CisgICAgZWxzZSB7CisgICAgICAg
IE5TUmVjdCB1bm9ic2N1cmVkQm91bmRzID0gc2VsZi5ib3VuZHM7CisgICAgICAgIGZsb2F0IHRv
cENvbnRlbnRJbnNldCA9IF9kYXRhLT5fcGFnZS0+dG9wQ29udGVudEluc2V0KCk7CisgICAgICAg
IHVub2JzY3VyZWRCb3VuZHMub3JpZ2luLnkgKz0gdG9wQ29udGVudEluc2V0OworICAgICAgICB1
bm9ic2N1cmVkQm91bmRzLnNpemUuaGVpZ2h0IC09IHRvcENvbnRlbnRJbnNldDsKKyAgICAgICAg
d2luZG93Q2FwdHVyZVJlY3QgPSBbc2VsZiBjb252ZXJ0UmVjdDp1bm9ic2N1cmVkQm91bmRzIHRv
VmlldzpuaWxdOworICAgIH0KIAogICAgIE5TUmVjdCB3aW5kb3dDYXB0dXJlU2NyZWVuUmVjdCA9
IFt3aW5kb3cgY29udmVydFJlY3RUb1NjcmVlbjp3aW5kb3dDYXB0dXJlUmVjdF07CiAgICAgQ0dS
ZWN0IHdpbmRvd1NjcmVlblJlY3Q7CkBAIC0zODkzLDYgKzM4OTgsMTIgQEAgc3RhdGljIE5TU3Ry
aW5nICpwYXRoV2l0aFVuaXF1ZUZpbGVuYW1lRm9yUGF0aChOU1N0cmluZyAqcGF0aCkKICAgICBf
ZGF0YS0+X2dlc3R1cmVDb250cm9sbGVyLT5zZXRDdXN0b21Td2lwZVZpZXdzKHZpZXdzKTsKIH0K
IAorLSAodm9pZClfc2V0Q3VzdG9tU3dpcGVWaWV3c1RvcENvbnRlbnRJbnNldDooZmxvYXQpdG9w
Q29udGVudEluc2V0Cit7CisgICAgW3NlbGYgX2Vuc3VyZUdlc3R1cmVDb250cm9sbGVyXTsKKyAg
ICBfZGF0YS0+X2dlc3R1cmVDb250cm9sbGVyLT5zZXRDdXN0b21Td2lwZVZpZXdzVG9wQ29udGVu
dEluc2V0KHRvcENvbnRlbnRJbnNldCk7Cit9CisKIC0gKEJPT0wpX3RyeVRvU3dpcGVXaXRoRXZl
bnQ6KE5TRXZlbnQgKilldmVudCBpZ25vcmluZ1Bpbm5lZFN0YXRlOihCT09MKWlnbm9yaW5nUGlu
bmVkU3RhdGUKIHsKICAgICBpZiAoIV9kYXRhLT5fYWxsb3dzQmFja0ZvcndhcmROYXZpZ2F0aW9u
R2VzdHVyZXMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1ZpZXdH
ZXN0dXJlQ29udHJvbGxlci5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9WaWV3R2Vz
dHVyZUNvbnRyb2xsZXIuaAppbmRleCA5MTFhMzM0Li4yOTM0YzJhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1ZpZXdHZXN0dXJlQ29udHJvbGxlci5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvVmlld0dlc3R1cmVDb250cm9sbGVyLmgKQEAgLTk0
LDYgKzk0LDcgQEAgcHVibGljOgogICAgIHZvaWQgd2hlZWxFdmVudFdhc05vdEhhbmRsZWRCeVdl
YkNvcmUoTlNFdmVudCAqKTsKIAogICAgIHZvaWQgc2V0Q3VzdG9tU3dpcGVWaWV3cyhWZWN0b3I8
UmV0YWluUHRyPE5TVmlldz4+IHZpZXdzKSB7IG1fY3VzdG9tU3dpcGVWaWV3cyA9IHN0ZDo6bW92
ZSh2aWV3cyk7IH0KKyAgICB2b2lkIHNldEN1c3RvbVN3aXBlVmlld3NUb3BDb250ZW50SW5zZXQo
ZmxvYXQgdG9wQ29udGVudEluc2V0KSB7IG1fY3VzdG9tU3dpcGVWaWV3c1RvcENvbnRlbnRJbnNl
dCA9IHRvcENvbnRlbnRJbnNldDsgfQogICAgIFdlYkNvcmU6OkZsb2F0UmVjdCB3aW5kb3dSZWxh
dGl2ZUJvdW5kc0ZvckN1c3RvbVN3aXBlVmlld3MoKSBjb25zdDsKIAogICAgIHZvaWQgZW5kQWN0
aXZlR2VzdHVyZSgpOwpAQCAtMTMwLDcgKzEzMSwxMSBAQCBwcml2YXRlOgogICAgIHZvaWQgZW5k
U3dpcGVHZXN0dXJlKFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0qIHRhcmdldEl0ZW0sIGJvb2wgY2Fu
Y2VsbGVkKTsKICAgICBib29sIGRlbHRhSXNTdWZmaWNpZW50VG9CZWdpblN3aXBlKE5TRXZlbnQg
Kik7CiAgICAgYm9vbCBzY3JvbGxFdmVudENhbkJlY29tZVN3aXBlKE5TRXZlbnQgKiwgU3dpcGVE
aXJlY3Rpb24mKTsKLSAgICBXZWJDb3JlOjpJT1N1cmZhY2UqIHJldHJpZXZlU25hcHNob3RGb3JJ
dGVtKFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0qKTsKKyAgICBXZWJDb3JlOjpJT1N1cmZhY2UqIHJl
dHJpZXZlU25hcHNob3RGb3JJdGVtKFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0qLCBXZWJDb3JlOjpG
bG9hdFNpemUgc3dpcGVMYXllclNpemUsIGZsb2F0IHRvcENvbnRlbnRJbnNldCk7CisKKyAgICBD
QUxheWVyICpkZXRlcm1pbmVTbmFwc2hvdExheWVyUGFyZW50KCk7CisgICAgQ0FMYXllciAqZGV0
ZXJtaW5lTGF5ZXJBZGphY2VudFRvU25hcHNob3RGb3JQYXJlbnQoU3dpcGVEaXJlY3Rpb24sIENB
TGF5ZXIgKnNuYXBzaG90TGF5ZXJQYXJlbnQpOworICAgIHZvaWQgYXBwbHlEZWJ1Z2dpbmdQcm9w
ZXJ0aWVzVG9Td2lwZVZpZXdzKCk7CiAjZW5kaWYKICAgICAKICAgICBXZWJQYWdlUHJveHkmIG1f
d2ViUGFnZVByb3h5OwpAQCAtMTU1LDExICsxNjAsMTMgQEAgcHJpdmF0ZToKICAgICBib29sIG1f
ZnJhbWVIYW5kbGVzTWFnbmlmaWNhdGlvbkdlc3R1cmU7CiAKICAgICBSZXRhaW5QdHI8V0tTd2lw
ZUNhbmNlbGxhdGlvblRyYWNrZXI+IG1fc3dpcGVDYW5jZWxsYXRpb25UcmFja2VyOworICAgIFJl
dGFpblB0cjxDQUxheWVyPiBtX3N3aXBlTGF5ZXI7CiAgICAgUmV0YWluUHRyPENBTGF5ZXI+IG1f
c3dpcGVTbmFwc2hvdExheWVyOwogICAgIFZlY3RvcjxSZXRhaW5QdHI8Q0FMYXllcj4+IG1fY3Vy
cmVudFN3aXBlTGl2ZUxheWVyczsKIAogICAgIFN3aXBlVHJhbnNpdGlvblN0eWxlIG1fc3dpcGVU
cmFuc2l0aW9uU3R5bGU7CiAgICAgVmVjdG9yPFJldGFpblB0cjxOU1ZpZXc+PiBtX2N1c3RvbVN3
aXBlVmlld3M7CisgICAgZmxvYXQgbV9jdXN0b21Td2lwZVZpZXdzVG9wQ29udGVudEluc2V0Owog
ICAgIFdlYkNvcmU6OkZsb2F0UmVjdCBtX2N1cnJlbnRTd2lwZUN1c3RvbVZpZXdCb3VuZHM7CiAK
ICAgICAvLyBJZiB3ZSBuZWVkIHRvIHdhaXQgZm9yIGNvbnRlbnQgdG8gZGVjaWRlIGlmIGl0IGlz
IGdvaW5nIHRvIGNvbnN1bWUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9t
YWMvVmlld0dlc3R1cmVDb250cm9sbGVyTWFjLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L21hYy9WaWV3R2VzdHVyZUNvbnRyb2xsZXJNYWMubW0KaW5kZXggYmRmZmFlNi4uMzI2ZjU4ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9WaWV3R2VzdHVyZUNvbnRy
b2xsZXJNYWMubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9WaWV3R2VzdHVy
ZUNvbnRyb2xsZXJNYWMubW0KQEAgLTU0LDcgKzU0LDcgQEAKICsgKENBRmlsdGVyICopZmlsdGVy
V2l0aFR5cGU6KE5TU3RyaW5nICopdHlwZTsKIEBlbmQKIAotZXh0ZXJuIE5TU3RyaW5nICogY29u
c3Qga0NBRmlsdGVyR2F1c3NpYW5CbHVyOworZXh0ZXJuIE5TU3RyaW5nICogY29uc3Qga0NBRmls
dGVyQ29sb3JJbnZlcnQ7CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCkBAIC0xMDIsNiAr
MTAyLDcgQEAgVmlld0dlc3R1cmVDb250cm9sbGVyOjpWaWV3R2VzdHVyZUNvbnRyb2xsZXIoV2Vi
UGFnZVByb3h5JiB3ZWJQYWdlUHJveHkpCiAgICAgLCBtX3Zpc2libGVDb250ZW50UmVjdElzVmFs
aWQoZmFsc2UpCiAgICAgLCBtX2ZyYW1lSGFuZGxlc01hZ25pZmljYXRpb25HZXN0dXJlKGZhbHNl
KQogICAgICwgbV9zd2lwZVRyYW5zaXRpb25TdHlsZShTd2lwZVRyYW5zaXRpb25TdHlsZTo6T3Zl
cmxhcCkKKyAgICAsIG1fY3VzdG9tU3dpcGVWaWV3c1RvcENvbnRlbnRJbnNldCgwKQogICAgICwg
bV9wZW5kaW5nU3dpcGVSZWFzb24oUGVuZGluZ1N3aXBlUmVhc29uOjpOb25lKQogICAgICwgbV9z
aG91bGRJZ25vcmVQaW5uZWRTdGF0ZShmYWxzZSkKIHsKQEAgLTM5Nyw2ICszOTgsNyBAQCBGbG9h
dFJlY3QgVmlld0dlc3R1cmVDb250cm9sbGVyOjp3aW5kb3dSZWxhdGl2ZUJvdW5kc0ZvckN1c3Rv
bVN3aXBlVmlld3MoKSBjb25zdAogICAgIEZsb2F0UmVjdCBzd2lwZUFyZWE7CiAgICAgZm9yIChj
b25zdCBhdXRvJiB2aWV3IDogbV9jdXN0b21Td2lwZVZpZXdzKQogICAgICAgICBzd2lwZUFyZWEu
dW5pdGUoW3ZpZXcgY29udmVydFJlY3Q6W3ZpZXcgYm91bmRzXSB0b1ZpZXc6bmlsXSk7CisgICAg
c3dpcGVBcmVhLnNldEhlaWdodChzd2lwZUFyZWEuaGVpZ2h0KCkgLSBtX2N1c3RvbVN3aXBlVmll
d3NUb3BDb250ZW50SW5zZXQpOwogICAgIHJldHVybiBzd2lwZUFyZWE7CiB9CiAKQEAgLTQyNiw3
ICs0MjgsMzAgQEAgc3RhdGljIENBTGF5ZXIgKmxlYXN0Q29tbW9uQW5jZXN0b3JMYXllcihWZWN0
b3I8UmV0YWluUHRyPENBTGF5ZXI+PiYgbGF5ZXJzKQogICAgIHJldHVybiBsaXZlTGF5ZXJQYXRo
c0Zyb21Sb290WzBdW3Nob3J0ZXN0UGF0aExlbmd0aF07CiB9CiAKLUlPU3VyZmFjZSogVmlld0dl
c3R1cmVDb250cm9sbGVyOjpyZXRyaWV2ZVNuYXBzaG90Rm9ySXRlbShXZWJCYWNrRm9yd2FyZExp
c3RJdGVtKiB0YXJnZXRJdGVtKQorQ0FMYXllciAqVmlld0dlc3R1cmVDb250cm9sbGVyOjpkZXRl
cm1pbmVTbmFwc2hvdExheWVyUGFyZW50KCkKK3sKKyAgICBpZiAobV9jdXJyZW50U3dpcGVMaXZl
TGF5ZXJzLnNpemUoKSA9PSAxKQorICAgICAgICByZXR1cm4gW21fY3VycmVudFN3aXBlTGl2ZUxh
eWVyc1swXSBzdXBlcmxheWVyXTsKKworICAgIC8vIFdlIGluc2VydCBvdXIgc25hcHNob3QgaW50
byB0aGUgZmlyc3Qgc2hhcmVkIHN1cGVybGF5ZXIgb2YgdGhlIGN1c3RvbSB2aWV3cycgbGF5ZXIs
IGFib3ZlIHRoZSBmcm9udG1vc3Qgb3IgYmVsb3cgdGhlIGJvdHRvbW1vc3QgbGF5ZXIuCisgICAg
cmV0dXJuIGxlYXN0Q29tbW9uQW5jZXN0b3JMYXllcihtX2N1cnJlbnRTd2lwZUxpdmVMYXllcnMp
OworfQorCitDQUxheWVyICpWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OmRldGVybWluZUxheWVyQWRq
YWNlbnRUb1NuYXBzaG90Rm9yUGFyZW50KFN3aXBlRGlyZWN0aW9uIGRpcmVjdGlvbiwgQ0FMYXll
ciAqc25hcHNob3RMYXllclBhcmVudCkKK3sKKyAgICAvLyBJZiB3ZSBoYXZlIGN1c3RvbSBzd2lw
aW5nIHZpZXdzLCB3ZSBhc3N1bWUgdGhhdCB0aGUgdmlld3Mgd2VyZSBwYXNzZWQgdG8gdXMgaW4g
YmFjay10by1mcm9udCB6LW9yZGVyLgorICAgIENBTGF5ZXIgKmxheWVyQWRqYWNlbnRUb1NuYXBz
aG90ID0gZGlyZWN0aW9uID09IFN3aXBlRGlyZWN0aW9uOjpMZWZ0ID8gbV9jdXJyZW50U3dpcGVM
aXZlTGF5ZXJzLmZpcnN0KCkuZ2V0KCkgOiBtX2N1cnJlbnRTd2lwZUxpdmVMYXllcnMubGFzdCgp
LmdldCgpOworCisgICAgaWYgKG1fY3VycmVudFN3aXBlTGl2ZUxheWVycy5zaXplKCkgPT0gMSkK
KyAgICAgICAgcmV0dXJuIGxheWVyQWRqYWNlbnRUb1NuYXBzaG90OworCisgICAgLy8gSWYgdGhl
IGxheWVycyBhcmUgbm90IGFsbCBzaWJsaW5ncywgZmluZCB0aGUgY2hpbGQgb2YgdGhlIGxheWVy
IHdlJ3JlIGdvaW5nIHRvIGluc2VydCB0aGUgc25hcHNob3QgaW50byB3aGljaCBoYXMgdGhlIGZy
b250bW9zdC9ib3R0b21tb3N0IGxheWVyIGFzIGEgY2hpbGQuCisgICAgd2hpbGUgKHNuYXBzaG90
TGF5ZXJQYXJlbnQgIT0gbGF5ZXJBZGphY2VudFRvU25hcHNob3Quc3VwZXJsYXllcikKKyAgICAg
ICAgbGF5ZXJBZGphY2VudFRvU25hcHNob3QgPSBsYXllckFkamFjZW50VG9TbmFwc2hvdC5zdXBl
cmxheWVyOworICAgIHJldHVybiBsYXllckFkamFjZW50VG9TbmFwc2hvdDsKK30KKworSU9TdXJm
YWNlKiBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OnJldHJpZXZlU25hcHNob3RGb3JJdGVtKFdlYkJh
Y2tGb3J3YXJkTGlzdEl0ZW0qIHRhcmdldEl0ZW0sIEZsb2F0U2l6ZSBzd2lwZUxheWVyU2l6ZSwg
ZmxvYXQgdG9wQ29udGVudEluc2V0KQogewogICAgIFZpZXdTbmFwc2hvdFN0b3JlOjpTbmFwc2hv
dCBzbmFwc2hvdDsKICAgICBpZiAoIVZpZXdTbmFwc2hvdFN0b3JlOjpzaGFyZWQoKS5nZXRTbmFw
c2hvdCh0YXJnZXRJdGVtLCBzbmFwc2hvdCkpCkBAIC00MzUsMTIgKzQ2MCw0OCBAQCBJT1N1cmZh
Y2UqIFZpZXdHZXN0dXJlQ29udHJvbGxlcjo6cmV0cmlldmVTbmFwc2hvdEZvckl0ZW0oV2ViQmFj
a0ZvcndhcmRMaXN0SXRlbQogICAgIGlmICghc25hcHNob3Quc3VyZmFjZSkKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAKKyAgICBmbG9hdCBkZXZpY2VTY2FsZUZhY3RvciA9IG1fd2ViUGFnZVBy
b3h5LmRldmljZVNjYWxlRmFjdG9yKCk7CisgICAgaWYgKHNuYXBzaG90LmRldmljZVNjYWxlRmFj
dG9yICE9IGRldmljZVNjYWxlRmFjdG9yKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAg
IEZsb2F0U2l6ZSB1bm9ic2N1cmVkU3dpcGVMYXllclNpemVJbkRldmljZUNvb3JkaW5hdGVzID0g
c3dpcGVMYXllclNpemUgLSBGbG9hdFNpemUoMCwgdG9wQ29udGVudEluc2V0KTsKKyAgICB1bm9i
c2N1cmVkU3dpcGVMYXllclNpemVJbkRldmljZUNvb3JkaW5hdGVzLnNjYWxlKGRldmljZVNjYWxl
RmFjdG9yKTsKKyAgICBpZiAoc25hcHNob3Quc3VyZmFjZS0+c2l6ZSgpICE9IHVub2JzY3VyZWRT
d2lwZUxheWVyU2l6ZUluRGV2aWNlQ29vcmRpbmF0ZXMpCisgICAgICAgIHJldHVybiBudWxscHRy
OworCiAgICAgaWYgKHNuYXBzaG90LnN1cmZhY2UtPnNldElzVm9sYXRpbGUoZmFsc2UpICE9IElP
U3VyZmFjZTo6U3VyZmFjZVN0YXRlOjpWYWxpZCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAK
ICAgICByZXR1cm4gc25hcHNob3Quc3VyZmFjZS5nZXQoKTsKIH0KIAorc3RhdGljIGJvb2wgbGF5
ZXJHZW9tZXRyeUZsaXBwZWRUb1Jvb3QoQ0FMYXllciAqbGF5ZXIpCit7CisgICAgYm9vbCBmbGlw
cGVkID0gZmFsc2U7CisgICAgQ0FMYXllciAqcGFyZW50ID0gbGF5ZXI7CisgICAgd2hpbGUgKHBh
cmVudCkgeworICAgICAgICBpZiAocGFyZW50LmlzR2VvbWV0cnlGbGlwcGVkKQorICAgICAgICAg
ICAgZmxpcHBlZCA9ICFmbGlwcGVkOworICAgICAgICBwYXJlbnQgPSBwYXJlbnQuc3VwZXJsYXll
cjsKKyAgICB9CisgICAgcmV0dXJuIGZsaXBwZWQ7Cit9CisKK3ZvaWQgVmlld0dlc3R1cmVDb250
cm9sbGVyOjphcHBseURlYnVnZ2luZ1Byb3BlcnRpZXNUb1N3aXBlVmlld3MoKQoreworI2lmIF9f
TUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA5MAorICAgIENBRmlsdGVyKiBmaWx0
ZXIgPSBbQ0FGaWx0ZXIgZmlsdGVyV2l0aFR5cGU6a0NBRmlsdGVyQ29sb3JJbnZlcnRdOworICAg
IFttX3N3aXBlTGF5ZXIgc2V0RmlsdGVyczpAWyBmaWx0ZXIgXV07CisjZW5kaWYKKyAgICBbbV9z
d2lwZUxheWVyIHNldEJhY2tncm91bmRDb2xvcjpbTlNDb2xvciBibHVlQ29sb3JdLkNHQ29sb3Jd
OworICAgIFttX3N3aXBlTGF5ZXIgc2V0Qm9yZGVyQ29sb3I6W05TQ29sb3IgeWVsbG93Q29sb3Jd
LkNHQ29sb3JdOworICAgIFttX3N3aXBlTGF5ZXIgc2V0Qm9yZGVyV2lkdGg6NF07CisKKyAgICBb
bV9zd2lwZVNuYXBzaG90TGF5ZXIgc2V0QmFja2dyb3VuZENvbG9yOltOU0NvbG9yIGdyZWVuQ29s
b3JdLkNHQ29sb3JdOworICAgIFttX3N3aXBlU25hcHNob3RMYXllciBzZXRCb3JkZXJDb2xvcjpb
TlNDb2xvciByZWRDb2xvcl0uQ0dDb2xvcl07CisgICAgW21fc3dpcGVTbmFwc2hvdExheWVyIHNl
dEJvcmRlcldpZHRoOjJdOworfQorCiB2b2lkIFZpZXdHZXN0dXJlQ29udHJvbGxlcjo6YmVnaW5T
d2lwZUdlc3R1cmUoV2ViQmFja0ZvcndhcmRMaXN0SXRlbSogdGFyZ2V0SXRlbSwgU3dpcGVEaXJl
Y3Rpb24gZGlyZWN0aW9uKQogewogICAgIEFTU0VSVChtX2N1cnJlbnRTd2lwZUxpdmVMYXllcnMu
aXNFbXB0eSgpKTsKQEAgLTQ0OSwyMSArNTEwLDE2IEBAIHZvaWQgVmlld0dlc3R1cmVDb250cm9s
bGVyOjpiZWdpblN3aXBlR2VzdHVyZShXZWJCYWNrRm9yd2FyZExpc3RJdGVtKiB0YXJnZXRJdGVt
CiAKICAgICBDQUxheWVyICpyb290Q29udGVudExheWVyID0gbV93ZWJQYWdlUHJveHkuYWNjZWxl
cmF0ZWRDb21wb3NpdGluZ1Jvb3RMYXllcigpOwogCisgICAgbV9zd2lwZUxheWVyID0gYWRvcHRO
UyhbW0NBTGF5ZXIgYWxsb2NdIGluaXRdKTsKICAgICBtX3N3aXBlU25hcHNob3RMYXllciA9IGFk
b3B0TlMoW1tDQUxheWVyIGFsbG9jXSBpbml0XSk7Ci0gICAgW21fc3dpcGVTbmFwc2hvdExheWVy
IHNldEJhY2tncm91bmRDb2xvcjpDR0NvbG9yR2V0Q29uc3RhbnRDb2xvcihrQ0dDb2xvcldoaXRl
KV07Ci0KLSAgICBJT1N1cmZhY2UqIHNuYXBzaG90ID0gcmV0cmlldmVTbmFwc2hvdEZvckl0ZW0o
dGFyZ2V0SXRlbSk7Ci0KLSAgICBpZiAoc25hcHNob3QpIHsKLSAgICAgICAgbV9jdXJyZW50U3dp
cGVTbmFwc2hvdFN1cmZhY2UgPSBzbmFwc2hvdDsKLSAgICAgICAgW21fc3dpcGVTbmFwc2hvdExh
eWVyIHNldENvbnRlbnRzOihpZClzbmFwc2hvdC0+c3VyZmFjZSgpXTsKLSAgICB9Ci0KICAgICBt
X2N1cnJlbnRTd2lwZUN1c3RvbVZpZXdCb3VuZHMgPSB3aW5kb3dSZWxhdGl2ZUJvdW5kc0ZvckN1
c3RvbVN3aXBlVmlld3MoKTsKIAogICAgIEZsb2F0UmVjdCBzd2lwZUFyZWE7CisgICAgZmxvYXQg
dG9wQ29udGVudEluc2V0ID0gMDsKICAgICBpZiAoIW1fY3VzdG9tU3dpcGVWaWV3cy5pc0VtcHR5
KCkpIHsKKyAgICAgICAgdG9wQ29udGVudEluc2V0ID0gbV9jdXN0b21Td2lwZVZpZXdzVG9wQ29u
dGVudEluc2V0OwogICAgICAgICBzd2lwZUFyZWEgPSBtX2N1cnJlbnRTd2lwZUN1c3RvbVZpZXdC
b3VuZHM7CisgICAgICAgIHN3aXBlQXJlYS5leHBhbmQoMCwgdG9wQ29udGVudEluc2V0KTsKIAog
ICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIHZpZXcgOiBtX2N1c3RvbVN3aXBlVmlld3MpIHsKICAg
ICAgICAgICAgIENBTGF5ZXIgKmxheWVyID0gW3ZpZXcgbGF5ZXJdOwpAQCAtNDcxLDMzICs1Mjcs
NTEgQEAgdm9pZCBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OmJlZ2luU3dpcGVHZXN0dXJlKFdlYkJh
Y2tGb3J3YXJkTGlzdEl0ZW0qIHRhcmdldEl0ZW0KICAgICAgICAgICAgIG1fY3VycmVudFN3aXBl
TGl2ZUxheWVycy5hcHBlbmQobGF5ZXIpOwogICAgICAgICB9CiAgICAgfSBlbHNlIHsKLSAgICAg
ICAgc3dpcGVBcmVhID0gRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgbV93ZWJQYWdlUHJveHkuZHJh
d2luZ0FyZWEoKS0+c2l6ZSgpKTsKKyAgICAgICAgc3dpcGVBcmVhID0gRmxvYXRSZWN0KEZsb2F0
UG9pbnQoKSwgbV93ZWJQYWdlUHJveHkudmlld1NpemUoKSk7CisgICAgICAgIHRvcENvbnRlbnRJ
bnNldCA9IG1fd2ViUGFnZVByb3h5LnRvcENvbnRlbnRJbnNldCgpOwogICAgICAgICBtX2N1cnJl
bnRTd2lwZUxpdmVMYXllcnMuYXBwZW5kKHJvb3RDb250ZW50TGF5ZXIpOwogICAgIH0KIAorICAg
IENBTGF5ZXIgKnNuYXBzaG90TGF5ZXJQYXJlbnQgPSBkZXRlcm1pbmVTbmFwc2hvdExheWVyUGFy
ZW50KCk7CisgICAgYm9vbCBnZW9tZXRyeUlzRmxpcHBlZFRvUm9vdCA9IGxheWVyR2VvbWV0cnlG
bGlwcGVkVG9Sb290KHNuYXBzaG90TGF5ZXJQYXJlbnQpOworCisgICAgSU9TdXJmYWNlKiBzbmFw
c2hvdCA9IHJldHJpZXZlU25hcHNob3RGb3JJdGVtKHRhcmdldEl0ZW0sIHN3aXBlQXJlYS5zaXpl
KCksIHRvcENvbnRlbnRJbnNldCk7CisgICAgaWYgKHNuYXBzaG90KSB7CisgICAgICAgIG1fY3Vy
cmVudFN3aXBlU25hcHNob3RTdXJmYWNlID0gc25hcHNob3Q7CisgICAgICAgIFttX3N3aXBlU25h
cHNob3RMYXllciBzZXRDb250ZW50czooaWQpc25hcHNob3QtPnN1cmZhY2UoKV07CisgICAgfQor
CisgICAgW21fc3dpcGVMYXllciBzZXRCYWNrZ3JvdW5kQ29sb3I6Q0dDb2xvckdldENvbnN0YW50
Q29sb3Ioa0NHQ29sb3JXaGl0ZSldOworICAgIFttX3N3aXBlTGF5ZXIgc2V0QW5jaG9yUG9pbnQ6
Q0dQb2ludFplcm9dOworICAgIFttX3N3aXBlTGF5ZXIgc2V0RnJhbWU6c3dpcGVBcmVhXTsKKyAg
ICBbbV9zd2lwZUxheWVyIHNldE5hbWU6QCJHZXN0dXJlIFN3aXBlIFJvb3QgTGF5ZXIiXTsKKyAg
ICBbbV9zd2lwZUxheWVyIHNldEdlb21ldHJ5RmxpcHBlZDpnZW9tZXRyeUlzRmxpcHBlZFRvUm9v
dF07CisgICAgW21fc3dpcGVMYXllciB3ZWJfZGlzYWJsZUFsbEFjdGlvbnNdOworCiAgICAgW21f
c3dpcGVTbmFwc2hvdExheWVyIHNldENvbnRlbnRzR3Jhdml0eTprQ0FHcmF2aXR5VG9wTGVmdF07
CiAgICAgW21fc3dpcGVTbmFwc2hvdExheWVyIHNldENvbnRlbnRzU2NhbGU6bV93ZWJQYWdlUHJv
eHkuZGV2aWNlU2NhbGVGYWN0b3IoKV07CiAgICAgW21fc3dpcGVTbmFwc2hvdExheWVyIHNldEFu
Y2hvclBvaW50OkNHUG9pbnRaZXJvXTsKLSAgICBbbV9zd2lwZVNuYXBzaG90TGF5ZXIgc2V0RnJh
bWU6c3dpcGVBcmVhXTsKKyAgICBbbV9zd2lwZVNuYXBzaG90TGF5ZXIgc2V0RnJhbWU6Q0dSZWN0
TWFrZSgwLCAwLCBzd2lwZUFyZWEud2lkdGgoKSwgc3dpcGVBcmVhLmhlaWdodCgpIC0gdG9wQ29u
dGVudEluc2V0KV07CiAgICAgW21fc3dpcGVTbmFwc2hvdExheWVyIHNldE5hbWU6QCJHZXN0dXJl
IFN3aXBlIFNuYXBzaG90IExheWVyIl07CiAgICAgW21fc3dpcGVTbmFwc2hvdExheWVyIHdlYl9k
aXNhYmxlQWxsQWN0aW9uc107CiAKLSAgICBpZiAobV93ZWJQYWdlUHJveHkucHJlZmVyZW5jZXMo
KS52aWV3R2VzdHVyZURlYnVnZ2luZ0VuYWJsZWQoKSkgewotICAgICAgICBDQUZpbHRlciogZmls
dGVyID0gW0NBRmlsdGVyIGZpbHRlcldpdGhUeXBlOmtDQUZpbHRlckdhdXNzaWFuQmx1cl07Ci0g
ICAgICAgIFtmaWx0ZXIgc2V0VmFsdWU6W05TTnVtYmVyIG51bWJlcldpdGhGbG9hdDozXSBmb3JL
ZXk6QCJpbnB1dFJhZGl1cyJdOwotICAgICAgICBbbV9zd2lwZVNuYXBzaG90TGF5ZXIgc2V0Rmls
dGVyczpAW2ZpbHRlcl1dOwotICAgIH0KKyAgICBbbV9zd2lwZUxheWVyIGFkZFN1YmxheWVyOm1f
c3dpcGVTbmFwc2hvdExheWVyLmdldCgpXTsKKworICAgIGlmIChtX3dlYlBhZ2VQcm94eS5wcmVm
ZXJlbmNlcygpLnZpZXdHZXN0dXJlRGVidWdnaW5nRW5hYmxlZCgpKQorICAgICAgICBhcHBseURl
YnVnZ2luZ1Byb3BlcnRpZXNUb1N3aXBlVmlld3MoKTsKIAogICAgIC8vIFdlIGRvbid0IGtub3cg
ZW5vdWdoIGFib3V0IHRoZSBjdXN0b20gdmlld3MnIGhpZXJhcmNoeSB0byBhcHBseSBhIHNoYWRv
dy4KICAgICBpZiAobV9zd2lwZVRyYW5zaXRpb25TdHlsZSA9PSBTd2lwZVRyYW5zaXRpb25TdHls
ZTo6T3ZlcmxhcCAmJiBtX2N1c3RvbVN3aXBlVmlld3MuaXNFbXB0eSgpKSB7Ci0gICAgICAgIFJl
dGFpblB0cjxDR1BhdGhSZWY+IHNoYWRvd1BhdGggPSBhZG9wdENGKENHUGF0aENyZWF0ZVdpdGhS
ZWN0KFttX3N3aXBlU25hcHNob3RMYXllciBib3VuZHNdLCAwKSk7Ci0KICAgICAgICAgaWYgKGRp
cmVjdGlvbiA9PSBTd2lwZURpcmVjdGlvbjo6TGVmdCkgeworICAgICAgICAgICAgZmxvYXQgdG9w
Q29udGVudEluc2V0ID0gbV93ZWJQYWdlUHJveHkudG9wQ29udGVudEluc2V0KCk7CisgICAgICAg
ICAgICBGbG9hdFJlY3Qgc2hhZG93UmVjdChGbG9hdFBvaW50KDAsIHRvcENvbnRlbnRJbnNldCks
IG1fd2ViUGFnZVByb3h5LnZpZXdTaXplKCkgLSBGbG9hdFNpemUoMCwgdG9wQ29udGVudEluc2V0
KSk7CisgICAgICAgICAgICBSZXRhaW5QdHI8Q0dQYXRoUmVmPiBzaGFkb3dQYXRoID0gYWRvcHRD
RihDR1BhdGhDcmVhdGVXaXRoUmVjdChzaGFkb3dSZWN0LCAwKSk7CiAgICAgICAgICAgICBbcm9v
dENvbnRlbnRMYXllciBzZXRTaGFkb3dDb2xvcjpDR0NvbG9yR2V0Q29uc3RhbnRDb2xvcihrQ0dD
b2xvckJsYWNrKV07CiAgICAgICAgICAgICBbcm9vdENvbnRlbnRMYXllciBzZXRTaGFkb3dPcGFj
aXR5OnN3aXBlT3ZlcmxheVNoYWRvd09wYWNpdHldOwogICAgICAgICAgICAgW3Jvb3RDb250ZW50
TGF5ZXIgc2V0U2hhZG93UmFkaXVzOnN3aXBlT3ZlcmxheVNoYWRvd1JhZGl1c107CiAgICAgICAg
ICAgICBbcm9vdENvbnRlbnRMYXllciBzZXRTaGFkb3dQYXRoOnNoYWRvd1BhdGguZ2V0KCldOwog
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgUmV0YWluUHRyPENHUGF0aFJlZj4gc2hhZG93
UGF0aCA9IGFkb3B0Q0YoQ0dQYXRoQ3JlYXRlV2l0aFJlY3QoW21fc3dpcGVTbmFwc2hvdExheWVy
IGJvdW5kc10sIDApKTsKICAgICAgICAgICAgIFttX3N3aXBlU25hcHNob3RMYXllciBzZXRTaGFk
b3dDb2xvcjpDR0NvbG9yR2V0Q29uc3RhbnRDb2xvcihrQ0dDb2xvckJsYWNrKV07CiAgICAgICAg
ICAgICBbbV9zd2lwZVNuYXBzaG90TGF5ZXIgc2V0U2hhZG93T3BhY2l0eTpzd2lwZU92ZXJsYXlT
aGFkb3dPcGFjaXR5XTsKICAgICAgICAgICAgIFttX3N3aXBlU25hcHNob3RMYXllciBzZXRTaGFk
b3dSYWRpdXM6c3dpcGVPdmVybGF5U2hhZG93UmFkaXVzXTsKQEAgLTUwNSwyNSArNTc5LDExIEBA
IHZvaWQgVmlld0dlc3R1cmVDb250cm9sbGVyOjpiZWdpblN3aXBlR2VzdHVyZShXZWJCYWNrRm9y
d2FyZExpc3RJdGVtKiB0YXJnZXRJdGVtCiAgICAgICAgIH0KICAgICB9CiAKLSAgICAvLyBJZiB3
ZSBoYXZlIGN1c3RvbSBzd2lwaW5nIHZpZXdzLCB3ZSBhc3N1bWUgdGhhdCB0aGUgdmlld3Mgd2Vy
ZSBwYXNzZWQgdG8gdXMgaW4gYmFjay10by1mcm9udCB6LW9yZGVyLgotICAgIENBTGF5ZXIgKmxh
eWVyQWRqYWNlbnRUb1NuYXBzaG90ID0gZGlyZWN0aW9uID09IFN3aXBlRGlyZWN0aW9uOjpMZWZ0
ID8gbV9jdXJyZW50U3dpcGVMaXZlTGF5ZXJzLmZpcnN0KCkuZ2V0KCkgOiBtX2N1cnJlbnRTd2lw
ZUxpdmVMYXllcnMubGFzdCgpLmdldCgpOwotICAgIENBTGF5ZXIgKnNuYXBzaG90TGF5ZXJQYXJl
bnQ7Ci0KLSAgICBpZiAobV9jdXJyZW50U3dpcGVMaXZlTGF5ZXJzLnNpemUoKSA9PSAxKQotICAg
ICAgICBzbmFwc2hvdExheWVyUGFyZW50ID0gW21fY3VycmVudFN3aXBlTGl2ZUxheWVyc1swXSBz
dXBlcmxheWVyXTsKLSAgICBlbHNlIHsKLSAgICAgICAgLy8gV2UgaW5zZXJ0IG91ciBzbmFwc2hv
dCBpbnRvIHRoZSBmaXJzdCBzaGFyZWQgc3VwZXJsYXllciBvZiB0aGUgY3VzdG9tIHZpZXdzJyBs
YXllciwgYWJvdmUgdGhlIGZyb250bW9zdCBvciBiZWxvdyB0aGUgYm90dG9tbW9zdCBsYXllci4K
LSAgICAgICAgc25hcHNob3RMYXllclBhcmVudCA9IGxlYXN0Q29tbW9uQW5jZXN0b3JMYXllciht
X2N1cnJlbnRTd2lwZUxpdmVMYXllcnMpOwotCi0gICAgICAgIC8vIElmIHRoZSBsYXllcnMgYXJl
IG5vdCBhbGwgc2libGluZ3MsIGZpbmQgdGhlIGNoaWxkIG9mIHRoZSBsYXllciB3ZSdyZSBnb2lu
ZyB0byBpbnNlcnQgdGhlIHNuYXBzaG90IGludG8gd2hpY2ggaGFzIHRoZSBmcm9udG1vc3QvYm90
dG9tbW9zdCBsYXllciBhcyBhIGNoaWxkLgotICAgICAgICB3aGlsZSAoc25hcHNob3RMYXllclBh
cmVudCAhPSBsYXllckFkamFjZW50VG9TbmFwc2hvdC5zdXBlcmxheWVyKQotICAgICAgICAgICAg
bGF5ZXJBZGphY2VudFRvU25hcHNob3QgPSBsYXllckFkamFjZW50VG9TbmFwc2hvdC5zdXBlcmxh
eWVyOwotICAgIH0KLQorICAgIENBTGF5ZXIgKmxheWVyQWRqYWNlbnRUb1NuYXBzaG90ID0gZGV0
ZXJtaW5lTGF5ZXJBZGphY2VudFRvU25hcHNob3RGb3JQYXJlbnQoZGlyZWN0aW9uLCBzbmFwc2hv
dExheWVyUGFyZW50KTsKICAgICBpZiAoZGlyZWN0aW9uID09IFN3aXBlRGlyZWN0aW9uOjpMZWZ0
KQotICAgICAgICBbc25hcHNob3RMYXllclBhcmVudCBpbnNlcnRTdWJsYXllcjptX3N3aXBlU25h
cHNob3RMYXllci5nZXQoKSBiZWxvdzpsYXllckFkamFjZW50VG9TbmFwc2hvdF07CisgICAgICAg
IFtzbmFwc2hvdExheWVyUGFyZW50IGluc2VydFN1YmxheWVyOm1fc3dpcGVMYXllci5nZXQoKSBi
ZWxvdzpsYXllckFkamFjZW50VG9TbmFwc2hvdF07CiAgICAgZWxzZQotICAgICAgICBbc25hcHNo
b3RMYXllclBhcmVudCBpbnNlcnRTdWJsYXllcjptX3N3aXBlU25hcHNob3RMYXllci5nZXQoKSBh
Ym92ZTpsYXllckFkamFjZW50VG9TbmFwc2hvdF07CisgICAgICAgIFtzbmFwc2hvdExheWVyUGFy
ZW50IGluc2VydFN1YmxheWVyOm1fc3dpcGVMYXllci5nZXQoKSBhYm92ZTpsYXllckFkamFjZW50
VG9TbmFwc2hvdF07CiB9CiAKIHZvaWQgVmlld0dlc3R1cmVDb250cm9sbGVyOjpoYW5kbGVTd2lw
ZUdlc3R1cmUoV2ViQmFja0ZvcndhcmRMaXN0SXRlbSogdGFyZ2V0SXRlbSwgZG91YmxlIHByb2dy
ZXNzLCBTd2lwZURpcmVjdGlvbiBkaXJlY3Rpb24pCkBAIC01NDMsOSArNjAzLDkgQEAgdm9pZCBW
aWV3R2VzdHVyZUNvbnRyb2xsZXI6OmhhbmRsZVN3aXBlR2VzdHVyZShXZWJCYWNrRm9yd2FyZExp
c3RJdGVtKiB0YXJnZXRJdGUKIAogICAgIGlmIChtX3N3aXBlVHJhbnNpdGlvblN0eWxlID09IFN3
aXBlVHJhbnNpdGlvblN0eWxlOjpPdmVybGFwKSB7CiAgICAgICAgIGlmIChkaXJlY3Rpb24gPT0g
U3dpcGVEaXJlY3Rpb246OlJpZ2h0KQotICAgICAgICAgICAgW21fc3dpcGVTbmFwc2hvdExheWVy
IHNldFRyYW5zZm9ybTpDQVRyYW5zZm9ybTNETWFrZVRyYW5zbGF0aW9uKHdpZHRoICsgc3dpcGlu
Z0xheWVyT2Zmc2V0LCAwLCAwKV07CisgICAgICAgICAgICBbbV9zd2lwZUxheWVyIHNldFRyYW5z
Zm9ybTpDQVRyYW5zZm9ybTNETWFrZVRyYW5zbGF0aW9uKHdpZHRoICsgc3dpcGluZ0xheWVyT2Zm
c2V0LCAwLCAwKV07CiAgICAgfSBlbHNlIGlmIChtX3N3aXBlVHJhbnNpdGlvblN0eWxlID09IFN3
aXBlVHJhbnNpdGlvblN0eWxlOjpQdXNoKQotICAgICAgICBbbV9zd2lwZVNuYXBzaG90TGF5ZXIg
c2V0VHJhbnNmb3JtOkNBVHJhbnNmb3JtM0RNYWtlVHJhbnNsYXRpb24oKGRpcmVjdGlvbiA9PSBT
d2lwZURpcmVjdGlvbjo6TGVmdCA/IC13aWR0aCA6IHdpZHRoKSArIHN3aXBpbmdMYXllck9mZnNl
dCwgMCwgMCldOworICAgICAgICBbbV9zd2lwZUxheWVyIHNldFRyYW5zZm9ybTpDQVRyYW5zZm9y
bTNETWFrZVRyYW5zbGF0aW9uKChkaXJlY3Rpb24gPT0gU3dpcGVEaXJlY3Rpb246OkxlZnQgPyAt
d2lkdGggOiB3aWR0aCkgKyBzd2lwaW5nTGF5ZXJPZmZzZXQsIDAsIDApXTsKIAogICAgIGZvciAo
Y29uc3QgYXV0byYgbGF5ZXIgOiBtX2N1cnJlbnRTd2lwZUxpdmVMYXllcnMpIHsKICAgICAgICAg
aWYgKG1fc3dpcGVUcmFuc2l0aW9uU3R5bGUgPT0gU3dpcGVUcmFuc2l0aW9uU3R5bGU6Ok92ZXJs
YXApIHsKQEAgLTYyMSw2ICs2ODEsOSBAQCB2b2lkIFZpZXdHZXN0dXJlQ29udHJvbGxlcjo6cmVt
b3ZlU3dpcGVTbmFwc2hvdCgpCiAgICAgW21fc3dpcGVTbmFwc2hvdExheWVyIHJlbW92ZUZyb21T
dXBlcmxheWVyXTsKICAgICBtX3N3aXBlU25hcHNob3RMYXllciA9IG51bGxwdHI7CiAKKyAgICBb
bV9zd2lwZUxheWVyIHJlbW92ZUZyb21TdXBlcmxheWVyXTsKKyAgICBtX3N3aXBlTGF5ZXIgPSBu
dWxscHRyOworCiAgICAgbV9jdXJyZW50U3dpcGVMaXZlTGF5ZXJzLmNsZWFyKCk7CiAKICAgICBt
X2FjdGl2ZUdlc3R1cmVUeXBlID0gVmlld0dlc3R1cmVUeXBlOjpOb25lOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9WaWV3U25hcHNob3RTdG9yZS5oIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL21hYy9WaWV3U25hcHNob3RTdG9yZS5oCmluZGV4IDA1MTNmNDEu
LjgwNzk2MWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvVmlld1Nu
YXBzaG90U3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1ZpZXdTbmFw
c2hvdFN0b3JlLmgKQEAgLTU1LDYgKzU1LDcgQEAgcHVibGljOgogCiAgICAgICAgIHN0ZDo6Y2hy
b25vOjpzdGVhZHlfY2xvY2s6OnRpbWVfcG9pbnQgY3JlYXRpb25UaW1lOwogICAgICAgICB1aW50
NjRfdCByZW5kZXJUcmVlU2l6ZTsKKyAgICAgICAgZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3I7CiAK
ICAgICAgICAgdm9pZCBjbGVhckltYWdlKCk7CiAgICAgICAgIGJvb2wgaGFzSW1hZ2UoKSBjb25z
dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvVmlld1NuYXBzaG90
U3RvcmUubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1ZpZXdTbmFwc2hvdFN0b3Jl
Lm1tCmluZGV4IDEzYWQ5YWIuLjhiZTBjOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9tYWMvVmlld1NuYXBzaG90U3RvcmUubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL21hYy9WaWV3U25hcHNob3RTdG9yZS5tbQpAQCAtMTQzLDE0ICsxNDMsMjEgQEAgdm9p
ZCBWaWV3U25hcHNob3RTdG9yZTo6cmVjb3JkU25hcHNob3QoV2ViUGFnZVByb3h5JiB3ZWJQYWdl
UHJveHkpCiAgICAgcHJ1bmVTbmFwc2hvdHMod2ViUGFnZVByb3h5KTsKIAogICAgIFN0cmluZyBv
bGRTbmFwc2hvdFVVSUQgPSBpdGVtLT5zbmFwc2hvdFVVSUQoKTsKLSAgICBpZiAoIW9sZFNuYXBz
aG90VVVJRC5pc0VtcHR5KCkpCi0gICAgICAgIG1fc25hcHNob3RNYXAucmVtb3ZlKG9sZFNuYXBz
aG90VVVJRCk7CisgICAgaWYgKCFvbGRTbmFwc2hvdFVVSUQuaXNFbXB0eSgpKSB7CisgICAgICAg
IGNvbnN0IGF1dG8mIG9sZFNuYXBzaG90SXRlciA9IG1fc25hcHNob3RNYXAuZmluZChvbGRTbmFw
c2hvdFVVSUQpOworICAgICAgICBpZiAob2xkU25hcHNob3RJdGVyICE9IG1fc25hcHNob3RNYXAu
ZW5kKCkpIHsKKyAgICAgICAgICAgIGlmIChvbGRTbmFwc2hvdEl0ZXItPnZhbHVlLmhhc0ltYWdl
KCkpCisgICAgICAgICAgICAgICAgbV9zbmFwc2hvdHNXaXRoSW1hZ2VzQ291bnQtLTsKKyAgICAg
ICAgICAgIG1fc25hcHNob3RNYXAucmVtb3ZlKG9sZFNuYXBzaG90SXRlcik7CisgICAgICAgIH0K
KyAgICB9CiAKICAgICBpdGVtLT5zZXRTbmFwc2hvdFVVSUQoY3JlYXRlQ2Fub25pY2FsVVVJRFN0
cmluZygpKTsKICAgICAKICAgICBTbmFwc2hvdCBzbmFwc2hvdDsKICAgICBzbmFwc2hvdC5jcmVh
dGlvblRpbWUgPSBzdGQ6OmNocm9ubzo6c3RlYWR5X2Nsb2NrOjpub3coKTsKICAgICBzbmFwc2hv
dC5yZW5kZXJUcmVlU2l6ZSA9IHdlYlBhZ2VQcm94eS5yZW5kZXJUcmVlU2l6ZSgpOworICAgIHNu
YXBzaG90LmRldmljZVNjYWxlRmFjdG9yID0gd2ViUGFnZVByb3h5LmRldmljZVNjYWxlRmFjdG9y
KCk7CiAKICNpZiBVU0UoSU9TVVJGQUNFKQogICAgIHNuYXBzaG90LnN1cmZhY2UgPSBjcmVhdGVJ
T1N1cmZhY2VGcm9tSW1hZ2Uoc25hcHNob3RJbWFnZS5nZXQoKSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>230251</attachid>
            <date>2014-04-26 19:03:36 -0700</date>
            <delta_ts>2014-04-28 10:48:47 -0700</delta_ts>
            <desc>pulled crash fix into another bug</desc>
            <filename>tci-size-swipe.diff</filename>
            <type>text/plain</type>
            <size>22032</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCBhMmYyMDBiLi4wYTI4NGI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjkg
QEAKKzIwMTQtMDQtMjYgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisK
KyAgICAgICAgV2ViS2l0MiBWaWV3IEdlc3R1cmVzIChTd2lwZSk6IERpc2NhcmQgc25hcHNob3Rz
IG1hZGUgd2l0aCBhIGRpZmZlcmVudCB2aWV3IHNpemUvcGl4ZWwgZGVuc2l0eQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMyMTE1CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2Ugc2hvdWxkbid0IHRyeSB0
byB1c2Ugc25hcHNob3RzIGlmIHRoZXkgbm8gbG9uZ2VyIG1hdGNoIHRoZSBkZXN0aW5hdGlvbiB2
aWV3IHNpemUuCisgICAgICAgIFRvIGRvIHRoaXMsIHdlIG5lZWQgYW4gYWNjdXJhdGUgcGljdHVy
ZSBvZiB0aGUgdG9wQ29udGVudEluc2V0LCBib3RoIGZvciB0aGUgV2ViIHZpZXcsCisgICAgICAg
IGFuZCBmb3IgYW55IGN1c3RvbSB2aWV3cywgYmVjYXVzZSB3ZSBkb24ndCB3YW50IHRvIGluY2x1
ZGUgdGhlIGluc2V0IGFyZWEgaW4gdGhlIHNuYXBzaG90LAorICAgICAgICBhbmQgd2UgZG9uJ3Qg
d2FudCB0byByZWplY3Qgc25hcHNob3RzIHRoYXQgZGlmZmVyIGZyb20gdGhlIGN1cnJlbnQgdmll
dyBvbmx5IGJlY2F1c2UgdGhleSBoYXZlIGFuIGluc2V0IG9yIG5vdC4KKworICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tWaWV3UHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvbWFjL1dLVmlldy5tbToKKyAgICAgICAgKC1bV0tWaWV3IF90YWtlVmlld1NuYXBzaG90XSk6
CisgICAgICAgICgtW1dLVmlldyBfc2V0Q3VzdG9tU3dpcGVWaWV3c1RvcENvbnRlbnRJbnNldDpd
KToKKyAgICAgICAgQWRkIGFuZCBwbHVtYiB0aHJvdWdoIGEgdG9wQ29udGVudEluc2V0IHByb3Bl
cnR5IHRvIGFwcGx5IHRvIHRoZSBjdXN0b20gc3dpcGUgdmlld3MuCisgICAgICAgIEZvciBzaW1w
bGljaXRseSdzIHNha2UgaW4gdGhlIG11bHRpLXZpZXcgY2FzZSwgaXQgaXMgYXBwbGllZCBpbiB3
aW5kb3cgY29vcmRpbmF0ZXMsCisgICAgICAgIHNvIGNsaWVudHMgd2lsbCBoYXZlIHRvIGRvIGNv
bnZlcnNpb25zIGlmIG5lY2Vzc2FyeS4KKyAgICAgICAgRG9uJ3QgaW5jbHVkZSB0aGUgdG9wIGNv
bnRlbnQgaW5zZXQgaW4gdGhlIHNuYXBzaG90IHRoYXQgaXMgdGFrZW4uCisKKyAgICAgICAgKiBV
SVByb2Nlc3MvbWFjL1ZpZXdHZXN0dXJlQ29udHJvbGxlci5oOgorICAgICAgICAoV2ViS2l0OjpW
aWV3R2VzdHVyZUNvbnRyb2xsZXI6OnNldEN1c3RvbVN3aXBlVmlld3NUb3BDb250ZW50SW5zZXQp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvVmlld0dlc3R1cmVDb250cm9sbGVyTWFjLm1tOgor
ICAgICAgICAoV2ViS2l0OjpWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OlZpZXdHZXN0dXJlQ29udHJv
bGxlcik6CisgICAgICAgIChXZWJLaXQ6OlZpZXdHZXN0dXJlQ29udHJvbGxlcjo6d2luZG93UmVs
YXRpdmVCb3VuZHNGb3JDdXN0b21Td2lwZVZpZXdzKToKKyAgICAgICAgQXBwbHkgdGhlIGFmb3Jl
bWVudGlvbmVkIGN1c3RvbSBzd2lwZSB2aWV3IHRvcCBjb250ZW50IGluc2V0LgorCisgICAgICAg
IChXZWJLaXQ6OlZpZXdHZXN0dXJlQ29udHJvbGxlcjo6ZGV0ZXJtaW5lU25hcHNob3RMYXllclBh
cmVudCk6CisgICAgICAgIChXZWJLaXQ6OlZpZXdHZXN0dXJlQ29udHJvbGxlcjo6ZGV0ZXJtaW5l
TGF5ZXJBZGphY2VudFRvU25hcHNob3RGb3JQYXJlbnQpOgorICAgICAgICBGYWN0b3IgdGhlc2Ug
b3V0IG9mIGJlZ2luU3dpcGVHZXN0dXJlLgorCisgICAgICAgIChXZWJLaXQ6OlZpZXdHZXN0dXJl
Q29udHJvbGxlcjo6cmV0cmlldmVTbmFwc2hvdEZvckl0ZW0pOgorICAgICAgICBEb24ndCByZXR1
cm4gYSBzbmFwc2hvdCBpZiB0aGUgY3VycmVudCBkZXZpY2VTY2FsZUZhY3RvciBkb2Vzbid0IG1h
dGNoIHRoYXQKKyAgICAgICAgYXQgd2hpY2ggdGhlIHNuYXBzaG90IHdhcyB0YWtlbiwgb3IgaWYg
dGhlIHNpemUgb2YgdGhlIHNuYXBzaG90IGRvZXNuJ3QgbWF0Y2gKKyAgICAgICAgdGhlIHVub2Jz
Y3VyZWQgcGFydCBvZiB0aGUgc25hcHNob3QgbGF5ZXIgKHRoZSBsYXllcidzIHNpemUgc2FucyB0
b3AgY29udGVudCBpbnNldCkuCisKKyAgICAgICAgKFdlYktpdDo6bGF5ZXJHZW9tZXRyeUZsaXBw
ZWRUb1Jvb3QpOiBBZGRlZC4KKyAgICAgICAgRGV0ZXJtaW5lIHdoZXRoZXIgZ2VvbWV0cnkgZmxp
cHBpbmcgb2NjdXJzIGJldHdlZW4gYSBsYXllciBhbmQgdGhlIHJvb3Qgb2YgdGhlIHRyZWUgaXQg
aXMgaW4uCisKKyAgICAgICAgKFdlYktpdDo6Vmlld0dlc3R1cmVDb250cm9sbGVyOjphcHBseURl
YnVnZ2luZ1Byb3BlcnRpZXNUb1N3aXBlVmlld3MpOgorICAgICAgICBGYWN0b3Igb3V0IGRlYnVn
Z2luZyBsYXllciBwcm9wZXJ0aWVzLCBhbmQgYWRkIHNvbWUgYm9yZGVycyBhbmQgYmFja2dyb3Vu
ZHMgdG8gb3VyIGxheWVycy4KKyAgICAgICAgSSBzd2l0Y2hlZCB0byBpbnZlcnQgaW5zdGVhZCBv
ZiBibHVyIGJlY2F1c2UgYmx1ciBtYWtlcyB0aGUgYm9yZGVycyBoYXJkIHRvIHVzZS4KKworICAg
ICAgICAoV2ViS2l0OjpWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OmJlZ2luU3dpcGVHZXN0dXJlKToK
KyAgICAgICAgQWRkIGFuIGFkZGl0aW9uYWwgbGF5ZXIsIHRoZSBzd2lwZUxheWVyLCB3aGljaCBp
cyB0aGUgcGFyZW50IG9mIHRoZSBzd2lwZVNuYXBzaG90TGF5ZXIuCisgICAgICAgIFdlIHVzZSB0
aGlzIGxheWVyIHRvIGNvbXBlbnNhdGUgZm9yIGdlb21ldHJ5IGZsaXBwaW5nLCBzaW5jZSB3ZSBk
b24ndCBuZWNlc3NhcmlseQorICAgICAgICBrbm93IHRoZSBzdHJ1Y3R1cmUgb2YgdGhlIGxheWVy
IHRyZWUgYWhlYWQgb2YgdGltZSB3aGVuIGluc2VydGluZyBzbmFwc2hvdHMgaW50byB0aGUKKyAg
ICAgICAgY2xpZW50J3MgbGF5ZXIgdHJlZSwgaW4gdGhlIGN1c3RvbSBzd2lwZSB2aWV3IGNhc2Uu
CisgICAgICAgIFRoZSBzd2lwZSBsYXllciBpcyBhbHdheXMgdGhlIGZ1bGwgc2l6ZSBvZiB0aGUg
dmlldywgaW5jbHVkaW5nIHRvcENvbnRlbnRJbnNldCwgYW5kCisgICAgICAgIGhhcyBhIHdoaXRl
IGJhY2tncm91bmQgaW4gb3JkZXIgdG8gZmlsbCBpbiB0aGF0IHNwYWNlLiBUaGUgc25hcHNob3Qg
bGF5ZXIgaXMgdGhlIHNpemUKKyAgICAgICAgb2YgdGhlIHZpZXcgKmV4Y2x1ZGluZyogdGhlIHRv
cENvbnRlbnRJbnNldCwgd2hpY2ggc2hvdWxkIG1hdGNoIHRoZSBzaXplIG9mIHRoZSBzbmFwc2hv
dCBpbWFnZQorICAgICAgICBpdHNlbGYgKGFuZCB3ZSByZWplY3QgdGhlIGltYWdlIGFuZCBqdXN0
IHBhaW50IHdoaXRlIGlmIHRoaXMgaXMgbm90IHRoZSBjYXNlKS4KKworICAgICAgICAoV2ViS2l0
OjpWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OmhhbmRsZVN3aXBlR2VzdHVyZSk6CisgICAgICAgIChX
ZWJLaXQ6OlZpZXdHZXN0dXJlQ29udHJvbGxlcjo6cmVtb3ZlU3dpcGVTbmFwc2hvdCk6CisgICAg
ICAgIE1vdmUgYW5kIHJlbW92ZSB0aGUgbmV3IHN3aXBlTGF5ZXIuCisKKyAgICAgICAgKiBVSVBy
b2Nlc3MvbWFjL1ZpZXdTbmFwc2hvdFN0b3JlLmg6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9W
aWV3U25hcHNob3RTdG9yZS5tbToKKyAgICAgICAgKFdlYktpdDo6Vmlld1NuYXBzaG90U3RvcmU6
OnJlY29yZFNuYXBzaG90KToKKyAgICAgICAgU3RvcmUgdGhlIGRldmljZVNjYWxlRmFjdG9yIGF0
IHRoZSB0aW1lIHRoZSBzbmFwc2hvdCB3YXMgdGFrZW4uCisgICAgICAgIEZpeCBhIGJ1ZyB3aGVy
ZSB0aGUgY291bnQgb2Ygc25hcHNob3RzIHdpdGggbGl2ZSBpbWFnZXMgd2FzIHRvbyBoaWdoCisg
ICAgICAgIGJlY2F1c2Ugd2Ugd2VyZSBmYWlsaW5nIHRvIGRlY3JlbWVudCBpdCB3aGVuIHJlcGxh
Y2luZyBhIHNuYXBzaG90IG9mCisgICAgICAgIGFuIGV4aXN0aW5nIGl0ZW0gd2l0aCBhIGZyZXNo
IG9uZS4KKwogMjAxNC0wNC0yNiAgRGFuIEJlcm5zdGVpbiAgPG1pdHpAYXBwbGUuY29tPgogCiAg
ICAgICAgIFtDb2NvYV0gUmVuYW1lIGEgYnVuZGxlIGZvcm0gZGVsZWdhdGUgbWV0aG9kCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVmlld1ByaXZhdGUu
aCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tWaWV3UHJpdmF0ZS5oCmlu
ZGV4IDJlZjFkN2QuLjVkN2I0OTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tWaWV3UHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tWaWV3UHJpdmF0ZS5oCkBAIC0xMDYsNiArMTA2LDggQEAKIAogLy8gVmll
d3MgbXVzdCBiZSBsYXllci1iYWNrZWQsIGhhdmUgbm8gdHJhbnNmb3JtIGFwcGxpZWQsIGJlIGlu
IGJhY2stdG8tZnJvbnQgei1vcmRlciwgYW5kIHRoZSB3aG9sZSBzZXQgbXVzdCBiZSBhIGNvbnRp
Z3VvdXMgb3BhcXVlIHJlY3RhbmdsZS4KIC0gKHZvaWQpX3NldEN1c3RvbVN3aXBlVmlld3M6KE5T
QXJyYXkgKiljdXN0b21Td2lwZVZpZXdzOworLy8gVGhlIHRvcCBjb250ZW50IGluc2V0IGlzIGFw
cGxpZWQgaW4gdGhlIHdpbmRvdydzIGNvb3JkaW5hdGUgc3BhY2UsIHRvIHRoZSB1bmlvbiBvZiB0
aGUgY3VzdG9tIHN3aXBlIHZpZXcncyBmcmFtZXMuCistICh2b2lkKV9zZXRDdXN0b21Td2lwZVZp
ZXdzVG9wQ29udGVudEluc2V0OihmbG9hdCl0b3BDb250ZW50SW5zZXQ7CiAtIChCT09MKV90cnlU
b1N3aXBlV2l0aEV2ZW50OihOU0V2ZW50ICopZXZlbnQgaWdub3JpbmdQaW5uZWRTdGF0ZTooQk9P
TClpZ25vcmluZ1Bpbm5lZFN0YXRlOwogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvbWFjL1dLVmlldy5tbQppbmRleCAxNjFmNjRjLi42OTgwOTQwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcubW0KKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tCkBAIC0zMDQzLDggKzMwNDMsMTMgQEAg
c3RhdGljIHZvaWQgY3JlYXRlU2FuZGJveEV4dGVuc2lvbnNGb3JGaWxlVXBsb2FkKE5TUGFzdGVi
b2FyZCAqcGFzdGVib2FyZCwgU2FuZGIKICAgICBGbG9hdFJlY3QgYm91bmRzRm9yQ3VzdG9tU3dp
cGVWaWV3cyA9IF9kYXRhLT5fZ2VzdHVyZUNvbnRyb2xsZXItPndpbmRvd1JlbGF0aXZlQm91bmRz
Rm9yQ3VzdG9tU3dpcGVWaWV3cygpOwogICAgIGlmICghYm91bmRzRm9yQ3VzdG9tU3dpcGVWaWV3
cy5pc0VtcHR5KCkpCiAgICAgICAgIHdpbmRvd0NhcHR1cmVSZWN0ID0gYm91bmRzRm9yQ3VzdG9t
U3dpcGVWaWV3czsKLSAgICBlbHNlCi0gICAgICAgIHdpbmRvd0NhcHR1cmVSZWN0ID0gW3NlbGYg
Y29udmVydFJlY3Q6c2VsZi5ib3VuZHMgdG9WaWV3Om5pbF07CisgICAgZWxzZSB7CisgICAgICAg
IE5TUmVjdCB1bm9ic2N1cmVkQm91bmRzID0gc2VsZi5ib3VuZHM7CisgICAgICAgIGZsb2F0IHRv
cENvbnRlbnRJbnNldCA9IF9kYXRhLT5fcGFnZS0+dG9wQ29udGVudEluc2V0KCk7CisgICAgICAg
IHVub2JzY3VyZWRCb3VuZHMub3JpZ2luLnkgKz0gdG9wQ29udGVudEluc2V0OworICAgICAgICB1
bm9ic2N1cmVkQm91bmRzLnNpemUuaGVpZ2h0IC09IHRvcENvbnRlbnRJbnNldDsKKyAgICAgICAg
d2luZG93Q2FwdHVyZVJlY3QgPSBbc2VsZiBjb252ZXJ0UmVjdDp1bm9ic2N1cmVkQm91bmRzIHRv
VmlldzpuaWxdOworICAgIH0KIAogICAgIE5TUmVjdCB3aW5kb3dDYXB0dXJlU2NyZWVuUmVjdCA9
IFt3aW5kb3cgY29udmVydFJlY3RUb1NjcmVlbjp3aW5kb3dDYXB0dXJlUmVjdF07CiAgICAgQ0dS
ZWN0IHdpbmRvd1NjcmVlblJlY3Q7CkBAIC0zODkzLDYgKzM4OTgsMTIgQEAgc3RhdGljIE5TU3Ry
aW5nICpwYXRoV2l0aFVuaXF1ZUZpbGVuYW1lRm9yUGF0aChOU1N0cmluZyAqcGF0aCkKICAgICBf
ZGF0YS0+X2dlc3R1cmVDb250cm9sbGVyLT5zZXRDdXN0b21Td2lwZVZpZXdzKHZpZXdzKTsKIH0K
IAorLSAodm9pZClfc2V0Q3VzdG9tU3dpcGVWaWV3c1RvcENvbnRlbnRJbnNldDooZmxvYXQpdG9w
Q29udGVudEluc2V0Cit7CisgICAgW3NlbGYgX2Vuc3VyZUdlc3R1cmVDb250cm9sbGVyXTsKKyAg
ICBfZGF0YS0+X2dlc3R1cmVDb250cm9sbGVyLT5zZXRDdXN0b21Td2lwZVZpZXdzVG9wQ29udGVu
dEluc2V0KHRvcENvbnRlbnRJbnNldCk7Cit9CisKIC0gKEJPT0wpX3RyeVRvU3dpcGVXaXRoRXZl
bnQ6KE5TRXZlbnQgKilldmVudCBpZ25vcmluZ1Bpbm5lZFN0YXRlOihCT09MKWlnbm9yaW5nUGlu
bmVkU3RhdGUKIHsKICAgICBpZiAoIV9kYXRhLT5fYWxsb3dzQmFja0ZvcndhcmROYXZpZ2F0aW9u
R2VzdHVyZXMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1ZpZXdH
ZXN0dXJlQ29udHJvbGxlci5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9WaWV3R2Vz
dHVyZUNvbnRyb2xsZXIuaAppbmRleCA5MTFhMzM0Li4yOTM0YzJhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1ZpZXdHZXN0dXJlQ29udHJvbGxlci5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvVmlld0dlc3R1cmVDb250cm9sbGVyLmgKQEAgLTk0
LDYgKzk0LDcgQEAgcHVibGljOgogICAgIHZvaWQgd2hlZWxFdmVudFdhc05vdEhhbmRsZWRCeVdl
YkNvcmUoTlNFdmVudCAqKTsKIAogICAgIHZvaWQgc2V0Q3VzdG9tU3dpcGVWaWV3cyhWZWN0b3I8
UmV0YWluUHRyPE5TVmlldz4+IHZpZXdzKSB7IG1fY3VzdG9tU3dpcGVWaWV3cyA9IHN0ZDo6bW92
ZSh2aWV3cyk7IH0KKyAgICB2b2lkIHNldEN1c3RvbVN3aXBlVmlld3NUb3BDb250ZW50SW5zZXQo
ZmxvYXQgdG9wQ29udGVudEluc2V0KSB7IG1fY3VzdG9tU3dpcGVWaWV3c1RvcENvbnRlbnRJbnNl
dCA9IHRvcENvbnRlbnRJbnNldDsgfQogICAgIFdlYkNvcmU6OkZsb2F0UmVjdCB3aW5kb3dSZWxh
dGl2ZUJvdW5kc0ZvckN1c3RvbVN3aXBlVmlld3MoKSBjb25zdDsKIAogICAgIHZvaWQgZW5kQWN0
aXZlR2VzdHVyZSgpOwpAQCAtMTMwLDcgKzEzMSwxMSBAQCBwcml2YXRlOgogICAgIHZvaWQgZW5k
U3dpcGVHZXN0dXJlKFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0qIHRhcmdldEl0ZW0sIGJvb2wgY2Fu
Y2VsbGVkKTsKICAgICBib29sIGRlbHRhSXNTdWZmaWNpZW50VG9CZWdpblN3aXBlKE5TRXZlbnQg
Kik7CiAgICAgYm9vbCBzY3JvbGxFdmVudENhbkJlY29tZVN3aXBlKE5TRXZlbnQgKiwgU3dpcGVE
aXJlY3Rpb24mKTsKLSAgICBXZWJDb3JlOjpJT1N1cmZhY2UqIHJldHJpZXZlU25hcHNob3RGb3JJ
dGVtKFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0qKTsKKyAgICBXZWJDb3JlOjpJT1N1cmZhY2UqIHJl
dHJpZXZlU25hcHNob3RGb3JJdGVtKFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0qLCBXZWJDb3JlOjpG
bG9hdFNpemUgc3dpcGVMYXllclNpemUsIGZsb2F0IHRvcENvbnRlbnRJbnNldCk7CisKKyAgICBD
QUxheWVyICpkZXRlcm1pbmVTbmFwc2hvdExheWVyUGFyZW50KCk7CisgICAgQ0FMYXllciAqZGV0
ZXJtaW5lTGF5ZXJBZGphY2VudFRvU25hcHNob3RGb3JQYXJlbnQoU3dpcGVEaXJlY3Rpb24sIENB
TGF5ZXIgKnNuYXBzaG90TGF5ZXJQYXJlbnQpOworICAgIHZvaWQgYXBwbHlEZWJ1Z2dpbmdQcm9w
ZXJ0aWVzVG9Td2lwZVZpZXdzKCk7CiAjZW5kaWYKICAgICAKICAgICBXZWJQYWdlUHJveHkmIG1f
d2ViUGFnZVByb3h5OwpAQCAtMTU1LDExICsxNjAsMTMgQEAgcHJpdmF0ZToKICAgICBib29sIG1f
ZnJhbWVIYW5kbGVzTWFnbmlmaWNhdGlvbkdlc3R1cmU7CiAKICAgICBSZXRhaW5QdHI8V0tTd2lw
ZUNhbmNlbGxhdGlvblRyYWNrZXI+IG1fc3dpcGVDYW5jZWxsYXRpb25UcmFja2VyOworICAgIFJl
dGFpblB0cjxDQUxheWVyPiBtX3N3aXBlTGF5ZXI7CiAgICAgUmV0YWluUHRyPENBTGF5ZXI+IG1f
c3dpcGVTbmFwc2hvdExheWVyOwogICAgIFZlY3RvcjxSZXRhaW5QdHI8Q0FMYXllcj4+IG1fY3Vy
cmVudFN3aXBlTGl2ZUxheWVyczsKIAogICAgIFN3aXBlVHJhbnNpdGlvblN0eWxlIG1fc3dpcGVU
cmFuc2l0aW9uU3R5bGU7CiAgICAgVmVjdG9yPFJldGFpblB0cjxOU1ZpZXc+PiBtX2N1c3RvbVN3
aXBlVmlld3M7CisgICAgZmxvYXQgbV9jdXN0b21Td2lwZVZpZXdzVG9wQ29udGVudEluc2V0Owog
ICAgIFdlYkNvcmU6OkZsb2F0UmVjdCBtX2N1cnJlbnRTd2lwZUN1c3RvbVZpZXdCb3VuZHM7CiAK
ICAgICAvLyBJZiB3ZSBuZWVkIHRvIHdhaXQgZm9yIGNvbnRlbnQgdG8gZGVjaWRlIGlmIGl0IGlz
IGdvaW5nIHRvIGNvbnN1bWUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9t
YWMvVmlld0dlc3R1cmVDb250cm9sbGVyTWFjLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L21hYy9WaWV3R2VzdHVyZUNvbnRyb2xsZXJNYWMubW0KaW5kZXggYmRmZmFlNi4uMzI2ZjU4ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9WaWV3R2VzdHVyZUNvbnRy
b2xsZXJNYWMubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9WaWV3R2VzdHVy
ZUNvbnRyb2xsZXJNYWMubW0KQEAgLTU0LDcgKzU0LDcgQEAKICsgKENBRmlsdGVyICopZmlsdGVy
V2l0aFR5cGU6KE5TU3RyaW5nICopdHlwZTsKIEBlbmQKIAotZXh0ZXJuIE5TU3RyaW5nICogY29u
c3Qga0NBRmlsdGVyR2F1c3NpYW5CbHVyOworZXh0ZXJuIE5TU3RyaW5nICogY29uc3Qga0NBRmls
dGVyQ29sb3JJbnZlcnQ7CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCkBAIC0xMDIsNiAr
MTAyLDcgQEAgVmlld0dlc3R1cmVDb250cm9sbGVyOjpWaWV3R2VzdHVyZUNvbnRyb2xsZXIoV2Vi
UGFnZVByb3h5JiB3ZWJQYWdlUHJveHkpCiAgICAgLCBtX3Zpc2libGVDb250ZW50UmVjdElzVmFs
aWQoZmFsc2UpCiAgICAgLCBtX2ZyYW1lSGFuZGxlc01hZ25pZmljYXRpb25HZXN0dXJlKGZhbHNl
KQogICAgICwgbV9zd2lwZVRyYW5zaXRpb25TdHlsZShTd2lwZVRyYW5zaXRpb25TdHlsZTo6T3Zl
cmxhcCkKKyAgICAsIG1fY3VzdG9tU3dpcGVWaWV3c1RvcENvbnRlbnRJbnNldCgwKQogICAgICwg
bV9wZW5kaW5nU3dpcGVSZWFzb24oUGVuZGluZ1N3aXBlUmVhc29uOjpOb25lKQogICAgICwgbV9z
aG91bGRJZ25vcmVQaW5uZWRTdGF0ZShmYWxzZSkKIHsKQEAgLTM5Nyw2ICszOTgsNyBAQCBGbG9h
dFJlY3QgVmlld0dlc3R1cmVDb250cm9sbGVyOjp3aW5kb3dSZWxhdGl2ZUJvdW5kc0ZvckN1c3Rv
bVN3aXBlVmlld3MoKSBjb25zdAogICAgIEZsb2F0UmVjdCBzd2lwZUFyZWE7CiAgICAgZm9yIChj
b25zdCBhdXRvJiB2aWV3IDogbV9jdXN0b21Td2lwZVZpZXdzKQogICAgICAgICBzd2lwZUFyZWEu
dW5pdGUoW3ZpZXcgY29udmVydFJlY3Q6W3ZpZXcgYm91bmRzXSB0b1ZpZXc6bmlsXSk7CisgICAg
c3dpcGVBcmVhLnNldEhlaWdodChzd2lwZUFyZWEuaGVpZ2h0KCkgLSBtX2N1c3RvbVN3aXBlVmll
d3NUb3BDb250ZW50SW5zZXQpOwogICAgIHJldHVybiBzd2lwZUFyZWE7CiB9CiAKQEAgLTQyNiw3
ICs0MjgsMzAgQEAgc3RhdGljIENBTGF5ZXIgKmxlYXN0Q29tbW9uQW5jZXN0b3JMYXllcihWZWN0
b3I8UmV0YWluUHRyPENBTGF5ZXI+PiYgbGF5ZXJzKQogICAgIHJldHVybiBsaXZlTGF5ZXJQYXRo
c0Zyb21Sb290WzBdW3Nob3J0ZXN0UGF0aExlbmd0aF07CiB9CiAKLUlPU3VyZmFjZSogVmlld0dl
c3R1cmVDb250cm9sbGVyOjpyZXRyaWV2ZVNuYXBzaG90Rm9ySXRlbShXZWJCYWNrRm9yd2FyZExp
c3RJdGVtKiB0YXJnZXRJdGVtKQorQ0FMYXllciAqVmlld0dlc3R1cmVDb250cm9sbGVyOjpkZXRl
cm1pbmVTbmFwc2hvdExheWVyUGFyZW50KCkKK3sKKyAgICBpZiAobV9jdXJyZW50U3dpcGVMaXZl
TGF5ZXJzLnNpemUoKSA9PSAxKQorICAgICAgICByZXR1cm4gW21fY3VycmVudFN3aXBlTGl2ZUxh
eWVyc1swXSBzdXBlcmxheWVyXTsKKworICAgIC8vIFdlIGluc2VydCBvdXIgc25hcHNob3QgaW50
byB0aGUgZmlyc3Qgc2hhcmVkIHN1cGVybGF5ZXIgb2YgdGhlIGN1c3RvbSB2aWV3cycgbGF5ZXIs
IGFib3ZlIHRoZSBmcm9udG1vc3Qgb3IgYmVsb3cgdGhlIGJvdHRvbW1vc3QgbGF5ZXIuCisgICAg
cmV0dXJuIGxlYXN0Q29tbW9uQW5jZXN0b3JMYXllcihtX2N1cnJlbnRTd2lwZUxpdmVMYXllcnMp
OworfQorCitDQUxheWVyICpWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OmRldGVybWluZUxheWVyQWRq
YWNlbnRUb1NuYXBzaG90Rm9yUGFyZW50KFN3aXBlRGlyZWN0aW9uIGRpcmVjdGlvbiwgQ0FMYXll
ciAqc25hcHNob3RMYXllclBhcmVudCkKK3sKKyAgICAvLyBJZiB3ZSBoYXZlIGN1c3RvbSBzd2lw
aW5nIHZpZXdzLCB3ZSBhc3N1bWUgdGhhdCB0aGUgdmlld3Mgd2VyZSBwYXNzZWQgdG8gdXMgaW4g
YmFjay10by1mcm9udCB6LW9yZGVyLgorICAgIENBTGF5ZXIgKmxheWVyQWRqYWNlbnRUb1NuYXBz
aG90ID0gZGlyZWN0aW9uID09IFN3aXBlRGlyZWN0aW9uOjpMZWZ0ID8gbV9jdXJyZW50U3dpcGVM
aXZlTGF5ZXJzLmZpcnN0KCkuZ2V0KCkgOiBtX2N1cnJlbnRTd2lwZUxpdmVMYXllcnMubGFzdCgp
LmdldCgpOworCisgICAgaWYgKG1fY3VycmVudFN3aXBlTGl2ZUxheWVycy5zaXplKCkgPT0gMSkK
KyAgICAgICAgcmV0dXJuIGxheWVyQWRqYWNlbnRUb1NuYXBzaG90OworCisgICAgLy8gSWYgdGhl
IGxheWVycyBhcmUgbm90IGFsbCBzaWJsaW5ncywgZmluZCB0aGUgY2hpbGQgb2YgdGhlIGxheWVy
IHdlJ3JlIGdvaW5nIHRvIGluc2VydCB0aGUgc25hcHNob3QgaW50byB3aGljaCBoYXMgdGhlIGZy
b250bW9zdC9ib3R0b21tb3N0IGxheWVyIGFzIGEgY2hpbGQuCisgICAgd2hpbGUgKHNuYXBzaG90
TGF5ZXJQYXJlbnQgIT0gbGF5ZXJBZGphY2VudFRvU25hcHNob3Quc3VwZXJsYXllcikKKyAgICAg
ICAgbGF5ZXJBZGphY2VudFRvU25hcHNob3QgPSBsYXllckFkamFjZW50VG9TbmFwc2hvdC5zdXBl
cmxheWVyOworICAgIHJldHVybiBsYXllckFkamFjZW50VG9TbmFwc2hvdDsKK30KKworSU9TdXJm
YWNlKiBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OnJldHJpZXZlU25hcHNob3RGb3JJdGVtKFdlYkJh
Y2tGb3J3YXJkTGlzdEl0ZW0qIHRhcmdldEl0ZW0sIEZsb2F0U2l6ZSBzd2lwZUxheWVyU2l6ZSwg
ZmxvYXQgdG9wQ29udGVudEluc2V0KQogewogICAgIFZpZXdTbmFwc2hvdFN0b3JlOjpTbmFwc2hv
dCBzbmFwc2hvdDsKICAgICBpZiAoIVZpZXdTbmFwc2hvdFN0b3JlOjpzaGFyZWQoKS5nZXRTbmFw
c2hvdCh0YXJnZXRJdGVtLCBzbmFwc2hvdCkpCkBAIC00MzUsMTIgKzQ2MCw0OCBAQCBJT1N1cmZh
Y2UqIFZpZXdHZXN0dXJlQ29udHJvbGxlcjo6cmV0cmlldmVTbmFwc2hvdEZvckl0ZW0oV2ViQmFj
a0ZvcndhcmRMaXN0SXRlbQogICAgIGlmICghc25hcHNob3Quc3VyZmFjZSkKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAKKyAgICBmbG9hdCBkZXZpY2VTY2FsZUZhY3RvciA9IG1fd2ViUGFnZVBy
b3h5LmRldmljZVNjYWxlRmFjdG9yKCk7CisgICAgaWYgKHNuYXBzaG90LmRldmljZVNjYWxlRmFj
dG9yICE9IGRldmljZVNjYWxlRmFjdG9yKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAg
IEZsb2F0U2l6ZSB1bm9ic2N1cmVkU3dpcGVMYXllclNpemVJbkRldmljZUNvb3JkaW5hdGVzID0g
c3dpcGVMYXllclNpemUgLSBGbG9hdFNpemUoMCwgdG9wQ29udGVudEluc2V0KTsKKyAgICB1bm9i
c2N1cmVkU3dpcGVMYXllclNpemVJbkRldmljZUNvb3JkaW5hdGVzLnNjYWxlKGRldmljZVNjYWxl
RmFjdG9yKTsKKyAgICBpZiAoc25hcHNob3Quc3VyZmFjZS0+c2l6ZSgpICE9IHVub2JzY3VyZWRT
d2lwZUxheWVyU2l6ZUluRGV2aWNlQ29vcmRpbmF0ZXMpCisgICAgICAgIHJldHVybiBudWxscHRy
OworCiAgICAgaWYgKHNuYXBzaG90LnN1cmZhY2UtPnNldElzVm9sYXRpbGUoZmFsc2UpICE9IElP
U3VyZmFjZTo6U3VyZmFjZVN0YXRlOjpWYWxpZCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAK
ICAgICByZXR1cm4gc25hcHNob3Quc3VyZmFjZS5nZXQoKTsKIH0KIAorc3RhdGljIGJvb2wgbGF5
ZXJHZW9tZXRyeUZsaXBwZWRUb1Jvb3QoQ0FMYXllciAqbGF5ZXIpCit7CisgICAgYm9vbCBmbGlw
cGVkID0gZmFsc2U7CisgICAgQ0FMYXllciAqcGFyZW50ID0gbGF5ZXI7CisgICAgd2hpbGUgKHBh
cmVudCkgeworICAgICAgICBpZiAocGFyZW50LmlzR2VvbWV0cnlGbGlwcGVkKQorICAgICAgICAg
ICAgZmxpcHBlZCA9ICFmbGlwcGVkOworICAgICAgICBwYXJlbnQgPSBwYXJlbnQuc3VwZXJsYXll
cjsKKyAgICB9CisgICAgcmV0dXJuIGZsaXBwZWQ7Cit9CisKK3ZvaWQgVmlld0dlc3R1cmVDb250
cm9sbGVyOjphcHBseURlYnVnZ2luZ1Byb3BlcnRpZXNUb1N3aXBlVmlld3MoKQoreworI2lmIF9f
TUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA5MAorICAgIENBRmlsdGVyKiBmaWx0
ZXIgPSBbQ0FGaWx0ZXIgZmlsdGVyV2l0aFR5cGU6a0NBRmlsdGVyQ29sb3JJbnZlcnRdOworICAg
IFttX3N3aXBlTGF5ZXIgc2V0RmlsdGVyczpAWyBmaWx0ZXIgXV07CisjZW5kaWYKKyAgICBbbV9z
d2lwZUxheWVyIHNldEJhY2tncm91bmRDb2xvcjpbTlNDb2xvciBibHVlQ29sb3JdLkNHQ29sb3Jd
OworICAgIFttX3N3aXBlTGF5ZXIgc2V0Qm9yZGVyQ29sb3I6W05TQ29sb3IgeWVsbG93Q29sb3Jd
LkNHQ29sb3JdOworICAgIFttX3N3aXBlTGF5ZXIgc2V0Qm9yZGVyV2lkdGg6NF07CisKKyAgICBb
bV9zd2lwZVNuYXBzaG90TGF5ZXIgc2V0QmFja2dyb3VuZENvbG9yOltOU0NvbG9yIGdyZWVuQ29s
b3JdLkNHQ29sb3JdOworICAgIFttX3N3aXBlU25hcHNob3RMYXllciBzZXRCb3JkZXJDb2xvcjpb
TlNDb2xvciByZWRDb2xvcl0uQ0dDb2xvcl07CisgICAgW21fc3dpcGVTbmFwc2hvdExheWVyIHNl
dEJvcmRlcldpZHRoOjJdOworfQorCiB2b2lkIFZpZXdHZXN0dXJlQ29udHJvbGxlcjo6YmVnaW5T
d2lwZUdlc3R1cmUoV2ViQmFja0ZvcndhcmRMaXN0SXRlbSogdGFyZ2V0SXRlbSwgU3dpcGVEaXJl
Y3Rpb24gZGlyZWN0aW9uKQogewogICAgIEFTU0VSVChtX2N1cnJlbnRTd2lwZUxpdmVMYXllcnMu
aXNFbXB0eSgpKTsKQEAgLTQ0OSwyMSArNTEwLDE2IEBAIHZvaWQgVmlld0dlc3R1cmVDb250cm9s
bGVyOjpiZWdpblN3aXBlR2VzdHVyZShXZWJCYWNrRm9yd2FyZExpc3RJdGVtKiB0YXJnZXRJdGVt
CiAKICAgICBDQUxheWVyICpyb290Q29udGVudExheWVyID0gbV93ZWJQYWdlUHJveHkuYWNjZWxl
cmF0ZWRDb21wb3NpdGluZ1Jvb3RMYXllcigpOwogCisgICAgbV9zd2lwZUxheWVyID0gYWRvcHRO
UyhbW0NBTGF5ZXIgYWxsb2NdIGluaXRdKTsKICAgICBtX3N3aXBlU25hcHNob3RMYXllciA9IGFk
b3B0TlMoW1tDQUxheWVyIGFsbG9jXSBpbml0XSk7Ci0gICAgW21fc3dpcGVTbmFwc2hvdExheWVy
IHNldEJhY2tncm91bmRDb2xvcjpDR0NvbG9yR2V0Q29uc3RhbnRDb2xvcihrQ0dDb2xvcldoaXRl
KV07Ci0KLSAgICBJT1N1cmZhY2UqIHNuYXBzaG90ID0gcmV0cmlldmVTbmFwc2hvdEZvckl0ZW0o
dGFyZ2V0SXRlbSk7Ci0KLSAgICBpZiAoc25hcHNob3QpIHsKLSAgICAgICAgbV9jdXJyZW50U3dp
cGVTbmFwc2hvdFN1cmZhY2UgPSBzbmFwc2hvdDsKLSAgICAgICAgW21fc3dpcGVTbmFwc2hvdExh
eWVyIHNldENvbnRlbnRzOihpZClzbmFwc2hvdC0+c3VyZmFjZSgpXTsKLSAgICB9Ci0KICAgICBt
X2N1cnJlbnRTd2lwZUN1c3RvbVZpZXdCb3VuZHMgPSB3aW5kb3dSZWxhdGl2ZUJvdW5kc0ZvckN1
c3RvbVN3aXBlVmlld3MoKTsKIAogICAgIEZsb2F0UmVjdCBzd2lwZUFyZWE7CisgICAgZmxvYXQg
dG9wQ29udGVudEluc2V0ID0gMDsKICAgICBpZiAoIW1fY3VzdG9tU3dpcGVWaWV3cy5pc0VtcHR5
KCkpIHsKKyAgICAgICAgdG9wQ29udGVudEluc2V0ID0gbV9jdXN0b21Td2lwZVZpZXdzVG9wQ29u
dGVudEluc2V0OwogICAgICAgICBzd2lwZUFyZWEgPSBtX2N1cnJlbnRTd2lwZUN1c3RvbVZpZXdC
b3VuZHM7CisgICAgICAgIHN3aXBlQXJlYS5leHBhbmQoMCwgdG9wQ29udGVudEluc2V0KTsKIAog
ICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIHZpZXcgOiBtX2N1c3RvbVN3aXBlVmlld3MpIHsKICAg
ICAgICAgICAgIENBTGF5ZXIgKmxheWVyID0gW3ZpZXcgbGF5ZXJdOwpAQCAtNDcxLDMzICs1Mjcs
NTEgQEAgdm9pZCBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OmJlZ2luU3dpcGVHZXN0dXJlKFdlYkJh
Y2tGb3J3YXJkTGlzdEl0ZW0qIHRhcmdldEl0ZW0KICAgICAgICAgICAgIG1fY3VycmVudFN3aXBl
TGl2ZUxheWVycy5hcHBlbmQobGF5ZXIpOwogICAgICAgICB9CiAgICAgfSBlbHNlIHsKLSAgICAg
ICAgc3dpcGVBcmVhID0gRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgbV93ZWJQYWdlUHJveHkuZHJh
d2luZ0FyZWEoKS0+c2l6ZSgpKTsKKyAgICAgICAgc3dpcGVBcmVhID0gRmxvYXRSZWN0KEZsb2F0
UG9pbnQoKSwgbV93ZWJQYWdlUHJveHkudmlld1NpemUoKSk7CisgICAgICAgIHRvcENvbnRlbnRJ
bnNldCA9IG1fd2ViUGFnZVByb3h5LnRvcENvbnRlbnRJbnNldCgpOwogICAgICAgICBtX2N1cnJl
bnRTd2lwZUxpdmVMYXllcnMuYXBwZW5kKHJvb3RDb250ZW50TGF5ZXIpOwogICAgIH0KIAorICAg
IENBTGF5ZXIgKnNuYXBzaG90TGF5ZXJQYXJlbnQgPSBkZXRlcm1pbmVTbmFwc2hvdExheWVyUGFy
ZW50KCk7CisgICAgYm9vbCBnZW9tZXRyeUlzRmxpcHBlZFRvUm9vdCA9IGxheWVyR2VvbWV0cnlG
bGlwcGVkVG9Sb290KHNuYXBzaG90TGF5ZXJQYXJlbnQpOworCisgICAgSU9TdXJmYWNlKiBzbmFw
c2hvdCA9IHJldHJpZXZlU25hcHNob3RGb3JJdGVtKHRhcmdldEl0ZW0sIHN3aXBlQXJlYS5zaXpl
KCksIHRvcENvbnRlbnRJbnNldCk7CisgICAgaWYgKHNuYXBzaG90KSB7CisgICAgICAgIG1fY3Vy
cmVudFN3aXBlU25hcHNob3RTdXJmYWNlID0gc25hcHNob3Q7CisgICAgICAgIFttX3N3aXBlU25h
cHNob3RMYXllciBzZXRDb250ZW50czooaWQpc25hcHNob3QtPnN1cmZhY2UoKV07CisgICAgfQor
CisgICAgW21fc3dpcGVMYXllciBzZXRCYWNrZ3JvdW5kQ29sb3I6Q0dDb2xvckdldENvbnN0YW50
Q29sb3Ioa0NHQ29sb3JXaGl0ZSldOworICAgIFttX3N3aXBlTGF5ZXIgc2V0QW5jaG9yUG9pbnQ6
Q0dQb2ludFplcm9dOworICAgIFttX3N3aXBlTGF5ZXIgc2V0RnJhbWU6c3dpcGVBcmVhXTsKKyAg
ICBbbV9zd2lwZUxheWVyIHNldE5hbWU6QCJHZXN0dXJlIFN3aXBlIFJvb3QgTGF5ZXIiXTsKKyAg
ICBbbV9zd2lwZUxheWVyIHNldEdlb21ldHJ5RmxpcHBlZDpnZW9tZXRyeUlzRmxpcHBlZFRvUm9v
dF07CisgICAgW21fc3dpcGVMYXllciB3ZWJfZGlzYWJsZUFsbEFjdGlvbnNdOworCiAgICAgW21f
c3dpcGVTbmFwc2hvdExheWVyIHNldENvbnRlbnRzR3Jhdml0eTprQ0FHcmF2aXR5VG9wTGVmdF07
CiAgICAgW21fc3dpcGVTbmFwc2hvdExheWVyIHNldENvbnRlbnRzU2NhbGU6bV93ZWJQYWdlUHJv
eHkuZGV2aWNlU2NhbGVGYWN0b3IoKV07CiAgICAgW21fc3dpcGVTbmFwc2hvdExheWVyIHNldEFu
Y2hvclBvaW50OkNHUG9pbnRaZXJvXTsKLSAgICBbbV9zd2lwZVNuYXBzaG90TGF5ZXIgc2V0RnJh
bWU6c3dpcGVBcmVhXTsKKyAgICBbbV9zd2lwZVNuYXBzaG90TGF5ZXIgc2V0RnJhbWU6Q0dSZWN0
TWFrZSgwLCAwLCBzd2lwZUFyZWEud2lkdGgoKSwgc3dpcGVBcmVhLmhlaWdodCgpIC0gdG9wQ29u
dGVudEluc2V0KV07CiAgICAgW21fc3dpcGVTbmFwc2hvdExheWVyIHNldE5hbWU6QCJHZXN0dXJl
IFN3aXBlIFNuYXBzaG90IExheWVyIl07CiAgICAgW21fc3dpcGVTbmFwc2hvdExheWVyIHdlYl9k
aXNhYmxlQWxsQWN0aW9uc107CiAKLSAgICBpZiAobV93ZWJQYWdlUHJveHkucHJlZmVyZW5jZXMo
KS52aWV3R2VzdHVyZURlYnVnZ2luZ0VuYWJsZWQoKSkgewotICAgICAgICBDQUZpbHRlciogZmls
dGVyID0gW0NBRmlsdGVyIGZpbHRlcldpdGhUeXBlOmtDQUZpbHRlckdhdXNzaWFuQmx1cl07Ci0g
ICAgICAgIFtmaWx0ZXIgc2V0VmFsdWU6W05TTnVtYmVyIG51bWJlcldpdGhGbG9hdDozXSBmb3JL
ZXk6QCJpbnB1dFJhZGl1cyJdOwotICAgICAgICBbbV9zd2lwZVNuYXBzaG90TGF5ZXIgc2V0Rmls
dGVyczpAW2ZpbHRlcl1dOwotICAgIH0KKyAgICBbbV9zd2lwZUxheWVyIGFkZFN1YmxheWVyOm1f
c3dpcGVTbmFwc2hvdExheWVyLmdldCgpXTsKKworICAgIGlmIChtX3dlYlBhZ2VQcm94eS5wcmVm
ZXJlbmNlcygpLnZpZXdHZXN0dXJlRGVidWdnaW5nRW5hYmxlZCgpKQorICAgICAgICBhcHBseURl
YnVnZ2luZ1Byb3BlcnRpZXNUb1N3aXBlVmlld3MoKTsKIAogICAgIC8vIFdlIGRvbid0IGtub3cg
ZW5vdWdoIGFib3V0IHRoZSBjdXN0b20gdmlld3MnIGhpZXJhcmNoeSB0byBhcHBseSBhIHNoYWRv
dy4KICAgICBpZiAobV9zd2lwZVRyYW5zaXRpb25TdHlsZSA9PSBTd2lwZVRyYW5zaXRpb25TdHls
ZTo6T3ZlcmxhcCAmJiBtX2N1c3RvbVN3aXBlVmlld3MuaXNFbXB0eSgpKSB7Ci0gICAgICAgIFJl
dGFpblB0cjxDR1BhdGhSZWY+IHNoYWRvd1BhdGggPSBhZG9wdENGKENHUGF0aENyZWF0ZVdpdGhS
ZWN0KFttX3N3aXBlU25hcHNob3RMYXllciBib3VuZHNdLCAwKSk7Ci0KICAgICAgICAgaWYgKGRp
cmVjdGlvbiA9PSBTd2lwZURpcmVjdGlvbjo6TGVmdCkgeworICAgICAgICAgICAgZmxvYXQgdG9w
Q29udGVudEluc2V0ID0gbV93ZWJQYWdlUHJveHkudG9wQ29udGVudEluc2V0KCk7CisgICAgICAg
ICAgICBGbG9hdFJlY3Qgc2hhZG93UmVjdChGbG9hdFBvaW50KDAsIHRvcENvbnRlbnRJbnNldCks
IG1fd2ViUGFnZVByb3h5LnZpZXdTaXplKCkgLSBGbG9hdFNpemUoMCwgdG9wQ29udGVudEluc2V0
KSk7CisgICAgICAgICAgICBSZXRhaW5QdHI8Q0dQYXRoUmVmPiBzaGFkb3dQYXRoID0gYWRvcHRD
RihDR1BhdGhDcmVhdGVXaXRoUmVjdChzaGFkb3dSZWN0LCAwKSk7CiAgICAgICAgICAgICBbcm9v
dENvbnRlbnRMYXllciBzZXRTaGFkb3dDb2xvcjpDR0NvbG9yR2V0Q29uc3RhbnRDb2xvcihrQ0dD
b2xvckJsYWNrKV07CiAgICAgICAgICAgICBbcm9vdENvbnRlbnRMYXllciBzZXRTaGFkb3dPcGFj
aXR5OnN3aXBlT3ZlcmxheVNoYWRvd09wYWNpdHldOwogICAgICAgICAgICAgW3Jvb3RDb250ZW50
TGF5ZXIgc2V0U2hhZG93UmFkaXVzOnN3aXBlT3ZlcmxheVNoYWRvd1JhZGl1c107CiAgICAgICAg
ICAgICBbcm9vdENvbnRlbnRMYXllciBzZXRTaGFkb3dQYXRoOnNoYWRvd1BhdGguZ2V0KCldOwog
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgUmV0YWluUHRyPENHUGF0aFJlZj4gc2hhZG93
UGF0aCA9IGFkb3B0Q0YoQ0dQYXRoQ3JlYXRlV2l0aFJlY3QoW21fc3dpcGVTbmFwc2hvdExheWVy
IGJvdW5kc10sIDApKTsKICAgICAgICAgICAgIFttX3N3aXBlU25hcHNob3RMYXllciBzZXRTaGFk
b3dDb2xvcjpDR0NvbG9yR2V0Q29uc3RhbnRDb2xvcihrQ0dDb2xvckJsYWNrKV07CiAgICAgICAg
ICAgICBbbV9zd2lwZVNuYXBzaG90TGF5ZXIgc2V0U2hhZG93T3BhY2l0eTpzd2lwZU92ZXJsYXlT
aGFkb3dPcGFjaXR5XTsKICAgICAgICAgICAgIFttX3N3aXBlU25hcHNob3RMYXllciBzZXRTaGFk
b3dSYWRpdXM6c3dpcGVPdmVybGF5U2hhZG93UmFkaXVzXTsKQEAgLTUwNSwyNSArNTc5LDExIEBA
IHZvaWQgVmlld0dlc3R1cmVDb250cm9sbGVyOjpiZWdpblN3aXBlR2VzdHVyZShXZWJCYWNrRm9y
d2FyZExpc3RJdGVtKiB0YXJnZXRJdGVtCiAgICAgICAgIH0KICAgICB9CiAKLSAgICAvLyBJZiB3
ZSBoYXZlIGN1c3RvbSBzd2lwaW5nIHZpZXdzLCB3ZSBhc3N1bWUgdGhhdCB0aGUgdmlld3Mgd2Vy
ZSBwYXNzZWQgdG8gdXMgaW4gYmFjay10by1mcm9udCB6LW9yZGVyLgotICAgIENBTGF5ZXIgKmxh
eWVyQWRqYWNlbnRUb1NuYXBzaG90ID0gZGlyZWN0aW9uID09IFN3aXBlRGlyZWN0aW9uOjpMZWZ0
ID8gbV9jdXJyZW50U3dpcGVMaXZlTGF5ZXJzLmZpcnN0KCkuZ2V0KCkgOiBtX2N1cnJlbnRTd2lw
ZUxpdmVMYXllcnMubGFzdCgpLmdldCgpOwotICAgIENBTGF5ZXIgKnNuYXBzaG90TGF5ZXJQYXJl
bnQ7Ci0KLSAgICBpZiAobV9jdXJyZW50U3dpcGVMaXZlTGF5ZXJzLnNpemUoKSA9PSAxKQotICAg
ICAgICBzbmFwc2hvdExheWVyUGFyZW50ID0gW21fY3VycmVudFN3aXBlTGl2ZUxheWVyc1swXSBz
dXBlcmxheWVyXTsKLSAgICBlbHNlIHsKLSAgICAgICAgLy8gV2UgaW5zZXJ0IG91ciBzbmFwc2hv
dCBpbnRvIHRoZSBmaXJzdCBzaGFyZWQgc3VwZXJsYXllciBvZiB0aGUgY3VzdG9tIHZpZXdzJyBs
YXllciwgYWJvdmUgdGhlIGZyb250bW9zdCBvciBiZWxvdyB0aGUgYm90dG9tbW9zdCBsYXllci4K
LSAgICAgICAgc25hcHNob3RMYXllclBhcmVudCA9IGxlYXN0Q29tbW9uQW5jZXN0b3JMYXllciht
X2N1cnJlbnRTd2lwZUxpdmVMYXllcnMpOwotCi0gICAgICAgIC8vIElmIHRoZSBsYXllcnMgYXJl
IG5vdCBhbGwgc2libGluZ3MsIGZpbmQgdGhlIGNoaWxkIG9mIHRoZSBsYXllciB3ZSdyZSBnb2lu
ZyB0byBpbnNlcnQgdGhlIHNuYXBzaG90IGludG8gd2hpY2ggaGFzIHRoZSBmcm9udG1vc3QvYm90
dG9tbW9zdCBsYXllciBhcyBhIGNoaWxkLgotICAgICAgICB3aGlsZSAoc25hcHNob3RMYXllclBh
cmVudCAhPSBsYXllckFkamFjZW50VG9TbmFwc2hvdC5zdXBlcmxheWVyKQotICAgICAgICAgICAg
bGF5ZXJBZGphY2VudFRvU25hcHNob3QgPSBsYXllckFkamFjZW50VG9TbmFwc2hvdC5zdXBlcmxh
eWVyOwotICAgIH0KLQorICAgIENBTGF5ZXIgKmxheWVyQWRqYWNlbnRUb1NuYXBzaG90ID0gZGV0
ZXJtaW5lTGF5ZXJBZGphY2VudFRvU25hcHNob3RGb3JQYXJlbnQoZGlyZWN0aW9uLCBzbmFwc2hv
dExheWVyUGFyZW50KTsKICAgICBpZiAoZGlyZWN0aW9uID09IFN3aXBlRGlyZWN0aW9uOjpMZWZ0
KQotICAgICAgICBbc25hcHNob3RMYXllclBhcmVudCBpbnNlcnRTdWJsYXllcjptX3N3aXBlU25h
cHNob3RMYXllci5nZXQoKSBiZWxvdzpsYXllckFkamFjZW50VG9TbmFwc2hvdF07CisgICAgICAg
IFtzbmFwc2hvdExheWVyUGFyZW50IGluc2VydFN1YmxheWVyOm1fc3dpcGVMYXllci5nZXQoKSBi
ZWxvdzpsYXllckFkamFjZW50VG9TbmFwc2hvdF07CiAgICAgZWxzZQotICAgICAgICBbc25hcHNo
b3RMYXllclBhcmVudCBpbnNlcnRTdWJsYXllcjptX3N3aXBlU25hcHNob3RMYXllci5nZXQoKSBh
Ym92ZTpsYXllckFkamFjZW50VG9TbmFwc2hvdF07CisgICAgICAgIFtzbmFwc2hvdExheWVyUGFy
ZW50IGluc2VydFN1YmxheWVyOm1fc3dpcGVMYXllci5nZXQoKSBhYm92ZTpsYXllckFkamFjZW50
VG9TbmFwc2hvdF07CiB9CiAKIHZvaWQgVmlld0dlc3R1cmVDb250cm9sbGVyOjpoYW5kbGVTd2lw
ZUdlc3R1cmUoV2ViQmFja0ZvcndhcmRMaXN0SXRlbSogdGFyZ2V0SXRlbSwgZG91YmxlIHByb2dy
ZXNzLCBTd2lwZURpcmVjdGlvbiBkaXJlY3Rpb24pCkBAIC01NDMsOSArNjAzLDkgQEAgdm9pZCBW
aWV3R2VzdHVyZUNvbnRyb2xsZXI6OmhhbmRsZVN3aXBlR2VzdHVyZShXZWJCYWNrRm9yd2FyZExp
c3RJdGVtKiB0YXJnZXRJdGUKIAogICAgIGlmIChtX3N3aXBlVHJhbnNpdGlvblN0eWxlID09IFN3
aXBlVHJhbnNpdGlvblN0eWxlOjpPdmVybGFwKSB7CiAgICAgICAgIGlmIChkaXJlY3Rpb24gPT0g
U3dpcGVEaXJlY3Rpb246OlJpZ2h0KQotICAgICAgICAgICAgW21fc3dpcGVTbmFwc2hvdExheWVy
IHNldFRyYW5zZm9ybTpDQVRyYW5zZm9ybTNETWFrZVRyYW5zbGF0aW9uKHdpZHRoICsgc3dpcGlu
Z0xheWVyT2Zmc2V0LCAwLCAwKV07CisgICAgICAgICAgICBbbV9zd2lwZUxheWVyIHNldFRyYW5z
Zm9ybTpDQVRyYW5zZm9ybTNETWFrZVRyYW5zbGF0aW9uKHdpZHRoICsgc3dpcGluZ0xheWVyT2Zm
c2V0LCAwLCAwKV07CiAgICAgfSBlbHNlIGlmIChtX3N3aXBlVHJhbnNpdGlvblN0eWxlID09IFN3
aXBlVHJhbnNpdGlvblN0eWxlOjpQdXNoKQotICAgICAgICBbbV9zd2lwZVNuYXBzaG90TGF5ZXIg
c2V0VHJhbnNmb3JtOkNBVHJhbnNmb3JtM0RNYWtlVHJhbnNsYXRpb24oKGRpcmVjdGlvbiA9PSBT
d2lwZURpcmVjdGlvbjo6TGVmdCA/IC13aWR0aCA6IHdpZHRoKSArIHN3aXBpbmdMYXllck9mZnNl
dCwgMCwgMCldOworICAgICAgICBbbV9zd2lwZUxheWVyIHNldFRyYW5zZm9ybTpDQVRyYW5zZm9y
bTNETWFrZVRyYW5zbGF0aW9uKChkaXJlY3Rpb24gPT0gU3dpcGVEaXJlY3Rpb246OkxlZnQgPyAt
d2lkdGggOiB3aWR0aCkgKyBzd2lwaW5nTGF5ZXJPZmZzZXQsIDAsIDApXTsKIAogICAgIGZvciAo
Y29uc3QgYXV0byYgbGF5ZXIgOiBtX2N1cnJlbnRTd2lwZUxpdmVMYXllcnMpIHsKICAgICAgICAg
aWYgKG1fc3dpcGVUcmFuc2l0aW9uU3R5bGUgPT0gU3dpcGVUcmFuc2l0aW9uU3R5bGU6Ok92ZXJs
YXApIHsKQEAgLTYyMSw2ICs2ODEsOSBAQCB2b2lkIFZpZXdHZXN0dXJlQ29udHJvbGxlcjo6cmVt
b3ZlU3dpcGVTbmFwc2hvdCgpCiAgICAgW21fc3dpcGVTbmFwc2hvdExheWVyIHJlbW92ZUZyb21T
dXBlcmxheWVyXTsKICAgICBtX3N3aXBlU25hcHNob3RMYXllciA9IG51bGxwdHI7CiAKKyAgICBb
bV9zd2lwZUxheWVyIHJlbW92ZUZyb21TdXBlcmxheWVyXTsKKyAgICBtX3N3aXBlTGF5ZXIgPSBu
dWxscHRyOworCiAgICAgbV9jdXJyZW50U3dpcGVMaXZlTGF5ZXJzLmNsZWFyKCk7CiAKICAgICBt
X2FjdGl2ZUdlc3R1cmVUeXBlID0gVmlld0dlc3R1cmVUeXBlOjpOb25lOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9WaWV3U25hcHNob3RTdG9yZS5oIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL21hYy9WaWV3U25hcHNob3RTdG9yZS5oCmluZGV4IDA1MTNmNDEu
LjgwNzk2MWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvVmlld1Nu
YXBzaG90U3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1ZpZXdTbmFw
c2hvdFN0b3JlLmgKQEAgLTU1LDYgKzU1LDcgQEAgcHVibGljOgogCiAgICAgICAgIHN0ZDo6Y2hy
b25vOjpzdGVhZHlfY2xvY2s6OnRpbWVfcG9pbnQgY3JlYXRpb25UaW1lOwogICAgICAgICB1aW50
NjRfdCByZW5kZXJUcmVlU2l6ZTsKKyAgICAgICAgZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3I7CiAK
ICAgICAgICAgdm9pZCBjbGVhckltYWdlKCk7CiAgICAgICAgIGJvb2wgaGFzSW1hZ2UoKSBjb25z
dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvVmlld1NuYXBzaG90
U3RvcmUubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1ZpZXdTbmFwc2hvdFN0b3Jl
Lm1tCmluZGV4IDEzYWQ5YWIuLmNmMDczY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9tYWMvVmlld1NuYXBzaG90U3RvcmUubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL21hYy9WaWV3U25hcHNob3RTdG9yZS5tbQpAQCAtMTUxLDYgKzE1MSw3IEBAIHZvaWQg
Vmlld1NuYXBzaG90U3RvcmU6OnJlY29yZFNuYXBzaG90KFdlYlBhZ2VQcm94eSYgd2ViUGFnZVBy
b3h5KQogICAgIFNuYXBzaG90IHNuYXBzaG90OwogICAgIHNuYXBzaG90LmNyZWF0aW9uVGltZSA9
IHN0ZDo6Y2hyb25vOjpzdGVhZHlfY2xvY2s6Om5vdygpOwogICAgIHNuYXBzaG90LnJlbmRlclRy
ZWVTaXplID0gd2ViUGFnZVByb3h5LnJlbmRlclRyZWVTaXplKCk7CisgICAgc25hcHNob3QuZGV2
aWNlU2NhbGVGYWN0b3IgPSB3ZWJQYWdlUHJveHkuZGV2aWNlU2NhbGVGYWN0b3IoKTsKIAogI2lm
IFVTRShJT1NVUkZBQ0UpCiAgICAgc25hcHNob3Quc3VyZmFjZSA9IGNyZWF0ZUlPU3VyZmFjZUZy
b21JbWFnZShzbmFwc2hvdEltYWdlLmdldCgpKTsK
</data>
<flag name="review"
          id="254642"
          type_id="1"
          status="+"
          setter="simon.fraser"
    />
          </attachment>
      

    </bug>

</bugzilla>