<?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>78346</bug_id>
          
          <creation_ts>2012-02-10 03:32:27 -0800</creation_ts>
          <short_desc>Web Inspector: implement undo for setOuterHTML via undo-ing nested primitive commands.</short_desc>
          <delta_ts>2012-02-10 05:15:33 -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>Web Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Pavel Feldman">pfeldman</reporter>
          <assigned_to name="Pavel Feldman">pfeldman</assigned_to>
          <cc>apavlov</cc>
    
    <cc>bweinstein</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rik</cc>
    
    <cc>timothy</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>553988</commentid>
    <comment_count>0</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-02-10 03:32:27 -0800</bug_when>
    <thetext>Patch to follow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>554000</commentid>
    <comment_count>1</comment_count>
      <attachid>126494</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-02-10 03:46:44 -0800</bug_when>
    <thetext>Created attachment 126494
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>554023</commentid>
    <comment_count>2</comment_count>
      <attachid>126494</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2012-02-10 05:06:06 -0800</bug_when>
    <thetext>Comment on attachment 126494
Patch

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

&gt; Source/WebCore/inspector/DOMEditor.h:35
&gt; +

Forward declaration should be enough

&gt; Source/WebCore/inspector/InspectorCSSAgent.cpp:233
&gt; +        InspectorStyleSheet* styleSheet = m_cssAgent-&gt;assertStyleSheetForId(0, m_styleSheetId);

It is unsafe to pass 0 here as the method might eventually start writing some error string there

&gt; Source/WebCore/inspector/InspectorCSSAgent.cpp:619
&gt; +    *errorString = InspectorDOMAgent::toErrorString(ec);

Don&apos;t do this on success

&gt; Source/WebCore/inspector/InspectorCSSAgent.cpp:635
&gt; +    *errorString = InspectorDOMAgent::toErrorString(ec);

Ditto

&gt; Source/WebCore/inspector/InspectorHistory.h:62
&gt; +        virtual bool perform(ExceptionCode&amp;) = 0;

ExceptionCode should be forward declared</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>554026</commentid>
    <comment_count>3</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-02-10 05:15:33 -0800</bug_when>
    <thetext>Committed r107399: &lt;http://trac.webkit.org/changeset/107399&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>126494</attachid>
            <date>2012-02-10 03:46:44 -0800</date>
            <delta_ts>2012-02-10 05:06:06 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-78346-20120210154642.patch</filename>
            <type>text/plain</type>
            <size>74613</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA3MzgwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmM4YzIxYWY5ZGNiZGY1
