<?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>192839</bug_id>
          
          <creation_ts>2018-12-18 17:35:36 -0800</creation_ts>
          <short_desc>UI process crash when focusing an editable image</short_desc>
          <delta_ts>2018-12-19 15:37:11 -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>megan_gardner</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>1489156</commentid>
    <comment_count>0</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2018-12-18 17:35:36 -0800</bug_when>
    <thetext>UI process crash when focusing an editable image</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1489158</commentid>
    <comment_count>1</comment_count>
      <attachid>357641</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2018-12-18 17:36:20 -0800</bug_when>
    <thetext>Created attachment 357641
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1489159</commentid>
    <comment_count>2</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2018-12-18 17:36:21 -0800</bug_when>
    <thetext>&lt;rdar://problem/46786670&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1489184</commentid>
    <comment_count>3</comment_count>
      <attachid>357641</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-12-18 19:38:55 -0800</bug_when>
    <thetext>Comment on attachment 357641
Patch

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

r=me

This seems that it&apos;s not-trivial-but-also-not-terribly-difficult to write a simple test for this. Simulating a pencil-tap by triggering `_stylusSingleTapRecognized:` seems like a bit much, but maybe it&apos;s something that we&apos;ll want to be able to simulate in layout tests anyways. Or instead, we could just programmatically focus an editable image when tapping a button (or something similar), and then add a UIScriptController hook to fetch the bounds of the ink picker view.

&gt; Source/WebKit/UIProcess/ios/WKInkPickerView.h:34
&gt; +- (instancetype)initWithDrawingView:(WKDrawingView *)drawingView;

Maybe make this the designated initializer and make -initWithFrame:/-init unavailable?

&gt; Source/WebKit/UIProcess/ios/WKInkPickerView.mm:32
&gt; +

