<?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>162934</bug_id>
          
          <creation_ts>2016-10-04 14:02:51 -0700</creation_ts>
          <short_desc>[iOS WK2] Make it possible for a test to describe a user gesture as a stream of events in JSON format</short_desc>
          <delta_ts>2016-10-04 17:26:47 -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>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Simon Fraser (smfr)">simon.fraser</reporter>
          <assigned_to name="Simon Fraser (smfr)">simon.fraser</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>dino</cc>
    
    <cc>megan_gardner</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1236342</commentid>
    <comment_count>0</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2016-10-04 14:02:51 -0700</bug_when>
    <thetext>[iOS WK2] Make it possible for a test to describe a user gesture as a stream of events in JSON format</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1236350</commentid>
    <comment_count>1</comment_count>
      <attachid>290642</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2016-10-04 14:21:17 -0700</bug_when>
    <thetext>Created attachment 290642
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1236354</commentid>
    <comment_count>2</comment_count>
      <attachid>290644</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2016-10-04 14:26:05 -0700</bug_when>
    <thetext>Created attachment 290644
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1236355</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-10-04 14:27:22 -0700</bug_when>
    <thetext>Attachment 290644 did not pass style-queue:


ERROR: Tools/WebKitTestRunner/ios/HIDEventGenerator.mm:246:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Tools/WebKitTestRunner/ios/HIDEventGenerator.mm:247:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Tools/WebKitTestRunner/ios/HIDEventGenerator.mm:248:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Tools/WebKitTestRunner/ios/HIDEventGenerator.mm:249:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Tools/WebKitTestRunner/ios/HIDEventGenerator.mm:250:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Tools/WebKitTestRunner/ios/HIDEventGenerator.mm:251:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Tools/WebKitTestRunner/ios/HIDEventGenerator.mm:252:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Tools/WebKitTestRunner/ios/HIDEventGenerator.mm:253:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Tools/WebKitTestRunner/ios/HIDEventGenerator.mm:254:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Tools/WebKitTestRunner/ios/HIDEventGenerator.mm:255:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Tools/WebKitTestRunner/ios/HIDEventGenerator.mm:256:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Tools/WebKitTestRunner/ios/HIDEventGenerator.mm:257:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Tools/WebKitTestRunner/ios/HIDEventGenerator.mm:278:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Tools/WebKitTestRunner/ios/HIDEventGenerator.mm:279:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Tools/WebKitTestRunner/ios/HIDEventGenerator.mm:286:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Tools/WebKitTestRunner/ios/HIDEventGenerator.mm:287:  One space before end of line comments  [whitespace/comments] [5]
Total errors found: 16 in 11 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1236387</commentid>
    <comment_count>4</comment_count>
      <attachid>290653</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2016-10-04 15:19:36 -0700</bug_when>
    <thetext>Created attachment 290653
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1236388</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-10-04 15:21:29 -0700</bug_when>
    <thetext>Attachment 290653 did not pass style-queue:


ERROR: Tools/WebKitTestRunner/ios/HIDEventGenerator.mm:246:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Tools/WebKitTestRunner/ios/HIDEventGenerator.mm:247:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Tools/WebKitTestRunner/ios/HIDEventGenerator.mm:248:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Tools/WebKitTestRunner/ios/HIDEventGenerator.mm:249:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Tools/WebKitTestRunner/ios/HIDEventGenerator.mm:250:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Tools/WebKitTestRunner/ios/HIDEventGenerator.mm:251:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Tools/WebKitTestRunner/ios/HIDEventGenerator.mm:252:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Tools/WebKitTestRunner/ios/HIDEventGenerator.mm:253:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Tools/WebKitTestRunner/ios/HIDEventGenerator.mm:254:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Tools/WebKitTestRunner/ios/HIDEventGenerator.mm:255:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Tools/WebKitTestRunner/ios/HIDEventGenerator.mm:256:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Tools/WebKitTestRunner/ios/HIDEventGenerator.mm:257:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Tools/WebKitTestRunner/ios/HIDEventGenerator.mm:278:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Tools/WebKitTestRunner/ios/HIDEventGenerator.mm:279:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Tools/WebKitTestRunner/ios/HIDEventGenerator.mm:286:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Tools/WebKitTestRunner/ios/HIDEventGenerator.mm:287:  One space before end of line comments  [whitespace/comments] [5]
Total errors found: 16 in 12 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1236464</commentid>
    <comment_count>6</comment_count>
      <attachid>290653</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2016-10-04 17:07:59 -0700</bug_when>
    <thetext>Comment on attachment 290653
Patch

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

&gt; Tools/TestRunnerShared/UIScriptContext/Bindings/UIScriptController.idl:57
&gt; +    //              &quot;inputType&quot; : &quot;hand&quot;,

It&apos;s a bit weird that inputType is &quot;hand&quot; on the parent and &quot;finger&quot; on the child. I guess that&apos;s our system style, but maybe we could make it more friendly at this level.

&gt; Tools/TestRunnerShared/UIScriptContext/Bindings/UIScriptController.idl:63
&gt; +    //                      &quot;id&quot; : 1,

Do we need the id?

&gt; Tools/WebKitTestRunner/ios/HIDEventGenerator.h:88
&gt; +
&gt; +

Too many blank lines!

&gt; Tools/WebKitTestRunner/ios/HIDEventGenerator.mm:210
&gt; +        // If there are any new or ended events, mask includes touch

Nit: .

&gt; Tools/WebKitTestRunner/ios/HIDEventGenerator.mm:212
&gt; +            eventMask |= kIOHIDDigitizerEventTouch;

I think you can return here. Once that is set, nothing else matters.

&gt; Tools/WebKitTestRunner/ios/HIDEventGenerator.mm:231
&gt; +    CFIndex touch = 0;
&gt; +
&gt; +    NSArray *childEvents = info[HIDEventTouchesKey];
&gt; +    for (NSDictionary *touchInfo in childEvents) {
&gt; +        UITouchPhase phase = phaseFromString(touchInfo[HIDEventPhaseKey]);
&gt; +
&gt; +        if (phase == UITouchPhaseBegan || phase == UITouchPhaseMoved || phase == UITouchPhaseStationary)
&gt; +            touch = 1;
&gt; +    }
&gt; +    
&gt; +    return touch;

Do you need the touch variable?

It seems that touch = 1; could be just return 1; and the final statement return 0;

&gt; Tools/WebKitTestRunner/ios/HIDEventGenerator.mm:281
&gt; +            [touchInfo[HIDEventXKey] floatValue],

I can&apos;t remember ObjC or CF. If &quot;x&quot; wasn&apos;t provided, does this touchInfo[HIDEventXKey] return nil? and does that then provide a 0 floatValue? Should we do any validation on the input before getting here?

&gt; Tools/WebKitTestRunner/ios/HIDEventGenerator.mm:962
&gt; +        NSLog(@&quot;eventInfo is nil&quot;);

Did you really want to log here?

