<?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>193130</bug_id>
          
          <creation_ts>2019-01-03 17:25:54 -0800</creation_ts>
          <short_desc>Share ink choice and ruler between all editable images</short_desc>
          <delta_ts>2019-01-04 12:24:37 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Tim Horton">thorton</reporter>
          <assigned_to name="Tim Horton">thorton</assigned_to>
          <cc>bdakin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1491566</commentid>
    <comment_count>0</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2019-01-03 17:25:54 -0800</bug_when>
    <thetext>Share ink choice and ruler between all editable images</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1491567</commentid>
    <comment_count>1</comment_count>
      <attachid>358295</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2019-01-03 17:27:15 -0800</bug_when>
    <thetext>Created attachment 358295
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1491568</commentid>
    <comment_count>2</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2019-01-03 17:27:17 -0800</bug_when>
    <thetext>&lt;rdar://problem/46826491&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1491573</commentid>
    <comment_count>3</comment_count>
      <attachid>358297</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2019-01-03 17:45:59 -0800</bug_when>
    <thetext>Created attachment 358297
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1491590</commentid>
    <comment_count>4</comment_count>
      <attachid>358297</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2019-01-03 19:42:07 -0800</bug_when>
    <thetext>Comment on attachment 358297
Patch

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

r=me!

It seems like it *might* be possible to write a test for this if we added hooks to set or grab the current ink color of the focused editable image (i.e. the selected PKInk&apos;s -color). Then the test could do something like:

- Focus an editable image (I hesitate to write &quot;and wait for input session, because this no longer uses the platform keyboard IIRC&quot;).
- Set the selected ink color.
- Focus a different editable image.
- Check that the selected ink color is the same.

&gt; Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm:6298
&gt; +    if (!_drawingCoordinator)

Is this something we ought to throw out in -cleanUpInteraction, when the web process crashes?

(Or maybe just reset _drawingCoordinator&apos;s _focusedEmbeddedViewID to 0?)

&gt; Source/WebKit/UIProcess/ios/WKDrawingCoordinator.mm:43
&gt; +    __weak WKContentView *_contentView;

Just out of curiosity — why __weak over WeakObjCPtr!

&gt; Source/WebKit/UIProcess/ios/WKDrawingView.h:31
&gt;  OBJC_CLASS PKCanvasView;

Nit - I think you can remove this forward declaration.

&gt; Source/WebKit/UIProcess/ios/WKDrawingView.mm:49
&gt; +    __weak WKContentView *_contentView;

(Same question here)

&gt; Source/WebKit/UIProcess/ios/WKInkPickerView.h:41
&gt; +@property (nonatomic, assign) BOOL rulerEnabled;

Nit - I don&apos;t think you need to explicitly mark this property as assign.

&gt; Source/WebKit/UIProcess/ios/WKInkPickerView.mm:40
&gt; +    __weak WKContentView *_contentView;

(Same question here)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1491748</commentid>
    <comment_count>5</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2019-01-04 11:05:21 -0800</bug_when>
    <thetext>(In reply to Wenson Hsieh from comment #4)
&gt; Comment on attachment 358297 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=358297&amp;action=review
&gt; 
&gt; r=me!
&gt; 
&gt; It seems like it *might* be possible to write a test for this if we added
&gt; hooks to set or grab the current ink color of the focused editable image
&gt; (i.e. the selected PKInk&apos;s -color). Then the test could do something like:
&gt; 
&gt; - Focus an editable image (I hesitate to write &quot;and wait for input session,
&gt; because this no longer uses the platform keyboard IIRC&quot;).
&gt; - Set the selected ink color.
&gt; - Focus a different editable image.
&gt; - Check that the selected ink color is the same.

In the end with all of the mocking/digging into and interacting with PK internals that would happen, the % of this patch that would actually be tested is pretty small. Might revisit and add more testing mechanisms for more interesting patches.

&gt; &gt; Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm:6298
&gt; &gt; +    if (!_drawingCoordinator)
&gt; 
&gt; Is this something we ought to throw out in -cleanUpInteraction, when the web
&gt; process crashes?

Seems reasonable.

&gt; (Or maybe just reset _drawingCoordinator&apos;s _focusedEmbeddedViewID to 0?)
&gt; 
&gt; &gt; Source/WebKit/UIProcess/ios/WKDrawingCoordinator.mm:43
&gt; &gt; +    __weak WKContentView *_contentView;
&gt; 
&gt; Just out of curiosity — why __weak over WeakObjCPtr!

To avoid post-landing review comments :)

&gt; &gt; Source/WebKit/UIProcess/ios/WKDrawingView.h:31
&gt; &gt;  OBJC_CLASS PKCanvasView;
&gt; 
&gt; Nit - I think you can remove this forward declaration.

Indeed!

&gt; &gt; Source/WebKit/UIProcess/ios/WKInkPickerView.h:41
&gt; &gt; +@property (nonatomic, assign) BOOL rulerEnabled;
&gt; 
&gt; Nit - I don&apos;t think you need to explicitly mark this property as assign.

Indeed!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1491765</commentid>
    <comment_count>6</comment_count>
      <attachid>358343</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2019-01-04 11:25:54 -0800</bug_when>
    <thetext>Created attachment 358343
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1491783</commentid>
    <comment_count>7</comment_count>
      <attachid>358343</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2019-01-04 12:02:01 -0800</bug_when>
    <thetext>Comment on attachment 358343
Patch

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

&gt; Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm:852
&gt; +    _drawingCoordinator = nil;

#if HAVE(PENCILKIT)!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1491799</commentid>
    <comment_count>8</comment_count>
      <attachid>358343</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-01-04 12:24:36 -0800</bug_when>
    <thetext>Comment on attachment 358343
Patch

Clearing flags on attachment: 358343

Committed r239628: &lt;https://trac.webkit.org/changeset/239628&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1491800</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-01-04 12:24:37 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>358295</attachid>
            <date>2019-01-03 17:27:15 -0800</date>
            <delta_ts>2019-01-03 17:45:58 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-193130-20190103172715.patch</filename>
            <type>text/plain</type>
            <size>27121</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM5NTk2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGE0ODM1YmE0MmI2Y2ZkNmZk