Are we putting all SoftLink headers in a different section now? Or should this be #import &quot;PencilKitSoftLink.h&quot; and then #import &quot;WKDrawingView.h&quot;?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1489385</commentid>
    <comment_count>4</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2018-12-19 11:46:30 -0800</bug_when>
    <thetext>(In reply to Wenson Hsieh from comment #3)
&gt; Comment on attachment 357641 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=357641&amp;action=review
&gt; 
&gt; r=me
&gt; 
&gt; This seems that it&apos;s not-trivial-but-also-not-terribly-difficult to write a
&gt; simple test for this. Simulating a pencil-tap by triggering
&gt; `_stylusSingleTapRecognized:` seems like a bit much, but maybe it&apos;s
&gt; something that we&apos;ll want to be able to simulate in layout tests anyways. Or
&gt; instead, we could just programmatically focus an editable image when tapping
&gt; a button (or something similar), and then add a UIScriptController hook to
&gt; fetch the bounds of the ink picker view.

I&apos;ll try to hack up a test! But actually we have tests that should have crashed... I&apos;ll see what&apos;s up.
 
&gt; &gt; Source/WebKit/UIProcess/ios/WKInkPickerView.h:34
&gt; &gt; +- (instancetype)initWithDrawingView:(WKDrawingView *)drawingView;
&gt; 
&gt; Maybe make this the designated initializer and make -initWithFrame:/-init
&gt; unavailable?

Sure!

&gt; &gt; Source/WebKit/UIProcess/ios/WKInkPickerView.mm:32
&gt; &gt; +
&gt; 
&gt; Are we putting all SoftLink headers in a different section now? Or should
&gt; this be #import &quot;PencilKitSoftLink.h&quot; and then #import &quot;WKDrawingView.h&quot;?

I... have no idea why that&apos;s there. Will move.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1489509</commentid>
    <comment_count>5</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2018-12-19 15:05:21 -0800</bug_when>
    <thetext>(In reply to Tim Horton from comment #4)
&gt; (In reply to Wenson Hsieh from comment #3)
&gt; &gt; &gt; Source/WebKit/UIProcess/ios/WKInkPickerView.mm:32
&gt; &gt; &gt; +
&gt; &gt; 
&gt; &gt; Are we putting all SoftLink headers in a different section now? Or should
&gt; &gt; this be #import &quot;PencilKitSoftLink.h&quot; and then #import &quot;WKDrawingView.h&quot;?
&gt; 
&gt; I... have no idea why that&apos;s there. Will move.

This is enforced by the style checker. I&apos;m sure there&apos;s a reason:

ERROR: Source/WebKit/UIProcess/ios/WKInkPickerView.mm:32:  *SoftLink.h header should be included after all other headers.  [build/include_order] [4]</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1489510</commentid>
    <comment_count>6</comment_count>
      <attachid>357732</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2018-12-19 15:06:27 -0800</bug_when>
    <thetext>Created attachment 357732
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1489511</commentid>
    <comment_count>7</comment_count>
      <attachid>357733</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2018-12-19 15:08:05 -0800</bug_when>
    <thetext>Created attachment 357733
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1489533</commentid>
    <comment_count>8</comment_count>
      <attachid>357733</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-12-19 15:37:10 -0800</bug_when>
    <thetext>Comment on attachment 357733
Patch

Clearing flags on attachment: 357733

Committed r239400: &lt;https://trac.webkit.org/changeset/239400&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1489534</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-12-19 15:37:11 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>357641</attachid>
            <date>2018-12-18 17:36:20 -0800</date>
            <delta_ts>2018-12-19 15:06:25 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-192839-20181218173619.patch</filename>
            <type>text/plain</type>
            <size>25538</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM5MjgyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGNjOWM0YWI0ZmE0YzdkY2E0
NTY5NjJiZmYyNTkxZjRjMDgyZDMxN2IuLjM2YTY5NGM4MGFmYTBhZTkwYWEzMTkxZjYzMGM1YjY5
MWYxYTcxYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzYgQEAKKzIwMTgtMTItMTggIFRpbSBIb3J0
b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisKKyAgICAgICAgVUkgcHJvY2VzcyBjcmFz
aCB3aGVuIGZvY3VzaW5nIGFuIGVkaXRhYmxlIGltYWdlCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTI4MzkKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVt
LzQ2Nzg2NjcwPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogU291cmNlc0NvY29hLnR4dDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVu
dFZpZXdJbnRlcmFjdGlvbi5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmll
d0ludGVyYWN0aW9uLm1tOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9yZXF1aXJlc0tleWJv
YXJkV2hlbkZpcnN0UmVzcG9uZGVyXSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgaW5wdXRW
aWV3XSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgcmVxdWlyZXNBY2Nlc3NvcnlWaWV3XSk6
CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgX3N0YXJ0QXNzaXN0aW5nTm9kZTp1c2VySXNJbnRl
cmFjdGluZzpibHVyUHJldmlvdXNOb2RlOmNoYW5naW5nQWN0aXZpdHlTdGF0ZTp1c2VyT2JqZWN0
Ol0pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9zdG9wQXNzaXN0aW5nTm9kZV0pOgorICAg
ICAgICAoLVtXS0NvbnRlbnRWaWV3IF9pbnN0YWxsSW5rUGlja2VyRm9yRHJhd2luZ1ZpZXdXaXRo
SUQ6XSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgX3VuaW5zdGFsbElua1BpY2tlcl0pOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tJbmtQaWNrZXJWaWV3Lmg6IFJlbmFtZWQgZnJvbSBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tJbmtQaWNrZXJDb250cm9sLmguCisgICAgICAg
ICogVUlQcm9jZXNzL2lvcy9XS0lua1BpY2tlclZpZXcubW06IFJlbmFtZWQgZnJvbSBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tJbmtQaWNrZXJDb250cm9sLm1tLgorICAgICAgICAoLVtX
S0lua1BpY2tlclZpZXcgaW5pdFdpdGhEcmF3aW5nVmlldzpdKToKKyAgICAgICAgKC1bV0tJbmtQ
aWNrZXJWaWV3IGRpZFBpY2tJbmtdKToKKyAgICAgICAgKC1bV0tJbmtQaWNrZXJWaWV3IGlubGlu
ZUlua1BpY2tlckRpZFRvZ2dsZVJ1bGVyOl0pOgorICAgICAgICAoLVtXS0lua1BpY2tlclZpZXcg
aW5saW5lSW5rUGlja2VyOmRpZFNlbGVjdFRvb2w6XSk6CisgICAgICAgICgtW1dLSW5rUGlja2Vy
VmlldyBpbmxpbmVJbmtQaWNrZXI6ZGlkU2VsZWN0Q29sb3I6XSk6CisgICAgICAgICgtW1dLSW5r
UGlja2VyVmlldyBpbmtQaWNrZXJTaXplXSk6CisgICAgICAgICgtW1dLSW5rUGlja2VyVmlldyBs
YXlvdXRTdWJ2aWV3c10pOgorICAgICAgICAoLVtXS0lua1BpY2tlclZpZXcgc2l6ZVRoYXRGaXRz
Ol0pOgorICAgICAgICAoLVtXS0lua1BpY2tlclZpZXcgdmlld0NvbnRyb2xsZXJGb3JQb3BvdmVy
UHJlc2VudGF0aW9uRnJvbUlubGluZUlua1BpY2tlcjpdKToKKyAgICAgICAgKiBXZWJLaXQueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgTWFrZSBXS0lua1BpY2tlclZpZXcgYSBX
S1dlYlZpZXcgc3VidmlldyBpbnN0ZWFkIG9mIGFuIGlucHV0Vmlldy4KKyAgICAgICAgQWxzbywg
ZG9uJ3QgZm9yY2UgdGhlIGtleWJvYXJkIHRvIGJlIHZpc2libGUgd2hlbiBhbiBlZGl0YWJsZSBp
bWFnZSBpcyBmb2N1c2VkLgorCiAyMDE4LTEyLTE3ICBaYW4gRG9iZXJzZWsgIDx6ZG9iZXJzZWtA
aWdhbGlhLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkIFdQRSBidWlsZCBmaXggYWZ0ZXIgcjIz
OTI3Ny4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dCBiL1NvdXJj
ZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAppbmRleCBmMWEwNTdhNDVkYjBmYTM1Y2UxMGRjZjQx
OTY5M2VmZTgxOGE2ZGEzLi5lZDY1YjhmYTczOWU4ZTE5NjBiM2RjZTZiODY0ZTUxNDVlMmY5MTgz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKKysrIGIvU291cmNl
L1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CkBAIC0zOTAsNyArMzkwLDcgQEAgVUlQcm9jZXNzL2lv
cy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0gQG5vLXVuaWZ5CiBVSVByb2Nlc3MvaW9zL1dL
RHJhd2luZ1ZpZXcubW0KIFVJUHJvY2Vzcy9pb3MvV0tHZW9sb2NhdGlvblByb3ZpZGVySU9TLm1t
CiBVSVByb2Nlc3MvaW9zL1dLR2VvbG9jYXRpb25Qcm92aWRlcklPU09iakNTZWN1cml0eU9yaWdp
bi5tbQotVUlQcm9jZXNzL2lvcy9XS0lua1BpY2tlckNvbnRyb2wubW0KK1VJUHJvY2Vzcy9pb3Mv
V0tJbmtQaWNrZXJWaWV3Lm1tCiBVSVByb2Nlc3MvaW9zL1dLSW5zcGVjdG9yTm9kZVNlYXJjaEdl
c3R1cmVSZWNvZ25pemVyLm1tCiBVSVByb2Nlc3MvaW9zL1dLS2V5Ym9hcmRTY3JvbGxpbmdBbmlt
YXRvci5tbQogVUlQcm9jZXNzL2lvcy9XS0xlZ2FjeVBERlZpZXcubW0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24uaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24uaAppbmRl
eCBlNzk0ZTNjNjMxZGRlYjUzYTFhNDY5Yjc5MDk0MjliNGNiYTNiYzYxLi41ZGQxOGYwOGJmNjEw
NjE1ZDA2NjRlM2VkMzFhNTc2NzI5ZDAwYjFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5oCkBAIC05Niw2ICs5Niw3
IEBAIGNsYXNzIFdlYlBhZ2VQcm94eTsKIEBjbGFzcyBXS0ZvY3VzZWRGb3JtQ29udHJvbFZpZXc7
CiBAY2xhc3MgV0tGb3JtSW5wdXRDb250cm9sOwogQGNsYXNzIFdLRm9ybUlucHV0U2Vzc2lvbjsK
K0BjbGFzcyBXS0lua1BpY2tlclZpZXc7CiBAY2xhc3MgV0tJbnNwZWN0b3JOb2RlU2VhcmNoR2Vz
dHVyZVJlY29nbml6ZXI7CiAKIHR5cGVkZWYgdm9pZCAoXlVJV0tBdXRvY29ycmVjdGlvbkNvbXBs
ZXRpb25IYW5kbGVyKShVSVdLQXV0b2NvcnJlY3Rpb25SZWN0cyAqcmVjdHNGb3JJbnB1dCk7CkBA
IC0yODQsNiArMjg1LDEwIEBAIHN0cnVjdCBXS0F1dG9Db3JyZWN0aW9uRGF0YSB7CiAgICAgUmV0
YWluUHRyPE5TQXJyYXk8VUlUZXh0U3VnZ2VzdGlvbiAqPj4gX2RhdGFMaXN0VGV4dFN1Z2dlc3Rp
b25zOwogI2VuZGlmCiAKKyNpZiBIQVZFKFBFTkNJTEtJVCkKKyAgICBSZXRhaW5QdHI8V0tJbmtQ
aWNrZXJWaWV3PiBfaW5rUGlja2VyOworI2VuZGlmCisKICAgICBCT09MIF9pc0VkaXRhYmxlOwog
ICAgIEJPT0wgX3Nob3dpbmdUZXh0U3R5bGVPcHRpb25zOwogICAgIEJPT0wgX2hhc1ZhbGlkUG9z
aXRpb25JbmZvcm1hdGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lv
cy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9p
b3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCmluZGV4IDAyNmYxZjdhODc2MmI5ODk0YTMz
OGMyYzQ4NzhmZmEzODQ2MmQ4NzAuLjA4ZWI0ODU1NjRkNDA1MWRiMTE0M2Y5MmUzNTYyZWZhZDQy
YzdiOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRW
aWV3SW50ZXJhY3Rpb24ubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29u
dGVudFZpZXdJbnRlcmFjdGlvbi5tbQpAQCAtNDcsNyArNDcsNyBAQAogI2ltcG9ydCAiV0tGb3Jt
SW5wdXRDb250cm9sLmgiCiAjaW1wb3J0ICJXS0Zvcm1TZWxlY3RDb250cm9sLmgiCiAjaW1wb3J0
ICJXS0ltYWdlUHJldmlld1ZpZXdDb250cm9sbGVyLmgiCi0jaW1wb3J0ICJXS0lua1BpY2tlckNv
bnRyb2wuaCIKKyNpbXBvcnQgIldLSW5rUGlja2VyVmlldy5oIgogI2ltcG9ydCAiV0tJbnNwZWN0
b3JOb2RlU2VhcmNoR2VzdHVyZVJlY29nbml6ZXIuaCIKICNpbXBvcnQgIldLTlNVUkxFeHRyYXMu
aCIKICNpbXBvcnQgIldLUHJldmlld0FjdGlvbkl0ZW1JZGVudGlmaWVycy5oIgpAQCAtMTM2MCw2
ICsxMzYwLDcgQEAgLSAoQk9PTClfcmVxdWlyZXNLZXlib2FyZFdoZW5GaXJzdFJlc3BvbmRlcgog
ICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgYWRkIHRoZSBsb2dpYyB0byBoYW5kbGUga2V5Ym9hcmQg
dmlzaWJpbGl0eSBkdXJpbmcgZm9jdXMgcmVkaXJlY3RzLgogICAgIHN3aXRjaCAoX2Fzc2lzdGVk
Tm9kZUluZm9ybWF0aW9uLmVsZW1lbnRUeXBlKSB7CiAgICAgY2FzZSBXZWJLaXQ6OklucHV0VHlw
ZTo6Tm9uZToKKyAgICBjYXNlIFdlYktpdDo6SW5wdXRUeXBlOjpEcmF3aW5nOgogICAgICAgICBy
ZXR1cm4gTk87CiAgICAgY2FzZSBXZWJLaXQ6OklucHV0VHlwZTo6U2VsZWN0OgogI2lmIEVOQUJM
RShJTlBVVF9UWVBFX0NPTE9SKQpAQCAtMTM3MCw4ICsxMzcxLDYgQEAgLSAoQk9PTClfcmVxdWly
ZXNLZXlib2FyZFdoZW5GaXJzdFJlc3BvbmRlcgogICAgIGNhc2UgV2ViS2l0OjpJbnB1dFR5cGU6
OkRhdGVUaW1lTG9jYWw6CiAgICAgY2FzZSBXZWJLaXQ6OklucHV0VHlwZTo6VGltZToKICAgICAg
ICAgcmV0dXJuICFjdXJyZW50VXNlckludGVyZmFjZUlkaW9tSXNQYWQoKTsKLSAgICBjYXNlIFdl
YktpdDo6SW5wdXRUeXBlOjpEcmF3aW5nOgotICAgICAgICByZXR1cm4gWUVTOwogICAgIGRlZmF1
bHQ6CiAgICAgICAgIHJldHVybiAhX2Fzc2lzdGVkTm9kZUluZm9ybWF0aW9uLmlzUmVhZE9ubHk7
CiAgICAgfQpAQCAtMTQyMCwxNCArMTQxOSw2IEBAIC0gKFVJVmlldyAqKWlucHV0VmlldwogICAg
ICAgICBjYXNlIFdlYktpdDo6SW5wdXRUeXBlOjpDb2xvcjoKICAgICAgICAgICAgIF9pbnB1dFBl
cmlwaGVyYWwgPSBhZG9wdE5TKFtbV0tGb3JtQ29sb3JDb250cm9sIGFsbG9jXSBpbml0V2l0aFZp
ZXc6c2VsZl0pOwogICAgICAgICAgICAgYnJlYWs7Ci0jZW5kaWYKLSAgICAgICAgY2FzZSBXZWJL
aXQ6OklucHV0VHlwZTo6RHJhd2luZzoKLSNpZiBIQVZFKFBFTkNJTEtJVCkKLSAgICAgICAgICAg
IF9pbnB1dFBlcmlwaGVyYWwgPSBhZG9wdE5TKFtbV0tJbmtQaWNrZXJDb250cm9sIGFsbG9jXSBp
bml0V2l0aERyYXdpbmdWaWV3Ol9wYWdlLT5lZGl0YWJsZUltYWdlQ29udHJvbGxlcigpLmVkaXRh
YmxlSW1hZ2UoX2Fzc2lzdGVkTm9kZUluZm9ybWF0aW9uLmVtYmVkZGVkVmlld0lEKS0+ZHJhd2lu
Z1ZpZXcuZ2V0KCldKTsKLSAgICAgICAgICAgIGJyZWFrOwotI2Vsc2UKLSAgICAgICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgcmV0dXJuIFtbVUlWaWV3IG5ld10gYXV0
b3JlbGVhc2VdOwogI2VuZGlmCiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBfaW5wdXRQ
ZXJpcGhlcmFsID0gYWRvcHROUyhbW1dLRm9ybUlucHV0Q29udHJvbCBhbGxvY10gaW5pdFdpdGhW
aWV3OnNlbGZdKTsKQEAgLTIxODksNiArMjE4MCw3IEBAIC0gKEJPT0wpcmVxdWlyZXNBY2Nlc3Nv
cnlWaWV3CiAKICAgICBzd2l0Y2ggKF9hc3Npc3RlZE5vZGVJbmZvcm1hdGlvbi5lbGVtZW50VHlw
ZSkgewogICAgIGNhc2UgV2ViS2l0OjpJbnB1dFR5cGU6Ok5vbmU6CisgICAgY2FzZSBXZWJLaXQ6
OklucHV0VHlwZTo6RHJhd2luZzoKICAgICAgICAgcmV0dXJuIE5POwogICAgIGNhc2UgV2ViS2l0
OjpJbnB1dFR5cGU6OlRleHQ6CiAgICAgY2FzZSBXZWJLaXQ6OklucHV0VHlwZTo6UGFzc3dvcmQ6
CkBAIC0yMjExLDggKzIyMDMsNiBAQCAtIChCT09MKXJlcXVpcmVzQWNjZXNzb3J5VmlldwogICAg
IGNhc2UgV2ViS2l0OjpJbnB1dFR5cGU6OkNvbG9yOgogI2VuZGlmCiAgICAgICAgIHJldHVybiAh
Y3VycmVudFVzZXJJbnRlcmZhY2VJZGlvbUlzUGFkKCk7Ci0gICAgY2FzZSBXZWJLaXQ6OklucHV0
VHlwZTo6RHJhd2luZzoKLSAgICAgICAgcmV0dXJuIFlFUzsKICAgICB9CiB9CiAKQEAgLTQ0NDIs
NiArNDQzMiwxMSBAQCAtICh2b2lkKV9zdGFydEFzc2lzdGluZ05vZGU6KGNvbnN0IFdlYktpdDo6
QXNzaXN0ZWROb2RlSW5mb3JtYXRpb24mKWluZm9ybWF0aW9uCiAgICAgaWYgKGJsdXJQcmV2aW91
c05vZGUpCiAgICAgICAgIFtzZWxmIF9zdG9wQXNzaXN0aW5nTm9kZV07CiAKKyNpZiBIQVZFKFBF
TkNJTEtJVCkKKyAgICBpZiAoaW5mb3JtYXRpb24uZWxlbWVudFR5cGUgPT0gV2ViS2l0OjpJbnB1
dFR5cGU6OkRyYXdpbmcpCisgICAgICAgIFtzZWxmIF9pbnN0YWxsSW5rUGlja2VyRm9yRHJhd2lu
Z1ZpZXdXaXRoSUQ6aW5mb3JtYXRpb24uZW1iZWRkZWRWaWV3SURdOworI2VuZGlmCisKICAgICBp
ZiAoIXNob3VsZFNob3dLZXlib2FyZCkKICAgICAgICAgcmV0dXJuOwogCkBAIC00NDkyLDYgKzQ0
ODcsNyBAQCAtICh2b2lkKV9zdGFydEFzc2lzdGluZ05vZGU6KGNvbnN0IFdlYktpdDo6QXNzaXN0
ZWROb2RlSW5mb3JtYXRpb24mKWluZm9ybWF0aW9uCiAgICAgY2FzZSBXZWJLaXQ6OklucHV0VHlw
ZTo6VGltZToKICAgICBjYXNlIFdlYktpdDo6SW5wdXRUeXBlOjpNb250aDoKICAgICBjYXNlIFdl
YktpdDo6SW5wdXRUeXBlOjpEYXRlOgorICAgIGNhc2UgV2ViS2l0OjpJbnB1dFR5cGU6OkRyYXdp
bmc6CiAjaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCiAgICAgY2FzZSBXZWJLaXQ6OklucHV0
VHlwZTo6Q29sb3I6CiAjZW5kaWYKQEAgLTQ1MjUsNiArNDUyMSwxMSBAQCAtICh2b2lkKV9zdG9w
QXNzaXN0aW5nTm9kZQogewogICAgIFNldEZvclNjb3BlPEJPT0w+IGlzQmx1cnJpbmdGb2N1c2Vk
Tm9kZUZvclNjb3BlIHsgX2lzQmx1cnJpbmdGb2N1c2VkTm9kZSwgWUVTIH07CiAKKyNpZiBIQVZF
KFBFTkNJTEtJVCkKKyAgICBpZiAoX2lua1BpY2tlcikKKyAgICAgICAgW3NlbGYgX3VuaW5zdGFs
bElua1BpY2tlcl07CisjZW5kaWYKKwogICAgIFtfZm9ybUlucHV0U2Vzc2lvbiBpbnZhbGlkYXRl
XTsKICAgICBfZm9ybUlucHV0U2Vzc2lvbiA9IG5pbDsKIApAQCAtNjIwNSw2ICs2MjA2LDMwIEBA
IC0gKHZvaWQpX2hvdmVyR2VzdHVyZVJlY29nbml6ZXJDaGFuZ2VkOihVSUdlc3R1cmVSZWNvZ25p
emVyICopZ2VzdHVyZVJlY29nbml6ZXIKIH0KICNlbmRpZgogCisjaWYgSEFWRShQRU5DSUxLSVQp
CistICh2b2lkKV9pbnN0YWxsSW5rUGlja2VyRm9yRHJhd2luZ1ZpZXdXaXRoSUQ6KFdlYkNvcmU6
OkdyYXBoaWNzTGF5ZXI6OkVtYmVkZGVkVmlld0lEKWVtYmVkZGVkVmlld0lECit7CisgICAgX2lu
a1BpY2tlciA9IGFkb3B0TlMoW1tXS0lua1BpY2tlclZpZXcgYWxsb2NdIGluaXRXaXRoRHJhd2lu
Z1ZpZXc6X3BhZ2UtPmVkaXRhYmxlSW1hZ2VDb250cm9sbGVyKCkuZWRpdGFibGVJbWFnZShlbWJl
ZGRlZFZpZXdJRCktPmRyYXdpbmdWaWV3LmdldCgpXSk7CisgICAgW19pbmtQaWNrZXIgc2l6ZVRv
Rml0XTsKKyAgICBbX2lua1BpY2tlciBzZXRUcmFuc2xhdGVzQXV0b3Jlc2l6aW5nTWFza0ludG9D
b25zdHJhaW50czpOT107CisgICAgW193ZWJWaWV3IGFkZFN1YnZpZXc6X2lua1BpY2tlci5nZXQo
KV07CisKKyAgICBbTlNMYXlvdXRDb25zdHJhaW50IGFjdGl2YXRlQ29uc3RyYWludHM6QFsKKyAg
ICAgICAgW1tfaW5rUGlja2VyIGhlaWdodEFuY2hvcl0gY29uc3RyYWludEVxdWFsVG9Db25zdGFu
dDpbX2lua1BpY2tlciBmcmFtZV0uc2l6ZS5oZWlnaHRdLAorICAgICAgICBbW19pbmtQaWNrZXIg
Ym90dG9tQW5jaG9yXSBjb25zdHJhaW50RXF1YWxUb0FuY2hvcjpfd2ViVmlldy5zYWZlQXJlYUxh
eW91dEd1aWRlLmJvdHRvbUFuY2hvcl0sCisgICAgICAgIFtbX2lua1BpY2tlciBsZWZ0QW5jaG9y
XSBjb25zdHJhaW50RXF1YWxUb0FuY2hvcjpfd2ViVmlldy5zYWZlQXJlYUxheW91dEd1aWRlLmxl
ZnRBbmNob3JdLAorICAgICAgICBbW19pbmtQaWNrZXIgcmlnaHRBbmNob3JdIGNvbnN0cmFpbnRF
cXVhbFRvQW5jaG9yOl93ZWJWaWV3LnNhZmVBcmVhTGF5b3V0R3VpZGUucmlnaHRBbmNob3JdLAor
ICAgIF1dOworfQorCistICh2b2lkKV91bmluc3RhbGxJbmtQaWNrZXIKK3sKKyAgICBbX2lua1Bp
Y2tlciByZW1vdmVGcm9tU3VwZXJ2aWV3XTsKKyAgICBfaW5rUGlja2VyID0gbmlsOworfQorCisj
ZW5kaWYgLy8gSEFWRShQRU5DSUxLSVQpCisKIEBlbmQKIAogQGltcGxlbWVudGF0aW9uIFdLQ29u
dGVudFZpZXcgKFdLVGVzdGluZykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2lvcy9XS0lua1BpY2tlckNvbnRyb2wuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9X
S0lua1BpY2tlckNvbnRyb2wuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDhjZGFi
ZmFjM2U0ODY5NmVkODk3YTNhYmZlMWZlMDY1NDQ4NjM3MC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tJ
bmtQaWNrZXJDb250cm9sLmgKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
LSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
Ci0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0g
Ki8KLQotI2lmIEhBVkUoUEVOQ0lMS0lUKQotCi0jaW1wb3J0ICJXS0Zvcm1QZXJpcGhlcmFsLmgi
Ci0KLU9CSkNfQ0xBU1MgV0tEcmF3aW5nVmlldzsKLQotQGludGVyZmFjZSBXS0lua1BpY2tlckNv
bnRyb2wgOiBOU09iamVjdCA8V0tGb3JtUGVyaXBoZXJhbD4KLQotLSAoaW5zdGFuY2V0eXBlKWlu
aXRXaXRoRHJhd2luZ1ZpZXc6KFdLRHJhd2luZ1ZpZXcgKilkcmF3aW5nVmlldzsKLQotQGVuZAot
Ci0KLSNlbmRpZiAvLyBIQVZFKFBFTkNJTEtJVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2lvcy9XS0lua1BpY2tlckNvbnRyb2wubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9pb3MvV0tJbmtQaWNrZXJDb250cm9sLm1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCA1YmQwYWZkYTZiM2E0MzU0YWVjM2U5NTNlYTZhNjllYjQ5NzJjNzRlLi4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2lvcy9XS0lua1BpY2tlckNvbnRyb2wubW0KKysrIC9kZXYvbnVsbApAQCAtMSwxNDEgKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0g
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0KLSNpbXBvcnQgImNvbmZpZy5oIgotI2ltcG9ydCAiV0tJbmtQaWNr
ZXJDb250cm9sLmgiCi0KLSNpZiBIQVZFKFBFTkNJTEtJVCkKLQotI2ltcG9ydCAiV0tEcmF3aW5n
Vmlldy5oIgotCi0jaW1wb3J0ICJQZW5jaWxLaXRTb2Z0TGluay5oIgotCi1AaW50ZXJmYWNlIFdL
SW5rUGlja2VyVmlldyA6IFVJVmlldyA8UEtJbmxpbmVJbmtQaWNrZXJEZWxlZ2F0ZT4KLUBlbmQK
LQotQGltcGxlbWVudGF0aW9uIFdLSW5rUGlja2VyVmlldyB7Ci0gICAgUmV0YWluUHRyPFBLSW5s
aW5lSW5rUGlja2VyPiBfaW5saW5lUGlja2VyOwotICAgIFJldGFpblB0cjxXS0RyYXdpbmdWaWV3
PiBfZHJhd2luZ1ZpZXc7Ci19Ci0KLS0gKGluc3RhbmNldHlwZSlpbml0V2l0aEZyYW1lOihDR1Jl
Y3QpZnJhbWUgZHJhd2luZ1ZpZXc6KFdLRHJhd2luZ1ZpZXcgKilkcmF3aW5nVmlldwotewotICAg
IHNlbGYgPSBbc3VwZXIgaW5pdFdpdGhGcmFtZTpmcmFtZV07Ci0gICAgaWYgKCFzZWxmKQotICAg
ICAgICByZXR1cm4gbmlsOwotCi0gICAgX2lubGluZVBpY2tlciA9IGFkb3B0TlMoW1dlYktpdDo6
YWxsb2NQS0lubGluZUlua1BpY2tlckluc3RhbmNlKCkgaW5pdF0pOwotICAgIFtfaW5saW5lUGlj
a2VyIHNldFNlbGVjdGVkSW5rOltkcmF3aW5nVmlldyBjYW52YXNWaWV3XS5pbmsgYW5pbWF0ZWQ6
Tk9dOwotICAgIFtfaW5saW5lUGlja2VyIGFkZFRhcmdldDpzZWxmIGFjdGlvbjpAc2VsZWN0b3Io
ZGlkUGlja0luaykgZm9yQ29udHJvbEV2ZW50czpVSUNvbnRyb2xFdmVudFZhbHVlQ2hhbmdlZF07
Ci0gICAgW19pbmxpbmVQaWNrZXIgc2V0RGVsZWdhdGU6c2VsZl07Ci0KLSAgICBfZHJhd2luZ1Zp
ZXcgPSBkcmF3aW5nVmlldzsKLSAgICBbc2VsZiBhZGRTdWJ2aWV3Ol9pbmxpbmVQaWNrZXIuZ2V0
KCldOwotCi0gICAgcmV0dXJuIHNlbGY7Ci19Ci0KLS0gKHZvaWQpZGlkUGlja0luawotewotICAg
IFtfZHJhd2luZ1ZpZXcgY2FudmFzVmlld10uaW5rID0gW19pbmxpbmVQaWNrZXIgc2VsZWN0ZWRJ
bmtdOwotfQotCi0tICh2b2lkKWlubGluZUlua1BpY2tlckRpZFRvZ2dsZVJ1bGVyOihQS0lubGlu
ZUlua1BpY2tlciAqKWlubGluZUlua1BpY2tlcgotewotICAgIFtfZHJhd2luZ1ZpZXcgY2FudmFz
Vmlld10ucnVsZXJFbmFibGVkID0gIVtfZHJhd2luZ1ZpZXcgY2FudmFzVmlld10ucnVsZXJFbmFi
bGVkOwotfQotCi0tICh2b2lkKWlubGluZUlua1BpY2tlcjooUEtJbmxpbmVJbmtQaWNrZXIgKilp
bmxpbmVJbmtQaWNrZXIgZGlkU2VsZWN0VG9vbDooUEtJbmtJZGVudGlmaWVyKWlkZW50aWZlcgot
ewotICAgIFtzZWxmIGRpZFBpY2tJbmtdOwotfQotCi0tICh2b2lkKWlubGluZUlua1BpY2tlcjoo
UEtJbmxpbmVJbmtQaWNrZXIgKilpbmxpbmVJbmtQaWNrZXIgZGlkU2VsZWN0Q29sb3I6KFVJQ29s
b3IgKiljb2xvcgotewotICAgIFtzZWxmIGRpZFBpY2tJbmtdOwotfQotCi0tIChDR1NpemUpaW5r
UGlja2VyU2l6ZQotewotICAgIENHU2l6ZSBrZXlib2FyZFNpemUgPSBbVUlLZXlib2FyZCBkZWZh
dWx0U2l6ZUZvckludGVyZmFjZU9yaWVudGF0aW9uOltVSUFwcCBpbnRlcmZhY2VPcmllbnRhdGlv
bl1dOwotICAgIHJldHVybiBbX2lubGluZVBpY2tlciBzaXplVGhhdEZpdHM6a2V5Ym9hcmRTaXpl
XTsKLX0KLQotLSAodm9pZClsYXlvdXRTdWJ2aWV3cwotewotICAgIENHU2l6ZSBwaWNrZXJTaXpl
ID0gc2VsZi5pbmtQaWNrZXJTaXplOwotICAgIFtfaW5saW5lUGlja2VyIHNldEZyYW1lOkNHUmVj
dE1ha2UoQ0dSZWN0R2V0TWlkWChzZWxmLmJvdW5kcykgLSAocGlja2VyU2l6ZS53aWR0aCAvIDIp
LCAwLCBwaWNrZXJTaXplLndpZHRoLCBwaWNrZXJTaXplLmhlaWdodCldOwotfQotCi0tIChDR1Np
emUpc2l6ZVRoYXRGaXRzOihDR1NpemUpc2l6ZQotewotICAgIENHU2l6ZSBrZXlib2FyZFNpemUg
PSBbVUlLZXlib2FyZCBkZWZhdWx0U2l6ZUZvckludGVyZmFjZU9yaWVudGF0aW9uOltVSUFwcCBp
bnRlcmZhY2VPcmllbnRhdGlvbl1dOwotICAgIHJldHVybiBDR1NpemVNYWtlKGtleWJvYXJkU2l6
ZS53aWR0aCwgc2VsZi5pbmtQaWNrZXJTaXplLmhlaWdodCk7Ci19Ci0KLS0gKFVJVmlld0NvbnRy
b2xsZXIgKil2aWV3Q29udHJvbGxlckZvclBvcG92ZXJQcmVzZW50YXRpb25Gcm9tSW5saW5lSW5r
UGlja2VyOihQS0lubGluZUlua1BpY2tlciAqKWlubGluZUlua1BpY2tlcgotewotICAgIHJldHVy
biBbVUlWaWV3Q29udHJvbGxlciBfdmlld0NvbnRyb2xsZXJGb3JGdWxsU2NyZWVuUHJlc2VudGF0
aW9uRnJvbVZpZXc6X2RyYXdpbmdWaWV3LmdldCgpXTsKLX0KLQotQGVuZAotCi1AaW1wbGVtZW50
YXRpb24gV0tJbmtQaWNrZXJDb250cm9sIHsKLSAgICBSZXRhaW5QdHI8V0tJbmtQaWNrZXJWaWV3
PiBfcGlja2VyOwotICAgIFJldGFpblB0cjxXS0RyYXdpbmdWaWV3PiBfZHJhd2luZ1ZpZXc7Ci19
Ci0KLS0gKGluc3RhbmNldHlwZSlpbml0V2l0aERyYXdpbmdWaWV3OihXS0RyYXdpbmdWaWV3ICop
ZHJhd2luZ1ZpZXcKLXsKLSAgICBzZWxmID0gW3N1cGVyIGluaXRdOwotICAgIGlmICghc2VsZikK
LSAgICAgICAgcmV0dXJuIG5pbDsKLQotICAgIF9kcmF3aW5nVmlldyA9IGRyYXdpbmdWaWV3Owot
Ci0gICAgcmV0dXJuIHNlbGY7Ci19Ci0KLS0gKHZvaWQpYmVnaW5FZGl0aW5nCi17Ci0KLX0KLQot
LSAodm9pZCllbmRFZGl0aW5nCi17Ci0KLX0KLQotLSAoVUlWaWV3ICopYXNzaXN0YW50Vmlldwot
ewotICAgIGlmICghX3BpY2tlcikKLSAgICAgICAgX3BpY2tlciA9IGFkb3B0TlMoW1tXS0lua1Bp
Y2tlclZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0WmVybyBkcmF3aW5nVmlldzpfZHJh
d2luZ1ZpZXcuZ2V0KCldKTsKLSAgICBbX3BpY2tlciBzaXplVG9GaXRdOwotICAgIHJldHVybiBf
cGlja2VyLmdldCgpOwotfQotCi1AZW5kCi0KLSNlbmRpZiAvLyBIQVZFKFBFTkNJTEtJVCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0lua1BpY2tlclZpZXcuaCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0lua1BpY2tlclZpZXcuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5jODQzNjA3NjY0MTUyZjRmMGNlZmJkYzNmOGE3ZTdjNmQ3YmEyM2E1Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLSW5rUGlja2VyVmlldy5oCkBAIC0w
LDAgKzEsMzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWYgSEFWRShQRU5DSUxLSVQpCisKKyNpbXBvcnQg
PFVJS2l0L1VJS2l0Lmg+CisKK09CSkNfQ0xBU1MgV0tEcmF3aW5nVmlldzsKKworQGludGVyZmFj
ZSBXS0lua1BpY2tlclZpZXcgOiBVSVZpZXcKKworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRHJh
d2luZ1ZpZXc6KFdLRHJhd2luZ1ZpZXcgKilkcmF3aW5nVmlldzsKKworQGVuZAorCisjZW5kaWYg
Ly8gSEFWRShQRU5DSUxLSVQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9p
b3MvV0tJbmtQaWNrZXJWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLSW5r
UGlja2VyVmlldy5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45YTM3NDM4ZTU4NzI1ODhkNDQwMDUwYzRiZjRiYjgx
ZGQ0YWZjYTgzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9z
L1dLSW5rUGlja2VyVmlldy5tbQpAQCAtMCwwICsxLDEwNSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBv
cnQgImNvbmZpZy5oIgorI2ltcG9ydCAiV0tJbmtQaWNrZXJWaWV3LmgiCisKKyNpZiBIQVZFKFBF
TkNJTEtJVCkKKworI2ltcG9ydCAiV0tEcmF3aW5nVmlldy5oIgorCisjaW1wb3J0ICJQZW5jaWxL
aXRTb2Z0TGluay5oIgorCitAaW50ZXJmYWNlIFdLSW5rUGlja2VyVmlldyAoKSA8UEtJbmxpbmVJ
bmtQaWNrZXJEZWxlZ2F0ZT4KK0BlbmQKKworQGltcGxlbWVudGF0aW9uIFdLSW5rUGlja2VyVmll
dyB7CisgICAgUmV0YWluUHRyPFBLSW5saW5lSW5rUGlja2VyPiBfaW5saW5lUGlja2VyOworICAg
IFJldGFpblB0cjxXS0RyYXdpbmdWaWV3PiBfZHJhd2luZ1ZpZXc7Cit9CisKKy0gKGluc3RhbmNl
dHlwZSlpbml0V2l0aERyYXdpbmdWaWV3OihXS0RyYXdpbmdWaWV3ICopZHJhd2luZ1ZpZXcKK3sK
KyAgICBzZWxmID0gW3N1cGVyIGluaXRXaXRoRnJhbWU6Q0dSZWN0WmVyb107CisgICAgaWYgKCFz
ZWxmKQorICAgICAgICByZXR1cm4gbmlsOworCisgICAgX2lubGluZVBpY2tlciA9IGFkb3B0TlMo
W1dlYktpdDo6YWxsb2NQS0lubGluZUlua1BpY2tlckluc3RhbmNlKCkgaW5pdF0pOworICAgIFtf
aW5saW5lUGlja2VyIHNldFNlbGVjdGVkSW5rOltkcmF3aW5nVmlldyBjYW52YXNWaWV3XS5pbmsg
YW5pbWF0ZWQ6Tk9dOworICAgIFtfaW5saW5lUGlja2VyIGFkZFRhcmdldDpzZWxmIGFjdGlvbjpA
c2VsZWN0b3IoZGlkUGlja0luaykgZm9yQ29udHJvbEV2ZW50czpVSUNvbnRyb2xFdmVudFZhbHVl
Q2hhbmdlZF07CisgICAgW19pbmxpbmVQaWNrZXIgc2V0RGVsZWdhdGU6c2VsZl07CisKKyAgICBf
ZHJhd2luZ1ZpZXcgPSBkcmF3aW5nVmlldzsKKyAgICBbc2VsZiBhZGRTdWJ2aWV3Ol9pbmxpbmVQ
aWNrZXIuZ2V0KCldOworCisgICAgcmV0dXJuIHNlbGY7Cit9CisKKy0gKHZvaWQpZGlkUGlja0lu
aworeworICAgIFtfZHJhd2luZ1ZpZXcgY2FudmFzVmlld10uaW5rID0gW19pbmxpbmVQaWNrZXIg
c2VsZWN0ZWRJbmtdOworfQorCistICh2b2lkKWlubGluZUlua1BpY2tlckRpZFRvZ2dsZVJ1bGVy
OihQS0lubGluZUlua1BpY2tlciAqKWlubGluZUlua1BpY2tlcgoreworICAgIFtfZHJhd2luZ1Zp
ZXcgY2FudmFzVmlld10ucnVsZXJFbmFibGVkID0gIVtfZHJhd2luZ1ZpZXcgY2FudmFzVmlld10u
cnVsZXJFbmFibGVkOworfQorCistICh2b2lkKWlubGluZUlua1BpY2tlcjooUEtJbmxpbmVJbmtQ
aWNrZXIgKilpbmxpbmVJbmtQaWNrZXIgZGlkU2VsZWN0VG9vbDooUEtJbmtJZGVudGlmaWVyKWlk
ZW50aWZlcgoreworICAgIFtzZWxmIGRpZFBpY2tJbmtdOworfQorCistICh2b2lkKWlubGluZUlu
a1BpY2tlcjooUEtJbmxpbmVJbmtQaWNrZXIgKilpbmxpbmVJbmtQaWNrZXIgZGlkU2VsZWN0Q29s
b3I6KFVJQ29sb3IgKiljb2xvcgoreworICAgIFtzZWxmIGRpZFBpY2tJbmtdOworfQorCistIChD
R1NpemUpaW5rUGlja2VyU2l6ZQoreworICAgIENHU2l6ZSBrZXlib2FyZFNpemUgPSBbVUlLZXli
b2FyZCBkZWZhdWx0U2l6ZUZvckludGVyZmFjZU9yaWVudGF0aW9uOltVSUFwcCBpbnRlcmZhY2VP
cmllbnRhdGlvbl1dOworICAgIHJldHVybiBbX2lubGluZVBpY2tlciBzaXplVGhhdEZpdHM6a2V5
Ym9hcmRTaXplXTsKK30KKworLSAodm9pZClsYXlvdXRTdWJ2aWV3cworeworICAgIENHU2l6ZSBw
aWNrZXJTaXplID0gc2VsZi5pbmtQaWNrZXJTaXplOworICAgIFtfaW5saW5lUGlja2VyIHNldEZy
YW1lOkNHUmVjdE1ha2UoQ0dSZWN0R2V0TWlkWChzZWxmLmJvdW5kcykgLSAocGlja2VyU2l6ZS53
aWR0aCAvIDIpLCAwLCBwaWNrZXJTaXplLndpZHRoLCBwaWNrZXJTaXplLmhlaWdodCldOworfQor
CistIChDR1NpemUpc2l6ZVRoYXRGaXRzOihDR1NpemUpc2l6ZQoreworICAgIENHU2l6ZSBrZXli
b2FyZFNpemUgPSBbVUlLZXlib2FyZCBkZWZhdWx0U2l6ZUZvckludGVyZmFjZU9yaWVudGF0aW9u
OltVSUFwcCBpbnRlcmZhY2VPcmllbnRhdGlvbl1dOworICAgIHJldHVybiBDR1NpemVNYWtlKGtl
eWJvYXJkU2l6ZS53aWR0aCwgc2VsZi5pbmtQaWNrZXJTaXplLmhlaWdodCk7Cit9CisKKy0gKFVJ
Vmlld0NvbnRyb2xsZXIgKil2aWV3Q29udHJvbGxlckZvclBvcG92ZXJQcmVzZW50YXRpb25Gcm9t
SW5saW5lSW5rUGlja2VyOihQS0lubGluZUlua1BpY2tlciAqKWlubGluZUlua1BpY2tlcgorewor
ICAgIHJldHVybiBbVUlWaWV3Q29udHJvbGxlciBfdmlld0NvbnRyb2xsZXJGb3JGdWxsU2NyZWVu
UHJlc2VudGF0aW9uRnJvbVZpZXc6X2RyYXdpbmdWaWV3LmdldCgpXTsKK30KKworQGVuZAorCisj
ZW5kaWYgLy8gSEFWRShQRU5DSUxLSVQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktp
dC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAyODMyYmI3YzRiODFhZTg5OTY1NjY2ZWU0YjUxN2Zl
MGQzMDdiMWY3Li5kY2Q5Zjc2YTdiZTJjN2EwMjE3MGM5MTFjNWIxNDg2OTI4MDg3ZTFkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTI1
NDUsOCArMjU0NSw2IEBACiAJCTJENkFCNTQwMTkyQjFDNEEwMDNBOUZEMSAvKiBXS1BERlBhZ2VO
dW1iZXJJbmRpY2F0b3IubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUg
PSBXS1BERlBhZ2VOdW1iZXJJbmRpY2F0b3IubW07IHBhdGggPSBpb3MvV0tQREZQYWdlTnVtYmVy
SW5kaWNhdG9yLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyRDZCMzcxOTE4QTk2
N0FEMDA0MkFFODAgLyogX1dLVGh1bWJuYWlsVmlldy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBfV0tUaHVtYm5haWxWaWV3Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTJENkIzNzFBMThBOTY3QUQwMDQyQUU4MCAvKiBfV0tUaHVtYm5haWxWaWV3Lm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gX1dLVGh1bWJuYWlsVmlldy5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMkQ2QkYxMUUyMUFFMTQ1RjAwMUU3OUM5IC8q
IFdLSW5rUGlja2VyQ29udHJvbC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFdLSW5rUGlja2Vy
Q29udHJvbC5tbTsgcGF0aCA9IGlvcy9XS0lua1BpY2tlckNvbnRyb2wubW07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCTJENkJGMTFGMjFBRTE0NUYwMDFFNzlDOSAvKiBXS0lua1BpY2tl
ckNvbnRyb2wuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV0tJbmtQaWNrZXJDb250cm9sLmg7IHBhdGggPSBp
b3MvV0tJbmtQaWNrZXJDb250cm9sLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJE
NkJGMTIxMjFBRjU2RTEwMDFFNzlDOSAvKiBQZW5jaWxLaXRTb2Z0TGluay5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFBlbmNpbEtpdFNvZnRMaW5rLm1tOyBwYXRo
ID0gaW9zL1BlbmNpbEtpdFNvZnRMaW5rLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkyRDZCRjEyMjIxQUY1NkUxMDAxRTc5QzkgLyogUGVuY2lsS2l0U29mdExpbmsuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gUGVuY2lsS2l0U29mdExpbmsuaDsgcGF0aCA9IGlv
cy9QZW5jaWxLaXRTb2Z0TGluay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyRDZD
RDExNzE4OTA1OEE1MDBFNUE0QTAgLyogVmlld1NuYXBzaG90U3RvcmUuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gVmlld1NuYXBzaG90U3RvcmUuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTI3OTEsNiArMjc4OSw4IEBACiAJCTJERTY5NDNCMThCRDJBNjgwMDVD
MTVFNSAvKiBTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyTWVzc2FnZVJlY2VpdmVyLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFNtYXJ0TWFnbmlmaWNhdGlvbkNv
bnRyb2xsZXJNZXNzYWdlUmVjZWl2ZXIuY3BwOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViS2l0
Mi9TbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyTWVzc2FnZVJlY2VpdmVyLmNwcDsgc291cmNl
VHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJMkRFNjk0M0MxOEJEMkE2ODAwNUMxNUU1
IC8qIFNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXJNZXNzYWdlcy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyTWVzc2FnZXMu
aDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYktpdDIvU21hcnRNYWduaWZpY2F0aW9uQ29udHJv
bGxlck1lc3NhZ2VzLmg7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCTJE
RUFDNUNFMUFDMzY4QkIwMEExOTVEOCAvKiBfV0tGaW5kT3B0aW9ucy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBfV0tGaW5kT3B0aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkyREYzOTYyQTIxQzhEQzUwMDA4ODM1RTMgLyogV0tJbmtQaWNrZXJWaWV3Lm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAub2JqY3BwOyBuYW1lID0gV0tJbmtQaWNrZXJWaWV3Lm1tOyBwYXRoID0gaW9zL1dL
SW5rUGlja2VyVmlldy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMkRGMzk2MkIy
MUM4REM1MDAwODgzNUUzIC8qIFdLSW5rUGlja2VyVmlldy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXS0lu
a1BpY2tlclZpZXcuaDsgcGF0aCA9IGlvcy9XS0lua1BpY2tlclZpZXcuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMkRGOTU5MzQxOEE0MjQxMjAwOTc4NUExIC8qIFZpZXdHZXN0dXJl
Q29udHJvbGxlcklPUy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9
IFZpZXdHZXN0dXJlQ29udHJvbGxlcklPUy5tbTsgcGF0aCA9IGlvcy9WaWV3R2VzdHVyZUNvbnRy
b2xsZXJJT1MubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJERjlFRUUzMUE3ODFG
QjQwMEI2Q0ZCRSAvKiBBUElGcmFtZUluZm8uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gQVBJRnJhbWVJbmZvLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMkRGOUVFRTQxQTc4MUZCNDAwQjZDRkJFIC8qIEFQSUZyYW1lSW5mby5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBBUElGcmFtZUluZm8uaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTU4MzMsOCArNTgzMyw4IEBACiAJCQkJMEZDQjRFNDExOEJCRTA0NDAwMEZD
RkM5IC8qIFdLR2VvbG9jYXRpb25Qcm92aWRlcklPU09iakNTZWN1cml0eU9yaWdpbi5tbSAqLywK
IAkJCQk5MzNERjgyRDFCM0JDMDkwMDBBRUE5RTMgLyogV0tJbWFnZVByZXZpZXdWaWV3Q29udHJv
bGxlci5oICovLAogCQkJCTkzM0RGODJGMUIzQkMwQjQwMEFFQTlFMyAvKiBXS0ltYWdlUHJldmll
d1ZpZXdDb250cm9sbGVyLm1tICovLAotCQkJCTJENkJGMTFGMjFBRTE0NUYwMDFFNzlDOSAvKiBX
S0lua1BpY2tlckNvbnRyb2wuaCAqLywKLQkJCQkyRDZCRjExRTIxQUUxNDVGMDAxRTc5QzkgLyog
V0tJbmtQaWNrZXJDb250cm9sLm1tICovLAorCQkJCTJERjM5NjJCMjFDOERDNTAwMDg4MzVFMyAv
KiBXS0lua1BpY2tlclZpZXcuaCAqLywKKwkJCQkyREYzOTYyQTIxQzhEQzUwMDA4ODM1RTMgLyog
V0tJbmtQaWNrZXJWaWV3Lm1tICovLAogCQkJCTBGM0M3MjU5MTk2RjVGNjgwMEFFREQwQyAvKiBX
S0luc3BlY3RvckhpZ2hsaWdodFZpZXcuaCAqLywKIAkJCQkwRjNDNzI1NzE5NkY1RjUwMDBBRURE
MEMgLyogV0tJbnNwZWN0b3JIaWdobGlnaHRWaWV3Lm1tICovLAogCQkJCUE1NDI5M0EyMTk1QTQz
QzYwMDI3ODJDNyAvKiBXS0luc3BlY3Rvck5vZGVTZWFyY2hHZXN0dXJlUmVjb2duaXplci5oICov
LAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>357732</attachid>
            <date>2018-12-19 15:06:27 -0800</date>
            <delta_ts>2018-12-19 15:08:04 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-192839-20181219150626.patch</filename>
            <type>text/plain</type>
            <size>28908</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM5MzgyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDhiNTllNzQ3NDAzNjE0MzFj
ZTQyOWIwZjM5YjY2MTU3NTA1ZGI3NDMuLjUwODQ5ODk1YTM3MjRhZmI1ZGM1NWVhZmUwZDIwZDk1
MDI5NTUxNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzYgQEAKKzIwMTgtMTItMTggIFRpbSBIb3J0
b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisKKyAgICAgICAgVUkgcHJvY2VzcyBjcmFz
aCB3aGVuIGZvY3VzaW5nIGFuIGVkaXRhYmxlIGltYWdlCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTI4MzkKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVt
LzQ2Nzg2NjcwPgorCisgICAgICAgIFJldmlld2VkIGJ5IFdlbnNvbiBIc2llaC4KKworICAgICAg
ICAqIFNvdXJjZXNDb2NvYS50eHQ6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRW
aWV3SW50ZXJhY3Rpb24uaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJ
bnRlcmFjdGlvbi5tbToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfcmVxdWlyZXNLZXlib2Fy
ZFdoZW5GaXJzdFJlc3BvbmRlcl0pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IGlucHV0Vmll
d10pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IHJlcXVpcmVzQWNjZXNzb3J5Vmlld10pOgor
ICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9zdGFydEFzc2lzdGluZ05vZGU6dXNlcklzSW50ZXJh
Y3Rpbmc6Ymx1clByZXZpb3VzTm9kZTpjaGFuZ2luZ0FjdGl2aXR5U3RhdGU6dXNlck9iamVjdDpd
KToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfc3RvcEFzc2lzdGluZ05vZGVdKToKKyAgICAg
ICAgKC1bV0tDb250ZW50VmlldyBfaW5zdGFsbElua1BpY2tlckZvckRyYXdpbmdWaWV3V2l0aElE
Ol0pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF91bmluc3RhbGxJbmtQaWNrZXJdKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLSW5rUGlja2VyVmlldy5oOiBSZW5hbWVkIGZyb20gU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLSW5rUGlja2VyQ29udHJvbC5oLgorICAgICAgICAq
IFVJUHJvY2Vzcy9pb3MvV0tJbmtQaWNrZXJWaWV3Lm1tOiBSZW5hbWVkIGZyb20gU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvaW9zL1dLSW5rUGlja2VyQ29udHJvbC5tbS4KKyAgICAgICAgKC1bV0tJ
bmtQaWNrZXJWaWV3IGluaXRXaXRoRHJhd2luZ1ZpZXc6XSk6CisgICAgICAgICgtW1dLSW5rUGlj
a2VyVmlldyBkaWRQaWNrSW5rXSk6CisgICAgICAgICgtW1dLSW5rUGlja2VyVmlldyBpbmxpbmVJ
bmtQaWNrZXJEaWRUb2dnbGVSdWxlcjpdKToKKyAgICAgICAgKC1bV0tJbmtQaWNrZXJWaWV3IGlu
bGluZUlua1BpY2tlcjpkaWRTZWxlY3RUb29sOl0pOgorICAgICAgICAoLVtXS0lua1BpY2tlclZp
ZXcgaW5saW5lSW5rUGlja2VyOmRpZFNlbGVjdENvbG9yOl0pOgorICAgICAgICAoLVtXS0lua1Bp
Y2tlclZpZXcgaW5rUGlja2VyU2l6ZV0pOgorICAgICAgICAoLVtXS0lua1BpY2tlclZpZXcgbGF5
b3V0U3Vidmlld3NdKToKKyAgICAgICAgKC1bV0tJbmtQaWNrZXJWaWV3IHNpemVUaGF0Rml0czpd
KToKKyAgICAgICAgKC1bV0tJbmtQaWNrZXJWaWV3IHZpZXdDb250cm9sbGVyRm9yUG9wb3ZlclBy
ZXNlbnRhdGlvbkZyb21JbmxpbmVJbmtQaWNrZXI6XSk6CisgICAgICAgICogV2ViS2l0Lnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgIE1ha2UgV0tJbmtQaWNrZXJWaWV3IGEgV0tX
ZWJWaWV3IHN1YnZpZXcgaW5zdGVhZCBvZiBhbiBpbnB1dFZpZXcuCisgICAgICAgIEFsc28sIGRv
bid0IGZvcmNlIHRoZSBrZXlib2FyZCB0byBiZSB2aXNpYmxlIHdoZW4gYW4gZWRpdGFibGUgaW1h
Z2UgaXMgZm9jdXNlZC4KKwogMjAxOC0xMi0xOSAgVHJ1aXR0IFNhdmVsbCAgPHRzYXZlbGxAYXBw
bGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIyMzkzNTguCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2ViS2l0L1Nv
dXJjZXNDb2NvYS50eHQKaW5kZXggZjFhMDU3YTQ1ZGIwZmEzNWNlMTBkY2Y0MTk2OTNlZmU4MThh
NmRhMy4uZWQ2NWI4ZmE3MzllOGUxOTYwYjNkY2U2Yjg2NGU1MTQ1ZTJmOTE4MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291
cmNlc0NvY29hLnR4dApAQCAtMzkwLDcgKzM5MCw3IEBAIFVJUHJvY2Vzcy9pb3MvV0tDb250ZW50
Vmlld0ludGVyYWN0aW9uLm1tIEBuby11bmlmeQogVUlQcm9jZXNzL2lvcy9XS0RyYXdpbmdWaWV3
Lm1tCiBVSVByb2Nlc3MvaW9zL1dLR2VvbG9jYXRpb25Qcm92aWRlcklPUy5tbQogVUlQcm9jZXNz
L2lvcy9XS0dlb2xvY2F0aW9uUHJvdmlkZXJJT1NPYmpDU2VjdXJpdHlPcmlnaW4ubW0KLVVJUHJv
Y2Vzcy9pb3MvV0tJbmtQaWNrZXJDb250cm9sLm1tCitVSVByb2Nlc3MvaW9zL1dLSW5rUGlja2Vy
Vmlldy5tbQogVUlQcm9jZXNzL2lvcy9XS0luc3BlY3Rvck5vZGVTZWFyY2hHZXN0dXJlUmVjb2du
aXplci5tbQogVUlQcm9jZXNzL2lvcy9XS0tleWJvYXJkU2Nyb2xsaW5nQW5pbWF0b3IubW0KIFVJ
UHJvY2Vzcy9pb3MvV0tMZWdhY3lQREZWaWV3Lm1tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmgKaW5kZXggZTc5NGUzYzYz
MWRkZWI1M2ExYTQ2OWI3OTA5NDI5YjRjYmEzYmM2MS4uNWRkMThmMDhiZjYxMDYxNWQwNjY0ZTNl
ZDMxYTU3NjcyOWQwMGIxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9z
L1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24uaApAQCAtOTYsNiArOTYsNyBAQCBjbGFzcyBX
ZWJQYWdlUHJveHk7CiBAY2xhc3MgV0tGb2N1c2VkRm9ybUNvbnRyb2xWaWV3OwogQGNsYXNzIFdL
Rm9ybUlucHV0Q29udHJvbDsKIEBjbGFzcyBXS0Zvcm1JbnB1dFNlc3Npb247CitAY2xhc3MgV0tJ
bmtQaWNrZXJWaWV3OwogQGNsYXNzIFdLSW5zcGVjdG9yTm9kZVNlYXJjaEdlc3R1cmVSZWNvZ25p
emVyOwogCiB0eXBlZGVmIHZvaWQgKF5VSVdLQXV0b2NvcnJlY3Rpb25Db21wbGV0aW9uSGFuZGxl
cikoVUlXS0F1dG9jb3JyZWN0aW9uUmVjdHMgKnJlY3RzRm9ySW5wdXQpOwpAQCAtMjg0LDYgKzI4
NSwxMCBAQCBzdHJ1Y3QgV0tBdXRvQ29ycmVjdGlvbkRhdGEgewogICAgIFJldGFpblB0cjxOU0Fy
cmF5PFVJVGV4dFN1Z2dlc3Rpb24gKj4+IF9kYXRhTGlzdFRleHRTdWdnZXN0aW9uczsKICNlbmRp
ZgogCisjaWYgSEFWRShQRU5DSUxLSVQpCisgICAgUmV0YWluUHRyPFdLSW5rUGlja2VyVmlldz4g
X2lua1BpY2tlcjsKKyNlbmRpZgorCiAgICAgQk9PTCBfaXNFZGl0YWJsZTsKICAgICBCT09MIF9z
aG93aW5nVGV4dFN0eWxlT3B0aW9uczsKICAgICBCT09MIF9oYXNWYWxpZFBvc2l0aW9uSW5mb3Jt
YXRpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50
Vmlld0ludGVyYWN0aW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVu
dFZpZXdJbnRlcmFjdGlvbi5tbQppbmRleCBkZWU4OTg4YzQyMGFkY2NkNTdlZGIyY2RjOWI0Mjlh
MWY1ZTljN2I0Li41NDNhNWUyMWM4ODA5NjZiZTE0YWQwMDczYzM0MTZiYjdjYzliMjcxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0
aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50
ZXJhY3Rpb24ubW0KQEAgLTQ3LDcgKzQ3LDcgQEAKICNpbXBvcnQgIldLRm9ybUlucHV0Q29udHJv
bC5oIgogI2ltcG9ydCAiV0tGb3JtU2VsZWN0Q29udHJvbC5oIgogI2ltcG9ydCAiV0tJbWFnZVBy
ZXZpZXdWaWV3Q29udHJvbGxlci5oIgotI2ltcG9ydCAiV0tJbmtQaWNrZXJDb250cm9sLmgiCisj
aW1wb3J0ICJXS0lua1BpY2tlclZpZXcuaCIKICNpbXBvcnQgIldLSW5zcGVjdG9yTm9kZVNlYXJj
aEdlc3R1cmVSZWNvZ25pemVyLmgiCiAjaW1wb3J0ICJXS05TVVJMRXh0cmFzLmgiCiAjaW1wb3J0
ICJXS1ByZXZpZXdBY3Rpb25JdGVtSWRlbnRpZmllcnMuaCIKQEAgLTEzNjUsNiArMTM2NSw3IEBA
IC0gKEJPT0wpX3JlcXVpcmVzS2V5Ym9hcmRXaGVuRmlyc3RSZXNwb25kZXIKICAgICAvLyBGSVhN
RTogV2Ugc2hvdWxkIGFkZCB0aGUgbG9naWMgdG8gaGFuZGxlIGtleWJvYXJkIHZpc2liaWxpdHkg
ZHVyaW5nIGZvY3VzIHJlZGlyZWN0cy4KICAgICBzd2l0Y2ggKF9hc3Npc3RlZE5vZGVJbmZvcm1h
dGlvbi5lbGVtZW50VHlwZSkgewogICAgIGNhc2UgV2ViS2l0OjpJbnB1dFR5cGU6Ok5vbmU6Cisg
ICAgY2FzZSBXZWJLaXQ6OklucHV0VHlwZTo6RHJhd2luZzoKICAgICAgICAgcmV0dXJuIE5POwog
ICAgIGNhc2UgV2ViS2l0OjpJbnB1dFR5cGU6OlNlbGVjdDoKICNpZiBFTkFCTEUoSU5QVVRfVFlQ
RV9DT0xPUikKQEAgLTEzNzUsOCArMTM3Niw2IEBAIC0gKEJPT0wpX3JlcXVpcmVzS2V5Ym9hcmRX
aGVuRmlyc3RSZXNwb25kZXIKICAgICBjYXNlIFdlYktpdDo6SW5wdXRUeXBlOjpEYXRlVGltZUxv
Y2FsOgogICAgIGNhc2UgV2ViS2l0OjpJbnB1dFR5cGU6OlRpbWU6CiAgICAgICAgIHJldHVybiAh
Y3VycmVudFVzZXJJbnRlcmZhY2VJZGlvbUlzUGFkKCk7Ci0gICAgY2FzZSBXZWJLaXQ6OklucHV0
VHlwZTo6RHJhd2luZzoKLSAgICAgICAgcmV0dXJuIFlFUzsKICAgICBkZWZhdWx0OgogICAgICAg
ICByZXR1cm4gIV9hc3Npc3RlZE5vZGVJbmZvcm1hdGlvbi5pc1JlYWRPbmx5OwogICAgIH0KQEAg
LTE0MjUsMTQgKzE0MjQsNiBAQCAtIChVSVZpZXcgKilpbnB1dFZpZXcKICAgICAgICAgY2FzZSBX
ZWJLaXQ6OklucHV0VHlwZTo6Q29sb3I6CiAgICAgICAgICAgICBfaW5wdXRQZXJpcGhlcmFsID0g
YWRvcHROUyhbW1dLRm9ybUNvbG9yQ29udHJvbCBhbGxvY10gaW5pdFdpdGhWaWV3OnNlbGZdKTsK
ICAgICAgICAgICAgIGJyZWFrOwotI2VuZGlmCi0gICAgICAgIGNhc2UgV2ViS2l0OjpJbnB1dFR5
cGU6OkRyYXdpbmc6Ci0jaWYgSEFWRShQRU5DSUxLSVQpCi0gICAgICAgICAgICBfaW5wdXRQZXJp
cGhlcmFsID0gYWRvcHROUyhbW1dLSW5rUGlja2VyQ29udHJvbCBhbGxvY10gaW5pdFdpdGhEcmF3
aW5nVmlldzpfcGFnZS0+ZWRpdGFibGVJbWFnZUNvbnRyb2xsZXIoKS5lZGl0YWJsZUltYWdlKF9h
c3Npc3RlZE5vZGVJbmZvcm1hdGlvbi5lbWJlZGRlZFZpZXdJRCktPmRyYXdpbmdWaWV3LmdldCgp
XSk7Ci0gICAgICAgICAgICBicmVhazsKLSNlbHNlCi0gICAgICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKLSAgICAgICAgICAgIHJldHVybiBbW1VJVmlldyBuZXddIGF1dG9yZWxlYXNlXTsK
ICNlbmRpZgogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgX2lucHV0UGVyaXBoZXJhbCA9
IGFkb3B0TlMoW1tXS0Zvcm1JbnB1dENvbnRyb2wgYWxsb2NdIGluaXRXaXRoVmlldzpzZWxmXSk7
CkBAIC0yMTk0LDYgKzIxODUsNyBAQCAtIChCT09MKXJlcXVpcmVzQWNjZXNzb3J5VmlldwogCiAg
ICAgc3dpdGNoIChfYXNzaXN0ZWROb2RlSW5mb3JtYXRpb24uZWxlbWVudFR5cGUpIHsKICAgICBj
YXNlIFdlYktpdDo6SW5wdXRUeXBlOjpOb25lOgorICAgIGNhc2UgV2ViS2l0OjpJbnB1dFR5cGU6
OkRyYXdpbmc6CiAgICAgICAgIHJldHVybiBOTzsKICAgICBjYXNlIFdlYktpdDo6SW5wdXRUeXBl
OjpUZXh0OgogICAgIGNhc2UgV2ViS2l0OjpJbnB1dFR5cGU6OlBhc3N3b3JkOgpAQCAtMjIxNiw4
ICsyMjA4LDYgQEAgLSAoQk9PTClyZXF1aXJlc0FjY2Vzc29yeVZpZXcKICAgICBjYXNlIFdlYktp
dDo6SW5wdXRUeXBlOjpDb2xvcjoKICNlbmRpZgogICAgICAgICByZXR1cm4gIWN1cnJlbnRVc2Vy
SW50ZXJmYWNlSWRpb21Jc1BhZCgpOwotICAgIGNhc2UgV2ViS2l0OjpJbnB1dFR5cGU6OkRyYXdp
bmc6Ci0gICAgICAgIHJldHVybiBZRVM7CiAgICAgfQogfQogCkBAIC00NDQ3LDYgKzQ0MzcsMTEg
QEAgLSAodm9pZClfc3RhcnRBc3Npc3RpbmdOb2RlOihjb25zdCBXZWJLaXQ6OkFzc2lzdGVkTm9k
ZUluZm9ybWF0aW9uJilpbmZvcm1hdGlvbgogICAgIGlmIChibHVyUHJldmlvdXNOb2RlKQogICAg
ICAgICBbc2VsZiBfc3RvcEFzc2lzdGluZ05vZGVdOwogCisjaWYgSEFWRShQRU5DSUxLSVQpCisg
ICAgaWYgKGluZm9ybWF0aW9uLmVsZW1lbnRUeXBlID09IFdlYktpdDo6SW5wdXRUeXBlOjpEcmF3
aW5nKQorICAgICAgICBbc2VsZiBfaW5zdGFsbElua1BpY2tlckZvckRyYXdpbmdWaWV3V2l0aElE
OmluZm9ybWF0aW9uLmVtYmVkZGVkVmlld0lEXTsKKyNlbmRpZgorCiAgICAgaWYgKCFzaG91bGRT
aG93S2V5Ym9hcmQpCiAgICAgICAgIHJldHVybjsKIApAQCAtNDQ5Nyw2ICs0NDkyLDcgQEAgLSAo
dm9pZClfc3RhcnRBc3Npc3RpbmdOb2RlOihjb25zdCBXZWJLaXQ6OkFzc2lzdGVkTm9kZUluZm9y
bWF0aW9uJilpbmZvcm1hdGlvbgogICAgIGNhc2UgV2ViS2l0OjpJbnB1dFR5cGU6OlRpbWU6CiAg
ICAgY2FzZSBXZWJLaXQ6OklucHV0VHlwZTo6TW9udGg6CiAgICAgY2FzZSBXZWJLaXQ6OklucHV0
VHlwZTo6RGF0ZToKKyAgICBjYXNlIFdlYktpdDo6SW5wdXRUeXBlOjpEcmF3aW5nOgogI2lmIEVO
QUJMRShJTlBVVF9UWVBFX0NPTE9SKQogICAgIGNhc2UgV2ViS2l0OjpJbnB1dFR5cGU6OkNvbG9y
OgogI2VuZGlmCkBAIC00NTMwLDYgKzQ1MjYsMTEgQEAgLSAodm9pZClfc3RvcEFzc2lzdGluZ05v
ZGUKIHsKICAgICBTZXRGb3JTY29wZTxCT09MPiBpc0JsdXJyaW5nRm9jdXNlZE5vZGVGb3JTY29w
ZSB7IF9pc0JsdXJyaW5nRm9jdXNlZE5vZGUsIFlFUyB9OwogCisjaWYgSEFWRShQRU5DSUxLSVQp
CisgICAgaWYgKF9pbmtQaWNrZXIpCisgICAgICAgIFtzZWxmIF91bmluc3RhbGxJbmtQaWNrZXJd
OworI2VuZGlmCisKICAgICBbX2Zvcm1JbnB1dFNlc3Npb24gaW52YWxpZGF0ZV07CiAgICAgX2Zv
cm1JbnB1dFNlc3Npb24gPSBuaWw7CiAKQEAgLTYyMTAsNiArNjIxMSwzMCBAQCAtICh2b2lkKV9o
b3Zlckdlc3R1cmVSZWNvZ25pemVyQ2hhbmdlZDooVUlHZXN0dXJlUmVjb2duaXplciAqKWdlc3R1
cmVSZWNvZ25pemVyCiB9CiAjZW5kaWYKIAorI2lmIEhBVkUoUEVOQ0lMS0lUKQorLSAodm9pZClf
aW5zdGFsbElua1BpY2tlckZvckRyYXdpbmdWaWV3V2l0aElEOihXZWJDb3JlOjpHcmFwaGljc0xh
eWVyOjpFbWJlZGRlZFZpZXdJRCllbWJlZGRlZFZpZXdJRAoreworICAgIF9pbmtQaWNrZXIgPSBh
ZG9wdE5TKFtbV0tJbmtQaWNrZXJWaWV3IGFsbG9jXSBpbml0V2l0aERyYXdpbmdWaWV3Ol9wYWdl
LT5lZGl0YWJsZUltYWdlQ29udHJvbGxlcigpLmVkaXRhYmxlSW1hZ2UoZW1iZWRkZWRWaWV3SUQp
LT5kcmF3aW5nVmlldy5nZXQoKV0pOworICAgIFtfaW5rUGlja2VyIHNpemVUb0ZpdF07CisgICAg
W19pbmtQaWNrZXIgc2V0VHJhbnNsYXRlc0F1dG9yZXNpemluZ01hc2tJbnRvQ29uc3RyYWludHM6
Tk9dOworICAgIFtfd2ViVmlldyBhZGRTdWJ2aWV3Ol9pbmtQaWNrZXIuZ2V0KCldOworCisgICAg
W05TTGF5b3V0Q29uc3RyYWludCBhY3RpdmF0ZUNvbnN0cmFpbnRzOkBbCisgICAgICAgIFtbX2lu
a1BpY2tlciBoZWlnaHRBbmNob3JdIGNvbnN0cmFpbnRFcXVhbFRvQ29uc3RhbnQ6W19pbmtQaWNr
ZXIgZnJhbWVdLnNpemUuaGVpZ2h0XSwKKyAgICAgICAgW1tfaW5rUGlja2VyIGJvdHRvbUFuY2hv
cl0gY29uc3RyYWludEVxdWFsVG9BbmNob3I6X3dlYlZpZXcuc2FmZUFyZWFMYXlvdXRHdWlkZS5i
b3R0b21BbmNob3JdLAorICAgICAgICBbW19pbmtQaWNrZXIgbGVmdEFuY2hvcl0gY29uc3RyYWlu
dEVxdWFsVG9BbmNob3I6X3dlYlZpZXcuc2FmZUFyZWFMYXlvdXRHdWlkZS5sZWZ0QW5jaG9yXSwK
KyAgICAgICAgW1tfaW5rUGlja2VyIHJpZ2h0QW5jaG9yXSBjb25zdHJhaW50RXF1YWxUb0FuY2hv
cjpfd2ViVmlldy5zYWZlQXJlYUxheW91dEd1aWRlLnJpZ2h0QW5jaG9yXSwKKyAgICBdXTsKK30K
KworLSAodm9pZClfdW5pbnN0YWxsSW5rUGlja2VyCit7CisgICAgW19pbmtQaWNrZXIgcmVtb3Zl
RnJvbVN1cGVydmlld107CisgICAgX2lua1BpY2tlciA9IG5pbDsKK30KKworI2VuZGlmIC8vIEhB
VkUoUEVOQ0lMS0lUKQorCiBAZW5kCiAKIEBpbXBsZW1lbnRhdGlvbiBXS0NvbnRlbnRWaWV3IChX
S1Rlc3RpbmcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tJbmtQ
aWNrZXJDb250cm9sLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tJbmtQaWNrZXJD
b250cm9sLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA4Y2RhYmZhYzNlNDg2OTZl
ZDg5N2EzYWJmZTFmZTA2NTQ0ODYzNzAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLSW5rUGlja2VyQ29u
dHJvbC5oCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZiBI
QVZFKFBFTkNJTEtJVCkKLQotI2ltcG9ydCAiV0tGb3JtUGVyaXBoZXJhbC5oIgotCi1PQkpDX0NM
QVNTIFdLRHJhd2luZ1ZpZXc7Ci0KLUBpbnRlcmZhY2UgV0tJbmtQaWNrZXJDb250cm9sIDogTlNP
YmplY3QgPFdLRm9ybVBlcmlwaGVyYWw+Ci0KLS0gKGluc3RhbmNldHlwZSlpbml0V2l0aERyYXdp
bmdWaWV3OihXS0RyYXdpbmdWaWV3ICopZHJhd2luZ1ZpZXc7Ci0KLUBlbmQKLQotCi0jZW5kaWYg
Ly8gSEFWRShQRU5DSUxLSVQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9p
b3MvV0tJbmtQaWNrZXJDb250cm9sLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dL
SW5rUGlja2VyQ29udHJvbC5tbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWJkMGFm
ZGE2YjNhNDM1NGFlYzNlOTUzZWE2YTY5ZWI0OTcyYzc0ZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tJ
bmtQaWNrZXJDb250cm9sLm1tCisrKyAvZGV2L251bGwKQEAgLTEsMTQxICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LSAqLwotCi0jaW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIldLSW5rUGlja2VyQ29udHJvbC5o
IgotCi0jaWYgSEFWRShQRU5DSUxLSVQpCi0KLSNpbXBvcnQgIldLRHJhd2luZ1ZpZXcuaCIKLQot
I2ltcG9ydCAiUGVuY2lsS2l0U29mdExpbmsuaCIKLQotQGludGVyZmFjZSBXS0lua1BpY2tlclZp
ZXcgOiBVSVZpZXcgPFBLSW5saW5lSW5rUGlja2VyRGVsZWdhdGU+Ci1AZW5kCi0KLUBpbXBsZW1l
bnRhdGlvbiBXS0lua1BpY2tlclZpZXcgewotICAgIFJldGFpblB0cjxQS0lubGluZUlua1BpY2tl
cj4gX2lubGluZVBpY2tlcjsKLSAgICBSZXRhaW5QdHI8V0tEcmF3aW5nVmlldz4gX2RyYXdpbmdW
aWV3OwotfQotCi0tIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhGcmFtZTooQ0dSZWN0KWZyYW1lIGRy
YXdpbmdWaWV3OihXS0RyYXdpbmdWaWV3ICopZHJhd2luZ1ZpZXcKLXsKLSAgICBzZWxmID0gW3N1
cGVyIGluaXRXaXRoRnJhbWU6ZnJhbWVdOwotICAgIGlmICghc2VsZikKLSAgICAgICAgcmV0dXJu
IG5pbDsKLQotICAgIF9pbmxpbmVQaWNrZXIgPSBhZG9wdE5TKFtXZWJLaXQ6OmFsbG9jUEtJbmxp
bmVJbmtQaWNrZXJJbnN0YW5jZSgpIGluaXRdKTsKLSAgICBbX2lubGluZVBpY2tlciBzZXRTZWxl
Y3RlZEluazpbZHJhd2luZ1ZpZXcgY2FudmFzVmlld10uaW5rIGFuaW1hdGVkOk5PXTsKLSAgICBb
X2lubGluZVBpY2tlciBhZGRUYXJnZXQ6c2VsZiBhY3Rpb246QHNlbGVjdG9yKGRpZFBpY2tJbmsp
IGZvckNvbnRyb2xFdmVudHM6VUlDb250cm9sRXZlbnRWYWx1ZUNoYW5nZWRdOwotICAgIFtfaW5s
aW5lUGlja2VyIHNldERlbGVnYXRlOnNlbGZdOwotCi0gICAgX2RyYXdpbmdWaWV3ID0gZHJhd2lu
Z1ZpZXc7Ci0gICAgW3NlbGYgYWRkU3VidmlldzpfaW5saW5lUGlja2VyLmdldCgpXTsKLQotICAg
IHJldHVybiBzZWxmOwotfQotCi0tICh2b2lkKWRpZFBpY2tJbmsKLXsKLSAgICBbX2RyYXdpbmdW
aWV3IGNhbnZhc1ZpZXddLmluayA9IFtfaW5saW5lUGlja2VyIHNlbGVjdGVkSW5rXTsKLX0KLQot
LSAodm9pZClpbmxpbmVJbmtQaWNrZXJEaWRUb2dnbGVSdWxlcjooUEtJbmxpbmVJbmtQaWNrZXIg
KilpbmxpbmVJbmtQaWNrZXIKLXsKLSAgICBbX2RyYXdpbmdWaWV3IGNhbnZhc1ZpZXddLnJ1bGVy
RW5hYmxlZCA9ICFbX2RyYXdpbmdWaWV3IGNhbnZhc1ZpZXddLnJ1bGVyRW5hYmxlZDsKLX0KLQot
LSAodm9pZClpbmxpbmVJbmtQaWNrZXI6KFBLSW5saW5lSW5rUGlja2VyICopaW5saW5lSW5rUGlj
a2VyIGRpZFNlbGVjdFRvb2w6KFBLSW5rSWRlbnRpZmllcilpZGVudGlmZXIKLXsKLSAgICBbc2Vs
ZiBkaWRQaWNrSW5rXTsKLX0KLQotLSAodm9pZClpbmxpbmVJbmtQaWNrZXI6KFBLSW5saW5lSW5r
UGlja2VyICopaW5saW5lSW5rUGlja2VyIGRpZFNlbGVjdENvbG9yOihVSUNvbG9yICopY29sb3IK
LXsKLSAgICBbc2VsZiBkaWRQaWNrSW5rXTsKLX0KLQotLSAoQ0dTaXplKWlua1BpY2tlclNpemUK
LXsKLSAgICBDR1NpemUga2V5Ym9hcmRTaXplID0gW1VJS2V5Ym9hcmQgZGVmYXVsdFNpemVGb3JJ
bnRlcmZhY2VPcmllbnRhdGlvbjpbVUlBcHAgaW50ZXJmYWNlT3JpZW50YXRpb25dXTsKLSAgICBy
ZXR1cm4gW19pbmxpbmVQaWNrZXIgc2l6ZVRoYXRGaXRzOmtleWJvYXJkU2l6ZV07Ci19Ci0KLS0g
KHZvaWQpbGF5b3V0U3Vidmlld3MKLXsKLSAgICBDR1NpemUgcGlja2VyU2l6ZSA9IHNlbGYuaW5r
UGlja2VyU2l6ZTsKLSAgICBbX2lubGluZVBpY2tlciBzZXRGcmFtZTpDR1JlY3RNYWtlKENHUmVj
dEdldE1pZFgoc2VsZi5ib3VuZHMpIC0gKHBpY2tlclNpemUud2lkdGggLyAyKSwgMCwgcGlja2Vy
U2l6ZS53aWR0aCwgcGlja2VyU2l6ZS5oZWlnaHQpXTsKLX0KLQotLSAoQ0dTaXplKXNpemVUaGF0
Rml0czooQ0dTaXplKXNpemUKLXsKLSAgICBDR1NpemUga2V5Ym9hcmRTaXplID0gW1VJS2V5Ym9h
cmQgZGVmYXVsdFNpemVGb3JJbnRlcmZhY2VPcmllbnRhdGlvbjpbVUlBcHAgaW50ZXJmYWNlT3Jp
ZW50YXRpb25dXTsKLSAgICByZXR1cm4gQ0dTaXplTWFrZShrZXlib2FyZFNpemUud2lkdGgsIHNl
bGYuaW5rUGlja2VyU2l6ZS5oZWlnaHQpOwotfQotCi0tIChVSVZpZXdDb250cm9sbGVyICopdmll
d0NvbnRyb2xsZXJGb3JQb3BvdmVyUHJlc2VudGF0aW9uRnJvbUlubGluZUlua1BpY2tlcjooUEtJ
bmxpbmVJbmtQaWNrZXIgKilpbmxpbmVJbmtQaWNrZXIKLXsKLSAgICByZXR1cm4gW1VJVmlld0Nv
bnRyb2xsZXIgX3ZpZXdDb250cm9sbGVyRm9yRnVsbFNjcmVlblByZXNlbnRhdGlvbkZyb21WaWV3
Ol9kcmF3aW5nVmlldy5nZXQoKV07Ci19Ci0KLUBlbmQKLQotQGltcGxlbWVudGF0aW9uIFdLSW5r
UGlja2VyQ29udHJvbCB7Ci0gICAgUmV0YWluUHRyPFdLSW5rUGlja2VyVmlldz4gX3BpY2tlcjsK
LSAgICBSZXRhaW5QdHI8V0tEcmF3aW5nVmlldz4gX2RyYXdpbmdWaWV3OwotfQotCi0tIChpbnN0
YW5jZXR5cGUpaW5pdFdpdGhEcmF3aW5nVmlldzooV0tEcmF3aW5nVmlldyAqKWRyYXdpbmdWaWV3
Ci17Ci0gICAgc2VsZiA9IFtzdXBlciBpbml0XTsKLSAgICBpZiAoIXNlbGYpCi0gICAgICAgIHJl
dHVybiBuaWw7Ci0KLSAgICBfZHJhd2luZ1ZpZXcgPSBkcmF3aW5nVmlldzsKLQotICAgIHJldHVy
biBzZWxmOwotfQotCi0tICh2b2lkKWJlZ2luRWRpdGluZwotewotCi19Ci0KLS0gKHZvaWQpZW5k
RWRpdGluZwotewotCi19Ci0KLS0gKFVJVmlldyAqKWFzc2lzdGFudFZpZXcKLXsKLSAgICBpZiAo
IV9waWNrZXIpCi0gICAgICAgIF9waWNrZXIgPSBhZG9wdE5TKFtbV0tJbmtQaWNrZXJWaWV3IGFs
bG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdFplcm8gZHJhd2luZ1ZpZXc6X2RyYXdpbmdWaWV3Lmdl
dCgpXSk7Ci0gICAgW19waWNrZXIgc2l6ZVRvRml0XTsKLSAgICByZXR1cm4gX3BpY2tlci5nZXQo
KTsKLX0KLQotQGVuZAotCi0jZW5kaWYgLy8gSEFWRShQRU5DSUxLSVQpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tJbmtQaWNrZXJWaWV3LmggYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9pb3MvV0tJbmtQaWNrZXJWaWV3LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjEzM2EyNzVi
OTIzZjE1YWZiZTJkOGViN2E5MzIyYTNhYjIxYjI2YgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0lua1BpY2tlclZpZXcuaApAQCAtMCwwICsxLDQyIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2lmIEhBVkUoUEVOQ0lMS0lUKQorCisjaW1wb3J0IDxVSUtpdC9VSUtp
dC5oPgorCitPQkpDX0NMQVNTIFdLRHJhd2luZ1ZpZXc7CisKK0BpbnRlcmZhY2UgV0tJbmtQaWNr
ZXJWaWV3IDogVUlWaWV3CisKKy0gKGluc3RhbmNldHlwZSlpbml0IE5TX1VOQVZBSUxBQkxFOwor
LSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRnJhbWU6KENHUmVjdClmcmFtZSBOU19VTkFWQUlMQUJM
RTsKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aENvZGVyOihOU0NvZGVyICopY29kZXIgTlNfVU5B
VkFJTEFCTEU7CisKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aERyYXdpbmdWaWV3OihXS0RyYXdp
bmdWaWV3ICopZHJhd2luZ1ZpZXcgTlNfREVTSUdOQVRFRF9JTklUSUFMSVpFUjsKKworQGVuZAor
CisjZW5kaWYgLy8gSEFWRShQRU5DSUxLSVQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9pb3MvV0tJbmtQaWNrZXJWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
aW9zL1dLSW5rUGlja2VyVmlldy5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45YTM3NDM4ZTU4NzI1ODhkNDQwMDUw
YzRiZjRiYjgxZGQ0YWZjYTgzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL1dLSW5rUGlja2VyVmlldy5tbQpAQCAtMCwwICsxLDEwNSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiV0tJbmtQaWNrZXJWaWV3LmgiCisKKyNp
ZiBIQVZFKFBFTkNJTEtJVCkKKworI2ltcG9ydCAiV0tEcmF3aW5nVmlldy5oIgorCisjaW1wb3J0
ICJQZW5jaWxLaXRTb2Z0TGluay5oIgorCitAaW50ZXJmYWNlIFdLSW5rUGlja2VyVmlldyAoKSA8
UEtJbmxpbmVJbmtQaWNrZXJEZWxlZ2F0ZT4KK0BlbmQKKworQGltcGxlbWVudGF0aW9uIFdLSW5r
UGlja2VyVmlldyB7CisgICAgUmV0YWluUHRyPFBLSW5saW5lSW5rUGlja2VyPiBfaW5saW5lUGlj
a2VyOworICAgIFJldGFpblB0cjxXS0RyYXdpbmdWaWV3PiBfZHJhd2luZ1ZpZXc7Cit9CisKKy0g
KGluc3RhbmNldHlwZSlpbml0V2l0aERyYXdpbmdWaWV3OihXS0RyYXdpbmdWaWV3ICopZHJhd2lu
Z1ZpZXcKK3sKKyAgICBzZWxmID0gW3N1cGVyIGluaXRXaXRoRnJhbWU6Q0dSZWN0WmVyb107Cisg
ICAgaWYgKCFzZWxmKQorICAgICAgICByZXR1cm4gbmlsOworCisgICAgX2lubGluZVBpY2tlciA9
IGFkb3B0TlMoW1dlYktpdDo6YWxsb2NQS0lubGluZUlua1BpY2tlckluc3RhbmNlKCkgaW5pdF0p
OworICAgIFtfaW5saW5lUGlja2VyIHNldFNlbGVjdGVkSW5rOltkcmF3aW5nVmlldyBjYW52YXNW
aWV3XS5pbmsgYW5pbWF0ZWQ6Tk9dOworICAgIFtfaW5saW5lUGlja2VyIGFkZFRhcmdldDpzZWxm
IGFjdGlvbjpAc2VsZWN0b3IoZGlkUGlja0luaykgZm9yQ29udHJvbEV2ZW50czpVSUNvbnRyb2xF
dmVudFZhbHVlQ2hhbmdlZF07CisgICAgW19pbmxpbmVQaWNrZXIgc2V0RGVsZWdhdGU6c2VsZl07
CisKKyAgICBfZHJhd2luZ1ZpZXcgPSBkcmF3aW5nVmlldzsKKyAgICBbc2VsZiBhZGRTdWJ2aWV3
Ol9pbmxpbmVQaWNrZXIuZ2V0KCldOworCisgICAgcmV0dXJuIHNlbGY7Cit9CisKKy0gKHZvaWQp
ZGlkUGlja0luaworeworICAgIFtfZHJhd2luZ1ZpZXcgY2FudmFzVmlld10uaW5rID0gW19pbmxp
bmVQaWNrZXIgc2VsZWN0ZWRJbmtdOworfQorCistICh2b2lkKWlubGluZUlua1BpY2tlckRpZFRv
Z2dsZVJ1bGVyOihQS0lubGluZUlua1BpY2tlciAqKWlubGluZUlua1BpY2tlcgoreworICAgIFtf
ZHJhd2luZ1ZpZXcgY2FudmFzVmlld10ucnVsZXJFbmFibGVkID0gIVtfZHJhd2luZ1ZpZXcgY2Fu
dmFzVmlld10ucnVsZXJFbmFibGVkOworfQorCistICh2b2lkKWlubGluZUlua1BpY2tlcjooUEtJ
bmxpbmVJbmtQaWNrZXIgKilpbmxpbmVJbmtQaWNrZXIgZGlkU2VsZWN0VG9vbDooUEtJbmtJZGVu
dGlmaWVyKWlkZW50aWZlcgoreworICAgIFtzZWxmIGRpZFBpY2tJbmtdOworfQorCistICh2b2lk
KWlubGluZUlua1BpY2tlcjooUEtJbmxpbmVJbmtQaWNrZXIgKilpbmxpbmVJbmtQaWNrZXIgZGlk
U2VsZWN0Q29sb3I6KFVJQ29sb3IgKiljb2xvcgoreworICAgIFtzZWxmIGRpZFBpY2tJbmtdOwor
fQorCistIChDR1NpemUpaW5rUGlja2VyU2l6ZQoreworICAgIENHU2l6ZSBrZXlib2FyZFNpemUg
PSBbVUlLZXlib2FyZCBkZWZhdWx0U2l6ZUZvckludGVyZmFjZU9yaWVudGF0aW9uOltVSUFwcCBp
bnRlcmZhY2VPcmllbnRhdGlvbl1dOworICAgIHJldHVybiBbX2lubGluZVBpY2tlciBzaXplVGhh
dEZpdHM6a2V5Ym9hcmRTaXplXTsKK30KKworLSAodm9pZClsYXlvdXRTdWJ2aWV3cworeworICAg
IENHU2l6ZSBwaWNrZXJTaXplID0gc2VsZi5pbmtQaWNrZXJTaXplOworICAgIFtfaW5saW5lUGlj
a2VyIHNldEZyYW1lOkNHUmVjdE1ha2UoQ0dSZWN0R2V0TWlkWChzZWxmLmJvdW5kcykgLSAocGlj
a2VyU2l6ZS53aWR0aCAvIDIpLCAwLCBwaWNrZXJTaXplLndpZHRoLCBwaWNrZXJTaXplLmhlaWdo
dCldOworfQorCistIChDR1NpemUpc2l6ZVRoYXRGaXRzOihDR1NpemUpc2l6ZQoreworICAgIENH
U2l6ZSBrZXlib2FyZFNpemUgPSBbVUlLZXlib2FyZCBkZWZhdWx0U2l6ZUZvckludGVyZmFjZU9y
aWVudGF0aW9uOltVSUFwcCBpbnRlcmZhY2VPcmllbnRhdGlvbl1dOworICAgIHJldHVybiBDR1Np
emVNYWtlKGtleWJvYXJkU2l6ZS53aWR0aCwgc2VsZi5pbmtQaWNrZXJTaXplLmhlaWdodCk7Cit9
CisKKy0gKFVJVmlld0NvbnRyb2xsZXIgKil2aWV3Q29udHJvbGxlckZvclBvcG92ZXJQcmVzZW50
YXRpb25Gcm9tSW5saW5lSW5rUGlja2VyOihQS0lubGluZUlua1BpY2tlciAqKWlubGluZUlua1Bp
Y2tlcgoreworICAgIHJldHVybiBbVUlWaWV3Q29udHJvbGxlciBfdmlld0NvbnRyb2xsZXJGb3JG
dWxsU2NyZWVuUHJlc2VudGF0aW9uRnJvbVZpZXc6X2RyYXdpbmdWaWV3LmdldCgpXTsKK30KKwor
QGVuZAorCisjZW5kaWYgLy8gSEFWRShQRU5DSUxLSVQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJL
aXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBmZmI4Zjk1MDM2Yjg1MmI3ODU0YzQ5
NGY0NDIwYmE5NThhMTI4MmQ1Li5lZjFiMDVkYjQ3ZGRiMGI4ZjE0ZjJhZWIxZDA0NDA4NmFhYTM2
ODYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKQEAgLTI1NDYsOCArMjU0Niw2IEBACiAJCTJENkFCNTQwMTkyQjFDNEEwMDNBOUZEMSAvKiBX
S1BERlBhZ2VOdW1iZXJJbmRpY2F0b3IubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpj
cHA7IG5hbWUgPSBXS1BERlBhZ2VOdW1iZXJJbmRpY2F0b3IubW07IHBhdGggPSBpb3MvV0tQREZQ
YWdlTnVtYmVySW5kaWNhdG9yLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyRDZC
MzcxOTE4QTk2N0FEMDA0MkFFODAgLyogX1dLVGh1bWJuYWlsVmlldy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBfV0tUaHVtYm5haWxWaWV3Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTJENkIzNzFBMThBOTY3QUQwMDQyQUU4MCAvKiBfV0tUaHVtYm5haWxWaWV3
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gX1dLVGh1bWJuYWls
Vmlldy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMkQ2QkYxMUUyMUFFMTQ1RjAw
MUU3OUM5IC8qIFdLSW5rUGlja2VyQ29udHJvbC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFdL
SW5rUGlja2VyQ29udHJvbC5tbTsgcGF0aCA9IGlvcy9XS0lua1BpY2tlckNvbnRyb2wubW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTJENkJGMTFGMjFBRTE0NUYwMDFFNzlDOSAvKiBX
S0lua1BpY2tlckNvbnRyb2wuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV0tJbmtQaWNrZXJDb250cm9sLmg7
IHBhdGggPSBpb3MvV0tJbmtQaWNrZXJDb250cm9sLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTJENkJGMTIxMjFBRjU2RTEwMDFFNzlDOSAvKiBQZW5jaWxLaXRTb2Z0TGluay5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFBlbmNpbEtpdFNvZnRMaW5r
Lm1tOyBwYXRoID0gaW9zL1BlbmNpbEtpdFNvZnRMaW5rLm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkyRDZCRjEyMjIxQUY1NkUxMDAxRTc5QzkgLyogUGVuY2lsS2l0U29mdExpbmsu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gUGVuY2lsS2l0U29mdExpbmsuaDsg
cGF0aCA9IGlvcy9QZW5jaWxLaXRTb2Z0TGluay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkyRDZDRDExNzE4OTA1OEE1MDBFNUE0QTAgLyogVmlld1NuYXBzaG90U3RvcmUuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVmlld1NuYXBzaG90U3RvcmUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI3OTIsNiArMjc5MCw4IEBACiAJCTJERTY5NDNCMThC
RDJBNjgwMDVDMTVFNSAvKiBTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyTWVzc2FnZVJlY2Vp
dmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFNtYXJ0TWFnbmlm
aWNhdGlvbkNvbnRyb2xsZXJNZXNzYWdlUmVjZWl2ZXIuY3BwOyBwYXRoID0gRGVyaXZlZFNvdXJj
ZXMvV2ViS2l0Mi9TbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyTWVzc2FnZVJlY2VpdmVyLmNw
cDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJMkRFNjk0M0MxOEJEMkE2
ODAwNUMxNUU1IC8qIFNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXJNZXNzYWdlcy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVy
TWVzc2FnZXMuaDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYktpdDIvU21hcnRNYWduaWZpY2F0
aW9uQ29udHJvbGxlck1lc3NhZ2VzLmg7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7
IH07CiAJCTJERUFDNUNFMUFDMzY4QkIwMEExOTVEOCAvKiBfV0tGaW5kT3B0aW9ucy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBfV0tGaW5kT3B0aW9ucy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkyREYzOTYyQTIxQzhEQzUwMDA4ODM1RTMgLyogV0tJbmtQaWNr
ZXJWaWV3Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gV0tJbmtQaWNrZXJWaWV3Lm1tOyBwYXRo
ID0gaW9zL1dLSW5rUGlja2VyVmlldy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MkRGMzk2MkIyMUM4REM1MDAwODgzNUUzIC8qIFdLSW5rUGlja2VyVmlldy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5h
bWUgPSBXS0lua1BpY2tlclZpZXcuaDsgcGF0aCA9IGlvcy9XS0lua1BpY2tlclZpZXcuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkRGOTU5MzQxOEE0MjQxMjAwOTc4NUExIC8qIFZp
ZXdHZXN0dXJlQ29udHJvbGxlcklPUy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgbmFtZSA9IFZpZXdHZXN0dXJlQ29udHJvbGxlcklPUy5tbTsgcGF0aCA9IGlvcy9WaWV3R2Vz
dHVyZUNvbnRyb2xsZXJJT1MubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJERjlF
RUUzMUE3ODFGQjQwMEI2Q0ZCRSAvKiBBUElGcmFtZUluZm8uY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gQVBJRnJhbWVJbmZvLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMkRGOUVFRTQxQTc4MUZCNDAwQjZDRkJFIC8qIEFQSUZyYW1lSW5mby5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBUElGcmFtZUluZm8uaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTU4MzUsOCArNTgzNSw4IEBACiAJCQkJMEZDQjRFNDExOEJC
RTA0NDAwMEZDRkM5IC8qIFdLR2VvbG9jYXRpb25Qcm92aWRlcklPU09iakNTZWN1cml0eU9yaWdp
bi5tbSAqLywKIAkJCQk5MzNERjgyRDFCM0JDMDkwMDBBRUE5RTMgLyogV0tJbWFnZVByZXZpZXdW
aWV3Q29udHJvbGxlci5oICovLAogCQkJCTkzM0RGODJGMUIzQkMwQjQwMEFFQTlFMyAvKiBXS0lt
YWdlUHJldmlld1ZpZXdDb250cm9sbGVyLm1tICovLAotCQkJCTJENkJGMTFGMjFBRTE0NUYwMDFF
NzlDOSAvKiBXS0lua1BpY2tlckNvbnRyb2wuaCAqLywKLQkJCQkyRDZCRjExRTIxQUUxNDVGMDAx
RTc5QzkgLyogV0tJbmtQaWNrZXJDb250cm9sLm1tICovLAorCQkJCTJERjM5NjJCMjFDOERDNTAw
MDg4MzVFMyAvKiBXS0lua1BpY2tlclZpZXcuaCAqLywKKwkJCQkyREYzOTYyQTIxQzhEQzUwMDA4
ODM1RTMgLyogV0tJbmtQaWNrZXJWaWV3Lm1tICovLAogCQkJCTBGM0M3MjU5MTk2RjVGNjgwMEFF
REQwQyAvKiBXS0luc3BlY3RvckhpZ2hsaWdodFZpZXcuaCAqLywKIAkJCQkwRjNDNzI1NzE5NkY1
RjUwMDBBRUREMEMgLyogV0tJbnNwZWN0b3JIaWdobGlnaHRWaWV3Lm1tICovLAogCQkJCUE1NDI5
M0EyMTk1QTQzQzYwMDI3ODJDNyAvKiBXS0luc3BlY3Rvck5vZGVTZWFyY2hHZXN0dXJlUmVjb2du
aXplci5oICovLApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCmluZGV4IGZmZTA3MDQ1NmI3Yjc0MWYxNTIzZmRiOGY3ODNjNDI5M2M4NzE0
M2QuLmQ0Y2I4ZTMwYjVkN2I3MmU3YjZmNWY1ZDNhZTI5YTExMzEwNTMyZDcgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxOCBAQAorMjAxOC0xMi0xOSAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxl
LmNvbT4KKworICAgICAgICBVSSBwcm9jZXNzIGNyYXNoIHdoZW4gZm9jdXNpbmcgYW4gZWRpdGFi
bGUgaW1hZ2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE5MjgzOQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDY3ODY2NzA+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgV2Vuc29uIEhzaWVoLgorCisgICAgICAgICogZWRpdGluZy9pbWFnZXMvYmFzaWMt
ZWRpdGFibGUtaW1hZ2Utd2l0aC1nZXN0dXJlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHJlc291
cmNlcy91aS1oZWxwZXIuanM6CisgICAgICAgICh3aW5kb3cuVUlIZWxwZXIuc3R5bHVzVGFwQXQu
cmV0dXJuLm5ldy5Qcm9taXNlKToKKyAgICAgICAgKHdpbmRvdy5VSUhlbHBlci5zdHlsdXNUYXBB
dCk6CisgICAgICAgIEFkZCBhIHRlc3QgdGhhdCBlbnN1cmVzIHRoYXQgYWRkaW5nIGFuIGVkaXRh
YmxlIGltYWdlIGZyb20gYSBnZXN0dXJlCisgICAgICAgIGRvZXNuJ3QgY3Jhc2gsIGFuZCBjYW4g
YmUgZHJhd24gb24uCisKIDIwMTgtMTItMTkgIFJ5YW4gSGFkZGFkICA8cnlhbmhhZGRhZEBhcHBs
ZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTiAocjIzNDk0MCk6IFsgTWFjT1MgXSBMYXlvdXQg
VGVzdCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL21lZGlhLXNvdXJjZS9tZWRpYXNv
dXJjZS1jaGFuZ2V0eXBlLXBsYXkuaHRtbCBpcyBmbGFreQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZWRpdGluZy9pbWFnZXMvYmFzaWMtZWRpdGFibGUtaW1hZ2Utd2l0aC1nZXN0dXJlLmh0bWwg
Yi9MYXlvdXRUZXN0cy9lZGl0aW5nL2ltYWdlcy9iYXNpYy1lZGl0YWJsZS1pbWFnZS13aXRoLWdl
c3R1cmUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43MGMxNmVjM2Q0MmI3OGM2NTY1ZGZlMTYyMzVlMTJiNDhm
ZTVhOTBlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9pbWFnZXMvYmFz
aWMtZWRpdGFibGUtaW1hZ2Utd2l0aC1nZXN0dXJlLmh0bWwKQEAgLTAsMCArMSwyMiBAQAorPCFE
T0NUWVBFIGh0bWw+PCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIgWyBlbmFibGVFZGl0YWJsZUltYWdl
cz10cnVlIF0gLS0+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdWktaGVs
cGVyLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAg
ICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUo
KTsKK30KKworYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsIGFzeW5jICgpID0+IHsKKyAgICBhd2Fp
dCBVSUhlbHBlci5zdHlsdXNUYXBBdCgwLCAwKTsKKyAgICBjb25zdCBpbml0aWFsTnVtYmVyT2ZT
dHJva2VzSW5FZGl0YWJsZUltYWdlID0gKGF3YWl0IFVJSGVscGVyLm51bWJlck9mU3Ryb2tlc0lu
RWRpdGFibGVJbWFnZSgpKTsKKyAgICBhd2FpdCBVSUhlbHBlci5kcmF3U3F1YXJlSW5FZGl0YWJs
ZUltYWdlKCk7CisgICAgY29uc3QgbnVtYmVyT2ZTdHJva2VzSW5FZGl0YWJsZUltYWdlQWZ0ZXJE
cmF3aW5nID0gKGF3YWl0IFVJSGVscGVyLm51bWJlck9mU3Ryb2tlc0luRWRpdGFibGVJbWFnZSgp
KTsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibG9nIikuaW5uZXJIVE1MID0gYEhhZCAk
e2luaXRpYWxOdW1iZXJPZlN0cm9rZXNJbkVkaXRhYmxlSW1hZ2V9IHN0cm9rZXMgaW4gZWRpdGFi
bGUgaW1hZ2UgYmVmb3JlIGRyYXdpbmcuPGJyLz5IYWQgJHtudW1iZXJPZlN0cm9rZXNJbkVkaXRh
YmxlSW1hZ2VBZnRlckRyYXdpbmd9IHN0cm9rZSBpbiBlZGl0YWJsZSBpbWFnZSBhZnRlciBkcmF3
aW5nLmA7CisgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Cit9KTsKKzwvc2NyaXB0PgorPC9o
ZWFkPgorPGJvZHkgY29udGVudGVkaXRhYmxlPgorPGRpdiBpZD0ibG9nIj48L2Rpdj4KKzwvYm9k
eT4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3Jlc291cmNlcy91aS1oZWxwZXIuanMgYi9MYXlv
dXRUZXN0cy9yZXNvdXJjZXMvdWktaGVscGVyLmpzCmluZGV4IDY3YzUyYzBiOTAyMWY1MWQ0MmFi
NjE1OWRhOThmNTdkN2JjY2JmMGQuLjFlZTM1YzVhMWM5NmNkOGMyMDZiMTZlZTQ2NWVhZTc4ZDJl
M2JiMTUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3Jlc291cmNlcy91aS1oZWxwZXIuanMKKysr
IGIvTGF5b3V0VGVzdHMvcmVzb3VyY2VzL3VpLWhlbHBlci5qcwpAQCAtNDQzLDYgKzQ0MywxOSBA
QCB3aW5kb3cuVUlIZWxwZXIgPSBjbGFzcyBVSUhlbHBlciB7CiAgICAgICAgIHJldHVybiBuZXcg
UHJvbWlzZShyZXNvbHZlID0+IHRlc3RSdW5uZXIucnVuVUlTY3JpcHQoYHVpQ29udHJvbGxlci5k
cmF3U3F1YXJlSW5FZGl0YWJsZUltYWdlKClgLCByZXNvbHZlKSk7CiAgICAgfQogCisgICAgc3Rh
dGljIHN0eWx1c1RhcEF0KHgsIHkpCisgICAgeworICAgICAgICBpZiAoIXRoaXMuaXNXZWJLaXQy
KCkpCisgICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7CisKKyAgICAgICAgcmV0
dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7CisgICAgICAgICAgICB0ZXN0UnVubmVyLnJ1
blVJU2NyaXB0KGAKKyAgICAgICAgICAgICAgICB1aUNvbnRyb2xsZXIuc3R5bHVzVGFwQXRQb2lu
dCgke3h9LCAke3l9LCAyLCAxLCAwLjUsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgICAg
ICB1aUNvbnRyb2xsZXIudWlTY3JpcHRDb21wbGV0ZSgnRG9uZScpOworICAgICAgICAgICAgICAg
IH0pO2AsIHJlc29sdmUpOworICAgICAgICB9KTsKKyAgICB9CisKICAgICBzdGF0aWMgbnVtYmVy
T2ZTdHJva2VzSW5FZGl0YWJsZUltYWdlKCkKICAgICB7CiAgICAgICAgIGlmICghdGhpcy5pc1dl
YktpdDIoKSkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>357733</attachid>
            <date>2018-12-19 15:08:05 -0800</date>
            <delta_ts>2018-12-19 15:37:10 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-192839-20181219150804.patch</filename>
            <type>text/plain</type>
            <size>29470</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM5MzgyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDhiNTllNzQ3NDAzNjE0MzFj
ZTQyOWIwZjM5YjY2MTU3NTA1ZGI3NDMuLjUwODQ5ODk1YTM3MjRhZmI1ZGM1NWVhZmUwZDIwZDk1
MDI5NTUxNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzYgQEAKKzIwMTgtMTItMTggIFRpbSBIb3J0
b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisKKyAgICAgICAgVUkgcHJvY2VzcyBjcmFz
aCB3aGVuIGZvY3VzaW5nIGFuIGVkaXRhYmxlIGltYWdlCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTI4MzkKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVt
LzQ2Nzg2NjcwPgorCisgICAgICAgIFJldmlld2VkIGJ5IFdlbnNvbiBIc2llaC4KKworICAgICAg
ICAqIFNvdXJjZXNDb2NvYS50eHQ6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRW
aWV3SW50ZXJhY3Rpb24uaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJ
bnRlcmFjdGlvbi5tbToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfcmVxdWlyZXNLZXlib2Fy
ZFdoZW5GaXJzdFJlc3BvbmRlcl0pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IGlucHV0Vmll
d10pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IHJlcXVpcmVzQWNjZXNzb3J5Vmlld10pOgor
ICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9zdGFydEFzc2lzdGluZ05vZGU6dXNlcklzSW50ZXJh
Y3Rpbmc6Ymx1clByZXZpb3VzTm9kZTpjaGFuZ2luZ0FjdGl2aXR5U3RhdGU6dXNlck9iamVjdDpd
KToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfc3RvcEFzc2lzdGluZ05vZGVdKToKKyAgICAg
ICAgKC1bV0tDb250ZW50VmlldyBfaW5zdGFsbElua1BpY2tlckZvckRyYXdpbmdWaWV3V2l0aElE
Ol0pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF91bmluc3RhbGxJbmtQaWNrZXJdKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLSW5rUGlja2VyVmlldy5oOiBSZW5hbWVkIGZyb20gU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLSW5rUGlja2VyQ29udHJvbC5oLgorICAgICAgICAq
IFVJUHJvY2Vzcy9pb3MvV0tJbmtQaWNrZXJWaWV3Lm1tOiBSZW5hbWVkIGZyb20gU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvaW9zL1dLSW5rUGlja2VyQ29udHJvbC5tbS4KKyAgICAgICAgKC1bV0tJ
bmtQaWNrZXJWaWV3IGluaXRXaXRoRHJhd2luZ1ZpZXc6XSk6CisgICAgICAgICgtW1dLSW5rUGlj
a2VyVmlldyBkaWRQaWNrSW5rXSk6CisgICAgICAgICgtW1dLSW5rUGlja2VyVmlldyBpbmxpbmVJ
bmtQaWNrZXJEaWRUb2dnbGVSdWxlcjpdKToKKyAgICAgICAgKC1bV0tJbmtQaWNrZXJWaWV3IGlu
bGluZUlua1BpY2tlcjpkaWRTZWxlY3RUb29sOl0pOgorICAgICAgICAoLVtXS0lua1BpY2tlclZp
ZXcgaW5saW5lSW5rUGlja2VyOmRpZFNlbGVjdENvbG9yOl0pOgorICAgICAgICAoLVtXS0lua1Bp
Y2tlclZpZXcgaW5rUGlja2VyU2l6ZV0pOgorICAgICAgICAoLVtXS0lua1BpY2tlclZpZXcgbGF5
b3V0U3Vidmlld3NdKToKKyAgICAgICAgKC1bV0tJbmtQaWNrZXJWaWV3IHNpemVUaGF0Rml0czpd
KToKKyAgICAgICAgKC1bV0tJbmtQaWNrZXJWaWV3IHZpZXdDb250cm9sbGVyRm9yUG9wb3ZlclBy
ZXNlbnRhdGlvbkZyb21JbmxpbmVJbmtQaWNrZXI6XSk6CisgICAgICAgICogV2ViS2l0Lnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgIE1ha2UgV0tJbmtQaWNrZXJWaWV3IGEgV0tX
ZWJWaWV3IHN1YnZpZXcgaW5zdGVhZCBvZiBhbiBpbnB1dFZpZXcuCisgICAgICAgIEFsc28sIGRv
bid0IGZvcmNlIHRoZSBrZXlib2FyZCB0byBiZSB2aXNpYmxlIHdoZW4gYW4gZWRpdGFibGUgaW1h
Z2UgaXMgZm9jdXNlZC4KKwogMjAxOC0xMi0xOSAgVHJ1aXR0IFNhdmVsbCAgPHRzYXZlbGxAYXBw
bGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIyMzkzNTguCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2ViS2l0L1Nv
dXJjZXNDb2NvYS50eHQKaW5kZXggZjFhMDU3YTQ1ZGIwZmEzNWNlMTBkY2Y0MTk2OTNlZmU4MThh
NmRhMy4uZWQ2NWI4ZmE3MzllOGUxOTYwYjNkY2U2Yjg2NGU1MTQ1ZTJmOTE4MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291
cmNlc0NvY29hLnR4dApAQCAtMzkwLDcgKzM5MCw3IEBAIFVJUHJvY2Vzcy9pb3MvV0tDb250ZW50
Vmlld0ludGVyYWN0aW9uLm1tIEBuby11bmlmeQogVUlQcm9jZXNzL2lvcy9XS0RyYXdpbmdWaWV3
Lm1tCiBVSVByb2Nlc3MvaW9zL1dLR2VvbG9jYXRpb25Qcm92aWRlcklPUy5tbQogVUlQcm9jZXNz
L2lvcy9XS0dlb2xvY2F0aW9uUHJvdmlkZXJJT1NPYmpDU2VjdXJpdHlPcmlnaW4ubW0KLVVJUHJv
Y2Vzcy9pb3MvV0tJbmtQaWNrZXJDb250cm9sLm1tCitVSVByb2Nlc3MvaW9zL1dLSW5rUGlja2Vy
Vmlldy5tbQogVUlQcm9jZXNzL2lvcy9XS0luc3BlY3Rvck5vZGVTZWFyY2hHZXN0dXJlUmVjb2du
aXplci5tbQogVUlQcm9jZXNzL2lvcy9XS0tleWJvYXJkU2Nyb2xsaW5nQW5pbWF0b3IubW0KIFVJ
UHJvY2Vzcy9pb3MvV0tMZWdhY3lQREZWaWV3Lm1tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmgKaW5kZXggZTc5NGUzYzYz
MWRkZWI1M2ExYTQ2OWI3OTA5NDI5YjRjYmEzYmM2MS4uNWRkMThmMDhiZjYxMDYxNWQwNjY0ZTNl
ZDMxYTU3NjcyOWQwMGIxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9z
L1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24uaApAQCAtOTYsNiArOTYsNyBAQCBjbGFzcyBX
ZWJQYWdlUHJveHk7CiBAY2xhc3MgV0tGb2N1c2VkRm9ybUNvbnRyb2xWaWV3OwogQGNsYXNzIFdL
Rm9ybUlucHV0Q29udHJvbDsKIEBjbGFzcyBXS0Zvcm1JbnB1dFNlc3Npb247CitAY2xhc3MgV0tJ
bmtQaWNrZXJWaWV3OwogQGNsYXNzIFdLSW5zcGVjdG9yTm9kZVNlYXJjaEdlc3R1cmVSZWNvZ25p
emVyOwogCiB0eXBlZGVmIHZvaWQgKF5VSVdLQXV0b2NvcnJlY3Rpb25Db21wbGV0aW9uSGFuZGxl
cikoVUlXS0F1dG9jb3JyZWN0aW9uUmVjdHMgKnJlY3RzRm9ySW5wdXQpOwpAQCAtMjg0LDYgKzI4
NSwxMCBAQCBzdHJ1Y3QgV0tBdXRvQ29ycmVjdGlvbkRhdGEgewogICAgIFJldGFpblB0cjxOU0Fy
cmF5PFVJVGV4dFN1Z2dlc3Rpb24gKj4+IF9kYXRhTGlzdFRleHRTdWdnZXN0aW9uczsKICNlbmRp
ZgogCisjaWYgSEFWRShQRU5DSUxLSVQpCisgICAgUmV0YWluUHRyPFdLSW5rUGlja2VyVmlldz4g
X2lua1BpY2tlcjsKKyNlbmRpZgorCiAgICAgQk9PTCBfaXNFZGl0YWJsZTsKICAgICBCT09MIF9z
aG93aW5nVGV4dFN0eWxlT3B0aW9uczsKICAgICBCT09MIF9oYXNWYWxpZFBvc2l0aW9uSW5mb3Jt
YXRpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50
Vmlld0ludGVyYWN0aW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVu
dFZpZXdJbnRlcmFjdGlvbi5tbQppbmRleCBkZWU4OTg4YzQyMGFkY2NkNTdlZGIyY2RjOWI0Mjlh
MWY1ZTljN2I0Li41NDNhNWUyMWM4ODA5NjZiZTE0YWQwMDczYzM0MTZiYjdjYzliMjcxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0
aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50
ZXJhY3Rpb24ubW0KQEAgLTQ3LDcgKzQ3LDcgQEAKICNpbXBvcnQgIldLRm9ybUlucHV0Q29udHJv
bC5oIgogI2ltcG9ydCAiV0tGb3JtU2VsZWN0Q29udHJvbC5oIgogI2ltcG9ydCAiV0tJbWFnZVBy
ZXZpZXdWaWV3Q29udHJvbGxlci5oIgotI2ltcG9ydCAiV0tJbmtQaWNrZXJDb250cm9sLmgiCisj
aW1wb3J0ICJXS0lua1BpY2tlclZpZXcuaCIKICNpbXBvcnQgIldLSW5zcGVjdG9yTm9kZVNlYXJj
aEdlc3R1cmVSZWNvZ25pemVyLmgiCiAjaW1wb3J0ICJXS05TVVJMRXh0cmFzLmgiCiAjaW1wb3J0
ICJXS1ByZXZpZXdBY3Rpb25JdGVtSWRlbnRpZmllcnMuaCIKQEAgLTEzNjUsNiArMTM2NSw3IEBA
IC0gKEJPT0wpX3JlcXVpcmVzS2V5Ym9hcmRXaGVuRmlyc3RSZXNwb25kZXIKICAgICAvLyBGSVhN
RTogV2Ugc2hvdWxkIGFkZCB0aGUgbG9naWMgdG8gaGFuZGxlIGtleWJvYXJkIHZpc2liaWxpdHkg
ZHVyaW5nIGZvY3VzIHJlZGlyZWN0cy4KICAgICBzd2l0Y2ggKF9hc3Npc3RlZE5vZGVJbmZvcm1h
dGlvbi5lbGVtZW50VHlwZSkgewogICAgIGNhc2UgV2ViS2l0OjpJbnB1dFR5cGU6Ok5vbmU6Cisg
ICAgY2FzZSBXZWJLaXQ6OklucHV0VHlwZTo6RHJhd2luZzoKICAgICAgICAgcmV0dXJuIE5POwog
ICAgIGNhc2UgV2ViS2l0OjpJbnB1dFR5cGU6OlNlbGVjdDoKICNpZiBFTkFCTEUoSU5QVVRfVFlQ
RV9DT0xPUikKQEAgLTEzNzUsOCArMTM3Niw2IEBAIC0gKEJPT0wpX3JlcXVpcmVzS2V5Ym9hcmRX
aGVuRmlyc3RSZXNwb25kZXIKICAgICBjYXNlIFdlYktpdDo6SW5wdXRUeXBlOjpEYXRlVGltZUxv
Y2FsOgogICAgIGNhc2UgV2ViS2l0OjpJbnB1dFR5cGU6OlRpbWU6CiAgICAgICAgIHJldHVybiAh
Y3VycmVudFVzZXJJbnRlcmZhY2VJZGlvbUlzUGFkKCk7Ci0gICAgY2FzZSBXZWJLaXQ6OklucHV0
VHlwZTo6RHJhd2luZzoKLSAgICAgICAgcmV0dXJuIFlFUzsKICAgICBkZWZhdWx0OgogICAgICAg
ICByZXR1cm4gIV9hc3Npc3RlZE5vZGVJbmZvcm1hdGlvbi5pc1JlYWRPbmx5OwogICAgIH0KQEAg
LTE0MjUsMTQgKzE0MjQsNiBAQCAtIChVSVZpZXcgKilpbnB1dFZpZXcKICAgICAgICAgY2FzZSBX
ZWJLaXQ6OklucHV0VHlwZTo6Q29sb3I6CiAgICAgICAgICAgICBfaW5wdXRQZXJpcGhlcmFsID0g
YWRvcHROUyhbW1dLRm9ybUNvbG9yQ29udHJvbCBhbGxvY10gaW5pdFdpdGhWaWV3OnNlbGZdKTsK
ICAgICAgICAgICAgIGJyZWFrOwotI2VuZGlmCi0gICAgICAgIGNhc2UgV2ViS2l0OjpJbnB1dFR5
cGU6OkRyYXdpbmc6Ci0jaWYgSEFWRShQRU5DSUxLSVQpCi0gICAgICAgICAgICBfaW5wdXRQZXJp
cGhlcmFsID0gYWRvcHROUyhbW1dLSW5rUGlja2VyQ29udHJvbCBhbGxvY10gaW5pdFdpdGhEcmF3
aW5nVmlldzpfcGFnZS0+ZWRpdGFibGVJbWFnZUNvbnRyb2xsZXIoKS5lZGl0YWJsZUltYWdlKF9h
c3Npc3RlZE5vZGVJbmZvcm1hdGlvbi5lbWJlZGRlZFZpZXdJRCktPmRyYXdpbmdWaWV3LmdldCgp
XSk7Ci0gICAgICAgICAgICBicmVhazsKLSNlbHNlCi0gICAgICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKLSAgICAgICAgICAgIHJldHVybiBbW1VJVmlldyBuZXddIGF1dG9yZWxlYXNlXTsK
ICNlbmRpZgogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgX2lucHV0UGVyaXBoZXJhbCA9
IGFkb3B0TlMoW1tXS0Zvcm1JbnB1dENvbnRyb2wgYWxsb2NdIGluaXRXaXRoVmlldzpzZWxmXSk7
CkBAIC0yMTk0LDYgKzIxODUsNyBAQCAtIChCT09MKXJlcXVpcmVzQWNjZXNzb3J5VmlldwogCiAg
ICAgc3dpdGNoIChfYXNzaXN0ZWROb2RlSW5mb3JtYXRpb24uZWxlbWVudFR5cGUpIHsKICAgICBj
YXNlIFdlYktpdDo6SW5wdXRUeXBlOjpOb25lOgorICAgIGNhc2UgV2ViS2l0OjpJbnB1dFR5cGU6
OkRyYXdpbmc6CiAgICAgICAgIHJldHVybiBOTzsKICAgICBjYXNlIFdlYktpdDo6SW5wdXRUeXBl
OjpUZXh0OgogICAgIGNhc2UgV2ViS2l0OjpJbnB1dFR5cGU6OlBhc3N3b3JkOgpAQCAtMjIxNiw4
ICsyMjA4LDYgQEAgLSAoQk9PTClyZXF1aXJlc0FjY2Vzc29yeVZpZXcKICAgICBjYXNlIFdlYktp
dDo6SW5wdXRUeXBlOjpDb2xvcjoKICNlbmRpZgogICAgICAgICByZXR1cm4gIWN1cnJlbnRVc2Vy
SW50ZXJmYWNlSWRpb21Jc1BhZCgpOwotICAgIGNhc2UgV2ViS2l0OjpJbnB1dFR5cGU6OkRyYXdp
bmc6Ci0gICAgICAgIHJldHVybiBZRVM7CiAgICAgfQogfQogCkBAIC00NDQ3LDYgKzQ0MzcsMTEg
QEAgLSAodm9pZClfc3RhcnRBc3Npc3RpbmdOb2RlOihjb25zdCBXZWJLaXQ6OkFzc2lzdGVkTm9k
ZUluZm9ybWF0aW9uJilpbmZvcm1hdGlvbgogICAgIGlmIChibHVyUHJldmlvdXNOb2RlKQogICAg
ICAgICBbc2VsZiBfc3RvcEFzc2lzdGluZ05vZGVdOwogCisjaWYgSEFWRShQRU5DSUxLSVQpCisg
ICAgaWYgKGluZm9ybWF0aW9uLmVsZW1lbnRUeXBlID09IFdlYktpdDo6SW5wdXRUeXBlOjpEcmF3
aW5nKQorICAgICAgICBbc2VsZiBfaW5zdGFsbElua1BpY2tlckZvckRyYXdpbmdWaWV3V2l0aElE
OmluZm9ybWF0aW9uLmVtYmVkZGVkVmlld0lEXTsKKyNlbmRpZgorCiAgICAgaWYgKCFzaG91bGRT
aG93S2V5Ym9hcmQpCiAgICAgICAgIHJldHVybjsKIApAQCAtNDQ5Nyw2ICs0NDkyLDcgQEAgLSAo
dm9pZClfc3RhcnRBc3Npc3RpbmdOb2RlOihjb25zdCBXZWJLaXQ6OkFzc2lzdGVkTm9kZUluZm9y
bWF0aW9uJilpbmZvcm1hdGlvbgogICAgIGNhc2UgV2ViS2l0OjpJbnB1dFR5cGU6OlRpbWU6CiAg
ICAgY2FzZSBXZWJLaXQ6OklucHV0VHlwZTo6TW9udGg6CiAgICAgY2FzZSBXZWJLaXQ6OklucHV0
VHlwZTo6RGF0ZToKKyAgICBjYXNlIFdlYktpdDo6SW5wdXRUeXBlOjpEcmF3aW5nOgogI2lmIEVO
QUJMRShJTlBVVF9UWVBFX0NPTE9SKQogICAgIGNhc2UgV2ViS2l0OjpJbnB1dFR5cGU6OkNvbG9y
OgogI2VuZGlmCkBAIC00NTMwLDYgKzQ1MjYsMTEgQEAgLSAodm9pZClfc3RvcEFzc2lzdGluZ05v
ZGUKIHsKICAgICBTZXRGb3JTY29wZTxCT09MPiBpc0JsdXJyaW5nRm9jdXNlZE5vZGVGb3JTY29w
ZSB7IF9pc0JsdXJyaW5nRm9jdXNlZE5vZGUsIFlFUyB9OwogCisjaWYgSEFWRShQRU5DSUxLSVQp
CisgICAgaWYgKF9pbmtQaWNrZXIpCisgICAgICAgIFtzZWxmIF91bmluc3RhbGxJbmtQaWNrZXJd
OworI2VuZGlmCisKICAgICBbX2Zvcm1JbnB1dFNlc3Npb24gaW52YWxpZGF0ZV07CiAgICAgX2Zv
cm1JbnB1dFNlc3Npb24gPSBuaWw7CiAKQEAgLTYyMTAsNiArNjIxMSwzMCBAQCAtICh2b2lkKV9o
b3Zlckdlc3R1cmVSZWNvZ25pemVyQ2hhbmdlZDooVUlHZXN0dXJlUmVjb2duaXplciAqKWdlc3R1
cmVSZWNvZ25pemVyCiB9CiAjZW5kaWYKIAorI2lmIEhBVkUoUEVOQ0lMS0lUKQorLSAodm9pZClf
aW5zdGFsbElua1BpY2tlckZvckRyYXdpbmdWaWV3V2l0aElEOihXZWJDb3JlOjpHcmFwaGljc0xh
eWVyOjpFbWJlZGRlZFZpZXdJRCllbWJlZGRlZFZpZXdJRAoreworICAgIF9pbmtQaWNrZXIgPSBh
ZG9wdE5TKFtbV0tJbmtQaWNrZXJWaWV3IGFsbG9jXSBpbml0V2l0aERyYXdpbmdWaWV3Ol9wYWdl
LT5lZGl0YWJsZUltYWdlQ29udHJvbGxlcigpLmVkaXRhYmxlSW1hZ2UoZW1iZWRkZWRWaWV3SUQp
LT5kcmF3aW5nVmlldy5nZXQoKV0pOworICAgIFtfaW5rUGlja2VyIHNpemVUb0ZpdF07CisgICAg
W19pbmtQaWNrZXIgc2V0VHJhbnNsYXRlc0F1dG9yZXNpemluZ01hc2tJbnRvQ29uc3RyYWludHM6
Tk9dOworICAgIFtfd2ViVmlldyBhZGRTdWJ2aWV3Ol9pbmtQaWNrZXIuZ2V0KCldOworCisgICAg
W05TTGF5b3V0Q29uc3RyYWludCBhY3RpdmF0ZUNvbnN0cmFpbnRzOkBbCisgICAgICAgIFtbX2lu
a1BpY2tlciBoZWlnaHRBbmNob3JdIGNvbnN0cmFpbnRFcXVhbFRvQ29uc3RhbnQ6W19pbmtQaWNr
ZXIgZnJhbWVdLnNpemUuaGVpZ2h0XSwKKyAgICAgICAgW1tfaW5rUGlja2VyIGJvdHRvbUFuY2hv
cl0gY29uc3RyYWludEVxdWFsVG9BbmNob3I6X3dlYlZpZXcuc2FmZUFyZWFMYXlvdXRHdWlkZS5i
b3R0b21BbmNob3JdLAorICAgICAgICBbW19pbmtQaWNrZXIgbGVmdEFuY2hvcl0gY29uc3RyYWlu
dEVxdWFsVG9BbmNob3I6X3dlYlZpZXcuc2FmZUFyZWFMYXlvdXRHdWlkZS5sZWZ0QW5jaG9yXSwK
KyAgICAgICAgW1tfaW5rUGlja2VyIHJpZ2h0QW5jaG9yXSBjb25zdHJhaW50RXF1YWxUb0FuY2hv
cjpfd2ViVmlldy5zYWZlQXJlYUxheW91dEd1aWRlLnJpZ2h0QW5jaG9yXSwKKyAgICBdXTsKK30K
KworLSAodm9pZClfdW5pbnN0YWxsSW5rUGlja2VyCit7CisgICAgW19pbmtQaWNrZXIgcmVtb3Zl
RnJvbVN1cGVydmlld107CisgICAgX2lua1BpY2tlciA9IG5pbDsKK30KKworI2VuZGlmIC8vIEhB
VkUoUEVOQ0lMS0lUKQorCiBAZW5kCiAKIEBpbXBsZW1lbnRhdGlvbiBXS0NvbnRlbnRWaWV3IChX
S1Rlc3RpbmcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tJbmtQ
aWNrZXJDb250cm9sLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tJbmtQaWNrZXJD
b250cm9sLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA4Y2RhYmZhYzNlNDg2OTZl
ZDg5N2EzYWJmZTFmZTA2NTQ0ODYzNzAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLSW5rUGlja2VyQ29u
dHJvbC5oCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZiBI
QVZFKFBFTkNJTEtJVCkKLQotI2ltcG9ydCAiV0tGb3JtUGVyaXBoZXJhbC5oIgotCi1PQkpDX0NM
QVNTIFdLRHJhd2luZ1ZpZXc7Ci0KLUBpbnRlcmZhY2UgV0tJbmtQaWNrZXJDb250cm9sIDogTlNP
YmplY3QgPFdLRm9ybVBlcmlwaGVyYWw+Ci0KLS0gKGluc3RhbmNldHlwZSlpbml0V2l0aERyYXdp
bmdWaWV3OihXS0RyYXdpbmdWaWV3ICopZHJhd2luZ1ZpZXc7Ci0KLUBlbmQKLQotCi0jZW5kaWYg
Ly8gSEFWRShQRU5DSUxLSVQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9p
b3MvV0tJbmtQaWNrZXJDb250cm9sLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dL
SW5rUGlja2VyQ29udHJvbC5tbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWJkMGFm
ZGE2YjNhNDM1NGFlYzNlOTUzZWE2YTY5ZWI0OTcyYzc0ZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tJ
bmtQaWNrZXJDb250cm9sLm1tCisrKyAvZGV2L251bGwKQEAgLTEsMTQxICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LSAqLwotCi0jaW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIldLSW5rUGlja2VyQ29udHJvbC5o
IgotCi0jaWYgSEFWRShQRU5DSUxLSVQpCi0KLSNpbXBvcnQgIldLRHJhd2luZ1ZpZXcuaCIKLQot
I2ltcG9ydCAiUGVuY2lsS2l0U29mdExpbmsuaCIKLQotQGludGVyZmFjZSBXS0lua1BpY2tlclZp
ZXcgOiBVSVZpZXcgPFBLSW5saW5lSW5rUGlja2VyRGVsZWdhdGU+Ci1AZW5kCi0KLUBpbXBsZW1l
bnRhdGlvbiBXS0lua1BpY2tlclZpZXcgewotICAgIFJldGFpblB0cjxQS0lubGluZUlua1BpY2tl
cj4gX2lubGluZVBpY2tlcjsKLSAgICBSZXRhaW5QdHI8V0tEcmF3aW5nVmlldz4gX2RyYXdpbmdW
aWV3OwotfQotCi0tIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhGcmFtZTooQ0dSZWN0KWZyYW1lIGRy
YXdpbmdWaWV3OihXS0RyYXdpbmdWaWV3ICopZHJhd2luZ1ZpZXcKLXsKLSAgICBzZWxmID0gW3N1
cGVyIGluaXRXaXRoRnJhbWU6ZnJhbWVdOwotICAgIGlmICghc2VsZikKLSAgICAgICAgcmV0dXJu
IG5pbDsKLQotICAgIF9pbmxpbmVQaWNrZXIgPSBhZG9wdE5TKFtXZWJLaXQ6OmFsbG9jUEtJbmxp
bmVJbmtQaWNrZXJJbnN0YW5jZSgpIGluaXRdKTsKLSAgICBbX2lubGluZVBpY2tlciBzZXRTZWxl
Y3RlZEluazpbZHJhd2luZ1ZpZXcgY2FudmFzVmlld10uaW5rIGFuaW1hdGVkOk5PXTsKLSAgICBb
X2lubGluZVBpY2tlciBhZGRUYXJnZXQ6c2VsZiBhY3Rpb246QHNlbGVjdG9yKGRpZFBpY2tJbmsp
IGZvckNvbnRyb2xFdmVudHM6VUlDb250cm9sRXZlbnRWYWx1ZUNoYW5nZWRdOwotICAgIFtfaW5s
aW5lUGlja2VyIHNldERlbGVnYXRlOnNlbGZdOwotCi0gICAgX2RyYXdpbmdWaWV3ID0gZHJhd2lu
Z1ZpZXc7Ci0gICAgW3NlbGYgYWRkU3VidmlldzpfaW5saW5lUGlja2VyLmdldCgpXTsKLQotICAg
IHJldHVybiBzZWxmOwotfQotCi0tICh2b2lkKWRpZFBpY2tJbmsKLXsKLSAgICBbX2RyYXdpbmdW
aWV3IGNhbnZhc1ZpZXddLmluayA9IFtfaW5saW5lUGlja2VyIHNlbGVjdGVkSW5rXTsKLX0KLQot
LSAodm9pZClpbmxpbmVJbmtQaWNrZXJEaWRUb2dnbGVSdWxlcjooUEtJbmxpbmVJbmtQaWNrZXIg
KilpbmxpbmVJbmtQaWNrZXIKLXsKLSAgICBbX2RyYXdpbmdWaWV3IGNhbnZhc1ZpZXddLnJ1bGVy
RW5hYmxlZCA9ICFbX2RyYXdpbmdWaWV3IGNhbnZhc1ZpZXddLnJ1bGVyRW5hYmxlZDsKLX0KLQot
LSAodm9pZClpbmxpbmVJbmtQaWNrZXI6KFBLSW5saW5lSW5rUGlja2VyICopaW5saW5lSW5rUGlj
a2VyIGRpZFNlbGVjdFRvb2w6KFBLSW5rSWRlbnRpZmllcilpZGVudGlmZXIKLXsKLSAgICBbc2Vs
ZiBkaWRQaWNrSW5rXTsKLX0KLQotLSAodm9pZClpbmxpbmVJbmtQaWNrZXI6KFBLSW5saW5lSW5r
UGlja2VyICopaW5saW5lSW5rUGlja2VyIGRpZFNlbGVjdENvbG9yOihVSUNvbG9yICopY29sb3IK
LXsKLSAgICBbc2VsZiBkaWRQaWNrSW5rXTsKLX0KLQotLSAoQ0dTaXplKWlua1BpY2tlclNpemUK
LXsKLSAgICBDR1NpemUga2V5Ym9hcmRTaXplID0gW1VJS2V5Ym9hcmQgZGVmYXVsdFNpemVGb3JJ
bnRlcmZhY2VPcmllbnRhdGlvbjpbVUlBcHAgaW50ZXJmYWNlT3JpZW50YXRpb25dXTsKLSAgICBy
ZXR1cm4gW19pbmxpbmVQaWNrZXIgc2l6ZVRoYXRGaXRzOmtleWJvYXJkU2l6ZV07Ci19Ci0KLS0g
KHZvaWQpbGF5b3V0U3Vidmlld3MKLXsKLSAgICBDR1NpemUgcGlja2VyU2l6ZSA9IHNlbGYuaW5r
UGlja2VyU2l6ZTsKLSAgICBbX2lubGluZVBpY2tlciBzZXRGcmFtZTpDR1JlY3RNYWtlKENHUmVj
dEdldE1pZFgoc2VsZi5ib3VuZHMpIC0gKHBpY2tlclNpemUud2lkdGggLyAyKSwgMCwgcGlja2Vy
U2l6ZS53aWR0aCwgcGlja2VyU2l6ZS5oZWlnaHQpXTsKLX0KLQotLSAoQ0dTaXplKXNpemVUaGF0
Rml0czooQ0dTaXplKXNpemUKLXsKLSAgICBDR1NpemUga2V5Ym9hcmRTaXplID0gW1VJS2V5Ym9h
cmQgZGVmYXVsdFNpemVGb3JJbnRlcmZhY2VPcmllbnRhdGlvbjpbVUlBcHAgaW50ZXJmYWNlT3Jp
ZW50YXRpb25dXTsKLSAgICByZXR1cm4gQ0dTaXplTWFrZShrZXlib2FyZFNpemUud2lkdGgsIHNl
bGYuaW5rUGlja2VyU2l6ZS5oZWlnaHQpOwotfQotCi0tIChVSVZpZXdDb250cm9sbGVyICopdmll
d0NvbnRyb2xsZXJGb3JQb3BvdmVyUHJlc2VudGF0aW9uRnJvbUlubGluZUlua1BpY2tlcjooUEtJ
bmxpbmVJbmtQaWNrZXIgKilpbmxpbmVJbmtQaWNrZXIKLXsKLSAgICByZXR1cm4gW1VJVmlld0Nv
bnRyb2xsZXIgX3ZpZXdDb250cm9sbGVyRm9yRnVsbFNjcmVlblByZXNlbnRhdGlvbkZyb21WaWV3
Ol9kcmF3aW5nVmlldy5nZXQoKV07Ci19Ci0KLUBlbmQKLQotQGltcGxlbWVudGF0aW9uIFdLSW5r
UGlja2VyQ29udHJvbCB7Ci0gICAgUmV0YWluUHRyPFdLSW5rUGlja2VyVmlldz4gX3BpY2tlcjsK
LSAgICBSZXRhaW5QdHI8V0tEcmF3aW5nVmlldz4gX2RyYXdpbmdWaWV3OwotfQotCi0tIChpbnN0
YW5jZXR5cGUpaW5pdFdpdGhEcmF3aW5nVmlldzooV0tEcmF3aW5nVmlldyAqKWRyYXdpbmdWaWV3
Ci17Ci0gICAgc2VsZiA9IFtzdXBlciBpbml0XTsKLSAgICBpZiAoIXNlbGYpCi0gICAgICAgIHJl
dHVybiBuaWw7Ci0KLSAgICBfZHJhd2luZ1ZpZXcgPSBkcmF3aW5nVmlldzsKLQotICAgIHJldHVy
biBzZWxmOwotfQotCi0tICh2b2lkKWJlZ2luRWRpdGluZwotewotCi19Ci0KLS0gKHZvaWQpZW5k
RWRpdGluZwotewotCi19Ci0KLS0gKFVJVmlldyAqKWFzc2lzdGFudFZpZXcKLXsKLSAgICBpZiAo
IV9waWNrZXIpCi0gICAgICAgIF9waWNrZXIgPSBhZG9wdE5TKFtbV0tJbmtQaWNrZXJWaWV3IGFs
bG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdFplcm8gZHJhd2luZ1ZpZXc6X2RyYXdpbmdWaWV3Lmdl
dCgpXSk7Ci0gICAgW19waWNrZXIgc2l6ZVRvRml0XTsKLSAgICByZXR1cm4gX3BpY2tlci5nZXQo
KTsKLX0KLQotQGVuZAotCi0jZW5kaWYgLy8gSEFWRShQRU5DSUxLSVQpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tJbmtQaWNrZXJWaWV3LmggYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9pb3MvV0tJbmtQaWNrZXJWaWV3LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjEzM2EyNzVi
OTIzZjE1YWZiZTJkOGViN2E5MzIyYTNhYjIxYjI2YgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0lua1BpY2tlclZpZXcuaApAQCAtMCwwICsxLDQyIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2lmIEhBVkUoUEVOQ0lMS0lUKQorCisjaW1wb3J0IDxVSUtpdC9VSUtp
dC5oPgorCitPQkpDX0NMQVNTIFdLRHJhd2luZ1ZpZXc7CisKK0BpbnRlcmZhY2UgV0tJbmtQaWNr
ZXJWaWV3IDogVUlWaWV3CisKKy0gKGluc3RhbmNldHlwZSlpbml0IE5TX1VOQVZBSUxBQkxFOwor
LSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRnJhbWU6KENHUmVjdClmcmFtZSBOU19VTkFWQUlMQUJM
RTsKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aENvZGVyOihOU0NvZGVyICopY29kZXIgTlNfVU5B
VkFJTEFCTEU7CisKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aERyYXdpbmdWaWV3OihXS0RyYXdp
bmdWaWV3ICopZHJhd2luZ1ZpZXcgTlNfREVTSUdOQVRFRF9JTklUSUFMSVpFUjsKKworQGVuZAor
CisjZW5kaWYgLy8gSEFWRShQRU5DSUxLSVQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9pb3MvV0tJbmtQaWNrZXJWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
aW9zL1dLSW5rUGlja2VyVmlldy5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45YTM3NDM4ZTU4NzI1ODhkNDQwMDUw
YzRiZjRiYjgxZGQ0YWZjYTgzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL1dLSW5rUGlja2VyVmlldy5tbQpAQCAtMCwwICsxLDEwNSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiV0tJbmtQaWNrZXJWaWV3LmgiCisKKyNp
ZiBIQVZFKFBFTkNJTEtJVCkKKworI2ltcG9ydCAiV0tEcmF3aW5nVmlldy5oIgorCisjaW1wb3J0
ICJQZW5jaWxLaXRTb2Z0TGluay5oIgorCitAaW50ZXJmYWNlIFdLSW5rUGlja2VyVmlldyAoKSA8
UEtJbmxpbmVJbmtQaWNrZXJEZWxlZ2F0ZT4KK0BlbmQKKworQGltcGxlbWVudGF0aW9uIFdLSW5r
UGlja2VyVmlldyB7CisgICAgUmV0YWluUHRyPFBLSW5saW5lSW5rUGlja2VyPiBfaW5saW5lUGlj
a2VyOworICAgIFJldGFpblB0cjxXS0RyYXdpbmdWaWV3PiBfZHJhd2luZ1ZpZXc7Cit9CisKKy0g
KGluc3RhbmNldHlwZSlpbml0V2l0aERyYXdpbmdWaWV3OihXS0RyYXdpbmdWaWV3ICopZHJhd2lu
Z1ZpZXcKK3sKKyAgICBzZWxmID0gW3N1cGVyIGluaXRXaXRoRnJhbWU6Q0dSZWN0WmVyb107Cisg
ICAgaWYgKCFzZWxmKQorICAgICAgICByZXR1cm4gbmlsOworCisgICAgX2lubGluZVBpY2tlciA9
IGFkb3B0TlMoW1dlYktpdDo6YWxsb2NQS0lubGluZUlua1BpY2tlckluc3RhbmNlKCkgaW5pdF0p
OworICAgIFtfaW5saW5lUGlja2VyIHNldFNlbGVjdGVkSW5rOltkcmF3aW5nVmlldyBjYW52YXNW
aWV3XS5pbmsgYW5pbWF0ZWQ6Tk9dOworICAgIFtfaW5saW5lUGlja2VyIGFkZFRhcmdldDpzZWxm
IGFjdGlvbjpAc2VsZWN0b3IoZGlkUGlja0luaykgZm9yQ29udHJvbEV2ZW50czpVSUNvbnRyb2xF
dmVudFZhbHVlQ2hhbmdlZF07CisgICAgW19pbmxpbmVQaWNrZXIgc2V0RGVsZWdhdGU6c2VsZl07
CisKKyAgICBfZHJhd2luZ1ZpZXcgPSBkcmF3aW5nVmlldzsKKyAgICBbc2VsZiBhZGRTdWJ2aWV3
Ol9pbmxpbmVQaWNrZXIuZ2V0KCldOworCisgICAgcmV0dXJuIHNlbGY7Cit9CisKKy0gKHZvaWQp
ZGlkUGlja0luaworeworICAgIFtfZHJhd2luZ1ZpZXcgY2FudmFzVmlld10uaW5rID0gW19pbmxp
bmVQaWNrZXIgc2VsZWN0ZWRJbmtdOworfQorCistICh2b2lkKWlubGluZUlua1BpY2tlckRpZFRv
Z2dsZVJ1bGVyOihQS0lubGluZUlua1BpY2tlciAqKWlubGluZUlua1BpY2tlcgoreworICAgIFtf
ZHJhd2luZ1ZpZXcgY2FudmFzVmlld10ucnVsZXJFbmFibGVkID0gIVtfZHJhd2luZ1ZpZXcgY2Fu
dmFzVmlld10ucnVsZXJFbmFibGVkOworfQorCistICh2b2lkKWlubGluZUlua1BpY2tlcjooUEtJ
bmxpbmVJbmtQaWNrZXIgKilpbmxpbmVJbmtQaWNrZXIgZGlkU2VsZWN0VG9vbDooUEtJbmtJZGVu
dGlmaWVyKWlkZW50aWZlcgoreworICAgIFtzZWxmIGRpZFBpY2tJbmtdOworfQorCistICh2b2lk
KWlubGluZUlua1BpY2tlcjooUEtJbmxpbmVJbmtQaWNrZXIgKilpbmxpbmVJbmtQaWNrZXIgZGlk
U2VsZWN0Q29sb3I6KFVJQ29sb3IgKiljb2xvcgoreworICAgIFtzZWxmIGRpZFBpY2tJbmtdOwor
fQorCistIChDR1NpemUpaW5rUGlja2VyU2l6ZQoreworICAgIENHU2l6ZSBrZXlib2FyZFNpemUg
PSBbVUlLZXlib2FyZCBkZWZhdWx0U2l6ZUZvckludGVyZmFjZU9yaWVudGF0aW9uOltVSUFwcCBp
bnRlcmZhY2VPcmllbnRhdGlvbl1dOworICAgIHJldHVybiBbX2lubGluZVBpY2tlciBzaXplVGhh
dEZpdHM6a2V5Ym9hcmRTaXplXTsKK30KKworLSAodm9pZClsYXlvdXRTdWJ2aWV3cworeworICAg
IENHU2l6ZSBwaWNrZXJTaXplID0gc2VsZi5pbmtQaWNrZXJTaXplOworICAgIFtfaW5saW5lUGlj
a2VyIHNldEZyYW1lOkNHUmVjdE1ha2UoQ0dSZWN0R2V0TWlkWChzZWxmLmJvdW5kcykgLSAocGlj
a2VyU2l6ZS53aWR0aCAvIDIpLCAwLCBwaWNrZXJTaXplLndpZHRoLCBwaWNrZXJTaXplLmhlaWdo
dCldOworfQorCistIChDR1NpemUpc2l6ZVRoYXRGaXRzOihDR1NpemUpc2l6ZQoreworICAgIENH
U2l6ZSBrZXlib2FyZFNpemUgPSBbVUlLZXlib2FyZCBkZWZhdWx0U2l6ZUZvckludGVyZmFjZU9y
aWVudGF0aW9uOltVSUFwcCBpbnRlcmZhY2VPcmllbnRhdGlvbl1dOworICAgIHJldHVybiBDR1Np
emVNYWtlKGtleWJvYXJkU2l6ZS53aWR0aCwgc2VsZi5pbmtQaWNrZXJTaXplLmhlaWdodCk7Cit9
CisKKy0gKFVJVmlld0NvbnRyb2xsZXIgKil2aWV3Q29udHJvbGxlckZvclBvcG92ZXJQcmVzZW50
YXRpb25Gcm9tSW5saW5lSW5rUGlja2VyOihQS0lubGluZUlua1BpY2tlciAqKWlubGluZUlua1Bp
Y2tlcgoreworICAgIHJldHVybiBbVUlWaWV3Q29udHJvbGxlciBfdmlld0NvbnRyb2xsZXJGb3JG
dWxsU2NyZWVuUHJlc2VudGF0aW9uRnJvbVZpZXc6X2RyYXdpbmdWaWV3LmdldCgpXTsKK30KKwor
QGVuZAorCisjZW5kaWYgLy8gSEFWRShQRU5DSUxLSVQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJL
aXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBmZmI4Zjk1MDM2Yjg1MmI3ODU0YzQ5
NGY0NDIwYmE5NThhMTI4MmQ1Li5lZjFiMDVkYjQ3ZGRiMGI4ZjE0ZjJhZWIxZDA0NDA4NmFhYTM2
ODYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKQEAgLTI1NDYsOCArMjU0Niw2IEBACiAJCTJENkFCNTQwMTkyQjFDNEEwMDNBOUZEMSAvKiBX
S1BERlBhZ2VOdW1iZXJJbmRpY2F0b3IubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpj
cHA7IG5hbWUgPSBXS1BERlBhZ2VOdW1iZXJJbmRpY2F0b3IubW07IHBhdGggPSBpb3MvV0tQREZQ
YWdlTnVtYmVySW5kaWNhdG9yLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyRDZC
MzcxOTE4QTk2N0FEMDA0MkFFODAgLyogX1dLVGh1bWJuYWlsVmlldy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBfV0tUaHVtYm5haWxWaWV3Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTJENkIzNzFBMThBOTY3QUQwMDQyQUU4MCAvKiBfV0tUaHVtYm5haWxWaWV3
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gX1dLVGh1bWJuYWls
Vmlldy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMkQ2QkYxMUUyMUFFMTQ1RjAw
MUU3OUM5IC8qIFdLSW5rUGlja2VyQ29udHJvbC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFdL
SW5rUGlja2VyQ29udHJvbC5tbTsgcGF0aCA9IGlvcy9XS0lua1BpY2tlckNvbnRyb2wubW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTJENkJGMTFGMjFBRTE0NUYwMDFFNzlDOSAvKiBX
S0lua1BpY2tlckNvbnRyb2wuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV0tJbmtQaWNrZXJDb250cm9sLmg7
IHBhdGggPSBpb3MvV0tJbmtQaWNrZXJDb250cm9sLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTJENkJGMTIxMjFBRjU2RTEwMDFFNzlDOSAvKiBQZW5jaWxLaXRTb2Z0TGluay5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFBlbmNpbEtpdFNvZnRMaW5r
Lm1tOyBwYXRoID0gaW9zL1BlbmNpbEtpdFNvZnRMaW5rLm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkyRDZCRjEyMjIxQUY1NkUxMDAxRTc5QzkgLyogUGVuY2lsS2l0U29mdExpbmsu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gUGVuY2lsS2l0U29mdExpbmsuaDsg
cGF0aCA9IGlvcy9QZW5jaWxLaXRTb2Z0TGluay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkyRDZDRDExNzE4OTA1OEE1MDBFNUE0QTAgLyogVmlld1NuYXBzaG90U3RvcmUuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVmlld1NuYXBzaG90U3RvcmUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI3OTIsNiArMjc5MCw4IEBACiAJCTJERTY5NDNCMThC
RDJBNjgwMDVDMTVFNSAvKiBTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyTWVzc2FnZVJlY2Vp
dmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFNtYXJ0TWFnbmlm
aWNhdGlvbkNvbnRyb2xsZXJNZXNzYWdlUmVjZWl2ZXIuY3BwOyBwYXRoID0gRGVyaXZlZFNvdXJj
ZXMvV2ViS2l0Mi9TbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyTWVzc2FnZVJlY2VpdmVyLmNw
cDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJMkRFNjk0M0MxOEJEMkE2
ODAwNUMxNUU1IC8qIFNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXJNZXNzYWdlcy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVy
TWVzc2FnZXMuaDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYktpdDIvU21hcnRNYWduaWZpY2F0
aW9uQ29udHJvbGxlck1lc3NhZ2VzLmg7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7
IH07CiAJCTJERUFDNUNFMUFDMzY4QkIwMEExOTVEOCAvKiBfV0tGaW5kT3B0aW9ucy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBfV0tGaW5kT3B0aW9ucy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkyREYzOTYyQTIxQzhEQzUwMDA4ODM1RTMgLyogV0tJbmtQaWNr
ZXJWaWV3Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gV0tJbmtQaWNrZXJWaWV3Lm1tOyBwYXRo
ID0gaW9zL1dLSW5rUGlja2VyVmlldy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MkRGMzk2MkIyMUM4REM1MDAwODgzNUUzIC8qIFdLSW5rUGlja2VyVmlldy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5h
bWUgPSBXS0lua1BpY2tlclZpZXcuaDsgcGF0aCA9IGlvcy9XS0lua1BpY2tlclZpZXcuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkRGOTU5MzQxOEE0MjQxMjAwOTc4NUExIC8qIFZp
ZXdHZXN0dXJlQ29udHJvbGxlcklPUy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgbmFtZSA9IFZpZXdHZXN0dXJlQ29udHJvbGxlcklPUy5tbTsgcGF0aCA9IGlvcy9WaWV3R2Vz
dHVyZUNvbnRyb2xsZXJJT1MubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJERjlF
RUUzMUE3ODFGQjQwMEI2Q0ZCRSAvKiBBUElGcmFtZUluZm8uY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gQVBJRnJhbWVJbmZvLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMkRGOUVFRTQxQTc4MUZCNDAwQjZDRkJFIC8qIEFQSUZyYW1lSW5mby5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBUElGcmFtZUluZm8uaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTU4MzUsOCArNTgzNSw4IEBACiAJCQkJMEZDQjRFNDExOEJC
RTA0NDAwMEZDRkM5IC8qIFdLR2VvbG9jYXRpb25Qcm92aWRlcklPU09iakNTZWN1cml0eU9yaWdp
bi5tbSAqLywKIAkJCQk5MzNERjgyRDFCM0JDMDkwMDBBRUE5RTMgLyogV0tJbWFnZVByZXZpZXdW
aWV3Q29udHJvbGxlci5oICovLAogCQkJCTkzM0RGODJGMUIzQkMwQjQwMEFFQTlFMyAvKiBXS0lt
YWdlUHJldmlld1ZpZXdDb250cm9sbGVyLm1tICovLAotCQkJCTJENkJGMTFGMjFBRTE0NUYwMDFF
NzlDOSAvKiBXS0lua1BpY2tlckNvbnRyb2wuaCAqLywKLQkJCQkyRDZCRjExRTIxQUUxNDVGMDAx
RTc5QzkgLyogV0tJbmtQaWNrZXJDb250cm9sLm1tICovLAorCQkJCTJERjM5NjJCMjFDOERDNTAw
MDg4MzVFMyAvKiBXS0lua1BpY2tlclZpZXcuaCAqLywKKwkJCQkyREYzOTYyQTIxQzhEQzUwMDA4
ODM1RTMgLyogV0tJbmtQaWNrZXJWaWV3Lm1tICovLAogCQkJCTBGM0M3MjU5MTk2RjVGNjgwMEFF
REQwQyAvKiBXS0luc3BlY3RvckhpZ2hsaWdodFZpZXcuaCAqLywKIAkJCQkwRjNDNzI1NzE5NkY1
RjUwMDBBRUREMEMgLyogV0tJbnNwZWN0b3JIaWdobGlnaHRWaWV3Lm1tICovLAogCQkJCUE1NDI5
M0EyMTk1QTQzQzYwMDI3ODJDNyAvKiBXS0luc3BlY3Rvck5vZGVTZWFyY2hHZXN0dXJlUmVjb2du
aXplci5oICovLApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCmluZGV4IGZmZTA3MDQ1NmI3Yjc0MWYxNTIzZmRiOGY3ODNjNDI5M2M4NzE0
M2QuLjJjNmNjODNmNGZmOTE5NzEzZDY1YTM4NDA3OTcxNTNmZDEyYWU4ZjQgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxOSBAQAorMjAxOC0xMi0xOSAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxl
LmNvbT4KKworICAgICAgICBVSSBwcm9jZXNzIGNyYXNoIHdoZW4gZm9jdXNpbmcgYW4gZWRpdGFi
bGUgaW1hZ2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE5MjgzOQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDY3ODY2NzA+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgV2Vuc29uIEhzaWVoLgorCisgICAgICAgICogZWRpdGluZy9pbWFnZXMvYmFzaWMt
ZWRpdGFibGUtaW1hZ2Utd2l0aC1nZXN0dXJlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGVkaXRp
bmcvaW1hZ2VzL2Jhc2ljLWVkaXRhYmxlLWltYWdlLXdpdGgtZ2VzdHVyZS1leHBlY3RlZC50eHQ6
IEFkZGVkLgorICAgICAgICAqIHJlc291cmNlcy91aS1oZWxwZXIuanM6CisgICAgICAgICh3aW5k
b3cuVUlIZWxwZXIuc3R5bHVzVGFwQXQucmV0dXJuLm5ldy5Qcm9taXNlKToKKyAgICAgICAgKHdp
bmRvdy5VSUhlbHBlci5zdHlsdXNUYXBBdCk6CisgICAgICAgIEFkZCBhIHRlc3QgdGhhdCBlbnN1
cmVzIHRoYXQgYWRkaW5nIGFuIGVkaXRhYmxlIGltYWdlIGZyb20gYSBnZXN0dXJlCisgICAgICAg
IGRvZXNuJ3QgY3Jhc2gsIGFuZCBjYW4gYmUgZHJhd24gb24uCisKIDIwMTgtMTItMTkgIFJ5YW4g
SGFkZGFkICA8cnlhbmhhZGRhZEBhcHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTiAocjIz
NDk0MCk6IFsgTWFjT1MgXSBMYXlvdXQgVGVzdCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL21lZGlhLXNvdXJjZS9tZWRpYXNvdXJjZS1jaGFuZ2V0eXBlLXBsYXkuaHRtbCBpcyBmbGFr
eQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9pbWFnZXMvYmFzaWMtZWRpdGFibGUt
aW1hZ2Utd2l0aC1nZXN0dXJlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2VkaXRpbmcvaW1h
Z2VzL2Jhc2ljLWVkaXRhYmxlLWltYWdlLXdpdGgtZ2VzdHVyZS1leHBlY3RlZC50eHQKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uOTEwMTE1OWFkMGJmOWQ3ZDE2MzFiMzIzYWY1Yjk4YWVhNWI0NDY2NAotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvaW1hZ2VzL2Jhc2ljLWVkaXRhYmxlLWltYWdl
LXdpdGgtZ2VzdHVyZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzIEBACisKK0hhZCAwIHN0cm9r
ZXMgaW4gZWRpdGFibGUgaW1hZ2UgYmVmb3JlIGRyYXdpbmcuCitIYWQgMSBzdHJva2UgaW4gZWRp
dGFibGUgaW1hZ2UgYWZ0ZXIgZHJhd2luZy4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRp
bmcvaW1hZ2VzL2Jhc2ljLWVkaXRhYmxlLWltYWdlLXdpdGgtZ2VzdHVyZS5odG1sIGIvTGF5b3V0
VGVzdHMvZWRpdGluZy9pbWFnZXMvYmFzaWMtZWRpdGFibGUtaW1hZ2Utd2l0aC1nZXN0dXJlLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNzBjMTZlYzNkNDJiNzhjNjU2NWRmZTE2MjM1ZTEyYjQ4ZmU1YTkwZQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvaW1hZ2VzL2Jhc2ljLWVkaXRh
YmxlLWltYWdlLXdpdGgtZ2VzdHVyZS5odG1sCkBAIC0wLDAgKzEsMjIgQEAKKzwhRE9DVFlQRSBo
dG1sPjwhLS0gd2Via2l0LXRlc3QtcnVubmVyIFsgZW5hYmxlRWRpdGFibGVJbWFnZXM9dHJ1ZSBd
IC0tPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3VpLWhlbHBlci5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0PgoraWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1
bm5lci5kdW1wQXNUZXh0KCk7CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7Cit9CisK
K2FkZEV2ZW50TGlzdGVuZXIoImxvYWQiLCBhc3luYyAoKSA9PiB7CisgICAgYXdhaXQgVUlIZWxw
ZXIuc3R5bHVzVGFwQXQoMCwgMCk7CisgICAgY29uc3QgaW5pdGlhbE51bWJlck9mU3Ryb2tlc0lu
RWRpdGFibGVJbWFnZSA9IChhd2FpdCBVSUhlbHBlci5udW1iZXJPZlN0cm9rZXNJbkVkaXRhYmxl
SW1hZ2UoKSk7CisgICAgYXdhaXQgVUlIZWxwZXIuZHJhd1NxdWFyZUluRWRpdGFibGVJbWFnZSgp
OworICAgIGNvbnN0IG51bWJlck9mU3Ryb2tlc0luRWRpdGFibGVJbWFnZUFmdGVyRHJhd2luZyA9
IChhd2FpdCBVSUhlbHBlci5udW1iZXJPZlN0cm9rZXNJbkVkaXRhYmxlSW1hZ2UoKSk7CisgICAg
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImxvZyIpLmlubmVySFRNTCA9IGBIYWQgJHtpbml0aWFs
TnVtYmVyT2ZTdHJva2VzSW5FZGl0YWJsZUltYWdlfSBzdHJva2VzIGluIGVkaXRhYmxlIGltYWdl
IGJlZm9yZSBkcmF3aW5nLjxici8+SGFkICR7bnVtYmVyT2ZTdHJva2VzSW5FZGl0YWJsZUltYWdl
QWZ0ZXJEcmF3aW5nfSBzdHJva2UgaW4gZWRpdGFibGUgaW1hZ2UgYWZ0ZXIgZHJhd2luZy5gOwor
ICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworfSk7Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxi
b2R5IGNvbnRlbnRlZGl0YWJsZT4KKzxkaXYgaWQ9ImxvZyI+PC9kaXY+Cis8L2JvZHk+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9yZXNvdXJjZXMvdWktaGVscGVyLmpzIGIvTGF5b3V0VGVzdHMv
cmVzb3VyY2VzL3VpLWhlbHBlci5qcwppbmRleCA2N2M1MmMwYjkwMjFmNTFkNDJhYjYxNTlkYTk4
ZjU3ZDdiY2NiZjBkLi4xZWUzNWM1YTFjOTZjZDhjMjA2YjE2ZWU0NjVlYWU3OGQyZTNiYjE1IDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9yZXNvdXJjZXMvdWktaGVscGVyLmpzCisrKyBiL0xheW91
dFRlc3RzL3Jlc291cmNlcy91aS1oZWxwZXIuanMKQEAgLTQ0Myw2ICs0NDMsMTkgQEAgd2luZG93
LlVJSGVscGVyID0gY2xhc3MgVUlIZWxwZXIgewogICAgICAgICByZXR1cm4gbmV3IFByb21pc2Uo
cmVzb2x2ZSA9PiB0ZXN0UnVubmVyLnJ1blVJU2NyaXB0KGB1aUNvbnRyb2xsZXIuZHJhd1NxdWFy
ZUluRWRpdGFibGVJbWFnZSgpYCwgcmVzb2x2ZSkpOwogICAgIH0KIAorICAgIHN0YXRpYyBzdHls
dXNUYXBBdCh4LCB5KQorICAgIHsKKyAgICAgICAgaWYgKCF0aGlzLmlzV2ViS2l0MigpKQorICAg
ICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpOworCisgICAgICAgIHJldHVybiBuZXcg
UHJvbWlzZSgocmVzb2x2ZSkgPT4geworICAgICAgICAgICAgdGVzdFJ1bm5lci5ydW5VSVNjcmlw
dChgCisgICAgICAgICAgICAgICAgdWlDb250cm9sbGVyLnN0eWx1c1RhcEF0UG9pbnQoJHt4fSwg
JHt5fSwgMiwgMSwgMC41LCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICAgICAgdWlDb250
cm9sbGVyLnVpU2NyaXB0Q29tcGxldGUoJ0RvbmUnKTsKKyAgICAgICAgICAgICAgICB9KTtgLCBy
ZXNvbHZlKTsKKyAgICAgICAgfSk7CisgICAgfQorCiAgICAgc3RhdGljIG51bWJlck9mU3Ryb2tl
c0luRWRpdGFibGVJbWFnZSgpCiAgICAgewogICAgICAgICBpZiAoIXRoaXMuaXNXZWJLaXQyKCkp
Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>