<?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>211521</bug_id>
          
          <creation_ts>2020-05-06 11:26:09 -0700</creation_ts>
          <short_desc>REGRESSION (r253267): issues on touchstart/touchend/touchmove (pointerdown/pointerup/pointermove) events</short_desc>
          <delta_ts>2020-05-11 09:23:01 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>UI Events</component>
          <version>Safari 13</version>
          <rep_platform>iPhone / iPad</rep_platform>
          <op_sys>iOS 13</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Critical</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="juwagn">juwagn</reporter>
          <assigned_to name="Wenson Hsieh">wenson_hsieh</assigned_to>
          <cc>bdakin</cc>
    
    <cc>darin</cc>
    
    <cc>graouts</cc>
    
    <cc>juwagn</cc>
    
    <cc>megan_gardner</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>1649714</commentid>
    <comment_count>0</comment_count>
    <who name="juwagn">juwagn</who>
    <bug_when>2020-05-06 11:26:09 -0700</bug_when>
    <thetext>Hello,

on latest iOS update 13.4.1 with Safari the bug with fast touch sequences came back once it was fixed on 2019-11-14, but now exactly same bug is back again!
In the similar ticket number 203786 the bug link contains already full description.
That breaks behavior of our software totally compared as example to Android browsers since touchstart/touchend gets detected in sequence, and by fast sequence when it gets detected as dblclick then touchstart and touchend stay unfired!
That can&apos;t be replaced by dblclick since in this sequence i need to move finger after non-fired touchstart event but since on new Safari it gets not reported the functionality gets broken.
There is in fact no need to create extra reproducer case since issue is reproducible always, touch the screen fast two times in sequence and only one event gets fired instead expected two.
Is there any chance to return back this functionality? Or at least register specific new event name that would be fired regardless of dblclick detection where i could recognize that finger was touched/untouched or moved while being fast touched two times in sequence?
I just did not expect that same issue would come back after being reported and fixed already!

https://bugs.webkit.org/show_bug.cgi?id=203786
--------
The touch sequence: finger touch &gt; finger release &gt; finger touch &gt; finger move &gt; finger release, where last 3 event types get not reported to event handling. 
On earlier iOS versions like iOS12 the sequence above fired following events:
1. touchstart
2. touchend 
3. touchstart (in fast sequence to previous touchend)
4. touchmove
5. touchend (when moving ended)

On new iOS 13 versions on tested iPad only first two
1. touchstart
2. touchend 
3. ---- not fired&gt; touchstart  (in fast sequence to previous touchend) 
4. ---- not fired&gt; touchmove
5. ---- not fired&gt; touchend 
In such case not event dblclick gets fired.

Unfortunatelly unreported &quot;dbl-touch and move&quot; breaks functionality of our software. Pointer events have same issue like touch events, they are not propagated to DOM if detected by iOS as potential dblclick even if moved between.
-----</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1649756</commentid>
    <comment_count>1</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2020-05-06 12:53:07 -0700</bug_when>
    <thetext>This could well be a dupe of bug 211179.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1649758</commentid>
    <comment_count>2</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-05-06 12:53:28 -0700</bug_when>
    <thetext>&lt;rdar://problem/62942374&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1649760</commentid>
    <comment_count>3</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2020-05-06 12:57:42 -0700</bug_when>
    <thetext>Hi juwagn. There is no test attached for either this bug nor bug 203786. It would help a great deal if you could provide us with one. Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1649826</commentid>
    <comment_count>4</comment_count>
      <attachid>398666</attachid>
    <who name="juwagn">juwagn</who>
    <bug_when>2020-05-06 14:58:42 -0700</bug_when>
    <thetext>Created attachment 398666
reproducer requested

How to reproduce

Safari on iOS 13.4.1 open bug_reproducer.html

1. finger touch (touchstart fired)
2. finger remove (touchend fired)
3. - execute next steps immediately like by double click -
4. finger touch (NO touchstart fired)
5. finger MOVE (NO touchmove fired)
6. finger remove (NO touchend fired)
In this scenario 4-6. steps are not anymore fired.

Same way Android Chrome fires 4.-6. steps correctly, and even more double touch increases on Android Chrome amount of fired touchstart/touchend events always by 2 event sequences(2start and 2end) as expected. But iOS 13.4.1 Safari fires always only one event sequence (1start and 1end).
This is serious bug in detection of &quot;double touch move&quot; gesture in our application.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1649844</commentid>
    <comment_count>5</comment_count>
    <who name="juwagn">juwagn</who>
    <bug_when>2020-05-06 15:12:58 -0700</bug_when>
    <thetext>Forgot to add, use &quot;white&quot; area for touching and use always one finger only!

In my description above &quot;move event&quot; won&apos;t be fired anyway, I didn&apos;t insert the extended handling for doing this, but that doesn&apos;t matter anyway, compared to Android Chrome the &quot;6. finger remove (NO touchend fired)&quot; will be fired by Android Chrome with noticeable change while Safari fires nothing here.
Expected would be firing of &quot;touchstart&quot; &quot;touchend&quot; &quot;touchmove&quot; events same way as on all common browsers like Android Chrome, Android FireFox etc.

I use &quot;passive&quot;: false on addEventListener, so i don&apos;t care about scrolling acceleration since no page scrolling used, so &quot;passive&quot;: false is wished behavior and should stay .preventDefault() preventable event.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1650032</commentid>
    <comment_count>6</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2020-05-07 03:39:50 -0700</bug_when>
    <thetext>Thanks for the test case! I managed to track down the regression to r253267, the fix for bug 204664. We already fixed a regression related to this bug in bug 211179, but this seems to be another aspect of the original regression that wasn&apos;t dealt with yet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1651020</commentid>
    <comment_count>7</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2020-05-09 18:11:40 -0700</bug_when>
    <thetext>I’ve begun to investigate this.

One interesting thing I noticed is that the bug only seems to reproduce if the viewport is not responsive; adding something like:

&lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1&quot;&gt;

seems to make the problem go away (at least, until the user manually pinches to zoom in).

This seems like bad interaction between the relatively new deferring gesture recognizers (WKDeferringGestureRecognizer) and the blocking double tap gesture recognizer (used when fast-clicking is disabled).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1651186</commentid>
    <comment_count>8</comment_count>
      <attachid>398999</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2020-05-10 23:00:37 -0700</bug_when>
    <thetext>Created attachment 398999
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1651194</commentid>
    <comment_count>9</comment_count>
      <attachid>398999</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-05-10 23:37:59 -0700</bug_when>
    <thetext>Comment on attachment 398999
Patch

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

&gt; Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm:719
&gt; +- (NSArray&lt;WKDeferringGestureRecognizer *&gt; *)_deferringGestureRecognizers

I think this needs to go inside:

    #if ENABLE(IOS_TOUCH_EVENTS)

&gt; Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm:728
&gt; +    NSMutableArray *deferringGestureRecognizers = [NSMutableArray arrayWithCapacity:3];
&gt; +    if (_deferringGestureRecognizerForImmediatelyResettableGestures)
&gt; +        [deferringGestureRecognizers addObject:_deferringGestureRecognizerForImmediatelyResettableGestures.get()];
&gt; +    if (_deferringGestureRecognizerForDelayedResettableGestures)
&gt; +        [deferringGestureRecognizers addObject:_deferringGestureRecognizerForDelayedResettableGestures.get()];
&gt; +    if (_deferringGestureRecognizerForSyntheticTapGestures)
&gt; +        [deferringGestureRecognizers addObject:_deferringGestureRecognizerForSyntheticTapGestures.get()];
&gt; +    return deferringGestureRecognizers;