YzQ3MWRiMzk4OWQxYThlNGYyMTZhZjkuLjkxNGJlZWZiYjg0MDA0MzA1N2Y3YmE5ODRjYjcwNDQ3
ZjM3ZGU1MTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTkgQEAKKzIwMTktMDEtMDMgIFRpbSBIb3J0
b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisKKyAgICAgICAgU2hhcmUgaW5rIGNob2lj
ZSBhbmQgcnVsZXIgYmV0d2VlbiBhbGwgZWRpdGFibGUgaW1hZ2VzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTMxMzAKKyAgICAgICAgPHJkYXI6Ly9w
cm9ibGVtLzQ2ODI2NDkxPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogU291cmNlc0NvY29hLnR4dDoKKyAgICAgICAgQWRkIFdLRHJhd2luZ0Nvb3Jk
aW5hdG9yLCB3aGljaCBtYWludGFpbnMgV0tXZWJWaWV3LXdpZGUgZHJhd2luZyBzdGF0ZSwKKyAg
ICAgICAgYW5kIG1hbmFnZXMgYSBzaW5nbGUgc2hhcmVkIGluayBwaWNrZXIuCisKKyAgICAgICAg
KiBVSVByb2Nlc3MvUGFnZUNsaWVudC5oOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50Ojpj
cmVhdGVEcmF3aW5nVmlldyk6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9FZGl0YWJsZUltYWdl
Q29udHJvbGxlci5tbToKKyAgICAgICAgKFdlYktpdDo6RWRpdGFibGVJbWFnZUNvbnRyb2xsZXI6
OmVuc3VyZUVkaXRhYmxlSW1hZ2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvUGFnZUNsaWVu
dEltcGxJT1MuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1t
OgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6Y3JlYXRlRHJhd2luZ1ZpZXcpOgor
ICAgICAgICBQbHVtYiBXS0RyYXdpbmdWaWV3IGNyZWF0aW9uIHRocm91Z2ggUGFnZUNsaWVudCwg
c28gdGhhdCBpdCBjYW4gYmUgaW5zdGFudGlhdGVkCisgICAgICAgIHdpdGgga25vd2xlZGdlIG9m
IGl0cyBvd25pbmcgV0tDb250ZW50Vmlldy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tD
b250ZW50Vmlld0ludGVyYWN0aW9uLmg6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0NvbnRl
bnRWaWV3SW50ZXJhY3Rpb24ubW06CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgX2VsZW1lbnRE
aWRGb2N1czp1c2VySXNJbnRlcmFjdGluZzpibHVyUHJldmlvdXNOb2RlOmNoYW5naW5nQWN0aXZp
dHlTdGF0ZTp1c2VyT2JqZWN0Ol0pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9lbGVtZW50
RGlkQmx1cl0pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9kcmF3aW5nQ29vcmRpbmF0b3Jd
KToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfaW5zdGFsbElua1BpY2tlckZvckRyYXdpbmdW
aWV3V2l0aElEOl0pOiBEZWxldGVkLgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF91bmluc3Rh
bGxJbmtQaWNrZXJdKTogRGVsZXRlZC4KKyAgICAgICAgTW92ZSBpbmsgcGlja2VyIG1hbmFnZW1l
bnQgaW50byBXS0RyYXdpbmdDb29yZGluYXRvci4KKworICAgICAgICAqIFVJUHJvY2Vzcy9pb3Mv
V0tEcmF3aW5nVmlldy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tEcmF3aW5nVmlldy5t
bToKKyAgICAgICAgKC1bV0tEcmF3aW5nVmlldyBpbml0V2l0aEVtYmVkZGVkVmlld0lEOmNvbnRl
bnRWaWV3Ol0pOgorICAgICAgICAoLVtXS0RyYXdpbmdWaWV3IF9jYW52YXNWaWV3V2lsbEJlZ2lu
RHJhd2luZzpdKToKKyAgICAgICAgKC1bV0tEcmF3aW5nVmlldyBpbnZhbGlkYXRlQXR0YWNobWVu
dF0pOgorICAgICAgICAoLVtXS0RyYXdpbmdWaWV3IGRpZENoYW5nZVJ1bGVyU3RhdGU6XSk6Cisg
ICAgICAgICgtW1dLRHJhd2luZ1ZpZXcgaW5pdFdpdGhFbWJlZGRlZFZpZXdJRDp3ZWJQYWdlUHJv
eHk6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dLRHJhd2luZ1ZpZXcgY2FudmFzVmlld10pOiBE
ZWxldGVkLgorICAgICAgICBVc2UgYSBzaGFyZWQgcnVsZXIsIG93bmVkIGJ5IFdLRHJhd2luZ0Nv
b3JkaW5hdG9yLgorICAgICAgICBVcGRhdGUgdGhlIGVkaXRhYmxlIGltYWdlJ3MgaW5rIHdoZW4g
ZHJhd2luZyBiZWdpbnMuIFRoaXMgd2F5LCB3ZSBkb24ndCBoYXZlCisgICAgICAgIHRvIHB1c2gg
aW5rIGNoYW5nZXMgdG8gYWxsIGRyYXdpbmdzIGFzIHRoZXkgaGFwcGVuLgorCisgICAgICAgICog
VUlQcm9jZXNzL2lvcy9XS0lua1BpY2tlclZpZXcuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9z
L1dLSW5rUGlja2VyVmlldy5tbToKKyAgICAgICAgKC1bV0tJbmtQaWNrZXJWaWV3IGluaXRXaXRo
Q29udGVudFZpZXc6XSk6CisgICAgICAgICgtW1dLSW5rUGlja2VyVmlldyBpbmxpbmVJbmtQaWNr
ZXJEaWRUb2dnbGVSdWxlcjpdKToKKyAgICAgICAgKC1bV0tJbmtQaWNrZXJWaWV3IHZpZXdDb250
cm9sbGVyRm9yUG9wb3ZlclByZXNlbnRhdGlvbkZyb21JbmxpbmVJbmtQaWNrZXI6XSk6CisgICAg
ICAgICgtW1dLSW5rUGlja2VyVmlldyBzZXRJbms6XSk6CisgICAgICAgICgtW1dLSW5rUGlja2Vy
VmlldyBpbmtdKToKKyAgICAgICAgKC1bV0tJbmtQaWNrZXJWaWV3IGluaXRXaXRoRHJhd2luZ1Zp
ZXc6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dLSW5rUGlja2VyVmlldyBkaWRQaWNrSW5rXSk6
IERlbGV0ZWQuCisgICAgICAgICgtW1dLSW5rUGlja2VyVmlldyBpbmxpbmVJbmtQaWNrZXI6ZGlk
U2VsZWN0VG9vbDpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV0tJbmtQaWNrZXJWaWV3IGlubGlu
ZUlua1BpY2tlcjpkaWRTZWxlY3RDb2xvcjpdKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJLaXQu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAxOS0wMS0wMyAgQnJlbnQgRnVsZ2hhbSAg
PGJmdWxnaGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgbG9naWMgaGFuZGxpbmcgRE5U
IGhlYWRlciBkdXJpbmcgcmVkaXJlY3RzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJj
ZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKaW5kZXggNTZmM2M0
NWM0MTE5ZTdkY2ZjOGRiNGIwOWU1M2QyYjAwNTgwMWU3YS4uYTU4NTViYTdlOTk5NzcwYTUyN2Uw
MTcwODdmMDRlOTYzN2RmMjQ2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29j
b2EudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dApAQCAtMzg5LDYgKzM4
OSw3IEBAIFVJUHJvY2Vzcy9pb3MvV0tBY3Rpb25TaGVldEFzc2lzdGFudC5tbQogVUlQcm9jZXNz
L2lvcy9XS0FwcGxpY2F0aW9uU3RhdGVUcmFja2luZ1ZpZXcubW0KIFVJUHJvY2Vzcy9pb3MvV0tD
b250ZW50Vmlldy5tbSBAbm8tdW5pZnkKIFVJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVy
YWN0aW9uLm1tIEBuby11bmlmeQorVUlQcm9jZXNzL2lvcy9XS0RyYXdpbmdDb29yZGluYXRvci5t
bQogVUlQcm9jZXNzL2lvcy9XS0RyYXdpbmdWaWV3Lm1tCiBVSVByb2Nlc3MvaW9zL1dLR2VvbG9j
YXRpb25Qcm92aWRlcklPUy5tbQogVUlQcm9jZXNzL2lvcy9XS0dlb2xvY2F0aW9uUHJvdmlkZXJJ
T1NPYmpDU2VjdXJpdHlPcmlnaW4ubW0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1BhZ2VDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaApp
bmRleCBjNzIyYjdkNzA2NjgxMmM3NDlkNzI3Y2I3ZjhkZDRiOTUyMDRkZTUyLi4wYjg1OGM0NmVl
NDc0ZDY5NmRkYzNkNDM1YmQ1NGMxMzIzMDAzYzJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFn
ZUNsaWVudC5oCkBAIC00OSw2ICs0OSw3IEBACiBPQkpDX0NMQVNTIENBTGF5ZXI7CiBPQkpDX0NM
QVNTIE5TRmlsZVdyYXBwZXI7CiBPQkpDX0NMQVNTIE5TU2V0OworT0JKQ19DTEFTUyBXS0RyYXdp
bmdWaWV3OwogT0JKQ19DTEFTUyBfV0tSZW1vdGVPYmplY3RSZWdpc3RyeTsKIAogI2lmIFVTRShB
UFBLSVQpCkBAIC00NjIsNiArNDYzLDEwIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIE5TU2V0ICpz
ZXJpYWxpemFibGVGaWxlV3JhcHBlckNsYXNzZXMoKSBjb25zdCB7IHJldHVybiBudWxscHRyOyB9
CiAjZW5kaWYKICNlbmRpZgorCisjaWYgSEFWRShQRU5DSUxLSVQpCisgICAgdmlydHVhbCBSZXRh
aW5QdHI8V0tEcmF3aW5nVmlldz4gY3JlYXRlRHJhd2luZ1ZpZXcoV2ViQ29yZTo6R3JhcGhpY3NM
YXllcjo6RW1iZWRkZWRWaWV3SUQpIHsgcmV0dXJuIG51bGxwdHI7IH0KKyNlbmRpZgogfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9pb3MvRWRpdGFibGVJbWFnZUNvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9pb3MvRWRpdGFibGVJbWFnZUNvbnRyb2xsZXIubW0KaW5kZXggMmU1MWUzMTBjYzBiODQ4OWRh
YjZhMGJhYzNkZTcyNTI3YmIzNGViMy4uYTlhZTk4MWRmODg4YTE5M2E4Mzk2ZDNiZmUzNTU2NWFj
MWY2OWJkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL0VkaXRhYmxl
SW1hZ2VDb250cm9sbGVyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9FZGl0
YWJsZUltYWdlQ29udHJvbGxlci5tbQpAQCAtMzAsNiArMzAsNyBAQAogCiAjaW1wb3J0ICJBUElB
dHRhY2htZW50LmgiCiAjaW1wb3J0ICJFZGl0YWJsZUltYWdlQ29udHJvbGxlck1lc3NhZ2VzLmgi
CisjaW1wb3J0ICJQYWdlQ2xpZW50SW1wbElPUy5oIgogI2ltcG9ydCAiUGVuY2lsS2l0U1BJLmgi
CiAjaW1wb3J0ICJXS0RyYXdpbmdWaWV3LmgiCiAjaW1wb3J0ICJXZWJQYWdlUHJveHkuaCIKQEAg
LTU2LDcgKzU3LDcgQEAgRWRpdGFibGVJbWFnZSYgRWRpdGFibGVJbWFnZUNvbnRyb2xsZXI6OmVu
c3VyZUVkaXRhYmxlSW1hZ2UoV2ViQ29yZTo6R3JhcGhpY3NMYXkKIHsKICAgICBhdXRvIHJlc3Vs
dCA9IG1fZWRpdGFibGVJbWFnZXMuZW5zdXJlKGVtYmVkZGVkVmlld0lELCBbJl0gewogICAgICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8RWRpdGFibGVJbWFnZT4gaW1hZ2UgPSBzdGQ6Om1ha2VfdW5pcXVl
PEVkaXRhYmxlSW1hZ2U+KCk7Ci0gICAgICAgIGltYWdlLT5kcmF3aW5nVmlldyA9IGFkb3B0TlMo
W1tXS0RyYXdpbmdWaWV3IGFsbG9jXSBpbml0V2l0aEVtYmVkZGVkVmlld0lEOmVtYmVkZGVkVmll
d0lEIHdlYlBhZ2VQcm94eToqbV93ZWJQYWdlUHJveHldKTsKKyAgICAgICAgaW1hZ2UtPmRyYXdp
bmdWaWV3ID0gbV93ZWJQYWdlUHJveHktPnBhZ2VDbGllbnQoKS5jcmVhdGVEcmF3aW5nVmlldyhl
bWJlZGRlZFZpZXdJRCk7CiAgICAgICAgIHJldHVybiBpbWFnZTsKICAgICB9KTsKICAgICByZXR1
cm4gKnJlc3VsdC5pdGVyYXRvci0+dmFsdWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oCmluZGV4IGRlNzQxYzcyMmFiZTZjMDhlNTA4MTYyMmM4
MGY0NzhhM2JkNjA4OTQuLjRiNDIwZDE2NzM4YWQ4YTZmMjI1MGMyZDk5OWU5ZTBmNThhOTY0OTYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElP
Uy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5o
CkBAIC0yMjgsNiArMjI4LDEwIEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGRpZEZpbmlzaFByb2Nl
c3NpbmdBbGxQZW5kaW5nTW91c2VFdmVudHMoKSBmaW5hbCB7IH0KIAorI2lmIEhBVkUoUEVOQ0lM
S0lUKQorICAgIFJldGFpblB0cjxXS0RyYXdpbmdWaWV3PiBjcmVhdGVEcmF3aW5nVmlldyhXZWJD
b3JlOjpHcmFwaGljc0xheWVyOjpFbWJlZGRlZFZpZXdJRCkgb3ZlcnJpZGU7CisjZW5kaWYKKwog
ICAgIFdLQ29udGVudFZpZXcgKm1fY29udGVudFZpZXc7CiAgICAgUmV0YWluUHRyPFdLRWRpdG9y
VW5kb1RhcmdldD4gbV91bmRvVGFyZ2V0OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbQppbmRleCA0MjE1MjFiNzQ4M2JlYzFkZDkxOThh
M2IwYmI1ZWVkMTU0ZDY1NzRmLi41NmQ5YWRmY2E0NDQ0M2UwYzRmZTFlMGEwNGI3NjE3YjZjZTBi
NGFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudElt
cGxJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBs
SU9TLm1tCkBAIC00MSw2ICs0MSw3IEBACiAjaW1wb3J0ICJWaWV3U25hcHNob3RTdG9yZS5oIgog
I2ltcG9ydCAiV0tDb250ZW50Vmlldy5oIgogI2ltcG9ydCAiV0tDb250ZW50Vmlld0ludGVyYWN0
aW9uLmgiCisjaW1wb3J0ICJXS0RyYXdpbmdWaWV3LmgiCiAjaW1wb3J0ICJXS0VkaXRDb21tYW5k
LmgiCiAjaW1wb3J0ICJXS0dlb2xvY2F0aW9uUHJvdmlkZXJJT1MuaCIKICNpbXBvcnQgIldLUGFz
c3dvcmRWaWV3LmgiCkBAIC04MTcsNiArODE4LDEzIEBAIHZvaWQgUGFnZUNsaWVudEltcGw6OnJl
cXVlc3RQYXNzd29yZEZvclF1aWNrTG9va0RvY3VtZW50KGNvbnN0IFN0cmluZyYgZmlsZU5hbWUs
CiB9CiAjZW5kaWYKIAorI2lmIEhBVkUoUEVOQ0lMS0lUKQorUmV0YWluUHRyPFdLRHJhd2luZ1Zp
ZXc+IFBhZ2VDbGllbnRJbXBsOjpjcmVhdGVEcmF3aW5nVmlldyhXZWJDb3JlOjpHcmFwaGljc0xh
eWVyOjpFbWJlZGRlZFZpZXdJRCBlbWJlZGRlZFZpZXdJRCkKK3sKKyAgICByZXR1cm4gYWRvcHRO
UyhbW1dLRHJhd2luZ1ZpZXcgYWxsb2NdIGluaXRXaXRoRW1iZWRkZWRWaWV3SUQ6ZW1iZWRkZWRW
aWV3SUQgY29udGVudFZpZXc6bV9jb250ZW50Vmlld10pOworfQorI2VuZGlmCisKIH0gLy8gbmFt
ZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24u
aCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24u
aAppbmRleCA3Y2M2NWZiNDNkNzlmNDg5Mzk2NWI5YTk4YzdiYjBmOTFmNzk0MDU2Li5mZjIxMzll
YjIwMGI4OGRkMTRlN2FlMmZlMTJiMzZkM2JmMzZmNGYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmgKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5oCkBAIC05Mywx
MCArOTMsMTAgQEAgY2xhc3MgV2ViUGFnZVByb3h5OwogQGNsYXNzIFVJSG92ZXJHZXN0dXJlUmVj
b2duaXplcjsKIEBjbGFzcyBXZWJFdmVudDsKIEBjbGFzcyBXS0FjdGlvblNoZWV0QXNzaXN0YW50
OworQGNsYXNzIFdLRHJhd2luZ0Nvb3JkaW5hdG9yOwogQGNsYXNzIFdLRm9jdXNlZEZvcm1Db250
cm9sVmlldzsKIEBjbGFzcyBXS0Zvcm1JbnB1dENvbnRyb2w7CiBAY2xhc3MgV0tGb3JtSW5wdXRT
ZXNzaW9uOwotQGNsYXNzIFdLSW5rUGlja2VyVmlldzsKIEBjbGFzcyBXS0luc3BlY3Rvck5vZGVT
ZWFyY2hHZXN0dXJlUmVjb2duaXplcjsKIAogdHlwZWRlZiB2b2lkICheVUlXS0F1dG9jb3JyZWN0
aW9uQ29tcGxldGlvbkhhbmRsZXIpKFVJV0tBdXRvY29ycmVjdGlvblJlY3RzICpyZWN0c0Zvcklu
cHV0KTsKQEAgLTI3OCw3ICsyNzgsNyBAQCBzdHJ1Y3QgV0tBdXRvQ29ycmVjdGlvbkRhdGEgewog
I2VuZGlmCiAKICNpZiBIQVZFKFBFTkNJTEtJVCkKLSAgICBSZXRhaW5QdHI8V0tJbmtQaWNrZXJW
aWV3PiBfaW5rUGlja2VyOworICAgIFJldGFpblB0cjxXS0RyYXdpbmdDb29yZGluYXRvcj4gX2Ry
YXdpbmdDb29yZGluYXRvcjsKICNlbmRpZgogCiAgICAgQk9PTCBfaXNFZGl0YWJsZTsKQEAgLTQ0
MCw2ICs0NDAsMTAgQEAgRk9SX0VBQ0hfUFJJVkFURV9XS0NPTlRFTlRWSUVXX0FDVElPTihERUNM
QVJFX1dLQ09OVEVOVFZJRVdfQUNUSU9OX0ZPUl9XRUJfVklFVykKIC0gKHZvaWQpdXBkYXRlVGV4
dFN1Z2dlc3Rpb25zRm9ySW5wdXREZWxlZ2F0ZTsKICNlbmRpZgogCisjaWYgSEFWRShQRU5DSUxL
SVQpCistIChXS0RyYXdpbmdDb29yZGluYXRvciAqKV9kcmF3aW5nQ29vcmRpbmF0b3I7CisjZW5k
aWYKKwogQGVuZAogCiBAaW50ZXJmYWNlIFdLQ29udGVudFZpZXcgKFdLVGVzdGluZykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rp
b24ubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0
aW9uLm1tCmluZGV4IGY1MTYyYjAwNTkxZDQ5Nzc3NWI2Nzc5ZjhiMGZjNTc3YWM5ZWM5YzcuLmQ5
YmRlMmU3MmRlY2VkMzJiYjhkODg3MWE0OWQxNjAyMzZiNjc3MDcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQpA
QCAtNDIsNiArNDIsNyBAQAogI2ltcG9ydCAiVUlLaXRTUEkuaCIKICNpbXBvcnQgIldLQWN0aW9u
U2hlZXRBc3Npc3RhbnQuaCIKICNpbXBvcnQgIldLRGF0ZVBpY2tlclZpZXdDb250cm9sbGVyLmgi
CisjaW1wb3J0ICJXS0RyYXdpbmdDb29yZGluYXRvci5oIgogI2ltcG9ydCAiV0tFcnJvci5oIgog
I2ltcG9ydCAiV0tGb2N1c2VkRm9ybUNvbnRyb2xWaWV3LmgiCiAjaW1wb3J0ICJXS0Zvcm1JbnB1
dENvbnRyb2wuaCIKQEAgLTQ0OTcsNyArNDQ5OCw3IEBAIC0gKHZvaWQpX2VsZW1lbnREaWRGb2N1
czooY29uc3QgV2ViS2l0OjpGb2N1c2VkRWxlbWVudEluZm9ybWF0aW9uJilpbmZvcm1hdGlvbiB1
CiAKICNpZiBIQVZFKFBFTkNJTEtJVCkKICAgICBpZiAoaW5mb3JtYXRpb24uZWxlbWVudFR5cGUg
PT0gV2ViS2l0OjpJbnB1dFR5cGU6OkRyYXdpbmcpCi0gICAgICAgIFtzZWxmIF9pbnN0YWxsSW5r
UGlja2VyRm9yRHJhd2luZ1ZpZXdXaXRoSUQ6aW5mb3JtYXRpb24uZW1iZWRkZWRWaWV3SURdOwor
ICAgICAgICBbX2RyYXdpbmdDb29yZGluYXRvciBpbnN0YWxsSW5rUGlja2VyRm9yRHJhd2luZzpp
bmZvcm1hdGlvbi5lbWJlZGRlZFZpZXdJRF07CiAjZW5kaWYKIAogICAgIGlmICghc2hvdWxkU2hv
d0tleWJvYXJkKQpAQCAtNDU4OSw4ICs0NTkwLDcgQEAgLSAodm9pZClfZWxlbWVudERpZEJsdXIK
ICAgICBTZXRGb3JTY29wZTxCT09MPiBpc0JsdXJyaW5nRm9jdXNlZE5vZGVGb3JTY29wZSB7IF9p
c0JsdXJyaW5nRm9jdXNlZE5vZGUsIFlFUyB9OwogCiAjaWYgSEFWRShQRU5DSUxLSVQpCi0gICAg
aWYgKF9pbmtQaWNrZXIpCi0gICAgICAgIFtzZWxmIF91bmluc3RhbGxJbmtQaWNrZXJdOworICAg
IFtfZHJhd2luZ0Nvb3JkaW5hdG9yIHVuaW5zdGFsbElua1BpY2tlcl07CiAjZW5kaWYKIAogICAg
IFtfZm9ybUlucHV0U2Vzc2lvbiBpbnZhbGlkYXRlXTsKQEAgLTYyOTMsMjcgKzYyOTMsMTIgQEAg
LSAodm9pZClfaG92ZXJHZXN0dXJlUmVjb2duaXplckNoYW5nZWQ6KFVJR2VzdHVyZVJlY29nbml6
ZXIgKilnZXN0dXJlUmVjb2duaXplcgogI2VuZGlmCiAKICNpZiBIQVZFKFBFTkNJTEtJVCkKLS0g
KHZvaWQpX2luc3RhbGxJbmtQaWNrZXJGb3JEcmF3aW5nVmlld1dpdGhJRDooV2ViQ29yZTo6R3Jh
cGhpY3NMYXllcjo6RW1iZWRkZWRWaWV3SUQpZW1iZWRkZWRWaWV3SUQKKy0gKFdLRHJhd2luZ0Nv
b3JkaW5hdG9yICopX2RyYXdpbmdDb29yZGluYXRvcgogewotICAgIF9pbmtQaWNrZXIgPSBhZG9w
dE5TKFtbV0tJbmtQaWNrZXJWaWV3IGFsbG9jXSBpbml0V2l0aERyYXdpbmdWaWV3Ol9wYWdlLT5l
ZGl0YWJsZUltYWdlQ29udHJvbGxlcigpLmVkaXRhYmxlSW1hZ2UoZW1iZWRkZWRWaWV3SUQpLT5k
cmF3aW5nVmlldy5nZXQoKV0pOwotICAgIFtfaW5rUGlja2VyIHNpemVUb0ZpdF07Ci0gICAgW19p
bmtQaWNrZXIgc2V0VHJhbnNsYXRlc0F1dG9yZXNpemluZ01hc2tJbnRvQ29uc3RyYWludHM6Tk9d
OwotICAgIFtfd2ViVmlldyBhZGRTdWJ2aWV3Ol9pbmtQaWNrZXIuZ2V0KCldOwotCi0gICAgW05T
TGF5b3V0Q29uc3RyYWludCBhY3RpdmF0ZUNvbnN0cmFpbnRzOkBbCi0gICAgICAgIFtbX2lua1Bp
Y2tlciBoZWlnaHRBbmNob3JdIGNvbnN0cmFpbnRFcXVhbFRvQ29uc3RhbnQ6W19pbmtQaWNrZXIg
ZnJhbWVdLnNpemUuaGVpZ2h0XSwKLSAgICAgICAgW1tfaW5rUGlja2VyIGJvdHRvbUFuY2hvcl0g
Y29uc3RyYWludEVxdWFsVG9BbmNob3I6X3dlYlZpZXcuc2FmZUFyZWFMYXlvdXRHdWlkZS5ib3R0
b21BbmNob3JdLAotICAgICAgICBbW19pbmtQaWNrZXIgbGVmdEFuY2hvcl0gY29uc3RyYWludEVx
dWFsVG9BbmNob3I6X3dlYlZpZXcuc2FmZUFyZWFMYXlvdXRHdWlkZS5sZWZ0QW5jaG9yXSwKLSAg
ICAgICAgW1tfaW5rUGlja2VyIHJpZ2h0QW5jaG9yXSBjb25zdHJhaW50RXF1YWxUb0FuY2hvcjpf
d2ViVmlldy5zYWZlQXJlYUxheW91dEd1aWRlLnJpZ2h0QW5jaG9yXSwKLSAgICBdXTsKKyAgICBp
ZiAoIV9kcmF3aW5nQ29vcmRpbmF0b3IpCisgICAgICAgIF9kcmF3aW5nQ29vcmRpbmF0b3IgPSBh
ZG9wdE5TKFtbV0tEcmF3aW5nQ29vcmRpbmF0b3IgYWxsb2NdIGluaXRXaXRoQ29udGVudFZpZXc6
c2VsZl0pOworICAgIHJldHVybiBfZHJhd2luZ0Nvb3JkaW5hdG9yLmdldCgpOwogfQotCi0tICh2
b2lkKV91bmluc3RhbGxJbmtQaWNrZXIKLXsKLSAgICBbX2lua1BpY2tlciByZW1vdmVGcm9tU3Vw
ZXJ2aWV3XTsKLSAgICBfaW5rUGlja2VyID0gbmlsOwotfQotCiAjZW5kaWYgLy8gSEFWRShQRU5D
SUxLSVQpCiAKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9X
S0RyYXdpbmdDb29yZGluYXRvci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLRHJh
d2luZ0Nvb3JkaW5hdG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzc0ZWE0OTI2NDQ1OTllMTFlMzcwMWMwYTYx
MDg0N2NiMmEyZmNkMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2lvcy9XS0RyYXdpbmdDb29yZGluYXRvci5oCkBAIC0wLDAgKzEsNDggQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaWYgSEFWRShQRU5DSUxLSVQpCisKKyNpbXBvcnQgPFdlYkNvcmUvR3JhcGhpY3NMYXllci5o
PgorCitPQkpDX0NMQVNTIFdLQ29udGVudFZpZXc7CitPQkpDX0NMQVNTIFdLSW5rUGlja2VyVmll
dzsKKworQGludGVyZmFjZSBXS0RyYXdpbmdDb29yZGluYXRvciA6IE5TT2JqZWN0CisKKy0gKGlu
c3RhbmNldHlwZSlpbml0IE5TX1VOQVZBSUxBQkxFOworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRo
Q29udGVudFZpZXc6KFdLQ29udGVudFZpZXcgKiljb250ZW50VmlldzsKKworLSAodm9pZClpbnN0
YWxsSW5rUGlja2VyRm9yRHJhd2luZzooV2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6RW1iZWRkZWRW
aWV3SUQpZW1iZWRkZWRWaWV3SUQ7CistICh2b2lkKXVuaW5zdGFsbElua1BpY2tlcjsKKworLSAo
dm9pZClkaWRDaGFuZ2VSdWxlclN0YXRlOihCT09MKXJ1bGVyRW5hYmxlZDsKKworQHByb3BlcnR5
IChub25hdG9taWMsIHJlYWRvbmx5LCByZXRhaW4pIFdLSW5rUGlja2VyVmlldyAqaW5rUGlja2Vy
OworCitAZW5kCisKKworI2VuZGlmIC8vIEhBVkUoUEVOQ0lMS0lUKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLRHJhd2luZ0Nvb3JkaW5hdG9yLm1tIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLRHJhd2luZ0Nvb3JkaW5hdG9yLm1tCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmU5NTNjM2IyOGQ2YzFhZGEwNzc0NjczNmE3NmIwOTViZTI1ZjgwZGEKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tEcmF3aW5nQ29vcmRpbmF0b3IubW0K
QEAgLTAsMCArMSwxMTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBv
cnQgIldLRHJhd2luZ0Nvb3JkaW5hdG9yLmgiCisKKyNpZiBIQVZFKFBFTkNJTEtJVCkKKworI2lt
cG9ydCAiRWRpdGFibGVJbWFnZUNvbnRyb2xsZXIuaCIKKyNpbXBvcnQgIldLQ29udGVudFZpZXdJ
bnRlcmFjdGlvbi5oIgorI2ltcG9ydCAiV0tJbmtQaWNrZXJWaWV3LmgiCisjaW1wb3J0ICJXS1dl
YlZpZXcuaCIKKyNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KKworI2ltcG9ydCAiUGVuY2lsS2l0
U29mdExpbmsuaCIKKworQGludGVyZmFjZSBXS0RyYXdpbmdDb29yZGluYXRvciAoKSA8UEtSdWxl
ckhvc3RpbmdEZWxlZ2F0ZT4KK0BlbmQKKworQGltcGxlbWVudGF0aW9uIFdLRHJhd2luZ0Nvb3Jk
aW5hdG9yIHsKKyAgICBfX3dlYWsgV0tDb250ZW50VmlldyAqX2NvbnRlbnRWaWV3OworCisgICAg
UmV0YWluUHRyPFdLSW5rUGlja2VyVmlldz4gX2lua1BpY2tlcjsKKworICAgIFdlYkNvcmU6Okdy
YXBoaWNzTGF5ZXI6OkVtYmVkZGVkVmlld0lEIF9mb2N1c2VkRW1iZWRkZWRWaWV3SUQ7Cit9CisK
Ky0gKGluc3RhbmNldHlwZSlpbml0V2l0aENvbnRlbnRWaWV3OihXS0NvbnRlbnRWaWV3ICopY29u
dGVudFZpZXcKK3sKKyAgICBzZWxmID0gW3N1cGVyIGluaXRdOworICAgIGlmICghc2VsZikKKyAg
ICAgICAgcmV0dXJuIG5pbDsKKworICAgIF9jb250ZW50VmlldyA9IGNvbnRlbnRWaWV3OworICAg
IF9pbmtQaWNrZXIgPSBhZG9wdE5TKFtbV0tJbmtQaWNrZXJWaWV3IGFsbG9jXSBpbml0V2l0aENv
bnRlbnRWaWV3Ol9jb250ZW50Vmlld10pOworCisgICAgcmV0dXJuIHNlbGY7Cit9CisKKy0gKFdL
SW5rUGlja2VyVmlldyAqKWlua1BpY2tlcgoreworICAgIHJldHVybiBfaW5rUGlja2VyLmdldCgp
OworfQorCistIChVSVZpZXcgKilydWxlckhvc3RpbmdWaWV3Cit7CisgICAgcmV0dXJuIF9jb250
ZW50VmlldzsKK30KKworLSAoQk9PTClydWxlckhvc3RXYW50c1NoYXJlZFJ1bGVyCit7CisgICAg
cmV0dXJuIFlFUzsKK30KKworLSAodm9pZClkaWRDaGFuZ2VSdWxlclN0YXRlOihCT09MKXJ1bGVy
RW5hYmxlZAoreworICAgIFdlYktpdDo6RWRpdGFibGVJbWFnZSAqZm9jdXNlZEVkaXRhYmxlSW1h
Z2UgPSBfY29udGVudFZpZXcucGFnZS0+ZWRpdGFibGVJbWFnZUNvbnRyb2xsZXIoKS5lZGl0YWJs
ZUltYWdlKF9mb2N1c2VkRW1iZWRkZWRWaWV3SUQpOworICAgIGlmICghZm9jdXNlZEVkaXRhYmxl
SW1hZ2UpCisgICAgICAgIHJldHVybjsKKyAgICBbZm9jdXNlZEVkaXRhYmxlSW1hZ2UtPmRyYXdp
bmdWaWV3IGRpZENoYW5nZVJ1bGVyU3RhdGU6cnVsZXJFbmFibGVkXTsKK30KKworLSAodm9pZClp
bnN0YWxsSW5rUGlja2VyRm9yRHJhd2luZzooV2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6RW1iZWRk
ZWRWaWV3SUQpZW1iZWRkZWRWaWV3SUQKK3sKKyAgICBfZm9jdXNlZEVtYmVkZGVkVmlld0lEID0g
ZW1iZWRkZWRWaWV3SUQ7CisKKyAgICBXS1dlYlZpZXcgKndlYlZpZXcgPSBfY29udGVudFZpZXct
Pl93ZWJWaWV3OworCisgICAgW19pbmtQaWNrZXIgc2l6ZVRvRml0XTsKKyAgICBbX2lua1BpY2tl
ciBzZXRUcmFuc2xhdGVzQXV0b3Jlc2l6aW5nTWFza0ludG9Db25zdHJhaW50czpOT107CisgICAg
W3dlYlZpZXcgYWRkU3VidmlldzpfaW5rUGlja2VyLmdldCgpXTsKKworICAgIFtOU0xheW91dENv
bnN0cmFpbnQgYWN0aXZhdGVDb25zdHJhaW50czpAWworICAgICAgICBbW19pbmtQaWNrZXIgaGVp
Z2h0QW5jaG9yXSBjb25zdHJhaW50RXF1YWxUb0NvbnN0YW50OltfaW5rUGlja2VyIGZyYW1lXS5z
aXplLmhlaWdodF0sCisgICAgICAgIFtbX2lua1BpY2tlciBib3R0b21BbmNob3JdIGNvbnN0cmFp
bnRFcXVhbFRvQW5jaG9yOndlYlZpZXcuc2FmZUFyZWFMYXlvdXRHdWlkZS5ib3R0b21BbmNob3Jd
LAorICAgICAgICBbW19pbmtQaWNrZXIgbGVmdEFuY2hvcl0gY29uc3RyYWludEVxdWFsVG9BbmNo
b3I6d2ViVmlldy5zYWZlQXJlYUxheW91dEd1aWRlLmxlZnRBbmNob3JdLAorICAgICAgICBbW19p
bmtQaWNrZXIgcmlnaHRBbmNob3JdIGNvbnN0cmFpbnRFcXVhbFRvQW5jaG9yOndlYlZpZXcuc2Fm
ZUFyZWFMYXlvdXRHdWlkZS5yaWdodEFuY2hvcl0sCisgICAgXV07CisKKyAgICAvLyBXaGVuIGZv
Y3VzZWQsIHB1c2ggdGhlIHJ1bGVyIHN0YXRlIGRvd24gdG8gdGhlIGNhbnZhcyBzbyB0aGF0IGl0
IGRvZXNuJ3QgZ2V0IG91dCBvZiBzeW5jCisgICAgLy8gYW5kIGVhcmx5LXJldHVybiBmcm9tIGxh
dGVyIGNoYW5nZXMuCisgICAgV2ViS2l0OjpFZGl0YWJsZUltYWdlICpmb2N1c2VkRWRpdGFibGVJ
bWFnZSA9IF9jb250ZW50Vmlldy5wYWdlLT5lZGl0YWJsZUltYWdlQ29udHJvbGxlcigpLmVkaXRh
YmxlSW1hZ2UoX2ZvY3VzZWRFbWJlZGRlZFZpZXdJRCk7CisgICAgaWYgKCFmb2N1c2VkRWRpdGFi
bGVJbWFnZSkKKyAgICAgICAgcmV0dXJuOworICAgIFtmb2N1c2VkRWRpdGFibGVJbWFnZS0+ZHJh
d2luZ1ZpZXcgZGlkQ2hhbmdlUnVsZXJTdGF0ZTpbX2lua1BpY2tlciBydWxlckVuYWJsZWRdXTsK
K30KKworLSAodm9pZCl1bmluc3RhbGxJbmtQaWNrZXIKK3sKKyAgICBbX2lua1BpY2tlciByZW1v
dmVGcm9tU3VwZXJ2aWV3XTsKKyAgICBfZm9jdXNlZEVtYmVkZGVkVmlld0lEID0gMDsKK30KKwor
QGVuZAorCisjZW5kaWYgLy8gSEFWRShQRU5DSUxLSVQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9pb3MvV0tEcmF3aW5nVmlldy5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvaW9zL1dLRHJhd2luZ1ZpZXcuaAppbmRleCAyYjJkZTI1MjhjZjYwMmZhODVjMzcwZGJkMzU2
MTMxZjdkYjg2MDJjLi5hZmI5NDQ3MjQ2YTQ0N2U3MDI0ZDBkMzMxODk4MjY4OWFmNWU1MWM2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tEcmF3aW5nVmlldy5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0RyYXdpbmdWaWV3LmgKQEAgLTI5LDE1
ICsyOSwxNiBAQAogI2ltcG9ydCAiUmVtb3RlTGF5ZXJUcmVlVmlld3MuaCIKIAogT0JKQ19DTEFT
UyBQS0NhbnZhc1ZpZXc7CitPQkpDX0NMQVNTIFdLQ29udGVudFZpZXc7CiAKIEBpbnRlcmZhY2Ug
V0tEcmF3aW5nVmlldyA6IFdLRW1iZWRkZWRWaWV3IDxXS05hdGl2ZWx5SW50ZXJhY3RpYmxlPgog
Ci0tIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhFbWJlZGRlZFZpZXdJRDooV2ViQ29yZTo6R3JhcGhp
Y3NMYXllcjo6RW1iZWRkZWRWaWV3SUQpZW1iZWRkZWRWaWV3SUQgd2ViUGFnZVByb3h5OihXZWJL
aXQ6OldlYlBhZ2VQcm94eSYpd2ViUGFnZVByb3h5OworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRo
RW1iZWRkZWRWaWV3SUQ6KFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6OkVtYmVkZGVkVmlld0lEKWVt
YmVkZGVkVmlld0lEIGNvbnRlbnRWaWV3OihXS0NvbnRlbnRWaWV3ICopY29udGVudFZpZXc7CiAK
IC0gKE5TRGF0YSAqKVBOR1JlcHJlc2VudGF0aW9uOwogLSAodm9pZClsb2FkRHJhd2luZ0Zyb21Q
TkdSZXByZXNlbnRhdGlvbjooTlNEYXRhICopUE5HRGF0YTsKIAotQHByb3BlcnR5IChub25hdG9t
aWMsIHJlYWRvbmx5KSBQS0NhbnZhc1ZpZXcgKmNhbnZhc1ZpZXc7CistICh2b2lkKWRpZENoYW5n
ZVJ1bGVyU3RhdGU6KEJPT0wpcnVsZXJFbmFibGVkOwogCiBAZW5kCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0RyYXdpbmdWaWV3Lm1tIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvaW9zL1dLRHJhd2luZ1ZpZXcubW0KaW5kZXggY2UwN2Q0ODc5NjIwMmE3ZGQ2
YjNjZmJlMTYxZjkzMTg2YjMyNTJhMC4uYTI1MzFiOTgzNTUyYTdhNDhjYTgzZDZjYjMwYzcxOWE5
OWQwYTgxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLRHJhd2lu
Z1ZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLRHJhd2luZ1ZpZXcu
bW0KQEAgLTI5LDEwICsyOSwxMiBAQAogI2lmIEhBVkUoUEVOQ0lMS0lUKQogCiAjaW1wb3J0ICJF
ZGl0YWJsZUltYWdlQ29udHJvbGxlci5oIgotI2ltcG9ydCAiUGVuY2lsS2l0U29mdExpbmsuaCIK
KyNpbXBvcnQgIldLSW5rUGlja2VyVmlldy5oIgogI2ltcG9ydCA8d3RmL09TT2JqZWN0UHRyLmg+
CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAKKyNpbXBvcnQgIlBlbmNpbEtpdFNvZnRMaW5r
LmgiCisKIEBpbnRlcmZhY2UgV0tEcmF3aW5nVmlldyAoKSA8UEtDYW52YXNWaWV3RGVsZWdhdGU+
CiBAZW5kCiAKQEAgLTQ0LDE2ICs0NiwxNiBAQCBAaW1wbGVtZW50YXRpb24gV0tEcmF3aW5nVmll
dyB7CiAgICAgUmV0YWluUHRyPFBLSW1hZ2VSZW5kZXJlcj4gX3JlbmRlcmVyOwogI2VuZGlmCiAK
LSAgICBXZWFrUHRyPFdlYktpdDo6V2ViUGFnZVByb3h5PiBfd2ViUGFnZVByb3h5OworICAgIF9f
d2VhayBXS0NvbnRlbnRWaWV3ICpfY29udGVudFZpZXc7CiB9CiAKLS0gKGluc3RhbmNldHlwZSlp
bml0V2l0aEVtYmVkZGVkVmlld0lEOihXZWJDb3JlOjpHcmFwaGljc0xheWVyOjpFbWJlZGRlZFZp
ZXdJRCllbWJlZGRlZFZpZXdJRCB3ZWJQYWdlUHJveHk6KFdlYktpdDo6V2ViUGFnZVByb3h5Jil3
ZWJQYWdlUHJveHkKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aEVtYmVkZGVkVmlld0lEOihXZWJD
b3JlOjpHcmFwaGljc0xheWVyOjpFbWJlZGRlZFZpZXdJRCllbWJlZGRlZFZpZXdJRCBjb250ZW50
VmlldzooV0tDb250ZW50VmlldyAqKWNvbnRlbnRWaWV3CiB7CiAgICAgc2VsZiA9IFtzdXBlciBp
bml0V2l0aEVtYmVkZGVkVmlld0lEOmVtYmVkZGVkVmlld0lEXTsKICAgICBpZiAoIXNlbGYpCiAg
ICAgICAgIHJldHVybiBuaWw7CiAKLSAgICBfd2ViUGFnZVByb3h5ID0gbWFrZVdlYWtQdHIod2Vi
UGFnZVByb3h5KTsKKyAgICBfY29udGVudFZpZXcgPSBjb250ZW50VmlldzsKIAogICAgIF9wZW5j
aWxWaWV3ID0gYWRvcHROUyhbV2ViS2l0OjphbGxvY1BLQ2FudmFzVmlld0luc3RhbmNlKCkgaW5p
dFdpdGhGcmFtZTpDR1JlY3RaZXJvXSk7CiAKQEAgLTYxLDYgKzYzLDcgQEAgLSAoaW5zdGFuY2V0
eXBlKWluaXRXaXRoRW1iZWRkZWRWaWV3SUQ6KFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6OkVtYmVk
ZGVkVmlld0lEKWUKICAgICBbX3BlbmNpbFZpZXcgc2V0VXNlckludGVyYWN0aW9uRW5hYmxlZDpZ
RVNdOwogICAgIFtfcGVuY2lsVmlldyBzZXRPcGFxdWU6Tk9dOwogICAgIFtfcGVuY2lsVmlldyBz
ZXREZWxlZ2F0ZTpzZWxmXTsKKyAgICBbX3BlbmNpbFZpZXcgc2V0UnVsZXJIb3N0aW5nRGVsZWdh
dGU6X2NvbnRlbnRWaWV3Ll9kcmF3aW5nQ29vcmRpbmF0b3JdOwogCiAgICAgW3NlbGYgYWRkU3Vi
dmlldzpfcGVuY2lsVmlldy5nZXQoKV07CiAKQEAgLTE2NSwxOCArMTY4LDIzIEBAIC0gKHZvaWQp
ZHJhd2luZ0RpZENoYW5nZTooUEtDYW52YXNWaWV3ICopY2FudmFzVmlldwogICAgIFtzZWxmIGlu
dmFsaWRhdGVBdHRhY2htZW50XTsKIH0KIAorLSAodm9pZClfY2FudmFzVmlld1dpbGxCZWdpbkRy
YXdpbmc6KFBLQ2FudmFzVmlldyAqKWNhbnZhc1ZpZXcKK3sKKyAgICBbX3BlbmNpbFZpZXcgc2V0
SW5rOl9jb250ZW50Vmlldy5fZHJhd2luZ0Nvb3JkaW5hdG9yLmlua1BpY2tlci5pbmtdOworfQor
CiAtICh2b2lkKWludmFsaWRhdGVBdHRhY2htZW50CiB7Ci0gICAgaWYgKCFfd2ViUGFnZVByb3h5
KQorICAgIGlmICghX2NvbnRlbnRWaWV3LnBhZ2UpCiAgICAgICAgIHJldHVybjsKLSAgICBhdXRv
JiBwYWdlID0gKl93ZWJQYWdlUHJveHk7CisgICAgYXV0byYgcGFnZSA9ICpfY29udGVudFZpZXcu
cGFnZTsKIAogICAgIHBhZ2UuZWRpdGFibGVJbWFnZUNvbnRyb2xsZXIoKS5pbnZhbGlkYXRlQXR0
YWNobWVudEZvckVkaXRhYmxlSW1hZ2Uoc2VsZi5lbWJlZGRlZFZpZXdJRCk7CiB9CiAKLS0gKFBL
Q2FudmFzVmlldyAqKWNhbnZhc1ZpZXcKKy0gKHZvaWQpZGlkQ2hhbmdlUnVsZXJTdGF0ZTooQk9P
TClydWxlckVuYWJsZWQKIHsKLSAgICByZXR1cm4gX3BlbmNpbFZpZXcuZ2V0KCk7CisgICAgW19w
ZW5jaWxWaWV3IHNldFJ1bGVyRW5hYmxlZDpydWxlckVuYWJsZWRdOwogfQogCiBAZW5kCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tJbmtQaWNrZXJWaWV3LmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tJbmtQaWNrZXJWaWV3LmgKaW5kZXggMjEzM2Ey
NzViOTIzZjE1YWZiZTJkOGViN2E5MzIyYTNhYjIxYjI2Yi4uMzk5OTk3MzFiZWZkNWViYzdlYWQ3
YmFkMTc1NjFhYjRiMjhmZDkxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
aW9zL1dLSW5rUGlja2VyVmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9X
S0lua1BpY2tlclZpZXcuaApAQCAtMjcsNyArMjcsOCBAQAogCiAjaW1wb3J0IDxVSUtpdC9VSUtp
dC5oPgogCi1PQkpDX0NMQVNTIFdLRHJhd2luZ1ZpZXc7CitPQkpDX0NMQVNTIFBLSW5rOworT0JK
Q19DTEFTUyBXS0NvbnRlbnRWaWV3OwogCiBAaW50ZXJmYWNlIFdLSW5rUGlja2VyVmlldyA6IFVJ
VmlldwogCkBAIC0zNSw3ICszNiwxMCBAQCBPQkpDX0NMQVNTIFdLRHJhd2luZ1ZpZXc7CiAtIChp
bnN0YW5jZXR5cGUpaW5pdFdpdGhGcmFtZTooQ0dSZWN0KWZyYW1lIE5TX1VOQVZBSUxBQkxFOwog
LSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoQ29kZXI6KE5TQ29kZXIgKiljb2RlciBOU19VTkFWQUlM
QUJMRTsKIAotLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRHJhd2luZ1ZpZXc6KFdLRHJhd2luZ1Zp
ZXcgKilkcmF3aW5nVmlldyBOU19ERVNJR05BVEVEX0lOSVRJQUxJWkVSOworLSAoaW5zdGFuY2V0
eXBlKWluaXRXaXRoQ29udGVudFZpZXc6KFdLQ29udGVudFZpZXcgKiljb250ZW50VmlldyBOU19E
RVNJR05BVEVEX0lOSVRJQUxJWkVSOworCitAcHJvcGVydHkgKG5vbmF0b21pYywgYXNzaWduKSBC
T09MIHJ1bGVyRW5hYmxlZDsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZXRhaW4pIFBLSW5rICpp
bms7CiAKIEBlbmQKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dL
SW5rUGlja2VyVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0lua1BpY2tl
clZpZXcubW0KaW5kZXggOWEzNzQzOGU1ODcyNTg4ZDQ0MDA1MGM0YmY0YmI4MWRkNGFmY2E4My4u
ZWM0NTBkZmYzNWQ2MmFlYzE2MDkxNzg1ODA3ZDE0MDA3YjQ4MTMzNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLSW5rUGlja2VyVmlldy5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tJbmtQaWNrZXJWaWV3Lm1tCkBAIC0yOCw3ICsyOCw3IEBA
CiAKICNpZiBIQVZFKFBFTkNJTEtJVCkKIAotI2ltcG9ydCAiV0tEcmF3aW5nVmlldy5oIgorI2lt
cG9ydCAiV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmgiCiAKICNpbXBvcnQgIlBlbmNpbEtpdFNv
ZnRMaW5rLmgiCiAKQEAgLTM3LDQ0ICszNywyOCBAQCBAZW5kCiAKIEBpbXBsZW1lbnRhdGlvbiBX
S0lua1BpY2tlclZpZXcgewogICAgIFJldGFpblB0cjxQS0lubGluZUlua1BpY2tlcj4gX2lubGlu
ZVBpY2tlcjsKLSAgICBSZXRhaW5QdHI8V0tEcmF3aW5nVmlldz4gX2RyYXdpbmdWaWV3OworICAg
IF9fd2VhayBXS0NvbnRlbnRWaWV3ICpfY29udGVudFZpZXc7CiB9CiAKLS0gKGluc3RhbmNldHlw
ZSlpbml0V2l0aERyYXdpbmdWaWV3OihXS0RyYXdpbmdWaWV3ICopZHJhd2luZ1ZpZXcKKy0gKGlu
c3RhbmNldHlwZSlpbml0V2l0aENvbnRlbnRWaWV3OihXS0NvbnRlbnRWaWV3ICopY29udGVudFZp
ZXcKIHsKICAgICBzZWxmID0gW3N1cGVyIGluaXRXaXRoRnJhbWU6Q0dSZWN0WmVyb107CiAgICAg
aWYgKCFzZWxmKQogICAgICAgICByZXR1cm4gbmlsOwogCiAgICAgX2lubGluZVBpY2tlciA9IGFk
b3B0TlMoW1dlYktpdDo6YWxsb2NQS0lubGluZUlua1BpY2tlckluc3RhbmNlKCkgaW5pdF0pOwot
ICAgIFtfaW5saW5lUGlja2VyIHNldFNlbGVjdGVkSW5rOltkcmF3aW5nVmlldyBjYW52YXNWaWV3
XS5pbmsgYW5pbWF0ZWQ6Tk9dOwotICAgIFtfaW5saW5lUGlja2VyIGFkZFRhcmdldDpzZWxmIGFj
dGlvbjpAc2VsZWN0b3IoZGlkUGlja0luaykgZm9yQ29udHJvbEV2ZW50czpVSUNvbnRyb2xFdmVu
dFZhbHVlQ2hhbmdlZF07CiAgICAgW19pbmxpbmVQaWNrZXIgc2V0RGVsZWdhdGU6c2VsZl07CiAK
LSAgICBfZHJhd2luZ1ZpZXcgPSBkcmF3aW5nVmlldzsKKyAgICBfY29udGVudFZpZXcgPSBjb250
ZW50VmlldzsKICAgICBbc2VsZiBhZGRTdWJ2aWV3Ol9pbmxpbmVQaWNrZXIuZ2V0KCldOwogCiAg
ICAgcmV0dXJuIHNlbGY7CiB9CiAKLS0gKHZvaWQpZGlkUGlja0luawotewotICAgIFtfZHJhd2lu
Z1ZpZXcgY2FudmFzVmlld10uaW5rID0gW19pbmxpbmVQaWNrZXIgc2VsZWN0ZWRJbmtdOwotfQot
CiAtICh2b2lkKWlubGluZUlua1BpY2tlckRpZFRvZ2dsZVJ1bGVyOihQS0lubGluZUlua1BpY2tl
ciAqKWlubGluZUlua1BpY2tlcgogewotICAgIFtfZHJhd2luZ1ZpZXcgY2FudmFzVmlld10ucnVs
ZXJFbmFibGVkID0gIVtfZHJhd2luZ1ZpZXcgY2FudmFzVmlld10ucnVsZXJFbmFibGVkOwotfQot
Ci0tICh2b2lkKWlubGluZUlua1BpY2tlcjooUEtJbmxpbmVJbmtQaWNrZXIgKilpbmxpbmVJbmtQ
aWNrZXIgZGlkU2VsZWN0VG9vbDooUEtJbmtJZGVudGlmaWVyKWlkZW50aWZlcgotewotICAgIFtz
ZWxmIGRpZFBpY2tJbmtdOwotfQotCi0tICh2b2lkKWlubGluZUlua1BpY2tlcjooUEtJbmxpbmVJ
bmtQaWNrZXIgKilpbmxpbmVJbmtQaWNrZXIgZGlkU2VsZWN0Q29sb3I6KFVJQ29sb3IgKiljb2xv
cgotewotICAgIFtzZWxmIGRpZFBpY2tJbmtdOworICAgIF9ydWxlckVuYWJsZWQgPSAhX3J1bGVy
RW5hYmxlZDsKKyAgICBbX2NvbnRlbnRWaWV3Ll9kcmF3aW5nQ29vcmRpbmF0b3IgZGlkQ2hhbmdl
UnVsZXJTdGF0ZTpfcnVsZXJFbmFibGVkXTsKIH0KIAogLSAoQ0dTaXplKWlua1BpY2tlclNpemUK
QEAgLTk3LDcgKzgxLDE3IEBAIC0gKENHU2l6ZSlzaXplVGhhdEZpdHM6KENHU2l6ZSlzaXplCiAK
IC0gKFVJVmlld0NvbnRyb2xsZXIgKil2aWV3Q29udHJvbGxlckZvclBvcG92ZXJQcmVzZW50YXRp
b25Gcm9tSW5saW5lSW5rUGlja2VyOihQS0lubGluZUlua1BpY2tlciAqKWlubGluZUlua1BpY2tl
cgogewotICAgIHJldHVybiBbVUlWaWV3Q29udHJvbGxlciBfdmlld0NvbnRyb2xsZXJGb3JGdWxs
U2NyZWVuUHJlc2VudGF0aW9uRnJvbVZpZXc6X2RyYXdpbmdWaWV3LmdldCgpXTsKKyAgICByZXR1
cm4gW1VJVmlld0NvbnRyb2xsZXIgX3ZpZXdDb250cm9sbGVyRm9yRnVsbFNjcmVlblByZXNlbnRh
dGlvbkZyb21WaWV3Ol9jb250ZW50Vmlld107Cit9CisKKy0gKHZvaWQpc2V0SW5rOihQS0luayAq
KWluaworeworICAgIFtfaW5saW5lUGlja2VyIHNldFNlbGVjdGVkSW5rOmlua107Cit9CisKKy0g
KFBLSW5rICopaW5rCit7CisgICAgcmV0dXJuIFtfaW5saW5lUGlja2VyIHNlbGVjdGVkSW5rXTsK
IH0KIAogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKaW5kZXggOTJkZDY5NWUyNDZmNzJkMzllMjI4NDA3MTA4YzY0NDM5OTRmMjE3Yy4uNDlj
NDBjYmExNzNkYjMzY2UzYjlkMzg0MWI5ZWFkYmUxNTk1NzM5MiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yNDg3LDYgKzI0ODcsOCBA
QAogCQkyRDFCNUQ1QzE4NTg2OUM4MDA2QzY1OTYgLyogVmlld0dlc3R1cmVDb250cm9sbGVyTWVz
c2FnZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gVmlld0dlc3R1cmVDb250
cm9sbGVyTWVzc2FnZXMuaDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYktpdDIvVmlld0dlc3R1
cmVDb250cm9sbGVyTWVzc2FnZXMuaDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsg
fTsKIAkJMkQxRTgyMjEyMTZGRkY1MDAwQTE1MjY1IC8qIFdLV2ViRXZlbnQuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV0tXZWJFdmVudC5oOyBwYXRoID0gaW9zL1dLV2ViRXZl
bnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkQxRTgyMjIyMTZGRkY1MTAwQTE1
MjY1IC8qIFdLV2ViRXZlbnQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5h
bWUgPSBXS1dlYkV2ZW50Lm1tOyBwYXRoID0gaW9zL1dLV2ViRXZlbnQubW07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTJEMjFBNDU4MjFERUQ0OUIwMDI0ODdFNyAvKiBXS0RyYXdpbmdD
b29yZGluYXRvci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFdLRHJhd2luZ0Nvb3JkaW5hdG9y
Lm1tOyBwYXRoID0gaW9zL1dLRHJhd2luZ0Nvb3JkaW5hdG9yLm1tOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQkyRDIxQTQ1OTIxREVENDlCMDAyNDg3RTcgLyogV0tEcmF3aW5nQ29vcmRp
bmF0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV0tEcmF3aW5nQ29vcmRpbmF0b3IuaDsgcGF0aCA9IGlv
cy9XS0RyYXdpbmdDb29yZGluYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQky
RDI4QTQ5NTFBRjk2NUExMDBGMTkwQzkgLyogV0tWaWV3TGF5b3V0U3RyYXRlZ3kuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tWaWV3TGF5b3V0U3RyYXRlZ3kuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkQyOEE0OTYxQUY5NjVBMTAwRjE5MEM5IC8qIFdLVmll
d0xheW91dFN0cmF0ZWd5Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gV0tWaWV3TGF5b3V0U3RyYXRlZ3kubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTJEMjhGM0UwMTg4NUNDQzEwMDRCOUVBRSAvKiBXZWJDaHJvbWVDbGllbnRJT1MubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBXZWJDaHJvbWVDbGllbnRJT1MubW07
IHBhdGggPSBpb3MvV2ViQ2hyb21lQ2xpZW50SU9TLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtNTg0NCw2ICs1ODQ2LDggQEAKIAkJCQkwRkNCNEUzRDE4QkJFMDQ0MDAwRkNGQzkg
LyogV0tDb250ZW50Vmlldy5tbSAqLywKIAkJCQkwRkNCNEU2QTE4QkJGMjZBMDAwRkNGQzkgLyog
V0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmggKi8sCiAJCQkJMEZDQjRFNkIxOEJCRjI2QTAwMEZD
RkM5IC8qIFdLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbSAqLywKKwkJCQkyRDIxQTQ1OTIxREVE
NDlCMDAyNDg3RTcgLyogV0tEcmF3aW5nQ29vcmRpbmF0b3IuaCAqLywKKwkJCQkyRDIxQTQ1ODIx
REVENDlCMDAyNDg3RTcgLyogV0tEcmF3aW5nQ29vcmRpbmF0b3IubW0gKi8sCiAJCQkJMkRDMThG
QUIyMTg5MTA0ODAwMjVBODhEIC8qIFdLRHJhd2luZ1ZpZXcuaCAqLywKIAkJCQkyREMxOEZBQzIx
ODkxMDQ4MDAyNUE4OEQgLyogV0tEcmF3aW5nVmlldy5tbSAqLywKIAkJCQkwRkNCNEUzRjE4QkJF
MDQ0MDAwRkNGQzkgLyogV0tHZW9sb2NhdGlvblByb3ZpZGVySU9TLmggKi8sCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>358297</attachid>
            <date>2019-01-03 17:45:59 -0800</date>
            <delta_ts>2019-01-04 11:25:53 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-193130-20190103174558.patch</filename>
            <type>text/plain</type>
            <size>27282</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM5NTk2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGE0ODM1YmE0MmI2Y2ZkNmZk
