<?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>153761</bug_id>
          
          <creation_ts>2016-02-01 13:30:10 -0800</creation_ts>
          <short_desc>Allow ports to disable automatic text track selection</short_desc>
          <delta_ts>2016-02-02 08:39:21 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Media</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric Carlson">eric.carlson</reporter>
          <assigned_to name="Eric Carlson">eric.carlson</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1161002</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2016-02-01 13:30:10 -0800</bug_when>
    <thetext>Add a &quot;manual&quot; selection mode.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1161003</commentid>
    <comment_count>1</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2016-02-01 13:31:14 -0800</bug_when>
    <thetext>&lt;rdar://problem/24416768&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1161154</commentid>
    <comment_count>2</comment_count>
      <attachid>270459</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2016-02-01 17:48:59 -0800</bug_when>
    <thetext>Created attachment 270459
Proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1161156</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-02-01 17:50:35 -0800</bug_when>
    <thetext>Attachment 270459 did not pass style-queue:


ERROR: Source/WebCore/page/CaptionUserPreferencesMediaAF.cpp:120:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 1 in 16 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>1161160</commentid>
    <comment_count>4</comment_count>
      <attachid>270460</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2016-02-01 17:54:48 -0800</bug_when>
    <thetext>Created attachment 270460
Updated patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1161164</commentid>
    <comment_count>5</comment_count>
      <attachid>270460</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-02-01 18:09:06 -0800</bug_when>
    <thetext>Comment on attachment 270460
Updated patch.

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

&gt; Source/WebCore/html/HTMLMediaElement.cpp:3582
&gt; +        if (document.page())
&gt; +            m_captionDisplayMode = document.page()-&gt;group().captionPreferences()-&gt;captionDisplayMode();

- Is it OK to leave m_captionDisplayMode uninitialized here if document.page() is null? Maybe we should set it to Automatic in that case?
- What guarantees captionPreferences() is non-null?
- I’d put the page into a local variable rather than saying document.page() twice.

&gt; Source/WebCore/page/CaptionUserPreferences.cpp:70
&gt; +void CaptionUserPreferences::endBlockingNotificaitons()

Typo: endBlockingNotificaitons misspells notifications

&gt; Source/WebCore/page/CaptionUserPreferencesMediaAF.cpp:80
&gt; +static MTEnableCaption2015BehaviorPtrType MTEnableCaption2015BehaviorPtr = nullptr;

This should just be const, since it will never be non-null, right?

&gt; Source/WebCore/page/CaptionUserPreferencesMediaAF.cpp:118
&gt; +        if (!MTEnableCaption2015BehaviorPtr())
&gt; +            return;

Looks wrong to me. I’d think this would be checking the pointer for null, not calling the pointer and checking that for null. I don’t see code that looks like this in other code that uses SOFT_LINK_OPTIONAL. Is this really the correct idiom?

&gt; Source/WebCore/page/CaptionUserPreferencesMediaAF.cpp:120
&gt; +        if (MTEnableCaption2015BehaviorPtr()()) {

Similarly looks wrong, but maybe not.

I also suggest doing this as an early return.

&gt; Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:746
&gt; +    static bool manualSelectionMode;
&gt; +    static std::once_flag initializeSelectionMode;
&gt; +
&gt; +    std::call_once(initializeSelectionMode, [] {
&gt; +        if (MTEnableCaption2015BehaviorPtr())
&gt; +            manualSelectionMode = MTEnableCaption2015BehaviorPtr()();
&gt; +    });

There’s no need to use std::call_once if we aren’t trying to use this function from multiple threads. Could just use normal initialization:

    static bool manualSelectionMode = MTEnableCaption2015BehaviorPtr() &amp;&amp; MTEnableCaption2015BehaviorPtr()();

But also, this use looks so peculiar. Is that really how SOFT_LINK_OPTIONAL is used?

It’s really annoying to have this code twice. Could we write it once somewhere and share it?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1161265</commentid>
    <comment_count>6</comment_count>
      <attachid>270460</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2016-02-02 07:46:36 -0800</bug_when>
    <thetext>Comment on attachment 270460
Updated patch.

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

&gt;&gt; Source/WebCore/html/HTMLMediaElement.cpp:3582
&gt;&gt; +            m_captionDisplayMode = document.page()-&gt;group().captionPreferences()-&gt;captionDisplayMode();
&gt; 
&gt; - Is it OK to leave m_captionDisplayMode uninitialized here if document.page() is null? Maybe we should set it to Automatic in that case?
&gt; - What guarantees captionPreferences() is non-null?
&gt; - I’d put the page into a local variable rather than saying document.page() twice.

&gt; Is it OK to leave m_captionDisplayMode uninitialized here if document.page() is null? Maybe we should set it to Automatic in that case?
m_captionDisplayMode is initialized in the constructor.

&gt; What guarantees captionPreferences() is non-null?
captionPreferences() allocates the preferences lazily on demand. It can&apos;t be null (unless new fails) so it should return a reference. I will fix that in a followup.

&gt; I’d put the page into a local variable rather than saying document.page() twice.
Done.

&gt;&gt; Source/WebCore/page/CaptionUserPreferences.cpp:70
&gt;&gt; +void CaptionUserPreferences::endBlockingNotificaitons()
&gt; 
&gt; Typo: endBlockingNotificaitons misspells notifications

Fixed.

&gt;&gt; Source/WebCore/page/CaptionUserPreferencesMediaAF.cpp:80
&gt;&gt; +static MTEnableCaption2015BehaviorPtrType MTEnableCaption2015BehaviorPtr = nullptr;
&gt; 
&gt; This should just be const, since it will never be non-null, right?

This is just wrong, MTEnableCaption2015BehaviorPtr is a function. Fixed.

&gt;&gt; Source/WebCore/page/CaptionUserPreferencesMediaAF.cpp:118
&gt;&gt; +            return;
&gt; 
&gt; Looks wrong to me. I’d think this would be checking the pointer for null, not calling the pointer and checking that for null. I don’t see code that looks like this in other code that uses SOFT_LINK_OPTIONAL. Is this really the correct idiom?

MTEnableCaption2015BehaviorPtr is a function defined by the SOFT_LINK_OPTIONAL macro, which returns a pointer to the framework function or NULL. I have changed this to make that more obvious.

&gt;&gt; Source/WebCore/page/CaptionUserPreferencesMediaAF.cpp:120
&gt;&gt; +        if (MTEnableCaption2015BehaviorPtr()()) {
&gt; 
&gt; Similarly looks wrong, but maybe not.
&gt; 
&gt; I also suggest doing this as an early return.

Done.

&gt;&gt; Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:746
&gt;&gt; +    });
&gt; 
&gt; There’s no need to use std::call_once if we aren’t trying to use this function from multiple threads. Could just use normal initialization:
&gt; 
&gt;     static bool manualSelectionMode = MTEnableCaption2015BehaviorPtr() &amp;&amp; MTEnableCaption2015BehaviorPtr()();
&gt; 
&gt; But also, this use looks so peculiar. Is that really how SOFT_LINK_OPTIONAL is used?
&gt; 
&gt; It’s really annoying to have this code twice. Could we write it once somewhere and share it?

&gt; There’s no need to use std::call_once if we aren’t trying to use this function from multiple threads. Could just use normal initialization:
&gt; 
&gt;     static bool manualSelectionMode = MTEnableCaption2015BehaviorPtr() &amp;&amp; MTEnableCaption2015BehaviorPtr()();

Done.

&gt; But also, this use looks so peculiar. Is that really how SOFT_LINK_OPTIONAL is used?
&gt; 
&gt; It’s really annoying to have this code twice. Could we write it once somewhere and share it?

I will do that in a followup.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1161266</commentid>
    <comment_count>7</comment_count>
      <attachid>270486</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2016-02-02 07:47:33 -0800</bug_when>
    <thetext>Created attachment 270486
Patch for landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1161277</commentid>
    <comment_count>8</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2016-02-02 08:39:11 -0800</bug_when>
    <thetext>Committed r196010: https://trac.webkit.org/r196010</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>270459</attachid>
            <date>2016-02-01 17:48:59 -0800</date>
            <delta_ts>2016-02-01 17:54:48 -0800</delta_ts>
            <desc>Proposed patch</desc>
            <filename>patch_4.txt</filename>
            <type>text/plain</type>
            <size>29233</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5NTk4MCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU2IEBACisyMDE2LTAyLTAxICBFcmljIENh
cmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIEFsbG93IHBvcnRzIHRv
IGRpc2FibGUgYXV0b21hdGljIHRleHQgdHJhY2sgc2VsZWN0aW9uCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTM3NjEKKyAgICAgICAgPHJkYXI6Ly9w
cm9ibGVtLzI0NDE2NzY4PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFRlc3Q6IG1lZGlhL3RyYWNrL3RyYWNrLW1hbnVhbC1tb2RlLmh0bWwKKworICAg
ICAgICAqIE1vZHVsZXMvbWVkaWFjb250cm9scy9NZWRpYUNvbnRyb2xzSG9zdC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xzSG9zdDo6bWFudWFsS2V5d29yZCk6IE5ldy4KKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbHNIb3N0OjpjYXB0aW9uRGlzcGxheU1vZGUpOiBT
dXBwb3J0ICdtYW51YWwnIG1vZGUuCisgICAgICAgICogTW9kdWxlcy9tZWRpYWNvbnRyb2xzL01l
ZGlhQ29udHJvbHNIb3N0Lmg6CisKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhY29udHJvbHMvbWVk
aWFDb250cm9sc0FwcGxlLmpzOgorICAgICAgICAoQ29udHJvbGxlci5wcm90b3R5cGUuYnVpbGRD
YXB0aW9uTWVudSk6IENoZWNrIHRoZSAnb2ZmJyBpdGVtIHdoZW4gaW4gbWFudWFsIG1vZGUuCisK
KyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTE1lZGlhRWxlbWVudDo6YWRkVGV4dFRyYWNrKTogVXBkYXRlIG1fY2FwdGlvbkRpc3BsYXlN
b2RlIHdoZW4gY2FsbGVkIGZvciB0aGUgZmlyc3QKKyAgICAgICAgICB0aW1lIHNvIGl0IGlzIGFs
d2F5cyBjb3JyZWN0LiBTZXQgdGhlIHRyYWNrJ3MgbWFudWFsIHNlbGVjdGlvbiBtb2RlIGFzIGFw
cHJvcHJpYXRlLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6Y2FwdGlvblBy
ZWZlcmVuY2VzQ2hhbmdlZCk6IFNldCBlYWNoIHRyYWNrJ3MgbWFudWFsIHNlbGVjdGlvbiAKKyAg
ICAgICAgICBtb2RlIGFzIGFwcHJvcHJpYXRlLgorCisgICAgICAgICogaHRtbC90cmFjay9UZXh0
VHJhY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrOjpraW5kKTogUmV0dXJuICdz
dWJ0aXRsZXMnIGZvciBmb3JjZWQgdHJhY2tzIHdoZW4gaW4gbWFudWFsIG1vZGUuCisgICAgICAg
ICogaHRtbC90cmFjay9UZXh0VHJhY2suaDoKKworICAgICAgICAqIGh0bWwvdHJhY2svVHJhY2tC
YXNlLmg6CisgICAgICAgIChXZWJDb3JlOjpUcmFja0Jhc2U6OmtpbmQpOiBNYWtlIHZpcnR1YWwu
CisKKyAgICAgICAgKiBwYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXMuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q2FwdGlvblVzZXJQcmVmZXJlbmNlczo6YmVnaW5CbG9ja2luZ05vdGlmaWNhdGlv
bnMpOiBOZXcuCisgICAgICAgIChXZWJDb3JlOjpDYXB0aW9uVXNlclByZWZlcmVuY2VzOjplbmRC
bG9ja2luZ05vdGlmaWNhaXRvbnMpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkNhcHRpb25V
c2VyUHJlZmVyZW5jZXM6Om5vdGlmeSk6IERvbid0IG5vdGlmeSB3aGVuIGJsb2NrZWQuCisgICAg
ICAgICogcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzLmg6CisKKyAgICAgICAgKiBwYWdlL0Nh
cHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhcHRp
b25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGOjpDYXB0aW9uVXNlclByZWZlcmVuY2VzTWVkaWFBRik6
IFNldCBtYW51YWwgbW9kZSAKKyAgICAgICAgICB3aGVuIGFwcHJvcHJpYXRlLgorICAgICAgICAo
V2ViQ29yZTo6Q2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUY6OmNhcHRpb25EaXNwbGF5TW9k
ZSk6IENoZWNrIG1hbnVhbCBtb2RlLgorICAgICAgICAoV2ViQ29yZTo6Q2FwdGlvblVzZXJQcmVm
ZXJlbmNlc01lZGlhQUY6OnNldENhcHRpb25EaXNwbGF5TW9kZSk6IERpdHRvLgorICAgICAgICAo
V2ViQ29yZTo6Q2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUY6OnNldFByZWZlcnJlZExhbmd1
YWdlKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpDYXB0aW9uVXNlclByZWZlcmVuY2VzTWVk
aWFBRjo6dGV4dFRyYWNrU2VsZWN0aW9uU2NvcmUpOiBSZXR1cm4gemVybyB3aGVuIGluIG1hbnVh
bCBtb2RlLgorICAgICAgICAoV2ViQ29yZTo6Q2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUY6
OnNvcnRlZFRyYWNrTGlzdEZvck1lbnUpOiBDb25zaWRlciBtYW51YWwgbW9kZS4gRml4CisgICAg
ICAgICAgdHlwb3MgaW4gbG9nZ2luZy4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW06Cisg
ICAgICAgIChXZWJDb3JlOjptZWRpYURlc2NyaXB0aW9uRm9yS2luZCk6IFJldHVybiAnYXV4aWxp
YXJ5JyB3aGVuIGluIG1hbnVhbCBtb2RlLgorCisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpzZXRDYXB0aW9uRGlzcGxheU1vZGUp
OiBTdXBwb3J0IG1hbnVhbCBtb2RlLgorCiAyMDE2LTAyLTAxICBUaW0gSG9ydG9uICA8dGltb3Ro
eV9ob3J0b25AYXBwbGUuY29tPgogCiAgICAgICAgIE1vdmUgc29tZSBTUEkgZGVjbGFyYXRpb25z
IGludG8gdGhlIGFwcHJvcHJpYXRlIFNQSSBoZWFkZXIKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFjb250cm9scy9NZWRpYUNvbnRyb2xzSG9zdC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYWNvbnRyb2xzL01lZGlhQ29udHJvbHNIb3N0LmNw
cAkocmV2aXNpb24gMTk1OTU5KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYWNvbnRy
b2xzL01lZGlhQ29udHJvbHNIb3N0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjEsNiArNjEsMTMg
QEAgY29uc3QgQXRvbWljU3RyaW5nJiBNZWRpYUNvbnRyb2xzSG9zdDo6YQogICAgIHJldHVybiBh
bHdheXNPbjsKIH0KIAorY29uc3QgQXRvbWljU3RyaW5nJiBNZWRpYUNvbnRyb2xzSG9zdDo6bWFu
dWFsS2V5d29yZCgpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21pY1N0
cmluZz4gYWx3YXlzT24oIm1hbnVhbCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVy
YWwpOworICAgIHJldHVybiBhbHdheXNPbjsKK30KKworCiBSZWY8TWVkaWFDb250cm9sc0hvc3Q+
IE1lZGlhQ29udHJvbHNIb3N0OjpjcmVhdGUoSFRNTE1lZGlhRWxlbWVudCogbWVkaWFFbGVtZW50
KQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1lZGlhQ29udHJvbHNIb3N0KG1lZGlhRWxl
bWVudCkpOwpAQCAtMTUxLDYgKzE1OCw4IEBAIEF0b21pY1N0cmluZyBNZWRpYUNvbnRyb2xzSG9z
dDo6Y2FwdGlvbkQKICAgICAgICAgcmV0dXJuIGZvcmNlZE9ubHlLZXl3b3JkKCk7CiAgICAgY2Fz
ZSBDYXB0aW9uVXNlclByZWZlcmVuY2VzOjpBbHdheXNPbjoKICAgICAgICAgcmV0dXJuIGFsd2F5
c09uS2V5d29yZCgpOworICAgIGNhc2UgQ2FwdGlvblVzZXJQcmVmZXJlbmNlczo6TWFudWFsOgor
ICAgICAgICByZXR1cm4gbWFudWFsS2V5d29yZCgpOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm4gZW1wdHlBdG9tOwpJbmRleDogU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYWNvbnRyb2xzL01lZGlhQ29udHJvbHNIb3N0LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYWNvbnRyb2xzL01lZGlhQ29u
dHJvbHNIb3N0LmgJKHJldmlzaW9uIDE5NTk1OSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFjb250cm9scy9NZWRpYUNvbnRyb2xzSG9zdC5oCSh3b3JraW5nIGNvcHkpCkBAIC01Miw2
ICs1Miw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBhdXRvbWF0
aWNLZXl3b3JkKCk7CiAgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgZm9yY2VkT25seUtl
eXdvcmQoKTsKICAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBhbHdheXNPbktleXdvcmQo
KTsKKyAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBtYW51YWxLZXl3b3JkKCk7CiAKICAg
ICBWZWN0b3I8UmVmUHRyPFRleHRUcmFjaz4+IHNvcnRlZFRyYWNrTGlzdEZvck1lbnUoVGV4dFRy
YWNrTGlzdCopOwogICAgIFZlY3RvcjxSZWZQdHI8QXVkaW9UcmFjaz4+IHNvcnRlZFRyYWNrTGlz
dEZvck1lbnUoQXVkaW9UcmFja0xpc3QqKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFjb250cm9scy9tZWRpYUNvbnRyb2xzQXBwbGUuanMKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYWNvbnRyb2xzL21lZGlhQ29udHJvbHNBcHBsZS5qcwkocmV2
aXNpb24gMTk1OTU5KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYWNvbnRyb2xzL21l
ZGlhQ29udHJvbHNBcHBsZS5qcwkod29ya2luZyBjb3B5KQpAQCAtMTgzNiw3ICsxODM2LDcgQEAg
Q29udHJvbGxlci5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAg
aWYgKG9mZk1lbnUgJiYgZGlzcGxheU1vZGUgPT09ICdmb3JjZWQtb25seScgJiYgIXRyYWNrTWVu
dUl0ZW1TZWxlY3RlZCkgeworICAgICAgICAgICAgaWYgKG9mZk1lbnUgJiYgKGRpc3BsYXlNb2Rl
ID09PSAnZm9yY2VkLW9ubHknIHx8IGRpc3BsYXlNb2RlID09PSAnbWFudWFsJykgJiYgIXRyYWNr
TWVudUl0ZW1TZWxlY3RlZCkgewogICAgICAgICAgICAgICAgIG9mZk1lbnUuY2xhc3NMaXN0LmFk
ZCh0aGlzLkNsYXNzTmFtZXMuc2VsZWN0ZWQpOwogICAgICAgICAgICAgICAgIG9mZk1lbnUuc2V0
QXR0cmlidXRlKCd0YWJpbmRleCcsICcwJyk7CiAgICAgICAgICAgICAgICAgb2ZmTWVudS5zZXRB
dHRyaWJ1dGUoJ2FyaWEtY2hlY2tlZCcsICd0cnVlJyk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAJKHJldmlzaW9uIDE5NTk1OSkKKysrIFNvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1NzUsMTAg
KzM1NzUsMTQgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjphZGRUZXh0VHJhY2soUGFzcwogICAg
ICAgICByZXR1cm47CiAKICAgICBpZiAoIW1fcmVxdWlyZUNhcHRpb25QcmVmZXJlbmNlc0NoYW5n
ZWRDYWxsYmFja3MpIHsKKyAgICAgICAgRG9jdW1lbnQmIGRvY3VtZW50ID0gdGhpcy0+ZG9jdW1l
bnQoKTsKICAgICAgICAgbV9yZXF1aXJlQ2FwdGlvblByZWZlcmVuY2VzQ2hhbmdlZENhbGxiYWNr
cyA9IHRydWU7Ci0gICAgICAgIGRvY3VtZW50KCkucmVnaXN0ZXJGb3JDYXB0aW9uUHJlZmVyZW5j
ZXNDaGFuZ2VkQ2FsbGJhY2tzKHRoaXMpOworICAgICAgICBkb2N1bWVudC5yZWdpc3RlckZvckNh
cHRpb25QcmVmZXJlbmNlc0NoYW5nZWRDYWxsYmFja3ModGhpcyk7CisgICAgICAgIGlmIChkb2N1
bWVudC5wYWdlKCkpCisgICAgICAgICAgICBtX2NhcHRpb25EaXNwbGF5TW9kZSA9IGRvY3VtZW50
LnBhZ2UoKS0+Z3JvdXAoKS5jYXB0aW9uUHJlZmVyZW5jZXMoKS0+Y2FwdGlvbkRpc3BsYXlNb2Rl
KCk7CiAgICAgfQogCisgICAgdHJhY2stPnNldE1hbnVhbFNlbGVjdGlvbk1vZGUobV9jYXB0aW9u
RGlzcGxheU1vZGUgPT0gQ2FwdGlvblVzZXJQcmVmZXJlbmNlczo6TWFudWFsKTsKICAgICB0ZXh0
VHJhY2tzKCktPmFwcGVuZCh0cmFjayk7CiAKICAgICBjbG9zZUNhcHRpb25UcmFja3NDaGFuZ2Vk
KCk7CkBAIC01NzIzLDYgKzU3MjcsMTEgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpjYXB0aW9u
UHJlZmVyZW5jZQogICAgIGlmIChtX2NhcHRpb25EaXNwbGF5TW9kZSA9PSBkaXNwbGF5TW9kZSkK
ICAgICAgICAgcmV0dXJuOwogCisgICAgaWYgKG1fY2FwdGlvbkRpc3BsYXlNb2RlID09IENhcHRp
b25Vc2VyUHJlZmVyZW5jZXM6Ok1hbnVhbCB8fCBkaXNwbGF5TW9kZSA9PSBDYXB0aW9uVXNlclBy
ZWZlcmVuY2VzOjpNYW51YWwpIHsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1f
dGV4dFRyYWNrcy0+bGVuZ3RoKCk7ICsraSkKKyAgICAgICAgICAgIG1fdGV4dFRyYWNrcy0+aXRl
bShpKS0+c2V0TWFudWFsU2VsZWN0aW9uTW9kZShkaXNwbGF5TW9kZSA9PSBDYXB0aW9uVXNlclBy
ZWZlcmVuY2VzOjpNYW51YWwpOworICAgIH0KKwogICAgIG1fY2FwdGlvbkRpc3BsYXlNb2RlID0g
ZGlzcGxheU1vZGU7CiAgICAgc2V0V2Via2l0Q2xvc2VkQ2FwdGlvbnNWaXNpYmxlKG1fY2FwdGlv
bkRpc3BsYXlNb2RlID09IENhcHRpb25Vc2VyUHJlZmVyZW5jZXM6OkFsd2F5c09uKTsKIH0KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFjay5jcHAJKHJldmlzaW9uIDE5NTk1
OSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTczLDYgKzE3MywxNSBAQCBib29sIFRleHRUcmFjazo6aXNWYWxpZEtpbmRLZXl3
b3JkKGNvbnN0CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCitBdG9taWNTdHJpbmcgVGV4dFRyYWNr
OjpraW5kKCkgY29uc3QKK3sKKyAgICBBdG9taWNTdHJpbmcga2luZCA9IFRyYWNrQmFzZTo6a2lu
ZCgpOworICAgIGlmICghbV9tYW51YWxTZWxlY3Rpb25Nb2RlIHx8IGtpbmQgIT0gZm9yY2VkS2V5
d29yZCgpKQorICAgICAgICByZXR1cm4ga2luZDsKKworICAgIHJldHVybiBzdWJ0aXRsZXNLZXl3
b3JkKCk7Cit9CisKIHZvaWQgVGV4dFRyYWNrOjpzZXRLaW5kKGNvbnN0IEF0b21pY1N0cmluZyYg
bmV3S2luZCkKIHsKICAgICBTdHJpbmcgb2xkS2luZCA9IGtpbmQoKTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvaHRtbC90cmFjay9UZXh0VHJhY2suaAkocmV2aXNpb24gMTk1OTU5KQorKysgU291cmNlL1dl
YkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2suaAkod29ya2luZyBjb3B5KQpAQCAtODIsNyArODIs
OCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgaGlkZGVuS2V5d29y
ZCgpOwogICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIHNob3dpbmdLZXl3b3JkKCk7CiAK
LSAgICB2aXJ0dWFsIHZvaWQgc2V0S2luZChjb25zdCBBdG9taWNTdHJpbmcmKSBvdmVycmlkZTsK
KyAgICB2b2lkIHNldEtpbmQoY29uc3QgQXRvbWljU3RyaW5nJikgb3ZlcnJpZGU7CisgICAgQXRv
bWljU3RyaW5nIGtpbmQoKSBjb25zdCBvdmVycmlkZTsKIAogICAgIHZpcnR1YWwgQXRvbWljU3Ry
aW5nIGluQmFuZE1ldGFkYXRhVHJhY2tEaXNwYXRjaFR5cGUoKSBjb25zdCB7IHJldHVybiBlbXB0
eVN0cmluZygpOyB9CiAKQEAgLTE0Miw2ICsxNDMsOCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFs
IE1lZGlhVGltZSBzdGFydFRpbWVWYXJpYW5jZSgpIGNvbnN0IHsgcmV0dXJuIE1lZGlhVGltZTo6
emVyb1RpbWUoKTsgfQogCisgICAgdm9pZCBzZXRNYW51YWxTZWxlY3Rpb25Nb2RlKGJvb2wgbW9k
ZSkgeyBtX21hbnVhbFNlbGVjdGlvbk1vZGUgPSBtb2RlOyB9CisKICAgICB1c2luZyBSZWZDb3Vu
dGVkPFRyYWNrQmFzZT46OnJlZjsKICAgICB1c2luZyBSZWZDb3VudGVkPFRyYWNrQmFzZT46OmRl
cmVmOwogCkBAIC0xNzEsNiArMTc0LDcgQEAgcHJpdmF0ZToKICAgICBpbnQgbV90cmFja0luZGV4
OwogICAgIGludCBtX3JlbmRlcmVkVHJhY2tJbmRleDsKICAgICBib29sIG1faGFzQmVlbkNvbmZp
Z3VyZWQ7CisgICAgYm9vbCBtX21hbnVhbFNlbGVjdGlvbk1vZGUgeyBmYWxzZSB9OwogfTsKIAog
aW5saW5lIFRleHRUcmFjayogdG9UZXh0VHJhY2soVHJhY2tCYXNlKiB0cmFjaykKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVHJhY2tCYXNlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvaHRtbC90cmFjay9UcmFja0Jhc2UuaAkocmV2aXNpb24gMTk1OTU5KQorKysgU291
cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UcmFja0Jhc2UuaAkod29ya2luZyBjb3B5KQpAQCAtNTEs
NyArNTEsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBBdG9taWNTdHJpbmcgaWQoKSBjb25zdCB7
IHJldHVybiBtX2lkOyB9CiAgICAgdmlydHVhbCB2b2lkIHNldElkKGNvbnN0IEF0b21pY1N0cmlu
ZyYgaWQpIHsgbV9pZCA9IGlkOyB9CiAKLSAgICBBdG9taWNTdHJpbmcga2luZCgpIGNvbnN0IHsg
cmV0dXJuIG1fa2luZDsgfQorICAgIHZpcnR1YWwgQXRvbWljU3RyaW5nIGtpbmQoKSBjb25zdCB7
IHJldHVybiBtX2tpbmQ7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0S2luZChjb25zdCBBdG9taWNT
dHJpbmcmKTsKIAogICAgIEF0b21pY1N0cmluZyBsYWJlbCgpIGNvbnN0IHsgcmV0dXJuIG1fbGFi
ZWw7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlcy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNlclByZWZlcmVu
Y2VzLmNwcAkocmV2aXNpb24gMTk1OTU5KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9u
VXNlclByZWZlcmVuY2VzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjIsOCArNjIsMjIgQEAgdm9p
ZCBDYXB0aW9uVXNlclByZWZlcmVuY2VzOjp0aW1lckZpcmVkKAogICAgIGNhcHRpb25QcmVmZXJl
bmNlc0NoYW5nZWQoKTsKIH0KIAordm9pZCBDYXB0aW9uVXNlclByZWZlcmVuY2VzOjpiZWdpbkJs
b2NraW5nTm90aWZpY2F0aW9ucygpCit7CisgICAgKyttX2Jsb2NrTm90aWZpY2F0aW9uc0NvdW50
ZXI7Cit9CisKK3ZvaWQgQ2FwdGlvblVzZXJQcmVmZXJlbmNlczo6ZW5kQmxvY2tpbmdOb3RpZmlj
YWl0b25zKCkKK3sKKyAgICBBU1NFUlQobV9ibG9ja05vdGlmaWNhdGlvbnNDb3VudGVyKTsKKyAg
ICAtLW1fYmxvY2tOb3RpZmljYXRpb25zQ291bnRlcjsKK30KKwogdm9pZCBDYXB0aW9uVXNlclBy
ZWZlcmVuY2VzOjpub3RpZnkoKQogeworICAgIGlmIChtX2Jsb2NrTm90aWZpY2F0aW9uc0NvdW50
ZXIpCisgICAgICAgIHJldHVybjsKKwogICAgIG1faGF2ZVByZWZlcmVuY2VzID0gdHJ1ZTsKICAg
ICBpZiAoIW1fdGltZXIuaXNBY3RpdmUoKSkKICAgICAgICAgbV90aW1lci5zdGFydE9uZVNob3Qo
MCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXMuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXMu
aAkocmV2aXNpb24gMTk1OTU5KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNlclBy
ZWZlcmVuY2VzLmgJKHdvcmtpbmcgY29weSkKQEAgLTUwLDcgKzUwLDggQEAgcHVibGljOgogICAg
IGVudW0gQ2FwdGlvbkRpc3BsYXlNb2RlIHsKICAgICAgICAgQXV0b21hdGljLAogICAgICAgICBG
b3JjZWRPbmx5LAotICAgICAgICBBbHdheXNPbgorICAgICAgICBBbHdheXNPbiwKKyAgICAgICAg
TWFudWFsLAogICAgIH07CiAgICAgdmlydHVhbCBDYXB0aW9uRGlzcGxheU1vZGUgY2FwdGlvbkRp
c3BsYXlNb2RlKCkgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIHNldENhcHRpb25EaXNwbGF5TW9k
ZShDYXB0aW9uRGlzcGxheU1vZGUpOwpAQCAtOTgsMTggKzk5LDIxIEBAIHB1YmxpYzoKIAogcHJv
dGVjdGVkOgogICAgIHZvaWQgdXBkYXRlQ2FwdGlvblN0eWxlU2hlZXRPdmVyaWRlKCk7CisgICAg
dm9pZCBiZWdpbkJsb2NraW5nTm90aWZpY2F0aW9ucygpOworICAgIHZvaWQgZW5kQmxvY2tpbmdO
b3RpZmljYWl0b25zKCk7CiAKIHByaXZhdGU6CiAgICAgdm9pZCB0aW1lckZpcmVkKCk7CiAgICAg
dm9pZCBub3RpZnkoKTsKIAogICAgIFBhZ2VHcm91cCYgbV9wYWdlR3JvdXA7Ci0gICAgQ2FwdGlv
bkRpc3BsYXlNb2RlIG1fZGlzcGxheU1vZGU7CisgICAgbXV0YWJsZSBDYXB0aW9uRGlzcGxheU1v
ZGUgbV9kaXNwbGF5TW9kZTsKICAgICBUaW1lciBtX3RpbWVyOwogICAgIFN0cmluZyBtX3VzZXJQ
cmVmZXJyZWRMYW5ndWFnZTsKICAgICBTdHJpbmcgbV91c2VyUHJlZmVycmVkQXVkaW9DaGFyYWN0
ZXJpc3RpYzsKICAgICBTdHJpbmcgbV9jYXB0aW9uc1N0eWxlU2hlZXRPdmVycmlkZTsKICAgICBT
dHJpbmcgbV9wcmltYXJ5QXVkaW9UcmFja0xhbmd1YWdlT3ZlcnJpZGU7CisgICAgdW5zaWduZWQg
bV9ibG9ja05vdGlmaWNhdGlvbnNDb3VudGVyIHsgMCB9OwogICAgIGJvb2wgbV90ZXN0aW5nTW9k
ZTsKICAgICBib29sIG1faGF2ZVByZWZlcmVuY2VzOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BhZ2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUYuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BhZ2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUYuY3BwCShyZXZp
c2lvbiAxOTU5NTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5j
ZXNNZWRpYUFGLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzUsOCArNzUsMTggQEAgU09GVF9MSU5L
X0FWRl9QT0lOVEVSKENvcmVUZXh0LCBrQ1RGb250TgogI2RlZmluZSBrQ1RGb250TmFtZUF0dHJp
YnV0ZSBnZXRrQ1RGb250TmFtZUF0dHJpYnV0ZSgpCiAKICNkZWZpbmUgQ1RGb250RGVzY3JpcHRv
ckNvcHlBdHRyaWJ1dGUgc29mdExpbmtfQ1RGb250RGVzY3JpcHRvckNvcHlBdHRyaWJ1dGUKLSNl
bmRpZgotI2VuZGlmCisKK3R5cGVkZWYgQm9vbGVhbiAoKk1URW5hYmxlQ2FwdGlvbjIwMTVCZWhh
dmlvclB0clR5cGUpICgpOworc3RhdGljIE1URW5hYmxlQ2FwdGlvbjIwMTVCZWhhdmlvclB0clR5
cGUgTVRFbmFibGVDYXB0aW9uMjAxNUJlaGF2aW9yUHRyID0gbnVsbHB0cjsKKworI2Vsc2UKKwor
U09GVF9MSU5LX0ZSQU1FV09SSyhNZWRpYVRvb2xib3gpCitTT0ZUX0xJTktfT1BUSU9OQUwoTWVk
aWFUb29sYm94LCBNVEVuYWJsZUNhcHRpb24yMDE1QmVoYXZpb3IsIEJvb2xlYW4sICgpLCAoKSkK
KworI2VuZGlmIC8vIFBMQVRGT1JNKFdJTikKKworI2VuZGlmIC8vIEhBVkUoTUVESUFfQUNDRVNT
SUJJTElUWV9GUkFNRVdPUkspCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMTAwLDYgKzEx
MCwyMiBAQCBDYXB0aW9uVXNlclByZWZlcmVuY2VzTWVkaWFBRjo6Q2FwdGlvblVzCiAgICAgLCBt
X2xpc3RlbmluZ0ZvclByZWZlcmVuY2VDaGFuZ2VzKGZhbHNlKQogI2VuZGlmCiB7CisKKyAgICBz
dGF0aWMgc3RkOjpvbmNlX2ZsYWcgaW5pdGlhbGl6ZVNlbGVjdGlvbk1vZGU7CisgICAgc3RkOjpj
YWxsX29uY2UoaW5pdGlhbGl6ZVNlbGVjdGlvbk1vZGUsIFt0aGlzXSB7CisKKyAgICAgICAgaWYg
KCFNVEVuYWJsZUNhcHRpb24yMDE1QmVoYXZpb3JQdHIoKSkKKyAgICAgICAgICAgIHJldHVybjsK
KworICAgICAgICAgaWYgKE1URW5hYmxlQ2FwdGlvbjIwMTVCZWhhdmlvclB0cigpKCkpIHsKKyAg
ICAgICAgICAgIGJlZ2luQmxvY2tpbmdOb3RpZmljYXRpb25zKCk7CisgICAgICAgICAgICBDYXB0
aW9uVXNlclByZWZlcmVuY2VzOjpzZXRDYXB0aW9uRGlzcGxheU1vZGUoTWFudWFsKTsKKyAgICAg
ICAgICAgIHNldFVzZXJQcmVmZXJzQ2FwdGlvbnMoZmFsc2UpOworICAgICAgICAgICAgc2V0VXNl
clByZWZlcnNTdWJ0aXRsZXMoZmFsc2UpOworICAgICAgICAgICAgc2V0VXNlclByZWZlcnNUZXh0
RGVzY3JpcHRpb25zKGZhbHNlKTsKKyAgICAgICAgICAgIGVuZEJsb2NraW5nTm90aWZpY2FpdG9u
cygpOworICAgICAgICB9CisgICAgfSk7CiB9CiAKIENhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRp
YUFGOjp+Q2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUYoKQpAQCAtMTE2LDggKzE0Miw5IEBA
IENhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGOjp+Q2FwdGlvblUKIAogQ2FwdGlvblVzZXJQ
cmVmZXJlbmNlczo6Q2FwdGlvbkRpc3BsYXlNb2RlIENhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRp
YUFGOjpjYXB0aW9uRGlzcGxheU1vZGUoKSBjb25zdAogewotICAgIGlmICh0ZXN0aW5nTW9kZSgp
IHx8ICFNZWRpYUFjY2Vzc2liaWxpdHlMaWJyYXJ5KCkpCi0gICAgICAgIHJldHVybiBDYXB0aW9u
VXNlclByZWZlcmVuY2VzOjpjYXB0aW9uRGlzcGxheU1vZGUoKTsKKyAgICBDYXB0aW9uRGlzcGxh
eU1vZGUgaW50ZXJuYWxNb2RlID0gQ2FwdGlvblVzZXJQcmVmZXJlbmNlczo6Y2FwdGlvbkRpc3Bs
YXlNb2RlKCk7CisgICAgaWYgKGludGVybmFsTW9kZSA9PSBNYW51YWwgfHwgdGVzdGluZ01vZGUo
KSB8fCAhTWVkaWFBY2Nlc3NpYmlsaXR5TGlicmFyeSgpKQorICAgICAgICByZXR1cm4gaW50ZXJu
YWxNb2RlOwogCiAgICAgTUFDYXB0aW9uQXBwZWFyYW5jZURpc3BsYXlUeXBlIGRpc3BsYXlUeXBl
ID0gTUFDYXB0aW9uQXBwZWFyYW5jZUdldERpc3BsYXlUeXBlKGtNQUNhcHRpb25BcHBlYXJhbmNl
RG9tYWluVXNlcik7CiAgICAgc3dpdGNoIChkaXNwbGF5VHlwZSkgewpAQCAtMTQyLDYgKzE2OSw5
IEBAIHZvaWQgQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUY6OnNldEMKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIAorICAgIGlmIChjYXB0aW9uRGlzcGxheU1vZGUoKSA9PSBNYW51YWwpCisg
ICAgICAgIHJldHVybjsKKwogICAgIE1BQ2FwdGlvbkFwcGVhcmFuY2VEaXNwbGF5VHlwZSBkaXNw
bGF5VHlwZSA9IGtNQUNhcHRpb25BcHBlYXJhbmNlRGlzcGxheVR5cGVGb3JjZWRPbmx5OwogICAg
IHN3aXRjaCAobW9kZSkgewogICAgIGNhc2UgQXV0b21hdGljOgpAQCAtNDMyLDYgKzQ2Miw5IEBA
IGZsb2F0IENhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGOjpjYXAKIAogdm9pZCBDYXB0aW9u
VXNlclByZWZlcmVuY2VzTWVkaWFBRjo6c2V0UHJlZmVycmVkTGFuZ3VhZ2UoY29uc3QgU3RyaW5n
JiBsYW5ndWFnZSkKIHsKKyAgICBpZiAoQ2FwdGlvblVzZXJQcmVmZXJlbmNlczo6Y2FwdGlvbkRp
c3BsYXlNb2RlKCkgPT0gTWFudWFsKQorICAgICAgICByZXR1cm47CisKICAgICBpZiAodGVzdGlu
Z01vZGUoKSB8fCAhTWVkaWFBY2Nlc3NpYmlsaXR5TGlicmFyeSgpKSB7CiAgICAgICAgIENhcHRp
b25Vc2VyUHJlZmVyZW5jZXM6OnNldFByZWZlcnJlZExhbmd1YWdlKGxhbmd1YWdlKTsKICAgICAg
ICAgcmV0dXJuOwpAQCAtNjYxLDYgKzY5NCw5IEBAIFN0cmluZyBDYXB0aW9uVXNlclByZWZlcmVu
Y2VzTWVkaWFBRjo6ZGkKIGludCBDYXB0aW9uVXNlclByZWZlcmVuY2VzTWVkaWFBRjo6dGV4dFRy
YWNrU2VsZWN0aW9uU2NvcmUoVGV4dFRyYWNrKiB0cmFjaywgSFRNTE1lZGlhRWxlbWVudCogbWVk
aWFFbGVtZW50KSBjb25zdAogewogICAgIENhcHRpb25EaXNwbGF5TW9kZSBkaXNwbGF5TW9kZSA9
IGNhcHRpb25EaXNwbGF5TW9kZSgpOworICAgIGlmIChkaXNwbGF5TW9kZSA9PSBNYW51YWwpCisg
ICAgICAgIHJldHVybiAwOworCiAgICAgYm9vbCBsZWdhY3lPdmVycmlkZSA9IG1lZGlhRWxlbWVu
dC0+d2Via2l0Q2xvc2VkQ2FwdGlvbnNWaXNpYmxlKCk7CiAgICAgaWYgKGRpc3BsYXlNb2RlID09
IEFsd2F5c09uICYmICghdXNlclByZWZlcnNTdWJ0aXRsZXMoKSAmJiAhdXNlclByZWZlcnNDYXB0
aW9ucygpICYmICFsZWdhY3lPdmVycmlkZSkpCiAgICAgICAgIHJldHVybiAwOwpAQCAtODA0LDYg
Kzg0MCw3IEBAIFZlY3RvcjxSZWZQdHI8VGV4dFRyYWNrPj4gQ2FwdGlvblVzZXJQcmUKIAogICAg
IFZlY3RvcjxSZWZQdHI8VGV4dFRyYWNrPj4gdHJhY2tzRm9yTWVudTsKICAgICBIYXNoU2V0PFN0
cmluZz4gbGFuZ3VhZ2VzSW5jbHVkZWQ7CisgICAgQ2FwdGlvbkRpc3BsYXlNb2RlIGRpc3BsYXlN
b2RlID0gY2FwdGlvbkRpc3BsYXlNb2RlKCk7CiAgICAgYm9vbCBwcmVmZXJzQWNjZXNzaWJpbGl0
eVRyYWNrcyA9IHVzZXJQcmVmZXJzQ2FwdGlvbnMoKTsKICAgICBib29sIGZpbHRlclRyYWNrTGlz
dCA9IHNob3VsZEZpbHRlclRyYWNrTWVudSgpOwogCkBAIC04MTEsMTcgKzg0OCwyMyBAQCBWZWN0
b3I8UmVmUHRyPFRleHRUcmFjaz4+IENhcHRpb25Vc2VyUHJlCiAgICAgICAgIFRleHRUcmFjayog
dHJhY2sgPSB0cmFja0xpc3QtPml0ZW0oaSk7CiAgICAgICAgIFN0cmluZyBsYW5ndWFnZSA9IGRp
c3BsYXlOYW1lRm9yTGFuZ3VhZ2VMb2NhbGUodHJhY2stPmxhbmd1YWdlKCkpOwogCisgICAgICAg
IGlmIChkaXNwbGF5TW9kZSA9PSBNYW51YWwpIHsKKyAgICAgICAgICAgIExPRyhNZWRpYSwgIkNh
cHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGOjpzb3J0ZWRUcmFja0xpc3RGb3JNZW51IC0gYWRk
aW5nICclcycgdHJhY2sgd2l0aCBsYW5ndWFnZSAnJXMnIGJlY2F1c2Ugc2VsZWN0aW9uIG1vZGUg
aXMgJ21hbnVhbCciLCB0cmFjay0+a2luZCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCksIGxhbmd1
YWdlLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICAgICAgdHJhY2tzRm9yTWVudS5hcHBlbmQodHJh
Y2spOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKwogICAgICAgICBjb25zdCBB
dG9taWNTdHJpbmcmIGtpbmQgPSB0cmFjay0+a2luZCgpOwogICAgICAgICBpZiAoa2luZCAhPSBU
ZXh0VHJhY2s6OmNhcHRpb25zS2V5d29yZCgpICYmIGtpbmQgIT0gVGV4dFRyYWNrOjpkZXNjcmlw
dGlvbnNLZXl3b3JkKCkgJiYga2luZCAhPSBUZXh0VHJhY2s6OnN1YnRpdGxlc0tleXdvcmQoKSkK
ICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgIGlmICh0cmFjay0+Y29udGFpbnNPbmx5
Rm9yY2VkU3VidGl0bGVzKCkpIHsKLSAgICAgICAgICAgIExPRyhNZWRpYSwgIkNhcHRpb25Vc2Vy
UHJlZmVyZW5jZXNNYWM6OnNvcnRlZFRyYWNrTGlzdEZvck1lbnUgLSBza2lwcGluZyAnJXMnIHRy
YWNrIHdpdGggbGFuZ3VhZ2UgJyVzJyBiZWNhdXNlIGl0IGNvbnRhaW5zIG9ubHkgZm9yY2VkIHN1
YnRpdGxlcyIsIHRyYWNrLT5raW5kKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgbGFuZ3VhZ2Uu
dXRmOCgpLmRhdGEoKSk7CisgICAgICAgICAgICBMT0coTWVkaWEsICJDYXB0aW9uVXNlclByZWZl
cmVuY2VzTWVkaWFBRjo6c29ydGVkVHJhY2tMaXN0Rm9yTWVudSAtIHNraXBwaW5nICclcycgdHJh
Y2sgd2l0aCBsYW5ndWFnZSAnJXMnIGJlY2F1c2UgaXQgY29udGFpbnMgb25seSBmb3JjZWQgc3Vi
dGl0bGVzIiwgdHJhY2stPmtpbmQoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpLCBsYW5ndWFnZS51
dGY4KCkuZGF0YSgpKTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAgICAgICAg
IAogICAgICAgICBpZiAodHJhY2stPmlzRWFzeVRvUmVhZCgpKSB7Ci0gICAgICAgICAgICBMT0co
TWVkaWEsICJDYXB0aW9uVXNlclByZWZlcmVuY2VzTWFjOjpzb3J0ZWRUcmFja0xpc3RGb3JNZW51
IC0gYWRkaW5nICclcycgdHJhY2sgd2l0aCBsYW5ndWFnZSAnJXMnIGJlY2F1c2UgaXQgaXMgJ2Vh
c3kgdG8gcmVhZCciLCB0cmFjay0+a2luZCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCksIGxhbmd1
YWdlLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICAgICAgTE9HKE1lZGlhLCAiQ2FwdGlvblVzZXJQ
cmVmZXJlbmNlc01lZGlhQUY6OnNvcnRlZFRyYWNrTGlzdEZvck1lbnUgLSBhZGRpbmcgJyVzJyB0
cmFjayB3aXRoIGxhbmd1YWdlICclcycgYmVjYXVzZSBpdCBpcyAnZWFzeSB0byByZWFkJyIsIHRy
YWNrLT5raW5kKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgbGFuZ3VhZ2UudXRmOCgpLmRhdGEo
KSk7CiAgICAgICAgICAgICBpZiAoIWxhbmd1YWdlLmlzRW1wdHkoKSkKICAgICAgICAgICAgICAg
ICBsYW5ndWFnZXNJbmNsdWRlZC5hZGQobGFuZ3VhZ2UpOwogICAgICAgICAgICAgdHJhY2tzRm9y
TWVudS5hcHBlbmQodHJhY2spOwpAQCAtODI5LDcgKzg3Miw3IEBAIFZlY3RvcjxSZWZQdHI8VGV4
dFRyYWNrPj4gQ2FwdGlvblVzZXJQcmUKICAgICAgICAgfQogCiAgICAgICAgIGlmICh0cmFjay0+
bW9kZSgpID09IFRleHRUcmFjazo6c2hvd2luZ0tleXdvcmQoKSkgewotICAgICAgICAgICAgTE9H
KE1lZGlhLCAiQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01hYzo6c29ydGVkVHJhY2tMaXN0Rm9yTWVu
dSAtIGFkZGluZyAnJXMnIHRyYWNrIHdpdGggbGFuZ3VhZ2UgJyVzJyBiZWNhdXNlIGl0IGlzIGFs
cmVhZHkgdmlzaWJsZSIsIHRyYWNrLT5raW5kKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgbGFu
Z3VhZ2UudXRmOCgpLmRhdGEoKSk7CisgICAgICAgICAgICBMT0coTWVkaWEsICJDYXB0aW9uVXNl
clByZWZlcmVuY2VzTWVkaWFBRjo6c29ydGVkVHJhY2tMaXN0Rm9yTWVudSAtIGFkZGluZyAnJXMn
IHRyYWNrIHdpdGggbGFuZ3VhZ2UgJyVzJyBiZWNhdXNlIGl0IGlzIGFscmVhZHkgdmlzaWJsZSIs
IHRyYWNrLT5raW5kKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgbGFuZ3VhZ2UudXRmOCgpLmRh
dGEoKSk7CiAgICAgICAgICAgICBpZiAoIWxhbmd1YWdlLmlzRW1wdHkoKSkKICAgICAgICAgICAg
ICAgICBsYW5ndWFnZXNJbmNsdWRlZC5hZGQobGFuZ3VhZ2UpOwogICAgICAgICAgICAgdHJhY2tz
Rm9yTWVudS5hcHBlbmQodHJhY2spOwpAQCAtODYxLDcgKzkwNCw3IEBAIFZlY3RvcjxSZWZQdHI8
VGV4dFRyYWNrPj4gQ2FwdGlvblVzZXJQcmUKICAgICAgICAgICAgIGxhbmd1YWdlc0luY2x1ZGVk
LmFkZChsYW5ndWFnZSk7CiAgICAgICAgIHRyYWNrc0Zvck1lbnUuYXBwZW5kKHRyYWNrKTsKIAot
ICAgICAgICBMT0coTWVkaWEsICJDYXB0aW9uVXNlclByZWZlcmVuY2VzTWFjOjpzb3J0ZWRUcmFj
a0xpc3RGb3JNZW51IC0gYWRkaW5nICclcycgdHJhY2sgd2l0aCBsYW5ndWFnZSAnJXMnLCBpcyVz
IG1haW4gcHJvZ3JhbSBjb250ZW50IiwgdHJhY2stPmtpbmQoKS5zdHJpbmcoKS51dGY4KCkuZGF0
YSgpLCBsYW5ndWFnZS51dGY4KCkuZGF0YSgpLCB0cmFjay0+aXNNYWluUHJvZ3JhbUNvbnRlbnQo
KSA/ICIiIDogIiBOT1QiKTsKKyAgICAgICAgTE9HKE1lZGlhLCAiQ2FwdGlvblVzZXJQcmVmZXJl
bmNlc01lZGlhQUY6OnNvcnRlZFRyYWNrTGlzdEZvck1lbnUgLSBhZGRpbmcgJyVzJyB0cmFjayB3
aXRoIGxhbmd1YWdlICclcycsIGlzJXMgbWFpbiBwcm9ncmFtIGNvbnRlbnQiLCB0cmFjay0+a2lu
ZCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCksIGxhbmd1YWdlLnV0ZjgoKS5kYXRhKCksIHRyYWNr
LT5pc01haW5Qcm9ncmFtQ29udGVudCgpID8gIiIgOiAiIE5PVCIpOwogICAgIH0KIAogICAgIC8v
IE5vdyB0aGF0IHdlIGhhdmUgZmlsdGVyZWQgZm9yIHRoZSB1c2VyJ3MgYWNjZXNzaWJpbGl0eS90
cmFuc2xhdGlvbiBwcmVmZXJlbmNlLCBhZGQgIGFsbCB0cmFja3Mgd2l0aCBhIHVuaXF1ZSBsYW5n
dWFnZSB3aXRob3V0IHJlZ2FyZCB0byB0cmFjayB0eXBlLgpAQCAtODY5LDYgKzkxMiw5IEBAIFZl
Y3RvcjxSZWZQdHI8VGV4dFRyYWNrPj4gQ2FwdGlvblVzZXJQcmUKICAgICAgICAgVGV4dFRyYWNr
KiB0cmFjayA9IHRyYWNrTGlzdC0+aXRlbShpKTsKICAgICAgICAgU3RyaW5nIGxhbmd1YWdlID0g
ZGlzcGxheU5hbWVGb3JMYW5ndWFnZUxvY2FsZSh0cmFjay0+bGFuZ3VhZ2UoKSk7CiAKKyAgICAg
ICAgaWYgKHRyYWNrc0Zvck1lbnUuY29udGFpbnModHJhY2spKQorICAgICAgICAgICAgY29udGlu
dWU7CisKICAgICAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBraW5kID0gdHJhY2stPmtpbmQoKTsK
ICAgICAgICAgaWYgKGtpbmQgIT0gVGV4dFRyYWNrOjpjYXB0aW9uc0tleXdvcmQoKSAmJiBraW5k
ICE9IFRleHRUcmFjazo6ZGVzY3JpcHRpb25zS2V5d29yZCgpICYmIGtpbmQgIT0gVGV4dFRyYWNr
OjpzdWJ0aXRsZXNLZXl3b3JkKCkpCiAgICAgICAgICAgICBjb250aW51ZTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uT2JqQy5tbQkocmV2aXNpb24gMTk1OTU5KQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uT2JqQy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjU1LDYgKzI1NSw3IEBAIFNPRlRfTElO
S19QT0lOVEVSKEFWRm91bmRhdGlvbiwgQVZPdXRPZkIKIFNPRlRfTElOS19QT0lOVEVSKEFWRm91
bmRhdGlvbiwgQVZPdXRPZkJhbmRBbHRlcm5hdGVUcmFja1NvdXJjZUtleSwgTlNTdHJpbmcqKQog
U09GVF9MSU5LX1BPSU5URVIoQVZGb3VuZGF0aW9uLCBBVk1lZGlhQ2hhcmFjdGVyaXN0aWNEZXNj
cmliZXNNdXNpY0FuZFNvdW5kRm9yQWNjZXNzaWJpbGl0eSwgTlNTdHJpbmcqKQogU09GVF9MSU5L
X1BPSU5URVIoQVZGb3VuZGF0aW9uLCBBVk1lZGlhQ2hhcmFjdGVyaXN0aWNUcmFuc2NyaWJlc1Nw
b2tlbkRpYWxvZ0ZvckFjY2Vzc2liaWxpdHksIE5TU3RyaW5nKikKK1NPRlRfTElOS19QT0lOVEVS
KEFWRm91bmRhdGlvbiwgQVZNZWRpYUNoYXJhY3RlcmlzdGljSXNBdXhpbGlhcnlDb250ZW50LCBO
U1N0cmluZyopCiAKICNkZWZpbmUgQVZVUkxBc3NldEhUVFBDb29raWVzS2V5IGdldEFWVVJMQXNz
ZXRIVFRQQ29va2llc0tleSgpCiAjZGVmaW5lIEFWVVJMQXNzZXRPdXRPZkJhbmRBbHRlcm5hdGVU
cmFja3NLZXkgZ2V0QVZVUkxBc3NldE91dE9mQmFuZEFsdGVybmF0ZVRyYWNrc0tleSgpCkBAIC0y
NjYsNiArMjY3LDcgQEAgU09GVF9MSU5LX1BPSU5URVIoQVZGb3VuZGF0aW9uLCBBVk1lZGlhQwog
I2RlZmluZSBBVk91dE9mQmFuZEFsdGVybmF0ZVRyYWNrU291cmNlS2V5IGdldEFWT3V0T2ZCYW5k
QWx0ZXJuYXRlVHJhY2tTb3VyY2VLZXkoKQogI2RlZmluZSBBVk1lZGlhQ2hhcmFjdGVyaXN0aWNE
ZXNjcmliZXNNdXNpY0FuZFNvdW5kRm9yQWNjZXNzaWJpbGl0eSBnZXRBVk1lZGlhQ2hhcmFjdGVy
aXN0aWNEZXNjcmliZXNNdXNpY0FuZFNvdW5kRm9yQWNjZXNzaWJpbGl0eSgpCiAjZGVmaW5lIEFW
TWVkaWFDaGFyYWN0ZXJpc3RpY1RyYW5zY3JpYmVzU3Bva2VuRGlhbG9nRm9yQWNjZXNzaWJpbGl0
eSBnZXRBVk1lZGlhQ2hhcmFjdGVyaXN0aWNUcmFuc2NyaWJlc1Nwb2tlbkRpYWxvZ0ZvckFjY2Vz
c2liaWxpdHkoKQorI2RlZmluZSBBVk1lZGlhQ2hhcmFjdGVyaXN0aWNJc0F1eGlsaWFyeUNvbnRl
bnQgZ2V0QVZNZWRpYUNoYXJhY3RlcmlzdGljSXNBdXhpbGlhcnlDb250ZW50KCkKICNlbmRpZgog
CiAjaWYgRU5BQkxFKERBVEFDVUVfVkFMVUUpCkBAIC0zMDUsNiArMzA3LDkgQEAgU09GVF9MSU5L
X1BPSU5URVIoQ29yZVZpZGVvLCBrQ1ZQaXhlbEJ1ZgogI2RlZmluZSBrQ1ZQaXhlbEJ1ZmZlcklP
U3VyZmFjZU9wZW5HTEZCT0NvbXBhdGliaWxpdHlLZXkgZ2V0a0NWUGl4ZWxCdWZmZXJJT1N1cmZh
Y2VPcGVuR0xGQk9Db21wYXRpYmlsaXR5S2V5KCkKICNlbmRpZgogCitTT0ZUX0xJTktfRlJBTUVX
T1JLKE1lZGlhVG9vbGJveCkKK1NPRlRfTElOS19PUFRJT05BTChNZWRpYVRvb2xib3gsIE1URW5h
YmxlQ2FwdGlvbjIwMTVCZWhhdmlvciwgQm9vbGVhbiwgKCksICgpKQorCiB1c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKIAogZW51bSBNZWRpYVBsYXllckFWRm91bmRhdGlvbk9ic2VydmF0aW9uQ29u
dGV4dCB7CkBAIC03MzIsNiArNzM3LDE3IEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uT2JqQzoKICNpZiBFTkFCTEUoQVZGX0NBUFRJT05TKQogc3RhdGljIGNvbnN0IE5TQXJy
YXkqIG1lZGlhRGVzY3JpcHRpb25Gb3JLaW5kKFBsYXRmb3JtVGV4dFRyYWNrOjpUcmFja0tpbmQg
a2luZCkKIHsKKyAgICBzdGF0aWMgYm9vbCBtYW51YWxTZWxlY3Rpb25Nb2RlOworICAgIHN0YXRp
YyBzdGQ6Om9uY2VfZmxhZyBpbml0aWFsaXplU2VsZWN0aW9uTW9kZTsKKworICAgIHN0ZDo6Y2Fs
bF9vbmNlKGluaXRpYWxpemVTZWxlY3Rpb25Nb2RlLCBbXSB7CisgICAgICAgIGlmIChNVEVuYWJs
ZUNhcHRpb24yMDE1QmVoYXZpb3JQdHIoKSkKKyAgICAgICAgICAgIG1hbnVhbFNlbGVjdGlvbk1v
ZGUgPSBNVEVuYWJsZUNhcHRpb24yMDE1QmVoYXZpb3JQdHIoKSgpOworICAgIH0pOworCisgICAg
aWYgKG1hbnVhbFNlbGVjdGlvbk1vZGUpCisgICAgICAgIHJldHVybiBAWyBBVk1lZGlhQ2hhcmFj
dGVyaXN0aWNJc0F1eGlsaWFyeUNvbnRlbnQgXTsKKwogICAgIC8vIEZJWE1FOiBNYXRjaCB0aGVz
ZSB0byBjb3JyZWN0IHR5cGVzOgogICAgIGlmIChraW5kID09IFBsYXRmb3JtVGV4dFRyYWNrOjpD
YXB0aW9uKQogICAgICAgICByZXR1cm4gW05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0czogQVZNZWRp
YUNoYXJhY3RlcmlzdGljVHJhbnNjcmliZXNTcG9rZW5EaWFsb2dGb3JBY2Nlc3NpYmlsaXR5LCBu
aWxdOwpJbmRleDogU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAkocmV2aXNpb24gMTk1
OTU5KQorKysgU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yNzg0LDYgKzI3ODQsOCBAQCB2b2lkIEludGVybmFsczo6c2V0Q2FwdGlvbkRpc3Bs
YXlNb2RlKGNvCiAgICAgICAgIGNhcHRpb25QcmVmZXJlbmNlcy0+c2V0Q2FwdGlvbkRpc3BsYXlN
b2RlKENhcHRpb25Vc2VyUHJlZmVyZW5jZXM6OkZvcmNlZE9ubHkpOwogICAgIGVsc2UgaWYgKGVx
dWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKG1vZGUsICJhbHdheXNvbiIpKQogICAgICAgICBj
YXB0aW9uUHJlZmVyZW5jZXMtPnNldENhcHRpb25EaXNwbGF5TW9kZShDYXB0aW9uVXNlclByZWZl
cmVuY2VzOjpBbHdheXNPbik7CisgICAgZWxzZSBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJ
SUNhc2UobW9kZSwgIm1hbnVhbCIpKQorICAgICAgICBjYXB0aW9uUHJlZmVyZW5jZXMtPnNldENh
cHRpb25EaXNwbGF5TW9kZShDYXB0aW9uVXNlclByZWZlcmVuY2VzOjpNYW51YWwpOwogICAgIGVs
c2UKICAgICAgICAgZWMgPSBTWU5UQVhfRVJSOwogI2Vsc2UKSW5kZXg6IExheW91dFRlc3RzL0No
YW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5
NTk1OSkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsx
LDE0IEBACisyMDE2LTAyLTAxICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29t
PgorCisgICAgICAgIEFsbG93IHBvcnRzIHRvIGRpc2FibGUgYXV0b21hdGljIHRleHQgdHJhY2sg
c2VsZWN0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNTM3NjEKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzI0NDE2NzY4PgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogbWVkaWEvdHJhY2svdHJhY2st
bWFudWFsLW1vZGUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBtZWRpYS90cmFjay90
cmFjay1tYW51YWwtbW9kZS5odG1sOiBBZGRlZC4KKwogMjAxNi0wMi0wMSAgWW91ZW5uIEZhYmxl
dCAgPHlvdWVubi5mYWJsZXRAY3JmLmNhbm9uLmZyPgogCiAgICAgICAgIFtGZXRjaCBBUEldIElt
cGxlbWVudCBGZXRjaCBBUEkgUmVxdWVzdApJbmRleDogTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2sv
dHJhY2stbWFudWFsLW1vZGUtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L21lZGlhL3RyYWNrL3RyYWNrLW1hbnVhbC1tb2RlLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkK
KysrIExheW91dFRlc3RzL21lZGlhL3RyYWNrL3RyYWNrLW1hbnVhbC1tb2RlLWV4cGVjdGVkLnR4
dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDUzIEBACitUZXN0cyAnbWFudWFsJyBjYXB0aW9u
IG1vZGUuCisKKworUlVOKGludGVybmFscy5zZXRVc2VyUHJlZmVycmVkTGFuZ3VhZ2VzKFsnZW4n
XSkpCitSVU4oaW50ZXJuYWxzLnNldFByaW1hcnlBdWRpb1RyYWNrTGFuZ3VhZ2VPdmVycmlkZSgn
ZnInKSkKK1JVTihpbnRlcm5hbHMuc2V0Q2FwdGlvbkRpc3BsYXlNb2RlKCdtYW51YWwnKSkKK0VW
RU5UKGNhbnBsYXl0aHJvdWdoKQorCisqKiBGb3JjZWQgdHJhY2tzIHNob3VsZCBiZSBpbiAudGV4
dFRyYWNrcyBhcyB3ZWxsIGFzIGluIHRoZSBtZW51LAorKiogYnV0IHNob3VsZCBiZSBsYWJlbGVk
IGFzICdzdWJ0aXRsZXMnCisKK0VYUEVDVEVEICh2aWRlby50ZXh0VHJhY2tzLmxlbmd0aCA9PSAn
OScpIE9LCitFWFBFQ1RFRCAodHJhY2tNZW51SXRlbXMubGVuZ3RoID09ICcxMScpIE9LCisKKyoq
IE5vIHRyYWNrIHNob3VsZCBiZSBlbmFibGVkIGJ5IGRlZmF1bHQKK0VYUEVDVEVEICh2aWRlby50
ZXh0VHJhY2tzWzBdLmxhbmd1YWdlID09ICdlbicpIE9LCitFWFBFQ1RFRCAodmlkZW8udGV4dFRy
YWNrc1swXS5raW5kID09ICdzdWJ0aXRsZXMnKSBPSworRVhQRUNURUQgKHZpZGVvLnRleHRUcmFj
a3NbMF0ubW9kZSA9PSAnZGlzYWJsZWQnKSBPSworCitFWFBFQ1RFRCAodmlkZW8udGV4dFRyYWNr
c1sxXS5sYW5ndWFnZSA9PSAnZW4nKSBPSworRVhQRUNURUQgKHZpZGVvLnRleHRUcmFja3NbMV0u
a2luZCA9PSAnc3VidGl0bGVzJykgT0sKK0VYUEVDVEVEICh2aWRlby50ZXh0VHJhY2tzWzFdLm1v
ZGUgPT0gJ2Rpc2FibGVkJykgT0sKKworRVhQRUNURUQgKHZpZGVvLnRleHRUcmFja3NbMl0ubGFu
Z3VhZ2UgPT0gJ2ZyJykgT0sKK0VYUEVDVEVEICh2aWRlby50ZXh0VHJhY2tzWzJdLmtpbmQgPT0g
J3N1YnRpdGxlcycpIE9LCitFWFBFQ1RFRCAodmlkZW8udGV4dFRyYWNrc1syXS5tb2RlID09ICdk
aXNhYmxlZCcpIE9LCisKK0VYUEVDVEVEICh2aWRlby50ZXh0VHJhY2tzWzNdLmxhbmd1YWdlID09
ICdmcicpIE9LCitFWFBFQ1RFRCAodmlkZW8udGV4dFRyYWNrc1szXS5raW5kID09ICdzdWJ0aXRs
ZXMnKSBPSworRVhQRUNURUQgKHZpZGVvLnRleHRUcmFja3NbM10ubW9kZSA9PSAnZGlzYWJsZWQn
KSBPSworCitFWFBFQ1RFRCAodmlkZW8udGV4dFRyYWNrc1s0XS5sYW5ndWFnZSA9PSAnZXMnKSBP
SworRVhQRUNURUQgKHZpZGVvLnRleHRUcmFja3NbNF0ua2luZCA9PSAnc3VidGl0bGVzJykgT0sK
K0VYUEVDVEVEICh2aWRlby50ZXh0VHJhY2tzWzRdLm1vZGUgPT0gJ2Rpc2FibGVkJykgT0sKKwor
RVhQRUNURUQgKHZpZGVvLnRleHRUcmFja3NbNV0ubGFuZ3VhZ2UgPT0gJ2VzJykgT0sKK0VYUEVD
VEVEICh2aWRlby50ZXh0VHJhY2tzWzVdLmtpbmQgPT0gJ3N1YnRpdGxlcycpIE9LCitFWFBFQ1RF
RCAodmlkZW8udGV4dFRyYWNrc1s1XS5tb2RlID09ICdkaXNhYmxlZCcpIE9LCisKK0VYUEVDVEVE
ICh2aWRlby50ZXh0VHJhY2tzWzZdLmxhbmd1YWdlID09ICdkZScpIE9LCitFWFBFQ1RFRCAodmlk
ZW8udGV4dFRyYWNrc1s2XS5raW5kID09ICdzdWJ0aXRsZXMnKSBPSworRVhQRUNURUQgKHZpZGVv
LnRleHRUcmFja3NbNl0ubW9kZSA9PSAnZGlzYWJsZWQnKSBPSworCitFWFBFQ1RFRCAodmlkZW8u
dGV4dFRyYWNrc1s3XS5sYW5ndWFnZSA9PSAnZGUnKSBPSworRVhQRUNURUQgKHZpZGVvLnRleHRU
cmFja3NbN10ua2luZCA9PSAnc3VidGl0bGVzJykgT0sKK0VYUEVDVEVEICh2aWRlby50ZXh0VHJh
Y2tzWzddLm1vZGUgPT0gJ2Rpc2FibGVkJykgT0sKKworRVhQRUNURUQgKHZpZGVvLnRleHRUcmFj
a3NbOF0ubGFuZ3VhZ2UgPT0gJ2VuJykgT0sKK0VYUEVDVEVEICh2aWRlby50ZXh0VHJhY2tzWzhd
LmtpbmQgPT0gJ2NhcHRpb25zJykgT0sKK0VYUEVDVEVEICh2aWRlby50ZXh0VHJhY2tzWzhdLm1v
ZGUgPT0gJ2Rpc2FibGVkJykgT0sKKworRU5EIE9GIFRFU1QKKwpJbmRleDogTGF5b3V0VGVzdHMv
bWVkaWEvdHJhY2svdHJhY2stbWFudWFsLW1vZGUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9tZWRpYS90cmFjay90cmFjay1tYW51YWwtbW9kZS5odG1sCShyZXZpc2lvbiAwKQorKysg
TGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svdHJhY2stbWFudWFsLW1vZGUuaHRtbAkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDk0IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFk
PgorICAgICAgICA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQv
aHRtbDsgY2hhcnNldD11dGYtOCIgLz4KKworICAgICAgICA8c2NyaXB0IHNyYz0uLi9tZWRpYS1j
b250cm9scy5qcz48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdCBzcmM9Li4vdHJhY2ttZW51LXRl
c3QuanM+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQgc3JjPS4uL3ZpZGVvLXRlc3QuanM+PC9z
Y3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIHRlc3RUcmFj
a3MoKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNvbnNvbGVXcml0ZShgPGJyPjxp
PioqIEZvcmNlZCB0cmFja3Mgc2hvdWxkIGJlIGluIC50ZXh0VHJhY2tzIGFzIHdlbGwgYXMgaW4g
dGhlIG1lbnUsYCk7CisgICAgICAgICAgICAgICAgY29uc29sZVdyaXRlKGA8aT4qKiBidXQgc2hv
dWxkIGJlIGxhYmVsZWQgYXMgJ3N1YnRpdGxlcyc8L2k+PGJyPmApOworICAgICAgICAgICAgICAg
IHRlc3RFeHBlY3RlZCgidmlkZW8udGV4dFRyYWNrcy5sZW5ndGgiLCA5KTsKKworICAgICAgICAg
ICAgICAgIC8vIENsaWNrIHRoZSBDQyBidXR0b24gdG8gc2hvdyB0aGUgbWVudSBiZWNhdXNlIGl0
IGlzbid0IGNyZWF0ZWQgdW50aWwgaXQgYmVjb21lcyB2aXNpYmxlLgorICAgICAgICAgICAgICAg
IGNsaWNrQ0NCdXR0b24oKTsKKworICAgICAgICAgICAgICAgIHRyYWNrTWVudUl0ZW1zID0gY2Fw
dGlvblRyYWNrTWVudUxpc3QoKTsKKyAgICAgICAgICAgICAgICBpZiAoIXRyYWNrTWVudUl0ZW1z
KSB7CisgICAgICAgICAgICAgICAgICAgIGZhaWxUZXN0KCJGYWlsZWQgdG8gZmluZCB0cmFjayBt
ZW51ISIpOworICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgidHJhY2tNZW51SXRlbXMubGVuZ3RoIiwgMTEp
OworCisgICAgICAgICAgICAgICAgY29uc29sZVdyaXRlKCI8YnI+PGk+KiogTm8gdHJhY2sgc2hv
dWxkIGJlIGVuYWJsZWQgYnkgZGVmYXVsdDwiICsgIi9pPiIpOworICAgICAgICAgICAgICAgIHRl
c3RFeHBlY3RlZCgidmlkZW8udGV4dFRyYWNrc1swXS5sYW5ndWFnZSIsICJlbiIpOworICAgICAg
ICAgICAgICAgIHRlc3RFeHBlY3RlZCgidmlkZW8udGV4dFRyYWNrc1swXS5raW5kIiwgInN1YnRp
dGxlcyIpOworICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgidmlkZW8udGV4dFRyYWNrc1sw
XS5tb2RlIiwgImRpc2FibGVkIik7CisgICAgICAgICAgICAgICAgY29uc29sZVdyaXRlKCIiKTsK
KworICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgidmlkZW8udGV4dFRyYWNrc1sxXS5sYW5n
dWFnZSIsICJlbiIpOworICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgidmlkZW8udGV4dFRy
YWNrc1sxXS5raW5kIiwgInN1YnRpdGxlcyIpOworICAgICAgICAgICAgICAgIHRlc3RFeHBlY3Rl
ZCgidmlkZW8udGV4dFRyYWNrc1sxXS5tb2RlIiwgImRpc2FibGVkIik7CisgICAgICAgICAgICAg
ICAgY29uc29sZVdyaXRlKCIiKTsKKworICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgidmlk
ZW8udGV4dFRyYWNrc1syXS5sYW5ndWFnZSIsICJmciIpOworICAgICAgICAgICAgICAgIHRlc3RF
eHBlY3RlZCgidmlkZW8udGV4dFRyYWNrc1syXS5raW5kIiwgInN1YnRpdGxlcyIpOworICAgICAg
ICAgICAgICAgIHRlc3RFeHBlY3RlZCgidmlkZW8udGV4dFRyYWNrc1syXS5tb2RlIiwgImRpc2Fi
bGVkIik7CisgICAgICAgICAgICAgICAgY29uc29sZVdyaXRlKCIiKTsKKworICAgICAgICAgICAg
ICAgIHRlc3RFeHBlY3RlZCgidmlkZW8udGV4dFRyYWNrc1szXS5sYW5ndWFnZSIsICJmciIpOwor
ICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgidmlkZW8udGV4dFRyYWNrc1szXS5raW5kIiwg
InN1YnRpdGxlcyIpOworICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgidmlkZW8udGV4dFRy
YWNrc1szXS5tb2RlIiwgImRpc2FibGVkIik7CisgICAgICAgICAgICAgICAgY29uc29sZVdyaXRl
KCIiKTsKKworICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgidmlkZW8udGV4dFRyYWNrc1s0
XS5sYW5ndWFnZSIsICJlcyIpOworICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgidmlkZW8u
dGV4dFRyYWNrc1s0XS5raW5kIiwgInN1YnRpdGxlcyIpOworICAgICAgICAgICAgICAgIHRlc3RF
eHBlY3RlZCgidmlkZW8udGV4dFRyYWNrc1s0XS5tb2RlIiwgImRpc2FibGVkIik7CisgICAgICAg
ICAgICAgICAgY29uc29sZVdyaXRlKCIiKTsKKworICAgICAgICAgICAgICAgIHRlc3RFeHBlY3Rl
ZCgidmlkZW8udGV4dFRyYWNrc1s1XS5sYW5ndWFnZSIsICJlcyIpOworICAgICAgICAgICAgICAg
IHRlc3RFeHBlY3RlZCgidmlkZW8udGV4dFRyYWNrc1s1XS5raW5kIiwgInN1YnRpdGxlcyIpOwor
ICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgidmlkZW8udGV4dFRyYWNrc1s1XS5tb2RlIiwg
ImRpc2FibGVkIik7CisgICAgICAgICAgICAgICAgY29uc29sZVdyaXRlKCIiKTsKKworICAgICAg
ICAgICAgICAgIHRlc3RFeHBlY3RlZCgidmlkZW8udGV4dFRyYWNrc1s2XS5sYW5ndWFnZSIsICJk
ZSIpOworICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgidmlkZW8udGV4dFRyYWNrc1s2XS5r
aW5kIiwgInN1YnRpdGxlcyIpOworICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgidmlkZW8u
dGV4dFRyYWNrc1s2XS5tb2RlIiwgImRpc2FibGVkIik7CisgICAgICAgICAgICAgICAgY29uc29s
ZVdyaXRlKCIiKTsKKworICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgidmlkZW8udGV4dFRy
YWNrc1s3XS5sYW5ndWFnZSIsICJkZSIpOworICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgi
dmlkZW8udGV4dFRyYWNrc1s3XS5raW5kIiwgInN1YnRpdGxlcyIpOworICAgICAgICAgICAgICAg
IHRlc3RFeHBlY3RlZCgidmlkZW8udGV4dFRyYWNrc1s3XS5tb2RlIiwgImRpc2FibGVkIik7Cisg
ICAgICAgICAgICAgICAgY29uc29sZVdyaXRlKCIiKTsKKworICAgICAgICAgICAgICAgIHRlc3RF
eHBlY3RlZCgidmlkZW8udGV4dFRyYWNrc1s4XS5sYW5ndWFnZSIsICJlbiIpOworICAgICAgICAg
ICAgICAgIHRlc3RFeHBlY3RlZCgidmlkZW8udGV4dFRyYWNrc1s4XS5raW5kIiwgImNhcHRpb25z
Iik7CisgICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJ2aWRlby50ZXh0VHJhY2tzWzhdLm1v
ZGUiLCAiZGlzYWJsZWQiKTsKKyAgICAgICAgICAgICAgICBjb25zb2xlV3JpdGUoIiIpOworCisg
ICAgICAgICAgICAgICAgZW5kVGVzdCgpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBm
dW5jdGlvbiBzZXR1cCgpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgZmluZE1lZGlh
RWxlbWVudCgpOworICAgICAgICAgICAgICAgIHJ1bigiaW50ZXJuYWxzLnNldFVzZXJQcmVmZXJy
ZWRMYW5ndWFnZXMoWydlbiddKSIpOworICAgICAgICAgICAgICAgIHJ1bigiaW50ZXJuYWxzLnNl
dFByaW1hcnlBdWRpb1RyYWNrTGFuZ3VhZ2VPdmVycmlkZSgnZnInKSIpOworICAgICAgICAgICAg
ICAgIHJ1bigiaW50ZXJuYWxzLnNldENhcHRpb25EaXNwbGF5TW9kZSgnbWFudWFsJykiKTsKKyAg
ICAgICAgICAgICAgICB2aWRlby5zcmMgPSAnLi4vY29udGVudC9DQytTdWJ0aXRsZXMubW92JzsK
KworICAgICAgICAgICAgICAgIHdhaXRGb3JFdmVudCgnY2FucGxheXRocm91Z2gnLCB0ZXN0VHJh
Y2tzKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+Cisg
ICAgPGJvZHkgb25sb2FkPSJzZXR1cCgpIj4KKyAgICAgICAgPHA+VGVzdHMgJ21hbnVhbCcgY2Fw
dGlvbiBtb2RlLjwvcD4KKyAgICAgICAgPHZpZGVvIHdpZHRoPSI2NDAiIGhlaWdodD0iMzYwIiBj
b250cm9scz4KKyAgICAgICAgPC92aWRlbz4KKyAgICA8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>270460</attachid>
            <date>2016-02-01 17:54:48 -0800</date>
            <delta_ts>2016-02-02 08:39:21 -0800</delta_ts>
            <desc>Updated patch.</desc>
            <filename>patch_4.txt</filename>
            <type>text/plain</type>
            <size>29232</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5NTk4MCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU2IEBACisyMDE2LTAyLTAxICBFcmljIENh
cmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIEFsbG93IHBvcnRzIHRv
IGRpc2FibGUgYXV0b21hdGljIHRleHQgdHJhY2sgc2VsZWN0aW9uCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTM3NjEKKyAgICAgICAgPHJkYXI6Ly9w
cm9ibGVtLzI0NDE2NzY4PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFRlc3Q6IG1lZGlhL3RyYWNrL3RyYWNrLW1hbnVhbC1tb2RlLmh0bWwKKworICAg
ICAgICAqIE1vZHVsZXMvbWVkaWFjb250cm9scy9NZWRpYUNvbnRyb2xzSG9zdC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xzSG9zdDo6bWFudWFsS2V5d29yZCk6IE5ldy4KKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbHNIb3N0OjpjYXB0aW9uRGlzcGxheU1vZGUpOiBT
dXBwb3J0ICdtYW51YWwnIG1vZGUuCisgICAgICAgICogTW9kdWxlcy9tZWRpYWNvbnRyb2xzL01l
ZGlhQ29udHJvbHNIb3N0Lmg6CisKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhY29udHJvbHMvbWVk
aWFDb250cm9sc0FwcGxlLmpzOgorICAgICAgICAoQ29udHJvbGxlci5wcm90b3R5cGUuYnVpbGRD
YXB0aW9uTWVudSk6IENoZWNrIHRoZSAnb2ZmJyBpdGVtIHdoZW4gaW4gbWFudWFsIG1vZGUuCisK
KyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTE1lZGlhRWxlbWVudDo6YWRkVGV4dFRyYWNrKTogVXBkYXRlIG1fY2FwdGlvbkRpc3BsYXlN
b2RlIHdoZW4gY2FsbGVkIGZvciB0aGUgZmlyc3QKKyAgICAgICAgICB0aW1lIHNvIGl0IGlzIGFs
d2F5cyBjb3JyZWN0LiBTZXQgdGhlIHRyYWNrJ3MgbWFudWFsIHNlbGVjdGlvbiBtb2RlIGFzIGFw
cHJvcHJpYXRlLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6Y2FwdGlvblBy
ZWZlcmVuY2VzQ2hhbmdlZCk6IFNldCBlYWNoIHRyYWNrJ3MgbWFudWFsIHNlbGVjdGlvbiAKKyAg
ICAgICAgICBtb2RlIGFzIGFwcHJvcHJpYXRlLgorCisgICAgICAgICogaHRtbC90cmFjay9UZXh0
VHJhY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrOjpraW5kKTogUmV0dXJuICdz
dWJ0aXRsZXMnIGZvciBmb3JjZWQgdHJhY2tzIHdoZW4gaW4gbWFudWFsIG1vZGUuCisgICAgICAg
ICogaHRtbC90cmFjay9UZXh0VHJhY2suaDoKKworICAgICAgICAqIGh0bWwvdHJhY2svVHJhY2tC
YXNlLmg6CisgICAgICAgIChXZWJDb3JlOjpUcmFja0Jhc2U6OmtpbmQpOiBNYWtlIHZpcnR1YWwu
CisKKyAgICAgICAgKiBwYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXMuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q2FwdGlvblVzZXJQcmVmZXJlbmNlczo6YmVnaW5CbG9ja2luZ05vdGlmaWNhdGlv
bnMpOiBOZXcuCisgICAgICAgIChXZWJDb3JlOjpDYXB0aW9uVXNlclByZWZlcmVuY2VzOjplbmRC
bG9ja2luZ05vdGlmaWNhaXRvbnMpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkNhcHRpb25V
c2VyUHJlZmVyZW5jZXM6Om5vdGlmeSk6IERvbid0IG5vdGlmeSB3aGVuIGJsb2NrZWQuCisgICAg
ICAgICogcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzLmg6CisKKyAgICAgICAgKiBwYWdlL0Nh
cHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhcHRp
b25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGOjpDYXB0aW9uVXNlclByZWZlcmVuY2VzTWVkaWFBRik6
IFNldCBtYW51YWwgbW9kZSAKKyAgICAgICAgICB3aGVuIGFwcHJvcHJpYXRlLgorICAgICAgICAo
V2ViQ29yZTo6Q2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUY6OmNhcHRpb25EaXNwbGF5TW9k
ZSk6IENoZWNrIG1hbnVhbCBtb2RlLgorICAgICAgICAoV2ViQ29yZTo6Q2FwdGlvblVzZXJQcmVm
ZXJlbmNlc01lZGlhQUY6OnNldENhcHRpb25EaXNwbGF5TW9kZSk6IERpdHRvLgorICAgICAgICAo
V2ViQ29yZTo6Q2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUY6OnNldFByZWZlcnJlZExhbmd1
YWdlKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpDYXB0aW9uVXNlclByZWZlcmVuY2VzTWVk
aWFBRjo6dGV4dFRyYWNrU2VsZWN0aW9uU2NvcmUpOiBSZXR1cm4gemVybyB3aGVuIGluIG1hbnVh
bCBtb2RlLgorICAgICAgICAoV2ViQ29yZTo6Q2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUY6
OnNvcnRlZFRyYWNrTGlzdEZvck1lbnUpOiBDb25zaWRlciBtYW51YWwgbW9kZS4gRml4CisgICAg
ICAgICAgdHlwb3MgaW4gbG9nZ2luZy4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW06Cisg
ICAgICAgIChXZWJDb3JlOjptZWRpYURlc2NyaXB0aW9uRm9yS2luZCk6IFJldHVybiAnYXV4aWxp
YXJ5JyB3aGVuIGluIG1hbnVhbCBtb2RlLgorCisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpzZXRDYXB0aW9uRGlzcGxheU1vZGUp
OiBTdXBwb3J0IG1hbnVhbCBtb2RlLgorCiAyMDE2LTAyLTAxICBUaW0gSG9ydG9uICA8dGltb3Ro
eV9ob3J0b25AYXBwbGUuY29tPgogCiAgICAgICAgIE1vdmUgc29tZSBTUEkgZGVjbGFyYXRpb25z
IGludG8gdGhlIGFwcHJvcHJpYXRlIFNQSSBoZWFkZXIKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFjb250cm9scy9NZWRpYUNvbnRyb2xzSG9zdC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYWNvbnRyb2xzL01lZGlhQ29udHJvbHNIb3N0LmNw
cAkocmV2aXNpb24gMTk1OTU5KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYWNvbnRy
b2xzL01lZGlhQ29udHJvbHNIb3N0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjEsNiArNjEsMTMg
QEAgY29uc3QgQXRvbWljU3RyaW5nJiBNZWRpYUNvbnRyb2xzSG9zdDo6YQogICAgIHJldHVybiBh
bHdheXNPbjsKIH0KIAorY29uc3QgQXRvbWljU3RyaW5nJiBNZWRpYUNvbnRyb2xzSG9zdDo6bWFu
dWFsS2V5d29yZCgpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21pY1N0
cmluZz4gYWx3YXlzT24oIm1hbnVhbCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVy
YWwpOworICAgIHJldHVybiBhbHdheXNPbjsKK30KKworCiBSZWY8TWVkaWFDb250cm9sc0hvc3Q+
IE1lZGlhQ29udHJvbHNIb3N0OjpjcmVhdGUoSFRNTE1lZGlhRWxlbWVudCogbWVkaWFFbGVtZW50
KQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1lZGlhQ29udHJvbHNIb3N0KG1lZGlhRWxl
bWVudCkpOwpAQCAtMTUxLDYgKzE1OCw4IEBAIEF0b21pY1N0cmluZyBNZWRpYUNvbnRyb2xzSG9z
dDo6Y2FwdGlvbkQKICAgICAgICAgcmV0dXJuIGZvcmNlZE9ubHlLZXl3b3JkKCk7CiAgICAgY2Fz
ZSBDYXB0aW9uVXNlclByZWZlcmVuY2VzOjpBbHdheXNPbjoKICAgICAgICAgcmV0dXJuIGFsd2F5
c09uS2V5d29yZCgpOworICAgIGNhc2UgQ2FwdGlvblVzZXJQcmVmZXJlbmNlczo6TWFudWFsOgor
ICAgICAgICByZXR1cm4gbWFudWFsS2V5d29yZCgpOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm4gZW1wdHlBdG9tOwpJbmRleDogU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYWNvbnRyb2xzL01lZGlhQ29udHJvbHNIb3N0LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYWNvbnRyb2xzL01lZGlhQ29u
dHJvbHNIb3N0LmgJKHJldmlzaW9uIDE5NTk1OSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFjb250cm9scy9NZWRpYUNvbnRyb2xzSG9zdC5oCSh3b3JraW5nIGNvcHkpCkBAIC01Miw2
ICs1Miw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBhdXRvbWF0
aWNLZXl3b3JkKCk7CiAgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgZm9yY2VkT25seUtl
eXdvcmQoKTsKICAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBhbHdheXNPbktleXdvcmQo
KTsKKyAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBtYW51YWxLZXl3b3JkKCk7CiAKICAg
ICBWZWN0b3I8UmVmUHRyPFRleHRUcmFjaz4+IHNvcnRlZFRyYWNrTGlzdEZvck1lbnUoVGV4dFRy
YWNrTGlzdCopOwogICAgIFZlY3RvcjxSZWZQdHI8QXVkaW9UcmFjaz4+IHNvcnRlZFRyYWNrTGlz
dEZvck1lbnUoQXVkaW9UcmFja0xpc3QqKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFjb250cm9scy9tZWRpYUNvbnRyb2xzQXBwbGUuanMKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYWNvbnRyb2xzL21lZGlhQ29udHJvbHNBcHBsZS5qcwkocmV2
aXNpb24gMTk1OTU5KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYWNvbnRyb2xzL21l
ZGlhQ29udHJvbHNBcHBsZS5qcwkod29ya2luZyBjb3B5KQpAQCAtMTgzNiw3ICsxODM2LDcgQEAg
Q29udHJvbGxlci5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAg
aWYgKG9mZk1lbnUgJiYgZGlzcGxheU1vZGUgPT09ICdmb3JjZWQtb25seScgJiYgIXRyYWNrTWVu
dUl0ZW1TZWxlY3RlZCkgeworICAgICAgICAgICAgaWYgKG9mZk1lbnUgJiYgKGRpc3BsYXlNb2Rl
ID09PSAnZm9yY2VkLW9ubHknIHx8IGRpc3BsYXlNb2RlID09PSAnbWFudWFsJykgJiYgIXRyYWNr
TWVudUl0ZW1TZWxlY3RlZCkgewogICAgICAgICAgICAgICAgIG9mZk1lbnUuY2xhc3NMaXN0LmFk
ZCh0aGlzLkNsYXNzTmFtZXMuc2VsZWN0ZWQpOwogICAgICAgICAgICAgICAgIG9mZk1lbnUuc2V0
QXR0cmlidXRlKCd0YWJpbmRleCcsICcwJyk7CiAgICAgICAgICAgICAgICAgb2ZmTWVudS5zZXRB
dHRyaWJ1dGUoJ2FyaWEtY2hlY2tlZCcsICd0cnVlJyk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAJKHJldmlzaW9uIDE5NTk1OSkKKysrIFNvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1NzUsMTAg
KzM1NzUsMTQgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjphZGRUZXh0VHJhY2soUGFzcwogICAg
ICAgICByZXR1cm47CiAKICAgICBpZiAoIW1fcmVxdWlyZUNhcHRpb25QcmVmZXJlbmNlc0NoYW5n
ZWRDYWxsYmFja3MpIHsKKyAgICAgICAgRG9jdW1lbnQmIGRvY3VtZW50ID0gdGhpcy0+ZG9jdW1l
bnQoKTsKICAgICAgICAgbV9yZXF1aXJlQ2FwdGlvblByZWZlcmVuY2VzQ2hhbmdlZENhbGxiYWNr
cyA9IHRydWU7Ci0gICAgICAgIGRvY3VtZW50KCkucmVnaXN0ZXJGb3JDYXB0aW9uUHJlZmVyZW5j
ZXNDaGFuZ2VkQ2FsbGJhY2tzKHRoaXMpOworICAgICAgICBkb2N1bWVudC5yZWdpc3RlckZvckNh
cHRpb25QcmVmZXJlbmNlc0NoYW5nZWRDYWxsYmFja3ModGhpcyk7CisgICAgICAgIGlmIChkb2N1
bWVudC5wYWdlKCkpCisgICAgICAgICAgICBtX2NhcHRpb25EaXNwbGF5TW9kZSA9IGRvY3VtZW50
LnBhZ2UoKS0+Z3JvdXAoKS5jYXB0aW9uUHJlZmVyZW5jZXMoKS0+Y2FwdGlvbkRpc3BsYXlNb2Rl
KCk7CiAgICAgfQogCisgICAgdHJhY2stPnNldE1hbnVhbFNlbGVjdGlvbk1vZGUobV9jYXB0aW9u
RGlzcGxheU1vZGUgPT0gQ2FwdGlvblVzZXJQcmVmZXJlbmNlczo6TWFudWFsKTsKICAgICB0ZXh0
VHJhY2tzKCktPmFwcGVuZCh0cmFjayk7CiAKICAgICBjbG9zZUNhcHRpb25UcmFja3NDaGFuZ2Vk
KCk7CkBAIC01NzIzLDYgKzU3MjcsMTEgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpjYXB0aW9u
UHJlZmVyZW5jZQogICAgIGlmIChtX2NhcHRpb25EaXNwbGF5TW9kZSA9PSBkaXNwbGF5TW9kZSkK
ICAgICAgICAgcmV0dXJuOwogCisgICAgaWYgKG1fY2FwdGlvbkRpc3BsYXlNb2RlID09IENhcHRp
b25Vc2VyUHJlZmVyZW5jZXM6Ok1hbnVhbCB8fCBkaXNwbGF5TW9kZSA9PSBDYXB0aW9uVXNlclBy
ZWZlcmVuY2VzOjpNYW51YWwpIHsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1f
dGV4dFRyYWNrcy0+bGVuZ3RoKCk7ICsraSkKKyAgICAgICAgICAgIG1fdGV4dFRyYWNrcy0+aXRl
bShpKS0+c2V0TWFudWFsU2VsZWN0aW9uTW9kZShkaXNwbGF5TW9kZSA9PSBDYXB0aW9uVXNlclBy
ZWZlcmVuY2VzOjpNYW51YWwpOworICAgIH0KKwogICAgIG1fY2FwdGlvbkRpc3BsYXlNb2RlID0g
ZGlzcGxheU1vZGU7CiAgICAgc2V0V2Via2l0Q2xvc2VkQ2FwdGlvbnNWaXNpYmxlKG1fY2FwdGlv
bkRpc3BsYXlNb2RlID09IENhcHRpb25Vc2VyUHJlZmVyZW5jZXM6OkFsd2F5c09uKTsKIH0KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFjay5jcHAJKHJldmlzaW9uIDE5NTk1
OSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTczLDYgKzE3MywxNSBAQCBib29sIFRleHRUcmFjazo6aXNWYWxpZEtpbmRLZXl3
b3JkKGNvbnN0CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCitBdG9taWNTdHJpbmcgVGV4dFRyYWNr
OjpraW5kKCkgY29uc3QKK3sKKyAgICBBdG9taWNTdHJpbmcga2luZCA9IFRyYWNrQmFzZTo6a2lu
ZCgpOworICAgIGlmICghbV9tYW51YWxTZWxlY3Rpb25Nb2RlIHx8IGtpbmQgIT0gZm9yY2VkS2V5
d29yZCgpKQorICAgICAgICByZXR1cm4ga2luZDsKKworICAgIHJldHVybiBzdWJ0aXRsZXNLZXl3
b3JkKCk7Cit9CisKIHZvaWQgVGV4dFRyYWNrOjpzZXRLaW5kKGNvbnN0IEF0b21pY1N0cmluZyYg
bmV3S2luZCkKIHsKICAgICBTdHJpbmcgb2xkS2luZCA9IGtpbmQoKTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvaHRtbC90cmFjay9UZXh0VHJhY2suaAkocmV2aXNpb24gMTk1OTU5KQorKysgU291cmNlL1dl
YkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2suaAkod29ya2luZyBjb3B5KQpAQCAtODIsNyArODIs
OCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgaGlkZGVuS2V5d29y
ZCgpOwogICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIHNob3dpbmdLZXl3b3JkKCk7CiAK
LSAgICB2aXJ0dWFsIHZvaWQgc2V0S2luZChjb25zdCBBdG9taWNTdHJpbmcmKSBvdmVycmlkZTsK
KyAgICB2b2lkIHNldEtpbmQoY29uc3QgQXRvbWljU3RyaW5nJikgb3ZlcnJpZGU7CisgICAgQXRv
bWljU3RyaW5nIGtpbmQoKSBjb25zdCBvdmVycmlkZTsKIAogICAgIHZpcnR1YWwgQXRvbWljU3Ry
aW5nIGluQmFuZE1ldGFkYXRhVHJhY2tEaXNwYXRjaFR5cGUoKSBjb25zdCB7IHJldHVybiBlbXB0
eVN0cmluZygpOyB9CiAKQEAgLTE0Miw2ICsxNDMsOCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFs
IE1lZGlhVGltZSBzdGFydFRpbWVWYXJpYW5jZSgpIGNvbnN0IHsgcmV0dXJuIE1lZGlhVGltZTo6
emVyb1RpbWUoKTsgfQogCisgICAgdm9pZCBzZXRNYW51YWxTZWxlY3Rpb25Nb2RlKGJvb2wgbW9k
ZSkgeyBtX21hbnVhbFNlbGVjdGlvbk1vZGUgPSBtb2RlOyB9CisKICAgICB1c2luZyBSZWZDb3Vu
dGVkPFRyYWNrQmFzZT46OnJlZjsKICAgICB1c2luZyBSZWZDb3VudGVkPFRyYWNrQmFzZT46OmRl
cmVmOwogCkBAIC0xNzEsNiArMTc0LDcgQEAgcHJpdmF0ZToKICAgICBpbnQgbV90cmFja0luZGV4
OwogICAgIGludCBtX3JlbmRlcmVkVHJhY2tJbmRleDsKICAgICBib29sIG1faGFzQmVlbkNvbmZp
Z3VyZWQ7CisgICAgYm9vbCBtX21hbnVhbFNlbGVjdGlvbk1vZGUgeyBmYWxzZSB9OwogfTsKIAog
aW5saW5lIFRleHRUcmFjayogdG9UZXh0VHJhY2soVHJhY2tCYXNlKiB0cmFjaykKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVHJhY2tCYXNlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvaHRtbC90cmFjay9UcmFja0Jhc2UuaAkocmV2aXNpb24gMTk1OTU5KQorKysgU291
cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UcmFja0Jhc2UuaAkod29ya2luZyBjb3B5KQpAQCAtNTEs
NyArNTEsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBBdG9taWNTdHJpbmcgaWQoKSBjb25zdCB7
IHJldHVybiBtX2lkOyB9CiAgICAgdmlydHVhbCB2b2lkIHNldElkKGNvbnN0IEF0b21pY1N0cmlu
ZyYgaWQpIHsgbV9pZCA9IGlkOyB9CiAKLSAgICBBdG9taWNTdHJpbmcga2luZCgpIGNvbnN0IHsg
cmV0dXJuIG1fa2luZDsgfQorICAgIHZpcnR1YWwgQXRvbWljU3RyaW5nIGtpbmQoKSBjb25zdCB7
IHJldHVybiBtX2tpbmQ7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0S2luZChjb25zdCBBdG9taWNT
dHJpbmcmKTsKIAogICAgIEF0b21pY1N0cmluZyBsYWJlbCgpIGNvbnN0IHsgcmV0dXJuIG1fbGFi
ZWw7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlcy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNlclByZWZlcmVu
Y2VzLmNwcAkocmV2aXNpb24gMTk1OTU5KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9u
VXNlclByZWZlcmVuY2VzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjIsOCArNjIsMjIgQEAgdm9p
ZCBDYXB0aW9uVXNlclByZWZlcmVuY2VzOjp0aW1lckZpcmVkKAogICAgIGNhcHRpb25QcmVmZXJl
bmNlc0NoYW5nZWQoKTsKIH0KIAordm9pZCBDYXB0aW9uVXNlclByZWZlcmVuY2VzOjpiZWdpbkJs
b2NraW5nTm90aWZpY2F0aW9ucygpCit7CisgICAgKyttX2Jsb2NrTm90aWZpY2F0aW9uc0NvdW50
ZXI7Cit9CisKK3ZvaWQgQ2FwdGlvblVzZXJQcmVmZXJlbmNlczo6ZW5kQmxvY2tpbmdOb3RpZmlj
YWl0b25zKCkKK3sKKyAgICBBU1NFUlQobV9ibG9ja05vdGlmaWNhdGlvbnNDb3VudGVyKTsKKyAg
ICAtLW1fYmxvY2tOb3RpZmljYXRpb25zQ291bnRlcjsKK30KKwogdm9pZCBDYXB0aW9uVXNlclBy
ZWZlcmVuY2VzOjpub3RpZnkoKQogeworICAgIGlmIChtX2Jsb2NrTm90aWZpY2F0aW9uc0NvdW50
ZXIpCisgICAgICAgIHJldHVybjsKKwogICAgIG1faGF2ZVByZWZlcmVuY2VzID0gdHJ1ZTsKICAg
ICBpZiAoIW1fdGltZXIuaXNBY3RpdmUoKSkKICAgICAgICAgbV90aW1lci5zdGFydE9uZVNob3Qo
MCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXMuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXMu
aAkocmV2aXNpb24gMTk1OTU5KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNlclBy
ZWZlcmVuY2VzLmgJKHdvcmtpbmcgY29weSkKQEAgLTUwLDcgKzUwLDggQEAgcHVibGljOgogICAg
IGVudW0gQ2FwdGlvbkRpc3BsYXlNb2RlIHsKICAgICAgICAgQXV0b21hdGljLAogICAgICAgICBG
b3JjZWRPbmx5LAotICAgICAgICBBbHdheXNPbgorICAgICAgICBBbHdheXNPbiwKKyAgICAgICAg
TWFudWFsLAogICAgIH07CiAgICAgdmlydHVhbCBDYXB0aW9uRGlzcGxheU1vZGUgY2FwdGlvbkRp
c3BsYXlNb2RlKCkgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIHNldENhcHRpb25EaXNwbGF5TW9k
ZShDYXB0aW9uRGlzcGxheU1vZGUpOwpAQCAtOTgsMTggKzk5LDIxIEBAIHB1YmxpYzoKIAogcHJv
dGVjdGVkOgogICAgIHZvaWQgdXBkYXRlQ2FwdGlvblN0eWxlU2hlZXRPdmVyaWRlKCk7CisgICAg
dm9pZCBiZWdpbkJsb2NraW5nTm90aWZpY2F0aW9ucygpOworICAgIHZvaWQgZW5kQmxvY2tpbmdO
b3RpZmljYWl0b25zKCk7CiAKIHByaXZhdGU6CiAgICAgdm9pZCB0aW1lckZpcmVkKCk7CiAgICAg
dm9pZCBub3RpZnkoKTsKIAogICAgIFBhZ2VHcm91cCYgbV9wYWdlR3JvdXA7Ci0gICAgQ2FwdGlv
bkRpc3BsYXlNb2RlIG1fZGlzcGxheU1vZGU7CisgICAgbXV0YWJsZSBDYXB0aW9uRGlzcGxheU1v
ZGUgbV9kaXNwbGF5TW9kZTsKICAgICBUaW1lciBtX3RpbWVyOwogICAgIFN0cmluZyBtX3VzZXJQ
cmVmZXJyZWRMYW5ndWFnZTsKICAgICBTdHJpbmcgbV91c2VyUHJlZmVycmVkQXVkaW9DaGFyYWN0
ZXJpc3RpYzsKICAgICBTdHJpbmcgbV9jYXB0aW9uc1N0eWxlU2hlZXRPdmVycmlkZTsKICAgICBT
dHJpbmcgbV9wcmltYXJ5QXVkaW9UcmFja0xhbmd1YWdlT3ZlcnJpZGU7CisgICAgdW5zaWduZWQg
bV9ibG9ja05vdGlmaWNhdGlvbnNDb3VudGVyIHsgMCB9OwogICAgIGJvb2wgbV90ZXN0aW5nTW9k
ZTsKICAgICBib29sIG1faGF2ZVByZWZlcmVuY2VzOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BhZ2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUYuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BhZ2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUYuY3BwCShyZXZp
c2lvbiAxOTU5NTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5j
ZXNNZWRpYUFGLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzUsOCArNzUsMTggQEAgU09GVF9MSU5L
X0FWRl9QT0lOVEVSKENvcmVUZXh0LCBrQ1RGb250TgogI2RlZmluZSBrQ1RGb250TmFtZUF0dHJp
YnV0ZSBnZXRrQ1RGb250TmFtZUF0dHJpYnV0ZSgpCiAKICNkZWZpbmUgQ1RGb250RGVzY3JpcHRv
ckNvcHlBdHRyaWJ1dGUgc29mdExpbmtfQ1RGb250RGVzY3JpcHRvckNvcHlBdHRyaWJ1dGUKLSNl
bmRpZgotI2VuZGlmCisKK3R5cGVkZWYgQm9vbGVhbiAoKk1URW5hYmxlQ2FwdGlvbjIwMTVCZWhh
dmlvclB0clR5cGUpICgpOworc3RhdGljIE1URW5hYmxlQ2FwdGlvbjIwMTVCZWhhdmlvclB0clR5
cGUgTVRFbmFibGVDYXB0aW9uMjAxNUJlaGF2aW9yUHRyID0gbnVsbHB0cjsKKworI2Vsc2UKKwor
U09GVF9MSU5LX0ZSQU1FV09SSyhNZWRpYVRvb2xib3gpCitTT0ZUX0xJTktfT1BUSU9OQUwoTWVk
aWFUb29sYm94LCBNVEVuYWJsZUNhcHRpb24yMDE1QmVoYXZpb3IsIEJvb2xlYW4sICgpLCAoKSkK
KworI2VuZGlmIC8vIFBMQVRGT1JNKFdJTikKKworI2VuZGlmIC8vIEhBVkUoTUVESUFfQUNDRVNT
SUJJTElUWV9GUkFNRVdPUkspCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMTAwLDYgKzEx
MCwyMiBAQCBDYXB0aW9uVXNlclByZWZlcmVuY2VzTWVkaWFBRjo6Q2FwdGlvblVzCiAgICAgLCBt
X2xpc3RlbmluZ0ZvclByZWZlcmVuY2VDaGFuZ2VzKGZhbHNlKQogI2VuZGlmCiB7CisKKyAgICBz
dGF0aWMgc3RkOjpvbmNlX2ZsYWcgaW5pdGlhbGl6ZVNlbGVjdGlvbk1vZGU7CisgICAgc3RkOjpj
YWxsX29uY2UoaW5pdGlhbGl6ZVNlbGVjdGlvbk1vZGUsIFt0aGlzXSB7CisKKyAgICAgICAgaWYg
KCFNVEVuYWJsZUNhcHRpb24yMDE1QmVoYXZpb3JQdHIoKSkKKyAgICAgICAgICAgIHJldHVybjsK
KworICAgICAgICBpZiAoTVRFbmFibGVDYXB0aW9uMjAxNUJlaGF2aW9yUHRyKCkoKSkgeworICAg
ICAgICAgICAgYmVnaW5CbG9ja2luZ05vdGlmaWNhdGlvbnMoKTsKKyAgICAgICAgICAgIENhcHRp
b25Vc2VyUHJlZmVyZW5jZXM6OnNldENhcHRpb25EaXNwbGF5TW9kZShNYW51YWwpOworICAgICAg
ICAgICAgc2V0VXNlclByZWZlcnNDYXB0aW9ucyhmYWxzZSk7CisgICAgICAgICAgICBzZXRVc2Vy
UHJlZmVyc1N1YnRpdGxlcyhmYWxzZSk7CisgICAgICAgICAgICBzZXRVc2VyUHJlZmVyc1RleHRE
ZXNjcmlwdGlvbnMoZmFsc2UpOworICAgICAgICAgICAgZW5kQmxvY2tpbmdOb3RpZmljYWl0b25z
KCk7CisgICAgICAgIH0KKyAgICB9KTsKIH0KIAogQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlh
QUY6On5DYXB0aW9uVXNlclByZWZlcmVuY2VzTWVkaWFBRigpCkBAIC0xMTYsOCArMTQyLDkgQEAg
Q2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUY6On5DYXB0aW9uVQogCiBDYXB0aW9uVXNlclBy
ZWZlcmVuY2VzOjpDYXB0aW9uRGlzcGxheU1vZGUgQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlh
QUY6OmNhcHRpb25EaXNwbGF5TW9kZSgpIGNvbnN0CiB7Ci0gICAgaWYgKHRlc3RpbmdNb2RlKCkg
fHwgIU1lZGlhQWNjZXNzaWJpbGl0eUxpYnJhcnkoKSkKLSAgICAgICAgcmV0dXJuIENhcHRpb25V
c2VyUHJlZmVyZW5jZXM6OmNhcHRpb25EaXNwbGF5TW9kZSgpOworICAgIENhcHRpb25EaXNwbGF5
TW9kZSBpbnRlcm5hbE1vZGUgPSBDYXB0aW9uVXNlclByZWZlcmVuY2VzOjpjYXB0aW9uRGlzcGxh
eU1vZGUoKTsKKyAgICBpZiAoaW50ZXJuYWxNb2RlID09IE1hbnVhbCB8fCB0ZXN0aW5nTW9kZSgp
IHx8ICFNZWRpYUFjY2Vzc2liaWxpdHlMaWJyYXJ5KCkpCisgICAgICAgIHJldHVybiBpbnRlcm5h
bE1vZGU7CiAKICAgICBNQUNhcHRpb25BcHBlYXJhbmNlRGlzcGxheVR5cGUgZGlzcGxheVR5cGUg
PSBNQUNhcHRpb25BcHBlYXJhbmNlR2V0RGlzcGxheVR5cGUoa01BQ2FwdGlvbkFwcGVhcmFuY2VE
b21haW5Vc2VyKTsKICAgICBzd2l0Y2ggKGRpc3BsYXlUeXBlKSB7CkBAIC0xNDIsNiArMTY5LDkg
QEAgdm9pZCBDYXB0aW9uVXNlclByZWZlcmVuY2VzTWVkaWFBRjo6c2V0QwogICAgICAgICByZXR1
cm47CiAgICAgfQogCisgICAgaWYgKGNhcHRpb25EaXNwbGF5TW9kZSgpID09IE1hbnVhbCkKKyAg
ICAgICAgcmV0dXJuOworCiAgICAgTUFDYXB0aW9uQXBwZWFyYW5jZURpc3BsYXlUeXBlIGRpc3Bs
YXlUeXBlID0ga01BQ2FwdGlvbkFwcGVhcmFuY2VEaXNwbGF5VHlwZUZvcmNlZE9ubHk7CiAgICAg
c3dpdGNoIChtb2RlKSB7CiAgICAgY2FzZSBBdXRvbWF0aWM6CkBAIC00MzIsNiArNDYyLDkgQEAg
ZmxvYXQgQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUY6OmNhcAogCiB2b2lkIENhcHRpb25V
c2VyUHJlZmVyZW5jZXNNZWRpYUFGOjpzZXRQcmVmZXJyZWRMYW5ndWFnZShjb25zdCBTdHJpbmcm
IGxhbmd1YWdlKQogeworICAgIGlmIChDYXB0aW9uVXNlclByZWZlcmVuY2VzOjpjYXB0aW9uRGlz
cGxheU1vZGUoKSA9PSBNYW51YWwpCisgICAgICAgIHJldHVybjsKKwogICAgIGlmICh0ZXN0aW5n
TW9kZSgpIHx8ICFNZWRpYUFjY2Vzc2liaWxpdHlMaWJyYXJ5KCkpIHsKICAgICAgICAgQ2FwdGlv
blVzZXJQcmVmZXJlbmNlczo6c2V0UHJlZmVycmVkTGFuZ3VhZ2UobGFuZ3VhZ2UpOwogICAgICAg
ICByZXR1cm47CkBAIC02NjEsNiArNjk0LDkgQEAgU3RyaW5nIENhcHRpb25Vc2VyUHJlZmVyZW5j
ZXNNZWRpYUFGOjpkaQogaW50IENhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGOjp0ZXh0VHJh
Y2tTZWxlY3Rpb25TY29yZShUZXh0VHJhY2sqIHRyYWNrLCBIVE1MTWVkaWFFbGVtZW50KiBtZWRp
YUVsZW1lbnQpIGNvbnN0CiB7CiAgICAgQ2FwdGlvbkRpc3BsYXlNb2RlIGRpc3BsYXlNb2RlID0g
Y2FwdGlvbkRpc3BsYXlNb2RlKCk7CisgICAgaWYgKGRpc3BsYXlNb2RlID09IE1hbnVhbCkKKyAg
ICAgICAgcmV0dXJuIDA7CisKICAgICBib29sIGxlZ2FjeU92ZXJyaWRlID0gbWVkaWFFbGVtZW50
LT53ZWJraXRDbG9zZWRDYXB0aW9uc1Zpc2libGUoKTsKICAgICBpZiAoZGlzcGxheU1vZGUgPT0g
QWx3YXlzT24gJiYgKCF1c2VyUHJlZmVyc1N1YnRpdGxlcygpICYmICF1c2VyUHJlZmVyc0NhcHRp
b25zKCkgJiYgIWxlZ2FjeU92ZXJyaWRlKSkKICAgICAgICAgcmV0dXJuIDA7CkBAIC04MDQsNiAr
ODQwLDcgQEAgVmVjdG9yPFJlZlB0cjxUZXh0VHJhY2s+PiBDYXB0aW9uVXNlclByZQogCiAgICAg
VmVjdG9yPFJlZlB0cjxUZXh0VHJhY2s+PiB0cmFja3NGb3JNZW51OwogICAgIEhhc2hTZXQ8U3Ry
aW5nPiBsYW5ndWFnZXNJbmNsdWRlZDsKKyAgICBDYXB0aW9uRGlzcGxheU1vZGUgZGlzcGxheU1v
ZGUgPSBjYXB0aW9uRGlzcGxheU1vZGUoKTsKICAgICBib29sIHByZWZlcnNBY2Nlc3NpYmlsaXR5
VHJhY2tzID0gdXNlclByZWZlcnNDYXB0aW9ucygpOwogICAgIGJvb2wgZmlsdGVyVHJhY2tMaXN0
ID0gc2hvdWxkRmlsdGVyVHJhY2tNZW51KCk7CiAKQEAgLTgxMSwxNyArODQ4LDIzIEBAIFZlY3Rv
cjxSZWZQdHI8VGV4dFRyYWNrPj4gQ2FwdGlvblVzZXJQcmUKICAgICAgICAgVGV4dFRyYWNrKiB0
cmFjayA9IHRyYWNrTGlzdC0+aXRlbShpKTsKICAgICAgICAgU3RyaW5nIGxhbmd1YWdlID0gZGlz
cGxheU5hbWVGb3JMYW5ndWFnZUxvY2FsZSh0cmFjay0+bGFuZ3VhZ2UoKSk7CiAKKyAgICAgICAg
aWYgKGRpc3BsYXlNb2RlID09IE1hbnVhbCkgeworICAgICAgICAgICAgTE9HKE1lZGlhLCAiQ2Fw
dGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUY6OnNvcnRlZFRyYWNrTGlzdEZvck1lbnUgLSBhZGRp
bmcgJyVzJyB0cmFjayB3aXRoIGxhbmd1YWdlICclcycgYmVjYXVzZSBzZWxlY3Rpb24gbW9kZSBp
cyAnbWFudWFsJyIsIHRyYWNrLT5raW5kKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgbGFuZ3Vh
Z2UudXRmOCgpLmRhdGEoKSk7CisgICAgICAgICAgICB0cmFja3NGb3JNZW51LmFwcGVuZCh0cmFj
ayk7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCiAgICAgICAgIGNvbnN0IEF0
b21pY1N0cmluZyYga2luZCA9IHRyYWNrLT5raW5kKCk7CiAgICAgICAgIGlmIChraW5kICE9IFRl
eHRUcmFjazo6Y2FwdGlvbnNLZXl3b3JkKCkgJiYga2luZCAhPSBUZXh0VHJhY2s6OmRlc2NyaXB0
aW9uc0tleXdvcmQoKSAmJiBraW5kICE9IFRleHRUcmFjazo6c3VidGl0bGVzS2V5d29yZCgpKQog
ICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgaWYgKHRyYWNrLT5jb250YWluc09ubHlG
b3JjZWRTdWJ0aXRsZXMoKSkgewotICAgICAgICAgICAgTE9HKE1lZGlhLCAiQ2FwdGlvblVzZXJQ
cmVmZXJlbmNlc01hYzo6c29ydGVkVHJhY2tMaXN0Rm9yTWVudSAtIHNraXBwaW5nICclcycgdHJh
Y2sgd2l0aCBsYW5ndWFnZSAnJXMnIGJlY2F1c2UgaXQgY29udGFpbnMgb25seSBmb3JjZWQgc3Vi
dGl0bGVzIiwgdHJhY2stPmtpbmQoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpLCBsYW5ndWFnZS51
dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgICAgIExPRyhNZWRpYSwgIkNhcHRpb25Vc2VyUHJlZmVy
ZW5jZXNNZWRpYUFGOjpzb3J0ZWRUcmFja0xpc3RGb3JNZW51IC0gc2tpcHBpbmcgJyVzJyB0cmFj
ayB3aXRoIGxhbmd1YWdlICclcycgYmVjYXVzZSBpdCBjb250YWlucyBvbmx5IGZvcmNlZCBzdWJ0
aXRsZXMiLCB0cmFjay0+a2luZCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCksIGxhbmd1YWdlLnV0
ZjgoKS5kYXRhKCkpOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KICAgICAgICAg
CiAgICAgICAgIGlmICh0cmFjay0+aXNFYXN5VG9SZWFkKCkpIHsKLSAgICAgICAgICAgIExPRyhN
ZWRpYSwgIkNhcHRpb25Vc2VyUHJlZmVyZW5jZXNNYWM6OnNvcnRlZFRyYWNrTGlzdEZvck1lbnUg
LSBhZGRpbmcgJyVzJyB0cmFjayB3aXRoIGxhbmd1YWdlICclcycgYmVjYXVzZSBpdCBpcyAnZWFz
eSB0byByZWFkJyIsIHRyYWNrLT5raW5kKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgbGFuZ3Vh
Z2UudXRmOCgpLmRhdGEoKSk7CisgICAgICAgICAgICBMT0coTWVkaWEsICJDYXB0aW9uVXNlclBy
ZWZlcmVuY2VzTWVkaWFBRjo6c29ydGVkVHJhY2tMaXN0Rm9yTWVudSAtIGFkZGluZyAnJXMnIHRy
YWNrIHdpdGggbGFuZ3VhZ2UgJyVzJyBiZWNhdXNlIGl0IGlzICdlYXN5IHRvIHJlYWQnIiwgdHJh
Y2stPmtpbmQoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpLCBsYW5ndWFnZS51dGY4KCkuZGF0YSgp
KTsKICAgICAgICAgICAgIGlmICghbGFuZ3VhZ2UuaXNFbXB0eSgpKQogICAgICAgICAgICAgICAg
IGxhbmd1YWdlc0luY2x1ZGVkLmFkZChsYW5ndWFnZSk7CiAgICAgICAgICAgICB0cmFja3NGb3JN
ZW51LmFwcGVuZCh0cmFjayk7CkBAIC04MjksNyArODcyLDcgQEAgVmVjdG9yPFJlZlB0cjxUZXh0
VHJhY2s+PiBDYXB0aW9uVXNlclByZQogICAgICAgICB9CiAKICAgICAgICAgaWYgKHRyYWNrLT5t
b2RlKCkgPT0gVGV4dFRyYWNrOjpzaG93aW5nS2V5d29yZCgpKSB7Ci0gICAgICAgICAgICBMT0co
TWVkaWEsICJDYXB0aW9uVXNlclByZWZlcmVuY2VzTWFjOjpzb3J0ZWRUcmFja0xpc3RGb3JNZW51
IC0gYWRkaW5nICclcycgdHJhY2sgd2l0aCBsYW5ndWFnZSAnJXMnIGJlY2F1c2UgaXQgaXMgYWxy
ZWFkeSB2aXNpYmxlIiwgdHJhY2stPmtpbmQoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpLCBsYW5n
dWFnZS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgICAgIExPRyhNZWRpYSwgIkNhcHRpb25Vc2Vy
UHJlZmVyZW5jZXNNZWRpYUFGOjpzb3J0ZWRUcmFja0xpc3RGb3JNZW51IC0gYWRkaW5nICclcycg
dHJhY2sgd2l0aCBsYW5ndWFnZSAnJXMnIGJlY2F1c2UgaXQgaXMgYWxyZWFkeSB2aXNpYmxlIiwg
dHJhY2stPmtpbmQoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpLCBsYW5ndWFnZS51dGY4KCkuZGF0
YSgpKTsKICAgICAgICAgICAgIGlmICghbGFuZ3VhZ2UuaXNFbXB0eSgpKQogICAgICAgICAgICAg
ICAgIGxhbmd1YWdlc0luY2x1ZGVkLmFkZChsYW5ndWFnZSk7CiAgICAgICAgICAgICB0cmFja3NG
b3JNZW51LmFwcGVuZCh0cmFjayk7CkBAIC04NjEsNyArOTA0LDcgQEAgVmVjdG9yPFJlZlB0cjxU
ZXh0VHJhY2s+PiBDYXB0aW9uVXNlclByZQogICAgICAgICAgICAgbGFuZ3VhZ2VzSW5jbHVkZWQu
YWRkKGxhbmd1YWdlKTsKICAgICAgICAgdHJhY2tzRm9yTWVudS5hcHBlbmQodHJhY2spOwogCi0g
ICAgICAgIExPRyhNZWRpYSwgIkNhcHRpb25Vc2VyUHJlZmVyZW5jZXNNYWM6OnNvcnRlZFRyYWNr
TGlzdEZvck1lbnUgLSBhZGRpbmcgJyVzJyB0cmFjayB3aXRoIGxhbmd1YWdlICclcycsIGlzJXMg
bWFpbiBwcm9ncmFtIGNvbnRlbnQiLCB0cmFjay0+a2luZCgpLnN0cmluZygpLnV0ZjgoKS5kYXRh
KCksIGxhbmd1YWdlLnV0ZjgoKS5kYXRhKCksIHRyYWNrLT5pc01haW5Qcm9ncmFtQ29udGVudCgp
ID8gIiIgOiAiIE5PVCIpOworICAgICAgICBMT0coTWVkaWEsICJDYXB0aW9uVXNlclByZWZlcmVu
Y2VzTWVkaWFBRjo6c29ydGVkVHJhY2tMaXN0Rm9yTWVudSAtIGFkZGluZyAnJXMnIHRyYWNrIHdp
dGggbGFuZ3VhZ2UgJyVzJywgaXMlcyBtYWluIHByb2dyYW0gY29udGVudCIsIHRyYWNrLT5raW5k
KCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgbGFuZ3VhZ2UudXRmOCgpLmRhdGEoKSwgdHJhY2st
PmlzTWFpblByb2dyYW1Db250ZW50KCkgPyAiIiA6ICIgTk9UIik7CiAgICAgfQogCiAgICAgLy8g
Tm93IHRoYXQgd2UgaGF2ZSBmaWx0ZXJlZCBmb3IgdGhlIHVzZXIncyBhY2Nlc3NpYmlsaXR5L3Ry
YW5zbGF0aW9uIHByZWZlcmVuY2UsIGFkZCAgYWxsIHRyYWNrcyB3aXRoIGEgdW5pcXVlIGxhbmd1
YWdlIHdpdGhvdXQgcmVnYXJkIHRvIHRyYWNrIHR5cGUuCkBAIC04NjksNiArOTEyLDkgQEAgVmVj
dG9yPFJlZlB0cjxUZXh0VHJhY2s+PiBDYXB0aW9uVXNlclByZQogICAgICAgICBUZXh0VHJhY2sq
IHRyYWNrID0gdHJhY2tMaXN0LT5pdGVtKGkpOwogICAgICAgICBTdHJpbmcgbGFuZ3VhZ2UgPSBk
aXNwbGF5TmFtZUZvckxhbmd1YWdlTG9jYWxlKHRyYWNrLT5sYW5ndWFnZSgpKTsKIAorICAgICAg
ICBpZiAodHJhY2tzRm9yTWVudS5jb250YWlucyh0cmFjaykpCisgICAgICAgICAgICBjb250aW51
ZTsKKwogICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcmIGtpbmQgPSB0cmFjay0+a2luZCgpOwog
ICAgICAgICBpZiAoa2luZCAhPSBUZXh0VHJhY2s6OmNhcHRpb25zS2V5d29yZCgpICYmIGtpbmQg
IT0gVGV4dFRyYWNrOjpkZXNjcmlwdGlvbnNLZXl3b3JkKCkgJiYga2luZCAhPSBUZXh0VHJhY2s6
OnN1YnRpdGxlc0tleXdvcmQoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwpJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25PYmpDLm1tCShyZXZpc2lvbiAxOTU5NTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25PYmpDLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNTUsNiArMjU1LDcgQEAgU09GVF9MSU5L
X1BPSU5URVIoQVZGb3VuZGF0aW9uLCBBVk91dE9mQgogU09GVF9MSU5LX1BPSU5URVIoQVZGb3Vu
ZGF0aW9uLCBBVk91dE9mQmFuZEFsdGVybmF0ZVRyYWNrU291cmNlS2V5LCBOU1N0cmluZyopCiBT
T0ZUX0xJTktfUE9JTlRFUihBVkZvdW5kYXRpb24sIEFWTWVkaWFDaGFyYWN0ZXJpc3RpY0Rlc2Ny
aWJlc011c2ljQW5kU291bmRGb3JBY2Nlc3NpYmlsaXR5LCBOU1N0cmluZyopCiBTT0ZUX0xJTktf
UE9JTlRFUihBVkZvdW5kYXRpb24sIEFWTWVkaWFDaGFyYWN0ZXJpc3RpY1RyYW5zY3JpYmVzU3Bv
a2VuRGlhbG9nRm9yQWNjZXNzaWJpbGl0eSwgTlNTdHJpbmcqKQorU09GVF9MSU5LX1BPSU5URVIo
QVZGb3VuZGF0aW9uLCBBVk1lZGlhQ2hhcmFjdGVyaXN0aWNJc0F1eGlsaWFyeUNvbnRlbnQsIE5T
U3RyaW5nKikKIAogI2RlZmluZSBBVlVSTEFzc2V0SFRUUENvb2tpZXNLZXkgZ2V0QVZVUkxBc3Nl
dEhUVFBDb29raWVzS2V5KCkKICNkZWZpbmUgQVZVUkxBc3NldE91dE9mQmFuZEFsdGVybmF0ZVRy
YWNrc0tleSBnZXRBVlVSTEFzc2V0T3V0T2ZCYW5kQWx0ZXJuYXRlVHJhY2tzS2V5KCkKQEAgLTI2
Niw2ICsyNjcsNyBAQCBTT0ZUX0xJTktfUE9JTlRFUihBVkZvdW5kYXRpb24sIEFWTWVkaWFDCiAj
ZGVmaW5lIEFWT3V0T2ZCYW5kQWx0ZXJuYXRlVHJhY2tTb3VyY2VLZXkgZ2V0QVZPdXRPZkJhbmRB
bHRlcm5hdGVUcmFja1NvdXJjZUtleSgpCiAjZGVmaW5lIEFWTWVkaWFDaGFyYWN0ZXJpc3RpY0Rl
c2NyaWJlc011c2ljQW5kU291bmRGb3JBY2Nlc3NpYmlsaXR5IGdldEFWTWVkaWFDaGFyYWN0ZXJp
c3RpY0Rlc2NyaWJlc011c2ljQW5kU291bmRGb3JBY2Nlc3NpYmlsaXR5KCkKICNkZWZpbmUgQVZN
ZWRpYUNoYXJhY3RlcmlzdGljVHJhbnNjcmliZXNTcG9rZW5EaWFsb2dGb3JBY2Nlc3NpYmlsaXR5
IGdldEFWTWVkaWFDaGFyYWN0ZXJpc3RpY1RyYW5zY3JpYmVzU3Bva2VuRGlhbG9nRm9yQWNjZXNz
aWJpbGl0eSgpCisjZGVmaW5lIEFWTWVkaWFDaGFyYWN0ZXJpc3RpY0lzQXV4aWxpYXJ5Q29udGVu
dCBnZXRBVk1lZGlhQ2hhcmFjdGVyaXN0aWNJc0F1eGlsaWFyeUNvbnRlbnQoKQogI2VuZGlmCiAK
ICNpZiBFTkFCTEUoREFUQUNVRV9WQUxVRSkKQEAgLTMwNSw2ICszMDcsOSBAQCBTT0ZUX0xJTktf
UE9JTlRFUihDb3JlVmlkZW8sIGtDVlBpeGVsQnVmCiAjZGVmaW5lIGtDVlBpeGVsQnVmZmVySU9T
dXJmYWNlT3BlbkdMRkJPQ29tcGF0aWJpbGl0eUtleSBnZXRrQ1ZQaXhlbEJ1ZmZlcklPU3VyZmFj
ZU9wZW5HTEZCT0NvbXBhdGliaWxpdHlLZXkoKQogI2VuZGlmCiAKK1NPRlRfTElOS19GUkFNRVdP
UksoTWVkaWFUb29sYm94KQorU09GVF9MSU5LX09QVElPTkFMKE1lZGlhVG9vbGJveCwgTVRFbmFi
bGVDYXB0aW9uMjAxNUJlaGF2aW9yLCBCb29sZWFuLCAoKSwgKCkpCisKIHVzaW5nIG5hbWVzcGFj
ZSBXZWJDb3JlOwogCiBlbnVtIE1lZGlhUGxheWVyQVZGb3VuZGF0aW9uT2JzZXJ2YXRpb25Db250
ZXh0IHsKQEAgLTczMiw2ICs3MzcsMTcgQEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25PYmpDOgogI2lmIEVOQUJMRShBVkZfQ0FQVElPTlMpCiBzdGF0aWMgY29uc3QgTlNBcnJh
eSogbWVkaWFEZXNjcmlwdGlvbkZvcktpbmQoUGxhdGZvcm1UZXh0VHJhY2s6OlRyYWNrS2luZCBr
aW5kKQogeworICAgIHN0YXRpYyBib29sIG1hbnVhbFNlbGVjdGlvbk1vZGU7CisgICAgc3RhdGlj
IHN0ZDo6b25jZV9mbGFnIGluaXRpYWxpemVTZWxlY3Rpb25Nb2RlOworCisgICAgc3RkOjpjYWxs
X29uY2UoaW5pdGlhbGl6ZVNlbGVjdGlvbk1vZGUsIFtdIHsKKyAgICAgICAgaWYgKE1URW5hYmxl
Q2FwdGlvbjIwMTVCZWhhdmlvclB0cigpKQorICAgICAgICAgICAgbWFudWFsU2VsZWN0aW9uTW9k
ZSA9IE1URW5hYmxlQ2FwdGlvbjIwMTVCZWhhdmlvclB0cigpKCk7CisgICAgfSk7CisKKyAgICBp
ZiAobWFudWFsU2VsZWN0aW9uTW9kZSkKKyAgICAgICAgcmV0dXJuIEBbIEFWTWVkaWFDaGFyYWN0
ZXJpc3RpY0lzQXV4aWxpYXJ5Q29udGVudCBdOworCiAgICAgLy8gRklYTUU6IE1hdGNoIHRoZXNl
IHRvIGNvcnJlY3QgdHlwZXM6CiAgICAgaWYgKGtpbmQgPT0gUGxhdGZvcm1UZXh0VHJhY2s6OkNh
cHRpb24pCiAgICAgICAgIHJldHVybiBbTlNBcnJheSBhcnJheVdpdGhPYmplY3RzOiBBVk1lZGlh
Q2hhcmFjdGVyaXN0aWNUcmFuc2NyaWJlc1Nwb2tlbkRpYWxvZ0ZvckFjY2Vzc2liaWxpdHksIG5p
bF07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCShyZXZpc2lvbiAxOTU5
NTkpCisrKyBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTI3ODQsNiArMjc4NCw4IEBAIHZvaWQgSW50ZXJuYWxzOjpzZXRDYXB0aW9uRGlzcGxh
eU1vZGUoY28KICAgICAgICAgY2FwdGlvblByZWZlcmVuY2VzLT5zZXRDYXB0aW9uRGlzcGxheU1v
ZGUoQ2FwdGlvblVzZXJQcmVmZXJlbmNlczo6Rm9yY2VkT25seSk7CiAgICAgZWxzZSBpZiAoZXF1
YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UobW9kZSwgImFsd2F5c29uIikpCiAgICAgICAgIGNh
cHRpb25QcmVmZXJlbmNlcy0+c2V0Q2FwdGlvbkRpc3BsYXlNb2RlKENhcHRpb25Vc2VyUHJlZmVy
ZW5jZXM6OkFsd2F5c09uKTsKKyAgICBlbHNlIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJ
Q2FzZShtb2RlLCAibWFudWFsIikpCisgICAgICAgIGNhcHRpb25QcmVmZXJlbmNlcy0+c2V0Q2Fw
dGlvbkRpc3BsYXlNb2RlKENhcHRpb25Vc2VyUHJlZmVyZW5jZXM6Ok1hbnVhbCk7CiAgICAgZWxz
ZQogICAgICAgICBlYyA9IFNZTlRBWF9FUlI7CiAjZWxzZQpJbmRleDogTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMTk1
OTU5KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEs
MTQgQEAKKzIwMTYtMDItMDEgIEVyaWMgQ2FybHNvbiAgPGVyaWMuY2FybHNvbkBhcHBsZS5jb20+
CisKKyAgICAgICAgQWxsb3cgcG9ydHMgdG8gZGlzYWJsZSBhdXRvbWF0aWMgdGV4dCB0cmFjayBz
ZWxlY3Rpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE1Mzc2MQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjQ0MTY3Njg+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBtZWRpYS90cmFjay90cmFjay1t
YW51YWwtbW9kZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIG1lZGlhL3RyYWNrL3Ry
YWNrLW1hbnVhbC1tb2RlLmh0bWw6IEFkZGVkLgorCiAyMDE2LTAyLTAxICBZb3Vlbm4gRmFibGV0
ICA8eW91ZW5uLmZhYmxldEBjcmYuY2Fub24uZnI+CiAKICAgICAgICAgW0ZldGNoIEFQSV0gSW1w
bGVtZW50IEZldGNoIEFQSSBSZXF1ZXN0CkluZGV4OiBMYXlvdXRUZXN0cy9tZWRpYS90cmFjay90
cmFjay1tYW51YWwtbW9kZS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
bWVkaWEvdHJhY2svdHJhY2stbWFudWFsLW1vZGUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQor
KysgTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svdHJhY2stbWFudWFsLW1vZGUtZXhwZWN0ZWQudHh0
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTMgQEAKK1Rlc3RzICdtYW51YWwnIGNhcHRpb24g
bW9kZS4KKworCitSVU4oaW50ZXJuYWxzLnNldFVzZXJQcmVmZXJyZWRMYW5ndWFnZXMoWydlbidd
KSkKK1JVTihpbnRlcm5hbHMuc2V0UHJpbWFyeUF1ZGlvVHJhY2tMYW5ndWFnZU92ZXJyaWRlKCdm
cicpKQorUlVOKGludGVybmFscy5zZXRDYXB0aW9uRGlzcGxheU1vZGUoJ21hbnVhbCcpKQorRVZF
TlQoY2FucGxheXRocm91Z2gpCisKKyoqIEZvcmNlZCB0cmFja3Mgc2hvdWxkIGJlIGluIC50ZXh0
VHJhY2tzIGFzIHdlbGwgYXMgaW4gdGhlIG1lbnUsCisqKiBidXQgc2hvdWxkIGJlIGxhYmVsZWQg
YXMgJ3N1YnRpdGxlcycKKworRVhQRUNURUQgKHZpZGVvLnRleHRUcmFja3MubGVuZ3RoID09ICc5
JykgT0sKK0VYUEVDVEVEICh0cmFja01lbnVJdGVtcy5sZW5ndGggPT0gJzExJykgT0sKKworKiog
Tm8gdHJhY2sgc2hvdWxkIGJlIGVuYWJsZWQgYnkgZGVmYXVsdAorRVhQRUNURUQgKHZpZGVvLnRl
eHRUcmFja3NbMF0ubGFuZ3VhZ2UgPT0gJ2VuJykgT0sKK0VYUEVDVEVEICh2aWRlby50ZXh0VHJh
Y2tzWzBdLmtpbmQgPT0gJ3N1YnRpdGxlcycpIE9LCitFWFBFQ1RFRCAodmlkZW8udGV4dFRyYWNr
c1swXS5tb2RlID09ICdkaXNhYmxlZCcpIE9LCisKK0VYUEVDVEVEICh2aWRlby50ZXh0VHJhY2tz
WzFdLmxhbmd1YWdlID09ICdlbicpIE9LCitFWFBFQ1RFRCAodmlkZW8udGV4dFRyYWNrc1sxXS5r
aW5kID09ICdzdWJ0aXRsZXMnKSBPSworRVhQRUNURUQgKHZpZGVvLnRleHRUcmFja3NbMV0ubW9k
ZSA9PSAnZGlzYWJsZWQnKSBPSworCitFWFBFQ1RFRCAodmlkZW8udGV4dFRyYWNrc1syXS5sYW5n
dWFnZSA9PSAnZnInKSBPSworRVhQRUNURUQgKHZpZGVvLnRleHRUcmFja3NbMl0ua2luZCA9PSAn
c3VidGl0bGVzJykgT0sKK0VYUEVDVEVEICh2aWRlby50ZXh0VHJhY2tzWzJdLm1vZGUgPT0gJ2Rp
c2FibGVkJykgT0sKKworRVhQRUNURUQgKHZpZGVvLnRleHRUcmFja3NbM10ubGFuZ3VhZ2UgPT0g
J2ZyJykgT0sKK0VYUEVDVEVEICh2aWRlby50ZXh0VHJhY2tzWzNdLmtpbmQgPT0gJ3N1YnRpdGxl
cycpIE9LCitFWFBFQ1RFRCAodmlkZW8udGV4dFRyYWNrc1szXS5tb2RlID09ICdkaXNhYmxlZCcp
IE9LCisKK0VYUEVDVEVEICh2aWRlby50ZXh0VHJhY2tzWzRdLmxhbmd1YWdlID09ICdlcycpIE9L
CitFWFBFQ1RFRCAodmlkZW8udGV4dFRyYWNrc1s0XS5raW5kID09ICdzdWJ0aXRsZXMnKSBPSwor
RVhQRUNURUQgKHZpZGVvLnRleHRUcmFja3NbNF0ubW9kZSA9PSAnZGlzYWJsZWQnKSBPSworCitF
WFBFQ1RFRCAodmlkZW8udGV4dFRyYWNrc1s1XS5sYW5ndWFnZSA9PSAnZXMnKSBPSworRVhQRUNU
RUQgKHZpZGVvLnRleHRUcmFja3NbNV0ua2luZCA9PSAnc3VidGl0bGVzJykgT0sKK0VYUEVDVEVE
ICh2aWRlby50ZXh0VHJhY2tzWzVdLm1vZGUgPT0gJ2Rpc2FibGVkJykgT0sKKworRVhQRUNURUQg
KHZpZGVvLnRleHRUcmFja3NbNl0ubGFuZ3VhZ2UgPT0gJ2RlJykgT0sKK0VYUEVDVEVEICh2aWRl
by50ZXh0VHJhY2tzWzZdLmtpbmQgPT0gJ3N1YnRpdGxlcycpIE9LCitFWFBFQ1RFRCAodmlkZW8u
dGV4dFRyYWNrc1s2XS5tb2RlID09ICdkaXNhYmxlZCcpIE9LCisKK0VYUEVDVEVEICh2aWRlby50
ZXh0VHJhY2tzWzddLmxhbmd1YWdlID09ICdkZScpIE9LCitFWFBFQ1RFRCAodmlkZW8udGV4dFRy
YWNrc1s3XS5raW5kID09ICdzdWJ0aXRsZXMnKSBPSworRVhQRUNURUQgKHZpZGVvLnRleHRUcmFj
a3NbN10ubW9kZSA9PSAnZGlzYWJsZWQnKSBPSworCitFWFBFQ1RFRCAodmlkZW8udGV4dFRyYWNr
c1s4XS5sYW5ndWFnZSA9PSAnZW4nKSBPSworRVhQRUNURUQgKHZpZGVvLnRleHRUcmFja3NbOF0u
a2luZCA9PSAnY2FwdGlvbnMnKSBPSworRVhQRUNURUQgKHZpZGVvLnRleHRUcmFja3NbOF0ubW9k
ZSA9PSAnZGlzYWJsZWQnKSBPSworCitFTkQgT0YgVEVTVAorCkluZGV4OiBMYXlvdXRUZXN0cy9t
ZWRpYS90cmFjay90cmFjay1tYW51YWwtbW9kZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL21lZGlhL3RyYWNrL3RyYWNrLW1hbnVhbC1tb2RlLmh0bWwJKHJldmlzaW9uIDApCisrKyBM
YXlvdXRUZXN0cy9tZWRpYS90cmFjay90cmFjay1tYW51YWwtbW9kZS5odG1sCSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsOTQgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+
CisgICAgICAgIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9o
dG1sOyBjaGFyc2V0PXV0Zi04IiAvPgorCisgICAgICAgIDxzY3JpcHQgc3JjPS4uL21lZGlhLWNv
bnRyb2xzLmpzPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0IHNyYz0uLi90cmFja21lbnUtdGVz
dC5qcz48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdCBzcmM9Li4vdmlkZW8tdGVzdC5qcz48L3Nj
cmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKworICAgICAgICAgICAgZnVuY3Rpb24gdGVzdFRyYWNr
cygpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY29uc29sZVdyaXRlKGA8YnI+PGk+
KiogRm9yY2VkIHRyYWNrcyBzaG91bGQgYmUgaW4gLnRleHRUcmFja3MgYXMgd2VsbCBhcyBpbiB0
aGUgbWVudSxgKTsKKyAgICAgICAgICAgICAgICBjb25zb2xlV3JpdGUoYDxpPioqIGJ1dCBzaG91
bGQgYmUgbGFiZWxlZCBhcyAnc3VidGl0bGVzJzwvaT48YnI+YCk7CisgICAgICAgICAgICAgICAg
dGVzdEV4cGVjdGVkKCJ2aWRlby50ZXh0VHJhY2tzLmxlbmd0aCIsIDkpOworCisgICAgICAgICAg
ICAgICAgLy8gQ2xpY2sgdGhlIENDIGJ1dHRvbiB0byBzaG93IHRoZSBtZW51IGJlY2F1c2UgaXQg
aXNuJ3QgY3JlYXRlZCB1bnRpbCBpdCBiZWNvbWVzIHZpc2libGUuCisgICAgICAgICAgICAgICAg
Y2xpY2tDQ0J1dHRvbigpOworCisgICAgICAgICAgICAgICAgdHJhY2tNZW51SXRlbXMgPSBjYXB0
aW9uVHJhY2tNZW51TGlzdCgpOworICAgICAgICAgICAgICAgIGlmICghdHJhY2tNZW51SXRlbXMp
IHsKKyAgICAgICAgICAgICAgICAgICAgZmFpbFRlc3QoIkZhaWxlZCB0byBmaW5kIHRyYWNrIG1l
bnUhIik7CisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJ0cmFja01lbnVJdGVtcy5sZW5ndGgiLCAxMSk7
CisKKyAgICAgICAgICAgICAgICBjb25zb2xlV3JpdGUoIjxicj48aT4qKiBObyB0cmFjayBzaG91
bGQgYmUgZW5hYmxlZCBieSBkZWZhdWx0PCIgKyAiL2k+Iik7CisgICAgICAgICAgICAgICAgdGVz
dEV4cGVjdGVkKCJ2aWRlby50ZXh0VHJhY2tzWzBdLmxhbmd1YWdlIiwgImVuIik7CisgICAgICAg
ICAgICAgICAgdGVzdEV4cGVjdGVkKCJ2aWRlby50ZXh0VHJhY2tzWzBdLmtpbmQiLCAic3VidGl0
bGVzIik7CisgICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJ2aWRlby50ZXh0VHJhY2tzWzBd
Lm1vZGUiLCAiZGlzYWJsZWQiKTsKKyAgICAgICAgICAgICAgICBjb25zb2xlV3JpdGUoIiIpOwor
CisgICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJ2aWRlby50ZXh0VHJhY2tzWzFdLmxhbmd1
YWdlIiwgImVuIik7CisgICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJ2aWRlby50ZXh0VHJh
Y2tzWzFdLmtpbmQiLCAic3VidGl0bGVzIik7CisgICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVk
KCJ2aWRlby50ZXh0VHJhY2tzWzFdLm1vZGUiLCAiZGlzYWJsZWQiKTsKKyAgICAgICAgICAgICAg
ICBjb25zb2xlV3JpdGUoIiIpOworCisgICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJ2aWRl
by50ZXh0VHJhY2tzWzJdLmxhbmd1YWdlIiwgImZyIik7CisgICAgICAgICAgICAgICAgdGVzdEV4
cGVjdGVkKCJ2aWRlby50ZXh0VHJhY2tzWzJdLmtpbmQiLCAic3VidGl0bGVzIik7CisgICAgICAg
ICAgICAgICAgdGVzdEV4cGVjdGVkKCJ2aWRlby50ZXh0VHJhY2tzWzJdLm1vZGUiLCAiZGlzYWJs
ZWQiKTsKKyAgICAgICAgICAgICAgICBjb25zb2xlV3JpdGUoIiIpOworCisgICAgICAgICAgICAg
ICAgdGVzdEV4cGVjdGVkKCJ2aWRlby50ZXh0VHJhY2tzWzNdLmxhbmd1YWdlIiwgImZyIik7Cisg
ICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJ2aWRlby50ZXh0VHJhY2tzWzNdLmtpbmQiLCAi
c3VidGl0bGVzIik7CisgICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJ2aWRlby50ZXh0VHJh
Y2tzWzNdLm1vZGUiLCAiZGlzYWJsZWQiKTsKKyAgICAgICAgICAgICAgICBjb25zb2xlV3JpdGUo
IiIpOworCisgICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJ2aWRlby50ZXh0VHJhY2tzWzRd
Lmxhbmd1YWdlIiwgImVzIik7CisgICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJ2aWRlby50
ZXh0VHJhY2tzWzRdLmtpbmQiLCAic3VidGl0bGVzIik7CisgICAgICAgICAgICAgICAgdGVzdEV4
cGVjdGVkKCJ2aWRlby50ZXh0VHJhY2tzWzRdLm1vZGUiLCAiZGlzYWJsZWQiKTsKKyAgICAgICAg
ICAgICAgICBjb25zb2xlV3JpdGUoIiIpOworCisgICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVk
KCJ2aWRlby50ZXh0VHJhY2tzWzVdLmxhbmd1YWdlIiwgImVzIik7CisgICAgICAgICAgICAgICAg
dGVzdEV4cGVjdGVkKCJ2aWRlby50ZXh0VHJhY2tzWzVdLmtpbmQiLCAic3VidGl0bGVzIik7Cisg
ICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJ2aWRlby50ZXh0VHJhY2tzWzVdLm1vZGUiLCAi
ZGlzYWJsZWQiKTsKKyAgICAgICAgICAgICAgICBjb25zb2xlV3JpdGUoIiIpOworCisgICAgICAg
ICAgICAgICAgdGVzdEV4cGVjdGVkKCJ2aWRlby50ZXh0VHJhY2tzWzZdLmxhbmd1YWdlIiwgImRl
Iik7CisgICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJ2aWRlby50ZXh0VHJhY2tzWzZdLmtp
bmQiLCAic3VidGl0bGVzIik7CisgICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJ2aWRlby50
ZXh0VHJhY2tzWzZdLm1vZGUiLCAiZGlzYWJsZWQiKTsKKyAgICAgICAgICAgICAgICBjb25zb2xl
V3JpdGUoIiIpOworCisgICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJ2aWRlby50ZXh0VHJh
Y2tzWzddLmxhbmd1YWdlIiwgImRlIik7CisgICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJ2
aWRlby50ZXh0VHJhY2tzWzddLmtpbmQiLCAic3VidGl0bGVzIik7CisgICAgICAgICAgICAgICAg
dGVzdEV4cGVjdGVkKCJ2aWRlby50ZXh0VHJhY2tzWzddLm1vZGUiLCAiZGlzYWJsZWQiKTsKKyAg
ICAgICAgICAgICAgICBjb25zb2xlV3JpdGUoIiIpOworCisgICAgICAgICAgICAgICAgdGVzdEV4
cGVjdGVkKCJ2aWRlby50ZXh0VHJhY2tzWzhdLmxhbmd1YWdlIiwgImVuIik7CisgICAgICAgICAg
ICAgICAgdGVzdEV4cGVjdGVkKCJ2aWRlby50ZXh0VHJhY2tzWzhdLmtpbmQiLCAiY2FwdGlvbnMi
KTsKKyAgICAgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoInZpZGVvLnRleHRUcmFja3NbOF0ubW9k
ZSIsICJkaXNhYmxlZCIpOworICAgICAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiIik7CisKKyAg
ICAgICAgICAgICAgICBlbmRUZXN0KCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZ1
bmN0aW9uIHNldHVwKCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBmaW5kTWVkaWFF
bGVtZW50KCk7CisgICAgICAgICAgICAgICAgcnVuKCJpbnRlcm5hbHMuc2V0VXNlclByZWZlcnJl
ZExhbmd1YWdlcyhbJ2VuJ10pIik7CisgICAgICAgICAgICAgICAgcnVuKCJpbnRlcm5hbHMuc2V0
UHJpbWFyeUF1ZGlvVHJhY2tMYW5ndWFnZU92ZXJyaWRlKCdmcicpIik7CisgICAgICAgICAgICAg
ICAgcnVuKCJpbnRlcm5hbHMuc2V0Q2FwdGlvbkRpc3BsYXlNb2RlKCdtYW51YWwnKSIpOworICAg
ICAgICAgICAgICAgIHZpZGVvLnNyYyA9ICcuLi9jb250ZW50L0NDK1N1YnRpdGxlcy5tb3YnOwor
CisgICAgICAgICAgICAgICAgd2FpdEZvckV2ZW50KCdjYW5wbGF5dGhyb3VnaCcsIHRlc3RUcmFj
a3MpOworICAgICAgICAgICAgfQorCisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAg
ICA8Ym9keSBvbmxvYWQ9InNldHVwKCkiPgorICAgICAgICA8cD5UZXN0cyAnbWFudWFsJyBjYXB0
aW9uIG1vZGUuPC9wPgorICAgICAgICA8dmlkZW8gd2lkdGg9IjY0MCIgaGVpZ2h0PSIzNjAiIGNv
bnRyb2xzPgorICAgICAgICA8L3ZpZGVvPgorICAgIDwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>270486</attachid>
            <date>2016-02-02 07:47:33 -0800</date>
            <delta_ts>2016-02-02 07:47:33 -0800</delta_ts>
            <desc>Patch for landing.</desc>
            <filename>patch_6.txt</filename>
            <type>text/plain</type>
            <size>29029</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5NTk4MCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU2IEBACisyMDE2LTAyLTAyICBFcmljIENh
cmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIEFsbG93IHBvcnRzIHRv
IGRpc2FibGUgYXV0b21hdGljIHRleHQgdHJhY2sgc2VsZWN0aW9uCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTM3NjEKKyAgICAgICAgPHJkYXI6Ly9w
cm9ibGVtLzI0NDE2NzY4PgorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisg
ICAgICAgIFRlc3Q6IG1lZGlhL3RyYWNrL3RyYWNrLW1hbnVhbC1tb2RlLmh0bWwKKworICAgICAg
ICAqIE1vZHVsZXMvbWVkaWFjb250cm9scy9NZWRpYUNvbnRyb2xzSG9zdC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYUNvbnRyb2xzSG9zdDo6bWFudWFsS2V5d29yZCk6IE5ldy4KKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbHNIb3N0OjpjYXB0aW9uRGlzcGxheU1vZGUpOiBTdXBw
b3J0ICdtYW51YWwnIG1vZGUuCisgICAgICAgICogTW9kdWxlcy9tZWRpYWNvbnRyb2xzL01lZGlh
Q29udHJvbHNIb3N0Lmg6CisKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhY29udHJvbHMvbWVkaWFD
b250cm9sc0FwcGxlLmpzOgorICAgICAgICAoQ29udHJvbGxlci5wcm90b3R5cGUuYnVpbGRDYXB0
aW9uTWVudSk6IENoZWNrIHRoZSAnb2ZmJyBpdGVtIHdoZW4gaW4gbWFudWFsIG1vZGUuCisKKyAg
ICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TE1lZGlhRWxlbWVudDo6YWRkVGV4dFRyYWNrKTogVXBkYXRlIG1fY2FwdGlvbkRpc3BsYXlNb2Rl
IHdoZW4gY2FsbGVkIGZvciB0aGUgZmlyc3QKKyAgICAgICAgICB0aW1lIHNvIGl0IGlzIGFsd2F5
cyBjb3JyZWN0LiBTZXQgdGhlIHRyYWNrJ3MgbWFudWFsIHNlbGVjdGlvbiBtb2RlIGFzIGFwcHJv
cHJpYXRlLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6Y2FwdGlvblByZWZl
cmVuY2VzQ2hhbmdlZCk6IFNldCBlYWNoIHRyYWNrJ3MgbWFudWFsIHNlbGVjdGlvbiAKKyAgICAg
ICAgICBtb2RlIGFzIGFwcHJvcHJpYXRlLgorCisgICAgICAgICogaHRtbC90cmFjay9UZXh0VHJh
Y2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrOjpraW5kKTogUmV0dXJuICdzdWJ0
aXRsZXMnIGZvciBmb3JjZWQgdHJhY2tzIHdoZW4gaW4gbWFudWFsIG1vZGUuCisgICAgICAgICog
aHRtbC90cmFjay9UZXh0VHJhY2suaDoKKworICAgICAgICAqIGh0bWwvdHJhY2svVHJhY2tCYXNl
Lmg6CisgICAgICAgIChXZWJDb3JlOjpUcmFja0Jhc2U6OmtpbmQpOiBNYWtlIHZpcnR1YWwuCisK
KyAgICAgICAgKiBwYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXMuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q2FwdGlvblVzZXJQcmVmZXJlbmNlczo6YmVnaW5CbG9ja2luZ05vdGlmaWNhdGlvbnMp
OiBOZXcuCisgICAgICAgIChXZWJDb3JlOjpDYXB0aW9uVXNlclByZWZlcmVuY2VzOjplbmRCbG9j
a2luZ05vdGlmaWNhdGlvbnMpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkNhcHRpb25Vc2Vy
UHJlZmVyZW5jZXM6Om5vdGlmeSk6IERvbid0IG5vdGlmeSB3aGVuIGJsb2NrZWQuCisgICAgICAg
ICogcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzLmg6CisKKyAgICAgICAgKiBwYWdlL0NhcHRp
b25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhcHRpb25V
c2VyUHJlZmVyZW5jZXNNZWRpYUFGOjpDYXB0aW9uVXNlclByZWZlcmVuY2VzTWVkaWFBRik6IFNl
dCBtYW51YWwgbW9kZSAKKyAgICAgICAgICB3aGVuIGFwcHJvcHJpYXRlLgorICAgICAgICAoV2Vi
Q29yZTo6Q2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUY6OmNhcHRpb25EaXNwbGF5TW9kZSk6
IENoZWNrIG1hbnVhbCBtb2RlLgorICAgICAgICAoV2ViQ29yZTo6Q2FwdGlvblVzZXJQcmVmZXJl
bmNlc01lZGlhQUY6OnNldENhcHRpb25EaXNwbGF5TW9kZSk6IERpdHRvLgorICAgICAgICAoV2Vi
Q29yZTo6Q2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUY6OnNldFByZWZlcnJlZExhbmd1YWdl
KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpDYXB0aW9uVXNlclByZWZlcmVuY2VzTWVkaWFB
Rjo6dGV4dFRyYWNrU2VsZWN0aW9uU2NvcmUpOiBSZXR1cm4gemVybyB3aGVuIGluIG1hbnVhbCBt
b2RlLgorICAgICAgICAoV2ViQ29yZTo6Q2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUY6OnNv
cnRlZFRyYWNrTGlzdEZvck1lbnUpOiBDb25zaWRlciBtYW51YWwgbW9kZS4gRml4CisgICAgICAg
ICAgdHlwb3MgaW4gbG9nZ2luZy4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW06CisgICAg
ICAgIChXZWJDb3JlOjptZWRpYURlc2NyaXB0aW9uRm9yS2luZCk6IFJldHVybiAnYXV4aWxpYXJ5
JyB3aGVuIGluIG1hbnVhbCBtb2RlLgorCisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpzZXRDYXB0aW9uRGlzcGxheU1vZGUpOiBT
dXBwb3J0IG1hbnVhbCBtb2RlLgorCiAyMDE2LTAyLTAxICBUaW0gSG9ydG9uICA8dGltb3RoeV9o
b3J0b25AYXBwbGUuY29tPgogCiAgICAgICAgIE1vdmUgc29tZSBTUEkgZGVjbGFyYXRpb25zIGlu
dG8gdGhlIGFwcHJvcHJpYXRlIFNQSSBoZWFkZXIKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFjb250cm9scy9NZWRpYUNvbnRyb2xzSG9zdC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYWNvbnRyb2xzL01lZGlhQ29udHJvbHNIb3N0LmNwcAko
cmV2aXNpb24gMTk1OTU5KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYWNvbnRyb2xz
L01lZGlhQ29udHJvbHNIb3N0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjEsNiArNjEsMTMgQEAg
Y29uc3QgQXRvbWljU3RyaW5nJiBNZWRpYUNvbnRyb2xzSG9zdDo6YQogICAgIHJldHVybiBhbHdh
eXNPbjsKIH0KIAorY29uc3QgQXRvbWljU3RyaW5nJiBNZWRpYUNvbnRyb2xzSG9zdDo6bWFudWFs
S2V5d29yZCgpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21pY1N0cmlu
Zz4gYWx3YXlzT24oIm1hbnVhbCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwp
OworICAgIHJldHVybiBhbHdheXNPbjsKK30KKworCiBSZWY8TWVkaWFDb250cm9sc0hvc3Q+IE1l
ZGlhQ29udHJvbHNIb3N0OjpjcmVhdGUoSFRNTE1lZGlhRWxlbWVudCogbWVkaWFFbGVtZW50KQog
ewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1lZGlhQ29udHJvbHNIb3N0KG1lZGlhRWxlbWVu
dCkpOwpAQCAtMTUxLDYgKzE1OCw4IEBAIEF0b21pY1N0cmluZyBNZWRpYUNvbnRyb2xzSG9zdDo6
Y2FwdGlvbkQKICAgICAgICAgcmV0dXJuIGZvcmNlZE9ubHlLZXl3b3JkKCk7CiAgICAgY2FzZSBD
YXB0aW9uVXNlclByZWZlcmVuY2VzOjpBbHdheXNPbjoKICAgICAgICAgcmV0dXJuIGFsd2F5c09u
S2V5d29yZCgpOworICAgIGNhc2UgQ2FwdGlvblVzZXJQcmVmZXJlbmNlczo6TWFudWFsOgorICAg
ICAgICByZXR1cm4gbWFudWFsS2V5d29yZCgpOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm4gZW1wdHlBdG9tOwpJbmRleDogU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYWNvbnRyb2xzL01lZGlhQ29udHJvbHNIb3N0LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYWNvbnRyb2xzL01lZGlhQ29udHJv
bHNIb3N0LmgJKHJldmlzaW9uIDE5NTk1OSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFjb250cm9scy9NZWRpYUNvbnRyb2xzSG9zdC5oCSh3b3JraW5nIGNvcHkpCkBAIC01Miw2ICs1
Miw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBhdXRvbWF0aWNL
ZXl3b3JkKCk7CiAgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgZm9yY2VkT25seUtleXdv
cmQoKTsKICAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBhbHdheXNPbktleXdvcmQoKTsK
KyAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBtYW51YWxLZXl3b3JkKCk7CiAKICAgICBW
ZWN0b3I8UmVmUHRyPFRleHRUcmFjaz4+IHNvcnRlZFRyYWNrTGlzdEZvck1lbnUoVGV4dFRyYWNr
TGlzdCopOwogICAgIFZlY3RvcjxSZWZQdHI8QXVkaW9UcmFjaz4+IHNvcnRlZFRyYWNrTGlzdEZv
ck1lbnUoQXVkaW9UcmFja0xpc3QqKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFjb250cm9scy9tZWRpYUNvbnRyb2xzQXBwbGUuanMKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYWNvbnRyb2xzL21lZGlhQ29udHJvbHNBcHBsZS5qcwkocmV2aXNp
b24gMTk1OTU5KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYWNvbnRyb2xzL21lZGlh
Q29udHJvbHNBcHBsZS5qcwkod29ya2luZyBjb3B5KQpAQCAtMTgzNiw3ICsxODM2LDcgQEAgQ29u
dHJvbGxlci5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgaWYg
KG9mZk1lbnUgJiYgZGlzcGxheU1vZGUgPT09ICdmb3JjZWQtb25seScgJiYgIXRyYWNrTWVudUl0
ZW1TZWxlY3RlZCkgeworICAgICAgICAgICAgaWYgKG9mZk1lbnUgJiYgKGRpc3BsYXlNb2RlID09
PSAnZm9yY2VkLW9ubHknIHx8IGRpc3BsYXlNb2RlID09PSAnbWFudWFsJykgJiYgIXRyYWNrTWVu
dUl0ZW1TZWxlY3RlZCkgewogICAgICAgICAgICAgICAgIG9mZk1lbnUuY2xhc3NMaXN0LmFkZCh0
aGlzLkNsYXNzTmFtZXMuc2VsZWN0ZWQpOwogICAgICAgICAgICAgICAgIG9mZk1lbnUuc2V0QXR0
cmlidXRlKCd0YWJpbmRleCcsICcwJyk7CiAgICAgICAgICAgICAgICAgb2ZmTWVudS5zZXRBdHRy
aWJ1dGUoJ2FyaWEtY2hlY2tlZCcsICd0cnVlJyk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxNZWRpYUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE1lZGlhRWxlbWVudC5jcHAJKHJldmlzaW9uIDE5NTk1OSkKKysrIFNvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1NzYsOSArMzU3
NiwxMyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmFkZFRleHRUcmFjayhQYXNzCiAKICAgICBp
ZiAoIW1fcmVxdWlyZUNhcHRpb25QcmVmZXJlbmNlc0NoYW5nZWRDYWxsYmFja3MpIHsKICAgICAg
ICAgbV9yZXF1aXJlQ2FwdGlvblByZWZlcmVuY2VzQ2hhbmdlZENhbGxiYWNrcyA9IHRydWU7Ci0g
ICAgICAgIGRvY3VtZW50KCkucmVnaXN0ZXJGb3JDYXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2VkQ2Fs
bGJhY2tzKHRoaXMpOworICAgICAgICBEb2N1bWVudCYgZG9jdW1lbnQgPSB0aGlzLT5kb2N1bWVu
dCgpOworICAgICAgICBkb2N1bWVudC5yZWdpc3RlckZvckNhcHRpb25QcmVmZXJlbmNlc0NoYW5n
ZWRDYWxsYmFja3ModGhpcyk7CisgICAgICAgIGlmIChQYWdlKiBwYWdlID0gZG9jdW1lbnQucGFn
ZSgpKQorICAgICAgICAgICAgbV9jYXB0aW9uRGlzcGxheU1vZGUgPSBwYWdlLT5ncm91cCgpLmNh
cHRpb25QcmVmZXJlbmNlcygpLT5jYXB0aW9uRGlzcGxheU1vZGUoKTsKICAgICB9CiAKKyAgICB0
cmFjay0+c2V0TWFudWFsU2VsZWN0aW9uTW9kZShtX2NhcHRpb25EaXNwbGF5TW9kZSA9PSBDYXB0
aW9uVXNlclByZWZlcmVuY2VzOjpNYW51YWwpOwogICAgIHRleHRUcmFja3MoKS0+YXBwZW5kKHRy
YWNrKTsKIAogICAgIGNsb3NlQ2FwdGlvblRyYWNrc0NoYW5nZWQoKTsKQEAgLTU3MjMsNiArNTcy
NywxMSBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmNhcHRpb25QcmVmZXJlbmNlCiAgICAgaWYg
KG1fY2FwdGlvbkRpc3BsYXlNb2RlID09IGRpc3BsYXlNb2RlKQogICAgICAgICByZXR1cm47CiAK
KyAgICBpZiAobV9jYXB0aW9uRGlzcGxheU1vZGUgPT0gQ2FwdGlvblVzZXJQcmVmZXJlbmNlczo6
TWFudWFsIHx8IGRpc3BsYXlNb2RlID09IENhcHRpb25Vc2VyUHJlZmVyZW5jZXM6Ok1hbnVhbCkg
eworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV90ZXh0VHJhY2tzLT5sZW5ndGgo
KTsgKytpKQorICAgICAgICAgICAgbV90ZXh0VHJhY2tzLT5pdGVtKGkpLT5zZXRNYW51YWxTZWxl
Y3Rpb25Nb2RlKGRpc3BsYXlNb2RlID09IENhcHRpb25Vc2VyUHJlZmVyZW5jZXM6Ok1hbnVhbCk7
CisgICAgfQorCiAgICAgbV9jYXB0aW9uRGlzcGxheU1vZGUgPSBkaXNwbGF5TW9kZTsKICAgICBz
ZXRXZWJraXRDbG9zZWRDYXB0aW9uc1Zpc2libGUobV9jYXB0aW9uRGlzcGxheU1vZGUgPT0gQ2Fw
dGlvblVzZXJQcmVmZXJlbmNlczo6QWx3YXlzT24pOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUv
aHRtbC90cmFjay9UZXh0VHJhY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0
bWwvdHJhY2svVGV4dFRyYWNrLmNwcAkocmV2aXNpb24gMTk1OTU5KQorKysgU291cmNlL1dlYkNv
cmUvaHRtbC90cmFjay9UZXh0VHJhY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzMsNiArMTcz
LDE1IEBAIGJvb2wgVGV4dFRyYWNrOjppc1ZhbGlkS2luZEtleXdvcmQoY29uc3QKICAgICByZXR1
cm4gZmFsc2U7CiB9CiAKK0F0b21pY1N0cmluZyBUZXh0VHJhY2s6OmtpbmQoKSBjb25zdAorewor
ICAgIEF0b21pY1N0cmluZyBraW5kID0gVHJhY2tCYXNlOjpraW5kKCk7CisgICAgaWYgKCFtX21h
bnVhbFNlbGVjdGlvbk1vZGUgfHwga2luZCAhPSBmb3JjZWRLZXl3b3JkKCkpCisgICAgICAgIHJl
dHVybiBraW5kOworCisgICAgcmV0dXJuIHN1YnRpdGxlc0tleXdvcmQoKTsKK30KKwogdm9pZCBU
ZXh0VHJhY2s6OnNldEtpbmQoY29uc3QgQXRvbWljU3RyaW5nJiBuZXdLaW5kKQogewogICAgIFN0
cmluZyBvbGRLaW5kID0ga2luZCgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9U
ZXh0VHJhY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRU
cmFjay5oCShyZXZpc2lvbiAxOTU5NTkpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1Rl
eHRUcmFjay5oCSh3b3JraW5nIGNvcHkpCkBAIC04Miw3ICs4Miw4IEBAIHB1YmxpYzoKICAgICBz
dGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBoaWRkZW5LZXl3b3JkKCk7CiAgICAgc3RhdGljIGNv
bnN0IEF0b21pY1N0cmluZyYgc2hvd2luZ0tleXdvcmQoKTsKIAotICAgIHZpcnR1YWwgdm9pZCBz
ZXRLaW5kKGNvbnN0IEF0b21pY1N0cmluZyYpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0S2luZChj
b25zdCBBdG9taWNTdHJpbmcmKSBvdmVycmlkZTsKKyAgICBBdG9taWNTdHJpbmcga2luZCgpIGNv
bnN0IG92ZXJyaWRlOwogCiAgICAgdmlydHVhbCBBdG9taWNTdHJpbmcgaW5CYW5kTWV0YWRhdGFU
cmFja0Rpc3BhdGNoVHlwZSgpIGNvbnN0IHsgcmV0dXJuIGVtcHR5U3RyaW5nKCk7IH0KIApAQCAt
MTQyLDYgKzE0Myw4IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgTWVkaWFUaW1lIHN0YXJ0VGlt
ZVZhcmlhbmNlKCkgY29uc3QgeyByZXR1cm4gTWVkaWFUaW1lOjp6ZXJvVGltZSgpOyB9CiAKKyAg
ICB2b2lkIHNldE1hbnVhbFNlbGVjdGlvbk1vZGUoYm9vbCBtb2RlKSB7IG1fbWFudWFsU2VsZWN0
aW9uTW9kZSA9IG1vZGU7IH0KKwogICAgIHVzaW5nIFJlZkNvdW50ZWQ8VHJhY2tCYXNlPjo6cmVm
OwogICAgIHVzaW5nIFJlZkNvdW50ZWQ8VHJhY2tCYXNlPjo6ZGVyZWY7CiAKQEAgLTE3MSw2ICsx
NzQsNyBAQCBwcml2YXRlOgogICAgIGludCBtX3RyYWNrSW5kZXg7CiAgICAgaW50IG1fcmVuZGVy
ZWRUcmFja0luZGV4OwogICAgIGJvb2wgbV9oYXNCZWVuQ29uZmlndXJlZDsKKyAgICBib29sIG1f
bWFudWFsU2VsZWN0aW9uTW9kZSB7IGZhbHNlIH07CiB9OwogCiBpbmxpbmUgVGV4dFRyYWNrKiB0
b1RleHRUcmFjayhUcmFja0Jhc2UqIHRyYWNrKQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC90
cmFjay9UcmFja0Jhc2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNr
L1RyYWNrQmFzZS5oCShyZXZpc2lvbiAxOTU5NTkpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL3Ry
YWNrL1RyYWNrQmFzZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01MSw3ICs1MSw3IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIEF0b21pY1N0cmluZyBpZCgpIGNvbnN0IHsgcmV0dXJuIG1faWQ7IH0KICAg
ICB2aXJ0dWFsIHZvaWQgc2V0SWQoY29uc3QgQXRvbWljU3RyaW5nJiBpZCkgeyBtX2lkID0gaWQ7
IH0KIAotICAgIEF0b21pY1N0cmluZyBraW5kKCkgY29uc3QgeyByZXR1cm4gbV9raW5kOyB9Cisg
ICAgdmlydHVhbCBBdG9taWNTdHJpbmcga2luZCgpIGNvbnN0IHsgcmV0dXJuIG1fa2luZDsgfQog
ICAgIHZpcnR1YWwgdm9pZCBzZXRLaW5kKGNvbnN0IEF0b21pY1N0cmluZyYpOwogCiAgICAgQXRv
bWljU3RyaW5nIGxhYmVsKCkgY29uc3QgeyByZXR1cm4gbV9sYWJlbDsgfQpJbmRleDogU291cmNl
L1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXMuY3BwCShyZXZpc2lvbiAx
OTU5NTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXMuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC02Miw4ICs2MiwyMiBAQCB2b2lkIENhcHRpb25Vc2VyUHJlZmVy
ZW5jZXM6OnRpbWVyRmlyZWQoCiAgICAgY2FwdGlvblByZWZlcmVuY2VzQ2hhbmdlZCgpOwogfQog
Cit2b2lkIENhcHRpb25Vc2VyUHJlZmVyZW5jZXM6OmJlZ2luQmxvY2tpbmdOb3RpZmljYXRpb25z
KCkKK3sKKyAgICArK21fYmxvY2tOb3RpZmljYXRpb25zQ291bnRlcjsKK30KKwordm9pZCBDYXB0
aW9uVXNlclByZWZlcmVuY2VzOjplbmRCbG9ja2luZ05vdGlmaWNhdGlvbnMoKQoreworICAgIEFT
U0VSVChtX2Jsb2NrTm90aWZpY2F0aW9uc0NvdW50ZXIpOworICAgIC0tbV9ibG9ja05vdGlmaWNh
dGlvbnNDb3VudGVyOworfQorCiB2b2lkIENhcHRpb25Vc2VyUHJlZmVyZW5jZXM6Om5vdGlmeSgp
CiB7CisgICAgaWYgKG1fYmxvY2tOb3RpZmljYXRpb25zQ291bnRlcikKKyAgICAgICAgcmV0dXJu
OworCiAgICAgbV9oYXZlUHJlZmVyZW5jZXMgPSB0cnVlOwogICAgIGlmICghbV90aW1lci5pc0Fj
dGl2ZSgpKQogICAgICAgICBtX3RpbWVyLnN0YXJ0T25lU2hvdCgwKTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlcy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BhZ2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlcy5oCShyZXZpc2lvbiAxOTU5NTkp
CisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXMuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNTAsNyArNTAsOCBAQCBwdWJsaWM6CiAgICAgZW51bSBDYXB0aW9uRGlzcGxh
eU1vZGUgewogICAgICAgICBBdXRvbWF0aWMsCiAgICAgICAgIEZvcmNlZE9ubHksCi0gICAgICAg
IEFsd2F5c09uCisgICAgICAgIEFsd2F5c09uLAorICAgICAgICBNYW51YWwsCiAgICAgfTsKICAg
ICB2aXJ0dWFsIENhcHRpb25EaXNwbGF5TW9kZSBjYXB0aW9uRGlzcGxheU1vZGUoKSBjb25zdDsK
ICAgICB2aXJ0dWFsIHZvaWQgc2V0Q2FwdGlvbkRpc3BsYXlNb2RlKENhcHRpb25EaXNwbGF5TW9k
ZSk7CkBAIC05OCwxOCArOTksMjEgQEAgcHVibGljOgogCiBwcm90ZWN0ZWQ6CiAgICAgdm9pZCB1
cGRhdGVDYXB0aW9uU3R5bGVTaGVldE92ZXJpZGUoKTsKKyAgICB2b2lkIGJlZ2luQmxvY2tpbmdO
b3RpZmljYXRpb25zKCk7CisgICAgdm9pZCBlbmRCbG9ja2luZ05vdGlmaWNhdGlvbnMoKTsKIAog
cHJpdmF0ZToKICAgICB2b2lkIHRpbWVyRmlyZWQoKTsKICAgICB2b2lkIG5vdGlmeSgpOwogCiAg
ICAgUGFnZUdyb3VwJiBtX3BhZ2VHcm91cDsKLSAgICBDYXB0aW9uRGlzcGxheU1vZGUgbV9kaXNw
bGF5TW9kZTsKKyAgICBtdXRhYmxlIENhcHRpb25EaXNwbGF5TW9kZSBtX2Rpc3BsYXlNb2RlOwog
ICAgIFRpbWVyIG1fdGltZXI7CiAgICAgU3RyaW5nIG1fdXNlclByZWZlcnJlZExhbmd1YWdlOwog
ICAgIFN0cmluZyBtX3VzZXJQcmVmZXJyZWRBdWRpb0NoYXJhY3RlcmlzdGljOwogICAgIFN0cmlu
ZyBtX2NhcHRpb25zU3R5bGVTaGVldE92ZXJyaWRlOwogICAgIFN0cmluZyBtX3ByaW1hcnlBdWRp
b1RyYWNrTGFuZ3VhZ2VPdmVycmlkZTsKKyAgICB1bnNpZ25lZCBtX2Jsb2NrTm90aWZpY2F0aW9u
c0NvdW50ZXIgeyAwIH07CiAgICAgYm9vbCBtX3Rlc3RpbmdNb2RlOwogICAgIGJvb2wgbV9oYXZl
UHJlZmVyZW5jZXM7CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNlclBy
ZWZlcmVuY2VzTWVkaWFBRi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9D
YXB0aW9uVXNlclByZWZlcmVuY2VzTWVkaWFBRi5jcHAJKHJldmlzaW9uIDE5NTk1OSkKKysrIFNv
dXJjZS9XZWJDb3JlL3BhZ2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUYuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC03NSw4ICs3NSwxOCBAQCBTT0ZUX0xJTktfQVZGX1BPSU5URVIoQ29yZVRl
eHQsIGtDVEZvbnROCiAjZGVmaW5lIGtDVEZvbnROYW1lQXR0cmlidXRlIGdldGtDVEZvbnROYW1l
QXR0cmlidXRlKCkKIAogI2RlZmluZSBDVEZvbnREZXNjcmlwdG9yQ29weUF0dHJpYnV0ZSBzb2Z0
TGlua19DVEZvbnREZXNjcmlwdG9yQ29weUF0dHJpYnV0ZQotI2VuZGlmCi0jZW5kaWYKKwordHlw
ZWRlZiBCb29sZWFuICgqTVRFbmFibGVDYXB0aW9uMjAxNUJlaGF2aW9yUHRyVHlwZSkgKCk7Citz
dGF0aWMgTVRFbmFibGVDYXB0aW9uMjAxNUJlaGF2aW9yUHRyVHlwZSBNVEVuYWJsZUNhcHRpb24y
MDE1QmVoYXZpb3JQdHIoKSB7IHJldHVybiBudWxscHRyOyB9CisKKyNlbHNlCisKK1NPRlRfTElO
S19GUkFNRVdPUksoTWVkaWFUb29sYm94KQorU09GVF9MSU5LX09QVElPTkFMKE1lZGlhVG9vbGJv
eCwgTVRFbmFibGVDYXB0aW9uMjAxNUJlaGF2aW9yLCBCb29sZWFuLCAoKSwgKCkpCisKKyNlbmRp
ZiAvLyBQTEFURk9STShXSU4pCisKKyNlbmRpZiAvLyBIQVZFKE1FRElBX0FDQ0VTU0lCSUxJVFlf
RlJBTUVXT1JLKQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTEwMCw2ICsxMTAsMjEgQEAg
Q2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUY6OkNhcHRpb25VcwogICAgICwgbV9saXN0ZW5p
bmdGb3JQcmVmZXJlbmNlQ2hhbmdlcyhmYWxzZSkKICNlbmRpZgogeworICAgIHN0YXRpYyBib29s
IGluaXRpYWxpemVkOworICAgIGlmICghaW5pdGlhbGl6ZWQpIHsKKyAgICAgICAgaW5pdGlhbGl6
ZWQgPSB0cnVlOworCisgICAgICAgIE1URW5hYmxlQ2FwdGlvbjIwMTVCZWhhdmlvclB0clR5cGUg
ZnVuY3Rpb24gPSBNVEVuYWJsZUNhcHRpb24yMDE1QmVoYXZpb3JQdHIoKTsKKyAgICAgICAgaWYg
KCFmdW5jdGlvbiB8fCAhZnVuY3Rpb24oKSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAg
ICBiZWdpbkJsb2NraW5nTm90aWZpY2F0aW9ucygpOworICAgICAgICBDYXB0aW9uVXNlclByZWZl
cmVuY2VzOjpzZXRDYXB0aW9uRGlzcGxheU1vZGUoTWFudWFsKTsKKyAgICAgICAgc2V0VXNlclBy
ZWZlcnNDYXB0aW9ucyhmYWxzZSk7CisgICAgICAgIHNldFVzZXJQcmVmZXJzU3VidGl0bGVzKGZh
bHNlKTsKKyAgICAgICAgc2V0VXNlclByZWZlcnNUZXh0RGVzY3JpcHRpb25zKGZhbHNlKTsKKyAg
ICAgICAgZW5kQmxvY2tpbmdOb3RpZmljYXRpb25zKCk7CisgICAgfQogfQogCiBDYXB0aW9uVXNl
clByZWZlcmVuY2VzTWVkaWFBRjo6fkNhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGKCkKQEAg
LTExNiw4ICsxNDEsOSBAQCBDYXB0aW9uVXNlclByZWZlcmVuY2VzTWVkaWFBRjo6fkNhcHRpb25V
CiAKIENhcHRpb25Vc2VyUHJlZmVyZW5jZXM6OkNhcHRpb25EaXNwbGF5TW9kZSBDYXB0aW9uVXNl
clByZWZlcmVuY2VzTWVkaWFBRjo6Y2FwdGlvbkRpc3BsYXlNb2RlKCkgY29uc3QKIHsKLSAgICBp
ZiAodGVzdGluZ01vZGUoKSB8fCAhTWVkaWFBY2Nlc3NpYmlsaXR5TGlicmFyeSgpKQotICAgICAg
ICByZXR1cm4gQ2FwdGlvblVzZXJQcmVmZXJlbmNlczo6Y2FwdGlvbkRpc3BsYXlNb2RlKCk7Cisg
ICAgQ2FwdGlvbkRpc3BsYXlNb2RlIGludGVybmFsTW9kZSA9IENhcHRpb25Vc2VyUHJlZmVyZW5j
ZXM6OmNhcHRpb25EaXNwbGF5TW9kZSgpOworICAgIGlmIChpbnRlcm5hbE1vZGUgPT0gTWFudWFs
IHx8IHRlc3RpbmdNb2RlKCkgfHwgIU1lZGlhQWNjZXNzaWJpbGl0eUxpYnJhcnkoKSkKKyAgICAg
ICAgcmV0dXJuIGludGVybmFsTW9kZTsKIAogICAgIE1BQ2FwdGlvbkFwcGVhcmFuY2VEaXNwbGF5
VHlwZSBkaXNwbGF5VHlwZSA9IE1BQ2FwdGlvbkFwcGVhcmFuY2VHZXREaXNwbGF5VHlwZShrTUFD
YXB0aW9uQXBwZWFyYW5jZURvbWFpblVzZXIpOwogICAgIHN3aXRjaCAoZGlzcGxheVR5cGUpIHsK
QEAgLTE0Miw2ICsxNjgsOSBAQCB2b2lkIENhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGOjpz
ZXRDCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKKyAgICBpZiAoY2FwdGlvbkRpc3BsYXlNb2Rl
KCkgPT0gTWFudWFsKQorICAgICAgICByZXR1cm47CisKICAgICBNQUNhcHRpb25BcHBlYXJhbmNl
RGlzcGxheVR5cGUgZGlzcGxheVR5cGUgPSBrTUFDYXB0aW9uQXBwZWFyYW5jZURpc3BsYXlUeXBl
Rm9yY2VkT25seTsKICAgICBzd2l0Y2ggKG1vZGUpIHsKICAgICBjYXNlIEF1dG9tYXRpYzoKQEAg
LTQzMiw2ICs0NjEsOSBAQCBmbG9hdCBDYXB0aW9uVXNlclByZWZlcmVuY2VzTWVkaWFBRjo6Y2Fw
CiAKIHZvaWQgQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUY6OnNldFByZWZlcnJlZExhbmd1
YWdlKGNvbnN0IFN0cmluZyYgbGFuZ3VhZ2UpCiB7CisgICAgaWYgKENhcHRpb25Vc2VyUHJlZmVy
ZW5jZXM6OmNhcHRpb25EaXNwbGF5TW9kZSgpID09IE1hbnVhbCkKKyAgICAgICAgcmV0dXJuOwor
CiAgICAgaWYgKHRlc3RpbmdNb2RlKCkgfHwgIU1lZGlhQWNjZXNzaWJpbGl0eUxpYnJhcnkoKSkg
ewogICAgICAgICBDYXB0aW9uVXNlclByZWZlcmVuY2VzOjpzZXRQcmVmZXJyZWRMYW5ndWFnZShs
YW5ndWFnZSk7CiAgICAgICAgIHJldHVybjsKQEAgLTY2MSw2ICs2OTMsOSBAQCBTdHJpbmcgQ2Fw
dGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUY6OmRpCiBpbnQgQ2FwdGlvblVzZXJQcmVmZXJlbmNl
c01lZGlhQUY6OnRleHRUcmFja1NlbGVjdGlvblNjb3JlKFRleHRUcmFjayogdHJhY2ssIEhUTUxN
ZWRpYUVsZW1lbnQqIG1lZGlhRWxlbWVudCkgY29uc3QKIHsKICAgICBDYXB0aW9uRGlzcGxheU1v
ZGUgZGlzcGxheU1vZGUgPSBjYXB0aW9uRGlzcGxheU1vZGUoKTsKKyAgICBpZiAoZGlzcGxheU1v
ZGUgPT0gTWFudWFsKQorICAgICAgICByZXR1cm4gMDsKKwogICAgIGJvb2wgbGVnYWN5T3ZlcnJp
ZGUgPSBtZWRpYUVsZW1lbnQtPndlYmtpdENsb3NlZENhcHRpb25zVmlzaWJsZSgpOwogICAgIGlm
IChkaXNwbGF5TW9kZSA9PSBBbHdheXNPbiAmJiAoIXVzZXJQcmVmZXJzU3VidGl0bGVzKCkgJiYg
IXVzZXJQcmVmZXJzQ2FwdGlvbnMoKSAmJiAhbGVnYWN5T3ZlcnJpZGUpKQogICAgICAgICByZXR1
cm4gMDsKQEAgLTgwNCw2ICs4MzksNyBAQCBWZWN0b3I8UmVmUHRyPFRleHRUcmFjaz4+IENhcHRp
b25Vc2VyUHJlCiAKICAgICBWZWN0b3I8UmVmUHRyPFRleHRUcmFjaz4+IHRyYWNrc0Zvck1lbnU7
CiAgICAgSGFzaFNldDxTdHJpbmc+IGxhbmd1YWdlc0luY2x1ZGVkOworICAgIENhcHRpb25EaXNw
bGF5TW9kZSBkaXNwbGF5TW9kZSA9IGNhcHRpb25EaXNwbGF5TW9kZSgpOwogICAgIGJvb2wgcHJl
ZmVyc0FjY2Vzc2liaWxpdHlUcmFja3MgPSB1c2VyUHJlZmVyc0NhcHRpb25zKCk7CiAgICAgYm9v
bCBmaWx0ZXJUcmFja0xpc3QgPSBzaG91bGRGaWx0ZXJUcmFja01lbnUoKTsKIApAQCAtODExLDE3
ICs4NDcsMjMgQEAgVmVjdG9yPFJlZlB0cjxUZXh0VHJhY2s+PiBDYXB0aW9uVXNlclByZQogICAg
ICAgICBUZXh0VHJhY2sqIHRyYWNrID0gdHJhY2tMaXN0LT5pdGVtKGkpOwogICAgICAgICBTdHJp
bmcgbGFuZ3VhZ2UgPSBkaXNwbGF5TmFtZUZvckxhbmd1YWdlTG9jYWxlKHRyYWNrLT5sYW5ndWFn
ZSgpKTsKIAorICAgICAgICBpZiAoZGlzcGxheU1vZGUgPT0gTWFudWFsKSB7CisgICAgICAgICAg
ICBMT0coTWVkaWEsICJDYXB0aW9uVXNlclByZWZlcmVuY2VzTWVkaWFBRjo6c29ydGVkVHJhY2tM
aXN0Rm9yTWVudSAtIGFkZGluZyAnJXMnIHRyYWNrIHdpdGggbGFuZ3VhZ2UgJyVzJyBiZWNhdXNl
IHNlbGVjdGlvbiBtb2RlIGlzICdtYW51YWwnIiwgdHJhY2stPmtpbmQoKS5zdHJpbmcoKS51dGY4
KCkuZGF0YSgpLCBsYW5ndWFnZS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgICAgIHRyYWNrc0Zv
ck1lbnUuYXBwZW5kKHRyYWNrKTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisK
ICAgICAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBraW5kID0gdHJhY2stPmtpbmQoKTsKICAgICAg
ICAgaWYgKGtpbmQgIT0gVGV4dFRyYWNrOjpjYXB0aW9uc0tleXdvcmQoKSAmJiBraW5kICE9IFRl
eHRUcmFjazo6ZGVzY3JpcHRpb25zS2V5d29yZCgpICYmIGtpbmQgIT0gVGV4dFRyYWNrOjpzdWJ0
aXRsZXNLZXl3b3JkKCkpCiAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICBpZiAodHJh
Y2stPmNvbnRhaW5zT25seUZvcmNlZFN1YnRpdGxlcygpKSB7Ci0gICAgICAgICAgICBMT0coTWVk
aWEsICJDYXB0aW9uVXNlclByZWZlcmVuY2VzTWFjOjpzb3J0ZWRUcmFja0xpc3RGb3JNZW51IC0g
c2tpcHBpbmcgJyVzJyB0cmFjayB3aXRoIGxhbmd1YWdlICclcycgYmVjYXVzZSBpdCBjb250YWlu
cyBvbmx5IGZvcmNlZCBzdWJ0aXRsZXMiLCB0cmFjay0+a2luZCgpLnN0cmluZygpLnV0ZjgoKS5k
YXRhKCksIGxhbmd1YWdlLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICAgICAgTE9HKE1lZGlhLCAi
Q2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUY6OnNvcnRlZFRyYWNrTGlzdEZvck1lbnUgLSBz
a2lwcGluZyAnJXMnIHRyYWNrIHdpdGggbGFuZ3VhZ2UgJyVzJyBiZWNhdXNlIGl0IGNvbnRhaW5z
IG9ubHkgZm9yY2VkIHN1YnRpdGxlcyIsIHRyYWNrLT5raW5kKCkuc3RyaW5nKCkudXRmOCgpLmRh
dGEoKSwgbGFuZ3VhZ2UudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgICAgICBjb250aW51ZTsKICAg
ICAgICAgfQogICAgICAgICAKICAgICAgICAgaWYgKHRyYWNrLT5pc0Vhc3lUb1JlYWQoKSkgewot
ICAgICAgICAgICAgTE9HKE1lZGlhLCAiQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01hYzo6c29ydGVk
VHJhY2tMaXN0Rm9yTWVudSAtIGFkZGluZyAnJXMnIHRyYWNrIHdpdGggbGFuZ3VhZ2UgJyVzJyBi
ZWNhdXNlIGl0IGlzICdlYXN5IHRvIHJlYWQnIiwgdHJhY2stPmtpbmQoKS5zdHJpbmcoKS51dGY4
KCkuZGF0YSgpLCBsYW5ndWFnZS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgICAgIExPRyhNZWRp
YSwgIkNhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGOjpzb3J0ZWRUcmFja0xpc3RGb3JNZW51
IC0gYWRkaW5nICclcycgdHJhY2sgd2l0aCBsYW5ndWFnZSAnJXMnIGJlY2F1c2UgaXQgaXMgJ2Vh
c3kgdG8gcmVhZCciLCB0cmFjay0+a2luZCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCksIGxhbmd1
YWdlLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICAgICAgaWYgKCFsYW5ndWFnZS5pc0VtcHR5KCkp
CiAgICAgICAgICAgICAgICAgbGFuZ3VhZ2VzSW5jbHVkZWQuYWRkKGxhbmd1YWdlKTsKICAgICAg
ICAgICAgIHRyYWNrc0Zvck1lbnUuYXBwZW5kKHRyYWNrKTsKQEAgLTgyOSw3ICs4NzEsNyBAQCBW
ZWN0b3I8UmVmUHRyPFRleHRUcmFjaz4+IENhcHRpb25Vc2VyUHJlCiAgICAgICAgIH0KIAogICAg
ICAgICBpZiAodHJhY2stPm1vZGUoKSA9PSBUZXh0VHJhY2s6OnNob3dpbmdLZXl3b3JkKCkpIHsK
LSAgICAgICAgICAgIExPRyhNZWRpYSwgIkNhcHRpb25Vc2VyUHJlZmVyZW5jZXNNYWM6OnNvcnRl
ZFRyYWNrTGlzdEZvck1lbnUgLSBhZGRpbmcgJyVzJyB0cmFjayB3aXRoIGxhbmd1YWdlICclcycg
YmVjYXVzZSBpdCBpcyBhbHJlYWR5IHZpc2libGUiLCB0cmFjay0+a2luZCgpLnN0cmluZygpLnV0
ZjgoKS5kYXRhKCksIGxhbmd1YWdlLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICAgICAgTE9HKE1l
ZGlhLCAiQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUY6OnNvcnRlZFRyYWNrTGlzdEZvck1l
bnUgLSBhZGRpbmcgJyVzJyB0cmFjayB3aXRoIGxhbmd1YWdlICclcycgYmVjYXVzZSBpdCBpcyBh
bHJlYWR5IHZpc2libGUiLCB0cmFjay0+a2luZCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCksIGxh
bmd1YWdlLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICAgICAgaWYgKCFsYW5ndWFnZS5pc0VtcHR5
KCkpCiAgICAgICAgICAgICAgICAgbGFuZ3VhZ2VzSW5jbHVkZWQuYWRkKGxhbmd1YWdlKTsKICAg
ICAgICAgICAgIHRyYWNrc0Zvck1lbnUuYXBwZW5kKHRyYWNrKTsKQEAgLTg2MSw3ICs5MDMsNyBA
QCBWZWN0b3I8UmVmUHRyPFRleHRUcmFjaz4+IENhcHRpb25Vc2VyUHJlCiAgICAgICAgICAgICBs
YW5ndWFnZXNJbmNsdWRlZC5hZGQobGFuZ3VhZ2UpOwogICAgICAgICB0cmFja3NGb3JNZW51LmFw
cGVuZCh0cmFjayk7CiAKLSAgICAgICAgTE9HKE1lZGlhLCAiQ2FwdGlvblVzZXJQcmVmZXJlbmNl
c01hYzo6c29ydGVkVHJhY2tMaXN0Rm9yTWVudSAtIGFkZGluZyAnJXMnIHRyYWNrIHdpdGggbGFu
Z3VhZ2UgJyVzJywgaXMlcyBtYWluIHByb2dyYW0gY29udGVudCIsIHRyYWNrLT5raW5kKCkuc3Ry
aW5nKCkudXRmOCgpLmRhdGEoKSwgbGFuZ3VhZ2UudXRmOCgpLmRhdGEoKSwgdHJhY2stPmlzTWFp
blByb2dyYW1Db250ZW50KCkgPyAiIiA6ICIgTk9UIik7CisgICAgICAgIExPRyhNZWRpYSwgIkNh
cHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGOjpzb3J0ZWRUcmFja0xpc3RGb3JNZW51IC0gYWRk
aW5nICclcycgdHJhY2sgd2l0aCBsYW5ndWFnZSAnJXMnLCBpcyVzIG1haW4gcHJvZ3JhbSBjb250
ZW50IiwgdHJhY2stPmtpbmQoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpLCBsYW5ndWFnZS51dGY4
KCkuZGF0YSgpLCB0cmFjay0+aXNNYWluUHJvZ3JhbUNvbnRlbnQoKSA/ICIiIDogIiBOT1QiKTsK
ICAgICB9CiAKICAgICAvLyBOb3cgdGhhdCB3ZSBoYXZlIGZpbHRlcmVkIGZvciB0aGUgdXNlcidz
IGFjY2Vzc2liaWxpdHkvdHJhbnNsYXRpb24gcHJlZmVyZW5jZSwgYWRkICBhbGwgdHJhY2tzIHdp
dGggYSB1bmlxdWUgbGFuZ3VhZ2Ugd2l0aG91dCByZWdhcmQgdG8gdHJhY2sgdHlwZS4KQEAgLTg2
OSw2ICs5MTEsOSBAQCBWZWN0b3I8UmVmUHRyPFRleHRUcmFjaz4+IENhcHRpb25Vc2VyUHJlCiAg
ICAgICAgIFRleHRUcmFjayogdHJhY2sgPSB0cmFja0xpc3QtPml0ZW0oaSk7CiAgICAgICAgIFN0
cmluZyBsYW5ndWFnZSA9IGRpc3BsYXlOYW1lRm9yTGFuZ3VhZ2VMb2NhbGUodHJhY2stPmxhbmd1
YWdlKCkpOwogCisgICAgICAgIGlmICh0cmFja3NGb3JNZW51LmNvbnRhaW5zKHRyYWNrKSkKKyAg
ICAgICAgICAgIGNvbnRpbnVlOworCiAgICAgICAgIGNvbnN0IEF0b21pY1N0cmluZyYga2luZCA9
IHRyYWNrLT5raW5kKCk7CiAgICAgICAgIGlmIChraW5kICE9IFRleHRUcmFjazo6Y2FwdGlvbnNL
ZXl3b3JkKCkgJiYga2luZCAhPSBUZXh0VHJhY2s6OmRlc2NyaXB0aW9uc0tleXdvcmQoKSAmJiBr
aW5kICE9IFRleHRUcmFjazo6c3VidGl0bGVzS2V5d29yZCgpKQogICAgICAgICAgICAgY29udGlu
dWU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0JKHJldmlzaW9uIDE5NTk1OSkKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxh
eWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0JKHdvcmtpbmcgY29weSkKQEAgLTI1NSw2ICsy
NTUsNyBAQCBTT0ZUX0xJTktfUE9JTlRFUihBVkZvdW5kYXRpb24sIEFWT3V0T2ZCCiBTT0ZUX0xJ
TktfUE9JTlRFUihBVkZvdW5kYXRpb24sIEFWT3V0T2ZCYW5kQWx0ZXJuYXRlVHJhY2tTb3VyY2VL
ZXksIE5TU3RyaW5nKikKIFNPRlRfTElOS19QT0lOVEVSKEFWRm91bmRhdGlvbiwgQVZNZWRpYUNo
YXJhY3RlcmlzdGljRGVzY3JpYmVzTXVzaWNBbmRTb3VuZEZvckFjY2Vzc2liaWxpdHksIE5TU3Ry
aW5nKikKIFNPRlRfTElOS19QT0lOVEVSKEFWRm91bmRhdGlvbiwgQVZNZWRpYUNoYXJhY3Rlcmlz
dGljVHJhbnNjcmliZXNTcG9rZW5EaWFsb2dGb3JBY2Nlc3NpYmlsaXR5LCBOU1N0cmluZyopCitT
T0ZUX0xJTktfUE9JTlRFUihBVkZvdW5kYXRpb24sIEFWTWVkaWFDaGFyYWN0ZXJpc3RpY0lzQXV4
aWxpYXJ5Q29udGVudCwgTlNTdHJpbmcqKQogCiAjZGVmaW5lIEFWVVJMQXNzZXRIVFRQQ29va2ll
c0tleSBnZXRBVlVSTEFzc2V0SFRUUENvb2tpZXNLZXkoKQogI2RlZmluZSBBVlVSTEFzc2V0T3V0
T2ZCYW5kQWx0ZXJuYXRlVHJhY2tzS2V5IGdldEFWVVJMQXNzZXRPdXRPZkJhbmRBbHRlcm5hdGVU
cmFja3NLZXkoKQpAQCAtMjY2LDYgKzI2Nyw3IEBAIFNPRlRfTElOS19QT0lOVEVSKEFWRm91bmRh
dGlvbiwgQVZNZWRpYUMKICNkZWZpbmUgQVZPdXRPZkJhbmRBbHRlcm5hdGVUcmFja1NvdXJjZUtl
eSBnZXRBVk91dE9mQmFuZEFsdGVybmF0ZVRyYWNrU291cmNlS2V5KCkKICNkZWZpbmUgQVZNZWRp
YUNoYXJhY3RlcmlzdGljRGVzY3JpYmVzTXVzaWNBbmRTb3VuZEZvckFjY2Vzc2liaWxpdHkgZ2V0
QVZNZWRpYUNoYXJhY3RlcmlzdGljRGVzY3JpYmVzTXVzaWNBbmRTb3VuZEZvckFjY2Vzc2liaWxp
dHkoKQogI2RlZmluZSBBVk1lZGlhQ2hhcmFjdGVyaXN0aWNUcmFuc2NyaWJlc1Nwb2tlbkRpYWxv
Z0ZvckFjY2Vzc2liaWxpdHkgZ2V0QVZNZWRpYUNoYXJhY3RlcmlzdGljVHJhbnNjcmliZXNTcG9r
ZW5EaWFsb2dGb3JBY2Nlc3NpYmlsaXR5KCkKKyNkZWZpbmUgQVZNZWRpYUNoYXJhY3RlcmlzdGlj
SXNBdXhpbGlhcnlDb250ZW50IGdldEFWTWVkaWFDaGFyYWN0ZXJpc3RpY0lzQXV4aWxpYXJ5Q29u
dGVudCgpCiAjZW5kaWYKIAogI2lmIEVOQUJMRShEQVRBQ1VFX1ZBTFVFKQpAQCAtMzA1LDYgKzMw
Nyw5IEBAIFNPRlRfTElOS19QT0lOVEVSKENvcmVWaWRlbywga0NWUGl4ZWxCdWYKICNkZWZpbmUg
a0NWUGl4ZWxCdWZmZXJJT1N1cmZhY2VPcGVuR0xGQk9Db21wYXRpYmlsaXR5S2V5IGdldGtDVlBp
eGVsQnVmZmVySU9TdXJmYWNlT3BlbkdMRkJPQ29tcGF0aWJpbGl0eUtleSgpCiAjZW5kaWYKIAor
U09GVF9MSU5LX0ZSQU1FV09SSyhNZWRpYVRvb2xib3gpCitTT0ZUX0xJTktfT1BUSU9OQUwoTWVk
aWFUb29sYm94LCBNVEVuYWJsZUNhcHRpb24yMDE1QmVoYXZpb3IsIEJvb2xlYW4sICgpLCAoKSkK
KwogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIGVudW0gTWVkaWFQbGF5ZXJBVkZvdW5kYXRp
b25PYnNlcnZhdGlvbkNvbnRleHQgewpAQCAtNzMyLDYgKzczNywxMCBAQCBib29sIE1lZGlhUGxh
eWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6CiAjaWYgRU5BQkxFKEFWRl9DQVBUSU9OUykKIHN0
YXRpYyBjb25zdCBOU0FycmF5KiBtZWRpYURlc2NyaXB0aW9uRm9yS2luZChQbGF0Zm9ybVRleHRU
cmFjazo6VHJhY2tLaW5kIGtpbmQpCiB7CisgICAgc3RhdGljIGJvb2wgbWFudWFsU2VsZWN0aW9u
TW9kZSA9IE1URW5hYmxlQ2FwdGlvbjIwMTVCZWhhdmlvclB0cigpICYmIE1URW5hYmxlQ2FwdGlv
bjIwMTVCZWhhdmlvclB0cigpKCk7CisgICAgaWYgKG1hbnVhbFNlbGVjdGlvbk1vZGUpCisgICAg
ICAgIHJldHVybiBAWyBBVk1lZGlhQ2hhcmFjdGVyaXN0aWNJc0F1eGlsaWFyeUNvbnRlbnQgXTsK
KwogICAgIC8vIEZJWE1FOiBNYXRjaCB0aGVzZSB0byBjb3JyZWN0IHR5cGVzOgogICAgIGlmIChr
aW5kID09IFBsYXRmb3JtVGV4dFRyYWNrOjpDYXB0aW9uKQogICAgICAgICByZXR1cm4gW05TQXJy
YXkgYXJyYXlXaXRoT2JqZWN0czogQVZNZWRpYUNoYXJhY3RlcmlzdGljVHJhbnNjcmliZXNTcG9r
ZW5EaWFsb2dGb3JBY2Nlc3NpYmlsaXR5LCBuaWxdOwpJbmRleDogU291cmNlL1dlYkNvcmUvdGVz
dGluZy9JbnRlcm5hbHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
SW50ZXJuYWxzLmNwcAkocmV2aXNpb24gMTk1OTU5KQorKysgU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9JbnRlcm5hbHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNzg0LDYgKzI3ODQsOCBAQCB2b2lk
IEludGVybmFsczo6c2V0Q2FwdGlvbkRpc3BsYXlNb2RlKGNvCiAgICAgICAgIGNhcHRpb25QcmVm
ZXJlbmNlcy0+c2V0Q2FwdGlvbkRpc3BsYXlNb2RlKENhcHRpb25Vc2VyUHJlZmVyZW5jZXM6OkZv
cmNlZE9ubHkpOwogICAgIGVsc2UgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKG1v
ZGUsICJhbHdheXNvbiIpKQogICAgICAgICBjYXB0aW9uUHJlZmVyZW5jZXMtPnNldENhcHRpb25E
aXNwbGF5TW9kZShDYXB0aW9uVXNlclByZWZlcmVuY2VzOjpBbHdheXNPbik7CisgICAgZWxzZSBp
ZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UobW9kZSwgIm1hbnVhbCIpKQorICAgICAg
ICBjYXB0aW9uUHJlZmVyZW5jZXMtPnNldENhcHRpb25EaXNwbGF5TW9kZShDYXB0aW9uVXNlclBy
ZWZlcmVuY2VzOjpNYW51YWwpOwogICAgIGVsc2UKICAgICAgICAgZWMgPSBTWU5UQVhfRVJSOwog
I2Vsc2UKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5NTk1OSkKKysrIExheW91dFRlc3RzL0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDE2LTAyLTAyICBFcmljIENhcmxz
b24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIEFsbG93IHBvcnRzIHRvIGRp
c2FibGUgYXV0b21hdGljIHRleHQgdHJhY2sgc2VsZWN0aW9uCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTM3NjEKKyAgICAgICAgPHJkYXI6Ly9wcm9i
bGVtLzI0NDE2NzY4PgorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAg
ICAgICogbWVkaWEvdHJhY2svdHJhY2stbWFudWFsLW1vZGUtZXhwZWN0ZWQudHh0OiBBZGRlZC4K
KyAgICAgICAgKiBtZWRpYS90cmFjay90cmFjay1tYW51YWwtbW9kZS5odG1sOiBBZGRlZC4KKwog
MjAxNi0wMi0wMSAgWW91ZW5uIEZhYmxldCAgPHlvdWVubi5mYWJsZXRAY3JmLmNhbm9uLmZyPgog
CiAgICAgICAgIFtGZXRjaCBBUEldIEltcGxlbWVudCBGZXRjaCBBUEkgUmVxdWVzdApJbmRleDog
TGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svdHJhY2stbWFudWFsLW1vZGUtZXhwZWN0ZWQudHh0Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL21lZGlhL3RyYWNrL3RyYWNrLW1hbnVhbC1tb2RlLWV4
cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL21lZGlhL3RyYWNrL3RyYWNr
LW1hbnVhbC1tb2RlLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDUzIEBA
CitUZXN0cyAnbWFudWFsJyBjYXB0aW9uIG1vZGUuCisKKworUlVOKGludGVybmFscy5zZXRVc2Vy
UHJlZmVycmVkTGFuZ3VhZ2VzKFsnZW4nXSkpCitSVU4oaW50ZXJuYWxzLnNldFByaW1hcnlBdWRp
b1RyYWNrTGFuZ3VhZ2VPdmVycmlkZSgnZnInKSkKK1JVTihpbnRlcm5hbHMuc2V0Q2FwdGlvbkRp
c3BsYXlNb2RlKCdtYW51YWwnKSkKK0VWRU5UKGNhbnBsYXl0aHJvdWdoKQorCisqKiBGb3JjZWQg
dHJhY2tzIHNob3VsZCBiZSBpbiAudGV4dFRyYWNrcyBhcyB3ZWxsIGFzIGluIHRoZSBtZW51LAor
KiogYnV0IHNob3VsZCBiZSBsYWJlbGVkIGFzICdzdWJ0aXRsZXMnCisKK0VYUEVDVEVEICh2aWRl
by50ZXh0VHJhY2tzLmxlbmd0aCA9PSAnOScpIE9LCitFWFBFQ1RFRCAodHJhY2tNZW51SXRlbXMu
bGVuZ3RoID09ICcxMScpIE9LCisKKyoqIE5vIHRyYWNrIHNob3VsZCBiZSBlbmFibGVkIGJ5IGRl
ZmF1bHQKK0VYUEVDVEVEICh2aWRlby50ZXh0VHJhY2tzWzBdLmxhbmd1YWdlID09ICdlbicpIE9L
CitFWFBFQ1RFRCAodmlkZW8udGV4dFRyYWNrc1swXS5raW5kID09ICdzdWJ0aXRsZXMnKSBPSwor
RVhQRUNURUQgKHZpZGVvLnRleHRUcmFja3NbMF0ubW9kZSA9PSAnZGlzYWJsZWQnKSBPSworCitF
WFBFQ1RFRCAodmlkZW8udGV4dFRyYWNrc1sxXS5sYW5ndWFnZSA9PSAnZW4nKSBPSworRVhQRUNU
RUQgKHZpZGVvLnRleHRUcmFja3NbMV0ua2luZCA9PSAnc3VidGl0bGVzJykgT0sKK0VYUEVDVEVE
ICh2aWRlby50ZXh0VHJhY2tzWzFdLm1vZGUgPT0gJ2Rpc2FibGVkJykgT0sKKworRVhQRUNURUQg
KHZpZGVvLnRleHRUcmFja3NbMl0ubGFuZ3VhZ2UgPT0gJ2ZyJykgT0sKK0VYUEVDVEVEICh2aWRl
by50ZXh0VHJhY2tzWzJdLmtpbmQgPT0gJ3N1YnRpdGxlcycpIE9LCitFWFBFQ1RFRCAodmlkZW8u
dGV4dFRyYWNrc1syXS5tb2RlID09ICdkaXNhYmxlZCcpIE9LCisKK0VYUEVDVEVEICh2aWRlby50
ZXh0VHJhY2tzWzNdLmxhbmd1YWdlID09ICdmcicpIE9LCitFWFBFQ1RFRCAodmlkZW8udGV4dFRy
YWNrc1szXS5raW5kID09ICdzdWJ0aXRsZXMnKSBPSworRVhQRUNURUQgKHZpZGVvLnRleHRUcmFj
a3NbM10ubW9kZSA9PSAnZGlzYWJsZWQnKSBPSworCitFWFBFQ1RFRCAodmlkZW8udGV4dFRyYWNr
c1s0XS5sYW5ndWFnZSA9PSAnZXMnKSBPSworRVhQRUNURUQgKHZpZGVvLnRleHRUcmFja3NbNF0u
a2luZCA9PSAnc3VidGl0bGVzJykgT0sKK0VYUEVDVEVEICh2aWRlby50ZXh0VHJhY2tzWzRdLm1v
ZGUgPT0gJ2Rpc2FibGVkJykgT0sKKworRVhQRUNURUQgKHZpZGVvLnRleHRUcmFja3NbNV0ubGFu
Z3VhZ2UgPT0gJ2VzJykgT0sKK0VYUEVDVEVEICh2aWRlby50ZXh0VHJhY2tzWzVdLmtpbmQgPT0g
J3N1YnRpdGxlcycpIE9LCitFWFBFQ1RFRCAodmlkZW8udGV4dFRyYWNrc1s1XS5tb2RlID09ICdk
aXNhYmxlZCcpIE9LCisKK0VYUEVDVEVEICh2aWRlby50ZXh0VHJhY2tzWzZdLmxhbmd1YWdlID09
ICdkZScpIE9LCitFWFBFQ1RFRCAodmlkZW8udGV4dFRyYWNrc1s2XS5raW5kID09ICdzdWJ0aXRs
ZXMnKSBPSworRVhQRUNURUQgKHZpZGVvLnRleHRUcmFja3NbNl0ubW9kZSA9PSAnZGlzYWJsZWQn
KSBPSworCitFWFBFQ1RFRCAodmlkZW8udGV4dFRyYWNrc1s3XS5sYW5ndWFnZSA9PSAnZGUnKSBP
SworRVhQRUNURUQgKHZpZGVvLnRleHRUcmFja3NbN10ua2luZCA9PSAnc3VidGl0bGVzJykgT0sK
K0VYUEVDVEVEICh2aWRlby50ZXh0VHJhY2tzWzddLm1vZGUgPT0gJ2Rpc2FibGVkJykgT0sKKwor
RVhQRUNURUQgKHZpZGVvLnRleHRUcmFja3NbOF0ubGFuZ3VhZ2UgPT0gJ2VuJykgT0sKK0VYUEVD
VEVEICh2aWRlby50ZXh0VHJhY2tzWzhdLmtpbmQgPT0gJ2NhcHRpb25zJykgT0sKK0VYUEVDVEVE
ICh2aWRlby50ZXh0VHJhY2tzWzhdLm1vZGUgPT0gJ2Rpc2FibGVkJykgT0sKKworRU5EIE9GIFRF
U1QKKwpJbmRleDogTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svdHJhY2stbWFudWFsLW1vZGUuaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9tZWRpYS90cmFjay90cmFjay1tYW51YWwtbW9k
ZS5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svdHJhY2stbWFu
dWFsLW1vZGUuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDk0IEBACis8IURPQ1RZUEUg
aHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8bWV0YSBodHRwLWVxdWl2PSJDb250
ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCIgLz4KKworICAgICAg
ICA8c2NyaXB0IHNyYz0uLi9tZWRpYS1jb250cm9scy5qcz48L3NjcmlwdD4KKyAgICAgICAgPHNj
cmlwdCBzcmM9Li4vdHJhY2ttZW51LXRlc3QuanM+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQg
c3JjPS4uL3ZpZGVvLXRlc3QuanM+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+CisKKyAgICAg
ICAgICAgIGZ1bmN0aW9uIHRlc3RUcmFja3MoKQorICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgIGNvbnNvbGVXcml0ZShgPGJyPjxpPioqIEZvcmNlZCB0cmFja3Mgc2hvdWxkIGJlIGluIC50
ZXh0VHJhY2tzIGFzIHdlbGwgYXMgaW4gdGhlIG1lbnUsYCk7CisgICAgICAgICAgICAgICAgY29u
c29sZVdyaXRlKGA8aT4qKiBidXQgc2hvdWxkIGJlIGxhYmVsZWQgYXMgJ3N1YnRpdGxlcyc8L2k+
PGJyPmApOworICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgidmlkZW8udGV4dFRyYWNrcy5s
ZW5ndGgiLCA5KTsKKworICAgICAgICAgICAgICAgIC8vIENsaWNrIHRoZSBDQyBidXR0b24gdG8g
c2hvdyB0aGUgbWVudSBiZWNhdXNlIGl0IGlzbid0IGNyZWF0ZWQgdW50aWwgaXQgYmVjb21lcyB2
aXNpYmxlLgorICAgICAgICAgICAgICAgIGNsaWNrQ0NCdXR0b24oKTsKKworICAgICAgICAgICAg
ICAgIHRyYWNrTWVudUl0ZW1zID0gY2FwdGlvblRyYWNrTWVudUxpc3QoKTsKKyAgICAgICAgICAg
ICAgICBpZiAoIXRyYWNrTWVudUl0ZW1zKSB7CisgICAgICAgICAgICAgICAgICAgIGZhaWxUZXN0
KCJGYWlsZWQgdG8gZmluZCB0cmFjayBtZW51ISIpOworICAgICAgICAgICAgICAgICAgICByZXR1
cm47CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgidHJh
Y2tNZW51SXRlbXMubGVuZ3RoIiwgMTEpOworCisgICAgICAgICAgICAgICAgY29uc29sZVdyaXRl
KCI8YnI+PGk+KiogTm8gdHJhY2sgc2hvdWxkIGJlIGVuYWJsZWQgYnkgZGVmYXVsdDwiICsgIi9p
PiIpOworICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgidmlkZW8udGV4dFRyYWNrc1swXS5s
YW5ndWFnZSIsICJlbiIpOworICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgidmlkZW8udGV4
dFRyYWNrc1swXS5raW5kIiwgInN1YnRpdGxlcyIpOworICAgICAgICAgICAgICAgIHRlc3RFeHBl
Y3RlZCgidmlkZW8udGV4dFRyYWNrc1swXS5tb2RlIiwgImRpc2FibGVkIik7CisgICAgICAgICAg
ICAgICAgY29uc29sZVdyaXRlKCIiKTsKKworICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgi
dmlkZW8udGV4dFRyYWNrc1sxXS5sYW5ndWFnZSIsICJlbiIpOworICAgICAgICAgICAgICAgIHRl
c3RFeHBlY3RlZCgidmlkZW8udGV4dFRyYWNrc1sxXS5raW5kIiwgInN1YnRpdGxlcyIpOworICAg
ICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgidmlkZW8udGV4dFRyYWNrc1sxXS5tb2RlIiwgImRp
c2FibGVkIik7CisgICAgICAgICAgICAgICAgY29uc29sZVdyaXRlKCIiKTsKKworICAgICAgICAg
ICAgICAgIHRlc3RFeHBlY3RlZCgidmlkZW8udGV4dFRyYWNrc1syXS5sYW5ndWFnZSIsICJmciIp
OworICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgidmlkZW8udGV4dFRyYWNrc1syXS5raW5k
IiwgInN1YnRpdGxlcyIpOworICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgidmlkZW8udGV4
dFRyYWNrc1syXS5tb2RlIiwgImRpc2FibGVkIik7CisgICAgICAgICAgICAgICAgY29uc29sZVdy
aXRlKCIiKTsKKworICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgidmlkZW8udGV4dFRyYWNr
c1szXS5sYW5ndWFnZSIsICJmciIpOworICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgidmlk
ZW8udGV4dFRyYWNrc1szXS5raW5kIiwgInN1YnRpdGxlcyIpOworICAgICAgICAgICAgICAgIHRl
c3RFeHBlY3RlZCgidmlkZW8udGV4dFRyYWNrc1szXS5tb2RlIiwgImRpc2FibGVkIik7CisgICAg
ICAgICAgICAgICAgY29uc29sZVdyaXRlKCIiKTsKKworICAgICAgICAgICAgICAgIHRlc3RFeHBl
Y3RlZCgidmlkZW8udGV4dFRyYWNrc1s0XS5sYW5ndWFnZSIsICJlcyIpOworICAgICAgICAgICAg
ICAgIHRlc3RFeHBlY3RlZCgidmlkZW8udGV4dFRyYWNrc1s0XS5raW5kIiwgInN1YnRpdGxlcyIp
OworICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgidmlkZW8udGV4dFRyYWNrc1s0XS5tb2Rl
IiwgImRpc2FibGVkIik7CisgICAgICAgICAgICAgICAgY29uc29sZVdyaXRlKCIiKTsKKworICAg
ICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgidmlkZW8udGV4dFRyYWNrc1s1XS5sYW5ndWFnZSIs
ICJlcyIpOworICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgidmlkZW8udGV4dFRyYWNrc1s1
XS5raW5kIiwgInN1YnRpdGxlcyIpOworICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgidmlk
ZW8udGV4dFRyYWNrc1s1XS5tb2RlIiwgImRpc2FibGVkIik7CisgICAgICAgICAgICAgICAgY29u
c29sZVdyaXRlKCIiKTsKKworICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgidmlkZW8udGV4
dFRyYWNrc1s2XS5sYW5ndWFnZSIsICJkZSIpOworICAgICAgICAgICAgICAgIHRlc3RFeHBlY3Rl
ZCgidmlkZW8udGV4dFRyYWNrc1s2XS5raW5kIiwgInN1YnRpdGxlcyIpOworICAgICAgICAgICAg
ICAgIHRlc3RFeHBlY3RlZCgidmlkZW8udGV4dFRyYWNrc1s2XS5tb2RlIiwgImRpc2FibGVkIik7
CisgICAgICAgICAgICAgICAgY29uc29sZVdyaXRlKCIiKTsKKworICAgICAgICAgICAgICAgIHRl
c3RFeHBlY3RlZCgidmlkZW8udGV4dFRyYWNrc1s3XS5sYW5ndWFnZSIsICJkZSIpOworICAgICAg
ICAgICAgICAgIHRlc3RFeHBlY3RlZCgidmlkZW8udGV4dFRyYWNrc1s3XS5raW5kIiwgInN1YnRp
dGxlcyIpOworICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgidmlkZW8udGV4dFRyYWNrc1s3
XS5tb2RlIiwgImRpc2FibGVkIik7CisgICAgICAgICAgICAgICAgY29uc29sZVdyaXRlKCIiKTsK
KworICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgidmlkZW8udGV4dFRyYWNrc1s4XS5sYW5n
dWFnZSIsICJlbiIpOworICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgidmlkZW8udGV4dFRy
YWNrc1s4XS5raW5kIiwgImNhcHRpb25zIik7CisgICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVk
KCJ2aWRlby50ZXh0VHJhY2tzWzhdLm1vZGUiLCAiZGlzYWJsZWQiKTsKKyAgICAgICAgICAgICAg
ICBjb25zb2xlV3JpdGUoIiIpOworCisgICAgICAgICAgICAgICAgZW5kVGVzdCgpOworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICBmdW5jdGlvbiBzZXR1cCgpCisgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgZmluZE1lZGlhRWxlbWVudCgpOworICAgICAgICAgICAgICAgIHJ1bigi
aW50ZXJuYWxzLnNldFVzZXJQcmVmZXJyZWRMYW5ndWFnZXMoWydlbiddKSIpOworICAgICAgICAg
ICAgICAgIHJ1bigiaW50ZXJuYWxzLnNldFByaW1hcnlBdWRpb1RyYWNrTGFuZ3VhZ2VPdmVycmlk
ZSgnZnInKSIpOworICAgICAgICAgICAgICAgIHJ1bigiaW50ZXJuYWxzLnNldENhcHRpb25EaXNw
bGF5TW9kZSgnbWFudWFsJykiKTsKKyAgICAgICAgICAgICAgICB2aWRlby5zcmMgPSAnLi4vY29u
dGVudC9DQytTdWJ0aXRsZXMubW92JzsKKworICAgICAgICAgICAgICAgIHdhaXRGb3JFdmVudCgn
Y2FucGxheXRocm91Z2gnLCB0ZXN0VHJhY2tzKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICA8
L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJzZXR1cCgpIj4KKyAgICAg
ICAgPHA+VGVzdHMgJ21hbnVhbCcgY2FwdGlvbiBtb2RlLjwvcD4KKyAgICAgICAgPHZpZGVvIHdp
ZHRoPSI2NDAiIGhlaWdodD0iMzYwIiBjb250cm9scz4KKyAgICAgICAgPC92aWRlbz4KKyAgICA8
L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>