There are more efficient ways to do this than using an NSMutableArray. The simplest I can think of is to use a C array. Something like this:

    WKDeferringGestureRecognizer *recognizers[3];
    NSUInteger count = 0;
    auto add = [&amp;] (const RetainPtr&lt;WKDeferringGestureRecognizer&gt;&amp; recognizer) {
        if (recognizer)
            recognizers[count++] = recognizer.get();
    };
    add(_deferringGestureRecognizerForImmediatelyResettableGestures);
    add(_deferringGestureRecognizerForDelayedResettableGestures);
    add(_deferringGestureRecognizerForSyntheticTapGestures);
    return [[NSArray arrayWithObjects:recognizers count:count];

That’s more lines of code, but it always seems better to me not to use a mutable array.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1651277</commentid>
    <comment_count>10</comment_count>
      <attachid>398999</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2020-05-11 08:11:28 -0700</bug_when>
    <thetext>Comment on attachment 398999
Patch

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

&gt;&gt; Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm:719
&gt;&gt; +- (NSArray&lt;WKDeferringGestureRecognizer *&gt; *)_deferringGestureRecognizers
&gt; 
&gt; I think this needs to go inside:
&gt; 
&gt;     #if ENABLE(IOS_TOUCH_EVENTS)

Oops! Yes, that’s correct.

&gt;&gt; Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm:728
&gt;&gt; +    return deferringGestureRecognizers;
&gt; 
&gt; There are more efficient ways to do this than using an NSMutableArray. The simplest I can think of is to use a C array. Something like this:
&gt; 
&gt;     WKDeferringGestureRecognizer *recognizers[3];
&gt;     NSUInteger count = 0;
&gt;     auto add = [&amp;] (const RetainPtr&lt;WKDeferringGestureRecognizer&gt;&amp; recognizer) {
&gt;         if (recognizer)
&gt;             recognizers[count++] = recognizer.get();
&gt;     };
&gt;     add(_deferringGestureRecognizerForImmediatelyResettableGestures);
&gt;     add(_deferringGestureRecognizerForDelayedResettableGestures);
&gt;     add(_deferringGestureRecognizerForSyntheticTapGestures);
&gt;     return [[NSArray arrayWithObjects:recognizers count:count];
&gt; 
&gt; That’s more lines of code, but it always seems better to me not to use a mutable array.

I’ll give this a shot — thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1651279</commentid>
    <comment_count>11</comment_count>
      <attachid>399022</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2020-05-11 08:50:16 -0700</bug_when>
    <thetext>Created attachment 399022
For EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1651288</commentid>
    <comment_count>12</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-05-11 09:23:01 -0700</bug_when>
    <thetext>Committed r261480: &lt;https://trac.webkit.org/changeset/261480&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 399022.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>398666</attachid>
            <date>2020-05-06 14:58:42 -0700</date>
            <delta_ts>2020-05-06 14:58:42 -0700</delta_ts>
            <desc>reproducer requested</desc>
            <filename>bug_reproducer.html</filename>
            <type>text/html</type>
            <size>2521</size>
            <attacher name="juwagn">juwagn</attacher>
            
              <data encoding="base64">PCFET0NUWVBFIGh0bWw+DQo8aHRtbD4NCjxoZWFkPg0KPG1ldGEgaHR0cC1lcXVpdj0ieC11YS1j
b21wYXRpYmxlIiBjb250ZW50PSJJRT1lZGdlLCBjaHJvbWU9MSIgLz4NCjxtZXRhIGNvbnRlbnQ9
InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCIgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiAvPg0K
PG1ldGEgaHR0cC1lcXVpdj0iY2FjaGUtY29udHJvbCIgY29udGVudD0ibWF4LWFnZT0wLCBuby1j
YWNoZSIgLz4NCjxtZXRhIGh0dHAtZXF1aXY9ImV4cGlyZXMiIGNvbnRlbnQ9IlR1ZSwgMDEgSmFu
IDE5ODAgMTowMDowMCBHTVQiIC8+DQo8bWV0YSBodHRwLWVxdWl2PSJwcmFnbWEiIGNvbnRlbnQ9
Im5vLWNhY2hlIiAvPg0KPG1ldGEgbmFtZT0ibXNhcHBsaWNhdGlvbi10YXAtaGlnaGxpZ2h0IiBj
b250ZW50PSJubyIgLz4NCjxtZXRhIG5hbWU9Im1vYmlsZS13ZWItYXBwLWNhcGFibGUiIGNvbnRl
bnQ9InllcyIgLz4NCjxtZXRhIG5hbWU9ImFwcGxlLW1vYmlsZS13ZWItYXBwLWNhcGFibGUiIGNv
bnRlbnQ9InllcyIgLz4NCjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+DQojRklSU1RfTEVWRUwsICNG
SVJTVF9MRVZFTCAqIHsgLW1zLWNvbnRlbnQtem9vbWluZzogbm9uZSAhaW1wb3J0YW50OyB9DQoj
U0VDT05EX0xFVkVMIHsgY3Vyc29yOiBkZWZhdWx0OyB9DQouRklSU1RfTEVWRUxjbGFzcyBkaXYg
eyB3aGl0ZS1zcGFjZTogbm93cmFwOyB9DQo8L3N0eWxlPg0KPHNjcmlwdCB0eXBlPSJ0ZXh0L2ph
dmFzY3JpcHQiPg0KIHZhciBXSU5ET1csIEQ7IChmdW5jdGlvbigpIHsgV0lORE9XID0gd2luZG93
OyBEID0gZG9jdW1lbnQ7IH0pKCk7DQogV0lORE9XLm9uZXJyb3IgPSBmdW5jdGlvbihhLCBiKSB7
IGFsZXJ0KGEgKyAiPiIgKyBiKTsgfTsNCg0KIFdJTkRPVy5sb2FkTWUgPSBmdW5jdGlvbih4KSB7
DQogICBELmJvZHlbImlubmVySFRNTCJdID0gJzxkaXYgaWQ9IkZJUlNUX0xFVkVMIiBjbGFzcz0i
RklSU1RfTEVWRUxjbGFzcyIgd2lkdGg9IjEwMCUiIGRyYWdnYWJsZT0iZmFsc2UiIGhlaWdodD0i
MTAwJSIgbWFyZ2luaGVpZ2h0PSIwIiBtYXJnaW53aWR0aD0iMCIgc3BhY2luZz0iMCIgc3R5bGU9
Im92ZXJmbG93OmhpZGRlbjt3aWR0aDoxMDAlO2hlaWdodDoxMDAlO3Bvc2l0aW9uOmFic29sdXRl
O2xlZnQ6MHB4O3RvcDowcHg7Ij48ZGl2IGlkPSJTRUNPTkRfTEVWRUwiIHN0eWxlPSItbXMtb3Zl
cmZsb3ctc3R5bGU6bm9uZTt3aWR0aDoxMDAlO2hlaWdodDoxMDAlO3Bvc2l0aW9uOmFic29sdXRl
O2xlZnQ6MHB4O3RvcDowcHg7Ij48L2Rpdj48ZGl2IGlkPSJvdXRwdXQiIHN0eWxlPSJ6LWluZGV4
OjEwMDt3aWR0aDo0MDBweDtoZWlnaHQ6MTAwcHg7cG9zaXRpb246YWJzb2x1dGU7YmFja2dyb3Vu
ZC1jb2xvcjpncmVlbjsiPjwvZGl2PjwvZGl2Pic7DQogICB2YXIgZWxlbSA9IEQuZ2V0RWxlbWVu
dEJ5SWQoIlNFQ09ORF9MRVZFTCIpOw0KICAgdmFyIG91dHB1dCA9IEQuZ2V0RWxlbWVudEJ5SWQo
Im91dHB1dCIpOw0KDQogICBlbGVtLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgZnVuY3Rpb24o
KSB7IA0KICAgfSwgeyAicGFzc2l2ZSI6IGZhbHNlIH0pOw0KDQogICB2YXIgc2VxdWVuY2VTdGFy
dCA9IDA7DQogICB2YXIgc2VxdWVuY2VFbmQgPSAwOw0KDQogICBlbGVtLmFkZEV2ZW50TGlzdGVu
ZXIoInRvdWNoc3RhcnQiLCBmdW5jdGlvbigpIHsgDQogICAgIG91dHB1dFsiaW5uZXJIVE1MIl0g
PSAidG91Y2hzdGFydDogIiArICgrK3NlcXVlbmNlU3RhcnQpICsgIjxiciAvPnRvdWNoZW5kOiAi
ICsgKHNlcXVlbmNlRW5kKTsNCiAgIH0sIHsgInBhc3NpdmUiOiBmYWxzZSB9KTsNCg0KICAgZWxl
bS5hZGRFdmVudExpc3RlbmVyKCJ0b3VjaGVuZCIsIGZ1bmN0aW9uKCkgeyANCiAgICAgb3V0cHV0
WyJpbm5lckhUTUwiXSA9ICJ0b3VjaHN0YXJ0OiAiICsgKHNlcXVlbmNlU3RhcnQpICsgIjxiciAv
PnRvdWNoZW5kOiAiICsgKCsrc2VxdWVuY2VFbmQpOw0KICAgfSwgeyAicGFzc2l2ZSI6IGZhbHNl
IH0pOw0KDQogICBlbGVtLmFkZEV2ZW50TGlzdGVuZXIoInRvdWNobW92ZSIsIGZ1bmN0aW9uKCkg
eyANCiAgICAgc2VxdWVuY2VTdGFydCA9IDA7DQogICAgIHNlcXVlbmNlRW5kID0gLTE7DQogICAg
IHJldHVybiBmYWxzZTsNCiAgIH0sIHsgInBhc3NpdmUiOiBmYWxzZSB9KTsNCg0KICAgZWxlbS5h
ZGRFdmVudExpc3RlbmVyKCJ0b3VjaGNhbmNlbCIsIGZ1bmN0aW9uKCkgeyANCiAgICAgc2VxdWVu
Y2VTdGFydCA9IDA7DQogICAgIHNlcXVlbmNlRW5kID0gLTE7DQogICB9LCB7ICJwYXNzaXZlIjog
ZmFsc2UgfSk7DQogfTsNCjwvc2NyaXB0Pg0KPC9oZWFkPg0KPGJvZHkgb25sb2FkPSJ3aW5kb3cu
bG9hZE1lKCk7IiB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIiBtYXJnaW5oZWlnaHQ9IjAiIG1h
cmdpbndpZHRoPSIwIiBzcGFjaW5nPSIwIiBzdHlsZT0id2lkdGg6MTAwJTtoZWlnaHQ6MTAwJTtw
b3NpdGlvbjphYnNvbHV0ZTt0b3A6MHB4O2xlZnQ6MHB4O292ZXJmbG93OmhpZGRlbjsiPjwvYm9k
eT4NCjwvaHRtbD4NCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>398999</attachid>
            <date>2020-05-10 23:00:37 -0700</date>
            <delta_ts>2020-05-11 08:50:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-211521-20200510230036.patch</filename>
            <type>text/plain</type>
            <size>17431</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYxNDU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGFlMjNiMjM3Y2Y2ZmFmMWE5
NDUxN2I5YTgzZTM1OTkyZWI4NzVlNWUuLmY4Yjc2YjkyN2UxNDMxOGU1ZTdiYjUyNDNhY2RhMjdk
NmE2ZDg3MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzIgQEAKKzIwMjAtMDUtMTAgIFdlbnNvbiBI
c2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgUkVHUkVTU0lPTiAocjI1
MzI2Nyk6IGlzc3VlcyBvbiB0b3VjaHN0YXJ0L3RvdWNoZW5kL3RvdWNobW92ZSAocG9pbnRlcmRv
d24vcG9pbnRlcnVwL3BvaW50ZXJtb3ZlKSBldmVudHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMTUyMQorICAgICAgICA8cmRhcjovL3Byb2JsZW0v
NjI5NDIzNzQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgQXMgYSBicmllZiByZWZyZXNoZXIsIGRlZmVycmluZyBnZXN0dXJlIHJlY29nbml6ZXJzIGFs
bG93IHVzIHRvIGhhbmRsZSBvdGhlcndpc2UgYmxvY2tpbmcgdG91Y2ggZXZlbnRzCisgICAgICAg
IGFzeW5jaHJvbm91c2x5IGJ5IGhhdmluZyBhbGwgcHJldmVudGFibGUgbmF0aXZlIGdlc3R1cmUg
cmVjb2duaXplcnMgcmVxdWlyZSB0aGUgZGVmZXJyaW5nIGdlc3R1cmUgcmVjb2duaXplciB0bwor
ICAgICAgICBmYWlsOyB3ZSBvbmx5IGZhaWwgdGhlIGRlZmVycmluZyBnZXN0dXJlIHJlY29nbml6
ZXIgb25jZSB0aGUgd2ViIHByb2Nlc3MgaGFzIGhhbmRsZWQgdGhlIHRvdWNoIGV2ZW50LCBhbmQg
ZGlkCisgICAgICAgIG5vdCBjYWxsIGBwcmV2ZW50RGVmYXVsdCgpYC4KKworICAgICAgICBUaGVz
ZSBhZGRpdGlvbmFsIGZhaWx1cmUgcmVxdWlyZW1lbnRzIGNhbiBjYXVzZSBwcmV2ZW50YWJsZSBn
ZXN0dXJlcyB0byBiZSBsaW5rZWQgdG9nZXRoZXIgaW4gdGhlIHNhbWUgZ2VzdHVyZQorICAgICAg
ICBkZXBlbmRlbmN5IHN1YmdyYXBoOyBzaW5jZSBlYWNoIHN1YmdyYXBoIGlzIHJlc2V0IG9ubHkg
b25jZSBhbGwgZ2VzdHVyZXMgaW4gdGhlIHN1YmdyYXBoIGhhdmUgZmFpbGVkIG9yIGVuZGVkLAor
ICAgICAgICB0aGlzIG1pZ2h0IGNhdXNlIHNvbWUgZ2VzdHVyZXMgdG8gYmUgcmVzZXQgYWZ0ZXIg
YSBkZWxheSAocmF0aGVyIHRoYW4gYmVpbmcgcmVzZXQgaW1tZWRpYXRlbHkpLiBUbyBtaXRpZ2F0
ZQorICAgICAgICB0aGlzLCB3ZSBkaXZpZGUgdGhlIHNldCBvZiBwcmV2ZW50YWJsZSBnZXN0dXJl
cyBpbnRvIG11bHRpcGxlIChjdXJyZW50bHksIDIpIHN1YmdyYXBoczogb25lIGZvciBnZXN0dXJl
cyB0aGF0CisgICAgICAgIGFyZSByZXNldCBhZnRlciBhIGRlbGF5LCBhbmQgYW5vdGhlciBmb3Ig
Z2VzdHVyZXMgdGhhdCBhcmUgaW1tZWRpYXRlbHkgcmVzZXR0YWJsZS4gVGhpcyB3YXksIGltbWVk
aWF0ZWx5CisgICAgICAgIHJlc2V0dGFibGUgZ2VzdHVyZXMgYXJlIGFibGUgdG8gcmVzZXQgYW5k
IHJlY29nbml6ZSBhZ2Fpbiwgd2l0aG91dCBoYXZpbmcgdG8gd2FpdCBmb3Igb3RoZXIgc2xvd2Vy
IHByZXZlbnRhYmxlCisgICAgICAgIGdlc3R1cmUgcmVjb2duaXplcnMgdG8gcmVzZXQuCisKKyAg
ICAgICAgV2hlbiBmYXN0LWNsaWNraW5nIGlzIGRpc2FibGVkIChlLmcuIHdoZW4gbG9hZGluZyBh
IGRlc2t0b3Agd2ViIHBhZ2Ugb24gYSBtb2JpbGUgZm9ybSBmYWN0b3IsIG9yIHdoZW4gdGhlCisg
ICAgICAgIHZpZXdwb3J0IGhhcyBiZWVuIHpvb21lZCBpbiksIHRoZSBibG9ja2luZyBzeW50aGV0
aWMgZG91YmxlIHRhcCBnZXN0dXJlIHJlY29nbml6ZXIgKHRoYXQgaXMsIGBXS0NvbnRlbnRWaWV3
YCdzCisgICAgICAgIGBfZG91YmxlVGFwR2VzdHVyZVJlY29nbml6ZXJgKSBpcyBlbmFibGVkLCBh
bmQgYWRkcyBpdHNlbGYgYXMgYSBkeW5hbWljIGZhaWx1cmUgcmVxdWlyZW1lbnQgdG8gdGhlIGNv
bnRlbnQKKyAgICAgICAgdmlldydzIHN5bnRoZXRpYyBzaW5nbGUgdGFwIGdlc3R1cmUgcmVjb2du
aXplciAoYF9zaW5nbGVUYXBHZXN0dXJlUmVjb2duaXplcmApLiBJbiB0ZXJtcyBvZiB0aGUgZ2Vz
dHVyZQorICAgICAgICBkZXBlbmRlbmN5IGdyYXBoLCB0aGlzIGNhdXNlcyB0aGUgc2luZ2xlIHRh
cCBnZXN0dXJlIHRvIGZvcm0gYW4gZWRnZSB3aXRoIHRoZSBkb3VibGUgdGFwIGdlc3R1cmUsIHdo
aWNoIGVuZHMgdXAKKyAgICAgICAgdW5pdGluZyBib3RoIGRlZmVycmluZyBnZXN0dXJlIHJlY29n
bml6ZXJzIHVuZGVyIHRoZSBzYW1lIHN1YmdyYXBoLiBUaGlzIG1lYW5zIFVJV2ViVG91Y2hFdmVu
dHNHZXN0dXJlUmVjb2duaXplciwKKyAgICAgICAgd2hpY2ggc2hvdWxkIGJlIG9uZSBvZiB0aGUg
Z2VzdHVyZXMgaW4gdGhlIGltbWVkaWF0ZWx5IHJlc2V0dGFibGUgc3ViZ3JhcGgsIGlzIG5vdyBj
b25uZWN0ZWQgdG8gdGhlIHJlc3Qgb2YgdGhlCisgICAgICAgIGRlbGF5ZWQgcmVzZXR0YWJsZSBn
ZXN0dXJlcywgbWVhbmluZyB0aGF0IGl0IGNhbm5vdCByZWNvZ25pemUgdW50aWwgInNsb3dseSBy
ZXNldHRhYmxlIiBnZXN0dXJlcyBzdWNoIGFzIHRoZQorICAgICAgICB0YXAtYW5kLWhhbGYgdGV4
dCBzZWxlY3Rpb24gZ2VzdHVyZSBoYXZlIGFsc28gYmVlbiByZXNldC4gVGhpcyBkZWxheSBjYXVz
ZXMgdG91Y2ggZXZlbnRzIHRvIGJlIGRyb3BwZWQsIGFzIGlzCisgICAgICAgIHRoZSBjYXNlIGlu
IHRoaXMgYnVnLgorCisgICAgICAgIFRvIGZpeCB0aGlzLCBzaW1wbHkgcXVhcmFudGluZSB0aGUg
c2luZ2xlIHRhcCBhbmQgZG91YmxlIHRhcCBnZXN0dXJlcyBpbnNpZGUgdGhlaXIgb3duIHN1Ymdy
YXBoIGJ5IGludHJvZHVjaW5nIGEKKyAgICAgICAgc2VwYXJhdGUgZGVmZXJyaW5nIGdlc3R1cmUg
cmVjb2duaXplciBmb3IgdGhlbS4gV2hlbiBmYXN0LWNsaWNraW5nIGlzIGVuYWJsZWQsIHRoaXMg
ZG9lcyBub3QgaGluZGVyIHRoZSBhYmlsaXR5CisgICAgICAgIGZvciB0aGUgc2luZ2xlIHRhcCBn
ZXN0dXJlIHRvIGZpcmUgaW4gcmFwaWQgc3VjY2Vzc2lvbiwgc2luY2UgdGhlIGRvdWJsZSB0YXAg
Z2VzdHVyZSBpcyBkaXNhYmxlZCAoYW5kIHRodXMsIG5vdAorICAgICAgICBhIHBhcnQgb2YgdGhl
IGdyYXBoIGF0IGFsbCkuIHdoZW4gZmFzdC1jbGlja2luZyBpcyBkaXNhYmxlZCwgdGhlbiB0aGUg
ZG91YmxlIHRhcCBnZXN0dXJlIHdpbGwgcHJldmVudCB0aGUgc2luZ2xlCisgICAgICAgIHRhcCBn
ZXN0dXJlIGZyb20gYmVpbmcgaW1tZWRpYXRlbHkgcmVzZXQgYW55d2F5cywgZHVlIHRvIHRoZSBk
aXJlY3QgZmFpbHVyZSByZXF1aXJlbWVudCBiZXR3ZWVuIHRoZSBkb3VibGUgYW5kCisgICAgICAg
IHNpbmdsZSB0YXAgZ2VzdHVyZS4KKworICAgICAgICBEb2luZyB0aGlzIGVuc3VyZXMgdGhhdCBu
byBvdGhlciBpbW1lZGlhdGVseSByZXNldHRhYmxlIGdlc3R1cmUgKGBVSVdlYlRvdWNoRXZlbnRz
R2VzdHVyZVJlY29nbml6ZXJgIGluY2x1ZGVkKQorICAgICAgICBpcyBhY2NpZGVudGFsbHkgYmxv
Y2tlZCBmcm9tIGltbWVkaWF0ZWx5IHJlc2V0dGluZyBkdWUgdG8gYmVpbmcgbGlua2VkIHRvIHRo
ZSBkZWxheWVkIHJlc2V0dGFibGUgZ2VzdHVyZXMgYnkgd2F5CisgICAgICAgIG9mIHRoZSBzeW50
aGV0aWMgc2luZ2xlIGFuZCBkb3VibGUgdGFwIGdlc3R1cmVzLgorCisgICAgICAgIFRlc3Q6IGZh
c3QvZXZlbnRzL3RvdWNoL2lvcy90YXAtYW5kLWhhbGYtd2hlbi12aWV3cG9ydC1pcy1ub3QtcmVz
cG9uc2l2ZS5odG1sCisKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRl
cmFjdGlvbi5oOgorCisgICAgICAgIEFkZCBhIGRlZGljYXRlZCBkZWZlcnJpbmcgZ2VzdHVyZSBy
ZWNvZ25pemVyIGZvciB0aGUgc3ludGhldGljIHNpbmdsZSB0YXAgYW5kIGRvdWJsZSB0YXAgZ2Vz
dHVyZSByZWNvZ25pemVycy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmll
d0ludGVyYWN0aW9uLm1tOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9kZWZlcnJpbmdHZXN0
dXJlUmVjb2duaXplcnNdKToKKworICAgICAgICBXZSBub3cgaGF2ZSAzIGRpc3RpbmN0IGRlZmVy
cmluZyBnZXN0dXJlczsgaW5zdGVhZCBvZiBoYW5kbGluZyB0aGUgdGhyZWUgZGVmZXJyaW5nIGdl
c3R1cmVzIGluZGl2aWR1YWxseSBpbgorICAgICAgICB2YXJpb3VzIHBsYWNlcyBpbiB0aGlzIGZp
bGUsIGdyb3VwIHRoZW0gYWxsIGJlaGluZCBhIGdldHRlciB0aGF0IHJldHVybnMgYW4gYXJyYXkg
b2YgZGVmZXJyaW5nIGdlc3R1cmVzLCBhbmQgdXNlCisgICAgICAgIHRoaXMgaW5zdGVhZC4KKwor
ICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IHNldFVwSW50ZXJhY3Rpb25dKToKKyAgICAgICAgKC1b
V0tDb250ZW50VmlldyBjbGVhblVwSW50ZXJhY3Rpb25dKToKKworICAgICAgICBVc2UgLV9kZWZl
cnJpbmdHZXN0dXJlUmVjb2duaXplcnMgaW5zdGVhZCBvZiBoYXJkLWNvZGluZyBsb2dpYyBmb3Ig
ZWFjaCBkZWZlcnJpbmcgZ2VzdHVyZS4KKworICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9yZW1v
dmVEZWZhdWx0R2VzdHVyZVJlY29nbml6ZXJzXSk6IERpdHRvLgorICAgICAgICAoLVtXS0NvbnRl
bnRWaWV3IF9hZGREZWZhdWx0R2VzdHVyZVJlY29nbml6ZXJzXSk6IERpdHRvLgorICAgICAgICAo
LVtXS0NvbnRlbnRWaWV3IF9kb25lRGVmZXJyaW5nTmF0aXZlR2VzdHVyZXM6XSk6IERpdHRvLgor
ICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IGdlc3R1cmVSZWNvZ25pemVyOnNob3VsZFJlY29nbml6
ZVNpbXVsdGFuZW91c2x5V2l0aEdlc3R1cmVSZWNvZ25pemVyOl0pOiBEaXR0by4KKyAgICAgICAg
KC1bV0tDb250ZW50VmlldyBkZWZlcnJpbmdHZXN0dXJlUmVjb2duaXplcjpzaG91bGREZWZlck90
aGVyR2VzdHVyZVJlY29nbml6ZXI6XSk6CisKKyAgICAgICAgUGFydGl0aW9uIHRoZSBzeW50aGV0
aWMgc2luZ2xlIHRhcCBhbmQgZG91YmxlIHRhcCBnZXN0dXJlcyBpbnRvIHRoZWlyIG93biBzdWJn
cmFwaC4KKwogMjAyMC0wNS0wOSAgRGF2aWQgS2lsemVyICA8ZGRraWx6ZXJAYXBwbGUuY29tPgog
CiAgICAgICAgIEF0dGVtcHQgIzIgdG8gZml4IGludGVybmFsIGlPUyBidWlsZApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5o
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5o
CmluZGV4IDk0MTJiYmRmNTc0YTY0OGZmZTFmODljZmM3NDBhNTNhYWE1NmE4MzUuLjYxNDBjOTIw
ZmIxM2U3MGE5MDYzOGYyYjAzZDgwMzNhZDY5MjRjODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24uaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmgKQEAgLTIxMSw2
ICsyMTEsNyBAQCBzdHJ1Y3QgV0tBdXRvQ29ycmVjdGlvbkRhdGEgewogI2lmIEVOQUJMRShJT1Nf
VE9VQ0hfRVZFTlRTKQogICAgIFJldGFpblB0cjxXS0RlZmVycmluZ0dlc3R1cmVSZWNvZ25pemVy
PiBfZGVmZXJyaW5nR2VzdHVyZVJlY29nbml6ZXJGb3JJbW1lZGlhdGVseVJlc2V0dGFibGVHZXN0
dXJlczsKICAgICBSZXRhaW5QdHI8V0tEZWZlcnJpbmdHZXN0dXJlUmVjb2duaXplcj4gX2RlZmVy
cmluZ0dlc3R1cmVSZWNvZ25pemVyRm9yRGVsYXllZFJlc2V0dGFibGVHZXN0dXJlczsKKyAgICBS
ZXRhaW5QdHI8V0tEZWZlcnJpbmdHZXN0dXJlUmVjb2duaXplcj4gX2RlZmVycmluZ0dlc3R1cmVS
ZWNvZ25pemVyRm9yU3ludGhldGljVGFwR2VzdHVyZXM7CiAjZW5kaWYKICAgICBSZXRhaW5QdHI8
VUlXZWJUb3VjaEV2ZW50c0dlc3R1cmVSZWNvZ25pemVyPiBfdG91Y2hFdmVudEdlc3R1cmVSZWNv
Z25pemVyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250
ZW50Vmlld0ludGVyYWN0aW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29u
dGVudFZpZXdJbnRlcmFjdGlvbi5tbQppbmRleCAxZDY2NGE0OTQxYzExNjYyNTYxZjhkZjM0ODI2
ZjU0MTFkODgwYTM1Li42ZDJmYTE2YzRiZDAwMTk0Y2YwNTM4NWY4YjVjNGMwOGFlNDlhYTNlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVy
YWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3
SW50ZXJhY3Rpb24ubW0KQEAgLTcxNiw2ICs3MTYsMTggQEAgLSAodm9pZClfY3JlYXRlQW5kQ29u
ZmlndXJlTG9uZ1ByZXNzR2VzdHVyZVJlY29nbml6ZXIKICAgICBbc2VsZiBhZGRHZXN0dXJlUmVj
b2duaXplcjpfbG9uZ1ByZXNzR2VzdHVyZVJlY29nbml6ZXIuZ2V0KCldOwogfQogCistIChOU0Fy
cmF5PFdLRGVmZXJyaW5nR2VzdHVyZVJlY29nbml6ZXIgKj4gKilfZGVmZXJyaW5nR2VzdHVyZVJl
Y29nbml6ZXJzCit7CisgICAgTlNNdXRhYmxlQXJyYXkgKmRlZmVycmluZ0dlc3R1cmVSZWNvZ25p
emVycyA9IFtOU011dGFibGVBcnJheSBhcnJheVdpdGhDYXBhY2l0eTozXTsKKyAgICBpZiAoX2Rl
ZmVycmluZ0dlc3R1cmVSZWNvZ25pemVyRm9ySW1tZWRpYXRlbHlSZXNldHRhYmxlR2VzdHVyZXMp
CisgICAgICAgIFtkZWZlcnJpbmdHZXN0dXJlUmVjb2duaXplcnMgYWRkT2JqZWN0Ol9kZWZlcnJp
bmdHZXN0dXJlUmVjb2duaXplckZvckltbWVkaWF0ZWx5UmVzZXR0YWJsZUdlc3R1cmVzLmdldCgp
XTsKKyAgICBpZiAoX2RlZmVycmluZ0dlc3R1cmVSZWNvZ25pemVyRm9yRGVsYXllZFJlc2V0dGFi
bGVHZXN0dXJlcykKKyAgICAgICAgW2RlZmVycmluZ0dlc3R1cmVSZWNvZ25pemVycyBhZGRPYmpl
Y3Q6X2RlZmVycmluZ0dlc3R1cmVSZWNvZ25pemVyRm9yRGVsYXllZFJlc2V0dGFibGVHZXN0dXJl
cy5nZXQoKV07CisgICAgaWYgKF9kZWZlcnJpbmdHZXN0dXJlUmVjb2duaXplckZvclN5bnRoZXRp
Y1RhcEdlc3R1cmVzKQorICAgICAgICBbZGVmZXJyaW5nR2VzdHVyZVJlY29nbml6ZXJzIGFkZE9i
amVjdDpfZGVmZXJyaW5nR2VzdHVyZVJlY29nbml6ZXJGb3JTeW50aGV0aWNUYXBHZXN0dXJlcy5n
ZXQoKV07CisgICAgcmV0dXJuIGRlZmVycmluZ0dlc3R1cmVSZWNvZ25pemVyczsKK30KKwogLSAo
dm9pZClzZXRVcEludGVyYWN0aW9uCiB7CiAgICAgLy8gSWYgdGhlIHBhZ2UgaXMgbm90IHZhbGlk
IHlldCB0aGVuIGRlbGF5IGludGVyYWN0aW9uIHNldHVwIHVudGlsIHRoZSBwcm9jZXNzIGlzIGxh
dW5jaGVkL3JlbGF1bmNoZWQuCkBAIC03NjEsMTMgKzc3MywxNyBAQCAtICh2b2lkKXNldFVwSW50
ZXJhY3Rpb24KICNpZiBFTkFCTEUoSU9TX1RPVUNIX0VWRU5UUykKICAgICBfZGVmZXJyaW5nR2Vz
dHVyZVJlY29nbml6ZXJGb3JJbW1lZGlhdGVseVJlc2V0dGFibGVHZXN0dXJlcyA9IGFkb3B0TlMo
W1tXS0RlZmVycmluZ0dlc3R1cmVSZWNvZ25pemVyIGFsbG9jXSBpbml0V2l0aERlZmVycmluZ0dl
c3R1cmVEZWxlZ2F0ZTpzZWxmXSk7CiAgICAgW19kZWZlcnJpbmdHZXN0dXJlUmVjb2duaXplckZv
ckltbWVkaWF0ZWx5UmVzZXR0YWJsZUdlc3R1cmVzIHNldE5hbWU6QCJUb3VjaCBldmVudCBkZWZl
cnJlciAoaW1tZWRpYXRlIHJlc2V0KSJdOwotICAgIFtfZGVmZXJyaW5nR2VzdHVyZVJlY29nbml6
ZXJGb3JJbW1lZGlhdGVseVJlc2V0dGFibGVHZXN0dXJlcyBzZXREZWxlZ2F0ZTpzZWxmXTsKLSAg
ICBbc2VsZiBhZGRHZXN0dXJlUmVjb2duaXplcjpfZGVmZXJyaW5nR2VzdHVyZVJlY29nbml6ZXJG
b3JJbW1lZGlhdGVseVJlc2V0dGFibGVHZXN0dXJlcy5nZXQoKV07CiAKICAgICBfZGVmZXJyaW5n
R2VzdHVyZVJlY29nbml6ZXJGb3JEZWxheWVkUmVzZXR0YWJsZUdlc3R1cmVzID0gYWRvcHROUyhb
W1dLRGVmZXJyaW5nR2VzdHVyZVJlY29nbml6ZXIgYWxsb2NdIGluaXRXaXRoRGVmZXJyaW5nR2Vz
dHVyZURlbGVnYXRlOnNlbGZdKTsKICAgICBbX2RlZmVycmluZ0dlc3R1cmVSZWNvZ25pemVyRm9y
RGVsYXllZFJlc2V0dGFibGVHZXN0dXJlcyBzZXROYW1lOkAiVG91Y2ggZXZlbnQgZGVmZXJyZXIg
KGRlbGF5ZWQgcmVzZXQpIl07Ci0gICAgW19kZWZlcnJpbmdHZXN0dXJlUmVjb2duaXplckZvckRl
bGF5ZWRSZXNldHRhYmxlR2VzdHVyZXMgc2V0RGVsZWdhdGU6c2VsZl07Ci0gICAgW3NlbGYgYWRk
R2VzdHVyZVJlY29nbml6ZXI6X2RlZmVycmluZ0dlc3R1cmVSZWNvZ25pemVyRm9yRGVsYXllZFJl
c2V0dGFibGVHZXN0dXJlcy5nZXQoKV07CisKKyAgICBfZGVmZXJyaW5nR2VzdHVyZVJlY29nbml6
ZXJGb3JTeW50aGV0aWNUYXBHZXN0dXJlcyA9IGFkb3B0TlMoW1tXS0RlZmVycmluZ0dlc3R1cmVS
ZWNvZ25pemVyIGFsbG9jXSBpbml0V2l0aERlZmVycmluZ0dlc3R1cmVEZWxlZ2F0ZTpzZWxmXSk7
CisgICAgW19kZWZlcnJpbmdHZXN0dXJlUmVjb2duaXplckZvclN5bnRoZXRpY1RhcEdlc3R1cmVz
IHNldE5hbWU6QCJUb3VjaCBldmVudCBkZWZlcnJlciAoc3ludGhldGljIHRhcCkiXTsKKworICAg
IGZvciAoV0tEZWZlcnJpbmdHZXN0dXJlUmVjb2duaXplciAqZ2VzdHVyZSBpbiBzZWxmLl9kZWZl
cnJpbmdHZXN0dXJlUmVjb2duaXplcnMpIHsKKyAgICAgICAgZ2VzdHVyZS5kZWxlZ2F0ZSA9IHNl
bGY7CisgICAgICAgIFtzZWxmIGFkZEdlc3R1cmVSZWNvZ25pemVyOmdlc3R1cmVdOworICAgIH0K
ICNlbmRpZgogCiAgICAgX3RvdWNoRXZlbnRHZXN0dXJlUmVjb2duaXplciA9IGFkb3B0TlMoW1tV
SVdlYlRvdWNoRXZlbnRzR2VzdHVyZVJlY29nbml6ZXIgYWxsb2NdIGluaXRXaXRoVGFyZ2V0OnNl
bGYgYWN0aW9uOkBzZWxlY3Rvcihfd2ViVG91Y2hFdmVudHNSZWNvZ25pemVkOikgdG91Y2hEZWxl
Z2F0ZTpzZWxmXSk7CkBAIC05MzQsMTEgKzk1MCwxMCBAQCAtICh2b2lkKWNsZWFuVXBJbnRlcmFj
dGlvbgogICAgIFtzZWxmIHJlbW92ZUdlc3R1cmVSZWNvZ25pemVyOl90b3VjaEV2ZW50R2VzdHVy
ZVJlY29nbml6ZXIuZ2V0KCldOwogCiAjaWYgRU5BQkxFKElPU19UT1VDSF9FVkVOVFMpCi0gICAg
W19kZWZlcnJpbmdHZXN0dXJlUmVjb2duaXplckZvckltbWVkaWF0ZWx5UmVzZXR0YWJsZUdlc3R1
cmVzIHNldERlbGVnYXRlOm5pbF07Ci0gICAgW3NlbGYgcmVtb3ZlR2VzdHVyZVJlY29nbml6ZXI6
X2RlZmVycmluZ0dlc3R1cmVSZWNvZ25pemVyRm9ySW1tZWRpYXRlbHlSZXNldHRhYmxlR2VzdHVy
ZXMuZ2V0KCldOwotCi0gICAgW19kZWZlcnJpbmdHZXN0dXJlUmVjb2duaXplckZvckRlbGF5ZWRS
ZXNldHRhYmxlR2VzdHVyZXMgc2V0RGVsZWdhdGU6bmlsXTsKLSAgICBbc2VsZiByZW1vdmVHZXN0
dXJlUmVjb2duaXplcjpfZGVmZXJyaW5nR2VzdHVyZVJlY29nbml6ZXJGb3JEZWxheWVkUmVzZXR0
YWJsZUdlc3R1cmVzLmdldCgpXTsKKyAgICBmb3IgKFdLRGVmZXJyaW5nR2VzdHVyZVJlY29nbml6
ZXIgKmdlc3R1cmUgaW4gc2VsZi5fZGVmZXJyaW5nR2VzdHVyZVJlY29nbml6ZXJzKSB7CisgICAg
ICAgIGdlc3R1cmUuZGVsZWdhdGUgPSBuaWw7CisgICAgICAgIFtzZWxmIHJlbW92ZUdlc3R1cmVS
ZWNvZ25pemVyOmdlc3R1cmVdOworICAgIH0KICNlbmRpZgogCiAjaWYgSEFWRShVSUtJVF9XSVRI
X01PVVNFX1NVUFBPUlQpCkBAIC0xMDUzLDggKzEwNjgsOCBAQCAtICh2b2lkKWNsZWFuVXBJbnRl
cmFjdGlvbgogLSAodm9pZClfcmVtb3ZlRGVmYXVsdEdlc3R1cmVSZWNvZ25pemVycwogewogI2lm
IEVOQUJMRShJT1NfVE9VQ0hfRVZFTlRTKQotICAgIFtzZWxmIHJlbW92ZUdlc3R1cmVSZWNvZ25p
emVyOl9kZWZlcnJpbmdHZXN0dXJlUmVjb2duaXplckZvckltbWVkaWF0ZWx5UmVzZXR0YWJsZUdl
c3R1cmVzLmdldCgpXTsKLSAgICBbc2VsZiByZW1vdmVHZXN0dXJlUmVjb2duaXplcjpfZGVmZXJy
aW5nR2VzdHVyZVJlY29nbml6ZXJGb3JEZWxheWVkUmVzZXR0YWJsZUdlc3R1cmVzLmdldCgpXTsK
KyAgICBmb3IgKFdLRGVmZXJyaW5nR2VzdHVyZVJlY29nbml6ZXIgKmdlc3R1cmUgaW4gc2VsZi5f
ZGVmZXJyaW5nR2VzdHVyZVJlY29nbml6ZXJzKQorICAgICAgICBbc2VsZiByZW1vdmVHZXN0dXJl
UmVjb2duaXplcjpnZXN0dXJlXTsKICNlbmRpZgogICAgIFtzZWxmIHJlbW92ZUdlc3R1cmVSZWNv
Z25pemVyOl90b3VjaEV2ZW50R2VzdHVyZVJlY29nbml6ZXIuZ2V0KCldOwogICAgIFtzZWxmIHJl
bW92ZUdlc3R1cmVSZWNvZ25pemVyOl9zaW5nbGVUYXBHZXN0dXJlUmVjb2duaXplci5nZXQoKV07
CkBAIC0xMDgxLDggKzEwOTYsOCBAQCAtICh2b2lkKV9yZW1vdmVEZWZhdWx0R2VzdHVyZVJlY29n
bml6ZXJzCiAtICh2b2lkKV9hZGREZWZhdWx0R2VzdHVyZVJlY29nbml6ZXJzCiB7CiAjaWYgRU5B
QkxFKElPU19UT1VDSF9FVkVOVFMpCi0gICAgW3NlbGYgYWRkR2VzdHVyZVJlY29nbml6ZXI6X2Rl
ZmVycmluZ0dlc3R1cmVSZWNvZ25pemVyRm9ySW1tZWRpYXRlbHlSZXNldHRhYmxlR2VzdHVyZXMu
Z2V0KCldOwotICAgIFtzZWxmIGFkZEdlc3R1cmVSZWNvZ25pemVyOl9kZWZlcnJpbmdHZXN0dXJl
UmVjb2duaXplckZvckRlbGF5ZWRSZXNldHRhYmxlR2VzdHVyZXMuZ2V0KCldOworICAgIGZvciAo
V0tEZWZlcnJpbmdHZXN0dXJlUmVjb2duaXplciAqZ2VzdHVyZSBpbiBzZWxmLl9kZWZlcnJpbmdH
ZXN0dXJlUmVjb2duaXplcnMpCisgICAgICAgIFtzZWxmIGFkZEdlc3R1cmVSZWNvZ25pemVyOmdl
c3R1cmVdOwogI2VuZGlmCiAgICAgW3NlbGYgYWRkR2VzdHVyZVJlY29nbml6ZXI6X3RvdWNoRXZl
bnRHZXN0dXJlUmVjb2duaXplci5nZXQoKV07CiAgICAgW3NlbGYgYWRkR2VzdHVyZVJlY29nbml6
ZXI6X3NpbmdsZVRhcEdlc3R1cmVSZWNvZ25pemVyLmdldCgpXTsKQEAgLTE2NTgsOCArMTY3Myw4
IEBAIC0gKHZvaWQpX3dlYlRvdWNoRXZlbnQ6KGNvbnN0IFdlYktpdDo6TmF0aXZlV2ViVG91Y2hF
dmVudCYpdG91Y2hFdmVudCBwcmV2ZW50c05hCiAKIC0gKHZvaWQpX2RvbmVEZWZlcnJpbmdOYXRp
dmVHZXN0dXJlczooQk9PTClwcmV2ZW50TmF0aXZlR2VzdHVyZXMKIHsKLSAgICBbX2RlZmVycmlu
Z0dlc3R1cmVSZWNvZ25pemVyRm9ySW1tZWRpYXRlbHlSZXNldHRhYmxlR2VzdHVyZXMgc2V0RGVm
YXVsdFByZXZlbnRlZDpwcmV2ZW50TmF0aXZlR2VzdHVyZXNdOwotICAgIFtfZGVmZXJyaW5nR2Vz
dHVyZVJlY29nbml6ZXJGb3JEZWxheWVkUmVzZXR0YWJsZUdlc3R1cmVzIHNldERlZmF1bHRQcmV2
ZW50ZWQ6cHJldmVudE5hdGl2ZUdlc3R1cmVzXTsKKyAgICBmb3IgKFdLRGVmZXJyaW5nR2VzdHVy
ZVJlY29nbml6ZXIgKmdlc3R1cmUgaW4gc2VsZi5fZGVmZXJyaW5nR2VzdHVyZVJlY29nbml6ZXJz
KQorICAgICAgICBbZ2VzdHVyZSBzZXREZWZhdWx0UHJldmVudGVkOnByZXZlbnROYXRpdmVHZXN0
dXJlc107CiB9CiAKICNlbmRpZgpAQCAtMjA0MSwxMSArMjA1NiwxMCBAQCBzdGF0aWMgQ2xhc3Mg
dGFwQW5kQUhhbGZSZWNvZ25pemVyQ2xhc3MoKQogLSAoQk9PTClnZXN0dXJlUmVjb2duaXplcjoo
VUlHZXN0dXJlUmVjb2duaXplciAqKWdlc3R1cmVSZWNvZ25pemVyIHNob3VsZFJlY29nbml6ZVNp
bXVsdGFuZW91c2x5V2l0aEdlc3R1cmVSZWNvZ25pemVyOihVSUdlc3R1cmVSZWNvZ25pemVyKilv
dGhlckdlc3R1cmVSZWNvZ25pemVyCiB7CiAjaWYgRU5BQkxFKElPU19UT1VDSF9FVkVOVFMpCi0g
ICAgaWYgKGlzU2FtZVBhaXIoZ2VzdHVyZVJlY29nbml6ZXIsIG90aGVyR2VzdHVyZVJlY29nbml6
ZXIsIF90b3VjaEV2ZW50R2VzdHVyZVJlY29nbml6ZXIuZ2V0KCksIF9kZWZlcnJpbmdHZXN0dXJl
UmVjb2duaXplckZvckltbWVkaWF0ZWx5UmVzZXR0YWJsZUdlc3R1cmVzLmdldCgpKSkKLSAgICAg
ICAgcmV0dXJuIFlFUzsKLQotICAgIGlmIChpc1NhbWVQYWlyKGdlc3R1cmVSZWNvZ25pemVyLCBv
dGhlckdlc3R1cmVSZWNvZ25pemVyLCBfdG91Y2hFdmVudEdlc3R1cmVSZWNvZ25pemVyLmdldCgp
LCBfZGVmZXJyaW5nR2VzdHVyZVJlY29nbml6ZXJGb3JEZWxheWVkUmVzZXR0YWJsZUdlc3R1cmVz
LmdldCgpKSkKLSAgICAgICAgcmV0dXJuIFlFUzsKKyAgICBmb3IgKFdLRGVmZXJyaW5nR2VzdHVy
ZVJlY29nbml6ZXIgKmdlc3R1cmUgaW4gc2VsZi5fZGVmZXJyaW5nR2VzdHVyZVJlY29nbml6ZXJz
KSB7CisgICAgICAgIGlmIChpc1NhbWVQYWlyKGdlc3R1cmVSZWNvZ25pemVyLCBvdGhlckdlc3R1
cmVSZWNvZ25pemVyLCBfdG91Y2hFdmVudEdlc3R1cmVSZWNvZ25pemVyLmdldCgpLCBnZXN0dXJl
KSkKKyAgICAgICAgICAgIHJldHVybiBZRVM7CisgICAgfQogI2VuZGlmCiAKICAgICBpZiAoW2dl
c3R1cmVSZWNvZ25pemVyIGlzS2luZE9mQ2xhc3M6V0tEZWZlcnJpbmdHZXN0dXJlUmVjb2duaXpl
ci5jbGFzc10gJiYgW290aGVyR2VzdHVyZVJlY29nbml6ZXIgaXNLaW5kT2ZDbGFzczpXS0RlZmVy
cmluZ0dlc3R1cmVSZWNvZ25pemVyLmNsYXNzXSkKQEAgLTcxMTQsNiArNzEyOCw5IEBAIC0gKEJP
T0wpZGVmZXJyaW5nR2VzdHVyZVJlY29nbml6ZXI6KFdLRGVmZXJyaW5nR2VzdHVyZVJlY29nbml6
ZXIgKilkZWZlcnJpbmdHZXN0CiAgICAgICAgIHJldHVybiBOTzsKICAgICB9OwogCisgICAgaWYg
KGdlc3R1cmVSZWNvZ25pemVyID09IF9kb3VibGVUYXBHZXN0dXJlUmVjb2duaXplciB8fCBnZXN0
dXJlUmVjb2duaXplciA9PSBfc2luZ2xlVGFwR2VzdHVyZVJlY29nbml6ZXIpCisgICAgICAgIHJl
dHVybiBkZWZlcnJpbmdHZXN0dXJlUmVjb2duaXplciA9PSBfZGVmZXJyaW5nR2VzdHVyZVJlY29n
bml6ZXJGb3JTeW50aGV0aWNUYXBHZXN0dXJlczsKKwogICAgIGlmIChtYXlEZWxheVJlc2V0T2ZD
b250YWluaW5nU3ViZ3JhcGgoZ2VzdHVyZVJlY29nbml6ZXIpKQogICAgICAgICByZXR1cm4gZGVm
ZXJyaW5nR2VzdHVyZVJlY29nbml6ZXIgPT0gX2RlZmVycmluZ0dlc3R1cmVSZWNvZ25pemVyRm9y
RGVsYXllZFJlc2V0dGFibGVHZXN0dXJlczsKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDBmMjgyYTY4ZjA4YjdjZmY0NmE0
Yzc3M2MxZTUxOTQ2YzU3YTExOTAuLjk0NDhkZTUyOTY0OGE2ZGMzYjU1Yzg3OGU5ZWUxYWMwNDk0
MzAwNzMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAyMC0wNS0xMCAgV2Vuc29uIEhzaWVoICA8
d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBSRUdSRVNTSU9OIChyMjUzMjY3KTog
aXNzdWVzIG9uIHRvdWNoc3RhcnQvdG91Y2hlbmQvdG91Y2htb3ZlIChwb2ludGVyZG93bi9wb2lu
dGVydXAvcG9pbnRlcm1vdmUpIGV2ZW50cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjExNTIxCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82Mjk0MjM3
ND4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQg
YSBsYXlvdXQgdGVzdCB0aGF0IHN5bnRoZXNpemVzIGEgdGFwLWFuZC1oYWxmIGdlc3R1cmUgb3Zl
ciBhbiBlbGVtZW50IHdpdGggYWN0aXZlIHRvdWNoIGV2ZW50IGxpc3RlbmVycywgYW5kCisgICAg
ICAgIHZlcmlmaWVzIHRoYXQgdGhlIHNlY29uZCBoYWxmIG9mIHRoZSBnZXN0dXJlIChpLmUuIHRo
ZSBwYW4gZ2VzdHVyZSkgZGlzcGF0Y2hlcyB0b3VjaHN0YXJ0LCB0b3VjaG1vdmUsIGFuZAorICAg
ICAgICB0b3VjaGVuZCBldmVudHMuCisKKyAgICAgICAgKiBmYXN0L2V2ZW50cy90b3VjaC9pb3Mv
dGFwLWFuZC1oYWxmLXdoZW4tdmlld3BvcnQtaXMtbm90LXJlc3BvbnNpdmUtZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2V2ZW50cy90b3VjaC9pb3MvdGFwLWFuZC1oYWxmLXdo
ZW4tdmlld3BvcnQtaXMtbm90LXJlc3BvbnNpdmUuaHRtbDogQWRkZWQuCisKIDIwMjAtMDUtMTAg
IERpZWdvIFBpbm8gR2FyY2lhICA8ZHBpbm9AaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXSBH
YXJkZW5pbmcsIHVwZGF0ZSB0ZXN0IGV4cGVjdGF0aW9ucwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZmFzdC9ldmVudHMvdG91Y2gvaW9zL3RhcC1hbmQtaGFsZi13aGVuLXZpZXdwb3J0LWlzLW5v
dC1yZXNwb25zaXZlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNo
L2lvcy90YXAtYW5kLWhhbGYtd2hlbi12aWV3cG9ydC1pcy1ub3QtcmVzcG9uc2l2ZS1leHBlY3Rl
ZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMGM4ZmM2NjBhY2M3NDE1ZjVmYzRjNTU0NjU4MWRkMTc5MjRiMDRk
YQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL2lvcy90
YXAtYW5kLWhhbGYtd2hlbi12aWV3cG9ydC1pcy1ub3QtcmVzcG9uc2l2ZS1leHBlY3RlZC50eHQK
QEAgLTAsMCArMSwxNSBAQAorVGhpcyB0ZXN0IHZlcmlmaWVzIHRoYXQgYSB0YXAtYW5kLWhhbGYg
Z2VzdHVyZSBkaXNwYXRjaGVzIHRvdWNoIGV2ZW50cyB3aGVuIHRoZSBwYWdlIGlzIHpvb21lZCBp
bi4gVG8gbWFudWFsbHkgcnVuIHRoZSB0ZXN0LCB0YXAgdGhlIHJlZCBzcXVhcmUgYW5kIHRoZW4g
aW1tZWRpYXRlbHkgcGVyZm9ybSBhIHBhbiBnZXN0dXJlIHN0YXJ0aW5nIGluIHRoZSBzYW1lIGxv
Y2F0aW9uIGFzIHRoZSB0YXAuIFRoZSByZXN1bHRpbmcgZXZlbnRzIHNob3VsZCBjb25zaXN0IG9m
ICd0b3VjaHN0YXJ0JywgJ3RvdWNoZW5kJywgJ3RvdWNoc3RhcnQnLCBvbmUgb3IgbW9yZSAndG91
Y2htb3ZlJywgYW5kIGZpbmFsbHkgYSAndG91Y2hlbmQnLgorCitPbiBzdWNjZXNzLCB5b3Ugd2ls
bCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01Q
TEVURSIuCisKKworUEFTUyBPYnNlcnZlZCB0b3VjaHN0YXJ0CitQQVNTIE9ic2VydmVkIHRvdWNo
ZW5kCitQQVNTIE9ic2VydmVkIHRvdWNoc3RhcnQKK1BBU1MgT2JzZXJ2ZWQgdG91Y2htb3ZlCitQ
QVNTIE9ic2VydmVkIHRvdWNoZW5kCitQQVNTIHRvdWNoZW5kQ291bnQgYmVjYW1lIDIKK1BBU1Mg
c3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC9pb3MvdGFwLWFuZC1oYWxmLXdoZW4tdmll
d3BvcnQtaXMtbm90LXJlc3BvbnNpdmUuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3Rv
dWNoL2lvcy90YXAtYW5kLWhhbGYtd2hlbi12aWV3cG9ydC1pcy1ub3QtcmVzcG9uc2l2ZS5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjBlNDU5MTYwNWZlZjg2ZjhmMjI0ZjliZTlhYTZhZmQ5MmU3MjNkZDcKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC9pb3MvdGFwLWFu
ZC1oYWxmLXdoZW4tdmlld3BvcnQtaXMtbm90LXJlc3BvbnNpdmUuaHRtbApAQCAtMCwwICsxLDU0
IEBACis8IURPQ1RZUEUgaHRtbD4gPCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIgWyB1c2VGbGV4aWJs
ZVZpZXdwb3J0PXRydWUgXSAtLT4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBuYW1lPSJ2aWV3cG9y
dCIgY29udGVudD0iaW5pdGlhbC1zY2FsZT0wLjYiPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4u
L3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8u
Li9yZXNvdXJjZXMvdWktaGVscGVyLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Citqc1Rlc3RJc0Fz
eW5jID0gdHJ1ZTsKK2xhc3RFdmVudFR5cGUgPSBudWxsOwordG91Y2hlbmRDb3VudCA9IDA7CisK
K2Z1bmN0aW9uIGxvZ0V2ZW50KGV2ZW50KSB7CisgICAgaWYgKGV2ZW50LnR5cGUgPT09IGxhc3RF
dmVudFR5cGUpCisgICAgICAgIHJldHVybjsKKworICAgIGxhc3RFdmVudFR5cGUgPSBldmVudC50
eXBlOworICAgIHRlc3RQYXNzZWQoYE9ic2VydmVkICR7ZXZlbnQudHlwZX1gKTsKKyAgICBpZiAo
ZXZlbnQudHlwZSA9PT0gInRvdWNoZW5kIikKKyAgICAgICAgdG91Y2hlbmRDb3VudCsrOworfQor
CithZGRFdmVudExpc3RlbmVyKCJsb2FkIiwgYXN5bmMgKCkgPT4geworICAgIGNvbnN0IHRhcmdl
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0YXJnZXQiKTsKKyAgICB0YXJnZXQuYWRkRXZl
bnRMaXN0ZW5lcigidG91Y2hzdGFydCIsIGxvZ0V2ZW50LCB7IHBhc3NpdmUgOiBmYWxzZSB9KTsK
KyAgICB0YXJnZXQuYWRkRXZlbnRMaXN0ZW5lcigidG91Y2htb3ZlIiwgbG9nRXZlbnQsIHsgcGFz
c2l2ZSA6IGZhbHNlIH0pOworICAgIHRhcmdldC5hZGRFdmVudExpc3RlbmVyKCJ0b3VjaGVuZCIs
IGxvZ0V2ZW50LCB7IHBhc3NpdmUgOiBmYWxzZSB9KTsKKworICAgIGRlc2NyaXB0aW9uKCJUaGlz
IHRlc3QgdmVyaWZpZXMgdGhhdCBhIHRhcC1hbmQtaGFsZiBnZXN0dXJlIGRpc3BhdGNoZXMgdG91
Y2ggZXZlbnRzIHdoZW4gdGhlIHBhZ2UgaXMgem9vbWVkIGluLiBUbyBtYW51YWxseSBydW4gdGhl
IHRlc3QsIHRhcCB0aGUgcmVkIHNxdWFyZSBhbmQgdGhlbiBpbW1lZGlhdGVseSBwZXJmb3JtIGEg
cGFuIGdlc3R1cmUgc3RhcnRpbmcgaW4gdGhlIHNhbWUgbG9jYXRpb24gYXMgdGhlIHRhcC4gVGhl
IHJlc3VsdGluZyBldmVudHMgc2hvdWxkIGNvbnNpc3Qgb2YgJ3RvdWNoc3RhcnQnLCAndG91Y2hl
bmQnLCAndG91Y2hzdGFydCcsIG9uZSBvciBtb3JlICd0b3VjaG1vdmUnLCBhbmQgZmluYWxseSBh
ICd0b3VjaGVuZCcuIik7CisKKyAgICBhd2FpdCBVSUhlbHBlci5hY3RpdmF0ZUF0KDEwMCwgMTAw
KTsKKyAgICBhd2FpdCBVSUhlbHBlci5zZW5kRXZlbnRTdHJlYW0obmV3IFVJSGVscGVyLkV2ZW50
U3RyZWFtQnVpbGRlcigpCisgICAgICAgIC5iZWdpbigxMDAsIDEwMCkKKyAgICAgICAgLm1vdmUo
MTAwLCAyMDAsIDAuNSkKKyAgICAgICAgLmVuZCgpCisgICAgICAgIC50YWtlUmVzdWx0KCkpOwor
CisgICAgYXdhaXQgbmV3IFByb21pc2UocmVzb2x2ZSA9PiBzaG91bGRCZWNvbWVFcXVhbCgidG91
Y2hlbmRDb3VudCIsICIyIiwgcmVzb2x2ZSkpOworICAgIGZpbmlzaEpTVGVzdCgpOworfSk7Cis8
L3NjcmlwdD4KKzxzdHlsZT4KKyN0YXJnZXQgeworICAgIHdpZHRoOiA0MDBweDsKKyAgICBoZWln
aHQ6IDQwMHB4OworICAgIGJhY2tncm91bmQtY29sb3I6IHJlZDsKK30KKzwvc3R5bGU+Cis8L2hl
YWQ+Cis8Ym9keT4KKzxkaXYgaWQ9InRhcmdldCI+PC9kaXY+Cis8cCBpZD0iZGVzY3JpcHRpb24i
PjwvcD4KKzxwIGlkPSJjb25zb2xlIj48L3A+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>399022</attachid>
            <date>2020-05-11 08:50:16 -0700</date>
            <delta_ts>2020-05-11 09:23:01 -0700</delta_ts>
            <desc>For EWS</desc>
            <filename>bug-211521-20200511085015.patch</filename>
            <type>text/plain</type>
            <size>17272</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYxNDc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGEwZTBlYzJjMmFiMzZlNzRh
MTdiNTE5YTljODk2MTljNjIxMjRmMzEuLmU4ZjBhMDhiNDQyNzc1MDM3MTRlZTdiZTg4YzljMmJi
NDljZTg3ZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzIgQEAKKzIwMjAtMDUtMTAgIFdlbnNvbiBI
c2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgUkVHUkVTU0lPTiAocjI1
MzI2Nyk6IGlzc3VlcyBvbiB0b3VjaHN0YXJ0L3RvdWNoZW5kL3RvdWNobW92ZSAocG9pbnRlcmRv
d24vcG9pbnRlcnVwL3BvaW50ZXJtb3ZlKSBldmVudHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMTUyMQorICAgICAgICA8cmRhcjovL3Byb2JsZW0v
NjI5NDIzNzQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAg
QXMgYSBicmllZiByZWZyZXNoZXIsIGRlZmVycmluZyBnZXN0dXJlIHJlY29nbml6ZXJzIGFsbG93
IHVzIHRvIGhhbmRsZSBvdGhlcndpc2UgYmxvY2tpbmcgdG91Y2ggZXZlbnRzCisgICAgICAgIGFz
eW5jaHJvbm91c2x5IGJ5IGhhdmluZyBhbGwgcHJldmVudGFibGUgbmF0aXZlIGdlc3R1cmUgcmVj
b2duaXplcnMgcmVxdWlyZSB0aGUgZGVmZXJyaW5nIGdlc3R1cmUgcmVjb2duaXplciB0bworICAg
ICAgICBmYWlsOyB3ZSBvbmx5IGZhaWwgdGhlIGRlZmVycmluZyBnZXN0dXJlIHJlY29nbml6ZXIg
b25jZSB0aGUgd2ViIHByb2Nlc3MgaGFzIGhhbmRsZWQgdGhlIHRvdWNoIGV2ZW50LCBhbmQgZGlk
CisgICAgICAgIG5vdCBjYWxsIGBwcmV2ZW50RGVmYXVsdCgpYC4KKworICAgICAgICBUaGVzZSBh
ZGRpdGlvbmFsIGZhaWx1cmUgcmVxdWlyZW1lbnRzIGNhbiBjYXVzZSBwcmV2ZW50YWJsZSBnZXN0
dXJlcyB0byBiZSBsaW5rZWQgdG9nZXRoZXIgaW4gdGhlIHNhbWUgZ2VzdHVyZQorICAgICAgICBk
ZXBlbmRlbmN5IHN1YmdyYXBoOyBzaW5jZSBlYWNoIHN1YmdyYXBoIGlzIHJlc2V0IG9ubHkgb25j
ZSBhbGwgZ2VzdHVyZXMgaW4gdGhlIHN1YmdyYXBoIGhhdmUgZmFpbGVkIG9yIGVuZGVkLAorICAg
ICAgICB0aGlzIG1pZ2h0IGNhdXNlIHNvbWUgZ2VzdHVyZXMgdG8gYmUgcmVzZXQgYWZ0ZXIgYSBk
ZWxheSAocmF0aGVyIHRoYW4gYmVpbmcgcmVzZXQgaW1tZWRpYXRlbHkpLiBUbyBtaXRpZ2F0ZQor
ICAgICAgICB0aGlzLCB3ZSBkaXZpZGUgdGhlIHNldCBvZiBwcmV2ZW50YWJsZSBnZXN0dXJlcyBp
bnRvIG11bHRpcGxlIChjdXJyZW50bHksIDIpIHN1YmdyYXBoczogb25lIGZvciBnZXN0dXJlcyB0
aGF0CisgICAgICAgIGFyZSByZXNldCBhZnRlciBhIGRlbGF5LCBhbmQgYW5vdGhlciBmb3IgZ2Vz
dHVyZXMgdGhhdCBhcmUgaW1tZWRpYXRlbHkgcmVzZXR0YWJsZS4gVGhpcyB3YXksIGltbWVkaWF0
ZWx5CisgICAgICAgIHJlc2V0dGFibGUgZ2VzdHVyZXMgYXJlIGFibGUgdG8gcmVzZXQgYW5kIHJl
Y29nbml6ZSBhZ2Fpbiwgd2l0aG91dCBoYXZpbmcgdG8gd2FpdCBmb3Igb3RoZXIgc2xvd2VyIHBy
ZXZlbnRhYmxlCisgICAgICAgIGdlc3R1cmUgcmVjb2duaXplcnMgdG8gcmVzZXQuCisKKyAgICAg
ICAgV2hlbiBmYXN0LWNsaWNraW5nIGlzIGRpc2FibGVkIChlLmcuIHdoZW4gbG9hZGluZyBhIGRl
c2t0b3Agd2ViIHBhZ2Ugb24gYSBtb2JpbGUgZm9ybSBmYWN0b3IsIG9yIHdoZW4gdGhlCisgICAg
ICAgIHZpZXdwb3J0IGhhcyBiZWVuIHpvb21lZCBpbiksIHRoZSBibG9ja2luZyBzeW50aGV0aWMg
ZG91YmxlIHRhcCBnZXN0dXJlIHJlY29nbml6ZXIgKHRoYXQgaXMsIGBXS0NvbnRlbnRWaWV3YCdz
CisgICAgICAgIGBfZG91YmxlVGFwR2VzdHVyZVJlY29nbml6ZXJgKSBpcyBlbmFibGVkLCBhbmQg
YWRkcyBpdHNlbGYgYXMgYSBkeW5hbWljIGZhaWx1cmUgcmVxdWlyZW1lbnQgdG8gdGhlIGNvbnRl
bnQKKyAgICAgICAgdmlldydzIHN5bnRoZXRpYyBzaW5nbGUgdGFwIGdlc3R1cmUgcmVjb2duaXpl
ciAoYF9zaW5nbGVUYXBHZXN0dXJlUmVjb2duaXplcmApLiBJbiB0ZXJtcyBvZiB0aGUgZ2VzdHVy
ZQorICAgICAgICBkZXBlbmRlbmN5IGdyYXBoLCB0aGlzIGNhdXNlcyB0aGUgc2luZ2xlIHRhcCBn
ZXN0dXJlIHRvIGZvcm0gYW4gZWRnZSB3aXRoIHRoZSBkb3VibGUgdGFwIGdlc3R1cmUsIHdoaWNo
IGVuZHMgdXAKKyAgICAgICAgdW5pdGluZyBib3RoIGRlZmVycmluZyBnZXN0dXJlIHJlY29nbml6
ZXJzIHVuZGVyIHRoZSBzYW1lIHN1YmdyYXBoLiBUaGlzIG1lYW5zIFVJV2ViVG91Y2hFdmVudHNH
ZXN0dXJlUmVjb2duaXplciwKKyAgICAgICAgd2hpY2ggc2hvdWxkIGJlIG9uZSBvZiB0aGUgZ2Vz
dHVyZXMgaW4gdGhlIGltbWVkaWF0ZWx5IHJlc2V0dGFibGUgc3ViZ3JhcGgsIGlzIG5vdyBjb25u
ZWN0ZWQgdG8gdGhlIHJlc3Qgb2YgdGhlCisgICAgICAgIGRlbGF5ZWQgcmVzZXR0YWJsZSBnZXN0
dXJlcywgbWVhbmluZyB0aGF0IGl0IGNhbm5vdCByZWNvZ25pemUgdW50aWwgInNsb3dseSByZXNl
dHRhYmxlIiBnZXN0dXJlcyBzdWNoIGFzIHRoZQorICAgICAgICB0YXAtYW5kLWhhbGYgdGV4dCBz
ZWxlY3Rpb24gZ2VzdHVyZSBoYXZlIGFsc28gYmVlbiByZXNldC4gVGhpcyBkZWxheSBjYXVzZXMg
dG91Y2ggZXZlbnRzIHRvIGJlIGRyb3BwZWQsIGFzIGlzCisgICAgICAgIHRoZSBjYXNlIGluIHRo
aXMgYnVnLgorCisgICAgICAgIFRvIGZpeCB0aGlzLCBzaW1wbHkgcXVhcmFudGluZSB0aGUgc2lu
Z2xlIHRhcCBhbmQgZG91YmxlIHRhcCBnZXN0dXJlcyBpbnNpZGUgdGhlaXIgb3duIHN1YmdyYXBo
IGJ5IGludHJvZHVjaW5nIGEKKyAgICAgICAgc2VwYXJhdGUgZGVmZXJyaW5nIGdlc3R1cmUgcmVj
b2duaXplciBmb3IgdGhlbS4gV2hlbiBmYXN0LWNsaWNraW5nIGlzIGVuYWJsZWQsIHRoaXMgZG9l
cyBub3QgaGluZGVyIHRoZSBhYmlsaXR5CisgICAgICAgIGZvciB0aGUgc2luZ2xlIHRhcCBnZXN0
dXJlIHRvIGZpcmUgaW4gcmFwaWQgc3VjY2Vzc2lvbiwgc2luY2UgdGhlIGRvdWJsZSB0YXAgZ2Vz
dHVyZSBpcyBkaXNhYmxlZCAoYW5kIHRodXMsIG5vdAorICAgICAgICBhIHBhcnQgb2YgdGhlIGdy
YXBoIGF0IGFsbCkuIHdoZW4gZmFzdC1jbGlja2luZyBpcyBkaXNhYmxlZCwgdGhlbiB0aGUgZG91
YmxlIHRhcCBnZXN0dXJlIHdpbGwgcHJldmVudCB0aGUgc2luZ2xlCisgICAgICAgIHRhcCBnZXN0
dXJlIGZyb20gYmVpbmcgaW1tZWRpYXRlbHkgcmVzZXQgYW55d2F5cywgZHVlIHRvIHRoZSBkaXJl
Y3QgZmFpbHVyZSByZXF1aXJlbWVudCBiZXR3ZWVuIHRoZSBkb3VibGUgYW5kCisgICAgICAgIHNp
bmdsZSB0YXAgZ2VzdHVyZS4KKworICAgICAgICBEb2luZyB0aGlzIGVuc3VyZXMgdGhhdCBubyBv
dGhlciBpbW1lZGlhdGVseSByZXNldHRhYmxlIGdlc3R1cmUgKGBVSVdlYlRvdWNoRXZlbnRzR2Vz
dHVyZVJlY29nbml6ZXJgIGluY2x1ZGVkKQorICAgICAgICBpcyBhY2NpZGVudGFsbHkgYmxvY2tl
ZCBmcm9tIGltbWVkaWF0ZWx5IHJlc2V0dGluZyBkdWUgdG8gYmVpbmcgbGlua2VkIHRvIHRoZSBk
ZWxheWVkIHJlc2V0dGFibGUgZ2VzdHVyZXMgYnkgd2F5CisgICAgICAgIG9mIHRoZSBzeW50aGV0
aWMgc2luZ2xlIGFuZCBkb3VibGUgdGFwIGdlc3R1cmVzLgorCisgICAgICAgIFRlc3Q6IGZhc3Qv
ZXZlbnRzL3RvdWNoL2lvcy90YXAtYW5kLWhhbGYtd2hlbi12aWV3cG9ydC1pcy1ub3QtcmVzcG9u
c2l2ZS5odG1sCisKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFj
dGlvbi5oOgorCisgICAgICAgIEFkZCBhIGRlZGljYXRlZCBkZWZlcnJpbmcgZ2VzdHVyZSByZWNv
Z25pemVyIGZvciB0aGUgc3ludGhldGljIHNpbmdsZSB0YXAgYW5kIGRvdWJsZSB0YXAgZ2VzdHVy
ZSByZWNvZ25pemVycy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0lu
dGVyYWN0aW9uLm1tOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IHNldFVwSW50ZXJhY3Rpb25d
KToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBjbGVhblVwSW50ZXJhY3Rpb25dKToKKworICAg
ICAgICBVc2UgLV9kZWZlcnJpbmdHZXN0dXJlUmVjb2duaXplcnMgaW5zdGVhZCBvZiBoYXJkLWNv
ZGluZyBsb2dpYyBmb3IgZWFjaCBkZWZlcnJpbmcgZ2VzdHVyZS4KKworICAgICAgICAoLVtXS0Nv
bnRlbnRWaWV3IF9yZW1vdmVEZWZhdWx0R2VzdHVyZVJlY29nbml6ZXJzXSk6IERpdHRvLgorICAg
ICAgICAoLVtXS0NvbnRlbnRWaWV3IF9hZGREZWZhdWx0R2VzdHVyZVJlY29nbml6ZXJzXSk6IERp
dHRvLgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9kZWZlcnJpbmdHZXN0dXJlUmVjb2duaXpl
cnNdKToKKworICAgICAgICBXZSBub3cgaGF2ZSAzIGRpc3RpbmN0IGRlZmVycmluZyBnZXN0dXJl
czsgaW5zdGVhZCBvZiBoYW5kbGluZyB0aGUgdGhyZWUgZGVmZXJyaW5nIGdlc3R1cmVzIGluZGl2
aWR1YWxseSBpbgorICAgICAgICB2YXJpb3VzIHBsYWNlcyBpbiB0aGlzIGZpbGUsIGdyb3VwIHRo
ZW0gYWxsIGJlaGluZCBhIGdldHRlciB0aGF0IHJldHVybnMgYW4gYXJyYXkgb2YgZGVmZXJyaW5n
IGdlc3R1cmVzLCBhbmQgdXNlCisgICAgICAgIHRoaXMgaW5zdGVhZC4KKworICAgICAgICAoLVtX
S0NvbnRlbnRWaWV3IF9kb25lRGVmZXJyaW5nTmF0aXZlR2VzdHVyZXM6XSk6IERpdHRvLgorICAg
ICAgICAoLVtXS0NvbnRlbnRWaWV3IGdlc3R1cmVSZWNvZ25pemVyOnNob3VsZFJlY29nbml6ZVNp
bXVsdGFuZW91c2x5V2l0aEdlc3R1cmVSZWNvZ25pemVyOl0pOiBEaXR0by4KKyAgICAgICAgKC1b
V0tDb250ZW50VmlldyBkZWZlcnJpbmdHZXN0dXJlUmVjb2duaXplcjpzaG91bGREZWZlck90aGVy
R2VzdHVyZVJlY29nbml6ZXI6XSk6CisKKyAgICAgICAgUGFydGl0aW9uIHRoZSBzeW50aGV0aWMg
c2luZ2xlIHRhcCBhbmQgZG91YmxlIHRhcCBnZXN0dXJlcyBpbnRvIHRoZWlyIG93biBzdWJncmFw
aC4KKwogMjAyMC0wNS0xMSAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4K
IAogICAgICAgICBVbnJldmlld2VkLCBmaXggdGhlIHdhdGNoT1MgYnVpbGQgYWZ0ZXIgcjI2MTQ1
NwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJ
bnRlcmFjdGlvbi5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJ
bnRlcmFjdGlvbi5oCmluZGV4IDdhYmMzZTI5MDAxNDA2ODY0ZWZmM2JiZTQzYTI3OGM3Njg5Y2Uy
YjcuLmRkYjllYjAyNGJkYjAwY2EyOTJkZGRiODAwZGM0MDRkZDk5NmY4MGIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24uaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9u
LmgKQEAgLTIxMSw2ICsyMTEsNyBAQCBzdHJ1Y3QgV0tBdXRvQ29ycmVjdGlvbkRhdGEgewogI2lm
IEVOQUJMRShJT1NfVE9VQ0hfRVZFTlRTKQogICAgIFJldGFpblB0cjxXS0RlZmVycmluZ0dlc3R1
cmVSZWNvZ25pemVyPiBfZGVmZXJyaW5nR2VzdHVyZVJlY29nbml6ZXJGb3JJbW1lZGlhdGVseVJl
c2V0dGFibGVHZXN0dXJlczsKICAgICBSZXRhaW5QdHI8V0tEZWZlcnJpbmdHZXN0dXJlUmVjb2du
aXplcj4gX2RlZmVycmluZ0dlc3R1cmVSZWNvZ25pemVyRm9yRGVsYXllZFJlc2V0dGFibGVHZXN0
dXJlczsKKyAgICBSZXRhaW5QdHI8V0tEZWZlcnJpbmdHZXN0dXJlUmVjb2duaXplcj4gX2RlZmVy
cmluZ0dlc3R1cmVSZWNvZ25pemVyRm9yU3ludGhldGljVGFwR2VzdHVyZXM7CiAjZW5kaWYKICAg
ICBSZXRhaW5QdHI8VUlXZWJUb3VjaEV2ZW50c0dlc3R1cmVSZWNvZ25pemVyPiBfdG91Y2hFdmVu
dEdlc3R1cmVSZWNvZ25pemVyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQppbmRleCBkZjZjMDViNzM3ZWU3ZTQx
NWIzNTRiYjExODgwZGI1NDc4ZDEyMGMwLi40YWRiZjhhYWE5NWQ2MGRlNWI3OTA4NGNlYjI5ODky
MmM2NDQ5NGRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250
ZW50Vmlld0ludGVyYWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9X
S0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KQEAgLTc2MSwxMyArNzYxLDE3IEBAIC0gKHZvaWQp
c2V0VXBJbnRlcmFjdGlvbgogI2lmIEVOQUJMRShJT1NfVE9VQ0hfRVZFTlRTKQogICAgIF9kZWZl
cnJpbmdHZXN0dXJlUmVjb2duaXplckZvckltbWVkaWF0ZWx5UmVzZXR0YWJsZUdlc3R1cmVzID0g
YWRvcHROUyhbW1dLRGVmZXJyaW5nR2VzdHVyZVJlY29nbml6ZXIgYWxsb2NdIGluaXRXaXRoRGVm
ZXJyaW5nR2VzdHVyZURlbGVnYXRlOnNlbGZdKTsKICAgICBbX2RlZmVycmluZ0dlc3R1cmVSZWNv
Z25pemVyRm9ySW1tZWRpYXRlbHlSZXNldHRhYmxlR2VzdHVyZXMgc2V0TmFtZTpAIlRvdWNoIGV2
ZW50IGRlZmVycmVyIChpbW1lZGlhdGUgcmVzZXQpIl07Ci0gICAgW19kZWZlcnJpbmdHZXN0dXJl
UmVjb2duaXplckZvckltbWVkaWF0ZWx5UmVzZXR0YWJsZUdlc3R1cmVzIHNldERlbGVnYXRlOnNl
bGZdOwotICAgIFtzZWxmIGFkZEdlc3R1cmVSZWNvZ25pemVyOl9kZWZlcnJpbmdHZXN0dXJlUmVj
b2duaXplckZvckltbWVkaWF0ZWx5UmVzZXR0YWJsZUdlc3R1cmVzLmdldCgpXTsKIAogICAgIF9k
ZWZlcnJpbmdHZXN0dXJlUmVjb2duaXplckZvckRlbGF5ZWRSZXNldHRhYmxlR2VzdHVyZXMgPSBh
ZG9wdE5TKFtbV0tEZWZlcnJpbmdHZXN0dXJlUmVjb2duaXplciBhbGxvY10gaW5pdFdpdGhEZWZl
cnJpbmdHZXN0dXJlRGVsZWdhdGU6c2VsZl0pOwogICAgIFtfZGVmZXJyaW5nR2VzdHVyZVJlY29n
bml6ZXJGb3JEZWxheWVkUmVzZXR0YWJsZUdlc3R1cmVzIHNldE5hbWU6QCJUb3VjaCBldmVudCBk
ZWZlcnJlciAoZGVsYXllZCByZXNldCkiXTsKLSAgICBbX2RlZmVycmluZ0dlc3R1cmVSZWNvZ25p
emVyRm9yRGVsYXllZFJlc2V0dGFibGVHZXN0dXJlcyBzZXREZWxlZ2F0ZTpzZWxmXTsKLSAgICBb
c2VsZiBhZGRHZXN0dXJlUmVjb2duaXplcjpfZGVmZXJyaW5nR2VzdHVyZVJlY29nbml6ZXJGb3JE
ZWxheWVkUmVzZXR0YWJsZUdlc3R1cmVzLmdldCgpXTsKKworICAgIF9kZWZlcnJpbmdHZXN0dXJl
UmVjb2duaXplckZvclN5bnRoZXRpY1RhcEdlc3R1cmVzID0gYWRvcHROUyhbW1dLRGVmZXJyaW5n
R2VzdHVyZVJlY29nbml6ZXIgYWxsb2NdIGluaXRXaXRoRGVmZXJyaW5nR2VzdHVyZURlbGVnYXRl
OnNlbGZdKTsKKyAgICBbX2RlZmVycmluZ0dlc3R1cmVSZWNvZ25pemVyRm9yU3ludGhldGljVGFw
R2VzdHVyZXMgc2V0TmFtZTpAIlRvdWNoIGV2ZW50IGRlZmVycmVyIChzeW50aGV0aWMgdGFwKSJd
OworCisgICAgZm9yIChXS0RlZmVycmluZ0dlc3R1cmVSZWNvZ25pemVyICpnZXN0dXJlIGluIHNl
bGYuX2RlZmVycmluZ0dlc3R1cmVSZWNvZ25pemVycykgeworICAgICAgICBnZXN0dXJlLmRlbGVn
YXRlID0gc2VsZjsKKyAgICAgICAgW3NlbGYgYWRkR2VzdHVyZVJlY29nbml6ZXI6Z2VzdHVyZV07
CisgICAgfQogI2VuZGlmCiAKICAgICBfdG91Y2hFdmVudEdlc3R1cmVSZWNvZ25pemVyID0gYWRv
cHROUyhbW1VJV2ViVG91Y2hFdmVudHNHZXN0dXJlUmVjb2duaXplciBhbGxvY10gaW5pdFdpdGhU
YXJnZXQ6c2VsZiBhY3Rpb246QHNlbGVjdG9yKF93ZWJUb3VjaEV2ZW50c1JlY29nbml6ZWQ6KSB0
b3VjaERlbGVnYXRlOnNlbGZdKTsKQEAgLTkzNCwxMSArOTM4LDEwIEBAIC0gKHZvaWQpY2xlYW5V
cEludGVyYWN0aW9uCiAgICAgW3NlbGYgcmVtb3ZlR2VzdHVyZVJlY29nbml6ZXI6X3RvdWNoRXZl
bnRHZXN0dXJlUmVjb2duaXplci5nZXQoKV07CiAKICNpZiBFTkFCTEUoSU9TX1RPVUNIX0VWRU5U
UykKLSAgICBbX2RlZmVycmluZ0dlc3R1cmVSZWNvZ25pemVyRm9ySW1tZWRpYXRlbHlSZXNldHRh
YmxlR2VzdHVyZXMgc2V0RGVsZWdhdGU6bmlsXTsKLSAgICBbc2VsZiByZW1vdmVHZXN0dXJlUmVj
b2duaXplcjpfZGVmZXJyaW5nR2VzdHVyZVJlY29nbml6ZXJGb3JJbW1lZGlhdGVseVJlc2V0dGFi
bGVHZXN0dXJlcy5nZXQoKV07Ci0KLSAgICBbX2RlZmVycmluZ0dlc3R1cmVSZWNvZ25pemVyRm9y
RGVsYXllZFJlc2V0dGFibGVHZXN0dXJlcyBzZXREZWxlZ2F0ZTpuaWxdOwotICAgIFtzZWxmIHJl
bW92ZUdlc3R1cmVSZWNvZ25pemVyOl9kZWZlcnJpbmdHZXN0dXJlUmVjb2duaXplckZvckRlbGF5
ZWRSZXNldHRhYmxlR2VzdHVyZXMuZ2V0KCldOworICAgIGZvciAoV0tEZWZlcnJpbmdHZXN0dXJl
UmVjb2duaXplciAqZ2VzdHVyZSBpbiBzZWxmLl9kZWZlcnJpbmdHZXN0dXJlUmVjb2duaXplcnMp
IHsKKyAgICAgICAgZ2VzdHVyZS5kZWxlZ2F0ZSA9IG5pbDsKKyAgICAgICAgW3NlbGYgcmVtb3Zl
R2VzdHVyZVJlY29nbml6ZXI6Z2VzdHVyZV07CisgICAgfQogI2VuZGlmCiAKICNpZiBIQVZFKFVJ
S0lUX1dJVEhfTU9VU0VfU1VQUE9SVCkKQEAgLTEwNTMsOCArMTA1Niw4IEBAIC0gKHZvaWQpY2xl
YW5VcEludGVyYWN0aW9uCiAtICh2b2lkKV9yZW1vdmVEZWZhdWx0R2VzdHVyZVJlY29nbml6ZXJz
CiB7CiAjaWYgRU5BQkxFKElPU19UT1VDSF9FVkVOVFMpCi0gICAgW3NlbGYgcmVtb3ZlR2VzdHVy
ZVJlY29nbml6ZXI6X2RlZmVycmluZ0dlc3R1cmVSZWNvZ25pemVyRm9ySW1tZWRpYXRlbHlSZXNl
dHRhYmxlR2VzdHVyZXMuZ2V0KCldOwotICAgIFtzZWxmIHJlbW92ZUdlc3R1cmVSZWNvZ25pemVy
Ol9kZWZlcnJpbmdHZXN0dXJlUmVjb2duaXplckZvckRlbGF5ZWRSZXNldHRhYmxlR2VzdHVyZXMu
Z2V0KCldOworICAgIGZvciAoV0tEZWZlcnJpbmdHZXN0dXJlUmVjb2duaXplciAqZ2VzdHVyZSBp
biBzZWxmLl9kZWZlcnJpbmdHZXN0dXJlUmVjb2duaXplcnMpCisgICAgICAgIFtzZWxmIHJlbW92
ZUdlc3R1cmVSZWNvZ25pemVyOmdlc3R1cmVdOwogI2VuZGlmCiAgICAgW3NlbGYgcmVtb3ZlR2Vz
dHVyZVJlY29nbml6ZXI6X3RvdWNoRXZlbnRHZXN0dXJlUmVjb2duaXplci5nZXQoKV07CiAgICAg
W3NlbGYgcmVtb3ZlR2VzdHVyZVJlY29nbml6ZXI6X3NpbmdsZVRhcEdlc3R1cmVSZWNvZ25pemVy
LmdldCgpXTsKQEAgLTEwODEsOCArMTA4NCw4IEBAIC0gKHZvaWQpX3JlbW92ZURlZmF1bHRHZXN0
dXJlUmVjb2duaXplcnMKIC0gKHZvaWQpX2FkZERlZmF1bHRHZXN0dXJlUmVjb2duaXplcnMKIHsK
ICNpZiBFTkFCTEUoSU9TX1RPVUNIX0VWRU5UUykKLSAgICBbc2VsZiBhZGRHZXN0dXJlUmVjb2du
aXplcjpfZGVmZXJyaW5nR2VzdHVyZVJlY29nbml6ZXJGb3JJbW1lZGlhdGVseVJlc2V0dGFibGVH
ZXN0dXJlcy5nZXQoKV07Ci0gICAgW3NlbGYgYWRkR2VzdHVyZVJlY29nbml6ZXI6X2RlZmVycmlu
Z0dlc3R1cmVSZWNvZ25pemVyRm9yRGVsYXllZFJlc2V0dGFibGVHZXN0dXJlcy5nZXQoKV07Cisg
ICAgZm9yIChXS0RlZmVycmluZ0dlc3R1cmVSZWNvZ25pemVyICpnZXN0dXJlIGluIHNlbGYuX2Rl
ZmVycmluZ0dlc3R1cmVSZWNvZ25pemVycykKKyAgICAgICAgW3NlbGYgYWRkR2VzdHVyZVJlY29n
bml6ZXI6Z2VzdHVyZV07CiAjZW5kaWYKICAgICBbc2VsZiBhZGRHZXN0dXJlUmVjb2duaXplcjpf
dG91Y2hFdmVudEdlc3R1cmVSZWNvZ25pemVyLmdldCgpXTsKICAgICBbc2VsZiBhZGRHZXN0dXJl
UmVjb2duaXplcjpfc2luZ2xlVGFwR2VzdHVyZVJlY29nbml6ZXIuZ2V0KCldOwpAQCAtMTY1Niwx
MyArMTY1OSwyNyBAQCAtICh2b2lkKV93ZWJUb3VjaEV2ZW50Oihjb25zdCBXZWJLaXQ6Ok5hdGl2
ZVdlYlRvdWNoRXZlbnQmKXRvdWNoRXZlbnQgcHJldmVudHNOYQogCiAjaWYgRU5BQkxFKElPU19U
T1VDSF9FVkVOVFMpCiAKKy0gKE5TQXJyYXk8V0tEZWZlcnJpbmdHZXN0dXJlUmVjb2duaXplciAq
PiAqKV9kZWZlcnJpbmdHZXN0dXJlUmVjb2duaXplcnMKK3sKKyAgICBXS0RlZmVycmluZ0dlc3R1
cmVSZWNvZ25pemVyICpyZWNvZ25pemVyc1szXTsKKyAgICBOU1VJbnRlZ2VyIGNvdW50ID0gMDsK
KyAgICBhdXRvIGFkZCA9IFsmXSAoY29uc3QgUmV0YWluUHRyPFdLRGVmZXJyaW5nR2VzdHVyZVJl
Y29nbml6ZXI+JiByZWNvZ25pemVyKSB7CisgICAgICAgIGlmIChyZWNvZ25pemVyKQorICAgICAg
ICAgICAgcmVjb2duaXplcnNbY291bnQrK10gPSByZWNvZ25pemVyLmdldCgpOworICAgIH07Cisg
ICAgYWRkKF9kZWZlcnJpbmdHZXN0dXJlUmVjb2duaXplckZvckltbWVkaWF0ZWx5UmVzZXR0YWJs
ZUdlc3R1cmVzKTsKKyAgICBhZGQoX2RlZmVycmluZ0dlc3R1cmVSZWNvZ25pemVyRm9yRGVsYXll
ZFJlc2V0dGFibGVHZXN0dXJlcyk7CisgICAgYWRkKF9kZWZlcnJpbmdHZXN0dXJlUmVjb2duaXpl
ckZvclN5bnRoZXRpY1RhcEdlc3R1cmVzKTsKKyAgICByZXR1cm4gW05TQXJyYXkgYXJyYXlXaXRo
T2JqZWN0czpyZWNvZ25pemVycyBjb3VudDpjb3VudF07Cit9CisKIC0gKHZvaWQpX2RvbmVEZWZl
cnJpbmdOYXRpdmVHZXN0dXJlczooQk9PTClwcmV2ZW50TmF0aXZlR2VzdHVyZXMKIHsKLSAgICBb
X2RlZmVycmluZ0dlc3R1cmVSZWNvZ25pemVyRm9ySW1tZWRpYXRlbHlSZXNldHRhYmxlR2VzdHVy
ZXMgc2V0RGVmYXVsdFByZXZlbnRlZDpwcmV2ZW50TmF0aXZlR2VzdHVyZXNdOwotICAgIFtfZGVm
ZXJyaW5nR2VzdHVyZVJlY29nbml6ZXJGb3JEZWxheWVkUmVzZXR0YWJsZUdlc3R1cmVzIHNldERl
ZmF1bHRQcmV2ZW50ZWQ6cHJldmVudE5hdGl2ZUdlc3R1cmVzXTsKKyAgICBmb3IgKFdLRGVmZXJy
aW5nR2VzdHVyZVJlY29nbml6ZXIgKmdlc3R1cmUgaW4gc2VsZi5fZGVmZXJyaW5nR2VzdHVyZVJl
Y29nbml6ZXJzKQorICAgICAgICBbZ2VzdHVyZSBzZXREZWZhdWx0UHJldmVudGVkOnByZXZlbnRO
YXRpdmVHZXN0dXJlc107CiB9CiAKLSNlbmRpZgorI2VuZGlmIC8vIEVOQUJMRShJT1NfVE9VQ0hf
RVZFTlRTKQogCiBzdGF0aWMgTlNWYWx1ZSAqbnNTaXplRm9yVGFwSGlnaGxpZ2h0Qm9yZGVyUmFk
aXVzKFdlYkNvcmU6OkludFNpemUgYm9yZGVyUmFkaXVzLCBDR0Zsb2F0IGJvcmRlclJhZGl1c1Nj
YWxlKQogewpAQCAtMjA0MSwxMSArMjA1OCwxMCBAQCBzdGF0aWMgQ2xhc3MgdGFwQW5kQUhhbGZS
ZWNvZ25pemVyQ2xhc3MoKQogLSAoQk9PTClnZXN0dXJlUmVjb2duaXplcjooVUlHZXN0dXJlUmVj
b2duaXplciAqKWdlc3R1cmVSZWNvZ25pemVyIHNob3VsZFJlY29nbml6ZVNpbXVsdGFuZW91c2x5
V2l0aEdlc3R1cmVSZWNvZ25pemVyOihVSUdlc3R1cmVSZWNvZ25pemVyKilvdGhlckdlc3R1cmVS
ZWNvZ25pemVyCiB7CiAjaWYgRU5BQkxFKElPU19UT1VDSF9FVkVOVFMpCi0gICAgaWYgKGlzU2Ft
ZVBhaXIoZ2VzdHVyZVJlY29nbml6ZXIsIG90aGVyR2VzdHVyZVJlY29nbml6ZXIsIF90b3VjaEV2
ZW50R2VzdHVyZVJlY29nbml6ZXIuZ2V0KCksIF9kZWZlcnJpbmdHZXN0dXJlUmVjb2duaXplckZv
ckltbWVkaWF0ZWx5UmVzZXR0YWJsZUdlc3R1cmVzLmdldCgpKSkKLSAgICAgICAgcmV0dXJuIFlF
UzsKLQotICAgIGlmIChpc1NhbWVQYWlyKGdlc3R1cmVSZWNvZ25pemVyLCBvdGhlckdlc3R1cmVS
ZWNvZ25pemVyLCBfdG91Y2hFdmVudEdlc3R1cmVSZWNvZ25pemVyLmdldCgpLCBfZGVmZXJyaW5n
R2VzdHVyZVJlY29nbml6ZXJGb3JEZWxheWVkUmVzZXR0YWJsZUdlc3R1cmVzLmdldCgpKSkKLSAg
ICAgICAgcmV0dXJuIFlFUzsKKyAgICBmb3IgKFdLRGVmZXJyaW5nR2VzdHVyZVJlY29nbml6ZXIg
Kmdlc3R1cmUgaW4gc2VsZi5fZGVmZXJyaW5nR2VzdHVyZVJlY29nbml6ZXJzKSB7CisgICAgICAg
IGlmIChpc1NhbWVQYWlyKGdlc3R1cmVSZWNvZ25pemVyLCBvdGhlckdlc3R1cmVSZWNvZ25pemVy
LCBfdG91Y2hFdmVudEdlc3R1cmVSZWNvZ25pemVyLmdldCgpLCBnZXN0dXJlKSkKKyAgICAgICAg
ICAgIHJldHVybiBZRVM7CisgICAgfQogI2VuZGlmCiAKICAgICBpZiAoW2dlc3R1cmVSZWNvZ25p
emVyIGlzS2luZE9mQ2xhc3M6V0tEZWZlcnJpbmdHZXN0dXJlUmVjb2duaXplci5jbGFzc10gJiYg
W290aGVyR2VzdHVyZVJlY29nbml6ZXIgaXNLaW5kT2ZDbGFzczpXS0RlZmVycmluZ0dlc3R1cmVS
ZWNvZ25pemVyLmNsYXNzXSkKQEAgLTcxMDAsNiArNzExNiw5IEBAIC0gKEJPT0wpZGVmZXJyaW5n
R2VzdHVyZVJlY29nbml6ZXI6KFdLRGVmZXJyaW5nR2VzdHVyZVJlY29nbml6ZXIgKilkZWZlcnJp
bmdHZXN0CiAgICAgICAgIHJldHVybiBOTzsKICAgICB9OwogCisgICAgaWYgKGdlc3R1cmVSZWNv
Z25pemVyID09IF9kb3VibGVUYXBHZXN0dXJlUmVjb2duaXplciB8fCBnZXN0dXJlUmVjb2duaXpl
ciA9PSBfc2luZ2xlVGFwR2VzdHVyZVJlY29nbml6ZXIpCisgICAgICAgIHJldHVybiBkZWZlcnJp
bmdHZXN0dXJlUmVjb2duaXplciA9PSBfZGVmZXJyaW5nR2VzdHVyZVJlY29nbml6ZXJGb3JTeW50
aGV0aWNUYXBHZXN0dXJlczsKKwogICAgIGlmIChtYXlEZWxheVJlc2V0T2ZDb250YWluaW5nU3Vi
Z3JhcGgoZ2VzdHVyZVJlY29nbml6ZXIpKQogICAgICAgICByZXR1cm4gZGVmZXJyaW5nR2VzdHVy
ZVJlY29nbml6ZXIgPT0gX2RlZmVycmluZ0dlc3R1cmVSZWNvZ25pemVyRm9yRGVsYXllZFJlc2V0
dGFibGVHZXN0dXJlczsKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDFkNTk0ZTgxMjg2ZjU5OGU0NzM3MDQyZTQ4YmIwMjg5
YTIyOTZmMDMuLmJkZmE4MWViOWFmZmM3NzhmMDJjOTdmY2NkMDRhY2Y3MDE2Mjc2NjQgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxOCBAQAorMjAyMC0wNS0xMCAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVo
QGFwcGxlLmNvbT4KKworICAgICAgICBSRUdSRVNTSU9OIChyMjUzMjY3KTogaXNzdWVzIG9uIHRv
dWNoc3RhcnQvdG91Y2hlbmQvdG91Y2htb3ZlIChwb2ludGVyZG93bi9wb2ludGVydXAvcG9pbnRl
cm1vdmUpIGV2ZW50cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjExNTIxCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82Mjk0MjM3ND4KKworICAgICAg
ICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICBBZGQgYSBsYXlvdXQgdGVzdCB0
aGF0IHN5bnRoZXNpemVzIGEgdGFwLWFuZC1oYWxmIGdlc3R1cmUgb3ZlciBhbiBlbGVtZW50IHdp
dGggYWN0aXZlIHRvdWNoIGV2ZW50IGxpc3RlbmVycywgYW5kCisgICAgICAgIHZlcmlmaWVzIHRo
YXQgdGhlIHNlY29uZCBoYWxmIG9mIHRoZSBnZXN0dXJlIChpLmUuIHRoZSBwYW4gZ2VzdHVyZSkg
ZGlzcGF0Y2hlcyB0b3VjaHN0YXJ0LCB0b3VjaG1vdmUsIGFuZAorICAgICAgICB0b3VjaGVuZCBl
dmVudHMuCisKKyAgICAgICAgKiBmYXN0L2V2ZW50cy90b3VjaC9pb3MvdGFwLWFuZC1oYWxmLXdo
ZW4tdmlld3BvcnQtaXMtbm90LXJlc3BvbnNpdmUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAg
ICAgKiBmYXN0L2V2ZW50cy90b3VjaC9pb3MvdGFwLWFuZC1oYWxmLXdoZW4tdmlld3BvcnQtaXMt
bm90LXJlc3BvbnNpdmUuaHRtbDogQWRkZWQuCisKIDIwMjAtMDUtMTEgIEphc29uIExhd3JlbmNl
ICA8bGF3cmVuY2UuakBhcHBsZS5jb20+CiAKICAgICAgICAgWyBNYWMgd2sxIF0gaHR0cC90ZXN0
cy9zZWN1cml0eS9qYXZhc2NyaXB0VVJML3hzcy1ERU5JRUQtdG8tamF2YXNjcmlwdC11cmwtaW4t
Zm9yZWlnbi1kb21haW4tc3ViZnJhbWUuaHRtbCBpcyBmbGFreSBmYWlsaW5nLgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvaW9zL3RhcC1hbmQtaGFsZi13aGVuLXZp
ZXdwb3J0LWlzLW5vdC1yZXNwb25zaXZlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3Qv
ZXZlbnRzL3RvdWNoL2lvcy90YXAtYW5kLWhhbGYtd2hlbi12aWV3cG9ydC1pcy1ub3QtcmVzcG9u
c2l2ZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGM4ZmM2NjBhY2M3NDE1ZjVmYzRjNTU0NjU4
MWRkMTc5MjRiMDRkYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRz
L3RvdWNoL2lvcy90YXAtYW5kLWhhbGYtd2hlbi12aWV3cG9ydC1pcy1ub3QtcmVzcG9uc2l2ZS1l
eHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNSBAQAorVGhpcyB0ZXN0IHZlcmlmaWVzIHRoYXQgYSB0
YXAtYW5kLWhhbGYgZ2VzdHVyZSBkaXNwYXRjaGVzIHRvdWNoIGV2ZW50cyB3aGVuIHRoZSBwYWdl
IGlzIHpvb21lZCBpbi4gVG8gbWFudWFsbHkgcnVuIHRoZSB0ZXN0LCB0YXAgdGhlIHJlZCBzcXVh
cmUgYW5kIHRoZW4gaW1tZWRpYXRlbHkgcGVyZm9ybSBhIHBhbiBnZXN0dXJlIHN0YXJ0aW5nIGlu
IHRoZSBzYW1lIGxvY2F0aW9uIGFzIHRoZSB0YXAuIFRoZSByZXN1bHRpbmcgZXZlbnRzIHNob3Vs
ZCBjb25zaXN0IG9mICd0b3VjaHN0YXJ0JywgJ3RvdWNoZW5kJywgJ3RvdWNoc3RhcnQnLCBvbmUg
b3IgbW9yZSAndG91Y2htb3ZlJywgYW5kIGZpbmFsbHkgYSAndG91Y2hlbmQnLgorCitPbiBzdWNj
ZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBi
eSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBPYnNlcnZlZCB0b3VjaHN0YXJ0CitQQVNTIE9i
c2VydmVkIHRvdWNoZW5kCitQQVNTIE9ic2VydmVkIHRvdWNoc3RhcnQKK1BBU1MgT2JzZXJ2ZWQg
dG91Y2htb3ZlCitQQVNTIE9ic2VydmVkIHRvdWNoZW5kCitQQVNTIHRvdWNoZW5kQ291bnQgYmVj
YW1lIDIKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQor
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC9pb3MvdGFwLWFuZC1o
YWxmLXdoZW4tdmlld3BvcnQtaXMtbm90LXJlc3BvbnNpdmUuaHRtbCBiL0xheW91dFRlc3RzL2Zh
c3QvZXZlbnRzL3RvdWNoL2lvcy90YXAtYW5kLWhhbGYtd2hlbi12aWV3cG9ydC1pcy1ub3QtcmVz
cG9uc2l2ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBlNDU5MTYwNWZlZjg2ZjhmMjI0ZjliZTlhYTZhZmQ5
MmU3MjNkZDcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3Vj
aC9pb3MvdGFwLWFuZC1oYWxmLXdoZW4tdmlld3BvcnQtaXMtbm90LXJlc3BvbnNpdmUuaHRtbApA
QCAtMCwwICsxLDU0IEBACis8IURPQ1RZUEUgaHRtbD4gPCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIg
WyB1c2VGbGV4aWJsZVZpZXdwb3J0PXRydWUgXSAtLT4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBu
YW1lPSJ2aWV3cG9ydCIgY29udGVudD0iaW5pdGlhbC1zY2FsZT0wLjYiPgorPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMvdWktaGVscGVyLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+
Citqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKK2xhc3RFdmVudFR5cGUgPSBudWxsOwordG91Y2hlbmRD
b3VudCA9IDA7CisKK2Z1bmN0aW9uIGxvZ0V2ZW50KGV2ZW50KSB7CisgICAgaWYgKGV2ZW50LnR5
cGUgPT09IGxhc3RFdmVudFR5cGUpCisgICAgICAgIHJldHVybjsKKworICAgIGxhc3RFdmVudFR5
cGUgPSBldmVudC50eXBlOworICAgIHRlc3RQYXNzZWQoYE9ic2VydmVkICR7ZXZlbnQudHlwZX1g
KTsKKyAgICBpZiAoZXZlbnQudHlwZSA9PT0gInRvdWNoZW5kIikKKyAgICAgICAgdG91Y2hlbmRD
b3VudCsrOworfQorCithZGRFdmVudExpc3RlbmVyKCJsb2FkIiwgYXN5bmMgKCkgPT4geworICAg
IGNvbnN0IHRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0YXJnZXQiKTsKKyAgICB0
YXJnZXQuYWRkRXZlbnRMaXN0ZW5lcigidG91Y2hzdGFydCIsIGxvZ0V2ZW50LCB7IHBhc3NpdmUg
OiBmYWxzZSB9KTsKKyAgICB0YXJnZXQuYWRkRXZlbnRMaXN0ZW5lcigidG91Y2htb3ZlIiwgbG9n
RXZlbnQsIHsgcGFzc2l2ZSA6IGZhbHNlIH0pOworICAgIHRhcmdldC5hZGRFdmVudExpc3RlbmVy
KCJ0b3VjaGVuZCIsIGxvZ0V2ZW50LCB7IHBhc3NpdmUgOiBmYWxzZSB9KTsKKworICAgIGRlc2Ny
aXB0aW9uKCJUaGlzIHRlc3QgdmVyaWZpZXMgdGhhdCBhIHRhcC1hbmQtaGFsZiBnZXN0dXJlIGRp
c3BhdGNoZXMgdG91Y2ggZXZlbnRzIHdoZW4gdGhlIHBhZ2UgaXMgem9vbWVkIGluLiBUbyBtYW51
YWxseSBydW4gdGhlIHRlc3QsIHRhcCB0aGUgcmVkIHNxdWFyZSBhbmQgdGhlbiBpbW1lZGlhdGVs
eSBwZXJmb3JtIGEgcGFuIGdlc3R1cmUgc3RhcnRpbmcgaW4gdGhlIHNhbWUgbG9jYXRpb24gYXMg
dGhlIHRhcC4gVGhlIHJlc3VsdGluZyBldmVudHMgc2hvdWxkIGNvbnNpc3Qgb2YgJ3RvdWNoc3Rh
cnQnLCAndG91Y2hlbmQnLCAndG91Y2hzdGFydCcsIG9uZSBvciBtb3JlICd0b3VjaG1vdmUnLCBh
bmQgZmluYWxseSBhICd0b3VjaGVuZCcuIik7CisKKyAgICBhd2FpdCBVSUhlbHBlci5hY3RpdmF0
ZUF0KDEwMCwgMTAwKTsKKyAgICBhd2FpdCBVSUhlbHBlci5zZW5kRXZlbnRTdHJlYW0obmV3IFVJ
SGVscGVyLkV2ZW50U3RyZWFtQnVpbGRlcigpCisgICAgICAgIC5iZWdpbigxMDAsIDEwMCkKKyAg
ICAgICAgLm1vdmUoMTAwLCAyMDAsIDAuNSkKKyAgICAgICAgLmVuZCgpCisgICAgICAgIC50YWtl
UmVzdWx0KCkpOworCisgICAgYXdhaXQgbmV3IFByb21pc2UocmVzb2x2ZSA9PiBzaG91bGRCZWNv
bWVFcXVhbCgidG91Y2hlbmRDb3VudCIsICIyIiwgcmVzb2x2ZSkpOworICAgIGZpbmlzaEpTVGVz
dCgpOworfSk7Cis8L3NjcmlwdD4KKzxzdHlsZT4KKyN0YXJnZXQgeworICAgIHdpZHRoOiA0MDBw
eDsKKyAgICBoZWlnaHQ6IDQwMHB4OworICAgIGJhY2tncm91bmQtY29sb3I6IHJlZDsKK30KKzwv
c3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9InRhcmdldCI+PC9kaXY+Cis8cCBpZD0i
ZGVzY3JpcHRpb24iPjwvcD4KKzxwIGlkPSJjb25zb2xlIj48L3A+Cis8L2JvZHk+Cis8L2h0bWw+
Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>