<?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>191442</bug_id>
          
          <creation_ts>2018-11-08 16:11:07 -0800</creation_ts>
          <short_desc>[iOS] Do not show selection UI for editable elements with opacity near zero</short_desc>
          <delta_ts>2018-11-13 15:11:53 -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>WebKit Misc.</component>
          <version>WebKit Local Build</version>
          <rep_platform>iPhone / iPad</rep_platform>
          <op_sys>iOS 12</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar, PlatformOnly</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Daniel Bates">dbates</reporter>
          <assigned_to name="Wenson Hsieh">wenson_hsieh</assigned_to>
          <cc>bdakin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>megan_gardner</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1476711</commentid>
    <comment_count>0</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2018-11-08 16:11:07 -0800</bug_when>
    <thetext>Pages on iCloud.com implement their own selection UI that interferes with the native iOS selection UI. Pages uses an editable element with CSS opacity set to value near 0 as a means to opt-out of selection painting on Mac. However, on iOS UIKit is responsible for painting the selection and providing selection assistance (i.e. the lollipops) and does not know about CSS opacity. I propose that we pass information about the editable node&apos;s opacity to the UIProcess so that we may opt-out of UIKit selection assistance and selection painting if the opacity is near 0.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1476719</commentid>
    <comment_count>1</comment_count>
      <attachid>354289</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2018-11-08 16:23:43 -0800</bug_when>
    <thetext>Created attachment 354289
Patch

I am open to ideas on how to fix this bug as well as suggestions on the design in this proposed patch. I was unclear how to write a test for this change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1476733</commentid>
    <comment_count>2</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2018-11-08 17:03:44 -0800</bug_when>
    <thetext>Don&apos;t we have UIScriptController stuff to get selection rects?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1476735</commentid>
    <comment_count>3</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2018-11-08 17:11:43 -0800</bug_when>
    <thetext>(In reply to Simon Fraser (smfr) from comment #2)
&gt; Don&apos;t we have UIScriptController stuff to get selection rects?

Does this tell us the UIView selection rect? This patch is all about painting. We want UIKit to know what text is selected. We just don’t want UIKit to paint the selection. Show the lollipops or a callout bar.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1476737</commentid>
    <comment_count>4</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-11-08 17:13:07 -0800</bug_when>
    <thetext>(In reply to Daniel Bates from comment #3)
&gt; (In reply to Simon Fraser (smfr) from comment #2)
&gt; &gt; Don&apos;t we have UIScriptController stuff to get selection rects?
&gt; 
&gt; Does this tell us the UIView selection rect? This patch is all about
&gt; painting. We want UIKit to know what text is selected. We just don’t want
&gt; UIKit to paint the selection. Show the lollipops or a callout bar.

See:

UIHelper.getUISelectionRects()
UIHelper.getSelectionStartGrabberViewRect()

etc.

IIRC, there are some examples in editing/selection/ios</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1476739</commentid>
    <comment_count>5</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-11-08 17:15:14 -0800</bug_when>
    <thetext>(In reply to Daniel Bates from comment #1)
&gt; Created attachment 354289 [details]
&gt; Patch
&gt; 
&gt; I am open to ideas on how to fix this bug as well as suggestions on the
&gt; design in this proposed patch. I was unclear how to write a test for this
&gt; change.

I had a patch to fix this not too long ago.

I remember one mildly tricky thing to get right is handling hidden contenteditable subframes. For example, typing and editing in the hidden area in &lt;https://whsieh.github.io/examples/hidden-contenteditable&gt; shouldn&apos;t cause native selection UI to pop up.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1476750</commentid>
    <comment_count>6</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-11-08 17:31:50 -0800</bug_when>
    <thetext>(In reply to Wenson Hsieh from comment #4)
&gt; (In reply to Daniel Bates from comment #3)
&gt; &gt; (In reply to Simon Fraser (smfr) from comment #2)
&gt; &gt; &gt; Don&apos;t we have UIScriptController stuff to get selection rects?
&gt; &gt; 
&gt; &gt; Does this tell us the UIView selection rect? This patch is all about
&gt; &gt; painting. We want UIKit to know what text is selected. We just don’t want
&gt; &gt; UIKit to paint the selection. Show the lollipops or a callout bar.
&gt; 
&gt; See:
&gt; 
&gt; UIHelper.getUISelectionRects()
&gt; UIHelper.getSelectionStartGrabberViewRect()
&gt; 
&gt; etc.
&gt; 
&gt; IIRC, there are some examples in editing/selection/ios

Oh, do you mean we want to detect when the view is transparent, even if it has a nonzero frame?

It seems reasonable to add this functionality to UIScriptController, if what we have now doesn&apos;t suffice.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1477141</commentid>
    <comment_count>7</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2018-11-09 15:41:41 -0800</bug_when>
    <thetext>(In reply to Wenson Hsieh from comment #5)
&gt; (In reply to Daniel Bates from comment #1)
&gt; &gt; Created attachment 354289 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; I am open to ideas on how to fix this bug as well as suggestions on the
&gt; &gt; design in this proposed patch. I was unclear how to write a test for this
&gt; &gt; change.
&gt; 
&gt; I had a patch to fix this not too long ago.
&gt; 

Please post your patch!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1477143</commentid>
    <comment_count>8</comment_count>
      <attachid>354397</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2018-11-09 15:45:46 -0800</bug_when>
    <thetext>Created attachment 354397
Layout Tests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1477145</commentid>
    <comment_count>9</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2018-11-09 15:46:48 -0800</bug_when>
    <thetext>Wenson is willing to take over this bug since he has an existing patch.

@Wenson: Here are some tests. Feel free to use them or scrap them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1477148</commentid>
    <comment_count>10</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-11-09 15:47:22 -0800</bug_when>
    <thetext>&lt;rdar://problem/45958625&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1477479</commentid>
    <comment_count>11</comment_count>
      <attachid>354531</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-11-11 21:33:54 -0800</bug_when>
    <thetext>Created attachment 354531
WIP (needs tests)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1477906</commentid>
    <comment_count>12</comment_count>
      <attachid>354648</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-11-12 21:38:24 -0800</bug_when>
    <thetext>Created attachment 354648
First pass</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1477909</commentid>
    <comment_count>13</comment_count>
      <attachid>354650</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-11-12 21:49:28 -0800</bug_when>
    <thetext>Created attachment 354650
Add missing layout test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1478052</commentid>
    <comment_count>14</comment_count>
      <attachid>354650</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2018-11-13 10:37:20 -0800</bug_when>
    <thetext>Comment on attachment 354650
Add missing layout test.

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

&gt; Source/WebCore/rendering/RenderObject.cpp:1525
&gt; +        if (layerRenderer.style().opacity() &lt; minimumVisibleOpacity)
&gt; +            return true;

Opacity is multiplicative, so ideally you&apos;d multiply it during your tree walk. For example, try ten nested divs with opacity 0.1.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1478053</commentid>
    <comment_count>15</comment_count>
      <attachid>354650</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-11-13 10:38:52 -0800</bug_when>
    <thetext>Comment on attachment 354650
Add missing layout test.

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

&gt;&gt; Source/WebCore/rendering/RenderObject.cpp:1525
&gt;&gt; +            return true;
&gt; 
&gt; Opacity is multiplicative, so ideally you&apos;d multiply it during your tree walk. For example, try ten nested divs with opacity 0.1.

Oh, good point! I&apos;ll multiply on the way up, and add another layout test for this scenario as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1478096</commentid>
    <comment_count>16</comment_count>
      <attachid>354689</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-11-13 12:25:57 -0800</bug_when>
    <thetext>Created attachment 354689
Patch for EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1478102</commentid>
    <comment_count>17</comment_count>
      <attachid>354691</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-11-13 12:52:41 -0800</bug_when>
    <thetext>Created attachment 354691
Patch for EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1478145</commentid>
    <comment_count>18</comment_count>
      <attachid>354691</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-11-13 14:30:36 -0800</bug_when>
    <thetext>Comment on attachment 354691
Patch for EWS

Clearing flags on attachment: 354691

Committed r238146: &lt;https://trac.webkit.org/changeset/238146&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>354289</attachid>
            <date>2018-11-08 16:23:43 -0800</date>
            <delta_ts>2018-11-09 15:41:20 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-191442-20181108162342.patch</filename>
            <type>text/plain</type>
            <size>5847</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM3OTM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGEzZWE0YTJkMTNhNjM4ZGNk
OTZkZWY2ZmJiYTRlNjRmZTk2NjU3NTUuLjRlYjJmZjRjNDllZGM1NzEwN2JmNGZlOTFkM2MzYzlm
MzZiYzA1OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzMgQEAKKzIwMTgtMTEtMDggIERhbmllbCBC
YXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgorCisgICAgICAgIFtpT1NdIERvIG5vdCBzaG93IHNl
bGVjdGlvbiBVSSBmb3IgZWRpdGFibGUgZWxlbWVudHMgd2l0aCBvcGFjaXR5IG5lYXIgemVybwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkxNDQyCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ29uc2lkZXIg
dGhlIENTUyBvcGFjaXR5IG9mIHRoZSBhc3Npc3RlZCBub2RlIGFzIHRvIHdoZXRoZXIgdG8gc2hv
dyB0aGUgbmF0aXZlCisgICAgICAgIGlPUyBzZWxlY3Rpb24gVUkuIElmIHRoZSBvcGFjaXR5IGlz
IDwgMC4xIHRoZW4gd2UgY29uc2lkZXIgdGhlIGFzc2lzdGVkIG5vZGUKKyAgICAgICAgaGlkZGVu
LgorCisgICAgICAgICogU2hhcmVkL0Fzc2lzdGVkTm9kZUluZm9ybWF0aW9uLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6QXNzaXN0ZWROb2RlSW5mb3JtYXRpb246OmVuY29kZSBjb25zdCk6IEVuY29k
ZSB0aGUgbmV3IGZpZWxkIHZpc2libGUuCisgICAgICAgIChXZWJLaXQ6OkFzc2lzdGVkTm9kZUlu
Zm9ybWF0aW9uOjpkZWNvZGUpOiBEZWNvZGUgdGhlIG5ldyBmaWVsZCB2aXNpYmxlLgorICAgICAg
ICAqIFNoYXJlZC9Bc3Npc3RlZE5vZGVJbmZvcm1hdGlvbi5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tOgorICAgICAgICAoLVtXS0NvbnRlbnRW
aWV3IF9zaG91bGRTdXBwcmVzc1NlbGVjdGlvbkNvbW1hbmRzXSk6IFN1cHByZXNzIHNob3dpbmcg
dGhlIHNlbGVjdGlvbgorICAgICAgICBjYWxsb3V0IGJhciB3aGVuIHNlbGVjdGlvbiBwYWludGlu
ZyBpdCBkaXNhYmxlZC4KKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfc3RhcnRBc3Npc3RpbmdO
b2RlOnVzZXJJc0ludGVyYWN0aW5nOmJsdXJQcmV2aW91c05vZGU6Y2hhbmdpbmdBY3Rpdml0eVN0
YXRlOnVzZXJPYmplY3Q6XSk6CisgICAgICAgIFN1cHByZXNzIHNlbGVjdGlvbiB2aWV3IGFjdGl2
YXRpb24gaWYgdGhlIGFzc2lzdGVkIG5vZGUgaXMgaGlkZGVuLiBOb3RlIHRoYXQgdGhpcworICAg
ICAgICBvbmx5IG9wdHMgb2Ygc2VsZWN0aW9uIHBhaW50aW5nLCB0aGUgbG9sbGlwb3BzLCBhbmQg
c2hvd2luZyBvZiB0aGUgc2VsZWN0aW9uIGNhbGxvdXQKKyAgICAgICAgYmFyLiBUaGF0IGlzLCBh
dXRvY29ycmVjdGlvbnMsIGFuZCBzdWdnZXN0ZWQgd29yZCByZXBsYWNlbWVudHMgYXJlIHN0aWxs
IHNob3duIGFuZAorICAgICAgICBhbGwgZWRpdGluZyBvcGVyYXRpb25zIGFuZCBrZXkgY29tbWFu
ZHMgd29yay4gVGhpcyBtYXRjaGVzIHRoZSBlZGl0aW5nIGJlaGF2aW9yIG9uCisgICAgICAgIE1h
YyB3aGVuIHRoZSBlZGl0YWJsZSBlbGVtZW50J3Mgb3BhY2l0eSBpcyBhdCBvciBuZWFyIDAuCisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlOjpnZXRBc3Npc3RlZE5vZGVJbmZvcm1hdGlvbik6IENvbXB1dGUgd2hl
dGhlciB0aGUgbm9kZSBpcyB2aXNpYmxlLgorICAgICAgICBXZSBjb25zaWRlciBhIG5vZGUgdmlz
aWJsZSBpZiBpdCBoYXMgYW4gb3BhY2l0eSA+PSAwLjEuIFRoaXMgdmFsdWUgd2FzIGNob3NlbiBm
cm9tCisgICAgICAgIGxvb2tpbmcgYXQgb3BhY2l0eSB2YWx1ZSB0aGF0IGljbG91ZC5jb20gdXNl
cyB0byBhY2hpZXZlIHRoZSBlZmZlY3Qgb2YgaGlkaW5nCisgICAgICAgIHNlbGVjdGlvbiBwYWlu
dGluZyBvbiBNYWMuCisKIDIwMTgtMTEtMDcgIERhbmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBwbGUu
Y29tPgogCiAgICAgICAgIFtpT1NdIFN1cHBvcnQgZGVsZXRpbmcgdG8gdGhlIHN0YXJ0IG9mIHRo
ZSBsaW5lIGFuZCB0byB0aGUgZW5kIG9mIHRoZSBsaW5lCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9Bc3Npc3RlZE5vZGVJbmZvcm1hdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9Bc3Npc3RlZE5vZGVJbmZvcm1hdGlvbi5jcHAKaW5kZXggOWVhNWQxMTI5NWI5YzVlMjYw
YmE2NjcwN2JhOTM1ZWNjZDFiMWQ1Ny4uMWRhMzY3YTU3ZjUxMmQyZTg0NGEzOWMyYTI0Y2Y2Njk4
MWYxZTg4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQXNzaXN0ZWROb2RlSW5m
b3JtYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Fzc2lzdGVkTm9kZUluZm9y
bWF0aW9uLmNwcApAQCAtODMsNiArODMsNyBAQCB2b2lkIEFzc2lzdGVkTm9kZUluZm9ybWF0aW9u
OjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIGVuY29kZXIgPDwgc2Vs
ZWN0ZWRJbmRleDsKICAgICBlbmNvZGVyIDw8IGlzTXVsdGlTZWxlY3Q7CiAgICAgZW5jb2RlciA8
PCBpc1JlYWRPbmx5OworICAgIGVuY29kZXIgPDwgaXNWaXNpYmxlOwogICAgIGVuY29kZXIgPDwg
YWxsb3dzVXNlclNjYWxpbmc7CiAgICAgZW5jb2RlciA8PCBhbGxvd3NVc2VyU2NhbGluZ0lnbm9y
aW5nQWx3YXlzU2NhbGFibGU7CiAgICAgZW5jb2RlciA8PCBpbnNpZGVGaXhlZFBvc2l0aW9uOwpA
QCAtMTY3LDYgKzE2OCw5IEBAIGJvb2wgQXNzaXN0ZWROb2RlSW5mb3JtYXRpb246OmRlY29kZShJ
UEM6OkRlY29kZXImIGRlY29kZXIsIEFzc2lzdGVkTm9kZUluZm9ybWF0CiAgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShyZXN1bHQuaXNSZWFkT25seSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAor
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LmlzVmlzaWJsZSkpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LmFsbG93c1VzZXJTY2Fs
aW5nKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TaGFyZWQvQXNzaXN0ZWROb2RlSW5mb3JtYXRpb24uaCBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL0Fzc2lzdGVkTm9kZUluZm9ybWF0aW9uLmgKaW5kZXggNzk3OWVmYjgwNTRhODQxZmU0M2Zl
OWQ4NDY4NTU5MWRmNmQ2ZGFhNi4uMDBmNjYwYmJlODBlNzA2OTk2ZWMzZmZhMGNlZWUwNjEyMzdh
NGI3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQXNzaXN0ZWROb2RlSW5mb3Jt
YXRpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Bc3Npc3RlZE5vZGVJbmZvcm1hdGlv
bi5oCkBAIC0xMDYsNiArMTA2LDcgQEAgc3RydWN0IEFzc2lzdGVkTm9kZUluZm9ybWF0aW9uIHsK
ICAgICBib29sIGlzUlRMIHsgZmFsc2UgfTsKICAgICBib29sIGlzTXVsdGlTZWxlY3QgeyBmYWxz
ZSB9OwogICAgIGJvb2wgaXNSZWFkT25seSB7ZmFsc2UgfTsKKyAgICBib29sIGlzVmlzaWJsZSB7
IHRydWUgfTsKICAgICBib29sIGFsbG93c1VzZXJTY2FsaW5nIHsgZmFsc2UgfTsKICAgICBib29s
IGFsbG93c1VzZXJTY2FsaW5nSWdub3JpbmdBbHdheXNTY2FsYWJsZSB7IGZhbHNlIH07CiAgICAg
Ym9vbCBpbnNpZGVGaXhlZFBvc2l0aW9uIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0gYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCmluZGV4IGY5
ZmVmNWI2MDE4YzVmZmIzZDhkODA2OWYwOWIxZDE5MWY4ZDA2MDUuLjljZjA1NWIwZTg1NmQ3N2My
ZjJhOGI2MWNlNmIxMmIyODE1NmE2ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQpAQCAtMzc0OSw2ICszNzQ5
LDExIEBAIC0gKENHUmVjdClyZWN0Q29udGFpbmluZ0NhcmV0U2VsZWN0aW9uCiAgICAgcmV0dXJu
IENHUmVjdFplcm87CiB9CiAKKy0gKEJPT0wpX3Nob3VsZFN1cHByZXNzU2VsZWN0aW9uQ29tbWFu
ZHMKK3sKKyAgICByZXR1cm4gX3N1cHByZXNzQXNzaXN0YW50U2VsZWN0aW9uVmlldzsKK30KKwog
Ly8gV2ViIGV2ZW50cy4KIC0gKEJPT0wpcmVxdWlyZXNLZXlFdmVudHMKIHsKQEAgLTQyMjcsNiAr
NDIzMiw4IEBAIC0gKHZvaWQpX3N0YXJ0QXNzaXN0aW5nTm9kZTooY29uc3QgQXNzaXN0ZWROb2Rl
SW5mb3JtYXRpb24mKWluZm9ybWF0aW9uIHVzZXJJc0luCiAgICAgaWYgKFtpbnB1dERlbGVnYXRl
IHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXc6ZGVjaWRlUG9saWN5Rm9yRm9j
dXNlZEVsZW1lbnQ6KV0pCiAgICAgICAgIHN0YXJ0SW5wdXRTZXNzaW9uUG9saWN5ID0gW2lucHV0
RGVsZWdhdGUgX3dlYlZpZXc6X3dlYlZpZXcgZGVjaWRlUG9saWN5Rm9yRm9jdXNlZEVsZW1lbnQ6
Zm9jdXNlZEVsZW1lbnRJbmZvLmdldCgpXTsKIAorICAgIF9zdXBwcmVzc0Fzc2lzdGFudFNlbGVj
dGlvblZpZXcgPSAhaW5mb3JtYXRpb24uaXNWaXNpYmxlOworCiAgICAgc3dpdGNoIChzdGFydElu
cHV0U2Vzc2lvblBvbGljeSkgewogICAgIGNhc2UgX1dLRm9jdXNTdGFydHNJbnB1dFNlc3Npb25Q
b2xpY3lBdXRvOgogICAgICAgICAvLyBUaGUgZGVmYXVsdCBiZWhhdmlvciBpcyB0byBhbGxvdyBu
b2RlIGFzc2lzdGFuY2UgaWYgdGhlIHVzZXIgaXMgaW50ZXJhY3RpbmcuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbSBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCmluZGV4IGVmM2E1
ZjNmNTk0ZjVjZDYyZTJkNWJkYzk4NTM2M2YxYmE3YWFhNWUuLmQ4MWI4ZTFjYmNiMGQ4ZjRjMjEy
ZGU1YzIyNDAwMjk4NjkxMTljNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCkBAIC0yMzU3LDYgKzIzNTcsOSBAQCB2b2lkIFdl
YlBhZ2U6OmdldEFzc2lzdGVkTm9kZUluZm9ybWF0aW9uKEFzc2lzdGVkTm9kZUluZm9ybWF0aW9u
JiBpbmZvcm1hdGlvbikKICAgICAgICAgICAgIGlmICghaW5mb3JtYXRpb24uZWxlbWVudFJlY3Qu
Y29udGFpbnMobV9sYXN0SW50ZXJhY3Rpb25Mb2NhdGlvbikpCiAgICAgICAgICAgICAgICAgaW5m
b3JtYXRpb24uc2VsZWN0aW9uUmVjdCA9IEludFJlY3QoKTsKICAgICAgICAgfQorICAgICAgICAv
LyBTb21lIHdlYnNpdGVzIChlLmcuIGljbG91ZC5jb20pIHVzZSBhIG5lYXIgMCBvcGFjaXR5LiBJ
ZiB0aGUgb3BhY2l0eSBpcyBsZXNzIHRoYW4gMC4xIGl0CisgICAgICAgIC8vIHNlZW1zIHJlYXNv
bmFibGUgdG8gYXNzdW1lIHRoYXQgdGhlIHdlYnNpdGUgZG9lcyBub3Qgd2FudCB0byB1c2UgcGxh
dGZvcm0gc2VsZWN0aW9uLgorICAgICAgICBpbmZvcm1hdGlvbi5pc1Zpc2libGUgPSByZW5kZXJl
ci0+c3R5bGUoKS5vcGFjaXR5KCkgPj0gMC4xZjsKICAgICB9IGVsc2UKICAgICAgICAgaW5mb3Jt
YXRpb24uZWxlbWVudFJlY3QgPSBJbnRSZWN0KCk7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>354397</attachid>
            <date>2018-11-09 15:45:46 -0800</date>
            <delta_ts>2018-11-11 21:33:53 -0800</delta_ts>
            <desc>Layout Tests</desc>
            <filename>LayoutTests.patch</filename>
            <type>text/plain</type>
            <size>5678</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2lvcy9yZXNvdXJjZXMv
c2VsZWN0aW9uLXNob3VsZC1ub3QtcGFpbnQtaW4tc3ViZnJhbWUtd2l0aC1vcGFjaXR5LXplcm8u
aHRtbCBiL0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2lvcy9yZXNvdXJjZXMvc2VsZWN0
aW9uLXNob3VsZC1ub3QtcGFpbnQtaW4tc3ViZnJhbWUtd2l0aC1vcGFjaXR5LXplcm8uaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uODc0MGQ3NDU0MzAKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9pb3MvcmVzb3VyY2Vz
L3NlbGVjdGlvbi1zaG91bGQtbm90LXBhaW50LWluLXN1YmZyYW1lLXdpdGgtb3BhY2l0eS16ZXJv
Lmh0bWwKQEAgLTAsMCArMSw0MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgor
PG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9IndpZHRoPWRldmljZS13aWR0aCI+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL3VpLWhlbHBlci5qcyI+PC9zY3JpcHQ+Cis8
c3R5bGU+Citib2R5IHsKKyAgICBtYXJnaW46IDA7CisgICAgcGFkZGluZzogMDsKK30KKworI3Rl
c3QtY29udGFpbmVyIHsKKyAgICBoZWlnaHQ6IDIwMHB4OworICAgIHdpZHRoOiA1MDBweDsKKyAg
ICBib3JkZXI6IDFweCBzb2xpZCBibGFjazsKK30KKworI2VkaXRhYmxlIHsKKyAgICBoZWlnaHQ6
IGluaGVyaXQ7CisgICAgd2lkdGg6IGluaGVyaXQ7Cit9Cis8L3N0eWxlPgorPC9oZWFkPgorPGJv
ZHk+Cis8ZGl2IGlkPSJ0ZXN0LWNvbnRhaW5lciI+PGRpdiBpZD0iZWRpdGFibGUiIGNvbnRlbnRl
ZGl0YWJsZT0idHJ1ZSI+SGVsbG88L2Rpdj48L2Rpdj4KKzxzY3JpcHQ+CitpZiAod2luZG93LnRl
c3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisKK2FzeW5jIGZ1bmN0
aW9uIHJ1blRlc3QoKQoreworICAgIGxldCBlZGl0YWJsZUVsZW1lbnQgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgiZWRpdGFibGUiKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAg
ICAgIGF3YWl0IFVJSGVscGVyLmFjdGl2YXRlRWxlbWVudChlZGl0YWJsZUVsZW1lbnQpOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5zZWxlY3RBbGxDaGlsZHJlbihlZGl0YWJsZUVsZW1lbnQp
OworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlE
b25lKCk7Cit9CisKK3J1blRlc3QoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vaW9zL3NlbGVjdGlvbi1zaG91
bGQtbm90LXBhaW50LWluLXN1YmZyYW1lLXdpdGgtb3BhY2l0eS16ZXJvLWV4cGVjdGVkLmh0bWwg
Yi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9pb3Mvc2VsZWN0aW9uLXNob3VsZC1ub3Qt
cGFpbnQtaW4tc3ViZnJhbWUtd2l0aC1vcGFjaXR5LXplcm8tZXhwZWN0ZWQuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uYzU0ZGE3ZmVmMjIKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9pb3Mvc2VsZWN0aW9uLXNob3Vs
ZC1ub3QtcGFpbnQtaW4tc3ViZnJhbWUtd2l0aC1vcGFjaXR5LXplcm8tZXhwZWN0ZWQuaHRtbApA
QCAtMCwwICsxLDIyIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBu
YW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoIj4KKzxzdHlsZT4KK2Jv
ZHkgeworICAgIG1hcmdpbjogMDsKKyAgICBwYWRkaW5nOiAwOworfQorCisjdGVzdC1jb250YWlu
ZXIgeworICAgIGhlaWdodDogMjAwcHg7CisgICAgd2lkdGg6IDUwMHB4OworICAgIGJvcmRlcjog
MXB4IHNvbGlkIGJsYWNrOworfQorCis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlk
PSJ0ZXN0LWNvbnRhaW5lciI+PC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9pb3Mvc2VsZWN0aW9uLXNob3VsZC1ub3QtcGFp
bnQtaW4tc3ViZnJhbWUtd2l0aC1vcGFjaXR5LXplcm8uaHRtbCBiL0xheW91dFRlc3RzL2VkaXRp
bmcvc2VsZWN0aW9uL2lvcy9zZWxlY3Rpb24tc2hvdWxkLW5vdC1wYWludC1pbi1zdWJmcmFtZS13
aXRoLW9wYWNpdHktemVyby5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwLi5hNDFkNDNkMWIxYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcv
c2VsZWN0aW9uL2lvcy9zZWxlY3Rpb24tc2hvdWxkLW5vdC1wYWludC1pbi1zdWJmcmFtZS13aXRo
LW9wYWNpdHktemVyby5odG1sCkBAIC0wLDAgKzEsMjUgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0
bWw+Cis8aGVhZD4KKzxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJ3aWR0aD1kZXZpY2Ut
d2lkdGgiPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy91aS1oZWxwZXIuanMiPjwv
c2NyaXB0PgorPHNjcmlwdD4KK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVy
LndhaXRVbnRpbERvbmUoKTsKKzwvc2NyaXB0PgorPHN0eWxlPgorYm9keSB7CisgICAgbWFyZ2lu
OiAwOworICAgIHBhZGRpbmc6IDA7Cit9CisjdGVzdC1jb250YWluZXIgeworICAgIGhlaWdodDog
MjAwcHg7CisgICAgd2lkdGg6IDUwMHB4OworICAgIGJvcmRlcjogMXB4IHNvbGlkIGJsYWNrOwor
fQorPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0idGVzdC1jb250YWluZXIiPjxp
ZnJhbWUgc3JjPSJyZXNvdXJjZXMvc2VsZWN0aW9uLXNob3VsZC1ub3QtcGFpbnQtaW4tc3ViZnJh
bWUtd2l0aC1vcGFjaXR5LXplcm8uaHRtbCIgc3R5bGU9Im9wYWNpdHk6IDAiIHdpZHRoPSI1MDAi
IGhlaWdodD0iMjAwIj48L2lmcmFtZT48L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2lvcy9zZWxlY3Rpb24tc2hvdWxkLW5v
dC1wYWludC13aGVuLW9wYWNpdHktemVyby1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvZWRp
dGluZy9zZWxlY3Rpb24vaW9zL3NlbGVjdGlvbi1zaG91bGQtbm90LXBhaW50LXdoZW4tb3BhY2l0
eS16ZXJvLWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAuLmJmNjZkZDA1MTU5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9z
ZWxlY3Rpb24vaW9zL3NlbGVjdGlvbi1zaG91bGQtbm90LXBhaW50LXdoZW4tb3BhY2l0eS16ZXJv
LWV4cGVjdGVkLmh0bWwKQEAgLTAsMCArMSwyMSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4K
KzxoZWFkPgorPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9IndpZHRoPWRldmljZS13aWR0
aCI+Cis8c3R5bGU+Citib2R5IHsKKyAgICBtYXJnaW46IDA7CisgICAgcGFkZGluZzogMDsKK30K
KworI3Rlc3QtY29udGFpbmVyIHsKKyAgICBoZWlnaHQ6IDIwMHB4OworICAgIHdpZHRoOiA1MDBw
eDsKKyAgICBib3JkZXI6IDFweCBzb2xpZCBibGFjazsKK30KKzwvc3R5bGU+Cis8L2hlYWQ+Cis8
Ym9keT4KKzxkaXYgaWQ9InRlc3QtY29udGFpbmVyIj48L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2lvcy9zZWxlY3Rpb24t
c2hvdWxkLW5vdC1wYWludC13aGVuLW9wYWNpdHktemVyby5odG1sIGIvTGF5b3V0VGVzdHMvZWRp
dGluZy9zZWxlY3Rpb24vaW9zL3NlbGVjdGlvbi1zaG91bGQtbm90LXBhaW50LXdoZW4tb3BhY2l0
eS16ZXJvLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjc5MzA2
YTI3YWEwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24v
aW9zL3NlbGVjdGlvbi1zaG91bGQtbm90LXBhaW50LXdoZW4tb3BhY2l0eS16ZXJvLmh0bWwKQEAg
LTAsMCArMSw0NCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgbmFt
ZT0idmlld3BvcnQiIGNvbnRlbnQ9IndpZHRoPWRldmljZS13aWR0aCI+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vcmVzb3VyY2VzL3VpLWhlbHBlci5qcyI+PC9zY3JpcHQ+Cis8c3R5bGU+Citib2R5
IHsKKyAgICBtYXJnaW46IDA7CisgICAgcGFkZGluZzogMDsKK30KKworI3Rlc3QtY29udGFpbmVy
IHsKKyAgICBoZWlnaHQ6IDIwMHB4OworICAgIHdpZHRoOiA1MDBweDsKKyAgICBib3JkZXI6IDFw
eCBzb2xpZCBibGFjazsKK30KKworI2VkaXRhYmxlIHsKKyAgICBoZWlnaHQ6IGluaGVyaXQ7Cisg
ICAgd2lkdGg6IGluaGVyaXQ7CisgICAgb3BhY2l0eTogMDsKK30KKzwvc3R5bGU+Cis8L2hlYWQ+
Cis8Ym9keT4KKzxkaXYgaWQ9InRlc3QtY29udGFpbmVyIj48ZGl2IGlkPSJlZGl0YWJsZSIgY29u
dGVudGVkaXRhYmxlPSJ0cnVlIj5IZWxsbzwvZGl2PjwvZGl2PgorPHNjcmlwdD4KK2lmICh3aW5k
b3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKworYXN5bmMg
ZnVuY3Rpb24gcnVuVGVzdCgpCit7CisgICAgbGV0IGVkaXRhYmxlRWxlbWVudCA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJlZGl0YWJsZSIpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikK
KyAgICAgICAgYXdhaXQgVUlIZWxwZXIuYWN0aXZhdGVFbGVtZW50KGVkaXRhYmxlRWxlbWVudCk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLnNlbGVjdEFsbENoaWxkcmVuKGVkaXRhYmxlRWxl
bWVudCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLm5v
dGlmeURvbmUoKTsKK30KKworcnVuVGVzdCgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3Mtd2sxL1Rlc3RFeHBlY3RhdGlv
bnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3Mtd2sxL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXgg
MmZiZTdkNWNmNzMuLmU4MjFhN2M5ZGU0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9pb3Mtd2sxL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9z
LXdrMS9UZXN0RXhwZWN0YXRpb25zCkBAIC0xOTk2LDMgKzE5OTYsNyBAQCBjc3MtY3VzdG9tLXBy
b3BlcnRpZXMtYXBpIFsgU2tpcCBdCiBmYXN0L2Nzcy1jdXN0b20tcGFpbnQgWyBTa2lwIF0KIAog
d2Via2l0Lm9yZy9iLzE4ODc2MiBmYXN0L3dyaXRpbmctbW9kZS9lbmdsaXNoLXJsLXRleHQtd2l0
aC1zcGVsbGluZy1tYXJrZXIuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQorCisjIEZJWE1FOiBU
ZWFjaCBMZWdhY3kgV2ViS2l0IHRvIG5vdCBwYWludCBzZWxlY3Rpb24gd2hlbiBvcGFjaXR5IGlz
IHplcm8KK2VkaXRpbmcvc2VsZWN0aW9uL2lvcy9zZWxlY3Rpb24tc2hvdWxkLW5vdC1wYWludC13
aGVuLW9wYWNpdHktemVyby5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCitlZGl0aW5nL3NlbGVj
dGlvbi9pb3Mvc2VsZWN0aW9uLXNob3VsZC1ub3QtcGFpbnQtaW4tc3ViZnJhbWUtd2l0aC1vcGFj
aXR5LXplcm8uaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>354531</attachid>
            <date>2018-11-11 21:33:54 -0800</date>
            <delta_ts>2018-11-12 21:38:23 -0800</delta_ts>
            <desc>WIP (needs tests)</desc>
            <filename>bug-191442-20181111213354.patch</filename>
            <type>text/plain</type>
            <size>14957</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM4MDcxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGRiMTJjNjY3Nzg1MzI0
ZGY4ZmZmYmVkZWZiZjBlMjQ2MWE5MGYwOS4uNDIwZDczMDVjNGI5OWQxMDU2ZDU5YjIyYTg4NWRl
NjU5YTM5YjI4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDE4LTExLTExICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtpT1NdIERvIG5v
dCBzaG93IHNlbGVjdGlvbiBVSSBmb3IgZWRpdGFibGUgZWxlbWVudHMgd2l0aCBvcGFjaXR5IG5l
YXIgemVybworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTkxNDQyCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80NTk1ODYyNT4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXSVAgb25seS4KKworICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2Jq
ZWN0Ojppc1Zpc2libGVSZXNwZWN0aW5nUGFyZW50RnJhbWVzIGNvbnN0KToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyT2JqZWN0Lmg6CisKIDIwMTgtMTEtMTEgIFdlbnNvbiBIc2llaCAgPHdl
bnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgSW1wbGVtZW50IGEgbmV3IGVkaXQgY29t
bWFuZCB0byBjaGFuZ2UgdGhlIGVuY2xvc2luZyBsaXN0IHR5cGUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggOTE3Yjdh
MTJmNTdiMzliOTZmNmI5ZGYyMjRjMmI3ZWNlM2ExZTA0MC4uMTVlZjI2MWYwYjYyNDVlYzBlODlm
ZjU5ZmNmYjQ1NTdmNTZhMDk0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMyBAQAorMjAxOC0xMS0x
MSAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBbaU9T
XSBEbyBub3Qgc2hvdyBzZWxlY3Rpb24gVUkgZm9yIGVkaXRhYmxlIGVsZW1lbnRzIHdpdGggb3Bh
Y2l0eSBuZWFyIHplcm8KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE5MTQ0MgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDU5NTg2MjU+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV0lQIG9ubHkuCisKKyAg
ICAgICAgKiBTaGFyZWQvQXNzaXN0ZWROb2RlSW5mb3JtYXRpb24uY3BwOgorICAgICAgICAoV2Vi
S2l0OjpBc3Npc3RlZE5vZGVJbmZvcm1hdGlvbjo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdl
YktpdDo6QXNzaXN0ZWROb2RlSW5mb3JtYXRpb246OmRlY29kZSk6CisgICAgICAgICogU2hhcmVk
L0Fzc2lzdGVkTm9kZUluZm9ybWF0aW9uLmg6CisgICAgICAgICogU2hhcmVkL0VkaXRvclN0YXRl
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6RWRpdG9yU3RhdGU6OlBvc3RMYXlvdXREYXRhOjplbmNv
ZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpFZGl0b3JTdGF0ZTo6UG9zdExheW91dERhdGE6
OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL0VkaXRvclN0YXRlLmg6CisgICAgICAgICogVUlQ
cm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW06CisgICAgICAgICgtW1dLQ29u
dGVudFZpZXcgX2Rpc3BsYXlGb3JtTm9kZUlucHV0Vmlld10pOgorICAgICAgICAoLVtXS0NvbnRl
bnRWaWV3IF9zdGFydEFzc2lzdGluZ05vZGU6dXNlcklzSW50ZXJhY3Rpbmc6Ymx1clByZXZpb3Vz
Tm9kZTpjaGFuZ2luZ0FjdGl2aXR5U3RhdGU6dXNlck9iamVjdDpdKToKKyAgICAgICAgKC1bV0tD
b250ZW50VmlldyBfc3RvcEFzc2lzdGluZ05vZGVdKToKKyAgICAgICAgKC1bV0tDb250ZW50Vmll
dyBfdXBkYXRlQ2hhbmdlZFNlbGVjdGlvbjpdKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBf
c2hvdWxkU3VwcHJlc3NTZWxlY3Rpb25Db21tYW5kc10pOgorICAgICAgICAoLVtXS0NvbnRlbnRW
aWV3IHNldFN1cHByZXNzQXNzaXN0YW50U2VsZWN0aW9uVmlldzpdKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmVk
aXRvclN0YXRlIGNvbnN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBh
Z2VJT1MubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmdldEFzc2lzdGVkTm9kZUluZm9y
bWF0aW9uKToKKwogMjAxOC0xMS0xMSAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxl
LmNvbT4KIAogICAgICAgICBJbXBsZW1lbnQgYSBuZXcgZWRpdCBjb21tYW5kIHRvIGNoYW5nZSB0
aGUgZW5jbG9zaW5nIGxpc3QgdHlwZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlck9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2Jq
ZWN0LmNwcAppbmRleCA0MjU1MTA1ZTI0NGZkZDUxN2YzNDk0YmFiNjk5MjhiMzIzOTdhNDZkLi5i
NmQ4MzQ2Mzk2NzE1NDcwOTAyNzEzZmRkZDdhZTNiMDk2MjA0NWMzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcApAQCAtMTUxNCw2ICsxNTE0LDQzIEBAIHZvaWQg
UmVuZGVyT2JqZWN0OjpkZXN0cm95KCkKICAgICBkZWxldGUgdGhpczsKIH0KIAorYm9vbCBSZW5k
ZXJPYmplY3Q6OmlzVmlzaWJsZVJlc3BlY3RpbmdQYXJlbnRGcmFtZXMoKSBjb25zdAoreworICAg
IHN0YXRpYyBjb25zdCBkb3VibGUgbWluaW11bVZpc2libGVPcGFjaXR5ID0gMC4wMTsKKyAgICBi
b29sIGhhc1Zpc2libGVBbmNlc3RvciA9IGZhbHNlOworCisgICAgYXV0byogbGF5ZXIgPSBlbmNs
b3NpbmdMYXllcigpOworICAgIHdoaWxlIChsYXllcikgeworICAgICAgICBhdXRvJiBsYXllclJl
bmRlcmVyID0gbGF5ZXItPnJlbmRlcmVyKCk7CisgICAgICAgIGlmIChsYXllclJlbmRlcmVyLnN0
eWxlKCkub3BhY2l0eSgpIDwgbWluaW11bVZpc2libGVPcGFjaXR5KQorICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworCisgICAgICAgIGF1dG8gcmVuZGVyZXJWaXNpYmlsaXR5ID0gbGF5ZXJSZW5k
ZXJlci5zdHlsZSgpLnZpc2liaWxpdHkoKTsKKyAgICAgICAgaWYgKHJlbmRlcmVyVmlzaWJpbGl0
eSA9PSBWaXNpYmlsaXR5OjpWaXNpYmxlKQorICAgICAgICAgICAgaGFzVmlzaWJsZUFuY2VzdG9y
ID0gdHJ1ZTsKKworICAgICAgICBpZiAoIWhhc1Zpc2libGVBbmNlc3RvciAmJiByZW5kZXJlclZp
c2liaWxpdHkgPT0gVmlzaWJpbGl0eTo6SGlkZGVuKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgICAgIGF1dG8qIHBhcmVudExheWVyID0gbGF5ZXItPnBhcmVudCgpOworICAgICAg
ICBpZiAoIXBhcmVudExheWVyKSB7CisgICAgICAgICAgICBpZiAoIWlzPFJlbmRlclZpZXc+KGxh
eWVyUmVuZGVyZXIpKQorICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworCisgICAgICAgICAg
ICBhdXRvJiBlbmNsb3NpbmdGcmFtZSA9IGRvd25jYXN0PFJlbmRlclZpZXc+KGxheWVyUmVuZGVy
ZXIpLnZpZXcoKS5mcmFtZSgpOworICAgICAgICAgICAgaWYgKGVuY2xvc2luZ0ZyYW1lLmlzTWFp
bkZyYW1lKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAgICAgICAgIGlm
IChhdXRvICpmcmFtZU93bmVyUmVuZGVyZXIgPSBlbmNsb3NpbmdGcmFtZS5vd25lckVsZW1lbnQo
KS0+cmVuZGVyZXIoKSkgeworICAgICAgICAgICAgICAgIHBhcmVudExheWVyID0gZnJhbWVPd25l
clJlbmRlcmVyLT5lbmNsb3NpbmdMYXllcigpOworICAgICAgICAgICAgICAgIGhhc1Zpc2libGVB
bmNlc3RvciA9IGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGxheWVy
ID0gcGFyZW50TGF5ZXI7CisgICAgfQorICAgIHJldHVybiB0cnVlOworfQorCiBQb3NpdGlvbiBS
ZW5kZXJPYmplY3Q6OnBvc2l0aW9uRm9yUG9pbnQoY29uc3QgTGF5b3V0UG9pbnQmIHBvaW50KQog
ewogICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBqdXN0IGNyZWF0ZSBhIFBvc2l0aW9uIG9iamVj
dCBpbnN0ZWFkICh3ZWJraXQub3JnL2IvMTY4NTY2KS4gCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyT2JqZWN0LmgKaW5kZXggMmRjZTlkY2M1NjkxMzA5MWY3Mjk5NDdmYzZkZjcyNjRhOGU0
M2Y1ZS4uZjE3ZmM4ZjMzM2RmMzgwOWUxNTA5ZDk5MThhMGRkZjY0ODUxMzI0OSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaApAQCAtNzk3LDYgKzc5Nyw4IEBAIHB1Ymxp
YzoKICAgICB2b2lkIGluaXRpYWxpemVGcmFnbWVudGVkRmxvd1N0YXRlT25JbnNlcnRpb24oKTsK
ICAgICB2aXJ0dWFsIHZvaWQgaW5zZXJ0ZWRJbnRvVHJlZSgpOwogCisgICAgV0VCQ09SRV9FWFBP
UlQgYm9vbCBpc1Zpc2libGVSZXNwZWN0aW5nUGFyZW50RnJhbWVzKCkgY29uc3Q7CisKIHByb3Rl
Y3RlZDoKICAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KICAg
ICAvLyBIZWxwZXIgZnVuY3Rpb25zLiBEYW5nZXJvdXMgdG8gdXNlIQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9TaGFyZWQvQXNzaXN0ZWROb2RlSW5mb3JtYXRpb24uY3BwIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvQXNzaXN0ZWROb2RlSW5mb3JtYXRpb24uY3BwCmluZGV4IDllYTVkMTEyOTVi
OWM1ZTI2MGJhNjY3MDdiYTkzNWVjY2QxYjFkNTcuLmIyY2ZlMTE2MTZiYTY3YjNjZmVhOWY4ZDI1
NDY1Y2JkMWZjZjJjYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Fzc2lzdGVk
Tm9kZUluZm9ybWF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Bc3Npc3RlZE5v
ZGVJbmZvcm1hdGlvbi5jcHAKQEAgLTkxLDYgKzkxLDcgQEAgdm9pZCBBc3Npc3RlZE5vZGVJbmZv
cm1hdGlvbjo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKICAgICBlbmNvZGVy
IDw8IHRpdGxlOwogICAgIGVuY29kZXIgPDwgYWNjZXB0c0F1dG9maWxsZWRMb2dpbkNyZWRlbnRp
YWxzOwogICAgIGVuY29kZXIgPDwgaXNBdXRvZmlsbGFibGVVc2VybmFtZUZpZWxkOworICAgIGVu
Y29kZXIgPDwgZWxlbWVudElzSGlkZGVuOwogICAgIGVuY29kZXIgPDwgcmVwcmVzZW50aW5nUGFn
ZVVSTDsKICAgICBlbmNvZGVyLmVuY29kZUVudW0oYXV0b2ZpbGxGaWVsZE5hbWUpOwogICAgIGVu
Y29kZXIgPDwgcGxhY2Vob2xkZXI7CkBAIC0xOTEsNiArMTkyLDkgQEAgYm9vbCBBc3Npc3RlZE5v
ZGVJbmZvcm1hdGlvbjo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlciwgQXNzaXN0ZWROb2Rl
SW5mb3JtYXQKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5pc0F1dG9maWxsYWJsZVVz
ZXJuYW1lRmllbGQpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKKyAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKHJlc3VsdC5lbGVtZW50SXNIaWRkZW4pKQorICAgICAgICByZXR1cm4gZmFsc2U7CisK
ICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5yZXByZXNlbnRpbmdQYWdlVVJMKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9B
c3Npc3RlZE5vZGVJbmZvcm1hdGlvbi5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQXNzaXN0ZWRO
b2RlSW5mb3JtYXRpb24uaAppbmRleCA3OTc5ZWZiODA1NGE4NDFmZTQzZmU5ZDg0Njg1NTkxZGY2
ZDZkYWE2Li4yNjUxZjgzNWQxMDc3ZTAwZDU0Zjc0NzA1NWIwY2ExY2E1OGM5Mjc3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Bc3Npc3RlZE5vZGVJbmZvcm1hdGlvbi5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Fzc2lzdGVkTm9kZUluZm9ybWF0aW9uLmgKQEAgLTEyMCw2
ICsxMjAsNyBAQCBzdHJ1Y3QgQXNzaXN0ZWROb2RlSW5mb3JtYXRpb24gewogICAgIFN0cmluZyB0
aXRsZTsKICAgICBib29sIGFjY2VwdHNBdXRvZmlsbGVkTG9naW5DcmVkZW50aWFscyB7IGZhbHNl
IH07CiAgICAgYm9vbCBpc0F1dG9maWxsYWJsZVVzZXJuYW1lRmllbGQgeyBmYWxzZSB9OworICAg
IGJvb2wgZWxlbWVudElzSGlkZGVuIHsgZmFsc2UgfTsKICAgICBXZWJDb3JlOjpVUkwgcmVwcmVz
ZW50aW5nUGFnZVVSTDsKICAgICBXZWJDb3JlOjpBdXRvZmlsbEZpZWxkTmFtZSBhdXRvZmlsbEZp
ZWxkTmFtZSB7IFdlYkNvcmU6OkF1dG9maWxsRmllbGROYW1lOjpOb25lIH07CiAgICAgU3RyaW5n
IHBsYWNlaG9sZGVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvRWRpdG9yU3Rh
dGUuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvRWRpdG9yU3RhdGUuY3BwCmluZGV4IGMwNzNk
MzBiODliNzhhNGJiMGRkZmIwZjk3NTY0MTNhMjZiNDkyMTcuLjg4NThmY2ZkNDdhOTU2ZmFmMjIz
OTMzY2I0ZTcyMThmNTk5OWZhZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Vk
aXRvclN0YXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9FZGl0b3JTdGF0ZS5jcHAK
QEAgLTEzMSw2ICsxMzEsNyBAQCB2b2lkIEVkaXRvclN0YXRlOjpQb3N0TGF5b3V0RGF0YTo6ZW5j
b2RlKElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKICAgICBlbmNvZGVyIDw8IGlzU3RhYmxl
U3RhdGVVcGRhdGU7CiAgICAgZW5jb2RlciA8PCBpbnNpZGVGaXhlZFBvc2l0aW9uOwogICAgIGVu
Y29kZXIgPDwgaGFzUGxhaW5UZXh0OworICAgIGVuY29kZXIgPDwgZWxlbWVudElzSGlkZGVuOwog
ICAgIGVuY29kZXIgPDwgY2FyZXRDb2xvcjsKICNlbmRpZgogI2lmIFBMQVRGT1JNKE1BQykKQEAg
LTE4Nyw2ICsxODgsOCBAQCBib29sIEVkaXRvclN0YXRlOjpQb3N0TGF5b3V0RGF0YTo6ZGVjb2Rl
KElQQzo6RGVjb2RlciYgZGVjb2RlciwgUG9zdExheW91dERhdGEmCiAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5oYXNQbGFpblRleHQpKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuZWxlbWVu
dElzSGlkZGVuKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUocmVzdWx0LmNhcmV0Q29sb3IpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0VkaXRvclN0YXRlLmggYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9FZGl0b3JTdGF0ZS5oCmluZGV4IDBmYTIzODNlY2UwZmEyNGE0OTE2NzdmNDQy
MDg4OGFmM2ExZDQxYWIuLjk3MzlmNWZlMmJmODI0MzIwOGYyOGZlNzA2NWRmODJiMzZhZjhkYTYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0VkaXRvclN0YXRlLmgKKysrIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvRWRpdG9yU3RhdGUuaApAQCAtMTA3LDYgKzEwNyw3IEBAIHN0cnVj
dCBFZGl0b3JTdGF0ZSB7CiAgICAgICAgIGJvb2wgaXNTdGFibGVTdGF0ZVVwZGF0ZSB7IGZhbHNl
IH07CiAgICAgICAgIGJvb2wgaW5zaWRlRml4ZWRQb3NpdGlvbiB7IGZhbHNlIH07CiAgICAgICAg
IGJvb2wgaGFzUGxhaW5UZXh0IHsgZmFsc2UgfTsKKyAgICAgICAgYm9vbCBlbGVtZW50SXNIaWRk
ZW4geyBmYWxzZSB9OwogICAgICAgICBXZWJDb3JlOjpDb2xvciBjYXJldENvbG9yOwogI2VuZGlm
CiAjaWYgUExBVEZPUk0oTUFDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
aW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KaW5kZXggN2U3MWEyMjAwZmNlYWQ3ZWVh
NjJiMTMyNjU3NDJhNTc0YTMzNWQ5MC4uYTY2NGQ3NjM0ZDgwN2M0YzE3YjkwY2E2ZTM4YTk0ZjJh
ODcyMTU2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVu
dFZpZXdJbnRlcmFjdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tD
b250ZW50Vmlld0ludGVyYWN0aW9uLm1tCkBAIC0xMzQyLDE2ICsxMzQyLDE4IEBAIHN0YXRpYyBO
U1ZhbHVlICpuc1NpemVGb3JUYXBIaWdobGlnaHRCb3JkZXJSYWRpdXMoV2ViQ29yZTo6SW50U2l6
ZSBib3JkZXJSYWRpdXMsCiAKIC0gKHZvaWQpX2Rpc3BsYXlGb3JtTm9kZUlucHV0Vmlldwogewot
ICAgIC8vIEluIGNhc2UgdXNlciBzY2FsaW5nIGlzIGZvcmNlIGVuYWJsZWQsIGRvIG5vdCB1c2Ug
dGhhdCBzY2FsaW5nIHdoZW4gem9vbWluZyBpbiB3aXRoIGFuIGlucHV0IGZpZWxkLgotICAgIC8v
IFpvb21pbmcgYWJvdmUgdGhlIHBhZ2UncyBkZWZhdWx0IHNjYWxlIGZhY3RvciBzaG91bGQgb25s
eSBoYXBwZW4gd2hlbiB0aGUgdXNlciBwZXJmb3JtcyBpdC4KLSAgICBbc2VsZiBfem9vbVRvRm9j
dXNSZWN0Ol9hc3Npc3RlZE5vZGVJbmZvcm1hdGlvbi5lbGVtZW50UmVjdAotICAgICAgICBzZWxl
Y3Rpb25SZWN0Ol9kaWRBY2Nlc3NvcnlUYWJJbml0aWF0ZUZvY3VzID8gSW50UmVjdCgpIDogX2Fz
c2lzdGVkTm9kZUluZm9ybWF0aW9uLnNlbGVjdGlvblJlY3QKLSAgICAgICAgaW5zaWRlRml4ZWQ6
X2Fzc2lzdGVkTm9kZUluZm9ybWF0aW9uLmluc2lkZUZpeGVkUG9zaXRpb24KLSAgICAgICAgZm9u
dFNpemU6X2Fzc2lzdGVkTm9kZUluZm9ybWF0aW9uLm5vZGVGb250U2l6ZQotICAgICAgICBtaW5p
bXVtU2NhbGU6X2Fzc2lzdGVkTm9kZUluZm9ybWF0aW9uLm1pbmltdW1TY2FsZUZhY3RvcgotICAg
ICAgICBtYXhpbXVtU2NhbGU6X2Fzc2lzdGVkTm9kZUluZm9ybWF0aW9uLm1heGltdW1TY2FsZUZh
Y3Rvcklnbm9yaW5nQWx3YXlzU2NhbGFibGUKLSAgICAgICAgYWxsb3dTY2FsaW5nOl9hc3Npc3Rl
ZE5vZGVJbmZvcm1hdGlvbi5hbGxvd3NVc2VyU2NhbGluZ0lnbm9yaW5nQWx3YXlzU2NhbGFibGUg
JiYgIWN1cnJlbnRVc2VySW50ZXJmYWNlSWRpb21Jc1BhZCgpCi0gICAgICAgIGZvcmNlU2Nyb2xs
OihfYXNzaXN0ZWROb2RlSW5mb3JtYXRpb24uaW5wdXRNb2RlID09IElucHV0TW9kZTo6Tm9uZSkg
PyAhY3VycmVudFVzZXJJbnRlcmZhY2VJZGlvbUlzUGFkKCkgOiBbc2VsZiByZXF1aXJlc0FjY2Vz
c29yeVZpZXddXTsKKyAgICBpZiAoIXNlbGYuc3VwcHJlc3NBc3Npc3RhbnRTZWxlY3Rpb25WaWV3
KSB7CisgICAgICAgIC8vIEluIGNhc2UgdXNlciBzY2FsaW5nIGlzIGZvcmNlIGVuYWJsZWQsIGRv
IG5vdCB1c2UgdGhhdCBzY2FsaW5nIHdoZW4gem9vbWluZyBpbiB3aXRoIGFuIGlucHV0IGZpZWxk
LgorICAgICAgICAvLyBab29taW5nIGFib3ZlIHRoZSBwYWdlJ3MgZGVmYXVsdCBzY2FsZSBmYWN0
b3Igc2hvdWxkIG9ubHkgaGFwcGVuIHdoZW4gdGhlIHVzZXIgcGVyZm9ybXMgaXQuCisgICAgICAg
IFtzZWxmIF96b29tVG9Gb2N1c1JlY3Q6X2Fzc2lzdGVkTm9kZUluZm9ybWF0aW9uLmVsZW1lbnRS
ZWN0CisgICAgICAgICAgICBzZWxlY3Rpb25SZWN0Ol9kaWRBY2Nlc3NvcnlUYWJJbml0aWF0ZUZv
Y3VzID8gSW50UmVjdCgpIDogX2Fzc2lzdGVkTm9kZUluZm9ybWF0aW9uLnNlbGVjdGlvblJlY3QK
KyAgICAgICAgICAgIGluc2lkZUZpeGVkOl9hc3Npc3RlZE5vZGVJbmZvcm1hdGlvbi5pbnNpZGVG
aXhlZFBvc2l0aW9uCisgICAgICAgICAgICBmb250U2l6ZTpfYXNzaXN0ZWROb2RlSW5mb3JtYXRp
b24ubm9kZUZvbnRTaXplCisgICAgICAgICAgICBtaW5pbXVtU2NhbGU6X2Fzc2lzdGVkTm9kZUlu
Zm9ybWF0aW9uLm1pbmltdW1TY2FsZUZhY3RvcgorICAgICAgICAgICAgbWF4aW11bVNjYWxlOl9h
c3Npc3RlZE5vZGVJbmZvcm1hdGlvbi5tYXhpbXVtU2NhbGVGYWN0b3JJZ25vcmluZ0Fsd2F5c1Nj
YWxhYmxlCisgICAgICAgICAgICBhbGxvd1NjYWxpbmc6X2Fzc2lzdGVkTm9kZUluZm9ybWF0aW9u
LmFsbG93c1VzZXJTY2FsaW5nSWdub3JpbmdBbHdheXNTY2FsYWJsZSAmJiAhY3VycmVudFVzZXJJ
bnRlcmZhY2VJZGlvbUlzUGFkKCkKKyAgICAgICAgICAgIGZvcmNlU2Nyb2xsOihfYXNzaXN0ZWRO
b2RlSW5mb3JtYXRpb24uaW5wdXRNb2RlID09IElucHV0TW9kZTo6Tm9uZSkgPyAhY3VycmVudFVz
ZXJJbnRlcmZhY2VJZGlvbUlzUGFkKCkgOiBbc2VsZiByZXF1aXJlc0FjY2Vzc29yeVZpZXddXTsK
KyAgICB9CiAKICAgICBfZGlkQWNjZXNzb3J5VGFiSW5pdGlhdGVGb2N1cyA9IE5POwogICAgIFtz
ZWxmIF9lbnN1cmVGb3JtQWNjZXNzb3J5Vmlld107CkBAIC00MjYzLDYgKzQyNjUsOCBAQCBzdGF0
aWMgYm9vbCBpc0Fzc2lzdGFibGVJbnB1dFR5cGUoSW5wdXRUeXBlIHR5cGUpCiAgICAgaWYgKFtp
bnB1dERlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXc6ZGVjaWRl
UG9saWN5Rm9yRm9jdXNlZEVsZW1lbnQ6KV0pCiAgICAgICAgIHN0YXJ0SW5wdXRTZXNzaW9uUG9s
aWN5ID0gW2lucHV0RGVsZWdhdGUgX3dlYlZpZXc6X3dlYlZpZXcgZGVjaWRlUG9saWN5Rm9yRm9j
dXNlZEVsZW1lbnQ6Zm9jdXNlZEVsZW1lbnRJbmZvLmdldCgpXTsKIAorICAgIHNlbGYuc3VwcHJl
c3NBc3Npc3RhbnRTZWxlY3Rpb25WaWV3ID0gaW5mb3JtYXRpb24uZWxlbWVudElzSGlkZGVuOwor
CiAgICAgc3dpdGNoIChzdGFydElucHV0U2Vzc2lvblBvbGljeSkgewogICAgIGNhc2UgX1dLRm9j
dXNTdGFydHNJbnB1dFNlc3Npb25Qb2xpY3lBdXRvOgogICAgICAgICAvLyBUaGUgZGVmYXVsdCBi
ZWhhdmlvciBpcyB0byBhbGxvdyBub2RlIGFzc2lzdGFuY2UgaWYgdGhlIHVzZXIgaXMgaW50ZXJh
Y3RpbmcuCkBAIC00NDA1LDYgKzQ0MDksOCBAQCBzdGF0aWMgYm9vbCBpc0Fzc2lzdGFibGVJbnB1
dFR5cGUoSW5wdXRUeXBlIHR5cGUpCiAgICAgICAgIFtfd2ViVmlldyBfc2NoZWR1bGVWaXNpYmxl
Q29udGVudFJlY3RVcGRhdGVdOwogCiAgICAgW193ZWJWaWV3IGRpZEVuZEZvcm1Db250cm9sSW50
ZXJhY3Rpb25dOworCisgICAgc2VsZi5zdXBwcmVzc0Fzc2lzdGFudFNlbGVjdGlvblZpZXcgPSBO
TzsKIH0KIAogLSAodm9pZCl1cGRhdGVDdXJyZW50QXNzaXN0ZWROb2RlSW5mb3JtYXRpb246KEZ1
bmN0aW9uPHZvaWQoYm9vbCBkaWRVcGRhdGUpPiYmKWNhbGxiYWNrCkBAIC00NzM3LDkgKzQ3NDMs
MTQgQEAgc3RhdGljIGJvb2wgaXNBc3Npc3RhYmxlSW5wdXRUeXBlKElucHV0VHlwZSB0eXBlKQog
CiAtICh2b2lkKV91cGRhdGVDaGFuZ2VkU2VsZWN0aW9uOihCT09MKWZvcmNlCiB7Ci0gICAgaWYg
KCFfc2VsZWN0aW9uTmVlZHNVcGRhdGUgfHwgX3BhZ2UtPmVkaXRvclN0YXRlKCkuaXNNaXNzaW5n
UG9zdExheW91dERhdGEpCisgICAgYXV0byYgc3RhdGUgPSBfcGFnZS0+ZWRpdG9yU3RhdGUoKTsK
KyAgICBpZiAoc3RhdGUuaXNNaXNzaW5nUG9zdExheW91dERhdGEpCiAgICAgICAgIHJldHVybjsK
IAorICAgIGF1dG8mIHBvc3RMYXlvdXREYXRhID0gc3RhdGUucG9zdExheW91dERhdGEoKTsKKyAg
ICBpZiAoaGFzQXNzaXN0ZWROb2RlKF9hc3Npc3RlZE5vZGVJbmZvcm1hdGlvbikpCisgICAgICAg
IHNlbGYuc3VwcHJlc3NBc3Npc3RhbnRTZWxlY3Rpb25WaWV3ID0gcG9zdExheW91dERhdGEuZWxl
bWVudElzSGlkZGVuOworCiAgICAgV0tTZWxlY3Rpb25EcmF3aW5nSW5mbyBzZWxlY3Rpb25EcmF3
aW5nSW5mbyhfcGFnZS0+ZWRpdG9yU3RhdGUoKSk7CiAgICAgaWYgKGZvcmNlIHx8IHNlbGVjdGlv
bkRyYXdpbmdJbmZvICE9IF9sYXN0U2VsZWN0aW9uRHJhd2luZ0luZm8pIHsKICAgICAgICAgTE9H
X1dJVEhfU1RSRUFNKFNlbGVjdGlvbiwgc3RyZWFtIDw8ICJfdXBkYXRlQ2hhbmdlZFNlbGVjdGlv
biAiIDw8IHNlbGVjdGlvbkRyYXdpbmdJbmZvKTsKQEAgLTQ3NjAsOCArNDc3MSw3IEBAIHN0YXRp
YyBib29sIGlzQXNzaXN0YWJsZUlucHV0VHlwZShJbnB1dFR5cGUgdHlwZSkKICAgICAgICAgfQog
ICAgIH0KIAotICAgIGF1dG8mIHN0YXRlID0gX3BhZ2UtPmVkaXRvclN0YXRlKCk7Ci0gICAgaWYg
KCFzdGF0ZS5pc01pc3NpbmdQb3N0TGF5b3V0RGF0YSAmJiBzdGF0ZS5wb3N0TGF5b3V0RGF0YSgp
LmlzU3RhYmxlU3RhdGVVcGRhdGUgJiYgX25lZWRzRGVmZXJyZWRFbmRTY3JvbGxpbmdTZWxlY3Rp
b25VcGRhdGUgJiYgX3BhZ2UtPmluU3RhYmxlU3RhdGUoKSkgeworICAgIGlmIChwb3N0TGF5b3V0
RGF0YS5pc1N0YWJsZVN0YXRlVXBkYXRlICYmIF9uZWVkc0RlZmVycmVkRW5kU2Nyb2xsaW5nU2Vs
ZWN0aW9uVXBkYXRlICYmIF9wYWdlLT5pblN0YWJsZVN0YXRlKCkpIHsKICAgICAgICAgW1tzZWxm
IHNlbGVjdGlvbkludGVyYWN0aW9uQXNzaXN0YW50XSBzaG93U2VsZWN0aW9uQ29tbWFuZHNdOwog
CiAgICAgICAgIGlmICghc2VsZi5zdXBwcmVzc0Fzc2lzdGFudFNlbGVjdGlvblZpZXcpCkBAIC00
NzczLDYgKzQ3ODMsMTEgQEAgc3RhdGljIGJvb2wgaXNBc3Npc3RhYmxlSW5wdXRUeXBlKElucHV0
VHlwZSB0eXBlKQogICAgIH0KIH0KIAorLSAoQk9PTClfc2hvdWxkU3VwcHJlc3NTZWxlY3Rpb25D
b21tYW5kcworeworICAgIHJldHVybiBfc3VwcHJlc3NBc3Npc3RhbnRTZWxlY3Rpb25WaWV3Owor
fQorCiAtIChCT09MKXN1cHByZXNzQXNzaXN0YW50U2VsZWN0aW9uVmlldwogewogICAgIHJldHVy
biBfc3VwcHJlc3NBc3Npc3RhbnRTZWxlY3Rpb25WaWV3OwpAQCAtNDc5MSw2ICs0ODA2LDkgQEAg
c3RhdGljIGJvb2wgaXNBc3Npc3RhYmxlSW5wdXRUeXBlKElucHV0VHlwZSB0eXBlKQogICAgICAg
ICBbX3RleHRTZWxlY3Rpb25Bc3Npc3RhbnQgZGVhY3RpdmF0ZVNlbGVjdGlvbl07CiAgICAgZWxz
ZQogICAgICAgICBbX3RleHRTZWxlY3Rpb25Bc3Npc3RhbnQgYWN0aXZhdGVTZWxlY3Rpb25dOwor
CisgICAgW190ZXh0U2VsZWN0aW9uQXNzaXN0YW50IGxvdXBlR2VzdHVyZV0uZW5hYmxlZCA9IHN1
cHByZXNzQXNzaXN0YW50U2VsZWN0aW9uVmlldzsKKyAgICBbX3RleHRTZWxlY3Rpb25Bc3Npc3Rh
bnQgZm9yY2VQcmVzc0dlc3R1cmVdLmVuYWJsZWQgPSBzdXBwcmVzc0Fzc2lzdGFudFNlbGVjdGlv
blZpZXc7CiB9CiAKICNpZiBFTkFCTEUoREFUQUxJU1RfRUxFTUVOVCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggNjNiY2EyMmRhNDUzYjU4ZTg1
OGMwMjA5ZTM0OWJmNjY2NmNmNWZjOS4uMzRiNTJiZWY4MjBlYWI4NjVmMzViNDUxYmI1MTA0NGE4
OGM0NmZjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5j
cHAKQEAgLTEwMDgsNiArMTAwOCwxMSBAQCBFZGl0b3JTdGF0ZSBXZWJQYWdlOjplZGl0b3JTdGF0
ZShJbmNsdWRlUG9zdExheW91dERhdGFIaW50IHNob3VsZEluY2x1ZGVQb3N0TGF5bwogICAgICAg
ICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CiAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChtX2Fzc2lzdGVkTm9kZSkgeworICAg
ICAgICAgICAgICAgIGlmIChhdXRvKiByZW5kZXJlciA9IG1fYXNzaXN0ZWROb2RlLT5yZW5kZXJl
cigpKQorICAgICAgICAgICAgICAgICAgICBwb3N0TGF5b3V0RGF0YS5lbGVtZW50SXNIaWRkZW4g
PSAhcmVuZGVyZXItPmlzVmlzaWJsZVJlc3BlY3RpbmdQYXJlbnRGcmFtZXMoKTsKKyAgICAgICAg
ICAgIH0KICAgICAgICAgfQogI2VuZGlmCiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQppbmRleCAzYWQ5YWNlZmM1YTEwYTY2
NTQ0MmE5MDQ4YWUwNjNhOWE5Y2Y0Y2ZmLi5iYjY0ZTI2NzQzNTZkMzEzMGMxYWUzOWNlZmFlYTRi
ZDcwYTQ3NTBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9p
b3MvV2ViUGFnZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9p
b3MvV2ViUGFnZUlPUy5tbQpAQCAtMjMzNyw2ICsyMzM3LDcgQEAgdm9pZCBXZWJQYWdlOjpnZXRB
c3Npc3RlZE5vZGVJbmZvcm1hdGlvbihBc3Npc3RlZE5vZGVJbmZvcm1hdGlvbiYgaW5mb3JtYXRp
b24pCiAgICAgICAgIEZyYW1lJiBlbGVtZW50RnJhbWUgPSBtX3BhZ2UtPmZvY3VzQ29udHJvbGxl
cigpLmZvY3VzZWRPck1haW5GcmFtZSgpOwogICAgICAgICBpbmZvcm1hdGlvbi5lbGVtZW50UmVj
dCA9IGVsZW1lbnRSZWN0SW5Sb290Vmlld0Nvb3JkaW5hdGVzKCptX2Fzc2lzdGVkTm9kZSwgZWxl
bWVudEZyYW1lKTsKICAgICAgICAgaW5mb3JtYXRpb24ubm9kZUZvbnRTaXplID0gcmVuZGVyZXIt
PnN0eWxlKCkuZm9udERlc2NyaXB0aW9uKCkuY29tcHV0ZWRTaXplKCk7CisgICAgICAgIGluZm9y
bWF0aW9uLmVsZW1lbnRJc0hpZGRlbiA9ICFyZW5kZXJlci0+aXNWaXNpYmxlUmVzcGVjdGluZ1Bh
cmVudEZyYW1lcygpOwogCiAgICAgICAgIGJvb2wgaW5GaXhlZCA9IGZhbHNlOwogICAgICAgICBy
ZW5kZXJlci0+bG9jYWxUb0NvbnRhaW5lclBvaW50KEZsb2F0UG9pbnQoKSwgbnVsbHB0ciwgVXNl
VHJhbnNmb3JtcywgJmluRml4ZWQpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>354648</attachid>
            <date>2018-11-12 21:38:24 -0800</date>
            <delta_ts>2018-11-12 21:49:27 -0800</delta_ts>
            <desc>First pass</desc>
            <filename>bug-191442-20181112213824.patch</filename>
            <type>text/plain</type>
            <size>51672</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM4MDgxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjlkNDUwNmNkYmI1OWU2
YmQwZDJkMjA3NDQ1NTRlYmIzYzIwZmJjYS4uNzkxNzY0MGNlNmJiZGZlNmU3ZjEyZDJkOTM5MWE4
MmFmMzEyZmYxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDE4LTExLTEyICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtpT1NdIERvIG5v
dCBzaG93IHNlbGVjdGlvbiBVSSBmb3IgZWRpdGFibGUgZWxlbWVudHMgd2l0aCBvcGFjaXR5IG5l
YXIgemVybworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTkxNDQyCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80NTk1ODYyNT4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0czogZWRpdGluZy9zZWxlY3Rp
b24vaW9zL2RvLW5vdC1zY3JvbGwtdG8tZm9jdXNlZC1oaWRkZW4tY29udGVudGVkaXRhYmxlLmh0
bWwKKyAgICAgICAgICAgICAgIGVkaXRpbmcvc2VsZWN0aW9uL2lvcy9oaWRlLXNlbGVjdGlvbi1h
ZnRlci1oaWRpbmctY29udGVudGVkaXRhYmxlLmh0bWwKKyAgICAgICAgICAgICAgIGVkaXRpbmcv
c2VsZWN0aW9uL2lvcy9oaWRlLXNlbGVjdGlvbi1pbi1oaWRkZW4tY29udGVudGVkaXRhYmxlLWZy
YW1lLmh0bWwKKyAgICAgICAgICAgICAgIGVkaXRpbmcvc2VsZWN0aW9uL2lvcy9oaWRlLXNlbGVj
dGlvbi1pbi1oaWRkZW4tY29udGVudGVkaXRhYmxlLmh0bWwKKworICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0Ojppc1Ry
YW5zcGFyZW50UmVzcGVjdGluZ1BhcmVudEZyYW1lcyBjb25zdCk6CisKKyAgICAgICAgQWRkIGEg
aGVscGVyIGZ1bmN0aW9uIHRvIGRldGVybWluZSB3aGV0aGVyIGEgUmVuZGVyT2JqZWN0IGlzIGNv
bnRhaW5lZCB3aXRoaW4gYSB0cmFuc3BhcmVudCBsYXllciwgdGFraW5nIHBhcmVudAorICAgICAg
ICBmcmFtZXMgaW50byBhY2NvdW50LiBBIGxheWVyIGlzIGNvbnNpZGVyZWQgdHJhbnNwYXJlbnQg
aWYgaXRzIG9wYWNpdHkgaXMgbGVzcyB0aGFuIGEgc21hbGwgdGhyZXNob2xkIChpLmUuIDAuMDEp
LgorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oOgorCiAyMDE4LTExLTExICBX
ZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIEltcGxlbWVu
dCBhIG5ldyBlZGl0IGNvbW1hbmQgdG8gY2hhbmdlIHRoZSBlbmNsb3NpbmcgbGlzdCB0eXBlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCmluZGV4IDAyMGJlNTI0NGQ1YTVjNmU1MmZiY2FlMTEzMDA0YTAxOWQ1NDYyN2MuLmU4YTg5
YTczODllZDhlMmI4Mjg0NzEzNWY3ODZhMGRmODAwYjI3MTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
NzkgQEAKKzIwMTgtMTEtMTIgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+
CisKKyAgICAgICAgW2lPU10gRG8gbm90IHNob3cgc2VsZWN0aW9uIFVJIGZvciBlZGl0YWJsZSBl
bGVtZW50cyB3aXRoIG9wYWNpdHkgbmVhciB6ZXJvCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTE0NDIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQ1
OTU4NjI1PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEFkZCBzdXBwb3J0IGZvciBzdXBwcmVzc2luZyBuYXRpdmUgc2VsZWN0aW9uIFVJIChmb3IgaW5z
dGFuY2UsIHNlbGVjdGlvbiBoaWdobGlnaHQgdmlld3MsIHNlbGVjdGlvbiBoYW5kbGVzLCBhbmQK
KyAgICAgICAgc2VsZWN0aW9uLXJlbGF0ZWQgZ2VzdHVyZXMpIHdoZW4gdGhlIHNlbGVjdGlvbiBp
cyBpbnNpZGUgYSB0cmFuc3BhcmVudCBlZGl0YWJsZSBlbGVtZW50LiBUaGlzIGhlbHBzIG1haW50
YWluCisgICAgICAgIGNvbXBhdGliaWxpdHkgd2l0aCB0ZXh0IGVkaXRvcnMgdGhhdCB3b3JrIGJ5
IGNhcHR1cmluZyBrZXkgZXZlbnRzIGFuZCBpbnB1dCBldmVudHMgaGlkZGVuIGNvbnRlbnRlZGl0
YWJsZQorICAgICAgICBlbGVtZW50cywgYW5kIHJlZmxlY3QgdGhlc2UgY2hhbmdlcyBpbiBkaWZm
ZXJlbnQgZG9jdW1lbnQgb3IgZGlmZmVyZW50IHBhcnQgb2YgdGhlIGRvY3VtZW50LgorCisgICAg
ICAgIFNpbmNlIHNlbGVjdGlvbiBVSSBpcyByZW5kZXJlZCBpbiB0aGUgVUkgcHJvY2VzcyBvbiBp
T1MgdXNpbmcgZWxlbWVudCBnZW9tZXRyeSBwcm9wYWdhdGVkIGZyb20gdGhlIHdlYiBwcm9jZXNz
LAorICAgICAgICBzZWxlY3Rpb24gcmVuZGVyaW5nIGlzIGVudGlyZWx5IGRlY291cGxlZCBmcm9t
IHRoZSBwcm9jZXNzIG9mIHBhaW50aW5nIGluIHRoZSB3ZWIgcHJvY2Vzcy4gVGhpcyBtZWFucyB0
aGF0IGlmCisgICAgICAgIHRoZSBlZGl0YWJsZSByb290IGhhcyBhbiBvcGFjaXR5IG9mIDAsIHdl
IHdvdWxkIGNvcnJlY3RseSBoaWRlIHRoZSBjYXJldCBhbmQgc2VsZWN0aW9uIG9uIG1hY09TLCBi
dXQgZHJhdyBvdmVyCisgICAgICAgIHRoZSB0cmFuc3BhcmVudCBlbGVtZW50IG9uIGlPUy4gV2hl
biB0aGVzZSBoaWRkZW4gZWRpdGFibGUgZWxlbWVudHMgYXJlIGZvY3VzZWQsIHRoaXMgb2Z0ZW4g
cmVzdWx0cyBpbiB1bndhbnRlZAorICAgICAgICBiZWhhdmlvcnMsIHN1Y2ggYXMgZG91YmxlIGNh
cmV0IHBhaW50aW5nLCBuYXRpdmUgYW5kIGN1c3RvbSBzZWxlY3Rpb24gVUkgZnJvbSB0aGUgcGFn
ZSBiZWluZyBkcmF3biBvbiB0b3Agb2Ygb25lCisgICAgICAgIGFub3RoZXIsIGFuZCB0aGUgYWJp
bGl0eSB0byBjaGFuZ2Ugc2VsZWN0aW9uIHZpYSB0YXAgYW5kIGxvdXBlIGdlc3R1cmVzIHdpdGhp
biBoaWRkZW4gdGV4dC4KKworICAgICAgICBUbyBmaXggdGhpcywgd2UgY29tcHV0ZSB3aGV0aGVy
IHRoZSBmb2N1c2VkIGVsZW1lbnQgaXMgdHJhbnNwYXJlbnQgd2hlbiBhbiBlbGVtZW50IGlzIGZv
Y3VzZWQsIG9yIHdoZW4gdGhlCisgICAgICAgIHNlbGVjdGlvbiBjaGFuZ2VzLCBhbmQgc2VuZCB0
aGlzIGluZm9ybWF0aW9uIG92ZXIgdG8gdGhlIFVJIHByb2Nlc3MgdmlhIGBBc3Npc3RlZE5vZGVJ
bmZvcm1hdGlvbmAgYW5kCisgICAgICAgIGBFZGl0b3JTdGF0ZWAuIEluIHRoZSBVSSBwcm9jZXNz
LCB3ZSB0aGVuIHJlc3BlY3QgdGhpcyBpbmZvcm1hdGlvbiBieSBzdXBwcmVzc2luZyB0aGUgc2Vs
ZWN0aW9uIGFzc2lzdGFudCBpZiB0aGUKKyAgICAgICAgZm9jdXNlZCBlbGVtZW50IGlzIHRyYW5z
cGFyZW50OyB0aGlzIGRpc2FibGVzIHNob3dpbmcgYW5kIGxheWluZyBvdXQgc2VsZWN0aW9uIHZp
ZXdzLCBhcyB3ZWxsIGFzIGdlc3R1cmVzCisgICAgICAgIGFzc29jaWF0ZWQgd2l0aCBzZWxlY3Rp
b24gb3ZlcmxheXMuIEhvd2V2ZXIsIHRoaXMgc3RpbGwgYWxsb3dzIGZvciBjb250ZXh0dWFsIGF1
dG9jb3JyZWN0aW9uIGFuZCBzcGVsbCBjaGVja2luZy4KKworICAgICAgICAqIFNoYXJlZC9Bc3Np
c3RlZE5vZGVJbmZvcm1hdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OkFzc2lzdGVkTm9kZUlu
Zm9ybWF0aW9uOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpBc3Npc3RlZE5vZGVJ
bmZvcm1hdGlvbjo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvQXNzaXN0ZWROb2RlSW5mb3Jt
YXRpb24uaDoKKyAgICAgICAgKiBTaGFyZWQvRWRpdG9yU3RhdGUuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpFZGl0b3JTdGF0ZTo6UG9zdExheW91dERhdGE6OmVuY29kZSBjb25zdCk6CisgICAgICAg
IChXZWJLaXQ6OkVkaXRvclN0YXRlOjpQb3N0TGF5b3V0RGF0YTo6ZGVjb2RlKToKKyAgICAgICAg
KiBTaGFyZWQvRWRpdG9yU3RhdGUuaDoKKworICAgICAgICBBZGQgYGVsZW1lbnRJc1RyYW5zcGFy
ZW50YCBmbGFncywgYW5kIGFsc28gYWRkIGJvaWxlcnBsYXRlIElQQyBjb2RlLgorCisgICAgICAg
ICogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW06CisgICAgICAgICgt
W1dLQ29udGVudFZpZXcgX2Rpc3BsYXlGb3JtTm9kZUlucHV0Vmlld10pOgorCisgICAgICAgIFBy
ZXZlbnQgem9vbWluZyB0byB0aGUgZm9jdXNlZCBlbGVtZW50IGlmIHRoZSBmb2N1c2VkIGVsZW1l
bnQgaXMgaGlkZGVuLgorCisgICAgICAgICgtW1dLQ29udGVudFZpZXcgaGFzU2VsZWN0YWJsZVBv
c2l0aW9uQXRQb2ludDpdKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBwb2ludElzTmVhck1h
cmtlZFRleHQ6XSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgdGV4dEludGVyYWN0aW9uR2Vz
dHVyZTpzaG91bGRCZWdpbkF0UG9pbnQ6XSk6CisKKyAgICAgICAgRG9uJ3QgYWxsb3cgdGhlc2Ug
dGV4dCBpbnRlcmFjdGlvbiBnZXN0dXJlcyB0byBiZWdpbiB3aGlsZSBzdXBwcmVzc2luZyB0aGUg
c2VsZWN0aW9uIGFzc2lzdGFudC4KKworICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9zdGFydEFz
c2lzdGluZ05vZGU6dXNlcklzSW50ZXJhY3Rpbmc6Ymx1clByZXZpb3VzTm9kZTpjaGFuZ2luZ0Fj
dGl2aXR5U3RhdGU6dXNlck9iamVjdDpdKToKKworICAgICAgICBXaGVuIGFuIGVsZW1lbnQgaXMg
Zm9jdXNlZCwgYmVnaW4gc3VwcHJlc3NpbmcgdGhlIHNlbGVjdGlvbiBhc3Npc3RhbnQgaWYgdGhl
IGVsZW1lbnQgaXMgZnVsbHkgdHJhbnNwYXJlbnQuCisKKyAgICAgICAgKC1bV0tDb250ZW50Vmll
dyBfc3RvcEFzc2lzdGluZ05vZGVdKToKKworICAgICAgICBXaGVuIHRoZSBmb2N1c2VkIGVsZW1l
bnQgaXMgYmx1cnJlZCwgcmVzZXQgc3RhdGUgYnkgZW5kaW5nIHNlbGVjdGlvbiBhc3Npc3RhbnQg
c3VwcHJlc3Npb24gKGFkZGl0aW9uYWxseQorICAgICAgICByZWFjdGl2YXRpbmcgdGhlIHNlbGVj
dGlvbiBhc3Npc3RhbnQgaWYgbmVlZGVkKS4gVGhpcyBlbnN1cmVzIHRoYXQgc2VsZWN0aW9uIGlu
IG5vbi1lZGl0YWJsZSB0ZXh0IGlzbid0IGJyb2tlbgorICAgICAgICBhZnRlciBmb2N1c2luZyBh
IGhpZGRlbiBlZGl0YWJsZSBlbGVtZW50LgorCisgICAgICAgICgtW1dLQ29udGVudFZpZXcgX3Vw
ZGF0ZUNoYW5nZWRTZWxlY3Rpb246XSk6CisKKyAgICAgICAgSWYgbmVlZGVkLCBzdXBwcmVzcyBv
ciB1bi1zdXBwcmVzcyB0aGUgc2VsZWN0aW9uIGFzc2lzdGFudCB3aGVuIHRoZSBzZWxlY3Rpb24g
Y2hhbmdlcy4gT24gY2VydGFpbiByaWNoIHRleHQKKyAgICAgICAgZWRpdG9ycywgYSBjb21iaW5h
dGlvbiBvZiBjdXN0b20gc2VsZWN0aW9uIFVJIGFuZCBuYXRpdmUgc2VsZWN0aW9uIFVJIGlzIHVz
ZWQuIEZvciBpbnN0YW5jZSwgb24gTWljcm9zb2Z0IE9mZmljZQorICAgICAgICAzNjUsIGNhcmV0
IHNlbGVjdGlvbnMgYXJlIHJlbmRlcmVkIHVzaW5nIHRoZSBuYXRpdmUgY2FyZXQgdmlldywgYnV0
IGFzIHNvb24gYXMgdGhlIHNlbGVjdGlvbiBiZWNvbWVzIHJhbmdlZCwgdGhlCisgICAgICAgIGVk
aXRhYmxlIHJvb3QgYmVjb21lcyBmdWxseSB0cmFuc3BhcmVudCwgYW5kIE9mZmljZSdzIHNlbGVj
dGlvbiBVSSB0YWtlcyBvdmVyLgorCisgICAgICAgICgtW1dLQ29udGVudFZpZXcgX3Nob3VsZFN1
cHByZXNzU2VsZWN0aW9uQ29tbWFuZHNdKToKKworICAgICAgICBPdmVycmlkZSB0aGlzIFVJS2l0
IFNQSSBob29rIHRvIHN1cHByZXNzIHNlbGVjdGlvbiBjb21tYW5kcyAoZS5nLiB0aGUgY2FsbG91
dCBiYXIpIHdoZW4gc3VwcHJlc3NpbmcgdGhlCisgICAgICAgIHNlbGVjdGlvbiBhc3Npc3RhbnQu
CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW06CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2U6OnBsYXRmb3JtRWRpdG9yU3RhdGUgY29uc3QpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlOjpnZXRBc3Npc3RlZE5vZGVJbmZvcm1hdGlvbik6CisKKyAgICAg
ICAgQ29tcHV0ZSBhbmQgc2V0IGBlbGVtZW50SXNUcmFuc3BhcmVudGAgdXNpbmcgdGhlIGFzc2lz
dGVkIG5vZGUuCisKIDIwMTgtMTEtMTEgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBs
ZS5jb20+CiAKICAgICAgICAgSW1wbGVtZW50IGEgbmV3IGVkaXQgY29tbWFuZCB0byBjaGFuZ2Ug
dGhlIGVuY2xvc2luZyBsaXN0IHR5cGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9i
amVjdC5jcHAKaW5kZXggNDI1NTEwNWUyNDRmZGQ1MTdmMzQ5NGJhYjY5OTI4YjMyMzk3YTQ2ZC4u
ZWYwMjQ2Y2U4MmU5ZmM1ZjI3ODViOTZkNDRlYzdjODAzODM5OTg4MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKQEAgLTE1MTQsNiArMTUxNCwzMyBAQCB2b2lk
IFJlbmRlck9iamVjdDo6ZGVzdHJveSgpCiAgICAgZGVsZXRlIHRoaXM7CiB9CiAKK2Jvb2wgUmVu
ZGVyT2JqZWN0Ojppc1RyYW5zcGFyZW50UmVzcGVjdGluZ1BhcmVudEZyYW1lcygpIGNvbnN0Cit7
CisgICAgc3RhdGljIGNvbnN0IGRvdWJsZSBtaW5pbXVtVmlzaWJsZU9wYWNpdHkgPSAwLjAxOwor
CisgICAgYXV0byogbGF5ZXIgPSBlbmNsb3NpbmdMYXllcigpOworICAgIHdoaWxlIChsYXllcikg
eworICAgICAgICBhdXRvJiBsYXllclJlbmRlcmVyID0gbGF5ZXItPnJlbmRlcmVyKCk7CisgICAg
ICAgIGlmIChsYXllclJlbmRlcmVyLnN0eWxlKCkub3BhY2l0eSgpIDwgbWluaW11bVZpc2libGVP
cGFjaXR5KQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAgICAgYXV0byogcGFyZW50
TGF5ZXIgPSBsYXllci0+cGFyZW50KCk7CisgICAgICAgIGlmICghcGFyZW50TGF5ZXIpIHsKKyAg
ICAgICAgICAgIGlmICghaXM8UmVuZGVyVmlldz4obGF5ZXJSZW5kZXJlcikpCisgICAgICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgICAgICBhdXRvJiBlbmNsb3NpbmdGcmFtZSA9
IGRvd25jYXN0PFJlbmRlclZpZXc+KGxheWVyUmVuZGVyZXIpLnZpZXcoKS5mcmFtZSgpOworICAg
ICAgICAgICAgaWYgKGVuY2xvc2luZ0ZyYW1lLmlzTWFpbkZyYW1lKCkpCisgICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgICAgICBpZiAoYXV0byAqZnJhbWVPd25lclJlbmRl
cmVyID0gZW5jbG9zaW5nRnJhbWUub3duZXJFbGVtZW50KCktPnJlbmRlcmVyKCkpCisgICAgICAg
ICAgICAgICAgcGFyZW50TGF5ZXIgPSBmcmFtZU93bmVyUmVuZGVyZXItPmVuY2xvc2luZ0xheWVy
KCk7CisgICAgICAgIH0KKyAgICAgICAgbGF5ZXIgPSBwYXJlbnRMYXllcjsKKyAgICB9CisgICAg
cmV0dXJuIGZhbHNlOworfQorCiBQb3NpdGlvbiBSZW5kZXJPYmplY3Q6OnBvc2l0aW9uRm9yUG9p
bnQoY29uc3QgTGF5b3V0UG9pbnQmIHBvaW50KQogewogICAgIC8vIEZJWE1FOiBUaGlzIHNob3Vs
ZCBqdXN0IGNyZWF0ZSBhIFBvc2l0aW9uIG9iamVjdCBpbnN0ZWFkICh3ZWJraXQub3JnL2IvMTY4
NTY2KS4gCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0
LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgKaW5kZXggMmRjZTlk
Y2M1NjkxMzA5MWY3Mjk5NDdmYzZkZjcyNjRhOGU0M2Y1ZS4uNjc0NWMwNzQ4NWM4MGNkYjdjMmJi
MmY2OTE5MDRjNGNmNzlhMDFkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlck9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmpl
Y3QuaApAQCAtNzk3LDYgKzc5Nyw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGluaXRpYWxpemVGcmFn
bWVudGVkRmxvd1N0YXRlT25JbnNlcnRpb24oKTsKICAgICB2aXJ0dWFsIHZvaWQgaW5zZXJ0ZWRJ
bnRvVHJlZSgpOwogCisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBpc1RyYW5zcGFyZW50UmVzcGVj
dGluZ1BhcmVudEZyYW1lcygpIGNvbnN0OworCiBwcm90ZWN0ZWQ6CiAgICAgLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCiAgICAgLy8gSGVscGVyIGZ1bmN0aW9ucy4g
RGFuZ2Vyb3VzIHRvIHVzZSEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Fzc2lz
dGVkTm9kZUluZm9ybWF0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Fzc2lzdGVkTm9k
ZUluZm9ybWF0aW9uLmNwcAppbmRleCA5ZWE1ZDExMjk1YjljNWUyNjBiYTY2NzA3YmE5MzVlY2Nk
MWIxZDU3Li5hOGJkN2E3ZmY5Mjk1NjIxNmNlMzM3MjgxOWRmOTA5ZjIzOTE1MWQzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Bc3Npc3RlZE5vZGVJbmZvcm1hdGlvbi5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvQXNzaXN0ZWROb2RlSW5mb3JtYXRpb24uY3BwCkBAIC05
MSw2ICs5MSw3IEBAIHZvaWQgQXNzaXN0ZWROb2RlSW5mb3JtYXRpb246OmVuY29kZShJUEM6OkVu
Y29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAgZW5jb2RlciA8PCB0aXRsZTsKICAgICBlbmNvZGVy
IDw8IGFjY2VwdHNBdXRvZmlsbGVkTG9naW5DcmVkZW50aWFsczsKICAgICBlbmNvZGVyIDw8IGlz
QXV0b2ZpbGxhYmxlVXNlcm5hbWVGaWVsZDsKKyAgICBlbmNvZGVyIDw8IGVsZW1lbnRJc1RyYW5z
cGFyZW50OwogICAgIGVuY29kZXIgPDwgcmVwcmVzZW50aW5nUGFnZVVSTDsKICAgICBlbmNvZGVy
LmVuY29kZUVudW0oYXV0b2ZpbGxGaWVsZE5hbWUpOwogICAgIGVuY29kZXIgPDwgcGxhY2Vob2xk
ZXI7CkBAIC0xOTEsNiArMTkyLDkgQEAgYm9vbCBBc3Npc3RlZE5vZGVJbmZvcm1hdGlvbjo6ZGVj
b2RlKElQQzo6RGVjb2RlciYgZGVjb2RlciwgQXNzaXN0ZWROb2RlSW5mb3JtYXQKICAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKHJlc3VsdC5pc0F1dG9maWxsYWJsZVVzZXJuYW1lRmllbGQpKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5lbGVt
ZW50SXNUcmFuc3BhcmVudCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwogICAgIGlmICghZGVj
b2Rlci5kZWNvZGUocmVzdWx0LnJlcHJlc2VudGluZ1BhZ2VVUkwpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Fzc2lzdGVkTm9kZUlu
Zm9ybWF0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Bc3Npc3RlZE5vZGVJbmZvcm1hdGlv
bi5oCmluZGV4IDc5NzllZmI4MDU0YTg0MWZlNDNmZTlkODQ2ODU1OTFkZjZkNmRhYTYuLjA0ODQ0
YTI0MTk2ODY4YTkxMWE5M2MyMWEzNWM5ZjYzMmUzM2YwM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0Fzc2lzdGVkTm9kZUluZm9ybWF0aW9uLmgKKysrIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvQXNzaXN0ZWROb2RlSW5mb3JtYXRpb24uaApAQCAtMTIwLDYgKzEyMCw3IEBAIHN0
cnVjdCBBc3Npc3RlZE5vZGVJbmZvcm1hdGlvbiB7CiAgICAgU3RyaW5nIHRpdGxlOwogICAgIGJv
b2wgYWNjZXB0c0F1dG9maWxsZWRMb2dpbkNyZWRlbnRpYWxzIHsgZmFsc2UgfTsKICAgICBib29s
IGlzQXV0b2ZpbGxhYmxlVXNlcm5hbWVGaWVsZCB7IGZhbHNlIH07CisgICAgYm9vbCBlbGVtZW50
SXNUcmFuc3BhcmVudCB7IGZhbHNlIH07CiAgICAgV2ViQ29yZTo6VVJMIHJlcHJlc2VudGluZ1Bh
Z2VVUkw7CiAgICAgV2ViQ29yZTo6QXV0b2ZpbGxGaWVsZE5hbWUgYXV0b2ZpbGxGaWVsZE5hbWUg
eyBXZWJDb3JlOjpBdXRvZmlsbEZpZWxkTmFtZTo6Tm9uZSB9OwogICAgIFN0cmluZyBwbGFjZWhv
bGRlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0VkaXRvclN0YXRlLmNwcCBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0VkaXRvclN0YXRlLmNwcAppbmRleCBjMDczZDMwYjg5Yjc4
YTRiYjBkZGZiMGY5NzU2NDEzYTI2YjQ5MjE3Li4wYTJiYTdmMDM2NzU5OTE3ZWIzNGM5MzU5MDA1
YWJiM2VjY2NlNmE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9FZGl0b3JTdGF0
ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvRWRpdG9yU3RhdGUuY3BwCkBAIC0xMzEs
NiArMTMxLDcgQEAgdm9pZCBFZGl0b3JTdGF0ZTo6UG9zdExheW91dERhdGE6OmVuY29kZShJUEM6
OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAgZW5jb2RlciA8PCBpc1N0YWJsZVN0YXRlVXBk
YXRlOwogICAgIGVuY29kZXIgPDwgaW5zaWRlRml4ZWRQb3NpdGlvbjsKICAgICBlbmNvZGVyIDw8
IGhhc1BsYWluVGV4dDsKKyAgICBlbmNvZGVyIDw8IGVsZW1lbnRJc1RyYW5zcGFyZW50OwogICAg
IGVuY29kZXIgPDwgY2FyZXRDb2xvcjsKICNlbmRpZgogI2lmIFBMQVRGT1JNKE1BQykKQEAgLTE4
Nyw2ICsxODgsOCBAQCBib29sIEVkaXRvclN0YXRlOjpQb3N0TGF5b3V0RGF0YTo6ZGVjb2RlKElQ
Qzo6RGVjb2RlciYgZGVjb2RlciwgUG9zdExheW91dERhdGEmCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5oYXNQbGFpblRleHQpKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuZWxlbWVudElz
VHJhbnNwYXJlbnQpKQorICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShyZXN1bHQuY2FyZXRDb2xvcikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvRWRpdG9yU3RhdGUuaCBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0VkaXRvclN0YXRlLmgKaW5kZXggMGZhMjM4M2VjZTBmYTI0YTQ5MTY3N2Y0
NDIwODg4YWYzYTFkNDFhYi4uOWUzMzkwNjYyMWFkOTQyNTU2ZmRhMDNjY2UxMGNiMmY2ZTQxYWNm
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvRWRpdG9yU3RhdGUuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9FZGl0b3JTdGF0ZS5oCkBAIC0xMDcsNiArMTA3LDcgQEAgc3Ry
dWN0IEVkaXRvclN0YXRlIHsKICAgICAgICAgYm9vbCBpc1N0YWJsZVN0YXRlVXBkYXRlIHsgZmFs
c2UgfTsKICAgICAgICAgYm9vbCBpbnNpZGVGaXhlZFBvc2l0aW9uIHsgZmFsc2UgfTsKICAgICAg
ICAgYm9vbCBoYXNQbGFpblRleHQgeyBmYWxzZSB9OworICAgICAgICBib29sIGVsZW1lbnRJc1Ry
YW5zcGFyZW50IHsgZmFsc2UgfTsKICAgICAgICAgV2ViQ29yZTo6Q29sb3IgY2FyZXRDb2xvcjsK
ICNlbmRpZgogI2lmIFBMQVRGT1JNKE1BQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCmluZGV4IDcwYzg4MzY3NzQ4
MmY5OWFmMjYzMzI3MjY5MmM5ZTY0YzY4MzBkMDQuLmI4ODdiNzdiMDE4Yzg5ZWE3YmE1NTE5MzMz
YWQxZDQ5OWE3YTA4YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9X
S0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
aW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQpAQCAtMTM0MiwxNiArMTM0MiwxOCBAQCBz
dGF0aWMgTlNWYWx1ZSAqbnNTaXplRm9yVGFwSGlnaGxpZ2h0Qm9yZGVyUmFkaXVzKFdlYkNvcmU6
OkludFNpemUgYm9yZGVyUmFkaXVzLAogCiAtICh2b2lkKV9kaXNwbGF5Rm9ybU5vZGVJbnB1dFZp
ZXcKIHsKLSAgICAvLyBJbiBjYXNlIHVzZXIgc2NhbGluZyBpcyBmb3JjZSBlbmFibGVkLCBkbyBu
b3QgdXNlIHRoYXQgc2NhbGluZyB3aGVuIHpvb21pbmcgaW4gd2l0aCBhbiBpbnB1dCBmaWVsZC4K
LSAgICAvLyBab29taW5nIGFib3ZlIHRoZSBwYWdlJ3MgZGVmYXVsdCBzY2FsZSBmYWN0b3Igc2hv
dWxkIG9ubHkgaGFwcGVuIHdoZW4gdGhlIHVzZXIgcGVyZm9ybXMgaXQuCi0gICAgW3NlbGYgX3pv
b21Ub0ZvY3VzUmVjdDpfYXNzaXN0ZWROb2RlSW5mb3JtYXRpb24uZWxlbWVudFJlY3QKLSAgICAg
ICAgc2VsZWN0aW9uUmVjdDpfZGlkQWNjZXNzb3J5VGFiSW5pdGlhdGVGb2N1cyA/IEludFJlY3Qo
KSA6IF9hc3Npc3RlZE5vZGVJbmZvcm1hdGlvbi5zZWxlY3Rpb25SZWN0Ci0gICAgICAgIGluc2lk
ZUZpeGVkOl9hc3Npc3RlZE5vZGVJbmZvcm1hdGlvbi5pbnNpZGVGaXhlZFBvc2l0aW9uCi0gICAg
ICAgIGZvbnRTaXplOl9hc3Npc3RlZE5vZGVJbmZvcm1hdGlvbi5ub2RlRm9udFNpemUKLSAgICAg
ICAgbWluaW11bVNjYWxlOl9hc3Npc3RlZE5vZGVJbmZvcm1hdGlvbi5taW5pbXVtU2NhbGVGYWN0
b3IKLSAgICAgICAgbWF4aW11bVNjYWxlOl9hc3Npc3RlZE5vZGVJbmZvcm1hdGlvbi5tYXhpbXVt
U2NhbGVGYWN0b3JJZ25vcmluZ0Fsd2F5c1NjYWxhYmxlCi0gICAgICAgIGFsbG93U2NhbGluZzpf
YXNzaXN0ZWROb2RlSW5mb3JtYXRpb24uYWxsb3dzVXNlclNjYWxpbmdJZ25vcmluZ0Fsd2F5c1Nj
YWxhYmxlICYmICFjdXJyZW50VXNlckludGVyZmFjZUlkaW9tSXNQYWQoKQotICAgICAgICBmb3Jj
ZVNjcm9sbDooX2Fzc2lzdGVkTm9kZUluZm9ybWF0aW9uLmlucHV0TW9kZSA9PSBJbnB1dE1vZGU6
Ok5vbmUpID8gIWN1cnJlbnRVc2VySW50ZXJmYWNlSWRpb21Jc1BhZCgpIDogW3NlbGYgcmVxdWly
ZXNBY2Nlc3NvcnlWaWV3XV07CisgICAgaWYgKCFzZWxmLnN1cHByZXNzQXNzaXN0YW50U2VsZWN0
aW9uVmlldykgeworICAgICAgICAvLyBJbiBjYXNlIHVzZXIgc2NhbGluZyBpcyBmb3JjZSBlbmFi
bGVkLCBkbyBub3QgdXNlIHRoYXQgc2NhbGluZyB3aGVuIHpvb21pbmcgaW4gd2l0aCBhbiBpbnB1
dCBmaWVsZC4KKyAgICAgICAgLy8gWm9vbWluZyBhYm92ZSB0aGUgcGFnZSdzIGRlZmF1bHQgc2Nh
bGUgZmFjdG9yIHNob3VsZCBvbmx5IGhhcHBlbiB3aGVuIHRoZSB1c2VyIHBlcmZvcm1zIGl0Lgor
ICAgICAgICBbc2VsZiBfem9vbVRvRm9jdXNSZWN0Ol9hc3Npc3RlZE5vZGVJbmZvcm1hdGlvbi5l
bGVtZW50UmVjdAorICAgICAgICAgICAgc2VsZWN0aW9uUmVjdDpfZGlkQWNjZXNzb3J5VGFiSW5p
dGlhdGVGb2N1cyA/IEludFJlY3QoKSA6IF9hc3Npc3RlZE5vZGVJbmZvcm1hdGlvbi5zZWxlY3Rp
b25SZWN0CisgICAgICAgICAgICBpbnNpZGVGaXhlZDpfYXNzaXN0ZWROb2RlSW5mb3JtYXRpb24u
aW5zaWRlRml4ZWRQb3NpdGlvbgorICAgICAgICAgICAgZm9udFNpemU6X2Fzc2lzdGVkTm9kZUlu
Zm9ybWF0aW9uLm5vZGVGb250U2l6ZQorICAgICAgICAgICAgbWluaW11bVNjYWxlOl9hc3Npc3Rl
ZE5vZGVJbmZvcm1hdGlvbi5taW5pbXVtU2NhbGVGYWN0b3IKKyAgICAgICAgICAgIG1heGltdW1T
Y2FsZTpfYXNzaXN0ZWROb2RlSW5mb3JtYXRpb24ubWF4aW11bVNjYWxlRmFjdG9ySWdub3JpbmdB
bHdheXNTY2FsYWJsZQorICAgICAgICAgICAgYWxsb3dTY2FsaW5nOl9hc3Npc3RlZE5vZGVJbmZv
cm1hdGlvbi5hbGxvd3NVc2VyU2NhbGluZ0lnbm9yaW5nQWx3YXlzU2NhbGFibGUgJiYgIWN1cnJl
bnRVc2VySW50ZXJmYWNlSWRpb21Jc1BhZCgpCisgICAgICAgICAgICBmb3JjZVNjcm9sbDooX2Fz
c2lzdGVkTm9kZUluZm9ybWF0aW9uLmlucHV0TW9kZSA9PSBJbnB1dE1vZGU6Ok5vbmUpID8gIWN1
cnJlbnRVc2VySW50ZXJmYWNlSWRpb21Jc1BhZCgpIDogW3NlbGYgcmVxdWlyZXNBY2Nlc3NvcnlW
aWV3XV07CisgICAgfQogCiAgICAgX2RpZEFjY2Vzc29yeVRhYkluaXRpYXRlRm9jdXMgPSBOTzsK
ICAgICBbc2VsZiBfZW5zdXJlRm9ybUFjY2Vzc29yeVZpZXddOwpAQCAtMTc0Niw2ICsxNzQ4LDkg
QEAgc3RhdGljIGlubGluZSBib29sIGlzU2FtZVBhaXIoVUlHZXN0dXJlUmVjb2duaXplciAqYSwg
VUlHZXN0dXJlUmVjb2duaXplciAqYiwgVUkKICAgICBpZiAoIV93ZWJWaWV3LmNvbmZpZ3VyYXRp
b24uX3RleHRJbnRlcmFjdGlvbkdlc3R1cmVzRW5hYmxlZCkKICAgICAgICAgcmV0dXJuIE5POwog
CisgICAgaWYgKHNlbGYuc3VwcHJlc3NBc3Npc3RhbnRTZWxlY3Rpb25WaWV3KQorICAgICAgICBy
ZXR1cm4gTk87CisKICAgICBpZiAoX2luc3BlY3Rvck5vZGVTZWFyY2hFbmFibGVkKQogICAgICAg
ICByZXR1cm4gTk87CiAKQEAgLTE3NjksNiArMTc3NCw5IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBp
c1NhbWVQYWlyKFVJR2VzdHVyZVJlY29nbml6ZXIgKmEsIFVJR2VzdHVyZVJlY29nbml6ZXIgKmIs
IFVJCiAgICAgaWYgKCFfd2ViVmlldy5jb25maWd1cmF0aW9uLl90ZXh0SW50ZXJhY3Rpb25HZXN0
dXJlc0VuYWJsZWQpCiAgICAgICAgIHJldHVybiBOTzsKIAorICAgIGlmIChzZWxmLnN1cHByZXNz
QXNzaXN0YW50U2VsZWN0aW9uVmlldykKKyAgICAgICAgcmV0dXJuIE5POworCiAgICAgSW50ZXJh
Y3Rpb25JbmZvcm1hdGlvblJlcXVlc3QgcmVxdWVzdChyb3VuZGVkSW50UG9pbnQocG9pbnQpKTsK
ICAgICBpZiAoIVtzZWxmIGVuc3VyZVBvc2l0aW9uSW5mb3JtYXRpb25Jc1VwVG9EYXRlOnJlcXVl
c3RdKQogICAgICAgICByZXR1cm4gTk87CkBAIC0xNzgwLDYgKzE3ODgsOSBAQCBzdGF0aWMgaW5s
aW5lIGJvb2wgaXNTYW1lUGFpcihVSUdlc3R1cmVSZWNvZ25pemVyICphLCBVSUdlc3R1cmVSZWNv
Z25pemVyICpiLCBVSQogICAgIGlmICghX3dlYlZpZXcuY29uZmlndXJhdGlvbi5fdGV4dEludGVy
YWN0aW9uR2VzdHVyZXNFbmFibGVkKQogICAgICAgICByZXR1cm4gTk87CiAKKyAgICBpZiAoc2Vs
Zi5zdXBwcmVzc0Fzc2lzdGFudFNlbGVjdGlvblZpZXcpCisgICAgICAgIHJldHVybiBOTzsKKwog
ICAgIEludGVyYWN0aW9uSW5mb3JtYXRpb25SZXF1ZXN0IHJlcXVlc3Qocm91bmRlZEludFBvaW50
KHBvaW50KSk7CiAgICAgaWYgKCFbc2VsZiBlbnN1cmVQb3NpdGlvbkluZm9ybWF0aW9uSXNVcFRv
RGF0ZTpyZXF1ZXN0XSkKICAgICAgICAgcmV0dXJuIE5POwpAQCAtNDI2Nyw2ICs0Mjc4LDggQEAg
c3RhdGljIGJvb2wgaXNBc3Npc3RhYmxlSW5wdXRUeXBlKElucHV0VHlwZSB0eXBlKQogICAgIGlm
IChbaW5wdXREZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3OmRl
Y2lkZVBvbGljeUZvckZvY3VzZWRFbGVtZW50OildKQogICAgICAgICBzdGFydElucHV0U2Vzc2lv
blBvbGljeSA9IFtpbnB1dERlbGVnYXRlIF93ZWJWaWV3Ol93ZWJWaWV3IGRlY2lkZVBvbGljeUZv
ckZvY3VzZWRFbGVtZW50OmZvY3VzZWRFbGVtZW50SW5mby5nZXQoKV07CiAKKyAgICBzZWxmLnN1
cHByZXNzQXNzaXN0YW50U2VsZWN0aW9uVmlldyA9IGluZm9ybWF0aW9uLmVsZW1lbnRJc1RyYW5z
cGFyZW50OworCiAgICAgc3dpdGNoIChzdGFydElucHV0U2Vzc2lvblBvbGljeSkgewogICAgIGNh
c2UgX1dLRm9jdXNTdGFydHNJbnB1dFNlc3Npb25Qb2xpY3lBdXRvOgogICAgICAgICAvLyBUaGUg
ZGVmYXVsdCBiZWhhdmlvciBpcyB0byBhbGxvdyBub2RlIGFzc2lzdGFuY2UgaWYgdGhlIHVzZXIg
aXMgaW50ZXJhY3RpbmcuCkBAIC00NDA5LDYgKzQ0MjIsOCBAQCBzdGF0aWMgYm9vbCBpc0Fzc2lz
dGFibGVJbnB1dFR5cGUoSW5wdXRUeXBlIHR5cGUpCiAgICAgICAgIFtfd2ViVmlldyBfc2NoZWR1
bGVWaXNpYmxlQ29udGVudFJlY3RVcGRhdGVdOwogCiAgICAgW193ZWJWaWV3IGRpZEVuZEZvcm1D
b250cm9sSW50ZXJhY3Rpb25dOworCisgICAgc2VsZi5zdXBwcmVzc0Fzc2lzdGFudFNlbGVjdGlv
blZpZXcgPSBOTzsKIH0KIAogLSAodm9pZCl1cGRhdGVDdXJyZW50QXNzaXN0ZWROb2RlSW5mb3Jt
YXRpb246KEZ1bmN0aW9uPHZvaWQoYm9vbCBkaWRVcGRhdGUpPiYmKWNhbGxiYWNrCkBAIC00NzQx
LDkgKzQ3NTYsMTQgQEAgc3RhdGljIGJvb2wgaXNBc3Npc3RhYmxlSW5wdXRUeXBlKElucHV0VHlw
ZSB0eXBlKQogCiAtICh2b2lkKV91cGRhdGVDaGFuZ2VkU2VsZWN0aW9uOihCT09MKWZvcmNlCiB7
Ci0gICAgaWYgKCFfc2VsZWN0aW9uTmVlZHNVcGRhdGUgfHwgX3BhZ2UtPmVkaXRvclN0YXRlKCku
aXNNaXNzaW5nUG9zdExheW91dERhdGEpCisgICAgYXV0byYgc3RhdGUgPSBfcGFnZS0+ZWRpdG9y
U3RhdGUoKTsKKyAgICBpZiAoc3RhdGUuaXNNaXNzaW5nUG9zdExheW91dERhdGEpCiAgICAgICAg
IHJldHVybjsKIAorICAgIGF1dG8mIHBvc3RMYXlvdXREYXRhID0gc3RhdGUucG9zdExheW91dERh
dGEoKTsKKyAgICBpZiAoaGFzQXNzaXN0ZWROb2RlKF9hc3Npc3RlZE5vZGVJbmZvcm1hdGlvbikp
CisgICAgICAgIHNlbGYuc3VwcHJlc3NBc3Npc3RhbnRTZWxlY3Rpb25WaWV3ID0gcG9zdExheW91
dERhdGEuZWxlbWVudElzVHJhbnNwYXJlbnQ7CisKICAgICBXS1NlbGVjdGlvbkRyYXdpbmdJbmZv
IHNlbGVjdGlvbkRyYXdpbmdJbmZvKF9wYWdlLT5lZGl0b3JTdGF0ZSgpKTsKICAgICBpZiAoZm9y
Y2UgfHwgc2VsZWN0aW9uRHJhd2luZ0luZm8gIT0gX2xhc3RTZWxlY3Rpb25EcmF3aW5nSW5mbykg
ewogICAgICAgICBMT0dfV0lUSF9TVFJFQU0oU2VsZWN0aW9uLCBzdHJlYW0gPDwgIl91cGRhdGVD
aGFuZ2VkU2VsZWN0aW9uICIgPDwgc2VsZWN0aW9uRHJhd2luZ0luZm8pOwpAQCAtNDc2NCw4ICs0
Nzg0LDcgQEAgc3RhdGljIGJvb2wgaXNBc3Npc3RhYmxlSW5wdXRUeXBlKElucHV0VHlwZSB0eXBl
KQogICAgICAgICB9CiAgICAgfQogCi0gICAgYXV0byYgc3RhdGUgPSBfcGFnZS0+ZWRpdG9yU3Rh
dGUoKTsKLSAgICBpZiAoIXN0YXRlLmlzTWlzc2luZ1Bvc3RMYXlvdXREYXRhICYmIHN0YXRlLnBv
c3RMYXlvdXREYXRhKCkuaXNTdGFibGVTdGF0ZVVwZGF0ZSAmJiBfbmVlZHNEZWZlcnJlZEVuZFNj
cm9sbGluZ1NlbGVjdGlvblVwZGF0ZSAmJiBfcGFnZS0+aW5TdGFibGVTdGF0ZSgpKSB7CisgICAg
aWYgKHBvc3RMYXlvdXREYXRhLmlzU3RhYmxlU3RhdGVVcGRhdGUgJiYgX25lZWRzRGVmZXJyZWRF
bmRTY3JvbGxpbmdTZWxlY3Rpb25VcGRhdGUgJiYgX3BhZ2UtPmluU3RhYmxlU3RhdGUoKSkgewog
ICAgICAgICBbW3NlbGYgc2VsZWN0aW9uSW50ZXJhY3Rpb25Bc3Npc3RhbnRdIHNob3dTZWxlY3Rp
b25Db21tYW5kc107CiAKICAgICAgICAgaWYgKCFzZWxmLnN1cHByZXNzQXNzaXN0YW50U2VsZWN0
aW9uVmlldykKQEAgLTQ3NzcsNiArNDc5NiwxMSBAQCBzdGF0aWMgYm9vbCBpc0Fzc2lzdGFibGVJ
bnB1dFR5cGUoSW5wdXRUeXBlIHR5cGUpCiAgICAgfQogfQogCistIChCT09MKV9zaG91bGRTdXBw
cmVzc1NlbGVjdGlvbkNvbW1hbmRzCit7CisgICAgcmV0dXJuIF9zdXBwcmVzc0Fzc2lzdGFudFNl
bGVjdGlvblZpZXc7Cit9CisKIC0gKEJPT0wpc3VwcHJlc3NBc3Npc3RhbnRTZWxlY3Rpb25WaWV3
CiB7CiAgICAgcmV0dXJuIF9zdXBwcmVzc0Fzc2lzdGFudFNlbGVjdGlvblZpZXc7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbSBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCmluZGV4
IGVmM2E1ZjNmNTk0ZjVjZDYyZTJkNWJkYzk4NTM2M2YxYmE3YWFhNWUuLmVlMDgyYzRhOWY0YTQ0
M2UzMGIyNmRlNmZkMDY0YjJmYWJkMWU1NjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCkBAIC0yNDAsNiArMjQwLDcgQEAgdm9p
ZCBXZWJQYWdlOjpwbGF0Zm9ybUVkaXRvclN0YXRlKEZyYW1lJiBmcmFtZSwgRWRpdG9yU3RhdGUm
IHJlc3VsdCwgSW5jbHVkZVBvc3QKICAgICAgICAgaWYgKG1fYXNzaXN0ZWROb2RlICYmIG1fYXNz
aXN0ZWROb2RlLT5yZW5kZXJlcigpKSB7CiAgICAgICAgICAgICBwb3N0TGF5b3V0RGF0YS5zZWxl
Y3Rpb25DbGlwUmVjdCA9IHZpZXctPmNvbnRlbnRzVG9Sb290VmlldyhtX2Fzc2lzdGVkTm9kZS0+
cmVuZGVyZXIoKS0+YWJzb2x1dGVCb3VuZGluZ0JveFJlY3QoKSk7CiAgICAgICAgICAgICBwb3N0
TGF5b3V0RGF0YS5jYXJldENvbG9yID0gbV9hc3Npc3RlZE5vZGUtPnJlbmRlcmVyKCktPnN0eWxl
KCkuY2FyZXRDb2xvcigpOworICAgICAgICAgICAgcG9zdExheW91dERhdGEuZWxlbWVudElzVHJh
bnNwYXJlbnQgPSBtX2Fzc2lzdGVkTm9kZS0+cmVuZGVyZXIoKS0+aXNUcmFuc3BhcmVudFJlc3Bl
Y3RpbmdQYXJlbnRGcmFtZXMoKTsKICAgICAgICAgfQogICAgICAgICBjb21wdXRlRWRpdGFibGVS
b290SGFzQ29udGVudEFuZFBsYWluVGV4dChzZWxlY3Rpb24sIHBvc3RMYXlvdXREYXRhKTsKICAg
ICB9CkBAIC0yMzM3LDYgKzIzMzgsNyBAQCB2b2lkIFdlYlBhZ2U6OmdldEFzc2lzdGVkTm9kZUlu
Zm9ybWF0aW9uKEFzc2lzdGVkTm9kZUluZm9ybWF0aW9uJiBpbmZvcm1hdGlvbikKICAgICAgICAg
RnJhbWUmIGVsZW1lbnRGcmFtZSA9IG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9y
TWFpbkZyYW1lKCk7CiAgICAgICAgIGluZm9ybWF0aW9uLmVsZW1lbnRSZWN0ID0gZWxlbWVudFJl
Y3RJblJvb3RWaWV3Q29vcmRpbmF0ZXMoKm1fYXNzaXN0ZWROb2RlLCBlbGVtZW50RnJhbWUpOwog
ICAgICAgICBpbmZvcm1hdGlvbi5ub2RlRm9udFNpemUgPSByZW5kZXJlci0+c3R5bGUoKS5mb250
RGVzY3JpcHRpb24oKS5jb21wdXRlZFNpemUoKTsKKyAgICAgICAgaW5mb3JtYXRpb24uZWxlbWVu
dElzVHJhbnNwYXJlbnQgPSByZW5kZXJlci0+aXNUcmFuc3BhcmVudFJlc3BlY3RpbmdQYXJlbnRG
cmFtZXMoKTsKIAogICAgICAgICBib29sIGluRml4ZWQgPSBmYWxzZTsKICAgICAgICAgcmVuZGVy
ZXItPmxvY2FsVG9Db250YWluZXJQb2ludChGbG9hdFBvaW50KCksIG51bGxwdHIsIFVzZVRyYW5z
Zm9ybXMsICZpbkZpeGVkKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0No
YW5nZUxvZwppbmRleCBiODA2NTRjY2FkNDg3NjJmMDE4NDczYjIxZTU0ZmNhMGVmYWExNGRhLi5k
OWIwZmI0NDFiMWUwNGMwYmEyZTJjNTQ1NDBhOTFhNTcwOWYwODk2IDEwMDY0NAotLS0gYS9Ub29s
cy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzggQEAKKzIwMTgt
MTEtMTIgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAg
W2lPU10gRG8gbm90IHNob3cgc2VsZWN0aW9uIFVJIGZvciBlZGl0YWJsZSBlbGVtZW50cyB3aXRo
IG9wYWNpdHkgbmVhciB6ZXJvCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xOTE0NDIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQ1OTU4NjI1PgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhIGNvdXBs
ZSBvZiBuZXcgdGVzdGluZyBoZWxwZXJzIHRvIFVJU2NyaXB0Q29udHJvbGxlci4KKworICAgICAg
ICAqIFRlc3RSdW5uZXJTaGFyZWQvVUlTY3JpcHRDb250ZXh0L0JpbmRpbmdzL1VJU2NyaXB0Q29u
dHJvbGxlci5pZGw6CisgICAgICAgICogVGVzdFJ1bm5lclNoYXJlZC9VSVNjcmlwdENvbnRleHQv
VUlTY3JpcHRDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdUUjo6VUlTY3JpcHRDb250cm9sbGVy
Ojp0ZXh0U2VsZWN0aW9uUmFuZ2VSZWN0cyBjb25zdCk6CisgICAgICAgIChXVFI6OlVJU2NyaXB0
Q29udHJvbGxlcjo6c2VsZWN0aW9uQ2FyZXRWaWV3UmVjdCBjb25zdCk6CisgICAgICAgIChXVFI6
OlVJU2NyaXB0Q29udHJvbGxlcjo6c2VsZWN0aW9uUmFuZ2VWaWV3UmVjdHMgY29uc3QpOgorICAg
ICAgICAqIFRlc3RSdW5uZXJTaGFyZWQvVUlTY3JpcHRDb250ZXh0L1VJU2NyaXB0Q29udHJvbGxl
ci5oOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvaW9zL1VJU2NyaXB0Q29udHJvbGxlcklP
Uy5tbToKKyAgICAgICAgKFdUUjo6VUlTY3JpcHRDb250cm9sbGVyOjp0ZXh0U2VsZWN0aW9uUmFu
Z2VSZWN0cyBjb25zdCk6CisKKyAgICAgICAgUmVuYW1lIGBzZWxlY3Rpb25SYW5nZVZpZXdSZWN0
c2AgdG8gYHRleHRTZWxlY3Rpb25SYW5nZVJlY3RzYC4gVGhpcyBhbGxvd3MgdXMgdG8gZHJhdyBh
IGRpc3RpbmN0aW9uIGJldHdlZW4KKyAgICAgICAgYHRleHRTZWxlY3Rpb25SYW5nZVJlY3RzYC9g
dGV4dFNlbGVjdGlvbkNhcmV0UmVjdGAsIHdoaWNoIHJldHJpZXZlIGluZm9ybWF0aW9uIGFib3V0
IHNlbGVjdGlvbiByZWN0cyBrbm93bgorICAgICAgICB0byB0aGUgdGV4dCBpbnRlcmFjdGlvbiBh
c3Npc3RhbnQsIGFuZCBgc2VsZWN0aW9uQ2FyZXRWaWV3UmVjdGAvYHNlbGVjdGlvblJhbmdlVmll
d1JlY3RzYCwgd2hpY2ggcmV0cmlldmUgdGhlCisgICAgICAgIGFjdHVhbCBmcmFtZXMgb2YgdGhl
IHNlbGVjdGlvbiB2aWV3cyB1c2VkIHRvIGRyYXcgb3ZlcmxhaWQgc2VsZWN0aW9uIFVJLiBUaGlz
IGRpZmZlcmVuY2UgaXMgaW1wb3J0YW50IGluIHRoZQorICAgICAgICBuZXcgbGF5b3V0IHRlc3Rz
IGFkZGVkIGluIHRoaXMgcGF0Y2gsIHdoaWNoIG9ubHkgc3VwcHJlc3MgY2FyZXQgcmVuZGVyaW5n
IChpLmUuIHNlbGVjdGlvbiB2aWV3cyByZW1haW4gaGlkZGVuKS4KKworICAgICAgICBBbHNvLCBk
cml2ZS1ieSBmaXggYSBsZWFrZWQgYE5TTXV0YWJsZUFycmF5YC4KKworICAgICAgICAoV1RSOjpV
SVNjcmlwdENvbnRyb2xsZXI6OnNlbGVjdGlvblN0YXJ0R3JhYmJlclZpZXdSZWN0IGNvbnN0KToK
KyAgICAgICAgKFdUUjo6VUlTY3JpcHRDb250cm9sbGVyOjpzZWxlY3Rpb25FbmRHcmFiYmVyVmll
d1JlY3QgY29uc3QpOgorICAgICAgICAoV1RSOjpVSVNjcmlwdENvbnRyb2xsZXI6OnNlbGVjdGlv
bkNhcmV0Vmlld1JlY3QgY29uc3QpOgorICAgICAgICAoV1RSOjpVSVNjcmlwdENvbnRyb2xsZXI6
OnNlbGVjdGlvblJhbmdlVmlld1JlY3RzIGNvbnN0KToKKworICAgICAgICBUZXN0aW5nIGhlbHBl
cnMgdG8gZ3JhYiB0aGUgZnJhbWVzIG9mIGNhcmV0IGFuZCBzZWxlY3Rpb24gdmlld3MsIGluIFdL
Q29udGVudFZpZXcncyBjb29yZGluYXRlIHNwYWNlLiBUaGVzZQorICAgICAgICByZWN0cyBhcmUg
YWxzbyBjbGFtcGVkIHRvIFdLQ29udGVudFZpZXcgYm91bmRzLgorCiAyMDE4LTExLTExICBGdWpp
aSBIaXJvbm9yaSAgPEhpcm9ub3JpLkZ1amlpQHNvbnkuY29tPgogCiAgICAgICAgIHJ1bi1iaW5k
aW5ncy10ZXN0cyBpcyB0aW1pbmcgb3V0IGluIHNvbWUgV2luQ2Fpcm8gYm90cwpkaWZmIC0tZ2l0
IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvaW9zL1VJU2NyaXB0Q29udHJvbGxlcklPUy5tbSBiL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL2lvcy9VSVNjcmlwdENvbnRyb2xsZXJJT1MubW0KaW5kZXggOTAx
MTA0YWNiMDg3Yzc3ZjAxYzhmMjZkYTEwMjI5Mjg3ZWJkOGIwMy4uMWZlMTQwOWFiMTk5NWY0OTll
MmQ4ZTg4NGRjYjVjNjFjMGQ2Y2MwNiAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUv
aW9zL1VJU2NyaXB0Q29udHJvbGxlcklPUy5tbQorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9p
b3MvVUlTY3JpcHRDb250cm9sbGVySU9TLm1tCkBAIC0zMDksNyArMzA5LDcgQEAgdm9pZCBVSVNj
cmlwdENvbnRyb2xsZXI6OnBsYXRmb3JtQ2xlYXJBbGxDYWxsYmFja3MoKQogewogfQogCi1KU09i
amVjdFJlZiBVSVNjcmlwdENvbnRyb2xsZXI6OnNlbGVjdGlvblJhbmdlVmlld1JlY3RzKCkgY29u
c3QKK0pTT2JqZWN0UmVmIFVJU2NyaXB0Q29udHJvbGxlcjo6dGV4dFNlbGVjdGlvblJhbmdlUmVj
dHMoKSBjb25zdAogewogICAgIHJldHVybiBudWxscHRyOwogfQpAQCAtMzg5LDYgKzM4OSwxNiBA
QCBKU09iamVjdFJlZiBVSVNjcmlwdENvbnRyb2xsZXI6OnNlbGVjdGlvbkVuZEdyYWJiZXJWaWV3
UmVjdCgpIGNvbnN0CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKK0pTT2JqZWN0UmVmIFVJU2Ny
aXB0Q29udHJvbGxlcjo6c2VsZWN0aW9uQ2FyZXRWaWV3UmVjdCgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIG51bGxwdHI7Cit9CisKK0pTT2JqZWN0UmVmIFVJU2NyaXB0Q29udHJvbGxlcjo6c2VsZWN0
aW9uUmFuZ2VWaWV3UmVjdHMoKSBjb25zdAoreworICAgIHJldHVybiBudWxscHRyOworfQorCiBi
b29sIFVJU2NyaXB0Q29udHJvbGxlcjo6aXNTaG93aW5nRGF0YUxpc3RTdWdnZXN0aW9ucygpIGNv
bnN0CiB7CiAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFJ1bm5lclNo
YXJlZC9VSVNjcmlwdENvbnRleHQvQmluZGluZ3MvVUlTY3JpcHRDb250cm9sbGVyLmlkbCBiL1Rv
b2xzL1Rlc3RSdW5uZXJTaGFyZWQvVUlTY3JpcHRDb250ZXh0L0JpbmRpbmdzL1VJU2NyaXB0Q29u
dHJvbGxlci5pZGwKaW5kZXggYjMzNzVhZGU0MDFkMTExMDVmNGUwODdiYTQ5ZjFiMWFjOThjMjA3
ZC4uNjdkMjVhM2UxNDBiNzYxOWU0NjVhMmFmNWMyMzdlY2JhMjkwMzQ4OCAxMDA2NDQKLS0tIGEv
VG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9VSVNjcmlwdENvbnRleHQvQmluZGluZ3MvVUlTY3JpcHRD
b250cm9sbGVyLmlkbAorKysgYi9Ub29scy9UZXN0UnVubmVyU2hhcmVkL1VJU2NyaXB0Q29udGV4
dC9CaW5kaW5ncy9VSVNjcmlwdENvbnRyb2xsZXIuaWRsCkBAIC0yMzgsMTAgKzIzOCwxMiBAQCBp
bnRlcmZhY2UgVUlTY3JpcHRDb250cm9sbGVyIHsKIAogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBv
YmplY3QgY29udGVudFZpc2libGVSZWN0OyAvLyBSZXR1cm5lZCBvYmplY3QgaGFzICdsZWZ0Jywg
J3RvcCcsICd3aWR0aCcsICdoZWlnaHQnIHByb3BlcnRpZXMuCiAKLSAgICByZWFkb25seSBhdHRy
aWJ1dGUgb2JqZWN0IHNlbGVjdGlvblJhbmdlVmlld1JlY3RzOyAvLyBBbiBhcnJheSBvZiBvYmpl
Y3RzIHdpdGggJ2xlZnQnLCAndG9wJywgJ3dpZHRoJywgYW5kICdoZWlnaHQnIHByb3BlcnRpZXMu
CisgICAgcmVhZG9ubHkgYXR0cmlidXRlIG9iamVjdCB0ZXh0U2VsZWN0aW9uUmFuZ2VSZWN0czsg
Ly8gQW4gYXJyYXkgb2Ygb2JqZWN0cyB3aXRoICdsZWZ0JywgJ3RvcCcsICd3aWR0aCcsIGFuZCAn
aGVpZ2h0JyBwcm9wZXJ0aWVzLgogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBvYmplY3QgdGV4dFNl
bGVjdGlvbkNhcmV0UmVjdDsgLy8gQW4gb2JqZWN0IHdpdGggJ2xlZnQnLCAndG9wJywgJ3dpZHRo
JywgJ2hlaWdodCcgcHJvcGVydGllcy4KICAgICByZWFkb25seSBhdHRyaWJ1dGUgb2JqZWN0IHNl
bGVjdGlvblN0YXJ0R3JhYmJlclZpZXdSZWN0OwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBvYmpl
Y3Qgc2VsZWN0aW9uRW5kR3JhYmJlclZpZXdSZWN0OworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBv
YmplY3Qgc2VsZWN0aW9uQ2FyZXRWaWV3UmVjdDsKKyAgICByZWFkb25seSBhdHRyaWJ1dGUgb2Jq
ZWN0IHNlbGVjdGlvblJhbmdlVmlld1JlY3RzOwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBvYmpl
Y3QgY2FsZW5kYXJUeXBlOwogICAgIHZvaWQgc2V0RGVmYXVsdENhbGVuZGFyVHlwZShET01TdHJp
bmcgY2FsZW5kYXJJZGVudGlmaWVyKTsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgb2JqZWN0IGlu
cHV0Vmlld0JvdW5kczsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvVUlTY3Jp
cHRDb250ZXh0L1VJU2NyaXB0Q29udHJvbGxlci5jcHAgYi9Ub29scy9UZXN0UnVubmVyU2hhcmVk
L1VJU2NyaXB0Q29udGV4dC9VSVNjcmlwdENvbnRyb2xsZXIuY3BwCmluZGV4IDc0MTJmZjJhZWY5
ZjAzZGY1YmIwM2E4MjRiN2YzZWMzODdhOTVlNmQuLjljMTFkYTk5ZWFjYjY0YzBjNzhkZjgzZTRi
YjE5MWEwYmUwYmQ5MWEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvVUlTY3Jp
cHRDb250ZXh0L1VJU2NyaXB0Q29udHJvbGxlci5jcHAKKysrIGIvVG9vbHMvVGVzdFJ1bm5lclNo
YXJlZC9VSVNjcmlwdENvbnRleHQvVUlTY3JpcHRDb250cm9sbGVyLmNwcApAQCAtMzg5LDcgKzM4
OSw3IEBAIEpTT2JqZWN0UmVmIFVJU2NyaXB0Q29udHJvbGxlcjo6Y29udGVudFZpc2libGVSZWN0
KCkgY29uc3QKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotSlNPYmplY3RSZWYgVUlTY3JpcHRD
b250cm9sbGVyOjpzZWxlY3Rpb25SYW5nZVZpZXdSZWN0cygpIGNvbnN0CitKU09iamVjdFJlZiBV
SVNjcmlwdENvbnRyb2xsZXI6OnRleHRTZWxlY3Rpb25SYW5nZVJlY3RzKCkgY29uc3QKIHsKICAg
ICByZXR1cm4gbnVsbHB0cjsKIH0KQEAgLTQwNCw2ICs0MDQsMTYgQEAgSlNPYmplY3RSZWYgVUlT
Y3JpcHRDb250cm9sbGVyOjpzZWxlY3Rpb25TdGFydEdyYWJiZXJWaWV3UmVjdCgpIGNvbnN0CiAg
ICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKK0pTT2JqZWN0UmVmIFVJU2NyaXB0Q29udHJvbGxlcjo6
c2VsZWN0aW9uQ2FyZXRWaWV3UmVjdCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9
CisKK0pTT2JqZWN0UmVmIFVJU2NyaXB0Q29udHJvbGxlcjo6c2VsZWN0aW9uUmFuZ2VWaWV3UmVj
dHMoKSBjb25zdAoreworICAgIHJldHVybiBudWxscHRyOworfQorCiBKU09iamVjdFJlZiBVSVNj
cmlwdENvbnRyb2xsZXI6OnNlbGVjdGlvbkVuZEdyYWJiZXJWaWV3UmVjdCgpIGNvbnN0CiB7CiAg
ICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0UnVubmVyU2hhcmVkL1VJ
U2NyaXB0Q29udGV4dC9VSVNjcmlwdENvbnRyb2xsZXIuaCBiL1Rvb2xzL1Rlc3RSdW5uZXJTaGFy
ZWQvVUlTY3JpcHRDb250ZXh0L1VJU2NyaXB0Q29udHJvbGxlci5oCmluZGV4IDllOTM4ZGI2YWZh
ZjA5MWJiZTJiN2U2NjBhNWNhMDA4MmY2MDE5ODUuLjRjMGUzZjYwZDNmYzAyNjEwZDg5NzU4MTU5
N2IyZjlhYWY1ZDY1MzkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvVUlTY3Jp
cHRDb250ZXh0L1VJU2NyaXB0Q29udHJvbGxlci5oCisrKyBiL1Rvb2xzL1Rlc3RSdW5uZXJTaGFy
ZWQvVUlTY3JpcHRDb250ZXh0L1VJU2NyaXB0Q29udHJvbGxlci5oCkBAIC0xNTksMTAgKzE1OSwx
MiBAQCBwdWJsaWM6CiAKICAgICBKU09iamVjdFJlZiBjb250ZW50VmlzaWJsZVJlY3QoKSBjb25z
dDsKICAgICAKLSAgICBKU09iamVjdFJlZiBzZWxlY3Rpb25SYW5nZVZpZXdSZWN0cygpIGNvbnN0
OworICAgIEpTT2JqZWN0UmVmIHRleHRTZWxlY3Rpb25SYW5nZVJlY3RzKCkgY29uc3Q7CiAgICAg
SlNPYmplY3RSZWYgdGV4dFNlbGVjdGlvbkNhcmV0UmVjdCgpIGNvbnN0OwogICAgIEpTT2JqZWN0
UmVmIHNlbGVjdGlvblN0YXJ0R3JhYmJlclZpZXdSZWN0KCkgY29uc3Q7CiAgICAgSlNPYmplY3RS
ZWYgc2VsZWN0aW9uRW5kR3JhYmJlclZpZXdSZWN0KCkgY29uc3Q7CisgICAgSlNPYmplY3RSZWYg
c2VsZWN0aW9uQ2FyZXRWaWV3UmVjdCgpIGNvbnN0OworICAgIEpTT2JqZWN0UmVmIHNlbGVjdGlv
blJhbmdlVmlld1JlY3RzKCkgY29uc3Q7CiAgICAgSlNPYmplY3RSZWYgY2FsZW5kYXJUeXBlKCkg
Y29uc3Q7CiAgICAgdm9pZCBzZXREZWZhdWx0Q2FsZW5kYXJUeXBlKEpTU3RyaW5nUmVmIGNhbGVu
ZGFySWRlbnRpZmllcik7CiAgICAgSlNPYmplY3RSZWYgaW5wdXRWaWV3Qm91bmRzKCkgY29uc3Q7
CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2lvcy9VSVNjcmlwdENvbnRyb2xs
ZXJJT1MubW0gYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2lvcy9VSVNjcmlwdENvbnRyb2xsZXJJ
T1MubW0KaW5kZXggZjUyZjlhMzU3ODZjOWQwOTg2NDVjZDBmMjAwMjgzOGZmN2VlMTA2Ny4uOGM5
MTNmYWZjYWQwYTFjOGE5NWU0NTdmMGJhMjg4YWFmYjZkOGQ2NiAxMDA2NDQKLS0tIGEvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9pb3MvVUlTY3JpcHRDb250cm9sbGVySU9TLm1tCisrKyBiL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvaW9zL1VJU2NyaXB0Q29udHJvbGxlcklPUy5tbQpAQCAtNTA2LDE0
ICs1MDYsMTQgQEAgSlNPYmplY3RSZWYgVUlTY3JpcHRDb250cm9sbGVyOjpjb250ZW50VmlzaWJs
ZVJlY3QoKSBjb25zdAogICAgIHJldHVybiBtX2NvbnRleHQtPm9iamVjdEZyb21SZWN0KHJlY3Qp
OwogfQogCi1KU09iamVjdFJlZiBVSVNjcmlwdENvbnRyb2xsZXI6OnNlbGVjdGlvblJhbmdlVmll
d1JlY3RzKCkgY29uc3QKK0pTT2JqZWN0UmVmIFVJU2NyaXB0Q29udHJvbGxlcjo6dGV4dFNlbGVj
dGlvblJhbmdlUmVjdHMoKSBjb25zdAogewotICAgIE5TTXV0YWJsZUFycmF5ICpzZWxlY3Rpb25S
ZWN0cyA9IFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdOworICAgIGF1dG8gc2VsZWN0aW9u
UmVjdHMgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdKTsKICAgICBOU0Fy
cmF5ICpyZWN0cyA9IFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS5tYWluV2ViVmlldygpLT5w
bGF0Zm9ybVZpZXcoKS5fdWlUZXh0U2VsZWN0aW9uUmVjdHM7CiAgICAgZm9yIChOU1ZhbHVlICpy
ZWN0IGluIHJlY3RzKQotICAgICAgICBbc2VsZWN0aW9uUmVjdHMgYWRkT2JqZWN0OnRvTlNEaWN0
aW9uYXJ5KFtyZWN0IENHUmVjdFZhbHVlXSldOworICAgICAgICBbc2VsZWN0aW9uUmVjdHMgYWRk
T2JqZWN0OnRvTlNEaWN0aW9uYXJ5KHJlY3QuQ0dSZWN0VmFsdWUpXTsKIAotICAgIHJldHVybiBK
U1ZhbHVlVG9PYmplY3QobV9jb250ZXh0LT5qc0NvbnRleHQoKSwgW0pTVmFsdWUgdmFsdWVXaXRo
T2JqZWN0OnNlbGVjdGlvblJlY3RzIGluQ29udGV4dDpbSlNDb250ZXh0IGNvbnRleHRXaXRoSlNH
bG9iYWxDb250ZXh0UmVmOm1fY29udGV4dC0+anNDb250ZXh0KCldXS5KU1ZhbHVlUmVmLCBudWxs
cHRyKTsKKyAgICByZXR1cm4gSlNWYWx1ZVRvT2JqZWN0KG1fY29udGV4dC0+anNDb250ZXh0KCks
IFtKU1ZhbHVlIHZhbHVlV2l0aE9iamVjdDpzZWxlY3Rpb25SZWN0cy5nZXQoKSBpbkNvbnRleHQ6
W0pTQ29udGV4dCBjb250ZXh0V2l0aEpTR2xvYmFsQ29udGV4dFJlZjptX2NvbnRleHQtPmpzQ29u
dGV4dCgpXV0uSlNWYWx1ZVJlZiwgbnVsbHB0cik7CiB9CiAKIEpTT2JqZWN0UmVmIFVJU2NyaXB0
Q29udHJvbGxlcjo6dGV4dFNlbGVjdGlvbkNhcmV0UmVjdCgpIGNvbnN0CkBAIC01MjcsNiArNTI3
LDcgQEAgSlNPYmplY3RSZWYgVUlTY3JpcHRDb250cm9sbGVyOjpzZWxlY3Rpb25TdGFydEdyYWJi
ZXJWaWV3UmVjdCgpIGNvbnN0CiAgICAgVUlWaWV3ICpjb250ZW50VmlldyA9IFt3ZWJWaWV3IHZh
bHVlRm9yS2V5UGF0aDpAIl9jdXJyZW50Q29udGVudFZpZXciXTsKICAgICBVSVZpZXcgKnNlbGVj
dGlvblJhbmdlVmlldyA9IFtjb250ZW50VmlldyB2YWx1ZUZvcktleVBhdGg6QCJpbnRlcmFjdGlv
bkFzc2lzdGFudC5zZWxlY3Rpb25WaWV3LnJhbmdlVmlldyJdOwogICAgIGF1dG8gZnJhbWVJbkNv
bnRlbnRDb29yZGluYXRlcyA9IFtzZWxlY3Rpb25SYW5nZVZpZXcgY29udmVydFJlY3Q6W1tzZWxl
Y3Rpb25SYW5nZVZpZXcgdmFsdWVGb3JLZXlQYXRoOkAic3RhcnRHcmFiYmVyIl0gZnJhbWVdIHRv
Vmlldzpjb250ZW50Vmlld107CisgICAgZnJhbWVJbkNvbnRlbnRDb29yZGluYXRlcyA9IENHUmVj
dEludGVyc2VjdGlvbihjb250ZW50Vmlldy5ib3VuZHMsIGZyYW1lSW5Db250ZW50Q29vcmRpbmF0
ZXMpOwogICAgIGF1dG8ganNDb250ZXh0ID0gbV9jb250ZXh0LT5qc0NvbnRleHQoKTsKICAgICBy
ZXR1cm4gSlNWYWx1ZVRvT2JqZWN0KGpzQ29udGV4dCwgW0pTVmFsdWUgdmFsdWVXaXRoT2JqZWN0
OnRvTlNEaWN0aW9uYXJ5KGZyYW1lSW5Db250ZW50Q29vcmRpbmF0ZXMpIGluQ29udGV4dDpbSlND
b250ZXh0IGNvbnRleHRXaXRoSlNHbG9iYWxDb250ZXh0UmVmOmpzQ29udGV4dF1dLkpTVmFsdWVS
ZWYsIG51bGxwdHIpOwogfQpAQCAtNTM3LDEwICs1MzgsMzUgQEAgSlNPYmplY3RSZWYgVUlTY3Jp
cHRDb250cm9sbGVyOjpzZWxlY3Rpb25FbmRHcmFiYmVyVmlld1JlY3QoKSBjb25zdAogICAgIFVJ
VmlldyAqY29udGVudFZpZXcgPSBbd2ViVmlldyB2YWx1ZUZvcktleVBhdGg6QCJfY3VycmVudENv
bnRlbnRWaWV3Il07CiAgICAgVUlWaWV3ICpzZWxlY3Rpb25SYW5nZVZpZXcgPSBbY29udGVudFZp
ZXcgdmFsdWVGb3JLZXlQYXRoOkAiaW50ZXJhY3Rpb25Bc3Npc3RhbnQuc2VsZWN0aW9uVmlldy5y
YW5nZVZpZXciXTsKICAgICBhdXRvIGZyYW1lSW5Db250ZW50Q29vcmRpbmF0ZXMgPSBbc2VsZWN0
aW9uUmFuZ2VWaWV3IGNvbnZlcnRSZWN0Oltbc2VsZWN0aW9uUmFuZ2VWaWV3IHZhbHVlRm9yS2V5
UGF0aDpAImVuZEdyYWJiZXIiXSBmcmFtZV0gdG9WaWV3OmNvbnRlbnRWaWV3XTsKKyAgICBmcmFt
ZUluQ29udGVudENvb3JkaW5hdGVzID0gQ0dSZWN0SW50ZXJzZWN0aW9uKGNvbnRlbnRWaWV3LmJv
dW5kcywgZnJhbWVJbkNvbnRlbnRDb29yZGluYXRlcyk7CiAgICAgYXV0byBqc0NvbnRleHQgPSBt
X2NvbnRleHQtPmpzQ29udGV4dCgpOwogICAgIHJldHVybiBKU1ZhbHVlVG9PYmplY3QoanNDb250
ZXh0LCBbSlNWYWx1ZSB2YWx1ZVdpdGhPYmplY3Q6dG9OU0RpY3Rpb25hcnkoZnJhbWVJbkNvbnRl
bnRDb29yZGluYXRlcykgaW5Db250ZXh0OltKU0NvbnRleHQgY29udGV4dFdpdGhKU0dsb2JhbENv
bnRleHRSZWY6anNDb250ZXh0XV0uSlNWYWx1ZVJlZiwgbnVsbHB0cik7CiB9CiAKK0pTT2JqZWN0
UmVmIFVJU2NyaXB0Q29udHJvbGxlcjo6c2VsZWN0aW9uQ2FyZXRWaWV3UmVjdCgpIGNvbnN0Cit7
CisgICAgV0tXZWJWaWV3ICp3ZWJWaWV3ID0gVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLm1h
aW5XZWJWaWV3KCktPnBsYXRmb3JtVmlldygpOworICAgIFVJVmlldyAqY29udGVudFZpZXcgPSBb
d2ViVmlldyB2YWx1ZUZvcktleVBhdGg6QCJfY3VycmVudENvbnRlbnRWaWV3Il07CisgICAgVUlW
aWV3ICpjYXJldFZpZXcgPSBbY29udGVudFZpZXcgdmFsdWVGb3JLZXlQYXRoOkAiaW50ZXJhY3Rp
b25Bc3Npc3RhbnQuc2VsZWN0aW9uVmlldy5jYXJldFZpZXciXTsKKyAgICBhdXRvIHJlY3RJbkNv
bnRlbnRWaWV3Q29vcmRpbmF0ZXMgPSBDR1JlY3RJbnRlcnNlY3Rpb24oW2NhcmV0VmlldyBjb252
ZXJ0UmVjdDpjYXJldFZpZXcuYm91bmRzIHRvVmlldzpjb250ZW50Vmlld10sIGNvbnRlbnRWaWV3
LmJvdW5kcyk7CisgICAgcmV0dXJuIEpTVmFsdWVUb09iamVjdChtX2NvbnRleHQtPmpzQ29udGV4
dCgpLCBbSlNWYWx1ZSB2YWx1ZVdpdGhPYmplY3Q6dG9OU0RpY3Rpb25hcnkocmVjdEluQ29udGVu
dFZpZXdDb29yZGluYXRlcykgaW5Db250ZXh0OltKU0NvbnRleHQgY29udGV4dFdpdGhKU0dsb2Jh
bENvbnRleHRSZWY6bV9jb250ZXh0LT5qc0NvbnRleHQoKV1dLkpTVmFsdWVSZWYsIG51bGxwdHIp
OworfQorCitKU09iamVjdFJlZiBVSVNjcmlwdENvbnRyb2xsZXI6OnNlbGVjdGlvblJhbmdlVmll
d1JlY3RzKCkgY29uc3QKK3sKKyAgICBXS1dlYlZpZXcgKndlYlZpZXcgPSBUZXN0Q29udHJvbGxl
cjo6c2luZ2xldG9uKCkubWFpbldlYlZpZXcoKS0+cGxhdGZvcm1WaWV3KCk7CisgICAgVUlWaWV3
ICpjb250ZW50VmlldyA9IFt3ZWJWaWV3IHZhbHVlRm9yS2V5UGF0aDpAIl9jdXJyZW50Q29udGVu
dFZpZXciXTsKKyAgICBVSVZpZXcgKnJhbmdlVmlldyA9IFtjb250ZW50VmlldyB2YWx1ZUZvcktl
eVBhdGg6QCJpbnRlcmFjdGlvbkFzc2lzdGFudC5zZWxlY3Rpb25WaWV3LnJhbmdlVmlldyJdOwor
ICAgIGF1dG8gcmVjdHNBc0RpY3Rpb25hcmllcyA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBh
bGxvY10gaW5pdF0pOworICAgIE5TQXJyYXkgKnRleHRSZWN0SW5mb0FycmF5ID0gW3JhbmdlVmll
dyB2YWx1ZUZvcktleVBhdGg6QCJyZWN0cyJdOworICAgIGZvciAoaWQgdGV4dFJlY3RJbmZvIGlu
IHRleHRSZWN0SW5mb0FycmF5KSB7CisgICAgICAgIE5TVmFsdWUgKnJlY3RWYWx1ZSA9IFt0ZXh0
UmVjdEluZm8gdmFsdWVGb3JLZXlQYXRoOkAicmVjdCJdOworICAgICAgICBhdXRvIHJhbmdlUmVj
dEluQ29udGVudFZpZXdDb29yZGluYXRlcyA9IFtyYW5nZVZpZXcgY29udmVydFJlY3Q6cmVjdFZh
bHVlLkNHUmVjdFZhbHVlIHRvVmlldzpjb250ZW50Vmlld107CisgICAgICAgIFtyZWN0c0FzRGlj
dGlvbmFyaWVzIGFkZE9iamVjdDp0b05TRGljdGlvbmFyeShDR1JlY3RJbnRlcnNlY3Rpb24ocmFu
Z2VSZWN0SW5Db250ZW50Vmlld0Nvb3JkaW5hdGVzLCBjb250ZW50Vmlldy5ib3VuZHMpKV07Cisg
ICAgfQorICAgIHJldHVybiBKU1ZhbHVlVG9PYmplY3QobV9jb250ZXh0LT5qc0NvbnRleHQoKSwg
W0pTVmFsdWUgdmFsdWVXaXRoT2JqZWN0OnJlY3RzQXNEaWN0aW9uYXJpZXMuZ2V0KCkgaW5Db250
ZXh0OltKU0NvbnRleHQgY29udGV4dFdpdGhKU0dsb2JhbENvbnRleHRSZWY6bV9jb250ZXh0LT5q
c0NvbnRleHQoKV1dLkpTVmFsdWVSZWYsIG51bGxwdHIpOworfQorCiBKU09iamVjdFJlZiBVSVNj
cmlwdENvbnRyb2xsZXI6OmlucHV0Vmlld0JvdW5kcygpIGNvbnN0CiB7CiAgICAgcmV0dXJuIEpT
VmFsdWVUb09iamVjdChtX2NvbnRleHQtPmpzQ29udGV4dCgpLCBbSlNWYWx1ZSB2YWx1ZVdpdGhP
YmplY3Q6dG9OU0RpY3Rpb25hcnkoVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLm1haW5XZWJW
aWV3KCktPnBsYXRmb3JtVmlldygpLl9pbnB1dFZpZXdCb3VuZHMpIGluQ29udGV4dDpbSlNDb250
ZXh0IGNvbnRleHRXaXRoSlNHbG9iYWxDb250ZXh0UmVmOm1fY29udGV4dC0+anNDb250ZXh0KCld
XS5KU1ZhbHVlUmVmLCBudWxscHRyKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxv
ZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBkMGE3YTEyY2IxMDVhYjJiNDQxYTIwYjZh
OGZiNzY2NWU5YjhmOGJjLi5mMWUwNWIzMzdjMzBjMjQ5NDdmNzBiMzY2YWQxYzk0MTBjYjQyOTc1
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsNTEgQEAKKzIwMTgtMTEtMTIgIFdlbnNvbiBIc2llaCAgPHdlbnNv
bl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgW2lPU10gRG8gbm90IHNob3cgc2VsZWN0aW9u
IFVJIGZvciBlZGl0YWJsZSBlbGVtZW50cyB3aXRoIG9wYWNpdHkgbmVhciB6ZXJvCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTE0NDIKKyAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzQ1OTU4NjI1PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEFkZCA0IG5ldyBsYXlvdXQgdGVzdHMuIFNlZSBiZWxvdyBmb3Ig
bW9yZSBkZXRhaWxzLgorCisgICAgICAgICogZWRpdGluZy9zZWxlY3Rpb24vY2hhcmFjdGVyLWdy
YW51bGFyaXR5LXJlY3QuaHRtbDoKKworICAgICAgICBBZGp1c3QgZm9yIGEgcmVuYW1lZCBVSVNj
cmlwdENvbnRyb2xsZXIgZnVuY3Rpb24uCisKKyAgICAgICAgKiBlZGl0aW5nL3NlbGVjdGlvbi9p
b3MvZG8tbm90LXpvb20tdG8tZm9jdXNlZC1oaWRkZW4tY29udGVudGVkaXRhYmxlLWV4cGVjdGVk
LnR4dDogQWRkZWQuCisgICAgICAgICogZWRpdGluZy9zZWxlY3Rpb24vaW9zL2RvLW5vdC16b29t
LXRvLWZvY3VzZWQtaGlkZGVuLWNvbnRlbnRlZGl0YWJsZS5odG1sOiBBZGRlZC4KKworICAgICAg
ICBBZGQgYSB0ZXN0IHRvIHZlcmlmeSB0aGF0IHdlIGRvbid0IHpvb20gdG8gZml0IHRoZSBmb2N1
c2VkIGVsZW1lbnQsIGlmIHRoZSBmb2N1c2VkIGVsZW1lbnQgaXMgY29tcGxldGVseQorICAgICAg
ICB0cmFuc3BhcmVudC4KKworICAgICAgICAqIGVkaXRpbmcvc2VsZWN0aW9uL2lvcy9oaWRlLXNl
bGVjdGlvbi1hZnRlci1oaWRpbmctY29udGVudGVkaXRhYmxlLWV4cGVjdGVkLnR4dDogQWRkZWQu
CisgICAgICAgICogZWRpdGluZy9zZWxlY3Rpb24vaW9zL2hpZGUtc2VsZWN0aW9uLWFmdGVyLWhp
ZGluZy1jb250ZW50ZWRpdGFibGUuaHRtbDogQWRkZWQuCisKKyAgICAgICAgQWRkIGEgdGVzdCB0
byB2ZXJpZnkgdGhhdCBzZWxlY3Rpb24gVUkgaXMgaGlkZGVuIGFmdGVyIG1ha2luZyBhbiBlZGl0
YWJsZSByb290IHRyYW5zcGFyZW50LCBhbmQgc2hvd24gYWdhaW4gd2hlbgorICAgICAgICB0aGUg
ZWRpdGFibGUgcm9vdCBiZWNvbWVzIG9wYXF1ZS4KKworICAgICAgICAqIGVkaXRpbmcvc2VsZWN0
aW9uL2lvcy9oaWRlLXNlbGVjdGlvbi1pbi1oaWRkZW4tY29udGVudGVkaXRhYmxlLWV4cGVjdGVk
LnR4dDogQWRkZWQuCisgICAgICAgICogZWRpdGluZy9zZWxlY3Rpb24vaW9zL2hpZGUtc2VsZWN0
aW9uLWluLWhpZGRlbi1jb250ZW50ZWRpdGFibGUtZnJhbWUtZXhwZWN0ZWQudHh0OiBBZGRlZC4K
KyAgICAgICAgKiBlZGl0aW5nL3NlbGVjdGlvbi9pb3MvaGlkZS1zZWxlY3Rpb24taW4taGlkZGVu
LWNvbnRlbnRlZGl0YWJsZS1mcmFtZS5odG1sOiBBZGRlZC4KKworICAgICAgICBBZGQgYSB0ZXN0
IHRvIHZlcmlmeSB0aGF0IHNlbGVjdGlvbiBVSSBpcyBzdXBwcmVzc2VkIHdoZW4gYW4gZWRpdGFi
bGUgZWxlbWVudCBpbnNpZGUgYSBzdWJmcmFtZSBpcyBmb2N1c2VkLiBUaGlzCisgICAgICAgIHRl
c3QgY2hlY2tzIHRoYXQgdGhlIGNhcmV0LCBzZWxlY3Rpb24gcmVjdHMgYW5kIHNlbGVjdGlvbiBo
YW5kbGUgdmlld3MgYXJlIG5vdCBzaG93biwgYW5kIGFkZGl0aW9uYWxseSB2ZXJpZmllcworICAg
ICAgICB0aGF0IHRoZSBzZWxlY3Rpb24gaW4gYSBoaWRkZW4gY29udGVudGVkaXRhYmxlIGFyZWEg
Y2Fubm90IGJlIGNoYW5nZWQgdmlhIHRhcCBnZXN0dXJlLgorCisgICAgICAgICogZWRpdGluZy9z
ZWxlY3Rpb24vaW9zL2hpZGUtc2VsZWN0aW9uLWluLWhpZGRlbi1jb250ZW50ZWRpdGFibGUuaHRt
bDogQWRkZWQuCisKKyAgICAgICAgU2FtZSB0ZXN0IGFzIGFib3ZlLCBidXQgaW4gYSByZWd1bGFy
IGVkaXRhYmxlIGVsZW1lbnQgaW4gdGhlIG1haW4gZG9jdW1lbnQgaW5zdGVhZCBvZiBhIHN1YmZy
YW1lLgorCisgICAgICAgICogcmVzb3VyY2VzL3VpLWhlbHBlci5qczoKKyAgICAgICAgKHdpbmRv
dy5VSUhlbHBlci5nZXRVSVNlbGVjdGlvblJlY3RzLnJldHVybi5uZXcuUHJvbWlzZS4pOgorICAg
ICAgICAod2luZG93LlVJSGVscGVyLmdldFVJU2VsZWN0aW9uUmVjdHMucmV0dXJuLm5ldy5Qcm9t
aXNlKToKKyAgICAgICAgKHdpbmRvdy5VSUhlbHBlci5nZXRVSVNlbGVjdGlvblJlY3RzKToKKyAg
ICAgICAgKHdpbmRvdy5VSUhlbHBlci5nZXRVSUNhcmV0Vmlld1JlY3QucmV0dXJuLm5ldy5Qcm9t
aXNlLik6CisgICAgICAgICh3aW5kb3cuVUlIZWxwZXIuZ2V0VUlDYXJldFZpZXdSZWN0LnJldHVy
bi5uZXcuUHJvbWlzZSk6CisgICAgICAgICh3aW5kb3cuVUlIZWxwZXIuZ2V0VUlDYXJldFZpZXdS
ZWN0KToKKworICAgICAgICBBZGQgbmV3IFVJSGVscGVyIHdyYXBwZXIgbWV0aG9kcy4gU2VlIFRv
b2xzL0NoYW5nZUxvZyBmb3IgbW9yZSBkZXRhaWwuCisKIDIwMTgtMTEtMTEgIFdlbnNvbiBIc2ll
aCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgSW1wbGVtZW50IGEgbmV3IGVk
aXQgY29tbWFuZCB0byBjaGFuZ2UgdGhlIGVuY2xvc2luZyBsaXN0IHR5cGUKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2NoYXJhY3Rlci1ncmFudWxhcml0eS1yZWN0
Lmh0bWwgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9jaGFyYWN0ZXItZ3JhbnVsYXJp
dHktcmVjdC5odG1sCmluZGV4IGZjNWJjZTQ3ZDkwNzE1ZjM0NjVlNmU1NzZjMGFhYzhlODM2NmE1
M2EuLjExYWJhMzM0ZjdmNWNkMDJmOTBjZDFmYjA4N2U4NjRlNTYzYTE1MWMgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2NoYXJhY3Rlci1ncmFudWxhcml0eS1yZWN0
Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vY2hhcmFjdGVyLWdyYW51
bGFyaXR5LXJlY3QuaHRtbApAQCAtMjIsNyArMjIsNyBAQAogICAgICAgICByZXR1cm4gYAogICAg
ICAgICAoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICB1aUNvbnRyb2xsZXIubG9uZ1ByZXNzQXRQ
b2ludCgzMCwgMjAsIGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAgIHVpQ29udHJvbGxlci51
aVNjcmlwdENvbXBsZXRlKEpTT04uc3RyaW5naWZ5KHVpQ29udHJvbGxlci5zZWxlY3Rpb25SYW5n
ZVZpZXdSZWN0cykpOworICAgICAgICAgICAgICAgIHVpQ29udHJvbGxlci51aVNjcmlwdENvbXBs
ZXRlKEpTT04uc3RyaW5naWZ5KHVpQ29udHJvbGxlci50ZXh0U2VsZWN0aW9uUmFuZ2VSZWN0cykp
OwogICAgICAgICAgICAgfSk7CiAgICAgICAgIH0pKCk7YAogICAgIH0KQEAgLTM1LDEyICszNSwx
MiBAQAogICAgICAgICB2YXIgdGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rhcmdl
dCcpOwogICAgICAgICBpZiAodGVzdFJ1bm5lci5ydW5VSVNjcmlwdCkgewogICAgICAgICAgICAg
dGVzdFJ1bm5lci5ydW5VSVNjcmlwdChnZXRVSVNjcmlwdCgpLCBmdW5jdGlvbihyZXN1bHQpIHsK
LSAgICAgICAgICAgICAgICB2YXIgc2VsZWN0aW9uUmFuZ2VWaWV3UmVjdHMgPSBKU09OLnBhcnNl
KHJlc3VsdCk7CisgICAgICAgICAgICAgICAgdmFyIHRleHRTZWxlY3Rpb25SYW5nZVJlY3RzID0g
SlNPTi5wYXJzZShyZXN1bHQpOwogICAgICAgICAgICAgICAgIHZhciBvdXRwdXQ7Ci0gICAgICAg
ICAgICAgICAgaWYgKHNlbGVjdGlvblJhbmdlVmlld1JlY3RzLmxlbmd0aCAhPT0gMSkKKyAgICAg
ICAgICAgICAgICBpZiAodGV4dFNlbGVjdGlvblJhbmdlUmVjdHMubGVuZ3RoICE9PSAxKQogICAg
ICAgICAgICAgICAgICAgICBvdXRwdXQgPSAnRkFJTDogVW5leHBlY3RlZCBudW1iZXIgb2Ygc2Vs
ZWN0aW9uIHJhbmdlIHZpZXdzOiAnICsgcmVzdWx0OwogICAgICAgICAgICAgICAgIGVsc2Ugewot
ICAgICAgICAgICAgICAgICAgICB2YXIgcmVjdCA9IHNlbGVjdGlvblJhbmdlVmlld1JlY3RzWzBd
OworICAgICAgICAgICAgICAgICAgICB2YXIgcmVjdCA9IHRleHRTZWxlY3Rpb25SYW5nZVJlY3Rz
WzBdOwogICAgICAgICAgICAgICAgICAgICBpZiAocmVjdC5sZWZ0ICE9IDggfHwgcmVjdC50b3Ag
IT0gOCB8fCByZWN0LndpZHRoICE9IDExMiB8fCByZWN0LmhlaWdodCAhPSAxNyApCiAgICAgICAg
ICAgICAgICAgICAgICAgICBvdXRwdXQgPSAnRkFJTDogVW5leHBlY3RlZCBzZWxlY3Rpb24gcmFu
Z2UgdmlldyBmcmFtZTogJyArIHJlc3VsdDsKICAgICAgICAgICAgICAgICAgICAgZWxzZQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vaW9zL2hpZGUtc2VsZWN0aW9u
LWFmdGVyLWhpZGluZy1jb250ZW50ZWRpdGFibGUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
ZWRpdGluZy9zZWxlY3Rpb24vaW9zL2hpZGUtc2VsZWN0aW9uLWFmdGVyLWhpZGluZy1jb250ZW50
ZWRpdGFibGUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY0MDljMjU2YWZiMTY5NThhM2RhNTU2
YThmZjc5NzA0NDA3OTFjMzQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5n
L3NlbGVjdGlvbi9pb3MvaGlkZS1zZWxlY3Rpb24tYWZ0ZXItaGlkaW5nLWNvbnRlbnRlZGl0YWJs
ZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw2IEBACitIZXJlJ3MgdG8gdGhlIGNyYXp5IG9uZXMs
IHRoZSBtaXNmaXRzLCB0aGUgcmViZWxzLCB0aGUgdHJvdWJsZW1ha2VycywgdGhlIHJvdW5kIHBl
Z3MgaW4gdGhlIHNxdWFyZSBob2xlcy4gVGhlIG9uZXMgd2hvIHNlZSB0aGluZ3MgZGlmZmVyZW50
bHkuIFRoZXkncmUgbm90IGZvbmQgb2YgcnVsZXMuIFlvdSBjYW4gcXVvdGUgdGhlbSwgZGlzYWdy
ZWUgd2l0aCB0aGVtLCBnbG9yaWZ5IG9yIHZpbGlmeSB0aGVtLCBidXQgdGhlIG9ubHkgdGhpbmcg
eW91IGNhbid0IGRvIGlzIGlnbm9yZSB0aGVtIGJlY2F1c2UgdGhleSBjaGFuZ2UgdGhpbmdzLgor
VmVyaWZpZXMgdGhhdCBzZWxlY3Rpb24gVUkgaXMgaGlkZGVuIGFmdGVyIHRoZSBlZGl0YWJsZSBh
cmVhIGJlY29tZXMgaGlkZGVuLCBmb2xsb3dpbmcgYSBzZWxlY3Rpb24gY2hhbmdlLiBUaGlzIHRl
c3QgcmVxdWlyZXMgV2ViS2l0VGVzdFJ1bm5lci4KKworQ2FyZXQgcmVjdCBhZnRlciBmb2N1czog
KGxlZnQgPSAxNjEsIHRvcCA9IDE1MSwgd2lkdGggPSAyLCBoZWlnaHQgPSAzMCkKK1NlbGVjdGlv
biByZWN0cyBhZnRlciBzZWxlY3QgYWxsOgorQ2FyZXQgcmVjdCBhZnRlciBjb2xsYXBzaW5nOiAo
bGVmdCA9IDI2OSwgdG9wID0gMjcxLCB3aWR0aCA9IDIsIGhlaWdodCA9IDMwKQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vaW9zL2hpZGUtc2VsZWN0aW9uLWFmdGVy
LWhpZGluZy1jb250ZW50ZWRpdGFibGUuaHRtbCBiL0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0
aW9uL2lvcy9oaWRlLXNlbGVjdGlvbi1hZnRlci1oaWRpbmctY29udGVudGVkaXRhYmxlLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uOTlhYmFjYmU5YzQxOWFmMmQ2M2E2ZDkyODVhZjBmZjNlYTRiYzEwNAotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2lvcy9oaWRlLXNl
bGVjdGlvbi1hZnRlci1oaWRpbmctY29udGVudGVkaXRhYmxlLmh0bWwKQEAgLTAsMCArMSw2NSBA
QAorPCFET0NUWVBFIGh0bWw+IDwhLS0gd2Via2l0LXRlc3QtcnVubmVyIFsgdXNlRmxleGlibGVW
aWV3cG9ydD10cnVlIF0gLS0+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgbmFtZT0idmlld3BvcnQi
IGNvbnRlbnQ9IndpZHRoPWRldmljZS13aWR0aCwgdXNlci1zY2FsYWJsZT1ubyI+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL3VpLWhlbHBlci5qcyI+PC9zY3JpcHQ+Cis8c3R5bGU+
Citib2R5LCBodG1sIHsKKyAgICB3aWR0aDogMTAwJTsKKyAgICBoZWlnaHQ6IDEwMCU7CisgICAg
bWFyZ2luOiAwOworfQorCisuY29udGFpbmVyIHsKKyAgICB3aWR0aDogMzIwcHg7CisgICAgaGVp
Z2h0OiAzMjBweDsKKyAgICBib3JkZXI6IHNvbGlkIDJweCBzaWx2ZXI7CisgICAgYm94LXNpemlu
ZzogYm9yZGVyLWJveDsKK30KKworI2VkaXRvciB7CisgICAgd2lkdGg6IGluaGVyaXQ7CisgICAg
aGVpZ2h0OiBpbmhlcml0OworICAgIGZvbnQtc2l6ZTogMjRweDsKK30KKzwvc3R5bGU+Cis8L2hl
YWQ+Cis8Ym9keT4KKzxkaXYgY2xhc3M9ImNvbnRhaW5lciI+CisgICAgPGRpdiBpZD0iZWRpdG9y
IiBjb250ZW50ZWRpdGFibGU+CisgICAgICAgIEhlcmUncyB0byB0aGUgY3Jhenkgb25lcywgdGhl
IG1pc2ZpdHMsIHRoZSByZWJlbHMsIHRoZSB0cm91YmxlbWFrZXJzLCB0aGUgcm91bmQgcGVncyBp
biB0aGUgc3F1YXJlIGhvbGVzLgorICAgICAgICBUaGUgb25lcyB3aG8gc2VlIHRoaW5ncyBkaWZm
ZXJlbnRseS4gVGhleSdyZSBub3QgZm9uZCBvZiBydWxlcy4gWW91IGNhbiBxdW90ZSB0aGVtLCBk
aXNhZ3JlZSB3aXRoIHRoZW0sIGdsb3JpZnkgb3IgdmlsaWZ5IHRoZW0sIGJ1dCB0aGUgb25seSB0
aGluZyB5b3UgY2FuJ3QgZG8gaXMgaWdub3JlIHRoZW0gYmVjYXVzZSB0aGV5IGNoYW5nZSB0aGlu
Z3MuCisgICAgPC9kaXY+Cis8L2Rpdj4KKzxwPlZlcmlmaWVzIHRoYXQgc2VsZWN0aW9uIFVJIGlz
IGhpZGRlbiBhZnRlciB0aGUgZWRpdGFibGUgYXJlYSBiZWNvbWVzIGhpZGRlbiwgZm9sbG93aW5n
IGEgc2VsZWN0aW9uIGNoYW5nZS4gVGhpcyB0ZXN0IHJlcXVpcmVzIFdlYktpdFRlc3RSdW5uZXIu
PC9wPgorPGRpdj5DYXJldCByZWN0IGFmdGVyIGZvY3VzOiA8c3BhbiBpZD0iZm9jdXMtY2FyZXQi
Pjwvc3Bhbj48L2Rpdj4KKzxkaXY+U2VsZWN0aW9uIHJlY3RzIGFmdGVyIHNlbGVjdCBhbGw6IDxz
cGFuIGlkPSJzZWxlY3Rpb24iPjwvc3Bhbj48L2Rpdj4KKzxkaXY+Q2FyZXQgcmVjdCBhZnRlciBj
b2xsYXBzaW5nOiA8c3BhbiBpZD0iY29sbGFwc2UtY2FyZXQiPjwvc3Bhbj48L2Rpdj4KKzxzY3Jp
cHQ+CitmdW5jdGlvbiByZWN0VG9TdHJpbmcocmVjdCkgeworICAgIHJldHVybiBgKGxlZnQgPSAk
e01hdGgucm91bmQocmVjdC5sZWZ0KX0sIHRvcCA9ICR7TWF0aC5yb3VuZChyZWN0LnRvcCl9LCB3
aWR0aCA9ICR7TWF0aC5yb3VuZChyZWN0LndpZHRoKX0sIGhlaWdodCA9ICR7TWF0aC5yb3VuZChy
ZWN0LmhlaWdodCl9KWA7Cit9CisKKyhhc3luYyAoKSA9PiB7CisgICAgaWYgKCF3aW5kb3cudGVz
dFJ1bm5lcikKKyAgICAgICAgcmV0dXJuOworCisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7
CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisKKyAgICBhd2FpdCBVSUhlbHBlci5h
Y3RpdmF0ZUFuZFdhaXRGb3JJbnB1dFNlc3Npb25BdCgxNjAsIDE2MCk7CisgICAgZG9jdW1lbnQu
cXVlcnlTZWxlY3RvcigiI2ZvY3VzLWNhcmV0IikudGV4dENvbnRlbnQgPSByZWN0VG9TdHJpbmco
YXdhaXQgVUlIZWxwZXIuZ2V0VUlDYXJldFZpZXdSZWN0KCkpOworCisgICAgZWRpdG9yLnN0eWxl
Lm9wYWNpdHkgPSAwOworICAgIGRvY3VtZW50LmV4ZWNDb21tYW5kKCJzZWxlY3RBbGwiKTsKKyAg
ICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIjc2VsZWN0aW9uIikudGV4dENvbnRlbnQgPSAoYXdh
aXQgVUlIZWxwZXIuZ2V0VUlTZWxlY3Rpb25WaWV3UmVjdHMoKSkubWFwKHJlY3RUb1N0cmluZyku
am9pbigiLCAiKTsKKworICAgIGVkaXRvci5zdHlsZS5vcGFjaXR5ID0gMTsKKyAgICBnZXRTZWxl
Y3Rpb24oKS5jb2xsYXBzZVRvRW5kKCk7CisgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiI2Nv
bGxhcHNlLWNhcmV0IikudGV4dENvbnRlbnQgPSByZWN0VG9TdHJpbmcoYXdhaXQgVUlIZWxwZXIu
Z2V0VUlDYXJldFZpZXdSZWN0KCkpOworCisgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Cit9
KSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9lZGl0aW5nL3NlbGVjdGlvbi9pb3MvaGlkZS1zZWxlY3Rpb24taW4taGlkZGVuLWNvbnRlbnRl
ZGl0YWJsZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9pb3Mv
aGlkZS1zZWxlY3Rpb24taW4taGlkZGVuLWNvbnRlbnRlZGl0YWJsZS1leHBlY3RlZC50eHQKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uN2ZjZTljMWNkYWVmMTNlYzdlYjgyY2ViOWE3MmJmMjgxNGM2NjlmOAotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2lvcy9oaWRlLXNlbGVj
dGlvbi1pbi1oaWRkZW4tY29udGVudGVkaXRhYmxlLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEy
IEBACitIZXJlJ3MgdG8gdGhlIGNyYXp5IG9uZXMsIHRoZSBtaXNmaXRzLCB0aGUgcmViZWxzLCB0
aGUgdHJvdWJsZW1ha2VycywgdGhlIHJvdW5kIHBlZ3MgaW4gdGhlIHNxdWFyZSBob2xlcy4gVGhl
IG9uZXMgd2hvIHNlZSB0aGluZ3MgZGlmZmVyZW50bHkuIFRoZXkncmUgbm90IGZvbmQgb2YgcnVs
ZXMuIFlvdSBjYW4gcXVvdGUgdGhlbSwgZGlzYWdyZWUgd2l0aCB0aGVtLCBnbG9yaWZ5IG9yIHZp
bGlmeSB0aGVtLCBidXQgdGhlIG9ubHkgdGhpbmcgeW91IGNhbid0IGRvIGlzIGlnbm9yZSB0aGVt
IGJlY2F1c2UgdGhleSBjaGFuZ2UgdGhpbmdzLgorVmVyaWZpZXMgdGhhdCBzZWxlY3Rpb24gVUkg
aXMgc3VwcHJlc3NlZCB3aGVuIHRoZSBlZGl0YWJsZSByb290IGlzIHRyYW5zcGFyZW50LiBUbyBt
YW51YWxseSB0ZXN0LCBmb2N1cyB0aGUgYm94IGFib3ZlIGFuZCB2ZXJpZnkgdGhhdDoKKworVGhl
IGNhcmV0IGlzIG5vdCBzaG93bi4KK1NlbGVjdGlvbiBoaWdobGlnaHRzIGFyZSBub3Qgc2hvd24u
CitUaGUgc2VsZWN0aW9uIGNhbm5vdCBiZSBjaGFuZ2VkIHZpYSBnZXN0dXJlLgorQ2FyZXQgcmVj
dCBhZnRlciBmb2N1czogKGxlZnQgPSAwLCB0b3AgPSAwLCB3aWR0aCA9IDAsIGhlaWdodCA9IDAp
CitTZWxlY3Rpb24gcmVjdHMgYWZ0ZXIgc2VsZWN0aW5nIGFsbDoKK1NlbGVjdGlvbiBzdGFydCBn
cmFiYmVyIHJlY3QgYWZ0ZXIgc2VsZWN0aW5nIGFsbDogKGxlZnQgPSAwLCB0b3AgPSAwLCB3aWR0
aCA9IDAsIGhlaWdodCA9IDApCitTZWxlY3Rpb24gZW5kIGdyYWJiZXIgcmVjdCBhZnRlciBzZWxl
Y3RpbmcgYWxsOiAobGVmdCA9IDAsIHRvcCA9IDAsIHdpZHRoID0gMCwgaGVpZ2h0ID0gMCkKK1Nl
bGVjdGlvbiBiZWZvcmUgdGFwOiAoW29iamVjdCBUZXh0XSMzMjUsIFtvYmplY3QgVGV4dF0jMzI1
KQorU2VsZWN0aW9uIGFmdGVyIHRhcDogKFtvYmplY3QgVGV4dF0jMzI1LCBbb2JqZWN0IFRleHRd
IzMyNSkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2lvcy9oaWRl
LXNlbGVjdGlvbi1pbi1oaWRkZW4tY29udGVudGVkaXRhYmxlLWZyYW1lLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2lvcy9oaWRlLXNlbGVjdGlvbi1pbi1oaWRk
ZW4tY29udGVudGVkaXRhYmxlLWZyYW1lLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kYzc0ZGZl
NTFhOGIyZWU2MTc2MDAxMzNmYjczYWZlNzI2ZmI0YmNhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vaW9zL2hpZGUtc2VsZWN0aW9uLWluLWhpZGRlbi1j
b250ZW50ZWRpdGFibGUtZnJhbWUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTIgQEAKKworVmVy
aWZpZXMgdGhhdCBzZWxlY3Rpb24gVUkgaXMgc3VwcHJlc3NlZCB3aGVuIHRoZSBlZGl0YWJsZSBy
b290IGlzIHRyYW5zcGFyZW50LiBUbyBtYW51YWxseSB0ZXN0LCBmb2N1cyB0aGUgYm94IGFib3Zl
IGFuZCB2ZXJpZnkgdGhhdDoKKworVGhlIGNhcmV0IGlzIG5vdCBzaG93bi4KK1NlbGVjdGlvbiBo
aWdobGlnaHRzIGFyZSBub3Qgc2hvd24uCitUaGUgc2VsZWN0aW9uIGNhbm5vdCBiZSBjaGFuZ2Vk
IHZpYSBnZXN0dXJlLgorQ2FyZXQgcmVjdCBhZnRlciBmb2N1czogKGxlZnQgPSAwLCB0b3AgPSAw
LCB3aWR0aCA9IDAsIGhlaWdodCA9IDApCitTZWxlY3Rpb24gcmVjdHMgYWZ0ZXIgc2VsZWN0aW5n
IGFsbDoKK1NlbGVjdGlvbiBzdGFydCBncmFiYmVyIHJlY3QgYWZ0ZXIgc2VsZWN0aW5nIGFsbDog
KGxlZnQgPSAwLCB0b3AgPSAwLCB3aWR0aCA9IDAsIGhlaWdodCA9IDApCitTZWxlY3Rpb24gZW5k
IGdyYWJiZXIgcmVjdCBhZnRlciBzZWxlY3RpbmcgYWxsOiAobGVmdCA9IDAsIHRvcCA9IDAsIHdp
ZHRoID0gMCwgaGVpZ2h0ID0gMCkKK1NlbGVjdGlvbiBiZWZvcmUgdGFwOiAoW29iamVjdCBUZXh0
XSMzMzMsIFtvYmplY3QgVGV4dF0jMzMzKQorU2VsZWN0aW9uIGFmdGVyIHRhcDogKFtvYmplY3Qg
VGV4dF0jMzMzLCBbb2JqZWN0IFRleHRdIzMzMykKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Vk
aXRpbmcvc2VsZWN0aW9uL2lvcy9oaWRlLXNlbGVjdGlvbi1pbi1oaWRkZW4tY29udGVudGVkaXRh
YmxlLWZyYW1lLmh0bWwgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9pb3MvaGlkZS1z
ZWxlY3Rpb24taW4taGlkZGVuLWNvbnRlbnRlZGl0YWJsZS1mcmFtZS5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjQxMzU1YzczYWMyZTc0MThhZjliOTdmOTExNjY3NGViYzZkMTYxZmYKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9pb3MvaGlkZS1zZWxlY3Rpb24taW4t
aGlkZGVuLWNvbnRlbnRlZGl0YWJsZS1mcmFtZS5odG1sCkBAIC0wLDAgKzEsMTIyIEBACis8IURP
Q1RZUEUgaHRtbD4gPCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIgWyB1c2VGbGV4aWJsZVZpZXdwb3J0
PXRydWUgXSAtLT4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVu
dD0id2lkdGg9ZGV2aWNlLXdpZHRoLCB1c2VyLXNjYWxhYmxlPW5vIj4KKzxzY3JpcHQgc3JjPSIu
Li8uLi8uLi9yZXNvdXJjZXMvdWktaGVscGVyLmpzIj48L3NjcmlwdD4KKzxzdHlsZT4KK2JvZHks
IGh0bWwgeworICAgIHdpZHRoOiAxMDAlOworICAgIGhlaWdodDogMTAwJTsKKyAgICBtYXJnaW46
IDA7Cit9CisKKy5jb250YWluZXIgeworICAgIHdpZHRoOiAzMjBweDsKKyAgICBoZWlnaHQ6IDMy
MHB4OworICAgIGJvcmRlcjogc29saWQgMnB4IHNpbHZlcjsKKyAgICBib3gtc2l6aW5nOiBib3Jk
ZXItYm94OworfQorCitpZnJhbWUgeworICAgIG9wYWNpdHk6IDAuMDAxOworICAgIHdpZHRoOiBp
bmhlcml0OworICAgIGhlaWdodDogaW5oZXJpdDsKKyAgICBmb250LXNpemU6IDI0cHg7Cit9Cis8
L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGNsYXNzPSJjb250YWluZXIiPgorICAgIDxp
ZnJhbWUgc3JjZG9jPSIKKyAgICAgICAgPGhlYWQ+CisgICAgICAgICAgICA8c3R5bGU+Ym9keSwg
aHRtbCB7IHdpZHRoOiAxMDAlOyBoZWlnaHQ6IDEwMCU7IH08L3N0eWxlPgorICAgICAgICAgICAg
PHNjcmlwdD4KKyAgICAgICAgICAgIGZ1bmN0aW9uIHNlbGVjdGlvblRvU3RyaW5nKCkgeworICAg
ICAgICAgICAgICAgIGNvbnN0IHNlbGVjdGlvbiA9IGdldFNlbGVjdGlvbigpOworICAgICAgICAg
ICAgICAgIGlmICghc2VsZWN0aW9uLnJhbmdlQ291bnQpCisgICAgICAgICAgICAgICAgICAgIHJl
dHVybiAnKG5vIHNlbGVjdGlvbiknOworCisgICAgICAgICAgICAgICAgY29uc3QgcmFuZ2UgPSBz
ZWxlY3Rpb24uZ2V0UmFuZ2VBdCgwKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gYCgke3Jhbmdl
LnN0YXJ0Q29udGFpbmVyfSMke3JhbmdlLnN0YXJ0T2Zmc2V0fSwgJHtyYW5nZS5lbmRDb250YWlu
ZXJ9IyR7cmFuZ2UuZW5kT2Zmc2V0fSlgOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBm
dW5jdGlvbiBzZWxlY3RBbGwoKSB7CisgICAgICAgICAgICAgICAgZG9jdW1lbnQuZXhlY0NvbW1h
bmQoJ3NlbGVjdEFsbCcpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmdW5jdGlvbiBj
b2xsYXBzZVRvRW5kKCkgeworICAgICAgICAgICAgICAgIGdldFNlbGVjdGlvbigpLmNvbGxhcHNl
VG9FbmQoKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRM
aXN0ZW5lcignc2VsZWN0aW9uY2hhbmdlJywgKCkgPT4gcGFyZW50LnBvc3RNZXNzYWdlKHNlbGVj
dGlvblRvU3RyaW5nKCksICcqJykpOworICAgICAgICAgICAgPC9zY3JpcHQ+CisgICAgICAgIDwv
aGVhZD4KKyAgICAgICAgPGJvZHkgY29udGVudGVkaXRhYmxlPgorICAgICAgICAgICAgSGVyZSdz
IHRvIHRoZSBjcmF6eSBvbmVzLCB0aGUgbWlzZml0cywgdGhlIHJlYmVscywgdGhlIHRyb3VibGVt
YWtlcnMsIHRoZSByb3VuZCBwZWdzIGluIHRoZSBzcXVhcmUgaG9sZXMuCisgICAgICAgICAgICBU
aGUgb25lcyB3aG8gc2VlIHRoaW5ncyBkaWZmZXJlbnRseS4gVGhleSdyZSBub3QgZm9uZCBvZiBy
dWxlcy4gWW91IGNhbiBxdW90ZSB0aGVtLCBkaXNhZ3JlZSB3aXRoIHRoZW0sIGdsb3JpZnkgb3Ig
dmlsaWZ5IHRoZW0sIGJ1dCB0aGUgb25seSB0aGluZyB5b3UgY2FuJ3QgZG8gaXMgaWdub3JlIHRo
ZW0gYmVjYXVzZSB0aGV5IGNoYW5nZSB0aGluZ3MuCisgICAgICAgIDwvYm9keT4iIG9ubG9hZD0i
cnVuVGVzdCgpIj48L2lmcmFtZT4KKzwvZGl2PgorPHA+VmVyaWZpZXMgdGhhdCBzZWxlY3Rpb24g
VUkgaXMgc3VwcHJlc3NlZCB3aGVuIHRoZSBlZGl0YWJsZSByb290IGlzIHRyYW5zcGFyZW50LiBU
byBtYW51YWxseSB0ZXN0LCBmb2N1cyB0aGUgYm94IGFib3ZlIGFuZCB2ZXJpZnkgdGhhdDo8L3A+
Cis8dWw+CisgICAgPGxpPlRoZSBjYXJldCBpcyBub3Qgc2hvd24uPC9saT4KKyAgICA8bGk+U2Vs
ZWN0aW9uIGhpZ2hsaWdodHMgYXJlIG5vdCBzaG93bi48L2xpPgorICAgIDxsaT5UaGUgc2VsZWN0
aW9uIGNhbm5vdCBiZSBjaGFuZ2VkIHZpYSBnZXN0dXJlLjwvbGk+Cis8L3VsPgorPGRpdj5DYXJl
dCByZWN0IGFmdGVyIGZvY3VzOiA8c3BhbiBpZD0iY2FyZXQtcmVjdCI+PC9zcGFuPjwvZGl2Pgor
PGRpdj5TZWxlY3Rpb24gcmVjdHMgYWZ0ZXIgc2VsZWN0aW5nIGFsbDogPHNwYW4gaWQ9InNlbGVj
dGlvbi1yZWN0cyI+PC9zcGFuPjwvZGl2PgorPGRpdj5TZWxlY3Rpb24gc3RhcnQgZ3JhYmJlciBy
ZWN0IGFmdGVyIHNlbGVjdGluZyBhbGw6IDxzcGFuIGlkPSJzdGFydC1ncmFiYmVyLXJlY3QiPjwv
c3Bhbj48L2Rpdj4KKzxkaXY+U2VsZWN0aW9uIGVuZCBncmFiYmVyIHJlY3QgYWZ0ZXIgc2VsZWN0
aW5nIGFsbDogPHNwYW4gaWQ9ImVuZC1ncmFiYmVyLXJlY3QiPjwvc3Bhbj48L2Rpdj4KKzxkaXY+
U2VsZWN0aW9uIGJlZm9yZSB0YXA6IDxzcGFuIGlkPSJzZWxlY3Rpb24tYmVmb3JlIj48L3NwYW4+
PC9kaXY+Cis8ZGl2PlNlbGVjdGlvbiBhZnRlciB0YXA6IDxzcGFuIGlkPSJzZWxlY3Rpb24tYWZ0
ZXIiPjwvc3Bhbj48L2Rpdj4KKzxzY3JpcHQ+CitjdXJyZW50U2VsZWN0aW9uQXNTdHJpbmcgPSAi
IjsKK2N1cnJlbnRTZWxlY3Rpb25DaGFuZ2VDb3VudCA9IDA7Citsb2FkQ291bnQgPSAwOworCith
ZGRFdmVudExpc3RlbmVyKCJsb2FkIiwgcnVuVGVzdCk7CithZGRFdmVudExpc3RlbmVyKCJtZXNz
YWdlIiwgZXZlbnQgPT4geworICAgIHdpbmRvdy5jdXJyZW50U2VsZWN0aW9uQXNTdHJpbmcgPSBl
dmVudC5kYXRhOworICAgIGN1cnJlbnRTZWxlY3Rpb25DaGFuZ2VDb3VudCsrOworfSk7CisKK2Z1
bmN0aW9uIHJlY3RUb1N0cmluZyhyZWN0KSB7CisgICAgcmV0dXJuIGAobGVmdCA9ICR7TWF0aC5y
b3VuZChyZWN0LmxlZnQpfSwgdG9wID0gJHtNYXRoLnJvdW5kKHJlY3QudG9wKX0sIHdpZHRoID0g
JHtNYXRoLnJvdW5kKHJlY3Qud2lkdGgpfSwgaGVpZ2h0ID0gJHtNYXRoLnJvdW5kKHJlY3QuaGVp
Z2h0KX0pYDsKK30KKworYXN5bmMgZnVuY3Rpb24gd2FpdEZvclNlbGVjdGlvbkNoYW5nZUluU3Vi
ZnJhbWUoYWN0aW9ucykKK3sKKyAgICBjb25zdCBwcmV2aW91c1NlbGVjdGlvbkNoYW5nZUNvdW50
ID0gY3VycmVudFNlbGVjdGlvbkNoYW5nZUNvdW50OworICAgIGFjdGlvbnMoKTsKKyAgICB3aGls
ZSAocHJldmlvdXNTZWxlY3Rpb25DaGFuZ2VDb3VudCA9PSBjdXJyZW50U2VsZWN0aW9uQ2hhbmdl
Q291bnQpCisgICAgICAgIGF3YWl0IG5ldyBQcm9taXNlKHJlcXVlc3RBbmltYXRpb25GcmFtZSk7
Cit9CisKK2FzeW5jIGZ1bmN0aW9uIHJ1blRlc3QoKSB7CisgICAgaWYgKCsrbG9hZENvdW50IDwg
MikKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKCF3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAg
ICAgcmV0dXJuOworCisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgdGVzdFJ1bm5l
ci53YWl0VW50aWxEb25lKCk7CisKKyAgICBhd2FpdCB3YWl0Rm9yU2VsZWN0aW9uQ2hhbmdlSW5T
dWJmcmFtZShhc3luYyAoKSA9PiBhd2FpdCBVSUhlbHBlci5hY3RpdmF0ZUFuZFdhaXRGb3JJbnB1
dFNlc3Npb25BdCgxNjAsIDE2MCkpOworICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIiNjYXJl
dC1yZWN0IikudGV4dENvbnRlbnQgPSByZWN0VG9TdHJpbmcoYXdhaXQgVUlIZWxwZXIuZ2V0VUlD
YXJldFZpZXdSZWN0KCkpOworCisgICAgYXdhaXQgd2FpdEZvclNlbGVjdGlvbkNoYW5nZUluU3Vi
ZnJhbWUoKCkgPT4gZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiaWZyYW1lIikuY29udGVudFdpbmRv
dy5zZWxlY3RBbGwoKSk7CisgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiI3N0YXJ0LWdyYWJi
ZXItcmVjdCIpLnRleHRDb250ZW50ID0gcmVjdFRvU3RyaW5nKGF3YWl0IFVJSGVscGVyLmdldFNl
bGVjdGlvblN0YXJ0R3JhYmJlclZpZXdSZWN0KCkpOworICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0
b3IoIiNlbmQtZ3JhYmJlci1yZWN0IikudGV4dENvbnRlbnQgPSByZWN0VG9TdHJpbmcoYXdhaXQg
VUlIZWxwZXIuZ2V0U2VsZWN0aW9uRW5kR3JhYmJlclZpZXdSZWN0KCkpOworCisgICAgYXdhaXQg
d2FpdEZvclNlbGVjdGlvbkNoYW5nZUluU3ViZnJhbWUoKCkgPT4gZG9jdW1lbnQucXVlcnlTZWxl
Y3RvcigiaWZyYW1lIikuY29udGVudFdpbmRvdy5jb2xsYXBzZVRvRW5kKCkpOworICAgIGRvY3Vt
ZW50LnF1ZXJ5U2VsZWN0b3IoIiNzZWxlY3Rpb24tYmVmb3JlIikudGV4dENvbnRlbnQgPSBjdXJy
ZW50U2VsZWN0aW9uQXNTdHJpbmc7CisKKyAgICBhd2FpdCBVSUhlbHBlci50YXBBdCgzMiwgMzIp
OworICAgIGF3YWl0IG5ldyBQcm9taXNlKHJlcXVlc3RBbmltYXRpb25GcmFtZSk7CisgICAgZG9j
dW1lbnQucXVlcnlTZWxlY3RvcigiI3NlbGVjdGlvbi1hZnRlciIpLnRleHRDb250ZW50ID0gY3Vy
cmVudFNlbGVjdGlvbkFzU3RyaW5nOworCisgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Cit9
Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Vk
aXRpbmcvc2VsZWN0aW9uL2lvcy9oaWRlLXNlbGVjdGlvbi1pbi1oaWRkZW4tY29udGVudGVkaXRh
YmxlLmh0bWwgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9pb3MvaGlkZS1zZWxlY3Rp
b24taW4taGlkZGVuLWNvbnRlbnRlZGl0YWJsZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmUxYjA5MzY3NTE1
NzdiODQyYWE2MjRjZTljYTZhZmUzZDQzYTdkMzkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9pb3MvaGlkZS1zZWxlY3Rpb24taW4taGlkZGVuLWNvbnRl
bnRlZGl0YWJsZS5odG1sCkBAIC0wLDAgKzEsODUgQEAKKzwhRE9DVFlQRSBodG1sPiA8IS0tIHdl
YmtpdC10ZXN0LXJ1bm5lciBbIHVzZUZsZXhpYmxlVmlld3BvcnQ9dHJ1ZSBdIC0tPgorPGh0bWw+
Cis8aGVhZD4KKzxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJ3aWR0aD1kZXZpY2Utd2lk
dGgsIHVzZXItc2NhbGFibGU9bm8iPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy91
aS1oZWxwZXIuanMiPjwvc2NyaXB0PgorPHN0eWxlPgorYm9keSwgaHRtbCB7CisgICAgd2lkdGg6
IDEwMCU7CisgICAgaGVpZ2h0OiAxMDAlOworICAgIG1hcmdpbjogMDsKK30KKworLmNvbnRhaW5l
ciB7CisgICAgd2lkdGg6IDMyMHB4OworICAgIGhlaWdodDogMzIwcHg7CisgICAgYm9yZGVyOiBz
b2xpZCAycHggc2lsdmVyOworICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7Cit9CisKKyNlZGl0
b3IgeworICAgIG9wYWNpdHk6IDAuMDAxOworICAgIHdpZHRoOiBpbmhlcml0OworICAgIGhlaWdo
dDogaW5oZXJpdDsKKyAgICBmb250LXNpemU6IDI0cHg7Cit9Cis8L3N0eWxlPgorPC9oZWFkPgor
PGJvZHk+Cis8ZGl2IGNsYXNzPSJjb250YWluZXIiPgorICAgIDxkaXYgaWQ9ImVkaXRvciIgY29u
dGVudGVkaXRhYmxlPgorICAgICAgICBIZXJlJ3MgdG8gdGhlIGNyYXp5IG9uZXMsIHRoZSBtaXNm
aXRzLCB0aGUgcmViZWxzLCB0aGUgdHJvdWJsZW1ha2VycywgdGhlIHJvdW5kIHBlZ3MgaW4gdGhl
IHNxdWFyZSBob2xlcy4KKyAgICAgICAgVGhlIG9uZXMgd2hvIHNlZSB0aGluZ3MgZGlmZmVyZW50
bHkuIFRoZXkncmUgbm90IGZvbmQgb2YgcnVsZXMuIFlvdSBjYW4gcXVvdGUgdGhlbSwgZGlzYWdy
ZWUgd2l0aCB0aGVtLCBnbG9yaWZ5IG9yIHZpbGlmeSB0aGVtLCBidXQgdGhlIG9ubHkgdGhpbmcg
eW91IGNhbid0IGRvIGlzIGlnbm9yZSB0aGVtIGJlY2F1c2UgdGhleSBjaGFuZ2UgdGhpbmdzLgor
ICAgIDwvZGl2PgorPC9kaXY+Cis8cD5WZXJpZmllcyB0aGF0IHNlbGVjdGlvbiBVSSBpcyBzdXBw
cmVzc2VkIHdoZW4gdGhlIGVkaXRhYmxlIHJvb3QgaXMgdHJhbnNwYXJlbnQuIFRvIG1hbnVhbGx5
IHRlc3QsIGZvY3VzIHRoZSBib3ggYWJvdmUgYW5kIHZlcmlmeSB0aGF0OjwvcD4KKzx1bD4KKyAg
ICA8bGk+VGhlIGNhcmV0IGlzIG5vdCBzaG93bi48L2xpPgorICAgIDxsaT5TZWxlY3Rpb24gaGln
aGxpZ2h0cyBhcmUgbm90IHNob3duLjwvbGk+CisgICAgPGxpPlRoZSBzZWxlY3Rpb24gY2Fubm90
IGJlIGNoYW5nZWQgdmlhIGdlc3R1cmUuPC9saT4KKzwvdWw+Cis8ZGl2PkNhcmV0IHJlY3QgYWZ0
ZXIgZm9jdXM6IDxzcGFuIGlkPSJjYXJldC1yZWN0Ij48L3NwYW4+PC9kaXY+Cis8ZGl2PlNlbGVj
dGlvbiByZWN0cyBhZnRlciBzZWxlY3RpbmcgYWxsOiA8c3BhbiBpZD0ic2VsZWN0aW9uLXJlY3Rz
Ij48L3NwYW4+PC9kaXY+Cis8ZGl2PlNlbGVjdGlvbiBzdGFydCBncmFiYmVyIHJlY3QgYWZ0ZXIg
c2VsZWN0aW5nIGFsbDogPHNwYW4gaWQ9InN0YXJ0LWdyYWJiZXItcmVjdCI+PC9zcGFuPjwvZGl2
PgorPGRpdj5TZWxlY3Rpb24gZW5kIGdyYWJiZXIgcmVjdCBhZnRlciBzZWxlY3RpbmcgYWxsOiA8
c3BhbiBpZD0iZW5kLWdyYWJiZXItcmVjdCI+PC9zcGFuPjwvZGl2PgorPGRpdj5TZWxlY3Rpb24g
YmVmb3JlIHRhcDogPHNwYW4gaWQ9InNlbGVjdGlvbi1iZWZvcmUiPjwvc3Bhbj48L2Rpdj4KKzxk
aXY+U2VsZWN0aW9uIGFmdGVyIHRhcDogPHNwYW4gaWQ9InNlbGVjdGlvbi1hZnRlciI+PC9zcGFu
PjwvZGl2PgorPHNjcmlwdD4KK2Z1bmN0aW9uIHJlY3RUb1N0cmluZyhyZWN0KSB7CisgICAgcmV0
dXJuIGAobGVmdCA9ICR7TWF0aC5yb3VuZChyZWN0LmxlZnQpfSwgdG9wID0gJHtNYXRoLnJvdW5k
KHJlY3QudG9wKX0sIHdpZHRoID0gJHtNYXRoLnJvdW5kKHJlY3Qud2lkdGgpfSwgaGVpZ2h0ID0g
JHtNYXRoLnJvdW5kKHJlY3QuaGVpZ2h0KX0pYDsKK30KKworZnVuY3Rpb24gc2VsZWN0aW9uVG9T
dHJpbmcoKSB7CisgICAgY29uc3Qgc2VsZWN0aW9uID0gZ2V0U2VsZWN0aW9uKCk7CisgICAgaWYg
KCFzZWxlY3Rpb24ucmFuZ2VDb3VudCkKKyAgICAgICAgcmV0dXJuICIobm8gc2VsZWN0aW9uKSI7
CisKKyAgICBjb25zdCByYW5nZSA9IHNlbGVjdGlvbi5nZXRSYW5nZUF0KDApOworICAgIHJldHVy
biBgKCR7cmFuZ2Uuc3RhcnRDb250YWluZXJ9IyR7cmFuZ2Uuc3RhcnRPZmZzZXR9LCAke3Jhbmdl
LmVuZENvbnRhaW5lcn0jJHtyYW5nZS5lbmRPZmZzZXR9KWA7Cit9CisKKyhhc3luYyAoKSA9PiB7
CisgICAgaWYgKCF3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgcmV0dXJuOworCisgICAgdGVz
dFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisK
KyAgICBhd2FpdCBVSUhlbHBlci5hY3RpdmF0ZUFuZFdhaXRGb3JJbnB1dFNlc3Npb25BdCgxNjAs
IDE2MCk7CisgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiI2NhcmV0LXJlY3QiKS50ZXh0Q29u
dGVudCA9IHJlY3RUb1N0cmluZyhhd2FpdCBVSUhlbHBlci5nZXRVSUNhcmV0Vmlld1JlY3QoKSk7
CisKKyAgICBkb2N1bWVudC5leGVjQ29tbWFuZCgic2VsZWN0QWxsIik7CisgICAgZG9jdW1lbnQu
cXVlcnlTZWxlY3RvcigiI3NlbGVjdGlvbi1yZWN0cyIpLnRleHRDb250ZW50ID0gKGF3YWl0IFVJ
SGVscGVyLmdldFVJU2VsZWN0aW9uVmlld1JlY3RzKCkpLm1hcChyZWN0VG9TdHJpbmcpLmpvaW4o
IiwgIik7CisgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiI3N0YXJ0LWdyYWJiZXItcmVjdCIp
LnRleHRDb250ZW50ID0gcmVjdFRvU3RyaW5nKGF3YWl0IFVJSGVscGVyLmdldFNlbGVjdGlvblN0
YXJ0R3JhYmJlclZpZXdSZWN0KCkpOworICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIiNlbmQt
Z3JhYmJlci1yZWN0IikudGV4dENvbnRlbnQgPSByZWN0VG9TdHJpbmcoYXdhaXQgVUlIZWxwZXIu
Z2V0U2VsZWN0aW9uRW5kR3JhYmJlclZpZXdSZWN0KCkpOworCisgICAgZ2V0U2VsZWN0aW9uKCku
Y29sbGFwc2VUb0VuZCgpOworICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIiNzZWxlY3Rpb24t
YmVmb3JlIikudGV4dENvbnRlbnQgPSBzZWxlY3Rpb25Ub1N0cmluZygpOworICAgIGF3YWl0IFVJ
SGVscGVyLnRhcEF0KDMyLCAzMik7CisgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiI3NlbGVj
dGlvbi1hZnRlciIpLnRleHRDb250ZW50ID0gc2VsZWN0aW9uVG9TdHJpbmcoKTsKKworICAgIHRl
c3RSdW5uZXIubm90aWZ5RG9uZSgpOworfSkoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcmVzb3VyY2VzL3VpLWhlbHBlci5qcyBiL0xheW91
dFRlc3RzL3Jlc291cmNlcy91aS1oZWxwZXIuanMKaW5kZXggNzBjZTRhY2U4NjEwMmQ5ZjFkMDZk
ODZkOTBlZjVlMTY1ODgwMmE2YS4uZjRhNjE4MTEyZGMyODQzZTJiODk0Y2M1ZWEyMThiOTUxYTFl
ODc2MSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcmVzb3VyY2VzL3VpLWhlbHBlci5qcworKysg
Yi9MYXlvdXRUZXN0cy9yZXNvdXJjZXMvdWktaGVscGVyLmpzCkBAIC0xNjMsNiArMTYzLDM4IEBA
IHdpbmRvdy5VSUhlbHBlciA9IGNsYXNzIFVJSGVscGVyIHsKICAgICB9CiAKICAgICBzdGF0aWMg
Z2V0VUlTZWxlY3Rpb25SZWN0cygpCisgICAgeworICAgICAgICBpZiAoIXRoaXMuaXNXZWJLaXQy
KCkgfHwgIXRoaXMuaXNJT1MoKSkKKyAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUo
KTsKKworICAgICAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7CisgICAgICAgICAg
ICB0ZXN0UnVubmVyLnJ1blVJU2NyaXB0KGAoZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAg
dWlDb250cm9sbGVyLmRvQWZ0ZXJOZXh0U3RhYmxlUHJlc2VudGF0aW9uVXBkYXRlKGZ1bmN0aW9u
KCkgeworICAgICAgICAgICAgICAgICAgICB1aUNvbnRyb2xsZXIudWlTY3JpcHRDb21wbGV0ZShK
U09OLnN0cmluZ2lmeSh1aUNvbnRyb2xsZXIudGV4dFNlbGVjdGlvblJhbmdlUmVjdHMpKTsKKyAg
ICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH0pKClgLCBqc29uU3RyaW5nID0+IHsKKyAg
ICAgICAgICAgICAgICByZXNvbHZlKEpTT04ucGFyc2UoanNvblN0cmluZykpOworICAgICAgICAg
ICAgfSk7CisgICAgICAgIH0pOworICAgIH0KKworICAgIHN0YXRpYyBnZXRVSUNhcmV0Vmlld1Jl
Y3QoKQorICAgIHsKKyAgICAgICAgaWYgKCF0aGlzLmlzV2ViS2l0MigpIHx8ICF0aGlzLmlzSU9T
KCkpCisgICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7CisKKyAgICAgICAgcmV0
dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4geworICAgICAgICAgICAgdGVzdFJ1bm5lci5ydW5V
SVNjcmlwdChgKGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIHVpQ29udHJvbGxlci5kb0Fm
dGVyTmV4dFN0YWJsZVByZXNlbnRhdGlvblVwZGF0ZShmdW5jdGlvbigpIHsKKyAgICAgICAgICAg
ICAgICAgICAgdWlDb250cm9sbGVyLnVpU2NyaXB0Q29tcGxldGUoSlNPTi5zdHJpbmdpZnkodWlD
b250cm9sbGVyLnNlbGVjdGlvbkNhcmV0Vmlld1JlY3QpKTsKKyAgICAgICAgICAgICAgICB9KTsK
KyAgICAgICAgICAgIH0pKClgLCBqc29uU3RyaW5nID0+IHsKKyAgICAgICAgICAgICAgICByZXNv
bHZlKEpTT04ucGFyc2UoanNvblN0cmluZykpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0p
OworICAgIH0KKworICAgIHN0YXRpYyBnZXRVSVNlbGVjdGlvblZpZXdSZWN0cygpCiAgICAgewog
ICAgICAgICBpZiAoIXRoaXMuaXNXZWJLaXQyKCkgfHwgIXRoaXMuaXNJT1MoKSkKICAgICAgICAg
ICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>354650</attachid>
            <date>2018-11-12 21:49:28 -0800</date>
            <delta_ts>2018-11-13 10:37:20 -0800</delta_ts>
            <desc>Add missing layout test.</desc>
            <filename>bug-191442-20181112214927.patch</filename>
            <type>text/plain</type>
            <size>55600</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM4MDgxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjlkNDUwNmNkYmI1OWU2
YmQwZDJkMjA3NDQ1NTRlYmIzYzIwZmJjYS4uNzkxNzY0MGNlNmJiZGZlNmU3ZjEyZDJkOTM5MWE4
MmFmMzEyZmYxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDE4LTExLTEyICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtpT1NdIERvIG5v
dCBzaG93IHNlbGVjdGlvbiBVSSBmb3IgZWRpdGFibGUgZWxlbWVudHMgd2l0aCBvcGFjaXR5IG5l
YXIgemVybworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTkxNDQyCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80NTk1ODYyNT4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0czogZWRpdGluZy9zZWxlY3Rp
b24vaW9zL2RvLW5vdC1zY3JvbGwtdG8tZm9jdXNlZC1oaWRkZW4tY29udGVudGVkaXRhYmxlLmh0
bWwKKyAgICAgICAgICAgICAgIGVkaXRpbmcvc2VsZWN0aW9uL2lvcy9oaWRlLXNlbGVjdGlvbi1h
ZnRlci1oaWRpbmctY29udGVudGVkaXRhYmxlLmh0bWwKKyAgICAgICAgICAgICAgIGVkaXRpbmcv
c2VsZWN0aW9uL2lvcy9oaWRlLXNlbGVjdGlvbi1pbi1oaWRkZW4tY29udGVudGVkaXRhYmxlLWZy
YW1lLmh0bWwKKyAgICAgICAgICAgICAgIGVkaXRpbmcvc2VsZWN0aW9uL2lvcy9oaWRlLXNlbGVj
dGlvbi1pbi1oaWRkZW4tY29udGVudGVkaXRhYmxlLmh0bWwKKworICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0Ojppc1Ry
YW5zcGFyZW50UmVzcGVjdGluZ1BhcmVudEZyYW1lcyBjb25zdCk6CisKKyAgICAgICAgQWRkIGEg
aGVscGVyIGZ1bmN0aW9uIHRvIGRldGVybWluZSB3aGV0aGVyIGEgUmVuZGVyT2JqZWN0IGlzIGNv
bnRhaW5lZCB3aXRoaW4gYSB0cmFuc3BhcmVudCBsYXllciwgdGFraW5nIHBhcmVudAorICAgICAg
ICBmcmFtZXMgaW50byBhY2NvdW50LiBBIGxheWVyIGlzIGNvbnNpZGVyZWQgdHJhbnNwYXJlbnQg
aWYgaXRzIG9wYWNpdHkgaXMgbGVzcyB0aGFuIGEgc21hbGwgdGhyZXNob2xkIChpLmUuIDAuMDEp
LgorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oOgorCiAyMDE4LTExLTExICBX
ZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIEltcGxlbWVu
dCBhIG5ldyBlZGl0IGNvbW1hbmQgdG8gY2hhbmdlIHRoZSBlbmNsb3NpbmcgbGlzdCB0eXBlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCmluZGV4IDAyMGJlNTI0NGQ1YTVjNmU1MmZiY2FlMTEzMDA0YTAxOWQ1NDYyN2MuLmU4YTg5
YTczODllZDhlMmI4Mjg0NzEzNWY3ODZhMGRmODAwYjI3MTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
NzkgQEAKKzIwMTgtMTEtMTIgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+
CisKKyAgICAgICAgW2lPU10gRG8gbm90IHNob3cgc2VsZWN0aW9uIFVJIGZvciBlZGl0YWJsZSBl
bGVtZW50cyB3aXRoIG9wYWNpdHkgbmVhciB6ZXJvCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTE0NDIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQ1
OTU4NjI1PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEFkZCBzdXBwb3J0IGZvciBzdXBwcmVzc2luZyBuYXRpdmUgc2VsZWN0aW9uIFVJIChmb3IgaW5z
dGFuY2UsIHNlbGVjdGlvbiBoaWdobGlnaHQgdmlld3MsIHNlbGVjdGlvbiBoYW5kbGVzLCBhbmQK
KyAgICAgICAgc2VsZWN0aW9uLXJlbGF0ZWQgZ2VzdHVyZXMpIHdoZW4gdGhlIHNlbGVjdGlvbiBp
cyBpbnNpZGUgYSB0cmFuc3BhcmVudCBlZGl0YWJsZSBlbGVtZW50LiBUaGlzIGhlbHBzIG1haW50
YWluCisgICAgICAgIGNvbXBhdGliaWxpdHkgd2l0aCB0ZXh0IGVkaXRvcnMgdGhhdCB3b3JrIGJ5
IGNhcHR1cmluZyBrZXkgZXZlbnRzIGFuZCBpbnB1dCBldmVudHMgaGlkZGVuIGNvbnRlbnRlZGl0
YWJsZQorICAgICAgICBlbGVtZW50cywgYW5kIHJlZmxlY3QgdGhlc2UgY2hhbmdlcyBpbiBkaWZm
ZXJlbnQgZG9jdW1lbnQgb3IgZGlmZmVyZW50IHBhcnQgb2YgdGhlIGRvY3VtZW50LgorCisgICAg
ICAgIFNpbmNlIHNlbGVjdGlvbiBVSSBpcyByZW5kZXJlZCBpbiB0aGUgVUkgcHJvY2VzcyBvbiBp
T1MgdXNpbmcgZWxlbWVudCBnZW9tZXRyeSBwcm9wYWdhdGVkIGZyb20gdGhlIHdlYiBwcm9jZXNz
LAorICAgICAgICBzZWxlY3Rpb24gcmVuZGVyaW5nIGlzIGVudGlyZWx5IGRlY291cGxlZCBmcm9t
IHRoZSBwcm9jZXNzIG9mIHBhaW50aW5nIGluIHRoZSB3ZWIgcHJvY2Vzcy4gVGhpcyBtZWFucyB0
aGF0IGlmCisgICAgICAgIHRoZSBlZGl0YWJsZSByb290IGhhcyBhbiBvcGFjaXR5IG9mIDAsIHdl
IHdvdWxkIGNvcnJlY3RseSBoaWRlIHRoZSBjYXJldCBhbmQgc2VsZWN0aW9uIG9uIG1hY09TLCBi
dXQgZHJhdyBvdmVyCisgICAgICAgIHRoZSB0cmFuc3BhcmVudCBlbGVtZW50IG9uIGlPUy4gV2hl
biB0aGVzZSBoaWRkZW4gZWRpdGFibGUgZWxlbWVudHMgYXJlIGZvY3VzZWQsIHRoaXMgb2Z0ZW4g
cmVzdWx0cyBpbiB1bndhbnRlZAorICAgICAgICBiZWhhdmlvcnMsIHN1Y2ggYXMgZG91YmxlIGNh
cmV0IHBhaW50aW5nLCBuYXRpdmUgYW5kIGN1c3RvbSBzZWxlY3Rpb24gVUkgZnJvbSB0aGUgcGFn
ZSBiZWluZyBkcmF3biBvbiB0b3Agb2Ygb25lCisgICAgICAgIGFub3RoZXIsIGFuZCB0aGUgYWJp
bGl0eSB0byBjaGFuZ2Ugc2VsZWN0aW9uIHZpYSB0YXAgYW5kIGxvdXBlIGdlc3R1cmVzIHdpdGhp
biBoaWRkZW4gdGV4dC4KKworICAgICAgICBUbyBmaXggdGhpcywgd2UgY29tcHV0ZSB3aGV0aGVy
IHRoZSBmb2N1c2VkIGVsZW1lbnQgaXMgdHJhbnNwYXJlbnQgd2hlbiBhbiBlbGVtZW50IGlzIGZv
Y3VzZWQsIG9yIHdoZW4gdGhlCisgICAgICAgIHNlbGVjdGlvbiBjaGFuZ2VzLCBhbmQgc2VuZCB0
aGlzIGluZm9ybWF0aW9uIG92ZXIgdG8gdGhlIFVJIHByb2Nlc3MgdmlhIGBBc3Npc3RlZE5vZGVJ
bmZvcm1hdGlvbmAgYW5kCisgICAgICAgIGBFZGl0b3JTdGF0ZWAuIEluIHRoZSBVSSBwcm9jZXNz
LCB3ZSB0aGVuIHJlc3BlY3QgdGhpcyBpbmZvcm1hdGlvbiBieSBzdXBwcmVzc2luZyB0aGUgc2Vs
ZWN0aW9uIGFzc2lzdGFudCBpZiB0aGUKKyAgICAgICAgZm9jdXNlZCBlbGVtZW50IGlzIHRyYW5z
cGFyZW50OyB0aGlzIGRpc2FibGVzIHNob3dpbmcgYW5kIGxheWluZyBvdXQgc2VsZWN0aW9uIHZp
ZXdzLCBhcyB3ZWxsIGFzIGdlc3R1cmVzCisgICAgICAgIGFzc29jaWF0ZWQgd2l0aCBzZWxlY3Rp
b24gb3ZlcmxheXMuIEhvd2V2ZXIsIHRoaXMgc3RpbGwgYWxsb3dzIGZvciBjb250ZXh0dWFsIGF1
dG9jb3JyZWN0aW9uIGFuZCBzcGVsbCBjaGVja2luZy4KKworICAgICAgICAqIFNoYXJlZC9Bc3Np
c3RlZE5vZGVJbmZvcm1hdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OkFzc2lzdGVkTm9kZUlu
Zm9ybWF0aW9uOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpBc3Npc3RlZE5vZGVJ
bmZvcm1hdGlvbjo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvQXNzaXN0ZWROb2RlSW5mb3Jt
YXRpb24uaDoKKyAgICAgICAgKiBTaGFyZWQvRWRpdG9yU3RhdGUuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpFZGl0b3JTdGF0ZTo6UG9zdExheW91dERhdGE6OmVuY29kZSBjb25zdCk6CisgICAgICAg
IChXZWJLaXQ6OkVkaXRvclN0YXRlOjpQb3N0TGF5b3V0RGF0YTo6ZGVjb2RlKToKKyAgICAgICAg
KiBTaGFyZWQvRWRpdG9yU3RhdGUuaDoKKworICAgICAgICBBZGQgYGVsZW1lbnRJc1RyYW5zcGFy
ZW50YCBmbGFncywgYW5kIGFsc28gYWRkIGJvaWxlcnBsYXRlIElQQyBjb2RlLgorCisgICAgICAg
ICogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW06CisgICAgICAgICgt
W1dLQ29udGVudFZpZXcgX2Rpc3BsYXlGb3JtTm9kZUlucHV0Vmlld10pOgorCisgICAgICAgIFBy
ZXZlbnQgem9vbWluZyB0byB0aGUgZm9jdXNlZCBlbGVtZW50IGlmIHRoZSBmb2N1c2VkIGVsZW1l
bnQgaXMgaGlkZGVuLgorCisgICAgICAgICgtW1dLQ29udGVudFZpZXcgaGFzU2VsZWN0YWJsZVBv
c2l0aW9uQXRQb2ludDpdKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBwb2ludElzTmVhck1h
cmtlZFRleHQ6XSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgdGV4dEludGVyYWN0aW9uR2Vz
dHVyZTpzaG91bGRCZWdpbkF0UG9pbnQ6XSk6CisKKyAgICAgICAgRG9uJ3QgYWxsb3cgdGhlc2Ug
dGV4dCBpbnRlcmFjdGlvbiBnZXN0dXJlcyB0byBiZWdpbiB3aGlsZSBzdXBwcmVzc2luZyB0aGUg
c2VsZWN0aW9uIGFzc2lzdGFudC4KKworICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9zdGFydEFz
c2lzdGluZ05vZGU6dXNlcklzSW50ZXJhY3Rpbmc6Ymx1clByZXZpb3VzTm9kZTpjaGFuZ2luZ0Fj
dGl2aXR5U3RhdGU6dXNlck9iamVjdDpdKToKKworICAgICAgICBXaGVuIGFuIGVsZW1lbnQgaXMg
Zm9jdXNlZCwgYmVnaW4gc3VwcHJlc3NpbmcgdGhlIHNlbGVjdGlvbiBhc3Npc3RhbnQgaWYgdGhl
IGVsZW1lbnQgaXMgZnVsbHkgdHJhbnNwYXJlbnQuCisKKyAgICAgICAgKC1bV0tDb250ZW50Vmll
dyBfc3RvcEFzc2lzdGluZ05vZGVdKToKKworICAgICAgICBXaGVuIHRoZSBmb2N1c2VkIGVsZW1l
bnQgaXMgYmx1cnJlZCwgcmVzZXQgc3RhdGUgYnkgZW5kaW5nIHNlbGVjdGlvbiBhc3Npc3RhbnQg
c3VwcHJlc3Npb24gKGFkZGl0aW9uYWxseQorICAgICAgICByZWFjdGl2YXRpbmcgdGhlIHNlbGVj
dGlvbiBhc3Npc3RhbnQgaWYgbmVlZGVkKS4gVGhpcyBlbnN1cmVzIHRoYXQgc2VsZWN0aW9uIGlu
IG5vbi1lZGl0YWJsZSB0ZXh0IGlzbid0IGJyb2tlbgorICAgICAgICBhZnRlciBmb2N1c2luZyBh
IGhpZGRlbiBlZGl0YWJsZSBlbGVtZW50LgorCisgICAgICAgICgtW1dLQ29udGVudFZpZXcgX3Vw
ZGF0ZUNoYW5nZWRTZWxlY3Rpb246XSk6CisKKyAgICAgICAgSWYgbmVlZGVkLCBzdXBwcmVzcyBv
ciB1bi1zdXBwcmVzcyB0aGUgc2VsZWN0aW9uIGFzc2lzdGFudCB3aGVuIHRoZSBzZWxlY3Rpb24g
Y2hhbmdlcy4gT24gY2VydGFpbiByaWNoIHRleHQKKyAgICAgICAgZWRpdG9ycywgYSBjb21iaW5h
dGlvbiBvZiBjdXN0b20gc2VsZWN0aW9uIFVJIGFuZCBuYXRpdmUgc2VsZWN0aW9uIFVJIGlzIHVz
ZWQuIEZvciBpbnN0YW5jZSwgb24gTWljcm9zb2Z0IE9mZmljZQorICAgICAgICAzNjUsIGNhcmV0
IHNlbGVjdGlvbnMgYXJlIHJlbmRlcmVkIHVzaW5nIHRoZSBuYXRpdmUgY2FyZXQgdmlldywgYnV0
IGFzIHNvb24gYXMgdGhlIHNlbGVjdGlvbiBiZWNvbWVzIHJhbmdlZCwgdGhlCisgICAgICAgIGVk
aXRhYmxlIHJvb3QgYmVjb21lcyBmdWxseSB0cmFuc3BhcmVudCwgYW5kIE9mZmljZSdzIHNlbGVj
dGlvbiBVSSB0YWtlcyBvdmVyLgorCisgICAgICAgICgtW1dLQ29udGVudFZpZXcgX3Nob3VsZFN1
cHByZXNzU2VsZWN0aW9uQ29tbWFuZHNdKToKKworICAgICAgICBPdmVycmlkZSB0aGlzIFVJS2l0
IFNQSSBob29rIHRvIHN1cHByZXNzIHNlbGVjdGlvbiBjb21tYW5kcyAoZS5nLiB0aGUgY2FsbG91
dCBiYXIpIHdoZW4gc3VwcHJlc3NpbmcgdGhlCisgICAgICAgIHNlbGVjdGlvbiBhc3Npc3RhbnQu
CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW06CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2U6OnBsYXRmb3JtRWRpdG9yU3RhdGUgY29uc3QpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlOjpnZXRBc3Npc3RlZE5vZGVJbmZvcm1hdGlvbik6CisKKyAgICAg
ICAgQ29tcHV0ZSBhbmQgc2V0IGBlbGVtZW50SXNUcmFuc3BhcmVudGAgdXNpbmcgdGhlIGFzc2lz
dGVkIG5vZGUuCisKIDIwMTgtMTEtMTEgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBs
ZS5jb20+CiAKICAgICAgICAgSW1wbGVtZW50IGEgbmV3IGVkaXQgY29tbWFuZCB0byBjaGFuZ2Ug
dGhlIGVuY2xvc2luZyBsaXN0IHR5cGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9i
amVjdC5jcHAKaW5kZXggNDI1NTEwNWUyNDRmZGQ1MTdmMzQ5NGJhYjY5OTI4YjMyMzk3YTQ2ZC4u
ZWYwMjQ2Y2U4MmU5ZmM1ZjI3ODViOTZkNDRlYzdjODAzODM5OTg4MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKQEAgLTE1MTQsNiArMTUxNCwzMyBAQCB2b2lk
IFJlbmRlck9iamVjdDo6ZGVzdHJveSgpCiAgICAgZGVsZXRlIHRoaXM7CiB9CiAKK2Jvb2wgUmVu
ZGVyT2JqZWN0Ojppc1RyYW5zcGFyZW50UmVzcGVjdGluZ1BhcmVudEZyYW1lcygpIGNvbnN0Cit7
CisgICAgc3RhdGljIGNvbnN0IGRvdWJsZSBtaW5pbXVtVmlzaWJsZU9wYWNpdHkgPSAwLjAxOwor
CisgICAgYXV0byogbGF5ZXIgPSBlbmNsb3NpbmdMYXllcigpOworICAgIHdoaWxlIChsYXllcikg
eworICAgICAgICBhdXRvJiBsYXllclJlbmRlcmVyID0gbGF5ZXItPnJlbmRlcmVyKCk7CisgICAg
ICAgIGlmIChsYXllclJlbmRlcmVyLnN0eWxlKCkub3BhY2l0eSgpIDwgbWluaW11bVZpc2libGVP
cGFjaXR5KQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAgICAgYXV0byogcGFyZW50
TGF5ZXIgPSBsYXllci0+cGFyZW50KCk7CisgICAgICAgIGlmICghcGFyZW50TGF5ZXIpIHsKKyAg
ICAgICAgICAgIGlmICghaXM8UmVuZGVyVmlldz4obGF5ZXJSZW5kZXJlcikpCisgICAgICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgICAgICBhdXRvJiBlbmNsb3NpbmdGcmFtZSA9
IGRvd25jYXN0PFJlbmRlclZpZXc+KGxheWVyUmVuZGVyZXIpLnZpZXcoKS5mcmFtZSgpOworICAg
ICAgICAgICAgaWYgKGVuY2xvc2luZ0ZyYW1lLmlzTWFpbkZyYW1lKCkpCisgICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgICAgICBpZiAoYXV0byAqZnJhbWVPd25lclJlbmRl
cmVyID0gZW5jbG9zaW5nRnJhbWUub3duZXJFbGVtZW50KCktPnJlbmRlcmVyKCkpCisgICAgICAg
ICAgICAgICAgcGFyZW50TGF5ZXIgPSBmcmFtZU93bmVyUmVuZGVyZXItPmVuY2xvc2luZ0xheWVy
KCk7CisgICAgICAgIH0KKyAgICAgICAgbGF5ZXIgPSBwYXJlbnRMYXllcjsKKyAgICB9CisgICAg
cmV0dXJuIGZhbHNlOworfQorCiBQb3NpdGlvbiBSZW5kZXJPYmplY3Q6OnBvc2l0aW9uRm9yUG9p
bnQoY29uc3QgTGF5b3V0UG9pbnQmIHBvaW50KQogewogICAgIC8vIEZJWE1FOiBUaGlzIHNob3Vs
ZCBqdXN0IGNyZWF0ZSBhIFBvc2l0aW9uIG9iamVjdCBpbnN0ZWFkICh3ZWJraXQub3JnL2IvMTY4
NTY2KS4gCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0
LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgKaW5kZXggMmRjZTlk
Y2M1NjkxMzA5MWY3Mjk5NDdmYzZkZjcyNjRhOGU0M2Y1ZS4uNjc0NWMwNzQ4NWM4MGNkYjdjMmJi
MmY2OTE5MDRjNGNmNzlhMDFkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlck9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmpl
Y3QuaApAQCAtNzk3LDYgKzc5Nyw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGluaXRpYWxpemVGcmFn
bWVudGVkRmxvd1N0YXRlT25JbnNlcnRpb24oKTsKICAgICB2aXJ0dWFsIHZvaWQgaW5zZXJ0ZWRJ
bnRvVHJlZSgpOwogCisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBpc1RyYW5zcGFyZW50UmVzcGVj
dGluZ1BhcmVudEZyYW1lcygpIGNvbnN0OworCiBwcm90ZWN0ZWQ6CiAgICAgLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCiAgICAgLy8gSGVscGVyIGZ1bmN0aW9ucy4g
RGFuZ2Vyb3VzIHRvIHVzZSEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Fzc2lz
dGVkTm9kZUluZm9ybWF0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Fzc2lzdGVkTm9k
ZUluZm9ybWF0aW9uLmNwcAppbmRleCA5ZWE1ZDExMjk1YjljNWUyNjBiYTY2NzA3YmE5MzVlY2Nk
MWIxZDU3Li5hOGJkN2E3ZmY5Mjk1NjIxNmNlMzM3MjgxOWRmOTA5ZjIzOTE1MWQzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Bc3Npc3RlZE5vZGVJbmZvcm1hdGlvbi5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvQXNzaXN0ZWROb2RlSW5mb3JtYXRpb24uY3BwCkBAIC05
MSw2ICs5MSw3IEBAIHZvaWQgQXNzaXN0ZWROb2RlSW5mb3JtYXRpb246OmVuY29kZShJUEM6OkVu
Y29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAgZW5jb2RlciA8PCB0aXRsZTsKICAgICBlbmNvZGVy
IDw8IGFjY2VwdHNBdXRvZmlsbGVkTG9naW5DcmVkZW50aWFsczsKICAgICBlbmNvZGVyIDw8IGlz
QXV0b2ZpbGxhYmxlVXNlcm5hbWVGaWVsZDsKKyAgICBlbmNvZGVyIDw8IGVsZW1lbnRJc1RyYW5z
cGFyZW50OwogICAgIGVuY29kZXIgPDwgcmVwcmVzZW50aW5nUGFnZVVSTDsKICAgICBlbmNvZGVy
LmVuY29kZUVudW0oYXV0b2ZpbGxGaWVsZE5hbWUpOwogICAgIGVuY29kZXIgPDwgcGxhY2Vob2xk
ZXI7CkBAIC0xOTEsNiArMTkyLDkgQEAgYm9vbCBBc3Npc3RlZE5vZGVJbmZvcm1hdGlvbjo6ZGVj
b2RlKElQQzo6RGVjb2RlciYgZGVjb2RlciwgQXNzaXN0ZWROb2RlSW5mb3JtYXQKICAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKHJlc3VsdC5pc0F1dG9maWxsYWJsZVVzZXJuYW1lRmllbGQpKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5lbGVt
ZW50SXNUcmFuc3BhcmVudCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwogICAgIGlmICghZGVj
b2Rlci5kZWNvZGUocmVzdWx0LnJlcHJlc2VudGluZ1BhZ2VVUkwpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Fzc2lzdGVkTm9kZUlu
Zm9ybWF0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Bc3Npc3RlZE5vZGVJbmZvcm1hdGlv
bi5oCmluZGV4IDc5NzllZmI4MDU0YTg0MWZlNDNmZTlkODQ2ODU1OTFkZjZkNmRhYTYuLjA0ODQ0
YTI0MTk2ODY4YTkxMWE5M2MyMWEzNWM5ZjYzMmUzM2YwM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0Fzc2lzdGVkTm9kZUluZm9ybWF0aW9uLmgKKysrIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvQXNzaXN0ZWROb2RlSW5mb3JtYXRpb24uaApAQCAtMTIwLDYgKzEyMCw3IEBAIHN0
cnVjdCBBc3Npc3RlZE5vZGVJbmZvcm1hdGlvbiB7CiAgICAgU3RyaW5nIHRpdGxlOwogICAgIGJv
b2wgYWNjZXB0c0F1dG9maWxsZWRMb2dpbkNyZWRlbnRpYWxzIHsgZmFsc2UgfTsKICAgICBib29s
IGlzQXV0b2ZpbGxhYmxlVXNlcm5hbWVGaWVsZCB7IGZhbHNlIH07CisgICAgYm9vbCBlbGVtZW50
SXNUcmFuc3BhcmVudCB7IGZhbHNlIH07CiAgICAgV2ViQ29yZTo6VVJMIHJlcHJlc2VudGluZ1Bh
Z2VVUkw7CiAgICAgV2ViQ29yZTo6QXV0b2ZpbGxGaWVsZE5hbWUgYXV0b2ZpbGxGaWVsZE5hbWUg
eyBXZWJDb3JlOjpBdXRvZmlsbEZpZWxkTmFtZTo6Tm9uZSB9OwogICAgIFN0cmluZyBwbGFjZWhv
bGRlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0VkaXRvclN0YXRlLmNwcCBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0VkaXRvclN0YXRlLmNwcAppbmRleCBjMDczZDMwYjg5Yjc4
YTRiYjBkZGZiMGY5NzU2NDEzYTI2YjQ5MjE3Li4wYTJiYTdmMDM2NzU5OTE3ZWIzNGM5MzU5MDA1
YWJiM2VjY2NlNmE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9FZGl0b3JTdGF0
ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvRWRpdG9yU3RhdGUuY3BwCkBAIC0xMzEs
NiArMTMxLDcgQEAgdm9pZCBFZGl0b3JTdGF0ZTo6UG9zdExheW91dERhdGE6OmVuY29kZShJUEM6
OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAgZW5jb2RlciA8PCBpc1N0YWJsZVN0YXRlVXBk
YXRlOwogICAgIGVuY29kZXIgPDwgaW5zaWRlRml4ZWRQb3NpdGlvbjsKICAgICBlbmNvZGVyIDw8
IGhhc1BsYWluVGV4dDsKKyAgICBlbmNvZGVyIDw8IGVsZW1lbnRJc1RyYW5zcGFyZW50OwogICAg
IGVuY29kZXIgPDwgY2FyZXRDb2xvcjsKICNlbmRpZgogI2lmIFBMQVRGT1JNKE1BQykKQEAgLTE4
Nyw2ICsxODgsOCBAQCBib29sIEVkaXRvclN0YXRlOjpQb3N0TGF5b3V0RGF0YTo6ZGVjb2RlKElQ
Qzo6RGVjb2RlciYgZGVjb2RlciwgUG9zdExheW91dERhdGEmCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5oYXNQbGFpblRleHQpKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuZWxlbWVudElz
VHJhbnNwYXJlbnQpKQorICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShyZXN1bHQuY2FyZXRDb2xvcikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvRWRpdG9yU3RhdGUuaCBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0VkaXRvclN0YXRlLmgKaW5kZXggMGZhMjM4M2VjZTBmYTI0YTQ5MTY3N2Y0
NDIwODg4YWYzYTFkNDFhYi4uOWUzMzkwNjYyMWFkOTQyNTU2ZmRhMDNjY2UxMGNiMmY2ZTQxYWNm
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvRWRpdG9yU3RhdGUuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9FZGl0b3JTdGF0ZS5oCkBAIC0xMDcsNiArMTA3LDcgQEAgc3Ry
dWN0IEVkaXRvclN0YXRlIHsKICAgICAgICAgYm9vbCBpc1N0YWJsZVN0YXRlVXBkYXRlIHsgZmFs
c2UgfTsKICAgICAgICAgYm9vbCBpbnNpZGVGaXhlZFBvc2l0aW9uIHsgZmFsc2UgfTsKICAgICAg
ICAgYm9vbCBoYXNQbGFpblRleHQgeyBmYWxzZSB9OworICAgICAgICBib29sIGVsZW1lbnRJc1Ry
YW5zcGFyZW50IHsgZmFsc2UgfTsKICAgICAgICAgV2ViQ29yZTo6Q29sb3IgY2FyZXRDb2xvcjsK
ICNlbmRpZgogI2lmIFBMQVRGT1JNKE1BQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCmluZGV4IDcwYzg4MzY3NzQ4
MmY5OWFmMjYzMzI3MjY5MmM5ZTY0YzY4MzBkMDQuLmI4ODdiNzdiMDE4Yzg5ZWE3YmE1NTE5MzMz
YWQxZDQ5OWE3YTA4YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9X
S0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
aW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQpAQCAtMTM0MiwxNiArMTM0MiwxOCBAQCBz
dGF0aWMgTlNWYWx1ZSAqbnNTaXplRm9yVGFwSGlnaGxpZ2h0Qm9yZGVyUmFkaXVzKFdlYkNvcmU6
OkludFNpemUgYm9yZGVyUmFkaXVzLAogCiAtICh2b2lkKV9kaXNwbGF5Rm9ybU5vZGVJbnB1dFZp
ZXcKIHsKLSAgICAvLyBJbiBjYXNlIHVzZXIgc2NhbGluZyBpcyBmb3JjZSBlbmFibGVkLCBkbyBu
b3QgdXNlIHRoYXQgc2NhbGluZyB3aGVuIHpvb21pbmcgaW4gd2l0aCBhbiBpbnB1dCBmaWVsZC4K
LSAgICAvLyBab29taW5nIGFib3ZlIHRoZSBwYWdlJ3MgZGVmYXVsdCBzY2FsZSBmYWN0b3Igc2hv
dWxkIG9ubHkgaGFwcGVuIHdoZW4gdGhlIHVzZXIgcGVyZm9ybXMgaXQuCi0gICAgW3NlbGYgX3pv
b21Ub0ZvY3VzUmVjdDpfYXNzaXN0ZWROb2RlSW5mb3JtYXRpb24uZWxlbWVudFJlY3QKLSAgICAg
ICAgc2VsZWN0aW9uUmVjdDpfZGlkQWNjZXNzb3J5VGFiSW5pdGlhdGVGb2N1cyA/IEludFJlY3Qo
KSA6IF9hc3Npc3RlZE5vZGVJbmZvcm1hdGlvbi5zZWxlY3Rpb25SZWN0Ci0gICAgICAgIGluc2lk
ZUZpeGVkOl9hc3Npc3RlZE5vZGVJbmZvcm1hdGlvbi5pbnNpZGVGaXhlZFBvc2l0aW9uCi0gICAg
ICAgIGZvbnRTaXplOl9hc3Npc3RlZE5vZGVJbmZvcm1hdGlvbi5ub2RlRm9udFNpemUKLSAgICAg
ICAgbWluaW11bVNjYWxlOl9hc3Npc3RlZE5vZGVJbmZvcm1hdGlvbi5taW5pbXVtU2NhbGVGYWN0
b3IKLSAgICAgICAgbWF4aW11bVNjYWxlOl9hc3Npc3RlZE5vZGVJbmZvcm1hdGlvbi5tYXhpbXVt
U2NhbGVGYWN0b3JJZ25vcmluZ0Fsd2F5c1NjYWxhYmxlCi0gICAgICAgIGFsbG93U2NhbGluZzpf
YXNzaXN0ZWROb2RlSW5mb3JtYXRpb24uYWxsb3dzVXNlclNjYWxpbmdJZ25vcmluZ0Fsd2F5c1Nj
YWxhYmxlICYmICFjdXJyZW50VXNlckludGVyZmFjZUlkaW9tSXNQYWQoKQotICAgICAgICBmb3Jj
ZVNjcm9sbDooX2Fzc2lzdGVkTm9kZUluZm9ybWF0aW9uLmlucHV0TW9kZSA9PSBJbnB1dE1vZGU6
Ok5vbmUpID8gIWN1cnJlbnRVc2VySW50ZXJmYWNlSWRpb21Jc1BhZCgpIDogW3NlbGYgcmVxdWly
ZXNBY2Nlc3NvcnlWaWV3XV07CisgICAgaWYgKCFzZWxmLnN1cHByZXNzQXNzaXN0YW50U2VsZWN0
aW9uVmlldykgeworICAgICAgICAvLyBJbiBjYXNlIHVzZXIgc2NhbGluZyBpcyBmb3JjZSBlbmFi
bGVkLCBkbyBub3QgdXNlIHRoYXQgc2NhbGluZyB3aGVuIHpvb21pbmcgaW4gd2l0aCBhbiBpbnB1
dCBmaWVsZC4KKyAgICAgICAgLy8gWm9vbWluZyBhYm92ZSB0aGUgcGFnZSdzIGRlZmF1bHQgc2Nh
bGUgZmFjdG9yIHNob3VsZCBvbmx5IGhhcHBlbiB3aGVuIHRoZSB1c2VyIHBlcmZvcm1zIGl0Lgor
ICAgICAgICBbc2VsZiBfem9vbVRvRm9jdXNSZWN0Ol9hc3Npc3RlZE5vZGVJbmZvcm1hdGlvbi5l
bGVtZW50UmVjdAorICAgICAgICAgICAgc2VsZWN0aW9uUmVjdDpfZGlkQWNjZXNzb3J5VGFiSW5p
dGlhdGVGb2N1cyA/IEludFJlY3QoKSA6IF9hc3Npc3RlZE5vZGVJbmZvcm1hdGlvbi5zZWxlY3Rp
b25SZWN0CisgICAgICAgICAgICBpbnNpZGVGaXhlZDpfYXNzaXN0ZWROb2RlSW5mb3JtYXRpb24u
aW5zaWRlRml4ZWRQb3NpdGlvbgorICAgICAgICAgICAgZm9udFNpemU6X2Fzc2lzdGVkTm9kZUlu
Zm9ybWF0aW9uLm5vZGVGb250U2l6ZQorICAgICAgICAgICAgbWluaW11bVNjYWxlOl9hc3Npc3Rl
ZE5vZGVJbmZvcm1hdGlvbi5taW5pbXVtU2NhbGVGYWN0b3IKKyAgICAgICAgICAgIG1heGltdW1T
Y2FsZTpfYXNzaXN0ZWROb2RlSW5mb3JtYXRpb24ubWF4aW11bVNjYWxlRmFjdG9ySWdub3JpbmdB
bHdheXNTY2FsYWJsZQorICAgICAgICAgICAgYWxsb3dTY2FsaW5nOl9hc3Npc3RlZE5vZGVJbmZv
cm1hdGlvbi5hbGxvd3NVc2VyU2NhbGluZ0lnbm9yaW5nQWx3YXlzU2NhbGFibGUgJiYgIWN1cnJl
bnRVc2VySW50ZXJmYWNlSWRpb21Jc1BhZCgpCisgICAgICAgICAgICBmb3JjZVNjcm9sbDooX2Fz
c2lzdGVkTm9kZUluZm9ybWF0aW9uLmlucHV0TW9kZSA9PSBJbnB1dE1vZGU6Ok5vbmUpID8gIWN1
cnJlbnRVc2VySW50ZXJmYWNlSWRpb21Jc1BhZCgpIDogW3NlbGYgcmVxdWlyZXNBY2Nlc3NvcnlW
aWV3XV07CisgICAgfQogCiAgICAgX2RpZEFjY2Vzc29yeVRhYkluaXRpYXRlRm9jdXMgPSBOTzsK
ICAgICBbc2VsZiBfZW5zdXJlRm9ybUFjY2Vzc29yeVZpZXddOwpAQCAtMTc0Niw2ICsxNzQ4LDkg
QEAgc3RhdGljIGlubGluZSBib29sIGlzU2FtZVBhaXIoVUlHZXN0dXJlUmVjb2duaXplciAqYSwg
VUlHZXN0dXJlUmVjb2duaXplciAqYiwgVUkKICAgICBpZiAoIV93ZWJWaWV3LmNvbmZpZ3VyYXRp
b24uX3RleHRJbnRlcmFjdGlvbkdlc3R1cmVzRW5hYmxlZCkKICAgICAgICAgcmV0dXJuIE5POwog
CisgICAgaWYgKHNlbGYuc3VwcHJlc3NBc3Npc3RhbnRTZWxlY3Rpb25WaWV3KQorICAgICAgICBy
ZXR1cm4gTk87CisKICAgICBpZiAoX2luc3BlY3Rvck5vZGVTZWFyY2hFbmFibGVkKQogICAgICAg
ICByZXR1cm4gTk87CiAKQEAgLTE3NjksNiArMTc3NCw5IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBp
c1NhbWVQYWlyKFVJR2VzdHVyZVJlY29nbml6ZXIgKmEsIFVJR2VzdHVyZVJlY29nbml6ZXIgKmIs
IFVJCiAgICAgaWYgKCFfd2ViVmlldy5jb25maWd1cmF0aW9uLl90ZXh0SW50ZXJhY3Rpb25HZXN0
dXJlc0VuYWJsZWQpCiAgICAgICAgIHJldHVybiBOTzsKIAorICAgIGlmIChzZWxmLnN1cHByZXNz
QXNzaXN0YW50U2VsZWN0aW9uVmlldykKKyAgICAgICAgcmV0dXJuIE5POworCiAgICAgSW50ZXJh
Y3Rpb25JbmZvcm1hdGlvblJlcXVlc3QgcmVxdWVzdChyb3VuZGVkSW50UG9pbnQocG9pbnQpKTsK
ICAgICBpZiAoIVtzZWxmIGVuc3VyZVBvc2l0aW9uSW5mb3JtYXRpb25Jc1VwVG9EYXRlOnJlcXVl
c3RdKQogICAgICAgICByZXR1cm4gTk87CkBAIC0xNzgwLDYgKzE3ODgsOSBAQCBzdGF0aWMgaW5s
aW5lIGJvb2wgaXNTYW1lUGFpcihVSUdlc3R1cmVSZWNvZ25pemVyICphLCBVSUdlc3R1cmVSZWNv
Z25pemVyICpiLCBVSQogICAgIGlmICghX3dlYlZpZXcuY29uZmlndXJhdGlvbi5fdGV4dEludGVy
YWN0aW9uR2VzdHVyZXNFbmFibGVkKQogICAgICAgICByZXR1cm4gTk87CiAKKyAgICBpZiAoc2Vs
Zi5zdXBwcmVzc0Fzc2lzdGFudFNlbGVjdGlvblZpZXcpCisgICAgICAgIHJldHVybiBOTzsKKwog
ICAgIEludGVyYWN0aW9uSW5mb3JtYXRpb25SZXF1ZXN0IHJlcXVlc3Qocm91bmRlZEludFBvaW50
KHBvaW50KSk7CiAgICAgaWYgKCFbc2VsZiBlbnN1cmVQb3NpdGlvbkluZm9ybWF0aW9uSXNVcFRv
RGF0ZTpyZXF1ZXN0XSkKICAgICAgICAgcmV0dXJuIE5POwpAQCAtNDI2Nyw2ICs0Mjc4LDggQEAg
c3RhdGljIGJvb2wgaXNBc3Npc3RhYmxlSW5wdXRUeXBlKElucHV0VHlwZSB0eXBlKQogICAgIGlm
IChbaW5wdXREZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3OmRl
Y2lkZVBvbGljeUZvckZvY3VzZWRFbGVtZW50OildKQogICAgICAgICBzdGFydElucHV0U2Vzc2lv
blBvbGljeSA9IFtpbnB1dERlbGVnYXRlIF93ZWJWaWV3Ol93ZWJWaWV3IGRlY2lkZVBvbGljeUZv
ckZvY3VzZWRFbGVtZW50OmZvY3VzZWRFbGVtZW50SW5mby5nZXQoKV07CiAKKyAgICBzZWxmLnN1
cHByZXNzQXNzaXN0YW50U2VsZWN0aW9uVmlldyA9IGluZm9ybWF0aW9uLmVsZW1lbnRJc1RyYW5z
cGFyZW50OworCiAgICAgc3dpdGNoIChzdGFydElucHV0U2Vzc2lvblBvbGljeSkgewogICAgIGNh
c2UgX1dLRm9jdXNTdGFydHNJbnB1dFNlc3Npb25Qb2xpY3lBdXRvOgogICAgICAgICAvLyBUaGUg
ZGVmYXVsdCBiZWhhdmlvciBpcyB0byBhbGxvdyBub2RlIGFzc2lzdGFuY2UgaWYgdGhlIHVzZXIg
aXMgaW50ZXJhY3RpbmcuCkBAIC00NDA5LDYgKzQ0MjIsOCBAQCBzdGF0aWMgYm9vbCBpc0Fzc2lz
dGFibGVJbnB1dFR5cGUoSW5wdXRUeXBlIHR5cGUpCiAgICAgICAgIFtfd2ViVmlldyBfc2NoZWR1
bGVWaXNpYmxlQ29udGVudFJlY3RVcGRhdGVdOwogCiAgICAgW193ZWJWaWV3IGRpZEVuZEZvcm1D
b250cm9sSW50ZXJhY3Rpb25dOworCisgICAgc2VsZi5zdXBwcmVzc0Fzc2lzdGFudFNlbGVjdGlv
blZpZXcgPSBOTzsKIH0KIAogLSAodm9pZCl1cGRhdGVDdXJyZW50QXNzaXN0ZWROb2RlSW5mb3Jt
YXRpb246KEZ1bmN0aW9uPHZvaWQoYm9vbCBkaWRVcGRhdGUpPiYmKWNhbGxiYWNrCkBAIC00NzQx
LDkgKzQ3NTYsMTQgQEAgc3RhdGljIGJvb2wgaXNBc3Npc3RhYmxlSW5wdXRUeXBlKElucHV0VHlw
ZSB0eXBlKQogCiAtICh2b2lkKV91cGRhdGVDaGFuZ2VkU2VsZWN0aW9uOihCT09MKWZvcmNlCiB7
Ci0gICAgaWYgKCFfc2VsZWN0aW9uTmVlZHNVcGRhdGUgfHwgX3BhZ2UtPmVkaXRvclN0YXRlKCku
aXNNaXNzaW5nUG9zdExheW91dERhdGEpCisgICAgYXV0byYgc3RhdGUgPSBfcGFnZS0+ZWRpdG9y
U3RhdGUoKTsKKyAgICBpZiAoc3RhdGUuaXNNaXNzaW5nUG9zdExheW91dERhdGEpCiAgICAgICAg
IHJldHVybjsKIAorICAgIGF1dG8mIHBvc3RMYXlvdXREYXRhID0gc3RhdGUucG9zdExheW91dERh
dGEoKTsKKyAgICBpZiAoaGFzQXNzaXN0ZWROb2RlKF9hc3Npc3RlZE5vZGVJbmZvcm1hdGlvbikp
CisgICAgICAgIHNlbGYuc3VwcHJlc3NBc3Npc3RhbnRTZWxlY3Rpb25WaWV3ID0gcG9zdExheW91
dERhdGEuZWxlbWVudElzVHJhbnNwYXJlbnQ7CisKICAgICBXS1NlbGVjdGlvbkRyYXdpbmdJbmZv
IHNlbGVjdGlvbkRyYXdpbmdJbmZvKF9wYWdlLT5lZGl0b3JTdGF0ZSgpKTsKICAgICBpZiAoZm9y
Y2UgfHwgc2VsZWN0aW9uRHJhd2luZ0luZm8gIT0gX2xhc3RTZWxlY3Rpb25EcmF3aW5nSW5mbykg
ewogICAgICAgICBMT0dfV0lUSF9TVFJFQU0oU2VsZWN0aW9uLCBzdHJlYW0gPDwgIl91cGRhdGVD
aGFuZ2VkU2VsZWN0aW9uICIgPDwgc2VsZWN0aW9uRHJhd2luZ0luZm8pOwpAQCAtNDc2NCw4ICs0
Nzg0LDcgQEAgc3RhdGljIGJvb2wgaXNBc3Npc3RhYmxlSW5wdXRUeXBlKElucHV0VHlwZSB0eXBl
KQogICAgICAgICB9CiAgICAgfQogCi0gICAgYXV0byYgc3RhdGUgPSBfcGFnZS0+ZWRpdG9yU3Rh
dGUoKTsKLSAgICBpZiAoIXN0YXRlLmlzTWlzc2luZ1Bvc3RMYXlvdXREYXRhICYmIHN0YXRlLnBv
c3RMYXlvdXREYXRhKCkuaXNTdGFibGVTdGF0ZVVwZGF0ZSAmJiBfbmVlZHNEZWZlcnJlZEVuZFNj
cm9sbGluZ1NlbGVjdGlvblVwZGF0ZSAmJiBfcGFnZS0+aW5TdGFibGVTdGF0ZSgpKSB7CisgICAg
aWYgKHBvc3RMYXlvdXREYXRhLmlzU3RhYmxlU3RhdGVVcGRhdGUgJiYgX25lZWRzRGVmZXJyZWRF
bmRTY3JvbGxpbmdTZWxlY3Rpb25VcGRhdGUgJiYgX3BhZ2UtPmluU3RhYmxlU3RhdGUoKSkgewog
ICAgICAgICBbW3NlbGYgc2VsZWN0aW9uSW50ZXJhY3Rpb25Bc3Npc3RhbnRdIHNob3dTZWxlY3Rp
b25Db21tYW5kc107CiAKICAgICAgICAgaWYgKCFzZWxmLnN1cHByZXNzQXNzaXN0YW50U2VsZWN0
aW9uVmlldykKQEAgLTQ3NzcsNiArNDc5NiwxMSBAQCBzdGF0aWMgYm9vbCBpc0Fzc2lzdGFibGVJ
bnB1dFR5cGUoSW5wdXRUeXBlIHR5cGUpCiAgICAgfQogfQogCistIChCT09MKV9zaG91bGRTdXBw
cmVzc1NlbGVjdGlvbkNvbW1hbmRzCit7CisgICAgcmV0dXJuIF9zdXBwcmVzc0Fzc2lzdGFudFNl
bGVjdGlvblZpZXc7Cit9CisKIC0gKEJPT0wpc3VwcHJlc3NBc3Npc3RhbnRTZWxlY3Rpb25WaWV3
CiB7CiAgICAgcmV0dXJuIF9zdXBwcmVzc0Fzc2lzdGFudFNlbGVjdGlvblZpZXc7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbSBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCmluZGV4
IGVmM2E1ZjNmNTk0ZjVjZDYyZTJkNWJkYzk4NTM2M2YxYmE3YWFhNWUuLmVlMDgyYzRhOWY0YTQ0
M2UzMGIyNmRlNmZkMDY0YjJmYWJkMWU1NjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCkBAIC0yNDAsNiArMjQwLDcgQEAgdm9p
ZCBXZWJQYWdlOjpwbGF0Zm9ybUVkaXRvclN0YXRlKEZyYW1lJiBmcmFtZSwgRWRpdG9yU3RhdGUm
IHJlc3VsdCwgSW5jbHVkZVBvc3QKICAgICAgICAgaWYgKG1fYXNzaXN0ZWROb2RlICYmIG1fYXNz
aXN0ZWROb2RlLT5yZW5kZXJlcigpKSB7CiAgICAgICAgICAgICBwb3N0TGF5b3V0RGF0YS5zZWxl
Y3Rpb25DbGlwUmVjdCA9IHZpZXctPmNvbnRlbnRzVG9Sb290VmlldyhtX2Fzc2lzdGVkTm9kZS0+
cmVuZGVyZXIoKS0+YWJzb2x1dGVCb3VuZGluZ0JveFJlY3QoKSk7CiAgICAgICAgICAgICBwb3N0
TGF5b3V0RGF0YS5jYXJldENvbG9yID0gbV9hc3Npc3RlZE5vZGUtPnJlbmRlcmVyKCktPnN0eWxl
KCkuY2FyZXRDb2xvcigpOworICAgICAgICAgICAgcG9zdExheW91dERhdGEuZWxlbWVudElzVHJh
bnNwYXJlbnQgPSBtX2Fzc2lzdGVkTm9kZS0+cmVuZGVyZXIoKS0+aXNUcmFuc3BhcmVudFJlc3Bl
Y3RpbmdQYXJlbnRGcmFtZXMoKTsKICAgICAgICAgfQogICAgICAgICBjb21wdXRlRWRpdGFibGVS
b290SGFzQ29udGVudEFuZFBsYWluVGV4dChzZWxlY3Rpb24sIHBvc3RMYXlvdXREYXRhKTsKICAg
ICB9CkBAIC0yMzM3LDYgKzIzMzgsNyBAQCB2b2lkIFdlYlBhZ2U6OmdldEFzc2lzdGVkTm9kZUlu
Zm9ybWF0aW9uKEFzc2lzdGVkTm9kZUluZm9ybWF0aW9uJiBpbmZvcm1hdGlvbikKICAgICAgICAg
RnJhbWUmIGVsZW1lbnRGcmFtZSA9IG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9y
TWFpbkZyYW1lKCk7CiAgICAgICAgIGluZm9ybWF0aW9uLmVsZW1lbnRSZWN0ID0gZWxlbWVudFJl
Y3RJblJvb3RWaWV3Q29vcmRpbmF0ZXMoKm1fYXNzaXN0ZWROb2RlLCBlbGVtZW50RnJhbWUpOwog
ICAgICAgICBpbmZvcm1hdGlvbi5ub2RlRm9udFNpemUgPSByZW5kZXJlci0+c3R5bGUoKS5mb250
RGVzY3JpcHRpb24oKS5jb21wdXRlZFNpemUoKTsKKyAgICAgICAgaW5mb3JtYXRpb24uZWxlbWVu
dElzVHJhbnNwYXJlbnQgPSByZW5kZXJlci0+aXNUcmFuc3BhcmVudFJlc3BlY3RpbmdQYXJlbnRG
cmFtZXMoKTsKIAogICAgICAgICBib29sIGluRml4ZWQgPSBmYWxzZTsKICAgICAgICAgcmVuZGVy
ZXItPmxvY2FsVG9Db250YWluZXJQb2ludChGbG9hdFBvaW50KCksIG51bGxwdHIsIFVzZVRyYW5z
Zm9ybXMsICZpbkZpeGVkKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0No
YW5nZUxvZwppbmRleCBiODA2NTRjY2FkNDg3NjJmMDE4NDczYjIxZTU0ZmNhMGVmYWExNGRhLi5k
OWIwZmI0NDFiMWUwNGMwYmEyZTJjNTQ1NDBhOTFhNTcwOWYwODk2IDEwMDY0NAotLS0gYS9Ub29s
cy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzggQEAKKzIwMTgt
MTEtMTIgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAg
W2lPU10gRG8gbm90IHNob3cgc2VsZWN0aW9uIFVJIGZvciBlZGl0YWJsZSBlbGVtZW50cyB3aXRo
IG9wYWNpdHkgbmVhciB6ZXJvCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xOTE0NDIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQ1OTU4NjI1PgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhIGNvdXBs
ZSBvZiBuZXcgdGVzdGluZyBoZWxwZXJzIHRvIFVJU2NyaXB0Q29udHJvbGxlci4KKworICAgICAg
ICAqIFRlc3RSdW5uZXJTaGFyZWQvVUlTY3JpcHRDb250ZXh0L0JpbmRpbmdzL1VJU2NyaXB0Q29u
dHJvbGxlci5pZGw6CisgICAgICAgICogVGVzdFJ1bm5lclNoYXJlZC9VSVNjcmlwdENvbnRleHQv
VUlTY3JpcHRDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdUUjo6VUlTY3JpcHRDb250cm9sbGVy
Ojp0ZXh0U2VsZWN0aW9uUmFuZ2VSZWN0cyBjb25zdCk6CisgICAgICAgIChXVFI6OlVJU2NyaXB0
Q29udHJvbGxlcjo6c2VsZWN0aW9uQ2FyZXRWaWV3UmVjdCBjb25zdCk6CisgICAgICAgIChXVFI6
OlVJU2NyaXB0Q29udHJvbGxlcjo6c2VsZWN0aW9uUmFuZ2VWaWV3UmVjdHMgY29uc3QpOgorICAg
ICAgICAqIFRlc3RSdW5uZXJTaGFyZWQvVUlTY3JpcHRDb250ZXh0L1VJU2NyaXB0Q29udHJvbGxl
ci5oOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvaW9zL1VJU2NyaXB0Q29udHJvbGxlcklP
Uy5tbToKKyAgICAgICAgKFdUUjo6VUlTY3JpcHRDb250cm9sbGVyOjp0ZXh0U2VsZWN0aW9uUmFu
Z2VSZWN0cyBjb25zdCk6CisKKyAgICAgICAgUmVuYW1lIGBzZWxlY3Rpb25SYW5nZVZpZXdSZWN0
c2AgdG8gYHRleHRTZWxlY3Rpb25SYW5nZVJlY3RzYC4gVGhpcyBhbGxvd3MgdXMgdG8gZHJhdyBh
IGRpc3RpbmN0aW9uIGJldHdlZW4KKyAgICAgICAgYHRleHRTZWxlY3Rpb25SYW5nZVJlY3RzYC9g
dGV4dFNlbGVjdGlvbkNhcmV0UmVjdGAsIHdoaWNoIHJldHJpZXZlIGluZm9ybWF0aW9uIGFib3V0
IHNlbGVjdGlvbiByZWN0cyBrbm93bgorICAgICAgICB0byB0aGUgdGV4dCBpbnRlcmFjdGlvbiBh
c3Npc3RhbnQsIGFuZCBgc2VsZWN0aW9uQ2FyZXRWaWV3UmVjdGAvYHNlbGVjdGlvblJhbmdlVmll
d1JlY3RzYCwgd2hpY2ggcmV0cmlldmUgdGhlCisgICAgICAgIGFjdHVhbCBmcmFtZXMgb2YgdGhl
IHNlbGVjdGlvbiB2aWV3cyB1c2VkIHRvIGRyYXcgb3ZlcmxhaWQgc2VsZWN0aW9uIFVJLiBUaGlz
IGRpZmZlcmVuY2UgaXMgaW1wb3J0YW50IGluIHRoZQorICAgICAgICBuZXcgbGF5b3V0IHRlc3Rz
IGFkZGVkIGluIHRoaXMgcGF0Y2gsIHdoaWNoIG9ubHkgc3VwcHJlc3MgY2FyZXQgcmVuZGVyaW5n
IChpLmUuIHNlbGVjdGlvbiB2aWV3cyByZW1haW4gaGlkZGVuKS4KKworICAgICAgICBBbHNvLCBk
cml2ZS1ieSBmaXggYSBsZWFrZWQgYE5TTXV0YWJsZUFycmF5YC4KKworICAgICAgICAoV1RSOjpV
SVNjcmlwdENvbnRyb2xsZXI6OnNlbGVjdGlvblN0YXJ0R3JhYmJlclZpZXdSZWN0IGNvbnN0KToK
KyAgICAgICAgKFdUUjo6VUlTY3JpcHRDb250cm9sbGVyOjpzZWxlY3Rpb25FbmRHcmFiYmVyVmll
d1JlY3QgY29uc3QpOgorICAgICAgICAoV1RSOjpVSVNjcmlwdENvbnRyb2xsZXI6OnNlbGVjdGlv
bkNhcmV0Vmlld1JlY3QgY29uc3QpOgorICAgICAgICAoV1RSOjpVSVNjcmlwdENvbnRyb2xsZXI6
OnNlbGVjdGlvblJhbmdlVmlld1JlY3RzIGNvbnN0KToKKworICAgICAgICBUZXN0aW5nIGhlbHBl
cnMgdG8gZ3JhYiB0aGUgZnJhbWVzIG9mIGNhcmV0IGFuZCBzZWxlY3Rpb24gdmlld3MsIGluIFdL
Q29udGVudFZpZXcncyBjb29yZGluYXRlIHNwYWNlLiBUaGVzZQorICAgICAgICByZWN0cyBhcmUg
YWxzbyBjbGFtcGVkIHRvIFdLQ29udGVudFZpZXcgYm91bmRzLgorCiAyMDE4LTExLTExICBGdWpp
aSBIaXJvbm9yaSAgPEhpcm9ub3JpLkZ1amlpQHNvbnkuY29tPgogCiAgICAgICAgIHJ1bi1iaW5k
aW5ncy10ZXN0cyBpcyB0aW1pbmcgb3V0IGluIHNvbWUgV2luQ2Fpcm8gYm90cwpkaWZmIC0tZ2l0
IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvaW9zL1VJU2NyaXB0Q29udHJvbGxlcklPUy5tbSBiL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL2lvcy9VSVNjcmlwdENvbnRyb2xsZXJJT1MubW0KaW5kZXggOTAx
MTA0YWNiMDg3Yzc3ZjAxYzhmMjZkYTEwMjI5Mjg3ZWJkOGIwMy4uMWZlMTQwOWFiMTk5NWY0OTll
MmQ4ZTg4NGRjYjVjNjFjMGQ2Y2MwNiAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUv
aW9zL1VJU2NyaXB0Q29udHJvbGxlcklPUy5tbQorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9p
b3MvVUlTY3JpcHRDb250cm9sbGVySU9TLm1tCkBAIC0zMDksNyArMzA5LDcgQEAgdm9pZCBVSVNj
cmlwdENvbnRyb2xsZXI6OnBsYXRmb3JtQ2xlYXJBbGxDYWxsYmFja3MoKQogewogfQogCi1KU09i
amVjdFJlZiBVSVNjcmlwdENvbnRyb2xsZXI6OnNlbGVjdGlvblJhbmdlVmlld1JlY3RzKCkgY29u
c3QKK0pTT2JqZWN0UmVmIFVJU2NyaXB0Q29udHJvbGxlcjo6dGV4dFNlbGVjdGlvblJhbmdlUmVj
dHMoKSBjb25zdAogewogICAgIHJldHVybiBudWxscHRyOwogfQpAQCAtMzg5LDYgKzM4OSwxNiBA
QCBKU09iamVjdFJlZiBVSVNjcmlwdENvbnRyb2xsZXI6OnNlbGVjdGlvbkVuZEdyYWJiZXJWaWV3
UmVjdCgpIGNvbnN0CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKK0pTT2JqZWN0UmVmIFVJU2Ny
aXB0Q29udHJvbGxlcjo6c2VsZWN0aW9uQ2FyZXRWaWV3UmVjdCgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIG51bGxwdHI7Cit9CisKK0pTT2JqZWN0UmVmIFVJU2NyaXB0Q29udHJvbGxlcjo6c2VsZWN0
aW9uUmFuZ2VWaWV3UmVjdHMoKSBjb25zdAoreworICAgIHJldHVybiBudWxscHRyOworfQorCiBi
b29sIFVJU2NyaXB0Q29udHJvbGxlcjo6aXNTaG93aW5nRGF0YUxpc3RTdWdnZXN0aW9ucygpIGNv
bnN0CiB7CiAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFJ1bm5lclNo
YXJlZC9VSVNjcmlwdENvbnRleHQvQmluZGluZ3MvVUlTY3JpcHRDb250cm9sbGVyLmlkbCBiL1Rv
b2xzL1Rlc3RSdW5uZXJTaGFyZWQvVUlTY3JpcHRDb250ZXh0L0JpbmRpbmdzL1VJU2NyaXB0Q29u
dHJvbGxlci5pZGwKaW5kZXggYjMzNzVhZGU0MDFkMTExMDVmNGUwODdiYTQ5ZjFiMWFjOThjMjA3
ZC4uNjdkMjVhM2UxNDBiNzYxOWU0NjVhMmFmNWMyMzdlY2JhMjkwMzQ4OCAxMDA2NDQKLS0tIGEv
VG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9VSVNjcmlwdENvbnRleHQvQmluZGluZ3MvVUlTY3JpcHRD
b250cm9sbGVyLmlkbAorKysgYi9Ub29scy9UZXN0UnVubmVyU2hhcmVkL1VJU2NyaXB0Q29udGV4
dC9CaW5kaW5ncy9VSVNjcmlwdENvbnRyb2xsZXIuaWRsCkBAIC0yMzgsMTAgKzIzOCwxMiBAQCBp
bnRlcmZhY2UgVUlTY3JpcHRDb250cm9sbGVyIHsKIAogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBv
YmplY3QgY29udGVudFZpc2libGVSZWN0OyAvLyBSZXR1cm5lZCBvYmplY3QgaGFzICdsZWZ0Jywg
J3RvcCcsICd3aWR0aCcsICdoZWlnaHQnIHByb3BlcnRpZXMuCiAKLSAgICByZWFkb25seSBhdHRy
aWJ1dGUgb2JqZWN0IHNlbGVjdGlvblJhbmdlVmlld1JlY3RzOyAvLyBBbiBhcnJheSBvZiBvYmpl
Y3RzIHdpdGggJ2xlZnQnLCAndG9wJywgJ3dpZHRoJywgYW5kICdoZWlnaHQnIHByb3BlcnRpZXMu
CisgICAgcmVhZG9ubHkgYXR0cmlidXRlIG9iamVjdCB0ZXh0U2VsZWN0aW9uUmFuZ2VSZWN0czsg
Ly8gQW4gYXJyYXkgb2Ygb2JqZWN0cyB3aXRoICdsZWZ0JywgJ3RvcCcsICd3aWR0aCcsIGFuZCAn
aGVpZ2h0JyBwcm9wZXJ0aWVzLgogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBvYmplY3QgdGV4dFNl
bGVjdGlvbkNhcmV0UmVjdDsgLy8gQW4gb2JqZWN0IHdpdGggJ2xlZnQnLCAndG9wJywgJ3dpZHRo
JywgJ2hlaWdodCcgcHJvcGVydGllcy4KICAgICByZWFkb25seSBhdHRyaWJ1dGUgb2JqZWN0IHNl
bGVjdGlvblN0YXJ0R3JhYmJlclZpZXdSZWN0OwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBvYmpl
Y3Qgc2VsZWN0aW9uRW5kR3JhYmJlclZpZXdSZWN0OworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBv
YmplY3Qgc2VsZWN0aW9uQ2FyZXRWaWV3UmVjdDsKKyAgICByZWFkb25seSBhdHRyaWJ1dGUgb2Jq
ZWN0IHNlbGVjdGlvblJhbmdlVmlld1JlY3RzOwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBvYmpl
Y3QgY2FsZW5kYXJUeXBlOwogICAgIHZvaWQgc2V0RGVmYXVsdENhbGVuZGFyVHlwZShET01TdHJp
bmcgY2FsZW5kYXJJZGVudGlmaWVyKTsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgb2JqZWN0IGlu
cHV0Vmlld0JvdW5kczsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvVUlTY3Jp
cHRDb250ZXh0L1VJU2NyaXB0Q29udHJvbGxlci5jcHAgYi9Ub29scy9UZXN0UnVubmVyU2hhcmVk
L1VJU2NyaXB0Q29udGV4dC9VSVNjcmlwdENvbnRyb2xsZXIuY3BwCmluZGV4IDc0MTJmZjJhZWY5
ZjAzZGY1YmIwM2E4MjRiN2YzZWMzODdhOTVlNmQuLjljMTFkYTk5ZWFjYjY0YzBjNzhkZjgzZTRi
YjE5MWEwYmUwYmQ5MWEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvVUlTY3Jp
cHRDb250ZXh0L1VJU2NyaXB0Q29udHJvbGxlci5jcHAKKysrIGIvVG9vbHMvVGVzdFJ1bm5lclNo
YXJlZC9VSVNjcmlwdENvbnRleHQvVUlTY3JpcHRDb250cm9sbGVyLmNwcApAQCAtMzg5LDcgKzM4
OSw3IEBAIEpTT2JqZWN0UmVmIFVJU2NyaXB0Q29udHJvbGxlcjo6Y29udGVudFZpc2libGVSZWN0
KCkgY29uc3QKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotSlNPYmplY3RSZWYgVUlTY3JpcHRD
b250cm9sbGVyOjpzZWxlY3Rpb25SYW5nZVZpZXdSZWN0cygpIGNvbnN0CitKU09iamVjdFJlZiBV
SVNjcmlwdENvbnRyb2xsZXI6OnRleHRTZWxlY3Rpb25SYW5nZVJlY3RzKCkgY29uc3QKIHsKICAg
ICByZXR1cm4gbnVsbHB0cjsKIH0KQEAgLTQwNCw2ICs0MDQsMTYgQEAgSlNPYmplY3RSZWYgVUlT
Y3JpcHRDb250cm9sbGVyOjpzZWxlY3Rpb25TdGFydEdyYWJiZXJWaWV3UmVjdCgpIGNvbnN0CiAg
ICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKK0pTT2JqZWN0UmVmIFVJU2NyaXB0Q29udHJvbGxlcjo6
c2VsZWN0aW9uQ2FyZXRWaWV3UmVjdCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9
CisKK0pTT2JqZWN0UmVmIFVJU2NyaXB0Q29udHJvbGxlcjo6c2VsZWN0aW9uUmFuZ2VWaWV3UmVj
dHMoKSBjb25zdAoreworICAgIHJldHVybiBudWxscHRyOworfQorCiBKU09iamVjdFJlZiBVSVNj
cmlwdENvbnRyb2xsZXI6OnNlbGVjdGlvbkVuZEdyYWJiZXJWaWV3UmVjdCgpIGNvbnN0CiB7CiAg
ICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0UnVubmVyU2hhcmVkL1VJ
U2NyaXB0Q29udGV4dC9VSVNjcmlwdENvbnRyb2xsZXIuaCBiL1Rvb2xzL1Rlc3RSdW5uZXJTaGFy
ZWQvVUlTY3JpcHRDb250ZXh0L1VJU2NyaXB0Q29udHJvbGxlci5oCmluZGV4IDllOTM4ZGI2YWZh
ZjA5MWJiZTJiN2U2NjBhNWNhMDA4MmY2MDE5ODUuLjRjMGUzZjYwZDNmYzAyNjEwZDg5NzU4MTU5
N2IyZjlhYWY1ZDY1MzkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvVUlTY3Jp
cHRDb250ZXh0L1VJU2NyaXB0Q29udHJvbGxlci5oCisrKyBiL1Rvb2xzL1Rlc3RSdW5uZXJTaGFy
ZWQvVUlTY3JpcHRDb250ZXh0L1VJU2NyaXB0Q29udHJvbGxlci5oCkBAIC0xNTksMTAgKzE1OSwx
MiBAQCBwdWJsaWM6CiAKICAgICBKU09iamVjdFJlZiBjb250ZW50VmlzaWJsZVJlY3QoKSBjb25z
dDsKICAgICAKLSAgICBKU09iamVjdFJlZiBzZWxlY3Rpb25SYW5nZVZpZXdSZWN0cygpIGNvbnN0
OworICAgIEpTT2JqZWN0UmVmIHRleHRTZWxlY3Rpb25SYW5nZVJlY3RzKCkgY29uc3Q7CiAgICAg
SlNPYmplY3RSZWYgdGV4dFNlbGVjdGlvbkNhcmV0UmVjdCgpIGNvbnN0OwogICAgIEpTT2JqZWN0
UmVmIHNlbGVjdGlvblN0YXJ0R3JhYmJlclZpZXdSZWN0KCkgY29uc3Q7CiAgICAgSlNPYmplY3RS
ZWYgc2VsZWN0aW9uRW5kR3JhYmJlclZpZXdSZWN0KCkgY29uc3Q7CisgICAgSlNPYmplY3RSZWYg
c2VsZWN0aW9uQ2FyZXRWaWV3UmVjdCgpIGNvbnN0OworICAgIEpTT2JqZWN0UmVmIHNlbGVjdGlv
blJhbmdlVmlld1JlY3RzKCkgY29uc3Q7CiAgICAgSlNPYmplY3RSZWYgY2FsZW5kYXJUeXBlKCkg
Y29uc3Q7CiAgICAgdm9pZCBzZXREZWZhdWx0Q2FsZW5kYXJUeXBlKEpTU3RyaW5nUmVmIGNhbGVu
ZGFySWRlbnRpZmllcik7CiAgICAgSlNPYmplY3RSZWYgaW5wdXRWaWV3Qm91bmRzKCkgY29uc3Q7
CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2lvcy9VSVNjcmlwdENvbnRyb2xs
ZXJJT1MubW0gYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2lvcy9VSVNjcmlwdENvbnRyb2xsZXJJ
T1MubW0KaW5kZXggZjUyZjlhMzU3ODZjOWQwOTg2NDVjZDBmMjAwMjgzOGZmN2VlMTA2Ny4uOGM5
MTNmYWZjYWQwYTFjOGE5NWU0NTdmMGJhMjg4YWFmYjZkOGQ2NiAxMDA2NDQKLS0tIGEvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9pb3MvVUlTY3JpcHRDb250cm9sbGVySU9TLm1tCisrKyBiL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvaW9zL1VJU2NyaXB0Q29udHJvbGxlcklPUy5tbQpAQCAtNTA2LDE0
ICs1MDYsMTQgQEAgSlNPYmplY3RSZWYgVUlTY3JpcHRDb250cm9sbGVyOjpjb250ZW50VmlzaWJs
ZVJlY3QoKSBjb25zdAogICAgIHJldHVybiBtX2NvbnRleHQtPm9iamVjdEZyb21SZWN0KHJlY3Qp
OwogfQogCi1KU09iamVjdFJlZiBVSVNjcmlwdENvbnRyb2xsZXI6OnNlbGVjdGlvblJhbmdlVmll
d1JlY3RzKCkgY29uc3QKK0pTT2JqZWN0UmVmIFVJU2NyaXB0Q29udHJvbGxlcjo6dGV4dFNlbGVj
dGlvblJhbmdlUmVjdHMoKSBjb25zdAogewotICAgIE5TTXV0YWJsZUFycmF5ICpzZWxlY3Rpb25S
ZWN0cyA9IFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdOworICAgIGF1dG8gc2VsZWN0aW9u
UmVjdHMgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdKTsKICAgICBOU0Fy
cmF5ICpyZWN0cyA9IFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS5tYWluV2ViVmlldygpLT5w
bGF0Zm9ybVZpZXcoKS5fdWlUZXh0U2VsZWN0aW9uUmVjdHM7CiAgICAgZm9yIChOU1ZhbHVlICpy
ZWN0IGluIHJlY3RzKQotICAgICAgICBbc2VsZWN0aW9uUmVjdHMgYWRkT2JqZWN0OnRvTlNEaWN0
aW9uYXJ5KFtyZWN0IENHUmVjdFZhbHVlXSldOworICAgICAgICBbc2VsZWN0aW9uUmVjdHMgYWRk
T2JqZWN0OnRvTlNEaWN0aW9uYXJ5KHJlY3QuQ0dSZWN0VmFsdWUpXTsKIAotICAgIHJldHVybiBK
U1ZhbHVlVG9PYmplY3QobV9jb250ZXh0LT5qc0NvbnRleHQoKSwgW0pTVmFsdWUgdmFsdWVXaXRo
T2JqZWN0OnNlbGVjdGlvblJlY3RzIGluQ29udGV4dDpbSlNDb250ZXh0IGNvbnRleHRXaXRoSlNH
bG9iYWxDb250ZXh0UmVmOm1fY29udGV4dC0+anNDb250ZXh0KCldXS5KU1ZhbHVlUmVmLCBudWxs
cHRyKTsKKyAgICByZXR1cm4gSlNWYWx1ZVRvT2JqZWN0KG1fY29udGV4dC0+anNDb250ZXh0KCks
IFtKU1ZhbHVlIHZhbHVlV2l0aE9iamVjdDpzZWxlY3Rpb25SZWN0cy5nZXQoKSBpbkNvbnRleHQ6
W0pTQ29udGV4dCBjb250ZXh0V2l0aEpTR2xvYmFsQ29udGV4dFJlZjptX2NvbnRleHQtPmpzQ29u
dGV4dCgpXV0uSlNWYWx1ZVJlZiwgbnVsbHB0cik7CiB9CiAKIEpTT2JqZWN0UmVmIFVJU2NyaXB0
Q29udHJvbGxlcjo6dGV4dFNlbGVjdGlvbkNhcmV0UmVjdCgpIGNvbnN0CkBAIC01MjcsNiArNTI3
LDcgQEAgSlNPYmplY3RSZWYgVUlTY3JpcHRDb250cm9sbGVyOjpzZWxlY3Rpb25TdGFydEdyYWJi
ZXJWaWV3UmVjdCgpIGNvbnN0CiAgICAgVUlWaWV3ICpjb250ZW50VmlldyA9IFt3ZWJWaWV3IHZh
bHVlRm9yS2V5UGF0aDpAIl9jdXJyZW50Q29udGVudFZpZXciXTsKICAgICBVSVZpZXcgKnNlbGVj
dGlvblJhbmdlVmlldyA9IFtjb250ZW50VmlldyB2YWx1ZUZvcktleVBhdGg6QCJpbnRlcmFjdGlv
bkFzc2lzdGFudC5zZWxlY3Rpb25WaWV3LnJhbmdlVmlldyJdOwogICAgIGF1dG8gZnJhbWVJbkNv
bnRlbnRDb29yZGluYXRlcyA9IFtzZWxlY3Rpb25SYW5nZVZpZXcgY29udmVydFJlY3Q6W1tzZWxl
Y3Rpb25SYW5nZVZpZXcgdmFsdWVGb3JLZXlQYXRoOkAic3RhcnRHcmFiYmVyIl0gZnJhbWVdIHRv
Vmlldzpjb250ZW50Vmlld107CisgICAgZnJhbWVJbkNvbnRlbnRDb29yZGluYXRlcyA9IENHUmVj
dEludGVyc2VjdGlvbihjb250ZW50Vmlldy5ib3VuZHMsIGZyYW1lSW5Db250ZW50Q29vcmRpbmF0
ZXMpOwogICAgIGF1dG8ganNDb250ZXh0ID0gbV9jb250ZXh0LT5qc0NvbnRleHQoKTsKICAgICBy
ZXR1cm4gSlNWYWx1ZVRvT2JqZWN0KGpzQ29udGV4dCwgW0pTVmFsdWUgdmFsdWVXaXRoT2JqZWN0
OnRvTlNEaWN0aW9uYXJ5KGZyYW1lSW5Db250ZW50Q29vcmRpbmF0ZXMpIGluQ29udGV4dDpbSlND
b250ZXh0IGNvbnRleHRXaXRoSlNHbG9iYWxDb250ZXh0UmVmOmpzQ29udGV4dF1dLkpTVmFsdWVS
ZWYsIG51bGxwdHIpOwogfQpAQCAtNTM3LDEwICs1MzgsMzUgQEAgSlNPYmplY3RSZWYgVUlTY3Jp
cHRDb250cm9sbGVyOjpzZWxlY3Rpb25FbmRHcmFiYmVyVmlld1JlY3QoKSBjb25zdAogICAgIFVJ
VmlldyAqY29udGVudFZpZXcgPSBbd2ViVmlldyB2YWx1ZUZvcktleVBhdGg6QCJfY3VycmVudENv
bnRlbnRWaWV3Il07CiAgICAgVUlWaWV3ICpzZWxlY3Rpb25SYW5nZVZpZXcgPSBbY29udGVudFZp
ZXcgdmFsdWVGb3JLZXlQYXRoOkAiaW50ZXJhY3Rpb25Bc3Npc3RhbnQuc2VsZWN0aW9uVmlldy5y
YW5nZVZpZXciXTsKICAgICBhdXRvIGZyYW1lSW5Db250ZW50Q29vcmRpbmF0ZXMgPSBbc2VsZWN0
aW9uUmFuZ2VWaWV3IGNvbnZlcnRSZWN0Oltbc2VsZWN0aW9uUmFuZ2VWaWV3IHZhbHVlRm9yS2V5
UGF0aDpAImVuZEdyYWJiZXIiXSBmcmFtZV0gdG9WaWV3OmNvbnRlbnRWaWV3XTsKKyAgICBmcmFt
ZUluQ29udGVudENvb3JkaW5hdGVzID0gQ0dSZWN0SW50ZXJzZWN0aW9uKGNvbnRlbnRWaWV3LmJv
dW5kcywgZnJhbWVJbkNvbnRlbnRDb29yZGluYXRlcyk7CiAgICAgYXV0byBqc0NvbnRleHQgPSBt
X2NvbnRleHQtPmpzQ29udGV4dCgpOwogICAgIHJldHVybiBKU1ZhbHVlVG9PYmplY3QoanNDb250
ZXh0LCBbSlNWYWx1ZSB2YWx1ZVdpdGhPYmplY3Q6dG9OU0RpY3Rpb25hcnkoZnJhbWVJbkNvbnRl
bnRDb29yZGluYXRlcykgaW5Db250ZXh0OltKU0NvbnRleHQgY29udGV4dFdpdGhKU0dsb2JhbENv
bnRleHRSZWY6anNDb250ZXh0XV0uSlNWYWx1ZVJlZiwgbnVsbHB0cik7CiB9CiAKK0pTT2JqZWN0
UmVmIFVJU2NyaXB0Q29udHJvbGxlcjo6c2VsZWN0aW9uQ2FyZXRWaWV3UmVjdCgpIGNvbnN0Cit7
CisgICAgV0tXZWJWaWV3ICp3ZWJWaWV3ID0gVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLm1h
aW5XZWJWaWV3KCktPnBsYXRmb3JtVmlldygpOworICAgIFVJVmlldyAqY29udGVudFZpZXcgPSBb
d2ViVmlldyB2YWx1ZUZvcktleVBhdGg6QCJfY3VycmVudENvbnRlbnRWaWV3Il07CisgICAgVUlW
aWV3ICpjYXJldFZpZXcgPSBbY29udGVudFZpZXcgdmFsdWVGb3JLZXlQYXRoOkAiaW50ZXJhY3Rp
b25Bc3Npc3RhbnQuc2VsZWN0aW9uVmlldy5jYXJldFZpZXciXTsKKyAgICBhdXRvIHJlY3RJbkNv
bnRlbnRWaWV3Q29vcmRpbmF0ZXMgPSBDR1JlY3RJbnRlcnNlY3Rpb24oW2NhcmV0VmlldyBjb252
ZXJ0UmVjdDpjYXJldFZpZXcuYm91bmRzIHRvVmlldzpjb250ZW50Vmlld10sIGNvbnRlbnRWaWV3
LmJvdW5kcyk7CisgICAgcmV0dXJuIEpTVmFsdWVUb09iamVjdChtX2NvbnRleHQtPmpzQ29udGV4
dCgpLCBbSlNWYWx1ZSB2YWx1ZVdpdGhPYmplY3Q6dG9OU0RpY3Rpb25hcnkocmVjdEluQ29udGVu
dFZpZXdDb29yZGluYXRlcykgaW5Db250ZXh0OltKU0NvbnRleHQgY29udGV4dFdpdGhKU0dsb2Jh
bENvbnRleHRSZWY6bV9jb250ZXh0LT5qc0NvbnRleHQoKV1dLkpTVmFsdWVSZWYsIG51bGxwdHIp
OworfQorCitKU09iamVjdFJlZiBVSVNjcmlwdENvbnRyb2xsZXI6OnNlbGVjdGlvblJhbmdlVmll
d1JlY3RzKCkgY29uc3QKK3sKKyAgICBXS1dlYlZpZXcgKndlYlZpZXcgPSBUZXN0Q29udHJvbGxl
cjo6c2luZ2xldG9uKCkubWFpbldlYlZpZXcoKS0+cGxhdGZvcm1WaWV3KCk7CisgICAgVUlWaWV3
ICpjb250ZW50VmlldyA9IFt3ZWJWaWV3IHZhbHVlRm9yS2V5UGF0aDpAIl9jdXJyZW50Q29udGVu
dFZpZXciXTsKKyAgICBVSVZpZXcgKnJhbmdlVmlldyA9IFtjb250ZW50VmlldyB2YWx1ZUZvcktl
eVBhdGg6QCJpbnRlcmFjdGlvbkFzc2lzdGFudC5zZWxlY3Rpb25WaWV3LnJhbmdlVmlldyJdOwor
ICAgIGF1dG8gcmVjdHNBc0RpY3Rpb25hcmllcyA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBh
bGxvY10gaW5pdF0pOworICAgIE5TQXJyYXkgKnRleHRSZWN0SW5mb0FycmF5ID0gW3JhbmdlVmll
dyB2YWx1ZUZvcktleVBhdGg6QCJyZWN0cyJdOworICAgIGZvciAoaWQgdGV4dFJlY3RJbmZvIGlu
IHRleHRSZWN0SW5mb0FycmF5KSB7CisgICAgICAgIE5TVmFsdWUgKnJlY3RWYWx1ZSA9IFt0ZXh0
UmVjdEluZm8gdmFsdWVGb3JLZXlQYXRoOkAicmVjdCJdOworICAgICAgICBhdXRvIHJhbmdlUmVj
dEluQ29udGVudFZpZXdDb29yZGluYXRlcyA9IFtyYW5nZVZpZXcgY29udmVydFJlY3Q6cmVjdFZh
bHVlLkNHUmVjdFZhbHVlIHRvVmlldzpjb250ZW50Vmlld107CisgICAgICAgIFtyZWN0c0FzRGlj
dGlvbmFyaWVzIGFkZE9iamVjdDp0b05TRGljdGlvbmFyeShDR1JlY3RJbnRlcnNlY3Rpb24ocmFu
Z2VSZWN0SW5Db250ZW50Vmlld0Nvb3JkaW5hdGVzLCBjb250ZW50Vmlldy5ib3VuZHMpKV07Cisg
ICAgfQorICAgIHJldHVybiBKU1ZhbHVlVG9PYmplY3QobV9jb250ZXh0LT5qc0NvbnRleHQoKSwg
W0pTVmFsdWUgdmFsdWVXaXRoT2JqZWN0OnJlY3RzQXNEaWN0aW9uYXJpZXMuZ2V0KCkgaW5Db250
ZXh0OltKU0NvbnRleHQgY29udGV4dFdpdGhKU0dsb2JhbENvbnRleHRSZWY6bV9jb250ZXh0LT5q
c0NvbnRleHQoKV1dLkpTVmFsdWVSZWYsIG51bGxwdHIpOworfQorCiBKU09iamVjdFJlZiBVSVNj
cmlwdENvbnRyb2xsZXI6OmlucHV0Vmlld0JvdW5kcygpIGNvbnN0CiB7CiAgICAgcmV0dXJuIEpT
VmFsdWVUb09iamVjdChtX2NvbnRleHQtPmpzQ29udGV4dCgpLCBbSlNWYWx1ZSB2YWx1ZVdpdGhP
YmplY3Q6dG9OU0RpY3Rpb25hcnkoVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLm1haW5XZWJW
aWV3KCktPnBsYXRmb3JtVmlldygpLl9pbnB1dFZpZXdCb3VuZHMpIGluQ29udGV4dDpbSlNDb250
ZXh0IGNvbnRleHRXaXRoSlNHbG9iYWxDb250ZXh0UmVmOm1fY29udGV4dC0+anNDb250ZXh0KCld
XS5KU1ZhbHVlUmVmLCBudWxscHRyKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxv
ZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBkMGE3YTEyY2IxMDVhYjJiNDQxYTIwYjZh
OGZiNzY2NWU5YjhmOGJjLi5mMWUwNWIzMzdjMzBjMjQ5NDdmNzBiMzY2YWQxYzk0MTBjYjQyOTc1
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsNTEgQEAKKzIwMTgtMTEtMTIgIFdlbnNvbiBIc2llaCAgPHdlbnNv
bl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgW2lPU10gRG8gbm90IHNob3cgc2VsZWN0aW9u
IFVJIGZvciBlZGl0YWJsZSBlbGVtZW50cyB3aXRoIG9wYWNpdHkgbmVhciB6ZXJvCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTE0NDIKKyAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzQ1OTU4NjI1PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEFkZCA0IG5ldyBsYXlvdXQgdGVzdHMuIFNlZSBiZWxvdyBmb3Ig
bW9yZSBkZXRhaWxzLgorCisgICAgICAgICogZWRpdGluZy9zZWxlY3Rpb24vY2hhcmFjdGVyLWdy
YW51bGFyaXR5LXJlY3QuaHRtbDoKKworICAgICAgICBBZGp1c3QgZm9yIGEgcmVuYW1lZCBVSVNj
cmlwdENvbnRyb2xsZXIgZnVuY3Rpb24uCisKKyAgICAgICAgKiBlZGl0aW5nL3NlbGVjdGlvbi9p
b3MvZG8tbm90LXpvb20tdG8tZm9jdXNlZC1oaWRkZW4tY29udGVudGVkaXRhYmxlLWV4cGVjdGVk
LnR4dDogQWRkZWQuCisgICAgICAgICogZWRpdGluZy9zZWxlY3Rpb24vaW9zL2RvLW5vdC16b29t
LXRvLWZvY3VzZWQtaGlkZGVuLWNvbnRlbnRlZGl0YWJsZS5odG1sOiBBZGRlZC4KKworICAgICAg
ICBBZGQgYSB0ZXN0IHRvIHZlcmlmeSB0aGF0IHdlIGRvbid0IHpvb20gdG8gZml0IHRoZSBmb2N1
c2VkIGVsZW1lbnQsIGlmIHRoZSBmb2N1c2VkIGVsZW1lbnQgaXMgY29tcGxldGVseQorICAgICAg
ICB0cmFuc3BhcmVudC4KKworICAgICAgICAqIGVkaXRpbmcvc2VsZWN0aW9uL2lvcy9oaWRlLXNl
bGVjdGlvbi1hZnRlci1oaWRpbmctY29udGVudGVkaXRhYmxlLWV4cGVjdGVkLnR4dDogQWRkZWQu
CisgICAgICAgICogZWRpdGluZy9zZWxlY3Rpb24vaW9zL2hpZGUtc2VsZWN0aW9uLWFmdGVyLWhp
ZGluZy1jb250ZW50ZWRpdGFibGUuaHRtbDogQWRkZWQuCisKKyAgICAgICAgQWRkIGEgdGVzdCB0
byB2ZXJpZnkgdGhhdCBzZWxlY3Rpb24gVUkgaXMgaGlkZGVuIGFmdGVyIG1ha2luZyBhbiBlZGl0
YWJsZSByb290IHRyYW5zcGFyZW50LCBhbmQgc2hvd24gYWdhaW4gd2hlbgorICAgICAgICB0aGUg
ZWRpdGFibGUgcm9vdCBiZWNvbWVzIG9wYXF1ZS4KKworICAgICAgICAqIGVkaXRpbmcvc2VsZWN0
aW9uL2lvcy9oaWRlLXNlbGVjdGlvbi1pbi1oaWRkZW4tY29udGVudGVkaXRhYmxlLWV4cGVjdGVk
LnR4dDogQWRkZWQuCisgICAgICAgICogZWRpdGluZy9zZWxlY3Rpb24vaW9zL2hpZGUtc2VsZWN0
aW9uLWluLWhpZGRlbi1jb250ZW50ZWRpdGFibGUtZnJhbWUtZXhwZWN0ZWQudHh0OiBBZGRlZC4K
KyAgICAgICAgKiBlZGl0aW5nL3NlbGVjdGlvbi9pb3MvaGlkZS1zZWxlY3Rpb24taW4taGlkZGVu
LWNvbnRlbnRlZGl0YWJsZS1mcmFtZS5odG1sOiBBZGRlZC4KKworICAgICAgICBBZGQgYSB0ZXN0
IHRvIHZlcmlmeSB0aGF0IHNlbGVjdGlvbiBVSSBpcyBzdXBwcmVzc2VkIHdoZW4gYW4gZWRpdGFi
bGUgZWxlbWVudCBpbnNpZGUgYSBzdWJmcmFtZSBpcyBmb2N1c2VkLiBUaGlzCisgICAgICAgIHRl
c3QgY2hlY2tzIHRoYXQgdGhlIGNhcmV0LCBzZWxlY3Rpb24gcmVjdHMgYW5kIHNlbGVjdGlvbiBo
YW5kbGUgdmlld3MgYXJlIG5vdCBzaG93biwgYW5kIGFkZGl0aW9uYWxseSB2ZXJpZmllcworICAg
ICAgICB0aGF0IHRoZSBzZWxlY3Rpb24gaW4gYSBoaWRkZW4gY29udGVudGVkaXRhYmxlIGFyZWEg
Y2Fubm90IGJlIGNoYW5nZWQgdmlhIHRhcCBnZXN0dXJlLgorCisgICAgICAgICogZWRpdGluZy9z
ZWxlY3Rpb24vaW9zL2hpZGUtc2VsZWN0aW9uLWluLWhpZGRlbi1jb250ZW50ZWRpdGFibGUuaHRt
bDogQWRkZWQuCisKKyAgICAgICAgU2FtZSB0ZXN0IGFzIGFib3ZlLCBidXQgaW4gYSByZWd1bGFy
IGVkaXRhYmxlIGVsZW1lbnQgaW4gdGhlIG1haW4gZG9jdW1lbnQgaW5zdGVhZCBvZiBhIHN1YmZy
YW1lLgorCisgICAgICAgICogcmVzb3VyY2VzL3VpLWhlbHBlci5qczoKKyAgICAgICAgKHdpbmRv
dy5VSUhlbHBlci5nZXRVSVNlbGVjdGlvblJlY3RzLnJldHVybi5uZXcuUHJvbWlzZS4pOgorICAg
ICAgICAod2luZG93LlVJSGVscGVyLmdldFVJU2VsZWN0aW9uUmVjdHMucmV0dXJuLm5ldy5Qcm9t
aXNlKToKKyAgICAgICAgKHdpbmRvdy5VSUhlbHBlci5nZXRVSVNlbGVjdGlvblJlY3RzKToKKyAg
ICAgICAgKHdpbmRvdy5VSUhlbHBlci5nZXRVSUNhcmV0Vmlld1JlY3QucmV0dXJuLm5ldy5Qcm9t
aXNlLik6CisgICAgICAgICh3aW5kb3cuVUlIZWxwZXIuZ2V0VUlDYXJldFZpZXdSZWN0LnJldHVy
bi5uZXcuUHJvbWlzZSk6CisgICAgICAgICh3aW5kb3cuVUlIZWxwZXIuZ2V0VUlDYXJldFZpZXdS
ZWN0KToKKworICAgICAgICBBZGQgbmV3IFVJSGVscGVyIHdyYXBwZXIgbWV0aG9kcy4gU2VlIFRv
b2xzL0NoYW5nZUxvZyBmb3IgbW9yZSBkZXRhaWwuCisKIDIwMTgtMTEtMTEgIFdlbnNvbiBIc2ll
aCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgSW1wbGVtZW50IGEgbmV3IGVk
aXQgY29tbWFuZCB0byBjaGFuZ2UgdGhlIGVuY2xvc2luZyBsaXN0IHR5cGUKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2NoYXJhY3Rlci1ncmFudWxhcml0eS1yZWN0
Lmh0bWwgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9jaGFyYWN0ZXItZ3JhbnVsYXJp
dHktcmVjdC5odG1sCmluZGV4IGZjNWJjZTQ3ZDkwNzE1ZjM0NjVlNmU1NzZjMGFhYzhlODM2NmE1
M2EuLjExYWJhMzM0ZjdmNWNkMDJmOTBjZDFmYjA4N2U4NjRlNTYzYTE1MWMgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2NoYXJhY3Rlci1ncmFudWxhcml0eS1yZWN0
Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vY2hhcmFjdGVyLWdyYW51
bGFyaXR5LXJlY3QuaHRtbApAQCAtMjIsNyArMjIsNyBAQAogICAgICAgICByZXR1cm4gYAogICAg
ICAgICAoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICB1aUNvbnRyb2xsZXIubG9uZ1ByZXNzQXRQ
b2ludCgzMCwgMjAsIGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAgIHVpQ29udHJvbGxlci51
aVNjcmlwdENvbXBsZXRlKEpTT04uc3RyaW5naWZ5KHVpQ29udHJvbGxlci5zZWxlY3Rpb25SYW5n
ZVZpZXdSZWN0cykpOworICAgICAgICAgICAgICAgIHVpQ29udHJvbGxlci51aVNjcmlwdENvbXBs
ZXRlKEpTT04uc3RyaW5naWZ5KHVpQ29udHJvbGxlci50ZXh0U2VsZWN0aW9uUmFuZ2VSZWN0cykp
OwogICAgICAgICAgICAgfSk7CiAgICAgICAgIH0pKCk7YAogICAgIH0KQEAgLTM1LDEyICszNSwx
MiBAQAogICAgICAgICB2YXIgdGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rhcmdl
dCcpOwogICAgICAgICBpZiAodGVzdFJ1bm5lci5ydW5VSVNjcmlwdCkgewogICAgICAgICAgICAg
dGVzdFJ1bm5lci5ydW5VSVNjcmlwdChnZXRVSVNjcmlwdCgpLCBmdW5jdGlvbihyZXN1bHQpIHsK
LSAgICAgICAgICAgICAgICB2YXIgc2VsZWN0aW9uUmFuZ2VWaWV3UmVjdHMgPSBKU09OLnBhcnNl
KHJlc3VsdCk7CisgICAgICAgICAgICAgICAgdmFyIHRleHRTZWxlY3Rpb25SYW5nZVJlY3RzID0g
SlNPTi5wYXJzZShyZXN1bHQpOwogICAgICAgICAgICAgICAgIHZhciBvdXRwdXQ7Ci0gICAgICAg
ICAgICAgICAgaWYgKHNlbGVjdGlvblJhbmdlVmlld1JlY3RzLmxlbmd0aCAhPT0gMSkKKyAgICAg
ICAgICAgICAgICBpZiAodGV4dFNlbGVjdGlvblJhbmdlUmVjdHMubGVuZ3RoICE9PSAxKQogICAg
ICAgICAgICAgICAgICAgICBvdXRwdXQgPSAnRkFJTDogVW5leHBlY3RlZCBudW1iZXIgb2Ygc2Vs
ZWN0aW9uIHJhbmdlIHZpZXdzOiAnICsgcmVzdWx0OwogICAgICAgICAgICAgICAgIGVsc2Ugewot
ICAgICAgICAgICAgICAgICAgICB2YXIgcmVjdCA9IHNlbGVjdGlvblJhbmdlVmlld1JlY3RzWzBd
OworICAgICAgICAgICAgICAgICAgICB2YXIgcmVjdCA9IHRleHRTZWxlY3Rpb25SYW5nZVJlY3Rz
WzBdOwogICAgICAgICAgICAgICAgICAgICBpZiAocmVjdC5sZWZ0ICE9IDggfHwgcmVjdC50b3Ag
IT0gOCB8fCByZWN0LndpZHRoICE9IDExMiB8fCByZWN0LmhlaWdodCAhPSAxNyApCiAgICAgICAg
ICAgICAgICAgICAgICAgICBvdXRwdXQgPSAnRkFJTDogVW5leHBlY3RlZCBzZWxlY3Rpb24gcmFu
Z2UgdmlldyBmcmFtZTogJyArIHJlc3VsdDsKICAgICAgICAgICAgICAgICAgICAgZWxzZQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vaW9zL2RvLW5vdC16b29tLXRv
LWZvY3VzZWQtaGlkZGVuLWNvbnRlbnRlZGl0YWJsZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9lZGl0aW5nL3NlbGVjdGlvbi9pb3MvZG8tbm90LXpvb20tdG8tZm9jdXNlZC1oaWRkZW4tY29u
dGVudGVkaXRhYmxlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45YTM4YmVmMDNjNDliYWE4ZTQ3
YTgwZmQyMWIzZGM1YmVhMTBmZTM2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRp
dGluZy9zZWxlY3Rpb24vaW9zL2RvLW5vdC16b29tLXRvLWZvY3VzZWQtaGlkZGVuLWNvbnRlbnRl
ZGl0YWJsZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw3IEBACisKK1RoZSBpbml0aWFsIHBhZ2Ug
c2NhbGUgaXM6IDEuMDAwCitUaGUgcGFnZSBzY2FsZSBhZnRlciBmb2N1c2luZyB0aGUgZGl2IGlz
OiAxLjAwMAorVGhlIHBhZ2Ugc2NhbGUgYWZ0ZXIgZm9jdXNpbmcgdGhlIGlmcmFtZSBpczogMS4w
MDAKK1Rlc3RpbmcKKworVmVyaWZpZXMgdGhhdCB3ZSBkb24ndCB6b29tIHRvIHRoZSBmb2N1c2Vk
IGVsZW1lbnQsIGlmIHRoZSBmb2N1c2VkIGVsZW1lbnQgaXMgaW4gYSBoaWRkZW4gY29udGVudGVk
aXRhYmxlIGFyZWEuIFRvIG1hbnVhbGx5IHRlc3QsIGNsaWNrIHRoZSBidXR0b24gYW5kIGNoZWNr
IHRoYXQgdGhlIHBhZ2Ugc2NhbGUgaXMgc3RpbGwgMS4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2VkaXRpbmcvc2VsZWN0aW9uL2lvcy9kby1ub3Qtem9vbS10by1mb2N1c2VkLWhpZGRlbi1jb250
ZW50ZWRpdGFibGUuaHRtbCBiL0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2lvcy9kby1u
b3Qtem9vbS10by1mb2N1c2VkLWhpZGRlbi1jb250ZW50ZWRpdGFibGUuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4wNTcyMmQwNGU3NjQxOTgyNjdhM2IxNjhjYTdhNjc1MWM0ZDY3MWQzCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vaW9zL2RvLW5vdC16b29tLXRvLWZv
Y3VzZWQtaGlkZGVuLWNvbnRlbnRlZGl0YWJsZS5odG1sCkBAIC0wLDAgKzEsOTQgQEAKKzwhRE9D
VFlQRSBodG1sPiA8IS0tIHdlYmtpdC10ZXN0LXJ1bm5lciBbIHVzZUZsZXhpYmxlVmlld3BvcnQ9
dHJ1ZSBdIC0tPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50
PSJ3aWR0aD1kZXZpY2Utd2lkdGgsIGluaXRpYWwtc2NhbGU9MSI+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vLi4vcmVzb3VyY2VzL3VpLWhlbHBlci5qcyI+PC9zY3JpcHQ+Cis8c3R5bGU+Citib2R5IHsK
KyAgICB3aWR0aDogMTAwJTsKKyAgICBoZWlnaHQ6IDEwMCU7CisgICAgbWFyZ2luOiAwOworfQor
CitpbnB1dCB7CisgICAgd2lkdGg6IDMyMHB4OworICAgIGhlaWdodDogMTYwcHg7CisgICAgZGlz
cGxheTogYmxvY2s7Cit9CisKKy5jb250YWluZXIgeworICAgIHdpZHRoOiAzMHB4OworICAgIGhl
aWdodDogMzBweDsKKyAgICBib3JkZXI6IHNvbGlkIDJweCBzaWx2ZXI7CisgICAgYm94LXNpemlu
ZzogYm9yZGVyLWJveDsKKyAgICBmb250LXNpemU6IDZweDsKK30KKworI2VkaXRvciwgaWZyYW1l
IHsKKyAgICBvcGFjaXR5OiAwLjAwMTsKKyAgICB3aWR0aDogaW5oZXJpdDsKKyAgICBoZWlnaHQ6
IGluaGVyaXQ7CisgICAgb3ZlcmZsb3cteTogc2Nyb2xsOworfQorPC9zdHlsZT4KKzwvaGVhZD4K
Kzxib2R5PgorPGlucHV0IHR5cGU9ImJ1dHRvbiIgb25jbGljaz0iZm9jdXNFZGl0b3IoKSIgdmFs
dWU9IkNsaWNrIHRvIGZvY3VzIHRoZSBkaXYiPgorPGlucHV0IHR5cGU9ImJ1dHRvbiIgb25jbGlj
az0iZm9jdXNTdWJmcmFtZSgpIiB2YWx1ZT0iQ2xpY2sgdG8gZm9jdXMgdGhlIGZyYW1lIj4KKzxk
aXY+VGhlIGluaXRpYWwgcGFnZSBzY2FsZSBpczogPHNwYW4gaWQ9ImluaXRpYWwtc2NhbGUiPjwv
c3Bhbj48L2Rpdj4KKzxkaXY+VGhlIHBhZ2Ugc2NhbGUgYWZ0ZXIgZm9jdXNpbmcgdGhlIGRpdiBp
czogPHNwYW4gaWQ9ImRpdi1zY2FsZSI+PC9zcGFuPjwvZGl2PgorPGRpdj5UaGUgcGFnZSBzY2Fs
ZSBhZnRlciBmb2N1c2luZyB0aGUgaWZyYW1lIGlzOiA8c3BhbiBpZD0iaWZyYW1lLXNjYWxlIj48
L3NwYW4+PC9kaXY+Cis8ZGl2IGNsYXNzPSJjb250YWluZXIiPgorICAgIDxkaXYgaWQ9ImVkaXRv
ciIgY29udGVudGVkaXRhYmxlPlRlc3Rpbmc8L2Rpdj4KKzwvZGl2PgorPGRpdiBjbGFzcz0iY29u
dGFpbmVyIj4KKyAgICA8aWZyYW1lIHNyY2RvYz0iCisgICAgICAgIDxoZWFkPgorICAgICAgICAg
ICAgPHN0eWxlPmJvZHksIGh0bWwgeyB3aWR0aDogMTAwJTsgaGVpZ2h0OiAxMDAlOyBmb250LXNp
emU6IDZweDsgfTwvc3R5bGU+CisgICAgICAgICAgICA8c2NyaXB0PgorICAgICAgICAgICAgICAg
IGZ1bmN0aW9uIGJlZ2luRWRpdGluZygpIHsKKyAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQu
Ym9keS5mb2N1cygpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIDwvc2NyaXB0Pgor
ICAgICAgICA8L2hlYWQ+CisgICAgICAgIDxib2R5IGNvbnRlbnRlZGl0YWJsZT5UZXN0aW5nPC9i
b2R5PiIgb25sb2FkPSJydW5UZXN0KCkiPjwvaWZyYW1lPgorPC9kaXY+Cis8cD5WZXJpZmllcyB0
aGF0IHdlIGRvbid0IHpvb20gdG8gdGhlIGZvY3VzZWQgZWxlbWVudCwgaWYgdGhlIGZvY3VzZWQg
ZWxlbWVudCBpcyBpbiBhIGhpZGRlbiBjb250ZW50ZWRpdGFibGUgYXJlYS4gVG8gbWFudWFsbHkg
dGVzdCwgY2xpY2sgdGhlIGJ1dHRvbiBhbmQgY2hlY2sgdGhhdCB0aGUgcGFnZSBzY2FsZSBpcyBz
dGlsbCAxLjwvcD4KKzxzY3JpcHQ+Citsb2FkQ291bnQgPSAwOworCithZGRFdmVudExpc3RlbmVy
KCJsb2FkIiwgcnVuVGVzdCk7CisKK2Z1bmN0aW9uIGZvY3VzRWRpdG9yKCkgeworICAgIGRvY3Vt
ZW50LnF1ZXJ5U2VsZWN0b3IoJyNlZGl0b3InKS5mb2N1cygpOworfQorCitmdW5jdGlvbiBmb2N1
c1N1YmZyYW1lKCkgeworICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoImlmcmFtZSIpLmNvbnRl
bnRXaW5kb3cuYmVnaW5FZGl0aW5nKCk7Cit9CisKK2FzeW5jIGZ1bmN0aW9uIHJ1blRlc3QoKSB7
CisgICAgaWYgKCF3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYg
KCsrbG9hZENvdW50IDwgMikKKyAgICAgICAgcmV0dXJuOworCisgICAgdGVzdFJ1bm5lci5kdW1w
QXNUZXh0KCk7CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisKKyAgICBkb2N1bWVu
dC5xdWVyeVNlbGVjdG9yKCIjaW5pdGlhbC1zY2FsZSIpLnRleHRDb250ZW50ID0gaW50ZXJuYWxz
LnBhZ2VTY2FsZUZhY3RvcigpLnRvRml4ZWQoMyk7CisKKyAgICBhd2FpdCBVSUhlbHBlci5hY3Rp
dmF0ZUFuZFdhaXRGb3JJbnB1dFNlc3Npb25BdCgxNjAsIDgwKTsKKyAgICBkb2N1bWVudC5xdWVy
eVNlbGVjdG9yKCIjZGl2LXNjYWxlIikudGV4dENvbnRlbnQgPSBpbnRlcm5hbHMucGFnZVNjYWxl
RmFjdG9yKCkudG9GaXhlZCgzKTsKKyAgICBVSUhlbHBlci5yZXNpZ25GaXJzdFJlc3BvbmRlcigp
OworICAgIGF3YWl0IFVJSGVscGVyLndhaXRGb3JLZXlib2FyZFRvSGlkZSgpOworCisgICAgYXdh
aXQgVUlIZWxwZXIuYWN0aXZhdGVBbmRXYWl0Rm9ySW5wdXRTZXNzaW9uQXQoMTYwLCAyNDApOwor
ICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIiNpZnJhbWUtc2NhbGUiKS50ZXh0Q29udGVudCA9
IGludGVybmFscy5wYWdlU2NhbGVGYWN0b3IoKS50b0ZpeGVkKDMpOworCisgICAgdGVzdFJ1bm5l
ci5ub3RpZnlEb25lKCk7Cit9Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2lvcy9oaWRlLXNlbGVjdGlvbi1hZnRl
ci1oaWRpbmctY29udGVudGVkaXRhYmxlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2VkaXRp
bmcvc2VsZWN0aW9uL2lvcy9oaWRlLXNlbGVjdGlvbi1hZnRlci1oaWRpbmctY29udGVudGVkaXRh
YmxlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mNDA5YzI1NmFmYjE2OTU4YTNkYTU1NmE4ZmY3
OTcwNDQwNzkxYzM0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxl
Y3Rpb24vaW9zL2hpZGUtc2VsZWN0aW9uLWFmdGVyLWhpZGluZy1jb250ZW50ZWRpdGFibGUtZXhw
ZWN0ZWQudHh0CkBAIC0wLDAgKzEsNiBAQAorSGVyZSdzIHRvIHRoZSBjcmF6eSBvbmVzLCB0aGUg
bWlzZml0cywgdGhlIHJlYmVscywgdGhlIHRyb3VibGVtYWtlcnMsIHRoZSByb3VuZCBwZWdzIGlu
IHRoZSBzcXVhcmUgaG9sZXMuIFRoZSBvbmVzIHdobyBzZWUgdGhpbmdzIGRpZmZlcmVudGx5LiBU
aGV5J3JlIG5vdCBmb25kIG9mIHJ1bGVzLiBZb3UgY2FuIHF1b3RlIHRoZW0sIGRpc2FncmVlIHdp
dGggdGhlbSwgZ2xvcmlmeSBvciB2aWxpZnkgdGhlbSwgYnV0IHRoZSBvbmx5IHRoaW5nIHlvdSBj
YW4ndCBkbyBpcyBpZ25vcmUgdGhlbSBiZWNhdXNlIHRoZXkgY2hhbmdlIHRoaW5ncy4KK1Zlcmlm
aWVzIHRoYXQgc2VsZWN0aW9uIFVJIGlzIGhpZGRlbiBhZnRlciB0aGUgZWRpdGFibGUgYXJlYSBi
ZWNvbWVzIGhpZGRlbiwgZm9sbG93aW5nIGEgc2VsZWN0aW9uIGNoYW5nZS4gVGhpcyB0ZXN0IHJl
cXVpcmVzIFdlYktpdFRlc3RSdW5uZXIuCisKK0NhcmV0IHJlY3QgYWZ0ZXIgZm9jdXM6IChsZWZ0
ID0gMTYxLCB0b3AgPSAxNTEsIHdpZHRoID0gMiwgaGVpZ2h0ID0gMzApCitTZWxlY3Rpb24gcmVj
dHMgYWZ0ZXIgc2VsZWN0IGFsbDoKK0NhcmV0IHJlY3QgYWZ0ZXIgY29sbGFwc2luZzogKGxlZnQg
PSAyNjksIHRvcCA9IDI3MSwgd2lkdGggPSAyLCBoZWlnaHQgPSAzMCkKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2lvcy9oaWRlLXNlbGVjdGlvbi1hZnRlci1oaWRp
bmctY29udGVudGVkaXRhYmxlLmh0bWwgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9p
b3MvaGlkZS1zZWxlY3Rpb24tYWZ0ZXItaGlkaW5nLWNvbnRlbnRlZGl0YWJsZS5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjk5YWJhY2JlOWM0MTlhZjJkNjNhNmQ5Mjg1YWYwZmYzZWE0YmMxMDQKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9pb3MvaGlkZS1zZWxlY3Rp
b24tYWZ0ZXItaGlkaW5nLWNvbnRlbnRlZGl0YWJsZS5odG1sCkBAIC0wLDAgKzEsNjUgQEAKKzwh
RE9DVFlQRSBodG1sPiA8IS0tIHdlYmtpdC10ZXN0LXJ1bm5lciBbIHVzZUZsZXhpYmxlVmlld3Bv
cnQ9dHJ1ZSBdIC0tPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250
ZW50PSJ3aWR0aD1kZXZpY2Utd2lkdGgsIHVzZXItc2NhbGFibGU9bm8iPgorPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uL3Jlc291cmNlcy91aS1oZWxwZXIuanMiPjwvc2NyaXB0PgorPHN0eWxlPgorYm9k
eSwgaHRtbCB7CisgICAgd2lkdGg6IDEwMCU7CisgICAgaGVpZ2h0OiAxMDAlOworICAgIG1hcmdp
bjogMDsKK30KKworLmNvbnRhaW5lciB7CisgICAgd2lkdGg6IDMyMHB4OworICAgIGhlaWdodDog
MzIwcHg7CisgICAgYm9yZGVyOiBzb2xpZCAycHggc2lsdmVyOworICAgIGJveC1zaXppbmc6IGJv
cmRlci1ib3g7Cit9CisKKyNlZGl0b3IgeworICAgIHdpZHRoOiBpbmhlcml0OworICAgIGhlaWdo
dDogaW5oZXJpdDsKKyAgICBmb250LXNpemU6IDI0cHg7Cit9Cis8L3N0eWxlPgorPC9oZWFkPgor
PGJvZHk+Cis8ZGl2IGNsYXNzPSJjb250YWluZXIiPgorICAgIDxkaXYgaWQ9ImVkaXRvciIgY29u
dGVudGVkaXRhYmxlPgorICAgICAgICBIZXJlJ3MgdG8gdGhlIGNyYXp5IG9uZXMsIHRoZSBtaXNm
aXRzLCB0aGUgcmViZWxzLCB0aGUgdHJvdWJsZW1ha2VycywgdGhlIHJvdW5kIHBlZ3MgaW4gdGhl
IHNxdWFyZSBob2xlcy4KKyAgICAgICAgVGhlIG9uZXMgd2hvIHNlZSB0aGluZ3MgZGlmZmVyZW50
bHkuIFRoZXkncmUgbm90IGZvbmQgb2YgcnVsZXMuIFlvdSBjYW4gcXVvdGUgdGhlbSwgZGlzYWdy
ZWUgd2l0aCB0aGVtLCBnbG9yaWZ5IG9yIHZpbGlmeSB0aGVtLCBidXQgdGhlIG9ubHkgdGhpbmcg
eW91IGNhbid0IGRvIGlzIGlnbm9yZSB0aGVtIGJlY2F1c2UgdGhleSBjaGFuZ2UgdGhpbmdzLgor
ICAgIDwvZGl2PgorPC9kaXY+Cis8cD5WZXJpZmllcyB0aGF0IHNlbGVjdGlvbiBVSSBpcyBoaWRk
ZW4gYWZ0ZXIgdGhlIGVkaXRhYmxlIGFyZWEgYmVjb21lcyBoaWRkZW4sIGZvbGxvd2luZyBhIHNl
bGVjdGlvbiBjaGFuZ2UuIFRoaXMgdGVzdCByZXF1aXJlcyBXZWJLaXRUZXN0UnVubmVyLjwvcD4K
KzxkaXY+Q2FyZXQgcmVjdCBhZnRlciBmb2N1czogPHNwYW4gaWQ9ImZvY3VzLWNhcmV0Ij48L3Nw
YW4+PC9kaXY+Cis8ZGl2PlNlbGVjdGlvbiByZWN0cyBhZnRlciBzZWxlY3QgYWxsOiA8c3BhbiBp
ZD0ic2VsZWN0aW9uIj48L3NwYW4+PC9kaXY+Cis8ZGl2PkNhcmV0IHJlY3QgYWZ0ZXIgY29sbGFw
c2luZzogPHNwYW4gaWQ9ImNvbGxhcHNlLWNhcmV0Ij48L3NwYW4+PC9kaXY+Cis8c2NyaXB0Pgor
ZnVuY3Rpb24gcmVjdFRvU3RyaW5nKHJlY3QpIHsKKyAgICByZXR1cm4gYChsZWZ0ID0gJHtNYXRo
LnJvdW5kKHJlY3QubGVmdCl9LCB0b3AgPSAke01hdGgucm91bmQocmVjdC50b3ApfSwgd2lkdGgg
PSAke01hdGgucm91bmQocmVjdC53aWR0aCl9LCBoZWlnaHQgPSAke01hdGgucm91bmQocmVjdC5o
ZWlnaHQpfSlgOworfQorCisoYXN5bmMgKCkgPT4geworICAgIGlmICghd2luZG93LnRlc3RSdW5u
ZXIpCisgICAgICAgIHJldHVybjsKKworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAg
IHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworCisgICAgYXdhaXQgVUlIZWxwZXIuYWN0aXZh
dGVBbmRXYWl0Rm9ySW5wdXRTZXNzaW9uQXQoMTYwLCAxNjApOworICAgIGRvY3VtZW50LnF1ZXJ5
U2VsZWN0b3IoIiNmb2N1cy1jYXJldCIpLnRleHRDb250ZW50ID0gcmVjdFRvU3RyaW5nKGF3YWl0
IFVJSGVscGVyLmdldFVJQ2FyZXRWaWV3UmVjdCgpKTsKKworICAgIGVkaXRvci5zdHlsZS5vcGFj
aXR5ID0gMDsKKyAgICBkb2N1bWVudC5leGVjQ29tbWFuZCgic2VsZWN0QWxsIik7CisgICAgZG9j
dW1lbnQucXVlcnlTZWxlY3RvcigiI3NlbGVjdGlvbiIpLnRleHRDb250ZW50ID0gKGF3YWl0IFVJ
SGVscGVyLmdldFVJU2VsZWN0aW9uVmlld1JlY3RzKCkpLm1hcChyZWN0VG9TdHJpbmcpLmpvaW4o
IiwgIik7CisKKyAgICBlZGl0b3Iuc3R5bGUub3BhY2l0eSA9IDE7CisgICAgZ2V0U2VsZWN0aW9u
KCkuY29sbGFwc2VUb0VuZCgpOworICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIiNjb2xsYXBz
ZS1jYXJldCIpLnRleHRDb250ZW50ID0gcmVjdFRvU3RyaW5nKGF3YWl0IFVJSGVscGVyLmdldFVJ
Q2FyZXRWaWV3UmVjdCgpKTsKKworICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworfSkoKTsK
Kzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRp
dGluZy9zZWxlY3Rpb24vaW9zL2hpZGUtc2VsZWN0aW9uLWluLWhpZGRlbi1jb250ZW50ZWRpdGFi
bGUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vaW9zL2hpZGUt
c2VsZWN0aW9uLWluLWhpZGRlbi1jb250ZW50ZWRpdGFibGUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjdmY2U5YzFjZGFlZjEzZWM3ZWI4MmNlYjlhNzJiZjI4MTRjNjY5ZjgKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9pb3MvaGlkZS1zZWxlY3Rpb24t
aW4taGlkZGVuLWNvbnRlbnRlZGl0YWJsZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMiBAQAor
SGVyZSdzIHRvIHRoZSBjcmF6eSBvbmVzLCB0aGUgbWlzZml0cywgdGhlIHJlYmVscywgdGhlIHRy
b3VibGVtYWtlcnMsIHRoZSByb3VuZCBwZWdzIGluIHRoZSBzcXVhcmUgaG9sZXMuIFRoZSBvbmVz
IHdobyBzZWUgdGhpbmdzIGRpZmZlcmVudGx5LiBUaGV5J3JlIG5vdCBmb25kIG9mIHJ1bGVzLiBZ
b3UgY2FuIHF1b3RlIHRoZW0sIGRpc2FncmVlIHdpdGggdGhlbSwgZ2xvcmlmeSBvciB2aWxpZnkg
dGhlbSwgYnV0IHRoZSBvbmx5IHRoaW5nIHlvdSBjYW4ndCBkbyBpcyBpZ25vcmUgdGhlbSBiZWNh
dXNlIHRoZXkgY2hhbmdlIHRoaW5ncy4KK1ZlcmlmaWVzIHRoYXQgc2VsZWN0aW9uIFVJIGlzIHN1
cHByZXNzZWQgd2hlbiB0aGUgZWRpdGFibGUgcm9vdCBpcyB0cmFuc3BhcmVudC4gVG8gbWFudWFs
bHkgdGVzdCwgZm9jdXMgdGhlIGJveCBhYm92ZSBhbmQgdmVyaWZ5IHRoYXQ6CisKK1RoZSBjYXJl
dCBpcyBub3Qgc2hvd24uCitTZWxlY3Rpb24gaGlnaGxpZ2h0cyBhcmUgbm90IHNob3duLgorVGhl
IHNlbGVjdGlvbiBjYW5ub3QgYmUgY2hhbmdlZCB2aWEgZ2VzdHVyZS4KK0NhcmV0IHJlY3QgYWZ0
ZXIgZm9jdXM6IChsZWZ0ID0gMCwgdG9wID0gMCwgd2lkdGggPSAwLCBoZWlnaHQgPSAwKQorU2Vs
ZWN0aW9uIHJlY3RzIGFmdGVyIHNlbGVjdGluZyBhbGw6CitTZWxlY3Rpb24gc3RhcnQgZ3JhYmJl
ciByZWN0IGFmdGVyIHNlbGVjdGluZyBhbGw6IChsZWZ0ID0gMCwgdG9wID0gMCwgd2lkdGggPSAw
LCBoZWlnaHQgPSAwKQorU2VsZWN0aW9uIGVuZCBncmFiYmVyIHJlY3QgYWZ0ZXIgc2VsZWN0aW5n
IGFsbDogKGxlZnQgPSAwLCB0b3AgPSAwLCB3aWR0aCA9IDAsIGhlaWdodCA9IDApCitTZWxlY3Rp
b24gYmVmb3JlIHRhcDogKFtvYmplY3QgVGV4dF0jMzI1LCBbb2JqZWN0IFRleHRdIzMyNSkKK1Nl
bGVjdGlvbiBhZnRlciB0YXA6IChbb2JqZWN0IFRleHRdIzMyNSwgW29iamVjdCBUZXh0XSMzMjUp
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9pb3MvaGlkZS1zZWxl
Y3Rpb24taW4taGlkZGVuLWNvbnRlbnRlZGl0YWJsZS1mcmFtZS1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9pb3MvaGlkZS1zZWxlY3Rpb24taW4taGlkZGVuLWNv
bnRlbnRlZGl0YWJsZS1mcmFtZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGM3NGRmZTUxYThi
MmVlNjE3NjAwMTMzZmI3M2FmZTcyNmZiNGJjYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2VkaXRpbmcvc2VsZWN0aW9uL2lvcy9oaWRlLXNlbGVjdGlvbi1pbi1oaWRkZW4tY29udGVu
dGVkaXRhYmxlLWZyYW1lLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEyIEBACisKK1ZlcmlmaWVz
IHRoYXQgc2VsZWN0aW9uIFVJIGlzIHN1cHByZXNzZWQgd2hlbiB0aGUgZWRpdGFibGUgcm9vdCBp
cyB0cmFuc3BhcmVudC4gVG8gbWFudWFsbHkgdGVzdCwgZm9jdXMgdGhlIGJveCBhYm92ZSBhbmQg
dmVyaWZ5IHRoYXQ6CisKK1RoZSBjYXJldCBpcyBub3Qgc2hvd24uCitTZWxlY3Rpb24gaGlnaGxp
Z2h0cyBhcmUgbm90IHNob3duLgorVGhlIHNlbGVjdGlvbiBjYW5ub3QgYmUgY2hhbmdlZCB2aWEg
Z2VzdHVyZS4KK0NhcmV0IHJlY3QgYWZ0ZXIgZm9jdXM6IChsZWZ0ID0gMCwgdG9wID0gMCwgd2lk
dGggPSAwLCBoZWlnaHQgPSAwKQorU2VsZWN0aW9uIHJlY3RzIGFmdGVyIHNlbGVjdGluZyBhbGw6
CitTZWxlY3Rpb24gc3RhcnQgZ3JhYmJlciByZWN0IGFmdGVyIHNlbGVjdGluZyBhbGw6IChsZWZ0
ID0gMCwgdG9wID0gMCwgd2lkdGggPSAwLCBoZWlnaHQgPSAwKQorU2VsZWN0aW9uIGVuZCBncmFi
YmVyIHJlY3QgYWZ0ZXIgc2VsZWN0aW5nIGFsbDogKGxlZnQgPSAwLCB0b3AgPSAwLCB3aWR0aCA9
IDAsIGhlaWdodCA9IDApCitTZWxlY3Rpb24gYmVmb3JlIHRhcDogKFtvYmplY3QgVGV4dF0jMzMz
LCBbb2JqZWN0IFRleHRdIzMzMykKK1NlbGVjdGlvbiBhZnRlciB0YXA6IChbb2JqZWN0IFRleHRd
IzMzMywgW29iamVjdCBUZXh0XSMzMzMpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5n
L3NlbGVjdGlvbi9pb3MvaGlkZS1zZWxlY3Rpb24taW4taGlkZGVuLWNvbnRlbnRlZGl0YWJsZS1m
cmFtZS5odG1sIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vaW9zL2hpZGUtc2VsZWN0
aW9uLWluLWhpZGRlbi1jb250ZW50ZWRpdGFibGUtZnJhbWUuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40MTM1
NWM3M2FjMmU3NDE4YWY5Yjk3ZjkxMTY2NzRlYmM2ZDE2MWZmCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vaW9zL2hpZGUtc2VsZWN0aW9uLWluLWhpZGRl
bi1jb250ZW50ZWRpdGFibGUtZnJhbWUuaHRtbApAQCAtMCwwICsxLDEyMiBAQAorPCFET0NUWVBF
IGh0bWw+IDwhLS0gd2Via2l0LXRlc3QtcnVubmVyIFsgdXNlRmxleGlibGVWaWV3cG9ydD10cnVl
IF0gLS0+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9Indp
ZHRoPWRldmljZS13aWR0aCwgdXNlci1zY2FsYWJsZT1ubyI+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vcmVzb3VyY2VzL3VpLWhlbHBlci5qcyI+PC9zY3JpcHQ+Cis8c3R5bGU+Citib2R5LCBodG1s
IHsKKyAgICB3aWR0aDogMTAwJTsKKyAgICBoZWlnaHQ6IDEwMCU7CisgICAgbWFyZ2luOiAwOwor
fQorCisuY29udGFpbmVyIHsKKyAgICB3aWR0aDogMzIwcHg7CisgICAgaGVpZ2h0OiAzMjBweDsK
KyAgICBib3JkZXI6IHNvbGlkIDJweCBzaWx2ZXI7CisgICAgYm94LXNpemluZzogYm9yZGVyLWJv
eDsKK30KKworaWZyYW1lIHsKKyAgICBvcGFjaXR5OiAwLjAwMTsKKyAgICB3aWR0aDogaW5oZXJp
dDsKKyAgICBoZWlnaHQ6IGluaGVyaXQ7CisgICAgZm9udC1zaXplOiAyNHB4OworfQorPC9zdHls
ZT4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBjbGFzcz0iY29udGFpbmVyIj4KKyAgICA8aWZyYW1l
IHNyY2RvYz0iCisgICAgICAgIDxoZWFkPgorICAgICAgICAgICAgPHN0eWxlPmJvZHksIGh0bWwg
eyB3aWR0aDogMTAwJTsgaGVpZ2h0OiAxMDAlOyB9PC9zdHlsZT4KKyAgICAgICAgICAgIDxzY3Jp
cHQ+CisgICAgICAgICAgICBmdW5jdGlvbiBzZWxlY3Rpb25Ub1N0cmluZygpIHsKKyAgICAgICAg
ICAgICAgICBjb25zdCBzZWxlY3Rpb24gPSBnZXRTZWxlY3Rpb24oKTsKKyAgICAgICAgICAgICAg
ICBpZiAoIXNlbGVjdGlvbi5yYW5nZUNvdW50KQorICAgICAgICAgICAgICAgICAgICByZXR1cm4g
JyhubyBzZWxlY3Rpb24pJzsKKworICAgICAgICAgICAgICAgIGNvbnN0IHJhbmdlID0gc2VsZWN0
aW9uLmdldFJhbmdlQXQoMCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGAoJHtyYW5nZS5zdGFy
dENvbnRhaW5lcn0jJHtyYW5nZS5zdGFydE9mZnNldH0sICR7cmFuZ2UuZW5kQ29udGFpbmVyfSMk
e3JhbmdlLmVuZE9mZnNldH0pYDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZnVuY3Rp
b24gc2VsZWN0QWxsKCkgeworICAgICAgICAgICAgICAgIGRvY3VtZW50LmV4ZWNDb21tYW5kKCdz
ZWxlY3RBbGwnKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZnVuY3Rpb24gY29sbGFw
c2VUb0VuZCgpIHsKKyAgICAgICAgICAgICAgICBnZXRTZWxlY3Rpb24oKS5jb2xsYXBzZVRvRW5k
KCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVu
ZXIoJ3NlbGVjdGlvbmNoYW5nZScsICgpID0+IHBhcmVudC5wb3N0TWVzc2FnZShzZWxlY3Rpb25U
b1N0cmluZygpLCAnKicpKTsKKyAgICAgICAgICAgIDwvc2NyaXB0PgorICAgICAgICA8L2hlYWQ+
CisgICAgICAgIDxib2R5IGNvbnRlbnRlZGl0YWJsZT4KKyAgICAgICAgICAgIEhlcmUncyB0byB0
aGUgY3Jhenkgb25lcywgdGhlIG1pc2ZpdHMsIHRoZSByZWJlbHMsIHRoZSB0cm91YmxlbWFrZXJz
LCB0aGUgcm91bmQgcGVncyBpbiB0aGUgc3F1YXJlIGhvbGVzLgorICAgICAgICAgICAgVGhlIG9u
ZXMgd2hvIHNlZSB0aGluZ3MgZGlmZmVyZW50bHkuIFRoZXkncmUgbm90IGZvbmQgb2YgcnVsZXMu
IFlvdSBjYW4gcXVvdGUgdGhlbSwgZGlzYWdyZWUgd2l0aCB0aGVtLCBnbG9yaWZ5IG9yIHZpbGlm
eSB0aGVtLCBidXQgdGhlIG9ubHkgdGhpbmcgeW91IGNhbid0IGRvIGlzIGlnbm9yZSB0aGVtIGJl
Y2F1c2UgdGhleSBjaGFuZ2UgdGhpbmdzLgorICAgICAgICA8L2JvZHk+IiBvbmxvYWQ9InJ1blRl
c3QoKSI+PC9pZnJhbWU+Cis8L2Rpdj4KKzxwPlZlcmlmaWVzIHRoYXQgc2VsZWN0aW9uIFVJIGlz
IHN1cHByZXNzZWQgd2hlbiB0aGUgZWRpdGFibGUgcm9vdCBpcyB0cmFuc3BhcmVudC4gVG8gbWFu
dWFsbHkgdGVzdCwgZm9jdXMgdGhlIGJveCBhYm92ZSBhbmQgdmVyaWZ5IHRoYXQ6PC9wPgorPHVs
PgorICAgIDxsaT5UaGUgY2FyZXQgaXMgbm90IHNob3duLjwvbGk+CisgICAgPGxpPlNlbGVjdGlv
biBoaWdobGlnaHRzIGFyZSBub3Qgc2hvd24uPC9saT4KKyAgICA8bGk+VGhlIHNlbGVjdGlvbiBj
YW5ub3QgYmUgY2hhbmdlZCB2aWEgZ2VzdHVyZS48L2xpPgorPC91bD4KKzxkaXY+Q2FyZXQgcmVj
dCBhZnRlciBmb2N1czogPHNwYW4gaWQ9ImNhcmV0LXJlY3QiPjwvc3Bhbj48L2Rpdj4KKzxkaXY+
U2VsZWN0aW9uIHJlY3RzIGFmdGVyIHNlbGVjdGluZyBhbGw6IDxzcGFuIGlkPSJzZWxlY3Rpb24t
cmVjdHMiPjwvc3Bhbj48L2Rpdj4KKzxkaXY+U2VsZWN0aW9uIHN0YXJ0IGdyYWJiZXIgcmVjdCBh
ZnRlciBzZWxlY3RpbmcgYWxsOiA8c3BhbiBpZD0ic3RhcnQtZ3JhYmJlci1yZWN0Ij48L3NwYW4+
PC9kaXY+Cis8ZGl2PlNlbGVjdGlvbiBlbmQgZ3JhYmJlciByZWN0IGFmdGVyIHNlbGVjdGluZyBh
bGw6IDxzcGFuIGlkPSJlbmQtZ3JhYmJlci1yZWN0Ij48L3NwYW4+PC9kaXY+Cis8ZGl2PlNlbGVj
dGlvbiBiZWZvcmUgdGFwOiA8c3BhbiBpZD0ic2VsZWN0aW9uLWJlZm9yZSI+PC9zcGFuPjwvZGl2
PgorPGRpdj5TZWxlY3Rpb24gYWZ0ZXIgdGFwOiA8c3BhbiBpZD0ic2VsZWN0aW9uLWFmdGVyIj48
L3NwYW4+PC9kaXY+Cis8c2NyaXB0PgorY3VycmVudFNlbGVjdGlvbkFzU3RyaW5nID0gIiI7Citj
dXJyZW50U2VsZWN0aW9uQ2hhbmdlQ291bnQgPSAwOworbG9hZENvdW50ID0gMDsKKworYWRkRXZl
bnRMaXN0ZW5lcigibG9hZCIsIHJ1blRlc3QpOworYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIs
IGV2ZW50ID0+IHsKKyAgICB3aW5kb3cuY3VycmVudFNlbGVjdGlvbkFzU3RyaW5nID0gZXZlbnQu
ZGF0YTsKKyAgICBjdXJyZW50U2VsZWN0aW9uQ2hhbmdlQ291bnQrKzsKK30pOworCitmdW5jdGlv
biByZWN0VG9TdHJpbmcocmVjdCkgeworICAgIHJldHVybiBgKGxlZnQgPSAke01hdGgucm91bmQo
cmVjdC5sZWZ0KX0sIHRvcCA9ICR7TWF0aC5yb3VuZChyZWN0LnRvcCl9LCB3aWR0aCA9ICR7TWF0
aC5yb3VuZChyZWN0LndpZHRoKX0sIGhlaWdodCA9ICR7TWF0aC5yb3VuZChyZWN0LmhlaWdodCl9
KWA7Cit9CisKK2FzeW5jIGZ1bmN0aW9uIHdhaXRGb3JTZWxlY3Rpb25DaGFuZ2VJblN1YmZyYW1l
KGFjdGlvbnMpCit7CisgICAgY29uc3QgcHJldmlvdXNTZWxlY3Rpb25DaGFuZ2VDb3VudCA9IGN1
cnJlbnRTZWxlY3Rpb25DaGFuZ2VDb3VudDsKKyAgICBhY3Rpb25zKCk7CisgICAgd2hpbGUgKHBy
ZXZpb3VzU2VsZWN0aW9uQ2hhbmdlQ291bnQgPT0gY3VycmVudFNlbGVjdGlvbkNoYW5nZUNvdW50
KQorICAgICAgICBhd2FpdCBuZXcgUHJvbWlzZShyZXF1ZXN0QW5pbWF0aW9uRnJhbWUpOworfQor
Cithc3luYyBmdW5jdGlvbiBydW5UZXN0KCkgeworICAgIGlmICgrK2xvYWRDb3VudCA8IDIpCisg
ICAgICAgIHJldHVybjsKKworICAgIGlmICghd2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHJl
dHVybjsKKworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgIHRlc3RSdW5uZXIud2Fp
dFVudGlsRG9uZSgpOworCisgICAgYXdhaXQgd2FpdEZvclNlbGVjdGlvbkNoYW5nZUluU3ViZnJh
bWUoYXN5bmMgKCkgPT4gYXdhaXQgVUlIZWxwZXIuYWN0aXZhdGVBbmRXYWl0Rm9ySW5wdXRTZXNz
aW9uQXQoMTYwLCAxNjApKTsKKyAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIjY2FyZXQtcmVj
dCIpLnRleHRDb250ZW50ID0gcmVjdFRvU3RyaW5nKGF3YWl0IFVJSGVscGVyLmdldFVJQ2FyZXRW
aWV3UmVjdCgpKTsKKworICAgIGF3YWl0IHdhaXRGb3JTZWxlY3Rpb25DaGFuZ2VJblN1YmZyYW1l
KCgpID0+IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoImlmcmFtZSIpLmNvbnRlbnRXaW5kb3cuc2Vs
ZWN0QWxsKCkpOworICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIiNzdGFydC1ncmFiYmVyLXJl
Y3QiKS50ZXh0Q29udGVudCA9IHJlY3RUb1N0cmluZyhhd2FpdCBVSUhlbHBlci5nZXRTZWxlY3Rp
b25TdGFydEdyYWJiZXJWaWV3UmVjdCgpKTsKKyAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIj
ZW5kLWdyYWJiZXItcmVjdCIpLnRleHRDb250ZW50ID0gcmVjdFRvU3RyaW5nKGF3YWl0IFVJSGVs
cGVyLmdldFNlbGVjdGlvbkVuZEdyYWJiZXJWaWV3UmVjdCgpKTsKKworICAgIGF3YWl0IHdhaXRG
b3JTZWxlY3Rpb25DaGFuZ2VJblN1YmZyYW1lKCgpID0+IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3Io
ImlmcmFtZSIpLmNvbnRlbnRXaW5kb3cuY29sbGFwc2VUb0VuZCgpKTsKKyAgICBkb2N1bWVudC5x
dWVyeVNlbGVjdG9yKCIjc2VsZWN0aW9uLWJlZm9yZSIpLnRleHRDb250ZW50ID0gY3VycmVudFNl
bGVjdGlvbkFzU3RyaW5nOworCisgICAgYXdhaXQgVUlIZWxwZXIudGFwQXQoMzIsIDMyKTsKKyAg
ICBhd2FpdCBuZXcgUHJvbWlzZShyZXF1ZXN0QW5pbWF0aW9uRnJhbWUpOworICAgIGRvY3VtZW50
LnF1ZXJ5U2VsZWN0b3IoIiNzZWxlY3Rpb24tYWZ0ZXIiKS50ZXh0Q29udGVudCA9IGN1cnJlbnRT
ZWxlY3Rpb25Bc1N0cmluZzsKKworICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworfQorPC9z
Y3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5n
L3NlbGVjdGlvbi9pb3MvaGlkZS1zZWxlY3Rpb24taW4taGlkZGVuLWNvbnRlbnRlZGl0YWJsZS5o
dG1sIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vaW9zL2hpZGUtc2VsZWN0aW9uLWlu
LWhpZGRlbi1jb250ZW50ZWRpdGFibGUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lMWIwOTM2NzUxNTc3Yjg0
MmFhNjI0Y2U5Y2E2YWZlM2Q0M2E3ZDM5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
ZWRpdGluZy9zZWxlY3Rpb24vaW9zL2hpZGUtc2VsZWN0aW9uLWluLWhpZGRlbi1jb250ZW50ZWRp
dGFibGUuaHRtbApAQCAtMCwwICsxLDg1IEBACis8IURPQ1RZUEUgaHRtbD4gPCEtLSB3ZWJraXQt
dGVzdC1ydW5uZXIgWyB1c2VGbGV4aWJsZVZpZXdwb3J0PXRydWUgXSAtLT4KKzxodG1sPgorPGhl
YWQ+Cis8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCB1
c2VyLXNjYWxhYmxlPW5vIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvdWktaGVs
cGVyLmpzIj48L3NjcmlwdD4KKzxzdHlsZT4KK2JvZHksIGh0bWwgeworICAgIHdpZHRoOiAxMDAl
OworICAgIGhlaWdodDogMTAwJTsKKyAgICBtYXJnaW46IDA7Cit9CisKKy5jb250YWluZXIgewor
ICAgIHdpZHRoOiAzMjBweDsKKyAgICBoZWlnaHQ6IDMyMHB4OworICAgIGJvcmRlcjogc29saWQg
MnB4IHNpbHZlcjsKKyAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OworfQorCisjZWRpdG9yIHsK
KyAgICBvcGFjaXR5OiAwLjAwMTsKKyAgICB3aWR0aDogaW5oZXJpdDsKKyAgICBoZWlnaHQ6IGlu
aGVyaXQ7CisgICAgZm9udC1zaXplOiAyNHB4OworfQorPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5
PgorPGRpdiBjbGFzcz0iY29udGFpbmVyIj4KKyAgICA8ZGl2IGlkPSJlZGl0b3IiIGNvbnRlbnRl
ZGl0YWJsZT4KKyAgICAgICAgSGVyZSdzIHRvIHRoZSBjcmF6eSBvbmVzLCB0aGUgbWlzZml0cywg
dGhlIHJlYmVscywgdGhlIHRyb3VibGVtYWtlcnMsIHRoZSByb3VuZCBwZWdzIGluIHRoZSBzcXVh
cmUgaG9sZXMuCisgICAgICAgIFRoZSBvbmVzIHdobyBzZWUgdGhpbmdzIGRpZmZlcmVudGx5LiBU
aGV5J3JlIG5vdCBmb25kIG9mIHJ1bGVzLiBZb3UgY2FuIHF1b3RlIHRoZW0sIGRpc2FncmVlIHdp
dGggdGhlbSwgZ2xvcmlmeSBvciB2aWxpZnkgdGhlbSwgYnV0IHRoZSBvbmx5IHRoaW5nIHlvdSBj
YW4ndCBkbyBpcyBpZ25vcmUgdGhlbSBiZWNhdXNlIHRoZXkgY2hhbmdlIHRoaW5ncy4KKyAgICA8
L2Rpdj4KKzwvZGl2PgorPHA+VmVyaWZpZXMgdGhhdCBzZWxlY3Rpb24gVUkgaXMgc3VwcHJlc3Nl
ZCB3aGVuIHRoZSBlZGl0YWJsZSByb290IGlzIHRyYW5zcGFyZW50LiBUbyBtYW51YWxseSB0ZXN0
LCBmb2N1cyB0aGUgYm94IGFib3ZlIGFuZCB2ZXJpZnkgdGhhdDo8L3A+Cis8dWw+CisgICAgPGxp
PlRoZSBjYXJldCBpcyBub3Qgc2hvd24uPC9saT4KKyAgICA8bGk+U2VsZWN0aW9uIGhpZ2hsaWdo
dHMgYXJlIG5vdCBzaG93bi48L2xpPgorICAgIDxsaT5UaGUgc2VsZWN0aW9uIGNhbm5vdCBiZSBj
aGFuZ2VkIHZpYSBnZXN0dXJlLjwvbGk+Cis8L3VsPgorPGRpdj5DYXJldCByZWN0IGFmdGVyIGZv
Y3VzOiA8c3BhbiBpZD0iY2FyZXQtcmVjdCI+PC9zcGFuPjwvZGl2PgorPGRpdj5TZWxlY3Rpb24g
cmVjdHMgYWZ0ZXIgc2VsZWN0aW5nIGFsbDogPHNwYW4gaWQ9InNlbGVjdGlvbi1yZWN0cyI+PC9z
cGFuPjwvZGl2PgorPGRpdj5TZWxlY3Rpb24gc3RhcnQgZ3JhYmJlciByZWN0IGFmdGVyIHNlbGVj
dGluZyBhbGw6IDxzcGFuIGlkPSJzdGFydC1ncmFiYmVyLXJlY3QiPjwvc3Bhbj48L2Rpdj4KKzxk
aXY+U2VsZWN0aW9uIGVuZCBncmFiYmVyIHJlY3QgYWZ0ZXIgc2VsZWN0aW5nIGFsbDogPHNwYW4g
aWQ9ImVuZC1ncmFiYmVyLXJlY3QiPjwvc3Bhbj48L2Rpdj4KKzxkaXY+U2VsZWN0aW9uIGJlZm9y
ZSB0YXA6IDxzcGFuIGlkPSJzZWxlY3Rpb24tYmVmb3JlIj48L3NwYW4+PC9kaXY+Cis8ZGl2PlNl
bGVjdGlvbiBhZnRlciB0YXA6IDxzcGFuIGlkPSJzZWxlY3Rpb24tYWZ0ZXIiPjwvc3Bhbj48L2Rp
dj4KKzxzY3JpcHQ+CitmdW5jdGlvbiByZWN0VG9TdHJpbmcocmVjdCkgeworICAgIHJldHVybiBg
KGxlZnQgPSAke01hdGgucm91bmQocmVjdC5sZWZ0KX0sIHRvcCA9ICR7TWF0aC5yb3VuZChyZWN0
LnRvcCl9LCB3aWR0aCA9ICR7TWF0aC5yb3VuZChyZWN0LndpZHRoKX0sIGhlaWdodCA9ICR7TWF0
aC5yb3VuZChyZWN0LmhlaWdodCl9KWA7Cit9CisKK2Z1bmN0aW9uIHNlbGVjdGlvblRvU3RyaW5n
KCkgeworICAgIGNvbnN0IHNlbGVjdGlvbiA9IGdldFNlbGVjdGlvbigpOworICAgIGlmICghc2Vs
ZWN0aW9uLnJhbmdlQ291bnQpCisgICAgICAgIHJldHVybiAiKG5vIHNlbGVjdGlvbikiOworCisg
ICAgY29uc3QgcmFuZ2UgPSBzZWxlY3Rpb24uZ2V0UmFuZ2VBdCgwKTsKKyAgICByZXR1cm4gYCgk
e3JhbmdlLnN0YXJ0Q29udGFpbmVyfSMke3JhbmdlLnN0YXJ0T2Zmc2V0fSwgJHtyYW5nZS5lbmRD
b250YWluZXJ9IyR7cmFuZ2UuZW5kT2Zmc2V0fSlgOworfQorCisoYXN5bmMgKCkgPT4geworICAg
IGlmICghd2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHJldHVybjsKKworICAgIHRlc3RSdW5u
ZXIuZHVtcEFzVGV4dCgpOworICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworCisgICAg
YXdhaXQgVUlIZWxwZXIuYWN0aXZhdGVBbmRXYWl0Rm9ySW5wdXRTZXNzaW9uQXQoMTYwLCAxNjAp
OworICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIiNjYXJldC1yZWN0IikudGV4dENvbnRlbnQg
PSByZWN0VG9TdHJpbmcoYXdhaXQgVUlIZWxwZXIuZ2V0VUlDYXJldFZpZXdSZWN0KCkpOworCisg
ICAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoInNlbGVjdEFsbCIpOworICAgIGRvY3VtZW50LnF1ZXJ5
U2VsZWN0b3IoIiNzZWxlY3Rpb24tcmVjdHMiKS50ZXh0Q29udGVudCA9IChhd2FpdCBVSUhlbHBl
ci5nZXRVSVNlbGVjdGlvblZpZXdSZWN0cygpKS5tYXAocmVjdFRvU3RyaW5nKS5qb2luKCIsICIp
OworICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIiNzdGFydC1ncmFiYmVyLXJlY3QiKS50ZXh0
Q29udGVudCA9IHJlY3RUb1N0cmluZyhhd2FpdCBVSUhlbHBlci5nZXRTZWxlY3Rpb25TdGFydEdy
YWJiZXJWaWV3UmVjdCgpKTsKKyAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIjZW5kLWdyYWJi
ZXItcmVjdCIpLnRleHRDb250ZW50ID0gcmVjdFRvU3RyaW5nKGF3YWl0IFVJSGVscGVyLmdldFNl
bGVjdGlvbkVuZEdyYWJiZXJWaWV3UmVjdCgpKTsKKworICAgIGdldFNlbGVjdGlvbigpLmNvbGxh
cHNlVG9FbmQoKTsKKyAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIjc2VsZWN0aW9uLWJlZm9y
ZSIpLnRleHRDb250ZW50ID0gc2VsZWN0aW9uVG9TdHJpbmcoKTsKKyAgICBhd2FpdCBVSUhlbHBl
ci50YXBBdCgzMiwgMzIpOworICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIiNzZWxlY3Rpb24t
YWZ0ZXIiKS50ZXh0Q29udGVudCA9IHNlbGVjdGlvblRvU3RyaW5nKCk7CisKKyAgICB0ZXN0UnVu
bmVyLm5vdGlmeURvbmUoKTsKK30pKCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3Jlc291cmNlcy91aS1oZWxwZXIuanMgYi9MYXlvdXRUZXN0
cy9yZXNvdXJjZXMvdWktaGVscGVyLmpzCmluZGV4IDcwY2U0YWNlODYxMDJkOWYxZDA2ZDg2ZDkw
ZWY1ZTE2NTg4MDJhNmEuLmY0YTYxODExMmRjMjg0M2UyYjg5NGNjNWVhMjE4Yjk1MWExZTg3NjEg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3Jlc291cmNlcy91aS1oZWxwZXIuanMKKysrIGIvTGF5
b3V0VGVzdHMvcmVzb3VyY2VzL3VpLWhlbHBlci5qcwpAQCAtMTYzLDYgKzE2MywzOCBAQCB3aW5k
b3cuVUlIZWxwZXIgPSBjbGFzcyBVSUhlbHBlciB7CiAgICAgfQogCiAgICAgc3RhdGljIGdldFVJ
U2VsZWN0aW9uUmVjdHMoKQorICAgIHsKKyAgICAgICAgaWYgKCF0aGlzLmlzV2ViS2l0MigpIHx8
ICF0aGlzLmlzSU9TKCkpCisgICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7CisK
KyAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4geworICAgICAgICAgICAgdGVz
dFJ1bm5lci5ydW5VSVNjcmlwdChgKGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIHVpQ29u
dHJvbGxlci5kb0FmdGVyTmV4dFN0YWJsZVByZXNlbnRhdGlvblVwZGF0ZShmdW5jdGlvbigpIHsK
KyAgICAgICAgICAgICAgICAgICAgdWlDb250cm9sbGVyLnVpU2NyaXB0Q29tcGxldGUoSlNPTi5z
dHJpbmdpZnkodWlDb250cm9sbGVyLnRleHRTZWxlY3Rpb25SYW5nZVJlY3RzKSk7CisgICAgICAg
ICAgICAgICAgfSk7CisgICAgICAgICAgICB9KSgpYCwganNvblN0cmluZyA9PiB7CisgICAgICAg
ICAgICAgICAgcmVzb2x2ZShKU09OLnBhcnNlKGpzb25TdHJpbmcpKTsKKyAgICAgICAgICAgIH0p
OworICAgICAgICB9KTsKKyAgICB9CisKKyAgICBzdGF0aWMgZ2V0VUlDYXJldFZpZXdSZWN0KCkK
KyAgICB7CisgICAgICAgIGlmICghdGhpcy5pc1dlYktpdDIoKSB8fCAhdGhpcy5pc0lPUygpKQor
ICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpOworCisgICAgICAgIHJldHVybiBu
ZXcgUHJvbWlzZShyZXNvbHZlID0+IHsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIucnVuVUlTY3Jp
cHQoYChmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICB1aUNvbnRyb2xsZXIuZG9BZnRlck5l
eHRTdGFibGVQcmVzZW50YXRpb25VcGRhdGUoZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAg
ICAgIHVpQ29udHJvbGxlci51aVNjcmlwdENvbXBsZXRlKEpTT04uc3RyaW5naWZ5KHVpQ29udHJv
bGxlci5zZWxlY3Rpb25DYXJldFZpZXdSZWN0KSk7CisgICAgICAgICAgICAgICAgfSk7CisgICAg
ICAgICAgICB9KSgpYCwganNvblN0cmluZyA9PiB7CisgICAgICAgICAgICAgICAgcmVzb2x2ZShK
U09OLnBhcnNlKGpzb25TdHJpbmcpKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9KTsKKyAg
ICB9CisKKyAgICBzdGF0aWMgZ2V0VUlTZWxlY3Rpb25WaWV3UmVjdHMoKQogICAgIHsKICAgICAg
ICAgaWYgKCF0aGlzLmlzV2ViS2l0MigpIHx8ICF0aGlzLmlzSU9TKCkpCiAgICAgICAgICAgICBy
ZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7Cg==
</data>
<flag name="review"
          id="371817"
          type_id="1"
          status="+"
          setter="simon.fraser"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>354689</attachid>
            <date>2018-11-13 12:25:57 -0800</date>
            <delta_ts>2018-11-13 12:51:37 -0800</delta_ts>
            <desc>Patch for EWS</desc>
            <filename>bug-191442-20181113122556.patch</filename>
            <type>text/plain</type>
            <size>61780</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM4MTMyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTYyNjc3NzFmZmYwMTJi
MTBmMDI0MzQ4Yzc3ZWU4Yzk1YTEzNWZiNi4uOWZkNWE0MGE1MWE0MzFkZjE5Y2ZmYWE3NmFlYjFk
MDg4NTBjMGIyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDE4LTExLTEzICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtpT1NdIERvIG5v
dCBzaG93IHNlbGVjdGlvbiBVSSBmb3IgZWRpdGFibGUgZWxlbWVudHMgd2l0aCBvcGFjaXR5IG5l
YXIgemVybworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTkxNDQyCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80NTk1ODYyNT4KKworICAgICAgICBSZXZp
ZXdlZCBieSBTaW1vbiBGcmFzZXIuCisKKyAgICAgICAgVGVzdHM6IGVkaXRpbmcvc2VsZWN0aW9u
L2lvcy9kby1ub3Qtem9vbS10by1mb2N1c2VkLWhpZGRlbi1jb250ZW50ZWRpdGFibGUuaHRtbAor
ICAgICAgICAgICAgICAgZWRpdGluZy9zZWxlY3Rpb24vaW9zL2hpZGUtc2VsZWN0aW9uLWFmdGVy
LWhpZGluZy1jb250ZW50ZWRpdGFibGUuaHRtbAorICAgICAgICAgICAgICAgZWRpdGluZy9zZWxl
Y3Rpb24vaW9zL2hpZGUtc2VsZWN0aW9uLWluLWNvbnRlbnRlZGl0YWJsZS1uZXN0ZWQtdHJhbnNw
YXJlbmN5Lmh0bWwKKyAgICAgICAgICAgICAgIGVkaXRpbmcvc2VsZWN0aW9uL2lvcy9oaWRlLXNl
bGVjdGlvbi1pbi1oaWRkZW4tY29udGVudGVkaXRhYmxlLWZyYW1lLmh0bWwKKyAgICAgICAgICAg
ICAgIGVkaXRpbmcvc2VsZWN0aW9uL2lvcy9oaWRlLXNlbGVjdGlvbi1pbi1oaWRkZW4tY29udGVu
dGVkaXRhYmxlLmh0bWwKKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0Ojppc1RyYW5zcGFyZW50UmVzcGVjdGluZ1Bh
cmVudEZyYW1lcyBjb25zdCk6CisKKyAgICAgICAgQWRkIGEgaGVscGVyIGZ1bmN0aW9uIHRvIGRl
dGVybWluZSB3aGV0aGVyIGEgUmVuZGVyT2JqZWN0IGlzIGNvbnRhaW5lZCB3aXRoaW4gYSB0cmFu
c3BhcmVudCBsYXllciwgdGFraW5nIHBhcmVudAorICAgICAgICBmcmFtZXMgaW50byBhY2NvdW50
LiBBIGxheWVyIGlzIGNvbnNpZGVyZWQgdHJhbnNwYXJlbnQgaWYgaXRzIG9wYWNpdHkgaXMgbGVz
cyB0aGFuIGEgc21hbGwgdGhyZXNob2xkIChpLmUuIDAuMDEpLgorICAgICAgICBPcGFjaXR5IG9u
IGFuY2VzdG9yIGVsZW1lbnRzIGlzIGFwcGxpZWQgbXVsdGlwbGljYXRpdmVseS4KKworICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJPYmplY3QuaDoKKwogMjAxOC0xMS0xMyAgQ2hhcmxpZSBUdXJu
ZXIgIDxjdHVybmVyQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0VNRV1bR1N0cmVhbWVyXSBNYWtl
IENETUluc3RhbmNlJ3MgYXZhaWxhYmxlIGluIGRlY3J5cHRvcnMsIGFuZCBmYWN0b3Igb3V0IHNv
bWUgRU1FIHV0aWxpdHkgY2xhc3Nlcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggNDI5YjcxMTYyZWQwOGQwY2Q4NDEz
ODZjMTc5MDJjZTY5ZTA1YTU0Yi4uODI0OWVmODhhOWI3YTY3ZGUwYzdhMTk0NTk5ODE5YjM0ZjJi
YmEwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw3OSBAQAorMjAxOC0xMS0xMyAgV2Vuc29uIEhzaWVo
ICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBbaU9TXSBEbyBub3Qgc2hvdyBz
ZWxlY3Rpb24gVUkgZm9yIGVkaXRhYmxlIGVsZW1lbnRzIHdpdGggb3BhY2l0eSBuZWFyIHplcm8K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MTQ0Mgor
ICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDU5NTg2MjU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
U2ltb24gRnJhc2VyLgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBzdXBwcmVzc2luZyBuYXRp
dmUgc2VsZWN0aW9uIFVJIChmb3IgaW5zdGFuY2UsIHNlbGVjdGlvbiBoaWdobGlnaHQgdmlld3Ms
IHNlbGVjdGlvbiBoYW5kbGVzLCBhbmQKKyAgICAgICAgc2VsZWN0aW9uLXJlbGF0ZWQgZ2VzdHVy
ZXMpIHdoZW4gdGhlIHNlbGVjdGlvbiBpcyBpbnNpZGUgYSB0cmFuc3BhcmVudCBlZGl0YWJsZSBl
bGVtZW50LiBUaGlzIGhlbHBzIG1haW50YWluCisgICAgICAgIGNvbXBhdGliaWxpdHkgd2l0aCB0
ZXh0IGVkaXRvcnMgdGhhdCB3b3JrIGJ5IGNhcHR1cmluZyBrZXkgZXZlbnRzIGFuZCBpbnB1dCBl
dmVudHMgaGlkZGVuIGNvbnRlbnRlZGl0YWJsZQorICAgICAgICBlbGVtZW50cywgYW5kIHJlZmxl
Y3QgdGhlc2UgY2hhbmdlcyBpbiBkaWZmZXJlbnQgZG9jdW1lbnQgb3IgZGlmZmVyZW50IHBhcnQg
b2YgdGhlIGRvY3VtZW50LgorCisgICAgICAgIFNpbmNlIHNlbGVjdGlvbiBVSSBpcyByZW5kZXJl
ZCBpbiB0aGUgVUkgcHJvY2VzcyBvbiBpT1MgdXNpbmcgZWxlbWVudCBnZW9tZXRyeSBwcm9wYWdh
dGVkIGZyb20gdGhlIHdlYiBwcm9jZXNzLAorICAgICAgICBzZWxlY3Rpb24gcmVuZGVyaW5nIGlz
IGVudGlyZWx5IGRlY291cGxlZCBmcm9tIHRoZSBwcm9jZXNzIG9mIHBhaW50aW5nIGluIHRoZSB3
ZWIgcHJvY2Vzcy4gVGhpcyBtZWFucyB0aGF0IGlmCisgICAgICAgIHRoZSBlZGl0YWJsZSByb290
IGhhcyBhbiBvcGFjaXR5IG9mIDAsIHdlIHdvdWxkIGNvcnJlY3RseSBoaWRlIHRoZSBjYXJldCBh
bmQgc2VsZWN0aW9uIG9uIG1hY09TLCBidXQgZHJhdyBvdmVyCisgICAgICAgIHRoZSB0cmFuc3Bh
cmVudCBlbGVtZW50IG9uIGlPUy4gV2hlbiB0aGVzZSBoaWRkZW4gZWRpdGFibGUgZWxlbWVudHMg
YXJlIGZvY3VzZWQsIHRoaXMgb2Z0ZW4gcmVzdWx0cyBpbiB1bndhbnRlZAorICAgICAgICBiZWhh
dmlvcnMsIHN1Y2ggYXMgZG91YmxlIGNhcmV0IHBhaW50aW5nLCBuYXRpdmUgYW5kIGN1c3RvbSBz
ZWxlY3Rpb24gVUkgZnJvbSB0aGUgcGFnZSBiZWluZyBkcmF3biBvbiB0b3Agb2Ygb25lCisgICAg
ICAgIGFub3RoZXIsIGFuZCB0aGUgYWJpbGl0eSB0byBjaGFuZ2Ugc2VsZWN0aW9uIHZpYSB0YXAg
YW5kIGxvdXBlIGdlc3R1cmVzIHdpdGhpbiBoaWRkZW4gdGV4dC4KKworICAgICAgICBUbyBmaXgg
dGhpcywgd2UgY29tcHV0ZSB3aGV0aGVyIHRoZSBmb2N1c2VkIGVsZW1lbnQgaXMgdHJhbnNwYXJl
bnQgd2hlbiBhbiBlbGVtZW50IGlzIGZvY3VzZWQsIG9yIHdoZW4gdGhlCisgICAgICAgIHNlbGVj
dGlvbiBjaGFuZ2VzLCBhbmQgc2VuZCB0aGlzIGluZm9ybWF0aW9uIG92ZXIgdG8gdGhlIFVJIHBy
b2Nlc3MgdmlhIGBBc3Npc3RlZE5vZGVJbmZvcm1hdGlvbmAgYW5kCisgICAgICAgIGBFZGl0b3JT
dGF0ZWAuIEluIHRoZSBVSSBwcm9jZXNzLCB3ZSB0aGVuIHJlc3BlY3QgdGhpcyBpbmZvcm1hdGlv
biBieSBzdXBwcmVzc2luZyB0aGUgc2VsZWN0aW9uIGFzc2lzdGFudCBpZiB0aGUKKyAgICAgICAg
Zm9jdXNlZCBlbGVtZW50IGlzIHRyYW5zcGFyZW50OyB0aGlzIGRpc2FibGVzIHNob3dpbmcgYW5k
IGxheWluZyBvdXQgc2VsZWN0aW9uIHZpZXdzLCBhcyB3ZWxsIGFzIGdlc3R1cmVzCisgICAgICAg
IGFzc29jaWF0ZWQgd2l0aCBzZWxlY3Rpb24gb3ZlcmxheXMuIEhvd2V2ZXIsIHRoaXMgc3RpbGwg
YWxsb3dzIGZvciBjb250ZXh0dWFsIGF1dG9jb3JyZWN0aW9uIGFuZCBzcGVsbCBjaGVja2luZy4K
KworICAgICAgICAqIFNoYXJlZC9Bc3Npc3RlZE5vZGVJbmZvcm1hdGlvbi5jcHA6CisgICAgICAg
IChXZWJLaXQ6OkFzc2lzdGVkTm9kZUluZm9ybWF0aW9uOjplbmNvZGUgY29uc3QpOgorICAgICAg
ICAoV2ViS2l0OjpBc3Npc3RlZE5vZGVJbmZvcm1hdGlvbjo6ZGVjb2RlKToKKyAgICAgICAgKiBT
aGFyZWQvQXNzaXN0ZWROb2RlSW5mb3JtYXRpb24uaDoKKyAgICAgICAgKiBTaGFyZWQvRWRpdG9y
U3RhdGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpFZGl0b3JTdGF0ZTo6UG9zdExheW91dERhdGE6
OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OkVkaXRvclN0YXRlOjpQb3N0TGF5b3V0
RGF0YTo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvRWRpdG9yU3RhdGUuaDoKKworICAgICAg
ICBBZGQgYGVsZW1lbnRJc1RyYW5zcGFyZW50YCBmbGFncywgYW5kIGFsc28gYWRkIGJvaWxlcnBs
YXRlIElQQyBjb2RlLgorCisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50
ZXJhY3Rpb24ubW06CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgX2Rpc3BsYXlGb3JtTm9kZUlu
cHV0Vmlld10pOgorCisgICAgICAgIFByZXZlbnQgem9vbWluZyB0byB0aGUgZm9jdXNlZCBlbGVt
ZW50IGlmIHRoZSBmb2N1c2VkIGVsZW1lbnQgaXMgaGlkZGVuLgorCisgICAgICAgICgtW1dLQ29u
dGVudFZpZXcgaGFzU2VsZWN0YWJsZVBvc2l0aW9uQXRQb2ludDpdKToKKyAgICAgICAgKC1bV0tD
b250ZW50VmlldyBwb2ludElzTmVhck1hcmtlZFRleHQ6XSk6CisgICAgICAgICgtW1dLQ29udGVu
dFZpZXcgdGV4dEludGVyYWN0aW9uR2VzdHVyZTpzaG91bGRCZWdpbkF0UG9pbnQ6XSk6CisKKyAg
ICAgICAgRG9uJ3QgYWxsb3cgdGhlc2UgdGV4dCBpbnRlcmFjdGlvbiBnZXN0dXJlcyB0byBiZWdp
biB3aGlsZSBzdXBwcmVzc2luZyB0aGUgc2VsZWN0aW9uIGFzc2lzdGFudC4KKworICAgICAgICAo
LVtXS0NvbnRlbnRWaWV3IF9zdGFydEFzc2lzdGluZ05vZGU6dXNlcklzSW50ZXJhY3Rpbmc6Ymx1
clByZXZpb3VzTm9kZTpjaGFuZ2luZ0FjdGl2aXR5U3RhdGU6dXNlck9iamVjdDpdKToKKworICAg
ICAgICBXaGVuIGFuIGVsZW1lbnQgaXMgZm9jdXNlZCwgYmVnaW4gc3VwcHJlc3NpbmcgdGhlIHNl
bGVjdGlvbiBhc3Npc3RhbnQgaWYgdGhlIGVsZW1lbnQgaXMgZnVsbHkgdHJhbnNwYXJlbnQuCisK
KyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfc3RvcEFzc2lzdGluZ05vZGVdKToKKworICAgICAg
ICBXaGVuIHRoZSBmb2N1c2VkIGVsZW1lbnQgaXMgYmx1cnJlZCwgcmVzZXQgc3RhdGUgYnkgZW5k
aW5nIHNlbGVjdGlvbiBhc3Npc3RhbnQgc3VwcHJlc3Npb24gKGFkZGl0aW9uYWxseQorICAgICAg
ICByZWFjdGl2YXRpbmcgdGhlIHNlbGVjdGlvbiBhc3Npc3RhbnQgaWYgbmVlZGVkKS4gVGhpcyBl
bnN1cmVzIHRoYXQgc2VsZWN0aW9uIGluIG5vbi1lZGl0YWJsZSB0ZXh0IGlzbid0IGJyb2tlbgor
ICAgICAgICBhZnRlciBmb2N1c2luZyBhIGhpZGRlbiBlZGl0YWJsZSBlbGVtZW50LgorCisgICAg
ICAgICgtW1dLQ29udGVudFZpZXcgX3VwZGF0ZUNoYW5nZWRTZWxlY3Rpb246XSk6CisKKyAgICAg
ICAgSWYgbmVlZGVkLCBzdXBwcmVzcyBvciB1bi1zdXBwcmVzcyB0aGUgc2VsZWN0aW9uIGFzc2lz
dGFudCB3aGVuIHRoZSBzZWxlY3Rpb24gY2hhbmdlcy4gT24gY2VydGFpbiByaWNoIHRleHQKKyAg
ICAgICAgZWRpdG9ycywgYSBjb21iaW5hdGlvbiBvZiBjdXN0b20gc2VsZWN0aW9uIFVJIGFuZCBu
YXRpdmUgc2VsZWN0aW9uIFVJIGlzIHVzZWQuIEZvciBpbnN0YW5jZSwgb24gTWljcm9zb2Z0IE9m
ZmljZQorICAgICAgICAzNjUsIGNhcmV0IHNlbGVjdGlvbnMgYXJlIHJlbmRlcmVkIHVzaW5nIHRo
ZSBuYXRpdmUgY2FyZXQgdmlldywgYnV0IGFzIHNvb24gYXMgdGhlIHNlbGVjdGlvbiBiZWNvbWVz
IHJhbmdlZCwgdGhlCisgICAgICAgIGVkaXRhYmxlIHJvb3QgYmVjb21lcyBmdWxseSB0cmFuc3Bh
cmVudCwgYW5kIE9mZmljZSdzIHNlbGVjdGlvbiBVSSB0YWtlcyBvdmVyLgorCisgICAgICAgICgt
W1dLQ29udGVudFZpZXcgX3Nob3VsZFN1cHByZXNzU2VsZWN0aW9uQ29tbWFuZHNdKToKKworICAg
ICAgICBPdmVycmlkZSB0aGlzIFVJS2l0IFNQSSBob29rIHRvIHN1cHByZXNzIHNlbGVjdGlvbiBj
b21tYW5kcyAoZS5nLiB0aGUgY2FsbG91dCBiYXIpIHdoZW4gc3VwcHJlc3NpbmcgdGhlCisgICAg
ICAgIHNlbGVjdGlvbiBhc3Npc3RhbnQuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
aW9zL1dlYlBhZ2VJT1MubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnBsYXRmb3JtRWRp
dG9yU3RhdGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpnZXRBc3Npc3RlZE5v
ZGVJbmZvcm1hdGlvbik6CisKKyAgICAgICAgQ29tcHV0ZSBhbmQgc2V0IGBlbGVtZW50SXNUcmFu
c3BhcmVudGAgdXNpbmcgdGhlIGFzc2lzdGVkIG5vZGUuCisKIDIwMTgtMTEtMTMgIEFsaSBKdW1h
ICA8YWp1bWFAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFR1cm4gSW50ZXJzZWN0aW9uIE9ic2Vy
dmVyIG9uIGJ5IGRlZmF1bHQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5j
cHAKaW5kZXggNDI1NTEwNWUyNDRmZGQ1MTdmMzQ5NGJhYjY5OTI4YjMyMzk3YTQ2ZC4uZDVmODA4
NWU4MzY4MDBlN2UxNjRiNmYzN2M1YTBlNWQ4MmQyNDk0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKQEAgLTE1MTQsNiArMTUxNCwzNSBAQCB2b2lkIFJlbmRl
ck9iamVjdDo6ZGVzdHJveSgpCiAgICAgZGVsZXRlIHRoaXM7CiB9CiAKK2Jvb2wgUmVuZGVyT2Jq
ZWN0Ojppc1RyYW5zcGFyZW50UmVzcGVjdGluZ1BhcmVudEZyYW1lcygpIGNvbnN0Cit7CisgICAg
c3RhdGljIGNvbnN0IGRvdWJsZSBtaW5pbXVtVmlzaWJsZU9wYWNpdHkgPSAwLjAxOworCisgICAg
ZmxvYXQgY3VycmVudE9wYWNpdHkgPSAxOworICAgIGF1dG8qIGxheWVyID0gZW5jbG9zaW5nTGF5
ZXIoKTsKKyAgICB3aGlsZSAobGF5ZXIpIHsKKyAgICAgICAgYXV0byYgbGF5ZXJSZW5kZXJlciA9
IGxheWVyLT5yZW5kZXJlcigpOworICAgICAgICBjdXJyZW50T3BhY2l0eSAqPSBsYXllclJlbmRl
cmVyLnN0eWxlKCkub3BhY2l0eSgpOworICAgICAgICBpZiAoY3VycmVudE9wYWNpdHkgPCBtaW5p
bXVtVmlzaWJsZU9wYWNpdHkpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgICAgICBh
dXRvKiBwYXJlbnRMYXllciA9IGxheWVyLT5wYXJlbnQoKTsKKyAgICAgICAgaWYgKCFwYXJlbnRM
YXllcikgeworICAgICAgICAgICAgaWYgKCFpczxSZW5kZXJWaWV3PihsYXllclJlbmRlcmVyKSkK
KyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgICAgIGF1dG8mIGVuY2xv
c2luZ0ZyYW1lID0gZG93bmNhc3Q8UmVuZGVyVmlldz4obGF5ZXJSZW5kZXJlcikudmlldygpLmZy
YW1lKCk7CisgICAgICAgICAgICBpZiAoZW5jbG9zaW5nRnJhbWUuaXNNYWluRnJhbWUoKSkKKyAg
ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgICAgIGlmIChhdXRvICpmcmFt
ZU93bmVyUmVuZGVyZXIgPSBlbmNsb3NpbmdGcmFtZS5vd25lckVsZW1lbnQoKS0+cmVuZGVyZXIo
KSkKKyAgICAgICAgICAgICAgICBwYXJlbnRMYXllciA9IGZyYW1lT3duZXJSZW5kZXJlci0+ZW5j
bG9zaW5nTGF5ZXIoKTsKKyAgICAgICAgfQorICAgICAgICBsYXllciA9IHBhcmVudExheWVyOwor
ICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKIFBvc2l0aW9uIFJlbmRlck9iamVjdDo6cG9z
aXRpb25Gb3JQb2ludChjb25zdCBMYXlvdXRQb2ludCYgcG9pbnQpCiB7CiAgICAgLy8gRklYTUU6
IFRoaXMgc2hvdWxkIGp1c3QgY3JlYXRlIGEgUG9zaXRpb24gb2JqZWN0IGluc3RlYWQgKHdlYmtp
dC5vcmcvYi8xNjg1NjYpLiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaApp
bmRleCAyZGNlOWRjYzU2OTEzMDkxZjcyOTk0N2ZjNmRmNzI2NGE4ZTQzZjVlLi42NzQ1YzA3NDg1
YzgwY2RiN2MyYmIyZjY5MTkwNGM0Y2Y3OWEwMWQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlck9iamVjdC5oCkBAIC03OTcsNiArNzk3LDggQEAgcHVibGljOgogICAgIHZvaWQgaW5p
dGlhbGl6ZUZyYWdtZW50ZWRGbG93U3RhdGVPbkluc2VydGlvbigpOwogICAgIHZpcnR1YWwgdm9p
ZCBpbnNlcnRlZEludG9UcmVlKCk7CiAKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGlzVHJhbnNw
YXJlbnRSZXNwZWN0aW5nUGFyZW50RnJhbWVzKCkgY29uc3Q7CisKIHByb3RlY3RlZDoKICAgICAv
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KICAgICAvLyBIZWxwZXIg
ZnVuY3Rpb25zLiBEYW5nZXJvdXMgdG8gdXNlIQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
aGFyZWQvQXNzaXN0ZWROb2RlSW5mb3JtYXRpb24uY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
QXNzaXN0ZWROb2RlSW5mb3JtYXRpb24uY3BwCmluZGV4IDllYTVkMTEyOTViOWM1ZTI2MGJhNjY3
MDdiYTkzNWVjY2QxYjFkNTcuLmE4YmQ3YTdmZjkyOTU2MjE2Y2UzMzcyODE5ZGY5MDlmMjM5MTUx
ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Fzc2lzdGVkTm9kZUluZm9ybWF0
aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Bc3Npc3RlZE5vZGVJbmZvcm1hdGlv
bi5jcHAKQEAgLTkxLDYgKzkxLDcgQEAgdm9pZCBBc3Npc3RlZE5vZGVJbmZvcm1hdGlvbjo6ZW5j
b2RlKElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKICAgICBlbmNvZGVyIDw8IHRpdGxlOwog
ICAgIGVuY29kZXIgPDwgYWNjZXB0c0F1dG9maWxsZWRMb2dpbkNyZWRlbnRpYWxzOwogICAgIGVu
Y29kZXIgPDwgaXNBdXRvZmlsbGFibGVVc2VybmFtZUZpZWxkOworICAgIGVuY29kZXIgPDwgZWxl
bWVudElzVHJhbnNwYXJlbnQ7CiAgICAgZW5jb2RlciA8PCByZXByZXNlbnRpbmdQYWdlVVJMOwog
ICAgIGVuY29kZXIuZW5jb2RlRW51bShhdXRvZmlsbEZpZWxkTmFtZSk7CiAgICAgZW5jb2RlciA8
PCBwbGFjZWhvbGRlcjsKQEAgLTE5MSw2ICsxOTIsOSBAQCBib29sIEFzc2lzdGVkTm9kZUluZm9y
bWF0aW9uOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBBc3Npc3RlZE5vZGVJbmZvcm1h
dAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LmlzQXV0b2ZpbGxhYmxlVXNlcm5hbWVG
aWVsZCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAorICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
cmVzdWx0LmVsZW1lbnRJc1RyYW5zcGFyZW50KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCiAg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQucmVwcmVzZW50aW5nUGFnZVVSTCkpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQXNz
aXN0ZWROb2RlSW5mb3JtYXRpb24uaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Fzc2lzdGVkTm9k
ZUluZm9ybWF0aW9uLmgKaW5kZXggNzk3OWVmYjgwNTRhODQxZmU0M2ZlOWQ4NDY4NTU5MWRmNmQ2
ZGFhNi4uMDQ4NDRhMjQxOTY4NjhhOTExYTkzYzIxYTM1YzlmNjMyZTMzZjAzZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQXNzaXN0ZWROb2RlSW5mb3JtYXRpb24uaAorKysgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9Bc3Npc3RlZE5vZGVJbmZvcm1hdGlvbi5oCkBAIC0xMjAsNiAr
MTIwLDcgQEAgc3RydWN0IEFzc2lzdGVkTm9kZUluZm9ybWF0aW9uIHsKICAgICBTdHJpbmcgdGl0
bGU7CiAgICAgYm9vbCBhY2NlcHRzQXV0b2ZpbGxlZExvZ2luQ3JlZGVudGlhbHMgeyBmYWxzZSB9
OwogICAgIGJvb2wgaXNBdXRvZmlsbGFibGVVc2VybmFtZUZpZWxkIHsgZmFsc2UgfTsKKyAgICBi
b29sIGVsZW1lbnRJc1RyYW5zcGFyZW50IHsgZmFsc2UgfTsKICAgICBXZWJDb3JlOjpVUkwgcmVw
cmVzZW50aW5nUGFnZVVSTDsKICAgICBXZWJDb3JlOjpBdXRvZmlsbEZpZWxkTmFtZSBhdXRvZmls
bEZpZWxkTmFtZSB7IFdlYkNvcmU6OkF1dG9maWxsRmllbGROYW1lOjpOb25lIH07CiAgICAgU3Ry
aW5nIHBsYWNlaG9sZGVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvRWRpdG9y
U3RhdGUuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvRWRpdG9yU3RhdGUuY3BwCmluZGV4IGMw
NzNkMzBiODliNzhhNGJiMGRkZmIwZjk3NTY0MTNhMjZiNDkyMTcuLjBhMmJhN2YwMzY3NTk5MTdl
YjM0YzkzNTkwMDVhYmIzZWNjY2U2YTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0VkaXRvclN0YXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9FZGl0b3JTdGF0ZS5j
cHAKQEAgLTEzMSw2ICsxMzEsNyBAQCB2b2lkIEVkaXRvclN0YXRlOjpQb3N0TGF5b3V0RGF0YTo6
ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKICAgICBlbmNvZGVyIDw8IGlzU3Rh
YmxlU3RhdGVVcGRhdGU7CiAgICAgZW5jb2RlciA8PCBpbnNpZGVGaXhlZFBvc2l0aW9uOwogICAg
IGVuY29kZXIgPDwgaGFzUGxhaW5UZXh0OworICAgIGVuY29kZXIgPDwgZWxlbWVudElzVHJhbnNw
YXJlbnQ7CiAgICAgZW5jb2RlciA8PCBjYXJldENvbG9yOwogI2VuZGlmCiAjaWYgUExBVEZPUk0o
TUFDKQpAQCAtMTg3LDYgKzE4OCw4IEBAIGJvb2wgRWRpdG9yU3RhdGU6OlBvc3RMYXlvdXREYXRh
OjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBQb3N0TGF5b3V0RGF0YSYKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0Lmhhc1BsYWluVGV4
dCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3Vs
dC5lbGVtZW50SXNUcmFuc3BhcmVudCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKHJlc3VsdC5jYXJldENvbG9yKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9FZGl0b3JTdGF0ZS5o
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvRWRpdG9yU3RhdGUuaAppbmRleCAwZmEyMzgzZWNlMGZh
MjRhNDkxNjc3ZjQ0MjA4ODhhZjNhMWQ0MWFiLi45ZTMzOTA2NjIxYWQ5NDI1NTZmZGEwM2NjZTEw
Y2IyZjZlNDFhY2ZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9FZGl0b3JTdGF0
ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0VkaXRvclN0YXRlLmgKQEAgLTEwNyw2ICsx
MDcsNyBAQCBzdHJ1Y3QgRWRpdG9yU3RhdGUgewogICAgICAgICBib29sIGlzU3RhYmxlU3RhdGVV
cGRhdGUgeyBmYWxzZSB9OwogICAgICAgICBib29sIGluc2lkZUZpeGVkUG9zaXRpb24geyBmYWxz
ZSB9OwogICAgICAgICBib29sIGhhc1BsYWluVGV4dCB7IGZhbHNlIH07CisgICAgICAgIGJvb2wg
ZWxlbWVudElzVHJhbnNwYXJlbnQgeyBmYWxzZSB9OwogICAgICAgICBXZWJDb3JlOjpDb2xvciBj
YXJldENvbG9yOwogI2VuZGlmCiAjaWYgUExBVEZPUk0oTUFDKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbSBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KaW5kZXgg
NzBjODgzNjc3NDgyZjk5YWYyNjMzMjcyNjkyYzllNjRjNjgzMGQwNC4uYjg4N2I3N2IwMThjODll
YTdiYTU1MTkzMzNhZDFkNDk5YTdhMDhiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCkBAIC0xMzQyLDE2ICsx
MzQyLDE4IEBAIHN0YXRpYyBOU1ZhbHVlICpuc1NpemVGb3JUYXBIaWdobGlnaHRCb3JkZXJSYWRp
dXMoV2ViQ29yZTo6SW50U2l6ZSBib3JkZXJSYWRpdXMsCiAKIC0gKHZvaWQpX2Rpc3BsYXlGb3Jt
Tm9kZUlucHV0VmlldwogewotICAgIC8vIEluIGNhc2UgdXNlciBzY2FsaW5nIGlzIGZvcmNlIGVu
YWJsZWQsIGRvIG5vdCB1c2UgdGhhdCBzY2FsaW5nIHdoZW4gem9vbWluZyBpbiB3aXRoIGFuIGlu
cHV0IGZpZWxkLgotICAgIC8vIFpvb21pbmcgYWJvdmUgdGhlIHBhZ2UncyBkZWZhdWx0IHNjYWxl
IGZhY3RvciBzaG91bGQgb25seSBoYXBwZW4gd2hlbiB0aGUgdXNlciBwZXJmb3JtcyBpdC4KLSAg
ICBbc2VsZiBfem9vbVRvRm9jdXNSZWN0Ol9hc3Npc3RlZE5vZGVJbmZvcm1hdGlvbi5lbGVtZW50
UmVjdAotICAgICAgICBzZWxlY3Rpb25SZWN0Ol9kaWRBY2Nlc3NvcnlUYWJJbml0aWF0ZUZvY3Vz
ID8gSW50UmVjdCgpIDogX2Fzc2lzdGVkTm9kZUluZm9ybWF0aW9uLnNlbGVjdGlvblJlY3QKLSAg
ICAgICAgaW5zaWRlRml4ZWQ6X2Fzc2lzdGVkTm9kZUluZm9ybWF0aW9uLmluc2lkZUZpeGVkUG9z
aXRpb24KLSAgICAgICAgZm9udFNpemU6X2Fzc2lzdGVkTm9kZUluZm9ybWF0aW9uLm5vZGVGb250
U2l6ZQotICAgICAgICBtaW5pbXVtU2NhbGU6X2Fzc2lzdGVkTm9kZUluZm9ybWF0aW9uLm1pbmlt
dW1TY2FsZUZhY3RvcgotICAgICAgICBtYXhpbXVtU2NhbGU6X2Fzc2lzdGVkTm9kZUluZm9ybWF0
aW9uLm1heGltdW1TY2FsZUZhY3Rvcklnbm9yaW5nQWx3YXlzU2NhbGFibGUKLSAgICAgICAgYWxs
b3dTY2FsaW5nOl9hc3Npc3RlZE5vZGVJbmZvcm1hdGlvbi5hbGxvd3NVc2VyU2NhbGluZ0lnbm9y
aW5nQWx3YXlzU2NhbGFibGUgJiYgIWN1cnJlbnRVc2VySW50ZXJmYWNlSWRpb21Jc1BhZCgpCi0g
ICAgICAgIGZvcmNlU2Nyb2xsOihfYXNzaXN0ZWROb2RlSW5mb3JtYXRpb24uaW5wdXRNb2RlID09
IElucHV0TW9kZTo6Tm9uZSkgPyAhY3VycmVudFVzZXJJbnRlcmZhY2VJZGlvbUlzUGFkKCkgOiBb
c2VsZiByZXF1aXJlc0FjY2Vzc29yeVZpZXddXTsKKyAgICBpZiAoIXNlbGYuc3VwcHJlc3NBc3Np
c3RhbnRTZWxlY3Rpb25WaWV3KSB7CisgICAgICAgIC8vIEluIGNhc2UgdXNlciBzY2FsaW5nIGlz
IGZvcmNlIGVuYWJsZWQsIGRvIG5vdCB1c2UgdGhhdCBzY2FsaW5nIHdoZW4gem9vbWluZyBpbiB3
aXRoIGFuIGlucHV0IGZpZWxkLgorICAgICAgICAvLyBab29taW5nIGFib3ZlIHRoZSBwYWdlJ3Mg
ZGVmYXVsdCBzY2FsZSBmYWN0b3Igc2hvdWxkIG9ubHkgaGFwcGVuIHdoZW4gdGhlIHVzZXIgcGVy
Zm9ybXMgaXQuCisgICAgICAgIFtzZWxmIF96b29tVG9Gb2N1c1JlY3Q6X2Fzc2lzdGVkTm9kZUlu
Zm9ybWF0aW9uLmVsZW1lbnRSZWN0CisgICAgICAgICAgICBzZWxlY3Rpb25SZWN0Ol9kaWRBY2Nl
c3NvcnlUYWJJbml0aWF0ZUZvY3VzID8gSW50UmVjdCgpIDogX2Fzc2lzdGVkTm9kZUluZm9ybWF0
aW9uLnNlbGVjdGlvblJlY3QKKyAgICAgICAgICAgIGluc2lkZUZpeGVkOl9hc3Npc3RlZE5vZGVJ
bmZvcm1hdGlvbi5pbnNpZGVGaXhlZFBvc2l0aW9uCisgICAgICAgICAgICBmb250U2l6ZTpfYXNz
aXN0ZWROb2RlSW5mb3JtYXRpb24ubm9kZUZvbnRTaXplCisgICAgICAgICAgICBtaW5pbXVtU2Nh
bGU6X2Fzc2lzdGVkTm9kZUluZm9ybWF0aW9uLm1pbmltdW1TY2FsZUZhY3RvcgorICAgICAgICAg
ICAgbWF4aW11bVNjYWxlOl9hc3Npc3RlZE5vZGVJbmZvcm1hdGlvbi5tYXhpbXVtU2NhbGVGYWN0
b3JJZ25vcmluZ0Fsd2F5c1NjYWxhYmxlCisgICAgICAgICAgICBhbGxvd1NjYWxpbmc6X2Fzc2lz
dGVkTm9kZUluZm9ybWF0aW9uLmFsbG93c1VzZXJTY2FsaW5nSWdub3JpbmdBbHdheXNTY2FsYWJs
ZSAmJiAhY3VycmVudFVzZXJJbnRlcmZhY2VJZGlvbUlzUGFkKCkKKyAgICAgICAgICAgIGZvcmNl
U2Nyb2xsOihfYXNzaXN0ZWROb2RlSW5mb3JtYXRpb24uaW5wdXRNb2RlID09IElucHV0TW9kZTo6
Tm9uZSkgPyAhY3VycmVudFVzZXJJbnRlcmZhY2VJZGlvbUlzUGFkKCkgOiBbc2VsZiByZXF1aXJl
c0FjY2Vzc29yeVZpZXddXTsKKyAgICB9CiAKICAgICBfZGlkQWNjZXNzb3J5VGFiSW5pdGlhdGVG
b2N1cyA9IE5POwogICAgIFtzZWxmIF9lbnN1cmVGb3JtQWNjZXNzb3J5Vmlld107CkBAIC0xNzQ2
LDYgKzE3NDgsOSBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaXNTYW1lUGFpcihVSUdlc3R1cmVSZWNv
Z25pemVyICphLCBVSUdlc3R1cmVSZWNvZ25pemVyICpiLCBVSQogICAgIGlmICghX3dlYlZpZXcu
Y29uZmlndXJhdGlvbi5fdGV4dEludGVyYWN0aW9uR2VzdHVyZXNFbmFibGVkKQogICAgICAgICBy
ZXR1cm4gTk87CiAKKyAgICBpZiAoc2VsZi5zdXBwcmVzc0Fzc2lzdGFudFNlbGVjdGlvblZpZXcp
CisgICAgICAgIHJldHVybiBOTzsKKwogICAgIGlmIChfaW5zcGVjdG9yTm9kZVNlYXJjaEVuYWJs
ZWQpCiAgICAgICAgIHJldHVybiBOTzsKIApAQCAtMTc2OSw2ICsxNzc0LDkgQEAgc3RhdGljIGlu
bGluZSBib29sIGlzU2FtZVBhaXIoVUlHZXN0dXJlUmVjb2duaXplciAqYSwgVUlHZXN0dXJlUmVj
b2duaXplciAqYiwgVUkKICAgICBpZiAoIV93ZWJWaWV3LmNvbmZpZ3VyYXRpb24uX3RleHRJbnRl
cmFjdGlvbkdlc3R1cmVzRW5hYmxlZCkKICAgICAgICAgcmV0dXJuIE5POwogCisgICAgaWYgKHNl
bGYuc3VwcHJlc3NBc3Npc3RhbnRTZWxlY3Rpb25WaWV3KQorICAgICAgICByZXR1cm4gTk87CisK
ICAgICBJbnRlcmFjdGlvbkluZm9ybWF0aW9uUmVxdWVzdCByZXF1ZXN0KHJvdW5kZWRJbnRQb2lu
dChwb2ludCkpOwogICAgIGlmICghW3NlbGYgZW5zdXJlUG9zaXRpb25JbmZvcm1hdGlvbklzVXBU
b0RhdGU6cmVxdWVzdF0pCiAgICAgICAgIHJldHVybiBOTzsKQEAgLTE3ODAsNiArMTc4OCw5IEBA
IHN0YXRpYyBpbmxpbmUgYm9vbCBpc1NhbWVQYWlyKFVJR2VzdHVyZVJlY29nbml6ZXIgKmEsIFVJ
R2VzdHVyZVJlY29nbml6ZXIgKmIsIFVJCiAgICAgaWYgKCFfd2ViVmlldy5jb25maWd1cmF0aW9u
Ll90ZXh0SW50ZXJhY3Rpb25HZXN0dXJlc0VuYWJsZWQpCiAgICAgICAgIHJldHVybiBOTzsKIAor
ICAgIGlmIChzZWxmLnN1cHByZXNzQXNzaXN0YW50U2VsZWN0aW9uVmlldykKKyAgICAgICAgcmV0
dXJuIE5POworCiAgICAgSW50ZXJhY3Rpb25JbmZvcm1hdGlvblJlcXVlc3QgcmVxdWVzdChyb3Vu
ZGVkSW50UG9pbnQocG9pbnQpKTsKICAgICBpZiAoIVtzZWxmIGVuc3VyZVBvc2l0aW9uSW5mb3Jt
YXRpb25Jc1VwVG9EYXRlOnJlcXVlc3RdKQogICAgICAgICByZXR1cm4gTk87CkBAIC00MjY3LDYg
KzQyNzgsOCBAQCBzdGF0aWMgYm9vbCBpc0Fzc2lzdGFibGVJbnB1dFR5cGUoSW5wdXRUeXBlIHR5
cGUpCiAgICAgaWYgKFtpbnB1dERlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Io
X3dlYlZpZXc6ZGVjaWRlUG9saWN5Rm9yRm9jdXNlZEVsZW1lbnQ6KV0pCiAgICAgICAgIHN0YXJ0
SW5wdXRTZXNzaW9uUG9saWN5ID0gW2lucHV0RGVsZWdhdGUgX3dlYlZpZXc6X3dlYlZpZXcgZGVj
aWRlUG9saWN5Rm9yRm9jdXNlZEVsZW1lbnQ6Zm9jdXNlZEVsZW1lbnRJbmZvLmdldCgpXTsKIAor
ICAgIHNlbGYuc3VwcHJlc3NBc3Npc3RhbnRTZWxlY3Rpb25WaWV3ID0gaW5mb3JtYXRpb24uZWxl
bWVudElzVHJhbnNwYXJlbnQ7CisKICAgICBzd2l0Y2ggKHN0YXJ0SW5wdXRTZXNzaW9uUG9saWN5
KSB7CiAgICAgY2FzZSBfV0tGb2N1c1N0YXJ0c0lucHV0U2Vzc2lvblBvbGljeUF1dG86CiAgICAg
ICAgIC8vIFRoZSBkZWZhdWx0IGJlaGF2aW9yIGlzIHRvIGFsbG93IG5vZGUgYXNzaXN0YW5jZSBp
ZiB0aGUgdXNlciBpcyBpbnRlcmFjdGluZy4KQEAgLTQ0MDksNiArNDQyMiw4IEBAIHN0YXRpYyBi
b29sIGlzQXNzaXN0YWJsZUlucHV0VHlwZShJbnB1dFR5cGUgdHlwZSkKICAgICAgICAgW193ZWJW
aWV3IF9zY2hlZHVsZVZpc2libGVDb250ZW50UmVjdFVwZGF0ZV07CiAKICAgICBbX3dlYlZpZXcg
ZGlkRW5kRm9ybUNvbnRyb2xJbnRlcmFjdGlvbl07CisKKyAgICBzZWxmLnN1cHByZXNzQXNzaXN0
YW50U2VsZWN0aW9uVmlldyA9IE5POwogfQogCiAtICh2b2lkKXVwZGF0ZUN1cnJlbnRBc3Npc3Rl
ZE5vZGVJbmZvcm1hdGlvbjooRnVuY3Rpb248dm9pZChib29sIGRpZFVwZGF0ZSk+JiYpY2FsbGJh
Y2sKQEAgLTQ3NDEsOSArNDc1NiwxNCBAQCBzdGF0aWMgYm9vbCBpc0Fzc2lzdGFibGVJbnB1dFR5
cGUoSW5wdXRUeXBlIHR5cGUpCiAKIC0gKHZvaWQpX3VwZGF0ZUNoYW5nZWRTZWxlY3Rpb246KEJP
T0wpZm9yY2UKIHsKLSAgICBpZiAoIV9zZWxlY3Rpb25OZWVkc1VwZGF0ZSB8fCBfcGFnZS0+ZWRp
dG9yU3RhdGUoKS5pc01pc3NpbmdQb3N0TGF5b3V0RGF0YSkKKyAgICBhdXRvJiBzdGF0ZSA9IF9w
YWdlLT5lZGl0b3JTdGF0ZSgpOworICAgIGlmIChzdGF0ZS5pc01pc3NpbmdQb3N0TGF5b3V0RGF0
YSkKICAgICAgICAgcmV0dXJuOwogCisgICAgYXV0byYgcG9zdExheW91dERhdGEgPSBzdGF0ZS5w
b3N0TGF5b3V0RGF0YSgpOworICAgIGlmIChoYXNBc3Npc3RlZE5vZGUoX2Fzc2lzdGVkTm9kZUlu
Zm9ybWF0aW9uKSkKKyAgICAgICAgc2VsZi5zdXBwcmVzc0Fzc2lzdGFudFNlbGVjdGlvblZpZXcg
PSBwb3N0TGF5b3V0RGF0YS5lbGVtZW50SXNUcmFuc3BhcmVudDsKKwogICAgIFdLU2VsZWN0aW9u
RHJhd2luZ0luZm8gc2VsZWN0aW9uRHJhd2luZ0luZm8oX3BhZ2UtPmVkaXRvclN0YXRlKCkpOwog
ICAgIGlmIChmb3JjZSB8fCBzZWxlY3Rpb25EcmF3aW5nSW5mbyAhPSBfbGFzdFNlbGVjdGlvbkRy
YXdpbmdJbmZvKSB7CiAgICAgICAgIExPR19XSVRIX1NUUkVBTShTZWxlY3Rpb24sIHN0cmVhbSA8
PCAiX3VwZGF0ZUNoYW5nZWRTZWxlY3Rpb24gIiA8PCBzZWxlY3Rpb25EcmF3aW5nSW5mbyk7CkBA
IC00NzY0LDggKzQ3ODQsNyBAQCBzdGF0aWMgYm9vbCBpc0Fzc2lzdGFibGVJbnB1dFR5cGUoSW5w
dXRUeXBlIHR5cGUpCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBhdXRvJiBzdGF0ZSA9IF9wYWdl
LT5lZGl0b3JTdGF0ZSgpOwotICAgIGlmICghc3RhdGUuaXNNaXNzaW5nUG9zdExheW91dERhdGEg
JiYgc3RhdGUucG9zdExheW91dERhdGEoKS5pc1N0YWJsZVN0YXRlVXBkYXRlICYmIF9uZWVkc0Rl
ZmVycmVkRW5kU2Nyb2xsaW5nU2VsZWN0aW9uVXBkYXRlICYmIF9wYWdlLT5pblN0YWJsZVN0YXRl
KCkpIHsKKyAgICBpZiAocG9zdExheW91dERhdGEuaXNTdGFibGVTdGF0ZVVwZGF0ZSAmJiBfbmVl
ZHNEZWZlcnJlZEVuZFNjcm9sbGluZ1NlbGVjdGlvblVwZGF0ZSAmJiBfcGFnZS0+aW5TdGFibGVT
dGF0ZSgpKSB7CiAgICAgICAgIFtbc2VsZiBzZWxlY3Rpb25JbnRlcmFjdGlvbkFzc2lzdGFudF0g
c2hvd1NlbGVjdGlvbkNvbW1hbmRzXTsKIAogICAgICAgICBpZiAoIXNlbGYuc3VwcHJlc3NBc3Np
c3RhbnRTZWxlY3Rpb25WaWV3KQpAQCAtNDc3Nyw2ICs0Nzk2LDExIEBAIHN0YXRpYyBib29sIGlz
QXNzaXN0YWJsZUlucHV0VHlwZShJbnB1dFR5cGUgdHlwZSkKICAgICB9CiB9CiAKKy0gKEJPT0wp
X3Nob3VsZFN1cHByZXNzU2VsZWN0aW9uQ29tbWFuZHMKK3sKKyAgICByZXR1cm4gX3N1cHByZXNz
QXNzaXN0YW50U2VsZWN0aW9uVmlldzsKK30KKwogLSAoQk9PTClzdXBwcmVzc0Fzc2lzdGFudFNl
bGVjdGlvblZpZXcKIHsKICAgICByZXR1cm4gX3N1cHByZXNzQXNzaXN0YW50U2VsZWN0aW9uVmll
dzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQ
YWdlSU9TLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJ
T1MubW0KaW5kZXggZWYzYTVmM2Y1OTRmNWNkNjJlMmQ1YmRjOTg1MzYzZjFiYTdhYWE1ZS4uZWUw
ODJjNGE5ZjRhNDQzZTMwYjI2ZGU2ZmQwNjRiMmZhYmQxZTU2NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KQEAgLTI0MCw2ICsy
NDAsNyBAQCB2b2lkIFdlYlBhZ2U6OnBsYXRmb3JtRWRpdG9yU3RhdGUoRnJhbWUmIGZyYW1lLCBF
ZGl0b3JTdGF0ZSYgcmVzdWx0LCBJbmNsdWRlUG9zdAogICAgICAgICBpZiAobV9hc3Npc3RlZE5v
ZGUgJiYgbV9hc3Npc3RlZE5vZGUtPnJlbmRlcmVyKCkpIHsKICAgICAgICAgICAgIHBvc3RMYXlv
dXREYXRhLnNlbGVjdGlvbkNsaXBSZWN0ID0gdmlldy0+Y29udGVudHNUb1Jvb3RWaWV3KG1fYXNz
aXN0ZWROb2RlLT5yZW5kZXJlcigpLT5hYnNvbHV0ZUJvdW5kaW5nQm94UmVjdCgpKTsKICAgICAg
ICAgICAgIHBvc3RMYXlvdXREYXRhLmNhcmV0Q29sb3IgPSBtX2Fzc2lzdGVkTm9kZS0+cmVuZGVy
ZXIoKS0+c3R5bGUoKS5jYXJldENvbG9yKCk7CisgICAgICAgICAgICBwb3N0TGF5b3V0RGF0YS5l
bGVtZW50SXNUcmFuc3BhcmVudCA9IG1fYXNzaXN0ZWROb2RlLT5yZW5kZXJlcigpLT5pc1RyYW5z
cGFyZW50UmVzcGVjdGluZ1BhcmVudEZyYW1lcygpOwogICAgICAgICB9CiAgICAgICAgIGNvbXB1
dGVFZGl0YWJsZVJvb3RIYXNDb250ZW50QW5kUGxhaW5UZXh0KHNlbGVjdGlvbiwgcG9zdExheW91
dERhdGEpOwogICAgIH0KQEAgLTIzMzcsNiArMjMzOCw3IEBAIHZvaWQgV2ViUGFnZTo6Z2V0QXNz
aXN0ZWROb2RlSW5mb3JtYXRpb24oQXNzaXN0ZWROb2RlSW5mb3JtYXRpb24mIGluZm9ybWF0aW9u
KQogICAgICAgICBGcmFtZSYgZWxlbWVudEZyYW1lID0gbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIo
KS5mb2N1c2VkT3JNYWluRnJhbWUoKTsKICAgICAgICAgaW5mb3JtYXRpb24uZWxlbWVudFJlY3Qg
PSBlbGVtZW50UmVjdEluUm9vdFZpZXdDb29yZGluYXRlcygqbV9hc3Npc3RlZE5vZGUsIGVsZW1l
bnRGcmFtZSk7CiAgICAgICAgIGluZm9ybWF0aW9uLm5vZGVGb250U2l6ZSA9IHJlbmRlcmVyLT5z
dHlsZSgpLmZvbnREZXNjcmlwdGlvbigpLmNvbXB1dGVkU2l6ZSgpOworICAgICAgICBpbmZvcm1h
dGlvbi5lbGVtZW50SXNUcmFuc3BhcmVudCA9IHJlbmRlcmVyLT5pc1RyYW5zcGFyZW50UmVzcGVj
dGluZ1BhcmVudEZyYW1lcygpOwogCiAgICAgICAgIGJvb2wgaW5GaXhlZCA9IGZhbHNlOwogICAg
ICAgICByZW5kZXJlci0+bG9jYWxUb0NvbnRhaW5lclBvaW50KEZsb2F0UG9pbnQoKSwgbnVsbHB0
ciwgVXNlVHJhbnNmb3JtcywgJmluRml4ZWQpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9n
IGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDFmOWFkYjM4OGMzNGIxOGM2MzFiYTA3Y2VlZjk2Yzc1
ZWE5ZWU5NzkuLmIxMjlmMTcxM2Q3MWQzN2JlODU1YTk5NzI4Mjk0YjhlYTVhOWY4NjEgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwz
OCBAQAorMjAxOC0xMS0xMyAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4K
KworICAgICAgICBbaU9TXSBEbyBub3Qgc2hvdyBzZWxlY3Rpb24gVUkgZm9yIGVkaXRhYmxlIGVs
ZW1lbnRzIHdpdGggb3BhY2l0eSBuZWFyIHplcm8KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MTQ0MgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDU5
NTg2MjU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gRnJhc2VyLgorCisgICAgICAgIEFk
ZCBhIGNvdXBsZSBvZiBuZXcgdGVzdGluZyBoZWxwZXJzIHRvIFVJU2NyaXB0Q29udHJvbGxlci4K
KworICAgICAgICAqIFRlc3RSdW5uZXJTaGFyZWQvVUlTY3JpcHRDb250ZXh0L0JpbmRpbmdzL1VJ
U2NyaXB0Q29udHJvbGxlci5pZGw6CisgICAgICAgICogVGVzdFJ1bm5lclNoYXJlZC9VSVNjcmlw
dENvbnRleHQvVUlTY3JpcHRDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdUUjo6VUlTY3JpcHRD
b250cm9sbGVyOjp0ZXh0U2VsZWN0aW9uUmFuZ2VSZWN0cyBjb25zdCk6CisgICAgICAgIChXVFI6
OlVJU2NyaXB0Q29udHJvbGxlcjo6c2VsZWN0aW9uQ2FyZXRWaWV3UmVjdCBjb25zdCk6CisgICAg
ICAgIChXVFI6OlVJU2NyaXB0Q29udHJvbGxlcjo6c2VsZWN0aW9uUmFuZ2VWaWV3UmVjdHMgY29u
c3QpOgorICAgICAgICAqIFRlc3RSdW5uZXJTaGFyZWQvVUlTY3JpcHRDb250ZXh0L1VJU2NyaXB0
Q29udHJvbGxlci5oOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvaW9zL1VJU2NyaXB0Q29u
dHJvbGxlcklPUy5tbToKKyAgICAgICAgKFdUUjo6VUlTY3JpcHRDb250cm9sbGVyOjp0ZXh0U2Vs
ZWN0aW9uUmFuZ2VSZWN0cyBjb25zdCk6CisKKyAgICAgICAgUmVuYW1lIGBzZWxlY3Rpb25SYW5n
ZVZpZXdSZWN0c2AgdG8gYHRleHRTZWxlY3Rpb25SYW5nZVJlY3RzYC4gVGhpcyBhbGxvd3MgdXMg
dG8gZHJhdyBhIGRpc3RpbmN0aW9uIGJldHdlZW4KKyAgICAgICAgYHRleHRTZWxlY3Rpb25SYW5n
ZVJlY3RzYC9gdGV4dFNlbGVjdGlvbkNhcmV0UmVjdGAsIHdoaWNoIHJldHJpZXZlIGluZm9ybWF0
aW9uIGFib3V0IHNlbGVjdGlvbiByZWN0cyBrbm93bgorICAgICAgICB0byB0aGUgdGV4dCBpbnRl
cmFjdGlvbiBhc3Npc3RhbnQsIGFuZCBgc2VsZWN0aW9uQ2FyZXRWaWV3UmVjdGAvYHNlbGVjdGlv
blJhbmdlVmlld1JlY3RzYCwgd2hpY2ggcmV0cmlldmUgdGhlCisgICAgICAgIGFjdHVhbCBmcmFt
ZXMgb2YgdGhlIHNlbGVjdGlvbiB2aWV3cyB1c2VkIHRvIGRyYXcgb3ZlcmxhaWQgc2VsZWN0aW9u
IFVJLiBUaGlzIGRpZmZlcmVuY2UgaXMgaW1wb3J0YW50IGluIHRoZQorICAgICAgICBuZXcgbGF5
b3V0IHRlc3RzIGFkZGVkIGluIHRoaXMgcGF0Y2gsIHdoaWNoIG9ubHkgc3VwcHJlc3MgY2FyZXQg
cmVuZGVyaW5nIChpLmUuIHNlbGVjdGlvbiB2aWV3cyByZW1haW4gaGlkZGVuKS4KKworICAgICAg
ICBBbHNvLCBkcml2ZS1ieSBmaXggYSBsZWFrZWQgYE5TTXV0YWJsZUFycmF5YC4KKworICAgICAg
ICAoV1RSOjpVSVNjcmlwdENvbnRyb2xsZXI6OnNlbGVjdGlvblN0YXJ0R3JhYmJlclZpZXdSZWN0
IGNvbnN0KToKKyAgICAgICAgKFdUUjo6VUlTY3JpcHRDb250cm9sbGVyOjpzZWxlY3Rpb25FbmRH
cmFiYmVyVmlld1JlY3QgY29uc3QpOgorICAgICAgICAoV1RSOjpVSVNjcmlwdENvbnRyb2xsZXI6
OnNlbGVjdGlvbkNhcmV0Vmlld1JlY3QgY29uc3QpOgorICAgICAgICAoV1RSOjpVSVNjcmlwdENv
bnRyb2xsZXI6OnNlbGVjdGlvblJhbmdlVmlld1JlY3RzIGNvbnN0KToKKworICAgICAgICBUZXN0
aW5nIGhlbHBlcnMgdG8gZ3JhYiB0aGUgZnJhbWVzIG9mIGNhcmV0IGFuZCBzZWxlY3Rpb24gdmll
d3MsIGluIFdLQ29udGVudFZpZXcncyBjb29yZGluYXRlIHNwYWNlLiBUaGVzZQorICAgICAgICBy
ZWN0cyBhcmUgYWxzbyBjbGFtcGVkIHRvIFdLQ29udGVudFZpZXcgYm91bmRzLgorCiAyMDE4LTEx
LTEzICBUYWthc2hpIEtvbW9yaSAgPFRha2FzaGkuS29tb3JpQHNvbnkuY29tPgogCiAgICAgICAg
IFJlbW92ZSBXZWJLaXRUZXN0UnVubmVyTGliJ3MgYnVpbGQgd2FybmluZ3MuCmRpZmYgLS1naXQg
YS9Ub29scy9EdW1wUmVuZGVyVHJlZS9pb3MvVUlTY3JpcHRDb250cm9sbGVySU9TLm1tIGIvVG9v
bHMvRHVtcFJlbmRlclRyZWUvaW9zL1VJU2NyaXB0Q29udHJvbGxlcklPUy5tbQppbmRleCA3NjBh
YmEwZmJhZDJlNzJjNWU0YzhjZjkyOTA1ZTU3ZWQ4ZDk1OTRkLi5kNDE2ODZkZjdmODFkYWI1N2Y0
ZDE0Nzg4YTNiMTYzOTNiNTMyODI5IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9p
b3MvVUlTY3JpcHRDb250cm9sbGVySU9TLm1tCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2lv
cy9VSVNjcmlwdENvbnRyb2xsZXJJT1MubW0KQEAgLTMwOSw3ICszMDksNyBAQCB2b2lkIFVJU2Ny
aXB0Q29udHJvbGxlcjo6cGxhdGZvcm1DbGVhckFsbENhbGxiYWNrcygpCiB7CiB9CiAKLUpTT2Jq
ZWN0UmVmIFVJU2NyaXB0Q29udHJvbGxlcjo6c2VsZWN0aW9uUmFuZ2VWaWV3UmVjdHMoKSBjb25z
dAorSlNPYmplY3RSZWYgVUlTY3JpcHRDb250cm9sbGVyOjp0ZXh0U2VsZWN0aW9uUmFuZ2VSZWN0
cygpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CkBAIC0zODksNiArMzg5LDE2IEBA
IEpTT2JqZWN0UmVmIFVJU2NyaXB0Q29udHJvbGxlcjo6c2VsZWN0aW9uRW5kR3JhYmJlclZpZXdS
ZWN0KCkgY29uc3QKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAorSlNPYmplY3RSZWYgVUlTY3Jp
cHRDb250cm9sbGVyOjpzZWxlY3Rpb25DYXJldFZpZXdSZWN0KCkgY29uc3QKK3sKKyAgICByZXR1
cm4gbnVsbHB0cjsKK30KKworSlNPYmplY3RSZWYgVUlTY3JpcHRDb250cm9sbGVyOjpzZWxlY3Rp
b25SYW5nZVZpZXdSZWN0cygpIGNvbnN0Cit7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKIGJv
b2wgVUlTY3JpcHRDb250cm9sbGVyOjppc1Nob3dpbmdEYXRhTGlzdFN1Z2dlc3Rpb25zKCkgY29u
c3QKIHsKICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0UnVubmVyU2hh
cmVkL1VJU2NyaXB0Q29udGV4dC9CaW5kaW5ncy9VSVNjcmlwdENvbnRyb2xsZXIuaWRsIGIvVG9v
bHMvVGVzdFJ1bm5lclNoYXJlZC9VSVNjcmlwdENvbnRleHQvQmluZGluZ3MvVUlTY3JpcHRDb250
cm9sbGVyLmlkbAppbmRleCA0ZTNmZDQ5MzkxMzI5NWIyMWYwNjcxMWIwNGM0OTU3MmQ4MGVlZjFk
Li41MmQzMzBhYjIxODA1NzcwNjY5MDBhZWNlOTQ4OWM2ZGJhZTY4NWQwIDEwMDY0NAotLS0gYS9U
b29scy9UZXN0UnVubmVyU2hhcmVkL1VJU2NyaXB0Q29udGV4dC9CaW5kaW5ncy9VSVNjcmlwdENv
bnRyb2xsZXIuaWRsCisrKyBiL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvVUlTY3JpcHRDb250ZXh0
L0JpbmRpbmdzL1VJU2NyaXB0Q29udHJvbGxlci5pZGwKQEAgLTIzOCwxMCArMjM4LDEyIEBAIGlu
dGVyZmFjZSBVSVNjcmlwdENvbnRyb2xsZXIgewogCiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIG9i
amVjdCBjb250ZW50VmlzaWJsZVJlY3Q7IC8vIFJldHVybmVkIG9iamVjdCBoYXMgJ2xlZnQnLCAn
dG9wJywgJ3dpZHRoJywgJ2hlaWdodCcgcHJvcGVydGllcy4KIAotICAgIHJlYWRvbmx5IGF0dHJp
YnV0ZSBvYmplY3Qgc2VsZWN0aW9uUmFuZ2VWaWV3UmVjdHM7IC8vIEFuIGFycmF5IG9mIG9iamVj
dHMgd2l0aCAnbGVmdCcsICd0b3AnLCAnd2lkdGgnLCBhbmQgJ2hlaWdodCcgcHJvcGVydGllcy4K
KyAgICByZWFkb25seSBhdHRyaWJ1dGUgb2JqZWN0IHRleHRTZWxlY3Rpb25SYW5nZVJlY3RzOyAv
LyBBbiBhcnJheSBvZiBvYmplY3RzIHdpdGggJ2xlZnQnLCAndG9wJywgJ3dpZHRoJywgYW5kICdo
ZWlnaHQnIHByb3BlcnRpZXMuCiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIG9iamVjdCB0ZXh0U2Vs
ZWN0aW9uQ2FyZXRSZWN0OyAvLyBBbiBvYmplY3Qgd2l0aCAnbGVmdCcsICd0b3AnLCAnd2lkdGgn
LCAnaGVpZ2h0JyBwcm9wZXJ0aWVzLgogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBvYmplY3Qgc2Vs
ZWN0aW9uU3RhcnRHcmFiYmVyVmlld1JlY3Q7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIG9iamVj
dCBzZWxlY3Rpb25FbmRHcmFiYmVyVmlld1JlY3Q7CisgICAgcmVhZG9ubHkgYXR0cmlidXRlIG9i
amVjdCBzZWxlY3Rpb25DYXJldFZpZXdSZWN0OworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBvYmpl
Y3Qgc2VsZWN0aW9uUmFuZ2VWaWV3UmVjdHM7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIG9iamVj
dCBjYWxlbmRhclR5cGU7CiAgICAgdm9pZCBzZXREZWZhdWx0Q2FsZW5kYXJUeXBlKERPTVN0cmlu
ZyBjYWxlbmRhcklkZW50aWZpZXIpOwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBvYmplY3QgaW5w
dXRWaWV3Qm91bmRzOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9VSVNjcmlw
dENvbnRleHQvVUlTY3JpcHRDb250cm9sbGVyLmNwcCBiL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQv
VUlTY3JpcHRDb250ZXh0L1VJU2NyaXB0Q29udHJvbGxlci5jcHAKaW5kZXggZjI1ZWMxMjc2NzZh
ZmEwZDgxMjUxNjBiZWIzMzc4Y2M4ZWJmNGFmOC4uNGRjYjRhNjQ5NmEzYTNlM2EyZTM4NWNiMTE1
NzE5MTAzZTdiMDkxZSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9VSVNjcmlw
dENvbnRleHQvVUlTY3JpcHRDb250cm9sbGVyLmNwcAorKysgYi9Ub29scy9UZXN0UnVubmVyU2hh
cmVkL1VJU2NyaXB0Q29udGV4dC9VSVNjcmlwdENvbnRyb2xsZXIuY3BwCkBAIC0zODksNyArMzg5
LDcgQEAgSlNPYmplY3RSZWYgVUlTY3JpcHRDb250cm9sbGVyOjpjb250ZW50VmlzaWJsZVJlY3Qo
KSBjb25zdAogICAgIHJldHVybiBudWxscHRyOwogfQogCi1KU09iamVjdFJlZiBVSVNjcmlwdENv
bnRyb2xsZXI6OnNlbGVjdGlvblJhbmdlVmlld1JlY3RzKCkgY29uc3QKK0pTT2JqZWN0UmVmIFVJ
U2NyaXB0Q29udHJvbGxlcjo6dGV4dFNlbGVjdGlvblJhbmdlUmVjdHMoKSBjb25zdAogewogICAg
IHJldHVybiBudWxscHRyOwogfQpAQCAtNDA0LDYgKzQwNCwxNiBAQCBKU09iamVjdFJlZiBVSVNj
cmlwdENvbnRyb2xsZXI6OnNlbGVjdGlvblN0YXJ0R3JhYmJlclZpZXdSZWN0KCkgY29uc3QKICAg
ICByZXR1cm4gbnVsbHB0cjsKIH0KIAorSlNPYmplY3RSZWYgVUlTY3JpcHRDb250cm9sbGVyOjpz
ZWxlY3Rpb25DYXJldFZpZXdSZWN0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbnVsbHB0cjsKK30K
KworSlNPYmplY3RSZWYgVUlTY3JpcHRDb250cm9sbGVyOjpzZWxlY3Rpb25SYW5nZVZpZXdSZWN0
cygpIGNvbnN0Cit7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKIEpTT2JqZWN0UmVmIFVJU2Ny
aXB0Q29udHJvbGxlcjo6c2VsZWN0aW9uRW5kR3JhYmJlclZpZXdSZWN0KCkgY29uc3QKIHsKICAg
ICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvVUlT
Y3JpcHRDb250ZXh0L1VJU2NyaXB0Q29udHJvbGxlci5oIGIvVG9vbHMvVGVzdFJ1bm5lclNoYXJl
ZC9VSVNjcmlwdENvbnRleHQvVUlTY3JpcHRDb250cm9sbGVyLmgKaW5kZXggMGU5NTIxOWNjM2Iz
NjY0ZjJhOGRjMDY1MjY4OTI1YWY3NDk5NGIzYi4uZWJiZjU0ODk3ZDQ4NzIwZDE5NmU2MmJjZjI4
MmZmMzY2YzE3M2U1OCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9VSVNjcmlw
dENvbnRleHQvVUlTY3JpcHRDb250cm9sbGVyLmgKKysrIGIvVG9vbHMvVGVzdFJ1bm5lclNoYXJl
ZC9VSVNjcmlwdENvbnRleHQvVUlTY3JpcHRDb250cm9sbGVyLmgKQEAgLTE1OSwxMCArMTU5LDEy
IEBAIHB1YmxpYzoKIAogICAgIEpTT2JqZWN0UmVmIGNvbnRlbnRWaXNpYmxlUmVjdCgpIGNvbnN0
OwogICAgIAotICAgIEpTT2JqZWN0UmVmIHNlbGVjdGlvblJhbmdlVmlld1JlY3RzKCkgY29uc3Q7
CisgICAgSlNPYmplY3RSZWYgdGV4dFNlbGVjdGlvblJhbmdlUmVjdHMoKSBjb25zdDsKICAgICBK
U09iamVjdFJlZiB0ZXh0U2VsZWN0aW9uQ2FyZXRSZWN0KCkgY29uc3Q7CiAgICAgSlNPYmplY3RS
ZWYgc2VsZWN0aW9uU3RhcnRHcmFiYmVyVmlld1JlY3QoKSBjb25zdDsKICAgICBKU09iamVjdFJl
ZiBzZWxlY3Rpb25FbmRHcmFiYmVyVmlld1JlY3QoKSBjb25zdDsKKyAgICBKU09iamVjdFJlZiBz
ZWxlY3Rpb25DYXJldFZpZXdSZWN0KCkgY29uc3Q7CisgICAgSlNPYmplY3RSZWYgc2VsZWN0aW9u
UmFuZ2VWaWV3UmVjdHMoKSBjb25zdDsKICAgICBKU09iamVjdFJlZiBjYWxlbmRhclR5cGUoKSBj
b25zdDsKICAgICB2b2lkIHNldERlZmF1bHRDYWxlbmRhclR5cGUoSlNTdHJpbmdSZWYgY2FsZW5k
YXJJZGVudGlmaWVyKTsKICAgICBKU09iamVjdFJlZiBpbnB1dFZpZXdCb3VuZHMoKSBjb25zdDsK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvaW9zL1VJU2NyaXB0Q29udHJvbGxl
cklPUy5tbSBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvaW9zL1VJU2NyaXB0Q29udHJvbGxlcklP
Uy5tbQppbmRleCA4NmI4NjAyYmE0YWQ4NGI1OTU3Njk3YWY4NmY0ZjYxY2UxNWE3YjkwLi4zNzI1
NjU1MGUyMmI5YzNlMDNiZGNjNjhjNmE4NzlmNGM2NGMyZGZmIDEwMDY0NAotLS0gYS9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL2lvcy9VSVNjcmlwdENvbnRyb2xsZXJJT1MubW0KKysrIGIvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9pb3MvVUlTY3JpcHRDb250cm9sbGVySU9TLm1tCkBAIC01MDcsMTQg
KzUwNywxNCBAQCBKU09iamVjdFJlZiBVSVNjcmlwdENvbnRyb2xsZXI6OmNvbnRlbnRWaXNpYmxl
UmVjdCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fY29udGV4dC0+b2JqZWN0RnJvbVJlY3QocmVjdCk7
CiB9CiAKLUpTT2JqZWN0UmVmIFVJU2NyaXB0Q29udHJvbGxlcjo6c2VsZWN0aW9uUmFuZ2VWaWV3
UmVjdHMoKSBjb25zdAorSlNPYmplY3RSZWYgVUlTY3JpcHRDb250cm9sbGVyOjp0ZXh0U2VsZWN0
aW9uUmFuZ2VSZWN0cygpIGNvbnN0CiB7Ci0gICAgTlNNdXRhYmxlQXJyYXkgKnNlbGVjdGlvblJl
Y3RzID0gW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF07CisgICAgYXV0byBzZWxlY3Rpb25S
ZWN0cyA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF0pOwogICAgIE5TQXJy
YXkgKnJlY3RzID0gVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLm1haW5XZWJWaWV3KCktPnBs
YXRmb3JtVmlldygpLl91aVRleHRTZWxlY3Rpb25SZWN0czsKICAgICBmb3IgKE5TVmFsdWUgKnJl
Y3QgaW4gcmVjdHMpCi0gICAgICAgIFtzZWxlY3Rpb25SZWN0cyBhZGRPYmplY3Q6dG9OU0RpY3Rp
b25hcnkoW3JlY3QgQ0dSZWN0VmFsdWVdKV07CisgICAgICAgIFtzZWxlY3Rpb25SZWN0cyBhZGRP
YmplY3Q6dG9OU0RpY3Rpb25hcnkocmVjdC5DR1JlY3RWYWx1ZSldOwogCi0gICAgcmV0dXJuIEpT
VmFsdWVUb09iamVjdChtX2NvbnRleHQtPmpzQ29udGV4dCgpLCBbSlNWYWx1ZSB2YWx1ZVdpdGhP
YmplY3Q6c2VsZWN0aW9uUmVjdHMgaW5Db250ZXh0OltKU0NvbnRleHQgY29udGV4dFdpdGhKU0ds
b2JhbENvbnRleHRSZWY6bV9jb250ZXh0LT5qc0NvbnRleHQoKV1dLkpTVmFsdWVSZWYsIG51bGxw
dHIpOworICAgIHJldHVybiBKU1ZhbHVlVG9PYmplY3QobV9jb250ZXh0LT5qc0NvbnRleHQoKSwg
W0pTVmFsdWUgdmFsdWVXaXRoT2JqZWN0OnNlbGVjdGlvblJlY3RzLmdldCgpIGluQ29udGV4dDpb
SlNDb250ZXh0IGNvbnRleHRXaXRoSlNHbG9iYWxDb250ZXh0UmVmOm1fY29udGV4dC0+anNDb250
ZXh0KCldXS5KU1ZhbHVlUmVmLCBudWxscHRyKTsKIH0KIAogSlNPYmplY3RSZWYgVUlTY3JpcHRD
b250cm9sbGVyOjp0ZXh0U2VsZWN0aW9uQ2FyZXRSZWN0KCkgY29uc3QKQEAgLTUyOCw2ICs1Mjgs
NyBAQCBKU09iamVjdFJlZiBVSVNjcmlwdENvbnRyb2xsZXI6OnNlbGVjdGlvblN0YXJ0R3JhYmJl
clZpZXdSZWN0KCkgY29uc3QKICAgICBVSVZpZXcgKmNvbnRlbnRWaWV3ID0gW3dlYlZpZXcgdmFs
dWVGb3JLZXlQYXRoOkAiX2N1cnJlbnRDb250ZW50VmlldyJdOwogICAgIFVJVmlldyAqc2VsZWN0
aW9uUmFuZ2VWaWV3ID0gW2NvbnRlbnRWaWV3IHZhbHVlRm9yS2V5UGF0aDpAImludGVyYWN0aW9u
QXNzaXN0YW50LnNlbGVjdGlvblZpZXcucmFuZ2VWaWV3Il07CiAgICAgYXV0byBmcmFtZUluQ29u
dGVudENvb3JkaW5hdGVzID0gW3NlbGVjdGlvblJhbmdlVmlldyBjb252ZXJ0UmVjdDpbW3NlbGVj
dGlvblJhbmdlVmlldyB2YWx1ZUZvcktleVBhdGg6QCJzdGFydEdyYWJiZXIiXSBmcmFtZV0gdG9W
aWV3OmNvbnRlbnRWaWV3XTsKKyAgICBmcmFtZUluQ29udGVudENvb3JkaW5hdGVzID0gQ0dSZWN0
SW50ZXJzZWN0aW9uKGNvbnRlbnRWaWV3LmJvdW5kcywgZnJhbWVJbkNvbnRlbnRDb29yZGluYXRl
cyk7CiAgICAgYXV0byBqc0NvbnRleHQgPSBtX2NvbnRleHQtPmpzQ29udGV4dCgpOwogICAgIHJl
dHVybiBKU1ZhbHVlVG9PYmplY3QoanNDb250ZXh0LCBbSlNWYWx1ZSB2YWx1ZVdpdGhPYmplY3Q6
dG9OU0RpY3Rpb25hcnkoZnJhbWVJbkNvbnRlbnRDb29yZGluYXRlcykgaW5Db250ZXh0OltKU0Nv
bnRleHQgY29udGV4dFdpdGhKU0dsb2JhbENvbnRleHRSZWY6anNDb250ZXh0XV0uSlNWYWx1ZVJl
ZiwgbnVsbHB0cik7CiB9CkBAIC01MzgsMTAgKzUzOSwzNSBAQCBKU09iamVjdFJlZiBVSVNjcmlw
dENvbnRyb2xsZXI6OnNlbGVjdGlvbkVuZEdyYWJiZXJWaWV3UmVjdCgpIGNvbnN0CiAgICAgVUlW
aWV3ICpjb250ZW50VmlldyA9IFt3ZWJWaWV3IHZhbHVlRm9yS2V5UGF0aDpAIl9jdXJyZW50Q29u
dGVudFZpZXciXTsKICAgICBVSVZpZXcgKnNlbGVjdGlvblJhbmdlVmlldyA9IFtjb250ZW50Vmll
dyB2YWx1ZUZvcktleVBhdGg6QCJpbnRlcmFjdGlvbkFzc2lzdGFudC5zZWxlY3Rpb25WaWV3LnJh
bmdlVmlldyJdOwogICAgIGF1dG8gZnJhbWVJbkNvbnRlbnRDb29yZGluYXRlcyA9IFtzZWxlY3Rp
b25SYW5nZVZpZXcgY29udmVydFJlY3Q6W1tzZWxlY3Rpb25SYW5nZVZpZXcgdmFsdWVGb3JLZXlQ
YXRoOkAiZW5kR3JhYmJlciJdIGZyYW1lXSB0b1ZpZXc6Y29udGVudFZpZXddOworICAgIGZyYW1l
SW5Db250ZW50Q29vcmRpbmF0ZXMgPSBDR1JlY3RJbnRlcnNlY3Rpb24oY29udGVudFZpZXcuYm91
bmRzLCBmcmFtZUluQ29udGVudENvb3JkaW5hdGVzKTsKICAgICBhdXRvIGpzQ29udGV4dCA9IG1f
Y29udGV4dC0+anNDb250ZXh0KCk7CiAgICAgcmV0dXJuIEpTVmFsdWVUb09iamVjdChqc0NvbnRl
eHQsIFtKU1ZhbHVlIHZhbHVlV2l0aE9iamVjdDp0b05TRGljdGlvbmFyeShmcmFtZUluQ29udGVu
dENvb3JkaW5hdGVzKSBpbkNvbnRleHQ6W0pTQ29udGV4dCBjb250ZXh0V2l0aEpTR2xvYmFsQ29u
dGV4dFJlZjpqc0NvbnRleHRdXS5KU1ZhbHVlUmVmLCBudWxscHRyKTsKIH0KIAorSlNPYmplY3RS
ZWYgVUlTY3JpcHRDb250cm9sbGVyOjpzZWxlY3Rpb25DYXJldFZpZXdSZWN0KCkgY29uc3QKK3sK
KyAgICBXS1dlYlZpZXcgKndlYlZpZXcgPSBUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkubWFp
bldlYlZpZXcoKS0+cGxhdGZvcm1WaWV3KCk7CisgICAgVUlWaWV3ICpjb250ZW50VmlldyA9IFt3
ZWJWaWV3IHZhbHVlRm9yS2V5UGF0aDpAIl9jdXJyZW50Q29udGVudFZpZXciXTsKKyAgICBVSVZp
ZXcgKmNhcmV0VmlldyA9IFtjb250ZW50VmlldyB2YWx1ZUZvcktleVBhdGg6QCJpbnRlcmFjdGlv
bkFzc2lzdGFudC5zZWxlY3Rpb25WaWV3LmNhcmV0VmlldyJdOworICAgIGF1dG8gcmVjdEluQ29u
dGVudFZpZXdDb29yZGluYXRlcyA9IENHUmVjdEludGVyc2VjdGlvbihbY2FyZXRWaWV3IGNvbnZl
cnRSZWN0OmNhcmV0Vmlldy5ib3VuZHMgdG9WaWV3OmNvbnRlbnRWaWV3XSwgY29udGVudFZpZXcu
Ym91bmRzKTsKKyAgICByZXR1cm4gSlNWYWx1ZVRvT2JqZWN0KG1fY29udGV4dC0+anNDb250ZXh0
KCksIFtKU1ZhbHVlIHZhbHVlV2l0aE9iamVjdDp0b05TRGljdGlvbmFyeShyZWN0SW5Db250ZW50
Vmlld0Nvb3JkaW5hdGVzKSBpbkNvbnRleHQ6W0pTQ29udGV4dCBjb250ZXh0V2l0aEpTR2xvYmFs
Q29udGV4dFJlZjptX2NvbnRleHQtPmpzQ29udGV4dCgpXV0uSlNWYWx1ZVJlZiwgbnVsbHB0cik7
Cit9CisKK0pTT2JqZWN0UmVmIFVJU2NyaXB0Q29udHJvbGxlcjo6c2VsZWN0aW9uUmFuZ2VWaWV3
UmVjdHMoKSBjb25zdAoreworICAgIFdLV2ViVmlldyAqd2ViVmlldyA9IFRlc3RDb250cm9sbGVy
OjpzaW5nbGV0b24oKS5tYWluV2ViVmlldygpLT5wbGF0Zm9ybVZpZXcoKTsKKyAgICBVSVZpZXcg
KmNvbnRlbnRWaWV3ID0gW3dlYlZpZXcgdmFsdWVGb3JLZXlQYXRoOkAiX2N1cnJlbnRDb250ZW50
VmlldyJdOworICAgIFVJVmlldyAqcmFuZ2VWaWV3ID0gW2NvbnRlbnRWaWV3IHZhbHVlRm9yS2V5
UGF0aDpAImludGVyYWN0aW9uQXNzaXN0YW50LnNlbGVjdGlvblZpZXcucmFuZ2VWaWV3Il07Cisg
ICAgYXV0byByZWN0c0FzRGljdGlvbmFyaWVzID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFs
bG9jXSBpbml0XSk7CisgICAgTlNBcnJheSAqdGV4dFJlY3RJbmZvQXJyYXkgPSBbcmFuZ2VWaWV3
IHZhbHVlRm9yS2V5UGF0aDpAInJlY3RzIl07CisgICAgZm9yIChpZCB0ZXh0UmVjdEluZm8gaW4g
dGV4dFJlY3RJbmZvQXJyYXkpIHsKKyAgICAgICAgTlNWYWx1ZSAqcmVjdFZhbHVlID0gW3RleHRS
ZWN0SW5mbyB2YWx1ZUZvcktleVBhdGg6QCJyZWN0Il07CisgICAgICAgIGF1dG8gcmFuZ2VSZWN0
SW5Db250ZW50Vmlld0Nvb3JkaW5hdGVzID0gW3JhbmdlVmlldyBjb252ZXJ0UmVjdDpyZWN0VmFs
dWUuQ0dSZWN0VmFsdWUgdG9WaWV3OmNvbnRlbnRWaWV3XTsKKyAgICAgICAgW3JlY3RzQXNEaWN0
aW9uYXJpZXMgYWRkT2JqZWN0OnRvTlNEaWN0aW9uYXJ5KENHUmVjdEludGVyc2VjdGlvbihyYW5n
ZVJlY3RJbkNvbnRlbnRWaWV3Q29vcmRpbmF0ZXMsIGNvbnRlbnRWaWV3LmJvdW5kcykpXTsKKyAg
ICB9CisgICAgcmV0dXJuIEpTVmFsdWVUb09iamVjdChtX2NvbnRleHQtPmpzQ29udGV4dCgpLCBb
SlNWYWx1ZSB2YWx1ZVdpdGhPYmplY3Q6cmVjdHNBc0RpY3Rpb25hcmllcy5nZXQoKSBpbkNvbnRl
eHQ6W0pTQ29udGV4dCBjb250ZXh0V2l0aEpTR2xvYmFsQ29udGV4dFJlZjptX2NvbnRleHQtPmpz
Q29udGV4dCgpXV0uSlNWYWx1ZVJlZiwgbnVsbHB0cik7Cit9CisKIEpTT2JqZWN0UmVmIFVJU2Ny
aXB0Q29udHJvbGxlcjo6aW5wdXRWaWV3Qm91bmRzKCkgY29uc3QKIHsKICAgICByZXR1cm4gSlNW
YWx1ZVRvT2JqZWN0KG1fY29udGV4dC0+anNDb250ZXh0KCksIFtKU1ZhbHVlIHZhbHVlV2l0aE9i
amVjdDp0b05TRGljdGlvbmFyeShUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkubWFpbldlYlZp
ZXcoKS0+cGxhdGZvcm1WaWV3KCkuX2lucHV0Vmlld0JvdW5kcykgaW5Db250ZXh0OltKU0NvbnRl
eHQgY29udGV4dFdpdGhKU0dsb2JhbENvbnRleHRSZWY6bV9jb250ZXh0LT5qc0NvbnRleHQoKV1d
LkpTVmFsdWVSZWYsIG51bGxwdHIpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
IGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGExNmYwYjAwZjgxNTg0YTNhMTJlNmU3M2Iz
NTc4NDcxN2Y5ODgyNWQuLjA5N2M1MmVkOTVlZTQyYzI3ZWNiYjEzMGQxOGZjOWFjMjI5MzM5ODcg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSw1NyBAQAorMjAxOC0xMS0xMyAgV2Vuc29uIEhzaWVoICA8d2Vuc29u
X2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBbaU9TXSBEbyBub3Qgc2hvdyBzZWxlY3Rpb24g
VUkgZm9yIGVkaXRhYmxlIGVsZW1lbnRzIHdpdGggb3BhY2l0eSBuZWFyIHplcm8KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MTQ0MgorICAgICAgICA8
cmRhcjovL3Byb2JsZW0vNDU5NTg2MjU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gRnJh
c2VyLgorCisgICAgICAgIEFkZCA1IG5ldyBsYXlvdXQgdGVzdHMuIFNlZSBiZWxvdyBmb3IgbW9y
ZSBkZXRhaWxzLgorCisgICAgICAgICogZWRpdGluZy9zZWxlY3Rpb24vY2hhcmFjdGVyLWdyYW51
bGFyaXR5LXJlY3QuaHRtbDoKKworICAgICAgICBBZGp1c3QgZm9yIGEgcmVuYW1lZCBVSVNjcmlw
dENvbnRyb2xsZXIgZnVuY3Rpb24uCisKKyAgICAgICAgKiBlZGl0aW5nL3NlbGVjdGlvbi9pb3Mv
ZG8tbm90LXpvb20tdG8tZm9jdXNlZC1oaWRkZW4tY29udGVudGVkaXRhYmxlLWV4cGVjdGVkLnR4
dDogQWRkZWQuCisgICAgICAgICogZWRpdGluZy9zZWxlY3Rpb24vaW9zL2RvLW5vdC16b29tLXRv
LWZvY3VzZWQtaGlkZGVuLWNvbnRlbnRlZGl0YWJsZS5odG1sOiBBZGRlZC4KKworICAgICAgICBB
ZGQgYSB0ZXN0IHRvIHZlcmlmeSB0aGF0IHdlIGRvbid0IHpvb20gdG8gZml0IHRoZSBmb2N1c2Vk
IGVsZW1lbnQsIGlmIHRoZSBmb2N1c2VkIGVsZW1lbnQgaXMgY29tcGxldGVseQorICAgICAgICB0
cmFuc3BhcmVudC4KKworICAgICAgICAqIGVkaXRpbmcvc2VsZWN0aW9uL2lvcy9oaWRlLXNlbGVj
dGlvbi1hZnRlci1oaWRpbmctY29udGVudGVkaXRhYmxlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisg
ICAgICAgICogZWRpdGluZy9zZWxlY3Rpb24vaW9zL2hpZGUtc2VsZWN0aW9uLWFmdGVyLWhpZGlu
Zy1jb250ZW50ZWRpdGFibGUuaHRtbDogQWRkZWQuCisKKyAgICAgICAgQWRkIGEgdGVzdCB0byB2
ZXJpZnkgdGhhdCBzZWxlY3Rpb24gVUkgaXMgaGlkZGVuIGFmdGVyIG1ha2luZyBhbiBlZGl0YWJs
ZSByb290IHRyYW5zcGFyZW50LCBhbmQgc2hvd24gYWdhaW4gd2hlbgorICAgICAgICB0aGUgZWRp
dGFibGUgcm9vdCBiZWNvbWVzIG9wYXF1ZS4KKworICAgICAgICAqIGVkaXRpbmcvc2VsZWN0aW9u
L2lvcy9oaWRlLXNlbGVjdGlvbi1pbi1jb250ZW50ZWRpdGFibGUtbmVzdGVkLXRyYW5zcGFyZW5j
eS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvc2VsZWN0aW9uL2lvcy9o
aWRlLXNlbGVjdGlvbi1pbi1jb250ZW50ZWRpdGFibGUtbmVzdGVkLXRyYW5zcGFyZW5jeS5odG1s
OiBBZGRlZC4KKworICAgICAgICBBZGQgYSB0ZXN0IHRvIHZlcmlmeSB0aGF0IHRyYW5zcGFyZW5j
eSBhcHBsaWVkIG9uIGFuIGVkaXRhYmxlIHJvb3QgdmlhIG5lc3RlZCB0cmFuc3BhcmVudCBjb250
YWluZXJzIGNhdXNlcworICAgICAgICBzZWxlY3Rpb24gVUkgdG8gYmUgc3VwcHJlc3NlZC4KKwor
ICAgICAgICAqIGVkaXRpbmcvc2VsZWN0aW9uL2lvcy9oaWRlLXNlbGVjdGlvbi1pbi1oaWRkZW4t
Y29udGVudGVkaXRhYmxlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZWRpdGluZy9z
ZWxlY3Rpb24vaW9zL2hpZGUtc2VsZWN0aW9uLWluLWhpZGRlbi1jb250ZW50ZWRpdGFibGUtZnJh
bWUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBlZGl0aW5nL3NlbGVjdGlvbi9pb3Mv
aGlkZS1zZWxlY3Rpb24taW4taGlkZGVuLWNvbnRlbnRlZGl0YWJsZS1mcmFtZS5odG1sOiBBZGRl
ZC4KKworICAgICAgICBBZGQgYSB0ZXN0IHRvIHZlcmlmeSB0aGF0IHNlbGVjdGlvbiBVSSBpcyBz
dXBwcmVzc2VkIHdoZW4gYW4gZWRpdGFibGUgZWxlbWVudCBpbnNpZGUgYSBzdWJmcmFtZSBpcyBm
b2N1c2VkLiBUaGlzCisgICAgICAgIHRlc3QgY2hlY2tzIHRoYXQgdGhlIGNhcmV0LCBzZWxlY3Rp
b24gcmVjdHMgYW5kIHNlbGVjdGlvbiBoYW5kbGUgdmlld3MgYXJlIG5vdCBzaG93biwgYW5kIGFk
ZGl0aW9uYWxseSB2ZXJpZmllcworICAgICAgICB0aGF0IHRoZSBzZWxlY3Rpb24gaW4gYSBoaWRk
ZW4gY29udGVudGVkaXRhYmxlIGFyZWEgY2Fubm90IGJlIGNoYW5nZWQgdmlhIHRhcCBnZXN0dXJl
LgorCisgICAgICAgICogZWRpdGluZy9zZWxlY3Rpb24vaW9zL2hpZGUtc2VsZWN0aW9uLWluLWhp
ZGRlbi1jb250ZW50ZWRpdGFibGUuaHRtbDogQWRkZWQuCisKKyAgICAgICAgU2FtZSB0ZXN0IGFz
IGFib3ZlLCBidXQgaW4gYSByZWd1bGFyIGVkaXRhYmxlIGVsZW1lbnQgaW4gdGhlIG1haW4gZG9j
dW1lbnQgaW5zdGVhZCBvZiBhIHN1YmZyYW1lLgorCisgICAgICAgICogcmVzb3VyY2VzL3VpLWhl
bHBlci5qczoKKyAgICAgICAgKHdpbmRvdy5VSUhlbHBlci5nZXRVSVNlbGVjdGlvblJlY3RzLnJl
dHVybi5uZXcuUHJvbWlzZS4pOgorICAgICAgICAod2luZG93LlVJSGVscGVyLmdldFVJU2VsZWN0
aW9uUmVjdHMucmV0dXJuLm5ldy5Qcm9taXNlKToKKyAgICAgICAgKHdpbmRvdy5VSUhlbHBlci5n
ZXRVSVNlbGVjdGlvblJlY3RzKToKKyAgICAgICAgKHdpbmRvdy5VSUhlbHBlci5nZXRVSUNhcmV0
Vmlld1JlY3QucmV0dXJuLm5ldy5Qcm9taXNlLik6CisgICAgICAgICh3aW5kb3cuVUlIZWxwZXIu
Z2V0VUlDYXJldFZpZXdSZWN0LnJldHVybi5uZXcuUHJvbWlzZSk6CisgICAgICAgICh3aW5kb3cu
VUlIZWxwZXIuZ2V0VUlDYXJldFZpZXdSZWN0KToKKworICAgICAgICBBZGQgbmV3IFVJSGVscGVy
IHdyYXBwZXIgbWV0aG9kcy4gU2VlIFRvb2xzL0NoYW5nZUxvZyBmb3IgbW9yZSBkZXRhaWwuCisK
IDIwMTgtMTEtMTIgIEFudG9pbmUgUXVpbnQgIDxncmFvdXRzQGFwcGxlLmNvbT4KIAogICAgICAg
ICBbV2ViIEFuaW1hdGlvbnNdIERvbid0IHNjaGVkdWxlIGFuaW1hdGlvbiBmcmFtZXMgb3IgdXBk
YXRlIHN0eWxlIHdoaWxlIGFuIGFjY2VsZXJhdGVkIGFuaW1hdGlvbiBpcyBydW5uaW5nCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9jaGFyYWN0ZXItZ3JhbnVsYXJp
dHktcmVjdC5odG1sIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vY2hhcmFjdGVyLWdy
YW51bGFyaXR5LXJlY3QuaHRtbAppbmRleCBmYzViY2U0N2Q5MDcxNWYzNDY1ZTZlNTc2YzBhYWM4
ZTgzNjZhNTNhLi4xMWFiYTMzNGY3ZjVjZDAyZjkwY2QxZmIwODdlODY0ZTU2M2ExNTFjIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9jaGFyYWN0ZXItZ3JhbnVsYXJp
dHktcmVjdC5odG1sCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2NoYXJhY3Rl
ci1ncmFudWxhcml0eS1yZWN0Lmh0bWwKQEAgLTIyLDcgKzIyLDcgQEAKICAgICAgICAgcmV0dXJu
IGAKICAgICAgICAgKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgdWlDb250cm9sbGVyLmxvbmdQ
cmVzc0F0UG9pbnQoMzAsIDIwLCBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICB1aUNvbnRy
b2xsZXIudWlTY3JpcHRDb21wbGV0ZShKU09OLnN0cmluZ2lmeSh1aUNvbnRyb2xsZXIuc2VsZWN0
aW9uUmFuZ2VWaWV3UmVjdHMpKTsKKyAgICAgICAgICAgICAgICB1aUNvbnRyb2xsZXIudWlTY3Jp
cHRDb21wbGV0ZShKU09OLnN0cmluZ2lmeSh1aUNvbnRyb2xsZXIudGV4dFNlbGVjdGlvblJhbmdl
UmVjdHMpKTsKICAgICAgICAgICAgIH0pOwogICAgICAgICB9KSgpO2AKICAgICB9CkBAIC0zNSwx
MiArMzUsMTIgQEAKICAgICAgICAgdmFyIHRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCd0YXJnZXQnKTsKICAgICAgICAgaWYgKHRlc3RSdW5uZXIucnVuVUlTY3JpcHQpIHsKICAgICAg
ICAgICAgIHRlc3RSdW5uZXIucnVuVUlTY3JpcHQoZ2V0VUlTY3JpcHQoKSwgZnVuY3Rpb24ocmVz
dWx0KSB7Ci0gICAgICAgICAgICAgICAgdmFyIHNlbGVjdGlvblJhbmdlVmlld1JlY3RzID0gSlNP
Ti5wYXJzZShyZXN1bHQpOworICAgICAgICAgICAgICAgIHZhciB0ZXh0U2VsZWN0aW9uUmFuZ2VS
ZWN0cyA9IEpTT04ucGFyc2UocmVzdWx0KTsKICAgICAgICAgICAgICAgICB2YXIgb3V0cHV0Owot
ICAgICAgICAgICAgICAgIGlmIChzZWxlY3Rpb25SYW5nZVZpZXdSZWN0cy5sZW5ndGggIT09IDEp
CisgICAgICAgICAgICAgICAgaWYgKHRleHRTZWxlY3Rpb25SYW5nZVJlY3RzLmxlbmd0aCAhPT0g
MSkKICAgICAgICAgICAgICAgICAgICAgb3V0cHV0ID0gJ0ZBSUw6IFVuZXhwZWN0ZWQgbnVtYmVy
IG9mIHNlbGVjdGlvbiByYW5nZSB2aWV3czogJyArIHJlc3VsdDsKICAgICAgICAgICAgICAgICBl
bHNlIHsKLSAgICAgICAgICAgICAgICAgICAgdmFyIHJlY3QgPSBzZWxlY3Rpb25SYW5nZVZpZXdS
ZWN0c1swXTsKKyAgICAgICAgICAgICAgICAgICAgdmFyIHJlY3QgPSB0ZXh0U2VsZWN0aW9uUmFu
Z2VSZWN0c1swXTsKICAgICAgICAgICAgICAgICAgICAgaWYgKHJlY3QubGVmdCAhPSA4IHx8IHJl
Y3QudG9wICE9IDggfHwgcmVjdC53aWR0aCAhPSAxMTIgfHwgcmVjdC5oZWlnaHQgIT0gMTcgKQog
ICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0ID0gJ0ZBSUw6IFVuZXhwZWN0ZWQgc2VsZWN0
aW9uIHJhbmdlIHZpZXcgZnJhbWU6ICcgKyByZXN1bHQ7CiAgICAgICAgICAgICAgICAgICAgIGVs
c2UKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2lvcy9kby1ub3Qt
em9vbS10by1mb2N1c2VkLWhpZGRlbi1jb250ZW50ZWRpdGFibGUtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vaW9zL2RvLW5vdC16b29tLXRvLWZvY3VzZWQtaGlk
ZGVuLWNvbnRlbnRlZGl0YWJsZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWEzOGJlZjAzYzQ5
YmFhOGU0N2E4MGZkMjFiM2RjNWJlYTEwZmUzNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2VkaXRpbmcvc2VsZWN0aW9uL2lvcy9kby1ub3Qtem9vbS10by1mb2N1c2VkLWhpZGRlbi1j
b250ZW50ZWRpdGFibGUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNyBAQAorCitUaGUgaW5pdGlh
bCBwYWdlIHNjYWxlIGlzOiAxLjAwMAorVGhlIHBhZ2Ugc2NhbGUgYWZ0ZXIgZm9jdXNpbmcgdGhl
IGRpdiBpczogMS4wMDAKK1RoZSBwYWdlIHNjYWxlIGFmdGVyIGZvY3VzaW5nIHRoZSBpZnJhbWUg
aXM6IDEuMDAwCitUZXN0aW5nCisKK1ZlcmlmaWVzIHRoYXQgd2UgZG9uJ3Qgem9vbSB0byB0aGUg
Zm9jdXNlZCBlbGVtZW50LCBpZiB0aGUgZm9jdXNlZCBlbGVtZW50IGlzIGluIGEgaGlkZGVuIGNv
bnRlbnRlZGl0YWJsZSBhcmVhLiBUbyBtYW51YWxseSB0ZXN0LCBjbGljayB0aGUgYnV0dG9uIGFu
ZCBjaGVjayB0aGF0IHRoZSBwYWdlIHNjYWxlIGlzIHN0aWxsIDEuCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9pb3MvZG8tbm90LXpvb20tdG8tZm9jdXNlZC1oaWRk
ZW4tY29udGVudGVkaXRhYmxlLmh0bWwgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9p
b3MvZG8tbm90LXpvb20tdG8tZm9jdXNlZC1oaWRkZW4tY29udGVudGVkaXRhYmxlLmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMDU3MjJkMDRlNzY0MTk4MjY3YTNiMTY4Y2E3YTY3NTFjNGQ2NzFkMwotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2lvcy9kby1ub3Qtem9v
bS10by1mb2N1c2VkLWhpZGRlbi1jb250ZW50ZWRpdGFibGUuaHRtbApAQCAtMCwwICsxLDk0IEBA
Cis8IURPQ1RZUEUgaHRtbD4gPCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIgWyB1c2VGbGV4aWJsZVZp
ZXdwb3J0PXRydWUgXSAtLT4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBuYW1lPSJ2aWV3cG9ydCIg
Y29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEiPgorPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uL3Jlc291cmNlcy91aS1oZWxwZXIuanMiPjwvc2NyaXB0PgorPHN0eWxlPgor
Ym9keSB7CisgICAgd2lkdGg6IDEwMCU7CisgICAgaGVpZ2h0OiAxMDAlOworICAgIG1hcmdpbjog
MDsKK30KKworaW5wdXQgeworICAgIHdpZHRoOiAzMjBweDsKKyAgICBoZWlnaHQ6IDE2MHB4Owor
ICAgIGRpc3BsYXk6IGJsb2NrOworfQorCisuY29udGFpbmVyIHsKKyAgICB3aWR0aDogMzBweDsK
KyAgICBoZWlnaHQ6IDMwcHg7CisgICAgYm9yZGVyOiBzb2xpZCAycHggc2lsdmVyOworICAgIGJv
eC1zaXppbmc6IGJvcmRlci1ib3g7CisgICAgZm9udC1zaXplOiA2cHg7Cit9CisKKyNlZGl0b3Is
IGlmcmFtZSB7CisgICAgb3BhY2l0eTogMC4wMDE7CisgICAgd2lkdGg6IGluaGVyaXQ7CisgICAg
aGVpZ2h0OiBpbmhlcml0OworICAgIG92ZXJmbG93LXk6IHNjcm9sbDsKK30KKzwvc3R5bGU+Cis8
L2hlYWQ+Cis8Ym9keT4KKzxpbnB1dCB0eXBlPSJidXR0b24iIG9uY2xpY2s9ImZvY3VzRWRpdG9y
KCkiIHZhbHVlPSJDbGljayB0byBmb2N1cyB0aGUgZGl2Ij4KKzxpbnB1dCB0eXBlPSJidXR0b24i
IG9uY2xpY2s9ImZvY3VzU3ViZnJhbWUoKSIgdmFsdWU9IkNsaWNrIHRvIGZvY3VzIHRoZSBmcmFt
ZSI+Cis8ZGl2PlRoZSBpbml0aWFsIHBhZ2Ugc2NhbGUgaXM6IDxzcGFuIGlkPSJpbml0aWFsLXNj
YWxlIj48L3NwYW4+PC9kaXY+Cis8ZGl2PlRoZSBwYWdlIHNjYWxlIGFmdGVyIGZvY3VzaW5nIHRo
ZSBkaXYgaXM6IDxzcGFuIGlkPSJkaXYtc2NhbGUiPjwvc3Bhbj48L2Rpdj4KKzxkaXY+VGhlIHBh
Z2Ugc2NhbGUgYWZ0ZXIgZm9jdXNpbmcgdGhlIGlmcmFtZSBpczogPHNwYW4gaWQ9ImlmcmFtZS1z
Y2FsZSI+PC9zcGFuPjwvZGl2PgorPGRpdiBjbGFzcz0iY29udGFpbmVyIj4KKyAgICA8ZGl2IGlk
PSJlZGl0b3IiIGNvbnRlbnRlZGl0YWJsZT5UZXN0aW5nPC9kaXY+Cis8L2Rpdj4KKzxkaXYgY2xh
c3M9ImNvbnRhaW5lciI+CisgICAgPGlmcmFtZSBzcmNkb2M9IgorICAgICAgICA8aGVhZD4KKyAg
ICAgICAgICAgIDxzdHlsZT5ib2R5LCBodG1sIHsgd2lkdGg6IDEwMCU7IGhlaWdodDogMTAwJTsg
Zm9udC1zaXplOiA2cHg7IH08L3N0eWxlPgorICAgICAgICAgICAgPHNjcmlwdD4KKyAgICAgICAg
ICAgICAgICBmdW5jdGlvbiBiZWdpbkVkaXRpbmcoKSB7CisgICAgICAgICAgICAgICAgICAgIGRv
Y3VtZW50LmJvZHkuZm9jdXMoKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICA8L3Nj
cmlwdD4KKyAgICAgICAgPC9oZWFkPgorICAgICAgICA8Ym9keSBjb250ZW50ZWRpdGFibGU+VGVz
dGluZzwvYm9keT4iIG9ubG9hZD0icnVuVGVzdCgpIj48L2lmcmFtZT4KKzwvZGl2PgorPHA+VmVy
aWZpZXMgdGhhdCB3ZSBkb24ndCB6b29tIHRvIHRoZSBmb2N1c2VkIGVsZW1lbnQsIGlmIHRoZSBm
b2N1c2VkIGVsZW1lbnQgaXMgaW4gYSBoaWRkZW4gY29udGVudGVkaXRhYmxlIGFyZWEuIFRvIG1h
bnVhbGx5IHRlc3QsIGNsaWNrIHRoZSBidXR0b24gYW5kIGNoZWNrIHRoYXQgdGhlIHBhZ2Ugc2Nh
bGUgaXMgc3RpbGwgMS48L3A+Cis8c2NyaXB0PgorbG9hZENvdW50ID0gMDsKKworYWRkRXZlbnRM
aXN0ZW5lcigibG9hZCIsIHJ1blRlc3QpOworCitmdW5jdGlvbiBmb2N1c0VkaXRvcigpIHsKKyAg
ICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjZWRpdG9yJykuZm9jdXMoKTsKK30KKworZnVuY3Rp
b24gZm9jdXNTdWJmcmFtZSgpIHsKKyAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJpZnJhbWUi
KS5jb250ZW50V2luZG93LmJlZ2luRWRpdGluZygpOworfQorCithc3luYyBmdW5jdGlvbiBydW5U
ZXN0KCkgeworICAgIGlmICghd2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHJldHVybjsKKwor
ICAgIGlmICgrK2xvYWRDb3VudCA8IDIpCisgICAgICAgIHJldHVybjsKKworICAgIHRlc3RSdW5u
ZXIuZHVtcEFzVGV4dCgpOworICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworCisgICAg
ZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiI2luaXRpYWwtc2NhbGUiKS50ZXh0Q29udGVudCA9IGlu
dGVybmFscy5wYWdlU2NhbGVGYWN0b3IoKS50b0ZpeGVkKDMpOworCisgICAgYXdhaXQgVUlIZWxw
ZXIuYWN0aXZhdGVBbmRXYWl0Rm9ySW5wdXRTZXNzaW9uQXQoMTYwLCA4MCk7CisgICAgZG9jdW1l
bnQucXVlcnlTZWxlY3RvcigiI2Rpdi1zY2FsZSIpLnRleHRDb250ZW50ID0gaW50ZXJuYWxzLnBh
Z2VTY2FsZUZhY3RvcigpLnRvRml4ZWQoMyk7CisgICAgVUlIZWxwZXIucmVzaWduRmlyc3RSZXNw
b25kZXIoKTsKKyAgICBhd2FpdCBVSUhlbHBlci53YWl0Rm9yS2V5Ym9hcmRUb0hpZGUoKTsKKwor
ICAgIGF3YWl0IFVJSGVscGVyLmFjdGl2YXRlQW5kV2FpdEZvcklucHV0U2Vzc2lvbkF0KDE2MCwg
MjQwKTsKKyAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIjaWZyYW1lLXNjYWxlIikudGV4dENv
bnRlbnQgPSBpbnRlcm5hbHMucGFnZVNjYWxlRmFjdG9yKCkudG9GaXhlZCgzKTsKKworICAgIHRl
c3RSdW5uZXIubm90aWZ5RG9uZSgpOworfQorPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9pb3MvaGlkZS1zZWxlY3Rp
b24tYWZ0ZXItaGlkaW5nLWNvbnRlbnRlZGl0YWJsZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9lZGl0aW5nL3NlbGVjdGlvbi9pb3MvaGlkZS1zZWxlY3Rpb24tYWZ0ZXItaGlkaW5nLWNvbnRl
bnRlZGl0YWJsZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjQwOWMyNTZhZmIxNjk1OGEzZGE1
NTZhOGZmNzk3MDQ0MDc5MWMzNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRp
bmcvc2VsZWN0aW9uL2lvcy9oaWRlLXNlbGVjdGlvbi1hZnRlci1oaWRpbmctY29udGVudGVkaXRh
YmxlLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDYgQEAKK0hlcmUncyB0byB0aGUgY3Jhenkgb25l
cywgdGhlIG1pc2ZpdHMsIHRoZSByZWJlbHMsIHRoZSB0cm91YmxlbWFrZXJzLCB0aGUgcm91bmQg
cGVncyBpbiB0aGUgc3F1YXJlIGhvbGVzLiBUaGUgb25lcyB3aG8gc2VlIHRoaW5ncyBkaWZmZXJl
bnRseS4gVGhleSdyZSBub3QgZm9uZCBvZiBydWxlcy4gWW91IGNhbiBxdW90ZSB0aGVtLCBkaXNh
Z3JlZSB3aXRoIHRoZW0sIGdsb3JpZnkgb3IgdmlsaWZ5IHRoZW0sIGJ1dCB0aGUgb25seSB0aGlu
ZyB5b3UgY2FuJ3QgZG8gaXMgaWdub3JlIHRoZW0gYmVjYXVzZSB0aGV5IGNoYW5nZSB0aGluZ3Mu
CitWZXJpZmllcyB0aGF0IHNlbGVjdGlvbiBVSSBpcyBoaWRkZW4gYWZ0ZXIgdGhlIGVkaXRhYmxl
IGFyZWEgYmVjb21lcyBoaWRkZW4sIGZvbGxvd2luZyBhIHNlbGVjdGlvbiBjaGFuZ2UuIFRoaXMg
dGVzdCByZXF1aXJlcyBXZWJLaXRUZXN0UnVubmVyLgorCitDYXJldCByZWN0IGFmdGVyIGZvY3Vz
OiAobGVmdCA9IDE2MSwgdG9wID0gMTUxLCB3aWR0aCA9IDIsIGhlaWdodCA9IDMwKQorU2VsZWN0
aW9uIHJlY3RzIGFmdGVyIHNlbGVjdCBhbGw6CitDYXJldCByZWN0IGFmdGVyIGNvbGxhcHNpbmc6
IChsZWZ0ID0gMjY5LCB0b3AgPSAyNzEsIHdpZHRoID0gMiwgaGVpZ2h0ID0gMzApCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9pb3MvaGlkZS1zZWxlY3Rpb24tYWZ0
ZXItaGlkaW5nLWNvbnRlbnRlZGl0YWJsZS5odG1sIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxl
Y3Rpb24vaW9zL2hpZGUtc2VsZWN0aW9uLWFmdGVyLWhpZGluZy1jb250ZW50ZWRpdGFibGUuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi45OWFiYWNiZTljNDE5YWYyZDYzYTZkOTI4NWFmMGZmM2VhNGJjMTA0Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vaW9zL2hpZGUt
c2VsZWN0aW9uLWFmdGVyLWhpZGluZy1jb250ZW50ZWRpdGFibGUuaHRtbApAQCAtMCwwICsxLDY1
IEBACis8IURPQ1RZUEUgaHRtbD4gPCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIgWyB1c2VGbGV4aWJs
ZVZpZXdwb3J0PXRydWUgXSAtLT4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBuYW1lPSJ2aWV3cG9y
dCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCB1c2VyLXNjYWxhYmxlPW5vIj4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvdWktaGVscGVyLmpzIj48L3NjcmlwdD4KKzxzdHls
ZT4KK2JvZHksIGh0bWwgeworICAgIHdpZHRoOiAxMDAlOworICAgIGhlaWdodDogMTAwJTsKKyAg
ICBtYXJnaW46IDA7Cit9CisKKy5jb250YWluZXIgeworICAgIHdpZHRoOiAzMjBweDsKKyAgICBo
ZWlnaHQ6IDMyMHB4OworICAgIGJvcmRlcjogc29saWQgMnB4IHNpbHZlcjsKKyAgICBib3gtc2l6
aW5nOiBib3JkZXItYm94OworfQorCisjZWRpdG9yIHsKKyAgICB3aWR0aDogaW5oZXJpdDsKKyAg
ICBoZWlnaHQ6IGluaGVyaXQ7CisgICAgZm9udC1zaXplOiAyNHB4OworfQorPC9zdHlsZT4KKzwv
aGVhZD4KKzxib2R5PgorPGRpdiBjbGFzcz0iY29udGFpbmVyIj4KKyAgICA8ZGl2IGlkPSJlZGl0
b3IiIGNvbnRlbnRlZGl0YWJsZT4KKyAgICAgICAgSGVyZSdzIHRvIHRoZSBjcmF6eSBvbmVzLCB0
aGUgbWlzZml0cywgdGhlIHJlYmVscywgdGhlIHRyb3VibGVtYWtlcnMsIHRoZSByb3VuZCBwZWdz
IGluIHRoZSBzcXVhcmUgaG9sZXMuCisgICAgICAgIFRoZSBvbmVzIHdobyBzZWUgdGhpbmdzIGRp
ZmZlcmVudGx5LiBUaGV5J3JlIG5vdCBmb25kIG9mIHJ1bGVzLiBZb3UgY2FuIHF1b3RlIHRoZW0s
IGRpc2FncmVlIHdpdGggdGhlbSwgZ2xvcmlmeSBvciB2aWxpZnkgdGhlbSwgYnV0IHRoZSBvbmx5
IHRoaW5nIHlvdSBjYW4ndCBkbyBpcyBpZ25vcmUgdGhlbSBiZWNhdXNlIHRoZXkgY2hhbmdlIHRo
aW5ncy4KKyAgICA8L2Rpdj4KKzwvZGl2PgorPHA+VmVyaWZpZXMgdGhhdCBzZWxlY3Rpb24gVUkg
aXMgaGlkZGVuIGFmdGVyIHRoZSBlZGl0YWJsZSBhcmVhIGJlY29tZXMgaGlkZGVuLCBmb2xsb3dp
bmcgYSBzZWxlY3Rpb24gY2hhbmdlLiBUaGlzIHRlc3QgcmVxdWlyZXMgV2ViS2l0VGVzdFJ1bm5l
ci48L3A+Cis8ZGl2PkNhcmV0IHJlY3QgYWZ0ZXIgZm9jdXM6IDxzcGFuIGlkPSJmb2N1cy1jYXJl
dCI+PC9zcGFuPjwvZGl2PgorPGRpdj5TZWxlY3Rpb24gcmVjdHMgYWZ0ZXIgc2VsZWN0IGFsbDog
PHNwYW4gaWQ9InNlbGVjdGlvbiI+PC9zcGFuPjwvZGl2PgorPGRpdj5DYXJldCByZWN0IGFmdGVy
IGNvbGxhcHNpbmc6IDxzcGFuIGlkPSJjb2xsYXBzZS1jYXJldCI+PC9zcGFuPjwvZGl2PgorPHNj
cmlwdD4KK2Z1bmN0aW9uIHJlY3RUb1N0cmluZyhyZWN0KSB7CisgICAgcmV0dXJuIGAobGVmdCA9
ICR7TWF0aC5yb3VuZChyZWN0LmxlZnQpfSwgdG9wID0gJHtNYXRoLnJvdW5kKHJlY3QudG9wKX0s
IHdpZHRoID0gJHtNYXRoLnJvdW5kKHJlY3Qud2lkdGgpfSwgaGVpZ2h0ID0gJHtNYXRoLnJvdW5k
KHJlY3QuaGVpZ2h0KX0pYDsKK30KKworKGFzeW5jICgpID0+IHsKKyAgICBpZiAoIXdpbmRvdy50
ZXN0UnVubmVyKQorICAgICAgICByZXR1cm47CisKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQo
KTsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKworICAgIGF3YWl0IFVJSGVscGVy
LmFjdGl2YXRlQW5kV2FpdEZvcklucHV0U2Vzc2lvbkF0KDE2MCwgMTYwKTsKKyAgICBkb2N1bWVu
dC5xdWVyeVNlbGVjdG9yKCIjZm9jdXMtY2FyZXQiKS50ZXh0Q29udGVudCA9IHJlY3RUb1N0cmlu
Zyhhd2FpdCBVSUhlbHBlci5nZXRVSUNhcmV0Vmlld1JlY3QoKSk7CisKKyAgICBlZGl0b3Iuc3R5
bGUub3BhY2l0eSA9IDA7CisgICAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoInNlbGVjdEFsbCIpOwor
ICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIiNzZWxlY3Rpb24iKS50ZXh0Q29udGVudCA9IChh
d2FpdCBVSUhlbHBlci5nZXRVSVNlbGVjdGlvblZpZXdSZWN0cygpKS5tYXAocmVjdFRvU3RyaW5n
KS5qb2luKCIsICIpOworCisgICAgZWRpdG9yLnN0eWxlLm9wYWNpdHkgPSAxOworICAgIGdldFNl
bGVjdGlvbigpLmNvbGxhcHNlVG9FbmQoKTsKKyAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIj
Y29sbGFwc2UtY2FyZXQiKS50ZXh0Q29udGVudCA9IHJlY3RUb1N0cmluZyhhd2FpdCBVSUhlbHBl
ci5nZXRVSUNhcmV0Vmlld1JlY3QoKSk7CisKKyAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsK
K30pKCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2VkaXRpbmcvc2VsZWN0aW9uL2lvcy9oaWRlLXNlbGVjdGlvbi1pbi1jb250ZW50ZWRpdGFi
bGUtbmVzdGVkLXRyYW5zcGFyZW5jeS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9lZGl0aW5n
L3NlbGVjdGlvbi9pb3MvaGlkZS1zZWxlY3Rpb24taW4tY29udGVudGVkaXRhYmxlLW5lc3RlZC10
cmFuc3BhcmVuY3ktZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNlYmE1NGIwMTUyMThkYTcwYzUw
MDg0MTZjNjg2ZGQ4OGU1YjgyNWMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9lZGl0
aW5nL3NlbGVjdGlvbi9pb3MvaGlkZS1zZWxlY3Rpb24taW4tY29udGVudGVkaXRhYmxlLW5lc3Rl
ZC10cmFuc3BhcmVuY3ktZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTIgQEAKK0hlcmUncyB0byB0
aGUgY3Jhenkgb25lcywgdGhlIG1pc2ZpdHMsIHRoZSByZWJlbHMsIHRoZSB0cm91YmxlbWFrZXJz
LCB0aGUgcm91bmQgcGVncyBpbiB0aGUgc3F1YXJlIGhvbGVzLiBUaGUgb25lcyB3aG8gc2VlIHRo
aW5ncyBkaWZmZXJlbnRseS4gVGhleSdyZSBub3QgZm9uZCBvZiBydWxlcy4gWW91IGNhbiBxdW90
ZSB0aGVtLCBkaXNhZ3JlZSB3aXRoIHRoZW0sIGdsb3JpZnkgb3IgdmlsaWZ5IHRoZW0sIGJ1dCB0
aGUgb25seSB0aGluZyB5b3UgY2FuJ3QgZG8gaXMgaWdub3JlIHRoZW0gYmVjYXVzZSB0aGV5IGNo
YW5nZSB0aGluZ3MuCitWZXJpZmllcyB0aGF0IHNlbGVjdGlvbiBVSSBpcyBzdXBwcmVzc2VkIHdo
ZW4gdGhlIGVkaXRhYmxlIHJvb3QgaXMgdHJhbnNwYXJlbnQgYXMgYSByZXN1bHQgb2YgbmVzdGVk
IHRyYW5zcGFyZW50IGNvbnRhaW5lcnMuIFRvIG1hbnVhbGx5IHRlc3QsIGZvY3VzIHRoZSBib3gg
YWJvdmUgYW5kIHZlcmlmeSB0aGF0OgorCitUaGUgY2FyZXQgaXMgbm90IHNob3duLgorU2VsZWN0
aW9uIGhpZ2hsaWdodHMgYXJlIG5vdCBzaG93bi4KK1RoZSBzZWxlY3Rpb24gY2Fubm90IGJlIGNo
YW5nZWQgdmlhIGdlc3R1cmUuCitDYXJldCByZWN0IGFmdGVyIGZvY3VzOiAobGVmdCA9IDAsIHRv
cCA9IDAsIHdpZHRoID0gMCwgaGVpZ2h0ID0gMCkKK1NlbGVjdGlvbiByZWN0cyBhZnRlciBzZWxl
Y3RpbmcgYWxsOgorU2VsZWN0aW9uIHN0YXJ0IGdyYWJiZXIgcmVjdCBhZnRlciBzZWxlY3Rpbmcg
YWxsOiAobGVmdCA9IDAsIHRvcCA9IDAsIHdpZHRoID0gMCwgaGVpZ2h0ID0gMCkKK1NlbGVjdGlv
biBlbmQgZ3JhYmJlciByZWN0IGFmdGVyIHNlbGVjdGluZyBhbGw6IChsZWZ0ID0gMCwgdG9wID0g
MCwgd2lkdGggPSAwLCBoZWlnaHQgPSAwKQorU2VsZWN0aW9uIGJlZm9yZSB0YXA6IChbb2JqZWN0
IFRleHRdIzMyNSwgW29iamVjdCBUZXh0XSMzMjUpCitTZWxlY3Rpb24gYWZ0ZXIgdGFwOiAoW29i
amVjdCBUZXh0XSMzMjUsIFtvYmplY3QgVGV4dF0jMzI1KQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZWRpdGluZy9zZWxlY3Rpb24vaW9zL2hpZGUtc2VsZWN0aW9uLWluLWNvbnRlbnRlZGl0YWJs
ZS1uZXN0ZWQtdHJhbnNwYXJlbmN5Lmh0bWwgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlv
bi9pb3MvaGlkZS1zZWxlY3Rpb24taW4tY29udGVudGVkaXRhYmxlLW5lc3RlZC10cmFuc3BhcmVu
Y3kuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi41OWFiZGMyNDg1Y2IwNjM2M2NlNjVkODM2NWNjMjJiMTgzYWEz
YzYxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vaW9z
L2hpZGUtc2VsZWN0aW9uLWluLWNvbnRlbnRlZGl0YWJsZS1uZXN0ZWQtdHJhbnNwYXJlbmN5Lmh0
bWwKQEAgLTAsMCArMSw5NiBAQAorPCFET0NUWVBFIGh0bWw+IDwhLS0gd2Via2l0LXRlc3QtcnVu
bmVyIFsgdXNlRmxleGlibGVWaWV3cG9ydD10cnVlIF0gLS0+Cis8aHRtbD4KKzxoZWFkPgorPG1l
dGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9IndpZHRoPWRldmljZS13aWR0aCwgdXNlci1zY2Fs
YWJsZT1ubyI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL3VpLWhlbHBlci5qcyI+
PC9zY3JpcHQ+Cis8c3R5bGU+Citib2R5LCBodG1sIHsKKyAgICB3aWR0aDogMTAwJTsKKyAgICBo
ZWlnaHQ6IDEwMCU7CisgICAgbWFyZ2luOiAwOworfQorCisuY29udGFpbmVyIHsKKyAgICB3aWR0
aDogMzIwcHg7CisgICAgaGVpZ2h0OiAzMjBweDsKKyAgICBib3JkZXI6IHNvbGlkIDJweCBzaWx2
ZXI7CisgICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKK30KKworI2VkaXRvciB7CisgICAgd2lk
dGg6IGluaGVyaXQ7CisgICAgaGVpZ2h0OiBpbmhlcml0OworICAgIGZvbnQtc2l6ZTogMjRweDsK
K30KKworLnRyYW5zcGFyZW50IHsKKyAgICBvcGFjaXR5OiAwLjI1OworfQorPC9zdHlsZT4KKzwv
aGVhZD4KKzxib2R5PgorPGRpdiBjbGFzcz0iY29udGFpbmVyIj4KKyAgICA8ZGl2IGNsYXNzPSJ0
cmFuc3BhcmVudCI+CisgICAgICAgIDxkaXYgY2xhc3M9InRyYW5zcGFyZW50Ij4KKyAgICAgICAg
ICAgIDxkaXYgY2xhc3M9InRyYW5zcGFyZW50Ij4KKyAgICAgICAgICAgICAgICA8ZGl2IGNsYXNz
PSJ0cmFuc3BhcmVudCI+CisgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9ImVkaXRvciIgY29u
dGVudGVkaXRhYmxlPgorICAgICAgICAgICAgICAgICAgICAgICAgSGVyZSdzIHRvIHRoZSBjcmF6
eSBvbmVzLCB0aGUgbWlzZml0cywgdGhlIHJlYmVscywgdGhlIHRyb3VibGVtYWtlcnMsIHRoZSBy
b3VuZCBwZWdzIGluIHRoZSBzcXVhcmUgaG9sZXMuCisgICAgICAgICAgICAgICAgICAgICAgICBU
aGUgb25lcyB3aG8gc2VlIHRoaW5ncyBkaWZmZXJlbnRseS4gVGhleSdyZSBub3QgZm9uZCBvZiBy
dWxlcy4gWW91IGNhbiBxdW90ZSB0aGVtLCBkaXNhZ3JlZSB3aXRoIHRoZW0sIGdsb3JpZnkgb3Ig
dmlsaWZ5IHRoZW0sIGJ1dCB0aGUgb25seSB0aGluZyB5b3UgY2FuJ3QgZG8gaXMgaWdub3JlIHRo
ZW0gYmVjYXVzZSB0aGV5IGNoYW5nZSB0aGluZ3MuCisgICAgICAgICAgICAgICAgICAgIDwvZGl2
PgorICAgICAgICAgICAgICAgIDwvZGl2PgorICAgICAgICAgICAgPC9kaXY+CisgICAgICAgIDwv
ZGl2PgorICAgIDwvZGl2PgorPC9kaXY+Cis8cD5WZXJpZmllcyB0aGF0IHNlbGVjdGlvbiBVSSBp
cyBzdXBwcmVzc2VkIHdoZW4gdGhlIGVkaXRhYmxlIHJvb3QgaXMgdHJhbnNwYXJlbnQgYXMgYSBy
ZXN1bHQgb2YgbmVzdGVkIHRyYW5zcGFyZW50IGNvbnRhaW5lcnMuIFRvIG1hbnVhbGx5IHRlc3Qs
IGZvY3VzIHRoZSBib3ggYWJvdmUgYW5kIHZlcmlmeSB0aGF0OjwvcD4KKzx1bD4KKyAgICA8bGk+
VGhlIGNhcmV0IGlzIG5vdCBzaG93bi48L2xpPgorICAgIDxsaT5TZWxlY3Rpb24gaGlnaGxpZ2h0
cyBhcmUgbm90IHNob3duLjwvbGk+CisgICAgPGxpPlRoZSBzZWxlY3Rpb24gY2Fubm90IGJlIGNo
YW5nZWQgdmlhIGdlc3R1cmUuPC9saT4KKzwvdWw+Cis8ZGl2PkNhcmV0IHJlY3QgYWZ0ZXIgZm9j
dXM6IDxzcGFuIGlkPSJjYXJldC1yZWN0Ij48L3NwYW4+PC9kaXY+Cis8ZGl2PlNlbGVjdGlvbiBy
ZWN0cyBhZnRlciBzZWxlY3RpbmcgYWxsOiA8c3BhbiBpZD0ic2VsZWN0aW9uLXJlY3RzIj48L3Nw
YW4+PC9kaXY+Cis8ZGl2PlNlbGVjdGlvbiBzdGFydCBncmFiYmVyIHJlY3QgYWZ0ZXIgc2VsZWN0
aW5nIGFsbDogPHNwYW4gaWQ9InN0YXJ0LWdyYWJiZXItcmVjdCI+PC9zcGFuPjwvZGl2PgorPGRp
dj5TZWxlY3Rpb24gZW5kIGdyYWJiZXIgcmVjdCBhZnRlciBzZWxlY3RpbmcgYWxsOiA8c3BhbiBp
ZD0iZW5kLWdyYWJiZXItcmVjdCI+PC9zcGFuPjwvZGl2PgorPGRpdj5TZWxlY3Rpb24gYmVmb3Jl
IHRhcDogPHNwYW4gaWQ9InNlbGVjdGlvbi1iZWZvcmUiPjwvc3Bhbj48L2Rpdj4KKzxkaXY+U2Vs
ZWN0aW9uIGFmdGVyIHRhcDogPHNwYW4gaWQ9InNlbGVjdGlvbi1hZnRlciI+PC9zcGFuPjwvZGl2
PgorPHNjcmlwdD4KK2Z1bmN0aW9uIHJlY3RUb1N0cmluZyhyZWN0KSB7CisgICAgcmV0dXJuIGAo
bGVmdCA9ICR7TWF0aC5yb3VuZChyZWN0LmxlZnQpfSwgdG9wID0gJHtNYXRoLnJvdW5kKHJlY3Qu
dG9wKX0sIHdpZHRoID0gJHtNYXRoLnJvdW5kKHJlY3Qud2lkdGgpfSwgaGVpZ2h0ID0gJHtNYXRo
LnJvdW5kKHJlY3QuaGVpZ2h0KX0pYDsKK30KKworZnVuY3Rpb24gc2VsZWN0aW9uVG9TdHJpbmco
KSB7CisgICAgY29uc3Qgc2VsZWN0aW9uID0gZ2V0U2VsZWN0aW9uKCk7CisgICAgaWYgKCFzZWxl
Y3Rpb24ucmFuZ2VDb3VudCkKKyAgICAgICAgcmV0dXJuICIobm8gc2VsZWN0aW9uKSI7CisKKyAg
ICBjb25zdCByYW5nZSA9IHNlbGVjdGlvbi5nZXRSYW5nZUF0KDApOworICAgIHJldHVybiBgKCR7
cmFuZ2Uuc3RhcnRDb250YWluZXJ9IyR7cmFuZ2Uuc3RhcnRPZmZzZXR9LCAke3JhbmdlLmVuZENv
bnRhaW5lcn0jJHtyYW5nZS5lbmRPZmZzZXR9KWA7Cit9CisKKyhhc3luYyAoKSA9PiB7CisgICAg
aWYgKCF3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgcmV0dXJuOworCisgICAgdGVzdFJ1bm5l
ci5kdW1wQXNUZXh0KCk7CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisKKyAgICBh
d2FpdCBVSUhlbHBlci5hY3RpdmF0ZUFuZFdhaXRGb3JJbnB1dFNlc3Npb25BdCgxNjAsIDE2MCk7
CisgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiI2NhcmV0LXJlY3QiKS50ZXh0Q29udGVudCA9
IHJlY3RUb1N0cmluZyhhd2FpdCBVSUhlbHBlci5nZXRVSUNhcmV0Vmlld1JlY3QoKSk7CisKKyAg
ICBkb2N1bWVudC5leGVjQ29tbWFuZCgic2VsZWN0QWxsIik7CisgICAgZG9jdW1lbnQucXVlcnlT
ZWxlY3RvcigiI3NlbGVjdGlvbi1yZWN0cyIpLnRleHRDb250ZW50ID0gKGF3YWl0IFVJSGVscGVy
LmdldFVJU2VsZWN0aW9uVmlld1JlY3RzKCkpLm1hcChyZWN0VG9TdHJpbmcpLmpvaW4oIiwgIik7
CisgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiI3N0YXJ0LWdyYWJiZXItcmVjdCIpLnRleHRD
b250ZW50ID0gcmVjdFRvU3RyaW5nKGF3YWl0IFVJSGVscGVyLmdldFNlbGVjdGlvblN0YXJ0R3Jh
YmJlclZpZXdSZWN0KCkpOworICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIiNlbmQtZ3JhYmJl
ci1yZWN0IikudGV4dENvbnRlbnQgPSByZWN0VG9TdHJpbmcoYXdhaXQgVUlIZWxwZXIuZ2V0U2Vs
ZWN0aW9uRW5kR3JhYmJlclZpZXdSZWN0KCkpOworCisgICAgZ2V0U2VsZWN0aW9uKCkuY29sbGFw
c2VUb0VuZCgpOworICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIiNzZWxlY3Rpb24tYmVmb3Jl
IikudGV4dENvbnRlbnQgPSBzZWxlY3Rpb25Ub1N0cmluZygpOworICAgIGF3YWl0IFVJSGVscGVy
LnRhcEF0KDMyLCAzMik7CisgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiI3NlbGVjdGlvbi1h
ZnRlciIpLnRleHRDb250ZW50ID0gc2VsZWN0aW9uVG9TdHJpbmcoKTsKKworICAgIHRlc3RSdW5u
ZXIubm90aWZ5RG9uZSgpOworfSkoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vaW9zL2hpZGUtc2VsZWN0aW9u
LWluLWhpZGRlbi1jb250ZW50ZWRpdGFibGUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZWRp
dGluZy9zZWxlY3Rpb24vaW9zL2hpZGUtc2VsZWN0aW9uLWluLWhpZGRlbi1jb250ZW50ZWRpdGFi
bGUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdmY2U5YzFjZGFlZjEzZWM3ZWI4MmNlYjlhNzJi
ZjI4MTRjNjY5ZjgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVj
dGlvbi9pb3MvaGlkZS1zZWxlY3Rpb24taW4taGlkZGVuLWNvbnRlbnRlZGl0YWJsZS1leHBlY3Rl
ZC50eHQKQEAgLTAsMCArMSwxMiBAQAorSGVyZSdzIHRvIHRoZSBjcmF6eSBvbmVzLCB0aGUgbWlz
Zml0cywgdGhlIHJlYmVscywgdGhlIHRyb3VibGVtYWtlcnMsIHRoZSByb3VuZCBwZWdzIGluIHRo
ZSBzcXVhcmUgaG9sZXMuIFRoZSBvbmVzIHdobyBzZWUgdGhpbmdzIGRpZmZlcmVudGx5LiBUaGV5
J3JlIG5vdCBmb25kIG9mIHJ1bGVzLiBZb3UgY2FuIHF1b3RlIHRoZW0sIGRpc2FncmVlIHdpdGgg
dGhlbSwgZ2xvcmlmeSBvciB2aWxpZnkgdGhlbSwgYnV0IHRoZSBvbmx5IHRoaW5nIHlvdSBjYW4n
dCBkbyBpcyBpZ25vcmUgdGhlbSBiZWNhdXNlIHRoZXkgY2hhbmdlIHRoaW5ncy4KK1ZlcmlmaWVz
IHRoYXQgc2VsZWN0aW9uIFVJIGlzIHN1cHByZXNzZWQgd2hlbiB0aGUgZWRpdGFibGUgcm9vdCBp
cyB0cmFuc3BhcmVudC4gVG8gbWFudWFsbHkgdGVzdCwgZm9jdXMgdGhlIGJveCBhYm92ZSBhbmQg
dmVyaWZ5IHRoYXQ6CisKK1RoZSBjYXJldCBpcyBub3Qgc2hvd24uCitTZWxlY3Rpb24gaGlnaGxp
Z2h0cyBhcmUgbm90IHNob3duLgorVGhlIHNlbGVjdGlvbiBjYW5ub3QgYmUgY2hhbmdlZCB2aWEg
Z2VzdHVyZS4KK0NhcmV0IHJlY3QgYWZ0ZXIgZm9jdXM6IChsZWZ0ID0gMCwgdG9wID0gMCwgd2lk
dGggPSAwLCBoZWlnaHQgPSAwKQorU2VsZWN0aW9uIHJlY3RzIGFmdGVyIHNlbGVjdGluZyBhbGw6
CitTZWxlY3Rpb24gc3RhcnQgZ3JhYmJlciByZWN0IGFmdGVyIHNlbGVjdGluZyBhbGw6IChsZWZ0
ID0gMCwgdG9wID0gMCwgd2lkdGggPSAwLCBoZWlnaHQgPSAwKQorU2VsZWN0aW9uIGVuZCBncmFi
YmVyIHJlY3QgYWZ0ZXIgc2VsZWN0aW5nIGFsbDogKGxlZnQgPSAwLCB0b3AgPSAwLCB3aWR0aCA9
IDAsIGhlaWdodCA9IDApCitTZWxlY3Rpb24gYmVmb3JlIHRhcDogKFtvYmplY3QgVGV4dF0jMzI1
LCBbb2JqZWN0IFRleHRdIzMyNSkKK1NlbGVjdGlvbiBhZnRlciB0YXA6IChbb2JqZWN0IFRleHRd
IzMyNSwgW29iamVjdCBUZXh0XSMzMjUpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5n
L3NlbGVjdGlvbi9pb3MvaGlkZS1zZWxlY3Rpb24taW4taGlkZGVuLWNvbnRlbnRlZGl0YWJsZS1m
cmFtZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9pb3MvaGlk
ZS1zZWxlY3Rpb24taW4taGlkZGVuLWNvbnRlbnRlZGl0YWJsZS1mcmFtZS1leHBlY3RlZC50eHQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZGM3NGRmZTUxYThiMmVlNjE3NjAwMTMzZmI3M2FmZTcyNmZiNGJjYQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2lvcy9oaWRlLXNl
bGVjdGlvbi1pbi1oaWRkZW4tY29udGVudGVkaXRhYmxlLWZyYW1lLWV4cGVjdGVkLnR4dApAQCAt
MCwwICsxLDEyIEBACisKK1ZlcmlmaWVzIHRoYXQgc2VsZWN0aW9uIFVJIGlzIHN1cHByZXNzZWQg
d2hlbiB0aGUgZWRpdGFibGUgcm9vdCBpcyB0cmFuc3BhcmVudC4gVG8gbWFudWFsbHkgdGVzdCwg
Zm9jdXMgdGhlIGJveCBhYm92ZSBhbmQgdmVyaWZ5IHRoYXQ6CisKK1RoZSBjYXJldCBpcyBub3Qg
c2hvd24uCitTZWxlY3Rpb24gaGlnaGxpZ2h0cyBhcmUgbm90IHNob3duLgorVGhlIHNlbGVjdGlv
biBjYW5ub3QgYmUgY2hhbmdlZCB2aWEgZ2VzdHVyZS4KK0NhcmV0IHJlY3QgYWZ0ZXIgZm9jdXM6
IChsZWZ0ID0gMCwgdG9wID0gMCwgd2lkdGggPSAwLCBoZWlnaHQgPSAwKQorU2VsZWN0aW9uIHJl
Y3RzIGFmdGVyIHNlbGVjdGluZyBhbGw6CitTZWxlY3Rpb24gc3RhcnQgZ3JhYmJlciByZWN0IGFm
dGVyIHNlbGVjdGluZyBhbGw6IChsZWZ0ID0gMCwgdG9wID0gMCwgd2lkdGggPSAwLCBoZWlnaHQg
PSAwKQorU2VsZWN0aW9uIGVuZCBncmFiYmVyIHJlY3QgYWZ0ZXIgc2VsZWN0aW5nIGFsbDogKGxl
ZnQgPSAwLCB0b3AgPSAwLCB3aWR0aCA9IDAsIGhlaWdodCA9IDApCitTZWxlY3Rpb24gYmVmb3Jl
IHRhcDogKFtvYmplY3QgVGV4dF0jMzMzLCBbb2JqZWN0IFRleHRdIzMzMykKK1NlbGVjdGlvbiBh
ZnRlciB0YXA6IChbb2JqZWN0IFRleHRdIzMzMywgW29iamVjdCBUZXh0XSMzMzMpCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9pb3MvaGlkZS1zZWxlY3Rpb24taW4t
aGlkZGVuLWNvbnRlbnRlZGl0YWJsZS1mcmFtZS5odG1sIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9z
ZWxlY3Rpb24vaW9zL2hpZGUtc2VsZWN0aW9uLWluLWhpZGRlbi1jb250ZW50ZWRpdGFibGUtZnJh
bWUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40MTM1NWM3M2FjMmU3NDE4YWY5Yjk3ZjkxMTY2NzRlYmM2ZDE2
MWZmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vaW9z
L2hpZGUtc2VsZWN0aW9uLWluLWhpZGRlbi1jb250ZW50ZWRpdGFibGUtZnJhbWUuaHRtbApAQCAt
MCwwICsxLDEyMiBAQAorPCFET0NUWVBFIGh0bWw+IDwhLS0gd2Via2l0LXRlc3QtcnVubmVyIFsg
dXNlRmxleGlibGVWaWV3cG9ydD10cnVlIF0gLS0+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgbmFt
ZT0idmlld3BvcnQiIGNvbnRlbnQ9IndpZHRoPWRldmljZS13aWR0aCwgdXNlci1zY2FsYWJsZT1u
byI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL3VpLWhlbHBlci5qcyI+PC9zY3Jp
cHQ+Cis8c3R5bGU+Citib2R5LCBodG1sIHsKKyAgICB3aWR0aDogMTAwJTsKKyAgICBoZWlnaHQ6
IDEwMCU7CisgICAgbWFyZ2luOiAwOworfQorCisuY29udGFpbmVyIHsKKyAgICB3aWR0aDogMzIw
cHg7CisgICAgaGVpZ2h0OiAzMjBweDsKKyAgICBib3JkZXI6IHNvbGlkIDJweCBzaWx2ZXI7Cisg
ICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKK30KKworaWZyYW1lIHsKKyAgICBvcGFjaXR5OiAw
LjAwMTsKKyAgICB3aWR0aDogaW5oZXJpdDsKKyAgICBoZWlnaHQ6IGluaGVyaXQ7CisgICAgZm9u
dC1zaXplOiAyNHB4OworfQorPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBjbGFzcz0i
Y29udGFpbmVyIj4KKyAgICA8aWZyYW1lIHNyY2RvYz0iCisgICAgICAgIDxoZWFkPgorICAgICAg
ICAgICAgPHN0eWxlPmJvZHksIGh0bWwgeyB3aWR0aDogMTAwJTsgaGVpZ2h0OiAxMDAlOyB9PC9z
dHlsZT4KKyAgICAgICAgICAgIDxzY3JpcHQ+CisgICAgICAgICAgICBmdW5jdGlvbiBzZWxlY3Rp
b25Ub1N0cmluZygpIHsKKyAgICAgICAgICAgICAgICBjb25zdCBzZWxlY3Rpb24gPSBnZXRTZWxl
Y3Rpb24oKTsKKyAgICAgICAgICAgICAgICBpZiAoIXNlbGVjdGlvbi5yYW5nZUNvdW50KQorICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gJyhubyBzZWxlY3Rpb24pJzsKKworICAgICAgICAgICAg
ICAgIGNvbnN0IHJhbmdlID0gc2VsZWN0aW9uLmdldFJhbmdlQXQoMCk7CisgICAgICAgICAgICAg
ICAgcmV0dXJuIGAoJHtyYW5nZS5zdGFydENvbnRhaW5lcn0jJHtyYW5nZS5zdGFydE9mZnNldH0s
ICR7cmFuZ2UuZW5kQ29udGFpbmVyfSMke3JhbmdlLmVuZE9mZnNldH0pYDsKKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgZnVuY3Rpb24gc2VsZWN0QWxsKCkgeworICAgICAgICAgICAgICAg
IGRvY3VtZW50LmV4ZWNDb21tYW5kKCdzZWxlY3RBbGwnKTsKKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgZnVuY3Rpb24gY29sbGFwc2VUb0VuZCgpIHsKKyAgICAgICAgICAgICAgICBnZXRT
ZWxlY3Rpb24oKS5jb2xsYXBzZVRvRW5kKCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3NlbGVjdGlvbmNoYW5nZScsICgpID0+IHBhcmVu
dC5wb3N0TWVzc2FnZShzZWxlY3Rpb25Ub1N0cmluZygpLCAnKicpKTsKKyAgICAgICAgICAgIDwv
c2NyaXB0PgorICAgICAgICA8L2hlYWQ+CisgICAgICAgIDxib2R5IGNvbnRlbnRlZGl0YWJsZT4K
KyAgICAgICAgICAgIEhlcmUncyB0byB0aGUgY3Jhenkgb25lcywgdGhlIG1pc2ZpdHMsIHRoZSBy
ZWJlbHMsIHRoZSB0cm91YmxlbWFrZXJzLCB0aGUgcm91bmQgcGVncyBpbiB0aGUgc3F1YXJlIGhv
bGVzLgorICAgICAgICAgICAgVGhlIG9uZXMgd2hvIHNlZSB0aGluZ3MgZGlmZmVyZW50bHkuIFRo
ZXkncmUgbm90IGZvbmQgb2YgcnVsZXMuIFlvdSBjYW4gcXVvdGUgdGhlbSwgZGlzYWdyZWUgd2l0
aCB0aGVtLCBnbG9yaWZ5IG9yIHZpbGlmeSB0aGVtLCBidXQgdGhlIG9ubHkgdGhpbmcgeW91IGNh
bid0IGRvIGlzIGlnbm9yZSB0aGVtIGJlY2F1c2UgdGhleSBjaGFuZ2UgdGhpbmdzLgorICAgICAg
ICA8L2JvZHk+IiBvbmxvYWQ9InJ1blRlc3QoKSI+PC9pZnJhbWU+Cis8L2Rpdj4KKzxwPlZlcmlm
aWVzIHRoYXQgc2VsZWN0aW9uIFVJIGlzIHN1cHByZXNzZWQgd2hlbiB0aGUgZWRpdGFibGUgcm9v
dCBpcyB0cmFuc3BhcmVudC4gVG8gbWFudWFsbHkgdGVzdCwgZm9jdXMgdGhlIGJveCBhYm92ZSBh
bmQgdmVyaWZ5IHRoYXQ6PC9wPgorPHVsPgorICAgIDxsaT5UaGUgY2FyZXQgaXMgbm90IHNob3du
LjwvbGk+CisgICAgPGxpPlNlbGVjdGlvbiBoaWdobGlnaHRzIGFyZSBub3Qgc2hvd24uPC9saT4K
KyAgICA8bGk+VGhlIHNlbGVjdGlvbiBjYW5ub3QgYmUgY2hhbmdlZCB2aWEgZ2VzdHVyZS48L2xp
PgorPC91bD4KKzxkaXY+Q2FyZXQgcmVjdCBhZnRlciBmb2N1czogPHNwYW4gaWQ9ImNhcmV0LXJl
Y3QiPjwvc3Bhbj48L2Rpdj4KKzxkaXY+U2VsZWN0aW9uIHJlY3RzIGFmdGVyIHNlbGVjdGluZyBh
bGw6IDxzcGFuIGlkPSJzZWxlY3Rpb24tcmVjdHMiPjwvc3Bhbj48L2Rpdj4KKzxkaXY+U2VsZWN0
aW9uIHN0YXJ0IGdyYWJiZXIgcmVjdCBhZnRlciBzZWxlY3RpbmcgYWxsOiA8c3BhbiBpZD0ic3Rh
cnQtZ3JhYmJlci1yZWN0Ij48L3NwYW4+PC9kaXY+Cis8ZGl2PlNlbGVjdGlvbiBlbmQgZ3JhYmJl
ciByZWN0IGFmdGVyIHNlbGVjdGluZyBhbGw6IDxzcGFuIGlkPSJlbmQtZ3JhYmJlci1yZWN0Ij48
L3NwYW4+PC9kaXY+Cis8ZGl2PlNlbGVjdGlvbiBiZWZvcmUgdGFwOiA8c3BhbiBpZD0ic2VsZWN0
aW9uLWJlZm9yZSI+PC9zcGFuPjwvZGl2PgorPGRpdj5TZWxlY3Rpb24gYWZ0ZXIgdGFwOiA8c3Bh
biBpZD0ic2VsZWN0aW9uLWFmdGVyIj48L3NwYW4+PC9kaXY+Cis8c2NyaXB0PgorY3VycmVudFNl
bGVjdGlvbkFzU3RyaW5nID0gIiI7CitjdXJyZW50U2VsZWN0aW9uQ2hhbmdlQ291bnQgPSAwOwor
bG9hZENvdW50ID0gMDsKKworYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsIHJ1blRlc3QpOworYWRk
RXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsIGV2ZW50ID0+IHsKKyAgICB3aW5kb3cuY3VycmVudFNl
bGVjdGlvbkFzU3RyaW5nID0gZXZlbnQuZGF0YTsKKyAgICBjdXJyZW50U2VsZWN0aW9uQ2hhbmdl
Q291bnQrKzsKK30pOworCitmdW5jdGlvbiByZWN0VG9TdHJpbmcocmVjdCkgeworICAgIHJldHVy
biBgKGxlZnQgPSAke01hdGgucm91bmQocmVjdC5sZWZ0KX0sIHRvcCA9ICR7TWF0aC5yb3VuZChy
ZWN0LnRvcCl9LCB3aWR0aCA9ICR7TWF0aC5yb3VuZChyZWN0LndpZHRoKX0sIGhlaWdodCA9ICR7
TWF0aC5yb3VuZChyZWN0LmhlaWdodCl9KWA7Cit9CisKK2FzeW5jIGZ1bmN0aW9uIHdhaXRGb3JT
ZWxlY3Rpb25DaGFuZ2VJblN1YmZyYW1lKGFjdGlvbnMpCit7CisgICAgY29uc3QgcHJldmlvdXNT
ZWxlY3Rpb25DaGFuZ2VDb3VudCA9IGN1cnJlbnRTZWxlY3Rpb25DaGFuZ2VDb3VudDsKKyAgICBh
Y3Rpb25zKCk7CisgICAgd2hpbGUgKHByZXZpb3VzU2VsZWN0aW9uQ2hhbmdlQ291bnQgPT0gY3Vy
cmVudFNlbGVjdGlvbkNoYW5nZUNvdW50KQorICAgICAgICBhd2FpdCBuZXcgUHJvbWlzZShyZXF1
ZXN0QW5pbWF0aW9uRnJhbWUpOworfQorCithc3luYyBmdW5jdGlvbiBydW5UZXN0KCkgeworICAg
IGlmICgrK2xvYWRDb3VudCA8IDIpCisgICAgICAgIHJldHVybjsKKworICAgIGlmICghd2luZG93
LnRlc3RSdW5uZXIpCisgICAgICAgIHJldHVybjsKKworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4
dCgpOworICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworCisgICAgYXdhaXQgd2FpdEZv
clNlbGVjdGlvbkNoYW5nZUluU3ViZnJhbWUoYXN5bmMgKCkgPT4gYXdhaXQgVUlIZWxwZXIuYWN0
aXZhdGVBbmRXYWl0Rm9ySW5wdXRTZXNzaW9uQXQoMTYwLCAxNjApKTsKKyAgICBkb2N1bWVudC5x
dWVyeVNlbGVjdG9yKCIjY2FyZXQtcmVjdCIpLnRleHRDb250ZW50ID0gcmVjdFRvU3RyaW5nKGF3
YWl0IFVJSGVscGVyLmdldFVJQ2FyZXRWaWV3UmVjdCgpKTsKKworICAgIGF3YWl0IHdhaXRGb3JT
ZWxlY3Rpb25DaGFuZ2VJblN1YmZyYW1lKCgpID0+IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoImlm
cmFtZSIpLmNvbnRlbnRXaW5kb3cuc2VsZWN0QWxsKCkpOworICAgIGRvY3VtZW50LnF1ZXJ5U2Vs
ZWN0b3IoIiNzdGFydC1ncmFiYmVyLXJlY3QiKS50ZXh0Q29udGVudCA9IHJlY3RUb1N0cmluZyhh
d2FpdCBVSUhlbHBlci5nZXRTZWxlY3Rpb25TdGFydEdyYWJiZXJWaWV3UmVjdCgpKTsKKyAgICBk
b2N1bWVudC5xdWVyeVNlbGVjdG9yKCIjZW5kLWdyYWJiZXItcmVjdCIpLnRleHRDb250ZW50ID0g
cmVjdFRvU3RyaW5nKGF3YWl0IFVJSGVscGVyLmdldFNlbGVjdGlvbkVuZEdyYWJiZXJWaWV3UmVj
dCgpKTsKKworICAgIGF3YWl0IHdhaXRGb3JTZWxlY3Rpb25DaGFuZ2VJblN1YmZyYW1lKCgpID0+
IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoImlmcmFtZSIpLmNvbnRlbnRXaW5kb3cuY29sbGFwc2VU
b0VuZCgpKTsKKyAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIjc2VsZWN0aW9uLWJlZm9yZSIp
LnRleHRDb250ZW50ID0gY3VycmVudFNlbGVjdGlvbkFzU3RyaW5nOworCisgICAgYXdhaXQgVUlI
ZWxwZXIudGFwQXQoMzIsIDMyKTsKKyAgICBhd2FpdCBuZXcgUHJvbWlzZShyZXF1ZXN0QW5pbWF0
aW9uRnJhbWUpOworICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIiNzZWxlY3Rpb24tYWZ0ZXIi
KS50ZXh0Q29udGVudCA9IGN1cnJlbnRTZWxlY3Rpb25Bc1N0cmluZzsKKworICAgIHRlc3RSdW5u
ZXIubm90aWZ5RG9uZSgpOworfQorPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9pb3MvaGlkZS1zZWxlY3Rpb24taW4t
aGlkZGVuLWNvbnRlbnRlZGl0YWJsZS5odG1sIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rp
b24vaW9zL2hpZGUtc2VsZWN0aW9uLWluLWhpZGRlbi1jb250ZW50ZWRpdGFibGUuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5lMWIwOTM2NzUxNTc3Yjg0MmFhNjI0Y2U5Y2E2YWZlM2Q0M2E3ZDM5Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vaW9zL2hpZGUtc2VsZWN0
aW9uLWluLWhpZGRlbi1jb250ZW50ZWRpdGFibGUuaHRtbApAQCAtMCwwICsxLDg1IEBACis8IURP
Q1RZUEUgaHRtbD4gPCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIgWyB1c2VGbGV4aWJsZVZpZXdwb3J0
PXRydWUgXSAtLT4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVu
dD0id2lkdGg9ZGV2aWNlLXdpZHRoLCB1c2VyLXNjYWxhYmxlPW5vIj4KKzxzY3JpcHQgc3JjPSIu
Li8uLi8uLi9yZXNvdXJjZXMvdWktaGVscGVyLmpzIj48L3NjcmlwdD4KKzxzdHlsZT4KK2JvZHks
IGh0bWwgeworICAgIHdpZHRoOiAxMDAlOworICAgIGhlaWdodDogMTAwJTsKKyAgICBtYXJnaW46
IDA7Cit9CisKKy5jb250YWluZXIgeworICAgIHdpZHRoOiAzMjBweDsKKyAgICBoZWlnaHQ6IDMy
MHB4OworICAgIGJvcmRlcjogc29saWQgMnB4IHNpbHZlcjsKKyAgICBib3gtc2l6aW5nOiBib3Jk
ZXItYm94OworfQorCisjZWRpdG9yIHsKKyAgICBvcGFjaXR5OiAwLjAwMTsKKyAgICB3aWR0aDog
aW5oZXJpdDsKKyAgICBoZWlnaHQ6IGluaGVyaXQ7CisgICAgZm9udC1zaXplOiAyNHB4OworfQor
PC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBjbGFzcz0iY29udGFpbmVyIj4KKyAgICA8
ZGl2IGlkPSJlZGl0b3IiIGNvbnRlbnRlZGl0YWJsZT4KKyAgICAgICAgSGVyZSdzIHRvIHRoZSBj
cmF6eSBvbmVzLCB0aGUgbWlzZml0cywgdGhlIHJlYmVscywgdGhlIHRyb3VibGVtYWtlcnMsIHRo
ZSByb3VuZCBwZWdzIGluIHRoZSBzcXVhcmUgaG9sZXMuCisgICAgICAgIFRoZSBvbmVzIHdobyBz
ZWUgdGhpbmdzIGRpZmZlcmVudGx5LiBUaGV5J3JlIG5vdCBmb25kIG9mIHJ1bGVzLiBZb3UgY2Fu
IHF1b3RlIHRoZW0sIGRpc2FncmVlIHdpdGggdGhlbSwgZ2xvcmlmeSBvciB2aWxpZnkgdGhlbSwg
YnV0IHRoZSBvbmx5IHRoaW5nIHlvdSBjYW4ndCBkbyBpcyBpZ25vcmUgdGhlbSBiZWNhdXNlIHRo
ZXkgY2hhbmdlIHRoaW5ncy4KKyAgICA8L2Rpdj4KKzwvZGl2PgorPHA+VmVyaWZpZXMgdGhhdCBz
ZWxlY3Rpb24gVUkgaXMgc3VwcHJlc3NlZCB3aGVuIHRoZSBlZGl0YWJsZSByb290IGlzIHRyYW5z
cGFyZW50LiBUbyBtYW51YWxseSB0ZXN0LCBmb2N1cyB0aGUgYm94IGFib3ZlIGFuZCB2ZXJpZnkg
dGhhdDo8L3A+Cis8dWw+CisgICAgPGxpPlRoZSBjYXJldCBpcyBub3Qgc2hvd24uPC9saT4KKyAg
ICA8bGk+U2VsZWN0aW9uIGhpZ2hsaWdodHMgYXJlIG5vdCBzaG93bi48L2xpPgorICAgIDxsaT5U
aGUgc2VsZWN0aW9uIGNhbm5vdCBiZSBjaGFuZ2VkIHZpYSBnZXN0dXJlLjwvbGk+Cis8L3VsPgor
PGRpdj5DYXJldCByZWN0IGFmdGVyIGZvY3VzOiA8c3BhbiBpZD0iY2FyZXQtcmVjdCI+PC9zcGFu
PjwvZGl2PgorPGRpdj5TZWxlY3Rpb24gcmVjdHMgYWZ0ZXIgc2VsZWN0aW5nIGFsbDogPHNwYW4g
aWQ9InNlbGVjdGlvbi1yZWN0cyI+PC9zcGFuPjwvZGl2PgorPGRpdj5TZWxlY3Rpb24gc3RhcnQg
Z3JhYmJlciByZWN0IGFmdGVyIHNlbGVjdGluZyBhbGw6IDxzcGFuIGlkPSJzdGFydC1ncmFiYmVy
LXJlY3QiPjwvc3Bhbj48L2Rpdj4KKzxkaXY+U2VsZWN0aW9uIGVuZCBncmFiYmVyIHJlY3QgYWZ0
ZXIgc2VsZWN0aW5nIGFsbDogPHNwYW4gaWQ9ImVuZC1ncmFiYmVyLXJlY3QiPjwvc3Bhbj48L2Rp
dj4KKzxkaXY+U2VsZWN0aW9uIGJlZm9yZSB0YXA6IDxzcGFuIGlkPSJzZWxlY3Rpb24tYmVmb3Jl
Ij48L3NwYW4+PC9kaXY+Cis8ZGl2PlNlbGVjdGlvbiBhZnRlciB0YXA6IDxzcGFuIGlkPSJzZWxl
Y3Rpb24tYWZ0ZXIiPjwvc3Bhbj48L2Rpdj4KKzxzY3JpcHQ+CitmdW5jdGlvbiByZWN0VG9TdHJp
bmcocmVjdCkgeworICAgIHJldHVybiBgKGxlZnQgPSAke01hdGgucm91bmQocmVjdC5sZWZ0KX0s
IHRvcCA9ICR7TWF0aC5yb3VuZChyZWN0LnRvcCl9LCB3aWR0aCA9ICR7TWF0aC5yb3VuZChyZWN0
LndpZHRoKX0sIGhlaWdodCA9ICR7TWF0aC5yb3VuZChyZWN0LmhlaWdodCl9KWA7Cit9CisKK2Z1
bmN0aW9uIHNlbGVjdGlvblRvU3RyaW5nKCkgeworICAgIGNvbnN0IHNlbGVjdGlvbiA9IGdldFNl
bGVjdGlvbigpOworICAgIGlmICghc2VsZWN0aW9uLnJhbmdlQ291bnQpCisgICAgICAgIHJldHVy
biAiKG5vIHNlbGVjdGlvbikiOworCisgICAgY29uc3QgcmFuZ2UgPSBzZWxlY3Rpb24uZ2V0UmFu
Z2VBdCgwKTsKKyAgICByZXR1cm4gYCgke3JhbmdlLnN0YXJ0Q29udGFpbmVyfSMke3JhbmdlLnN0
YXJ0T2Zmc2V0fSwgJHtyYW5nZS5lbmRDb250YWluZXJ9IyR7cmFuZ2UuZW5kT2Zmc2V0fSlgOwor
fQorCisoYXN5bmMgKCkgPT4geworICAgIGlmICghd2luZG93LnRlc3RSdW5uZXIpCisgICAgICAg
IHJldHVybjsKKworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgIHRlc3RSdW5uZXIu
d2FpdFVudGlsRG9uZSgpOworCisgICAgYXdhaXQgVUlIZWxwZXIuYWN0aXZhdGVBbmRXYWl0Rm9y
SW5wdXRTZXNzaW9uQXQoMTYwLCAxNjApOworICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIiNj
YXJldC1yZWN0IikudGV4dENvbnRlbnQgPSByZWN0VG9TdHJpbmcoYXdhaXQgVUlIZWxwZXIuZ2V0
VUlDYXJldFZpZXdSZWN0KCkpOworCisgICAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoInNlbGVjdEFs
bCIpOworICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIiNzZWxlY3Rpb24tcmVjdHMiKS50ZXh0
Q29udGVudCA9IChhd2FpdCBVSUhlbHBlci5nZXRVSVNlbGVjdGlvblZpZXdSZWN0cygpKS5tYXAo
cmVjdFRvU3RyaW5nKS5qb2luKCIsICIpOworICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIiNz
dGFydC1ncmFiYmVyLXJlY3QiKS50ZXh0Q29udGVudCA9IHJlY3RUb1N0cmluZyhhd2FpdCBVSUhl
bHBlci5nZXRTZWxlY3Rpb25TdGFydEdyYWJiZXJWaWV3UmVjdCgpKTsKKyAgICBkb2N1bWVudC5x
dWVyeVNlbGVjdG9yKCIjZW5kLWdyYWJiZXItcmVjdCIpLnRleHRDb250ZW50ID0gcmVjdFRvU3Ry
aW5nKGF3YWl0IFVJSGVscGVyLmdldFNlbGVjdGlvbkVuZEdyYWJiZXJWaWV3UmVjdCgpKTsKKwor
ICAgIGdldFNlbGVjdGlvbigpLmNvbGxhcHNlVG9FbmQoKTsKKyAgICBkb2N1bWVudC5xdWVyeVNl
bGVjdG9yKCIjc2VsZWN0aW9uLWJlZm9yZSIpLnRleHRDb250ZW50ID0gc2VsZWN0aW9uVG9TdHJp
bmcoKTsKKyAgICBhd2FpdCBVSUhlbHBlci50YXBBdCgzMiwgMzIpOworICAgIGRvY3VtZW50LnF1
ZXJ5U2VsZWN0b3IoIiNzZWxlY3Rpb24tYWZ0ZXIiKS50ZXh0Q29udGVudCA9IHNlbGVjdGlvblRv
U3RyaW5nKCk7CisKKyAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKK30pKCk7Cis8L3Njcmlw
dD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3Jlc291cmNlcy91
aS1oZWxwZXIuanMgYi9MYXlvdXRUZXN0cy9yZXNvdXJjZXMvdWktaGVscGVyLmpzCmluZGV4IGFl
NzBmMDNkZDMxYmRkYjgzNGVjYWUxMjBhZGRlODM5YTQ3ZDhkZjAuLmYwOTY1OTFhZDAxMjNmMzg1
YjU3NTE0M2QyZGM5YTQxNDNhOGIxZWEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3Jlc291cmNl
cy91aS1oZWxwZXIuanMKKysrIGIvTGF5b3V0VGVzdHMvcmVzb3VyY2VzL3VpLWhlbHBlci5qcwpA
QCAtMTYzLDYgKzE2MywzOCBAQCB3aW5kb3cuVUlIZWxwZXIgPSBjbGFzcyBVSUhlbHBlciB7CiAg
ICAgfQogCiAgICAgc3RhdGljIGdldFVJU2VsZWN0aW9uUmVjdHMoKQorICAgIHsKKyAgICAgICAg
aWYgKCF0aGlzLmlzV2ViS2l0MigpIHx8ICF0aGlzLmlzSU9TKCkpCisgICAgICAgICAgICByZXR1
cm4gUHJvbWlzZS5yZXNvbHZlKCk7CisKKyAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29s
dmUgPT4geworICAgICAgICAgICAgdGVzdFJ1bm5lci5ydW5VSVNjcmlwdChgKGZ1bmN0aW9uKCkg
eworICAgICAgICAgICAgICAgIHVpQ29udHJvbGxlci5kb0FmdGVyTmV4dFN0YWJsZVByZXNlbnRh
dGlvblVwZGF0ZShmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICAgICAgdWlDb250cm9sbGVy
LnVpU2NyaXB0Q29tcGxldGUoSlNPTi5zdHJpbmdpZnkodWlDb250cm9sbGVyLnRleHRTZWxlY3Rp
b25SYW5nZVJlY3RzKSk7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9KSgpYCwg
anNvblN0cmluZyA9PiB7CisgICAgICAgICAgICAgICAgcmVzb2x2ZShKU09OLnBhcnNlKGpzb25T
dHJpbmcpKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9KTsKKyAgICB9CisKKyAgICBzdGF0
aWMgZ2V0VUlDYXJldFZpZXdSZWN0KCkKKyAgICB7CisgICAgICAgIGlmICghdGhpcy5pc1dlYktp
dDIoKSB8fCAhdGhpcy5pc0lPUygpKQorICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2
ZSgpOworCisgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHsKKyAgICAgICAg
ICAgIHRlc3RSdW5uZXIucnVuVUlTY3JpcHQoYChmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAg
ICB1aUNvbnRyb2xsZXIuZG9BZnRlck5leHRTdGFibGVQcmVzZW50YXRpb25VcGRhdGUoZnVuY3Rp
b24oKSB7CisgICAgICAgICAgICAgICAgICAgIHVpQ29udHJvbGxlci51aVNjcmlwdENvbXBsZXRl
KEpTT04uc3RyaW5naWZ5KHVpQ29udHJvbGxlci5zZWxlY3Rpb25DYXJldFZpZXdSZWN0KSk7Cisg
ICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9KSgpYCwganNvblN0cmluZyA9PiB7Cisg
ICAgICAgICAgICAgICAgcmVzb2x2ZShKU09OLnBhcnNlKGpzb25TdHJpbmcpKTsKKyAgICAgICAg
ICAgIH0pOworICAgICAgICB9KTsKKyAgICB9CisKKyAgICBzdGF0aWMgZ2V0VUlTZWxlY3Rpb25W
aWV3UmVjdHMoKQogICAgIHsKICAgICAgICAgaWYgKCF0aGlzLmlzV2ViS2l0MigpIHx8ICF0aGlz
LmlzSU9TKCkpCiAgICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>354691</attachid>
            <date>2018-11-13 12:52:41 -0800</date>
            <delta_ts>2018-11-13 14:30:36 -0800</delta_ts>
            <desc>Patch for EWS</desc>
            <filename>bug-191442-20181113125241.patch</filename>
            <type>text/plain</type>
            <size>61780</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM4MTMyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTYyNjc3NzFmZmYwMTJi
MTBmMDI0MzQ4Yzc3ZWU4Yzk1YTEzNWZiNi4uOWZkNWE0MGE1MWE0MzFkZjE5Y2ZmYWE3NmFlYjFk
MDg4NTBjMGIyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDE4LTExLTEzICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtpT1NdIERvIG5v
dCBzaG93IHNlbGVjdGlvbiBVSSBmb3IgZWRpdGFibGUgZWxlbWVudHMgd2l0aCBvcGFjaXR5IG5l
YXIgemVybworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTkxNDQyCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80NTk1ODYyNT4KKworICAgICAgICBSZXZp
ZXdlZCBieSBTaW1vbiBGcmFzZXIuCisKKyAgICAgICAgVGVzdHM6IGVkaXRpbmcvc2VsZWN0aW9u
L2lvcy9kby1ub3Qtem9vbS10by1mb2N1c2VkLWhpZGRlbi1jb250ZW50ZWRpdGFibGUuaHRtbAor
ICAgICAgICAgICAgICAgZWRpdGluZy9zZWxlY3Rpb24vaW9zL2hpZGUtc2VsZWN0aW9uLWFmdGVy
LWhpZGluZy1jb250ZW50ZWRpdGFibGUuaHRtbAorICAgICAgICAgICAgICAgZWRpdGluZy9zZWxl
Y3Rpb24vaW9zL2hpZGUtc2VsZWN0aW9uLWluLWNvbnRlbnRlZGl0YWJsZS1uZXN0ZWQtdHJhbnNw
YXJlbmN5Lmh0bWwKKyAgICAgICAgICAgICAgIGVkaXRpbmcvc2VsZWN0aW9uL2lvcy9oaWRlLXNl
bGVjdGlvbi1pbi1oaWRkZW4tY29udGVudGVkaXRhYmxlLWZyYW1lLmh0bWwKKyAgICAgICAgICAg
ICAgIGVkaXRpbmcvc2VsZWN0aW9uL2lvcy9oaWRlLXNlbGVjdGlvbi1pbi1oaWRkZW4tY29udGVu
dGVkaXRhYmxlLmh0bWwKKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0Ojppc1RyYW5zcGFyZW50UmVzcGVjdGluZ1Bh
cmVudEZyYW1lcyBjb25zdCk6CisKKyAgICAgICAgQWRkIGEgaGVscGVyIGZ1bmN0aW9uIHRvIGRl
dGVybWluZSB3aGV0aGVyIGEgUmVuZGVyT2JqZWN0IGlzIGNvbnRhaW5lZCB3aXRoaW4gYSB0cmFu
c3BhcmVudCBsYXllciwgdGFraW5nIHBhcmVudAorICAgICAgICBmcmFtZXMgaW50byBhY2NvdW50
LiBBIGxheWVyIGlzIGNvbnNpZGVyZWQgdHJhbnNwYXJlbnQgaWYgaXRzIG9wYWNpdHkgaXMgbGVz
cyB0aGFuIGEgc21hbGwgdGhyZXNob2xkIChpLmUuIDAuMDEpLgorICAgICAgICBPcGFjaXR5IG9u
IGFuY2VzdG9yIGVsZW1lbnRzIGlzIGFwcGxpZWQgbXVsdGlwbGljYXRpdmVseS4KKworICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJPYmplY3QuaDoKKwogMjAxOC0xMS0xMyAgQ2hhcmxpZSBUdXJu
ZXIgIDxjdHVybmVyQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0VNRV1bR1N0cmVhbWVyXSBNYWtl
IENETUluc3RhbmNlJ3MgYXZhaWxhYmxlIGluIGRlY3J5cHRvcnMsIGFuZCBmYWN0b3Igb3V0IHNv
bWUgRU1FIHV0aWxpdHkgY2xhc3Nlcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggNDI5YjcxMTYyZWQwOGQwY2Q4NDEz
ODZjMTc5MDJjZTY5ZTA1YTU0Yi4uODI0OWVmODhhOWI3YTY3ZGUwYzdhMTk0NTk5ODE5YjM0ZjJi
YmEwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw3OSBAQAorMjAxOC0xMS0xMyAgV2Vuc29uIEhzaWVo
ICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBbaU9TXSBEbyBub3Qgc2hvdyBz
ZWxlY3Rpb24gVUkgZm9yIGVkaXRhYmxlIGVsZW1lbnRzIHdpdGggb3BhY2l0eSBuZWFyIHplcm8K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MTQ0Mgor
ICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDU5NTg2MjU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
U2ltb24gRnJhc2VyLgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBzdXBwcmVzc2luZyBuYXRp
dmUgc2VsZWN0aW9uIFVJIChmb3IgaW5zdGFuY2UsIHNlbGVjdGlvbiBoaWdobGlnaHQgdmlld3Ms
IHNlbGVjdGlvbiBoYW5kbGVzLCBhbmQKKyAgICAgICAgc2VsZWN0aW9uLXJlbGF0ZWQgZ2VzdHVy
ZXMpIHdoZW4gdGhlIHNlbGVjdGlvbiBpcyBpbnNpZGUgYSB0cmFuc3BhcmVudCBlZGl0YWJsZSBl
bGVtZW50LiBUaGlzIGhlbHBzIG1haW50YWluCisgICAgICAgIGNvbXBhdGliaWxpdHkgd2l0aCB0
ZXh0IGVkaXRvcnMgdGhhdCB3b3JrIGJ5IGNhcHR1cmluZyBrZXkgZXZlbnRzIGFuZCBpbnB1dCBl
dmVudHMgaGlkZGVuIGNvbnRlbnRlZGl0YWJsZQorICAgICAgICBlbGVtZW50cywgYW5kIHJlZmxl
Y3QgdGhlc2UgY2hhbmdlcyBpbiBkaWZmZXJlbnQgZG9jdW1lbnQgb3IgZGlmZmVyZW50IHBhcnQg
b2YgdGhlIGRvY3VtZW50LgorCisgICAgICAgIFNpbmNlIHNlbGVjdGlvbiBVSSBpcyByZW5kZXJl
ZCBpbiB0aGUgVUkgcHJvY2VzcyBvbiBpT1MgdXNpbmcgZWxlbWVudCBnZW9tZXRyeSBwcm9wYWdh
dGVkIGZyb20gdGhlIHdlYiBwcm9jZXNzLAorICAgICAgICBzZWxlY3Rpb24gcmVuZGVyaW5nIGlz
IGVudGlyZWx5IGRlY291cGxlZCBmcm9tIHRoZSBwcm9jZXNzIG9mIHBhaW50aW5nIGluIHRoZSB3
ZWIgcHJvY2Vzcy4gVGhpcyBtZWFucyB0aGF0IGlmCisgICAgICAgIHRoZSBlZGl0YWJsZSByb290
IGhhcyBhbiBvcGFjaXR5IG9mIDAsIHdlIHdvdWxkIGNvcnJlY3RseSBoaWRlIHRoZSBjYXJldCBh
bmQgc2VsZWN0aW9uIG9uIG1hY09TLCBidXQgZHJhdyBvdmVyCisgICAgICAgIHRoZSB0cmFuc3Bh
cmVudCBlbGVtZW50IG9uIGlPUy4gV2hlbiB0aGVzZSBoaWRkZW4gZWRpdGFibGUgZWxlbWVudHMg
YXJlIGZvY3VzZWQsIHRoaXMgb2Z0ZW4gcmVzdWx0cyBpbiB1bndhbnRlZAorICAgICAgICBiZWhh
dmlvcnMsIHN1Y2ggYXMgZG91YmxlIGNhcmV0IHBhaW50aW5nLCBuYXRpdmUgYW5kIGN1c3RvbSBz
ZWxlY3Rpb24gVUkgZnJvbSB0aGUgcGFnZSBiZWluZyBkcmF3biBvbiB0b3Agb2Ygb25lCisgICAg
ICAgIGFub3RoZXIsIGFuZCB0aGUgYWJpbGl0eSB0byBjaGFuZ2Ugc2VsZWN0aW9uIHZpYSB0YXAg
YW5kIGxvdXBlIGdlc3R1cmVzIHdpdGhpbiBoaWRkZW4gdGV4dC4KKworICAgICAgICBUbyBmaXgg
dGhpcywgd2UgY29tcHV0ZSB3aGV0aGVyIHRoZSBmb2N1c2VkIGVsZW1lbnQgaXMgdHJhbnNwYXJl
bnQgd2hlbiBhbiBlbGVtZW50IGlzIGZvY3VzZWQsIG9yIHdoZW4gdGhlCisgICAgICAgIHNlbGVj
dGlvbiBjaGFuZ2VzLCBhbmQgc2VuZCB0aGlzIGluZm9ybWF0aW9uIG92ZXIgdG8gdGhlIFVJIHBy
b2Nlc3MgdmlhIGBBc3Npc3RlZE5vZGVJbmZvcm1hdGlvbmAgYW5kCisgICAgICAgIGBFZGl0b3JT
dGF0ZWAuIEluIHRoZSBVSSBwcm9jZXNzLCB3ZSB0aGVuIHJlc3BlY3QgdGhpcyBpbmZvcm1hdGlv
biBieSBzdXBwcmVzc2luZyB0aGUgc2VsZWN0aW9uIGFzc2lzdGFudCBpZiB0aGUKKyAgICAgICAg
Zm9jdXNlZCBlbGVtZW50IGlzIHRyYW5zcGFyZW50OyB0aGlzIGRpc2FibGVzIHNob3dpbmcgYW5k
IGxheWluZyBvdXQgc2VsZWN0aW9uIHZpZXdzLCBhcyB3ZWxsIGFzIGdlc3R1cmVzCisgICAgICAg
IGFzc29jaWF0ZWQgd2l0aCBzZWxlY3Rpb24gb3ZlcmxheXMuIEhvd2V2ZXIsIHRoaXMgc3RpbGwg
YWxsb3dzIGZvciBjb250ZXh0dWFsIGF1dG9jb3JyZWN0aW9uIGFuZCBzcGVsbCBjaGVja2luZy4K
KworICAgICAgICAqIFNoYXJlZC9Bc3Npc3RlZE5vZGVJbmZvcm1hdGlvbi5jcHA6CisgICAgICAg
IChXZWJLaXQ6OkFzc2lzdGVkTm9kZUluZm9ybWF0aW9uOjplbmNvZGUgY29uc3QpOgorICAgICAg
ICAoV2ViS2l0OjpBc3Npc3RlZE5vZGVJbmZvcm1hdGlvbjo6ZGVjb2RlKToKKyAgICAgICAgKiBT
aGFyZWQvQXNzaXN0ZWROb2RlSW5mb3JtYXRpb24uaDoKKyAgICAgICAgKiBTaGFyZWQvRWRpdG9y
U3RhdGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpFZGl0b3JTdGF0ZTo6UG9zdExheW91dERhdGE6
OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OkVkaXRvclN0YXRlOjpQb3N0TGF5b3V0
RGF0YTo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvRWRpdG9yU3RhdGUuaDoKKworICAgICAg
ICBBZGQgYGVsZW1lbnRJc1RyYW5zcGFyZW50YCBmbGFncywgYW5kIGFsc28gYWRkIGJvaWxlcnBs
YXRlIElQQyBjb2RlLgorCisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50
ZXJhY3Rpb24ubW06CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgX2Rpc3BsYXlGb3JtTm9kZUlu
cHV0Vmlld10pOgorCisgICAgICAgIFByZXZlbnQgem9vbWluZyB0byB0aGUgZm9jdXNlZCBlbGVt
ZW50IGlmIHRoZSBmb2N1c2VkIGVsZW1lbnQgaXMgaGlkZGVuLgorCisgICAgICAgICgtW1dLQ29u
dGVudFZpZXcgaGFzU2VsZWN0YWJsZVBvc2l0aW9uQXRQb2ludDpdKToKKyAgICAgICAgKC1bV0tD
b250ZW50VmlldyBwb2ludElzTmVhck1hcmtlZFRleHQ6XSk6CisgICAgICAgICgtW1dLQ29udGVu
dFZpZXcgdGV4dEludGVyYWN0aW9uR2VzdHVyZTpzaG91bGRCZWdpbkF0UG9pbnQ6XSk6CisKKyAg
ICAgICAgRG9uJ3QgYWxsb3cgdGhlc2UgdGV4dCBpbnRlcmFjdGlvbiBnZXN0dXJlcyB0byBiZWdp
biB3aGlsZSBzdXBwcmVzc2luZyB0aGUgc2VsZWN0aW9uIGFzc2lzdGFudC4KKworICAgICAgICAo
LVtXS0NvbnRlbnRWaWV3IF9zdGFydEFzc2lzdGluZ05vZGU6dXNlcklzSW50ZXJhY3Rpbmc6Ymx1
clByZXZpb3VzTm9kZTpjaGFuZ2luZ0FjdGl2aXR5U3RhdGU6dXNlck9iamVjdDpdKToKKworICAg
ICAgICBXaGVuIGFuIGVsZW1lbnQgaXMgZm9jdXNlZCwgYmVnaW4gc3VwcHJlc3NpbmcgdGhlIHNl
bGVjdGlvbiBhc3Npc3RhbnQgaWYgdGhlIGVsZW1lbnQgaXMgZnVsbHkgdHJhbnNwYXJlbnQuCisK
KyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfc3RvcEFzc2lzdGluZ05vZGVdKToKKworICAgICAg
ICBXaGVuIHRoZSBmb2N1c2VkIGVsZW1lbnQgaXMgYmx1cnJlZCwgcmVzZXQgc3RhdGUgYnkgZW5k
aW5nIHNlbGVjdGlvbiBhc3Npc3RhbnQgc3VwcHJlc3Npb24gKGFkZGl0aW9uYWxseQorICAgICAg
ICByZWFjdGl2YXRpbmcgdGhlIHNlbGVjdGlvbiBhc3Npc3RhbnQgaWYgbmVlZGVkKS4gVGhpcyBl
bnN1cmVzIHRoYXQgc2VsZWN0aW9uIGluIG5vbi1lZGl0YWJsZSB0ZXh0IGlzbid0IGJyb2tlbgor
ICAgICAgICBhZnRlciBmb2N1c2luZyBhIGhpZGRlbiBlZGl0YWJsZSBlbGVtZW50LgorCisgICAg
ICAgICgtW1dLQ29udGVudFZpZXcgX3VwZGF0ZUNoYW5nZWRTZWxlY3Rpb246XSk6CisKKyAgICAg
ICAgSWYgbmVlZGVkLCBzdXBwcmVzcyBvciB1bi1zdXBwcmVzcyB0aGUgc2VsZWN0aW9uIGFzc2lz
dGFudCB3aGVuIHRoZSBzZWxlY3Rpb24gY2hhbmdlcy4gT24gY2VydGFpbiByaWNoIHRleHQKKyAg
ICAgICAgZWRpdG9ycywgYSBjb21iaW5hdGlvbiBvZiBjdXN0b20gc2VsZWN0aW9uIFVJIGFuZCBu
YXRpdmUgc2VsZWN0aW9uIFVJIGlzIHVzZWQuIEZvciBpbnN0YW5jZSwgb24gTWljcm9zb2Z0IE9m
ZmljZQorICAgICAgICAzNjUsIGNhcmV0IHNlbGVjdGlvbnMgYXJlIHJlbmRlcmVkIHVzaW5nIHRo
ZSBuYXRpdmUgY2FyZXQgdmlldywgYnV0IGFzIHNvb24gYXMgdGhlIHNlbGVjdGlvbiBiZWNvbWVz
IHJhbmdlZCwgdGhlCisgICAgICAgIGVkaXRhYmxlIHJvb3QgYmVjb21lcyBmdWxseSB0cmFuc3Bh
cmVudCwgYW5kIE9mZmljZSdzIHNlbGVjdGlvbiBVSSB0YWtlcyBvdmVyLgorCisgICAgICAgICgt
W1dLQ29udGVudFZpZXcgX3Nob3VsZFN1cHByZXNzU2VsZWN0aW9uQ29tbWFuZHNdKToKKworICAg
ICAgICBPdmVycmlkZSB0aGlzIFVJS2l0IFNQSSBob29rIHRvIHN1cHByZXNzIHNlbGVjdGlvbiBj
b21tYW5kcyAoZS5nLiB0aGUgY2FsbG91dCBiYXIpIHdoZW4gc3VwcHJlc3NpbmcgdGhlCisgICAg
ICAgIHNlbGVjdGlvbiBhc3Npc3RhbnQuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
aW9zL1dlYlBhZ2VJT1MubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnBsYXRmb3JtRWRp
dG9yU3RhdGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpnZXRBc3Npc3RlZE5v
ZGVJbmZvcm1hdGlvbik6CisKKyAgICAgICAgQ29tcHV0ZSBhbmQgc2V0IGBlbGVtZW50SXNUcmFu
c3BhcmVudGAgdXNpbmcgdGhlIGFzc2lzdGVkIG5vZGUuCisKIDIwMTgtMTEtMTMgIEFsaSBKdW1h
ICA8YWp1bWFAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFR1cm4gSW50ZXJzZWN0aW9uIE9ic2Vy
dmVyIG9uIGJ5IGRlZmF1bHQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5j
cHAKaW5kZXggNDI1NTEwNWUyNDRmZGQ1MTdmMzQ5NGJhYjY5OTI4YjMyMzk3YTQ2ZC4uZDVmODA4
NWU4MzY4MDBlN2UxNjRiNmYzN2M1YTBlNWQ4MmQyNDk0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKQEAgLTE1MTQsNiArMTUxNCwzNSBAQCB2b2lkIFJlbmRl
ck9iamVjdDo6ZGVzdHJveSgpCiAgICAgZGVsZXRlIHRoaXM7CiB9CiAKK2Jvb2wgUmVuZGVyT2Jq
ZWN0Ojppc1RyYW5zcGFyZW50UmVzcGVjdGluZ1BhcmVudEZyYW1lcygpIGNvbnN0Cit7CisgICAg
c3RhdGljIGNvbnN0IGRvdWJsZSBtaW5pbXVtVmlzaWJsZU9wYWNpdHkgPSAwLjAxOworCisgICAg
ZmxvYXQgY3VycmVudE9wYWNpdHkgPSAxOworICAgIGF1dG8qIGxheWVyID0gZW5jbG9zaW5nTGF5
ZXIoKTsKKyAgICB3aGlsZSAobGF5ZXIpIHsKKyAgICAgICAgYXV0byYgbGF5ZXJSZW5kZXJlciA9
IGxheWVyLT5yZW5kZXJlcigpOworICAgICAgICBjdXJyZW50T3BhY2l0eSAqPSBsYXllclJlbmRl
cmVyLnN0eWxlKCkub3BhY2l0eSgpOworICAgICAgICBpZiAoY3VycmVudE9wYWNpdHkgPCBtaW5p
bXVtVmlzaWJsZU9wYWNpdHkpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgICAgICBh
dXRvKiBwYXJlbnRMYXllciA9IGxheWVyLT5wYXJlbnQoKTsKKyAgICAgICAgaWYgKCFwYXJlbnRM
YXllcikgeworICAgICAgICAgICAgaWYgKCFpczxSZW5kZXJWaWV3PihsYXllclJlbmRlcmVyKSkK
KyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgICAgIGF1dG8mIGVuY2xv
c2luZ0ZyYW1lID0gZG93bmNhc3Q8UmVuZGVyVmlldz4obGF5ZXJSZW5kZXJlcikudmlldygpLmZy
YW1lKCk7CisgICAgICAgICAgICBpZiAoZW5jbG9zaW5nRnJhbWUuaXNNYWluRnJhbWUoKSkKKyAg
ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgICAgIGlmIChhdXRvICpmcmFt
ZU93bmVyUmVuZGVyZXIgPSBlbmNsb3NpbmdGcmFtZS5vd25lckVsZW1lbnQoKS0+cmVuZGVyZXIo
KSkKKyAgICAgICAgICAgICAgICBwYXJlbnRMYXllciA9IGZyYW1lT3duZXJSZW5kZXJlci0+ZW5j
bG9zaW5nTGF5ZXIoKTsKKyAgICAgICAgfQorICAgICAgICBsYXllciA9IHBhcmVudExheWVyOwor
ICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKIFBvc2l0aW9uIFJlbmRlck9iamVjdDo6cG9z
aXRpb25Gb3JQb2ludChjb25zdCBMYXlvdXRQb2ludCYgcG9pbnQpCiB7CiAgICAgLy8gRklYTUU6
IFRoaXMgc2hvdWxkIGp1c3QgY3JlYXRlIGEgUG9zaXRpb24gb2JqZWN0IGluc3RlYWQgKHdlYmtp
dC5vcmcvYi8xNjg1NjYpLiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaApp
bmRleCAyZGNlOWRjYzU2OTEzMDkxZjcyOTk0N2ZjNmRmNzI2NGE4ZTQzZjVlLi42NzQ1YzA3NDg1
YzgwY2RiN2MyYmIyZjY5MTkwNGM0Y2Y3OWEwMWQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlck9iamVjdC5oCkBAIC03OTcsNiArNzk3LDggQEAgcHVibGljOgogICAgIHZvaWQgaW5p
dGlhbGl6ZUZyYWdtZW50ZWRGbG93U3RhdGVPbkluc2VydGlvbigpOwogICAgIHZpcnR1YWwgdm9p
ZCBpbnNlcnRlZEludG9UcmVlKCk7CiAKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGlzVHJhbnNw
YXJlbnRSZXNwZWN0aW5nUGFyZW50RnJhbWVzKCkgY29uc3Q7CisKIHByb3RlY3RlZDoKICAgICAv
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KICAgICAvLyBIZWxwZXIg
ZnVuY3Rpb25zLiBEYW5nZXJvdXMgdG8gdXNlIQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
aGFyZWQvQXNzaXN0ZWROb2RlSW5mb3JtYXRpb24uY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
QXNzaXN0ZWROb2RlSW5mb3JtYXRpb24uY3BwCmluZGV4IDllYTVkMTEyOTViOWM1ZTI2MGJhNjY3
MDdiYTkzNWVjY2QxYjFkNTcuLmE4YmQ3YTdmZjkyOTU2MjE2Y2UzMzcyODE5ZGY5MDlmMjM5MTUx
ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Fzc2lzdGVkTm9kZUluZm9ybWF0
aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Bc3Npc3RlZE5vZGVJbmZvcm1hdGlv
bi5jcHAKQEAgLTkxLDYgKzkxLDcgQEAgdm9pZCBBc3Npc3RlZE5vZGVJbmZvcm1hdGlvbjo6ZW5j
b2RlKElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKICAgICBlbmNvZGVyIDw8IHRpdGxlOwog
ICAgIGVuY29kZXIgPDwgYWNjZXB0c0F1dG9maWxsZWRMb2dpbkNyZWRlbnRpYWxzOwogICAgIGVu
Y29kZXIgPDwgaXNBdXRvZmlsbGFibGVVc2VybmFtZUZpZWxkOworICAgIGVuY29kZXIgPDwgZWxl
bWVudElzVHJhbnNwYXJlbnQ7CiAgICAgZW5jb2RlciA8PCByZXByZXNlbnRpbmdQYWdlVVJMOwog
ICAgIGVuY29kZXIuZW5jb2RlRW51bShhdXRvZmlsbEZpZWxkTmFtZSk7CiAgICAgZW5jb2RlciA8
PCBwbGFjZWhvbGRlcjsKQEAgLTE5MSw2ICsxOTIsOSBAQCBib29sIEFzc2lzdGVkTm9kZUluZm9y
bWF0aW9uOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBBc3Npc3RlZE5vZGVJbmZvcm1h
dAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LmlzQXV0b2ZpbGxhYmxlVXNlcm5hbWVG
aWVsZCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAorICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
cmVzdWx0LmVsZW1lbnRJc1RyYW5zcGFyZW50KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCiAg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQucmVwcmVzZW50aW5nUGFnZVVSTCkpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQXNz
aXN0ZWROb2RlSW5mb3JtYXRpb24uaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Fzc2lzdGVkTm9k
ZUluZm9ybWF0aW9uLmgKaW5kZXggNzk3OWVmYjgwNTRhODQxZmU0M2ZlOWQ4NDY4NTU5MWRmNmQ2
ZGFhNi4uMDQ4NDRhMjQxOTY4NjhhOTExYTkzYzIxYTM1YzlmNjMyZTMzZjAzZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQXNzaXN0ZWROb2RlSW5mb3JtYXRpb24uaAorKysgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9Bc3Npc3RlZE5vZGVJbmZvcm1hdGlvbi5oCkBAIC0xMjAsNiAr
MTIwLDcgQEAgc3RydWN0IEFzc2lzdGVkTm9kZUluZm9ybWF0aW9uIHsKICAgICBTdHJpbmcgdGl0
bGU7CiAgICAgYm9vbCBhY2NlcHRzQXV0b2ZpbGxlZExvZ2luQ3JlZGVudGlhbHMgeyBmYWxzZSB9
OwogICAgIGJvb2wgaXNBdXRvZmlsbGFibGVVc2VybmFtZUZpZWxkIHsgZmFsc2UgfTsKKyAgICBi
b29sIGVsZW1lbnRJc1RyYW5zcGFyZW50IHsgZmFsc2UgfTsKICAgICBXZWJDb3JlOjpVUkwgcmVw
cmVzZW50aW5nUGFnZVVSTDsKICAgICBXZWJDb3JlOjpBdXRvZmlsbEZpZWxkTmFtZSBhdXRvZmls
bEZpZWxkTmFtZSB7IFdlYkNvcmU6OkF1dG9maWxsRmllbGROYW1lOjpOb25lIH07CiAgICAgU3Ry
aW5nIHBsYWNlaG9sZGVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvRWRpdG9y
U3RhdGUuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvRWRpdG9yU3RhdGUuY3BwCmluZGV4IGMw
NzNkMzBiODliNzhhNGJiMGRkZmIwZjk3NTY0MTNhMjZiNDkyMTcuLjBhMmJhN2YwMzY3NTk5MTdl
YjM0YzkzNTkwMDVhYmIzZWNjY2U2YTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0VkaXRvclN0YXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9FZGl0b3JTdGF0ZS5j
cHAKQEAgLTEzMSw2ICsxMzEsNyBAQCB2b2lkIEVkaXRvclN0YXRlOjpQb3N0TGF5b3V0RGF0YTo6
ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKICAgICBlbmNvZGVyIDw8IGlzU3Rh
YmxlU3RhdGVVcGRhdGU7CiAgICAgZW5jb2RlciA8PCBpbnNpZGVGaXhlZFBvc2l0aW9uOwogICAg
IGVuY29kZXIgPDwgaGFzUGxhaW5UZXh0OworICAgIGVuY29kZXIgPDwgZWxlbWVudElzVHJhbnNw
YXJlbnQ7CiAgICAgZW5jb2RlciA8PCBjYXJldENvbG9yOwogI2VuZGlmCiAjaWYgUExBVEZPUk0o
TUFDKQpAQCAtMTg3LDYgKzE4OCw4IEBAIGJvb2wgRWRpdG9yU3RhdGU6OlBvc3RMYXlvdXREYXRh
OjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBQb3N0TGF5b3V0RGF0YSYKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0Lmhhc1BsYWluVGV4
dCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3Vs
dC5lbGVtZW50SXNUcmFuc3BhcmVudCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKHJlc3VsdC5jYXJldENvbG9yKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9FZGl0b3JTdGF0ZS5o
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvRWRpdG9yU3RhdGUuaAppbmRleCAwZmEyMzgzZWNlMGZh
MjRhNDkxNjc3ZjQ0MjA4ODhhZjNhMWQ0MWFiLi45ZTMzOTA2NjIxYWQ5NDI1NTZmZGEwM2NjZTEw
Y2IyZjZlNDFhY2ZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9FZGl0b3JTdGF0
ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0VkaXRvclN0YXRlLmgKQEAgLTEwNyw2ICsx
MDcsNyBAQCBzdHJ1Y3QgRWRpdG9yU3RhdGUgewogICAgICAgICBib29sIGlzU3RhYmxlU3RhdGVV
cGRhdGUgeyBmYWxzZSB9OwogICAgICAgICBib29sIGluc2lkZUZpeGVkUG9zaXRpb24geyBmYWxz
ZSB9OwogICAgICAgICBib29sIGhhc1BsYWluVGV4dCB7IGZhbHNlIH07CisgICAgICAgIGJvb2wg
ZWxlbWVudElzVHJhbnNwYXJlbnQgeyBmYWxzZSB9OwogICAgICAgICBXZWJDb3JlOjpDb2xvciBj
YXJldENvbG9yOwogI2VuZGlmCiAjaWYgUExBVEZPUk0oTUFDKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbSBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KaW5kZXgg
NzBjODgzNjc3NDgyZjk5YWYyNjMzMjcyNjkyYzllNjRjNjgzMGQwNC4uYjg4N2I3N2IwMThjODll
YTdiYTU1MTkzMzNhZDFkNDk5YTdhMDhiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCkBAIC0xMzQyLDE2ICsx
MzQyLDE4IEBAIHN0YXRpYyBOU1ZhbHVlICpuc1NpemVGb3JUYXBIaWdobGlnaHRCb3JkZXJSYWRp
dXMoV2ViQ29yZTo6SW50U2l6ZSBib3JkZXJSYWRpdXMsCiAKIC0gKHZvaWQpX2Rpc3BsYXlGb3Jt
Tm9kZUlucHV0VmlldwogewotICAgIC8vIEluIGNhc2UgdXNlciBzY2FsaW5nIGlzIGZvcmNlIGVu
YWJsZWQsIGRvIG5vdCB1c2UgdGhhdCBzY2FsaW5nIHdoZW4gem9vbWluZyBpbiB3aXRoIGFuIGlu
cHV0IGZpZWxkLgotICAgIC8vIFpvb21pbmcgYWJvdmUgdGhlIHBhZ2UncyBkZWZhdWx0IHNjYWxl
IGZhY3RvciBzaG91bGQgb25seSBoYXBwZW4gd2hlbiB0aGUgdXNlciBwZXJmb3JtcyBpdC4KLSAg
ICBbc2VsZiBfem9vbVRvRm9jdXNSZWN0Ol9hc3Npc3RlZE5vZGVJbmZvcm1hdGlvbi5lbGVtZW50
UmVjdAotICAgICAgICBzZWxlY3Rpb25SZWN0Ol9kaWRBY2Nlc3NvcnlUYWJJbml0aWF0ZUZvY3Vz
ID8gSW50UmVjdCgpIDogX2Fzc2lzdGVkTm9kZUluZm9ybWF0aW9uLnNlbGVjdGlvblJlY3QKLSAg
ICAgICAgaW5zaWRlRml4ZWQ6X2Fzc2lzdGVkTm9kZUluZm9ybWF0aW9uLmluc2lkZUZpeGVkUG9z
aXRpb24KLSAgICAgICAgZm9udFNpemU6X2Fzc2lzdGVkTm9kZUluZm9ybWF0aW9uLm5vZGVGb250
U2l6ZQotICAgICAgICBtaW5pbXVtU2NhbGU6X2Fzc2lzdGVkTm9kZUluZm9ybWF0aW9uLm1pbmlt
dW1TY2FsZUZhY3RvcgotICAgICAgICBtYXhpbXVtU2NhbGU6X2Fzc2lzdGVkTm9kZUluZm9ybWF0
aW9uLm1heGltdW1TY2FsZUZhY3Rvcklnbm9yaW5nQWx3YXlzU2NhbGFibGUKLSAgICAgICAgYWxs
b3dTY2FsaW5nOl9hc3Npc3RlZE5vZGVJbmZvcm1hdGlvbi5hbGxvd3NVc2VyU2NhbGluZ0lnbm9y
aW5nQWx3YXlzU2NhbGFibGUgJiYgIWN1cnJlbnRVc2VySW50ZXJmYWNlSWRpb21Jc1BhZCgpCi0g
ICAgICAgIGZvcmNlU2Nyb2xsOihfYXNzaXN0ZWROb2RlSW5mb3JtYXRpb24uaW5wdXRNb2RlID09
IElucHV0TW9kZTo6Tm9uZSkgPyAhY3VycmVudFVzZXJJbnRlcmZhY2VJZGlvbUlzUGFkKCkgOiBb
c2VsZiByZXF1aXJlc0FjY2Vzc29yeVZpZXddXTsKKyAgICBpZiAoIXNlbGYuc3VwcHJlc3NBc3Np
c3RhbnRTZWxlY3Rpb25WaWV3KSB7CisgICAgICAgIC8vIEluIGNhc2UgdXNlciBzY2FsaW5nIGlz
IGZvcmNlIGVuYWJsZWQsIGRvIG5vdCB1c2UgdGhhdCBzY2FsaW5nIHdoZW4gem9vbWluZyBpbiB3
aXRoIGFuIGlucHV0IGZpZWxkLgorICAgICAgICAvLyBab29taW5nIGFib3ZlIHRoZSBwYWdlJ3Mg
ZGVmYXVsdCBzY2FsZSBmYWN0b3Igc2hvdWxkIG9ubHkgaGFwcGVuIHdoZW4gdGhlIHVzZXIgcGVy
Zm9ybXMgaXQuCisgICAgICAgIFtzZWxmIF96b29tVG9Gb2N1c1JlY3Q6X2Fzc2lzdGVkTm9kZUlu
Zm9ybWF0aW9uLmVsZW1lbnRSZWN0CisgICAgICAgICAgICBzZWxlY3Rpb25SZWN0Ol9kaWRBY2Nl
c3NvcnlUYWJJbml0aWF0ZUZvY3VzID8gSW50UmVjdCgpIDogX2Fzc2lzdGVkTm9kZUluZm9ybWF0
aW9uLnNlbGVjdGlvblJlY3QKKyAgICAgICAgICAgIGluc2lkZUZpeGVkOl9hc3Npc3RlZE5vZGVJ
bmZvcm1hdGlvbi5pbnNpZGVGaXhlZFBvc2l0aW9uCisgICAgICAgICAgICBmb250U2l6ZTpfYXNz
aXN0ZWROb2RlSW5mb3JtYXRpb24ubm9kZUZvbnRTaXplCisgICAgICAgICAgICBtaW5pbXVtU2Nh
bGU6X2Fzc2lzdGVkTm9kZUluZm9ybWF0aW9uLm1pbmltdW1TY2FsZUZhY3RvcgorICAgICAgICAg
ICAgbWF4aW11bVNjYWxlOl9hc3Npc3RlZE5vZGVJbmZvcm1hdGlvbi5tYXhpbXVtU2NhbGVGYWN0
b3JJZ25vcmluZ0Fsd2F5c1NjYWxhYmxlCisgICAgICAgICAgICBhbGxvd1NjYWxpbmc6X2Fzc2lz
dGVkTm9kZUluZm9ybWF0aW9uLmFsbG93c1VzZXJTY2FsaW5nSWdub3JpbmdBbHdheXNTY2FsYWJs
ZSAmJiAhY3VycmVudFVzZXJJbnRlcmZhY2VJZGlvbUlzUGFkKCkKKyAgICAgICAgICAgIGZvcmNl
U2Nyb2xsOihfYXNzaXN0ZWROb2RlSW5mb3JtYXRpb24uaW5wdXRNb2RlID09IElucHV0TW9kZTo6
Tm9uZSkgPyAhY3VycmVudFVzZXJJbnRlcmZhY2VJZGlvbUlzUGFkKCkgOiBbc2VsZiByZXF1aXJl
c0FjY2Vzc29yeVZpZXddXTsKKyAgICB9CiAKICAgICBfZGlkQWNjZXNzb3J5VGFiSW5pdGlhdGVG
b2N1cyA9IE5POwogICAgIFtzZWxmIF9lbnN1cmVGb3JtQWNjZXNzb3J5Vmlld107CkBAIC0xNzQ2
LDYgKzE3NDgsOSBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaXNTYW1lUGFpcihVSUdlc3R1cmVSZWNv
Z25pemVyICphLCBVSUdlc3R1cmVSZWNvZ25pemVyICpiLCBVSQogICAgIGlmICghX3dlYlZpZXcu
Y29uZmlndXJhdGlvbi5fdGV4dEludGVyYWN0aW9uR2VzdHVyZXNFbmFibGVkKQogICAgICAgICBy
ZXR1cm4gTk87CiAKKyAgICBpZiAoc2VsZi5zdXBwcmVzc0Fzc2lzdGFudFNlbGVjdGlvblZpZXcp
CisgICAgICAgIHJldHVybiBOTzsKKwogICAgIGlmIChfaW5zcGVjdG9yTm9kZVNlYXJjaEVuYWJs
ZWQpCiAgICAgICAgIHJldHVybiBOTzsKIApAQCAtMTc2OSw2ICsxNzc0LDkgQEAgc3RhdGljIGlu
bGluZSBib29sIGlzU2FtZVBhaXIoVUlHZXN0dXJlUmVjb2duaXplciAqYSwgVUlHZXN0dXJlUmVj
b2duaXplciAqYiwgVUkKICAgICBpZiAoIV93ZWJWaWV3LmNvbmZpZ3VyYXRpb24uX3RleHRJbnRl
cmFjdGlvbkdlc3R1cmVzRW5hYmxlZCkKICAgICAgICAgcmV0dXJuIE5POwogCisgICAgaWYgKHNl
bGYuc3VwcHJlc3NBc3Npc3RhbnRTZWxlY3Rpb25WaWV3KQorICAgICAgICByZXR1cm4gTk87CisK
ICAgICBJbnRlcmFjdGlvbkluZm9ybWF0aW9uUmVxdWVzdCByZXF1ZXN0KHJvdW5kZWRJbnRQb2lu
dChwb2ludCkpOwogICAgIGlmICghW3NlbGYgZW5zdXJlUG9zaXRpb25JbmZvcm1hdGlvbklzVXBU
b0RhdGU6cmVxdWVzdF0pCiAgICAgICAgIHJldHVybiBOTzsKQEAgLTE3ODAsNiArMTc4OCw5IEBA
IHN0YXRpYyBpbmxpbmUgYm9vbCBpc1NhbWVQYWlyKFVJR2VzdHVyZVJlY29nbml6ZXIgKmEsIFVJ
R2VzdHVyZVJlY29nbml6ZXIgKmIsIFVJCiAgICAgaWYgKCFfd2ViVmlldy5jb25maWd1cmF0aW9u
Ll90ZXh0SW50ZXJhY3Rpb25HZXN0dXJlc0VuYWJsZWQpCiAgICAgICAgIHJldHVybiBOTzsKIAor
ICAgIGlmIChzZWxmLnN1cHByZXNzQXNzaXN0YW50U2VsZWN0aW9uVmlldykKKyAgICAgICAgcmV0
dXJuIE5POworCiAgICAgSW50ZXJhY3Rpb25JbmZvcm1hdGlvblJlcXVlc3QgcmVxdWVzdChyb3Vu
ZGVkSW50UG9pbnQocG9pbnQpKTsKICAgICBpZiAoIVtzZWxmIGVuc3VyZVBvc2l0aW9uSW5mb3Jt
YXRpb25Jc1VwVG9EYXRlOnJlcXVlc3RdKQogICAgICAgICByZXR1cm4gTk87CkBAIC00MjY3LDYg
KzQyNzgsOCBAQCBzdGF0aWMgYm9vbCBpc0Fzc2lzdGFibGVJbnB1dFR5cGUoSW5wdXRUeXBlIHR5
cGUpCiAgICAgaWYgKFtpbnB1dERlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Io
X3dlYlZpZXc6ZGVjaWRlUG9saWN5Rm9yRm9jdXNlZEVsZW1lbnQ6KV0pCiAgICAgICAgIHN0YXJ0
SW5wdXRTZXNzaW9uUG9saWN5ID0gW2lucHV0RGVsZWdhdGUgX3dlYlZpZXc6X3dlYlZpZXcgZGVj
aWRlUG9saWN5Rm9yRm9jdXNlZEVsZW1lbnQ6Zm9jdXNlZEVsZW1lbnRJbmZvLmdldCgpXTsKIAor
ICAgIHNlbGYuc3VwcHJlc3NBc3Npc3RhbnRTZWxlY3Rpb25WaWV3ID0gaW5mb3JtYXRpb24uZWxl
bWVudElzVHJhbnNwYXJlbnQ7CisKICAgICBzd2l0Y2ggKHN0YXJ0SW5wdXRTZXNzaW9uUG9saWN5
KSB7CiAgICAgY2FzZSBfV0tGb2N1c1N0YXJ0c0lucHV0U2Vzc2lvblBvbGljeUF1dG86CiAgICAg
ICAgIC8vIFRoZSBkZWZhdWx0IGJlaGF2aW9yIGlzIHRvIGFsbG93IG5vZGUgYXNzaXN0YW5jZSBp
ZiB0aGUgdXNlciBpcyBpbnRlcmFjdGluZy4KQEAgLTQ0MDksNiArNDQyMiw4IEBAIHN0YXRpYyBi
b29sIGlzQXNzaXN0YWJsZUlucHV0VHlwZShJbnB1dFR5cGUgdHlwZSkKICAgICAgICAgW193ZWJW
aWV3IF9zY2hlZHVsZVZpc2libGVDb250ZW50UmVjdFVwZGF0ZV07CiAKICAgICBbX3dlYlZpZXcg
ZGlkRW5kRm9ybUNvbnRyb2xJbnRlcmFjdGlvbl07CisKKyAgICBzZWxmLnN1cHByZXNzQXNzaXN0
YW50U2VsZWN0aW9uVmlldyA9IE5POwogfQogCiAtICh2b2lkKXVwZGF0ZUN1cnJlbnRBc3Npc3Rl
ZE5vZGVJbmZvcm1hdGlvbjooRnVuY3Rpb248dm9pZChib29sIGRpZFVwZGF0ZSk+JiYpY2FsbGJh
Y2sKQEAgLTQ3NDEsOSArNDc1NiwxNCBAQCBzdGF0aWMgYm9vbCBpc0Fzc2lzdGFibGVJbnB1dFR5
cGUoSW5wdXRUeXBlIHR5cGUpCiAKIC0gKHZvaWQpX3VwZGF0ZUNoYW5nZWRTZWxlY3Rpb246KEJP
T0wpZm9yY2UKIHsKLSAgICBpZiAoIV9zZWxlY3Rpb25OZWVkc1VwZGF0ZSB8fCBfcGFnZS0+ZWRp
dG9yU3RhdGUoKS5pc01pc3NpbmdQb3N0TGF5b3V0RGF0YSkKKyAgICBhdXRvJiBzdGF0ZSA9IF9w
YWdlLT5lZGl0b3JTdGF0ZSgpOworICAgIGlmIChzdGF0ZS5pc01pc3NpbmdQb3N0TGF5b3V0RGF0
YSkKICAgICAgICAgcmV0dXJuOwogCisgICAgYXV0byYgcG9zdExheW91dERhdGEgPSBzdGF0ZS5w
b3N0TGF5b3V0RGF0YSgpOworICAgIGlmIChoYXNBc3Npc3RlZE5vZGUoX2Fzc2lzdGVkTm9kZUlu
Zm9ybWF0aW9uKSkKKyAgICAgICAgc2VsZi5zdXBwcmVzc0Fzc2lzdGFudFNlbGVjdGlvblZpZXcg
PSBwb3N0TGF5b3V0RGF0YS5lbGVtZW50SXNUcmFuc3BhcmVudDsKKwogICAgIFdLU2VsZWN0aW9u
RHJhd2luZ0luZm8gc2VsZWN0aW9uRHJhd2luZ0luZm8oX3BhZ2UtPmVkaXRvclN0YXRlKCkpOwog
ICAgIGlmIChmb3JjZSB8fCBzZWxlY3Rpb25EcmF3aW5nSW5mbyAhPSBfbGFzdFNlbGVjdGlvbkRy
YXdpbmdJbmZvKSB7CiAgICAgICAgIExPR19XSVRIX1NUUkVBTShTZWxlY3Rpb24sIHN0cmVhbSA8
PCAiX3VwZGF0ZUNoYW5nZWRTZWxlY3Rpb24gIiA8PCBzZWxlY3Rpb25EcmF3aW5nSW5mbyk7CkBA
IC00NzY0LDggKzQ3ODQsNyBAQCBzdGF0aWMgYm9vbCBpc0Fzc2lzdGFibGVJbnB1dFR5cGUoSW5w
dXRUeXBlIHR5cGUpCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBhdXRvJiBzdGF0ZSA9IF9wYWdl
LT5lZGl0b3JTdGF0ZSgpOwotICAgIGlmICghc3RhdGUuaXNNaXNzaW5nUG9zdExheW91dERhdGEg
JiYgc3RhdGUucG9zdExheW91dERhdGEoKS5pc1N0YWJsZVN0YXRlVXBkYXRlICYmIF9uZWVkc0Rl
ZmVycmVkRW5kU2Nyb2xsaW5nU2VsZWN0aW9uVXBkYXRlICYmIF9wYWdlLT5pblN0YWJsZVN0YXRl
KCkpIHsKKyAgICBpZiAocG9zdExheW91dERhdGEuaXNTdGFibGVTdGF0ZVVwZGF0ZSAmJiBfbmVl
ZHNEZWZlcnJlZEVuZFNjcm9sbGluZ1NlbGVjdGlvblVwZGF0ZSAmJiBfcGFnZS0+aW5TdGFibGVT
dGF0ZSgpKSB7CiAgICAgICAgIFtbc2VsZiBzZWxlY3Rpb25JbnRlcmFjdGlvbkFzc2lzdGFudF0g
c2hvd1NlbGVjdGlvbkNvbW1hbmRzXTsKIAogICAgICAgICBpZiAoIXNlbGYuc3VwcHJlc3NBc3Np
c3RhbnRTZWxlY3Rpb25WaWV3KQpAQCAtNDc3Nyw2ICs0Nzk2LDExIEBAIHN0YXRpYyBib29sIGlz
QXNzaXN0YWJsZUlucHV0VHlwZShJbnB1dFR5cGUgdHlwZSkKICAgICB9CiB9CiAKKy0gKEJPT0wp
X3Nob3VsZFN1cHByZXNzU2VsZWN0aW9uQ29tbWFuZHMKK3sKKyAgICByZXR1cm4gX3N1cHByZXNz
QXNzaXN0YW50U2VsZWN0aW9uVmlldzsKK30KKwogLSAoQk9PTClzdXBwcmVzc0Fzc2lzdGFudFNl
bGVjdGlvblZpZXcKIHsKICAgICByZXR1cm4gX3N1cHByZXNzQXNzaXN0YW50U2VsZWN0aW9uVmll
dzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQ
YWdlSU9TLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJ
T1MubW0KaW5kZXggZWYzYTVmM2Y1OTRmNWNkNjJlMmQ1YmRjOTg1MzYzZjFiYTdhYWE1ZS4uZWUw
ODJjNGE5ZjRhNDQzZTMwYjI2ZGU2ZmQwNjRiMmZhYmQxZTU2NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KQEAgLTI0MCw2ICsy
NDAsNyBAQCB2b2lkIFdlYlBhZ2U6OnBsYXRmb3JtRWRpdG9yU3RhdGUoRnJhbWUmIGZyYW1lLCBF
ZGl0b3JTdGF0ZSYgcmVzdWx0LCBJbmNsdWRlUG9zdAogICAgICAgICBpZiAobV9hc3Npc3RlZE5v
ZGUgJiYgbV9hc3Npc3RlZE5vZGUtPnJlbmRlcmVyKCkpIHsKICAgICAgICAgICAgIHBvc3RMYXlv
dXREYXRhLnNlbGVjdGlvbkNsaXBSZWN0ID0gdmlldy0+Y29udGVudHNUb1Jvb3RWaWV3KG1fYXNz
aXN0ZWROb2RlLT5yZW5kZXJlcigpLT5hYnNvbHV0ZUJvdW5kaW5nQm94UmVjdCgpKTsKICAgICAg
ICAgICAgIHBvc3RMYXlvdXREYXRhLmNhcmV0Q29sb3IgPSBtX2Fzc2lzdGVkTm9kZS0+cmVuZGVy
ZXIoKS0+c3R5bGUoKS5jYXJldENvbG9yKCk7CisgICAgICAgICAgICBwb3N0TGF5b3V0RGF0YS5l
bGVtZW50SXNUcmFuc3BhcmVudCA9IG1fYXNzaXN0ZWROb2RlLT5yZW5kZXJlcigpLT5pc1RyYW5z
cGFyZW50UmVzcGVjdGluZ1BhcmVudEZyYW1lcygpOwogICAgICAgICB9CiAgICAgICAgIGNvbXB1
dGVFZGl0YWJsZVJvb3RIYXNDb250ZW50QW5kUGxhaW5UZXh0KHNlbGVjdGlvbiwgcG9zdExheW91
dERhdGEpOwogICAgIH0KQEAgLTIzMzcsNiArMjMzOCw3IEBAIHZvaWQgV2ViUGFnZTo6Z2V0QXNz
aXN0ZWROb2RlSW5mb3JtYXRpb24oQXNzaXN0ZWROb2RlSW5mb3JtYXRpb24mIGluZm9ybWF0aW9u
KQogICAgICAgICBGcmFtZSYgZWxlbWVudEZyYW1lID0gbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIo
KS5mb2N1c2VkT3JNYWluRnJhbWUoKTsKICAgICAgICAgaW5mb3JtYXRpb24uZWxlbWVudFJlY3Qg
PSBlbGVtZW50UmVjdEluUm9vdFZpZXdDb29yZGluYXRlcygqbV9hc3Npc3RlZE5vZGUsIGVsZW1l
bnRGcmFtZSk7CiAgICAgICAgIGluZm9ybWF0aW9uLm5vZGVGb250U2l6ZSA9IHJlbmRlcmVyLT5z
dHlsZSgpLmZvbnREZXNjcmlwdGlvbigpLmNvbXB1dGVkU2l6ZSgpOworICAgICAgICBpbmZvcm1h
dGlvbi5lbGVtZW50SXNUcmFuc3BhcmVudCA9IHJlbmRlcmVyLT5pc1RyYW5zcGFyZW50UmVzcGVj
dGluZ1BhcmVudEZyYW1lcygpOwogCiAgICAgICAgIGJvb2wgaW5GaXhlZCA9IGZhbHNlOwogICAg
ICAgICByZW5kZXJlci0+bG9jYWxUb0NvbnRhaW5lclBvaW50KEZsb2F0UG9pbnQoKSwgbnVsbHB0
ciwgVXNlVHJhbnNmb3JtcywgJmluRml4ZWQpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9n
IGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDFmOWFkYjM4OGMzNGIxOGM2MzFiYTA3Y2VlZjk2Yzc1
ZWE5ZWU5NzkuLmIxMjlmMTcxM2Q3MWQzN2JlODU1YTk5NzI4Mjk0YjhlYTVhOWY4NjEgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwz
OCBAQAorMjAxOC0xMS0xMyAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4K
KworICAgICAgICBbaU9TXSBEbyBub3Qgc2hvdyBzZWxlY3Rpb24gVUkgZm9yIGVkaXRhYmxlIGVs
ZW1lbnRzIHdpdGggb3BhY2l0eSBuZWFyIHplcm8KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MTQ0MgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDU5
NTg2MjU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gRnJhc2VyLgorCisgICAgICAgIEFk
ZCBhIGNvdXBsZSBvZiBuZXcgdGVzdGluZyBoZWxwZXJzIHRvIFVJU2NyaXB0Q29udHJvbGxlci4K
KworICAgICAgICAqIFRlc3RSdW5uZXJTaGFyZWQvVUlTY3JpcHRDb250ZXh0L0JpbmRpbmdzL1VJ
U2NyaXB0Q29udHJvbGxlci5pZGw6CisgICAgICAgICogVGVzdFJ1bm5lclNoYXJlZC9VSVNjcmlw
dENvbnRleHQvVUlTY3JpcHRDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdUUjo6VUlTY3JpcHRD
b250cm9sbGVyOjp0ZXh0U2VsZWN0aW9uUmFuZ2VSZWN0cyBjb25zdCk6CisgICAgICAgIChXVFI6
OlVJU2NyaXB0Q29udHJvbGxlcjo6c2VsZWN0aW9uQ2FyZXRWaWV3UmVjdCBjb25zdCk6CisgICAg
ICAgIChXVFI6OlVJU2NyaXB0Q29udHJvbGxlcjo6c2VsZWN0aW9uUmFuZ2VWaWV3UmVjdHMgY29u
c3QpOgorICAgICAgICAqIFRlc3RSdW5uZXJTaGFyZWQvVUlTY3JpcHRDb250ZXh0L1VJU2NyaXB0
Q29udHJvbGxlci5oOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvaW9zL1VJU2NyaXB0Q29u
dHJvbGxlcklPUy5tbToKKyAgICAgICAgKFdUUjo6VUlTY3JpcHRDb250cm9sbGVyOjp0ZXh0U2Vs
ZWN0aW9uUmFuZ2VSZWN0cyBjb25zdCk6CisKKyAgICAgICAgUmVuYW1lIGBzZWxlY3Rpb25SYW5n
ZVZpZXdSZWN0c2AgdG8gYHRleHRTZWxlY3Rpb25SYW5nZVJlY3RzYC4gVGhpcyBhbGxvd3MgdXMg
dG8gZHJhdyBhIGRpc3RpbmN0aW9uIGJldHdlZW4KKyAgICAgICAgYHRleHRTZWxlY3Rpb25SYW5n
ZVJlY3RzYC9gdGV4dFNlbGVjdGlvbkNhcmV0UmVjdGAsIHdoaWNoIHJldHJpZXZlIGluZm9ybWF0
aW9uIGFib3V0IHNlbGVjdGlvbiByZWN0cyBrbm93bgorICAgICAgICB0byB0aGUgdGV4dCBpbnRl
cmFjdGlvbiBhc3Npc3RhbnQsIGFuZCBgc2VsZWN0aW9uQ2FyZXRWaWV3UmVjdGAvYHNlbGVjdGlv
blJhbmdlVmlld1JlY3RzYCwgd2hpY2ggcmV0cmlldmUgdGhlCisgICAgICAgIGFjdHVhbCBmcmFt
ZXMgb2YgdGhlIHNlbGVjdGlvbiB2aWV3cyB1c2VkIHRvIGRyYXcgb3ZlcmxhaWQgc2VsZWN0aW9u
IFVJLiBUaGlzIGRpZmZlcmVuY2UgaXMgaW1wb3J0YW50IGluIHRoZQorICAgICAgICBuZXcgbGF5
b3V0IHRlc3RzIGFkZGVkIGluIHRoaXMgcGF0Y2gsIHdoaWNoIG9ubHkgc3VwcHJlc3MgY2FyZXQg
cmVuZGVyaW5nIChpLmUuIHNlbGVjdGlvbiB2aWV3cyByZW1haW4gaGlkZGVuKS4KKworICAgICAg
ICBBbHNvLCBkcml2ZS1ieSBmaXggYSBsZWFrZWQgYE5TTXV0YWJsZUFycmF5YC4KKworICAgICAg
ICAoV1RSOjpVSVNjcmlwdENvbnRyb2xsZXI6OnNlbGVjdGlvblN0YXJ0R3JhYmJlclZpZXdSZWN0
IGNvbnN0KToKKyAgICAgICAgKFdUUjo6VUlTY3JpcHRDb250cm9sbGVyOjpzZWxlY3Rpb25FbmRH
cmFiYmVyVmlld1JlY3QgY29uc3QpOgorICAgICAgICAoV1RSOjpVSVNjcmlwdENvbnRyb2xsZXI6
OnNlbGVjdGlvbkNhcmV0Vmlld1JlY3QgY29uc3QpOgorICAgICAgICAoV1RSOjpVSVNjcmlwdENv
bnRyb2xsZXI6OnNlbGVjdGlvblJhbmdlVmlld1JlY3RzIGNvbnN0KToKKworICAgICAgICBUZXN0
aW5nIGhlbHBlcnMgdG8gZ3JhYiB0aGUgZnJhbWVzIG9mIGNhcmV0IGFuZCBzZWxlY3Rpb24gdmll
d3MsIGluIFdLQ29udGVudFZpZXcncyBjb29yZGluYXRlIHNwYWNlLiBUaGVzZQorICAgICAgICBy
ZWN0cyBhcmUgYWxzbyBjbGFtcGVkIHRvIFdLQ29udGVudFZpZXcgYm91bmRzLgorCiAyMDE4LTEx
LTEzICBUYWthc2hpIEtvbW9yaSAgPFRha2FzaGkuS29tb3JpQHNvbnkuY29tPgogCiAgICAgICAg
IFJlbW92ZSBXZWJLaXRUZXN0UnVubmVyTGliJ3MgYnVpbGQgd2FybmluZ3MuCmRpZmYgLS1naXQg
YS9Ub29scy9EdW1wUmVuZGVyVHJlZS9pb3MvVUlTY3JpcHRDb250cm9sbGVySU9TLm1tIGIvVG9v
bHMvRHVtcFJlbmRlclRyZWUvaW9zL1VJU2NyaXB0Q29udHJvbGxlcklPUy5tbQppbmRleCA3NjBh
YmEwZmJhZDJlNzJjNWU0YzhjZjkyOTA1ZTU3ZWQ4ZDk1OTRkLi5kNDE2ODZkZjdmODFkYWI1N2Y0
ZDE0Nzg4YTNiMTYzOTNiNTMyODI5IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9p
b3MvVUlTY3JpcHRDb250cm9sbGVySU9TLm1tCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2lv
cy9VSVNjcmlwdENvbnRyb2xsZXJJT1MubW0KQEAgLTMwOSw3ICszMDksNyBAQCB2b2lkIFVJU2Ny
aXB0Q29udHJvbGxlcjo6cGxhdGZvcm1DbGVhckFsbENhbGxiYWNrcygpCiB7CiB9CiAKLUpTT2Jq
ZWN0UmVmIFVJU2NyaXB0Q29udHJvbGxlcjo6c2VsZWN0aW9uUmFuZ2VWaWV3UmVjdHMoKSBjb25z
dAorSlNPYmplY3RSZWYgVUlTY3JpcHRDb250cm9sbGVyOjp0ZXh0U2VsZWN0aW9uUmFuZ2VSZWN0
cygpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CkBAIC0zODksNiArMzg5LDE2IEBA
IEpTT2JqZWN0UmVmIFVJU2NyaXB0Q29udHJvbGxlcjo6c2VsZWN0aW9uRW5kR3JhYmJlclZpZXdS
ZWN0KCkgY29uc3QKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAorSlNPYmplY3RSZWYgVUlTY3Jp
cHRDb250cm9sbGVyOjpzZWxlY3Rpb25DYXJldFZpZXdSZWN0KCkgY29uc3QKK3sKKyAgICByZXR1
cm4gbnVsbHB0cjsKK30KKworSlNPYmplY3RSZWYgVUlTY3JpcHRDb250cm9sbGVyOjpzZWxlY3Rp
b25SYW5nZVZpZXdSZWN0cygpIGNvbnN0Cit7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKIGJv
b2wgVUlTY3JpcHRDb250cm9sbGVyOjppc1Nob3dpbmdEYXRhTGlzdFN1Z2dlc3Rpb25zKCkgY29u
c3QKIHsKICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0UnVubmVyU2hh
cmVkL1VJU2NyaXB0Q29udGV4dC9CaW5kaW5ncy9VSVNjcmlwdENvbnRyb2xsZXIuaWRsIGIvVG9v
bHMvVGVzdFJ1bm5lclNoYXJlZC9VSVNjcmlwdENvbnRleHQvQmluZGluZ3MvVUlTY3JpcHRDb250
cm9sbGVyLmlkbAppbmRleCA0ZTNmZDQ5MzkxMzI5NWIyMWYwNjcxMWIwNGM0OTU3MmQ4MGVlZjFk
Li41MmQzMzBhYjIxODA1NzcwNjY5MDBhZWNlOTQ4OWM2ZGJhZTY4NWQwIDEwMDY0NAotLS0gYS9U
b29scy9UZXN0UnVubmVyU2hhcmVkL1VJU2NyaXB0Q29udGV4dC9CaW5kaW5ncy9VSVNjcmlwdENv
bnRyb2xsZXIuaWRsCisrKyBiL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvVUlTY3JpcHRDb250ZXh0
L0JpbmRpbmdzL1VJU2NyaXB0Q29udHJvbGxlci5pZGwKQEAgLTIzOCwxMCArMjM4LDEyIEBAIGlu
dGVyZmFjZSBVSVNjcmlwdENvbnRyb2xsZXIgewogCiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIG9i
amVjdCBjb250ZW50VmlzaWJsZVJlY3Q7IC8vIFJldHVybmVkIG9iamVjdCBoYXMgJ2xlZnQnLCAn
dG9wJywgJ3dpZHRoJywgJ2hlaWdodCcgcHJvcGVydGllcy4KIAotICAgIHJlYWRvbmx5IGF0dHJp
YnV0ZSBvYmplY3Qgc2VsZWN0aW9uUmFuZ2VWaWV3UmVjdHM7IC8vIEFuIGFycmF5IG9mIG9iamVj
dHMgd2l0aCAnbGVmdCcsICd0b3AnLCAnd2lkdGgnLCBhbmQgJ2hlaWdodCcgcHJvcGVydGllcy4K
KyAgICByZWFkb25seSBhdHRyaWJ1dGUgb2JqZWN0IHRleHRTZWxlY3Rpb25SYW5nZVJlY3RzOyAv
LyBBbiBhcnJheSBvZiBvYmplY3RzIHdpdGggJ2xlZnQnLCAndG9wJywgJ3dpZHRoJywgYW5kICdo
ZWlnaHQnIHByb3BlcnRpZXMuCiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIG9iamVjdCB0ZXh0U2Vs
ZWN0aW9uQ2FyZXRSZWN0OyAvLyBBbiBvYmplY3Qgd2l0aCAnbGVmdCcsICd0b3AnLCAnd2lkdGgn
LCAnaGVpZ2h0JyBwcm9wZXJ0aWVzLgogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBvYmplY3Qgc2Vs
ZWN0aW9uU3RhcnRHcmFiYmVyVmlld1JlY3Q7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIG9iamVj
dCBzZWxlY3Rpb25FbmRHcmFiYmVyVmlld1JlY3Q7CisgICAgcmVhZG9ubHkgYXR0cmlidXRlIG9i
amVjdCBzZWxlY3Rpb25DYXJldFZpZXdSZWN0OworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBvYmpl
Y3Qgc2VsZWN0aW9uUmFuZ2VWaWV3UmVjdHM7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIG9iamVj
dCBjYWxlbmRhclR5cGU7CiAgICAgdm9pZCBzZXREZWZhdWx0Q2FsZW5kYXJUeXBlKERPTVN0cmlu
ZyBjYWxlbmRhcklkZW50aWZpZXIpOwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBvYmplY3QgaW5w
dXRWaWV3Qm91bmRzOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9VSVNjcmlw
dENvbnRleHQvVUlTY3JpcHRDb250cm9sbGVyLmNwcCBiL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQv
VUlTY3JpcHRDb250ZXh0L1VJU2NyaXB0Q29udHJvbGxlci5jcHAKaW5kZXggZjI1ZWMxMjc2NzZh
ZmEwZDgxMjUxNjBiZWIzMzc4Y2M4ZWJmNGFmOC4uNGRjYjRhNjQ5NmEzYTNlM2EyZTM4NWNiMTE1
NzE5MTAzZTdiMDkxZSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9VSVNjcmlw
dENvbnRleHQvVUlTY3JpcHRDb250cm9sbGVyLmNwcAorKysgYi9Ub29scy9UZXN0UnVubmVyU2hh
cmVkL1VJU2NyaXB0Q29udGV4dC9VSVNjcmlwdENvbnRyb2xsZXIuY3BwCkBAIC0zODksNyArMzg5
LDcgQEAgSlNPYmplY3RSZWYgVUlTY3JpcHRDb250cm9sbGVyOjpjb250ZW50VmlzaWJsZVJlY3Qo
KSBjb25zdAogICAgIHJldHVybiBudWxscHRyOwogfQogCi1KU09iamVjdFJlZiBVSVNjcmlwdENv
bnRyb2xsZXI6OnNlbGVjdGlvblJhbmdlVmlld1JlY3RzKCkgY29uc3QKK0pTT2JqZWN0UmVmIFVJ
U2NyaXB0Q29udHJvbGxlcjo6dGV4dFNlbGVjdGlvblJhbmdlUmVjdHMoKSBjb25zdAogewogICAg
IHJldHVybiBudWxscHRyOwogfQpAQCAtNDA0LDYgKzQwNCwxNiBAQCBKU09iamVjdFJlZiBVSVNj
cmlwdENvbnRyb2xsZXI6OnNlbGVjdGlvblN0YXJ0R3JhYmJlclZpZXdSZWN0KCkgY29uc3QKICAg
ICByZXR1cm4gbnVsbHB0cjsKIH0KIAorSlNPYmplY3RSZWYgVUlTY3JpcHRDb250cm9sbGVyOjpz
ZWxlY3Rpb25DYXJldFZpZXdSZWN0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbnVsbHB0cjsKK30K
KworSlNPYmplY3RSZWYgVUlTY3JpcHRDb250cm9sbGVyOjpzZWxlY3Rpb25SYW5nZVZpZXdSZWN0
cygpIGNvbnN0Cit7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKIEpTT2JqZWN0UmVmIFVJU2Ny
aXB0Q29udHJvbGxlcjo6c2VsZWN0aW9uRW5kR3JhYmJlclZpZXdSZWN0KCkgY29uc3QKIHsKICAg
ICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvVUlT
Y3JpcHRDb250ZXh0L1VJU2NyaXB0Q29udHJvbGxlci5oIGIvVG9vbHMvVGVzdFJ1bm5lclNoYXJl
ZC9VSVNjcmlwdENvbnRleHQvVUlTY3JpcHRDb250cm9sbGVyLmgKaW5kZXggMGU5NTIxOWNjM2Iz
NjY0ZjJhOGRjMDY1MjY4OTI1YWY3NDk5NGIzYi4uZWJiZjU0ODk3ZDQ4NzIwZDE5NmU2MmJjZjI4
MmZmMzY2YzE3M2U1OCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9VSVNjcmlw
dENvbnRleHQvVUlTY3JpcHRDb250cm9sbGVyLmgKKysrIGIvVG9vbHMvVGVzdFJ1bm5lclNoYXJl
ZC9VSVNjcmlwdENvbnRleHQvVUlTY3JpcHRDb250cm9sbGVyLmgKQEAgLTE1OSwxMCArMTU5LDEy
IEBAIHB1YmxpYzoKIAogICAgIEpTT2JqZWN0UmVmIGNvbnRlbnRWaXNpYmxlUmVjdCgpIGNvbnN0
OwogICAgIAotICAgIEpTT2JqZWN0UmVmIHNlbGVjdGlvblJhbmdlVmlld1JlY3RzKCkgY29uc3Q7
CisgICAgSlNPYmplY3RSZWYgdGV4dFNlbGVjdGlvblJhbmdlUmVjdHMoKSBjb25zdDsKICAgICBK
U09iamVjdFJlZiB0ZXh0U2VsZWN0aW9uQ2FyZXRSZWN0KCkgY29uc3Q7CiAgICAgSlNPYmplY3RS
ZWYgc2VsZWN0aW9uU3RhcnRHcmFiYmVyVmlld1JlY3QoKSBjb25zdDsKICAgICBKU09iamVjdFJl
ZiBzZWxlY3Rpb25FbmRHcmFiYmVyVmlld1JlY3QoKSBjb25zdDsKKyAgICBKU09iamVjdFJlZiBz
ZWxlY3Rpb25DYXJldFZpZXdSZWN0KCkgY29uc3Q7CisgICAgSlNPYmplY3RSZWYgc2VsZWN0aW9u
UmFuZ2VWaWV3UmVjdHMoKSBjb25zdDsKICAgICBKU09iamVjdFJlZiBjYWxlbmRhclR5cGUoKSBj
b25zdDsKICAgICB2b2lkIHNldERlZmF1bHRDYWxlbmRhclR5cGUoSlNTdHJpbmdSZWYgY2FsZW5k
YXJJZGVudGlmaWVyKTsKICAgICBKU09iamVjdFJlZiBpbnB1dFZpZXdCb3VuZHMoKSBjb25zdDsK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvaW9zL1VJU2NyaXB0Q29udHJvbGxl
cklPUy5tbSBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvaW9zL1VJU2NyaXB0Q29udHJvbGxlcklP
Uy5tbQppbmRleCA4NmI4NjAyYmE0YWQ4NGI1OTU3Njk3YWY4NmY0ZjYxY2UxNWE3YjkwLi4zNzI1
NjU1MGUyMmI5YzNlMDNiZGNjNjhjNmE4NzlmNGM2NGMyZGZmIDEwMDY0NAotLS0gYS9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL2lvcy9VSVNjcmlwdENvbnRyb2xsZXJJT1MubW0KKysrIGIvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9pb3MvVUlTY3JpcHRDb250cm9sbGVySU9TLm1tCkBAIC01MDcsMTQg
KzUwNywxNCBAQCBKU09iamVjdFJlZiBVSVNjcmlwdENvbnRyb2xsZXI6OmNvbnRlbnRWaXNpYmxl
UmVjdCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fY29udGV4dC0+b2JqZWN0RnJvbVJlY3QocmVjdCk7
CiB9CiAKLUpTT2JqZWN0UmVmIFVJU2NyaXB0Q29udHJvbGxlcjo6c2VsZWN0aW9uUmFuZ2VWaWV3
UmVjdHMoKSBjb25zdAorSlNPYmplY3RSZWYgVUlTY3JpcHRDb250cm9sbGVyOjp0ZXh0U2VsZWN0
aW9uUmFuZ2VSZWN0cygpIGNvbnN0CiB7Ci0gICAgTlNNdXRhYmxlQXJyYXkgKnNlbGVjdGlvblJl
Y3RzID0gW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF07CisgICAgYXV0byBzZWxlY3Rpb25S
ZWN0cyA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF0pOwogICAgIE5TQXJy
YXkgKnJlY3RzID0gVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLm1haW5XZWJWaWV3KCktPnBs
YXRmb3JtVmlldygpLl91aVRleHRTZWxlY3Rpb25SZWN0czsKICAgICBmb3IgKE5TVmFsdWUgKnJl
Y3QgaW4gcmVjdHMpCi0gICAgICAgIFtzZWxlY3Rpb25SZWN0cyBhZGRPYmplY3Q6dG9OU0RpY3Rp
b25hcnkoW3JlY3QgQ0dSZWN0VmFsdWVdKV07CisgICAgICAgIFtzZWxlY3Rpb25SZWN0cyBhZGRP
YmplY3Q6dG9OU0RpY3Rpb25hcnkocmVjdC5DR1JlY3RWYWx1ZSldOwogCi0gICAgcmV0dXJuIEpT
VmFsdWVUb09iamVjdChtX2NvbnRleHQtPmpzQ29udGV4dCgpLCBbSlNWYWx1ZSB2YWx1ZVdpdGhP
YmplY3Q6c2VsZWN0aW9uUmVjdHMgaW5Db250ZXh0OltKU0NvbnRleHQgY29udGV4dFdpdGhKU0ds
b2JhbENvbnRleHRSZWY6bV9jb250ZXh0LT5qc0NvbnRleHQoKV1dLkpTVmFsdWVSZWYsIG51bGxw
dHIpOworICAgIHJldHVybiBKU1ZhbHVlVG9PYmplY3QobV9jb250ZXh0LT5qc0NvbnRleHQoKSwg
W0pTVmFsdWUgdmFsdWVXaXRoT2JqZWN0OnNlbGVjdGlvblJlY3RzLmdldCgpIGluQ29udGV4dDpb
SlNDb250ZXh0IGNvbnRleHRXaXRoSlNHbG9iYWxDb250ZXh0UmVmOm1fY29udGV4dC0+anNDb250
ZXh0KCldXS5KU1ZhbHVlUmVmLCBudWxscHRyKTsKIH0KIAogSlNPYmplY3RSZWYgVUlTY3JpcHRD
b250cm9sbGVyOjp0ZXh0U2VsZWN0aW9uQ2FyZXRSZWN0KCkgY29uc3QKQEAgLTUyOCw2ICs1Mjgs
NyBAQCBKU09iamVjdFJlZiBVSVNjcmlwdENvbnRyb2xsZXI6OnNlbGVjdGlvblN0YXJ0R3JhYmJl
clZpZXdSZWN0KCkgY29uc3QKICAgICBVSVZpZXcgKmNvbnRlbnRWaWV3ID0gW3dlYlZpZXcgdmFs
dWVGb3JLZXlQYXRoOkAiX2N1cnJlbnRDb250ZW50VmlldyJdOwogICAgIFVJVmlldyAqc2VsZWN0
aW9uUmFuZ2VWaWV3ID0gW2NvbnRlbnRWaWV3IHZhbHVlRm9yS2V5UGF0aDpAImludGVyYWN0aW9u
QXNzaXN0YW50LnNlbGVjdGlvblZpZXcucmFuZ2VWaWV3Il07CiAgICAgYXV0byBmcmFtZUluQ29u
dGVudENvb3JkaW5hdGVzID0gW3NlbGVjdGlvblJhbmdlVmlldyBjb252ZXJ0UmVjdDpbW3NlbGVj
dGlvblJhbmdlVmlldyB2YWx1ZUZvcktleVBhdGg6QCJzdGFydEdyYWJiZXIiXSBmcmFtZV0gdG9W
aWV3OmNvbnRlbnRWaWV3XTsKKyAgICBmcmFtZUluQ29udGVudENvb3JkaW5hdGVzID0gQ0dSZWN0
SW50ZXJzZWN0aW9uKGNvbnRlbnRWaWV3LmJvdW5kcywgZnJhbWVJbkNvbnRlbnRDb29yZGluYXRl
cyk7CiAgICAgYXV0byBqc0NvbnRleHQgPSBtX2NvbnRleHQtPmpzQ29udGV4dCgpOwogICAgIHJl
dHVybiBKU1ZhbHVlVG9PYmplY3QoanNDb250ZXh0LCBbSlNWYWx1ZSB2YWx1ZVdpdGhPYmplY3Q6
dG9OU0RpY3Rpb25hcnkoZnJhbWVJbkNvbnRlbnRDb29yZGluYXRlcykgaW5Db250ZXh0OltKU0Nv
bnRleHQgY29udGV4dFdpdGhKU0dsb2JhbENvbnRleHRSZWY6anNDb250ZXh0XV0uSlNWYWx1ZVJl
ZiwgbnVsbHB0cik7CiB9CkBAIC01MzgsMTAgKzUzOSwzNSBAQCBKU09iamVjdFJlZiBVSVNjcmlw
dENvbnRyb2xsZXI6OnNlbGVjdGlvbkVuZEdyYWJiZXJWaWV3UmVjdCgpIGNvbnN0CiAgICAgVUlW
aWV3ICpjb250ZW50VmlldyA9IFt3ZWJWaWV3IHZhbHVlRm9yS2V5UGF0aDpAIl9jdXJyZW50Q29u
dGVudFZpZXciXTsKICAgICBVSVZpZXcgKnNlbGVjdGlvblJhbmdlVmlldyA9IFtjb250ZW50Vmll
dyB2YWx1ZUZvcktleVBhdGg6QCJpbnRlcmFjdGlvbkFzc2lzdGFudC5zZWxlY3Rpb25WaWV3LnJh
bmdlVmlldyJdOwogICAgIGF1dG8gZnJhbWVJbkNvbnRlbnRDb29yZGluYXRlcyA9IFtzZWxlY3Rp
b25SYW5nZVZpZXcgY29udmVydFJlY3Q6W1tzZWxlY3Rpb25SYW5nZVZpZXcgdmFsdWVGb3JLZXlQ
YXRoOkAiZW5kR3JhYmJlciJdIGZyYW1lXSB0b1ZpZXc6Y29udGVudFZpZXddOworICAgIGZyYW1l
SW5Db250ZW50Q29vcmRpbmF0ZXMgPSBDR1JlY3RJbnRlcnNlY3Rpb24oY29udGVudFZpZXcuYm91
bmRzLCBmcmFtZUluQ29udGVudENvb3JkaW5hdGVzKTsKICAgICBhdXRvIGpzQ29udGV4dCA9IG1f
Y29udGV4dC0+anNDb250ZXh0KCk7CiAgICAgcmV0dXJuIEpTVmFsdWVUb09iamVjdChqc0NvbnRl
eHQsIFtKU1ZhbHVlIHZhbHVlV2l0aE9iamVjdDp0b05TRGljdGlvbmFyeShmcmFtZUluQ29udGVu
dENvb3JkaW5hdGVzKSBpbkNvbnRleHQ6W0pTQ29udGV4dCBjb250ZXh0V2l0aEpTR2xvYmFsQ29u
dGV4dFJlZjpqc0NvbnRleHRdXS5KU1ZhbHVlUmVmLCBudWxscHRyKTsKIH0KIAorSlNPYmplY3RS
ZWYgVUlTY3JpcHRDb250cm9sbGVyOjpzZWxlY3Rpb25DYXJldFZpZXdSZWN0KCkgY29uc3QKK3sK
KyAgICBXS1dlYlZpZXcgKndlYlZpZXcgPSBUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkubWFp
bldlYlZpZXcoKS0+cGxhdGZvcm1WaWV3KCk7CisgICAgVUlWaWV3ICpjb250ZW50VmlldyA9IFt3
ZWJWaWV3IHZhbHVlRm9yS2V5UGF0aDpAIl9jdXJyZW50Q29udGVudFZpZXciXTsKKyAgICBVSVZp
ZXcgKmNhcmV0VmlldyA9IFtjb250ZW50VmlldyB2YWx1ZUZvcktleVBhdGg6QCJpbnRlcmFjdGlv
bkFzc2lzdGFudC5zZWxlY3Rpb25WaWV3LmNhcmV0VmlldyJdOworICAgIGF1dG8gcmVjdEluQ29u
dGVudFZpZXdDb29yZGluYXRlcyA9IENHUmVjdEludGVyc2VjdGlvbihbY2FyZXRWaWV3IGNvbnZl
cnRSZWN0OmNhcmV0Vmlldy5ib3VuZHMgdG9WaWV3OmNvbnRlbnRWaWV3XSwgY29udGVudFZpZXcu
Ym91bmRzKTsKKyAgICByZXR1cm4gSlNWYWx1ZVRvT2JqZWN0KG1fY29udGV4dC0+anNDb250ZXh0
KCksIFtKU1ZhbHVlIHZhbHVlV2l0aE9iamVjdDp0b05TRGljdGlvbmFyeShyZWN0SW5Db250ZW50
Vmlld0Nvb3JkaW5hdGVzKSBpbkNvbnRleHQ6W0pTQ29udGV4dCBjb250ZXh0V2l0aEpTR2xvYmFs
Q29udGV4dFJlZjptX2NvbnRleHQtPmpzQ29udGV4dCgpXV0uSlNWYWx1ZVJlZiwgbnVsbHB0cik7
Cit9CisKK0pTT2JqZWN0UmVmIFVJU2NyaXB0Q29udHJvbGxlcjo6c2VsZWN0aW9uUmFuZ2VWaWV3
UmVjdHMoKSBjb25zdAoreworICAgIFdLV2ViVmlldyAqd2ViVmlldyA9IFRlc3RDb250cm9sbGVy
OjpzaW5nbGV0b24oKS5tYWluV2ViVmlldygpLT5wbGF0Zm9ybVZpZXcoKTsKKyAgICBVSVZpZXcg
KmNvbnRlbnRWaWV3ID0gW3dlYlZpZXcgdmFsdWVGb3JLZXlQYXRoOkAiX2N1cnJlbnRDb250ZW50
VmlldyJdOworICAgIFVJVmlldyAqcmFuZ2VWaWV3ID0gW2NvbnRlbnRWaWV3IHZhbHVlRm9yS2V5
UGF0aDpAImludGVyYWN0aW9uQXNzaXN0YW50LnNlbGVjdGlvblZpZXcucmFuZ2VWaWV3Il07Cisg
ICAgYXV0byByZWN0c0FzRGljdGlvbmFyaWVzID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFs
bG9jXSBpbml0XSk7CisgICAgTlNBcnJheSAqdGV4dFJlY3RJbmZvQXJyYXkgPSBbcmFuZ2VWaWV3
IHZhbHVlRm9yS2V5UGF0aDpAInJlY3RzIl07CisgICAgZm9yIChpZCB0ZXh0UmVjdEluZm8gaW4g
dGV4dFJlY3RJbmZvQXJyYXkpIHsKKyAgICAgICAgTlNWYWx1ZSAqcmVjdFZhbHVlID0gW3RleHRS
ZWN0SW5mbyB2YWx1ZUZvcktleVBhdGg6QCJyZWN0Il07CisgICAgICAgIGF1dG8gcmFuZ2VSZWN0
SW5Db250ZW50Vmlld0Nvb3JkaW5hdGVzID0gW3JhbmdlVmlldyBjb252ZXJ0UmVjdDpyZWN0VmFs
dWUuQ0dSZWN0VmFsdWUgdG9WaWV3OmNvbnRlbnRWaWV3XTsKKyAgICAgICAgW3JlY3RzQXNEaWN0
aW9uYXJpZXMgYWRkT2JqZWN0OnRvTlNEaWN0aW9uYXJ5KENHUmVjdEludGVyc2VjdGlvbihyYW5n
ZVJlY3RJbkNvbnRlbnRWaWV3Q29vcmRpbmF0ZXMsIGNvbnRlbnRWaWV3LmJvdW5kcykpXTsKKyAg
ICB9CisgICAgcmV0dXJuIEpTVmFsdWVUb09iamVjdChtX2NvbnRleHQtPmpzQ29udGV4dCgpLCBb
SlNWYWx1ZSB2YWx1ZVdpdGhPYmplY3Q6cmVjdHNBc0RpY3Rpb25hcmllcy5nZXQoKSBpbkNvbnRl
eHQ6W0pTQ29udGV4dCBjb250ZXh0V2l0aEpTR2xvYmFsQ29udGV4dFJlZjptX2NvbnRleHQtPmpz
Q29udGV4dCgpXV0uSlNWYWx1ZVJlZiwgbnVsbHB0cik7Cit9CisKIEpTT2JqZWN0UmVmIFVJU2Ny
aXB0Q29udHJvbGxlcjo6aW5wdXRWaWV3Qm91bmRzKCkgY29uc3QKIHsKICAgICByZXR1cm4gSlNW
YWx1ZVRvT2JqZWN0KG1fY29udGV4dC0+anNDb250ZXh0KCksIFtKU1ZhbHVlIHZhbHVlV2l0aE9i
amVjdDp0b05TRGljdGlvbmFyeShUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkubWFpbldlYlZp
ZXcoKS0+cGxhdGZvcm1WaWV3KCkuX2lucHV0Vmlld0JvdW5kcykgaW5Db250ZXh0OltKU0NvbnRl
eHQgY29udGV4dFdpdGhKU0dsb2JhbENvbnRleHRSZWY6bV9jb250ZXh0LT5qc0NvbnRleHQoKV1d
LkpTVmFsdWVSZWYsIG51bGxwdHIpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
IGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGExNmYwYjAwZjgxNTg0YTNhMTJlNmU3M2Iz
NTc4NDcxN2Y5ODgyNWQuLjA5N2M1MmVkOTVlZTQyYzI3ZWNiYjEzMGQxOGZjOWFjMjI5MzM5ODcg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSw1NyBAQAorMjAxOC0xMS0xMyAgV2Vuc29uIEhzaWVoICA8d2Vuc29u
X2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBbaU9TXSBEbyBub3Qgc2hvdyBzZWxlY3Rpb24g
VUkgZm9yIGVkaXRhYmxlIGVsZW1lbnRzIHdpdGggb3BhY2l0eSBuZWFyIHplcm8KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MTQ0MgorICAgICAgICA8
cmRhcjovL3Byb2JsZW0vNDU5NTg2MjU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gRnJh
c2VyLgorCisgICAgICAgIEFkZCA1IG5ldyBsYXlvdXQgdGVzdHMuIFNlZSBiZWxvdyBmb3IgbW9y
ZSBkZXRhaWxzLgorCisgICAgICAgICogZWRpdGluZy9zZWxlY3Rpb24vY2hhcmFjdGVyLWdyYW51
bGFyaXR5LXJlY3QuaHRtbDoKKworICAgICAgICBBZGp1c3QgZm9yIGEgcmVuYW1lZCBVSVNjcmlw
dENvbnRyb2xsZXIgZnVuY3Rpb24uCisKKyAgICAgICAgKiBlZGl0aW5nL3NlbGVjdGlvbi9pb3Mv
ZG8tbm90LXpvb20tdG8tZm9jdXNlZC1oaWRkZW4tY29udGVudGVkaXRhYmxlLWV4cGVjdGVkLnR4
dDogQWRkZWQuCisgICAgICAgICogZWRpdGluZy9zZWxlY3Rpb24vaW9zL2RvLW5vdC16b29tLXRv
LWZvY3VzZWQtaGlkZGVuLWNvbnRlbnRlZGl0YWJsZS5odG1sOiBBZGRlZC4KKworICAgICAgICBB
ZGQgYSB0ZXN0IHRvIHZlcmlmeSB0aGF0IHdlIGRvbid0IHpvb20gdG8gZml0IHRoZSBmb2N1c2Vk
IGVsZW1lbnQsIGlmIHRoZSBmb2N1c2VkIGVsZW1lbnQgaXMgY29tcGxldGVseQorICAgICAgICB0
cmFuc3BhcmVudC4KKworICAgICAgICAqIGVkaXRpbmcvc2VsZWN0aW9uL2lvcy9oaWRlLXNlbGVj
dGlvbi1hZnRlci1oaWRpbmctY29udGVudGVkaXRhYmxlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisg
ICAgICAgICogZWRpdGluZy9zZWxlY3Rpb24vaW9zL2hpZGUtc2VsZWN0aW9uLWFmdGVyLWhpZGlu
Zy1jb250ZW50ZWRpdGFibGUuaHRtbDogQWRkZWQuCisKKyAgICAgICAgQWRkIGEgdGVzdCB0byB2
ZXJpZnkgdGhhdCBzZWxlY3Rpb24gVUkgaXMgaGlkZGVuIGFmdGVyIG1ha2luZyBhbiBlZGl0YWJs
ZSByb290IHRyYW5zcGFyZW50LCBhbmQgc2hvd24gYWdhaW4gd2hlbgorICAgICAgICB0aGUgZWRp
dGFibGUgcm9vdCBiZWNvbWVzIG9wYXF1ZS4KKworICAgICAgICAqIGVkaXRpbmcvc2VsZWN0aW9u
L2lvcy9oaWRlLXNlbGVjdGlvbi1pbi1jb250ZW50ZWRpdGFibGUtbmVzdGVkLXRyYW5zcGFyZW5j
eS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvc2VsZWN0aW9uL2lvcy9o
aWRlLXNlbGVjdGlvbi1pbi1jb250ZW50ZWRpdGFibGUtbmVzdGVkLXRyYW5zcGFyZW5jeS5odG1s
OiBBZGRlZC4KKworICAgICAgICBBZGQgYSB0ZXN0IHRvIHZlcmlmeSB0aGF0IHRyYW5zcGFyZW5j
eSBhcHBsaWVkIG9uIGFuIGVkaXRhYmxlIHJvb3QgdmlhIG5lc3RlZCB0cmFuc3BhcmVudCBjb250
YWluZXJzIGNhdXNlcworICAgICAgICBzZWxlY3Rpb24gVUkgdG8gYmUgc3VwcHJlc3NlZC4KKwor
ICAgICAgICAqIGVkaXRpbmcvc2VsZWN0aW9uL2lvcy9oaWRlLXNlbGVjdGlvbi1pbi1oaWRkZW4t
Y29udGVudGVkaXRhYmxlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZWRpdGluZy9z
ZWxlY3Rpb24vaW9zL2hpZGUtc2VsZWN0aW9uLWluLWhpZGRlbi1jb250ZW50ZWRpdGFibGUtZnJh
bWUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBlZGl0aW5nL3NlbGVjdGlvbi9pb3Mv
aGlkZS1zZWxlY3Rpb24taW4taGlkZGVuLWNvbnRlbnRlZGl0YWJsZS1mcmFtZS5odG1sOiBBZGRl
ZC4KKworICAgICAgICBBZGQgYSB0ZXN0IHRvIHZlcmlmeSB0aGF0IHNlbGVjdGlvbiBVSSBpcyBz
dXBwcmVzc2VkIHdoZW4gYW4gZWRpdGFibGUgZWxlbWVudCBpbnNpZGUgYSBzdWJmcmFtZSBpcyBm
b2N1c2VkLiBUaGlzCisgICAgICAgIHRlc3QgY2hlY2tzIHRoYXQgdGhlIGNhcmV0LCBzZWxlY3Rp
b24gcmVjdHMgYW5kIHNlbGVjdGlvbiBoYW5kbGUgdmlld3MgYXJlIG5vdCBzaG93biwgYW5kIGFk
ZGl0aW9uYWxseSB2ZXJpZmllcworICAgICAgICB0aGF0IHRoZSBzZWxlY3Rpb24gaW4gYSBoaWRk
ZW4gY29udGVudGVkaXRhYmxlIGFyZWEgY2Fubm90IGJlIGNoYW5nZWQgdmlhIHRhcCBnZXN0dXJl
LgorCisgICAgICAgICogZWRpdGluZy9zZWxlY3Rpb24vaW9zL2hpZGUtc2VsZWN0aW9uLWluLWhp
ZGRlbi1jb250ZW50ZWRpdGFibGUuaHRtbDogQWRkZWQuCisKKyAgICAgICAgU2FtZSB0ZXN0IGFz
IGFib3ZlLCBidXQgaW4gYSByZWd1bGFyIGVkaXRhYmxlIGVsZW1lbnQgaW4gdGhlIG1haW4gZG9j
dW1lbnQgaW5zdGVhZCBvZiBhIHN1YmZyYW1lLgorCisgICAgICAgICogcmVzb3VyY2VzL3VpLWhl
bHBlci5qczoKKyAgICAgICAgKHdpbmRvdy5VSUhlbHBlci5nZXRVSVNlbGVjdGlvblJlY3RzLnJl
dHVybi5uZXcuUHJvbWlzZS4pOgorICAgICAgICAod2luZG93LlVJSGVscGVyLmdldFVJU2VsZWN0
aW9uUmVjdHMucmV0dXJuLm5ldy5Qcm9taXNlKToKKyAgICAgICAgKHdpbmRvdy5VSUhlbHBlci5n
ZXRVSVNlbGVjdGlvblJlY3RzKToKKyAgICAgICAgKHdpbmRvdy5VSUhlbHBlci5nZXRVSUNhcmV0
Vmlld1JlY3QucmV0dXJuLm5ldy5Qcm9taXNlLik6CisgICAgICAgICh3aW5kb3cuVUlIZWxwZXIu
Z2V0VUlDYXJldFZpZXdSZWN0LnJldHVybi5uZXcuUHJvbWlzZSk6CisgICAgICAgICh3aW5kb3cu
VUlIZWxwZXIuZ2V0VUlDYXJldFZpZXdSZWN0KToKKworICAgICAgICBBZGQgbmV3IFVJSGVscGVy
IHdyYXBwZXIgbWV0aG9kcy4gU2VlIFRvb2xzL0NoYW5nZUxvZyBmb3IgbW9yZSBkZXRhaWwuCisK
IDIwMTgtMTEtMTIgIEFudG9pbmUgUXVpbnQgIDxncmFvdXRzQGFwcGxlLmNvbT4KIAogICAgICAg
ICBbV2ViIEFuaW1hdGlvbnNdIERvbid0IHNjaGVkdWxlIGFuaW1hdGlvbiBmcmFtZXMgb3IgdXBk
YXRlIHN0eWxlIHdoaWxlIGFuIGFjY2VsZXJhdGVkIGFuaW1hdGlvbiBpcyBydW5uaW5nCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9jaGFyYWN0ZXItZ3JhbnVsYXJp
dHktcmVjdC5odG1sIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vY2hhcmFjdGVyLWdy
YW51bGFyaXR5LXJlY3QuaHRtbAppbmRleCBmYzViY2U0N2Q5MDcxNWYzNDY1ZTZlNTc2YzBhYWM4
ZTgzNjZhNTNhLi4xMWFiYTMzNGY3ZjVjZDAyZjkwY2QxZmIwODdlODY0ZTU2M2ExNTFjIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9jaGFyYWN0ZXItZ3JhbnVsYXJp
dHktcmVjdC5odG1sCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2NoYXJhY3Rl
ci1ncmFudWxhcml0eS1yZWN0Lmh0bWwKQEAgLTIyLDcgKzIyLDcgQEAKICAgICAgICAgcmV0dXJu
IGAKICAgICAgICAgKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgdWlDb250cm9sbGVyLmxvbmdQ
cmVzc0F0UG9pbnQoMzAsIDIwLCBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICB1aUNvbnRy
b2xsZXIudWlTY3JpcHRDb21wbGV0ZShKU09OLnN0cmluZ2lmeSh1aUNvbnRyb2xsZXIuc2VsZWN0
aW9uUmFuZ2VWaWV3UmVjdHMpKTsKKyAgICAgICAgICAgICAgICB1aUNvbnRyb2xsZXIudWlTY3Jp
cHRDb21wbGV0ZShKU09OLnN0cmluZ2lmeSh1aUNvbnRyb2xsZXIudGV4dFNlbGVjdGlvblJhbmdl
UmVjdHMpKTsKICAgICAgICAgICAgIH0pOwogICAgICAgICB9KSgpO2AKICAgICB9CkBAIC0zNSwx
MiArMzUsMTIgQEAKICAgICAgICAgdmFyIHRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCd0YXJnZXQnKTsKICAgICAgICAgaWYgKHRlc3RSdW5uZXIucnVuVUlTY3JpcHQpIHsKICAgICAg
ICAgICAgIHRlc3RSdW5uZXIucnVuVUlTY3JpcHQoZ2V0VUlTY3JpcHQoKSwgZnVuY3Rpb24ocmVz
dWx0KSB7Ci0gICAgICAgICAgICAgICAgdmFyIHNlbGVjdGlvblJhbmdlVmlld1JlY3RzID0gSlNP
Ti5wYXJzZShyZXN1bHQpOworICAgICAgICAgICAgICAgIHZhciB0ZXh0U2VsZWN0aW9uUmFuZ2VS
ZWN0cyA9IEpTT04ucGFyc2UocmVzdWx0KTsKICAgICAgICAgICAgICAgICB2YXIgb3V0cHV0Owot
ICAgICAgICAgICAgICAgIGlmIChzZWxlY3Rpb25SYW5nZVZpZXdSZWN0cy5sZW5ndGggIT09IDEp
CisgICAgICAgICAgICAgICAgaWYgKHRleHRTZWxlY3Rpb25SYW5nZVJlY3RzLmxlbmd0aCAhPT0g
MSkKICAgICAgICAgICAgICAgICAgICAgb3V0cHV0ID0gJ0ZBSUw6IFVuZXhwZWN0ZWQgbnVtYmVy
IG9mIHNlbGVjdGlvbiByYW5nZSB2aWV3czogJyArIHJlc3VsdDsKICAgICAgICAgICAgICAgICBl
bHNlIHsKLSAgICAgICAgICAgICAgICAgICAgdmFyIHJlY3QgPSBzZWxlY3Rpb25SYW5nZVZpZXdS
ZWN0c1swXTsKKyAgICAgICAgICAgICAgICAgICAgdmFyIHJlY3QgPSB0ZXh0U2VsZWN0aW9uUmFu
Z2VSZWN0c1swXTsKICAgICAgICAgICAgICAgICAgICAgaWYgKHJlY3QubGVmdCAhPSA4IHx8IHJl
Y3QudG9wICE9IDggfHwgcmVjdC53aWR0aCAhPSAxMTIgfHwgcmVjdC5oZWlnaHQgIT0gMTcgKQog
ICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0ID0gJ0ZBSUw6IFVuZXhwZWN0ZWQgc2VsZWN0
aW9uIHJhbmdlIHZpZXcgZnJhbWU6ICcgKyByZXN1bHQ7CiAgICAgICAgICAgICAgICAgICAgIGVs
c2UKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2lvcy9kby1ub3Qt
em9vbS10by1mb2N1c2VkLWhpZGRlbi1jb250ZW50ZWRpdGFibGUtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vaW9zL2RvLW5vdC16b29tLXRvLWZvY3VzZWQtaGlk
ZGVuLWNvbnRlbnRlZGl0YWJsZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWEzOGJlZjAzYzQ5
YmFhOGU0N2E4MGZkMjFiM2RjNWJlYTEwZmUzNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2VkaXRpbmcvc2VsZWN0aW9uL2lvcy9kby1ub3Qtem9vbS10by1mb2N1c2VkLWhpZGRlbi1j
b250ZW50ZWRpdGFibGUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNyBAQAorCitUaGUgaW5pdGlh
bCBwYWdlIHNjYWxlIGlzOiAxLjAwMAorVGhlIHBhZ2Ugc2NhbGUgYWZ0ZXIgZm9jdXNpbmcgdGhl
IGRpdiBpczogMS4wMDAKK1RoZSBwYWdlIHNjYWxlIGFmdGVyIGZvY3VzaW5nIHRoZSBpZnJhbWUg
aXM6IDEuMDAwCitUZXN0aW5nCisKK1ZlcmlmaWVzIHRoYXQgd2UgZG9uJ3Qgem9vbSB0byB0aGUg
Zm9jdXNlZCBlbGVtZW50LCBpZiB0aGUgZm9jdXNlZCBlbGVtZW50IGlzIGluIGEgaGlkZGVuIGNv
bnRlbnRlZGl0YWJsZSBhcmVhLiBUbyBtYW51YWxseSB0ZXN0LCBjbGljayB0aGUgYnV0dG9uIGFu
ZCBjaGVjayB0aGF0IHRoZSBwYWdlIHNjYWxlIGlzIHN0aWxsIDEuCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9pb3MvZG8tbm90LXpvb20tdG8tZm9jdXNlZC1oaWRk
ZW4tY29udGVudGVkaXRhYmxlLmh0bWwgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9p
b3MvZG8tbm90LXpvb20tdG8tZm9jdXNlZC1oaWRkZW4tY29udGVudGVkaXRhYmxlLmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMDU3MjJkMDRlNzY0MTk4MjY3YTNiMTY4Y2E3YTY3NTFjNGQ2NzFkMwotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2lvcy9kby1ub3Qtem9v
bS10by1mb2N1c2VkLWhpZGRlbi1jb250ZW50ZWRpdGFibGUuaHRtbApAQCAtMCwwICsxLDk0IEBA
Cis8IURPQ1RZUEUgaHRtbD4gPCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIgWyB1c2VGbGV4aWJsZVZp
ZXdwb3J0PXRydWUgXSAtLT4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBuYW1lPSJ2aWV3cG9ydCIg
Y29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEiPgorPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uL3Jlc291cmNlcy91aS1oZWxwZXIuanMiPjwvc2NyaXB0PgorPHN0eWxlPgor
Ym9keSB7CisgICAgd2lkdGg6IDEwMCU7CisgICAgaGVpZ2h0OiAxMDAlOworICAgIG1hcmdpbjog
MDsKK30KKworaW5wdXQgeworICAgIHdpZHRoOiAzMjBweDsKKyAgICBoZWlnaHQ6IDE2MHB4Owor
ICAgIGRpc3BsYXk6IGJsb2NrOworfQorCisuY29udGFpbmVyIHsKKyAgICB3aWR0aDogMzBweDsK
KyAgICBoZWlnaHQ6IDMwcHg7CisgICAgYm9yZGVyOiBzb2xpZCAycHggc2lsdmVyOworICAgIGJv
eC1zaXppbmc6IGJvcmRlci1ib3g7CisgICAgZm9udC1zaXplOiA2cHg7Cit9CisKKyNlZGl0b3Is
IGlmcmFtZSB7CisgICAgb3BhY2l0eTogMC4wMDE7CisgICAgd2lkdGg6IGluaGVyaXQ7CisgICAg
aGVpZ2h0OiBpbmhlcml0OworICAgIG92ZXJmbG93LXk6IHNjcm9sbDsKK30KKzwvc3R5bGU+Cis8
L2hlYWQ+Cis8Ym9keT4KKzxpbnB1dCB0eXBlPSJidXR0b24iIG9uY2xpY2s9ImZvY3VzRWRpdG9y
KCkiIHZhbHVlPSJDbGljayB0byBmb2N1cyB0aGUgZGl2Ij4KKzxpbnB1dCB0eXBlPSJidXR0b24i
IG9uY2xpY2s9ImZvY3VzU3ViZnJhbWUoKSIgdmFsdWU9IkNsaWNrIHRvIGZvY3VzIHRoZSBmcmFt
ZSI+Cis8ZGl2PlRoZSBpbml0aWFsIHBhZ2Ugc2NhbGUgaXM6IDxzcGFuIGlkPSJpbml0aWFsLXNj
YWxlIj48L3NwYW4+PC9kaXY+Cis8ZGl2PlRoZSBwYWdlIHNjYWxlIGFmdGVyIGZvY3VzaW5nIHRo
ZSBkaXYgaXM6IDxzcGFuIGlkPSJkaXYtc2NhbGUiPjwvc3Bhbj48L2Rpdj4KKzxkaXY+VGhlIHBh
Z2Ugc2NhbGUgYWZ0ZXIgZm9jdXNpbmcgdGhlIGlmcmFtZSBpczogPHNwYW4gaWQ9ImlmcmFtZS1z
Y2FsZSI+PC9zcGFuPjwvZGl2PgorPGRpdiBjbGFzcz0iY29udGFpbmVyIj4KKyAgICA8ZGl2IGlk
PSJlZGl0b3IiIGNvbnRlbnRlZGl0YWJsZT5UZXN0aW5nPC9kaXY+Cis8L2Rpdj4KKzxkaXYgY2xh
c3M9ImNvbnRhaW5lciI+CisgICAgPGlmcmFtZSBzcmNkb2M9IgorICAgICAgICA8aGVhZD4KKyAg
ICAgICAgICAgIDxzdHlsZT5ib2R5LCBodG1sIHsgd2lkdGg6IDEwMCU7IGhlaWdodDogMTAwJTsg
Zm9udC1zaXplOiA2cHg7IH08L3N0eWxlPgorICAgICAgICAgICAgPHNjcmlwdD4KKyAgICAgICAg
ICAgICAgICBmdW5jdGlvbiBiZWdpbkVkaXRpbmcoKSB7CisgICAgICAgICAgICAgICAgICAgIGRv
Y3VtZW50LmJvZHkuZm9jdXMoKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICA8L3Nj
cmlwdD4KKyAgICAgICAgPC9oZWFkPgorICAgICAgICA8Ym9keSBjb250ZW50ZWRpdGFibGU+VGVz
dGluZzwvYm9keT4iIG9ubG9hZD0icnVuVGVzdCgpIj48L2lmcmFtZT4KKzwvZGl2PgorPHA+VmVy
aWZpZXMgdGhhdCB3ZSBkb24ndCB6b29tIHRvIHRoZSBmb2N1c2VkIGVsZW1lbnQsIGlmIHRoZSBm
b2N1c2VkIGVsZW1lbnQgaXMgaW4gYSBoaWRkZW4gY29udGVudGVkaXRhYmxlIGFyZWEuIFRvIG1h
bnVhbGx5IHRlc3QsIGNsaWNrIHRoZSBidXR0b24gYW5kIGNoZWNrIHRoYXQgdGhlIHBhZ2Ugc2Nh
bGUgaXMgc3RpbGwgMS48L3A+Cis8c2NyaXB0PgorbG9hZENvdW50ID0gMDsKKworYWRkRXZlbnRM
aXN0ZW5lcigibG9hZCIsIHJ1blRlc3QpOworCitmdW5jdGlvbiBmb2N1c0VkaXRvcigpIHsKKyAg
ICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjZWRpdG9yJykuZm9jdXMoKTsKK30KKworZnVuY3Rp
b24gZm9jdXNTdWJmcmFtZSgpIHsKKyAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJpZnJhbWUi
KS5jb250ZW50V2luZG93LmJlZ2luRWRpdGluZygpOworfQorCithc3luYyBmdW5jdGlvbiBydW5U
ZXN0KCkgeworICAgIGlmICghd2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHJldHVybjsKKwor
ICAgIGlmICgrK2xvYWRDb3VudCA8IDIpCisgICAgICAgIHJldHVybjsKKworICAgIHRlc3RSdW5u
ZXIuZHVtcEFzVGV4dCgpOworICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworCisgICAg
ZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiI2luaXRpYWwtc2NhbGUiKS50ZXh0Q29udGVudCA9IGlu
dGVybmFscy5wYWdlU2NhbGVGYWN0b3IoKS50b0ZpeGVkKDMpOworCisgICAgYXdhaXQgVUlIZWxw
ZXIuYWN0aXZhdGVBbmRXYWl0Rm9ySW5wdXRTZXNzaW9uQXQoMTYwLCA4MCk7CisgICAgZG9jdW1l
bnQucXVlcnlTZWxlY3RvcigiI2Rpdi1zY2FsZSIpLnRleHRDb250ZW50ID0gaW50ZXJuYWxzLnBh
Z2VTY2FsZUZhY3RvcigpLnRvRml4ZWQoMyk7CisgICAgVUlIZWxwZXIucmVzaWduRmlyc3RSZXNw
b25kZXIoKTsKKyAgICBhd2FpdCBVSUhlbHBlci53YWl0Rm9yS2V5Ym9hcmRUb0hpZGUoKTsKKwor
ICAgIGF3YWl0IFVJSGVscGVyLmFjdGl2YXRlQW5kV2FpdEZvcklucHV0U2Vzc2lvbkF0KDE2MCwg
MjQwKTsKKyAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIjaWZyYW1lLXNjYWxlIikudGV4dENv
bnRlbnQgPSBpbnRlcm5hbHMucGFnZVNjYWxlRmFjdG9yKCkudG9GaXhlZCgzKTsKKworICAgIHRl
c3RSdW5uZXIubm90aWZ5RG9uZSgpOworfQorPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9pb3MvaGlkZS1zZWxlY3Rp
b24tYWZ0ZXItaGlkaW5nLWNvbnRlbnRlZGl0YWJsZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9lZGl0aW5nL3NlbGVjdGlvbi9pb3MvaGlkZS1zZWxlY3Rpb24tYWZ0ZXItaGlkaW5nLWNvbnRl
bnRlZGl0YWJsZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjQwOWMyNTZhZmIxNjk1OGEzZGE1
NTZhOGZmNzk3MDQ0MDc5MWMzNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRp
bmcvc2VsZWN0aW9uL2lvcy9oaWRlLXNlbGVjdGlvbi1hZnRlci1oaWRpbmctY29udGVudGVkaXRh
YmxlLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDYgQEAKK0hlcmUncyB0byB0aGUgY3Jhenkgb25l
cywgdGhlIG1pc2ZpdHMsIHRoZSByZWJlbHMsIHRoZSB0cm91YmxlbWFrZXJzLCB0aGUgcm91bmQg
cGVncyBpbiB0aGUgc3F1YXJlIGhvbGVzLiBUaGUgb25lcyB3aG8gc2VlIHRoaW5ncyBkaWZmZXJl
bnRseS4gVGhleSdyZSBub3QgZm9uZCBvZiBydWxlcy4gWW91IGNhbiBxdW90ZSB0aGVtLCBkaXNh
Z3JlZSB3aXRoIHRoZW0sIGdsb3JpZnkgb3IgdmlsaWZ5IHRoZW0sIGJ1dCB0aGUgb25seSB0aGlu
ZyB5b3UgY2FuJ3QgZG8gaXMgaWdub3JlIHRoZW0gYmVjYXVzZSB0aGV5IGNoYW5nZSB0aGluZ3Mu
CitWZXJpZmllcyB0aGF0IHNlbGVjdGlvbiBVSSBpcyBoaWRkZW4gYWZ0ZXIgdGhlIGVkaXRhYmxl
IGFyZWEgYmVjb21lcyBoaWRkZW4sIGZvbGxvd2luZyBhIHNlbGVjdGlvbiBjaGFuZ2UuIFRoaXMg
dGVzdCByZXF1aXJlcyBXZWJLaXRUZXN0UnVubmVyLgorCitDYXJldCByZWN0IGFmdGVyIGZvY3Vz
OiAobGVmdCA9IDE2MSwgdG9wID0gMTUxLCB3aWR0aCA9IDIsIGhlaWdodCA9IDMwKQorU2VsZWN0
aW9uIHJlY3RzIGFmdGVyIHNlbGVjdCBhbGw6CitDYXJldCByZWN0IGFmdGVyIGNvbGxhcHNpbmc6
IChsZWZ0ID0gMjY5LCB0b3AgPSAyNzEsIHdpZHRoID0gMiwgaGVpZ2h0ID0gMzApCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9pb3MvaGlkZS1zZWxlY3Rpb24tYWZ0
ZXItaGlkaW5nLWNvbnRlbnRlZGl0YWJsZS5odG1sIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxl
Y3Rpb24vaW9zL2hpZGUtc2VsZWN0aW9uLWFmdGVyLWhpZGluZy1jb250ZW50ZWRpdGFibGUuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi45OWFiYWNiZTljNDE5YWYyZDYzYTZkOTI4NWFmMGZmM2VhNGJjMTA0Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vaW9zL2hpZGUt
c2VsZWN0aW9uLWFmdGVyLWhpZGluZy1jb250ZW50ZWRpdGFibGUuaHRtbApAQCAtMCwwICsxLDY1
IEBACis8IURPQ1RZUEUgaHRtbD4gPCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIgWyB1c2VGbGV4aWJs
ZVZpZXdwb3J0PXRydWUgXSAtLT4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBuYW1lPSJ2aWV3cG9y
dCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCB1c2VyLXNjYWxhYmxlPW5vIj4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvdWktaGVscGVyLmpzIj48L3NjcmlwdD4KKzxzdHls
ZT4KK2JvZHksIGh0bWwgeworICAgIHdpZHRoOiAxMDAlOworICAgIGhlaWdodDogMTAwJTsKKyAg
ICBtYXJnaW46IDA7Cit9CisKKy5jb250YWluZXIgeworICAgIHdpZHRoOiAzMjBweDsKKyAgICBo
ZWlnaHQ6IDMyMHB4OworICAgIGJvcmRlcjogc29saWQgMnB4IHNpbHZlcjsKKyAgICBib3gtc2l6
aW5nOiBib3JkZXItYm94OworfQorCisjZWRpdG9yIHsKKyAgICB3aWR0aDogaW5oZXJpdDsKKyAg
ICBoZWlnaHQ6IGluaGVyaXQ7CisgICAgZm9udC1zaXplOiAyNHB4OworfQorPC9zdHlsZT4KKzwv
aGVhZD4KKzxib2R5PgorPGRpdiBjbGFzcz0iY29udGFpbmVyIj4KKyAgICA8ZGl2IGlkPSJlZGl0
b3IiIGNvbnRlbnRlZGl0YWJsZT4KKyAgICAgICAgSGVyZSdzIHRvIHRoZSBjcmF6eSBvbmVzLCB0
aGUgbWlzZml0cywgdGhlIHJlYmVscywgdGhlIHRyb3VibGVtYWtlcnMsIHRoZSByb3VuZCBwZWdz
IGluIHRoZSBzcXVhcmUgaG9sZXMuCisgICAgICAgIFRoZSBvbmVzIHdobyBzZWUgdGhpbmdzIGRp
ZmZlcmVudGx5LiBUaGV5J3JlIG5vdCBmb25kIG9mIHJ1bGVzLiBZb3UgY2FuIHF1b3RlIHRoZW0s
IGRpc2FncmVlIHdpdGggdGhlbSwgZ2xvcmlmeSBvciB2aWxpZnkgdGhlbSwgYnV0IHRoZSBvbmx5
IHRoaW5nIHlvdSBjYW4ndCBkbyBpcyBpZ25vcmUgdGhlbSBiZWNhdXNlIHRoZXkgY2hhbmdlIHRo
aW5ncy4KKyAgICA8L2Rpdj4KKzwvZGl2PgorPHA+VmVyaWZpZXMgdGhhdCBzZWxlY3Rpb24gVUkg
aXMgaGlkZGVuIGFmdGVyIHRoZSBlZGl0YWJsZSBhcmVhIGJlY29tZXMgaGlkZGVuLCBmb2xsb3dp
bmcgYSBzZWxlY3Rpb24gY2hhbmdlLiBUaGlzIHRlc3QgcmVxdWlyZXMgV2ViS2l0VGVzdFJ1bm5l
ci48L3A+Cis8ZGl2PkNhcmV0IHJlY3QgYWZ0ZXIgZm9jdXM6IDxzcGFuIGlkPSJmb2N1cy1jYXJl
dCI+PC9zcGFuPjwvZGl2PgorPGRpdj5TZWxlY3Rpb24gcmVjdHMgYWZ0ZXIgc2VsZWN0IGFsbDog
PHNwYW4gaWQ9InNlbGVjdGlvbiI+PC9zcGFuPjwvZGl2PgorPGRpdj5DYXJldCByZWN0IGFmdGVy
IGNvbGxhcHNpbmc6IDxzcGFuIGlkPSJjb2xsYXBzZS1jYXJldCI+PC9zcGFuPjwvZGl2PgorPHNj
cmlwdD4KK2Z1bmN0aW9uIHJlY3RUb1N0cmluZyhyZWN0KSB7CisgICAgcmV0dXJuIGAobGVmdCA9
ICR7TWF0aC5yb3VuZChyZWN0LmxlZnQpfSwgdG9wID0gJHtNYXRoLnJvdW5kKHJlY3QudG9wKX0s
IHdpZHRoID0gJHtNYXRoLnJvdW5kKHJlY3Qud2lkdGgpfSwgaGVpZ2h0ID0gJHtNYXRoLnJvdW5k
KHJlY3QuaGVpZ2h0KX0pYDsKK30KKworKGFzeW5jICgpID0+IHsKKyAgICBpZiAoIXdpbmRvdy50
ZXN0UnVubmVyKQorICAgICAgICByZXR1cm47CisKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQo
KTsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKworICAgIGF3YWl0IFVJSGVscGVy
LmFjdGl2YXRlQW5kV2FpdEZvcklucHV0U2Vzc2lvbkF0KDE2MCwgMTYwKTsKKyAgICBkb2N1bWVu
dC5xdWVyeVNlbGVjdG9yKCIjZm9jdXMtY2FyZXQiKS50ZXh0Q29udGVudCA9IHJlY3RUb1N0cmlu
Zyhhd2FpdCBVSUhlbHBlci5nZXRVSUNhcmV0Vmlld1JlY3QoKSk7CisKKyAgICBlZGl0b3Iuc3R5
bGUub3BhY2l0eSA9IDA7CisgICAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoInNlbGVjdEFsbCIpOwor
ICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIiNzZWxlY3Rpb24iKS50ZXh0Q29udGVudCA9IChh
d2FpdCBVSUhlbHBlci5nZXRVSVNlbGVjdGlvblZpZXdSZWN0cygpKS5tYXAocmVjdFRvU3RyaW5n
KS5qb2luKCIsICIpOworCisgICAgZWRpdG9yLnN0eWxlLm9wYWNpdHkgPSAxOworICAgIGdldFNl
bGVjdGlvbigpLmNvbGxhcHNlVG9FbmQoKTsKKyAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIj
Y29sbGFwc2UtY2FyZXQiKS50ZXh0Q29udGVudCA9IHJlY3RUb1N0cmluZyhhd2FpdCBVSUhlbHBl
ci5nZXRVSUNhcmV0Vmlld1JlY3QoKSk7CisKKyAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsK
K30pKCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2VkaXRpbmcvc2VsZWN0aW9uL2lvcy9oaWRlLXNlbGVjdGlvbi1pbi1jb250ZW50ZWRpdGFi
bGUtbmVzdGVkLXRyYW5zcGFyZW5jeS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9lZGl0aW5n
L3NlbGVjdGlvbi9pb3MvaGlkZS1zZWxlY3Rpb24taW4tY29udGVudGVkaXRhYmxlLW5lc3RlZC10
cmFuc3BhcmVuY3ktZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU3MGU2OTIyOTAwMGU5ZDdlZDkw
OGEzNjMzNjVmOWZlZTViZTk2ZmYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9lZGl0
aW5nL3NlbGVjdGlvbi9pb3MvaGlkZS1zZWxlY3Rpb24taW4tY29udGVudGVkaXRhYmxlLW5lc3Rl
ZC10cmFuc3BhcmVuY3ktZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTIgQEAKK0hlcmUncyB0byB0
aGUgY3Jhenkgb25lcywgdGhlIG1pc2ZpdHMsIHRoZSByZWJlbHMsIHRoZSB0cm91YmxlbWFrZXJz
LCB0aGUgcm91bmQgcGVncyBpbiB0aGUgc3F1YXJlIGhvbGVzLiBUaGUgb25lcyB3aG8gc2VlIHRo
aW5ncyBkaWZmZXJlbnRseS4gVGhleSdyZSBub3QgZm9uZCBvZiBydWxlcy4gWW91IGNhbiBxdW90
ZSB0aGVtLCBkaXNhZ3JlZSB3aXRoIHRoZW0sIGdsb3JpZnkgb3IgdmlsaWZ5IHRoZW0sIGJ1dCB0
aGUgb25seSB0aGluZyB5b3UgY2FuJ3QgZG8gaXMgaWdub3JlIHRoZW0gYmVjYXVzZSB0aGV5IGNo
YW5nZSB0aGluZ3MuCitWZXJpZmllcyB0aGF0IHNlbGVjdGlvbiBVSSBpcyBzdXBwcmVzc2VkIHdo
ZW4gdGhlIGVkaXRhYmxlIHJvb3QgaXMgdHJhbnNwYXJlbnQgYXMgYSByZXN1bHQgb2YgbmVzdGVk
IHRyYW5zcGFyZW50IGNvbnRhaW5lcnMuIFRvIG1hbnVhbGx5IHRlc3QsIGZvY3VzIHRoZSBib3gg
YWJvdmUgYW5kIHZlcmlmeSB0aGF0OgorCitUaGUgY2FyZXQgaXMgbm90IHNob3duLgorU2VsZWN0
aW9uIGhpZ2hsaWdodHMgYXJlIG5vdCBzaG93bi4KK1RoZSBzZWxlY3Rpb24gY2Fubm90IGJlIGNo
YW5nZWQgdmlhIGdlc3R1cmUuCitDYXJldCByZWN0IGFmdGVyIGZvY3VzOiAobGVmdCA9IDAsIHRv
cCA9IDAsIHdpZHRoID0gMCwgaGVpZ2h0ID0gMCkKK1NlbGVjdGlvbiByZWN0cyBhZnRlciBzZWxl
Y3RpbmcgYWxsOgorU2VsZWN0aW9uIHN0YXJ0IGdyYWJiZXIgcmVjdCBhZnRlciBzZWxlY3Rpbmcg
YWxsOiAobGVmdCA9IDAsIHRvcCA9IDAsIHdpZHRoID0gMCwgaGVpZ2h0ID0gMCkKK1NlbGVjdGlv
biBlbmQgZ3JhYmJlciByZWN0IGFmdGVyIHNlbGVjdGluZyBhbGw6IChsZWZ0ID0gMCwgdG9wID0g
MCwgd2lkdGggPSAwLCBoZWlnaHQgPSAwKQorU2VsZWN0aW9uIGJlZm9yZSB0YXA6IChbb2JqZWN0
IFRleHRdIzM1NywgW29iamVjdCBUZXh0XSMzNTcpCitTZWxlY3Rpb24gYWZ0ZXIgdGFwOiAoW29i
amVjdCBUZXh0XSMzNTcsIFtvYmplY3QgVGV4dF0jMzU3KQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZWRpdGluZy9zZWxlY3Rpb24vaW9zL2hpZGUtc2VsZWN0aW9uLWluLWNvbnRlbnRlZGl0YWJs
ZS1uZXN0ZWQtdHJhbnNwYXJlbmN5Lmh0bWwgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlv
bi9pb3MvaGlkZS1zZWxlY3Rpb24taW4tY29udGVudGVkaXRhYmxlLW5lc3RlZC10cmFuc3BhcmVu
Y3kuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi41OWFiZGMyNDg1Y2IwNjM2M2NlNjVkODM2NWNjMjJiMTgzYWEz
YzYxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vaW9z
L2hpZGUtc2VsZWN0aW9uLWluLWNvbnRlbnRlZGl0YWJsZS1uZXN0ZWQtdHJhbnNwYXJlbmN5Lmh0
bWwKQEAgLTAsMCArMSw5NiBAQAorPCFET0NUWVBFIGh0bWw+IDwhLS0gd2Via2l0LXRlc3QtcnVu
bmVyIFsgdXNlRmxleGlibGVWaWV3cG9ydD10cnVlIF0gLS0+Cis8aHRtbD4KKzxoZWFkPgorPG1l
dGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9IndpZHRoPWRldmljZS13aWR0aCwgdXNlci1zY2Fs
YWJsZT1ubyI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL3VpLWhlbHBlci5qcyI+
PC9zY3JpcHQ+Cis8c3R5bGU+Citib2R5LCBodG1sIHsKKyAgICB3aWR0aDogMTAwJTsKKyAgICBo
ZWlnaHQ6IDEwMCU7CisgICAgbWFyZ2luOiAwOworfQorCisuY29udGFpbmVyIHsKKyAgICB3aWR0
aDogMzIwcHg7CisgICAgaGVpZ2h0OiAzMjBweDsKKyAgICBib3JkZXI6IHNvbGlkIDJweCBzaWx2
ZXI7CisgICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKK30KKworI2VkaXRvciB7CisgICAgd2lk
dGg6IGluaGVyaXQ7CisgICAgaGVpZ2h0OiBpbmhlcml0OworICAgIGZvbnQtc2l6ZTogMjRweDsK
K30KKworLnRyYW5zcGFyZW50IHsKKyAgICBvcGFjaXR5OiAwLjI1OworfQorPC9zdHlsZT4KKzwv
aGVhZD4KKzxib2R5PgorPGRpdiBjbGFzcz0iY29udGFpbmVyIj4KKyAgICA8ZGl2IGNsYXNzPSJ0
cmFuc3BhcmVudCI+CisgICAgICAgIDxkaXYgY2xhc3M9InRyYW5zcGFyZW50Ij4KKyAgICAgICAg
ICAgIDxkaXYgY2xhc3M9InRyYW5zcGFyZW50Ij4KKyAgICAgICAgICAgICAgICA8ZGl2IGNsYXNz
PSJ0cmFuc3BhcmVudCI+CisgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9ImVkaXRvciIgY29u
dGVudGVkaXRhYmxlPgorICAgICAgICAgICAgICAgICAgICAgICAgSGVyZSdzIHRvIHRoZSBjcmF6
eSBvbmVzLCB0aGUgbWlzZml0cywgdGhlIHJlYmVscywgdGhlIHRyb3VibGVtYWtlcnMsIHRoZSBy
b3VuZCBwZWdzIGluIHRoZSBzcXVhcmUgaG9sZXMuCisgICAgICAgICAgICAgICAgICAgICAgICBU
aGUgb25lcyB3aG8gc2VlIHRoaW5ncyBkaWZmZXJlbnRseS4gVGhleSdyZSBub3QgZm9uZCBvZiBy
dWxlcy4gWW91IGNhbiBxdW90ZSB0aGVtLCBkaXNhZ3JlZSB3aXRoIHRoZW0sIGdsb3JpZnkgb3Ig
dmlsaWZ5IHRoZW0sIGJ1dCB0aGUgb25seSB0aGluZyB5b3UgY2FuJ3QgZG8gaXMgaWdub3JlIHRo
ZW0gYmVjYXVzZSB0aGV5IGNoYW5nZSB0aGluZ3MuCisgICAgICAgICAgICAgICAgICAgIDwvZGl2
PgorICAgICAgICAgICAgICAgIDwvZGl2PgorICAgICAgICAgICAgPC9kaXY+CisgICAgICAgIDwv
ZGl2PgorICAgIDwvZGl2PgorPC9kaXY+Cis8cD5WZXJpZmllcyB0aGF0IHNlbGVjdGlvbiBVSSBp
cyBzdXBwcmVzc2VkIHdoZW4gdGhlIGVkaXRhYmxlIHJvb3QgaXMgdHJhbnNwYXJlbnQgYXMgYSBy
ZXN1bHQgb2YgbmVzdGVkIHRyYW5zcGFyZW50IGNvbnRhaW5lcnMuIFRvIG1hbnVhbGx5IHRlc3Qs
IGZvY3VzIHRoZSBib3ggYWJvdmUgYW5kIHZlcmlmeSB0aGF0OjwvcD4KKzx1bD4KKyAgICA8bGk+
VGhlIGNhcmV0IGlzIG5vdCBzaG93bi48L2xpPgorICAgIDxsaT5TZWxlY3Rpb24gaGlnaGxpZ2h0
cyBhcmUgbm90IHNob3duLjwvbGk+CisgICAgPGxpPlRoZSBzZWxlY3Rpb24gY2Fubm90IGJlIGNo
YW5nZWQgdmlhIGdlc3R1cmUuPC9saT4KKzwvdWw+Cis8ZGl2PkNhcmV0IHJlY3QgYWZ0ZXIgZm9j
dXM6IDxzcGFuIGlkPSJjYXJldC1yZWN0Ij48L3NwYW4+PC9kaXY+Cis8ZGl2PlNlbGVjdGlvbiBy
ZWN0cyBhZnRlciBzZWxlY3RpbmcgYWxsOiA8c3BhbiBpZD0ic2VsZWN0aW9uLXJlY3RzIj48L3Nw
YW4+PC9kaXY+Cis8ZGl2PlNlbGVjdGlvbiBzdGFydCBncmFiYmVyIHJlY3QgYWZ0ZXIgc2VsZWN0
aW5nIGFsbDogPHNwYW4gaWQ9InN0YXJ0LWdyYWJiZXItcmVjdCI+PC9zcGFuPjwvZGl2PgorPGRp
dj5TZWxlY3Rpb24gZW5kIGdyYWJiZXIgcmVjdCBhZnRlciBzZWxlY3RpbmcgYWxsOiA8c3BhbiBp
ZD0iZW5kLWdyYWJiZXItcmVjdCI+PC9zcGFuPjwvZGl2PgorPGRpdj5TZWxlY3Rpb24gYmVmb3Jl
IHRhcDogPHNwYW4gaWQ9InNlbGVjdGlvbi1iZWZvcmUiPjwvc3Bhbj48L2Rpdj4KKzxkaXY+U2Vs
ZWN0aW9uIGFmdGVyIHRhcDogPHNwYW4gaWQ9InNlbGVjdGlvbi1hZnRlciI+PC9zcGFuPjwvZGl2
PgorPHNjcmlwdD4KK2Z1bmN0aW9uIHJlY3RUb1N0cmluZyhyZWN0KSB7CisgICAgcmV0dXJuIGAo
bGVmdCA9ICR7TWF0aC5yb3VuZChyZWN0LmxlZnQpfSwgdG9wID0gJHtNYXRoLnJvdW5kKHJlY3Qu
dG9wKX0sIHdpZHRoID0gJHtNYXRoLnJvdW5kKHJlY3Qud2lkdGgpfSwgaGVpZ2h0ID0gJHtNYXRo
LnJvdW5kKHJlY3QuaGVpZ2h0KX0pYDsKK30KKworZnVuY3Rpb24gc2VsZWN0aW9uVG9TdHJpbmco
KSB7CisgICAgY29uc3Qgc2VsZWN0aW9uID0gZ2V0U2VsZWN0aW9uKCk7CisgICAgaWYgKCFzZWxl
Y3Rpb24ucmFuZ2VDb3VudCkKKyAgICAgICAgcmV0dXJuICIobm8gc2VsZWN0aW9uKSI7CisKKyAg
ICBjb25zdCByYW5nZSA9IHNlbGVjdGlvbi5nZXRSYW5nZUF0KDApOworICAgIHJldHVybiBgKCR7
cmFuZ2Uuc3RhcnRDb250YWluZXJ9IyR7cmFuZ2Uuc3RhcnRPZmZzZXR9LCAke3JhbmdlLmVuZENv
bnRhaW5lcn0jJHtyYW5nZS5lbmRPZmZzZXR9KWA7Cit9CisKKyhhc3luYyAoKSA9PiB7CisgICAg
aWYgKCF3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgcmV0dXJuOworCisgICAgdGVzdFJ1bm5l
ci5kdW1wQXNUZXh0KCk7CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisKKyAgICBh
d2FpdCBVSUhlbHBlci5hY3RpdmF0ZUFuZFdhaXRGb3JJbnB1dFNlc3Npb25BdCgxNjAsIDE2MCk7
CisgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiI2NhcmV0LXJlY3QiKS50ZXh0Q29udGVudCA9
IHJlY3RUb1N0cmluZyhhd2FpdCBVSUhlbHBlci5nZXRVSUNhcmV0Vmlld1JlY3QoKSk7CisKKyAg
ICBkb2N1bWVudC5leGVjQ29tbWFuZCgic2VsZWN0QWxsIik7CisgICAgZG9jdW1lbnQucXVlcnlT
ZWxlY3RvcigiI3NlbGVjdGlvbi1yZWN0cyIpLnRleHRDb250ZW50ID0gKGF3YWl0IFVJSGVscGVy
LmdldFVJU2VsZWN0aW9uVmlld1JlY3RzKCkpLm1hcChyZWN0VG9TdHJpbmcpLmpvaW4oIiwgIik7
CisgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiI3N0YXJ0LWdyYWJiZXItcmVjdCIpLnRleHRD
b250ZW50ID0gcmVjdFRvU3RyaW5nKGF3YWl0IFVJSGVscGVyLmdldFNlbGVjdGlvblN0YXJ0R3Jh
YmJlclZpZXdSZWN0KCkpOworICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIiNlbmQtZ3JhYmJl
ci1yZWN0IikudGV4dENvbnRlbnQgPSByZWN0VG9TdHJpbmcoYXdhaXQgVUlIZWxwZXIuZ2V0U2Vs
ZWN0aW9uRW5kR3JhYmJlclZpZXdSZWN0KCkpOworCisgICAgZ2V0U2VsZWN0aW9uKCkuY29sbGFw
c2VUb0VuZCgpOworICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIiNzZWxlY3Rpb24tYmVmb3Jl
IikudGV4dENvbnRlbnQgPSBzZWxlY3Rpb25Ub1N0cmluZygpOworICAgIGF3YWl0IFVJSGVscGVy
LnRhcEF0KDMyLCAzMik7CisgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiI3NlbGVjdGlvbi1h
ZnRlciIpLnRleHRDb250ZW50ID0gc2VsZWN0aW9uVG9TdHJpbmcoKTsKKworICAgIHRlc3RSdW5u
ZXIubm90aWZ5RG9uZSgpOworfSkoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vaW9zL2hpZGUtc2VsZWN0aW9u
LWluLWhpZGRlbi1jb250ZW50ZWRpdGFibGUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZWRp
dGluZy9zZWxlY3Rpb24vaW9zL2hpZGUtc2VsZWN0aW9uLWluLWhpZGRlbi1jb250ZW50ZWRpdGFi
bGUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdmY2U5YzFjZGFlZjEzZWM3ZWI4MmNlYjlhNzJi
ZjI4MTRjNjY5ZjgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVj
dGlvbi9pb3MvaGlkZS1zZWxlY3Rpb24taW4taGlkZGVuLWNvbnRlbnRlZGl0YWJsZS1leHBlY3Rl
ZC50eHQKQEAgLTAsMCArMSwxMiBAQAorSGVyZSdzIHRvIHRoZSBjcmF6eSBvbmVzLCB0aGUgbWlz
Zml0cywgdGhlIHJlYmVscywgdGhlIHRyb3VibGVtYWtlcnMsIHRoZSByb3VuZCBwZWdzIGluIHRo
ZSBzcXVhcmUgaG9sZXMuIFRoZSBvbmVzIHdobyBzZWUgdGhpbmdzIGRpZmZlcmVudGx5LiBUaGV5
J3JlIG5vdCBmb25kIG9mIHJ1bGVzLiBZb3UgY2FuIHF1b3RlIHRoZW0sIGRpc2FncmVlIHdpdGgg
dGhlbSwgZ2xvcmlmeSBvciB2aWxpZnkgdGhlbSwgYnV0IHRoZSBvbmx5IHRoaW5nIHlvdSBjYW4n
dCBkbyBpcyBpZ25vcmUgdGhlbSBiZWNhdXNlIHRoZXkgY2hhbmdlIHRoaW5ncy4KK1ZlcmlmaWVz
IHRoYXQgc2VsZWN0aW9uIFVJIGlzIHN1cHByZXNzZWQgd2hlbiB0aGUgZWRpdGFibGUgcm9vdCBp
cyB0cmFuc3BhcmVudC4gVG8gbWFudWFsbHkgdGVzdCwgZm9jdXMgdGhlIGJveCBhYm92ZSBhbmQg
dmVyaWZ5IHRoYXQ6CisKK1RoZSBjYXJldCBpcyBub3Qgc2hvd24uCitTZWxlY3Rpb24gaGlnaGxp
Z2h0cyBhcmUgbm90IHNob3duLgorVGhlIHNlbGVjdGlvbiBjYW5ub3QgYmUgY2hhbmdlZCB2aWEg
Z2VzdHVyZS4KK0NhcmV0IHJlY3QgYWZ0ZXIgZm9jdXM6IChsZWZ0ID0gMCwgdG9wID0gMCwgd2lk
dGggPSAwLCBoZWlnaHQgPSAwKQorU2VsZWN0aW9uIHJlY3RzIGFmdGVyIHNlbGVjdGluZyBhbGw6
CitTZWxlY3Rpb24gc3RhcnQgZ3JhYmJlciByZWN0IGFmdGVyIHNlbGVjdGluZyBhbGw6IChsZWZ0
ID0gMCwgdG9wID0gMCwgd2lkdGggPSAwLCBoZWlnaHQgPSAwKQorU2VsZWN0aW9uIGVuZCBncmFi
YmVyIHJlY3QgYWZ0ZXIgc2VsZWN0aW5nIGFsbDogKGxlZnQgPSAwLCB0b3AgPSAwLCB3aWR0aCA9
IDAsIGhlaWdodCA9IDApCitTZWxlY3Rpb24gYmVmb3JlIHRhcDogKFtvYmplY3QgVGV4dF0jMzI1
LCBbb2JqZWN0IFRleHRdIzMyNSkKK1NlbGVjdGlvbiBhZnRlciB0YXA6IChbb2JqZWN0IFRleHRd
IzMyNSwgW29iamVjdCBUZXh0XSMzMjUpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5n
L3NlbGVjdGlvbi9pb3MvaGlkZS1zZWxlY3Rpb24taW4taGlkZGVuLWNvbnRlbnRlZGl0YWJsZS1m
cmFtZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9pb3MvaGlk
ZS1zZWxlY3Rpb24taW4taGlkZGVuLWNvbnRlbnRlZGl0YWJsZS1mcmFtZS1leHBlY3RlZC50eHQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZGM3NGRmZTUxYThiMmVlNjE3NjAwMTMzZmI3M2FmZTcyNmZiNGJjYQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2lvcy9oaWRlLXNl
bGVjdGlvbi1pbi1oaWRkZW4tY29udGVudGVkaXRhYmxlLWZyYW1lLWV4cGVjdGVkLnR4dApAQCAt
MCwwICsxLDEyIEBACisKK1ZlcmlmaWVzIHRoYXQgc2VsZWN0aW9uIFVJIGlzIHN1cHByZXNzZWQg
d2hlbiB0aGUgZWRpdGFibGUgcm9vdCBpcyB0cmFuc3BhcmVudC4gVG8gbWFudWFsbHkgdGVzdCwg
Zm9jdXMgdGhlIGJveCBhYm92ZSBhbmQgdmVyaWZ5IHRoYXQ6CisKK1RoZSBjYXJldCBpcyBub3Qg
c2hvd24uCitTZWxlY3Rpb24gaGlnaGxpZ2h0cyBhcmUgbm90IHNob3duLgorVGhlIHNlbGVjdGlv
biBjYW5ub3QgYmUgY2hhbmdlZCB2aWEgZ2VzdHVyZS4KK0NhcmV0IHJlY3QgYWZ0ZXIgZm9jdXM6
IChsZWZ0ID0gMCwgdG9wID0gMCwgd2lkdGggPSAwLCBoZWlnaHQgPSAwKQorU2VsZWN0aW9uIHJl
Y3RzIGFmdGVyIHNlbGVjdGluZyBhbGw6CitTZWxlY3Rpb24gc3RhcnQgZ3JhYmJlciByZWN0IGFm
dGVyIHNlbGVjdGluZyBhbGw6IChsZWZ0ID0gMCwgdG9wID0gMCwgd2lkdGggPSAwLCBoZWlnaHQg
PSAwKQorU2VsZWN0aW9uIGVuZCBncmFiYmVyIHJlY3QgYWZ0ZXIgc2VsZWN0aW5nIGFsbDogKGxl
ZnQgPSAwLCB0b3AgPSAwLCB3aWR0aCA9IDAsIGhlaWdodCA9IDApCitTZWxlY3Rpb24gYmVmb3Jl
IHRhcDogKFtvYmplY3QgVGV4dF0jMzMzLCBbb2JqZWN0IFRleHRdIzMzMykKK1NlbGVjdGlvbiBh
ZnRlciB0YXA6IChbb2JqZWN0IFRleHRdIzMzMywgW29iamVjdCBUZXh0XSMzMzMpCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9pb3MvaGlkZS1zZWxlY3Rpb24taW4t
aGlkZGVuLWNvbnRlbnRlZGl0YWJsZS1mcmFtZS5odG1sIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9z
ZWxlY3Rpb24vaW9zL2hpZGUtc2VsZWN0aW9uLWluLWhpZGRlbi1jb250ZW50ZWRpdGFibGUtZnJh
bWUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40MTM1NWM3M2FjMmU3NDE4YWY5Yjk3ZjkxMTY2NzRlYmM2ZDE2
MWZmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vaW9z
L2hpZGUtc2VsZWN0aW9uLWluLWhpZGRlbi1jb250ZW50ZWRpdGFibGUtZnJhbWUuaHRtbApAQCAt
MCwwICsxLDEyMiBAQAorPCFET0NUWVBFIGh0bWw+IDwhLS0gd2Via2l0LXRlc3QtcnVubmVyIFsg
dXNlRmxleGlibGVWaWV3cG9ydD10cnVlIF0gLS0+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgbmFt
ZT0idmlld3BvcnQiIGNvbnRlbnQ9IndpZHRoPWRldmljZS13aWR0aCwgdXNlci1zY2FsYWJsZT1u
byI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL3VpLWhlbHBlci5qcyI+PC9zY3Jp
cHQ+Cis8c3R5bGU+Citib2R5LCBodG1sIHsKKyAgICB3aWR0aDogMTAwJTsKKyAgICBoZWlnaHQ6
IDEwMCU7CisgICAgbWFyZ2luOiAwOworfQorCisuY29udGFpbmVyIHsKKyAgICB3aWR0aDogMzIw
cHg7CisgICAgaGVpZ2h0OiAzMjBweDsKKyAgICBib3JkZXI6IHNvbGlkIDJweCBzaWx2ZXI7Cisg
ICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKK30KKworaWZyYW1lIHsKKyAgICBvcGFjaXR5OiAw
LjAwMTsKKyAgICB3aWR0aDogaW5oZXJpdDsKKyAgICBoZWlnaHQ6IGluaGVyaXQ7CisgICAgZm9u
dC1zaXplOiAyNHB4OworfQorPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBjbGFzcz0i
Y29udGFpbmVyIj4KKyAgICA8aWZyYW1lIHNyY2RvYz0iCisgICAgICAgIDxoZWFkPgorICAgICAg
ICAgICAgPHN0eWxlPmJvZHksIGh0bWwgeyB3aWR0aDogMTAwJTsgaGVpZ2h0OiAxMDAlOyB9PC9z
dHlsZT4KKyAgICAgICAgICAgIDxzY3JpcHQ+CisgICAgICAgICAgICBmdW5jdGlvbiBzZWxlY3Rp
b25Ub1N0cmluZygpIHsKKyAgICAgICAgICAgICAgICBjb25zdCBzZWxlY3Rpb24gPSBnZXRTZWxl
Y3Rpb24oKTsKKyAgICAgICAgICAgICAgICBpZiAoIXNlbGVjdGlvbi5yYW5nZUNvdW50KQorICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gJyhubyBzZWxlY3Rpb24pJzsKKworICAgICAgICAgICAg
ICAgIGNvbnN0IHJhbmdlID0gc2VsZWN0aW9uLmdldFJhbmdlQXQoMCk7CisgICAgICAgICAgICAg
ICAgcmV0dXJuIGAoJHtyYW5nZS5zdGFydENvbnRhaW5lcn0jJHtyYW5nZS5zdGFydE9mZnNldH0s
ICR7cmFuZ2UuZW5kQ29udGFpbmVyfSMke3JhbmdlLmVuZE9mZnNldH0pYDsKKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgZnVuY3Rpb24gc2VsZWN0QWxsKCkgeworICAgICAgICAgICAgICAg
IGRvY3VtZW50LmV4ZWNDb21tYW5kKCdzZWxlY3RBbGwnKTsKKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgZnVuY3Rpb24gY29sbGFwc2VUb0VuZCgpIHsKKyAgICAgICAgICAgICAgICBnZXRT
ZWxlY3Rpb24oKS5jb2xsYXBzZVRvRW5kKCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3NlbGVjdGlvbmNoYW5nZScsICgpID0+IHBhcmVu
dC5wb3N0TWVzc2FnZShzZWxlY3Rpb25Ub1N0cmluZygpLCAnKicpKTsKKyAgICAgICAgICAgIDwv
c2NyaXB0PgorICAgICAgICA8L2hlYWQ+CisgICAgICAgIDxib2R5IGNvbnRlbnRlZGl0YWJsZT4K
KyAgICAgICAgICAgIEhlcmUncyB0byB0aGUgY3Jhenkgb25lcywgdGhlIG1pc2ZpdHMsIHRoZSBy
ZWJlbHMsIHRoZSB0cm91YmxlbWFrZXJzLCB0aGUgcm91bmQgcGVncyBpbiB0aGUgc3F1YXJlIGhv
bGVzLgorICAgICAgICAgICAgVGhlIG9uZXMgd2hvIHNlZSB0aGluZ3MgZGlmZmVyZW50bHkuIFRo
ZXkncmUgbm90IGZvbmQgb2YgcnVsZXMuIFlvdSBjYW4gcXVvdGUgdGhlbSwgZGlzYWdyZWUgd2l0
aCB0aGVtLCBnbG9yaWZ5IG9yIHZpbGlmeSB0aGVtLCBidXQgdGhlIG9ubHkgdGhpbmcgeW91IGNh
bid0IGRvIGlzIGlnbm9yZSB0aGVtIGJlY2F1c2UgdGhleSBjaGFuZ2UgdGhpbmdzLgorICAgICAg
ICA8L2JvZHk+IiBvbmxvYWQ9InJ1blRlc3QoKSI+PC9pZnJhbWU+Cis8L2Rpdj4KKzxwPlZlcmlm
aWVzIHRoYXQgc2VsZWN0aW9uIFVJIGlzIHN1cHByZXNzZWQgd2hlbiB0aGUgZWRpdGFibGUgcm9v
dCBpcyB0cmFuc3BhcmVudC4gVG8gbWFudWFsbHkgdGVzdCwgZm9jdXMgdGhlIGJveCBhYm92ZSBh
bmQgdmVyaWZ5IHRoYXQ6PC9wPgorPHVsPgorICAgIDxsaT5UaGUgY2FyZXQgaXMgbm90IHNob3du
LjwvbGk+CisgICAgPGxpPlNlbGVjdGlvbiBoaWdobGlnaHRzIGFyZSBub3Qgc2hvd24uPC9saT4K
KyAgICA8bGk+VGhlIHNlbGVjdGlvbiBjYW5ub3QgYmUgY2hhbmdlZCB2aWEgZ2VzdHVyZS48L2xp
PgorPC91bD4KKzxkaXY+Q2FyZXQgcmVjdCBhZnRlciBmb2N1czogPHNwYW4gaWQ9ImNhcmV0LXJl
Y3QiPjwvc3Bhbj48L2Rpdj4KKzxkaXY+U2VsZWN0aW9uIHJlY3RzIGFmdGVyIHNlbGVjdGluZyBh
bGw6IDxzcGFuIGlkPSJzZWxlY3Rpb24tcmVjdHMiPjwvc3Bhbj48L2Rpdj4KKzxkaXY+U2VsZWN0
aW9uIHN0YXJ0IGdyYWJiZXIgcmVjdCBhZnRlciBzZWxlY3RpbmcgYWxsOiA8c3BhbiBpZD0ic3Rh
cnQtZ3JhYmJlci1yZWN0Ij48L3NwYW4+PC9kaXY+Cis8ZGl2PlNlbGVjdGlvbiBlbmQgZ3JhYmJl
ciByZWN0IGFmdGVyIHNlbGVjdGluZyBhbGw6IDxzcGFuIGlkPSJlbmQtZ3JhYmJlci1yZWN0Ij48
L3NwYW4+PC9kaXY+Cis8ZGl2PlNlbGVjdGlvbiBiZWZvcmUgdGFwOiA8c3BhbiBpZD0ic2VsZWN0
aW9uLWJlZm9yZSI+PC9zcGFuPjwvZGl2PgorPGRpdj5TZWxlY3Rpb24gYWZ0ZXIgdGFwOiA8c3Bh
biBpZD0ic2VsZWN0aW9uLWFmdGVyIj48L3NwYW4+PC9kaXY+Cis8c2NyaXB0PgorY3VycmVudFNl
bGVjdGlvbkFzU3RyaW5nID0gIiI7CitjdXJyZW50U2VsZWN0aW9uQ2hhbmdlQ291bnQgPSAwOwor
bG9hZENvdW50ID0gMDsKKworYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsIHJ1blRlc3QpOworYWRk
RXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsIGV2ZW50ID0+IHsKKyAgICB3aW5kb3cuY3VycmVudFNl
bGVjdGlvbkFzU3RyaW5nID0gZXZlbnQuZGF0YTsKKyAgICBjdXJyZW50U2VsZWN0aW9uQ2hhbmdl
Q291bnQrKzsKK30pOworCitmdW5jdGlvbiByZWN0VG9TdHJpbmcocmVjdCkgeworICAgIHJldHVy
biBgKGxlZnQgPSAke01hdGgucm91bmQocmVjdC5sZWZ0KX0sIHRvcCA9ICR7TWF0aC5yb3VuZChy
ZWN0LnRvcCl9LCB3aWR0aCA9ICR7TWF0aC5yb3VuZChyZWN0LndpZHRoKX0sIGhlaWdodCA9ICR7
TWF0aC5yb3VuZChyZWN0LmhlaWdodCl9KWA7Cit9CisKK2FzeW5jIGZ1bmN0aW9uIHdhaXRGb3JT
ZWxlY3Rpb25DaGFuZ2VJblN1YmZyYW1lKGFjdGlvbnMpCit7CisgICAgY29uc3QgcHJldmlvdXNT
ZWxlY3Rpb25DaGFuZ2VDb3VudCA9IGN1cnJlbnRTZWxlY3Rpb25DaGFuZ2VDb3VudDsKKyAgICBh
Y3Rpb25zKCk7CisgICAgd2hpbGUgKHByZXZpb3VzU2VsZWN0aW9uQ2hhbmdlQ291bnQgPT0gY3Vy
cmVudFNlbGVjdGlvbkNoYW5nZUNvdW50KQorICAgICAgICBhd2FpdCBuZXcgUHJvbWlzZShyZXF1
ZXN0QW5pbWF0aW9uRnJhbWUpOworfQorCithc3luYyBmdW5jdGlvbiBydW5UZXN0KCkgeworICAg
IGlmICgrK2xvYWRDb3VudCA8IDIpCisgICAgICAgIHJldHVybjsKKworICAgIGlmICghd2luZG93
LnRlc3RSdW5uZXIpCisgICAgICAgIHJldHVybjsKKworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4
dCgpOworICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworCisgICAgYXdhaXQgd2FpdEZv
clNlbGVjdGlvbkNoYW5nZUluU3ViZnJhbWUoYXN5bmMgKCkgPT4gYXdhaXQgVUlIZWxwZXIuYWN0
aXZhdGVBbmRXYWl0Rm9ySW5wdXRTZXNzaW9uQXQoMTYwLCAxNjApKTsKKyAgICBkb2N1bWVudC5x
dWVyeVNlbGVjdG9yKCIjY2FyZXQtcmVjdCIpLnRleHRDb250ZW50ID0gcmVjdFRvU3RyaW5nKGF3
YWl0IFVJSGVscGVyLmdldFVJQ2FyZXRWaWV3UmVjdCgpKTsKKworICAgIGF3YWl0IHdhaXRGb3JT
ZWxlY3Rpb25DaGFuZ2VJblN1YmZyYW1lKCgpID0+IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoImlm
cmFtZSIpLmNvbnRlbnRXaW5kb3cuc2VsZWN0QWxsKCkpOworICAgIGRvY3VtZW50LnF1ZXJ5U2Vs
ZWN0b3IoIiNzdGFydC1ncmFiYmVyLXJlY3QiKS50ZXh0Q29udGVudCA9IHJlY3RUb1N0cmluZyhh
d2FpdCBVSUhlbHBlci5nZXRTZWxlY3Rpb25TdGFydEdyYWJiZXJWaWV3UmVjdCgpKTsKKyAgICBk
b2N1bWVudC5xdWVyeVNlbGVjdG9yKCIjZW5kLWdyYWJiZXItcmVjdCIpLnRleHRDb250ZW50ID0g
cmVjdFRvU3RyaW5nKGF3YWl0IFVJSGVscGVyLmdldFNlbGVjdGlvbkVuZEdyYWJiZXJWaWV3UmVj
dCgpKTsKKworICAgIGF3YWl0IHdhaXRGb3JTZWxlY3Rpb25DaGFuZ2VJblN1YmZyYW1lKCgpID0+
IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoImlmcmFtZSIpLmNvbnRlbnRXaW5kb3cuY29sbGFwc2VU
b0VuZCgpKTsKKyAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIjc2VsZWN0aW9uLWJlZm9yZSIp
LnRleHRDb250ZW50ID0gY3VycmVudFNlbGVjdGlvbkFzU3RyaW5nOworCisgICAgYXdhaXQgVUlI
ZWxwZXIudGFwQXQoMzIsIDMyKTsKKyAgICBhd2FpdCBuZXcgUHJvbWlzZShyZXF1ZXN0QW5pbWF0
aW9uRnJhbWUpOworICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIiNzZWxlY3Rpb24tYWZ0ZXIi
KS50ZXh0Q29udGVudCA9IGN1cnJlbnRTZWxlY3Rpb25Bc1N0cmluZzsKKworICAgIHRlc3RSdW5u
ZXIubm90aWZ5RG9uZSgpOworfQorPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9pb3MvaGlkZS1zZWxlY3Rpb24taW4t
aGlkZGVuLWNvbnRlbnRlZGl0YWJsZS5odG1sIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rp
b24vaW9zL2hpZGUtc2VsZWN0aW9uLWluLWhpZGRlbi1jb250ZW50ZWRpdGFibGUuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5lMWIwOTM2NzUxNTc3Yjg0MmFhNjI0Y2U5Y2E2YWZlM2Q0M2E3ZDM5Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vaW9zL2hpZGUtc2VsZWN0
aW9uLWluLWhpZGRlbi1jb250ZW50ZWRpdGFibGUuaHRtbApAQCAtMCwwICsxLDg1IEBACis8IURP
Q1RZUEUgaHRtbD4gPCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIgWyB1c2VGbGV4aWJsZVZpZXdwb3J0
PXRydWUgXSAtLT4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVu
dD0id2lkdGg9ZGV2aWNlLXdpZHRoLCB1c2VyLXNjYWxhYmxlPW5vIj4KKzxzY3JpcHQgc3JjPSIu
Li8uLi8uLi9yZXNvdXJjZXMvdWktaGVscGVyLmpzIj48L3NjcmlwdD4KKzxzdHlsZT4KK2JvZHks
IGh0bWwgeworICAgIHdpZHRoOiAxMDAlOworICAgIGhlaWdodDogMTAwJTsKKyAgICBtYXJnaW46
IDA7Cit9CisKKy5jb250YWluZXIgeworICAgIHdpZHRoOiAzMjBweDsKKyAgICBoZWlnaHQ6IDMy
MHB4OworICAgIGJvcmRlcjogc29saWQgMnB4IHNpbHZlcjsKKyAgICBib3gtc2l6aW5nOiBib3Jk
ZXItYm94OworfQorCisjZWRpdG9yIHsKKyAgICBvcGFjaXR5OiAwLjAwMTsKKyAgICB3aWR0aDog
aW5oZXJpdDsKKyAgICBoZWlnaHQ6IGluaGVyaXQ7CisgICAgZm9udC1zaXplOiAyNHB4OworfQor
PC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBjbGFzcz0iY29udGFpbmVyIj4KKyAgICA8
ZGl2IGlkPSJlZGl0b3IiIGNvbnRlbnRlZGl0YWJsZT4KKyAgICAgICAgSGVyZSdzIHRvIHRoZSBj
cmF6eSBvbmVzLCB0aGUgbWlzZml0cywgdGhlIHJlYmVscywgdGhlIHRyb3VibGVtYWtlcnMsIHRo
ZSByb3VuZCBwZWdzIGluIHRoZSBzcXVhcmUgaG9sZXMuCisgICAgICAgIFRoZSBvbmVzIHdobyBz
ZWUgdGhpbmdzIGRpZmZlcmVudGx5LiBUaGV5J3JlIG5vdCBmb25kIG9mIHJ1bGVzLiBZb3UgY2Fu
IHF1b3RlIHRoZW0sIGRpc2FncmVlIHdpdGggdGhlbSwgZ2xvcmlmeSBvciB2aWxpZnkgdGhlbSwg
YnV0IHRoZSBvbmx5IHRoaW5nIHlvdSBjYW4ndCBkbyBpcyBpZ25vcmUgdGhlbSBiZWNhdXNlIHRo
ZXkgY2hhbmdlIHRoaW5ncy4KKyAgICA8L2Rpdj4KKzwvZGl2PgorPHA+VmVyaWZpZXMgdGhhdCBz
ZWxlY3Rpb24gVUkgaXMgc3VwcHJlc3NlZCB3aGVuIHRoZSBlZGl0YWJsZSByb290IGlzIHRyYW5z
cGFyZW50LiBUbyBtYW51YWxseSB0ZXN0LCBmb2N1cyB0aGUgYm94IGFib3ZlIGFuZCB2ZXJpZnkg
dGhhdDo8L3A+Cis8dWw+CisgICAgPGxpPlRoZSBjYXJldCBpcyBub3Qgc2hvd24uPC9saT4KKyAg
ICA8bGk+U2VsZWN0aW9uIGhpZ2hsaWdodHMgYXJlIG5vdCBzaG93bi48L2xpPgorICAgIDxsaT5U
aGUgc2VsZWN0aW9uIGNhbm5vdCBiZSBjaGFuZ2VkIHZpYSBnZXN0dXJlLjwvbGk+Cis8L3VsPgor
PGRpdj5DYXJldCByZWN0IGFmdGVyIGZvY3VzOiA8c3BhbiBpZD0iY2FyZXQtcmVjdCI+PC9zcGFu
PjwvZGl2PgorPGRpdj5TZWxlY3Rpb24gcmVjdHMgYWZ0ZXIgc2VsZWN0aW5nIGFsbDogPHNwYW4g
aWQ9InNlbGVjdGlvbi1yZWN0cyI+PC9zcGFuPjwvZGl2PgorPGRpdj5TZWxlY3Rpb24gc3RhcnQg
Z3JhYmJlciByZWN0IGFmdGVyIHNlbGVjdGluZyBhbGw6IDxzcGFuIGlkPSJzdGFydC1ncmFiYmVy
LXJlY3QiPjwvc3Bhbj48L2Rpdj4KKzxkaXY+U2VsZWN0aW9uIGVuZCBncmFiYmVyIHJlY3QgYWZ0
ZXIgc2VsZWN0aW5nIGFsbDogPHNwYW4gaWQ9ImVuZC1ncmFiYmVyLXJlY3QiPjwvc3Bhbj48L2Rp
dj4KKzxkaXY+U2VsZWN0aW9uIGJlZm9yZSB0YXA6IDxzcGFuIGlkPSJzZWxlY3Rpb24tYmVmb3Jl
Ij48L3NwYW4+PC9kaXY+Cis8ZGl2PlNlbGVjdGlvbiBhZnRlciB0YXA6IDxzcGFuIGlkPSJzZWxl
Y3Rpb24tYWZ0ZXIiPjwvc3Bhbj48L2Rpdj4KKzxzY3JpcHQ+CitmdW5jdGlvbiByZWN0VG9TdHJp
bmcocmVjdCkgeworICAgIHJldHVybiBgKGxlZnQgPSAke01hdGgucm91bmQocmVjdC5sZWZ0KX0s
IHRvcCA9ICR7TWF0aC5yb3VuZChyZWN0LnRvcCl9LCB3aWR0aCA9ICR7TWF0aC5yb3VuZChyZWN0
LndpZHRoKX0sIGhlaWdodCA9ICR7TWF0aC5yb3VuZChyZWN0LmhlaWdodCl9KWA7Cit9CisKK2Z1
bmN0aW9uIHNlbGVjdGlvblRvU3RyaW5nKCkgeworICAgIGNvbnN0IHNlbGVjdGlvbiA9IGdldFNl
bGVjdGlvbigpOworICAgIGlmICghc2VsZWN0aW9uLnJhbmdlQ291bnQpCisgICAgICAgIHJldHVy
biAiKG5vIHNlbGVjdGlvbikiOworCisgICAgY29uc3QgcmFuZ2UgPSBzZWxlY3Rpb24uZ2V0UmFu
Z2VBdCgwKTsKKyAgICByZXR1cm4gYCgke3JhbmdlLnN0YXJ0Q29udGFpbmVyfSMke3JhbmdlLnN0
YXJ0T2Zmc2V0fSwgJHtyYW5nZS5lbmRDb250YWluZXJ9IyR7cmFuZ2UuZW5kT2Zmc2V0fSlgOwor
fQorCisoYXN5bmMgKCkgPT4geworICAgIGlmICghd2luZG93LnRlc3RSdW5uZXIpCisgICAgICAg
IHJldHVybjsKKworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgIHRlc3RSdW5uZXIu
d2FpdFVudGlsRG9uZSgpOworCisgICAgYXdhaXQgVUlIZWxwZXIuYWN0aXZhdGVBbmRXYWl0Rm9y
SW5wdXRTZXNzaW9uQXQoMTYwLCAxNjApOworICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIiNj
YXJldC1yZWN0IikudGV4dENvbnRlbnQgPSByZWN0VG9TdHJpbmcoYXdhaXQgVUlIZWxwZXIuZ2V0
VUlDYXJldFZpZXdSZWN0KCkpOworCisgICAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoInNlbGVjdEFs
bCIpOworICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIiNzZWxlY3Rpb24tcmVjdHMiKS50ZXh0
Q29udGVudCA9IChhd2FpdCBVSUhlbHBlci5nZXRVSVNlbGVjdGlvblZpZXdSZWN0cygpKS5tYXAo
cmVjdFRvU3RyaW5nKS5qb2luKCIsICIpOworICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIiNz
dGFydC1ncmFiYmVyLXJlY3QiKS50ZXh0Q29udGVudCA9IHJlY3RUb1N0cmluZyhhd2FpdCBVSUhl
bHBlci5nZXRTZWxlY3Rpb25TdGFydEdyYWJiZXJWaWV3UmVjdCgpKTsKKyAgICBkb2N1bWVudC5x
dWVyeVNlbGVjdG9yKCIjZW5kLWdyYWJiZXItcmVjdCIpLnRleHRDb250ZW50ID0gcmVjdFRvU3Ry
aW5nKGF3YWl0IFVJSGVscGVyLmdldFNlbGVjdGlvbkVuZEdyYWJiZXJWaWV3UmVjdCgpKTsKKwor
ICAgIGdldFNlbGVjdGlvbigpLmNvbGxhcHNlVG9FbmQoKTsKKyAgICBkb2N1bWVudC5xdWVyeVNl
bGVjdG9yKCIjc2VsZWN0aW9uLWJlZm9yZSIpLnRleHRDb250ZW50ID0gc2VsZWN0aW9uVG9TdHJp
bmcoKTsKKyAgICBhd2FpdCBVSUhlbHBlci50YXBBdCgzMiwgMzIpOworICAgIGRvY3VtZW50LnF1
ZXJ5U2VsZWN0b3IoIiNzZWxlY3Rpb24tYWZ0ZXIiKS50ZXh0Q29udGVudCA9IHNlbGVjdGlvblRv
U3RyaW5nKCk7CisKKyAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKK30pKCk7Cis8L3Njcmlw
dD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3Jlc291cmNlcy91
aS1oZWxwZXIuanMgYi9MYXlvdXRUZXN0cy9yZXNvdXJjZXMvdWktaGVscGVyLmpzCmluZGV4IGFl
NzBmMDNkZDMxYmRkYjgzNGVjYWUxMjBhZGRlODM5YTQ3ZDhkZjAuLmYwOTY1OTFhZDAxMjNmMzg1
YjU3NTE0M2QyZGM5YTQxNDNhOGIxZWEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3Jlc291cmNl
cy91aS1oZWxwZXIuanMKKysrIGIvTGF5b3V0VGVzdHMvcmVzb3VyY2VzL3VpLWhlbHBlci5qcwpA
QCAtMTYzLDYgKzE2MywzOCBAQCB3aW5kb3cuVUlIZWxwZXIgPSBjbGFzcyBVSUhlbHBlciB7CiAg
ICAgfQogCiAgICAgc3RhdGljIGdldFVJU2VsZWN0aW9uUmVjdHMoKQorICAgIHsKKyAgICAgICAg
aWYgKCF0aGlzLmlzV2ViS2l0MigpIHx8ICF0aGlzLmlzSU9TKCkpCisgICAgICAgICAgICByZXR1
cm4gUHJvbWlzZS5yZXNvbHZlKCk7CisKKyAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29s
dmUgPT4geworICAgICAgICAgICAgdGVzdFJ1bm5lci5ydW5VSVNjcmlwdChgKGZ1bmN0aW9uKCkg
eworICAgICAgICAgICAgICAgIHVpQ29udHJvbGxlci5kb0FmdGVyTmV4dFN0YWJsZVByZXNlbnRh
dGlvblVwZGF0ZShmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICAgICAgdWlDb250cm9sbGVy
LnVpU2NyaXB0Q29tcGxldGUoSlNPTi5zdHJpbmdpZnkodWlDb250cm9sbGVyLnRleHRTZWxlY3Rp
b25SYW5nZVJlY3RzKSk7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9KSgpYCwg
anNvblN0cmluZyA9PiB7CisgICAgICAgICAgICAgICAgcmVzb2x2ZShKU09OLnBhcnNlKGpzb25T
dHJpbmcpKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9KTsKKyAgICB9CisKKyAgICBzdGF0
aWMgZ2V0VUlDYXJldFZpZXdSZWN0KCkKKyAgICB7CisgICAgICAgIGlmICghdGhpcy5pc1dlYktp
dDIoKSB8fCAhdGhpcy5pc0lPUygpKQorICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2
ZSgpOworCisgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHsKKyAgICAgICAg
ICAgIHRlc3RSdW5uZXIucnVuVUlTY3JpcHQoYChmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAg
ICB1aUNvbnRyb2xsZXIuZG9BZnRlck5leHRTdGFibGVQcmVzZW50YXRpb25VcGRhdGUoZnVuY3Rp
b24oKSB7CisgICAgICAgICAgICAgICAgICAgIHVpQ29udHJvbGxlci51aVNjcmlwdENvbXBsZXRl
KEpTT04uc3RyaW5naWZ5KHVpQ29udHJvbGxlci5zZWxlY3Rpb25DYXJldFZpZXdSZWN0KSk7Cisg
ICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9KSgpYCwganNvblN0cmluZyA9PiB7Cisg
ICAgICAgICAgICAgICAgcmVzb2x2ZShKU09OLnBhcnNlKGpzb25TdHJpbmcpKTsKKyAgICAgICAg
ICAgIH0pOworICAgICAgICB9KTsKKyAgICB9CisKKyAgICBzdGF0aWMgZ2V0VUlTZWxlY3Rpb25W
aWV3UmVjdHMoKQogICAgIHsKICAgICAgICAgaWYgKCF0aGlzLmlzV2ViS2l0MigpIHx8ICF0aGlz
LmlzSU9TKCkpCiAgICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>