&gt; LayoutTests/fast/events/ios/event-stream-single-tap.html:28
&gt; +                var eventStream = {
&gt; +                    &quot;events&quot; : [
&gt; +                        {
&gt; +                            &quot;inputType&quot; : &quot;hand&quot;,
&gt; +                            &quot;timeOffset&quot; : 0,

Since you JSON.stringify  the object you don&apos;t need to quote the keys on this end.

&gt; LayoutTests/fast/events/ios/event-stream-single-tap.html:63
&gt; +            document.getElementById(&apos;result&apos;).textContent = &apos;PASS: received click.&apos;;

Use consistent quoting :)
And never use single quotes :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1236476</commentid>
    <comment_count>7</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2016-10-04 17:26:47 -0700</bug_when>
    <thetext>https://trac.webkit.org/r206798</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>290642</attachid>
            <date>2016-10-04 14:21:17 -0700</date>
            <delta_ts>2016-10-04 14:26:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-162934-20161004141806.patch</filename>
            <type>text/plain</type>
            <size>24191</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA2MTE5CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNDU3NGJiMzA2ZmJlMWIwZTE5ZWU0NzhkMDhiY2EyZDY4
ZDZjM2RiZi4uNWYwZGRlNTliZWFjZTlhMGQ1MDg3NWQ2NDc3OTBmMjk1OWY5MjhkZCAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4
IEBACisyMDE2LTEwLTA0ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgor
CisgICAgICAgIFtpT1MgV0syXSBNYWtlIGl0IHBvc3NpYmxlIGZvciBhIHRlc3QgdG8gZGVzY3Jp
YmUgYSB1c2VyIGdlc3R1cmUgYXMgYSBzdHJlYW0gb2YgZXZlbnRzIGluIEpTT04gZm9ybWF0Cisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjI5MzQKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXaXRoIHRoaXMg
Y2hhbmdlLCBhIHRlc3QgY2FuIGRlc2NyaWJlIGEgdXNlciBnZXN0dXJlIGluIGFuICJldmVudCBz
dHJlYW0iLCB3aGljaCBpcworICAgICAgICBzb21lIEpTT04gZGVzY3JpYmluZyBhbiBhcnJheSBv
ZiBldmVudHMgd2l0aCB0aGVpciB1bmRlcmx5aW5nIHRvdWNoZXMuIFRoZSBhZGRlZAorICAgICAg
ICB0ZXN0IGRlc2NyaWJlcyBhIHNpbmdsZSB0YXAuCisgICAgICAgIAorICAgICAgICBUaGUgaW1w
bGVtZW50YXRpb24gZmlyZXMgdXAgYW4gTlNUaHJlYWQsIGFuZCBzbGVlcHMgdGhlIHRocmVhZCBi
ZXR3ZWVuIGV2ZW50cyB0byBkaXNwYXRjaAorICAgICAgICB0aGVtIGF0IGNsb3NlIHRvIHJlYWwg
dGltZS4KKyAgICAgICAgCisgICAgICAgIEluIGZ1dHVyZSwgSElERXZlbnRHZW5lcmF0b3IgY291
bGQgdXNlIHRoaXMgaW50ZXJuYWxseSBmb3IgYWxsIG9mIHRoZSAiY29tcG91bmQiIGludGVyYWN0
aW9ucy4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2lvcy9VSVNjcmlwdENvbnRyb2xsZXJJ
T1MubW06CisgICAgICAgIChXVFI6OlVJU2NyaXB0Q29udHJvbGxlcjo6c2VuZEV2ZW50U3RyZWFt
KToKKyAgICAgICAgKiBUZXN0UnVubmVyU2hhcmVkL1VJU2NyaXB0Q29udGV4dC9CaW5kaW5ncy9V
SVNjcmlwdENvbnRyb2xsZXIuaWRsOgorICAgICAgICAqIFRlc3RSdW5uZXJTaGFyZWQvVUlTY3Jp
cHRDb250ZXh0L1VJU2NyaXB0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXVFI6OlVJU2NyaXB0
Q29udHJvbGxlcjo6c2VuZEV2ZW50U3RyZWFtKToKKyAgICAgICAgKiBUZXN0UnVubmVyU2hhcmVk
L1VJU2NyaXB0Q29udGV4dC9VSVNjcmlwdENvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBXZWJLaXRU
ZXN0UnVubmVyL2lvcy9ISURFdmVudEdlbmVyYXRvci5oOgorICAgICAgICAqIFdlYktpdFRlc3RS
dW5uZXIvaW9zL0hJREV2ZW50R2VuZXJhdG9yLm1tOgorICAgICAgICAodHJhbnNkdWNlclR5cGVG
cm9tU3RyaW5nKToKKyAgICAgICAgKHBoYXNlRnJvbVN0cmluZyk6CisgICAgICAgICgtW0hJREV2
ZW50R2VuZXJhdG9yIGV2ZW50TWFza0Zyb21FdmVudEluZm86XSk6CisgICAgICAgICgtW0hJREV2
ZW50R2VuZXJhdG9yIHRvdWNoRnJvbUV2ZW50SW5mbzpdKToKKyAgICAgICAgKC1bSElERXZlbnRH
ZW5lcmF0b3IgX2NyZWF0ZUlPSElERXZlbnRXaXRoSW5mbzpdKToKKyAgICAgICAgKC1bSElERXZl
bnRHZW5lcmF0b3IgZGlzcGF0Y2hFdmVudFdpdGhJbmZvOl0pOgorICAgICAgICAoLVtISURFdmVu
dEdlbmVyYXRvciBldmVudERpc3BhdGNoVGhyZWFkRW50cnk6XSk6CisgICAgICAgICgtW0hJREV2
ZW50R2VuZXJhdG9yIHNlbmRFdmVudFN0cmVhbTpjb21wbGV0aW9uQmxvY2s6XSk6CisgICAgICAg
ICogV2ViS2l0VGVzdFJ1bm5lci9pb3MvVUlTY3JpcHRDb250cm9sbGVySU9TLm1tOgorICAgICAg
ICAoV1RSOjpVSVNjcmlwdENvbnRyb2xsZXI6OnNlbmRFdmVudFN0cmVhbSk6CisKIDIwMTYtMDkt
MTkgIERhbmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBF
TkFCTEUoVEVYVF9BVVRPU0laSU5HKSBhdXRvbWF0aWMgdGV4dCBzaXplIGFkanVzdG1lbnQgY29k
ZQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvaW9zL1VJU2NyaXB0Q29udHJvbGxl
cklPUy5tbSBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2lvcy9VSVNjcmlwdENvbnRyb2xsZXJJT1Mu
bW0KaW5kZXggNTBjY2U0NDRhNzBlZGJhZWM4MmVmNzJhZWI1NzljODA5YzgxNzQxNy4uMTJjM2Ri
MTBjMzI3MWYwNTc5Y2I3OWEzOWY3MTM4YzNjMjJkZDZjNyAxMDA2NDQKLS0tIGEvVG9vbHMvRHVt
cFJlbmRlclRyZWUvaW9zL1VJU2NyaXB0Q29udHJvbGxlcklPUy5tbQorKysgYi9Ub29scy9EdW1w
UmVuZGVyVHJlZS9pb3MvVUlTY3JpcHRDb250cm9sbGVySU9TLm1tCkBAIC0xMDQsNiArMTA0LDEw
IEBAIHZvaWQgVUlTY3JpcHRDb250cm9sbGVyOjpzdHlsdXNUYXBBdFBvaW50KGxvbmcgeCwgbG9u
ZyB5LCBmbG9hdCBhemltdXRoQW5nbGUsIGZsCiB7CiB9CiAKK3ZvaWQgVUlTY3JpcHRDb250cm9s
bGVyOjpzZW5kRXZlbnRTdHJlYW0oSlNTdHJpbmdSZWYgZXZlbnRzSlNPTiwgSlNWYWx1ZVJlZiBj
YWxsYmFjaykKK3sKK30KKwogdm9pZCBVSVNjcmlwdENvbnRyb2xsZXI6OnR5cGVDaGFyYWN0ZXJV
c2luZ0hhcmR3YXJlS2V5Ym9hcmQoSlNTdHJpbmdSZWYgY2hhcmFjdGVyLCBKU1ZhbHVlUmVmIGNh
bGxiYWNrKQogewogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9VSVNjcmlw
dENvbnRleHQvQmluZGluZ3MvVUlTY3JpcHRDb250cm9sbGVyLmlkbCBiL1Rvb2xzL1Rlc3RSdW5u
ZXJTaGFyZWQvVUlTY3JpcHRDb250ZXh0L0JpbmRpbmdzL1VJU2NyaXB0Q29udHJvbGxlci5pZGwK
aW5kZXggMWM2NjIzZmQwNWUyZGNlZTBiOTVkNWE2ZTYyOTU0YjM3YmE0OGMwNy4uZjhhYjdlYjlk
OGZlOTI4YTlmNGZjZTVhNzE2NzZhZWE0YjY4NTRmOCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFJ1
bm5lclNoYXJlZC9VSVNjcmlwdENvbnRleHQvQmluZGluZ3MvVUlTY3JpcHRDb250cm9sbGVyLmlk
bAorKysgYi9Ub29scy9UZXN0UnVubmVyU2hhcmVkL1VJU2NyaXB0Q29udGV4dC9CaW5kaW5ncy9V
SVNjcmlwdENvbnRyb2xsZXIuaWRsCkBAIC00Nyw2ICs0Nyw0MCBAQCBpbnRlcmZhY2UgVUlTY3Jp
cHRDb250cm9sbGVyIHsKICAgICB2b2lkIGtleURvd25Vc2luZ0hhcmR3YXJlS2V5Ym9hcmQoRE9N
U3RyaW5nIGNoYXJhY3Rlciwgb2JqZWN0IGNhbGxiYWNrKTsKICAgICB2b2lkIGtleVVwVXNpbmdI
YXJkd2FyZUtleWJvYXJkKERPTVN0cmluZyBjaGFyYWN0ZXIsIG9iamVjdCBjYWxsYmFjayk7CiAK
KyAgICAvLyBldmVudHNKU09OIGRlc2NyaWJlcyBhIHNlcmllcyBvZiB1c2VyIGV2ZW50cyBpbiBK
U09OIGZvcm0uIEZvciB0aGUga2V5cywgc2VlIEhJREV2ZW50R2VuZXJhdG9yLm1tLgorICAgIC8v
IEZvciBleGFtcGxlLCB0aGlzIEpTT04gZGVzY3JpYmVzIGEgdG91Y2ggZG93biBmb2xsb3dlZCBi
eSBhIHRvdWNoIHVwIChpLmUuIGEgc2luZ2xlIHRhcCkuCisgICAgLy8gIHsKKyAgICAvLyAgICAg
ICJldmVudHMiIDogWworICAgIC8vICAgICAgICAgIHsKKyAgICAvLyAgICAgICAgICAgICAgImlu
cHV0VHlwZSIgOiAiaGFuZCIsCisgICAgLy8gICAgICAgICAgICAgICJ0aW1lT2Zmc2V0IiA6IDAs
CisgICAgLy8gICAgICAgICAgICAgICJ0b3VjaGVzIiA6IFsKKyAgICAvLyAgICAgICAgICAgICAg
ICAgIHsKKyAgICAvLyAgICAgICAgICAgICAgICAgICAgICAiaW5wdXRUeXBlIiA6ICJmaW5nZXIi
LAorICAgIC8vICAgICAgICAgICAgICAgICAgICAgICJwaGFzZSIgOiAiYmVnYW4iLAorICAgIC8v
ICAgICAgICAgICAgICAgICAgICAgICJpZCIgOiAxLAorICAgIC8vICAgICAgICAgICAgICAgICAg
ICAgICJ4IiA6IDEwMCwKKyAgICAvLyAgICAgICAgICAgICAgICAgICAgICAieSIgOiAxMjAKKyAg
ICAvLyAgICAgICAgICAgICAgICAgIH0KKyAgICAvLyAgICAgICAgICAgICAgXQorICAgIC8vICAg
ICAgICAgIH0sCisgICAgLy8gICAgICAgICAgeworICAgIC8vICAgICAgICAgICAgICAiaW5wdXRU
eXBlIiA6ICJoYW5kIiwKKyAgICAvLyAgICAgICAgICAgICAgInRpbWVPZmZzZXQiIDogMC4wMDIs
IC8vIHNlY29uZHMgcmVsYXRpdmUgdG8gdGhlIGZpcnN0IGV2ZW50CisgICAgLy8gICAgICAgICAg
ICAgICJ0b3VjaGVzIiA6IFsKKyAgICAvLyAgICAgICAgICAgICAgICAgIHsKKyAgICAvLyAgICAg
ICAgICAgICAgICAgICAgICAiaW5wdXRUeXBlIiA6ICJmaW5nZXIiLAorICAgIC8vICAgICAgICAg
ICAgICAgICAgICAgICJwaGFzZSIgOiAiZW5kZWQiLAorICAgIC8vICAgICAgICAgICAgICAgICAg
ICAgICJpZCIgOiAxLAorICAgIC8vICAgICAgICAgICAgICAgICAgICAgICJ4IiA6IDEwMCwKKyAg
ICAvLyAgICAgICAgICAgICAgICAgICAgICAieSIgOiAxMjAKKyAgICAvLyAgICAgICAgICAgICAg
ICAgIH0KKyAgICAvLyAgICAgICAgICAgICAgXQorICAgIC8vICAgICAgICAgIH0sCisgICAgLy8g
ICAgICBdCisgICAgLy8gIH0KKyAgICB2b2lkIHNlbmRFdmVudFN0cmVhbShET01TdHJpbmcgZXZl
bnRzSlNPTiwgb2JqZWN0IGNhbGxiYWNrKTsKKwogICAgIC8vIEVxdWl2YWxlbnQgb2YgcHJlc3Np
bmcgdGhlIERvbmUgYnV0dG9uIGluIHRoZSBmb3JtIGFjY2Vzc29yeSBiYXIuCiAgICAgdm9pZCBk
aXNtaXNzRm9ybUFjY2Vzc29yeVZpZXcoKTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFJ1bm5l
clNoYXJlZC9VSVNjcmlwdENvbnRleHQvVUlTY3JpcHRDb250cm9sbGVyLmNwcCBiL1Rvb2xzL1Rl
c3RSdW5uZXJTaGFyZWQvVUlTY3JpcHRDb250ZXh0L1VJU2NyaXB0Q29udHJvbGxlci5jcHAKaW5k
ZXggNjEwZjk3ZDk1OTFmOTdiZGI2MTIxMGJhYmY5ODdmMWM0NDExOTU1Zi4uZTc2MmZhNjA0MjMx
NmM1NTJmZjVlMWNjNzE5YzY3NmNmZDk3YjU2NSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFJ1bm5l
clNoYXJlZC9VSVNjcmlwdENvbnRleHQvVUlTY3JpcHRDb250cm9sbGVyLmNwcAorKysgYi9Ub29s
cy9UZXN0UnVubmVyU2hhcmVkL1VJU2NyaXB0Q29udGV4dC9VSVNjcmlwdENvbnRyb2xsZXIuY3Bw
CkBAIC0xNzYsNiArMTc2LDEwIEBAIHZvaWQgVUlTY3JpcHRDb250cm9sbGVyOjpzdHlsdXNUYXBB
dFBvaW50KGxvbmcgeCwgbG9uZyB5LCBmbG9hdCBhemltdXRoQW5nbGUsIGZsCiB7CiB9CiAKK3Zv
aWQgVUlTY3JpcHRDb250cm9sbGVyOjpzZW5kRXZlbnRTdHJlYW0oSlNTdHJpbmdSZWYgZXZlbnRz
SlNPTiwgSlNWYWx1ZVJlZiBjYWxsYmFjaykKK3sKK30KKwogdm9pZCBVSVNjcmlwdENvbnRyb2xs
ZXI6OnR5cGVDaGFyYWN0ZXJVc2luZ0hhcmR3YXJlS2V5Ym9hcmQoSlNTdHJpbmdSZWYsIEpTVmFs
dWVSZWYpCiB7CiB9CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0UnVubmVyU2hhcmVkL1VJU2NyaXB0
Q29udGV4dC9VSVNjcmlwdENvbnRyb2xsZXIuaCBiL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvVUlT
Y3JpcHRDb250ZXh0L1VJU2NyaXB0Q29udHJvbGxlci5oCmluZGV4IDQyMjU1ZGEzNDM1ZWM0YTA2
OWRiNzNkNmMwZWJhODcxNmJmNWNlOWMuLmIxNTA3OWFhZDc5YzFiNDhiZWEwNGUzMmIxZDZmMmJk
YmQ2YTgwYTEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvVUlTY3JpcHRDb250
ZXh0L1VJU2NyaXB0Q29udHJvbGxlci5oCisrKyBiL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvVUlT
Y3JpcHRDb250ZXh0L1VJU2NyaXB0Q29udHJvbGxlci5oCkBAIC02Miw2ICs2Miw4IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHN0eWx1c1VwQXRQb2ludChsb25nIHgsIGxvbmcgeSwgSlNWYWx1ZVJlZiBj
YWxsYmFjayk7CiAgICAgdm9pZCBzdHlsdXNUYXBBdFBvaW50KGxvbmcgeCwgbG9uZyB5LCBmbG9h
dCBhemltdXRoQW5nbGUsIGZsb2F0IGFsdGl0dWRlQW5nbGUsIGZsb2F0IHByZXNzdXJlLCBKU1Zh
bHVlUmVmIGNhbGxiYWNrKTsKIAorICAgIHZvaWQgc2VuZEV2ZW50U3RyZWFtKEpTU3RyaW5nUmVm
IGV2ZW50c0pTT04sIEpTVmFsdWVSZWYgY2FsbGJhY2spOworCiAgICAgdm9pZCB0eXBlQ2hhcmFj
dGVyVXNpbmdIYXJkd2FyZUtleWJvYXJkKEpTU3RyaW5nUmVmIGNoYXJhY3RlciwgSlNWYWx1ZVJl
ZiBjYWxsYmFjayk7CiAgICAgdm9pZCBrZXlEb3duVXNpbmdIYXJkd2FyZUtleWJvYXJkKEpTU3Ry
aW5nUmVmIGNoYXJhY3RlciwgSlNWYWx1ZVJlZiBjYWxsYmFjayk7CiAgICAgdm9pZCBrZXlVcFVz
aW5nSGFyZHdhcmVLZXlib2FyZChKU1N0cmluZ1JlZiBjaGFyYWN0ZXIsIEpTVmFsdWVSZWYgY2Fs
bGJhY2spOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9pb3MvSElERXZlbnRH
ZW5lcmF0b3IuaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvaW9zL0hJREV2ZW50R2VuZXJhdG9y
LmgKaW5kZXggMmM5NmZlYTc3YmM1MGE3OGJmZThiYzNmMmVmMDAxY2JhNWZlMDM3NS4uNjRiNWU0
ODU5MTliOGVkMDBhODJjZjAxMzg1M2UxYTAwN2I4M2M5NyAxMDA2NDQKLS0tIGEvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9pb3MvSElERXZlbnRHZW5lcmF0b3IuaAorKysgYi9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL2lvcy9ISURFdmVudEdlbmVyYXRvci5oCkBAIC0yNyw2ICsyNywzMiBAQAogCiAj
aW1wb3J0IDxDb3JlR3JhcGhpY3MvQ0dHZW9tZXRyeS5oPgogCisvLyBLZXlzIGZvciBzZW5kRXZl
bnRTdHJlYW06Y29tcGxldGlvbkJsb2NrOi4KK2V4dGVybiBOU1N0cmluZyogY29uc3QgVG9wTGV2
ZWxFdmVudEluZm9LZXk7CitleHRlcm4gTlNTdHJpbmcqIGNvbnN0IEhJREV2ZW50SW5wdXRUeXBl
OworZXh0ZXJuIE5TU3RyaW5nKiBjb25zdCBISURFdmVudFRpbWVPZmZzZXRLZXk7CitleHRlcm4g
TlNTdHJpbmcqIGNvbnN0IEhJREV2ZW50UGhhc2VLZXk7CitleHRlcm4gTlNTdHJpbmcqIGNvbnN0
IEhJREV2ZW50VG91Y2hJREtleTsKK2V4dGVybiBOU1N0cmluZyogY29uc3QgSElERXZlbnRQcmVz
c3VyZUtleTsKK2V4dGVybiBOU1N0cmluZyogY29uc3QgSElERXZlbnRYS2V5OworZXh0ZXJuIE5T
U3RyaW5nKiBjb25zdCBISURFdmVudFlLZXk7CitleHRlcm4gTlNTdHJpbmcqIGNvbnN0IEhJREV2
ZW50VHdpc3RLZXk7CitleHRlcm4gTlNTdHJpbmcqIGNvbnN0IEhJREV2ZW50TWFqb3JSYWRpdXNL
ZXk7CitleHRlcm4gTlNTdHJpbmcqIGNvbnN0IEhJREV2ZW50TWlub3JSYWRpdXNLZXk7CitleHRl
cm4gTlNTdHJpbmcqIGNvbnN0IEhJREV2ZW50VG91Y2hlc0tleTsKKworLy8gVmFsdWVzIGZvciBI
SURFdmVudElucHV0VHlwZS4KK2V4dGVybiBOU1N0cmluZyogY29uc3QgSElERXZlbnRJbnB1dFR5
cGVIYW5kOworZXh0ZXJuIE5TU3RyaW5nKiBjb25zdCBISURFdmVudElucHV0VHlwZUZpbmdlcjsK
K2V4dGVybiBOU1N0cmluZyogY29uc3QgSElERXZlbnRJbnB1dFR5cGVTdHlsdXM7CisKKy8vIFZh
bHVlcyBmb3IgSElERXZlbnRQaGFzZUtleS4KK2V4dGVybiBOU1N0cmluZyogY29uc3QgSElERXZl
bnRQaGFzZUJlZ2FuOworZXh0ZXJuIE5TU3RyaW5nKiBjb25zdCBISURFdmVudFBoYXNlTW92ZWQ7
CitleHRlcm4gTlNTdHJpbmcqIGNvbnN0IEhJREV2ZW50UGhhc2VFbmRlZDsKK2V4dGVybiBOU1N0
cmluZyogY29uc3QgSElERXZlbnRQaGFzZUNhbmNlbGVkOworCisKIEBpbnRlcmZhY2UgSElERXZl
bnRHZW5lcmF0b3IgOiBOU09iamVjdAogCiArIChISURFdmVudEdlbmVyYXRvciAqKXNoYXJlZEhJ
REV2ZW50R2VuZXJhdG9yOwpAQCAtNTMsNiArNzksMTAgQEAKIC0gKHZvaWQpcGluY2hDbG9zZVdp
dGhTdGFydFBvaW50OihDR1BvaW50KXN0YXJ0TG9jYXRpb24gZW5kUG9pbnQ6KENHUG9pbnQpZW5k
TG9jYXRpb24gZHVyYXRpb246KGRvdWJsZSlzZWNvbmRzIGNvbXBsZXRpb25CbG9jazoodm9pZCAo
Xikodm9pZCkpY29tcGxldGlvbkJsb2NrOwogLSAodm9pZClwaW5jaE9wZW5XaXRoU3RhcnRQb2lu
dDooQ0dQb2ludClzdGFydExvY2F0aW9uIGVuZFBvaW50OihDR1BvaW50KWVuZExvY2F0aW9uIGR1
cmF0aW9uOihkb3VibGUpc2Vjb25kcyBjb21wbGV0aW9uQmxvY2s6KHZvaWQgKF4pKHZvaWQpKWNv
bXBsZXRpb25CbG9jazsKIAorLy8gRXZlbnQgc3RyZWFtCistICh2b2lkKXNlbmRFdmVudFN0cmVh
bTooTlNEaWN0aW9uYXJ5ICopZXZlbnRJbmZvIGNvbXBsZXRpb25CbG9jazoodm9pZCAoXikodm9p
ZCkpY29tcGxldGlvbkJsb2NrOworCisKIC0gKHZvaWQpbWFya2VyRXZlbnRSZWNlaXZlZDooSU9I
SURFdmVudFJlZilldmVudDsKIAogLy8gS2V5Ym9hcmQKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvaW9zL0hJREV2ZW50R2VuZXJhdG9yLm1tIGIvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9pb3MvSElERXZlbnRHZW5lcmF0b3IubW0KaW5kZXggZmFjYzQ1YTI5MGQ1Y2Q4YTgzZDdl
ZmIzNzI2MGU5NTBjMzM2NTk4MS4uN2IxOGUzN2U3YzU3ZTNiODQzMmViYzQxYjU0M2RhMGRlMGJh
ZDhkYiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9pb3MvSElERXZlbnRHZW5l
cmF0b3IubW0KKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9pb3MvSElERXZlbnRHZW5lcmF0
b3IubW0KQEAgLTM2LDYgKzM2LDI4IEBACiBTT0ZUX0xJTktfUFJJVkFURV9GUkFNRVdPUksoQmFj
a0JvYXJkU2VydmljZXMpCiBTT0ZUX0xJTksoQmFja0JvYXJkU2VydmljZXMsIEJLU0hJREV2ZW50
U2V0RGlnaXRpemVySW5mbywgdm9pZCwgKElPSElERXZlbnRSZWYgZGlnaXRpemVyRXZlbnQsIHVp
bnQzMl90IGNvbnRleHRJRCwgdWludDhfdCBzeXN0ZW1HZXN0dXJlaXNQb3NzaWJsZSwgdWludDhf
dCBpc1N5c3RlbUdlc3R1cmVTdGF0ZUNoYW5nZUV2ZW50LCBDRlN0cmluZ1JlZiBkaXNwbGF5VVVJ
RCwgQ0ZUaW1lSW50ZXJ2YWwgaW5pdGlhbFRvdWNoVGltZXN0YW1wLCBmbG9hdCBtYXhGb3JjZSks
IChkaWdpdGl6ZXJFdmVudCwgY29udGV4dElELCBzeXN0ZW1HZXN0dXJlaXNQb3NzaWJsZSwgaXNT
eXN0ZW1HZXN0dXJlU3RhdGVDaGFuZ2VFdmVudCwgZGlzcGxheVVVSUQsIGluaXRpYWxUb3VjaFRp
bWVzdGFtcCwgbWF4Rm9yY2UpKTsKIAorTlNTdHJpbmcqIGNvbnN0IFRvcExldmVsRXZlbnRJbmZv
S2V5ID0gQCJldmVudHMiOworTlNTdHJpbmcqIGNvbnN0IEhJREV2ZW50SW5wdXRUeXBlID0gQCJp
bnB1dFR5cGUiOworTlNTdHJpbmcqIGNvbnN0IEhJREV2ZW50VGltZU9mZnNldEtleSA9IEAidGlt
ZU9mZnNldCI7CitOU1N0cmluZyogY29uc3QgSElERXZlbnRUb3VjaGVzS2V5ID0gQCJ0b3VjaGVz
IjsKK05TU3RyaW5nKiBjb25zdCBISURFdmVudFBoYXNlS2V5ID0gQCJwaGFzZSI7CitOU1N0cmlu
ZyogY29uc3QgSElERXZlbnRUb3VjaElES2V5ID0gQCJpZCI7CitOU1N0cmluZyogY29uc3QgSElE
RXZlbnRQcmVzc3VyZUtleSA9IEAicHJlc3N1cmUiOworTlNTdHJpbmcqIGNvbnN0IEhJREV2ZW50
WEtleSA9IEAieCI7CitOU1N0cmluZyogY29uc3QgSElERXZlbnRZS2V5ID0gQCJ5IjsKK05TU3Ry
aW5nKiBjb25zdCBISURFdmVudFR3aXN0S2V5ID0gQCJ0d2lzdCI7CitOU1N0cmluZyogY29uc3Qg
SElERXZlbnRNYWpvclJhZGl1c0tleSA9IEAibWFqb3JSYWRpdXMiOworTlNTdHJpbmcqIGNvbnN0
IEhJREV2ZW50TWlub3JSYWRpdXNLZXkgPSBAIm1pbm9yUmFkaXVzIjsKKworTlNTdHJpbmcqIGNv
bnN0IEhJREV2ZW50SW5wdXRUeXBlSGFuZCA9IEAiaGFuZCI7CitOU1N0cmluZyogY29uc3QgSElE
RXZlbnRJbnB1dFR5cGVGaW5nZXIgPSBAImZpbmdlciI7CitOU1N0cmluZyogY29uc3QgSElERXZl
bnRJbnB1dFR5cGVTdHlsdXMgPSBAInN0eWx1cyI7CisKK05TU3RyaW5nKiBjb25zdCBISURFdmVu
dFBoYXNlQmVnYW4gPSBAImJlZ2FuIjsKK05TU3RyaW5nKiBjb25zdCBISURFdmVudFBoYXNlTW92
ZWQgPSBAIm1vdmVkIjsKK05TU3RyaW5nKiBjb25zdCBISURFdmVudFBoYXNlRW5kZWQgPSBAImVu
ZGVkIjsKK05TU3RyaW5nKiBjb25zdCBISURFdmVudFBoYXNlQ2FuY2VsZWQgPSBAImNhbmNlbGVk
IjsKKwogc3RhdGljIGNvbnN0IE5TVGltZUludGVydmFsIGZpbmdlckxpZnREZWxheSA9IDVlNzsK
IHN0YXRpYyBjb25zdCBOU1RpbWVJbnRlcnZhbCBtdWx0aVRhcEludGVydmFsID0gMTVlNzsKIHN0
YXRpYyBjb25zdCBOU1RpbWVJbnRlcnZhbCBmaW5nZXJNb3ZlSW50ZXJ2YWwgPSAwLjAxNjsKQEAg
LTE0Niw2ICsxNjgsMTM1IEBAIC0gKHZvaWQpX3NlbmRJT0hJREtleWJvYXJkRXZlbnQ6KHVpbnQ2
NF90KXRpbWVzdGFtcCB1c2FnZToodWludDMyX3QpdXNhZ2UgaXNLZXlECiAgICAgW3NlbGYgX3Nl
bmRISURFdmVudDpldmVudFJlZi5nZXQoKV07CiB9CiAKK3N0YXRpYyBJT0hJRERpZ2l0aXplclRy
YW5zZHVjZXJUeXBlIHRyYW5zZHVjZXJUeXBlRnJvbVN0cmluZyhOU1N0cmluZyAqIHRyYW5zZHVj
ZXJUeXBlU3RyaW5nKQoreworICAgIGlmIChbdHJhbnNkdWNlclR5cGVTdHJpbmcgaXNFcXVhbFRv
U3RyaW5nOkhJREV2ZW50SW5wdXRUeXBlSGFuZF0pCisgICAgICAgIHJldHVybiBrSU9ISUREaWdp
dGl6ZXJUcmFuc2R1Y2VyVHlwZUhhbmQ7CisKKyAgICBpZiAoW3RyYW5zZHVjZXJUeXBlU3RyaW5n
IGlzRXF1YWxUb1N0cmluZzpISURFdmVudElucHV0VHlwZUZpbmdlcl0pCisgICAgICAgIHJldHVy
biBrSU9ISUREaWdpdGl6ZXJUcmFuc2R1Y2VyVHlwZUZpbmdlcjsKKworICAgIGlmIChbdHJhbnNk
dWNlclR5cGVTdHJpbmcgaXNFcXVhbFRvU3RyaW5nOkhJREV2ZW50SW5wdXRUeXBlU3R5bHVzXSkK
KyAgICAgICAgcmV0dXJuIGtJT0hJRERpZ2l0aXplclRyYW5zZHVjZXJUeXBlU3R5bHVzOworICAg
IAorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiAwOworfQorCitzdGF0aWMg
VUlUb3VjaFBoYXNlIHBoYXNlRnJvbVN0cmluZyhOU1N0cmluZyAqc3RyaW5nKQoreworICAgIGlm
IChbc3RyaW5nIGlzRXF1YWxUb1N0cmluZzpISURFdmVudFBoYXNlQmVnYW5dKQorICAgICAgICBy
ZXR1cm4gVUlUb3VjaFBoYXNlQmVnYW47CisKKyAgICBpZiAoW3N0cmluZyBpc0VxdWFsVG9TdHJp
bmc6SElERXZlbnRQaGFzZU1vdmVkXSkKKyAgICAgICAgcmV0dXJuIFVJVG91Y2hQaGFzZU1vdmVk
OworCisgICAgaWYgKFtzdHJpbmcgaXNFcXVhbFRvU3RyaW5nOkhJREV2ZW50UGhhc2VFbmRlZF0p
CisgICAgICAgIHJldHVybiBVSVRvdWNoUGhhc2VFbmRlZDsKKworICAgIGlmIChbc3RyaW5nIGlz
RXF1YWxUb1N0cmluZzpISURFdmVudFBoYXNlQ2FuY2VsZWRdKQorICAgICAgICByZXR1cm4gVUlU
b3VjaFBoYXNlQ2FuY2VsbGVkOworCisgICAgcmV0dXJuIFVJVG91Y2hQaGFzZVN0YXRpb25hcnk7
Cit9CisKKy0gKElPSElERGlnaXRpemVyRXZlbnRNYXNrKWV2ZW50TWFza0Zyb21FdmVudEluZm86
KE5TRGljdGlvbmFyeSAqKWluZm8KK3sKKyAgICBJT0hJRERpZ2l0aXplckV2ZW50TWFzayBldmVu
dE1hc2sgPSAwOworCisgICAgTlNBcnJheSAqY2hpbGRFdmVudHMgPSBpbmZvW0hJREV2ZW50VG91
Y2hlc0tleV07CisgICAgZm9yIChOU0RpY3Rpb25hcnkgKnRvdWNoSW5mbyBpbiBjaGlsZEV2ZW50
cykgeworICAgICAgICBVSVRvdWNoUGhhc2UgcGhhc2UgPSBwaGFzZUZyb21TdHJpbmcodG91Y2hJ
bmZvW0hJREV2ZW50UGhhc2VLZXldKTsKKyAgICAgICAgLy8gSWYgdGhlcmUgYXJlIGFueSBuZXcg
b3IgZW5kZWQgZXZlbnRzLCBtYXNrIGluY2x1ZGVzIHRvdWNoCisgICAgICAgIGlmIChwaGFzZSA9
PSBVSVRvdWNoUGhhc2VCZWdhbiB8fCBwaGFzZSA9PSBVSVRvdWNoUGhhc2VFbmRlZCB8fCBwaGFz
ZSA9PSBVSVRvdWNoUGhhc2VDYW5jZWxsZWQpCisgICAgICAgICAgICBldmVudE1hc2sgfD0ga0lP
SElERGlnaXRpemVyRXZlbnRUb3VjaDsKKyAgICB9CisgICAgCisgICAgcmV0dXJuIGV2ZW50TWFz
azsKK30KKworLy8gUmV0dXJucyAxIGZvciBhbGwgZXZlbnRzIHdoZXJlIHRoZSBmaW5nZXJzIGFy
ZSBvbiB0aGUgZ2xhc3MgKGV2ZXJ5dGhpbmcgYnV0IGVuY2VkIGFuZCBjYW5jZWxlZCkuCistIChD
RkluZGV4KXRvdWNoRnJvbUV2ZW50SW5mbzooTlNEaWN0aW9uYXJ5ICopaW5mbworeworICAgIENG
SW5kZXggdG91Y2ggPSAwOworCisgICAgTlNBcnJheSAqY2hpbGRFdmVudHMgPSBpbmZvW0hJREV2
ZW50VG91Y2hlc0tleV07CisgICAgZm9yIChOU0RpY3Rpb25hcnkgKnRvdWNoSW5mbyBpbiBjaGls
ZEV2ZW50cykgeworICAgICAgICBVSVRvdWNoUGhhc2UgcGhhc2UgPSBwaGFzZUZyb21TdHJpbmco
dG91Y2hJbmZvW0hJREV2ZW50UGhhc2VLZXldKTsKKworICAgICAgICBpZiAocGhhc2UgPT0gVUlU
b3VjaFBoYXNlQmVnYW4gfHwgcGhhc2UgPT0gVUlUb3VjaFBoYXNlTW92ZWQgfHwgcGhhc2UgPT0g
VUlUb3VjaFBoYXNlU3RhdGlvbmFyeSkKKyAgICAgICAgICAgIHRvdWNoID0gMTsKKyAgICB9Cisg
ICAgCisgICAgcmV0dXJuIHRvdWNoOworfQorCisvLyBGSVhNRTogY2FsbGVycyBvZiBfY3JlYXRl
SU9ISURFdmVudFR5cGUgY291bGQgc3dpdGNoIHRvIHRoaXMuCistIChJT0hJREV2ZW50UmVmKV9j
cmVhdGVJT0hJREV2ZW50V2l0aEluZm86KE5TRGljdGlvbmFyeSAqKWluZm8KK3sKKyAgICB1aW50
NjRfdCBtYWNoVGltZSA9IG1hY2hfYWJzb2x1dGVfdGltZSgpOworCisgICAgSU9ISUREaWdpdGl6
ZXJFdmVudE1hc2sgZXZlbnRNYXNrID0gW3NlbGYgZXZlbnRNYXNrRnJvbUV2ZW50SW5mbzppbmZv
XTsKKworICAgIENGSW5kZXggcmFuZ2UgPSAwOworICAgIC8vIHRvdWNoIGlzIDEgaWYgYSBmaW5n
ZXIgaXMgZG93bi4KKyAgICBDRkluZGV4IHRvdWNoID0gW3NlbGYgdG91Y2hGcm9tRXZlbnRJbmZv
OmluZm9dOworCisgICAgSU9ISURFdmVudFJlZiBldmVudFJlZiA9IElPSElERXZlbnRDcmVhdGVE
aWdpdGl6ZXJFdmVudChrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBtYWNoVGltZSwKKyAgICAgICAgdHJh
bnNkdWNlclR5cGVGcm9tU3RyaW5nKGluZm9bSElERXZlbnRJbnB1dFR5cGVdKSwgIC8vIHRyYW5z
ZHVjZXJUeXBlCisgICAgICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAvLyBpbmRleAorICAgICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWRlbnRpZmllcgorICAgICAgICBldmVudE1h
c2ssICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZXZlbnQgbWFz
aworICAgICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gYnV0dG9uIGV2ZW50CisgICAgICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB4CisgICAgICAgIDAsICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB5CisgICAgICAgIDAsICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB6CisgICAgICAg
IDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBw
cmVzdXJlCisgICAgICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAvLyB0d2lzdAorICAgICAgICByYW5nZSwgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmFuZ2UKKyAgICAgICAgdG91Y2gsICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRvdWNoCisgICAgICAgIGtJ
T0hJREV2ZW50T3B0aW9uTm9uZSk7CisKKyAgICBJT0hJREV2ZW50U2V0SW50ZWdlclZhbHVlKGV2
ZW50UmVmLCBrSU9ISURFdmVudEZpZWxkRGlnaXRpemVySXNEaXNwbGF5SW50ZWdyYXRlZCwgMSk7
CisKKyAgICBOU0FycmF5ICpjaGlsZEV2ZW50cyA9IGluZm9bSElERXZlbnRUb3VjaGVzS2V5XTsK
KyAgICBmb3IgKE5TRGljdGlvbmFyeSAqdG91Y2hJbmZvIGluIGNoaWxkRXZlbnRzKSB7CisKKyAg
ICAgICAgSU9ISUREaWdpdGl6ZXJFdmVudE1hc2sgY2hpbGRFdmVudE1hc2sgPSAwOworCisgICAg
ICAgIFVJVG91Y2hQaGFzZSBwaGFzZSA9IHBoYXNlRnJvbVN0cmluZyh0b3VjaEluZm9bSElERXZl
bnRQaGFzZUtleV0pOworICAgICAgICBpZiAocGhhc2UgIT0gVUlUb3VjaFBoYXNlQ2FuY2VsbGVk
ICYmIHBoYXNlICE9IFVJVG91Y2hQaGFzZUJlZ2FuICYmIHBoYXNlICE9IFVJVG91Y2hQaGFzZUVu
ZGVkKQorICAgICAgICAgICAgY2hpbGRFdmVudE1hc2sgfD0ga0lPSElERGlnaXRpemVyRXZlbnRQ
b3NpdGlvbjsKKworICAgICAgICBpZiAocGhhc2UgPT0gVUlUb3VjaFBoYXNlQmVnYW4gfHwgcGhh
c2UgPT0gVUlUb3VjaFBoYXNlRW5kZWQgfHwgcGhhc2UgPT0gVUlUb3VjaFBoYXNlQ2FuY2VsbGVk
KQorICAgICAgICAgICAgY2hpbGRFdmVudE1hc2sgfD0gKGtJT0hJRERpZ2l0aXplckV2ZW50VG91
Y2ggfCBrSU9ISUREaWdpdGl6ZXJFdmVudFJhbmdlKTsKKworICAgICAgICBpZiAocGhhc2UgPT0g
VUlUb3VjaFBoYXNlQ2FuY2VsbGVkKQorICAgICAgICAgICAgY2hpbGRFdmVudE1hc2sgfD0ga0lP
SElERGlnaXRpemVyRXZlbnRDYW5jZWw7CisKKyAgICAgICAgSU9ISURFdmVudFJlZiBzdWJFdmVu
dCA9IElPSElERXZlbnRDcmVhdGVEaWdpdGl6ZXJGaW5nZXJFdmVudChrQ0ZBbGxvY2F0b3JEZWZh
dWx0LCBtYWNoVGltZSwKKyAgICAgICAgICAgIFt0b3VjaEluZm9bSElERXZlbnRUb3VjaElES2V5
XSBpbnRWYWx1ZV0sICAgICAgICAgICAgICAgLy8gaW5kZXgKKyAgICAgICAgICAgIDIsICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWRlbnRp
ZmllciAod2hpY2ggZmluZ2VyIHdlIHRoaW5rIGl0IGlzKS4gRklYTUU6IHRoaXMgc2hvdWxkIGNv
bWUgZnJvbSB0aGUgZGF0YS4KKyAgICAgICAgICAgIGNoaWxkRXZlbnRNYXNrLAorICAgICAgICAg
ICAgW3RvdWNoSW5mb1tISURFdmVudFhLZXldIGZsb2F0VmFsdWVdLAorICAgICAgICAgICAgW3Rv
dWNoSW5mb1tISURFdmVudFlLZXldIGZsb2F0VmFsdWVdLAorICAgICAgICAgICAgMCwgLy8gegor
ICAgICAgICAgICAgW3RvdWNoSW5mb1tISURFdmVudFByZXNzdXJlS2V5XSBmbG9hdFZhbHVlXSwK
KyAgICAgICAgICAgIFt0b3VjaEluZm9bSElERXZlbnRUd2lzdEtleV0gZmxvYXRWYWx1ZV0sCisg
ICAgICAgICAgICB0b3VjaCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC8vIHJhbmdlCisgICAgICAgICAgICB0b3VjaCwgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRvdWNoCisgICAgICAgICAgICBrSU9I
SURFdmVudE9wdGlvbk5vbmUpOworCisgICAgICAgIElPSElERXZlbnRTZXRGbG9hdFZhbHVlKHN1
YkV2ZW50LCBrSU9ISURFdmVudEZpZWxkRGlnaXRpemVyTWFqb3JSYWRpdXMsIFt0b3VjaEluZm9b
SElERXZlbnRNYWpvclJhZGl1c0tleV0gZmxvYXRWYWx1ZV0pOworICAgICAgICBJT0hJREV2ZW50
U2V0RmxvYXRWYWx1ZShzdWJFdmVudCwga0lPSElERXZlbnRGaWVsZERpZ2l0aXplck1pbm9yUmFk
aXVzLCBbdG91Y2hJbmZvW0hJREV2ZW50TWlub3JSYWRpdXNLZXldIGZsb2F0VmFsdWVdKTsKKwor
ICAgICAgICBJT0hJREV2ZW50QXBwZW5kRXZlbnQoZXZlbnRSZWYsIHN1YkV2ZW50LCAwKTsKKyAg
ICAgICAgQ0ZSZWxlYXNlKHN1YkV2ZW50KTsKKyAgICB9CisKKyAgICByZXR1cm4gZXZlbnRSZWY7
Cit9CisKIC0gKElPSElERXZlbnRSZWYpX2NyZWF0ZUlPSElERXZlbnRUeXBlOihIYW5kRXZlbnRU
eXBlKWV2ZW50VHlwZQogewogICAgIEJPT0wgaXNUb3VjaGluZyA9IChldmVudFR5cGUgPT0gSGFu
ZEV2ZW50VG91Y2hlZCB8fCBldmVudFR5cGUgPT0gSGFuZEV2ZW50TW92ZWQgfHwgZXZlbnRUeXBl
ID09IEhhbmRFdmVudENob3JkQ2hhbmdlZCB8fCBldmVudFR5cGUgPT0gU3R5bHVzRXZlbnRUb3Vj
aGVkIHx8IGV2ZW50VHlwZSA9PSBTdHlsdXNFdmVudE1vdmVkKTsKQEAgLTc1Nyw0ICs5MDgsNjIg
QEAgLSAodm9pZClrZXlVcDooTlNTdHJpbmcgKiljaGFyYWN0ZXIgY29tcGxldGlvbkJsb2NrOih2
b2lkICheKSh2b2lkKSljb21wbGV0aW9uQmwKICAgICBbc2VsZiBfc2VuZE1hcmtlckhJREV2ZW50
V2l0aENvbXBsZXRpb25CbG9jazpjb21wbGV0aW9uQmxvY2tdOwogfQogCistICh2b2lkKWRpc3Bh
dGNoRXZlbnRXaXRoSW5mbzooTlNEaWN0aW9uYXJ5ICopZXZlbnRJbmZvCit7CisgICAgQVNTRVJU
KFtOU1RocmVhZCBpc01haW5UaHJlYWRdKTsKKworICAgIFJldGFpblB0cjxJT0hJREV2ZW50UmVm
PiBldmVudFJlZiA9IGFkb3B0Q0YoW3NlbGYgX2NyZWF0ZUlPSElERXZlbnRXaXRoSW5mbzpldmVu
dEluZm9dKTsKKyAgICBbc2VsZiBfc2VuZEhJREV2ZW50OmV2ZW50UmVmLmdldCgpXTsKK30KKwor
LSAodm9pZClldmVudERpc3BhdGNoVGhyZWFkRW50cnk6KE5TRGljdGlvbmFyeSAqKXRocmVhZERh
dGEKK3sKKyAgICBOU0RpY3Rpb25hcnkgKmV2ZW50U3RyZWFtID0gdGhyZWFkRGF0YVtAImV2ZW50
SW5mbyJdOworICAgIHZvaWQgKF5jb21wbGV0aW9uQmxvY2spKCkgPSB0aHJlYWREYXRhW0AiY29t
cGxldGlvbkJsb2NrIl07CisKKyAgICBOU0FycmF5ICpldmVudHMgPSBldmVudFN0cmVhbVtUb3BM
ZXZlbEV2ZW50SW5mb0tleV07CisgICAgaWYgKCFldmVudHMuY291bnQpIHsKKyAgICAgICAgTlNM
b2coQCJObyBldmVudHMgZm91bmQgaW4gZXZlbnQgc3RyZWFtIik7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICBDRkFic29sdXRlVGltZSBzdGFydFRpbWUgPSBDRkFic29sdXRlVGltZUdl
dEN1cnJlbnQoKTsKKyAgICAKKyAgICBmb3IgKE5TRGljdGlvbmFyeSAqZXZlbnRJbmZvIGluIGV2
ZW50cykgeworICAgICAgICBOU1RpbWVJbnRlcnZhbCBldmVudFJlbGF0aXZlVGltZSA9IFtldmVu
dEluZm9bSElERXZlbnRUaW1lT2Zmc2V0S2V5XSBkb3VibGVWYWx1ZV07CisgICAgICAgIENGQWJz
b2x1dGVUaW1lIHRhcmdldFRpbWUgPSBzdGFydFRpbWUgKyBldmVudFJlbGF0aXZlVGltZTsKKyAg
ICAgICAgCisgICAgICAgIENGVGltZUludGVydmFsIHdhaXRUaW1lID0gdGFyZ2V0VGltZSAtIENG
QWJzb2x1dGVUaW1lR2V0Q3VycmVudCgpOworICAgICAgICBpZiAod2FpdFRpbWUgPiAwKQorICAg
ICAgICAgICAgW05TVGhyZWFkIHNsZWVwRm9yVGltZUludGVydmFsOndhaXRUaW1lXTsKKworICAg
ICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBeIHsKKyAgICAg
ICAgICAgIFtzZWxmIGRpc3BhdGNoRXZlbnRXaXRoSW5mbzpldmVudEluZm9dOworICAgICAgICB9
KTsKKyAgICB9CisKKyAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgp
LCBeIHsKKyAgICAgICAgW3NlbGYgX3NlbmRNYXJrZXJISURFdmVudFdpdGhDb21wbGV0aW9uQmxv
Y2s6Y29tcGxldGlvbkJsb2NrXTsKKyAgICB9KTsKK30KKworLSAodm9pZClzZW5kRXZlbnRTdHJl
YW06KE5TRGljdGlvbmFyeSAqKWV2ZW50SW5mbyBjb21wbGV0aW9uQmxvY2s6KHZvaWQgKF4pKHZv
aWQpKWNvbXBsZXRpb25CbG9jaworeworICAgIGlmICghZXZlbnRJbmZvKSB7CisgICAgICAgIE5T
TG9nKEAiZXZlbnRJbmZvIGlzIG5pbCIpOworICAgICAgICBpZiAoY29tcGxldGlvbkJsb2NrKQor
ICAgICAgICAgICAgY29tcGxldGlvbkJsb2NrKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9Cisg
ICAgCisgICAgTlNEaWN0aW9uYXJ5KiB0aHJlYWREYXRhID0gQHsKKyAgICAgICAgQCJldmVudElu
Zm8iOiBbZXZlbnRJbmZvIGNvcHldLAorICAgICAgICBAImNvbXBsZXRpb25CbG9jayI6IFtbY29t
cGxldGlvbkJsb2NrIGNvcHldIGF1dG9yZWxlYXNlXQorICAgIH07CisgICAgCisgICAgTlNUaHJl
YWQgKmV2ZW50RGlzcGF0Y2hUaHJlYWQgPSBbW1tOU1RocmVhZCBhbGxvY10gaW5pdFdpdGhUYXJn
ZXQ6c2VsZiBzZWxlY3RvcjpAc2VsZWN0b3IoZXZlbnREaXNwYXRjaFRocmVhZEVudHJ5Oikgb2Jq
ZWN0OnRocmVhZERhdGFdIGF1dG9yZWxlYXNlXTsKKyAgICBldmVudERpc3BhdGNoVGhyZWFkLnF1
YWxpdHlPZlNlcnZpY2UgPSBOU1F1YWxpdHlPZlNlcnZpY2VVc2VySW50ZXJhY3RpdmU7CisgICAg
W2V2ZW50RGlzcGF0Y2hUaHJlYWQgc3RhcnRdOworfQorCiBAZW5kCmRpZmYgLS1naXQgYS9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL2lvcy9VSVNjcmlwdENvbnRyb2xsZXJJT1MubW0gYi9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL2lvcy9VSVNjcmlwdENvbnRyb2xsZXJJT1MubW0KaW5kZXggYmQ3ZWMw
MDEwM2IwMDY3ODkyZGMzZjJkODY4N2IwM2Q4YzdhZTk4Ni4uNWRkMzVjMGE3YTZhZTgyNmU1MzIy
OGVlMjU3ZWFiZWU4ZGMyNTQxNCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9p
b3MvVUlTY3JpcHRDb250cm9sbGVySU9TLm1tCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
aW9zL1VJU2NyaXB0Q29udHJvbGxlcklPUy5tbQpAQCAtMzQsNiArMzQsOCBAQAogI2ltcG9ydCAi
VGVzdENvbnRyb2xsZXIuaCIKICNpbXBvcnQgIlRlc3RSdW5uZXJXS1dlYlZpZXcuaCIKICNpbXBv
cnQgIlVJU2NyaXB0Q29udGV4dC5oIgorI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvSlNTdHJpbmdS
ZWYuaD4KKyNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL09wYXF1ZUpTU3RyaW5nLmg+CiAjaW1wb3J0
IDxVSUtpdC9VSUtpdC5oPgogI2ltcG9ydCA8V2ViQ29yZS9GbG9hdFJlY3QuaD4KICNpbXBvcnQg
PFdlYktpdC9XS1dlYlZpZXdQcml2YXRlLmg+CkBAIC0xNzQsNiArMTc2LDI0IEBAIHZvaWQgVUlT
Y3JpcHRDb250cm9sbGVyOjpzdHlsdXNUYXBBdFBvaW50KGxvbmcgeCwgbG9uZyB5LCBmbG9hdCBh
emltdXRoQW5nbGUsIGZsCiAgICAgfV07CiB9CiAKK3ZvaWQgVUlTY3JpcHRDb250cm9sbGVyOjpz
ZW5kRXZlbnRTdHJlYW0oSlNTdHJpbmdSZWYgZXZlbnRzSlNPTiwgSlNWYWx1ZVJlZiBjYWxsYmFj
aykKK3sKKyAgICB1bnNpZ25lZCBjYWxsYmFja0lEID0gbV9jb250ZXh0LT5wcmVwYXJlRm9yQXN5
bmNUYXNrKGNhbGxiYWNrLCBDYWxsYmFja1R5cGVOb25QZXJzaXN0ZW50KTsKKworICAgIFN0cmlu
ZyBqc29uU3RyaW5nID0gZXZlbnRzSlNPTi0+c3RyaW5nKCk7CisgICAgYXV0byBldmVudEluZm8g
PSBkeW5hbWljX29iamNfY2FzdDxOU0RpY3Rpb25hcnk+KFtOU0pTT05TZXJpYWxpemF0aW9uIEpT
T05PYmplY3RXaXRoRGF0YTpbKE5TU3RyaW5nICopanNvblN0cmluZyBkYXRhVXNpbmdFbmNvZGlu
ZzpOU1VURjhTdHJpbmdFbmNvZGluZ10gb3B0aW9uczowIGVycm9yOm5pbF0pOworICAgIGlmICgh
ZXZlbnRJbmZvIHx8ICFbZXZlbnRJbmZvIGlzS2luZE9mQ2xhc3M6W05TRGljdGlvbmFyeSBjbGFz
c11dKSB7CisgICAgICAgIFdURkxvZ0Fsd2F5cygiSlNPTiBpcyBub3QgY29udmVydGlibGUgdG8g
YSBkaWN0aW9uYXJ5Iik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAgW1tISURF
dmVudEdlbmVyYXRvciBzaGFyZWRISURFdmVudEdlbmVyYXRvcl0gc2VuZEV2ZW50U3RyZWFtOmV2
ZW50SW5mbyBjb21wbGV0aW9uQmxvY2s6XnsKKyAgICAgICAgaWYgKCFtX2NvbnRleHQpCisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIG1fY29udGV4dC0+YXN5bmNUYXNrQ29tcGxldGUoY2Fs
bGJhY2tJRCk7CisgICAgfV07Cit9CisKIHZvaWQgVUlTY3JpcHRDb250cm9sbGVyOjpkcmFnRnJv
bVBvaW50VG9Qb2ludChsb25nIHN0YXJ0WCwgbG9uZyBzdGFydFksIGxvbmcgZW5kWCwgbG9uZyBl
bmRZLCBkb3VibGUgZHVyYXRpb25TZWNvbmRzLCBKU1ZhbHVlUmVmIGNhbGxiYWNrKQogewogICAg
IHVuc2lnbmVkIGNhbGxiYWNrSUQgPSBtX2NvbnRleHQtPnByZXBhcmVGb3JBc3luY1Rhc2soY2Fs
bGJhY2ssIENhbGxiYWNrVHlwZU5vblBlcnNpc3RlbnQpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDllODE4N2IwMTMzY2Ni
ZmZmZjJiNzJiYWYzYWQwOWEwM2MwMzRkNTYuLjgxY2Q1NzRkOGYxNTY5Y2U4MWEwYzI0YmZiNWI3
OWQ4OWYyZTMxOWEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxNi0xMC0wNCAgU2ltb24gRnJh
c2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KKworICAgICAgICBbaU9TIFdLMl0gTWFrZSBp
dCBwb3NzaWJsZSBmb3IgYSB0ZXN0IHRvIGRlc2NyaWJlIGEgdXNlciBnZXN0dXJlIGFzIGEgc3Ry
ZWFtIG9mIGV2ZW50cyBpbiBKU09OIGZvcm1hdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYyOTM0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBmYXN0L2V2ZW50cy9pb3MvZXZlbnQtc3RyZWFtLXNpbmds
ZS10YXAtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2V2ZW50cy9pb3MvZXZl
bnQtc3RyZWFtLXNpbmdsZS10YXAuaHRtbDogQWRkZWQuCisKIDIwMTYtMDktMTkgIERhbmllbCBC
YXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBFTkFCTEUoVEVYVF9B
VVRPU0laSU5HKSBhdXRvbWF0aWMgdGV4dCBzaXplIGFkanVzdG1lbnQgY29kZQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvaW9zL2V2ZW50LXN0cmVhbS1zaW5nbGUtdGFwLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2lvcy9ldmVudC1zdHJlYW0tc2lu
Z2xlLXRhcC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDEzYzE2NzZmYzFkNjMxZjIxZDFhODZm
NGUxOTY2OTA4YWNkMzRjMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZXZl
bnRzL2lvcy9ldmVudC1zdHJlYW0tc2luZ2xlLXRhcC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSBA
QAorUEFTUzogcmVjZWl2ZWQgY2xpY2suCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V2
ZW50cy9pb3MvZXZlbnQtc3RyZWFtLXNpbmdsZS10YXAuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qv
ZXZlbnRzL2lvcy9ldmVudC1zdHJlYW0tc2luZ2xlLXRhcC5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI2MzZm
YmZhMTdkZjgwY2Q5MDE1OTliODdjMWMyMTViYmEyMjVlMTEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9pb3MvZXZlbnQtc3RyZWFtLXNpbmdsZS10YXAuaHRtbApA
QCAtMCwwICsxLDg2IEBACis8IURPQ1RZUEUgaHRtbD4gPCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIg
WyB1c2VGbGV4aWJsZVZpZXdwb3J0PXRydWUgXSAtLT4KKworPGh0bWw+Cis8bWV0YSBuYW1lPSJ2
aWV3cG9ydCIgY29udGVudD0iaW5pdGlhbC1zY2FsZT0xLjAsIHdpZHRoPWRldmljZS13aWR0aCI+
Cis8aGVhZD4KKyAgICA8c3R5bGU+CisgICAgICAgICN0YXJnZXQgeworICAgICAgICAgICAgaGVp
Z2h0OiAxMDBweDsKKyAgICAgICAgICAgIHdpZHRoOiAxMDBweDsKKyAgICAgICAgICAgIGJhY2tn
cm91bmQtY29sb3I6IGdyYXk7CisgICAgICAgIH0KKyAgICA8L3N0eWxlPgorICAgIDxzY3JpcHQ+
CisKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgICAgICB0ZXN0UnVu
bmVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgp
OworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gZ2V0VUlTY3JpcHQoZXZlbnRTdHJlYW0p
CisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBgCisgICAgICAgICAgICAoZnVuY3Rpb24o
KSB7CisgICAgICAgICAgICAgICAgdmFyIGV2ZW50U3RyZWFtID0geworICAgICAgICAgICAgICAg
ICAgICAiZXZlbnRzIiA6IFsKKyAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAiaW5wdXRUeXBlIiA6ICJoYW5kIiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAidGltZU9mZnNldCIgOiAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICJ0b3VjaGVzIiA6IFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImlucHV0VHlwZSIgOiAiZmluZ2VyIiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJwaGFzZSIgOiAiYmVnYW4iLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImlkIiA6IDEsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAieCIgOiA2MCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICJ5IiA6IDYwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBdCisgICAgICAgICAgICAgICAgICAgICAgICB9
LAorICAgICAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICJpbnB1dFR5cGUiIDogImhhbmQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0aW1l
T2Zmc2V0IiA6IDAuMDAwNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAidG91Y2hlcyIg
OiBbCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICJpbnB1dFR5cGUiIDogImZpbmdlciIsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAicGhhc2UiIDogImVuZGVkIiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICJpZCIgOiAxLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIngiIDogNjAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAieSIgOiA2MAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAg
ICAgICAgICAgICAgXQorICAgICAgICAgICAgICAgIH07CisKKyAgICAgICAgICAgICAgICB1aUNv
bnRyb2xsZXIuc2VuZEV2ZW50U3RyZWFtKEpTT04uc3RyaW5naWZ5KGV2ZW50U3RyZWFtKSwgZnVu
Y3Rpb24oKSB7CisgICAgICAgICAgICAgICAgICAgIHVpQ29udHJvbGxlci51aVNjcmlwdENvbXBs
ZXRlKCJEb25lIik7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9KSgpO2AKKyAg
ICAgICAgfQorICAgICAgICAKKyAgICAgICAgZnVuY3Rpb24gaGFuZGxlQ2xpY2soKQorICAgICAg
ICB7CisgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmVzdWx0JykudGV4dENv
bnRlbnQgPSAnUEFTUzogcmVjZWl2ZWQgY2xpY2suJzsKKyAgICAgICAgICAgIGlmICh3aW5kb3cu
dGVzdFJ1bm5lcikKKyAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKKyAg
ICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHJ1blRlc3QoKQorICAgICAgICB7CisgICAgICAg
ICAgICB2YXIgdGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRhcmdldCIpOworICAg
ICAgICAgICAgdGFyZ2V0LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgaGFuZGxlQ2xpY2ssIGZh
bHNlKTsKKworICAgICAgICAgICAgaWYgKCF0ZXN0UnVubmVyLnJ1blVJU2NyaXB0KQorICAgICAg
ICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgdGVzdFJ1bm5lci5ydW5VSVNjcmlwdChn
ZXRVSVNjcmlwdCgpLCBmdW5jdGlvbigpIHt9KTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAg
ICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCBydW5UZXN0LCBmYWxzZSk7CisgICAg
PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgICA8ZGl2IGlkPSJ0YXJnZXQiPjwvZGl2Pgor
ICAgIDxkaXYgaWQ9InJlc3VsdCI+RkFJTDogZGlkIG5vdCByZWNlaXZlIGNsaWNrIGV2ZW50Ljwv
ZGl2PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>290644</attachid>
            <date>2016-10-04 14:26:05 -0700</date>
            <delta_ts>2016-10-04 15:19:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-162934-20161004142254.patch</filename>
            <type>text/plain</type>
            <size>24157</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA2NzgyCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMGY0ODFjODRkYjEzYjVhNDQ0NDAyZTUzMjdjNjY5ZTNi
ZDM5NDk3My4uZGRkOWUwOTA4NTYyNjExYTc5NjBiOGM3MjI2ZTE0ZDY0YmRlYzJiYSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4
IEBACisyMDE2LTEwLTA0ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgor
CisgICAgICAgIFtpT1MgV0syXSBNYWtlIGl0IHBvc3NpYmxlIGZvciBhIHRlc3QgdG8gZGVzY3Jp
YmUgYSB1c2VyIGdlc3R1cmUgYXMgYSBzdHJlYW0gb2YgZXZlbnRzIGluIEpTT04gZm9ybWF0Cisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjI5MzQKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXaXRoIHRoaXMg
Y2hhbmdlLCBhIHRlc3QgY2FuIGRlc2NyaWJlIGEgdXNlciBnZXN0dXJlIGluIGFuICJldmVudCBz
dHJlYW0iLCB3aGljaCBpcworICAgICAgICBzb21lIEpTT04gZGVzY3JpYmluZyBhbiBhcnJheSBv
ZiBldmVudHMgd2l0aCB0aGVpciB1bmRlcmx5aW5nIHRvdWNoZXMuIFRoZSBhZGRlZAorICAgICAg
ICB0ZXN0IGRlc2NyaWJlcyBhIHNpbmdsZSB0YXAuCisgICAgICAgIAorICAgICAgICBUaGUgaW1w
bGVtZW50YXRpb24gZmlyZXMgdXAgYW4gTlNUaHJlYWQsIGFuZCBzbGVlcHMgdGhlIHRocmVhZCBi
ZXR3ZWVuIGV2ZW50cyB0byBkaXNwYXRjaAorICAgICAgICB0aGVtIGF0IGNsb3NlIHRvIHJlYWwg
dGltZS4KKyAgICAgICAgCisgICAgICAgIEluIGZ1dHVyZSwgSElERXZlbnRHZW5lcmF0b3IgY291
bGQgdXNlIHRoaXMgaW50ZXJuYWxseSBmb3IgYWxsIG9mIHRoZSAiY29tcG91bmQiIGludGVyYWN0
aW9ucy4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2lvcy9VSVNjcmlwdENvbnRyb2xsZXJJ
T1MubW06CisgICAgICAgIChXVFI6OlVJU2NyaXB0Q29udHJvbGxlcjo6c2VuZEV2ZW50U3RyZWFt
KToKKyAgICAgICAgKiBUZXN0UnVubmVyU2hhcmVkL1VJU2NyaXB0Q29udGV4dC9CaW5kaW5ncy9V
SVNjcmlwdENvbnRyb2xsZXIuaWRsOgorICAgICAgICAqIFRlc3RSdW5uZXJTaGFyZWQvVUlTY3Jp
cHRDb250ZXh0L1VJU2NyaXB0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXVFI6OlVJU2NyaXB0
Q29udHJvbGxlcjo6c2VuZEV2ZW50U3RyZWFtKToKKyAgICAgICAgKiBUZXN0UnVubmVyU2hhcmVk
L1VJU2NyaXB0Q29udGV4dC9VSVNjcmlwdENvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBXZWJLaXRU
ZXN0UnVubmVyL2lvcy9ISURFdmVudEdlbmVyYXRvci5oOgorICAgICAgICAqIFdlYktpdFRlc3RS
dW5uZXIvaW9zL0hJREV2ZW50R2VuZXJhdG9yLm1tOgorICAgICAgICAodHJhbnNkdWNlclR5cGVG
cm9tU3RyaW5nKToKKyAgICAgICAgKHBoYXNlRnJvbVN0cmluZyk6CisgICAgICAgICgtW0hJREV2
ZW50R2VuZXJhdG9yIGV2ZW50TWFza0Zyb21FdmVudEluZm86XSk6CisgICAgICAgICgtW0hJREV2
ZW50R2VuZXJhdG9yIHRvdWNoRnJvbUV2ZW50SW5mbzpdKToKKyAgICAgICAgKC1bSElERXZlbnRH
ZW5lcmF0b3IgX2NyZWF0ZUlPSElERXZlbnRXaXRoSW5mbzpdKToKKyAgICAgICAgKC1bSElERXZl
bnRHZW5lcmF0b3IgZGlzcGF0Y2hFdmVudFdpdGhJbmZvOl0pOgorICAgICAgICAoLVtISURFdmVu
dEdlbmVyYXRvciBldmVudERpc3BhdGNoVGhyZWFkRW50cnk6XSk6CisgICAgICAgICgtW0hJREV2
ZW50R2VuZXJhdG9yIHNlbmRFdmVudFN0cmVhbTpjb21wbGV0aW9uQmxvY2s6XSk6CisgICAgICAg
ICogV2ViS2l0VGVzdFJ1bm5lci9pb3MvVUlTY3JpcHRDb250cm9sbGVySU9TLm1tOgorICAgICAg
ICAoV1RSOjpVSVNjcmlwdENvbnRyb2xsZXI6OnNlbmRFdmVudFN0cmVhbSk6CisKIDIwMTYtMTAt
MDQgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CiAKICAgICAgICAgW0RP
TUpJVF0gSW50cm9kdWNlIERPTUpJVDo6R2V0dGVyU2V0dGVyIHRvIHRlbGwgSklUIGluZm9ybWF0
aW9uCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9pb3MvVUlTY3JpcHRDb250cm9s
bGVySU9TLm1tIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvaW9zL1VJU2NyaXB0Q29udHJvbGxlcklP
Uy5tbQppbmRleCAwZTY0NTk0MjhlYjhmMjUxMDA5MjczN2JhMTY2MjE1MTFkMjRjNDNiLi4wYzU3
MjhlZDdmNTdjM2I5ZTMxNjk0YzJmODc5NmM4MWQ1YTQ5OTQ2IDEwMDY0NAotLS0gYS9Ub29scy9E
dW1wUmVuZGVyVHJlZS9pb3MvVUlTY3JpcHRDb250cm9sbGVySU9TLm1tCisrKyBiL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL2lvcy9VSVNjcmlwdENvbnRyb2xsZXJJT1MubW0KQEAgLTEwOCw2ICsxMDgs
MTAgQEAgdm9pZCBVSVNjcmlwdENvbnRyb2xsZXI6OnN0eWx1c1RhcEF0UG9pbnQobG9uZyB4LCBs
b25nIHksIGZsb2F0IGF6aW11dGhBbmdsZSwgZmwKIHsKIH0KIAordm9pZCBVSVNjcmlwdENvbnRy
b2xsZXI6OnNlbmRFdmVudFN0cmVhbShKU1N0cmluZ1JlZiBldmVudHNKU09OLCBKU1ZhbHVlUmVm
IGNhbGxiYWNrKQoreworfQorCiB2b2lkIFVJU2NyaXB0Q29udHJvbGxlcjo6dHlwZUNoYXJhY3Rl
clVzaW5nSGFyZHdhcmVLZXlib2FyZChKU1N0cmluZ1JlZiBjaGFyYWN0ZXIsIEpTVmFsdWVSZWYg
Y2FsbGJhY2spCiB7CiB9CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0UnVubmVyU2hhcmVkL1VJU2Ny
aXB0Q29udGV4dC9CaW5kaW5ncy9VSVNjcmlwdENvbnRyb2xsZXIuaWRsIGIvVG9vbHMvVGVzdFJ1
bm5lclNoYXJlZC9VSVNjcmlwdENvbnRleHQvQmluZGluZ3MvVUlTY3JpcHRDb250cm9sbGVyLmlk
bAppbmRleCBmN2YwOTZlMTRkNTQ0YTE4ZDU4NWFiMjVlMzBkNjRiMGU1OGI5NGY5Li41ZTZjMjZl
NjBkYjE0ODFiZjU5YmNhNzMxODI0NTA3NDhjY2ZjYzExIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0
UnVubmVyU2hhcmVkL1VJU2NyaXB0Q29udGV4dC9CaW5kaW5ncy9VSVNjcmlwdENvbnRyb2xsZXIu
aWRsCisrKyBiL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvVUlTY3JpcHRDb250ZXh0L0JpbmRpbmdz
L1VJU2NyaXB0Q29udHJvbGxlci5pZGwKQEAgLTQ5LDYgKzQ5LDQwIEBAIGludGVyZmFjZSBVSVNj
cmlwdENvbnRyb2xsZXIgewogICAgIHZvaWQga2V5RG93blVzaW5nSGFyZHdhcmVLZXlib2FyZChE
T01TdHJpbmcgY2hhcmFjdGVyLCBvYmplY3QgY2FsbGJhY2spOwogICAgIHZvaWQga2V5VXBVc2lu
Z0hhcmR3YXJlS2V5Ym9hcmQoRE9NU3RyaW5nIGNoYXJhY3Rlciwgb2JqZWN0IGNhbGxiYWNrKTsK
IAorICAgIC8vIGV2ZW50c0pTT04gZGVzY3JpYmVzIGEgc2VyaWVzIG9mIHVzZXIgZXZlbnRzIGlu
IEpTT04gZm9ybS4gRm9yIHRoZSBrZXlzLCBzZWUgSElERXZlbnRHZW5lcmF0b3IubW0uCisgICAg
Ly8gRm9yIGV4YW1wbGUsIHRoaXMgSlNPTiBkZXNjcmliZXMgYSB0b3VjaCBkb3duIGZvbGxvd2Vk
IGJ5IGEgdG91Y2ggdXAgKGkuZS4gYSBzaW5nbGUgdGFwKS4KKyAgICAvLyAgeworICAgIC8vICAg
ICAgImV2ZW50cyIgOiBbCisgICAgLy8gICAgICAgICAgeworICAgIC8vICAgICAgICAgICAgICAi
aW5wdXRUeXBlIiA6ICJoYW5kIiwKKyAgICAvLyAgICAgICAgICAgICAgInRpbWVPZmZzZXQiIDog
MCwKKyAgICAvLyAgICAgICAgICAgICAgInRvdWNoZXMiIDogWworICAgIC8vICAgICAgICAgICAg
ICAgICAgeworICAgIC8vICAgICAgICAgICAgICAgICAgICAgICJpbnB1dFR5cGUiIDogImZpbmdl
ciIsCisgICAgLy8gICAgICAgICAgICAgICAgICAgICAgInBoYXNlIiA6ICJiZWdhbiIsCisgICAg
Ly8gICAgICAgICAgICAgICAgICAgICAgImlkIiA6IDEsCisgICAgLy8gICAgICAgICAgICAgICAg
ICAgICAgIngiIDogMTAwLAorICAgIC8vICAgICAgICAgICAgICAgICAgICAgICJ5IiA6IDEyMAor
ICAgIC8vICAgICAgICAgICAgICAgICAgfQorICAgIC8vICAgICAgICAgICAgICBdCisgICAgLy8g
ICAgICAgICAgfSwKKyAgICAvLyAgICAgICAgICB7CisgICAgLy8gICAgICAgICAgICAgICJpbnB1
dFR5cGUiIDogImhhbmQiLAorICAgIC8vICAgICAgICAgICAgICAidGltZU9mZnNldCIgOiAwLjAw
MiwgLy8gc2Vjb25kcyByZWxhdGl2ZSB0byB0aGUgZmlyc3QgZXZlbnQKKyAgICAvLyAgICAgICAg
ICAgICAgInRvdWNoZXMiIDogWworICAgIC8vICAgICAgICAgICAgICAgICAgeworICAgIC8vICAg
ICAgICAgICAgICAgICAgICAgICJpbnB1dFR5cGUiIDogImZpbmdlciIsCisgICAgLy8gICAgICAg
ICAgICAgICAgICAgICAgInBoYXNlIiA6ICJlbmRlZCIsCisgICAgLy8gICAgICAgICAgICAgICAg
ICAgICAgImlkIiA6IDEsCisgICAgLy8gICAgICAgICAgICAgICAgICAgICAgIngiIDogMTAwLAor
ICAgIC8vICAgICAgICAgICAgICAgICAgICAgICJ5IiA6IDEyMAorICAgIC8vICAgICAgICAgICAg
ICAgICAgfQorICAgIC8vICAgICAgICAgICAgICBdCisgICAgLy8gICAgICAgICAgfSwKKyAgICAv
LyAgICAgIF0KKyAgICAvLyAgfQorICAgIHZvaWQgc2VuZEV2ZW50U3RyZWFtKERPTVN0cmluZyBl
dmVudHNKU09OLCBvYmplY3QgY2FsbGJhY2spOworCiAgICAgLy8gRXF1aXZhbGVudCBvZiBwcmVz
c2luZyB0aGUgRG9uZSBidXR0b24gaW4gdGhlIGZvcm0gYWNjZXNzb3J5IGJhci4KICAgICB2b2lk
IGRpc21pc3NGb3JtQWNjZXNzb3J5VmlldygpOwogCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0UnVu
bmVyU2hhcmVkL1VJU2NyaXB0Q29udGV4dC9VSVNjcmlwdENvbnRyb2xsZXIuY3BwIGIvVG9vbHMv
VGVzdFJ1bm5lclNoYXJlZC9VSVNjcmlwdENvbnRleHQvVUlTY3JpcHRDb250cm9sbGVyLmNwcApp
bmRleCBjMWI4NTc4MDQ4ODhiODcxM2I0OTVlMzk4YWRhZTY0ZTVjNGNlZDUxLi41YzRjYmE1ODA5
ZWYyNGQyMGNhYzRiMTdiYTg0OGI2MjIzYTlhNTQzIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0UnVu
bmVyU2hhcmVkL1VJU2NyaXB0Q29udGV4dC9VSVNjcmlwdENvbnRyb2xsZXIuY3BwCisrKyBiL1Rv
b2xzL1Rlc3RSdW5uZXJTaGFyZWQvVUlTY3JpcHRDb250ZXh0L1VJU2NyaXB0Q29udHJvbGxlci5j
cHAKQEAgLTE4MCw2ICsxODAsMTAgQEAgdm9pZCBVSVNjcmlwdENvbnRyb2xsZXI6OnN0eWx1c1Rh
cEF0UG9pbnQobG9uZyB4LCBsb25nIHksIGZsb2F0IGF6aW11dGhBbmdsZSwgZmwKIHsKIH0KIAor
dm9pZCBVSVNjcmlwdENvbnRyb2xsZXI6OnNlbmRFdmVudFN0cmVhbShKU1N0cmluZ1JlZiBldmVu
dHNKU09OLCBKU1ZhbHVlUmVmIGNhbGxiYWNrKQoreworfQorCiB2b2lkIFVJU2NyaXB0Q29udHJv
bGxlcjo6dHlwZUNoYXJhY3RlclVzaW5nSGFyZHdhcmVLZXlib2FyZChKU1N0cmluZ1JlZiwgSlNW
YWx1ZVJlZikKIHsKIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvVUlTY3Jp
cHRDb250ZXh0L1VJU2NyaXB0Q29udHJvbGxlci5oIGIvVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9V
SVNjcmlwdENvbnRleHQvVUlTY3JpcHRDb250cm9sbGVyLmgKaW5kZXggNmUyMjJjY2NiNjhjNzU4
NDVmYzc2MTVlMjNlNzQ1MWU3NGRjMTU5MC4uMDg1YTdjYTU4NTQ4MGMxMDM5Yzg0MzQ4MjNkYzFh
Mzk2NDFiODUwYiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9VSVNjcmlwdENv
bnRleHQvVUlTY3JpcHRDb250cm9sbGVyLmgKKysrIGIvVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9V
SVNjcmlwdENvbnRleHQvVUlTY3JpcHRDb250cm9sbGVyLmgKQEAgLTYzLDcgKzYzLDkgQEAgcHVi
bGljOgogICAgIHZvaWQgc3R5bHVzVGFwQXRQb2ludChsb25nIHgsIGxvbmcgeSwgZmxvYXQgYXpp
bXV0aEFuZ2xlLCBmbG9hdCBhbHRpdHVkZUFuZ2xlLCBmbG9hdCBwcmVzc3VyZSwgSlNWYWx1ZVJl
ZiBjYWxsYmFjayk7CiAKICAgICB2b2lkIGxvbmdQcmVzc0F0UG9pbnQobG9uZyB4LCBsb25nIHks
IEpTVmFsdWVSZWYgY2FsbGJhY2spOwotICAgIAorCisgICAgdm9pZCBzZW5kRXZlbnRTdHJlYW0o
SlNTdHJpbmdSZWYgZXZlbnRzSlNPTiwgSlNWYWx1ZVJlZiBjYWxsYmFjayk7CisKICAgICB2b2lk
IHR5cGVDaGFyYWN0ZXJVc2luZ0hhcmR3YXJlS2V5Ym9hcmQoSlNTdHJpbmdSZWYgY2hhcmFjdGVy
LCBKU1ZhbHVlUmVmIGNhbGxiYWNrKTsKICAgICB2b2lkIGtleURvd25Vc2luZ0hhcmR3YXJlS2V5
Ym9hcmQoSlNTdHJpbmdSZWYgY2hhcmFjdGVyLCBKU1ZhbHVlUmVmIGNhbGxiYWNrKTsKICAgICB2
b2lkIGtleVVwVXNpbmdIYXJkd2FyZUtleWJvYXJkKEpTU3RyaW5nUmVmIGNoYXJhY3RlciwgSlNW
YWx1ZVJlZiBjYWxsYmFjayk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2lv
cy9ISURFdmVudEdlbmVyYXRvci5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9pb3MvSElERXZl
bnRHZW5lcmF0b3IuaAppbmRleCBlNTg0YjY5ODNjN2UxMTA0ODYzOTNhYjUyNmMwOGJlMjAxNjhm
ZmNmLi41ZTdjZGFkMWEyY2IyZDc3NDVkNTRkYTEzNjg0MmI5MGIyMWQ5YzFmIDEwMDY0NAotLS0g
YS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2lvcy9ISURFdmVudEdlbmVyYXRvci5oCisrKyBiL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvaW9zL0hJREV2ZW50R2VuZXJhdG9yLmgKQEAgLTI3LDYgKzI3
LDMyIEBACiAKICNpbXBvcnQgPENvcmVHcmFwaGljcy9DR0dlb21ldHJ5Lmg+CiAKKy8vIEtleXMg
Zm9yIHNlbmRFdmVudFN0cmVhbTpjb21wbGV0aW9uQmxvY2s6LgorZXh0ZXJuIE5TU3RyaW5nKiBj
b25zdCBUb3BMZXZlbEV2ZW50SW5mb0tleTsKK2V4dGVybiBOU1N0cmluZyogY29uc3QgSElERXZl
bnRJbnB1dFR5cGU7CitleHRlcm4gTlNTdHJpbmcqIGNvbnN0IEhJREV2ZW50VGltZU9mZnNldEtl
eTsKK2V4dGVybiBOU1N0cmluZyogY29uc3QgSElERXZlbnRQaGFzZUtleTsKK2V4dGVybiBOU1N0
cmluZyogY29uc3QgSElERXZlbnRUb3VjaElES2V5OworZXh0ZXJuIE5TU3RyaW5nKiBjb25zdCBI
SURFdmVudFByZXNzdXJlS2V5OworZXh0ZXJuIE5TU3RyaW5nKiBjb25zdCBISURFdmVudFhLZXk7
CitleHRlcm4gTlNTdHJpbmcqIGNvbnN0IEhJREV2ZW50WUtleTsKK2V4dGVybiBOU1N0cmluZyog
Y29uc3QgSElERXZlbnRUd2lzdEtleTsKK2V4dGVybiBOU1N0cmluZyogY29uc3QgSElERXZlbnRN
YWpvclJhZGl1c0tleTsKK2V4dGVybiBOU1N0cmluZyogY29uc3QgSElERXZlbnRNaW5vclJhZGl1
c0tleTsKK2V4dGVybiBOU1N0cmluZyogY29uc3QgSElERXZlbnRUb3VjaGVzS2V5OworCisvLyBW
YWx1ZXMgZm9yIEhJREV2ZW50SW5wdXRUeXBlLgorZXh0ZXJuIE5TU3RyaW5nKiBjb25zdCBISURF
dmVudElucHV0VHlwZUhhbmQ7CitleHRlcm4gTlNTdHJpbmcqIGNvbnN0IEhJREV2ZW50SW5wdXRU
eXBlRmluZ2VyOworZXh0ZXJuIE5TU3RyaW5nKiBjb25zdCBISURFdmVudElucHV0VHlwZVN0eWx1
czsKKworLy8gVmFsdWVzIGZvciBISURFdmVudFBoYXNlS2V5LgorZXh0ZXJuIE5TU3RyaW5nKiBj
b25zdCBISURFdmVudFBoYXNlQmVnYW47CitleHRlcm4gTlNTdHJpbmcqIGNvbnN0IEhJREV2ZW50
UGhhc2VNb3ZlZDsKK2V4dGVybiBOU1N0cmluZyogY29uc3QgSElERXZlbnRQaGFzZUVuZGVkOwor
ZXh0ZXJuIE5TU3RyaW5nKiBjb25zdCBISURFdmVudFBoYXNlQ2FuY2VsZWQ7CisKKwogQGludGVy
ZmFjZSBISURFdmVudEdlbmVyYXRvciA6IE5TT2JqZWN0CiAKICsgKEhJREV2ZW50R2VuZXJhdG9y
ICopc2hhcmVkSElERXZlbnRHZW5lcmF0b3I7CkBAIC01Niw2ICs4MiwxMCBAQAogLSAodm9pZClw
aW5jaENsb3NlV2l0aFN0YXJ0UG9pbnQ6KENHUG9pbnQpc3RhcnRMb2NhdGlvbiBlbmRQb2ludDoo
Q0dQb2ludCllbmRMb2NhdGlvbiBkdXJhdGlvbjooZG91YmxlKXNlY29uZHMgY29tcGxldGlvbkJs
b2NrOih2b2lkICheKSh2b2lkKSljb21wbGV0aW9uQmxvY2s7CiAtICh2b2lkKXBpbmNoT3Blbldp
dGhTdGFydFBvaW50OihDR1BvaW50KXN0YXJ0TG9jYXRpb24gZW5kUG9pbnQ6KENHUG9pbnQpZW5k
TG9jYXRpb24gZHVyYXRpb246KGRvdWJsZSlzZWNvbmRzIGNvbXBsZXRpb25CbG9jazoodm9pZCAo
Xikodm9pZCkpY29tcGxldGlvbkJsb2NrOwogCisvLyBFdmVudCBzdHJlYW0KKy0gKHZvaWQpc2Vu
ZEV2ZW50U3RyZWFtOihOU0RpY3Rpb25hcnkgKilldmVudEluZm8gY29tcGxldGlvbkJsb2NrOih2
b2lkICheKSh2b2lkKSljb21wbGV0aW9uQmxvY2s7CisKKwogLSAodm9pZCltYXJrZXJFdmVudFJl
Y2VpdmVkOihJT0hJREV2ZW50UmVmKWV2ZW50OwogCiAvLyBLZXlib2FyZApkaWZmIC0tZ2l0IGEv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9pb3MvSElERXZlbnRHZW5lcmF0b3IubW0gYi9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL2lvcy9ISURFdmVudEdlbmVyYXRvci5tbQppbmRleCAwYTg1ODI3YWM2
ZjE3MDg4OTIzMjA4NzUzMjljZWZkMjc2NDc3Yzk3Li4zZTAzNWQyZmViOTNiYTUyZDMyYTQzMzUx
MDk2ODk1OTc4MTU3OWZkIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2lvcy9I
SURFdmVudEdlbmVyYXRvci5tbQorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2lvcy9ISURF
dmVudEdlbmVyYXRvci5tbQpAQCAtMzcsNiArMzcsMjggQEAKIFNPRlRfTElOS19QUklWQVRFX0ZS
QU1FV09SSyhCYWNrQm9hcmRTZXJ2aWNlcykKIFNPRlRfTElOSyhCYWNrQm9hcmRTZXJ2aWNlcywg
QktTSElERXZlbnRTZXREaWdpdGl6ZXJJbmZvLCB2b2lkLCAoSU9ISURFdmVudFJlZiBkaWdpdGl6
ZXJFdmVudCwgdWludDMyX3QgY29udGV4dElELCB1aW50OF90IHN5c3RlbUdlc3R1cmVpc1Bvc3Np
YmxlLCB1aW50OF90IGlzU3lzdGVtR2VzdHVyZVN0YXRlQ2hhbmdlRXZlbnQsIENGU3RyaW5nUmVm
IGRpc3BsYXlVVUlELCBDRlRpbWVJbnRlcnZhbCBpbml0aWFsVG91Y2hUaW1lc3RhbXAsIGZsb2F0
IG1heEZvcmNlKSwgKGRpZ2l0aXplckV2ZW50LCBjb250ZXh0SUQsIHN5c3RlbUdlc3R1cmVpc1Bv
c3NpYmxlLCBpc1N5c3RlbUdlc3R1cmVTdGF0ZUNoYW5nZUV2ZW50LCBkaXNwbGF5VVVJRCwgaW5p
dGlhbFRvdWNoVGltZXN0YW1wLCBtYXhGb3JjZSkpOwogCitOU1N0cmluZyogY29uc3QgVG9wTGV2
ZWxFdmVudEluZm9LZXkgPSBAImV2ZW50cyI7CitOU1N0cmluZyogY29uc3QgSElERXZlbnRJbnB1
dFR5cGUgPSBAImlucHV0VHlwZSI7CitOU1N0cmluZyogY29uc3QgSElERXZlbnRUaW1lT2Zmc2V0
S2V5ID0gQCJ0aW1lT2Zmc2V0IjsKK05TU3RyaW5nKiBjb25zdCBISURFdmVudFRvdWNoZXNLZXkg
PSBAInRvdWNoZXMiOworTlNTdHJpbmcqIGNvbnN0IEhJREV2ZW50UGhhc2VLZXkgPSBAInBoYXNl
IjsKK05TU3RyaW5nKiBjb25zdCBISURFdmVudFRvdWNoSURLZXkgPSBAImlkIjsKK05TU3RyaW5n
KiBjb25zdCBISURFdmVudFByZXNzdXJlS2V5ID0gQCJwcmVzc3VyZSI7CitOU1N0cmluZyogY29u
c3QgSElERXZlbnRYS2V5ID0gQCJ4IjsKK05TU3RyaW5nKiBjb25zdCBISURFdmVudFlLZXkgPSBA
InkiOworTlNTdHJpbmcqIGNvbnN0IEhJREV2ZW50VHdpc3RLZXkgPSBAInR3aXN0IjsKK05TU3Ry
aW5nKiBjb25zdCBISURFdmVudE1ham9yUmFkaXVzS2V5ID0gQCJtYWpvclJhZGl1cyI7CitOU1N0
cmluZyogY29uc3QgSElERXZlbnRNaW5vclJhZGl1c0tleSA9IEAibWlub3JSYWRpdXMiOworCitO
U1N0cmluZyogY29uc3QgSElERXZlbnRJbnB1dFR5cGVIYW5kID0gQCJoYW5kIjsKK05TU3RyaW5n
KiBjb25zdCBISURFdmVudElucHV0VHlwZUZpbmdlciA9IEAiZmluZ2VyIjsKK05TU3RyaW5nKiBj
b25zdCBISURFdmVudElucHV0VHlwZVN0eWx1cyA9IEAic3R5bHVzIjsKKworTlNTdHJpbmcqIGNv
bnN0IEhJREV2ZW50UGhhc2VCZWdhbiA9IEAiYmVnYW4iOworTlNTdHJpbmcqIGNvbnN0IEhJREV2
ZW50UGhhc2VNb3ZlZCA9IEAibW92ZWQiOworTlNTdHJpbmcqIGNvbnN0IEhJREV2ZW50UGhhc2VF
bmRlZCA9IEAiZW5kZWQiOworTlNTdHJpbmcqIGNvbnN0IEhJREV2ZW50UGhhc2VDYW5jZWxlZCA9
IEAiY2FuY2VsZWQiOworCiBzdGF0aWMgY29uc3QgTlNUaW1lSW50ZXJ2YWwgZmluZ2VyTGlmdERl
bGF5ID0gMC4wNTsKIHN0YXRpYyBjb25zdCBOU1RpbWVJbnRlcnZhbCBtdWx0aVRhcEludGVydmFs
ID0gMC4xNTsKIHN0YXRpYyBjb25zdCBOU1RpbWVJbnRlcnZhbCBmaW5nZXJNb3ZlSW50ZXJ2YWwg
PSAwLjAxNjsKQEAgLTE0Niw2ICsxNjgsMTM1IEBAIC0gKHZvaWQpX3NlbmRJT0hJREtleWJvYXJk
RXZlbnQ6KHVpbnQ2NF90KXRpbWVzdGFtcCB1c2FnZToodWludDMyX3QpdXNhZ2UgaXNLZXlECiAg
ICAgW3NlbGYgX3NlbmRISURFdmVudDpldmVudFJlZi5nZXQoKV07CiB9CiAKK3N0YXRpYyBJT0hJ
RERpZ2l0aXplclRyYW5zZHVjZXJUeXBlIHRyYW5zZHVjZXJUeXBlRnJvbVN0cmluZyhOU1N0cmlu
ZyAqIHRyYW5zZHVjZXJUeXBlU3RyaW5nKQoreworICAgIGlmIChbdHJhbnNkdWNlclR5cGVTdHJp
bmcgaXNFcXVhbFRvU3RyaW5nOkhJREV2ZW50SW5wdXRUeXBlSGFuZF0pCisgICAgICAgIHJldHVy
biBrSU9ISUREaWdpdGl6ZXJUcmFuc2R1Y2VyVHlwZUhhbmQ7CisKKyAgICBpZiAoW3RyYW5zZHVj
ZXJUeXBlU3RyaW5nIGlzRXF1YWxUb1N0cmluZzpISURFdmVudElucHV0VHlwZUZpbmdlcl0pCisg
ICAgICAgIHJldHVybiBrSU9ISUREaWdpdGl6ZXJUcmFuc2R1Y2VyVHlwZUZpbmdlcjsKKworICAg
IGlmIChbdHJhbnNkdWNlclR5cGVTdHJpbmcgaXNFcXVhbFRvU3RyaW5nOkhJREV2ZW50SW5wdXRU
eXBlU3R5bHVzXSkKKyAgICAgICAgcmV0dXJuIGtJT0hJRERpZ2l0aXplclRyYW5zZHVjZXJUeXBl
U3R5bHVzOworICAgIAorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiAwOwor
fQorCitzdGF0aWMgVUlUb3VjaFBoYXNlIHBoYXNlRnJvbVN0cmluZyhOU1N0cmluZyAqc3RyaW5n
KQoreworICAgIGlmIChbc3RyaW5nIGlzRXF1YWxUb1N0cmluZzpISURFdmVudFBoYXNlQmVnYW5d
KQorICAgICAgICByZXR1cm4gVUlUb3VjaFBoYXNlQmVnYW47CisKKyAgICBpZiAoW3N0cmluZyBp
c0VxdWFsVG9TdHJpbmc6SElERXZlbnRQaGFzZU1vdmVkXSkKKyAgICAgICAgcmV0dXJuIFVJVG91
Y2hQaGFzZU1vdmVkOworCisgICAgaWYgKFtzdHJpbmcgaXNFcXVhbFRvU3RyaW5nOkhJREV2ZW50
UGhhc2VFbmRlZF0pCisgICAgICAgIHJldHVybiBVSVRvdWNoUGhhc2VFbmRlZDsKKworICAgIGlm
IChbc3RyaW5nIGlzRXF1YWxUb1N0cmluZzpISURFdmVudFBoYXNlQ2FuY2VsZWRdKQorICAgICAg
ICByZXR1cm4gVUlUb3VjaFBoYXNlQ2FuY2VsbGVkOworCisgICAgcmV0dXJuIFVJVG91Y2hQaGFz
ZVN0YXRpb25hcnk7Cit9CisKKy0gKElPSElERGlnaXRpemVyRXZlbnRNYXNrKWV2ZW50TWFza0Zy
b21FdmVudEluZm86KE5TRGljdGlvbmFyeSAqKWluZm8KK3sKKyAgICBJT0hJRERpZ2l0aXplckV2
ZW50TWFzayBldmVudE1hc2sgPSAwOworCisgICAgTlNBcnJheSAqY2hpbGRFdmVudHMgPSBpbmZv
W0hJREV2ZW50VG91Y2hlc0tleV07CisgICAgZm9yIChOU0RpY3Rpb25hcnkgKnRvdWNoSW5mbyBp
biBjaGlsZEV2ZW50cykgeworICAgICAgICBVSVRvdWNoUGhhc2UgcGhhc2UgPSBwaGFzZUZyb21T
dHJpbmcodG91Y2hJbmZvW0hJREV2ZW50UGhhc2VLZXldKTsKKyAgICAgICAgLy8gSWYgdGhlcmUg
YXJlIGFueSBuZXcgb3IgZW5kZWQgZXZlbnRzLCBtYXNrIGluY2x1ZGVzIHRvdWNoCisgICAgICAg
IGlmIChwaGFzZSA9PSBVSVRvdWNoUGhhc2VCZWdhbiB8fCBwaGFzZSA9PSBVSVRvdWNoUGhhc2VF
bmRlZCB8fCBwaGFzZSA9PSBVSVRvdWNoUGhhc2VDYW5jZWxsZWQpCisgICAgICAgICAgICBldmVu
dE1hc2sgfD0ga0lPSElERGlnaXRpemVyRXZlbnRUb3VjaDsKKyAgICB9CisgICAgCisgICAgcmV0
dXJuIGV2ZW50TWFzazsKK30KKworLy8gUmV0dXJucyAxIGZvciBhbGwgZXZlbnRzIHdoZXJlIHRo
ZSBmaW5nZXJzIGFyZSBvbiB0aGUgZ2xhc3MgKGV2ZXJ5dGhpbmcgYnV0IGVuY2VkIGFuZCBjYW5j
ZWxlZCkuCistIChDRkluZGV4KXRvdWNoRnJvbUV2ZW50SW5mbzooTlNEaWN0aW9uYXJ5ICopaW5m
bworeworICAgIENGSW5kZXggdG91Y2ggPSAwOworCisgICAgTlNBcnJheSAqY2hpbGRFdmVudHMg
PSBpbmZvW0hJREV2ZW50VG91Y2hlc0tleV07CisgICAgZm9yIChOU0RpY3Rpb25hcnkgKnRvdWNo
SW5mbyBpbiBjaGlsZEV2ZW50cykgeworICAgICAgICBVSVRvdWNoUGhhc2UgcGhhc2UgPSBwaGFz
ZUZyb21TdHJpbmcodG91Y2hJbmZvW0hJREV2ZW50UGhhc2VLZXldKTsKKworICAgICAgICBpZiAo
cGhhc2UgPT0gVUlUb3VjaFBoYXNlQmVnYW4gfHwgcGhhc2UgPT0gVUlUb3VjaFBoYXNlTW92ZWQg
fHwgcGhhc2UgPT0gVUlUb3VjaFBoYXNlU3RhdGlvbmFyeSkKKyAgICAgICAgICAgIHRvdWNoID0g
MTsKKyAgICB9CisgICAgCisgICAgcmV0dXJuIHRvdWNoOworfQorCisvLyBGSVhNRTogY2FsbGVy
cyBvZiBfY3JlYXRlSU9ISURFdmVudFR5cGUgY291bGQgc3dpdGNoIHRvIHRoaXMuCistIChJT0hJ
REV2ZW50UmVmKV9jcmVhdGVJT0hJREV2ZW50V2l0aEluZm86KE5TRGljdGlvbmFyeSAqKWluZm8K
K3sKKyAgICB1aW50NjRfdCBtYWNoVGltZSA9IG1hY2hfYWJzb2x1dGVfdGltZSgpOworCisgICAg
SU9ISUREaWdpdGl6ZXJFdmVudE1hc2sgZXZlbnRNYXNrID0gW3NlbGYgZXZlbnRNYXNrRnJvbUV2
ZW50SW5mbzppbmZvXTsKKworICAgIENGSW5kZXggcmFuZ2UgPSAwOworICAgIC8vIHRvdWNoIGlz
IDEgaWYgYSBmaW5nZXIgaXMgZG93bi4KKyAgICBDRkluZGV4IHRvdWNoID0gW3NlbGYgdG91Y2hG
cm9tRXZlbnRJbmZvOmluZm9dOworCisgICAgSU9ISURFdmVudFJlZiBldmVudFJlZiA9IElPSElE
RXZlbnRDcmVhdGVEaWdpdGl6ZXJFdmVudChrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBtYWNoVGltZSwK
KyAgICAgICAgdHJhbnNkdWNlclR5cGVGcm9tU3RyaW5nKGluZm9bSElERXZlbnRJbnB1dFR5cGVd
KSwgIC8vIHRyYW5zZHVjZXJUeXBlCisgICAgICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpbmRleAorICAgICAgICAwLCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWRlbnRpZmllcgorICAg
ICAgICBldmVudE1hc2ssICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ly8gZXZlbnQgbWFzaworICAgICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gYnV0dG9uIGV2ZW50CisgICAgICAgIDAsICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB4CisgICAgICAgIDAsICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB5CisgICAg
ICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAv
LyB6CisgICAgICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvLyBwcmVzdXJlCisgICAgICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAvLyB0d2lzdAorICAgICAgICByYW5nZSwgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmFuZ2UKKyAgICAgICAgdG91
Y2gsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRvdWNo
CisgICAgICAgIGtJT0hJREV2ZW50T3B0aW9uTm9uZSk7CisKKyAgICBJT0hJREV2ZW50U2V0SW50
ZWdlclZhbHVlKGV2ZW50UmVmLCBrSU9ISURFdmVudEZpZWxkRGlnaXRpemVySXNEaXNwbGF5SW50
ZWdyYXRlZCwgMSk7CisKKyAgICBOU0FycmF5ICpjaGlsZEV2ZW50cyA9IGluZm9bSElERXZlbnRU
b3VjaGVzS2V5XTsKKyAgICBmb3IgKE5TRGljdGlvbmFyeSAqdG91Y2hJbmZvIGluIGNoaWxkRXZl
bnRzKSB7CisKKyAgICAgICAgSU9ISUREaWdpdGl6ZXJFdmVudE1hc2sgY2hpbGRFdmVudE1hc2sg
PSAwOworCisgICAgICAgIFVJVG91Y2hQaGFzZSBwaGFzZSA9IHBoYXNlRnJvbVN0cmluZyh0b3Vj
aEluZm9bSElERXZlbnRQaGFzZUtleV0pOworICAgICAgICBpZiAocGhhc2UgIT0gVUlUb3VjaFBo
YXNlQ2FuY2VsbGVkICYmIHBoYXNlICE9IFVJVG91Y2hQaGFzZUJlZ2FuICYmIHBoYXNlICE9IFVJ
VG91Y2hQaGFzZUVuZGVkKQorICAgICAgICAgICAgY2hpbGRFdmVudE1hc2sgfD0ga0lPSElERGln
aXRpemVyRXZlbnRQb3NpdGlvbjsKKworICAgICAgICBpZiAocGhhc2UgPT0gVUlUb3VjaFBoYXNl
QmVnYW4gfHwgcGhhc2UgPT0gVUlUb3VjaFBoYXNlRW5kZWQgfHwgcGhhc2UgPT0gVUlUb3VjaFBo
YXNlQ2FuY2VsbGVkKQorICAgICAgICAgICAgY2hpbGRFdmVudE1hc2sgfD0gKGtJT0hJRERpZ2l0
aXplckV2ZW50VG91Y2ggfCBrSU9ISUREaWdpdGl6ZXJFdmVudFJhbmdlKTsKKworICAgICAgICBp
ZiAocGhhc2UgPT0gVUlUb3VjaFBoYXNlQ2FuY2VsbGVkKQorICAgICAgICAgICAgY2hpbGRFdmVu
dE1hc2sgfD0ga0lPSElERGlnaXRpemVyRXZlbnRDYW5jZWw7CisKKyAgICAgICAgSU9ISURFdmVu
dFJlZiBzdWJFdmVudCA9IElPSElERXZlbnRDcmVhdGVEaWdpdGl6ZXJGaW5nZXJFdmVudChrQ0ZB
bGxvY2F0b3JEZWZhdWx0LCBtYWNoVGltZSwKKyAgICAgICAgICAgIFt0b3VjaEluZm9bSElERXZl
bnRUb3VjaElES2V5XSBpbnRWYWx1ZV0sICAgICAgICAgICAgICAgLy8gaW5kZXgKKyAgICAgICAg
ICAgIDIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLy8gaWRlbnRpZmllciAod2hpY2ggZmluZ2VyIHdlIHRoaW5rIGl0IGlzKS4gRklYTUU6IHRo
aXMgc2hvdWxkIGNvbWUgZnJvbSB0aGUgZGF0YS4KKyAgICAgICAgICAgIGNoaWxkRXZlbnRNYXNr
LAorICAgICAgICAgICAgW3RvdWNoSW5mb1tISURFdmVudFhLZXldIGZsb2F0VmFsdWVdLAorICAg
ICAgICAgICAgW3RvdWNoSW5mb1tISURFdmVudFlLZXldIGZsb2F0VmFsdWVdLAorICAgICAgICAg
ICAgMCwgLy8gegorICAgICAgICAgICAgW3RvdWNoSW5mb1tISURFdmVudFByZXNzdXJlS2V5XSBm
bG9hdFZhbHVlXSwKKyAgICAgICAgICAgIFt0b3VjaEluZm9bSElERXZlbnRUd2lzdEtleV0gZmxv
YXRWYWx1ZV0sCisgICAgICAgICAgICB0b3VjaCwgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8vIHJhbmdlCisgICAgICAgICAgICB0b3VjaCwgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRvdWNoCisgICAg
ICAgICAgICBrSU9ISURFdmVudE9wdGlvbk5vbmUpOworCisgICAgICAgIElPSElERXZlbnRTZXRG
bG9hdFZhbHVlKHN1YkV2ZW50LCBrSU9ISURFdmVudEZpZWxkRGlnaXRpemVyTWFqb3JSYWRpdXMs
IFt0b3VjaEluZm9bSElERXZlbnRNYWpvclJhZGl1c0tleV0gZmxvYXRWYWx1ZV0pOworICAgICAg
ICBJT0hJREV2ZW50U2V0RmxvYXRWYWx1ZShzdWJFdmVudCwga0lPSElERXZlbnRGaWVsZERpZ2l0
aXplck1pbm9yUmFkaXVzLCBbdG91Y2hJbmZvW0hJREV2ZW50TWlub3JSYWRpdXNLZXldIGZsb2F0
VmFsdWVdKTsKKworICAgICAgICBJT0hJREV2ZW50QXBwZW5kRXZlbnQoZXZlbnRSZWYsIHN1YkV2
ZW50LCAwKTsKKyAgICAgICAgQ0ZSZWxlYXNlKHN1YkV2ZW50KTsKKyAgICB9CisKKyAgICByZXR1
cm4gZXZlbnRSZWY7Cit9CisKIC0gKElPSElERXZlbnRSZWYpX2NyZWF0ZUlPSElERXZlbnRUeXBl
OihIYW5kRXZlbnRUeXBlKWV2ZW50VHlwZQogewogICAgIEJPT0wgaXNUb3VjaGluZyA9IChldmVu
dFR5cGUgPT0gSGFuZEV2ZW50VG91Y2hlZCB8fCBldmVudFR5cGUgPT0gSGFuZEV2ZW50TW92ZWQg
fHwgZXZlbnRUeXBlID09IEhhbmRFdmVudENob3JkQ2hhbmdlZCB8fCBldmVudFR5cGUgPT0gU3R5
bHVzRXZlbnRUb3VjaGVkIHx8IGV2ZW50VHlwZSA9PSBTdHlsdXNFdmVudE1vdmVkKTsKQEAgLTc2
Niw0ICs5MTcsNjIgQEAgLSAodm9pZClrZXlVcDooTlNTdHJpbmcgKiljaGFyYWN0ZXIgY29tcGxl
dGlvbkJsb2NrOih2b2lkICheKSh2b2lkKSljb21wbGV0aW9uQmwKICAgICBbc2VsZiBfc2VuZE1h
cmtlckhJREV2ZW50V2l0aENvbXBsZXRpb25CbG9jazpjb21wbGV0aW9uQmxvY2tdOwogfQogCist
ICh2b2lkKWRpc3BhdGNoRXZlbnRXaXRoSW5mbzooTlNEaWN0aW9uYXJ5ICopZXZlbnRJbmZvCit7
CisgICAgQVNTRVJUKFtOU1RocmVhZCBpc01haW5UaHJlYWRdKTsKKworICAgIFJldGFpblB0cjxJ
T0hJREV2ZW50UmVmPiBldmVudFJlZiA9IGFkb3B0Q0YoW3NlbGYgX2NyZWF0ZUlPSElERXZlbnRX
aXRoSW5mbzpldmVudEluZm9dKTsKKyAgICBbc2VsZiBfc2VuZEhJREV2ZW50OmV2ZW50UmVmLmdl
dCgpXTsKK30KKworLSAodm9pZClldmVudERpc3BhdGNoVGhyZWFkRW50cnk6KE5TRGljdGlvbmFy
eSAqKXRocmVhZERhdGEKK3sKKyAgICBOU0RpY3Rpb25hcnkgKmV2ZW50U3RyZWFtID0gdGhyZWFk
RGF0YVtAImV2ZW50SW5mbyJdOworICAgIHZvaWQgKF5jb21wbGV0aW9uQmxvY2spKCkgPSB0aHJl
YWREYXRhW0AiY29tcGxldGlvbkJsb2NrIl07CisKKyAgICBOU0FycmF5ICpldmVudHMgPSBldmVu
dFN0cmVhbVtUb3BMZXZlbEV2ZW50SW5mb0tleV07CisgICAgaWYgKCFldmVudHMuY291bnQpIHsK
KyAgICAgICAgTlNMb2coQCJObyBldmVudHMgZm91bmQgaW4gZXZlbnQgc3RyZWFtIik7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICBDRkFic29sdXRlVGltZSBzdGFydFRpbWUgPSBDRkFi
c29sdXRlVGltZUdldEN1cnJlbnQoKTsKKyAgICAKKyAgICBmb3IgKE5TRGljdGlvbmFyeSAqZXZl
bnRJbmZvIGluIGV2ZW50cykgeworICAgICAgICBOU1RpbWVJbnRlcnZhbCBldmVudFJlbGF0aXZl
VGltZSA9IFtldmVudEluZm9bSElERXZlbnRUaW1lT2Zmc2V0S2V5XSBkb3VibGVWYWx1ZV07Cisg
ICAgICAgIENGQWJzb2x1dGVUaW1lIHRhcmdldFRpbWUgPSBzdGFydFRpbWUgKyBldmVudFJlbGF0
aXZlVGltZTsKKyAgICAgICAgCisgICAgICAgIENGVGltZUludGVydmFsIHdhaXRUaW1lID0gdGFy
Z2V0VGltZSAtIENGQWJzb2x1dGVUaW1lR2V0Q3VycmVudCgpOworICAgICAgICBpZiAod2FpdFRp
bWUgPiAwKQorICAgICAgICAgICAgW05TVGhyZWFkIHNsZWVwRm9yVGltZUludGVydmFsOndhaXRU
aW1lXTsKKworICAgICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgp
LCBeIHsKKyAgICAgICAgICAgIFtzZWxmIGRpc3BhdGNoRXZlbnRXaXRoSW5mbzpldmVudEluZm9d
OworICAgICAgICB9KTsKKyAgICB9CisKKyAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRf
bWFpbl9xdWV1ZSgpLCBeIHsKKyAgICAgICAgW3NlbGYgX3NlbmRNYXJrZXJISURFdmVudFdpdGhD
b21wbGV0aW9uQmxvY2s6Y29tcGxldGlvbkJsb2NrXTsKKyAgICB9KTsKK30KKworLSAodm9pZClz
ZW5kRXZlbnRTdHJlYW06KE5TRGljdGlvbmFyeSAqKWV2ZW50SW5mbyBjb21wbGV0aW9uQmxvY2s6
KHZvaWQgKF4pKHZvaWQpKWNvbXBsZXRpb25CbG9jaworeworICAgIGlmICghZXZlbnRJbmZvKSB7
CisgICAgICAgIE5TTG9nKEAiZXZlbnRJbmZvIGlzIG5pbCIpOworICAgICAgICBpZiAoY29tcGxl
dGlvbkJsb2NrKQorICAgICAgICAgICAgY29tcGxldGlvbkJsb2NrKCk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisgICAgCisgICAgTlNEaWN0aW9uYXJ5KiB0aHJlYWREYXRhID0gQHsKKyAgICAg
ICAgQCJldmVudEluZm8iOiBbZXZlbnRJbmZvIGNvcHldLAorICAgICAgICBAImNvbXBsZXRpb25C
bG9jayI6IFtbY29tcGxldGlvbkJsb2NrIGNvcHldIGF1dG9yZWxlYXNlXQorICAgIH07CisgICAg
CisgICAgTlNUaHJlYWQgKmV2ZW50RGlzcGF0Y2hUaHJlYWQgPSBbW1tOU1RocmVhZCBhbGxvY10g
aW5pdFdpdGhUYXJnZXQ6c2VsZiBzZWxlY3RvcjpAc2VsZWN0b3IoZXZlbnREaXNwYXRjaFRocmVh
ZEVudHJ5Oikgb2JqZWN0OnRocmVhZERhdGFdIGF1dG9yZWxlYXNlXTsKKyAgICBldmVudERpc3Bh
dGNoVGhyZWFkLnF1YWxpdHlPZlNlcnZpY2UgPSBOU1F1YWxpdHlPZlNlcnZpY2VVc2VySW50ZXJh
Y3RpdmU7CisgICAgW2V2ZW50RGlzcGF0Y2hUaHJlYWQgc3RhcnRdOworfQorCiBAZW5kCmRpZmYg
LS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2lvcy9VSVNjcmlwdENvbnRyb2xsZXJJT1Mu
bW0gYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2lvcy9VSVNjcmlwdENvbnRyb2xsZXJJT1MubW0K
aW5kZXggYzVkYjBlNDk3NThjYjA1OGJkMjU0ZGM0MzMyOGI1OWVmOTE0MzhiZC4uZjYyMTRkYTYx
MTMyMTdjNGJlY2RkODM3NWY5YjQ4M2Q5ZGYyNzc5MiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9pb3MvVUlTY3JpcHRDb250cm9sbGVySU9TLm1tCisrKyBiL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvaW9zL1VJU2NyaXB0Q29udHJvbGxlcklPUy5tbQpAQCAtMzUsNiArMzUsNyBA
QAogI2ltcG9ydCAiVGVzdFJ1bm5lcldLV2ViVmlldy5oIgogI2ltcG9ydCAiVUlTY3JpcHRDb250
ZXh0LmgiCiAjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5oPgorI2ltcG9y
dCA8SmF2YVNjcmlwdENvcmUvT3BhcXVlSlNTdHJpbmcuaD4KICNpbXBvcnQgPFVJS2l0L1VJS2l0
Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0Zsb2F0UmVjdC5oPgogI2ltcG9ydCA8V2ViS2l0L1dLV2Vi
Vmlld1ByaXZhdGUuaD4KQEAgLTE3NSw2ICsxNzYsMjQgQEAgdm9pZCBVSVNjcmlwdENvbnRyb2xs
ZXI6OnN0eWx1c1RhcEF0UG9pbnQobG9uZyB4LCBsb25nIHksIGZsb2F0IGF6aW11dGhBbmdsZSwg
ZmwKICAgICB9XTsKIH0KIAordm9pZCBVSVNjcmlwdENvbnRyb2xsZXI6OnNlbmRFdmVudFN0cmVh
bShKU1N0cmluZ1JlZiBldmVudHNKU09OLCBKU1ZhbHVlUmVmIGNhbGxiYWNrKQoreworICAgIHVu
c2lnbmVkIGNhbGxiYWNrSUQgPSBtX2NvbnRleHQtPnByZXBhcmVGb3JBc3luY1Rhc2soY2FsbGJh
Y2ssIENhbGxiYWNrVHlwZU5vblBlcnNpc3RlbnQpOworCisgICAgU3RyaW5nIGpzb25TdHJpbmcg
PSBldmVudHNKU09OLT5zdHJpbmcoKTsKKyAgICBhdXRvIGV2ZW50SW5mbyA9IGR5bmFtaWNfb2Jq
Y19jYXN0PE5TRGljdGlvbmFyeT4oW05TSlNPTlNlcmlhbGl6YXRpb24gSlNPTk9iamVjdFdpdGhE
YXRhOlsoTlNTdHJpbmcgKilqc29uU3RyaW5nIGRhdGFVc2luZ0VuY29kaW5nOk5TVVRGOFN0cmlu
Z0VuY29kaW5nXSBvcHRpb25zOjAgZXJyb3I6bmlsXSk7CisgICAgaWYgKCFldmVudEluZm8gfHwg
IVtldmVudEluZm8gaXNLaW5kT2ZDbGFzczpbTlNEaWN0aW9uYXJ5IGNsYXNzXV0pIHsKKyAgICAg
ICAgV1RGTG9nQWx3YXlzKCJKU09OIGlzIG5vdCBjb252ZXJ0aWJsZSB0byBhIGRpY3Rpb25hcnki
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBbW0hJREV2ZW50R2VuZXJhdG9y
IHNoYXJlZEhJREV2ZW50R2VuZXJhdG9yXSBzZW5kRXZlbnRTdHJlYW06ZXZlbnRJbmZvIGNvbXBs
ZXRpb25CbG9jazpeeworICAgICAgICBpZiAoIW1fY29udGV4dCkKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgbV9jb250ZXh0LT5hc3luY1Rhc2tDb21wbGV0ZShjYWxsYmFja0lEKTsKKyAg
ICB9XTsKK30KKwogdm9pZCBVSVNjcmlwdENvbnRyb2xsZXI6OmRyYWdGcm9tUG9pbnRUb1BvaW50
KGxvbmcgc3RhcnRYLCBsb25nIHN0YXJ0WSwgbG9uZyBlbmRYLCBsb25nIGVuZFksIGRvdWJsZSBk
dXJhdGlvblNlY29uZHMsIEpTVmFsdWVSZWYgY2FsbGJhY2spCiB7CiAgICAgdW5zaWduZWQgY2Fs
bGJhY2tJRCA9IG1fY29udGV4dC0+cHJlcGFyZUZvckFzeW5jVGFzayhjYWxsYmFjaywgQ2FsbGJh
Y2tUeXBlTm9uUGVyc2lzdGVudCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cg
Yi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggOTZjZTc0YTVjNzRmYjMyMmM5MDIwODJlYWUx
ZjBmYmRiNDBlNzZkMC4uZmZjZDBkMjRhYmQ2ODE2M2QzZjExOGM4NDdmN2UyNjMzMjk2YTc4YiAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDE2LTEwLTA0ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5m
cmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIFtpT1MgV0syXSBNYWtlIGl0IHBvc3NpYmxlIGZv
ciBhIHRlc3QgdG8gZGVzY3JpYmUgYSB1c2VyIGdlc3R1cmUgYXMgYSBzdHJlYW0gb2YgZXZlbnRz
IGluIEpTT04gZm9ybWF0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNjI5MzQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIGZhc3QvZXZlbnRzL2lvcy9ldmVudC1zdHJlYW0tc2luZ2xlLXRhcC1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZXZlbnRzL2lvcy9ldmVudC1zdHJlYW0tc2lu
Z2xlLXRhcC5odG1sOiBBZGRlZC4KKwogMjAxNi0xMC0wNCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpA
YXBwbGUuY29tPgogCiAgICAgICAgIFJldHVybiBudWxsIHdoZW4gd2luZG93Lm9wZW4oKSBpcyBw
b3B1cCBibG9ja2VkCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9pb3MvZXZl
bnQtc3RyZWFtLXNpbmdsZS10YXAtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVu
dHMvaW9zL2V2ZW50LXN0cmVhbS1zaW5nbGUtdGFwLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5k
MTNjMTY3NmZjMWQ2MzFmMjFkMWE4NmY0ZTE5NjY5MDhhY2QzNGMwCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvaW9zL2V2ZW50LXN0cmVhbS1zaW5nbGUtdGFwLWV4
cGVjdGVkLnR4dApAQCAtMCwwICsxIEBACitQQVNTOiByZWNlaXZlZCBjbGljay4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2lvcy9ldmVudC1zdHJlYW0tc2luZ2xlLXRhcC5o
dG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvaW9zL2V2ZW50LXN0cmVhbS1zaW5nbGUtdGFw
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uYjYzNmZiZmExN2RmODBjZDkwMTU5OWI4N2MxYzIxNWJiYTIyNWUx
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2lvcy9ldmVudC1z
dHJlYW0tc2luZ2xlLXRhcC5odG1sCkBAIC0wLDAgKzEsODYgQEAKKzwhRE9DVFlQRSBodG1sPiA8
IS0tIHdlYmtpdC10ZXN0LXJ1bm5lciBbIHVzZUZsZXhpYmxlVmlld3BvcnQ9dHJ1ZSBdIC0tPgor
Cis8aHRtbD4KKzxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJpbml0aWFsLXNjYWxlPTEu
MCwgd2lkdGg9ZGV2aWNlLXdpZHRoIj4KKzxoZWFkPgorICAgIDxzdHlsZT4KKyAgICAgICAgI3Rh
cmdldCB7CisgICAgICAgICAgICBoZWlnaHQ6IDEwMHB4OworICAgICAgICAgICAgd2lkdGg6IDEw
MHB4OworICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogZ3JheTsKKyAgICAgICAgfQorICAg
IDwvc3R5bGU+CisgICAgPHNjcmlwdD4KKworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIp
IHsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgICAgICAgICAgdGVz
dFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBn
ZXRVSVNjcmlwdChldmVudFN0cmVhbSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGAK
KyAgICAgICAgICAgIChmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICB2YXIgZXZlbnRTdHJl
YW0gPSB7CisgICAgICAgICAgICAgICAgICAgICJldmVudHMiIDogWworICAgICAgICAgICAgICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbnB1dFR5cGUiIDogImhh
bmQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0aW1lT2Zmc2V0IiA6IDAsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgInRvdWNoZXMiIDogWworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW5w
dXRUeXBlIiA6ICJmaW5nZXIiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
InBoYXNlIiA6ICJiZWdhbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
aWQiIDogMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ4IiA6IDYwLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInkiIDogNjAKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0KKyAg
ICAgICAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgImlucHV0VHlwZSIgOiAiaGFuZCIsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgInRpbWVPZmZzZXQiIDogMC4wMDA1LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICJ0b3VjaGVzIiA6IFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImlucHV0VHlwZSIgOiAi
ZmluZ2VyIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJwaGFzZSIgOiAi
ZW5kZWQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImlkIiA6IDEsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAieCIgOiA2MCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICJ5IiA6IDYwCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBdCisgICAgICAgICAgICAg
ICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICAgICBdCisgICAgICAgICAgICAgICAgfTsK
KworICAgICAgICAgICAgICAgIHVpQ29udHJvbGxlci5zZW5kRXZlbnRTdHJlYW0oSlNPTi5zdHJp
bmdpZnkoZXZlbnRTdHJlYW0pLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICAgICAgdWlD
b250cm9sbGVyLnVpU2NyaXB0Q29tcGxldGUoIkRvbmUiKTsKKyAgICAgICAgICAgICAgICB9KTsK
KyAgICAgICAgICAgIH0pKCk7YAorICAgICAgICB9CisgICAgICAgIAorICAgICAgICBmdW5jdGlv
biBoYW5kbGVDbGljaygpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCdyZXN1bHQnKS50ZXh0Q29udGVudCA9ICdQQVNTOiByZWNlaXZlZCBjbGljay4nOwor
ICAgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgICAgIHRlc3RS
dW5uZXIubm90aWZ5RG9uZSgpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gcnVuVGVz
dCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciB0YXJnZXQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgidGFyZ2V0Iik7CisgICAgICAgICAgICB0YXJnZXQuYWRkRXZlbnRMaXN0ZW5lcigi
Y2xpY2siLCBoYW5kbGVDbGljaywgZmFsc2UpOworCisgICAgICAgICAgICBpZiAoIXRlc3RSdW5u
ZXIucnVuVUlTY3JpcHQpCisgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICB0
ZXN0UnVubmVyLnJ1blVJU2NyaXB0KGdldFVJU2NyaXB0KCksIGZ1bmN0aW9uKCkge30pOworICAg
ICAgICB9CisgICAgICAgIAorICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcs
IHJ1blRlc3QsIGZhbHNlKTsKKyAgICA8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorICAgIDxk
aXYgaWQ9InRhcmdldCI+PC9kaXY+CisgICAgPGRpdiBpZD0icmVzdWx0Ij5GQUlMOiBkaWQgbm90
IHJlY2VpdmUgY2xpY2sgZXZlbnQuPC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>290653</attachid>
            <date>2016-10-04 15:19:36 -0700</date>
            <delta_ts>2016-10-04 17:07:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-162934-20161004151626.patch</filename>
            <type>text/plain</type>
            <size>24661</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA2NzgyCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMGY0ODFjODRkYjEzYjVhNDQ0NDAyZTUzMjdjNjY5ZTNi
ZDM5NDk3My4uZGRkOWUwOTA4NTYyNjExYTc5NjBiOGM3MjI2ZTE0ZDY0YmRlYzJiYSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4
IEBACisyMDE2LTEwLTA0ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgor
CisgICAgICAgIFtpT1MgV0syXSBNYWtlIGl0IHBvc3NpYmxlIGZvciBhIHRlc3QgdG8gZGVzY3Jp
YmUgYSB1c2VyIGdlc3R1cmUgYXMgYSBzdHJlYW0gb2YgZXZlbnRzIGluIEpTT04gZm9ybWF0Cisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjI5MzQKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXaXRoIHRoaXMg
Y2hhbmdlLCBhIHRlc3QgY2FuIGRlc2NyaWJlIGEgdXNlciBnZXN0dXJlIGluIGFuICJldmVudCBz
dHJlYW0iLCB3aGljaCBpcworICAgICAgICBzb21lIEpTT04gZGVzY3JpYmluZyBhbiBhcnJheSBv
ZiBldmVudHMgd2l0aCB0aGVpciB1bmRlcmx5aW5nIHRvdWNoZXMuIFRoZSBhZGRlZAorICAgICAg
ICB0ZXN0IGRlc2NyaWJlcyBhIHNpbmdsZSB0YXAuCisgICAgICAgIAorICAgICAgICBUaGUgaW1w
bGVtZW50YXRpb24gZmlyZXMgdXAgYW4gTlNUaHJlYWQsIGFuZCBzbGVlcHMgdGhlIHRocmVhZCBi
ZXR3ZWVuIGV2ZW50cyB0byBkaXNwYXRjaAorICAgICAgICB0aGVtIGF0IGNsb3NlIHRvIHJlYWwg
dGltZS4KKyAgICAgICAgCisgICAgICAgIEluIGZ1dHVyZSwgSElERXZlbnRHZW5lcmF0b3IgY291
bGQgdXNlIHRoaXMgaW50ZXJuYWxseSBmb3IgYWxsIG9mIHRoZSAiY29tcG91bmQiIGludGVyYWN0
aW9ucy4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2lvcy9VSVNjcmlwdENvbnRyb2xsZXJJ
T1MubW06CisgICAgICAgIChXVFI6OlVJU2NyaXB0Q29udHJvbGxlcjo6c2VuZEV2ZW50U3RyZWFt
KToKKyAgICAgICAgKiBUZXN0UnVubmVyU2hhcmVkL1VJU2NyaXB0Q29udGV4dC9CaW5kaW5ncy9V
SVNjcmlwdENvbnRyb2xsZXIuaWRsOgorICAgICAgICAqIFRlc3RSdW5uZXJTaGFyZWQvVUlTY3Jp
cHRDb250ZXh0L1VJU2NyaXB0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXVFI6OlVJU2NyaXB0
Q29udHJvbGxlcjo6c2VuZEV2ZW50U3RyZWFtKToKKyAgICAgICAgKiBUZXN0UnVubmVyU2hhcmVk
L1VJU2NyaXB0Q29udGV4dC9VSVNjcmlwdENvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBXZWJLaXRU
ZXN0UnVubmVyL2lvcy9ISURFdmVudEdlbmVyYXRvci5oOgorICAgICAgICAqIFdlYktpdFRlc3RS
dW5uZXIvaW9zL0hJREV2ZW50R2VuZXJhdG9yLm1tOgorICAgICAgICAodHJhbnNkdWNlclR5cGVG
cm9tU3RyaW5nKToKKyAgICAgICAgKHBoYXNlRnJvbVN0cmluZyk6CisgICAgICAgICgtW0hJREV2
ZW50R2VuZXJhdG9yIGV2ZW50TWFza0Zyb21FdmVudEluZm86XSk6CisgICAgICAgICgtW0hJREV2
ZW50R2VuZXJhdG9yIHRvdWNoRnJvbUV2ZW50SW5mbzpdKToKKyAgICAgICAgKC1bSElERXZlbnRH
ZW5lcmF0b3IgX2NyZWF0ZUlPSElERXZlbnRXaXRoSW5mbzpdKToKKyAgICAgICAgKC1bSElERXZl
bnRHZW5lcmF0b3IgZGlzcGF0Y2hFdmVudFdpdGhJbmZvOl0pOgorICAgICAgICAoLVtISURFdmVu
dEdlbmVyYXRvciBldmVudERpc3BhdGNoVGhyZWFkRW50cnk6XSk6CisgICAgICAgICgtW0hJREV2
ZW50R2VuZXJhdG9yIHNlbmRFdmVudFN0cmVhbTpjb21wbGV0aW9uQmxvY2s6XSk6CisgICAgICAg
ICogV2ViS2l0VGVzdFJ1bm5lci9pb3MvVUlTY3JpcHRDb250cm9sbGVySU9TLm1tOgorICAgICAg
ICAoV1RSOjpVSVNjcmlwdENvbnRyb2xsZXI6OnNlbmRFdmVudFN0cmVhbSk6CisKIDIwMTYtMTAt
MDQgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CiAKICAgICAgICAgW0RP
TUpJVF0gSW50cm9kdWNlIERPTUpJVDo6R2V0dGVyU2V0dGVyIHRvIHRlbGwgSklUIGluZm9ybWF0
aW9uCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9pb3MvVUlTY3JpcHRDb250cm9s
bGVySU9TLm1tIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvaW9zL1VJU2NyaXB0Q29udHJvbGxlcklP
Uy5tbQppbmRleCAwZTY0NTk0MjhlYjhmMjUxMDA5MjczN2JhMTY2MjE1MTFkMjRjNDNiLi4wYzU3
MjhlZDdmNTdjM2I5ZTMxNjk0YzJmODc5NmM4MWQ1YTQ5OTQ2IDEwMDY0NAotLS0gYS9Ub29scy9E
dW1wUmVuZGVyVHJlZS9pb3MvVUlTY3JpcHRDb250cm9sbGVySU9TLm1tCisrKyBiL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL2lvcy9VSVNjcmlwdENvbnRyb2xsZXJJT1MubW0KQEAgLTEwOCw2ICsxMDgs
MTAgQEAgdm9pZCBVSVNjcmlwdENvbnRyb2xsZXI6OnN0eWx1c1RhcEF0UG9pbnQobG9uZyB4LCBs
b25nIHksIGZsb2F0IGF6aW11dGhBbmdsZSwgZmwKIHsKIH0KIAordm9pZCBVSVNjcmlwdENvbnRy
b2xsZXI6OnNlbmRFdmVudFN0cmVhbShKU1N0cmluZ1JlZiBldmVudHNKU09OLCBKU1ZhbHVlUmVm
IGNhbGxiYWNrKQoreworfQorCiB2b2lkIFVJU2NyaXB0Q29udHJvbGxlcjo6dHlwZUNoYXJhY3Rl
clVzaW5nSGFyZHdhcmVLZXlib2FyZChKU1N0cmluZ1JlZiBjaGFyYWN0ZXIsIEpTVmFsdWVSZWYg
Y2FsbGJhY2spCiB7CiB9CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0UnVubmVyU2hhcmVkL1VJU2Ny
aXB0Q29udGV4dC9CaW5kaW5ncy9VSVNjcmlwdENvbnRyb2xsZXIuaWRsIGIvVG9vbHMvVGVzdFJ1
bm5lclNoYXJlZC9VSVNjcmlwdENvbnRleHQvQmluZGluZ3MvVUlTY3JpcHRDb250cm9sbGVyLmlk
bAppbmRleCBmN2YwOTZlMTRkNTQ0YTE4ZDU4NWFiMjVlMzBkNjRiMGU1OGI5NGY5Li41ZTZjMjZl
NjBkYjE0ODFiZjU5YmNhNzMxODI0NTA3NDhjY2ZjYzExIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0
UnVubmVyU2hhcmVkL1VJU2NyaXB0Q29udGV4dC9CaW5kaW5ncy9VSVNjcmlwdENvbnRyb2xsZXIu
aWRsCisrKyBiL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvVUlTY3JpcHRDb250ZXh0L0JpbmRpbmdz
L1VJU2NyaXB0Q29udHJvbGxlci5pZGwKQEAgLTQ5LDYgKzQ5LDQwIEBAIGludGVyZmFjZSBVSVNj
cmlwdENvbnRyb2xsZXIgewogICAgIHZvaWQga2V5RG93blVzaW5nSGFyZHdhcmVLZXlib2FyZChE
T01TdHJpbmcgY2hhcmFjdGVyLCBvYmplY3QgY2FsbGJhY2spOwogICAgIHZvaWQga2V5VXBVc2lu
Z0hhcmR3YXJlS2V5Ym9hcmQoRE9NU3RyaW5nIGNoYXJhY3Rlciwgb2JqZWN0IGNhbGxiYWNrKTsK
IAorICAgIC8vIGV2ZW50c0pTT04gZGVzY3JpYmVzIGEgc2VyaWVzIG9mIHVzZXIgZXZlbnRzIGlu
IEpTT04gZm9ybS4gRm9yIHRoZSBrZXlzLCBzZWUgSElERXZlbnRHZW5lcmF0b3IubW0uCisgICAg
Ly8gRm9yIGV4YW1wbGUsIHRoaXMgSlNPTiBkZXNjcmliZXMgYSB0b3VjaCBkb3duIGZvbGxvd2Vk
IGJ5IGEgdG91Y2ggdXAgKGkuZS4gYSBzaW5nbGUgdGFwKS4KKyAgICAvLyAgeworICAgIC8vICAg
ICAgImV2ZW50cyIgOiBbCisgICAgLy8gICAgICAgICAgeworICAgIC8vICAgICAgICAgICAgICAi
aW5wdXRUeXBlIiA6ICJoYW5kIiwKKyAgICAvLyAgICAgICAgICAgICAgInRpbWVPZmZzZXQiIDog
MCwKKyAgICAvLyAgICAgICAgICAgICAgInRvdWNoZXMiIDogWworICAgIC8vICAgICAgICAgICAg
ICAgICAgeworICAgIC8vICAgICAgICAgICAgICAgICAgICAgICJpbnB1dFR5cGUiIDogImZpbmdl
ciIsCisgICAgLy8gICAgICAgICAgICAgICAgICAgICAgInBoYXNlIiA6ICJiZWdhbiIsCisgICAg
Ly8gICAgICAgICAgICAgICAgICAgICAgImlkIiA6IDEsCisgICAgLy8gICAgICAgICAgICAgICAg
ICAgICAgIngiIDogMTAwLAorICAgIC8vICAgICAgICAgICAgICAgICAgICAgICJ5IiA6IDEyMAor
ICAgIC8vICAgICAgICAgICAgICAgICAgfQorICAgIC8vICAgICAgICAgICAgICBdCisgICAgLy8g
ICAgICAgICAgfSwKKyAgICAvLyAgICAgICAgICB7CisgICAgLy8gICAgICAgICAgICAgICJpbnB1
dFR5cGUiIDogImhhbmQiLAorICAgIC8vICAgICAgICAgICAgICAidGltZU9mZnNldCIgOiAwLjAw
MiwgLy8gc2Vjb25kcyByZWxhdGl2ZSB0byB0aGUgZmlyc3QgZXZlbnQKKyAgICAvLyAgICAgICAg
ICAgICAgInRvdWNoZXMiIDogWworICAgIC8vICAgICAgICAgICAgICAgICAgeworICAgIC8vICAg
ICAgICAgICAgICAgICAgICAgICJpbnB1dFR5cGUiIDogImZpbmdlciIsCisgICAgLy8gICAgICAg
ICAgICAgICAgICAgICAgInBoYXNlIiA6ICJlbmRlZCIsCisgICAgLy8gICAgICAgICAgICAgICAg
ICAgICAgImlkIiA6IDEsCisgICAgLy8gICAgICAgICAgICAgICAgICAgICAgIngiIDogMTAwLAor
ICAgIC8vICAgICAgICAgICAgICAgICAgICAgICJ5IiA6IDEyMAorICAgIC8vICAgICAgICAgICAg
ICAgICAgfQorICAgIC8vICAgICAgICAgICAgICBdCisgICAgLy8gICAgICAgICAgfSwKKyAgICAv
LyAgICAgIF0KKyAgICAvLyAgfQorICAgIHZvaWQgc2VuZEV2ZW50U3RyZWFtKERPTVN0cmluZyBl
dmVudHNKU09OLCBvYmplY3QgY2FsbGJhY2spOworCiAgICAgLy8gRXF1aXZhbGVudCBvZiBwcmVz
c2luZyB0aGUgRG9uZSBidXR0b24gaW4gdGhlIGZvcm0gYWNjZXNzb3J5IGJhci4KICAgICB2b2lk
IGRpc21pc3NGb3JtQWNjZXNzb3J5VmlldygpOwogCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0UnVu
bmVyU2hhcmVkL1VJU2NyaXB0Q29udGV4dC9VSVNjcmlwdENvbnRyb2xsZXIuY3BwIGIvVG9vbHMv
VGVzdFJ1bm5lclNoYXJlZC9VSVNjcmlwdENvbnRleHQvVUlTY3JpcHRDb250cm9sbGVyLmNwcApp
bmRleCBjMWI4NTc4MDQ4ODhiODcxM2I0OTVlMzk4YWRhZTY0ZTVjNGNlZDUxLi41YzRjYmE1ODA5
ZWYyNGQyMGNhYzRiMTdiYTg0OGI2MjIzYTlhNTQzIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0UnVu
bmVyU2hhcmVkL1VJU2NyaXB0Q29udGV4dC9VSVNjcmlwdENvbnRyb2xsZXIuY3BwCisrKyBiL1Rv
b2xzL1Rlc3RSdW5uZXJTaGFyZWQvVUlTY3JpcHRDb250ZXh0L1VJU2NyaXB0Q29udHJvbGxlci5j
cHAKQEAgLTE4MCw2ICsxODAsMTAgQEAgdm9pZCBVSVNjcmlwdENvbnRyb2xsZXI6OnN0eWx1c1Rh
cEF0UG9pbnQobG9uZyB4LCBsb25nIHksIGZsb2F0IGF6aW11dGhBbmdsZSwgZmwKIHsKIH0KIAor
dm9pZCBVSVNjcmlwdENvbnRyb2xsZXI6OnNlbmRFdmVudFN0cmVhbShKU1N0cmluZ1JlZiBldmVu
dHNKU09OLCBKU1ZhbHVlUmVmIGNhbGxiYWNrKQoreworfQorCiB2b2lkIFVJU2NyaXB0Q29udHJv
bGxlcjo6dHlwZUNoYXJhY3RlclVzaW5nSGFyZHdhcmVLZXlib2FyZChKU1N0cmluZ1JlZiwgSlNW
YWx1ZVJlZikKIHsKIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvVUlTY3Jp
cHRDb250ZXh0L1VJU2NyaXB0Q29udHJvbGxlci5oIGIvVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9V
SVNjcmlwdENvbnRleHQvVUlTY3JpcHRDb250cm9sbGVyLmgKaW5kZXggNmUyMjJjY2NiNjhjNzU4
NDVmYzc2MTVlMjNlNzQ1MWU3NGRjMTU5MC4uMDg1YTdjYTU4NTQ4MGMxMDM5Yzg0MzQ4MjNkYzFh
Mzk2NDFiODUwYiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9VSVNjcmlwdENv
bnRleHQvVUlTY3JpcHRDb250cm9sbGVyLmgKKysrIGIvVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9V
SVNjcmlwdENvbnRleHQvVUlTY3JpcHRDb250cm9sbGVyLmgKQEAgLTYzLDcgKzYzLDkgQEAgcHVi
bGljOgogICAgIHZvaWQgc3R5bHVzVGFwQXRQb2ludChsb25nIHgsIGxvbmcgeSwgZmxvYXQgYXpp
bXV0aEFuZ2xlLCBmbG9hdCBhbHRpdHVkZUFuZ2xlLCBmbG9hdCBwcmVzc3VyZSwgSlNWYWx1ZVJl
ZiBjYWxsYmFjayk7CiAKICAgICB2b2lkIGxvbmdQcmVzc0F0UG9pbnQobG9uZyB4LCBsb25nIHks
IEpTVmFsdWVSZWYgY2FsbGJhY2spOwotICAgIAorCisgICAgdm9pZCBzZW5kRXZlbnRTdHJlYW0o
SlNTdHJpbmdSZWYgZXZlbnRzSlNPTiwgSlNWYWx1ZVJlZiBjYWxsYmFjayk7CisKICAgICB2b2lk
IHR5cGVDaGFyYWN0ZXJVc2luZ0hhcmR3YXJlS2V5Ym9hcmQoSlNTdHJpbmdSZWYgY2hhcmFjdGVy
LCBKU1ZhbHVlUmVmIGNhbGxiYWNrKTsKICAgICB2b2lkIGtleURvd25Vc2luZ0hhcmR3YXJlS2V5
Ym9hcmQoSlNTdHJpbmdSZWYgY2hhcmFjdGVyLCBKU1ZhbHVlUmVmIGNhbGxiYWNrKTsKICAgICB2
b2lkIGtleVVwVXNpbmdIYXJkd2FyZUtleWJvYXJkKEpTU3RyaW5nUmVmIGNoYXJhY3RlciwgSlNW
YWx1ZVJlZiBjYWxsYmFjayk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2lv
cy9ISURFdmVudEdlbmVyYXRvci5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9pb3MvSElERXZl
bnRHZW5lcmF0b3IuaAppbmRleCBlNTg0YjY5ODNjN2UxMTA0ODYzOTNhYjUyNmMwOGJlMjAxNjhm
ZmNmLi41ZTdjZGFkMWEyY2IyZDc3NDVkNTRkYTEzNjg0MmI5MGIyMWQ5YzFmIDEwMDY0NAotLS0g
YS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2lvcy9ISURFdmVudEdlbmVyYXRvci5oCisrKyBiL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvaW9zL0hJREV2ZW50R2VuZXJhdG9yLmgKQEAgLTI3LDYgKzI3
LDMyIEBACiAKICNpbXBvcnQgPENvcmVHcmFwaGljcy9DR0dlb21ldHJ5Lmg+CiAKKy8vIEtleXMg
Zm9yIHNlbmRFdmVudFN0cmVhbTpjb21wbGV0aW9uQmxvY2s6LgorZXh0ZXJuIE5TU3RyaW5nKiBj
b25zdCBUb3BMZXZlbEV2ZW50SW5mb0tleTsKK2V4dGVybiBOU1N0cmluZyogY29uc3QgSElERXZl
bnRJbnB1dFR5cGU7CitleHRlcm4gTlNTdHJpbmcqIGNvbnN0IEhJREV2ZW50VGltZU9mZnNldEtl
eTsKK2V4dGVybiBOU1N0cmluZyogY29uc3QgSElERXZlbnRQaGFzZUtleTsKK2V4dGVybiBOU1N0
cmluZyogY29uc3QgSElERXZlbnRUb3VjaElES2V5OworZXh0ZXJuIE5TU3RyaW5nKiBjb25zdCBI
SURFdmVudFByZXNzdXJlS2V5OworZXh0ZXJuIE5TU3RyaW5nKiBjb25zdCBISURFdmVudFhLZXk7
CitleHRlcm4gTlNTdHJpbmcqIGNvbnN0IEhJREV2ZW50WUtleTsKK2V4dGVybiBOU1N0cmluZyog
Y29uc3QgSElERXZlbnRUd2lzdEtleTsKK2V4dGVybiBOU1N0cmluZyogY29uc3QgSElERXZlbnRN
YWpvclJhZGl1c0tleTsKK2V4dGVybiBOU1N0cmluZyogY29uc3QgSElERXZlbnRNaW5vclJhZGl1
c0tleTsKK2V4dGVybiBOU1N0cmluZyogY29uc3QgSElERXZlbnRUb3VjaGVzS2V5OworCisvLyBW
YWx1ZXMgZm9yIEhJREV2ZW50SW5wdXRUeXBlLgorZXh0ZXJuIE5TU3RyaW5nKiBjb25zdCBISURF
dmVudElucHV0VHlwZUhhbmQ7CitleHRlcm4gTlNTdHJpbmcqIGNvbnN0IEhJREV2ZW50SW5wdXRU
eXBlRmluZ2VyOworZXh0ZXJuIE5TU3RyaW5nKiBjb25zdCBISURFdmVudElucHV0VHlwZVN0eWx1
czsKKworLy8gVmFsdWVzIGZvciBISURFdmVudFBoYXNlS2V5LgorZXh0ZXJuIE5TU3RyaW5nKiBj
b25zdCBISURFdmVudFBoYXNlQmVnYW47CitleHRlcm4gTlNTdHJpbmcqIGNvbnN0IEhJREV2ZW50
UGhhc2VNb3ZlZDsKK2V4dGVybiBOU1N0cmluZyogY29uc3QgSElERXZlbnRQaGFzZUVuZGVkOwor
ZXh0ZXJuIE5TU3RyaW5nKiBjb25zdCBISURFdmVudFBoYXNlQ2FuY2VsZWQ7CisKKwogQGludGVy
ZmFjZSBISURFdmVudEdlbmVyYXRvciA6IE5TT2JqZWN0CiAKICsgKEhJREV2ZW50R2VuZXJhdG9y
ICopc2hhcmVkSElERXZlbnRHZW5lcmF0b3I7CkBAIC01Niw2ICs4MiwxMCBAQAogLSAodm9pZClw
aW5jaENsb3NlV2l0aFN0YXJ0UG9pbnQ6KENHUG9pbnQpc3RhcnRMb2NhdGlvbiBlbmRQb2ludDoo
Q0dQb2ludCllbmRMb2NhdGlvbiBkdXJhdGlvbjooZG91YmxlKXNlY29uZHMgY29tcGxldGlvbkJs
b2NrOih2b2lkICheKSh2b2lkKSljb21wbGV0aW9uQmxvY2s7CiAtICh2b2lkKXBpbmNoT3Blbldp
dGhTdGFydFBvaW50OihDR1BvaW50KXN0YXJ0TG9jYXRpb24gZW5kUG9pbnQ6KENHUG9pbnQpZW5k
TG9jYXRpb24gZHVyYXRpb246KGRvdWJsZSlzZWNvbmRzIGNvbXBsZXRpb25CbG9jazoodm9pZCAo
Xikodm9pZCkpY29tcGxldGlvbkJsb2NrOwogCisvLyBFdmVudCBzdHJlYW0KKy0gKHZvaWQpc2Vu
ZEV2ZW50U3RyZWFtOihOU0RpY3Rpb25hcnkgKilldmVudEluZm8gY29tcGxldGlvbkJsb2NrOih2
b2lkICheKSh2b2lkKSljb21wbGV0aW9uQmxvY2s7CisKKwogLSAodm9pZCltYXJrZXJFdmVudFJl
Y2VpdmVkOihJT0hJREV2ZW50UmVmKWV2ZW50OwogCiAvLyBLZXlib2FyZApkaWZmIC0tZ2l0IGEv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9pb3MvSElERXZlbnRHZW5lcmF0b3IubW0gYi9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL2lvcy9ISURFdmVudEdlbmVyYXRvci5tbQppbmRleCAwYTg1ODI3YWM2
ZjE3MDg4OTIzMjA4NzUzMjljZWZkMjc2NDc3Yzk3Li4zZTAzNWQyZmViOTNiYTUyZDMyYTQzMzUx
MDk2ODk1OTc4MTU3OWZkIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2lvcy9I
SURFdmVudEdlbmVyYXRvci5tbQorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2lvcy9ISURF
dmVudEdlbmVyYXRvci5tbQpAQCAtMzcsNiArMzcsMjggQEAKIFNPRlRfTElOS19QUklWQVRFX0ZS
QU1FV09SSyhCYWNrQm9hcmRTZXJ2aWNlcykKIFNPRlRfTElOSyhCYWNrQm9hcmRTZXJ2aWNlcywg
QktTSElERXZlbnRTZXREaWdpdGl6ZXJJbmZvLCB2b2lkLCAoSU9ISURFdmVudFJlZiBkaWdpdGl6
ZXJFdmVudCwgdWludDMyX3QgY29udGV4dElELCB1aW50OF90IHN5c3RlbUdlc3R1cmVpc1Bvc3Np
YmxlLCB1aW50OF90IGlzU3lzdGVtR2VzdHVyZVN0YXRlQ2hhbmdlRXZlbnQsIENGU3RyaW5nUmVm
IGRpc3BsYXlVVUlELCBDRlRpbWVJbnRlcnZhbCBpbml0aWFsVG91Y2hUaW1lc3RhbXAsIGZsb2F0
IG1heEZvcmNlKSwgKGRpZ2l0aXplckV2ZW50LCBjb250ZXh0SUQsIHN5c3RlbUdlc3R1cmVpc1Bv
c3NpYmxlLCBpc1N5c3RlbUdlc3R1cmVTdGF0ZUNoYW5nZUV2ZW50LCBkaXNwbGF5VVVJRCwgaW5p
dGlhbFRvdWNoVGltZXN0YW1wLCBtYXhGb3JjZSkpOwogCitOU1N0cmluZyogY29uc3QgVG9wTGV2
ZWxFdmVudEluZm9LZXkgPSBAImV2ZW50cyI7CitOU1N0cmluZyogY29uc3QgSElERXZlbnRJbnB1
dFR5cGUgPSBAImlucHV0VHlwZSI7CitOU1N0cmluZyogY29uc3QgSElERXZlbnRUaW1lT2Zmc2V0
S2V5ID0gQCJ0aW1lT2Zmc2V0IjsKK05TU3RyaW5nKiBjb25zdCBISURFdmVudFRvdWNoZXNLZXkg
PSBAInRvdWNoZXMiOworTlNTdHJpbmcqIGNvbnN0IEhJREV2ZW50UGhhc2VLZXkgPSBAInBoYXNl
IjsKK05TU3RyaW5nKiBjb25zdCBISURFdmVudFRvdWNoSURLZXkgPSBAImlkIjsKK05TU3RyaW5n
KiBjb25zdCBISURFdmVudFByZXNzdXJlS2V5ID0gQCJwcmVzc3VyZSI7CitOU1N0cmluZyogY29u
c3QgSElERXZlbnRYS2V5ID0gQCJ4IjsKK05TU3RyaW5nKiBjb25zdCBISURFdmVudFlLZXkgPSBA
InkiOworTlNTdHJpbmcqIGNvbnN0IEhJREV2ZW50VHdpc3RLZXkgPSBAInR3aXN0IjsKK05TU3Ry
aW5nKiBjb25zdCBISURFdmVudE1ham9yUmFkaXVzS2V5ID0gQCJtYWpvclJhZGl1cyI7CitOU1N0
cmluZyogY29uc3QgSElERXZlbnRNaW5vclJhZGl1c0tleSA9IEAibWlub3JSYWRpdXMiOworCitO
U1N0cmluZyogY29uc3QgSElERXZlbnRJbnB1dFR5cGVIYW5kID0gQCJoYW5kIjsKK05TU3RyaW5n
KiBjb25zdCBISURFdmVudElucHV0VHlwZUZpbmdlciA9IEAiZmluZ2VyIjsKK05TU3RyaW5nKiBj
b25zdCBISURFdmVudElucHV0VHlwZVN0eWx1cyA9IEAic3R5bHVzIjsKKworTlNTdHJpbmcqIGNv
bnN0IEhJREV2ZW50UGhhc2VCZWdhbiA9IEAiYmVnYW4iOworTlNTdHJpbmcqIGNvbnN0IEhJREV2
ZW50UGhhc2VNb3ZlZCA9IEAibW92ZWQiOworTlNTdHJpbmcqIGNvbnN0IEhJREV2ZW50UGhhc2VF
bmRlZCA9IEAiZW5kZWQiOworTlNTdHJpbmcqIGNvbnN0IEhJREV2ZW50UGhhc2VDYW5jZWxlZCA9
IEAiY2FuY2VsZWQiOworCiBzdGF0aWMgY29uc3QgTlNUaW1lSW50ZXJ2YWwgZmluZ2VyTGlmdERl
bGF5ID0gMC4wNTsKIHN0YXRpYyBjb25zdCBOU1RpbWVJbnRlcnZhbCBtdWx0aVRhcEludGVydmFs
ID0gMC4xNTsKIHN0YXRpYyBjb25zdCBOU1RpbWVJbnRlcnZhbCBmaW5nZXJNb3ZlSW50ZXJ2YWwg
PSAwLjAxNjsKQEAgLTE0Niw2ICsxNjgsMTM1IEBAIC0gKHZvaWQpX3NlbmRJT0hJREtleWJvYXJk
RXZlbnQ6KHVpbnQ2NF90KXRpbWVzdGFtcCB1c2FnZToodWludDMyX3QpdXNhZ2UgaXNLZXlECiAg
ICAgW3NlbGYgX3NlbmRISURFdmVudDpldmVudFJlZi5nZXQoKV07CiB9CiAKK3N0YXRpYyBJT0hJ
RERpZ2l0aXplclRyYW5zZHVjZXJUeXBlIHRyYW5zZHVjZXJUeXBlRnJvbVN0cmluZyhOU1N0cmlu
ZyAqIHRyYW5zZHVjZXJUeXBlU3RyaW5nKQoreworICAgIGlmIChbdHJhbnNkdWNlclR5cGVTdHJp
bmcgaXNFcXVhbFRvU3RyaW5nOkhJREV2ZW50SW5wdXRUeXBlSGFuZF0pCisgICAgICAgIHJldHVy
biBrSU9ISUREaWdpdGl6ZXJUcmFuc2R1Y2VyVHlwZUhhbmQ7CisKKyAgICBpZiAoW3RyYW5zZHVj
ZXJUeXBlU3RyaW5nIGlzRXF1YWxUb1N0cmluZzpISURFdmVudElucHV0VHlwZUZpbmdlcl0pCisg
ICAgICAgIHJldHVybiBrSU9ISUREaWdpdGl6ZXJUcmFuc2R1Y2VyVHlwZUZpbmdlcjsKKworICAg
IGlmIChbdHJhbnNkdWNlclR5cGVTdHJpbmcgaXNFcXVhbFRvU3RyaW5nOkhJREV2ZW50SW5wdXRU
eXBlU3R5bHVzXSkKKyAgICAgICAgcmV0dXJuIGtJT0hJRERpZ2l0aXplclRyYW5zZHVjZXJUeXBl
U3R5bHVzOworICAgIAorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiAwOwor
fQorCitzdGF0aWMgVUlUb3VjaFBoYXNlIHBoYXNlRnJvbVN0cmluZyhOU1N0cmluZyAqc3RyaW5n
KQoreworICAgIGlmIChbc3RyaW5nIGlzRXF1YWxUb1N0cmluZzpISURFdmVudFBoYXNlQmVnYW5d
KQorICAgICAgICByZXR1cm4gVUlUb3VjaFBoYXNlQmVnYW47CisKKyAgICBpZiAoW3N0cmluZyBp
c0VxdWFsVG9TdHJpbmc6SElERXZlbnRQaGFzZU1vdmVkXSkKKyAgICAgICAgcmV0dXJuIFVJVG91
Y2hQaGFzZU1vdmVkOworCisgICAgaWYgKFtzdHJpbmcgaXNFcXVhbFRvU3RyaW5nOkhJREV2ZW50
UGhhc2VFbmRlZF0pCisgICAgICAgIHJldHVybiBVSVRvdWNoUGhhc2VFbmRlZDsKKworICAgIGlm
IChbc3RyaW5nIGlzRXF1YWxUb1N0cmluZzpISURFdmVudFBoYXNlQ2FuY2VsZWRdKQorICAgICAg
ICByZXR1cm4gVUlUb3VjaFBoYXNlQ2FuY2VsbGVkOworCisgICAgcmV0dXJuIFVJVG91Y2hQaGFz
ZVN0YXRpb25hcnk7Cit9CisKKy0gKElPSElERGlnaXRpemVyRXZlbnRNYXNrKWV2ZW50TWFza0Zy
b21FdmVudEluZm86KE5TRGljdGlvbmFyeSAqKWluZm8KK3sKKyAgICBJT0hJRERpZ2l0aXplckV2
ZW50TWFzayBldmVudE1hc2sgPSAwOworCisgICAgTlNBcnJheSAqY2hpbGRFdmVudHMgPSBpbmZv
W0hJREV2ZW50VG91Y2hlc0tleV07CisgICAgZm9yIChOU0RpY3Rpb25hcnkgKnRvdWNoSW5mbyBp
biBjaGlsZEV2ZW50cykgeworICAgICAgICBVSVRvdWNoUGhhc2UgcGhhc2UgPSBwaGFzZUZyb21T
dHJpbmcodG91Y2hJbmZvW0hJREV2ZW50UGhhc2VLZXldKTsKKyAgICAgICAgLy8gSWYgdGhlcmUg
YXJlIGFueSBuZXcgb3IgZW5kZWQgZXZlbnRzLCBtYXNrIGluY2x1ZGVzIHRvdWNoCisgICAgICAg
IGlmIChwaGFzZSA9PSBVSVRvdWNoUGhhc2VCZWdhbiB8fCBwaGFzZSA9PSBVSVRvdWNoUGhhc2VF
bmRlZCB8fCBwaGFzZSA9PSBVSVRvdWNoUGhhc2VDYW5jZWxsZWQpCisgICAgICAgICAgICBldmVu
dE1hc2sgfD0ga0lPSElERGlnaXRpemVyRXZlbnRUb3VjaDsKKyAgICB9CisgICAgCisgICAgcmV0
dXJuIGV2ZW50TWFzazsKK30KKworLy8gUmV0dXJucyAxIGZvciBhbGwgZXZlbnRzIHdoZXJlIHRo
ZSBmaW5nZXJzIGFyZSBvbiB0aGUgZ2xhc3MgKGV2ZXJ5dGhpbmcgYnV0IGVuY2VkIGFuZCBjYW5j
ZWxlZCkuCistIChDRkluZGV4KXRvdWNoRnJvbUV2ZW50SW5mbzooTlNEaWN0aW9uYXJ5ICopaW5m
bworeworICAgIENGSW5kZXggdG91Y2ggPSAwOworCisgICAgTlNBcnJheSAqY2hpbGRFdmVudHMg
PSBpbmZvW0hJREV2ZW50VG91Y2hlc0tleV07CisgICAgZm9yIChOU0RpY3Rpb25hcnkgKnRvdWNo
SW5mbyBpbiBjaGlsZEV2ZW50cykgeworICAgICAgICBVSVRvdWNoUGhhc2UgcGhhc2UgPSBwaGFz
ZUZyb21TdHJpbmcodG91Y2hJbmZvW0hJREV2ZW50UGhhc2VLZXldKTsKKworICAgICAgICBpZiAo
cGhhc2UgPT0gVUlUb3VjaFBoYXNlQmVnYW4gfHwgcGhhc2UgPT0gVUlUb3VjaFBoYXNlTW92ZWQg
fHwgcGhhc2UgPT0gVUlUb3VjaFBoYXNlU3RhdGlvbmFyeSkKKyAgICAgICAgICAgIHRvdWNoID0g
MTsKKyAgICB9CisgICAgCisgICAgcmV0dXJuIHRvdWNoOworfQorCisvLyBGSVhNRTogY2FsbGVy
cyBvZiBfY3JlYXRlSU9ISURFdmVudFR5cGUgY291bGQgc3dpdGNoIHRvIHRoaXMuCistIChJT0hJ
REV2ZW50UmVmKV9jcmVhdGVJT0hJREV2ZW50V2l0aEluZm86KE5TRGljdGlvbmFyeSAqKWluZm8K
K3sKKyAgICB1aW50NjRfdCBtYWNoVGltZSA9IG1hY2hfYWJzb2x1dGVfdGltZSgpOworCisgICAg
SU9ISUREaWdpdGl6ZXJFdmVudE1hc2sgZXZlbnRNYXNrID0gW3NlbGYgZXZlbnRNYXNrRnJvbUV2
ZW50SW5mbzppbmZvXTsKKworICAgIENGSW5kZXggcmFuZ2UgPSAwOworICAgIC8vIHRvdWNoIGlz
IDEgaWYgYSBmaW5nZXIgaXMgZG93bi4KKyAgICBDRkluZGV4IHRvdWNoID0gW3NlbGYgdG91Y2hG
cm9tRXZlbnRJbmZvOmluZm9dOworCisgICAgSU9ISURFdmVudFJlZiBldmVudFJlZiA9IElPSElE
RXZlbnRDcmVhdGVEaWdpdGl6ZXJFdmVudChrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBtYWNoVGltZSwK
KyAgICAgICAgdHJhbnNkdWNlclR5cGVGcm9tU3RyaW5nKGluZm9bSElERXZlbnRJbnB1dFR5cGVd
KSwgIC8vIHRyYW5zZHVjZXJUeXBlCisgICAgICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpbmRleAorICAgICAgICAwLCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWRlbnRpZmllcgorICAg
ICAgICBldmVudE1hc2ssICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ly8gZXZlbnQgbWFzaworICAgICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gYnV0dG9uIGV2ZW50CisgICAgICAgIDAsICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB4CisgICAgICAgIDAsICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB5CisgICAg
ICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAv
LyB6CisgICAgICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvLyBwcmVzdXJlCisgICAgICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAvLyB0d2lzdAorICAgICAgICByYW5nZSwgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmFuZ2UKKyAgICAgICAgdG91
Y2gsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRvdWNo
CisgICAgICAgIGtJT0hJREV2ZW50T3B0aW9uTm9uZSk7CisKKyAgICBJT0hJREV2ZW50U2V0SW50
ZWdlclZhbHVlKGV2ZW50UmVmLCBrSU9ISURFdmVudEZpZWxkRGlnaXRpemVySXNEaXNwbGF5SW50
ZWdyYXRlZCwgMSk7CisKKyAgICBOU0FycmF5ICpjaGlsZEV2ZW50cyA9IGluZm9bSElERXZlbnRU
b3VjaGVzS2V5XTsKKyAgICBmb3IgKE5TRGljdGlvbmFyeSAqdG91Y2hJbmZvIGluIGNoaWxkRXZl
bnRzKSB7CisKKyAgICAgICAgSU9ISUREaWdpdGl6ZXJFdmVudE1hc2sgY2hpbGRFdmVudE1hc2sg
PSAwOworCisgICAgICAgIFVJVG91Y2hQaGFzZSBwaGFzZSA9IHBoYXNlRnJvbVN0cmluZyh0b3Vj
aEluZm9bSElERXZlbnRQaGFzZUtleV0pOworICAgICAgICBpZiAocGhhc2UgIT0gVUlUb3VjaFBo
YXNlQ2FuY2VsbGVkICYmIHBoYXNlICE9IFVJVG91Y2hQaGFzZUJlZ2FuICYmIHBoYXNlICE9IFVJ
VG91Y2hQaGFzZUVuZGVkKQorICAgICAgICAgICAgY2hpbGRFdmVudE1hc2sgfD0ga0lPSElERGln
aXRpemVyRXZlbnRQb3NpdGlvbjsKKworICAgICAgICBpZiAocGhhc2UgPT0gVUlUb3VjaFBoYXNl
QmVnYW4gfHwgcGhhc2UgPT0gVUlUb3VjaFBoYXNlRW5kZWQgfHwgcGhhc2UgPT0gVUlUb3VjaFBo
YXNlQ2FuY2VsbGVkKQorICAgICAgICAgICAgY2hpbGRFdmVudE1hc2sgfD0gKGtJT0hJRERpZ2l0
aXplckV2ZW50VG91Y2ggfCBrSU9ISUREaWdpdGl6ZXJFdmVudFJhbmdlKTsKKworICAgICAgICBp
ZiAocGhhc2UgPT0gVUlUb3VjaFBoYXNlQ2FuY2VsbGVkKQorICAgICAgICAgICAgY2hpbGRFdmVu
dE1hc2sgfD0ga0lPSElERGlnaXRpemVyRXZlbnRDYW5jZWw7CisKKyAgICAgICAgSU9ISURFdmVu
dFJlZiBzdWJFdmVudCA9IElPSElERXZlbnRDcmVhdGVEaWdpdGl6ZXJGaW5nZXJFdmVudChrQ0ZB
bGxvY2F0b3JEZWZhdWx0LCBtYWNoVGltZSwKKyAgICAgICAgICAgIFt0b3VjaEluZm9bSElERXZl
bnRUb3VjaElES2V5XSBpbnRWYWx1ZV0sICAgICAgICAgICAgICAgLy8gaW5kZXgKKyAgICAgICAg
ICAgIDIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLy8gaWRlbnRpZmllciAod2hpY2ggZmluZ2VyIHdlIHRoaW5rIGl0IGlzKS4gRklYTUU6IHRo
aXMgc2hvdWxkIGNvbWUgZnJvbSB0aGUgZGF0YS4KKyAgICAgICAgICAgIGNoaWxkRXZlbnRNYXNr
LAorICAgICAgICAgICAgW3RvdWNoSW5mb1tISURFdmVudFhLZXldIGZsb2F0VmFsdWVdLAorICAg
ICAgICAgICAgW3RvdWNoSW5mb1tISURFdmVudFlLZXldIGZsb2F0VmFsdWVdLAorICAgICAgICAg
ICAgMCwgLy8gegorICAgICAgICAgICAgW3RvdWNoSW5mb1tISURFdmVudFByZXNzdXJlS2V5XSBm
bG9hdFZhbHVlXSwKKyAgICAgICAgICAgIFt0b3VjaEluZm9bSElERXZlbnRUd2lzdEtleV0gZmxv
YXRWYWx1ZV0sCisgICAgICAgICAgICB0b3VjaCwgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8vIHJhbmdlCisgICAgICAgICAgICB0b3VjaCwgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRvdWNoCisgICAg
ICAgICAgICBrSU9ISURFdmVudE9wdGlvbk5vbmUpOworCisgICAgICAgIElPSElERXZlbnRTZXRG
bG9hdFZhbHVlKHN1YkV2ZW50LCBrSU9ISURFdmVudEZpZWxkRGlnaXRpemVyTWFqb3JSYWRpdXMs
IFt0b3VjaEluZm9bSElERXZlbnRNYWpvclJhZGl1c0tleV0gZmxvYXRWYWx1ZV0pOworICAgICAg
ICBJT0hJREV2ZW50U2V0RmxvYXRWYWx1ZShzdWJFdmVudCwga0lPSElERXZlbnRGaWVsZERpZ2l0
aXplck1pbm9yUmFkaXVzLCBbdG91Y2hJbmZvW0hJREV2ZW50TWlub3JSYWRpdXNLZXldIGZsb2F0
VmFsdWVdKTsKKworICAgICAgICBJT0hJREV2ZW50QXBwZW5kRXZlbnQoZXZlbnRSZWYsIHN1YkV2
ZW50LCAwKTsKKyAgICAgICAgQ0ZSZWxlYXNlKHN1YkV2ZW50KTsKKyAgICB9CisKKyAgICByZXR1
cm4gZXZlbnRSZWY7Cit9CisKIC0gKElPSElERXZlbnRSZWYpX2NyZWF0ZUlPSElERXZlbnRUeXBl
OihIYW5kRXZlbnRUeXBlKWV2ZW50VHlwZQogewogICAgIEJPT0wgaXNUb3VjaGluZyA9IChldmVu
dFR5cGUgPT0gSGFuZEV2ZW50VG91Y2hlZCB8fCBldmVudFR5cGUgPT0gSGFuZEV2ZW50TW92ZWQg
fHwgZXZlbnRUeXBlID09IEhhbmRFdmVudENob3JkQ2hhbmdlZCB8fCBldmVudFR5cGUgPT0gU3R5
bHVzRXZlbnRUb3VjaGVkIHx8IGV2ZW50VHlwZSA9PSBTdHlsdXNFdmVudE1vdmVkKTsKQEAgLTc2
Niw0ICs5MTcsNjIgQEAgLSAodm9pZClrZXlVcDooTlNTdHJpbmcgKiljaGFyYWN0ZXIgY29tcGxl
dGlvbkJsb2NrOih2b2lkICheKSh2b2lkKSljb21wbGV0aW9uQmwKICAgICBbc2VsZiBfc2VuZE1h
cmtlckhJREV2ZW50V2l0aENvbXBsZXRpb25CbG9jazpjb21wbGV0aW9uQmxvY2tdOwogfQogCist
ICh2b2lkKWRpc3BhdGNoRXZlbnRXaXRoSW5mbzooTlNEaWN0aW9uYXJ5ICopZXZlbnRJbmZvCit7
CisgICAgQVNTRVJUKFtOU1RocmVhZCBpc01haW5UaHJlYWRdKTsKKworICAgIFJldGFpblB0cjxJ
T0hJREV2ZW50UmVmPiBldmVudFJlZiA9IGFkb3B0Q0YoW3NlbGYgX2NyZWF0ZUlPSElERXZlbnRX
aXRoSW5mbzpldmVudEluZm9dKTsKKyAgICBbc2VsZiBfc2VuZEhJREV2ZW50OmV2ZW50UmVmLmdl
dCgpXTsKK30KKworLSAodm9pZClldmVudERpc3BhdGNoVGhyZWFkRW50cnk6KE5TRGljdGlvbmFy
eSAqKXRocmVhZERhdGEKK3sKKyAgICBOU0RpY3Rpb25hcnkgKmV2ZW50U3RyZWFtID0gdGhyZWFk
RGF0YVtAImV2ZW50SW5mbyJdOworICAgIHZvaWQgKF5jb21wbGV0aW9uQmxvY2spKCkgPSB0aHJl
YWREYXRhW0AiY29tcGxldGlvbkJsb2NrIl07CisKKyAgICBOU0FycmF5ICpldmVudHMgPSBldmVu
dFN0cmVhbVtUb3BMZXZlbEV2ZW50SW5mb0tleV07CisgICAgaWYgKCFldmVudHMuY291bnQpIHsK
KyAgICAgICAgTlNMb2coQCJObyBldmVudHMgZm91bmQgaW4gZXZlbnQgc3RyZWFtIik7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICBDRkFic29sdXRlVGltZSBzdGFydFRpbWUgPSBDRkFi
c29sdXRlVGltZUdldEN1cnJlbnQoKTsKKyAgICAKKyAgICBmb3IgKE5TRGljdGlvbmFyeSAqZXZl
bnRJbmZvIGluIGV2ZW50cykgeworICAgICAgICBOU1RpbWVJbnRlcnZhbCBldmVudFJlbGF0aXZl
VGltZSA9IFtldmVudEluZm9bSElERXZlbnRUaW1lT2Zmc2V0S2V5XSBkb3VibGVWYWx1ZV07Cisg
ICAgICAgIENGQWJzb2x1dGVUaW1lIHRhcmdldFRpbWUgPSBzdGFydFRpbWUgKyBldmVudFJlbGF0
aXZlVGltZTsKKyAgICAgICAgCisgICAgICAgIENGVGltZUludGVydmFsIHdhaXRUaW1lID0gdGFy
Z2V0VGltZSAtIENGQWJzb2x1dGVUaW1lR2V0Q3VycmVudCgpOworICAgICAgICBpZiAod2FpdFRp
bWUgPiAwKQorICAgICAgICAgICAgW05TVGhyZWFkIHNsZWVwRm9yVGltZUludGVydmFsOndhaXRU
aW1lXTsKKworICAgICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgp
LCBeIHsKKyAgICAgICAgICAgIFtzZWxmIGRpc3BhdGNoRXZlbnRXaXRoSW5mbzpldmVudEluZm9d
OworICAgICAgICB9KTsKKyAgICB9CisKKyAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRf
bWFpbl9xdWV1ZSgpLCBeIHsKKyAgICAgICAgW3NlbGYgX3NlbmRNYXJrZXJISURFdmVudFdpdGhD
b21wbGV0aW9uQmxvY2s6Y29tcGxldGlvbkJsb2NrXTsKKyAgICB9KTsKK30KKworLSAodm9pZClz
ZW5kRXZlbnRTdHJlYW06KE5TRGljdGlvbmFyeSAqKWV2ZW50SW5mbyBjb21wbGV0aW9uQmxvY2s6
KHZvaWQgKF4pKHZvaWQpKWNvbXBsZXRpb25CbG9jaworeworICAgIGlmICghZXZlbnRJbmZvKSB7
CisgICAgICAgIE5TTG9nKEAiZXZlbnRJbmZvIGlzIG5pbCIpOworICAgICAgICBpZiAoY29tcGxl
dGlvbkJsb2NrKQorICAgICAgICAgICAgY29tcGxldGlvbkJsb2NrKCk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisgICAgCisgICAgTlNEaWN0aW9uYXJ5KiB0aHJlYWREYXRhID0gQHsKKyAgICAg
ICAgQCJldmVudEluZm8iOiBbZXZlbnRJbmZvIGNvcHldLAorICAgICAgICBAImNvbXBsZXRpb25C
bG9jayI6IFtbY29tcGxldGlvbkJsb2NrIGNvcHldIGF1dG9yZWxlYXNlXQorICAgIH07CisgICAg
CisgICAgTlNUaHJlYWQgKmV2ZW50RGlzcGF0Y2hUaHJlYWQgPSBbW1tOU1RocmVhZCBhbGxvY10g
aW5pdFdpdGhUYXJnZXQ6c2VsZiBzZWxlY3RvcjpAc2VsZWN0b3IoZXZlbnREaXNwYXRjaFRocmVh
ZEVudHJ5Oikgb2JqZWN0OnRocmVhZERhdGFdIGF1dG9yZWxlYXNlXTsKKyAgICBldmVudERpc3Bh
dGNoVGhyZWFkLnF1YWxpdHlPZlNlcnZpY2UgPSBOU1F1YWxpdHlPZlNlcnZpY2VVc2VySW50ZXJh
Y3RpdmU7CisgICAgW2V2ZW50RGlzcGF0Y2hUaHJlYWQgc3RhcnRdOworfQorCiBAZW5kCmRpZmYg
LS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2lvcy9JT0tpdFNQSS5oIGIvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9pb3MvSU9LaXRTUEkuaAppbmRleCAyMzY5MzhmOWQ0YzcyYjhiOWFjYWFk
ZWE3NzNjNmZjYmUxYjE2OWI1Li43ODdjYzlmNjdkN2QzZjZmNmE1YmE5YmJhYzNhZTAyY2IyNWRl
NDViIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2lvcy9JT0tpdFNQSS5oCisr
KyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvaW9zL0lPS2l0U1BJLmgKQEAgLTExNyw2ICsxMTcs
OCBAQCBlbnVtIHsKIH07CiAKIGVudW0geworICAgIGtJT0hJRERpZ2l0aXplclRyYW5zZHVjZXJU
eXBlU3R5bHVzICA9IDAsCisgICAga0lPSElERGlnaXRpemVyVHJhbnNkdWNlclR5cGVGaW5nZXIg
PSAyLAogICAgIGtJT0hJRERpZ2l0aXplclRyYW5zZHVjZXJUeXBlSGFuZCA9IDMKIH07CiB0eXBl
ZGVmIHVpbnQzMl90IElPSElERGlnaXRpemVyVHJhbnNkdWNlclR5cGU7CmRpZmYgLS1naXQgYS9U
b29scy9XZWJLaXRUZXN0UnVubmVyL2lvcy9VSVNjcmlwdENvbnRyb2xsZXJJT1MubW0gYi9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL2lvcy9VSVNjcmlwdENvbnRyb2xsZXJJT1MubW0KaW5kZXggYzVk
YjBlNDk3NThjYjA1OGJkMjU0ZGM0MzMyOGI1OWVmOTE0MzhiZC4uZjYyMTRkYTYxMTMyMTdjNGJl
Y2RkODM3NWY5YjQ4M2Q5ZGYyNzc5MiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9pb3MvVUlTY3JpcHRDb250cm9sbGVySU9TLm1tCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvaW9zL1VJU2NyaXB0Q29udHJvbGxlcklPUy5tbQpAQCAtMzUsNiArMzUsNyBAQAogI2ltcG9y
dCAiVGVzdFJ1bm5lcldLV2ViVmlldy5oIgogI2ltcG9ydCAiVUlTY3JpcHRDb250ZXh0LmgiCiAj
aW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5oPgorI2ltcG9ydCA8SmF2YVNj
cmlwdENvcmUvT3BhcXVlSlNTdHJpbmcuaD4KICNpbXBvcnQgPFVJS2l0L1VJS2l0Lmg+CiAjaW1w
b3J0IDxXZWJDb3JlL0Zsb2F0UmVjdC5oPgogI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlld1ByaXZh
dGUuaD4KQEAgLTE3NSw2ICsxNzYsMjQgQEAgdm9pZCBVSVNjcmlwdENvbnRyb2xsZXI6OnN0eWx1
c1RhcEF0UG9pbnQobG9uZyB4LCBsb25nIHksIGZsb2F0IGF6aW11dGhBbmdsZSwgZmwKICAgICB9
XTsKIH0KIAordm9pZCBVSVNjcmlwdENvbnRyb2xsZXI6OnNlbmRFdmVudFN0cmVhbShKU1N0cmlu
Z1JlZiBldmVudHNKU09OLCBKU1ZhbHVlUmVmIGNhbGxiYWNrKQoreworICAgIHVuc2lnbmVkIGNh
bGxiYWNrSUQgPSBtX2NvbnRleHQtPnByZXBhcmVGb3JBc3luY1Rhc2soY2FsbGJhY2ssIENhbGxi
YWNrVHlwZU5vblBlcnNpc3RlbnQpOworCisgICAgU3RyaW5nIGpzb25TdHJpbmcgPSBldmVudHNK
U09OLT5zdHJpbmcoKTsKKyAgICBhdXRvIGV2ZW50SW5mbyA9IGR5bmFtaWNfb2JqY19jYXN0PE5T
RGljdGlvbmFyeT4oW05TSlNPTlNlcmlhbGl6YXRpb24gSlNPTk9iamVjdFdpdGhEYXRhOlsoTlNT
dHJpbmcgKilqc29uU3RyaW5nIGRhdGFVc2luZ0VuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5n
XSBvcHRpb25zOjAgZXJyb3I6bmlsXSk7CisgICAgaWYgKCFldmVudEluZm8gfHwgIVtldmVudElu
Zm8gaXNLaW5kT2ZDbGFzczpbTlNEaWN0aW9uYXJ5IGNsYXNzXV0pIHsKKyAgICAgICAgV1RGTG9n
QWx3YXlzKCJKU09OIGlzIG5vdCBjb252ZXJ0aWJsZSB0byBhIGRpY3Rpb25hcnkiKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBbW0hJREV2ZW50R2VuZXJhdG9yIHNoYXJlZEhJ
REV2ZW50R2VuZXJhdG9yXSBzZW5kRXZlbnRTdHJlYW06ZXZlbnRJbmZvIGNvbXBsZXRpb25CbG9j
azpeeworICAgICAgICBpZiAoIW1fY29udGV4dCkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgbV9jb250ZXh0LT5hc3luY1Rhc2tDb21wbGV0ZShjYWxsYmFja0lEKTsKKyAgICB9XTsKK30K
Kwogdm9pZCBVSVNjcmlwdENvbnRyb2xsZXI6OmRyYWdGcm9tUG9pbnRUb1BvaW50KGxvbmcgc3Rh
cnRYLCBsb25nIHN0YXJ0WSwgbG9uZyBlbmRYLCBsb25nIGVuZFksIGRvdWJsZSBkdXJhdGlvblNl
Y29uZHMsIEpTVmFsdWVSZWYgY2FsbGJhY2spCiB7CiAgICAgdW5zaWduZWQgY2FsbGJhY2tJRCA9
IG1fY29udGV4dC0+cHJlcGFyZUZvckFzeW5jVGFzayhjYWxsYmFjaywgQ2FsbGJhY2tUeXBlTm9u
UGVyc2lzdGVudCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKaW5kZXggOTZjZTc0YTVjNzRmYjMyMmM5MDIwODJlYWUxZjBmYmRiNDBl
NzZkMC4uZmZjZDBkMjRhYmQ2ODE2M2QzZjExOGM4NDdmN2UyNjMzMjk2YTc4YiAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDEzIEBACisyMDE2LTEwLTA0ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBw
bGUuY29tPgorCisgICAgICAgIFtpT1MgV0syXSBNYWtlIGl0IHBvc3NpYmxlIGZvciBhIHRlc3Qg
dG8gZGVzY3JpYmUgYSB1c2VyIGdlc3R1cmUgYXMgYSBzdHJlYW0gb2YgZXZlbnRzIGluIEpTT04g
Zm9ybWF0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NjI5MzQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IGZhc3QvZXZlbnRzL2lvcy9ldmVudC1zdHJlYW0tc2luZ2xlLXRhcC1leHBlY3RlZC50eHQ6IEFk
ZGVkLgorICAgICAgICAqIGZhc3QvZXZlbnRzL2lvcy9ldmVudC1zdHJlYW0tc2luZ2xlLXRhcC5o
dG1sOiBBZGRlZC4KKwogMjAxNi0xMC0wNCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29t
PgogCiAgICAgICAgIFJldHVybiBudWxsIHdoZW4gd2luZG93Lm9wZW4oKSBpcyBwb3B1cCBibG9j
a2VkCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9pb3MvZXZlbnQtc3RyZWFt
LXNpbmdsZS10YXAtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvaW9zL2V2
ZW50LXN0cmVhbS1zaW5nbGUtdGFwLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMTNjMTY3NmZj
MWQ2MzFmMjFkMWE4NmY0ZTE5NjY5MDhhY2QzNGMwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvZmFzdC9ldmVudHMvaW9zL2V2ZW50LXN0cmVhbS1zaW5nbGUtdGFwLWV4cGVjdGVkLnR4
dApAQCAtMCwwICsxIEBACitQQVNTOiByZWNlaXZlZCBjbGljay4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2Zhc3QvZXZlbnRzL2lvcy9ldmVudC1zdHJlYW0tc2luZ2xlLXRhcC5odG1sIGIvTGF5
b3V0VGVzdHMvZmFzdC9ldmVudHMvaW9zL2V2ZW50LXN0cmVhbS1zaW5nbGUtdGFwLmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uYjYzNmZiZmExN2RmODBjZDkwMTU5OWI4N2MxYzIxNWJiYTIyNWUxMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2lvcy9ldmVudC1zdHJlYW0tc2lu
Z2xlLXRhcC5odG1sCkBAIC0wLDAgKzEsODYgQEAKKzwhRE9DVFlQRSBodG1sPiA8IS0tIHdlYmtp
dC10ZXN0LXJ1bm5lciBbIHVzZUZsZXhpYmxlVmlld3BvcnQ9dHJ1ZSBdIC0tPgorCis8aHRtbD4K
KzxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJpbml0aWFsLXNjYWxlPTEuMCwgd2lkdGg9
ZGV2aWNlLXdpZHRoIj4KKzxoZWFkPgorICAgIDxzdHlsZT4KKyAgICAgICAgI3RhcmdldCB7Cisg
ICAgICAgICAgICBoZWlnaHQ6IDEwMHB4OworICAgICAgICAgICAgd2lkdGg6IDEwMHB4OworICAg
ICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogZ3JheTsKKyAgICAgICAgfQorICAgIDwvc3R5bGU+
CisgICAgPHNjcmlwdD4KKworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAg
ICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgICAgICAgICAgdGVzdFJ1bm5lci53
YWl0VW50aWxEb25lKCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBnZXRVSVNjcmlw
dChldmVudFN0cmVhbSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGAKKyAgICAgICAg
ICAgIChmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICB2YXIgZXZlbnRTdHJlYW0gPSB7Cisg
ICAgICAgICAgICAgICAgICAgICJldmVudHMiIDogWworICAgICAgICAgICAgICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbnB1dFR5cGUiIDogImhhbmQiLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICJ0aW1lT2Zmc2V0IiA6IDAsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgInRvdWNoZXMiIDogWworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW5wdXRUeXBlIiA6
ICJmaW5nZXIiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInBoYXNlIiA6
ICJiZWdhbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaWQiIDogMSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ4IiA6IDYwLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgInkiIDogNjAKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAg
ICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgImlucHV0VHlwZSIgOiAiaGFuZCIsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgInRpbWVPZmZzZXQiIDogMC4wMDA1LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICJ0b3VjaGVzIiA6IFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImlucHV0VHlwZSIgOiAiZmluZ2VyIiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJwaGFzZSIgOiAiZW5kZWQiLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImlkIiA6IDEsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAieCIgOiA2MCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICJ5IiA6IDYwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBdCisgICAgICAgICAgICAgICAgICAgICAg
ICB9LAorICAgICAgICAgICAgICAgICAgICBdCisgICAgICAgICAgICAgICAgfTsKKworICAgICAg
ICAgICAgICAgIHVpQ29udHJvbGxlci5zZW5kRXZlbnRTdHJlYW0oSlNPTi5zdHJpbmdpZnkoZXZl
bnRTdHJlYW0pLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICAgICAgdWlDb250cm9sbGVy
LnVpU2NyaXB0Q29tcGxldGUoIkRvbmUiKTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAg
ICAgIH0pKCk7YAorICAgICAgICB9CisgICAgICAgIAorICAgICAgICBmdW5jdGlvbiBoYW5kbGVD
bGljaygpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdy
ZXN1bHQnKS50ZXh0Q29udGVudCA9ICdQQVNTOiByZWNlaXZlZCBjbGljay4nOworICAgICAgICAg
ICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIubm90
aWZ5RG9uZSgpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gcnVuVGVzdCgpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIHZhciB0YXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
dGFyZ2V0Iik7CisgICAgICAgICAgICB0YXJnZXQuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCBo
YW5kbGVDbGljaywgZmFsc2UpOworCisgICAgICAgICAgICBpZiAoIXRlc3RSdW5uZXIucnVuVUlT
Y3JpcHQpCisgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICB0ZXN0UnVubmVy
LnJ1blVJU2NyaXB0KGdldFVJU2NyaXB0KCksIGZ1bmN0aW9uKCkge30pOworICAgICAgICB9Cisg
ICAgICAgIAorICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIHJ1blRlc3Qs
IGZhbHNlKTsKKyAgICA8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorICAgIDxkaXYgaWQ9InRh
cmdldCI+PC9kaXY+CisgICAgPGRpdiBpZD0icmVzdWx0Ij5GQUlMOiBkaWQgbm90IHJlY2VpdmUg
Y2xpY2sgZXZlbnQuPC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>
<flag name="review"
          id="313820"
          type_id="1"
          status="+"
          setter="dino"
    />
          </attachment>
      

    </bug>

</bugzilla>