MGJjNjNiMjE5MWRlYTM3OTMzYTdhNDBkYi4uMWI4ZTVjMzU5MDE0MzVkODNhMzkwZGUxMzQyZjRl
YjU4OWJjMDE3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDk4IEBACiAyMDEyLTAyLTEwICBQYXZl
bCBGZWxkbWFuICA8cGZlbGRtYW5AZ29vZ2xlLmNvbT4KIAorICAgICAgICBXZWIgSW5zcGVjdG9y
OiBpbXBsZW1lbnQgdW5kbyBmb3Igc2V0T3V0ZXJIVE1MIHZpYSB1bmRvLWluZyBuZXN0ZWQgcHJp
bWl0aXZlIGNvbW1hbmRzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NzgzNDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBUZXN0czogaW5zcGVjdG9yL2VsZW1lbnRzL3VuZG8tc2V0LW91dGVyLWh0bWwtMi5o
dG1sCisgICAgICAgICAgICAgICBpbnNwZWN0b3IvZWxlbWVudHMvdW5kby1zZXQtb3V0ZXItaHRt
bC5odG1sCisKKyAgICAgICAgKiBpbnNwZWN0b3IvRE9NRWRpdG9yLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkRPTUVkaXRvcjo6UmVtb3ZlQ2hpbGRBY3Rpb246OlJlbW92ZUNoaWxkQWN0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OkRPTUVkaXRvcjo6SW5zZXJ0QmVmb3JlQWN0aW9uOjpJbnNlcnRC
ZWZvcmVBY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6RE9NRWRpdG9yOjpJbnNlcnRCZWZvcmVB
Y3Rpb246OnVuZG8pOgorICAgICAgICAoV2ViQ29yZTo6RE9NRWRpdG9yOjpSZW1vdmVBdHRyaWJ1
dGVBY3Rpb246OlJlbW92ZUF0dHJpYnV0ZUFjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpET01F
ZGl0b3I6OlNldEF0dHJpYnV0ZUFjdGlvbjo6U2V0QXR0cmlidXRlQWN0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OkRPTUVkaXRvcjo6U2V0T3V0ZXJIVE1MQWN0aW9uOjpTZXRPdXRlckhUTUxBY3Rp
b24pOgorICAgICAgICAoV2ViQ29yZTo6RE9NRWRpdG9yOjpTZXRPdXRlckhUTUxBY3Rpb246OnBl
cmZvcm0pOgorICAgICAgICAoV2ViQ29yZTo6RE9NRWRpdG9yOjpTZXRPdXRlckhUTUxBY3Rpb246
OnVuZG8pOgorICAgICAgICAoRE9NRWRpdG9yOjpTZXRPdXRlckhUTUxBY3Rpb24pOgorICAgICAg
ICAoV2ViQ29yZTo6RE9NRWRpdG9yOjpSZXBsYWNlV2hvbGVUZXh0QWN0aW9uOjpSZXBsYWNlV2hv
bGVUZXh0QWN0aW9uKToKKyAgICAgICAgKERPTUVkaXRvcjo6UmVwbGFjZUNoaWxkTm9kZUFjdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpET01FZGl0b3I6OlJlcGxhY2VDaGlsZE5vZGVBY3Rpb246
OlJlcGxhY2VDaGlsZE5vZGVBY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6RE9NRWRpdG9yOjpS
ZXBsYWNlQ2hpbGROb2RlQWN0aW9uOjpwZXJmb3JtKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTUVk
aXRvcjo6UmVwbGFjZUNoaWxkTm9kZUFjdGlvbjo6dW5kbyk6CisgICAgICAgIChXZWJDb3JlKToK
KyAgICAgICAgKERPTUVkaXRvcjo6U2V0Tm9kZVZhbHVlQWN0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OkRPTUVkaXRvcjo6U2V0Tm9kZVZhbHVlQWN0aW9uOjpTZXROb2RlVmFsdWVBY3Rpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6RE9NRWRpdG9yOjpTZXROb2RlVmFsdWVBY3Rpb246OnBlcmZvcm0p
OgorICAgICAgICAoV2ViQ29yZTo6RE9NRWRpdG9yOjpTZXROb2RlVmFsdWVBY3Rpb246OnVuZG8p
OgorICAgICAgICAoV2ViQ29yZTo6RE9NRWRpdG9yOjppbnNlcnRCZWZvcmUpOgorICAgICAgICAo
V2ViQ29yZTo6RE9NRWRpdG9yOjpyZW1vdmVDaGlsZCk6CisgICAgICAgIChXZWJDb3JlOjpET01F
ZGl0b3I6OnNldEF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpET01FZGl0b3I6OnJlbW92
ZUF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpET01FZGl0b3I6OnNldE91dGVySFRNTCk6
CisgICAgICAgIChXZWJDb3JlOjpET01FZGl0b3I6OnJlcGxhY2VXaG9sZVRleHQpOgorICAgICAg
ICAoV2ViQ29yZTo6RE9NRWRpdG9yOjpyZXBsYWNlQ2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6
RE9NRWRpdG9yOjpzZXROb2RlVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6cG9wdWxhdGVFcnJv
clN0cmluZyk6CisgICAgICAgICogaW5zcGVjdG9yL0RPTUVkaXRvci5oOgorICAgICAgICAoRE9N
RWRpdG9yKToKKyAgICAgICAgKiBpbnNwZWN0b3IvRE9NUGF0Y2hTdXBwb3J0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkRPTVBhdGNoU3VwcG9ydDo6cGF0Y2hEb2N1bWVudCk6CisgICAgICAgIChX
ZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVBhdGNoU3VwcG9ydDo6RE9NUGF0Y2hTdXBw
b3J0KToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVBhdGNoU3VwcG9ydDo6cGF0Y2hOb2RlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRPTVBhdGNoU3VwcG9ydDo6aW5uZXJQYXRjaE5vZGUpOgorICAgICAg
ICAoV2ViQ29yZTo6RE9NUGF0Y2hTdXBwb3J0Ojppbm5lclBhdGNoQ2hpbGRyZW4pOgorICAgICAg
ICAoV2ViQ29yZTo6RE9NUGF0Y2hTdXBwb3J0OjppbnNlcnRCZWZvcmVBbmRNYXJrQXNVc2VkKToK
KyAgICAgICAgKFdlYkNvcmU6OkRPTVBhdGNoU3VwcG9ydDo6cmVtb3ZlQ2hpbGRBbmRNb3ZlVG9O
ZXcpOgorICAgICAgICAqIGluc3BlY3Rvci9ET01QYXRjaFN1cHBvcnQuaDoKKyAgICAgICAgKFdl
YkNvcmUpOgorICAgICAgICAoRE9NUGF0Y2hTdXBwb3J0KToKKyAgICAgICAgKiBpbnNwZWN0b3Iv
SW5zcGVjdG9yQ1NTQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdl
bnQ6OlN0eWxlU2hlZXRBY3Rpb246OnBlcmZvcm0pOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yQ1NTQWdlbnQ6OlN0eWxlU2hlZXRBY3Rpb246OnVuZG8pOgorICAgICAgICAoSW5zcGVjdG9y
Q1NTQWdlbnQ6OlN0eWxlU2hlZXRBY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
Q1NTQWdlbnQ6OlNldFN0eWxlU2hlZXRUZXh0QWN0aW9uOjpwZXJmb3JtKToKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvckNTU0FnZW50OjpTZXRTdHlsZVNoZWV0VGV4dEFjdGlvbjo6dW5kbyk6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6U2V0UHJvcGVydHlUZXh0QWN0
aW9uOjpwZXJmb3JtKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNTU0FnZW50OjpTZXRQ
cm9wZXJ0eVRleHRBY3Rpb246OnVuZG8pOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NT
QWdlbnQ6OlRvZ2dsZVByb3BlcnR5QWN0aW9uOjpwZXJmb3JtKToKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvckNTU0FnZW50OjpUb2dnbGVQcm9wZXJ0eUFjdGlvbjo6dW5kbyk6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6c2V0U3R5bGVTaGVldFRleHQpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6OnNldFByb3BlcnR5VGV4dCk6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6dG9nZ2xlUHJvcGVydHkpOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6OmFzc2VydFN0eWxlU2hlZXRGb3JJZCk6CisgICAg
ICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvckRPTUFnZW50Ojp0b0Vycm9yU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmUpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OnNldEF0dHJpYnV0ZXNBc1RleHQp
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OnNldE91dGVySFRNTCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6dW5kbyk6CisgICAgICAgICogaW5z
cGVjdG9yL0luc3BlY3RvckRPTUFnZW50Lmg6CisgICAgICAgIChJbnNwZWN0b3JET01BZ2VudCk6
CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvckhpc3RvcnkuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9ySGlzdG9yeTo6cGVyZm9ybSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JIaXN0b3J5Ojp1bmRvKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySGlzdG9y
eS5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChBY3Rpb24pOgorICAgICAgICAoSW5z
cGVjdG9ySGlzdG9yeSk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQYWdlQWdlbnQ6OnNldERvY3VtZW50Q29u
dGVudCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yU3R5bGU6OnNldFByb3BlcnR5VGV4dCk6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JTdHlsZTo6dG9nZ2xlUHJvcGVydHkpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yU3R5bGVTaGVldDo6c2V0UHJvcGVydHlUZXh0KToKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvclN0eWxlU2hlZXQ6OnRvZ2dsZVByb3BlcnR5KToKKyAgICAgICAgKiBp
bnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5oOgorICAgICAgICAoSW5zcGVjdG9yU3R5bGUp
OgorICAgICAgICAoSW5zcGVjdG9yU3R5bGVTaGVldCk6CisKKzIwMTItMDItMTAgIFBhdmVsIEZl
bGRtYW4gIDxwZmVsZG1hbkBnb29nbGUuY29tPgorCiAgICAgICAgIFtRdF0gUkVHUkVTU0lPTihy
MTA3MjQyKTogSXQgbWFkZSA1IGluc3BlY3RvciB0ZXN0cyBjcmFzaCBpbiBkZWJ1ZyBtb2RlCiAg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03ODMzMAogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9NRWRpdG9yLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9ET01FZGl0b3IuY3BwCmluZGV4IGYxNTNjOTBkOWFhM2M5NGUy
MDBhMWIxOWJiZTU4OTE2ZWIzNmU1Y2EuLmYwYTMxNDBiNjM5MWE0Y2E4NjUxODZkOGVkNDg3Mjc2
MjkxZTYxOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9ET01FZGl0b3Iu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9ET01FZGl0b3IuY3BwCkBAIC00OSw0
NyArNDksMTEgQEAgdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1jbGFzcyBET01FZGl0b3I6OkRPTUFjdGlvbiA6IHB1YmxpYyBJbnNwZWN0b3JIaXN0b3J5OjpB
Y3Rpb24gewotcHVibGljOgotICAgIERPTUFjdGlvbihjb25zdCBTdHJpbmcmIG5hbWUpIDogSW5z
cGVjdG9ySGlzdG9yeTo6QWN0aW9uKG5hbWUpIHsgfQotCi0gICAgdmlydHVhbCBib29sIHBlcmZv
cm0oRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nKQotICAgIHsKLSAgICAgICAgRXhjZXB0aW9uQ29k
ZSBlYyA9IDA7Ci0gICAgICAgIGJvb2wgcmVzdWx0ID0gcGVyZm9ybShlYyk7Ci0gICAgICAgIGlm
IChlYykgewotICAgICAgICAgICAgRXhjZXB0aW9uQ29kZURlc2NyaXB0aW9uIGRlc2NyaXB0aW9u
KGVjKTsKLSAgICAgICAgICAgICplcnJvclN0cmluZyA9IGRlc2NyaXB0aW9uLm5hbWU7Ci0gICAg
ICAgIH0KLSAgICAgICAgcmV0dXJuIHJlc3VsdCAmJiAhZWM7Ci0gICAgfQotCi0gICAgdmlydHVh
bCBib29sIHVuZG8oRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nKQotICAgIHsKLSAgICAgICAgRXhj
ZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgICAgIGJvb2wgcmVzdWx0ID0gdW5kbyhlYyk7Ci0gICAg
ICAgIGlmIChlYykgewotICAgICAgICAgICAgRXhjZXB0aW9uQ29kZURlc2NyaXB0aW9uIGRlc2Ny
aXB0aW9uKGVjKTsKLSAgICAgICAgICAgICplcnJvclN0cmluZyA9IGRlc2NyaXB0aW9uLm5hbWU7
Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHJlc3VsdCAmJiAhZWM7Ci0gICAgfQotCi0gICAg
dmlydHVhbCBib29sIHBlcmZvcm0oRXhjZXB0aW9uQ29kZSYpID0gMDsKLQotICAgIHZpcnR1YWwg
Ym9vbCB1bmRvKEV4Y2VwdGlvbkNvZGUmKSA9IDA7Ci0KLXByaXZhdGU6Ci0gICAgUmVmUHRyPE5v
ZGU+IG1fcGFyZW50Tm9kZTsKLSAgICBSZWZQdHI8Tm9kZT4gbV9ub2RlOwotICAgIFJlZlB0cjxO
b2RlPiBtX2FuY2hvck5vZGU7Ci19OwotCi1jbGFzcyBET01FZGl0b3I6OlJlbW92ZUNoaWxkQWN0
aW9uIDogcHVibGljIERPTUVkaXRvcjo6RE9NQWN0aW9uIHsKK2NsYXNzIERPTUVkaXRvcjo6UmVt
b3ZlQ2hpbGRBY3Rpb24gOiBwdWJsaWMgSW5zcGVjdG9ySGlzdG9yeTo6QWN0aW9uIHsKICAgICBX
VEZfTUFLRV9OT05DT1BZQUJMRShSZW1vdmVDaGlsZEFjdGlvbik7CiBwdWJsaWM6CiAgICAgUmVt
b3ZlQ2hpbGRBY3Rpb24oTm9kZSogcGFyZW50Tm9kZSwgTm9kZSogbm9kZSkKLSAgICAgICAgOiBE
T01FZGl0b3I6OkRPTUFjdGlvbigiUmVtb3ZlQ2hpbGQiKQorICAgICAgICA6IEluc3BlY3Rvckhp
c3Rvcnk6OkFjdGlvbigiUmVtb3ZlQ2hpbGQiKQogICAgICAgICAsIG1fcGFyZW50Tm9kZShwYXJl
bnROb2RlKQogICAgICAgICAsIG1fbm9kZShub2RlKQogICAgIHsKQEAgLTExMiwxMSArNzYsMTEg
QEAgcHJpdmF0ZToKICAgICBSZWZQdHI8Tm9kZT4gbV9hbmNob3JOb2RlOwogfTsKIAotY2xhc3Mg
RE9NRWRpdG9yOjpJbnNlcnRCZWZvcmVBY3Rpb24gOiBwdWJsaWMgRE9NRWRpdG9yOjpET01BY3Rp
b24geworY2xhc3MgRE9NRWRpdG9yOjpJbnNlcnRCZWZvcmVBY3Rpb24gOiBwdWJsaWMgSW5zcGVj
dG9ySGlzdG9yeTo6QWN0aW9uIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShJbnNlcnRCZWZv
cmVBY3Rpb24pOwogcHVibGljOgotICAgIEluc2VydEJlZm9yZUFjdGlvbihOb2RlKiBwYXJlbnRO
b2RlLCBOb2RlKiBub2RlLCBOb2RlKiBhbmNob3JOb2RlKQotICAgICAgICA6IERPTUVkaXRvcjo6
RE9NQWN0aW9uKCJJbnNlcnRCZWZvcmUiKQorICAgIEluc2VydEJlZm9yZUFjdGlvbihOb2RlKiBw
YXJlbnROb2RlLCBQYXNzUmVmUHRyPE5vZGU+IG5vZGUsIE5vZGUqIGFuY2hvck5vZGUpCisgICAg
ICAgIDogSW5zcGVjdG9ySGlzdG9yeTo6QWN0aW9uKCJJbnNlcnRCZWZvcmUiKQogICAgICAgICAs
IG1fcGFyZW50Tm9kZShwYXJlbnROb2RlKQogICAgICAgICAsIG1fbm9kZShub2RlKQogICAgICAg
ICAsIG1fYW5jaG9yTm9kZShhbmNob3JOb2RlKQpAQCAtMTM1LDEwICs5OSwxMSBAQCBwdWJsaWM6
CiAKICAgICB2aXJ0dWFsIGJvb2wgdW5kbyhFeGNlcHRpb25Db2RlJiBlYykKICAgICB7CisgICAg
ICAgIGlmICghbV9wYXJlbnROb2RlLT5yZW1vdmVDaGlsZChtX25vZGUuZ2V0KCksIGVjKSkKKyAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgaWYgKG1fcmVtb3ZlQ2hpbGRBY3Rpb24p
CiAgICAgICAgICAgICByZXR1cm4gbV9yZW1vdmVDaGlsZEFjdGlvbi0+dW5kbyhlYyk7Ci0KLSAg
ICAgICAgcmV0dXJuIG1fcGFyZW50Tm9kZS0+cmVtb3ZlQ2hpbGQobV9ub2RlLmdldCgpLCBlYyk7
CisgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAogcHJpdmF0ZToKQEAgLTE0OCwxMSArMTEz
LDExIEBAIHByaXZhdGU6CiAgICAgT3duUHRyPFJlbW92ZUNoaWxkQWN0aW9uPiBtX3JlbW92ZUNo
aWxkQWN0aW9uOwogfTsKIAotY2xhc3MgRE9NRWRpdG9yOjpSZW1vdmVBdHRyaWJ1dGVBY3Rpb24g
OiBwdWJsaWMgRE9NRWRpdG9yOjpET01BY3Rpb24geworY2xhc3MgRE9NRWRpdG9yOjpSZW1vdmVB
dHRyaWJ1dGVBY3Rpb24gOiBwdWJsaWMgSW5zcGVjdG9ySGlzdG9yeTo6QWN0aW9uIHsKICAgICBX
VEZfTUFLRV9OT05DT1BZQUJMRShSZW1vdmVBdHRyaWJ1dGVBY3Rpb24pOwogcHVibGljOgogICAg
IFJlbW92ZUF0dHJpYnV0ZUFjdGlvbihFbGVtZW50KiBlbGVtZW50LCBjb25zdCBTdHJpbmcmIG5h
bWUpCi0gICAgICAgIDogRE9NRWRpdG9yOjpET01BY3Rpb24oIlJlbW92ZUF0dHJpYnV0ZSIpCisg
ICAgICAgIDogSW5zcGVjdG9ySGlzdG9yeTo6QWN0aW9uKCJSZW1vdmVBdHRyaWJ1dGUiKQogICAg
ICAgICAsIG1fZWxlbWVudChlbGVtZW50KQogICAgICAgICAsIG1fbmFtZShuYW1lKQogICAgIHsK
QEAgLTE3NywxMSArMTQyLDExIEBAIHByaXZhdGU6CiAgICAgU3RyaW5nIG1fdmFsdWU7CiB9Owog
Ci1jbGFzcyBET01FZGl0b3I6OlNldEF0dHJpYnV0ZUFjdGlvbiA6IHB1YmxpYyBET01FZGl0b3I6
OkRPTUFjdGlvbiB7CitjbGFzcyBET01FZGl0b3I6OlNldEF0dHJpYnV0ZUFjdGlvbiA6IHB1Ymxp
YyBJbnNwZWN0b3JIaXN0b3J5OjpBY3Rpb24gewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFNl
dEF0dHJpYnV0ZUFjdGlvbik7CiBwdWJsaWM6CiAgICAgU2V0QXR0cmlidXRlQWN0aW9uKEVsZW1l
bnQqIGVsZW1lbnQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKLSAg
ICAgICAgOiBET01FZGl0b3I6OkRPTUFjdGlvbigiU2V0QXR0cmlidXRlIikKKyAgICAgICAgOiBJ
bnNwZWN0b3JIaXN0b3J5OjpBY3Rpb24oIlNldEF0dHJpYnV0ZSIpCiAgICAgICAgICwgbV9lbGVt
ZW50KGVsZW1lbnQpCiAgICAgICAgICwgbV9uYW1lKG5hbWUpCiAgICAgICAgICwgbV92YWx1ZSh2
YWx1ZSkKQEAgLTIxNSw0MSArMTgwLDMxIEBAIHByaXZhdGU6CiAgICAgU3RyaW5nIG1fb2xkVmFs
dWU7CiB9OwogCi1jbGFzcyBET01FZGl0b3I6OlNldE91dGVySFRNTEFjdGlvbiA6IHB1YmxpYyBE
T01FZGl0b3I6OkRPTUFjdGlvbiB7CitjbGFzcyBET01FZGl0b3I6OlNldE91dGVySFRNTEFjdGlv
biA6IHB1YmxpYyBJbnNwZWN0b3JIaXN0b3J5OjpBY3Rpb24gewogICAgIFdURl9NQUtFX05PTkNP
UFlBQkxFKFNldE91dGVySFRNTEFjdGlvbik7CiBwdWJsaWM6CiAgICAgU2V0T3V0ZXJIVE1MQWN0
aW9uKE5vZGUqIG5vZGUsIGNvbnN0IFN0cmluZyYgaHRtbCkKLSAgICAgICAgOiBET01FZGl0b3I6
OkRPTUFjdGlvbigiU2V0T3V0ZXJIVE1MIikKKyAgICAgICAgOiBJbnNwZWN0b3JIaXN0b3J5OjpB
Y3Rpb24oIlNldE91dGVySFRNTCIpCiAgICAgICAgICwgbV9ub2RlKG5vZGUpCiAgICAgICAgICwg
bV9uZXh0U2libGluZyhub2RlLT5uZXh0U2libGluZygpKQogICAgICAgICAsIG1faHRtbChodG1s
KQogICAgICAgICAsIG1fbmV3Tm9kZSgwKQorICAgICAgICAsIG1faGlzdG9yeShhZG9wdFB0cihu
ZXcgSW5zcGVjdG9ySGlzdG9yeSgpKSkKKyAgICAgICAgLCBtX2RvbUVkaXRvcihhZG9wdFB0cihu
ZXcgRE9NRWRpdG9yKG1faGlzdG9yeS5nZXQoKSkpKQogICAgIHsKICAgICB9CiAKICAgICB2aXJ0
dWFsIGJvb2wgcGVyZm9ybShFeGNlcHRpb25Db2RlJiBlYykKICAgICB7CiAgICAgICAgIG1fb2xk
SFRNTCA9IGNyZWF0ZU1hcmt1cChtX25vZGUuZ2V0KCkpOwotICAgICAgICBET01QYXRjaFN1cHBv
cnQgZG9tUGF0Y2hTdXBwb3J0KG1fbm9kZS0+b3duZXJEb2N1bWVudCgpKTsKKyAgICAgICAgRE9N
UGF0Y2hTdXBwb3J0IGRvbVBhdGNoU3VwcG9ydChtX2RvbUVkaXRvci5nZXQoKSwgbV9ub2RlLT5v
d25lckRvY3VtZW50KCkpOwogICAgICAgICBtX25ld05vZGUgPSBkb21QYXRjaFN1cHBvcnQucGF0
Y2hOb2RlKG1fbm9kZS5nZXQoKSwgbV9odG1sLCBlYyk7CiAgICAgICAgIHJldHVybiAhZWM7CiAg
ICAgfQogCiAgICAgdmlydHVhbCBib29sIHVuZG8oRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgewot
ICAgICAgICBET01QYXRjaFN1cHBvcnQgZG9tUGF0Y2hTdXBwb3J0KG1fbmV3Tm9kZS0+b3duZXJE
b2N1bWVudCgpKTsKLSAgICAgICAgTm9kZSogbm9kZSA9IGRvbVBhdGNoU3VwcG9ydC5wYXRjaE5v
ZGUobV9uZXdOb2RlLCBtX29sZEhUTUwsIGVjKTsKLSAgICAgICAgaWYgKGVjIHx8ICFub2RlKQot
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAvLyBIVE1MIGVkaXRpbmcgY291bGQg
aGF2ZSBwcm9kdWNlZCBleHRyYSBub2Rlcy4gUmVtb3ZlIHRoZW0gaWYgbmVjZXNzYXJ5LgotICAg
ICAgICBub2RlID0gbm9kZS0+bmV4dFNpYmxpbmcoKTsKLQotICAgICAgICB3aGlsZSAoIWVjICYm
IG5vZGUgJiYgbm9kZSAhPSBtX25leHRTaWJsaW5nLmdldCgpKSB7Ci0gICAgICAgICAgICBOb2Rl
KiBub2RlVG9SZW1vdmUgPSBub2RlOwotICAgICAgICAgICAgbm9kZSA9IG5vZGUtPm5leHRTaWJs
aW5nKCk7Ci0gICAgICAgICAgICBub2RlVG9SZW1vdmUtPnJlbW92ZShlYyk7Ci0gICAgICAgIH0K
LSAgICAgICAgcmV0dXJuICFlYzsKKyAgICAgICAgcmV0dXJuIG1faGlzdG9yeS0+dW5kbyhlYyk7
CiAgICAgfQogCiAgICAgTm9kZSogbmV3Tm9kZSgpCkBAIC0yNjMsMTMgKzIxOCwxNSBAQCBwcml2
YXRlOgogICAgIFN0cmluZyBtX2h0bWw7CiAgICAgU3RyaW5nIG1fb2xkSFRNTDsKICAgICBOb2Rl
KiBtX25ld05vZGU7CisgICAgT3duUHRyPEluc3BlY3Rvckhpc3Rvcnk+IG1faGlzdG9yeTsKKyAg
ICBPd25QdHI8RE9NRWRpdG9yPiBtX2RvbUVkaXRvcjsKIH07CiAKLWNsYXNzIERPTUVkaXRvcjo6
UmVwbGFjZVdob2xlVGV4dEFjdGlvbiA6IHB1YmxpYyBET01FZGl0b3I6OkRPTUFjdGlvbiB7Citj
bGFzcyBET01FZGl0b3I6OlJlcGxhY2VXaG9sZVRleHRBY3Rpb24gOiBwdWJsaWMgSW5zcGVjdG9y
SGlzdG9yeTo6QWN0aW9uIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShSZXBsYWNlV2hvbGVU
ZXh0QWN0aW9uKTsKIHB1YmxpYzoKICAgICBSZXBsYWNlV2hvbGVUZXh0QWN0aW9uKFRleHQqIHRl
eHROb2RlLCBjb25zdCBTdHJpbmcmIHRleHQpCi0gICAgICAgIDogRE9NQWN0aW9uKCJSZXBsYWNl
V2hvbGVUZXh0IikKKyAgICAgICAgOiBJbnNwZWN0b3JIaXN0b3J5OjpBY3Rpb24oIlJlcGxhY2VX
aG9sZVRleHQiKQogICAgICAgICAsIG1fdGV4dE5vZGUodGV4dE5vZGUpCiAgICAgICAgICwgbV90
ZXh0KHRleHQpCiAgICAgewpAQCAtMjk0LDQzICsyNTEsMTY1IEBAIHByaXZhdGU6CiAgICAgU3Ry
aW5nIG1fb2xkVGV4dDsKIH07CiAKK2NsYXNzIERPTUVkaXRvcjo6UmVwbGFjZUNoaWxkTm9kZUFj
dGlvbiA6IHB1YmxpYyBJbnNwZWN0b3JIaXN0b3J5OjpBY3Rpb24geworICAgIFdURl9NQUtFX05P
TkNPUFlBQkxFKFJlcGxhY2VDaGlsZE5vZGVBY3Rpb24pOworcHVibGljOgorICAgIFJlcGxhY2VD
aGlsZE5vZGVBY3Rpb24oTm9kZSogcGFyZW50Tm9kZSwgUGFzc1JlZlB0cjxOb2RlPiBuZXdOb2Rl
LCBOb2RlKiBvbGROb2RlKQorICAgICAgICA6IEluc3BlY3Rvckhpc3Rvcnk6OkFjdGlvbigiUmVw
bGFjZUNoaWxkTm9kZSIpCisgICAgICAgICwgbV9wYXJlbnROb2RlKHBhcmVudE5vZGUpCisgICAg
ICAgICwgbV9uZXdOb2RlKG5ld05vZGUpCisgICAgICAgICwgbV9vbGROb2RlKG9sZE5vZGUpCisg
ICAgeworICAgIH0KKworICAgIHZpcnR1YWwgYm9vbCBwZXJmb3JtKEV4Y2VwdGlvbkNvZGUmIGVj
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fcGFyZW50Tm9kZS0+cmVwbGFjZUNoaWxkKG1fbmV3
Tm9kZSwgbV9vbGROb2RlLmdldCgpLCBlYyk7CisgICAgfQorCisgICAgdmlydHVhbCBib29sIHVu
ZG8oRXhjZXB0aW9uQ29kZSYgZWMpCisgICAgeworICAgICAgICByZXR1cm4gbV9wYXJlbnROb2Rl
LT5yZXBsYWNlQ2hpbGQobV9vbGROb2RlLCBtX25ld05vZGUuZ2V0KCksIGVjKTsKKyAgICB9CisK
K3ByaXZhdGU6CisgICAgUmVmUHRyPE5vZGU+IG1fcGFyZW50Tm9kZTsKKyAgICBSZWZQdHI8Tm9k
ZT4gbV9uZXdOb2RlOworICAgIFJlZlB0cjxOb2RlPiBtX29sZE5vZGU7Cit9OworCitjbGFzcyBE
T01FZGl0b3I6OlNldE5vZGVWYWx1ZUFjdGlvbiA6IHB1YmxpYyBJbnNwZWN0b3JIaXN0b3J5OjpB
Y3Rpb24geworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFNldE5vZGVWYWx1ZUFjdGlvbik7Citw
dWJsaWM6CisgICAgU2V0Tm9kZVZhbHVlQWN0aW9uKE5vZGUqIG5vZGUsIGNvbnN0IFN0cmluZyYg
dmFsdWUpCisgICAgICAgIDogSW5zcGVjdG9ySGlzdG9yeTo6QWN0aW9uKCJTZXROb2RlVmFsdWUi
KQorICAgICAgICAsIG1fbm9kZShub2RlKQorICAgICAgICAsIG1fdmFsdWUodmFsdWUpCisgICAg
eworICAgIH0KKworICAgIHZpcnR1YWwgYm9vbCBwZXJmb3JtKEV4Y2VwdGlvbkNvZGUmIGVjKQor
ICAgIHsKKyAgICAgICAgbV9vbGRWYWx1ZSA9IG1fbm9kZS0+bm9kZVZhbHVlKCk7CisgICAgICAg
IG1fbm9kZS0+c2V0Tm9kZVZhbHVlKG1fdmFsdWUsIGVjKTsKKyAgICAgICAgcmV0dXJuICFlYzsK
KyAgICB9CisKKyAgICB2aXJ0dWFsIGJvb2wgdW5kbyhFeGNlcHRpb25Db2RlJiBlYykKKyAgICB7
CisgICAgICAgIG1fbm9kZS0+c2V0Tm9kZVZhbHVlKG1fb2xkVmFsdWUsIGVjKTsKKyAgICAgICAg
cmV0dXJuICFlYzsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgUmVmUHRyPE5vZGU+IG1fbm9kZTsK
KyAgICBTdHJpbmcgbV92YWx1ZTsKKyAgICBTdHJpbmcgbV9vbGRWYWx1ZTsKK307CisKIERPTUVk
aXRvcjo6RE9NRWRpdG9yKEluc3BlY3Rvckhpc3RvcnkqIGhpc3RvcnkpIDogbV9oaXN0b3J5KGhp
c3RvcnkpIHsgfQogCiBET01FZGl0b3I6On5ET01FZGl0b3IoKSB7IH0KIAotYm9vbCBET01FZGl0
b3I6Omluc2VydEJlZm9yZShOb2RlKiBwYXJlbnROb2RlLCBOb2RlKiBub2RlLCBOb2RlKiBhbmNo
b3JOb2RlLCBFcnJvclN0cmluZyogZXJyb3JTdHJpbmcpCitib29sIERPTUVkaXRvcjo6aW5zZXJ0
QmVmb3JlKE5vZGUqIHBhcmVudE5vZGUsIFBhc3NSZWZQdHI8Tm9kZT4gbm9kZSwgTm9kZSogYW5j
aG9yTm9kZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7Ci0gICAgcmV0dXJuIG1faGlzdG9yeS0+cGVy
Zm9ybShhZG9wdFB0cihuZXcgSW5zZXJ0QmVmb3JlQWN0aW9uKHBhcmVudE5vZGUsIG5vZGUsIGFu
Y2hvck5vZGUpKSwgZXJyb3JTdHJpbmcpOworICAgIHJldHVybiBtX2hpc3RvcnktPnBlcmZvcm0o
YWRvcHRQdHIobmV3IEluc2VydEJlZm9yZUFjdGlvbihwYXJlbnROb2RlLCBub2RlLCBhbmNob3JO
b2RlKSksIGVjKTsKIH0KIAotYm9vbCBET01FZGl0b3I6OnJlbW92ZUNoaWxkKE5vZGUqIHBhcmVu
dE5vZGUsIE5vZGUqIG5vZGUsIEVycm9yU3RyaW5nKiBlcnJvclN0cmluZykKK2Jvb2wgRE9NRWRp
dG9yOjpyZW1vdmVDaGlsZChOb2RlKiBwYXJlbnROb2RlLCBOb2RlKiBub2RlLCBFeGNlcHRpb25D
b2RlJiBlYykKIHsKLSAgICByZXR1cm4gbV9oaXN0b3J5LT5wZXJmb3JtKGFkb3B0UHRyKG5ldyBS
ZW1vdmVDaGlsZEFjdGlvbihwYXJlbnROb2RlLCBub2RlKSksIGVycm9yU3RyaW5nKTsKKyAgICBy
ZXR1cm4gbV9oaXN0b3J5LT5wZXJmb3JtKGFkb3B0UHRyKG5ldyBSZW1vdmVDaGlsZEFjdGlvbihw
YXJlbnROb2RlLCBub2RlKSksIGVjKTsKIH0KIAotYm9vbCBET01FZGl0b3I6OnNldEF0dHJpYnV0
ZShFbGVtZW50KiBlbGVtZW50LCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmFs
dWUsIEVycm9yU3RyaW5nKiBlcnJvclN0cmluZykKK2Jvb2wgRE9NRWRpdG9yOjpzZXRBdHRyaWJ1
dGUoRWxlbWVudCogZWxlbWVudCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHZh
bHVlLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKLSAgICByZXR1cm4gbV9oaXN0b3J5LT5wZXJmb3Jt
KGFkb3B0UHRyKG5ldyBTZXRBdHRyaWJ1dGVBY3Rpb24oZWxlbWVudCwgbmFtZSwgdmFsdWUpKSwg
ZXJyb3JTdHJpbmcpOworICAgIHJldHVybiBtX2hpc3RvcnktPnBlcmZvcm0oYWRvcHRQdHIobmV3
IFNldEF0dHJpYnV0ZUFjdGlvbihlbGVtZW50LCBuYW1lLCB2YWx1ZSkpLCBlYyk7CiB9CiAKLWJv
b2wgRE9NRWRpdG9yOjpyZW1vdmVBdHRyaWJ1dGUoRWxlbWVudCogZWxlbWVudCwgY29uc3QgU3Ry
aW5nJiBuYW1lLCBFcnJvclN0cmluZyogZXJyb3JTdHJpbmcpCitib29sIERPTUVkaXRvcjo6cmVt
b3ZlQXR0cmlidXRlKEVsZW1lbnQqIGVsZW1lbnQsIGNvbnN0IFN0cmluZyYgbmFtZSwgRXhjZXB0
aW9uQ29kZSYgZWMpCiB7Ci0gICAgcmV0dXJuIG1faGlzdG9yeS0+cGVyZm9ybShhZG9wdFB0cihu
ZXcgUmVtb3ZlQXR0cmlidXRlQWN0aW9uKGVsZW1lbnQsIG5hbWUpKSwgZXJyb3JTdHJpbmcpOwor
ICAgIHJldHVybiBtX2hpc3RvcnktPnBlcmZvcm0oYWRvcHRQdHIobmV3IFJlbW92ZUF0dHJpYnV0
ZUFjdGlvbihlbGVtZW50LCBuYW1lKSksIGVjKTsKIH0KIAotYm9vbCBET01FZGl0b3I6OnNldE91
dGVySFRNTChOb2RlKiBub2RlLCBjb25zdCBTdHJpbmcmIGh0bWwsIE5vZGUqKiBuZXdOb2RlLCBF
cnJvclN0cmluZyogZXJyb3JTdHJpbmcpCitib29sIERPTUVkaXRvcjo6c2V0T3V0ZXJIVE1MKE5v
ZGUqIG5vZGUsIGNvbnN0IFN0cmluZyYgaHRtbCwgTm9kZSoqIG5ld05vZGUsIEV4Y2VwdGlvbkNv
ZGUmIGVjKQogewogICAgIE93blB0cjxTZXRPdXRlckhUTUxBY3Rpb24+IGFjdGlvbiA9IGFkb3B0
UHRyKG5ldyBTZXRPdXRlckhUTUxBY3Rpb24obm9kZSwgaHRtbCkpOwogICAgIFNldE91dGVySFRN
TEFjdGlvbiogcmF3QWN0aW9uID0gYWN0aW9uLmdldCgpOwotICAgIGJvb2wgcmVzdWx0ID0gbV9o
aXN0b3J5LT5wZXJmb3JtKGFjdGlvbi5yZWxlYXNlKCksIGVycm9yU3RyaW5nKTsKKyAgICBib29s
IHJlc3VsdCA9IG1faGlzdG9yeS0+cGVyZm9ybShhY3Rpb24ucmVsZWFzZSgpLCBlYyk7CiAgICAg
aWYgKHJlc3VsdCkKICAgICAgICAgKm5ld05vZGUgPSByYXdBY3Rpb24tPm5ld05vZGUoKTsKICAg
ICByZXR1cm4gcmVzdWx0OwogfQogCitib29sIERPTUVkaXRvcjo6cmVwbGFjZVdob2xlVGV4dChU
ZXh0KiB0ZXh0Tm9kZSwgY29uc3QgU3RyaW5nJiB0ZXh0LCBFeGNlcHRpb25Db2RlJiBlYykKK3sK
KyAgICByZXR1cm4gbV9oaXN0b3J5LT5wZXJmb3JtKGFkb3B0UHRyKG5ldyBSZXBsYWNlV2hvbGVU
ZXh0QWN0aW9uKHRleHROb2RlLCB0ZXh0KSksIGVjKTsKK30KKworYm9vbCBET01FZGl0b3I6OnJl
cGxhY2VDaGlsZChOb2RlKiBwYXJlbnROb2RlLCBQYXNzUmVmUHRyPE5vZGU+IG5ld05vZGUsIE5v
ZGUqIG9sZE5vZGUsIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIHJldHVybiBtX2hpc3Rvcnkt
PnBlcmZvcm0oYWRvcHRQdHIobmV3IFJlcGxhY2VDaGlsZE5vZGVBY3Rpb24ocGFyZW50Tm9kZSwg
bmV3Tm9kZSwgb2xkTm9kZSkpLCBlYyk7Cit9CisKK2Jvb2wgRE9NRWRpdG9yOjpzZXROb2RlVmFs
dWUoTm9kZSogbm9kZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSwgRXhjZXB0aW9uQ29kZSYgZWMpCit7
CisgICAgcmV0dXJuIG1faGlzdG9yeS0+cGVyZm9ybShhZG9wdFB0cihuZXcgU2V0Tm9kZVZhbHVl
QWN0aW9uKG5vZGUsIHZhbHVlKSksIGVjKTsKK30KKworc3RhdGljIHZvaWQgcG9wdWxhdGVFcnJv
clN0cmluZyhjb25zdCBFeGNlcHRpb25Db2RlJiBlYywgRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5n
KQoreworICAgIGlmIChlYykgeworICAgICAgICBFeGNlcHRpb25Db2RlRGVzY3JpcHRpb24gZGVz
Y3JpcHRpb24oZWMpOworICAgICAgICAqZXJyb3JTdHJpbmcgPSBkZXNjcmlwdGlvbi5uYW1lOwor
ICAgIH0KK30KKworYm9vbCBET01FZGl0b3I6Omluc2VydEJlZm9yZShOb2RlKiBwYXJlbnROb2Rl
LCBQYXNzUmVmUHRyPE5vZGU+IG5vZGUsIE5vZGUqIGFuY2hvck5vZGUsIEVycm9yU3RyaW5nKiBl
cnJvclN0cmluZykKK3sKKyAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBib29sIHJlc3Vs
dCA9IGluc2VydEJlZm9yZShwYXJlbnROb2RlLCBub2RlLCBhbmNob3JOb2RlLCBlYyk7CisgICAg
cG9wdWxhdGVFcnJvclN0cmluZyhlYywgZXJyb3JTdHJpbmcpOworICAgIHJldHVybiByZXN1bHQ7
Cit9CisKK2Jvb2wgRE9NRWRpdG9yOjpyZW1vdmVDaGlsZChOb2RlKiBwYXJlbnROb2RlLCBOb2Rl
KiBub2RlLCBFcnJvclN0cmluZyogZXJyb3JTdHJpbmcpCit7CisgICAgRXhjZXB0aW9uQ29kZSBl
YyA9IDA7CisgICAgYm9vbCByZXN1bHQgPSByZW1vdmVDaGlsZChwYXJlbnROb2RlLCBub2RlLCBl
Yyk7CisgICAgcG9wdWxhdGVFcnJvclN0cmluZyhlYywgZXJyb3JTdHJpbmcpOworICAgIHJldHVy
biByZXN1bHQ7Cit9CisKK2Jvb2wgRE9NRWRpdG9yOjpzZXRBdHRyaWJ1dGUoRWxlbWVudCogZWxl
bWVudCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHZhbHVlLCBFcnJvclN0cmlu
ZyogZXJyb3JTdHJpbmcpCit7CisgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgYm9vbCBy
ZXN1bHQgPSBzZXRBdHRyaWJ1dGUoZWxlbWVudCwgbmFtZSwgdmFsdWUsIGVjKTsKKyAgICBwb3B1
bGF0ZUVycm9yU3RyaW5nKGVjLCBlcnJvclN0cmluZyk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30K
KworYm9vbCBET01FZGl0b3I6OnJlbW92ZUF0dHJpYnV0ZShFbGVtZW50KiBlbGVtZW50LCBjb25z
dCBTdHJpbmcmIG5hbWUsIEVycm9yU3RyaW5nKiBlcnJvclN0cmluZykKK3sKKyAgICBFeGNlcHRp
b25Db2RlIGVjID0gMDsKKyAgICBib29sIHJlc3VsdCA9IHJlbW92ZUF0dHJpYnV0ZShlbGVtZW50
LCBuYW1lLCBlYyk7CisgICAgcG9wdWxhdGVFcnJvclN0cmluZyhlYywgZXJyb3JTdHJpbmcpOwor
ICAgIHJldHVybiByZXN1bHQ7Cit9CisKK2Jvb2wgRE9NRWRpdG9yOjpzZXRPdXRlckhUTUwoTm9k
ZSogbm9kZSwgY29uc3QgU3RyaW5nJiBodG1sLCBOb2RlKiogbmV3Tm9kZSwgRXJyb3JTdHJpbmcq
IGVycm9yU3RyaW5nKQoreworICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIGJvb2wgcmVz
dWx0ID0gc2V0T3V0ZXJIVE1MKG5vZGUsIGh0bWwsIG5ld05vZGUsIGVjKTsKKyAgICBwb3B1bGF0
ZUVycm9yU3RyaW5nKGVjLCBlcnJvclN0cmluZyk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwog
Ym9vbCBET01FZGl0b3I6OnJlcGxhY2VXaG9sZVRleHQoVGV4dCogdGV4dE5vZGUsIGNvbnN0IFN0
cmluZyYgdGV4dCwgRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nKQogewotICAgIHJldHVybiBtX2hp
c3RvcnktPnBlcmZvcm0oYWRvcHRQdHIobmV3IFJlcGxhY2VXaG9sZVRleHRBY3Rpb24odGV4dE5v
ZGUsIHRleHQpKSwgZXJyb3JTdHJpbmcpOworICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAg
IGJvb2wgcmVzdWx0ID0gcmVwbGFjZVdob2xlVGV4dCh0ZXh0Tm9kZSwgdGV4dCwgZWMpOworICAg
IHBvcHVsYXRlRXJyb3JTdHJpbmcoZWMsIGVycm9yU3RyaW5nKTsKKyAgICByZXR1cm4gcmVzdWx0
OwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvRE9NRWRpdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9NRWRp
dG9yLmgKaW5kZXggYmQxMGIyYWMzNDk4ZGJjZjIwMDJhZjk4MjA5Y2E5NWVkZTEzYTQ2OC4uMjY0
OTEzMjMyMjA1ZDVhMzc1ZjBhNDRkNWQ0NGZmOTlhYzBkZWJjMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0RPTUVkaXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9ET01FZGl0b3IuaApAQCAtMzEsNiArMzEsOCBAQAogI2lmbmRlZiBET01FZGl0b3JfaAog
I2RlZmluZSBET01FZGl0b3JfaAogCisjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgorCiAjaW5j
bHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTUw
LDcgKzUyLDE2IEBAIHB1YmxpYzoKICAgICBleHBsaWNpdCBET01FZGl0b3IoSW5zcGVjdG9ySGlz
dG9yeSopOwogICAgIH5ET01FZGl0b3IoKTsKIAotICAgIGJvb2wgaW5zZXJ0QmVmb3JlKE5vZGUq
IHBhcmVudE5vZGUsIE5vZGUqLCBOb2RlKiBhbmNob3JOb2RlLCBFcnJvclN0cmluZyopOworICAg
IGJvb2wgaW5zZXJ0QmVmb3JlKE5vZGUqIHBhcmVudE5vZGUsIFBhc3NSZWZQdHI8Tm9kZT4sIE5v
ZGUqIGFuY2hvck5vZGUsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBib29sIHJlbW92ZUNoaWxkKE5v
ZGUqIHBhcmVudE5vZGUsIE5vZGUqLCBFeGNlcHRpb25Db2RlJik7CisgICAgYm9vbCBzZXRBdHRy
aWJ1dGUoRWxlbWVudCosIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSwg
RXhjZXB0aW9uQ29kZSYpOworICAgIGJvb2wgcmVtb3ZlQXR0cmlidXRlKEVsZW1lbnQqLCBjb25z
dCBTdHJpbmcmIG5hbWUsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBib29sIHNldE91dGVySFRNTChO
b2RlKiwgY29uc3QgU3RyaW5nJiBodG1sLCBOb2RlKiogbmV3Tm9kZSwgRXhjZXB0aW9uQ29kZSYp
OworICAgIGJvb2wgcmVwbGFjZVdob2xlVGV4dChUZXh0KiwgY29uc3QgU3RyaW5nJiB0ZXh0LCBF
eGNlcHRpb25Db2RlJik7CisgICAgYm9vbCByZXBsYWNlQ2hpbGQoTm9kZSogcGFyZW50Tm9kZSwg
UGFzc1JlZlB0cjxOb2RlPiBuZXdOb2RlLCBOb2RlKiBvbGROb2RlLCBFeGNlcHRpb25Db2RlJik7
CisgICAgYm9vbCBzZXROb2RlVmFsdWUoTm9kZSogcGFyZW50Tm9kZSwgY29uc3QgU3RyaW5nJiB2
YWx1ZSwgRXhjZXB0aW9uQ29kZSYpOworCisgICAgYm9vbCBpbnNlcnRCZWZvcmUoTm9kZSogcGFy
ZW50Tm9kZSwgUGFzc1JlZlB0cjxOb2RlPiwgTm9kZSogYW5jaG9yTm9kZSwgRXJyb3JTdHJpbmcq
KTsKICAgICBib29sIHJlbW92ZUNoaWxkKE5vZGUqIHBhcmVudE5vZGUsIE5vZGUqLCBFcnJvclN0
cmluZyopOwogICAgIGJvb2wgc2V0QXR0cmlidXRlKEVsZW1lbnQqLCBjb25zdCBTdHJpbmcmIG5h
bWUsIGNvbnN0IFN0cmluZyYgdmFsdWUsIEVycm9yU3RyaW5nKik7CiAgICAgYm9vbCByZW1vdmVB
dHRyaWJ1dGUoRWxlbWVudCosIGNvbnN0IFN0cmluZyYgbmFtZSwgRXJyb3JTdHJpbmcqKTsKQEAg
LTY1LDYgKzc2LDggQEAgcHJpdmF0ZToKICAgICBjbGFzcyBTZXRBdHRyaWJ1dGVBY3Rpb247CiAg
ICAgY2xhc3MgU2V0T3V0ZXJIVE1MQWN0aW9uOwogICAgIGNsYXNzIFJlcGxhY2VXaG9sZVRleHRB
Y3Rpb247CisgICAgY2xhc3MgUmVwbGFjZUNoaWxkTm9kZUFjdGlvbjsKKyAgICBjbGFzcyBTZXRO
b2RlVmFsdWVBY3Rpb247CiAKICAgICBJbnNwZWN0b3JIaXN0b3J5KiBtX2hpc3Rvcnk7CiB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTVBhdGNoU3VwcG9ydC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9NUGF0Y2hTdXBwb3J0LmNwcAppbmRleCA0MTEz
YjNkODFkMmZmNGJmNjg3NWFlMTNhMmFjYjg3M2I5MzJkNzhhLi45ZWQ4OWEzM2M5YWI0MTA2ZTU3
OTRhZjZhZWJmYzU1MDIyZDM4N2U5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvRE9NUGF0Y2hTdXBwb3J0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9N
UGF0Y2hTdXBwb3J0LmNwcApAQCAtMzUsNiArMzUsNyBAQAogCiAjaW5jbHVkZSAiQXR0cmlidXRl
LmgiCiAjaW5jbHVkZSAiQmFzZTY0LmgiCisjaW5jbHVkZSAiRE9NRWRpdG9yLmgiCiAjaW5jbHVk
ZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJEb2N1bWVudEZyYWdtZW50LmgiCiAjaW5jbHVkZSAi
SFRNTERvY3VtZW50LmgiCkBAIC00Miw2ICs0Myw3IEBACiAjaW5jbHVkZSAiSFRNTEVsZW1lbnQu
aCIKICNpbmNsdWRlICJIVE1MSGVhZEVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIK
KyNpbmNsdWRlICJJbnNwZWN0b3JIaXN0b3J5LmgiCiAjaW5jbHVkZSAiTm9kZS5oIgogCiAjaW5j
bHVkZSA8d3RmL0RlcXVlLmg+CkBAIC02Nyw3ICs2OSwxOSBAQCBzdHJ1Y3QgRE9NUGF0Y2hTdXBw
b3J0OjpEaWdlc3QgewogICAgIFZlY3RvcjxPd25QdHI8RGlnZXN0PiA+IG1fY2hpbGRyZW47CiB9
OwogCi1ET01QYXRjaFN1cHBvcnQ6OkRPTVBhdGNoU3VwcG9ydChEb2N1bWVudCogZG9jdW1lbnQp
IDogbV9kb2N1bWVudChkb2N1bWVudCkgeyB9Cit2b2lkIERPTVBhdGNoU3VwcG9ydDo6cGF0Y2hE
b2N1bWVudChEb2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IFN0cmluZyYgbWFya3VwKQoreworICAg
IEluc3BlY3Rvckhpc3RvcnkgaGlzdG9yeTsKKyAgICBET01FZGl0b3IgZG9tRWRpdG9yKCZoaXN0
b3J5KTsKKyAgICBET01QYXRjaFN1cHBvcnQgcGF0Y2hTdXBwb3J0KCZkb21FZGl0b3IsIGRvY3Vt
ZW50KTsKKyAgICBwYXRjaFN1cHBvcnQucGF0Y2hEb2N1bWVudChtYXJrdXApOworfQorCitET01Q
YXRjaFN1cHBvcnQ6OkRPTVBhdGNoU3VwcG9ydChET01FZGl0b3IqIGRvbUVkaXRvciwgRG9jdW1l
bnQqIGRvY3VtZW50KQorICAgIDogbV9kb21FZGl0b3IoZG9tRWRpdG9yKQorICAgICwgbV9kb2N1
bWVudChkb2N1bWVudCkKK3sKK30KIAogRE9NUGF0Y2hTdXBwb3J0Ojp+RE9NUGF0Y2hTdXBwb3J0
KCkgeyB9CiAKQEAgLTc5LDEyICs5MywxMSBAQCB2b2lkIERPTVBhdGNoU3VwcG9ydDo6cGF0Y2hE
b2N1bWVudChjb25zdCBTdHJpbmcmIG1hcmt1cCkKICAgICBwYXJzZXItPmZpbmlzaCgpOwogICAg
IHBhcnNlci0+ZGV0YWNoKCk7CiAKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICBPd25Q
dHI8RGlnZXN0PiBvbGRJbmZvID0gY3JlYXRlRGlnZXN0KG1fZG9jdW1lbnQtPmRvY3VtZW50RWxl
bWVudCgpLCAwKTsKICAgICBPd25QdHI8RGlnZXN0PiBuZXdJbmZvID0gY3JlYXRlRGlnZXN0KG5l
d0RvY3VtZW50LT5kb2N1bWVudEVsZW1lbnQoKSwgJm1fdW51c2VkTm9kZXNNYXApOwotICAgIGlu
bmVyUGF0Y2hOb2RlKG9sZEluZm8uZ2V0KCksIG5ld0luZm8uZ2V0KCksIGVjKTsKIAotICAgIGlm
IChlYykgeworICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIGlmICghaW5uZXJQYXRjaE5v
ZGUob2xkSW5mby5nZXQoKSwgbmV3SW5mby5nZXQoKSwgZWMpKSB7CiAgICAgICAgIC8vIEZhbGwg
YmFjayB0byByZXdyaXRlLgogICAgICAgICBtX2RvY3VtZW50LT53cml0ZShtYXJrdXApOwogICAg
ICAgICBtX2RvY3VtZW50LT5jbG9zZSgpOwpAQCAtMTI1LDM3ICsxMzgsMzMgQEAgTm9kZSogRE9N
UGF0Y2hTdXBwb3J0OjpwYXRjaE5vZGUoTm9kZSogbm9kZSwgY29uc3QgU3RyaW5nJiBtYXJrdXAs
IEV4Y2VwdGlvbkNvZGUKICAgICBmb3IgKE5vZGUqIGNoaWxkID0gbm9kZS0+bmV4dFNpYmxpbmco
KTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5leHRTaWJsaW5nKCkpCiAgICAgICAgIG5ld0xpc3Qu
YXBwZW5kKGNyZWF0ZURpZ2VzdChjaGlsZCwgMCkpOwogCi0gICAgaW5uZXJQYXRjaENoaWxkcmVu
KHBhcmVudE5vZGUsIG9sZExpc3QsIG5ld0xpc3QsIGVjKTsKLSAgICBpZiAoZWMpIHsKKyAgICBp
ZiAoIWlubmVyUGF0Y2hDaGlsZHJlbihwYXJlbnROb2RlLCBvbGRMaXN0LCBuZXdMaXN0LCBlYykp
IHsKICAgICAgICAgLy8gRmFsbCBiYWNrIHRvIHRvdGFsIHJlcGxhY2UuCiAgICAgICAgIGVjID0g
MDsKLSAgICAgICAgcGFyZW50Tm9kZS0+cmVwbGFjZUNoaWxkKGZyYWdtZW50LnJlbGVhc2UoKSwg
bm9kZSwgZWMpOwotICAgICAgICBpZiAoZWMpCisgICAgICAgIGlmICghbV9kb21FZGl0b3ItPnJl
cGxhY2VDaGlsZChwYXJlbnROb2RlLCBmcmFnbWVudC5yZWxlYXNlKCksIG5vZGUsIGVjKSkKICAg
ICAgICAgICAgIHJldHVybiAwOwogICAgIH0KICAgICByZXR1cm4gcHJldmlvdXNTaWJsaW5nID8g
cHJldmlvdXNTaWJsaW5nLT5uZXh0U2libGluZygpIDogcGFyZW50Tm9kZS0+Zmlyc3RDaGlsZCgp
OwogfQogCi12b2lkIERPTVBhdGNoU3VwcG9ydDo6aW5uZXJQYXRjaE5vZGUoRGlnZXN0KiBvbGRE
aWdlc3QsIERpZ2VzdCogbmV3RGlnZXN0LCBFeGNlcHRpb25Db2RlJiBlYykKK2Jvb2wgRE9NUGF0
Y2hTdXBwb3J0Ojppbm5lclBhdGNoTm9kZShEaWdlc3QqIG9sZERpZ2VzdCwgRGlnZXN0KiBuZXdE
aWdlc3QsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIGlmIChvbGREaWdlc3QtPm1fc2hhMSA9
PSBuZXdEaWdlc3QtPm1fc2hhMSkKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gdHJ1
ZTsKIAogICAgIE5vZGUqIG9sZE5vZGUgPSBvbGREaWdlc3QtPm1fbm9kZTsKICAgICBOb2RlKiBu
ZXdOb2RlID0gbmV3RGlnZXN0LT5tX25vZGU7CiAKLSAgICBpZiAobmV3Tm9kZS0+bm9kZVR5cGUo
KSAhPSBvbGROb2RlLT5ub2RlVHlwZSgpIHx8IG5ld05vZGUtPm5vZGVOYW1lKCkgIT0gb2xkTm9k
ZS0+bm9kZU5hbWUoKSkgewotICAgICAgICBvbGROb2RlLT5wYXJlbnROb2RlKCktPnJlcGxhY2VD
aGlsZChuZXdOb2RlLCBvbGROb2RlLCBlYyk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9CisgICAg
aWYgKG5ld05vZGUtPm5vZGVUeXBlKCkgIT0gb2xkTm9kZS0+bm9kZVR5cGUoKSB8fCBuZXdOb2Rl
LT5ub2RlTmFtZSgpICE9IG9sZE5vZGUtPm5vZGVOYW1lKCkpCisgICAgICAgIHJldHVybiBtX2Rv
bUVkaXRvci0+cmVwbGFjZUNoaWxkKG9sZE5vZGUtPnBhcmVudE5vZGUoKSwgbmV3Tm9kZSwgb2xk
Tm9kZSwgZWMpOwogCi0gICAgaWYgKG9sZE5vZGUtPm5vZGVWYWx1ZSgpICE9IG5ld05vZGUtPm5v
ZGVWYWx1ZSgpKQotICAgICAgICBvbGROb2RlLT5zZXROb2RlVmFsdWUobmV3Tm9kZS0+bm9kZVZh
bHVlKCksIGVjKTsKLSAgICBpZiAoZWMpCi0gICAgICAgIHJldHVybjsKKyAgICBpZiAob2xkTm9k
ZS0+bm9kZVZhbHVlKCkgIT0gbmV3Tm9kZS0+bm9kZVZhbHVlKCkpIHsKKyAgICAgICAgaWYgKCFt
X2RvbUVkaXRvci0+c2V0Tm9kZVZhbHVlKG9sZE5vZGUsIG5ld05vZGUtPm5vZGVWYWx1ZSgpLCBl
YykpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQogCiAgICAgaWYgKG9sZE5vZGUt
Pm5vZGVUeXBlKCkgIT0gTm9kZTo6RUxFTUVOVF9OT0RFKQotICAgICAgICByZXR1cm47CisgICAg
ICAgIHJldHVybiB0cnVlOwogCiAgICAgLy8gUGF0Y2ggYXR0cmlidXRlcwogICAgIEVsZW1lbnQq
IG9sZEVsZW1lbnQgPSBzdGF0aWNfY2FzdDxFbGVtZW50Kj4ob2xkTm9kZSk7CkBAIC0xNjMsOCAr
MTcyLDExIEBAIHZvaWQgRE9NUGF0Y2hTdXBwb3J0Ojppbm5lclBhdGNoTm9kZShEaWdlc3QqIG9s
ZERpZ2VzdCwgRGlnZXN0KiBuZXdEaWdlc3QsIEV4Y2VwCiAgICAgaWYgKG9sZERpZ2VzdC0+bV9h
dHRyc1NIQTEgIT0gbmV3RGlnZXN0LT5tX2F0dHJzU0hBMSkgewogICAgICAgICAvLyBGSVhNRTog
Q3JlYXRlIGEgZnVuY3Rpb24gaW4gRWxlbWVudCBmb3IgcmVtb3ZpbmcgYWxsIHByb3BlcnRpZXMu
IFRha2UgaW4gYWNjb3VudCB3aGV0aGVyIGRpZC93aWxsTW9kaWZ5QXR0cmlidXRlIGFyZSBpbXBv
cnRhbnQuCiAgICAgICAgIGlmIChvbGRFbGVtZW50LT5oYXNBdHRyaWJ1dGVzV2l0aG91dFVwZGF0
ZSgpKSB7Ci0gICAgICAgICAgICB3aGlsZSAob2xkRWxlbWVudC0+YXR0cmlidXRlQ291bnQoKSkK
LSAgICAgICAgICAgICAgICBvbGRFbGVtZW50LT5yZW1vdmVBdHRyaWJ1dGUoMCk7CisgICAgICAg
ICAgICB3aGlsZSAob2xkRWxlbWVudC0+YXR0cmlidXRlQ291bnQoKSkgeworICAgICAgICAgICAg
ICAgIEF0dHJpYnV0ZSogYXR0ciA9IG9sZEVsZW1lbnQtPmF0dHJpYnV0ZUl0ZW0oMCk7CisgICAg
ICAgICAgICAgICAgaWYgKCFtX2RvbUVkaXRvci0+cmVtb3ZlQXR0cmlidXRlKG9sZEVsZW1lbnQs
IGF0dHItPmxvY2FsTmFtZSgpLCBlYykpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogCiAgICAgICAgIC8vIEZJWE1FOiBDcmVhdGUg
YSBmdW5jdGlvbiBpbiBFbGVtZW50IGZvciBjb3B5aW5nIHByb3BlcnRpZXMuIHNldEF0dHJpYnV0
ZXNGcm9tRWxlbWVudCgpIGlzIGNsb3NlIGJ1dCBub3QgZW5vdWdoIGZvciB0aGlzIGNhc2UuCkBA
IC0xNzIsMTMgKzE4NCwxNSBAQCB2b2lkIERPTVBhdGNoU3VwcG9ydDo6aW5uZXJQYXRjaE5vZGUo
RGlnZXN0KiBvbGREaWdlc3QsIERpZ2VzdCogbmV3RGlnZXN0LCBFeGNlcAogICAgICAgICAgICAg
c2l6ZV90IG51bUF0dHJzID0gbmV3RWxlbWVudC0+YXR0cmlidXRlQ291bnQoKTsKICAgICAgICAg
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVtQXR0cnM7ICsraSkgewogICAgICAgICAgICAg
ICAgIGNvbnN0IEF0dHJpYnV0ZSogYXR0cmlidXRlID0gbmV3RWxlbWVudC0+YXR0cmlidXRlSXRl
bShpKTsKLSAgICAgICAgICAgICAgICBvbGRFbGVtZW50LT5zZXRBdHRyaWJ1dGUoYXR0cmlidXRl
LT5uYW1lKCksIGF0dHJpYnV0ZS0+dmFsdWUoKSk7CisgICAgICAgICAgICAgICAgaWYgKCFtX2Rv
bUVkaXRvci0+c2V0QXR0cmlidXRlKG9sZEVsZW1lbnQsIGF0dHJpYnV0ZS0+bmFtZSgpLmxvY2Fs
TmFtZSgpLCBhdHRyaWJ1dGUtPnZhbHVlKCksIGVjKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQogCi0gICAgaW5uZXJQ
YXRjaENoaWxkcmVuKG9sZEVsZW1lbnQsIG9sZERpZ2VzdC0+bV9jaGlsZHJlbiwgbmV3RGlnZXN0
LT5tX2NoaWxkcmVuLCBlYyk7CisgICAgYm9vbCByZXN1bHQgPSBpbm5lclBhdGNoQ2hpbGRyZW4o
b2xkRWxlbWVudCwgb2xkRGlnZXN0LT5tX2NoaWxkcmVuLCBuZXdEaWdlc3QtPm1fY2hpbGRyZW4s
IGVjKTsKICAgICBtX3VudXNlZE5vZGVzTWFwLnJlbW92ZShuZXdEaWdlc3QtPm1fc2hhMSk7Cisg
ICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogcGFpcjxET01QYXRjaFN1cHBvcnQ6OlJlc3VsdE1hcCwg
RE9NUGF0Y2hTdXBwb3J0OjpSZXN1bHRNYXA+CkBAIC0yNjksNyArMjgzLDcgQEAgRE9NUGF0Y2hT
dXBwb3J0OjpkaWZmKGNvbnN0IFZlY3RvcjxPd25QdHI8RGlnZXN0PiA+JiBvbGRMaXN0LCBjb25z
dCBWZWN0b3I8T3duUHQKICAgICByZXR1cm4gbWFrZV9wYWlyKG9sZE1hcCwgbmV3TWFwKTsKIH0K
IAotdm9pZCBET01QYXRjaFN1cHBvcnQ6OmlubmVyUGF0Y2hDaGlsZHJlbihDb250YWluZXJOb2Rl
KiBwYXJlbnROb2RlLCBjb25zdCBWZWN0b3I8T3duUHRyPERpZ2VzdD4gPiYgb2xkTGlzdCwgY29u
c3QgVmVjdG9yPE93blB0cjxEaWdlc3Q+ID4mIG5ld0xpc3QsIEV4Y2VwdGlvbkNvZGUmIGVjKQor
Ym9vbCBET01QYXRjaFN1cHBvcnQ6OmlubmVyUGF0Y2hDaGlsZHJlbihDb250YWluZXJOb2RlKiBw
YXJlbnROb2RlLCBjb25zdCBWZWN0b3I8T3duUHRyPERpZ2VzdD4gPiYgb2xkTGlzdCwgY29uc3Qg
VmVjdG9yPE93blB0cjxEaWdlc3Q+ID4mIG5ld0xpc3QsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewog
ICAgIHBhaXI8UmVzdWx0TWFwLCBSZXN1bHRNYXA+IHJlc3VsdE1hcHMgPSBkaWZmKG9sZExpc3Qs
IG5ld0xpc3QpOwogICAgIFJlc3VsdE1hcCYgb2xkTWFwID0gcmVzdWx0TWFwcy5maXJzdDsKQEAg
LTMwOSwxNCArMzIzLDEyIEBAIHZvaWQgRE9NUGF0Y2hTdXBwb3J0Ojppbm5lclBhdGNoQ2hpbGRy
ZW4oQ29udGFpbmVyTm9kZSogcGFyZW50Tm9kZSwgY29uc3QgVmVjdG9yCiAgICAgICAgICAgICBp
ZiAoYW5jaG9yQWZ0ZXIgLSBhbmNob3JDYW5kaWRhdGUgPT0gMSAmJiBhbmNob3JDYW5kaWRhdGUg
PCBuZXdMaXN0LnNpemUoKSkKICAgICAgICAgICAgICAgICBtZXJnZXMuc2V0KG5ld0xpc3RbYW5j
aG9yQ2FuZGlkYXRlXS5nZXQoKSwgb2xkTGlzdFtpXS5nZXQoKSk7CiAgICAgICAgICAgICBlbHNl
IHsKLSAgICAgICAgICAgICAgICByZW1vdmVDaGlsZChvbGRMaXN0W2ldLmdldCgpLCBlYyk7Ci0g
ICAgICAgICAgICAgICAgaWYgKGVjKQotICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgICAgICAgICAgaWYgKCFyZW1vdmVDaGlsZEFuZE1vdmVUb05ldyhvbGRMaXN0W2ldLmdldCgp
LCBlYykpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIH0K
ICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHJlbW92ZUNoaWxkKG9sZExpc3RbaV0uZ2V0
KCksIGVjKTsKLSAgICAgICAgICAgIGlmIChlYykKLSAgICAgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgICAgICBpZiAoIXJlbW92ZUNoaWxkQW5kTW92ZVRvTmV3KG9sZExpc3RbaV0uZ2V0KCks
IGVjKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICB9CiAK
QEAgLTM0OCwyMCArMzYwLDE2IEBAIHZvaWQgRE9NUGF0Y2hTdXBwb3J0Ojppbm5lclBhdGNoQ2hp
bGRyZW4oQ29udGFpbmVyTm9kZSogcGFyZW50Tm9kZSwgY29uc3QgVmVjdG9yCiAKICAgICAvLyAy
LiBQYXRjaCBub2RlcyBtYXJrZWQgZm9yIG1lcmdlLgogICAgIGZvciAoSGFzaE1hcDxEaWdlc3Qq
LCBEaWdlc3QqPjo6aXRlcmF0b3IgaXQgPSBtZXJnZXMuYmVnaW4oKTsgaXQgIT0gbWVyZ2VzLmVu
ZCgpOyArK2l0KSB7Ci0gICAgICAgIGlubmVyUGF0Y2hOb2RlKGl0LT5zZWNvbmQsIGl0LT5maXJz
dCwgZWMpOwotICAgICAgICBpZiAoZWMpCi0gICAgICAgICAgICByZXR1cm47CisgICAgICAgIGlm
ICghaW5uZXJQYXRjaE5vZGUoaXQtPnNlY29uZCwgaXQtPmZpcnN0LCBlYykpCisgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgfQogCiAgICAgLy8gMy4gSW5zZXJ0IG1pc3Npbmcgbm9kZXMu
CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBuZXdNYXAuc2l6ZSgpOyArK2kpIHsKICAgICAg
ICAgaWYgKG5ld01hcFtpXS5maXJzdCB8fCBtZXJnZXMuY29udGFpbnMobmV3TGlzdFtpXS5nZXQo
KSkpCiAgICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICBFeGNlcHRpb25Db2RlIGVjID0g
MDsKLSAgICAgICAgaW5zZXJ0QmVmb3JlKHBhcmVudE5vZGUsIG5ld0xpc3RbaV0uZ2V0KCksIHBh
cmVudE5vZGUtPmNoaWxkTm9kZShpKSwgZWMpOwotICAgICAgICBpZiAoZWMpCi0gICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIGlmICghaW5zZXJ0QmVmb3JlQW5kTWFya0FzVXNlZChwYXJlbnRO
b2RlLCBuZXdMaXN0W2ldLmdldCgpLCBwYXJlbnROb2RlLT5jaGlsZE5vZGUoaSksIGVjKSkKKyAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKICAgICAvLyA0LiBUaGVuIHB1dCBhbGwg
bm9kZXMgdGhhdCByZXRhaW5lZCBpbnRvIHRoZWlyIHNsb3RzIChzb3J0IGJ5IG5ldyBpbmRleCku
CkBAIC0zNzUsMTAgKzM4MywxMCBAQCB2b2lkIERPTVBhdGNoU3VwcG9ydDo6aW5uZXJQYXRjaENo
aWxkcmVuKENvbnRhaW5lck5vZGUqIHBhcmVudE5vZGUsIGNvbnN0IFZlY3RvcgogICAgICAgICBp
ZiAobm9kZS0+aGFzVGFnTmFtZShib2R5VGFnKSB8fCBub2RlLT5oYXNUYWdOYW1lKGhlYWRUYWcp
KQogICAgICAgICAgICAgY29udGludWU7IC8vIE5ldmVyIG1vdmUgaGVhZCBvciBib2R5LCBtb3Zl
IHRoZSByZXN0IG9mIHRoZSBub2RlcyBhcm91bmQgdGhlbS4KIAotICAgICAgICBwYXJlbnROb2Rl
LT5pbnNlcnRCZWZvcmUobm9kZSwgYW5jaG9yTm9kZSwgZWMpOwotICAgICAgICBpZiAoZWMpCi0g
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIGlmICghbV9kb21FZGl0b3ItPmluc2VydEJlZm9y
ZShwYXJlbnROb2RlLCBub2RlLnJlbGVhc2UoKSwgYW5jaG9yTm9kZSwgZWMpKQorICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIHZv
aWQgYWRkU3RyaW5nVG9TSEExKFNIQTEmIHNoYTEsIGNvbnN0IFN0cmluZyYgc3RyaW5nKQpAQCAt
NDMxLDM1ICs0MzksNDAgQEAgUGFzc093blB0cjxET01QYXRjaFN1cHBvcnQ6OkRpZ2VzdD4gRE9N
UGF0Y2hTdXBwb3J0OjpjcmVhdGVEaWdlc3QoTm9kZSogbm9kZSwgVW4KICAgICByZXR1cm4gYWRv
cHRQdHIoZGlnZXN0KTsKIH0KIAotdm9pZCBET01QYXRjaFN1cHBvcnQ6Omluc2VydEJlZm9yZShD
b250YWluZXJOb2RlKiBwYXJlbnROb2RlLCBEaWdlc3QqIGRpZ2VzdCwgTm9kZSogYW5jaG9yLCBF
eGNlcHRpb25Db2RlJiBlYykKK2Jvb2wgRE9NUGF0Y2hTdXBwb3J0OjppbnNlcnRCZWZvcmVBbmRN
YXJrQXNVc2VkKENvbnRhaW5lck5vZGUqIHBhcmVudE5vZGUsIERpZ2VzdCogZGlnZXN0LCBOb2Rl
KiBhbmNob3IsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewotICAgIHBhcmVudE5vZGUtPmluc2VydEJl
Zm9yZShkaWdlc3QtPm1fbm9kZSwgYW5jaG9yLCBlYyk7CisgICAgYm9vbCByZXN1bHQgPSBtX2Rv
bUVkaXRvci0+aW5zZXJ0QmVmb3JlKHBhcmVudE5vZGUsIGRpZ2VzdC0+bV9ub2RlLCBhbmNob3Is
IGVjKTsKICAgICBtYXJrTm9kZUFzVXNlZChkaWdlc3QpOworICAgIHJldHVybiByZXN1bHQ7CiB9
CiAKLXZvaWQgRE9NUGF0Y2hTdXBwb3J0OjpyZW1vdmVDaGlsZChEaWdlc3QqIG9sZERpZ2VzdCwg
RXhjZXB0aW9uQ29kZSYgZWMpCitib29sIERPTVBhdGNoU3VwcG9ydDo6cmVtb3ZlQ2hpbGRBbmRN
b3ZlVG9OZXcoRGlnZXN0KiBvbGREaWdlc3QsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIFJl
ZlB0cjxOb2RlPiBvbGROb2RlID0gb2xkRGlnZXN0LT5tX25vZGU7Ci0gICAgb2xkTm9kZS0+cGFy
ZW50Tm9kZSgpLT5yZW1vdmVDaGlsZChvbGROb2RlLmdldCgpLCBlYyk7CisgICAgaWYgKCFtX2Rv
bUVkaXRvci0+cmVtb3ZlQ2hpbGQob2xkTm9kZS0+cGFyZW50Tm9kZSgpLCBvbGROb2RlLmdldCgp
LCBlYykpCisgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIC8vIERpZmYgd29ya3Mgd2l0aGlu
IGxldmVscy4gSW4gb3JkZXIgbm90IHRvIGxvc2UgdGhlIG5vZGUgaWRlbnRpdHkgd2hlbiB1c2Vy
CiAgICAgLy8gcHJlcGVuZHMgaGlzIEhUTUwgd2l0aCAiPGRpdj4iIChpLmUuIGFsbCBub2RlcyBh
cmUgc2hpZnRlZCB0byB0aGUgbmV4dCBuZXN0ZWQgbGV2ZWwpLAogICAgIC8vIHByaW9yIHRvIGRy
b3BwaW5nIHRoZSBvcmlnaW5hbCBub2RlIG9uIHRoZSBmbG9vciwgY2hlY2sgd2hldGhlciBuZXcg
RE9NIGhhcyBhIGRpZ2VzdAogICAgIC8vIHdpdGggbWF0Y2hpbmcgc2hhMS4gSWYgaXQgZG9lcywg
cmVwbGFjZSBpdCB3aXRoIHRoZSBvcmlnaW5hbCBET00gY2h1bmsuIENoYW5jZXMgYXJlCiAgICAg
Ly8gaGlnaCB0aGF0IGl0IHdpbGwgZ2V0IG1lcmdlZCBiYWNrIGludG8gdGhlIG9yaWdpbmFsIERP
TSBkdXJpbmcgdGhlIGZ1cnRoZXIgcGF0Y2hpbmcuCi0KICAgICBVbnVzZWROb2Rlc01hcDo6aXRl
cmF0b3IgaXQgPSBtX3VudXNlZE5vZGVzTWFwLmZpbmQob2xkRGlnZXN0LT5tX3NoYTEpOwogICAg
IGlmIChpdCAhPSBtX3VudXNlZE5vZGVzTWFwLmVuZCgpKSB7CiAgICAgICAgIERpZ2VzdCogbmV3
RGlnZXN0ID0gaXQtPnNlY29uZDsKICAgICAgICAgTm9kZSogbmV3Tm9kZSA9IG5ld0RpZ2VzdC0+
bV9ub2RlOwotICAgICAgICBuZXdOb2RlLT5wYXJlbnROb2RlKCktPnJlcGxhY2VDaGlsZChvbGRO
b2RlLCBuZXdOb2RlLCBlYyk7CisgICAgICAgIGlmICghbV9kb21FZGl0b3ItPnJlcGxhY2VDaGls
ZChuZXdOb2RlLT5wYXJlbnROb2RlKCksIG9sZE5vZGUsIG5ld05vZGUsIGVjKSkKKyAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgbmV3RGlnZXN0LT5tX25vZGUgPSBvbGROb2RlLmdl
dCgpOwogICAgICAgICBtYXJrTm9kZUFzVXNlZChuZXdEaWdlc3QpOwotICAgICAgICByZXR1cm47
CisgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgb2xkRGlnZXN0LT5tX2NoaWxkcmVuLnNpemUoKTsgKytpKQotICAgICAgICByZW1vdmVDaGls
ZChvbGREaWdlc3QtPm1fY2hpbGRyZW5baV0uZ2V0KCksIGVjKTsKKyAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IG9sZERpZ2VzdC0+bV9jaGlsZHJlbi5zaXplKCk7ICsraSkgeworICAgICAgICBp
ZiAoIXJlbW92ZUNoaWxkQW5kTW92ZVRvTmV3KG9sZERpZ2VzdC0+bV9jaGlsZHJlbltpXS5nZXQo
KSwgZWMpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICByZXR1cm4gdHJ1
ZTsKIH0KIAogdm9pZCBET01QYXRjaFN1cHBvcnQ6Om1hcmtOb2RlQXNVc2VkKERpZ2VzdCogZGln
ZXN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTVBhdGNoU3VwcG9y
dC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTVBhdGNoU3VwcG9ydC5oCmluZGV4IDRh
MDcxOTI3ZmFhOTdjNGM0OWJkY2M0ZTI4MTA1M2IwZmE3MGZlYjAuLjRkMDQwZjA4Yjk2ZDNkN2Zi
YzFiNjQ4MmU0ZGQwNjkxZDRkMTZlZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9ET01QYXRjaFN1cHBvcnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9N
UGF0Y2hTdXBwb3J0LmgKQEAgLTQyLDYgKzQyLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Y2xhc3MgQ29udGFpbmVyTm9kZTsKK2NsYXNzIERPTUVkaXRvcjsKIGNsYXNzIERvY3VtZW50Owog
Y2xhc3MgTmFtZWROb2RlTWFwOwogY2xhc3MgTm9kZTsKQEAgLTUxLDcgKzUyLDkgQEAgY2xhc3Mg
Tm9kZTsKIGNsYXNzIERPTVBhdGNoU3VwcG9ydCB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUo
RE9NUGF0Y2hTdXBwb3J0KTsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBET01QYXRjaFN1cHBvcnQo
RG9jdW1lbnQqKTsKKyAgICBzdGF0aWMgdm9pZCBwYXRjaERvY3VtZW50KERvY3VtZW50KiwgY29u
c3QgU3RyaW5nJiBtYXJrdXApOworCisgICAgRE9NUGF0Y2hTdXBwb3J0KERPTUVkaXRvciosIERv
Y3VtZW50Kik7CiAgICAgdmlydHVhbCB+RE9NUGF0Y2hTdXBwb3J0KCk7CiAKICAgICB2b2lkIHBh
dGNoRG9jdW1lbnQoY29uc3QgU3RyaW5nJiBtYXJrdXApOwpAQCAtNjIsMTcgKzY1LDE4IEBAIHBy
aXZhdGU6CiAgICAgdHlwZWRlZiBWZWN0b3I8cGFpcjxEaWdlc3QqLCBzaXplX3Q+ID4gUmVzdWx0
TWFwOwogICAgIHR5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIERpZ2VzdCo+IFVudXNlZE5vZGVzTWFw
OwogCi0gICAgdm9pZCBpbm5lclBhdGNoTm9kZShEaWdlc3QqIG9sZE5vZGUsIERpZ2VzdCogbmV3
Tm9kZSwgRXhjZXB0aW9uQ29kZSYpOworICAgIGJvb2wgaW5uZXJQYXRjaE5vZGUoRGlnZXN0KiBv
bGROb2RlLCBEaWdlc3QqIG5ld05vZGUsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICBzdGQ6OnBhaXI8
UmVzdWx0TWFwLCBSZXN1bHRNYXA+IGRpZmYoY29uc3QgVmVjdG9yPE93blB0cjxEaWdlc3Q+ID4m
IG9sZENoaWxkcmVuLCBjb25zdCBWZWN0b3I8T3duUHRyPERpZ2VzdD4gPiYgbmV3Q2hpbGRyZW4p
OwotICAgIHZvaWQgaW5uZXJQYXRjaENoaWxkcmVuKENvbnRhaW5lck5vZGUqLCBjb25zdCBWZWN0
b3I8T3duUHRyPERpZ2VzdD4gPiYgb2xkQ2hpbGRyZW4sIGNvbnN0IFZlY3RvcjxPd25QdHI8RGln
ZXN0PiA+JiBuZXdDaGlsZHJlbiwgRXhjZXB0aW9uQ29kZSYpOworICAgIGJvb2wgaW5uZXJQYXRj
aENoaWxkcmVuKENvbnRhaW5lck5vZGUqLCBjb25zdCBWZWN0b3I8T3duUHRyPERpZ2VzdD4gPiYg
b2xkQ2hpbGRyZW4sIGNvbnN0IFZlY3RvcjxPd25QdHI8RGlnZXN0PiA+JiBuZXdDaGlsZHJlbiwg
RXhjZXB0aW9uQ29kZSYpOwogICAgIFBhc3NPd25QdHI8RGlnZXN0PiBjcmVhdGVEaWdlc3QoTm9k
ZSosIFVudXNlZE5vZGVzTWFwKik7Ci0gICAgdm9pZCBpbnNlcnRCZWZvcmUoQ29udGFpbmVyTm9k
ZSosIERpZ2VzdCosIE5vZGUqIGFuY2hvciwgRXhjZXB0aW9uQ29kZSYpOwotICAgIHZvaWQgcmVt
b3ZlQ2hpbGQoRGlnZXN0KiwgRXhjZXB0aW9uQ29kZSYpOworICAgIGJvb2wgaW5zZXJ0QmVmb3Jl
QW5kTWFya0FzVXNlZChDb250YWluZXJOb2RlKiwgRGlnZXN0KiwgTm9kZSogYW5jaG9yLCBFeGNl
cHRpb25Db2RlJik7CisgICAgYm9vbCByZW1vdmVDaGlsZEFuZE1vdmVUb05ldyhEaWdlc3QqLCBF
eGNlcHRpb25Db2RlJik7CiAgICAgdm9pZCBtYXJrTm9kZUFzVXNlZChEaWdlc3QqKTsKICNpZmRl
ZiBERUJVR19ET01fUEFUQ0hfU1VQUE9SVAogICAgIHZvaWQgZHVtcE1hcChjb25zdCBSZXN1bHRN
YXAmLCBjb25zdCBTdHJpbmcmIG5hbWUpOwogI2VuZGlmCiAKKyAgICBET01FZGl0b3IqIG1fZG9t
RWRpdG9yOwogICAgIERvY3VtZW50KiBtX2RvY3VtZW50OwogCiAgICAgVW51c2VkTm9kZXNNYXAg
bV91bnVzZWROb2Rlc01hcDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JDU1NBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
Q1NTQWdlbnQuY3BwCmluZGV4IDA1ZDIyYmQwNmM1NTA4ODQyN2RjMjQyODA3MzZhYWM5OGNiMWE4
ODQuLjU2NDYxNGFiMWQ3ODIxOWE3Yzg2NGVkMDI2MGZjYjljYjk0NDc5YTMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNwcApAQCAtMjI4LDI1ICsy
MjgsMjUgQEAgcHVibGljOgogICAgIHsKICAgICB9CiAKLSAgICB2aXJ0dWFsIGJvb2wgcGVyZm9y
bShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcpCisgICAgdmlydHVhbCBib29sIHBlcmZvcm0oRXhj
ZXB0aW9uQ29kZSYgZWMpCiAgICAgewotICAgICAgICBJbnNwZWN0b3JTdHlsZVNoZWV0KiBzdHls
ZVNoZWV0ID0gbV9jc3NBZ2VudC0+YXNzZXJ0U3R5bGVTaGVldEZvcklkKGVycm9yU3RyaW5nLCBt
X3N0eWxlU2hlZXRJZCk7CisgICAgICAgIEluc3BlY3RvclN0eWxlU2hlZXQqIHN0eWxlU2hlZXQg
PSBtX2Nzc0FnZW50LT5hc3NlcnRTdHlsZVNoZWV0Rm9ySWQoMCwgbV9zdHlsZVNoZWV0SWQpOwog
ICAgICAgICBpZiAoIXN0eWxlU2hlZXQpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
ICAgIHJldHVybiBwZXJmb3JtKHN0eWxlU2hlZXQsIGVycm9yU3RyaW5nKTsKKyAgICAgICAgcmV0
dXJuIHBlcmZvcm0oc3R5bGVTaGVldCwgZWMpOwogICAgIH0KIAotICAgIHZpcnR1YWwgYm9vbCB1
bmRvKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZykKKyAgICB2aXJ0dWFsIGJvb2wgdW5kbyhFeGNl
cHRpb25Db2RlJiBlYykKICAgICB7Ci0gICAgICAgIEluc3BlY3RvclN0eWxlU2hlZXQqIHN0eWxl
U2hlZXQgPSBtX2Nzc0FnZW50LT5hc3NlcnRTdHlsZVNoZWV0Rm9ySWQoZXJyb3JTdHJpbmcsIG1f
c3R5bGVTaGVldElkKTsKKyAgICAgICAgSW5zcGVjdG9yU3R5bGVTaGVldCogc3R5bGVTaGVldCA9
IG1fY3NzQWdlbnQtPmFzc2VydFN0eWxlU2hlZXRGb3JJZCgwLCBtX3N0eWxlU2hlZXRJZCk7CiAg
ICAgICAgIGlmICghc3R5bGVTaGVldCkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAg
ICAgcmV0dXJuIHVuZG8oc3R5bGVTaGVldCwgZXJyb3JTdHJpbmcpOworICAgICAgICByZXR1cm4g
dW5kbyhzdHlsZVNoZWV0LCBlYyk7CiAgICAgfQogCi0gICAgdmlydHVhbCBib29sIHBlcmZvcm0o
SW5zcGVjdG9yU3R5bGVTaGVldCosIEVycm9yU3RyaW5nKikgPSAwOworICAgIHZpcnR1YWwgYm9v
bCBwZXJmb3JtKEluc3BlY3RvclN0eWxlU2hlZXQqLCBFeGNlcHRpb25Db2RlJikgPSAwOwogCi0g
ICAgdmlydHVhbCBib29sIHVuZG8oSW5zcGVjdG9yU3R5bGVTaGVldCosIEVycm9yU3RyaW5nKikg
PSAwOworICAgIHZpcnR1YWwgYm9vbCB1bmRvKEluc3BlY3RvclN0eWxlU2hlZXQqLCBFeGNlcHRp
b25Db2RlJikgPSAwOwogCiBwcm90ZWN0ZWQ6CiAgICAgSW5zcGVjdG9yQ1NTQWdlbnQqIG1fY3Nz
QWdlbnQ7CkBAIC0yNjIsNyArMjYyLDcgQEAgcHVibGljOgogICAgIHsKICAgICB9CiAKLSAgICB2
aXJ0dWFsIGJvb2wgcGVyZm9ybShJbnNwZWN0b3JTdHlsZVNoZWV0KiBpbnNwZWN0b3JTdHlsZVNo
ZWV0LCBFcnJvclN0cmluZyopCisgICAgdmlydHVhbCBib29sIHBlcmZvcm0oSW5zcGVjdG9yU3R5
bGVTaGVldCogaW5zcGVjdG9yU3R5bGVTaGVldCwgRXhjZXB0aW9uQ29kZSYpCiAgICAgewogICAg
ICAgICBpZiAoIWluc3BlY3RvclN0eWxlU2hlZXQtPmdldFRleHQoJm1fb2xkVGV4dCkpCiAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0yNzQsNyArMjc0LDcgQEAgcHVibGljOgogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgdmlydHVhbCBib29sIHVuZG8oSW5zcGVjdG9y
U3R5bGVTaGVldCogaW5zcGVjdG9yU3R5bGVTaGVldCwgRXJyb3JTdHJpbmcqKQorICAgIHZpcnR1
YWwgYm9vbCB1bmRvKEluc3BlY3RvclN0eWxlU2hlZXQqIGluc3BlY3RvclN0eWxlU2hlZXQsIEV4
Y2VwdGlvbkNvZGUmKQogICAgIHsKICAgICAgICAgaWYgKGluc3BlY3RvclN0eWxlU2hlZXQtPnNl
dFRleHQobV9vbGRUZXh0KSkgewogICAgICAgICAgICAgaW5zcGVjdG9yU3R5bGVTaGVldC0+cmVw
YXJzZVN0eWxlU2hlZXQobV9vbGRUZXh0KTsKQEAgLTMwNSwxMCArMzA1LDEwIEBAIHB1YmxpYzoK
ICAgICAgICAgcmV0dXJuIG1lcmdlSWQoKSArICI6ICIgKyBtX29sZFRleHQgKyAiIC0+ICIgKyBt
X3RleHQ7CiAgICAgfQogCi0gICAgdmlydHVhbCBib29sIHBlcmZvcm0oSW5zcGVjdG9yU3R5bGVT
aGVldCogaW5zcGVjdG9yU3R5bGVTaGVldCwgRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nKQorICAg
IHZpcnR1YWwgYm9vbCBwZXJmb3JtKEluc3BlY3RvclN0eWxlU2hlZXQqIGluc3BlY3RvclN0eWxl
U2hlZXQsIEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgIHsKICAgICAgICAgU3RyaW5nIG9sZFRleHQ7
Ci0gICAgICAgIGJvb2wgcmVzdWx0ID0gaW5zcGVjdG9yU3R5bGVTaGVldC0+c2V0UHJvcGVydHlU
ZXh0KGVycm9yU3RyaW5nLCBtX2Nzc0lkLCBtX3Byb3BlcnR5SW5kZXgsIG1fdGV4dCwgbV9vdmVy
d3JpdGUsICZvbGRUZXh0KTsKKyAgICAgICAgYm9vbCByZXN1bHQgPSBpbnNwZWN0b3JTdHlsZVNo
ZWV0LT5zZXRQcm9wZXJ0eVRleHQobV9jc3NJZCwgbV9wcm9wZXJ0eUluZGV4LCBtX3RleHQsIG1f
b3ZlcndyaXRlLCAmb2xkVGV4dCwgZWMpOwogICAgICAgICBtX29sZFRleHQgPSBvbGRUZXh0LnN0
cmlwV2hpdGVTcGFjZSgpOwogICAgICAgICAvLyBGSVhNRTogcmVtb3ZlIHRoaXMgb25jZSB0aGUg
bW9kZWwgaGFuZGxlcyB0aGlzIGNhc2UuCiAgICAgICAgIGlmICghbV9vbGRUZXh0LmVuZHNXaXRo
KCI7IikpCkBAIC0zMTYsMTAgKzMxNiwxMCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiByZXN1
bHQ7CiAgICAgfQogCi0gICAgdmlydHVhbCBib29sIHVuZG8oSW5zcGVjdG9yU3R5bGVTaGVldCog
aW5zcGVjdG9yU3R5bGVTaGVldCwgRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nKQorICAgIHZpcnR1
YWwgYm9vbCB1bmRvKEluc3BlY3RvclN0eWxlU2hlZXQqIGluc3BlY3RvclN0eWxlU2hlZXQsIEV4
Y2VwdGlvbkNvZGUmIGVjKQogICAgIHsKICAgICAgICAgU3RyaW5nIHBsYWNlaG9sZGVyOwotICAg
ICAgICByZXR1cm4gaW5zcGVjdG9yU3R5bGVTaGVldC0+c2V0UHJvcGVydHlUZXh0KGVycm9yU3Ry
aW5nLCBtX2Nzc0lkLCBtX3Byb3BlcnR5SW5kZXgsIG1fb3ZlcndyaXRlID8gbV9vbGRUZXh0IDog
IiIsIHRydWUsICZwbGFjZWhvbGRlcik7CisgICAgICAgIHJldHVybiBpbnNwZWN0b3JTdHlsZVNo
ZWV0LT5zZXRQcm9wZXJ0eVRleHQobV9jc3NJZCwgbV9wcm9wZXJ0eUluZGV4LCBtX292ZXJ3cml0
ZSA/IG1fb2xkVGV4dCA6ICIiLCB0cnVlLCAmcGxhY2Vob2xkZXIsIGVjKTsKICAgICB9CiAKICAg
ICB2aXJ0dWFsIFN0cmluZyBtZXJnZUlkKCkKQEAgLTM1NCwxNCArMzU0LDE0IEBAIHB1YmxpYzoK
ICAgICB7CiAgICAgfQogCi0gICAgdmlydHVhbCBib29sIHBlcmZvcm0oSW5zcGVjdG9yU3R5bGVT
aGVldCogaW5zcGVjdG9yU3R5bGVTaGVldCwgRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nKQorICAg
IHZpcnR1YWwgYm9vbCBwZXJmb3JtKEluc3BlY3RvclN0eWxlU2hlZXQqIGluc3BlY3RvclN0eWxl
U2hlZXQsIEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGluc3BlY3Rv
clN0eWxlU2hlZXQtPnRvZ2dsZVByb3BlcnR5KGVycm9yU3RyaW5nLCBtX2Nzc0lkLCBtX3Byb3Bl
cnR5SW5kZXgsIG1fZGlzYWJsZSk7CisgICAgICAgIHJldHVybiBpbnNwZWN0b3JTdHlsZVNoZWV0
LT50b2dnbGVQcm9wZXJ0eShtX2Nzc0lkLCBtX3Byb3BlcnR5SW5kZXgsIG1fZGlzYWJsZSwgZWMp
OwogICAgIH0KIAotICAgIHZpcnR1YWwgYm9vbCB1bmRvKEluc3BlY3RvclN0eWxlU2hlZXQqIGlu
c3BlY3RvclN0eWxlU2hlZXQsIEVycm9yU3RyaW5nKiBlcnJvclN0cmluZykKKyAgICB2aXJ0dWFs
IGJvb2wgdW5kbyhJbnNwZWN0b3JTdHlsZVNoZWV0KiBpbnNwZWN0b3JTdHlsZVNoZWV0LCBFeGNl
cHRpb25Db2RlJiBlYykKICAgICB7Ci0gICAgICByZXR1cm4gaW5zcGVjdG9yU3R5bGVTaGVldC0+
dG9nZ2xlUHJvcGVydHkoZXJyb3JTdHJpbmcsIG1fY3NzSWQsIG1fcHJvcGVydHlJbmRleCwgIW1f
ZGlzYWJsZSk7CisgICAgICAgIHJldHVybiBpbnNwZWN0b3JTdHlsZVNoZWV0LT50b2dnbGVQcm9w
ZXJ0eShtX2Nzc0lkLCBtX3Byb3BlcnR5SW5kZXgsICFtX2Rpc2FibGUsIGVjKTsKICAgICB9CiAK
IHByaXZhdGU6CkBAIC01OTcsNyArNTk3LDkgQEAgdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6Z2V0
U3R5bGVTaGVldFRleHQoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcKIAog
dm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6c2V0U3R5bGVTaGVldFRleHQoRXJyb3JTdHJpbmcqIGVy
cm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIHN0eWxlU2hlZXRJZCwgY29uc3QgU3RyaW5nJiB0ZXh0
KQogewotICAgIG1fZG9tQWdlbnQtPmhpc3RvcnkoKS0+cGVyZm9ybShhZG9wdFB0cihuZXcgU2V0
U3R5bGVTaGVldFRleHRBY3Rpb24odGhpcywgc3R5bGVTaGVldElkLCB0ZXh0KSksIGVycm9yU3Ry
aW5nKTsKKyAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBtX2RvbUFnZW50LT5oaXN0b3J5
KCktPnBlcmZvcm0oYWRvcHRQdHIobmV3IFNldFN0eWxlU2hlZXRUZXh0QWN0aW9uKHRoaXMsIHN0
eWxlU2hlZXRJZCwgdGV4dCkpLCBlYyk7CisgICAgKmVycm9yU3RyaW5nID0gSW5zcGVjdG9yRE9N
QWdlbnQ6OnRvRXJyb3JTdHJpbmcoZWMpOwogICAgIG1fZG9tQWdlbnQtPmhpc3RvcnkoKS0+bWFy
a1VuZG9hYmxlU3RhdGUoKTsKIH0KIApAQCAtNjEwLDkgKzYxMiwxMSBAQCB2b2lkIEluc3BlY3Rv
ckNTU0FnZW50OjpzZXRQcm9wZXJ0eVRleHQoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25z
dCBSZWZQdHI8SQogICAgIGlmICghaW5zcGVjdG9yU3R5bGVTaGVldCkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgYm9vbCBzdWNjZXNzID0gbV9kb21BZ2VudC0+aGlzdG9yeSgpLT5wZXJmb3JtKGFk
b3B0UHRyKG5ldyBTZXRQcm9wZXJ0eVRleHRBY3Rpb24odGhpcywgY29tcG91bmRJZC5zdHlsZVNo
ZWV0SWQoKSwgY29tcG91bmRJZCwgcHJvcGVydHlJbmRleCwgdGV4dCwgb3ZlcndyaXRlKSksIGVy
cm9yU3RyaW5nKTsKKyAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBib29sIHN1Y2Nlc3Mg
PSBtX2RvbUFnZW50LT5oaXN0b3J5KCktPnBlcmZvcm0oYWRvcHRQdHIobmV3IFNldFByb3BlcnR5
VGV4dEFjdGlvbih0aGlzLCBjb21wb3VuZElkLnN0eWxlU2hlZXRJZCgpLCBjb21wb3VuZElkLCBw
cm9wZXJ0eUluZGV4LCB0ZXh0LCBvdmVyd3JpdGUpKSwgZWMpOwogICAgIGlmIChzdWNjZXNzKQog
ICAgICAgICByZXN1bHQgPSBpbnNwZWN0b3JTdHlsZVNoZWV0LT5idWlsZE9iamVjdEZvclN0eWxl
KGluc3BlY3RvclN0eWxlU2hlZXQtPnN0eWxlRm9ySWQoY29tcG91bmRJZCkpOworICAgICplcnJv
clN0cmluZyA9IEluc3BlY3RvckRPTUFnZW50Ojp0b0Vycm9yU3RyaW5nKGVjKTsKIH0KIAogdm9p
ZCBJbnNwZWN0b3JDU1NBZ2VudDo6dG9nZ2xlUHJvcGVydHkoRXJyb3JTdHJpbmcqIGVycm9yU3Ry
aW5nLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYgZnVsbFN0eWxlSWQsIGludCBwcm9w
ZXJ0eUluZGV4LCBib29sIGRpc2FibGUsIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiByZXN1bHQp
CkBAIC02MjQsOSArNjI4LDExIEBAIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OnRvZ2dsZVByb3Bl
cnR5KEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgUmVmUHRyPEluCiAgICAgaWYgKCFp
bnNwZWN0b3JTdHlsZVNoZWV0KQogICAgICAgICByZXR1cm47CiAKLSAgICBib29sIHN1Y2Nlc3Mg
PSBtX2RvbUFnZW50LT5oaXN0b3J5KCktPnBlcmZvcm0oYWRvcHRQdHIobmV3IFRvZ2dsZVByb3Bl
cnR5QWN0aW9uKHRoaXMsIGNvbXBvdW5kSWQuc3R5bGVTaGVldElkKCksIGNvbXBvdW5kSWQsIHBy
b3BlcnR5SW5kZXgsIGRpc2FibGUpKSwgZXJyb3JTdHJpbmcpOworICAgIEV4Y2VwdGlvbkNvZGUg
ZWMgPSAwOworICAgIGJvb2wgc3VjY2VzcyA9IG1fZG9tQWdlbnQtPmhpc3RvcnkoKS0+cGVyZm9y
bShhZG9wdFB0cihuZXcgVG9nZ2xlUHJvcGVydHlBY3Rpb24odGhpcywgY29tcG91bmRJZC5zdHls
ZVNoZWV0SWQoKSwgY29tcG91bmRJZCwgcHJvcGVydHlJbmRleCwgZGlzYWJsZSkpLCBlYyk7CiAg
ICAgaWYgKHN1Y2Nlc3MpCiAgICAgICAgIHJlc3VsdCA9IGluc3BlY3RvclN0eWxlU2hlZXQtPmJ1
aWxkT2JqZWN0Rm9yU3R5bGUoaW5zcGVjdG9yU3R5bGVTaGVldC0+c3R5bGVGb3JJZChjb21wb3Vu
ZElkKSk7CisgICAgKmVycm9yU3RyaW5nID0gSW5zcGVjdG9yRE9NQWdlbnQ6OnRvRXJyb3JTdHJp
bmcoZWMpOwogICAgIG1fZG9tQWdlbnQtPmhpc3RvcnkoKS0+bWFya1VuZG9hYmxlU3RhdGUoKTsK
IH0KIApAQCAtODIwLDcgKzgyNiw4IEBAIEluc3BlY3RvclN0eWxlU2hlZXQqIEluc3BlY3RvckNT
U0FnZW50Ojphc3NlcnRTdHlsZVNoZWV0Rm9ySWQoRXJyb3JTdHJpbmcqIGVycm9yCiB7CiAgICAg
SWRUb0luc3BlY3RvclN0eWxlU2hlZXQ6Oml0ZXJhdG9yIGl0ID0gbV9pZFRvSW5zcGVjdG9yU3R5
bGVTaGVldC5maW5kKHN0eWxlU2hlZXRJZCk7CiAgICAgaWYgKGl0ID09IG1faWRUb0luc3BlY3Rv
clN0eWxlU2hlZXQuZW5kKCkpIHsKLSAgICAgICAgKmVycm9yU3RyaW5nID0gIk5vIHN0eWxlIHNo
ZWV0IHdpdGggZ2l2ZW4gaWQgZm91bmQiOworICAgICAgICBpZiAoZXJyb3JTdHJpbmcpCisgICAg
ICAgICAgICAqZXJyb3JTdHJpbmcgPSAiTm8gc3R5bGUgc2hlZXQgd2l0aCBnaXZlbiBpZCBmb3Vu
ZCI7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KICAgICByZXR1cm4gaXQtPnNlY29uZC5nZXQo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2Vu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCmlu
ZGV4IGQyNTM1MjU5MmM4ODdhNmFhODQ0MGUyYzhiNDVlMjBiOGJlNWJiMjEuLjRkZGYyNTA4ZTU5
NGYwMzk5YjJlYjlhYjMzMTNlYjhkNjlkNzQ0NmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcApAQCAtMTc5LDYgKzE3OSwxNSBAQCB2b2lkIFJl
dmFsaWRhdGVTdHlsZUF0dHJpYnV0ZVRhc2s6Om9uVGltZXIoVGltZXI8UmV2YWxpZGF0ZVN0eWxl
QXR0cmlidXRlVGFzaz4qKQogICAgIG1fZWxlbWVudHMuY2xlYXIoKTsKIH0KIAorU3RyaW5nIElu
c3BlY3RvckRPTUFnZW50Ojp0b0Vycm9yU3RyaW5nKGNvbnN0IEV4Y2VwdGlvbkNvZGUmIGVjKQor
eworICAgIGlmIChlYykgeworICAgICAgICBFeGNlcHRpb25Db2RlRGVzY3JpcHRpb24gZGVzY3Jp
cHRpb24oZWMpOworICAgICAgICByZXR1cm4gZGVzY3JpcHRpb24ubmFtZTsKKyAgICB9CisgICAg
cmV0dXJuICIiOworfQorCiBJbnNwZWN0b3JET01BZ2VudDo6SW5zcGVjdG9yRE9NQWdlbnQoSW5z
dHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgSW5zcGVjdG9yUGFnZUFnZW50
KiBwYWdlQWdlbnQsIEluc3BlY3RvckNsaWVudCogY2xpZW50LCBJbnNwZWN0b3JTdGF0ZSogaW5z
cGVjdG9yU3RhdGUsIEluamVjdGVkU2NyaXB0TWFuYWdlciogaW5qZWN0ZWRTY3JpcHRNYW5hZ2Vy
KQogICAgIDogSW5zcGVjdG9yQmFzZUFnZW50PEluc3BlY3RvckRPTUFnZW50PigiRE9NIiwgaW5z
dHJ1bWVudGluZ0FnZW50cywgaW5zcGVjdG9yU3RhdGUpCiAgICAgLCBtX3BhZ2VBZ2VudChwYWdl
QWdlbnQpCkBAIC01NDEsMTMgKzU1MCwxMyBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpzZXRB
dHRyaWJ1dGVzQXNUZXh0KEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgaW50IGVsZW1lbgogICAg
IEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIFJlZlB0cjxFbGVtZW50PiBwYXJzZWRFbGVtZW50
ID0gZWxlbWVudC0+ZG9jdW1lbnQoKS0+Y3JlYXRlRWxlbWVudCgic3BhbiIsIGVjKTsKICAgICBp
ZiAoZWMpIHsKLSAgICAgICAgKmVycm9yU3RyaW5nID0gIkludGVybmFsIGVycm9yOiBjb3VsZCBu
b3Qgc2V0IGF0dHJpYnV0ZSB2YWx1ZSI7CisgICAgICAgICplcnJvclN0cmluZyA9IEluc3BlY3Rv
ckRPTUFnZW50Ojp0b0Vycm9yU3RyaW5nKGVjKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAog
ICAgIHRvSFRNTEVsZW1lbnQocGFyc2VkRWxlbWVudC5nZXQoKSktPnNldElubmVySFRNTCgiPHNw
YW4gIiArIHRleHQgKyAiPjwvc3Bhbj4iLCBlYyk7CiAgICAgaWYgKGVjKSB7Ci0gICAgICAgICpl
cnJvclN0cmluZyA9ICJDb3VsZCBub3QgcGFyc2UgdmFsdWUgYXMgYXR0cmlidXRlcyI7CisgICAg
ICAgICplcnJvclN0cmluZyA9IEluc3BlY3RvckRPTUFnZW50Ojp0b0Vycm9yU3RyaW5nKGVjKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNjU0LDcgKzY2Myw3IEBAIHZvaWQgSW5zcGVj
dG9yRE9NQWdlbnQ6OmdldE91dGVySFRNTChFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGludCBu
b2RlSWQsIFdURjo6CiB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpzZXRPdXRlckhUTUwoRXJyb3JT
dHJpbmcqIGVycm9yU3RyaW5nLCBpbnQgbm9kZUlkLCBjb25zdCBTdHJpbmcmIG91dGVySFRNTCkK
IHsKICAgICBpZiAoIW5vZGVJZCkgewotICAgICAgICBET01QYXRjaFN1cHBvcnQgZG9tUGF0Y2hT
dXBwb3J0KG1fZG9jdW1lbnQuZ2V0KCkpOworICAgICAgICBET01QYXRjaFN1cHBvcnQgZG9tUGF0
Y2hTdXBwb3J0KG1fZG9tRWRpdG9yLmdldCgpLCBtX2RvY3VtZW50LmdldCgpKTsKICAgICAgICAg
ZG9tUGF0Y2hTdXBwb3J0LnBhdGNoRG9jdW1lbnQob3V0ZXJIVE1MKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KQEAgLTEwNzcsNyArMTA4Niw5IEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OnNl
dFRvdWNoRW11bGF0aW9uRW5hYmxlZChFcnJvclN0cmluZyogZXJyb3IsIGJvb2wgZW5hYmxlCiAK
IHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OnVuZG8oRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nKQog
ewotICAgIG1faGlzdG9yeS0+dW5kbyhlcnJvclN0cmluZyk7CisgICAgRXhjZXB0aW9uQ29kZSBl
YyA9IDA7CisgICAgbV9oaXN0b3J5LT51bmRvKGVjKTsKKyAgICAqZXJyb3JTdHJpbmcgPSBJbnNw
ZWN0b3JET01BZ2VudDo6dG9FcnJvclN0cmluZyhlYyk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yRE9N
QWdlbnQ6Om1hcmtVbmRvYWJsZVN0YXRlKEVycm9yU3RyaW5nKikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5oIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmgKaW5kZXggMGM4ODQ5ZmM0NjMyMzI0M2RhNTRj
ZjAwMDBjN2JjNWRlZjJmYzNjMC4uMjhhYWJlOWY3M2E3MjJkYTk3Y2FlZmJiZjFkZTkyMWQ1NGQw
MmVjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFn
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmgK
QEAgLTEwNyw2ICsxMDcsOCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcg
SW5zcGVjdG9yRE9NQWdlbnQoaW5zdHJ1bWVudGluZ0FnZW50cywgcGFnZUFnZW50LCBjbGllbnQs
IGluc3BlY3RvclN0YXRlLCBpbmplY3RlZFNjcmlwdE1hbmFnZXIpKTsKICAgICB9CiAKKyAgICBz
dGF0aWMgU3RyaW5nIHRvRXJyb3JTdHJpbmcoY29uc3QgRXhjZXB0aW9uQ29kZSYpOworCiAgICAg
fkluc3BlY3RvckRPTUFnZW50KCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0RnJvbnRlbmQoSW5z
cGVjdG9yRnJvbnRlbmQqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JIaXN0b3J5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JI
aXN0b3J5LmNwcAppbmRleCBiZjY4YzFmZjVkMWEzZGEyNjVkNzIyODJlMjg5YmFlNDA0ZTczOGFh
Li44MzI0ODk3NmI4ZDkwY2E3ZGM4ZjA5NWM4ZGMwNjZjOTMxNzljZDk5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySGlzdG9yeS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckhpc3RvcnkuY3BwCkBAIC00Myw5ICs0Myw5IEBA
IGNsYXNzIFVuZG9hYmxlU3RhdGVNYXJrIDogcHVibGljIEluc3BlY3Rvckhpc3Rvcnk6OkFjdGlv
biB7CiBwdWJsaWM6CiAgICAgVW5kb2FibGVTdGF0ZU1hcmsoKSA6IEluc3BlY3Rvckhpc3Rvcnk6
OkFjdGlvbigiW1VuZG9hYmxlU3RhdGVdIikgeyB9CiAKLSAgICB2aXJ0dWFsIGJvb2wgcGVyZm9y
bShFcnJvclN0cmluZyopIHsgcmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFsIGJvb2wgcGVyZm9y
bShFeGNlcHRpb25Db2RlJikgeyByZXR1cm4gdHJ1ZTsgfQogCi0gICAgdmlydHVhbCBib29sIHVu
ZG8oRXJyb3JTdHJpbmcqKSB7IHJldHVybiB0cnVlOyB9CisgICAgdmlydHVhbCBib29sIHVuZG8o
RXhjZXB0aW9uQ29kZSYpIHsgcmV0dXJuIHRydWU7IH0KIAogICAgIHZpcnR1YWwgYm9vbCBpc1Vu
ZG9hYmxlU3RhdGVNYXJrKCkgeyByZXR1cm4gdHJ1ZTsgfQogfTsKQEAgLTgzLDkgKzgzLDkgQEAg
SW5zcGVjdG9ySGlzdG9yeTo6SW5zcGVjdG9ySGlzdG9yeSgpIHsgfQogCiBJbnNwZWN0b3JIaXN0
b3J5Ojp+SW5zcGVjdG9ySGlzdG9yeSgpIHsgfQogCi1ib29sIEluc3BlY3Rvckhpc3Rvcnk6OnBl
cmZvcm0oUGFzc093blB0cjxBY3Rpb24+IGFjdGlvbiwgRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5n
KQorYm9vbCBJbnNwZWN0b3JIaXN0b3J5OjpwZXJmb3JtKFBhc3NPd25QdHI8QWN0aW9uPiBhY3Rp
b24sIEV4Y2VwdGlvbkNvZGUmIGVjKQogewotICAgIGlmICghYWN0aW9uLT5wZXJmb3JtKGVycm9y
U3RyaW5nKSkKKyAgICBpZiAoIWFjdGlvbi0+cGVyZm9ybShlYykpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIAogICAgIGlmICghbV9oaXN0b3J5LmlzRW1wdHkoKSAmJiAhYWN0aW9uLT5tZXJnZUlk
KCkuaXNFbXB0eSgpICYmIGFjdGlvbi0+bWVyZ2VJZCgpID09IG1faGlzdG9yeS5maXJzdCgpLT5t
ZXJnZUlkKCkpCkBAIC0xMDEsMTQgKzEwMSwxNCBAQCB2b2lkIEluc3BlY3Rvckhpc3Rvcnk6Om1h
cmtVbmRvYWJsZVN0YXRlKCkKICAgICBtX2hpc3RvcnkucHJlcGVuZChhZG9wdFB0cihuZXcgVW5k
b2FibGVTdGF0ZU1hcmsoKSkpOwogfQogCi1ib29sIEluc3BlY3Rvckhpc3Rvcnk6OnVuZG8oRXJy
b3JTdHJpbmcqIGVycm9yU3RyaW5nKQorYm9vbCBJbnNwZWN0b3JIaXN0b3J5Ojp1bmRvKEV4Y2Vw
dGlvbkNvZGUmIGVjKQogewogICAgIHdoaWxlICghbV9oaXN0b3J5LmlzRW1wdHkoKSAmJiBtX2hp
c3RvcnkuZmlyc3QoKS0+aXNVbmRvYWJsZVN0YXRlTWFyaygpKQogICAgICAgICBtX2hpc3Rvcnku
cmVtb3ZlRmlyc3QoKTsKIAogICAgIHdoaWxlICghbV9oaXN0b3J5LmlzRW1wdHkoKSkgewogICAg
ICAgICBPd25QdHI8QWN0aW9uPiBmaXJzdCA9IG1faGlzdG9yeS50YWtlRmlyc3QoKTsKLSAgICAg
ICAgaWYgKCFmaXJzdC0+dW5kbyhlcnJvclN0cmluZykpIHsKKyAgICAgICAgaWYgKCFmaXJzdC0+
dW5kbyhlYykpIHsKICAgICAgICAgICAgIG1faGlzdG9yeS5jbGVhcigpOwogICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9ySGlzdG9yeS5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3Rvckhpc3RvcnkuaAppbmRleCBlNTA2ZTA1YjkwMjYyZjczNTE0ZTRmYzVhMmFjMWI3ZjdmNDVl
ZDUzLi5hNDg4MzM4MjY0ZmQ5NTEyODg5MTFjZjlkMGIyMmJiMDYwM2ZhMzQxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySGlzdG9yeS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JIaXN0b3J5LmgKQEAgLTQzLDggKzQzLDYgQEAg
Y2xhc3MgQ29udGFpbmVyTm9kZTsKIGNsYXNzIEVsZW1lbnQ7CiBjbGFzcyBOb2RlOwogCi10eXBl
ZGVmIFN0cmluZyBFcnJvclN0cmluZzsKLQogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAKIGNsYXNz
IEluc3BlY3Rvckhpc3RvcnkgewpAQCAtNjEsOCArNTksOCBAQCBwdWJsaWM6CiAgICAgICAgIHZp
cnR1YWwgU3RyaW5nIG1lcmdlSWQoKTsKICAgICAgICAgdmlydHVhbCB2b2lkIG1lcmdlKFBhc3NP
d25QdHI8QWN0aW9uPik7CiAKLSAgICAgICAgdmlydHVhbCBib29sIHBlcmZvcm0oRXJyb3JTdHJp
bmcqKSA9IDA7Ci0gICAgICAgIHZpcnR1YWwgYm9vbCB1bmRvKEVycm9yU3RyaW5nKikgPSAwOwor
ICAgICAgICB2aXJ0dWFsIGJvb2wgcGVyZm9ybShFeGNlcHRpb25Db2RlJikgPSAwOworICAgICAg
ICB2aXJ0dWFsIGJvb2wgdW5kbyhFeGNlcHRpb25Db2RlJikgPSAwOwogICAgIHByaXZhdGU6CiAg
ICAgICAgIFN0cmluZyBtX25hbWU7CiAgICAgfTsKQEAgLTcwLDEwICs2OCwxMCBAQCBwdWJsaWM6
CiAgICAgSW5zcGVjdG9ySGlzdG9yeSgpOwogICAgIHZpcnR1YWwgfkluc3BlY3Rvckhpc3Rvcnko
KTsKIAotICAgIGJvb2wgcGVyZm9ybShQYXNzT3duUHRyPEFjdGlvbj4sIEVycm9yU3RyaW5nKik7
CisgICAgYm9vbCBwZXJmb3JtKFBhc3NPd25QdHI8QWN0aW9uPiwgRXhjZXB0aW9uQ29kZSYpOwog
ICAgIHZvaWQgbWFya1VuZG9hYmxlU3RhdGUoKTsKIAotICAgIGJvb2wgdW5kbyhFcnJvclN0cmlu
ZyopOworICAgIGJvb2wgdW5kbyhFeGNlcHRpb25Db2RlJik7CiAgICAgdm9pZCByZXNldCgpOwog
CiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
clBhZ2VBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFn
ZW50LmNwcAppbmRleCAzYmNiM2FiMDQ3ZGE4ZmQwZWE0ZjQyZTcxNDdiMmUyZTZhNGU0YjhjLi42
NmY3MGIxZTNkM2M0MDNmODU3Mzc4MTExMTNlMmJkNDQ1OTJiZmQwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmNwcApAQCAtNTcxLDggKzU3MSw3
IEBAIHZvaWQgSW5zcGVjdG9yUGFnZUFnZW50OjpzZXREb2N1bWVudENvbnRlbnQoRXJyb3JTdHJp
bmcqIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpCiAgICAgICAgICplcnJvclN0cmluZyA9ICJObyBE
b2N1bWVudCBpbnN0YW5jZSB0byBzZXQgSFRNTCBmb3IiOwogICAgICAgICByZXR1cm47CiAgICAg
fQotICAgIERPTVBhdGNoU3VwcG9ydCBwYXRjaGVyKGRvY3VtZW50KTsKLSAgICBwYXRjaGVyLnBh
dGNoRG9jdW1lbnQoaHRtbCk7CisgICAgRE9NUGF0Y2hTdXBwb3J0OjpwYXRjaERvY3VtZW50KGRv
Y3VtZW50LCBodG1sKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OnNldFNjcmVlblNp
emVPdmVycmlkZShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IGludCB3aWR0aCwgY29u
c3QgaW50IGhlaWdodCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JTdHlsZVNoZWV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JT
dHlsZVNoZWV0LmNwcAppbmRleCBjN2M0ZWRiNzdhMzg5NGIyYjRiZTYyZTQ4MWQ1NGU3MzllZTRh
MmM3Li5iNzU5NzFmMzk0ZWE5YmI0ZDE4MzEwOTc3ZDA2OTQ1OWVlODA2ZDQyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwCkBAIC0yODAs
MTMgKzI4MCwxMyBAQCBQYXNzUmVmUHRyPEluc3BlY3RvckFycmF5PiBJbnNwZWN0b3JTdHlsZTo6
YnVpbGRBcnJheUZvckNvbXB1dGVkU3R5bGUoKSBjb25zdAogLy8KIC8vIFRoZSBwcm9wZXJ0eVRl
eHQgKGlmIG5vdCBlbXB0eSkgaXMgY2hlY2tlZCB0byBiZSBhIHZhbGlkIHN0eWxlIGRlY2xhcmF0
aW9uIChjb250YWluaW5nIGF0IGxlYXN0IG9uZSBwcm9wZXJ0eSkuIElmIG5vdCwKIC8vIHRoZSBt
ZXRob2QgcmV0dXJucyBmYWxzZSAoZGVub3RpbmcgYW4gZXJyb3IpLgotYm9vbCBJbnNwZWN0b3JT
dHlsZTo6c2V0UHJvcGVydHlUZXh0KEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgdW5zaWduZWQg
aW5kZXgsIGNvbnN0IFN0cmluZyYgcHJvcGVydHlUZXh0LCBib29sIG92ZXJ3cml0ZSwgU3RyaW5n
KiBvbGRUZXh0KQorYm9vbCBJbnNwZWN0b3JTdHlsZTo6c2V0UHJvcGVydHlUZXh0KHVuc2lnbmVk
IGluZGV4LCBjb25zdCBTdHJpbmcmIHByb3BlcnR5VGV4dCwgYm9vbCBvdmVyd3JpdGUsIFN0cmlu
Zyogb2xkVGV4dCwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgQVNTRVJUKG1fcGFyZW50U3R5
bGVTaGVldCk7CiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIGJvZ3VzUHJvcGVydHlO
YW1lLCAoIi13ZWJraXQtYm9ndXotcHJvcGVydGVlIikpOwogCiAgICAgaWYgKCFtX3BhcmVudFN0
eWxlU2hlZXQtPmVuc3VyZVBhcnNlZERhdGFSZWFkeSgpKSB7Ci0gICAgICAgICplcnJvclN0cmlu
ZyA9ICJJbnRlcm5hbCBlcnJvcjogbm8gc3R5bGVzaGVldCBwYXJzZWQgZGF0YSBhdmFpbGFibGUi
OworICAgICAgICBlYyA9IE5PVF9GT1VORF9FUlI7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICB9CiAKQEAgLTMwMywyNyArMzAzLDI3IEBAIGJvb2wgSW5zcGVjdG9yU3R5bGU6OnNldFByb3Bl
cnR5VGV4dChFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIHVuc2lnbmVkIGluZGV4LCBjCiAKICAg
ICAgICAgLy8gQXQgbGVhc3Qgb25lIHByb3BlcnR5ICsgdGhlIGJvZ3VzIHByb3BlcnR5IGFkZGVk
IGp1c3QgYWJvdmUgc2hvdWxkIGJlIHByZXNlbnQuCiAgICAgICAgIGlmIChwcm9wZXJ0eUNvdW50
IDwgMikgewotICAgICAgICAgICAgKmVycm9yU3RyaW5nID0gIkludmFsaWQgcHJvcGVydHkgdmFs
dWUiOworICAgICAgICAgICAgZWMgPSBTWU5UQVhfRVJSOwogICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgICAgICB9CiAKICAgICAgICAgLy8gQ2hlY2sgZm9yIGEgcHJvcGVyIHByb3BlcnR5
VGV4dCB0ZXJtaW5hdGlvbiAodGhlIHBhcnNlciBjb3VsZCBhdCBsZWFzdCByZXN0b3JlIHRvIHRo
ZSBQUk9QRVJUWV9OQU1FIHN0YXRlKS4KICAgICAgICAgaWYgKHByb3BlcnR5RGF0YS5hdChwcm9w
ZXJ0eUNvdW50IC0gMSkubmFtZSAhPSBib2d1c1Byb3BlcnR5TmFtZSkgewotICAgICAgICAgICAg
KmVycm9yU3RyaW5nID0gIkludmFsaWQgcHJvcGVydHkgdmFsdWUiOworICAgICAgICAgICAgZWMg
PSBTWU5UQVhfRVJSOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAg
fQogCiAgICAgUmVmUHRyPENTU1J1bGVTb3VyY2VEYXRhPiBzb3VyY2VEYXRhID0gbV9wYXJlbnRT
dHlsZVNoZWV0LT5ydWxlU291cmNlRGF0YUZvcihtX3N0eWxlLmdldCgpKTsKICAgICBpZiAoIXNv
dXJjZURhdGEpIHsKLSAgICAgICAgKmVycm9yU3RyaW5nID0gIkludGVybmFsIGVycm9yOiBubyBD
U1MgcnVsZSBzb3VyY2UgZm91bmQiOworICAgICAgICBlYyA9IE5PVF9GT1VORF9FUlI7CiAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKICAgICBTdHJpbmcgdGV4dDsKICAgICBib29sIHN1
Y2Nlc3MgPSBzdHlsZVRleHQoJnRleHQpOwogICAgIGlmICghc3VjY2VzcykgewotICAgICAgICAq
ZXJyb3JTdHJpbmcgPSAiSW50ZXJuYWwgZXJyb3I6IGNvdWxkIG5vdCBmZXRjaCBzdHlsZSB0ZXh0
IjsKKyAgICAgICAgZWMgPSBOT1RfRk9VTkRfRVJSOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgfQogCkBAIC0zMzcsMzEgKzMzNywzMSBAQCBib29sIEluc3BlY3RvclN0eWxlOjpzZXRQcm9w
ZXJ0eVRleHQoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCB1bnNpZ25lZCBpbmRleCwgYwogICAg
IHJldHVybiBhcHBseVN0eWxlVGV4dChlZGl0b3Iuc3R5bGVUZXh0KCkpOwogfQogCi1ib29sIElu
c3BlY3RvclN0eWxlOjp0b2dnbGVQcm9wZXJ0eShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIHVu
c2lnbmVkIGluZGV4LCBib29sIGRpc2FibGUpCitib29sIEluc3BlY3RvclN0eWxlOjp0b2dnbGVQ
cm9wZXJ0eSh1bnNpZ25lZCBpbmRleCwgYm9vbCBkaXNhYmxlLCBFeGNlcHRpb25Db2RlJiBlYykK
IHsKICAgICBBU1NFUlQobV9wYXJlbnRTdHlsZVNoZWV0KTsKICAgICBpZiAoIW1fcGFyZW50U3R5
bGVTaGVldC0+ZW5zdXJlUGFyc2VkRGF0YVJlYWR5KCkpIHsKLSAgICAgICAgKmVycm9yU3RyaW5n
ID0gIkNhbiB0b2dnbGUgb25seSBzb3VyY2UtYmFzZWQgcHJvcGVydGllcyI7CisgICAgICAgIGVj
ID0gTk9fTU9ESUZJQ0FUSU9OX0FMTE9XRURfRVJSOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgfQogCiAgICAgUmVmUHRyPENTU1J1bGVTb3VyY2VEYXRhPiBzb3VyY2VEYXRhID0gbV9wYXJl
bnRTdHlsZVNoZWV0LT5ydWxlU291cmNlRGF0YUZvcihtX3N0eWxlLmdldCgpKTsKICAgICBpZiAo
IXNvdXJjZURhdGEpIHsKLSAgICAgICAgKmVycm9yU3RyaW5nID0gIkludGVybmFsIGVycm9yOiBO
byBzb3VyY2UgZGF0YSBmb3IgdGhlIHN0eWxlIGZvdW5kIjsKKyAgICAgICAgZWMgPSBOT1RfRk9V
TkRfRVJSOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCiAgICAgU3RyaW5nIHRleHQ7
CiAgICAgYm9vbCBzdWNjZXNzID0gc3R5bGVUZXh0KCZ0ZXh0KTsKICAgICBpZiAoIXN1Y2Nlc3Mp
IHsKLSAgICAgICAgKmVycm9yU3RyaW5nID0gIkludGVybmFsIGVycm9yOiBjb3VsZCBub3QgZmV0
Y2ggc3R5bGUgdGV4dCI7CisgICAgICAgIGVjID0gTk9UX0ZPVU5EX0VSUjsKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIH0KIAogICAgIFZlY3RvcjxJbnNwZWN0b3JTdHlsZVByb3BlcnR5PiBh
bGxQcm9wZXJ0aWVzOwogICAgIHBvcHVsYXRlQWxsUHJvcGVydGllcygmYWxsUHJvcGVydGllcyk7
CiAgICAgaWYgKGluZGV4ID49IGFsbFByb3BlcnRpZXMuc2l6ZSgpKSB7Ci0gICAgICAgICplcnJv
clN0cmluZyA9ICJQcm9wZXJ0eSBpbmRleCBpcyBvdXRzaWRlIG9mIHByb3BlcnR5IHJhbmdlIjsK
KyAgICAgICAgZWMgPSBJTkRFWF9TSVpFX0VSUjsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IH0KIApAQCAtODY4LDI2ICs4NjgsMjYgQEAgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IElu
c3BlY3RvclN0eWxlU2hlZXQ6OmJ1aWxkT2JqZWN0Rm9yU3R5bGUoQ1NTU3R5bGVEZWMKICAgICBy
ZXR1cm4gcmVzdWx0LnJlbGVhc2UoKTsKIH0KIAotYm9vbCBJbnNwZWN0b3JTdHlsZVNoZWV0Ojpz
ZXRQcm9wZXJ0eVRleHQoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBJbnNwZWN0b3JD
U1NJZCYgaWQsIHVuc2lnbmVkIHByb3BlcnR5SW5kZXgsIGNvbnN0IFN0cmluZyYgdGV4dCwgYm9v
bCBvdmVyd3JpdGUsIFN0cmluZyogb2xkVGV4dCkKK2Jvb2wgSW5zcGVjdG9yU3R5bGVTaGVldDo6
c2V0UHJvcGVydHlUZXh0KGNvbnN0IEluc3BlY3RvckNTU0lkJiBpZCwgdW5zaWduZWQgcHJvcGVy
dHlJbmRleCwgY29uc3QgU3RyaW5nJiB0ZXh0LCBib29sIG92ZXJ3cml0ZSwgU3RyaW5nKiBvbGRU
ZXh0LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBSZWZQdHI8SW5zcGVjdG9yU3R5bGU+IGlu
c3BlY3RvclN0eWxlID0gaW5zcGVjdG9yU3R5bGVGb3JJZChpZCk7CiAgICAgaWYgKCFpbnNwZWN0
b3JTdHlsZSkgewotICAgICAgICAqZXJyb3JTdHJpbmcgPSAiTm8gc3R5bGUgZm91bmQgZm9yIGdp
dmVuIGlkIjsKKyAgICAgICAgZWMgPSBOT1RfRk9VTkRfRVJSOwogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgfQogCi0gICAgcmV0dXJuIGluc3BlY3RvclN0eWxlLT5zZXRQcm9wZXJ0eVRleHQo
ZXJyb3JTdHJpbmcsIHByb3BlcnR5SW5kZXgsIHRleHQsIG92ZXJ3cml0ZSwgb2xkVGV4dCk7Cisg
ICAgcmV0dXJuIGluc3BlY3RvclN0eWxlLT5zZXRQcm9wZXJ0eVRleHQocHJvcGVydHlJbmRleCwg
dGV4dCwgb3ZlcndyaXRlLCBvbGRUZXh0LCBlYyk7CiB9CiAKLWJvb2wgSW5zcGVjdG9yU3R5bGVT
aGVldDo6dG9nZ2xlUHJvcGVydHkoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBJbnNw
ZWN0b3JDU1NJZCYgaWQsIHVuc2lnbmVkIHByb3BlcnR5SW5kZXgsIGJvb2wgZGlzYWJsZSkKK2Jv
b2wgSW5zcGVjdG9yU3R5bGVTaGVldDo6dG9nZ2xlUHJvcGVydHkoY29uc3QgSW5zcGVjdG9yQ1NT
SWQmIGlkLCB1bnNpZ25lZCBwcm9wZXJ0eUluZGV4LCBib29sIGRpc2FibGUsIEV4Y2VwdGlvbkNv
ZGUmIGVjKQogewogICAgIFJlZlB0cjxJbnNwZWN0b3JTdHlsZT4gaW5zcGVjdG9yU3R5bGUgPSBp
bnNwZWN0b3JTdHlsZUZvcklkKGlkKTsKICAgICBpZiAoIWluc3BlY3RvclN0eWxlKSB7Ci0gICAg
ICAgICplcnJvclN0cmluZyA9ICJObyBzdHlsZSBmb3VuZCBmb3IgZ2l2ZW4gaWQiOworICAgICAg
ICBlYyA9IE5PVF9GT1VORF9FUlI7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAg
ICBib29sIHN1Y2Nlc3MgPSBpbnNwZWN0b3JTdHlsZS0+dG9nZ2xlUHJvcGVydHkoZXJyb3JTdHJp
bmcsIHByb3BlcnR5SW5kZXgsIGRpc2FibGUpOworICAgIGJvb2wgc3VjY2VzcyA9IGluc3BlY3Rv
clN0eWxlLT50b2dnbGVQcm9wZXJ0eShwcm9wZXJ0eUluZGV4LCBkaXNhYmxlLCBlYyk7CiAgICAg
aWYgKHN1Y2Nlc3MpIHsKICAgICAgICAgaWYgKGRpc2FibGUpCiAgICAgICAgICAgICByZW1lbWJl
ckluc3BlY3RvclN0eWxlKGluc3BlY3RvclN0eWxlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5oCmluZGV4IGQ2MjdiMWRkYWUxZDM3MjdlY2I3ZGFi
YzYwMjY0ZjA3YTJhODM3YmIuLjVmZTlhYTI0Nzc3NDhiNTcxYjFlZDU4YjYxNjkzZjBiMWE3ZTVj
MDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNo
ZWV0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQu
aApAQCAtMjYsNiArMjYsNyBAQAogI2RlZmluZSBJbnNwZWN0b3JTdHlsZVNoZWV0X2gKIAogI2lu
Y2x1ZGUgIkNTU1Byb3BlcnR5U291cmNlRGF0YS5oIgorI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUu
aCIKICNpbmNsdWRlICJJbnNwZWN0b3JTdHlsZVRleHRFZGl0b3IuaCIKICNpbmNsdWRlICJJbnNw
ZWN0b3JWYWx1ZXMuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgpAQCAtMTMxLDggKzEz
Miw4IEBAIHB1YmxpYzoKICAgICBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gYnVpbGRPYmpl
Y3RGb3JTdHlsZSgpIGNvbnN0OwogICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IGJ1aWxk
QXJyYXlGb3JDb21wdXRlZFN0eWxlKCkgY29uc3Q7CiAgICAgYm9vbCBoYXNEaXNhYmxlZFByb3Bl
cnRpZXMoKSBjb25zdCB7IHJldHVybiAhbV9kaXNhYmxlZFByb3BlcnRpZXMuaXNFbXB0eSgpOyB9
Ci0gICAgYm9vbCBzZXRQcm9wZXJ0eVRleHQoRXJyb3JTdHJpbmcqLCB1bnNpZ25lZCBpbmRleCwg
Y29uc3QgU3RyaW5nJiB0ZXh0LCBib29sIG92ZXJ3cml0ZSwgU3RyaW5nKiBvbGRUZXh0KTsKLSAg
ICBib29sIHRvZ2dsZVByb3BlcnR5KEVycm9yU3RyaW5nKiwgdW5zaWduZWQgaW5kZXgsIGJvb2wg
ZGlzYWJsZSk7CisgICAgYm9vbCBzZXRQcm9wZXJ0eVRleHQodW5zaWduZWQgaW5kZXgsIGNvbnN0
IFN0cmluZyYgdGV4dCwgYm9vbCBvdmVyd3JpdGUsIFN0cmluZyogb2xkVGV4dCwgRXhjZXB0aW9u
Q29kZSYpOworICAgIGJvb2wgdG9nZ2xlUHJvcGVydHkodW5zaWduZWQgaW5kZXgsIGJvb2wgZGlz
YWJsZSwgRXhjZXB0aW9uQ29kZSYpOwogCiBwcml2YXRlOgogICAgIEluc3BlY3RvclN0eWxlKGNv
bnN0IEluc3BlY3RvckNTU0lkJiBzdHlsZUlkLCBQYXNzUmVmUHRyPENTU1N0eWxlRGVjbGFyYXRp
b24+IHN0eWxlLCBJbnNwZWN0b3JTdHlsZVNoZWV0KiBwYXJlbnRTdHlsZVNoZWV0KTsKQEAgLTE3
NCw4ICsxNzUsOCBAQCBwdWJsaWM6CiAgICAgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGJ1
aWxkT2JqZWN0Rm9yU3R5bGVTaGVldEluZm8oKTsKICAgICBQYXNzUmVmUHRyPEluc3BlY3Rvck9i
amVjdD4gYnVpbGRPYmplY3RGb3JSdWxlKENTU1N0eWxlUnVsZSopOwogICAgIFBhc3NSZWZQdHI8
SW5zcGVjdG9yT2JqZWN0PiBidWlsZE9iamVjdEZvclN0eWxlKENTU1N0eWxlRGVjbGFyYXRpb24q
KTsKLSAgICBib29sIHNldFByb3BlcnR5VGV4dChFcnJvclN0cmluZyosIGNvbnN0IEluc3BlY3Rv
ckNTU0lkJiwgdW5zaWduZWQgcHJvcGVydHlJbmRleCwgY29uc3QgU3RyaW5nJiB0ZXh0LCBib29s
IG92ZXJ3cml0ZSwgU3RyaW5nKiBvbGRQcm9wZXJ0eVRleHQpOwotICAgIGJvb2wgdG9nZ2xlUHJv
cGVydHkoRXJyb3JTdHJpbmcqLCBjb25zdCBJbnNwZWN0b3JDU1NJZCYsIHVuc2lnbmVkIHByb3Bl
cnR5SW5kZXgsIGJvb2wgZGlzYWJsZSk7CisgICAgYm9vbCBzZXRQcm9wZXJ0eVRleHQoY29uc3Qg
SW5zcGVjdG9yQ1NTSWQmLCB1bnNpZ25lZCBwcm9wZXJ0eUluZGV4LCBjb25zdCBTdHJpbmcmIHRl
eHQsIGJvb2wgb3ZlcndyaXRlLCBTdHJpbmcqIG9sZFByb3BlcnR5VGV4dCwgRXhjZXB0aW9uQ29k
ZSYpOworICAgIGJvb2wgdG9nZ2xlUHJvcGVydHkoY29uc3QgSW5zcGVjdG9yQ1NTSWQmLCB1bnNp
Z25lZCBwcm9wZXJ0eUluZGV4LCBib29sIGRpc2FibGUsIEV4Y2VwdGlvbkNvZGUmKTsKIAogICAg
IHZpcnR1YWwgYm9vbCBnZXRUZXh0KFN0cmluZyogcmVzdWx0KSBjb25zdDsKICAgICB2aXJ0dWFs
IENTU1N0eWxlRGVjbGFyYXRpb24qIHN0eWxlRm9ySWQoY29uc3QgSW5zcGVjdG9yQ1NTSWQmKSBj
b25zdDsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0No
YW5nZUxvZwppbmRleCA3YjVhYTU4MjFkZDdmYmQ2MjI3ODQyZGMwMmQyNzljZjQzMDdhYzA0Li4y
NWU3NGNkNTgyZTIxYTcxNzAwODE4MDZjOTI0NzY2NmRjZWJmY2ZkIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDUgKzEs
MjkgQEAKIDIwMTItMDItMTAgIFBhdmVsIEZlbGRtYW4gIDxwZmVsZG1hbkBnb29nbGUuY29tPgog
CisgICAgICAgIFdlYiBJbnNwZWN0b3I6IGltcGxlbWVudCB1bmRvIGZvciBzZXRPdXRlckhUTUwg
dmlhIHVuZG8taW5nIG5lc3RlZCBwcmltaXRpdmUgY29tbWFuZHMuCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03ODM0NgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogaW5zcGVjdG9yL2VsZW1lbnRzL3NldC1v
dXRlci1odG1sLTItZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGluc3BlY3Rvci9lbGVtZW50cy9z
ZXQtb3V0ZXItaHRtbC10ZXN0LmpzOgorICAgICAgICAoaW5pdGlhbGl6ZV9TZXRPdXRlckhUTUxU
ZXN0Lkluc3BlY3RvclRlc3QucGF0Y2hPdXRlckhUTUwpOgorICAgICAgICAoaW5pdGlhbGl6ZV9T
ZXRPdXRlckhUTUxUZXN0Lkluc3BlY3RvclRlc3QucGF0Y2hPdXRlckhUTUxVc2VVbmRvKToKKyAg
ICAgICAgKGluaXRpYWxpemVfU2V0T3V0ZXJIVE1MVGVzdC5JbnNwZWN0b3JUZXN0LnNldE91dGVy
SFRNTFVzZVVuZG8uYnJpbmdCYWNrKToKKyAgICAgICAgKGluaXRpYWxpemVfU2V0T3V0ZXJIVE1M
VGVzdC5JbnNwZWN0b3JUZXN0LnNldE91dGVySFRNTFVzZVVuZG8pOgorICAgICAgICAoaW5pdGlh
bGl6ZV9TZXRPdXRlckhUTUxUZXN0Lkluc3BlY3RvclRlc3QuaW5uZXJTZXRPdXRlckhUTUwpOgor
ICAgICAgICAoaW5pdGlhbGl6ZV9TZXRPdXRlckhUTUxUZXN0Lkluc3BlY3RvclRlc3QuX2R1bXBP
dXRlckhUTUwuZHVtcElkZW50aXR5KToKKyAgICAgICAgKGluaXRpYWxpemVfU2V0T3V0ZXJIVE1M
VGVzdC5JbnNwZWN0b3JUZXN0Ll9kdW1wT3V0ZXJIVE1MLmNhbGxiYWNrKToKKyAgICAgICAgKGlu
aXRpYWxpemVfU2V0T3V0ZXJIVE1MVGVzdC5JbnNwZWN0b3JUZXN0Ll9kdW1wT3V0ZXJIVE1MKToK
KyAgICAgICAgKGluaXRpYWxpemVfU2V0T3V0ZXJIVE1MVGVzdCk6CisgICAgICAgICogaW5zcGVj
dG9yL2VsZW1lbnRzL3VuZG8tZG9tLWVkaXRzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBpbnNw
ZWN0b3IvZWxlbWVudHMvdW5kby1zZXQtb3V0ZXItaHRtbC0yLWV4cGVjdGVkLnR4dDogQ29waWVk
IGZyb20gTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2VsZW1lbnRzL3NldC1vdXRlci1odG1sLTItZXhw
ZWN0ZWQudHh0LgorICAgICAgICAqIGluc3BlY3Rvci9lbGVtZW50cy91bmRvLXNldC1vdXRlci1o
dG1sLTIuaHRtbDogQWRkZWQuCisgICAgICAgICogaW5zcGVjdG9yL2VsZW1lbnRzL3VuZG8tc2V0
LW91dGVyLWh0bWwtZXhwZWN0ZWQudHh0OiBDb3BpZWQgZnJvbSBMYXlvdXRUZXN0cy9pbnNwZWN0
b3IvZWxlbWVudHMvc2V0LW91dGVyLWh0bWwtMi1leHBlY3RlZC50eHQuCisgICAgICAgICogaW5z
cGVjdG9yL2VsZW1lbnRzL3VuZG8tc2V0LW91dGVyLWh0bWwuaHRtbDogQWRkZWQuCisKKzIwMTIt
MDItMTAgIFBhdmVsIEZlbGRtYW4gIDxwZmVsZG1hbkBnb29nbGUuY29tPgorCiAgICAgICAgIFtR
dF0gUkVHUkVTU0lPTihyMTA3MjQyKTogSXQgbWFkZSA1IGluc3BlY3RvciB0ZXN0cyBjcmFzaCBp
biBkZWJ1ZyBtb2RlCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD03ODMzMAogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZWxlbWVudHMv
c2V0LW91dGVyLWh0bWwtMi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZWxl
bWVudHMvc2V0LW91dGVyLWh0bWwtMi1leHBlY3RlZC50eHQKaW5kZXggMDhhZTk4NTZkMDM0ODAx
NjVkMTdkMTM3N2QwZDAzNDI2M2Y4ZDY4NS4uMmFkNmNlM2I2MGY0MWZjMDU3YmRiNTUwNmYwMmVi
ODNjZGIxZGM0YyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2VsZW1lbnRzL3Nl
dC1vdXRlci1odG1sLTItZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9l
bGVtZW50cy9zZXQtb3V0ZXItaHRtbC0yLWV4cGVjdGVkLnR4dApAQCAtMTEyLDggKzExMiwxMiBA
QCBCcmluZ2luZyB0aGluZ3MgYmFjawogV3JhcHBlciBpZGVudGl0eTogaWRlbnRpdHkKIEV2ZW50
IE5vZGVJbnNlcnRlZDogSDIKIEV2ZW50IE5vZGVJbnNlcnRlZDogUAorRXZlbnQgTm9kZUluc2Vy
dGVkOiBVTAorRXZlbnQgTm9kZUluc2VydGVkOiBVTAogRXZlbnQgTm9kZVJlbW92ZWQ6IEgyCiBF
dmVudCBOb2RlUmVtb3ZlZDogUAorRXZlbnQgTm9kZVJlbW92ZWQ6IFVMCitFdmVudCBOb2RlUmVt
b3ZlZDogVUwKID09PT09PT09PT04PD09PT09PT09PT0KIDxkaXYgaWQ9ImNvbnRhaW5lciIgc3R5
bGU9ImRpc3BsYXk6bm9uZSI+CiA8cD5XZWJLaXQgaXMgdXNlZCBieSA8YSBocmVmPSJodHRwOi8v
d3d3LmFwcGxlLmNvbS9zYWZhcmkvIj5TYWZhcmk8L2E+LCBEYXNoYm9hcmQsIGV0Yy4uPC9wPgpA
QCAtMTc1LDYgKzE3OSw4IEBAIFJlcGxhY2luZyAnPGgyPkdldHRpbmcgaW52b2x2ZWQ8L2gyPicg
d2l0aCAnPGgyPkdldHRpbmcgaW52b2x2ZWQ8L2gyPjxoMj5HZXR0aW5nCiAKIFdyYXBwZXIgaWRl
bnRpdHk6IGlkZW50aXR5CiBFdmVudCBOb2RlSW5zZXJ0ZWQ6IEgyCitFdmVudCBOb2RlSW5zZXJ0
ZWQ6IEgyCitFdmVudCBOb2RlUmVtb3ZlZDogSDIKID09PT09PT09PT04PD09PT09PT09PT0KIDxk
aXYgaWQ9ImNvbnRhaW5lciIgc3R5bGU9ImRpc3BsYXk6bm9uZSI+CiA8cD5XZWJLaXQgaXMgdXNl
ZCBieSA8YSBocmVmPSJodHRwOi8vd3d3LmFwcGxlLmNvbS9zYWZhcmkvIj5TYWZhcmk8L2E+LCBE
YXNoYm9hcmQsIGV0Yy4uPC9wPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Vs
ZW1lbnRzL3NldC1vdXRlci1odG1sLXRlc3QuanMgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZWxl
bWVudHMvc2V0LW91dGVyLWh0bWwtdGVzdC5qcwppbmRleCBlMWRiMWUzOTQxMTljN2M5M2I0YzY2
ODk1NDlhZmRjZGYwOTJjNWUxLi4yMmMzNzVjZGE0M2Y0YTczY2JhOTkzMDBlOTU4MTFhOGJhYzhh
ZDgxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZWxlbWVudHMvc2V0LW91dGVy
LWh0bWwtdGVzdC5qcworKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZWxlbWVudHMvc2V0LW91
dGVyLWh0bWwtdGVzdC5qcwpAQCAtNDQsOCArNDQsMTQgQEAgSW5zcGVjdG9yVGVzdC5yZWNvcmRF
dmVudCA9IGZ1bmN0aW9uKGV2ZW50TmFtZSwgZXZlbnQpCiAKIEluc3BlY3RvclRlc3QucGF0Y2hP
dXRlckhUTUwgPSBmdW5jdGlvbihwYXR0ZXJuLCByZXBsYWNlbWVudCwgbmV4dCkKIHsKLSAgIElu
c3BlY3RvclRlc3QuYWRkUmVzdWx0KCJSZXBsYWNpbmcgJyIgKyBwYXR0ZXJuICsgIicgd2l0aCAn
IiArIHJlcGxhY2VtZW50ICsgIidcbiIpOwotICAgSW5zcGVjdG9yVGVzdC5zZXRPdXRlckhUTUwo
SW5zcGVjdG9yVGVzdC5jb250YWluZXJUZXh0LnJlcGxhY2UocGF0dGVybiwgcmVwbGFjZW1lbnQp
LCBuZXh0KTsKKyAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiUmVwbGFjaW5nICciICsgcGF0
dGVybiArICInIHdpdGggJyIgKyByZXBsYWNlbWVudCArICInXG4iKTsKKyAgICBJbnNwZWN0b3JU
ZXN0LnNldE91dGVySFRNTChJbnNwZWN0b3JUZXN0LmNvbnRhaW5lclRleHQucmVwbGFjZShwYXR0
ZXJuLCByZXBsYWNlbWVudCksIG5leHQpOworfQorCitJbnNwZWN0b3JUZXN0LnBhdGNoT3V0ZXJI
VE1MVXNlVW5kbyA9IGZ1bmN0aW9uKHBhdHRlcm4sIHJlcGxhY2VtZW50LCBuZXh0KQoreworICAg
IEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJSZXBsYWNpbmcgJyIgKyBwYXR0ZXJuICsgIicgd2l0
aCAnIiArIHJlcGxhY2VtZW50ICsgIidcbiIpOworICAgIEluc3BlY3RvclRlc3Quc2V0T3V0ZXJI
VE1MVXNlVW5kbyhJbnNwZWN0b3JUZXN0LmNvbnRhaW5lclRleHQucmVwbGFjZShwYXR0ZXJuLCBy
ZXBsYWNlbWVudCksIG5leHQpOwogfQogCiBJbnNwZWN0b3JUZXN0LnNldE91dGVySFRNTCA9IGZ1
bmN0aW9uKG5ld1RleHQsIG5leHQpCkBAIC01OSwzMyArNjUsNDQgQEAgSW5zcGVjdG9yVGVzdC5z
ZXRPdXRlckhUTUwgPSBmdW5jdGlvbihuZXdUZXh0LCBuZXh0KQogICAgIH0KIH0KIAorSW5zcGVj
dG9yVGVzdC5zZXRPdXRlckhUTUxVc2VVbmRvID0gZnVuY3Rpb24obmV3VGV4dCwgbmV4dCkKK3sK
KyAgICBJbnNwZWN0b3JUZXN0LmlubmVyU2V0T3V0ZXJIVE1MKG5ld1RleHQsIGZhbHNlLCBicmlu
Z0JhY2spOworCisgICAgZnVuY3Rpb24gYnJpbmdCYWNrKCkKKyAgICB7CisgICAgICAgIEluc3Bl
Y3RvclRlc3QuYWRkUmVzdWx0KCJcbkJyaW5naW5nIHRoaW5ncyBiYWNrXG4iKTsKKyAgICAgICAg
RE9NQWdlbnQudW5kbyhJbnNwZWN0b3JUZXN0Ll9kdW1wT3V0ZXJIVE1MLmJpbmQoSW5zcGVjdG9y
VGVzdCwgdHJ1ZSwgbmV4dCkpOworICAgIH0KK30KKwogSW5zcGVjdG9yVGVzdC5pbm5lclNldE91
dGVySFRNTCA9IGZ1bmN0aW9uKG5ld1RleHQsIGxhc3QsIG5leHQpCiB7Ci0gICAgRE9NQWdlbnQu
c2V0T3V0ZXJIVE1MKEluc3BlY3RvclRlc3QuY29udGFpbmVySWQsIG5ld1RleHQsIGR1bXBPdXRl
ckhUTUwpOworICAgIERPTUFnZW50LnNldE91dGVySFRNTChJbnNwZWN0b3JUZXN0LmNvbnRhaW5l
cklkLCBuZXdUZXh0LCBJbnNwZWN0b3JUZXN0Ll9kdW1wT3V0ZXJIVE1MLmJpbmQoSW5zcGVjdG9y
VGVzdCwgbGFzdCwgbmV4dCkpOworfQogCi0gICAgZnVuY3Rpb24gZHVtcE91dGVySFRNTCgpCitJ
bnNwZWN0b3JUZXN0Ll9kdW1wT3V0ZXJIVE1MID0gZnVuY3Rpb24obGFzdCwgbmV4dCkKK3sKKyAg
ICBSdW50aW1lQWdlbnQuZXZhbHVhdGUoImRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwiaWRlbnRp
dHlcIikud3JhcHBlcklkZW50aXR5IiwgZHVtcElkZW50aXR5KTsKKyAgICBmdW5jdGlvbiBkdW1w
SWRlbnRpdHkoZXJyb3IsIHJlc3VsdCkKICAgICB7Ci0gICAgICAgIFJ1bnRpbWVBZ2VudC5ldmFs
dWF0ZSgiZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJpZGVudGl0eVwiKS53cmFwcGVySWRlbnRp
dHkiLCBkdW1wSWRlbnRpdHkpOwotICAgICAgICBmdW5jdGlvbiBkdW1wSWRlbnRpdHkoZXJyb3Is
IHJlc3VsdCkKLSAgICAgICAgewotICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQo
IldyYXBwZXIgaWRlbnRpdHk6ICIgKyByZXN1bHQudmFsdWUpOwotICAgICAgICAgICAgSW5zcGVj
dG9yVGVzdC5ldmVudHMuc29ydCgpOwotICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBJ
bnNwZWN0b3JUZXN0LmV2ZW50cy5sZW5ndGg7ICsraSkKLSAgICAgICAgICAgICAgICBJbnNwZWN0
b3JUZXN0LmFkZFJlc3VsdChJbnNwZWN0b3JUZXN0LmV2ZW50c1tpXSk7Ci0gICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0LmV2ZW50cyA9IFtdOwotICAgICAgICB9CisgICAgICAgIEluc3BlY3RvclRl
c3QuYWRkUmVzdWx0KCJXcmFwcGVyIGlkZW50aXR5OiAiICsgcmVzdWx0LnZhbHVlKTsKKyAgICAg
ICAgSW5zcGVjdG9yVGVzdC5ldmVudHMuc29ydCgpOworICAgICAgICBmb3IgKHZhciBpID0gMDsg
aSA8IEluc3BlY3RvclRlc3QuZXZlbnRzLmxlbmd0aDsgKytpKQorICAgICAgICAgICAgSW5zcGVj
dG9yVGVzdC5hZGRSZXN1bHQoSW5zcGVjdG9yVGVzdC5ldmVudHNbaV0pOworICAgICAgICBJbnNw
ZWN0b3JUZXN0LmV2ZW50cyA9IFtdOworICAgIH0KIAotICAgICAgICBET01BZ2VudC5nZXRPdXRl
ckhUTUwoSW5zcGVjdG9yVGVzdC5jb250YWluZXJJZCwgY2FsbGJhY2spOworICAgIERPTUFnZW50
LmdldE91dGVySFRNTChJbnNwZWN0b3JUZXN0LmNvbnRhaW5lcklkLCBjYWxsYmFjayk7CiAKLSAg
ICAgICAgZnVuY3Rpb24gY2FsbGJhY2soZXJyb3IsIHRleHQpCi0gICAgICAgIHsKLSAgICAgICAg
ICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCI9PT09PT09PT09ODw9PT09PT09PT09Iik7Ci0g
ICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCh0ZXh0KTsKLSAgICAgICAgICAgIElu
c3BlY3RvclRlc3QuYWRkUmVzdWx0KCI9PT09PT09PT09Pjg9PT09PT09PT09Iik7Ci0gICAgICAg
ICAgICBpZiAobGFzdCkKLSAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgi
XG5cblxuIik7Ci0gICAgICAgICAgICBuZXh0KCk7Ci0gICAgICAgIH0KKyAgICBmdW5jdGlvbiBj
YWxsYmFjayhlcnJvciwgdGV4dCkKKyAgICB7CisgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVz
dWx0KCI9PT09PT09PT09ODw9PT09PT09PT09Iik7CisgICAgICAgIEluc3BlY3RvclRlc3QuYWRk
UmVzdWx0KHRleHQpOworICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiPT09PT09PT09
PT44PT09PT09PT09PSIpOworICAgICAgICBpZiAobGFzdCkKKyAgICAgICAgICAgIEluc3BlY3Rv
clRlc3QuYWRkUmVzdWx0KCJcblxuXG4iKTsKKyAgICAgICAgbmV4dCgpOwogICAgIH0KIH0KIApk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2VsZW1lbnRzL3VuZG8tZG9tLWVkaXRz
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9lbGVtZW50cy91bmRvLWRvbS1l
ZGl0cy1leHBlY3RlZC50eHQKaW5kZXggZjY3ZmIzY2MyNDMwZGY5ZTk0NzNhN2E5ZjMzMTUwMTYx
N2MwNmJiYy4uZmE4MzM3ZmI0MGM1YWI4MDU2MjczNWRiNWVjYWFlYTcxMGVlODJmYiAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2VsZW1lbnRzL3VuZG8tZG9tLWVkaXRzLWV4cGVj
dGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZWxlbWVudHMvdW5kby1kb20tZWRp
dHMtZXhwZWN0ZWQudHh0CkBAIC01OCw2ICs1OCw2IEBAIFBvc3QtYWN0aW9uOgogICA8L2Rpdj4K
IFBvc3QtdW5kbyAoaW5pdGlhbCk6CiAtIDxkaXYgaWQ9InRlc3RFZGl0QXNIVE1MIj4KLSAgICAr
IDxkaXYgaWQ9Im5vZGUtdG8tZWRpdC1hcy1odG1sIj48L2Rpdj4KKyAgICArIDxkaXYgaWQ9Im5v
ZGUtdG8tZWRpdC1hcy1odG1sIj7igKY8L2Rpdj4KICAgPC9kaXY+CiAKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2luc3BlY3Rvci9lbGVtZW50cy91bmRvLXNldC1vdXRlci1odG1sLTItZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2VsZW1lbnRzL3VuZG8tc2V0LW91dGVyLWh0
bWwtMi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjY0NmE4MDk4NTQ0ZjMzOWY4ODQzOGE3MmEy
NWMzNjlmNjQzMjdiNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9l
bGVtZW50cy91bmRvLXNldC1vdXRlci1odG1sLTItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjE0
IEBACitUZXN0cyB1bmRvIGZvciB0aGUgRE9NQWdlbnQuc2V0T3V0ZXJIVE1MIHByb3RvY29sIG1l
dGhvZCAocGFydCAyKS4KKworCitSdW5uaW5nOiB0ZXN0U2V0VXAKKworUnVubmluZzogdGVzdENo
YW5nZU11bHRpcGxlVGhpbmdzCitXcmFwcGVyIGlkZW50aXR5OiBpZGVudGl0eQorRXZlbnQgQXR0
ck1vZGlmaWVkOiBIMgorRXZlbnQgQXR0ck1vZGlmaWVkOiBIMgorRXZlbnQgTm9kZUluc2VydGVk
OiBVTAorRXZlbnQgTm9kZVJlbW92ZWQ6IFVMCis9PT09PT09PT09ODw9PT09PT09PT09Cis8ZGl2
IGlkPSJjb250YWluZXIiIHN0eWxlPSJkaXNwbGF5Om5vbmUiPgorPHA+V2ViS2l0IGlzIHVzZWQg
YnkgPGEgaHJlZj0iaHR0cDovL3d3dy5hcHBsZS5jb20vc2FmYXJpLyI+U2FmYXJpPC9hPiwgRGFz
aGJvYXJkLCBldGMuLjwvcD4KKzxoMiBmb289ImJhciIgYmFyPSJiYXoiPkdldHRpbmcgaW52b2x2
ZWQ8L2gyPgorPHAgaWQ9ImlkZW50aXR5Ij5UaGVyZSBhcmUgbWFueSB3YXlzIHRvIGdldCBpbnZv
bHZlZC4gWW91IGNhbjo8L3A+Cis8dWw+CisgICAKKzwvdWw+Cis8dWw+CisgICA8bGk+PC9saT4K
KzwvdWw+Cis8L2Rpdj4KKz09PT09PT09PT0+OD09PT09PT09PT0KKworQnJpbmdpbmcgdGhpbmdz
IGJhY2sKKworV3JhcHBlciBpZGVudGl0eTogaWRlbnRpdHkKK0V2ZW50IEF0dHJSZW1vdmVkOiBI
MgorRXZlbnQgQXR0clJlbW92ZWQ6IEgyCitFdmVudCBOb2RlSW5zZXJ0ZWQ6IFVMCitFdmVudCBO
b2RlUmVtb3ZlZDogVUwKKz09PT09PT09PT04PD09PT09PT09PT0KKzxkaXYgaWQ9ImNvbnRhaW5l
ciIgc3R5bGU9ImRpc3BsYXk6bm9uZSI+Cis8cD5XZWJLaXQgaXMgdXNlZCBieSA8YSBocmVmPSJo
dHRwOi8vd3d3LmFwcGxlLmNvbS9zYWZhcmkvIj5TYWZhcmk8L2E+LCBEYXNoYm9hcmQsIGV0Yy4u
PC9wPgorPGgyPkdldHRpbmcgaW52b2x2ZWQ8L2gyPgorPHAgaWQ9ImlkZW50aXR5Ij5UaGVyZSBh
cmUgbWFueSB3YXlzIHRvIGdldCBpbnZvbHZlZC4gWW91IGNhbjo8L3A+Cis8dWw+CisgICA8bGk+
PC9saT4KKzwvdWw+Cis8dWw+CisgICA8bGk+PC9saT4KKzwvdWw+Cis8L2Rpdj4KKz09PT09PT09
PT0+OD09PT09PT09PT0KKworCisKKworCitSdW5uaW5nOiB0ZXN0Q2hhbmdlTmVzdGluZ0xldmVs
CitXcmFwcGVyIGlkZW50aXR5OiBpZGVudGl0eQorRXZlbnQgTm9kZUluc2VydGVkOiBESVYKK0V2
ZW50IE5vZGVSZW1vdmVkOiBVTAorPT09PT09PT09PTg8PT09PT09PT09PQorPGRpdiBpZD0iY29u
dGFpbmVyIiBzdHlsZT0iZGlzcGxheTpub25lIj4KKzxwPldlYktpdCBpcyB1c2VkIGJ5IDxhIGhy
ZWY9Imh0dHA6Ly93d3cuYXBwbGUuY29tL3NhZmFyaS8iPlNhZmFyaTwvYT4sIERhc2hib2FyZCwg
ZXRjLi48L3A+Cis8aDI+R2V0dGluZyBpbnZvbHZlZDwvaDI+Cis8cCBpZD0iaWRlbnRpdHkiPlRo
ZXJlIGFyZSBtYW55IHdheXMgdG8gZ2V0IGludm9sdmVkLiBZb3UgY2FuOjwvcD4KKzxkaXY+PHVs
PgorICAgPGxpPjwvbGk+Cis8L3VsPjwvZGl2PgorPHVsPgorICAgPGxpPjwvbGk+Cis8L3VsPgor
PC9kaXY+Cis9PT09PT09PT09Pjg9PT09PT09PT09CisKK0JyaW5naW5nIHRoaW5ncyBiYWNrCisK
K1dyYXBwZXIgaWRlbnRpdHk6IGlkZW50aXR5CitFdmVudCBOb2RlSW5zZXJ0ZWQ6IFVMCitFdmVu
dCBOb2RlUmVtb3ZlZDogRElWCis9PT09PT09PT09ODw9PT09PT09PT09Cis8ZGl2IGlkPSJjb250
YWluZXIiIHN0eWxlPSJkaXNwbGF5Om5vbmUiPgorPHA+V2ViS2l0IGlzIHVzZWQgYnkgPGEgaHJl
Zj0iaHR0cDovL3d3dy5hcHBsZS5jb20vc2FmYXJpLyI+U2FmYXJpPC9hPiwgRGFzaGJvYXJkLCBl
dGMuLjwvcD4KKzxoMj5HZXR0aW5nIGludm9sdmVkPC9oMj4KKzxwIGlkPSJpZGVudGl0eSI+VGhl
cmUgYXJlIG1hbnkgd2F5cyB0byBnZXQgaW52b2x2ZWQuIFlvdSBjYW46PC9wPgorPHVsPgorICAg
PGxpPjwvbGk+Cis8L3VsPgorPHVsPgorICAgPGxpPjwvbGk+Cis8L3VsPgorPC9kaXY+Cis9PT09
PT09PT09Pjg9PT09PT09PT09CisKKworCisKKworUnVubmluZzogdGVzdFN3YXBOb2RlcworV3Jh
cHBlciBpZGVudGl0eTogaWRlbnRpdHkKK0V2ZW50IE5vZGVJbnNlcnRlZDogSDIKK0V2ZW50IE5v
ZGVSZW1vdmVkOiBIMgorPT09PT09PT09PTg8PT09PT09PT09PQorPGRpdiBpZD0iY29udGFpbmVy
IiBzdHlsZT0iZGlzcGxheTpub25lIj4KKzxwPldlYktpdCBpcyB1c2VkIGJ5IDxhIGhyZWY9Imh0
dHA6Ly93d3cuYXBwbGUuY29tL3NhZmFyaS8iPlNhZmFyaTwvYT4sIERhc2hib2FyZCwgZXRjLi48
L3A+CisKKzxwIGlkPSJpZGVudGl0eSI+VGhlcmUgYXJlIG1hbnkgd2F5cyB0byBnZXQgaW52b2x2
ZWQuIFlvdSBjYW46PC9wPgorPHVsPgorICAgPGxpPjwvbGk+Cis8L3VsPgorPHVsPgorICAgPGxp
PjwvbGk+Cis8L3VsPgorPGgyPkdldHRpbmcgaW52b2x2ZWQ8L2gyPjwvZGl2PgorPT09PT09PT09
PT44PT09PT09PT09PQorCitCcmluZ2luZyB0aGluZ3MgYmFjaworCitXcmFwcGVyIGlkZW50aXR5
OiBpZGVudGl0eQorRXZlbnQgTm9kZUluc2VydGVkOiBIMgorRXZlbnQgTm9kZVJlbW92ZWQ6IEgy
Cis9PT09PT09PT09ODw9PT09PT09PT09Cis8ZGl2IGlkPSJjb250YWluZXIiIHN0eWxlPSJkaXNw
bGF5Om5vbmUiPgorPHA+V2ViS2l0IGlzIHVzZWQgYnkgPGEgaHJlZj0iaHR0cDovL3d3dy5hcHBs
ZS5jb20vc2FmYXJpLyI+U2FmYXJpPC9hPiwgRGFzaGJvYXJkLCBldGMuLjwvcD4KKzxoMj5HZXR0
aW5nIGludm9sdmVkPC9oMj4KKzxwIGlkPSJpZGVudGl0eSI+VGhlcmUgYXJlIG1hbnkgd2F5cyB0
byBnZXQgaW52b2x2ZWQuIFlvdSBjYW46PC9wPgorPHVsPgorICAgPGxpPjwvbGk+Cis8L3VsPgor
PHVsPgorICAgPGxpPjwvbGk+Cis8L3VsPgorPC9kaXY+Cis9PT09PT09PT09Pjg9PT09PT09PT09
CisKKworCisKKworUnVubmluZzogdGVzdEVkaXRUd29Sb290cworV3JhcHBlciBpZGVudGl0eTog
aWRlbnRpdHkKK0V2ZW50IE5vZGVJbnNlcnRlZDogRElWCis9PT09PT09PT09ODw9PT09PT09PT09
Cis8ZGl2IGlkPSJjb250YWluZXIiIHN0eWxlPSJkaXNwbGF5Om5vbmUiPgorPHA+V2ViS2l0IGlz
IHVzZWQgYnkgPGEgaHJlZj0iaHR0cDovL3d3dy5hcHBsZS5jb20vc2FmYXJpLyI+U2FmYXJpPC9h
PiwgRGFzaGJvYXJkLCBldGMuLjwvcD4KKzxoMj5HZXR0aW5nIGludm9sdmVkPC9oMj4KKzxwIGlk
PSJpZGVudGl0eSI+VGhlcmUgYXJlIG1hbnkgd2F5cyB0byBnZXQgaW52b2x2ZWQuIFlvdSBjYW46
PC9wPgorPHVsPgorICAgPGxpPjwvbGk+Cis8L3VsPgorPHVsPgorICAgPGxpPjwvbGk+Cis8L3Vs
PgorPC9kaXY+Cis9PT09PT09PT09Pjg9PT09PT09PT09CisKK0JyaW5naW5nIHRoaW5ncyBiYWNr
CisKK1dyYXBwZXIgaWRlbnRpdHk6IGlkZW50aXR5CitFdmVudCBOb2RlUmVtb3ZlZDogRElWCis9
PT09PT09PT09ODw9PT09PT09PT09Cis8ZGl2IGlkPSJjb250YWluZXIiIHN0eWxlPSJkaXNwbGF5
Om5vbmUiPgorPHA+V2ViS2l0IGlzIHVzZWQgYnkgPGEgaHJlZj0iaHR0cDovL3d3dy5hcHBsZS5j
b20vc2FmYXJpLyI+U2FmYXJpPC9hPiwgRGFzaGJvYXJkLCBldGMuLjwvcD4KKzxoMj5HZXR0aW5n
IGludm9sdmVkPC9oMj4KKzxwIGlkPSJpZGVudGl0eSI+VGhlcmUgYXJlIG1hbnkgd2F5cyB0byBn
ZXQgaW52b2x2ZWQuIFlvdSBjYW46PC9wPgorPHVsPgorICAgPGxpPjwvbGk+Cis8L3VsPgorPHVs
PgorICAgPGxpPjwvbGk+Cis8L3VsPgorPC9kaXY+Cis9PT09PT09PT09Pjg9PT09PT09PT09CisK
KworCisKKworUnVubmluZzogdGVzdER1cGVOb2RlCitSZXBsYWNpbmcgJzxoMj5HZXR0aW5nIGlu
dm9sdmVkPC9oMj4nIHdpdGggJzxoMj5HZXR0aW5nIGludm9sdmVkPC9oMj48aDI+R2V0dGluZyBp
bnZvbHZlZDwvaDI+JworCitXcmFwcGVyIGlkZW50aXR5OiBpZGVudGl0eQorRXZlbnQgTm9kZUlu
c2VydGVkOiBIMgorRXZlbnQgTm9kZUluc2VydGVkOiBIMgorRXZlbnQgTm9kZVJlbW92ZWQ6IEgy
Cis9PT09PT09PT09ODw9PT09PT09PT09Cis8ZGl2IGlkPSJjb250YWluZXIiIHN0eWxlPSJkaXNw
bGF5Om5vbmUiPgorPHA+V2ViS2l0IGlzIHVzZWQgYnkgPGEgaHJlZj0iaHR0cDovL3d3dy5hcHBs
ZS5jb20vc2FmYXJpLyI+U2FmYXJpPC9hPiwgRGFzaGJvYXJkLCBldGMuLjwvcD4KKzxoMj5HZXR0
aW5nIGludm9sdmVkPC9oMj48aDI+R2V0dGluZyBpbnZvbHZlZDwvaDI+Cis8cCBpZD0iaWRlbnRp
dHkiPlRoZXJlIGFyZSBtYW55IHdheXMgdG8gZ2V0IGludm9sdmVkLiBZb3UgY2FuOjwvcD4KKzx1
bD4KKyAgIDxsaT48L2xpPgorPC91bD4KKzx1bD4KKyAgIDxsaT48L2xpPgorPC91bD4KKzwvZGl2
PgorPT09PT09PT09PT44PT09PT09PT09PQorCitCcmluZ2luZyB0aGluZ3MgYmFjaworCitXcmFw
cGVyIGlkZW50aXR5OiBpZGVudGl0eQorRXZlbnQgTm9kZVJlbW92ZWQ6IEgyCis9PT09PT09PT09
ODw9PT09PT09PT09Cis8ZGl2IGlkPSJjb250YWluZXIiIHN0eWxlPSJkaXNwbGF5Om5vbmUiPgor
PHA+V2ViS2l0IGlzIHVzZWQgYnkgPGEgaHJlZj0iaHR0cDovL3d3dy5hcHBsZS5jb20vc2FmYXJp
LyI+U2FmYXJpPC9hPiwgRGFzaGJvYXJkLCBldGMuLjwvcD4KKzxoMj5HZXR0aW5nIGludm9sdmVk
PC9oMj4KKzxwIGlkPSJpZGVudGl0eSI+VGhlcmUgYXJlIG1hbnkgd2F5cyB0byBnZXQgaW52b2x2
ZWQuIFlvdSBjYW46PC9wPgorPHVsPgorICAgPGxpPjwvbGk+Cis8L3VsPgorPHVsPgorICAgPGxp
PjwvbGk+Cis8L3VsPgorPC9kaXY+Cis9PT09PT09PT09Pjg9PT09PT09PT09CisKKworCisKKwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2VsZW1lbnRzL3VuZG8tc2V0LW91dGVy
LWh0bWwtMi5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2VsZW1lbnRzL3VuZG8tc2V0LW91
dGVyLWh0bWwtMi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmExN2JhOTk1MWJlOWM0Y2Y4MjBkYjhkYTNmZmY1
MDk0YzhjN2NhMDgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZWxl
bWVudHMvdW5kby1zZXQtb3V0ZXItaHRtbC0yLmh0bWwKQEAgLTAsMCArMSw3NyBAQAorPGh0bWw+
Cis8aGVhZD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luc3Bl
Y3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9odHRwL3Rlc3RzL2lu
c3BlY3Rvci9lbGVtZW50cy10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJzZXQtb3V0
ZXItaHRtbC10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CisKK2Z1bmN0aW9uIG9ubG9hZCgp
Cit7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImlkZW50aXR5Iikud3JhcHBlcklkZW50
aXR5ID0gImlkZW50aXR5IjsKKyAgICBydW5UZXN0KCk7Cit9CisKK2Z1bmN0aW9uIHRlc3QoKQor
eworICAgIEluc3BlY3RvclRlc3QucnVuVGVzdFN1aXRlKFsKKyAgICAgICAgZnVuY3Rpb24gdGVz
dFNldFVwKG5leHQpCisgICAgICAgIHsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3Quc2V0VXBU
ZXN0U3VpdGUobmV4dCk7CisgICAgICAgIH0sCisKKyAgICAgICAgZnVuY3Rpb24gdGVzdENoYW5n
ZU11bHRpcGxlVGhpbmdzKG5leHQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciB0ZXh0ID0g
SW5zcGVjdG9yVGVzdC5jb250YWluZXJUZXh0LnJlcGxhY2UoLzxsaT4uKjxcL2xpPi8sICIiKTsK
KyAgICAgICAgICAgIHRleHQgPSB0ZXh0LnJlcGxhY2UoIjxoMj4iLCAiPGgyIGZvbz1cImJhclwi
IGJhcj1cImJhelwiPiIpOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5zZXRPdXRlckhUTUxV
c2VVbmRvKHRleHQsIG5leHQpOworICAgICAgICB9LAorCisgICAgICAgIGZ1bmN0aW9uIHRlc3RD
aGFuZ2VOZXN0aW5nTGV2ZWwobmV4dCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHRleHQg
PSBJbnNwZWN0b3JUZXN0LmNvbnRhaW5lclRleHQucmVwbGFjZSgiPHVsPiIsICI8ZGl2Pjx1bD4i
KTsKKyAgICAgICAgICAgIHZhciB0ZXh0ID0gdGV4dC5yZXBsYWNlKCI8L3VsPiIsICI8L3VsPjwv
ZGl2PiIpOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5zZXRPdXRlckhUTUxVc2VVbmRvKHRl
eHQsIG5leHQpOworICAgICAgICB9LAorCisgICAgICAgIGZ1bmN0aW9uIHRlc3RTd2FwTm9kZXMo
bmV4dCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHRleHQgPSBJbnNwZWN0b3JUZXN0LmNv
bnRhaW5lclRleHQucmVwbGFjZSgiPGgyPkdldHRpbmcgaW52b2x2ZWQ8L2gyPiIsICIiKTsKKyAg
ICAgICAgICAgIHZhciB0ZXh0ID0gdGV4dC5yZXBsYWNlKCI8L2Rpdj4iLCAiPGgyPkdldHRpbmcg
aW52b2x2ZWQ8L2gyPjwvZGl2PiIpOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5zZXRPdXRl
ckhUTUxVc2VVbmRvKHRleHQsIG5leHQpOworICAgICAgICB9LAorCisgICAgICAgIGZ1bmN0aW9u
IHRlc3RFZGl0VHdvUm9vdHMobmV4dCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHRleHQg
PSBJbnNwZWN0b3JUZXN0LmNvbnRhaW5lclRleHQgKyAiPGRpdj5BZGRpdGlvbmFsIG5vZGU8L2Rp
dj4iOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5zZXRPdXRlckhUTUxVc2VVbmRvKHRleHQs
IG5leHQpOworICAgICAgICB9LAorCisgICAgICAgIGZ1bmN0aW9uIHRlc3REdXBlTm9kZShuZXh0
KQorICAgICAgICB7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LnBhdGNoT3V0ZXJIVE1MKCI8
aDI+R2V0dGluZyBpbnZvbHZlZDwvaDI+IiwgIjxoMj5HZXR0aW5nIGludm9sdmVkPC9oMj48aDI+
R2V0dGluZyBpbnZvbHZlZDwvaDI+IiwgbmV4dCk7CisgICAgICAgIH0KKyAgICBdKTsKK30KKzwv
c2NyaXB0PgorPC9oZWFkPgorCis8Ym9keSBvbmxvYWQ9Im9ubG9hZCgpIj4KKzxwPgorVGVzdHMg
dW5kbyBmb3IgdGhlIERPTUFnZW50LnNldE91dGVySFRNTCBwcm90b2NvbCBtZXRob2QgKHBhcnQg
MikuCis8L3A+CisKKzxkaXYgaWQ9ImNvbnRhaW5lciIgc3R5bGU9ImRpc3BsYXk6bm9uZSI+Cis8
cD5XZWJLaXQgaXMgdXNlZCBieSA8YSBocmVmPSJodHRwOi8vd3d3LmFwcGxlLmNvbS9zYWZhcmkv
Ij5TYWZhcmk8L2E+LCBEYXNoYm9hcmQsIGV0Yy4uPC9wPgorPGgyPkdldHRpbmcgaW52b2x2ZWQ8
L2gyPgorPHAgaWQ9ImlkZW50aXR5Ij5UaGVyZSBhcmUgbWFueSB3YXlzIHRvIGdldCBpbnZvbHZl
ZC4gWW91IGNhbjo8L3A+Cis8dWw+CisgICA8bGk+PC9saT4KKzwvdWw+Cis8dWw+CisgICA8bGk+
PC9saT4KKzwvdWw+Cis8L2Rpdj4KKworPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW5zcGVjdG9yL2VsZW1lbnRzL3VuZG8tc2V0LW91dGVyLWh0bWwtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2VsZW1lbnRzL3VuZG8tc2V0LW91dGVyLWh0bWwt
ZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM5ZjYwZjllNTAzNjA0MDIzZTQ2OGRlNWYyMTA1Yjc3
MGI2YmZhNzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZWxlbWVu
dHMvdW5kby1zZXQtb3V0ZXItaHRtbC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNjAgQEAKK1Rl
c3RzIHVuZG8gZm9yIHRoZSBET01BZ2VudC5zZXRPdXRlckhUTUwgcHJvdG9jb2wgbWV0aG9kLgor
CisKK1J1bm5pbmc6IHRlc3RTZXRVcAorCitSdW5uaW5nOiB0ZXN0Q2hhbmdlQ2hhcmFjdGVyRGF0
YQorUmVwbGFjaW5nICdHZXR0aW5nIGludm9sdmVkJyB3aXRoICdHZXR0aW5nIG5vdCBpbnZvbHZl
ZCcKKworV3JhcHBlciBpZGVudGl0eTogaWRlbnRpdHkKK0V2ZW50IENoYXJhY3RlckRhdGFNb2Rp
ZmllZDogCis9PT09PT09PT09ODw9PT09PT09PT09Cis8ZGl2IGlkPSJjb250YWluZXIiIHN0eWxl
PSJkaXNwbGF5Om5vbmUiPgorPHA+V2ViS2l0IGlzIHVzZWQgYnkgPGEgaHJlZj0iaHR0cDovL3d3
dy5hcHBsZS5jb20vc2FmYXJpLyI+U2FmYXJpPC9hPiwgRGFzaGJvYXJkLCBldGMuLjwvcD4KKzxo
Mj5HZXR0aW5nIG5vdCBpbnZvbHZlZDwvaDI+Cis8cCBpZD0iaWRlbnRpdHkiPlRoZXJlIGFyZSBt
YW55IHdheXMgdG8gZ2V0IGludm9sdmVkLiBZb3UgY2FuOjwvcD4KKzwvZGl2PgorPT09PT09PT09
PT44PT09PT09PT09PQorCitCcmluZ2luZyB0aGluZ3MgYmFjaworCitXcmFwcGVyIGlkZW50aXR5
OiBpZGVudGl0eQorRXZlbnQgQ2hhcmFjdGVyRGF0YU1vZGlmaWVkOiAKKz09PT09PT09PT04PD09
PT09PT09PT0KKzxkaXYgaWQ9ImNvbnRhaW5lciIgc3R5bGU9ImRpc3BsYXk6bm9uZSI+Cis8cD5X
ZWJLaXQgaXMgdXNlZCBieSA8YSBocmVmPSJodHRwOi8vd3d3LmFwcGxlLmNvbS9zYWZhcmkvIj5T
YWZhcmk8L2E+LCBEYXNoYm9hcmQsIGV0Yy4uPC9wPgorPGgyPkdldHRpbmcgaW52b2x2ZWQ8L2gy
PgorPHAgaWQ9ImlkZW50aXR5Ij5UaGVyZSBhcmUgbWFueSB3YXlzIHRvIGdldCBpbnZvbHZlZC4g
WW91IGNhbjo8L3A+Cis8L2Rpdj4KKz09PT09PT09PT0+OD09PT09PT09PT0KKworCisKKworCitS
dW5uaW5nOiB0ZXN0Q2hhbmdlQXR0cmlidXRlcworUmVwbGFjaW5nICc8YSBocmVmJyB3aXRoICc8
YSBmb289ImJhciIgaHJlZicKKworV3JhcHBlciBpZGVudGl0eTogaWRlbnRpdHkKK0V2ZW50IEF0
dHJNb2RpZmllZDogQQorRXZlbnQgQXR0ck1vZGlmaWVkOiBBCitFdmVudCBBdHRyUmVtb3ZlZDog
QQorPT09PT09PT09PTg8PT09PT09PT09PQorPGRpdiBpZD0iY29udGFpbmVyIiBzdHlsZT0iZGlz
cGxheTpub25lIj4KKzxwPldlYktpdCBpcyB1c2VkIGJ5IDxhIGZvbz0iYmFyIiBocmVmPSJodHRw
Oi8vd3d3LmFwcGxlLmNvbS9zYWZhcmkvIj5TYWZhcmk8L2E+LCBEYXNoYm9hcmQsIGV0Yy4uPC9w
PgorPGgyPkdldHRpbmcgaW52b2x2ZWQ8L2gyPgorPHAgaWQ9ImlkZW50aXR5Ij5UaGVyZSBhcmUg
bWFueSB3YXlzIHRvIGdldCBpbnZvbHZlZC4gWW91IGNhbjo8L3A+Cis8L2Rpdj4KKz09PT09PT09
PT0+OD09PT09PT09PT0KKworQnJpbmdpbmcgdGhpbmdzIGJhY2sKKworV3JhcHBlciBpZGVudGl0
eTogaWRlbnRpdHkKK0V2ZW50IEF0dHJNb2RpZmllZDogQQorRXZlbnQgQXR0clJlbW92ZWQ6IEEK
K0V2ZW50IEF0dHJSZW1vdmVkOiBBCis9PT09PT09PT09ODw9PT09PT09PT09Cis8ZGl2IGlkPSJj
b250YWluZXIiIHN0eWxlPSJkaXNwbGF5Om5vbmUiPgorPHA+V2ViS2l0IGlzIHVzZWQgYnkgPGEg
aHJlZj0iaHR0cDovL3d3dy5hcHBsZS5jb20vc2FmYXJpLyI+U2FmYXJpPC9hPiwgRGFzaGJvYXJk
LCBldGMuLjwvcD4KKzxoMj5HZXR0aW5nIGludm9sdmVkPC9oMj4KKzxwIGlkPSJpZGVudGl0eSI+
VGhlcmUgYXJlIG1hbnkgd2F5cyB0byBnZXQgaW52b2x2ZWQuIFlvdSBjYW46PC9wPgorPC9kaXY+
Cis9PT09PT09PT09Pjg9PT09PT09PT09CisKKworCisKKworUnVubmluZzogdGVzdFJlbW92ZUxh
c3RDaGlsZAorUmVwbGFjaW5nICdHZXR0aW5nIGludm9sdmVkJyB3aXRoICcnCisKK1dyYXBwZXIg
aWRlbnRpdHk6IGlkZW50aXR5CitFdmVudCBOb2RlUmVtb3ZlZDogCis9PT09PT09PT09ODw9PT09
PT09PT09Cis8ZGl2IGlkPSJjb250YWluZXIiIHN0eWxlPSJkaXNwbGF5Om5vbmUiPgorPHA+V2Vi
S2l0IGlzIHVzZWQgYnkgPGEgaHJlZj0iaHR0cDovL3d3dy5hcHBsZS5jb20vc2FmYXJpLyI+U2Fm
YXJpPC9hPiwgRGFzaGJvYXJkLCBldGMuLjwvcD4KKzxoMj48L2gyPgorPHAgaWQ9ImlkZW50aXR5
Ij5UaGVyZSBhcmUgbWFueSB3YXlzIHRvIGdldCBpbnZvbHZlZC4gWW91IGNhbjo8L3A+Cis8L2Rp
dj4KKz09PT09PT09PT0+OD09PT09PT09PT0KKworQnJpbmdpbmcgdGhpbmdzIGJhY2sKKworV3Jh
cHBlciBpZGVudGl0eTogaWRlbnRpdHkKK0V2ZW50IE5vZGVJbnNlcnRlZDogCis9PT09PT09PT09
ODw9PT09PT09PT09Cis8ZGl2IGlkPSJjb250YWluZXIiIHN0eWxlPSJkaXNwbGF5Om5vbmUiPgor
PHA+V2ViS2l0IGlzIHVzZWQgYnkgPGEgaHJlZj0iaHR0cDovL3d3dy5hcHBsZS5jb20vc2FmYXJp
LyI+U2FmYXJpPC9hPiwgRGFzaGJvYXJkLCBldGMuLjwvcD4KKzxoMj5HZXR0aW5nIGludm9sdmVk
PC9oMj4KKzxwIGlkPSJpZGVudGl0eSI+VGhlcmUgYXJlIG1hbnkgd2F5cyB0byBnZXQgaW52b2x2
ZWQuIFlvdSBjYW46PC9wPgorPC9kaXY+Cis9PT09PT09PT09Pjg9PT09PT09PT09CisKKworCisK
KworUnVubmluZzogdGVzdFNwbGl0Tm9kZQorUmVwbGFjaW5nICdHZXR0aW5nIGludm9sdmVkJyB3
aXRoICdHZXR0aW5nPC9oMj48aDI+aW52b2x2ZWQnCisKK1dyYXBwZXIgaWRlbnRpdHk6IGlkZW50
aXR5CitFdmVudCBOb2RlSW5zZXJ0ZWQ6IEgyCitFdmVudCBOb2RlSW5zZXJ0ZWQ6IEgyCitFdmVu
dCBOb2RlUmVtb3ZlZDogSDIKKz09PT09PT09PT04PD09PT09PT09PT0KKzxkaXYgaWQ9ImNvbnRh
aW5lciIgc3R5bGU9ImRpc3BsYXk6bm9uZSI+Cis8cD5XZWJLaXQgaXMgdXNlZCBieSA8YSBocmVm
PSJodHRwOi8vd3d3LmFwcGxlLmNvbS9zYWZhcmkvIj5TYWZhcmk8L2E+LCBEYXNoYm9hcmQsIGV0
Yy4uPC9wPgorPGgyPkdldHRpbmc8L2gyPjxoMj5pbnZvbHZlZDwvaDI+Cis8cCBpZD0iaWRlbnRp
dHkiPlRoZXJlIGFyZSBtYW55IHdheXMgdG8gZ2V0IGludm9sdmVkLiBZb3UgY2FuOjwvcD4KKzwv
ZGl2PgorPT09PT09PT09PT44PT09PT09PT09PQorCitCcmluZ2luZyB0aGluZ3MgYmFjaworCitX
cmFwcGVyIGlkZW50aXR5OiBpZGVudGl0eQorRXZlbnQgTm9kZUluc2VydGVkOiBIMgorRXZlbnQg
Tm9kZVJlbW92ZWQ6IEgyCitFdmVudCBOb2RlUmVtb3ZlZDogSDIKKz09PT09PT09PT04PD09PT09
PT09PT0KKzxkaXYgaWQ9ImNvbnRhaW5lciIgc3R5bGU9ImRpc3BsYXk6bm9uZSI+Cis8cD5XZWJL
aXQgaXMgdXNlZCBieSA8YSBocmVmPSJodHRwOi8vd3d3LmFwcGxlLmNvbS9zYWZhcmkvIj5TYWZh
cmk8L2E+LCBEYXNoYm9hcmQsIGV0Yy4uPC9wPgorPGgyPkdldHRpbmcgaW52b2x2ZWQ8L2gyPgor
PHAgaWQ9ImlkZW50aXR5Ij5UaGVyZSBhcmUgbWFueSB3YXlzIHRvIGdldCBpbnZvbHZlZC4gWW91
IGNhbjo8L3A+Cis8L2Rpdj4KKz09PT09PT09PT0+OD09PT09PT09PT0KKworCisKKworCitSdW5u
aW5nOiB0ZXN0Q2hhbmdlTm9kZU5hbWUKK1JlcGxhY2luZyAnPGgyPkdldHRpbmcgaW52b2x2ZWQ8
L2gyPicgd2l0aCAnPGgzPkdldHRpbmcgaW52b2x2ZWQ8L2gzPicKKworV3JhcHBlciBpZGVudGl0
eTogaWRlbnRpdHkKK0V2ZW50IE5vZGVJbnNlcnRlZDogSDMKK0V2ZW50IE5vZGVSZW1vdmVkOiBI
MgorPT09PT09PT09PTg8PT09PT09PT09PQorPGRpdiBpZD0iY29udGFpbmVyIiBzdHlsZT0iZGlz
cGxheTpub25lIj4KKzxwPldlYktpdCBpcyB1c2VkIGJ5IDxhIGhyZWY9Imh0dHA6Ly93d3cuYXBw
bGUuY29tL3NhZmFyaS8iPlNhZmFyaTwvYT4sIERhc2hib2FyZCwgZXRjLi48L3A+Cis8aDM+R2V0
dGluZyBpbnZvbHZlZDwvaDM+Cis8cCBpZD0iaWRlbnRpdHkiPlRoZXJlIGFyZSBtYW55IHdheXMg
dG8gZ2V0IGludm9sdmVkLiBZb3UgY2FuOjwvcD4KKzwvZGl2PgorPT09PT09PT09PT44PT09PT09
PT09PQorCitCcmluZ2luZyB0aGluZ3MgYmFjaworCitXcmFwcGVyIGlkZW50aXR5OiBpZGVudGl0
eQorRXZlbnQgTm9kZUluc2VydGVkOiBIMgorRXZlbnQgTm9kZVJlbW92ZWQ6IEgzCis9PT09PT09
PT09ODw9PT09PT09PT09Cis8ZGl2IGlkPSJjb250YWluZXIiIHN0eWxlPSJkaXNwbGF5Om5vbmUi
PgorPHA+V2ViS2l0IGlzIHVzZWQgYnkgPGEgaHJlZj0iaHR0cDovL3d3dy5hcHBsZS5jb20vc2Fm
YXJpLyI+U2FmYXJpPC9hPiwgRGFzaGJvYXJkLCBldGMuLjwvcD4KKzxoMj5HZXR0aW5nIGludm9s
dmVkPC9oMj4KKzxwIGlkPSJpZGVudGl0eSI+VGhlcmUgYXJlIG1hbnkgd2F5cyB0byBnZXQgaW52
b2x2ZWQuIFlvdSBjYW46PC9wPgorPC9kaXY+Cis9PT09PT09PT09Pjg9PT09PT09PT09CisKKwor
CisKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2VsZW1lbnRzL3VuZG8tc2V0
LW91dGVyLWh0bWwuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9lbGVtZW50cy91bmRvLXNl
dC1vdXRlci1odG1sLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzBhNTJlNGE5M2Y2NTgwZmQ5MjFjY2JkZDcz
OGFmNzBjNzA5ODhkYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9l
bGVtZW50cy91bmRvLXNldC1vdXRlci1odG1sLmh0bWwKQEAgLTAsMCArMSw2NCBAQAorPGh0bWw+
Cis8aGVhZD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luc3Bl
Y3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9odHRwL3Rlc3RzL2lu
c3BlY3Rvci9lbGVtZW50cy10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJzZXQtb3V0
ZXItaHRtbC10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CisKK2Z1bmN0aW9uIG9ubG9hZCgp
Cit7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImlkZW50aXR5Iikud3JhcHBlcklkZW50
aXR5ID0gImlkZW50aXR5IjsKKyAgICBydW5UZXN0KCk7Cit9CisKK2Z1bmN0aW9uIHRlc3QoKQor
eworICAgIEluc3BlY3RvclRlc3QucnVuVGVzdFN1aXRlKFsKKyAgICAgICAgZnVuY3Rpb24gdGVz
dFNldFVwKG5leHQpCisgICAgICAgIHsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3Quc2V0VXBU
ZXN0U3VpdGUobmV4dCk7CisgICAgICAgIH0sCisKKyAgICAgICAgZnVuY3Rpb24gdGVzdENoYW5n
ZUNoYXJhY3RlckRhdGEobmV4dCkKKyAgICAgICAgeworICAgICAgICAgICAgSW5zcGVjdG9yVGVz
dC5wYXRjaE91dGVySFRNTFVzZVVuZG8oIkdldHRpbmcgaW52b2x2ZWQiLCAiR2V0dGluZyBub3Qg
aW52b2x2ZWQiLCBuZXh0KTsKKyAgICAgICAgfSwKKworICAgICAgICBmdW5jdGlvbiB0ZXN0Q2hh
bmdlQXR0cmlidXRlcyhuZXh0KQorICAgICAgICB7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0
LnBhdGNoT3V0ZXJIVE1MVXNlVW5kbygiPGEgaHJlZiIsICI8YSBmb289XCJiYXJcIiBocmVmIiwg
bmV4dCk7CisgICAgICAgIH0sCisKKyAgICAgICAgZnVuY3Rpb24gdGVzdFJlbW92ZUxhc3RDaGls
ZChuZXh0KQorICAgICAgICB7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LnBhdGNoT3V0ZXJI
VE1MVXNlVW5kbygiR2V0dGluZyBpbnZvbHZlZCIsICIiLCBuZXh0KTsKKyAgICAgICAgfSwKKwor
ICAgICAgICBmdW5jdGlvbiB0ZXN0U3BsaXROb2RlKG5leHQpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIEluc3BlY3RvclRlc3QucGF0Y2hPdXRlckhUTUxVc2VVbmRvKCJHZXR0aW5nIGludm9sdmVk
IiwgIkdldHRpbmc8L2gyPjxoMj5pbnZvbHZlZCIsIG5leHQpOworICAgICAgICB9LAorCisgICAg
ICAgIGZ1bmN0aW9uIHRlc3RDaGFuZ2VOb2RlTmFtZShuZXh0KQorICAgICAgICB7CisgICAgICAg
ICAgICBJbnNwZWN0b3JUZXN0LnBhdGNoT3V0ZXJIVE1MVXNlVW5kbygiPGgyPkdldHRpbmcgaW52
b2x2ZWQ8L2gyPiIsICI8aDM+R2V0dGluZyBpbnZvbHZlZDwvaDM+IiwgbmV4dCk7CisgICAgICAg
IH0KKyAgICBdKTsKK30KKzwvc2NyaXB0PgorPC9oZWFkPgorCis8Ym9keSBvbmxvYWQ9Im9ubG9h
ZCgpIj4KKzxwPgorVGVzdHMgdW5kbyBmb3IgdGhlIERPTUFnZW50LnNldE91dGVySFRNTCBwcm90
b2NvbCBtZXRob2QuCis8L3A+CisKKzxkaXYgaWQ9ImNvbnRhaW5lciIgc3R5bGU9ImRpc3BsYXk6
bm9uZSI+Cis8cD5XZWJLaXQgaXMgdXNlZCBieSA8YSBocmVmPSJodHRwOi8vd3d3LmFwcGxlLmNv
bS9zYWZhcmkvIj5TYWZhcmk8L2E+LCBEYXNoYm9hcmQsIGV0Yy48L2E+LjwvcD4KKzxoMj5HZXR0
aW5nIGludm9sdmVkPC9oMj4KKzxwIGlkPSJpZGVudGl0eSI+VGhlcmUgYXJlIG1hbnkgd2F5cyB0
byBnZXQgaW52b2x2ZWQuIFlvdSBjYW46PC9wPgorPC9kaXY+CisKKzwvYm9keT4KKzwvaHRtbD4K
</data>
<flag name="review"
          id="128319"
          type_id="1"
          status="+"
          setter="yurys"
    />
          </attachment>
      

    </bug>

</bugzilla>