YzQ3MWRiMzk4OWQxYThlNGYyMTZhZjkuLjkxNGJlZWZiYjg0MDA0MzA1N2Y3YmE5ODRjYjcwNDQ3
ZjM3ZGU1MTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTkgQEAKKzIwMTktMDEtMDMgIFRpbSBIb3J0
b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisKKyAgICAgICAgU2hhcmUgaW5rIGNob2lj
ZSBhbmQgcnVsZXIgYmV0d2VlbiBhbGwgZWRpdGFibGUgaW1hZ2VzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTMxMzAKKyAgICAgICAgPHJkYXI6Ly9w
cm9ibGVtLzQ2ODI2NDkxPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogU291cmNlc0NvY29hLnR4dDoKKyAgICAgICAgQWRkIFdLRHJhd2luZ0Nvb3Jk
aW5hdG9yLCB3aGljaCBtYWludGFpbnMgV0tXZWJWaWV3LXdpZGUgZHJhd2luZyBzdGF0ZSwKKyAg
ICAgICAgYW5kIG1hbmFnZXMgYSBzaW5nbGUgc2hhcmVkIGluayBwaWNrZXIuCisKKyAgICAgICAg
KiBVSVByb2Nlc3MvUGFnZUNsaWVudC5oOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50Ojpj
cmVhdGVEcmF3aW5nVmlldyk6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9FZGl0YWJsZUltYWdl
Q29udHJvbGxlci5tbToKKyAgICAgICAgKFdlYktpdDo6RWRpdGFibGVJbWFnZUNvbnRyb2xsZXI6
OmVuc3VyZUVkaXRhYmxlSW1hZ2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvUGFnZUNsaWVu
dEltcGxJT1MuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1t
OgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6Y3JlYXRlRHJhd2luZ1ZpZXcpOgor
ICAgICAgICBQbHVtYiBXS0RyYXdpbmdWaWV3IGNyZWF0aW9uIHRocm91Z2ggUGFnZUNsaWVudCwg
c28gdGhhdCBpdCBjYW4gYmUgaW5zdGFudGlhdGVkCisgICAgICAgIHdpdGgga25vd2xlZGdlIG9m
IGl0cyBvd25pbmcgV0tDb250ZW50Vmlldy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tD
b250ZW50Vmlld0ludGVyYWN0aW9uLmg6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0NvbnRl
bnRWaWV3SW50ZXJhY3Rpb24ubW06CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgX2VsZW1lbnRE
aWRGb2N1czp1c2VySXNJbnRlcmFjdGluZzpibHVyUHJldmlvdXNOb2RlOmNoYW5naW5nQWN0aXZp
dHlTdGF0ZTp1c2VyT2JqZWN0Ol0pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9lbGVtZW50
RGlkQmx1cl0pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9kcmF3aW5nQ29vcmRpbmF0b3Jd
KToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfaW5zdGFsbElua1BpY2tlckZvckRyYXdpbmdW
aWV3V2l0aElEOl0pOiBEZWxldGVkLgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF91bmluc3Rh
bGxJbmtQaWNrZXJdKTogRGVsZXRlZC4KKyAgICAgICAgTW92ZSBpbmsgcGlja2VyIG1hbmFnZW1l
bnQgaW50byBXS0RyYXdpbmdDb29yZGluYXRvci4KKworICAgICAgICAqIFVJUHJvY2Vzcy9pb3Mv
V0tEcmF3aW5nVmlldy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tEcmF3aW5nVmlldy5t
bToKKyAgICAgICAgKC1bV0tEcmF3aW5nVmlldyBpbml0V2l0aEVtYmVkZGVkVmlld0lEOmNvbnRl
bnRWaWV3Ol0pOgorICAgICAgICAoLVtXS0RyYXdpbmdWaWV3IF9jYW52YXNWaWV3V2lsbEJlZ2lu
RHJhd2luZzpdKToKKyAgICAgICAgKC1bV0tEcmF3aW5nVmlldyBpbnZhbGlkYXRlQXR0YWNobWVu
dF0pOgorICAgICAgICAoLVtXS0RyYXdpbmdWaWV3IGRpZENoYW5nZVJ1bGVyU3RhdGU6XSk6Cisg
ICAgICAgICgtW1dLRHJhd2luZ1ZpZXcgaW5pdFdpdGhFbWJlZGRlZFZpZXdJRDp3ZWJQYWdlUHJv
eHk6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dLRHJhd2luZ1ZpZXcgY2FudmFzVmlld10pOiBE
ZWxldGVkLgorICAgICAgICBVc2UgYSBzaGFyZWQgcnVsZXIsIG93bmVkIGJ5IFdLRHJhd2luZ0Nv
b3JkaW5hdG9yLgorICAgICAgICBVcGRhdGUgdGhlIGVkaXRhYmxlIGltYWdlJ3MgaW5rIHdoZW4g
ZHJhd2luZyBiZWdpbnMuIFRoaXMgd2F5LCB3ZSBkb24ndCBoYXZlCisgICAgICAgIHRvIHB1c2gg
aW5rIGNoYW5nZXMgdG8gYWxsIGRyYXdpbmdzIGFzIHRoZXkgaGFwcGVuLgorCisgICAgICAgICog
VUlQcm9jZXNzL2lvcy9XS0lua1BpY2tlclZpZXcuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9z
L1dLSW5rUGlja2VyVmlldy5tbToKKyAgICAgICAgKC1bV0tJbmtQaWNrZXJWaWV3IGluaXRXaXRo
Q29udGVudFZpZXc6XSk6CisgICAgICAgICgtW1dLSW5rUGlja2VyVmlldyBpbmxpbmVJbmtQaWNr
ZXJEaWRUb2dnbGVSdWxlcjpdKToKKyAgICAgICAgKC1bV0tJbmtQaWNrZXJWaWV3IHZpZXdDb250
cm9sbGVyRm9yUG9wb3ZlclByZXNlbnRhdGlvbkZyb21JbmxpbmVJbmtQaWNrZXI6XSk6CisgICAg
ICAgICgtW1dLSW5rUGlja2VyVmlldyBzZXRJbms6XSk6CisgICAgICAgICgtW1dLSW5rUGlja2Vy
VmlldyBpbmtdKToKKyAgICAgICAgKC1bV0tJbmtQaWNrZXJWaWV3IGluaXRXaXRoRHJhd2luZ1Zp
ZXc6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dLSW5rUGlja2VyVmlldyBkaWRQaWNrSW5rXSk6
IERlbGV0ZWQuCisgICAgICAgICgtW1dLSW5rUGlja2VyVmlldyBpbmxpbmVJbmtQaWNrZXI6ZGlk
U2VsZWN0VG9vbDpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV0tJbmtQaWNrZXJWaWV3IGlubGlu
ZUlua1BpY2tlcjpkaWRTZWxlY3RDb2xvcjpdKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJLaXQu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAxOS0wMS0wMyAgQnJlbnQgRnVsZ2hhbSAg
PGJmdWxnaGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgbG9naWMgaGFuZGxpbmcgRE5U
IGhlYWRlciBkdXJpbmcgcmVkaXJlY3RzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJj
ZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKaW5kZXggNTZmM2M0
NWM0MTE5ZTdkY2ZjOGRiNGIwOWU1M2QyYjAwNTgwMWU3YS4uYTU4NTViYTdlOTk5NzcwYTUyN2Uw
MTcwODdmMDRlOTYzN2RmMjQ2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29j
b2EudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dApAQCAtMzg5LDYgKzM4
OSw3IEBAIFVJUHJvY2Vzcy9pb3MvV0tBY3Rpb25TaGVldEFzc2lzdGFudC5tbQogVUlQcm9jZXNz
L2lvcy9XS0FwcGxpY2F0aW9uU3RhdGVUcmFja2luZ1ZpZXcubW0KIFVJUHJvY2Vzcy9pb3MvV0tD
b250ZW50Vmlldy5tbSBAbm8tdW5pZnkKIFVJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVy
YWN0aW9uLm1tIEBuby11bmlmeQorVUlQcm9jZXNzL2lvcy9XS0RyYXdpbmdDb29yZGluYXRvci5t
bQogVUlQcm9jZXNzL2lvcy9XS0RyYXdpbmdWaWV3Lm1tCiBVSVByb2Nlc3MvaW9zL1dLR2VvbG9j
YXRpb25Qcm92aWRlcklPUy5tbQogVUlQcm9jZXNzL2lvcy9XS0dlb2xvY2F0aW9uUHJvdmlkZXJJ
T1NPYmpDU2VjdXJpdHlPcmlnaW4ubW0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1BhZ2VDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaApp
bmRleCBjNzIyYjdkNzA2NjgxMmM3NDlkNzI3Y2I3ZjhkZDRiOTUyMDRkZTUyLi4wYjg1OGM0NmVl
NDc0ZDY5NmRkYzNkNDM1YmQ1NGMxMzIzMDAzYzJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFn
ZUNsaWVudC5oCkBAIC00OSw2ICs0OSw3IEBACiBPQkpDX0NMQVNTIENBTGF5ZXI7CiBPQkpDX0NM
QVNTIE5TRmlsZVdyYXBwZXI7CiBPQkpDX0NMQVNTIE5TU2V0OworT0JKQ19DTEFTUyBXS0RyYXdp
bmdWaWV3OwogT0JKQ19DTEFTUyBfV0tSZW1vdGVPYmplY3RSZWdpc3RyeTsKIAogI2lmIFVTRShB
UFBLSVQpCkBAIC00NjIsNiArNDYzLDEwIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIE5TU2V0ICpz
ZXJpYWxpemFibGVGaWxlV3JhcHBlckNsYXNzZXMoKSBjb25zdCB7IHJldHVybiBudWxscHRyOyB9
CiAjZW5kaWYKICNlbmRpZgorCisjaWYgSEFWRShQRU5DSUxLSVQpCisgICAgdmlydHVhbCBSZXRh
aW5QdHI8V0tEcmF3aW5nVmlldz4gY3JlYXRlRHJhd2luZ1ZpZXcoV2ViQ29yZTo6R3JhcGhpY3NM
YXllcjo6RW1iZWRkZWRWaWV3SUQpIHsgcmV0dXJuIG51bGxwdHI7IH0KKyNlbmRpZgogfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9pb3MvRWRpdGFibGVJbWFnZUNvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9pb3MvRWRpdGFibGVJbWFnZUNvbnRyb2xsZXIubW0KaW5kZXggMmU1MWUzMTBjYzBiODQ4OWRh
YjZhMGJhYzNkZTcyNTI3YmIzNGViMy4uYTlhZTk4MWRmODg4YTE5M2E4Mzk2ZDNiZmUzNTU2NWFj
MWY2OWJkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL0VkaXRhYmxl
SW1hZ2VDb250cm9sbGVyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9FZGl0
YWJsZUltYWdlQ29udHJvbGxlci5tbQpAQCAtMzAsNiArMzAsNyBAQAogCiAjaW1wb3J0ICJBUElB
dHRhY2htZW50LmgiCiAjaW1wb3J0ICJFZGl0YWJsZUltYWdlQ29udHJvbGxlck1lc3NhZ2VzLmgi
CisjaW1wb3J0ICJQYWdlQ2xpZW50SW1wbElPUy5oIgogI2ltcG9ydCAiUGVuY2lsS2l0U1BJLmgi
CiAjaW1wb3J0ICJXS0RyYXdpbmdWaWV3LmgiCiAjaW1wb3J0ICJXZWJQYWdlUHJveHkuaCIKQEAg
LTU2LDcgKzU3LDcgQEAgRWRpdGFibGVJbWFnZSYgRWRpdGFibGVJbWFnZUNvbnRyb2xsZXI6OmVu
c3VyZUVkaXRhYmxlSW1hZ2UoV2ViQ29yZTo6R3JhcGhpY3NMYXkKIHsKICAgICBhdXRvIHJlc3Vs
dCA9IG1fZWRpdGFibGVJbWFnZXMuZW5zdXJlKGVtYmVkZGVkVmlld0lELCBbJl0gewogICAgICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8RWRpdGFibGVJbWFnZT4gaW1hZ2UgPSBzdGQ6Om1ha2VfdW5pcXVl
PEVkaXRhYmxlSW1hZ2U+KCk7Ci0gICAgICAgIGltYWdlLT5kcmF3aW5nVmlldyA9IGFkb3B0TlMo
W1tXS0RyYXdpbmdWaWV3IGFsbG9jXSBpbml0V2l0aEVtYmVkZGVkVmlld0lEOmVtYmVkZGVkVmll
d0lEIHdlYlBhZ2VQcm94eToqbV93ZWJQYWdlUHJveHldKTsKKyAgICAgICAgaW1hZ2UtPmRyYXdp
bmdWaWV3ID0gbV93ZWJQYWdlUHJveHktPnBhZ2VDbGllbnQoKS5jcmVhdGVEcmF3aW5nVmlldyhl
bWJlZGRlZFZpZXdJRCk7CiAgICAgICAgIHJldHVybiBpbWFnZTsKICAgICB9KTsKICAgICByZXR1
cm4gKnJlc3VsdC5pdGVyYXRvci0+dmFsdWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oCmluZGV4IGRlNzQxYzcyMmFiZTZjMDhlNTA4MTYyMmM4
MGY0NzhhM2JkNjA4OTQuLjRiNDIwZDE2NzM4YWQ4YTZmMjI1MGMyZDk5OWU5ZTBmNThhOTY0OTYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElP
Uy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5o
CkBAIC0yMjgsNiArMjI4LDEwIEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGRpZEZpbmlzaFByb2Nl
c3NpbmdBbGxQZW5kaW5nTW91c2VFdmVudHMoKSBmaW5hbCB7IH0KIAorI2lmIEhBVkUoUEVOQ0lM
S0lUKQorICAgIFJldGFpblB0cjxXS0RyYXdpbmdWaWV3PiBjcmVhdGVEcmF3aW5nVmlldyhXZWJD
b3JlOjpHcmFwaGljc0xheWVyOjpFbWJlZGRlZFZpZXdJRCkgb3ZlcnJpZGU7CisjZW5kaWYKKwog
ICAgIFdLQ29udGVudFZpZXcgKm1fY29udGVudFZpZXc7CiAgICAgUmV0YWluUHRyPFdLRWRpdG9y
VW5kb1RhcmdldD4gbV91bmRvVGFyZ2V0OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbQppbmRleCA0MjE1MjFiNzQ4M2JlYzFkZDkxOThh
M2IwYmI1ZWVkMTU0ZDY1NzRmLi41NmQ5YWRmY2E0NDQ0M2UwYzRmZTFlMGEwNGI3NjE3YjZjZTBi
NGFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudElt
cGxJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBs
SU9TLm1tCkBAIC00MSw2ICs0MSw3IEBACiAjaW1wb3J0ICJWaWV3U25hcHNob3RTdG9yZS5oIgog
I2ltcG9ydCAiV0tDb250ZW50Vmlldy5oIgogI2ltcG9ydCAiV0tDb250ZW50Vmlld0ludGVyYWN0
aW9uLmgiCisjaW1wb3J0ICJXS0RyYXdpbmdWaWV3LmgiCiAjaW1wb3J0ICJXS0VkaXRDb21tYW5k
LmgiCiAjaW1wb3J0ICJXS0dlb2xvY2F0aW9uUHJvdmlkZXJJT1MuaCIKICNpbXBvcnQgIldLUGFz
c3dvcmRWaWV3LmgiCkBAIC04MTcsNiArODE4LDEzIEBAIHZvaWQgUGFnZUNsaWVudEltcGw6OnJl
cXVlc3RQYXNzd29yZEZvclF1aWNrTG9va0RvY3VtZW50KGNvbnN0IFN0cmluZyYgZmlsZU5hbWUs
CiB9CiAjZW5kaWYKIAorI2lmIEhBVkUoUEVOQ0lMS0lUKQorUmV0YWluUHRyPFdLRHJhd2luZ1Zp
ZXc+IFBhZ2VDbGllbnRJbXBsOjpjcmVhdGVEcmF3aW5nVmlldyhXZWJDb3JlOjpHcmFwaGljc0xh
eWVyOjpFbWJlZGRlZFZpZXdJRCBlbWJlZGRlZFZpZXdJRCkKK3sKKyAgICByZXR1cm4gYWRvcHRO
UyhbW1dLRHJhd2luZ1ZpZXcgYWxsb2NdIGluaXRXaXRoRW1iZWRkZWRWaWV3SUQ6ZW1iZWRkZWRW
aWV3SUQgY29udGVudFZpZXc6bV9jb250ZW50Vmlld10pOworfQorI2VuZGlmCisKIH0gLy8gbmFt
ZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24u
aCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24u
aAppbmRleCA3Y2M2NWZiNDNkNzlmNDg5Mzk2NWI5YTk4YzdiYjBmOTFmNzk0MDU2Li5mZjIxMzll
YjIwMGI4OGRkMTRlN2FlMmZlMTJiMzZkM2JmMzZmNGYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmgKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5oCkBAIC05Mywx
MCArOTMsMTAgQEAgY2xhc3MgV2ViUGFnZVByb3h5OwogQGNsYXNzIFVJSG92ZXJHZXN0dXJlUmVj
b2duaXplcjsKIEBjbGFzcyBXZWJFdmVudDsKIEBjbGFzcyBXS0FjdGlvblNoZWV0QXNzaXN0YW50
OworQGNsYXNzIFdLRHJhd2luZ0Nvb3JkaW5hdG9yOwogQGNsYXNzIFdLRm9jdXNlZEZvcm1Db250
cm9sVmlldzsKIEBjbGFzcyBXS0Zvcm1JbnB1dENvbnRyb2w7CiBAY2xhc3MgV0tGb3JtSW5wdXRT
ZXNzaW9uOwotQGNsYXNzIFdLSW5rUGlja2VyVmlldzsKIEBjbGFzcyBXS0luc3BlY3Rvck5vZGVT
ZWFyY2hHZXN0dXJlUmVjb2duaXplcjsKIAogdHlwZWRlZiB2b2lkICheVUlXS0F1dG9jb3JyZWN0
aW9uQ29tcGxldGlvbkhhbmRsZXIpKFVJV0tBdXRvY29ycmVjdGlvblJlY3RzICpyZWN0c0Zvcklu
cHV0KTsKQEAgLTI3OCw3ICsyNzgsNyBAQCBzdHJ1Y3QgV0tBdXRvQ29ycmVjdGlvbkRhdGEgewog
I2VuZGlmCiAKICNpZiBIQVZFKFBFTkNJTEtJVCkKLSAgICBSZXRhaW5QdHI8V0tJbmtQaWNrZXJW
aWV3PiBfaW5rUGlja2VyOworICAgIFJldGFpblB0cjxXS0RyYXdpbmdDb29yZGluYXRvcj4gX2Ry
YXdpbmdDb29yZGluYXRvcjsKICNlbmRpZgogCiAgICAgQk9PTCBfaXNFZGl0YWJsZTsKQEAgLTQ0
MCw2ICs0NDAsMTAgQEAgRk9SX0VBQ0hfUFJJVkFURV9XS0NPTlRFTlRWSUVXX0FDVElPTihERUNM
QVJFX1dLQ09OVEVOVFZJRVdfQUNUSU9OX0ZPUl9XRUJfVklFVykKIC0gKHZvaWQpdXBkYXRlVGV4
dFN1Z2dlc3Rpb25zRm9ySW5wdXREZWxlZ2F0ZTsKICNlbmRpZgogCisjaWYgSEFWRShQRU5DSUxL
SVQpCistIChXS0RyYXdpbmdDb29yZGluYXRvciAqKV9kcmF3aW5nQ29vcmRpbmF0b3I7CisjZW5k
aWYKKwogQGVuZAogCiBAaW50ZXJmYWNlIFdLQ29udGVudFZpZXcgKFdLVGVzdGluZykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rp
b24ubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0
aW9uLm1tCmluZGV4IGY1MTYyYjAwNTkxZDQ5Nzc3NWI2Nzc5ZjhiMGZjNTc3YWM5ZWM5YzcuLmQ5
YmRlMmU3MmRlY2VkMzJiYjhkODg3MWE0OWQxNjAyMzZiNjc3MDcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQpA
QCAtNDIsNiArNDIsNyBAQAogI2ltcG9ydCAiVUlLaXRTUEkuaCIKICNpbXBvcnQgIldLQWN0aW9u
U2hlZXRBc3Npc3RhbnQuaCIKICNpbXBvcnQgIldLRGF0ZVBpY2tlclZpZXdDb250cm9sbGVyLmgi
CisjaW1wb3J0ICJXS0RyYXdpbmdDb29yZGluYXRvci5oIgogI2ltcG9ydCAiV0tFcnJvci5oIgog
I2ltcG9ydCAiV0tGb2N1c2VkRm9ybUNvbnRyb2xWaWV3LmgiCiAjaW1wb3J0ICJXS0Zvcm1JbnB1
dENvbnRyb2wuaCIKQEAgLTQ0OTcsNyArNDQ5OCw3IEBAIC0gKHZvaWQpX2VsZW1lbnREaWRGb2N1
czooY29uc3QgV2ViS2l0OjpGb2N1c2VkRWxlbWVudEluZm9ybWF0aW9uJilpbmZvcm1hdGlvbiB1
CiAKICNpZiBIQVZFKFBFTkNJTEtJVCkKICAgICBpZiAoaW5mb3JtYXRpb24uZWxlbWVudFR5cGUg
PT0gV2ViS2l0OjpJbnB1dFR5cGU6OkRyYXdpbmcpCi0gICAgICAgIFtzZWxmIF9pbnN0YWxsSW5r
UGlja2VyRm9yRHJhd2luZ1ZpZXdXaXRoSUQ6aW5mb3JtYXRpb24uZW1iZWRkZWRWaWV3SURdOwor
ICAgICAgICBbX2RyYXdpbmdDb29yZGluYXRvciBpbnN0YWxsSW5rUGlja2VyRm9yRHJhd2luZzpp
bmZvcm1hdGlvbi5lbWJlZGRlZFZpZXdJRF07CiAjZW5kaWYKIAogICAgIGlmICghc2hvdWxkU2hv
d0tleWJvYXJkKQpAQCAtNDU4OSw4ICs0NTkwLDcgQEAgLSAodm9pZClfZWxlbWVudERpZEJsdXIK
ICAgICBTZXRGb3JTY29wZTxCT09MPiBpc0JsdXJyaW5nRm9jdXNlZE5vZGVGb3JTY29wZSB7IF9p
c0JsdXJyaW5nRm9jdXNlZE5vZGUsIFlFUyB9OwogCiAjaWYgSEFWRShQRU5DSUxLSVQpCi0gICAg
aWYgKF9pbmtQaWNrZXIpCi0gICAgICAgIFtzZWxmIF91bmluc3RhbGxJbmtQaWNrZXJdOworICAg
IFtfZHJhd2luZ0Nvb3JkaW5hdG9yIHVuaW5zdGFsbElua1BpY2tlcl07CiAjZW5kaWYKIAogICAg
IFtfZm9ybUlucHV0U2Vzc2lvbiBpbnZhbGlkYXRlXTsKQEAgLTYyOTMsMjcgKzYyOTMsMTIgQEAg
LSAodm9pZClfaG92ZXJHZXN0dXJlUmVjb2duaXplckNoYW5nZWQ6KFVJR2VzdHVyZVJlY29nbml6
ZXIgKilnZXN0dXJlUmVjb2duaXplcgogI2VuZGlmCiAKICNpZiBIQVZFKFBFTkNJTEtJVCkKLS0g
KHZvaWQpX2luc3RhbGxJbmtQaWNrZXJGb3JEcmF3aW5nVmlld1dpdGhJRDooV2ViQ29yZTo6R3Jh
cGhpY3NMYXllcjo6RW1iZWRkZWRWaWV3SUQpZW1iZWRkZWRWaWV3SUQKKy0gKFdLRHJhd2luZ0Nv
b3JkaW5hdG9yICopX2RyYXdpbmdDb29yZGluYXRvcgogewotICAgIF9pbmtQaWNrZXIgPSBhZG9w
dE5TKFtbV0tJbmtQaWNrZXJWaWV3IGFsbG9jXSBpbml0V2l0aERyYXdpbmdWaWV3Ol9wYWdlLT5l
ZGl0YWJsZUltYWdlQ29udHJvbGxlcigpLmVkaXRhYmxlSW1hZ2UoZW1iZWRkZWRWaWV3SUQpLT5k
cmF3aW5nVmlldy5nZXQoKV0pOwotICAgIFtfaW5rUGlja2VyIHNpemVUb0ZpdF07Ci0gICAgW19p
bmtQaWNrZXIgc2V0VHJhbnNsYXRlc0F1dG9yZXNpemluZ01hc2tJbnRvQ29uc3RyYWludHM6Tk9d
OwotICAgIFtfd2ViVmlldyBhZGRTdWJ2aWV3Ol9pbmtQaWNrZXIuZ2V0KCldOwotCi0gICAgW05T
TGF5b3V0Q29uc3RyYWludCBhY3RpdmF0ZUNvbnN0cmFpbnRzOkBbCi0gICAgICAgIFtbX2lua1Bp
Y2tlciBoZWlnaHRBbmNob3JdIGNvbnN0cmFpbnRFcXVhbFRvQ29uc3RhbnQ6W19pbmtQaWNrZXIg
ZnJhbWVdLnNpemUuaGVpZ2h0XSwKLSAgICAgICAgW1tfaW5rUGlja2VyIGJvdHRvbUFuY2hvcl0g
Y29uc3RyYWludEVxdWFsVG9BbmNob3I6X3dlYlZpZXcuc2FmZUFyZWFMYXlvdXRHdWlkZS5ib3R0
b21BbmNob3JdLAotICAgICAgICBbW19pbmtQaWNrZXIgbGVmdEFuY2hvcl0gY29uc3RyYWludEVx
dWFsVG9BbmNob3I6X3dlYlZpZXcuc2FmZUFyZWFMYXlvdXRHdWlkZS5sZWZ0QW5jaG9yXSwKLSAg
ICAgICAgW1tfaW5rUGlja2VyIHJpZ2h0QW5jaG9yXSBjb25zdHJhaW50RXF1YWxUb0FuY2hvcjpf
d2ViVmlldy5zYWZlQXJlYUxheW91dEd1aWRlLnJpZ2h0QW5jaG9yXSwKLSAgICBdXTsKKyAgICBp
ZiAoIV9kcmF3aW5nQ29vcmRpbmF0b3IpCisgICAgICAgIF9kcmF3aW5nQ29vcmRpbmF0b3IgPSBh
ZG9wdE5TKFtbV0tEcmF3aW5nQ29vcmRpbmF0b3IgYWxsb2NdIGluaXRXaXRoQ29udGVudFZpZXc6
c2VsZl0pOworICAgIHJldHVybiBfZHJhd2luZ0Nvb3JkaW5hdG9yLmdldCgpOwogfQotCi0tICh2
b2lkKV91bmluc3RhbGxJbmtQaWNrZXIKLXsKLSAgICBbX2lua1BpY2tlciByZW1vdmVGcm9tU3Vw
ZXJ2aWV3XTsKLSAgICBfaW5rUGlja2VyID0gbmlsOwotfQotCiAjZW5kaWYgLy8gSEFWRShQRU5D
SUxLSVQpCiAKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9X
S0RyYXdpbmdDb29yZGluYXRvci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLRHJh
d2luZ0Nvb3JkaW5hdG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTEyOWQ5NWUzOWI4MDQ0M2Y5OTMzZDYwYzdk
YTBjOTlmN2IzOWI2MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2lvcy9XS0RyYXdpbmdDb29yZGluYXRvci5oCkBAIC0wLDAgKzEsNTAgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaWYgSEFWRShQRU5DSUxLSVQpCisKKyNpbXBvcnQgPFdlYkNvcmUvR3JhcGhpY3NMYXllci5o
PgorCitPQkpDX0NMQVNTIFBLSW5rOworT0JKQ19DTEFTUyBXS0NvbnRlbnRWaWV3OworT0JKQ19D
TEFTUyBXS0lua1BpY2tlclZpZXc7CisKK0BpbnRlcmZhY2UgV0tEcmF3aW5nQ29vcmRpbmF0b3Ig
OiBOU09iamVjdAorCistIChpbnN0YW5jZXR5cGUpaW5pdCBOU19VTkFWQUlMQUJMRTsKKy0gKGlu
c3RhbmNldHlwZSlpbml0V2l0aENvbnRlbnRWaWV3OihXS0NvbnRlbnRWaWV3ICopY29udGVudFZp
ZXc7CisKKy0gKHZvaWQpaW5zdGFsbElua1BpY2tlckZvckRyYXdpbmc6KFdlYkNvcmU6OkdyYXBo
aWNzTGF5ZXI6OkVtYmVkZGVkVmlld0lEKWVtYmVkZGVkVmlld0lEOworLSAodm9pZCl1bmluc3Rh
bGxJbmtQaWNrZXI7CisKKy0gKHZvaWQpZGlkQ2hhbmdlUnVsZXJTdGF0ZTooQk9PTClydWxlckVu
YWJsZWQ7CistICh2b2lkKWRpZENoYW5nZUluazooUEtJbmsgKilpbms7CisKK0Bwcm9wZXJ0eSAo
bm9uYXRvbWljLCByZWFkb25seSwgcmV0YWluKSBXS0lua1BpY2tlclZpZXcgKmlua1BpY2tlcjsK
KworQGVuZAorCisKKyNlbmRpZiAvLyBIQVZFKFBFTkNJTEtJVCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0RyYXdpbmdDb29yZGluYXRvci5tbSBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0RyYXdpbmdDb29yZGluYXRvci5tbQpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5k
MmRhZWQ3NWJjNWIyNjQ2OTFkNzlhZTA4MWUyODY1NGUxNGQ4ZGFiCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLRHJhd2luZ0Nvb3JkaW5hdG9yLm1tCkBA
IC0wLDAgKzEsMTI1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0
ICJXS0RyYXdpbmdDb29yZGluYXRvci5oIgorCisjaWYgSEFWRShQRU5DSUxLSVQpCisKKyNpbXBv
cnQgIkVkaXRhYmxlSW1hZ2VDb250cm9sbGVyLmgiCisjaW1wb3J0ICJXS0NvbnRlbnRWaWV3SW50
ZXJhY3Rpb24uaCIKKyNpbXBvcnQgIldLSW5rUGlja2VyVmlldy5oIgorI2ltcG9ydCAiV0tXZWJW
aWV3LmgiCisjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CisKKyNpbXBvcnQgIlBlbmNpbEtpdFNv
ZnRMaW5rLmgiCisKK0BpbnRlcmZhY2UgV0tEcmF3aW5nQ29vcmRpbmF0b3IgKCkgPFBLUnVsZXJI
b3N0aW5nRGVsZWdhdGU+CitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBXS0RyYXdpbmdDb29yZGlu
YXRvciB7CisgICAgX193ZWFrIFdLQ29udGVudFZpZXcgKl9jb250ZW50VmlldzsKKworICAgIFJl
dGFpblB0cjxXS0lua1BpY2tlclZpZXc+IF9pbmtQaWNrZXI7CisKKyAgICBXZWJDb3JlOjpHcmFw
aGljc0xheWVyOjpFbWJlZGRlZFZpZXdJRCBfZm9jdXNlZEVtYmVkZGVkVmlld0lEOworfQorCist
IChpbnN0YW5jZXR5cGUpaW5pdFdpdGhDb250ZW50VmlldzooV0tDb250ZW50VmlldyAqKWNvbnRl
bnRWaWV3Cit7CisgICAgc2VsZiA9IFtzdXBlciBpbml0XTsKKyAgICBpZiAoIXNlbGYpCisgICAg
ICAgIHJldHVybiBuaWw7CisKKyAgICBfY29udGVudFZpZXcgPSBjb250ZW50VmlldzsKKyAgICBf
aW5rUGlja2VyID0gYWRvcHROUyhbW1dLSW5rUGlja2VyVmlldyBhbGxvY10gaW5pdFdpdGhDb250
ZW50VmlldzpfY29udGVudFZpZXddKTsKKworICAgIHJldHVybiBzZWxmOworfQorCistIChXS0lu
a1BpY2tlclZpZXcgKilpbmtQaWNrZXIKK3sKKyAgICByZXR1cm4gX2lua1BpY2tlci5nZXQoKTsK
K30KKworLSAoVUlWaWV3ICopcnVsZXJIb3N0aW5nVmlldworeworICAgIHJldHVybiBfY29udGVu
dFZpZXc7Cit9CisKKy0gKEJPT0wpcnVsZXJIb3N0V2FudHNTaGFyZWRSdWxlcgoreworICAgIHJl
dHVybiBZRVM7Cit9CisKKy0gKFdLRHJhd2luZ1ZpZXcgKilfZm9jdXNlZERyYXdpbmdWaWV3Cit7
CisgICAgV2ViS2l0OjpFZGl0YWJsZUltYWdlICpmb2N1c2VkRWRpdGFibGVJbWFnZSA9IF9jb250
ZW50Vmlldy5wYWdlLT5lZGl0YWJsZUltYWdlQ29udHJvbGxlcigpLmVkaXRhYmxlSW1hZ2UoX2Zv
Y3VzZWRFbWJlZGRlZFZpZXdJRCk7CisgICAgaWYgKCFmb2N1c2VkRWRpdGFibGVJbWFnZSkKKyAg
ICAgICAgcmV0dXJuIG5pbDsKKyAgICByZXR1cm4gZm9jdXNlZEVkaXRhYmxlSW1hZ2UtPmRyYXdp
bmdWaWV3LmdldCgpOworfQorCistICh2b2lkKWRpZENoYW5nZVJ1bGVyU3RhdGU6KEJPT0wpcnVs
ZXJFbmFibGVkCit7CisgICAgW3NlbGYuX2ZvY3VzZWREcmF3aW5nVmlldyBkaWRDaGFuZ2VSdWxl
clN0YXRlOnJ1bGVyRW5hYmxlZF07Cit9CisKKy0gKHZvaWQpZGlkQ2hhbmdlSW5rOihQS0luayAq
KWluaworeworICAgIFtzZWxmLl9mb2N1c2VkRHJhd2luZ1ZpZXcgZGlkQ2hhbmdlSW5rOmlua107
Cit9CisKKy0gKHZvaWQpaW5zdGFsbElua1BpY2tlckZvckRyYXdpbmc6KFdlYkNvcmU6OkdyYXBo
aWNzTGF5ZXI6OkVtYmVkZGVkVmlld0lEKWVtYmVkZGVkVmlld0lECit7CisgICAgX2ZvY3VzZWRF
bWJlZGRlZFZpZXdJRCA9IGVtYmVkZGVkVmlld0lEOworCisgICAgV0tXZWJWaWV3ICp3ZWJWaWV3
ID0gX2NvbnRlbnRWaWV3LT5fd2ViVmlldzsKKworICAgIFtfaW5rUGlja2VyIHNpemVUb0ZpdF07
CisgICAgW19pbmtQaWNrZXIgc2V0VHJhbnNsYXRlc0F1dG9yZXNpemluZ01hc2tJbnRvQ29uc3Ry
YWludHM6Tk9dOworICAgIFt3ZWJWaWV3IGFkZFN1YnZpZXc6X2lua1BpY2tlci5nZXQoKV07CisK
KyAgICBbTlNMYXlvdXRDb25zdHJhaW50IGFjdGl2YXRlQ29uc3RyYWludHM6QFsKKyAgICAgICAg
W1tfaW5rUGlja2VyIGhlaWdodEFuY2hvcl0gY29uc3RyYWludEVxdWFsVG9Db25zdGFudDpbX2lu
a1BpY2tlciBmcmFtZV0uc2l6ZS5oZWlnaHRdLAorICAgICAgICBbW19pbmtQaWNrZXIgYm90dG9t
QW5jaG9yXSBjb25zdHJhaW50RXF1YWxUb0FuY2hvcjp3ZWJWaWV3LnNhZmVBcmVhTGF5b3V0R3Vp
ZGUuYm90dG9tQW5jaG9yXSwKKyAgICAgICAgW1tfaW5rUGlja2VyIGxlZnRBbmNob3JdIGNvbnN0
cmFpbnRFcXVhbFRvQW5jaG9yOndlYlZpZXcuc2FmZUFyZWFMYXlvdXRHdWlkZS5sZWZ0QW5jaG9y
XSwKKyAgICAgICAgW1tfaW5rUGlja2VyIHJpZ2h0QW5jaG9yXSBjb25zdHJhaW50RXF1YWxUb0Fu
Y2hvcjp3ZWJWaWV3LnNhZmVBcmVhTGF5b3V0R3VpZGUucmlnaHRBbmNob3JdLAorICAgIF1dOwor
CisgICAgLy8gV2hlbiBmb2N1c2VkLCBwdXNoIHRoZSBydWxlciBzdGF0ZSBkb3duIHRvIHRoZSBj
YW52YXMgc28gdGhhdCBpdCBkb2Vzbid0IGdldCBvdXQgb2Ygc3luYworICAgIC8vIGFuZCBlYXJs
eS1yZXR1cm4gZnJvbSBsYXRlciBjaGFuZ2VzLgorICAgIFtzZWxmLl9mb2N1c2VkRHJhd2luZ1Zp
ZXcgZGlkQ2hhbmdlUnVsZXJTdGF0ZTpbX2lua1BpY2tlciBydWxlckVuYWJsZWRdXTsKK30KKwor
LSAodm9pZCl1bmluc3RhbGxJbmtQaWNrZXIKK3sKKyAgICBbX2lua1BpY2tlciByZW1vdmVGcm9t
U3VwZXJ2aWV3XTsKKyAgICBfZm9jdXNlZEVtYmVkZGVkVmlld0lEID0gMDsKK30KKworQGVuZAor
CisjZW5kaWYgLy8gSEFWRShQRU5DSUxLSVQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9pb3MvV0tEcmF3aW5nVmlldy5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9z
L1dLRHJhd2luZ1ZpZXcuaAppbmRleCAyYjJkZTI1MjhjZjYwMmZhODVjMzcwZGJkMzU2MTMxZjdk
Yjg2MDJjLi4xNjYyNjUxNzI0MTdmOTM2OTFhMjMwMzZiZWJhZmYzNDEwYjU0YjAyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tEcmF3aW5nVmlldy5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0RyYXdpbmdWaWV3LmgKQEAgLTI5LDE1ICsyOSwx
OCBAQAogI2ltcG9ydCAiUmVtb3RlTGF5ZXJUcmVlVmlld3MuaCIKIAogT0JKQ19DTEFTUyBQS0Nh
bnZhc1ZpZXc7CitPQkpDX0NMQVNTIFBLSW5rOworT0JKQ19DTEFTUyBXS0NvbnRlbnRWaWV3Owog
CiBAaW50ZXJmYWNlIFdLRHJhd2luZ1ZpZXcgOiBXS0VtYmVkZGVkVmlldyA8V0tOYXRpdmVseUlu
dGVyYWN0aWJsZT4KIAotLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRW1iZWRkZWRWaWV3SUQ6KFdl
YkNvcmU6OkdyYXBoaWNzTGF5ZXI6OkVtYmVkZGVkVmlld0lEKWVtYmVkZGVkVmlld0lEIHdlYlBh
Z2VQcm94eTooV2ViS2l0OjpXZWJQYWdlUHJveHkmKXdlYlBhZ2VQcm94eTsKKy0gKGluc3RhbmNl
dHlwZSlpbml0V2l0aEVtYmVkZGVkVmlld0lEOihXZWJDb3JlOjpHcmFwaGljc0xheWVyOjpFbWJl
ZGRlZFZpZXdJRCllbWJlZGRlZFZpZXdJRCBjb250ZW50VmlldzooV0tDb250ZW50VmlldyAqKWNv
bnRlbnRWaWV3OwogCiAtIChOU0RhdGEgKilQTkdSZXByZXNlbnRhdGlvbjsKIC0gKHZvaWQpbG9h
ZERyYXdpbmdGcm9tUE5HUmVwcmVzZW50YXRpb246KE5TRGF0YSAqKVBOR0RhdGE7CiAKLUBwcm9w
ZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgUEtDYW52YXNWaWV3ICpjYW52YXNWaWV3OworLSAo
dm9pZClkaWRDaGFuZ2VSdWxlclN0YXRlOihCT09MKXJ1bGVyRW5hYmxlZDsKKy0gKHZvaWQpZGlk
Q2hhbmdlSW5rOihQS0luayAqKWluazsKIAogQGVuZAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9pb3MvV0tEcmF3aW5nVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2lvcy9XS0RyYXdpbmdWaWV3Lm1tCmluZGV4IGNlMDdkNDg3OTYyMDJhN2RkNmIzY2ZiZTE2
MWY5MzE4NmIzMjUyYTAuLmRmMWQwYzU0MzEyNGY4YzBjMzZlZDJhNDFiMzY3Y2FkZjAwZTJhNmIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0RyYXdpbmdWaWV3Lm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0RyYXdpbmdWaWV3Lm1tCkBAIC0y
OSwxMCArMjksMTIgQEAKICNpZiBIQVZFKFBFTkNJTEtJVCkKIAogI2ltcG9ydCAiRWRpdGFibGVJ
bWFnZUNvbnRyb2xsZXIuaCIKLSNpbXBvcnQgIlBlbmNpbEtpdFNvZnRMaW5rLmgiCisjaW1wb3J0
ICJXS0lua1BpY2tlclZpZXcuaCIKICNpbXBvcnQgPHd0Zi9PU09iamVjdFB0ci5oPgogI2ltcG9y
dCA8d3RmL1JldGFpblB0ci5oPgogCisjaW1wb3J0ICJQZW5jaWxLaXRTb2Z0TGluay5oIgorCiBA
aW50ZXJmYWNlIFdLRHJhd2luZ1ZpZXcgKCkgPFBLQ2FudmFzVmlld0RlbGVnYXRlPgogQGVuZAog
CkBAIC00NCwxNiArNDYsMTYgQEAgQGltcGxlbWVudGF0aW9uIFdLRHJhd2luZ1ZpZXcgewogICAg
IFJldGFpblB0cjxQS0ltYWdlUmVuZGVyZXI+IF9yZW5kZXJlcjsKICNlbmRpZgogCi0gICAgV2Vh
a1B0cjxXZWJLaXQ6OldlYlBhZ2VQcm94eT4gX3dlYlBhZ2VQcm94eTsKKyAgICBfX3dlYWsgV0tD
b250ZW50VmlldyAqX2NvbnRlbnRWaWV3OwogfQogCi0tIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhF
bWJlZGRlZFZpZXdJRDooV2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6RW1iZWRkZWRWaWV3SUQpZW1i
ZWRkZWRWaWV3SUQgd2ViUGFnZVByb3h5OihXZWJLaXQ6OldlYlBhZ2VQcm94eSYpd2ViUGFnZVBy
b3h5CistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhFbWJlZGRlZFZpZXdJRDooV2ViQ29yZTo6R3Jh
cGhpY3NMYXllcjo6RW1iZWRkZWRWaWV3SUQpZW1iZWRkZWRWaWV3SUQgY29udGVudFZpZXc6KFdL
Q29udGVudFZpZXcgKiljb250ZW50VmlldwogewogICAgIHNlbGYgPSBbc3VwZXIgaW5pdFdpdGhF
bWJlZGRlZFZpZXdJRDplbWJlZGRlZFZpZXdJRF07CiAgICAgaWYgKCFzZWxmKQogICAgICAgICBy
ZXR1cm4gbmlsOwogCi0gICAgX3dlYlBhZ2VQcm94eSA9IG1ha2VXZWFrUHRyKHdlYlBhZ2VQcm94
eSk7CisgICAgX2NvbnRlbnRWaWV3ID0gY29udGVudFZpZXc7CiAKICAgICBfcGVuY2lsVmlldyA9
IGFkb3B0TlMoW1dlYktpdDo6YWxsb2NQS0NhbnZhc1ZpZXdJbnN0YW5jZSgpIGluaXRXaXRoRnJh
bWU6Q0dSZWN0WmVyb10pOwogCkBAIC02MSw2ICs2Myw3IEBAIC0gKGluc3RhbmNldHlwZSlpbml0
V2l0aEVtYmVkZGVkVmlld0lEOihXZWJDb3JlOjpHcmFwaGljc0xheWVyOjpFbWJlZGRlZFZpZXdJ
RCllCiAgICAgW19wZW5jaWxWaWV3IHNldFVzZXJJbnRlcmFjdGlvbkVuYWJsZWQ6WUVTXTsKICAg
ICBbX3BlbmNpbFZpZXcgc2V0T3BhcXVlOk5PXTsKICAgICBbX3BlbmNpbFZpZXcgc2V0RGVsZWdh
dGU6c2VsZl07CisgICAgW19wZW5jaWxWaWV3IHNldFJ1bGVySG9zdGluZ0RlbGVnYXRlOl9jb250
ZW50Vmlldy5fZHJhd2luZ0Nvb3JkaW5hdG9yXTsKIAogICAgIFtzZWxmIGFkZFN1YnZpZXc6X3Bl
bmNpbFZpZXcuZ2V0KCldOwogCkBAIC0xNjUsMTggKzE2OCwyOCBAQCAtICh2b2lkKWRyYXdpbmdE
aWRDaGFuZ2U6KFBLQ2FudmFzVmlldyAqKWNhbnZhc1ZpZXcKICAgICBbc2VsZiBpbnZhbGlkYXRl
QXR0YWNobWVudF07CiB9CiAKKy0gKHZvaWQpX2NhbnZhc1ZpZXdXaWxsQmVnaW5EcmF3aW5nOihQ
S0NhbnZhc1ZpZXcgKiljYW52YXNWaWV3Cit7CisgICAgW19wZW5jaWxWaWV3IHNldEluazpfY29u
dGVudFZpZXcuX2RyYXdpbmdDb29yZGluYXRvci5pbmtQaWNrZXIuaW5rXTsKK30KKwogLSAodm9p
ZClpbnZhbGlkYXRlQXR0YWNobWVudAogewotICAgIGlmICghX3dlYlBhZ2VQcm94eSkKKyAgICBp
ZiAoIV9jb250ZW50Vmlldy5wYWdlKQogICAgICAgICByZXR1cm47Ci0gICAgYXV0byYgcGFnZSA9
ICpfd2ViUGFnZVByb3h5OworICAgIGF1dG8mIHBhZ2UgPSAqX2NvbnRlbnRWaWV3LnBhZ2U7CiAK
ICAgICBwYWdlLmVkaXRhYmxlSW1hZ2VDb250cm9sbGVyKCkuaW52YWxpZGF0ZUF0dGFjaG1lbnRG
b3JFZGl0YWJsZUltYWdlKHNlbGYuZW1iZWRkZWRWaWV3SUQpOwogfQogCi0tIChQS0NhbnZhc1Zp
ZXcgKiljYW52YXNWaWV3CistICh2b2lkKWRpZENoYW5nZVJ1bGVyU3RhdGU6KEJPT0wpcnVsZXJF
bmFibGVkCit7CisgICAgW19wZW5jaWxWaWV3IHNldFJ1bGVyRW5hYmxlZDpydWxlckVuYWJsZWRd
OworfQorCistICh2b2lkKWRpZENoYW5nZUluazooUEtJbmsgKilpbmsKIHsKLSAgICByZXR1cm4g
X3BlbmNpbFZpZXcuZ2V0KCk7CisgICAgW19wZW5jaWxWaWV3IHNldEluazppbmtdOwogfQogCiBA
ZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tJbmtQaWNrZXJW
aWV3LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tJbmtQaWNrZXJWaWV3LmgKaW5k
ZXggMjEzM2EyNzViOTIzZjE1YWZiZTJkOGViN2E5MzIyYTNhYjIxYjI2Yi4uMzk5OTk3MzFiZWZk
NWViYzdlYWQ3YmFkMTc1NjFhYjRiMjhmZDkxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvaW9zL1dLSW5rUGlja2VyVmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2lvcy9XS0lua1BpY2tlclZpZXcuaApAQCAtMjcsNyArMjcsOCBAQAogCiAjaW1wb3J0IDxV
SUtpdC9VSUtpdC5oPgogCi1PQkpDX0NMQVNTIFdLRHJhd2luZ1ZpZXc7CitPQkpDX0NMQVNTIFBL
SW5rOworT0JKQ19DTEFTUyBXS0NvbnRlbnRWaWV3OwogCiBAaW50ZXJmYWNlIFdLSW5rUGlja2Vy
VmlldyA6IFVJVmlldwogCkBAIC0zNSw3ICszNiwxMCBAQCBPQkpDX0NMQVNTIFdLRHJhd2luZ1Zp
ZXc7CiAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhGcmFtZTooQ0dSZWN0KWZyYW1lIE5TX1VOQVZB
SUxBQkxFOwogLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoQ29kZXI6KE5TQ29kZXIgKiljb2RlciBO
U19VTkFWQUlMQUJMRTsKIAotLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRHJhd2luZ1ZpZXc6KFdL
RHJhd2luZ1ZpZXcgKilkcmF3aW5nVmlldyBOU19ERVNJR05BVEVEX0lOSVRJQUxJWkVSOworLSAo
aW5zdGFuY2V0eXBlKWluaXRXaXRoQ29udGVudFZpZXc6KFdLQ29udGVudFZpZXcgKiljb250ZW50
VmlldyBOU19ERVNJR05BVEVEX0lOSVRJQUxJWkVSOworCitAcHJvcGVydHkgKG5vbmF0b21pYywg
YXNzaWduKSBCT09MIHJ1bGVyRW5hYmxlZDsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZXRhaW4p
IFBLSW5rICppbms7CiAKIEBlbmQKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvaW9zL1dLSW5rUGlja2VyVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9X
S0lua1BpY2tlclZpZXcubW0KaW5kZXggOWEzNzQzOGU1ODcyNTg4ZDQ0MDA1MGM0YmY0YmI4MWRk
NGFmY2E4My4uZDRlMzVmZWU1NmIzNzBmNzE5ZDQ5MzI1ZmI4Y2RiMGNmMGE2OTZjOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLSW5rUGlja2VyVmlldy5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tJbmtQaWNrZXJWaWV3Lm1tCkBAIC0yOCw3
ICsyOCw3IEBACiAKICNpZiBIQVZFKFBFTkNJTEtJVCkKIAotI2ltcG9ydCAiV0tEcmF3aW5nVmll
dy5oIgorI2ltcG9ydCAiV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmgiCiAKICNpbXBvcnQgIlBl
bmNpbEtpdFNvZnRMaW5rLmgiCiAKQEAgLTM3LDIxICszNywxOSBAQCBAZW5kCiAKIEBpbXBsZW1l
bnRhdGlvbiBXS0lua1BpY2tlclZpZXcgewogICAgIFJldGFpblB0cjxQS0lubGluZUlua1BpY2tl
cj4gX2lubGluZVBpY2tlcjsKLSAgICBSZXRhaW5QdHI8V0tEcmF3aW5nVmlldz4gX2RyYXdpbmdW
aWV3OworICAgIF9fd2VhayBXS0NvbnRlbnRWaWV3ICpfY29udGVudFZpZXc7CiB9CiAKLS0gKGlu
c3RhbmNldHlwZSlpbml0V2l0aERyYXdpbmdWaWV3OihXS0RyYXdpbmdWaWV3ICopZHJhd2luZ1Zp
ZXcKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aENvbnRlbnRWaWV3OihXS0NvbnRlbnRWaWV3ICop
Y29udGVudFZpZXcKIHsKICAgICBzZWxmID0gW3N1cGVyIGluaXRXaXRoRnJhbWU6Q0dSZWN0WmVy
b107CiAgICAgaWYgKCFzZWxmKQogICAgICAgICByZXR1cm4gbmlsOwogCiAgICAgX2lubGluZVBp
Y2tlciA9IGFkb3B0TlMoW1dlYktpdDo6YWxsb2NQS0lubGluZUlua1BpY2tlckluc3RhbmNlKCkg
aW5pdF0pOwotICAgIFtfaW5saW5lUGlja2VyIHNldFNlbGVjdGVkSW5rOltkcmF3aW5nVmlldyBj
YW52YXNWaWV3XS5pbmsgYW5pbWF0ZWQ6Tk9dOwotICAgIFtfaW5saW5lUGlja2VyIGFkZFRhcmdl
dDpzZWxmIGFjdGlvbjpAc2VsZWN0b3IoZGlkUGlja0luaykgZm9yQ29udHJvbEV2ZW50czpVSUNv
bnRyb2xFdmVudFZhbHVlQ2hhbmdlZF07CiAgICAgW19pbmxpbmVQaWNrZXIgc2V0RGVsZWdhdGU6
c2VsZl07CiAKLSAgICBfZHJhd2luZ1ZpZXcgPSBkcmF3aW5nVmlldzsKKyAgICBfY29udGVudFZp
ZXcgPSBjb250ZW50VmlldzsKICAgICBbc2VsZiBhZGRTdWJ2aWV3Ol9pbmxpbmVQaWNrZXIuZ2V0
KCldOwogCiAgICAgcmV0dXJuIHNlbGY7CkBAIC01OSwxMiArNTcsMTMgQEAgLSAoaW5zdGFuY2V0
eXBlKWluaXRXaXRoRHJhd2luZ1ZpZXc6KFdLRHJhd2luZ1ZpZXcgKilkcmF3aW5nVmlldwogCiAt
ICh2b2lkKWRpZFBpY2tJbmsKIHsKLSAgICBbX2RyYXdpbmdWaWV3IGNhbnZhc1ZpZXddLmluayA9
IFtfaW5saW5lUGlja2VyIHNlbGVjdGVkSW5rXTsKKyAgICBbX2NvbnRlbnRWaWV3Ll9kcmF3aW5n
Q29vcmRpbmF0b3IgZGlkQ2hhbmdlSW5rOltfaW5saW5lUGlja2VyIHNlbGVjdGVkSW5rXV07CiB9
CiAKIC0gKHZvaWQpaW5saW5lSW5rUGlja2VyRGlkVG9nZ2xlUnVsZXI6KFBLSW5saW5lSW5rUGlj
a2VyICopaW5saW5lSW5rUGlja2VyCiB7Ci0gICAgW19kcmF3aW5nVmlldyBjYW52YXNWaWV3XS5y
dWxlckVuYWJsZWQgPSAhW19kcmF3aW5nVmlldyBjYW52YXNWaWV3XS5ydWxlckVuYWJsZWQ7Cisg
ICAgX3J1bGVyRW5hYmxlZCA9ICFfcnVsZXJFbmFibGVkOworICAgIFtfY29udGVudFZpZXcuX2Ry
YXdpbmdDb29yZGluYXRvciBkaWRDaGFuZ2VSdWxlclN0YXRlOl9ydWxlckVuYWJsZWRdOwogfQog
CiAtICh2b2lkKWlubGluZUlua1BpY2tlcjooUEtJbmxpbmVJbmtQaWNrZXIgKilpbmxpbmVJbmtQ
aWNrZXIgZGlkU2VsZWN0VG9vbDooUEtJbmtJZGVudGlmaWVyKWlkZW50aWZlcgpAQCAtOTcsNyAr
OTYsMTcgQEAgLSAoQ0dTaXplKXNpemVUaGF0Rml0czooQ0dTaXplKXNpemUKIAogLSAoVUlWaWV3
Q29udHJvbGxlciAqKXZpZXdDb250cm9sbGVyRm9yUG9wb3ZlclByZXNlbnRhdGlvbkZyb21Jbmxp
bmVJbmtQaWNrZXI6KFBLSW5saW5lSW5rUGlja2VyICopaW5saW5lSW5rUGlja2VyCiB7Ci0gICAg
cmV0dXJuIFtVSVZpZXdDb250cm9sbGVyIF92aWV3Q29udHJvbGxlckZvckZ1bGxTY3JlZW5QcmVz
ZW50YXRpb25Gcm9tVmlldzpfZHJhd2luZ1ZpZXcuZ2V0KCldOworICAgIHJldHVybiBbVUlWaWV3
Q29udHJvbGxlciBfdmlld0NvbnRyb2xsZXJGb3JGdWxsU2NyZWVuUHJlc2VudGF0aW9uRnJvbVZp
ZXc6X2NvbnRlbnRWaWV3XTsKK30KKworLSAodm9pZClzZXRJbms6KFBLSW5rICopaW5rCit7Cisg
ICAgW19pbmxpbmVQaWNrZXIgc2V0U2VsZWN0ZWRJbms6aW5rXTsKK30KKworLSAoUEtJbmsgKilp
bmsKK3sKKyAgICByZXR1cm4gW19pbmxpbmVQaWNrZXIgc2VsZWN0ZWRJbmtdOwogfQogCiBAZW5k
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRl
eCA5MmRkNjk1ZTI0NmY3MmQzOWUyMjg0MDcxMDhjNjQ0Mzk5NGYyMTdjLi40OWM0MGNiYTE3M2Ri
MzNjZTNiOWQzODQxYjllYWRiZTE1OTU3MzkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTI0ODcsNiArMjQ4Nyw4IEBACiAJCTJEMUI1
RDVDMTg1ODY5QzgwMDZDNjU5NiAvKiBWaWV3R2VzdHVyZUNvbnRyb2xsZXJNZXNzYWdlcy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBWaWV3R2VzdHVyZUNvbnRyb2xsZXJNZXNz
YWdlcy5oOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9WaWV3R2VzdHVyZUNvbnRyb2xs
ZXJNZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQkyRDFF
ODIyMTIxNkZGRjUwMDBBMTUyNjUgLyogV0tXZWJFdmVudC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IG5hbWUgPSBXS1dlYkV2ZW50Lmg7IHBhdGggPSBpb3MvV0tXZWJFdmVudC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyRDFFODIyMjIxNkZGRjUxMDBBMTUyNjUgLyogV0tX
ZWJFdmVudC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFdLV2Vi
RXZlbnQubW07IHBhdGggPSBpb3MvV0tXZWJFdmVudC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJMkQyMUE0NTgyMURFRDQ5QjAwMjQ4N0U3IC8qIFdLRHJhd2luZ0Nvb3JkaW5hdG9y
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gV0tEcmF3aW5nQ29vcmRpbmF0b3IubW07IHBhdGgg
PSBpb3MvV0tEcmF3aW5nQ29vcmRpbmF0b3IubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTJEMjFBNDU5MjFERUQ0OUIwMDI0ODdFNyAvKiBXS0RyYXdpbmdDb29yZGluYXRvci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IG5hbWUgPSBXS0RyYXdpbmdDb29yZGluYXRvci5oOyBwYXRoID0gaW9zL1dLRHJhd2lu
Z0Nvb3JkaW5hdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJEMjhBNDk1MUFG
OTY1QTEwMEYxOTBDOSAvKiBXS1ZpZXdMYXlvdXRTdHJhdGVneS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBXS1ZpZXdMYXlvdXRTdHJhdGVneS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkyRDI4QTQ5NjFBRjk2NUExMDBGMTkwQzkgLyogV0tWaWV3TGF5b3V0U3Ry
YXRlZ3kubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXS1ZpZXdM
YXlvdXRTdHJhdGVneS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkQyOEYzRTAx
ODg1Q0NDMTAwNEI5RUFFIC8qIFdlYkNocm9tZUNsaWVudElPUy5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFdlYkNocm9tZUNsaWVudElPUy5tbTsgcGF0aCA9IGlv
cy9XZWJDaHJvbWVDbGllbnRJT1MubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC01
ODQ0LDYgKzU4NDYsOCBAQAogCQkJCTBGQ0I0RTNEMThCQkUwNDQwMDBGQ0ZDOSAvKiBXS0NvbnRl
bnRWaWV3Lm1tICovLAogCQkJCTBGQ0I0RTZBMThCQkYyNkEwMDBGQ0ZDOSAvKiBXS0NvbnRlbnRW
aWV3SW50ZXJhY3Rpb24uaCAqLywKIAkJCQkwRkNCNEU2QjE4QkJGMjZBMDAwRkNGQzkgLyogV0tD
b250ZW50Vmlld0ludGVyYWN0aW9uLm1tICovLAorCQkJCTJEMjFBNDU5MjFERUQ0OUIwMDI0ODdF
NyAvKiBXS0RyYXdpbmdDb29yZGluYXRvci5oICovLAorCQkJCTJEMjFBNDU4MjFERUQ0OUIwMDI0
ODdFNyAvKiBXS0RyYXdpbmdDb29yZGluYXRvci5tbSAqLywKIAkJCQkyREMxOEZBQjIxODkxMDQ4
MDAyNUE4OEQgLyogV0tEcmF3aW5nVmlldy5oICovLAogCQkJCTJEQzE4RkFDMjE4OTEwNDgwMDI1
QTg4RCAvKiBXS0RyYXdpbmdWaWV3Lm1tICovLAogCQkJCTBGQ0I0RTNGMThCQkUwNDQwMDBGQ0ZD
OSAvKiBXS0dlb2xvY2F0aW9uUHJvdmlkZXJJT1MuaCAqLywK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>358343</attachid>
            <date>2019-01-04 11:25:54 -0800</date>
            <delta_ts>2019-01-04 12:24:36 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-193130-20190104112554.patch</filename>
            <type>text/plain</type>
            <size>27586</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM5NTk2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGE0ODM1YmE0MmI2Y2ZkNmZk
YzQ3MWRiMzk4OWQxYThlNGYyMTZhZjkuLmM5MjQ3MjcwZWQ0MDc4NDBmNjEwOGMyYzlhMTA0MGIx
OTM1NjczMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTkgQEAKKzIwMTktMDEtMDMgIFRpbSBIb3J0
b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisKKyAgICAgICAgU2hhcmUgaW5rIGNob2lj
ZSBhbmQgcnVsZXIgYmV0d2VlbiBhbGwgZWRpdGFibGUgaW1hZ2VzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTMxMzAKKyAgICAgICAgPHJkYXI6Ly9w
cm9ibGVtLzQ2ODI2NDkxPgorCisgICAgICAgIFJldmlld2VkIGJ5IFdlbnNvbiBIc2llaC4KKwor
ICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6CisgICAgICAgIEFkZCBXS0RyYXdpbmdDb29yZGlu
YXRvciwgd2hpY2ggbWFpbnRhaW5zIFdLV2ViVmlldy13aWRlIGRyYXdpbmcgc3RhdGUsCisgICAg
ICAgIGFuZCBtYW5hZ2VzIGEgc2luZ2xlIHNoYXJlZCBpbmsgcGlja2VyLgorCisgICAgICAgICog
VUlQcm9jZXNzL1BhZ2VDbGllbnQuaDoKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudDo6Y3Jl
YXRlRHJhd2luZ1ZpZXcpOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvRWRpdGFibGVJbWFnZUNv
bnRyb2xsZXIubW06CisgICAgICAgIChXZWJLaXQ6OkVkaXRhYmxlSW1hZ2VDb250cm9sbGVyOjpl
bnN1cmVFZGl0YWJsZUltYWdlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJ
bXBsSU9TLmg6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbToK
KyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OmNyZWF0ZURyYXdpbmdWaWV3KToKKyAg
ICAgICAgUGx1bWIgV0tEcmF3aW5nVmlldyBjcmVhdGlvbiB0aHJvdWdoIFBhZ2VDbGllbnQsIHNv
IHRoYXQgaXQgY2FuIGJlIGluc3RhbnRpYXRlZAorICAgICAgICB3aXRoIGtub3dsZWRnZSBvZiBp
dHMgb3duaW5nIFdLQ29udGVudFZpZXcuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29u
dGVudFZpZXdJbnRlcmFjdGlvbi5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tDb250ZW50
Vmlld0ludGVyYWN0aW9uLm1tOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9lbGVtZW50RGlk
Rm9jdXM6dXNlcklzSW50ZXJhY3Rpbmc6Ymx1clByZXZpb3VzTm9kZTpjaGFuZ2luZ0FjdGl2aXR5
U3RhdGU6dXNlck9iamVjdDpdKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfZWxlbWVudERp
ZEJsdXJdKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfZHJhd2luZ0Nvb3JkaW5hdG9yXSk6
CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgX2luc3RhbGxJbmtQaWNrZXJGb3JEcmF3aW5nVmll
d1dpdGhJRDpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfdW5pbnN0YWxs
SW5rUGlja2VyXSk6IERlbGV0ZWQuCisgICAgICAgIE1vdmUgaW5rIHBpY2tlciBtYW5hZ2VtZW50
IGludG8gV0tEcmF3aW5nQ29vcmRpbmF0b3IuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dL
RHJhd2luZ1ZpZXcuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLRHJhd2luZ1ZpZXcubW06
CisgICAgICAgICgtW1dLRHJhd2luZ1ZpZXcgaW5pdFdpdGhFbWJlZGRlZFZpZXdJRDpjb250ZW50
VmlldzpdKToKKyAgICAgICAgKC1bV0tEcmF3aW5nVmlldyBfY2FudmFzVmlld1dpbGxCZWdpbkRy
YXdpbmc6XSk6CisgICAgICAgICgtW1dLRHJhd2luZ1ZpZXcgaW52YWxpZGF0ZUF0dGFjaG1lbnRd
KToKKyAgICAgICAgKC1bV0tEcmF3aW5nVmlldyBkaWRDaGFuZ2VSdWxlclN0YXRlOl0pOgorICAg
ICAgICAoLVtXS0RyYXdpbmdWaWV3IGluaXRXaXRoRW1iZWRkZWRWaWV3SUQ6d2ViUGFnZVByb3h5
Ol0pOiBEZWxldGVkLgorICAgICAgICAoLVtXS0RyYXdpbmdWaWV3IGNhbnZhc1ZpZXddKTogRGVs
ZXRlZC4KKyAgICAgICAgVXNlIGEgc2hhcmVkIHJ1bGVyLCBvd25lZCBieSBXS0RyYXdpbmdDb29y
ZGluYXRvci4KKyAgICAgICAgVXBkYXRlIHRoZSBlZGl0YWJsZSBpbWFnZSdzIGluayB3aGVuIGRy
YXdpbmcgYmVnaW5zLiBUaGlzIHdheSwgd2UgZG9uJ3QgaGF2ZQorICAgICAgICB0byBwdXNoIGlu
ayBjaGFuZ2VzIHRvIGFsbCBkcmF3aW5ncyBhcyB0aGV5IGhhcHBlbi4KKworICAgICAgICAqIFVJ
UHJvY2Vzcy9pb3MvV0tJbmtQaWNrZXJWaWV3Lmg6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9X
S0lua1BpY2tlclZpZXcubW06CisgICAgICAgICgtW1dLSW5rUGlja2VyVmlldyBpbml0V2l0aENv
bnRlbnRWaWV3Ol0pOgorICAgICAgICAoLVtXS0lua1BpY2tlclZpZXcgaW5saW5lSW5rUGlja2Vy
RGlkVG9nZ2xlUnVsZXI6XSk6CisgICAgICAgICgtW1dLSW5rUGlja2VyVmlldyB2aWV3Q29udHJv
bGxlckZvclBvcG92ZXJQcmVzZW50YXRpb25Gcm9tSW5saW5lSW5rUGlja2VyOl0pOgorICAgICAg
ICAoLVtXS0lua1BpY2tlclZpZXcgc2V0SW5rOl0pOgorICAgICAgICAoLVtXS0lua1BpY2tlclZp
ZXcgaW5rXSk6CisgICAgICAgICgtW1dLSW5rUGlja2VyVmlldyBpbml0V2l0aERyYXdpbmdWaWV3
Ol0pOiBEZWxldGVkLgorICAgICAgICAoLVtXS0lua1BpY2tlclZpZXcgZGlkUGlja0lua10pOiBE
ZWxldGVkLgorICAgICAgICAoLVtXS0lua1BpY2tlclZpZXcgaW5saW5lSW5rUGlja2VyOmRpZFNl
bGVjdFRvb2w6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dLSW5rUGlja2VyVmlldyBpbmxpbmVJ
bmtQaWNrZXI6ZGlkU2VsZWN0Q29sb3I6XSk6IERlbGV0ZWQuCisgICAgICAgICogV2ViS2l0Lnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKIDIwMTktMDEtMDMgIEJyZW50IEZ1bGdoYW0gIDxi
ZnVsZ2hhbUBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIGxvZ2ljIGhhbmRsaW5nIEROVCBo
ZWFkZXIgZHVyaW5nIHJlZGlyZWN0cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2Vz
Q29jb2EudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CmluZGV4IDU2ZjNjNDVj
NDExOWU3ZGNmYzhkYjRiMDllNTNkMmIwMDU4MDFlN2EuLmE1ODU1YmE3ZTk5OTc3MGE1MjdlMDE3
MDg3ZjA0ZTk2MzdkZjI0NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29h
LnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKQEAgLTM4OSw2ICszODks
NyBAQCBVSVByb2Nlc3MvaW9zL1dLQWN0aW9uU2hlZXRBc3Npc3RhbnQubW0KIFVJUHJvY2Vzcy9p
b3MvV0tBcHBsaWNhdGlvblN0YXRlVHJhY2tpbmdWaWV3Lm1tCiBVSVByb2Nlc3MvaW9zL1dLQ29u
dGVudFZpZXcubW0gQG5vLXVuaWZ5CiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFj
dGlvbi5tbSBAbm8tdW5pZnkKK1VJUHJvY2Vzcy9pb3MvV0tEcmF3aW5nQ29vcmRpbmF0b3IubW0K
IFVJUHJvY2Vzcy9pb3MvV0tEcmF3aW5nVmlldy5tbQogVUlQcm9jZXNzL2lvcy9XS0dlb2xvY2F0
aW9uUHJvdmlkZXJJT1MubW0KIFVJUHJvY2Vzcy9pb3MvV0tHZW9sb2NhdGlvblByb3ZpZGVySU9T
T2JqQ1NlY3VyaXR5T3JpZ2luLm1tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9QYWdlQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKaW5k
ZXggYzcyMmI3ZDcwNjY4MTJjNzQ5ZDcyN2NiN2Y4ZGQ0Yjk1MjA0ZGU1Mi4uMGI4NThjNDZlZTQ3
NGQ2OTZkZGMzZDQzNWJkNTRjMTMyMzAwM2MyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvUGFnZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VD
bGllbnQuaApAQCAtNDksNiArNDksNyBAQAogT0JKQ19DTEFTUyBDQUxheWVyOwogT0JKQ19DTEFT
UyBOU0ZpbGVXcmFwcGVyOwogT0JKQ19DTEFTUyBOU1NldDsKK09CSkNfQ0xBU1MgV0tEcmF3aW5n
VmlldzsKIE9CSkNfQ0xBU1MgX1dLUmVtb3RlT2JqZWN0UmVnaXN0cnk7CiAKICNpZiBVU0UoQVBQ
S0lUKQpAQCAtNDYyLDYgKzQ2MywxMCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBOU1NldCAqc2Vy
aWFsaXphYmxlRmlsZVdyYXBwZXJDbGFzc2VzKCkgY29uc3QgeyByZXR1cm4gbnVsbHB0cjsgfQog
I2VuZGlmCiAjZW5kaWYKKworI2lmIEhBVkUoUEVOQ0lMS0lUKQorICAgIHZpcnR1YWwgUmV0YWlu
UHRyPFdLRHJhd2luZ1ZpZXc+IGNyZWF0ZURyYXdpbmdWaWV3KFdlYkNvcmU6OkdyYXBoaWNzTGF5
ZXI6OkVtYmVkZGVkVmlld0lEKSB7IHJldHVybiBudWxscHRyOyB9CisjZW5kaWYKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
aW9zL0VkaXRhYmxlSW1hZ2VDb250cm9sbGVyLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
aW9zL0VkaXRhYmxlSW1hZ2VDb250cm9sbGVyLm1tCmluZGV4IDJlNTFlMzEwY2MwYjg0ODlkYWI2
YTBiYWMzZGU3MjUyN2JiMzRlYjMuLmE5YWU5ODFkZjg4OGExOTNhODM5NmQzYmZlMzU1NjVhYzFm
NjliZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9FZGl0YWJsZUlt
YWdlQ29udHJvbGxlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvRWRpdGFi
bGVJbWFnZUNvbnRyb2xsZXIubW0KQEAgLTMwLDYgKzMwLDcgQEAKIAogI2ltcG9ydCAiQVBJQXR0
YWNobWVudC5oIgogI2ltcG9ydCAiRWRpdGFibGVJbWFnZUNvbnRyb2xsZXJNZXNzYWdlcy5oIgor
I2ltcG9ydCAiUGFnZUNsaWVudEltcGxJT1MuaCIKICNpbXBvcnQgIlBlbmNpbEtpdFNQSS5oIgog
I2ltcG9ydCAiV0tEcmF3aW5nVmlldy5oIgogI2ltcG9ydCAiV2ViUGFnZVByb3h5LmgiCkBAIC01
Niw3ICs1Nyw3IEBAIEVkaXRhYmxlSW1hZ2UmIEVkaXRhYmxlSW1hZ2VDb250cm9sbGVyOjplbnN1
cmVFZGl0YWJsZUltYWdlKFdlYkNvcmU6OkdyYXBoaWNzTGF5CiB7CiAgICAgYXV0byByZXN1bHQg
PSBtX2VkaXRhYmxlSW1hZ2VzLmVuc3VyZShlbWJlZGRlZFZpZXdJRCwgWyZdIHsKICAgICAgICAg
c3RkOjp1bmlxdWVfcHRyPEVkaXRhYmxlSW1hZ2U+IGltYWdlID0gc3RkOjptYWtlX3VuaXF1ZTxF
ZGl0YWJsZUltYWdlPigpOwotICAgICAgICBpbWFnZS0+ZHJhd2luZ1ZpZXcgPSBhZG9wdE5TKFtb
V0tEcmF3aW5nVmlldyBhbGxvY10gaW5pdFdpdGhFbWJlZGRlZFZpZXdJRDplbWJlZGRlZFZpZXdJ
RCB3ZWJQYWdlUHJveHk6Km1fd2ViUGFnZVByb3h5XSk7CisgICAgICAgIGltYWdlLT5kcmF3aW5n
VmlldyA9IG1fd2ViUGFnZVByb3h5LT5wYWdlQ2xpZW50KCkuY3JlYXRlRHJhd2luZ1ZpZXcoZW1i
ZWRkZWRWaWV3SUQpOwogICAgICAgICByZXR1cm4gaW1hZ2U7CiAgICAgfSk7CiAgICAgcmV0dXJu
ICpyZXN1bHQuaXRlcmF0b3ItPnZhbHVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9p
b3MvUGFnZUNsaWVudEltcGxJT1MuaAppbmRleCBkZTc0MWM3MjJhYmU2YzA4ZTUwODE2MjJjODBm
NDc4YTNiZDYwODk0Li40YjQyMGQxNjczOGFkOGE2ZjIyNTBjMmQ5OTllOWUwZjU4YTk2NDk2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1Mu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaApA
QCAtMjI4LDYgKzIyOCwxMCBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBkaWRGaW5pc2hQcm9jZXNz
aW5nQWxsUGVuZGluZ01vdXNlRXZlbnRzKCkgZmluYWwgeyB9CiAKKyNpZiBIQVZFKFBFTkNJTEtJ
VCkKKyAgICBSZXRhaW5QdHI8V0tEcmF3aW5nVmlldz4gY3JlYXRlRHJhd2luZ1ZpZXcoV2ViQ29y
ZTo6R3JhcGhpY3NMYXllcjo6RW1iZWRkZWRWaWV3SUQpIG92ZXJyaWRlOworI2VuZGlmCisKICAg
ICBXS0NvbnRlbnRWaWV3ICptX2NvbnRlbnRWaWV3OwogICAgIFJldGFpblB0cjxXS0VkaXRvclVu
ZG9UYXJnZXQ+IG1fdW5kb1RhcmdldDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0KaW5kZXggNDIxNTIxYjc0ODNiZWMxZGQ5MTk4YTNi
MGJiNWVlZDE1NGQ2NTc0Zi4uNTZkOWFkZmNhNDQ0NDNlMGM0ZmUxZTBhMDRiNzYxN2I2Y2UwYjRh
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBs
SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElP
Uy5tbQpAQCAtNDEsNiArNDEsNyBAQAogI2ltcG9ydCAiVmlld1NuYXBzaG90U3RvcmUuaCIKICNp
bXBvcnQgIldLQ29udGVudFZpZXcuaCIKICNpbXBvcnQgIldLQ29udGVudFZpZXdJbnRlcmFjdGlv
bi5oIgorI2ltcG9ydCAiV0tEcmF3aW5nVmlldy5oIgogI2ltcG9ydCAiV0tFZGl0Q29tbWFuZC5o
IgogI2ltcG9ydCAiV0tHZW9sb2NhdGlvblByb3ZpZGVySU9TLmgiCiAjaW1wb3J0ICJXS1Bhc3N3
b3JkVmlldy5oIgpAQCAtODE3LDYgKzgxOCwxMyBAQCB2b2lkIFBhZ2VDbGllbnRJbXBsOjpyZXF1
ZXN0UGFzc3dvcmRGb3JRdWlja0xvb2tEb2N1bWVudChjb25zdCBTdHJpbmcmIGZpbGVOYW1lLAog
fQogI2VuZGlmCiAKKyNpZiBIQVZFKFBFTkNJTEtJVCkKK1JldGFpblB0cjxXS0RyYXdpbmdWaWV3
PiBQYWdlQ2xpZW50SW1wbDo6Y3JlYXRlRHJhd2luZ1ZpZXcoV2ViQ29yZTo6R3JhcGhpY3NMYXll
cjo6RW1iZWRkZWRWaWV3SUQgZW1iZWRkZWRWaWV3SUQpCit7CisgICAgcmV0dXJuIGFkb3B0TlMo
W1tXS0RyYXdpbmdWaWV3IGFsbG9jXSBpbml0V2l0aEVtYmVkZGVkVmlld0lEOmVtYmVkZGVkVmll
d0lEIGNvbnRlbnRWaWV3Om1fY29udGVudFZpZXddKTsKK30KKyNlbmRpZgorCiB9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmgK
aW5kZXggN2NjNjVmYjQzZDc5ZjQ4OTM5NjViOWE5OGM3YmIwZjkxZjc5NDA1Ni4uZmYyMTM5ZWIy
MDBiODhkZDE0ZTdhZTJmZTEyYjM2ZDNiZjM2ZjRmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24uaApAQCAtOTMsMTAg
KzkzLDEwIEBAIGNsYXNzIFdlYlBhZ2VQcm94eTsKIEBjbGFzcyBVSUhvdmVyR2VzdHVyZVJlY29n
bml6ZXI7CiBAY2xhc3MgV2ViRXZlbnQ7CiBAY2xhc3MgV0tBY3Rpb25TaGVldEFzc2lzdGFudDsK
K0BjbGFzcyBXS0RyYXdpbmdDb29yZGluYXRvcjsKIEBjbGFzcyBXS0ZvY3VzZWRGb3JtQ29udHJv
bFZpZXc7CiBAY2xhc3MgV0tGb3JtSW5wdXRDb250cm9sOwogQGNsYXNzIFdLRm9ybUlucHV0U2Vz
c2lvbjsKLUBjbGFzcyBXS0lua1BpY2tlclZpZXc7CiBAY2xhc3MgV0tJbnNwZWN0b3JOb2RlU2Vh
cmNoR2VzdHVyZVJlY29nbml6ZXI7CiAKIHR5cGVkZWYgdm9pZCAoXlVJV0tBdXRvY29ycmVjdGlv
bkNvbXBsZXRpb25IYW5kbGVyKShVSVdLQXV0b2NvcnJlY3Rpb25SZWN0cyAqcmVjdHNGb3JJbnB1
dCk7CkBAIC0yNzgsNyArMjc4LDcgQEAgc3RydWN0IFdLQXV0b0NvcnJlY3Rpb25EYXRhIHsKICNl
bmRpZgogCiAjaWYgSEFWRShQRU5DSUxLSVQpCi0gICAgUmV0YWluUHRyPFdLSW5rUGlja2VyVmll
dz4gX2lua1BpY2tlcjsKKyAgICBSZXRhaW5QdHI8V0tEcmF3aW5nQ29vcmRpbmF0b3I+IF9kcmF3
aW5nQ29vcmRpbmF0b3I7CiAjZW5kaWYKIAogICAgIEJPT0wgX2lzRWRpdGFibGU7CkBAIC00NDAs
NiArNDQwLDEwIEBAIEZPUl9FQUNIX1BSSVZBVEVfV0tDT05URU5UVklFV19BQ1RJT04oREVDTEFS
RV9XS0NPTlRFTlRWSUVXX0FDVElPTl9GT1JfV0VCX1ZJRVcpCiAtICh2b2lkKXVwZGF0ZVRleHRT
dWdnZXN0aW9uc0ZvcklucHV0RGVsZWdhdGU7CiAjZW5kaWYKIAorI2lmIEhBVkUoUEVOQ0lMS0lU
KQorLSAoV0tEcmF3aW5nQ29vcmRpbmF0b3IgKilfZHJhd2luZ0Nvb3JkaW5hdG9yOworI2VuZGlm
CisKIEBlbmQKIAogQGludGVyZmFjZSBXS0NvbnRlbnRWaWV3IChXS1Rlc3RpbmcpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9u
Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlv
bi5tbQppbmRleCBmNTE2MmIwMDU5MWQ0OTc3NzViNjc3OWY4YjBmYzU3N2FjOWVjOWM3Li5lNDE4
OWZkZDcyMjVlMjEzNjA0N2MyYWY0MjQzMWJlODFjNzk2YjI1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KQEAg
LTQyLDYgKzQyLDcgQEAKICNpbXBvcnQgIlVJS2l0U1BJLmgiCiAjaW1wb3J0ICJXS0FjdGlvblNo
ZWV0QXNzaXN0YW50LmgiCiAjaW1wb3J0ICJXS0RhdGVQaWNrZXJWaWV3Q29udHJvbGxlci5oIgor
I2ltcG9ydCAiV0tEcmF3aW5nQ29vcmRpbmF0b3IuaCIKICNpbXBvcnQgIldLRXJyb3IuaCIKICNp
bXBvcnQgIldLRm9jdXNlZEZvcm1Db250cm9sVmlldy5oIgogI2ltcG9ydCAiV0tGb3JtSW5wdXRD
b250cm9sLmgiCkBAIC04NDgsNiArODQ5LDggQEAgLSAodm9pZCljbGVhbnVwSW50ZXJhY3Rpb24K
ICAgICBbX2tleWJvYXJkU2Nyb2xsaW5nQW5pbWF0b3IgaW52YWxpZGF0ZV07CiAgICAgX2tleWJv
YXJkU2Nyb2xsaW5nQW5pbWF0b3IgPSBuaWw7CiAKKyAgICBfZHJhd2luZ0Nvb3JkaW5hdG9yID0g
bmlsOworCiAjaWYgRU5BQkxFKERBVEFMSVNUX0VMRU1FTlQpCiAgICAgX2RhdGFMaXN0VGV4dFN1
Z2dlc3Rpb25zSW5wdXRWaWV3ID0gbmlsOwogICAgIF9kYXRhTGlzdFRleHRTdWdnZXN0aW9ucyA9
IG5pbDsKQEAgLTQ0OTcsNyArNDUwMCw3IEBAIC0gKHZvaWQpX2VsZW1lbnREaWRGb2N1czooY29u
c3QgV2ViS2l0OjpGb2N1c2VkRWxlbWVudEluZm9ybWF0aW9uJilpbmZvcm1hdGlvbiB1CiAKICNp
ZiBIQVZFKFBFTkNJTEtJVCkKICAgICBpZiAoaW5mb3JtYXRpb24uZWxlbWVudFR5cGUgPT0gV2Vi
S2l0OjpJbnB1dFR5cGU6OkRyYXdpbmcpCi0gICAgICAgIFtzZWxmIF9pbnN0YWxsSW5rUGlja2Vy
Rm9yRHJhd2luZ1ZpZXdXaXRoSUQ6aW5mb3JtYXRpb24uZW1iZWRkZWRWaWV3SURdOworICAgICAg
ICBbX2RyYXdpbmdDb29yZGluYXRvciBpbnN0YWxsSW5rUGlja2VyRm9yRHJhd2luZzppbmZvcm1h
dGlvbi5lbWJlZGRlZFZpZXdJRF07CiAjZW5kaWYKIAogICAgIGlmICghc2hvdWxkU2hvd0tleWJv
YXJkKQpAQCAtNDU4OSw4ICs0NTkyLDcgQEAgLSAodm9pZClfZWxlbWVudERpZEJsdXIKICAgICBT
ZXRGb3JTY29wZTxCT09MPiBpc0JsdXJyaW5nRm9jdXNlZE5vZGVGb3JTY29wZSB7IF9pc0JsdXJy
aW5nRm9jdXNlZE5vZGUsIFlFUyB9OwogCiAjaWYgSEFWRShQRU5DSUxLSVQpCi0gICAgaWYgKF9p
bmtQaWNrZXIpCi0gICAgICAgIFtzZWxmIF91bmluc3RhbGxJbmtQaWNrZXJdOworICAgIFtfZHJh
d2luZ0Nvb3JkaW5hdG9yIHVuaW5zdGFsbElua1BpY2tlcl07CiAjZW5kaWYKIAogICAgIFtfZm9y
bUlucHV0U2Vzc2lvbiBpbnZhbGlkYXRlXTsKQEAgLTYyOTMsMjcgKzYyOTUsMTIgQEAgLSAodm9p
ZClfaG92ZXJHZXN0dXJlUmVjb2duaXplckNoYW5nZWQ6KFVJR2VzdHVyZVJlY29nbml6ZXIgKiln
ZXN0dXJlUmVjb2duaXplcgogI2VuZGlmCiAKICNpZiBIQVZFKFBFTkNJTEtJVCkKLS0gKHZvaWQp
X2luc3RhbGxJbmtQaWNrZXJGb3JEcmF3aW5nVmlld1dpdGhJRDooV2ViQ29yZTo6R3JhcGhpY3NM
YXllcjo6RW1iZWRkZWRWaWV3SUQpZW1iZWRkZWRWaWV3SUQKLXsKLSAgICBfaW5rUGlja2VyID0g
YWRvcHROUyhbW1dLSW5rUGlja2VyVmlldyBhbGxvY10gaW5pdFdpdGhEcmF3aW5nVmlldzpfcGFn
ZS0+ZWRpdGFibGVJbWFnZUNvbnRyb2xsZXIoKS5lZGl0YWJsZUltYWdlKGVtYmVkZGVkVmlld0lE
KS0+ZHJhd2luZ1ZpZXcuZ2V0KCldKTsKLSAgICBbX2lua1BpY2tlciBzaXplVG9GaXRdOwotICAg
IFtfaW5rUGlja2VyIHNldFRyYW5zbGF0ZXNBdXRvcmVzaXppbmdNYXNrSW50b0NvbnN0cmFpbnRz
Ok5PXTsKLSAgICBbX3dlYlZpZXcgYWRkU3VidmlldzpfaW5rUGlja2VyLmdldCgpXTsKLQotICAg
IFtOU0xheW91dENvbnN0cmFpbnQgYWN0aXZhdGVDb25zdHJhaW50czpAWwotICAgICAgICBbW19p
bmtQaWNrZXIgaGVpZ2h0QW5jaG9yXSBjb25zdHJhaW50RXF1YWxUb0NvbnN0YW50OltfaW5rUGlj
a2VyIGZyYW1lXS5zaXplLmhlaWdodF0sCi0gICAgICAgIFtbX2lua1BpY2tlciBib3R0b21BbmNo
b3JdIGNvbnN0cmFpbnRFcXVhbFRvQW5jaG9yOl93ZWJWaWV3LnNhZmVBcmVhTGF5b3V0R3VpZGUu
Ym90dG9tQW5jaG9yXSwKLSAgICAgICAgW1tfaW5rUGlja2VyIGxlZnRBbmNob3JdIGNvbnN0cmFp
bnRFcXVhbFRvQW5jaG9yOl93ZWJWaWV3LnNhZmVBcmVhTGF5b3V0R3VpZGUubGVmdEFuY2hvcl0s
Ci0gICAgICAgIFtbX2lua1BpY2tlciByaWdodEFuY2hvcl0gY29uc3RyYWludEVxdWFsVG9BbmNo
b3I6X3dlYlZpZXcuc2FmZUFyZWFMYXlvdXRHdWlkZS5yaWdodEFuY2hvcl0sCi0gICAgXV07Ci19
Ci0KLS0gKHZvaWQpX3VuaW5zdGFsbElua1BpY2tlcgorLSAoV0tEcmF3aW5nQ29vcmRpbmF0b3Ig
KilfZHJhd2luZ0Nvb3JkaW5hdG9yCiB7Ci0gICAgW19pbmtQaWNrZXIgcmVtb3ZlRnJvbVN1cGVy
dmlld107Ci0gICAgX2lua1BpY2tlciA9IG5pbDsKKyAgICBpZiAoIV9kcmF3aW5nQ29vcmRpbmF0
b3IpCisgICAgICAgIF9kcmF3aW5nQ29vcmRpbmF0b3IgPSBhZG9wdE5TKFtbV0tEcmF3aW5nQ29v
cmRpbmF0b3IgYWxsb2NdIGluaXRXaXRoQ29udGVudFZpZXc6c2VsZl0pOworICAgIHJldHVybiBf
ZHJhd2luZ0Nvb3JkaW5hdG9yLmdldCgpOwogfQotCiAjZW5kaWYgLy8gSEFWRShQRU5DSUxLSVQp
CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0RyYXdp
bmdDb29yZGluYXRvci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLRHJhd2luZ0Nv
b3JkaW5hdG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTEyOWQ5NWUzOWI4MDQ0M2Y5OTMzZDYwYzdkYTBjOTlm
N2IzOWI2MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9X
S0RyYXdpbmdDb29yZGluYXRvci5oCkBAIC0wLDAgKzEsNTAgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWYg
SEFWRShQRU5DSUxLSVQpCisKKyNpbXBvcnQgPFdlYkNvcmUvR3JhcGhpY3NMYXllci5oPgorCitP
QkpDX0NMQVNTIFBLSW5rOworT0JKQ19DTEFTUyBXS0NvbnRlbnRWaWV3OworT0JKQ19DTEFTUyBX
S0lua1BpY2tlclZpZXc7CisKK0BpbnRlcmZhY2UgV0tEcmF3aW5nQ29vcmRpbmF0b3IgOiBOU09i
amVjdAorCistIChpbnN0YW5jZXR5cGUpaW5pdCBOU19VTkFWQUlMQUJMRTsKKy0gKGluc3RhbmNl
dHlwZSlpbml0V2l0aENvbnRlbnRWaWV3OihXS0NvbnRlbnRWaWV3ICopY29udGVudFZpZXc7CisK
Ky0gKHZvaWQpaW5zdGFsbElua1BpY2tlckZvckRyYXdpbmc6KFdlYkNvcmU6OkdyYXBoaWNzTGF5
ZXI6OkVtYmVkZGVkVmlld0lEKWVtYmVkZGVkVmlld0lEOworLSAodm9pZCl1bmluc3RhbGxJbmtQ
aWNrZXI7CisKKy0gKHZvaWQpZGlkQ2hhbmdlUnVsZXJTdGF0ZTooQk9PTClydWxlckVuYWJsZWQ7
CistICh2b2lkKWRpZENoYW5nZUluazooUEtJbmsgKilpbms7CisKK0Bwcm9wZXJ0eSAobm9uYXRv
bWljLCByZWFkb25seSwgcmV0YWluKSBXS0lua1BpY2tlclZpZXcgKmlua1BpY2tlcjsKKworQGVu
ZAorCisKKyNlbmRpZiAvLyBIQVZFKFBFTkNJTEtJVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2lvcy9XS0RyYXdpbmdDb29yZGluYXRvci5tbSBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2lvcy9XS0RyYXdpbmdDb29yZGluYXRvci5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMmRhZWQ3
NWJjNWIyNjQ2OTFkNzlhZTA4MWUyODY1NGUxNGQ4ZGFiCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLRHJhd2luZ0Nvb3JkaW5hdG9yLm1tCkBAIC0wLDAg
KzEsMTI1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJXS0Ry
YXdpbmdDb29yZGluYXRvci5oIgorCisjaWYgSEFWRShQRU5DSUxLSVQpCisKKyNpbXBvcnQgIkVk
aXRhYmxlSW1hZ2VDb250cm9sbGVyLmgiCisjaW1wb3J0ICJXS0NvbnRlbnRWaWV3SW50ZXJhY3Rp
b24uaCIKKyNpbXBvcnQgIldLSW5rUGlja2VyVmlldy5oIgorI2ltcG9ydCAiV0tXZWJWaWV3Lmgi
CisjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CisKKyNpbXBvcnQgIlBlbmNpbEtpdFNvZnRMaW5r
LmgiCisKK0BpbnRlcmZhY2UgV0tEcmF3aW5nQ29vcmRpbmF0b3IgKCkgPFBLUnVsZXJIb3N0aW5n
RGVsZWdhdGU+CitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBXS0RyYXdpbmdDb29yZGluYXRvciB7
CisgICAgX193ZWFrIFdLQ29udGVudFZpZXcgKl9jb250ZW50VmlldzsKKworICAgIFJldGFpblB0
cjxXS0lua1BpY2tlclZpZXc+IF9pbmtQaWNrZXI7CisKKyAgICBXZWJDb3JlOjpHcmFwaGljc0xh
eWVyOjpFbWJlZGRlZFZpZXdJRCBfZm9jdXNlZEVtYmVkZGVkVmlld0lEOworfQorCistIChpbnN0
YW5jZXR5cGUpaW5pdFdpdGhDb250ZW50VmlldzooV0tDb250ZW50VmlldyAqKWNvbnRlbnRWaWV3
Cit7CisgICAgc2VsZiA9IFtzdXBlciBpbml0XTsKKyAgICBpZiAoIXNlbGYpCisgICAgICAgIHJl
dHVybiBuaWw7CisKKyAgICBfY29udGVudFZpZXcgPSBjb250ZW50VmlldzsKKyAgICBfaW5rUGlj
a2VyID0gYWRvcHROUyhbW1dLSW5rUGlja2VyVmlldyBhbGxvY10gaW5pdFdpdGhDb250ZW50Vmll
dzpfY29udGVudFZpZXddKTsKKworICAgIHJldHVybiBzZWxmOworfQorCistIChXS0lua1BpY2tl
clZpZXcgKilpbmtQaWNrZXIKK3sKKyAgICByZXR1cm4gX2lua1BpY2tlci5nZXQoKTsKK30KKwor
LSAoVUlWaWV3ICopcnVsZXJIb3N0aW5nVmlldworeworICAgIHJldHVybiBfY29udGVudFZpZXc7
Cit9CisKKy0gKEJPT0wpcnVsZXJIb3N0V2FudHNTaGFyZWRSdWxlcgoreworICAgIHJldHVybiBZ
RVM7Cit9CisKKy0gKFdLRHJhd2luZ1ZpZXcgKilfZm9jdXNlZERyYXdpbmdWaWV3Cit7CisgICAg
V2ViS2l0OjpFZGl0YWJsZUltYWdlICpmb2N1c2VkRWRpdGFibGVJbWFnZSA9IF9jb250ZW50Vmll
dy5wYWdlLT5lZGl0YWJsZUltYWdlQ29udHJvbGxlcigpLmVkaXRhYmxlSW1hZ2UoX2ZvY3VzZWRF
bWJlZGRlZFZpZXdJRCk7CisgICAgaWYgKCFmb2N1c2VkRWRpdGFibGVJbWFnZSkKKyAgICAgICAg
cmV0dXJuIG5pbDsKKyAgICByZXR1cm4gZm9jdXNlZEVkaXRhYmxlSW1hZ2UtPmRyYXdpbmdWaWV3
LmdldCgpOworfQorCistICh2b2lkKWRpZENoYW5nZVJ1bGVyU3RhdGU6KEJPT0wpcnVsZXJFbmFi
bGVkCit7CisgICAgW3NlbGYuX2ZvY3VzZWREcmF3aW5nVmlldyBkaWRDaGFuZ2VSdWxlclN0YXRl
OnJ1bGVyRW5hYmxlZF07Cit9CisKKy0gKHZvaWQpZGlkQ2hhbmdlSW5rOihQS0luayAqKWluawor
eworICAgIFtzZWxmLl9mb2N1c2VkRHJhd2luZ1ZpZXcgZGlkQ2hhbmdlSW5rOmlua107Cit9CisK
Ky0gKHZvaWQpaW5zdGFsbElua1BpY2tlckZvckRyYXdpbmc6KFdlYkNvcmU6OkdyYXBoaWNzTGF5
ZXI6OkVtYmVkZGVkVmlld0lEKWVtYmVkZGVkVmlld0lECit7CisgICAgX2ZvY3VzZWRFbWJlZGRl
ZFZpZXdJRCA9IGVtYmVkZGVkVmlld0lEOworCisgICAgV0tXZWJWaWV3ICp3ZWJWaWV3ID0gX2Nv
bnRlbnRWaWV3LT5fd2ViVmlldzsKKworICAgIFtfaW5rUGlja2VyIHNpemVUb0ZpdF07CisgICAg
W19pbmtQaWNrZXIgc2V0VHJhbnNsYXRlc0F1dG9yZXNpemluZ01hc2tJbnRvQ29uc3RyYWludHM6
Tk9dOworICAgIFt3ZWJWaWV3IGFkZFN1YnZpZXc6X2lua1BpY2tlci5nZXQoKV07CisKKyAgICBb
TlNMYXlvdXRDb25zdHJhaW50IGFjdGl2YXRlQ29uc3RyYWludHM6QFsKKyAgICAgICAgW1tfaW5r
UGlja2VyIGhlaWdodEFuY2hvcl0gY29uc3RyYWludEVxdWFsVG9Db25zdGFudDpbX2lua1BpY2tl
ciBmcmFtZV0uc2l6ZS5oZWlnaHRdLAorICAgICAgICBbW19pbmtQaWNrZXIgYm90dG9tQW5jaG9y
XSBjb25zdHJhaW50RXF1YWxUb0FuY2hvcjp3ZWJWaWV3LnNhZmVBcmVhTGF5b3V0R3VpZGUuYm90
dG9tQW5jaG9yXSwKKyAgICAgICAgW1tfaW5rUGlja2VyIGxlZnRBbmNob3JdIGNvbnN0cmFpbnRF
cXVhbFRvQW5jaG9yOndlYlZpZXcuc2FmZUFyZWFMYXlvdXRHdWlkZS5sZWZ0QW5jaG9yXSwKKyAg
ICAgICAgW1tfaW5rUGlja2VyIHJpZ2h0QW5jaG9yXSBjb25zdHJhaW50RXF1YWxUb0FuY2hvcjp3
ZWJWaWV3LnNhZmVBcmVhTGF5b3V0R3VpZGUucmlnaHRBbmNob3JdLAorICAgIF1dOworCisgICAg
Ly8gV2hlbiBmb2N1c2VkLCBwdXNoIHRoZSBydWxlciBzdGF0ZSBkb3duIHRvIHRoZSBjYW52YXMg
c28gdGhhdCBpdCBkb2Vzbid0IGdldCBvdXQgb2Ygc3luYworICAgIC8vIGFuZCBlYXJseS1yZXR1
cm4gZnJvbSBsYXRlciBjaGFuZ2VzLgorICAgIFtzZWxmLl9mb2N1c2VkRHJhd2luZ1ZpZXcgZGlk
Q2hhbmdlUnVsZXJTdGF0ZTpbX2lua1BpY2tlciBydWxlckVuYWJsZWRdXTsKK30KKworLSAodm9p
ZCl1bmluc3RhbGxJbmtQaWNrZXIKK3sKKyAgICBbX2lua1BpY2tlciByZW1vdmVGcm9tU3VwZXJ2
aWV3XTsKKyAgICBfZm9jdXNlZEVtYmVkZGVkVmlld0lEID0gMDsKK30KKworQGVuZAorCisjZW5k
aWYgLy8gSEFWRShQRU5DSUxLSVQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9pb3MvV0tEcmF3aW5nVmlldy5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLRHJh
d2luZ1ZpZXcuaAppbmRleCAyYjJkZTI1MjhjZjYwMmZhODVjMzcwZGJkMzU2MTMxZjdkYjg2MDJj
Li45ZDgxYjIwM2I0NDBiODUzZDFiYzM1ODMwZTEwMmE4ODhlOTc5OTAyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tEcmF3aW5nVmlldy5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0RyYXdpbmdWaWV3LmgKQEAgLTI4LDE2ICsyOCwxOCBAQAog
I2ltcG9ydCAiUmVtb3RlTGF5ZXJUcmVlSG9zdC5oIgogI2ltcG9ydCAiUmVtb3RlTGF5ZXJUcmVl
Vmlld3MuaCIKIAotT0JKQ19DTEFTUyBQS0NhbnZhc1ZpZXc7CitPQkpDX0NMQVNTIFBLSW5rOwor
T0JKQ19DTEFTUyBXS0NvbnRlbnRWaWV3OwogCiBAaW50ZXJmYWNlIFdLRHJhd2luZ1ZpZXcgOiBX
S0VtYmVkZGVkVmlldyA8V0tOYXRpdmVseUludGVyYWN0aWJsZT4KIAotLSAoaW5zdGFuY2V0eXBl
KWluaXRXaXRoRW1iZWRkZWRWaWV3SUQ6KFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6OkVtYmVkZGVk
Vmlld0lEKWVtYmVkZGVkVmlld0lEIHdlYlBhZ2VQcm94eTooV2ViS2l0OjpXZWJQYWdlUHJveHkm
KXdlYlBhZ2VQcm94eTsKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aEVtYmVkZGVkVmlld0lEOihX
ZWJDb3JlOjpHcmFwaGljc0xheWVyOjpFbWJlZGRlZFZpZXdJRCllbWJlZGRlZFZpZXdJRCBjb250
ZW50VmlldzooV0tDb250ZW50VmlldyAqKWNvbnRlbnRWaWV3OwogCiAtIChOU0RhdGEgKilQTkdS
ZXByZXNlbnRhdGlvbjsKIC0gKHZvaWQpbG9hZERyYXdpbmdGcm9tUE5HUmVwcmVzZW50YXRpb246
KE5TRGF0YSAqKVBOR0RhdGE7CiAKLUBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgUEtD
YW52YXNWaWV3ICpjYW52YXNWaWV3OworLSAodm9pZClkaWRDaGFuZ2VSdWxlclN0YXRlOihCT09M
KXJ1bGVyRW5hYmxlZDsKKy0gKHZvaWQpZGlkQ2hhbmdlSW5rOihQS0luayAqKWluazsKIAogQGVu
ZAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tEcmF3aW5nVmll
dy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0RyYXdpbmdWaWV3Lm1tCmluZGV4
IGNlMDdkNDg3OTYyMDJhN2RkNmIzY2ZiZTE2MWY5MzE4NmIzMjUyYTAuLmRmMWQwYzU0MzEyNGY4
YzBjMzZlZDJhNDFiMzY3Y2FkZjAwZTJhNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2lvcy9XS0RyYXdpbmdWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2lvcy9XS0RyYXdpbmdWaWV3Lm1tCkBAIC0yOSwxMCArMjksMTIgQEAKICNpZiBIQVZFKFBFTkNJ
TEtJVCkKIAogI2ltcG9ydCAiRWRpdGFibGVJbWFnZUNvbnRyb2xsZXIuaCIKLSNpbXBvcnQgIlBl
bmNpbEtpdFNvZnRMaW5rLmgiCisjaW1wb3J0ICJXS0lua1BpY2tlclZpZXcuaCIKICNpbXBvcnQg
PHd0Zi9PU09iamVjdFB0ci5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogCisjaW1wb3J0
ICJQZW5jaWxLaXRTb2Z0TGluay5oIgorCiBAaW50ZXJmYWNlIFdLRHJhd2luZ1ZpZXcgKCkgPFBL
Q2FudmFzVmlld0RlbGVnYXRlPgogQGVuZAogCkBAIC00NCwxNiArNDYsMTYgQEAgQGltcGxlbWVu
dGF0aW9uIFdLRHJhd2luZ1ZpZXcgewogICAgIFJldGFpblB0cjxQS0ltYWdlUmVuZGVyZXI+IF9y
ZW5kZXJlcjsKICNlbmRpZgogCi0gICAgV2Vha1B0cjxXZWJLaXQ6OldlYlBhZ2VQcm94eT4gX3dl
YlBhZ2VQcm94eTsKKyAgICBfX3dlYWsgV0tDb250ZW50VmlldyAqX2NvbnRlbnRWaWV3OwogfQog
Ci0tIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhFbWJlZGRlZFZpZXdJRDooV2ViQ29yZTo6R3JhcGhp
Y3NMYXllcjo6RW1iZWRkZWRWaWV3SUQpZW1iZWRkZWRWaWV3SUQgd2ViUGFnZVByb3h5OihXZWJL
aXQ6OldlYlBhZ2VQcm94eSYpd2ViUGFnZVByb3h5CistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhF
bWJlZGRlZFZpZXdJRDooV2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6RW1iZWRkZWRWaWV3SUQpZW1i
ZWRkZWRWaWV3SUQgY29udGVudFZpZXc6KFdLQ29udGVudFZpZXcgKiljb250ZW50Vmlldwogewog
ICAgIHNlbGYgPSBbc3VwZXIgaW5pdFdpdGhFbWJlZGRlZFZpZXdJRDplbWJlZGRlZFZpZXdJRF07
CiAgICAgaWYgKCFzZWxmKQogICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgX3dlYlBhZ2VQcm94
eSA9IG1ha2VXZWFrUHRyKHdlYlBhZ2VQcm94eSk7CisgICAgX2NvbnRlbnRWaWV3ID0gY29udGVu
dFZpZXc7CiAKICAgICBfcGVuY2lsVmlldyA9IGFkb3B0TlMoW1dlYktpdDo6YWxsb2NQS0NhbnZh
c1ZpZXdJbnN0YW5jZSgpIGluaXRXaXRoRnJhbWU6Q0dSZWN0WmVyb10pOwogCkBAIC02MSw2ICs2
Myw3IEBAIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aEVtYmVkZGVkVmlld0lEOihXZWJDb3JlOjpH
cmFwaGljc0xheWVyOjpFbWJlZGRlZFZpZXdJRCllCiAgICAgW19wZW5jaWxWaWV3IHNldFVzZXJJ
bnRlcmFjdGlvbkVuYWJsZWQ6WUVTXTsKICAgICBbX3BlbmNpbFZpZXcgc2V0T3BhcXVlOk5PXTsK
ICAgICBbX3BlbmNpbFZpZXcgc2V0RGVsZWdhdGU6c2VsZl07CisgICAgW19wZW5jaWxWaWV3IHNl
dFJ1bGVySG9zdGluZ0RlbGVnYXRlOl9jb250ZW50Vmlldy5fZHJhd2luZ0Nvb3JkaW5hdG9yXTsK
IAogICAgIFtzZWxmIGFkZFN1YnZpZXc6X3BlbmNpbFZpZXcuZ2V0KCldOwogCkBAIC0xNjUsMTgg
KzE2OCwyOCBAQCAtICh2b2lkKWRyYXdpbmdEaWRDaGFuZ2U6KFBLQ2FudmFzVmlldyAqKWNhbnZh
c1ZpZXcKICAgICBbc2VsZiBpbnZhbGlkYXRlQXR0YWNobWVudF07CiB9CiAKKy0gKHZvaWQpX2Nh
bnZhc1ZpZXdXaWxsQmVnaW5EcmF3aW5nOihQS0NhbnZhc1ZpZXcgKiljYW52YXNWaWV3Cit7Cisg
ICAgW19wZW5jaWxWaWV3IHNldEluazpfY29udGVudFZpZXcuX2RyYXdpbmdDb29yZGluYXRvci5p
bmtQaWNrZXIuaW5rXTsKK30KKwogLSAodm9pZClpbnZhbGlkYXRlQXR0YWNobWVudAogewotICAg
IGlmICghX3dlYlBhZ2VQcm94eSkKKyAgICBpZiAoIV9jb250ZW50Vmlldy5wYWdlKQogICAgICAg
ICByZXR1cm47Ci0gICAgYXV0byYgcGFnZSA9ICpfd2ViUGFnZVByb3h5OworICAgIGF1dG8mIHBh
Z2UgPSAqX2NvbnRlbnRWaWV3LnBhZ2U7CiAKICAgICBwYWdlLmVkaXRhYmxlSW1hZ2VDb250cm9s
bGVyKCkuaW52YWxpZGF0ZUF0dGFjaG1lbnRGb3JFZGl0YWJsZUltYWdlKHNlbGYuZW1iZWRkZWRW
aWV3SUQpOwogfQogCi0tIChQS0NhbnZhc1ZpZXcgKiljYW52YXNWaWV3CistICh2b2lkKWRpZENo
YW5nZVJ1bGVyU3RhdGU6KEJPT0wpcnVsZXJFbmFibGVkCit7CisgICAgW19wZW5jaWxWaWV3IHNl
dFJ1bGVyRW5hYmxlZDpydWxlckVuYWJsZWRdOworfQorCistICh2b2lkKWRpZENoYW5nZUluazoo
UEtJbmsgKilpbmsKIHsKLSAgICByZXR1cm4gX3BlbmNpbFZpZXcuZ2V0KCk7CisgICAgW19wZW5j
aWxWaWV3IHNldEluazppbmtdOwogfQogCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvV0tJbmtQaWNrZXJWaWV3LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9pb3MvV0tJbmtQaWNrZXJWaWV3LmgKaW5kZXggMjEzM2EyNzViOTIzZjE1YWZiZTJkOGViN2E5
MzIyYTNhYjIxYjI2Yi4uM2Y2ZDdiYzMyYWVjNjZmYmE3YjQ0ODljNmMwNGFiY2EzNDdkMzRmYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLSW5rUGlja2VyVmlldy5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0lua1BpY2tlclZpZXcuaApAQCAt
MjcsNyArMjcsOCBAQAogCiAjaW1wb3J0IDxVSUtpdC9VSUtpdC5oPgogCi1PQkpDX0NMQVNTIFdL
RHJhd2luZ1ZpZXc7CitPQkpDX0NMQVNTIFBLSW5rOworT0JKQ19DTEFTUyBXS0NvbnRlbnRWaWV3
OwogCiBAaW50ZXJmYWNlIFdLSW5rUGlja2VyVmlldyA6IFVJVmlldwogCkBAIC0zNSw3ICszNiwx
MCBAQCBPQkpDX0NMQVNTIFdLRHJhd2luZ1ZpZXc7CiAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhG
cmFtZTooQ0dSZWN0KWZyYW1lIE5TX1VOQVZBSUxBQkxFOwogLSAoaW5zdGFuY2V0eXBlKWluaXRX
aXRoQ29kZXI6KE5TQ29kZXIgKiljb2RlciBOU19VTkFWQUlMQUJMRTsKIAotLSAoaW5zdGFuY2V0
eXBlKWluaXRXaXRoRHJhd2luZ1ZpZXc6KFdLRHJhd2luZ1ZpZXcgKilkcmF3aW5nVmlldyBOU19E
RVNJR05BVEVEX0lOSVRJQUxJWkVSOworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoQ29udGVudFZp
ZXc6KFdLQ29udGVudFZpZXcgKiljb250ZW50VmlldyBOU19ERVNJR05BVEVEX0lOSVRJQUxJWkVS
OworCitAcHJvcGVydHkgKG5vbmF0b21pYykgQk9PTCBydWxlckVuYWJsZWQ7CitAcHJvcGVydHkg
KG5vbmF0b21pYywgcmV0YWluKSBQS0luayAqaW5rOwogCiBAZW5kCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0lua1BpY2tlclZpZXcubW0gYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9pb3MvV0tJbmtQaWNrZXJWaWV3Lm1tCmluZGV4IDlhMzc0MzhlNTg3MjU4
OGQ0NDAwNTBjNGJmNGJiODFkZDRhZmNhODMuLmQ0ZTM1ZmVlNTZiMzcwZjcxOWQ0OTMyNWZiOGNk
YjBjZjBhNjk2YzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0lu
a1BpY2tlclZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLSW5rUGlj
a2VyVmlldy5tbQpAQCAtMjgsNyArMjgsNyBAQAogCiAjaWYgSEFWRShQRU5DSUxLSVQpCiAKLSNp
bXBvcnQgIldLRHJhd2luZ1ZpZXcuaCIKKyNpbXBvcnQgIldLQ29udGVudFZpZXdJbnRlcmFjdGlv
bi5oIgogCiAjaW1wb3J0ICJQZW5jaWxLaXRTb2Z0TGluay5oIgogCkBAIC0zNywyMSArMzcsMTkg
QEAgQGVuZAogCiBAaW1wbGVtZW50YXRpb24gV0tJbmtQaWNrZXJWaWV3IHsKICAgICBSZXRhaW5Q
dHI8UEtJbmxpbmVJbmtQaWNrZXI+IF9pbmxpbmVQaWNrZXI7Ci0gICAgUmV0YWluUHRyPFdLRHJh
d2luZ1ZpZXc+IF9kcmF3aW5nVmlldzsKKyAgICBfX3dlYWsgV0tDb250ZW50VmlldyAqX2NvbnRl
bnRWaWV3OwogfQogCi0tIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhEcmF3aW5nVmlldzooV0tEcmF3
aW5nVmlldyAqKWRyYXdpbmdWaWV3CistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhDb250ZW50Vmll
dzooV0tDb250ZW50VmlldyAqKWNvbnRlbnRWaWV3CiB7CiAgICAgc2VsZiA9IFtzdXBlciBpbml0
V2l0aEZyYW1lOkNHUmVjdFplcm9dOwogICAgIGlmICghc2VsZikKICAgICAgICAgcmV0dXJuIG5p
bDsKIAogICAgIF9pbmxpbmVQaWNrZXIgPSBhZG9wdE5TKFtXZWJLaXQ6OmFsbG9jUEtJbmxpbmVJ
bmtQaWNrZXJJbnN0YW5jZSgpIGluaXRdKTsKLSAgICBbX2lubGluZVBpY2tlciBzZXRTZWxlY3Rl
ZEluazpbZHJhd2luZ1ZpZXcgY2FudmFzVmlld10uaW5rIGFuaW1hdGVkOk5PXTsKLSAgICBbX2lu
bGluZVBpY2tlciBhZGRUYXJnZXQ6c2VsZiBhY3Rpb246QHNlbGVjdG9yKGRpZFBpY2tJbmspIGZv
ckNvbnRyb2xFdmVudHM6VUlDb250cm9sRXZlbnRWYWx1ZUNoYW5nZWRdOwogICAgIFtfaW5saW5l
UGlja2VyIHNldERlbGVnYXRlOnNlbGZdOwogCi0gICAgX2RyYXdpbmdWaWV3ID0gZHJhd2luZ1Zp
ZXc7CisgICAgX2NvbnRlbnRWaWV3ID0gY29udGVudFZpZXc7CiAgICAgW3NlbGYgYWRkU3Vidmll
dzpfaW5saW5lUGlja2VyLmdldCgpXTsKIAogICAgIHJldHVybiBzZWxmOwpAQCAtNTksMTIgKzU3
LDEzIEBAIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aERyYXdpbmdWaWV3OihXS0RyYXdpbmdWaWV3
ICopZHJhd2luZ1ZpZXcKIAogLSAodm9pZClkaWRQaWNrSW5rCiB7Ci0gICAgW19kcmF3aW5nVmll
dyBjYW52YXNWaWV3XS5pbmsgPSBbX2lubGluZVBpY2tlciBzZWxlY3RlZElua107CisgICAgW19j
b250ZW50Vmlldy5fZHJhd2luZ0Nvb3JkaW5hdG9yIGRpZENoYW5nZUluazpbX2lubGluZVBpY2tl
ciBzZWxlY3RlZElua11dOwogfQogCiAtICh2b2lkKWlubGluZUlua1BpY2tlckRpZFRvZ2dsZVJ1
bGVyOihQS0lubGluZUlua1BpY2tlciAqKWlubGluZUlua1BpY2tlcgogewotICAgIFtfZHJhd2lu
Z1ZpZXcgY2FudmFzVmlld10ucnVsZXJFbmFibGVkID0gIVtfZHJhd2luZ1ZpZXcgY2FudmFzVmll
d10ucnVsZXJFbmFibGVkOworICAgIF9ydWxlckVuYWJsZWQgPSAhX3J1bGVyRW5hYmxlZDsKKyAg
ICBbX2NvbnRlbnRWaWV3Ll9kcmF3aW5nQ29vcmRpbmF0b3IgZGlkQ2hhbmdlUnVsZXJTdGF0ZTpf
cnVsZXJFbmFibGVkXTsKIH0KIAogLSAodm9pZClpbmxpbmVJbmtQaWNrZXI6KFBLSW5saW5lSW5r
UGlja2VyICopaW5saW5lSW5rUGlja2VyIGRpZFNlbGVjdFRvb2w6KFBLSW5rSWRlbnRpZmllcilp
ZGVudGlmZXIKQEAgLTk3LDcgKzk2LDE3IEBAIC0gKENHU2l6ZSlzaXplVGhhdEZpdHM6KENHU2l6
ZSlzaXplCiAKIC0gKFVJVmlld0NvbnRyb2xsZXIgKil2aWV3Q29udHJvbGxlckZvclBvcG92ZXJQ
cmVzZW50YXRpb25Gcm9tSW5saW5lSW5rUGlja2VyOihQS0lubGluZUlua1BpY2tlciAqKWlubGlu
ZUlua1BpY2tlcgogewotICAgIHJldHVybiBbVUlWaWV3Q29udHJvbGxlciBfdmlld0NvbnRyb2xs
ZXJGb3JGdWxsU2NyZWVuUHJlc2VudGF0aW9uRnJvbVZpZXc6X2RyYXdpbmdWaWV3LmdldCgpXTsK
KyAgICByZXR1cm4gW1VJVmlld0NvbnRyb2xsZXIgX3ZpZXdDb250cm9sbGVyRm9yRnVsbFNjcmVl
blByZXNlbnRhdGlvbkZyb21WaWV3Ol9jb250ZW50Vmlld107Cit9CisKKy0gKHZvaWQpc2V0SW5r
OihQS0luayAqKWluaworeworICAgIFtfaW5saW5lUGlja2VyIHNldFNlbGVjdGVkSW5rOmlua107
Cit9CisKKy0gKFBLSW5rICopaW5rCit7CisgICAgcmV0dXJuIFtfaW5saW5lUGlja2VyIHNlbGVj
dGVkSW5rXTsKIH0KIAogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKaW5kZXggOTJkZDY5NWUyNDZmNzJkMzllMjI4NDA3MTA4YzY0NDM5OTRm
MjE3Yy4uNDljNDBjYmExNzNkYjMzY2UzYjlkMzg0MWI5ZWFkYmUxNTk1NzM5MiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yNDg3LDYg
KzI0ODcsOCBAQAogCQkyRDFCNUQ1QzE4NTg2OUM4MDA2QzY1OTYgLyogVmlld0dlc3R1cmVDb250
cm9sbGVyTWVzc2FnZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gVmlld0dl
c3R1cmVDb250cm9sbGVyTWVzc2FnZXMuaDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYktpdDIv
Vmlld0dlc3R1cmVDb250cm9sbGVyTWVzc2FnZXMuaDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RV
Q1RTX0RJUjsgfTsKIAkJMkQxRTgyMjEyMTZGRkY1MDAwQTE1MjY1IC8qIFdLV2ViRXZlbnQuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV0tXZWJFdmVudC5oOyBwYXRoID0gaW9z
L1dLV2ViRXZlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkQxRTgyMjIyMTZG
RkY1MTAwQTE1MjY1IC8qIFdLV2ViRXZlbnQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IG5hbWUgPSBXS1dlYkV2ZW50Lm1tOyBwYXRoID0gaW9zL1dLV2ViRXZlbnQubW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTJEMjFBNDU4MjFERUQ0OUIwMDI0ODdFNyAvKiBX
S0RyYXdpbmdDb29yZGluYXRvci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFdLRHJhd2luZ0Nv
b3JkaW5hdG9yLm1tOyBwYXRoID0gaW9zL1dLRHJhd2luZ0Nvb3JkaW5hdG9yLm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkyRDIxQTQ1OTIxREVENDlCMDAyNDg3RTcgLyogV0tEcmF3
aW5nQ29vcmRpbmF0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV0tEcmF3aW5nQ29vcmRpbmF0b3IuaDsg
cGF0aCA9IGlvcy9XS0RyYXdpbmdDb29yZGluYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkyRDI4QTQ5NTFBRjk2NUExMDBGMTkwQzkgLyogV0tWaWV3TGF5b3V0U3RyYXRlZ3ku
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tWaWV3TGF5b3V0U3RyYXRlZ3ku
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkQyOEE0OTYxQUY5NjVBMTAwRjE5MEM5
IC8qIFdLVmlld0xheW91dFN0cmF0ZWd5Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBwYXRoID0gV0tWaWV3TGF5b3V0U3RyYXRlZ3kubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTJEMjhGM0UwMTg4NUNDQzEwMDRCOUVBRSAvKiBXZWJDaHJvbWVDbGllbnRJT1Mu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBXZWJDaHJvbWVDbGll
bnRJT1MubW07IHBhdGggPSBpb3MvV2ViQ2hyb21lQ2xpZW50SU9TLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtNTg0NCw2ICs1ODQ2LDggQEAKIAkJCQkwRkNCNEUzRDE4QkJFMDQ0
MDAwRkNGQzkgLyogV0tDb250ZW50Vmlldy5tbSAqLywKIAkJCQkwRkNCNEU2QTE4QkJGMjZBMDAw
RkNGQzkgLyogV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmggKi8sCiAJCQkJMEZDQjRFNkIxOEJC
RjI2QTAwMEZDRkM5IC8qIFdLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbSAqLywKKwkJCQkyRDIx
QTQ1OTIxREVENDlCMDAyNDg3RTcgLyogV0tEcmF3aW5nQ29vcmRpbmF0b3IuaCAqLywKKwkJCQky
RDIxQTQ1ODIxREVENDlCMDAyNDg3RTcgLyogV0tEcmF3aW5nQ29vcmRpbmF0b3IubW0gKi8sCiAJ
CQkJMkRDMThGQUIyMTg5MTA0ODAwMjVBODhEIC8qIFdLRHJhd2luZ1ZpZXcuaCAqLywKIAkJCQky
REMxOEZBQzIxODkxMDQ4MDAyNUE4OEQgLyogV0tEcmF3aW5nVmlldy5tbSAqLywKIAkJCQkwRkNC
NEUzRjE4QkJFMDQ0MDAwRkNGQzkgLyogV0tHZW9sb2NhdGlvblByb3ZpZGVySU9TLmggKi8sCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>